diff --git a/.gitignore b/.gitignore index 5a56e0e..7b2aadc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,24 @@ -*.z64 -build/* .*~ -*.rz -.vscode/settings.json .vscode/c_cpp_properties.json -*.tmp .vscode/ipch/* -ge007.u.bin +.vscode/launch.json +.vscode/settings.json +*.rz +*.tmp +*.z64 /.vs -lib/libultra_rom.a -ge007.u.elf -baserom.u.dump -ge007.u.dump -assets/ge007.u.29E560.Globalimagetable_commandblock.bin +021990.bin +0219D0.bin assets/animationtable_data.bin assets/animationtable_entries.bin +assets/font/*.bin +assets/ge007.j.118660.jfont_chardata.bin assets/ge007.u.117880.jfont_dl.bin assets/ge007.u.117940.jfont_chardata.bin -assets/ge007.j.118660.jfont_chardata.bin assets/ge007.u.123040.efont_chardata.bin assets/ge007.u.29D160.Globalimagetable.bin +assets/ge007.u.29E560.Globalimagetable_commandblock.bin assets/ge007.u.2A4D50.usedby7F008DE4.bin -assets/font/*.bin assets/images/split/*.bin assets/music/*.bin assets/music/*.ctl @@ -29,21 +26,24 @@ assets/music/*.tbl assets/obseg/bg/*.bin assets/obseg/chr/*.bin assets/obseg/gun/*.bin +assets/obseg/ob__ob_end.seg assets/obseg/prop/*.bin assets/obseg/setup/*.bin -assets/obseg/setup/u/*.bin +assets/obseg/setup/e/*.bin assets/obseg/setup/j/*.bin +assets/obseg/setup/u/*.bin assets/obseg/stan/*.bin assets/obseg/text/*.bin -assets/obseg/text/u/*.bin +assets/obseg/text/e/*.bin assets/obseg/text/j/*.bin -assets/obseg/ob__ob_end.seg +assets/obseg/text/u/*.bin assets/ramrom/*.bin - +build/* +data_seg +ge007.e.bin +ge007.e.elf ge007.j.bin ge007.j.elf -data_seg -021990.bin -.vscode/launch.json - -0219D0.bin +ge007.u.bin +ge007.u.elf +lib/libultra_rom.a diff --git a/CppProperties.json b/CppProperties.json new file mode 100644 index 0000000..74845cd --- /dev/null +++ b/CppProperties.json @@ -0,0 +1,21 @@ +{ + "configurations": [ + { + "name": "MIPS3-DEBUG", + "configurationType": "Debug", + "generator": "Unix Makefiles", + "includePath": [ + "${env.INCLUDE}", + "${workspaceRoot}\\**", + "" + ], + "wslPath": "${defaultWSLPath}", + "defines": [ + "TRI4_Ext", + "DEBUG" + ] + //"compilerPath": "/usr/", + } + + ] +} diff --git a/Makefile b/Makefile index 254ccb2..077d055 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,7 @@ BUILD_DIR := build/$(COUNTRYCODE) include assets/Makefile.obseg include assets/Makefile.music BUILD_SUB_DIRS := \ - src src/game src/rarezip libultra assets assets/obseg \ + src src/game src/rarezip src/libultra assets assets/obseg \ assets/obseg/brief assets/obseg/chr assets/obseg/gun assets/obseg/prop \ assets/obseg/text assets/obseg/bg assets/obseg/setup assets/obseg/stan \ assets/music assets/ramrom assets/images assets/images/split assets/font @@ -80,8 +80,8 @@ CODEFILES := $(foreach dir,src,$(wildcard $(dir)/*.c)) CODEOBJECTS := $(foreach file,$(CODEFILES),$(BUILD_DIR)/$(file:.c=.o)) LIBULTRA := lib/libultra_rom.a -ULTRAFILES := libultra/libultra.s -ULTRAOBJECTS := $(BUILD_DIR)/libultra/libultra.o +ULTRAFILES := $(foreach dir,src/libultra,$(wildcard $(dir)/*.s)) +ULTRAOBJECTS := $(foreach file,$(ULTRAFILES),$(BUILD_DIR)/$(file:.s=.o)) GAMEFILES := $(foreach dir,src/game,$(wildcard $(dir)/*.c)) GAMEOBJECTS := $(foreach file,$(GAMEFILES),$(BUILD_DIR)/$(file:.c=.o)) @@ -89,6 +89,12 @@ GAMEOBJECTS := $(foreach file,$(GAMEFILES),$(BUILD_DIR)/$(file:.c=.o)) ROMFILES := assets/romfiles.s ROMOBJECTS := $(BUILD_DIR)/assets/romfiles.o +GLOBALIMAGETABLEFILES := assets/GlobalImageTable.c +GLOBALIMAGETABLEOBJECTS := $(BUILD_DIR)/assets/GlobalImageTable.o + +ROMFILES2 := assets/romfiles2.s +ROMOBJECTS2 := $(BUILD_DIR)/assets/romfiles2.o + RAMROM_FILES := assets/ramrom/ramrom.s RAMROM_OBJECTS := $(BUILD_DIR)/assets/ramrom/ramrom.o @@ -152,6 +158,10 @@ $(BUILD_DIR)/%.o: src/%.s $(BUILD_DIR)/src/%.o: src/%.s $(AS) $(ASFLAGS) -o $@ $< +$(BUILD_DIR)/assets/%.o: assets/%.c + $(ASM_PREPROC) $(OPTIMIZATION) $< | $(CC) -c $(CFLAGS) tools/asmpreproc/include-stdin.c -o $@ $(OPTIMIZATION) + $(ASM_PREPROC) $(OPTIMIZATION) $< --post-process $@ --assembler "$(AS) $(ASFLAGS)" --asm-prelude tools/asmpreproc/prelude.s + $(BUILD_DIR)/assets/%.o: assets/%.s $(AS) $(ASFLAGS) -o $@ $< @@ -178,7 +188,7 @@ $(BUILD_DIR)/src/%.o: src/%.c $(BUILD_DIR)/$(OBSEGMENT): $(OBSEG_RZ) $(IMAGE_OBJS) -$(APPELF): $(ULTRAOBJECTS) $(HEADEROBJECTS) $(OBSEG_RZ) $(BUILD_DIR)/$(OBSEGMENT) $(MUSIC_RZ_FILES) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONT_OBJECTS) $(MUSIC_OBJECTS) $(OBSEG_OBJECTS) +$(APPELF): $(ULTRAOBJECTS) $(HEADEROBJECTS) $(OBSEG_RZ) $(BUILD_DIR)/$(OBSEGMENT) $(MUSIC_RZ_FILES) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) $(ROMOBJECTS) $(GLOBALIMAGETABLEOBJECTS) $(ROMOBJECTS2) $(RAMROM_OBJECTS) $(FONT_OBJECTS) $(MUSIC_OBJECTS) $(OBSEG_OBJECTS) $(LD) $(LDFLAGS) -o $@ $(APPBIN): $(APPELF) diff --git a/assets/GlobalImageTable.c b/assets/GlobalImageTable.c new file mode 100644 index 0000000..d24d5d4 --- /dev/null +++ b/assets/GlobalImageTable.c @@ -0,0 +1,693 @@ +#include "ultra64.h" +#include "bondconstants.h" +#include "bondtypes.h" + +struct sGlobalImageTable GlobalImageTable = { + { //globalDL_0x000 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00000000, + 0xB900031D, 0x00504B50, + 0xBA001001, 0x00000000, + 0xFC121824, 0xFF33FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD083A, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x078 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0824, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0825, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x120 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0828, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0829, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x1c8 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0832, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0833, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x270 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0834, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0835, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x318 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0836, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0837, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x3c0 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0838, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0839, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x468 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD083A, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD083B, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x510 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD083C, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD083D, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x5b8 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD083E, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD083F, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x660 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0840, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0841, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x708 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0826, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0827, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x7b0 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD082A, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD082B, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x858 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD082C, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD082D, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x900 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD082E, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD082F, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0x9a8 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00100000, + 0xB900031D, 0x0C184B50, + 0xBA001001, 0x00000000, + 0xFC111404, 0xFF13FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD0830, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x0761F125, + 0xF5680E00, 0x00018060, + 0xF2000000, 0x000DC0DC, + 0xFD100000, 0xABCD0831, + 0xF5100188, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x070DF200, + 0xF5100988, 0x01090A42, + 0xF2000000, 0x010DC0DC, + 0xBA000E02, 0x00000000, + 0xE7000000, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //globalDL_0xa50 + 0xE7000000, 0x00000000, + 0xBA001402, 0x00000000, + 0xB900031D, 0x00552078, + 0xBA001001, 0x00000000, + 0xFC121824, 0xFF33FFFF, + 0xBB000001, 0xFFFFFFFF, + 0xFD700000, 0xABCD03F7, + 0xF5700000, 0x07000000, + 0xE6000000, 0x00000000, + 0xF3000000, 0x071FF200, + 0xE7000000, 0x00000000, + 0xF5680800, 0x00014050, + 0xF2000000, 0x0007C07C, + 0xBA000E02, 0x00000000, + 0xB8000000, 0x00000000 + }, + + { //s_genericimage + {0x858, 0x36, 0x36, 3, F_IA, D_8BIT, MIRROR, MIRROR, 0} + }, + + { //s_impactimages + {0x878, 0x30, 0x30, 6, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x879, 0x40, 0x20, 7, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x87A, 0x40, 0x40, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0xCE, 0x40, 0x20, 7, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x878, 0x30, 0x30, 6, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x878, 0x30, 0x30, 6, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x878, 0x30, 0x30, 6, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x87B, 0x20, 0x20, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x87C, 0x20, 0x20, 0, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x5C3, 0x20, 0x20, 6, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x87D, 0x20, 0x20, 6, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x5C4, 0x20, 0x20, 6, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x87E, 0x20, 0x20, 6, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x87F, 0x20, 0x20, 6, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x5C6, 0x20, 0x20, 6, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x5C7, 0x20, 0x20, 6, F_RGBA, D_16BIT, MIRROR, MIRROR, 0}, + {0x87A, 0x40, 0x40, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x878, 0x30, 0x30, 6, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x878, 0x30, 0x30, 6, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x878, 0x30, 0x30, 6, F_IA, D_8BIT, MIRROR, MIRROR, 0} + }, + + { //s_explosion_smokeimages + {0x880, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x881, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x882, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x883, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x884, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x885, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0} + }, + + { //s_scattered_explosions + {0x886, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x887, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x888, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x889, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x88A, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0} + }, + + { //s_flareimage1 + {0x8B5, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0} + }, + + { //s_flareimage2 + {0x8B6, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0} + }, + + { //s_flareimage3 + {0x850, 0x10, 0x20, 6, F_RGBA, D_32BIT, 0, 0, 0} + }, + + { //s_flareimage4 + {0x857, 0x10, 0x20, 6, F_RGBA, D_32BIT, 0, 0, 0} + }, + + { //s_flareimage5 + {0x856, 0x20, 0x20, 0, F_RGBA, D_32BIT, 0, 0, 0} + }, + + { //s_ammo9mmimage + {0x8B7, 5, 0xC, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_rifleammoimage + {0x8B8, 5, 0x1C, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_shotgunammoimage + {0x877, 6, 0x14, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_knifeammoimage + {0x876, 6, 0x18, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_glammoimage + {0x875, 8, 0x15, 0, F_RGBA, D_32BIT, 0, MIRROR, 0} + }, + + { //s_rocketammoimage + {0x871, 7, 0x16, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_genericmineammoimage + {0x872, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_grenadeammoimage + {0x873, 0xE, 0x12, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_magnumammoimage + {0x874, 5, 0xF, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_goldengunammoimage + {0x8B9, 5, 0xC, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_remotemineammoimage + {0x8BA, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_timedmineammoimage + {0x8BE, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_proxmineammoimage + {0x8BB, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0} + }, + + { //s_tankammoimage + {0x9A0, 7, 0x16, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0} + }, + + { //s_crosshairimage + {0x8BC, 0x20, 0x20, 0, F_RGBA, D_32BIT, 0, 0, 0} + }, + + { //s_betacrosshairimage + {0x8BD, 0x20, 0x20, 0, F_RGBA, D_32BIT, 0, 0, 0} + }, + + { //s_glassoverlayimage + {0x292, 0x20, 1, 6, F_IA, D_8BIT, 0, 0, 0}, + {0x28E, 0x36, 0x36, 3, F_IA, D_8BIT, MIRROR, MIRROR, 0} + }, + + { //s_monitorimages + {0x88B, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x88C, 0x80, 0x10, 0, F_I, D_8BIT, 0, 0, 0}, + {0x88D, 0x80, 0x10, 0, F_I, D_8BIT, 0, 0, 0}, + {0x88E, 0x80, 0x10, 0, F_I, D_8BIT, 0, 0, 0}, + {0x88F, 0x80, 0x10, 0, F_I, D_8BIT, 0, 0, 0}, + {0x890, 0x80, 0x10, 0, F_I, D_8BIT, 0, 0, 0}, + {0x891, 0x80, 0x10, 0, F_I, D_8BIT, 0, 0, 0}, + {0x892, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x893, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x894, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x895, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x4A1, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x896, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x897, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x4A2, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x4A3, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x898, 0x10, 0x10, 5, F_I, D_8BIT, 0, 0, 0}, + {0x246, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x247, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x248, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x899, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x89A, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x89B, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x89C, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x245, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x89D, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x89E, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}, + {0x8B3, 0x40, 0x40, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8AF, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8B0, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8B1, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8B2, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8AB, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8AC, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8AD, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8AE, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8AA, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x89F, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8A0, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8A1, 0x20, 0x20, 0, F_I, D_8BIT, 0, 0, 0}, + {0x8A2, 0x20, 0x20, 6, F_I, D_8BIT, 0, 0, 0}, + {0x8A3, 0x20, 0x20, 6, F_I, D_8BIT, 0, 0, 0}, + {0x8A4, 0x20, 0x20, 6, F_I, D_8BIT, 0, 0, 0}, + {0x8A5, 0x20, 0x20, 6, F_I, D_8BIT, 0, 0, 0}, + {0x8A6, 0x80, 0x30, 0, F_I, D_8BIT, 0, MIRROR, 0}, + {0x8A7, 0x10, 0x10, 5, F_I, D_8BIT, 0, 0, 0}, + {0x8A8, 0x10, 0x10, 5, F_I, D_8BIT, 0, 0, 0}, + {0x8A9, 0x10, 0x10, 5, F_I, D_8BIT, 0, 0, 0}, + {0x8D7, 0x36, 0x36, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0x345, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0} + }, + + { //s_skywaterimages + {0x8B4, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}, + {0x5E4, 0x40, 0x40, 0, F_I, D_8BIT, 0, 0, 0}, + {0x5E5, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0} + }, + + { //s_mainfolderimages + {0, 0x20, 0x1C, 0, F_RGBA, D_32BIT, 0, MIRROR, 0}, + {2, 0x20, 0x1C, 0, F_RGBA, D_32BIT, 0, MIRROR, 0}, + {3, 0x7A, 0x12, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {1, 0xF, 0xF, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {4, 0x14, 0x14, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}, + {0xA47, 0x10, 0x10, 0, F_I, D_8BIT, 0, 0, 0} + }, + + { //s_mpradarimages + {0xC8, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0} + }, + + { //s_mpcharselimages + {0xA2A, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA2B, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA2C, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA2D, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA32, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA33, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA34, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA35, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA36, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA37, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA38, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA39, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA2E, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA2F, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA30, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA31, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA48, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA49, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA4A, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA4B, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA4C, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA4D, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA4E, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA4F, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA50, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA51, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA52, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA53, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA54, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA55, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA56, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA57, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA58, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA59, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA5A, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA5B, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA5C, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA5D, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA5E, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA5F, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA60, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA61, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA62, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA63, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA64, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA65, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA66, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA67, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA68, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA69, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA6A, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA6B, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA6C, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA6D, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA6E, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA6F, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA7A, 0x41, 0x43, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA7B, 0x41, 0x43, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA7C, 0x41, 0x43, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA7D, 0x41, 0x43, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA86, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA85, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA83, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0}, + {0xA84, 0x41, 0x41, 7, F_I, D_4BIT, MIRROR, MIRROR, 0} + }, + + { //s_mpstageselimages + {0xA20, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA16, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA12, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA19, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA14, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA1E, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA1B, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA24, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA17, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA15, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA18, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA1A, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA7E, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA7F, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA80, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA81, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0}, + {0xA87, 0x44, 0x2C, 0, F_I, D_8BIT, MIRROR, MIRROR, 0} + } +}; diff --git a/assets/romfiles.s b/assets/romfiles.s index 961e216..e3ab0f0 100644 --- a/assets/romfiles.s +++ b/assets/romfiles.s @@ -34,253 +34,5 @@ _animation_dataSegmentRomStart: .incbin "assets/animationtable_data.bin" .global _animation_dataSegmentRomEnd _animation_dataSegmentRomEnd: - - # enum image_format, mappedto_2 -.set rgba, 0 -.set yuv, 1 -.set ci, 2 -.set ia, 3 -.set i, 4 - - # --------------------------------------------------------------------------- - - # enum image_bitdepth, mappedto_3 -.set D_4BIT, 0 -.set D_8BIT, 1 -.set D_16BIT, 2 -.set D_32BIT, 3 - - # --------------------------------------------------------------------------- - - # enum cm_flags, mappedto_4 -.set clamp, 1 -.set mirror, 2 - -.macro texture_entry index, width, height, level, format, depth, flagsS, flagsT, pad -.word \index -.byte \width -.byte \height -.byte \level -.byte \format -.byte \depth -.byte \flagsS -.byte \flagsT -.byte \pad -.endm - - .global _GlobalimagetableSegmentRomStart _GlobalimagetableSegmentRomStart: -.incbin "assets/ge007.u.29D160.Globalimagetable.bin" -texture_entry 0x858, 0x36, 0x36, 3, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x878, 0x30, 0x30, 6, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x879, 0x40, 0x20, 7, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x87A, 0x40, 0x40, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0xCE, 0x40, 0x20, 7, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x878, 0x30, 0x30, 6, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x878, 0x30, 0x30, 6, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x878, 0x30, 0x30, 6, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x87B, 0x20, 0x20, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x87C, 0x20, 0x20, 0, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x5C3, 0x20, 0x20, 6, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x87D, 0x20, 0x20, 6, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x5C4, 0x20, 0x20, 6, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x87E, 0x20, 0x20, 6, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x87F, 0x20, 0x20, 6, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x5C6, 0x20, 0x20, 6, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x5C7, 0x20, 0x20, 6, rgba, D_16BIT, mirror, mirror, 0 -texture_entry 0x87A, 0x40, 0x40, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x878, 0x30, 0x30, 6, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x878, 0x30, 0x30, 6, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x878, 0x30, 0x30, 6, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x880, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x881, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x882, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x883, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x884, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x885, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x886, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x887, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x888, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x889, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x88A, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x8B5, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x8B6, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x850, 0x10, 0x20, 6, rgba, D_32BIT, 0, 0, 0 -texture_entry 0x857, 0x10, 0x20, 6, rgba, D_32BIT, 0, 0, 0 -texture_entry 0x856, 0x20, 0x20, 0, rgba, D_32BIT, 0, 0, 0 -texture_entry 0x8B7, 5, 0xC, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x8B8, 5, 0x1C, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x877, 6, 0x14, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x876, 6, 0x18, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x875, 8, 0x15, 0, rgba, D_32BIT, 0, mirror, 0 -texture_entry 0x871, 7, 0x16, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x872, 0xE, 0xE, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x873, 0xE, 0x12, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x874, 5, 0xF, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x8B9, 5, 0xC, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x8BA, 0xE, 0xE, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x8BE, 0xE, 0xE, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x8BB, 0xE, 0xE, 0, rgba, D_32BIT, mirror, mirror, 0 -texture_entry 0x9A0, 7, 0x16, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x8BC, 0x20, 0x20, 0, rgba, D_32BIT, 0, 0, 0 -texture_entry 0x8BD, 0x20, 0x20, 0, rgba, D_32BIT, 0, 0, 0 -texture_entry 0x292, 0x20, 1, 6, ia, D_8BIT, 0, 0, 0 -texture_entry 0x28E, 0x36, 0x36, 3, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x88B, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x88C, 0x80, 0x10, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x88D, 0x80, 0x10, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x88E, 0x80, 0x10, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x88F, 0x80, 0x10, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x890, 0x80, 0x10, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x891, 0x80, 0x10, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x892, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x893, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x894, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x895, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x4A1, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x896, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x897, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x4A2, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x4A3, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x898, 0x10, 0x10, 5, i, D_8BIT, 0, 0, 0 -texture_entry 0x246, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x247, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x248, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x899, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x89A, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x89B, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x89C, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x245, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x89D, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x89E, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x8B3, 0x40, 0x40, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8AF, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8B0, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8B1, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8B2, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8AB, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8AC, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8AD, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8AE, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8AA, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x89F, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A0, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A1, 0x20, 0x20, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A2, 0x20, 0x20, 6, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A3, 0x20, 0x20, 6, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A4, 0x20, 0x20, 6, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A5, 0x20, 0x20, 6, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A6, 0x80, 0x30, 0, i, D_8BIT, 0, mirror, 0 -texture_entry 0x8A7, 0x10, 0x10, 5, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A8, 0x10, 0x10, 5, i, D_8BIT, 0, 0, 0 -texture_entry 0x8A9, 0x10, 0x10, 5, i, D_8BIT, 0, 0, 0 -texture_entry 0x8D7, 0x36, 0x36, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0x345, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0x8B4, 0x40, 0x40, 0, ia, D_8BIT, 0, 0, 0 -texture_entry 0x5E4, 0x40, 0x40, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0x5E5, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0, 0x20, 0x1C, 0, rgba, D_32BIT, 0, mirror, 0 -texture_entry 2, 0x20, 0x1C, 0, rgba, D_32BIT, 0, mirror, 0 -texture_entry 3, 0x7A, 0x12, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 1, 0xF, 0xF, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 4, 0x14, 0x14, 0, ia, D_8BIT, mirror, mirror, 0 -texture_entry 0xA47, 0x10, 0x10, 0, i, D_8BIT, 0, 0, 0 -texture_entry 0xC8, 0x20, 0x20, 6, rgba, D_16BIT, 0, 0, 0 -texture_entry 0xA2A, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA2B, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA2C, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA2D, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA32, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA33, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA34, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA35, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA36, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA37, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA38, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA39, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA2E, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA2F, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA30, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA31, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA48, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA49, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA4A, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA4B, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA4C, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA4D, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA4E, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA4F, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA50, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA51, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA52, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA53, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA54, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA55, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA56, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA57, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA58, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA59, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA5A, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA5B, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA5C, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA5D, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA5E, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA5F, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA60, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA61, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA62, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA63, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA64, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA65, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA66, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA67, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA68, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA69, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA6A, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA6B, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA6C, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA6D, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA6E, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA6F, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA7A, 0x41, 0x43, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA7B, 0x41, 0x43, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA7C, 0x41, 0x43, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA7D, 0x41, 0x43, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA86, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA85, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA83, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA84, 0x41, 0x41, 7, i, D_4BIT, mirror, mirror, 0 -texture_entry 0xA20, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA16, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA12, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA19, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA14, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA1E, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA1B, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA24, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA17, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA15, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA18, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA1A, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA7E, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA7F, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA80, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA81, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -texture_entry 0xA87, 0x44, 0x2C, 0, i, D_8BIT, mirror, mirror, 0 -.word 0 -.word 0 -.global _GlobalimagetableSegmentRomEnd -_GlobalimagetableSegmentRomEnd: - -.global _GlobalimagetablecmdblkSegmentRomStart -_GlobalimagetablecmdblkSegmentRomStart: -.incbin "assets/ge007.u.29E560.Globalimagetable_commandblock.bin" -.global _GlobalimagetablecmdblkSegmentRomEnd -_GlobalimagetablecmdblkSegmentRomEnd: - -.global unknown2 -unknown2: -.incbin "assets/ge007.u.2A4D50.usedby7F008DE4.bin" -.global unknown2_end -unknown2_end: diff --git a/assets/romfiles2.s b/assets/romfiles2.s new file mode 100644 index 0000000..b9fb4ff --- /dev/null +++ b/assets/romfiles2.s @@ -0,0 +1,15 @@ +.section .romfiles, "a" +.global _GlobalimagetableSegmentRomEnd +_GlobalimagetableSegmentRomEnd: + +.global _GlobalimagetablecmdblkSegmentRomStart +_GlobalimagetablecmdblkSegmentRomStart: +.incbin "assets/ge007.u.29E560.Globalimagetable_commandblock.bin" +.global _GlobalimagetablecmdblkSegmentRomEnd +_GlobalimagetablecmdblkSegmentRomEnd: + +.global unknown2 +unknown2: +.incbin "assets/ge007.u.2A4D50.usedby7F008DE4.bin" +.global unknown2_end +unknown2_end: diff --git a/filelist.j.csv b/filelist.j.csv index a8c21de..b02edda 100644 --- a/filelist.j.csv +++ b/filelist.j.csv @@ -3,7 +3,7 @@ 1195360,6784,assets/ge007.u.123040.efont_chardata.bin,0,1 1202144,1482432,assets/animationtable_entries.bin,0,1 2684576,59360,assets/animationtable_data.bin,0,1 -2743936,5120,assets/ge007.u.29D160.Globalimagetable.bin,0,1 +2743936,5120,assets/ge007.u.29D160.Globalimagetable.bin,0,0 2749056,26608,assets/ge007.u.29E560.Globalimagetable_commandblock.bin,0,1 2775664,107904,assets/ge007.u.2A4D50.usedby7F008DE4.bin,0,1 2883568,20992,assets/ramrom/ramrom_Dam_1.bin,0,1 diff --git a/filelist.u.csv b/filelist.u.csv index a14f6ea..c50219e 100644 --- a/filelist.u.csv +++ b/filelist.u.csv @@ -3,7 +3,7 @@ 1192000,6784,assets/ge007.u.123040.efont_chardata.bin,0,1 1198784,1482432,assets/animationtable_entries.bin,0,1 2681216,59360,assets/animationtable_data.bin,0,1 -2740576,2760,assets/ge007.u.29D160.Globalimagetable.bin,0,1 +2740576,2760,assets/ge007.u.29D160.Globalimagetable.bin,0,0 2745696,26608,assets/ge007.u.29E560.Globalimagetable_commandblock.bin,0,1 2772304,107904,assets/ge007.u.2A4D50.usedby7F008DE4.bin,0,1 2880208,20992,assets/ramrom/ramrom_Dam_1.bin,0,1 diff --git a/ge007.e.ld b/ge007.e.ld index 635d202..a95a427 100644 --- a/ge007.e.ld +++ b/ge007.e.ld @@ -8,7 +8,7 @@ SECTIONS _headerSegmentStart = ADDR(.header); _headerSegmentRomStart = _romSegmentStart; .header 0x04000000 : AT(_romSegmentStart) { - build/src/rom_header.o(.data); + build/e/src/rom_header.o(.data); } _headerSegmentEnd = ADDR(.header) + SIZEOF(.header); _headerSegmentRomEnd = _headerSegmentRomStart + SIZEOF(.header); @@ -19,7 +19,7 @@ SECTIONS _bootSegmentStart = ADDR(.boot); _bootSegmentRomStart = _headerSegmentRomEnd; .boot 0x04000040 : AT(_bootSegmentRomStart) { - build/src/bootcode.o(.text); + build/e/src/bootcode.o(.text); } _bootSegmentEnd = ADDR(.boot) + SIZEOF(.boot); _bootSegmentRomEnd = _bootSegmentRomStart + SIZEOF(.boot); @@ -31,7 +31,7 @@ SECTIONS _startSegmentStart = ADDR(.start); _startSegmentRomStart = _bootSegmentRomEnd; .start 0x80000400 : AT(_startSegmentRomStart) { - build/src/_start.o (.text); + build/e/src/_start.o (.text); } _startSegmentEnd = ADDR(.start) + SIZEOF(.start); _startSegmentRomEnd = _startSegmentRomStart + SIZEOF(.start); @@ -42,44 +42,126 @@ SECTIONS _codeSegmentStart = ADDR(.code); _codeSegmentRomStart = _startSegmentRomEnd; .code 0x70000450 : AT(_codeSegmentRomStart) SUBALIGN(16) { - build/src/boot.o (.text); - build/src/init.o (.text); - build/src/sched.o (.text); - build/src/osMapTLB.o (.text); - - + build/e/src/boot.o (.text); + build/e/src/init.o (.text); + build/e/src/sched.o (.text); + build/e/src/osMapTLB.o (.text); + build/e/src/libultra/osCreateViManager.o (.text); + build/e/src/libultra/osCreatePiManager.o (.text); - build/src/tlb_manage.o (.text); - build/src/tlb_random.o (.text); - build/src/tlb_resolve.o (.text); - build/src/tlb_hardwire.o (.text); - build/src/audi.o (.text); - build/src/speed_graph.o (.text); - build/src/video.o (.text); - build/src/deb.o (.text); - build/src/deb_video.o (.text); - build/src/deb_print.o (.text); - build/src/debug_getlastRA.o (.text); - build/src/ramrom.o (.text); - build/src/boss.o (.text); - build/src/music.o (.text); - build/src/snd.o (.text); - build/src/memp.o (.text); - build/src/mema.o (.text); - build/src/random.o (.text); - build/src/token.o (.text); - build/src/str.o (.text); - build/src/sprintf.o (.text); - build/src/pi.o (.text); - build/src/vi.o (.text); - build/src/debugmenu.o (.text); - build/src/joy.o (.text); - build/src/joy_rumble.o (.text); - build/src/rmon.o (.text); - build/libultra/libultra.o (.text); + build/e/src/tlb_manage.o (.text); + build/e/src/tlb_random.o (.text); + build/e/src/tlb_resolve.o (.text); + build/e/src/tlb_hardwire.o (.text); + build/e/src/audi.o (.text); + build/e/src/speed_graph.o (.text); + build/e/src/video.o (.text); + build/e/src/deb.o (.text); + build/e/src/deb_video.o (.text); + build/e/src/deb_print.o (.text); + build/e/src/debug_getlastRA.o (.text); + build/e/src/ramrom.o (.text); + build/e/src/boss.o (.text); + build/e/src/music.o (.text); + build/e/src/snd.o (.text); + build/e/src/memp.o (.text); + build/e/src/mema.o (.text); + build/e/src/random.o (.text); + build/e/src/token.o (.text); + build/e/src/str.o (.text); + build/e/src/sprintf.o (.text); + build/e/src/pi.o (.text); + build/e/src/vi.o (.text); + build/e/src/debugmenu.o (.text); + build/e/src/joy.o (.text); + build/e/src/joy_rumble.o (.text); + build/e/src/rmon.o (.text); + + build/e/src/libultra/osPiRawStartDma.o (.text); + build/e/src/libultra/osPiGetStatus.o (.text); + build/e/src/libultra/osInitialize.o (.text); + build/e/src/libultra/osWritebackDCacheAll.o (.text); + build/e/src/libultra/osInvalICache.o (.text); + build/e/src/libultra/osUnmapTLB.o (.text); + build/e/src/libultra/__osGetFpcCsr.o (.text); + build/e/src/libultra/__osSetFpcCsr.o (.text); + build/e/src/libultra/osCreateThread.o (.text); + build/e/src/libultra/osStartThread.o (.text); + build/e/src/libultra/osCreateMesgQueue.o (.text); + build/e/src/libultra/osStopThread.o (.text); + build/e/src/libultra/osSetThreadPri.o (.text); + build/e/src/libultra/osGetCount.o (.text); + + build/e/src/libultra/osViModeTable.o (.text); + build/e/src/libultra/osSetEventMesg.o (.text); + build/e/src/libultra/osViSetEvent.o (.text); + build/e/src/libultra/osSetIntMask.o (.text); + build/e/src/libultra/osRecvMesg.o (.text); + build/e/src/libultra/osSendMesg.o (.text); + build/e/src/libultra/osViSetMode.o (.text); + build/e/src/libultra/osViSetXScale.o (.text); + build/e/src/libultra/osViSetYScale.o (.text); + build/e/src/libultra/osViRepeatLine.o (.text); + build/e/src/libultra/osViBlack.o (.text); + build/e/src/libultra/osSpTaskYielded.o (.text); + build/e/src/libultra/osDpGetCounters.o (.text); + build/e/src/libultra/osViGetCurrentFramebuffer.o (.text); + build/e/src/libultra/osViGetNextFramebuffer.o (.text); + build/e/src/libultra/osViSwapBuffer.o (.text); + build/e/src/libultra/osDpSetStatus.o (.text); + build/e/src/libultra/osSpTaskLoad.o (.text); + build/e/src/libultra/osDpSetNextBuffer.o (.text); + build/e/src/libultra/osSpTaskYield.o (.text); + build/e/src/libultra/__osGetTLBHi.o (.text); + build/e/src/libultra/osVirtualToPhysical.o (.text); + build/e/src/libultra/osAiSetFrequency.o (.text); + build/e/src/libultra/alInit.o (.text); + build/e/src/libultra/osGetTime.o (.text); + build/e/src/libultra/ll.o (.text); + build/e/src/libultra/osAiGetLength.o (.text); + build/e/src/libultra/syn.o (.text); + build/e/src/libultra/osPiStartDma.o (.text); + build/e/src/libultra/osViSetSpecialFeatures.o (.text); + build/e/src/libultra/_bcopy.o (.text); + build/e/src/libultra/guPerspective.o (.text); + build/e/src/libultra/Mtx.o (.text); + build/e/src/libultra/__osGetCurrFaultedThread.o (.text); + build/e/src/libultra/exception.o (.text); + build/e/src/libultra/__osDequeueThread.o (.text); + build/e/src/libultra/osYieldThread.o (.text); + build/e/src/libultra/osInvalDCache.o (.text); + build/e/src/libultra/osWritebackDCache.o (.text); + build/e/src/libultra/osSetTimer.o (.text); + build/e/src/libultra/alHeapInit.o (.text); + build/e/src/libultra/alBnkfNew.o (.text); + build/e/src/libultra/__CSP.o (.text); + build/e/src/libultra/alSeqpSetBank.o (.text); + build/e/src/libultra/alCSPGetState.o (.text); + build/e/src/libultra/csequencer.o (.text); + build/e/src/libultra/alCSPSetSeq.o (.text); + build/e/src/libultra/alCSPPlay.o (.text); + build/e/src/libultra/alCSPStop.o (.text); + build/e/src/libultra/alCSPSetVol.o (.text); + build/e/src/libultra/alEvtq.o (.text); + build/e/src/libultra/alSynAddPlayer.o (.text); + build/e/src/libultra/alSynAllocVoice.o (.text); + build/e/src/libultra/alSynSetVol.o (.text); + build/e/src/libultra/alSynStartVoice.o (.text); + build/e/src/libultra/alSynSetPan.o (.text); + build/e/src/libultra/alSynSetPitch.o (.text); + build/e/src/libultra/alSynSetFXMix.o (.text); + build/e/src/libultra/alSynStopVoice.o (.text); + build/e/src/libultra/alSynFreeVoice.o (.text); + build/e/src/libultra/alCents2Ratio.o (.text); + build/e/src/libultra/osPiReadIo.o (.text); + build/e/src/libultra/string.o (.text); + build/e/src/libultra/_Printf.o (.text); + + build/e/src/libultra/libultra.o (.text); + /*build/e/src/libultra/libultra.a:libultra.o (.text);*/ } _codeSegmentEnd = ADDR(.code) + SIZEOF(.code); _codeSegmentRomEnd = _codeSegmentRomStart + SIZEOF(.code); @@ -89,7 +171,7 @@ SECTIONS _cdataSegmentStart = ADDR(.cdata); _cdataSegmentRomStart = _codeSegmentRomEnd; .cdata _cdataSegmentRomStart : AT(_cdataSegmentRomStart) { - build/src/c_data_filler.o (.data); + build/e/src/c_data_filler.o (.data); } _cdataSegmentEnd = ADDR(.cdata) + SIZEOF(.cdata); _cdataSegmentRomEnd = _cdataSegmentRomStart + SIZEOF(.cdata); @@ -100,8 +182,8 @@ SECTIONS _rarezipSegmentStart = ADDR(.rarezip); _rarezipSegmentRomStart = _cdataSegmentRomEnd; .rarezip 0x70200000 : AT(_rarezipSegmentRomStart) { - build/src/rarezip/rarezip.o (.text); - build/src/rarezip/rarezip.o (.data); + build/e/src/rarezip/rarezip.o (.text); + build/e/src/rarezip/rarezip.o (.data); } _rarezipSegmentEnd = ADDR(.rarezip) + SIZEOF(.rarezip); _rarezipSegmentRomEnd = _rarezipSegmentRomStart + SIZEOF(.rarezip); @@ -113,120 +195,127 @@ SECTIONS _gameSegmentStart = ADDR(.game); _gameSegmentRomStart = _rarezipSegmentRomEnd; .game 0x7F000000 : AT(_gameSegmentRomStart) { - build/src/game/initgamedata.o (.text); - build/src/game/initweaponanigroups.o (.text); - build/src/game/initactorpropstuff.o (.text); - build/src/game/initnull_0009D0.o (.text); - build/src/game/initunk_0009E0.o (.text); - build/src/game/initanitable.o (.text); - build/src/game/initunk_000B60.o (.text); - build/src/game/setguscale.o (.text); - build/src/game/initnull_000BC0.o (.text); - build/src/game/initimages.o (.text); - build/src/game/initintromatrices.o (.text); - build/src/game/initmenus.o (.text); - build/src/game/initguards.o (.text); - build/src/game/deb_loadallmodels.o (.text); - build/src/game/initobjects.o (.text); - build/src/game/prop.o (.text); - build/src/game/objective.o (.text); - build/src/game/ejectedcartridges.o (.text); - build/src/game/initBondDATA.o (.text); - build/src/game/initunk_005450.o (.text); - build/src/game/initunk_005520.o (.text); - build/src/game/initcameraandthrown.o (.text); - build/src/game/inititemslots.o (.text); - build/src/game/initBondDATAdefaults.o (.text); - build/src/game/initpathtablesomething.o (.text); - build/src/game/initpathtablelinks.o (.text); - build/src/game/initexplosioncasing.o (.text); - build/src/game/initunk_007180.o (.text); - build/src/game/initunk_007290.o (.text); - build/src/game/initunk_0072B0.o (.text); - build/src/game/initmttex.o (.text); - build/src/game/initunk_0073B0.o (.text); - build/src/game/initunk_007460.o (.text); - build/src/game/cleanup_alarms.o (.text); - build/src/game/cleanup_objects.o (.text); - build/src/game/cleanup_objectives.o (.text); - build/src/game/cleanupSFXRelated.o (.text); - build/src/game/playerstats_007770.o (.text); - build/src/game/unk_007800.o (.text); - build/src/game/unk_007920.o (.text); - build/src/game/null_007970.o (.text); - build/src/game/unk_007980.o (.text); - build/src/game/intro_logos.o (.text); - build/src/game/mainmenu.o (.text); - build/src/game/unk_01B0E0.o (.text); - build/src/game/unk_01B240.o (.text); - build/src/game/unk_01BAE0.o (.text); - build/src/game/blood_animation.o (.text); - build/src/game/blood_decrypt.o (.text); - build/src/game/gamefile.o (.text); - build/src/game/chr.o (.text); - build/src/game/chrai.o (.text); - build/src/game/loadobjectmodel.o (.text); - build/src/game/objective_status.o (.text); - build/src/game/sin.o (.text); - build/src/game/unk_057FD0.o (.text); - build/src/game/unk_05A9E0.o (.text); - build/src/game/convertangleusinginverse.o (.text); - build/src/game/unk_05AB70.o (.text); - build/src/game/unk_05ACB0.o (.text); - build/src/game/unk_05AE00.o (.text); - build/src/game/unk_05B1E0.o (.text); - build/src/game/truncf.o (.text); - build/src/game/unk_05C440.o (.text); - build/src/game/bondwalk.o (.text); - build/src/game/objecthandler.o (.text); - build/src/game/objecthandler_2.o (.text); - build/src/game/othermodemicrocode.o (.text); - build/src/game/bond.o (.text); - build/src/game/unk_08DBB0.o (.text); - build/src/game/debugmenu_08FE00.o (.text); - build/src/game/debugmenu_090490.o (.text); - build/src/game/unk_091080.o (.text); - build/src/game/cheat_buttons.o (.text); - build/src/game/unk_092890.o (.text); - build/src/game/unk_092E50.o (.text); - build/src/game/unk_093880.o (.text); - build/src/game/unk_09B600.o (.text); - build/src/game/unk_09B740.o (.text); - build/src/game/unk_09B7A0.o (.text); - build/src/game/unk_09C250.o (.text); - build/src/game/unk_0A1DA0.o (.text); - build/src/game/watch.o (.text); - build/src/game/textrelated.o (.text); - build/src/game/stan.o (.text); - build/src/game/unk_0B3200.o (.text); - build/src/game/bg.o (.text); - build/src/game/fog.o (.text); - build/src/game/lightfixture.o (.text); - build/src/game/unk_0BC530.o (.text); - build/src/game/ob.o (.text); - build/src/game/dyn.o (.text); - build/src/game/lvl.o (.text); - build/src/game/lvl_2.o (.text); - build/src/game/unk_0C0A70.o (.text); - build/src/game/mp_music.o (.text); - build/src/game/lvl_text.o (.text); - build/src/game/mp_watch.o (.text); - build/src/game/radar.o (.text); - build/src/game/mp_weapon.o (.text); - build/src/game/image.o (.text); - build/src/game/image_bank.o (.text); - build/src/game/unk_0CC4C0.o (.text); - build/src/game/decompress.o (.text); - build/src/game/zlib.o (.text); - build/src/game/rsp.o (.text); - build/src/game/indy_comms.o (.text); - build/src/game/indy_commands.o (.text); - build/src/game/game_debug.o (.text); - build/src/game/compiletime.o (.text); - build/src/game/unk_0D1AC0.o (.text); - build/src/game/viewport.o (.text); - build/src/game/music_0D2720.o (.text); - build/src/game/spectrum.o (.text); + build/e/src/game/initgamedata.o (.text); + build/e/src/game/initweaponanigroups.o (.text); + build/e/src/game/initactorpropstuff.o (.text); + build/e/src/game/initnull_0009D0.o (.text); + build/e/src/game/initunk_0009E0.o (.text); + build/e/src/game/initanitable.o (.text); + build/e/src/game/initunk_000B60.o (.text); + build/e/src/game/setguscale.o (.text); + build/e/src/game/initnull_000BC0.o (.text); + build/e/src/game/initimages.o (.text); + build/e/src/game/initintromatrices.o (.text); + build/e/src/game/initmenus.o (.text); + build/e/src/game/initguards.o (.text); + build/e/src/game/deb_loadallmodels.o (.text); + build/e/src/game/initobjects.o (.text); + build/e/src/game/prop.o (.text); + build/e/src/game/objective.o (.text); + build/e/src/game/ejectedcartridges.o (.text); + build/e/src/game/initBondDATA.o (.text); + build/e/src/game/initunk_005450.o (.text); + build/e/src/game/initunk_005520.o (.text); + build/e/src/game/initcameraandthrown.o (.text); + build/e/src/game/inititemslots.o (.text); + build/e/src/game/initBondDATAdefaults.o (.text); + build/e/src/game/initpathtablesomething.o (.text); + build/e/src/game/initpathtablelinks.o (.text); + build/e/src/game/initexplosioncasing.o (.text); + build/e/src/game/initunk_007180.o (.text); + build/e/src/game/initunk_007290.o (.text); + build/e/src/game/initunk_0072B0.o (.text); + build/e/src/game/initmttex.o (.text); + build/e/src/game/initunk_0073B0.o (.text); + build/e/src/game/initunk_007460.o (.text); + build/e/src/game/cleanup_alarms.o (.text); + build/e/src/game/cleanup_objects.o (.text); + build/e/src/game/cleanup_objectives.o (.text); + build/e/src/game/cleanupSFXRelated.o (.text); + build/e/src/game/playerstats_007770.o (.text); + build/e/src/game/unk_007800.o (.text); + build/e/src/game/unk_007920.o (.text); + build/e/src/game/null_007970.o (.text); + build/e/src/game/unk_007980.o (.text); + build/e/src/game/intro_logos.o (.text); + build/e/src/game/mainmenu.o (.text); + build/e/src/game/unk_01B0E0.o (.text); + build/e/src/game/unk_01B240.o (.text); + build/e/src/game/unk_01BAE0.o (.text); + build/e/src/game/blood_animation.o (.text); + build/e/src/game/blood_decrypt.o (.text); + build/e/src/game/gamefile.o (.text); + build/e/src/game/gamefile2.o (.text); + build/e/src/game/chr.o (.text); + build/e/src/game/chr2.o (.text); + build/e/src/game/chrai.o (.text); + build/e/src/game/chrobjhandler.o (.text); + build/e/src/game/loadobjectmodel.o (.text); + build/e/src/game/objective_status.o (.text); + build/e/src/game/objective_status2.o (.text); + build/e/src/game/sin.o (.text); + build/e/src/game/unk_057FD0.o (.text); + build/e/src/game/unk_05A9E0.o (.text); + build/e/src/game/convertangleusinginverse.o (.text); + build/e/src/game/unk_05AB70.o (.text); + build/e/src/game/unk_05ACB0.o (.text); + build/e/src/game/unk_05AE00.o (.text); + build/e/src/game/unk_05B1E0.o (.text); + build/e/src/game/truncf.o (.text); + build/e/src/game/unk_05C440.o (.text); + build/e/src/game/bondwalk.o (.text); + build/e/src/game/bondwalk2.o (.text); + build/e/src/game/objecthandler.o (.text); + build/e/src/game/objecthandler_2.o (.text); + build/e/src/game/othermodemicrocode.o (.text); + build/e/src/game/bond.o (.text); + build/e/src/game/bond2.o (.text); + build/e/src/game/unk_08DBB0.o (.text); + build/e/src/game/debugmenu_08FE00.o (.text); + build/e/src/game/debugmenu_090490.o (.text); + build/e/src/game/unk_091080.o (.text); + build/e/src/game/chrobjdata.o (.text); + build/e/src/game/cheat_buttons.o (.text); + build/e/src/game/unk_092890.o (.text); + build/e/src/game/unk_092E50.o (.text); + build/e/src/game/unk_093880.o (.text); + build/e/src/game/unk_09B600.o (.text); + build/e/src/game/unk_09B740.o (.text); + build/e/src/game/unk_09B7A0.o (.text); + build/e/src/game/unk_09C250.o (.text); + build/e/src/game/unk_0A1DA0.o (.text); + build/e/src/game/watch.o (.text); + build/e/src/game/textrelated.o (.text); + build/e/src/game/stan.o (.text); + build/e/src/game/unk_0B3200.o (.text); + build/e/src/game/bg.o (.text); + build/e/src/game/fog.o (.text); + build/e/src/game/lightfixture.o (.text); + build/e/src/game/unk_0BC530.o (.text); + build/e/src/game/ob.o (.text); + build/e/src/game/dyn.o (.text); + build/e/src/game/lvl.o (.text); + build/e/src/game/lvl_2.o (.text); + build/e/src/game/unk_0C0A70.o (.text); + build/e/src/game/mp_music.o (.text); + build/e/src/game/lvl_text.o (.text); + build/e/src/game/mp_watch.o (.text); + build/e/src/game/radar.o (.text); + build/e/src/game/mp_weapon.o (.text); + build/e/src/game/image.o (.text); + build/e/src/game/image_bank.o (.text); + build/e/src/game/unk_0CC4C0.o (.text); + build/e/src/game/decompress.o (.text); + build/e/src/game/zlib.o (.text); + build/e/src/game/rsp.o (.text); + build/e/src/game/indy_comms.o (.text); + build/e/src/game/indy_commands.o (.text); + build/e/src/game/game_debug.o (.text); + build/e/src/game/compiletime.o (.text); + build/e/src/game/unk_0D1AC0.o (.text); + build/e/src/game/viewport.o (.text); + build/e/src/game/music_0D2720.o (.text); + build/e/src/game/spectrum.o (.text); } _gameSegmentEnd = ADDR(.game) + SIZEOF(.game); _gameSegmentRomEnd = _gameSegmentRomStart + SIZEOF(.game); @@ -237,11 +326,13 @@ SECTIONS _romfiles_117880SegmentStart = ADDR(.romfiles_117880); _romfiles_117880SegmentRomStart = _gameSegmentRomEnd; .romfiles_117880 _romfiles_117880SegmentRomStart : AT(_romfiles_117880SegmentRomStart) { - build/assets/romfiles.o (.romfiles); - build/assets/ramrom/ramrom.o (.ramrom); - build/assets/font/font.o (.font); - build/assets/music/music.o (.music); - build/assets/music/music.o (.musiccompressed); + build/e/assets/romfiles.o (.romfiles); + build/e/assets/GlobalImageTable.o (.data); + build/e/assets/romfiles2.o (.romfiles); + build/e/assets/ramrom/ramrom.o (.ramrom); + build/e/assets/font/font.o (.font); + build/e/assets/music/music.o (.music); + build/e/assets/music/music.o (.musiccompressed); } _romfiles_117880SegmentEnd = ADDR(.romfiles_117880) + SIZEOF(.romfiles_117880); _romfiles_117880SegmentRomEnd = _romfiles_117880SegmentRomStart + SIZEOF(.romfiles_117880); @@ -252,7 +343,7 @@ SECTIONS _obsegSegmentStart = ADDR(.obseg); _obsegSegmentRomStart = _romfiles_117880SegmentRomEnd; .obseg _obsegSegmentRomStart : AT(_obsegSegmentRomStart) { - build/assets/obseg/ob_seg.o (.ob_seg); + build/e/assets/obseg/ob_seg.o (.ob_seg); } _obsegSegmentEnd = ADDR(.obseg) + SIZEOF(.obseg); _obsegSegmentRomEnd = _obsegSegmentRomStart + SIZEOF(.obseg); @@ -263,2708 +354,2705 @@ SECTIONS _imagesSegmentStart = ADDR(.images); _imagesSegmentRomStart = _obsegSegmentRomEnd; .images _imagesSegmentRomStart : AT(_imagesSegmentRomStart) { - _image1_start = .; - build/assets/images/split/image1.o (.data); - _image1_end = .; - _image1_size = (_image1_end - _image1_start); - build/assets/images/split/image2.o (.data); - build/assets/images/split/image3.o (.data); - build/assets/images/split/image4.o (.data); - build/assets/images/split/image5.o (.data); - build/assets/images/split/image6.o (.data); - build/assets/images/split/image7.o (.data); - build/assets/images/split/image8.o (.data); - build/assets/images/split/image9.o (.data); - build/assets/images/split/image10.o (.data); - build/assets/images/split/image11.o (.data); - build/assets/images/split/image12.o (.data); - build/assets/images/split/image13.o (.data); - build/assets/images/split/image14.o (.data); - build/assets/images/split/image15.o (.data); - build/assets/images/split/image16.o (.data); - build/assets/images/split/image17.o (.data); - build/assets/images/split/image18.o (.data); - build/assets/images/split/image19.o (.data); - build/assets/images/split/image20.o (.data); - build/assets/images/split/image21.o (.data); - build/assets/images/split/image22.o (.data); - build/assets/images/split/image23.o (.data); - build/assets/images/split/image24.o (.data); - build/assets/images/split/image25.o (.data); - build/assets/images/split/image26.o (.data); - build/assets/images/split/image27.o (.data); - build/assets/images/split/image28.o (.data); - build/assets/images/split/image29.o (.data); - build/assets/images/split/image30.o (.data); - build/assets/images/split/image31.o (.data); - build/assets/images/split/image32.o (.data); - build/assets/images/split/image33.o (.data); - build/assets/images/split/image34.o (.data); - build/assets/images/split/image35.o (.data); - build/assets/images/split/image36.o (.data); - build/assets/images/split/image37.o (.data); - build/assets/images/split/image38.o (.data); - build/assets/images/split/image39.o (.data); - build/assets/images/split/image40.o (.data); - build/assets/images/split/image41.o (.data); - build/assets/images/split/image42.o (.data); - build/assets/images/split/image43.o (.data); - build/assets/images/split/image44.o (.data); - build/assets/images/split/image45.o (.data); - build/assets/images/split/image46.o (.data); - build/assets/images/split/image47.o (.data); - build/assets/images/split/image48.o (.data); - build/assets/images/split/image49.o (.data); - build/assets/images/split/image50.o (.data); - build/assets/images/split/image51.o (.data); - build/assets/images/split/image52.o (.data); - build/assets/images/split/image53.o (.data); - build/assets/images/split/image54.o (.data); - build/assets/images/split/image55.o (.data); - build/assets/images/split/image56.o (.data); - build/assets/images/split/image57.o (.data); - build/assets/images/split/image58.o (.data); - build/assets/images/split/image59.o (.data); - build/assets/images/split/image60.o (.data); - build/assets/images/split/image61.o (.data); - build/assets/images/split/image62.o (.data); - build/assets/images/split/image63.o (.data); - build/assets/images/split/image64.o (.data); - build/assets/images/split/image65.o (.data); - build/assets/images/split/image66.o (.data); - build/assets/images/split/image67.o (.data); - build/assets/images/split/image68.o (.data); - build/assets/images/split/image69.o (.data); - build/assets/images/split/image70.o (.data); - build/assets/images/split/image71.o (.data); - build/assets/images/split/image72.o (.data); - build/assets/images/split/image73.o (.data); - build/assets/images/split/image74.o (.data); - build/assets/images/split/image75.o (.data); - build/assets/images/split/image76.o (.data); - build/assets/images/split/image77.o (.data); - build/assets/images/split/image78.o (.data); - build/assets/images/split/image79.o (.data); - build/assets/images/split/image80.o (.data); - build/assets/images/split/image81.o (.data); - build/assets/images/split/image82.o (.data); - build/assets/images/split/image83.o (.data); - build/assets/images/split/image84.o (.data); - build/assets/images/split/image85.o (.data); - build/assets/images/split/image86.o (.data); - build/assets/images/split/image87.o (.data); - build/assets/images/split/image88.o (.data); - build/assets/images/split/image89.o (.data); - build/assets/images/split/image90.o (.data); - build/assets/images/split/image91.o (.data); - build/assets/images/split/image92.o (.data); - build/assets/images/split/image93.o (.data); - build/assets/images/split/image94.o (.data); - build/assets/images/split/image95.o (.data); - build/assets/images/split/image96.o (.data); - build/assets/images/split/image97.o (.data); - build/assets/images/split/image98.o (.data); - build/assets/images/split/image99.o (.data); - build/assets/images/split/image100.o (.data); - build/assets/images/split/image101.o (.data); - build/assets/images/split/image102.o (.data); - build/assets/images/split/image103.o (.data); - build/assets/images/split/image104.o (.data); - build/assets/images/split/image105.o (.data); - build/assets/images/split/image106.o (.data); - build/assets/images/split/image107.o (.data); - build/assets/images/split/image108.o (.data); - build/assets/images/split/image109.o (.data); - build/assets/images/split/image110.o (.data); - build/assets/images/split/image111.o (.data); - build/assets/images/split/image112.o (.data); - build/assets/images/split/image113.o (.data); - build/assets/images/split/image114.o (.data); - build/assets/images/split/image115.o (.data); - build/assets/images/split/image116.o (.data); - build/assets/images/split/image117.o (.data); - build/assets/images/split/image118.o (.data); - build/assets/images/split/image119.o (.data); - build/assets/images/split/image120.o (.data); - build/assets/images/split/image121.o (.data); - build/assets/images/split/image122.o (.data); - build/assets/images/split/image123.o (.data); - build/assets/images/split/image124.o (.data); - build/assets/images/split/image125.o (.data); - build/assets/images/split/image126.o (.data); - build/assets/images/split/image127.o (.data); - build/assets/images/split/image128.o (.data); - build/assets/images/split/image129.o (.data); - build/assets/images/split/image130.o (.data); - build/assets/images/split/image131.o (.data); - build/assets/images/split/image132.o (.data); - build/assets/images/split/image133.o (.data); - build/assets/images/split/image134.o (.data); - build/assets/images/split/image135.o (.data); - build/assets/images/split/image136.o (.data); - build/assets/images/split/image137.o (.data); - build/assets/images/split/image138.o (.data); - build/assets/images/split/image139.o (.data); - build/assets/images/split/image140.o (.data); - build/assets/images/split/image141.o (.data); - build/assets/images/split/image142.o (.data); - build/assets/images/split/image143.o (.data); - build/assets/images/split/image144.o (.data); - build/assets/images/split/image145.o (.data); - build/assets/images/split/image146.o (.data); - build/assets/images/split/image147.o (.data); - build/assets/images/split/image148.o (.data); - build/assets/images/split/image149.o (.data); - build/assets/images/split/image150.o (.data); - build/assets/images/split/image151.o (.data); - build/assets/images/split/image152.o (.data); - build/assets/images/split/image153.o (.data); - build/assets/images/split/image154.o (.data); - build/assets/images/split/image155.o (.data); - build/assets/images/split/image156.o (.data); - build/assets/images/split/image157.o (.data); - build/assets/images/split/image158.o (.data); - build/assets/images/split/image159.o (.data); - build/assets/images/split/image160.o (.data); - build/assets/images/split/image161.o (.data); - build/assets/images/split/image162.o (.data); - build/assets/images/split/image163.o (.data); - build/assets/images/split/image164.o (.data); - build/assets/images/split/image165.o (.data); - build/assets/images/split/image166.o (.data); - build/assets/images/split/image167.o (.data); - build/assets/images/split/image168.o (.data); - build/assets/images/split/image169.o (.data); - build/assets/images/split/image170.o (.data); - build/assets/images/split/image171.o (.data); - build/assets/images/split/image172.o (.data); - build/assets/images/split/image173.o (.data); - build/assets/images/split/image174.o (.data); - build/assets/images/split/image175.o (.data); - build/assets/images/split/image176.o (.data); - build/assets/images/split/image177.o (.data); - build/assets/images/split/image178.o (.data); - build/assets/images/split/image179.o (.data); - build/assets/images/split/image180.o (.data); - build/assets/images/split/image181.o (.data); - build/assets/images/split/image182.o (.data); - build/assets/images/split/image183.o (.data); - build/assets/images/split/image184.o (.data); - build/assets/images/split/image185.o (.data); - build/assets/images/split/image186.o (.data); - build/assets/images/split/image187.o (.data); - build/assets/images/split/image188.o (.data); - build/assets/images/split/image189.o (.data); - build/assets/images/split/image190.o (.data); - build/assets/images/split/image191.o (.data); - build/assets/images/split/image192.o (.data); - build/assets/images/split/image193.o (.data); - build/assets/images/split/image194.o (.data); - build/assets/images/split/image195.o (.data); - build/assets/images/split/image196.o (.data); - build/assets/images/split/image197.o (.data); - build/assets/images/split/image198.o (.data); - build/assets/images/split/image199.o (.data); - build/assets/images/split/image200.o (.data); - build/assets/images/split/image201.o (.data); - build/assets/images/split/image202.o (.data); - build/assets/images/split/image203.o (.data); - build/assets/images/split/image204.o (.data); - build/assets/images/split/image205.o (.data); - build/assets/images/split/image206.o (.data); - build/assets/images/split/image207.o (.data); - build/assets/images/split/image208.o (.data); - build/assets/images/split/image209.o (.data); - build/assets/images/split/image210.o (.data); - build/assets/images/split/image211.o (.data); - build/assets/images/split/image212.o (.data); - build/assets/images/split/image213.o (.data); - build/assets/images/split/image214.o (.data); - build/assets/images/split/image215.o (.data); - build/assets/images/split/image216.o (.data); - build/assets/images/split/image217.o (.data); - build/assets/images/split/image218.o (.data); - build/assets/images/split/image219.o (.data); - build/assets/images/split/image220.o (.data); - build/assets/images/split/image221.o (.data); - build/assets/images/split/image222.o (.data); - build/assets/images/split/image223.o (.data); - build/assets/images/split/image224.o (.data); - build/assets/images/split/image225.o (.data); - build/assets/images/split/image226.o (.data); - build/assets/images/split/image227.o (.data); - build/assets/images/split/image228.o (.data); - build/assets/images/split/image229.o (.data); - build/assets/images/split/image230.o (.data); - build/assets/images/split/image231.o (.data); - build/assets/images/split/image232.o (.data); - build/assets/images/split/image233.o (.data); - build/assets/images/split/image234.o (.data); - build/assets/images/split/image235.o (.data); - build/assets/images/split/image236.o (.data); - build/assets/images/split/image237.o (.data); - build/assets/images/split/image238.o (.data); - build/assets/images/split/image239.o (.data); - build/assets/images/split/image240.o (.data); - build/assets/images/split/image241.o (.data); - build/assets/images/split/image242.o (.data); - build/assets/images/split/image243.o (.data); - build/assets/images/split/image244.o (.data); - build/assets/images/split/image245.o (.data); - build/assets/images/split/image246.o (.data); - build/assets/images/split/image247.o (.data); - build/assets/images/split/image248.o (.data); - build/assets/images/split/image249.o (.data); - build/assets/images/split/image250.o (.data); - build/assets/images/split/image251.o (.data); - build/assets/images/split/image252.o (.data); - build/assets/images/split/image253.o (.data); - build/assets/images/split/image254.o (.data); - build/assets/images/split/image255.o (.data); - build/assets/images/split/image256.o (.data); - build/assets/images/split/image257.o (.data); - build/assets/images/split/image258.o (.data); - build/assets/images/split/image259.o (.data); - build/assets/images/split/image260.o (.data); - build/assets/images/split/image261.o (.data); - build/assets/images/split/image262.o (.data); - build/assets/images/split/image263.o (.data); - build/assets/images/split/image264.o (.data); - build/assets/images/split/image265.o (.data); - build/assets/images/split/image266.o (.data); - build/assets/images/split/image267.o (.data); - build/assets/images/split/image268.o (.data); - build/assets/images/split/image269.o (.data); - build/assets/images/split/image270.o (.data); - build/assets/images/split/image271.o (.data); - build/assets/images/split/image272.o (.data); - build/assets/images/split/image273.o (.data); - build/assets/images/split/image274.o (.data); - build/assets/images/split/image275.o (.data); - build/assets/images/split/image276.o (.data); - build/assets/images/split/image277.o (.data); - build/assets/images/split/image278.o (.data); - build/assets/images/split/image279.o (.data); - build/assets/images/split/image280.o (.data); - build/assets/images/split/image281.o (.data); - build/assets/images/split/image282.o (.data); - build/assets/images/split/image283.o (.data); - build/assets/images/split/image284.o (.data); - build/assets/images/split/image285.o (.data); - build/assets/images/split/image286.o (.data); - build/assets/images/split/image287.o (.data); - build/assets/images/split/image288.o (.data); - build/assets/images/split/image289.o (.data); - build/assets/images/split/image290.o (.data); - build/assets/images/split/image291.o (.data); - build/assets/images/split/image292.o (.data); - build/assets/images/split/image293.o (.data); - build/assets/images/split/image294.o (.data); - build/assets/images/split/image295.o (.data); - build/assets/images/split/image296.o (.data); - build/assets/images/split/image297.o (.data); - build/assets/images/split/image298.o (.data); - build/assets/images/split/image299.o (.data); - build/assets/images/split/image300.o (.data); - build/assets/images/split/image301.o (.data); - build/assets/images/split/image302.o (.data); - build/assets/images/split/image303.o (.data); - build/assets/images/split/image304.o (.data); - build/assets/images/split/image305.o (.data); - build/assets/images/split/image306.o (.data); - build/assets/images/split/image307.o (.data); - build/assets/images/split/image308.o (.data); - build/assets/images/split/image309.o (.data); - build/assets/images/split/image310.o (.data); - build/assets/images/split/image311.o (.data); - build/assets/images/split/image312.o (.data); - build/assets/images/split/image313.o (.data); - build/assets/images/split/image314.o (.data); - build/assets/images/split/image315.o (.data); - build/assets/images/split/image316.o (.data); - build/assets/images/split/image317.o (.data); - build/assets/images/split/image318.o (.data); - build/assets/images/split/image319.o (.data); - build/assets/images/split/image320.o (.data); - build/assets/images/split/image321.o (.data); - build/assets/images/split/image322.o (.data); - build/assets/images/split/image323.o (.data); - build/assets/images/split/image324.o (.data); - build/assets/images/split/image325.o (.data); - build/assets/images/split/image326.o (.data); - build/assets/images/split/image327.o (.data); - build/assets/images/split/image328.o (.data); - build/assets/images/split/image329.o (.data); - build/assets/images/split/image330.o (.data); - build/assets/images/split/image331.o (.data); - build/assets/images/split/image332.o (.data); - build/assets/images/split/image333.o (.data); - build/assets/images/split/image334.o (.data); - build/assets/images/split/image335.o (.data); - build/assets/images/split/image336.o (.data); - build/assets/images/split/image337.o (.data); - build/assets/images/split/image338.o (.data); - build/assets/images/split/image339.o (.data); - build/assets/images/split/image340.o (.data); - build/assets/images/split/image341.o (.data); - build/assets/images/split/image342.o (.data); - build/assets/images/split/image343.o (.data); - build/assets/images/split/image344.o (.data); - build/assets/images/split/image345.o (.data); - build/assets/images/split/image346.o (.data); - build/assets/images/split/image347.o (.data); - build/assets/images/split/image348.o (.data); - build/assets/images/split/image349.o (.data); - build/assets/images/split/image350.o (.data); - build/assets/images/split/image351.o (.data); - build/assets/images/split/image352.o (.data); - build/assets/images/split/image353.o (.data); - build/assets/images/split/image354.o (.data); - build/assets/images/split/image355.o (.data); - build/assets/images/split/image356.o (.data); - build/assets/images/split/image357.o (.data); - build/assets/images/split/image358.o (.data); - build/assets/images/split/image359.o (.data); - build/assets/images/split/image360.o (.data); - build/assets/images/split/image361.o (.data); - build/assets/images/split/image362.o (.data); - build/assets/images/split/image363.o (.data); - build/assets/images/split/image364.o (.data); - build/assets/images/split/image365.o (.data); - build/assets/images/split/image366.o (.data); - build/assets/images/split/image367.o (.data); - build/assets/images/split/image368.o (.data); - build/assets/images/split/image369.o (.data); - build/assets/images/split/image370.o (.data); - build/assets/images/split/image371.o (.data); - build/assets/images/split/image372.o (.data); - build/assets/images/split/image373.o (.data); - build/assets/images/split/image374.o (.data); - build/assets/images/split/image375.o (.data); - build/assets/images/split/image376.o (.data); - build/assets/images/split/image377.o (.data); - build/assets/images/split/image378.o (.data); - build/assets/images/split/image379.o (.data); - build/assets/images/split/image380.o (.data); - build/assets/images/split/image381.o (.data); - build/assets/images/split/image382.o (.data); - build/assets/images/split/image383.o (.data); - build/assets/images/split/image384.o (.data); - build/assets/images/split/image385.o (.data); - build/assets/images/split/image386.o (.data); - build/assets/images/split/image387.o (.data); - build/assets/images/split/image388.o (.data); - build/assets/images/split/image389.o (.data); - build/assets/images/split/image390.o (.data); - build/assets/images/split/image391.o (.data); - build/assets/images/split/image392.o (.data); - build/assets/images/split/image393.o (.data); - build/assets/images/split/image394.o (.data); - build/assets/images/split/image395.o (.data); - build/assets/images/split/image396.o (.data); - build/assets/images/split/image397.o (.data); - build/assets/images/split/image398.o (.data); - build/assets/images/split/image399.o (.data); - build/assets/images/split/image400.o (.data); - build/assets/images/split/image401.o (.data); - build/assets/images/split/image402.o (.data); - build/assets/images/split/image403.o (.data); - build/assets/images/split/image404.o (.data); - build/assets/images/split/image405.o (.data); - build/assets/images/split/image406.o (.data); - build/assets/images/split/image407.o (.data); - build/assets/images/split/image408.o (.data); - build/assets/images/split/image409.o (.data); - build/assets/images/split/image410.o (.data); - build/assets/images/split/image411.o (.data); - build/assets/images/split/image412.o (.data); - build/assets/images/split/image413.o (.data); - build/assets/images/split/image414.o (.data); - build/assets/images/split/image415.o (.data); - build/assets/images/split/image416.o (.data); - build/assets/images/split/image417.o (.data); - build/assets/images/split/image418.o (.data); - build/assets/images/split/image419.o (.data); - build/assets/images/split/image420.o (.data); - build/assets/images/split/image421.o (.data); - build/assets/images/split/image422.o (.data); - build/assets/images/split/image423.o (.data); - build/assets/images/split/image424.o (.data); - build/assets/images/split/image425.o (.data); - build/assets/images/split/image426.o (.data); - build/assets/images/split/image427.o (.data); - build/assets/images/split/image428.o (.data); - build/assets/images/split/image429.o (.data); - build/assets/images/split/image430.o (.data); - build/assets/images/split/image431.o (.data); - build/assets/images/split/image432.o (.data); - build/assets/images/split/image433.o (.data); - build/assets/images/split/image434.o (.data); - build/assets/images/split/image435.o (.data); - build/assets/images/split/image436.o (.data); - build/assets/images/split/image437.o (.data); - build/assets/images/split/image438.o (.data); - build/assets/images/split/image439.o (.data); - build/assets/images/split/image440.o (.data); - build/assets/images/split/image441.o (.data); - build/assets/images/split/image442.o (.data); - build/assets/images/split/image443.o (.data); - build/assets/images/split/image444.o (.data); - build/assets/images/split/image445.o (.data); - build/assets/images/split/image446.o (.data); - build/assets/images/split/image447.o (.data); - build/assets/images/split/image448.o (.data); - build/assets/images/split/image449.o (.data); - build/assets/images/split/image450.o (.data); - build/assets/images/split/image451.o (.data); - build/assets/images/split/image452.o (.data); - build/assets/images/split/image453.o (.data); - build/assets/images/split/image454.o (.data); - build/assets/images/split/image455.o (.data); - build/assets/images/split/image456.o (.data); - build/assets/images/split/image457.o (.data); - build/assets/images/split/image458.o (.data); - build/assets/images/split/image459.o (.data); - build/assets/images/split/image460.o (.data); - build/assets/images/split/image461.o (.data); - build/assets/images/split/image462.o (.data); - build/assets/images/split/image463.o (.data); - build/assets/images/split/image464.o (.data); - build/assets/images/split/image465.o (.data); - build/assets/images/split/image466.o (.data); - build/assets/images/split/image467.o (.data); - build/assets/images/split/image468.o (.data); - build/assets/images/split/image469.o (.data); - build/assets/images/split/image470.o (.data); - build/assets/images/split/image471.o (.data); - build/assets/images/split/image472.o (.data); - build/assets/images/split/image473.o (.data); - build/assets/images/split/image474.o (.data); - build/assets/images/split/image475.o (.data); - build/assets/images/split/image476.o (.data); - build/assets/images/split/image477.o (.data); - build/assets/images/split/image478.o (.data); - build/assets/images/split/image479.o (.data); - build/assets/images/split/image480.o (.data); - build/assets/images/split/image481.o (.data); - build/assets/images/split/image482.o (.data); - build/assets/images/split/image483.o (.data); - build/assets/images/split/image484.o (.data); - build/assets/images/split/image485.o (.data); - build/assets/images/split/image486.o (.data); - build/assets/images/split/image487.o (.data); - build/assets/images/split/image488.o (.data); - build/assets/images/split/image489.o (.data); - build/assets/images/split/image490.o (.data); - build/assets/images/split/image491.o (.data); - build/assets/images/split/image492.o (.data); - build/assets/images/split/image493.o (.data); - build/assets/images/split/image494.o (.data); - build/assets/images/split/image495.o (.data); - build/assets/images/split/image496.o (.data); - build/assets/images/split/image497.o (.data); - build/assets/images/split/image498.o (.data); - build/assets/images/split/image499.o (.data); - build/assets/images/split/image500.o (.data); - build/assets/images/split/image501.o (.data); - build/assets/images/split/image502.o (.data); - build/assets/images/split/image503.o (.data); - build/assets/images/split/image504.o (.data); - build/assets/images/split/image505.o (.data); - build/assets/images/split/image506.o (.data); - build/assets/images/split/image507.o (.data); - build/assets/images/split/image508.o (.data); - build/assets/images/split/image509.o (.data); - build/assets/images/split/image510.o (.data); - build/assets/images/split/image511.o (.data); - build/assets/images/split/image512.o (.data); - build/assets/images/split/image513.o (.data); - build/assets/images/split/image514.o (.data); - build/assets/images/split/image515.o (.data); - build/assets/images/split/image516.o (.data); - build/assets/images/split/image517.o (.data); - build/assets/images/split/image518.o (.data); - build/assets/images/split/image519.o (.data); - build/assets/images/split/image520.o (.data); - build/assets/images/split/image521.o (.data); - build/assets/images/split/image522.o (.data); - build/assets/images/split/image523.o (.data); - build/assets/images/split/image524.o (.data); - build/assets/images/split/image525.o (.data); - build/assets/images/split/image526.o (.data); - build/assets/images/split/image527.o (.data); - build/assets/images/split/image528.o (.data); - build/assets/images/split/image529.o (.data); - build/assets/images/split/image530.o (.data); - build/assets/images/split/image531.o (.data); - build/assets/images/split/image532.o (.data); - build/assets/images/split/image533.o (.data); - build/assets/images/split/image534.o (.data); - build/assets/images/split/image535.o (.data); - build/assets/images/split/image536.o (.data); - build/assets/images/split/image537.o (.data); - build/assets/images/split/image538.o (.data); - build/assets/images/split/image539.o (.data); - build/assets/images/split/image540.o (.data); - build/assets/images/split/image541.o (.data); - build/assets/images/split/image542.o (.data); - build/assets/images/split/image543.o (.data); - build/assets/images/split/image544.o (.data); - build/assets/images/split/image545.o (.data); - build/assets/images/split/image546.o (.data); - build/assets/images/split/image547.o (.data); - build/assets/images/split/image548.o (.data); - build/assets/images/split/image549.o (.data); - build/assets/images/split/image550.o (.data); - build/assets/images/split/image551.o (.data); - build/assets/images/split/image552.o (.data); - build/assets/images/split/image553.o (.data); - build/assets/images/split/image554.o (.data); - build/assets/images/split/image555.o (.data); - build/assets/images/split/image556.o (.data); - build/assets/images/split/image557.o (.data); - build/assets/images/split/image558.o (.data); - build/assets/images/split/image559.o (.data); - build/assets/images/split/image560.o (.data); - build/assets/images/split/image561.o (.data); - build/assets/images/split/image562.o (.data); - build/assets/images/split/image563.o (.data); - build/assets/images/split/image564.o (.data); - build/assets/images/split/image565.o (.data); - build/assets/images/split/image566.o (.data); - build/assets/images/split/image567.o (.data); - build/assets/images/split/image568.o (.data); - build/assets/images/split/image569.o (.data); - build/assets/images/split/image570.o (.data); - build/assets/images/split/image571.o (.data); - build/assets/images/split/image572.o (.data); - build/assets/images/split/image573.o (.data); - build/assets/images/split/image574.o (.data); - build/assets/images/split/image575.o (.data); - build/assets/images/split/image576.o (.data); - build/assets/images/split/image577.o (.data); - build/assets/images/split/image578.o (.data); - build/assets/images/split/image579.o (.data); - build/assets/images/split/image580.o (.data); - build/assets/images/split/image581.o (.data); - build/assets/images/split/image582.o (.data); - build/assets/images/split/image583.o (.data); - build/assets/images/split/image584.o (.data); - build/assets/images/split/image585.o (.data); - build/assets/images/split/image586.o (.data); - build/assets/images/split/image587.o (.data); - build/assets/images/split/image588.o (.data); - build/assets/images/split/image589.o (.data); - build/assets/images/split/image590.o (.data); - build/assets/images/split/image591.o (.data); - build/assets/images/split/image592.o (.data); - build/assets/images/split/image593.o (.data); - build/assets/images/split/image594.o (.data); - build/assets/images/split/image595.o (.data); - build/assets/images/split/image596.o (.data); - build/assets/images/split/image597.o (.data); - build/assets/images/split/image598.o (.data); - build/assets/images/split/image599.o (.data); - build/assets/images/split/image600.o (.data); - build/assets/images/split/image601.o (.data); - build/assets/images/split/image602.o (.data); - build/assets/images/split/image603.o (.data); - build/assets/images/split/image604.o (.data); - build/assets/images/split/image605.o (.data); - build/assets/images/split/image606.o (.data); - build/assets/images/split/image607.o (.data); - build/assets/images/split/image608.o (.data); - build/assets/images/split/image609.o (.data); - build/assets/images/split/image610.o (.data); - build/assets/images/split/image611.o (.data); - build/assets/images/split/image612.o (.data); - build/assets/images/split/image613.o (.data); - build/assets/images/split/image614.o (.data); - build/assets/images/split/image615.o (.data); - build/assets/images/split/image616.o (.data); - build/assets/images/split/image617.o (.data); - build/assets/images/split/image618.o (.data); - build/assets/images/split/image619.o (.data); - build/assets/images/split/image620.o (.data); - build/assets/images/split/image621.o (.data); - build/assets/images/split/image622.o (.data); - build/assets/images/split/image623.o (.data); - build/assets/images/split/image624.o (.data); - build/assets/images/split/image625.o (.data); - build/assets/images/split/image626.o (.data); - build/assets/images/split/image627.o (.data); - build/assets/images/split/image628.o (.data); - build/assets/images/split/image629.o (.data); - build/assets/images/split/image630.o (.data); - build/assets/images/split/image631.o (.data); - build/assets/images/split/image632.o (.data); - build/assets/images/split/image633.o (.data); - build/assets/images/split/image634.o (.data); - build/assets/images/split/image635.o (.data); - build/assets/images/split/image636.o (.data); - build/assets/images/split/image637.o (.data); - build/assets/images/split/image638.o (.data); - build/assets/images/split/image639.o (.data); - build/assets/images/split/image640.o (.data); - build/assets/images/split/image641.o (.data); - build/assets/images/split/image642.o (.data); - build/assets/images/split/image643.o (.data); - build/assets/images/split/image644.o (.data); - build/assets/images/split/image645.o (.data); - build/assets/images/split/image646.o (.data); - build/assets/images/split/image647.o (.data); - build/assets/images/split/image648.o (.data); - build/assets/images/split/image649.o (.data); - build/assets/images/split/image650.o (.data); - build/assets/images/split/image651.o (.data); - build/assets/images/split/image652.o (.data); - build/assets/images/split/image653.o (.data); - build/assets/images/split/image654.o (.data); - build/assets/images/split/image655.o (.data); - build/assets/images/split/image656.o (.data); - build/assets/images/split/image657.o (.data); - build/assets/images/split/image658.o (.data); - build/assets/images/split/image659.o (.data); - build/assets/images/split/image660.o (.data); - build/assets/images/split/image661.o (.data); - build/assets/images/split/image662.o (.data); - build/assets/images/split/image663.o (.data); - build/assets/images/split/image664.o (.data); - build/assets/images/split/image665.o (.data); - build/assets/images/split/image666.o (.data); - build/assets/images/split/image667.o (.data); - build/assets/images/split/image668.o (.data); - build/assets/images/split/image669.o (.data); - build/assets/images/split/image670.o (.data); - build/assets/images/split/image671.o (.data); - build/assets/images/split/image672.o (.data); - build/assets/images/split/image673.o (.data); - build/assets/images/split/image674.o (.data); - build/assets/images/split/image675.o (.data); - build/assets/images/split/image676.o (.data); - build/assets/images/split/image677.o (.data); - build/assets/images/split/image678.o (.data); - build/assets/images/split/image679.o (.data); - build/assets/images/split/image680.o (.data); - build/assets/images/split/image681.o (.data); - build/assets/images/split/image682.o (.data); - build/assets/images/split/image683.o (.data); - build/assets/images/split/image684.o (.data); - build/assets/images/split/image685.o (.data); - build/assets/images/split/image686.o (.data); - build/assets/images/split/image687.o (.data); - build/assets/images/split/image688.o (.data); - build/assets/images/split/image689.o (.data); - build/assets/images/split/image690.o (.data); - build/assets/images/split/image691.o (.data); - build/assets/images/split/image692.o (.data); - build/assets/images/split/image693.o (.data); - build/assets/images/split/image694.o (.data); - build/assets/images/split/image695.o (.data); - build/assets/images/split/image696.o (.data); - build/assets/images/split/image697.o (.data); - build/assets/images/split/image698.o (.data); - build/assets/images/split/image699.o (.data); - build/assets/images/split/image700.o (.data); - build/assets/images/split/image701.o (.data); - build/assets/images/split/image702.o (.data); - build/assets/images/split/image703.o (.data); - build/assets/images/split/image704.o (.data); - build/assets/images/split/image705.o (.data); - build/assets/images/split/image706.o (.data); - build/assets/images/split/image707.o (.data); - build/assets/images/split/image708.o (.data); - build/assets/images/split/image709.o (.data); - build/assets/images/split/image710.o (.data); - build/assets/images/split/image711.o (.data); - build/assets/images/split/image712.o (.data); - build/assets/images/split/image713.o (.data); - build/assets/images/split/image714.o (.data); - build/assets/images/split/image715.o (.data); - build/assets/images/split/image716.o (.data); - build/assets/images/split/image717.o (.data); - build/assets/images/split/image718.o (.data); - build/assets/images/split/image719.o (.data); - build/assets/images/split/image720.o (.data); - build/assets/images/split/image721.o (.data); - build/assets/images/split/image722.o (.data); - build/assets/images/split/image723.o (.data); - build/assets/images/split/image724.o (.data); - build/assets/images/split/image725.o (.data); - build/assets/images/split/image726.o (.data); - build/assets/images/split/image727.o (.data); - build/assets/images/split/image728.o (.data); - build/assets/images/split/image729.o (.data); - build/assets/images/split/image730.o (.data); - build/assets/images/split/image731.o (.data); - build/assets/images/split/image732.o (.data); - build/assets/images/split/image733.o (.data); - build/assets/images/split/image734.o (.data); - build/assets/images/split/image735.o (.data); - build/assets/images/split/image736.o (.data); - build/assets/images/split/image737.o (.data); - build/assets/images/split/image738.o (.data); - build/assets/images/split/image739.o (.data); - build/assets/images/split/image740.o (.data); - build/assets/images/split/image741.o (.data); - build/assets/images/split/image742.o (.data); - build/assets/images/split/image743.o (.data); - build/assets/images/split/image744.o (.data); - build/assets/images/split/image745.o (.data); - build/assets/images/split/image746.o (.data); - build/assets/images/split/image747.o (.data); - build/assets/images/split/image748.o (.data); - build/assets/images/split/image749.o (.data); - build/assets/images/split/image750.o (.data); - build/assets/images/split/image751.o (.data); - build/assets/images/split/image752.o (.data); - build/assets/images/split/image753.o (.data); - build/assets/images/split/image754.o (.data); - build/assets/images/split/image755.o (.data); - build/assets/images/split/image756.o (.data); - build/assets/images/split/image757.o (.data); - build/assets/images/split/image758.o (.data); - build/assets/images/split/image759.o (.data); - build/assets/images/split/image760.o (.data); - build/assets/images/split/image761.o (.data); - build/assets/images/split/image762.o (.data); - build/assets/images/split/image763.o (.data); - build/assets/images/split/image764.o (.data); - build/assets/images/split/image765.o (.data); - build/assets/images/split/image766.o (.data); - build/assets/images/split/image767.o (.data); - build/assets/images/split/image768.o (.data); - build/assets/images/split/image769.o (.data); - build/assets/images/split/image770.o (.data); - build/assets/images/split/image771.o (.data); - build/assets/images/split/image772.o (.data); - build/assets/images/split/image773.o (.data); - build/assets/images/split/image774.o (.data); - build/assets/images/split/image775.o (.data); - build/assets/images/split/image776.o (.data); - build/assets/images/split/image777.o (.data); - build/assets/images/split/image778.o (.data); - build/assets/images/split/image779.o (.data); - build/assets/images/split/image780.o (.data); - build/assets/images/split/image781.o (.data); - build/assets/images/split/image782.o (.data); - build/assets/images/split/image783.o (.data); - build/assets/images/split/image784.o (.data); - build/assets/images/split/image785.o (.data); - build/assets/images/split/image786.o (.data); - build/assets/images/split/image787.o (.data); - build/assets/images/split/image788.o (.data); - build/assets/images/split/image789.o (.data); - build/assets/images/split/image790.o (.data); - build/assets/images/split/image791.o (.data); - build/assets/images/split/image792.o (.data); - build/assets/images/split/image793.o (.data); - build/assets/images/split/image794.o (.data); - build/assets/images/split/image795.o (.data); - build/assets/images/split/image796.o (.data); - build/assets/images/split/image797.o (.data); - build/assets/images/split/image798.o (.data); - build/assets/images/split/image799.o (.data); - build/assets/images/split/image800.o (.data); - build/assets/images/split/image801.o (.data); - build/assets/images/split/image802.o (.data); - build/assets/images/split/image803.o (.data); - build/assets/images/split/image804.o (.data); - build/assets/images/split/image805.o (.data); - build/assets/images/split/image806.o (.data); - build/assets/images/split/image807.o (.data); - build/assets/images/split/image808.o (.data); - build/assets/images/split/image809.o (.data); - build/assets/images/split/image810.o (.data); - build/assets/images/split/image811.o (.data); - build/assets/images/split/image812.o (.data); - build/assets/images/split/image813.o (.data); - build/assets/images/split/image814.o (.data); - build/assets/images/split/image815.o (.data); - build/assets/images/split/image816.o (.data); - build/assets/images/split/image817.o (.data); - build/assets/images/split/image818.o (.data); - build/assets/images/split/image819.o (.data); - build/assets/images/split/image820.o (.data); - build/assets/images/split/image821.o (.data); - build/assets/images/split/image822.o (.data); - build/assets/images/split/image823.o (.data); - build/assets/images/split/image824.o (.data); - build/assets/images/split/image825.o (.data); - build/assets/images/split/image826.o (.data); - build/assets/images/split/image827.o (.data); - build/assets/images/split/image828.o (.data); - build/assets/images/split/image829.o (.data); - build/assets/images/split/image830.o (.data); - build/assets/images/split/image831.o (.data); - build/assets/images/split/image832.o (.data); - build/assets/images/split/image833.o (.data); - build/assets/images/split/image834.o (.data); - build/assets/images/split/image835.o (.data); - build/assets/images/split/image836.o (.data); - build/assets/images/split/image837.o (.data); - build/assets/images/split/image838.o (.data); - build/assets/images/split/image839.o (.data); - build/assets/images/split/image840.o (.data); - build/assets/images/split/image841.o (.data); - build/assets/images/split/image842.o (.data); - build/assets/images/split/image843.o (.data); - build/assets/images/split/image844.o (.data); - build/assets/images/split/image845.o (.data); - build/assets/images/split/image846.o (.data); - build/assets/images/split/image847.o (.data); - build/assets/images/split/image848.o (.data); - build/assets/images/split/image849.o (.data); - build/assets/images/split/image850.o (.data); - build/assets/images/split/image851.o (.data); - build/assets/images/split/image852.o (.data); - build/assets/images/split/image853.o (.data); - build/assets/images/split/image854.o (.data); - build/assets/images/split/image855.o (.data); - build/assets/images/split/image856.o (.data); - build/assets/images/split/image857.o (.data); - build/assets/images/split/image858.o (.data); - build/assets/images/split/image859.o (.data); - build/assets/images/split/image860.o (.data); - build/assets/images/split/image861.o (.data); - build/assets/images/split/image862.o (.data); - build/assets/images/split/image863.o (.data); - build/assets/images/split/image864.o (.data); - build/assets/images/split/image865.o (.data); - build/assets/images/split/image866.o (.data); - build/assets/images/split/image867.o (.data); - build/assets/images/split/image868.o (.data); - build/assets/images/split/image869.o (.data); - build/assets/images/split/image870.o (.data); - build/assets/images/split/image871.o (.data); - build/assets/images/split/image872.o (.data); - build/assets/images/split/image873.o (.data); - build/assets/images/split/image874.o (.data); - build/assets/images/split/image875.o (.data); - build/assets/images/split/image876.o (.data); - build/assets/images/split/image877.o (.data); - build/assets/images/split/image878.o (.data); - build/assets/images/split/image879.o (.data); - build/assets/images/split/image880.o (.data); - build/assets/images/split/image881.o (.data); - build/assets/images/split/image882.o (.data); - build/assets/images/split/image883.o (.data); - build/assets/images/split/image884.o (.data); - build/assets/images/split/image885.o (.data); - build/assets/images/split/image886.o (.data); - build/assets/images/split/image887.o (.data); - build/assets/images/split/image888.o (.data); - build/assets/images/split/image889.o (.data); - build/assets/images/split/image890.o (.data); - build/assets/images/split/image891.o (.data); - build/assets/images/split/image892.o (.data); - build/assets/images/split/image893.o (.data); - build/assets/images/split/image894.o (.data); - build/assets/images/split/image895.o (.data); - build/assets/images/split/image896.o (.data); - build/assets/images/split/image897.o (.data); - build/assets/images/split/image898.o (.data); - build/assets/images/split/image899.o (.data); - build/assets/images/split/image900.o (.data); - build/assets/images/split/image901.o (.data); - build/assets/images/split/image902.o (.data); - build/assets/images/split/image903.o (.data); - build/assets/images/split/image904.o (.data); - build/assets/images/split/image905.o (.data); - build/assets/images/split/image906.o (.data); - build/assets/images/split/image907.o (.data); - build/assets/images/split/image908.o (.data); - build/assets/images/split/image909.o (.data); - build/assets/images/split/image910.o (.data); - build/assets/images/split/image911.o (.data); - build/assets/images/split/image912.o (.data); - build/assets/images/split/image913.o (.data); - build/assets/images/split/image914.o (.data); - build/assets/images/split/image915.o (.data); - build/assets/images/split/image916.o (.data); - build/assets/images/split/image917.o (.data); - build/assets/images/split/image918.o (.data); - build/assets/images/split/image919.o (.data); - build/assets/images/split/image920.o (.data); - build/assets/images/split/image921.o (.data); - build/assets/images/split/image922.o (.data); - build/assets/images/split/image923.o (.data); - build/assets/images/split/image924.o (.data); - build/assets/images/split/image925.o (.data); - build/assets/images/split/image926.o (.data); - build/assets/images/split/image927.o (.data); - build/assets/images/split/image928.o (.data); - build/assets/images/split/image929.o (.data); - build/assets/images/split/image930.o (.data); - build/assets/images/split/image931.o (.data); - build/assets/images/split/image932.o (.data); - build/assets/images/split/image933.o (.data); - build/assets/images/split/image934.o (.data); - build/assets/images/split/image935.o (.data); - build/assets/images/split/image936.o (.data); - build/assets/images/split/image937.o (.data); - build/assets/images/split/image938.o (.data); - build/assets/images/split/image939.o (.data); - build/assets/images/split/image940.o (.data); - build/assets/images/split/image941.o (.data); - build/assets/images/split/image942.o (.data); - build/assets/images/split/image943.o (.data); - build/assets/images/split/image944.o (.data); - build/assets/images/split/image945.o (.data); - build/assets/images/split/image946.o (.data); - build/assets/images/split/image947.o (.data); - build/assets/images/split/image948.o (.data); - build/assets/images/split/image949.o (.data); - build/assets/images/split/image950.o (.data); - build/assets/images/split/image951.o (.data); - build/assets/images/split/image952.o (.data); - build/assets/images/split/image953.o (.data); - build/assets/images/split/image954.o (.data); - build/assets/images/split/image955.o (.data); - build/assets/images/split/image956.o (.data); - build/assets/images/split/image957.o (.data); - build/assets/images/split/image958.o (.data); - build/assets/images/split/image959.o (.data); - build/assets/images/split/image960.o (.data); - build/assets/images/split/image961.o (.data); - build/assets/images/split/image962.o (.data); - build/assets/images/split/image963.o (.data); - build/assets/images/split/image964.o (.data); - build/assets/images/split/image965.o (.data); - build/assets/images/split/image966.o (.data); - build/assets/images/split/image967.o (.data); - build/assets/images/split/image968.o (.data); - build/assets/images/split/image969.o (.data); - build/assets/images/split/image970.o (.data); - build/assets/images/split/image971.o (.data); - build/assets/images/split/image972.o (.data); - build/assets/images/split/image973.o (.data); - build/assets/images/split/image974.o (.data); - build/assets/images/split/image975.o (.data); - build/assets/images/split/image976.o (.data); - build/assets/images/split/image977.o (.data); - build/assets/images/split/image978.o (.data); - build/assets/images/split/image979.o (.data); - build/assets/images/split/image980.o (.data); - build/assets/images/split/image981.o (.data); - build/assets/images/split/image982.o (.data); - build/assets/images/split/image983.o (.data); - build/assets/images/split/image984.o (.data); - build/assets/images/split/image985.o (.data); - build/assets/images/split/image986.o (.data); - build/assets/images/split/image987.o (.data); - build/assets/images/split/image988.o (.data); - build/assets/images/split/image989.o (.data); - build/assets/images/split/image990.o (.data); - build/assets/images/split/image991.o (.data); - build/assets/images/split/image992.o (.data); - build/assets/images/split/image993.o (.data); - build/assets/images/split/image994.o (.data); - build/assets/images/split/image995.o (.data); - build/assets/images/split/image996.o (.data); - build/assets/images/split/image997.o (.data); - build/assets/images/split/image998.o (.data); - build/assets/images/split/image999.o (.data); - build/assets/images/split/image1000.o (.data); - build/assets/images/split/image1001.o (.data); - build/assets/images/split/image1002.o (.data); - build/assets/images/split/image1003.o (.data); - build/assets/images/split/image1004.o (.data); - build/assets/images/split/image1005.o (.data); - build/assets/images/split/image1006.o (.data); - build/assets/images/split/image1007.o (.data); - build/assets/images/split/image1008.o (.data); - build/assets/images/split/image1009.o (.data); - build/assets/images/split/image1010.o (.data); - build/assets/images/split/image1011.o (.data); - build/assets/images/split/image1012.o (.data); - build/assets/images/split/image1013.o (.data); - build/assets/images/split/image1014.o (.data); - build/assets/images/split/image1015.o (.data); - build/assets/images/split/image1016.o (.data); - build/assets/images/split/image1017.o (.data); - build/assets/images/split/image1018.o (.data); - build/assets/images/split/image1019.o (.data); - build/assets/images/split/image1020.o (.data); - build/assets/images/split/image1021.o (.data); - build/assets/images/split/image1022.o (.data); - build/assets/images/split/image1023.o (.data); - build/assets/images/split/image1024.o (.data); - build/assets/images/split/image1025.o (.data); - build/assets/images/split/image1026.o (.data); - build/assets/images/split/image1027.o (.data); - build/assets/images/split/image1028.o (.data); - build/assets/images/split/image1029.o (.data); - build/assets/images/split/image1030.o (.data); - build/assets/images/split/image1031.o (.data); - build/assets/images/split/image1032.o (.data); - build/assets/images/split/image1033.o (.data); - build/assets/images/split/image1034.o (.data); - build/assets/images/split/image1035.o (.data); - build/assets/images/split/image1036.o (.data); - build/assets/images/split/image1037.o (.data); - build/assets/images/split/image1038.o (.data); - build/assets/images/split/image1039.o (.data); - build/assets/images/split/image1040.o (.data); - build/assets/images/split/image1041.o (.data); - build/assets/images/split/image1042.o (.data); - build/assets/images/split/image1043.o (.data); - build/assets/images/split/image1044.o (.data); - build/assets/images/split/image1045.o (.data); - build/assets/images/split/image1046.o (.data); - build/assets/images/split/image1047.o (.data); - build/assets/images/split/image1048.o (.data); - build/assets/images/split/image1049.o (.data); - build/assets/images/split/image1050.o (.data); - build/assets/images/split/image1051.o (.data); - build/assets/images/split/image1052.o (.data); - build/assets/images/split/image1053.o (.data); - build/assets/images/split/image1054.o (.data); - build/assets/images/split/image1055.o (.data); - build/assets/images/split/image1056.o (.data); - build/assets/images/split/image1057.o (.data); - build/assets/images/split/image1058.o (.data); - build/assets/images/split/image1059.o (.data); - build/assets/images/split/image1060.o (.data); - build/assets/images/split/image1061.o (.data); - build/assets/images/split/image1062.o (.data); - build/assets/images/split/image1063.o (.data); - build/assets/images/split/image1064.o (.data); - build/assets/images/split/image1065.o (.data); - build/assets/images/split/image1066.o (.data); - build/assets/images/split/image1067.o (.data); - build/assets/images/split/image1068.o (.data); - build/assets/images/split/image1069.o (.data); - build/assets/images/split/image1070.o (.data); - build/assets/images/split/image1071.o (.data); - build/assets/images/split/image1072.o (.data); - build/assets/images/split/image1073.o (.data); - build/assets/images/split/image1074.o (.data); - build/assets/images/split/image1075.o (.data); - build/assets/images/split/image1076.o (.data); - build/assets/images/split/image1077.o (.data); - build/assets/images/split/image1078.o (.data); - build/assets/images/split/image1079.o (.data); - build/assets/images/split/image1080.o (.data); - build/assets/images/split/image1081.o (.data); - build/assets/images/split/image1082.o (.data); - build/assets/images/split/image1083.o (.data); - build/assets/images/split/image1084.o (.data); - build/assets/images/split/image1085.o (.data); - build/assets/images/split/image1086.o (.data); - build/assets/images/split/image1087.o (.data); - build/assets/images/split/image1088.o (.data); - build/assets/images/split/image1089.o (.data); - build/assets/images/split/image1090.o (.data); - build/assets/images/split/image1091.o (.data); - build/assets/images/split/image1092.o (.data); - build/assets/images/split/image1093.o (.data); - build/assets/images/split/image1094.o (.data); - build/assets/images/split/image1095.o (.data); - build/assets/images/split/image1096.o (.data); - build/assets/images/split/image1097.o (.data); - build/assets/images/split/image1098.o (.data); - build/assets/images/split/image1099.o (.data); - build/assets/images/split/image1100.o (.data); - build/assets/images/split/image1101.o (.data); - build/assets/images/split/image1102.o (.data); - build/assets/images/split/image1103.o (.data); - build/assets/images/split/image1104.o (.data); - build/assets/images/split/image1105.o (.data); - build/assets/images/split/image1106.o (.data); - build/assets/images/split/image1107.o (.data); - build/assets/images/split/image1108.o (.data); - build/assets/images/split/image1109.o (.data); - build/assets/images/split/image1110.o (.data); - build/assets/images/split/image1111.o (.data); - build/assets/images/split/image1112.o (.data); - build/assets/images/split/image1113.o (.data); - build/assets/images/split/image1114.o (.data); - build/assets/images/split/image1115.o (.data); - build/assets/images/split/image1116.o (.data); - build/assets/images/split/image1117.o (.data); - build/assets/images/split/image1118.o (.data); - build/assets/images/split/image1119.o (.data); - build/assets/images/split/image1120.o (.data); - build/assets/images/split/image1121.o (.data); - build/assets/images/split/image1122.o (.data); - build/assets/images/split/image1123.o (.data); - build/assets/images/split/image1124.o (.data); - build/assets/images/split/image1125.o (.data); - build/assets/images/split/image1126.o (.data); - build/assets/images/split/image1127.o (.data); - build/assets/images/split/image1128.o (.data); - build/assets/images/split/image1129.o (.data); - build/assets/images/split/image1130.o (.data); - build/assets/images/split/image1131.o (.data); - build/assets/images/split/image1132.o (.data); - build/assets/images/split/image1133.o (.data); - build/assets/images/split/image1134.o (.data); - build/assets/images/split/image1135.o (.data); - build/assets/images/split/image1136.o (.data); - build/assets/images/split/image1137.o (.data); - build/assets/images/split/image1138.o (.data); - build/assets/images/split/image1139.o (.data); - build/assets/images/split/image1140.o (.data); - build/assets/images/split/image1141.o (.data); - build/assets/images/split/image1142.o (.data); - build/assets/images/split/image1143.o (.data); - build/assets/images/split/image1144.o (.data); - build/assets/images/split/image1145.o (.data); - build/assets/images/split/image1146.o (.data); - build/assets/images/split/image1147.o (.data); - build/assets/images/split/image1148.o (.data); - build/assets/images/split/image1149.o (.data); - build/assets/images/split/image1150.o (.data); - build/assets/images/split/image1151.o (.data); - build/assets/images/split/image1152.o (.data); - build/assets/images/split/image1153.o (.data); - build/assets/images/split/image1154.o (.data); - build/assets/images/split/image1155.o (.data); - build/assets/images/split/image1156.o (.data); - build/assets/images/split/image1157.o (.data); - build/assets/images/split/image1158.o (.data); - build/assets/images/split/image1159.o (.data); - build/assets/images/split/image1160.o (.data); - build/assets/images/split/image1161.o (.data); - build/assets/images/split/image1162.o (.data); - build/assets/images/split/image1163.o (.data); - build/assets/images/split/image1164.o (.data); - build/assets/images/split/image1165.o (.data); - build/assets/images/split/image1166.o (.data); - build/assets/images/split/image1167.o (.data); - build/assets/images/split/image1168.o (.data); - build/assets/images/split/image1169.o (.data); - build/assets/images/split/image1170.o (.data); - build/assets/images/split/image1171.o (.data); - build/assets/images/split/image1172.o (.data); - build/assets/images/split/image1173.o (.data); - build/assets/images/split/image1174.o (.data); - build/assets/images/split/image1175.o (.data); - build/assets/images/split/image1176.o (.data); - build/assets/images/split/image1177.o (.data); - build/assets/images/split/image1178.o (.data); - build/assets/images/split/image1179.o (.data); - build/assets/images/split/image1180.o (.data); - build/assets/images/split/image1181.o (.data); - build/assets/images/split/image1182.o (.data); - build/assets/images/split/image1183.o (.data); - build/assets/images/split/image1184.o (.data); - build/assets/images/split/image1185.o (.data); - build/assets/images/split/image1186.o (.data); - build/assets/images/split/image1187.o (.data); - build/assets/images/split/image1188.o (.data); - build/assets/images/split/image1189.o (.data); - build/assets/images/split/image1190.o (.data); - build/assets/images/split/image1191.o (.data); - build/assets/images/split/image1192.o (.data); - build/assets/images/split/image1193.o (.data); - build/assets/images/split/image1194.o (.data); - build/assets/images/split/image1195.o (.data); - build/assets/images/split/image1196.o (.data); - build/assets/images/split/image1197.o (.data); - build/assets/images/split/image1198.o (.data); - build/assets/images/split/image1199.o (.data); - build/assets/images/split/image1200.o (.data); - build/assets/images/split/image1201.o (.data); - build/assets/images/split/image1202.o (.data); - build/assets/images/split/image1203.o (.data); - build/assets/images/split/image1204.o (.data); - build/assets/images/split/image1205.o (.data); - build/assets/images/split/image1206.o (.data); - build/assets/images/split/image1207.o (.data); - build/assets/images/split/image1208.o (.data); - build/assets/images/split/image1209.o (.data); - build/assets/images/split/image1210.o (.data); - build/assets/images/split/image1211.o (.data); - build/assets/images/split/image1212.o (.data); - build/assets/images/split/image1213.o (.data); - build/assets/images/split/image1214.o (.data); - build/assets/images/split/image1215.o (.data); - build/assets/images/split/image1216.o (.data); - build/assets/images/split/image1217.o (.data); - build/assets/images/split/image1218.o (.data); - build/assets/images/split/image1219.o (.data); - build/assets/images/split/image1220.o (.data); - build/assets/images/split/image1221.o (.data); - build/assets/images/split/image1222.o (.data); - build/assets/images/split/image1223.o (.data); - build/assets/images/split/image1224.o (.data); - build/assets/images/split/image1225.o (.data); - build/assets/images/split/image1226.o (.data); - build/assets/images/split/image1227.o (.data); - build/assets/images/split/image1228.o (.data); - build/assets/images/split/image1229.o (.data); - build/assets/images/split/image1230.o (.data); - build/assets/images/split/image1231.o (.data); - build/assets/images/split/image1232.o (.data); - build/assets/images/split/image1233.o (.data); - build/assets/images/split/image1234.o (.data); - build/assets/images/split/image1235.o (.data); - build/assets/images/split/image1236.o (.data); - build/assets/images/split/image1237.o (.data); - build/assets/images/split/image1238.o (.data); - build/assets/images/split/image1239.o (.data); - build/assets/images/split/image1240.o (.data); - build/assets/images/split/image1241.o (.data); - build/assets/images/split/image1242.o (.data); - build/assets/images/split/image1243.o (.data); - build/assets/images/split/image1244.o (.data); - build/assets/images/split/image1245.o (.data); - build/assets/images/split/image1246.o (.data); - build/assets/images/split/image1247.o (.data); - build/assets/images/split/image1248.o (.data); - build/assets/images/split/image1249.o (.data); - build/assets/images/split/image1250.o (.data); - build/assets/images/split/image1251.o (.data); - build/assets/images/split/image1252.o (.data); - build/assets/images/split/image1253.o (.data); - build/assets/images/split/image1254.o (.data); - build/assets/images/split/image1255.o (.data); - build/assets/images/split/image1256.o (.data); - build/assets/images/split/image1257.o (.data); - build/assets/images/split/image1258.o (.data); - build/assets/images/split/image1259.o (.data); - build/assets/images/split/image1260.o (.data); - build/assets/images/split/image1261.o (.data); - build/assets/images/split/image1262.o (.data); - build/assets/images/split/image1263.o (.data); - build/assets/images/split/image1264.o (.data); - build/assets/images/split/image1265.o (.data); - build/assets/images/split/image1266.o (.data); - build/assets/images/split/image1267.o (.data); - build/assets/images/split/image1268.o (.data); - build/assets/images/split/image1269.o (.data); - build/assets/images/split/image1270.o (.data); - build/assets/images/split/image1271.o (.data); - build/assets/images/split/image1272.o (.data); - build/assets/images/split/image1273.o (.data); - build/assets/images/split/image1274.o (.data); - build/assets/images/split/image1275.o (.data); - build/assets/images/split/image1276.o (.data); - build/assets/images/split/image1277.o (.data); - build/assets/images/split/image1278.o (.data); - build/assets/images/split/image1279.o (.data); - build/assets/images/split/image1280.o (.data); - build/assets/images/split/image1281.o (.data); - build/assets/images/split/image1282.o (.data); - build/assets/images/split/image1283.o (.data); - build/assets/images/split/image1284.o (.data); - build/assets/images/split/image1285.o (.data); - build/assets/images/split/image1286.o (.data); - build/assets/images/split/image1287.o (.data); - build/assets/images/split/image1288.o (.data); - build/assets/images/split/image1289.o (.data); - build/assets/images/split/image1290.o (.data); - build/assets/images/split/image1291.o (.data); - build/assets/images/split/image1292.o (.data); - build/assets/images/split/image1293.o (.data); - build/assets/images/split/image1294.o (.data); - build/assets/images/split/image1295.o (.data); - build/assets/images/split/image1296.o (.data); - build/assets/images/split/image1297.o (.data); - build/assets/images/split/image1298.o (.data); - build/assets/images/split/image1299.o (.data); - build/assets/images/split/image1300.o (.data); - build/assets/images/split/image1301.o (.data); - build/assets/images/split/image1302.o (.data); - build/assets/images/split/image1303.o (.data); - build/assets/images/split/image1304.o (.data); - build/assets/images/split/image1305.o (.data); - build/assets/images/split/image1306.o (.data); - build/assets/images/split/image1307.o (.data); - build/assets/images/split/image1308.o (.data); - build/assets/images/split/image1309.o (.data); - build/assets/images/split/image1310.o (.data); - build/assets/images/split/image1311.o (.data); - build/assets/images/split/image1312.o (.data); - build/assets/images/split/image1313.o (.data); - build/assets/images/split/image1314.o (.data); - build/assets/images/split/image1315.o (.data); - build/assets/images/split/image1316.o (.data); - build/assets/images/split/image1317.o (.data); - build/assets/images/split/image1318.o (.data); - build/assets/images/split/image1319.o (.data); - build/assets/images/split/image1320.o (.data); - build/assets/images/split/image1321.o (.data); - build/assets/images/split/image1322.o (.data); - build/assets/images/split/image1323.o (.data); - build/assets/images/split/image1324.o (.data); - build/assets/images/split/image1325.o (.data); - build/assets/images/split/image1326.o (.data); - build/assets/images/split/image1327.o (.data); - build/assets/images/split/image1328.o (.data); - build/assets/images/split/image1329.o (.data); - build/assets/images/split/image1330.o (.data); - build/assets/images/split/image1331.o (.data); - build/assets/images/split/image1332.o (.data); - build/assets/images/split/image1333.o (.data); - build/assets/images/split/image1334.o (.data); - build/assets/images/split/image1335.o (.data); - build/assets/images/split/image1336.o (.data); - build/assets/images/split/image1337.o (.data); - build/assets/images/split/image1338.o (.data); - build/assets/images/split/image1339.o (.data); - build/assets/images/split/image1340.o (.data); - build/assets/images/split/image1341.o (.data); - build/assets/images/split/image1342.o (.data); - build/assets/images/split/image1343.o (.data); - build/assets/images/split/image1344.o (.data); - build/assets/images/split/image1345.o (.data); - build/assets/images/split/image1346.o (.data); - build/assets/images/split/image1347.o (.data); - build/assets/images/split/image1348.o (.data); - build/assets/images/split/image1349.o (.data); - build/assets/images/split/image1350.o (.data); - build/assets/images/split/image1351.o (.data); - build/assets/images/split/image1352.o (.data); - build/assets/images/split/image1353.o (.data); - build/assets/images/split/image1354.o (.data); - build/assets/images/split/image1355.o (.data); - build/assets/images/split/image1356.o (.data); - build/assets/images/split/image1357.o (.data); - build/assets/images/split/image1358.o (.data); - build/assets/images/split/image1359.o (.data); - build/assets/images/split/image1360.o (.data); - build/assets/images/split/image1361.o (.data); - build/assets/images/split/image1362.o (.data); - build/assets/images/split/image1363.o (.data); - build/assets/images/split/image1364.o (.data); - build/assets/images/split/image1365.o (.data); - build/assets/images/split/image1366.o (.data); - build/assets/images/split/image1367.o (.data); - build/assets/images/split/image1368.o (.data); - build/assets/images/split/image1369.o (.data); - build/assets/images/split/image1370.o (.data); - build/assets/images/split/image1371.o (.data); - build/assets/images/split/image1372.o (.data); - build/assets/images/split/image1373.o (.data); - build/assets/images/split/image1374.o (.data); - build/assets/images/split/image1375.o (.data); - build/assets/images/split/image1376.o (.data); - build/assets/images/split/image1377.o (.data); - build/assets/images/split/image1378.o (.data); - build/assets/images/split/image1379.o (.data); - build/assets/images/split/image1380.o (.data); - build/assets/images/split/image1381.o (.data); - build/assets/images/split/image1382.o (.data); - build/assets/images/split/image1383.o (.data); - build/assets/images/split/image1384.o (.data); - build/assets/images/split/image1385.o (.data); - build/assets/images/split/image1386.o (.data); - build/assets/images/split/image1387.o (.data); - build/assets/images/split/image1388.o (.data); - build/assets/images/split/image1389.o (.data); - build/assets/images/split/image1390.o (.data); - build/assets/images/split/image1391.o (.data); - build/assets/images/split/image1392.o (.data); - build/assets/images/split/image1393.o (.data); - build/assets/images/split/image1394.o (.data); - build/assets/images/split/image1395.o (.data); - build/assets/images/split/image1396.o (.data); - build/assets/images/split/image1397.o (.data); - build/assets/images/split/image1398.o (.data); - build/assets/images/split/image1399.o (.data); - build/assets/images/split/image1400.o (.data); - build/assets/images/split/image1401.o (.data); - build/assets/images/split/image1402.o (.data); - build/assets/images/split/image1403.o (.data); - build/assets/images/split/image1404.o (.data); - build/assets/images/split/image1405.o (.data); - build/assets/images/split/image1406.o (.data); - build/assets/images/split/image1407.o (.data); - build/assets/images/split/image1408.o (.data); - build/assets/images/split/image1409.o (.data); - build/assets/images/split/image1410.o (.data); - build/assets/images/split/image1411.o (.data); - build/assets/images/split/image1412.o (.data); - build/assets/images/split/image1413.o (.data); - build/assets/images/split/image1414.o (.data); - build/assets/images/split/image1415.o (.data); - build/assets/images/split/image1416.o (.data); - build/assets/images/split/image1417.o (.data); - build/assets/images/split/image1418.o (.data); - build/assets/images/split/image1419.o (.data); - build/assets/images/split/image1420.o (.data); - build/assets/images/split/image1421.o (.data); - build/assets/images/split/image1422.o (.data); - build/assets/images/split/image1423.o (.data); - build/assets/images/split/image1424.o (.data); - build/assets/images/split/image1425.o (.data); - build/assets/images/split/image1426.o (.data); - build/assets/images/split/image1427.o (.data); - build/assets/images/split/image1428.o (.data); - build/assets/images/split/image1429.o (.data); - build/assets/images/split/image1430.o (.data); - build/assets/images/split/image1431.o (.data); - build/assets/images/split/image1432.o (.data); - build/assets/images/split/image1433.o (.data); - build/assets/images/split/image1434.o (.data); - build/assets/images/split/image1435.o (.data); - build/assets/images/split/image1436.o (.data); - build/assets/images/split/image1437.o (.data); - build/assets/images/split/image1438.o (.data); - build/assets/images/split/image1439.o (.data); - build/assets/images/split/image1440.o (.data); - build/assets/images/split/image1441.o (.data); - build/assets/images/split/image1442.o (.data); - build/assets/images/split/image1443.o (.data); - build/assets/images/split/image1444.o (.data); - build/assets/images/split/image1445.o (.data); - build/assets/images/split/image1446.o (.data); - build/assets/images/split/image1447.o (.data); - build/assets/images/split/image1448.o (.data); - build/assets/images/split/image1449.o (.data); - build/assets/images/split/image1450.o (.data); - build/assets/images/split/image1451.o (.data); - build/assets/images/split/image1452.o (.data); - build/assets/images/split/image1453.o (.data); - build/assets/images/split/image1454.o (.data); - build/assets/images/split/image1455.o (.data); - build/assets/images/split/image1456.o (.data); - build/assets/images/split/image1457.o (.data); - build/assets/images/split/image1458.o (.data); - build/assets/images/split/image1459.o (.data); - build/assets/images/split/image1460.o (.data); - build/assets/images/split/image1461.o (.data); - build/assets/images/split/image1462.o (.data); - build/assets/images/split/image1463.o (.data); - build/assets/images/split/image1464.o (.data); - build/assets/images/split/image1465.o (.data); - build/assets/images/split/image1466.o (.data); - build/assets/images/split/image1467.o (.data); - build/assets/images/split/image1468.o (.data); - build/assets/images/split/image1469.o (.data); - build/assets/images/split/image1470.o (.data); - build/assets/images/split/image1471.o (.data); - build/assets/images/split/image1472.o (.data); - build/assets/images/split/image1473.o (.data); - build/assets/images/split/image1474.o (.data); - build/assets/images/split/image1475.o (.data); - build/assets/images/split/image1476.o (.data); - build/assets/images/split/image1477.o (.data); - build/assets/images/split/image1478.o (.data); - build/assets/images/split/image1479.o (.data); - build/assets/images/split/image1480.o (.data); - build/assets/images/split/image1481.o (.data); - build/assets/images/split/image1482.o (.data); - build/assets/images/split/image1483.o (.data); - build/assets/images/split/image1484.o (.data); - build/assets/images/split/image1485.o (.data); - build/assets/images/split/image1486.o (.data); - build/assets/images/split/image1487.o (.data); - build/assets/images/split/image1488.o (.data); - build/assets/images/split/image1489.o (.data); - build/assets/images/split/image1490.o (.data); - build/assets/images/split/image1491.o (.data); - build/assets/images/split/image1492.o (.data); - build/assets/images/split/image1493.o (.data); - build/assets/images/split/image1494.o (.data); - build/assets/images/split/image1495.o (.data); - build/assets/images/split/image1496.o (.data); - build/assets/images/split/image1497.o (.data); - build/assets/images/split/image1498.o (.data); - build/assets/images/split/image1499.o (.data); - build/assets/images/split/image1500.o (.data); - build/assets/images/split/image1501.o (.data); - build/assets/images/split/image1502.o (.data); - build/assets/images/split/image1503.o (.data); - build/assets/images/split/image1504.o (.data); - build/assets/images/split/image1505.o (.data); - build/assets/images/split/image1506.o (.data); - build/assets/images/split/image1507.o (.data); - build/assets/images/split/image1508.o (.data); - build/assets/images/split/image1509.o (.data); - build/assets/images/split/image1510.o (.data); - build/assets/images/split/image1511.o (.data); - build/assets/images/split/image1512.o (.data); - build/assets/images/split/image1513.o (.data); - build/assets/images/split/image1514.o (.data); - build/assets/images/split/image1515.o (.data); - build/assets/images/split/image1516.o (.data); - build/assets/images/split/image1517.o (.data); - build/assets/images/split/image1518.o (.data); - build/assets/images/split/image1519.o (.data); - build/assets/images/split/image1520.o (.data); - build/assets/images/split/image1521.o (.data); - build/assets/images/split/image1522.o (.data); - build/assets/images/split/image1523.o (.data); - build/assets/images/split/image1524.o (.data); - build/assets/images/split/image1525.o (.data); - build/assets/images/split/image1526.o (.data); - build/assets/images/split/image1527.o (.data); - build/assets/images/split/image1528.o (.data); - build/assets/images/split/image1529.o (.data); - build/assets/images/split/image1530.o (.data); - build/assets/images/split/image1531.o (.data); - build/assets/images/split/image1532.o (.data); - build/assets/images/split/image1533.o (.data); - build/assets/images/split/image1534.o (.data); - build/assets/images/split/image1535.o (.data); - build/assets/images/split/image1536.o (.data); - build/assets/images/split/image1537.o (.data); - build/assets/images/split/image1538.o (.data); - build/assets/images/split/image1539.o (.data); - build/assets/images/split/image1540.o (.data); - build/assets/images/split/image1541.o (.data); - build/assets/images/split/image1542.o (.data); - build/assets/images/split/image1543.o (.data); - build/assets/images/split/image1544.o (.data); - build/assets/images/split/image1545.o (.data); - build/assets/images/split/image1546.o (.data); - build/assets/images/split/image1547.o (.data); - build/assets/images/split/image1548.o (.data); - build/assets/images/split/image1549.o (.data); - build/assets/images/split/image1550.o (.data); - build/assets/images/split/image1551.o (.data); - build/assets/images/split/image1552.o (.data); - build/assets/images/split/image1553.o (.data); - build/assets/images/split/image1554.o (.data); - build/assets/images/split/image1555.o (.data); - build/assets/images/split/image1556.o (.data); - build/assets/images/split/image1557.o (.data); - build/assets/images/split/image1558.o (.data); - build/assets/images/split/image1559.o (.data); - build/assets/images/split/image1560.o (.data); - build/assets/images/split/image1561.o (.data); - build/assets/images/split/image1562.o (.data); - build/assets/images/split/image1563.o (.data); - build/assets/images/split/image1564.o (.data); - build/assets/images/split/image1565.o (.data); - build/assets/images/split/image1566.o (.data); - build/assets/images/split/image1567.o (.data); - build/assets/images/split/image1568.o (.data); - build/assets/images/split/image1569.o (.data); - build/assets/images/split/image1570.o (.data); - build/assets/images/split/image1571.o (.data); - build/assets/images/split/image1572.o (.data); - build/assets/images/split/image1573.o (.data); - build/assets/images/split/image1574.o (.data); - build/assets/images/split/image1575.o (.data); - build/assets/images/split/image1576.o (.data); - build/assets/images/split/image1577.o (.data); - build/assets/images/split/image1578.o (.data); - build/assets/images/split/image1579.o (.data); - build/assets/images/split/image1580.o (.data); - build/assets/images/split/image1581.o (.data); - build/assets/images/split/image1582.o (.data); - build/assets/images/split/image1583.o (.data); - build/assets/images/split/image1584.o (.data); - build/assets/images/split/image1585.o (.data); - build/assets/images/split/image1586.o (.data); - build/assets/images/split/image1587.o (.data); - build/assets/images/split/image1588.o (.data); - build/assets/images/split/image1589.o (.data); - build/assets/images/split/image1590.o (.data); - build/assets/images/split/image1591.o (.data); - build/assets/images/split/image1592.o (.data); - build/assets/images/split/image1593.o (.data); - build/assets/images/split/image1594.o (.data); - build/assets/images/split/image1595.o (.data); - build/assets/images/split/image1596.o (.data); - build/assets/images/split/image1597.o (.data); - build/assets/images/split/image1598.o (.data); - build/assets/images/split/image1599.o (.data); - build/assets/images/split/image1600.o (.data); - build/assets/images/split/image1601.o (.data); - build/assets/images/split/image1602.o (.data); - build/assets/images/split/image1603.o (.data); - build/assets/images/split/image1604.o (.data); - build/assets/images/split/image1605.o (.data); - build/assets/images/split/image1606.o (.data); - build/assets/images/split/image1607.o (.data); - build/assets/images/split/image1608.o (.data); - build/assets/images/split/image1609.o (.data); - build/assets/images/split/image1610.o (.data); - build/assets/images/split/image1611.o (.data); - build/assets/images/split/image1612.o (.data); - build/assets/images/split/image1613.o (.data); - build/assets/images/split/image1614.o (.data); - build/assets/images/split/image1615.o (.data); - build/assets/images/split/image1616.o (.data); - build/assets/images/split/image1617.o (.data); - build/assets/images/split/image1618.o (.data); - build/assets/images/split/image1619.o (.data); - build/assets/images/split/image1620.o (.data); - build/assets/images/split/image1621.o (.data); - build/assets/images/split/image1622.o (.data); - build/assets/images/split/image1623.o (.data); - build/assets/images/split/image1624.o (.data); - build/assets/images/split/image1625.o (.data); - build/assets/images/split/image1626.o (.data); - build/assets/images/split/image1627.o (.data); - build/assets/images/split/image1628.o (.data); - build/assets/images/split/image1629.o (.data); - build/assets/images/split/image1630.o (.data); - build/assets/images/split/image1631.o (.data); - build/assets/images/split/image1632.o (.data); - build/assets/images/split/image1633.o (.data); - build/assets/images/split/image1634.o (.data); - build/assets/images/split/image1635.o (.data); - build/assets/images/split/image1636.o (.data); - build/assets/images/split/image1637.o (.data); - build/assets/images/split/image1638.o (.data); - build/assets/images/split/image1639.o (.data); - build/assets/images/split/image1640.o (.data); - build/assets/images/split/image1641.o (.data); - build/assets/images/split/image1642.o (.data); - build/assets/images/split/image1643.o (.data); - build/assets/images/split/image1644.o (.data); - build/assets/images/split/image1645.o (.data); - build/assets/images/split/image1646.o (.data); - build/assets/images/split/image1647.o (.data); - build/assets/images/split/image1648.o (.data); - build/assets/images/split/image1649.o (.data); - build/assets/images/split/image1650.o (.data); - build/assets/images/split/image1651.o (.data); - build/assets/images/split/image1652.o (.data); - build/assets/images/split/image1653.o (.data); - build/assets/images/split/image1654.o (.data); - build/assets/images/split/image1655.o (.data); - build/assets/images/split/image1656.o (.data); - build/assets/images/split/image1657.o (.data); - build/assets/images/split/image1658.o (.data); - build/assets/images/split/image1659.o (.data); - build/assets/images/split/image1660.o (.data); - build/assets/images/split/image1661.o (.data); - build/assets/images/split/image1662.o (.data); - build/assets/images/split/image1663.o (.data); - build/assets/images/split/image1664.o (.data); - build/assets/images/split/image1665.o (.data); - build/assets/images/split/image1666.o (.data); - build/assets/images/split/image1667.o (.data); - build/assets/images/split/image1668.o (.data); - build/assets/images/split/image1669.o (.data); - build/assets/images/split/image1670.o (.data); - build/assets/images/split/image1671.o (.data); - build/assets/images/split/image1672.o (.data); - build/assets/images/split/image1673.o (.data); - build/assets/images/split/image1674.o (.data); - build/assets/images/split/image1675.o (.data); - build/assets/images/split/image1676.o (.data); - build/assets/images/split/image1677.o (.data); - build/assets/images/split/image1678.o (.data); - build/assets/images/split/image1679.o (.data); - build/assets/images/split/image1680.o (.data); - build/assets/images/split/image1681.o (.data); - build/assets/images/split/image1682.o (.data); - build/assets/images/split/image1683.o (.data); - build/assets/images/split/image1684.o (.data); - build/assets/images/split/image1685.o (.data); - build/assets/images/split/image1686.o (.data); - build/assets/images/split/image1687.o (.data); - build/assets/images/split/image1688.o (.data); - build/assets/images/split/image1689.o (.data); - build/assets/images/split/image1690.o (.data); - build/assets/images/split/image1691.o (.data); - build/assets/images/split/image1692.o (.data); - build/assets/images/split/image1693.o (.data); - build/assets/images/split/image1694.o (.data); - build/assets/images/split/image1695.o (.data); - build/assets/images/split/image1696.o (.data); - build/assets/images/split/image1697.o (.data); - build/assets/images/split/image1698.o (.data); - build/assets/images/split/image1699.o (.data); - build/assets/images/split/image1700.o (.data); - build/assets/images/split/image1701.o (.data); - build/assets/images/split/image1702.o (.data); - build/assets/images/split/image1703.o (.data); - build/assets/images/split/image1704.o (.data); - build/assets/images/split/image1705.o (.data); - build/assets/images/split/image1706.o (.data); - build/assets/images/split/image1707.o (.data); - build/assets/images/split/image1708.o (.data); - build/assets/images/split/image1709.o (.data); - build/assets/images/split/image1710.o (.data); - build/assets/images/split/image1711.o (.data); - build/assets/images/split/image1712.o (.data); - build/assets/images/split/image1713.o (.data); - build/assets/images/split/image1714.o (.data); - build/assets/images/split/image1715.o (.data); - build/assets/images/split/image1716.o (.data); - build/assets/images/split/image1717.o (.data); - build/assets/images/split/image1718.o (.data); - build/assets/images/split/image1719.o (.data); - build/assets/images/split/image1720.o (.data); - build/assets/images/split/image1721.o (.data); - build/assets/images/split/image1722.o (.data); - build/assets/images/split/image1723.o (.data); - build/assets/images/split/image1724.o (.data); - build/assets/images/split/image1725.o (.data); - build/assets/images/split/image1726.o (.data); - build/assets/images/split/image1727.o (.data); - build/assets/images/split/image1728.o (.data); - build/assets/images/split/image1729.o (.data); - build/assets/images/split/image1730.o (.data); - build/assets/images/split/image1731.o (.data); - build/assets/images/split/image1732.o (.data); - build/assets/images/split/image1733.o (.data); - build/assets/images/split/image1734.o (.data); - build/assets/images/split/image1735.o (.data); - build/assets/images/split/image1736.o (.data); - build/assets/images/split/image1737.o (.data); - build/assets/images/split/image1738.o (.data); - build/assets/images/split/image1739.o (.data); - build/assets/images/split/image1740.o (.data); - build/assets/images/split/image1741.o (.data); - build/assets/images/split/image1742.o (.data); - build/assets/images/split/image1743.o (.data); - build/assets/images/split/image1744.o (.data); - build/assets/images/split/image1745.o (.data); - build/assets/images/split/image1746.o (.data); - build/assets/images/split/image1747.o (.data); - build/assets/images/split/image1748.o (.data); - build/assets/images/split/image1749.o (.data); - build/assets/images/split/image1750.o (.data); - build/assets/images/split/image1751.o (.data); - build/assets/images/split/image1752.o (.data); - build/assets/images/split/image1753.o (.data); - build/assets/images/split/image1754.o (.data); - build/assets/images/split/image1755.o (.data); - build/assets/images/split/image1756.o (.data); - build/assets/images/split/image1757.o (.data); - build/assets/images/split/image1758.o (.data); - build/assets/images/split/image1759.o (.data); - build/assets/images/split/image1760.o (.data); - build/assets/images/split/image1761.o (.data); - build/assets/images/split/image1762.o (.data); - build/assets/images/split/image1763.o (.data); - build/assets/images/split/image1764.o (.data); - build/assets/images/split/image1765.o (.data); - build/assets/images/split/image1766.o (.data); - build/assets/images/split/image1767.o (.data); - build/assets/images/split/image1768.o (.data); - build/assets/images/split/image1769.o (.data); - build/assets/images/split/image1770.o (.data); - build/assets/images/split/image1771.o (.data); - build/assets/images/split/image1772.o (.data); - build/assets/images/split/image1773.o (.data); - build/assets/images/split/image1774.o (.data); - build/assets/images/split/image1775.o (.data); - build/assets/images/split/image1776.o (.data); - build/assets/images/split/image1777.o (.data); - build/assets/images/split/image1778.o (.data); - build/assets/images/split/image1779.o (.data); - build/assets/images/split/image1780.o (.data); - build/assets/images/split/image1781.o (.data); - build/assets/images/split/image1782.o (.data); - build/assets/images/split/image1783.o (.data); - build/assets/images/split/image1784.o (.data); - build/assets/images/split/image1785.o (.data); - build/assets/images/split/image1786.o (.data); - build/assets/images/split/image1787.o (.data); - build/assets/images/split/image1788.o (.data); - build/assets/images/split/image1789.o (.data); - build/assets/images/split/image1790.o (.data); - build/assets/images/split/image1791.o (.data); - build/assets/images/split/image1792.o (.data); - build/assets/images/split/image1793.o (.data); - build/assets/images/split/image1794.o (.data); - build/assets/images/split/image1795.o (.data); - build/assets/images/split/image1796.o (.data); - build/assets/images/split/image1797.o (.data); - build/assets/images/split/image1798.o (.data); - build/assets/images/split/image1799.o (.data); - build/assets/images/split/image1800.o (.data); - build/assets/images/split/image1801.o (.data); - build/assets/images/split/image1802.o (.data); - build/assets/images/split/image1803.o (.data); - build/assets/images/split/image1804.o (.data); - build/assets/images/split/image1805.o (.data); - build/assets/images/split/image1806.o (.data); - build/assets/images/split/image1807.o (.data); - build/assets/images/split/image1808.o (.data); - build/assets/images/split/image1809.o (.data); - build/assets/images/split/image1810.o (.data); - build/assets/images/split/image1811.o (.data); - build/assets/images/split/image1812.o (.data); - build/assets/images/split/image1813.o (.data); - build/assets/images/split/image1814.o (.data); - build/assets/images/split/image1815.o (.data); - build/assets/images/split/image1816.o (.data); - build/assets/images/split/image1817.o (.data); - build/assets/images/split/image1818.o (.data); - build/assets/images/split/image1819.o (.data); - build/assets/images/split/image1820.o (.data); - build/assets/images/split/image1821.o (.data); - build/assets/images/split/image1822.o (.data); - build/assets/images/split/image1823.o (.data); - build/assets/images/split/image1824.o (.data); - build/assets/images/split/image1825.o (.data); - build/assets/images/split/image1826.o (.data); - build/assets/images/split/image1827.o (.data); - build/assets/images/split/image1828.o (.data); - build/assets/images/split/image1829.o (.data); - build/assets/images/split/image1830.o (.data); - build/assets/images/split/image1831.o (.data); - build/assets/images/split/image1832.o (.data); - build/assets/images/split/image1833.o (.data); - build/assets/images/split/image1834.o (.data); - build/assets/images/split/image1835.o (.data); - build/assets/images/split/image1836.o (.data); - build/assets/images/split/image1837.o (.data); - build/assets/images/split/image1838.o (.data); - build/assets/images/split/image1839.o (.data); - build/assets/images/split/image1840.o (.data); - build/assets/images/split/image1841.o (.data); - build/assets/images/split/image1842.o (.data); - build/assets/images/split/image1843.o (.data); - build/assets/images/split/image1844.o (.data); - build/assets/images/split/image1845.o (.data); - build/assets/images/split/image1846.o (.data); - build/assets/images/split/image1847.o (.data); - build/assets/images/split/image1848.o (.data); - build/assets/images/split/image1849.o (.data); - build/assets/images/split/image1850.o (.data); - build/assets/images/split/image1851.o (.data); - build/assets/images/split/image1852.o (.data); - build/assets/images/split/image1853.o (.data); - build/assets/images/split/image1854.o (.data); - build/assets/images/split/image1855.o (.data); - build/assets/images/split/image1856.o (.data); - build/assets/images/split/image1857.o (.data); - build/assets/images/split/image1858.o (.data); - build/assets/images/split/image1859.o (.data); - build/assets/images/split/image1860.o (.data); - build/assets/images/split/image1861.o (.data); - build/assets/images/split/image1862.o (.data); - build/assets/images/split/image1863.o (.data); - build/assets/images/split/image1864.o (.data); - build/assets/images/split/image1865.o (.data); - build/assets/images/split/image1866.o (.data); - build/assets/images/split/image1867.o (.data); - build/assets/images/split/image1868.o (.data); - build/assets/images/split/image1869.o (.data); - build/assets/images/split/image1870.o (.data); - build/assets/images/split/image1871.o (.data); - build/assets/images/split/image1872.o (.data); - build/assets/images/split/image1873.o (.data); - build/assets/images/split/image1874.o (.data); - build/assets/images/split/image1875.o (.data); - build/assets/images/split/image1876.o (.data); - build/assets/images/split/image1877.o (.data); - build/assets/images/split/image1878.o (.data); - build/assets/images/split/image1879.o (.data); - build/assets/images/split/image1880.o (.data); - build/assets/images/split/image1881.o (.data); - build/assets/images/split/image1882.o (.data); - build/assets/images/split/image1883.o (.data); - build/assets/images/split/image1884.o (.data); - build/assets/images/split/image1885.o (.data); - build/assets/images/split/image1886.o (.data); - build/assets/images/split/image1887.o (.data); - build/assets/images/split/image1888.o (.data); - build/assets/images/split/image1889.o (.data); - build/assets/images/split/image1890.o (.data); - build/assets/images/split/image1891.o (.data); - build/assets/images/split/image1892.o (.data); - build/assets/images/split/image1893.o (.data); - build/assets/images/split/image1894.o (.data); - build/assets/images/split/image1895.o (.data); - build/assets/images/split/image1896.o (.data); - build/assets/images/split/image1897.o (.data); - build/assets/images/split/image1898.o (.data); - build/assets/images/split/image1899.o (.data); - build/assets/images/split/image1900.o (.data); - build/assets/images/split/image1901.o (.data); - build/assets/images/split/image1902.o (.data); - build/assets/images/split/image1903.o (.data); - build/assets/images/split/image1904.o (.data); - build/assets/images/split/image1905.o (.data); - build/assets/images/split/image1906.o (.data); - build/assets/images/split/image1907.o (.data); - build/assets/images/split/image1908.o (.data); - build/assets/images/split/image1909.o (.data); - build/assets/images/split/image1910.o (.data); - build/assets/images/split/image1911.o (.data); - build/assets/images/split/image1912.o (.data); - build/assets/images/split/image1913.o (.data); - build/assets/images/split/image1914.o (.data); - build/assets/images/split/image1915.o (.data); - build/assets/images/split/image1916.o (.data); - build/assets/images/split/image1917.o (.data); - build/assets/images/split/image1918.o (.data); - build/assets/images/split/image1919.o (.data); - build/assets/images/split/image1920.o (.data); - build/assets/images/split/image1921.o (.data); - build/assets/images/split/image1922.o (.data); - build/assets/images/split/image1923.o (.data); - build/assets/images/split/image1924.o (.data); - build/assets/images/split/image1925.o (.data); - build/assets/images/split/image1926.o (.data); - build/assets/images/split/image1927.o (.data); - build/assets/images/split/image1928.o (.data); - build/assets/images/split/image1929.o (.data); - build/assets/images/split/image1930.o (.data); - build/assets/images/split/image1931.o (.data); - build/assets/images/split/image1932.o (.data); - build/assets/images/split/image1933.o (.data); - build/assets/images/split/image1934.o (.data); - build/assets/images/split/image1935.o (.data); - build/assets/images/split/image1936.o (.data); - build/assets/images/split/image1937.o (.data); - build/assets/images/split/image1938.o (.data); - build/assets/images/split/image1939.o (.data); - build/assets/images/split/image1940.o (.data); - build/assets/images/split/image1941.o (.data); - build/assets/images/split/image1942.o (.data); - build/assets/images/split/image1943.o (.data); - build/assets/images/split/image1944.o (.data); - build/assets/images/split/image1945.o (.data); - build/assets/images/split/image1946.o (.data); - build/assets/images/split/image1947.o (.data); - build/assets/images/split/image1948.o (.data); - build/assets/images/split/image1949.o (.data); - build/assets/images/split/image1950.o (.data); - build/assets/images/split/image1951.o (.data); - build/assets/images/split/image1952.o (.data); - build/assets/images/split/image1953.o (.data); - build/assets/images/split/image1954.o (.data); - build/assets/images/split/image1955.o (.data); - build/assets/images/split/image1956.o (.data); - build/assets/images/split/image1957.o (.data); - build/assets/images/split/image1958.o (.data); - build/assets/images/split/image1959.o (.data); - build/assets/images/split/image1960.o (.data); - build/assets/images/split/image1961.o (.data); - build/assets/images/split/image1962.o (.data); - build/assets/images/split/image1963.o (.data); - build/assets/images/split/image1964.o (.data); - build/assets/images/split/image1965.o (.data); - build/assets/images/split/image1966.o (.data); - build/assets/images/split/image1967.o (.data); - build/assets/images/split/image1968.o (.data); - build/assets/images/split/image1969.o (.data); - build/assets/images/split/image1970.o (.data); - build/assets/images/split/image1971.o (.data); - build/assets/images/split/image1972.o (.data); - build/assets/images/split/image1973.o (.data); - build/assets/images/split/image1974.o (.data); - build/assets/images/split/image1975.o (.data); - build/assets/images/split/image1976.o (.data); - build/assets/images/split/image1977.o (.data); - build/assets/images/split/image1978.o (.data); - build/assets/images/split/image1979.o (.data); - build/assets/images/split/image1980.o (.data); - build/assets/images/split/image1981.o (.data); - build/assets/images/split/image1982.o (.data); - build/assets/images/split/image1983.o (.data); - build/assets/images/split/image1984.o (.data); - build/assets/images/split/image1985.o (.data); - build/assets/images/split/image1986.o (.data); - build/assets/images/split/image1987.o (.data); - build/assets/images/split/image1988.o (.data); - build/assets/images/split/image1989.o (.data); - build/assets/images/split/image1990.o (.data); - build/assets/images/split/image1991.o (.data); - build/assets/images/split/image1992.o (.data); - build/assets/images/split/image1993.o (.data); - build/assets/images/split/image1994.o (.data); - build/assets/images/split/image1995.o (.data); - build/assets/images/split/image1996.o (.data); - build/assets/images/split/image1997.o (.data); - build/assets/images/split/image1998.o (.data); - build/assets/images/split/image1999.o (.data); - build/assets/images/split/image2000.o (.data); - build/assets/images/split/image2001.o (.data); - build/assets/images/split/image2002.o (.data); - build/assets/images/split/image2003.o (.data); - build/assets/images/split/image2004.o (.data); - build/assets/images/split/image2005.o (.data); - build/assets/images/split/image2006.o (.data); - build/assets/images/split/image2007.o (.data); - build/assets/images/split/image2008.o (.data); - build/assets/images/split/image2009.o (.data); - build/assets/images/split/image2010.o (.data); - build/assets/images/split/image2011.o (.data); - build/assets/images/split/image2012.o (.data); - build/assets/images/split/image2013.o (.data); - build/assets/images/split/image2014.o (.data); - build/assets/images/split/image2015.o (.data); - build/assets/images/split/image2016.o (.data); - build/assets/images/split/image2017.o (.data); - build/assets/images/split/image2018.o (.data); - build/assets/images/split/image2019.o (.data); - build/assets/images/split/image2020.o (.data); - build/assets/images/split/image2021.o (.data); - build/assets/images/split/image2022.o (.data); - build/assets/images/split/image2023.o (.data); - build/assets/images/split/image2024.o (.data); - build/assets/images/split/image2025.o (.data); - build/assets/images/split/image2026.o (.data); - build/assets/images/split/image2027.o (.data); - build/assets/images/split/image2028.o (.data); - build/assets/images/split/image2029.o (.data); - build/assets/images/split/image2030.o (.data); - build/assets/images/split/image2031.o (.data); - build/assets/images/split/image2032.o (.data); - build/assets/images/split/image2033.o (.data); - build/assets/images/split/image2034.o (.data); - build/assets/images/split/image2035.o (.data); - build/assets/images/split/image2036.o (.data); - build/assets/images/split/image2037.o (.data); - build/assets/images/split/image2038.o (.data); - build/assets/images/split/image2039.o (.data); - build/assets/images/split/image2040.o (.data); - build/assets/images/split/image2041.o (.data); - build/assets/images/split/image2042.o (.data); - build/assets/images/split/image2043.o (.data); - build/assets/images/split/image2044.o (.data); - build/assets/images/split/image2045.o (.data); - build/assets/images/split/image2046.o (.data); - build/assets/images/split/image2047.o (.data); - build/assets/images/split/image2048.o (.data); - build/assets/images/split/image2049.o (.data); - build/assets/images/split/image2050.o (.data); - build/assets/images/split/image2051.o (.data); - build/assets/images/split/image2052.o (.data); - build/assets/images/split/image2053.o (.data); - build/assets/images/split/image2054.o (.data); - build/assets/images/split/image2055.o (.data); - build/assets/images/split/image2056.o (.data); - build/assets/images/split/image2057.o (.data); - build/assets/images/split/image2058.o (.data); - build/assets/images/split/image2059.o (.data); - build/assets/images/split/image2060.o (.data); - build/assets/images/split/image2061.o (.data); - build/assets/images/split/image2062.o (.data); - build/assets/images/split/image2063.o (.data); - build/assets/images/split/image2064.o (.data); - build/assets/images/split/image2065.o (.data); - build/assets/images/split/image2066.o (.data); - build/assets/images/split/image2067.o (.data); - build/assets/images/split/image2068.o (.data); - build/assets/images/split/image2069.o (.data); - build/assets/images/split/image2070.o (.data); - build/assets/images/split/image2071.o (.data); - build/assets/images/split/image2072.o (.data); - build/assets/images/split/image2073.o (.data); - build/assets/images/split/image2074.o (.data); - build/assets/images/split/image2075.o (.data); - build/assets/images/split/image2076.o (.data); - build/assets/images/split/image2077.o (.data); - build/assets/images/split/image2078.o (.data); - build/assets/images/split/image2079.o (.data); - build/assets/images/split/image2080.o (.data); - build/assets/images/split/image2081.o (.data); - build/assets/images/split/image2082.o (.data); - build/assets/images/split/image2083.o (.data); - build/assets/images/split/image2084.o (.data); - build/assets/images/split/image2085.o (.data); - build/assets/images/split/image2086.o (.data); - build/assets/images/split/image2087.o (.data); - build/assets/images/split/image2088.o (.data); - build/assets/images/split/image2089.o (.data); - build/assets/images/split/image2090.o (.data); - build/assets/images/split/image2091.o (.data); - build/assets/images/split/image2092.o (.data); - build/assets/images/split/image2093.o (.data); - build/assets/images/split/image2094.o (.data); - build/assets/images/split/image2095.o (.data); - build/assets/images/split/image2096.o (.data); - build/assets/images/split/image2097.o (.data); - build/assets/images/split/image2098.o (.data); - build/assets/images/split/image2099.o (.data); - build/assets/images/split/image2100.o (.data); - build/assets/images/split/image2101.o (.data); - build/assets/images/split/image2102.o (.data); - build/assets/images/split/image2103.o (.data); - build/assets/images/split/image2104.o (.data); - build/assets/images/split/image2105.o (.data); - build/assets/images/split/image2106.o (.data); - build/assets/images/split/image2107.o (.data); - build/assets/images/split/image2108.o (.data); - build/assets/images/split/image2109.o (.data); - build/assets/images/split/image2110.o (.data); - build/assets/images/split/image2111.o (.data); - build/assets/images/split/image2112.o (.data); - build/assets/images/split/image2113.o (.data); - build/assets/images/split/image2114.o (.data); - build/assets/images/split/image2115.o (.data); - build/assets/images/split/image2116.o (.data); - build/assets/images/split/image2117.o (.data); - build/assets/images/split/image2118.o (.data); - build/assets/images/split/image2119.o (.data); - build/assets/images/split/image2120.o (.data); - build/assets/images/split/image2121.o (.data); - build/assets/images/split/image2122.o (.data); - build/assets/images/split/image2123.o (.data); - build/assets/images/split/image2124.o (.data); - build/assets/images/split/image2125.o (.data); - build/assets/images/split/image2126.o (.data); - build/assets/images/split/image2127.o (.data); - build/assets/images/split/image2128.o (.data); - build/assets/images/split/image2129.o (.data); - build/assets/images/split/image2130.o (.data); - build/assets/images/split/image2131.o (.data); - build/assets/images/split/image2132.o (.data); - build/assets/images/split/image2133.o (.data); - build/assets/images/split/image2134.o (.data); - build/assets/images/split/image2135.o (.data); - build/assets/images/split/image2136.o (.data); - build/assets/images/split/image2137.o (.data); - build/assets/images/split/image2138.o (.data); - build/assets/images/split/image2139.o (.data); - build/assets/images/split/image2140.o (.data); - build/assets/images/split/image2141.o (.data); - build/assets/images/split/image2142.o (.data); - build/assets/images/split/image2143.o (.data); - build/assets/images/split/image2144.o (.data); - build/assets/images/split/image2145.o (.data); - build/assets/images/split/image2146.o (.data); - build/assets/images/split/image2147.o (.data); - build/assets/images/split/image2148.o (.data); - build/assets/images/split/image2149.o (.data); - build/assets/images/split/image2150.o (.data); - build/assets/images/split/image2151.o (.data); - build/assets/images/split/image2152.o (.data); - build/assets/images/split/image2153.o (.data); - build/assets/images/split/image2154.o (.data); - build/assets/images/split/image2155.o (.data); - build/assets/images/split/image2156.o (.data); - build/assets/images/split/image2157.o (.data); - build/assets/images/split/image2158.o (.data); - build/assets/images/split/image2159.o (.data); - build/assets/images/split/image2160.o (.data); - build/assets/images/split/image2161.o (.data); - build/assets/images/split/image2162.o (.data); - build/assets/images/split/image2163.o (.data); - build/assets/images/split/image2164.o (.data); - build/assets/images/split/image2165.o (.data); - build/assets/images/split/image2166.o (.data); - build/assets/images/split/image2167.o (.data); - build/assets/images/split/image2168.o (.data); - build/assets/images/split/image2169.o (.data); - build/assets/images/split/image2170.o (.data); - build/assets/images/split/image2171.o (.data); - build/assets/images/split/image2172.o (.data); - build/assets/images/split/image2173.o (.data); - build/assets/images/split/image2174.o (.data); - build/assets/images/split/image2175.o (.data); - build/assets/images/split/image2176.o (.data); - build/assets/images/split/image2177.o (.data); - build/assets/images/split/image2178.o (.data); - build/assets/images/split/image2179.o (.data); - build/assets/images/split/image2180.o (.data); - build/assets/images/split/image2181.o (.data); - build/assets/images/split/image2182.o (.data); - build/assets/images/split/image2183.o (.data); - build/assets/images/split/image2184.o (.data); - build/assets/images/split/image2185.o (.data); - build/assets/images/split/image2186.o (.data); - build/assets/images/split/image2187.o (.data); - build/assets/images/split/image2188.o (.data); - build/assets/images/split/image2189.o (.data); - build/assets/images/split/image2190.o (.data); - build/assets/images/split/image2191.o (.data); - build/assets/images/split/image2192.o (.data); - build/assets/images/split/image2193.o (.data); - build/assets/images/split/image2194.o (.data); - build/assets/images/split/image2195.o (.data); - build/assets/images/split/image2196.o (.data); - build/assets/images/split/image2197.o (.data); - build/assets/images/split/image2198.o (.data); - build/assets/images/split/image2199.o (.data); - build/assets/images/split/image2200.o (.data); - build/assets/images/split/image2201.o (.data); - build/assets/images/split/image2202.o (.data); - build/assets/images/split/image2203.o (.data); - build/assets/images/split/image2204.o (.data); - build/assets/images/split/image2205.o (.data); - build/assets/images/split/image2206.o (.data); - build/assets/images/split/image2207.o (.data); - build/assets/images/split/image2208.o (.data); - build/assets/images/split/image2209.o (.data); - build/assets/images/split/image2210.o (.data); - build/assets/images/split/image2211.o (.data); - build/assets/images/split/image2212.o (.data); - build/assets/images/split/image2213.o (.data); - build/assets/images/split/image2214.o (.data); - build/assets/images/split/image2215.o (.data); - build/assets/images/split/image2216.o (.data); - build/assets/images/split/image2217.o (.data); - build/assets/images/split/image2218.o (.data); - build/assets/images/split/image2219.o (.data); - build/assets/images/split/image2220.o (.data); - build/assets/images/split/image2221.o (.data); - build/assets/images/split/image2222.o (.data); - build/assets/images/split/image2223.o (.data); - build/assets/images/split/image2224.o (.data); - build/assets/images/split/image2225.o (.data); - build/assets/images/split/image2226.o (.data); - build/assets/images/split/image2227.o (.data); - build/assets/images/split/image2228.o (.data); - build/assets/images/split/image2229.o (.data); - build/assets/images/split/image2230.o (.data); - build/assets/images/split/image2231.o (.data); - build/assets/images/split/image2232.o (.data); - build/assets/images/split/image2233.o (.data); - build/assets/images/split/image2234.o (.data); - build/assets/images/split/image2235.o (.data); - build/assets/images/split/image2236.o (.data); - build/assets/images/split/image2237.o (.data); - build/assets/images/split/image2238.o (.data); - build/assets/images/split/image2239.o (.data); - build/assets/images/split/image2240.o (.data); - build/assets/images/split/image2241.o (.data); - build/assets/images/split/image2242.o (.data); - build/assets/images/split/image2243.o (.data); - build/assets/images/split/image2244.o (.data); - build/assets/images/split/image2245.o (.data); - build/assets/images/split/image2246.o (.data); - build/assets/images/split/image2247.o (.data); - build/assets/images/split/image2248.o (.data); - build/assets/images/split/image2249.o (.data); - build/assets/images/split/image2250.o (.data); - build/assets/images/split/image2251.o (.data); - build/assets/images/split/image2252.o (.data); - build/assets/images/split/image2253.o (.data); - build/assets/images/split/image2254.o (.data); - build/assets/images/split/image2255.o (.data); - build/assets/images/split/image2256.o (.data); - build/assets/images/split/image2257.o (.data); - build/assets/images/split/image2258.o (.data); - build/assets/images/split/image2259.o (.data); - build/assets/images/split/image2260.o (.data); - build/assets/images/split/image2261.o (.data); - build/assets/images/split/image2262.o (.data); - build/assets/images/split/image2263.o (.data); - build/assets/images/split/image2264.o (.data); - build/assets/images/split/image2265.o (.data); - build/assets/images/split/image2266.o (.data); - build/assets/images/split/image2267.o (.data); - build/assets/images/split/image2268.o (.data); - build/assets/images/split/image2269.o (.data); - build/assets/images/split/image2270.o (.data); - build/assets/images/split/image2271.o (.data); - build/assets/images/split/image2272.o (.data); - build/assets/images/split/image2273.o (.data); - build/assets/images/split/image2274.o (.data); - build/assets/images/split/image2275.o (.data); - build/assets/images/split/image2276.o (.data); - build/assets/images/split/image2277.o (.data); - build/assets/images/split/image2278.o (.data); - build/assets/images/split/image2279.o (.data); - build/assets/images/split/image2280.o (.data); - build/assets/images/split/image2281.o (.data); - build/assets/images/split/image2282.o (.data); - build/assets/images/split/image2283.o (.data); - build/assets/images/split/image2284.o (.data); - build/assets/images/split/image2285.o (.data); - build/assets/images/split/image2286.o (.data); - build/assets/images/split/image2287.o (.data); - build/assets/images/split/image2288.o (.data); - build/assets/images/split/image2289.o (.data); - build/assets/images/split/image2290.o (.data); - build/assets/images/split/image2291.o (.data); - build/assets/images/split/image2292.o (.data); - build/assets/images/split/image2293.o (.data); - build/assets/images/split/image2294.o (.data); - build/assets/images/split/image2295.o (.data); - build/assets/images/split/image2296.o (.data); - build/assets/images/split/image2297.o (.data); - build/assets/images/split/image2298.o (.data); - build/assets/images/split/image2299.o (.data); - build/assets/images/split/image2300.o (.data); - build/assets/images/split/image2301.o (.data); - build/assets/images/split/image2302.o (.data); - build/assets/images/split/image2303.o (.data); - build/assets/images/split/image2304.o (.data); - build/assets/images/split/image2305.o (.data); - build/assets/images/split/image2306.o (.data); - build/assets/images/split/image2307.o (.data); - build/assets/images/split/image2308.o (.data); - build/assets/images/split/image2309.o (.data); - build/assets/images/split/image2310.o (.data); - build/assets/images/split/image2311.o (.data); - build/assets/images/split/image2312.o (.data); - build/assets/images/split/image2313.o (.data); - build/assets/images/split/image2314.o (.data); - build/assets/images/split/image2315.o (.data); - build/assets/images/split/image2316.o (.data); - build/assets/images/split/image2317.o (.data); - build/assets/images/split/image2318.o (.data); - build/assets/images/split/image2319.o (.data); - build/assets/images/split/image2320.o (.data); - build/assets/images/split/image2321.o (.data); - build/assets/images/split/image2322.o (.data); - build/assets/images/split/image2323.o (.data); - build/assets/images/split/image2324.o (.data); - build/assets/images/split/image2325.o (.data); - build/assets/images/split/image2326.o (.data); - build/assets/images/split/image2327.o (.data); - build/assets/images/split/image2328.o (.data); - build/assets/images/split/image2329.o (.data); - build/assets/images/split/image2330.o (.data); - build/assets/images/split/image2331.o (.data); - build/assets/images/split/image2332.o (.data); - build/assets/images/split/image2333.o (.data); - build/assets/images/split/image2334.o (.data); - build/assets/images/split/image2335.o (.data); - build/assets/images/split/image2336.o (.data); - build/assets/images/split/image2337.o (.data); - build/assets/images/split/image2338.o (.data); - build/assets/images/split/image2339.o (.data); - build/assets/images/split/image2340.o (.data); - build/assets/images/split/image2341.o (.data); - build/assets/images/split/image2342.o (.data); - build/assets/images/split/image2343.o (.data); - build/assets/images/split/image2344.o (.data); - build/assets/images/split/image2345.o (.data); - build/assets/images/split/image2346.o (.data); - build/assets/images/split/image2347.o (.data); - build/assets/images/split/image2348.o (.data); - build/assets/images/split/image2349.o (.data); - build/assets/images/split/image2350.o (.data); - build/assets/images/split/image2351.o (.data); - build/assets/images/split/image2352.o (.data); - build/assets/images/split/image2353.o (.data); - build/assets/images/split/image2354.o (.data); - build/assets/images/split/image2355.o (.data); - build/assets/images/split/image2356.o (.data); - build/assets/images/split/image2357.o (.data); - build/assets/images/split/image2358.o (.data); - build/assets/images/split/image2359.o (.data); - build/assets/images/split/image2360.o (.data); - build/assets/images/split/image2361.o (.data); - build/assets/images/split/image2362.o (.data); - build/assets/images/split/image2363.o (.data); - build/assets/images/split/image2364.o (.data); - build/assets/images/split/image2365.o (.data); - build/assets/images/split/image2366.o (.data); - build/assets/images/split/image2367.o (.data); - build/assets/images/split/image2368.o (.data); - build/assets/images/split/image2369.o (.data); - build/assets/images/split/image2370.o (.data); - build/assets/images/split/image2371.o (.data); - build/assets/images/split/image2372.o (.data); - build/assets/images/split/image2373.o (.data); - build/assets/images/split/image2374.o (.data); - build/assets/images/split/image2375.o (.data); - build/assets/images/split/image2376.o (.data); - build/assets/images/split/image2377.o (.data); - build/assets/images/split/image2378.o (.data); - build/assets/images/split/image2379.o (.data); - build/assets/images/split/image2380.o (.data); - build/assets/images/split/image2381.o (.data); - build/assets/images/split/image2382.o (.data); - build/assets/images/split/image2383.o (.data); - build/assets/images/split/image2384.o (.data); - build/assets/images/split/image2385.o (.data); - build/assets/images/split/image2386.o (.data); - build/assets/images/split/image2387.o (.data); - build/assets/images/split/image2388.o (.data); - build/assets/images/split/image2389.o (.data); - build/assets/images/split/image2390.o (.data); - build/assets/images/split/image2391.o (.data); - build/assets/images/split/image2392.o (.data); - build/assets/images/split/image2393.o (.data); - build/assets/images/split/image2394.o (.data); - build/assets/images/split/image2395.o (.data); - build/assets/images/split/image2396.o (.data); - build/assets/images/split/image2397.o (.data); - build/assets/images/split/image2398.o (.data); - build/assets/images/split/image2399.o (.data); - build/assets/images/split/image2400.o (.data); - build/assets/images/split/image2401.o (.data); - build/assets/images/split/image2402.o (.data); - build/assets/images/split/image2403.o (.data); - build/assets/images/split/image2404.o (.data); - build/assets/images/split/image2405.o (.data); - build/assets/images/split/image2406.o (.data); - build/assets/images/split/image2407.o (.data); - build/assets/images/split/image2408.o (.data); - build/assets/images/split/image2409.o (.data); - build/assets/images/split/image2410.o (.data); - build/assets/images/split/image2411.o (.data); - build/assets/images/split/image2412.o (.data); - build/assets/images/split/image2413.o (.data); - build/assets/images/split/image2414.o (.data); - build/assets/images/split/image2415.o (.data); - build/assets/images/split/image2416.o (.data); - build/assets/images/split/image2417.o (.data); - build/assets/images/split/image2418.o (.data); - build/assets/images/split/image2419.o (.data); - build/assets/images/split/image2420.o (.data); - build/assets/images/split/image2421.o (.data); - build/assets/images/split/image2422.o (.data); - build/assets/images/split/image2423.o (.data); - build/assets/images/split/image2424.o (.data); - build/assets/images/split/image2425.o (.data); - build/assets/images/split/image2426.o (.data); - build/assets/images/split/image2427.o (.data); - build/assets/images/split/image2428.o (.data); - build/assets/images/split/image2429.o (.data); - build/assets/images/split/image2430.o (.data); - build/assets/images/split/image2431.o (.data); - build/assets/images/split/image2432.o (.data); - build/assets/images/split/image2433.o (.data); - build/assets/images/split/image2434.o (.data); - build/assets/images/split/image2435.o (.data); - build/assets/images/split/image2436.o (.data); - build/assets/images/split/image2437.o (.data); - build/assets/images/split/image2438.o (.data); - build/assets/images/split/image2439.o (.data); - build/assets/images/split/image2440.o (.data); - build/assets/images/split/image2441.o (.data); - build/assets/images/split/image2442.o (.data); - build/assets/images/split/image2443.o (.data); - build/assets/images/split/image2444.o (.data); - build/assets/images/split/image2445.o (.data); - build/assets/images/split/image2446.o (.data); - build/assets/images/split/image2447.o (.data); - build/assets/images/split/image2448.o (.data); - build/assets/images/split/image2449.o (.data); - build/assets/images/split/image2450.o (.data); - build/assets/images/split/image2451.o (.data); - build/assets/images/split/image2452.o (.data); - build/assets/images/split/image2453.o (.data); - build/assets/images/split/image2454.o (.data); - build/assets/images/split/image2455.o (.data); - build/assets/images/split/image2456.o (.data); - build/assets/images/split/image2457.o (.data); - build/assets/images/split/image2458.o (.data); - build/assets/images/split/image2459.o (.data); - build/assets/images/split/image2460.o (.data); - build/assets/images/split/image2461.o (.data); - build/assets/images/split/image2462.o (.data); - build/assets/images/split/image2463.o (.data); - build/assets/images/split/image2464.o (.data); - build/assets/images/split/image2465.o (.data); - build/assets/images/split/image2466.o (.data); - build/assets/images/split/image2467.o (.data); - build/assets/images/split/image2468.o (.data); - build/assets/images/split/image2469.o (.data); - build/assets/images/split/image2470.o (.data); - build/assets/images/split/image2471.o (.data); - build/assets/images/split/image2472.o (.data); - build/assets/images/split/image2473.o (.data); - build/assets/images/split/image2474.o (.data); - build/assets/images/split/image2475.o (.data); - build/assets/images/split/image2476.o (.data); - build/assets/images/split/image2477.o (.data); - build/assets/images/split/image2478.o (.data); - build/assets/images/split/image2479.o (.data); - build/assets/images/split/image2480.o (.data); - build/assets/images/split/image2481.o (.data); - build/assets/images/split/image2482.o (.data); - build/assets/images/split/image2483.o (.data); - build/assets/images/split/image2484.o (.data); - build/assets/images/split/image2485.o (.data); - build/assets/images/split/image2486.o (.data); - build/assets/images/split/image2487.o (.data); - build/assets/images/split/image2488.o (.data); - build/assets/images/split/image2489.o (.data); - build/assets/images/split/image2490.o (.data); - build/assets/images/split/image2491.o (.data); - build/assets/images/split/image2492.o (.data); - build/assets/images/split/image2493.o (.data); - build/assets/images/split/image2494.o (.data); - build/assets/images/split/image2495.o (.data); - build/assets/images/split/image2496.o (.data); - build/assets/images/split/image2497.o (.data); - build/assets/images/split/image2498.o (.data); - build/assets/images/split/image2499.o (.data); - build/assets/images/split/image2500.o (.data); - build/assets/images/split/image2501.o (.data); - build/assets/images/split/image2502.o (.data); - build/assets/images/split/image2503.o (.data); - build/assets/images/split/image2504.o (.data); - build/assets/images/split/image2505.o (.data); - build/assets/images/split/image2506.o (.data); - build/assets/images/split/image2507.o (.data); - build/assets/images/split/image2508.o (.data); - build/assets/images/split/image2509.o (.data); - build/assets/images/split/image2510.o (.data); - build/assets/images/split/image2511.o (.data); - build/assets/images/split/image2512.o (.data); - build/assets/images/split/image2513.o (.data); - build/assets/images/split/image2514.o (.data); - build/assets/images/split/image2515.o (.data); - build/assets/images/split/image2516.o (.data); - build/assets/images/split/image2517.o (.data); - build/assets/images/split/image2518.o (.data); - build/assets/images/split/image2519.o (.data); - build/assets/images/split/image2520.o (.data); - build/assets/images/split/image2521.o (.data); - build/assets/images/split/image2522.o (.data); - build/assets/images/split/image2523.o (.data); - build/assets/images/split/image2524.o (.data); - build/assets/images/split/image2525.o (.data); - build/assets/images/split/image2526.o (.data); - build/assets/images/split/image2527.o (.data); - build/assets/images/split/image2528.o (.data); - build/assets/images/split/image2529.o (.data); - build/assets/images/split/image2530.o (.data); - build/assets/images/split/image2531.o (.data); - build/assets/images/split/image2532.o (.data); - build/assets/images/split/image2533.o (.data); - build/assets/images/split/image2534.o (.data); - build/assets/images/split/image2535.o (.data); - build/assets/images/split/image2536.o (.data); - build/assets/images/split/image2537.o (.data); - build/assets/images/split/image2538.o (.data); - build/assets/images/split/image2539.o (.data); - build/assets/images/split/image2540.o (.data); - build/assets/images/split/image2541.o (.data); - build/assets/images/split/image2542.o (.data); - build/assets/images/split/image2543.o (.data); - build/assets/images/split/image2544.o (.data); - build/assets/images/split/image2545.o (.data); - build/assets/images/split/image2546.o (.data); - build/assets/images/split/image2547.o (.data); - build/assets/images/split/image2548.o (.data); - build/assets/images/split/image2549.o (.data); - build/assets/images/split/image2550.o (.data); - build/assets/images/split/image2551.o (.data); - build/assets/images/split/image2552.o (.data); - build/assets/images/split/image2553.o (.data); - build/assets/images/split/image2554.o (.data); - build/assets/images/split/image2555.o (.data); - build/assets/images/split/image2556.o (.data); - build/assets/images/split/image2557.o (.data); - build/assets/images/split/image2558.o (.data); - build/assets/images/split/image2559.o (.data); - build/assets/images/split/image2560.o (.data); - build/assets/images/split/image2561.o (.data); - build/assets/images/split/image2562.o (.data); - build/assets/images/split/image2563.o (.data); - build/assets/images/split/image2564.o (.data); - build/assets/images/split/image2565.o (.data); - build/assets/images/split/image2566.o (.data); - build/assets/images/split/image2567.o (.data); - build/assets/images/split/image2568.o (.data); - build/assets/images/split/image2569.o (.data); - build/assets/images/split/image2570.o (.data); - build/assets/images/split/image2571.o (.data); - build/assets/images/split/image2572.o (.data); - build/assets/images/split/image2573.o (.data); - build/assets/images/split/image2574.o (.data); - build/assets/images/split/image2575.o (.data); - build/assets/images/split/image2576.o (.data); - build/assets/images/split/image2577.o (.data); - build/assets/images/split/image2578.o (.data); - build/assets/images/split/image2579.o (.data); - build/assets/images/split/image2580.o (.data); - build/assets/images/split/image2581.o (.data); - build/assets/images/split/image2582.o (.data); - build/assets/images/split/image2583.o (.data); - build/assets/images/split/image2584.o (.data); - build/assets/images/split/image2585.o (.data); - build/assets/images/split/image2586.o (.data); - build/assets/images/split/image2587.o (.data); - build/assets/images/split/image2588.o (.data); - build/assets/images/split/image2589.o (.data); - build/assets/images/split/image2590.o (.data); - build/assets/images/split/image2591.o (.data); - build/assets/images/split/image2592.o (.data); - build/assets/images/split/image2593.o (.data); - build/assets/images/split/image2594.o (.data); - build/assets/images/split/image2595.o (.data); - build/assets/images/split/image2596.o (.data); - build/assets/images/split/image2597.o (.data); - build/assets/images/split/image2598.o (.data); - build/assets/images/split/image2599.o (.data); - build/assets/images/split/image2600.o (.data); - build/assets/images/split/image2601.o (.data); - build/assets/images/split/image2602.o (.data); - build/assets/images/split/image2603.o (.data); - build/assets/images/split/image2604.o (.data); - build/assets/images/split/image2605.o (.data); - build/assets/images/split/image2606.o (.data); - build/assets/images/split/image2607.o (.data); - build/assets/images/split/image2608.o (.data); - build/assets/images/split/image2609.o (.data); - build/assets/images/split/image2610.o (.data); - build/assets/images/split/image2611.o (.data); - build/assets/images/split/image2612.o (.data); - build/assets/images/split/image2613.o (.data); - build/assets/images/split/image2614.o (.data); - build/assets/images/split/image2615.o (.data); - build/assets/images/split/image2616.o (.data); - build/assets/images/split/image2617.o (.data); - build/assets/images/split/image2618.o (.data); - build/assets/images/split/image2619.o (.data); - build/assets/images/split/image2620.o (.data); - build/assets/images/split/image2621.o (.data); - build/assets/images/split/image2622.o (.data); - build/assets/images/split/image2623.o (.data); - build/assets/images/split/image2624.o (.data); - build/assets/images/split/image2625.o (.data); - build/assets/images/split/image2626.o (.data); - build/assets/images/split/image2627.o (.data); - build/assets/images/split/image2628.o (.data); - build/assets/images/split/image2629.o (.data); - build/assets/images/split/image2630.o (.data); - build/assets/images/split/image2631.o (.data); - build/assets/images/split/image2632.o (.data); - build/assets/images/split/image2633.o (.data); - build/assets/images/split/image2634.o (.data); - build/assets/images/split/image2635.o (.data); - build/assets/images/split/image2636.o (.data); - build/assets/images/split/image2637.o (.data); - build/assets/images/split/image2638.o (.data); - build/assets/images/split/image2639.o (.data); - build/assets/images/split/image2640.o (.data); - build/assets/images/split/image2641.o (.data); - build/assets/images/split/image2642.o (.data); - build/assets/images/split/image2643.o (.data); - build/assets/images/split/image2644.o (.data); - build/assets/images/split/image2645.o (.data); - build/assets/images/split/image2646.o (.data); - build/assets/images/split/image2647.o (.data); - build/assets/images/split/image2648.o (.data); - build/assets/images/split/image2649.o (.data); - build/assets/images/split/image2650.o (.data); - build/assets/images/split/image2651.o (.data); - build/assets/images/split/image2652.o (.data); - build/assets/images/split/image2653.o (.data); - build/assets/images/split/image2654.o (.data); - build/assets/images/split/image2655.o (.data); - build/assets/images/split/image2656.o (.data); - build/assets/images/split/image2657.o (.data); - build/assets/images/split/image2658.o (.data); - build/assets/images/split/image2659.o (.data); - build/assets/images/split/image2660.o (.data); - build/assets/images/split/image2661.o (.data); - build/assets/images/split/image2662.o (.data); - build/assets/images/split/image2663.o (.data); - build/assets/images/split/image2664.o (.data); - build/assets/images/split/image2665.o (.data); - build/assets/images/split/image2666.o (.data); - build/assets/images/split/image2667.o (.data); - build/assets/images/split/image2668.o (.data); - build/assets/images/split/image2669.o (.data); - build/assets/images/split/image2670.o (.data); - build/assets/images/split/image2671.o (.data); - build/assets/images/split/image2672.o (.data); - build/assets/images/split/image2673.o (.data); - build/assets/images/split/image2674.o (.data); - build/assets/images/split/image2675.o (.data); - build/assets/images/split/image2676.o (.data); - build/assets/images/split/image2677.o (.data); - build/assets/images/split/image2678.o (.data); - build/assets/images/split/image2679.o (.data); - build/assets/images/split/image2680.o (.data); - build/assets/images/split/image2681.o (.data); - build/assets/images/split/image2682.o (.data); - build/assets/images/split/image2683.o (.data); - build/assets/images/split/image2684.o (.data); - build/assets/images/split/image2685.o (.data); - build/assets/images/split/image2686.o (.data); - build/assets/images/split/image2687.o (.data); - build/assets/images/split/image2688.o (.data); - build/assets/images/split/image2689.o (.data); - build/assets/images/split/image2690.o (.data); - build/assets/images/split/image2691.o (.data); - build/assets/images/split/image2692.o (.data); - build/assets/images/split/image2693.o (.data); - build/assets/images/split/image2694.o (.data); - build/assets/images/split/image2695.o (.data); - build/assets/images/split/image2696.o (.data); - build/assets/images/split/image2697.o (.data); - build/assets/images/split/image2698.o (.data); - build/assets/images/split/image2699.o (.data); + build/e/assets/images/split/image1.o (.data); + build/e/assets/images/split/image2.o (.data); + build/e/assets/images/split/image3.o (.data); + build/e/assets/images/split/image4.o (.data); + build/e/assets/images/split/image5.o (.data); + build/e/assets/images/split/image6.o (.data); + build/e/assets/images/split/image7.o (.data); + build/e/assets/images/split/image8.o (.data); + build/e/assets/images/split/image9.o (.data); + build/e/assets/images/split/image10.o (.data); + build/e/assets/images/split/image11.o (.data); + build/e/assets/images/split/image12.o (.data); + build/e/assets/images/split/image13.o (.data); + build/e/assets/images/split/image14.o (.data); + build/e/assets/images/split/image15.o (.data); + build/e/assets/images/split/image16.o (.data); + build/e/assets/images/split/image17.o (.data); + build/e/assets/images/split/image18.o (.data); + build/e/assets/images/split/image19.o (.data); + build/e/assets/images/split/image20.o (.data); + build/e/assets/images/split/image21.o (.data); + build/e/assets/images/split/image22.o (.data); + build/e/assets/images/split/image23.o (.data); + build/e/assets/images/split/image24.o (.data); + build/e/assets/images/split/image25.o (.data); + build/e/assets/images/split/image26.o (.data); + build/e/assets/images/split/image27.o (.data); + build/e/assets/images/split/image28.o (.data); + build/e/assets/images/split/image29.o (.data); + build/e/assets/images/split/image30.o (.data); + build/e/assets/images/split/image31.o (.data); + build/e/assets/images/split/image32.o (.data); + build/e/assets/images/split/image33.o (.data); + build/e/assets/images/split/image34.o (.data); + build/e/assets/images/split/image35.o (.data); + build/e/assets/images/split/image36.o (.data); + build/e/assets/images/split/image37.o (.data); + build/e/assets/images/split/image38.o (.data); + build/e/assets/images/split/image39.o (.data); + build/e/assets/images/split/image40.o (.data); + build/e/assets/images/split/image41.o (.data); + build/e/assets/images/split/image42.o (.data); + build/e/assets/images/split/image43.o (.data); + build/e/assets/images/split/image44.o (.data); + build/e/assets/images/split/image45.o (.data); + build/e/assets/images/split/image46.o (.data); + build/e/assets/images/split/image47.o (.data); + build/e/assets/images/split/image48.o (.data); + build/e/assets/images/split/image49.o (.data); + build/e/assets/images/split/image50.o (.data); + build/e/assets/images/split/image51.o (.data); + build/e/assets/images/split/image52.o (.data); + build/e/assets/images/split/image53.o (.data); + build/e/assets/images/split/image54.o (.data); + build/e/assets/images/split/image55.o (.data); + build/e/assets/images/split/image56.o (.data); + build/e/assets/images/split/image57.o (.data); + build/e/assets/images/split/image58.o (.data); + build/e/assets/images/split/image59.o (.data); + build/e/assets/images/split/image60.o (.data); + build/e/assets/images/split/image61.o (.data); + build/e/assets/images/split/image62.o (.data); + build/e/assets/images/split/image63.o (.data); + build/e/assets/images/split/image64.o (.data); + build/e/assets/images/split/image65.o (.data); + build/e/assets/images/split/image66.o (.data); + build/e/assets/images/split/image67.o (.data); + build/e/assets/images/split/image68.o (.data); + build/e/assets/images/split/image69.o (.data); + build/e/assets/images/split/image70.o (.data); + build/e/assets/images/split/image71.o (.data); + build/e/assets/images/split/image72.o (.data); + build/e/assets/images/split/image73.o (.data); + build/e/assets/images/split/image74.o (.data); + build/e/assets/images/split/image75.o (.data); + build/e/assets/images/split/image76.o (.data); + build/e/assets/images/split/image77.o (.data); + build/e/assets/images/split/image78.o (.data); + build/e/assets/images/split/image79.o (.data); + build/e/assets/images/split/image80.o (.data); + build/e/assets/images/split/image81.o (.data); + build/e/assets/images/split/image82.o (.data); + build/e/assets/images/split/image83.o (.data); + build/e/assets/images/split/image84.o (.data); + build/e/assets/images/split/image85.o (.data); + build/e/assets/images/split/image86.o (.data); + build/e/assets/images/split/image87.o (.data); + build/e/assets/images/split/image88.o (.data); + build/e/assets/images/split/image89.o (.data); + build/e/assets/images/split/image90.o (.data); + build/e/assets/images/split/image91.o (.data); + build/e/assets/images/split/image92.o (.data); + build/e/assets/images/split/image93.o (.data); + build/e/assets/images/split/image94.o (.data); + build/e/assets/images/split/image95.o (.data); + build/e/assets/images/split/image96.o (.data); + build/e/assets/images/split/image97.o (.data); + build/e/assets/images/split/image98.o (.data); + build/e/assets/images/split/image99.o (.data); + build/e/assets/images/split/image100.o (.data); + build/e/assets/images/split/image101.o (.data); + build/e/assets/images/split/image102.o (.data); + build/e/assets/images/split/image103.o (.data); + build/e/assets/images/split/image104.o (.data); + build/e/assets/images/split/image105.o (.data); + build/e/assets/images/split/image106.o (.data); + build/e/assets/images/split/image107.o (.data); + build/e/assets/images/split/image108.o (.data); + build/e/assets/images/split/image109.o (.data); + build/e/assets/images/split/image110.o (.data); + build/e/assets/images/split/image111.o (.data); + build/e/assets/images/split/image112.o (.data); + build/e/assets/images/split/image113.o (.data); + build/e/assets/images/split/image114.o (.data); + build/e/assets/images/split/image115.o (.data); + build/e/assets/images/split/image116.o (.data); + build/e/assets/images/split/image117.o (.data); + build/e/assets/images/split/image118.o (.data); + build/e/assets/images/split/image119.o (.data); + build/e/assets/images/split/image120.o (.data); + build/e/assets/images/split/image121.o (.data); + build/e/assets/images/split/image122.o (.data); + build/e/assets/images/split/image123.o (.data); + build/e/assets/images/split/image124.o (.data); + build/e/assets/images/split/image125.o (.data); + build/e/assets/images/split/image126.o (.data); + build/e/assets/images/split/image127.o (.data); + build/e/assets/images/split/image128.o (.data); + build/e/assets/images/split/image129.o (.data); + build/e/assets/images/split/image130.o (.data); + build/e/assets/images/split/image131.o (.data); + build/e/assets/images/split/image132.o (.data); + build/e/assets/images/split/image133.o (.data); + build/e/assets/images/split/image134.o (.data); + build/e/assets/images/split/image135.o (.data); + build/e/assets/images/split/image136.o (.data); + build/e/assets/images/split/image137.o (.data); + build/e/assets/images/split/image138.o (.data); + build/e/assets/images/split/image139.o (.data); + build/e/assets/images/split/image140.o (.data); + build/e/assets/images/split/image141.o (.data); + build/e/assets/images/split/image142.o (.data); + build/e/assets/images/split/image143.o (.data); + build/e/assets/images/split/image144.o (.data); + build/e/assets/images/split/image145.o (.data); + build/e/assets/images/split/image146.o (.data); + build/e/assets/images/split/image147.o (.data); + build/e/assets/images/split/image148.o (.data); + build/e/assets/images/split/image149.o (.data); + build/e/assets/images/split/image150.o (.data); + build/e/assets/images/split/image151.o (.data); + build/e/assets/images/split/image152.o (.data); + build/e/assets/images/split/image153.o (.data); + build/e/assets/images/split/image154.o (.data); + build/e/assets/images/split/image155.o (.data); + build/e/assets/images/split/image156.o (.data); + build/e/assets/images/split/image157.o (.data); + build/e/assets/images/split/image158.o (.data); + build/e/assets/images/split/image159.o (.data); + build/e/assets/images/split/image160.o (.data); + build/e/assets/images/split/image161.o (.data); + build/e/assets/images/split/image162.o (.data); + build/e/assets/images/split/image163.o (.data); + build/e/assets/images/split/image164.o (.data); + build/e/assets/images/split/image165.o (.data); + build/e/assets/images/split/image166.o (.data); + build/e/assets/images/split/image167.o (.data); + build/e/assets/images/split/image168.o (.data); + build/e/assets/images/split/image169.o (.data); + build/e/assets/images/split/image170.o (.data); + build/e/assets/images/split/image171.o (.data); + build/e/assets/images/split/image172.o (.data); + build/e/assets/images/split/image173.o (.data); + build/e/assets/images/split/image174.o (.data); + build/e/assets/images/split/image175.o (.data); + build/e/assets/images/split/image176.o (.data); + build/e/assets/images/split/image177.o (.data); + build/e/assets/images/split/image178.o (.data); + build/e/assets/images/split/image179.o (.data); + build/e/assets/images/split/image180.o (.data); + build/e/assets/images/split/image181.o (.data); + build/e/assets/images/split/image182.o (.data); + build/e/assets/images/split/image183.o (.data); + build/e/assets/images/split/image184.o (.data); + build/e/assets/images/split/image185.o (.data); + build/e/assets/images/split/image186.o (.data); + build/e/assets/images/split/image187.o (.data); + build/e/assets/images/split/image188.o (.data); + build/e/assets/images/split/image189.o (.data); + build/e/assets/images/split/image190.o (.data); + build/e/assets/images/split/image191.o (.data); + build/e/assets/images/split/image192.o (.data); + build/e/assets/images/split/image193.o (.data); + build/e/assets/images/split/image194.o (.data); + build/e/assets/images/split/image195.o (.data); + build/e/assets/images/split/image196.o (.data); + build/e/assets/images/split/image197.o (.data); + build/e/assets/images/split/image198.o (.data); + build/e/assets/images/split/image199.o (.data); + build/e/assets/images/split/image200.o (.data); + build/e/assets/images/split/image201.o (.data); + build/e/assets/images/split/image202.o (.data); + build/e/assets/images/split/image203.o (.data); + build/e/assets/images/split/image204.o (.data); + build/e/assets/images/split/image205.o (.data); + build/e/assets/images/split/image206.o (.data); + build/e/assets/images/split/image207.o (.data); + build/e/assets/images/split/image208.o (.data); + build/e/assets/images/split/image209.o (.data); + build/e/assets/images/split/image210.o (.data); + build/e/assets/images/split/image211.o (.data); + build/e/assets/images/split/image212.o (.data); + build/e/assets/images/split/image213.o (.data); + build/e/assets/images/split/image214.o (.data); + build/e/assets/images/split/image215.o (.data); + build/e/assets/images/split/image216.o (.data); + build/e/assets/images/split/image217.o (.data); + build/e/assets/images/split/image218.o (.data); + build/e/assets/images/split/image219.o (.data); + build/e/assets/images/split/image220.o (.data); + build/e/assets/images/split/image221.o (.data); + build/e/assets/images/split/image222.o (.data); + build/e/assets/images/split/image223.o (.data); + build/e/assets/images/split/image224.o (.data); + build/e/assets/images/split/image225.o (.data); + build/e/assets/images/split/image226.o (.data); + build/e/assets/images/split/image227.o (.data); + build/e/assets/images/split/image228.o (.data); + build/e/assets/images/split/image229.o (.data); + build/e/assets/images/split/image230.o (.data); + build/e/assets/images/split/image231.o (.data); + build/e/assets/images/split/image232.o (.data); + build/e/assets/images/split/image233.o (.data); + build/e/assets/images/split/image234.o (.data); + build/e/assets/images/split/image235.o (.data); + build/e/assets/images/split/image236.o (.data); + build/e/assets/images/split/image237.o (.data); + build/e/assets/images/split/image238.o (.data); + build/e/assets/images/split/image239.o (.data); + build/e/assets/images/split/image240.o (.data); + build/e/assets/images/split/image241.o (.data); + build/e/assets/images/split/image242.o (.data); + build/e/assets/images/split/image243.o (.data); + build/e/assets/images/split/image244.o (.data); + build/e/assets/images/split/image245.o (.data); + build/e/assets/images/split/image246.o (.data); + build/e/assets/images/split/image247.o (.data); + build/e/assets/images/split/image248.o (.data); + build/e/assets/images/split/image249.o (.data); + build/e/assets/images/split/image250.o (.data); + build/e/assets/images/split/image251.o (.data); + build/e/assets/images/split/image252.o (.data); + build/e/assets/images/split/image253.o (.data); + build/e/assets/images/split/image254.o (.data); + build/e/assets/images/split/image255.o (.data); + build/e/assets/images/split/image256.o (.data); + build/e/assets/images/split/image257.o (.data); + build/e/assets/images/split/image258.o (.data); + build/e/assets/images/split/image259.o (.data); + build/e/assets/images/split/image260.o (.data); + build/e/assets/images/split/image261.o (.data); + build/e/assets/images/split/image262.o (.data); + build/e/assets/images/split/image263.o (.data); + build/e/assets/images/split/image264.o (.data); + build/e/assets/images/split/image265.o (.data); + build/e/assets/images/split/image266.o (.data); + build/e/assets/images/split/image267.o (.data); + build/e/assets/images/split/image268.o (.data); + build/e/assets/images/split/image269.o (.data); + build/e/assets/images/split/image270.o (.data); + build/e/assets/images/split/image271.o (.data); + build/e/assets/images/split/image272.o (.data); + build/e/assets/images/split/image273.o (.data); + build/e/assets/images/split/image274.o (.data); + build/e/assets/images/split/image275.o (.data); + build/e/assets/images/split/image276.o (.data); + build/e/assets/images/split/image277.o (.data); + build/e/assets/images/split/image278.o (.data); + build/e/assets/images/split/image279.o (.data); + build/e/assets/images/split/image280.o (.data); + build/e/assets/images/split/image281.o (.data); + build/e/assets/images/split/image282.o (.data); + build/e/assets/images/split/image283.o (.data); + build/e/assets/images/split/image284.o (.data); + build/e/assets/images/split/image285.o (.data); + build/e/assets/images/split/image286.o (.data); + build/e/assets/images/split/image287.o (.data); + build/e/assets/images/split/image288.o (.data); + build/e/assets/images/split/image289.o (.data); + build/e/assets/images/split/image290.o (.data); + build/e/assets/images/split/image291.o (.data); + build/e/assets/images/split/image292.o (.data); + build/e/assets/images/split/image293.o (.data); + build/e/assets/images/split/image294.o (.data); + build/e/assets/images/split/image295.o (.data); + build/e/assets/images/split/image296.o (.data); + build/e/assets/images/split/image297.o (.data); + build/e/assets/images/split/image298.o (.data); + build/e/assets/images/split/image299.o (.data); + build/e/assets/images/split/image300.o (.data); + build/e/assets/images/split/image301.o (.data); + build/e/assets/images/split/image302.o (.data); + build/e/assets/images/split/image303.o (.data); + build/e/assets/images/split/image304.o (.data); + build/e/assets/images/split/image305.o (.data); + build/e/assets/images/split/image306.o (.data); + build/e/assets/images/split/image307.o (.data); + build/e/assets/images/split/image308.o (.data); + build/e/assets/images/split/image309.o (.data); + build/e/assets/images/split/image310.o (.data); + build/e/assets/images/split/image311.o (.data); + build/e/assets/images/split/image312.o (.data); + build/e/assets/images/split/image313.o (.data); + build/e/assets/images/split/image314.o (.data); + build/e/assets/images/split/image315.o (.data); + build/e/assets/images/split/image316.o (.data); + build/e/assets/images/split/image317.o (.data); + build/e/assets/images/split/image318.o (.data); + build/e/assets/images/split/image319.o (.data); + build/e/assets/images/split/image320.o (.data); + build/e/assets/images/split/image321.o (.data); + build/e/assets/images/split/image322.o (.data); + build/e/assets/images/split/image323.o (.data); + build/e/assets/images/split/image324.o (.data); + build/e/assets/images/split/image325.o (.data); + build/e/assets/images/split/image326.o (.data); + build/e/assets/images/split/image327.o (.data); + build/e/assets/images/split/image328.o (.data); + build/e/assets/images/split/image329.o (.data); + build/e/assets/images/split/image330.o (.data); + build/e/assets/images/split/image331.o (.data); + build/e/assets/images/split/image332.o (.data); + build/e/assets/images/split/image333.o (.data); + build/e/assets/images/split/image334.o (.data); + build/e/assets/images/split/image335.o (.data); + build/e/assets/images/split/image336.o (.data); + build/e/assets/images/split/image337.o (.data); + build/e/assets/images/split/image338.o (.data); + build/e/assets/images/split/image339.o (.data); + build/e/assets/images/split/image340.o (.data); + build/e/assets/images/split/image341.o (.data); + build/e/assets/images/split/image342.o (.data); + build/e/assets/images/split/image343.o (.data); + build/e/assets/images/split/image344.o (.data); + build/e/assets/images/split/image345.o (.data); + build/e/assets/images/split/image346.o (.data); + build/e/assets/images/split/image347.o (.data); + build/e/assets/images/split/image348.o (.data); + build/e/assets/images/split/image349.o (.data); + build/e/assets/images/split/image350.o (.data); + build/e/assets/images/split/image351.o (.data); + build/e/assets/images/split/image352.o (.data); + build/e/assets/images/split/image353.o (.data); + build/e/assets/images/split/image354.o (.data); + build/e/assets/images/split/image355.o (.data); + build/e/assets/images/split/image356.o (.data); + build/e/assets/images/split/image357.o (.data); + build/e/assets/images/split/image358.o (.data); + build/e/assets/images/split/image359.o (.data); + build/e/assets/images/split/image360.o (.data); + build/e/assets/images/split/image361.o (.data); + build/e/assets/images/split/image362.o (.data); + build/e/assets/images/split/image363.o (.data); + build/e/assets/images/split/image364.o (.data); + build/e/assets/images/split/image365.o (.data); + build/e/assets/images/split/image366.o (.data); + build/e/assets/images/split/image367.o (.data); + build/e/assets/images/split/image368.o (.data); + build/e/assets/images/split/image369.o (.data); + build/e/assets/images/split/image370.o (.data); + build/e/assets/images/split/image371.o (.data); + build/e/assets/images/split/image372.o (.data); + build/e/assets/images/split/image373.o (.data); + build/e/assets/images/split/image374.o (.data); + build/e/assets/images/split/image375.o (.data); + build/e/assets/images/split/image376.o (.data); + build/e/assets/images/split/image377.o (.data); + build/e/assets/images/split/image378.o (.data); + build/e/assets/images/split/image379.o (.data); + build/e/assets/images/split/image380.o (.data); + build/e/assets/images/split/image381.o (.data); + build/e/assets/images/split/image382.o (.data); + build/e/assets/images/split/image383.o (.data); + build/e/assets/images/split/image384.o (.data); + build/e/assets/images/split/image385.o (.data); + build/e/assets/images/split/image386.o (.data); + build/e/assets/images/split/image387.o (.data); + build/e/assets/images/split/image388.o (.data); + build/e/assets/images/split/image389.o (.data); + build/e/assets/images/split/image390.o (.data); + build/e/assets/images/split/image391.o (.data); + build/e/assets/images/split/image392.o (.data); + build/e/assets/images/split/image393.o (.data); + build/e/assets/images/split/image394.o (.data); + build/e/assets/images/split/image395.o (.data); + build/e/assets/images/split/image396.o (.data); + build/e/assets/images/split/image397.o (.data); + build/e/assets/images/split/image398.o (.data); + build/e/assets/images/split/image399.o (.data); + build/e/assets/images/split/image400.o (.data); + build/e/assets/images/split/image401.o (.data); + build/e/assets/images/split/image402.o (.data); + build/e/assets/images/split/image403.o (.data); + build/e/assets/images/split/image404.o (.data); + build/e/assets/images/split/image405.o (.data); + build/e/assets/images/split/image406.o (.data); + build/e/assets/images/split/image407.o (.data); + build/e/assets/images/split/image408.o (.data); + build/e/assets/images/split/image409.o (.data); + build/e/assets/images/split/image410.o (.data); + build/e/assets/images/split/image411.o (.data); + build/e/assets/images/split/image412.o (.data); + build/e/assets/images/split/image413.o (.data); + build/e/assets/images/split/image414.o (.data); + build/e/assets/images/split/image415.o (.data); + build/e/assets/images/split/image416.o (.data); + build/e/assets/images/split/image417.o (.data); + build/e/assets/images/split/image418.o (.data); + build/e/assets/images/split/image419.o (.data); + build/e/assets/images/split/image420.o (.data); + build/e/assets/images/split/image421.o (.data); + build/e/assets/images/split/image422.o (.data); + build/e/assets/images/split/image423.o (.data); + build/e/assets/images/split/image424.o (.data); + build/e/assets/images/split/image425.o (.data); + build/e/assets/images/split/image426.o (.data); + build/e/assets/images/split/image427.o (.data); + build/e/assets/images/split/image428.o (.data); + build/e/assets/images/split/image429.o (.data); + build/e/assets/images/split/image430.o (.data); + build/e/assets/images/split/image431.o (.data); + build/e/assets/images/split/image432.o (.data); + build/e/assets/images/split/image433.o (.data); + build/e/assets/images/split/image434.o (.data); + build/e/assets/images/split/image435.o (.data); + build/e/assets/images/split/image436.o (.data); + build/e/assets/images/split/image437.o (.data); + build/e/assets/images/split/image438.o (.data); + build/e/assets/images/split/image439.o (.data); + build/e/assets/images/split/image440.o (.data); + build/e/assets/images/split/image441.o (.data); + build/e/assets/images/split/image442.o (.data); + build/e/assets/images/split/image443.o (.data); + build/e/assets/images/split/image444.o (.data); + build/e/assets/images/split/image445.o (.data); + build/e/assets/images/split/image446.o (.data); + build/e/assets/images/split/image447.o (.data); + build/e/assets/images/split/image448.o (.data); + build/e/assets/images/split/image449.o (.data); + build/e/assets/images/split/image450.o (.data); + build/e/assets/images/split/image451.o (.data); + build/e/assets/images/split/image452.o (.data); + build/e/assets/images/split/image453.o (.data); + build/e/assets/images/split/image454.o (.data); + build/e/assets/images/split/image455.o (.data); + build/e/assets/images/split/image456.o (.data); + build/e/assets/images/split/image457.o (.data); + build/e/assets/images/split/image458.o (.data); + build/e/assets/images/split/image459.o (.data); + build/e/assets/images/split/image460.o (.data); + build/e/assets/images/split/image461.o (.data); + build/e/assets/images/split/image462.o (.data); + build/e/assets/images/split/image463.o (.data); + build/e/assets/images/split/image464.o (.data); + build/e/assets/images/split/image465.o (.data); + build/e/assets/images/split/image466.o (.data); + build/e/assets/images/split/image467.o (.data); + build/e/assets/images/split/image468.o (.data); + build/e/assets/images/split/image469.o (.data); + build/e/assets/images/split/image470.o (.data); + build/e/assets/images/split/image471.o (.data); + build/e/assets/images/split/image472.o (.data); + build/e/assets/images/split/image473.o (.data); + build/e/assets/images/split/image474.o (.data); + build/e/assets/images/split/image475.o (.data); + build/e/assets/images/split/image476.o (.data); + build/e/assets/images/split/image477.o (.data); + build/e/assets/images/split/image478.o (.data); + build/e/assets/images/split/image479.o (.data); + build/e/assets/images/split/image480.o (.data); + build/e/assets/images/split/image481.o (.data); + build/e/assets/images/split/image482.o (.data); + build/e/assets/images/split/image483.o (.data); + build/e/assets/images/split/image484.o (.data); + build/e/assets/images/split/image485.o (.data); + build/e/assets/images/split/image486.o (.data); + build/e/assets/images/split/image487.o (.data); + build/e/assets/images/split/image488.o (.data); + build/e/assets/images/split/image489.o (.data); + build/e/assets/images/split/image490.o (.data); + build/e/assets/images/split/image491.o (.data); + build/e/assets/images/split/image492.o (.data); + build/e/assets/images/split/image493.o (.data); + build/e/assets/images/split/image494.o (.data); + build/e/assets/images/split/image495.o (.data); + build/e/assets/images/split/image496.o (.data); + build/e/assets/images/split/image497.o (.data); + build/e/assets/images/split/image498.o (.data); + build/e/assets/images/split/image499.o (.data); + build/e/assets/images/split/image500.o (.data); + build/e/assets/images/split/image501.o (.data); + build/e/assets/images/split/image502.o (.data); + build/e/assets/images/split/image503.o (.data); + build/e/assets/images/split/image504.o (.data); + build/e/assets/images/split/image505.o (.data); + build/e/assets/images/split/image506.o (.data); + build/e/assets/images/split/image507.o (.data); + build/e/assets/images/split/image508.o (.data); + build/e/assets/images/split/image509.o (.data); + build/e/assets/images/split/image510.o (.data); + build/e/assets/images/split/image511.o (.data); + build/e/assets/images/split/image512.o (.data); + build/e/assets/images/split/image513.o (.data); + build/e/assets/images/split/image514.o (.data); + build/e/assets/images/split/image515.o (.data); + build/e/assets/images/split/image516.o (.data); + build/e/assets/images/split/image517.o (.data); + build/e/assets/images/split/image518.o (.data); + build/e/assets/images/split/image519.o (.data); + build/e/assets/images/split/image520.o (.data); + build/e/assets/images/split/image521.o (.data); + build/e/assets/images/split/image522.o (.data); + build/e/assets/images/split/image523.o (.data); + build/e/assets/images/split/image524.o (.data); + build/e/assets/images/split/image525.o (.data); + build/e/assets/images/split/image526.o (.data); + build/e/assets/images/split/image527.o (.data); + build/e/assets/images/split/image528.o (.data); + build/e/assets/images/split/image529.o (.data); + build/e/assets/images/split/image530.o (.data); + build/e/assets/images/split/image531.o (.data); + build/e/assets/images/split/image532.o (.data); + build/e/assets/images/split/image533.o (.data); + build/e/assets/images/split/image534.o (.data); + build/e/assets/images/split/image535.o (.data); + build/e/assets/images/split/image536.o (.data); + build/e/assets/images/split/image537.o (.data); + build/e/assets/images/split/image538.o (.data); + build/e/assets/images/split/image539.o (.data); + build/e/assets/images/split/image540.o (.data); + build/e/assets/images/split/image541.o (.data); + build/e/assets/images/split/image542.o (.data); + build/e/assets/images/split/image543.o (.data); + build/e/assets/images/split/image544.o (.data); + build/e/assets/images/split/image545.o (.data); + build/e/assets/images/split/image546.o (.data); + build/e/assets/images/split/image547.o (.data); + build/e/assets/images/split/image548.o (.data); + build/e/assets/images/split/image549.o (.data); + build/e/assets/images/split/image550.o (.data); + build/e/assets/images/split/image551.o (.data); + build/e/assets/images/split/image552.o (.data); + build/e/assets/images/split/image553.o (.data); + build/e/assets/images/split/image554.o (.data); + build/e/assets/images/split/image555.o (.data); + build/e/assets/images/split/image556.o (.data); + build/e/assets/images/split/image557.o (.data); + build/e/assets/images/split/image558.o (.data); + build/e/assets/images/split/image559.o (.data); + build/e/assets/images/split/image560.o (.data); + build/e/assets/images/split/image561.o (.data); + build/e/assets/images/split/image562.o (.data); + build/e/assets/images/split/image563.o (.data); + build/e/assets/images/split/image564.o (.data); + build/e/assets/images/split/image565.o (.data); + build/e/assets/images/split/image566.o (.data); + build/e/assets/images/split/image567.o (.data); + build/e/assets/images/split/image568.o (.data); + build/e/assets/images/split/image569.o (.data); + build/e/assets/images/split/image570.o (.data); + build/e/assets/images/split/image571.o (.data); + build/e/assets/images/split/image572.o (.data); + build/e/assets/images/split/image573.o (.data); + build/e/assets/images/split/image574.o (.data); + build/e/assets/images/split/image575.o (.data); + build/e/assets/images/split/image576.o (.data); + build/e/assets/images/split/image577.o (.data); + build/e/assets/images/split/image578.o (.data); + build/e/assets/images/split/image579.o (.data); + build/e/assets/images/split/image580.o (.data); + build/e/assets/images/split/image581.o (.data); + build/e/assets/images/split/image582.o (.data); + build/e/assets/images/split/image583.o (.data); + build/e/assets/images/split/image584.o (.data); + build/e/assets/images/split/image585.o (.data); + build/e/assets/images/split/image586.o (.data); + build/e/assets/images/split/image587.o (.data); + build/e/assets/images/split/image588.o (.data); + build/e/assets/images/split/image589.o (.data); + build/e/assets/images/split/image590.o (.data); + build/e/assets/images/split/image591.o (.data); + build/e/assets/images/split/image592.o (.data); + build/e/assets/images/split/image593.o (.data); + build/e/assets/images/split/image594.o (.data); + build/e/assets/images/split/image595.o (.data); + build/e/assets/images/split/image596.o (.data); + build/e/assets/images/split/image597.o (.data); + build/e/assets/images/split/image598.o (.data); + build/e/assets/images/split/image599.o (.data); + build/e/assets/images/split/image600.o (.data); + build/e/assets/images/split/image601.o (.data); + build/e/assets/images/split/image602.o (.data); + build/e/assets/images/split/image603.o (.data); + build/e/assets/images/split/image604.o (.data); + build/e/assets/images/split/image605.o (.data); + build/e/assets/images/split/image606.o (.data); + build/e/assets/images/split/image607.o (.data); + build/e/assets/images/split/image608.o (.data); + build/e/assets/images/split/image609.o (.data); + build/e/assets/images/split/image610.o (.data); + build/e/assets/images/split/image611.o (.data); + build/e/assets/images/split/image612.o (.data); + build/e/assets/images/split/image613.o (.data); + build/e/assets/images/split/image614.o (.data); + build/e/assets/images/split/image615.o (.data); + build/e/assets/images/split/image616.o (.data); + build/e/assets/images/split/image617.o (.data); + build/e/assets/images/split/image618.o (.data); + build/e/assets/images/split/image619.o (.data); + build/e/assets/images/split/image620.o (.data); + build/e/assets/images/split/image621.o (.data); + build/e/assets/images/split/image622.o (.data); + build/e/assets/images/split/image623.o (.data); + build/e/assets/images/split/image624.o (.data); + build/e/assets/images/split/image625.o (.data); + build/e/assets/images/split/image626.o (.data); + build/e/assets/images/split/image627.o (.data); + build/e/assets/images/split/image628.o (.data); + build/e/assets/images/split/image629.o (.data); + build/e/assets/images/split/image630.o (.data); + build/e/assets/images/split/image631.o (.data); + build/e/assets/images/split/image632.o (.data); + build/e/assets/images/split/image633.o (.data); + build/e/assets/images/split/image634.o (.data); + build/e/assets/images/split/image635.o (.data); + build/e/assets/images/split/image636.o (.data); + build/e/assets/images/split/image637.o (.data); + build/e/assets/images/split/image638.o (.data); + build/e/assets/images/split/image639.o (.data); + build/e/assets/images/split/image640.o (.data); + build/e/assets/images/split/image641.o (.data); + build/e/assets/images/split/image642.o (.data); + build/e/assets/images/split/image643.o (.data); + build/e/assets/images/split/image644.o (.data); + build/e/assets/images/split/image645.o (.data); + build/e/assets/images/split/image646.o (.data); + build/e/assets/images/split/image647.o (.data); + build/e/assets/images/split/image648.o (.data); + build/e/assets/images/split/image649.o (.data); + build/e/assets/images/split/image650.o (.data); + build/e/assets/images/split/image651.o (.data); + build/e/assets/images/split/image652.o (.data); + build/e/assets/images/split/image653.o (.data); + build/e/assets/images/split/image654.o (.data); + build/e/assets/images/split/image655.o (.data); + build/e/assets/images/split/image656.o (.data); + build/e/assets/images/split/image657.o (.data); + build/e/assets/images/split/image658.o (.data); + build/e/assets/images/split/image659.o (.data); + build/e/assets/images/split/image660.o (.data); + build/e/assets/images/split/image661.o (.data); + build/e/assets/images/split/image662.o (.data); + build/e/assets/images/split/image663.o (.data); + build/e/assets/images/split/image664.o (.data); + build/e/assets/images/split/image665.o (.data); + build/e/assets/images/split/image666.o (.data); + build/e/assets/images/split/image667.o (.data); + build/e/assets/images/split/image668.o (.data); + build/e/assets/images/split/image669.o (.data); + build/e/assets/images/split/image670.o (.data); + build/e/assets/images/split/image671.o (.data); + build/e/assets/images/split/image672.o (.data); + build/e/assets/images/split/image673.o (.data); + build/e/assets/images/split/image674.o (.data); + build/e/assets/images/split/image675.o (.data); + build/e/assets/images/split/image676.o (.data); + build/e/assets/images/split/image677.o (.data); + build/e/assets/images/split/image678.o (.data); + build/e/assets/images/split/image679.o (.data); + build/e/assets/images/split/image680.o (.data); + build/e/assets/images/split/image681.o (.data); + build/e/assets/images/split/image682.o (.data); + build/e/assets/images/split/image683.o (.data); + build/e/assets/images/split/image684.o (.data); + build/e/assets/images/split/image685.o (.data); + build/e/assets/images/split/image686.o (.data); + build/e/assets/images/split/image687.o (.data); + build/e/assets/images/split/image688.o (.data); + build/e/assets/images/split/image689.o (.data); + build/e/assets/images/split/image690.o (.data); + build/e/assets/images/split/image691.o (.data); + build/e/assets/images/split/image692.o (.data); + build/e/assets/images/split/image693.o (.data); + build/e/assets/images/split/image694.o (.data); + build/e/assets/images/split/image695.o (.data); + build/e/assets/images/split/image696.o (.data); + build/e/assets/images/split/image697.o (.data); + build/e/assets/images/split/image698.o (.data); + build/e/assets/images/split/image699.o (.data); + build/e/assets/images/split/image700.o (.data); + build/e/assets/images/split/image701.o (.data); + build/e/assets/images/split/image702.o (.data); + build/e/assets/images/split/image703.o (.data); + build/e/assets/images/split/image704.o (.data); + build/e/assets/images/split/image705.o (.data); + build/e/assets/images/split/image706.o (.data); + build/e/assets/images/split/image707.o (.data); + build/e/assets/images/split/image708.o (.data); + build/e/assets/images/split/image709.o (.data); + build/e/assets/images/split/image710.o (.data); + build/e/assets/images/split/image711.o (.data); + build/e/assets/images/split/image712.o (.data); + build/e/assets/images/split/image713.o (.data); + build/e/assets/images/split/image714.o (.data); + build/e/assets/images/split/image715.o (.data); + build/e/assets/images/split/image716.o (.data); + build/e/assets/images/split/image717.o (.data); + build/e/assets/images/split/image718.o (.data); + build/e/assets/images/split/image719.o (.data); + build/e/assets/images/split/image720.o (.data); + build/e/assets/images/split/image721.o (.data); + build/e/assets/images/split/image722.o (.data); + build/e/assets/images/split/image723.o (.data); + build/e/assets/images/split/image724.o (.data); + build/e/assets/images/split/image725.o (.data); + build/e/assets/images/split/image726.o (.data); + build/e/assets/images/split/image727.o (.data); + build/e/assets/images/split/image728.o (.data); + build/e/assets/images/split/image729.o (.data); + build/e/assets/images/split/image730.o (.data); + build/e/assets/images/split/image731.o (.data); + build/e/assets/images/split/image732.o (.data); + build/e/assets/images/split/image733.o (.data); + build/e/assets/images/split/image734.o (.data); + build/e/assets/images/split/image735.o (.data); + build/e/assets/images/split/image736.o (.data); + build/e/assets/images/split/image737.o (.data); + build/e/assets/images/split/image738.o (.data); + build/e/assets/images/split/image739.o (.data); + build/e/assets/images/split/image740.o (.data); + build/e/assets/images/split/image741.o (.data); + build/e/assets/images/split/image742.o (.data); + build/e/assets/images/split/image743.o (.data); + build/e/assets/images/split/image744.o (.data); + build/e/assets/images/split/image745.o (.data); + build/e/assets/images/split/image746.o (.data); + build/e/assets/images/split/image747.o (.data); + build/e/assets/images/split/image748.o (.data); + build/e/assets/images/split/image749.o (.data); + build/e/assets/images/split/image750.o (.data); + build/e/assets/images/split/image751.o (.data); + build/e/assets/images/split/image752.o (.data); + build/e/assets/images/split/image753.o (.data); + build/e/assets/images/split/image754.o (.data); + build/e/assets/images/split/image755.o (.data); + build/e/assets/images/split/image756.o (.data); + build/e/assets/images/split/image757.o (.data); + build/e/assets/images/split/image758.o (.data); + build/e/assets/images/split/image759.o (.data); + build/e/assets/images/split/image760.o (.data); + build/e/assets/images/split/image761.o (.data); + build/e/assets/images/split/image762.o (.data); + build/e/assets/images/split/image763.o (.data); + build/e/assets/images/split/image764.o (.data); + build/e/assets/images/split/image765.o (.data); + build/e/assets/images/split/image766.o (.data); + build/e/assets/images/split/image767.o (.data); + build/e/assets/images/split/image768.o (.data); + build/e/assets/images/split/image769.o (.data); + build/e/assets/images/split/image770.o (.data); + build/e/assets/images/split/image771.o (.data); + build/e/assets/images/split/image772.o (.data); + build/e/assets/images/split/image773.o (.data); + build/e/assets/images/split/image774.o (.data); + build/e/assets/images/split/image775.o (.data); + build/e/assets/images/split/image776.o (.data); + build/e/assets/images/split/image777.o (.data); + build/e/assets/images/split/image778.o (.data); + build/e/assets/images/split/image779.o (.data); + build/e/assets/images/split/image780.o (.data); + build/e/assets/images/split/image781.o (.data); + build/e/assets/images/split/image782.o (.data); + build/e/assets/images/split/image783.o (.data); + build/e/assets/images/split/image784.o (.data); + build/e/assets/images/split/image785.o (.data); + build/e/assets/images/split/image786.o (.data); + build/e/assets/images/split/image787.o (.data); + build/e/assets/images/split/image788.o (.data); + build/e/assets/images/split/image789.o (.data); + build/e/assets/images/split/image790.o (.data); + build/e/assets/images/split/image791.o (.data); + build/e/assets/images/split/image792.o (.data); + build/e/assets/images/split/image793.o (.data); + build/e/assets/images/split/image794.o (.data); + build/e/assets/images/split/image795.o (.data); + build/e/assets/images/split/image796.o (.data); + build/e/assets/images/split/image797.o (.data); + build/e/assets/images/split/image798.o (.data); + build/e/assets/images/split/image799.o (.data); + build/e/assets/images/split/image800.o (.data); + build/e/assets/images/split/image801.o (.data); + build/e/assets/images/split/image802.o (.data); + build/e/assets/images/split/image803.o (.data); + build/e/assets/images/split/image804.o (.data); + build/e/assets/images/split/image805.o (.data); + build/e/assets/images/split/image806.o (.data); + build/e/assets/images/split/image807.o (.data); + build/e/assets/images/split/image808.o (.data); + build/e/assets/images/split/image809.o (.data); + build/e/assets/images/split/image810.o (.data); + build/e/assets/images/split/image811.o (.data); + build/e/assets/images/split/image812.o (.data); + build/e/assets/images/split/image813.o (.data); + build/e/assets/images/split/image814.o (.data); + build/e/assets/images/split/image815.o (.data); + build/e/assets/images/split/image816.o (.data); + build/e/assets/images/split/image817.o (.data); + build/e/assets/images/split/image818.o (.data); + build/e/assets/images/split/image819.o (.data); + build/e/assets/images/split/image820.o (.data); + build/e/assets/images/split/image821.o (.data); + build/e/assets/images/split/image822.o (.data); + build/e/assets/images/split/image823.o (.data); + build/e/assets/images/split/image824.o (.data); + build/e/assets/images/split/image825.o (.data); + build/e/assets/images/split/image826.o (.data); + build/e/assets/images/split/image827.o (.data); + build/e/assets/images/split/image828.o (.data); + build/e/assets/images/split/image829.o (.data); + build/e/assets/images/split/image830.o (.data); + build/e/assets/images/split/image831.o (.data); + build/e/assets/images/split/image832.o (.data); + build/e/assets/images/split/image833.o (.data); + build/e/assets/images/split/image834.o (.data); + build/e/assets/images/split/image835.o (.data); + build/e/assets/images/split/image836.o (.data); + build/e/assets/images/split/image837.o (.data); + build/e/assets/images/split/image838.o (.data); + build/e/assets/images/split/image839.o (.data); + build/e/assets/images/split/image840.o (.data); + build/e/assets/images/split/image841.o (.data); + build/e/assets/images/split/image842.o (.data); + build/e/assets/images/split/image843.o (.data); + build/e/assets/images/split/image844.o (.data); + build/e/assets/images/split/image845.o (.data); + build/e/assets/images/split/image846.o (.data); + build/e/assets/images/split/image847.o (.data); + build/e/assets/images/split/image848.o (.data); + build/e/assets/images/split/image849.o (.data); + build/e/assets/images/split/image850.o (.data); + build/e/assets/images/split/image851.o (.data); + build/e/assets/images/split/image852.o (.data); + build/e/assets/images/split/image853.o (.data); + build/e/assets/images/split/image854.o (.data); + build/e/assets/images/split/image855.o (.data); + build/e/assets/images/split/image856.o (.data); + build/e/assets/images/split/image857.o (.data); + build/e/assets/images/split/image858.o (.data); + build/e/assets/images/split/image859.o (.data); + build/e/assets/images/split/image860.o (.data); + build/e/assets/images/split/image861.o (.data); + build/e/assets/images/split/image862.o (.data); + build/e/assets/images/split/image863.o (.data); + build/e/assets/images/split/image864.o (.data); + build/e/assets/images/split/image865.o (.data); + build/e/assets/images/split/image866.o (.data); + build/e/assets/images/split/image867.o (.data); + build/e/assets/images/split/image868.o (.data); + build/e/assets/images/split/image869.o (.data); + build/e/assets/images/split/image870.o (.data); + build/e/assets/images/split/image871.o (.data); + build/e/assets/images/split/image872.o (.data); + build/e/assets/images/split/image873.o (.data); + build/e/assets/images/split/image874.o (.data); + build/e/assets/images/split/image875.o (.data); + build/e/assets/images/split/image876.o (.data); + build/e/assets/images/split/image877.o (.data); + build/e/assets/images/split/image878.o (.data); + build/e/assets/images/split/image879.o (.data); + build/e/assets/images/split/image880.o (.data); + build/e/assets/images/split/image881.o (.data); + build/e/assets/images/split/image882.o (.data); + build/e/assets/images/split/image883.o (.data); + build/e/assets/images/split/image884.o (.data); + build/e/assets/images/split/image885.o (.data); + build/e/assets/images/split/image886.o (.data); + build/e/assets/images/split/image887.o (.data); + build/e/assets/images/split/image888.o (.data); + build/e/assets/images/split/image889.o (.data); + build/e/assets/images/split/image890.o (.data); + build/e/assets/images/split/image891.o (.data); + build/e/assets/images/split/image892.o (.data); + build/e/assets/images/split/image893.o (.data); + build/e/assets/images/split/image894.o (.data); + build/e/assets/images/split/image895.o (.data); + build/e/assets/images/split/image896.o (.data); + build/e/assets/images/split/image897.o (.data); + build/e/assets/images/split/image898.o (.data); + build/e/assets/images/split/image899.o (.data); + build/e/assets/images/split/image900.o (.data); + build/e/assets/images/split/image901.o (.data); + build/e/assets/images/split/image902.o (.data); + build/e/assets/images/split/image903.o (.data); + build/e/assets/images/split/image904.o (.data); + build/e/assets/images/split/image905.o (.data); + build/e/assets/images/split/image906.o (.data); + build/e/assets/images/split/image907.o (.data); + build/e/assets/images/split/image908.o (.data); + build/e/assets/images/split/image909.o (.data); + build/e/assets/images/split/image910.o (.data); + build/e/assets/images/split/image911.o (.data); + build/e/assets/images/split/image912.o (.data); + build/e/assets/images/split/image913.o (.data); + build/e/assets/images/split/image914.o (.data); + build/e/assets/images/split/image915.o (.data); + build/e/assets/images/split/image916.o (.data); + build/e/assets/images/split/image917.o (.data); + build/e/assets/images/split/image918.o (.data); + build/e/assets/images/split/image919.o (.data); + build/e/assets/images/split/image920.o (.data); + build/e/assets/images/split/image921.o (.data); + build/e/assets/images/split/image922.o (.data); + build/e/assets/images/split/image923.o (.data); + build/e/assets/images/split/image924.o (.data); + build/e/assets/images/split/image925.o (.data); + build/e/assets/images/split/image926.o (.data); + build/e/assets/images/split/image927.o (.data); + build/e/assets/images/split/image928.o (.data); + build/e/assets/images/split/image929.o (.data); + build/e/assets/images/split/image930.o (.data); + build/e/assets/images/split/image931.o (.data); + build/e/assets/images/split/image932.o (.data); + build/e/assets/images/split/image933.o (.data); + build/e/assets/images/split/image934.o (.data); + build/e/assets/images/split/image935.o (.data); + build/e/assets/images/split/image936.o (.data); + build/e/assets/images/split/image937.o (.data); + build/e/assets/images/split/image938.o (.data); + build/e/assets/images/split/image939.o (.data); + build/e/assets/images/split/image940.o (.data); + build/e/assets/images/split/image941.o (.data); + build/e/assets/images/split/image942.o (.data); + build/e/assets/images/split/image943.o (.data); + build/e/assets/images/split/image944.o (.data); + build/e/assets/images/split/image945.o (.data); + build/e/assets/images/split/image946.o (.data); + build/e/assets/images/split/image947.o (.data); + build/e/assets/images/split/image948.o (.data); + build/e/assets/images/split/image949.o (.data); + build/e/assets/images/split/image950.o (.data); + build/e/assets/images/split/image951.o (.data); + build/e/assets/images/split/image952.o (.data); + build/e/assets/images/split/image953.o (.data); + build/e/assets/images/split/image954.o (.data); + build/e/assets/images/split/image955.o (.data); + build/e/assets/images/split/image956.o (.data); + build/e/assets/images/split/image957.o (.data); + build/e/assets/images/split/image958.o (.data); + build/e/assets/images/split/image959.o (.data); + build/e/assets/images/split/image960.o (.data); + build/e/assets/images/split/image961.o (.data); + build/e/assets/images/split/image962.o (.data); + build/e/assets/images/split/image963.o (.data); + build/e/assets/images/split/image964.o (.data); + build/e/assets/images/split/image965.o (.data); + build/e/assets/images/split/image966.o (.data); + build/e/assets/images/split/image967.o (.data); + build/e/assets/images/split/image968.o (.data); + build/e/assets/images/split/image969.o (.data); + build/e/assets/images/split/image970.o (.data); + build/e/assets/images/split/image971.o (.data); + build/e/assets/images/split/image972.o (.data); + build/e/assets/images/split/image973.o (.data); + build/e/assets/images/split/image974.o (.data); + build/e/assets/images/split/image975.o (.data); + build/e/assets/images/split/image976.o (.data); + build/e/assets/images/split/image977.o (.data); + build/e/assets/images/split/image978.o (.data); + build/e/assets/images/split/image979.o (.data); + build/e/assets/images/split/image980.o (.data); + build/e/assets/images/split/image981.o (.data); + build/e/assets/images/split/image982.o (.data); + build/e/assets/images/split/image983.o (.data); + build/e/assets/images/split/image984.o (.data); + build/e/assets/images/split/image985.o (.data); + build/e/assets/images/split/image986.o (.data); + build/e/assets/images/split/image987.o (.data); + build/e/assets/images/split/image988.o (.data); + build/e/assets/images/split/image989.o (.data); + build/e/assets/images/split/image990.o (.data); + build/e/assets/images/split/image991.o (.data); + build/e/assets/images/split/image992.o (.data); + build/e/assets/images/split/image993.o (.data); + build/e/assets/images/split/image994.o (.data); + build/e/assets/images/split/image995.o (.data); + build/e/assets/images/split/image996.o (.data); + build/e/assets/images/split/image997.o (.data); + build/e/assets/images/split/image998.o (.data); + build/e/assets/images/split/image999.o (.data); + build/e/assets/images/split/image1000.o (.data); + build/e/assets/images/split/image1001.o (.data); + build/e/assets/images/split/image1002.o (.data); + build/e/assets/images/split/image1003.o (.data); + build/e/assets/images/split/image1004.o (.data); + build/e/assets/images/split/image1005.o (.data); + build/e/assets/images/split/image1006.o (.data); + build/e/assets/images/split/image1007.o (.data); + build/e/assets/images/split/image1008.o (.data); + build/e/assets/images/split/image1009.o (.data); + build/e/assets/images/split/image1010.o (.data); + build/e/assets/images/split/image1011.o (.data); + build/e/assets/images/split/image1012.o (.data); + build/e/assets/images/split/image1013.o (.data); + build/e/assets/images/split/image1014.o (.data); + build/e/assets/images/split/image1015.o (.data); + build/e/assets/images/split/image1016.o (.data); + build/e/assets/images/split/image1017.o (.data); + build/e/assets/images/split/image1018.o (.data); + build/e/assets/images/split/image1019.o (.data); + build/e/assets/images/split/image1020.o (.data); + build/e/assets/images/split/image1021.o (.data); + build/e/assets/images/split/image1022.o (.data); + build/e/assets/images/split/image1023.o (.data); + build/e/assets/images/split/image1024.o (.data); + build/e/assets/images/split/image1025.o (.data); + build/e/assets/images/split/image1026.o (.data); + build/e/assets/images/split/image1027.o (.data); + build/e/assets/images/split/image1028.o (.data); + build/e/assets/images/split/image1029.o (.data); + build/e/assets/images/split/image1030.o (.data); + build/e/assets/images/split/image1031.o (.data); + build/e/assets/images/split/image1032.o (.data); + build/e/assets/images/split/image1033.o (.data); + build/e/assets/images/split/image1034.o (.data); + build/e/assets/images/split/image1035.o (.data); + build/e/assets/images/split/image1036.o (.data); + build/e/assets/images/split/image1037.o (.data); + build/e/assets/images/split/image1038.o (.data); + build/e/assets/images/split/image1039.o (.data); + build/e/assets/images/split/image1040.o (.data); + build/e/assets/images/split/image1041.o (.data); + build/e/assets/images/split/image1042.o (.data); + build/e/assets/images/split/image1043.o (.data); + build/e/assets/images/split/image1044.o (.data); + build/e/assets/images/split/image1045.o (.data); + build/e/assets/images/split/image1046.o (.data); + build/e/assets/images/split/image1047.o (.data); + build/e/assets/images/split/image1048.o (.data); + build/e/assets/images/split/image1049.o (.data); + build/e/assets/images/split/image1050.o (.data); + build/e/assets/images/split/image1051.o (.data); + build/e/assets/images/split/image1052.o (.data); + build/e/assets/images/split/image1053.o (.data); + build/e/assets/images/split/image1054.o (.data); + build/e/assets/images/split/image1055.o (.data); + build/e/assets/images/split/image1056.o (.data); + build/e/assets/images/split/image1057.o (.data); + build/e/assets/images/split/image1058.o (.data); + build/e/assets/images/split/image1059.o (.data); + build/e/assets/images/split/image1060.o (.data); + build/e/assets/images/split/image1061.o (.data); + build/e/assets/images/split/image1062.o (.data); + build/e/assets/images/split/image1063.o (.data); + build/e/assets/images/split/image1064.o (.data); + build/e/assets/images/split/image1065.o (.data); + build/e/assets/images/split/image1066.o (.data); + build/e/assets/images/split/image1067.o (.data); + build/e/assets/images/split/image1068.o (.data); + build/e/assets/images/split/image1069.o (.data); + build/e/assets/images/split/image1070.o (.data); + build/e/assets/images/split/image1071.o (.data); + build/e/assets/images/split/image1072.o (.data); + build/e/assets/images/split/image1073.o (.data); + build/e/assets/images/split/image1074.o (.data); + build/e/assets/images/split/image1075.o (.data); + build/e/assets/images/split/image1076.o (.data); + build/e/assets/images/split/image1077.o (.data); + build/e/assets/images/split/image1078.o (.data); + build/e/assets/images/split/image1079.o (.data); + build/e/assets/images/split/image1080.o (.data); + build/e/assets/images/split/image1081.o (.data); + build/e/assets/images/split/image1082.o (.data); + build/e/assets/images/split/image1083.o (.data); + build/e/assets/images/split/image1084.o (.data); + build/e/assets/images/split/image1085.o (.data); + build/e/assets/images/split/image1086.o (.data); + build/e/assets/images/split/image1087.o (.data); + build/e/assets/images/split/image1088.o (.data); + build/e/assets/images/split/image1089.o (.data); + build/e/assets/images/split/image1090.o (.data); + build/e/assets/images/split/image1091.o (.data); + build/e/assets/images/split/image1092.o (.data); + build/e/assets/images/split/image1093.o (.data); + build/e/assets/images/split/image1094.o (.data); + build/e/assets/images/split/image1095.o (.data); + build/e/assets/images/split/image1096.o (.data); + build/e/assets/images/split/image1097.o (.data); + build/e/assets/images/split/image1098.o (.data); + build/e/assets/images/split/image1099.o (.data); + build/e/assets/images/split/image1100.o (.data); + build/e/assets/images/split/image1101.o (.data); + build/e/assets/images/split/image1102.o (.data); + build/e/assets/images/split/image1103.o (.data); + build/e/assets/images/split/image1104.o (.data); + build/e/assets/images/split/image1105.o (.data); + build/e/assets/images/split/image1106.o (.data); + build/e/assets/images/split/image1107.o (.data); + build/e/assets/images/split/image1108.o (.data); + build/e/assets/images/split/image1109.o (.data); + build/e/assets/images/split/image1110.o (.data); + build/e/assets/images/split/image1111.o (.data); + build/e/assets/images/split/image1112.o (.data); + build/e/assets/images/split/image1113.o (.data); + build/e/assets/images/split/image1114.o (.data); + build/e/assets/images/split/image1115.o (.data); + build/e/assets/images/split/image1116.o (.data); + build/e/assets/images/split/image1117.o (.data); + build/e/assets/images/split/image1118.o (.data); + build/e/assets/images/split/image1119.o (.data); + build/e/assets/images/split/image1120.o (.data); + build/e/assets/images/split/image1121.o (.data); + build/e/assets/images/split/image1122.o (.data); + build/e/assets/images/split/image1123.o (.data); + build/e/assets/images/split/image1124.o (.data); + build/e/assets/images/split/image1125.o (.data); + build/e/assets/images/split/image1126.o (.data); + build/e/assets/images/split/image1127.o (.data); + build/e/assets/images/split/image1128.o (.data); + build/e/assets/images/split/image1129.o (.data); + build/e/assets/images/split/image1130.o (.data); + build/e/assets/images/split/image1131.o (.data); + build/e/assets/images/split/image1132.o (.data); + build/e/assets/images/split/image1133.o (.data); + build/e/assets/images/split/image1134.o (.data); + build/e/assets/images/split/image1135.o (.data); + build/e/assets/images/split/image1136.o (.data); + build/e/assets/images/split/image1137.o (.data); + build/e/assets/images/split/image1138.o (.data); + build/e/assets/images/split/image1139.o (.data); + build/e/assets/images/split/image1140.o (.data); + build/e/assets/images/split/image1141.o (.data); + build/e/assets/images/split/image1142.o (.data); + build/e/assets/images/split/image1143.o (.data); + build/e/assets/images/split/image1144.o (.data); + build/e/assets/images/split/image1145.o (.data); + build/e/assets/images/split/image1146.o (.data); + build/e/assets/images/split/image1147.o (.data); + build/e/assets/images/split/image1148.o (.data); + build/e/assets/images/split/image1149.o (.data); + build/e/assets/images/split/image1150.o (.data); + build/e/assets/images/split/image1151.o (.data); + build/e/assets/images/split/image1152.o (.data); + build/e/assets/images/split/image1153.o (.data); + build/e/assets/images/split/image1154.o (.data); + build/e/assets/images/split/image1155.o (.data); + build/e/assets/images/split/image1156.o (.data); + build/e/assets/images/split/image1157.o (.data); + build/e/assets/images/split/image1158.o (.data); + build/e/assets/images/split/image1159.o (.data); + build/e/assets/images/split/image1160.o (.data); + build/e/assets/images/split/image1161.o (.data); + build/e/assets/images/split/image1162.o (.data); + build/e/assets/images/split/image1163.o (.data); + build/e/assets/images/split/image1164.o (.data); + build/e/assets/images/split/image1165.o (.data); + build/e/assets/images/split/image1166.o (.data); + build/e/assets/images/split/image1167.o (.data); + build/e/assets/images/split/image1168.o (.data); + build/e/assets/images/split/image1169.o (.data); + build/e/assets/images/split/image1170.o (.data); + build/e/assets/images/split/image1171.o (.data); + build/e/assets/images/split/image1172.o (.data); + build/e/assets/images/split/image1173.o (.data); + build/e/assets/images/split/image1174.o (.data); + build/e/assets/images/split/image1175.o (.data); + build/e/assets/images/split/image1176.o (.data); + build/e/assets/images/split/image1177.o (.data); + build/e/assets/images/split/image1178.o (.data); + build/e/assets/images/split/image1179.o (.data); + build/e/assets/images/split/image1180.o (.data); + build/e/assets/images/split/image1181.o (.data); + build/e/assets/images/split/image1182.o (.data); + build/e/assets/images/split/image1183.o (.data); + build/e/assets/images/split/image1184.o (.data); + build/e/assets/images/split/image1185.o (.data); + build/e/assets/images/split/image1186.o (.data); + build/e/assets/images/split/image1187.o (.data); + build/e/assets/images/split/image1188.o (.data); + build/e/assets/images/split/image1189.o (.data); + build/e/assets/images/split/image1190.o (.data); + build/e/assets/images/split/image1191.o (.data); + build/e/assets/images/split/image1192.o (.data); + build/e/assets/images/split/image1193.o (.data); + build/e/assets/images/split/image1194.o (.data); + build/e/assets/images/split/image1195.o (.data); + build/e/assets/images/split/image1196.o (.data); + build/e/assets/images/split/image1197.o (.data); + build/e/assets/images/split/image1198.o (.data); + build/e/assets/images/split/image1199.o (.data); + build/e/assets/images/split/image1200.o (.data); + build/e/assets/images/split/image1201.o (.data); + build/e/assets/images/split/image1202.o (.data); + build/e/assets/images/split/image1203.o (.data); + build/e/assets/images/split/image1204.o (.data); + build/e/assets/images/split/image1205.o (.data); + build/e/assets/images/split/image1206.o (.data); + build/e/assets/images/split/image1207.o (.data); + build/e/assets/images/split/image1208.o (.data); + build/e/assets/images/split/image1209.o (.data); + build/e/assets/images/split/image1210.o (.data); + build/e/assets/images/split/image1211.o (.data); + build/e/assets/images/split/image1212.o (.data); + build/e/assets/images/split/image1213.o (.data); + build/e/assets/images/split/image1214.o (.data); + build/e/assets/images/split/image1215.o (.data); + build/e/assets/images/split/image1216.o (.data); + build/e/assets/images/split/image1217.o (.data); + build/e/assets/images/split/image1218.o (.data); + build/e/assets/images/split/image1219.o (.data); + build/e/assets/images/split/image1220.o (.data); + build/e/assets/images/split/image1221.o (.data); + build/e/assets/images/split/image1222.o (.data); + build/e/assets/images/split/image1223.o (.data); + build/e/assets/images/split/image1224.o (.data); + build/e/assets/images/split/image1225.o (.data); + build/e/assets/images/split/image1226.o (.data); + build/e/assets/images/split/image1227.o (.data); + build/e/assets/images/split/image1228.o (.data); + build/e/assets/images/split/image1229.o (.data); + build/e/assets/images/split/image1230.o (.data); + build/e/assets/images/split/image1231.o (.data); + build/e/assets/images/split/image1232.o (.data); + build/e/assets/images/split/image1233.o (.data); + build/e/assets/images/split/image1234.o (.data); + build/e/assets/images/split/image1235.o (.data); + build/e/assets/images/split/image1236.o (.data); + build/e/assets/images/split/image1237.o (.data); + build/e/assets/images/split/image1238.o (.data); + build/e/assets/images/split/image1239.o (.data); + build/e/assets/images/split/image1240.o (.data); + build/e/assets/images/split/image1241.o (.data); + build/e/assets/images/split/image1242.o (.data); + build/e/assets/images/split/image1243.o (.data); + build/e/assets/images/split/image1244.o (.data); + build/e/assets/images/split/image1245.o (.data); + build/e/assets/images/split/image1246.o (.data); + build/e/assets/images/split/image1247.o (.data); + build/e/assets/images/split/image1248.o (.data); + build/e/assets/images/split/image1249.o (.data); + build/e/assets/images/split/image1250.o (.data); + build/e/assets/images/split/image1251.o (.data); + build/e/assets/images/split/image1252.o (.data); + build/e/assets/images/split/image1253.o (.data); + build/e/assets/images/split/image1254.o (.data); + build/e/assets/images/split/image1255.o (.data); + build/e/assets/images/split/image1256.o (.data); + build/e/assets/images/split/image1257.o (.data); + build/e/assets/images/split/image1258.o (.data); + build/e/assets/images/split/image1259.o (.data); + build/e/assets/images/split/image1260.o (.data); + build/e/assets/images/split/image1261.o (.data); + build/e/assets/images/split/image1262.o (.data); + build/e/assets/images/split/image1263.o (.data); + build/e/assets/images/split/image1264.o (.data); + build/e/assets/images/split/image1265.o (.data); + build/e/assets/images/split/image1266.o (.data); + build/e/assets/images/split/image1267.o (.data); + build/e/assets/images/split/image1268.o (.data); + build/e/assets/images/split/image1269.o (.data); + build/e/assets/images/split/image1270.o (.data); + build/e/assets/images/split/image1271.o (.data); + build/e/assets/images/split/image1272.o (.data); + build/e/assets/images/split/image1273.o (.data); + build/e/assets/images/split/image1274.o (.data); + build/e/assets/images/split/image1275.o (.data); + build/e/assets/images/split/image1276.o (.data); + build/e/assets/images/split/image1277.o (.data); + build/e/assets/images/split/image1278.o (.data); + build/e/assets/images/split/image1279.o (.data); + build/e/assets/images/split/image1280.o (.data); + build/e/assets/images/split/image1281.o (.data); + build/e/assets/images/split/image1282.o (.data); + build/e/assets/images/split/image1283.o (.data); + build/e/assets/images/split/image1284.o (.data); + build/e/assets/images/split/image1285.o (.data); + build/e/assets/images/split/image1286.o (.data); + build/e/assets/images/split/image1287.o (.data); + build/e/assets/images/split/image1288.o (.data); + build/e/assets/images/split/image1289.o (.data); + build/e/assets/images/split/image1290.o (.data); + build/e/assets/images/split/image1291.o (.data); + build/e/assets/images/split/image1292.o (.data); + build/e/assets/images/split/image1293.o (.data); + build/e/assets/images/split/image1294.o (.data); + build/e/assets/images/split/image1295.o (.data); + build/e/assets/images/split/image1296.o (.data); + build/e/assets/images/split/image1297.o (.data); + build/e/assets/images/split/image1298.o (.data); + build/e/assets/images/split/image1299.o (.data); + build/e/assets/images/split/image1300.o (.data); + build/e/assets/images/split/image1301.o (.data); + build/e/assets/images/split/image1302.o (.data); + build/e/assets/images/split/image1303.o (.data); + build/e/assets/images/split/image1304.o (.data); + build/e/assets/images/split/image1305.o (.data); + build/e/assets/images/split/image1306.o (.data); + build/e/assets/images/split/image1307.o (.data); + build/e/assets/images/split/image1308.o (.data); + build/e/assets/images/split/image1309.o (.data); + build/e/assets/images/split/image1310.o (.data); + build/e/assets/images/split/image1311.o (.data); + build/e/assets/images/split/image1312.o (.data); + build/e/assets/images/split/image1313.o (.data); + build/e/assets/images/split/image1314.o (.data); + build/e/assets/images/split/image1315.o (.data); + build/e/assets/images/split/image1316.o (.data); + build/e/assets/images/split/image1317.o (.data); + build/e/assets/images/split/image1318.o (.data); + build/e/assets/images/split/image1319.o (.data); + build/e/assets/images/split/image1320.o (.data); + build/e/assets/images/split/image1321.o (.data); + build/e/assets/images/split/image1322.o (.data); + build/e/assets/images/split/image1323.o (.data); + build/e/assets/images/split/image1324.o (.data); + build/e/assets/images/split/image1325.o (.data); + build/e/assets/images/split/image1326.o (.data); + build/e/assets/images/split/image1327.o (.data); + build/e/assets/images/split/image1328.o (.data); + build/e/assets/images/split/image1329.o (.data); + build/e/assets/images/split/image1330.o (.data); + build/e/assets/images/split/image1331.o (.data); + build/e/assets/images/split/image1332.o (.data); + build/e/assets/images/split/image1333.o (.data); + build/e/assets/images/split/image1334.o (.data); + build/e/assets/images/split/image1335.o (.data); + build/e/assets/images/split/image1336.o (.data); + build/e/assets/images/split/image1337.o (.data); + build/e/assets/images/split/image1338.o (.data); + build/e/assets/images/split/image1339.o (.data); + build/e/assets/images/split/image1340.o (.data); + build/e/assets/images/split/image1341.o (.data); + build/e/assets/images/split/image1342.o (.data); + build/e/assets/images/split/image1343.o (.data); + build/e/assets/images/split/image1344.o (.data); + build/e/assets/images/split/image1345.o (.data); + build/e/assets/images/split/image1346.o (.data); + build/e/assets/images/split/image1347.o (.data); + build/e/assets/images/split/image1348.o (.data); + build/e/assets/images/split/image1349.o (.data); + build/e/assets/images/split/image1350.o (.data); + build/e/assets/images/split/image1351.o (.data); + build/e/assets/images/split/image1352.o (.data); + build/e/assets/images/split/image1353.o (.data); + build/e/assets/images/split/image1354.o (.data); + build/e/assets/images/split/image1355.o (.data); + build/e/assets/images/split/image1356.o (.data); + build/e/assets/images/split/image1357.o (.data); + build/e/assets/images/split/image1358.o (.data); + build/e/assets/images/split/image1359.o (.data); + build/e/assets/images/split/image1360.o (.data); + build/e/assets/images/split/image1361.o (.data); + build/e/assets/images/split/image1362.o (.data); + build/e/assets/images/split/image1363.o (.data); + build/e/assets/images/split/image1364.o (.data); + build/e/assets/images/split/image1365.o (.data); + build/e/assets/images/split/image1366.o (.data); + build/e/assets/images/split/image1367.o (.data); + build/e/assets/images/split/image1368.o (.data); + build/e/assets/images/split/image1369.o (.data); + build/e/assets/images/split/image1370.o (.data); + build/e/assets/images/split/image1371.o (.data); + build/e/assets/images/split/image1372.o (.data); + build/e/assets/images/split/image1373.o (.data); + build/e/assets/images/split/image1374.o (.data); + build/e/assets/images/split/image1375.o (.data); + build/e/assets/images/split/image1376.o (.data); + build/e/assets/images/split/image1377.o (.data); + build/e/assets/images/split/image1378.o (.data); + build/e/assets/images/split/image1379.o (.data); + build/e/assets/images/split/image1380.o (.data); + build/e/assets/images/split/image1381.o (.data); + build/e/assets/images/split/image1382.o (.data); + build/e/assets/images/split/image1383.o (.data); + build/e/assets/images/split/image1384.o (.data); + build/e/assets/images/split/image1385.o (.data); + build/e/assets/images/split/image1386.o (.data); + build/e/assets/images/split/image1387.o (.data); + build/e/assets/images/split/image1388.o (.data); + build/e/assets/images/split/image1389.o (.data); + build/e/assets/images/split/image1390.o (.data); + build/e/assets/images/split/image1391.o (.data); + build/e/assets/images/split/image1392.o (.data); + build/e/assets/images/split/image1393.o (.data); + build/e/assets/images/split/image1394.o (.data); + build/e/assets/images/split/image1395.o (.data); + build/e/assets/images/split/image1396.o (.data); + build/e/assets/images/split/image1397.o (.data); + build/e/assets/images/split/image1398.o (.data); + build/e/assets/images/split/image1399.o (.data); + build/e/assets/images/split/image1400.o (.data); + build/e/assets/images/split/image1401.o (.data); + build/e/assets/images/split/image1402.o (.data); + build/e/assets/images/split/image1403.o (.data); + build/e/assets/images/split/image1404.o (.data); + build/e/assets/images/split/image1405.o (.data); + build/e/assets/images/split/image1406.o (.data); + build/e/assets/images/split/image1407.o (.data); + build/e/assets/images/split/image1408.o (.data); + build/e/assets/images/split/image1409.o (.data); + build/e/assets/images/split/image1410.o (.data); + build/e/assets/images/split/image1411.o (.data); + build/e/assets/images/split/image1412.o (.data); + build/e/assets/images/split/image1413.o (.data); + build/e/assets/images/split/image1414.o (.data); + build/e/assets/images/split/image1415.o (.data); + build/e/assets/images/split/image1416.o (.data); + build/e/assets/images/split/image1417.o (.data); + build/e/assets/images/split/image1418.o (.data); + build/e/assets/images/split/image1419.o (.data); + build/e/assets/images/split/image1420.o (.data); + build/e/assets/images/split/image1421.o (.data); + build/e/assets/images/split/image1422.o (.data); + build/e/assets/images/split/image1423.o (.data); + build/e/assets/images/split/image1424.o (.data); + build/e/assets/images/split/image1425.o (.data); + build/e/assets/images/split/image1426.o (.data); + build/e/assets/images/split/image1427.o (.data); + build/e/assets/images/split/image1428.o (.data); + build/e/assets/images/split/image1429.o (.data); + build/e/assets/images/split/image1430.o (.data); + build/e/assets/images/split/image1431.o (.data); + build/e/assets/images/split/image1432.o (.data); + build/e/assets/images/split/image1433.o (.data); + build/e/assets/images/split/image1434.o (.data); + build/e/assets/images/split/image1435.o (.data); + build/e/assets/images/split/image1436.o (.data); + build/e/assets/images/split/image1437.o (.data); + build/e/assets/images/split/image1438.o (.data); + build/e/assets/images/split/image1439.o (.data); + build/e/assets/images/split/image1440.o (.data); + build/e/assets/images/split/image1441.o (.data); + build/e/assets/images/split/image1442.o (.data); + build/e/assets/images/split/image1443.o (.data); + build/e/assets/images/split/image1444.o (.data); + build/e/assets/images/split/image1445.o (.data); + build/e/assets/images/split/image1446.o (.data); + build/e/assets/images/split/image1447.o (.data); + build/e/assets/images/split/image1448.o (.data); + build/e/assets/images/split/image1449.o (.data); + build/e/assets/images/split/image1450.o (.data); + build/e/assets/images/split/image1451.o (.data); + build/e/assets/images/split/image1452.o (.data); + build/e/assets/images/split/image1453.o (.data); + build/e/assets/images/split/image1454.o (.data); + build/e/assets/images/split/image1455.o (.data); + build/e/assets/images/split/image1456.o (.data); + build/e/assets/images/split/image1457.o (.data); + build/e/assets/images/split/image1458.o (.data); + build/e/assets/images/split/image1459.o (.data); + build/e/assets/images/split/image1460.o (.data); + build/e/assets/images/split/image1461.o (.data); + build/e/assets/images/split/image1462.o (.data); + build/e/assets/images/split/image1463.o (.data); + build/e/assets/images/split/image1464.o (.data); + build/e/assets/images/split/image1465.o (.data); + build/e/assets/images/split/image1466.o (.data); + build/e/assets/images/split/image1467.o (.data); + build/e/assets/images/split/image1468.o (.data); + build/e/assets/images/split/image1469.o (.data); + build/e/assets/images/split/image1470.o (.data); + build/e/assets/images/split/image1471.o (.data); + build/e/assets/images/split/image1472.o (.data); + build/e/assets/images/split/image1473.o (.data); + build/e/assets/images/split/image1474.o (.data); + build/e/assets/images/split/image1475.o (.data); + build/e/assets/images/split/image1476.o (.data); + build/e/assets/images/split/image1477.o (.data); + build/e/assets/images/split/image1478.o (.data); + build/e/assets/images/split/image1479.o (.data); + build/e/assets/images/split/image1480.o (.data); + build/e/assets/images/split/image1481.o (.data); + build/e/assets/images/split/image1482.o (.data); + build/e/assets/images/split/image1483.o (.data); + build/e/assets/images/split/image1484.o (.data); + build/e/assets/images/split/image1485.o (.data); + build/e/assets/images/split/image1486.o (.data); + build/e/assets/images/split/image1487.o (.data); + build/e/assets/images/split/image1488.o (.data); + build/e/assets/images/split/image1489.o (.data); + build/e/assets/images/split/image1490.o (.data); + build/e/assets/images/split/image1491.o (.data); + build/e/assets/images/split/image1492.o (.data); + build/e/assets/images/split/image1493.o (.data); + build/e/assets/images/split/image1494.o (.data); + build/e/assets/images/split/image1495.o (.data); + build/e/assets/images/split/image1496.o (.data); + build/e/assets/images/split/image1497.o (.data); + build/e/assets/images/split/image1498.o (.data); + build/e/assets/images/split/image1499.o (.data); + build/e/assets/images/split/image1500.o (.data); + build/e/assets/images/split/image1501.o (.data); + build/e/assets/images/split/image1502.o (.data); + build/e/assets/images/split/image1503.o (.data); + build/e/assets/images/split/image1504.o (.data); + build/e/assets/images/split/image1505.o (.data); + build/e/assets/images/split/image1506.o (.data); + build/e/assets/images/split/image1507.o (.data); + build/e/assets/images/split/image1508.o (.data); + build/e/assets/images/split/image1509.o (.data); + build/e/assets/images/split/image1510.o (.data); + build/e/assets/images/split/image1511.o (.data); + build/e/assets/images/split/image1512.o (.data); + build/e/assets/images/split/image1513.o (.data); + build/e/assets/images/split/image1514.o (.data); + build/e/assets/images/split/image1515.o (.data); + build/e/assets/images/split/image1516.o (.data); + build/e/assets/images/split/image1517.o (.data); + build/e/assets/images/split/image1518.o (.data); + build/e/assets/images/split/image1519.o (.data); + build/e/assets/images/split/image1520.o (.data); + build/e/assets/images/split/image1521.o (.data); + build/e/assets/images/split/image1522.o (.data); + build/e/assets/images/split/image1523.o (.data); + build/e/assets/images/split/image1524.o (.data); + build/e/assets/images/split/image1525.o (.data); + build/e/assets/images/split/image1526.o (.data); + build/e/assets/images/split/image1527.o (.data); + build/e/assets/images/split/image1528.o (.data); + build/e/assets/images/split/image1529.o (.data); + build/e/assets/images/split/image1530.o (.data); + build/e/assets/images/split/image1531.o (.data); + build/e/assets/images/split/image1532.o (.data); + build/e/assets/images/split/image1533.o (.data); + build/e/assets/images/split/image1534.o (.data); + build/e/assets/images/split/image1535.o (.data); + build/e/assets/images/split/image1536.o (.data); + build/e/assets/images/split/image1537.o (.data); + build/e/assets/images/split/image1538.o (.data); + build/e/assets/images/split/image1539.o (.data); + build/e/assets/images/split/image1540.o (.data); + build/e/assets/images/split/image1541.o (.data); + build/e/assets/images/split/image1542.o (.data); + build/e/assets/images/split/image1543.o (.data); + build/e/assets/images/split/image1544.o (.data); + build/e/assets/images/split/image1545.o (.data); + build/e/assets/images/split/image1546.o (.data); + build/e/assets/images/split/image1547.o (.data); + build/e/assets/images/split/image1548.o (.data); + build/e/assets/images/split/image1549.o (.data); + build/e/assets/images/split/image1550.o (.data); + build/e/assets/images/split/image1551.o (.data); + build/e/assets/images/split/image1552.o (.data); + build/e/assets/images/split/image1553.o (.data); + build/e/assets/images/split/image1554.o (.data); + build/e/assets/images/split/image1555.o (.data); + build/e/assets/images/split/image1556.o (.data); + build/e/assets/images/split/image1557.o (.data); + build/e/assets/images/split/image1558.o (.data); + build/e/assets/images/split/image1559.o (.data); + build/e/assets/images/split/image1560.o (.data); + build/e/assets/images/split/image1561.o (.data); + build/e/assets/images/split/image1562.o (.data); + build/e/assets/images/split/image1563.o (.data); + build/e/assets/images/split/image1564.o (.data); + build/e/assets/images/split/image1565.o (.data); + build/e/assets/images/split/image1566.o (.data); + build/e/assets/images/split/image1567.o (.data); + build/e/assets/images/split/image1568.o (.data); + build/e/assets/images/split/image1569.o (.data); + build/e/assets/images/split/image1570.o (.data); + build/e/assets/images/split/image1571.o (.data); + build/e/assets/images/split/image1572.o (.data); + build/e/assets/images/split/image1573.o (.data); + build/e/assets/images/split/image1574.o (.data); + build/e/assets/images/split/image1575.o (.data); + build/e/assets/images/split/image1576.o (.data); + build/e/assets/images/split/image1577.o (.data); + build/e/assets/images/split/image1578.o (.data); + build/e/assets/images/split/image1579.o (.data); + build/e/assets/images/split/image1580.o (.data); + build/e/assets/images/split/image1581.o (.data); + build/e/assets/images/split/image1582.o (.data); + build/e/assets/images/split/image1583.o (.data); + build/e/assets/images/split/image1584.o (.data); + build/e/assets/images/split/image1585.o (.data); + build/e/assets/images/split/image1586.o (.data); + build/e/assets/images/split/image1587.o (.data); + build/e/assets/images/split/image1588.o (.data); + build/e/assets/images/split/image1589.o (.data); + build/e/assets/images/split/image1590.o (.data); + build/e/assets/images/split/image1591.o (.data); + build/e/assets/images/split/image1592.o (.data); + build/e/assets/images/split/image1593.o (.data); + build/e/assets/images/split/image1594.o (.data); + build/e/assets/images/split/image1595.o (.data); + build/e/assets/images/split/image1596.o (.data); + build/e/assets/images/split/image1597.o (.data); + build/e/assets/images/split/image1598.o (.data); + build/e/assets/images/split/image1599.o (.data); + build/e/assets/images/split/image1600.o (.data); + build/e/assets/images/split/image1601.o (.data); + build/e/assets/images/split/image1602.o (.data); + build/e/assets/images/split/image1603.o (.data); + build/e/assets/images/split/image1604.o (.data); + build/e/assets/images/split/image1605.o (.data); + build/e/assets/images/split/image1606.o (.data); + build/e/assets/images/split/image1607.o (.data); + build/e/assets/images/split/image1608.o (.data); + build/e/assets/images/split/image1609.o (.data); + build/e/assets/images/split/image1610.o (.data); + build/e/assets/images/split/image1611.o (.data); + build/e/assets/images/split/image1612.o (.data); + build/e/assets/images/split/image1613.o (.data); + build/e/assets/images/split/image1614.o (.data); + build/e/assets/images/split/image1615.o (.data); + build/e/assets/images/split/image1616.o (.data); + build/e/assets/images/split/image1617.o (.data); + build/e/assets/images/split/image1618.o (.data); + build/e/assets/images/split/image1619.o (.data); + build/e/assets/images/split/image1620.o (.data); + build/e/assets/images/split/image1621.o (.data); + build/e/assets/images/split/image1622.o (.data); + build/e/assets/images/split/image1623.o (.data); + build/e/assets/images/split/image1624.o (.data); + build/e/assets/images/split/image1625.o (.data); + build/e/assets/images/split/image1626.o (.data); + build/e/assets/images/split/image1627.o (.data); + build/e/assets/images/split/image1628.o (.data); + build/e/assets/images/split/image1629.o (.data); + build/e/assets/images/split/image1630.o (.data); + build/e/assets/images/split/image1631.o (.data); + build/e/assets/images/split/image1632.o (.data); + build/e/assets/images/split/image1633.o (.data); + build/e/assets/images/split/image1634.o (.data); + build/e/assets/images/split/image1635.o (.data); + build/e/assets/images/split/image1636.o (.data); + build/e/assets/images/split/image1637.o (.data); + build/e/assets/images/split/image1638.o (.data); + build/e/assets/images/split/image1639.o (.data); + build/e/assets/images/split/image1640.o (.data); + build/e/assets/images/split/image1641.o (.data); + build/e/assets/images/split/image1642.o (.data); + build/e/assets/images/split/image1643.o (.data); + build/e/assets/images/split/image1644.o (.data); + build/e/assets/images/split/image1645.o (.data); + build/e/assets/images/split/image1646.o (.data); + build/e/assets/images/split/image1647.o (.data); + build/e/assets/images/split/image1648.o (.data); + build/e/assets/images/split/image1649.o (.data); + build/e/assets/images/split/image1650.o (.data); + build/e/assets/images/split/image1651.o (.data); + build/e/assets/images/split/image1652.o (.data); + build/e/assets/images/split/image1653.o (.data); + build/e/assets/images/split/image1654.o (.data); + build/e/assets/images/split/image1655.o (.data); + build/e/assets/images/split/image1656.o (.data); + build/e/assets/images/split/image1657.o (.data); + build/e/assets/images/split/image1658.o (.data); + build/e/assets/images/split/image1659.o (.data); + build/e/assets/images/split/image1660.o (.data); + build/e/assets/images/split/image1661.o (.data); + build/e/assets/images/split/image1662.o (.data); + build/e/assets/images/split/image1663.o (.data); + build/e/assets/images/split/image1664.o (.data); + build/e/assets/images/split/image1665.o (.data); + build/e/assets/images/split/image1666.o (.data); + build/e/assets/images/split/image1667.o (.data); + build/e/assets/images/split/image1668.o (.data); + build/e/assets/images/split/image1669.o (.data); + build/e/assets/images/split/image1670.o (.data); + build/e/assets/images/split/image1671.o (.data); + build/e/assets/images/split/image1672.o (.data); + build/e/assets/images/split/image1673.o (.data); + build/e/assets/images/split/image1674.o (.data); + build/e/assets/images/split/image1675.o (.data); + build/e/assets/images/split/image1676.o (.data); + build/e/assets/images/split/image1677.o (.data); + build/e/assets/images/split/image1678.o (.data); + build/e/assets/images/split/image1679.o (.data); + build/e/assets/images/split/image1680.o (.data); + build/e/assets/images/split/image1681.o (.data); + build/e/assets/images/split/image1682.o (.data); + build/e/assets/images/split/image1683.o (.data); + build/e/assets/images/split/image1684.o (.data); + build/e/assets/images/split/image1685.o (.data); + build/e/assets/images/split/image1686.o (.data); + build/e/assets/images/split/image1687.o (.data); + build/e/assets/images/split/image1688.o (.data); + build/e/assets/images/split/image1689.o (.data); + build/e/assets/images/split/image1690.o (.data); + build/e/assets/images/split/image1691.o (.data); + build/e/assets/images/split/image1692.o (.data); + build/e/assets/images/split/image1693.o (.data); + build/e/assets/images/split/image1694.o (.data); + build/e/assets/images/split/image1695.o (.data); + build/e/assets/images/split/image1696.o (.data); + build/e/assets/images/split/image1697.o (.data); + build/e/assets/images/split/image1698.o (.data); + build/e/assets/images/split/image1699.o (.data); + build/e/assets/images/split/image1700.o (.data); + build/e/assets/images/split/image1701.o (.data); + build/e/assets/images/split/image1702.o (.data); + build/e/assets/images/split/image1703.o (.data); + build/e/assets/images/split/image1704.o (.data); + build/e/assets/images/split/image1705.o (.data); + build/e/assets/images/split/image1706.o (.data); + build/e/assets/images/split/image1707.o (.data); + build/e/assets/images/split/image1708.o (.data); + build/e/assets/images/split/image1709.o (.data); + build/e/assets/images/split/image1710.o (.data); + build/e/assets/images/split/image1711.o (.data); + build/e/assets/images/split/image1712.o (.data); + build/e/assets/images/split/image1713.o (.data); + build/e/assets/images/split/image1714.o (.data); + build/e/assets/images/split/image1715.o (.data); + build/e/assets/images/split/image1716.o (.data); + build/e/assets/images/split/image1717.o (.data); + build/e/assets/images/split/image1718.o (.data); + build/e/assets/images/split/image1719.o (.data); + build/e/assets/images/split/image1720.o (.data); + build/e/assets/images/split/image1721.o (.data); + build/e/assets/images/split/image1722.o (.data); + build/e/assets/images/split/image1723.o (.data); + build/e/assets/images/split/image1724.o (.data); + build/e/assets/images/split/image1725.o (.data); + build/e/assets/images/split/image1726.o (.data); + build/e/assets/images/split/image1727.o (.data); + build/e/assets/images/split/image1728.o (.data); + build/e/assets/images/split/image1729.o (.data); + build/e/assets/images/split/image1730.o (.data); + build/e/assets/images/split/image1731.o (.data); + build/e/assets/images/split/image1732.o (.data); + build/e/assets/images/split/image1733.o (.data); + build/e/assets/images/split/image1734.o (.data); + build/e/assets/images/split/image1735.o (.data); + build/e/assets/images/split/image1736.o (.data); + build/e/assets/images/split/image1737.o (.data); + build/e/assets/images/split/image1738.o (.data); + build/e/assets/images/split/image1739.o (.data); + build/e/assets/images/split/image1740.o (.data); + build/e/assets/images/split/image1741.o (.data); + build/e/assets/images/split/image1742.o (.data); + build/e/assets/images/split/image1743.o (.data); + build/e/assets/images/split/image1744.o (.data); + build/e/assets/images/split/image1745.o (.data); + build/e/assets/images/split/image1746.o (.data); + build/e/assets/images/split/image1747.o (.data); + build/e/assets/images/split/image1748.o (.data); + build/e/assets/images/split/image1749.o (.data); + build/e/assets/images/split/image1750.o (.data); + build/e/assets/images/split/image1751.o (.data); + build/e/assets/images/split/image1752.o (.data); + build/e/assets/images/split/image1753.o (.data); + build/e/assets/images/split/image1754.o (.data); + build/e/assets/images/split/image1755.o (.data); + build/e/assets/images/split/image1756.o (.data); + build/e/assets/images/split/image1757.o (.data); + build/e/assets/images/split/image1758.o (.data); + build/e/assets/images/split/image1759.o (.data); + build/e/assets/images/split/image1760.o (.data); + build/e/assets/images/split/image1761.o (.data); + build/e/assets/images/split/image1762.o (.data); + build/e/assets/images/split/image1763.o (.data); + build/e/assets/images/split/image1764.o (.data); + build/e/assets/images/split/image1765.o (.data); + build/e/assets/images/split/image1766.o (.data); + build/e/assets/images/split/image1767.o (.data); + build/e/assets/images/split/image1768.o (.data); + build/e/assets/images/split/image1769.o (.data); + build/e/assets/images/split/image1770.o (.data); + build/e/assets/images/split/image1771.o (.data); + build/e/assets/images/split/image1772.o (.data); + build/e/assets/images/split/image1773.o (.data); + build/e/assets/images/split/image1774.o (.data); + build/e/assets/images/split/image1775.o (.data); + build/e/assets/images/split/image1776.o (.data); + build/e/assets/images/split/image1777.o (.data); + build/e/assets/images/split/image1778.o (.data); + build/e/assets/images/split/image1779.o (.data); + build/e/assets/images/split/image1780.o (.data); + build/e/assets/images/split/image1781.o (.data); + build/e/assets/images/split/image1782.o (.data); + build/e/assets/images/split/image1783.o (.data); + build/e/assets/images/split/image1784.o (.data); + build/e/assets/images/split/image1785.o (.data); + build/e/assets/images/split/image1786.o (.data); + build/e/assets/images/split/image1787.o (.data); + build/e/assets/images/split/image1788.o (.data); + build/e/assets/images/split/image1789.o (.data); + build/e/assets/images/split/image1790.o (.data); + build/e/assets/images/split/image1791.o (.data); + build/e/assets/images/split/image1792.o (.data); + build/e/assets/images/split/image1793.o (.data); + build/e/assets/images/split/image1794.o (.data); + build/e/assets/images/split/image1795.o (.data); + build/e/assets/images/split/image1796.o (.data); + build/e/assets/images/split/image1797.o (.data); + build/e/assets/images/split/image1798.o (.data); + build/e/assets/images/split/image1799.o (.data); + build/e/assets/images/split/image1800.o (.data); + build/e/assets/images/split/image1801.o (.data); + build/e/assets/images/split/image1802.o (.data); + build/e/assets/images/split/image1803.o (.data); + build/e/assets/images/split/image1804.o (.data); + build/e/assets/images/split/image1805.o (.data); + build/e/assets/images/split/image1806.o (.data); + build/e/assets/images/split/image1807.o (.data); + build/e/assets/images/split/image1808.o (.data); + build/e/assets/images/split/image1809.o (.data); + build/e/assets/images/split/image1810.o (.data); + build/e/assets/images/split/image1811.o (.data); + build/e/assets/images/split/image1812.o (.data); + build/e/assets/images/split/image1813.o (.data); + build/e/assets/images/split/image1814.o (.data); + build/e/assets/images/split/image1815.o (.data); + build/e/assets/images/split/image1816.o (.data); + build/e/assets/images/split/image1817.o (.data); + build/e/assets/images/split/image1818.o (.data); + build/e/assets/images/split/image1819.o (.data); + build/e/assets/images/split/image1820.o (.data); + build/e/assets/images/split/image1821.o (.data); + build/e/assets/images/split/image1822.o (.data); + build/e/assets/images/split/image1823.o (.data); + build/e/assets/images/split/image1824.o (.data); + build/e/assets/images/split/image1825.o (.data); + build/e/assets/images/split/image1826.o (.data); + build/e/assets/images/split/image1827.o (.data); + build/e/assets/images/split/image1828.o (.data); + build/e/assets/images/split/image1829.o (.data); + build/e/assets/images/split/image1830.o (.data); + build/e/assets/images/split/image1831.o (.data); + build/e/assets/images/split/image1832.o (.data); + build/e/assets/images/split/image1833.o (.data); + build/e/assets/images/split/image1834.o (.data); + build/e/assets/images/split/image1835.o (.data); + build/e/assets/images/split/image1836.o (.data); + build/e/assets/images/split/image1837.o (.data); + build/e/assets/images/split/image1838.o (.data); + build/e/assets/images/split/image1839.o (.data); + build/e/assets/images/split/image1840.o (.data); + build/e/assets/images/split/image1841.o (.data); + build/e/assets/images/split/image1842.o (.data); + build/e/assets/images/split/image1843.o (.data); + build/e/assets/images/split/image1844.o (.data); + build/e/assets/images/split/image1845.o (.data); + build/e/assets/images/split/image1846.o (.data); + build/e/assets/images/split/image1847.o (.data); + build/e/assets/images/split/image1848.o (.data); + build/e/assets/images/split/image1849.o (.data); + build/e/assets/images/split/image1850.o (.data); + build/e/assets/images/split/image1851.o (.data); + build/e/assets/images/split/image1852.o (.data); + build/e/assets/images/split/image1853.o (.data); + build/e/assets/images/split/image1854.o (.data); + build/e/assets/images/split/image1855.o (.data); + build/e/assets/images/split/image1856.o (.data); + build/e/assets/images/split/image1857.o (.data); + build/e/assets/images/split/image1858.o (.data); + build/e/assets/images/split/image1859.o (.data); + build/e/assets/images/split/image1860.o (.data); + build/e/assets/images/split/image1861.o (.data); + build/e/assets/images/split/image1862.o (.data); + build/e/assets/images/split/image1863.o (.data); + build/e/assets/images/split/image1864.o (.data); + build/e/assets/images/split/image1865.o (.data); + build/e/assets/images/split/image1866.o (.data); + build/e/assets/images/split/image1867.o (.data); + build/e/assets/images/split/image1868.o (.data); + build/e/assets/images/split/image1869.o (.data); + build/e/assets/images/split/image1870.o (.data); + build/e/assets/images/split/image1871.o (.data); + build/e/assets/images/split/image1872.o (.data); + build/e/assets/images/split/image1873.o (.data); + build/e/assets/images/split/image1874.o (.data); + build/e/assets/images/split/image1875.o (.data); + build/e/assets/images/split/image1876.o (.data); + build/e/assets/images/split/image1877.o (.data); + build/e/assets/images/split/image1878.o (.data); + build/e/assets/images/split/image1879.o (.data); + build/e/assets/images/split/image1880.o (.data); + build/e/assets/images/split/image1881.o (.data); + build/e/assets/images/split/image1882.o (.data); + build/e/assets/images/split/image1883.o (.data); + build/e/assets/images/split/image1884.o (.data); + build/e/assets/images/split/image1885.o (.data); + build/e/assets/images/split/image1886.o (.data); + build/e/assets/images/split/image1887.o (.data); + build/e/assets/images/split/image1888.o (.data); + build/e/assets/images/split/image1889.o (.data); + build/e/assets/images/split/image1890.o (.data); + build/e/assets/images/split/image1891.o (.data); + build/e/assets/images/split/image1892.o (.data); + build/e/assets/images/split/image1893.o (.data); + build/e/assets/images/split/image1894.o (.data); + build/e/assets/images/split/image1895.o (.data); + build/e/assets/images/split/image1896.o (.data); + build/e/assets/images/split/image1897.o (.data); + build/e/assets/images/split/image1898.o (.data); + build/e/assets/images/split/image1899.o (.data); + build/e/assets/images/split/image1900.o (.data); + build/e/assets/images/split/image1901.o (.data); + build/e/assets/images/split/image1902.o (.data); + build/e/assets/images/split/image1903.o (.data); + build/e/assets/images/split/image1904.o (.data); + build/e/assets/images/split/image1905.o (.data); + build/e/assets/images/split/image1906.o (.data); + build/e/assets/images/split/image1907.o (.data); + build/e/assets/images/split/image1908.o (.data); + build/e/assets/images/split/image1909.o (.data); + build/e/assets/images/split/image1910.o (.data); + build/e/assets/images/split/image1911.o (.data); + build/e/assets/images/split/image1912.o (.data); + build/e/assets/images/split/image1913.o (.data); + build/e/assets/images/split/image1914.o (.data); + build/e/assets/images/split/image1915.o (.data); + build/e/assets/images/split/image1916.o (.data); + build/e/assets/images/split/image1917.o (.data); + build/e/assets/images/split/image1918.o (.data); + build/e/assets/images/split/image1919.o (.data); + build/e/assets/images/split/image1920.o (.data); + build/e/assets/images/split/image1921.o (.data); + build/e/assets/images/split/image1922.o (.data); + build/e/assets/images/split/image1923.o (.data); + build/e/assets/images/split/image1924.o (.data); + build/e/assets/images/split/image1925.o (.data); + build/e/assets/images/split/image1926.o (.data); + build/e/assets/images/split/image1927.o (.data); + build/e/assets/images/split/image1928.o (.data); + build/e/assets/images/split/image1929.o (.data); + build/e/assets/images/split/image1930.o (.data); + build/e/assets/images/split/image1931.o (.data); + build/e/assets/images/split/image1932.o (.data); + build/e/assets/images/split/image1933.o (.data); + build/e/assets/images/split/image1934.o (.data); + build/e/assets/images/split/image1935.o (.data); + build/e/assets/images/split/image1936.o (.data); + build/e/assets/images/split/image1937.o (.data); + build/e/assets/images/split/image1938.o (.data); + build/e/assets/images/split/image1939.o (.data); + build/e/assets/images/split/image1940.o (.data); + build/e/assets/images/split/image1941.o (.data); + build/e/assets/images/split/image1942.o (.data); + build/e/assets/images/split/image1943.o (.data); + build/e/assets/images/split/image1944.o (.data); + build/e/assets/images/split/image1945.o (.data); + build/e/assets/images/split/image1946.o (.data); + build/e/assets/images/split/image1947.o (.data); + build/e/assets/images/split/image1948.o (.data); + build/e/assets/images/split/image1949.o (.data); + build/e/assets/images/split/image1950.o (.data); + build/e/assets/images/split/image1951.o (.data); + build/e/assets/images/split/image1952.o (.data); + build/e/assets/images/split/image1953.o (.data); + build/e/assets/images/split/image1954.o (.data); + build/e/assets/images/split/image1955.o (.data); + build/e/assets/images/split/image1956.o (.data); + build/e/assets/images/split/image1957.o (.data); + build/e/assets/images/split/image1958.o (.data); + build/e/assets/images/split/image1959.o (.data); + build/e/assets/images/split/image1960.o (.data); + build/e/assets/images/split/image1961.o (.data); + build/e/assets/images/split/image1962.o (.data); + build/e/assets/images/split/image1963.o (.data); + build/e/assets/images/split/image1964.o (.data); + build/e/assets/images/split/image1965.o (.data); + build/e/assets/images/split/image1966.o (.data); + build/e/assets/images/split/image1967.o (.data); + build/e/assets/images/split/image1968.o (.data); + build/e/assets/images/split/image1969.o (.data); + build/e/assets/images/split/image1970.o (.data); + build/e/assets/images/split/image1971.o (.data); + build/e/assets/images/split/image1972.o (.data); + build/e/assets/images/split/image1973.o (.data); + build/e/assets/images/split/image1974.o (.data); + build/e/assets/images/split/image1975.o (.data); + build/e/assets/images/split/image1976.o (.data); + build/e/assets/images/split/image1977.o (.data); + build/e/assets/images/split/image1978.o (.data); + build/e/assets/images/split/image1979.o (.data); + build/e/assets/images/split/image1980.o (.data); + build/e/assets/images/split/image1981.o (.data); + build/e/assets/images/split/image1982.o (.data); + build/e/assets/images/split/image1983.o (.data); + build/e/assets/images/split/image1984.o (.data); + build/e/assets/images/split/image1985.o (.data); + build/e/assets/images/split/image1986.o (.data); + build/e/assets/images/split/image1987.o (.data); + build/e/assets/images/split/image1988.o (.data); + build/e/assets/images/split/image1989.o (.data); + build/e/assets/images/split/image1990.o (.data); + build/e/assets/images/split/image1991.o (.data); + build/e/assets/images/split/image1992.o (.data); + build/e/assets/images/split/image1993.o (.data); + build/e/assets/images/split/image1994.o (.data); + build/e/assets/images/split/image1995.o (.data); + build/e/assets/images/split/image1996.o (.data); + build/e/assets/images/split/image1997.o (.data); + build/e/assets/images/split/image1998.o (.data); + build/e/assets/images/split/image1999.o (.data); + build/e/assets/images/split/image2000.o (.data); + build/e/assets/images/split/image2001.o (.data); + build/e/assets/images/split/image2002.o (.data); + build/e/assets/images/split/image2003.o (.data); + build/e/assets/images/split/image2004.o (.data); + build/e/assets/images/split/image2005.o (.data); + build/e/assets/images/split/image2006.o (.data); + build/e/assets/images/split/image2007.o (.data); + build/e/assets/images/split/image2008.o (.data); + build/e/assets/images/split/image2009.o (.data); + build/e/assets/images/split/image2010.o (.data); + build/e/assets/images/split/image2011.o (.data); + build/e/assets/images/split/image2012.o (.data); + build/e/assets/images/split/image2013.o (.data); + build/e/assets/images/split/image2014.o (.data); + build/e/assets/images/split/image2015.o (.data); + build/e/assets/images/split/image2016.o (.data); + build/e/assets/images/split/image2017.o (.data); + build/e/assets/images/split/image2018.o (.data); + build/e/assets/images/split/image2019.o (.data); + build/e/assets/images/split/image2020.o (.data); + build/e/assets/images/split/image2021.o (.data); + build/e/assets/images/split/image2022.o (.data); + build/e/assets/images/split/image2023.o (.data); + build/e/assets/images/split/image2024.o (.data); + build/e/assets/images/split/image2025.o (.data); + build/e/assets/images/split/image2026.o (.data); + build/e/assets/images/split/image2027.o (.data); + build/e/assets/images/split/image2028.o (.data); + build/e/assets/images/split/image2029.o (.data); + build/e/assets/images/split/image2030.o (.data); + build/e/assets/images/split/image2031.o (.data); + build/e/assets/images/split/image2032.o (.data); + build/e/assets/images/split/image2033.o (.data); + build/e/assets/images/split/image2034.o (.data); + build/e/assets/images/split/image2035.o (.data); + build/e/assets/images/split/image2036.o (.data); + build/e/assets/images/split/image2037.o (.data); + build/e/assets/images/split/image2038.o (.data); + build/e/assets/images/split/image2039.o (.data); + build/e/assets/images/split/image2040.o (.data); + build/e/assets/images/split/image2041.o (.data); + build/e/assets/images/split/image2042.o (.data); + build/e/assets/images/split/image2043.o (.data); + build/e/assets/images/split/image2044.o (.data); + build/e/assets/images/split/image2045.o (.data); + build/e/assets/images/split/image2046.o (.data); + build/e/assets/images/split/image2047.o (.data); + build/e/assets/images/split/image2048.o (.data); + build/e/assets/images/split/image2049.o (.data); + build/e/assets/images/split/image2050.o (.data); + build/e/assets/images/split/image2051.o (.data); + build/e/assets/images/split/image2052.o (.data); + build/e/assets/images/split/image2053.o (.data); + build/e/assets/images/split/image2054.o (.data); + build/e/assets/images/split/image2055.o (.data); + build/e/assets/images/split/image2056.o (.data); + build/e/assets/images/split/image2057.o (.data); + build/e/assets/images/split/image2058.o (.data); + build/e/assets/images/split/image2059.o (.data); + build/e/assets/images/split/image2060.o (.data); + build/e/assets/images/split/image2061.o (.data); + build/e/assets/images/split/image2062.o (.data); + build/e/assets/images/split/image2063.o (.data); + build/e/assets/images/split/image2064.o (.data); + build/e/assets/images/split/image2065.o (.data); + build/e/assets/images/split/image2066.o (.data); + build/e/assets/images/split/image2067.o (.data); + build/e/assets/images/split/image2068.o (.data); + build/e/assets/images/split/image2069.o (.data); + build/e/assets/images/split/image2070.o (.data); + build/e/assets/images/split/image2071.o (.data); + build/e/assets/images/split/image2072.o (.data); + build/e/assets/images/split/image2073.o (.data); + build/e/assets/images/split/image2074.o (.data); + build/e/assets/images/split/image2075.o (.data); + build/e/assets/images/split/image2076.o (.data); + build/e/assets/images/split/image2077.o (.data); + build/e/assets/images/split/image2078.o (.data); + build/e/assets/images/split/image2079.o (.data); + build/e/assets/images/split/image2080.o (.data); + build/e/assets/images/split/image2081.o (.data); + build/e/assets/images/split/image2082.o (.data); + build/e/assets/images/split/image2083.o (.data); + build/e/assets/images/split/image2084.o (.data); + build/e/assets/images/split/image2085.o (.data); + build/e/assets/images/split/image2086.o (.data); + build/e/assets/images/split/image2087.o (.data); + build/e/assets/images/split/image2088.o (.data); + build/e/assets/images/split/image2089.o (.data); + build/e/assets/images/split/image2090.o (.data); + build/e/assets/images/split/image2091.o (.data); + build/e/assets/images/split/image2092.o (.data); + build/e/assets/images/split/image2093.o (.data); + build/e/assets/images/split/image2094.o (.data); + build/e/assets/images/split/image2095.o (.data); + build/e/assets/images/split/image2096.o (.data); + build/e/assets/images/split/image2097.o (.data); + build/e/assets/images/split/image2098.o (.data); + build/e/assets/images/split/image2099.o (.data); + build/e/assets/images/split/image2100.o (.data); + build/e/assets/images/split/image2101.o (.data); + build/e/assets/images/split/image2102.o (.data); + build/e/assets/images/split/image2103.o (.data); + build/e/assets/images/split/image2104.o (.data); + build/e/assets/images/split/image2105.o (.data); + build/e/assets/images/split/image2106.o (.data); + build/e/assets/images/split/image2107.o (.data); + build/e/assets/images/split/image2108.o (.data); + build/e/assets/images/split/image2109.o (.data); + build/e/assets/images/split/image2110.o (.data); + build/e/assets/images/split/image2111.o (.data); + build/e/assets/images/split/image2112.o (.data); + build/e/assets/images/split/image2113.o (.data); + build/e/assets/images/split/image2114.o (.data); + build/e/assets/images/split/image2115.o (.data); + build/e/assets/images/split/image2116.o (.data); + build/e/assets/images/split/image2117.o (.data); + build/e/assets/images/split/image2118.o (.data); + build/e/assets/images/split/image2119.o (.data); + build/e/assets/images/split/image2120.o (.data); + build/e/assets/images/split/image2121.o (.data); + build/e/assets/images/split/image2122.o (.data); + build/e/assets/images/split/image2123.o (.data); + build/e/assets/images/split/image2124.o (.data); + build/e/assets/images/split/image2125.o (.data); + build/e/assets/images/split/image2126.o (.data); + build/e/assets/images/split/image2127.o (.data); + build/e/assets/images/split/image2128.o (.data); + build/e/assets/images/split/image2129.o (.data); + build/e/assets/images/split/image2130.o (.data); + build/e/assets/images/split/image2131.o (.data); + build/e/assets/images/split/image2132.o (.data); + build/e/assets/images/split/image2133.o (.data); + build/e/assets/images/split/image2134.o (.data); + build/e/assets/images/split/image2135.o (.data); + build/e/assets/images/split/image2136.o (.data); + build/e/assets/images/split/image2137.o (.data); + build/e/assets/images/split/image2138.o (.data); + build/e/assets/images/split/image2139.o (.data); + build/e/assets/images/split/image2140.o (.data); + build/e/assets/images/split/image2141.o (.data); + build/e/assets/images/split/image2142.o (.data); + build/e/assets/images/split/image2143.o (.data); + build/e/assets/images/split/image2144.o (.data); + build/e/assets/images/split/image2145.o (.data); + build/e/assets/images/split/image2146.o (.data); + build/e/assets/images/split/image2147.o (.data); + build/e/assets/images/split/image2148.o (.data); + build/e/assets/images/split/image2149.o (.data); + build/e/assets/images/split/image2150.o (.data); + build/e/assets/images/split/image2151.o (.data); + build/e/assets/images/split/image2152.o (.data); + build/e/assets/images/split/image2153.o (.data); + build/e/assets/images/split/image2154.o (.data); + build/e/assets/images/split/image2155.o (.data); + build/e/assets/images/split/image2156.o (.data); + build/e/assets/images/split/image2157.o (.data); + build/e/assets/images/split/image2158.o (.data); + build/e/assets/images/split/image2159.o (.data); + build/e/assets/images/split/image2160.o (.data); + build/e/assets/images/split/image2161.o (.data); + build/e/assets/images/split/image2162.o (.data); + build/e/assets/images/split/image2163.o (.data); + build/e/assets/images/split/image2164.o (.data); + build/e/assets/images/split/image2165.o (.data); + build/e/assets/images/split/image2166.o (.data); + build/e/assets/images/split/image2167.o (.data); + build/e/assets/images/split/image2168.o (.data); + build/e/assets/images/split/image2169.o (.data); + build/e/assets/images/split/image2170.o (.data); + build/e/assets/images/split/image2171.o (.data); + build/e/assets/images/split/image2172.o (.data); + build/e/assets/images/split/image2173.o (.data); + build/e/assets/images/split/image2174.o (.data); + build/e/assets/images/split/image2175.o (.data); + build/e/assets/images/split/image2176.o (.data); + build/e/assets/images/split/image2177.o (.data); + build/e/assets/images/split/image2178.o (.data); + build/e/assets/images/split/image2179.o (.data); + build/e/assets/images/split/image2180.o (.data); + build/e/assets/images/split/image2181.o (.data); + build/e/assets/images/split/image2182.o (.data); + build/e/assets/images/split/image2183.o (.data); + build/e/assets/images/split/image2184.o (.data); + build/e/assets/images/split/image2185.o (.data); + build/e/assets/images/split/image2186.o (.data); + build/e/assets/images/split/image2187.o (.data); + build/e/assets/images/split/image2188.o (.data); + build/e/assets/images/split/image2189.o (.data); + build/e/assets/images/split/image2190.o (.data); + build/e/assets/images/split/image2191.o (.data); + build/e/assets/images/split/image2192.o (.data); + build/e/assets/images/split/image2193.o (.data); + build/e/assets/images/split/image2194.o (.data); + build/e/assets/images/split/image2195.o (.data); + build/e/assets/images/split/image2196.o (.data); + build/e/assets/images/split/image2197.o (.data); + build/e/assets/images/split/image2198.o (.data); + build/e/assets/images/split/image2199.o (.data); + build/e/assets/images/split/image2200.o (.data); + build/e/assets/images/split/image2201.o (.data); + build/e/assets/images/split/image2202.o (.data); + build/e/assets/images/split/image2203.o (.data); + build/e/assets/images/split/image2204.o (.data); + build/e/assets/images/split/image2205.o (.data); + build/e/assets/images/split/image2206.o (.data); + build/e/assets/images/split/image2207.o (.data); + build/e/assets/images/split/image2208.o (.data); + build/e/assets/images/split/image2209.o (.data); + build/e/assets/images/split/image2210.o (.data); + build/e/assets/images/split/image2211.o (.data); + build/e/assets/images/split/image2212.o (.data); + build/e/assets/images/split/image2213.o (.data); + build/e/assets/images/split/image2214.o (.data); + build/e/assets/images/split/image2215.o (.data); + build/e/assets/images/split/image2216.o (.data); + build/e/assets/images/split/image2217.o (.data); + build/e/assets/images/split/image2218.o (.data); + build/e/assets/images/split/image2219.o (.data); + build/e/assets/images/split/image2220.o (.data); + build/e/assets/images/split/image2221.o (.data); + build/e/assets/images/split/image2222.o (.data); + build/e/assets/images/split/image2223.o (.data); + build/e/assets/images/split/image2224.o (.data); + build/e/assets/images/split/image2225.o (.data); + build/e/assets/images/split/image2226.o (.data); + build/e/assets/images/split/image2227.o (.data); + build/e/assets/images/split/image2228.o (.data); + build/e/assets/images/split/image2229.o (.data); + build/e/assets/images/split/image2230.o (.data); + build/e/assets/images/split/image2231.o (.data); + build/e/assets/images/split/image2232.o (.data); + build/e/assets/images/split/image2233.o (.data); + build/e/assets/images/split/image2234.o (.data); + build/e/assets/images/split/image2235.o (.data); + build/e/assets/images/split/image2236.o (.data); + build/e/assets/images/split/image2237.o (.data); + build/e/assets/images/split/image2238.o (.data); + build/e/assets/images/split/image2239.o (.data); + build/e/assets/images/split/image2240.o (.data); + build/e/assets/images/split/image2241.o (.data); + build/e/assets/images/split/image2242.o (.data); + build/e/assets/images/split/image2243.o (.data); + build/e/assets/images/split/image2244.o (.data); + build/e/assets/images/split/image2245.o (.data); + build/e/assets/images/split/image2246.o (.data); + build/e/assets/images/split/image2247.o (.data); + build/e/assets/images/split/image2248.o (.data); + build/e/assets/images/split/image2249.o (.data); + build/e/assets/images/split/image2250.o (.data); + build/e/assets/images/split/image2251.o (.data); + build/e/assets/images/split/image2252.o (.data); + build/e/assets/images/split/image2253.o (.data); + build/e/assets/images/split/image2254.o (.data); + build/e/assets/images/split/image2255.o (.data); + build/e/assets/images/split/image2256.o (.data); + build/e/assets/images/split/image2257.o (.data); + build/e/assets/images/split/image2258.o (.data); + build/e/assets/images/split/image2259.o (.data); + build/e/assets/images/split/image2260.o (.data); + build/e/assets/images/split/image2261.o (.data); + build/e/assets/images/split/image2262.o (.data); + build/e/assets/images/split/image2263.o (.data); + build/e/assets/images/split/image2264.o (.data); + build/e/assets/images/split/image2265.o (.data); + build/e/assets/images/split/image2266.o (.data); + build/e/assets/images/split/image2267.o (.data); + build/e/assets/images/split/image2268.o (.data); + build/e/assets/images/split/image2269.o (.data); + build/e/assets/images/split/image2270.o (.data); + build/e/assets/images/split/image2271.o (.data); + build/e/assets/images/split/image2272.o (.data); + build/e/assets/images/split/image2273.o (.data); + build/e/assets/images/split/image2274.o (.data); + build/e/assets/images/split/image2275.o (.data); + build/e/assets/images/split/image2276.o (.data); + build/e/assets/images/split/image2277.o (.data); + build/e/assets/images/split/image2278.o (.data); + build/e/assets/images/split/image2279.o (.data); + build/e/assets/images/split/image2280.o (.data); + build/e/assets/images/split/image2281.o (.data); + build/e/assets/images/split/image2282.o (.data); + build/e/assets/images/split/image2283.o (.data); + build/e/assets/images/split/image2284.o (.data); + build/e/assets/images/split/image2285.o (.data); + build/e/assets/images/split/image2286.o (.data); + build/e/assets/images/split/image2287.o (.data); + build/e/assets/images/split/image2288.o (.data); + build/e/assets/images/split/image2289.o (.data); + build/e/assets/images/split/image2290.o (.data); + build/e/assets/images/split/image2291.o (.data); + build/e/assets/images/split/image2292.o (.data); + build/e/assets/images/split/image2293.o (.data); + build/e/assets/images/split/image2294.o (.data); + build/e/assets/images/split/image2295.o (.data); + build/e/assets/images/split/image2296.o (.data); + build/e/assets/images/split/image2297.o (.data); + build/e/assets/images/split/image2298.o (.data); + build/e/assets/images/split/image2299.o (.data); + build/e/assets/images/split/image2300.o (.data); + build/e/assets/images/split/image2301.o (.data); + build/e/assets/images/split/image2302.o (.data); + build/e/assets/images/split/image2303.o (.data); + build/e/assets/images/split/image2304.o (.data); + build/e/assets/images/split/image2305.o (.data); + build/e/assets/images/split/image2306.o (.data); + build/e/assets/images/split/image2307.o (.data); + build/e/assets/images/split/image2308.o (.data); + build/e/assets/images/split/image2309.o (.data); + build/e/assets/images/split/image2310.o (.data); + build/e/assets/images/split/image2311.o (.data); + build/e/assets/images/split/image2312.o (.data); + build/e/assets/images/split/image2313.o (.data); + build/e/assets/images/split/image2314.o (.data); + build/e/assets/images/split/image2315.o (.data); + build/e/assets/images/split/image2316.o (.data); + build/e/assets/images/split/image2317.o (.data); + build/e/assets/images/split/image2318.o (.data); + build/e/assets/images/split/image2319.o (.data); + build/e/assets/images/split/image2320.o (.data); + build/e/assets/images/split/image2321.o (.data); + build/e/assets/images/split/image2322.o (.data); + build/e/assets/images/split/image2323.o (.data); + build/e/assets/images/split/image2324.o (.data); + build/e/assets/images/split/image2325.o (.data); + build/e/assets/images/split/image2326.o (.data); + build/e/assets/images/split/image2327.o (.data); + build/e/assets/images/split/image2328.o (.data); + build/e/assets/images/split/image2329.o (.data); + build/e/assets/images/split/image2330.o (.data); + build/e/assets/images/split/image2331.o (.data); + build/e/assets/images/split/image2332.o (.data); + build/e/assets/images/split/image2333.o (.data); + build/e/assets/images/split/image2334.o (.data); + build/e/assets/images/split/image2335.o (.data); + build/e/assets/images/split/image2336.o (.data); + build/e/assets/images/split/image2337.o (.data); + build/e/assets/images/split/image2338.o (.data); + build/e/assets/images/split/image2339.o (.data); + build/e/assets/images/split/image2340.o (.data); + build/e/assets/images/split/image2341.o (.data); + build/e/assets/images/split/image2342.o (.data); + build/e/assets/images/split/image2343.o (.data); + build/e/assets/images/split/image2344.o (.data); + build/e/assets/images/split/image2345.o (.data); + build/e/assets/images/split/image2346.o (.data); + build/e/assets/images/split/image2347.o (.data); + build/e/assets/images/split/image2348.o (.data); + build/e/assets/images/split/image2349.o (.data); + build/e/assets/images/split/image2350.o (.data); + build/e/assets/images/split/image2351.o (.data); + build/e/assets/images/split/image2352.o (.data); + build/e/assets/images/split/image2353.o (.data); + build/e/assets/images/split/image2354.o (.data); + build/e/assets/images/split/image2355.o (.data); + build/e/assets/images/split/image2356.o (.data); + build/e/assets/images/split/image2357.o (.data); + build/e/assets/images/split/image2358.o (.data); + build/e/assets/images/split/image2359.o (.data); + build/e/assets/images/split/image2360.o (.data); + build/e/assets/images/split/image2361.o (.data); + build/e/assets/images/split/image2362.o (.data); + build/e/assets/images/split/image2363.o (.data); + build/e/assets/images/split/image2364.o (.data); + build/e/assets/images/split/image2365.o (.data); + build/e/assets/images/split/image2366.o (.data); + build/e/assets/images/split/image2367.o (.data); + build/e/assets/images/split/image2368.o (.data); + build/e/assets/images/split/image2369.o (.data); + build/e/assets/images/split/image2370.o (.data); + build/e/assets/images/split/image2371.o (.data); + build/e/assets/images/split/image2372.o (.data); + build/e/assets/images/split/image2373.o (.data); + build/e/assets/images/split/image2374.o (.data); + build/e/assets/images/split/image2375.o (.data); + build/e/assets/images/split/image2376.o (.data); + build/e/assets/images/split/image2377.o (.data); + build/e/assets/images/split/image2378.o (.data); + build/e/assets/images/split/image2379.o (.data); + build/e/assets/images/split/image2380.o (.data); + build/e/assets/images/split/image2381.o (.data); + build/e/assets/images/split/image2382.o (.data); + build/e/assets/images/split/image2383.o (.data); + build/e/assets/images/split/image2384.o (.data); + build/e/assets/images/split/image2385.o (.data); + build/e/assets/images/split/image2386.o (.data); + build/e/assets/images/split/image2387.o (.data); + build/e/assets/images/split/image2388.o (.data); + build/e/assets/images/split/image2389.o (.data); + build/e/assets/images/split/image2390.o (.data); + build/e/assets/images/split/image2391.o (.data); + build/e/assets/images/split/image2392.o (.data); + build/e/assets/images/split/image2393.o (.data); + build/e/assets/images/split/image2394.o (.data); + build/e/assets/images/split/image2395.o (.data); + build/e/assets/images/split/image2396.o (.data); + build/e/assets/images/split/image2397.o (.data); + build/e/assets/images/split/image2398.o (.data); + build/e/assets/images/split/image2399.o (.data); + build/e/assets/images/split/image2400.o (.data); + build/e/assets/images/split/image2401.o (.data); + build/e/assets/images/split/image2402.o (.data); + build/e/assets/images/split/image2403.o (.data); + build/e/assets/images/split/image2404.o (.data); + build/e/assets/images/split/image2405.o (.data); + build/e/assets/images/split/image2406.o (.data); + build/e/assets/images/split/image2407.o (.data); + build/e/assets/images/split/image2408.o (.data); + build/e/assets/images/split/image2409.o (.data); + build/e/assets/images/split/image2410.o (.data); + build/e/assets/images/split/image2411.o (.data); + build/e/assets/images/split/image2412.o (.data); + build/e/assets/images/split/image2413.o (.data); + build/e/assets/images/split/image2414.o (.data); + build/e/assets/images/split/image2415.o (.data); + build/e/assets/images/split/image2416.o (.data); + build/e/assets/images/split/image2417.o (.data); + build/e/assets/images/split/image2418.o (.data); + build/e/assets/images/split/image2419.o (.data); + build/e/assets/images/split/image2420.o (.data); + build/e/assets/images/split/image2421.o (.data); + build/e/assets/images/split/image2422.o (.data); + build/e/assets/images/split/image2423.o (.data); + build/e/assets/images/split/image2424.o (.data); + build/e/assets/images/split/image2425.o (.data); + build/e/assets/images/split/image2426.o (.data); + build/e/assets/images/split/image2427.o (.data); + build/e/assets/images/split/image2428.o (.data); + build/e/assets/images/split/image2429.o (.data); + build/e/assets/images/split/image2430.o (.data); + build/e/assets/images/split/image2431.o (.data); + build/e/assets/images/split/image2432.o (.data); + build/e/assets/images/split/image2433.o (.data); + build/e/assets/images/split/image2434.o (.data); + build/e/assets/images/split/image2435.o (.data); + build/e/assets/images/split/image2436.o (.data); + build/e/assets/images/split/image2437.o (.data); + build/e/assets/images/split/image2438.o (.data); + build/e/assets/images/split/image2439.o (.data); + build/e/assets/images/split/image2440.o (.data); + build/e/assets/images/split/image2441.o (.data); + build/e/assets/images/split/image2442.o (.data); + build/e/assets/images/split/image2443.o (.data); + build/e/assets/images/split/image2444.o (.data); + build/e/assets/images/split/image2445.o (.data); + build/e/assets/images/split/image2446.o (.data); + build/e/assets/images/split/image2447.o (.data); + build/e/assets/images/split/image2448.o (.data); + build/e/assets/images/split/image2449.o (.data); + build/e/assets/images/split/image2450.o (.data); + build/e/assets/images/split/image2451.o (.data); + build/e/assets/images/split/image2452.o (.data); + build/e/assets/images/split/image2453.o (.data); + build/e/assets/images/split/image2454.o (.data); + build/e/assets/images/split/image2455.o (.data); + build/e/assets/images/split/image2456.o (.data); + build/e/assets/images/split/image2457.o (.data); + build/e/assets/images/split/image2458.o (.data); + build/e/assets/images/split/image2459.o (.data); + build/e/assets/images/split/image2460.o (.data); + build/e/assets/images/split/image2461.o (.data); + build/e/assets/images/split/image2462.o (.data); + build/e/assets/images/split/image2463.o (.data); + build/e/assets/images/split/image2464.o (.data); + build/e/assets/images/split/image2465.o (.data); + build/e/assets/images/split/image2466.o (.data); + build/e/assets/images/split/image2467.o (.data); + build/e/assets/images/split/image2468.o (.data); + build/e/assets/images/split/image2469.o (.data); + build/e/assets/images/split/image2470.o (.data); + build/e/assets/images/split/image2471.o (.data); + build/e/assets/images/split/image2472.o (.data); + build/e/assets/images/split/image2473.o (.data); + build/e/assets/images/split/image2474.o (.data); + build/e/assets/images/split/image2475.o (.data); + build/e/assets/images/split/image2476.o (.data); + build/e/assets/images/split/image2477.o (.data); + build/e/assets/images/split/image2478.o (.data); + build/e/assets/images/split/image2479.o (.data); + build/e/assets/images/split/image2480.o (.data); + build/e/assets/images/split/image2481.o (.data); + build/e/assets/images/split/image2482.o (.data); + build/e/assets/images/split/image2483.o (.data); + build/e/assets/images/split/image2484.o (.data); + build/e/assets/images/split/image2485.o (.data); + build/e/assets/images/split/image2486.o (.data); + build/e/assets/images/split/image2487.o (.data); + build/e/assets/images/split/image2488.o (.data); + build/e/assets/images/split/image2489.o (.data); + build/e/assets/images/split/image2490.o (.data); + build/e/assets/images/split/image2491.o (.data); + build/e/assets/images/split/image2492.o (.data); + build/e/assets/images/split/image2493.o (.data); + build/e/assets/images/split/image2494.o (.data); + build/e/assets/images/split/image2495.o (.data); + build/e/assets/images/split/image2496.o (.data); + build/e/assets/images/split/image2497.o (.data); + build/e/assets/images/split/image2498.o (.data); + build/e/assets/images/split/image2499.o (.data); + build/e/assets/images/split/image2500.o (.data); + build/e/assets/images/split/image2501.o (.data); + build/e/assets/images/split/image2502.o (.data); + build/e/assets/images/split/image2503.o (.data); + build/e/assets/images/split/image2504.o (.data); + build/e/assets/images/split/image2505.o (.data); + build/e/assets/images/split/image2506.o (.data); + build/e/assets/images/split/image2507.o (.data); + build/e/assets/images/split/image2508.o (.data); + build/e/assets/images/split/image2509.o (.data); + build/e/assets/images/split/image2510.o (.data); + build/e/assets/images/split/image2511.o (.data); + build/e/assets/images/split/image2512.o (.data); + build/e/assets/images/split/image2513.o (.data); + build/e/assets/images/split/image2514.o (.data); + build/e/assets/images/split/image2515.o (.data); + build/e/assets/images/split/image2516.o (.data); + build/e/assets/images/split/image2517.o (.data); + build/e/assets/images/split/image2518.o (.data); + build/e/assets/images/split/image2519.o (.data); + build/e/assets/images/split/image2520.o (.data); + build/e/assets/images/split/image2521.o (.data); + build/e/assets/images/split/image2522.o (.data); + build/e/assets/images/split/image2523.o (.data); + build/e/assets/images/split/image2524.o (.data); + build/e/assets/images/split/image2525.o (.data); + build/e/assets/images/split/image2526.o (.data); + build/e/assets/images/split/image2527.o (.data); + build/e/assets/images/split/image2528.o (.data); + build/e/assets/images/split/image2529.o (.data); + build/e/assets/images/split/image2530.o (.data); + build/e/assets/images/split/image2531.o (.data); + build/e/assets/images/split/image2532.o (.data); + build/e/assets/images/split/image2533.o (.data); + build/e/assets/images/split/image2534.o (.data); + build/e/assets/images/split/image2535.o (.data); + build/e/assets/images/split/image2536.o (.data); + build/e/assets/images/split/image2537.o (.data); + build/e/assets/images/split/image2538.o (.data); + build/e/assets/images/split/image2539.o (.data); + build/e/assets/images/split/image2540.o (.data); + build/e/assets/images/split/image2541.o (.data); + build/e/assets/images/split/image2542.o (.data); + build/e/assets/images/split/image2543.o (.data); + build/e/assets/images/split/image2544.o (.data); + build/e/assets/images/split/image2545.o (.data); + build/e/assets/images/split/image2546.o (.data); + build/e/assets/images/split/image2547.o (.data); + build/e/assets/images/split/image2548.o (.data); + build/e/assets/images/split/image2549.o (.data); + build/e/assets/images/split/image2550.o (.data); + build/e/assets/images/split/image2551.o (.data); + build/e/assets/images/split/image2552.o (.data); + build/e/assets/images/split/image2553.o (.data); + build/e/assets/images/split/image2554.o (.data); + build/e/assets/images/split/image2555.o (.data); + build/e/assets/images/split/image2556.o (.data); + build/e/assets/images/split/image2557.o (.data); + build/e/assets/images/split/image2558.o (.data); + build/e/assets/images/split/image2559.o (.data); + build/e/assets/images/split/image2560.o (.data); + build/e/assets/images/split/image2561.o (.data); + build/e/assets/images/split/image2562.o (.data); + build/e/assets/images/split/image2563.o (.data); + build/e/assets/images/split/image2564.o (.data); + build/e/assets/images/split/image2565.o (.data); + build/e/assets/images/split/image2566.o (.data); + build/e/assets/images/split/image2567.o (.data); + build/e/assets/images/split/image2568.o (.data); + build/e/assets/images/split/image2569.o (.data); + build/e/assets/images/split/image2570.o (.data); + build/e/assets/images/split/image2571.o (.data); + build/e/assets/images/split/image2572.o (.data); + build/e/assets/images/split/image2573.o (.data); + build/e/assets/images/split/image2574.o (.data); + build/e/assets/images/split/image2575.o (.data); + build/e/assets/images/split/image2576.o (.data); + build/e/assets/images/split/image2577.o (.data); + build/e/assets/images/split/image2578.o (.data); + build/e/assets/images/split/image2579.o (.data); + build/e/assets/images/split/image2580.o (.data); + build/e/assets/images/split/image2581.o (.data); + build/e/assets/images/split/image2582.o (.data); + build/e/assets/images/split/image2583.o (.data); + build/e/assets/images/split/image2584.o (.data); + build/e/assets/images/split/image2585.o (.data); + build/e/assets/images/split/image2586.o (.data); + build/e/assets/images/split/image2587.o (.data); + build/e/assets/images/split/image2588.o (.data); + build/e/assets/images/split/image2589.o (.data); + build/e/assets/images/split/image2590.o (.data); + build/e/assets/images/split/image2591.o (.data); + build/e/assets/images/split/image2592.o (.data); + build/e/assets/images/split/image2593.o (.data); + build/e/assets/images/split/image2594.o (.data); + build/e/assets/images/split/image2595.o (.data); + build/e/assets/images/split/image2596.o (.data); + build/e/assets/images/split/image2597.o (.data); + build/e/assets/images/split/image2598.o (.data); + build/e/assets/images/split/image2599.o (.data); + build/e/assets/images/split/image2600.o (.data); + build/e/assets/images/split/image2601.o (.data); + build/e/assets/images/split/image2602.o (.data); + build/e/assets/images/split/image2603.o (.data); + build/e/assets/images/split/image2604.o (.data); + build/e/assets/images/split/image2605.o (.data); + build/e/assets/images/split/image2606.o (.data); + build/e/assets/images/split/image2607.o (.data); + build/e/assets/images/split/image2608.o (.data); + build/e/assets/images/split/image2609.o (.data); + build/e/assets/images/split/image2610.o (.data); + build/e/assets/images/split/image2611.o (.data); + build/e/assets/images/split/image2612.o (.data); + build/e/assets/images/split/image2613.o (.data); + build/e/assets/images/split/image2614.o (.data); + build/e/assets/images/split/image2615.o (.data); + build/e/assets/images/split/image2616.o (.data); + build/e/assets/images/split/image2617.o (.data); + build/e/assets/images/split/image2618.o (.data); + build/e/assets/images/split/image2619.o (.data); + build/e/assets/images/split/image2620.o (.data); + build/e/assets/images/split/image2621.o (.data); + build/e/assets/images/split/image2622.o (.data); + build/e/assets/images/split/image2623.o (.data); + build/e/assets/images/split/image2624.o (.data); + build/e/assets/images/split/image2625.o (.data); + build/e/assets/images/split/image2626.o (.data); + build/e/assets/images/split/image2627.o (.data); + build/e/assets/images/split/image2628.o (.data); + build/e/assets/images/split/image2629.o (.data); + build/e/assets/images/split/image2630.o (.data); + build/e/assets/images/split/image2631.o (.data); + build/e/assets/images/split/image2632.o (.data); + build/e/assets/images/split/image2633.o (.data); + build/e/assets/images/split/image2634.o (.data); + build/e/assets/images/split/image2635.o (.data); + build/e/assets/images/split/image2636.o (.data); + build/e/assets/images/split/image2637.o (.data); + build/e/assets/images/split/image2638.o (.data); + build/e/assets/images/split/image2639.o (.data); + build/e/assets/images/split/image2640.o (.data); + build/e/assets/images/split/image2641.o (.data); + build/e/assets/images/split/image2642.o (.data); + build/e/assets/images/split/image2643.o (.data); + build/e/assets/images/split/image2644.o (.data); + build/e/assets/images/split/image2645.o (.data); + build/e/assets/images/split/image2646.o (.data); + build/e/assets/images/split/image2647.o (.data); + build/e/assets/images/split/image2648.o (.data); + build/e/assets/images/split/image2649.o (.data); + build/e/assets/images/split/image2650.o (.data); + build/e/assets/images/split/image2651.o (.data); + build/e/assets/images/split/image2652.o (.data); + build/e/assets/images/split/image2653.o (.data); + build/e/assets/images/split/image2654.o (.data); + build/e/assets/images/split/image2655.o (.data); + build/e/assets/images/split/image2656.o (.data); + build/e/assets/images/split/image2657.o (.data); + build/e/assets/images/split/image2658.o (.data); + build/e/assets/images/split/image2659.o (.data); + build/e/assets/images/split/image2660.o (.data); + build/e/assets/images/split/image2661.o (.data); + build/e/assets/images/split/image2662.o (.data); + build/e/assets/images/split/image2663.o (.data); + build/e/assets/images/split/image2664.o (.data); + build/e/assets/images/split/image2665.o (.data); + build/e/assets/images/split/image2666.o (.data); + build/e/assets/images/split/image2667.o (.data); + build/e/assets/images/split/image2668.o (.data); + build/e/assets/images/split/image2669.o (.data); + build/e/assets/images/split/image2670.o (.data); + build/e/assets/images/split/image2671.o (.data); + build/e/assets/images/split/image2672.o (.data); + build/e/assets/images/split/image2673.o (.data); + build/e/assets/images/split/image2674.o (.data); + build/e/assets/images/split/image2675.o (.data); + build/e/assets/images/split/image2676.o (.data); + build/e/assets/images/split/image2677.o (.data); + build/e/assets/images/split/image2678.o (.data); + build/e/assets/images/split/image2679.o (.data); + build/e/assets/images/split/image2680.o (.data); + build/e/assets/images/split/image2681.o (.data); + build/e/assets/images/split/image2682.o (.data); + build/e/assets/images/split/image2683.o (.data); + build/e/assets/images/split/image2684.o (.data); + build/e/assets/images/split/image2685.o (.data); + build/e/assets/images/split/image2686.o (.data); + build/e/assets/images/split/image2687.o (.data); + build/e/assets/images/split/image2688.o (.data); + build/e/assets/images/split/image2689.o (.data); + build/e/assets/images/split/image2690.o (.data); + build/e/assets/images/split/image2691.o (.data); + build/e/assets/images/split/image2692.o (.data); + build/e/assets/images/split/image2693.o (.data); + build/e/assets/images/split/image2694.o (.data); + build/e/assets/images/split/image2695.o (.data); + build/e/assets/images/split/image2696.o (.data); + build/e/assets/images/split/image2697.o (.data); + build/e/assets/images/split/image2698.o (.data); + build/e/assets/images/split/image2699.o (.data); } _imagesSegmentEnd = ADDR(.images) + SIZEOF(.images); _imagesSegmentRomEnd = _imagesSegmentRomStart + SIZEOF(.images); @@ -2980,308 +3068,494 @@ SECTIONS _csegmentSegmentStart = ADDR(.csegment); _csegmentSegmentRomStart = __csegtempPos; .csegment __dataSegmentVaddrStart : AT(_csegmentSegmentRomStart) { - build/src/rspboot.o (.text); - build/src/gspboot.o (.text); - build/src/aspboot.o (.text); - build/src/boot.o (.data); - build/src/init.o (.data); - build/src/sched.o (.data); - build/src/osMapTLB.o (.data); - build/src/tlb_manage.o (.data); - build/src/tlb_random.o (.data); - build/src/tlb_resolve.o (.data); - build/src/tlb_hardwire.o (.data); - build/src/audi.o (.data); - build/src/speed_graph.o (.data); - build/src/video.o (.data); - build/src/deb.o (.data); - build/src/deb_video.o (.data); - build/src/deb_print.o (.data); - build/src/debug_getlastRA.o (.data); - build/src/ramrom.o (.data); - build/src/boss.o (.data); - build/src/music.o (.data); - build/src/snd.o (.data); - build/src/memp.o (.data); - build/src/mema.o (.data); - build/src/random.o (.data); - build/src/token.o (.data); - build/src/str.o (.data); - build/src/sprintf.o (.data); - build/src/pi.o (.data); - build/src/vi.o (.data); - build/src/debugmenu.o (.data); - build/src/joy.o (.data); - build/src/joy_rumble.o (.data); - build/src/rmon.o (.data); - build/libultra/libultra.o (.data); + build/e/src/rspboot.o (.text); + build/e/src/gspboot.o (.text); + build/e/src/aspboot.o (.text); + build/e/src/boot.o (.data); + build/e/src/init.o (.data); + build/e/src/sched.o (.data); + build/e/src/osMapTLB.o (.data); - build/src/aspboot.o (.rodata); - build/src/boot.o (.rodata); - build/src/init.o (.rodata); - build/src/sched.o (.rodata); - build/src/osMapTLB.o (.rodata); - build/src/tlb_manage.o (.rodata); - build/src/tlb_random.o (.rodata); - build/src/tlb_resolve.o (.rodata); - build/src/tlb_hardwire.o (.rodata); - build/src/audi.o (.rodata); - build/src/speed_graph.o (.rodata); - build/src/video.o (.rodata); - build/src/deb.o (.rodata); - build/src/deb_video.o (.rodata); - build/src/deb_print.o (.rodata); - build/src/debug_getlastRA.o (.rodata); - build/src/ramrom.o (.rodata); - build/src/boss.o (.rodata); - build/src/music.o (.rodata); - build/src/snd.o (.rodata); - build/src/memp.o (.rodata); - build/src/mema.o (.rodata); - build/src/random.o (.rodata); - build/src/token.o (.rodata); - build/src/str.o (.rodata); - build/src/sprintf.o (.rodata); - build/src/pi.o (.rodata); - build/src/vi.o (.rodata); - build/src/debugmenu.o (.rodata); - build/src/joy.o (.rodata); - build/src/joy_rumble.o (.rodata); - build/src/rmon.o (.rodata); - build/libultra/libultra.o (.rodata); + build/e/src/libultra/osCreateViManager.o (.data); + build/e/src/libultra/osCreatePiManager.o (.data); - build/src/game/initgamedata.o (.data); - build/src/game/initweaponanigroups.o (.data); - build/src/game/initactorpropstuff.o (.data); - build/src/game/initnull_0009D0.o (.data); - build/src/game/initunk_0009E0.o (.data); - build/src/game/initanitable.o (.data); - build/src/game/initunk_000B60.o (.data); - build/src/game/setguscale.o (.data); - build/src/game/initnull_000BC0.o (.data); - build/src/game/initimages.o (.data); - build/src/game/initintromatrices.o (.data); - build/src/game/initmenus.o (.data); - build/src/game/initguards.o (.data); - build/src/game/deb_loadallmodels.o (.data); - build/src/game/initobjects.o (.data); - build/src/game/prop.o (.data); - build/src/game/objective.o (.data); - build/src/game/ejectedcartridges.o (.data); - build/src/game/initBondDATA.o (.data); - build/src/game/initunk_005450.o (.data); - build/src/game/initunk_005520.o (.data); - build/src/game/initcameraandthrown.o (.data); - build/src/game/inititemslots.o (.data); - build/src/game/initBondDATAdefaults.o (.data); - build/src/game/initpathtablesomething.o (.data); - build/src/game/initpathtablelinks.o (.data); - build/src/game/initexplosioncasing.o (.data); - build/src/game/initunk_007180.o (.data); - build/src/game/initunk_007290.o (.data); - build/src/game/initunk_0072B0.o (.data); - build/src/game/initmttex.o (.data); - build/src/game/initunk_0073B0.o (.data); - build/src/game/initunk_007460.o (.data); - build/src/game/cleanup_alarms.o (.data); - build/src/game/cleanup_objects.o (.data); - build/src/game/cleanup_objectives.o (.data); - build/src/game/cleanupSFXRelated.o (.data); - build/src/game/playerstats_007770.o (.data); - build/src/game/unk_007800.o (.data); - build/src/game/unk_007920.o (.data); - build/src/game/null_007970.o (.data); - build/src/game/unk_007980.o (.data); - build/src/game/intro_logos.o (.data); - build/src/game/mainmenu.o (.data); - build/src/game/unk_01B0E0.o (.data); - build/src/game/unk_01B240.o (.data); - build/src/game/unk_01BAE0.o (.data); - build/src/game/blood_animation.o (.data); - build/src/game/blood_decrypt.o (.data); - build/src/game/gamefile.o (.data); - build/src/game/chr.o (.data); - build/src/game/chrai.o (.data); - build/src/game/loadobjectmodel.o (.data); - build/src/game/objective_status.o (.data); - build/src/game/sin.o (.data); - build/src/game/unk_057FD0.o (.data); - build/src/game/unk_05A9E0.o (.data); - build/src/game/convertangleusinginverse.o (.data); - build/src/game/unk_05AB70.o (.data); - build/src/game/unk_05ACB0.o (.data); - build/src/game/unk_05AE00.o (.data); - build/src/game/unk_05B1E0.o (.data); - build/src/game/truncf.o (.data); - build/src/game/unk_05C440.o (.data); - build/src/game/bondwalk.o (.data); - build/src/game/objecthandler.o (.data); - build/src/game/objecthandler_2.o (.data); - build/src/game/othermodemicrocode.o (.data); - build/src/game/bond.o (.data); - build/src/game/unk_08DBB0.o (.data); - build/src/game/debugmenu_08FE00.o (.data); - build/src/game/debugmenu_090490.o (.data); - build/src/game/unk_091080.o (.data); - build/src/game/cheat_buttons.o (.data); - build/src/game/unk_092890.o (.data); - build/src/game/unk_092E50.o (.data); - build/src/game/unk_093880.o (.data); - build/src/game/unk_09B600.o (.data); - build/src/game/unk_09B740.o (.data); - build/src/game/unk_09B7A0.o (.data); - build/src/game/unk_09C250.o (.data); - build/src/game/unk_0A1DA0.o (.data); - build/src/game/watch.o (.data); - build/src/game/textrelated.o (.data); - build/src/game/stan.o (.data); - build/src/game/unk_0B3200.o (.data); - build/src/game/bg.o (.data); - build/src/game/fog.o (.data); - build/src/game/lightfixture.o (.data); - build/src/game/unk_0BC530.o (.data); - build/src/game/ob.o (.data); - build/src/game/dyn.o (.data); - build/src/game/lvl.o (.data); - build/src/game/lvl_2.o (.data); - build/src/game/unk_0C0A70.o (.data); - build/src/game/mp_music.o (.data); - build/src/game/lvl_text.o (.data); - build/src/game/mp_watch.o (.data); - build/src/game/radar.o (.data); - build/src/game/mp_weapon.o (.data); - build/src/game/image.o (.data); - build/src/game/image_bank.o (.data); - build/src/game/unk_0CC4C0.o (.data); - build/src/game/decompress.o (.data); - build/src/game/zlib.o (.data); - build/src/game/rsp.o (.data); - build/src/game/indy_comms.o (.data); - build/src/game/indy_commands.o (.data); - build/src/game/game_debug.o (.data); - build/src/game/compiletime.o (.data); - build/src/game/unk_0D1AC0.o (.data); - build/src/game/viewport.o (.data); - build/src/game/music_0D2720.o (.data); - build/src/game/spectrum.o (.data); + build/e/src/tlb_manage.o (.data); + build/e/src/tlb_random.o (.data); + build/e/src/tlb_resolve.o (.data); + build/e/src/tlb_hardwire.o (.data); + build/e/src/audi.o (.data); + build/e/src/speed_graph.o (.data); + build/e/src/video.o (.data); + build/e/src/deb.o (.data); + build/e/src/deb_video.o (.data); + build/e/src/deb_print.o (.data); + build/e/src/debug_getlastRA.o (.data); + build/e/src/ramrom.o (.data); + build/e/src/boss.o (.data); + build/e/src/music.o (.data); + build/e/src/snd.o (.data); + build/e/src/memp.o (.data); + build/e/src/mema.o (.data); + build/e/src/random.o (.data); + build/e/src/token.o (.data); + build/e/src/str.o (.data); + build/e/src/sprintf.o (.data); + build/e/src/pi.o (.data); + build/e/src/vi.o (.data); + build/e/src/debugmenu.o (.data); + build/e/src/joy.o (.data); + build/e/src/joy_rumble.o (.data); + build/e/src/rmon.o (.data); - build/src/game/initgamedata.o (.rodata); - build/src/game/initweaponanigroups.o (.rodata); - build/src/game/initactorpropstuff.o (.rodata); - build/src/game/initnull_0009D0.o (.rodata); - build/src/game/initunk_0009E0.o (.rodata); - build/src/game/initanitable.o (.rodata); - build/src/game/initunk_000B60.o (.rodata); - build/src/game/setguscale.o (.rodata); - build/src/game/initnull_000BC0.o (.rodata); - build/src/game/initimages.o (.rodata); - build/src/game/initintromatrices.o (.rodata); - build/src/game/initmenus.o (.rodata); - build/src/game/initguards.o (.rodata); - build/src/game/deb_loadallmodels.o (.rodata); - build/src/game/initobjects.o (.rodata); - build/src/game/prop.o (.rodata); - build/src/game/objective.o (.rodata); - build/src/game/ejectedcartridges.o (.rodata); - build/src/game/initBondDATA.o (.rodata); - build/src/game/initunk_005450.o (.rodata); - build/src/game/initunk_005520.o (.rodata); - build/src/game/initcameraandthrown.o (.rodata); - build/src/game/inititemslots.o (.rodata); - build/src/game/initBondDATAdefaults.o (.rodata); - build/src/game/initpathtablesomething.o (.rodata); - build/src/game/initpathtablelinks.o (.rodata); - build/src/game/initexplosioncasing.o (.rodata); - build/src/game/initunk_007180.o (.rodata); - build/src/game/initunk_007290.o (.rodata); - build/src/game/initunk_0072B0.o (.rodata); - build/src/game/initmttex.o (.rodata); - build/src/game/initunk_0073B0.o (.rodata); - build/src/game/initunk_007460.o (.rodata); - build/src/game/cleanup_alarms.o (.rodata); - build/src/game/cleanup_objects.o (.rodata); - build/src/game/cleanup_objectives.o (.rodata); - build/src/game/cleanupSFXRelated.o (.rodata); - build/src/game/playerstats_007770.o (.rodata); - build/src/game/unk_007800.o (.rodata); - build/src/game/unk_007920.o (.rodata); - build/src/game/null_007970.o (.rodata); - build/src/game/unk_007980.o (.rodata); - build/src/game/intro_logos.o (.rodata); - build/src/game/mainmenu.o (.rodata); - build/src/game/unk_01B0E0.o (.rodata); - build/src/game/unk_01B240.o (.rodata); - build/src/game/unk_01BAE0.o (.rodata); - build/src/game/blood_animation.o (.rodata); - build/src/game/blood_decrypt.o (.rodata); - build/src/game/gamefile.o (.rodata); - build/src/game/chr.o (.rodata); - build/src/game/chrai.o (.rodata); - build/src/game/loadobjectmodel.o (.rodata); - build/src/game/objective_status.o (.rodata); - build/src/game/sin.o (.rodata); - build/src/game/unk_057FD0.o (.rodata); - build/src/game/unk_05A9E0.o (.rodata); - build/src/game/convertangleusinginverse.o (.rodata); - build/src/game/unk_05AB70.o (.rodata); - build/src/game/unk_05ACB0.o (.rodata); - build/src/game/unk_05AE00.o (.rodata); - build/src/game/unk_05B1E0.o (.rodata); - build/src/game/truncf.o (.rodata); - build/src/game/unk_05C440.o (.rodata); - build/src/game/bondwalk.o (.rodata); - build/src/game/objecthandler.o (.rodata); - build/src/game/objecthandler_2.o (.rodata); - build/src/game/othermodemicrocode.o (.rodata); - build/src/game/bond.o (.rodata); - build/src/game/unk_08DBB0.o (.rodata); - build/src/game/debugmenu_08FE00.o (.rodata); - build/src/game/debugmenu_090490.o (.rodata); - build/src/game/unk_091080.o (.rodata); - build/src/game/cheat_buttons.o (.rodata); - build/src/game/unk_092890.o (.rodata); - build/src/game/unk_092E50.o (.rodata); - build/src/game/unk_093880.o (.rodata); - build/src/game/unk_09B600.o (.rodata); - build/src/game/unk_09B740.o (.rodata); - build/src/game/unk_09B7A0.o (.rodata); - build/src/game/unk_09C250.o (.rodata); - build/src/game/unk_0A1DA0.o (.rodata); - build/src/game/watch.o (.rodata); - build/src/game/textrelated.o (.rodata); - build/src/game/stan.o (.rodata); - build/src/game/unk_0B3200.o (.rodata); - build/src/game/bg.o (.rodata); - build/src/game/fog.o (.rodata); - build/src/game/lightfixture.o (.rodata); - build/src/game/unk_0BC530.o (.rodata); - build/src/game/ob.o (.rodata); - build/src/game/dyn.o (.rodata); - build/src/game/lvl.o (.rodata); - build/src/game/lvl_2.o (.rodata); - build/src/game/unk_0C0A70.o (.rodata); - build/src/game/mp_music.o (.rodata); - build/src/game/lvl_text.o (.rodata); - build/src/game/mp_watch.o (.rodata); - build/src/game/radar.o (.rodata); - build/src/game/mp_weapon.o (.rodata); - build/src/game/image.o (.rodata); - build/src/game/image_bank.o (.rodata); - build/src/game/unk_0CC4C0.o (.rodata); - build/src/game/decompress.o (.rodata); - build/src/game/zlib.o (.rodata); - build/src/game/rsp.o (.rodata); - build/src/game/indy_comms.o (.rodata); - build/src/game/indy_commands.o (.rodata); - build/src/game/game_debug.o (.rodata); - build/src/game/compiletime.o (.rodata); - build/src/game/unk_0D1AC0.o (.rodata); - build/src/game/viewport.o (.rodata); - build/src/game/music_0D2720.o (.rodata); - build/src/game/spectrum.o (.rodata); + build/e/src/libultra/osPiRawStartDma.o (.data); + build/e/src/libultra/osPiGetStatus.o (.data); + build/e/src/libultra/osInitialize.o (.data); + build/e/src/libultra/osWritebackDCacheAll.o (.data); + build/e/src/libultra/osInvalICache.o (.data); + build/e/src/libultra/osUnmapTLB.o (.data); + build/e/src/libultra/__osGetFpcCsr.o (.data); + build/e/src/libultra/__osSetFpcCsr.o (.data); + build/e/src/libultra/osCreateThread.o (.data); + build/e/src/libultra/osStartThread.o (.data); + build/e/src/libultra/osCreateMesgQueue.o (.data); + build/e/src/libultra/osStopThread.o (.data); + build/e/src/libultra/osSetThreadPri.o (.data); + build/e/src/libultra/osGetCount.o (.data); - build/src/gspboot.o (.data); - build/src/aspboot.o (.data); + build/e/src/libultra/osViModeTable.o (.data); + build/e/src/libultra/osSetEventMesg.o (.data); + build/e/src/libultra/osViSetEvent.o (.data); + build/e/src/libultra/osSetIntMask.o (.data); + build/e/src/libultra/osRecvMesg.o (.data); + build/e/src/libultra/osSendMesg.o (.data); + build/e/src/libultra/osViSetMode.o (.data); + build/e/src/libultra/osViSetXScale.o (.data); + build/e/src/libultra/osViSetYScale.o (.data); + build/e/src/libultra/osViRepeatLine.o (.data); + build/e/src/libultra/osViBlack.o (.data); + build/e/src/libultra/osSpTaskYielded.o (.data); + build/e/src/libultra/osDpGetCounters.o (.data); + build/e/src/libultra/osViGetCurrentFramebuffer.o (.data); + build/e/src/libultra/osViGetNextFramebuffer.o (.data); + build/e/src/libultra/osViSwapBuffer.o (.data); + build/e/src/libultra/osDpSetStatus.o (.data); + build/e/src/libultra/osSpTaskLoad.o (.data); + build/e/src/libultra/osDpSetNextBuffer.o (.data); + build/e/src/libultra/osSpTaskYield.o (.data); + build/e/src/libultra/__osGetTLBHi.o (.data); + build/e/src/libultra/osVirtualToPhysical.o (.data); + build/e/src/libultra/osAiSetFrequency.o (.data); + build/e/src/libultra/alInit.o (.data); + build/e/src/libultra/osGetTime.o (.data); + build/e/src/libultra/ll.o (.data); + build/e/src/libultra/osAiGetLength.o (.data); + build/e/src/libultra/syn.o (.data); + build/e/src/libultra/osPiStartDma.o (.data); + build/e/src/libultra/osViSetSpecialFeatures.o (.data); + build/e/src/libultra/_bcopy.o (.data); + build/e/src/libultra/guPerspective.o (.data); + build/e/src/libultra/Mtx.o (.data); + build/e/src/libultra/__osGetCurrFaultedThread.o (.data); + build/e/src/libultra/exception.o (.data); + build/e/src/libultra/__osDequeueThread.o (.data); + build/e/src/libultra/osYieldThread.o (.data); + build/e/src/libultra/osInvalDCache.o (.data); + build/e/src/libultra/osWritebackDCache.o (.data); + build/e/src/libultra/osSetTimer.o (.data); + build/e/src/libultra/alHeapInit.o (.data); + build/e/src/libultra/alBnkfNew.o (.data); + build/e/src/libultra/__CSP.o (.data); + build/e/src/libultra/alSeqpSetBank.o (.data); + build/e/src/libultra/alCSPGetState.o (.data); + build/e/src/libultra/csequencer.o (.data); + build/e/src/libultra/alCSPSetSeq.o (.data); + build/e/src/libultra/alCSPPlay.o (.data); + build/e/src/libultra/alCSPStop.o (.data); + build/e/src/libultra/alCSPSetVol.o (.data); + build/e/src/libultra/alEvtq.o (.data); + build/e/src/libultra/alSynAddPlayer.o (.data); + build/e/src/libultra/alSynAllocVoice.o (.data); + build/e/src/libultra/alSynSetVol.o (.data); + build/e/src/libultra/alSynStartVoice.o (.data); + build/e/src/libultra/alSynSetPan.o (.data); + build/e/src/libultra/alSynSetPitch.o (.data); + build/e/src/libultra/alSynSetFXMix.o (.data); + build/e/src/libultra/alSynStopVoice.o (.data); + build/e/src/libultra/alSynFreeVoice.o (.data); + build/e/src/libultra/alCents2Ratio.o (.data); + build/e/src/libultra/osPiReadIo.o (.data); + build/e/src/libultra/string.o (.data); + build/e/src/libultra/_Printf.o (.data); + + build/e/src/libultra/libultra.o (.data); + /*build/e/src/libultra/libultra.a:libultra.o (.data);*/ + + build/e/src/aspboot.o (.rodata); + build/e/src/boot.o (.rodata); + build/e/src/init.o (.rodata); + build/e/src/sched.o (.rodata); + build/e/src/osMapTLB.o (.rodata); + + build/e/src/libultra/osCreateViManager.o (.rodata); + build/e/src/libultra/osCreatePiManager.o (.rodata); + + build/e/src/tlb_manage.o (.rodata); + build/e/src/tlb_random.o (.rodata); + build/e/src/tlb_resolve.o (.rodata); + build/e/src/tlb_hardwire.o (.rodata); + build/e/src/audi.o (.rodata); + build/e/src/speed_graph.o (.rodata); + build/e/src/video.o (.rodata); + build/e/src/deb.o (.rodata); + build/e/src/deb_video.o (.rodata); + build/e/src/deb_print.o (.rodata); + build/e/src/debug_getlastRA.o (.rodata); + build/e/src/ramrom.o (.rodata); + build/e/src/boss.o (.rodata); + build/e/src/music.o (.rodata); + build/e/src/snd.o (.rodata); + build/e/src/memp.o (.rodata); + build/e/src/mema.o (.rodata); + build/e/src/random.o (.rodata); + build/e/src/token.o (.rodata); + build/e/src/str.o (.rodata); + build/e/src/sprintf.o (.rodata); + build/e/src/pi.o (.rodata); + build/e/src/vi.o (.rodata); + build/e/src/debugmenu.o (.rodata); + build/e/src/joy.o (.rodata); + build/e/src/joy_rumble.o (.rodata); + build/e/src/rmon.o (.rodata); + + build/e/src/libultra/osPiRawStartDma.o (.rodata); + build/e/src/libultra/osPiGetStatus.o (.rodata); + build/e/src/libultra/osInitialize.o (.rodata); + build/e/src/libultra/osWritebackDCacheAll.o (.rodata); + build/e/src/libultra/osInvalICache.o (.rodata); + build/e/src/libultra/osUnmapTLB.o (.rodata); + build/e/src/libultra/__osGetFpcCsr.o (.rodata); + build/e/src/libultra/__osSetFpcCsr.o (.rodata); + build/e/src/libultra/osCreateThread.o (.rodata); + build/e/src/libultra/osStartThread.o (.rodata); + build/e/src/libultra/osCreateMesgQueue.o (.rodata); + build/e/src/libultra/osStopThread.o (.rodata); + build/e/src/libultra/osSetThreadPri.o (.rodata); + build/e/src/libultra/osGetCount.o (.rodata); + + build/e/src/libultra/osViModeTable.o (.rodata); + build/e/src/libultra/osSetEventMesg.o (.rodata); + build/e/src/libultra/osViSetEvent.o (.rodata); + build/e/src/libultra/osSetIntMask.o (.rodata); + build/e/src/libultra/osRecvMesg.o (.rodata); + build/e/src/libultra/osSendMesg.o (.rodata); + build/e/src/libultra/osViSetMode.o (.rodata); + build/e/src/libultra/osViSetXScale.o (.rodata); + build/e/src/libultra/osViSetYScale.o (.rodata); + build/e/src/libultra/osViRepeatLine.o (.rodata); + build/e/src/libultra/osViBlack.o (.rodata); + build/e/src/libultra/osSpTaskYielded.o (.rodata); + build/e/src/libultra/osDpGetCounters.o (.rodata); + build/e/src/libultra/osViGetCurrentFramebuffer.o (.rodata); + build/e/src/libultra/osViGetNextFramebuffer.o (.rodata); + build/e/src/libultra/osViSwapBuffer.o (.rodata); + build/e/src/libultra/osDpSetStatus.o (.rodata); + build/e/src/libultra/osSpTaskLoad.o (.rodata); + build/e/src/libultra/osDpSetNextBuffer.o (.rodata); + build/e/src/libultra/osSpTaskYield.o (.rodata); + build/e/src/libultra/__osGetTLBHi.o (.rodata); + build/e/src/libultra/osVirtualToPhysical.o (.rodata); + build/e/src/libultra/osAiSetFrequency.o (.rodata); + build/e/src/libultra/alInit.o (.rodata); + build/e/src/libultra/osGetTime.o (.rodata); + build/e/src/libultra/ll.o (.rodata); + build/e/src/libultra/osAiGetLength.o (.rodata); + build/e/src/libultra/syn.o (.rodata); + build/e/src/libultra/osPiStartDma.o (.rodata); + build/e/src/libultra/osViSetSpecialFeatures.o (.rodata); + build/e/src/libultra/_bcopy.o (.rodata); + build/e/src/libultra/guPerspective.o (.rodata); + build/e/src/libultra/Mtx.o (.rodata); + build/e/src/libultra/__osGetCurrFaultedThread.o (.rodata); + build/e/src/libultra/exception.o (.rodata); + build/e/src/libultra/__osDequeueThread.o (.rodata); + build/e/src/libultra/osYieldThread.o (.rodata); + build/e/src/libultra/osInvalDCache.o (.rodata); + build/e/src/libultra/osWritebackDCache.o (.rodata); + build/e/src/libultra/osSetTimer.o (.rodata); + build/e/src/libultra/alHeapInit.o (.rodata); + build/e/src/libultra/alBnkfNew.o (.rodata); + build/e/src/libultra/__CSP.o (.rodata); + build/e/src/libultra/alSeqpSetBank.o (.rodata); + build/e/src/libultra/alCSPGetState.o (.rodata); + build/e/src/libultra/csequencer.o (.rodata); + build/e/src/libultra/alCSPSetSeq.o (.rodata); + build/e/src/libultra/alCSPPlay.o (.rodata); + build/e/src/libultra/alCSPStop.o (.rodata); + build/e/src/libultra/alCSPSetVol.o (.rodata); + build/e/src/libultra/alEvtq.o (.rodata); + build/e/src/libultra/alSynAddPlayer.o (.rodata); + build/e/src/libultra/alSynAllocVoice.o (.rodata); + build/e/src/libultra/alSynSetVol.o (.rodata); + build/e/src/libultra/alSynStartVoice.o (.rodata); + build/e/src/libultra/alSynSetPan.o (.rodata); + build/e/src/libultra/alSynSetPitch.o (.rodata); + build/e/src/libultra/alSynSetFXMix.o (.rodata); + build/e/src/libultra/alSynStopVoice.o (.rodata); + build/e/src/libultra/alSynFreeVoice.o (.rodata); + build/e/src/libultra/alCents2Ratio.o (.rodata); + build/e/src/libultra/osPiReadIo.o (.rodata); + build/e/src/libultra/string.o (.rodata); + build/e/src/libultra/_Printf.o (.rodata); + + build/e/src/libultra/libultra.o (.rodata); + /*build/e/src/libultra/libultra.a:libultra.o (.rodata);*/ + + build/e/src/game/initgamedata.o (.data); + build/e/src/game/initweaponanigroups.o (.data); + build/e/src/game/initactorpropstuff.o (.data); + build/e/src/game/initnull_0009D0.o (.data); + build/e/src/game/initunk_0009E0.o (.data); + build/e/src/game/initanitable.o (.data); + build/e/src/game/initunk_000B60.o (.data); + build/e/src/game/setguscale.o (.data); + build/e/src/game/initnull_000BC0.o (.data); + build/e/src/game/initimages.o (.data); + build/e/src/game/initintromatrices.o (.data); + build/e/src/game/initmenus.o (.data); + build/e/src/game/initguards.o (.data); + build/e/src/game/deb_loadallmodels.o (.data); + build/e/src/game/initobjects.o (.data); + build/e/src/game/prop.o (.data); + build/e/src/game/objective.o (.data); + build/e/src/game/ejectedcartridges.o (.data); + build/e/src/game/initBondDATA.o (.data); + build/e/src/game/initunk_005450.o (.data); + build/e/src/game/initunk_005520.o (.data); + build/e/src/game/initcameraandthrown.o (.data); + build/e/src/game/inititemslots.o (.data); + build/e/src/game/initBondDATAdefaults.o (.data); + build/e/src/game/initpathtablesomething.o (.data); + build/e/src/game/initpathtablelinks.o (.data); + build/e/src/game/initexplosioncasing.o (.data); + build/e/src/game/initunk_007180.o (.data); + build/e/src/game/initunk_007290.o (.data); + build/e/src/game/initunk_0072B0.o (.data); + build/e/src/game/initmttex.o (.data); + build/e/src/game/initunk_0073B0.o (.data); + build/e/src/game/initunk_007460.o (.data); + build/e/src/game/cleanup_alarms.o (.data); + build/e/src/game/cleanup_objects.o (.data); + build/e/src/game/cleanup_objectives.o (.data); + build/e/src/game/cleanupSFXRelated.o (.data); + build/e/src/game/playerstats_007770.o (.data); + build/e/src/game/unk_007800.o (.data); + build/e/src/game/unk_007920.o (.data); + build/e/src/game/null_007970.o (.data); + build/e/src/game/unk_007980.o (.data); + build/e/src/game/intro_logos.o (.data); + build/e/src/game/mainmenu.o (.data); + build/e/src/game/unk_01B0E0.o (.data); + build/e/src/game/unk_01B240.o (.data); + build/e/src/game/unk_01BAE0.o (.data); + build/e/src/game/blood_animation.o (.data); + build/e/src/game/blood_decrypt.o (.data); + build/e/src/game/gamefile.o (.data); + build/e/src/game/gamefile2.o (.data); + build/e/src/game/chr.o (.data); + build/e/src/game/chr2.o (.data); + build/e/src/game/chrai.o (.data); + build/e/src/game/chrobjhandler.o (.data); + build/e/src/game/loadobjectmodel.o (.data); + build/e/src/game/objective_status.o (.data); + build/e/src/game/objective_status2.o (.data); + build/e/src/game/sin.o (.data); + build/e/src/game/unk_057FD0.o (.data); + build/e/src/game/unk_05A9E0.o (.data); + build/e/src/game/convertangleusinginverse.o (.data); + build/e/src/game/unk_05AB70.o (.data); + build/e/src/game/unk_05ACB0.o (.data); + build/e/src/game/unk_05AE00.o (.data); + build/e/src/game/unk_05B1E0.o (.data); + build/e/src/game/truncf.o (.data); + build/e/src/game/unk_05C440.o (.data); + build/e/src/game/bondwalk.o (.data); + build/e/src/game/bondwalk2.o (.data); + build/e/src/game/objecthandler.o (.data); + build/e/src/game/objecthandler_2.o (.data); + build/e/src/game/othermodemicrocode.o (.data); + build/e/src/game/bond.o (.data); + build/e/src/game/bond2.o (.data); + build/e/src/game/unk_08DBB0.o (.data); + build/e/src/game/debugmenu_08FE00.o (.data); + build/e/src/game/debugmenu_090490.o (.data); + build/e/src/game/unk_091080.o (.data); + build/e/src/game/chrobjdata.o (.data); + build/e/src/game/cheat_buttons.o (.data); + build/e/src/game/unk_092890.o (.data); + build/e/src/game/unk_092E50.o (.data); + build/e/src/game/unk_093880.o (.data); + build/e/src/game/unk_09B600.o (.data); + build/e/src/game/unk_09B740.o (.data); + build/e/src/game/unk_09B7A0.o (.data); + build/e/src/game/unk_09C250.o (.data); + build/e/src/game/unk_0A1DA0.o (.data); + build/e/src/game/watch.o (.data); + build/e/src/game/textrelated.o (.data); + build/e/src/game/stan.o (.data); + build/e/src/game/unk_0B3200.o (.data); + build/e/src/game/bg.o (.data); + build/e/src/game/fog.o (.data); + build/e/src/game/lightfixture.o (.data); + build/e/src/game/unk_0BC530.o (.data); + build/e/src/game/ob.o (.data); + build/e/src/game/dyn.o (.data); + build/e/src/game/lvl.o (.data); + build/e/src/game/lvl_2.o (.data); + build/e/src/game/unk_0C0A70.o (.data); + build/e/src/game/mp_music.o (.data); + build/e/src/game/lvl_text.o (.data); + build/e/src/game/mp_watch.o (.data); + build/e/src/game/radar.o (.data); + build/e/src/game/mp_weapon.o (.data); + build/e/src/game/image.o (.data); + build/e/src/game/image_bank.o (.data); + build/e/src/game/unk_0CC4C0.o (.data); + build/e/src/game/decompress.o (.data); + build/e/src/game/zlib.o (.data); + build/e/src/game/rsp.o (.data); + build/e/src/game/indy_comms.o (.data); + build/e/src/game/indy_commands.o (.data); + build/e/src/game/game_debug.o (.data); + build/e/src/game/compiletime.o (.data); + build/e/src/game/unk_0D1AC0.o (.data); + build/e/src/game/viewport.o (.data); + build/e/src/game/music_0D2720.o (.data); + build/e/src/game/spectrum.o (.data); + + build/e/src/game/initgamedata.o (.rodata); + build/e/src/game/initweaponanigroups.o (.rodata); + build/e/src/game/initactorpropstuff.o (.rodata); + build/e/src/game/initnull_0009D0.o (.rodata); + build/e/src/game/initunk_0009E0.o (.rodata); + build/e/src/game/initanitable.o (.rodata); + build/e/src/game/initunk_000B60.o (.rodata); + build/e/src/game/setguscale.o (.rodata); + build/e/src/game/initnull_000BC0.o (.rodata); + build/e/src/game/initimages.o (.rodata); + build/e/src/game/initintromatrices.o (.rodata); + build/e/src/game/initmenus.o (.rodata); + build/e/src/game/initguards.o (.rodata); + build/e/src/game/deb_loadallmodels.o (.rodata); + build/e/src/game/initobjects.o (.rodata); + build/e/src/game/prop.o (.rodata); + build/e/src/game/objective.o (.rodata); + build/e/src/game/ejectedcartridges.o (.rodata); + build/e/src/game/initBondDATA.o (.rodata); + build/e/src/game/initunk_005450.o (.rodata); + build/e/src/game/initunk_005520.o (.rodata); + build/e/src/game/initcameraandthrown.o (.rodata); + build/e/src/game/inititemslots.o (.rodata); + build/e/src/game/initBondDATAdefaults.o (.rodata); + build/e/src/game/initpathtablesomething.o (.rodata); + build/e/src/game/initpathtablelinks.o (.rodata); + build/e/src/game/initexplosioncasing.o (.rodata); + build/e/src/game/initunk_007180.o (.rodata); + build/e/src/game/initunk_007290.o (.rodata); + build/e/src/game/initunk_0072B0.o (.rodata); + build/e/src/game/initmttex.o (.rodata); + build/e/src/game/initunk_0073B0.o (.rodata); + build/e/src/game/initunk_007460.o (.rodata); + build/e/src/game/cleanup_alarms.o (.rodata); + build/e/src/game/cleanup_objects.o (.rodata); + build/e/src/game/cleanup_objectives.o (.rodata); + build/e/src/game/cleanupSFXRelated.o (.rodata); + build/e/src/game/playerstats_007770.o (.rodata); + build/e/src/game/unk_007800.o (.rodata); + build/e/src/game/unk_007920.o (.rodata); + build/e/src/game/null_007970.o (.rodata); + build/e/src/game/unk_007980.o (.rodata); + build/e/src/game/intro_logos.o (.rodata); + build/e/src/game/mainmenu.o (.rodata); + build/e/src/game/unk_01B0E0.o (.rodata); + build/e/src/game/unk_01B240.o (.rodata); + build/e/src/game/unk_01BAE0.o (.rodata); + build/e/src/game/blood_animation.o (.rodata); + build/e/src/game/blood_decrypt.o (.rodata); + build/e/src/game/gamefile.o (.rodata); + build/e/src/game/gamefile2.o (.rodata); + build/e/src/game/chr.o (.rodata); + build/e/src/game/chr2.o (.rodata); + build/e/src/game/chrai.o (.rodata); + build/e/src/game/chrobjhandler.o (.rodata); + build/e/src/game/loadobjectmodel.o (.rodata); + build/e/src/game/objective_status.o (.rodata); + build/e/src/game/objective_status2.o (.rodata); + build/e/src/game/sin.o (.rodata); + build/e/src/game/unk_057FD0.o (.rodata); + build/e/src/game/unk_05A9E0.o (.rodata); + build/e/src/game/convertangleusinginverse.o (.rodata); + build/e/src/game/unk_05AB70.o (.rodata); + build/e/src/game/unk_05ACB0.o (.rodata); + build/e/src/game/unk_05AE00.o (.rodata); + build/e/src/game/unk_05B1E0.o (.rodata); + build/e/src/game/truncf.o (.rodata); + build/e/src/game/unk_05C440.o (.rodata); + build/e/src/game/bondwalk.o (.rodata); + build/e/src/game/bondwalk2.o (.rodata); + build/e/src/game/objecthandler.o (.rodata); + build/e/src/game/objecthandler_2.o (.rodata); + build/e/src/game/othermodemicrocode.o (.rodata); + build/e/src/game/bond.o (.rodata); + build/e/src/game/bond2.o (.rodata); + build/e/src/game/unk_08DBB0.o (.rodata); + build/e/src/game/debugmenu_08FE00.o (.rodata); + build/e/src/game/debugmenu_090490.o (.rodata); + build/e/src/game/unk_091080.o (.rodata); + build/e/src/game/chrobjdata.o (.rodata); + build/e/src/game/cheat_buttons.o (.rodata); + build/e/src/game/unk_092890.o (.rodata); + build/e/src/game/unk_092E50.o (.rodata); + build/e/src/game/unk_093880.o (.rodata); + build/e/src/game/unk_09B600.o (.rodata); + build/e/src/game/unk_09B740.o (.rodata); + build/e/src/game/unk_09B7A0.o (.rodata); + build/e/src/game/unk_09C250.o (.rodata); + build/e/src/game/unk_0A1DA0.o (.rodata); + build/e/src/game/watch.o (.rodata); + build/e/src/game/textrelated.o (.rodata); + build/e/src/game/stan.o (.rodata); + build/e/src/game/unk_0B3200.o (.rodata); + build/e/src/game/bg.o (.rodata); + build/e/src/game/fog.o (.rodata); + build/e/src/game/lightfixture.o (.rodata); + build/e/src/game/unk_0BC530.o (.rodata); + build/e/src/game/ob.o (.rodata); + build/e/src/game/dyn.o (.rodata); + build/e/src/game/lvl.o (.rodata); + build/e/src/game/lvl_2.o (.rodata); + build/e/src/game/unk_0C0A70.o (.rodata); + build/e/src/game/mp_music.o (.rodata); + build/e/src/game/lvl_text.o (.rodata); + build/e/src/game/mp_watch.o (.rodata); + build/e/src/game/radar.o (.rodata); + build/e/src/game/mp_weapon.o (.rodata); + build/e/src/game/image.o (.rodata); + build/e/src/game/image_bank.o (.rodata); + build/e/src/game/unk_0CC4C0.o (.rodata); + build/e/src/game/decompress.o (.rodata); + build/e/src/game/zlib.o (.rodata); + build/e/src/game/rsp.o (.rodata); + build/e/src/game/indy_comms.o (.rodata); + build/e/src/game/indy_commands.o (.rodata); + build/e/src/game/game_debug.o (.rodata); + build/e/src/game/compiletime.o (.rodata); + build/e/src/game/unk_0D1AC0.o (.rodata); + build/e/src/game/viewport.o (.rodata); + build/e/src/game/music_0D2720.o (.rodata); + build/e/src/game/spectrum.o (.rodata); + + build/e/src/gspboot.o (.data); + build/e/src/aspboot.o (.data); } _csegmentSegmentEnd = ADDR(.csegment) + SIZEOF(.csegment); _csegmentSegmentRomEnd = _csegmentSegmentRomStart + SIZEOF(.csegment); @@ -3291,168 +3565,271 @@ SECTIONS _bssSegmentStart = ADDR(.bss); _bssSegmentRomStart = _csegmentSegmentRomEnd; .bss _csegmentSegmentEnd : AT(_bssSegmentRomStart){ - build/src/boot.o (.bss); - build/src/init.o (.bss); - build/src/sched.o (.bss); - build/src/osMapTLB.o (.bss); - build/src/tlb_manage.o (.bss); - build/src/tlb_random.o (.bss); - build/src/tlb_resolve.o (.bss); - build/src/audi.o (.bss); - build/src/speed_graph.o (.bss); - build/src/video.o (.bss); - build/src/deb.o (.bss); - build/src/deb_video.o (.bss); - build/src/deb_print.o (.bss); - build/src/debug_getlastRA.o (.bss); - build/src/ramrom.o (.bss); - build/src/boss.o (.bss); - build/src/music.o (.bss); - build/src/snd.o (.bss); - build/src/memp.o (.bss); - build/src/mema.o (.bss); - build/src/random.o (.bss); - build/src/token.o (.bss); - build/src/str.o (.bss); - build/src/sprintf.o (.bss); - build/src/pi.o (.bss); - build/src/vi.o (.bss); - build/src/debugmenu.o (.bss); - build/src/joy.o (.bss); - build/src/joy_rumble.o (.bss); - build/src/rmon.o (.bss); - build/libultra/libultra.o (.bss); - build/src/game/initgamedata.o (.bss); - build/src/game/initweaponanigroups.o (.bss); - build/src/game/initactorpropstuff.o (.bss); - build/src/game/initnull_0009D0.o (.bss); - build/src/game/initunk_0009E0.o (.bss); - build/src/game/initanitable.o (.bss); - build/src/game/initunk_000B60.o (.bss); - build/src/game/setguscale.o (.bss); - build/src/game/initnull_000BC0.o (.bss); - build/src/game/initimages.o (.bss); - build/src/game/initintromatrices.o (.bss); - build/src/game/initmenus.o (.bss); - build/src/game/initguards.o (.bss); - build/src/game/deb_loadallmodels.o (.bss); - build/src/game/initobjects.o (.bss); - build/src/game/prop.o (.bss); - build/src/game/objective.o (.bss); - build/src/game/ejectedcartridges.o (.bss); - build/src/game/initBondDATA.o (.bss); - build/src/game/initunk_005450.o (.bss); - build/src/game/initunk_005520.o (.bss); - build/src/game/initcameraandthrown.o (.bss); - build/src/game/inititemslots.o (.bss); - build/src/game/initBondDATAdefaults.o (.bss); - build/src/game/initpathtablesomething.o (.bss); - build/src/game/initpathtablelinks.o (.bss); - build/src/game/initexplosioncasing.o (.bss); - build/src/game/initunk_007180.o (.bss); - build/src/game/initunk_007290.o (.bss); - build/src/game/initunk_0072B0.o (.bss); - build/src/game/initmttex.o (.bss); - build/src/game/initunk_0073B0.o (.bss); - build/src/game/initunk_007460.o (.bss); - build/src/game/cleanup_alarms.o (.bss); - build/src/game/cleanup_objects.o (.bss); - build/src/game/cleanup_objectives.o (.bss); - build/src/game/cleanupSFXRelated.o (.bss); - build/src/game/playerstats_007770.o (.bss); - build/src/game/unk_007800.o (.bss); - build/src/game/unk_007920.o (.bss); - build/src/game/null_007970.o (.bss); - build/src/game/unk_007980.o (.bss); - build/src/game/intro_logos.o (.bss); - build/src/game/mainmenu.o (.bss); - build/src/game/unk_01B0E0.o (.bss); - build/src/game/unk_01B240.o (.bss); - build/src/game/unk_01BAE0.o (.bss); - build/src/game/blood_animation.o (.bss); - build/src/game/blood_decrypt.o (.bss); - build/src/game/gamefile.o (.bss); - build/src/game/chr.o (.bss); - build/src/game/chrai.o (.bss); - build/src/game/loadobjectmodel.o (.bss); - build/src/game/objective_status.o (.bss); - build/src/game/sin.o (.bss); - build/src/game/unk_057FD0.o (.bss); - build/src/game/unk_05A9E0.o (.bss); - build/src/game/convertangleusinginverse.o (.bss); - build/src/game/unk_05AB70.o (.bss); - build/src/game/unk_05ACB0.o (.bss); - build/src/game/unk_05AE00.o (.bss); - build/src/game/unk_05B1E0.o (.bss); - build/src/game/truncf.o (.bss); - build/src/game/unk_05C440.o (.bss); - build/src/game/bondwalk.o (.bss); - build/src/game/objecthandler.o (.bss); - build/src/game/objecthandler_2.o (.bss); - build/src/game/othermodemicrocode.o (.bss); - build/src/game/bond.o (.bss); - build/src/game/unk_08DBB0.o (.bss); - build/src/game/debugmenu_08FE00.o (.bss); - build/src/game/debugmenu_090490.o (.bss); - build/src/game/unk_091080.o (.bss); - build/src/game/cheat_buttons.o (.bss); - build/src/game/unk_092890.o (.bss); - build/src/game/unk_092E50.o (.bss); - build/src/game/unk_093880.o (.bss); - build/src/game/unk_09B600.o (.bss); - build/src/game/unk_09B740.o (.bss); - build/src/game/unk_09B7A0.o (.bss); - build/src/game/unk_09C250.o (.bss); - build/src/game/unk_0A1DA0.o (.bss); - build/src/game/watch.o (.bss); - build/src/game/textrelated.o (.bss); - build/src/game/stan.o (.bss); - build/src/game/unk_0B3200.o (.bss); - build/src/game/bg.o (.bss); - build/src/game/fog.o (.bss); - build/src/game/lightfixture.o (.bss); - build/src/game/unk_0BC530.o (.bss); - build/src/game/ob.o (.bss); - build/src/game/dyn.o (.bss); - build/src/game/lvl.o (.bss); - build/src/game/lvl_2.o (.bss); - build/src/game/unk_0C0A70.o (.bss); - build/src/game/mp_music.o (.bss); - build/src/game/lvl_text.o (.bss); - build/src/game/mp_watch.o (.bss); - build/src/game/radar.o (.bss); - build/src/game/mp_weapon.o (.bss); - build/src/game/image.o (.bss); - build/src/game/image_bank.o (.bss); - build/src/game/unk_0CC4C0.o (.bss); - build/src/game/decompress.o (.bss); - build/src/game/zlib.o (.bss); - build/src/game/rsp.o (.bss); - build/src/game/indy_comms.o (.bss); - build/src/game/indy_commands.o (.bss); - build/src/game/game_debug.o (.bss); - build/src/game/compiletime.o (.bss); - build/src/game/unk_0D1AC0.o (.bss); - build/src/game/viewport.o (.bss); - build/src/game/music_0D2720.o (.bss); - build/src/game/spectrum.o (.bss); - build/src/game/room_model_buffer.o (.bss); + build/e/src/boot.o (.bss); + build/e/src/init.o (.bss); + build/e/src/sched.o (.bss); + build/e/src/osMapTLB.o (.bss); + + build/e/src/libultra/osCreateViManager.o (.bss); + build/e/src/libultra/osCreatePiManager.o (.bss); + + build/e/src/tlb_manage.o (.bss); + build/e/src/tlb_random.o (.bss); + build/e/src/tlb_resolve.o (.bss); + build/e/src/audi.o (.bss); + build/e/src/speed_graph.o (.bss); + build/e/src/video.o (.bss); + build/e/src/deb.o (.bss); + build/e/src/deb_video.o (.bss); + build/e/src/deb_print.o (.bss); + build/e/src/debug_getlastRA.o (.bss); + build/e/src/ramrom.o (.bss); + build/e/src/boss.o (.bss); + build/e/src/music.o (.bss); + build/e/src/snd.o (.bss); + build/e/src/memp.o (.bss); + build/e/src/mema.o (.bss); + build/e/src/random.o (.bss); + build/e/src/token.o (.bss); + build/e/src/str.o (.bss); + build/e/src/sprintf.o (.bss); + build/e/src/pi.o (.bss); + build/e/src/vi.o (.bss); + build/e/src/debugmenu.o (.bss); + build/e/src/joy.o (.bss); + build/e/src/joy_rumble.o (.bss); + build/e/src/rmon.o (.bss); + + build/e/src/libultra/osPiRawStartDma.o (.bss); + build/e/src/libultra/osPiGetStatus.o (.bss); + build/e/src/libultra/osInitialize.o (.bss); + build/e/src/libultra/osWritebackDCacheAll.o (.bss); + build/e/src/libultra/osInvalICache.o (.bss); + build/e/src/libultra/osUnmapTLB.o (.bss); + build/e/src/libultra/__osGetFpcCsr.o (.bss); + build/e/src/libultra/__osSetFpcCsr.o (.bss); + build/e/src/libultra/osCreateThread.o (.bss); + build/e/src/libultra/osStartThread.o (.bss); + build/e/src/libultra/osCreateMesgQueue.o (.bss); + build/e/src/libultra/osStopThread.o (.bss); + build/e/src/libultra/osSetThreadPri.o (.bss); + build/e/src/libultra/osGetCount.o (.bss); + + build/e/src/libultra/osViModeTable.o (.bss); + build/e/src/libultra/osSetEventMesg.o (.bss); + build/e/src/libultra/osViSetEvent.o (.bss); + build/e/src/libultra/osSetIntMask.o (.bss); + build/e/src/libultra/osRecvMesg.o (.bss); + build/e/src/libultra/osSendMesg.o (.bss); + build/e/src/libultra/osViSetMode.o (.bss); + build/e/src/libultra/osViSetXScale.o (.bss); + build/e/src/libultra/osViSetYScale.o (.bss); + build/e/src/libultra/osViRepeatLine.o (.bss); + build/e/src/libultra/osViBlack.o (.bss); + build/e/src/libultra/osSpTaskYielded.o (.bss); + build/e/src/libultra/osDpGetCounters.o (.bss); + build/e/src/libultra/osViGetCurrentFramebuffer.o (.bss); + build/e/src/libultra/osViGetNextFramebuffer.o (.bss); + build/e/src/libultra/osViSwapBuffer.o (.bss); + build/e/src/libultra/osDpSetStatus.o (.bss); + build/e/src/libultra/osSpTaskLoad.o (.bss); + build/e/src/libultra/osDpSetNextBuffer.o (.bss); + build/e/src/libultra/osSpTaskYield.o (.bss); + build/e/src/libultra/__osGetTLBHi.o (.bss); + build/e/src/libultra/osVirtualToPhysical.o (.bss); + build/e/src/libultra/osAiSetFrequency.o (.bss); + build/e/src/libultra/alInit.o (.bss); + build/e/src/libultra/osGetTime.o (.bss); + build/e/src/libultra/ll.o (.bss); + build/e/src/libultra/osAiGetLength.o (.bss); + build/e/src/libultra/syn.o (.bss); + build/e/src/libultra/osPiStartDma.o (.bss); + build/e/src/libultra/osViSetSpecialFeatures.o (.bss); + build/e/src/libultra/_bcopy.o (.bss); + build/e/src/libultra/guPerspective.o (.bss); + build/e/src/libultra/Mtx.o (.bss); + build/e/src/libultra/__osGetCurrFaultedThread.o (.bss); + build/e/src/libultra/exception.o (.bss); + build/e/src/libultra/__osDequeueThread.o (.bss); + build/e/src/libultra/osYieldThread.o (.bss); + build/e/src/libultra/osInvalDCache.o (.bss); + build/e/src/libultra/osWritebackDCache.o (.bss); + build/e/src/libultra/osSetTimer.o (.bss); + build/e/src/libultra/alHeapInit.o (.bss); + build/e/src/libultra/alBnkfNew.o (.bss); + build/e/src/libultra/__CSP.o (.bss); + build/e/src/libultra/alSeqpSetBank.o (.bss); + build/e/src/libultra/alCSPGetState.o (.bss); + build/e/src/libultra/csequencer.o (.bss); + build/e/src/libultra/alCSPSetSeq.o (.bss); + build/e/src/libultra/alCSPPlay.o (.bss); + build/e/src/libultra/alCSPStop.o (.bss); + build/e/src/libultra/alCSPSetVol.o (.bss); + build/e/src/libultra/alEvtq.o (.bss); + build/e/src/libultra/alSynAddPlayer.o (.bss); + build/e/src/libultra/alSynAllocVoice.o (.bss); + build/e/src/libultra/alSynSetVol.o (.bss); + build/e/src/libultra/alSynStartVoice.o (.bss); + build/e/src/libultra/alSynSetPan.o (.bss); + build/e/src/libultra/alSynSetPitch.o (.bss); + build/e/src/libultra/alSynSetFXMix.o (.bss); + build/e/src/libultra/alSynStopVoice.o (.bss); + build/e/src/libultra/alSynFreeVoice.o (.bss); + build/e/src/libultra/alCents2Ratio.o (.bss); + build/e/src/libultra/osPiReadIo.o (.bss); + build/e/src/libultra/string.o (.bss); + build/e/src/libultra/_Printf.o (.bss); + + build/e/src/libultra/libultra.o (.bss); + /*build/e/src/libultra/libultra.a:libultra.o (.bss);*/ + + build/e/src/game/initgamedata.o (.bss); + build/e/src/game/initweaponanigroups.o (.bss); + build/e/src/game/initactorpropstuff.o (.bss); + build/e/src/game/initnull_0009D0.o (.bss); + build/e/src/game/initunk_0009E0.o (.bss); + build/e/src/game/initanitable.o (.bss); + build/e/src/game/initunk_000B60.o (.bss); + build/e/src/game/setguscale.o (.bss); + build/e/src/game/initnull_000BC0.o (.bss); + build/e/src/game/initimages.o (.bss); + build/e/src/game/initintromatrices.o (.bss); + build/e/src/game/initmenus.o (.bss); + build/e/src/game/initguards.o (.bss); + build/e/src/game/deb_loadallmodels.o (.bss); + build/e/src/game/initobjects.o (.bss); + build/e/src/game/prop.o (.bss); + build/e/src/game/objective.o (.bss); + build/e/src/game/ejectedcartridges.o (.bss); + build/e/src/game/initBondDATA.o (.bss); + build/e/src/game/initunk_005450.o (.bss); + build/e/src/game/initunk_005520.o (.bss); + build/e/src/game/initcameraandthrown.o (.bss); + build/e/src/game/inititemslots.o (.bss); + build/e/src/game/initBondDATAdefaults.o (.bss); + build/e/src/game/initpathtablesomething.o (.bss); + build/e/src/game/initpathtablelinks.o (.bss); + build/e/src/game/initexplosioncasing.o (.bss); + build/e/src/game/initunk_007180.o (.bss); + build/e/src/game/initunk_007290.o (.bss); + build/e/src/game/initunk_0072B0.o (.bss); + build/e/src/game/initmttex.o (.bss); + build/e/src/game/initunk_0073B0.o (.bss); + build/e/src/game/initunk_007460.o (.bss); + build/e/src/game/cleanup_alarms.o (.bss); + build/e/src/game/cleanup_objects.o (.bss); + build/e/src/game/cleanup_objectives.o (.bss); + build/e/src/game/cleanupSFXRelated.o (.bss); + build/e/src/game/playerstats_007770.o (.bss); + build/e/src/game/unk_007800.o (.bss); + build/e/src/game/unk_007920.o (.bss); + build/e/src/game/null_007970.o (.bss); + build/e/src/game/unk_007980.o (.bss); + build/e/src/game/intro_logos.o (.bss); + build/e/src/game/mainmenu.o (.bss); + build/e/src/game/unk_01B0E0.o (.bss); + build/e/src/game/unk_01B240.o (.bss); + build/e/src/game/unk_01BAE0.o (.bss); + build/e/src/game/blood_animation.o (.bss); + build/e/src/game/blood_decrypt.o (.bss); + build/e/src/game/gamefile.o (.bss); + build/e/src/game/gamefile2.o (.bss); + build/e/src/game/chr.o (.bss); + build/e/src/game/chr2.o (.bss); + build/e/src/game/chrai.o (.bss); + build/e/src/game/chrobjhandler.o (.bss); + build/e/src/game/loadobjectmodel.o (.bss); + build/e/src/game/objective_status.o (.bss); + build/e/src/game/objective_status2.o (.bss); + build/e/src/game/sin.o (.bss); + build/e/src/game/unk_057FD0.o (.bss); + build/e/src/game/unk_05A9E0.o (.bss); + build/e/src/game/convertangleusinginverse.o (.bss); + build/e/src/game/unk_05AB70.o (.bss); + build/e/src/game/unk_05ACB0.o (.bss); + build/e/src/game/unk_05AE00.o (.bss); + build/e/src/game/unk_05B1E0.o (.bss); + build/e/src/game/truncf.o (.bss); + build/e/src/game/unk_05C440.o (.bss); + build/e/src/game/bondwalk.o (.bss); + build/e/src/game/bondwalk2.o (.bss); + build/e/src/game/objecthandler.o (.bss); + build/e/src/game/objecthandler_2.o (.bss); + build/e/src/game/othermodemicrocode.o (.bss); + build/e/src/game/bond.o (.bss); + build/e/src/game/bond2.o (.bss); + build/e/src/game/unk_08DBB0.o (.bss); + build/e/src/game/debugmenu_08FE00.o (.bss); + build/e/src/game/debugmenu_090490.o (.bss); + build/e/src/game/unk_091080.o (.bss); + build/e/src/game/chrobjdata.o (.bss); + build/e/src/game/cheat_buttons.o (.bss); + build/e/src/game/unk_092890.o (.bss); + build/e/src/game/unk_092E50.o (.bss); + build/e/src/game/unk_093880.o (.bss); + build/e/src/game/unk_09B600.o (.bss); + build/e/src/game/unk_09B740.o (.bss); + build/e/src/game/unk_09B7A0.o (.bss); + build/e/src/game/unk_09C250.o (.bss); + build/e/src/game/unk_0A1DA0.o (.bss); + build/e/src/game/watch.o (.bss); + build/e/src/game/textrelated.o (.bss); + build/e/src/game/stan.o (.bss); + build/e/src/game/unk_0B3200.o (.bss); + build/e/src/game/bg.o (.bss); + build/e/src/game/fog.o (.bss); + build/e/src/game/lightfixture.o (.bss); + build/e/src/game/unk_0BC530.o (.bss); + build/e/src/game/ob.o (.bss); + build/e/src/game/dyn.o (.bss); + build/e/src/game/lvl.o (.bss); + build/e/src/game/lvl_2.o (.bss); + build/e/src/game/unk_0C0A70.o (.bss); + build/e/src/game/mp_music.o (.bss); + build/e/src/game/lvl_text.o (.bss); + build/e/src/game/mp_watch.o (.bss); + build/e/src/game/radar.o (.bss); + build/e/src/game/mp_weapon.o (.bss); + build/e/src/game/image.o (.bss); + build/e/src/game/image_bank.o (.bss); + build/e/src/game/unk_0CC4C0.o (.bss); + build/e/src/game/decompress.o (.bss); + build/e/src/game/zlib.o (.bss); + build/e/src/game/rsp.o (.bss); + build/e/src/game/indy_comms.o (.bss); + build/e/src/game/indy_commands.o (.bss); + build/e/src/game/game_debug.o (.bss); + build/e/src/game/compiletime.o (.bss); + build/e/src/game/unk_0D1AC0.o (.bss); + build/e/src/game/viewport.o (.bss); + build/e/src/game/music_0D2720.o (.bss); + build/e/src/game/spectrum.o (.bss); } _bssSegmentEnd = ADDR(.bss) + SIZEOF(.bss); + _bssSegmentSize = SIZEOF(.bss); _bssSegmentRomEnd = _bssSegmentRomStart + SIZEOF(.bss); + _roombufSegmentStart = ADDR(.roombuf); + _roombufSegmentRomStart = _bssSegmentRomEnd; + .roombuf _bssSegmentEnd : AT(_roombufSegmentRomStart){ + build/e/src/game/room_model_buffer.o (.bss); + } + _roombufSegmentEnd = ADDR(.roombuf) + SIZEOF(.roombuf); + _roombufSegmentRomEnd = _roombufSegmentRomStart + SIZEOF(.roombuf); + _decompbufSegmentStart = ADDR(.decompbuf); - _decompbufSegmentRomStart = _bssSegmentRomEnd; + _decompbufSegmentRomStart = _roombufSegmentRomEnd; .decompbuf 0x80300000 : AT(_decompbufSegmentRomStart){ - build/src/decompressbuffer.o (.bss); + build/e/src/decompressbuffer.o (.bss); } _decompbufSegmentEnd = ADDR(.decompbuf) + SIZEOF(.decompbuf); _decompbufSegmentRomEnd = _decompbufSegmentRomStart + SIZEOF(.decompbuf); + _stacksSegmentStart = ADDR(.stacks); _stacksSegmentRomStart = _decompbufSegmentRomEnd; .stacks 0x803ab400 : AT(_stacksSegmentRomStart){ - build/src/stacks.o (.bss); + build/e/src/stacks.o (.bss); } _stacksSegmentEnd = ADDR(.stacks) + SIZEOF(.stacks); _stacksSegmentRomEnd = _stacksSegmentRomStart + SIZEOF(.stacks); @@ -3460,7 +3837,7 @@ SECTIONS _cfbSegmentStart = ADDR(.cfb); _cfbSegmentRomStart = _stacksSegmentRomEnd; .cfb 0x803b5000 : AT(_cfbSegmentRomStart){ - build/src/cfb.o (.bss); + build/e/src/cfb.o (.bss); } _cfbSegmentEnd = ADDR(.cfb) + SIZEOF(.cfb); _cfbSegmentRomEnd = _cfbSegmentRomStart + SIZEOF(.cfb); @@ -3478,33 +3855,36 @@ SECTIONS * (.gptab.data); * (.reginfo); - build/assets/romfiles.o (.text); - build/assets/romfiles.o (.data); - build/assets/ramrom/ramrom.o (.text); - build/assets/ramrom/ramrom.o (.data); - build/assets/font/font.o (.text); - build/assets/font/font.o (.data); - build/assets/music/music.o (.text); - build/assets/music/music.o (.data); - build/assets/obseg/ob_seg.o (.text); - build/assets/obseg/ob_seg.o (.data); - build/assets/images/split/*.o (.text); - build/assets/images/split/*.o (.data); - build/src/rom_header.o (.text); - build/src/bootcode.o (.data); - build/src/_start.o (.data); - build/src/rspboot.o (.data); - build/src/_start.o (.rodata); - build/src/rspboot.o (.rodata); - build/src/gspboot.o (.rodata); - build/src/_start.o (.bss); - build/assets/romfiles.o (.bss); - build/assets/ramrom/ramrom.o (.bss); - build/assets/font/font.o (.bss); - build/assets/music/music.o (.bss); - build/assets/obseg/ob_seg.o (.bss); - build/src/rspboot.o (.bss); - build/src/gspboot.o (.bss); - build/src/aspboot.o (.bss); + build/e/assets/romfiles.o (.text); + build/e/assets/romfiles.o (.data); + build/e/assets/romfiles2.o (.text); + build/e/assets/romfiles2.o (.data); + build/e/assets/ramrom/ramrom.o (.text); + build/e/assets/ramrom/ramrom.o (.data); + build/e/assets/font/font.o (.text); + build/e/assets/font/font.o (.data); + build/e/assets/music/music.o (.text); + build/e/assets/music/music.o (.data); + build/e/assets/obseg/ob_seg.o (.text); + build/e/assets/obseg/ob_seg.o (.data); + build/e/assets/images/split/*.o (.text); + build/e/assets/images/split/*.o (.data); + build/e/src/rom_header.o (.text); + build/e/src/bootcode.o (.data); + build/e/src/_start.o (.data); + build/e/src/rspboot.o (.data); + build/e/src/_start.o (.rodata); + build/e/src/rspboot.o (.rodata); + build/e/src/gspboot.o (.rodata); + build/e/src/_start.o (.bss); + build/e/assets/romfiles.o (.bss); + build/e/assets/romfiles2.o (.bss); + build/e/assets/ramrom/ramrom.o (.bss); + build/e/assets/font/font.o (.bss); + build/e/assets/music/music.o (.bss); + build/e/assets/obseg/ob_seg.o (.bss); + build/e/src/rspboot.o (.bss); + build/e/src/gspboot.o (.bss); + build/e/src/aspboot.o (.bss); } } diff --git a/ge007.j.ld b/ge007.j.ld index 7c029c3..8a60592 100644 --- a/ge007.j.ld +++ b/ge007.j.ld @@ -58,9 +58,7 @@ SECTIONS build/j/src/deb_print.o (.text); build/j/src/debug_getlastRA.o (.text); build/j/src/ramrom.o (.text); - build/j/src/boss.o (.text); - build/j/src/music.o (.text); build/j/src/snd.o (.text); build/j/src/memp.o (.text); @@ -72,12 +70,92 @@ SECTIONS build/j/src/pi.o (.text); build/j/src/vi.o (.text); build/j/src/debugmenu.o (.text); - build/j/src/joy.o (.text); - build/j/src/joy_rumble.o (.text); build/j/src/rmon.o (.text); - build/j/libultra/libultra.o (.text); + + build/j/src/libultra/osPiRawStartDma.o (.text); + build/j/src/libultra/osPiGetStatus.o (.text); + build/j/src/libultra/osInitialize.o (.text); + build/j/src/libultra/osWritebackDCacheAll.o (.text); + build/j/src/libultra/osInvalICache.o (.text); + build/j/src/libultra/osUnmapTLB.o (.text); + build/j/src/libultra/__osGetFpcCsr.o (.text); + build/j/src/libultra/__osSetFpcCsr.o (.text); + build/j/src/libultra/osCreateThread.o (.text); + build/j/src/libultra/osStartThread.o (.text); + build/j/src/libultra/osCreateMesgQueue.o (.text); + build/j/src/libultra/osStopThread.o (.text); + build/j/src/libultra/osSetThreadPri.o (.text); + build/j/src/libultra/osGetCount.o (.text); + build/j/src/libultra/osCreateViManager.o (.text); + build/j/src/libultra/osViModeTable.o (.text); + build/j/src/libultra/osSetEventMesg.o (.text); + build/j/src/libultra/osViSetEvent.o (.text); + build/j/src/libultra/osSetIntMask.o (.text); + build/j/src/libultra/osRecvMesg.o (.text); + build/j/src/libultra/osSendMesg.o (.text); + build/j/src/libultra/osViSetMode.o (.text); + build/j/src/libultra/osViSetXScale.o (.text); + build/j/src/libultra/osViSetYScale.o (.text); + build/j/src/libultra/osViRepeatLine.o (.text); + build/j/src/libultra/osViBlack.o (.text); + build/j/src/libultra/osSpTaskYielded.o (.text); + build/j/src/libultra/osDpGetCounters.o (.text); + build/j/src/libultra/osViGetCurrentFramebuffer.o (.text); + build/j/src/libultra/osViGetNextFramebuffer.o (.text); + build/j/src/libultra/osViSwapBuffer.o (.text); + build/j/src/libultra/osDpSetStatus.o (.text); + build/j/src/libultra/osSpTaskLoad.o (.text); + build/j/src/libultra/osDpSetNextBuffer.o (.text); + build/j/src/libultra/osSpTaskYield.o (.text); + build/j/src/libultra/__osGetTLBHi.o (.text); + build/j/src/libultra/osVirtualToPhysical.o (.text); + build/j/src/libultra/osAiSetFrequency.o (.text); + build/j/src/libultra/alInit.o (.text); + build/j/src/libultra/osGetTime.o (.text); + build/j/src/libultra/ll.o (.text); + build/j/src/libultra/osAiGetLength.o (.text); + build/j/src/libultra/syn.o (.text); + build/j/src/libultra/osPiStartDma.o (.text); + build/j/src/libultra/osViSetSpecialFeatures.o (.text); + build/j/src/libultra/_bcopy.o (.text); + build/j/src/libultra/guPerspective.o (.text); + build/j/src/libultra/Mtx.o (.text); + build/j/src/libultra/__osGetCurrFaultedThread.o (.text); + build/j/src/libultra/exception.o (.text); + build/j/src/libultra/__osDequeueThread.o (.text); + build/j/src/libultra/osYieldThread.o (.text); + build/j/src/libultra/osInvalDCache.o (.text); + build/j/src/libultra/osWritebackDCache.o (.text); + build/j/src/libultra/osSetTimer.o (.text); + build/j/src/libultra/alHeapInit.o (.text); + build/j/src/libultra/alBnkfNew.o (.text); + build/j/src/libultra/__CSP.o (.text); + build/j/src/libultra/alSeqpSetBank.o (.text); + build/j/src/libultra/alCSPGetState.o (.text); + build/j/src/libultra/csequencer.o (.text); + build/j/src/libultra/alCSPSetSeq.o (.text); + build/j/src/libultra/alCSPPlay.o (.text); + build/j/src/libultra/alCSPStop.o (.text); + build/j/src/libultra/alCSPSetVol.o (.text); + build/j/src/libultra/alEvtq.o (.text); + build/j/src/libultra/alSynAddPlayer.o (.text); + build/j/src/libultra/alSynAllocVoice.o (.text); + build/j/src/libultra/alSynSetVol.o (.text); + build/j/src/libultra/alSynStartVoice.o (.text); + build/j/src/libultra/alSynSetPan.o (.text); + build/j/src/libultra/alSynSetPitch.o (.text); + build/j/src/libultra/alSynSetFXMix.o (.text); + build/j/src/libultra/alSynStopVoice.o (.text); + build/j/src/libultra/alSynFreeVoice.o (.text); + build/j/src/libultra/alCents2Ratio.o (.text); + build/j/src/libultra/osPiReadIo.o (.text); + build/j/src/libultra/string.o (.text); + build/j/src/libultra/_Printf.o (.text); + build/j/src/libultra/osCreatePiManager.o (.text); + build/j/src/libultra/libultra.o (.text); + /*build/j/src/libultra/libultra.a:libultra.o (.text);*/ } _codeSegmentEnd = ADDR(.code) + SIZEOF(.code); _codeSegmentRomEnd = _codeSegmentRomStart + SIZEOF(.code); @@ -165,6 +243,7 @@ SECTIONS build/j/src/game/chr.o (.text); build/j/src/game/chr2.o (.text); build/j/src/game/chrai.o (.text); + build/j/src/game/chrobjhandler.o (.text); build/j/src/game/loadobjectmodel.o (.text); build/j/src/game/objective_status.o (.text); build/j/src/game/objective_status2.o (.text); @@ -242,6 +321,8 @@ SECTIONS _romfiles_117880SegmentRomStart = _gameSegmentRomEnd; .romfiles_117880 _romfiles_117880SegmentRomStart : AT(_romfiles_117880SegmentRomStart) { build/j/assets/romfiles.o (.romfiles); + build/j/assets/GlobalImageTable.o (.data); + build/j/assets/romfiles2.o (.romfiles); build/j/assets/ramrom/ramrom.o (.ramrom); build/j/assets/font/font.o (.font); build/j/assets/music/music.o (.music); @@ -267,10 +348,7 @@ SECTIONS _imagesSegmentStart = ADDR(.images); _imagesSegmentRomStart = _obsegSegmentRomEnd; .images _imagesSegmentRomStart : AT(_imagesSegmentRomStart) { - _image1_start = .; - build/j/assets/images/split/image1.o (.data); - _image1_end = .; - _image1_size = (_image1_end - _image1_start); + build/j/assets/images/split/image1.o (.data); build/j/assets/images/split/image2.o (.data); build/j/assets/images/split/image3.o (.data); build/j/assets/images/split/image4.o (.data); @@ -3018,7 +3096,89 @@ SECTIONS build/j/src/joy.o (.data); build/j/src/joy_rumble.o (.data); build/j/src/rmon.o (.data); - build/j/libultra/libultra.o (.data); + + build/j/src/libultra/osPiRawStartDma.o (.data); + build/j/src/libultra/osPiGetStatus.o (.data); + build/j/src/libultra/osInitialize.o (.data); + build/j/src/libultra/osWritebackDCacheAll.o (.data); + build/j/src/libultra/osInvalICache.o (.data); + build/j/src/libultra/osUnmapTLB.o (.data); + build/j/src/libultra/__osGetFpcCsr.o (.data); + build/j/src/libultra/__osSetFpcCsr.o (.data); + build/j/src/libultra/osCreateThread.o (.data); + build/j/src/libultra/osStartThread.o (.data); + build/j/src/libultra/osCreateMesgQueue.o (.data); + build/j/src/libultra/osStopThread.o (.data); + build/j/src/libultra/osSetThreadPri.o (.data); + build/j/src/libultra/osGetCount.o (.data); + build/j/src/libultra/osCreateViManager.o (.data); + build/j/src/libultra/osViModeTable.o (.data); + build/j/src/libultra/osSetEventMesg.o (.data); + build/j/src/libultra/osViSetEvent.o (.data); + build/j/src/libultra/osSetIntMask.o (.data); + build/j/src/libultra/osRecvMesg.o (.data); + build/j/src/libultra/osSendMesg.o (.data); + build/j/src/libultra/osViSetMode.o (.data); + build/j/src/libultra/osViSetXScale.o (.data); + build/j/src/libultra/osViSetYScale.o (.data); + build/j/src/libultra/osViRepeatLine.o (.data); + build/j/src/libultra/osViBlack.o (.data); + build/j/src/libultra/osSpTaskYielded.o (.data); + build/j/src/libultra/osDpGetCounters.o (.data); + build/j/src/libultra/osViGetCurrentFramebuffer.o (.data); + build/j/src/libultra/osViGetNextFramebuffer.o (.data); + build/j/src/libultra/osViSwapBuffer.o (.data); + build/j/src/libultra/osDpSetStatus.o (.data); + build/j/src/libultra/osSpTaskLoad.o (.data); + build/j/src/libultra/osDpSetNextBuffer.o (.data); + build/j/src/libultra/osSpTaskYield.o (.data); + build/j/src/libultra/__osGetTLBHi.o (.data); + build/j/src/libultra/osVirtualToPhysical.o (.data); + build/j/src/libultra/osAiSetFrequency.o (.data); + build/j/src/libultra/alInit.o (.data); + build/j/src/libultra/osGetTime.o (.data); + build/j/src/libultra/ll.o (.data); + build/j/src/libultra/osAiGetLength.o (.data); + build/j/src/libultra/syn.o (.data); + build/j/src/libultra/osPiStartDma.o (.data); + build/j/src/libultra/osViSetSpecialFeatures.o (.data); + build/j/src/libultra/_bcopy.o (.data); + build/j/src/libultra/guPerspective.o (.data); + build/j/src/libultra/Mtx.o (.data); + build/j/src/libultra/__osGetCurrFaultedThread.o (.data); + build/j/src/libultra/exception.o (.data); + build/j/src/libultra/__osDequeueThread.o (.data); + build/j/src/libultra/osYieldThread.o (.data); + build/j/src/libultra/osInvalDCache.o (.data); + build/j/src/libultra/osWritebackDCache.o (.data); + build/j/src/libultra/osSetTimer.o (.data); + build/j/src/libultra/alHeapInit.o (.data); + build/j/src/libultra/alBnkfNew.o (.data); + build/j/src/libultra/__CSP.o (.data); + build/j/src/libultra/alSeqpSetBank.o (.data); + build/j/src/libultra/alCSPGetState.o (.data); + build/j/src/libultra/csequencer.o (.data); + build/j/src/libultra/alCSPSetSeq.o (.data); + build/j/src/libultra/alCSPPlay.o (.data); + build/j/src/libultra/alCSPStop.o (.data); + build/j/src/libultra/alCSPSetVol.o (.data); + build/j/src/libultra/alEvtq.o (.data); + build/j/src/libultra/alSynAddPlayer.o (.data); + build/j/src/libultra/alSynAllocVoice.o (.data); + build/j/src/libultra/alSynSetVol.o (.data); + build/j/src/libultra/alSynStartVoice.o (.data); + build/j/src/libultra/alSynSetPan.o (.data); + build/j/src/libultra/alSynSetPitch.o (.data); + build/j/src/libultra/alSynSetFXMix.o (.data); + build/j/src/libultra/alSynStopVoice.o (.data); + build/j/src/libultra/alSynFreeVoice.o (.data); + build/j/src/libultra/alCents2Ratio.o (.data); + build/j/src/libultra/osPiReadIo.o (.data); + build/j/src/libultra/string.o (.data); + build/j/src/libultra/_Printf.o (.data); + build/j/src/libultra/osCreatePiManager.o (.data); + build/j/src/libultra/libultra.o (.data); + /*build/j/src/libultra/libultra.a:libultra.o (.data);*/ build/j/src/aspboot.o (.rodata); build/j/src/boot.o (.rodata); @@ -3052,7 +3212,89 @@ SECTIONS build/j/src/joy.o (.rodata); build/j/src/joy_rumble.o (.rodata); build/j/src/rmon.o (.rodata); - build/j/libultra/libultra.o (.rodata); + + build/j/src/libultra/osPiRawStartDma.o (.rodata); + build/j/src/libultra/osPiGetStatus.o (.rodata); + build/j/src/libultra/osInitialize.o (.rodata); + build/j/src/libultra/osWritebackDCacheAll.o (.rodata); + build/j/src/libultra/osInvalICache.o (.rodata); + build/j/src/libultra/osUnmapTLB.o (.rodata); + build/j/src/libultra/__osGetFpcCsr.o (.rodata); + build/j/src/libultra/__osSetFpcCsr.o (.rodata); + build/j/src/libultra/osCreateThread.o (.rodata); + build/j/src/libultra/osStartThread.o (.rodata); + build/j/src/libultra/osCreateMesgQueue.o (.rodata); + build/j/src/libultra/osStopThread.o (.rodata); + build/j/src/libultra/osSetThreadPri.o (.rodata); + build/j/src/libultra/osGetCount.o (.rodata); + build/j/src/libultra/osCreateViManager.o (.rodata); + build/j/src/libultra/osViModeTable.o (.rodata); + build/j/src/libultra/osSetEventMesg.o (.rodata); + build/j/src/libultra/osViSetEvent.o (.rodata); + build/j/src/libultra/osSetIntMask.o (.rodata); + build/j/src/libultra/osRecvMesg.o (.rodata); + build/j/src/libultra/osSendMesg.o (.rodata); + build/j/src/libultra/osViSetMode.o (.rodata); + build/j/src/libultra/osViSetXScale.o (.rodata); + build/j/src/libultra/osViSetYScale.o (.rodata); + build/j/src/libultra/osViRepeatLine.o (.rodata); + build/j/src/libultra/osViBlack.o (.rodata); + build/j/src/libultra/osSpTaskYielded.o (.rodata); + build/j/src/libultra/osDpGetCounters.o (.rodata); + build/j/src/libultra/osViGetCurrentFramebuffer.o (.rodata); + build/j/src/libultra/osViGetNextFramebuffer.o (.rodata); + build/j/src/libultra/osViSwapBuffer.o (.rodata); + build/j/src/libultra/osDpSetStatus.o (.rodata); + build/j/src/libultra/osSpTaskLoad.o (.rodata); + build/j/src/libultra/osDpSetNextBuffer.o (.rodata); + build/j/src/libultra/osSpTaskYield.o (.rodata); + build/j/src/libultra/__osGetTLBHi.o (.rodata); + build/j/src/libultra/osVirtualToPhysical.o (.rodata); + build/j/src/libultra/osAiSetFrequency.o (.rodata); + build/j/src/libultra/alInit.o (.rodata); + build/j/src/libultra/osGetTime.o (.rodata); + build/j/src/libultra/ll.o (.rodata); + build/j/src/libultra/osAiGetLength.o (.rodata); + build/j/src/libultra/syn.o (.rodata); + build/j/src/libultra/osPiStartDma.o (.rodata); + build/j/src/libultra/osViSetSpecialFeatures.o (.rodata); + build/j/src/libultra/_bcopy.o (.rodata); + build/j/src/libultra/guPerspective.o (.rodata); + build/j/src/libultra/Mtx.o (.rodata); + build/j/src/libultra/__osGetCurrFaultedThread.o (.rodata); + build/j/src/libultra/exception.o (.rodata); + build/j/src/libultra/__osDequeueThread.o (.rodata); + build/j/src/libultra/osYieldThread.o (.rodata); + build/j/src/libultra/osInvalDCache.o (.rodata); + build/j/src/libultra/osWritebackDCache.o (.rodata); + build/j/src/libultra/osSetTimer.o (.rodata); + build/j/src/libultra/alHeapInit.o (.rodata); + build/j/src/libultra/alBnkfNew.o (.rodata); + build/j/src/libultra/__CSP.o (.rodata); + build/j/src/libultra/alSeqpSetBank.o (.rodata); + build/j/src/libultra/alCSPGetState.o (.rodata); + build/j/src/libultra/csequencer.o (.rodata); + build/j/src/libultra/alCSPSetSeq.o (.rodata); + build/j/src/libultra/alCSPPlay.o (.rodata); + build/j/src/libultra/alCSPStop.o (.rodata); + build/j/src/libultra/alCSPSetVol.o (.rodata); + build/j/src/libultra/alEvtq.o (.rodata); + build/j/src/libultra/alSynAddPlayer.o (.rodata); + build/j/src/libultra/alSynAllocVoice.o (.rodata); + build/j/src/libultra/alSynSetVol.o (.rodata); + build/j/src/libultra/alSynStartVoice.o (.rodata); + build/j/src/libultra/alSynSetPan.o (.rodata); + build/j/src/libultra/alSynSetPitch.o (.rodata); + build/j/src/libultra/alSynSetFXMix.o (.rodata); + build/j/src/libultra/alSynStopVoice.o (.rodata); + build/j/src/libultra/alSynFreeVoice.o (.rodata); + build/j/src/libultra/alCents2Ratio.o (.rodata); + build/j/src/libultra/osPiReadIo.o (.rodata); + build/j/src/libultra/string.o (.rodata); + build/j/src/libultra/_Printf.o (.rodata); + build/j/src/libultra/osCreatePiManager.o (.rodata); + build/j/src/libultra/libultra.o (.rodata); + /*build/j/src/libultra/libultra.a:libultra.o (.rodata);*/ build/j/src/game/initgamedata.o (.data); build/j/src/game/initweaponanigroups.o (.data); @@ -3108,6 +3350,7 @@ SECTIONS build/j/src/game/chr.o (.data); build/j/src/game/chr2.o (.data); build/j/src/game/chrai.o (.data); + build/j/src/game/chrobjhandler.o (.data); build/j/src/game/loadobjectmodel.o (.data); build/j/src/game/objective_status.o (.data); build/j/src/game/objective_status2.o (.data); @@ -3229,6 +3472,7 @@ SECTIONS build/j/src/game/chr.o (.rodata); build/j/src/game/chr2.o (.rodata); build/j/src/game/chrai.o (.rodata); + build/j/src/game/chrobjhandler.o (.rodata); build/j/src/game/loadobjectmodel.o (.rodata); build/j/src/game/objective_status.o (.rodata); build/j/src/game/objective_status2.o (.rodata); @@ -3337,7 +3581,90 @@ SECTIONS build/j/src/joy.o (.bss); build/j/src/joy_rumble.o (.bss); build/j/src/rmon.o (.bss); - build/j/libultra/libultra.o (.bss); + + build/j/src/libultra/osPiRawStartDma.o (.bss); + build/j/src/libultra/osPiGetStatus.o (.bss); + build/j/src/libultra/osInitialize.o (.bss); + build/j/src/libultra/osWritebackDCacheAll.o (.bss); + build/j/src/libultra/osInvalICache.o (.bss); + build/j/src/libultra/osUnmapTLB.o (.bss); + build/j/src/libultra/__osGetFpcCsr.o (.bss); + build/j/src/libultra/__osSetFpcCsr.o (.bss); + build/j/src/libultra/osCreateThread.o (.bss); + build/j/src/libultra/osStartThread.o (.bss); + build/j/src/libultra/osCreateMesgQueue.o (.bss); + build/j/src/libultra/osStopThread.o (.bss); + build/j/src/libultra/osSetThreadPri.o (.bss); + build/j/src/libultra/osGetCount.o (.bss); + build/j/src/libultra/osCreateViManager.o (.bss); + build/j/src/libultra/osViModeTable.o (.bss); + build/j/src/libultra/osSetEventMesg.o (.bss); + build/j/src/libultra/osViSetEvent.o (.bss); + build/j/src/libultra/osSetIntMask.o (.bss); + build/j/src/libultra/osRecvMesg.o (.bss); + build/j/src/libultra/osSendMesg.o (.bss); + build/j/src/libultra/osViSetMode.o (.bss); + build/j/src/libultra/osViSetXScale.o (.bss); + build/j/src/libultra/osViSetYScale.o (.bss); + build/j/src/libultra/osViRepeatLine.o (.bss); + build/j/src/libultra/osViBlack.o (.bss); + build/j/src/libultra/osSpTaskYielded.o (.bss); + build/j/src/libultra/osDpGetCounters.o (.bss); + build/j/src/libultra/osViGetCurrentFramebuffer.o (.bss); + build/j/src/libultra/osViGetNextFramebuffer.o (.bss); + build/j/src/libultra/osViSwapBuffer.o (.bss); + build/j/src/libultra/osDpSetStatus.o (.bss); + build/j/src/libultra/osSpTaskLoad.o (.bss); + build/j/src/libultra/osDpSetNextBuffer.o (.bss); + build/j/src/libultra/osSpTaskYield.o (.bss); + build/j/src/libultra/__osGetTLBHi.o (.bss); + build/j/src/libultra/osVirtualToPhysical.o (.bss); + build/j/src/libultra/osAiSetFrequency.o (.bss); + build/j/src/libultra/alInit.o (.bss); + build/j/src/libultra/osGetTime.o (.bss); + build/j/src/libultra/ll.o (.bss); + build/j/src/libultra/osAiGetLength.o (.bss); + build/j/src/libultra/syn.o (.bss); + build/j/src/libultra/osPiStartDma.o (.bss); + build/j/src/libultra/osViSetSpecialFeatures.o (.bss); + build/j/src/libultra/_bcopy.o (.bss); + build/j/src/libultra/guPerspective.o (.bss); + build/j/src/libultra/Mtx.o (.bss); + build/j/src/libultra/__osGetCurrFaultedThread.o (.bss); + build/j/src/libultra/exception.o (.bss); + build/j/src/libultra/__osDequeueThread.o (.bss); + build/j/src/libultra/osYieldThread.o (.bss); + build/j/src/libultra/osInvalDCache.o (.bss); + build/j/src/libultra/osWritebackDCache.o (.bss); + build/j/src/libultra/osSetTimer.o (.bss); + build/j/src/libultra/alHeapInit.o (.bss); + build/j/src/libultra/alBnkfNew.o (.bss); + build/j/src/libultra/__CSP.o (.bss); + build/j/src/libultra/alSeqpSetBank.o (.bss); + build/j/src/libultra/alCSPGetState.o (.bss); + build/j/src/libultra/csequencer.o (.bss); + build/j/src/libultra/alCSPSetSeq.o (.bss); + build/j/src/libultra/alCSPPlay.o (.bss); + build/j/src/libultra/alCSPStop.o (.bss); + build/j/src/libultra/alCSPSetVol.o (.bss); + build/j/src/libultra/alEvtq.o (.bss); + build/j/src/libultra/alSynAddPlayer.o (.bss); + build/j/src/libultra/alSynAllocVoice.o (.bss); + build/j/src/libultra/alSynSetVol.o (.bss); + build/j/src/libultra/alSynStartVoice.o (.bss); + build/j/src/libultra/alSynSetPan.o (.bss); + build/j/src/libultra/alSynSetPitch.o (.bss); + build/j/src/libultra/alSynSetFXMix.o (.bss); + build/j/src/libultra/alSynStopVoice.o (.bss); + build/j/src/libultra/alSynFreeVoice.o (.bss); + build/j/src/libultra/alCents2Ratio.o (.bss); + build/j/src/libultra/osPiReadIo.o (.bss); + build/j/src/libultra/string.o (.bss); + build/j/src/libultra/_Printf.o (.bss); + build/j/src/libultra/osCreatePiManager.o (.bss); + build/j/src/libultra/libultra.o (.bss); + /*build/j/src/libultra/libultra.a:libultra.o (.bss);*/ + build/j/src/game/initgamedata.o (.bss); build/j/src/game/initweaponanigroups.o (.bss); build/j/src/game/initactorpropstuff.o (.bss); @@ -3392,6 +3719,7 @@ SECTIONS build/j/src/game/chr.o (.bss); build/j/src/game/chr2.o (.bss); build/j/src/game/chrai.o (.bss); + build/j/src/game/chrobjhandler.o (.bss); build/j/src/game/loadobjectmodel.o (.bss); build/j/src/game/objective_status.o (.bss); build/j/src/game/objective_status2.o (.bss); @@ -3510,6 +3838,8 @@ SECTIONS build/j/assets/romfiles.o (.text); build/j/assets/romfiles.o (.data); + build/j/assets/romfiles2.o (.text); + build/j/assets/romfiles2.o (.data); build/j/assets/ramrom/ramrom.o (.text); build/j/assets/ramrom/ramrom.o (.data); build/j/assets/font/font.o (.text); @@ -3529,6 +3859,7 @@ SECTIONS build/j/src/gspboot.o (.rodata); build/j/src/_start.o (.bss); build/j/assets/romfiles.o (.bss); + build/j/assets/romfiles2.o (.bss); build/j/assets/ramrom/ramrom.o (.bss); build/j/assets/font/font.o (.bss); build/j/assets/music/music.o (.bss); diff --git a/ge007.u.ld b/ge007.u.ld index 2f38d03..a9e6801 100644 --- a/ge007.u.ld +++ b/ge007.u.ld @@ -73,7 +73,89 @@ SECTIONS build/u/src/joy.o (.text); build/u/src/joy_rumble.o (.text); build/u/src/rmon.o (.text); - build/u/libultra/libultra.o (.text); + + build/u/src/libultra/osPiRawStartDma.o (.text); + build/u/src/libultra/osPiGetStatus.o (.text); + build/u/src/libultra/osInitialize.o (.text); + build/u/src/libultra/osWritebackDCacheAll.o (.text); + build/u/src/libultra/osInvalICache.o (.text); + build/u/src/libultra/osUnmapTLB.o (.text); + build/u/src/libultra/__osGetFpcCsr.o (.text); + build/u/src/libultra/__osSetFpcCsr.o (.text); + build/u/src/libultra/osCreateThread.o (.text); + build/u/src/libultra/osStartThread.o (.text); + build/u/src/libultra/osCreateMesgQueue.o (.text); + build/u/src/libultra/osStopThread.o (.text); + build/u/src/libultra/osSetThreadPri.o (.text); + build/u/src/libultra/osGetCount.o (.text); + build/u/src/libultra/osCreateViManager.o (.text); + build/u/src/libultra/osViModeTable.o (.text); + build/u/src/libultra/osSetEventMesg.o (.text); + build/u/src/libultra/osViSetEvent.o (.text); + build/u/src/libultra/osSetIntMask.o (.text); + build/u/src/libultra/osRecvMesg.o (.text); + build/u/src/libultra/osSendMesg.o (.text); + build/u/src/libultra/osViSetMode.o (.text); + build/u/src/libultra/osViSetXScale.o (.text); + build/u/src/libultra/osViSetYScale.o (.text); + build/u/src/libultra/osViRepeatLine.o (.text); + build/u/src/libultra/osViBlack.o (.text); + build/u/src/libultra/osSpTaskYielded.o (.text); + build/u/src/libultra/osDpGetCounters.o (.text); + build/u/src/libultra/osViGetCurrentFramebuffer.o (.text); + build/u/src/libultra/osViGetNextFramebuffer.o (.text); + build/u/src/libultra/osViSwapBuffer.o (.text); + build/u/src/libultra/osDpSetStatus.o (.text); + build/u/src/libultra/osSpTaskLoad.o (.text); + build/u/src/libultra/osDpSetNextBuffer.o (.text); + build/u/src/libultra/osSpTaskYield.o (.text); + build/u/src/libultra/__osGetTLBHi.o (.text); + build/u/src/libultra/osVirtualToPhysical.o (.text); + build/u/src/libultra/osAiSetFrequency.o (.text); + build/u/src/libultra/alInit.o (.text); + build/u/src/libultra/osGetTime.o (.text); + build/u/src/libultra/ll.o (.text); + build/u/src/libultra/osAiGetLength.o (.text); + build/u/src/libultra/syn.o (.text); + build/u/src/libultra/osPiStartDma.o (.text); + build/u/src/libultra/osViSetSpecialFeatures.o (.text); + build/u/src/libultra/_bcopy.o (.text); + build/u/src/libultra/guPerspective.o (.text); + build/u/src/libultra/Mtx.o (.text); + build/u/src/libultra/__osGetCurrFaultedThread.o (.text); + build/u/src/libultra/exception.o (.text); + build/u/src/libultra/__osDequeueThread.o (.text); + build/u/src/libultra/osYieldThread.o (.text); + build/u/src/libultra/osInvalDCache.o (.text); + build/u/src/libultra/osWritebackDCache.o (.text); + build/u/src/libultra/osSetTimer.o (.text); + build/u/src/libultra/alHeapInit.o (.text); + build/u/src/libultra/alBnkfNew.o (.text); + build/u/src/libultra/__CSP.o (.text); + build/u/src/libultra/alSeqpSetBank.o (.text); + build/u/src/libultra/alCSPGetState.o (.text); + build/u/src/libultra/csequencer.o (.text); + build/u/src/libultra/alCSPSetSeq.o (.text); + build/u/src/libultra/alCSPPlay.o (.text); + build/u/src/libultra/alCSPStop.o (.text); + build/u/src/libultra/alCSPSetVol.o (.text); + build/u/src/libultra/alEvtq.o (.text); + build/u/src/libultra/alSynAddPlayer.o (.text); + build/u/src/libultra/alSynAllocVoice.o (.text); + build/u/src/libultra/alSynSetVol.o (.text); + build/u/src/libultra/alSynStartVoice.o (.text); + build/u/src/libultra/alSynSetPan.o (.text); + build/u/src/libultra/alSynSetPitch.o (.text); + build/u/src/libultra/alSynSetFXMix.o (.text); + build/u/src/libultra/alSynStopVoice.o (.text); + build/u/src/libultra/alSynFreeVoice.o (.text); + build/u/src/libultra/alCents2Ratio.o (.text); + build/u/src/libultra/osPiReadIo.o (.text); + build/u/src/libultra/string.o (.text); + build/u/src/libultra/_Printf.o (.text); + build/u/src/libultra/osCreatePiManager.o (.text); + build/u/src/libultra/libultra.o (.text); + /*build/u/src/libultra/libultra.a:libultra.o (.text);*/ } _codeSegmentEnd = ADDR(.code) + SIZEOF(.code); _codeSegmentRomEnd = _codeSegmentRomStart + SIZEOF(.code); @@ -161,6 +243,7 @@ SECTIONS build/u/src/game/chr.o (.text); build/u/src/game/chr2.o (.text); build/u/src/game/chrai.o (.text); + build/u/src/game/chrobjhandler.o (.text); build/u/src/game/loadobjectmodel.o (.text); build/u/src/game/objective_status.o (.text); build/u/src/game/objective_status2.o (.text); @@ -238,6 +321,8 @@ SECTIONS _romfiles_117880SegmentRomStart = _gameSegmentRomEnd; .romfiles_117880 _romfiles_117880SegmentRomStart : AT(_romfiles_117880SegmentRomStart) { build/u/assets/romfiles.o (.romfiles); + build/u/assets/GlobalImageTable.o (.data); + build/u/assets/romfiles2.o (.romfiles); build/u/assets/ramrom/ramrom.o (.ramrom); build/u/assets/font/font.o (.font); build/u/assets/music/music.o (.music); @@ -3014,7 +3099,89 @@ SECTIONS build/u/src/joy.o (.data); build/u/src/joy_rumble.o (.data); build/u/src/rmon.o (.data); - build/u/libultra/libultra.o (.data); + + build/u/src/libultra/osPiRawStartDma.o (.data); + build/u/src/libultra/osPiGetStatus.o (.data); + build/u/src/libultra/osInitialize.o (.data); + build/u/src/libultra/osWritebackDCacheAll.o (.data); + build/u/src/libultra/osInvalICache.o (.data); + build/u/src/libultra/osUnmapTLB.o (.data); + build/u/src/libultra/__osGetFpcCsr.o (.data); + build/u/src/libultra/__osSetFpcCsr.o (.data); + build/u/src/libultra/osCreateThread.o (.data); + build/u/src/libultra/osStartThread.o (.data); + build/u/src/libultra/osCreateMesgQueue.o (.data); + build/u/src/libultra/osStopThread.o (.data); + build/u/src/libultra/osSetThreadPri.o (.data); + build/u/src/libultra/osGetCount.o (.data); + build/u/src/libultra/osCreateViManager.o (.data); + build/u/src/libultra/osViModeTable.o (.data); + build/u/src/libultra/osSetEventMesg.o (.data); + build/u/src/libultra/osViSetEvent.o (.data); + build/u/src/libultra/osSetIntMask.o (.data); + build/u/src/libultra/osRecvMesg.o (.data); + build/u/src/libultra/osSendMesg.o (.data); + build/u/src/libultra/osViSetMode.o (.data); + build/u/src/libultra/osViSetXScale.o (.data); + build/u/src/libultra/osViSetYScale.o (.data); + build/u/src/libultra/osViRepeatLine.o (.data); + build/u/src/libultra/osViBlack.o (.data); + build/u/src/libultra/osSpTaskYielded.o (.data); + build/u/src/libultra/osDpGetCounters.o (.data); + build/u/src/libultra/osViGetCurrentFramebuffer.o (.data); + build/u/src/libultra/osViGetNextFramebuffer.o (.data); + build/u/src/libultra/osViSwapBuffer.o (.data); + build/u/src/libultra/osDpSetStatus.o (.data); + build/u/src/libultra/osSpTaskLoad.o (.data); + build/u/src/libultra/osDpSetNextBuffer.o (.data); + build/u/src/libultra/osSpTaskYield.o (.data); + build/u/src/libultra/__osGetTLBHi.o (.data); + build/u/src/libultra/osVirtualToPhysical.o (.data); + build/u/src/libultra/osAiSetFrequency.o (.data); + build/u/src/libultra/alInit.o (.data); + build/u/src/libultra/osGetTime.o (.data); + build/u/src/libultra/ll.o (.data); + build/u/src/libultra/osAiGetLength.o (.data); + build/u/src/libultra/syn.o (.data); + build/u/src/libultra/osPiStartDma.o (.data); + build/u/src/libultra/osViSetSpecialFeatures.o (.data); + build/u/src/libultra/_bcopy.o (.data); + build/u/src/libultra/guPerspective.o (.data); + build/u/src/libultra/Mtx.o (.data); + build/u/src/libultra/__osGetCurrFaultedThread.o (.data); + build/u/src/libultra/exception.o (.data); + build/u/src/libultra/__osDequeueThread.o (.data); + build/u/src/libultra/osYieldThread.o (.data); + build/u/src/libultra/osInvalDCache.o (.data); + build/u/src/libultra/osWritebackDCache.o (.data); + build/u/src/libultra/osSetTimer.o (.data); + build/u/src/libultra/alHeapInit.o (.data); + build/u/src/libultra/alBnkfNew.o (.data); + build/u/src/libultra/__CSP.o (.data); + build/u/src/libultra/alSeqpSetBank.o (.data); + build/u/src/libultra/alCSPGetState.o (.data); + build/u/src/libultra/csequencer.o (.data); + build/u/src/libultra/alCSPSetSeq.o (.data); + build/u/src/libultra/alCSPPlay.o (.data); + build/u/src/libultra/alCSPStop.o (.data); + build/u/src/libultra/alCSPSetVol.o (.data); + build/u/src/libultra/alEvtq.o (.data); + build/u/src/libultra/alSynAddPlayer.o (.data); + build/u/src/libultra/alSynAllocVoice.o (.data); + build/u/src/libultra/alSynSetVol.o (.data); + build/u/src/libultra/alSynStartVoice.o (.data); + build/u/src/libultra/alSynSetPan.o (.data); + build/u/src/libultra/alSynSetPitch.o (.data); + build/u/src/libultra/alSynSetFXMix.o (.data); + build/u/src/libultra/alSynStopVoice.o (.data); + build/u/src/libultra/alSynFreeVoice.o (.data); + build/u/src/libultra/alCents2Ratio.o (.data); + build/u/src/libultra/osPiReadIo.o (.data); + build/u/src/libultra/string.o (.data); + build/u/src/libultra/_Printf.o (.data); + build/u/src/libultra/osCreatePiManager.o (.data); + build/u/src/libultra/libultra.o (.data); + /*build/u/src/libultra/libultra.a:libultra.o (.data);*/ build/u/src/aspboot.o (.rodata); build/u/src/boot.o (.rodata); @@ -3048,7 +3215,89 @@ SECTIONS build/u/src/joy.o (.rodata); build/u/src/joy_rumble.o (.rodata); build/u/src/rmon.o (.rodata); - build/u/libultra/libultra.o (.rodata); + + build/u/src/libultra/osPiRawStartDma.o (.rodata); + build/u/src/libultra/osPiGetStatus.o (.rodata); + build/u/src/libultra/osInitialize.o (.rodata); + build/u/src/libultra/osWritebackDCacheAll.o (.rodata); + build/u/src/libultra/osInvalICache.o (.rodata); + build/u/src/libultra/osUnmapTLB.o (.rodata); + build/u/src/libultra/__osGetFpcCsr.o (.rodata); + build/u/src/libultra/__osSetFpcCsr.o (.rodata); + build/u/src/libultra/osCreateThread.o (.rodata); + build/u/src/libultra/osStartThread.o (.rodata); + build/u/src/libultra/osCreateMesgQueue.o (.rodata); + build/u/src/libultra/osStopThread.o (.rodata); + build/u/src/libultra/osSetThreadPri.o (.rodata); + build/u/src/libultra/osGetCount.o (.rodata); + build/u/src/libultra/osCreateViManager.o (.rodata); + build/u/src/libultra/osViModeTable.o (.rodata); + build/u/src/libultra/osSetEventMesg.o (.rodata); + build/u/src/libultra/osViSetEvent.o (.rodata); + build/u/src/libultra/osSetIntMask.o (.rodata); + build/u/src/libultra/osRecvMesg.o (.rodata); + build/u/src/libultra/osSendMesg.o (.rodata); + build/u/src/libultra/osViSetMode.o (.rodata); + build/u/src/libultra/osViSetXScale.o (.rodata); + build/u/src/libultra/osViSetYScale.o (.rodata); + build/u/src/libultra/osViRepeatLine.o (.rodata); + build/u/src/libultra/osViBlack.o (.rodata); + build/u/src/libultra/osSpTaskYielded.o (.rodata); + build/u/src/libultra/osDpGetCounters.o (.rodata); + build/u/src/libultra/osViGetCurrentFramebuffer.o (.rodata); + build/u/src/libultra/osViGetNextFramebuffer.o (.rodata); + build/u/src/libultra/osViSwapBuffer.o (.rodata); + build/u/src/libultra/osDpSetStatus.o (.rodata); + build/u/src/libultra/osSpTaskLoad.o (.rodata); + build/u/src/libultra/osDpSetNextBuffer.o (.rodata); + build/u/src/libultra/osSpTaskYield.o (.rodata); + build/u/src/libultra/__osGetTLBHi.o (.rodata); + build/u/src/libultra/osVirtualToPhysical.o (.rodata); + build/u/src/libultra/osAiSetFrequency.o (.rodata); + build/u/src/libultra/alInit.o (.rodata); + build/u/src/libultra/osGetTime.o (.rodata); + build/u/src/libultra/ll.o (.rodata); + build/u/src/libultra/osAiGetLength.o (.rodata); + build/u/src/libultra/syn.o (.rodata); + build/u/src/libultra/osPiStartDma.o (.rodata); + build/u/src/libultra/osViSetSpecialFeatures.o (.rodata); + build/u/src/libultra/_bcopy.o (.rodata); + build/u/src/libultra/guPerspective.o (.rodata); + build/u/src/libultra/Mtx.o (.rodata); + build/u/src/libultra/__osGetCurrFaultedThread.o (.rodata); + build/u/src/libultra/exception.o (.rodata); + build/u/src/libultra/__osDequeueThread.o (.rodata); + build/u/src/libultra/osYieldThread.o (.rodata); + build/u/src/libultra/osInvalDCache.o (.rodata); + build/u/src/libultra/osWritebackDCache.o (.rodata); + build/u/src/libultra/osSetTimer.o (.rodata); + build/u/src/libultra/alHeapInit.o (.rodata); + build/u/src/libultra/alBnkfNew.o (.rodata); + build/u/src/libultra/__CSP.o (.rodata); + build/u/src/libultra/alSeqpSetBank.o (.rodata); + build/u/src/libultra/alCSPGetState.o (.rodata); + build/u/src/libultra/csequencer.o (.rodata); + build/u/src/libultra/alCSPSetSeq.o (.rodata); + build/u/src/libultra/alCSPPlay.o (.rodata); + build/u/src/libultra/alCSPStop.o (.rodata); + build/u/src/libultra/alCSPSetVol.o (.rodata); + build/u/src/libultra/alEvtq.o (.rodata); + build/u/src/libultra/alSynAddPlayer.o (.rodata); + build/u/src/libultra/alSynAllocVoice.o (.rodata); + build/u/src/libultra/alSynSetVol.o (.rodata); + build/u/src/libultra/alSynStartVoice.o (.rodata); + build/u/src/libultra/alSynSetPan.o (.rodata); + build/u/src/libultra/alSynSetPitch.o (.rodata); + build/u/src/libultra/alSynSetFXMix.o (.rodata); + build/u/src/libultra/alSynStopVoice.o (.rodata); + build/u/src/libultra/alSynFreeVoice.o (.rodata); + build/u/src/libultra/alCents2Ratio.o (.rodata); + build/u/src/libultra/osPiReadIo.o (.rodata); + build/u/src/libultra/string.o (.rodata); + build/u/src/libultra/_Printf.o (.rodata); + build/u/src/libultra/osCreatePiManager.o (.rodata); + build/u/src/libultra/libultra.o (.rodata); + /*build/u/src/libultra/libultra.a:libultra.o (.rodata);*/ build/u/src/game/initgamedata.o (.data); build/u/src/game/initweaponanigroups.o (.data); @@ -3104,6 +3353,7 @@ SECTIONS build/u/src/game/chr.o (.data); build/u/src/game/chr2.o (.data); build/u/src/game/chrai.o (.data); + build/u/src/game/chrobjhandler.o (.data); build/u/src/game/loadobjectmodel.o (.data); build/u/src/game/objective_status.o (.data); build/u/src/game/objective_status2.o (.data); @@ -3225,6 +3475,7 @@ SECTIONS build/u/src/game/chr.o (.rodata); build/u/src/game/chr2.o (.rodata); build/u/src/game/chrai.o (.rodata); + build/u/src/game/chrobjhandler.o (.rodata); build/u/src/game/loadobjectmodel.o (.rodata); build/u/src/game/objective_status.o (.rodata); build/u/src/game/objective_status2.o (.rodata); @@ -3333,7 +3584,90 @@ SECTIONS build/u/src/joy.o (.bss); build/u/src/joy_rumble.o (.bss); build/u/src/rmon.o (.bss); - build/u/libultra/libultra.o (.bss); + + build/u/src/libultra/osPiRawStartDma.o (.bss); + build/u/src/libultra/osPiGetStatus.o (.bss); + build/u/src/libultra/osInitialize.o (.bss); + build/u/src/libultra/osWritebackDCacheAll.o (.bss); + build/u/src/libultra/osInvalICache.o (.bss); + build/u/src/libultra/osUnmapTLB.o (.bss); + build/u/src/libultra/__osGetFpcCsr.o (.bss); + build/u/src/libultra/__osSetFpcCsr.o (.bss); + build/u/src/libultra/osCreateThread.o (.bss); + build/u/src/libultra/osStartThread.o (.bss); + build/u/src/libultra/osCreateMesgQueue.o (.bss); + build/u/src/libultra/osStopThread.o (.bss); + build/u/src/libultra/osSetThreadPri.o (.bss); + build/u/src/libultra/osGetCount.o (.bss); + build/u/src/libultra/osCreateViManager.o (.bss); + build/u/src/libultra/osViModeTable.o (.bss); + build/u/src/libultra/osSetEventMesg.o (.bss); + build/u/src/libultra/osViSetEvent.o (.bss); + build/u/src/libultra/osSetIntMask.o (.bss); + build/u/src/libultra/osRecvMesg.o (.bss); + build/u/src/libultra/osSendMesg.o (.bss); + build/u/src/libultra/osViSetMode.o (.bss); + build/u/src/libultra/osViSetXScale.o (.bss); + build/u/src/libultra/osViSetYScale.o (.bss); + build/u/src/libultra/osViRepeatLine.o (.bss); + build/u/src/libultra/osViBlack.o (.bss); + build/u/src/libultra/osSpTaskYielded.o (.bss); + build/u/src/libultra/osDpGetCounters.o (.bss); + build/u/src/libultra/osViGetCurrentFramebuffer.o (.bss); + build/u/src/libultra/osViGetNextFramebuffer.o (.bss); + build/u/src/libultra/osViSwapBuffer.o (.bss); + build/u/src/libultra/osDpSetStatus.o (.bss); + build/u/src/libultra/osSpTaskLoad.o (.bss); + build/u/src/libultra/osDpSetNextBuffer.o (.bss); + build/u/src/libultra/osSpTaskYield.o (.bss); + build/u/src/libultra/__osGetTLBHi.o (.bss); + build/u/src/libultra/osVirtualToPhysical.o (.bss); + build/u/src/libultra/osAiSetFrequency.o (.bss); + build/u/src/libultra/alInit.o (.bss); + build/u/src/libultra/osGetTime.o (.bss); + build/u/src/libultra/ll.o (.bss); + build/u/src/libultra/osAiGetLength.o (.bss); + build/u/src/libultra/syn.o (.bss); + build/u/src/libultra/osPiStartDma.o (.bss); + build/u/src/libultra/osViSetSpecialFeatures.o (.bss); + build/u/src/libultra/_bcopy.o (.bss); + build/u/src/libultra/guPerspective.o (.bss); + build/u/src/libultra/Mtx.o (.bss); + build/u/src/libultra/__osGetCurrFaultedThread.o (.bss); + build/u/src/libultra/exception.o (.bss); + build/u/src/libultra/__osDequeueThread.o (.bss); + build/u/src/libultra/osYieldThread.o (.bss); + build/u/src/libultra/osInvalDCache.o (.bss); + build/u/src/libultra/osWritebackDCache.o (.bss); + build/u/src/libultra/osSetTimer.o (.bss); + build/u/src/libultra/alHeapInit.o (.bss); + build/u/src/libultra/alBnkfNew.o (.bss); + build/u/src/libultra/__CSP.o (.bss); + build/u/src/libultra/alSeqpSetBank.o (.bss); + build/u/src/libultra/alCSPGetState.o (.bss); + build/u/src/libultra/csequencer.o (.bss); + build/u/src/libultra/alCSPSetSeq.o (.bss); + build/u/src/libultra/alCSPPlay.o (.bss); + build/u/src/libultra/alCSPStop.o (.bss); + build/u/src/libultra/alCSPSetVol.o (.bss); + build/u/src/libultra/alEvtq.o (.bss); + build/u/src/libultra/alSynAddPlayer.o (.bss); + build/u/src/libultra/alSynAllocVoice.o (.bss); + build/u/src/libultra/alSynSetVol.o (.bss); + build/u/src/libultra/alSynStartVoice.o (.bss); + build/u/src/libultra/alSynSetPan.o (.bss); + build/u/src/libultra/alSynSetPitch.o (.bss); + build/u/src/libultra/alSynSetFXMix.o (.bss); + build/u/src/libultra/alSynStopVoice.o (.bss); + build/u/src/libultra/alSynFreeVoice.o (.bss); + build/u/src/libultra/alCents2Ratio.o (.bss); + build/u/src/libultra/osPiReadIo.o (.bss); + build/u/src/libultra/string.o (.bss); + build/u/src/libultra/_Printf.o (.bss); + build/u/src/libultra/osCreatePiManager.o (.bss); + build/u/src/libultra/libultra.o (.bss); + /*build/u/src/libultra/libultra.a:libultra.o (.bss);*/ + build/u/src/game/initgamedata.o (.bss); build/u/src/game/initweaponanigroups.o (.bss); build/u/src/game/initactorpropstuff.o (.bss); @@ -3388,6 +3722,7 @@ SECTIONS build/u/src/game/chr.o (.bss); build/u/src/game/chr2.o (.bss); build/u/src/game/chrai.o (.bss); + build/u/src/game/chrobjhandler.o (.bss); build/u/src/game/loadobjectmodel.o (.bss); build/u/src/game/objective_status.o (.bss); build/u/src/game/objective_status2.o (.bss); @@ -3506,6 +3841,8 @@ SECTIONS build/u/assets/romfiles.o (.text); build/u/assets/romfiles.o (.data); + build/u/assets/romfiles2.o (.text); + build/u/assets/romfiles2.o (.data); build/u/assets/ramrom/ramrom.o (.text); build/u/assets/ramrom/ramrom.o (.data); build/u/assets/font/font.o (.text); @@ -3525,6 +3862,7 @@ SECTIONS build/u/src/gspboot.o (.rodata); build/u/src/_start.o (.bss); build/u/assets/romfiles.o (.bss); + build/u/assets/romfiles2.o (.bss); build/u/assets/ramrom/ramrom.o (.bss); build/u/assets/font/font.o (.bss); build/u/assets/music/music.o (.bss); diff --git a/ge007_libultra/libultra/libultra.s b/ge007_libultra/libultra/libultra.s index 00e32df..bc4228c 100644 --- a/ge007_libultra/libultra/libultra.s +++ b/ge007_libultra/libultra/libultra.s @@ -3862,7 +3862,7 @@ glabel guMtxL2F /* 010D78 70010178 27BD0010 */ addiu $sp, $sp, 0x10 /* 010D7C 7001017C 00000000 */ nop -glabel ultra_70010180 +glabel __osGetCurrFaultedThread /* 010D80 70010180 3C028002 */ lui $v0, 0x8002 /* 010D84 70010184 03E00008 */ jr $ra /* 010D88 70010188 8C427734 */ lw $v0, 0x7734($v0) diff --git a/notes/GE Documentation/Tools/GE-text-tools.zip b/notes/GE Documentation/Tools/GE-text-tools.zip new file mode 100644 index 0000000..8269a04 Binary files /dev/null and b/notes/GE Documentation/Tools/GE-text-tools.zip differ diff --git a/notes/GE Documentation/Tools/GEdemo.zip b/notes/GE Documentation/Tools/GEdemo.zip new file mode 100644 index 0000000..b13bce6 Binary files /dev/null and b/notes/GE Documentation/Tools/GEdemo.zip differ diff --git a/notes/GE Documentation/Tools/GEfonts.zip b/notes/GE Documentation/Tools/GEfonts.zip new file mode 100644 index 0000000..0298265 Binary files /dev/null and b/notes/GE Documentation/Tools/GEfonts.zip differ diff --git a/notes/GE Documentation/Tools/Goggles.zip b/notes/GE Documentation/Tools/Goggles.zip new file mode 100644 index 0000000..f85b738 Binary files /dev/null and b/notes/GE Documentation/Tools/Goggles.zip differ diff --git a/notes/GE Documentation/Tools/MoniText.zip b/notes/GE Documentation/Tools/MoniText.zip new file mode 100644 index 0000000..cba71f9 Binary files /dev/null and b/notes/GE Documentation/Tools/MoniText.zip differ diff --git a/notes/ge007.e.yaml b/notes/ge007.e.yaml index e5687c7..42475a9 100644 --- a/notes/ge007.e.yaml +++ b/notes/ge007.e.yaml @@ -13,38 +13,67 @@ basename: "ge007.e" ranges: - [0x00000000, 0x000040, "header", "header"] - [0x00000040, 0x001000, "bin", "boot"] - - [0x00001000, 0x01F850, "asm", "code", 0x80000400] + - [0x00001000, 0x001050, "asm", "start", 0x80000400] + - [0x00001050, 0x01F850, "asm", "code", 0x70000450] - [0x0001F850, 0x031450, "bin", "Compressedrodata"] - [0x00031450, 0x0329F0, "asm", "rarezip", 0x70200000] - [0x000329F0, 0x1047F0, "asm", "codeTLB", 0x7F000000] labels: - - [0x80000400, "entry"] - - [0x80000450, "establishrootTLB"] - - [0x800004BC, "get_rodata_vaddr"] - - [0x800004C8, "get_cdataSegmentRomStart"] - - [0x800004D4, "get_cdataSegmentRomEnd"] - - [0x800004E0, "get_rarezipSegmentRomStart"] - - [0x800004EC, "get_rarezipSegmentRomEnd"] - - [0x800004F8, "jump_decompressfile"] - - [0x80000510, "init"] - - [0x800006F0, "stack_init"] - - [0x800006FC, "proc_700006FC"] - - [0x80000718, "idle_entry"] - - [0x80000738, "start_idle_thread"] - - [0x80000790, "start_rmon_thread"] - - [0x800007EC, "setup_message_queue_for_scheduler"] - - [0x8000089C, "main_entry"] - - [0x80000908, "setuplastentryofdebughandler"] - - [0x80000970, "stderr.activated.set"] - - [0x8000097C, "stderr.enable.set"] - - [0x80000988, "stderr.permitted.set"] - - [0x80000994, "user.Compare"] - - [0x800009A0, "testtodisplaystderrandupdatecount"] - - [0x800009F8, "testtodisplaystderrorevery16thframe"] - - [0x80000A88, "storecurrentcountto800230a4"] - - [0x80000AAC, "scheduler"] - - [0x80000C70, "proc_70000C70"] + - [0x80000400, "_start"] + - [0x70000450, "boot"] + - [0x700004BC, "get_csegmentSegmentStart"] + - [0x700004C8, "get_cdataSegmentRomStart"] + - [0x700004D4, "get_cdataSegmentRomEnd"] + - [0x700004E0, "get_rarezipSegmentRomStart"] + - [0x700004EC, "get_rarezipSegmentRomEnd"] + - [0x700004F8, "jump_decompressfile"] + - [0x70000510, "init"] + - [0x700006F0, "set_stack_entry"] + - [0x700006FC, "set_hw_address_and_unknown"] + - [0x70000718, "thread1_idle"] + - [0x70000738, "start_idle_thread"] + - [0x70000790, "start_rmon_thread"] + - [0x700007EC, "init_scheduler"] + - [0x7000089C, "thread3_main"] + - [0x70000908, "setuplastentryofdebughandler"] + - [0x70000970, "activate_stderr"] + - [0x7000097C, "enable_stderr"] + - [0x70000988, "permit_stderr"] + - [0x70000994, "setUserCompareValue"] + - [0x700009A0, "CheckDisplayErrorBuffer"] + - [0x700009F8, "CheckDisplayErrorBufferEvery16Frames"] + - [0x70000A88, "osCreateLog"] + - [0x70000AAC, "osCreateScheduler"] + - [0x70000c14, "osScAddClient"] + - [0x70000c70, "osScRemoveClient"] + - [0x70000cf8, "osScGetCmdQ"] + - [0x70000d00, "__scMain"] + - [0x70000eb4, "__scHandleRetrace"] + - [0x70001014, "__scHandleRSP"] + - [0x7000111c, "get_counters"] + - [0x70001128, "__scHandleRDP"] + - [0x700011e0, "__scTaskReady"] + - [0x70001230, "__scTaskComplete"] + - [0x700013d8, "__scAppendList"] + - [0x70001440, "__scExec"] + - [0x70001560, "__scYield"] + - [0x7000159c, "__scSchedule"] + - [0x70001780, "osMapTLBRdb"] + + - [0x700017e0, "osCreateViManager"] + - [0x70001958, "viMgrMain"] + - [0x70001af0, "osCreatePiManager"] + + - [0x70001c60, "establish_TLB_buffer_management_table"] + - [0x70001d10, "mp_tlb_related"] + - [0x70001d38, "return_TLB_index_for_entry"] + - [0x70001d98, "find_remove_TLB_entry"] + - [0x70001dcc, "remove_TLB_entry_from_table"] + - [0x70001e50, "translate_load_rom_from_TLBaddress"] + - [0x70001f70, "return_ptr_TLBallocatedblock"] + #- [0x, ""] + ############################### #rarezipsegment.o #rarezipsegment.s diff --git a/notes/ge007.j.yaml b/notes/ge007.j.yaml index 17c466d..018a761 100644 --- a/notes/ge007.j.yaml +++ b/notes/ge007.j.yaml @@ -99,7 +99,7 @@ labels: - [0x70003c10, "set_coloroutputmode_32bit"] - [0x70003c1c, "get_video_settings2_frameb"] - [0x70003c2c, "get_video_settings1_frameb"] - - [0x70003c3c, "set_video2buf_offset28"] + - [0x70003c3c, "set_video2buf_frameb"] - [0x70003c4c, "get_80060824"] - [0x70003c58, "video_related_F"] - [0x70003eb4, "video_related_10"] @@ -122,7 +122,7 @@ labels: - [0x70004514, "get_video2_settings_ulx"] - [0x70004524, "get_video2_settings_uly"] - [0x70004534, "set_video2_settings_offset_24"] - - [0x70004544, "video_related_1F"] + - [0x70004544, "setvideo_far"] - [0x70004590, "video_related_21"] - [0x700045dc, "video_related_23"] - [0x700045ec, "video_related_24"] @@ -240,23 +240,23 @@ labels: - [0x70009274, "sfx_c_70009264"] - [0x70009294, "sfx_c_70009284"] - [0x70009390, "something_with_memp_c_debug"] - - [0x700093bc, "check_memflag_tokens"] - - [0x70009524, "memp_related_0"] - - [0x70009730, "allocate_bytes_in_bank"] - - [0x70009814, "memp_related_1"] - - [0x70009900, "nulled_list_all8_mem_alloc_banks_sizes"] - - [0x70009920, "memp_related_3"] - - [0x70009980, "memp_related_4"] - - [0x700099ac, "reset_mem_bank_a0"] - - [0x700099d4, "memp_related_6"] - - [0x70009a20, "swap_entries"] - - [0x70009a44, "merge_alloc_entries"] - - [0x70009a60, "sort_merge_entries_in_alloc_table"] - - [0x70009b28, "memp_related_7"] + - [0x700093bc, "mempCheckMemflagTokens"] + - [0x70009524, "mempSetBankStarts"] + - [0x70009730, "mempAllocBytesInBank"] + - [0x70009814, "mempAddEntryOfSizeToBank"] + - [0x70009900, "nulled_mempLoopAllMemBanks"] + - [0x70009920, "mempGetBankSizeLeft"] + - [0x70009980, "mempAllocPackedBytesInBank"] + - [0x700099ac, "mempResetBank"] + - [0x700099d4, "mempNullNextEntryInBank"] + - [0x70009a20, "memaSwap"] + - [0x70009a44, "memaMerge"] + - [0x70009a60, "memaSortMergeEntries"] + - [0x70009b28, "memaSortMergeAllEntries"] - [0x70009b70, "mem_related"] - - [0x70009c84, "mem_related_model_room_buffers"] + - [0x70009c84, "memaAllocRoomBuffer"] - [0x70009d7c, "something_with_mema_c_debug"] - - [0x70009da8, "reset_memtable_base_allocation"] + - [0x70009da8, "mempInitMallocTable"] - [0x70009e20, "mem_related_calls_sort_merge_entries"] - [0x70009e44, "mem_related_something_find_first"] - [0x70009fb8, "mem_related_something_find_first_0"] @@ -264,7 +264,7 @@ labels: - [0x7000a050, "mem_related_allocated_table_related"] - [0x7000a074, "mem_related_something_first_related"] - [0x7000a110, "generate_list_alloc_mem"] - - [0x7000a2ac, "generate_lists_before_after_mem_merge"] + - [0x7000a2ac, "memaGenerateListsBeforeAfterMerge"] - [0x7000a308, "mem_related_something_first_related_0"] - [0x7000a380, "mem_related_0"] - [0x7000a3ec, "mem_related_1"] @@ -277,7 +277,7 @@ labels: - [0x7000a6b0, "check_token"] - [0x7000a780, "textpointer_load_parse_something"] - [0x7000a7b0, "something_with_strings"] - - [0x7000a80c, "string_load_parse_something"] + - [0x7000a80c, "string_append_from_obseg_textbank"] - [0x7000a85c, "something_with_strings_0"] - [0x7000a8a8, "string_related"] - [0x7000a908, "strtol_related"] @@ -433,7 +433,7 @@ labels: - [0x70010050, "guMtxIdentF"] - [0x700100d8, "guMtxIdent"] - [0x70010108, "guMtxL2F"] - - [0x700101c0, "ultra_70010180"] + - [0x700101c0, "__osGetCurrFaultedThread"] - [0x700101d0, "__osExceptionPreamble"] - [0x700101e0, "__osException"] - [0x700103d0, "next_interrupt"] @@ -767,7 +767,7 @@ labels: - [0x7f001928, "sub_GAME_7F001928"] - [0x7f001940, "sub_GAME_7F001940"] - [0x7f001958, "write_monitor_ani_control_blocks"] - - [0x7f001b08, "initialize_80071E00_to_80071E78"] + - [0x7f001b08, "initialize_temp_mine_table"] - [0x7f001b50, "load_proptype"] - [0x7f001bd4, "sub_GAME_7F001BD4"] - [0x7f001d9c, "prepare_load_objects"] @@ -1084,7 +1084,7 @@ labels: - [0x7f01e064, "sub_GAME_7F01DEB4"] - [0x7f01e140, "sub_GAME_7F01DF90"] - [0x7f01e43c, "check_if_valid_folder_num"] - - [0x7f01e470, "doesFolderHaveStageUnlockedAtDifficulty"] + - [0x7f01e470, "isStageUnlockedAtDifficulty"] - [0x7f01e6b4, "sub_GAME_7F01E504"] - [0x7f01e7a8, "unlock_stage_in_folder_on_difficulty"] - [0x7f01e910, "sub_GAME_7F01E760"] @@ -1569,7 +1569,7 @@ labels: - [0x7f04f810, "apped_text_ammotype"] - [0x7f04fb8c, "set_sound_effect_for_ammo_collection"] - [0x7f04fc14, "set_sound_effect_for_weapontype_collection"] - - [0x7f04fd24, "display_ammo_type_collection_text"] + - [0x7f04fd24, "prepare_ammo_type_collection_text"] - [0x7f04fdfc, "display_text_when_ammo_collected"] - [0x7f04fe6c, "add_ammo_to_inventory"] - [0x7f050040, "get_ammo_in_magazine"] @@ -1595,7 +1595,7 @@ labels: - [0x7f052058, "add_obj_to_temp_proxmine_table"] - [0x7f052090, "remove_obj_from_temp_proxmine_table"] - [0x7f0520c8, "detonate_proxmine_In_range"] - - [0x7f0521c4, "sub_GAME_7F051CC8"] + - [0x7f0521c4, "check_guard_detonate_proxmine"] - [0x7f052270, "link_objects"] - [0x7f05228c, "complete_object_data_block_return_position_entry"] - [0x7f0522d4, "sub_GAME_7F051DD8"] @@ -1655,24 +1655,24 @@ labels: - [0x7f056328, "stop_alarm"] - [0x7f05634c, "is_alarm_on"] - [0x7f056360, "init_trigger_toxic_gas_effect"] - - [0x7f0563f4, "sub_GAME_7F055EF8"] + - [0x7f0563f4, "check_deactivate_gas_sound"] - [0x7f056434, "check_if_toxic_gas_activated"] - - [0x7f056460, "sub_GAME_7F055F64"] + - [0x7f056460, "handle_gas_damage"] - [0x7f05665c, "set_unset_clock_lock_bits"] - [0x7f056698, "is_clock_drawn_onscreen"] - [0x7f0566ac, "set_clock_time"] - [0x7f0566b8, "get_clock_time"] - [0x7f0566c4, "set_clock_enable"] - [0x7f0566d0, "get_clock_enable"] - - [0x7f0566dc, "sub_GAME_7F0561E0"] + - [0x7f0566dc, "if_enabled_reset_clock"] - [0x7f05670c, "sub_GAME_7F056210"] - - [0x7f056aec, "sub_GAME_7F0565F0"] + - [0x7f056aec, "handle_alarm_gas_timer_calldamage"] - [0x7f056b8c, "sub_GAME_7F056690"] - [0x7f056c78, "drop_inventory"] - [0x7f056d50, "sub_GAME_7F056850"] - [0x7f056df4, "get_size_of_setup_object_type"] - [0x7f056f88, "sub_GAME_7F056A88"] - - [0x7f05701c, "sub_GAME_7F056B1C"] + - [0x7f05701c, "check_if_object_type_has_been_loaded"] - [0x7f0570a8, "sub_GAME_7F056BA8"] - [0x7f057138, "load_model"] - [0x7f0571a0, "sub_GAME_7F056CA0"] @@ -1700,7 +1700,7 @@ labels: - [0x7f0583c0, "cosf"] - [0x7f0583cc, "sinf"] - [0x7f0584e4, "func_7F057FC4"] - - [0x7f0584f0, "init_0x40_bytes_data_at_address_last_word_1_0"] + - [0x7f0584f0, "reset_array_of_0x10_floats"] - [0x7f058540, "sub_GAME_7F058020"] - [0x7f058588, "sub_GAME_7F058068"] - [0x7f0585b8, "sub_GAME_7F058098"] @@ -1804,13 +1804,13 @@ labels: - [0x7f05d3dc, "sub_GAME_7F05CEBC"] - [0x7f05d420, "get_itemtype_in_hand"] - [0x7f05d438, "get_ptr_itemheader_in_hand"] - - [0x7f05d450, "sub_GAME_7F05CF30"] - - [0x7f05d468, "sub_GAME_7F05CF48"] + - [0x7f05d450, "getPlayerWeaponBufferForHand"] + - [0x7f05d468, "getSizeBufferWeaponInHand"] - [0x7f05d47c, "remove_item_in_hand"] - [0x7f05d4c4, "place_item_in_hand_swap_and_make_visible"] - [0x7f05d538, "get_ptr_item_text_call_line"] - [0x7f05d568, "get_ptr_weapon_model_header_line"] - - [0x7f05d598, "sub_GAME_7F05D078"] + - [0x7f05d598, "getCurrentWeaponOrItem"] - [0x7f05d5a8, "used_to_load_1st_person_model_on_demand"] - [0x7f05d854, "sub_GAME_7F05D334"] - [0x7f05d954, "get_next_weapon_in_cycle_for_hand"] @@ -2286,7 +2286,7 @@ labels: - [0x7f08a554, "sub_GAME_7F089E4C"] - [0x7f08a5ac, "check_if_bond_is_invincible"] - [0x7f08a5dc, "check_if_healthbar_timer_greater_than_0"] - - [0x7f08a60c, "get_BONDdata_field19C"] + - [0x7f08a60c, "get_BONDdata_bondfadefracnew"] - [0x7f08a61c, "get_curplay_horizontal_rotation_in_degrees"] - [0x7f08a648, "get_curplay_vertical_rotation_in_degrees"] - [0x7f08a670, "sub_GAME_7F089F38"] @@ -2311,7 +2311,7 @@ labels: - [0x7f08aa98, "unset_flags_in_BONDdata_stationary_intro_cam"] - [0x7f08aab4, "set_flags_in_BONDdata_stationary_intro_cam"] - [0x7f08aacc, "display_string_in_lower_left_corner"] - - [0x7f08ac40, "jp_FUN_7f08ac40"] + - [0x7f08ac40, "jp_display_string_in_lower_left_corner"] - [0x7f08ac6c, "sub_GAME_7F08A4E4"] - [0x7f08ad84, "sub_GAME_7F08A5FC"] - [0x7f08b0dc, "sub_GAME_7F08A900"] @@ -2355,7 +2355,7 @@ labels: - [0x7f08d7d4, "sub_GAME_7F08CE70"] - [0x7f08d870, "sub_GAME_7F08CF0C"] - [0x7f08d8e4, "sub_GAME_7F08CF80"] - - [0x7f08d924, "sub_GAME_7F08CFC0"] + - [0x7f08d924, "checkforgoldengun"] - [0x7f08d944, "sub_GAME_7F08CFE0"] - [0x7f08d99c, "sub_GAME_7F08D038"] - [0x7f08da84, "sub_GAME_7F08D108"] @@ -2430,8 +2430,8 @@ labels: - [0x7f090fa4, "sub_GAME_7F0904C4"] - [0x7f090fe8, "sub_GAME_7F090508"] - [0x7f09102c, "sub_GAME_7F09054C"] - - [0x7f091070, "unknown_libname_68"] - - [0x7f091078, "nullsub_35"] + - [0x7f091070, "removed_do_debug_profile_flag_false"] + - [0x7f091078, "removed_do_debug_profile_flag_true"] - [0x7f091080, "debug_menu_processor"] - [0x7f0919dc, "get_debug_render_raster"] - [0x7f0919e8, "get_debug_freeze_processing"] @@ -2470,18 +2470,18 @@ labels: - [0x7f0920f8, "sub_GAME_7F091618"] - [0x7f09214c, "sub_GAME_7F09166C"] - [0x7f0921d4, "sub_GAME_7F0916F4"] - - [0x7f092220, "sub_GAME_7F091740"] - - [0x7f09225c, "sub_GAME_7F09177C"] - - [0x7f09241c, "sub_GAME_7F09193C"] - - [0x7f09253c, "sub_GAME_7F091A5C"] - - [0x7f092558, "sub_GAME_7F091A78"] - - [0x7f09258c, "sub_GAME_7F091AAC"] - - [0x7f092644, "sub_GAME_7F091B64"] - - [0x7f092fb8, "sub_GAME_7F092438"] - - [0x7f093240, "sub_GAME_7F0926C0"] - - [0x7f0932f4, "sub_GAME_7F092774"] - - [0x7f09333c, "sub_GAME_7F0927BC"] - - [0x7f093374, "sub_GAME_7F0927F4"] + - [0x7f092220, "cheatButton_7F091740"] + - [0x7f09225c, "cheatButton_7F09177C"] + - [0x7f09241c, "cheat_buttons_mp_related"] + - [0x7f09253c, "is_cheat_index_equal_to_1C"] + - [0x7f092558, "cheatCheckIfMPCheat"] + - [0x7f09258c, "handle_cheats_turned_on"] + - [0x7f092644, "handle_cheats_turned_on"] + - [0x7f092fb8, "cheatDisplayMessageActivateCheat"] + - [0x7f093240, "cheatDisableAllCheats"] + - [0x7f0932f4, "cheatGetMenuTextPointer"] + - [0x7f09333c, "cheatCheckIfOn"] + - [0x7f093374, "set_DKMode"] - [0x7f093430, "sub_GAME_7F092890"] - [0x7f0939f0, "sub_GAME_7F092E50"] - [0x7f093fdc, "sub_GAME_7F09343C"] @@ -2491,11 +2491,11 @@ labels: - [0x7f094618, "sub_GAME_7F093A78"] - [0x7f09479c, "sub_GAME_7F093BFC"] - [0x7f0947e8, "sub_GAME_7F093C48"] - - [0x7f094828, "sub_GAME_7F093C88"] + - [0x7f094828, "addpoint5tofloat"] - [0x7f094850, "sub_GAME_7F093CB0"] - [0x7f094b44, "sub_GAME_7F093FA4"] - [0x7f094e38, "sub_GAME_7F094298"] - - [0x7f094fcc, "sub_GAME_7F09442C"] + - [0x7f094fcc, "store_stagenum_to_copyof_stagenum"] - [0x7f094fd8, "sub_GAME_7F094438"] - [0x7f095028, "sub_GAME_7F094488"] - [0x7f097f28, "sub_GAME_7F097388"] @@ -2512,9 +2512,9 @@ labels: - [0x7f09bcfc, "sub_GAME_7F09B15C"] - [0x7f09bd7c, "set_cur_player_screen_size"] - [0x7f09bd98, "set_cur_player_viewport_size"] - - [0x7f09bdb4, "sub_GAME_7F09B214"] - - [0x7f09bdc4, "sub_GAME_7F09B224"] - - [0x7f09bdd4, "sub_GAME_7F09B234"] + - [0x7f09bdb4, "set_cur_player_fovy"] + - [0x7f09bdc4, "set_cur_player_aspect"] + - [0x7f09bdd4, "get_cur_player_fovy"] - [0x7f09bde4, "sub_GAME_7F09B244"] - [0x7f09bf08, "sub_GAME_7F09B368"] - [0x7f09bf38, "sub_GAME_7F09B398"] @@ -2585,9 +2585,9 @@ labels: - [0x7f0a53c4, "sub_GAME_7F0A4824"] - [0x7f0a5400, "nullsub_7F0A4860"] - [0x7f0a5408, "init_watch_at_start_of_stage"] - - [0x7f0a5638, "sub_GAME_7F0A4A98"] + - [0x7f0a5638, "controller_deadzone_related"] - [0x7f0a56e0, "sub_GAME_7F0A4B40"] - - [0x7f0a5914, "sub_GAME_7F0A4D74"] + - [0x7f0a5914, "controllerCheckDualControllerTypesAllowed"] - [0x7f0a5960, "cur_player_get_control_type"] - [0x7f0a5970, "cur_player_set_control_type"] - [0x7f0a59d8, "get_cur_player_look_vertical_inverted"] @@ -2611,17 +2611,17 @@ labels: - [0x7f0a5af0, "is_holding_greater_than_2E_left_on_stick"] - [0x7f0a5b14, "is_holding_greater_than_2E_right_on_stick"] - [0x7f0a5b38, "get_controlstick_lr_enabled"] - - [0x7f0a5b44, "set_controlstick_lr_enabled_0"] + - [0x7f0a5b44, "set_controlstick_lr_disabled"] - [0x7f0a5b50, "sub_GAME_7F0A4FB0"] - [0x7f0a5b8c, "sub_GAME_7F0A4FEC"] - - [0x7f0a5bc8, "sub_GAME_7F0A5028"] - - [0x7f0a5bec, "sub_GAME_7F0A504C"] + - [0x7f0a5bc8, "is_holding_greater_than_2E_up_on_stick"] + - [0x7f0a5bec, "is_holding_greater_than_2E_down_on_stick"] - [0x7f0a5c10, "get_D_80040AE0"] - [0x7f0a5c1c, "set_D_80040AE0_0"] - [0x7f0a5c28, "sub_GAME_7F0A5088"] - [0x7f0a5c64, "sub_GAME_7F0A50C4"] - - [0x7f0a5ca0, "sub_GAME_7F0A5100"] - - [0x7f0a5cc4, "sub_GAME_7F0A5124"] + - [0x7f0a5ca0, "is_holding_less_than_10_up_on_stick"] + - [0x7f0a5cc4, "is_holding_less_than_10_down_on_stick"] - [0x7f0a5ce8, "get_D_80040AE4"] - [0x7f0a5cf4, "set_D_80040AE4_0"] - [0x7f0a5d00, "sub_GAME_7F0A5160"] @@ -2665,7 +2665,7 @@ labels: - [0x7f0a9900, "sub_GAME_7F0A8D40"] - [0x7f0a9a90, "sub_GAME_7F0A8ED0"] - [0x7f0a9bac, "sub_GAME_7F0A8FEC"] - - [0x7f0a9d40, "sub_GAME_7F0A9180"] + - [0x7f0a9d40, "call_sfx_c_700091C8"] - [0x7f0a9d60, "sub_GAME_7F0A91A0"] - [0x7f0a9d88, "sub_GAME_7F0A91C8"] - [0x7f0a9f18, "sub_GAME_7F0A9358"] @@ -2678,12 +2678,12 @@ labels: - [0x7f0aa678, "sub_GAME_7F0A9AB8"] - [0x7f0ab388, "sub_GAME_7F0AA7C8"] - [0x7f0ab980, "sub_GAME_7F0AADC0"] - - [0x7f0ac034, "sub_GAME_7F0AB48C"] - - [0x7f0ac040, "sub_GAME_7F0AB498"] - - [0x7f0ac04c, "sub_GAME_7F0AB4A4"] - - [0x7f0ac058, "sub_GAME_7F0AB4B0"] + - [0x7f0ac034, "zero_D_80040998"] + - [0x7f0ac040, "zero_D_8004099C"] + - [0x7f0ac04c, "zero_D_800409A4"] + - [0x7f0ac058, "return_arg0_7F0AB4B0"] - [0x7f0ac060, "sub_GAME_7F0AB4B8"] - - [0x7f0ac34c, "sub_GAME_7F0AB7A4"] + - [0x7f0ac34c, "set_pparam1toparam2_disablejoylr_playsfx"] - [0x7f0ac380, "sub_GAME_7F0AB7D8"] - [0x7f0ac4b0, "sub_GAME_7F0AB908"] - [0x7f0ac7c4, "sub_GAME_7F0ABC1C"] @@ -2692,11 +2692,11 @@ labels: - [0x7f0accc8, "sub_GAME_7F0AC120"] - [0x7f0acd10, "sub_GAME_7F0AC168"] - [0x7f0ad5d0, "sub_GAME_7F0ACA28"] - - [0x7f0ad720, "null_init_main"] - - [0x7f0ad728, "sub_GAME_7F0ACB78"] - - [0x7f0ad738, "sub_GAME_7F0ACB88"] - - [0x7f0ad744, "sub_GAME_7F0ACB94"] - - [0x7f0ad750, "sub_GAME_7F0ACBA0"] + - [0x7f0ad720, "null_init_main_7f0acb70"] + - [0x7f0ad728, "setTextSpacingInverted"] + - [0x7f0ad738, "setTextOrientation"] + - [0x7f0ad744, "setTextWordWrap"] + - [0x7f0ad750, "setTextOverlapCorrection"] - [0x7f0ad75c, "load_font_tables"] - [0x7f0ad948, "microcode_constructor"] - [0x7f0adaa0, "combiner_bayer_lod_perspective"] @@ -2810,7 +2810,7 @@ labels: - [0x7f0b4be4, "sub_GAME_7F0B4034"] - [0x7f0b4c34, "sub_GAME_7F0B4084"] - [0x7f0b4c84, "sub_GAME_7F0B40D4"] - - [0x7f0b4cd4, "sub_GAME_7F0B4124"] + - [0x7f0b4cd4, "load_bg_file"] - [0x7f0b5390, "sub_GAME_7F0B47E0"] - [0x7f0b53c0, "sub_GAME_7F0B4810"] - [0x7f0b53e0, "get_room_data_float2"] @@ -2953,16 +2953,16 @@ labels: - [0x7f0bd92c, "load_bg_bytes_at_offset_to_membank"] - [0x7f0bd9bc, "load_rom_resource_index_to_membank"] - [0x7f0bdb90, "load_resource_index_to_buffer"] - - [0x7f0bdcb0, "get_temp_remaining_buffer_for_index"] - - [0x7f0bdccc, "get_remaining_buffer_for_index"] + - [0x7f0bdcb0, "get_pc_remaining_buffer_for_index"] + - [0x7f0bdccc, "get_rom_remaining_buffer_for_index"] - [0x7f0bdce8, "sub_GAME_7F0BD138"] - - [0x7f0bdd38, "sub_GAME_7F0BD188"] + - [0x7f0bdd38, "get_pc_buffer_remaining_value"] - [0x7f0bdd6c, "something_mem_bank_a0"] - [0x7f0bdde4, "sub_GAME_7F0BD234"] - [0x7f0bde04, "get_index_num_of_named_resource"] - - [0x7f0bdf34, "sub_GAME_7F0BD384"] - - [0x7f0bdf3c, "sub_GAME_7F0BD38C"] - - [0x7f0bdf94, "sub_GAME_7F0BD3E4"] + - [0x7f0bdf34, "removed_handle_filetable_entry"] + - [0x7f0bdf3c, "removed_loop_handle_filetable_entries"] + - [0x7f0bdf94, "removed_loop_filetableentries"] - [0x7f0bdfc0, "sub_GAME_7F0BD410"] - [0x7f0be010, "something_with_dyn_c_debug"] - [0x7f0be03c, "set_vtx_gfx_mem_alloc"] @@ -2982,9 +2982,9 @@ labels: - [0x7f0be4ac, "sub_GAME_7F0BD8FC"] - [0x7f0be4b8, "something_with_lvl_c_debug"] - [0x7f0be534, "sub_GAME_7F0BD984"] - - [0x7f0be574, "sub_GAME_7F0BD9C4"] - - [0x7f0be59c, "sub_GAME_7F0BD9EC"] - - [0x7f0be5e8, "sub_GAME_7F0BDA38"] + - [0x7f0be574, "playmusictrack1"] + - [0x7f0be59c, "music_append_play_solo_death_short"] + - [0x7f0be5e8, "music_append_play_endtheme"] - [0x7f0be634, "sub_GAME_7F0BDA84"] - [0x7f0be660, "stage_load"] - [0x7f0beac4, "sub_GAME_7F0BDF04"] @@ -3234,7 +3234,7 @@ labels: - [0x7f0d3128, "sub_GAME_7F0D2448"] - [0x7f0d3144, "sub_GAME_7F0D2464"] - [0x7f0d31f8, "sub_GAME_7F0D2518"] - - [0x7f0d3400, "sub_GAME_7F0D2720"] + - [0x7f0d3400, "getmusictrack_or_randomtrack"] - [0x7f0d3528, "sub_GAME_7F0D2848"] - [0x7f0d3570, "sub_GAME_7F0D2890"] - [0x7f0d35c0, "sub_GAME_7F0D28E0"] @@ -3354,7 +3354,7 @@ labels: - [0x80024438, "bootswitch_sound"] - [0x8002443c, "F32_800243FC"] - [0x80024440, "ptr_memp_c_debug_debug_notice_list"] - - [0x80024444, "tied_to_mem_management"] + - [0x80024444, "needmemallocation"] - [0x80024454, "D_80024414"] - [0x80024458, "D_80024418"] - [0x8002445c, "D_8002441C"] @@ -4258,7 +4258,7 @@ labels: - [0x80030b18, "D_80030AD8"] - [0x80030b1c, "D_80030ADC"] - [0x80030b20, "D_80030AE0"] - - [0x80030b24, "D_80030AE4"] + - [0x80030b24, "ptr_gas_sound"] - [0x80030b28, "clock_drawn_flag"] - [0x80030b2c, "clock_enable"] - [0x80030b30, "clock_time"] @@ -4406,11 +4406,11 @@ labels: - [0x80032488, "D_80032448"] - [0x80032494, "D_80032454"] - [0x80032498, "D_80032458"] - - [0x8003249c, "size_right_item_buffer"] + - [0x8003249c, "size_item_buffer"] - [0x800324a0, "size_left_item_buffer"] - [0x800324a4, "D_80032464"] - [0x800324ac, "ejected_cartridge"] - - [0x800324d4, "stru_D_80032494"] + - [0x800324d4, "default_weaponstats"] - [0x80032544, "GfistZ_stats"] - [0x800325b4, "GknifeZ_stats"] - [0x80032624, "GthrowknifeZ_stats"] @@ -4894,9 +4894,9 @@ labels: - [0x80037028, "show_debug_menu_flag"] - [0x8003702c, "grab_rgb_screenshot_flag"] - [0x80037030, "grab_jpeg_screenshot_flag"] - - [0x80037034, "D_80037004"] - - [0x80037038, "D_80037008"] - - [0x8003703c, "D_8003700C"] + - [0x80037034, "player_pos_x"] + - [0x80037038, "player_pos_y"] + - [0x8003703c, "player_pos_z"] - [0x80037040, "D_80037010"] - [0x80037044, "stanbondx"] - [0x80037048, "stanbondy"] @@ -5684,7 +5684,7 @@ labels: - [0x80040b7c, "D_80040B4C"] - [0x80040b80, "D_80040B50"] - [0x80040b84, "D_80040B54"] - - [0x80040b88, "D_80040B58"] + - [0x80040b88, "mTrack2Vol"] - [0x80040b8c, "D_80040B5C"] - [0x80040b90, "D_80040B60"] - [0x80040b94, "D_80040B64"] @@ -5990,7 +5990,7 @@ labels: - [0x80044e40, "fog_tables"] - [0x80045f80, "fog_tables2"] - [0x80046060, "D_80046030"] - - [0x80046080, "D_80046050"] + - [0x80046080, "ob_c_debug_notice_list_entry"] - [0x80046084, "file_resource_table"] - [0x80048304, "file_entry_max"] - [0x80048310, "D_800482E0"] @@ -6002,13 +6002,13 @@ labels: - [0x80048390, "lvl_c_debug_notice_list"] - [0x80048394, "current_stage_to_load"] - [0x80048398, "D_80048368"] - - [0x8004839c, "D_8004836C"] + - [0x8004839c, "musictrack1_playing"] - [0x800483a0, "controls_locked_flag"] - [0x800483a4, "clock_timer"] - [0x800483a8, "global_timer_delta"] - [0x800483ac, "global_timer"] - [0x800483b0, "D_80048380"] - - [0x800483b4, "D_jpunk"] + - [0x800483b4, "jp_global_timer_delta"] - [0x800483b8, "difficulty_0"] - [0x800483bc, "D_80048388"] - [0x800483c0, "D_8004838C"] @@ -6035,7 +6035,7 @@ labels: - [0x80048414, "D_800483E0"] - [0x80048418, "D_800483E4"] - [0x80048420, "ramrom_table"] - - [0x80048498, "ramrom_blkbuf_1"] + - [0x80048498, "ptr_active_demofile"] - [0x8004849c, "ramrom_blkbuf_2"] - [0x800484a0, "ramrom_blkbuf_3"] - [0x800484a4, "is_ramrom_flag"] @@ -6060,20 +6060,20 @@ labels: - [0x80048500, "j_text_trigger"] - [0x80048504, "LnameX_lookuptable"] - [0x80048670, "loaded_text_index"] - - [0x800486a0, "type_0_stru_800490F0"] - - [0x80048760, "type_1_stru_800490F0"] - - [0x80048820, "type_D_stru_800490F0"] - - [0x800488e0, "type_2_stru_800490F0"] - - [0x800489a0, "type_3_stru_800490F0"] - - [0x80048a60, "type_4_stru_800490F0"] - - [0x80048b20, "type_5_stru_800490F0"] - - [0x80048be0, "type_6_stru_800490F0"] - - [0x80048ca0, "type_7_stru_800490F0"] - - [0x80048d60, "type_8_stru_800490F0"] - - [0x80048e20, "type_9_stru_800490F0"] - - [0x80048ee0, "type_A_stru_800490F0"] - - [0x80048fa0, "type_B_stru_800490F0"] - - [0x80049060, "type_C_stru_800490F0"] + - [0x800486a0, "mp_weapon_set_slaps"] + - [0x80048760, "mp_weapon_set_pistols"] + - [0x80048820, "mp_weapon_set_knife"] + - [0x800488e0, "mp_weapon_set_auto"] + - [0x800489a0, "mp_weapon_set_power"] + - [0x80048a60, "mp_weapon_set_sniper"] + - [0x80048b20, "mp_weapon_set_grenade"] + - [0x80048be0, "mp_weapon_set_remote_m"] + - [0x80048ca0, "mp_weapon_set_glaunch"] + - [0x80048d60, "mp_weapon_set_timed_m"] + - [0x80048e20, "mp_weapon_set_prox_m"] + - [0x80048ee0, "mp_weapon_set_rockets"] + - [0x80048fa0, "mp_weapon_set_lasers"] + - [0x80049060, "mp_weapon_set_golden"] - [0x80049120, "mp_weapon_set_text_table"] - [0x80049190, "mp_weapon_set"] - [0x800491a0, "bytes"] @@ -6258,8 +6258,8 @@ labels: - [0x80051a20, "D_800519F0"] - [0x80051a24, "D_800519F4"] - [0x80051a28, "D_800519F8"] - - [0x80051a2c, "D_800519FC"] - - [0x80051a30, "D_80051A00"] + - [0x80051a2c, "menu01_aspect"] + - [0x80051a30, "menu01_pageheight"] - [0x80051a34, "D_80051A04"] - [0x80051a38, "D_80051A08"] - [0x80051a3c, "D_80051A0C"] @@ -6284,8 +6284,8 @@ labels: - [0x80051a88, "D_80051A58"] - [0x80051a8c, "D_80051A5C"] - [0x80051a90, "jpt_scenario_specific_settings_mp"] - - [0x80051ab0, "D_80051A80"] - - [0x80051ab4, "D_80051A84"] + - [0x80051ab0, "menu0E_aspect"] + - [0x80051ab4, "menu0E_pageheight"] - [0x80051ab8, "D_80051A88"] - [0x80051abc, "D_80051A8C"] - [0x80051ac0, "D_80051A90"] diff --git a/notes/ge007.u.yaml b/notes/ge007.u.yaml index 46d79ce..194945c 100644 --- a/notes/ge007.u.yaml +++ b/notes/ge007.u.yaml @@ -146,7 +146,7 @@ labels: - [0x70003C10, "coloroutputmode_0"] - [0x70003C1C, "get_video2buf_offset28"] - [0x70003C2C, "get_video1buf_offset28"] - - [0x70003C3C, "set_video2buf_offset28"] + - [0x70003C3C, "set_video2buf_frameb"] - [0x70003C4C, "get_80060824"] - [0x70003C58, "video_related_F"] - [0x70003EB4, "video_related_10"] @@ -169,7 +169,7 @@ labels: - [0x70004514, "get_video2_settings_ulx"] - [0x70004524, "get_video2_settings_uly"] - [0x70004534, "set_video2_settings_offset_24"] - - [0x70004544, "video_related_1F"] + - [0x70004544, "setvideo_far"] - [0x70004590, "video_related_21"] - [0x700045DC, "video_related_23"] - [0x700045EC, "video_related_24"] @@ -289,24 +289,24 @@ labels: - [0x70009284, "music_related_42"] # file asm/code/memp.s - [0x70009380, "something_with_memp_c_debug"] - - [0x700093AC, "check_memflag_tokens"] - - [0x70009514, "memp_related_0"] - - [0x70009720, "allocate_bytes_in_bank"] - - [0x70009804, "memp_related_1"] - - [0x700098F0, "nulled_list_all8_mem_alloc_banks_sizes"] - - [0x70009910, "memp_related_3"] - - [0x70009970, "memp_related_4"] - - [0x7000999C, "reset_mem_bank_a0"] - - [0x700099C4, "memp_related_6"] + - [0x700093AC, "mempCheckMemflagTokens"] + - [0x70009514, "mempSetBankStarts"] + - [0x70009720, "mempAllocBytesInBank"] + - [0x70009804, "mempAddEntryOfSizeToBank"] + - [0x700098F0, "nulled_mempLoopAllMemBanks"] + - [0x70009910, "mempGetBankSizeLeft"] + - [0x70009970, "mempAllocPackedBytesInBank"] + - [0x7000999C, "mempResetBank"] + - [0x700099C4, "mempNullNextEntryInBank"] # file asm/code/mema.s - - [0x70009A10, "swap_entries"] - - [0x70009A34, "merge_alloc_entries"] - - [0x70009A50, "sort_merge_entries_in_alloc_table"] - - [0x70009B18, "memp_related_7"] + - [0x70009A10, "memaSwap"] + - [0x70009A34, "memaMerge"] + - [0x70009A50, "memaSortMergeEntries"] + - [0x70009B18, "memaSortMergeAllEntries"] - [0x70009B60, "mem_related"] - - [0x70009C74, "mem_related_model_room_buffers"] + - [0x70009C74, "memaAllocRoomBuffer"] - [0x70009D6C, "something_with_mema_c_debug"] - - [0x70009D98, "reset_memtable_base_allocation"] + - [0x70009D98, "mempInitMallocTable"] - [0x70009E10, "mem_related_calls_sort_merge_entries"] - [0x70009E34, "mem_related_something_find_first"] - [0x70009FA8, "mem_related_something_find_first_0"] @@ -314,7 +314,7 @@ labels: - [0x7000A040, "mem_related_allocated_table_related"] - [0x7000A064, "mem_related_something_first_related"] - [0x7000A100, "generate_list_alloc_mem"] - - [0x7000A29C, "generate_lists_before_after_mem_merge"] + - [0x7000A29C, "memaGenerateListsBeforeAfterMerge"] - [0x7000A2F8, "mem_related_something_first_related_0"] - [0x7000A370, "mem_related_0"] - [0x7000A3DC, "mem_related_1"] @@ -330,7 +330,7 @@ labels: # file asm/code/string_stuff.s - [0x7000A770, "textpointer_load_parse_something"] - [0x7000A7A0, "something_with_strings"] - - [0x7000A7FC, "string_load_parse_something"] + - [0x7000A7FC, "string_append_from_obseg_textbank"] - [0x7000A84C, "something_with_strings_0"] - [0x7000A898, "string_related"] - [0x7000A8F8, "strtol_related"] @@ -495,7 +495,7 @@ labels: - [0x70010010, "guMtxIdentF"] - [0x70010098, "guMtxIdent"] - [0x700100C8, "guMtxL2F"] - - [0x70010180, "ultra_70010180"] + - [0x70010180, "__osGetCurrFaultedThread"] - [0x70010190, "__osExceptionPreamble"] - [0x700101A0, "__osException"] - [0x70010390, "next_interrupt"] @@ -848,7 +848,7 @@ labels: - [0x7F001928, "sub_GAME_7F001928"] - [0x7F001940, "sub_GAME_7F001940"] - [0x7F001958, "write_monitor_ani_control_blocks"] - - [0x7F001B08, "initialize_80071E00_to_80071E78"] + - [0x7F001B08, "initialize_temp_mine_table"] # file asm/game/loadmorestuff.s - [0x7F001B50, "load_proptype"] - [0x7F001BD4, "sub_GAME_7F001BD4"] @@ -2169,7 +2169,7 @@ labels: - [0x7F04F7EC, "ammo_sfx_pickup_knife"] - [0x7F04F800, "ammo_sfx_pickup_default"] - [0x7F04F810, "set_sound_effect_for_weapontype_collection"] - - [0x7F04F920, "display_ammo_type_collection_text"] + - [0x7F04F920, "prepare_ammo_type_collection_text"] - [0x7F04F9F8, "display_text_when_ammo_collected"] - [0x7F04FA68, "add_ammo_to_inventory"] - [0x7F04FC3C, "get_ammo_in_magazine"] @@ -2247,7 +2247,7 @@ labels: - [0x7F051B5C, "add_obj_to_temp_proxmine_table"] - [0x7F051B94, "remove_obj_from_temp_proxmine_table"] - [0x7F051BCC, "detonate_proxmine_In_range"] - - [0x7F051CC8, "sub_GAME_7F051CC8"] + - [0x7F051CC8, "check_guard_detonate_proxmine"] - [0x7F051D74, "link_objects"] - [0x7F051D90, "complete_object_data_block_return_position_entry"] - [0x7F051DD8, "sub_GAME_7F051DD8"] @@ -2318,18 +2318,18 @@ labels: - [0x7F055E2C, "stop_alarm"] - [0x7F055E50, "is_alarm_on"] - [0x7F055E64, "init_trigger_toxic_gas_effect"] - - [0x7F055EF8, "sub_GAME_7F055EF8"] + - [0x7F055EF8, "check_deactivate_gas_sound"] - [0x7F055F38, "check_if_toxic_gas_activated"] - - [0x7F055F64, "sub_GAME_7F055F64"] + - [0x7F055F64, "handle_gas_damage"] - [0x7F056160, "set_unset_clock_lock_bits"] - [0x7F05619C, "is_clock_drawn_onscreen"] - [0x7F0561B0, "set_clock_time"] - [0x7F0561BC, "get_clock_time"] - [0x7F0561C8, "set_clock_enable"] - [0x7F0561D4, "get_clock_enable"] - - [0x7F0561E0, "sub_GAME_7F0561E0"] + - [0x7F0561E0, "if_enabled_reset_clock"] - [0x7F056210, "sub_GAME_7F056210"] - - [0x7F0565F0, "sub_GAME_7F0565F0"] + - [0x7F0565F0, "handle_alarm_gas_timer_calldamage"] - [0x7F056690, "sub_GAME_7F056690"] - [0x7F05677C, "drop_inventory"] # file asm/game/7F056850.s @@ -2381,7 +2381,7 @@ labels: - [0x7F056A74, "object_size_type_2E"] - [0x7F056A7C, "object_size_type_default"] - [0x7F056A88, "sub_GAME_7F056A88"] - - [0x7F056B1C, "sub_GAME_7F056B1C"] + - [0x7F056B1C, "check_if_object_type_has_been_loaded"] - [0x7F056BA8, "sub_GAME_7F056BA8"] - [0x7F056C38, "load_model"] - [0x7F056CA0, "sub_GAME_7F056CA0"] @@ -2420,7 +2420,7 @@ labels: - [0x7F057EA0, "cosf"] - [0x7F057EAC, "sinf"] # file asm/game/7F057FD0.s - - [0x7F057FD0, "init_0x40_bytes_data_at_address_last_word_1_0"] + - [0x7F057FD0, "reset_array_of_0x10_floats"] - [0x7F058020, "sub_GAME_7F058020"] - [0x7F058068, "sub_GAME_7F058068"] - [0x7F058098, "sub_GAME_7F058098"] @@ -2533,13 +2533,13 @@ labels: - [0x7F05CEBC, "sub_GAME_7F05CEBC"] - [0x7F05CF00, "get_itemtype_in_hand"] - [0x7F05CF18, "get_ptr_itemheader_in_hand"] - - [0x7F05CF30, "sub_GAME_7F05CF30"] - - [0x7F05CF48, "sub_GAME_7F05CF48"] + - [0x7F05CF30, "getPlayerWeaponBufferForHand"] + - [0x7F05CF48, "getSizeBufferWeaponInHand"] - [0x7F05CF5C, "remove_item_in_hand"] - [0x7F05CFA4, "place_item_in_hand_swap_and_make_visible"] - [0x7F05D018, "get_ptr_item_text_call_line"] - [0x7F05D048, "get_ptr_weapon_model_header_line"] - - [0x7F05D078, "sub_GAME_7F05D078"] + - [0x7F05D078, "getCurrentWeaponOrItem"] - [0x7F05D088, "used_to_load_1st_person_model_on_demand"] - [0x7F05D334, "sub_GAME_7F05D334"] - [0x7F05D434, "get_next_weapon_in_cycle_for_hand"] @@ -3097,7 +3097,7 @@ labels: - [0x7F089E4C, "sub_GAME_7F089E4C"] - [0x7F089EA4, "check_if_bond_is_invincible"] - [0x7F089EBC, "check_if_healthbar_timer_greater_than_0"] - - [0x7F089ED4, "get_BONDdata_field19C"] + - [0x7F089ED4, "get_BONDdata_bondfadefracnew"] - [0x7F089EE4, "get_curplay_horizontal_rotation_in_degrees"] - [0x7F089F10, "get_curplay_vertical_rotation_in_degrees"] - [0x7F089F38, "sub_GAME_7F089F38"] @@ -3166,7 +3166,7 @@ labels: - [0x7F08CE70, "sub_GAME_7F08CE70"] - [0x7F08CF0C, "sub_GAME_7F08CF0C"] - [0x7F08CF80, "sub_GAME_7F08CF80"] - - [0x7F08CFC0, "sub_GAME_7F08CFC0"] + - [0x7F08CFC0, "checkforgoldengun"] - [0x7F08CFE0, "sub_GAME_7F08CFE0"] - [0x7F08D038, "sub_GAME_7F08D038"] - [0x7F08D108, "sub_GAME_7F08D108"] @@ -3244,8 +3244,8 @@ labels: - [0x7F0904C4, "dbgStanViewProcess"] - [0x7F090508, "dbgBondViewProcess"] - [0x7F09054C, "sub_GAME_7F09054C"] - - [0x7F090590, "unknown_libname_68"] - - [0x7F090598, "nullsub_35"] + - [0x7F090590, "removed_do_debug_profile_flag_false"] + - [0x7F090598, "removed_do_debug_profile_flag_true"] - [0x7F0905A0, "debug_menu_processor"] - [0x7F090778, "debug_stanview"] - [0x7F090788, "debug_bondview"] @@ -3354,13 +3354,13 @@ labels: - [0x7F09166C, "sub_GAME_7F09166C"] - [0x7F0916F4, "sub_GAME_7F0916F4"] # file asm/game/7F091740.s - - [0x7F091740, "sub_GAME_7F091740"] - - [0x7F09177C, "sub_GAME_7F09177C"] - - [0x7F09193C, "sub_GAME_7F09193C"] - - [0x7F091A5C, "sub_GAME_7F091A5C"] - - [0x7F091A78, "sub_GAME_7F091A78"] - - [0x7F091AAC, "sub_GAME_7F091AAC"] - - [0x7F091B64, "sub_GAME_7F091B64"] + - [0x7F091740, "cheatButton_7F091740"] + - [0x7F09177C, "cheatButton_7F09177C"] + - [0x7F09193C, "cheat_buttons_mp_related"] + - [0x7F091A5C, "is_cheat_index_equal_to_1C"] + - [0x7F091A78, "cheatCheckIfMPCheat"] + - [0x7F091AAC, "handle_cheats_turned_on"] + - [0x7F091B64, "handle_cheats_turned_on"] - [0x7F091C10, "cheats_cheat_extra_mp_chars"] - [0x7F091C20, "cheats_cheat_invincibility"] - [0x7F091C50, "cheats_cheat_allguns"] @@ -3395,7 +3395,7 @@ labels: - [0x7F092340, "cheats_debug_unlockcheat"] - [0x7F092380, "cheats_debug_unlocklevel"] - [0x7F092428, "cheats_debug_return_saved_ra"] - - [0x7F092438, "sub_GAME_7F092438"] + - [0x7F092438, "cheatDisplayMessageActivateCheat"] - [0x7F0924D8, "cheat_button_invincibility"] - [0x7F092508, "cheat_button_all_guns"] - [0x7F092538, "cheat_button_line_mode"] @@ -3408,10 +3408,10 @@ labels: - [0x7F092668, "cheat_button_fast_mode"] - [0x7F092698, "cheat_button_debug_mode"] - [0x7F0926B0, "cheat_button_default"] - - [0x7F0926C0, "sub_GAME_7F0926C0"] - - [0x7F092774, "sub_GAME_7F092774"] - - [0x7F0927BC, "sub_GAME_7F0927BC"] - - [0x7F0927F4, "sub_GAME_7F0927F4"] + - [0x7F0926C0, "cheatDisableAllCheats"] + - [0x7F092774, "cheatGetMenuTextPointer"] + - [0x7F0927BC, "cheatCheckIfOn"] + - [0x7F0927F4, "set_DKMode"] # file asm/game/7F092890.s - [0x7F092890, "sub_GAME_7F092890"] # file asm/game/7F092E50.s @@ -3424,11 +3424,11 @@ labels: - [0x7F093A78, "sub_GAME_7F093A78"] - [0x7F093BFC, "sub_GAME_7F093BFC"] - [0x7F093C48, "sub_GAME_7F093C48"] - - [0x7F093C88, "sub_GAME_7F093C88"] + - [0x7F093C88, "addpoint5tofloat"] - [0x7F093CB0, "sub_GAME_7F093CB0"] - [0x7F093FA4, "sub_GAME_7F093FA4"] - [0x7F094298, "sub_GAME_7F094298"] - - [0x7F09442C, "sub_GAME_7F09442C"] + - [0x7F09442C, "store_stagenum_to_copyof_stagenum"] - [0x7F094438, "sub_GAME_7F094438"] - [0x7F094488, "sub_GAME_7F094488"] - [0x7F0957A4, "def_7F094A38"] @@ -3447,9 +3447,9 @@ labels: - [0x7F09B15C, "sub_GAME_7F09B15C"] - [0x7F09B1DC, "set_cur_player_screen_size"] - [0x7F09B1F8, "set_cur_player_viewport_size"] - - [0x7F09B214, "sub_GAME_7F09B214"] - - [0x7F09B224, "sub_GAME_7F09B224"] - - [0x7F09B234, "sub_GAME_7F09B234"] + - [0x7F09B214, "set_cur_player_fovy"] + - [0x7F09B224, "set_cur_player_aspect"] + - [0x7F09B234, "get_cur_player_fovy"] - [0x7F09B244, "sub_GAME_7F09B244"] - [0x7F09B284, "weapon_multi_hunting_knife"] - [0x7F09B28C, "weapon_multi_pp7"] @@ -3554,9 +3554,9 @@ labels: # file asm/game/7F0A4860.s - [0x7F0A4860, "nullsub_46"] - [0x7F0A4868, "init_watch_at_start_of_stage"] - - [0x7F0A4A98, "sub_GAME_7F0A4A98"] + - [0x7F0A4A98, "controller_deadzone_related"] - [0x7F0A4B40, "sub_GAME_7F0A4B40"] - - [0x7F0A4D74, "sub_GAME_7F0A4D74"] + - [0x7F0A4D74, "controllerCheckDualControllerTypesAllowed"] - [0x7F0A4DC0, "cur_player_get_control_type"] - [0x7F0A4DD0, "cur_player_set_control_type"] - [0x7F0A4E38, "get_cur_player_look_vertical_inverted"] @@ -3583,14 +3583,14 @@ labels: - [0x7F0A4FA4, "set_controlstick_lr_enabled"] - [0x7F0A4FB0, "sub_GAME_7F0A4FB0"] - [0x7F0A4FEC, "sub_GAME_7F0A4FEC"] - - [0x7F0A5028, "sub_GAME_7F0A5028"] - - [0x7F0A504C, "sub_GAME_7F0A504C"] + - [0x7F0A5028, "is_holding_greater_than_2E_up_on_stick"] + - [0x7F0A504C, "is_holding_greater_than_2E_down_on_stick"] - [0x7F0A5070, "sub_GAME_7F0A5070"] - [0x7F0A507C, "sub_GAME_7F0A507C"] - [0x7F0A5088, "sub_GAME_7F0A5088"] - [0x7F0A50C4, "sub_GAME_7F0A50C4"] - - [0x7F0A5100, "sub_GAME_7F0A5100"] - - [0x7F0A5124, "sub_GAME_7F0A5124"] + - [0x7F0A5100, "is_holding_less_than_10_up_on_stick"] + - [0x7F0A5124, "is_holding_less_than_10_down_on_stick"] - [0x7F0A5148, "sub_GAME_7F0A5148"] - [0x7F0A5154, "sub_GAME_7F0A5154"] - [0x7F0A5160, "sub_GAME_7F0A5160"] @@ -3637,7 +3637,7 @@ labels: - [0x7F0A8D40, "sub_GAME_7F0A8D40"] - [0x7F0A8ED0, "sub_GAME_7F0A8ED0"] - [0x7F0A8FEC, "sub_GAME_7F0A8FEC"] - - [0x7F0A9180, "sub_GAME_7F0A9180"] + - [0x7F0A9180, "call_sfx_c_700091C8"] - [0x7F0A91A0, "sub_GAME_7F0A91A0"] - [0x7F0A91C8, "sub_GAME_7F0A91C8"] - [0x7F0A9358, "sub_GAME_7F0A9358"] @@ -3650,12 +3650,12 @@ labels: - [0x7F0A9AB8, "sub_GAME_7F0A9AB8"] - [0x7F0AA7C8, "sub_GAME_7F0AA7C8"] - [0x7F0AADC0, "sub_GAME_7F0AADC0"] - - [0x7F0AB48C, "sub_GAME_7F0AB48C"] - - [0x7F0AB498, "sub_GAME_7F0AB498"] - - [0x7F0AB4A4, "sub_GAME_7F0AB4A4"] - - [0x7F0AB4B0, "sub_GAME_7F0AB4B0"] + - [0x7F0AB48C, "zero_D_80040998"] + - [0x7F0AB498, "zero_D_8004099C"] + - [0x7F0AB4A4, "zero_D_800409A4"] + - [0x7F0AB4B0, "return_arg0_7F0AB4B0"] - [0x7F0AB4B8, "sub_GAME_7F0AB4B8"] - - [0x7F0AB7A4, "sub_GAME_7F0AB7A4"] + - [0x7F0AB7A4, "set_pparam1toparam2_disablejoylr_playsfx"] - [0x7F0AB7D8, "sub_GAME_7F0AB7D8"] - [0x7F0AB908, "sub_GAME_7F0AB908"] - [0x7F0ABC1C, "sub_GAME_7F0ABC1C"] @@ -3666,11 +3666,11 @@ labels: - [0x7F0AC8EC, "def_7F0AC3B0"] - [0x7F0ACA28, "sub_GAME_7F0ACA28"] - [0x7F0ACB5C, "def_7F0ACAC8"] - - [0x7F0ACB70, "null_init_main"] - - [0x7F0ACB78, "sub_GAME_7F0ACB78"] - - [0x7F0ACB88, "sub_GAME_7F0ACB88"] - - [0x7F0ACB94, "sub_GAME_7F0ACB94"] - - [0x7F0ACBA0, "sub_GAME_7F0ACBA0"] + - [0x7F0ACB70, "null_init_main_7f0acb70"] + - [0x7F0ACB78, "setTextSpacingInverted"] + - [0x7F0ACB88, "setTextOrientation"] + - [0x7F0ACB94, "setTextWordWrap"] + - [0x7F0ACBA0, "setTextOverlapCorrection"] - [0x7F0ACBAC, "load_font_tables"] - [0x7F0ACD98, "microcode_constructor"] - [0x7F0ACEF0, "combiner_bayer_lod_perspective"] @@ -3786,7 +3786,7 @@ labels: - [0x7F0B4034, "sub_GAME_7F0B4034"] - [0x7F0B4084, "sub_GAME_7F0B4084"] - [0x7F0B40D4, "sub_GAME_7F0B40D4"] - - [0x7F0B4124, "sub_GAME_7F0B4124"] + - [0x7F0B4124, "load_bg_file"] - [0x7F0B47E0, "sub_GAME_7F0B47E0"] - [0x7F0B4810, "sub_GAME_7F0B4810"] - [0x7F0B4830, "sub_GAME_7F0B4830"] @@ -3960,16 +3960,16 @@ labels: - [0x7F0BCD7C, "load_bg_bytes_at_offset_to_membank"] - [0x7F0BCE0C, "load_rom_resource_index_to_membank"] - [0x7F0BCFE0, "load_resource_index_to_buffer"] - - [0x7F0BD100, "get_temp_remaining_buffer_for_index"] - - [0x7F0BD11C, "get_remaining_buffer_for_index"] + - [0x7F0BD100, "get_pc_remaining_buffer_for_index"] + - [0x7F0BD11C, "get_rom_remaining_buffer_for_index"] - [0x7F0BD138, "sub_GAME_7F0BD138"] - - [0x7F0BD188, "sub_GAME_7F0BD188"] + - [0x7F0BD188, "get_pc_buffer_remaining_value"] - [0x7F0BD1BC, "something_mem_bank_a0"] - [0x7F0BD234, "sub_GAME_7F0BD234"] - [0x7F0BD254, "get_index_num_of_named_resource"] - - [0x7F0BD384, "sub_GAME_7F0BD384"] - - [0x7F0BD38C, "sub_GAME_7F0BD38C"] - - [0x7F0BD3E4, "sub_GAME_7F0BD3E4"] + - [0x7F0BD384, "removed_handle_filetable_entry"] + - [0x7F0BD38C, "removed_loop_handle_filetable_entries"] + - [0x7F0BD3E4, "removed_loop_filetableentries"] - [0x7F0BD410, "sub_GAME_7F0BD410"] - [0x7F0BD460, "something_with_dyn_c_debug"] - [0x7F0BD48C, "set_vtx_gfx_mem_alloc"] @@ -3990,9 +3990,9 @@ labels: - [0x7F0BD8FC, "sub_GAME_7F0BD8FC"] - [0x7F0BD908, "something_with_lvl_c_debug"] - [0x7F0BD984, "sub_GAME_7F0BD984"] - - [0x7F0BD9C4, "sub_GAME_7F0BD9C4"] - - [0x7F0BD9EC, "sub_GAME_7F0BD9EC"] - - [0x7F0BDA38, "sub_GAME_7F0BDA38"] + - [0x7F0BD9C4, "playmusictrack1"] + - [0x7F0BD9EC, "music_append_play_solo_death_short"] + - [0x7F0BDA38, "music_append_play_endtheme"] - [0x7F0BDA84, "sub_GAME_7F0BDA84"] - [0x7F0BDAB0, "stage_load"] - [0x7F0BDF04, "sub_GAME_7F0BDF04"] @@ -4311,7 +4311,7 @@ labels: - [0x7F0D2464, "sub_GAME_7F0D2464"] - [0x7F0D2518, "sub_GAME_7F0D2518"] # file asm/game/7F0D2720.s - - [0x7F0D2720, "sub_GAME_7F0D2720"] + - [0x7F0D2720, "getmusictrack_or_randomtrack"] - [0x7F0D2848, "sub_GAME_7F0D2848"] - [0x7F0D2890, "sub_GAME_7F0D2890"] # file asm/game/spectrum.s @@ -4394,7 +4394,7 @@ labels: - [0x80024348, "music3len"] - [0x80024358, "music_array_tempo_maybe"] - [0x800243F8, "bootswitch_sound"] - - [0x80024404, "tied_to_mem_management"] + - [0x80024404, "needmemallocation"] - [0x80024460, "randseed"] - [0x80024470, "strstr_numstings"] - [0x80024474, "strstr_ptrcurrent_string"] @@ -7690,20 +7690,18 @@ labels: - [0x80063730, "ptr_3rd_music_ctrl_block"] - [0x80063734, "ptr_musicdatatable"] - [0x80063BB0, "memory_bank_ptrs"] - - [0x80063BF0, "ptr_model_room_buf_pri"] - - [0x80063BF8, "dword_CODE_bss_80063BF8"] - - [0x80063C1C, "dword_CODE_bss_80063C1C"] + - [0x80063C20, "ptr_model_room_buf_secondary"] - [0x80063C24, "size_modelroom_buf"] - [0x80063C28, "ptr_table_allocated_mem_blocks"] - [0x80063C2C, "dword_CODE_bss_80063C2C"] - [0x80063C30, "index_for_loadedroom"] - [0x80063C34, "dword_CODE_bss_80063C34"] - - [0x80063C38, "ptr_first_entry_in_alloc_table"] + - [0x80063C38, "ptr_table_allocated_mem_blocks + 0x10"] - [0x80063C3C, "dword_CODE_bss_80063C3C"] - [0x80063C48, "dword_CODE_bss_80063C48"] - - [0x80064C08, "dword_CODE_bss_80064C08"] - - [0x80064C10, "dword_CODE_bss_80064C10"] + - [0x80064C08, "ptr_table_allocated_mem_blocks + 0xFE0"] + - [0x80064C10, "ptr_table_allocated_mem_blocks + 0xFE8"] - [0x80064C18, "dword_CODE_bss_80064C18"] - [0x80064C1C, "dword_CODE_bss_80064C1C"] - [0x80064C20, "dword_CODE_bss_80064C20"] @@ -8049,7 +8047,7 @@ labels: - [0x80071DF0, "dword_CODE_bss_80071DF0"] - [0x80071DF4, "dword_CODE_bss_80071DF4"] - [0x80071DF8, "dword_CODE_bss_80071DF8"] - - [0x80071E00, "dword_CODE_bss_80071E00"] + - [0x80071E00, "temp_mine_table"] - [0x80071E04, "dword_CODE_bss_80071E04"] - [0x80071E08, "dword_CODE_bss_80071E08"] - [0x80071E78, "gas_damage_flag"] @@ -8203,7 +8201,7 @@ labels: - [0x80079FD0, "player3_player_data"] - [0x8007A040, "player4_player_data"] - [0x8007A0B0, "ptr_BONDdata"] - - [0x8007A0B4, "cur_player_stat_ptr"] + - [0x8007A0B4, "pPlayersPerm"] - [0x8007A0B8, "player_num"] - [0x8007A0BC, "random_byte"] - [0x8007A0C0, "dword_CODE_bss_8007A0C0"] @@ -8304,7 +8302,7 @@ labels: - [0x80083450, "dword_CODE_bss_80083450"] - [0x80083900, "dword_CODE_bss_80083900"] - [0x80083DB0, "dword_CODE_bss_80083DB0"] - - [0x800888B0, "ptr_resource_data"] + - [0x800888B0, "resource_lookup_data_array"] - [0x800888C4, "ptr_res_data_next"] - [0x800888D8, "dword_CODE_bss_800888D8"] - [0x8008C230, "ptr_mgfx0_alloc_start"] @@ -8328,15 +8326,15 @@ labels: - [0x8008C5F8, "dword_CODE_bss_8008C5F8"] - [0x8008C600, "dword_CODE_bss_8008C600"] - [0x8008C604, "dword_CODE_bss_8008C604"] - - [0x8008C608, "dword_CODE_bss_8008C608"] + - [0x8008C608, "music_slot_active"] - [0x8008C60C, "dword_CODE_bss_8008C60C"] - [0x8008C610, "dword_CODE_bss_8008C610"] - [0x8008C614, "dword_CODE_bss_8008C614"] - - [0x8008C618, "dword_CODE_bss_8008C618"] + - [0x8008C618, "music_slot_minutes"] - [0x8008C61C, "dword_CODE_bss_8008C61C"] - [0x8008C620, "dword_CODE_bss_8008C620"] - [0x8008C624, "dword_CODE_bss_8008C624"] - - [0x8008C628, "dword_CODE_bss_8008C628"] + - [0x8008C628, "music_slot_seconds"] - [0x8008C62C, "dword_CODE_bss_8008C62C"] - [0x8008C630, "dword_CODE_bss_8008C630"] - [0x8008C634, "dword_CODE_bss_8008C634"] @@ -8370,7 +8368,7 @@ labels: - [0x8008D0A4, "img_curdatatable"] - [0x8008D0A8, "img_bitcount"] - [0x8008D0B0, "globalbank_rdram_offset"] - - [0x8008D0B4, "ptr_explosionDL"] + - [0x8008D0B4, "pGlobalimagetable"] - [0x8008D0B8, "image"] - [0x8008D0BC, "impactimages"] - [0x8008D0C0, "explosion_smokeimages"] diff --git a/notes/ghidra/ge007.u.old.elf.c b/notes/ghidra/ge007.u.old.elf.c index 46e4979..0329070 100644 --- a/notes/ghidra/ge007.u.old.elf.c +++ b/notes/ghidra/ge007.u.old.elf.c @@ -5,7 +5,7 @@ u32 * get_cdata_vaddr(void) { - return (u32 *)rspbootTextStart; + return (u32 *)rspbootTextStart; } @@ -13,7 +13,7 @@ u32 * get_cdata_vaddr(void) u32 * get_cdata_rom_start(void) { - return (u32 *)&ROM_cdata_start; + return (u32 *)&ROM_cdata_start; } @@ -21,7 +21,7 @@ u32 * get_cdata_rom_start(void) u32 * get_cdata_rom_end(void) { - return (u32 *)&ROM_rarezip_start; + return (u32 *)&ROM_rarezip_start; } @@ -29,7 +29,7 @@ u32 * get_cdata_rom_end(void) u32 * get_RareZipASMRomstart(void) { - return (u32 *)&ROM_rarezip_start; + return (u32 *)&ROM_rarezip_start; } @@ -37,7 +37,7 @@ u32 * get_RareZipASMRomstart(void) u32 get_RareZipASMRomend(void) { - return 0x34b30; + return 0x34b30; } @@ -45,8 +45,8 @@ u32 get_RareZipASMRomend(void) void jump_decompressfile(int source,int target,int buffer) { - decompress_entry(source,target,buffer); - return; + decompress_entry(source,target,buffer); + return; } @@ -54,77 +54,74 @@ void jump_decompressfile(int source,int target,int buffer) int init(EVP_PKEY_CTX *ctx) { - code cVar1; - u32 *cdata_vaddr_start; - u32 *cdata_rom_start; - u32 *cdata_rom_end; - u32 *rzASMRomStart; - u32 *rzASMRomEnd; - code *pcVar2; - uint uVar3; - u32 *src; - u32 uVar4; - void *sp; - u32 payload_size; - u32 *dest; - u32 *next; - int index; - - cdata_vaddr_start = get_cdata_vaddr(); - cdata_rom_start = get_cdata_rom_start(); - cdata_rom_end = get_cdata_rom_end(); - cdata_rom_end = (u32 *)((int)cdata_rom_end - (int)cdata_rom_start); - rzASMRomStart = get_RareZipASMRomstart(); - rzASMRomEnd = (u32 *)get_RareZipASMRomend(); - payload_size = ((int)cdata_rom_end + (int)((int)rzASMRomEnd - (int)rzASMRomStart)) - 1; - if (-1 < (int)payload_size) { - pcVar2 = (code *)((int)cdata_vaddr_start + payload_size); - do { - // loop - cVar1 = *pcVar2; - index = payload_size - (int)cdata_rom_end; - payload_size -= 1; - pcVar2 = pcVar2 + -1; - huft_build[index] = cVar1; - } while (-1 < (int)payload_size); - } - // skip - jump_decompressfile((int)(huft_build + -(int)cdata_rom_end),(int)cdata_vaddr_start, - (int)&rarezip_buffer); - if (false) { - osPiRawStartDma(0,0x101000,(void *)0x70100400,0xfff32590); - uVar3 = osPiGetStatus(); - while ((uVar3 & 1) != 0) { - // wait_pi_ready - uVar3 = osPiGetStatus(); + code cVar1; + u32 *cdata_vaddr_start; + u32 *cdata_rom_start; + u32 *cdata_rom_end; + u32 *rzASMRomStart; + u32 *rzASMRomEnd; + code *pcVar2; + uint uVar3; + u32 *src; + u32 uVar4; + void *sp; + u32 payload_size; + u32 *dest; + u32 *next; + int index; + + cdata_vaddr_start = get_cdata_vaddr(); + cdata_rom_start = get_cdata_rom_start(); + cdata_rom_end = get_cdata_rom_end(); + cdata_rom_end = (u32 *)((int)cdata_rom_end - (int)cdata_rom_start); + rzASMRomStart = get_RareZipASMRomstart(); + rzASMRomEnd = (u32 *)get_RareZipASMRomend(); + payload_size = ((int)cdata_rom_end + (int)((int)rzASMRomEnd - (int)rzASMRomStart)) - 1; + if (-1 < (int)payload_size) { + pcVar2 = (code *)((int)cdata_vaddr_start + payload_size); + do { + cVar1 = *pcVar2; + index = payload_size - (int)cdata_rom_end; + payload_size -= 1; + pcVar2 = pcVar2 + -1; + huft_build[index] = cVar1; + } while (-1 < (int)payload_size); } - } - osInitialize(); - set_hardwire_TLB_to_2(); - src = (u32 *)resolve_TLBaddress_for_InvalidHit; - dest = (u32 *)&UT_VEC; - do { - next = dest + 4; - *dest = *src; - dest[1] = src[1]; - dest[2] = src[2]; - dest[3] = src[3]; - src = src + 4; - dest = next; - } while (next != (u32 *)&XUT_VEC); - osWritebackDCacheAll(); - osInvalICache(&UT_VEC,0x4000); - index = 2; - do { - osUnmapTLB(index); - index += 1; - } while (index != 0x20); - uVar4 = __osGetFpcCsr(); - __osSetFpcCsr(uVar4 | 0xe80); - sp = set_stack_entry(&sp_main,0x8000); - osCreateThread(&mainThread,3,main_entry,NULL,sp,10); - osStartThread(&mainThread); - return (int)sp; + jump_decompressfile((int)(huft_build + -(int)cdata_rom_end),(int)cdata_vaddr_start, + (int)&rarezip_buffer); + if (false) { + osPiRawStartDma(0,0x101000,(void *)0x70100400,0xfff32590); + uVar3 = osPiGetStatus(); + while ((uVar3 & 1) != 0) { + uVar3 = osPiGetStatus(); + } + } + osInitialize(); + set_hardwire_TLB_to_2(); + src = (u32 *)resolve_TLBaddress_for_InvalidHit; + dest = (u32 *)&UT_VEC; + do { + next = dest + 4; + *dest = *src; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = src[3]; + src = src + 4; + dest = next; + } while (next != (u32 *)&XUT_VEC); + osWritebackDCacheAll(); + osInvalICache(&UT_VEC,0x4000); + index = 2; + do { + osUnmapTLB(index); + index += 1; + } while (index != 0x20); + uVar4 = __osGetFpcCsr(); + __osSetFpcCsr(uVar4 | 0xe80); + sp = set_stack_entry(&sp_main,0x8000); + osCreateThread(&mainThread,3,main_entry,NULL,sp,10); + osStartThread(&mainThread); + return (int)sp; } @@ -132,7 +129,7 @@ int init(EVP_PKEY_CTX *ctx) void * set_stack_entry(void *stack,s32 size) { - return (void *)((int)stack + size + -8); + return (void *)((int)stack + size + -8); } @@ -140,9 +137,9 @@ void * set_stack_entry(void *stack,s32 size) void set_hw_address_and_unknown(void) { - unknown_init_val = 1; - cart_hw_address = 0x10000000; - return; + unknown_init_val = 1; + cart_hw_address = 0x10000000; + return; } @@ -150,17 +147,9 @@ void set_hw_address_and_unknown(void) void thread1_idle(void) { - do { + do { // WARNING: Do nothing block with infinite loop - } while( true ); -} - - - -void dummy_70000730(void) - -{ - return; + } while( true ); } @@ -168,12 +157,12 @@ void dummy_70000730(void) void start_idle_thread(void) { - void *sp; - - sp = set_stack_entry(&sp_idle,0x40); - osCreateThread(&idleThread,1,thread1_idle,NULL,sp,0); - osStartThread(&idleThread); - return; + void *sp; + + sp = set_stack_entry(&sp_idle,0x40); + osCreateThread(&idleThread,1,thread1_idle,NULL,sp,0); + osStartThread(&idleThread); + return; } @@ -181,12 +170,12 @@ void start_idle_thread(void) void start_rmon_thread(void) { - void *sp; - - sp = set_stack_entry(&sp_rmon,0x300); - osCreateThread(&rmonThread,0,rmon_entry,NULL,sp,0xfa); - osStartThread(&rmonThread); - return; + void *sp; + + sp = set_stack_entry(&sp_rmon,0x300); + osCreateThread(&rmonThread,0,rmon_entry,NULL,sp,0xfa); + osStartThread(&rmonThread); + return; } @@ -196,18 +185,16 @@ void start_rmon_thread(void) void init_scheduler(void) { - u8 numFields; - - osCreateMesgQueue(&gfxFrameMsgQ,gfxFrameMsgBuf,0x20); - if (_osTVType == 2) { - osCreateScheduler(&sc,&shedThread,0x1e,'\x01',numFields); - } - else { - osCreateScheduler(&sc,&shedThread,2,'\x01',numFields); - } - osScAddClient(&sc,(OSScClient *)((int)&sc.thread.context.v0 + 4),&gfxFrameMsgQ); - sched_cmdQ = osScGetCmdQ(&sc); - return; + osCreateMesgQueue(&gfxFrameMsgQ,gfxFrameMsgBuf,0x20); + if (_osTVType == 2) { + osCreateScheduler(&sc,&shedThread,'\x1e','\x01'); + } + else { + osCreateScheduler(&sc,&shedThread,'\x02','\x01'); + } + osScAddClient(&sc,gfxClient,&gfxFrameMsgQ); + sched_cmdQ = osScGetCmdQ(&sc); + return; } @@ -215,20 +202,20 @@ void init_scheduler(void) void main_entry(void) { - uint uVar1; - - start_idle_thread(); - removed_7000ad30(); - start_pi_manager(); - start_rmon_thread(); - uVar1 = check_boot_switches(); - if (uVar1 != 0) { - osStopThread(NULL); - } - osSetThreadPri(NULL,10); - init_scheduler(); - setup_gamevalues_and_launchmainloop(); - return; + longlong in_v0; + + start_idle_thread(); + removed_7000ad30(); + start_pi_manager(); + start_rmon_thread(); + check_boot_switches(); + if (in_v0 != 0) { + osStopThread(NULL); + } + osSetThreadPri(NULL,10); + init_scheduler(); + setup_gamevalues_and_launchmainloop(); + return; } @@ -236,32 +223,33 @@ void main_entry(void) void setuplastentryofdebughandler(void) { - debug_handler_entry *pdVar1; - debug_handler_entry *pdVar2; - debug_handler_entry *pdVar3; - debug_handler_entry *pdVar4; - debug_handler_entry local_38; - void *pvStack48; - - pdVar2 = debug_handler_table; - pdVar1 = &local_38; - do { - pdVar3 = pdVar1; - pdVar4 = pdVar2; - pdVar3->stackpointer = pdVar4->stackpointer; - pdVar3->name = pdVar4->name; - pdVar3[1].stackpointer = pdVar4[1].stackpointer; - pdVar2 = (debug_handler_entry *)&pdVar4[1].name; - pdVar1 = (debug_handler_entry *)&pdVar3[1].name; - } while ((debug_handler_entry *)&pdVar4[1].name != &debug_handler_table_end); - ((debug_handler_entry *)&pdVar3[1].name)->stackpointer = debug_handler_table_end.stackpointer; - pdVar3[2].stackpointer = pdVar4[2].stackpointer; - pdVar2 = &local_38; - while (pvStack48 != NULL) { - pvStack48 = pdVar2[2].stackpointer; - pdVar2 = pdVar2 + 1; - } - return; + debug_handler_entry *pdVar1; + debug_handler_entry *table; + debug_handler_entry *new; + debug_handler_entry *old; + debug_handler_entry local_38; + void *pvStack48; + void *apvStack40 [10]; + + table = debug_handler_table; + pdVar1 = &local_38; + do { + new = pdVar1; + old = table; + new->stackpointer = old->stackpointer; + new->name = old->name; + new[1].stackpointer = old[1].stackpointer; + table = (debug_handler_entry *)&old[1].name; + pdVar1 = (debug_handler_entry *)&new[1].name; + } while ((debug_handler_entry *)&old[1].name != &debug_handler_table_end); + ((debug_handler_entry *)&new[1].name)->stackpointer = debug_handler_table_end.stackpointer; + new[2].stackpointer = old[2].stackpointer; + table = &local_38; + while (pvStack48 != NULL) { + pvStack48 = table[2].stackpointer; + table = table + 1; + } + return; } @@ -269,8 +257,8 @@ void setuplastentryofdebughandler(void) void activate_stderr(BOOL flag) { - stderr_active = flag; - return; + stderr_active = flag; + return; } @@ -278,8 +266,8 @@ void activate_stderr(BOOL flag) void enable_stderr(BOOL flag) { - stderr_enabled = flag; - return; + stderr_enabled = flag; + return; } @@ -287,8 +275,8 @@ void enable_stderr(BOOL flag) void permit_stderr(BOOL flag) { - stderr_permitted = flag; - return; + stderr_permitted = flag; + return; } @@ -296,8 +284,8 @@ void permit_stderr(BOOL flag) void setUserCompareValue(u32 value) { - userCompareValue = value; - return; + userCompareValue = value; + return; } @@ -308,11 +296,11 @@ void setUserCompareValue(u32 value) void CheckDisplayErrorBuffer(void *frameBufPtr) { - if (((stderr_permitted != FALSE) && (stderr_active != FALSE)) || (stderr_enabled != FALSE)) { - write_stderr_to_buffer(frameBufPtr); - currentcount = osGetCount(); - } - return; + if (((stderr_permitted != FALSE) && (stderr_active != FALSE)) || (stderr_enabled != FALSE)) { + write_stderr_to_buffer(frameBufPtr); + currentcount = osGetCount(); + } + return; } @@ -320,65 +308,64 @@ void CheckDisplayErrorBuffer(void *frameBufPtr) void CheckDisplayErrorBufferEvery16Frames(u32 framecount) { - u32 uVar1; - - if ((((framecount & 0xf) == 0) && - (((stderr_permitted != FALSE && (stderr_active != FALSE)) || (stderr_enabled != FALSE)))) && - (uVar1 = osGetCount(), userCompareValue < uVar1 - currentcount)) { - write_stderr_to_buffer(cfb_16_a); - write_stderr_to_buffer(cfb_16_b); - } - return; + u32 uVar1; + + if ((((framecount & 0xf) == 0) && + (((stderr_permitted != FALSE && (stderr_active != FALSE)) || (stderr_enabled != FALSE)))) && + (uVar1 = osGetCount(), userCompareValue < uVar1 - currentcount)) { + write_stderr_to_buffer(cfb_16_a); + write_stderr_to_buffer(cfb_16_b); + } + return; } -void osCreateLog(OSLog *log,u32 *base,s32 len) +void setcurrentcount(void) { - currentcount = osGetCount(); - return; + currentcount = osGetCount(); + return; } -void osCreateScheduler(OSSched *s,void *stack,OSPri priority,u8 mode,u8 numFields) +void osCreateScheduler(OSSched *s,void *stack,u8 mode,u8 numFields) { - void *sp; - OSLog *log; - u32 *base; - s32 len; - uint uVar1; - - (s->thread).fp = 0; - *(undefined4 *)&(s->thread).context.at = 0; - (s->thread).priority = 0; - *(undefined4 *)((int)&(s->thread).context.at + 4) = 0; - (s->thread).queue = NULL; - (s->thread).tlnext = NULL; - *(undefined4 *)&(s->thread).state = 0; - (s->thread).id = 0; - (s->retraceMsg).type = 1; - (s->prenmiMsg).type = 5; - (s->thread).next = stack; - osCreateMesgQueue(&s->interruptQ,s->intBuf,8); - osCreateMesgQueue(&s->cmdQ,s->cmdMsgBuf,8); - osCreateViManager(0xfe); - uVar1 = priority & 0xff; - viMode._0_4_ = &osViModeTable + uVar1; - viMode.comRegs.ctrl = (&osViModeTable)[uVar1].comRegs.hStart; - viMode.comRegs.width = (&osViModeTable)[uVar1].fldRegs[0].vStart; - viMode.comRegs.burst = (&osViModeTable)[uVar1].fldRegs[1].vStart; - osSetEventMesg(); - osSetEventMesg(); - osSetEventMesg(); - osViSetEvent(&s->interruptQ,&UNK_0000029a,(int)(char)mode); - osCreateLog(log,base,len); - sp = set_stack_entry(&sp_shed,0x200); - osCreateThread((OSThread *)(s->thread).next,2,__scMain,s,sp,0x1e); - osStartThread((OSThread *)(s->thread).next); - return; + void *sp; + OSMesgQueue *mq; + uint uVar1; + + s->curRSPTask = NULL; + s->curRDPTask = NULL; + s->clientList = NULL; + s->frameCount = 0; + s->audioListHead = NULL; + s->gfxListHead = NULL; + s->audioListTail = NULL; + s->gfxListTail = NULL; + (s->retraceMsg).type = 1; + (s->prenmiMsg).type = 5; + mq = &s->interruptQ; + s->thread = stack; + osCreateMesgQueue((OSMesgQueue *)mq,s->intBuf,8); + osCreateMesgQueue((OSMesgQueue *)&s->cmdQ,s->cmdMsgBuf,8); + osCreateViManager(0xfe); + uVar1 = (uint)mode; + viMode._0_4_ = osViModeTable + uVar1; + viMode.comRegs.ctrl = osViModeTable[uVar1].comRegs.hStart; + viMode.comRegs.width = osViModeTable[uVar1].fldRegs[0].vStart; + viMode.comRegs.burst = osViModeTable[uVar1].fldRegs[1].vStart; + osSetEventMesg(4,(OSMesgQueue *)mq,&UNK_0000029b); + osSetEventMesg(9,(OSMesgQueue *)mq,&UNK_0000029c); + osSetEventMesg(0xe,(OSMesgQueue *)mq,&UNK_0000029d); + osViSetEvent((OSMesgQueue *)mq,&UNK_0000029a,(int)(char)numFields); + setcurrentcount(); + sp = set_stack_entry(&sp_shed,0x200); + osCreateThread((OSThread *)s->thread,2,__scMain,s,sp,0x1e); + osStartThread((OSThread *)s->thread); + return; } @@ -386,16 +373,16 @@ void osCreateScheduler(OSSched *s,void *stack,OSPri priority,u8 mode,u8 numField void osScAddClient(OSSched *s,OSScClient *c,OSMesgQueue *msgQ) { - OSIntMask mask; - SCClient_s *in_a3_lo; - - mask = osSetIntMask(1); - c->msgQ = msgQ; - c[1].next = in_a3_lo; - c->next = (SCClient_s *)(s->thread).priority; - *(OSScClient **)&(s->thread).priority = c; - osSetIntMask(mask); - return; + OSIntMask mask; + SCClient_s *in_a3_lo; + + mask = osSetIntMask(1); + *(OSMesgQueue **)&c->msgQ = msgQ; + c[1].next = in_a3_lo; + *(OSScClient **)&c->next = s->clientList; + s->clientList = c; + osSetIntMask(mask); + return; } @@ -403,33 +390,33 @@ void osScAddClient(OSSched *s,OSScClient *c,OSMesgQueue *msgQ) void osScRemoveClient(OSSched *s,OSScClient *c) { - OSScClient *pOVar1; - OSScClient *pOVar2; - OSScClient *pOVar3; - OSIntMask OVar4; - - pOVar3 = (OSScClient *)(s->thread).priority; - OVar4 = osSetIntMask(1); - pOVar2 = NULL; - do { - pOVar1 = pOVar3; - if (pOVar1 == NULL) { + OSScClient *pOVar1; + OSScClient *pOVar2; + OSScClient *pOVar3; + OSIntMask OVar4; + + pOVar1 = s->clientList; + OVar4 = osSetIntMask(1); + pOVar3 = NULL; + do { + pOVar2 = pOVar1; + if (pOVar2 == NULL) { LAB_70000ce0: - osSetIntMask(OVar4); - return; - } - if (pOVar1 == c) { - if (pOVar2 == NULL) { - *(SCClient_s **)&(s->thread).priority = c->next; - } - else { - pOVar2->next = c->next; - } - goto LAB_70000ce0; - } - pOVar3 = (OSScClient *)pOVar1->next; - pOVar2 = pOVar1; - } while( true ); + osSetIntMask(OVar4); + return; + } + if (pOVar2 == c) { + if (pOVar3 == NULL) { + s->clientList = (OSScClient *)c->next; + } + else { + pOVar3->next = c->next; + } + goto LAB_70000ce0; + } + pOVar1 = (OSScClient *)pOVar2->next; + pOVar3 = pOVar2; + } while( true ); } @@ -437,7 +424,7 @@ LAB_70000ce0: OSMesgQueue * osScGetCmdQ(OSSched *s) { - return &s->cmdQ; + return (OSMesgQueue *)&s->cmdQ; } @@ -447,64 +434,64 @@ OSMesgQueue * osScGetCmdQ(OSSched *s) void __scMain(OSSched *sc) { - bool bVar1; - OSMesgQueue *mq; - int *piVar2; - OSMesg msg; - - msg = NULL; - bVar1 = false; - do { - osRecvMesg(&sc->interruptQ,&msg,1); - if ((undefined *)msg == &UNK_0000029a) { - __scHandleRetrace(sc); - } - else { - if ((undefined *)msg == &UNK_0000029b) { - __scHandleRSP(sc); - } - else { - if ((undefined *)msg == &UNK_0000029c) { - __scHandleRDP(sc); + bool bVar1; + OSMesgQueue *mq; + OSScClient *pOVar2; + OSMesg msg; + + msg = NULL; + bVar1 = false; + do { + osRecvMesg((OSMesgQueue *)&sc->interruptQ,&msg,1); + if ((undefined *)msg == &UNK_0000029a) { + __scHandleRetrace(sc); } else { - if ((undefined *)msg == &UNK_0000029d) { - reset_cont_rumble_detect(); - piVar2 = (int *)(sc->thread).priority; - if (piVar2 == NULL) { - bVar1 = true; + if ((undefined *)msg == &UNK_0000029b) { + __scHandleRSP(sc); } else { - mq = (OSMesgQueue *)piVar2[1]; - while( true ) { - osSendMesg(mq,&sc->prenmiMsg,0); - piVar2 = (int *)*piVar2; - if (piVar2 == NULL) break; - mq = (OSMesgQueue *)piVar2[1]; - } - bVar1 = true; + if ((undefined *)msg == &UNK_0000029c) { + __scHandleRDP(sc); + } + else { + if ((undefined *)msg == &UNK_0000029d) { + reset_cont_rumble_detect(); + pOVar2 = sc->clientList; + if (pOVar2 == NULL) { + bVar1 = true; + } + else { + mq = pOVar2->msgQ; + while( true ) { + osSendMesg((OSMesgQueue *)mq,&sc->prenmiMsg,0); + pOVar2 = (OSScClient *)pOVar2->next; + if (pOVar2 == NULL) break; + mq = ((SCClient_s *)pOVar2)->msgQ; + } + bVar1 = true; + } + } + } } - } } - } + } while (!bVar1); + if (_osTVType == 2) { + osViSetMode(osViModeTable + 0x1e); } - } while (!bVar1); - if (_osTVType == 2) { - osViSetMode(&OS_VI_MPAL_LAN1); - } - else { - osViSetMode(&OS_VI_NTSC_LAN1); - } - osViSetXScale(1.00000000); - osViSetYScale(1.00000000); - osViRepeatLine('\0'); - osViBlack(1); - do { + else { + osViSetMode(osViModeTable + 2); + } + osViSetXScale(1.00000000); + osViSetYScale(1.00000000); + osViRepeatLine('\0'); + osViBlack(1); do { - osRecvMesg(&sc->interruptQ,&msg,1); - } while ((undefined *)msg != &UNK_0000029a); - controllerSchedulerRelated(); - } while( true ); + do { + osRecvMesg((OSMesgQueue *)&sc->interruptQ,&msg,1); + } while ((undefined *)msg != &UNK_0000029a); + controllerSchedulerRelated(); + } while( true ); } @@ -512,63 +499,63 @@ void __scMain(OSSched *sc) void __scHandleRetrace(OSSched *sc) { - int iVar1; - s32 sVar2; - SCClient_s *pSVar3; - ulonglong state; - OSScClient *client; - OSScTask *dp; - OSScTask *sp [3]; - OSScTask *rspTask; - - rspTask = NULL; - sp[0] = NULL; - dp = NULL; - video_related_1(); - *(int *)((int)&(sc->thread).context.at + 4) = *(int *)((int)&(sc->thread).context.at + 4) + 1; - video_related_7(); - controllerSchedulerRelated(); - music_related_15(); - iVar1 = osRecvMesg(&sc->cmdQ,&rspTask,0); - while (iVar1 != -1) { - __scAppendList(sc,rspTask); - iVar1 = osRecvMesg(&sc->cmdQ,&rspTask,0); - } - if (*(int *)&(sc->thread).context.v0 == 0) { - iVar1 = (sc->thread).fp; - } - else { - if ((sc->thread).fp != 0) { - __scYield(sc); - client = (OSScClient *)(sc->thread).priority; - goto LAB_70000fb0; + int iVar1; + s32 sVar2; + OSScTask *pOVar3; + SCClient_s *pSVar4; + ulonglong state; + OSScClient *client; + OSScTask *dp; + OSScTask *sp [3]; + OSScTask *rspTask; + + rspTask = NULL; + sp[0] = NULL; + dp = NULL; + video_related_1(); + sc->frameCount = sc->frameCount + 1; + video_related_7(); + controllerSchedulerRelated(); + music_related_15(); + iVar1 = osRecvMesg((OSMesgQueue *)&sc->cmdQ,&rspTask,0); + while (iVar1 != -1) { + __scAppendList(sc,rspTask); + iVar1 = osRecvMesg((OSMesgQueue *)&sc->cmdQ,&rspTask,0); } - iVar1 = (sc->thread).fp; - } - state = (longlong)(int)((uint)(iVar1 == 0) << 1) | - (ulonglong)(*(int *)&(sc->thread).context.at == 0); - sVar2 = __scSchedule(sc,sp,&dp,(s32)state); - if ((longlong)sVar2 != state) { - __scExec(sc,sp[0],dp); - } - client = (OSScClient *)(sc->thread).priority; + if (sc->doAudio == 0) { + pOVar3 = sc->curRSPTask; + } + else { + if (sc->curRSPTask != NULL) { + __scYield(sc); + client = sc->clientList; + goto LAB_70000fb0; + } + pOVar3 = sc->curRSPTask; + } + state = (longlong)(int)((uint)(pOVar3 == NULL) << 1) | (ulonglong)(sc->curRDPTask == NULL); + sVar2 = __scSchedule(sc,sp,&dp,(s32)state); + if ((longlong)sVar2 != state) { + __scExec(sc,sp[0],dp); + } + client = sc->clientList; LAB_70000fb0: - if (client != NULL) { - pSVar3 = client[1].next; - while( true ) { - if ((pSVar3 == NULL) || ((*(uint *)((int)&(sc->thread).context.at + 4) & 1) == 0)) { - osSendMesg(client->msgQ,sc,0); - client = (OSScClient *)client->next; - } - else { - client = (OSScClient *)client->next; - } - if (client == NULL) break; - pSVar3 = ((SCClient_s *)client)[1].next; + if (client != NULL) { + pSVar4 = client[1].next; + while( true ) { + if ((pSVar4 == NULL) || ((sc->frameCount & 1) == 0)) { + osSendMesg((OSMesgQueue *)client->msgQ,sc,0); + client = (OSScClient *)client->next; + } + else { + client = (OSScClient *)client->next; + } + if (client == NULL) break; + pSVar4 = ((SCClient_s *)client)[1].next; + } } - } - CheckDisplayErrorBufferEvery16Frames(*(u32 *)((int)&(sc->thread).context.at + 4)); - return; + CheckDisplayErrorBufferEvery16Frames(sc->frameCount); + return; } @@ -576,51 +563,50 @@ LAB_70000fb0: void __scHandleRSP(OSSched *sc) { - OSThread_s *t; - OSYieldResult OVar1; - uint uVar2; - uint state; - int iVar3; - OSScTask *dp; - OSScTask *sp; - OSScTask *j; - - sp = NULL; - dp = NULL; - t = (OSThread_s *)(sc->thread).fp; - (sc->thread).fp = 0; - video_related_3(0x10001); - if ((t->priority & 0x10U) == 0) { - uVar2 = t->priority; + OSYieldResult OVar1; + uint uVar2; + uint state; + OSScTask *t; + OSScTask *dp; + OSScTask *sp; + OSScTask *j; + + sp = NULL; + dp = NULL; + t = sc->curRSPTask; + sc->curRSPTask = NULL; + video_related_3(0x10001); + if ((t->state & 0x10) == 0) { + uVar2 = t->state; LAB_700010ac: - t->priority = uVar2 & 0xfffffffd; - __scTaskComplete(sc,(OSScTask *)t); - } - else { - OVar1 = osSpTaskYielded((OSTask *)&t->state); - if (OVar1 == 0) { - uVar2 = t->priority; - goto LAB_700010ac; + t->state = uVar2 & 0xfffffffd; + __scTaskComplete(sc,t); } - t->priority = t->priority | 0x20; - if (((uint)t->queue & 7) == 3) { - t->next = (sc->thread).tlnext; - (sc->thread).tlnext = t; - if ((sc->thread).id != 0) { - iVar3 = (sc->thread).fp; - goto LAB_700010c4; - } - *(OSThread_s **)&(sc->thread).id = t; + else { + OVar1 = osSpTaskYielded((OSTask *)t->list); + if (OVar1 == 0) { + uVar2 = t->state; + goto LAB_700010ac; + } + t->state = t->state | 0x20; + if ((t->flags & 7) == 3) { + t->next = (OSScTask_s *)sc->gfxListHead; + sc->gfxListHead = t; + if (sc->gfxListTail != NULL) { + t = sc->curRSPTask; + goto LAB_700010c4; + } + sc->gfxListTail = t; + } } - } - iVar3 = (sc->thread).fp; + t = sc->curRSPTask; LAB_700010c4: - state = (uint)(iVar3 == 0) << 1 | (uint)(*(int *)&(sc->thread).context.at == 0); - uVar2 = __scSchedule(sc,&sp,&dp,state); - if (uVar2 != state) { - __scExec(sc,sp,dp); - } - return; + state = (uint)(t == NULL) << 1 | (uint)(sc->curRDPTask == NULL); + uVar2 = __scSchedule(sc,&sp,&dp,state); + if (uVar2 != state) { + __scExec(sc,sp,dp); + } + return; } @@ -628,7 +614,7 @@ LAB_700010c4: void * get_counters(void) { - return (void *)((int)&sc.thread.context.a1 + 4); + return &target_for_counters_maybe; } @@ -636,28 +622,28 @@ void * get_counters(void) void __scHandleRDP(OSSched *sc) { - OSScTask *t; - uint uVar1; - uint availRCP; - OSScTask *pOStack12; - OSScTask *apOStack8 [2]; - - apOStack8[0] = NULL; - pOStack12 = NULL; - if (*(int *)&(sc->thread).context.at != 0) { - video_related_3(0x10002); - osDpGetCounters((u32 *)((int)&sc.thread.context.a1 + 4)); - t = *(OSScTask **)&(sc->thread).context.at; - *(undefined4 *)&(sc->thread).context.at = 0; - t->state = t->state & 0xfffffffe; - __scTaskComplete(sc,t); - availRCP = (uint)((sc->thread).fp == 0) << 1 | (uint)(*(int *)&(sc->thread).context.at == 0); - uVar1 = __scSchedule(sc,apOStack8,&pOStack12,availRCP); - if (uVar1 != availRCP) { - __scExec(sc,apOStack8[0],pOStack12); + OSScTask *t; + uint uVar1; + uint availRCP; + OSScTask *pOStack12; + OSScTask *apOStack8 [2]; + + apOStack8[0] = NULL; + pOStack12 = NULL; + if (sc->curRDPTask != NULL) { + video_related_3(0x10002); + osDpGetCounters((u32 *)&target_for_counters_maybe); + t = sc->curRDPTask; + sc->curRDPTask = NULL; + t->state = t->state & 0xfffffffe; + __scTaskComplete(sc,t); + availRCP = (uint)(sc->curRSPTask == NULL) << 1 | (uint)(sc->curRDPTask == NULL); + uVar1 = __scSchedule(sc,apOStack8,&pOStack12,availRCP); + if (uVar1 != availRCP) { + __scExec(sc,apOStack8[0],pOStack12); + } } - } - return; + return; } @@ -665,20 +651,20 @@ void __scHandleRDP(OSSched *sc) OSScTask * ___scTaskReady(OSScTask *__return_storage_ptr__,OSScTask *t) { - int iVar1; - int iVar2; - - if (__return_storage_ptr__ == NULL) { - __return_storage_ptr__ = NULL; - } - else { - iVar1 = osViGetCurrentFramebuffer(); - iVar2 = osViGetNextFramebuffer(); - if (iVar2 != iVar1) { - __return_storage_ptr__ = NULL; + int iVar1; + int iVar2; + + if (__return_storage_ptr__ == NULL) { + __return_storage_ptr__ = NULL; } - } - return __return_storage_ptr__; + else { + iVar1 = osViGetCurrentFramebuffer(); + iVar2 = osViGetNextFramebuffer(); + if (iVar2 != iVar1) { + __return_storage_ptr__ = NULL; + } + } + return __return_storage_ptr__; } @@ -686,91 +672,85 @@ OSScTask * ___scTaskReady(OSScTask *__return_storage_ptr__,OSScTask *t) s32 __scTaskComplete(OSSched *sc,OSScTask *t) { - undefined4 *puVar1; - s32 sVar2; - OSIntMask OVar3; - int iVar4; - undefined4 *puVar5; - uint uVar6; - undefined4 *puVar7; - undefined4 *puVar8; - - sVar2 = 0; - if ((t->state & 3) == 0) { - osSendMesg(t->msgQ,t->msg,1); - if (((*(int *)t->list == 1) && ((t->flags & 0x40) != 0)) && ((t->flags & 0x20) != 0)) { - if (firsttime != 0) { - osViBlack(0); - firsttime = 0; - } - iVar4 = (int)dword_800230B0[0] * 4; - if (*(int *)(&DAT_800230c4 + iVar4) != 0) { - OVar3 = osSetIntMask(0x80401); - iVar4 = (int)dword_800230B0[0] * 0x50; - puVar8 = (undefined4 *)((int)&sc.thread.context.a3 + iVar4 + 4); - puVar1 = *(undefined4 **)((int)&sc.thread.context.sp + (int)dword_800230B0[0] * 4 + 4); - do { - puVar5 = puVar1; - puVar7 = puVar8; - puVar8 = puVar7 + 3; - *puVar5 = *puVar7; - puVar5[1] = puVar7[1]; - puVar5[2] = puVar7[2]; - puVar1 = puVar5 + 3; - } while (puVar8 != (undefined4 *)((int)&sc.thread.context.s0 + iVar4 + 4)); - puVar5[3] = *puVar8; - puVar5[4] = puVar7[4]; - osSetIntMask(OVar3); - iVar4 = (int)dword_800230B0[0] << 2; - } - osViSetXScale(*(f32 *)((int)dword_800230B0 + iVar4 + 4)); - osViSetYScale((f32)dword_800230B0[(int)dword_800230B0[0] + 3]); - uVar6 = (int)dword_800230B0[0] + 1; - dword_800230B0[0] = (float)(uVar6 & 1); - if (((int)uVar6 < 0) && (dword_800230B0[0] != 0.00000000)) { - dword_800230B0[0] = (float)((int)dword_800230B0[0] + -2); - } - CheckDisplayErrorBuffer(t->framebuffer); - osViSwapBuffer(t->framebuffer); + undefined4 *puVar1; + s32 sVar2; + OSIntMask OVar3; + int iVar4; + undefined4 *puVar5; + uint uVar6; + undefined4 *puVar7; + undefined4 *puVar8; + + sVar2 = 0; + if ((t->state & 3) == 0) { + osSendMesg((OSMesgQueue *)t->msgQ,t->msg,1); + if (((*(int *)t->list == 1) && ((t->flags & 0x40) != 0)) && ((t->flags & 0x20) != 0)) { + if (firsttime != 0) { + osViBlack(0); + firsttime = 0; + } + iVar4 = (int)dword_800230B0[0] * 4; + if (*(int *)(&DAT_800230c4 + iVar4) != 0) { + OVar3 = osSetIntMask(0x80401); + iVar4 = (int)dword_800230B0[0] * 0x50; + puVar8 = (undefined4 *)(&DAT_8005db40 + iVar4); + puVar1 = *(undefined4 **)(&DAT_8005dbe0 + (int)dword_800230B0[0] * 4); + do { + puVar5 = puVar1; + puVar7 = puVar8; + puVar8 = puVar7 + 3; + *puVar5 = *puVar7; + puVar5[1] = puVar7[1]; + puVar5[2] = puVar7[2]; + puVar1 = puVar5 + 3; + } while (puVar8 != (undefined4 *)(iVar4 + -0x7ffa2478)); + puVar5[3] = *puVar8; + puVar5[4] = puVar7[4]; + osSetIntMask(OVar3); + iVar4 = (int)dword_800230B0[0] << 2; + } + osViSetXScale(*(f32 *)((int)dword_800230B0 + iVar4 + 4)); + osViSetYScale((f32)dword_800230B0[(int)dword_800230B0[0] + 3]); + uVar6 = (int)dword_800230B0[0] + 1; + dword_800230B0[0] = (float)(uVar6 & 1); + if (((int)uVar6 < 0) && (dword_800230B0[0] != 0.00000000)) { + dword_800230B0[0] = (float)((int)dword_800230B0[0] + -2); + } + CheckDisplayErrorBuffer(t->framebuffer); + osViSwapBuffer(t->framebuffer); + } + sVar2 = 1; } - sVar2 = 1; - } - return sVar2; + return sVar2; } -// WARNING: Type propagation algorithm not settling - void __scAppendList(OSSched *sc,OSScTask *t) { - OSScTask *pOVar1; - - if (*(int *)t->list == 2) { - pOVar1 = *(OSScTask **)&(sc->thread).state; - if (pOVar1 == NULL) { - *(OSScTask **)&(sc->thread).queue = t; + if (*(int *)t->list == 2) { + if (sc->audioListTail == NULL) { + sc->audioListHead = t; + } + else { + *(OSScTask **)&sc->audioListTail->next = t; + } + sc->audioListTail = t; + sc->doAudio = 1; } else { - *(OSScTask **)&pOVar1->next = t; + if (sc->gfxListTail == NULL) { + sc->gfxListHead = t; + } + else { + *(OSScTask **)&sc->gfxListTail->next = t; + } + sc->gfxListTail = t; } - *(OSScTask **)&(sc->thread).state = t; - *(undefined4 *)&(sc->thread).context.v0 = 1; - } - else { - pOVar1 = (OSScTask *)(sc->thread).id; - if (pOVar1 == NULL) { - *(OSScTask **)&(sc->thread).tlnext = t; - } - else { - *(OSScTask **)&pOVar1->next = t; - } - *(OSScTask **)&(sc->thread).id = t; - } - t->next = NULL; - t->state = t->flags & 3; - return; + t->next = NULL; + t->state = t->flags & 3; + return; } @@ -778,52 +758,51 @@ void __scAppendList(OSSched *sc,OSScTask *t) void __scExec(OSSched *sc,OSScTask *sp,OSScTask *dp) { - uint uVar1; - SCHEDTASKS type; - u64 uVar2; - u64 extraout_a1; - u64 size; - u64 uVar3; - - uVar3 = SEXT48((int)dp); - uVar2 = SEXT48((int)sp); - size = uVar2; - if (uVar2 != 0) { - type = *(SCHEDTASKS *)sp->list; - if (type == M_AUDTASK) { - osWritebackDCacheAll(); - type = *(SCHEDTASKS *)sp->list; + uint uVar1; + SCHEDTASKS type; + u64 uVar2; + u64 extraout_a1; + u64 size; + u64 uVar3; + + uVar3 = SEXT48((int)dp); + uVar2 = SEXT48((int)sp); + size = uVar2; + if (uVar2 != 0) { + type = *(SCHEDTASKS *)sp->list; + if (type == M_AUDTASK) { + osWritebackDCacheAll(); + type = *(SCHEDTASKS *)sp->list; + } + if ((type != M_AUDTASK) && ((sp->state & 0x10) == 0)) { + osDpSetStatus(0x3c0); + type = *(SCHEDTASKS *)sp->list; + } + if (type == M_AUDTASK) { + video_related_3((uint)&DAT_00030001); + uVar1 = sp->state; + } + else { + video_related_3(0x40001); + video_related_3(0x20002); + uVar1 = sp->state; + } + sp->state = uVar1 & 0xffffffcf; + osSpTaskLoad((OSTask *)sp->list); + osSpTaskStartGo((OSTask *)sp->list); + sc->curRSPTask = sp; + size = extraout_a1; + if (uVar2 == uVar3) { + sc->curRDPTask = dp; + } } - if ((type != M_AUDTASK) && ((sp->state & 0x10) == 0)) { - osDpSetStatus(0x3c0); - type = *(SCHEDTASKS *)sp->list; + if ((uVar3 != 0) && (uVar3 != uVar2)) { + osDpSetNextBuffer(*(void **)(dp->list + 0x28),size); + dp_busy = 1; + dpCount = 0; + sc->curRDPTask = dp; } - if (type == M_AUDTASK) { - video_related_3((uint)&DAT_00030001); - uVar1 = sp->state; - } - else { - video_related_3(0x40001); - video_related_3(0x20002); - uVar1 = sp->state; - } - sp->state = uVar1 & 0xffffffcf; - osSpTaskLoad((OSTask *)sp->list); - osSpTaskStartGo((OSTask *)sp->list); - *(OSScTask **)&(sc->thread).fp = sp; - size = extraout_a1; - if (uVar2 == uVar3) { - *(OSScTask **)&(sc->thread).context.at = dp; - size = extraout_a1; - } - } - if ((uVar3 != 0) && (uVar3 != uVar2)) { - osDpSetNextBuffer(*(void **)(dp->list + 0x28),size); - dp_busy = 1; - dpCount = 0; - *(OSScTask **)&(sc->thread).context.at = dp; - } - return; + return; } @@ -831,14 +810,14 @@ void __scExec(OSSched *sc,OSScTask *sp,OSScTask *dp) void __scYield(OSSched *sc) { - int iVar1; - - iVar1 = (sc->thread).fp; - if (*(int *)(iVar1 + 0x10) == 1) { - *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | 0x10; - osSpTaskYield(); - } - return; + OSScTask *pOVar1; + + pOVar1 = sc->curRSPTask; + if (*(int *)pOVar1->list == 1) { + pOVar1->state = pOVar1->state | 0x10; + osSpTaskYield(); + } + return; } @@ -846,110 +825,102 @@ void __scYield(OSSched *sc) s32 __scSchedule(OSSched *sc,OSScTask **sp,OSScTask **dp,s32 availRCP) { - OSThread_s **ppOVar1; - OSThread_s *pOVar2; - bool bVar3; - OSScTask *pOVar4; - uint avail; - OSScTask *gfx; - - do { - gfx = (OSScTask *)(sc->thread).tlnext; - pOVar4 = (OSScTask *)(sc->thread).queue; - if ((*(int *)&(sc->thread).context.v0 == 0) || ((availRCP & 2U) == 0)) { - pOVar4 = ___scTaskReady(gfx,(OSScTask *)sp); - avail = availRCP; - if ((pOVar4 != NULL) && (avail = availRCP, true)) { - avail = availRCP; - switch(gfx->flags & 7) { - case 2: - case 6: - case 7: - if ((gfx->state & 2) == 0) { + OSScTask_s *pOVar1; + bool bVar2; + OSScTask *pOVar3; + uint avail; + OSScTask *gfx; + + do { + gfx = sc->gfxListHead; + if ((sc->doAudio == 0) || ((availRCP & 2U) == 0)) { + pOVar3 = ___scTaskReady(gfx,(OSScTask *)sp); avail = availRCP; - if (((gfx->state & 1) != 0) && (avail = availRCP, (availRCP & 1U) != 0)) { - *dp = gfx; - avail = availRCP & 0xfffffffe; - pOVar2 = ((sc->thread).tlnext)->next; - (sc->thread).tlnext = pOVar2; - if (pOVar2 == NULL) { - (sc->thread).id = 0; - } + if ((pOVar3 != NULL) && (true)) { + switch(gfx->flags & 7) { + case 2: + case 6: + case 7: + if ((gfx->state & 2) == 0) { + if (((gfx->state & 1) != 0) && ((availRCP & 1U) != 0)) { + *dp = gfx; + avail = availRCP & 0xfffffffe; + pOVar1 = sc->gfxListHead->next; + *(OSScTask_s **)&sc->gfxListHead = pOVar1; + if (pOVar1 == NULL) { + sc->gfxListTail = NULL; + } + } + } + else { + if ((availRCP & 2U) != 0) { + *sp = gfx; + avail = availRCP & 0xfffffffd; + } + } + break; + case 3: + if ((gfx->state & 0x20) == 0) { + if (availRCP == 3) { + *dp = gfx; + *sp = gfx; + avail = 0; + pOVar1 = sc->gfxListHead->next; + *(OSScTask_s **)&sc->gfxListHead = pOVar1; + if (pOVar1 == NULL) { + sc->gfxListTail = NULL; + } + } + } + else { + if ((availRCP & 2U) != 0) { + *sp = gfx; + avail = availRCP & 0xfffffffd; + if ((gfx->state & 1) == 0) { + pOVar3 = sc->gfxListHead; + } + else { + *dp = gfx; + avail = availRCP & 0xfffffffc; + pOVar3 = sc->gfxListHead; + } + pOVar1 = pOVar3->next; + *(OSScTask_s **)&sc->gfxListHead = pOVar1; + if (pOVar1 == NULL) { + sc->gfxListTail = NULL; + } + } + } + } } - } - else { - avail = availRCP; - if ((availRCP & 2U) != 0) { - *sp = gfx; - avail = availRCP & 0xfffffffd; - } - } - break; - case 3: - if ((gfx->state & 0x20) == 0) { - avail = availRCP; - if (availRCP == 3) { - *dp = gfx; - *sp = gfx; - avail = 0; - pOVar2 = ((sc->thread).tlnext)->next; - (sc->thread).tlnext = pOVar2; - if (pOVar2 == NULL) { - (sc->thread).id = 0; - } - } - } - else { - avail = availRCP; - if ((availRCP & 2U) != 0) { - *sp = gfx; - avail = availRCP & 0xfffffffd; - if ((gfx->state & 1) == 0) { - pOVar2 = (sc->thread).tlnext; - } - else { - *dp = gfx; - avail = availRCP & 0xfffffffc; - pOVar2 = (sc->thread).tlnext; - } - pOVar2 = pOVar2->next; - (sc->thread).tlnext = pOVar2; - if (pOVar2 == NULL) { - (sc->thread).id = 0; - } - } - } } - } - } - else { - if (gfx == NULL) { - *sp = pOVar4; - } - else { - avail = availRCP & 0xfffffffd; - if ((gfx->flags & 0x10) != 0) { - *sp = gfx; - goto switchD_70001674_caseD_1; + else { + if (gfx == NULL) { + *sp = sc->audioListHead; + } + else { + avail = availRCP & 0xfffffffd; + if ((gfx->flags & 0x10) != 0) { + *sp = gfx; + goto switchD_70001674_caseD_1; + } + *sp = sc->audioListHead; + } + sc->doAudio = 0; + avail = availRCP & 0xfffffffd; + pOVar1 = sc->audioListHead->next; + *(OSScTask_s **)&sc->audioListHead = pOVar1; + if (pOVar1 == NULL) { + sc->audioListTail = NULL; + } } - *sp = pOVar4; - } - ppOVar1 = (sc->thread).queue; - *(undefined4 *)&(sc->thread).context.v0 = 0; - avail = availRCP & 0xfffffffd; - pOVar2 = *ppOVar1; - *(OSThread_s **)&(sc->thread).queue = pOVar2; - if (pOVar2 == NULL) { - *(undefined4 *)&(sc->thread).state = 0; - } - } switchD_70001674_caseD_1: - bVar3 = avail == availRCP; - availRCP = avail; - if (bVar3) { - return (s32)avail; - } - } while( true ); + bVar2 = avail == availRCP; + availRCP = avail; + if (bVar2) { + return (s32)avail; + } + } while( true ); } @@ -957,14 +928,14 @@ switchD_70001674_caseD_1: void osMapTLBRdb(void) { - setCopReg(0,Index,0,0); - setCopReg(0,PageMask,0,0); - setCopReg(0,CONCAT44(uRegister00002050,EntryHi),0xffffffffc0000000,0); - setCopReg(0,EntryLo0,0x2000017,0); - setCopReg(0,EntryLo1,1,0); - TLB_write_indexed_entry(Index,CONCAT44(uRegister00002050,EntryHi),EntryLo0,EntryLo1,PageMask); - setCopReg(0,CONCAT44(uRegister00002050,EntryHi),(longlong)EntryHi,0); - return; + setCopReg(0,Index,0,0); + setCopReg(0,PageMask,0,0); + setCopReg(0,CONCAT44(uRegister00002050,EntryHi),0xffffffffc0000000,0); + setCopReg(0,EntryLo0,0x2000017,0); + setCopReg(0,EntryLo1,1,0); + TLB_write_indexed_entry(Index,CONCAT44(uRegister00002050,EntryHi),EntryLo0,EntryLo1,PageMask); + setCopReg(0,CONCAT44(uRegister00002050,EntryHi),(longlong)EntryHi,0); + return; } @@ -972,35 +943,35 @@ void osMapTLBRdb(void) void establish_TLB_buffer_management_table(void) { - undefined4 *puVar1; - - puVar1 = (undefined4 *)TLB_managment_table; - do { - puVar1 = puVar1 + 4; - *puVar1 = 1; - puVar1[1] = 0; - puVar1 = puVar1; - } while (puVar1 < TLB_manager_mapping_table); - TLB_manager_mapping_table[1] = 0; - TLB_manager_mapping_table[0] = 1; - TLB_manager_mapping_table[3] = 0; - TLB_manager_mapping_table[2] = 1; - puVar1 = (undefined4 *)(TLB_manager_mapping_table + 4); - do { - puVar1 = puVar1 + 2; - *(undefined *)((int)puVar1 + 3) = 0; - *(undefined *)((int)puVar1 + 2) = 1; - *(undefined *)((int)puVar1 + 5) = 0; - *(undefined *)(puVar1 + 1) = 1; - *(undefined *)((int)puVar1 + 7) = 0; - *(undefined *)((int)puVar1 + 6) = 1; - *(undefined *)((int)puVar1 + 1) = 0; - *(undefined *)puVar1 = 1; - puVar1 = puVar1; - } while (puVar1 != &TLB_manager_mapping_table_end); - TLB_manager_mapping_table_end = 0x7fc65bf0; - ptr_TLBallocatedblock = (undefined *)0x802f6000; - return; + undefined4 *puVar1; + + puVar1 = (undefined4 *)TLB_managment_table; + do { + puVar1 = puVar1 + 4; + *puVar1 = 1; + puVar1[1] = 0; + puVar1 = puVar1; + } while (puVar1 < TLB_manager_mapping_table); + TLB_manager_mapping_table[1] = 0; + TLB_manager_mapping_table[0] = 1; + TLB_manager_mapping_table[3] = 0; + TLB_manager_mapping_table[2] = 1; + puVar1 = (undefined4 *)(TLB_manager_mapping_table + 4); + do { + puVar1 = puVar1 + 2; + *(undefined *)((int)puVar1 + 3) = 0; + *(undefined *)((int)puVar1 + 2) = 1; + *(undefined *)((int)puVar1 + 5) = 0; + *(undefined *)(puVar1 + 1) = 1; + *(undefined *)((int)puVar1 + 7) = 0; + *(undefined *)((int)puVar1 + 6) = 1; + *(undefined *)((int)puVar1 + 1) = 0; + *(undefined *)puVar1 = 1; + puVar1 = puVar1; + } while (puVar1 != &TLB_manager_mapping_table_end); + TLB_manager_mapping_table_end = 0x7fc65bf0; + ptr_TLBallocatedblock = (undefined *)0x802f6000; + return; } @@ -1008,11 +979,11 @@ void establish_TLB_buffer_management_table(void) u32 mp_tlb_related(void) { - u32 uVar1; - - uVar1 = maybe_cur_TLB_entries; - maybe_cur_TLB_entries = 0; - return uVar1; + u32 uVar1; + + uVar1 = maybe_cur_TLB_entries; + maybe_cur_TLB_entries = 0; + return uVar1; } @@ -1020,18 +991,18 @@ u32 mp_tlb_related(void) s32 return_TLB_index_for_entry(int param_1) { - u32 uVar1; - s32 index; - - index = 0; - do { - uVar1 = __osGetTLBHi(index); - if (uVar1 == param_1) { - return index; - } - index += 1; - } while (index != 0x20); - return -0x80000000; + u32 uVar1; + s32 index; + + index = 0; + do { + uVar1 = __osGetTLBHi(index); + if (uVar1 == param_1) { + return index; + } + index += 1; + } while (index != 0x20); + return -0x80000000; } @@ -1039,13 +1010,13 @@ s32 return_TLB_index_for_entry(int param_1) void find_remove_TLB_entry(int entry) { - s32 index; - - index = return_TLB_index_for_entry(entry); - if (-1 < index) { - osUnmapTLB(index); - } - return; + s32 index; + + index = return_TLB_index_for_entry(entry); + if (-1 < index) { + osUnmapTLB(index); + } + return; } @@ -1053,20 +1024,20 @@ void find_remove_TLB_entry(int entry) void remove_TLB_entry_from_table(int param_1) { - s32 index; - - param_1 *= 2; - if (TLB_manager_mapping_table[param_1] == '\0') { - index = return_TLB_index_for_entry - ((uint)(byte)TLB_manager_mapping_table[param_1 + 1] << 0xd | 0x7f000000); - if (-1 < index) { - osUnmapTLB(index); + s32 index; + + param_1 *= 2; + if (TLB_manager_mapping_table[param_1] == '\0') { + index = return_TLB_index_for_entry + ((uint)(byte)TLB_manager_mapping_table[param_1 + 1] << 0xd | 0x7f000000); + if (-1 < index) { + osUnmapTLB(index); + } + *(undefined4 *) + (TLB_managment_table + (uint)(byte)TLB_manager_mapping_table[param_1 + 1] * 0x10) = 1; + TLB_manager_mapping_table[param_1] = '\x01'; } - *(undefined4 *)(TLB_managment_table + (uint)(byte)TLB_manager_mapping_table[param_1 + 1] * 0x10) - = 1; - TLB_manager_mapping_table[param_1] = '\x01'; - } - return; + return; } @@ -1074,30 +1045,30 @@ void remove_TLB_entry_from_table(int param_1) void translate_load_rom_from_TLBaddress(void *address) { - uint randval; - u32 uVar1; - char *src; - uint uVar2; - int iVar3; - - maybe_cur_TLB_entries += 1; - find_remove_TLB_entry((uint)address & 0x7fffe000); - randval = return_tlb_random_value(); - randval %= 0x5a; - tlb_segment_num = randval; - remove_TLB_entry_from_table(randval); - src = ptr_TLBallocatedblock + randval * 0x2000; - romCopy(src,(char *)(((uint)address & 0xffe000) + 0x34b30),0x2000); - osInvalICache((void *)0x40000000,0x40000000); - osInvalICache(&UT_VEC,0x10000000); - uVar2 = ((uint)address & 0xffe000) >> 0xd; - iVar3 = uVar2 * 0x10; - *(uint *)(TLB_managment_table + iVar3 + 4) = randval; - uVar1 = osVirtualToPhysical(src); - TLB_manager_mapping_table[randval * 2] = 0; - TLB_manager_mapping_table[randval * 2 + 1] = (char)uVar2; - *(u32 *)(TLB_managment_table + iVar3) = (uVar1 >> 0xc) << 6 | 0x1f; - return; + uint randval; + u32 uVar1; + char *src; + uint uVar2; + int iVar3; + + maybe_cur_TLB_entries += 1; + find_remove_TLB_entry((uint)address & 0x7fffe000); + randval = return_tlb_random_value(); + randval %= 0x5a; + tlb_segment_num = randval; + remove_TLB_entry_from_table(randval); + src = ptr_TLBallocatedblock + randval * 0x2000; + romCopy(src,(char *)(((uint)address & 0xffe000) + 0x34b30),0x2000); + osInvalICache((void *)0x40000000,0x40000000); + osInvalICache(&UT_VEC,0x10000000); + uVar2 = ((uint)address & 0xffe000) >> 0xd; + iVar3 = uVar2 * 0x10; + *(uint *)(TLB_managment_table + iVar3 + 4) = randval; + uVar1 = osVirtualToPhysical(src); + TLB_manager_mapping_table[randval * 2] = 0; + TLB_manager_mapping_table[randval * 2 + 1] = (char)uVar2; + *(u32 *)(TLB_managment_table + iVar3) = (uVar1 >> 0xc) << 6 | 0x1f; + return; } @@ -1105,7 +1076,7 @@ void translate_load_rom_from_TLBaddress(void *address) undefined * getptr_TLBallocatedblock(void) { - return ptr_TLBallocatedblock; + return ptr_TLBallocatedblock; } @@ -1113,11 +1084,11 @@ undefined * getptr_TLBallocatedblock(void) u32 return_tlb_random_value(void) { - tlb_random_seed = - ((tlb_random_seed << 0x3f) >> 0x1f | (tlb_random_seed << 0x1f) >> 0x20) ^ - (tlb_random_seed << 0x2c) >> 0x20; - tlb_random_seed = tlb_random_seed >> 0x14 & 0xfff ^ tlb_random_seed; - return (u32)tlb_random_seed; + tlb_random_seed = + ((tlb_random_seed << 0x3f) >> 0x1f | (tlb_random_seed << 0x1f) >> 0x20) ^ + (tlb_random_seed << 0x2c) >> 0x20; + tlb_random_seed = tlb_random_seed >> 0x14 & 0xfff ^ tlb_random_seed; + return (u32)tlb_random_seed; } @@ -1125,11 +1096,11 @@ u32 return_tlb_random_value(void) void resolve_TLBaddress_for_InvalidHit(void) { - setCopReg(0,PageMask,0,0); - setCopReg(0,EntryLo0,(longlong)*(int *)(Context + TLB_manager_mapping_table_end),0); - setCopReg(0,EntryLo1,(longlong)(*(int *)(Context + TLB_manager_mapping_table_end) + 0x40),0); - TLB_write_random_entry(Random,EntryHi,EntryLo0,EntryLo1,PageMask); - return; + setCopReg(0,PageMask,0,0); + setCopReg(0,EntryLo0,(longlong)*(int *)(Context + TLB_manager_mapping_table_end),0); + setCopReg(0,EntryLo1,(longlong)(*(int *)(Context + TLB_manager_mapping_table_end) + 0x40),0); + TLB_write_random_entry(Random,EntryHi,EntryLo0,EntryLo1,PageMask); + return; } @@ -1137,9 +1108,9 @@ void resolve_TLBaddress_for_InvalidHit(void) void set_hardwire_TLB_to_2(void) { - setCopReg(0,Wired,2,0); - setCopReg(0,Context,0,0); - return; + setCopReg(0,Wired,2,0); + setCopReg(0,Context,0,0); + return; } @@ -1147,128 +1118,128 @@ void set_hardwire_TLB_to_2(void) void amCreateAudioMgr(ALSynConfig *c,OSPri priority,amConfig *amc) { - AudioInfo **ppAVar1; - Acmd **ppAVar2; - undefined4 *puVar3; - AMDMABuffer *pAVar4; - s32 sVar7; - longlong lVar5; - ulonglong uVar6; - void *sp; - longlong lVar8; - undefined4 *puVar9; - AMAudioMgr *pAVar10; - AMDMABuffer *a; - AMDMABuffer *b; - int iVar11; - float fVar12; - uint uVar13; - float fVar14; - s32 asStack208 [52]; - - *(code **)&c->dmaproc = __amDmaNew; - sVar7 = osAiSetFrequency(0x5622); - lVar5 = (longlong)sVar7; - c->outputRate = sVar7; - fVar12 = (float)(sVar7 << 1) / 60.00000000; - if (false) { - fVar14 = ROUND(fVar12); - } - else { - fVar14 = FLOOR(fVar12); - } - uVar13 = (uint)fVar14; - if (true) { - if (-1 < (int)uVar13) goto LAB_70001cac; - } - else { + AudioInfo **ppAVar1; + Acmd **ppAVar2; + undefined4 *puVar3; + AMDMABuffer *pAVar4; + s32 sVar7; + longlong lVar5; + ulonglong uVar6; + void *sp; + longlong lVar8; + undefined4 *puVar9; + AMAudioMgr *pAVar10; + AMDMABuffer *a; + AMDMABuffer *b; + int iVar11; + float fVar12; + uint uVar13; + float fVar14; + s32 asStack208 [52]; + + *(code **)&c->dmaproc = __amDmaNew; + sVar7 = osAiSetFrequency(0x5622); + lVar5 = (longlong)sVar7; + c->outputRate = sVar7; + fVar12 = (float)(sVar7 << 1) / 60.00000000; if (false) { - fVar14 = ROUND(fVar12 - 2147483648.00000000); + fVar14 = ROUND(fVar12); } else { - fVar14 = FLOOR(fVar12 - 2147483648.00000000); + fVar14 = FLOOR(fVar12); } + uVar13 = (uint)fVar14; if (true) { - uVar13 = (int)fVar14 | 0x80000000; - goto LAB_70001cac; + if (-1 < (int)uVar13) goto LAB_70001cac; } - } - uVar13 = 0xffffffff; + else { + if (false) { + fVar14 = ROUND(fVar12 - 2147483648.00000000); + } + else { + fVar14 = FLOOR(fVar12 - 2147483648.00000000); + } + if (true) { + uVar13 = (int)fVar14 | 0x80000000; + goto LAB_70001cac; + } + } + uVar13 = 0xffffffff; LAB_70001cac: - fVar14 = (float)uVar13; - if ((int)uVar13 < 0) { - fVar14 = fVar14 + 4294967296.00000000; - } - frameSize = uVar13 + 1; - if (fVar12 <= fVar14) { - frameSize = uVar13; - } - if ((frameSize & 0xf) != 0) { - frameSize = (frameSize & 0xfffffff0) + 0x10; - } - minFrameSize = frameSize - 0x10; - maxFrameSize = frameSize + 0x35; - if (c->fxType == '\x06') { - lVar5 = (longlong)(int)asStack208; - lVar8 = lVar5; - puVar3 = &dword_80023100; + fVar14 = (float)uVar13; + if ((int)uVar13 < 0) { + fVar14 = fVar14 + 4294967296.00000000; + } + frameSize = uVar13 + 1; + if (fVar12 <= fVar14) { + frameSize = uVar13; + } + if ((frameSize & 0xf) != 0) { + frameSize = (frameSize & 0xfffffff0) + 0x10; + } + minFrameSize = frameSize - 0x10; + maxFrameSize = frameSize + 0x35; + if (c->fxType == '\x06') { + lVar5 = (longlong)(int)asStack208; + lVar8 = lVar5; + puVar3 = &dword_80023100; + do { + puVar9 = puVar3; + lVar8._4_4_ = (undefined4 *)lVar8; + lVar8 = (longlong)(int)(lVar8._4_4_ + 3); + *lVar8._4_4_ = *puVar9; + lVar8._4_4_[1] = puVar9[1]; + lVar8._4_4_[2] = puVar9[2]; + puVar3 = puVar9 + 3; + } while (puVar9 + 3 != (undefined4 *)0x800231c0); + lVar8._4_4_[3] = uRam800231c0; + lVar8._4_4_[4] = puVar9[4]; + c->params = asStack208; + alInit((ALGlobals *)&_am.g.drvr.pFreeList.prev,c); + } + else { + alInit((ALGlobals *)&_am.g.drvr.pFreeList.prev,c); + } + pAVar10 = &_am; do { - puVar9 = puVar3; - lVar8._4_4_ = (undefined4 *)lVar8; - lVar8 = (longlong)(int)(lVar8._4_4_ + 3); - *lVar8._4_4_ = *puVar9; - lVar8._4_4_[1] = puVar9[1]; - lVar8._4_4_[2] = puVar9[2]; - puVar3 = puVar9 + 3; - } while (puVar9 + 3 != (undefined4 *)0x800231c0); - lVar8._4_4_[3] = uRam800231c0; - lVar8._4_4_[4] = puVar9[4]; - c->params = asStack208; - alInit((ALGlobals *)&_am.g.drvr.pFreeList.prev,c); - } - else { - alInit((ALGlobals *)&_am.g.drvr.pFreeList.prev,c); - } - pAVar10 = &_am; - do { - _alHeapDBAlloc(NULL,0,c->heap,1,0x60); - iVar11 = maxFrameSize; - pAVar10->audioInfo[0] = (AudioInfo *)lVar5; - _alHeapDBAlloc(NULL,0,c->heap,1,iVar11 << 2); - ppAVar1 = pAVar10->audioInfo; - pAVar10 = (AMAudioMgr *)(pAVar10->ACMDList + 1); - (*ppAVar1)->data = (short *)lVar5; - } while (pAVar10 < (AMAudioMgr *)0x8005e524); - osCreateMesgQueue((OSMesgQueue *)&_am.audioReplyMsgQ.validCount,_am.audioReplyMsgBuf + 2,8); - osCreateMesgQueue((OSMesgQueue *)&_am.audioFrameMsgQ.validCount,_am.audioFrameMsgBuf + 2,8); - osCreateMesgQueue(&audDMAMessageQ,audDMAMessageBuf,0x40); - uVar6 = ZEXT48(dmaBuffs); - dmaBuffs[0].node.prev = NULL; - dmaBuffs[0].node.next = NULL; - a = dmaBuffs; - iVar11 = 0; - pAVar4 = dmaBuffs; - do { - b = pAVar4; - a = a + 1; - alLink((ALLink *)a,(ALLink *)b); + _alHeapDBAlloc(NULL,0,c->heap,1,0x60); + iVar11 = maxFrameSize; + pAVar10->audioInfo[0] = (AudioInfo *)lVar5; + _alHeapDBAlloc(NULL,0,c->heap,1,iVar11 << 2); + ppAVar1 = pAVar10->audioInfo; + pAVar10 = (AMAudioMgr *)(pAVar10->ACMDList + 1); + (*ppAVar1)->data = (short *)lVar5; + } while (pAVar10 < (AMAudioMgr *)0x8005e524); + osCreateMesgQueue((OSMesgQueue *)&_am.audioReplyMsgQ.validCount,_am.audioReplyMsgBuf + 2,8); + osCreateMesgQueue((OSMesgQueue *)&_am.audioFrameMsgQ.validCount,_am.audioFrameMsgBuf + 2,8); + osCreateMesgQueue(&audDMAMessageQ,audDMAMessageBuf,0x40); + uVar6 = ZEXT48(dmaBuffs); + dmaBuffs[0].node.prev = NULL; + dmaBuffs[0].node.next = NULL; + a = dmaBuffs; + iVar11 = 0; + pAVar4 = dmaBuffs; + do { + b = pAVar4; + a = a + 1; + alLink((ALLink *)a,(ALLink *)b); + _alHeapDBAlloc(NULL,0,c->heap,1,0x200); + iVar11 += 1; + b->ptr = (char *)uVar6; + pAVar4 = b + 1; + } while (iVar11 < 0x3f); _alHeapDBAlloc(NULL,0,c->heap,1,0x200); - iVar11 += 1; - b->ptr = (char *)uVar6; - pAVar4 = b + 1; - } while (iVar11 < 0x3f); - _alHeapDBAlloc(NULL,0,c->heap,1,0x200); - b[1].ptr = (char *)uVar6; - pAVar10 = &_am; - do { - _alHeapDBAlloc(NULL,0,c->heap,1,24000); - ppAVar2 = pAVar10->ACMDList; - pAVar10->ACMDList[0] = (Acmd *)uVar6; - pAVar10 = (AMAudioMgr *)(ppAVar2 + 1); - } while ((AMAudioMgr *)(ppAVar2 + 1) != (AMAudioMgr *)_am.audioInfo); - sp = set_stack_entry(&sp_audi,0x1000); - osCreateThread((OSThread *)&_am.thread.priority,4,_amMain,NULL,sp,0x14); - return; + b[1].ptr = (char *)uVar6; + pAVar10 = &_am; + do { + _alHeapDBAlloc(NULL,0,c->heap,1,24000); + ppAVar2 = pAVar10->ACMDList; + pAVar10->ACMDList[0] = (Acmd *)uVar6; + pAVar10 = (AMAudioMgr *)(ppAVar2 + 1); + } while ((AMAudioMgr *)(ppAVar2 + 1) != (AMAudioMgr *)_am.audioInfo); + sp = set_stack_entry(&sp_audi,0x1000); + osCreateThread((OSThread *)&_am.thread.priority,4,_amMain,NULL,sp,0x14); + return; } @@ -1276,8 +1247,8 @@ LAB_70001cac: void startaudithread(void) { - osStartThread((OSThread *)&_am.thread.priority); - return; + osStartThread((OSThread *)&_am.thread.priority); + return; } @@ -1287,83 +1258,84 @@ void startaudithread(void) void _amMain(void) { - short sVar1; - OSTime OVar2; - ulonglong uVar3; - undefined4 in_v1_hi; - uint in_v1_lo; - uint uVar4; - int iVar5; - uint uStack48; - uint uStack44; - AudioMsg *msg; - OSMesg *local_c; - bool done; - - iVar5 = 0; - done = false; - local_c = NULL; - msg = NULL; - osScAddClient(&sc,&audi_client,(OSMesgQueue *)&_am.audioFrameMsgQ.validCount); - do { - osRecvMesg((OSMesgQueue *)&_am.audioFrameMsgQ.validCount,&local_c,1); - sVar1 = *(short *)local_c; - if (sVar1 == 1) { - OVar2 = osGetTime(); - OSTime_8005e4d8._0_4_ = (int)OVar2; - OSTime_8005e4d8._4_4_ = in_v1_lo; - video_related_3(0x30000); - __amHandleFrameMsg(_am.audioInfo[audFrameCt % 3],(AudioInfo *)msg); - iVar5 += 1; - video_related_3(0x60000); - OVar2 = osGetTime(); - OSTime_8005e4e0._0_4_ = (int)OVar2; - OSTime_8005e4c0._0_4_ = - (OSTime_8005e4e0._0_4_ - OSTime_8005e4d8._0_4_) - - (uint)(CONCAT44(in_v1_hi,in_v1_lo) < (ulonglong)(longlong)(int)OSTime_8005e4d8._4_4_); - OSTime_8005e4c0._4_4_ = in_v1_lo - OSTime_8005e4d8._4_4_; - if (iVar5 % 0xf0 == 0) { - OSTime_8005e4e0._4_4_ = in_v1_lo; - uVar3 = __ull_div(DAT_8005e4d0,DAT_8005e4d4,0,0xf0); - DAT_8005e4c8 = (undefined4)uVar3; - uStack48 = (OSTime_8005e4e0._0_4_ - OSTime_8005e4d8._0_4_) - - (uint)(OSTime_8005e4e0._4_4_ < OSTime_8005e4d8._4_4_); - uStack44 = OSTime_8005e4e0._4_4_ - OSTime_8005e4d8._4_4_; - DAT_8005e4bc = 0; - DAT_8005e4b8 = 0; - DAT_8005e4d4 = 0; - DAT_8005e4d0 = 0; - DAT_8005e4cc = in_v1_lo; - } - else { - uVar4 = DAT_8005e4d4 + in_v1_lo; - DAT_8005e4d0 = (((uint)(uVar4 < in_v1_lo) + DAT_8005e4d0 + OSTime_8005e4e0._0_4_) - - OSTime_8005e4d8._0_4_) - (uint)(uVar4 < OSTime_8005e4d8._4_4_); - DAT_8005e4d4 = uVar4 - OSTime_8005e4d8._4_4_; - OSTime_8005e4e0._4_4_ = in_v1_lo; - uStack48 = OSTime_8005e4c0._0_4_; - uStack44 = OSTime_8005e4c0._4_4_; - } - if ((DAT_8005e4b8 <= uStack48) && ((DAT_8005e4b8 < uStack48 || (DAT_8005e4bc < uStack44)))) { - DAT_8005e4b8 = uStack48; - DAT_8005e4bc = uStack44; - } - osRecvMesg((OSMesgQueue *)&_am.audioReplyMsgQ.validCount,&msg,1); - __amHandleDoneMsg((AudioInfo *)msg); - } - else { - if (sVar1 == 5) { - done = true; - } - else { - if (sVar1 == 10) { - done = true; + short sVar1; + OSTime OVar2; + ulonglong uVar3; + undefined4 in_v1_hi; + uint in_v1_lo; + uint uVar4; + int iVar5; + uint uStack48; + uint uStack44; + AudioMsg *msg; + OSMesg *local_c; + bool done; + + iVar5 = 0; + done = false; + local_c = NULL; + msg = NULL; + osScAddClient(&sc,&audi_client,(OSMesgQueue *)&_am.audioFrameMsgQ.validCount); + do { + osRecvMesg((OSMesgQueue *)&_am.audioFrameMsgQ.validCount,&local_c,1); + sVar1 = *(short *)local_c; + if (sVar1 == 1) { + OVar2 = osGetTime(); + OSTime_8005e4d8._0_4_ = (int)OVar2; + OSTime_8005e4d8._4_4_ = in_v1_lo; + video_related_3(0x30000); + __amHandleFrameMsg(_am.audioInfo[audFrameCt % 3],(AudioInfo *)msg); + iVar5 += 1; + video_related_3(0x60000); + OVar2 = osGetTime(); + OSTime_8005e4e0._0_4_ = (int)OVar2; + OSTime_8005e4c0._0_4_ = + (OSTime_8005e4e0._0_4_ - OSTime_8005e4d8._0_4_) - + (uint)(CONCAT44(in_v1_hi,in_v1_lo) < + (ulonglong)(longlong)(int)OSTime_8005e4d8._4_4_); + OSTime_8005e4c0._4_4_ = in_v1_lo - OSTime_8005e4d8._4_4_; + OSTime_8005e4e0._4_4_ = in_v1_lo; + if (iVar5 % 0xf0 == 0) { + uVar3 = __ull_div(DAT_8005e4d0,DAT_8005e4d4,0,0xf0); + DAT_8005e4c8 = (undefined4)uVar3; + uStack48 = (OSTime_8005e4e0._0_4_ - OSTime_8005e4d8._0_4_) - + (uint)(OSTime_8005e4e0._4_4_ < OSTime_8005e4d8._4_4_); + uStack44 = OSTime_8005e4e0._4_4_ - OSTime_8005e4d8._4_4_; + DAT_8005e4bc = 0; + DAT_8005e4b8 = 0; + DAT_8005e4d4 = 0; + DAT_8005e4d0 = 0; + DAT_8005e4cc = in_v1_lo; + } + else { + uVar4 = DAT_8005e4d4 + in_v1_lo; + DAT_8005e4d0 = (((uint)(uVar4 < in_v1_lo) + DAT_8005e4d0 + OSTime_8005e4e0._0_4_) - + OSTime_8005e4d8._0_4_) - (uint)(uVar4 < OSTime_8005e4d8._4_4_); + DAT_8005e4d4 = uVar4 - OSTime_8005e4d8._4_4_; + uStack48 = OSTime_8005e4c0._0_4_; + uStack44 = OSTime_8005e4c0._4_4_; + } + if ((DAT_8005e4b8 <= uStack48) && + ((DAT_8005e4b8 < uStack48 || (DAT_8005e4bc < uStack44)))) { + DAT_8005e4b8 = uStack48; + DAT_8005e4bc = uStack44; + } + osRecvMesg((OSMesgQueue *)&_am.audioReplyMsgQ.validCount,&msg,1); + __amHandleDoneMsg((AudioInfo *)msg); } - } - } - } while (!done); - alClose((ALGlobals *)&_am.g.drvr.pFreeList.prev); - return; + else { + if (sVar1 == 5) { + done = true; + } + else { + if (sVar1 == 10) { + done = true; + } + } + } + } while (!done); + alClose((ALGlobals *)&_am.g.drvr.pFreeList.prev); + return; } @@ -1371,45 +1343,46 @@ void _amMain(void) u32 __amHandleFrameMsg(AudioInfo *info,AudioInfo *lastInfo) { - short sVar1; - s16 *outBuf; - uint samplesleft; - Acmd AVar2; - OSMesgQueue *sched_cmdQ; - u32 uVar3; - - __clearAudioDMA(); - outBuf = (s16 *)osVirtualToPhysical(info->data); - if (lastInfo != NULL) { - osAiSetNextBuffer(lastInfo->data,(int)lastInfo->frameSamples << 2); - } - samplesleft = osAiGetLength(); - info->frameSamples = ((short)frameSize - (short)(samplesleft >> 2)) + 0x35U & 0xfff0; - sVar1 = info->frameSamples; - if ((longlong)sVar1 < (longlong)(int)(short)minFrameSize) { - info->frameSamples = (short)minFrameSize; + short sVar1; + s16 *outBuf; + uint samplesleft; + Acmd *pAVar2; + OSMesgQueue *sched_cmdQ; + u32 uVar3; + + __clearAudioDMA(); + outBuf = (s16 *)osVirtualToPhysical(info->data); + if (lastInfo != NULL) { + osAiSetNextBuffer(lastInfo->data,(int)lastInfo->frameSamples << 2); + } + samplesleft = osAiGetLength(); + info->frameSamples = ((short)frameSize - (short)(samplesleft >> 2)) + 0x35U & 0xfff0; sVar1 = info->frameSamples; - } - AVar2 = _alAudioFrame(_am.ACMDList[curAcmdList],(s32 *)&cmdLen,outBuf,(int)sVar1); - (info->task).next = NULL; - (info->task).msgQ = (OSMesgQueue *)&_am.audioReplyMsgQ.validCount; - *(AudioInfo **)&(info->task).msg = info; - (info->task).flags = 2; - *(Acmd **)((info->task).list + 0x30) = _am.ACMDList[curAcmdList]; - *(int *)((info->task).list + 0x34) = ((int)AVar2 - (int)_am.ACMDList[curAcmdList] >> 3) << 3; - *(undefined4 *)(info->task).list = 2; - *(undefined4 *)((info->task).list + 8) = 0x80020d90; - *(undefined4 *)((info->task).list + 0xc) = 0xd0; - *(undefined4 *)((info->task).list + 4) = 0; - *(undefined4 *)((info->task).list + 0x10) = 0x80022280; - *(undefined4 *)((info->task).list + 0x18) = 0x8005d020; - *(undefined4 *)((info->task).list + 0x1c) = 0x800; - *(undefined4 *)((info->task).list + 0x38) = 0; - *(undefined4 *)((info->task).list + 0x3c) = 0; - sched_cmdQ = osScGetCmdQ(&sc); - uVar3 = osSendMesg(sched_cmdQ,&info->task,0); - curAcmdList = curAcmdList ^ 1; - return uVar3; + if ((longlong)sVar1 < (longlong)(int)(short)minFrameSize) { + info->frameSamples = (short)minFrameSize; + sVar1 = info->frameSamples; + } + pAVar2 = alAudioFrame(_am.ACMDList[curAcmdList],(s32 *)&cmdLen,outBuf,(int)sVar1); + (info->task).next = NULL; + (info->task).msgQ = (OSMesgQueue *)&_am.audioReplyMsgQ.validCount; + *(AudioInfo **)&(info->task).msg = info; + (info->task).flags = 2; + *(Acmd **)((info->task).list + 0x30) = _am.ACMDList[curAcmdList]; + *(int *)((info->task).list + 0x34) = + ((int)((int)pAVar2 - (int)_am.ACMDList[curAcmdList]) >> 3) << 3; + *(undefined4 *)(info->task).list = 2; + *(undefined4 *)((info->task).list + 8) = 0x80020d90; + *(undefined4 *)((info->task).list + 0xc) = 0xd0; + *(undefined4 *)((info->task).list + 4) = 0; + *(undefined4 *)((info->task).list + 0x10) = 0x80022280; + *(undefined4 *)((info->task).list + 0x18) = 0x8005d020; + *(undefined4 *)((info->task).list + 0x1c) = 0x800; + *(undefined4 *)((info->task).list + 0x38) = 0; + *(undefined4 *)((info->task).list + 0x3c) = 0; + sched_cmdQ = osScGetCmdQ(&sc); + uVar3 = osSendMesg(sched_cmdQ,&info->task,0); + curAcmdList = curAcmdList ^ 1; + return uVar3; } @@ -1417,13 +1390,13 @@ u32 __amHandleFrameMsg(AudioInfo *info,AudioInfo *lastInfo) void __amHandleDoneMsg(AudioInfo *info) { - int samplesLeft; - - samplesLeft = osAiGetLength(); - if ((samplesLeft >> 2 == 0) && (firstTime == 0)) { - firstTime = 0; - } - return; + int samplesLeft; + + samplesLeft = osAiGetLength(); + if ((samplesLeft >> 2 == 0) && (firstTime == 0)) { + firstTime = 0; + } + return; } @@ -1431,76 +1404,74 @@ void __amHandleDoneMsg(AudioInfo *info) s32 __amDMA(s32 addr,s32 len,void *state) { - AMDMABuffer *a; - AMDMABuffer *pAVar1; - ALLink_s *pAVar2; - u32 devAddr; - char *virtualAddress; - OSIoMesg *mb; - AMDMABuffer *b; - AMDMABuffer *pAVar3; - char *foundBuffer; - - a = dmaState.firstFree; - b = NULL; - if (dmaState.firstUsed != NULL) { - pAVar2 = (ALLink_s *)(dmaState.firstUsed)->startAddr; - pAVar1 = dmaState.firstUsed; + AMDMABuffer *a; + AMDMABuffer *pAVar1; + ALLink_s *pAVar2; + u32 devAddr; + char *virtualAddress; + OSIoMesg *mb; + AMDMABuffer *b; + AMDMABuffer *pAVar3; + char *foundBuffer; + + a = dmaState.firstFree; b = NULL; - while( true ) { - pAVar3 = pAVar1; - if ((uint)addr < pAVar2) break; - if (addr + len <= (int)(pAVar2 + 0x40)) { - pAVar3->lastFrame = audFrameCt; - devAddr = osVirtualToPhysical(pAVar3->ptr + (addr - (int)pAVar2)); - return devAddr; - } - pAVar1 = (AMDMABuffer *)(pAVar3->node).next; - b = pAVar3; - if (pAVar1 == NULL) break; - pAVar2 = (ALLink_s *)pAVar1->startAddr; - b = pAVar3; + if (dmaState.firstUsed != NULL) { + pAVar2 = (ALLink_s *)(dmaState.firstUsed)->startAddr; + pAVar1 = dmaState.firstUsed; + while( true ) { + pAVar3 = pAVar1; + if ((uint)addr < pAVar2) break; + if (addr + len <= (int)(pAVar2 + 0x40)) { + pAVar3->lastFrame = audFrameCt; + devAddr = osVirtualToPhysical(pAVar3->ptr + (addr - (int)pAVar2)); + return devAddr; + } + pAVar1 = (AMDMABuffer *)(pAVar3->node).next; + b = pAVar3; + if (pAVar1 == NULL) break; + pAVar2 = (ALLink_s *)pAVar1->startAddr; + } } - } - if (dmaState.firstFree == NULL) { - if (b == NULL) { - virtualAddress = (dmaState.firstUsed)->ptr; + if (dmaState.firstFree == NULL) { + if (b == NULL) { + virtualAddress = (dmaState.firstUsed)->ptr; + } + else { + virtualAddress = b->ptr; + } + devAddr = osVirtualToPhysical(virtualAddress); } else { - virtualAddress = b->ptr; + dmaState.firstFree = (AMDMABuffer *)((dmaState.firstFree)->node).next; + alUnlink((ALLink *)a); + pAVar1 = dmaState.firstUsed; + if (b == NULL) { + if (dmaState.firstUsed == NULL) { + dmaState.firstUsed = a; + (a->node).next = NULL; + (a->node).prev = NULL; + } + else { + dmaState.firstUsed = a; + *(AMDMABuffer **)&(a->node).next = pAVar1; + (a->node).prev = NULL; + *(AMDMABuffer **)&(pAVar1->node).prev = a; + } + } + else { + alLink((ALLink *)a,(ALLink *)b); + } + devAddr = addr - (addr & 1U); + a->startAddr = devAddr; + foundBuffer = a->ptr; + a->lastFrame = audFrameCt; + mb = audDMAIOMesgBuf + addr; + addr = addr + 1; + osPiStartDma(mb,1,0,devAddr,foundBuffer,0x200,&audDMAMessageQ); + devAddr = osVirtualToPhysical(foundBuffer); } - devAddr = osVirtualToPhysical(virtualAddress); - } - else { - dmaState.firstFree = (AMDMABuffer *)((dmaState.firstFree)->node).next; - alUnlink((ALLink *)a); - pAVar1 = dmaState.firstUsed; - if (b == NULL) { - if (dmaState.firstUsed == NULL) { - dmaState.firstUsed = a; - (a->node).next = NULL; - (a->node).prev = NULL; - } - else { - dmaState.firstUsed = a; - *(AMDMABuffer **)&(a->node).next = pAVar1; - (a->node).prev = NULL; - *(AMDMABuffer **)&(pAVar1->node).prev = a; - } - } - else { - alLink((ALLink *)a,(ALLink *)b); - } - devAddr = addr - (addr & 1U); - a->startAddr = devAddr; - foundBuffer = a->ptr; - a->lastFrame = audFrameCt; - mb = audDMAIOMesgBuf + addr; - addr = addr + 1; - osPiStartDma(mb,1,0,devAddr,foundBuffer,0x200,&audDMAMessageQ); - devAddr = osVirtualToPhysical(foundBuffer); - } - return (s32)(devAddr + (addr & 1U)); + return (s32)(devAddr + (addr & 1U)); } @@ -1508,13 +1479,13 @@ s32 __amDMA(s32 addr,s32 len,void *state) ALDMAproc __amDmaNew(AMDMAState **state) { - if (dmaState.initialized == '\0') { - dmaState.firstUsed = NULL; - dmaState.firstFree = dmaBuffs; - dmaState.initialized = '\x01'; - } - *state = &dmaState; - return (ALDMAproc)__amDMA; + if (dmaState.initialized == '\0') { + dmaState.firstUsed = NULL; + dmaState.firstFree = dmaBuffs; + dmaState.initialized = '\x01'; + } + *state = &dmaState; + return __amDMA; } @@ -1522,67 +1493,69 @@ ALDMAproc __amDmaNew(AMDMAState **state) void __clearAudioDMA(void) { - u32 i; - OSIoMesg *iomsg; - AMDMABuffer *dmaPtr; - AMDMABuffer *nextPtr; - - iomsg = NULL; - i = 0; - nextPtr = dmaState.firstUsed; - if (addr != 0) { - do { - osRecvMesg(&audDMAMessageQ,&iomsg,0); - i += 1; - nextPtr = dmaState.firstUsed; - } while (i < addr); - } - while (dmaPtr = nextPtr, dmaPtr != NULL) { - nextPtr = (AMDMABuffer *)(dmaPtr->node).next; - if ((int)&((ALLink_s *)dmaPtr->lastFrame)->next + 1U < audFrameCt) { - if (dmaPtr == dmaState.firstUsed) { - dmaState.firstUsed = nextPtr; - } - alUnlink((ALLink *)dmaPtr); - if (dmaState.firstFree == NULL) { - dmaState.firstFree = dmaPtr; - (dmaPtr->node).next = NULL; - (dmaPtr->node).prev = NULL; - } - else { - alLink((ALLink *)dmaPtr,(ALLink *)dmaState.firstFree); - } + u32 i; + OSIoMesg *iomsg; + AMDMABuffer *dmaPtr; + AMDMABuffer *nextPtr; + + iomsg = NULL; + i = 0; + nextPtr = dmaState.firstUsed; + if (addr != 0) { + do { + osRecvMesg(&audDMAMessageQ,&iomsg,0); + i += 1; + nextPtr = dmaState.firstUsed; + } while (i < addr); } - } - audFrameCt = audFrameCt + 1; - addr = 0; - return; + while (dmaPtr = nextPtr, dmaPtr != NULL) { + nextPtr = (AMDMABuffer *)(dmaPtr->node).next; + if ((int)&((ALLink_s *)dmaPtr->lastFrame)->next + 1U < audFrameCt) { + if (dmaPtr == dmaState.firstUsed) { + dmaState.firstUsed = nextPtr; + } + alUnlink((ALLink *)dmaPtr); + if (dmaState.firstFree == NULL) { + dmaState.firstFree = dmaPtr; + (dmaPtr->node).next = NULL; + (dmaPtr->node).prev = NULL; + } + else { + alLink((ALLink *)dmaPtr,(ALLink *)dmaState.firstFree); + } + } + } + audFrameCt = audFrameCt + 1; + addr = 0; + return; } +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + void displaylist_related(void) { - undefined4 *puVar1; - undefined4 *puVar2; - - displaylist_0[0]._0_4_ = 0xb8000000; - displaylist_0[0]._4_4_ = 0; - displaylist_1._0_4_ = 0xb8000000; - displaylist_1._4_4_ = 0; - displaylist_bank = 0; - puVar2 = buffer_800607b0; - puVar1 = buffer_800607b0 + 8; - do { - puVar1 = puVar1 + 1; - *puVar2 = 0; - *puVar1 = 1; - puVar2 = puVar2 + 1; - puVar1 = puVar1; - } while (puVar1 != (undefined4 *)&DAT_800607dc); - video_related_2(); - return; + u32 *puVar1; + u32 *puVar2; + + displaylist_0[0]._0_4_ = 0xb8000000; + displaylist_0[0]._4_4_ = 0; + displaylist_1[0]._0_4_ = 0xb8000000; + displaylist_1[0]._4_4_ = 0; + _displaylist_bank = 0; + puVar2 = buffer_800607b0; + puVar1 = buffer_800607b0 + 8; + do { + puVar1 = puVar1 + 1; + *puVar2 = 0; + *puVar1 = 1; + puVar2 = puVar2 + 1; + puVar1 = puVar1; + } while (puVar1 != (u32 *)&DAT_800607dc); + video_related_2(); + return; } @@ -1590,46 +1563,48 @@ void displaylist_related(void) void video_related_1(void) { - int iVar1; - int *piVar2; - uint *puVar3; - uint uVar4; - - count_800604a8 = osGetCount(); - piVar2 = buffer_800607b0 + 8; - puVar3 = buffer_800607b0 + 4; - do { - iVar1 = *piVar2; - piVar2 = piVar2 + 1; - uVar4 = iVar1 + 0x1fU & 0x1f; - if (((int)(iVar1 + 0x1fU) < 0) && (uVar4 != 0)) { - uVar4 -= 0x20; - } - *puVar3 = uVar4; - puVar3 = puVar3 + 1; - } while (piVar2 != (int *)&DAT_800607dc); - return; + u32 uVar1; + u32 *puVar2; + u32 *puVar3; + u32 uVar4; + + count_800604a8 = osGetCount(); + puVar2 = buffer_800607b0 + 8; + puVar3 = buffer_800607b0 + 4; + do { + uVar1 = *puVar2; + puVar2 = puVar2 + 1; + uVar4 = uVar1 + 0x1f & 0x1f; + if (((int)(uVar1 + 0x1f) < 0) && (uVar4 != 0)) { + uVar4 -= 0x20; + } + *puVar3 = uVar4; + puVar3 = puVar3 + 1; + } while (puVar2 != (u32 *)&DAT_800607dc); + return; } +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + void video_related_2(void) { - undefined4 uVar1; - undefined4 *puVar2; - undefined4 *puVar3; - - puVar3 = buffer_800607b0 + 4; - count_800604a4 = count_800604a8; - puVar2 = buffer_800607b0; - do { - uVar1 = *puVar3; - puVar3 = puVar3 + 1; - *puVar2 = uVar1; - puVar2 = puVar2 + 1; - } while (puVar3 != buffer_800607b0 + 7); - return; + u32 uVar1; + u32 *puVar2; + u32 *puVar3; + + puVar3 = buffer_800607b0 + 4; + _count_800604a4 = count_800604a8; + puVar2 = buffer_800607b0; + do { + uVar1 = *puVar3; + puVar3 = puVar3 + 1; + *puVar2 = uVar1; + puVar2 = puVar2 + 1; + } while (puVar3 != buffer_800607b0 + 7); + return; } @@ -1637,255 +1612,258 @@ void video_related_2(void) void video_related_3(uint param_1) { - OSIntMask OVar1; - u32 uVar2; - int iVar3; - int iVar4; - uint uVar5; - int iVar6; - - OVar1 = osSetIntMask(1); - uVar5 = param_1 & 0xffff; - iVar3 = uVar5 * 4; - param_1 = (int)param_1 >> 0x10; - iVar4 = buffer_800607b0[uVar5 + 8]; - if (param_1 == 3) { - param_1 = *(uint *)(&DAT_8005f3f0 + iVar3) | 0x8000; - } - else { - if (param_1 == 6) { - param_1 = *(uint *)(&DAT_8005f3f0 + iVar3) & 0x7fff; + OSIntMask OVar1; + u32 uVar2; + int iVar3; + u32 uVar4; + uint uVar5; + int iVar6; + + OVar1 = osSetIntMask(1); + uVar5 = param_1 & 0xffff; + iVar3 = uVar5 * 4; + param_1 = (int)param_1 >> 0x10; + uVar4 = buffer_800607b0[uVar5 + 8]; + if (param_1 == 3) { + param_1 = *(uint *)(&DAT_8005f3f0 + iVar3) | 0x8000; } - } - iVar6 = uVar5 * 0x100 + iVar4 * 8; - *(uint *)(&DAT_800604b0 + iVar6) = param_1; - uVar2 = osGetCount(); - *(u32 *)(iVar6 + -0x7ff9fb4c) = uVar2; - iVar4 += 1; - *(uint *)(&DAT_8005f3f0 + iVar3) = param_1; - if (0x1f < iVar4) { - iVar4 = 0; - } - buffer_800607b0[uVar5 + 8] = iVar4; - osSetIntMask(OVar1); - return; + else { + if (param_1 == 6) { + param_1 = *(uint *)(&DAT_8005f3f0 + iVar3) & 0x7fff; + } + } + iVar6 = uVar5 * 0x100 + uVar4 * 8; + *(uint *)(&DAT_800604b0 + iVar6) = param_1; + uVar2 = osGetCount(); + *(u32 *)(iVar6 + -0x7ff9fb4c) = uVar2; + uVar4 += 1; + *(uint *)(&DAT_8005f3f0 + iVar3) = param_1; + if (0x1f < (int)uVar4) { + uVar4 = 0; + } + buffer_800607b0[uVar5 + 8] = uVar4; + osSetIntMask(OVar1); + return; } +// WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Unknown calling convention yet parameter storage is locked undefined4 * display_speed_graph(void) { - undefined4 *in_a0_lo; - int iVar1; - float fVar2; - undefined4 in_f5; - float fVar3; - undefined4 in_f11; - undefined4 in_f19; - u8 auStack24 [20]; - int *local_4; - - dword_80023224 += dword_80048498; - if (dword_80023228 < dword_80048498) { - dword_80023228 = dword_80048498; - } - if (0x14 < dword_80023224) { - while (0x14 < dword_80023224) { - dword_80023224 -= 0x14; + undefined4 *in_a0_lo; + int iVar1; + float fVar2; + undefined4 in_f5; + float fVar3; + undefined4 in_f11; + undefined4 in_f19; + u8 auStack24 [20]; + int *local_4; + + dword_80023224 += speedgraphframes; + if (dword_80023228 < speedgraphframes) { + dword_80023228 = speedgraphframes; } - local_4 = (int *)get_counters(); - set_debug_text_color(0xff,0xff,0xff,0xff); - set_color_speedgraph(0,0,0,0xff); - set_final_debug_text_positions(8,5); - fVar3 = (float)(local_4[1] - local_4[3]); - if (local_4[1] - local_4[3] < 0) { - fVar3 = fVar3 + 4294967296.00000000; + if (0x14 < dword_80023224) { + while (0x14 < dword_80023224) { + dword_80023224 -= 0x14; + } + local_4 = (int *)get_counters(); + set_debug_text_color(0xff,0xff,0xff,0xff); + set_color_speedgraph(0,0,0,0xff); + set_final_debug_text_positions(8,5); + fVar3 = (float)(local_4[1] - local_4[3]); + if (local_4[1] - local_4[3] < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + fVar2 = (float)*local_4; + if (*local_4 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + sprintf((char *)auStack24,"utz %2.0f%%\n",in_f11, + SUB84((double)((fVar3 * 100.00000000) / fVar2),0)); + write_string_stdout(auStack24); + set_final_debug_text_positions(8,6); + iVar1 = *local_4; + fVar3 = (float)(iVar1 - local_4[1]); + if (iVar1 - local_4[1] < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + fVar2 = (float)iVar1; + if (iVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + sprintf((char *)auStack24,"rsp %2.0f%%\n",in_f5, + SUB84((double)((fVar3 * 100.00000000) / fVar2),0)); + write_string_stdout(auStack24); + set_final_debug_text_positions(8,7); + fVar3 = (float)local_4[3]; + if (local_4[3] < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + fVar2 = (float)*local_4; + if (*local_4 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + sprintf((char *)auStack24,"tex %2.0f%%",in_f19, + SUB84((double)((fVar3 * 100.00000000) / fVar2),0)); + write_string_stdout(auStack24); + set_final_debug_text_positions(0x1c,5); + if (speedgraphframes == 0) { + iVar1 = 0; + } + else { + iVar1 = 0x3c / speedgraphframes; + if (speedgraphframes == 0) { + trap(0x1c00); + } + if ((speedgraphframes == -1) && (false)) { + trap(0x1800); + } + } + sprintf((char *)auStack24,"%2d hz",iVar1); + write_string_stdout(auStack24); + set_final_debug_text_positions(0x1c,6); + sprintf((char *)auStack24,"%2d frames",speedgraphframes); + write_string_stdout(auStack24); + if (dword_80023228 == speedgraphframes) { + sprintf((char *)auStack24," ",dword_80023228); + } + else { + sprintf((char *)auStack24," [%2d]",dword_80023228); + } + write_string_stdout(auStack24); + dword_80023228 = 0; } - fVar2 = (float)*local_4; - if (*local_4 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - sprintf((char *)auStack24,"utz %2.0f%%\n",in_f11, - SUB84((double)((fVar3 * 100.00000000) / fVar2),0)); - write_string_stdout(auStack24); - set_final_debug_text_positions(8,6); - iVar1 = *local_4; - fVar3 = (float)(iVar1 - local_4[1]); - if (iVar1 - local_4[1] < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - fVar2 = (float)iVar1; - if (iVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - sprintf((char *)auStack24,"rsp %2.0f%%\n",in_f5, - SUB84((double)((fVar3 * 100.00000000) / fVar2),0)); - write_string_stdout(auStack24); - set_final_debug_text_positions(8,7); - fVar3 = (float)local_4[3]; - if (local_4[3] < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - fVar2 = (float)*local_4; - if (*local_4 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - sprintf((char *)auStack24,"tex %2.0f%%",in_f19,SUB84((double)((fVar3 * 100.00000000) / fVar2),0) - ); - write_string_stdout(auStack24); - set_final_debug_text_positions(0x1c,5); - if (dword_80048498 == 0) { - iVar1 = 0; - } - else { - iVar1 = 0x3c / dword_80048498; - if (dword_80048498 == 0) { - trap(0x1c00); - } - if ((dword_80048498 == -1) && (false)) { - trap(0x1800); - } - } - sprintf((char *)auStack24,"%2d hz",iVar1); - write_string_stdout(auStack24); - set_final_debug_text_positions(0x1c,6); - sprintf((char *)auStack24,"%2d frames",dword_80048498); - write_string_stdout(auStack24); - if (dword_80023228 == dword_80048498) { - sprintf((char *)auStack24," ",dword_80023228); - } - else { - sprintf((char *)auStack24," [%2d]",dword_80023228); - } - write_string_stdout(auStack24); - dword_80023228 = 0; - } - *in_a0_lo = 0x6000000; - *(u64 **)(in_a0_lo + 1) = displaylist_0 + (displaylist_bank ^ 1) * 0x10a; - return in_a0_lo + 2; + *in_a0_lo = 0x6000000; + *(Gfx **)(in_a0_lo + 1) = displaylist_0 + (_displaylist_bank ^ 1) * 0x10a; + return in_a0_lo + 2; } +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + void video_DL_related_4(void) { - uint uVar1; - int iVar2; - uint *puVar3; - uint *puVar4; - uint uVar5; - uint uVar6; - int iVar7; - int iVar8; - uint uVar9; - uint uVar10; - uint *puVar11; - uint *puVar12; - uint uVar13; - float fVar14; - undefined4 *puStack96; - int iStack80; - uint auStack48 [10]; - int iStack8; - - counterforframes += dword_80048498; - if (200 < counterforframes) { - counterforframes -= 200; - dword_80023234 ^= 1; - } - uVar6 = dword_8002322C & 1; - dword_8002322C += 1; - if (dword_80023234 != uVar6) { - puVar3 = proc_7F0D1AC0((undefined4 *)(displaylist_0 + displaylist_bank * 0x10a)); - puVar4 = auStack48 + 3; - do { - puVar11 = puVar4 + 1; - *puVar4 = 0; - uVar6 = count_800604a4; - puVar4 = puVar11; - } while (puVar11 < auStack48 + 6); - puVar4 = auStack48; - do { - puVar11 = puVar4 + 1; - *puVar4 = uVar6; - puVar4 = puVar11; - } while (puVar11 < auStack48 + 3); - puVar4 = buffer_800607b0 + 8; - puStack96 = buffer_800607b0; - iStack8 = 0; - iStack80 = 0; - do { - uVar6 = *puVar4; - uVar13 = *puStack96; - puVar11 = (uint *)((int)auStack48 + iStack80 + 0xc); - if (uVar13 != uVar6) { - iVar7 = iStack8 * 0x100; - puVar12 = (uint *)((int)auStack48 + iStack80); + uint uVar1; + int iVar2; + uint *puVar3; + uint *puVar4; + uint uVar5; + u32 uVar6; + uint uVar7; + int iVar8; + int iVar9; + uint uVar10; + uint *puVar11; + u32 uVar12; + u32 *puVar13; + float fVar14; + u32 *puStack96; + int iStack80; + uint auStack48 [3]; + uint auStack36 [7]; + int iStack8; + + counterforframes += speedgraphframes; + if (200 < counterforframes) { + counterforframes -= 200; + dword_80023234 ^= 1; + } + uVar7 = dword_8002322C & 1; + dword_8002322C += 1; + if (dword_80023234 != uVar7) { + puVar3 = proc_7F0D1AC0((undefined4 *)(displaylist_0 + _displaylist_bank * 0x10a)); + puVar4 = auStack48 + 3; do { - uVar10 = *(uint *)(&DAT_800604b0 + uVar13 * 8 + iVar7); - if ((uVar10 & 0x8000) == 0) { - uVar9 = *puVar12; - } - else { - uVar10 = 3; - uVar9 = *puVar12; - } - uVar1 = *(uint *)(&DAT_800604b0 + uVar13 * 8 + iVar7 + 1); - uVar5 = count_800604a4; - if (count_800604a4 <= uVar9) { - uVar5 = uVar9; - } - if ((count_800604a4 <= uVar1) && (uVar5 <= uVar1)) { - uVar6 = *puVar11; - iVar8 = uVar6 * 0x10; - fVar14 = (float)(uVar1 - uVar5); - if ((int)(uVar1 - uVar5) < 0) { - fVar14 = fVar14 + 4294967296.00000000; + puVar11 = puVar4 + 1; + *puVar4 = 0; + puVar4 = puVar11; + } while (puVar11 < auStack48 + 6); + puVar4 = auStack48; + do { + puVar11 = puVar4 + 1; + *puVar4 = _count_800604a4; + puVar4 = puVar11; + } while (puVar11 < auStack48 + 3); + puVar13 = buffer_800607b0 + 8; + puStack96 = buffer_800607b0; + iStack8 = 0; + iStack80 = 0; + do { + uVar6 = *puVar13; + uVar12 = *puStack96; + puVar4 = (uint *)((int)auStack48 + iStack80 + 0xc); + if (uVar12 != uVar6) { + iVar8 = iStack8 * 0x100; + puVar11 = (uint *)((int)auStack48 + iStack80); + do { + uVar7 = *(uint *)(&DAT_800604b0 + uVar12 * 8 + iVar8); + if ((uVar7 & 0x8000) == 0) { + uVar10 = *puVar11; + } + else { + uVar7 = 3; + uVar10 = *puVar11; + } + uVar1 = *(uint *)(&DAT_800604b0 + uVar12 * 8 + iVar8 + 1); + uVar5 = _count_800604a4; + if (_count_800604a4 <= uVar10) { + uVar5 = uVar10; + } + if ((_count_800604a4 <= uVar1) && (uVar5 <= uVar1)) { + uVar10 = *puVar4; + iVar9 = uVar10 * 0x10; + fVar14 = (float)(uVar1 - uVar5); + if ((int)(uVar1 - uVar5) < 0) { + fVar14 = fVar14 + 4294967296.00000000; + } + fVar14 = fVar14 / 775875.00000000; + if (uVar10 == 1) { + proc_7F0D1DCC(fVar14); + } + else { + iVar2 = *(int *)(&DAT_800231d8 + iVar9); + puVar3 = proc_7F0D1BD0(puVar3,fVar14,(uint)fVar14,iVar2 >> 0x18 & 0xff, + iVar2 >> 0x10 & 0xff,iVar2 >> 8 & 0xff, + *(int *)(&DAT_800231dc + iVar9)); + } + *puVar3 = 0xe7000000; + puVar3[1] = 0; + puVar3 = puVar3 + 2; + uVar6 = *puVar13; + } + uVar10 = uVar12 + 1; + *puVar4 = uVar7; + *puVar11 = uVar1; + uVar12 = uVar10 & 0x1f; + if (((int)uVar10 < 0) && (uVar12 != 0)) { + uVar12 -= 0x20; + } + } while (uVar12 != uVar6); } - fVar14 = fVar14 / 775875.00000000; - if (uVar6 == 1) { - proc_7F0D1DCC(fVar14); + if (iStack8 < 2) { + proc_7F0D2320(); } - else { - iVar2 = *(int *)(&DAT_800231d8 + iVar8); - puVar3 = proc_7F0D1BD0(puVar3,fVar14,(uint)fVar14,iVar2 >> 0x18 & 0xff, - iVar2 >> 0x10 & 0xff,iVar2 >> 8 & 0xff, - *(int *)(&DAT_800231dc + iVar8)); - } - *puVar3 = 0xe7000000; - puVar3[1] = 0; - puVar3 = puVar3 + 2; - uVar6 = *puVar4; - } - uVar9 = uVar13 + 1; - *puVar11 = uVar10; - *puVar12 = uVar1; - uVar13 = uVar9 & 0x1f; - if (((int)uVar9 < 0) && (uVar13 != 0)) { - uVar13 -= 0x20; - } - } while (uVar13 != uVar6); - } - if (iStack8 < 2) { - proc_7F0D2320(); - } - iStack8 += 1; - iStack80 += 4; - puStack96 = puStack96 + 1; - puVar4 = puVar4 + 1; - } while (iStack8 != 3); - puVar4 = proc_7F0D1E98(puVar3,0,0,0); - *puVar4 = 0xe7000000; - puVar4[1] = 0; - puVar4[2] = 0xb8000000; - puVar4[3] = 0; - displaylist_bank ^= 1; - } - return; + iStack8 += 1; + iStack80 += 4; + puStack96 = puStack96 + 1; + puVar13 = puVar13 + 1; + } while (iStack8 != 3); + puVar4 = proc_7F0D1E98(puVar3,0,0,0); + *puVar4 = 0xe7000000; + puVar4[1] = 0; + puVar4[2] = 0xb8000000; + puVar4[3] = 0; + _displaylist_bank ^= 1; + } + return; } @@ -1893,15 +1871,15 @@ void video_DL_related_4(void) void init_video_settings(void) { - video1_settings.frameb = (int)cfb_16_a; - video_mp_related_8002329C = 0; - video_mp_related_800232A0 = 0; - ptr_video_settings1 = &video1_settings; - ptr_video_settings2 = &video2_settings; - DAT_80060878 = 0; - DAT_80060879 = 1; - video2_settings.frameb = (int)cfb_16_b; - return; + video1_settings[0].frameb = cfb_16_a; + video_mp_related_8002329C = 0; + video_mp_related_800232A0 = 0; + ptr_video_settings1 = video1_settings; + ptr_video_settings2 = (video_settings *)((int)video1_settings + 0x2c); + DAT_80060878 = 0; + DAT_80060879 = 1; + video1_settings[1].frameb = cfb_16_b; + return; } @@ -1909,24 +1887,24 @@ void init_video_settings(void) void init_both_video_buffers(void) { - undefined *puVar1; - undefined *puVar2; - - remove_viewport_buffer(); - puVar1 = NULL; - do { - cfb_16_a[(int)puVar1] = 0; - cfb_16_b[(int)puVar1] = 0; - cfb_16_a[(int)(puVar1 + 1)] = 0; - cfb_16_b[(int)(puVar1 + 1)] = 0; - cfb_16_a[(int)(puVar1 + 2)] = 0; - cfb_16_b[(int)(puVar1 + 2)] = 0; - cfb_16_a[(int)(puVar1 + 3)] = 0; - puVar2 = puVar1 + 4; - cfb_16_b[(int)(puVar1 + 3)] = 0; - puVar1 = puVar2; - } while (puVar2 != &UNK_00025800); - return; + int iVar1; + int iVar2; + + remove_viewport_buffer(); + iVar1 = 0; + do { + cfb_16_a[iVar1] = '\0'; + cfb_16_b[iVar1] = '\0'; + cfb_16_a[iVar1 + 1] = '\0'; + cfb_16_b[iVar1 + 1] = '\0'; + cfb_16_a[iVar1 + 2] = '\0'; + cfb_16_b[iVar1 + 2] = '\0'; + cfb_16_a[iVar1 + 3] = '\0'; + iVar2 = iVar1 + 4; + cfb_16_b[iVar1 + 3] = '\0'; + iVar1 = iVar2; + } while (iVar2 != 0x25800); + return; } @@ -1934,8 +1912,8 @@ void init_both_video_buffers(void) void video_store_A0_plus_2_to_off_D_800232BC(int param_1) { - off_800232BC = param_1 + 2; - return; + off_800232BC = param_1 + 2; + return; } @@ -1943,26 +1921,26 @@ void video_store_A0_plus_2_to_off_D_800232BC(int param_1) void video_related_7(void) { - int iVar1; - - if ((dword_800232B8 != 0) && (dword_800232B8 += -1, dword_800232B8 == 0)) { - dword_800232B4 = 0; - } - iVar1 = dword_800232B0 * dword_800232B4; - (viMode._0_4_)->fldRegs[0].vStart = - (((int)viMode.comRegs.width >> 0x10) + iVar1) * 0x10000 | - viMode.comRegs.width + iVar1 & 0xffff; - (viMode._0_4_)->fldRegs[1].vStart = - (((int)viMode.comRegs.burst >> 0x10) + iVar1) * 0x10000 | - viMode.comRegs.burst + iVar1 & 0xffff; - osViSetMode(viMode._0_4_); - osViBlack(off_800232BC & 0xff); - if ((off_800232BC != 0) && ((int)off_800232BC < 3)) { - off_800232BC = off_800232BC - 1; - } - osViSetSpecialFeatures(0x42); - dword_800232B0 = -dword_800232B0; - return; + int iVar1; + + if ((dword_800232B8 != 0) && (dword_800232B8 += -1, dword_800232B8 == 0)) { + dword_800232B4 = 0; + } + iVar1 = dword_800232B0 * dword_800232B4; + (viMode._0_4_)->fldRegs[0].vStart = + (((int)viMode.comRegs.width >> 0x10) + iVar1) * 0x10000 | + viMode.comRegs.width + iVar1 & 0xffff; + (viMode._0_4_)->fldRegs[1].vStart = + (((int)viMode.comRegs.burst >> 0x10) + iVar1) * 0x10000 | + viMode.comRegs.burst + iVar1 & 0xffff; + osViSetMode(viMode._0_4_); + osViBlack(off_800232BC & 0xff); + if ((off_800232BC != 0) && ((int)off_800232BC < 3)) { + off_800232BC = off_800232BC - 1; + } + osViSetSpecialFeatures(0x42); + dword_800232B0 = -dword_800232B0; + return; } @@ -1972,310 +1950,311 @@ void video_related_7(void) void video_related_8(void) { - bool bVar1; - short sVar2; - u32 uVar3; - s32 sVar4; - video_settings *__src; - COLORMODE CVar5; - u32 *puVar6; - char cVar7; - u32 *puVar8; - int iVar9; - uint uVar10; - OSViMode *pOVar11; - OSViMode *pOVar12; - int iVar13; - int iVar14; - u32 *puVar15; - float fVar16; - - cVar7 = *(char *)&ptr_video_settings2->anonymous_0; - if (cVar7 == *(char *)&ptr_video_settings1->anonymous_0) { - sVar2 = ptr_video_settings2->txtClipW; - } - else { - if (cVar7 == '\0') { - osViSetYScale(1.00000000); - osViBlack(1); + bool bVar1; + short sVar2; + u32 uVar3; + s32 sVar4; + video_settings *__src; + COLORMODE CVar5; + u32 *puVar6; + u8 uVar7; + u32 *puVar8; + int iVar9; + uint uVar10; + OSViMode *pOVar11; + OSViMode *pOVar12; + int iVar13; + int iVar14; + u32 *puVar15; + float fVar16; + + uVar7 = ptr_video_settings2->mode; + if (uVar7 == ptr_video_settings1->mode) { + sVar2 = ptr_video_settings2->txtClipW; } else { - if (cVar7 == '\x01') { - if (coloroutputmode == 32BIT) { - if (_osTVType == 2) { - pOVar12 = &OS_VI_MPAL_LAN2; - puVar6 = &DAT_80060828; - do { - puVar8 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar8 = *(u32 *)pOVar11; - puVar8[1] = (pOVar11->comRegs).ctrl; - puVar8[2] = (pOVar11->comRegs).width; - puVar6 = puVar8 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_MPAL_LAN2.fldRegs[1].vBurst); - uVar3 = (pOVar11->comRegs).vSync; - puVar8[3] = OS_VI_MPAL_LAN2.fldRegs[1].vBurst; - puVar8[4] = uVar3; - } - else { - pOVar12 = &OS_VI_NTSC_LAN2; - puVar6 = &DAT_80060828; - do { - puVar8 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar8 = *(u32 *)pOVar11; - puVar8[1] = (pOVar11->comRegs).ctrl; - puVar8[2] = (pOVar11->comRegs).width; - puVar6 = puVar8 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_NTSC_LAN2.fldRegs[1].vBurst); - uVar3 = (pOVar11->comRegs).vSync; - puVar8[3] = OS_VI_NTSC_LAN2.fldRegs[1].vBurst; - puVar8[4] = uVar3; - } + if (uVar7 == '\0') { + osViSetYScale(1.00000000); + osViBlack(1); } else { - if (_osTVType == 2) { - pOVar12 = &OS_VI_MPAL_LAN1; - puVar6 = &DAT_80060828; - do { - puVar8 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar8 = *(u32 *)pOVar11; - puVar8[1] = (pOVar11->comRegs).ctrl; - puVar8[2] = (pOVar11->comRegs).width; - puVar6 = puVar8 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_MPAL_LAN1.fldRegs[1].vBurst); - uVar3 = (pOVar11->comRegs).vSync; - puVar8[3] = OS_VI_MPAL_LAN1.fldRegs[1].vBurst; - puVar8[4] = uVar3; - } - else { - pOVar12 = &OS_VI_NTSC_LAN1; - puVar6 = &DAT_80060828; - do { - puVar8 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar8 = *(u32 *)pOVar11; - puVar8[1] = (pOVar11->comRegs).ctrl; - puVar8[2] = (pOVar11->comRegs).width; - puVar6 = puVar8 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_NTSC_LAN1.fldRegs[1].vBurst); - uVar3 = (pOVar11->comRegs).vSync; - puVar8[3] = OS_VI_NTSC_LAN1.fldRegs[1].vBurst; - puVar8[4] = uVar3; - } + if (uVar7 == '\x01') { + if (coloroutputmode == 32BIT) { + if (_osTVType == 2) { + pOVar12 = osViModeTable + 0x22; + puVar6 = &DAT_80060828; + do { + puVar8 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar8 = *(u32 *)pOVar11; + puVar8[1] = (pOVar11->comRegs).ctrl; + puVar8[2] = (pOVar11->comRegs).width; + puVar6 = puVar8 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[0x22].fldRegs[1].vBurst); + uVar3 = (pOVar11->comRegs).vSync; + puVar8[3] = osViModeTable[34].fldRegs[1].vBurst; + puVar8[4] = uVar3; + } + else { + pOVar12 = osViModeTable + 6; + puVar6 = &DAT_80060828; + do { + puVar8 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar8 = *(u32 *)pOVar11; + puVar8[1] = (pOVar11->comRegs).ctrl; + puVar8[2] = (pOVar11->comRegs).width; + puVar6 = puVar8 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[6].fldRegs[1].vBurst); + uVar3 = (pOVar11->comRegs).vSync; + puVar8[3] = osViModeTable[6].fldRegs[1].vBurst; + puVar8[4] = uVar3; + } + } + else { + if (_osTVType == 2) { + pOVar12 = osViModeTable + 0x1e; + puVar6 = &DAT_80060828; + do { + puVar8 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar8 = *(u32 *)pOVar11; + puVar8[1] = (pOVar11->comRegs).ctrl; + puVar8[2] = (pOVar11->comRegs).width; + puVar6 = puVar8 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[0x1e].fldRegs[1].vBurst); + uVar3 = (pOVar11->comRegs).vSync; + puVar8[3] = osViModeTable[30].fldRegs[1].vBurst; + puVar8[4] = uVar3; + } + else { + pOVar12 = osViModeTable + 2; + puVar6 = &DAT_80060828; + do { + puVar8 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar8 = *(u32 *)pOVar11; + puVar8[1] = (pOVar11->comRegs).ctrl; + puVar8[2] = (pOVar11->comRegs).width; + puVar6 = puVar8 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[2].fldRegs[1].vBurst); + uVar3 = (pOVar11->comRegs).vSync; + puVar8[3] = osViModeTable[2].fldRegs[1].vBurst; + puVar8[4] = uVar3; + } + } + viMode._0_4_ = &DAT_80060828; + viMode.comRegs.ctrl = DAT_80060844; + viMode.comRegs.width = DAT_80060858; + viMode.comRegs.burst = DAT_8006086c; + video_store_A0_plus_2_to_off_D_800232BC(0); + } + else { + if (uVar7 == '\x02') { + if (_osTVType == 2) { + viMode._0_4_ = (undefined4 *)0x800275f0; + } + else { + viMode._0_4_ = (undefined4 *)0x80026d30; + } + viMode.comRegs.ctrl = viMode._0_4_[7]; + viMode.comRegs.width = viMode._0_4_[0xc]; + viMode.comRegs.burst = viMode._0_4_[0x11]; + osViBlack(0); + } + } } - viMode._0_4_ = (OSViMode *)&DAT_80060828; - viMode.comRegs.ctrl = DAT_80060844; - viMode.comRegs.width = DAT_80060858; - viMode.comRegs.burst = DAT_8006086c; - video_store_A0_plus_2_to_off_D_800232BC(0); - } - else { - if (cVar7 == '\x02') { - if (_osTVType == 2) { - viMode._0_4_ = &OS_VI_MPAL_HAF1; - } - else { - viMode._0_4_ = &OS_VI_NTSC_HAF1; - } - viMode.comRegs.ctrl = ((viMode._0_4_)->comRegs).hStart; - viMode.comRegs.width = (viMode._0_4_)->fldRegs[0].vStart; - viMode.comRegs.burst = (viMode._0_4_)->fldRegs[1].vStart; - osViBlack(0); - } - } + osViSetSpecialFeatures(0x42); + uVar7 = ptr_video_settings2->mode; + sVar2 = ptr_video_settings2->txtClipW; } - osViSetSpecialFeatures(0x42); - cVar7 = *(char *)&ptr_video_settings2->anonymous_0; - sVar2 = ptr_video_settings2->txtClipW; - } - __src = ptr_video_settings2; - fVar16 = (float)(int)ptr_video_settings2->txtClipH / (float)(int)ptr_video_settings2->anonymous_8; - if (cVar7 == '\0') { - fVar16 = 1.00000000; - } - iVar9 = dword_800232C0 * 4; - dword_800230B0[dword_800232C0 + 1] = - (float)(int)sVar2 / (float)(int)ptr_video_settings2->anonymous_7; - dword_800230B0[dword_800232C0 + 3] = fVar16; - CVar5 = coloroutputmode; - if (*(char *)&__src->anonymous_0 == '\x01') { - bVar1 = coloroutputmode == 32BIT; - *(undefined4 *)((int)&sc.thread.context.sp + iVar9 + 4) = 0x80060828; - if (bVar1) { - if (_osTVType == 2) { - puVar8 = (u32 *)((int)&sc.thread.context.a3 + dword_800232C0 * 0x50 + 4); - pOVar12 = &OS_VI_MPAL_LAN2; - puVar6 = puVar8; - do { - puVar15 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar15 = *(u32 *)pOVar11; - puVar15[1] = (pOVar11->comRegs).ctrl; - puVar15[2] = (pOVar11->comRegs).width; - puVar6 = puVar15 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_MPAL_LAN2.fldRegs[1].vBurst); - puVar15[3] = OS_VI_MPAL_LAN2.fldRegs[1].vBurst; - puVar15[4] = (pOVar11->comRegs).vSync; - } - else { - puVar8 = (u32 *)((int)&sc.thread.context.a3 + dword_800232C0 * 0x50 + 4); - pOVar12 = &OS_VI_NTSC_LAN2; - puVar6 = puVar8; - do { - puVar15 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar15 = *(u32 *)pOVar11; - puVar15[1] = (pOVar11->comRegs).ctrl; - puVar15[2] = (pOVar11->comRegs).width; - puVar6 = puVar15 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_NTSC_LAN2.fldRegs[1].vBurst); - puVar15[3] = OS_VI_NTSC_LAN2.fldRegs[1].vBurst; - puVar15[4] = (pOVar11->comRegs).vSync; - } + __src = ptr_video_settings2; + fVar16 = (float)(int)ptr_video_settings2->txtClipH / (float)(int)ptr_video_settings2->somethingH + ; + if (uVar7 == '\0') { + fVar16 = 1.00000000; + } + iVar9 = dword_800232C0 * 4; + dword_800230B0[dword_800232C0 + 1] = + (float)(int)sVar2 / (float)(int)ptr_video_settings2->somethingW; + dword_800230B0[dword_800232C0 + 3] = fVar16; + CVar5 = coloroutputmode; + if (__src->mode == '\x01') { + bVar1 = coloroutputmode == 32BIT; + *(undefined4 *)(&DAT_8005dbe0 + iVar9) = 0x80060828; + if (bVar1) { + if (_osTVType == 2) { + puVar8 = (u32 *)(&DAT_8005db40 + dword_800232C0 * 0x50); + pOVar12 = osViModeTable + 0x22; + puVar6 = puVar8; + do { + puVar15 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar15 = *(u32 *)pOVar11; + puVar15[1] = (pOVar11->comRegs).ctrl; + puVar15[2] = (pOVar11->comRegs).width; + puVar6 = puVar15 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[0x22].fldRegs[1].vBurst); + puVar15[3] = osViModeTable[34].fldRegs[1].vBurst; + puVar15[4] = (pOVar11->comRegs).vSync; + } + else { + puVar8 = (u32 *)(&DAT_8005db40 + dword_800232C0 * 0x50); + pOVar12 = osViModeTable + 6; + puVar6 = puVar8; + do { + puVar15 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar15 = *(u32 *)pOVar11; + puVar15[1] = (pOVar11->comRegs).ctrl; + puVar15[2] = (pOVar11->comRegs).width; + puVar6 = puVar15 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[6].fldRegs[1].vBurst); + puVar15[3] = osViModeTable[6].fldRegs[1].vBurst; + puVar15[4] = (pOVar11->comRegs).vSync; + } + } + else { + if (_osTVType == 2) { + puVar8 = (u32 *)(&DAT_8005db40 + dword_800232C0 * 0x50); + pOVar12 = osViModeTable + 0x1e; + puVar6 = puVar8; + do { + puVar15 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar15 = *(u32 *)pOVar11; + puVar15[1] = (pOVar11->comRegs).ctrl; + puVar15[2] = (pOVar11->comRegs).width; + puVar6 = puVar15 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[0x1e].fldRegs[1].vBurst); + puVar15[3] = osViModeTable[30].fldRegs[1].vBurst; + puVar15[4] = (pOVar11->comRegs).vSync; + } + else { + puVar8 = (u32 *)(&DAT_8005db40 + dword_800232C0 * 0x50); + pOVar12 = osViModeTable + 2; + puVar6 = puVar8; + do { + puVar15 = puVar6; + pOVar11 = pOVar12; + pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; + *puVar15 = *(u32 *)pOVar11; + puVar15[1] = (pOVar11->comRegs).ctrl; + puVar15[2] = (pOVar11->comRegs).width; + puVar6 = puVar15 + 3; + } while (pOVar12 != (OSViMode *)&osViModeTable[2].fldRegs[1].vBurst); + puVar15[3] = osViModeTable[2].fldRegs[1].vBurst; + puVar15[4] = (pOVar11->comRegs).vSync; + } + } + puVar8[2] = (int)__src->somethingW; + puVar8[8] = ((int)__src->somethingW << 10) / 0x280; + iVar13 = (int)__src->somethingH << 0xb; + puVar8[0xb] = iVar13 / 0x1e0; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar13 == -0x80000000)) { + trap(0x1800); + } + iVar13 = (int)__src->somethingH << 0xb; + puVar8[0x10] = iVar13 / 0x1e0; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar13 == -0x80000000)) { + trap(0x1800); + } + puVar8[10] = (int)__src->somethingW << 1; + puVar8[0xf] = (int)__src->somethingW << 1; + iVar13 = ((int)puVar8[7] >> 0x10 & 0xffffU) + video_mp_related_8002329C; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar13 == -0x80000000)) { + trap(0x1800); + } + iVar14 = (puVar8[7] & 0xffff) + video_mp_related_8002329C; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar14 == -0x80000000)) { + trap(0x1800); + } + viMode.comRegs.ctrl = iVar13 % 0xffff << 0x10 | iVar14 % 0xffff; + puVar8[7] = viMode.comRegs.ctrl; + sVar4 = video_mp_related_800232A0; + iVar13 = ((int)puVar8[0xc] >> 0x10 & 0xffffU) + video_mp_related_800232A0; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar13 == -0x80000000)) { + trap(0x1800); + } + iVar14 = (puVar8[0xc] & 0xffff) + video_mp_related_800232A0; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar14 == -0x80000000)) { + trap(0x1800); + } + viMode.comRegs.width = iVar13 % 0xffff << 0x10 | iVar14 % 0xffff; + puVar8[0xc] = viMode.comRegs.width; + iVar13 = ((int)puVar8[0x11] >> 0x10 & 0xffffU) + sVar4; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar13 == -0x80000000)) { + trap(0x1800); + } + iVar14 = (puVar8[0x11] & 0xffff) + sVar4; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar14 == -0x80000000)) { + trap(0x1800); + } + viMode.comRegs.burst = iVar13 % 0xffff << 0x10 | iVar14 % 0xffff; + puVar8[0x11] = viMode.comRegs.burst; + *(undefined4 *)(&DAT_800230c4 + iVar9) = 1; } else { - if (_osTVType == 2) { - puVar8 = (u32 *)((int)&sc.thread.context.a3 + dword_800232C0 * 0x50 + 4); - pOVar12 = &OS_VI_MPAL_LAN1; - puVar6 = puVar8; - do { - puVar15 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar15 = *(u32 *)pOVar11; - puVar15[1] = (pOVar11->comRegs).ctrl; - puVar15[2] = (pOVar11->comRegs).width; - puVar6 = puVar15 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_MPAL_LAN1.fldRegs[1].vBurst); - puVar15[3] = OS_VI_MPAL_LAN1.fldRegs[1].vBurst; - puVar15[4] = (pOVar11->comRegs).vSync; - } - else { - puVar8 = (u32 *)((int)&sc.thread.context.a3 + dword_800232C0 * 0x50 + 4); - pOVar12 = &OS_VI_NTSC_LAN1; - puVar6 = puVar8; - do { - puVar15 = puVar6; - pOVar11 = pOVar12; - pOVar12 = (OSViMode *)&(pOVar11->comRegs).burst; - *puVar15 = *(u32 *)pOVar11; - puVar15[1] = (pOVar11->comRegs).ctrl; - puVar15[2] = (pOVar11->comRegs).width; - puVar6 = puVar15 + 3; - } while (pOVar12 != (OSViMode *)&OS_VI_NTSC_LAN1.fldRegs[1].vBurst); - puVar15[3] = OS_VI_NTSC_LAN1.fldRegs[1].vBurst; - puVar15[4] = (pOVar11->comRegs).vSync; - } + *(undefined4 *)(&DAT_800230c4 + iVar9) = 0; } - puVar8[2] = (int)__src->anonymous_7; - puVar8[8] = ((int)__src->anonymous_7 << 10) / 0x280; - iVar13 = (int)__src->anonymous_8 << 0xb; - puVar8[0xb] = iVar13 / 0x1e0; - if (false) { - trap(0x1c00); + uVar10 = dword_800232C0 + 1; + dword_800232C0 = uVar10 & 1; + if (((int)uVar10 < 0) && (dword_800232C0 != 0)) { + dword_800232C0 -= 2; } - if ((false) && (iVar13 == -0x80000000)) { - trap(0x1800); + if (CVar5 == 32BIT) { + *(undefined4 *)(fast3d_related_array + 0x58) = 0x803b5000; } - iVar13 = (int)__src->anonymous_8 << 0xb; - puVar8[0x10] = iVar13 / 0x1e0; - if (false) { - trap(0x1c00); + else { + *(u8 **)(fast3d_related_array + 0x58) = __src->frameb; } - if ((false) && (iVar13 == -0x80000000)) { - trap(0x1800); + __src = ptr_video_settings2; + DAT_80060878 = DAT_80060878 + 1 & 1; + if ((false) && (DAT_80060878 != 0)) { + DAT_80060878 -= 2; } - puVar8[10] = (int)__src->anonymous_7 << 1; - puVar8[0xf] = (int)__src->anonymous_7 << 1; - iVar13 = ((int)puVar8[7] >> 0x10 & 0xffffU) + video_mp_related_8002329C; - if (false) { - trap(0x1c00); + DAT_80060879 = DAT_80060879 + 1 & 1; + if ((false) && (DAT_80060879 != 0)) { + DAT_80060879 -= 2; } - if ((false) && (iVar13 == -0x80000000)) { - trap(0x1800); - } - iVar14 = (puVar8[7] & 0xffff) + video_mp_related_8002329C; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar14 == -0x80000000)) { - trap(0x1800); - } - viMode.comRegs.ctrl = iVar13 % 0xffff << 0x10 | iVar14 % 0xffff; - puVar8[7] = viMode.comRegs.ctrl; - sVar4 = video_mp_related_800232A0; - iVar13 = ((int)puVar8[0xc] >> 0x10 & 0xffffU) + video_mp_related_800232A0; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar13 == -0x80000000)) { - trap(0x1800); - } - iVar14 = (puVar8[0xc] & 0xffff) + video_mp_related_800232A0; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar14 == -0x80000000)) { - trap(0x1800); - } - viMode.comRegs.width = iVar13 % 0xffff << 0x10 | iVar14 % 0xffff; - puVar8[0xc] = viMode.comRegs.width; - iVar13 = ((int)puVar8[0x11] >> 0x10 & 0xffffU) + sVar4; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar13 == -0x80000000)) { - trap(0x1800); - } - iVar14 = (puVar8[0x11] & 0xffff) + sVar4; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar14 == -0x80000000)) { - trap(0x1800); - } - viMode.comRegs.burst = iVar13 % 0xffff << 0x10 | iVar14 % 0xffff; - puVar8[0x11] = viMode.comRegs.burst; - *(undefined4 *)(&DAT_800230c4 + iVar9) = 1; - } - else { - *(undefined4 *)(&DAT_800230c4 + iVar9) = 0; - } - uVar10 = dword_800232C0 + 1; - dword_800232C0 = uVar10 & 1; - if (((int)uVar10 < 0) && (dword_800232C0 != 0)) { - dword_800232C0 -= 2; - } - if (CVar5 == 32BIT) { - *(undefined4 *)(fast3d_related_array + 0x58) = 0x803b5000; - } - else { - *(int *)(fast3d_related_array + 0x58) = __src->frameb; - } - __src = ptr_video_settings2; - DAT_80060878 = DAT_80060878 + 1 & 1; - if ((false) && (DAT_80060878 != 0)) { - DAT_80060878 -= 2; - } - DAT_80060879 = DAT_80060879 + 1 & 1; - if ((false) && (DAT_80060879 != 0)) { - DAT_80060879 -= 2; - } - ptr_video_settings1 = &video1_settings + (uint)DAT_80060878; - ptr_video_settings2 = &video1_settings + (uint)DAT_80060879; - _bcopy(__src,ptr_video_settings2,0x2c); - *(undefined1 **)&ptr_video_settings2->frameb = - cfb_16_a + - (((uint)DAT_80060879 * 0x14 - (uint)DAT_80060879) * 4 - (uint)DAT_80060879) * 0x800; - return; + ptr_video_settings1 = video1_settings + DAT_80060878; + ptr_video_settings2 = video1_settings + DAT_80060879; + _bcopy(__src,ptr_video_settings2,0x2c); + ptr_video_settings2->frameb = + cfb_16_a + + (((uint)DAT_80060879 * 0x14 - (uint)DAT_80060879) * 4 - (uint)DAT_80060879) * 0x800; + return; } @@ -2283,20 +2262,20 @@ void video_related_8(void) void video_related_9(float param_1) { - float fVar1; - - fVar1 = 14.00000000; - if (param_1 <= 14.00000000) { - fVar1 = param_1; - } - if (fVar1 < 0.00000000) { - dword_800232B4 = 0; - } - else { - dword_800232B4 = (int)fVar1; - } - dword_800232B8 = 10; - return; + float fVar1; + + fVar1 = 14.00000000; + if (param_1 <= 14.00000000) { + fVar1 = param_1; + } + if (fVar1 < 0.00000000) { + dword_800232B4 = 0; + } + else { + dword_800232B4 = (int)fVar1; + } + dword_800232B8 = 10; + return; } @@ -2304,28 +2283,28 @@ void video_related_9(float param_1) void receive_vi_c_msgs(int msgcount) { - do { - osRecvMesg(&vi_c_debug_MQ,NULL,1); - msgcount += -1; - } while (0 < msgcount); - return; + do { + osRecvMesg(&vi_c_debug_MQ,NULL,1); + msgcount += -1; + } while (0 < msgcount); + return; } -void setVideoWidthHeightToMode(int videomode) +void setVideoWidthHeightToMode(char videomode) { - u16 uVar1; - - *(char *)&ptr_video_settings2->anonymous_0 = (char)videomode; - uVar1 = widths_80028480[videomode]; - ptr_video_settings2->anonymous_7 = uVar1; - ptr_video_settings2->txtClipW = uVar1; - uVar1 = heights_80028488[videomode]; - ptr_video_settings2->anonymous_8 = uVar1; - ptr_video_settings2->txtClipH = uVar1; - return; + u16 uVar1; + + ptr_video_settings2->mode = videomode; + uVar1 = widths_80028480[videomode]; + ptr_video_settings2->somethingW = uVar1; + ptr_video_settings2->txtClipW = uVar1; + uVar1 = heights_80028488[videomode]; + ptr_video_settings2->somethingH = uVar1; + ptr_video_settings2->txtClipH = uVar1; + return; } @@ -2333,8 +2312,8 @@ void setVideoWidthHeightToMode(int videomode) void set_coloroutputmode_16bit(void) { - coloroutputmode = 16BIT; - return; + coloroutputmode = 16BIT; + return; } @@ -2342,33 +2321,33 @@ void set_coloroutputmode_16bit(void) void set_coloroutputmode_32bit(void) { - coloroutputmode = 32BIT; - return; + coloroutputmode = 32BIT; + return; } -int get_video_settings2_frameb(void) +u8 * get_video_settings2_frameb(void) { - return ptr_video_settings2->frameb; + return ptr_video_settings2->frameb; } -int get_video_settings1_frameb(void) +u8 * get_video_settings1_frameb(void) { - return ptr_video_settings1->frameb; + return ptr_video_settings1->frameb; } -void set_video_settings2_frameb(int framebuffer) +void set_video_settings2_frameb(u8 *framebuffer) { - ptr_video_settings2->frameb = framebuffer; - return; + ptr_video_settings2->frameb = framebuffer; + return; } @@ -2376,7 +2355,7 @@ void set_video_settings2_frameb(int framebuffer) ulonglong get_80060824(void) { - return (ulonglong)DAT_80060824; + return (ulonglong)DAT_80060824; } @@ -2386,68 +2365,67 @@ ulonglong get_80060824(void) uint * proc_70003C58(uint *param_1) { - short sVar1; - uint *puVar2; - undefined4 local_c; - undefined4 local_8; - undefined4 local_4; - undefined4 local_20; - float local_1c; - float fovy; - float aspect; - undefined in_stack_00000000 [32]; - undefined4 local_18; - undefined8 in_stack_ffffffec; - - if (pPlayer != NULL) { - *(short *)(&pPlayer->field_7D0 + (uint)DAT_80060879 * 4) = - (short)((int)ptr_video_settings2->width << 1); - *(short *)(&pPlayer->field_7D8 + (uint)DAT_80060879 * 4) = - (short)((int)ptr_video_settings2->width << 1) + (short)((int)ptr_video_settings2->ulx << 2) - ; - *(undefined2 *)((int)&pPlayer->field_7D0 + (uint)DAT_80060879 * 0x10 + 2) = - (short)((int)ptr_video_settings2->height << 1); - *(short *)((int)&pPlayer->field_7D8 + (uint)DAT_80060879 * 0x10 + 2) = - (short)((int)ptr_video_settings2->height << 1) + - (short)((int)ptr_video_settings2->uly << 2); - } - *param_1 = 0x3800010; - *(int **)(param_1 + 1) = &pPlayer[0x30303].field_850 + (uint)DAT_80060879 * 4; - puVar2 = param_1; - proc_7F0BD6E0(); - local_20 = ptr_video_settings2->aspect; - local_1c = ptr_video_settings2->anonymous_6; - local_18 = 0x3f800000; - DAT_80060820 = puVar2; - guPerspectiveF((float [4] [4]) - CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT128(CONCAT84(*(undefined8 *) - &ptr_video_settings2-> - aspect,0x3f800000), - in_stack_ffffffec),local_c), - local_8),local_4),in_stack_00000000), - (u16 *)&DAT_800607e0,fovy,aspect,(float)&DAT_80060824,ptr_video_settings2->far, - ptr_video_settings2->scale); - guMtxF2L((float [4] [4]) - CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT128(CONCAT84(CONCAT44(local_20,local_1c), - local_18),in_stack_ffffffec), - local_c),local_8),local_4),in_stack_00000000), - (Mtx *)&DAT_800607e0); - param_1[2] = 0x1030040; - *(uint **)(param_1 + 3) = DAT_80060820 + -0x20000000; - param_1[4] = 0xbc00000e; - param_1[5] = (uint)DAT_80060824; - proc_7F078364(DAT_80060820); - proc_7F0783D4(&DAT_800607e0); - if (coloroutputmode == 32BIT) { - sVar1 = ptr_video_settings2->anonymous_7; - param_1[7] = 0x3b5000; - param_1[6] = (int)sVar1 - 1U & 0xfff | 0xff180000; - } - else { - param_1[6] = (int)ptr_video_settings2->anonymous_7 - 1U & 0xfff | 0xff100000; - param_1[7] = ptr_video_settings2->frameb + 0x80000000; - } - return param_1 + 8; + short sVar1; + uint *puVar2; + undefined4 local_c; + undefined4 local_8; + undefined4 local_4; + undefined4 local_20; + float local_1c; + float fovy; + float aspect; + undefined in_stack_00000000 [32]; + undefined4 local_18; + undefined8 in_stack_ffffffec; + + if (pPlayer != NULL) { + (&pPlayer->field_7D0)[DAT_80060879].field_7D0 = (u16)((int)ptr_video_settings2->width << 1); + (&pPlayer->field_7D0)[DAT_80060879].field_7D8 = + (short)((int)ptr_video_settings2->width << 1) + + (short)((int)ptr_video_settings2->ulx << 2); + (&pPlayer->field_7D0)[DAT_80060879].field_7D2 = (u16)((int)ptr_video_settings2->height << 1) + ; + (&pPlayer->field_7D0)[DAT_80060879].field_7DA = + (short)((int)ptr_video_settings2->height << 1) + + (short)((int)ptr_video_settings2->uly << 2); + } + *param_1 = 0x3800010; + *(int **)(param_1 + 1) = &pPlayer[-0x30303].field_750 + (uint)DAT_80060879 * 4; + puVar2 = param_1; + proc_7F0BD6E0(); + local_20 = ptr_video_settings2->aspect; + local_1c = ptr_video_settings2->aspect_height; + local_18 = 0x3f800000; + DAT_80060820 = puVar2; + guPerspectiveF((float [4] [4]) + CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT128(CONCAT84(*(undefined8 *) + &ptr_video_settings2 + ->aspect,0x3f800000 + ),in_stack_ffffffec), + local_c),local_8),local_4), + in_stack_00000000),(u16 *)&DAT_800607e0,fovy,aspect, + (float)&DAT_80060824,(float)ptr_video_settings2->far,ptr_video_settings2->scale); + guMtxF2L((float [4] [4]) + CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT128(CONCAT84(CONCAT44(local_20,local_1c) + ,local_18), + in_stack_ffffffec),local_c),local_8) + ,local_4),in_stack_00000000),(Mtx *)&DAT_800607e0); + param_1[2] = 0x1030040; + *(uint **)(param_1 + 3) = DAT_80060820 + -0x20000000; + param_1[4] = 0xbc00000e; + param_1[5] = (uint)DAT_80060824; + set_BONDdata_field_10D8(DAT_80060820); + set_BONDdata_field_10DC(&DAT_800607e0); + if (coloroutputmode == 32BIT) { + sVar1 = ptr_video_settings2->somethingW; + param_1[7] = 0x3b5000; + param_1[6] = (int)sVar1 - 1U & 0xfff | 0xff180000; + } + else { + param_1[6] = (int)ptr_video_settings2->somethingW - 1U & 0xfff | 0xff100000; + *(u8 **)(param_1 + 7) = ptr_video_settings2->frameb + -0x80000000; + } + return param_1 + 8; } @@ -2455,13 +2433,13 @@ uint * proc_70003C58(uint *param_1) undefined4 * proc_70003EB4(undefined4 *param_1) { - undefined4 *puVar1; - - if (ptr_video_settings2->anonymous_12 != 0) { - puVar1 = proc_7F0D2464(param_1); - param_1 = proc_7F0D2518(puVar1); - } - return param_1; + undefined4 *puVar1; + + if (ptr_video_settings2->anonymous_12 != 0) { + puVar1 = proc_7F0D2464(param_1); + param_1 = proc_7F0D2518(puVar1); + } + return param_1; } @@ -2469,14 +2447,14 @@ undefined4 * proc_70003EB4(undefined4 *param_1) undefined4 * insert_generic_fillrect(undefined4 *param_1) { - param_1[1] = 0x300000; - *param_1 = 0xba001402; - param_1[2] = ((int)ptr_video_settings2->anonymous_7 - 1U & 0x3ff) << 0xe | 0xf6000000 | - ((int)ptr_video_settings2->anonymous_8 - 1U & 0x3ff) << 2; - param_1[3] = 0; - param_1[4] = 0xe7000000; - param_1[5] = 0; - return param_1 + 6; + param_1[1] = 0x300000; + *param_1 = 0xba001402; + param_1[2] = ((int)ptr_video_settings2->somethingW - 1U & 0x3ff) << 0xe | 0xf6000000 | + ((int)ptr_video_settings2->somethingH - 1U & 0x3ff) << 2; + param_1[3] = 0; + param_1[4] = 0xe7000000; + param_1[5] = 0; + return param_1 + 6; } @@ -2484,111 +2462,113 @@ undefined4 * insert_generic_fillrect(undefined4 *param_1) uint * setupscreensfornumplayers(undefined4 *param_1) { - short txtClipW; - short txtClipH; - short uly; - int curplayernum; - int iVar2; - short sVar4; - short sVar5; - ulonglong uVar1; - short sVar6; - u32 uVar3; - short sVar7; - uint *puVar8; - uint *puVar9; - - param_1[1] = 0x300000; - *param_1 = 0xba001402; - param_1[2] = 0xed000000; - txtClipW = get_video2_settings_txtClipW(); - txtClipH = get_video2_settings_txtClipH(); - puVar8 = param_1 + 6; - param_1[3] = (int)((float)(int)txtClipH * 4.00000000) & 0xfffU | - ((int)((float)(int)txtClipW * 4.00000000) & 0xfffU) << 0xc; - param_1[5] = 0x10001; - param_1[4] = 0xf7000000; - uly = get_video2_settings_uly(); - if (0 < uly) { - curplayernum = get_cur_playernum(); - iVar2 = proc_7F09B4D8(curplayernum); - if (iVar2 == 0) { - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_uly(); - *puVar8 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe; - param_1[7] = 0; - param_1[8] = 0xe7000000; - param_1[9] = 0; - puVar8 = param_1 + 10; + short txtClipW; + short txtClipH; + short uly; + int curplayernum; + int iVar1; + short sVar4; + short sVar5; + s32 sVar2; + short sVar6; + u32 uVar3; + short sVar7; + uint *puVar8; + uint *puVar9; + + param_1[1] = 0x300000; + *param_1 = 0xba001402; + param_1[2] = 0xed000000; + txtClipW = get_video2_settings_txtClipW(); + txtClipH = get_video2_settings_txtClipH(); + puVar8 = param_1 + 6; + param_1[3] = (int)((float)(int)txtClipH * 4.00000000) & 0xfffU | + ((int)((float)(int)txtClipW * 4.00000000) & 0xfffU) << 0xc; + param_1[5] = 0x10001; + param_1[4] = 0xf7000000; + uly = get_video2_settings_uly(); + if (0 < uly) { + curplayernum = get_cur_playernum(); + iVar1 = proc_7F09B4D8(curplayernum); + if (iVar1 == 0) { + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_uly(); + *puVar8 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe + ; + param_1[7] = 0; + param_1[8] = 0xe7000000; + param_1[9] = 0; + puVar8 = param_1 + 10; + } } - } - uVar1 = get_num_players(); - if (uVar1 == 1) { - sVar4 = get_video2_settings_height(); - sVar5 = get_video2_settings_uly(); - sVar6 = get_video2_settings_txtClipH(); - if ((longlong)sVar6 <= (longlong)((int)sVar5 + (int)sVar4)) { - return puVar8; + sVar2 = get_num_players(); + if (sVar2 == 1) { + sVar4 = get_video2_settings_height(); + sVar5 = get_video2_settings_uly(); + sVar6 = get_video2_settings_txtClipH(); + if ((longlong)sVar6 <= (longlong)((int)sVar5 + (int)sVar4)) { + return puVar8; + } + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + *puVar8 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe; + sVar4 = get_video2_settings_uly(); + sVar5 = get_video2_settings_height(); + puVar8[1] = ((int)sVar5 + (int)sVar4 & 0x3ffU) << 2; + puVar8[3] = 0; + puVar8[2] = 0xe7000000; + puVar9 = puVar8; } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - *puVar8 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe; - sVar4 = get_video2_settings_uly(); - sVar5 = get_video2_settings_height(); - puVar8[1] = ((int)sVar5 + (int)sVar4 & 0x3ffU) << 2; - puVar8[3] = 0; - puVar8[2] = 0xe7000000; - puVar9 = puVar8; - } - else { - uVar3 = get_cur_playernum(); - iVar2 = proc_7F09B4D8(uVar3); - if (iVar2 != 0) { - return puVar8; + else { + uVar3 = get_cur_playernum(); + iVar1 = proc_7F09B4D8(uVar3); + if (iVar1 != 0) { + return puVar8; + } + sVar4 = get_video2_settings_height(); + sVar5 = get_video2_settings_height(); + sVar6 = get_video2_settings_uly(); + sVar7 = get_video2_settings_txtClipH(); + if ((longlong)((int)sVar6 + (int)sVar5 + (int)sVar4) < (longlong)sVar7) { + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + *puVar8 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe + ; + sVar4 = get_video2_settings_height(); + sVar5 = get_video2_settings_uly(); + sVar6 = get_video2_settings_height(); + puVar8[1] = ((int)sVar6 + (int)sVar5 + (int)sVar4 & 0x3ffU) << 2; + puVar8[2] = 0xe7000000; + puVar8[3] = 0; + puVar8 = puVar8 + 4; + } + sVar4 = get_video2_settings_txtClipW(); + puVar8[1] = 0x1dc; + *puVar8 = ((int)sVar4 - 1U & 0x3ff) << 0xe | 0xf60001e0; + puVar8[2] = 0xe7000000; + puVar8[3] = 0; + puVar9 = puVar8 + 4; + sVar2 = get_num_players(); + if (2 < sVar2) { + sVar4 = get_video2_settings_txtClipH(); + *puVar9 = ((int)sVar4 - 1U & 0x3ff) << 2 | 0xf6280000; + puVar8[5] = 0x27c000; + puVar8[6] = 0xe7000000; + puVar8[7] = 0; + puVar9 = puVar8 + 8; + } + sVar2 = get_num_players(); + if (sVar2 != 3) { + return puVar9; + } + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + *puVar9 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe; + puVar9[1] = 0x2841e4; + puVar9[2] = 0xe7000000; + puVar9[3] = 0; } - sVar4 = get_video2_settings_height(); - sVar5 = get_video2_settings_height(); - sVar6 = get_video2_settings_uly(); - sVar7 = get_video2_settings_txtClipH(); - if ((longlong)((int)sVar6 + (int)sVar5 + (int)sVar4) < (longlong)sVar7) { - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - *puVar8 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe; - sVar4 = get_video2_settings_height(); - sVar5 = get_video2_settings_uly(); - sVar6 = get_video2_settings_height(); - puVar8[1] = ((int)sVar6 + (int)sVar5 + (int)sVar4 & 0x3ffU) << 2; - puVar8[2] = 0xe7000000; - puVar8[3] = 0; - puVar8 = puVar8 + 4; - } - sVar4 = get_video2_settings_txtClipW(); - puVar8[1] = 0x1dc; - *puVar8 = ((int)sVar4 - 1U & 0x3ff) << 0xe | 0xf60001e0; - puVar8[2] = 0xe7000000; - puVar8[3] = 0; - puVar9 = puVar8 + 4; - uVar1 = get_num_players(); - if (2 < (longlong)uVar1) { - sVar4 = get_video2_settings_txtClipH(); - *puVar9 = ((int)sVar4 - 1U & 0x3ff) << 2 | 0xf6280000; - puVar8[5] = 0x27c000; - puVar8[6] = 0xe7000000; - puVar8[7] = 0; - puVar9 = puVar8 + 8; - } - uVar1 = get_num_players(); - if (uVar1 != 3) { - return puVar9; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - *puVar9 = ((int)sVar5 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar4 - 1U & 0x3ff) << 0xe; - puVar9[1] = 0x2841e4; - puVar9[2] = 0xe7000000; - puVar9[3] = 0; - } - return puVar9 + 4; + return puVar9 + 4; } @@ -2596,8 +2576,8 @@ uint * setupscreensfornumplayers(undefined4 *param_1) void set_video_mp_related_800232A0(s32 param_1) { - video_mp_related_800232A0 = param_1; - return; + video_mp_related_800232A0 = param_1; + return; } @@ -2605,7 +2585,7 @@ void set_video_mp_related_800232A0(s32 param_1) s32 get_video_mp_related_800232A0(void) { - return video_mp_related_800232A0; + return video_mp_related_800232A0; } @@ -2613,8 +2593,8 @@ s32 get_video_mp_related_800232A0(void) void set_video_mp_related_8002329C(undefined4 param_1) { - video_mp_related_8002329C = param_1; - return; + video_mp_related_8002329C = param_1; + return; } @@ -2622,7 +2602,7 @@ void set_video_mp_related_8002329C(undefined4 param_1) undefined4 get_video_mp_related_8002329C(void) { - return video_mp_related_8002329C; + return video_mp_related_8002329C; } @@ -2630,9 +2610,9 @@ undefined4 get_video_mp_related_8002329C(void) void set_video2_settings_offset_18_1A(short param_1,short param_2) { - ptr_video_settings2->anonymous_7 = param_1; - ptr_video_settings2->anonymous_8 = param_2; - return; + ptr_video_settings2->somethingW = param_1; + ptr_video_settings2->somethingH = param_2; + return; } @@ -2640,7 +2620,7 @@ void set_video2_settings_offset_18_1A(short param_1,short param_2) short get_video2_settings_offset_18(void) { - return ptr_video_settings2->anonymous_7; + return ptr_video_settings2->somethingW; } @@ -2648,7 +2628,7 @@ short get_video2_settings_offset_18(void) short get_video2_settings_offset_1A(void) { - return ptr_video_settings2->anonymous_8; + return ptr_video_settings2->somethingH; } @@ -2656,17 +2636,17 @@ short get_video2_settings_offset_1A(void) void set_video2_text_clip_size(short txtClipW,short txtClipH) { - ptr_video_settings2->txtClipW = txtClipW; - ptr_video_settings2->txtClipH = txtClipH; - return; + ptr_video_settings2->txtClipW = txtClipW; + ptr_video_settings2->txtClipH = txtClipH; + return; } -short get_video2_settings_txtClipW(void) +s16 get_video2_settings_txtClipW(void) { - return ptr_video_settings2->txtClipW; + return ptr_video_settings2->txtClipW; } @@ -2674,7 +2654,7 @@ short get_video2_settings_txtClipW(void) short get_video2_settings_txtClipH(void) { - return ptr_video_settings2->txtClipH; + return ptr_video_settings2->txtClipH; } @@ -2682,12 +2662,12 @@ short get_video2_settings_txtClipH(void) void set_video2_width_height(short width,short height) { - ptr_video_settings2->width = width; - ptr_video_settings2->height = height; - set_BONDdata_screensize - ((float)(int)ptr_video_settings2->width,(float)(int)ptr_video_settings2->height); - proc_7F077C5C(); - return; + ptr_video_settings2->width = width; + ptr_video_settings2->height = height; + set_BONDdata_screensize + ((float)(int)ptr_video_settings2->width,(float)(int)ptr_video_settings2->height); + proc_7F077C5C(); + return; } @@ -2695,7 +2675,7 @@ void set_video2_width_height(short width,short height) short get_video2_settings_width(void) { - return ptr_video_settings2->width; + return ptr_video_settings2->width; } @@ -2703,7 +2683,7 @@ short get_video2_settings_width(void) short get_video2_settings_height(void) { - return ptr_video_settings2->height; + return ptr_video_settings2->height; } @@ -2711,10 +2691,11 @@ short get_video2_settings_height(void) void set_video2_ulx_uly(short ulx,short uly) { - ptr_video_settings2->ulx = ulx; - ptr_video_settings2->uly = uly; - set_ulx_uly((f32)(float)(int)ptr_video_settings2->ulx,(f32)(float)(int)ptr_video_settings2->uly); - return; + ptr_video_settings2->ulx = ulx; + ptr_video_settings2->uly = uly; + set_ulx_uly((f32)(float)(int)ptr_video_settings2->ulx,(f32)(float)(int)ptr_video_settings2->uly) + ; + return; } @@ -2722,7 +2703,7 @@ void set_video2_ulx_uly(short ulx,short uly) short get_video2_settings_ulx(void) { - return ptr_video_settings2->ulx; + return ptr_video_settings2->ulx; } @@ -2730,7 +2711,7 @@ short get_video2_settings_ulx(void) short get_video2_settings_uly(void) { - return ptr_video_settings2->uly; + return ptr_video_settings2->uly; } @@ -2738,21 +2719,21 @@ short get_video2_settings_uly(void) void set_video2_settings_offset_24(int param_1) { - ptr_video_settings2->anonymous_12 = param_1; - return; + ptr_video_settings2->anonymous_12 = param_1; + return; } -void video_related_1F(f32 param_1) +void setvideo_far(f32 param_1) { - f32 arg2; - - *(f32 *)&ptr_video_settings2->far = param_1; - sub_GAME_7F077C30((f32)ptr_video_settings2->aspect,(f32)ptr_video_settings2->far,arg2); - proc_7F077C5C(); - return; + f32 in_a0_lo; + + ptr_video_settings2->far = param_1; + sub_GAME_7F077C30(ptr_video_settings2->aspect,ptr_video_settings2->far,in_a0_lo); + proc_7F077C5C(); + return; } @@ -2760,12 +2741,12 @@ void video_related_1F(f32 param_1) void video_related_21(f32 param_1) { - f32 arg2; - - *(f32 *)&ptr_video_settings2->scale = param_1; - sub_GAME_7F077C30((f32)ptr_video_settings2->aspect,(f32)ptr_video_settings2->far,arg2); - proc_7F077C5C(); - return; + f32 in_a0_lo; + + *(f32 *)&ptr_video_settings2->scale = param_1; + sub_GAME_7F077C30(ptr_video_settings2->aspect,ptr_video_settings2->far,in_a0_lo); + proc_7F077C5C(); + return; } @@ -2773,9 +2754,9 @@ void video_related_21(f32 param_1) undefined4 video_related_23(void) { - undefined4 in_v0_lo; - - return in_v0_lo; + undefined4 in_v0_lo; + + return in_v0_lo; } @@ -2783,23 +2764,25 @@ undefined4 video_related_23(void) void video_related_24(float param_1,float param_2,float param_3) { - ptr_video_settings2->far = param_2; - ptr_video_settings2->scale = param_1 / param_2; - sub_GAME_7F077C30((f32)ptr_video_settings2->aspect,(f32)ptr_video_settings2->far,(f32)param_3); - proc_7F077C5C(); - return; + *(float *)&ptr_video_settings2->far = param_2; + ptr_video_settings2->scale = param_1 / param_2; + sub_GAME_7F077C30(ptr_video_settings2->aspect,ptr_video_settings2->far,(f32)param_3); + proc_7F077C5C(); + return; } -void set_page_height(f32 aspect,f32 param_2,f32 param_3) +void set_page_height(f32 aspect,f32 height) { - *(f32 *)&ptr_video_settings2->aspect = aspect; - *(f32 *)&ptr_video_settings2->anonymous_6 = param_2; - sub_GAME_7F077C30((f32)ptr_video_settings2->aspect,(f32)ptr_video_settings2->far,param_3); - proc_7F077C5C(); - return; + f32 in_a0_lo; + + ptr_video_settings2->aspect = aspect; + *(f32 *)&ptr_video_settings2->aspect_height = height; + sub_GAME_7F077C30(ptr_video_settings2->aspect,ptr_video_settings2->far,in_a0_lo); + proc_7F077C5C(); + return; } @@ -2807,9 +2790,9 @@ void set_page_height(f32 aspect,f32 param_2,f32 param_3) void video_related_27(undefined4 *param_1) { - *(float *)param_1 = ptr_video_settings2->aspect; - *(float *)(param_1 + 1) = ptr_video_settings2->anonymous_6; - return; + *(f32 *)param_1 = ptr_video_settings2->aspect; + *(float *)(param_1 + 1) = ptr_video_settings2->aspect_height; + return; } @@ -2817,163 +2800,157 @@ void video_related_27(undefined4 *param_1) undefined4 * set_setfillcolor(undefined4 *DL,uint red,uint green,int blue) { - uint uVar1; - - if (coloroutputmode != 32BIT) { - uVar1 = (red & 0xf8) << 8 | (green & 0xf8) << 3 | blue >> 2 & 0x3eU | 1; + uint uVar1; + + if (coloroutputmode != 32BIT) { + uVar1 = (red & 0xf8) << 8 | (green & 0xf8) << 3 | blue >> 2 & 0x3eU | 1; + *DL = 0xf7000000; + DL[1] = uVar1 << 0x10 | uVar1; + return DL + 2; + } + DL[1] = red << 0x18 | green << 0x10 | blue << 8 | 0xff; *DL = 0xf7000000; - DL[1] = uVar1 << 0x10 | uVar1; return DL + 2; - } - DL[1] = red << 0x18 | green << 0x10 | blue << 8 | 0xff; - *DL = 0xf7000000; - return DL + 2; } -u32 indy_grab_jpg_16bit(void) +void indy_grab_jpg_16bit(void) { - int iVar1; - short iWidth; - short iHeight; - u32 uVar2; - undefined4 iFileSize; - char indybuffer [256]; - - while( true ) { - sprintf(indybuffer,"grab.%d.jpeg",jpg_16bit_grabnum); - iVar1 = check_file_found_on_indy(indybuffer,&iFileSize); - if (iVar1 == 0) break; - jpg_16bit_grabnum += 1; - } - sprintf(indybuffer,"grab.%d.temp.uix",jpg_16bit_grabnum); - iWidth = get_video2_settings_txtClipW(); - iHeight = get_video2_settings_txtClipH(); - indy_send_capture_data - (indybuffer,(undefined *)ptr_video_settings2->frameb,(int)iHeight * (int)iWidth * 2); - sprintf(indybuffer,"uix2pix grab.%d.temp.uix",jpg_16bit_grabnum); - send_command_string(indybuffer); - sprintf(indybuffer,"fromalias grab.%d.temp.pix grab.%d.temp.rgb",jpg_16bit_grabnum, - jpg_16bit_grabnum); - send_command_string(indybuffer); - sprintf(indybuffer,"imgcopy -fjfif grab.%d.temp.rgb grab.%d.jpeg",jpg_16bit_grabnum, - jpg_16bit_grabnum); - send_command_string(indybuffer); - sprintf(indybuffer,"rm grab.%d.temp.uix grab.%d.temp.pix grab.%d.temp.rgb",jpg_16bit_grabnum, - jpg_16bit_grabnum,jpg_16bit_grabnum); - send_command_string(indybuffer); - sprintf(indybuffer,"imgview grab.%d.jpeg",jpg_16bit_grabnum); - uVar2 = send_command_string(indybuffer); - return uVar2; + int iVar1; + short iWidth; + short iHeight; + undefined4 iFileSize; + char indyFileName [256]; + + while( true ) { + sprintf(indyFileName,"grab.%d.jpeg",jpg_16bit_grabnum); + iVar1 = check_file_found_on_indy(indyFileName,&iFileSize); + if (iVar1 == 0) break; + jpg_16bit_grabnum += 1; + } + sprintf(indyFileName,"grab.%d.temp.uix",jpg_16bit_grabnum); + iWidth = get_video2_settings_txtClipW(); + iHeight = get_video2_settings_txtClipH(); + indy_send_capture_data(indyFileName,ptr_video_settings2->frameb,(int)iHeight * (int)iWidth * 2); + sprintf(indyFileName,"uix2pix grab.%d.temp.uix",jpg_16bit_grabnum); + send_command_string(indyFileName); + sprintf(indyFileName,"fromalias grab.%d.temp.pix grab.%d.temp.rgb",jpg_16bit_grabnum, + jpg_16bit_grabnum); + send_command_string(indyFileName); + sprintf(indyFileName,"imgcopy -fjfif grab.%d.temp.rgb grab.%d.jpeg",jpg_16bit_grabnum, + jpg_16bit_grabnum); + send_command_string(indyFileName); + sprintf(indyFileName,"rm grab.%d.temp.uix grab.%d.temp.pix grab.%d.temp.rgb",jpg_16bit_grabnum, + jpg_16bit_grabnum,jpg_16bit_grabnum); + send_command_string(indyFileName); + sprintf(indyFileName,"imgview grab.%d.jpeg",jpg_16bit_grabnum); + send_command_string(indyFileName); + return; } -u32 indy_grab_jpg_32bit(void) +void indy_grab_jpg_32bit(void) { - int iVar1; - short iWidth; - short iHeight; - undefined2 uVar3; - u32 uVar2; - undefined4 iFileSize; - char iFileName [256]; - - while( true ) { - sprintf(iFileName,"grab.%d.jpeg",jpg_32bit_grabnum); - iVar1 = check_file_found_on_indy(iFileName,&iFileSize); - if (iVar1 == 0) break; - jpg_32bit_grabnum += 1; - } - sprintf(iFileName,"grab.%d.temp.Uix",jpg_32bit_grabnum); - iWidth = get_video2_settings_txtClipW(); - iHeight = get_video2_settings_txtClipH(); - indy_send_capture_data(iFileName,cfb_16_a,(int)iHeight * (int)iWidth * 4); - uVar3 = get_video2_settings_txtClipW(); - sprintf(iFileName,"Uix2pix -xs%d grab.%d.temp.Uix",uVar3,jpg_32bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"fromalias grab.%d.temp.pix grab.%d.temp.rgb",jpg_32bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"imgcopy -fjfif grab.%d.temp.rgb grab.%d.jpeg",jpg_32bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"rm grab.%d.temp.Uix grab.%d.temp.pix grab.%d.temp.rgb",jpg_32bit_grabnum, - jpg_32bit_grabnum,jpg_32bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"imgview grab.%d.jpeg",jpg_32bit_grabnum); - uVar2 = send_command_string(iFileName); - return uVar2; + int iVar1; + short iWidth; + short iHeight; + undefined2 uVar2; + undefined4 iFileSize; + char iFileName [256]; + + while( true ) { + sprintf(iFileName,"grab.%d.jpeg",jpg_32bit_grabnum); + iVar1 = check_file_found_on_indy(iFileName,&iFileSize); + if (iVar1 == 0) break; + jpg_32bit_grabnum += 1; + } + sprintf(iFileName,"grab.%d.temp.Uix",jpg_32bit_grabnum); + iWidth = get_video2_settings_txtClipW(); + iHeight = get_video2_settings_txtClipH(); + indy_send_capture_data(iFileName,cfb_16_a,(int)iHeight * (int)iWidth * 4); + uVar2 = get_video2_settings_txtClipW(); + sprintf(iFileName,"Uix2pix -xs%d grab.%d.temp.Uix",uVar2,jpg_32bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"fromalias grab.%d.temp.pix grab.%d.temp.rgb",jpg_32bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"imgcopy -fjfif grab.%d.temp.rgb grab.%d.jpeg",jpg_32bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"rm grab.%d.temp.Uix grab.%d.temp.pix grab.%d.temp.rgb",jpg_32bit_grabnum, + jpg_32bit_grabnum,jpg_32bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"imgview grab.%d.jpeg",jpg_32bit_grabnum); + send_command_string(iFileName); + return; } -u32 indy_grab_rgb_16bit(void) +void indy_grab_rgb_16bit(void) { - int iVar1; - short iWidth; - short iHeight; - u32 uVar2; - undefined4 iFileSize; - char iFileName [256]; - - while( true ) { - sprintf(iFileName,"grab.%d.rgb",rgb_16bit_grabnum); - iVar1 = check_file_found_on_indy(iFileName,&iFileSize); - if (iVar1 == 0) break; - rgb_16bit_grabnum += 1; - } - sprintf(iFileName,"grab.%d.temp.uix",rgb_16bit_grabnum); - iWidth = get_video2_settings_txtClipW(); - iHeight = get_video2_settings_txtClipH(); - indy_send_capture_data - (iFileName,(undefined *)ptr_video_settings2->frameb,(int)iHeight * (int)iWidth * 2); - sprintf(iFileName,"uix2pix grab.%d.temp.uix",rgb_16bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"fromalias grab.%d.temp.pix grab.%d.rgb",rgb_16bit_grabnum,rgb_16bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"rm grab.%d.temp.uix grab.%d.temp.pix",rgb_16bit_grabnum,rgb_16bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"imgview grab.%d.rgb",rgb_16bit_grabnum); - uVar2 = send_command_string(iFileName); - return uVar2; + int iVar1; + short iWidth; + short iHeight; + undefined4 iFileSize; + char iFileName [256]; + + while( true ) { + sprintf(iFileName,"grab.%d.rgb",rgb_16bit_grabnum); + iVar1 = check_file_found_on_indy(iFileName,&iFileSize); + if (iVar1 == 0) break; + rgb_16bit_grabnum += 1; + } + sprintf(iFileName,"grab.%d.temp.uix",rgb_16bit_grabnum); + iWidth = get_video2_settings_txtClipW(); + iHeight = get_video2_settings_txtClipH(); + indy_send_capture_data(iFileName,ptr_video_settings2->frameb,(int)iHeight * (int)iWidth * 2); + sprintf(iFileName,"uix2pix grab.%d.temp.uix",rgb_16bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"fromalias grab.%d.temp.pix grab.%d.rgb",rgb_16bit_grabnum,rgb_16bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"rm grab.%d.temp.uix grab.%d.temp.pix",rgb_16bit_grabnum,rgb_16bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"imgview grab.%d.rgb",rgb_16bit_grabnum); + send_command_string(iFileName); + return; } -u32 indy_grab_rgb_32bit(void) +void indy_grab_rgb_32bit(void) { - int iVar1; - short iWidth; - short iHeight; - undefined2 uVar3; - u32 uVar2; - undefined4 iFileSize; - char iFileName [256]; - - while( true ) { - sprintf(iFileName,"grab.%d.rgb",rgb_32bit_grabnum); - iVar1 = check_file_found_on_indy(iFileName,&iFileSize); - if (iVar1 == 0) break; - rgb_32bit_grabnum += 1; - } - sprintf(iFileName,"grab.%d.temp.Uix",rgb_32bit_grabnum); - iWidth = get_video2_settings_txtClipW(); - iHeight = get_video2_settings_txtClipH(); - indy_send_capture_data(iFileName,cfb_16_a,(int)iHeight * (int)iWidth * 4); - uVar3 = get_video2_settings_txtClipW(); - sprintf(iFileName,"Uix2pix -xs%d grab.%d.temp.Uix",uVar3,rgb_32bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"fromalias grab.%d.temp.pix grab.%d.rgb",rgb_32bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"rm grab.%d.temp.Uix grab.%d.temp.pix",rgb_32bit_grabnum); - send_command_string(iFileName); - sprintf(iFileName,"imgview grab.%d.rgb",rgb_32bit_grabnum); - uVar2 = send_command_string(iFileName); - return uVar2; + int iVar1; + short iWidth; + short iHeight; + undefined2 uVar2; + undefined4 iFileSize; + char iFileName [256]; + + while( true ) { + sprintf(iFileName,"grab.%d.rgb",rgb_32bit_grabnum); + iVar1 = check_file_found_on_indy(iFileName,&iFileSize); + if (iVar1 == 0) break; + rgb_32bit_grabnum += 1; + } + sprintf(iFileName,"grab.%d.temp.Uix",rgb_32bit_grabnum); + iWidth = get_video2_settings_txtClipW(); + iHeight = get_video2_settings_txtClipH(); + indy_send_capture_data(iFileName,cfb_16_a,(int)iHeight * (int)iWidth * 4); + uVar2 = get_video2_settings_txtClipW(); + sprintf(iFileName,"Uix2pix -xs%d grab.%d.temp.Uix",uVar2,rgb_32bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"fromalias grab.%d.temp.pix grab.%d.rgb",rgb_32bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"rm grab.%d.temp.Uix grab.%d.temp.pix",rgb_32bit_grabnum); + send_command_string(iFileName); + sprintf(iFileName,"imgview grab.%d.rgb",rgb_32bit_grabnum); + send_command_string(iFileName); + return; } @@ -2981,24 +2958,24 @@ u32 indy_grab_rgb_32bit(void) int * return_match_in_debug_notice_list(char *name,char *data) { - longlong lVar1; - byte *pbVar2; - int *piVar3; - - if (debug_notice_list == 0) { + longlong lVar1; + byte *pbVar2; + int *piVar3; + + if (debug_notice_list == 0) { LAB_70004d68: - piVar3 = NULL; - } - else { - pbVar2 = *(byte **)(debug_notice_list + 8); - piVar3 = (int *)debug_notice_list; - while (lVar1 = something_with_strings_0(pbVar2,name), lVar1 != 0) { - piVar3 = (int *)*piVar3; - if (piVar3 == NULL) goto LAB_70004d68; - pbVar2 = (byte *)piVar3[2]; + piVar3 = NULL; } - } - return piVar3; + else { + pbVar2 = *(byte **)(debug_notice_list + 8); + piVar3 = (int *)debug_notice_list; + while (lVar1 = something_with_strings_0(pbVar2,name), lVar1 != 0) { + piVar3 = (int *)*piVar3; + if (piVar3 == NULL) goto LAB_70004d68; + pbVar2 = (byte *)piVar3[2]; + } + } + return piVar3; } @@ -3006,12 +2983,12 @@ LAB_70004d68: void get_entry_of_size_in_debug_notice_list(int size) { - debug_notice_list_data = debug_notice_list_data + size; - if (&thread_video_manager_debugthread < debug_notice_list_data) { - debug_notice_list_data = debug_notice_list_data + -size; - allocate_bytes_in_bank(size,6); - } - return; + debug_notice_list_data = debug_notice_list_data + size; + if (&thread_video_manager_debugthread < debug_notice_list_data) { + debug_notice_list_data = debug_notice_list_data + -size; + mempAllocBytesInBank(size,'\x06'); + } + return; } @@ -3019,14 +2996,14 @@ void get_entry_of_size_in_debug_notice_list(int size) void add_new_entry_to_debug_notice_list(dword name,dword data) { - dword *in_v0_lo; - - get_entry_of_size_in_debug_notice_list(0x10); - *in_v0_lo = debug_notice_list; - in_v0_lo[1] = data; - in_v0_lo[2] = name; - debug_notice_list = (dword)in_v0_lo; - return; + dword *in_v0_lo; + + get_entry_of_size_in_debug_notice_list(0x10); + *in_v0_lo = debug_notice_list; + in_v0_lo[1] = data; + in_v0_lo[2] = name; + debug_notice_list = (dword)in_v0_lo; + return; } @@ -3034,9 +3011,9 @@ void add_new_entry_to_debug_notice_list(dword name,dword data) void add_debug_notice_deb_c_debug(void) { - get_ptr_debug_notice_list_entry(&deb_c_ptr_debug_notice_list_entry,"deb_c_debug"); - init_tlb(); - return; + get_ptr_debug_notice_list_entry(&deb_c_ptr_debug_notice_list_entry,"deb_c_debug"); + init_tlb(); + return; } @@ -3044,13 +3021,13 @@ void add_debug_notice_deb_c_debug(void) void get_ptr_debug_notice_list_entry(void *data,char *name) { - int *piVar1; - - piVar1 = return_match_in_debug_notice_list(name,name); - if (piVar1 == NULL) { - add_new_entry_to_debug_notice_list(name,data); - } - return; + int *piVar1; + + piVar1 = return_match_in_debug_notice_list(name,name); + if (piVar1 == NULL) { + add_new_entry_to_debug_notice_list(name,data); + } + return; } @@ -3058,15 +3035,15 @@ void get_ptr_debug_notice_list_entry(void *data,char *name) void scan_debug_notice_list_till_NULL(void) { - undefined4 *puVar1; - - if (debug_notice_list != 0) { - puVar1 = *(undefined4 **)debug_notice_list; - while (puVar1 != NULL) { - puVar1 = (undefined4 *)*puVar1; + undefined4 *puVar1; + + if (debug_notice_list != 0) { + puVar1 = *(undefined4 **)debug_notice_list; + while (puVar1 != NULL) { + puVar1 = (undefined4 *)*puVar1; + } } - } - return; + return; } @@ -3074,7 +3051,7 @@ void scan_debug_notice_list_till_NULL(void) void proc_70004EBC(void) { - return; + return; } @@ -3082,7 +3059,7 @@ void proc_70004EBC(void) void debug_removed(undefined4 param_1,undefined4 param_2,undefined4 param_3) { - return; + return; } @@ -3090,12 +3067,12 @@ void debug_removed(undefined4 param_1,undefined4 param_2,undefined4 param_3) void init_tlb(void) { - set_video_buffer_pointers(); - osCreateMesgQueue(&interrupt_entry_c_buffer,&OSMesg_80063658,1); - osCreateThread((OSThread *)&thread_video_manager_debugthread,5,translate_7F_address,NULL,&sp_tlb, - 0x28); - osStartThread((OSThread *)&thread_video_manager_debugthread); - return; + set_video_buffer_pointers(); + osCreateMesgQueue(&interrupt_entry_c_buffer,&OSMesg_80063658,1); + osCreateThread((OSThread *)&thread_video_manager_debugthread,5,translate_7F_address,NULL,&sp_tlb + ,0x28); + osStartThread((OSThread *)&thread_video_manager_debugthread); + return; } @@ -3107,31 +3084,31 @@ void init_tlb(void) void translate_7F_address(void *param_1) { - OSIntMask save_mask; - OSMesg pvStack4; - - pvStack4 = NULL; - osSetEventMesg(); - DAT_80063660 = 0; - while( true ) { - do { - osRecvMesg(&interrupt_entry_c_buffer,&pvStack4,1); - save_mask = osSetIntMask(1); - missingthread = __osGetCurrFaultedThread(); - } while (missingthread == NULL); - if ((((missingthread->context).badvaddr & 0x7c) != 8) || - (((missingthread->context).rcp & 0xffc00000) != 0x7f000000)) break; - translate_load_rom_from_TLBaddress((void *)(missingthread->context).rcp); - missingthread->state = 10; - missingthread->flags = 0; - __osEnqueueThread(&__osRunQueue,missingthread); + OSIntMask save_mask; + OSMesg pvStack4; + + pvStack4 = NULL; + osSetEventMesg(0xc,&interrupt_entry_c_buffer,&caseD_0); + DAT_80063660 = 0; + while( true ) { + do { + osRecvMesg(&interrupt_entry_c_buffer,&pvStack4,1); + save_mask = osSetIntMask(1); + missingthread = __osGetCurrFaultedThread(); + } while (missingthread == NULL); + if ((((missingthread->context).badvaddr & 0x7c) != 8) || + (((missingthread->context).rcp & 0xffc00000) != 0x7f000000)) break; + translate_load_rom_from_TLBaddress((void *)(missingthread->context).rcp); + missingthread->state = 10; + missingthread->flags = 0; + __osEnqueueThread(&__osRunQueue,missingthread); + osSetIntMask(save_mask); + osYieldThread(); + } osSetIntMask(save_mask); - osYieldThread(); - } - osSetIntMask(save_mask); - do { + do { // WARNING: Do nothing block with infinite loop - } while( true ); + } while( true ); } @@ -3139,61 +3116,61 @@ void translate_7F_address(void *param_1) int debug_related_8(uint *op_cur,uint *op_start,int fn_sp,undefined4 *fn_reg) { - bool bVar1; - bool bVar2; - int iVar3; - undefined4 *puVar4; - short sVar5; - uint uVar6; - - bVar2 = false; - bVar1 = false; - iVar3 = 0; - puVar4 = fn_reg; - do { - iVar3 += 4; - *puVar4 = 0; - puVar4[1] = 0; - puVar4[2] = 0; - puVar4[3] = 0; - puVar4 = puVar4 + 4; - } while (iVar3 != 0x20); - if (op_cur < op_start) { + bool bVar1; + bool bVar2; + int iVar3; + undefined4 *puVar4; + short sVar5; + uint uVar6; + + bVar2 = false; + bVar1 = false; + iVar3 = 0; + puVar4 = fn_reg; + do { + iVar3 += 4; + *puVar4 = 0; + puVar4[1] = 0; + puVar4[2] = 0; + puVar4[3] = 0; + puVar4 = puVar4 + 4; + } while (iVar3 != 0x20); + if (op_cur < op_start) { LAB_700051b8: - if (bVar2) { - if (!bVar1) { - fn_sp = 0; - } - } - else { - fn_sp = 0; - } - return fn_sp; - } - uVar6 = *op_cur; - do { - op_cur = op_cur + -1; - sVar5 = (short)uVar6; - if ((uVar6 & 0xffff0000) == 0x27bd0000) { - bVar2 = true; - if ((0 < (int)sVar5) || (fn_sp += ((int)sVar5 >> 2) * -4, bVar1)) goto LAB_700051b8; - } - else { - if ((uVar6 & 0xffe00000) == 0xafa00000) { - uVar6 = uVar6 >> 0x10 & 0x1f; - fn_reg[uVar6] = ((int)sVar5 >> 2) * 4 + fn_sp; - if (uVar6 == 0x1f) { - bVar1 = true; + if (bVar2) { + if (!bVar1) { + fn_sp = 0; + } } - if ((bVar2) && (bVar1)) goto LAB_700051b8; - } - else { - if (uVar6 == 0x3e00008) goto LAB_700051b8; - } + else { + fn_sp = 0; + } + return fn_sp; } - if (op_cur < op_start) goto LAB_700051b8; uVar6 = *op_cur; - } while( true ); + do { + op_cur = op_cur + -1; + sVar5 = (short)uVar6; + if ((uVar6 & 0xffff0000) == 0x27bd0000) { + bVar2 = true; + if ((0 < (int)sVar5) || (fn_sp += ((int)sVar5 >> 2) * -4, bVar1)) goto LAB_700051b8; + } + else { + if ((uVar6 & 0xffe00000) == 0xafa00000) { + uVar6 = uVar6 >> 0x10 & 0x1f; + fn_reg[uVar6] = ((int)sVar5 >> 2) * 4 + fn_sp; + if (uVar6 == 0x1f) { + bVar1 = true; + } + if ((bVar2) && (bVar1)) goto LAB_700051b8; + } + else { + if (uVar6 == 0x3e00008) goto LAB_700051b8; + } + } + if (op_cur < op_start) goto LAB_700051b8; + uVar6 = *op_cur; + } while( true ); } @@ -3201,16 +3178,16 @@ LAB_700051b8: BOOL was_opcode_a_jal_r_within_70000450_70020D90(u32 *function) { - if (((((uint)function & 3) == 0) && ((u32 *)0x7000044f < function)) && - (function < (u32 *)0x70020d91)) { - if ((function[-2] & 0xfc00003c) == 9) { - return TRUE; + if (((((uint)function & 3) == 0) && ((u32 *)0x7000044f < function)) && + (function < (u32 *)0x70020d91)) { + if ((function[-2] & 0xfc00003c) == 9) { + return TRUE; + } + if ((function[-2] & 0xfc000000) == 0xc000000) { + return TRUE; + } } - if ((function[-2] & 0xfc000000) == 0xc000000) { - return TRUE; - } - } - return FALSE; + return FALSE; } @@ -3218,19 +3195,19 @@ BOOL was_opcode_a_jal_r_within_70000450_70020D90(u32 *function) int return_strlen(char *str) { - char cVar1; - int iVar2; - char *pcVar3; - - iVar2 = 0; - pcVar3 = str + 1; - if (*str != '\0') { - iVar2 = 1; - while ((iVar2 < 0x100 && (cVar1 = *pcVar3, pcVar3 = pcVar3 + 1, cVar1 != '\0'))) { - iVar2 += 1; + char cVar1; + int iVar2; + char *pcVar3; + + iVar2 = 0; + pcVar3 = str + 1; + if (*str != '\0') { + iVar2 = 1; + while ((iVar2 < 0x100 && (cVar1 = *pcVar3, pcVar3 = pcVar3 + 1, cVar1 != '\0'))) { + iVar2 += 1; + } } - } - return iVar2; + return iVar2; } @@ -3238,22 +3215,22 @@ int return_strlen(char *str) uint indy_file_get_address_subsequent_data(int hardware_address) { - int iVar1; - int iVar2; - uint uVar3; - - romCopy(ARRAY_80063670,(char *)hardware_address,0x60); - current_indy_read_buf_resourceID = ARRAY_80063670._0_4_; - PTR_80063668 = ARRAY_80063670 + 4; - iVar1 = return_strlen(ARRAY_80063670 + 4); - PTR_8006366c = PTR_80063668 + iVar1 + 1; - iVar1 = return_strlen(PTR_80063668); - iVar2 = return_strlen(PTR_8006366c); - uVar3 = iVar2 + hardware_address + iVar1 + 6; - if ((uVar3 & 3) != 0) { - uVar3 = (uVar3 | 3) + 1; - } - return uVar3; + int iVar1; + int iVar2; + uint uVar3; + + romCopy(ARRAY_80063670,(char *)hardware_address,0x60); + current_indy_read_buf_resourceID = ARRAY_80063670._0_4_; + PTR_80063668 = ARRAY_80063670 + 4; + iVar1 = return_strlen(ARRAY_80063670 + 4); + PTR_8006366c = PTR_80063668 + iVar1 + 1; + iVar1 = return_strlen(PTR_80063668); + iVar2 = return_strlen(PTR_8006366c); + uVar3 = iVar2 + hardware_address + iVar1 + 6; + if ((uVar3 & 3) != 0) { + uVar3 = (uVar3 | 3) + 1; + } + return uVar3; } @@ -3261,22 +3238,22 @@ uint indy_file_get_address_subsequent_data(int hardware_address) undefined8 scan_load_resourceID_from_indy_read_buf(uint resourceID) { - uint uVar1; - uint hardware_address; - uint hardware_address_00; - - hardware_address_00 = 0xe00004; - hardware_address = 0xe00004; - do { - uVar1 = indy_file_get_address_subsequent_data(hardware_address); - if (resourceID < current_indy_read_buf_resourceID) { - indy_file_get_address_subsequent_data(hardware_address_00); - return 1; - } - hardware_address_00 = hardware_address; - hardware_address = uVar1; - } while (current_indy_read_buf_resourceID != 0); - return 0; + uint uVar1; + uint hardware_address; + uint hardware_address_00; + + hardware_address_00 = 0xe00004; + hardware_address = 0xe00004; + do { + uVar1 = indy_file_get_address_subsequent_data(hardware_address); + if (resourceID < current_indy_read_buf_resourceID) { + indy_file_get_address_subsequent_data(hardware_address_00); + return 1; + } + hardware_address_00 = hardware_address; + hardware_address = uVar1; + } while (current_indy_read_buf_resourceID != 0); + return 0; } @@ -3284,8 +3261,8 @@ undefined8 scan_load_resourceID_from_indy_read_buf(uint resourceID) ulonglong is_valid_indy_read_buf_resourceID(void) { - indy_file_get_address_subsequent_data(0xe00000); - return (ulonglong)(current_indy_read_buf_resourceID == -0x7d9b8a42); + indy_file_get_address_subsequent_data(0xe00000); + return (ulonglong)(current_indy_read_buf_resourceID == -0x7d9b8a42); } @@ -3293,7 +3270,7 @@ ulonglong is_valid_indy_read_buf_resourceID(void) void debug_indy_stub(void) { - return; + return; } @@ -3301,7 +3278,7 @@ void debug_indy_stub(void) void debug_indy_stub_0(void) { - return; + return; } @@ -3309,7 +3286,7 @@ void debug_indy_stub_0(void) void debug_indy_stub_1(void) { - return; + return; } @@ -3317,7 +3294,7 @@ void debug_indy_stub_1(void) undefined4 return_indy_read_buf_resourceID(void) { - return current_indy_read_buf_resourceID; + return current_indy_read_buf_resourceID; } @@ -3325,20 +3302,33 @@ undefined4 return_indy_read_buf_resourceID(void) uint debug_sp_related_11(void *addressspace,u32 entrynum) { - uint uVar1; - uint local_28 [5]; - int local_14 [5]; - - if (((int)entrynum < 1) || (5 < entrynum)) { - uVar1 = 0; - } - else { - uVar1 = local_28[entrynum]; - if (addressspace < &UT_VEC) { - uVar1 = (uint)addressspace & 0xf0000000 | uVar1 - local_14[entrynum]; + undefined *puVar1; + undefined *local_28 [4]; + undefined *local_18; + undefined *local_14 [4]; + undefined *local_4; + + local_14[0] = ptr_sp_rmon_0; + local_14[1] = ptr_sp_idle_0; + local_14[2] = ptr_sp_shed_0; + local_14[3] = ptr_sp_main_0; + local_4 = ptr_sp_audi_0; + local_28[0] = ptr_sp_idle_1; + local_28[1] = ptr_sp_shed_1; + local_28[2] = ptr_sp_main_1; + local_28[3] = ptr_sp_audi_1; + local_18 = ptr_sp_debug_0; + if (((int)entrynum < 1) || (5 < entrynum)) { + puVar1 = NULL; } - } - return uVar1; + else { + puVar1 = local_28[entrynum]; + if (addressspace < &UT_VEC) { + puVar1 = (undefined *) + ((uint)addressspace & 0xf0000000 | (uint)(puVar1 + -(int)local_14[entrynum])); + } + } + return (uint)puVar1; } @@ -3346,19 +3336,25 @@ uint debug_sp_related_11(void *addressspace,u32 entrynum) uint debug_sp_related_12(void *addressspace,u32 entrynum) { - uint uVar1; - uint local_14 [5]; - - if (((int)entrynum < 1) || (5 < entrynum)) { - uVar1 = 0; - } - else { - uVar1 = local_14[entrynum]; - if (addressspace < &UT_VEC) { - uVar1 = (uint)addressspace & 0xf0000000; + undefined *puVar1; + undefined *local_14 [4]; + undefined *local_4; + + local_14[0] = ptr_sp_rmon_1; + local_14[1] = ptr_sp_idle_2; + local_14[2] = ptr_sp_shed_2; + local_14[3] = ptr_sp_main_2; + local_4 = ptr_sp_audi_2; + if (((int)entrynum < 1) || (5 < entrynum)) { + puVar1 = NULL; } - } - return uVar1; + else { + puVar1 = local_14[entrynum]; + if (addressspace < &UT_VEC) { + puVar1 = (undefined *)((uint)addressspace & 0xf0000000); + } + } + return (uint)puVar1; } @@ -3366,20 +3362,20 @@ uint debug_sp_related_12(void *addressspace,u32 entrynum) BOOL _is_normal_single_precision_float(f32 fnum) { - bool bVar1; - BOOL ret; - uint uVar2; - - bVar1 = ((uint)fnum & 0x7fffff) == 0; - ret = (BOOL)bVar1; - if (!bVar1) { - uVar2 = (uint)fnum >> 0x17 & 0xff; - ret = (BOOL)(uVar2 != 0); - if (uVar2 != 0) { - ret = (BOOL)(uVar2 != 0xff); + bool bVar1; + BOOL ret; + uint uVar2; + + bVar1 = ((uint)fnum & 0x7fffff) == 0; + ret = (BOOL)bVar1; + if (!bVar1) { + uVar2 = (uint)fnum >> 0x17 & 0xff; + ret = (BOOL)(uVar2 != 0); + if (uVar2 != 0) { + ret = (BOOL)(uVar2 != 0xff); + } } - } - return ret; + return ret; } @@ -3387,8 +3383,8 @@ BOOL _is_normal_single_precision_float(f32 fnum) void is_normal_single_precision_float(undefined8 target,uint float) { - _is_normal_single_precision_float((f32)float); - return; + _is_normal_single_precision_float((f32)float); + return; } @@ -3397,16 +3393,16 @@ void set_normality_of_single_precision_floats (u64 target,f32 param_2,f32 param_3,f32 param_4,f32 param_5) { - int iVar1; - uint float; - uint float_00; - - iVar1 = (int)target; - is_normal_single_precision_float(target,(uint)param_4); - is_normal_single_precision_float((longlong)(iVar1 + 2),(uint)param_5); - is_normal_single_precision_float((longlong)(iVar1 + 4),float); - is_normal_single_precision_float((longlong)(iVar1 + 6),float_00); - return; + int iVar1; + uint in_a3_lo; + uint in_stack_00000010; + + iVar1 = (int)target; + is_normal_single_precision_float(target,(uint)param_4); + is_normal_single_precision_float((longlong)(iVar1 + 2),(uint)param_5); + is_normal_single_precision_float((longlong)(iVar1 + 4),in_a3_lo); + is_normal_single_precision_float((longlong)(iVar1 + 6),in_stack_00000010); + return; } @@ -3414,7 +3410,7 @@ void set_normality_of_single_precision_floats void proc_70005628(void) { - return; + return; } @@ -3425,16 +3421,16 @@ void proc_70005628(void) void write_char_to_pos_stderr(int xpos,int ypos,byte letter) { - if ((letter == 9) || (letter == 10)) { - letter = 0; - } - if (((letter != 0) && (letter < 0x20)) || (0x7e < letter)) { - letter = 0x3f; - } - if (((-1 < xpos) && (xpos < 0x48)) && ((-1 < ypos && (ypos < 0x20)))) { - stderr_buffer[ypos * 0x47 + xpos] = letter; - } - return; + if ((letter == 9) || (letter == 10)) { + letter = 0; + } + if (((letter != 0) && (letter < 0x20)) || (0x7e < letter)) { + letter = 0x3f; + } + if (((-1 < xpos) && (xpos < 0x48)) && ((-1 < ypos && (ypos < 0x20)))) { + stderr_buffer[ypos * 0x47 + xpos] = letter; + } + return; } @@ -3442,46 +3438,47 @@ void write_char_to_pos_stderr(int xpos,int ypos,byte letter) u32 __osRdbSend(u8 *buf,u32 size,u32 type) { - u32 uVar1; - longlong lVar2; - longlong extraout_a1; - ulonglong letter; - ulonglong extraout_a2; - - lVar2 = (longlong)(int)size; - letter = (longlong)(int)buf & 0xff; - uVar1 = (u32)letter; - letter._7_1_ = (byte)letter; - if (letter != 0) { - if (letter == 9) { - do { - uVar1 = __osRdbSend((u8 *)"GOLDENEYE ",(u32)lVar2,(u32)letter); - lVar2 = extraout_a1; - letter = extraout_a2; - } while ((stderr_buffer._2272_4_ & 7) != 0); - } - else { - if (letter == 10) { - stderr_buffer._2276_4_ += 1; - stderr_buffer._2272_4_ = 0; - } - if (0x1e < stderr_buffer._2276_4_) { - scroll_stderr_oneline((longlong)(stderr_buffer._2276_4_ + -0x1e)); - letter = SEXT48((int)uVar1); - stderr_buffer._2276_4_ = 0x1e; - } - uVar1 = (u32)letter; - if (letter != 10) { - write_char_to_pos_stderr(stderr_buffer._2272_4_,stderr_buffer._2276_4_,(byte)letter); - stderr_buffer._2272_4_ += 1; - if (0x46 < (int)stderr_buffer._2272_4_) { - stderr_buffer._2272_4_ = 0; - stderr_buffer._2276_4_ += 1; + u32 uVar1; + longlong lVar2; + longlong extraout_a1; + ulonglong letter; + ulonglong extraout_a2; + + lVar2 = (longlong)(int)size; + letter = (longlong)(int)buf & 0xff; + uVar1 = (u32)letter; + letter._7_1_ = (byte)letter; + if (letter != 0) { + if (letter == 9) { + do { + uVar1 = __osRdbSend((u8 *)"GOLDENEYE ",(u32)lVar2,(u32)letter); + lVar2 = extraout_a1; + letter = extraout_a2; + } while ((stderr_buffer._2272_4_ & 7) != 0); + } + else { + if (letter == 10) { + stderr_buffer._2276_4_ += 1; + stderr_buffer._2272_4_ = 0; + } + if (0x1e < stderr_buffer._2276_4_) { + scroll_stderr_oneline((longlong)(stderr_buffer._2276_4_ + -0x1e)); + letter = SEXT48((int)uVar1); + stderr_buffer._2276_4_ = 0x1e; + } + uVar1 = (u32)letter; + if (letter != 10) { + write_char_to_pos_stderr(stderr_buffer._2272_4_,stderr_buffer._2276_4_,(byte)letter) + ; + stderr_buffer._2272_4_ += 1; + if (0x46 < (int)stderr_buffer._2272_4_) { + stderr_buffer._2272_4_ = 0; + stderr_buffer._2276_4_ += 1; + } + } } - } } - } - return uVar1; + return uVar1; } @@ -3489,38 +3486,38 @@ u32 __osRdbSend(u8 *buf,u32 size,u32 type) void scroll_stderr_oneline(longlong ypos) { - int iVar1; - undefined1 *puVar2; - int iVar3; - undefined *puVar4; - undefined1 *puVar5; - - iVar3 = (int)ypos; - if (0 < ypos) { - do { - iVar3 += -1; - puVar5 = stderr_buffer; - puVar2 = puVar5; - do { - iVar1 = 3; - *puVar5 = puVar5[0x47]; - puVar5[1] = puVar5[0x48]; - puVar5[2] = puVar5[0x49]; - puVar4 = puVar2 + 3; + int iVar1; + undefined1 *puVar2; + int iVar3; + undefined *puVar4; + undefined1 *puVar5; + + iVar3 = (int)ypos; + if (0 < ypos) { do { - iVar1 += 4; - puVar4[1] = puVar4[0x48]; - puVar4[2] = puVar4[0x49]; - puVar4[3] = puVar4[0x4a]; - *puVar4 = puVar4[0x47]; - puVar4 = puVar4 + 4; - } while (iVar1 != 0x47); - puVar5 = puVar5 + 0x47; - puVar2 = puVar2 + 0x47; - } while (puVar5 != stderr_buffer + 0x899); - } while (0 < iVar3); - } - return; + iVar3 += -1; + puVar5 = stderr_buffer; + puVar2 = puVar5; + do { + iVar1 = 3; + *puVar5 = puVar5[0x47]; + puVar5[1] = puVar5[0x48]; + puVar5[2] = puVar5[0x49]; + puVar4 = puVar2 + 3; + do { + iVar1 += 4; + puVar4[1] = puVar4[0x48]; + puVar4[2] = puVar4[0x49]; + puVar4[3] = puVar4[0x4a]; + *puVar4 = puVar4[0x47]; + puVar4 = puVar4 + 4; + } while (iVar1 != 0x47); + puVar5 = puVar5 + 0x47; + puVar2 = puVar2 + 0x47; + } while (puVar5 != stderr_buffer + 0x899); + } while (0 < iVar3); + } + return; } @@ -3528,52 +3525,52 @@ void scroll_stderr_oneline(longlong ypos) void print_to_vidbuff1(int xpos,int ypos,byte char) { - short sVar1; - undefined2 *puVar2; - ulonglong uVar3; - int iVar4; - uint uVar5; - - sVar1 = get_video2_settings_txtClipW(); - uVar3 = (ulonglong)char; - if (char == 0) { - uVar3 = 0x20; - } - if ((char == 0 || 0x1f < char) && (uVar3 < 0x7f)) { - uVar5 = *(uint *)(stderr_buffer + (int)uVar3 * 4 + 0x868); - iVar4 = 0; - puVar2 = (undefined2 *)(ptr_videobuffer1 + ypos * (int)sVar1 * 2 + xpos * 2); - do { - if ((uVar5 & 0x80000000) == 0) { - *puVar2 = 1; - } - else { - *puVar2 = 0xffff; - } - if ((uVar5 & 0x40000000) == 0) { - puVar2[1] = 1; - } - else { - puVar2[1] = 0xffff; - } - if ((uVar5 & 0x20000000) == 0) { - puVar2[2] = 1; - } - else { - puVar2[2] = 0xffff; - } - if ((uVar5 & 0x10000000) == 0) { - puVar2[3] = 1; - } - else { - puVar2[3] = 0xffff; - } - iVar4 += 1; - uVar5 <<= 4; - puVar2 = puVar2 + (int)sVar1; - } while (iVar4 != 7); - } - return; + short sVar1; + undefined2 *puVar2; + ulonglong uVar3; + int iVar4; + uint uVar5; + + sVar1 = get_video2_settings_txtClipW(); + uVar3 = (ulonglong)char; + if (char == 0) { + uVar3 = 0x20; + } + if ((char == 0 || 0x1f < char) && (uVar3 < 0x7f)) { + uVar5 = *(uint *)(stderr_buffer + (int)uVar3 * 4 + 0x868); + iVar4 = 0; + puVar2 = (undefined2 *)(ptr_videobuffer1 + ypos * sVar1 * 2 + xpos * 2); + do { + if ((uVar5 & 0x80000000) == 0) { + *puVar2 = 1; + } + else { + *puVar2 = 0xffff; + } + if ((uVar5 & 0x40000000) == 0) { + puVar2[1] = 1; + } + else { + puVar2[1] = 0xffff; + } + if ((uVar5 & 0x20000000) == 0) { + puVar2[2] = 1; + } + else { + puVar2[2] = 0xffff; + } + if ((uVar5 & 0x10000000) == 0) { + puVar2[3] = 1; + } + else { + puVar2[3] = 0xffff; + } + iVar4 += 1; + uVar5 <<= 4; + puVar2 = puVar2 + sVar1; + } while (iVar4 != 7); + } + return; } @@ -3581,9 +3578,9 @@ void print_to_vidbuff1(int xpos,int ypos,byte char) void set_ptr_video_buffers(uint *buffer1,uint *buffer2) { - ptr_videobuffer1 = (undefined *)((uint)buffer1 | 0xa0000000); - ptr_videobuffer2 = (undefined *)((uint)buffer2 | 0xa0000000); - return; + ptr_videobuffer1 = (undefined *)((uint)buffer1 | 0xa0000000); + ptr_videobuffer2 = (undefined *)((uint)buffer2 | 0xa0000000); + return; } @@ -3591,8 +3588,8 @@ void set_ptr_video_buffers(uint *buffer1,uint *buffer2) void set_video_buffer_pointers(void) { - set_ptr_video_buffers((uint *)cfb_16_a,(uint *)cfb_16_b); - return; + set_ptr_video_buffers((uint *)cfb_16_a,(uint *)cfb_16_b); + return; } @@ -3600,40 +3597,40 @@ void set_video_buffer_pointers(void) void write_stderr_to_buffer(void *buffer) { - short sVar1; - int iVar2; - int xpos; - byte *pbVar3; - int iVar4; - int iVar5; - - set_video_buffer_pointers(); - ptr_videobuffer1 = (undefined *)((uint)buffer | 0xa0000000); - sVar1 = get_video2_settings_txtClipW(); - iVar2 = (int)sVar1 + -0xd; - if (iVar2 < 0) { - iVar2 = (int)sVar1 + -10; - } - sVar1 = get_video2_settings_txtClipH(); - iVar5 = ((int)sVar1 + -10) / 7 + -1; - iVar4 = 0; - if (0 < iVar5) { - iVar2 = (iVar2 >> 2) + -5; - do { - if (0 < iVar2) { - pbVar3 = stderr_buffer + iVar4 * 0x47; - xpos = 0x14; + short sVar1; + int iVar2; + int xpos; + byte *pbVar3; + int iVar4; + int iVar5; + + set_video_buffer_pointers(); + ptr_videobuffer1 = (undefined *)((uint)buffer | 0xa0000000); + sVar1 = get_video2_settings_txtClipW(); + iVar2 = (int)sVar1 + -0xd; + if (iVar2 < 0) { + iVar2 = (int)sVar1 + -10; + } + sVar1 = get_video2_settings_txtClipH(); + iVar5 = ((int)sVar1 + -10) / 7 + -1; + iVar4 = 0; + if (0 < iVar5) { + iVar2 = (iVar2 >> 2) + -5; do { - print_to_vidbuff1(xpos,iVar4 * 7 + 7,*pbVar3); - xpos += 4; - pbVar3 = pbVar3 + 1; - if (iVar2 * 4 + 0x14 <= xpos) break; - } while (xpos != 0x130); - } - iVar4 += 1; - } while ((iVar4 < iVar5) && (iVar4 != 0x1f)); - } - return; + if (0 < iVar2) { + pbVar3 = stderr_buffer + iVar4 * 0x47; + xpos = 0x14; + do { + print_to_vidbuff1(xpos,iVar4 * 7 + 7,*pbVar3); + xpos += 4; + pbVar3 = pbVar3 + 1; + if (iVar2 * 4 + 0x14 <= xpos) break; + } while (xpos != 0x130); + } + iVar4 += 1; + } while ((iVar4 < iVar5) && (iVar4 != 0x1f)); + } + return; } @@ -3641,19 +3638,19 @@ void write_stderr_to_buffer(void *buffer) s32 return_last_RA_saved_to_stack(undefined4 param_1) { - uint uVar1; - uint *unaff_retaddr; - s32 asStackX0 [4]; - - while( true ) { - uVar1 = *unaff_retaddr >> 0x10; - if (uVar1 == 0x27bd) { - return -1; + uint uVar1; + uint *unaff_retaddr; + s32 asStackX0 [4]; + + while( true ) { + uVar1 = *unaff_retaddr >> 0x10; + if (uVar1 == 0x27bd) { + return -1; + } + if (uVar1 == 0xafbf) break; + unaff_retaddr = unaff_retaddr + -1; } - if (uVar1 == 0xafbf) break; - unaff_retaddr = unaff_retaddr + -1; - } - return *(s32 *)((int)asStackX0 + (int)(short)*unaff_retaddr); + return *(s32 *)((int)asStackX0 + (int)(short)*unaff_retaddr); } @@ -3661,8 +3658,8 @@ s32 return_last_RA_saved_to_stack(undefined4 param_1) void romCreateMesgQueue(void) { - osCreateMesgQueue(&memoryMesgQueue,&memoryMesg,1); - return; + osCreateMesgQueue(&memoryMesgQueue,&memoryMesg,1); + return; } @@ -3670,9 +3667,9 @@ void romCreateMesgQueue(void) void doRomCopy(void *target,void *source,u32 size) { - osInvalDCache(target,size); - osPiStartDma(&memoryMesgMB,0,0,(u32)source,target,size,&memoryMesgQueue); - return; + osInvalDCache(target,size); + osPiStartDma(&memoryMesgMB,0,0,(u32)source,target,size,&memoryMesgQueue); + return; } @@ -3680,8 +3677,8 @@ void doRomCopy(void *target,void *source,u32 size) void romReceiveMesg(void) { - osRecvMesg(&memoryMesgQueue,NULL,1); - return; + osRecvMesg(&memoryMesgQueue,NULL,1); + return; } @@ -3689,9 +3686,9 @@ void romReceiveMesg(void) void romCopy(char *src,char *dest,int len) { - doRomCopy(src,dest,len); - romReceiveMesg(); - return; + doRomCopy(src,dest,len); + romReceiveMesg(); + return; } @@ -3699,14 +3696,14 @@ void romCopy(char *src,char *dest,int len) s32 romCopyAligned(void *target,void *source,s32 length) { - void *target_aligned; - void *source_aligned; - - source_aligned = (void *)(((uint)source | 1) ^ 1); - target_aligned = (void *)(((int)target + 0xfU | 0xf) ^ 0xf); - romCopy((char *)target_aligned,(char *)source_aligned, - ((int)(void *)((int)source - (int)source_aligned) + length + 0xf | 0xfU) ^ 0xf); - return (s32)((int)target_aligned + (int)(void *)((int)source - (int)source_aligned)); + void *target_aligned; + void *source_aligned; + + source_aligned = (void *)(((uint)source | 1) ^ 1); + target_aligned = (void *)(((int)target + 0xfU | 0xf) ^ 0xf); + romCopy((char *)target_aligned,(char *)source_aligned, + ((int)(void *)((int)source - (int)source_aligned) + length + 0xf | 0xfU) ^ 0xf); + return (s32)((int)target_aligned + (int)(void *)((int)source - (int)source_aligned)); } @@ -3714,9 +3711,9 @@ s32 romCopyAligned(void *target,void *source,s32 length) void doRomWrite(void *source,void *target,u32 size) { - osWritebackDCache(source,size); - osPiStartDma(&memoryMesgMB,0,1,(u32)target,source,size,&memoryMesgQueue); - return; + osWritebackDCache(source,size); + osPiStartDma(&memoryMesgMB,0,1,(u32)target,source,size,&memoryMesgQueue); + return; } @@ -3724,9 +3721,9 @@ void doRomWrite(void *source,void *target,u32 size) void romWrite(void *source,void *target,u32 size) { - doRomWrite(source,target,size); - romReceiveMesg(); - return; + doRomWrite(source,target,size); + romReceiveMesg(); + return; } @@ -3736,92 +3733,92 @@ void romWrite(void *source,void *target,u32 size) void init_mainthread_data(void) { - longlong lVar1; - ulonglong interval; - byte *__nptr; - long lVar2; - u32 uVar3; - int iVar4; - undefined8 in_v1; - OSTime value; - char *__delim; - int i; - OSMesgQueue bossmq; - OSTimer bosstimer; - OSMesg bossmsg; - - add_debug_notice_deb_c_debug(); - romCreateMesgQueue(); - establish_TLB_buffer_management_table(); - image_entries_load(); - something_with_memp_c_debug(); - something_with_mema_c_debug(); - something_with_bg_c_debug(); - something_with_vi_c_debug(); - init_video_settings(); - init_indy_if_not_ready(); - debug_and_update_stage_flag = rmon_debug_is_final_build(); - ob_c_debug_setup(); - something_with_rsp_c_debug(); - something_with_dyn_c_debug(); - something_with_joy_c_debug(); - osCreateMesgQueue(&bossmq,&bossmsg,1); - i = 0; - do { - lVar1 = __ll_mul(0,100000,osClockRate._0_4_,osClockRate._4_4_); - interval = __ull_div((int)lVar1,(int)in_v1,0,1000000); - osSetTimer(&bosstimer,value,interval,(OSMesgQueue *)in_v1,NULL); - osRecvMesg(&bossmq,&bossmsg,1); - if (i == 1) { - test_controller_presence(); + longlong lVar1; + ulonglong interval; + byte *__nptr; + long lVar2; + u32 uVar3; + int iVar4; + undefined8 in_v1; + OSTime value; + char *__delim; + int i; + OSMesgQueue bossmq; + OSTimer bosstimer; + OSMesg bossmsg; + + add_debug_notice_deb_c_debug(); + romCreateMesgQueue(); + establish_TLB_buffer_management_table(); + image_entries_load(); + something_with_memp_c_debug(); + something_with_mema_c_debug(); + something_with_bg_c_debug(); + something_with_vi_c_debug(); + init_video_settings(); + init_indy_if_not_ready(); + debug_and_update_stage_flag = rmon_debug_is_final_build(); + ob_c_debug_setup(); + something_with_rsp_c_debug(); + something_with_dyn_c_debug(); + something_with_joy_c_debug(); + osCreateMesgQueue(&bossmq,&bossmsg,1); + i = 0; + do { + lVar1 = __ll_mul(0,100000,osClockRate._0_4_,osClockRate._4_4_); + interval = __ull_div((int)lVar1,(int)in_v1,0,1000000); + osSetTimer(&bosstimer,value,interval,(OSMesgQueue *)in_v1,NULL); + osRecvMesg(&bossmq,&bossmsg,1); + if (i == 1) { + test_controller_presence(); + } + else { + if (1 < i) { + redirect_to_ramrom_replay_and_record_handlers_if_set(); + } + } + i += 1; + } while (i != 4); + __nptr = check_token(1,(byte *)"-level_"); + if (__nptr == NULL) { + debug_and_update_stage_flag = TRUE; } - else { - if (1 < i) { - redirect_to_ramrom_replay_and_record_handlers_if_set(); - } + something_stan_c_debug_related(); + something_game_c_debug_related(); + if (debug_and_update_stage_flag != FALSE) { + strtok(" -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400",__delim); } - i += 1; - } while (i != 4); - __nptr = check_token(1,(byte *)"-level_"); - if (__nptr == NULL) { - debug_and_update_stage_flag = TRUE; - } - something_stan_c_debug_related(); - something_game_c_debug_related(); - if (debug_and_update_stage_flag != FALSE) { - strtok(" -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400",__delim); - } - __nptr = check_token(1,(byte *)"-m"); - if (__nptr != NULL) { __nptr = check_token(1,(byte *)"-m"); - lVar2 = strtol((char *)__nptr,NULL,0); - current_m_malloc_value = lVar2 << 10; - } - uVar3 = osVirtualToPhysical(&room_model_buffer); - iVar4 = getptr_TLBallocatedblock(); - check_memflag_tokens(uVar3 | 0x80000000,iVar4 - (uVar3 | 0x80000000)); - resetMemBank(6); - init_LnameX(); - something_with_lvl_c_debug(); - something_with_boss_c_debug(); - removed_7f0acb70(); - removed_7000ada8(); - default_player_perspective_and_height(); - store_osgetcount(); - removed_7f09b7a0(); - displaylist_related(); - set_gu_scale(); - removed_7f000bc0(); - proc_7F000980(); - alloc_load_expand_ani_table(); - init_weapon_animation_groups_maybe(); - reset_counter_rand_body_head(); - removed_7f0009d0(); - setup_ptr_playergait(); - initGameData(); - proc_7F01D6E0(); - clear_ramrom_block_buffer_heading_ptrs(); - return; + if (__nptr != NULL) { + __nptr = check_token(1,(byte *)"-m"); + lVar2 = strtol((char *)__nptr,NULL,0); + current_m_malloc_value = lVar2 << 10; + } + uVar3 = osVirtualToPhysical(&room_model_buffer); + iVar4 = getptr_TLBallocatedblock(); + mempCheckMemflagTokens(uVar3 | 0x80000000,iVar4 - (uVar3 | 0x80000000)); + mempResetBank('\x06'); + init_LnameX(); + something_with_lvl_c_debug(); + something_with_boss_c_debug(); + null_init_main_7f0acb70(); + removed_7000ada8(); + default_player_perspective_and_height(); + store_osgetcount(); + removed_7f09b7a0(); + displaylist_related(); + set_gu_scale(); + removed_7f000bc0(); + proc_7F000980(); + alloc_load_expand_ani_table(); + init_weapon_animation_groups_maybe(); + reset_counter_rand_body_head(); + removed_7f0009d0(); + setup_ptr_playergait(); + initGameData(); + proc_7F01D6E0(); + clear_ramrom_block_buffer_heading_ptrs(); + return; } @@ -3829,8 +3826,8 @@ void init_mainthread_data(void) void enable_show_mem_use_flag(void) { - show_mem_use_flag = TRUE; - return; + show_mem_use_flag = TRUE; + return; } @@ -3838,8 +3835,8 @@ void enable_show_mem_use_flag(void) void mem_bars_flag_toggle(void) { - show_mem_bars_flag = show_mem_bars_flag ^ 1; - return; + show_mem_bars_flag = show_mem_bars_flag ^ 1; + return; } @@ -3847,12 +3844,12 @@ void mem_bars_flag_toggle(void) void setup_gamevalues_and_launchmainloop(void) { - init_mainthread_data(); - allocate_init_rsp_buffers(); - setupaudio(); - do { - mainloop(); - } while( true ); + init_mainthread_data(); + allocate_init_rsp_buffers(); + setupaudio(); + do { + mainloop(); + } while( true ); } @@ -3863,281 +3860,283 @@ void setup_gamevalues_and_launchmainloop(void) void mainloop(void) { - byte *__nptr; - u32 uVar3; - DIFFICULTY DVar4; - int iVar5; - memoryallocation *pmVar6; - long lVar7; - void *ptr_allocmem; - int playernum; - undefined4 *puVar8; - char cVar13; - char cVar14; - ulonglong uVar1; - ulonglong uVar2; - uint *puVar9; - short sVar11; - short sVar12; - BOOL BVar10; - LEVELID LVar15; - int playercount; - longlong lVar16; - uint *puVar17; - uint uVar18; - undefined4 uStack392; - char acStack388 [328]; - undefined4 *puStack60; - uint *puStack56; - uint uStack52; - undefined4 uStack44; - undefined4 uStack40; - undefined4 uStack36; - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - OSMesg *msg; - - reset_mem_bank_5(); - __nptr = check_token(1,(byte *)"-level_"); - if (__nptr != NULL) { + byte *__nptr; + u32 uVar1; + DIFFICULTY DVar2; + int iVar3; + memoryallocation *pmVar4; + long lVar5; + void *ptr_allocmem; + int iVar6; + Gfx *pGVar7; + s32 sVar8; + s32 sVar9; + u32 uVar10; + PLAYER_ID playernum; + uint *puVar11; + short sVar13; + short sVar14; + BOOL BVar12; + LEVELID LVar15; + int playercount; + uint *puVar16; + uint uVar17; + undefined4 uStack392; + char acStack388 [328]; + Gfx *pGStack60; + uint *puStack56; + uint uStack52; + s_mainloop_unk local_2c; + OSMesg *msg; + + reset_mem_bank_5(); __nptr = check_token(1,(byte *)"-level_"); - current_stage_num = (uint)__nptr[1] + (uint)*__nptr * 10 + 0xfffffdf0; - } - if (current_stage_num != LEVELID_TITLE) { - proc_7F01DF90(); - set_selected_folder_num(0); - set_selected_difficulty(DIFFICULTY_AGENT); - set_solo_and_ptr_briefing((undefined *)current_stage_num); - __nptr = check_token(1,(byte *)"-hard"); if (__nptr != NULL) { - __nptr = check_token(1,(byte *)"-hard"); - set_selected_difficulty((uint)*__nptr - 0x30); - __nptr = check_token(1,(byte *)"-hard"); - set_difficulty((uint)*__nptr - 0x30); + __nptr = check_token(1,(byte *)"-level_"); + current_stage_num = (uint)__nptr[1] + (uint)*__nptr * 10 + 0xfffffdf0; } - } - uVar3 = osGetCount(); - increment_random_num((longlong)(int)uVar3); - do { - msg = NULL; - uStack44 = dword_80024304; - uStack40 = dword_80024308; - uVar18 = 0; - uStack32 = dword_80024310; - uStack36 = dword_8002430C; - playercount = 0; - uStack28 = dword_80024314; - uStack24 = dword_80024318; - uStack16 = dword_80024320; - uStack20 = dword_8002431C; - uStack52 = 0; - DVar4 = get_current_difficulty(); - test_if_replaying_or_recording_demos_this_stage_load(current_stage_num,DVar4); - if (debug_and_update_stage_flag != 0) { - playernum = -1; - if ((current_stage_num != LEVELID_TITLE) && (iVar5 = get_selected_num_players(), 1 < iVar5)) { - playernum = 0; - if (memallocstringtable.number != 0) { - pmVar6 = &memallocstringtable; - iVar5 = memallocstringtable.number; - do { - if (current_stage_num + 400 == iVar5) break; - iVar5 = pmVar6[1].number; - playernum += 1; - pmVar6 = pmVar6 + 1; - } while (iVar5 != 0); - } - if ((&memallocstringtable)[playernum].number == 0) { - playernum = -1; - } - } - if ((playernum < 0) && (playernum = 0, memallocstringtable.number != 0)) { - pmVar6 = &memallocstringtable; - LVar15 = memallocstringtable.number; - do { - if (current_stage_num == LVar15) break; - LVar15 = pmVar6[1].number; - playernum += 1; - pmVar6 = pmVar6 + 1; - } while (LVar15 != ~LEVELID_NONE); - } - strtok((char *)(&memallocstringtable)[playernum].string,(char *)&memallocstringtable); - } - resetMemBank(4); - something_mem_bank_a0(4); - __nptr = check_token(1,(byte *)"-ma"); - if (__nptr != NULL) { - __nptr = check_token(1,(byte *)"-ma"); - lVar7 = strtol((char *)__nptr,NULL,0); - current_ma_malloc_value = lVar7 << 10; - } - ptr_allocmem = (void *)allocate_bytes_in_bank(current_ma_malloc_value,4); - reinit_m_malloc_table(ptr_allocmem,current_ma_malloc_value); - reset_play_data_ptrs(); if (current_stage_num != LEVELID_TITLE) { - playercount = 1; - playernum = get_selected_num_players(); - if (1 < playernum) { - playercount = get_selected_num_players(); - } + proc_7F01DF90(); + set_selected_folder_num(0); + set_selected_difficulty(DIFFICULTY_AGENT); + set_solo_and_ptr_briefing(current_stage_num); + __nptr = check_token(1,(byte *)"-hard"); + if (__nptr != NULL) { + __nptr = check_token(1,(byte *)"-hard"); + set_selected_difficulty((uint)*__nptr - 0x30); + __nptr = check_token(1,(byte *)"-hard"); + set_difficulty((uint)*__nptr - 0x30); + } } - init_player_data_ptrs_construct_viewports(playercount); - set_vtx_gfx_mem_alloc(); - test_controller_presence(); - stage_load(current_stage_num); - init_both_video_buffers(); - debug_text_related_2(); - proc_7F0C0B4C(); - video_related_2(); - playernum = osRecvMesg(&gfxFrameMsgQ,&msg,0); - while (playernum == 0) { - playernum = osRecvMesg(&gfxFrameMsgQ,&msg,0); - } - if (loadedstage < 0) { - do { - osRecvMesg(&gfxFrameMsgQ,&msg,1); - sVar11 = *(short *)msg; - if (sVar11 == 1) { - uVar3 = osGetCount(); - if (((0x5eb60 < uVar3 - copy_of_osgetcount_value_1) && (loadedstage < 0)) && (uVar18 < 2)) - { - playernum = get_is_ramrom_flag(); - if (playernum == 0) { - proc_7F0C0B4C(); + uVar1 = osGetCount(); + increment_random_num((longlong)(int)uVar1); + do { + msg = NULL; + local_2c.dword_80024304 = dword_80024304.dword_80024304; + local_2c.dword_80024308 = dword_80024304.dword_80024308; + uVar17 = 0; + local_2c.dword_80024310 = dword_80024304.dword_80024310; + local_2c.dword_8002430C = dword_80024304.dword_8002430C; + playercount = 0; + local_2c.dword_80024314 = dword_80024304.dword_80024314; + local_2c.dword_80024318 = dword_80024304.dword_80024318; + local_2c.dword_80024320 = dword_80024304.dword_80024320; + local_2c.dword_8002431C = dword_80024304.dword_8002431C; + uStack52 = 0; + DVar2 = get_current_difficulty(); + test_if_replaying_or_recording_demos_this_stage_load(current_stage_num,DVar2); + if (debug_and_update_stage_flag != 0) { + iVar6 = -1; + if ((current_stage_num != LEVELID_TITLE) && + (iVar3 = get_selected_num_players(), 1 < iVar3)) { + iVar6 = 0; + if (memallocstringtable.number != 0) { + pmVar4 = &memallocstringtable; + iVar3 = memallocstringtable.number; + do { + if (current_stage_num + 400 == iVar3) break; + iVar3 = pmVar4[1].number; + iVar6 += 1; + pmVar4 = pmVar4 + 1; + } while (iVar3 != 0); + } + if ((&memallocstringtable)[iVar6].number == 0) { + iVar6 = -1; + } } - else { - iterate_ramrom_entries_handle_camera_out(); - } - video_DL_related_4(); - video_related_2(); - video_related_3(0x20000); - redirect_to_ramrom_replay_and_record_handlers_if_set(); - permit_stderr(FALSE); - puVar8 = (undefined4 *)get_ptr_displaylist(); - puStack60 = puVar8; - if (debug_feature_flag != 0) { - puStack60 = puVar8; - cVar13 = get_cur_controller_horz_stick_pos('\0'); - cVar14 = get_cur_controller_vert_stick_pos('\0'); - uVar1 = get_controller_buttons_held('\0',0xffff); - uVar2 = get_controller_buttons_pressed('\0',0xffff); - debug_feature_flag = - debug_menu_processor - ((longlong)(int)cVar13,(longlong)(int)cVar14,(uint)uVar1 & 0xffff, - (uint)uVar2 & 0xffff); - } - manage_mp_game(); - proc_7F09B41C(); - if (current_stage_num != LEVELID_TITLE) { - lVar16 = 0; - uVar1 = get_num_players(); - if (0 < (longlong)uVar1) { + if ((iVar6 < 0) && (iVar6 = 0, memallocstringtable.number != 0)) { + pmVar4 = &memallocstringtable; + LVar15 = memallocstringtable.number; do { - playernum = proc_7F09B528((int)lVar16); - set_cur_player(playernum); - set_video2_width_height(pPlayer->viewx,pPlayer->viewy); - set_video2_ulx_uly(pPlayer->viewleft,pPlayer->viewtop); - proc_7F0BF800(); - lVar16 = (longlong)((int)lVar16 + 1); - uVar1 = get_num_players(); - } while (lVar16 < (longlong)uVar1); - } + if (current_stage_num == LVar15) break; + LVar15 = pmVar4[1].number; + iVar6 += 1; + pmVar4 = pmVar4 + 1; + } while (LVar15 != ~LEVELID_NONE); } - puVar9 = proc_7F0BE30C(puVar8); - playernum = get_debug_VisCVG_flag(); - puVar17 = puVar9; - if (playernum != 0) { - *puVar9 = 0xe7000000; - puVar9[1] = 0; - puVar9[2] = 0xba001402; - puVar9[3] = 0; - puVar9[4] = 0xf9000000; - puVar9[5] = 0xffffffff; - puVar9[6] = 0xee000000; - puVar9[7] = 0xffffffff; - puVar9[9] = 4; - puVar9[8] = 0xb9000201; - puVar9[10] = 0xb900031d; - puVar9[0xb] = 0xfa54040; - puVar17 = puVar9 + 0xe; - sVar11 = get_video2_settings_txtClipW(); - sVar12 = get_video2_settings_txtClipH(); - puVar9[0xc] = ((int)sVar12 - 1U & 0x3ff) << 2 | 0xf6000000 | - ((int)sVar11 - 1U & 0x3ff) << 0xe; - puVar9[0xd] = 0; - } - puStack56 = read_screen_display_block_and_write_chars(puVar17); - BVar10 = get_memusage_display_flag(); - if (BVar10 != FALSE) { - puStack56 = (uint *)display_speed_graph(); - } - if (debug_feature_flag != 0) { - display_debug_menu_text_onscreen(); - puStack56 = (uint *)print_debug_mcm_to_stdout(puStack56); - } - *puStack56 = 0xe9000000; - puStack56[1] = 0; - puStack56[2] = 0xb8000000; - puStack56[3] = 0; - puStack56 = puStack56 + 4; - if (show_mem_use_flag != FALSE) { - nulled_list_all8_mem_alloc_banks_sizes(); - generate_lists_before_after_mem_merge(); - removed_debug_routine((int)puStack56); - nullsub_41(); - show_mem_use_flag = FALSE; - } - if (show_mem_bars_flag != FALSE) { - draw_membars(); - } - allocate_something_in_mgfx((int)puStack56); - allocate_something_in_mvtx(); - video_related_8(); - playernum = get_debug_taskgrab_val(); - if (((playernum != 0) && - (uVar1 = get_controller_buttons_pressed('\0',0xc000), uVar1 != 0)) && - (uVar1 = get_controller_buttons_held('\0',0xc000), uVar1 == 0xc000)) { - while( true ) { - sprintf(acStack388,&aU64_taskgrab_D_core,u64_taskgrab_num); - playernum = check_file_found_on_indy(acStack388,&uStack392); - if (playernum == 0) break; - u64_taskgrab_num += 1; - } - indy_send_capture_data(acStack388,&UT_VEC,0x400000); - } - load_rsp_microcode((int)puStack60,(int)puStack56,0,&uStack44); - uVar18 += 1; - mem_related_calls_sort_merge_entries(); - uStack52 ^= 1; - video_related_3(0x10000); - } + strtok((char *)(&memallocstringtable)[iVar6].string,(char *)&memallocstringtable); } - else { - if (sVar11 == 2) { - uVar18 -= 1; - } - else { - if (sVar11 == 5) { - uVar18 = 4; - } - } + mempResetBank('\x04'); + something_mem_bank_a0(4); + __nptr = check_token(1,(byte *)"-ma"); + if (__nptr != NULL) { + __nptr = check_token(1,(byte *)"-ma"); + lVar5 = strtol((char *)__nptr,NULL,0); + current_ma_malloc_value = lVar5 << 10; } - } while ((loadedstage < 0) || (uVar18 != 0)); - } - unload_stage_text_data(); - stop_demo_playback(); - set_bank_nextentry_to_NULL(4); - something_mem_bank_a0(4); - current_stage_num = loadedstage; - loadedstage = LEVELID_NONE; - if (false) { - proc_7F0D1A7C(); - return; - } - } while( true ); + ptr_allocmem = (void *)mempAllocBytesInBank(current_ma_malloc_value,'\x04'); + mempInitMallocTable(ptr_allocmem,current_ma_malloc_value); + reset_play_data_ptrs(); + if (current_stage_num != LEVELID_TITLE) { + playercount = 1; + iVar6 = get_selected_num_players(); + if (1 < iVar6) { + playercount = get_selected_num_players(); + } + } + init_player_data_ptrs_construct_viewports(playercount); + set_vtx_gfx_mem_alloc(); + test_controller_presence(); + stage_load(current_stage_num); + init_both_video_buffers(); + debug_text_related_2(); + proc_7F0C0B4C(); + video_related_2(); + iVar6 = osRecvMesg(&gfxFrameMsgQ,&msg,0); + while (iVar6 == 0) { + iVar6 = osRecvMesg(&gfxFrameMsgQ,&msg,0); + } + if (loadedstage < 0) { + do { + osRecvMesg(&gfxFrameMsgQ,&msg,1); + sVar13 = *(short *)msg; + if (sVar13 == 1) { + uVar1 = osGetCount(); + if (((0x5eb60 < uVar1 - copy_of_osgetcount_value_1) && (loadedstage < 0)) && + (uVar17 < 2)) { + iVar6 = get_is_ramrom_flag(); + if (iVar6 == 0) { + proc_7F0C0B4C(); + } + else { + iterate_ramrom_entries_handle_camera_out(); + } + video_DL_related_4(); + video_related_2(); + video_related_3(0x20000); + redirect_to_ramrom_replay_and_record_handlers_if_set(); + permit_stderr(FALSE); + pGVar7 = get_ptr_displaylist(); + pGStack60 = pGVar7; + if (debug_feature_flag != 0) { + sVar8 = get_cur_controller_horz_stick_pos('\0'); + sVar9 = get_cur_controller_vert_stick_pos('\0'); + uVar1 = get_controller_buttons_held + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS| + R_TRIG|L_TRIG|DUMMY_2|DUMMY_1|R_JPAD|L_JPAD| + D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + uVar10 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS| + R_TRIG|L_TRIG|DUMMY_2|DUMMY_1|R_JPAD|L_JPAD| + D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + debug_menu_processor + ((int)(char)sVar8,(int)(char)sVar9,(controller_buttons)uVar1, + (controller_buttons)uVar10); + debug_feature_flag = uVar10; + } + manage_mp_game(); + proc_7F09B41C(); + if (current_stage_num != LEVELID_TITLE) { + iVar6 = 0; + sVar8 = get_num_players(); + if (0 < sVar8) { + do { + playernum = proc_7F09B528(iVar6); + set_cur_player(playernum); + set_video2_width_height(pPlayer->viewx,pPlayer->viewy); + set_video2_ulx_uly(pPlayer->viewleft,pPlayer->viewtop); + proc_7F0BF800(); + iVar6 += 1; + sVar8 = get_num_players(); + } while (iVar6 < sVar8); + } + } + puVar11 = proc_7F0BE30C(pGVar7); + iVar6 = get_linemode_flag(); + puVar16 = puVar11; + if (iVar6 != 0) { + *puVar11 = 0xe7000000; + puVar11[1] = 0; + puVar11[2] = 0xba001402; + puVar11[3] = 0; + puVar11[4] = 0xf9000000; + puVar11[5] = 0xffffffff; + puVar11[6] = 0xee000000; + puVar11[7] = 0xffffffff; + puVar11[9] = 4; + puVar11[8] = 0xb9000201; + puVar11[10] = 0xb900031d; + puVar11[0xb] = 0xfa54040; + puVar16 = puVar11 + 0xe; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + puVar11[0xc] = ((int)sVar14 - 1U & 0x3ff) << 2 | 0xf6000000 | + ((int)sVar13 - 1U & 0x3ff) << 0xe; + puVar11[0xd] = 0; + } + puStack56 = read_screen_display_block_and_write_chars(puVar16); + BVar12 = get_memusage_display_flag(); + if (BVar12 != FALSE) { + puStack56 = (uint *)display_speed_graph(); + } + if (debug_feature_flag != 0) { + display_debug_menu_text_onscreen(); + puStack56 = (uint *)print_debug_mcm_to_stdout(puStack56); + } + *puStack56 = 0xe9000000; + puStack56[1] = 0; + puStack56[2] = 0xb8000000; + puStack56[3] = 0; + puStack56 = puStack56 + 4; + if (show_mem_use_flag != FALSE) { + nulled_list_all8_mem_alloc_banks_sizes(); + memaGenerateListsBeforeAfterMerge(); + removed_debug_routine((int)puStack56); + nullsub_41(); + show_mem_use_flag = FALSE; + } + if (show_mem_bars_flag != FALSE) { + draw_membars(); + } + allocate_something_in_mgfx((int)puStack56); + allocate_something_in_mvtx(); + video_related_8(); + iVar6 = get_debug_taskgrab_val(); + if (((iVar6 != 0) && + (uVar1 = get_controller_buttons_pressed('\0',B_BUTTON|A_BUTTON), + uVar1 != 0)) && + (uVar1 = get_controller_buttons_held('\0',B_BUTTON|A_BUTTON), + uVar1 == 0xc000)) { + while( true ) { + sprintf(acStack388,"u64.taskgrab.%d.core",u64_taskgrab_num); + iVar6 = check_file_found_on_indy(acStack388,&uStack392); + if (iVar6 == 0) break; + u64_taskgrab_num += 1; + } + indy_send_capture_data(acStack388,&UT_VEC,0x400000); + } + load_rsp_microcode((int)pGStack60,(int)puStack56,0,&local_2c); + uVar17 += 1; + mem_related_calls_sort_merge_entries(); + uStack52 ^= 1; + video_related_3(0x10000); + } + } + else { + if (sVar13 == 2) { + uVar17 -= 1; + } + else { + if (sVar13 == 5) { + uVar17 = 4; + } + } + } + } while ((loadedstage < 0) || (uVar17 != 0)); + } + unload_stage_text_data(); + stop_demo_playback(); + mempNullNextEntryInBank('\x04'); + something_mem_bank_a0(4); + current_stage_num = loadedstage; + loadedstage = LEVELID_NONE; + if (false) { + proc_7F0D1A7C(); + return; + } + } while( true ); } @@ -4145,8 +4144,8 @@ void mainloop(void) void run_title_stage(void) { - set_loaded_stage(LEVELID_TITLE); - return; + set_loaded_stage(LEVELID_TITLE); + return; } @@ -4154,8 +4153,8 @@ void run_title_stage(void) void set_loaded_stage(LEVELID stage) { - loadedstage = stage; - return; + loadedstage = stage; + return; } @@ -4163,7 +4162,7 @@ void set_loaded_stage(LEVELID stage) LEVELID get_stage_num(void) { - return current_stage_num; + return current_stage_num; } @@ -4171,15 +4170,17 @@ LEVELID get_stage_num(void) void return_to_title_from_level_end(void) { - LEVELID stage; - longlong objectives; - - stage = get_stage_num(); - if ((stage != LEVELID_CUBA) && (objectives = check_objectives_complete(), objectives != 0)) { - end_of_mission_briefing(); - } - run_title_stage(); - return; + LEVELID stage; + longlong objectives; + + stage = get_stage_num(); + if ((stage != LEVELID_CUBA) && + (objectives._4_4_ = check_objectives_complete(), objectives = (longlong)(int)objectives._4_4_ + , objectives != 0)) { + end_of_mission_briefing(); + } + run_title_stage(); + return; } @@ -4187,7 +4188,7 @@ void return_to_title_from_level_end(void) undefined4 get_debug_parse_flag(void) { - return debug_feature_flag; + return debug_feature_flag; } @@ -4195,8 +4196,8 @@ undefined4 get_debug_parse_flag(void) void something_with_boss_c_debug(void) { - get_ptr_debug_notice_list_entry(&boss_c_ptr_debug_notice_list_entry,"boss_c_debug"); - return; + get_ptr_debug_notice_list_entry(&boss_c_ptr_debug_notice_list_entry,"boss_c_debug"); + return; } @@ -4204,23 +4205,23 @@ void something_with_boss_c_debug(void) void audio_related(void *datatable,int numsamples) { - longlong lVar1; - void *pvVar2; - int iVar3; - - lVar1 = 0; - if (*(short *)datatable != 0) { - iVar3 = *(int *)((int)datatable + 4); - pvVar2 = datatable; - while( true ) { - lVar1 = (longlong)((int)lVar1 + 1); - *(int *)((int)pvVar2 + 4) = iVar3 + numsamples; - if ((longlong)(ulonglong)*(ushort *)datatable <= lVar1) break; - iVar3 = *(int *)((int)pvVar2 + 0xc); - pvVar2 = (void *)((int)pvVar2 + 8); + longlong lVar1; + void *pvVar2; + int iVar3; + + lVar1 = 0; + if (*(short *)datatable != 0) { + iVar3 = *(int *)((int)datatable + 4); + pvVar2 = datatable; + while( true ) { + lVar1 = (longlong)((int)lVar1 + 1); + *(int *)((int)pvVar2 + 4) = iVar3 + numsamples; + if ((longlong)(ulonglong)*(ushort *)datatable <= lVar1) break; + iVar3 = *(int *)((int)pvVar2 + 0xc); + pvVar2 = (void *)((int)pvVar2 + 8); + } } - } - return; + return; } @@ -4228,125 +4229,128 @@ void audio_related(void *datatable,int numsamples) void setupaudio(void) { - ushort uVar1; - u8 *base; - ALBankFile *src; - ALCSPlayer *pAVar2; - u8 *puVar3; - ushort *puVar4; - ALBankFile *pAVar5; - s16 *psVar6; - s16 *psVar7; - int iVar8; - ALSeqpConfig seqc_3; - ALSeqpConfig seqc_2; - ALSeqpConfig seqc_1; - ALSynConfig local_44; - ALBankFile *local_1c; - ALBankFile *local_14; - uint local_10; - undefined4 local_c; - undefined4 local_8; - ALHeap *local_4; - - if (bootswitch_sound == '\0') { - base = (u8 *)allocate_bytes_in_bank((int)&DAT_0002e000,6); - puVar3 = base; - do { - puVar3 = puVar3 + 1; - *puVar3 = '\0'; - puVar3 = puVar3; - } while (puVar3 < base + 0x2e000); - alHeapInit(&ALHeap_80063710,base,(s32)&DAT_0002e000); - local_14 = (ALBankFile *)0x5bc0; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x5bc0); - romCopy((char *)local_14,"B1",0x5bc0); - alBnkfNew(local_14,&sfx_tbl); - ptr_sfx_buf = (undefined *)local_14->bankArray[0]; - src = (ALBankFile *)0x43a0; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x43a0); - local_1c = src; - romCopy((char *)src,"B1",0x43a0); - alBnkfNew(local_1c,&instruments_tbl); - DAT_80063724 = local_1c->bankArray[0]; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x10); - ptr_musicdatatable = src; - romCopy((char *)src,(char *)&number_music_samples,0x10); - iVar8 = (uint)(ushort)ptr_musicdatatable->revision * 8; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,iVar8 + 4); - ptr_musicdatatable = src; - romCopy((char *)src,(char *)&number_music_samples,(iVar8 + 0x13U | 0xf) ^ 0xf); - audio_related(ptr_musicdatatable,(int)&number_music_samples); - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x18c8); - PTR_80063838 = (u8 *)src; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,6000); - DAT_80063840 = src + 0xfa; - puVar4 = &DAT_80063738; - pAVar5 = ptr_musicdatatable; - psVar6 = &DAT_800637b8; - PTR_8006383c = (u8 *)src; - do { - uVar1 = pAVar5[1].revision; - pAVar2 = (ALCSPlayer *)(uint)uVar1; - psVar7 = psVar6 + 1; - *puVar4 = uVar1; - *psVar6 = pAVar5[1].bankCount; - if ((uVar1 & 1) != 0) { - *puVar4 = uVar1 + 1; - } - puVar4 = puVar4 + 1; - pAVar5 = pAVar5 + 1; - psVar6 = psVar7; - } while (psVar7 != (s16 *)&DAT_80063836); - local_44.maxVVoices = 0; - local_44.maxPVoices = 0x18; - local_44.maxUpdates = 0x80; - local_44.dmaproc = NULL; - local_44.fxType = '\x06'; - local_44.outputRate = 0; - local_44.heap = &ALHeap_80063710; - amCreateAudioMgr(&local_44,(OSPri)&DAT_80063836,(amConfig *)&DAT_80063836); - seqc_1.maxVoices = 0x10; - seqc_1.maxEvents = 0x40; - seqc_1.maxChannels = '\x10'; - seqc_1.heap = &ALHeap_80063710; - seqc_1.initOsc = NULL; - seqc_1.updateOsc = NULL; - seqc_1.stopOsc = NULL; - seqc_2.maxVoices = 0x10; - seqc_2.maxEvents = 0x40; - seqc_2.maxChannels = '\x10'; - seqc_2.heap = &ALHeap_80063710; - seqc_2.initOsc = NULL; - seqc_2.updateOsc = NULL; - seqc_2.stopOsc = NULL; - seqc_3.maxVoices = 0x10; - seqc_3.maxEvents = 0x40; - seqc_3.maxChannels = '\x10'; - seqc_3.heap = &ALHeap_80063710; - seqc_3.initOsc = NULL; - seqc_3.updateOsc = NULL; - seqc_3.stopOsc = NULL; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x7c); - seqp_1 = pAVar2; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x7c); - seqp_2 = pAVar2; - _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x7c); - ptr_3rd_music_ctrl_block = pAVar2; - alCSPNew(seqp_1,&seqc_1); - __CSPPostNextSeqEvent((int)seqp_1); - alCSPNew(seqp_2,&seqc_2); - __CSPPostNextSeqEvent((int)seqp_2); - alCSPNew(ptr_3rd_music_ctrl_block,&seqc_3); - __CSPPostNextSeqEvent((int)ptr_3rd_music_ctrl_block); - local_c = 0x40; - local_10 = 0x40; - local_8 = 8; - local_4 = &ALHeap_80063710; - music_related_16(&local_10); - startaudithread(); - } - return; + ushort uVar1; + u8 *base; + ALBankFile *src; + ALCSPlayer *pAVar2; + u8 *puVar3; + ushort *puVar4; + ALBankFile *pAVar5; + s16 *psVar6; + s16 *psVar7; + int iVar8; + ALSeqpConfig seqc_3; + ALSeqpConfig seqc_2; + ALSeqpConfig seqc_1; + ALSynConfig local_44; + ALBankFile *local_1c; + ALBankFile *local_14; + uint local_10; + undefined4 local_c; + undefined4 local_8; + ALHeap *local_4; + + if (bootswitch_sound == '\0') { + base = (u8 *)mempAllocBytesInBank((u32)&DAT_0002e000,'\x06'); + puVar3 = base; + do { + puVar3 = puVar3 + 1; + *puVar3 = '\0'; + puVar3 = puVar3; + } while (puVar3 < base + 0x2e000); + alHeapInit(&ALHeap_80063710,base,(s32)&DAT_0002e000); + local_14 = (ALBankFile *)0x5bc0; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x5bc0); + romCopy((char *)local_14, + (char *)(font_first_font_table_controller_large. + font_second_font_table_controller_large. + font_second_font_table_controller_large + 0x3258),0x5bc0); + alBnkfNew(local_14,&sfx_tbl); + ptr_sfx_buf = (undefined *)local_14->bankArray[0]; + src = (ALBankFile *)0x43a0; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x43a0); + local_1c = src; + romCopy((char *)src,"B1",0x43a0); + alBnkfNew(local_1c,&instruments_tbl); + DAT_80063724 = local_1c->bankArray[0]; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x10); + ptr_musicdatatable = src; + romCopy((char *)src,(char *)&number_music_samples,0x10); + iVar8 = (uint)(ushort)ptr_musicdatatable->revision * 8; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,iVar8 + 4); + ptr_musicdatatable = src; + romCopy((char *)src,(char *)&number_music_samples,(iVar8 + 0x13U | 0xf) ^ 0xf); + audio_related(ptr_musicdatatable,(int)&number_music_samples); + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x18c8); + PTR_80063838 = (u8 *)src; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,6000); + DAT_80063840 = src + 0xfa; + puVar4 = &DAT_80063738; + pAVar5 = ptr_musicdatatable; + psVar6 = &DAT_800637b8; + PTR_8006383c = (u8 *)src; + do { + uVar1 = pAVar5[1].revision; + pAVar2 = (ALCSPlayer *)(uint)uVar1; + psVar7 = psVar6 + 1; + *puVar4 = uVar1; + *psVar6 = pAVar5[1].bankCount; + if ((uVar1 & 1) != 0) { + *puVar4 = uVar1 + 1; + } + puVar4 = puVar4 + 1; + pAVar5 = pAVar5 + 1; + psVar6 = psVar7; + } while (psVar7 != (s16 *)&DAT_80063836); + local_44.maxVVoices = 0; + local_44.maxPVoices = 0x18; + local_44.maxUpdates = 0x80; + local_44.dmaproc = NULL; + local_44.fxType = '\x06'; + local_44.outputRate = 0; + local_44.heap = &ALHeap_80063710; + amCreateAudioMgr(&local_44,(OSPri)&DAT_80063836,(amConfig *)&DAT_80063836); + seqc_1.maxVoices = 0x10; + seqc_1.maxEvents = 0x40; + seqc_1.maxChannels = '\x10'; + seqc_1.heap = &ALHeap_80063710; + seqc_1.initOsc = NULL; + seqc_1.updateOsc = NULL; + seqc_1.stopOsc = NULL; + seqc_2.maxVoices = 0x10; + seqc_2.maxEvents = 0x40; + seqc_2.maxChannels = '\x10'; + seqc_2.heap = &ALHeap_80063710; + seqc_2.initOsc = NULL; + seqc_2.updateOsc = NULL; + seqc_2.stopOsc = NULL; + seqc_3.maxVoices = 0x10; + seqc_3.maxEvents = 0x40; + seqc_3.maxChannels = '\x10'; + seqc_3.heap = &ALHeap_80063710; + seqc_3.initOsc = NULL; + seqc_3.updateOsc = NULL; + seqc_3.stopOsc = NULL; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x7c); + seqp_1 = pAVar2; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x7c); + seqp_2 = pAVar2; + _alHeapDBAlloc(NULL,0,&ALHeap_80063710,1,0x7c); + ptr_3rd_music_ctrl_block = pAVar2; + alCSPNew(seqp_1,&seqc_1); + alCSPSetBank(seqp_1,DAT_80063724); + alCSPNew(seqp_2,&seqc_2); + alCSPSetBank(seqp_2,DAT_80063724); + alCSPNew(ptr_3rd_music_ctrl_block,&seqc_3); + alCSPSetBank(ptr_3rd_music_ctrl_block,DAT_80063724); + local_c = 0x40; + local_10 = 0x40; + local_8 = 8; + local_4 = &ALHeap_80063710; + music_related_16(&local_10); + startaudithread(); + } + return; } @@ -4354,42 +4358,43 @@ void setupaudio(void) void musicTrack1Play(MUSIC_TRACKS track) { - char *dest; - int iVar2; - ulonglong uVar1; - u8 *src; - uint len; - undefined buffer [8460]; - u8 *target; - - if (bootswitch_sound == '\0') { - if (music1_track_num != M_NONE) { - musicTrack1Stop(); + char *dest; + int iVar2; + ulonglong uVar1; + u8 *source; + uint len; + u8 buffer [8460]; + u8 *target; + + if (bootswitch_sound == '\0') { + if (music1_track_num != M_NONE) { + musicTrack1Stop(); + } + music1_track_num = track; + iVar2 = alCSPGetState(seqp_1); + while (iVar2 != 0) { + iVar2 = alCSPGetState(seqp_1); + } + dest = *(char **)(ptr_musicdatatable + music1_track_num * 8 + 4); + if (dest < (char *)0x10000) { + musicTrack1Play(M_SHORT_SOLO_DEATH); + } + else { + len = ((uint)(ushort)(&DAT_800637b8)[music1_track_num] + 0xf | 0xf) ^ 0xf; + source = PTR_80063838 + + (((((uint)(ushort)(&DAT_80063738)[music1_track_num] + 0xf | 0xf) ^ 0xf) + 0x40) + - len); + target = PTR_80063838; + romCopy((char *)source,dest,len); + decompressdata(source,target,buffer); + alCSeqNew(&ALCSeq_80063860,PTR_80063838); + alCSPSetSeq(seqp_1,&ALCSeq_80063860); + uVar1 = get_music1vol(); + musicTrack1Vol((s16)uVar1); + alCSPPlay(seqp_1); + } } - music1_track_num = track; - iVar2 = alCSPGetState(seqp_1); - while (iVar2 != 0) { - iVar2 = alCSPGetState(seqp_1); - } - dest = *(char **)(ptr_musicdatatable + music1_track_num * 8 + 4); - if (dest < (char *)0x10000) { - musicTrack1Play(M_SHORT_SOLO_DEATH); - } - else { - len = ((uint)(ushort)(&DAT_800637b8)[music1_track_num] + 0xf | 0xf) ^ 0xf; - src = PTR_80063838 + - (((((uint)(ushort)(&DAT_80063738)[music1_track_num] + 0xf | 0xf) ^ 0xf) + 0x40) - len); - target = PTR_80063838; - romCopy((char *)src,dest,len); - decompressdata((int)src,(int)target,(int)buffer); - alCSeqNew(&ALCSeq_80063860,PTR_80063838); - alCSPSetSeq(seqp_1,&ALCSeq_80063860); - uVar1 = get_music1len(); - musicTrack1Vol((s16)uVar1); - alCSPPlay(seqp_1); - } - } - return; + return; } @@ -4397,24 +4402,24 @@ void musicTrack1Play(MUSIC_TRACKS track) void musicTrack1Stop(void) { - int iVar1; - - if (bootswitch_sound == '\0') { - music1_playing = 0; - if ((music1_track_num != 0) && (iVar1 = alCSPGetState(seqp_1), iVar1 == 1)) { - alSeqpStop((ALSeqPlayer *)seqp_1); + int iVar1; + + if (bootswitch_sound == '\0') { + music1_playing = 0; + if ((music1_track_num != 0) && (iVar1 = alCSPGetState(seqp_1), iVar1 == 1)) { + alSeqpStop((ALSeqPlayer *)seqp_1); + } + music1_track_num = 0; } - music1_track_num = 0; - } - return; + return; } -ulonglong get_music1len(void) +ulonglong get_music1vol(void) { - return (ulonglong)music1len; + return (ulonglong)music1vol; } @@ -4422,11 +4427,10 @@ ulonglong get_music1len(void) void musicTrack1Vol(s16 param_1) { - music1len = (u16)((longlong)param_1 & 0xffffU); - ultra_proc_70012DA0(seqp_1,(short)((uint)((int)((longlong)param_1 & 0xffffU) * - (int)(short)(&music_array_tempo_maybe)[music1_track_num]) - >> 0xf)); - return; + music1vol = (u16)((longlong)param_1 & 0xffffU); + alCSPSetVol(seqp_1,(s16)((uint)((int)((longlong)param_1 & 0xffffU) * + (int)(short)musicarray_vol[music1_track_num]) >> 0xf)); + return; } @@ -4434,21 +4438,21 @@ void musicTrack1Vol(s16 param_1) void music_related_0(void) { - ulonglong uVar1; - undefined2 *puVar2; - u16 uVar3; - - uVar1 = get_music1len(); - (&music_array_tempo_maybe)[music1_track_num] = (short)uVar1; - puVar2 = &music_array_tempo_maybe; - uVar3 = music_related_array[0]; - if (-1 < music_array_tempo_maybe) { - while (-1 < (short)uVar3) { - uVar3 = puVar2[2]; - puVar2 = puVar2 + 1; + ulonglong uVar1; + u16 *puVar2; + u16 uVar3; + + uVar1 = get_music1vol(); + musicarray_vol[music1_track_num] = (u16)uVar1; + puVar2 = musicarray_vol; + uVar3 = musicarray_vol[1]; + if (-1 < (short)musicarray_vol[0]) { + while (-1 < (short)uVar3) { + uVar3 = puVar2[2]; + puVar2 = puVar2 + 1; + } } - } - return; + return; } @@ -4456,16 +4460,16 @@ void music_related_0(void) void music_related_1(f32 rate) { - ulonglong uVar1; - - if (-1 < music1_playing) { - uVar1 = get_music1len(); - musicTrack1_length = (undefined2)uVar1; - music1_length = 0; - music1_rate = (s32)((float)rate * 60.00000000); - music1_playing = -1; - } - return; + ulonglong uVar1; + + if (-1 < music1_playing) { + uVar1 = get_music1vol(); + musicTrack1_length = (undefined2)uVar1; + music1_length = 0; + music1_rate = (s32)((float)rate * 60.00000000); + music1_playing = -1; + } + return; } @@ -4473,17 +4477,17 @@ void music_related_1(f32 rate) void music_related_3(float rate,s32 param_2,short length) { - if (music1_playing < 1) { - alCSPPlay(seqp_1); - music1_length = length; - if (length == -1) { - music1_length = musicTrack1_length; + if (music1_playing < 1) { + alCSPPlay(seqp_1); + music1_length = length; + if (length == -1) { + music1_length = musicTrack1_length; + } + musicTrack1_length = 0; + music1_rate = (s32)(rate * 60.00000000); + music1_playing = 1; } - musicTrack1_length = 0; - music1_rate = (s32)(rate * 60.00000000); - music1_playing = 1; - } - return; + return; } @@ -4491,79 +4495,79 @@ void music_related_3(float rate,s32 param_2,short length) void music_related_2nd_block(int param_1) { - char *dest; - int iVar2; - ulonglong uVar1; - u8 *src; - uint len; - undefined auStack8468 [8460]; - u8 *local_8; - - if (bootswitch_sound == '\0') { - if (music2_track_num != 0) { - music_related_2nd_block_0(); + char *dest; + int iVar2; + ulonglong uVar1; + u8 *source; + uint len; + u8 auStack8468 [8460]; + u8 *local_8; + + if (bootswitch_sound == '\0') { + if (music2_track_num != 0) { + musicTrack2Stop(); + } + music2_track_num = param_1; + iVar2 = alCSPGetState(seqp_2); + while (iVar2 != 0) { + iVar2 = alCSPGetState(seqp_2); + } + dest = *(char **)(ptr_musicdatatable + music2_track_num * 8 + 4); + if (dest < (char *)0x10000) { + music_related_2nd_block(1); + } + else { + len = ((uint)(ushort)(&DAT_800637b8)[music2_track_num] + 0xf | 0xf) ^ 0xf; + source = PTR_8006383c + + (((((uint)(ushort)(&DAT_80063738)[music2_track_num] + 0xf | 0xf) ^ 0xf) + 0x40) + - len); + local_8 = PTR_8006383c; + romCopy((char *)source,dest,len); + decompressdata(source,local_8,auStack8468); + alCSeqNew(&ALCSeq_80063958,PTR_8006383c); + alCSPSetSeq(seqp_2,&ALCSeq_80063958); + uVar1 = get_music2vol(); + musicTrack2Vol((s16)uVar1); + alCSPPlay(seqp_2); + } } - music2_track_num = param_1; - iVar2 = alCSPGetState(seqp_2); - while (iVar2 != 0) { - iVar2 = alCSPGetState(seqp_2); - } - dest = *(char **)(ptr_musicdatatable + music2_track_num * 8 + 4); - if (dest < (char *)0x10000) { - music_related_2nd_block(1); - } - else { - len = ((uint)(ushort)(&DAT_800637b8)[music2_track_num] + 0xf | 0xf) ^ 0xf; - src = PTR_8006383c + - (((((uint)(ushort)(&DAT_80063738)[music2_track_num] + 0xf | 0xf) ^ 0xf) + 0x40) - len); - local_8 = PTR_8006383c; - romCopy((char *)src,dest,len); - decompressdata((int)src,(int)local_8,(int)auStack8468); - alCSeqNew(&ALCSeq_80063958,PTR_8006383c); - alCSPSetSeq(seqp_2,&ALCSeq_80063958); - uVar1 = get_music2len(); - musicTrack2Vol(uVar1 & 0xffff); - alCSPPlay(seqp_2); - } - } - return; + return; } -void music_related_2nd_block_0(void) +void musicTrack2Stop(void) { - int iVar1; - - if (bootswitch_sound == '\0') { - music2_playing = FALSE; - if ((music2_track_num != 0) && (iVar1 = alCSPGetState(seqp_2), iVar1 == 1)) { - alSeqpStop((ALSeqPlayer *)seqp_2); + int iVar1; + + if (bootswitch_sound == '\0') { + music2_playing = FALSE; + if ((music2_track_num != 0) && (iVar1 = alCSPGetState(seqp_2), iVar1 == 1)) { + alSeqpStop((ALSeqPlayer *)seqp_2); + } + music2_track_num = 0; } - music2_track_num = 0; - } - return; + return; } -ulonglong get_music2len(void) +ulonglong get_music2vol(void) { - return (ulonglong)music2len; + return (ulonglong)music2vol; } -void musicTrack2Vol(ulonglong param_1) +void musicTrack2Vol(s16 param_1) { - music2len = (u16)(param_1 & 0xffff); - ultra_proc_70012DA0(seqp_2,(short)((uint)((int)(param_1 & 0xffff) * - (int)(short)(&music_array_tempo_maybe)[music2_track_num]) - >> 0xf)); - return; + music2vol = (u16)((longlong)param_1 & 0xffffU); + alCSPSetVol(seqp_2,(s16)((uint)((int)((longlong)param_1 & 0xffffU) * + (int)(short)musicarray_vol[music2_track_num]) >> 0xf)); + return; } @@ -4571,21 +4575,21 @@ void musicTrack2Vol(ulonglong param_1) void music_related_5(void) { - ulonglong uVar1; - undefined2 *puVar2; - u16 uVar3; - - uVar1 = get_music2len(); - (&music_array_tempo_maybe)[music2_track_num] = (short)uVar1; - puVar2 = &music_array_tempo_maybe; - uVar3 = music_related_array[0]; - if (-1 < music_array_tempo_maybe) { - while (-1 < (short)uVar3) { - uVar3 = puVar2[2]; - puVar2 = puVar2 + 1; + ulonglong uVar1; + u16 *puVar2; + u16 uVar3; + + uVar1 = get_music2vol(); + musicarray_vol[music2_track_num] = (u16)uVar1; + puVar2 = musicarray_vol; + uVar3 = musicarray_vol[1]; + if (-1 < (short)musicarray_vol[0]) { + while (-1 < (short)uVar3) { + uVar3 = puVar2[2]; + puVar2 = puVar2 + 1; + } } - } - return; + return; } @@ -4593,16 +4597,16 @@ void music_related_5(void) void music_related_6(float param_1) { - ulonglong uVar1; - - if (-1 < (int)music2_playing) { - uVar1 = get_music2len(); - DAT_80063846 = (undefined2)uVar1; - DAT_8006384c = 0; - DAT_80063854 = (int)(param_1 * 60.00000000); - music2_playing = ~FALSE; - } - return; + ulonglong uVar1; + + if (-1 < (int)music2_playing) { + uVar1 = get_music2vol(); + DAT_80063846 = (undefined2)uVar1; + DAT_8006384c = 0; + DAT_80063854 = (int)(param_1 * 60.00000000); + music2_playing = ~FALSE; + } + return; } @@ -4610,17 +4614,17 @@ void music_related_6(float param_1) void music_related_8(float param_1,undefined8 param_2,short param_3) { - if ((int)music2_playing < 1) { - alCSPPlay(seqp_2); - DAT_8006384c = param_3; - if (param_3 == -1) { - DAT_8006384c = DAT_80063846; + if ((int)music2_playing < 1) { + alCSPPlay(seqp_2); + DAT_8006384c = param_3; + if (param_3 == -1) { + DAT_8006384c = DAT_80063846; + } + DAT_80063846 = 0; + DAT_80063854 = (int)(param_1 * 60.00000000); + music2_playing = TRUE; } - DAT_80063846 = 0; - DAT_80063854 = (int)(param_1 * 60.00000000); - music2_playing = TRUE; - } - return; + return; } @@ -4628,80 +4632,81 @@ void music_related_8(float param_1,undefined8 param_2,short param_3) void music_related_3rd_block(int param_1) { - char *dest; - int iVar2; - ulonglong uVar1; - u8 *src; - uint len; - undefined auStack8468 [8460]; - u8 *local_8; - - if (bootswitch_sound == '\0') { - if (music3_track_num != 0) { - music_related_3rd_block_0(); + char *dest; + int iVar2; + ulonglong uVar1; + u8 *source; + uint len; + u8 auStack8468 [8460]; + u8 *local_8; + + if (bootswitch_sound == '\0') { + if (music3_track_num != 0) { + musicTrack3Stop(); + } + music3_track_num = param_1; + iVar2 = alCSPGetState(ptr_3rd_music_ctrl_block); + while (iVar2 != 0) { + iVar2 = alCSPGetState(ptr_3rd_music_ctrl_block); + } + dest = *(char **)(ptr_musicdatatable + music3_track_num * 8 + 4); + if (dest < (char *)0x10000) { + music_related_3rd_block(1); + } + else { + len = ((uint)(ushort)(&DAT_800637b8)[music3_track_num] + 0xf | 0xf) ^ 0xf; + source = DAT_80063840 + + (((((uint)(ushort)(&DAT_80063738)[music3_track_num] + 0xf | 0xf) ^ 0xf) + 0x40) + - len); + local_8 = DAT_80063840; + romCopy((char *)source,dest,len); + decompressdata(source,local_8,auStack8468); + alCSeqNew(&ALCSeq_80063a50,DAT_80063840); + alCSPSetSeq(ptr_3rd_music_ctrl_block,&ALCSeq_80063a50); + uVar1 = get_music3vol(); + musicTrack3Vol(uVar1 & 0xffff); + alCSPPlay(ptr_3rd_music_ctrl_block); + } } - music3_track_num = param_1; - iVar2 = alCSPGetState(ptr_3rd_music_ctrl_block); - while (iVar2 != 0) { - iVar2 = alCSPGetState(ptr_3rd_music_ctrl_block); - } - dest = *(char **)(ptr_musicdatatable + music3_track_num * 8 + 4); - if (dest < (char *)0x10000) { - music_related_3rd_block(1); - } - else { - len = ((uint)(ushort)(&DAT_800637b8)[music3_track_num] + 0xf | 0xf) ^ 0xf; - src = DAT_80063840 + - (((((uint)(ushort)(&DAT_80063738)[music3_track_num] + 0xf | 0xf) ^ 0xf) + 0x40) - len); - local_8 = DAT_80063840; - romCopy((char *)src,dest,len); - decompressdata((int)src,(int)local_8,(int)auStack8468); - alCSeqNew(&ALCSeq_80063a50,DAT_80063840); - alCSPSetSeq(ptr_3rd_music_ctrl_block,&ALCSeq_80063a50); - uVar1 = get_music3len(); - music_related_3rd_block_1(uVar1 & 0xffff); - alCSPPlay(ptr_3rd_music_ctrl_block); - } - } - return; + return; } -void music_related_3rd_block_0(void) +void musicTrack3Stop(void) { - int iVar1; - - if (bootswitch_sound == '\0') { - music3_playing = FALSE; - if ((music3_track_num != 0) && (iVar1 = alCSPGetState(ptr_3rd_music_ctrl_block), iVar1 == 1)) { - alSeqpStop((ALSeqPlayer *)ptr_3rd_music_ctrl_block); + int iVar1; + + if (bootswitch_sound == '\0') { + music3_playing = FALSE; + if ((music3_track_num != 0) && (iVar1 = alCSPGetState(ptr_3rd_music_ctrl_block), iVar1 == 1) + ) { + alSeqpStop((ALSeqPlayer *)ptr_3rd_music_ctrl_block); + } + music3_track_num = 0; } - music3_track_num = 0; - } - return; + return; } -ulonglong get_music3len(void) +ulonglong get_music3vol(void) { - return (ulonglong)music3len; + return (ulonglong)music3vol; } -void music_related_3rd_block_1(ulonglong param_1) +void musicTrack3Vol(ulonglong param_1) { - music3len = (u16)(param_1 & 0xffff); - ultra_proc_70012DA0(ptr_3rd_music_ctrl_block, - (short)((uint)((int)(param_1 & 0xffff) * - (int)(short)(&music_array_tempo_maybe)[music3_track_num]) >> 0xf - )); - return; + music3vol = (u16)(param_1 & 0xffff); + alCSPSetVol(ptr_3rd_music_ctrl_block, + (s16)((uint)((int)(param_1 & 0xffff) * (int)(short)musicarray_vol[music3_track_num]) + >> 0xf)); + return; } @@ -4709,21 +4714,21 @@ void music_related_3rd_block_1(ulonglong param_1) void music_related_10(void) { - ulonglong uVar1; - undefined2 *puVar2; - u16 uVar3; - - uVar1 = get_music3len(); - (&music_array_tempo_maybe)[music3_track_num] = (short)uVar1; - puVar2 = &music_array_tempo_maybe; - uVar3 = music_related_array[0]; - if (-1 < music_array_tempo_maybe) { - while (-1 < (short)uVar3) { - uVar3 = puVar2[2]; - puVar2 = puVar2 + 1; + ulonglong uVar1; + u16 *puVar2; + u16 uVar3; + + uVar1 = get_music3vol(); + musicarray_vol[music3_track_num] = (u16)uVar1; + puVar2 = musicarray_vol; + uVar3 = musicarray_vol[1]; + if (-1 < (short)musicarray_vol[0]) { + while (-1 < (short)uVar3) { + uVar3 = puVar2[2]; + puVar2 = puVar2 + 1; + } } - } - return; + return; } @@ -4731,16 +4736,16 @@ void music_related_10(void) void music_related_11(float param_1) { - ulonglong uVar1; - - if (-1 < (int)music3_playing) { - uVar1 = get_music3len(); - music3_len = (undefined2)uVar1; - DAT_8006384e = 0; - DAT_80063858 = (int)(param_1 * 60.00000000); - music3_playing = ~FALSE; - } - return; + ulonglong uVar1; + + if (-1 < (int)music3_playing) { + uVar1 = get_music3vol(); + music3_len = (undefined2)uVar1; + DAT_8006384e = 0; + DAT_80063858 = (int)(param_1 * 60.00000000); + music3_playing = ~FALSE; + } + return; } @@ -4748,17 +4753,17 @@ void music_related_11(float param_1) void music_related_13(float param_1,undefined8 param_2,short param_3) { - if ((int)music3_playing < 1) { - alCSPPlay(ptr_3rd_music_ctrl_block); - DAT_8006384e = param_3; - if (param_3 == -1) { - DAT_8006384e = music3_len; + if ((int)music3_playing < 1) { + alCSPPlay(ptr_3rd_music_ctrl_block); + DAT_8006384e = param_3; + if (param_3 == -1) { + DAT_8006384e = music3_len; + } + music3_len = 0; + DAT_80063858 = (int)(param_1 * 60.00000000); + music3_playing = TRUE; } - music3_len = 0; - DAT_80063858 = (int)(param_1 * 60.00000000); - music3_playing = TRUE; - } - return; + return; } @@ -4766,54 +4771,53 @@ void music_related_13(float param_1,undefined8 param_2,short param_3) void music_related_15(void) { - short sVar1; - ulonglong uVar2; - - if (music1_playing != 0) { - uVar2 = get_music1len(); - sVar1 = (short)uVar2 + - (short)(int)((float)((uint)music1_length - (int)uVar2) / (float)music1_rate); - musicTrack1Vol(sVar1); - music1_rate += -1; - if (music1_rate < 1) { - if (sVar1 == 0) { - alSeqpStop((ALSeqPlayer *)seqp_1); - } - music1_rate = 0; - music1_playing = 0; + short sVar1; + ulonglong uVar2; + + if (music1_playing != 0) { + uVar2 = get_music1vol(); + sVar1 = (short)uVar2 + + (short)(int)((float)((uint)music1_length - (int)uVar2) / (float)music1_rate); + musicTrack1Vol(sVar1); + music1_rate += -1; + if (music1_rate < 1) { + if (sVar1 == 0) { + alSeqpStop((ALSeqPlayer *)seqp_1); + } + music1_rate = 0; + music1_playing = 0; + } } - } - if (music2_playing != FALSE) { - uVar2 = get_music2len(); - uVar2 = (longlong) - ((int)uVar2 + (int)((float)((uint)DAT_8006384c - (int)uVar2) / (float)DAT_80063854)) & - 0xffff; - musicTrack2Vol(uVar2); - DAT_80063854 += -1; - if (DAT_80063854 < 1) { - if ((short)uVar2 == 0) { - alSeqpStop((ALSeqPlayer *)seqp_2); - } - DAT_80063854 = 0; - music2_playing = FALSE; + if (music2_playing != FALSE) { + uVar2 = get_music2vol(); + sVar1 = (short)uVar2 + + (short)(int)((float)((uint)DAT_8006384c - (int)uVar2) / (float)DAT_80063854); + musicTrack2Vol(sVar1); + DAT_80063854 += -1; + if (DAT_80063854 < 1) { + if (sVar1 == 0) { + alSeqpStop((ALSeqPlayer *)seqp_2); + } + DAT_80063854 = 0; + music2_playing = FALSE; + } } - } - if (music3_playing != FALSE) { - uVar2 = get_music3len(); - uVar2 = (longlong) - ((int)uVar2 + (int)((float)((uint)DAT_8006384e - (int)uVar2) / (float)DAT_80063858)) & - 0xffff; - music_related_3rd_block_1(uVar2); - DAT_80063858 += -1; - if (DAT_80063858 < 1) { - if ((short)uVar2 == 0) { - alSeqpStop((ALSeqPlayer *)ptr_3rd_music_ctrl_block); - } - DAT_80063858 = 0; - music3_playing = FALSE; + if (music3_playing != FALSE) { + uVar2 = get_music3vol(); + uVar2 = (longlong) + ((int)uVar2 + (int)((float)((uint)DAT_8006384e - (int)uVar2) / (float)DAT_80063858)) + & 0xffff; + musicTrack3Vol(uVar2); + DAT_80063858 += -1; + if (DAT_80063858 < 1) { + if ((short)uVar2 == 0) { + alSeqpStop((ALSeqPlayer *)ptr_3rd_music_ctrl_block); + } + DAT_80063858 = 0; + music3_playing = FALSE; + } } - } - return; + return; } @@ -4821,510 +4825,526 @@ void music_related_15(void) void music_related_16(uint *param_1) { - ALEventListItem *items; - ALMicroTime AVar1; - ALEventListItem *a; - ALHeap *hp; - uint uVar2; - ALEvent AStack24; - - *(uint *)(off_800243F0 + 0x44) = param_1[2]; - *(undefined4 *)(off_800243F0 + 0x3c) = 0; - *(undefined4 *)(off_800243F0 + 0x48) = 33000; - _alHeapDBAlloc(NULL,0,(ALHeap *)param_1[3],1,*param_1 << 6); - *(ALEventListItem **)(off_800243F0 + 0x40) = items; - _alHeapDBAlloc(NULL,0,(ALHeap *)param_1[3],1,param_1[1] * 0x1c); - alEvtqNew((ALEventQueue *)(off_800243F0 + 0x14),items,param_1[1]); - uVar2 = 1; - dword_800243EC = *(undefined4 *)(off_800243F0 + 0x40); - if (*param_1 < 2) { - hp = (ALHeap *)param_1[3]; - } - else { + ALEventListItem *in_v0_lo; + ALMicroTime AVar1; + ALEventListItem *a; + ALHeap *hp; + uint uVar2; + ALEvent AStack24; + + off_800243F0->maxSounds = param_1[2]; + off_800243F0->target = 0; + off_800243F0->frameTime = 33000; + _alHeapDBAlloc(NULL,0,(ALHeap *)param_1[3],1,*param_1 << 6); + *(ALEventListItem **)&off_800243F0->sndState = in_v0_lo; + _alHeapDBAlloc(NULL,0,(ALHeap *)param_1[3],1,param_1[1] * 0x1c); + alEvtqNew(&off_800243F0->evtq,in_v0_lo,param_1[1]); + uVar2 = 1; + dword_800243EC = off_800243F0->sndState; + if (*param_1 < 2) { + hp = (ALHeap *)param_1[3]; + } + else { + do { + in_v0_lo = (ALEventListItem *)off_800243F0->sndState; + a = (ALEventListItem *)(uVar2 * 0x40 + (int)in_v0_lo); + alLink((ALLink *)a,(ALLink *)((int)&a[-3].evt.msg + 6)); + uVar2 += 1; + } while (uVar2 < *param_1); + hp = (ALHeap *)param_1[3]; + } + _alHeapDBAlloc(NULL,0,hp,2,7); + DAT_80063ba4 = in_v0_lo; + _alHeapDBAlloc(NULL,0,(ALHeap *)param_1[3],2,7); + DAT_80063ba8 = in_v0_lo; + *(undefined2 *)&(DAT_80063ba4->node).next = 0x7fff; + *(undefined2 *)&(DAT_80063ba8->node).next = *(undefined2 *)&(DAT_80063ba4->node).next; + *(undefined2 *)((int)&(DAT_80063ba4->node).next + 2) = 0x7fff; + *(undefined2 *)((int)&(DAT_80063ba8->node).next + 2) = + *(undefined2 *)((int)&(DAT_80063ba4->node).next + 2); + *(undefined2 *)&(DAT_80063ba4->node).prev = 0x7fff; + *(undefined2 *)&(DAT_80063ba8->node).prev = *(undefined2 *)&(DAT_80063ba4->node).prev; + *(undefined2 *)((int)&(DAT_80063ba4->node).prev + 2) = 0x7fff; + *(undefined2 *)((int)&(DAT_80063ba8->node).prev + 2) = + *(undefined2 *)((int)&(DAT_80063ba4->node).prev + 2); + *(undefined2 *)&DAT_80063ba4->delta = 0x7fff; + *(undefined2 *)&DAT_80063ba8->delta = *(undefined2 *)&DAT_80063ba4->delta; + *(undefined2 *)((int)&DAT_80063ba4->delta + 2) = 0x7fff; + *(undefined2 *)((int)&DAT_80063ba8->delta + 2) = *(undefined2 *)((int)&DAT_80063ba4->delta + 2); + (DAT_80063ba4->evt).type = 0x7fff; + (DAT_80063ba8->evt).type = (DAT_80063ba4->evt).type; + *(ALGlobals **)&off_800243F0->drvr = slg; + (off_800243F0->node).next = NULL; + (off_800243F0->node).handler = _sndpVoiceHandler; + *(ALSndPlayer **)&(off_800243F0->node).clientData = off_800243F0; + alSynAddPlayer(off_800243F0->drvr,(ALPlayer *)off_800243F0); + AStack24.type = 0x20; + alEvtqPostEvent(&off_800243F0->evtq,&AStack24,off_800243F0->frameTime); + AVar1 = alEvtqNextEvent(&off_800243F0->evtq,&off_800243F0->nextEvent); + off_800243F0->nextDelta = AVar1; + return; +} + + + +ALMicroTime _sndpVoiceHandler(ALSndPlayer *node) + +{ + ALMicroTime AVar1; + ALEvent AStack20; + do { - items = *(ALEventListItem **)(off_800243F0 + 0x40); - a = (ALEventListItem *)(uVar2 * 0x40 + (int)items); - alLink((ALLink *)a,(ALLink *)((int)&a[-3].evt.msg + 10)); - uVar2 += 1; - } while (uVar2 < *param_1); - hp = (ALHeap *)param_1[3]; - } - _alHeapDBAlloc(NULL,0,hp,2,7); - DAT_80063ba4 = items; - _alHeapDBAlloc(NULL,0,(ALHeap *)param_1[3],2,7); - DAT_80063ba8 = items; - *(undefined2 *)&(DAT_80063ba4->node).next = 0x7fff; - *(undefined2 *)&(DAT_80063ba8->node).next = *(undefined2 *)&(DAT_80063ba4->node).next; - *(undefined2 *)((int)&(DAT_80063ba4->node).next + 2) = 0x7fff; - *(undefined2 *)((int)&(DAT_80063ba8->node).next + 2) = - *(undefined2 *)((int)&(DAT_80063ba4->node).next + 2); - *(undefined2 *)&(DAT_80063ba4->node).prev = 0x7fff; - *(undefined2 *)&(DAT_80063ba8->node).prev = *(undefined2 *)&(DAT_80063ba4->node).prev; - *(undefined2 *)((int)&(DAT_80063ba4->node).prev + 2) = 0x7fff; - *(undefined2 *)((int)&(DAT_80063ba8->node).prev + 2) = - *(undefined2 *)((int)&(DAT_80063ba4->node).prev + 2); - *(undefined2 *)&DAT_80063ba4->delta = 0x7fff; - *(undefined2 *)&DAT_80063ba8->delta = *(undefined2 *)&DAT_80063ba4->delta; - *(undefined2 *)((int)&DAT_80063ba4->delta + 2) = 0x7fff; - *(undefined2 *)((int)&DAT_80063ba8->delta + 2) = *(undefined2 *)((int)&DAT_80063ba4->delta + 2); - (DAT_80063ba4->evt).type = 0x7fff; - (DAT_80063ba8->evt).type = (DAT_80063ba4->evt).type; - *(ALGlobals **)(off_800243F0 + 0x38) = slg; - *(undefined4 *)off_800243F0 = 0; - *(undefined4 *)(off_800243F0 + 8) = 0x70007ddc; - *(undefined **)(off_800243F0 + 4) = off_800243F0; - alSynAddPlayer(*(ALSynth **)(off_800243F0 + 0x38),(ALPlayer *)off_800243F0); - AStack24.type = 0x20; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),&AStack24, - *(ALMicroTime *)(off_800243F0 + 0x48)); - AVar1 = alEvtqNextEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)(off_800243F0 + 0x28)); - *(ALMicroTime *)(off_800243F0 + 0x4c) = AVar1; - return; + if ((node->nextEvent).type == 0x20) { + AStack20.type = 0x20; + alEvtqPostEvent(&node->evtq,&AStack20,node->frameTime); + } + else { + _handleEvent(node,(u32 *)&node->nextEvent); + } + AVar1 = alEvtqNextEvent(&node->evtq,&node->nextEvent); + node->nextDelta = AVar1; + } while (AVar1 == 0); + node->curTime = node->curTime + AVar1; + return AVar1; } -void music_related_17(int param_1) +void _handleEvent(ALSndPlayer *sndp,u32 *event) { - ALMicroTime AVar1; - ALEvent AStack20; - - do { - if (*(short *)(param_1 + 0x28) == 0x20) { - AStack20.type = 0x20; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x14),&AStack20,*(ALMicroTime *)(param_1 + 0x48)); - } - else { - music_related_18(param_1,(ushort *)(ALEvent *)(param_1 + 0x28)); - } - AVar1 = alEvtqNextEvent((ALEventQueue *)(param_1 + 0x14),(ALEvent *)(param_1 + 0x28)); - *(ALMicroTime *)(param_1 + 0x4c) = AVar1; - } while (AVar1 == 0); - *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + AVar1; - return; -} - - - -void music_related_18(int param_1,ushort *param_2) - -{ - byte bVar1; - char cVar2; - int **ppiVar3; - int *piVar4; - bool bVar5; - ushort uVar6; - int iVar7; - s16 volume; - u8 pan; - uint uVar8; - ALVoice *voice; - int *piVar9; - f32 pitch; - f32 pitch_00; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f12_01; - f32 extraout_f12_02; - f32 extraout_f12_03; - f32 extraout_f12_04; - f32 extraout_f12_05; - f32 extraout_f12_06; - f32 extraout_f12_07; - f32 extraout_f12_08; - f32 extraout_f12_09; - f32 extraout_f12_10; - f32 extraout_f12_11; - f32 extraout_f12_12; - int *piVar10; - int t; - s16 sStack116; - int iStack112; - int iStack100; - short sStack96; - short sStack94; - int **ppiStack92; - int **ppiStack88; - s32 sStack84; - uint uStack80; - int iStack64; - s16 sStack52; - int **ppiStack48; - undefined4 uStack44; - s16 sStack36; - int **ppiStack32; - ALVoiceConfig AStack8; - - uStack80 = 1; - sStack84 = 0; - ppiStack92 = NULL; - do { - if (ppiStack92 == NULL) { - ppiStack88 = *(int ***)((int)&((ALEvent *)param_2)->msg + 2); - } - else { - sStack52 = ((ALEvent *)param_2)->type; - uStack44 = *(undefined4 *)((int)&((ALEvent *)param_2)->msg + 6); - param_2 = (ushort *)&sStack52; - ppiStack48 = ppiStack88; - } - ppiVar3 = (int **)ppiStack88[2]; - if (ppiVar3 == NULL) { - music_related_22(&sStack94,&sStack96); - return; - } - ppiStack92 = (int **)*ppiStack88; - piVar4 = ppiVar3[1]; - uVar6 = ((ALEvent *)param_2)->type; - if (uVar6 < 0x101) { - if (uVar6 < 0x41) { - if (uVar6 < 0x11) { - if (false) { + byte bVar1; + char cVar2; + int **ppiVar3; + int *piVar4; + bool bVar5; + _union_144 *p_Var6; + ushort uVar7; + int iVar8; + s16 volume; + u8 pan; + uint uVar9; + ALVoice *voice; + int *piVar10; + f32 in_f12; + f32 pitch; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f12_01; + f32 extraout_f12_02; + f32 extraout_f12_03; + f32 extraout_f12_04; + f32 extraout_f12_05; + f32 extraout_f12_06; + f32 extraout_f12_07; + f32 extraout_f12_08; + f32 extraout_f12_09; + f32 extraout_f12_10; + f32 extraout_f12_11; + f32 extraout_f12_12; + int *piVar11; + int t; + s16 sStack116; + int iStack112; + int iStack100; + short sStack96; + short sStack94; + int **ppiStack92; + int **ppiStack88; + s32 sStack84; + uint uStack80; + int iStack64; + s16 sStack52; + int **ppiStack48; + undefined4 uStack44; + s16 sStack36; + int **ppiStack32; + ALVoiceConfig AStack8; + + uStack80 = 1; + sStack84 = 0; + ppiStack92 = NULL; + do { + if (ppiStack92 == NULL) { + ppiStack88 = *(int ***)((int)&((ALEvent *)event)->msg + 2); + } + else { + ppiStack48 = ppiStack88; + sStack52 = ((ALEvent *)event)->type; + p_Var6 = &((ALEvent *)event)->msg; + event = (u32 *)&sStack52; + uStack44 = *(undefined4 *)((int)p_Var6 + 6); + } + ppiVar3 = (int **)ppiStack88[2]; + if (ppiVar3 == NULL) { + music_related_22(&sStack94,&sStack96); + return; + } + ppiStack92 = (int **)*ppiStack88; + piVar4 = ppiVar3[1]; + uVar7 = ((ALEvent *)event)->type; + if (uVar7 < 0x101) { + if (uVar7 < 0x41) { + if (uVar7 < 0x11) { + if (false) { switchD_70007fb4_caseD_3: - uVar6 &= 0x2d1; - } - else { - switch(uVar6) { - case 1: - if ((*(char *)((int)ppiStack88 + 0x3f) != '\x05') && - (*(char *)((int)ppiStack88 + 0x3f) != '\x04')) { - return; - } - AStack8.fxBus = 0; - AStack8.unityPitch = '\0'; - AStack8.priority = (ushort)*(byte *)((int)ppiStack88 + 0x36); - bVar5 = (longlong)*(int *)(param_1 + 0x44) <= (longlong)dword_800243F4; - if ((!bVar5) || (bVar1 = *(byte *)((int)ppiStack88 + 0x3e), (bVar1 & 0x10) != 0)) { - sStack84 = alSynAllocVoice(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3) - ,&AStack8); - bVar1 = *(byte *)((int)ppiStack88 + 0x3e); - } - voice = (ALVoice *)(ppiStack88 + 3); - if (sStack84 == 0) { - if (((bVar1 & 0x12) == 0) && ((int)ppiStack88[0xe] < 1)) { - if (bVar5) { - bVar1 = *(byte *)(dword_800243E8 + 0x3e); - t = dword_800243E8; - while( true ) { - if ((((bVar1 & 0x12) == 0) && ((bVar1 & 4) != 0)) && - (*(char *)(t + 0x3f) != '\x03')) { - sStack116 = 0x80; - *(undefined *)(t + 0x3f) = 3; - bVar5 = false; - iStack112 = t; - iStack100 = t; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x14),(ALEvent *)&sStack116,1000) - ; - alSynSetVol(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(iStack100 + 0xc),0, - 1000); - t = iStack100; - } - t = *(int *)(t + 4); - if ((!bVar5) || (t == 0)) break; - bVar1 = *(byte *)(t + 0x3e); - } - if (bVar5) { - music_related_19(ppiStack88); + uVar7 &= 0x2d1; } else { - ppiStack88[0xe] = (int *)((int)&rgba + 2); - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x14),(ALEvent *)param_2,0x3e9); - } - } - else { - music_related_19(ppiStack88); - } - } - else { - *(undefined *)((int)ppiStack88 + 0x3f) = 4; - ppiStack88[0xe] = (int *)((int)ppiStack88[0xe] + -1); - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x14),(ALEvent *)param_2,0x8235); - } - return; - } - *(byte *)((int)ppiStack88 + 0x3e) = bVar1 | 4; - alSynStartVoice(*(ALSynth **)(param_1 + 0x38),voice,(ALWaveTable *)ppiVar3[2]); - *(undefined *)((int)ppiStack88 + 0x3f) = 1; - dword_800243F4 += 1; - t = **ppiVar3; - piVar9 = ppiStack88[0xb]; - piVar10 = ppiStack88[10]; - iStack64 = ((int)*(short *)(DAT_80063ba4 + - ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2) * - ((int)((uint)*(byte *)(*ppiVar3 + 3) * (int)*(short *)(ppiStack88 + 0xd) * - (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / 0x7fff + -1; - if (iStack64 < 0) { - iStack64 = 0; - } - alSynSetVol(*(ALSynth **)(param_1 + 0x38),voice,0,0); - alSynSetVol(*(ALSynth **)(param_1 + 0x38),voice,(s16)iStack64, - (int)(((float)t / (float)piVar9) / (float)piVar10)); - pan = '\x7f'; - iVar7 = (uint)*(byte *)(ppiStack88 + 0xf) + (uint)*(byte *)(ppiVar3 + 3) + -0x40; - t = 0; - if (0 < iVar7) { - t = iVar7; - } - if (t < 0x7f) { - if (iVar7 < 1) { - pan = '\0'; - } - else { - pan = (u8)iVar7; - } - } - alSynSetPan(*(ALSynth **)(param_1 + 0x38),voice,pan); - alSynSetPitch(*(ALSynth **)(param_1 + 0x38),voice,pitch_00); - uVar8 = ((uint)*(byte *)((int)ppiStack88 + 0x3d) + - ((uint)*(byte *)((int)piVar4 + 3) & 0xf)) * 8; - pan = (u8)uVar8; - if (false) { - uVar8 = 0; - } - if (uVar8 < 0x80) { - if (false) { - pan = '\0'; - } - } - else { - pan = '\x7f'; - } - alSynSetFXMix(*(ALSynth **)(param_1 + 0x38),voice,pan); - sStack36 = 0x40; - ppiStack32 = ppiStack88; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x14),(ALEvent *)&sStack36, - (int)(((float)**ppiVar3 / (float)ppiStack88[0xb]) / - (float)ppiStack88[10])); - uVar6 = ((ALEvent *)param_2)->type & 0x2d1; - pitch = extraout_f12; - break; - case 2: - goto LAB_7000838c; - default: - goto switchD_70007fb4_caseD_3; - case 4: - uVar8 = *(uint *)((int)&((ALEvent *)param_2)->msg + 6); - *(char *)(ppiStack88 + 0xf) = (char)uVar8; - if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { - iVar7 = (uVar8 & 0xff) + (uint)*(byte *)(ppiVar3 + 3) + -0x40; - pan = '\x7f'; - t = 0; - if (0 < iVar7) { - t = iVar7; - } - if (t < 0x7f) { - if (iVar7 < 1) { - pan = '\0'; - } - else { - pan = (u8)iVar7; - } - } - alSynSetPan(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3),pan); - pitch = extraout_f12_03; - } - uVar6 = ((ALEvent *)param_2)->type & 0x2d1; - break; - case 8: - *(short *)(ppiStack88 + 0xd) = - (short)*(undefined4 *)((int)&((ALEvent *)param_2)->msg + 6); - if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { - t = ((int)*(short *)(DAT_80063ba4 + ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2) * - ((int)((uint)*(byte *)((int)*ppiVar3 + 0xd) * (int)*(short *)(ppiStack88 + 0xd) - * (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / 0x7fff + -1; - volume = (s16)t; - if (t < 0) { - volume = 0; - } - alSynSetVol(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3),volume,1000); - pitch = extraout_f12_07; - } - uVar6 = ((ALEvent *)param_2)->type & 0x2d1; - break; - case 0x10: - ppiStack88[0xb] = *(int **)((int)&((ALEvent *)param_2)->msg + 6); - if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { - alSynSetPitch(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3),pitch); - if ((*(byte *)((int)ppiStack88 + 0x3e) & 0x20) != 0) { - music_related_20((int)ppiStack88); - pitch = extraout_f12_05; - goto LAB_70008538; - } - uVar6 = ((ALEvent *)param_2)->type; - pitch = extraout_f12_04; - } - else { + switch(uVar7) { + case 1: + if ((*(char *)((int)ppiStack88 + 0x3f) != '\x05') && + (*(char *)((int)ppiStack88 + 0x3f) != '\x04')) { + return; + } + AStack8.fxBus = 0; + AStack8.unityPitch = '\0'; + AStack8.priority = (ushort)*(byte *)((int)ppiStack88 + 0x36); + bVar5 = (longlong)sndp->maxSounds <= (longlong)dword_800243F4; + if ((!bVar5) || + (bVar1 = *(byte *)((int)ppiStack88 + 0x3e), (bVar1 & 0x10) != 0)) { + sStack84 = alSynAllocVoice(sndp->drvr,(ALVoice *)(ppiStack88 + 3), + &AStack8); + bVar1 = *(byte *)((int)ppiStack88 + 0x3e); + } + voice = (ALVoice *)(ppiStack88 + 3); + if (sStack84 == 0) { + if (((bVar1 & 0x12) == 0) && ((int)ppiStack88[0xe] < 1)) { + if (bVar5) { + bVar1 = *(byte *)(dword_800243E8 + 0x3e); + t = dword_800243E8; + while( true ) { + if ((((bVar1 & 0x12) == 0) && ((bVar1 & 4) != 0)) && + (*(char *)(t + 0x3f) != '\x03')) { + sStack116 = 0x80; + *(undefined *)(t + 0x3f) = 3; + bVar5 = false; + iStack112 = t; + iStack100 = t; + alEvtqPostEvent(&sndp->evtq,(ALEvent *)&sStack116, + 1000); + alSynSetVol(sndp->drvr,(ALVoice *)(iStack100 + 0xc), + 0,1000); + t = iStack100; + } + t = *(int *)(t + 4); + if ((!bVar5) || (t == 0)) break; + bVar1 = *(byte *)(t + 0x3e); + } + if (bVar5) { + music_related_19(ppiStack88); + } + else { + ppiStack88[0xe] = (int *)((int)&rgba + 2); + alEvtqPostEvent(&sndp->evtq,(ALEvent *)event,0x3e9); + } + } + else { + music_related_19(ppiStack88); + } + } + else { + *(undefined *)((int)ppiStack88 + 0x3f) = 4; + ppiStack88[0xe] = (int *)((int)ppiStack88[0xe] + -1); + alEvtqPostEvent(&sndp->evtq,(ALEvent *)event,0x8235); + } + return; + } + *(byte *)((int)ppiStack88 + 0x3e) = bVar1 | 4; + alSynStartVoice(sndp->drvr,voice,(ALWaveTable *)ppiVar3[2]); + *(undefined *)((int)ppiStack88 + 0x3f) = 1; + dword_800243F4 += 1; + t = **ppiVar3; + piVar10 = ppiStack88[0xb]; + piVar11 = ppiStack88[10]; + iStack64 = ((int)*(short *)(DAT_80063ba4 + + ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2 + ) * + ((int)((uint)*(byte *)(*ppiVar3 + 3) * + (int)*(short *)(ppiStack88 + 0xd) * + (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / + 0x7fff + -1; + if (iStack64 < 0) { + iStack64 = 0; + } + alSynSetVol(sndp->drvr,voice,0,0); + alSynSetVol(sndp->drvr,voice,(s16)iStack64, + (int)(((float)t / (float)piVar10) / (float)piVar11)); + pan = '\x7f'; + iVar8 = (uint)*(byte *)(ppiStack88 + 0xf) + (uint)*(byte *)(ppiVar3 + 3) + + -0x40; + t = 0; + if (0 < iVar8) { + t = iVar8; + } + if (t < 0x7f) { + if (iVar8 < 1) { + pan = '\0'; + } + else { + pan = (u8)iVar8; + } + } + alSynSetPan(sndp->drvr,voice,pan); + alSynSetPitch(sndp->drvr,voice,pitch); + uVar9 = ((uint)*(byte *)((int)ppiStack88 + 0x3d) + + ((uint)*(byte *)((int)piVar4 + 3) & 0xf)) * 8; + pan = (u8)uVar9; + if (false) { + uVar9 = 0; + } + if (uVar9 < 0x80) { + if (false) { + pan = '\0'; + } + } + else { + pan = '\x7f'; + } + alSynSetFXMix(sndp->drvr,voice,pan); + sStack36 = 0x40; + ppiStack32 = ppiStack88; + alEvtqPostEvent(&sndp->evtq,(ALEvent *)&sStack36, + (int)(((float)**ppiVar3 / (float)ppiStack88[0xb]) / + (float)ppiStack88[10])); + uVar7 = ((ALEvent *)event)->type & 0x2d1; + in_f12 = extraout_f12; + break; + case 2: + goto LAB_7000838c; + default: + goto switchD_70007fb4_caseD_3; + case 4: + uVar9 = *(uint *)((int)&((ALEvent *)event)->msg + 6); + *(char *)(ppiStack88 + 0xf) = (char)uVar9; + if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { + iVar8 = (uVar9 & 0xff) + (uint)*(byte *)(ppiVar3 + 3) + -0x40; + pan = '\x7f'; + t = 0; + if (0 < iVar8) { + t = iVar8; + } + if (t < 0x7f) { + if (iVar8 < 1) { + pan = '\0'; + } + else { + pan = (u8)iVar8; + } + } + alSynSetPan(sndp->drvr,(ALVoice *)(ppiStack88 + 3),pan); + in_f12 = extraout_f12_03; + } + uVar7 = ((ALEvent *)event)->type & 0x2d1; + break; + case 8: + *(short *)(ppiStack88 + 0xd) = + (short)*(undefined4 *)((int)&((ALEvent *)event)->msg + 6); + if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { + t = ((int)*(short *)(DAT_80063ba4 + + ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2) * + ((int)((uint)*(byte *)((int)*ppiVar3 + 0xd) * + (int)*(short *)(ppiStack88 + 0xd) * + (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / 0x7fff + + -1; + volume = (s16)t; + if (t < 0) { + volume = 0; + } + alSynSetVol(sndp->drvr,(ALVoice *)(ppiStack88 + 3),volume,1000); + in_f12 = extraout_f12_07; + } + uVar7 = ((ALEvent *)event)->type & 0x2d1; + break; + case 0x10: + ppiStack88[0xb] = *(int **)((int)&((ALEvent *)event)->msg + 6); + if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { + alSynSetPitch(sndp->drvr,(ALVoice *)(ppiStack88 + 3),in_f12); + if ((*(byte *)((int)ppiStack88 + 0x3e) & 0x20) != 0) { + music_related_20((int)ppiStack88); + in_f12 = extraout_f12_05; + goto LAB_70008538; + } + uVar7 = ((ALEvent *)event)->type; + in_f12 = extraout_f12_04; + } + else { LAB_70008538: - uVar6 = ((ALEvent *)param_2)->type; - } - uVar6 &= 0x2d1; - } - } - } - else { - if (uVar6 == 0x40) { - if ((*(byte *)((int)ppiStack88 + 0x3e) & 2) == 0) { - t = ((int)*(short *)(DAT_80063ba4 + ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2) * - ((int)((uint)*(byte *)((int)*ppiVar3 + 0xd) * (int)*(short *)(ppiStack88 + 0xd) * - (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / 0x7fff + -1; - volume = (s16)t; - if (t < 0) { - volume = 0; - } - t = (int)(((float)(*ppiVar3)[1] / (float)ppiStack88[10]) / (float)ppiStack88[0xb]); - alSynSetVol(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3),volume,t); - sStack36 = 2; - ppiStack32 = ppiStack88; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x14),(ALEvent *)&sStack36,t); - if ((*(byte *)((int)ppiStack88 + 0x3e) & 0x20) == 0) { - uVar6 = ((ALEvent *)param_2)->type; - pitch = extraout_f12_09; - } - else { - music_related_20((int)ppiStack88); - uVar6 = ((ALEvent *)param_2)->type; - pitch = extraout_f12_10; - } - } - else { - uVar6 = ((ALEvent *)param_2)->type; - } - uVar6 &= 0x2d1; - } - else { - uVar6 &= 0x2d1; - } - } - } - else { - if (uVar6 == 0x80) { - music_related_19(ppiStack88); - uVar6 = ((ALEvent *)param_2)->type & 0x2d1; - pitch = extraout_f12_11; - } - else { - if (uVar6 == 0x100) { - uVar8 = *(uint *)((int)&((ALEvent *)param_2)->msg + 6); - *(undefined *)((int)ppiStack88 + 0x3d) = (char)uVar8; - if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { - uVar8 = ((uVar8 & 0xff) + ((uint)*(byte *)((int)piVar4 + 3) & 0xf)) * 8; - pan = (u8)uVar8; - if (false) { - uVar8 = 0; - } - if (uVar8 < 0x80) { - if (false) { - pan = '\0'; + uVar7 = ((ALEvent *)event)->type; + } + uVar7 &= 0x2d1; + } + } + } + else { + if (uVar7 == 0x40) { + if ((*(byte *)((int)ppiStack88 + 0x3e) & 2) == 0) { + t = ((int)*(short *)(DAT_80063ba4 + + ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2) * + ((int)((uint)*(byte *)((int)*ppiVar3 + 0xd) * + (int)*(short *)(ppiStack88 + 0xd) * + (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / 0x7fff + -1; + volume = (s16)t; + if (t < 0) { + volume = 0; + } + t = (int)(((float)(*ppiVar3)[1] / (float)ppiStack88[10]) / + (float)ppiStack88[0xb]); + alSynSetVol(sndp->drvr,(ALVoice *)(ppiStack88 + 3),volume,t); + sStack36 = 2; + ppiStack32 = ppiStack88; + alEvtqPostEvent(&sndp->evtq,(ALEvent *)&sStack36,t); + if ((*(byte *)((int)ppiStack88 + 0x3e) & 0x20) == 0) { + uVar7 = ((ALEvent *)event)->type; + in_f12 = extraout_f12_09; + } + else { + music_related_20((int)ppiStack88); + uVar7 = ((ALEvent *)event)->type; + in_f12 = extraout_f12_10; + } + } + else { + uVar7 = ((ALEvent *)event)->type; + } + uVar7 &= 0x2d1; + } + else { + uVar7 &= 0x2d1; + } } - } - else { - pan = '\x7f'; - } - alSynSetFXMix(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3),pan); - pitch = extraout_f12_06; - } - uVar6 = ((ALEvent *)param_2)->type & 0x2d1; - } - else { - uVar6 &= 0x2d1; - } - } - } - } - else { - if (uVar6 == 0x200) { - if ((*(byte *)((int)ppiStack88 + 0x3e) & 0x10) != 0) { - play_sfx_a1(*(void **)((int)&((ALEvent *)param_2)->msg + 10), - *(short *)((int)&((ALEvent *)param_2)->msg + 8),(sfxdata *)ppiStack88[0xc]); - uVar6 = ((ALEvent *)param_2)->type; - pitch = extraout_f12_12; - } - uVar6 &= 0x2d1; - } - else { - if (uVar6 == 0x400) { -LAB_7000838c: - if (uVar6 == 0x1000) { - if ((*(byte *)((int)ppiStack88 + 0x3e) & 2) != 0) { - cVar2 = *(char *)((int)ppiStack88 + 0x3f); - goto LAB_700083a8; - } - } - else { - cVar2 = *(char *)((int)ppiStack88 + 0x3f); -LAB_700083a8: - if (cVar2 == '\x01') { - music_related_21((int **)(ALEventQueue *)(param_1 + 0x14),(int *)ppiStack88,0x40); - t = (int)(((float)(*ppiVar3)[2] / (float)ppiStack88[10]) / (float)ppiStack88[0xb]); - alSynSetVol(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3),0,t); - if (t == 0) { - music_related_19(ppiStack88); - pitch = extraout_f12_01; - } - else { - sStack36 = 0x80; - ppiStack32 = ppiStack88; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x14),(ALEvent *)&sStack36,t); - *(undefined *)((int)ppiStack88 + 0x3f) = 2; - pitch = extraout_f12_00; - } - uVar6 = ((ALEvent *)param_2)->type; } else { - if ((cVar2 == '\x04') || (cVar2 == '\x05')) { - music_related_19(ppiStack88); - uVar6 = ((ALEvent *)param_2)->type; - pitch = extraout_f12_02; - } + if (uVar7 == 0x80) { + music_related_19(ppiStack88); + uVar7 = ((ALEvent *)event)->type & 0x2d1; + in_f12 = extraout_f12_11; + } + else { + if (uVar7 == 0x100) { + uVar9 = *(uint *)((int)&((ALEvent *)event)->msg + 6); + *(undefined *)((int)ppiStack88 + 0x3d) = (char)uVar9; + if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { + uVar9 = ((uVar9 & 0xff) + ((uint)*(byte *)((int)piVar4 + 3) & 0xf)) * 8; + pan = (u8)uVar9; + if (false) { + uVar9 = 0; + } + if (uVar9 < 0x80) { + if (false) { + pan = '\0'; + } + } + else { + pan = '\x7f'; + } + alSynSetFXMix(sndp->drvr,(ALVoice *)(ppiStack88 + 3),pan); + in_f12 = extraout_f12_06; + } + uVar7 = ((ALEvent *)event)->type & 0x2d1; + } + else { + uVar7 &= 0x2d1; + } + } } - if (uVar6 == 2) { - ((ALEvent *)param_2)->type = 0x1000; - uVar6 = 0; - } - } - uVar6 &= 0x2d1; } else { - if (uVar6 == 0x800) { - if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { - t = ((int)*(short *)(DAT_80063ba4 + ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2) * - ((int)((uint)*(byte *)((int)*ppiVar3 + 0xd) * (int)*(short *)(ppiStack88 + 0xd) * - (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / 0x7fff + -1; - volume = (s16)t; - if (t < 0) { - volume = 0; - } - alSynSetVol(*(ALSynth **)(param_1 + 0x38),(ALVoice *)(ppiStack88 + 3),volume, - (int)(((float)(*ppiVar3)[2] / (float)ppiStack88[10]) / - (float)ppiStack88[0xb])); - uVar6 = ((ALEvent *)param_2)->type; - pitch = extraout_f12_08; + if (uVar7 == 0x200) { + if ((*(byte *)((int)ppiStack88 + 0x3e) & 0x10) != 0) { + play_sfx_a1(*(void **)((int)&((ALEvent *)event)->msg + 10), + *(short *)((int)&((ALEvent *)event)->msg + 8), + (ALSndPlayer *)ppiStack88[0xc]); + uVar7 = ((ALEvent *)event)->type; + in_f12 = extraout_f12_12; + } + uVar7 &= 0x2d1; + } + else { + if (uVar7 == 0x400) { +LAB_7000838c: + if (uVar7 == 0x1000) { + if ((*(byte *)((int)ppiStack88 + 0x3e) & 2) != 0) { + cVar2 = *(char *)((int)ppiStack88 + 0x3f); + goto LAB_700083a8; + } + } + else { + cVar2 = *(char *)((int)ppiStack88 + 0x3f); +LAB_700083a8: + if (cVar2 == '\x01') { + _removeEvents(&sndp->evtq,(u32 *)ppiStack88); + t = (int)(((float)(*ppiVar3)[2] / (float)ppiStack88[10]) / + (float)ppiStack88[0xb]); + alSynSetVol(sndp->drvr,(ALVoice *)(ppiStack88 + 3),0,t); + if (t == 0) { + music_related_19(ppiStack88); + in_f12 = extraout_f12_01; + } + else { + sStack36 = 0x80; + ppiStack32 = ppiStack88; + alEvtqPostEvent(&sndp->evtq,(ALEvent *)&sStack36,t); + *(undefined *)((int)ppiStack88 + 0x3f) = 2; + in_f12 = extraout_f12_00; + } + uVar7 = ((ALEvent *)event)->type; + } + else { + if ((cVar2 == '\x04') || (cVar2 == '\x05')) { + music_related_19(ppiStack88); + uVar7 = ((ALEvent *)event)->type; + in_f12 = extraout_f12_02; + } + } + if (uVar7 == 2) { + ((ALEvent *)event)->type = 0x1000; + uVar7 = 0; + } + } + uVar7 &= 0x2d1; + } + else { + if (uVar7 == 0x800) { + if (*(char *)((int)ppiStack88 + 0x3f) == '\x01') { + t = ((int)*(short *)(DAT_80063ba4 + + ((uint)*(byte *)((int)piVar4 + 2) & 0x3f) * 2) * + ((int)((uint)*(byte *)((int)*ppiVar3 + 0xd) * + (int)*(short *)(ppiStack88 + 0xd) * + (uint)*(byte *)((int)ppiVar3 + 0xd)) / 0x3f01)) / 0x7fff + -1; + volume = (s16)t; + if (t < 0) { + volume = 0; + } + alSynSetVol(sndp->drvr,(ALVoice *)(ppiStack88 + 3),volume, + (int)(((float)(*ppiVar3)[2] / (float)ppiStack88[10]) / + (float)ppiStack88[0xb])); + uVar7 = ((ALEvent *)event)->type; + in_f12 = extraout_f12_08; + } + uVar7 &= 0x2d1; + } + else { + if (uVar7 == 0x1000) goto LAB_7000838c; + uVar7 &= 0x2d1; + } + } } - uVar6 &= 0x2d1; - } - else { - if (uVar6 == 0x1000) goto LAB_7000838c; - uVar6 &= 0x2d1; - } } - } - } - if ((ppiStack92 != NULL) && (uVar6 == 0)) { - uStack80 = (uint)*(byte *)((int)ppiStack92 + 0x3e) & 1; - } - if (uStack80 != 0) { - return; - } - if (ppiStack92 == NULL) { - return; - } - ppiStack88 = ppiStack92; - if (uVar6 != 0) { - return; - } - } while( true ); + if ((ppiStack92 != NULL) && (uVar7 == 0)) { + uStack80 = (uint)*(byte *)((int)ppiStack92 + 0x3e) & 1; + } + if (uStack80 != 0) { + return; + } + if (ppiStack92 == NULL) { + return; + } + ppiStack88 = ppiStack92; + if (uVar7 != 0) { + return; + } + } while( true ); } @@ -5332,13 +5352,13 @@ LAB_700083a8: void music_related_19(int **param_1) { - if ((*(byte *)((int)param_1 + 0x3e) & 4) != 0) { - alSynStopVoice(*(ALSynth **)(off_800243F0 + 0x38),(ALVoice *)(param_1 + 3)); - alSynFreeVoice(*(ALSynth **)(off_800243F0 + 0x38),(ALVoice *)(param_1 + 3)); - } - music_related_24(param_1); - music_related_21((int **)(off_800243F0 + 0x14),(int *)param_1,0xffff); - return; + if ((*(byte *)((int)param_1 + 0x3e) & 4) != 0) { + alSynStopVoice(off_800243F0->drvr,(ALVoice *)(param_1 + 3)); + alSynFreeVoice(off_800243F0->drvr,(ALVoice *)(param_1 + 3)); + } + music_related_24(param_1); + _removeEvents(&off_800243F0->evtq,(u32 *)param_1); + return; } @@ -5346,42 +5366,44 @@ void music_related_19(int **param_1) void music_related_20(int param_1) { - f32 fVar1; - s16 sStack16; - int iStack12; - float fStack8; - - fVar1 = alCents2Ratio((int)*(char *)(*(int *)(*(int *)(param_1 + 8) + 4) + 5)); - sStack16 = 0x10; - fStack8 = (float)fVar1 * *(float *)(param_1 + 0x2c); - iStack12 = param_1; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack16,0x8235); - return; + f32 fVar1; + s16 sStack16; + int iStack12; + float fStack8; + + fVar1 = alCents2Ratio((int)*(char *)(*(int *)(*(int *)(param_1 + 8) + 4) + 5)); + sStack16 = 0x10; + fStack8 = (float)fVar1 * *(float *)(param_1 + 0x2c); + iStack12 = param_1; + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack16,0x8235); + return; } -void music_related_21(int **param_1,int *param_2,ushort param_3) +void _removeEvents(ALEventQueue *evtq,u32 *state) { - ALLink_s *pAVar1; - ALLink *a; - OSIntMask OVar2; - - OVar2 = osSetIntMask(1); - pAVar1 = (ALLink_s *)param_1[2]; - while (a = (ALLink *)pAVar1, a != NULL) { - pAVar1 = a->next; - if (((ALLink_s *)param_2 == a[2].next) && ((*(ushort *)&a[1].prev & param_3) != 0)) { - if (pAVar1 != NULL) { - pAVar1[1].next = (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar1[1].next)->next); - } - alUnlink(a); - alLink(a,(ALLink *)param_1); + ALLink_s *pAVar1; + ALLink *a; + OSIntMask mask; + ushort in_a2_lo; + + mask = osSetIntMask(1); + pAVar1 = (ALLink_s *)(evtq->allocList).next; + while (a = (ALLink *)pAVar1, a != NULL) { + pAVar1 = a->next; + if (((ALLink_s *)state == a[2].next) && ((*(ushort *)&a[1].prev & in_a2_lo) != 0)) { + if (pAVar1 != NULL) { + pAVar1[1].next = + (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar1[1].next)->next); + } + alUnlink(a); + alLink(a,(ALLink *)evtq); + } } - } - osSetIntMask(OVar2); - return; + osSetIntMask(mask); + return; } @@ -5389,107 +5411,107 @@ void music_related_21(int **param_1,int *param_2,ushort param_3) uint music_related_22(short *param_1,short *param_2) { - int *piVar1; - short sVar2; - int iVar3; - short sVar4; - short sVar5; - uint uVar6; - - sVar4 = 0; - piVar1 = dword_800243E4; - sVar5 = 0; - if (dword_800243E4 != NULL) { - do { - piVar1 = (int *)*piVar1; - sVar4 = sVar5 + 1; - sVar5 = sVar4; - } while (piVar1 != NULL); - } - sVar2 = 0; - piVar1 = dword_800243EC; - sVar5 = 0; - if (dword_800243EC != NULL) { - do { - piVar1 = (int *)*piVar1; - sVar2 = sVar5 + 1; - sVar5 = sVar2; - } while (piVar1 != NULL); - } - uVar6 = 0; - iVar3 = dword_800243E8; - if (dword_800243E8 != 0) { - do { - iVar3 = *(int *)(iVar3 + 4); - uVar6 = uVar6 + 1 & 0xffff; - } while (iVar3 != 0); - } - *param_1 = sVar2; - *param_2 = sVar4; - return uVar6; + int *piVar1; + short sVar2; + int iVar3; + short sVar4; + short sVar5; + uint uVar6; + + sVar4 = 0; + piVar1 = dword_800243E4; + sVar5 = 0; + if (dword_800243E4 != NULL) { + do { + piVar1 = (int *)*piVar1; + sVar4 = sVar5 + 1; + sVar5 = sVar4; + } while (piVar1 != NULL); + } + sVar2 = 0; + piVar1 = dword_800243EC; + sVar5 = 0; + if (dword_800243EC != NULL) { + do { + piVar1 = (int *)*piVar1; + sVar2 = sVar5 + 1; + sVar5 = sVar2; + } while (piVar1 != NULL); + } + uVar6 = 0; + iVar3 = dword_800243E8; + if (dword_800243E8 != 0) { + do { + iVar3 = *(int *)(iVar3 + 4); + uVar6 = uVar6 + 1 & 0xffff; + } while (iVar3 != 0); + } + *param_1 = sVar2; + *param_2 = sVar4; + return uVar6; } -int ** music_related_23(undefined8 param_1,int *param_2) +ALLink * music_related_23(void *buffer,ALLink_s *param_2) { - byte bVar1; - int iVar2; - int iVar3; - ALLink *a; - OSIntMask OVar4; - char cVar5; - ALLink_s *pAVar6; - - a = dword_800243EC; - iVar2 = param_2[1]; - if (dword_800243EC != NULL) { - OVar4 = osSetIntMask(1); - dword_800243EC = (ALLink *)a->next; - alUnlink(a); - if (dword_800243E4 == NULL) { - a->prev = NULL; - a->next = NULL; - dword_800243E8 = a; + byte bVar1; + ALLink_s *pAVar2; + ALLink *a; + OSIntMask OVar3; + char cVar4; + ALLink_s *pAVar5; + + a = dword_800243EC; + pAVar5 = param_2->prev; + if (dword_800243EC != NULL) { + OVar3 = osSetIntMask(1); + dword_800243EC = (ALLink *)a->next; + alUnlink(a); + if (dword_800243E4 == NULL) { + a->prev = NULL; + a->next = NULL; + dword_800243E8 = a; + } + else { + *(ALLink **)&a->next = dword_800243E4; + a->prev = NULL; + *(ALLink **)&dword_800243E4->prev = a; + } + dword_800243E4 = a; + osSetIntMask(OVar3); + pAVar2 = param_2->next->prev; + *(undefined *)((int)&a[7].prev + 3) = 5; + cVar4 = (pAVar2 == (ALLink_s *)0xffffffff) + '@'; + *(char *)((int)&a[6].prev + 2) = cVar4; + a[7].next = (ALLink_s *)0x2; + a[1].next = param_2; + a[5].prev = (ALLink_s *)0x3f800000; + bVar1 = *(byte *)((int)&pAVar5->next + 3); + a[6].next = NULL; + *(byte *)((int)&a[7].prev + 2) = bVar1 & 0xf0; + if ((bVar1 & 0x20) == 0) { + pAVar5 = (ALLink_s *) + alCents2Ratio(((uint)*(byte *)&pAVar5->prev * 0x18 + + (uint)*(byte *)&pAVar5->prev) * 4 + + (int)*(char *)((int)&pAVar5->prev + 1) + -6000); + a[5].next = pAVar5; + } + else { + pAVar5 = (ALLink_s *) + alCents2Ratio(((uint)*(byte *)&pAVar5->prev * 0x18 + + (uint)*(byte *)&pAVar5->prev) * 4 + -6000); + a[5].next = pAVar5; + } + if (cVar4 != '@') { + *(byte *)((int)&a[7].prev + 2) = *(byte *)((int)&a[7].prev + 2) | 2; + } + *(undefined *)((int)&a[7].prev + 1) = 0; + *(undefined *)&a[7].prev = 0x40; + *(undefined2 *)&a[6].prev = 0x7fff; } - else { - *(ALLink **)&a->next = dword_800243E4; - a->prev = NULL; - *(ALLink **)&dword_800243E4->prev = a; - } - dword_800243E4 = a; - osSetIntMask(OVar4); - iVar3 = *(int *)(*param_2 + 4); - *(undefined *)((int)&a[7].prev + 3) = 5; - cVar5 = (iVar3 == -1) + '@'; - *(char *)((int)&a[6].prev + 2) = cVar5; - a[7].next = (ALLink_s *)0x2; - *(int **)&a[1].next = param_2; - a[5].prev = (ALLink_s *)0x3f800000; - bVar1 = *(byte *)(iVar2 + 3); - a[6].next = NULL; - *(byte *)((int)&a[7].prev + 2) = bVar1 & 0xf0; - if ((bVar1 & 0x20) == 0) { - pAVar6 = (ALLink_s *) - alCents2Ratio(((uint)*(byte *)(iVar2 + 4) * 0x18 + (uint)*(byte *)(iVar2 + 4)) * 4 + - (int)*(char *)(iVar2 + 5) + -6000); - a[5].next = pAVar6; - } - else { - pAVar6 = (ALLink_s *) - alCents2Ratio(((uint)*(byte *)(iVar2 + 4) * 0x18 + (uint)*(byte *)(iVar2 + 4)) * 4 + - -6000); - a[5].next = pAVar6; - } - if (cVar5 != '@') { - *(byte *)((int)&a[7].prev + 2) = *(byte *)((int)&a[7].prev + 2) | 2; - } - *(undefined *)((int)&a[7].prev + 1) = 0; - *(undefined *)&a[7].prev = 0x40; - *(undefined2 *)&a[6].prev = 0x7fff; - } - return (int **)a; + return a; } @@ -5497,43 +5519,43 @@ int ** music_related_23(undefined8 param_1,int *param_2) void music_related_24(int **param_1) { - int **ppiVar1; - - if (param_1 == dword_800243E4) { - dword_800243E4 = (int **)*param_1; - } - if (param_1 == dword_800243E8) { - dword_800243E8 = (int **)param_1[1]; - } - alUnlink((ALLink *)param_1); - if (dword_800243EC == NULL) { - param_1[1] = NULL; - *param_1 = NULL; - } - else { - *(int ***)param_1 = dword_800243EC; - param_1[1] = NULL; - *(int ***)((int *)dword_800243EC + 1) = param_1; - } - if ((*(byte *)((int)param_1 + 0x3e) & 4) == 0) { - ppiVar1 = (int **)param_1[0xc]; - } - else { - dword_800243F4 += -1; - ppiVar1 = (int **)param_1[0xc]; - } - dword_800243EC = param_1; - *(undefined *)((int)param_1 + 0x3f) = 0; - if (ppiVar1 != NULL) { - if (param_1 == (int **)*ppiVar1) { - *ppiVar1 = NULL; - param_1[0xc] = NULL; + int **ppiVar1; + + if (param_1 == dword_800243E4) { + dword_800243E4 = (int **)*param_1; + } + if (param_1 == dword_800243E8) { + dword_800243E8 = (int **)param_1[1]; + } + alUnlink((ALLink *)param_1); + if (dword_800243EC == NULL) { + param_1[1] = NULL; + *param_1 = NULL; } else { - param_1[0xc] = NULL; + *(int ***)param_1 = dword_800243EC; + param_1[1] = NULL; + *(int ***)((int *)dword_800243EC + 1) = param_1; } - } - return; + if ((*(byte *)((int)param_1 + 0x3e) & 4) == 0) { + ppiVar1 = (int **)param_1[0xc]; + } + else { + dword_800243F4 += -1; + ppiVar1 = (int **)param_1[0xc]; + } + dword_800243EC = param_1; + *(undefined *)((int)param_1 + 0x3f) = 0; + if (ppiVar1 != NULL) { + if (param_1 == (int **)*ppiVar1) { + *ppiVar1 = NULL; + param_1[0xc] = NULL; + } + else { + param_1[0xc] = NULL; + } + } + return; } @@ -5541,126 +5563,118 @@ void music_related_24(int **param_1) void music_related_25(int param_1,undefined param_2) { - if (param_1 != 0) { - *(undefined *)(param_1 + 0x36) = param_2; - } - return; -} - - - -ulonglong music_related_26(int param_1) - -{ - if (param_1 != 0) { - return (ulonglong)*(byte *)(param_1 + 0x3f); - } - return 0; -} - - - -int ** play_sfx_a1(void *buffer,short entry,sfxdata *data) - -{ - byte bVar1; - int *piVar2; - int **ppiVar3; - int iVar4; - int iVar5; - int iVar6; - int **ppiVar7; - int iVar8; - s16 sStack64; - int **ppiStack60; - int iStack56; - void *pvStack52; - s16 sStack48; - int **ppiStack44; - int iStack28; - int iStack24; - short sStack18; - - iVar4 = (int)entry; - ppiVar7 = NULL; - sStack18 = 0; - iVar6 = 0; - if (bootswitch_sound == '\0') { - if (iVar4 == 0) { - ppiVar7 = NULL; + if (param_1 != 0) { + *(undefined *)(param_1 + 0x36) = param_2; } - else { - iVar8 = *(int *)((int)buffer + 0xc); - iVar5 = iStack28; - while( true ) { - piVar2 = *(int **)(iVar8 + iVar4 * 4 + 0xc); - ppiVar3 = music_related_23((longlong)(int)buffer,piVar2); - if (ppiVar3 != NULL) { - *(int ***)(off_800243F0 + 0x3c) = ppiVar3; - sStack48 = 1; - bVar1 = *(byte *)(piVar2[1] + 1); - iVar5 = ((uint)bVar1 * 0x208 + (uint)bVar1) * 0x40 + (uint)bVar1 * -0xb; - if ((*(byte *)((int)ppiVar3 + 0x3e) & 0x10) == 0) { - ppiStack44 = ppiVar3; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack48,iVar5 + 1); - ppiVar7 = ppiVar3; - } - else { - *(byte *)((int)ppiVar3 + 0x3e) = *(byte *)((int)ppiVar3 + 0x3e) & 0xef; - ppiStack44 = ppiVar3; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack48,iVar6 + 1); - iStack24 = iVar5 + 1; - sStack18 = (short)iVar4; - ppiVar7 = ppiVar3; - } - } - iVar6 += iVar5; - iVar4 = (int)(((uint)*(byte *)piVar2[1] + ((uint)((byte *)piVar2[1])[2] & 0xc0) * 4) * - 0x10000) >> 0x10; - iVar8 = iStack28; - if ((iVar4 == 0) || (iVar8 = iVar5, ppiVar3 == NULL)) break; + return; +} + + + +ulonglong sfxGetArg0Unk3F(ALLink_s *param_1) + +{ + if (param_1 != NULL) { + return (ulonglong)*(byte *)((int)¶m_1[7].prev + 3); + } + return 0; +} + + + +void play_sfx_a1(void *buffer,short entry,ALSndPlayer *data) + +{ + byte bVar1; + ALLink_s *pAVar2; + ALPlayer_s *pAVar3; + int iVar4; + int iVar5; + int iVar6; + ALPlayer_s *pAVar7; + int iVar8; + s16 sStack64; + ALPlayer_s *pAStack60; + int iStack56; + void *pvStack52; + s16 sStack48; + ALPlayer_s *pAStack44; + int iStack28; + int iStack24; + short sStack18; + + iVar4 = (int)entry; + pAVar7 = NULL; + sStack18 = 0; + iVar6 = 0; + if ((bootswitch_sound == '\0') && (iVar4 != 0)) { iVar8 = *(int *)((int)buffer + 0xc); - } - iStack28 = iVar8; - if (ppiVar7 != NULL) { - bVar1 = *(byte *)((int)ppiVar7 + 0x3e); - *(byte *)((int)ppiVar7 + 0x3e) = bVar1 | 1; - *(sfxdata **)(ppiVar7 + 0xc) = data; - if (sStack18 != 0) { - *(byte *)((int)ppiVar7 + 0x3e) = bVar1 | 0x11; - sStack64 = 0x200; - iStack56 = (int)sStack18; - ppiStack60 = ppiVar7; - pvStack52 = buffer; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack64,iStack24); + iVar5 = iStack28; + while( true ) { + pAVar2 = *(ALLink_s **)(iVar8 + iVar4 * 4 + 0xc); + pAVar3 = (ALPlayer_s *)music_related_23(buffer,pAVar2); + if (pAVar3 != NULL) { + *(ALPlayer_s **)&off_800243F0->target = pAVar3; + sStack48 = 1; + bVar1 = *(byte *)((int)&pAVar2->prev->next + 1); + iVar5 = ((uint)bVar1 * 0x208 + (uint)bVar1) * 0x40 + (uint)bVar1 * -0xb; + pAVar7 = pAVar3; + pAStack44 = pAVar3; + if ((*(byte *)((int)&pAVar3[2].samplesLeft + 6) & 0x10) == 0) { + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack48,iVar5 + 1); + } + else { + *(byte *)((int)&pAVar3[2].samplesLeft + 6) = + *(byte *)((int)&pAVar3[2].samplesLeft + 6) & 0xef; + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack48,iVar6 + 1); + iStack24 = iVar5 + 1; + sStack18 = (short)iVar4; + } + } + iVar6 += iVar5; + iVar4 = (int)(((uint)*(byte *)&pAVar2->prev->next + + ((uint)*(byte *)((int)&pAVar2->prev->next + 2) & 0xc0) * 4) * 0x10000) >> + 0x10; + iVar8 = iStack28; + if ((iVar4 == 0) || (iVar8 = iVar5, pAVar3 == NULL)) break; + iVar8 = *(int *)((int)buffer + 0xc); + } + iStack28 = iVar8; + if (pAVar7 != NULL) { + bVar1 = *(byte *)((int)&pAVar7[2].samplesLeft + 6); + *(byte *)((int)&pAVar7[2].samplesLeft + 6) = bVar1 | 1; + *(ALSndPlayer **)&pAVar7[2].handler = data; + if (sStack18 != 0) { + *(byte *)((int)&pAVar7[2].samplesLeft + 6) = bVar1 | 0x11; + sStack64 = 0x200; + iStack56 = (int)sStack18; + pAStack60 = pAVar7; + pvStack52 = buffer; + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack64,iStack24); + } + } + if (data != NULL) { + (data->node).next = pAVar7; } - } - if (data != NULL) { - *(int ***)&data->target_volume = ppiVar7; - } } - } - else { - ppiVar7 = NULL; - } - return ppiVar7; + return; } -void music_related_28(int param_1) +void sfxDeactivate(int param_1) { - s16 sStack16; - int iStack12; - - sStack16 = 0x400; - if (param_1 != 0) { - *(byte *)(param_1 + 0x3e) = *(byte *)(param_1 + 0x3e) & 0xef; - iStack12 = param_1; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack16,0); - } - return; + s16 sStack16; + int iStack12; + + sStack16 = 0x400; + if (param_1 != 0) { + *(byte *)(param_1 + 0x3e) = *(byte *)(param_1 + 0x3e) & 0xef; + iStack12 = param_1; + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack16,0); + } + return; } @@ -5668,25 +5682,24 @@ void music_related_28(int param_1) void music_related_29(byte param_1) { - undefined4 *puVar1; - s16 sStack20; - undefined4 *puStack16; - OSIntMask OStack4; - - OStack4 = osSetIntMask(1); - puVar1 = dword_800243E4; - while (puVar1 != NULL) { - sStack20 = 0x400; - puStack16 = puVar1; - if (param_1 == (*(byte *)((int)puVar1 + 0x3e) & param_1)) { - *(byte *)((int)puVar1 + 0x3e) = *(byte *)((int)puVar1 + 0x3e) & 0xef; - puStack16 = puVar1; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack20,0); + undefined4 *puVar1; + s16 sStack20; + undefined4 *puStack16; + OSIntMask OStack4; + + OStack4 = osSetIntMask(1); + puVar1 = dword_800243E4; + while (puVar1 != NULL) { + sStack20 = 0x400; + puStack16 = puVar1; + if (param_1 == (*(byte *)((int)puVar1 + 0x3e) & param_1)) { + *(byte *)((int)puVar1 + 0x3e) = *(byte *)((int)puVar1 + 0x3e) & 0xef; + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack20,0); + } + puVar1 = (undefined4 *)*puVar1; } - puVar1 = (undefined4 *)*puVar1; - } - osSetIntMask(OStack4); - return; + osSetIntMask(OStack4); + return; } @@ -5694,8 +5707,8 @@ void music_related_29(byte param_1) void music_related_30(void) { - music_related_29(1); - return; + music_related_29(1); + return; } @@ -5703,8 +5716,8 @@ void music_related_30(void) void music_related_32(void) { - music_related_29(0x11); - return; + music_related_29(0x11); + return; } @@ -5712,8 +5725,8 @@ void music_related_32(void) void music_related_34(void) { - music_related_29(3); - return; + music_related_29(3); + return; } @@ -5721,28 +5734,28 @@ void music_related_34(void) void music_related_36(longlong param_1,s16 param_2,undefined4 param_3) { - s16 sStack16; - undefined4 uStack12; - undefined4 uStack8; - - uStack12 = (undefined4)param_1; - if (param_1 != 0) { - sStack16 = param_2; - uStack8 = param_3; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack16,0); - } - return; + s16 sStack16; + undefined4 uStack12; + undefined4 uStack8; + + uStack12 = (undefined4)param_1; + if (param_1 != 0) { + sStack16 = param_2; + uStack8 = param_3; + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack16,0); + } + return; } -u32 music_related_37(void) +u32 sfx_c_700091C8(void) { - ulonglong uVar1; - - uVar1 = music_related_40(0); - return (u32)uVar1; + ulonglong uVar1; + + uVar1 = music_related_40(0); + return (u32)uVar1; } @@ -5750,14 +5763,14 @@ u32 music_related_37(void) void music_related_38(ulonglong param_1) { - ulonglong uVar1; - - uVar1 = 0; - do { - music_related_42(uVar1,param_1 & 0xffff); - uVar1 = (longlong)((int)uVar1 + 1) & 0xff; - } while (uVar1 < 7); - return; + ulonglong uVar1; + + uVar1 = 0; + do { + music_related_42(uVar1,param_1 & 0xffff); + uVar1 = (longlong)((int)uVar1 + 1) & 0xff; + } while (uVar1 < 7); + return; } @@ -5765,12 +5778,12 @@ void music_related_38(ulonglong param_1) void music_related_39(f32 param_1) { - u32 uVar1; - - flt_800243FC = param_1; - uVar1 = music_related_37(); - music_related_38((longlong)(int)uVar1 & 0xffff); - return; + u32 uVar1; + + flt_800243FC = param_1; + uVar1 = sfx_c_700091C8(); + music_related_38((longlong)(int)uVar1 & 0xffff); + return; } @@ -5778,7 +5791,7 @@ void music_related_39(f32 param_1) ulonglong music_related_40(uint param_1) { - return (ulonglong)*(ushort *)(DAT_80063ba8 + (param_1 & 0xff) * 2); + return (ulonglong)*(ushort *)(DAT_80063ba8 + (param_1 & 0xff) * 2); } @@ -5786,42 +5799,42 @@ ulonglong music_related_40(uint param_1) void music_related_42(ulonglong param_1,ulonglong param_2) { - int iVar1; - undefined4 *puVar2; - float fVar3; - s16 sStack24; - undefined4 *puStack20; - - puVar2 = dword_800243E4; - iVar1 = (int)(param_1 & 0xff) * 2; - *(undefined2 *)(DAT_80063ba8 + iVar1) = (short)(param_2 & 0xffff); - fVar3 = (float)(int)(param_2 & 0xffff); - if (false) { - fVar3 = fVar3 + 4294967296.00000000; - } - *(undefined2 *)(DAT_80063ba4 + iVar1) = (short)(int)(fVar3 * (float)flt_800243FC); - if (puVar2 != NULL) { - iVar1 = puVar2[2]; - while( true ) { - if (iVar1 == 0) { - puVar2 = (undefined4 *)*puVar2; - } - else { - if ((param_1 & 0xff) == ((ulonglong)*(byte *)(*(int *)(iVar1 + 4) + 2) & 0x3f)) { - sStack24 = 0x800; - puStack20 = puVar2; - alEvtqPostEvent((ALEventQueue *)(off_800243F0 + 0x14),(ALEvent *)&sStack24,0); - puVar2 = (undefined4 *)*puVar2; - } - else { - puVar2 = (undefined4 *)*puVar2; - } - } - if (puVar2 == NULL) break; - iVar1 = puVar2[2]; + int iVar1; + undefined4 *puVar2; + float fVar3; + s16 sStack24; + undefined4 *puStack20; + + puVar2 = dword_800243E4; + iVar1 = (int)(param_1 & 0xff) * 2; + *(undefined2 *)(DAT_80063ba8 + iVar1) = (short)(param_2 & 0xffff); + fVar3 = (float)(int)(param_2 & 0xffff); + if (false) { + fVar3 = fVar3 + 4294967296.00000000; } - } - return; + *(undefined2 *)(DAT_80063ba4 + iVar1) = (short)(int)(fVar3 * (float)flt_800243FC); + if (puVar2 != NULL) { + iVar1 = puVar2[2]; + while( true ) { + if (iVar1 == 0) { + puVar2 = (undefined4 *)*puVar2; + } + else { + if ((param_1 & 0xff) == ((ulonglong)*(byte *)(*(int *)(iVar1 + 4) + 2) & 0x3f)) { + sStack24 = 0x800; + puStack20 = puVar2; + alEvtqPostEvent(&off_800243F0->evtq,(ALEvent *)&sStack24,0); + puVar2 = (undefined4 *)*puVar2; + } + else { + puVar2 = (undefined4 *)*puVar2; + } + } + if (puVar2 == NULL) break; + iVar1 = puVar2[2]; + } + } + return; } @@ -5829,239 +5842,235 @@ void music_related_42(ulonglong param_1,ulonglong param_2) void something_with_memp_c_debug(void) { - get_ptr_debug_notice_list_entry(&memp_c_debug_debug_notice_list_entry,"memp_c_debug"); - return; + get_ptr_debug_notice_list_entry(&memp_c_debug_debug_notice_list_entry,"memp_c_debug"); + return; } -void check_memflag_tokens(int param_1,int param_2) +void mempCheckMemflagTokens(int bstart,int bsize) { - byte *__nptr; - int iVar1; - int local_20; - long local_1c; - undefined4 local_18; - long local_14; - undefined4 local_10; - long local_c; - undefined4 local_8; - undefined4 local_4; - - memory_bank_ptrs.bankend = (void *)(param_1 + param_2); - local_20 = dword_80024414; - local_1c = dword_80024418; - local_14 = dword_80024420; - local_18 = dword_8002441C; - local_10 = dword_80024424; - local_c = dword_80024428; - local_4 = dword_80024430; - local_8 = dword_8002442C; - memory_bank_ptrs.bankstart = (void *)param_1; - __nptr = check_token(1,(byte *)"-mf"); - if (__nptr != NULL) { + byte *__nptr; + int iVar1; + int local_20; + long mfval; + undefined4 local_18; + long mlval; + undefined4 local_10; + long meval; + undefined4 local_8; + undefined4 local_4; + + memory_bank_ptrs[0].bankend = bstart + bsize; + local_20 = sdefaultmvals.dword_80024414; + mfval = sdefaultmvals.mf; + mlval = sdefaultmvals.ml; + local_18 = sdefaultmvals.dword_8002441C; + local_10 = sdefaultmvals.dword_80024424; + meval = sdefaultmvals.me; + local_4 = sdefaultmvals.dword_80024430; + local_8 = sdefaultmvals.dword_8002442C; + memory_bank_ptrs[0].bankstart = bstart; __nptr = check_token(1,(byte *)"-mf"); - local_1c = strtol((char *)__nptr,NULL,0); - } - __nptr = check_token(1,(byte *)"-ml"); - if (__nptr != NULL) { + if (__nptr != NULL) { + __nptr = check_token(1,(byte *)"-mf"); + mfval = strtol((char *)__nptr,NULL,0); + } __nptr = check_token(1,(byte *)"-ml"); - local_14 = strtol((char *)__nptr,NULL,0); - } - __nptr = check_token(1,(byte *)"-me"); - if (__nptr != NULL) { + if (__nptr != NULL) { + __nptr = check_token(1,(byte *)"-ml"); + mlval = strtol((char *)__nptr,NULL,0); + } __nptr = check_token(1,(byte *)"-me"); - local_c = strtol((char *)__nptr,NULL,0); - } - if (local_c == 0) { - local_1c = 0; - iVar1 = 0x128; - if (j_text_trigger != 0) { - iVar1 = 0x134; + if (__nptr != NULL) { + __nptr = check_token(1,(byte *)"-me"); + meval = strtol((char *)__nptr,NULL,0); } - local_c = iVar1 * 0x400; - local_14 = param_2 + iVar1 * -0x400; - } - memp_related_0(&local_20); - return; + if (meval == 0) { + mfval = 0; + iVar1 = 0x128; + if (j_text_trigger != 0) { + iVar1 = 0x134; + } + meval = iVar1 * 0x400; + mlval = bsize + iVar1 * -0x400; + } + mempSetBankStarts(&local_20); + return; } -void memp_related_0(int *param_1) +void mempSetBankStarts(int *banks) { - uint uVar1; - uint uVar3; - longlong lVar2; - int iVar4; - longlong right_l; - uint uVar5; - uint *puVar6; - uint *puVar7; - uint uStack32; - int iStack28; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - uint uStack8; - uint uStack4; - - uVar1 = dword_8002444C; - uVar3 = dword_80024434; - uStack32 = dword_80024434; - iStack28 = dword_80024438; - puVar6 = &uStack32; - iStack24 = dword_8002443C; - iStack20 = dword_80024440; - iStack16 = dword_80024444; - iStack12 = dword_80024448; - uStack8 = dword_8002444C; - iVar4 = *param_1; - uVar5 = param_1[1]; - while( true ) { - (&uStack32)[iVar4] = uVar5; - iVar4 = param_1[2]; - if (iVar4 == 0) break; - uVar5 = param_1[3]; - param_1 = param_1 + 2; - } - do { - puVar7 = puVar6 + 1; - puVar6 = puVar6 + 1; - uVar3 = *puVar7 + uVar3; - *puVar6 = uVar3; - } while (puVar6 < &uStack8); - right_l._4_4_ = (void *)((int)memory_bank_ptrs.bankend - (int)memory_bank_ptrs.bankstart); - right_l = (longlong)(int)right_l._4_4_; - puVar6 = &uStack32; - do { - lVar2 = __ll_mul((int)*puVar6 >> 0x1f,*puVar6,(int)right_l._4_4_ >> 0x1f,right_l._4_4_); - __ll_div((int)lVar2,(int)right_l,(int)uVar1 >> 0x1f,uVar1); - puVar7 = puVar6 + 1; - *puVar6 = (uint)right_l; - puVar6 = puVar7; - } while (puVar7 < &uStack4); - puVar6 = &uStack32; - do { - puVar7 = puVar6 + 1; - *puVar6 = (*puVar6 | 0xf) ^ 0xf; - puVar6 = puVar7; - } while (puVar7 < &uStack4); - memorybank1.bankstart = (void *)(uStack32 + (int)memory_bank_ptrs.bankstart); - memorybank1.nextentry = NULL; - memorybank1.bankend = (void *)(iStack28 + (int)memory_bank_ptrs.bankstart); - memorybank2.bankstart = (void *)(iStack28 + (int)memory_bank_ptrs.bankstart); - memorybank2.nextentry = NULL; - memorybank2.bankend = (void *)(iStack24 + (int)memory_bank_ptrs.bankstart); - memorybank3.bankstart = (void *)(iStack24 + (int)memory_bank_ptrs.bankstart); - memorybank3.nextentry = NULL; - memorybank3.bankend = (void *)(iStack20 + (int)memory_bank_ptrs.bankstart); - memorybank4_room.bankstart = (void *)(iStack20 + (int)memory_bank_ptrs.bankstart); - memorybank4_room.nextentry = NULL; - memorybank4_room.bankend = (void *)(iStack16 + (int)memory_bank_ptrs.bankstart); - memorybank5_font.bankstart = (void *)(iStack16 + (int)memory_bank_ptrs.bankstart); - memorybank5_font.nextentry = NULL; - memorybank5_font.bankend = (void *)(iStack12 + (int)memory_bank_ptrs.bankstart); - memorybank6_text.bankstart = (void *)(iStack12 + (int)memory_bank_ptrs.bankstart); - memorybank6_text.nextentry = NULL; - memorybank6_text.bankend = (void *)(uStack8 + (int)memory_bank_ptrs.bankstart); - return; + int *piVar1; + int right_l; + longlong lVar2; + longlong lVar3; + int iVar4; + int iVar5; + s_memstarts *psVar6; + s_memstarts *psVar7; + s_memstarts bankstarts; + undefined auStack4 [4]; + + bankstarts.bank1start = sdefaultmemstarts.bank1start; + bankstarts.bank2start = sdefaultmemstarts.bank2start; + psVar6 = &bankstarts; + bankstarts.bank3start = sdefaultmemstarts.bank3start; + bankstarts.bank4start = sdefaultmemstarts.bank4start; + bankstarts.bank5start = sdefaultmemstarts.bank5start; + bankstarts.bank6start = sdefaultmemstarts.bank6start; + bankstarts.bank7start = sdefaultmemstarts.bank7start; + right_l = *banks; + iVar4 = banks[1]; + while( true ) { + (&bankstarts.bank1start)[right_l] = iVar4; + right_l = banks[2]; + if (right_l == 0) break; + iVar4 = banks[3]; + banks = banks + 2; + } + right_l = bankstarts.bank1start; + do { + piVar1 = &psVar6->bank2start; + psVar6 = (s_memstarts *)&psVar6->bank2start; + right_l = *piVar1 + right_l; + psVar6->bank1start = right_l; + iVar4 = bankstarts.bank7start; + } while (psVar6 < (s_memstarts *)&bankstarts.bank7start); + right_l = memory_bank_ptrs[0].bankend - memory_bank_ptrs[0].bankstart; + lVar3 = (longlong)right_l; + iVar5 = bankstarts.bank7start >> 0x1f; + psVar6 = &bankstarts; + do { + lVar2 = __ll_mul((int)psVar6->bank1start >> 0x1f,psVar6->bank1start,right_l >> 0x1f,right_l) + ; + __ll_div((int)lVar2,(int)lVar3,iVar5,iVar4); + psVar7 = (s_memstarts *)&psVar6->bank2start; + psVar6->bank1start = (int)lVar3; + psVar6 = psVar7; + } while (psVar7 < (s_memstarts *)auStack4); + psVar6 = &bankstarts; + do { + psVar7 = (s_memstarts *)&psVar6->bank2start; + psVar6->bank1start = (psVar6->bank1start | 0xf) ^ 0xf; + psVar6 = psVar7; + } while (psVar7 < (s_memstarts *)auStack4); + memory_bank_ptrs[1].bankstart = bankstarts.bank1start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[1].nextentry = 0; + memory_bank_ptrs[1].bankend = bankstarts.bank2start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[2].bankstart = bankstarts.bank2start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[2].nextentry = 0; + memory_bank_ptrs[2].bankend = bankstarts.bank3start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[3].bankstart = bankstarts.bank3start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[3].nextentry = 0; + memory_bank_ptrs[3].bankend = bankstarts.bank4start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[4].bankstart = bankstarts.bank4start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[4].nextentry = 0; + memory_bank_ptrs[4].bankend = bankstarts.bank5start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[5].bankstart = bankstarts.bank5start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[5].nextentry = 0; + memory_bank_ptrs[5].bankend = bankstarts.bank6start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[6].bankstart = bankstarts.bank6start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[6].nextentry = 0; + memory_bank_ptrs[6].bankend = bankstarts.bank7start + memory_bank_ptrs[0].bankstart; + return; } -uint allocate_bytes_in_bank(int param_1,uint param_2) +uint mempAllocBytesInBank(u32 bytes,u8 bank) { - uint uVar1; - uint uVar2; - int iVar3; - int iVar4; - - iVar4 = (param_2 & 0xff) << 4; - while( true ) { - iVar3 = tied_to_mem_management; - uVar1 = *(uint *)((int)&memory_bank_ptrs.nextentry + iVar4); - if (uVar1 == 0) { - do { + uint next; + uint end; + int domemalloc; + int bankmask; + + bankmask = ((int)(char)bank & 0xffU) << 4; + while( true ) { + domemalloc = needmemallocation; + next = *(uint *)((int)&memory_bank_ptrs[0].nextentry + bankmask); + if (next == 0) { + do { // WARNING: Do nothing block with infinite loop - } while( true ); - } - uVar2 = *(uint *)((int)&memory_bank_ptrs.bankend + iVar4); - if (uVar2 < uVar1) { - nulled_list_all8_mem_alloc_banks_sizes(); - do { + } while( true ); + } + end = *(uint *)((int)&memory_bank_ptrs[0].bankend + bankmask); + if (end < next) { + nulled_list_all8_mem_alloc_banks_sizes(); + do { // WARNING: Do nothing block with infinite loop - } while( true ); + } while( true ); + } + if (next + bytes <= end) { + *(int *)((int)&memory_bank_ptrs[0].nextentry + bankmask) = next + bytes; + *(uint *)((int)&memory_bank_ptrs[0].data2 + bankmask) = next; + return next; + } + if ((uint)memory_bank_ptrs[6].bankend < memory_bank_ptrs[6].nextentry + bytes) break; + needmemallocation = 1; + if (domemalloc == 0) { + bankmask = 0x60; + } + else { + bankmask = 0x60; + } } - if (uVar1 + param_1 <= uVar2) { - *(int *)((int)&memory_bank_ptrs.nextentry + iVar4) = uVar1 + param_1; - *(uint *)((int)&memory_bank_ptrs.data2 + iVar4) = uVar1; - return uVar1; - } - if (memorybank6_text.bankend < (void *)((int)memorybank6_text.nextentry + param_1)) break; - tied_to_mem_management = 1; - if (iVar3 == 0) { - iVar4 = 0x60; - } - else { - iVar4 = 0x60; - } - } - nulled_list_all8_mem_alloc_banks_sizes(); - do { - // WARNING: Do nothing block with infinite loop - } while( true ); -} - - - -undefined8 memp_related_1(void *ptrdata,int size,uint bank) - -{ - void *pvVar1; - undefined8 uVar2; - - bank &= 0xff; - if ((tied_to_mem_management != 0) && (ptrdata == memorybank6_text.data2)) { - bank = 6; - } - pvVar1 = (&memory_bank_ptrs)[bank].nextentry; - if (pvVar1 == NULL) { + nulled_list_all8_mem_alloc_banks_sizes(); do { // WARNING: Do nothing block with infinite loop } while( true ); - } - if (ptrdata == (&memory_bank_ptrs)[bank].data2) { - size -= (int)((int)pvVar1 - (int)(&memory_bank_ptrs)[bank].data2); - if (size < 1) { - (&memory_bank_ptrs)[bank].nextentry = (void *)((int)pvVar1 + size); - uVar2 = 1; +} + + + +u32 memAddEntryOfSizeToBank(u8 *ptrdata,int size,uint bank) + +{ + uint entry; + u32 retval; + + bank &= 0xff; + if ((needmemallocation != 0) && (ptrdata == (u8 *)memory_bank_ptrs[6].data2)) { + bank = 6; + } + entry = memory_bank_ptrs[bank].nextentry; + if (entry == 0) { + do { + // WARNING: Do nothing block with infinite loop + } while( true ); + } + if (ptrdata == (u8 *)memory_bank_ptrs[bank].data2) { + size -= entry - (int)memory_bank_ptrs[bank].data2; + if (size < 1) { + memory_bank_ptrs[bank].nextentry = entry + size; + retval = 1; + } + else { + if ((uint)memory_bank_ptrs[bank].bankend < entry) { + nulled_list_all8_mem_alloc_banks_sizes(); + do { + // WARNING: Do nothing block with infinite loop + } while( true ); + } + if ((uint)memory_bank_ptrs[bank].bankend < entry + size) { + nulled_list_all8_mem_alloc_banks_sizes(); + do { + // WARNING: Do nothing block with infinite loop + } while( true ); + } + memory_bank_ptrs[bank].nextentry = entry + size; + retval = 1; + } } else { - if ((&memory_bank_ptrs)[bank].bankend < pvVar1) { - nulled_list_all8_mem_alloc_banks_sizes(); - do { - // WARNING: Do nothing block with infinite loop - } while( true ); - } - if ((&memory_bank_ptrs)[bank].bankend < (void *)((int)pvVar1 + size)) { - nulled_list_all8_mem_alloc_banks_sizes(); - do { - // WARNING: Do nothing block with infinite loop - } while( true ); - } - (&memory_bank_ptrs)[bank].nextentry = (void *)((int)pvVar1 + size); - uVar2 = 1; + retval = 2; } - } - else { - uVar2 = 2; - } - return uVar2; + return retval; } @@ -6069,283 +6078,287 @@ undefined8 memp_related_1(void *ptrdata,int size,uint bank) void nulled_list_all8_mem_alloc_banks_sizes(void) { - u32 bank; - - bank._0_1_ = 1; - do { - bank._0_1_ += 1; - } while (bank._0_1_ < 7); - return; + u32 bank; + + bank = 1; + do { + bank = bank + 1 & 0xff; + } while (bank < 7); + return; } -int memp_related_3(uint bank) +s32 memGetBankSizeLeft(u8 bank) { - bank &= 0xff; - if (tied_to_mem_management != 0) { - bank = 6; - } - if ((bank == 4) && (memorybank4_room.bankstart == memorybank4_room.bankend)) { - bank = 6; - } - return (int)((int)(&memory_bank_ptrs)[bank].bankend - (int)(&memory_bank_ptrs)[bank].nextentry); + int iVar1; + ulonglong uVar2; + + uVar2 = (longlong)(char)bank & 0xff; + if (needmemallocation != 0) { + uVar2 = 6; + } + iVar1 = (int)uVar2; + if ((uVar2 == 4) && (memory_bank_ptrs[4].bankstart == memory_bank_ptrs[4].bankend)) { + iVar1 = 6; + } + return memory_bank_ptrs[iVar1].bankend - memory_bank_ptrs[iVar1].nextentry; } -uint memp_related_4(uint param_1,u32 param_2) +uint memAllocPackedBytesInBank(uint param_1) { - uint uVar1; - - uVar1 = allocate_bytes_in_bank(param_1 >> 3,param_1 & 7); - return uVar1; + uint uVar1; + + uVar1 = mempAllocBytesInBank(param_1 >> 3,(byte)param_1 & 7); + return uVar1; } -void resetMemBank(u32 bank) +void mempResetBank(u8 bank) { - void *pvVar1; - uint uVar2; - - uVar2 = bank & 0xff; - pvVar1 = (&memory_bank_ptrs)[uVar2].bankstart; - (&memory_bank_ptrs)[uVar2].data2 = NULL; - (&memory_bank_ptrs)[uVar2].nextentry = pvVar1; - return; + s32 sVar1; + uint uVar2; + + uVar2 = (int)(char)bank & 0xff; + sVar1 = memory_bank_ptrs[uVar2].bankstart; + memory_bank_ptrs[uVar2].data2 = NULL; + memory_bank_ptrs[uVar2].nextentry = sVar1; + return; } -void set_bank_nextentry_to_NULL(u32 bank) +void mempNullNextEntryInBank(u8 bank) { - nulled_list_all8_mem_alloc_banks_sizes(); - if ((&memory_bank_ptrs)[bank & 0xff].nextentry != NULL) { - (&memory_bank_ptrs)[bank & 0xff].nextentry = NULL; - } - return; + nulled_list_all8_mem_alloc_banks_sizes(); + if (memory_bank_ptrs[bank].nextentry != 0) { + memory_bank_ptrs[bank].nextentry = 0; + } + return; } -void swap_entries(undefined4 *param_1,undefined4 *param_2) +void memaSwap(u8 *a,u8 *b) { - void *tempstart; - void *tempend; - - tempstart = (void *)*param_1; - tempend = (void *)param_1[1]; - *param_1 = *param_2; - param_1[1] = param_2[1]; - *(void **)param_2 = tempstart; - *(void **)(param_2 + 1) = tempend; - return; + void *tempstart; + void *tempend; + + tempstart = *(void **)a; + tempend = *(void **)(a + 4); + *(undefined4 *)a = *(undefined4 *)b; + *(undefined4 *)(a + 4) = *(undefined4 *)(b + 4); + *(void **)b = tempstart; + *(void **)(b + 4) = tempend; + return; } -void merge_alloc_entries(int param_1,undefined4 *param_2) +void memaMerge(int param_1,undefined4 *param_2) { - *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + param_2[1]; - *param_2 = 0; - param_2[1] = 0; - return; + *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + param_2[1]; + *param_2 = 0; + param_2[1] = 0; + return; } -undefined8 sort_merge_entries_in_alloc_table(int param_1) +s32 memaSortMergeEntries(s_mem_alloc_table *param_1) { - void *pvVar1; - void **ppvVar2; - void **ppvVar3; - void **ppvVar4; - void **ppvVar5; - void *b_bStart; - undefined8 uVar6; - void *a_bStart; - void *b_bNext; - - ppvVar2 = (void **)(param_1 + 0x10); - uVar6 = 0; - b_bStart = NULL; - if (ppvVar2 <= (void **)(param_1 + 0xfe8)) { - pvVar1 = *(void **)(param_1 + 0x14); - ppvVar4 = (void **)(param_1 + 8); + s32 sVar1; + s_mem_alloc_entry *a; + s_mem_alloc_entry *psVar2; + s_mem_alloc_entry *b; + s_mem_alloc_entry *psVar3; + void *b_bStart; + s32 sVar4; + void *a_bStart; + void *b_bNext; + + a = param_1->entries + 2; + sVar4 = 0; + b_bStart = NULL; + if (a <= param_1->entries + 0x1fd) { + sVar1 = param_1->entries[2].size; + b = param_1->entries + 1; + while( true ) { + psVar3 = b; + psVar2 = a; + if (sVar1 != 0) { + a_bStart = (void *)a->addr; + if (a_bStart < b_bStart) { + memaSwap((u8 *)a,(u8 *)b); + a_bStart = (void *)a->addr; + b_bNext = (void *)b->size; + } + else { + b_bNext = (void *)b->size; + } + b_bNext = (void *)((int)b_bNext + (int)b_bStart); + b_bStart = a_bStart; + psVar3 = a; + if (a_bStart == b_bNext) { + sVar4 = 1; + memaMerge((int)b,(undefined4 *)a); + b_bStart = (void *)b->addr; + psVar3 = b; + psVar2 = b; + } + } + a = psVar2 + 1; + if (param_1->entries + 0x1fd < a) break; + sVar1 = psVar2[1].size; + b = psVar3; + } + } + return sVar4; +} + + + +void memaSortMergeAllEntries(void) + +{ + int iVar1; + + iVar1 = memaSortMergeEntries(&ptr_table_allocated_mem_blocks); + while (iVar1 != 0) { + iVar1 = memaSortMergeEntries(&ptr_table_allocated_mem_blocks); + } + return; +} + + + +s_mem_alloc_entry * memaFindOpening(s_mem_alloc_table *param_1) + +{ + uint entrySize; + s_mem_alloc_entry *pAStart; + s_mem_alloc_entry *a; + int iVar1; + uint invalidSize; + s_mem_alloc_entry *pStart; + s_mem_alloc_entry *pEnd; + int count; + + pStart = param_1->entries + 2; + pEnd = param_1->entries + 0x1fd; + count = 0; + pAStart = pStart; while( true ) { - ppvVar5 = ppvVar4; - ppvVar3 = ppvVar2; - if (pvVar1 != NULL) { - a_bStart = *ppvVar2; - if (a_bStart < b_bStart) { - swap_entries(ppvVar2,ppvVar4); - a_bStart = *ppvVar2; - b_bNext = ppvVar4[1]; + while (a = pAStart, pEnd < a) { + count += 1; + pAStart = pStart; + if (0x1fb < count) { + if (pEnd < pStart) { + return pStart; + } + invalidSize = 0xffffffff; + entrySize = param_1->entries[2].size; + while( true ) { + a = pStart; + if (invalidSize <= entrySize) { + entrySize = invalidSize; + a = pAStart; + } + if (pEnd < pStart + 1) break; + invalidSize = entrySize; + entrySize = pStart[1].size; + pStart = pStart + 1; + pAStart = a; + } + return a; + } + } + iVar1 = a->size; + if (iVar1 == 0) break; + entrySize = a[1].addr; + if (entrySize < (uint)a->addr) { + memaSwap((u8 *)a,(u8 *)(a + 1)); + iVar1 = a->size; + entrySize = a[1].addr; + invalidSize = a->addr + iVar1; } else { - b_bNext = ppvVar4[1]; + invalidSize = a->addr + iVar1; } - b_bNext = (void *)((int)b_bNext + (int)b_bStart); - b_bStart = a_bStart; - ppvVar5 = ppvVar2; - ppvVar3 = ppvVar2; - if (a_bStart == b_bNext) { - uVar6 = 1; - merge_alloc_entries((int)ppvVar4,ppvVar2); - b_bStart = *ppvVar4; - ppvVar5 = ppvVar4; - ppvVar3 = ppvVar4; + pAStart = a + 1; + if (entrySize == invalidSize) { + count = a[1].size; + a[1].addr = 0; + a[1].size = 0; + a->size = iVar1 + count; + return a + 1; } - } - ppvVar2 = ppvVar3 + 2; - if ((void **)(param_1 + 0xfe8) < ppvVar2) break; - pvVar1 = ppvVar3[3]; - ppvVar4 = ppvVar5; } - } - return uVar6; + return a; } -void memp_related_7(void) +void memaAllocRoomBuffer(u32 addr,u32 size) { - longlong lVar1; - - lVar1 = sort_merge_entries_in_alloc_table((int)&ptr_table_allocated_mem_blocks); - while (lVar1 != 0) { - lVar1 = sort_merge_entries_in_alloc_table((int)&ptr_table_allocated_mem_blocks); - } - return; -} - - - -uint * mem_related(int param_1) - -{ - uint uVar1; - uint *puVar2; - uint *puVar3; - uint uVar4; - uint uVar5; - uint *puVar6; - uint *puVar7; - int iVar8; - - puVar6 = (uint *)(param_1 + 0x10); - puVar7 = (uint *)(param_1 + 0xfe8); - iVar8 = 0; - puVar2 = puVar6; - while( true ) { - while (puVar3 = puVar2, puVar7 < puVar3) { - iVar8 += 1; - puVar2 = puVar6; - if (0x1fb < iVar8) { - if (puVar7 < puVar6) { - return puVar6; - } - uVar1 = 0xffffffff; - uVar4 = *(uint *)(param_1 + 0x14); - puVar2 = puVar6; - while( true ) { - puVar3 = puVar6; - if (uVar1 <= uVar4) { - uVar4 = uVar1; - puVar3 = puVar2; - } - if (puVar7 < puVar6 + 2) break; - uVar1 = uVar4; - uVar4 = puVar6[3]; - puVar6 = puVar6 + 2; - puVar2 = puVar3; - } - return puVar3; - } + int iVar1; + int iVar2; + s_mem_alloc_entry *psVar3; + s_mem_alloc_entry *psVar4; + s_mem_alloc_entry *psVar5; + s32 sVar6; + int iVar7; + + iVar7 = (addr - ptr_model_room_buf_secondary) * 0x1fc; + iVar2 = iVar7 / size_modelroom_buf; + iVar1 = ptr_table_allocated_mem_blocks.entries[iVar2 + 2].size; + psVar5 = ptr_table_allocated_mem_blocks.entries + iVar2 + 2; + if (size_modelroom_buf == 0) { + trap(0x1c00); } - uVar4 = puVar3[1]; - if (uVar4 == 0) break; - uVar1 = puVar3[2]; - if (uVar1 < *puVar3) { - swap_entries(puVar3,puVar3 + 2); - uVar4 = puVar3[1]; - uVar1 = puVar3[2]; - uVar5 = *puVar3 + uVar4; + if ((size_modelroom_buf == -1) && (iVar7 == -0x80000000)) { + trap(0x1800); + } + if (iVar1 == 0) { + sVar6 = psVar5->addr; + psVar3 = psVar5; } else { - uVar5 = *puVar3 + uVar4; + sVar6 = ptr_table_allocated_mem_blocks.entries[iVar2 + 3].size; + psVar4 = psVar5; + while (psVar3 = psVar4 + 1, sVar6 != 0) { + sVar6 = psVar4[2].size; + psVar4 = psVar3; + } + sVar6 = psVar3->addr; } - puVar2 = puVar3 + 2; - if (uVar1 == uVar5) { - uVar1 = puVar3[3]; - puVar3[2] = 0; - puVar3[3] = 0; - puVar3[1] = uVar4 + uVar1; - return puVar3 + 2; + if (sVar6 == -1) { + psVar3 = psVar5; + if (iVar1 != 0) { + sVar6 = ptr_table_allocated_mem_blocks.entries[iVar2 + 1].size; + while (psVar3 = psVar5 + -1, sVar6 != 0) { + sVar6 = psVar5[-2].size; + psVar5 = psVar3; + } + } + if (psVar3->addr == 0) { + psVar3 = memaFindOpening(&ptr_table_allocated_mem_blocks); + } } - } - return puVar3; -} - - - -void mem_related_model_room_buffers(uint param_1,uint param_2) - -{ - int iVar1; - uint *puVar2; - uint *puVar3; - uint *puVar4; - uint uVar5; - int iVar6; - - iVar6 = (param_1 - memorybank7_roomsec) * 0x1fc; - iVar1 = iVar6 / size_modelroom_buf; - puVar4 = &ptr_first_entry_in_alloc_table + iVar1 * 2; - if (size_modelroom_buf == 0) { - trap(0x1c00); - } - if ((size_modelroom_buf == -1) && (iVar6 == -0x80000000)) { - trap(0x1800); - } - if ((&DAT_80063c3c)[iVar1 * 2] == 0) { - uVar5 = *puVar4; - puVar2 = puVar4; - } - else { - uVar5 = (&DAT_80063c44)[iVar1 * 2]; - puVar3 = puVar4; - while (puVar2 = puVar3 + 2, uVar5 != 0) { - uVar5 = puVar3[5]; - puVar3 = puVar2; - } - uVar5 = *puVar2; - } - if (uVar5 == 0xffffffff) { - puVar2 = puVar4; - if ((&DAT_80063c3c)[iVar1 * 2] != 0) { - uVar5 = (&DAT_80063c34)[iVar1 * 2]; - while (puVar2 = puVar4 + -2, uVar5 != 0) { - uVar5 = puVar4[-3]; - puVar4 = puVar2; - } - } - if (*puVar2 == 0) { - puVar2 = mem_related((int)&ptr_table_allocated_mem_blocks); - } - } - *puVar2 = param_1; - puVar2[1] = param_2; - return; + psVar3->addr = addr; + psVar3->size = size; + return; } @@ -6353,37 +6366,38 @@ void mem_related_model_room_buffers(uint param_1,uint param_2) void something_with_mema_c_debug(void) { - get_ptr_debug_notice_list_entry(&mema_c_debug_debug_notice_list_entry,"mema_c_debug"); - return; + get_ptr_debug_notice_list_entry(&mema_c_debug_debug_notice_list_entry,"mema_c_debug"); + return; } -void reinit_m_malloc_table(void *ptr_allocmem,u32 size) +void mempInitMallocTable(void *ptr_allocmem,u32 size) { - undefined4 *puVar1; - - s32_80064c18 = -1; - s32_80064c20 = -1; - ptr_table_allocated_mem_blocks = NULL; - DAT_80063c2c = 0; - memorybank8_unk = 0; - DAT_80063c34 = 0; - DAT_80064c1c = 0; - s32_80064c24 = -1; - puVar1 = &ptr_first_entry_in_alloc_table; - do { - puVar1 = puVar1 + 2; - *puVar1 = 0; - puVar1[1] = 0; - puVar1 = puVar1; - } while (puVar1 < (undefined4 *)0x80064c11); - memorybank7_roomsec = ptr_allocmem; - size_modelroom_buf = size; - ptr_first_entry_in_alloc_table = ptr_allocmem; - DAT_80063c3c = size; - return; + s_mem_alloc_entry *entry; + + ptr_table_allocated_mem_blocks.entries[510].addr = -1; + ptr_table_allocated_mem_blocks.entries[511].addr = -1; + ptr_table_allocated_mem_blocks.entries[0].addr = 0; + ptr_table_allocated_mem_blocks.entries[0].size = 0; + ptr_table_allocated_mem_blocks.entries[1].addr = 0; + ptr_table_allocated_mem_blocks.entries[1].size = 0; + ptr_table_allocated_mem_blocks.entries[510].size = 0; + ptr_table_allocated_mem_blocks.entries[511].size = -1; + entry = ptr_table_allocated_mem_blocks.entries + 2; + do { + entry = entry + 1; + entry->addr = 0; + entry->size = 0; + entry = entry; + } while (entry < (s_mem_alloc_entry *) + ((int)&ptr_table_allocated_mem_blocks.entries[0x1fd].addr + 1)); + ptr_model_room_buf_secondary = ptr_allocmem; + size_modelroom_buf = size; + ptr_table_allocated_mem_blocks.entries[2].addr = (s32)ptr_allocmem; + ptr_table_allocated_mem_blocks.entries[2].size = size; + return; } @@ -6391,122 +6405,122 @@ void reinit_m_malloc_table(void *ptr_allocmem,u32 size) void mem_related_calls_sort_merge_entries(void) { - sort_merge_entries_in_alloc_table((int)&ptr_table_allocated_mem_blocks); - return; + memaSortMergeEntries(&ptr_table_allocated_mem_blocks); + return; } -int mem_related_something_find_first(uint param_1) +int mem_related_something_find_first(uint size) { - int iVar1; - uint uVar2; - int *piVar3; - uint uVar4; - int iVar5; - int *piVar6; - - piVar6 = &ptr_first_entry_in_alloc_table; - uVar4 = 0xffffffff; - piVar3 = NULL; - iVar5 = 0; - do { - iVar5 += 1; - uVar2 = piVar6[1] - param_1; - if (param_1 <= (uint)piVar6[1]) { - if ((*piVar6 == -1) || - ((uVar2 < uVar4 && - ((piVar3 = piVar6, uVar2 < 0x40 || (uVar4 = uVar2, piVar3 = piVar6, uVar2 < param_1 >> 2)) - )))) break; - } - piVar6 = piVar6 + 2; - } while (iVar5 != 0x10); - if (piVar3 == NULL) { - iVar5 = 0; - piVar3 = piVar6; - if ((uint)piVar6[1] < param_1) { - uVar4 = piVar6[3]; - while (piVar3 = piVar6 + 2, uVar4 < param_1) { - uVar4 = piVar6[5]; - piVar6 = piVar3; - } - } - if (*piVar3 == -1) { - piVar3 = &ptr_first_entry_in_alloc_table; - do { - sort_merge_entries_in_alloc_table((int)&ptr_table_allocated_mem_blocks); - iVar5 += 1; - } while (iVar5 != 8); - uVar4 = DAT_80063c44; - iVar5 = ptr_first_entry_in_alloc_table; - piVar6 = piVar3; - if (DAT_80063c3c < param_1) { - while (piVar3 = piVar6 + 2, uVar4 < param_1) { - uVar4 = piVar6[5]; - piVar6 = piVar3; - } - iVar5 = *piVar3; - } - if (iVar5 == -1) { - return 0; - } - } - iVar5 = *piVar3; - } - else { - iVar5 = *piVar3; - } - iVar1 = piVar3[1]; - *piVar3 = iVar5 + param_1; - piVar3[1] = iVar1 - param_1; - if (iVar1 - param_1 == 0) { - *piVar3 = 0; - } - return iVar5; -} - - - -int mem_related_something_find_first_0(int param_1,uint param_2) - -{ - int *piVar1; - int iVar2; - int iVar3; - - piVar1 = &ptr_first_entry_in_alloc_table; - iVar2 = ptr_first_entry_in_alloc_table; - if (ptr_first_entry_in_alloc_table != -1) { + uint uVar1; + s_mem_alloc_entry *psVar2; + uint uVar3; + s32 sVar4; + int iVar5; + int iVar6; + s_mem_alloc_entry *psVar7; + + psVar7 = ptr_table_allocated_mem_blocks.entries + 2; + uVar3 = 0xffffffff; + psVar2 = NULL; + iVar6 = 0; do { - if (param_1 == iVar2) { - if (param_2 <= (uint)piVar1[1]) { - iVar3 = piVar1[1] - param_2; - *piVar1 = iVar2 + param_2; - piVar1[1] = iVar3; - if (iVar3 == 0) { - *piVar1 = 0; - } - return param_1; + iVar6 += 1; + uVar1 = psVar7->size - size; + if (size <= (uint)psVar7->size) { + if ((psVar7->addr == -1) || + ((uVar1 < uVar3 && + ((psVar2 = psVar7, uVar1 < 0x40 || (uVar3 = uVar1, uVar1 < size >> 2)))))) break; } - iVar2 = piVar1[2]; - } - else { - iVar2 = piVar1[2]; - } - piVar1 = piVar1 + 2; - } while (iVar2 != -1); - } - return 0; + psVar7 = psVar7 + 1; + } while (iVar6 != 0x10); + if (psVar2 == NULL) { + iVar6 = 0; + psVar2 = psVar7; + if ((uint)psVar7->size < size) { + uVar3 = psVar7[1].size; + while (psVar2 = psVar7 + 1, uVar3 < size) { + uVar3 = psVar7[2].size; + psVar7 = psVar2; + } + } + if (psVar2->addr == -1) { + psVar2 = ptr_table_allocated_mem_blocks.entries + 2; + do { + memaSortMergeEntries(&ptr_table_allocated_mem_blocks); + iVar6 += 1; + } while (iVar6 != 8); + uVar3 = ptr_table_allocated_mem_blocks.entries[3].size; + sVar4 = ptr_table_allocated_mem_blocks.entries[2].addr; + psVar7 = psVar2; + if ((uint)ptr_table_allocated_mem_blocks.entries[2].size < size) { + while (psVar2 = psVar7 + 1, uVar3 < size) { + uVar3 = psVar7[2].size; + psVar7 = psVar2; + } + sVar4 = psVar2->addr; + } + if (sVar4 == -1) { + return 0; + } + } + iVar6 = psVar2->addr; + } + else { + iVar6 = psVar2->addr; + } + iVar5 = psVar2->size - size; + psVar2->addr = iVar6 + size; + psVar2->size = iVar5; + if (iVar5 == 0) { + psVar2->addr = 0; + } + return iVar6; } -void mem_related_model_room_buffers_0(uint param_1,uint param_2) +int mem_related_something_find_first_0(int addr,uint size) { - mem_related_model_room_buffers(param_1,param_2); - return; + s32 sVar1; + int iVar2; + s_mem_alloc_entry *psVar3; + + psVar3 = ptr_table_allocated_mem_blocks.entries + 2; + sVar1 = ptr_table_allocated_mem_blocks.entries[2].addr; + if (ptr_table_allocated_mem_blocks.entries[2].addr != -1) { + do { + if (addr == sVar1) { + if (size <= (uint)psVar3->size) { + iVar2 = psVar3->size - size; + psVar3->addr = sVar1 + size; + psVar3->size = iVar2; + if (iVar2 == 0) { + psVar3->addr = 0; + } + return addr; + } + sVar1 = psVar3[1].addr; + } + else { + sVar1 = psVar3[1].addr; + } + psVar3 = psVar3 + 1; + } while (sVar1 != -1); + } + return 0; +} + + + +void mem_related_model_room_buffers_0(u32 addr,u32 size) + +{ + memaAllocRoomBuffer(addr,size); + return; } @@ -6514,13 +6528,13 @@ void mem_related_model_room_buffers_0(uint param_1,uint param_2) void mem_related_allocated_table_related(void) { - undefined4 *puVar1; - - puVar1 = &DAT_80063c48; - while (puVar1 != (undefined4 *)&DAT_80064c08) { - puVar1 = puVar1 + 8; - } - return; + int iVar1; + + iVar1 = -0x7ff9c3b8; + while (iVar1 != -0x7ff9b3f8) { + iVar1 += 0x20; + } + return; } @@ -6528,154 +6542,148 @@ void mem_related_allocated_table_related(void) float mem_related_something_first_related(void) { - uint uVar1; - int iVar2; - uint uVar3; - undefined4 *puVar4; - float fVar5; - float fVar6; - - iVar2 = 0; - uVar3 = 0; - puVar4 = &ptr_first_entry_in_alloc_table; - uVar1 = DAT_80063c3c; - if (ptr_first_entry_in_alloc_table != -1) { - while( true ) { - iVar2 += uVar1; - if (uVar3 < uVar1) { - uVar3 = uVar1; - } - if (puVar4[2] == -1) break; - uVar1 = puVar4[3]; - puVar4 = puVar4 + 2; + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + float fVar5; + float fVar6; + + iVar2 = 0; + uVar3 = 0; + iVar4 = -0x7ff9c3c8; + uVar1 = ptr_table_allocated_mem_blocks.entries[2].size; + if (ptr_table_allocated_mem_blocks.entries[2].addr != -1) { + while( true ) { + iVar2 += uVar1; + if (uVar3 < uVar1) { + uVar3 = uVar1; + } + if (*(int *)(iVar4 + 8) == -1) break; + uVar1 = *(uint *)(iVar4 + 0xc); + iVar4 = iVar4 + 8; + } } - } - if (iVar2 != 0) { - fVar5 = (float)(iVar2 - uVar3); - if ((int)(iVar2 - uVar3) < 0) { - fVar5 = fVar5 + 4294967296.00000000; + if (iVar2 != 0) { + fVar5 = (float)(iVar2 - uVar3); + if ((int)(iVar2 - uVar3) < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fVar6 = (float)iVar2; + if (iVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + return fVar5 / fVar6; } - fVar6 = (float)iVar2; - if (iVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - return fVar5 / fVar6; - } - return 0.00000000; + return 0.00000000; } -uint generate_list_alloc_mem(void) +void generate_list_alloc_mem(void) { - int *piVar1; - int *piVar2; - uint uVar3; - uint uVar4; - uint uVar5; - int iVar6; - undefined4 *puVar7; - char *__s; - int iVar8; - uint uVar9; - int iVar10; - int iVar11; - undefined auStack4116 [4116]; - - uVar5 = 0x80000000; - iVar8 = 0; - puVar7 = &ptr_first_entry_in_alloc_table; - uVar4 = 0; - if (ptr_first_entry_in_alloc_table != -1) { - do { - piVar1 = puVar7 + 2; - piVar2 = puVar7 + 1; - puVar7 = puVar7 + 2; - uVar4 += *piVar2; - } while (*piVar1 != -1); - } - __s = auStack4116; - iVar6 = ptr_first_entry_in_alloc_table; - while( true ) { - puVar7 = &ptr_first_entry_in_alloc_table; - iVar10 = 0; - uVar9 = 0; - uVar3 = DAT_80063c3c; - if (iVar6 != -1) break; -LAB_7000a1c4: - uVar5 = uVar9; - if (iVar10 == 0) { - if (200 < iVar8) { - uVar4 = sprintf(__s,"[%d]",iVar8); - } - return uVar4; + s_mem_alloc_entry *psVar1; + uint uVar2; + int iVar3; + uint uVar4; + s32 sVar5; + s_mem_alloc_entry *local_s0_lo_68; + s_mem_alloc_entry *local_s0_lo_140; + s_mem_alloc_entry *local_s0_lo_204; + char *__s; + int iVar6; + uint uVar7; + s32 taddr; + undefined auStack4116 [4116]; + + uVar4 = 0x80000000; + iVar6 = 0; + local_s0_lo_68 = ptr_table_allocated_mem_blocks.entries + 2; + if (ptr_table_allocated_mem_blocks.entries[2].addr != -1) { + do { + psVar1 = local_s0_lo_68 + 1; + local_s0_lo_68 = local_s0_lo_68 + 1; + } while (psVar1->addr != -1); } - puVar7 = &ptr_first_entry_in_alloc_table; - uVar9 = DAT_80063c3c; - if (iVar6 != -1) { - while( true ) { - uVar4 = uVar9; - if (uVar5 == uVar4) { - if (iVar8 < 200) { - uVar4 = sprintf(__s,"%d ",uVar4 + 0x200 >> 10); - __s = __s + uVar4; - } - else { - if (iVar8 == 200) { - uVar4 = sprintf(__s,"..."); - __s = __s + uVar4; + __s = auStack4116; + sVar5 = ptr_table_allocated_mem_blocks.entries[2].addr; + while( true ) { + local_s0_lo_140 = ptr_table_allocated_mem_blocks.entries + 2; + iVar3 = 0; + uVar7 = 0; + uVar2 = ptr_table_allocated_mem_blocks.entries[2].size; + if (sVar5 != -1) break; +LAB_7000a1c4: + uVar4 = uVar7; + if (iVar3 == 0) { + if (200 < iVar6) { + sprintf(__s,"[%d]",iVar6); } - } - iVar8 += 1; - iVar10 = puVar7[2]; + return; + } + local_s0_lo_204 = ptr_table_allocated_mem_blocks.entries + 2; + uVar2 = ptr_table_allocated_mem_blocks.entries[2].size; + if (sVar5 != -1) { + while( true ) { + if (uVar4 == uVar2) { + if (iVar6 < 200) { + iVar3 = sprintf(__s,"%d ",uVar2 + 0x200 >> 10); + __s = __s + iVar3; + } + else { + if (iVar6 == 200) { + iVar3 = sprintf(__s,"..."); + __s = __s + iVar3; + } + } + iVar6 += 1; + iVar3 = local_s0_lo_204[1].addr; + } + else { + iVar3 = local_s0_lo_204[1].addr; + } + sVar5 = ptr_table_allocated_mem_blocks.entries[2].addr; + if (iVar3 == -1) break; + uVar2 = local_s0_lo_204[1].size; + local_s0_lo_204 = local_s0_lo_204 + 1; + } + } + } + do { + if (uVar2 < uVar4) { + if (uVar7 < uVar2) { + iVar3 += 1; + uVar7 = uVar2; + goto LAB_7000a1b4; + } + taddr = local_s0_lo_140[1].addr; } else { - iVar10 = puVar7[2]; - } - iVar6 = ptr_first_entry_in_alloc_table; - if (iVar10 == -1) break; - uVar9 = puVar7[3]; - puVar7 = puVar7 + 2; - } - } - } - do { - uVar4 = uVar3; - if (uVar4 < uVar5) { - if (uVar9 < uVar4) { - iVar10 += 1; - uVar9 = uVar4; - goto LAB_7000a1b4; - } - iVar11 = puVar7[2]; - } - else { LAB_7000a1b4: - iVar11 = puVar7[2]; - } - if (iVar11 == -1) goto LAB_7000a1c4; - uVar3 = puVar7[3]; - puVar7 = puVar7 + 2; - } while( true ); + taddr = local_s0_lo_140[1].addr; + } + if (taddr == -1) goto LAB_7000a1c4; + uVar2 = local_s0_lo_140[1].size; + local_s0_lo_140 = local_s0_lo_140 + 1; + } while( true ); } -uint generate_lists_before_after_mem_merge(void) +void memaGenerateListsBeforeAfterMerge(void) { - uint uVar1; - int count; - - generate_list_alloc_mem(); - count = 0; - do { - sort_merge_entries_in_alloc_table((int)&ptr_table_allocated_mem_blocks); - count += 1; - } while (count != 0x1fc); - uVar1 = generate_list_alloc_mem(); - return uVar1; + int count; + + generate_list_alloc_mem(); + count = 0; + do { + memaSortMergeEntries(&ptr_table_allocated_mem_blocks); + count += 1; + } while (count != 0x1fc); + generate_list_alloc_mem(); + return; } @@ -6683,23 +6691,23 @@ uint generate_lists_before_after_mem_merge(void) void mem_related_something_first_related_0(undefined *param_1) { - undefined4 *puVar1; - int iVar2; - int iVar3; - - puVar1 = &ptr_first_entry_in_alloc_table; - iVar2 = ptr_first_entry_in_alloc_table; - iVar3 = DAT_80063c3c; - if (ptr_first_entry_in_alloc_table != -1) { - while( true ) { - (*(code *)param_1)(iVar2 + iVar3,puVar1); - if (puVar1[2] == -1) break; - iVar2 = puVar1[2]; - iVar3 = puVar1[3]; - puVar1 = puVar1 + 2; + int iVar1; + int iVar2; + int iVar3; + + iVar1 = -0x7ff9c3c8; + iVar2 = ptr_table_allocated_mem_blocks.entries[2].addr; + iVar3 = ptr_table_allocated_mem_blocks.entries[2].size; + if (ptr_table_allocated_mem_blocks.entries[2].addr != -1) { + while( true ) { + (*(code *)param_1)(iVar2 + iVar3,iVar1); + if (*(int *)(iVar1 + 8) == -1) break; + iVar2 = *(int *)(iVar1 + 8); + iVar3 = *(int *)(iVar1 + 0xc); + iVar1 = iVar1 + 8; + } } - } - return; + return; } @@ -6707,62 +6715,59 @@ void mem_related_something_first_related_0(undefined *param_1) uint mem_related_0(void) { - uint uVar1; - undefined4 *puVar2; - uint uVar3; - int iVar4; - - memp_related_7(); - uVar3 = 0; - puVar2 = &ptr_first_entry_in_alloc_table; - uVar1 = DAT_80063c3c; - if (ptr_first_entry_in_alloc_table != -1) { - while( true ) { - if (uVar3 < uVar1) { - iVar4 = puVar2[2]; - uVar3 = uVar1; - } - else { - iVar4 = puVar2[2]; - } - if (iVar4 == -1) break; - uVar1 = puVar2[3]; - puVar2 = puVar2 + 2; - } - } - if (uVar3 == 0) { + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + + memaSortMergeAllEntries(); uVar3 = 0; - } - return uVar3; + iVar2 = -0x7ff9c3c8; + uVar1 = ptr_table_allocated_mem_blocks.entries[2].size; + if (ptr_table_allocated_mem_blocks.entries[2].addr != -1) { + while( true ) { + if (uVar3 < uVar1) { + iVar4 = *(int *)(iVar2 + 8); + uVar3 = uVar1; + } + else { + iVar4 = *(int *)(iVar2 + 8); + } + if (iVar4 == -1) break; + uVar1 = *(uint *)(iVar2 + 0xc); + iVar2 = iVar2 + 8; + } + } + if (uVar3 == 0) { + uVar3 = 0; + } + return uVar3; } -undefined8 mem_related_1(int param_1,ulonglong param_2,ulonglong param_3) +u32 mem_related_1(int addr,u32 length,u32 maxsize) { - int iVar2; - undefined8 uVar1; - int iVar3; - - iVar3 = (int)param_3; - iVar2 = (int)param_2; - if (param_2 < param_3) { - iVar2 = mem_related_something_find_first_0(param_1 + iVar2,iVar3 - iVar2); - if (iVar2 == 0) { - uVar1 = 0; + int iVar1; + u32 uVar2; + + if (length < maxsize) { + iVar1 = mem_related_something_find_first_0(addr + length,maxsize - length); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 1; + } } else { - uVar1 = 1; + if (maxsize < length) { + mem_related_model_room_buffers_0(addr + maxsize,length - maxsize); + } + uVar2 = 1; } - } - else { - if (param_3 < param_2) { - mem_related_model_room_buffers_0(param_1 + iVar3,iVar2 - iVar3); - } - uVar1 = 1; - } - return uVar1; + return uVar2; } @@ -6770,11 +6775,11 @@ undefined8 mem_related_1(int param_1,ulonglong param_2,ulonglong param_3) u32 get_random_value(void) { - ulonglong uVar1; - - uVar1 = ((randseed << 0x3f) >> 0x1f | (randseed << 0x1f) >> 0x20) ^ (randseed << 0x2c) >> 0x20; - randseed = uVar1 >> 0x14 & 0xfff ^ uVar1; - return (u32)randseed; + ulonglong uVar1; + + uVar1 = ((randseed << 0x3f) >> 0x1f | (randseed << 0x1f) >> 0x20) ^ (randseed << 0x2c) >> 0x20; + randseed = uVar1 >> 0x14 & 0xfff ^ uVar1; + return (u32)randseed; } @@ -6782,8 +6787,8 @@ u32 get_random_value(void) void increment_random_num(longlong param_1) { - randseed = param_1 + 1; - return; + randseed = param_1 + 1; + return; } @@ -6791,13 +6796,13 @@ void increment_random_num(longlong param_1) u32 lotsa_shifting_random_related(ulonglong *param_1) { - ulonglong uVar1; - - uVar1 = *param_1; - uVar1 = ((uVar1 << 0x3f) >> 0x1f | (uVar1 << 0x1f) >> 0x20) ^ (uVar1 << 0x2c) >> 0x20; - uVar1 = uVar1 >> 0x14 & 0xfff ^ uVar1; - *param_1 = uVar1; - return (u32)uVar1; + ulonglong uVar1; + + uVar1 = *param_1; + uVar1 = ((uVar1 << 0x3f) >> 0x1f | (uVar1 << 0x1f) >> 0x20) ^ (uVar1 << 0x2c) >> 0x20; + uVar1 = uVar1 >> 0x14 & 0xfff ^ uVar1; + *param_1 = uVar1; + return (u32)uVar1; } @@ -6805,37 +6810,37 @@ u32 lotsa_shifting_random_related(ulonglong *param_1) byte * check_string_something(byte *param_1) { - byte bVar1; - byte *pbVar2; - - strstr_numstings = 1; - bVar1 = *param_1; - strstr_ptrcurrent_string = ""; - while (bVar1 != 0) { - if (bVar1 == 0x20) { - bVar1 = param_1[1]; - pbVar2 = param_1; - while( true ) { - *pbVar2 = 0; - param_1 = pbVar2 + 1; - if (bVar1 != 0x20) break; - bVar1 = pbVar2[2]; - pbVar2 = param_1; - } - } - (&strstr_ptrcurrent_string)[strstr_numstings] = param_1; - strstr_numstings += 1; + byte bVar1; + byte *pbVar2; + + strstr_ptrcurrent_string = ""; + strstr_numstings = 1; bVar1 = *param_1; - if (0x20 < bVar1) { - bVar1 = param_1[1]; - pbVar2 = param_1; - while (param_1 = pbVar2 + 1, 0x20 < bVar1) { - bVar1 = pbVar2[2]; - pbVar2 = param_1; - } + while (bVar1 != 0) { + if (bVar1 == 0x20) { + bVar1 = param_1[1]; + pbVar2 = param_1; + while( true ) { + *pbVar2 = 0; + param_1 = pbVar2 + 1; + if (bVar1 != 0x20) break; + bVar1 = pbVar2[2]; + pbVar2 = param_1; + } + } + (&strstr_ptrcurrent_string)[strstr_numstings] = param_1; + strstr_numstings += 1; + bVar1 = *param_1; + if (0x20 < bVar1) { + bVar1 = param_1[1]; + pbVar2 = param_1; + while (param_1 = pbVar2 + 1, 0x20 < bVar1) { + bVar1 = pbVar2[2]; + pbVar2 = param_1; + } + } } - } - return param_1; + return param_1; } @@ -6843,49 +6848,47 @@ byte * check_string_something(byte *param_1) char * strtok(char *__s,char *__delim) { - byte *pbVar1; - - textpointer_load_parse_something((char *)&OSMesg_boot_token_from_indy_80064c30,__s); - pbVar1 = check_string_something((byte *)&OSMesg_boot_token_from_indy_80064c30); - return (char *)pbVar1; + byte *pbVar1; + + textpointer_load_parse_something((char *)OSMesg_boot_token_from_indy_80064c30,__s); + pbVar1 = check_string_something((byte *)OSMesg_boot_token_from_indy_80064c30); + return (char *)pbVar1; } -uint check_boot_switches(void) +void check_boot_switches(void) { - BOOL BVar1; - byte *pbVar2; - OSMesg *data; - u32 devAddr; - uint uStack16; - - devAddr = 0xffb000; - BVar1 = rmon_debug_is_final_build(); - if (BVar1 == FALSE) { - data = &OSMesg_boot_token_from_indy_80064c30; - do { - osPiReadIo(devAddr,(u32 *)data); - data = data + 1; - devAddr += 4; - } while (data != piCmdBuf); - } - else { - OSMesg_boot_token_from_indy_80064c30 = NULL; - } - check_string_something((byte *)&OSMesg_boot_token_from_indy_80064c30); - pbVar2 = check_token(1,(byte *)"-d"); - uStack16 = (uint)(pbVar2 != NULL); - pbVar2 = check_token(1,(byte *)"-s"); - if (pbVar2 != NULL) { - bootswitch_sound = 1; - } - pbVar2 = check_token(1,(byte *)"-j"); - if (pbVar2 != NULL) { - j_text_trigger = 1; - } - return uStack16; + BOOL BVar1; + byte *pbVar2; + OSMesg *data; + u32 devAddr; + + devAddr = 0xffb000; + BVar1 = rmon_debug_is_final_build(); + if (BVar1 == FALSE) { + data = OSMesg_boot_token_from_indy_80064c30; + do { + osPiReadIo(devAddr,(u32 *)data); + data = data + 1; + devAddr += 4; + } while (data != piCmdBuf); + } + else { + OSMesg_boot_token_from_indy_80064c30[0] = NULL; + } + check_string_something((byte *)OSMesg_boot_token_from_indy_80064c30); + check_token(1,(byte *)"-d"); + pbVar2 = check_token(1,(byte *)"-s"); + if (pbVar2 != NULL) { + bootswitch_sound = 1; + } + pbVar2 = check_token(1,(byte *)"-j"); + if (pbVar2 != NULL) { + j_text_trigger = 1; + } + return; } @@ -6893,25 +6896,25 @@ uint check_boot_switches(void) byte * check_token(int param_1,byte *param_2) { - size_t sVar2; - longlong lVar1; - byte **ppbVar3; - int iVar4; - - sVar2 = strlen((char *)param_2); - iVar4 = 1; - if (1 < (int)strstr_numstings) { - ppbVar3 = (byte **)&dword_80024478; - do { - lVar1 = string_related(param_2,*ppbVar3,(longlong)(int)sVar2); - if ((lVar1 == 0) && (param_1 += -1, param_1 == 0)) { - return *ppbVar3 + sVar2; - } - iVar4 += 1; - ppbVar3 = ppbVar3 + 1; - } while (iVar4 < (int)strstr_numstings); - } - return NULL; + size_t sVar2; + longlong lVar1; + byte **ppbVar3; + int iVar4; + + sVar2 = strlen((char *)param_2); + iVar4 = 1; + if (1 < (int)strstr_numstings) { + ppbVar3 = (byte **)&dword_80024478; + do { + lVar1 = string_related(param_2,*ppbVar3,(longlong)(int)sVar2); + if ((lVar1 == 0) && (param_1 += -1, param_1 == 0)) { + return *ppbVar3 + sVar2; + } + iVar4 += 1; + ppbVar3 = ppbVar3 + 1; + } while (iVar4 < (int)strstr_numstings); + } + return NULL; } @@ -6919,79 +6922,77 @@ byte * check_token(int param_1,byte *param_2) char * textpointer_load_parse_something(char *param_1,char *param_2) { - char cVar1; - char *pcVar2; - - cVar1 = *param_2; - param_2 = param_2 + 1; - *param_1 = cVar1; - pcVar2 = param_1 + 1; - while (cVar1 != '\0') { + char cVar1; + char *pcVar2; + cVar1 = *param_2; param_2 = param_2 + 1; - *pcVar2 = cVar1; - pcVar2 = pcVar2 + 1; - } - return param_1; -} - - - -char * something_with_strings(char *param_1,char *param_2,int param_3) - -{ - char cVar1; - char *pcVar2; - - cVar1 = *param_2; - param_2 = param_2 + 1; - *param_1 = cVar1; - pcVar2 = param_1 + 1; - while ((cVar1 != '\0' && (param_3 += -1, param_3 != 0))) { - cVar1 = *param_2; - param_2 = param_2 + 1; - *pcVar2 = cVar1; - pcVar2 = pcVar2 + 1; - } - while (param_3 != 0) { - param_3 += -1; - *pcVar2 = '\0'; - pcVar2 = pcVar2 + 1; - } - return param_1; -} - - - -char * string_load_parse_something(char *param_1,char *param_2) - -{ - char cVar1; - char *pcVar2; - char *pcVar3; - - if (*param_1 == '\0') { - cVar1 = *param_2; - pcVar3 = param_1; - } - else { - cVar1 = param_1[1]; - pcVar2 = param_1; - while (pcVar3 = pcVar2 + 1, cVar1 != '\0') { - cVar1 = pcVar2[2]; - pcVar2 = pcVar3; + *param_1 = cVar1; + pcVar2 = param_1 + 1; + while (cVar1 != '\0') { + cVar1 = *param_2; + param_2 = param_2 + 1; + *pcVar2 = cVar1; + pcVar2 = pcVar2 + 1; } - cVar1 = *param_2; - } - param_2 = param_2 + 1; - *pcVar3 = cVar1; - while (cVar1 != '\0') { - pcVar3 = pcVar3 + 1; + return param_1; +} + + + +char * something_with_strings(char *param_1,char *param_2,int size) + +{ + char cVar1; + char *pcVar2; + cVar1 = *param_2; param_2 = param_2 + 1; - *pcVar3 = cVar1; - } - return param_1; + *param_1 = cVar1; + pcVar2 = param_1 + 1; + while ((cVar1 != '\0' && (size += -1, size != 0))) { + cVar1 = *param_2; + param_2 = param_2 + 1; + *pcVar2 = cVar1; + pcVar2 = pcVar2 + 1; + } + while (size != 0) { + size += -1; + *pcVar2 = '\0'; + pcVar2 = pcVar2 + 1; + } + return param_1; +} + + + +void string_append_from_obseg_textbank(char *buffer,char *textfiletext) + +{ + char cVar1; + char *pcVar2; + + if (*buffer == '\0') { + cVar1 = *textfiletext; + } + else { + cVar1 = buffer[1]; + pcVar2 = buffer; + while (buffer = pcVar2 + 1, cVar1 != '\0') { + cVar1 = pcVar2[2]; + pcVar2 = buffer; + } + cVar1 = *textfiletext; + } + textfiletext = textfiletext + 1; + *buffer = cVar1; + while (cVar1 != '\0') { + buffer = buffer + 1; + cVar1 = *textfiletext; + textfiletext = textfiletext + 1; + *buffer = cVar1; + } + return; } @@ -6999,21 +7000,21 @@ char * string_load_parse_something(char *param_1,char *param_2) undefined8 something_with_strings_0(byte *param_1,char *param_2) { - byte bVar1; - undefined8 uVar2; - - bVar1 = *param_1; - if (bVar1 == *param_2) { - if (bVar1 == 0) { - return 0; + byte bVar1; + undefined8 uVar2; + + bVar1 = *param_1; + if (bVar1 == *param_2) { + if (bVar1 == 0) { + return 0; + } + uVar2 = something_with_strings_0(param_1 + 1,param_2 + 1); + return uVar2; } - uVar2 = something_with_strings_0(param_1 + 1,param_2 + 1); - return uVar2; - } - if (bVar1 < (byte)*param_2) { - return 0xffffffffffffffff; - } - return 1; + if (bVar1 < (byte)*param_2) { + return 0xffffffffffffffff; + } + return 1; } @@ -7021,7 +7022,7 @@ undefined8 something_with_strings_0(byte *param_1,char *param_2) void dummy7000A890(void) { - return; + return; } @@ -7029,72 +7030,56 @@ void dummy7000A890(void) undefined8 string_related(byte *param_1,byte *param_2,longlong param_3) { - byte bVar1; - undefined8 uVar2; - - if (param_3 == 0) { - return 0; - } - bVar1 = *param_1; - if (bVar1 != *param_2) { - if (bVar1 < *param_2) { - return 0xffffffffffffffff; + byte bVar1; + undefined8 uVar2; + + if (param_3 == 0) { + return 0; } - return 1; - } - if (bVar1 == 0) { - return 0; - } - uVar2 = string_related(param_1 + 1,param_2 + 1,(longlong)((int)param_3 + -1)); - return uVar2; + bVar1 = *param_1; + if (bVar1 != *param_2) { + if (bVar1 < *param_2) { + return 0xffffffffffffffff; + } + return 1; + } + if (bVar1 == 0) { + return 0; + } + uVar2 = string_related(param_1 + 1,param_2 + 1,(longlong)((int)param_3 + -1)); + return uVar2; } -void dummy7000A8F0(void) +u8 strtol_related(u8 param_1) { - return; + if ((0x60 < param_1) && (param_1 < 0x7b)) { + return param_1 + -0x20; + } + return param_1; } -uint strtol_related(uint param_1) +u8 strtol_related_0(u8 param_1) { - param_1 &= 0xff; - if ((0x60 < param_1) && (param_1 < 0x7b)) { - return param_1 - 0x20 & 0xff; - } - return param_1; + return (u8)(0x2f < param_1 && param_1 < 0x3a); } -ulonglong strtol_related_0(byte param_1) +u8 strtol_related_1(u8 param_1) { - ulonglong uVar1; - - uVar1 = (ulonglong)(param_1 < 0x30) ^ 1; - if (uVar1 != 0) { - uVar1 = (ulonglong)(param_1 < 0x3a); - } - return uVar1; -} - - - -ulonglong strtol_related_1(byte param_1) - -{ - ulonglong uVar1; - - if (((param_1 < 0x61) || (uVar1 = (ulonglong)(param_1 < 0x7b), param_1 >= 0x7b)) && - (uVar1 = (ulonglong)(param_1 < 0x41) ^ 1, uVar1 != 0)) { - uVar1 = (ulonglong)(param_1 < 0x5b); - } - return uVar1; + bool bVar1; + + if (((param_1 < 0x61) || (bVar1 = param_1 < 0x7b, !bVar1)) && (bVar1 = 0x40 < param_1, bVar1)) { + bVar1 = param_1 < 0x5b; + } + return (u8)bVar1; } @@ -7102,15 +7087,15 @@ ulonglong strtol_related_1(byte param_1) ulonglong strtol_related_2(char param_1) { - ulonglong uVar1; - - uVar1 = (ulonglong)(param_1 == ' '); - if ((((param_1 != ' ') && (uVar1 = (ulonglong)(param_1 == '\t'), param_1 != '\t')) && - (uVar1 = (ulonglong)(param_1 == '\n'), param_1 != '\n')) && - (uVar1 = (ulonglong)(param_1 == '\f'), param_1 != '\f')) { - uVar1 = (ulonglong)(param_1 == '\v'); - } - return uVar1; + ulonglong uVar1; + + uVar1 = (ulonglong)(param_1 == ' '); + if ((((param_1 != ' ') && (uVar1 = (ulonglong)(param_1 == '\t'), param_1 != '\t')) && + (uVar1 = (ulonglong)(param_1 == '\n'), param_1 != '\n')) && + (uVar1 = (ulonglong)(param_1 == '\f'), param_1 != '\f')) { + uVar1 = (ulonglong)(param_1 == '\v'); + } + return uVar1; } @@ -7118,120 +7103,117 @@ ulonglong strtol_related_2(char param_1) long strtol(char *__nptr,char **__endptr,int __base) { - byte *pbVar1; - byte bVar2; - bool bVar3; - bool bVar4; - ulonglong uVar5; - uint uVar7; - ulonglong uVar6; - char cVar8; - uint uVar9; - byte *pbVar10; - byte *pbVar11; - - if (((__base < 0) || (__base == 1)) || (0x24 < __base)) { - __base = 10; - cVar8 = *__nptr; - } - else { - cVar8 = *__nptr; - } - uVar5 = strtol_related_2(cVar8); - if (uVar5 == 0) { - bVar2 = *__nptr; - pbVar10 = (byte *)__nptr; - } - else { - pbVar10 = (byte *)(__nptr + 1); - while (uVar5 = strtol_related_2(*pbVar10), uVar5 != 0) { - pbVar10 = pbVar10 + 1; - } - bVar2 = *pbVar10; - } - if (bVar2 != 0) { - if (bVar2 == 0x2d) { - bVar3 = true; - pbVar10 = pbVar10 + 1; + bool bVar1; + bool bVar2; + ulonglong uVar3; + u8 uVar4; + u8 uVar5; + char cVar6; + byte bVar8; + uint uVar7; + uint uVar9; + u8 *puVar10; + u8 *puVar11; + + if (((__base < 0) || (__base == 1)) || (0x24 < __base)) { + __base = 10; + cVar6 = *__nptr; } else { - if (bVar2 == 0x2b) { - bVar3 = false; - pbVar10 = pbVar10 + 1; - } - else { - bVar3 = false; - } + cVar6 = *__nptr; } - if (((__base == 0x10) && (*pbVar10 == 0x30)) && - (uVar7 = strtol_related((uint)pbVar10[1]), uVar7 == 0x58)) { - pbVar10 = pbVar10 + 2; + uVar3 = strtol_related_2(cVar6); + if (uVar3 == 0) { + uVar4 = *__nptr; + puVar10 = (u8 *)__nptr; } - uVar5 = (ulonglong)*pbVar10; - if ((__base == 0) && (__base = 10, *pbVar10 == 0x30)) { - uVar7 = strtol_related((uint)pbVar10[1]); - __base = 8; - if (uVar7 == 0x58) { - pbVar10 = pbVar10 + 2; - __base = 0x10; - } - uVar5 = (ulonglong)*pbVar10; + else { + puVar10 = (u8 *)(__nptr + 1); + while (uVar3 = strtol_related_2(*puVar10), uVar3 != 0) { + puVar10 = puVar10 + 1; + } + uVar4 = *puVar10; } - bVar4 = false; - uVar7 = 0; - pbVar11 = pbVar10; - if (uVar5 != 0) { - do { - uVar6 = strtol_related_0((byte)uVar5); - if (uVar6 == 0) { - uVar6 = strtol_related_1((byte)uVar5); - if (uVar6 == 0) break; - uVar9 = strtol_related((uint)uVar5); - uVar9 -= 0x37; + if (uVar4 != '\0') { + if (uVar4 == '-') { + bVar1 = true; + puVar10 = puVar10 + 1; } else { - uVar9 = (uint)uVar5 - 0x30; - } - uVar9 &= 0xff; - if (__base <= (int)uVar9) break; - if (__base == 0) { - trap(0x1c00); - } - if (0xffffffffU / (uint)__base < uVar7) { -LAB_7000abb8: - bVar4 = true; - } - else { - if (uVar7 == 0xffffffffU / (uint)__base) { - if (__base == 0) { - trap(0x1c00); + if (uVar4 == '+') { + bVar1 = false; + puVar10 = puVar10 + 1; + } + else { + bVar1 = false; } - if (0xffffffffU % __base < uVar9) goto LAB_7000abb8; - } - uVar7 = uVar7 * __base + uVar9; } - pbVar1 = pbVar11 + 1; - uVar5 = (ulonglong)*pbVar1; - pbVar11 = pbVar11 + 1; - } while (*pbVar1 != 0); - } - if (pbVar11 != pbVar10) { - if (__endptr != NULL) { - *(byte **)__endptr = pbVar11; - } - if (!bVar4) { - if (bVar3) { - return -uVar7; + if (((__base == 0x10) && (*puVar10 == '0')) && + (uVar4 = strtol_related(puVar10[1]), uVar4 == 'X')) { + puVar10 = puVar10 + 2; + } + uVar4 = *puVar10; + if ((__base == 0) && (__base = 10, uVar4 == '0')) { + uVar4 = strtol_related(puVar10[1]); + __base = 8; + if (uVar4 == 'X') { + puVar10 = puVar10 + 2; + __base = 0x10; + } + uVar4 = *puVar10; + } + bVar2 = false; + uVar9 = 0; + puVar11 = puVar10; + while (uVar4 != '\0') { + uVar5 = strtol_related_0(uVar4); + if (uVar5 == '\0') { + uVar5 = strtol_related_1(uVar4); + if (uVar5 == '\0') break; + uVar4 = strtol_related(uVar4); + bVar8 = uVar4 - 0x37; + } + else { + bVar8 = uVar4 - 0x30; + } + uVar7 = (uint)bVar8; + if (__base <= (int)uVar7) break; + if (__base == 0) { + trap(0x1c00); + } + if (0xffffffffU / (uint)__base < uVar9) { +LAB_7000abb8: + bVar2 = true; + } + else { + if (uVar9 == 0xffffffffU / (uint)__base) { + if (__base == 0) { + trap(0x1c00); + } + if (0xffffffffU % __base < uVar7) goto LAB_7000abb8; + } + uVar9 = uVar9 * __base + uVar7; + } + uVar4 = puVar11[1]; + puVar11 = puVar11 + 1; + } + if (puVar11 != puVar10) { + if (__endptr != NULL) { + *(u8 **)__endptr = puVar11; + } + if (!bVar2) { + if (bVar1) { + return -uVar9; + } + return uVar9; + } + return -1; } - return uVar7; - } - return -1; } - } - if (__endptr != NULL) { - *__endptr = __nptr; - } - return 0; + if (__endptr != NULL) { + *__endptr = __nptr; + } + return 0; } @@ -7239,10 +7221,10 @@ LAB_7000abb8: int proutSprintf(void *s,char *buf,size_t n) { - void *pvVar1; - - pvVar1 = memcpy(s,buf,n); - return (int)((int)pvVar1 + n); + void *pvVar1; + + pvVar1 = memcpy(s,buf,n); + return (int)((int)pvVar1 + n); } @@ -7250,19 +7232,19 @@ int proutSprintf(void *s,char *buf,size_t n) int sprintf(char *__s,char *__format,...) { - byte *ans; - uint in_a2_lo; - undefined4 in_a3_lo; - uint uStackX8; - undefined4 uStackX12; - - uStackX8 = in_a2_lo; - uStackX12 = in_a3_lo; - ans = _Printf(proutSprintf,(longlong)(int)__s,(byte *)__format,&uStackX8); - if (-1 < (int)ans) { - __s[(int)ans] = '\0'; - } - return (int)(ans + -1); + byte *ans; + uint in_a2_lo; + undefined4 in_a3_lo; + uint uStackX8; + undefined4 uStackX12; + + uStackX8 = in_a2_lo; + uStackX12 = in_a3_lo; + ans = _Printf(proutSprintf,(longlong)(int)__s,(byte *)__format,&uStackX8); + if (-1 < (int)ans) { + __s[(int)ans] = '\0'; + } + return (int)(ans + -1); } @@ -7270,8 +7252,8 @@ int sprintf(char *__s,char *__format,...) void start_pi_manager(void) { - osCreatePiManager(0x96,&piCmdQ,piCmdBuf,8); - return; + osCreatePiManager(0x96,&piCmdQ,piCmdBuf,8); + return; } @@ -7279,7 +7261,7 @@ void start_pi_manager(void) void removed_7000ad30(void) { - return; + return; } @@ -7287,9 +7269,9 @@ void removed_7000ad30(void) void something_with_vi_c_debug(void) { - get_ptr_debug_notice_list_entry(&ptr_vi_c_debug_debug_notice_list,"vi_c_debug"); - osCreateMesgQueue(&vi_c_debug_MQ,vi_c_debug_MSG,8); - return; + get_ptr_debug_notice_list_entry(&ptr_vi_c_debug_debug_notice_list,"vi_c_debug"); + osCreateMesgQueue(&vi_c_debug_MQ,vi_c_debug_MSG,8); + return; } @@ -7297,7 +7279,7 @@ void something_with_vi_c_debug(void) undefined8 removed_7000AD80(undefined4 param_1,undefined4 param_2) { - return 0; + return 0; } @@ -7305,7 +7287,7 @@ undefined8 removed_7000AD80(undefined4 param_1,undefined4 param_2) undefined8 removed_7000AD90(undefined4 param_1,undefined4 param_2) { - return 0; + return 0; } @@ -7313,7 +7295,7 @@ undefined8 removed_7000AD90(undefined4 param_1,undefined4 param_2) void removed_7000ada0(void) { - return; + return; } @@ -7321,7 +7303,7 @@ void removed_7000ada0(void) void removed_7000ada8(void) { - return; + return; } @@ -7329,8 +7311,8 @@ void removed_7000ada8(void) void debug_text_related_2(void) { - blank_debug_buffer_chars(); - return; + blank_debug_buffer_chars(); + return; } @@ -7338,41 +7320,41 @@ void debug_text_related_2(void) void display_text_to_coord(int x,int y,char char) { - int *piVar1; - int i; - int iVar2; - undefined *puVar3; - undefined uVar4; - - puVar3 = stdout_primary_color_table; - i = 0; - iVar2 = 0; - do { - uVar4 = (undefined)i; - piVar1 = (int *)(puVar3 + 4); - puVar3 = puVar3 + 8; - if ((debug_text_color == *piVar1) && - (speedgraph_color == *(int *)(stdout_environment_color_table + iVar2 + 4))) - goto LAB_7000aea8; - i += 1; - iVar2 += 8; - } while (i < 0x20); - iVar2 = (int)string_formatting[0] * 8; - *(undefined4 *)(stdout_primary_color_table + iVar2) = stdout_primary_color; - puVar3 = string_formatting[0] + 1; - *(int *)(stdout_primary_color_table + iVar2 + 4) = debug_text_color; - *(undefined4 *)(stdout_environment_color_table + iVar2) = debug_text_bg_color; - *(int *)(stdout_environment_color_table + iVar2 + 4) = speedgraph_color; - string_formatting[0] = (undefined *)((uint)puVar3 & 0x1f); - if (((int)puVar3 < 0) && (string_formatting[0] != NULL)) { - string_formatting[0] = string_formatting[0] + -0x20; - } - uVar4 = SUB41(string_formatting[0],0); + int *piVar1; + int i; + int iVar2; + undefined *puVar3; + undefined uVar4; + + puVar3 = stdout_primary_color_table; + i = 0; + iVar2 = 0; + do { + uVar4 = (undefined)i; + piVar1 = (int *)(puVar3 + 4); + puVar3 = puVar3 + 8; + if ((debug_text_color == *piVar1) && + (speedgraph_color == *(int *)(stdout_environment_color_table + iVar2 + 4))) + goto LAB_7000aea8; + i += 1; + iVar2 += 8; + } while (i < 0x20); + iVar2 = (int)string_formatting[0] * 8; + *(undefined4 *)(stdout_primary_color_table + iVar2) = stdout_primary_color; + puVar3 = string_formatting[0] + 1; + *(int *)(stdout_primary_color_table + iVar2 + 4) = debug_text_color; + *(undefined4 *)(stdout_environment_color_table + iVar2) = debug_text_bg_color; + *(int *)(stdout_environment_color_table + iVar2 + 4) = speedgraph_color; + string_formatting[0] = (undefined *)((uint)puVar3 & 0x1f); + if (((int)puVar3 < 0) && (string_formatting[0] != NULL)) { + string_formatting[0] = string_formatting[0] + -0x20; + } + uVar4 = SUB41(string_formatting[0],0); LAB_7000aea8: - iVar2 = x * 0x46 + y * 2; - stdout_debug_menu_screen_buffer[iVar2] = char; - stdout_debug_menu_screen_buffer[iVar2 + 1] = uVar4; - return; + iVar2 = x * 0x46 + y * 2; + stdout_debug_menu_screen_buffer[iVar2] = char; + stdout_debug_menu_screen_buffer[iVar2 + 1] = uVar4; + return; } @@ -7380,9 +7362,9 @@ LAB_7000aea8: void debugMenuSetTextPOStoOffset(void) { - debug_menu_x_text_pos = debug_menu_x_pos_offset; - debug_menu_y_text_pos = debug_menu_y_pos_offset; - return; + debug_menu_x_text_pos = debug_menu_x_pos_offset; + debug_menu_y_text_pos = debug_menu_y_pos_offset; + return; } @@ -7390,22 +7372,22 @@ void debugMenuSetTextPOStoOffset(void) void blank_debug_buffer_chars(void) { - int x; - int y; - - y = 0; - do { - x = 0; + int x; + int y; + + y = 0; do { - display_text_to_coord(x,y,'\0'); - x += 1; - } while (x != 0x50); - y += 1; - } while (y != 0x23); - debugMenuSetTextPOStoOffset(); - removed_7000ada0(); - string_formatting[0] = NULL; - return; + x = 0; + do { + display_text_to_coord(x,y,'\0'); + x += 1; + } while (x != 0x50); + y += 1; + } while (y != 0x23); + debugMenuSetTextPOStoOffset(); + removed_7000ada0(); + string_formatting[0] = NULL; + return; } @@ -7413,7 +7395,7 @@ void blank_debug_buffer_chars(void) void removed_7000af84(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { - return; + return; } @@ -7421,31 +7403,31 @@ void removed_7000af84(undefined4 param_1,undefined4 param_2,undefined4 param_3,u int something_debug_info_related(int param_1) { - bool bVar1; - int x; - int y; - - y = 0x21; - param_1 += 0x21; - do { - if ((param_1 < 0) || (x = 0, 0x22 < param_1)) { - x = 0; - do { - display_text_to_coord(x,y,'\0'); - x += 1; - } while (x != 0x50); - } - else { - do { - removed_7000af84(x,param_1,x,y); - x += 1; - } while (x != 0x50); - } - param_1 += -1; - bVar1 = y != 0; - y += -1; - } while (bVar1); - return 0; + bool bVar1; + int x; + int y; + + y = 0x21; + param_1 += 0x21; + do { + if ((param_1 < 0) || (x = 0, 0x22 < param_1)) { + x = 0; + do { + display_text_to_coord(x,y,'\0'); + x += 1; + } while (x != 0x50); + } + else { + do { + removed_7000af84(x,param_1,x,y); + x += 1; + } while (x != 0x50); + } + param_1 += -1; + bVar1 = y != 0; + y += -1; + } while (bVar1); + return 0; } @@ -7453,9 +7435,9 @@ int something_debug_info_related(int param_1) void set_final_debug_text_positions(s32 xadjust,s32 yadjust) { - debug_menu_x_text_pos = xadjust + debug_menu_x_pos_offset; - debug_menu_y_text_pos = yadjust + debug_menu_y_pos_offset; - return; + debug_menu_x_text_pos = xadjust + debug_menu_x_pos_offset; + debug_menu_y_text_pos = yadjust + debug_menu_y_pos_offset; + return; } @@ -7463,8 +7445,8 @@ void set_final_debug_text_positions(s32 xadjust,s32 yadjust) void set_debug_text_color(s32 red,s32 blue,s32 green,s32 alpha) { - debug_text_color = red << 0x18 | blue << 0x10 | green << 8 | 0xffU - alpha; - return; + debug_text_color = red << 0x18 | blue << 0x10 | green << 8 | 0xffU - alpha; + return; } @@ -7472,8 +7454,8 @@ void set_debug_text_color(s32 red,s32 blue,s32 green,s32 alpha) void set_color_speedgraph(int red,int green,int blue,int alpha) { - speedgraph_color = red << 0x18 | green << 0x10 | blue << 8 | 0xffU - alpha; - return; + speedgraph_color = red << 0x18 | green << 0x10 | blue << 8 | 0xffU - alpha; + return; } @@ -7484,28 +7466,28 @@ void set_color_speedgraph(int red,int green,int blue,int alpha) void write_char_to_screen(byte character) { - short txtClipW; - short txtClipH; - int start_pos; - - txtClipW = get_video2_settings_txtClipW(); - start_pos = (int)txtClipW + -0xd; - if (start_pos < 0) { - start_pos = (int)txtClipW + -10; - } - txtClipH = get_video2_settings_txtClipH(); - if ((character == 0) || ((0x1f < character && (character < 0x7f)))) { - display_text_to_coord(debug_menu_x_text_pos,debug_menu_y_text_pos,character); - } - debug_menu_x_text_pos += 1; - if (((character == 0xd) || (character == 10)) || (start_pos >> 2 <= debug_menu_x_text_pos)) { - debug_menu_y_text_pos += 1; - debug_menu_x_text_pos = debug_menu_x_pos_offset; - if (((int)txtClipH + -10) / 7 <= debug_menu_y_text_pos) { - debug_menu_y_text_pos = debug_menu_y_pos_offset; + short txtClipW; + short txtClipH; + int start_pos; + + txtClipW = get_video2_settings_txtClipW(); + start_pos = (int)txtClipW + -0xd; + if (start_pos < 0) { + start_pos = (int)txtClipW + -10; } - } - return; + txtClipH = get_video2_settings_txtClipH(); + if ((character == 0) || ((0x1f < character && (character < 0x7f)))) { + display_text_to_coord(debug_menu_x_text_pos,debug_menu_y_text_pos,character); + } + debug_menu_x_text_pos += 1; + if (((character == 0xd) || (character == 10)) || (start_pos >> 2 <= debug_menu_x_text_pos)) { + debug_menu_y_text_pos += 1; + debug_menu_x_text_pos = debug_menu_x_pos_offset; + if (((int)txtClipH + -10) / 7 <= debug_menu_y_text_pos) { + debug_menu_y_text_pos = debug_menu_y_pos_offset; + } + } + return; } @@ -7513,9 +7495,9 @@ void write_char_to_screen(byte character) void debug_printcharatpos(int x,int y,byte letter) { - set_final_debug_text_positions(x,y); - write_char_to_screen(letter); - return; + set_final_debug_text_positions(x,y); + write_char_to_screen(letter); + return; } @@ -7523,15 +7505,15 @@ void debug_printcharatpos(int x,int y,byte letter) void write_string_stdout(u8 *string) { - byte character; - - character = *string; - while (character != 0) { - string = string + 1; - write_char_to_screen(character); + byte character; + character = *string; - } - return; + while (character != 0) { + string = string + 1; + write_char_to_screen(character); + character = *string; + } + return; } @@ -7539,16 +7521,16 @@ void write_string_stdout(u8 *string) void debug_text_related(int x,int y,byte *character) { - byte character_00; - - set_final_debug_text_positions(x,y); - character_00 = *character; - while (character_00 != 0) { - character = character + 1; - write_char_to_screen(character_00); + byte character_00; + + set_final_debug_text_positions(x,y); character_00 = *character; - } - return; + while (character_00 != 0) { + character = character + 1; + write_char_to_screen(character_00); + character_00 = *character; + } + return; } @@ -7556,109 +7538,110 @@ void debug_text_related(int x,int y,byte *character) uint * read_screen_display_block_and_write_chars(uint *param_1) { - byte bVar1; - byte bVar2; - int iVar3; - u32 uVar4; - char *pcVar5; - undefined1 *puVar6; - ulonglong uVar7; - uint uVar8; - int iVar9; - uint *ptr_DLtarget; - int iVar10; - byte *pbVar11; - int iStack72; - - uVar7 = 0xffffffffffffffff; - iVar9 = 0; - ptr_DLtarget = param_1; - do { - puVar6 = stdout_debug_menu_screen_buffer; - pcVar5 = stdout_debug_menu_screen_buffer + iVar9; + byte bVar1; + byte bVar2; + int iVar3; + u32 uVar4; + char *pcVar5; + undefined1 *puVar6; + ulonglong uVar7; + uint uVar8; + int iVar9; + uint *ptr_DLtarget; + int iVar10; + byte *pbVar11; + int iStack72; + + uVar7 = 0xffffffffffffffff; + iVar9 = 0; + ptr_DLtarget = param_1; do { - puVar6 = puVar6 + 0x46; - if (*pcVar5 != '\0') { - if ((ulonglong)(byte)pcVar5[1] == uVar7) { - ptr_DLtarget = ptr_DLtarget + 6; + puVar6 = stdout_debug_menu_screen_buffer; + pcVar5 = stdout_debug_menu_screen_buffer + iVar9; + do { + puVar6 = puVar6 + 0x46; + if (*pcVar5 != '\0') { + if ((ulonglong)(byte)pcVar5[1] == uVar7) { + ptr_DLtarget = ptr_DLtarget + 6; + } + else { + ptr_DLtarget = ptr_DLtarget + 10; + uVar7 = (ulonglong)(byte)pcVar5[1]; + } + } + pcVar5 = pcVar5 + 0x46; + } while (puVar6 != stdout_primary_color_table); + iVar9 += 2; + } while (iVar9 < 0x46); + iVar9 = num_microcode_cmds_that_fit((int)param_1); + ptr_DLtarget = (uint *)((int)ptr_DLtarget - (int)param_1); + iVar9 += -0x800; + if (0 < (int)ptr_DLtarget) { + uVar7 = 0xffffffffffffffff; + if (iVar9 < 1) { + dword_800268B8 = 0; } else { - ptr_DLtarget = ptr_DLtarget + 10; - uVar7 = (ulonglong)(byte)pcVar5[1]; + if (iVar9 < (int)ptr_DLtarget) { + dword_800268B8 = (iVar9 * 0xff) / (int)ptr_DLtarget; + if (ptr_DLtarget == NULL) { + trap(0x1c00); + } + if ((ptr_DLtarget == (uint *)0xffffffff) && (iVar9 * 0xff == -0x80000000)) { + trap(0x1800); + } + } + else { + dword_800268B8 = 0x100; + } } - } - pcVar5 = pcVar5 + 0x46; - } while (puVar6 != stdout_primary_color_table); - iVar9 += 2; - } while (iVar9 < 0x46); - iVar9 = num_microcode_cmds_that_fit((int)param_1); - ptr_DLtarget = (uint *)((int)ptr_DLtarget - (int)param_1); - iVar9 += -0x800; - if (0 < (int)ptr_DLtarget) { - uVar7 = 0xffffffffffffffff; - if (iVar9 < 1) { - dword_800268B8 = 0; + *param_1 = 0x6000000; + param_1[1] = 0x80024fb0; + param_1 = param_1 + 2; + iStack72 = 0; + iVar9 = 0; + do { + iVar10 = 0; + pbVar11 = stdout_debug_menu_screen_buffer + iStack72; + do { + bVar1 = *pbVar11; + bVar2 = pbVar11[1]; + if (bVar1 != 0) { + iVar3 = (uint)bVar2 * 8; + ptr_DLtarget = param_1; + if ((ulonglong)bVar2 != uVar7) { + ptr_DLtarget = param_1 + 4; + *param_1 = *(uint *)(stdout_primary_color_table + iVar3); + param_1[1] = *(uint *)(stdout_primary_color_table + iVar3 + 4); + param_1[2] = *(uint *)(stdout_environment_color_table + iVar3); + param_1[3] = *(uint *)(stdout_environment_color_table + iVar3 + 4); + uVar7 = (ulonglong)bVar2; + } + uVar4 = get_random_value(); + param_1 = ptr_DLtarget; + if (((uVar4 & 0xff) < dword_800268B8) && + (iVar3 = num_microcode_cmds_that_fit((int)ptr_DLtarget), 0x3ff < iVar3)) { + uVar8 = (uint)bVar1 - 0x20; + *ptr_DLtarget = + (iVar10 * 0x10 + 0x10U & 0xfff) << 0xc | 0xe4000000 | + iVar9 * 0x1c + 0x1cU & 0xfff; + ptr_DLtarget[1] = (iVar10 * 0x10 & 0xfffU) << 0xc | iVar9 * 0x1c & 0xfffU; + ptr_DLtarget[2] = 0xb4000000; + ptr_DLtarget[3] = + (uVar8 & 0x1f) << 0x17 | ((int)uVar8 >> 5) * 0xe0 & 0xffffU; + ptr_DLtarget[4] = 0xb3000000; + ptr_DLtarget[5] = 0x4000400; + param_1 = ptr_DLtarget + 6; + } + } + iVar10 += 1; + pbVar11 = pbVar11 + 0x46; + } while (iVar10 != 0x50); + iVar9 += 1; + iStack72 += 2; + } while (iVar9 != 0x23); } - else { - if (iVar9 < (int)ptr_DLtarget) { - dword_800268B8 = (iVar9 * 0xff) / (int)ptr_DLtarget; - if (ptr_DLtarget == NULL) { - trap(0x1c00); - } - if ((ptr_DLtarget == (uint *)0xffffffff) && (iVar9 * 0xff == -0x80000000)) { - trap(0x1800); - } - } - else { - dword_800268B8 = 0x100; - } - } - *param_1 = 0x6000000; - param_1[1] = 0x80024fb0; - param_1 = param_1 + 2; - iStack72 = 0; - iVar9 = 0; - do { - iVar10 = 0; - pbVar11 = stdout_debug_menu_screen_buffer + iStack72; - do { - bVar1 = *pbVar11; - bVar2 = pbVar11[1]; - if (bVar1 != 0) { - iVar3 = (uint)bVar2 * 8; - ptr_DLtarget = param_1; - if ((ulonglong)bVar2 != uVar7) { - ptr_DLtarget = param_1 + 4; - *param_1 = *(uint *)(stdout_primary_color_table + iVar3); - param_1[1] = *(uint *)(stdout_primary_color_table + iVar3 + 4); - param_1[2] = *(uint *)(stdout_environment_color_table + iVar3); - param_1[3] = *(uint *)(stdout_environment_color_table + iVar3 + 4); - uVar7 = (ulonglong)bVar2; - } - uVar4 = get_random_value(); - param_1 = ptr_DLtarget; - if (((uVar4 & 0xff) < dword_800268B8) && - (iVar3 = num_microcode_cmds_that_fit((int)ptr_DLtarget), param_1 = ptr_DLtarget, - 0x3ff < iVar3)) { - uVar8 = (uint)bVar1 - 0x20; - *ptr_DLtarget = - (iVar10 * 0x10 + 0x10U & 0xfff) << 0xc | 0xe4000000 | iVar9 * 0x1c + 0x1cU & 0xfff; - ptr_DLtarget[1] = (iVar10 * 0x10 & 0xfffU) << 0xc | iVar9 * 0x1c & 0xfffU; - ptr_DLtarget[2] = 0xb4000000; - ptr_DLtarget[3] = (uVar8 & 0x1f) << 0x17 | ((int)uVar8 >> 5) * 0xe0 & 0xffffU; - ptr_DLtarget[4] = 0xb3000000; - ptr_DLtarget[5] = 0x4000400; - param_1 = ptr_DLtarget + 6; - } - } - iVar10 += 1; - pbVar11 = pbVar11 + 0x46; - } while (iVar10 != 0x50); - iVar9 += 1; - iStack72 += 2; - } while (iVar9 != 0x23); - } - return param_1; + return param_1; } @@ -7666,49 +7649,49 @@ uint * read_screen_display_block_and_write_chars(uint *param_1) void something_with_joy_c_debug(void) { - OSContPad *pOVar1; - OSContPad *pOVar2; - OSContPad *pOVar3; - - get_ptr_debug_notice_list_entry(&joy_c_ptr_debug_notice_list_entry,"joy_c_debug"); - osCreateMesgQueue(&cont1MesgMQ,&cont1Mesg,1); - osCreateMesgQueue(&cont2MesgMQ,&cont2Mesg,1); - osCreateMesgQueue(&cont3MesgMQ,&cont3Mesg,1); - osCreateMesgQueue(&cont4MesgMQ,&cont4Mesg,1); - osCreateMesgQueue(&contDEMOMesgMQ,&contDEMOMesg,10); - osSetEventMesg(); - enableControllers = TRUE; - disable_all_rumble = 0; - pOVar3 = &OSContPad_80064f30; - ptr_to_tlb_ramrom_record = 0; - pOVar2 = pOVar3; - do { - *(undefined4 *)(pOVar3 + 0x50) = 0; - *(undefined4 *)&pOVar3[0x50].errno = 0; - *(undefined4 *)&pOVar3[0x51].stick_x = 0; - *(undefined4 *)(pOVar3 + 0x52) = 0; - *(undefined4 *)(pOVar3 + 0x54) = 0xffffffff; - pOVar1 = pOVar2 + 0x54; - pOVar3 = (OSContPad *)&pOVar3[0x54].errno; - pOVar2[3].errno = '\0'; - pOVar2[3].stick_y = '\0'; - pOVar2[3].stick_x = '\0'; - pOVar2[3].button = 0; - pOVar2[2].errno = '\0'; - pOVar2[2].stick_y = '\0'; - pOVar2[2].stick_x = '\0'; - pOVar2[2].button = 0; - pOVar2[1].errno = '\0'; - pOVar2[1].stick_y = '\0'; - pOVar2[1].stick_x = '\0'; - pOVar2[1].button = 0; - pOVar2->button = 0; - pOVar2->stick_x = '\0'; - pOVar2->stick_y = '\0'; - pOVar2->errno = '\0'; - pOVar2 = (OSContPad *)&pOVar1->errno; - } while ((OSContPad *)&pOVar1->errno != (OSContPad *)&contDEMOMesg); - return; + OSContPad *pOVar1; + OSContPad *pOVar2; + OSContPad *pOVar3; + + get_ptr_debug_notice_list_entry(&joy_c_ptr_debug_notice_list_entry,"joy_c_debug"); + osCreateMesgQueue(&cont1MesgMQ,&cont1Mesg,1); + osCreateMesgQueue(&cont2MesgMQ,&cont2Mesg,1); + osCreateMesgQueue(&cont3MesgMQ,&cont3Mesg,1); + osCreateMesgQueue(&cont4MesgMQ,&cont4Mesg,1); + osCreateMesgQueue(&contDEMOMesgMQ,&contDEMOMesg,10); + osSetEventMesg(5,&contDEMOMesgMQ,NULL); + enableControllers = TRUE; + disable_all_rumble = 0; + pOVar2 = &OSContPad_80064f30; + ptr_to_tlb_ramrom_record = 0; + pOVar3 = pOVar2; + do { + *(undefined4 *)(pOVar2 + 0x50) = 0; + *(undefined4 *)&pOVar2[0x50].errno = 0; + *(undefined4 *)&pOVar2[0x51].stick_x = 0; + *(undefined4 *)(pOVar2 + 0x52) = 0; + *(undefined4 *)(pOVar2 + 0x54) = 0xffffffff; + pOVar1 = pOVar3 + 0x54; + pOVar2 = (OSContPad *)&pOVar2[0x54].errno; + pOVar3[3].errno = '\0'; + pOVar3[3].stick_y = '\0'; + pOVar3[3].stick_x = '\0'; + pOVar3[3].button = 0; + pOVar3[2].errno = '\0'; + pOVar3[2].stick_y = '\0'; + pOVar3[2].stick_x = '\0'; + pOVar3[2].button = 0; + pOVar3[1].errno = '\0'; + pOVar3[1].stick_y = '\0'; + pOVar3[1].stick_x = '\0'; + pOVar3[1].button = 0; + pOVar3->button = 0; + pOVar3->stick_x = '\0'; + pOVar3->stick_y = '\0'; + pOVar3->errno = '\0'; + pOVar3 = (OSContPad *)&pOVar1->errno; + } while ((OSContPad *)&pOVar1->errno != (OSContPad *)&contDEMOMesg); + return; } @@ -7716,16 +7699,16 @@ void something_with_joy_c_debug(void) void test_controller_presence(void) { - OSMesg pvStack4; - - if (enableControllers != FALSE) { - osSendMesg(&cont1MesgMQ,&pvStack4,0); - osRecvMesg(&cont2MesgMQ,&pvStack4,1); - controller_check_for_rumble_maybe(); - osSendMesg(&cont3MesgMQ,&pvStack4,0); - osRecvMesg(&cont4MesgMQ,&pvStack4,1); - } - return; + OSMesg pvStack4; + + if (enableControllers != FALSE) { + osSendMesg(&cont1MesgMQ,&pvStack4,0); + osRecvMesg(&cont2MesgMQ,&pvStack4,1); + controller_check_for_rumble_maybe(); + osSendMesg(&cont3MesgMQ,&pvStack4,0); + osRecvMesg(&cont4MesgMQ,&pvStack4,1); + } + return; } @@ -7733,7 +7716,7 @@ void test_controller_presence(void) s32 osPfsChecker(OSPfs *param_1) { - return 3; + return 3; } @@ -7744,28 +7727,29 @@ s32 osPfsChecker(OSPfs *param_1) void controller_7000B734(uint param_1) { - s32 sVar1; - int iVar2; - int *piVar3; - - piVar3 = &controller_1_rumble_inserted + param_1; - if (((-1 < *piVar3) && (((&player1_controllerstatus)[param_1 * 2] & 4) != 0)) && - (((&DAT_800653ea)[param_1 * 4] & 1) != 0)) { - sVar1 = osPfsInit(&contDEMOMesgMQ,(OSPfs *)(&player1_controller_packet + param_1 * 0x68),param_1 - ); - if ((sVar1 == 10) || (sVar1 == 0xb)) { - iVar2 = controller_7000CD38(&contDEMOMesgMQ, - (undefined4 *) - (OSPfs *)(&player1_controller_packet + param_1 * 0x68),param_1); - if (iVar2 == 0) { - *piVar3 = 1; - } - else { - *piVar3 = -1; - } + s32 sVar1; + int iVar2; + int *piVar3; + + piVar3 = &controller_1_rumble_inserted + param_1; + if (((-1 < *piVar3) && (((&player1_controllerstatus)[param_1 * 2] & 4) != 0)) && + (((&DAT_800653ea)[param_1 * 4] & 1) != 0)) { + sVar1 = osPfsInit(&contDEMOMesgMQ,(OSPfs *)(&player1_controller_packet + param_1 * 0x68), + param_1); + if ((sVar1 == 10) || (sVar1 == 0xb)) { + iVar2 = controller_7000CD38(&contDEMOMesgMQ, + (undefined4 *) + (OSPfs *)(&player1_controller_packet + param_1 * 0x68), + param_1); + if (iVar2 == 0) { + *piVar3 = 1; + } + else { + *piVar3 = -1; + } + } } - } - return; + return; } @@ -7776,86 +7760,86 @@ void controller_7000B734(uint param_1) void controller_check_for_rumble_maybe(void) { - ulonglong uVar1; - byte bVar4; - int iVar2; - uint uVar3; - - if (dword_8002692C == 0) { - bVar4 = 0xf; - osContStartQuery(&contDEMOMesgMQ); - osRecvMesg(&contDEMOMesgMQ,NULL,1); - osContGetQuery((OSContStatus *)&player1_controllerstatus); - if ((DAT_800653eb & 8) != 0) { - bVar4 = 0xe; - } - if ((DAT_800653ef & 8) != 0) { - bVar4 -= 2; - } - if ((DAT_800653f3 & 8) != 0) { - bVar4 -= 4; - } - num_controller_plugged_in_flags = bVar4; - if ((DAT_800653f7 & 8) != 0) { - num_controller_plugged_in_flags = bVar4 - 8; - } - } - else { - dword_8002692C = 0; - osContInit(&contDEMOMesgMQ,&num_controller_plugged_in_flags, - (OSContStatus *)&player1_controllerstatus); - dword_8002691C = 1; - } - iVar2 = 1; - while ((int)(char)iVar2 < 4) { - iVar2 = (int)(char)iVar2 + 1; - } - uVar3 = 0; - do { - iVar2 = 1 << (uVar3 & 0x1f); - uVar1 = SEXT48(iVar2); - bVar4 = (byte)iVar2; - if (((((ulonglong)num_controller_plugged_in_flags & uVar1) == 0) || - (((&player1_controllerstatus)[uVar3 * 2] & 3) == 0)) || ((&DAT_800653eb)[uVar3 * 4] != '\0') - ) { - if (((ulonglong)num_controller_plugged_in_flags_0 & uVar1) != 0) { - num_controller_plugged_in_flags_0 = num_controller_plugged_in_flags_0 ^ bVar4; - (&controller_1_rumble_inserted)[uVar3] = 0; - } + ulonglong uVar1; + byte bVar4; + int iVar2; + uint uVar3; + + if (dword_8002692C == 0) { + bVar4 = 0xf; + osContStartQuery(&contDEMOMesgMQ); + osRecvMesg(&contDEMOMesgMQ,NULL,1); + osContGetQuery((OSContStatus *)&player1_controllerstatus); + if ((DAT_800653eb & 8) != 0) { + bVar4 = 0xe; + } + if ((DAT_800653ef & 8) != 0) { + bVar4 -= 2; + } + if ((DAT_800653f3 & 8) != 0) { + bVar4 -= 4; + } + num_controller_plugged_in_flags = bVar4; + if ((DAT_800653f7 & 8) != 0) { + num_controller_plugged_in_flags = bVar4 - 8; + } } else { - if ((((ulonglong)(num_controller_plugged_in_flags_0 == 0) & uVar1) != 0) || - ((int)(&controller_1_rumble_inserted)[uVar3] < 1)) { - controller_7000B734(uVar3); - } - num_controller_plugged_in_flags_0 |= bVar4; + dword_8002692C = 0; + osContInit(&contDEMOMesgMQ,&num_controller_plugged_in_flags, + (OSContStatus *)&player1_controllerstatus); + dword_8002691C = 1; } - uVar3 = (int)((uVar3 + 1) * 0x1000000) >> 0x18; - } while ((int)uVar3 < 4); - return; + iVar2 = 1; + while ((int)(char)iVar2 < 4) { + iVar2 = (int)(char)iVar2 + 1; + } + uVar3 = 0; + do { + iVar2 = 1 << (uVar3 & 0x1f); + uVar1 = SEXT48(iVar2); + bVar4 = (byte)iVar2; + if ((((num_controller_plugged_in_flags & uVar1) == 0) || + (((&player1_controllerstatus)[uVar3 * 2] & 3) == 0)) || + ((&DAT_800653eb)[uVar3 * 4] != '\0')) { + if ((num_controller_plugged_in_flags_0 & uVar1) != 0) { + num_controller_plugged_in_flags_0 = num_controller_plugged_in_flags_0 ^ bVar4; + (&controller_1_rumble_inserted)[uVar3] = 0; + } + } + else { + if (((num_controller_plugged_in_flags_0 == 0 & uVar1) != 0) || + ((int)(&controller_1_rumble_inserted)[uVar3] < 1)) { + controller_7000B734(uVar3); + } + num_controller_plugged_in_flags_0 |= bVar4; + } + uVar3 = (int)((uVar3 + 1) * 0x1000000) >> 0x18; + } while ((int)uVar3 < 4); + return; } -undefined get_attached_controller_count(void) +u64 get_attached_controller_count(void) { - if (-1 < *(int *)(ptr_current_point_in_controller_input_index + 0x1f8)) { - return (char)*(int *)(ptr_current_point_in_controller_input_index + 0x1f8); - } - if ((num_controller_plugged_in_flags & 1) == 0) { - return 0; - } - if ((num_controller_plugged_in_flags & 2) == 0) { - return 1; - } - if ((num_controller_plugged_in_flags & 4) == 0) { - return 2; - } - if ((num_controller_plugged_in_flags & 8) == 0) { - return 3; - } - return 4; + if (-1 < *(int *)(ptr_current_point_in_controller_input_index + 0x1f8)) { + return (longlong)(int)(char)*(int *)(ptr_current_point_in_controller_input_index + 0x1f8); + } + if ((num_controller_plugged_in_flags & 1) == 0) { + return 0; + } + if ((num_controller_plugged_in_flags & 2) == 0) { + return 1; + } + if ((num_controller_plugged_in_flags & 4) == 0) { + return 2; + } + if ((num_controller_plugged_in_flags & 8) == 0) { + return 3; + } + return 4; } @@ -7863,7 +7847,7 @@ undefined get_attached_controller_count(void) ulonglong get_num_controllers_plugged_in(void) { - return (ulonglong)num_controller_plugged_in_flags; + return (ulonglong)num_controller_plugged_in_flags; } @@ -7871,57 +7855,57 @@ ulonglong get_num_controllers_plugged_in(void) void controller_rumble_related(void) { - int iVar1; - int *piVar2; - int *piVar3; - int iVar4; - int iVar5; - int *piVar6; - - piVar6 = &controller_1_rumble_pulse; - piVar3 = &controller_1_rumble_state; - piVar2 = &controller_1_rumble_duration; - iVar4 = 0; - iVar5 = 0; - do { - if (*piVar3 != *piVar6) { - if (*piVar6 == 1) { - iVar1 = controller_7000CAAC((int)(&player1_controller_packet + iVar4 * 0x68)); - if (iVar1 == 0) { - *piVar3 = 1; + int iVar1; + int *rumble_duration; + int *rumble_state; + int iVar2; + int iVar3; + int *rumble_pulse; + + rumble_pulse = &controller_1_rumble_pulse; + rumble_state = &controller_1_rumble_state; + rumble_duration = &controller_1_rumble_duration; + iVar2 = 0; + iVar3 = 0; + do { + if (*rumble_state != *rumble_pulse) { + if (*rumble_pulse == 1) { + iVar1 = controller_7000CAAC((int)(&player1_controller_packet + iVar2 * 0x68)); + if (iVar1 == 0) { + *rumble_state = 1; + } + else { + *(undefined4 *)((int)&controller_1_rumble_inserted + iVar3) = 0; + } + } + else { + iVar1 = send_rumble_off_to_PIF((int)(&player1_controller_packet + iVar2 * 0x68)); + if (iVar1 == 0) { + *rumble_state = 0; + } + else { + *(undefined4 *)((int)&controller_1_rumble_inserted + iVar3) = 0; + } + } + } + iVar2 += 1; + iVar3 += 4; + rumble_state = rumble_state + 1; + if (*rumble_duration < 1) { + *rumble_duration = 0; } else { - *(undefined4 *)((int)&controller_1_rumble_inserted + iVar5) = 0; + iVar1 = *rumble_duration + -1; + *rumble_duration = iVar1; + if (iVar1 < 1) { + *rumble_duration = 0; + *rumble_pulse = 0; + } } - } - else { - iVar1 = send_rumble_off_to_PIF((int)(&player1_controller_packet + iVar4 * 0x68)); - if (iVar1 == 0) { - *piVar3 = 0; - } - else { - *(undefined4 *)((int)&controller_1_rumble_inserted + iVar5) = 0; - } - } - } - iVar4 += 1; - iVar5 += 4; - piVar3 = piVar3 + 1; - if (*piVar2 < 1) { - *piVar2 = 0; - } - else { - iVar1 = *piVar2 + -1; - *piVar2 = iVar1; - if (iVar1 < 1) { - *piVar2 = 0; - *piVar6 = 0; - } - } - piVar6 = piVar6 + 1; - piVar2 = piVar2 + 1; - } while (iVar4 != 4); - return; + rumble_pulse = rumble_pulse + 1; + rumble_duration = rumble_duration + 1; + } while (iVar2 != 4); + return; } @@ -7929,9 +7913,9 @@ void controller_rumble_related(void) void set_disable_all_rumble_and_something(undefined4 param_1,undefined4 param_2) { - disable_all_rumble = param_1; - dword_CODE_bss_80065324 = param_2; - return; + disable_all_rumble = param_1; + dword_CODE_bss_80065324 = param_2; + return; } @@ -7939,8 +7923,8 @@ void set_disable_all_rumble_and_something(undefined4 param_1,undefined4 param_2) void set_ptr_tlb_ramrom_record(undefined4 param_1) { - ptr_to_tlb_ramrom_record = param_1; - return; + ptr_to_tlb_ramrom_record = param_1; + return; } @@ -7948,53 +7932,53 @@ void set_ptr_tlb_ramrom_record(undefined4 param_1) void probably_ramrom_related(int param_1) { - int iVar1; - int iVar2; - int iVar3; - int iVar4; - - iVar1 = 0; - *(undefined4 *)(param_1 + 0x1e4) = *(undefined4 *)(param_1 + 0x1e0); - *(undefined4 *)(param_1 + 0x1e0) = *(undefined4 *)(param_1 + 0x1e8); - iVar4 = 0; - while( true ) { - iVar4 = param_1 + iVar4; - *(undefined2 *)(iVar4 + 0x1f0) = 0; - iVar3 = *(int *)(param_1 + 0x1e4) + 1; - if (*(int *)(param_1 + 0x1e4) != *(int *)(param_1 + 0x1e0)) { - if (false) { - trap(0x1c00); - } - if ((false) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - while( true ) { - iVar2 = iVar3 % 0x14; - if (false) { - trap(0x1c00); + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar1 = 0; + *(undefined4 *)(param_1 + 0x1e4) = *(undefined4 *)(param_1 + 0x1e0); + *(undefined4 *)(param_1 + 0x1e0) = *(undefined4 *)(param_1 + 0x1e8); + iVar4 = 0; + while( true ) { + iVar4 = param_1 + iVar4; + *(undefined2 *)(iVar4 + 0x1f0) = 0; + iVar3 = *(int *)(param_1 + 0x1e4) + 1; + if (*(int *)(param_1 + 0x1e4) != *(int *)(param_1 + 0x1e0)) { + if (false) { + trap(0x1c00); + } + if ((false) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + while( true ) { + iVar2 = iVar3 % 0x14; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 + 0x13 == -0x80000000)) { + trap(0x1800); + } + *(ushort *)(iVar4 + 0x1f0) = + *(ushort *)(iVar4 + 0x1f0) | + *(ushort *)(param_1 + iVar2 * 0x18 + iVar1 * 6) & + ~*(ushort *)(param_1 + ((iVar2 + 0x13) % 0x14) * 0x18 + iVar1 * 6); + iVar3 = iVar2 + 1; + if (iVar2 == *(int *)(param_1 + 0x1e0)) break; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + } } - if ((false) && (iVar2 + 0x13 == -0x80000000)) { - trap(0x1800); - } - *(ushort *)(iVar4 + 0x1f0) = - *(ushort *)(iVar4 + 0x1f0) | - *(ushort *)(param_1 + iVar2 * 0x18 + iVar1 * 6) & - ~*(ushort *)(param_1 + ((iVar2 + 0x13) % 0x14) * 0x18 + iVar1 * 6); - iVar3 = iVar2 + 1; - if (iVar2 == *(int *)(param_1 + 0x1e0)) break; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - } + iVar1 = (int)(char)((char)iVar1 + '\x01'); + if (3 < iVar1) break; + iVar4 = iVar1 << 1; } - iVar1 = (int)(char)((char)iVar1 + '\x01'); - if (3 < iVar1) break; - iVar4 = iVar1 << 1; - } - return; + return; } @@ -8002,15 +7986,15 @@ void probably_ramrom_related(int param_1) void redirect_to_ramrom_replay_and_record_handlers_if_set(void) { - if (disable_all_rumble != NULL) { - DAT_80065314 = (*disable_all_rumble)(&DAT_8006512c,DAT_8006530c); - probably_ramrom_related((int)&DAT_8006512c); - } - probably_ramrom_related((int)&OSContPad_80064f30); - if (ptr_to_tlb_ramrom_record != NULL) { - (*ptr_to_tlb_ramrom_record)(&OSContPad_80064f30,DAT_80065114,DAT_80065110); - } - return; + if (disable_all_rumble != NULL) { + DAT_80065314 = (*disable_all_rumble)(&DAT_8006512c,DAT_8006530c); + probably_ramrom_related((int)&DAT_8006512c); + } + probably_ramrom_related((int)&OSContPad_80064f30); + if (ptr_to_tlb_ramrom_record != NULL) { + (*ptr_to_tlb_ramrom_record)(&OSContPad_80064f30,DAT_80065114,DAT_80065110); + } + return; } @@ -8018,151 +8002,152 @@ void redirect_to_ramrom_replay_and_record_handlers_if_set(void) longlong controllerSchedulerRelated(void) { - s32 sVar2; - longlong lVar1; - int iVar3; - int *piVar4; - int iVar5; - int *piVar6; - int *piVar7; - int *piVar8; - OSMesg pvStack4; - - sVar2 = osRecvMesg(&cont1MesgMQ,&pvStack4,0); - if (sVar2 == 0) { - if (dword_800268C8 != 0) { - osRecvMesg(&contDEMOMesgMQ,&pvStack4,1); - dword_800268C8 = 0; - } - sVar2 = osSendMesg(&cont2MesgMQ,&pvStack4,0); - lVar1 = (longlong)sVar2; - dword_800268CC += 1; - } - else { - sVar2 = osRecvMesg(&cont3MesgMQ,&pvStack4,0); - lVar1 = (longlong)sVar2; - if (lVar1 == 0) { - osContStartReadData(&contDEMOMesgMQ); - dword_800268C8 = 1; - sVar2 = osSendMesg(&cont4MesgMQ,&pvStack4,0); - lVar1 = (longlong)sVar2; - dword_800268CC += -1; + s32 sVar2; + longlong lVar1; + int iVar3; + int *piVar4; + int iVar5; + int *piVar6; + int *piVar7; + int *piVar8; + OSMesg pvStack4; + + sVar2 = osRecvMesg(&cont1MesgMQ,&pvStack4,0); + if (sVar2 == 0) { + if (dword_800268C8 != 0) { + osRecvMesg(&contDEMOMesgMQ,&pvStack4,1); + dword_800268C8 = 0; + } + sVar2 = osSendMesg(&cont2MesgMQ,&pvStack4,0); + lVar1 = (longlong)sVar2; + dword_800268CC += 1; } else { - if ((dword_800268CC == 0) && (dword_8002691C != 0)) { - sVar2 = osRecvMesg(&contDEMOMesgMQ,&pvStack4,0); + sVar2 = osRecvMesg(&cont3MesgMQ,&pvStack4,0); lVar1 = (longlong)sVar2; if (lVar1 == 0) { - dword_800268C8 = 0; - iVar5 = (DAT_80065118 + 1) % 0x14; - iVar3 = DAT_80065118; - if (iVar5 != DAT_80065114) { - iVar3 = iVar5; - } - osContGetReadData(&OSContPad_80064f30 + iVar3 * 4); - DAT_8006511c = (iVar3 + 0x13) % 0x14; - dword_80026920 += 1; - DAT_80065118 = iVar3; - if (dword_80026920 % 0x78 == 0) { - DAT_80065118 = iVar3; - controller_check_for_rumble_maybe(); - } - iVar5 = 0; - do { - if ((((&OSContPad_80064f30)[iVar5 + DAT_80065118 * 4].errno == '\0') && - ((&OSContPad_80064f30)[iVar5 + DAT_8006511c * 4].errno != '\0')) || - (((&OSContPad_80064f30)[iVar5 + DAT_80065118 * 4].errno != '\0' && - ((&OSContPad_80064f30)[iVar5 + DAT_8006511c * 4].errno == '\0')))) { - controller_check_for_rumble_maybe(); - break; - } - iVar5 = (iVar5 + 1) * 0x1000000 >> 0x18; - } while (iVar5 < 4); - controller_rumble_related(); - sVar2 = osContStartReadData(&contDEMOMesgMQ); - lVar1 = (longlong)sVar2; - dword_800268C8 = 1; - dword_80026970 += 1; - if (0x3b < dword_80026970) { - piVar4 = &pl1_controller_failure_pressed; - piVar7 = &pl1_controller_failure_held; - piVar6 = &pl1_controller_failure_ud; - piVar8 = &pl1_controller_failure_lr; - do { - if (*piVar8 == 0) { - if (*piVar6 != 0) { - *piVar8 = 0; - goto LAB_7000c074; - } - if (*piVar7 != 0) { - *piVar8 = 0; - goto LAB_7000c074; - } - if (*piVar4 != 0) { - *piVar8 = 0; - goto LAB_7000c074; - } - iVar5 = piVar8[1]; - } - else { - *piVar8 = 0; -LAB_7000c074: - *piVar6 = 0; - *piVar7 = 0; - *piVar4 = 0; - iVar5 = piVar8[1]; - } - lVar1 = (longlong)iVar5; - if (lVar1 == 0) { - if (piVar6[1] != 0) { - piVar8[1] = 0; - goto LAB_7000c0b4; - } - if (piVar7[1] != 0) { - piVar8[1] = 0; - goto LAB_7000c0b4; - } - if (piVar4[1] != 0) { - piVar8[1] = 0; - goto LAB_7000c0b4; - } - } - else { - piVar8[1] = 0; -LAB_7000c0b4: - piVar6[1] = 0; - piVar7[1] = 0; - piVar4[1] = 0; - } - piVar4 = piVar4 + 2; - piVar8 = piVar8 + 2; - piVar6 = piVar6 + 2; - piVar7 = piVar7 + 2; - } while (piVar4 != &dword_80026970); - dword_80026970 = 0; - } + osContStartReadData(&contDEMOMesgMQ); + dword_800268C8 = 1; + sVar2 = osSendMesg(&cont4MesgMQ,&pvStack4,0); + lVar1 = (longlong)sVar2; + dword_800268CC += -1; + } + else { + if ((dword_800268CC == 0) && (dword_8002691C != 0)) { + sVar2 = osRecvMesg(&contDEMOMesgMQ,&pvStack4,0); + lVar1 = (longlong)sVar2; + if (lVar1 == 0) { + dword_800268C8 = 0; + iVar5 = (DAT_80065118 + 1) % 0x14; + iVar3 = DAT_80065118; + if (iVar5 != DAT_80065114) { + iVar3 = iVar5; + } + osContGetReadData(&OSContPad_80064f30 + iVar3 * 4); + DAT_8006511c = (iVar3 + 0x13) % 0x14; + dword_80026920 += 1; + DAT_80065118 = iVar3; + if (dword_80026920 % 0x78 == 0) { + controller_check_for_rumble_maybe(); + } + iVar5 = 0; + do { + if ((((&OSContPad_80064f30)[iVar5 + DAT_80065118 * 4].errno == '\0') && + ((&OSContPad_80064f30)[iVar5 + DAT_8006511c * 4].errno != '\0')) || + (((&OSContPad_80064f30)[iVar5 + DAT_80065118 * 4].errno != '\0' && + ((&OSContPad_80064f30)[iVar5 + DAT_8006511c * 4].errno == '\0')))) { + controller_check_for_rumble_maybe(); + break; + } + iVar5 = (iVar5 + 1) * 0x1000000 >> 0x18; + } while (iVar5 < 4); + controller_rumble_related(); + sVar2 = osContStartReadData(&contDEMOMesgMQ); + lVar1 = (longlong)sVar2; + dword_800268C8 = 1; + dword_80026970 += 1; + if (0x3b < dword_80026970) { + piVar4 = &pl1_controller_failure_pressed; + piVar7 = &pl1_controller_failure_held; + piVar6 = &pl1_controller_failure_ud; + piVar8 = &pl1_controller_failure_lr; + do { + if (*piVar8 == 0) { + if (*piVar6 != 0) { + *piVar8 = 0; + goto LAB_7000c074; + } + if (*piVar7 != 0) { + *piVar8 = 0; + goto LAB_7000c074; + } + if (*piVar4 != 0) { + *piVar8 = 0; + goto LAB_7000c074; + } + iVar5 = piVar8[1]; + } + else { + *piVar8 = 0; +LAB_7000c074: + *piVar6 = 0; + *piVar7 = 0; + *piVar4 = 0; + iVar5 = piVar8[1]; + } + lVar1 = (longlong)iVar5; + if (lVar1 == 0) { + if (piVar6[1] != 0) { + piVar8[1] = 0; + goto LAB_7000c0b4; + } + if (piVar7[1] != 0) { + piVar8[1] = 0; + goto LAB_7000c0b4; + } + if (piVar4[1] != 0) { + piVar8[1] = 0; + goto LAB_7000c0b4; + } + } + else { + piVar8[1] = 0; +LAB_7000c0b4: + piVar6[1] = 0; + piVar7[1] = 0; + piVar4[1] = 0; + } + piVar4 = piVar4 + 2; + piVar8 = piVar8 + 2; + piVar6 = piVar6 + 2; + piVar7 = piVar7 + 2; + } while (piVar4 != &dword_80026970); + dword_80026970 = 0; + } + } + } } - } } - } - return lVar1; + return lVar1; } -undefined get_cur_controller_horz_stick_pos(char param_1) +s32 get_cur_controller_horz_stick_pos(char param_1) { - uint uVar1; - - uVar1 = SEXT14(param_1); - if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && - (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { - (&pl1_controller_failure_lr)[uVar1] = (&pl1_controller_failure_lr)[uVar1] + 1; - return 0; - } - return ptr_current_point_in_controller_input_index - [uVar1 * 6 + *(int *)(ptr_current_point_in_controller_input_index + 0x1e0) * 0x18 + 2]; + uint uVar1; + + uVar1 = SEXT14(param_1); + if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && + (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { + (&pl1_controller_failure_lr)[uVar1] = (&pl1_controller_failure_lr)[uVar1] + 1; + return 0; + } + return (s32)(int)(char)ptr_current_point_in_controller_input_index + [uVar1 * 6 + + *(int *)(ptr_current_point_in_controller_input_index + 0x1e0) * 0x18 + 2 + ]; } @@ -8170,33 +8155,35 @@ undefined get_cur_controller_horz_stick_pos(char param_1) undefined controller_7000C174(char param_1) { - uint uVar1; - - uVar1 = SEXT14(param_1); - if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && - (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { - (&pl1_controller_failure_lr)[uVar1] = (&pl1_controller_failure_lr)[uVar1] + 1; - return 0; - } - return ptr_current_point_in_controller_input_index - [uVar1 * 6 + *(int *)(ptr_current_point_in_controller_input_index + 0x1e4) * 0x18 + 2]; + uint uVar1; + + uVar1 = SEXT14(param_1); + if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && + (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { + (&pl1_controller_failure_lr)[uVar1] = (&pl1_controller_failure_lr)[uVar1] + 1; + return 0; + } + return ptr_current_point_in_controller_input_index + [uVar1 * 6 + *(int *)(ptr_current_point_in_controller_input_index + 0x1e4) * 0x18 + 2]; } -undefined get_cur_controller_vert_stick_pos(char param_1) +s32 get_cur_controller_vert_stick_pos(char param_1) { - uint uVar1; - - uVar1 = SEXT14(param_1); - if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && - (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { - (&pl1_controller_failure_ud)[uVar1] = (&pl1_controller_failure_ud)[uVar1] + 1; - return 0; - } - return ptr_current_point_in_controller_input_index - [uVar1 * 6 + *(int *)(ptr_current_point_in_controller_input_index + 0x1e0) * 0x18 + 3]; + uint uVar1; + + uVar1 = SEXT14(param_1); + if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && + (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { + (&pl1_controller_failure_ud)[uVar1] = (&pl1_controller_failure_ud)[uVar1] + 1; + return 0; + } + return (s32)(int)(char)ptr_current_point_in_controller_input_index + [uVar1 * 6 + + *(int *)(ptr_current_point_in_controller_input_index + 0x1e0) * 0x18 + 3 + ]; } @@ -8204,53 +8191,53 @@ undefined get_cur_controller_vert_stick_pos(char param_1) undefined controller_7000C284(char param_1) { - uint uVar1; - - uVar1 = SEXT14(param_1); - if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && - (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { - (&pl1_controller_failure_ud)[uVar1] = (&pl1_controller_failure_ud)[uVar1] + 1; - return 0; - } - return ptr_current_point_in_controller_input_index - [uVar1 * 6 + *(int *)(ptr_current_point_in_controller_input_index + 0x1e4) * 0x18 + 3]; + uint uVar1; + + uVar1 = SEXT14(param_1); + if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && + (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { + (&pl1_controller_failure_ud)[uVar1] = (&pl1_controller_failure_ud)[uVar1] + 1; + return 0; + } + return ptr_current_point_in_controller_input_index + [uVar1 * 6 + *(int *)(ptr_current_point_in_controller_input_index + 0x1e4) * 0x18 + 3]; } -ulonglong get_controller_buttons_held(char param_1,ulonglong param_2) +u32 get_controller_buttons_held(char param_1,controller_buttons param_2) { - uint uVar1; - - uVar1 = SEXT14(param_1); - if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && - (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { - (&pl1_controller_failure_held)[uVar1] = (&pl1_controller_failure_held)[uVar1] + 1; - return 0; - } - return (ulonglong) - *(ushort *) - (ptr_current_point_in_controller_input_index + - uVar1 * 6 + *(int *)(ptr_current_point_in_controller_input_index + 0x1e0) * 0x18) & - param_2 & 0xffff; + uint uVar1; + + uVar1 = SEXT14(param_1); + if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && + (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { + (&pl1_controller_failure_held)[uVar1] = (&pl1_controller_failure_held)[uVar1] + 1; + return 0; + } + return (u32)((uint)*(ushort *) + (ptr_current_point_in_controller_input_index + + uVar1 * 6 + + *(int *)(ptr_current_point_in_controller_input_index + 0x1e0) * 0x18) & + (int)(short)param_2 & 0xffffU); } -ulonglong get_controller_buttons_pressed(char param_1,ulonglong param_2) +u32 get_controller_buttons_pressed(char param_1,controller_buttons param_2) { - uint uVar1; - - uVar1 = SEXT14(param_1); - if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && - (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { - (&pl1_controller_failure_pressed)[uVar1] = (&pl1_controller_failure_pressed)[uVar1] + 1; - return 0; - } - return (ulonglong)*(ushort *)(ptr_current_point_in_controller_input_index + uVar1 * 2 + 0x1f0) & - param_2 & 0xffff; + uint uVar1; + + uVar1 = SEXT14(param_1); + if ((*(int *)(ptr_current_point_in_controller_input_index + 0x1f8) < 0) && + (((int)(uint)num_controller_plugged_in_flags >> (uVar1 & 0x1f) & 1U) == 0)) { + (&pl1_controller_failure_pressed)[uVar1] = (&pl1_controller_failure_pressed)[uVar1] + 1; + return 0; + } + return (u32)((uint)*(ushort *)(ptr_current_point_in_controller_input_index + uVar1 * 2 + 0x1f0) + & (int)(short)param_2 & 0xffffU); } @@ -8258,17 +8245,17 @@ ulonglong get_controller_buttons_pressed(char param_1,ulonglong param_2) void proc_7000C430(char *param_1,uint param_2) { - uint uVar1; - uint uVar2; - - uVar2 = 0xf; - do { - uVar1 = uVar2 & 0x1f; - uVar2 -= 1; - *param_1 = (((int)(param_2 & 0xffff) >> uVar1 & 1U) != 0) * '\x11' + ' '; - param_1 = param_1 + 1; - } while (-1 < (int)uVar2); - return; + uint uVar1; + uint uVar2; + + uVar2 = 0xf; + do { + uVar1 = uVar2 & 0x1f; + uVar2 -= 1; + *param_1 = (((int)(param_2 & 0xffff) >> uVar1 & 1U) != 0) * '\x11' + ' '; + param_1 = param_1 + 1; + } while (-1 < (int)uVar2); + return; } @@ -8276,19 +8263,18 @@ void proc_7000C430(char *param_1,uint param_2) void proc_7000C470(void) { - longlong lVar1; - int iVar2; - int iVar3; - - iVar3 = 0; - lVar1 = get_attached_controller_count(); - if (0 < lVar1) { - do { - iVar3 += 1; - iVar2 = get_attached_controller_count(); - } while (iVar3 < iVar2); - } - return; + u64 uVar1; + longlong lVar2; + + lVar2 = 0; + uVar1 = get_attached_controller_count(); + if (0 < (longlong)uVar1) { + do { + lVar2 = (longlong)((int)lVar2 + 1); + uVar1 = get_attached_controller_count(); + } while (lVar2 < (longlong)uVar1); + } + return; } @@ -8296,17 +8282,18 @@ void proc_7000C470(void) int get_controller_3dstick_L_R(char param_1,int param_2,int param_3) { - int iVar1; - - iVar1 = get_cur_controller_horz_stick_pos(param_1); - iVar1 += 0x3c; - if (0x78 < iVar1) { - iVar1 = 0x78; - } - if (iVar1 < 0) { - iVar1 = 0; - } - return (iVar1 * (param_3 - param_2)) / 0x78 + param_2; + s32 sVar1; + int iVar2; + + sVar1 = get_cur_controller_horz_stick_pos(param_1); + iVar2 = sVar1 + 0x3c; + if (0x78 < iVar2) { + iVar2 = 0x78; + } + if (iVar2 < 0) { + iVar2 = 0; + } + return (iVar2 * (param_3 - param_2)) / 0x78 + param_2; } @@ -8314,17 +8301,18 @@ int get_controller_3dstick_L_R(char param_1,int param_2,int param_3) int get_controller_3dstick_U_D(char param_1,int param_2,int param_3) { - int iVar1; - - iVar1 = get_cur_controller_vert_stick_pos(param_1); - iVar1 += 0x3c; - if (0x78 < iVar1) { - iVar1 = 0x78; - } - if (iVar1 < 0) { - iVar1 = 0; - } - return (iVar1 * (param_3 - param_2)) / 0x78 + param_2; + s32 sVar1; + int iVar2; + + sVar1 = get_cur_controller_vert_stick_pos(param_1); + iVar2 = sVar1 + 0x3c; + if (0x78 < iVar2) { + iVar2 = 0x78; + } + if (iVar2 < 0) { + iVar2 = 0; + } + return (iVar2 * (param_3 - param_2)) / 0x78 + param_2; } @@ -8332,19 +8320,20 @@ int get_controller_3dstick_U_D(char param_1,int param_2,int param_3) float controller_7000C59C(char param_1,float param_2,float param_3) { - int iVar1; - float in_a1_lo; - float in_a2_lo; - - iVar1 = get_cur_controller_horz_stick_pos(param_1); - iVar1 += 0x3c; - if (0x78 < iVar1) { - iVar1 = 0x78; - } - if (iVar1 < 0) { - iVar1 = 0; - } - return ((float)iVar1 / 120.00000000) * (in_a2_lo - in_a1_lo) + in_a1_lo; + s32 sVar1; + int iVar2; + float in_a1_lo; + float in_a2_lo; + + sVar1 = get_cur_controller_horz_stick_pos(param_1); + iVar2 = sVar1 + 0x3c; + if (0x78 < iVar2) { + iVar2 = 0x78; + } + if (iVar2 < 0) { + iVar2 = 0; + } + return ((float)iVar2 / 120.00000000) * (in_a2_lo - in_a1_lo) + in_a1_lo; } @@ -8352,19 +8341,20 @@ float controller_7000C59C(char param_1,float param_2,float param_3) float controller_7000C60C(char param_1,float param_2,float param_3) { - int iVar1; - float in_a1_lo; - float in_a2_lo; - - iVar1 = get_cur_controller_vert_stick_pos(param_1); - iVar1 += 0x3c; - if (0x78 < iVar1) { - iVar1 = 0x78; - } - if (iVar1 < 0) { - iVar1 = 0; - } - return ((float)iVar1 / 120.00000000) * (in_a2_lo - in_a1_lo) + in_a1_lo; + s32 sVar1; + int iVar2; + float in_a1_lo; + float in_a2_lo; + + sVar1 = get_cur_controller_vert_stick_pos(param_1); + iVar2 = sVar1 + 0x3c; + if (0x78 < iVar2) { + iVar2 = 0x78; + } + if (iVar2 < 0) { + iVar2 = 0; + } + return ((float)iVar2 / 120.00000000) * (in_a2_lo - in_a1_lo) + in_a1_lo; } @@ -8372,11 +8362,11 @@ float controller_7000C60C(char param_1,float param_2,float param_3) void controller_7000C67C(void) { - OSMesg pvStack4; - - osSendMesg(&cont1MesgMQ,&pvStack4,0); - osRecvMesg(&cont2MesgMQ,&pvStack4,1); - return; + OSMesg pvStack4; + + osSendMesg(&cont1MesgMQ,&pvStack4,0); + osRecvMesg(&cont2MesgMQ,&pvStack4,1); + return; } @@ -8384,11 +8374,11 @@ void controller_7000C67C(void) void controller_7000C6BC(void) { - OSMesg pvStack4; - - osSendMesg(&cont3MesgMQ,&pvStack4,0); - osRecvMesg(&cont4MesgMQ,&pvStack4,1); - return; + OSMesg pvStack4; + + osSendMesg(&cont3MesgMQ,&pvStack4,0); + osRecvMesg(&cont4MesgMQ,&pvStack4,1); + return; } @@ -8396,12 +8386,12 @@ void controller_7000C6BC(void) s32 save_7000C6FC(void) { - s32 sVar1; - - controller_7000C67C(); - sVar1 = osEepromProbe(&contDEMOMesgMQ); - controller_7000C6BC(); - return sVar1; + s32 sVar1; + + controller_7000C67C(); + sVar1 = osEepromProbe(&contDEMOMesgMQ); + controller_7000C6BC(); + return sVar1; } @@ -8409,12 +8399,12 @@ s32 save_7000C6FC(void) int save_7000C734(byte param_1,undefined *param_2) { - s32 sVar1; - - controller_7000C67C(); - sVar1 = osEepromRead(&contDEMOMesgMQ,param_1,param_2); - controller_7000C6BC(); - return (int)sVar1; + s32 sVar1; + + controller_7000C67C(); + sVar1 = osEepromRead(&contDEMOMesgMQ,param_1,param_2); + controller_7000C6BC(); + return (int)sVar1; } @@ -8422,12 +8412,12 @@ int save_7000C734(byte param_1,undefined *param_2) int save_7000C778(byte param_1,undefined *param_2) { - s32 sVar1; - - controller_7000C67C(); - sVar1 = osEepromWrite(&contDEMOMesgMQ,param_1,param_2); - controller_7000C6BC(); - return (int)sVar1; + s32 sVar1; + + controller_7000C67C(); + sVar1 = osEepromWrite(&contDEMOMesgMQ,param_1,param_2); + controller_7000C6BC(); + return (int)sVar1; } @@ -8435,12 +8425,12 @@ int save_7000C778(byte param_1,undefined *param_2) s32 save_7000C7BC(byte param_1,save_file *param_2,int param_3) { - s32 sVar1; - - controller_7000C67C(); - sVar1 = osEepromLongRead(&contDEMOMesgMQ,param_1,(u8 *)param_2,param_3); - controller_7000C6BC(); - return sVar1; + s32 sVar1; + + controller_7000C67C(); + sVar1 = osEepromLongRead(&contDEMOMesgMQ,param_1,(u8 *)param_2,param_3); + controller_7000C6BC(); + return sVar1; } @@ -8448,30 +8438,28 @@ s32 save_7000C7BC(byte param_1,save_file *param_2,int param_3) s32 save_7000C808(byte address,u8 *buffer,int length) { - s32 sVar1; - - controller_7000C67C(); - sVar1 = osEepromLongWrite(&contDEMOMesgMQ,address,buffer,length); - controller_7000C6BC(); - return sVar1; + s32 sVar1; + + controller_7000C67C(); + sVar1 = osEepromLongWrite(&contDEMOMesgMQ,address,buffer,length); + controller_7000C6BC(); + return sVar1; } -void controller_7000C854(int param_1,float param_2) +void controller_7000C854(int param_1,s32 param_2) { - float in_a1_lo; - - if ((disable_all_rumble == 0) && (0 < (int)(&controller_1_rumble_inserted)[param_1])) { - if ((int)(&controller_1_rumble_duration)[param_1] < (int)(in_a1_lo * 60.00000000)) { - (&controller_1_rumble_duration)[param_1] = (int)(in_a1_lo * 60.00000000); + if ((disable_all_rumble == 0) && (0 < (int)(&controller_1_rumble_inserted)[param_1])) { + if ((int)(&controller_1_rumble_duration)[param_1] < (int)((float)param_2 * 60.00000000)) { + (&controller_1_rumble_duration)[param_1] = (int)((float)param_2 * 60.00000000); + } + if ((&controller_1_rumble_state)[param_1] == 0) { + (&controller_1_rumble_pulse)[param_1] = 1; + } } - if ((&controller_1_rumble_state)[param_1] == 0) { - (&controller_1_rumble_pulse)[param_1] = 1; - } - } - return; + return; } @@ -8479,15 +8467,15 @@ void controller_7000C854(int param_1,float param_2) void reset_cont_rumble_detect(void) { - controller_1_rumble_state = 1; - controller_2_rumble_state = 1; - controller_3_rumble_state = 1; - controller_4_rumble_state = 1; - controller_1_rumble_pulse = 0; - controller_2_rumble_pulse = 0; - controller_3_rumble_pulse = 0; - controller_4_rumble_pulse = 0; - return; + controller_1_rumble_state = 1; + controller_2_rumble_state = 1; + controller_3_rumble_state = 1; + controller_4_rumble_state = 1; + controller_1_rumble_pulse = 0; + controller_2_rumble_pulse = 0; + controller_3_rumble_pulse = 0; + controller_4_rumble_pulse = 0; + return; } @@ -8495,9 +8483,9 @@ void reset_cont_rumble_detect(void) void controller_7000C930(int param_1) { - ptr_current_point_in_controller_input_index = - (undefined *)((int)&OSContPad_80064f30 + param_1 * 0x1fc); - return; + ptr_current_point_in_controller_input_index = + (undefined *)((int)&OSContPad_80064f30 + param_1 * 0x1fc); + return; } @@ -8505,7 +8493,7 @@ void controller_7000C930(int param_1) int controller_7000C954(void) { - return (int)(ptr_current_point_in_controller_input_index + 0x7ff9b0d0) / 0x1fc; + return (int)(ptr_current_point_in_controller_input_index + 0x7ff9b0d0) / 0x1fc; } @@ -8513,49 +8501,49 @@ int controller_7000C954(void) int send_rumble_off_to_PIF(int param_1) { - int iVar1; - int iVar2; - OSPifRam *pOVar3; - u32 *puVar4; - u32 *puVar5; - OSPifRam *pOVar6; - OSPifRam *pOVar7; - undefined4 uStack52; - char cStack14; - int iStack8; - - __osSiGetAccess(); - __osContLastCmd = '\x03'; - __osSiRawStartDma(1,&rumble_off_player1_packet_buffer + *(int *)(param_1 + 8) * 0x40); - osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); - __osSiRawStartDma(0,&__osPfsPifRam); - osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); - pOVar3 = &__osPfsPifRam; - iVar1 = *(int *)(param_1 + 8); - if ((iVar1 != 0) && (iVar2 = 0, pOVar3 = &__osPfsPifRam, 0 < iVar1)) { + int iVar1; + int iVar2; + OSPifRam *pOVar3; + u32 *puVar4; + u32 *puVar5; + OSPifRam *pOVar6; + OSPifRam *pOVar7; + undefined4 uStack52; + char cStack14; + int iStack8; + + __osSiGetAccess(); + __osContLastCmd = '\x03'; + __osSiRawStartDma(1,&rumble_off_player1_packet_buffer + *(int *)(param_1 + 8) * 0x40); + osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); + __osSiRawStartDma(0,&__osPfsPifRam); + osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); + pOVar3 = &__osPfsPifRam; + iVar1 = *(int *)(param_1 + 8); + if ((iVar1 != 0) && (iVar2 = 0, pOVar3 = &__osPfsPifRam, 0 < iVar1)) { + do { + iVar2 += 1; + pOVar3 = (OSPifRam *)((int)pOVar3->ramarray + 1); + } while (iVar2 < iVar1); + } + pOVar6 = pOVar3; + puVar4 = &uStack52; do { - iVar2 += 1; - pOVar3 = (OSPifRam *)((int)pOVar3->ramarray + 1); - } while (iVar2 < iVar1); - } - pOVar6 = pOVar3; - puVar4 = &uStack52; - do { - pOVar7 = (OSPifRam *)(pOVar6->ramarray + 3); - puVar5 = puVar4 + 3; - *puVar4 = pOVar6->ramarray[0]; - puVar4[1] = pOVar6->ramarray[1]; - puVar4[2] = pOVar6->ramarray[2]; - pOVar6 = pOVar7; - puVar4 = puVar5; - } while (pOVar7 != (OSPifRam *)(pOVar3->ramarray + 9)); - *puVar5 = pOVar7->ramarray[0]; - iStack8 = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; - if ((iStack8 == 0) && (cStack14 != '\0')) { - iStack8 = 4; - } - __osSiRelAccess(); - return iStack8; + pOVar7 = (OSPifRam *)(pOVar6->ramarray + 3); + puVar5 = puVar4 + 3; + *puVar4 = pOVar6->ramarray[0]; + puVar4[1] = pOVar6->ramarray[1]; + puVar4[2] = pOVar6->ramarray[2]; + pOVar6 = pOVar7; + puVar4 = puVar5; + } while (pOVar7 != (OSPifRam *)(pOVar3->ramarray + 9)); + *puVar5 = pOVar7->ramarray[0]; + iStack8 = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; + if ((iStack8 == 0) && (cStack14 != '\0')) { + iStack8 = 4; + } + __osSiRelAccess(); + return iStack8; } @@ -8563,140 +8551,147 @@ int send_rumble_off_to_PIF(int param_1) int controller_7000CAAC(int param_1) { - int iVar1; - int iVar2; - OSPifRam *pOVar3; - u32 *puVar4; - u32 *puVar5; - OSPifRam *pOVar6; - OSPifRam *pOVar7; - undefined4 uStack52; - char cStack14; - int iStack8; - - __osSiGetAccess(); - __osContLastCmd = '\x03'; - __osSiRawStartDma(1,&rumble_on_player_packet_buffers + *(int *)(param_1 + 8) * 0x40); - osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); - __osSiRawStartDma(0,&__osPfsPifRam); - osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); - pOVar3 = &__osPfsPifRam; - iVar1 = *(int *)(param_1 + 8); - if ((iVar1 != 0) && (iVar2 = 0, pOVar3 = &__osPfsPifRam, 0 < iVar1)) { + int iVar1; + int iVar2; + OSPifRam *pOVar3; + u32 *puVar4; + u32 *puVar5; + OSPifRam *pOVar6; + OSPifRam *pOVar7; + undefined4 uStack52; + char cStack14; + int iStack8; + + __osSiGetAccess(); + __osContLastCmd = '\x03'; + __osSiRawStartDma(1,&rumble_on_player_packet_buffers + *(int *)(param_1 + 8) * 0x40); + osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); + __osSiRawStartDma(0,&__osPfsPifRam); + osRecvMesg(*(OSMesgQueue **)(param_1 + 4),NULL,1); + pOVar3 = &__osPfsPifRam; + iVar1 = *(int *)(param_1 + 8); + if ((iVar1 != 0) && (iVar2 = 0, pOVar3 = &__osPfsPifRam, 0 < iVar1)) { + do { + iVar2 += 1; + pOVar3 = (OSPifRam *)((int)pOVar3->ramarray + 1); + } while (iVar2 < iVar1); + } + pOVar6 = pOVar3; + puVar4 = &uStack52; do { - iVar2 += 1; - pOVar3 = (OSPifRam *)((int)pOVar3->ramarray + 1); - } while (iVar2 < iVar1); - } - pOVar6 = pOVar3; - puVar4 = &uStack52; - do { - pOVar7 = (OSPifRam *)(pOVar6->ramarray + 3); - puVar5 = puVar4 + 3; - *puVar4 = pOVar6->ramarray[0]; - puVar4[1] = pOVar6->ramarray[1]; - puVar4[2] = pOVar6->ramarray[2]; - pOVar6 = pOVar7; - puVar4 = puVar5; - } while (pOVar7 != (OSPifRam *)(pOVar3->ramarray + 9)); - *puVar5 = pOVar7->ramarray[0]; - iStack8 = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; - if ((iStack8 == 0) && (cStack14 != -0x15)) { - iStack8 = 4; - } - __osSiRelAccess(); - return iStack8; + pOVar7 = (OSPifRam *)(pOVar6->ramarray + 3); + puVar5 = puVar4 + 3; + *puVar4 = pOVar6->ramarray[0]; + puVar4[1] = pOVar6->ramarray[1]; + puVar4[2] = pOVar6->ramarray[2]; + pOVar6 = pOVar7; + puVar4 = puVar5; + } while (pOVar7 != (OSPifRam *)(pOVar3->ramarray + 9)); + *puVar5 = pOVar7->ramarray[0]; + iStack8 = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; + if ((iStack8 == 0) && (cStack14 != -0x15)) { + iStack8 = 4; + } + __osSiRelAccess(); + return iStack8; } // WARNING: Instruction at (ram,0x7000ccb8) overlaps instruction at (ram,0x7000ccb4) // +// WARNING: Type propagation algorithm not settling void controller_7000CBDC(uint channel,uint param_2,undefined *param_3,undefined4 *param_4) { - undefined uVar1; - undefined4 *puVar2; - int iVar3; - uint uVar4; - uint uVar5; - undefined4 *puVar6; - undefined4 *puVar7; - undefined4 *puVar8; - undefined4 *puVar9; - u16 uStackX6; - undefined uStack44; - undefined uStack43; - undefined uStack42; - undefined uStack41; - undefined4 uStack12; - undefined4 uStack8; - undefined4 *puStack4; - - iVar3 = 0; - puVar2 = param_4; - do { - iVar3 += 1; - *puVar2 = 0; - puVar2 = puVar2 + 1; - } while (iVar3 < 0xf); - param_4[0xf] = 1; - uStack44 = 0xff; - uStack43 = 0x23; - uStack42 = 1; - uStack41 = 3; - uStackX6 = (u16)param_2; - puStack4 = param_4; - __osContAddressCrc(uStackX6); - puVar2 = (undefined4 *)&uStack44; - do { - uVar1 = *param_3; - puVar6 = (undefined4 *)((int)puVar2 + 1); - param_3 = param_3 + 1; - *(undefined *)((int)puVar2 + 6) = uVar1; - puVar2 = puVar6; - } while (puVar6 < &uStack12); - puVar2 = puStack4; - if ((channel != 0) && (uVar5 = 0, puVar2 = puStack4, 0 < (int)channel)) { - if ((channel & 3) == 0) goto LAB_7000ccb8; + undefined uVar1; + undefined4 *puVar2; + u8 uVar3; + undefined *puVar4; + undefined *puVar5; + int iVar6; + uint uVar7; + uint uVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + u16 uStackX6; + undefined uStack44; + undefined uStack43; + undefined uStack42; + undefined uStack41; + ushort uStack40; + undefined auStack38 [32]; + undefined uStack6; + undefined4 *puStack4; + + iVar6 = 0; + puVar2 = param_4; do { - uVar4 = uVar5; - uVar4 = uVar4 + 1; - *(undefined *)puStack4 = 0; - puStack4 = (undefined4 *)((int)puStack4 + 1); - uVar5 = uVar4; - } while ((channel & 3) != uVar4); - uVar5 = uVar4 + 5; + iVar6 += 1; + *puVar2 = 0; + puVar2 = puVar2 + 1; + } while (iVar6 < 0xf); + param_4[0xf] = 1; + uStack44 = 0xff; + uStack43 = 0x23; + uStack42 = 1; + uStack41 = 3; + uStackX6 = (u16)param_2; + puStack4 = param_4; + uVar3 = __osContAddressCrc(uStackX6); + uStack40 = (short)(char)uVar3 | uStackX6 << 5; + uStack6 = 0xff; + puVar4 = (undefined *)&uStack44; + do { + uVar1 = *param_3; + puVar5 = puVar4 + 1; + param_3 = param_3 + 1; + puVar4[6] = uVar1; + puVar4 = puVar5; + } while (puVar5 < auStack38 + 0x1a); puVar2 = puStack4; - if (uVar4 != channel) { - while( true ) { - *(undefined *)((int)puStack4 + 1) = 0; - *(undefined *)((int)puStack4 + 2) = 0; - *(undefined *)((int)puStack4 + 3) = 0; - puVar2 = puStack4 + 1; - *(undefined *)puStack4 = 0; - puStack4 = puVar2; - if (uVar5 == channel) break; + if ((channel != 0) && (uVar8 = 0, 0 < (int)channel)) { + if ((channel & 3) == 0) goto LAB_7000ccb8; + do { + uVar7 = uVar8; + uVar7 = uVar7 + 1; + *(undefined *)puStack4 = 0; + puStack4 = (undefined4 *)((int)puStack4 + 1); + uVar8 = uVar7; + } while ((channel & 3) != uVar7); + uVar8 = uVar7 + 5; + puVar2 = puStack4; + if (uVar7 != channel) { + while( true ) { + *(undefined *)((int)puStack4 + 1) = 0; + *(undefined *)((int)puStack4 + 2) = 0; + *(undefined *)((int)puStack4 + 3) = 0; + puVar2 = puStack4 + 1; + *(undefined *)puStack4 = 0; + puStack4 = puVar2; + if (uVar8 == channel) break; LAB_7000ccb8: - uVar5 += 4; - } + uVar8 += 4; + } + } } - } - puVar6 = puVar2; - puVar8 = (undefined4 *)&uStack44; - do { - puVar9 = puVar8 + 3; - puVar7 = puVar6 + 3; - *puVar6 = *puVar8; - puVar6[1] = puVar8[1]; - puVar6[2] = puVar8[2]; - puVar6 = puVar7; - puVar8 = puVar9; - } while (puVar9 != &uStack8); - *puVar7 = *puVar9; - *(undefined *)(puVar2 + 10) = 0xfe; - return; + puVar9 = puVar2; + puVar11 = &uStack44; + do { + puVar12 = puVar11 + 3; + puVar10 = puVar9 + 3; + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + puVar9[2] = puVar11[2]; + puVar9 = puVar10; + puVar11 = puVar12; + } while (puVar12 != (undefined4 *)(auStack38 + 0x1e)); + *puVar10 = *puVar12; + *(undefined *)(puVar2 + 10) = 0xfe; + return; } @@ -8704,56 +8699,56 @@ LAB_7000ccb8: int controller_7000CD38(OSMesgQueue *mq,undefined4 *param_2,uint channel) { - u8 *puVar1; - s32 sVar2; - undefined *puVar3; - undefined1 *puVar4; - u8 buffer [31]; - char cStack9; - u8 auStack8 [8]; - - *(OSMesgQueue **)(param_2 + 1) = mq; - param_2[2] = channel; - *param_2 = 0; - *(undefined *)((int)param_2 + 0x65) = 0x80; - puVar1 = buffer; - do { - puVar1 = puVar1 + 1; - *puVar1 = -0x80; - puVar1 = puVar1; - } while (puVar1 < auStack8); - sVar2 = __osContRamWrite(mq,channel,0x400,buffer,0); - if (sVar2 == 2) { + u8 *puVar1; + s32 sVar2; + undefined *puVar3; + undefined1 *puVar4; + u8 buffer [31]; + char cStack9; + u8 auStack8 [8]; + + *(OSMesgQueue **)(param_2 + 1) = mq; + param_2[2] = channel; + *param_2 = 0; + *(undefined *)((int)param_2 + 0x65) = 0x80; + puVar1 = buffer; + do { + puVar1 = puVar1 + 1; + *puVar1 = -0x80; + puVar1 = puVar1; + } while (puVar1 < auStack8); sVar2 = __osContRamWrite(mq,channel,0x400,buffer,0); - } - if ((sVar2 == 0) && (sVar2 = __osContRamRead(mq,channel,0x400,buffer), sVar2 == 0)) { - if (cStack9 == -0x80) { - puVar4 = &rumble_off_buffer; - puVar3 = &rumble_on_buffer; - do { - puVar3 = puVar3 + 4; - puVar4[1] = 1; - puVar3[1] = 0; - puVar4[2] = 1; - puVar3[2] = 0; - puVar4[3] = 1; - puVar3[3] = 0; - *puVar4 = 1; - *puVar3 = 0; - puVar4 = puVar4 + 4; - puVar3 = puVar3; - } while (puVar3 != &rumble_off_buffer); - controller_7000CBDC(channel,0x600,&rumble_off_buffer, - (undefined4 *)(&rumble_on_player_packet_buffers + channel * 0x40)); - controller_7000CBDC(channel,0x600,&rumble_on_buffer, - (undefined4 *)(&rumble_off_player1_packet_buffer + channel * 0x40)); - sVar2 = 0; + if (sVar2 == 2) { + sVar2 = __osContRamWrite(mq,channel,0x400,buffer,0); } - else { - sVar2 = 0xb; + if ((sVar2 == 0) && (sVar2 = __osContRamRead(mq,channel,0x400,buffer), sVar2 == 0)) { + if (cStack9 == -0x80) { + puVar4 = &rumble_off_buffer; + puVar3 = &rumble_on_buffer; + do { + puVar3 = puVar3 + 4; + puVar4[1] = 1; + puVar3[1] = 0; + puVar4[2] = 1; + puVar3[2] = 0; + puVar4[3] = 1; + puVar3[3] = 0; + *puVar4 = 1; + *puVar3 = 0; + puVar4 = puVar4 + 4; + puVar3 = puVar3; + } while (puVar3 != &rumble_off_buffer); + controller_7000CBDC(channel,0x600,&rumble_off_buffer, + (undefined4 *)(&rumble_on_player_packet_buffers + channel * 0x40)); + controller_7000CBDC(channel,0x600,&rumble_on_buffer, + (undefined4 *)(&rumble_off_player1_packet_buffer + channel * 0x40)); + sVar2 = 0; + } + else { + sVar2 = 0xb; + } } - } - return (int)sVar2; + return (int)sVar2; } @@ -8761,7 +8756,7 @@ int controller_7000CD38(OSMesgQueue *mq,undefined4 *param_2,uint channel) void rmon_entry(void) { - return; + return; } @@ -8769,7 +8764,7 @@ void rmon_entry(void) BOOL rmon_debug_is_final_build(void) { - return TRUE; + return TRUE; } @@ -8777,7 +8772,7 @@ BOOL rmon_debug_is_final_build(void) s32 rmon_debug_returns_neg_1(void) { - return -1; + return -1; } @@ -8785,15 +8780,15 @@ s32 rmon_debug_returns_neg_1(void) void removed_7000ceb8(void) { - return; + return; } -void removed_7000cec0(void) +void rmon_debug_stub_0(void) { - return; + return; } @@ -8801,7 +8796,7 @@ void removed_7000cec0(void) void removed_7000cec8(void) { - return; + return; } @@ -8809,7 +8804,7 @@ void removed_7000cec8(void) void removed_7000ced0(void) { - return; + return; } @@ -8817,7 +8812,7 @@ void removed_7000ced0(void) void removed_7000ced8(void) { - return; + return; } @@ -8825,7 +8820,7 @@ void removed_7000ced8(void) void removed_7000cee0(void) { - return; + return; } @@ -8833,34 +8828,34 @@ void removed_7000cee0(void) void * proutSyncPrintf(void *str,char *buf,size_t n) { - longlong lVar1; - longlong extraout_a1; - longlong lVar2; - longlong lVar3; - longlong extraout_a2; - longlong sent; - longlong lVar4; - byte buffer; - - lVar2 = (longlong)(int)n; - lVar1 = (longlong)(int)buf; - sent = 0; - if (lVar2 != 0) { - buffer = *buf; - lVar3 = lVar2; - lVar4 = lVar1; - while( true ) { - sent = (longlong)((int)sent + 1); - lVar4._4_4_ = (byte *)((int)lVar4 + 1); - lVar4 = (longlong)(int)lVar4._4_4_; - __osRdbSend((u8 *)(uint)buffer,(u32)lVar1,(u32)lVar3); - if (sent == lVar2) break; - buffer = *lVar4._4_4_; - lVar1 = extraout_a1; - lVar3 = extraout_a2; + longlong lVar1; + longlong extraout_a1; + longlong lVar2; + longlong lVar3; + longlong extraout_a2; + longlong sent; + longlong lVar4; + byte buffer; + + lVar2 = (longlong)(int)n; + lVar1 = (longlong)(int)buf; + sent = 0; + if (lVar2 != 0) { + buffer = *buf; + lVar3 = lVar2; + lVar4 = lVar1; + while( true ) { + sent = (longlong)((int)sent + 1); + lVar4._4_4_ = (byte *)((int)lVar4 + 1); + lVar4 = (longlong)(int)lVar4._4_4_; + __osRdbSend((u8 *)(uint)buffer,(u32)lVar1,(u32)lVar3); + if (sent == lVar2) break; + buffer = *lVar4._4_4_; + lVar1 = extraout_a1; + lVar3 = extraout_a2; + } } - } - return (void *)((int)&rgba + 1); + return (void *)((int)&rgba + 1); } @@ -8868,12 +8863,12 @@ void * proutSyncPrintf(void *str,char *buf,size_t n) void osSyncPrintf(char *fmt,...) { - va_list in_a1_lo; - va_list ap; - - ap = in_a1_lo; - _Printf(proutSyncPrintf,0,(byte *)fmt,(uint *)&ap); - return; + va_list in_a1_lo; + va_list ap; + + ap = in_a1_lo; + _Printf(proutSyncPrintf,0,(byte *)fmt,(uint *)&ap); + return; } @@ -8883,20 +8878,20 @@ void osSyncPrintf(char *fmt,...) s32 osPiRawStartDma(s32 direction,u32 devAddr,void *dramAddr,u32 size) { - do { - } while ((_PI_STATUS_REG & 3) != 0); - _PI_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); - _PI_CART_ADDR_REG = (_osRomBase | devAddr) & 0x1fffffff; - if (direction == 0) { - _PI_WR_LEN_REG = size - 1; - } - else { - if (direction != 1) { - return -1; + do { + } while ((_PI_STATUS_REG & 3) != 0); + _PI_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); + _PI_CART_ADDR_REG = (_osRomBase | devAddr) & 0x1fffffff; + if (direction == 0) { + _PI_WR_LEN_REG = size - 1; } - _PI_RD_LEN_REG = size - 1; - } - return 0; + else { + if (direction != 1) { + return -1; + } + _PI_RD_LEN_REG = size - 1; + } + return 0; } @@ -8906,7 +8901,7 @@ s32 osPiRawStartDma(s32 direction,u32 devAddr,void *dramAddr,u32 size) u32 osPiGetStatus(void) { - return _PI_STATUS_REG; + return _PI_STATUS_REG; } @@ -8917,78 +8912,77 @@ u32 osPiGetStatus(void) void osInitialize(void) { - uint tmpSR; - int iVar3; - longlong lVar1; - ulonglong uVar2; - undefined4 left_l; - u32 clock; - u32 pifdata; - - clock = 0; - __osFinalRom = 1; - tmpSR = __osGetSR(); - __osSetSR(tmpSR | 0x20000000); - __osSetFpcCsr(0x1000800); - iVar3 = __osSiRawReadIo(0x1fc007fc,&pifdata); - while (iVar3 != 0) { - // WARNING: Read-only address (ram,0x70010190) is written - // WARNING: Read-only address (ram,0x70010194) is written + uint tmpSR; + int iVar3; + longlong lVar1; + ulonglong uVar2; + undefined4 in_v1_lo; + u32 clock; + u32 pifdata; + + clock = 0; + __osFinalRom = 1; + tmpSR = __osGetSR(); + __osSetSR(tmpSR | 0x20000000); + __osSetFpcCsr(0x1000800); iVar3 = __osSiRawReadIo(0x1fc007fc,&pifdata); - } + while (iVar3 != 0) { // WARNING: Read-only address (ram,0x70010190) is written // WARNING: Read-only address (ram,0x70010194) is written - iVar3 = __osSpRawWriteIo(0x1fc007fc,pifdata | 8); - while (iVar3 != 0) { + iVar3 = __osSiRawReadIo(0x1fc007fc,&pifdata); + } // WARNING: Read-only address (ram,0x70010190) is written // WARNING: Read-only address (ram,0x70010194) is written iVar3 = __osSpRawWriteIo(0x1fc007fc,pifdata | 8); - } + while (iVar3 != 0) { // WARNING: Read-only address (ram,0x70010190) is written // WARNING: Read-only address (ram,0x70010194) is written - _DAT_80000008 = 0x3400008; - _DAT_8000000c = 0; - _XUT_VEC = 0x3c1a7001; - _DAT_80000084 = 0x275a01a0; - _DAT_80000088 = 0x3400008; - _DAT_8000008c = 0; - _ECC_VEC = 0x3c1a7001; - _DAT_80000104 = 0x275a01a0; - _DAT_80000108 = 0x3400008; - _DAT_8000010c = 0; - _E_VEC = 0x3c1a7001; - _DAT_80000184 = 0x275a01a0; - _DAT_80000188 = 0x3400008; - _DAT_8000018c = 0; - _UT_VEC = ___osExceptionPreamble; - _DAT_80000004 = uRam70010194; - osWritebackDCache(&UT_VEC,400); - osInvalICache(&UT_VEC,400); - osMapTLBRdb(); - osPiRawReadIo(4,&clock); - clock &= 0xfffffff0; - if (clock != 0) { - osClockRate._0_4_ = 0; - osClockRate._4_4_ = clock; - } - lVar1 = __ll_mul(osClockRate._0_4_,osClockRate._4_4_,0,3); - uVar2 = __ull_div((int)lVar1,left_l,0,4); - osClockRate._0_4_ = (undefined4)uVar2; - osClockRate._4_4_ = left_l; - if (_osResetType == 0) { - osClockRate._4_4_ = left_l; - bzero((void *)0x8000031c,0x40); - } - do { - } while ((_PI_STATUS_REG & 3) != 0); - if ((_data & 0xffff) == 0) { - osDiskExist = 1; - __osSetHWIntrRoutine(1,(s32 *)__osLeoInterrupt); - } - else { - osDiskExist = 0; - } - return; + iVar3 = __osSpRawWriteIo(0x1fc007fc,pifdata | 8); + } + // WARNING: Read-only address (ram,0x70010190) is written + // WARNING: Read-only address (ram,0x70010194) is written + _DAT_80000008 = 0x3400008; + _DAT_8000000c = 0; + _XUT_VEC = 0x3c1a7001; + _DAT_80000084 = 0x275a01a0; + _DAT_80000088 = 0x3400008; + _DAT_8000008c = 0; + _ECC_VEC = 0x3c1a7001; + _DAT_80000104 = 0x275a01a0; + _DAT_80000108 = 0x3400008; + _DAT_8000010c = 0; + _E_VEC = 0x3c1a7001; + _DAT_80000184 = 0x275a01a0; + _DAT_80000188 = 0x3400008; + _DAT_8000018c = 0; + _UT_VEC = ___osExceptionPreamble; + _DAT_80000004 = uRam70010194; + osWritebackDCache(&UT_VEC,400); + osInvalICache(&UT_VEC,400); + osMapTLBRdb(); + osPiRawReadIo(4,&clock); + clock &= 0xfffffff0; + if (clock != 0) { + osClockRate._0_4_ = 0; + osClockRate._4_4_ = clock; + } + lVar1 = __ll_mul(osClockRate._0_4_,osClockRate._4_4_,0,3); + uVar2 = __ull_div((int)lVar1,in_v1_lo,0,4); + osClockRate._0_4_ = (undefined4)uVar2; + osClockRate._4_4_ = in_v1_lo; + if (_osResetType == 0) { + bzero((void *)0x8000031c,0x40); + } + do { + } while ((_PI_STATUS_REG & 3) != 0); + if ((_data & 0xffff) == 0) { + osDiskExist = 1; + __osSetHWIntrRoutine(1,(s32 *)__osLeoInterrupt); + } + else { + osDiskExist = 0; + } + return; } @@ -8996,16 +8990,16 @@ void osInitialize(void) void osWritebackDCacheAll(void) { - bool bVar1; - ulonglong uVar2; - - uVar2 = 0xffffffff80000000; - do { - cacheOp(1,uVar2); - bVar1 = uVar2 < 0xffffffff80001ff0; - uVar2 = SEXT48((int)uVar2 + 0x10); - } while (bVar1); - return; + bool bVar1; + ulonglong uVar2; + + uVar2 = 0xffffffff80000000; + do { + cacheOp(1,uVar2); + bVar1 = uVar2 < 0xffffffff80001ff0; + uVar2 = SEXT48((int)uVar2 + 0x10); + } while (bVar1); + return; } @@ -9013,30 +9007,30 @@ void osWritebackDCacheAll(void) void osInvalICache(void *addr,int nbytes) { - bool bVar1; - ulonglong uVar2; - void *pvVar3; - - if (0 < nbytes) { - if (0x3fff < (uint)nbytes) { - uVar2 = 0xffffffff80000000; - do { - cacheOp(0,uVar2); - bVar1 = uVar2 < 0xffffffff80003fe0; - uVar2 = SEXT48((int)uVar2 + 0x20); - } while (bVar1); - return; + bool bVar1; + ulonglong uVar2; + void *pvVar3; + + if (0 < nbytes) { + if (0x3fff < (uint)nbytes) { + uVar2 = 0xffffffff80000000; + do { + cacheOp(0,uVar2); + bVar1 = uVar2 < 0xffffffff80003fe0; + uVar2 = SEXT48((int)uVar2 + 0x20); + } while (bVar1); + return; + } + if (addr < (void *)((int)addr + nbytes)) { + pvVar3 = (void *)((int)addr - ((uint)addr & 0x1f)); + do { + uVar2 = SEXT48((int)pvVar3); + cacheOp(0x10,uVar2); + pvVar3 = (void *)((int)pvVar3 + 0x20); + } while (uVar2 < (ulonglong)(longlong)((int)(void *)((int)addr + nbytes) + -0x20)); + } } - if (addr < (void *)((int)addr + nbytes)) { - pvVar3 = (void *)((int)addr - ((uint)addr & 0x1f)); - do { - uVar2 = SEXT48((int)pvVar3); - cacheOp(0x10,uVar2); - pvVar3 = (void *)((int)pvVar3 + 0x20); - } while (uVar2 < (ulonglong)(longlong)((int)(void *)((int)addr + nbytes) + -0x20)); - } - } - return; + return; } @@ -9044,13 +9038,13 @@ void osInvalICache(void *addr,int nbytes) void osUnmapTLB(int index) { - setCopReg(0,Index,(longlong)index,0); - setCopReg(0,CONCAT44(uRegister00002050,EntryHi),0xffffffff80000000,0); - setCopReg(0,EntryLo0,0,0); - setCopReg(0,EntryLo1,0,0); - TLB_write_indexed_entry(Index,CONCAT44(uRegister00002050,EntryHi),EntryLo0,EntryLo1,PageMask); - setCopReg(0,CONCAT44(uRegister00002050,EntryHi),(longlong)EntryHi,0); - return; + setCopReg(0,Index,(longlong)index,0); + setCopReg(0,CONCAT44(uRegister00002050,EntryHi),0xffffffff80000000,0); + setCopReg(0,EntryLo0,0,0); + setCopReg(0,EntryLo1,0,0); + TLB_write_indexed_entry(Index,CONCAT44(uRegister00002050,EntryHi),EntryLo0,EntryLo1,PageMask); + setCopReg(0,CONCAT44(uRegister00002050,EntryHi),(longlong)EntryHi,0); + return; } @@ -9060,9 +9054,9 @@ void osUnmapTLB(int index) u32 __osGetFpcCsr(void) { - u32 in_fcsr; - - return in_fcsr; + u32 in_fcsr; + + return in_fcsr; } @@ -9070,9 +9064,9 @@ u32 __osGetFpcCsr(void) u32 __osSetFpcCsr(u32 param_1) { - u32 in_fcsr; - - return in_fcsr; + u32 in_fcsr; + + return in_fcsr; } @@ -9080,30 +9074,30 @@ u32 __osSetFpcCsr(u32 param_1) void osCreateThread(OSThread *t,OSId id,void *entry,void *arg,void *sp,OSPri p) { - ulonglong saveMask; - - t->id = id; - t->priority = p; - t->next = NULL; - t->queue = NULL; - *(void **)&(t->context).cause = entry; - *(int *)((int)&(t->context).a0 + 4) = (int)arg >> 0x1f; - *(void **)&(t->context).a1 = arg; - *(int *)&(t->context).s8 = (int)sp + -0x10; - *(int *)((int)&(t->context).sp + 4) = ((int)sp >> 0x1f) - (uint)(sp < &caseD_0); - *(undefined4 *)((int)&(t->context).ra + 4) = 0; - *(undefined4 *)&(t->context).lo = 0x70010a80; - (t->context).pc = 0xff03; - (t->context).fpcsr = 0x3f; - *(undefined4 *)&(t->context).fp0 = 0x1000800; - t->fp = 0; - t->state = 1; - t->flags = 0; - saveMask._4_4_ = __osDisableInt(); - *(OSThread **)&t->tlnext = __osActiveQueue; - __osActiveQueue = t; - __osRestoreInt(saveMask._4_4_); - return; + ulonglong saveMask; + + t->id = id; + t->priority = p; + t->next = NULL; + t->queue = NULL; + *(void **)&(t->context).cause = entry; + *(int *)((int)&(t->context).a0 + 4) = (int)arg >> 0x1f; + *(void **)&(t->context).a1 = arg; + *(int *)&(t->context).s8 = (int)sp + -0x10; + *(int *)((int)&(t->context).sp + 4) = ((int)sp >> 0x1f) - (uint)(sp < &caseD_0); + *(undefined4 *)((int)&(t->context).ra + 4) = 0; + *(undefined4 *)&(t->context).lo = 0x70010a80; + (t->context).pc = 0xff03; + (t->context).fpcsr = 0x3f; + *(undefined4 *)&(t->context).fp0 = 0x1000800; + t->fp = 0; + t->state = 1; + t->flags = 0; + saveMask._4_4_ = __osDisableInt(); + *(OSThread **)&t->tlnext = __osActiveQueue; + __osActiveQueue = t; + __osRestoreInt(saveMask._4_4_); + return; } @@ -9111,39 +9105,39 @@ void osCreateThread(OSThread *t,OSId id,void *entry,void *arg,void *sp,OSPri p) void osStartThread(OSThread *t) { - ulonglong saveMask; - u32 tmpsaveMask; - - saveMask._4_4_ = __osDisableInt(); - if (t->state == 1) { - if (((OSThread *)t->queue == NULL) || ((OSThread *)t->queue == (OSThread *)&__osRunQueue)) { - t->state = 2; - __osEnqueueThread(&__osRunQueue,t); + ulonglong saveMask; + u32 tmpsaveMask; + + saveMask._4_4_ = __osDisableInt(); + if (t->state == 1) { + if (((OSThread *)t->queue == NULL) || ((OSThread *)t->queue == (OSThread *)&__osRunQueue)) { + t->state = 2; + __osEnqueueThread(&__osRunQueue,t); + } + else { + t->state = 8; + __osEnqueueThread((OSThread **)t->queue,t); + tmpsaveMask = (u32)__osPopThread((OSThread *)t->queue); + __osEnqueueThread(&__osRunQueue,(OSThread *)tmpsaveMask); + } } else { - t->state = 8; - __osEnqueueThread((OSThread **)t->queue,t); - tmpsaveMask = (u32)__osPopThread((OSThread *)t->queue); - __osEnqueueThread(&__osRunQueue,(OSThread *)tmpsaveMask); + if (t->state == 8) { + t->state = 2; + __osEnqueueThread(&__osRunQueue,t); + } } - } - else { - if (t->state == 8) { - t->state = 2; - __osEnqueueThread(&__osRunQueue,t); + if (__osRunningThread == NULL) { + __osDispatchThread(); } - } - if (__osRunningThread == NULL) { - __osDispatchThread(); - } - else { - if (__osRunningThread->priority < __osRunQueue->priority) { - __osRunningThread->state = 2; - __osEnqueueAndYield(&__osRunQueue); + else { + if (__osRunningThread->priority < __osRunQueue->priority) { + __osRunningThread->state = 2; + __osEnqueueAndYield(&__osRunQueue); + } } - } - __osRestoreInt(saveMask._4_4_); - return; + __osRestoreInt(saveMask._4_4_); + return; } @@ -9151,13 +9145,13 @@ void osStartThread(OSThread *t) void osCreateMesgQueue(OSMesgQueue *mq,OSMesg *msg,s32 msgCount) { - mq->mtqueue = (OSThread *)0x80027720; - *(__OSThreadTail **)&mq->fullqueue = &__osThreadTail; - mq->validCount = 0; - mq->first = 0; - mq->msgCount = msgCount; - mq->msg = msg; - return; + mq->mtqueue = (OSThread *)0x80027720; + *(__OSThreadTail **)&mq->fullqueue = &__osThreadTail; + mq->validCount = 0; + mq->first = 0; + mq->msgCount = msgCount; + mq->msg = msg; + return; } @@ -9165,29 +9159,29 @@ void osCreateMesgQueue(OSMesgQueue *mq,OSMesg *msg,s32 msgCount) void osStopThread(OSThread *t) { - u32 saveMask; - u16 state; - - saveMask = __osDisableInt(); - if (t == NULL) { - state = 4; - } - else { - state = t->state; - } - if (state != 2) { - if (state == 4) { - __osRunningThread->state = 1; - __osEnqueueAndYield(NULL); - goto LAB_7000d7e0; + u32 saveMask; + u16 state; + + saveMask = __osDisableInt(); + if (t == NULL) { + state = 4; } - if (state != 8) goto LAB_7000d7e0; - } - t->state = 1; - __osDequeueThread((OSThread **)t->queue,t); + else { + state = t->state; + } + if (state != 2) { + if (state == 4) { + __osRunningThread->state = 1; + __osEnqueueAndYield(NULL); + goto LAB_7000d7e0; + } + if (state != 8) goto LAB_7000d7e0; + } + t->state = 1; + __osDequeueThread((OSThread **)t->queue,t); LAB_7000d7e0: - __osRestoreInt(saveMask); - return; + __osRestoreInt(saveMask); + return; } @@ -9195,27 +9189,27 @@ LAB_7000d7e0: void osSetThreadPri(OSThread *t,OSPri p) { - u32 saveMask; - OSThread *pOStackX0; - - saveMask = __osDisableInt(); - pOStackX0 = t; - if (t == NULL) { - pOStackX0 = __osRunningThread; - } - if (pOStackX0->priority != p) { - pOStackX0->priority = p; - if ((pOStackX0 != __osRunningThread) && (pOStackX0->state != 1)) { - __osDequeueThread((OSThread **)pOStackX0->queue,pOStackX0); - __osEnqueueThread((OSThread **)pOStackX0->queue,pOStackX0); + u32 saveMask; + OSThread *pOStackX0; + + saveMask = __osDisableInt(); + pOStackX0 = t; + if (t == NULL) { + pOStackX0 = __osRunningThread; } - if (__osRunningThread->priority < __osRunQueue->priority) { - __osRunningThread->state = 2; - __osEnqueueAndYield(&__osRunQueue); + if (pOStackX0->priority != p) { + pOStackX0->priority = p; + if ((pOStackX0 != __osRunningThread) && (pOStackX0->state != 1)) { + __osDequeueThread((OSThread **)pOStackX0->queue,pOStackX0); + __osEnqueueThread((OSThread **)pOStackX0->queue,pOStackX0); + } + if (__osRunningThread->priority < __osRunQueue->priority) { + __osRunningThread->state = 2; + __osEnqueueAndYield(&__osRunQueue); + } } - } - __osRestoreInt(saveMask); - return; + __osRestoreInt(saveMask); + return; } @@ -9223,7 +9217,7 @@ void osSetThreadPri(OSThread *t,OSPri p) u32 osGetCount(void) { - return Count; + return Count; } @@ -9231,44 +9225,44 @@ u32 osGetCount(void) void osCreateViManager(OSPri pri) { - int myPri; - u32 savedMask; - int oldPri; - - if (__osViDevMgr.active == 0) { - __osTimerServicesInit(); - osCreateMesgQueue(&viEventQueue,viEventBuf,5); - viRetraceMsg.hdr.type = 0xd; - viRetraceMsg.hdr.pri = '\0'; - viRetraceMsg.hdr.retQueue = NULL; - viCounterMsg.hdr.type = 0xe; - viCounterMsg.hdr.pri = '\0'; - viCounterMsg.hdr.retQueue = NULL; - osSetEventMesg(); - osSetEventMesg(); - oldPri = -1; - myPri = osGetThreadPri(NULL); - if (myPri < pri) { - osSetThreadPri(NULL,pri); - oldPri = myPri; + int myPri; + u32 savedMask; + int oldPri; + + if (__osViDevMgr.active == 0) { + __osTimerServicesInit(); + osCreateMesgQueue(&viEventQueue,viEventBuf,5); + viRetraceMsg.hdr.type = 0xd; + viRetraceMsg.hdr.pri = '\0'; + viRetraceMsg.hdr.retQueue = NULL; + viCounterMsg.hdr.type = 0xe; + viCounterMsg.hdr.pri = '\0'; + viCounterMsg.hdr.retQueue = NULL; + osSetEventMesg(7,&viEventQueue,&viRetraceMsg); + osSetEventMesg(3,&viEventQueue,&viCounterMsg); + oldPri = -1; + myPri = osGetThreadPri(NULL); + if (myPri < pri) { + osSetThreadPri(NULL,pri); + oldPri = myPri; + } + savedMask = __osDisableInt(); + __osViDevMgr.active = 1; + __osViDevMgr.thread = &viThread; + __osViDevMgr.cmdQueue = &viEventQueue; + __osViDevMgr.evtQueue = &viEventQueue; + __osViDevMgr.acsQueue = NULL; + __osViDevMgr.dma = NULL; + __osViDevMgr.edma = NULL; + osCreateThread(&viThread,0,viMgrMain,&__osViDevMgr,&viEventQueue,pri); + __osViInit(); + osStartThread(&viThread); + __osRestoreInt(savedMask); + if (oldPri != -1) { + osSetThreadPri(NULL,oldPri); + } } - savedMask = __osDisableInt(); - __osViDevMgr.active = 1; - __osViDevMgr.thread = &viThread; - __osViDevMgr.cmdQueue = &viEventQueue; - __osViDevMgr.evtQueue = &viEventQueue; - __osViDevMgr.acsQueue = NULL; - __osViDevMgr.dma = NULL; - __osViDevMgr.edma = NULL; - osCreateThread(&viThread,0,viMgrMain,&__osViDevMgr,&viEventQueue,pri); - __osViInit(); - osStartThread(&viThread); - __osRestoreInt(savedMask); - if (oldPri != -1) { - osSetThreadPri(NULL,oldPri); - } - } - return; + return; } @@ -9276,50 +9270,49 @@ void osCreateViManager(OSPri pri) void viMgrMain(int param_1) { - __OSViContext *vc; - undefined *puVar1; - uint uVar2; - short *psStack12; - OSDevMgr *dm; - undefined *a; - u32 Count; - - psStack12 = NULL; - vc = (__OSViContext *)__osViGetCurrentContext(); - retrace = vc->retraceCount; - dm = (OSDevMgr *)param_1; - if (retrace == 0) { - retrace = 1; + __OSViContext *vc; + __OSViContext *p_Var1; + uint uVar2; + short *psStack12; + OSDevMgr *dm; + undefined *a; + u32 Count; + + psStack12 = NULL; + vc = __osViGetCurrentContext(); + retrace = vc->retraceCount; dm = (OSDevMgr *)param_1; - } - do { - while( true ) { - osRecvMesg(dm->evtQueue,&psStack12,1); - if (*psStack12 == 0xd) break; - if (*psStack12 == 0xe) { - __osTimerInterrupt(); - } - } - __osViSwapContext(); - retrace -= 1; if (retrace == 0) { - puVar1 = __osViGetCurrentContext(); - if (*(OSMesgQueue **)(puVar1 + 0x10) != NULL) { - osSendMesg(*(OSMesgQueue **)(puVar1 + 0x10),*(OSMesg *)(puVar1 + 0x14),0); - } - retrace = *(u16 *)(puVar1 + 2); + retrace = 1; } - __osViIntrCount += 1; - if (false) { - __osCurrentTime._4_4_ = osGetCount(); - __osCurrentTime._0_4_ = 0; - } - Count = __osBaseCounter; - __osBaseCounter = osGetCount(); - uVar2 = (__osBaseCounter - Count) + __osCurrentTime._4_4_; - __osCurrentTime._0_4_ = (uint)(uVar2 < __osCurrentTime._4_4_) + __osCurrentTime._0_4_; - __osCurrentTime._4_4_ = uVar2; - } while( true ); + do { + while( true ) { + osRecvMesg(dm->evtQueue,&psStack12,1); + if (*psStack12 == 0xd) break; + if (*psStack12 == 0xe) { + __osTimerInterrupt(); + } + } + __osViSwapContext(); + retrace -= 1; + if (retrace == 0) { + p_Var1 = __osViGetCurrentContext(); + if (p_Var1->msgq != NULL) { + osSendMesg(p_Var1->msgq,p_Var1->msg,0); + } + retrace = p_Var1->retraceCount; + } + __osViIntrCount += 1; + if (false) { + __osCurrentTime._4_4_ = osGetCount(); + __osCurrentTime._0_4_ = 0; + } + Count = __osBaseCounter; + __osBaseCounter = osGetCount(); + uVar2 = (__osBaseCounter - Count) + __osCurrentTime._4_4_; + __osCurrentTime._0_4_ = (uint)(uVar2 < __osCurrentTime._4_4_) + __osCurrentTime._0_4_; + __osCurrentTime._4_4_ = uVar2; + } while( true ); } @@ -9329,24 +9322,21 @@ void osCreateViManager_sub undefined param_5,undefined param_6,undefined4 param_7,undefined4 param_8) { - return; + return; } -void osSetEventMesg(void) +void osSetEventMesg(OSEvent param_1,OSMesgQueue *param_2,OSMesg param_3) { - u32 saveMask; - int in_a0_lo; - OSMesgQueue *in_a1_lo; - OSMesg in_a2_lo; - - saveMask = __osDisableInt(); - __OSEventStateTab[in_a0_lo].messageQueue = in_a1_lo; - __OSEventStateTab[in_a0_lo].message = in_a2_lo; - __osRestoreInt(saveMask); - return; + u32 saveMask; + + saveMask = __osDisableInt(); + __OSEventStateTab[param_1].messageQueue = param_2; + __OSEventStateTab[param_1].message = param_3; + __osRestoreInt(saveMask); + return; } @@ -9354,14 +9344,14 @@ void osSetEventMesg(void) void osViSetEvent(OSMesgQueue *mq,OSMesg m,u32 retraceCount) { - u32 savemask; - - savemask = __osDisableInt(); - __osViNext->msgq = mq; - __osViNext->msg = m; - __osViNext->retraceCount = (u16)retraceCount; - __osRestoreInt(savemask); - return; + u32 savemask; + + savemask = __osDisableInt(); + __osViNext->msgq = mq; + __osViNext->msg = m; + __osViNext->retraceCount = (u16)retraceCount; + __osRestoreInt(savemask); + return; } @@ -9371,19 +9361,19 @@ void osViSetEvent(OSMesgQueue *mq,OSMesg m,u32 retraceCount) OSIntMask osSetIntMask(OSIntMask param_1) { - uint uVar1; - - if (_MI_INTR_MASK_REG != 0) { - _MI_INTR_MASK_REG |= ((uint)__OSGlobalIntMask >> 0x10 ^ 0xffffffff) & 0x3f; - } - uVar1 = _MI_INTR_MASK_REG << 0x10; - setCopReg(0,CONCAT44(uRegister00002060,Status), - (longlong)(int)Status & 0xffffffffffff00ffU | - (longlong)(int)param_1 & 0xff01U & (longlong)(int)__OSGlobalIntMask & 0xff00U,0); - _MI_INTR_MASK_REG = - (uint)*(ushort *) - ((int)__osRcpImTable + ((param_1 & 0x3f0000 & (uint)__OSGlobalIntMask) >> 0xf)); - return (OSIntMask)(Status & 0xff01 | ((uint)__OSGlobalIntMask ^ 0xffffffff) & 0xff00 | uVar1); + uint uVar1; + + if (_MI_INTR_MASK_REG != 0) { + _MI_INTR_MASK_REG |= ((uint)__OSGlobalIntMask >> 0x10 ^ 0xffffffff) & 0x3f; + } + uVar1 = _MI_INTR_MASK_REG << 0x10; + setCopReg(0,CONCAT44(uRegister00002060,Status), + (longlong)(int)Status & 0xffffffffffff00ffU | + (longlong)(int)param_1 & 0xff01U & (longlong)(int)__OSGlobalIntMask & 0xff00U,0); + _MI_INTR_MASK_REG = + (uint)*(ushort *) + ((int)__osRcpImTable + ((param_1 & 0x3f0000 & (uint)__OSGlobalIntMask) >> 0xf)); + return (OSIntMask)(Status & 0xff01 | ((uint)__OSGlobalIntMask ^ 0xffffffff) & 0xff00 | uVar1); } @@ -9391,42 +9381,42 @@ OSIntMask osSetIntMask(OSIntMask param_1) s32 osRecvMesg(OSMesgQueue *mq,OSMesg *msg,s32 flags) { - int iVar1; - u32 saveMask; - OSThread *t; - int iVar2; - - saveMask = __osDisableInt(); - iVar1 = mq->validCount; - while( true ) { - if (iVar1 != 0) { - if (msg != NULL) { - *msg = mq->msg[mq->first]; - } - iVar1 = mq->msgCount; - iVar2 = mq->first + 1; - mq->first = iVar2 % iVar1; - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - mq->validCount = mq->validCount + -1; - if (mq->fullqueue->next != NULL) { - t = __osPopThread((OSThread *)&mq->fullqueue); - osStartThread(t); - } - __osRestoreInt(saveMask); - return 0; - } - if (flags == 0) break; - __osRunningThread->state = 8; - __osEnqueueAndYield((OSThread **)mq); + int iVar1; + u32 saveMask; + OSThread *t; + int iVar2; + + saveMask = __osDisableInt(); iVar1 = mq->validCount; - } - __osRestoreInt(saveMask); - return -1; + while( true ) { + if (iVar1 != 0) { + if (msg != NULL) { + *msg = mq->msg[mq->first]; + } + iVar1 = mq->msgCount; + iVar2 = mq->first + 1; + mq->first = iVar2 % iVar1; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + mq->validCount = mq->validCount + -1; + if (mq->fullqueue->next != NULL) { + t = __osPopThread((OSThread *)&mq->fullqueue); + osStartThread(t); + } + __osRestoreInt(saveMask); + return 0; + } + if (flags == 0) break; + __osRunningThread->state = 8; + __osEnqueueAndYield((OSThread **)mq); + iVar1 = mq->validCount; + } + __osRestoreInt(saveMask); + return -1; } @@ -9434,38 +9424,80 @@ s32 osRecvMesg(OSMesgQueue *mq,OSMesg *msg,s32 flags) s32 osSendMesg(OSMesgQueue *mq,OSMesg msg,s32 flags) { - int iVar1; - u32 saveMask; - OSThread *t; - int iVar2; - - saveMask = __osDisableInt(); - if (mq->msgCount <= mq->validCount) { - do { - if (flags != 1) { - __osRestoreInt(saveMask); - return -1; - } - __osRunningThread->state = 8; - __osEnqueueAndYield(&mq->fullqueue); - } while (mq->msgCount <= mq->validCount); - } - iVar1 = mq->msgCount; - iVar2 = mq->first + mq->validCount; - mq->msg[iVar2 % iVar1] = msg; - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - mq->validCount = mq->validCount + 1; - if (mq->mtqueue->next != NULL) { - t = __osPopThread((OSThread *)mq); - osStartThread(t); - } - __osRestoreInt(saveMask); - return 0; + int iVar1; + u32 saveMask; + OSThread *t; + int iVar2; + + saveMask = __osDisableInt(); + if (mq->msgCount <= mq->validCount) { + do { + if (flags != 1) { + __osRestoreInt(saveMask); + return -1; + } + __osRunningThread->state = 8; + __osEnqueueAndYield(&mq->fullqueue); + } while (mq->msgCount <= mq->validCount); + } + iVar1 = mq->msgCount; + iVar2 = mq->first + mq->validCount; + mq->msg[iVar2 % iVar1] = msg; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + mq->validCount = mq->validCount + 1; + if (mq->mtqueue->next != NULL) { + t = __osPopThread((OSThread *)mq); + osStartThread(t); + } + __osRestoreInt(saveMask); + return 0; +} + + + +undefined8 FUN_7000df3c(void) + +{ + int iVar1; + OSThread *t; + int in_t6_lo; + u32 unaff_s0_lo; + int iVar2; + OSThread *param_11; + undefined4 param_12; + int param_13; + + if (*(int *)(in_t6_lo + 0x10) <= *(int *)(in_t6_lo + 8)) { + do { + if (param_13 != 1) { + __osRestoreInt(unaff_s0_lo); + return 0xffffffffffffffff; + } + __osRunningThread->state = 8; + __osEnqueueAndYield((OSThread **)¶m_11->priority); + } while (*(int *)¶m_11->state <= (int)param_11->queue); + } + iVar1 = *(int *)¶m_11->state; + iVar2 = (int)¶m_11->tlnext->next + (int)param_11->queue; + *(undefined4 *)(param_11->id + (iVar2 % iVar1) * 4) = param_12; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + param_11->queue = (OSThread_s **)((int)param_11->queue + 1); + if (param_11->next->next != NULL) { + t = __osPopThread(param_11); + osStartThread(t); + } + __osRestoreInt(unaff_s0_lo); + return 0; } @@ -9473,14 +9505,14 @@ s32 osSendMesg(OSMesgQueue *mq,OSMesg msg,s32 flags) void osViSetMode(OSViMode *modep) { - u32 saveMask; - - saveMask = __osDisableInt(); - __osViNext->modep = modep; - __osViNext->state = 1; - __osViNext->control = (__osViNext->modep->comRegs).ctrl; - __osRestoreInt(saveMask); - return; + u32 saveMask; + + saveMask = __osDisableInt(); + __osViNext->modep = modep; + __osViNext->state = 1; + __osViNext->control = (__osViNext->modep->comRegs).ctrl; + __osRestoreInt(saveMask); + return; } @@ -9488,46 +9520,46 @@ void osViSetMode(OSViMode *modep) void osViSetXScale(f32 value) { - float fVar1; - u32 saveMask; - uint uVar2; - float nomValue; - - saveMask = __osDisableInt(); - (__osViNext->x).factor = value; - __osViNext->state = __osViNext->state | 2; - nomValue = (float)((__osViNext->modep->comRegs).xScale & 0xfff); - if (false) { - nomValue = nomValue + 4294967296.00000000; - } - nomValue = (float)(__osViNext->x).factor * nomValue; - if (false) { - fVar1 = ROUND(nomValue); - } - else { - fVar1 = FLOOR(nomValue); - } - uVar2 = (uint)fVar1; - if (true) { - if (-1 < (int)uVar2) goto LAB_7000e1d0; - } - else { + float fVar1; + u32 saveMask; + uint uVar2; + float nomValue; + + saveMask = __osDisableInt(); + (__osViNext->x).factor = value; + __osViNext->state = __osViNext->state | 2; + nomValue = (float)((__osViNext->modep->comRegs).xScale & 0xfff); if (false) { - fVar1 = ROUND(nomValue - 2147483648.00000000); + nomValue = nomValue + 4294967296.00000000; + } + nomValue = (float)(__osViNext->x).factor * nomValue; + if (false) { + fVar1 = ROUND(nomValue); } else { - fVar1 = FLOOR(nomValue - 2147483648.00000000); + fVar1 = FLOOR(nomValue); } + uVar2 = (uint)fVar1; if (true) { - uVar2 = (int)fVar1 | 0x80000000; - goto LAB_7000e1d0; + if (-1 < (int)uVar2) goto LAB_7000e1d0; } - } - uVar2 = 0xffffffff; + else { + if (false) { + fVar1 = ROUND(nomValue - 2147483648.00000000); + } + else { + fVar1 = FLOOR(nomValue - 2147483648.00000000); + } + if (true) { + uVar2 = (int)fVar1 | 0x80000000; + goto LAB_7000e1d0; + } + } + uVar2 = 0xffffffff; LAB_7000e1d0: - *(uint *)&(__osViNext->x).field_0x8 = uVar2 & 0xfff; - __osRestoreInt(saveMask); - return; + *(uint *)&(__osViNext->x).field_0x8 = uVar2 & 0xfff; + __osRestoreInt(saveMask); + return; } @@ -9535,13 +9567,13 @@ LAB_7000e1d0: void osViSetYScale(f32 value) { - u32 saveMask; - - saveMask = __osDisableInt(); - *(f32 *)((int)&(__osViNext->y).factor + 2) = value; - __osViNext->state = __osViNext->state | 4; - __osRestoreInt(saveMask); - return; + u32 saveMask; + + saveMask = __osDisableInt(); + *(f32 *)((int)&(__osViNext->y).factor + 2) = value; + __osViNext->state = __osViNext->state | 4; + __osRestoreInt(saveMask); + return; } @@ -9549,17 +9581,17 @@ void osViSetYScale(f32 value) void osViRepeatLine(char param_1) { - u32 saveMask; - - saveMask = __osDisableInt(); - if (param_1 == '\0') { - __osViNext->state = __osViNext->state & 0xffbf; - } - else { - __osViNext->state = __osViNext->state | 0x40; - } - __osRestoreInt(saveMask); - return; + u32 saveMask; + + saveMask = __osDisableInt(); + if (param_1 == '\0') { + __osViNext->state = __osViNext->state & 0xffbf; + } + else { + __osViNext->state = __osViNext->state | 0x40; + } + __osRestoreInt(saveMask); + return; } @@ -9567,19 +9599,19 @@ void osViRepeatLine(char param_1) void osViBlack(u32 active) { - u32 saveMask; - char cStackX3; - - saveMask = __osDisableInt(); - cStackX3 = (char)active; - if (cStackX3 == '\0') { - __osViNext->state = __osViNext->state & 0xffdf; - } - else { - __osViNext->state = __osViNext->state | 0x20; - } - __osRestoreInt(saveMask); - return; + u32 saveMask; + char cStackX3; + + saveMask = __osDisableInt(); + cStackX3 = (char)active; + if (cStackX3 == '\0') { + __osViNext->state = __osViNext->state & 0xffdf; + } + else { + __osViNext->state = __osViNext->state | 0x20; + } + __osRestoreInt(saveMask); + return; } @@ -9587,16 +9619,16 @@ void osViBlack(u32 active) OSYieldResult osSpTaskYielded(OSTask *tp) { - u32 status; - OSYieldResult result; - - status = __osSpGetStatus(); - result = (OSYieldResult)((status & 0x100) != 0); - if ((status & 0x80) != 0) { - *(uint *)(*tp + 4) = *(uint *)(*tp + 4) | result; - *(uint *)(*tp + 4) = *(uint *)(*tp + 4) & 0xfffffffd; - } - return result; + u32 status; + OSYieldResult result; + + status = __osSpGetStatus(); + result = (OSYieldResult)((status & 0x100) != 0); + if ((status & 0x80) != 0) { + *(uint *)(*tp + 4) = *(uint *)(*tp + 4) | result; + *(uint *)(*tp + 4) = *(uint *)(*tp + 4) & 0xfffffffd; + } + return result; } @@ -9606,11 +9638,11 @@ OSYieldResult osSpTaskYielded(OSTask *tp) void osDpGetCounters(u32 *array) { - *array = _DPC_CLOCK_REG; - array[1] = _DPC_BUFBUSY_REG; - array[2] = _DPC_PIPEBUSY_REG; - array[3] = _DPC_TMEM_REG; - return; + *array = _DPC_CLOCK_REG; + array[1] = _DPC_BUFBUSY_REG; + array[2] = _DPC_PIPEBUSY_REG; + array[3] = _DPC_TMEM_REG; + return; } @@ -9618,13 +9650,13 @@ void osDpGetCounters(u32 *array) void * osViGetCurrentFramebuffer(void) { - u32 saveMask; - void *framep; - - saveMask = __osDisableInt(); - framep = __osViCurr->framep; - __osRestoreInt(saveMask); - return framep; + u32 saveMask; + void *framep; + + saveMask = __osDisableInt(); + framep = __osViCurr->framep; + __osRestoreInt(saveMask); + return framep; } @@ -9632,13 +9664,13 @@ void * osViGetCurrentFramebuffer(void) void * osViGetNextFramebuffer(void) { - u32 saveMask; - void *framep; - - saveMask = __osDisableInt(); - framep = __osViNext->framep; - __osRestoreInt(saveMask); - return framep; + u32 saveMask; + void *framep; + + saveMask = __osDisableInt(); + framep = __osViNext->framep; + __osRestoreInt(saveMask); + return framep; } @@ -9646,13 +9678,13 @@ void * osViGetNextFramebuffer(void) void osViSwapBuffer(void *frameBufPtr) { - u32 saveMask; - - saveMask = __osDisableInt(); - __osViNext->framep = frameBufPtr; - __osViNext->state = __osViNext->state | 0x10; - __osRestoreInt(saveMask); - return; + u32 saveMask; + + saveMask = __osDisableInt(); + __osViNext->framep = frameBufPtr; + __osViNext->state = __osViNext->state | 0x10; + __osRestoreInt(saveMask); + return; } @@ -9662,38 +9694,38 @@ void osViSwapBuffer(void *frameBufPtr) void osDpSetStatus(u32 data) { - _DPC_STATUS_REG = data; - return; + _DPC_STATUS_REG = data; + return; } -undefined * _VirtualToPhysicalTask(void *param_1) +OSTask * _VirtualToPhysicalTask(OSTask *intp) { - _bcopy(param_1,&tp,0x40); - if (tp.ucode != NULL) { - tp.ucode = (u64 *)osVirtualToPhysical(tp.ucode); - } - if (tp.ucode_data != NULL) { - tp.ucode_data = (u64 *)osVirtualToPhysical(tp.ucode_data); - } - if (tp.dram_stack != NULL) { - tp.dram_stack = (u64 *)osVirtualToPhysical(tp.dram_stack); - } - if (tp.output_buff != NULL) { - tp.output_buff = (u64 *)osVirtualToPhysical(tp.output_buff); - } - if (tp.output_buff_size != NULL) { - tp.output_buff_size = (u64 *)osVirtualToPhysical(tp.output_buff_size); - } - if (tp.data_ptr != NULL) { - tp.data_ptr = (u64 *)osVirtualToPhysical(tp.data_ptr); - } - if (tp.yield_data_ptr != NULL) { - tp.yield_data_ptr = (u64 *)osVirtualToPhysical(tp.yield_data_ptr); - } - return (undefined *)&tp; + _bcopy(intp,&tp,0x40); + if (tp.ucode != NULL) { + tp.ucode = (u64 *)osVirtualToPhysical(tp.ucode); + } + if (tp.ucode_data != NULL) { + tp.ucode_data = (u64 *)osVirtualToPhysical(tp.ucode_data); + } + if (tp.dram_stack != NULL) { + tp.dram_stack = (u64 *)osVirtualToPhysical(tp.dram_stack); + } + if (tp.output_buff != NULL) { + tp.output_buff = (u64 *)osVirtualToPhysical(tp.output_buff); + } + if (tp.output_buff_size != NULL) { + tp.output_buff_size = (u64 *)osVirtualToPhysical(tp.output_buff_size); + } + if (tp.data_ptr != NULL) { + tp.data_ptr = (u64 *)osVirtualToPhysical(tp.data_ptr); + } + if (tp.yield_data_ptr != NULL) { + tp.yield_data_ptr = (u64 *)osVirtualToPhysical(tp.yield_data_ptr); + } + return (OSTask *)&tp; } @@ -9701,34 +9733,34 @@ undefined * _VirtualToPhysicalTask(void *param_1) void osSpTaskLoad(OSTask *intp) { - OSTask *tp; - int iVar1; - - tp = (OSTask *)_VirtualToPhysicalTask(intp); - if ((*(uint *)(*tp + 4) & 1) != 0) { - *(undefined4 *)(*tp + 0x18) = *(undefined4 *)(*tp + 0x38); - *(undefined4 *)(*tp + 0x1c) = *(undefined4 *)(*tp + 0x3c); - *(uint *)(*intp + 4) = *(uint *)(*intp + 4) & 0xfffffffe; - } - osWritebackDCache(tp,0x40); - __osSpSetStatus(0x2b00); - iVar1 = __osSpSetPc(0x4001000); - while (iVar1 == -1) { + OSTask *tp; + int iVar1; + + tp = _VirtualToPhysicalTask(intp); + if ((*(uint *)(*tp + 4) & 1) != 0) { + *(undefined4 *)(*tp + 0x18) = *(undefined4 *)(*tp + 0x38); + *(undefined4 *)(*tp + 0x1c) = *(undefined4 *)(*tp + 0x3c); + *(uint *)(*intp + 4) = *(uint *)(*intp + 4) & 0xfffffffe; + } + osWritebackDCache(tp,0x40); + __osSpSetStatus(0x2b00); iVar1 = __osSpSetPc(0x4001000); - } - iVar1 = __osSpRawStartDma(1,0x4000fc0,tp,0x40); - while (iVar1 == -1) { + while (iVar1 == -1) { + iVar1 = __osSpSetPc(0x4001000); + } iVar1 = __osSpRawStartDma(1,0x4000fc0,tp,0x40); - } - iVar1 = __osSpDeviceBusy(); - while (iVar1 != 0) { + while (iVar1 == -1) { + iVar1 = __osSpRawStartDma(1,0x4000fc0,tp,0x40); + } iVar1 = __osSpDeviceBusy(); - } - iVar1 = __osSpRawStartDma(1,0x4001000,*(void **)(*tp + 8),*(u32 *)(*tp + 0xc)); - while (iVar1 == -1) { + while (iVar1 != 0) { + iVar1 = __osSpDeviceBusy(); + } iVar1 = __osSpRawStartDma(1,0x4001000,*(void **)(*tp + 8),*(u32 *)(*tp + 0xc)); - } - return; + while (iVar1 == -1) { + iVar1 = __osSpRawStartDma(1,0x4001000,*(void **)(*tp + 8),*(u32 *)(*tp + 0xc)); + } + return; } @@ -9736,14 +9768,14 @@ void osSpTaskLoad(OSTask *intp) void osSpTaskStartGo(OSTask *tp) { - int iVar1; - - iVar1 = __osSpDeviceBusy(); - while (iVar1 != 0) { + int iVar1; + iVar1 = __osSpDeviceBusy(); - } - __osSpSetStatus(0x125); - return; + while (iVar1 != 0) { + iVar1 = __osSpDeviceBusy(); + } + __osSpSetStatus(0x125); + return; } @@ -9753,25 +9785,25 @@ void osSpTaskStartGo(OSTask *tp) s32 osDpSetNextBuffer(void *bufPtr,u64 size) { - ulonglong uVar1; - s32 sVar2; - u32 uVar3; - int in_a3_lo; - - uVar1 = __osDpDeviceBusy(); - if (uVar1 == 0) { - _DPC_STATUS_REG = 1; - do { - } while (true); - _DPC_START_REG = osVirtualToPhysical(bufPtr); - uVar3 = osVirtualToPhysical(bufPtr); - _DAT_a4100004 = uVar3 + in_a3_lo; - sVar2 = 0; - } - else { - sVar2 = -1; - } - return sVar2; + ulonglong uVar1; + s32 sVar2; + u32 uVar3; + int in_a3_lo; + + uVar1 = __osDpDeviceBusy(); + if (uVar1 == 0) { + _DPC_STATUS_REG = 1; + do { + } while (true); + _DPC_START_REG = osVirtualToPhysical(bufPtr); + uVar3 = osVirtualToPhysical(bufPtr); + _DAT_a4100004 = uVar3 + in_a3_lo; + sVar2 = 0; + } + else { + sVar2 = -1; + } + return sVar2; } @@ -9779,8 +9811,8 @@ s32 osDpSetNextBuffer(void *bufPtr,u64 size) void osSpTaskYield(void) { - __osSpSetStatus(0x400); - return; + __osSpSetStatus(0x400); + return; } @@ -9788,12 +9820,12 @@ void osSpTaskYield(void) u32 __osGetTLBHi(s32 index) { - setCopReg(0,Index,(longlong)index,0); - EntryHi = TLB_read_indexed_entryHi(Index); - EntryLo0 = TLB_read_indexed_entryLo0(Index); - EntryLo1 = TLB_read_indexed_entryLo1(Index); - PageMask = TLB_read_indexed_entryLo1(Index); - return EntryHi._4_4_; + setCopReg(0,Index,(longlong)index,0); + EntryHi = TLB_read_indexed_entryHi(Index); + EntryLo0 = TLB_read_indexed_entryLo0(Index); + EntryLo1 = TLB_read_indexed_entryLo1(Index); + PageMask = TLB_read_indexed_entryLo1(Index); + return EntryHi._4_4_; } @@ -9801,20 +9833,20 @@ u32 __osGetTLBHi(s32 index) u32 osVirtualToPhysical(void *virtualAddress) { - uint in_v0_lo; - - if ((virtualAddress < &UT_VEC) || ((void *)0x9fffffff < virtualAddress)) { - if ((virtualAddress < (void *)0xa0000000) || ((void *)0xbfffffff < virtualAddress)) { - __osProbeTLB(virtualAddress); + uint uVar1; + + if ((virtualAddress < &UT_VEC) || ((void *)0x9fffffff < virtualAddress)) { + if ((virtualAddress < (void *)0xa0000000) || ((void *)0xbfffffff < virtualAddress)) { + uVar1 = __osProbeTLB(virtualAddress); + } + else { + uVar1 = (uint)virtualAddress & 0x1fffffff; + } } else { - in_v0_lo = (uint)virtualAddress & 0x1fffffff; + uVar1 = (uint)virtualAddress & 0x1fffffff; } - } - else { - in_v0_lo = (uint)virtualAddress & 0x1fffffff; - } - return (u32)in_v0_lo; + return (u32)uVar1; } @@ -9824,61 +9856,61 @@ u32 osVirtualToPhysical(void *virtualAddress) s32 osAiSetFrequency(u32 frequency) { - int iVar1; - uint bitRate; - uint dacRate; - float fVar2; - float f; - - fVar2 = (float)frequency; - if ((int)frequency < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - f = (float)osViClock / fVar2 + 0.50000000; - if (false) { - fVar2 = ROUND(f); - } - else { - fVar2 = FLOOR(f); - } - dacRate = (uint)fVar2; - if (true) { - if (-1 < (int)dacRate) goto LAB_7000e9f4; - } - else { + int iVar1; + uint bitRate; + uint dacRate; + float fVar2; + float f; + + fVar2 = (float)frequency; + if ((int)frequency < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + f = (float)osViClock / fVar2 + 0.50000000; if (false) { - fVar2 = ROUND(f - 2147483648.00000000); + fVar2 = ROUND(f); } else { - fVar2 = FLOOR(f - 2147483648.00000000); + fVar2 = FLOOR(f); } + dacRate = (uint)fVar2; if (true) { - dacRate = (int)fVar2 | 0x80000000; - goto LAB_7000e9f4; + if (-1 < (int)dacRate) goto LAB_7000e9f4; } - } - dacRate = 0xffffffff; + else { + if (false) { + fVar2 = ROUND(f - 2147483648.00000000); + } + else { + fVar2 = FLOOR(f - 2147483648.00000000); + } + if (true) { + dacRate = (int)fVar2 | 0x80000000; + goto LAB_7000e9f4; + } + } + dacRate = 0xffffffff; LAB_7000e9f4: - if (dacRate < 0x84) { - iVar1 = -1; - } - else { - bitRate = dacRate / 0x42 & 0xff; - if (0x10 < bitRate) { - bitRate = 0x10; + if (dacRate < 0x84) { + iVar1 = -1; } - _AI_DACRATE_REG = dacRate - 1; - _AI_BITRATE_REG = bitRate - 1; - _AI_CONTROL_REG = 1; - iVar1 = osViClock / (int)dacRate; - if (dacRate == 0) { - trap(0x1c00); + else { + bitRate = dacRate / 0x42 & 0xff; + if (0x10 < bitRate) { + bitRate = 0x10; + } + _AI_DACRATE_REG = dacRate - 1; + _AI_BITRATE_REG = bitRate - 1; + _AI_CONTROL_REG = 1; + iVar1 = osViClock / (int)dacRate; + if (dacRate == 0) { + trap(0x1c00); + } + if ((dacRate == 0xffffffff) && (osViClock == -0x80000000)) { + trap(0x1800); + } } - if ((dacRate == 0xffffffff) && (osViClock == -0x80000000)) { - trap(0x1800); - } - } - return (s32)iVar1; + return (s32)iVar1; } @@ -9886,19 +9918,19 @@ LAB_7000e9f4: void alUnlink(ALLink *a) { - ALLink_s *ln; - - if (a->next == NULL) { - ln = a->prev; - } - else { - a->next->prev = a->prev; - ln = a->prev; - } - if (ln != NULL) { - ln->next = a->next; - } - return; + ALLink_s *ln; + + if (a->next == NULL) { + ln = a->prev; + } + else { + a->next->prev = a->prev; + ln = a->prev; + } + if (ln != NULL) { + ln->next = a->next; + } + return; } @@ -9906,16 +9938,16 @@ void alUnlink(ALLink *a) void alLink(ALLink *a,ALLink *b) { - ALLink_s *to; - - to = b->next; - *(ALLink **)&a->prev = b; - a->next = to; - if (b->next != NULL) { - *(ALLink **)&b->next->prev = a; - } - *(ALLink **)&b->next = a; - return; + ALLink_s *to; + + to = b->next; + *(ALLink **)&a->prev = b; + a->next = to; + if (b->next != NULL) { + *(ALLink **)&b->next->prev = a; + } + *(ALLink **)&b->next = a; + return; } @@ -9923,11 +9955,11 @@ void alLink(ALLink *a,ALLink *b) void alClose(ALGlobals *glob) { - if (slg != NULL) { - alSynDelete((ALSynth *)glob); - slg = NULL; - } - return; + if (slg != NULL) { + alSynDelete((ALSynth *)glob); + slg = NULL; + } + return; } @@ -9935,11 +9967,11 @@ void alClose(ALGlobals *glob) void alInit(ALGlobals *g,ALSynConfig *c) { - if (slg == NULL) { - slg = g; - alSynNew((ALSynth *)g,c); - } - return; + if (slg == NULL) { + slg = g; + alSynNew((ALSynth *)g,c); + } + return; } @@ -9947,13 +9979,13 @@ void alInit(ALGlobals *g,ALSynConfig *c) void _alHeapDBAlloc(u8 *file,s32 line,ALHeap *hp,s32 num,s32 size) { - uint bytes; - - bytes = num * size + 0xfU & 0xfffffff0; - if (hp->cur + bytes <= hp->base + hp->len) { - hp->cur = hp->cur + bytes; - } - return; + uint bytes; + + bytes = num * size + 0xfU & 0xfffffff0; + if (hp->cur + bytes <= hp->base + hp->len) { + hp->cur = hp->cur + bytes; + } + return; } @@ -9961,19 +9993,19 @@ void _alHeapDBAlloc(u8 *file,s32 line,ALHeap *hp,s32 num,s32 size) OSTime osGetTime(void) { - int iVar1; - uint uVar2; - u32 savedMask; - u32 CurrentCount; - int elapseCount; - - savedMask = __osDisableInt(); - CurrentCount = osGetCount(); - uVar2 = __osCurrentTime._4_4_; - iVar1 = __osCurrentTime._0_4_; - elapseCount = CurrentCount - __osBaseCounter; - __osRestoreInt(savedMask); - return (longlong)(int)((uint)(elapseCount + uVar2 < uVar2) + iVar1); + int iVar1; + uint uVar2; + u32 savedMask; + u32 CurrentCount; + int elapseCount; + + savedMask = __osDisableInt(); + CurrentCount = osGetCount(); + uVar2 = __osCurrentTime._4_4_; + iVar1 = __osCurrentTime._0_4_; + elapseCount = CurrentCount - __osBaseCounter; + __osRestoreInt(savedMask); + return (longlong)(int)((uint)(elapseCount + uVar2 < uVar2) + iVar1); } @@ -9981,7 +10013,7 @@ OSTime osGetTime(void) longlong __ull_rshift(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { - return (longlong)(CONCAT44(param_1,param_2) >> CONCAT44(param_3,param_4)) >> 0x20; + return (longlong)(CONCAT44(param_1,param_2) >> CONCAT44(param_3,param_4)) >> 0x20; } @@ -9989,10 +10021,10 @@ longlong __ull_rshift(undefined4 param_1,undefined4 param_2,undefined4 param_3,u longlong __ull_rem(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { - if (CONCAT44(param_3,param_4) == 0) { - trap(0x1c00); - } - return (longlong)(CONCAT44(param_1,param_2) % CONCAT44(param_3,param_4)) >> 0x20; + if (CONCAT44(param_3,param_4) == 0) { + trap(0x1c00); + } + return (longlong)(CONCAT44(param_1,param_2) % CONCAT44(param_3,param_4)) >> 0x20; } @@ -10000,10 +10032,10 @@ longlong __ull_rem(undefined4 param_1,undefined4 param_2,undefined4 param_3,unde ulonglong __ull_div(undefined4 left_u,undefined4 left_l,undefined4 right_u,undefined4 right_l) { - if (CONCAT44(right_u,right_l) == 0) { - trap(0x1c00); - } - return (longlong)(CONCAT44(left_u,left_l) / CONCAT44(right_u,right_l)) >> 0x20; + if (CONCAT44(right_u,right_l) == 0) { + trap(0x1c00); + } + return (longlong)(CONCAT44(left_u,left_l) / CONCAT44(right_u,right_l)) >> 0x20; } @@ -10011,7 +10043,7 @@ ulonglong __ull_div(undefined4 left_u,undefined4 left_l,undefined4 right_u,undef longlong __ll_lshift(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { - return (CONCAT44(param_1,param_2) << CONCAT44(param_3,param_4)) >> 0x20; + return (CONCAT44(param_1,param_2) << CONCAT44(param_3,param_4)) >> 0x20; } @@ -10019,10 +10051,10 @@ longlong __ll_lshift(undefined4 param_1,undefined4 param_2,undefined4 param_3,un longlong __ll_rem(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { - if (CONCAT44(param_3,param_4) == 0) { - trap(0x1c00); - } - return (longlong)(CONCAT44(param_1,param_2) % CONCAT44(param_3,param_4)) >> 0x20; + if (CONCAT44(param_3,param_4) == 0) { + trap(0x1c00); + } + return (longlong)(CONCAT44(param_1,param_2) % CONCAT44(param_3,param_4)) >> 0x20; } @@ -10030,16 +10062,16 @@ longlong __ll_rem(undefined4 param_1,undefined4 param_2,undefined4 param_3,undef longlong __ll_div(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { - longlong lVar1; - - lVar1 = CONCAT44(param_3,param_4); - if (lVar1 == 0) { - trap(0x1c00); - } - if ((lVar1 == -1) && (CONCAT44(param_1,param_2) == -0x8000000000000000)) { - trap(0x1800); - } - return CONCAT44(param_1,param_2) / lVar1 >> 0x20; + longlong lVar1; + + lVar1 = CONCAT44(param_3,param_4); + if (lVar1 == 0) { + trap(0x1c00); + } + if ((lVar1 == -1) && (CONCAT44(param_1,param_2) == -0x8000000000000000)) { + trap(0x1800); + } + return CONCAT44(param_1,param_2) / lVar1 >> 0x20; } @@ -10047,7 +10079,7 @@ longlong __ll_div(undefined4 param_1,undefined4 param_2,undefined4 param_3,undef longlong __ll_mul(undefined4 left_u,undefined4 left_l,undefined4 right_u,undefined4 right_l) { - return CONCAT44(left_u,left_l) * CONCAT44(right_u,right_l) >> 0x20; + return CONCAT44(left_u,left_l) * CONCAT44(right_u,right_l) >> 0x20; } @@ -10056,39 +10088,39 @@ void __ull_divremi(ulonglong *param_1,ulonglong *param_2,undefined4 param_3,unde short param_5) { - if ((longlong)param_5 == 0) { - trap(0x1c00); - } - *param_1 = CONCAT44(param_3,param_4) / (ulonglong)(longlong)param_5; - if ((longlong)param_5 == 0) { - trap(0x1c00); - } - *param_2 = CONCAT44(param_3,param_4) % (longlong)param_5; - return; + if ((longlong)param_5 == 0) { + trap(0x1c00); + } + *param_1 = CONCAT44(param_3,param_4) / (ulonglong)(longlong)param_5; + if ((longlong)param_5 == 0) { + trap(0x1c00); + } + *param_2 = CONCAT44(param_3,param_4) % (longlong)param_5; + return; } -undefined4 __ll_mod(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) +undefined4 __ll_mod(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4) { - longlong lVar1; - longlong lVar2; - undefined4 uStack8; - - lVar1 = CONCAT44(param_3,param_4); - lVar2 = CONCAT44(param_1,param_2) % lVar1; - if (lVar1 == 0) { - trap(0x1c00); - } - if ((lVar1 == -1) && (CONCAT44(param_1,param_2) == -0x8000000000000000)) { - trap(0x1800); - } - uStack8 = (undefined4)((ulonglong)lVar2 >> 0x20); - if (((lVar2 < 0) && (0 < lVar1)) || ((0 < lVar2 && (CONCAT44(param_3,param_4) < 0)))) { - uStack8 = (undefined4)((ulonglong)(lVar2 + CONCAT44(param_3,param_4)) >> 0x20); - } - return uStack8; + longlong lVar1; + longlong lVar2; + undefined4 uStack8; + + lVar1 = CONCAT44(param_3,param_4); + lVar2 = CONCAT44(param_1,param_2) % lVar1; + if (lVar1 == 0) { + trap(0x1c00); + } + if ((lVar1 == -1) && (CONCAT44(param_1,param_2) == -0x8000000000000000)) { + trap(0x1800); + } + uStack8 = (undefined4)((ulonglong)lVar2 >> 0x20); + if (((lVar2 < 0) && (0 < lVar1)) || ((0 < lVar2 && (param_3 < 0)))) { + uStack8 = (undefined4)((ulonglong)(lVar2 + CONCAT44(param_3,param_4)) >> 0x20); + } + return uStack8; } @@ -10096,7 +10128,7 @@ undefined4 __ll_mod(undefined4 param_1,undefined4 param_2,undefined4 param_3,und longlong __ll_lshift(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { - return (CONCAT44(param_1,param_2) >> CONCAT44(param_3,param_4)) >> 0x20; + return (CONCAT44(param_1,param_2) >> CONCAT44(param_3,param_4)) >> 0x20; } @@ -10106,25 +10138,25 @@ longlong __ll_lshift(undefined4 param_1,undefined4 param_2,undefined4 param_3,un s32 osAiSetNextBuffer(void *bufPtr,u32 size) { - ulonglong uVar1; - s32 sVar2; - void *bPtr; - - bPtr = bufPtr; - if (hdwrBugFlag != false) { - bPtr = (void *)((int)bufPtr + -0x2000); - } - hdwrBugFlag = ((int)bufPtr + size & 0x3fff) == 0x2000; - uVar1 = __osAiDeviceBusy(); - if (uVar1 == 0) { - _AI_DRAM_ADDR_REG = osVirtualToPhysical(bPtr); - sVar2 = 0; - _AI_LEN_REG = size; - } - else { - sVar2 = -1; - } - return sVar2; + ulonglong uVar1; + s32 sVar2; + void *bPtr; + + bPtr = bufPtr; + if (hdwrBugFlag != false) { + bPtr = (void *)((int)bufPtr + -0x2000); + } + hdwrBugFlag = ((int)bufPtr + size & 0x3fff) == 0x2000; + uVar1 = __osAiDeviceBusy(); + if (uVar1 == 0) { + _AI_DRAM_ADDR_REG = osVirtualToPhysical(bPtr); + sVar2 = 0; + _AI_LEN_REG = size; + } + else { + sVar2 = -1; + } + return sVar2; } @@ -10134,7 +10166,7 @@ s32 osAiSetNextBuffer(void *bufPtr,u32 size) undefined4 osAiGetLength(void) { - return _AI_LEN_REG; + return _AI_LEN_REG; } @@ -10142,7 +10174,7 @@ undefined4 osAiGetLength(void) void dummy7000EFBC(void) { - return; + return; } @@ -10150,10 +10182,10 @@ void dummy7000EFBC(void) int _timeToSamples(ALSynth *synth,int micros) { - uint in_register_00001030; - - return (int)((int)((double)((float)micros * (float)synth->outputRate) / dbl_80029420 + - (double)((ulonglong)in_register_00001030 << 0x20)) & 0xfffffff0); + uint in_register_00001030; + + return (int)((int)((double)((float)micros * (float)synth->outputRate) / dbl_80029420 + + (double)((ulonglong)in_register_00001030 << 0x20)) & 0xfffffff0); } @@ -10161,9 +10193,9 @@ int _timeToSamples(ALSynth *synth,int micros) void _freePVoice(ALSynth *drvr,PVoice *pvoice) { - alUnlink((ALLink *)pvoice); - alLink((ALLink *)pvoice,&drvr->pLameList); - return; + alUnlink((ALLink *)pvoice); + alLink((ALLink *)pvoice,&drvr->pLameList); + return; } @@ -10171,15 +10203,15 @@ void _freePVoice(ALSynth *drvr,PVoice *pvoice) void _collectPVoices(ALSynth *drvr) { - ALLink *dl; - - dl = (ALLink *)(drvr->pLameList).next; - while (dl != NULL) { - alUnlink(dl); - alLink(dl,&drvr->pFreeList); + ALLink *dl; + dl = (ALLink *)(drvr->pLameList).next; - } - return; + while (dl != NULL) { + alUnlink(dl); + alLink(dl,&drvr->pFreeList); + dl = (ALLink *)(drvr->pLameList).next; + } + return; } @@ -10187,12 +10219,12 @@ void _collectPVoices(ALSynth *drvr) void __freeParam(ALParam *param) { - ALGlobals *pAVar1; - - pAVar1 = slg; - *(ALParam_s **)param = (slg->drvr).paramList; - *(ALParam **)&(pAVar1->drvr).paramList = param; - return; + ALGlobals *pAVar1; + + pAVar1 = slg; + *(ALParam_s **)param = (slg->drvr).paramList; + *(ALParam **)&(pAVar1->drvr).paramList = param; + return; } @@ -10200,18 +10232,18 @@ void __freeParam(ALParam *param) ALParam ___allocParam(void) { - ALParam_s **ppAVar1; - ALParam_s *update; - ALParam_s *drvr; - - ppAVar1 = (ALParam_s **)(slg->drvr).paramList; - update._3_1_ = (ALParam)0x0; - if (ppAVar1 != NULL) { - (slg->drvr).paramList = *ppAVar1; - *ppAVar1 = NULL; - update._3_1_ = SUB41(ppAVar1,0); - } - return update._3_1_; + ALParam_s **ppAVar1; + ALParam_s *update; + ALParam_s *drvr; + + ppAVar1 = (ALParam_s **)(slg->drvr).paramList; + update._3_1_ = (ALParam)0x0; + if (ppAVar1 != NULL) { + (slg->drvr).paramList = *ppAVar1; + *ppAVar1 = NULL; + update._3_1_ = SUB41(ppAVar1,0); + } + return update._3_1_; } @@ -10219,120 +10251,119 @@ ALParam ___allocParam(void) void dummy7000F100(void) { - return; + return; } -longlong _alAudioFrame(Acmd *cmdList,s32 *cmdLen,s16 *outBuf,s32 outLen) +Acmd * alAudioFrame(Acmd *cmdList,s32 *cmdLen,s16 *outBuf,s32 outLen) { - ALPlayer_s *pAVar1; - ALFilter_s *pAVar2; - ALSynth *pAVar3; - ALGlobals *drvr; - double dVar4; - ALPlayer *pAVar6; - ALMicroTime AVar7; - longlong lVar5; - s32 sVar8; - int iVar9; - int iVar10; - undefined4 *puVar11; - s32 sVar12; - ulonglong unaff_f22; - undefined2 auStack14 [5]; - ALPlayer *pAStack4; - - drvr = slg; - lVar5 = (longlong)(int)cmdList; - auStack14[0] = 0; - if ((slg->drvr).head == NULL) { - *cmdLen = 0; - } - else { - pAStack4 = NULL; - pAVar6 = (slg->drvr).head; - iVar9 = 0x7fffffff; - if (pAVar6 != NULL) { - sVar8 = (slg->drvr).curSamples; - sVar12 = pAVar6->samplesLeft; - while( true ) { - if (sVar12 - sVar8 < iVar9) { - sVar8 = (slg->drvr).curSamples; - iVar9 = pAVar6->samplesLeft - sVar8; - pAVar1 = pAVar6->next; - pAStack4 = pAVar6; - } - else { - pAVar1 = pAVar6->next; - } - if (pAVar1 == NULL) break; - sVar12 = pAVar1->samplesLeft; - pAVar6 = (ALPlayer *)pAVar1; - } + ALPlayer_s *pAVar1; + ALFilter_s *output; + ALSynth *pAVar2; + ALGlobals *drvr; + double dVar3; + ALPlayer *pAVar4; + ALMicroTime AVar5; + s32 sVar6; + int iVar7; + int nOut; + Acmd *cmdlEnd; + s32 sVar8; + ulonglong unaff_f22; + undefined2 auStack14 [5]; + ALPlayer *pAStack4; + + drvr = slg; + auStack14[0] = 0; + cmdlEnd = cmdList; + if ((slg->drvr).head == NULL) { + *cmdLen = 0; } - pAVar3 = &slg->drvr; - iVar9 = pAStack4->samplesLeft; - (slg->drvr).paramSamples = iVar9; - dVar4 = dbl_80029428; - if (iVar9 - pAVar3->curSamples < outLen) { - do { - iVar9 = 0x7fffffff; - (drvr->drvr).paramSamples = (drvr->drvr).paramSamples & 0xfffffff0; - AVar7 = (*pAStack4->handler)(pAStack4); - pAStack4->samplesLeft = - pAStack4->samplesLeft + - (int)((double)((float)AVar7 * (float)(drvr->drvr).outputRate) / dVar4 + - (double)(unaff_f22 & 0xffffffff00000000)); + else { pAStack4 = NULL; - pAVar6 = (drvr->drvr).head; - if (pAVar6 != NULL) { - sVar8 = (drvr->drvr).curSamples; - sVar12 = pAVar6->samplesLeft; - while( true ) { - if (sVar12 - sVar8 < iVar9) { - sVar8 = (drvr->drvr).curSamples; - iVar9 = pAVar6->samplesLeft - sVar8; - pAVar1 = pAVar6->next; - pAStack4 = pAVar6; + pAVar4 = (slg->drvr).head; + iVar7 = 0x7fffffff; + if (pAVar4 != NULL) { + sVar6 = (slg->drvr).curSamples; + sVar8 = pAVar4->samplesLeft; + while( true ) { + if (sVar8 - sVar6 < iVar7) { + sVar6 = (slg->drvr).curSamples; + iVar7 = pAVar4->samplesLeft - sVar6; + pAVar1 = pAVar4->next; + pAStack4 = pAVar4; + } + else { + pAVar1 = pAVar4->next; + } + if (pAVar1 == NULL) break; + sVar8 = pAVar1->samplesLeft; + pAVar4 = (ALPlayer *)pAVar1; } - else { - pAVar1 = pAVar6->next; - } - if (pAVar1 == NULL) break; - sVar12 = pAVar1->samplesLeft; - pAVar6 = (ALPlayer *)pAVar1; - } } - iVar9 = pAStack4->samplesLeft; - (drvr->drvr).paramSamples = iVar9; - } while (iVar9 - (drvr->drvr).curSamples < outLen); - } - (drvr->drvr).paramSamples = (drvr->drvr).paramSamples & 0xfffffff0; - if (0 < outLen) { - do { - iVar9 = (drvr->drvr).maxOutSamples; - iVar10 = outLen; - if (iVar9 < outLen) { - iVar10 = iVar9; + pAVar2 = &slg->drvr; + iVar7 = pAStack4->samplesLeft; + (slg->drvr).paramSamples = iVar7; + dVar3 = dbl_80029428; + if (iVar7 - pAVar2->curSamples < outLen) { + do { + iVar7 = 0x7fffffff; + (drvr->drvr).paramSamples = (drvr->drvr).paramSamples & 0xfffffff0; + AVar5 = (*pAStack4->handler)(pAStack4); + pAStack4->samplesLeft = + pAStack4->samplesLeft + + (int)((double)((float)AVar5 * (float)(drvr->drvr).outputRate) / dVar3 + + (double)(unaff_f22 & 0xffffffff00000000)); + pAStack4 = NULL; + pAVar4 = (drvr->drvr).head; + if (pAVar4 != NULL) { + sVar6 = (drvr->drvr).curSamples; + sVar8 = pAVar4->samplesLeft; + while( true ) { + if (sVar8 - sVar6 < iVar7) { + sVar6 = (drvr->drvr).curSamples; + iVar7 = pAVar4->samplesLeft - sVar6; + pAVar1 = pAVar4->next; + pAStack4 = pAVar4; + } + else { + pAVar1 = pAVar4->next; + } + if (pAVar1 == NULL) break; + sVar8 = pAVar1->samplesLeft; + pAVar4 = (ALPlayer *)pAVar1; + } + } + iVar7 = pAStack4->samplesLeft; + (drvr->drvr).paramSamples = iVar7; + } while (iVar7 - (drvr->drvr).curSamples < outLen); } - puVar11 = (undefined4 *)lVar5; - *puVar11 = 0x7000000; - puVar11[1] = 0; - pAVar2 = (drvr->drvr).outputFilter; - (**(code **)(pAVar2 + 8))(pAVar2,6,outBuf); - lVar5 = (**(code **)(pAVar2 + 4)) - (pAVar2,auStack14,iVar10,(drvr->drvr).curSamples,puVar11 + 2); - outLen -= iVar10; - outBuf = outBuf + iVar10 * 2; - (drvr->drvr).curSamples = (drvr->drvr).curSamples + iVar10; - } while (0 < outLen); + (drvr->drvr).paramSamples = (drvr->drvr).paramSamples & 0xfffffff0; + if (0 < outLen) { + do { + iVar7 = (drvr->drvr).maxOutSamples; + nOut = outLen; + if (iVar7 < outLen) { + nOut = iVar7; + } + *(undefined4 *)cmdlEnd = 0x7000000; + *(undefined4 *)((int)cmdlEnd + 4) = 0; + output = (drvr->drvr).outputFilter; + (**(code **)(output + 8))(output,6,outBuf); + cmdlEnd = (Acmd *)(**(code **)(output + 4)) + (output,auStack14,nOut,(drvr->drvr).curSamples, + cmdlEnd + 1); + outLen -= nOut; + outBuf = outBuf + nOut * 2; + (drvr->drvr).curSamples = (drvr->drvr).curSamples + nOut; + } while (0 < outLen); + } + *cmdLen = (int)((int)cmdlEnd - (int)cmdList) >> 3; + _collectPVoices((ALSynth *)drvr); } - *cmdLen = (int)lVar5 - (int)cmdList >> 3; - _collectPVoices((ALSynth *)drvr); - } - return lVar5; + return cmdlEnd; } @@ -10340,106 +10371,106 @@ longlong _alAudioFrame(Acmd *cmdList,s32 *cmdLen,s16 *outBuf,s32 outLen) void alSynNew(ALSynth *drvr,ALSynConfig *c) { - ALHeap *hp; - ALAuxBus_s *save; - ALSave *sources; - ALFxRef pvVar1; - int iVar2; - s32 sVar3; - ALParam_s **ppAVar4; - ALLink *a; - ALParam_s *pAVar5; - longlong lVar6; - ALEnvMixer *e; - ALResampler *r; - ALLoadFilter *f; - int iVar7; - - hp = c->heap; - drvr->head = NULL; - sVar3 = c->maxPVoices; - drvr->curSamples = 0; - drvr->paramSamples = 0; - drvr->numPVoices = sVar3; - sVar3 = c->outputRate; - drvr->maxOutSamples = 0xa0; - drvr->outputRate = sVar3; - drvr->dma = c->dmaproc; - _alHeapDBAlloc(NULL,0,hp,1,0x1c); - sources = (ALSave *)save; - alSaveNew((ALSave *)save); - *(ALAuxBus_s **)&drvr->outputFilter = save; - _alHeapDBAlloc(NULL,0,hp,1,0x4c); - *(ALSave **)&drvr->auxBus = sources; - drvr->maxAuxBusses = 1; - _alHeapDBAlloc(NULL,0,hp,c->maxPVoices,4); - alAuxBusNew((ALAuxBus *)drvr->auxBus,sources,c->maxPVoices); - _alHeapDBAlloc(NULL,0,hp,1,0x20); - *(ALSave **)&drvr->mainBus = sources; - _alHeapDBAlloc(NULL,0,hp,c->maxPVoices,4); - alMainBusNew((ALMainBus *)drvr->mainBus,sources,c->maxPVoices); - if (c->fxType == '\0') { - pvVar1 = (ALFxRef)alMainBusParam(drvr->mainBus,2,drvr->auxBus); - (drvr->pFreeList).next = NULL; - } - else { - pvVar1 = _alSynAllocFX(drvr,0,c,hp); - (drvr->pFreeList).next = NULL; - } - lVar6 = (longlong)(int)pvVar1; - (drvr->pFreeList).prev = NULL; - (drvr->pLameList).next = NULL; - (drvr->pLameList).prev = NULL; - (drvr->pAllocList).next = NULL; - (drvr->pAllocList).prev = NULL; - _alHeapDBAlloc(NULL,0,hp,c->maxPVoices,0xdc); - iVar7 = 0; - if (0 < c->maxPVoices) { - iVar2 = (int)lVar6; - e = (ALEnvMixer *)(iVar2 + 0x8c); - r = (ALResampler *)(iVar2 + 0x58); - f = (ALLoadFilter *)(iVar2 + 0x10); - do { - a = (ALLink *)lVar6; - alLink(a,&drvr->pFreeList); - a[1].next = NULL; - alLoadNew(f,drvr->dma,hp); - alLoadParam(f,1,NULL); - alResampleNew(r,hp); - alResampleParam(r,1,f); - alEnvmixerNew(e,hp); - alEnvmixerParam(e,1,r); - alAuxBusParam(drvr->auxBus,2,e); - a[1].prev = (ALLink_s *)&a[0x11].prev; - iVar7 += 1; - lVar6 = (longlong)(int)&a[0x1b].prev; - e = (ALEnvMixer *)&e[3].first; - r = (ALResampler *)&r[6].state; - f = (ALLoadFilter *)&f[3].memin; - } while (iVar7 < c->maxPVoices); - } - iVar7 = 0; - sVar3 = alSaveParam(save,1,drvr->mainBus); - lVar6 = (longlong)sVar3; - _alHeapDBAlloc(NULL,0,hp,c->maxUpdates,0x1c); - drvr->paramList = NULL; - if (c->maxUpdates < 1) { - drvr->heap = hp; - } - else { - pAVar5 = drvr->paramList; - while( true ) { - iVar7 += 1; - ppAVar4 = (ALParam_s **)lVar6; - *ppAVar4 = pAVar5; - *(ALParam_s ***)&drvr->paramList = ppAVar4; - lVar6 = (longlong)(int)(ppAVar4 + 7); - if (c->maxUpdates <= iVar7) break; - pAVar5 = drvr->paramList; + ALHeap *hp; + ALAuxBus_s *save; + ALSave *sources; + ALFxRef pvVar1; + int iVar2; + s32 sVar3; + ALParam_s **ppAVar4; + ALLink *a; + ALParam_s *pAVar5; + longlong lVar6; + ALEnvMixer *e; + ALResampler *r; + ALLoadFilter *f; + int iVar7; + + hp = c->heap; + drvr->head = NULL; + sVar3 = c->maxPVoices; + drvr->curSamples = 0; + drvr->paramSamples = 0; + drvr->numPVoices = sVar3; + sVar3 = c->outputRate; + drvr->maxOutSamples = 0xa0; + drvr->outputRate = sVar3; + drvr->dma = c->dmaproc; + _alHeapDBAlloc(NULL,0,hp,1,0x1c); + sources = (ALSave *)save; + alSaveNew((ALSave *)save); + *(ALAuxBus_s **)&drvr->outputFilter = save; + _alHeapDBAlloc(NULL,0,hp,1,0x4c); + *(ALSave **)&drvr->auxBus = sources; + drvr->maxAuxBusses = 1; + _alHeapDBAlloc(NULL,0,hp,c->maxPVoices,4); + alAuxBusNew((ALAuxBus *)drvr->auxBus,sources,c->maxPVoices); + _alHeapDBAlloc(NULL,0,hp,1,0x20); + *(ALSave **)&drvr->mainBus = sources; + _alHeapDBAlloc(NULL,0,hp,c->maxPVoices,4); + alMainBusNew((ALMainBus *)drvr->mainBus,sources,c->maxPVoices); + if (c->fxType == '\0') { + pvVar1 = (ALFxRef)alMainBusParam(drvr->mainBus,2,drvr->auxBus); + (drvr->pFreeList).next = NULL; } - drvr->heap = hp; - } - return; + else { + pvVar1 = _alSynAllocFX(drvr,0,c,hp); + (drvr->pFreeList).next = NULL; + } + lVar6 = (longlong)(int)pvVar1; + (drvr->pFreeList).prev = NULL; + (drvr->pLameList).next = NULL; + (drvr->pLameList).prev = NULL; + (drvr->pAllocList).next = NULL; + (drvr->pAllocList).prev = NULL; + _alHeapDBAlloc(NULL,0,hp,c->maxPVoices,0xdc); + iVar7 = 0; + if (0 < c->maxPVoices) { + iVar2 = (int)lVar6; + e = (ALEnvMixer *)(iVar2 + 0x8c); + r = (ALResampler *)(iVar2 + 0x58); + f = (ALLoadFilter *)(iVar2 + 0x10); + do { + a = (ALLink *)lVar6; + alLink(a,&drvr->pFreeList); + a[1].next = NULL; + alLoadNew(f,drvr->dma,hp); + alLoadParam(f,1,NULL); + alResampleNew(r,hp); + alResampleParam(r,1,f); + alEnvmixerNew(e,hp); + alEnvmixerParam(e,1,r); + alAuxBusParam(drvr->auxBus,2,e); + a[1].prev = (ALLink_s *)&a[0x11].prev; + iVar7 += 1; + lVar6 = (longlong)(int)&a[0x1b].prev; + e = (ALEnvMixer *)&e[3].first; + r = (ALResampler *)&r[6].state; + f = (ALLoadFilter *)&f[3].memin; + } while (iVar7 < c->maxPVoices); + } + iVar7 = 0; + sVar3 = alSaveParam(save,1,drvr->mainBus); + lVar6 = (longlong)sVar3; + _alHeapDBAlloc(NULL,0,hp,c->maxUpdates,0x1c); + drvr->paramList = NULL; + if (c->maxUpdates < 1) { + drvr->heap = hp; + } + else { + pAVar5 = drvr->paramList; + while( true ) { + iVar7 += 1; + ppAVar4 = (ALParam_s **)lVar6; + *ppAVar4 = pAVar5; + *(ALParam_s ***)&drvr->paramList = ppAVar4; + lVar6 = (longlong)(int)(ppAVar4 + 7); + if (c->maxUpdates <= iVar7) break; + pAVar5 = drvr->paramList; + } + drvr->heap = hp; + } + return; } @@ -10448,35 +10479,35 @@ s32 osPiStartDma(OSIoMesg *mb,s32 priority,s32 direction,u32 devAddr,void *dramA OSMesgQueue *mq) { - OSMesgQueue *mq_00; - s32 ret; - - if (__osPiDevMgr.active == 0) { - ret = -1; - } - else { - if (direction == 0) { - (mb->hdr).type = 0xb; + OSMesgQueue *mq_00; + s32 ret; + + if (__osPiDevMgr.active == 0) { + ret = -1; } else { - (mb->hdr).type = 0xc; + if (direction == 0) { + (mb->hdr).type = 0xb; + } + else { + (mb->hdr).type = 0xc; + } + (mb->hdr).pri = (u8)priority; + (mb->hdr).retQueue = mq; + mb->dramAddr = dramAddr; + mb->devAddr = devAddr; + mb->size = size; + mb->piHandle = NULL; + if (priority == 1) { + mq_00 = (OSMesgQueue *)osPiGetCmdQueue(); + ret = osJamMesg(mq_00,mb,0); + } + else { + mq_00 = (OSMesgQueue *)osPiGetCmdQueue(); + ret = osSendMesg(mq_00,mb,0); + } } - (mb->hdr).pri = (u8)priority; - (mb->hdr).retQueue = mq; - mb->dramAddr = dramAddr; - mb->devAddr = devAddr; - mb->size = size; - mb->piHandle = NULL; - if (priority == 1) { - mq_00 = (OSMesgQueue *)osPiGetCmdQueue(); - ret = osJamMesg(mq_00,mb,0); - } - else { - mq_00 = (OSMesgQueue *)osPiGetCmdQueue(); - ret = osSendMesg(mq_00,mb,0); - } - } - return ret; + return ret; } @@ -10484,38 +10515,38 @@ s32 osPiStartDma(OSIoMesg *mb,s32 priority,s32 direction,u32 devAddr,void *dramA void osViSetSpecialFeatures(u32 func) { - u32 saveMask; - - saveMask = __osDisableInt(); - if ((func & 1) != 0) { - __osViNext->control = __osViNext->control | 8; - } - if ((func & 2) != 0) { - __osViNext->control = __osViNext->control & 0xfffffff7; - } - if ((func & 4) != 0) { - __osViNext->control = __osViNext->control | 4; - } - if ((func & 8) != 0) { - __osViNext->control = __osViNext->control & 0xfffffffb; - } - if ((func & 0x10) != 0) { - __osViNext->control = __osViNext->control | 0x10; - } - if ((func & 0x20) != 0) { - __osViNext->control = __osViNext->control & 0xffffffef; - } - if ((func & 0x40) != 0) { - __osViNext->control = __osViNext->control | 0x10000; - __osViNext->control = __osViNext->control & 0xfffffcff; - } - if ((func & 0x80) != 0) { - __osViNext->control = __osViNext->control & 0xfffeffff; - __osViNext->control = __osViNext->control | (__osViNext->modep->comRegs).ctrl & 0x300; - } - __osViNext->state = __osViNext->state | 8; - __osRestoreInt(saveMask); - return; + u32 saveMask; + + saveMask = __osDisableInt(); + if ((func & 1) != 0) { + __osViNext->control = __osViNext->control | 8; + } + if ((func & 2) != 0) { + __osViNext->control = __osViNext->control & 0xfffffff7; + } + if ((func & 4) != 0) { + __osViNext->control = __osViNext->control | 4; + } + if ((func & 8) != 0) { + __osViNext->control = __osViNext->control & 0xfffffffb; + } + if ((func & 0x10) != 0) { + __osViNext->control = __osViNext->control | 0x10; + } + if ((func & 0x20) != 0) { + __osViNext->control = __osViNext->control & 0xffffffef; + } + if ((func & 0x40) != 0) { + __osViNext->control = __osViNext->control | 0x10000; + __osViNext->control = __osViNext->control & 0xfffffcff; + } + if ((func & 0x80) != 0) { + __osViNext->control = __osViNext->control & 0xfffeffff; + __osViNext->control = __osViNext->control | (__osViNext->modep->comRegs).ctrl & 0x300; + } + __osViNext->state = __osViNext->state | 8; + __osRestoreInt(saveMask); + return; } @@ -10523,195 +10554,195 @@ void osViSetSpecialFeatures(u32 func) void _bcopy(void *__src,void *__dest,size_t __n) { - undefined uVar1; - undefined2 uVar2; - undefined4 uVar3; - undefined4 uVar4; - undefined4 uVar5; - undefined4 uVar6; - undefined4 uVar7; - undefined4 uVar8; - undefined4 uVar9; - undefined4 uVar10; - undefined2 *puVar11; - uint uVar12; - undefined *puVar13; - uint uVar14; - undefined *puVar15; - undefined4 *puVar16; - undefined4 *puVar17; - - if ((__n != 0) && (__src != __dest)) { - if (((int)__dest < (int)__src) || ((int)((int)__src + __n) <= (int)__dest)) { - if ((0xf < (int)__n) && (uVar14 = (uint)__src & 3, uVar14 == ((uint)__dest & 3))) { - puVar16 = (undefined4 *)__dest; - if (uVar14 != 0) { - if (uVar14 == 1) { - uVar1 = *(undefined *)__src; - uVar2 = *(undefined2 *)((int)__src + 1); - __src = (void *)((int)__src + 3); - puVar16 = (undefined4 *)((int)__dest + 3); - __n -= 3; - *(undefined *)__dest = uVar1; - *(undefined2 *)((int)__dest + 1) = uVar2; - } - else { - if (uVar14 == 2) { - uVar2 = *(undefined2 *)__src; - __src = (void *)((int)__src + 2); - __n -= 2; - *(undefined2 *)__dest = uVar2; - puVar16 = (undefined4 *)((int)__dest + 2); + undefined uVar1; + undefined2 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + undefined4 uVar10; + undefined2 *puVar11; + uint uVar12; + undefined *puVar13; + uint uVar14; + undefined *puVar15; + undefined4 *puVar16; + undefined4 *puVar17; + + if ((__n != 0) && (__src != __dest)) { + if (((int)__dest < (int)__src) || ((int)((int)__src + __n) <= (int)__dest)) { + if ((0xf < (int)__n) && (uVar14 = (uint)__src & 3, uVar14 == ((uint)__dest & 3))) { + puVar16 = (undefined4 *)__dest; + if (uVar14 != 0) { + if (uVar14 == 1) { + uVar1 = *(undefined *)__src; + uVar2 = *(undefined2 *)((int)__src + 1); + __src = (void *)((int)__src + 3); + puVar16 = (undefined4 *)((int)__dest + 3); + __n -= 3; + *(undefined *)__dest = uVar1; + *(undefined2 *)((int)__dest + 1) = uVar2; + } + else { + if (uVar14 == 2) { + uVar2 = *(undefined2 *)__src; + __src = (void *)((int)__src + 2); + __n -= 2; + *(undefined2 *)__dest = uVar2; + puVar16 = (undefined4 *)((int)__dest + 2); + } + else { + uVar1 = *(undefined *)__src; + __src = (void *)((int)__src + 1); + puVar16 = (undefined4 *)((int)__dest + 1); + __n -= 1; + *(undefined *)__dest = uVar1; + } + } + } + while (0x1f < (int)__n) { + uVar10 = *(undefined4 *)__src; + uVar7 = ((undefined4 *)__src)[1]; + uVar8 = ((undefined4 *)__src)[2]; + uVar9 = ((undefined4 *)__src)[3]; + uVar3 = ((undefined4 *)__src)[4]; + uVar4 = ((undefined4 *)__src)[5]; + uVar5 = ((undefined4 *)__src)[6]; + uVar6 = ((undefined4 *)__src)[7]; + __src = (undefined4 *)__src + 8; + __n -= 0x20; + *puVar16 = uVar10; + puVar16[1] = uVar7; + puVar16[2] = uVar8; + puVar16[3] = uVar9; + puVar16[4] = uVar3; + puVar16[5] = uVar4; + puVar16[6] = uVar5; + puVar16[7] = uVar6; + puVar16 = puVar16 + 8; + } + while (__dest = puVar16, 0xf < (int)__n) { + uVar10 = *(undefined4 *)__src; + uVar7 = ((undefined4 *)__src)[1]; + uVar8 = ((undefined4 *)__src)[2]; + uVar9 = ((undefined4 *)__src)[3]; + __src = (undefined4 *)__src + 4; + __n -= 0x10; + *puVar16 = uVar10; + puVar16[1] = uVar7; + puVar16[2] = uVar8; + puVar16[3] = uVar9; + puVar16 = puVar16 + 4; + } + while (3 < (int)__n) { + uVar10 = *(undefined4 *)__src; + __src = (undefined4 *)__src + 1; + __n -= 4; + *(undefined4 *)__dest = uVar10; + __dest = (undefined4 *)__dest + 1; + } } - else { - uVar1 = *(undefined *)__src; - __src = (void *)((int)__src + 1); - puVar16 = (undefined4 *)((int)__dest + 1); - __n -= 1; - *(undefined *)__dest = uVar1; + if (__n != 0) { + puVar16 = (undefined4 *)((int)__src + __n); + do { + uVar1 = *(undefined *)__src; + __src = (void *)((int)__src + 1); + *(undefined *)__dest = uVar1; + __dest = (undefined4 *)((int)__dest + 1); + } while ((undefined4 *)__src != puVar16); } - } } - while (0x1f < (int)__n) { - uVar10 = *(undefined4 *)__src; - uVar7 = ((undefined4 *)__src)[1]; - uVar8 = ((undefined4 *)__src)[2]; - uVar9 = ((undefined4 *)__src)[3]; - uVar3 = ((undefined4 *)__src)[4]; - uVar4 = ((undefined4 *)__src)[5]; - uVar5 = ((undefined4 *)__src)[6]; - uVar6 = ((undefined4 *)__src)[7]; - __src = (undefined4 *)__src + 8; - __n -= 0x20; - *puVar16 = uVar10; - puVar16[1] = uVar7; - puVar16[2] = uVar8; - puVar16[3] = uVar9; - puVar16[4] = uVar3; - puVar16[5] = uVar4; - puVar16[6] = uVar5; - puVar16[7] = uVar6; - puVar16 = puVar16 + 8; + else { + uVar14 = (int)__src + __n; + puVar16 = (undefined4 *)((int)__dest + __n); + if ((0xf < (int)__n) && (uVar12 = uVar14 & 3, uVar12 == ((uint)puVar16 & 3))) { + puVar17 = puVar16; + if (uVar12 != 0) { + if (uVar12 == 3) { + puVar13 = (undefined *)(uVar14 - 1); + uVar2 = *(undefined2 *)(uVar14 - 3); + uVar14 -= 3; + puVar17 = (undefined4 *)((int)puVar16 + -3); + __n -= 3; + *(undefined *)((int)puVar16 + -1) = *puVar13; + *(undefined2 *)puVar17 = uVar2; + } + else { + if (uVar12 == 2) { + puVar11 = (undefined2 *)(uVar14 - 2); + uVar14 -= 2; + __n -= 2; + *(undefined2 *)(undefined4 *)((int)puVar16 + -2) = *puVar11; + puVar17 = (undefined4 *)((int)puVar16 + -2); + } + else { + puVar13 = (undefined *)(uVar14 - 1); + uVar14 -= 1; + puVar17 = (undefined4 *)((int)puVar16 + -1); + __n -= 1; + *(undefined *)puVar17 = *puVar13; + } + } + } + while (0x1f < (int)__n) { + puVar16 = (undefined4 *)(uVar14 - 4); + uVar10 = *(undefined4 *)(uVar14 - 8); + uVar7 = *(undefined4 *)(uVar14 - 0xc); + uVar8 = *(undefined4 *)(uVar14 - 0x10); + uVar9 = *(undefined4 *)(uVar14 - 0x14); + uVar3 = *(undefined4 *)(uVar14 - 0x18); + uVar4 = *(undefined4 *)(uVar14 - 0x1c); + uVar5 = *(undefined4 *)(uVar14 - 0x20); + uVar14 -= 0x20; + __n -= 0x20; + puVar17[-1] = *puVar16; + puVar17[-2] = uVar10; + puVar17[-3] = uVar7; + puVar17[-4] = uVar8; + puVar17[-5] = uVar9; + puVar17[-6] = uVar3; + puVar17[-7] = uVar4; + puVar17[-8] = uVar5; + puVar17 = puVar17 + -8; + } + while (puVar16 = puVar17, 0xf < (int)__n) { + puVar16 = (undefined4 *)(uVar14 - 4); + uVar10 = *(undefined4 *)(uVar14 - 8); + uVar7 = *(undefined4 *)(uVar14 - 0xc); + uVar8 = *(undefined4 *)(uVar14 - 0x10); + uVar14 -= 0x10; + __n -= 0x10; + puVar17[-1] = *puVar16; + puVar17[-2] = uVar10; + puVar17[-3] = uVar7; + puVar17[-4] = uVar8; + puVar17 = puVar17 + -4; + } + while (3 < (int)__n) { + puVar17 = (undefined4 *)(uVar14 - 4); + uVar14 -= 4; + __n -= 4; + puVar16[-1] = *puVar17; + puVar16 = puVar16 + -1; + } + } + if (__n != 0) { + puVar15 = (undefined *)(uVar14 - 1); + puVar13 = puVar15 + -__n; + do { + puVar16 = (undefined4 *)((int)puVar16 + -1); + uVar1 = *puVar15; + puVar15 = puVar15 + -1; + *(undefined *)puVar16 = uVar1; + } while (puVar15 != puVar13); + return; + } } - while (__dest = puVar16, 0xf < (int)__n) { - uVar10 = *(undefined4 *)__src; - uVar7 = ((undefined4 *)__src)[1]; - uVar8 = ((undefined4 *)__src)[2]; - uVar9 = ((undefined4 *)__src)[3]; - __src = (undefined4 *)__src + 4; - __n -= 0x10; - *puVar16 = uVar10; - puVar16[1] = uVar7; - puVar16[2] = uVar8; - puVar16[3] = uVar9; - puVar16 = puVar16 + 4; - } - while (3 < (int)__n) { - uVar10 = *(undefined4 *)__src; - __src = (undefined4 *)__src + 1; - __n -= 4; - *(undefined4 *)__dest = uVar10; - __dest = (undefined4 *)__dest + 1; - } - } - if (__n != 0) { - puVar16 = (undefined4 *)((int)__src + __n); - do { - uVar1 = *(undefined *)__src; - __src = (void *)((int)__src + 1); - *(undefined *)__dest = uVar1; - __dest = (undefined4 *)((int)__dest + 1); - } while ((undefined4 *)__src != puVar16); - } } - else { - uVar14 = (int)__src + __n; - puVar16 = (undefined4 *)((int)__dest + __n); - if ((0xf < (int)__n) && (uVar12 = uVar14 & 3, uVar12 == ((uint)puVar16 & 3))) { - puVar17 = puVar16; - if (uVar12 != 0) { - if (uVar12 == 3) { - puVar13 = (undefined *)(uVar14 - 1); - uVar2 = *(undefined2 *)(uVar14 - 3); - uVar14 -= 3; - puVar17 = (undefined4 *)((int)puVar16 + -3); - __n -= 3; - *(undefined *)((int)puVar16 + -1) = *puVar13; - *(undefined2 *)puVar17 = uVar2; - } - else { - if (uVar12 == 2) { - puVar11 = (undefined2 *)(uVar14 - 2); - uVar14 -= 2; - __n -= 2; - *(undefined2 *)(undefined4 *)((int)puVar16 + -2) = *puVar11; - puVar17 = (undefined4 *)((int)puVar16 + -2); - } - else { - puVar13 = (undefined *)(uVar14 - 1); - uVar14 -= 1; - puVar17 = (undefined4 *)((int)puVar16 + -1); - __n -= 1; - *(undefined *)puVar17 = *puVar13; - } - } - } - while (0x1f < (int)__n) { - puVar16 = (undefined4 *)(uVar14 - 4); - uVar10 = *(undefined4 *)(uVar14 - 8); - uVar7 = *(undefined4 *)(uVar14 - 0xc); - uVar8 = *(undefined4 *)(uVar14 - 0x10); - uVar9 = *(undefined4 *)(uVar14 - 0x14); - uVar3 = *(undefined4 *)(uVar14 - 0x18); - uVar4 = *(undefined4 *)(uVar14 - 0x1c); - uVar5 = *(undefined4 *)(uVar14 - 0x20); - uVar14 -= 0x20; - __n -= 0x20; - puVar17[-1] = *puVar16; - puVar17[-2] = uVar10; - puVar17[-3] = uVar7; - puVar17[-4] = uVar8; - puVar17[-5] = uVar9; - puVar17[-6] = uVar3; - puVar17[-7] = uVar4; - puVar17[-8] = uVar5; - puVar17 = puVar17 + -8; - } - while (puVar16 = puVar17, 0xf < (int)__n) { - puVar16 = (undefined4 *)(uVar14 - 4); - uVar10 = *(undefined4 *)(uVar14 - 8); - uVar7 = *(undefined4 *)(uVar14 - 0xc); - uVar8 = *(undefined4 *)(uVar14 - 0x10); - uVar14 -= 0x10; - __n -= 0x10; - puVar17[-1] = *puVar16; - puVar17[-2] = uVar10; - puVar17[-3] = uVar7; - puVar17[-4] = uVar8; - puVar17 = puVar17 + -4; - } - while (3 < (int)__n) { - puVar17 = (undefined4 *)(uVar14 - 4); - uVar14 -= 4; - __n -= 4; - puVar16[-1] = *puVar17; - puVar16 = puVar16 + -1; - } - } - if (__n != 0) { - puVar15 = (undefined *)(uVar14 - 1); - puVar13 = puVar15 + -__n; - do { - puVar16 = (undefined4 *)((int)puVar16 + -1); - uVar1 = *puVar15; - puVar15 = puVar15 + -1; - *(undefined *)puVar16 = uVar1; - } while (puVar15 != puVar13); - return; - } - } - } - return; + return; } @@ -10725,22 +10756,22 @@ Low-level Error: Symbol $$undef00000013 extends beyond the end of the address sp void guPerspective(Mtx *m,u16 *perspNorm,float fovy,float aspect,float near,float far,float scale) { - undefined4 unaff_retaddr; - undefined4 in_stack_00000014; - undefined4 in_stack_00000018; - undefined8 in_stack_ffffffb4; - undefined in_stack_ffffffc0 [40]; - - guPerspectiveF((float [4] [4]) - CONCAT2440(CONCAT204(CONCAT128(CONCAT84(CONCAT44(scale,in_stack_00000014), - in_stack_00000018),in_stack_ffffffb4), - unaff_retaddr),in_stack_ffffffc0),(u16 *)&stack0xffffffc0,near - ,far,(float)perspNorm,near,far); - guMtxF2L((float [4] [4]) - CONCAT2440(CONCAT204(CONCAT128(CONCAT84(CONCAT44(scale,in_stack_00000014), - in_stack_00000018),in_stack_ffffffb4), - unaff_retaddr),in_stack_ffffffc0),(Mtx *)&stack0xffffffc0); - return; + undefined4 unaff_retaddr; + undefined4 in_stack_00000014; + undefined4 in_stack_00000018; + undefined8 in_stack_ffffffb4; + undefined in_stack_ffffffc0 [40]; + + guPerspectiveF((float [4] [4]) + CONCAT2440(CONCAT204(CONCAT128(CONCAT84(CONCAT44(scale,in_stack_00000014), + in_stack_00000018),in_stack_ffffffb4), + unaff_retaddr),in_stack_ffffffc0),(u16 *)&stack0xffffffc0, + near,far,(float)perspNorm,near,far); + guMtxF2L((float [4] [4]) + CONCAT2440(CONCAT204(CONCAT128(CONCAT84(CONCAT44(scale,in_stack_00000014), + in_stack_00000018),in_stack_ffffffb4), + unaff_retaddr),in_stack_ffffffc0),(Mtx *)&stack0xffffffc0); + return; } @@ -10748,47 +10779,48 @@ void guPerspective(Mtx *m,u16 *perspNorm,float fovy,float aspect,float near,floa void guMtxF2L(float mf [4] [4],Mtx *m) { - uint *puVar1; - uint *puVar2; - uint *puVar3; - int iVar4; - uint *in_a1_lo; - int iVar5; - Mtx *pabVar6; - float fVar7; - float fVar8; - - iVar5 = 0; - puVar3 = in_a1_lo + 8; - do { - iVar4 = 1; - fVar8 = *(float *)*m; - fVar7 = *(float *)(*m + 4) * 65536.00000000; - puVar1 = in_a1_lo; - puVar2 = puVar3; - pabVar6 = m; - if (true) { - do { - iVar4 += 1; - in_a1_lo = puVar1 + 1; - puVar3 = puVar2 + 1; - *puVar1 = (int)(fVar8 * 65536.00000000) & 0xffff0000U | (int)fVar7 >> 0x10 & 0xffffU; - *puVar2 = (int)(fVar8 * 65536.00000000) << 0x10 | (int)fVar7 & 0xffffU; - fVar8 = *(float *)*(Mtx *)(*pabVar6 + 8); - fVar7 = *(float *)(*pabVar6 + 0xc) * 65536.00000000; + uint *puVar1; + uint *puVar2; + uint *puVar3; + int iVar4; + uint *in_a1_lo; + int iVar5; + Mtx *pabVar6; + float fVar7; + float fVar8; + + iVar5 = 0; + puVar3 = in_a1_lo + 8; + do { + iVar4 = 1; + fVar8 = *(float *)*m; + fVar7 = *(float *)(*m + 4) * 65536.00000000; puVar1 = in_a1_lo; puVar2 = puVar3; - pabVar6 = (Mtx *)(*pabVar6 + 8); - } while (iVar4 != 2); - } - *in_a1_lo = (int)(fVar8 * 65536.00000000) & 0xffff0000U | (int)fVar7 >> 0x10 & 0xffffU; - *puVar3 = (int)(fVar8 * 65536.00000000) << 0x10 | (int)fVar7 & 0xffffU; - iVar5 += 1; - m = (Mtx *)(*m + 0x10); - in_a1_lo = in_a1_lo + 1; - puVar3 = puVar3 + 1; - } while (iVar5 != 4); - return; + pabVar6 = m; + if (true) { + do { + iVar4 += 1; + in_a1_lo = puVar1 + 1; + puVar3 = puVar2 + 1; + *puVar1 = (int)(fVar8 * 65536.00000000) & 0xffff0000U | (int)fVar7 >> 0x10 & 0xffffU + ; + *puVar2 = (int)(fVar8 * 65536.00000000) << 0x10 | (int)fVar7 & 0xffffU; + fVar8 = *(float *)*(Mtx *)(*pabVar6 + 8); + fVar7 = *(float *)(*pabVar6 + 0xc) * 65536.00000000; + puVar1 = in_a1_lo; + puVar2 = puVar3; + pabVar6 = (Mtx *)(*pabVar6 + 8); + } while (iVar4 != 2); + } + *in_a1_lo = (int)(fVar8 * 65536.00000000) & 0xffff0000U | (int)fVar7 >> 0x10 & 0xffffU; + *puVar3 = (int)(fVar8 * 65536.00000000) << 0x10 | (int)fVar7 & 0xffffU; + iVar5 += 1; + m = (Mtx *)(*m + 0x10); + in_a1_lo = in_a1_lo + 1; + puVar3 = puVar3 + 1; + } while (iVar5 != 4); + return; } @@ -10796,39 +10828,39 @@ void guMtxF2L(float mf [4] [4],Mtx *m) void guMtxIdentF(float mf [4] [4]) { - int iVar1; - undefined4 *in_a0_lo; - - iVar1 = 0; - do { - if (iVar1 == 0) { - *in_a0_lo = 0x3f800000; - } - else { - *in_a0_lo = 0; - } - if (iVar1 == 1) { - in_a0_lo[1] = 0x3f800000; - } - else { - in_a0_lo[1] = 0; - } - if (iVar1 == 2) { - in_a0_lo[2] = 0x3f800000; - } - else { - in_a0_lo[2] = 0; - } - if (iVar1 == 3) { - in_a0_lo[3] = 0x3f800000; - } - else { - in_a0_lo[3] = 0; - } - iVar1 += 1; - in_a0_lo = in_a0_lo + 4; - } while (iVar1 != 4); - return; + int iVar1; + undefined4 *in_a0_lo; + + iVar1 = 0; + do { + if (iVar1 == 0) { + *in_a0_lo = 0x3f800000; + } + else { + *in_a0_lo = 0; + } + if (iVar1 == 1) { + in_a0_lo[1] = 0x3f800000; + } + else { + in_a0_lo[1] = 0; + } + if (iVar1 == 2) { + in_a0_lo[2] = 0x3f800000; + } + else { + in_a0_lo[2] = 0; + } + if (iVar1 == 3) { + in_a0_lo[3] = 0x3f800000; + } + else { + in_a0_lo[3] = 0; + } + iVar1 += 1; + in_a0_lo = in_a0_lo + 4; + } while (iVar1 != 4); + return; } @@ -10836,15 +10868,15 @@ void guMtxIdentF(float mf [4] [4]) void guMtxIdent(Mtx *m) { - undefined4 unaff_retaddr; - undefined4 in_stack_ffffffb8; - undefined in_stack_ffffffc0 [56]; - - guMtxIdentF((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffb8,unaff_retaddr),in_stack_ffffffc0) - ); - guMtxF2L((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffb8,unaff_retaddr),in_stack_ffffffc0), - (Mtx *)&stack0xffffffc0); - return; + undefined4 unaff_retaddr; + undefined4 in_stack_ffffffb8; + undefined in_stack_ffffffc0 [56]; + + guMtxIdentF((float [4] [4]) + CONCAT856(CONCAT44(in_stack_ffffffb8,unaff_retaddr),in_stack_ffffffc0)); + guMtxF2L((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffb8,unaff_retaddr),in_stack_ffffffc0), + (Mtx *)&stack0xffffffc0); + return; } @@ -10852,37 +10884,37 @@ void guMtxIdent(Mtx *m) void guMtxL2F(float mf_4__4_,Mtx *m) { - uint uVar1; - uint uVar2; - uint uVar3; - uint uVar4; - uint *puVar5; - int iVar6; - uint *in_a1_lo; - int iVar7; - Mtx *pabVar8; - - puVar5 = in_a1_lo + 8; - iVar7 = 0; - do { - iVar6 = 0; - pabVar8 = m; + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint *puVar5; + int iVar6; + uint *in_a1_lo; + int iVar7; + Mtx *pabVar8; + + puVar5 = in_a1_lo + 8; + iVar7 = 0; do { - uVar1 = *puVar5; - uVar2 = *in_a1_lo; - iVar6 += 1; - uVar3 = *puVar5; - uVar4 = *in_a1_lo; - in_a1_lo = in_a1_lo + 1; - puVar5 = puVar5 + 1; - *(float *)*pabVar8 = (float)(uVar1 >> 0x10 | uVar2 & 0xffff0000) / 65536.00000000; - *(float *)(*pabVar8 + 4) = (float)(uVar3 & 0xffff | uVar4 << 0x10) / 65536.00000000; - pabVar8 = (Mtx *)(*pabVar8 + 8); - } while (iVar6 != 2); - iVar7 += 1; - m = (Mtx *)(*m + 0x10); - } while (iVar7 != 4); - return; + iVar6 = 0; + pabVar8 = m; + do { + uVar1 = *puVar5; + uVar2 = *in_a1_lo; + iVar6 += 1; + uVar3 = *puVar5; + uVar4 = *in_a1_lo; + in_a1_lo = in_a1_lo + 1; + puVar5 = puVar5 + 1; + *(float *)*pabVar8 = (float)(uVar1 >> 0x10 | uVar2 & 0xffff0000) / 65536.00000000; + *(float *)(*pabVar8 + 4) = (float)(uVar3 & 0xffff | uVar4 << 0x10) / 65536.00000000; + pabVar8 = (Mtx *)(*pabVar8 + 8); + } while (iVar6 != 2); + iVar7 += 1; + m = (Mtx *)(*m + 0x10); + } while (iVar7 != 4); + return; } @@ -10890,7 +10922,7 @@ void guMtxL2F(float mf_4__4_,Mtx *m) OSThread * __osGetCurrFaultedThread(void) { - return __osFaultedThread_0; + return __osFaultedThread_0; } @@ -10900,8 +10932,8 @@ OSThread * __osGetCurrFaultedThread(void) void __osExceptionPreamble(void) { - __osException(); - return; + __osException(); + return; } @@ -10912,153 +10944,158 @@ void __osExceptionPreamble(void) void __osException(void) { - u64 in_at; - undefined8 in_v0; - undefined8 in_v1; - undefined8 in_a0; - undefined8 in_a1; - undefined8 in_a2; - undefined8 in_a3; - u64 in_t0; - u64 in_t1; - u64 in_t2; - uint uVar1; - undefined8 in_t3; - undefined8 in_t4; - undefined8 in_t5; - undefined8 in_t6; - undefined8 in_t7; - undefined8 unaff_s0; - undefined8 unaff_s1; - undefined8 unaff_s2; - undefined8 unaff_s3; - undefined8 unaff_s4; - undefined8 unaff_s5; - undefined8 unaff_s6; - undefined8 unaff_s7; - undefined8 in_t8; - undefined8 in_t9; - OSThread *new; - uint uVar2; - undefined8 unaff_s8; - undefined8 unaff_retaddr; - undefined8 in_f0; - undefined8 in_f2; - undefined8 in_f4; - undefined8 in_f6; - undefined8 in_f8; - undefined8 in_f10; - undefined8 in_f12; - undefined8 in_f14; - undefined8 in_f16; - undefined8 in_f18; - undefined8 unaff_f20; - undefined8 unaff_f22; - undefined8 unaff_f24; - undefined8 unaff_f26; - undefined8 unaff_f28; - undefined8 unaff_f30; - undefined4 in_fcsr; - undefined8 in_hi; - undefined8 in_lo; - undefined auStackX0 [16]; - - new = __osRunningThread; - __osThreadSave.context.pc = Status; - setCopReg(0,CONCAT44(uRegister00002060,Status),(longlong)(int)Status & 0xfffffffffffffffc,0); - __osThreadSave.fp = 0; - __osThreadSave.context._4_8_ = in_at; - __osThreadSave.context._60_8_ = in_t0; - __osThreadSave.context._68_8_ = in_t1; - __osThreadSave.context._76_8_ = in_t2; - *(u64 *)((int)&(__osRunningThread->context).at + 4) = in_at; - *(ulonglong *)&(new->context).pc = - CONCAT44(__osThreadSave.context.pc,__osThreadSave.context.cause); - *(u64 *)((int)&(new->context).t0 + 4) = __osThreadSave.context._60_8_; - *(u64 *)((int)&(new->context).t1 + 4) = __osThreadSave.context._68_8_; - *(u64 *)((int)&(new->context).t2 + 4) = __osThreadSave.context._76_8_; - uVar2 = (new->context).pc; - *(undefined8 *)((int)&(new->context).lo + 4) = in_lo; - *(undefined8 *)((int)&(new->context).v0 + 4) = in_v0; - *(undefined8 *)((int)&(new->context).v1 + 4) = in_v1; - *(undefined8 *)((int)&(new->context).a0 + 4) = in_a0; - *(undefined8 *)((int)&(new->context).a1 + 4) = in_a1; - *(undefined8 *)((int)&(new->context).a2 + 4) = in_a2; - *(undefined8 *)((int)&(new->context).a3 + 4) = in_a3; - *(undefined8 *)((int)&(new->context).t3 + 4) = in_t3; - *(undefined8 *)((int)&(new->context).t4 + 4) = in_t4; - *(undefined8 *)((int)&(new->context).t5 + 4) = in_t5; - *(undefined8 *)((int)&(new->context).t6 + 4) = in_t6; - *(undefined8 *)((int)&(new->context).t7 + 4) = in_t7; - *(undefined8 *)((int)&(new->context).s0 + 4) = unaff_s0; - *(undefined8 *)((int)&(new->context).s1 + 4) = unaff_s1; - *(undefined8 *)((int)&(new->context).s2 + 4) = unaff_s2; - *(undefined8 *)((int)&(new->context).s3 + 4) = unaff_s3; - *(undefined8 *)((int)&(new->context).s4 + 4) = unaff_s4; - *(undefined8 *)((int)&(new->context).s5 + 4) = unaff_s5; - *(undefined8 *)((int)&(new->context).s6 + 4) = unaff_s6; - *(undefined8 *)((int)&(new->context).s7 + 4) = unaff_s7; - *(undefined8 *)((int)&(new->context).t8 + 4) = in_t8; - *(undefined8 *)((int)&(new->context).t9 + 4) = in_t9; - *(undefined8 *)((int)&(new->context).gp + 4) = 0x140; - *(ulonglong *)((int)&(new->context).sp + 4) = ZEXT48(register0x000000ec); - *(undefined8 *)((int)&(new->context).s8 + 4) = unaff_s8; - *(undefined8 *)((int)&(new->context).ra + 4) = unaff_retaddr; - *(undefined8 *)((int)&(new->context).hi + 4) = in_hi; - if ((uVar2 & 0xff00) != 0) { - uVar2 = uVar2 & 0xffff00ff | uVar2 & 0xff00 | ((uint)__OSGlobalIntMask ^ 0xffffffff) & 0xff00; - (new->context).pc = uVar2; - } - uVar1 = _MI_INTR_MASK_REG; - if (_MI_INTR_MASK_REG != 0) { - uVar1 = _MI_INTR_MASK_REG | - ((uint)__OSGlobalIntMask >> 0x10 ^ 0xffffffff) & 0x3f & (new->context).fpcsr; - } - (new->context).fpcsr = uVar1; - (new->context).cause = EPC; - if (new->fp != 0) { - *(undefined4 *)&(new->context).fp0 = in_fcsr; - *(undefined8 *)((int)&(new->context).fp0 + 4) = in_f0; - *(undefined8 *)((int)&(new->context).fp2 + 4) = in_f2; - *(undefined8 *)((int)&(new->context).fp4 + 4) = in_f4; - *(undefined8 *)((int)&(new->context).fp6 + 4) = in_f6; - *(undefined8 *)((int)&(new->context).fp8 + 4) = in_f8; - *(undefined8 *)((int)&(new->context).fp10 + 4) = in_f10; - *(undefined8 *)((int)&(new->context).fp12 + 4) = in_f12; - *(undefined8 *)((int)&(new->context).fp14 + 4) = in_f14; - *(undefined8 *)((int)&(new->context).fp16 + 4) = in_f16; - *(undefined8 *)((int)&(new->context).fp18 + 4) = in_f18; - *(undefined8 *)((int)&(new->context).fp20 + 4) = unaff_f20; - *(undefined8 *)((int)&(new->context).fp22 + 4) = unaff_f22; - *(undefined8 *)((int)&(new->context).fp24 + 4) = unaff_f24; - *(undefined8 *)((int)&(new->context).fp26 + 4) = unaff_f26; - *(undefined8 *)((int)&(new->context).fp28 + 4) = unaff_f28; - *(undefined8 *)((int)&(new->context).fp30 + 4) = unaff_f30; - } - (new->context).badvaddr = Cause; - new->state = 2; - uVar1 = Cause & 0x7c; - if (uVar1 != 0x24) { - if (uVar1 == 0x2c) { - if ((Cause & 0x30000000) == 0x10000000) { - uVar2 = (new->context).pc; - new->fp = 1; - (new->context).pc = uVar2 | 0x20000000; - goto LAB_7001067c; - } + u64 in_at; + undefined8 in_v0; + undefined8 in_v1; + undefined8 in_a0; + undefined8 in_a1; + undefined8 in_a2; + undefined8 in_a3; + u64 in_t0; + u64 in_t1; + u64 in_t2; + uint uVar1; + undefined8 in_t3; + undefined8 in_t4; + undefined8 in_t5; + undefined8 in_t6; + undefined8 in_t7; + undefined8 unaff_s0; + undefined8 unaff_s1; + undefined8 unaff_s2; + undefined8 unaff_s3; + undefined8 unaff_s4; + undefined8 unaff_s5; + undefined8 unaff_s6; + undefined8 unaff_s7; + undefined8 in_t8; + undefined8 in_t9; + OSThread *new; + uint uVar2; + undefined8 unaff_s8; + undefined8 unaff_retaddr; + undefined8 in_f0; + undefined8 in_f2; + undefined8 in_f4; + undefined8 in_f6; + undefined8 in_f8; + undefined8 in_f10; + undefined8 in_f12; + undefined8 in_f14; + undefined8 in_f16; + undefined8 in_f18; + undefined8 unaff_f20; + undefined8 unaff_f22; + undefined8 unaff_f24; + undefined8 unaff_f26; + undefined8 unaff_f28; + undefined8 unaff_f30; + undefined4 in_fcsr; + undefined8 in_hi; + undefined8 in_lo; + undefined auStackX0 [16]; + + new = __osRunningThread; + __osThreadSave.context.pc = Status; + setCopReg(0,CONCAT44(uRegister00002060,Status),(longlong)(int)Status & 0xfffffffffffffffc,0); + __osThreadSave.fp = 0; + __osThreadSave.context._4_8_ = in_at; + __osThreadSave.context._60_8_ = in_t0; + __osThreadSave.context._68_8_ = in_t1; + __osThreadSave.context._76_8_ = in_t2; + *(u64 *)((int)&(__osRunningThread->context).at + 4) = in_at; + *(ulonglong *)&(new->context).pc = + CONCAT44(__osThreadSave.context.pc,__osThreadSave.context.cause); + *(u64 *)((int)&(new->context).t0 + 4) = __osThreadSave.context._60_8_; + *(u64 *)((int)&(new->context).t1 + 4) = __osThreadSave.context._68_8_; + *(u64 *)((int)&(new->context).t2 + 4) = __osThreadSave.context._76_8_; + uVar2 = (new->context).pc; + *(undefined8 *)((int)&(new->context).lo + 4) = in_lo; + *(undefined8 *)((int)&(new->context).v0 + 4) = in_v0; + *(undefined8 *)((int)&(new->context).v1 + 4) = in_v1; + *(undefined8 *)((int)&(new->context).a0 + 4) = in_a0; + *(undefined8 *)((int)&(new->context).a1 + 4) = in_a1; + *(undefined8 *)((int)&(new->context).a2 + 4) = in_a2; + *(undefined8 *)((int)&(new->context).a3 + 4) = in_a3; + *(undefined8 *)((int)&(new->context).t3 + 4) = in_t3; + *(undefined8 *)((int)&(new->context).t4 + 4) = in_t4; + *(undefined8 *)((int)&(new->context).t5 + 4) = in_t5; + *(undefined8 *)((int)&(new->context).t6 + 4) = in_t6; + *(undefined8 *)((int)&(new->context).t7 + 4) = in_t7; + *(undefined8 *)((int)&(new->context).s0 + 4) = unaff_s0; + *(undefined8 *)((int)&(new->context).s1 + 4) = unaff_s1; + *(undefined8 *)((int)&(new->context).s2 + 4) = unaff_s2; + *(undefined8 *)((int)&(new->context).s3 + 4) = unaff_s3; + *(undefined8 *)((int)&(new->context).s4 + 4) = unaff_s4; + *(undefined8 *)((int)&(new->context).s5 + 4) = unaff_s5; + *(undefined8 *)((int)&(new->context).s6 + 4) = unaff_s6; + *(undefined8 *)((int)&(new->context).s7 + 4) = unaff_s7; + *(undefined8 *)((int)&(new->context).t8 + 4) = in_t8; + *(undefined8 *)((int)&(new->context).t9 + 4) = in_t9; + *(undefined8 *)((int)&(new->context).gp + 4) = 0x140; + *(ulonglong *)((int)&(new->context).sp + 4) = ZEXT48(register0x000000ec); + *(undefined8 *)((int)&(new->context).s8 + 4) = unaff_s8; + *(undefined8 *)((int)&(new->context).ra + 4) = unaff_retaddr; + *(undefined8 *)((int)&(new->context).hi + 4) = in_hi; + if ((uVar2 & 0xff00) != 0) { + uVar2 = uVar2 & 0xffff00ff | + uVar2 & 0xff00 | ((uint)__OSGlobalIntMask ^ 0xffffffff) & 0xff00; + (new->context).pc = uVar2; } - else { - if (uVar1 == 0) { + uVar1 = _MI_INTR_MASK_REG; + if (_MI_INTR_MASK_REG != 0) { + uVar1 = _MI_INTR_MASK_REG | + ((uint)__OSGlobalIntMask >> 0x10 ^ 0xffffffff) & 0x3f & (new->context).fpcsr; + } + (new->context).fpcsr = uVar1; + (new->context).cause = EPC; + if (new->fp != 0) { + *(undefined4 *)&(new->context).fp0 = in_fcsr; + *(undefined8 *)((int)&(new->context).fp0 + 4) = in_f0; + *(undefined8 *)((int)&(new->context).fp2 + 4) = in_f2; + *(undefined8 *)((int)&(new->context).fp4 + 4) = in_f4; + *(undefined8 *)((int)&(new->context).fp6 + 4) = in_f6; + *(undefined8 *)((int)&(new->context).fp8 + 4) = in_f8; + *(undefined8 *)((int)&(new->context).fp10 + 4) = in_f10; + *(undefined8 *)((int)&(new->context).fp12 + 4) = in_f12; + *(undefined8 *)((int)&(new->context).fp14 + 4) = in_f14; + *(undefined8 *)((int)&(new->context).fp16 + 4) = in_f16; + *(undefined8 *)((int)&(new->context).fp18 + 4) = in_f18; + *(undefined8 *)((int)&(new->context).fp20 + 4) = unaff_f20; + *(undefined8 *)((int)&(new->context).fp22 + 4) = unaff_f22; + *(undefined8 *)((int)&(new->context).fp24 + 4) = unaff_f24; + *(undefined8 *)((int)&(new->context).fp26 + 4) = unaff_f26; + *(undefined8 *)((int)&(new->context).fp28 + 4) = unaff_f28; + *(undefined8 *)((int)&(new->context).fp30 + 4) = unaff_f30; + } + (new->context).badvaddr = Cause; + new->state = 2; + uVar1 = Cause & 0x7c; + if (uVar1 == 0x24) { + new->flags = 1; + send_mesg(); + if (__osRunQueue->priority <= new->priority) { + FUN_7001067c(); + return; + } + __osEnqueueThread(&__osRunQueue,new); + __osDispatchThread(); + return; + } + if (uVar1 == 0x2c) { + handle_CpU(); + return; + } + if (uVar1 == 0) { uVar2 = uVar2 & Cause & 0xff00; uVar1 = uVar2 >> 0xc; if (uVar1 == 0) { - uVar1 = (uVar2 >> 8) + 0x10; + uVar1 = (uVar2 >> 8) + 0x10; } // WARNING: Could not recover jumptable at 0x700103c0. Too many branches // WARNING: Treating indirect jump as call (**(code **)((int)&__osIntTable + (uint)*(byte *)((int)&__osIntOffTable + uVar1)))(); return; - } } __osFaultedThread_0 = new; new->state = 1; @@ -11067,19 +11104,19 @@ void __osException(void) send_mesg(); __osDispatchThread(); return; - } - new->flags = 1; - send_mesg(); - if (new->priority < __osRunQueue->priority) { - __osEnqueueThread(&__osRunQueue,new); +} + + + +void FUN_7001067c(void) + +{ + OSThread *in_k0_lo; + + *(OSThread **)&in_k0_lo->next = __osRunQueue; + __osRunQueue = in_k0_lo; __osDispatchThread(); return; - } -LAB_7001067c: - *(OSThread **)&new->next = __osRunQueue; - __osRunQueue = new; - __osDispatchThread(); - return; } @@ -11089,38 +11126,38 @@ LAB_7001067c: void send_mesg(void) { - OSThread_s *pOVar1; - int iVar2; - OSThread *list; - int in_a0_lo; - int iVar3; - code *UNRECOVERED_JUMPTABLE; - - list = *(OSThread **)((int)&__OSEventStateTab[0].messageQueue + in_a0_lo); - if (list != NULL) { - pOVar1 = (OSThread_s *)list->queue; - iVar2 = *(int *)&list->state; - if ((int)pOVar1 < iVar2) { - iVar3 = (int)&pOVar1->next + (int)&list->tlnext->next; - if (iVar2 == 0) { - trap(0x1c00); - } - if ((iVar2 == -1) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - *(undefined4 *)(list->id + (iVar3 % iVar2) * 4) = - *(undefined4 *)((int)&__OSEventStateTab[0].message + in_a0_lo); - *(OSThread_s **)&list->queue = (OSThread_s *)((int)&pOVar1->next + 1); - if (list->next->next != NULL) { - list = __osPopThread(list); - __osEnqueueThread(&__osRunQueue,list); - } + OSThread_s *pOVar1; + int iVar2; + OSThread *list; + int in_a0_lo; + int iVar3; + code *UNRECOVERED_JUMPTABLE; + + list = *(OSThread **)((int)&__OSEventStateTab[0].messageQueue + in_a0_lo); + if (list != NULL) { + pOVar1 = (OSThread_s *)list->queue; + iVar2 = *(int *)&list->state; + if ((int)pOVar1 < iVar2) { + iVar3 = (int)&pOVar1->next + (int)&list->tlnext->next; + if (iVar2 == 0) { + trap(0x1c00); + } + if ((iVar2 == -1) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + *(undefined4 *)(list->id + (iVar3 % iVar2) * 4) = + *(undefined4 *)((int)&__OSEventStateTab[0].message + in_a0_lo); + *(OSThread_s **)&list->queue = (OSThread_s *)((int)&pOVar1->next + 1); + if (list->next->next != NULL) { + list = __osPopThread(list); + __osEnqueueThread(&__osRunQueue,list); + } + } } - } // WARNING: Could not recover jumptable at 0x70010770. Too many branches // WARNING: Treating indirect jump as call - (*UNRECOVERED_JUMPTABLE)(); - return; + (*UNRECOVERED_JUMPTABLE)(); + return; } @@ -11130,26 +11167,24 @@ void send_mesg(void) void handle_CpU(void) { - uint uVar1; - uint in_t0_lo; - OSThread *in_k0_lo; - - if ((in_t0_lo & 0x30000000) == 0x10000000) { - uVar1 = (in_k0_lo->context).pc; - in_k0_lo->fp = 1; - (in_k0_lo->context).pc = uVar1 | 0x20000000; - *(OSThread **)&in_k0_lo->next = __osRunQueue; - __osRunQueue = in_k0_lo; + uint uVar1; + uint in_t0_lo; + OSThread *in_k0_lo; + + if ((in_t0_lo & 0x30000000) == 0x10000000) { + uVar1 = (in_k0_lo->context).pc; + in_k0_lo->fp = 1; + (in_k0_lo->context).pc = uVar1 | 0x20000000; + FUN_7001067c(); + return; + } + __osFaultedThread_0 = in_k0_lo; + in_k0_lo->state = 1; + in_k0_lo->flags = 2; + (in_k0_lo->context).rcp = BadVAddr; + send_mesg(); __osDispatchThread(); return; - } - __osFaultedThread_0 = in_k0_lo; - in_k0_lo->state = 1; - in_k0_lo->flags = 2; - (in_k0_lo->context).rcp = BadVAddr; - send_mesg(); - __osDispatchThread(); - return; } @@ -11159,71 +11194,71 @@ void handle_CpU(void) void __osEnqueueAndYield(OSThread **queue) { - int iVar1; - OSThread *new; - uint uVar2; - undefined8 unaff_s0; - undefined8 unaff_s1; - undefined8 unaff_s2; - undefined8 unaff_s3; - undefined8 unaff_s4; - undefined8 unaff_s5; - undefined8 unaff_s6; - undefined8 unaff_s7; - uint uVar3; - undefined8 unaff_s8; - undefined8 unaff_retaddr; - undefined8 unaff_f20; - undefined8 unaff_f22; - undefined8 unaff_f24; - undefined8 unaff_f26; - undefined8 unaff_f28; - undefined8 unaff_f30; - undefined4 in_fcsr; - undefined auStackX0 [16]; - - new = __osRunningThread; - iVar1 = __osRunningThread->fp; - (__osRunningThread->context).pc = Status | 2; - *(undefined8 *)((int)&(new->context).s0 + 4) = unaff_s0; - *(undefined8 *)((int)&(new->context).s1 + 4) = unaff_s1; - *(undefined8 *)((int)&(new->context).s2 + 4) = unaff_s2; - *(undefined8 *)((int)&(new->context).s3 + 4) = unaff_s3; - *(undefined8 *)((int)&(new->context).s4 + 4) = unaff_s4; - *(undefined8 *)((int)&(new->context).s5 + 4) = unaff_s5; - *(undefined8 *)((int)&(new->context).s6 + 4) = unaff_s6; - *(undefined8 *)((int)&(new->context).s7 + 4) = unaff_s7; - *(undefined8 *)((int)&(new->context).gp + 4) = 0x140; - *(ulonglong *)((int)&(new->context).sp + 4) = ZEXT48(register0x000000ec); - *(undefined8 *)((int)&(new->context).s8 + 4) = unaff_s8; - *(undefined8 *)((int)&(new->context).ra + 4) = unaff_retaddr; - (new->context).cause = (u32)unaff_retaddr; - if (iVar1 != 0) { - *(undefined8 *)((int)&(new->context).fp20 + 4) = unaff_f20; - *(undefined8 *)((int)&(new->context).fp22 + 4) = unaff_f22; - *(undefined8 *)((int)&(new->context).fp24 + 4) = unaff_f24; - *(undefined8 *)((int)&(new->context).fp26 + 4) = unaff_f26; - *(undefined8 *)((int)&(new->context).fp28 + 4) = unaff_f28; - *(undefined8 *)((int)&(new->context).fp30 + 4) = unaff_f30; - *(undefined4 *)&(new->context).fp0 = in_fcsr; - } - uVar3 = (new->context).pc; - uVar2 = uVar3 & 0xff00; - if (uVar2 != 0) { - (new->context).pc = uVar3 & 0xffff00ff | uVar2 | ((uint)__OSGlobalIntMask ^ 0xffffffff) & 0xff00 - ; - } - uVar3 = _MI_INTR_MASK_REG; - if (_MI_INTR_MASK_REG != 0) { - uVar3 = _MI_INTR_MASK_REG | - ((uint)__OSGlobalIntMask >> 0x10 ^ 0xffffffff) & 0x3f & (new->context).fpcsr; - } - (new->context).fpcsr = uVar3; - if (queue != NULL) { - __osEnqueueThread(queue,new); - } - __osDispatchThread(); - return; + int iVar1; + OSThread *new; + uint uVar2; + undefined8 unaff_s0; + undefined8 unaff_s1; + undefined8 unaff_s2; + undefined8 unaff_s3; + undefined8 unaff_s4; + undefined8 unaff_s5; + undefined8 unaff_s6; + undefined8 unaff_s7; + uint uVar3; + undefined8 unaff_s8; + undefined8 unaff_retaddr; + undefined8 unaff_f20; + undefined8 unaff_f22; + undefined8 unaff_f24; + undefined8 unaff_f26; + undefined8 unaff_f28; + undefined8 unaff_f30; + undefined4 in_fcsr; + undefined auStackX0 [16]; + + new = __osRunningThread; + iVar1 = __osRunningThread->fp; + (__osRunningThread->context).pc = Status | 2; + *(undefined8 *)((int)&(new->context).s0 + 4) = unaff_s0; + *(undefined8 *)((int)&(new->context).s1 + 4) = unaff_s1; + *(undefined8 *)((int)&(new->context).s2 + 4) = unaff_s2; + *(undefined8 *)((int)&(new->context).s3 + 4) = unaff_s3; + *(undefined8 *)((int)&(new->context).s4 + 4) = unaff_s4; + *(undefined8 *)((int)&(new->context).s5 + 4) = unaff_s5; + *(undefined8 *)((int)&(new->context).s6 + 4) = unaff_s6; + *(undefined8 *)((int)&(new->context).s7 + 4) = unaff_s7; + *(undefined8 *)((int)&(new->context).gp + 4) = 0x140; + *(ulonglong *)((int)&(new->context).sp + 4) = ZEXT48(register0x000000ec); + *(undefined8 *)((int)&(new->context).s8 + 4) = unaff_s8; + *(undefined8 *)((int)&(new->context).ra + 4) = unaff_retaddr; + (new->context).cause = (u32)unaff_retaddr; + if (iVar1 != 0) { + *(undefined8 *)((int)&(new->context).fp20 + 4) = unaff_f20; + *(undefined8 *)((int)&(new->context).fp22 + 4) = unaff_f22; + *(undefined8 *)((int)&(new->context).fp24 + 4) = unaff_f24; + *(undefined8 *)((int)&(new->context).fp26 + 4) = unaff_f26; + *(undefined8 *)((int)&(new->context).fp28 + 4) = unaff_f28; + *(undefined8 *)((int)&(new->context).fp30 + 4) = unaff_f30; + *(undefined4 *)&(new->context).fp0 = in_fcsr; + } + uVar3 = (new->context).pc; + uVar2 = uVar3 & 0xff00; + if (uVar2 != 0) { + (new->context).pc = + uVar3 & 0xffff00ff | uVar2 | ((uint)__OSGlobalIntMask ^ 0xffffffff) & 0xff00; + } + uVar3 = _MI_INTR_MASK_REG; + if (_MI_INTR_MASK_REG != 0) { + uVar3 = _MI_INTR_MASK_REG | + ((uint)__OSGlobalIntMask >> 0x10 ^ 0xffffffff) & 0x3f & (new->context).fpcsr; + } + (new->context).fpcsr = uVar3; + if (queue != NULL) { + __osEnqueueThread(queue,new); + } + __osDispatchThread(); + return; } @@ -11231,23 +11266,23 @@ void __osEnqueueAndYield(OSThread **queue) void __osEnqueueThread(OSThread **queue,OSThread *new) { - int iVar1; - OSThread_s *pOVar2; - OSThread *succ; - OSThread *pred; - - iVar1 = (*queue)->priority; - pOVar2 = (OSThread_s *)*queue; - pred = (OSThread *)queue; - while (succ = (OSThread *)pOVar2, new->priority <= iVar1) { - pOVar2 = succ->next; - iVar1 = pOVar2->priority; - pred = succ; - } - new->next = pred->next; - *(OSThread **)&pred->next = new; - *(OSThread ***)&new->queue = queue; - return; + int iVar1; + OSThread_s *pOVar2; + OSThread *succ; + OSThread *pred; + + iVar1 = (*queue)->priority; + pOVar2 = (OSThread_s *)*queue; + pred = (OSThread *)queue; + while (succ = (OSThread *)pOVar2, new->priority <= iVar1) { + pOVar2 = succ->next; + iVar1 = pOVar2->priority; + pred = succ; + } + new->next = pred->next; + *(OSThread **)&pred->next = new; + *(OSThread ***)&new->queue = queue; + return; } @@ -11255,11 +11290,11 @@ void __osEnqueueThread(OSThread **queue,OSThread *new) OSThread * __osPopThread(OSThread *list) { - OSThread *pOVar1; - - pOVar1 = (OSThread *)list->next; - list->next = pOVar1->next; - return pOVar1; + OSThread *pOVar1; + + pOVar1 = (OSThread *)list->next; + list->next = pOVar1->next; + return pOVar1; } @@ -11270,19 +11305,19 @@ OSThread * __osPopThread(OSThread *list) undefined8 __osDispatchThread(void) { - OSThread *pOVar1; - ulonglong uVar2; - - pOVar1 = __osPopThread((OSThread *)&__osRunQueue); - __osRunningThread = pOVar1; - pOVar1->state = 4; - uVar2 = SEXT48((int)(pOVar1->context).pc); - setCopReg(0,Status,uVar2 & 0xffffffffffff00ff | - uVar2 & 0xff00 & (longlong)(int)__OSGlobalIntMask & 0xff00U,0); - setCopReg(0,EPC,(longlong)(int)(pOVar1->context).cause,0); - _MI_INTR_MASK_REG = - (uint)__osRcpImTable[(pOVar1->context).fpcsr & (uint)__OSGlobalIntMask >> 0x10]; - return *(undefined8 *)((int)&(pOVar1->context).v0 + 4); + OSThread *pOVar1; + ulonglong uVar2; + + pOVar1 = __osPopThread((OSThread *)&__osRunQueue); + __osRunningThread = pOVar1; + pOVar1->state = 4; + uVar2 = SEXT48((int)(pOVar1->context).pc); + setCopReg(0,Status,uVar2 & 0xffffffffffff00ff | + uVar2 & 0xff00 & (longlong)(int)__OSGlobalIntMask & 0xff00U,0); + setCopReg(0,EPC,(longlong)(int)(pOVar1->context).cause,0); + _MI_INTR_MASK_REG = + (uint)__osRcpImTable[(pOVar1->context).fpcsr & (uint)__OSGlobalIntMask >> 0x10]; + return *(undefined8 *)((int)&(pOVar1->context).v0 + 4); } @@ -11293,15 +11328,15 @@ undefined8 __osDispatchThread(void) undefined8 __osDispatchThreadSave(void) { - int in_k0_lo; - - setCopReg(0,Status,(longlong)*(int *)(in_k0_lo + 0x118) & 0xffffffffffff00ffU | - (longlong)*(int *)(in_k0_lo + 0x118) & 0xff00U & - (longlong)(int)__OSGlobalIntMask & 0xff00U,0); - setCopReg(0,EPC,(longlong)*(int *)(in_k0_lo + 0x11c),0); - _MI_INTR_MASK_REG = - (uint)__osRcpImTable[*(uint *)(in_k0_lo + 0x128) & (uint)__OSGlobalIntMask >> 0x10]; - return *(undefined8 *)(in_k0_lo + 0x28); + int in_k0_lo; + + setCopReg(0,Status,(longlong)*(int *)(in_k0_lo + 0x118) & 0xffffffffffff00ffU | + (longlong)*(int *)(in_k0_lo + 0x118) & 0xff00U & + (longlong)(int)__OSGlobalIntMask & 0xff00U,0); + setCopReg(0,EPC,(longlong)*(int *)(in_k0_lo + 0x11c),0); + _MI_INTR_MASK_REG = + (uint)__osRcpImTable[*(uint *)(in_k0_lo + 0x128) & (uint)__OSGlobalIntMask >> 0x10]; + return *(undefined8 *)(in_k0_lo + 0x28); } @@ -11309,26 +11344,26 @@ undefined8 __osDispatchThreadSave(void) void __osCleanupThread(void) { - int *piVar1; - longlong lVar2; - longlong lVar3; - longlong extraout_a0; - longlong extraout_a1; - - osDestroyThread(NULL); - piVar1 = (int *)*(int *)extraout_a0; - lVar3 = extraout_a0; - while( true ) { - lVar2 = (longlong)(int)piVar1; - if (lVar2 == 0) { - return; + int *piVar1; + longlong lVar2; + longlong lVar3; + longlong extraout_a0; + longlong extraout_a1; + + osDestroyThread(NULL); + piVar1 = (int *)*(int *)extraout_a0; + lVar3 = extraout_a0; + while( true ) { + lVar2 = (longlong)(int)piVar1; + if (lVar2 == 0) { + return; + } + if (lVar2 == extraout_a1) break; + piVar1 = (int *)*piVar1; + lVar3 = lVar2; } - if (lVar2 == extraout_a1) break; - piVar1 = (int *)*piVar1; - lVar3 = lVar2; - } - *(undefined4 *)lVar3 = *(undefined4 *)extraout_a1; - return; + *(undefined4 *)lVar3 = *(undefined4 *)extraout_a1; + return; } @@ -11336,21 +11371,21 @@ void __osCleanupThread(void) void __osDequeueThread(OSThread **queue,OSThread *t) { - OSThread *pOVar1; - OSThread *pOVar2; - - pOVar2 = *queue; - while( true ) { - pOVar1 = pOVar2; - if (pOVar1 == NULL) { - return; + OSThread *pOVar1; + OSThread *pOVar2; + + pOVar2 = *queue; + while( true ) { + pOVar1 = pOVar2; + if (pOVar1 == NULL) { + return; + } + if (pOVar1 == t) break; + pOVar2 = (OSThread *)pOVar1->next; + queue = (OSThread **)pOVar1; } - if (pOVar1 == t) break; - pOVar2 = (OSThread *)pOVar1->next; - queue = (OSThread **)pOVar1; - } - ((OSThread *)queue)->next = t->next; - return; + ((OSThread *)queue)->next = t->next; + return; } @@ -11358,13 +11393,13 @@ void __osDequeueThread(OSThread **queue,OSThread *t) void osYieldThread(void) { - u32 mask; - - mask = __osDisableInt(); - __osRunningThread->state = 2; - __osEnqueueAndYield(&__osRunQueue); - __osRestoreInt(mask); - return; + u32 mask; + + mask = __osDisableInt(); + __osRunningThread->state = 2; + __osEnqueueAndYield(&__osRunQueue); + __osRestoreInt(mask); + return; } @@ -11372,47 +11407,47 @@ void osYieldThread(void) void osInvalDCache(void *addr,int nbytes) { - bool bVar1; - ulonglong uVar2; - ulonglong uVar3; - - uVar2 = SEXT48((int)addr); - if (0 < nbytes) { - if (0x1fff < (uint)nbytes) { - uVar2 = 0xffffffff80000000; - do { - cacheOp(1,uVar2); - bVar1 = uVar2 < 0xffffffff80001ff0; - uVar2 = SEXT48((int)uVar2 + 0x10); - } while (bVar1); - return; - } - if (uVar2 < (ulonglong)(longlong)((int)addr + nbytes)) { - uVar3._4_4_ = (int)addr + nbytes + -0x10; - uVar3 = SEXT48(uVar3._4_4_); - if ((uVar2 & 0xf) != 0) { - addr = (void *)((int)addr - (int)(uVar2 & 0xf)); - cacheOp(0x15,(longlong)(int)addr); - if (uVar3 <= (ulonglong)(longlong)(int)addr) { - return; + bool bVar1; + ulonglong uVar2; + ulonglong uVar3; + + uVar2 = SEXT48((int)addr); + if (0 < nbytes) { + if (0x1fff < (uint)nbytes) { + uVar2 = 0xffffffff80000000; + do { + cacheOp(1,uVar2); + bVar1 = uVar2 < 0xffffffff80001ff0; + uVar2 = SEXT48((int)uVar2 + 0x10); + } while (bVar1); + return; } - uVar2 = SEXT48((int)addr + 0x10); - } - if ((uVar3 & 0xf) != 0) { - uVar3 = SEXT48(uVar3._4_4_ - (int)(uVar3 & 0xf)); - cacheOp(0x15,uVar3 + 0x10); - if (uVar3 < uVar2) { - return; + if (uVar2 < (ulonglong)(longlong)((int)addr + nbytes)) { + uVar3._4_4_ = (int)addr + nbytes + -0x10; + uVar3 = SEXT48(uVar3._4_4_); + if ((uVar2 & 0xf) != 0) { + addr = (void *)((int)addr - (int)(uVar2 & 0xf)); + cacheOp(0x15,(longlong)(int)addr); + if (uVar3 <= (ulonglong)(longlong)(int)addr) { + return; + } + uVar2 = SEXT48((int)addr + 0x10); + } + if ((uVar3 & 0xf) != 0) { + uVar3 = SEXT48(uVar3._4_4_ - (int)(uVar3 & 0xf)); + cacheOp(0x15,uVar3 + 0x10); + if (uVar3 < uVar2) { + return; + } + } + do { + cacheOp(0x11,uVar2); + bVar1 = uVar2 < uVar3; + uVar2 = SEXT48((int)uVar2 + 0x10); + } while (bVar1); } - } - do { - cacheOp(0x11,uVar2); - bVar1 = uVar2 < uVar3; - uVar2 = SEXT48((int)uVar2 + 0x10); - } while (bVar1); } - } - return; + return; } @@ -11420,30 +11455,30 @@ void osInvalDCache(void *addr,int nbytes) void osWritebackDCache(void *addr,s32 nbytes) { - bool bVar1; - ulonglong uVar2; - void *pvVar3; - - if (0 < nbytes) { - if (0x1fff < (uint)nbytes) { - uVar2 = 0xffffffff80000000; - do { - cacheOp(1,uVar2); - bVar1 = uVar2 < 0xffffffff80001ff0; - uVar2 = SEXT48((int)uVar2 + 0x10); - } while (bVar1); - return; + bool bVar1; + ulonglong uVar2; + void *pvVar3; + + if (0 < nbytes) { + if (0x1fff < (uint)nbytes) { + uVar2 = 0xffffffff80000000; + do { + cacheOp(1,uVar2); + bVar1 = uVar2 < 0xffffffff80001ff0; + uVar2 = SEXT48((int)uVar2 + 0x10); + } while (bVar1); + return; + } + if (addr < (void *)((int)addr + nbytes)) { + pvVar3 = (void *)((int)addr - ((uint)addr & 0xf)); + do { + uVar2 = SEXT48((int)pvVar3); + cacheOp(0x19,uVar2); + pvVar3 = (void *)((int)pvVar3 + 0x10); + } while (uVar2 < (ulonglong)(longlong)((int)(void *)((int)addr + nbytes) + -0x10)); + } } - if (addr < (void *)((int)addr + nbytes)) { - pvVar3 = (void *)((int)addr - ((uint)addr & 0xf)); - do { - uVar2 = SEXT48((int)pvVar3); - cacheOp(0x19,uVar2); - pvVar3 = (void *)((int)pvVar3 + 0x10); - } while (uVar2 < (ulonglong)(longlong)((int)(void *)((int)addr + nbytes) + -0x10)); - } - } - return; + return; } @@ -11451,30 +11486,30 @@ void osWritebackDCache(void *addr,s32 nbytes) int osSetTimer(OSTimer *t,OSTime value,OSTime interval,OSMesgQueue *mq,OSMesg msg) { - OSTime tim; - undefined4 in_stack_00000014; - OSMesgQueue *in_stack_00000018; - OSMesg in_stack_0000001c; - - t->next = NULL; - t->prev = NULL; - *(undefined4 *)((int)&t->interval + 4) = in_stack_00000014; - *(OSMesg *)&t->interval = msg; - if (((int)interval == 0) && (mq == NULL)) { - *(OSMesg *)&t->value = msg; - *(undefined4 *)((int)&t->value + 4) = in_stack_00000014; - } - else { - *(int *)&t->value = (int)interval; - *(OSMesgQueue **)((int)&t->value + 4) = mq; - } - t->mq = in_stack_00000018; - t->msg = in_stack_0000001c; - tim = __osInsertTimer(t); - if (__osTimerList->next == (OSTimer_s *)t) { - __osSetTimerIntr((longlong)(int)tim); - } - return 0; + OSTime tim; + undefined4 in_stack_00000014; + OSMesgQueue *in_stack_00000018; + OSMesg in_stack_0000001c; + + t->next = NULL; + t->prev = NULL; + *(undefined4 *)((int)&t->interval + 4) = in_stack_00000014; + *(OSMesg *)&t->interval = msg; + if (((int)interval == 0) && (mq == NULL)) { + *(OSMesg *)&t->value = msg; + *(undefined4 *)((int)&t->value + 4) = in_stack_00000014; + } + else { + *(int *)&t->value = (int)interval; + *(OSMesgQueue **)((int)&t->value + 4) = mq; + } + t->mq = in_stack_00000018; + t->msg = in_stack_0000001c; + tim = __osInsertTimer(t); + if (__osTimerList->next == (OSTimer_s *)t) { + __osSetTimerIntr((longlong)(int)tim); + } + return 0; } @@ -11482,19 +11517,19 @@ int osSetTimer(OSTimer *t,OSTime value,OSTime interval,OSMesgQueue *mq,OSMesg ms void alHeapInit(ALHeap *hp,u8 *base,s32 len) { - int iVar1; - - iVar1 = 0x10 - ((uint)base & 0xf); - if (iVar1 == 0x10) { - hp->base = base; - } - else { - hp->base = base + iVar1; - } - hp->len = len; - hp->count = 0; - hp->cur = hp->base; - return; + int iVar1; + + iVar1 = 0x10 - ((uint)base & 0xf); + if (iVar1 == 0x10) { + hp->base = base; + } + else { + hp->base = base + iVar1; + } + hp->len = len; + hp->count = 0; + hp->cur = hp->base; + return; } @@ -11502,7 +11537,7 @@ void alHeapInit(ALHeap *hp,u8 *base,s32 len) void removed_70010D70(void) { - return; + return; } @@ -11510,7 +11545,7 @@ void removed_70010D70(void) void removed_70010D78(void) { - return; + return; } @@ -11518,69 +11553,70 @@ void removed_70010D78(void) void _bnkfPatchInst(ALInstrument *inst,s32 offset,s32 table) { - int iVar1; - longlong lVar2; - ALInstrument *pAVar3; - int in_a3_lo; - ALSound *pAVar5; - longlong lVar4; - ALWaveTable *pAVar6; - - if (inst->flags == '\0') { - inst->flags = '\x01'; - lVar2 = 0; - if (0 < inst->soundCount) { - pAVar5 = inst->soundArray[0]; - pAVar3 = inst; - do { - pAVar5 = (ALSound *)((int)&pAVar5->envelope + offset); - pAVar3->soundArray[0] = pAVar5; - if (pAVar5->flags == '\0') { - pAVar5->flags = '\x01'; - pAVar5->envelope = (ALEnvelope *)((int)&pAVar5->envelope->attackTime + offset); - pAVar6 = (ALWaveTable *)((int)&pAVar5->wavetable->base + offset); - pAVar5->keyMap = (ALKeyMap *)(&pAVar5->keyMap->velocityMin + offset); - pAVar5->wavetable = pAVar6; - if (pAVar6->flags == '\0') { - pAVar6->flags = '\x01'; - pAVar6->base = pAVar6->base + in_a3_lo; - if (pAVar6->type == '\0') { - iVar1 = *(int *)((int)&pAVar6->waveInfo + 2); - *(int *)((int)&pAVar6->waveInfo + 6) = *(int *)((int)&pAVar6->waveInfo + 6) + offset; - if (iVar1 != 0) { - *(int *)((int)&pAVar6->waveInfo + 2) = iVar1 + offset; - } - } - else { - if (pAVar6->type != '\x01') { - lVar4 = (longlong)inst->soundCount; - goto LAB_70010e50; - } - iVar1 = *(int *)((int)&pAVar6->waveInfo + 2); - if (iVar1 != 0) { - *(int *)((int)&pAVar6->waveInfo + 2) = iVar1 + offset; - } - } - lVar4 = (longlong)inst->soundCount; - } - else { - lVar4 = (longlong)inst->soundCount; - } - } - else { - lVar4 = (longlong)inst->soundCount; - } + int iVar1; + longlong lVar2; + ALInstrument *pAVar3; + int in_a3_lo; + ALSound *pAVar5; + longlong lVar4; + ALWaveTable *pAVar6; + + if (inst->flags == '\0') { + inst->flags = '\x01'; + lVar2 = 0; + if (0 < inst->soundCount) { + pAVar5 = inst->soundArray[0]; + pAVar3 = inst; + do { + pAVar5 = (ALSound *)((int)&pAVar5->envelope + offset); + pAVar3->soundArray[0] = pAVar5; + if (pAVar5->flags == '\0') { + pAVar5->flags = '\x01'; + pAVar5->envelope = (ALEnvelope *)((int)&pAVar5->envelope->attackTime + offset); + pAVar6 = (ALWaveTable *)((int)&pAVar5->wavetable->base + offset); + pAVar5->keyMap = (ALKeyMap *)(&pAVar5->keyMap->velocityMin + offset); + pAVar5->wavetable = pAVar6; + if (pAVar6->flags == '\0') { + pAVar6->flags = '\x01'; + pAVar6->base = pAVar6->base + in_a3_lo; + if (pAVar6->type == '\0') { + iVar1 = *(int *)((int)&pAVar6->waveInfo + 2); + *(int *)((int)&pAVar6->waveInfo + 6) = + *(int *)((int)&pAVar6->waveInfo + 6) + offset; + if (iVar1 != 0) { + *(int *)((int)&pAVar6->waveInfo + 2) = iVar1 + offset; + } + } + else { + if (pAVar6->type != '\x01') { + lVar4 = (longlong)inst->soundCount; + goto LAB_70010e50; + } + iVar1 = *(int *)((int)&pAVar6->waveInfo + 2); + if (iVar1 != 0) { + *(int *)((int)&pAVar6->waveInfo + 2) = iVar1 + offset; + } + } + lVar4 = (longlong)inst->soundCount; + } + else { + lVar4 = (longlong)inst->soundCount; + } + } + else { + lVar4 = (longlong)inst->soundCount; + } LAB_70010e50: - lVar2 = (longlong)((int)lVar2 + 1); - if (lVar4 <= lVar2) { - return; + lVar2 = (longlong)((int)lVar2 + 1); + if (lVar4 <= lVar2) { + return; + } + pAVar5 = *(ALSound **)(pAVar3 + 1); + pAVar3 = (ALInstrument *)&pAVar3->tremType; + } while( true ); } - pAVar5 = *(ALSound **)(pAVar3 + 1); - pAVar3 = (ALInstrument *)&pAVar3->tremType; - } while( true ); } - } - return; + return; } @@ -11588,7 +11624,7 @@ LAB_70010e50: void removed_70010E6C(void) { - return; + return; } @@ -11596,75 +11632,75 @@ void removed_70010E6C(void) void alBnkfNew(ALBankFile *file,char *table) { - ALInstrument *inst; - s32 table_00; - s32 extraout_a2_lo; - s32 extraout_a2_lo_00; - int iVar1; - longlong lVar2; - int iVar3; - longlong lVar4; - ALBankFile *pAVar5; - longlong lVar6; - ALBank *pAVar7; - longlong lVar8; - int iVar9; - - if ((file->revision != 0x4231) || (lVar6 = 0, file->bankCount < 1)) { - return; - } - pAVar7 = file->bankArray[0]; - pAVar5 = file; - do { - pAVar7 = (ALBank *)((int)&file->revision + (int)&pAVar7->instCount); - lVar8 = (longlong)(int)pAVar7; - pAVar5->bankArray[0] = pAVar7; - if (lVar8 == 0) { + ALInstrument *inst; + s32 in_a2_lo; + s32 extraout_a2_lo; + s32 extraout_a2_lo_00; + int iVar1; + longlong lVar2; + int iVar3; + longlong lVar4; + ALBankFile *pAVar5; + longlong lVar6; + ALBank *pAVar7; + longlong lVar8; + int iVar9; + + if ((file->revision != 0x4231) || (lVar6 = 0, file->bankCount < 1)) { + return; + } + pAVar7 = file->bankArray[0]; + pAVar5 = file; + do { + pAVar7 = (ALBank *)((int)&file->revision + (int)&pAVar7->instCount); + lVar8 = (longlong)(int)pAVar7; + pAVar5->bankArray[0] = pAVar7; + if (lVar8 == 0) { LAB_70010f40: - lVar8 = (longlong)file->bankCount; - } - else { - if (pAVar7->flags == '\0') { - pAVar7->flags = '\x01'; - lVar2 = 0; - inst = (ALInstrument *)((int)&file->revision + (int)&pAVar7->percussion->volume); - if (pAVar7->percussion != NULL) { - pAVar7->percussion = inst; - _bnkfPatchInst(inst,(s32)file,table_00); - table_00 = extraout_a2_lo; + lVar8 = (longlong)file->bankCount; } - if (0 < *(short *)lVar8) { - iVar9 = *(int *)((short *)lVar8 + 6); - lVar4 = lVar8; - while( true ) { - iVar1 = (int)lVar8; - iVar3 = (int)lVar2; - inst = (ALInstrument *)((int)&file->revision + iVar9); - *(ALInstrument **)(iVar1 + 0xc) = inst; - if (inst != NULL) { - _bnkfPatchInst(inst,(s32)file,table_00); - table_00 = extraout_a2_lo_00; + else { + if (pAVar7->flags == '\0') { + pAVar7->flags = '\x01'; + lVar2 = 0; + inst = (ALInstrument *)((int)&file->revision + (int)&pAVar7->percussion->volume); + if (pAVar7->percussion != NULL) { + pAVar7->percussion = inst; + _bnkfPatchInst(inst,(s32)file,in_a2_lo); + in_a2_lo = extraout_a2_lo; + } + if (0 < *(short *)lVar8) { + iVar9 = *(int *)((short *)lVar8 + 6); + lVar4 = lVar8; + while( true ) { + iVar1 = (int)lVar8; + iVar3 = (int)lVar2; + inst = (ALInstrument *)((int)&file->revision + iVar9); + *(ALInstrument **)(iVar1 + 0xc) = inst; + if (inst != NULL) { + _bnkfPatchInst(inst,(s32)file,in_a2_lo); + in_a2_lo = extraout_a2_lo_00; + } + lVar2 = (longlong)(iVar3 + 1); + lVar8 = (longlong)(iVar1 + 4); + if (*(short *)lVar4 <= lVar2) break; + iVar9 = *(int *)(iVar1 + 0x10); + } + goto LAB_70010f40; + } + lVar8 = (longlong)file->bankCount; + } + else { + lVar8 = (longlong)file->bankCount; } - lVar2 = (longlong)(iVar3 + 1); - lVar8 = (longlong)(iVar1 + 4); - if ((longlong)*(short *)lVar4 <= lVar2) break; - iVar9 = *(int *)(iVar1 + 0x10); - } - goto LAB_70010f40; } - lVar8 = (longlong)file->bankCount; - } - else { - lVar8 = (longlong)file->bankCount; - } - } - lVar6 = (longlong)((int)lVar6 + 1); - if (lVar8 <= lVar6) { - return; - } - pAVar7 = *(ALBank **)(pAVar5 + 1); - pAVar5 = (ALBankFile *)pAVar5->bankArray; - } while( true ); + lVar6 = (longlong)((int)lVar6 + 1); + if (lVar8 <= lVar6) { + return; + } + pAVar7 = *(ALBank **)(pAVar5 + 1); + pAVar5 = (ALBankFile *)pAVar5->bankArray; + } while( true ); } @@ -11672,42 +11708,43 @@ LAB_70010f40: void alSeqFileNew(ALSeqFile *file,u8 *base) { - longlong lVar1; - ALSeqFile *pAVar2; - u8 *puVar3; - - lVar1 = 0; - if (0 < file->seqCount) { - puVar3 = file->seqArray[0].offset; - pAVar2 = file; - while( true ) { - lVar1 = (longlong)((int)lVar1 + 1); - pAVar2->seqArray[0].offset = base + (int)puVar3; - if ((longlong)file->seqCount <= lVar1) break; - puVar3 = *(u8 **)(pAVar2 + 1); - pAVar2 = (ALSeqFile *)&pAVar2->seqArray[0].len; + longlong lVar1; + ALSeqFile *pAVar2; + u8 *puVar3; + + lVar1 = 0; + if (0 < file->seqCount) { + puVar3 = file->seqArray[0].offset; + pAVar2 = file; + while( true ) { + lVar1 = (longlong)((int)lVar1 + 1); + pAVar2->seqArray[0].offset = base + (int)puVar3; + if (file->seqCount <= lVar1) break; + puVar3 = *(u8 **)(pAVar2 + 1); + pAVar2 = (ALSeqFile *)&pAVar2->seqArray[0].len; + } } - } - return; + return; } -void __CSPPostNextSeqEvent(int param_1) +void __CSPPostNextSeqEvent(ALCSPlayer *seqp) { - longlong lVar1; - int deltaTicks; - ALEvent evt; - - if (*(int *)(param_1 + 0x2c) == 1) { - if ((*(int *)(param_1 + 0x18) != 0) && - (lVar1 = __alCSeqNextDelta(*(int *)(param_1 + 0x18),(uint *)&deltaTicks), lVar1 != 0)) { - evt.type = 0; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x48),&evt,*(int *)(param_1 + 0x24) * deltaTicks); + char cVar1; + int deltaTicks; + ALEvent evt; + + if (seqp->state == 1) { + if ((seqp->target != NULL) && + (cVar1 = __alCSeqNextDelta(seqp->target,&deltaTicks), cVar1 != '\0')) { + evt.type = 0; + alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,&evt,seqp->uspt * deltaTicks + ); + } } - } - return; + return; } @@ -11715,12 +11752,12 @@ void __CSPPostNextSeqEvent(int param_1) void __setUsptFromTempo(ALCSPlayer *seqp,f32 tempo) { - if (seqp->target == NULL) { - seqp->uspt = 0x1e8; + if (seqp->target == NULL) { + seqp->uspt = 0x1e8; + return; + } + seqp->uspt = (int)((float)tempo * (float)seqp->target->qnpt); return; - } - seqp->uspt = (int)((float)tempo * (float)seqp->target->qnpt); - return; } @@ -11728,7 +11765,7 @@ void __setUsptFromTempo(ALCSPlayer *seqp,f32 tempo) void proc_70011064(void) { - return; + return; } @@ -11736,84 +11773,85 @@ void proc_70011064(void) void __CSPRepostEvent(ALEventQueue *evtq,ALEventListItem *item) { - int iVar1; - ALLink_s *pAVar2; - ALLink_s *pAVar3; - ALLink_s *pAVar4; - ulonglong mask; - ALLink_s *pAVar5; - ALLink_s *b; - ALLink *b_00; - ALLink *a; - ALCSPlayer *seqp; - - b_00 = NULL; - if ((*(char *)&item->delta == -1) && (*(char *)((int)&item->delta + 1) == 'Q')) { - iVar1 = seqp->uspt; - __setUsptFromTempo(seqp,(f32)(float)((uint)*(byte *)((int)&item->delta + 3) << 0x10 | - (uint)*(byte *)&(item->evt).type << 8 | - (uint)*(byte *)((int)&(item->evt).type + 1))); - pAVar2 = (ALLink_s *)(seqp->evtq).allocList.prev; - pAVar5 = NULL; - while (a = (ALLink *)pAVar2, a != NULL) { - pAVar2 = a->next; - b = (ALLink_s *)((int)&(a[1].next)->next + (int)&pAVar5->next); - pAVar5 = b; - if (*(short *)&a[1].prev == 0x15) { - alUnlink(a); - if (b_00 == NULL) { - a->next = NULL; - a->prev = NULL; - b_00 = a; - } - else { - alLink(a,b_00); - } - pAVar5 = b; - if (pAVar2 != NULL) { - pAVar5 = (ALLink_s *)((int)b - (int)a[1].next); - pAVar2[1].next = (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar2[1].next)->next); - } - a[1].next = b; - } - } - if (b_00 != NULL) { - a = (ALLink *)&(seqp->evtq).allocList.prev; - do { - pAVar2 = b_00->next; - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (b_00[1].next == (ALLink_s *)0x80000000)) { - trap(0x1800); - } - b_00[1].next = (ALLink_s *)(seqp->uspt * ((int)b_00[1].next / iVar1)); - mask._4_4_ = osSetIntMask(1); - if (seqp != (ALCSPlayer *)0xffffffb0) { - pAVar5 = a->next; - b = (ALLink_s *)a; - while (pAVar5 != NULL) { - pAVar3 = b_00[1].next; - pAVar4 = pAVar5[1].next; - if ((int)pAVar3 < (int)pAVar4) { - pAVar5[1].next = (ALLink_s *)((int)pAVar4 - (int)pAVar3); - alLink(b_00,(ALLink *)b); - goto LAB_7001121c; + int iVar1; + ALLink_s *pAVar2; + ALLink_s *pAVar3; + ALLink_s *pAVar4; + ulonglong mask; + ALLink_s *pAVar5; + ALLink_s *b; + ALLink *b_00; + ALLink *a; + ALCSPlayer *unaff_s7_lo; + + b_00 = NULL; + if ((*(char *)&item->delta == -1) && (*(char *)((int)&item->delta + 1) == 'Q')) { + iVar1 = unaff_s7_lo->uspt; + __setUsptFromTempo(unaff_s7_lo, + (f32)(float)((uint)*(byte *)((int)&item->delta + 3) << 0x10 | + (uint)*(byte *)&(item->evt).type << 8 | + (uint)*(byte *)((int)&(item->evt).type + 1))); + pAVar2 = (ALLink_s *)(unaff_s7_lo->evtq).allocList.prev; + pAVar5 = NULL; + while (a = (ALLink *)pAVar2, a != NULL) { + pAVar2 = a->next; + b = (ALLink_s *)((int)&(a[1].next)->next + (int)&pAVar5->next); + pAVar5 = b; + if (*(short *)&a[1].prev == 0x15) { + alUnlink(a); + if (b_00 == NULL) { + a->next = NULL; + a->prev = NULL; + b_00 = a; + } + else { + alLink(a,b_00); + } + if (pAVar2 != NULL) { + pAVar5 = (ALLink_s *)((int)b - (int)a[1].next); + pAVar2[1].next = + (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar2[1].next)->next); + } + a[1].next = b; } - b_00[1].next = (ALLink_s *)((int)pAVar3 - (int)pAVar4); - b = ((ALLink *)b)->next; - if (b == NULL) goto LAB_7001121c; - pAVar5 = b->next; - } - alLink(b_00,(ALLink *)b); } + if (b_00 != NULL) { + a = (ALLink *)&(unaff_s7_lo->evtq).allocList.prev; + do { + pAVar2 = b_00->next; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (b_00[1].next == (ALLink_s *)0x80000000)) { + trap(0x1800); + } + b_00[1].next = (ALLink_s *)(unaff_s7_lo->uspt * ((int)b_00[1].next / iVar1)); + mask._4_4_ = osSetIntMask(1); + if (unaff_s7_lo != (ALCSPlayer *)0xffffffb0) { + pAVar5 = a->next; + b = (ALLink_s *)a; + while (pAVar5 != NULL) { + pAVar3 = b_00[1].next; + pAVar4 = pAVar5[1].next; + if ((int)pAVar3 < (int)pAVar4) { + pAVar5[1].next = (ALLink_s *)((int)pAVar4 - (int)pAVar3); + alLink(b_00,(ALLink *)b); + goto LAB_7001121c; + } + b_00[1].next = (ALLink_s *)((int)pAVar3 - (int)pAVar4); + b = ((ALLink *)b)->next; + if (b == NULL) goto LAB_7001121c; + pAVar5 = b->next; + } + alLink(b_00,(ALLink *)b); + } LAB_7001121c: - osSetIntMask(mask._4_4_); - b_00 = (ALLink *)pAVar2; - } while (pAVar2 != NULL); + osSetIntMask(mask._4_4_); + b_00 = (ALLink *)pAVar2; + } while (pAVar2 != NULL); + } } - } - return; + return; } @@ -11821,365 +11859,370 @@ LAB_7001121c: void __CSPHandleMIDIMsg(ALCSPlayer *seqp,ALEvent *event) { - byte bVar1; - byte fxmix; - char cVar2; - int iVar3; - int iVar4; - ALMicroTime delta; - int t; - int **ppiVar6; - longlong lVar5; - undefined2 uVar8; - undefined4 *puVar7; - s16 volume; - uint uVar9; - ALVoice *voice; - byte bVar10; - int in_t0_lo; - ulonglong uVar11; - int unaff_s2_lo; - ALEventQueue *evtq; - uint uVar12; - f32 pitch; - float fVar13; - float fVar14; - undefined uVar16; - float fVar15; - f32 pitch_00; - f32 extraout_f12; - f32 extraout_f12_00; - undefined4 auStack92 [2]; - float afStack84 [4]; - ALVoiceConfig config [4]; - s16 sStack44; - ALVoice *pAStack40; - uint uStack36; - byte bStack32; - - bVar1 = *(byte *)(in_t0_lo + 9); - fxmix = *(byte *)(in_t0_lo + 10); - uVar9 = (uint)*(byte *)(in_t0_lo + 8) & 0xf0; - uVar11 = (ulonglong)*(byte *)(in_t0_lo + 8) & 0xf; - if (0x60 < uVar9 - 0x80) { - return; - } - uVar12 = (uint)uVar11; - bVar10 = (byte)uVar11; - switch(uVar9) { - case 0x80: - goto LAB_70011624; - case 0x90: - if (fxmix != 0) { - if (*(int *)(unaff_s2_lo + 0x2c) != 1) { + byte bVar1; + byte fxmix; + char cVar2; + int iVar3; + int iVar4; + ALMicroTime delta; + int t; + int **ppiVar6; + longlong lVar5; + undefined2 uVar8; + undefined4 *puVar7; + s16 volume; + uint uVar9; + ALVoice *voice; + byte bVar10; + int in_t0_lo; + ulonglong uVar11; + int unaff_s2_lo; + ALEventQueue *evtq; + uint uVar12; + f32 pitch; + float fVar13; + float fVar14; + undefined uVar16; + float fVar15; + f32 pitch_00; + f32 extraout_f12; + f32 extraout_f12_00; + undefined4 auStack92 [2]; + float afStack84 [4]; + ALVoiceConfig config [4]; + s16 sStack44; + ALVoice *pAStack40; + uint uStack36; + byte bStack32; + + bVar1 = *(byte *)(in_t0_lo + 9); + fxmix = *(byte *)(in_t0_lo + 10); + uVar9 = (uint)*(byte *)(in_t0_lo + 8) & 0xf0; + uVar11 = (ulonglong)*(byte *)(in_t0_lo + 8) & 0xf; + if (0x60 < uVar9 - 0x80) { return; - } - ppiVar6 = (int **)__lookupSoundQuick(unaff_s2_lo,bVar1,fxmix,uVar12); - if (ppiVar6 == NULL) { - return; - } - t = uVar12 * 0x10; - config[0].fxBus = 0; - config[0].unityPitch = '\0'; - config[0].priority = ZEXT12(*(byte *)(*(int *)(unaff_s2_lo + 0x60) + t + 8)); - puVar7 = ___mapVoice(unaff_s2_lo,bVar1,fxmix,bVar10); - if (puVar7 == NULL) { - return; - } - voice = (ALVoice *)(puVar7 + 1); - alSynAllocVoice(*(ALSynth **)(unaff_s2_lo + 0x14),voice,config); - *(int ***)(puVar7 + 8) = ppiVar6; - *(undefined *)(puVar7 + 0xd) = 0; - if (*(byte *)(*(int *)(unaff_s2_lo + 0x60) + t + 0xb) < 0x40) { - *(undefined *)((int)puVar7 + 0x35) = 0; - } - else { - *(undefined *)((int)puVar7 + 0x35) = 2; - } - pitch = alCents2Ratio((int)((((uint)bVar1 - (uint)*(byte *)(ppiVar6[1] + 1)) * 100 + - (int)*(char *)((int)ppiVar6[1] + 5)) * 0x10000) >> 0x10); - *(f32 *)(puVar7 + 10) = pitch; - *(undefined *)(puVar7 + 0xc) = *(undefined *)(*ppiVar6 + 3); - iVar3 = *(int *)(unaff_s2_lo + 0x1c); - iVar4 = **ppiVar6; - *(undefined *)((int)puVar7 + 0x37) = 0; - puVar7[9] = iVar3 + iVar4; - iVar3 = *(int *)(*(int *)(unaff_s2_lo + 0x60) + t); - afStack84[0] = 127.00000000; - if (((*(byte *)(iVar3 + 4) != 0) && (*(code **)(unaff_s2_lo + 0x70) != NULL)) && - (lVar5 = (**(code **)(unaff_s2_lo + 0x70)) - (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 4), - (ulonglong)*(byte *)(iVar3 + 5),(uint)*(byte *)(iVar3 + 6), - (uint)*(byte *)(iVar3 + 7)), lVar5 != 0)) { - sStack44 = 0x16; - uStack36 = auStack92[0]; - pAStack40 = (ALVoice *)puVar7; - alEvtqPostEvent((ALEventQueue *)(unaff_s2_lo + 0x48),(ALEvent *)&sStack44,(ALMicroTime)lVar5 - ); - *(byte *)((int)puVar7 + 0x37) = *(byte *)((int)puVar7 + 0x37) | 1; - } - if (false) { - fVar13 = ROUND(afStack84[0]); - } - else { - fVar13 = FLOOR(afStack84[0]); - } - uVar16 = (undefined)(int)fVar13; - if (false) { - if (false) { - fVar13 = ROUND(afStack84[0] - 2147483648.00000000); - } - else { - fVar13 = FLOOR(afStack84[0] - 2147483648.00000000); - } - if (true) { - uVar16 = (undefined)(int)fVar13; - goto LAB_70011490; - } - } - else { - if (-1 < (int)fVar13) goto LAB_70011490; - } - uVar16 = 0xff; -LAB_70011490: - *(undefined *)((int)puVar7 + 0x36) = uVar16; - afStack84[0] = 1.00000000; - evtq = (ALEventQueue *)(unaff_s2_lo + 0x48); - if (((*(byte *)(iVar3 + 8) != 0) && (*(code **)(unaff_s2_lo + 0x70) != NULL)) && - (lVar5 = (**(code **)(unaff_s2_lo + 0x70)) - (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 8), - (ulonglong)*(byte *)(iVar3 + 9),(uint)*(byte *)(iVar3 + 10), - (uint)*(byte *)(iVar3 + 0xb)), lVar5 != 0)) { - sStack44 = 0x17; - uStack36 = auStack92[0]; - pAStack40 = (ALVoice *)puVar7; - bStack32 = bVar10; - alEvtqPostEvent(evtq,(ALEvent *)&sStack44,(ALMicroTime)lVar5); - *(byte *)((int)puVar7 + 0x37) = *(byte *)((int)puVar7 + 0x37) | 2; - } - fVar15 = (float)puVar7[10]; - *(float *)(puVar7 + 0xb) = afStack84[0]; - fVar13 = (float)puVar7[0xb]; - t = *(int *)(unaff_s2_lo + 0x60) + t; - fVar14 = *(float *)(t + 0xc); - fxmix = *(byte *)(t + 10); - uVar9 = __vsPan((int)puVar7,unaff_s2_lo); - uVar8 = __vsVol((int)puVar7,unaff_s2_lo); - delta = **ppiVar6; - alSynStartVoiceParams - (*(ALSynth **)(unaff_s2_lo + 0x14),voice,(ALWaveTable *)ppiVar6[2],pitch_00, - SUB42(fVar14 * fVar15 * fVar13,0),(ALPan)uVar8,(u8)uVar9,(uint)fxmix); - sStack44 = 6; - bStack32 = *(undefined *)((int)*ppiVar6 + 0xd); - uStack36 = (*ppiVar6)[1]; - pAStack40 = voice; - alEvtqPostEvent(evtq,(ALEvent *)&sStack44,delta); - if (*(int *)(in_t0_lo + 0xc) == 0) { - return; - } - sStack44 = 0x15; - uStack36 = (uint)bVar10 << 0x18 | 0x80000000 | - (uint)CONCAT12(bVar1,(short)uStack36) & 0xffff00ff; - alEvtqPostEvent(evtq,(ALEvent *)&sStack44, - *(int *)(unaff_s2_lo + 0x24) * *(int *)(in_t0_lo + 0xc)); - return; } -LAB_70011624: - puVar7 = ___lookupVoice(unaff_s2_lo,bVar1,bVar10); - if (puVar7 != NULL) { - if (*(char *)((int)puVar7 + 0x35) == '\x02') { - *(undefined *)((int)puVar7 + 0x35) = 4; - } - else { - *(undefined *)((int)puVar7 + 0x35) = 3; - __seqpReleaseVoice(unaff_s2_lo,puVar7 + 1,*(int **)(*(int *)puVar7[8] + 8)); - } - } - break; - case 0xa0: - puVar7 = ___lookupVoice(unaff_s2_lo,bVar1,bVar10); - if (puVar7 != NULL) { - *(byte *)((int)puVar7 + 0x33) = fxmix; - volume = __vsVol((int)puVar7,unaff_s2_lo); - t = __vsDelta((int)puVar7,*(int *)(unaff_s2_lo + 0x1c)); - alSynSetVol(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),volume,t); - } - break; - case 0xb0: - if (bVar1 == 7) { - *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 9) = fxmix; - puVar7 = *(undefined4 **)(unaff_s2_lo + 100); - if (puVar7 != NULL) { - bVar1 = *(byte *)((int)puVar7 + 0x31); - while( true ) { - if (uVar11 == (ulonglong)bVar1) { - if (*(char *)(puVar7 + 0xd) == '\x03') { - puVar7 = (undefined4 *)*puVar7; + uVar12 = (uint)uVar11; + bVar10 = (byte)uVar11; + switch(uVar9) { + case 0x80: + goto LAB_70011624; + case 0x90: + if (fxmix != 0) { + if (*(int *)(unaff_s2_lo + 0x2c) != 1) { + return; + } + ppiVar6 = (int **)__lookupSoundQuick(unaff_s2_lo,bVar1,fxmix,uVar12); + if (ppiVar6 == NULL) { + return; + } + t = uVar12 * 0x10; + config[0].fxBus = 0; + config[0].unityPitch = '\0'; + config[0].priority = ZEXT12(*(byte *)(*(int *)(unaff_s2_lo + 0x60) + t + 8)); + puVar7 = ___mapVoice(unaff_s2_lo,bVar1,fxmix,bVar10); + if (puVar7 == NULL) { + return; + } + voice = (ALVoice *)(puVar7 + 1); + alSynAllocVoice(*(ALSynth **)(unaff_s2_lo + 0x14),voice,config); + *(int ***)(puVar7 + 8) = ppiVar6; + *(undefined *)(puVar7 + 0xd) = 0; + if (*(byte *)(*(int *)(unaff_s2_lo + 0x60) + t + 0xb) < 0x40) { + *(undefined *)((int)puVar7 + 0x35) = 0; } else { - volume = __vsVol((int)puVar7,unaff_s2_lo); - t = __vsDelta((int)puVar7,*(int *)(unaff_s2_lo + 0x1c)); - alSynSetVol(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),volume,t); - puVar7 = (undefined4 *)*puVar7; + *(undefined *)((int)puVar7 + 0x35) = 2; } - } - else { - puVar7 = (undefined4 *)*puVar7; - } - if (puVar7 == NULL) break; - bVar1 = *(byte *)((int)puVar7 + 0x31); - } - } - } - else { - if (bVar1 == 10) { - *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 7) = fxmix; - puVar7 = *(undefined4 **)(unaff_s2_lo + 100); - if (puVar7 != NULL) { - bVar1 = *(byte *)((int)puVar7 + 0x31); - while( true ) { - if (uVar11 == (ulonglong)bVar1) { - uVar9 = __vsPan((int)puVar7,unaff_s2_lo); - alSynSetPan(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),(u8)uVar9); - puVar7 = (undefined4 *)*puVar7; + pitch = alCents2Ratio((int)((((uint)bVar1 - (uint)*(byte *)(ppiVar6[1] + 1)) * 100 + + (int)*(char *)((int)ppiVar6[1] + 5)) * 0x10000) >> 0x10); + *(f32 *)(puVar7 + 10) = pitch; + *(undefined *)(puVar7 + 0xc) = *(undefined *)(*ppiVar6 + 3); + iVar3 = *(int *)(unaff_s2_lo + 0x1c); + iVar4 = **ppiVar6; + *(undefined *)((int)puVar7 + 0x37) = 0; + puVar7[9] = iVar3 + iVar4; + iVar3 = *(int *)(*(int *)(unaff_s2_lo + 0x60) + t); + afStack84[0] = 127.00000000; + if (((*(byte *)(iVar3 + 4) != 0) && (*(code **)(unaff_s2_lo + 0x70) != NULL)) && + (lVar5 = (**(code **)(unaff_s2_lo + 0x70)) + (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 4), + (ulonglong)*(byte *)(iVar3 + 5),(uint)*(byte *)(iVar3 + 6), + (uint)*(byte *)(iVar3 + 7)), lVar5 != 0)) { + sStack44 = 0x16; + uStack36 = auStack92[0]; + pAStack40 = (ALVoice *)puVar7; + alEvtqPostEvent((ALEventQueue *)(unaff_s2_lo + 0x48),(ALEvent *)&sStack44, + (ALMicroTime)lVar5); + *(byte *)((int)puVar7 + 0x37) = *(byte *)((int)puVar7 + 0x37) | 1; + } + if (false) { + fVar13 = ROUND(afStack84[0]); } else { - puVar7 = (undefined4 *)*puVar7; + fVar13 = FLOOR(afStack84[0]); } - if (puVar7 == NULL) break; - bVar1 = *(byte *)((int)puVar7 + 0x31); - } - } - } - else { - if (bVar1 == 0x10) { - *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 8) = fxmix; - } - else { - if (bVar1 == 0x40) { - *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 0xb) = fxmix; - puVar7 = *(undefined4 **)(unaff_s2_lo + 100); - if (puVar7 != NULL) { - bVar1 = *(byte *)((int)puVar7 + 0x31); - do { - if (uVar11 == (ulonglong)bVar1) { - cVar2 = *(char *)((int)puVar7 + 0x35); - if (cVar2 == '\x03') { - puVar7 = (undefined4 *)*puVar7; - } - else { - if (fxmix < 0x40) { - if (cVar2 == '\x02') { - *(undefined *)((int)puVar7 + 0x35) = 0; - } - else { - if (cVar2 != '\x04') { - puVar7 = (undefined4 *)*puVar7; - goto LAB_70011928; - } - *(undefined *)((int)puVar7 + 0x35) = 3; - __seqpReleaseVoice(unaff_s2_lo,puVar7 + 1,*(int **)(*(int *)puVar7[8] + 8)); - } - } - else { - if (cVar2 != '\0') { - puVar7 = (undefined4 *)*puVar7; - goto LAB_70011928; - } - *(undefined *)((int)puVar7 + 0x35) = 2; - } - puVar7 = (undefined4 *)*puVar7; - } + uVar16 = (undefined)(int)fVar13; + if (false) { + if (false) { + fVar13 = ROUND(afStack84[0] - 2147483648.00000000); } else { - puVar7 = (undefined4 *)*puVar7; + fVar13 = FLOOR(afStack84[0] - 2147483648.00000000); } -LAB_70011928: - if (puVar7 == NULL) { - return; + if (true) { + uVar16 = (undefined)(int)fVar13; + goto LAB_70011490; } - bVar1 = *(byte *)((int)puVar7 + 0x31); - } while( true ); } - } - else { - if (bVar1 == 0x5b) { - *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 10) = fxmix; - puVar7 = *(undefined4 **)(unaff_s2_lo + 100); - if (puVar7 != NULL) { + else { + if (-1 < (int)fVar13) goto LAB_70011490; + } + uVar16 = 0xff; +LAB_70011490: + *(undefined *)((int)puVar7 + 0x36) = uVar16; + afStack84[0] = 1.00000000; + evtq = (ALEventQueue *)(unaff_s2_lo + 0x48); + if (((*(byte *)(iVar3 + 8) != 0) && (*(code **)(unaff_s2_lo + 0x70) != NULL)) && + (lVar5 = (**(code **)(unaff_s2_lo + 0x70)) + (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 8), + (ulonglong)*(byte *)(iVar3 + 9),(uint)*(byte *)(iVar3 + 10), + (uint)*(byte *)(iVar3 + 0xb)), lVar5 != 0)) { + sStack44 = 0x17; + uStack36 = auStack92[0]; + pAStack40 = (ALVoice *)puVar7; + bStack32 = bVar10; + alEvtqPostEvent(evtq,(ALEvent *)&sStack44,(ALMicroTime)lVar5); + *(byte *)((int)puVar7 + 0x37) = *(byte *)((int)puVar7 + 0x37) | 2; + } + fVar15 = (float)puVar7[10]; + *(float *)(puVar7 + 0xb) = afStack84[0]; + fVar13 = (float)puVar7[0xb]; + t = *(int *)(unaff_s2_lo + 0x60) + t; + fVar14 = *(float *)(t + 0xc); + fxmix = *(byte *)(t + 10); + uVar9 = __vsPan((int)puVar7,unaff_s2_lo); + uVar8 = __vsVol((int)puVar7,unaff_s2_lo); + delta = **ppiVar6; + alSynStartVoiceParams + (*(ALSynth **)(unaff_s2_lo + 0x14),voice,(ALWaveTable *)ppiVar6[2],pitch_00, + SUB42(fVar14 * fVar15 * fVar13,0),(ALPan)uVar8,(u8)uVar9,(uint)fxmix); + sStack44 = 6; + bStack32 = *(undefined *)((int)*ppiVar6 + 0xd); + uStack36 = (*ppiVar6)[1]; + pAStack40 = voice; + alEvtqPostEvent(evtq,(ALEvent *)&sStack44,delta); + if (*(int *)(in_t0_lo + 0xc) == 0) { + return; + } + sStack44 = 0x15; + uStack36 = (uint)bVar10 << 0x18 | 0x80000000 | + (uint)CONCAT12(bVar1,(short)uStack36) & 0xffff00ff; + alEvtqPostEvent(evtq,(ALEvent *)&sStack44, + *(int *)(unaff_s2_lo + 0x24) * *(int *)(in_t0_lo + 0xc)); + return; + } +LAB_70011624: + puVar7 = ___lookupVoice(unaff_s2_lo,bVar1,bVar10); + if (puVar7 != NULL) { + if (*(char *)((int)puVar7 + 0x35) == '\x02') { + *(undefined *)((int)puVar7 + 0x35) = 4; + } + else { + *(undefined *)((int)puVar7 + 0x35) = 3; + __seqpReleaseVoice(unaff_s2_lo,puVar7 + 1,*(int **)(*(int *)puVar7[8] + 8)); + } + } + break; + case 0xa0: + puVar7 = ___lookupVoice(unaff_s2_lo,bVar1,bVar10); + if (puVar7 != NULL) { + *(byte *)((int)puVar7 + 0x33) = fxmix; + volume = __vsVol((int)puVar7,unaff_s2_lo); + t = __vsDelta((int)puVar7,*(int *)(unaff_s2_lo + 0x1c)); + alSynSetVol(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),volume,t); + } + break; + case 0xb0: + if (bVar1 == 7) { + *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 9) = fxmix; + puVar7 = *(undefined4 **)(unaff_s2_lo + 100); + if (puVar7 != NULL) { bVar1 = *(byte *)((int)puVar7 + 0x31); while( true ) { - if (uVar11 == (ulonglong)bVar1) { - alSynSetFXMix(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),fxmix); - puVar7 = (undefined4 *)*puVar7; - } - else { - puVar7 = (undefined4 *)*puVar7; - } - if (puVar7 == NULL) break; - bVar1 = *(byte *)((int)puVar7 + 0x31); + if (uVar11 == (ulonglong)bVar1) { + if (*(char *)(puVar7 + 0xd) == '\x03') { + puVar7 = (undefined4 *)*puVar7; + } + else { + volume = __vsVol((int)puVar7,unaff_s2_lo); + t = __vsDelta((int)puVar7,*(int *)(unaff_s2_lo + 0x1c)); + alSynSetVol(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1), + volume,t); + puVar7 = (undefined4 *)*puVar7; + } + } + else { + puVar7 = (undefined4 *)*puVar7; + } + if (puVar7 == NULL) break; + bVar1 = *(byte *)((int)puVar7 + 0x31); } - } } - } - } - } - } - break; - case 0xc0: - if ((longlong)(ulonglong)bVar1 < (longlong)**(short **)(unaff_s2_lo + 0x20)) { - __setInstChanState(unaff_s2_lo, - *(undefined **)(*(short **)(unaff_s2_lo + 0x20) + (uint)bVar1 * 2 + 6), - uVar12); - } - break; - case 0xd0: - puVar7 = *(undefined4 **)(unaff_s2_lo + 100); - if (puVar7 != NULL) { - fxmix = *(byte *)((int)puVar7 + 0x31); - while( true ) { - if (uVar11 == (ulonglong)fxmix) { - *(byte *)((int)puVar7 + 0x33) = bVar1; - volume = __vsVol((int)puVar7,unaff_s2_lo); - t = __vsDelta((int)puVar7,*(int *)(unaff_s2_lo + 0x1c)); - alSynSetVol(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),volume,t); - puVar7 = (undefined4 *)*puVar7; } else { - puVar7 = (undefined4 *)*puVar7; + if (bVar1 == 10) { + *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 7) = fxmix; + puVar7 = *(undefined4 **)(unaff_s2_lo + 100); + if (puVar7 != NULL) { + bVar1 = *(byte *)((int)puVar7 + 0x31); + while( true ) { + if (uVar11 == (ulonglong)bVar1) { + uVar9 = __vsPan((int)puVar7,unaff_s2_lo); + alSynSetPan(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1), + (u8)uVar9); + puVar7 = (undefined4 *)*puVar7; + } + else { + puVar7 = (undefined4 *)*puVar7; + } + if (puVar7 == NULL) break; + bVar1 = *(byte *)((int)puVar7 + 0x31); + } + } + } + else { + if (bVar1 == 0x10) { + *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 8) = fxmix; + } + else { + if (bVar1 == 0x40) { + *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 0xb) = fxmix; + puVar7 = *(undefined4 **)(unaff_s2_lo + 100); + if (puVar7 != NULL) { + bVar1 = *(byte *)((int)puVar7 + 0x31); + do { + if (uVar11 == (ulonglong)bVar1) { + cVar2 = *(char *)((int)puVar7 + 0x35); + if (cVar2 == '\x03') { + puVar7 = (undefined4 *)*puVar7; + } + else { + if (fxmix < 0x40) { + if (cVar2 == '\x02') { + *(undefined *)((int)puVar7 + 0x35) = 0; + } + else { + if (cVar2 != '\x04') { + puVar7 = (undefined4 *)*puVar7; + goto LAB_70011928; + } + *(undefined *)((int)puVar7 + 0x35) = 3; + __seqpReleaseVoice(unaff_s2_lo,puVar7 + 1, + *(int **)(*(int *)puVar7[8] + 8)) + ; + } + } + else { + if (cVar2 != '\0') { + puVar7 = (undefined4 *)*puVar7; + goto LAB_70011928; + } + *(undefined *)((int)puVar7 + 0x35) = 2; + } + puVar7 = (undefined4 *)*puVar7; + } + } + else { + puVar7 = (undefined4 *)*puVar7; + } +LAB_70011928: + if (puVar7 == NULL) { + return; + } + bVar1 = *(byte *)((int)puVar7 + 0x31); + } while( true ); + } + } + else { + if (bVar1 == 0x5b) { + *(byte *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 10) = fxmix; + puVar7 = *(undefined4 **)(unaff_s2_lo + 100); + if (puVar7 != NULL) { + bVar1 = *(byte *)((int)puVar7 + 0x31); + while( true ) { + if (uVar11 == (ulonglong)bVar1) { + alSynSetFXMix(*(ALSynth **)(unaff_s2_lo + 0x14), + (ALVoice *)(puVar7 + 1),fxmix); + puVar7 = (undefined4 *)*puVar7; + } + else { + puVar7 = (undefined4 *)*puVar7; + } + if (puVar7 == NULL) break; + bVar1 = *(byte *)((int)puVar7 + 0x31); + } + } + } + } + } + } } - if (puVar7 == NULL) break; - fxmix = *(byte *)((int)puVar7 + 0x31); - } - } - break; - case 0xe0: - t = (int)*(short *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 4) * - ((uint)fxmix * 0x80 + (uint)bVar1 + -0x2000); - if (t < 0) { - t += 0x1fff; - } - pitch = alCents2Ratio(t >> 0xd); - *(f32 *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 0xc) = pitch; - puVar7 = *(undefined4 **)(unaff_s2_lo + 100); - if (puVar7 != NULL) { - bVar1 = *(byte *)((int)puVar7 + 0x31); - pitch = extraout_f12; - while( true ) { - if (uVar11 == (ulonglong)bVar1) { - alSynSetPitch(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),pitch); - puVar7 = (undefined4 *)*puVar7; - pitch = extraout_f12_00; + break; + case 0xc0: + if ((longlong)(ulonglong)bVar1 < (longlong)**(short **)(unaff_s2_lo + 0x20)) { + __setInstChanState(unaff_s2_lo, + *(undefined **) + (*(short **)(unaff_s2_lo + 0x20) + (uint)bVar1 * 2 + 6),uVar12); } - else { - puVar7 = (undefined4 *)*puVar7; + break; + case 0xd0: + puVar7 = *(undefined4 **)(unaff_s2_lo + 100); + if (puVar7 != NULL) { + fxmix = *(byte *)((int)puVar7 + 0x31); + while( true ) { + if (uVar11 == (ulonglong)fxmix) { + *(byte *)((int)puVar7 + 0x33) = bVar1; + volume = __vsVol((int)puVar7,unaff_s2_lo); + t = __vsDelta((int)puVar7,*(int *)(unaff_s2_lo + 0x1c)); + alSynSetVol(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),volume,t); + puVar7 = (undefined4 *)*puVar7; + } + else { + puVar7 = (undefined4 *)*puVar7; + } + if (puVar7 == NULL) break; + fxmix = *(byte *)((int)puVar7 + 0x31); + } + } + break; + case 0xe0: + t = (int)*(short *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 4) * + ((uint)fxmix * 0x80 + (uint)bVar1 + -0x2000); + if (t < 0) { + t += 0x1fff; + } + pitch = alCents2Ratio(t >> 0xd); + *(f32 *)(*(int *)(unaff_s2_lo + 0x60) + uVar12 * 0x10 + 0xc) = pitch; + puVar7 = *(undefined4 **)(unaff_s2_lo + 100); + if (puVar7 != NULL) { + bVar1 = *(byte *)((int)puVar7 + 0x31); + pitch = extraout_f12; + while( true ) { + if (uVar11 == (ulonglong)bVar1) { + alSynSetPitch(*(ALSynth **)(unaff_s2_lo + 0x14),(ALVoice *)(puVar7 + 1),pitch); + puVar7 = (undefined4 *)*puVar7; + pitch = extraout_f12_00; + } + else { + puVar7 = (undefined4 *)*puVar7; + } + if (puVar7 == NULL) break; + bVar1 = *(byte *)((int)puVar7 + 0x31); + } } - if (puVar7 == NULL) break; - bVar1 = *(byte *)((int)puVar7 + 0x31); - } } - } - return; + return; } @@ -12187,241 +12230,244 @@ LAB_70011928: void proc_70011A64(void) { - return; + return; } -ALMicroTime __CSPVoiceHandler(void *node) +void __CSPHandleNextSeqEvent(ALCSPlayer *seqp) { - void *oscState; - ALVoiceState *pAVar1; - ALBank *pAVar2; - float fVar3; - ALCSPlayer *seqp; - s16 volume; - int t; - int t_00; - longlong lVar4; - ALMicroTime delta; - ALCSPlayer *seqp_00; - longlong extraout_a0; - undefined8 in_a1; - ALEvent *event; - undefined8 extraout_a1; - undefined8 in_a2; - undefined8 extraout_a2; - ALVoice *v; - longlong lVar5; - ALEventQueue *evtq; - undefined uVar6; - f32 pitch; - undefined2 uStack72; - float fStack40; - s16 sStack20; - int iStack16; - void *pvStack12; - undefined uStack8; - - lVar4 = (longlong)(int)node; - evtq = (ALEventQueue *)((int)node + 0x48); - lVar5 = lVar4; - do { - seqp = (ALCSPlayer *)lVar5; - if (true) { - switch(*(undefined2 *)&(seqp->nextEvent).msg) { - case 0: - if ((seqp->target != NULL) && - (__alCSeqGetTrackEvent(seqp->target,(u32)&uStack72,(ALEvent *)in_a2), true)) { - switch(uStack72) { - case 1: - __CSPHandleMIDIMsg(seqp_00,event); - lVar5 = (longlong)(int)seqp; - __CSPPostNextSeqEvent((int)seqp); - break; - case 3: - __CSPRepostEvent((ALEventQueue *)seqp_00,&uStack72); - lVar5 = (longlong)(int)seqp; - __CSPPostNextSeqEvent((int)seqp); - break; - case 4: - seqp->state = 2; - uStack72 = 0x10; - alEvtqPostEvent(evtq,(ALEvent *)&uStack72,0x7fffffff); - break; - case 0x12: - case 0x13: - case 0x14: - __CSPPostNextSeqEvent((int)seqp); - } - } - break; - case 2: - case 0x15: - __CSPHandleMIDIMsg((ALCSPlayer *)lVar4,(ALEvent *)in_a1); - lVar5 = (longlong)(int)seqp; - break; - case 5: - v = *(ALVoice **)((int)&(seqp->nextEvent).msg + 4); - alSynStopVoice(seqp->drvr,v); - alSynFreeVoice(seqp->drvr,v); - if (*(char *)((int)v->clientPrivate + 0x37) != '\0') { - __seqpStopOsc((int)seqp,(int *)v->clientPrivate); - } - __unmapVoice((int)seqp,(int)v); - break; - case 6: - v = *(ALVoice **)((int)&(seqp->nextEvent).msg + 4); - oscState = v->clientPrivate; - if (*(char *)((int)oscState + 0x34) == '\0') { - *(undefined *)((int)oscState + 0x34) = 1; - t_00 = *(int *)((int)&(seqp->nextEvent).msg + 8); - } - else { - t_00 = *(int *)((int)&(seqp->nextEvent).msg + 8); - } - *(int *)((int)oscState + 0x24) = seqp->curTime + t_00; - *(undefined *)((int)oscState + 0x30) = *(undefined *)&(seqp->evtq).freeList.next; - volume = __vsVol((int)oscState,(int)seqp); - alSynSetVol(seqp->drvr,v,volume,t_00); - break; - case 7: - __CSPRepostEvent((ALEventQueue *)(ALCSPlayer *)lVar4,(ALEventListItem *)((int)node + 0x38)); - lVar5 = (longlong)(int)seqp; - break; - case 9: - sStack20 = 9; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,(ALMicroTime)seqp->chanState); - break; - case 10: - pAVar1 = seqp->vAllocTail; - seqp->vol = *(s16 *)((int)&(seqp->nextEvent).msg + 4); - while (pAVar1 != NULL) { - volume = __vsVol((int)pAVar1,(int)seqp); - t_00 = __vsDelta((int)pAVar1,seqp->curTime); - alSynSetVol(seqp->drvr,&pAVar1->voice,volume,t_00); - pAVar1 = (ALVoiceState *)pAVar1->next; - } - break; - case 0xc: - *(undefined *) - &(&(seqp->vAllocHead->voice).node)[(uint)*(byte *)((int)&(seqp->nextEvent).msg + 4) * 2]. - prev = *(undefined *)((int)&(seqp->nextEvent).msg + 5); - break; - case 0xd: - seqp->target = *(ALCSeq **)((int)&(seqp->nextEvent).msg + 4); - __setUsptFromTempo(seqp,(f32)flt_800296C4); - if (seqp->bank != NULL) { - __initFromBank((int)seqp,(int)seqp->bank); - } - break; - case 0xe: - pAVar2 = *(ALBank **)((int)&(seqp->nextEvent).msg + 4); - seqp->bank = pAVar2; - __initFromBank((int)seqp,(int)pAVar2); - break; - case 0xf: - if (seqp->state != 1) { - seqp->state = 1; - __CSPPostNextSeqEvent((int)seqp); - } - break; - case 0x10: - if (seqp->state == 2) { - pAVar1 = seqp->vAllocTail; - while (pAVar1 != NULL) { - v = &pAVar1->voice; - alSynStopVoice(seqp->drvr,v); - alSynFreeVoice(seqp->drvr,v); - if (pAVar1->flags != '\0') { - __seqpStopOsc((int)seqp,(int *)pAVar1); - } - __unmapVoice((int)seqp,(int)v); - pAVar1 = seqp->vAllocTail; - } - seqp->state = 0; - } - break; - case 0x11: - if (seqp->state == 1) { - alEvtqFlushType(evtq,0); - alEvtqFlushType(evtq,0x15); - alEvtqFlushType(evtq,2); - pAVar1 = seqp->vAllocTail; - while (pAVar1 != NULL) { - lVar4 = __voiceNeedsNoteKill((int)seqp,(int *)&pAVar1->voice,50000); - if (lVar4 != 0) { - __seqpReleaseVoice((int)seqp,(int *)&pAVar1->voice,(int *)0xc350); - } - pAVar1 = (ALVoiceState *)pAVar1->next; - } - seqp->state = 2; - sStack20 = 0x10; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,0x7fffffff); - } - break; - case 0x16: - oscState = *(void **)((int)&(seqp->nextEvent).msg + 8); - t_00 = *(int *)((int)&(seqp->nextEvent).msg + 4); - delta = (*seqp->stopOsc)(oscState); - if (false) { - fVar3 = ROUND(fStack40); - } - else { - fVar3 = FLOOR(fStack40); - } - uVar6 = (undefined)(int)fVar3; - if (false) { - if (false) { - fVar3 = ROUND(fStack40 - 2147483648.00000000); - } - else { - fVar3 = FLOOR(fStack40 - 2147483648.00000000); - } - if (false) goto LAB_70011cf8; - uVar6 = (undefined)(int)fVar3; - } - else { - if ((int)fVar3 < 0) { + void *oscState; + ALVoiceState *pAVar1; + ALBank *pAVar2; + float fVar3; + ALCSPlayer *seqp_00; + s16 volume; + int t; + int t_00; + longlong lVar4; + ALMicroTime delta; + ALCSPlayer *seqp_01; + longlong extraout_a0; + undefined8 in_a1; + ALEvent *event; + undefined8 extraout_a1; + undefined8 in_a2; + undefined8 extraout_a2; + ALEventListItem *item; + ALVoice *v; + longlong lVar5; + ALEventQueue *evtq; + undefined uVar6; + f32 pitch; + undefined2 uStack72; + float fStack40; + s16 sStack20; + int iStack16; + void *pvStack12; + undefined uStack8; + + lVar4 = (longlong)(int)seqp; + item = (ALEventListItem *)&(seqp->nextEvent).msg; + evtq = (ALEventQueue *)&(seqp->evtq).freeList.prev; + lVar5 = lVar4; + do { + seqp_00 = (ALCSPlayer *)lVar5; + if (true) { + switch(*(undefined2 *)&(seqp_00->nextEvent).msg) { + case 0: + if ((seqp_00->target != NULL) && + (__alCSeqGetTrackEvent(seqp_00->target,(u32)&uStack72,(ALEvent *)in_a2), true)) { + switch(uStack72) { + case 1: + __CSPHandleMIDIMsg(seqp_01,event); + lVar5 = (longlong)(int)seqp_00; + __CSPPostNextSeqEvent(seqp_00); + break; + case 3: + __CSPRepostEvent((ALEventQueue *)seqp_01,&uStack72); + lVar5 = (longlong)(int)seqp_00; + __CSPPostNextSeqEvent(seqp_00); + break; + case 4: + seqp_00->state = 2; + uStack72 = 0x10; + alEvtqPostEvent(evtq,(ALEvent *)&uStack72,0x7fffffff); + break; + case 0x12: + case 0x13: + case 0x14: + __CSPPostNextSeqEvent(seqp_00); + } + } + break; + case 2: + case 0x15: + __CSPHandleMIDIMsg((ALCSPlayer *)lVar4,(ALEvent *)in_a1); + lVar5 = (longlong)(int)seqp_00; + break; + case 5: + v = *(ALVoice **)((int)&(seqp_00->nextEvent).msg + 4); + alSynStopVoice(seqp_00->drvr,v); + alSynFreeVoice(seqp_00->drvr,v); + if (*(char *)((int)v->clientPrivate + 0x37) != '\0') { + __seqpStopOsc((int)seqp_00,(int *)v->clientPrivate); + } + __unmapVoice((int)seqp_00,(int)v); + break; + case 6: + v = *(ALVoice **)((int)&(seqp_00->nextEvent).msg + 4); + oscState = v->clientPrivate; + if (*(char *)((int)oscState + 0x34) == '\0') { + *(undefined *)((int)oscState + 0x34) = 1; + t_00 = *(int *)((int)&(seqp_00->nextEvent).msg + 8); + } + else { + t_00 = *(int *)((int)&(seqp_00->nextEvent).msg + 8); + } + *(int *)((int)oscState + 0x24) = seqp_00->curTime + t_00; + *(undefined *)((int)oscState + 0x30) = *(undefined *)&(seqp_00->evtq).freeList.next; + volume = __vsVol((int)oscState,(int)seqp_00); + alSynSetVol(seqp_00->drvr,v,volume,t_00); + break; + case 7: + __CSPRepostEvent((ALEventQueue *)(ALCSPlayer *)lVar4,item); + lVar5 = (longlong)(int)seqp_00; + break; + case 9: + sStack20 = 9; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,(ALMicroTime)seqp_00->chanState); + break; + case 10: + pAVar1 = seqp_00->vAllocTail; + seqp_00->vol = *(s16 *)((int)&(seqp_00->nextEvent).msg + 4); + while (pAVar1 != NULL) { + volume = __vsVol((int)pAVar1,(int)seqp_00); + t_00 = __vsDelta((int)pAVar1,seqp_00->curTime); + alSynSetVol(seqp_00->drvr,&pAVar1->voice,volume,t_00); + pAVar1 = (ALVoiceState *)pAVar1->next; + } + break; + case 0xc: + *(undefined *) + &(&(seqp_00->vAllocHead->voice).node) + [(uint)*(byte *)((int)&(seqp_00->nextEvent).msg + 4) * 2].prev = + *(undefined *)((int)&(seqp_00->nextEvent).msg + 5); + break; + case 0xd: + seqp_00->target = *(ALCSeq **)((int)&(seqp_00->nextEvent).msg + 4); + __setUsptFromTempo(seqp_00,(f32)flt_800296C4); + if (seqp_00->bank != NULL) { + __initFromBank((int)seqp_00,(int)seqp_00->bank); + } + break; + case 0xe: + pAVar2 = *(ALBank **)((int)&(seqp_00->nextEvent).msg + 4); + seqp_00->bank = pAVar2; + __initFromBank((int)seqp_00,(int)pAVar2); + break; + case 0xf: + if (seqp_00->state != 1) { + seqp_00->state = 1; + __CSPPostNextSeqEvent(seqp_00); + } + break; + case 0x10: + if (seqp_00->state == 2) { + pAVar1 = seqp_00->vAllocTail; + while (pAVar1 != NULL) { + v = &pAVar1->voice; + alSynStopVoice(seqp_00->drvr,v); + alSynFreeVoice(seqp_00->drvr,v); + if (pAVar1->flags != '\0') { + __seqpStopOsc((int)seqp_00,(int *)pAVar1); + } + __unmapVoice((int)seqp_00,(int)v); + pAVar1 = seqp_00->vAllocTail; + } + seqp_00->state = 0; + } + break; + case 0x11: + if (seqp_00->state == 1) { + alEvtqFlushType(evtq,0); + alEvtqFlushType(evtq,0x15); + alEvtqFlushType(evtq,2); + pAVar1 = seqp_00->vAllocTail; + while (pAVar1 != NULL) { + lVar4 = __voiceNeedsNoteKill((int)seqp_00,(int *)&pAVar1->voice,50000); + if (lVar4 != 0) { + __seqpReleaseVoice((int)seqp_00,(int *)&pAVar1->voice,(int *)0xc350); + } + pAVar1 = (ALVoiceState *)pAVar1->next; + } + seqp_00->state = 2; + sStack20 = 0x10; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,0x7fffffff); + } + break; + case 0x16: + oscState = *(void **)((int)&(seqp_00->nextEvent).msg + 8); + t_00 = *(int *)((int)&(seqp_00->nextEvent).msg + 4); + delta = (*seqp_00->stopOsc)(oscState); + if (false) { + fVar3 = ROUND(fStack40); + } + else { + fVar3 = FLOOR(fStack40); + } + uVar6 = (undefined)(int)fVar3; + if (false) { + if (false) { + fVar3 = ROUND(fStack40 - 2147483648.00000000); + } + else { + fVar3 = FLOOR(fStack40 - 2147483648.00000000); + } + if (false) goto LAB_70011cf8; + uVar6 = (undefined)(int)fVar3; + } + else { + if ((int)fVar3 < 0) { LAB_70011cf8: - uVar6 = 0xff; - } + uVar6 = 0xff; + } + } + *(undefined *)(t_00 + 0x36) = uVar6; + volume = __vsVol(t_00,(int)seqp_00); + t = __vsDelta(t_00,seqp_00->curTime); + alSynSetVol(seqp_00->drvr,(ALVoice *)(t_00 + 4),volume,t); + sStack20 = 0x16; + iStack16 = t_00; + pvStack12 = oscState; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); + break; + case 0x17: + oscState = *(void **)((int)&(seqp_00->nextEvent).msg + 8); + t_00 = *(int *)((int)&(seqp_00->nextEvent).msg + 4); + uVar6 = *(undefined *)&(seqp_00->evtq).freeList.next; + delta = (*seqp_00->stopOsc)(oscState); + *(float *)(t_00 + 0x2c) = fStack40; + alSynSetPitch(seqp_00->drvr,(ALVoice *)(t_00 + 4),pitch); + sStack20 = 0x17; + iStack16 = t_00; + pvStack12 = oscState; + uStack8 = uVar6; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); + } } - *(undefined *)(t_00 + 0x36) = uVar6; - volume = __vsVol(t_00,(int)seqp); - t = __vsDelta(t_00,seqp->curTime); - alSynSetVol(seqp->drvr,(ALVoice *)(t_00 + 4),volume,t); - sStack20 = 0x16; - iStack16 = t_00; - pvStack12 = oscState; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); - break; - case 0x17: - oscState = *(void **)((int)&(seqp->nextEvent).msg + 8); - t_00 = *(int *)((int)&(seqp->nextEvent).msg + 4); - uVar6 = *(undefined *)&(seqp->evtq).freeList.next; - delta = (*seqp->stopOsc)(oscState); - *(float *)(t_00 + 0x2c) = fStack40; - alSynSetPitch(seqp->drvr,(ALVoice *)(t_00 + 4),pitch); - sStack20 = 0x17; - iStack16 = t_00; - pvStack12 = oscState; - uStack8 = uVar6; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); - } - } - delta = alEvtqNextEvent(evtq,(ALEvent *)(ALEventListItem *)((int)node + 0x38)); - t_00 = (int)lVar5; - *(ALMicroTime *)(t_00 + 0x28) = delta; - lVar4 = extraout_a0; - in_a1 = extraout_a1; - in_a2 = extraout_a2; - if (delta != 0) { - *(int *)(t_00 + 0x1c) = *(int *)(t_00 + 0x1c) + delta; - return delta; - } - } while( true ); + delta = alEvtqNextEvent(evtq,(ALEvent *)item); + t_00 = (int)lVar5; + *(ALMicroTime *)(t_00 + 0x28) = delta; + lVar4 = extraout_a0; + in_a1 = extraout_a1; + in_a2 = extraout_a2; + if (delta != 0) { + *(int *)(t_00 + 0x1c) = *(int *)(t_00 + 0x1c) + delta; + return; + } + } while( true ); } @@ -12429,71 +12475,72 @@ LAB_70011cf8: void alCSPNew(ALCSPlayer *seqp,ALSeqpConfig *c) { - ALHeap *hp; - ALPlayer_s *pAVar1; - ALGlobals *pAVar2; - ALVoiceState *items; - ALVoiceState *pAVar3; - int iVar4; - ALLink_s *pAVar5; - - hp = c->heap; - seqp->bank = NULL; - seqp->target = NULL; - pAVar2 = slg; - seqp->chanMask = 0xff; - seqp->uspt = 0x1e8; - seqp->nextDelta = 0; - seqp->state = 0; - seqp->vol = 0x7fff; - seqp->chanState = (ALChanState *)0x3e80; - seqp->curTime = 0; - *(ALGlobals **)&seqp->drvr = pAVar2; - seqp->updateOsc = c->initOsc; - seqp->stopOsc = c->updateOsc; - pAVar1 = (ALPlayer_s *)c->stopOsc; - *(undefined2 *)&(seqp->nextEvent).msg = 9; - seqp[1].node.next = pAVar1; - seqp->maxChannels = c->maxChannels; - _alHeapDBAlloc(NULL,0,hp,(uint)c->maxChannels,0x10); - seqp->vAllocHead = items; - __initChanState((int)seqp); - _alHeapDBAlloc(NULL,0,hp,c->maxVoices,0x38); - seqp->initOsc = NULL; - iVar4 = 0; - if (0 < c->maxVoices) { - pAVar5 = (ALLink_s *)seqp->initOsc; - pAVar3 = items; - while( true ) { - iVar4 += 1; - ((ALLink *)&pAVar3->next)->next = pAVar5; - *(ALVoiceState **)&seqp->initOsc = pAVar3; - pAVar3 = pAVar3 + 1; - if (c->maxVoices <= iVar4) break; - pAVar5 = (ALLink_s *)seqp->initOsc; + ALHeap *hp; + ALPlayer_s *pAVar1; + ALGlobals *pAVar2; + ALVoiceState *in_v0_lo; + ALVoiceState *pAVar3; + int iVar4; + ALLink_s *pAVar5; + + hp = c->heap; + seqp->bank = NULL; + seqp->target = NULL; + pAVar2 = slg; + seqp->chanMask = 0xff; + seqp->uspt = 0x1e8; + seqp->nextDelta = 0; + seqp->state = 0; + seqp->vol = 0x7fff; + seqp->chanState = (ALChanState *)0x3e80; + seqp->curTime = 0; + *(ALGlobals **)&seqp->drvr = pAVar2; + seqp->updateOsc = c->initOsc; + seqp->stopOsc = c->updateOsc; + pAVar1 = (ALPlayer_s *)c->stopOsc; + *(undefined2 *)&(seqp->nextEvent).msg = 9; + seqp[1].node.next = pAVar1; + seqp->maxChannels = c->maxChannels; + _alHeapDBAlloc(NULL,0,hp,(uint)c->maxChannels,0x10); + seqp->vAllocHead = in_v0_lo; + __initChanState((int)seqp); + _alHeapDBAlloc(NULL,0,hp,c->maxVoices,0x38); + seqp->initOsc = NULL; + iVar4 = 0; + if (0 < c->maxVoices) { + pAVar5 = (ALLink_s *)seqp->initOsc; + pAVar3 = in_v0_lo; + while( true ) { + iVar4 += 1; + ((ALLink *)&pAVar3->next)->next = pAVar5; + *(ALVoiceState **)&seqp->initOsc = pAVar3; + pAVar3 = pAVar3 + 1; + if (c->maxVoices <= iVar4) break; + pAVar5 = (ALLink_s *)seqp->initOsc; + } } - } - seqp->vAllocTail = NULL; - seqp->vFreeList = NULL; - _alHeapDBAlloc(NULL,0,hp,c->maxEvents,0x1c); - alEvtqNew((ALEventQueue *)&(seqp->evtq).freeList.prev,(ALEventListItem *)items,c->maxEvents); - (seqp->node).next = NULL; - (seqp->node).handler = __CSPVoiceHandler; - *(ALCSPlayer **)&(seqp->node).clientData = seqp; - alSynAddPlayer((ALSynth *)slg,(ALPlayer *)seqp); - return; + seqp->vAllocTail = NULL; + seqp->vFreeList = NULL; + _alHeapDBAlloc(NULL,0,hp,c->maxEvents,0x1c); + alEvtqNew((ALEventQueue *)&(seqp->evtq).freeList.prev,(ALEventListItem *)in_v0_lo,c->maxEvents); + (seqp->node).next = NULL; + (seqp->node).handler = __CSPHandleNextSeqEvent; + *(ALCSPlayer **)&(seqp->node).clientData = seqp; + alSynAddPlayer((ALSynth *)slg,(ALPlayer *)seqp); + return; } -void __CSPPostNextSeqEvent(int param_1) +void alCSPSetBank(ALCSPlayer *seqp,ALBank *b) { - ALEvent evt; - - evt.type = 0xe; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x48),&evt,0); - return; + ALEvent evt; + + evt.type = 0xe; + evt.msg._2_4_ = b; + alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,&evt,0); + return; } @@ -12501,7 +12548,7 @@ void __CSPPostNextSeqEvent(int param_1) s32 alCSPGetState(ALCSPlayer *seqp) { - return seqp->state; + return seqp->state; } @@ -12509,34 +12556,34 @@ s32 alCSPGetState(ALCSPlayer *seqp) void alCSeqGetLoc(ALCSeq *seq,ALCSeqMarker *marker) { - int i; - ALCSeqMarker *m; - ALCSeq *pAVar1; - - marker->validTracks = seq->validTracks; - i = 0; - marker->lastTicks = seq->lastTicks; - marker->lastDeltaTicks = seq->lastDeltaTicks; - pAVar1 = seq; - m = marker; - do { - i += 2; - marker->curLoc[0] = seq->curLoc[0]; - marker->curBUPtr[0] = seq->curBUPtr[0]; - m->curBULen[0] = pAVar1->curBULen[0]; - m->lastStatus[0] = pAVar1->lastStatus[0]; - marker->evtDeltaTicks[0] = seq->evtDeltaTicks[0]; - marker->curLoc[1] = seq->curLoc[1]; - marker->curBUPtr[1] = seq->curBUPtr[1]; - m->curBULen[1] = pAVar1->curBULen[1]; - m->lastStatus[1] = pAVar1->lastStatus[1]; - marker->evtDeltaTicks[1] = seq->evtDeltaTicks[1]; - seq = (ALCSeq *)&seq->qnpt; - pAVar1 = (ALCSeq *)((int)&pAVar1->base + 2); - marker = (ALCSeqMarker *)&marker->lastDeltaTicks; - m = (ALCSeqMarker *)((int)&m->validTracks + 2); - } while (i != 0x10); - return; + int i; + ALCSeqMarker *m; + ALCSeq *pAVar1; + + marker->validTracks = seq->validTracks; + i = 0; + marker->lastTicks = seq->lastTicks; + marker->lastDeltaTicks = seq->lastDeltaTicks; + pAVar1 = seq; + m = marker; + do { + i += 2; + marker->curLoc[0] = seq->curLoc[0]; + marker->curBUPtr[0] = seq->curBUPtr[0]; + m->curBULen[0] = pAVar1->curBULen[0]; + m->lastStatus[0] = pAVar1->lastStatus[0]; + marker->evtDeltaTicks[0] = seq->evtDeltaTicks[0]; + marker->curLoc[1] = seq->curLoc[1]; + marker->curBUPtr[1] = seq->curBUPtr[1]; + m->curBULen[1] = pAVar1->curBULen[1]; + m->lastStatus[1] = pAVar1->lastStatus[1]; + marker->evtDeltaTicks[1] = seq->evtDeltaTicks[1]; + seq = (ALCSeq *)&seq->qnpt; + pAVar1 = (ALCSeq *)((int)&pAVar1->base + 2); + marker = (ALCSeqMarker *)&marker->lastDeltaTicks; + m = (ALCSeqMarker *)((int)&m->validTracks + 2); + } while (i != 0x10); + return; } @@ -12544,34 +12591,34 @@ void alCSeqGetLoc(ALCSeq *seq,ALCSeqMarker *marker) void alCSeqSetLoc(ALCSeq *seq,ALCSeqMarker *m) { - int i; - ALCSeq *pAVar1; - ALCSeqMarker *pAVar2; - - seq->validTracks = m->validTracks; - i = 0; - seq->lastTicks = m->lastTicks; - seq->lastDeltaTicks = m->lastDeltaTicks; - pAVar2 = m; - pAVar1 = seq; - do { - i += 2; - seq->curLoc[0] = m->curLoc[0]; - seq->curBUPtr[0] = m->curBUPtr[0]; - pAVar1->curBULen[0] = pAVar2->curBULen[0]; - pAVar1->lastStatus[0] = pAVar2->lastStatus[0]; - seq->evtDeltaTicks[0] = m->evtDeltaTicks[0]; - seq->curLoc[1] = m->curLoc[1]; - seq->curBUPtr[1] = m->curBUPtr[1]; - pAVar1->curBULen[1] = pAVar2->curBULen[1]; - pAVar1->lastStatus[1] = pAVar2->lastStatus[1]; - seq->evtDeltaTicks[1] = m->evtDeltaTicks[1]; - m = (ALCSeqMarker *)&m->lastDeltaTicks; - pAVar2 = (ALCSeqMarker *)((int)&pAVar2->validTracks + 2); - seq = (ALCSeq *)&seq->qnpt; - pAVar1 = (ALCSeq *)((int)&pAVar1->base + 2); - } while (i != 0x10); - return; + int i; + ALCSeq *pAVar1; + ALCSeqMarker *pAVar2; + + seq->validTracks = m->validTracks; + i = 0; + seq->lastTicks = m->lastTicks; + seq->lastDeltaTicks = m->lastDeltaTicks; + pAVar2 = m; + pAVar1 = seq; + do { + i += 2; + seq->curLoc[0] = m->curLoc[0]; + seq->curBUPtr[0] = m->curBUPtr[0]; + pAVar1->curBULen[0] = pAVar2->curBULen[0]; + pAVar1->lastStatus[0] = pAVar2->lastStatus[0]; + seq->evtDeltaTicks[0] = m->evtDeltaTicks[0]; + seq->curLoc[1] = m->curLoc[1]; + seq->curBUPtr[1] = m->curBUPtr[1]; + pAVar1->curBULen[1] = pAVar2->curBULen[1]; + pAVar1->lastStatus[1] = pAVar2->lastStatus[1]; + seq->evtDeltaTicks[1] = m->evtDeltaTicks[1]; + m = (ALCSeqMarker *)&m->lastDeltaTicks; + pAVar2 = (ALCSeqMarker *)((int)&pAVar2->validTracks + 2); + seq = (ALCSeq *)&seq->qnpt; + pAVar1 = (ALCSeq *)((int)&pAVar1->base + 2); + } while (i != 0x10); + return; } @@ -12579,50 +12626,50 @@ void alCSeqSetLoc(ALCSeq *seq,ALCSeqMarker *m) u8 __getTrackByte(ALCSeq *seq,u32 track) { - byte bVar1; - byte bVar2; - undefined uVar3; - ALCMidiHdr *pAVar4; - int iVar5; - u8 uVar6; - ALCMidiHdr **ppAVar7; - ALCMidiHdr *pAVar8; - ALCMidiHdr *pAVar9; - - iVar5 = (int)&seq->base + track; - ppAVar7 = &seq->base + track; - if (*(char *)(iVar5 + 0x98) == '\0') { - pAVar4 = ppAVar7[6]; - uVar6 = *(u8 *)pAVar4->trackOffset; - pAVar8 = (ALCMidiHdr *)((int)pAVar4->trackOffset + 1); - ppAVar7[6] = pAVar8; - if (uVar6 == -2) { - bVar1 = *(byte *)pAVar8->trackOffset; - pAVar9 = (ALCMidiHdr *)((int)pAVar4->trackOffset + 2); - ppAVar7[6] = pAVar9; - pAVar8 = (ALCMidiHdr *)((int)pAVar4->trackOffset + 3); - if (bVar1 != 0xfe) { - bVar2 = *(byte *)pAVar9->trackOffset; + byte bVar1; + byte bVar2; + undefined uVar3; + ALCMidiHdr *pAVar4; + int iVar5; + u8 uVar6; + ALCMidiHdr **ppAVar7; + ALCMidiHdr *pAVar8; + ALCMidiHdr *pAVar9; + + iVar5 = (int)&seq->base + track; + ppAVar7 = &seq->base + track; + if (*(char *)(iVar5 + 0x98) == '\0') { + pAVar4 = ppAVar7[6]; + uVar6 = *(u8 *)pAVar4->trackOffset; + pAVar8 = (ALCMidiHdr *)((int)pAVar4->trackOffset + 1); ppAVar7[6] = pAVar8; - uVar3 = *(undefined *)pAVar8->trackOffset; - ppAVar7[6] = (ALCMidiHdr *)(pAVar4->trackOffset + 1); - ppAVar7[0x16] = - (ALCMidiHdr *) - ((int)(ALCMidiHdr *)(pAVar4->trackOffset + 1) + - (-4 - ((uint)bVar1 * 0x100 + (uint)bVar2))); - *(undefined *)(iVar5 + 0x98) = uVar3; - uVar6 = *(u8 *)ppAVar7[0x16]->trackOffset; - ppAVar7[0x16] = (ALCMidiHdr *)((int)ppAVar7[0x16]->trackOffset + 1); - *(char *)(iVar5 + 0x98) = *(char *)(iVar5 + 0x98) + -1; - } + if (uVar6 == -2) { + bVar1 = *(byte *)pAVar8->trackOffset; + pAVar9 = (ALCMidiHdr *)((int)pAVar4->trackOffset + 2); + ppAVar7[6] = pAVar9; + pAVar8 = (ALCMidiHdr *)((int)pAVar4->trackOffset + 3); + if (bVar1 != 0xfe) { + bVar2 = *(byte *)pAVar9->trackOffset; + ppAVar7[6] = pAVar8; + uVar3 = *(undefined *)pAVar8->trackOffset; + ppAVar7[6] = (ALCMidiHdr *)(pAVar4->trackOffset + 1); + ppAVar7[0x16] = + (ALCMidiHdr *) + ((int)(ALCMidiHdr *)(pAVar4->trackOffset + 1) + + (-4 - ((uint)bVar1 * 0x100 + (uint)bVar2))); + *(undefined *)(iVar5 + 0x98) = uVar3; + uVar6 = *(u8 *)ppAVar7[0x16]->trackOffset; + ppAVar7[0x16] = (ALCMidiHdr *)((int)ppAVar7[0x16]->trackOffset + 1); + *(char *)(iVar5 + 0x98) = *(char *)(iVar5 + 0x98) + -1; + } + } + return uVar6; } + pAVar4 = (&seq->base + track)[0x16]; + uVar6 = *(u8 *)pAVar4->trackOffset; + (&seq->base + track)[0x16] = (ALCMidiHdr *)((int)pAVar4->trackOffset + 1); + *(char *)(iVar5 + 0x98) = *(char *)(iVar5 + 0x98) + -1; return uVar6; - } - pAVar4 = (&seq->base + track)[0x16]; - uVar6 = *(u8 *)pAVar4->trackOffset; - (&seq->base + track)[0x16] = (ALCMidiHdr *)((int)pAVar4->trackOffset + 1); - *(char *)(iVar5 + 0x98) = *(char *)(iVar5 + 0x98) + -1; - return uVar6; } @@ -12630,26 +12677,26 @@ u8 __getTrackByte(ALCSeq *seq,u32 track) u32 __readVarLen(ALCSeq *seq,u32 track) { - u8 uVar1; - u8 c; - ulonglong uVar2; - int iVar3; - u32 value; - undefined8 _seq; - undefined8 in_t3; - - uVar1 = __getTrackByte((ALCSeq *)_seq,(u32)in_t3); - value = SEXT14((char)uVar1); - if (((longlong)(char)uVar1 & 0x80U) != 0) { - uVar2 = (longlong)(char)uVar1 & 0x7f; - do { - iVar3 = (int)uVar2; - c = __getTrackByte((ALCSeq *)_seq,(u32)in_t3); - value = iVar3 * 0x80 + ((int)(char)c & 0x7fU); - uVar2 = SEXT48((int)value); - } while (((longlong)(char)c & 0x80U) != 0); - } - return value; + u8 uVar1; + u8 c; + ulonglong uVar2; + int iVar3; + u32 value; + undefined8 _seq; + undefined8 in_t3; + + uVar1 = __getTrackByte((ALCSeq *)_seq,(u32)in_t3); + value = SEXT14((char)uVar1); + if (((longlong)(char)uVar1 & 0x80U) != 0) { + uVar2 = (longlong)(char)uVar1 & 0x7f; + do { + iVar3 = (int)uVar2; + c = __getTrackByte((ALCSeq *)_seq,(u32)in_t3); + value = iVar3 * 0x80 + ((int)(char)c & 0x7fU); + uVar2 = SEXT48((int)value); + } while (((longlong)(char)c & 0x80U) != 0); + } + return value; } @@ -12657,7 +12704,7 @@ u32 __readVarLen(ALCSeq *seq,u32 track) void proc_7001249C(void) { - return; + return; } @@ -12665,184 +12712,183 @@ void proc_7001249C(void) u32 __alCSeqGetTrackEvent(ALCSeq *seq,u32 track,ALEvent *event) { - u32 uVar1; - u8 uVar3; - u8 uVar4; - byte *pbVar2; - ALCSeq *extraout_a0_lo; - ALCSeq *extraout_a0_lo_00; - ALCSeq *extraout_a0_lo_01; - ALCSeq *extraout_a0_lo_02; - ALCSeq *extraout_a0_lo_03; - ALCSeq *seq_00; - ALCSeq *extraout_a0_lo_04; - ALCSeq *seq_01; - u32 extraout_a1_lo; - u32 extraout_a1_lo_00; - u32 extraout_a1_lo_01; - u32 extraout_a1_lo_02; - u32 track_00; - u32 extraout_a1_lo_03; - u32 track_01; - u32 extraout_a1_lo_04; - ALCMidiHdr *pAVar5; - ALCMidiHdr *pAVar6; - ALCMidiHdr **ppAVar7; - u32 uVar8; - uint uVar9; - byte bVar10; - u32 uStack12; - - track_00 = seq->lastDeltaTicks; - uVar9 = 0; - uVar8 = seq->validTracks; - pAVar5 = (ALCMidiHdr *)0xffffffff; - while( true ) { - pAVar6 = pAVar5; - uVar1 = uStack12; - if ((uVar8 >> (uVar9 & 0x1f) & 1) != 0) { - ppAVar7 = &seq->base + uVar9; - if (seq->deltaFlag == 0) { - pAVar6 = ppAVar7[0x2e]; - } - else { - ppAVar7[0x2e] = (ALCMidiHdr *)((int)ppAVar7[0x2e] - track_00); - pAVar6 = ppAVar7[0x2e]; - } - uVar1 = uVar9; - if (pAVar5 <= pAVar6) { + u32 uVar1; + u8 uVar3; + u8 uVar4; + byte *pbVar2; + ALCSeq *extraout_a0_lo; + ALCSeq *extraout_a0_lo_00; + ALCSeq *extraout_a0_lo_01; + ALCSeq *extraout_a0_lo_02; + ALCSeq *extraout_a0_lo_03; + ALCSeq *seq_00; + ALCSeq *extraout_a0_lo_04; + ALCSeq *seq_01; + u32 extraout_a1_lo; + u32 extraout_a1_lo_00; + u32 extraout_a1_lo_01; + u32 extraout_a1_lo_02; + u32 track_00; + u32 extraout_a1_lo_03; + u32 track_01; + u32 extraout_a1_lo_04; + ALCMidiHdr *pAVar5; + ALCMidiHdr *pAVar6; + ALCMidiHdr **ppAVar7; + u32 uVar8; + uint uVar9; + byte bVar10; + u32 uStack12; + + track_00 = seq->lastDeltaTicks; + uVar9 = 0; + uVar8 = seq->validTracks; + pAVar5 = (ALCMidiHdr *)0xffffffff; + while( true ) { pAVar6 = pAVar5; uVar1 = uStack12; - } - } - uStack12 = uVar1; - uVar9 += 1; - if (uVar9 == 0x10) break; - uVar8 = seq->validTracks; - pAVar5 = pAVar6; - } - uVar3 = __getTrackByte(seq,uStack12); - if ((longlong)(char)uVar3 == 0xff) { - uVar4 = __getTrackByte(seq,uStack12); - pbVar2 = (byte *)(int)(char)uVar4; - if (uVar4 == 'Q') { - *(undefined2 *)track = 3; - *(u8 *)(track + 8) = uVar3; - *(undefined *)(track + 9) = 0x51; - uVar3 = __getTrackByte(seq,uStack12); - *(u8 *)(track + 0xb) = uVar3; - uVar3 = __getTrackByte(seq,uStack12); - *(u8 *)(track + 0xc) = uVar3; - uVar3 = __getTrackByte(seq,uStack12); - pbVar2 = (byte *)(int)(char)uVar3; - *(u8 *)(track + 0xd) = uVar3; - seq->lastStatus[uStack12] = '\0'; - seq_01 = extraout_a0_lo_01; - track_00 = extraout_a1_lo_01; - } - else { - if (uVar4 == '/') { - uVar9 = seq->validTracks ^ 1 << (uStack12 & 0x1f); - seq->validTracks = uVar9; - if (uVar9 == 0) { - *(undefined2 *)track = 4; - seq_01 = extraout_a0_lo_00; - track_00 = extraout_a1_lo_00; - } - else { - *(undefined2 *)track = 0x12; - seq_01 = extraout_a0_lo_00; - track_00 = extraout_a1_lo_00; - } - } - else { - if (uVar4 == '.') { - __getTrackByte(seq,uStack12); - uVar3 = __getTrackByte(seq,uStack12); - pbVar2 = (byte *)(int)(char)uVar3; - seq->lastStatus[uStack12] = '\0'; - *(undefined2 *)track = 0x13; - seq_01 = extraout_a0_lo_02; - track_00 = extraout_a1_lo_02; - } - else { - seq_01 = seq; - track_00 = extraout_a1_lo_00; - if (uVar4 == '-') { - ppAVar7 = &seq->base + uStack12; - pAVar5 = ppAVar7[6]; - bVar10 = *(byte *)((int)pAVar5->trackOffset + 1); - seq_01 = (ALCSeq *)(uint)bVar10; - pbVar2 = (byte *)((int)pAVar5->trackOffset + 1); - track_00 = (u32)*(byte *)pAVar5->trackOffset; - if (bVar10 == 0) { - *pbVar2 = *(byte *)pAVar5->trackOffset; - ppAVar7[6] = (ALCMidiHdr *)((int)pAVar5->trackOffset + 6); + if ((uVar8 >> (uVar9 & 0x1f) & 1) != 0) { + ppAVar7 = &seq->base + uVar9; + if (seq->deltaFlag == 0) { + pAVar6 = ppAVar7[0x2e]; } else { - if (bVar10 != 0xff) { - *pbVar2 = bVar10 - 1; - } - pbVar2 = (byte *)((int)pAVar5->trackOffset + 6); - ppAVar7[6] = (ALCMidiHdr *) - (pbVar2 + -((uint)*(byte *)((int)pAVar5->trackOffset + 2) * 0x1000000 + - (uint)*(byte *)((int)pAVar5->trackOffset + 3) * 0x10000 + - (uint)*(byte *)(pAVar5->trackOffset + 1) * 0x100 + - (uint)*(byte *)((int)pAVar5->trackOffset + 5))); + ppAVar7[0x2e] = (ALCMidiHdr *)((int)ppAVar7[0x2e] - track_00); + pAVar6 = ppAVar7[0x2e]; + } + uVar1 = uVar9; + if (pAVar5 <= pAVar6) { + pAVar6 = pAVar5; + uVar1 = uStack12; } - seq->lastStatus[uStack12] = '\0'; - *(undefined2 *)track = 0x14; - } } - } + uStack12 = uVar1; + uVar9 += 1; + if (uVar9 == 0x10) break; + uVar8 = seq->validTracks; + pAVar5 = pAVar6; } - } - else { - *(undefined2 *)track = 1; - if (((longlong)(char)uVar3 & 0x80U) == 0) { - uVar4 = seq->lastStatus[uStack12]; - *(u8 *)(track + 9) = uVar3; - *(u8 *)(track + 8) = uVar4; - track_00 = extraout_a1_lo; - seq_01 = extraout_a0_lo; + uVar3 = __getTrackByte(seq,uStack12); + if ((longlong)(char)uVar3 == 0xff) { + uVar4 = __getTrackByte(seq,uStack12); + pbVar2 = (byte *)(int)(char)uVar4; + if (uVar4 == 'Q') { + *(undefined2 *)track = 3; + *(u8 *)(track + 8) = uVar3; + *(undefined *)(track + 9) = 0x51; + uVar3 = __getTrackByte(seq,uStack12); + *(u8 *)(track + 0xb) = uVar3; + uVar3 = __getTrackByte(seq,uStack12); + *(u8 *)(track + 0xc) = uVar3; + uVar3 = __getTrackByte(seq,uStack12); + pbVar2 = (byte *)(int)(char)uVar3; + *(u8 *)(track + 0xd) = uVar3; + seq->lastStatus[uStack12] = '\0'; + seq_01 = extraout_a0_lo_01; + track_00 = extraout_a1_lo_01; + } + else { + track_00 = extraout_a1_lo_00; + if (uVar4 == '/') { + uVar9 = seq->validTracks ^ 1 << (uStack12 & 0x1f); + seq->validTracks = uVar9; + seq_01 = extraout_a0_lo_00; + if (uVar9 == 0) { + *(undefined2 *)track = 4; + } + else { + *(undefined2 *)track = 0x12; + } + } + else { + if (uVar4 == '.') { + __getTrackByte(seq,uStack12); + uVar3 = __getTrackByte(seq,uStack12); + pbVar2 = (byte *)(int)(char)uVar3; + seq->lastStatus[uStack12] = '\0'; + *(undefined2 *)track = 0x13; + seq_01 = extraout_a0_lo_02; + track_00 = extraout_a1_lo_02; + } + else { + seq_01 = seq; + if (uVar4 == '-') { + ppAVar7 = &seq->base + uStack12; + pAVar5 = ppAVar7[6]; + bVar10 = *(byte *)((int)pAVar5->trackOffset + 1); + seq_01 = (ALCSeq *)(uint)bVar10; + pbVar2 = (byte *)((int)pAVar5->trackOffset + 1); + track_00 = (u32)*(byte *)pAVar5->trackOffset; + if (bVar10 == 0) { + *pbVar2 = *(byte *)pAVar5->trackOffset; + ppAVar7[6] = (ALCMidiHdr *)((int)pAVar5->trackOffset + 6); + } + else { + if (bVar10 != 0xff) { + *pbVar2 = bVar10 - 1; + } + pbVar2 = (byte *)((int)pAVar5->trackOffset + 6); + ppAVar7[6] = (ALCMidiHdr *) + (pbVar2 + -((uint)*(byte *)((int)pAVar5->trackOffset + 2) * + 0x1000000 + + (uint)*(byte *)((int)pAVar5->trackOffset + 3) * + 0x10000 + (uint)*(byte *)(pAVar5->trackOffset + + 1) * 0x100 + + (uint)*(byte *)((int)pAVar5->trackOffset + 5))); + } + seq->lastStatus[uStack12] = '\0'; + *(undefined2 *)track = 0x14; + } + } + } + } } else { - *(u8 *)(track + 8) = uVar3; - uVar4 = __getTrackByte(seq,uStack12); - *(u8 *)(track + 9) = uVar4; - seq->lastStatus[uStack12] = uVar3; - track_00 = extraout_a1_lo_03; - seq_01 = extraout_a0_lo_03; + *(undefined2 *)track = 1; + if (((longlong)(char)uVar3 & 0x80U) == 0) { + uVar4 = seq->lastStatus[uStack12]; + *(u8 *)(track + 9) = uVar3; + *(u8 *)(track + 8) = uVar4; + track_00 = extraout_a1_lo; + seq_01 = extraout_a0_lo; + } + else { + *(u8 *)(track + 8) = uVar3; + uVar4 = __getTrackByte(seq,uStack12); + *(u8 *)(track + 9) = uVar4; + seq->lastStatus[uStack12] = uVar3; + track_00 = extraout_a1_lo_03; + seq_01 = extraout_a0_lo_03; + } + pbVar2 = (byte *)(uint)*(byte *)(track + 8); + bVar10 = *(byte *)(track + 8) & 0xf0; + if ((bVar10 == 0xc0) || (seq_01 = seq, bVar10 == 0xd0)) { + *(undefined *)(track + 10) = 0; + } + else { + uVar3 = __getTrackByte(seq,uStack12); + pbVar2 = (byte *)(int)(char)uVar3; + *(u8 *)(track + 10) = uVar3; + seq_01 = seq_00; + track_00 = track_01; + if ((*(byte *)(track + 8) & 0xf0) == 0x90) { + pbVar2 = (byte *)__readVarLen(seq_00,track_01); + *(byte **)(track + 0xc) = pbVar2; + seq_01 = extraout_a0_lo_04; + track_00 = extraout_a1_lo_04; + } + } } - pbVar2 = (byte *)(uint)*(byte *)(track + 8); - bVar10 = *(byte *)(track + 8) & 0xf0; - if ((bVar10 == 0xc0) || (seq_01 = seq, bVar10 == 0xd0)) { - *(undefined *)(track + 10) = 0; + *(ALCMidiHdr **)(track + 4) = pAVar6; + *(ALCMidiHdr **)&seq->lastDeltaTicks = pAVar6; + seq->lastTicks = (int)pAVar6->trackOffset + seq->lastTicks; + if (*(short *)track != 0x12) { + ppAVar7 = &seq->base + uStack12; + pbVar2 = (byte *)__readVarLen(seq_01,track_00); + ppAVar7[0x2e] = (ALCMidiHdr *)(pbVar2 + (int)ppAVar7[0x2e]); } - else { - uVar3 = __getTrackByte(seq,uStack12); - pbVar2 = (byte *)(int)(char)uVar3; - *(u8 *)(track + 10) = uVar3; - seq_01 = seq_00; - track_00 = track_01; - if ((*(byte *)(track + 8) & 0xf0) == 0x90) { - pbVar2 = (byte *)__readVarLen(seq_00,track_01); - *(byte **)(track + 0xc) = pbVar2; - seq_01 = extraout_a0_lo_04; - track_00 = extraout_a1_lo_04; - } - } - } - *(ALCMidiHdr **)(track + 4) = pAVar6; - *(ALCMidiHdr **)&seq->lastDeltaTicks = pAVar6; - seq->lastTicks = (int)pAVar6->trackOffset + seq->lastTicks; - if (*(short *)track != 0x12) { - ppAVar7 = &seq->base + uStack12; - pbVar2 = (byte *)__readVarLen(seq_01,track_00); - ppAVar7[0x2e] = (ALCMidiHdr *)(pbVar2 + (int)ppAVar7[0x2e]); - } - seq->deltaFlag = 1; - return (u32)pbVar2; + seq->deltaFlag = 1; + return (u32)pbVar2; } @@ -12850,63 +12896,63 @@ u32 __alCSeqGetTrackEvent(ALCSeq *seq,u32 track,ALEvent *event) void alCSeqNew(ALCSeq *seq,u8 *ptr) { - int iVar1; - int iVar2; - u32 uVar3; - longlong lVar4; - longlong extraout_a0; - longlong lVar5; - longlong extraout_a1; - int iVar7; - longlong lVar6; - uint uVar8; - longlong lVar9; - int iVar10; - uint in_register_00001020; - float fVar11; - - lVar5 = (longlong)(int)ptr; - lVar4 = (longlong)(int)seq; - *(u8 **)&seq->base = ptr; - seq->validTracks = 0; - seq->lastDeltaTicks = 0; - seq->lastTicks = 0; - seq->deltaFlag = 1; - iVar10 = 0; - uVar8 = 0; - lVar6 = lVar4; - lVar9 = lVar4; - do { - iVar7 = (int)lVar6; - iVar2 = (int)lVar9; - *(undefined *)(iVar2 + 0xa8) = 0; - *(undefined4 *)(iVar7 + 0x58) = 0; - *(undefined *)(iVar2 + 0x98) = 0; - iVar1 = *(int *)((int)seq->base->trackOffset + iVar10); - if (iVar1 == 0) { - *(undefined4 *)(iVar7 + 0x18) = 0; + int iVar1; + int iVar2; + u32 uVar3; + longlong lVar4; + longlong extraout_a0; + longlong lVar5; + longlong extraout_a1; + int iVar7; + longlong lVar6; + uint uVar8; + longlong lVar9; + int iVar10; + uint in_register_00001020; + float fVar11; + + lVar5 = (longlong)(int)ptr; + lVar4 = (longlong)(int)seq; + *(u8 **)&seq->base = ptr; + seq->validTracks = 0; + seq->lastDeltaTicks = 0; + seq->lastTicks = 0; + seq->deltaFlag = 1; + iVar10 = 0; + uVar8 = 0; + lVar6 = lVar4; + lVar9 = lVar4; + do { + iVar7 = (int)lVar6; + iVar2 = (int)lVar9; + *(undefined *)(iVar2 + 0xa8) = 0; + *(undefined4 *)(iVar7 + 0x58) = 0; + *(undefined *)(iVar2 + 0x98) = 0; + iVar1 = *(int *)((int)seq->base->trackOffset + iVar10); + if (iVar1 == 0) { + *(undefined4 *)(iVar7 + 0x18) = 0; + } + else { + seq->validTracks = seq->validTracks | 1 << (uVar8 & 0x1f); + *(u8 **)(iVar7 + 0x18) = ptr + iVar1; + uVar3 = __readVarLen((ALCSeq *)lVar4,(u32)lVar5); + *(u32 *)(iVar7 + 0xb8) = uVar3; + lVar4 = extraout_a0; + lVar5 = extraout_a1; + } + uVar8 += 1; + lVar9 = (longlong)(iVar2 + 1); + iVar10 += 4; + lVar6 = (longlong)(iVar7 + 4); + } while (uVar8 != 0x10); + uVar3 = seq->base->division; + fVar11 = (float)uVar3; + if ((int)uVar3 < 0) { + fVar11 = fVar11 + 4294967296.00000000; } - else { - seq->validTracks = seq->validTracks | 1 << (uVar8 & 0x1f); - *(u8 **)(iVar7 + 0x18) = ptr + iVar1; - uVar3 = __readVarLen((ALCSeq *)lVar4,(u32)lVar5); - *(u32 *)(iVar7 + 0xb8) = uVar3; - lVar4 = extraout_a0; - lVar5 = extraout_a1; - } - uVar8 += 1; - lVar9 = (longlong)(iVar2 + 1); - iVar10 += 4; - lVar6 = (longlong)(iVar7 + 4); - } while (uVar8 != 0x10); - uVar3 = seq->base->division; - fVar11 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar11 = fVar11 + 4294967296.00000000; - } - *(float *)&seq->qnpt = (float)((double)((ulonglong)in_register_00001020 << 0x20) / (double)fVar11) - ; - return; + *(float *)&seq->qnpt = + (float)((double)((ulonglong)in_register_00001020 << 0x20) / (double)fVar11); + return; } @@ -12914,60 +12960,66 @@ void alCSeqNew(ALCSeq *seq,u8 *ptr) void alCSeqNewMarker(ALCSeq *seq,ALCSeqMarker *m,u32 ticks) { - ALCSeqMarker *pAVar1; - undefined *puVar2; - undefined *puVar3; - undefined *puVar4; - ALCSeqMarker *pAVar5; - undefined8 extraout_a2; - undefined8 uVar6; - undefined8 extraout_a2_00; - undefined auStack264 [4]; - u32 uStack260; - uint uStack252; - u32 uStack248; - short sStack16; - - alCSeqNew((ALCSeq *)auStack264,(u8 *)seq->base); - uVar6 = extraout_a2; - do { - m->validTracks = uStack260; - m->lastTicks = uStack252; - m->lastDeltaTicks = uStack248; - puVar2 = auStack264; - puVar3 = auStack264; - pAVar1 = m; - pAVar5 = m; + ALCSeqMarker *pAVar1; + undefined *puVar2; + undefined *puVar3; + undefined *puVar4; + ALCSeqMarker *pAVar5; + undefined8 extraout_a2; + undefined8 uVar6; + undefined8 extraout_a2_00; + undefined auStack264 [4]; + u32 uStack260; + uint uStack252; + u32 uStack248; + u8 *puStack240; + u32 uStack236; + u8 *apuStack232 [14]; + u8 *apuStack176 [16]; + undefined auStack112 [32]; + u32 auStack80 [16]; + short asStack16 [8]; + + alCSeqNew((ALCSeq *)auStack264,(u8 *)seq->base); + uVar6 = extraout_a2; do { - puVar4 = puVar3 + 4; - pAVar1->curLoc[0] = *(u8 **)(puVar2 + 0x18); - pAVar1->curBUPtr[0] = *(u8 **)(puVar2 + 0x58); - pAVar5->curBULen[0] = puVar3[0x98]; - pAVar5->lastStatus[0] = puVar3[0xa8]; - pAVar1->evtDeltaTicks[0] = *(u32 *)(puVar2 + 0xb8); - ((ALCSeqMarker *)(pAVar1->curLoc + 1))->validTracks = *(u32 *)(puVar2 + 0x1c); - pAVar1->curBUPtr[1] = *(u8 **)(puVar2 + 0x5c); - pAVar5->curBULen[1] = puVar3[0x99]; - pAVar5->lastStatus[1] = puVar3[0xa9]; - pAVar1->evtDeltaTicks[1] = *(u32 *)(puVar2 + 0xbc); - pAVar1->curLoc[2] = *(u8 **)(puVar2 + 0x20); - pAVar1->curBUPtr[2] = *(u8 **)(puVar2 + 0x60); - pAVar5->curBULen[2] = puVar3[0x9a]; - pAVar5->lastStatus[2] = puVar3[0xaa]; - pAVar1->evtDeltaTicks[2] = *(u32 *)(puVar2 + 0xc0); - pAVar1->curLoc[3] = *(u8 **)(puVar2 + 0x24); - pAVar1->curBUPtr[3] = *(u8 **)(puVar2 + 100); - pAVar5->curBULen[3] = puVar3[0x9b]; - pAVar5->lastStatus[3] = puVar3[0xab]; - pAVar1->evtDeltaTicks[3] = *(u32 *)(puVar2 + 0xc4); - puVar2 = puVar2 + 0x10; - puVar3 = puVar4; - pAVar1 = (ALCSeqMarker *)(pAVar1->curLoc + 1); - pAVar5 = (ALCSeqMarker *)&pAVar5->lastTicks; - } while (puVar4 != auStack264 + 0x10); - __alCSeqGetTrackEvent((ALCSeq *)auStack264,(u32)(auStack264 + 0xf8),(ALEvent *)uVar6); - } while ((sStack16 != 4) && (uVar6 = extraout_a2_00, uStack252 < ticks)); - return; + m->validTracks = uStack260; + m->lastTicks = uStack252; + m->lastDeltaTicks = uStack248; + puVar2 = auStack264; + puVar3 = auStack264; + pAVar1 = m; + pAVar5 = m; + do { + puVar4 = puVar3 + 4; + pAVar1->curLoc[0] = *(u8 **)(puVar2 + 0x18); + pAVar1->curBUPtr[0] = *(u8 **)(puVar2 + 0x58); + pAVar5->curBULen[0] = puVar3[0x98]; + pAVar5->lastStatus[0] = puVar3[0xa8]; + pAVar1->evtDeltaTicks[0] = *(u32 *)(puVar2 + 0xb8); + ((ALCSeqMarker *)(pAVar1->curLoc + 1))->validTracks = *(u32 *)(puVar2 + 0x1c); + pAVar1->curBUPtr[1] = *(u8 **)(puVar2 + 0x5c); + pAVar5->curBULen[1] = puVar3[0x99]; + pAVar5->lastStatus[1] = puVar3[0xa9]; + pAVar1->evtDeltaTicks[1] = *(u32 *)(puVar2 + 0xbc); + pAVar1->curLoc[2] = *(u8 **)(puVar2 + 0x20); + pAVar1->curBUPtr[2] = *(u8 **)(puVar2 + 0x60); + pAVar5->curBULen[2] = puVar3[0x9a]; + pAVar5->lastStatus[2] = puVar3[0xaa]; + pAVar1->evtDeltaTicks[2] = *(u32 *)(puVar2 + 0xc0); + pAVar1->curLoc[3] = *(u8 **)(puVar2 + 0x24); + pAVar1->curBUPtr[3] = *(u8 **)(puVar2 + 100); + pAVar5->curBULen[3] = puVar3[0x9b]; + pAVar5->lastStatus[3] = puVar3[0xab]; + pAVar1->evtDeltaTicks[3] = *(u32 *)(puVar2 + 0xc4); + puVar2 = puVar2 + 0x10; + puVar3 = puVar4; + pAVar1 = (ALCSeqMarker *)(pAVar1->curLoc + 1); + pAVar5 = (ALCSeqMarker *)&pAVar5->lastTicks; + } while (puVar4 != auStack264 + 0x10); + __alCSeqGetTrackEvent((ALCSeq *)auStack264,(u32)asStack16,(ALEvent *)uVar6); + } while ((asStack16[0] != 4) && (uVar6 = extraout_a2_00, uStack252 < ticks)); + return; } @@ -12975,7 +13027,7 @@ void alCSeqNewMarker(ALCSeq *seq,ALCSeqMarker *m,u32 ticks) s32 alCSeqGetTicks(ALCSeq *seq) { - return (s32)seq->lastTicks; + return (s32)seq->lastTicks; } @@ -12983,48 +13035,48 @@ s32 alCSeqGetTicks(ALCSeq *seq) u32 alCSeqSecToTicks(ALCSeq *seq,f32 sec,u32 tempo) { - u32 uVar1; - double dVar2; - undefined4 in_a2_hi; - int in_a2_lo; - double dVar3; - double dVar4; - uint in_register_00001090; - - uVar1 = seq->base->division; - dVar4 = (double)uVar1; - if ((int)uVar1 < 0) { - dVar4 = dVar4 + (double)((ulonglong)in_register_00001090 << 0x20); - } - dVar3 = (double)in_a2_lo; - if (CONCAT44(in_a2_hi,in_a2_lo) < 0) { - dVar3 = dVar3 + (double)((ulonglong)in_register_00001090 << 0x20); - } - dVar3 = ((double)(float)tempo * dbl_800296D0 * dVar4) / dVar3; - if (false) { - dVar2 = ROUND(dVar3); - } - else { - dVar2 = FLOOR(dVar3); - } - if (false) { - dVar3 = dVar3 - (double)((ulonglong)dVar4 & 0xffffffff00000000); + u32 uVar1; + double dVar2; + int in_a2_hi; + int in_a2_lo; + double dVar3; + double dVar4; + uint in_register_00001090; + + uVar1 = seq->base->division; + dVar4 = (double)uVar1; + if ((int)uVar1 < 0) { + dVar4 = dVar4 + (double)((ulonglong)in_register_00001090 << 0x20); + } + dVar3 = (double)in_a2_lo; + if (in_a2_hi < 0) { + dVar3 = dVar3 + (double)((ulonglong)in_register_00001090 << 0x20); + } + dVar3 = ((double)(float)tempo * dbl_800296D0 * dVar4) / dVar3; if (false) { - dVar3 = ROUND(dVar3); + dVar2 = ROUND(dVar3); } else { - dVar3 = FLOOR(dVar3); + dVar2 = FLOOR(dVar3); } - if (true) { - return (u32)((int)dVar3 | 0x80000000); + if (false) { + dVar3 = dVar3 - (double)((ulonglong)dVar4 & 0xffffffff00000000); + if (false) { + dVar3 = ROUND(dVar3); + } + else { + dVar3 = FLOOR(dVar3); + } + if (true) { + return (u32)((int)dVar3 | 0x80000000); + } } - } - else { - if (-1 < (int)dVar2) { - return (u32)(int)dVar2; + else { + if (-1 < (int)dVar2) { + return (u32)(int)dVar2; + } } - } - return 0xffffffff; + return 0xffffffff; } @@ -13032,126 +13084,126 @@ u32 alCSeqSecToTicks(ALCSeq *seq,f32 sec,u32 tempo) f32 alCSeqTicksToSec(ALCSeq *seq,s32 ticks,u32 tempo) { - u32 uVar1; - float fVar2; - float fVar3; - - fVar2 = (float)tempo; - if ((int)tempo < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - uVar1 = seq->base->division; - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - return (f32)(float)((double)((float)ticks * fVar2) / ((double)fVar3 * dbl_800296D8)); + u32 uVar1; + float fVar2; + float fVar3; + + fVar2 = (float)tempo; + if ((int)tempo < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + uVar1 = seq->base->division; + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + return (f32)(float)((double)((float)ticks * fVar2) / ((double)fVar3 * dbl_800296D8)); } -undefined8 __alCSeqNextDelta(int param_1,uint *param_2) +char __alCSeqNextDelta(ALCSeq *seq,s32 *pDeltaTicks) { - int iVar1; - uint uVar2; - uint uVar3; - uint uVar4; - int iVar5; - uint uVar6; - uint uVar7; - - uVar3 = 0xffffffff; - iVar1 = *(int *)(param_1 + 0x10); - if (*(int *)(param_1 + 4) == 0) { - return 0; - } - uVar4 = 0; - uVar7 = *(uint *)(param_1 + 4); - do { - uVar6 = uVar4 + 1; - if ((uVar7 >> (uVar4 & 0x1f) & 1) == 0) { - uVar6 = uVar7 >> (uVar6 & 0x1f); - uVar2 = uVar3; + u32 lastticks; + ALCMidiHdr *pAVar1; + ALCMidiHdr *firstTime; + uint uVar2; + ALCMidiHdr **ppAVar3; + uint uVar4; + uint uVar5; + + firstTime = (ALCMidiHdr *)0xffffffff; + lastticks = seq->lastDeltaTicks; + if (seq->validTracks == 0) { + return '\0'; } - else { - iVar5 = param_1 + uVar4 * 4; - if (*(int *)(param_1 + 0x14) == 0) { - uVar2 = *(uint *)(iVar5 + 0xb8); - } - else { - *(int *)(iVar5 + 0xb8) = *(int *)(iVar5 + 0xb8) - iVar1; - uVar7 = *(uint *)(param_1 + 4); - uVar2 = *(uint *)(iVar5 + 0xb8); - } - if (uVar2 < uVar3) { - uVar6 = uVar7 >> (uVar6 & 0x1f); - } - else { - uVar6 = uVar7 >> (uVar6 & 0x1f); - uVar2 = uVar3; - } - } - uVar3 = uVar2; - if ((uVar6 & 1) == 0) { + uVar2 = 0; + uVar5 = seq->validTracks; + do { + uVar4 = uVar2 + 1; + if ((uVar5 >> (uVar2 & 0x1f) & 1) == 0) { + uVar4 = uVar5 >> (uVar4 & 0x1f); + pAVar1 = firstTime; + } + else { + ppAVar3 = &seq->base + uVar2; + if (seq->deltaFlag == 0) { + pAVar1 = ppAVar3[0x2e]; + } + else { + ppAVar3[0x2e] = (ALCMidiHdr *)((int)ppAVar3[0x2e] - lastticks); + uVar5 = seq->validTracks; + pAVar1 = ppAVar3[0x2e]; + } + if (pAVar1 < firstTime) { + uVar4 = uVar5 >> (uVar4 & 0x1f); + } + else { + uVar4 = uVar5 >> (uVar4 & 0x1f); + pAVar1 = firstTime; + } + } + firstTime = pAVar1; + if ((uVar4 & 1) == 0) { LAB_70012c48: - uVar6 = uVar7 >> (uVar4 + 2 & 0x1f); - } - else { - iVar5 = param_1 + uVar4 * 4; - if (*(int *)(param_1 + 0x14) == 0) { - uVar3 = *(uint *)(iVar5 + 0xbc); - } - else { - *(int *)(iVar5 + 0xbc) = *(int *)(iVar5 + 0xbc) - iVar1; - uVar7 = *(uint *)(param_1 + 4); - uVar3 = *(uint *)(iVar5 + 0xbc); - } - if (uVar3 < uVar2) goto LAB_70012c48; - uVar6 = uVar7 >> (uVar4 + 2 & 0x1f); - uVar3 = uVar2; - } - uVar2 = uVar3; - if ((uVar6 & 1) == 0) { + uVar4 = uVar5 >> (uVar2 + 2 & 0x1f); + } + else { + ppAVar3 = &seq->base + uVar2; + if (seq->deltaFlag == 0) { + firstTime = ppAVar3[0x2f]; + } + else { + ppAVar3[0x2f] = (ALCMidiHdr *)((int)ppAVar3[0x2f] - lastticks); + uVar5 = seq->validTracks; + firstTime = ppAVar3[0x2f]; + } + if (firstTime < pAVar1) goto LAB_70012c48; + uVar4 = uVar5 >> (uVar2 + 2 & 0x1f); + firstTime = pAVar1; + } + pAVar1 = firstTime; + if ((uVar4 & 1) == 0) { LAB_70012c90: - uVar7 >>= uVar4 + 3 & 0x1f; - } - else { - iVar5 = param_1 + uVar4 * 4; - if (*(int *)(param_1 + 0x14) == 0) { - uVar2 = *(uint *)(iVar5 + 0xc0); - } - else { - *(int *)(iVar5 + 0xc0) = *(int *)(iVar5 + 0xc0) - iVar1; - uVar7 = *(uint *)(param_1 + 4); - uVar2 = *(uint *)(iVar5 + 0xc0); - } - if (uVar2 < uVar3) goto LAB_70012c90; - uVar7 >>= uVar4 + 3 & 0x1f; - uVar2 = uVar3; - } - uVar3 = uVar2; - if ((uVar7 & 1) != 0) { - iVar5 = param_1 + uVar4 * 4; - if (*(int *)(param_1 + 0x14) == 0) { - uVar3 = *(uint *)(iVar5 + 0xc4); - } - else { - *(int *)(iVar5 + 0xc4) = *(int *)(iVar5 + 0xc4) - iVar1; - uVar3 = *(uint *)(iVar5 + 0xc4); - } - if (uVar2 <= uVar3) { - uVar3 = uVar2; - } - } - uVar4 += 4; - if (uVar4 == 0x10) { - *(undefined4 *)(param_1 + 0x14) = 0; - *param_2 = uVar3; - return 1; - } - uVar7 = *(uint *)(param_1 + 4); - } while( true ); + uVar5 >>= uVar2 + 3 & 0x1f; + } + else { + ppAVar3 = &seq->base + uVar2; + if (seq->deltaFlag == 0) { + pAVar1 = ppAVar3[0x30]; + } + else { + ppAVar3[0x30] = (ALCMidiHdr *)((int)ppAVar3[0x30] - lastticks); + uVar5 = seq->validTracks; + pAVar1 = ppAVar3[0x30]; + } + if (pAVar1 < firstTime) goto LAB_70012c90; + uVar5 >>= uVar2 + 3 & 0x1f; + pAVar1 = firstTime; + } + firstTime = pAVar1; + if ((uVar5 & 1) != 0) { + ppAVar3 = &seq->base + uVar2; + if (seq->deltaFlag == 0) { + firstTime = ppAVar3[0x31]; + } + else { + ppAVar3[0x31] = (ALCMidiHdr *)((int)ppAVar3[0x31] - lastticks); + firstTime = ppAVar3[0x31]; + } + if (pAVar1 <= firstTime) { + firstTime = pAVar1; + } + } + uVar2 += 4; + if (uVar2 == 0x10) { + seq->deltaFlag = 0; + *(ALCMidiHdr **)pDeltaTicks = firstTime; + return '\x01'; + } + uVar5 = seq->validTracks; + } while( true ); } @@ -13159,13 +13211,13 @@ LAB_70012c90: void alCSPSetSeq(ALCSPlayer *seqp,ALCSeq *seq) { - s16 sStack16; - ALCSeq *pAStack12; - - sStack16 = 0xd; - pAStack12 = seq; - alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,(ALEvent *)&sStack16,0); - return; + s16 sStack16; + ALCSeq *pAStack12; + + sStack16 = 0xd; + pAStack12 = seq; + alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,(ALEvent *)&sStack16,0); + return; } @@ -13173,11 +13225,11 @@ void alCSPSetSeq(ALCSPlayer *seqp,ALCSeq *seq) void alCSPPlay(ALCSPlayer *seqp) { - ALEvent AStack16; - - AStack16.type = 0xf; - alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,&AStack16,0); - return; + ALEvent AStack16; + + AStack16.type = 0xf; + alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,&AStack16,0); + return; } @@ -13185,25 +13237,25 @@ void alCSPPlay(ALCSPlayer *seqp) void alSeqpStop(ALSeqPlayer *seqp) { - ALEvent AStack16; - - AStack16.type = 0x11; - alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,&AStack16,0); - return; + ALEvent AStack16; + + AStack16.type = 0x11; + alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,&AStack16,0); + return; } -void ultra_proc_70012DA0(ALCSPlayer *param_1,undefined2 param_2) +void alCSPSetVol(ALCSPlayer *seqp,s16 vol) { - s16 sStack16; - undefined2 uStack12; - - sStack16 = 10; - uStack12 = param_2; - alEvtqPostEvent((ALEventQueue *)&(param_1->evtq).freeList.prev,(ALEvent *)&sStack16,0); - return; + s16 sStack16; + s16 sStack12; + + sStack16 = 10; + sStack12 = vol; + alEvtqPostEvent((ALEventQueue *)&(seqp->evtq).freeList.prev,(ALEvent *)&sStack16,0); + return; } @@ -13211,24 +13263,25 @@ void ultra_proc_70012DA0(ALCSPlayer *param_1,undefined2 param_2) void alEvtqFlushType(ALEventQueue *evtq,s16 type) { - ALLink_s *pAVar1; - ALLink *a; - OSIntMask OVar2; - - OVar2 = osSetIntMask(1); - pAVar1 = (ALLink_s *)(evtq->allocList).next; - while (a = (ALLink *)pAVar1, a != NULL) { - pAVar1 = a->next; - if ((longlong)(int)type == (longlong)*(short *)&a[1].prev) { - if (pAVar1 != NULL) { - pAVar1[1].next = (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar1[1].next)->next); - } - alUnlink(a); - alLink(a,(ALLink *)evtq); + ALLink_s *pAVar1; + ALLink *a; + OSIntMask OVar2; + + OVar2 = osSetIntMask(1); + pAVar1 = (ALLink_s *)(evtq->allocList).next; + while (a = (ALLink *)pAVar1, a != NULL) { + pAVar1 = a->next; + if ((longlong)(int)type == (longlong)*(short *)&a[1].prev) { + if (pAVar1 != NULL) { + pAVar1[1].next = + (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar1[1].next)->next); + } + alUnlink(a); + alLink(a,(ALLink *)evtq); + } } - } - osSetIntMask(OVar2); - return; + osSetIntMask(OVar2); + return; } @@ -13236,20 +13289,20 @@ void alEvtqFlushType(ALEventQueue *evtq,s16 type) void alEvtqFlush(ALEventQueue *evtq) { - OSIntMask mask; - ALLink *thisNode; - ALLink_s *nextNode; - - mask = osSetIntMask(1); - thisNode = (ALLink *)(evtq->allocList).next; - while (thisNode != NULL) { - nextNode = thisNode->next; - alUnlink(thisNode); - alLink(thisNode,(ALLink *)evtq); - thisNode = (ALLink *)nextNode; - } - osSetIntMask(mask); - return; + OSIntMask mask; + ALLink *thisNode; + ALLink_s *nextNode; + + mask = osSetIntMask(1); + thisNode = (ALLink *)(evtq->allocList).next; + while (thisNode != NULL) { + nextNode = thisNode->next; + alUnlink(thisNode); + alLink(thisNode,(ALLink *)evtq); + thisNode = (ALLink *)nextNode; + } + osSetIntMask(mask); + return; } @@ -13257,51 +13310,51 @@ void alEvtqFlush(ALEventQueue *evtq) void alEvtqPostEvent(ALEventQueue *evtq,ALEvent *evt,ALMicroTime delta) { - ALLink_s *pAVar1; - OSIntMask mask; - ALLink *b; - int postAtEnd; - ALLink *item; - - postAtEnd = 0; - mask = osSetIntMask(1); - item = (ALLink *)(evtq->freeList).next; - if (item == NULL) { - osSetIntMask(mask); - } - else { - alUnlink(item); - alCopy(evt,&item[1].prev,0x10); - if (delta == 0x7fffffff) { - postAtEnd = -1; + ALLink_s *pAVar1; + OSIntMask mask; + ALLink *b; + int postAtEnd; + ALLink *item; + + postAtEnd = 0; + mask = osSetIntMask(1); + item = (ALLink *)(evtq->freeList).next; + if (item == NULL) { + osSetIntMask(mask); } - b = &evtq->allocList; - if (evtq != (ALEventQueue *)0xfffffff8) { - do { - pAVar1 = b->next; - if (pAVar1 == NULL) { - if (postAtEnd == 0) { - *(ALMicroTime *)&item[1].next = delta; - } - else { - item[1].next = NULL; - } - alLink(item,b); - break; + else { + alUnlink(item); + alCopy(evt,&item[1].prev,0x10); + if (delta == 0x7fffffff) { + postAtEnd = -1; } - if (delta < (int)pAVar1[1].next) { - *(ALMicroTime *)&item[1].next = delta; - pAVar1[1].next = (ALLink_s *)((int)pAVar1[1].next - delta); - alLink(item,b); - break; + b = &evtq->allocList; + if (evtq != (ALEventQueue *)0xfffffff8) { + do { + pAVar1 = b->next; + if (pAVar1 == NULL) { + if (postAtEnd == 0) { + *(ALMicroTime *)&item[1].next = delta; + } + else { + item[1].next = NULL; + } + alLink(item,b); + break; + } + if (delta < (int)pAVar1[1].next) { + *(ALMicroTime *)&item[1].next = delta; + pAVar1[1].next = (ALLink_s *)((int)pAVar1[1].next - delta); + alLink(item,b); + break; + } + delta -= (int)pAVar1[1].next; + b = (ALLink *)pAVar1; + } while (pAVar1 != NULL); } - delta -= (int)pAVar1[1].next; - b = (ALLink *)pAVar1; - } while (pAVar1 != NULL); + osSetIntMask(mask); } - osSetIntMask(mask); - } - return; + return; } @@ -13309,24 +13362,24 @@ void alEvtqPostEvent(ALEventQueue *evtq,ALEvent *evt,ALMicroTime delta) ALMicroTime alEvtqNextEvent(ALEventQueue *evtq,ALEvent *evt) { - ALLink *a; - OSIntMask OVar1; - ALLink_s *pAVar2; - - OVar1 = osSetIntMask(1); - a = (ALLink *)(evtq->allocList).next; - pAVar2 = NULL; - if (a == NULL) { - evt->type = -1; - } - else { - alUnlink(a); - alCopy(&a[1].prev,evt,0x10); - alLink(a,(ALLink *)evtq); - pAVar2 = a[1].next; - } - osSetIntMask(OVar1); - return (ALMicroTime)pAVar2; + ALLink *a; + OSIntMask OVar1; + ALLink_s *pAVar2; + + OVar1 = osSetIntMask(1); + a = (ALLink *)(evtq->allocList).next; + pAVar2 = NULL; + if (a == NULL) { + evt->type = -1; + } + else { + alUnlink(a); + alCopy(&a[1].prev,evt,0x10); + alLink(a,(ALLink *)evtq); + pAVar2 = a[1].next; + } + osSetIntMask(OVar1); + return (ALMicroTime)pAVar2; } @@ -13334,22 +13387,22 @@ ALMicroTime alEvtqNextEvent(ALEventQueue *evtq,ALEvent *evt) void alEvtqNew(ALEventQueue *evtq,ALEventListItem *items,s32 itemCount) { - int iVar1; - - evtq->eventCount = 0; - (evtq->allocList).next = NULL; - (evtq->allocList).prev = NULL; - (evtq->freeList).next = NULL; - (evtq->freeList).prev = NULL; - iVar1 = 0; - if (0 < itemCount) { - do { - alLink((ALLink *)items,(ALLink *)evtq); - iVar1 += 1; - items = items + 1; - } while (iVar1 != itemCount); - } - return; + int iVar1; + + evtq->eventCount = 0; + (evtq->allocList).next = NULL; + (evtq->allocList).prev = NULL; + (evtq->freeList).next = NULL; + (evtq->freeList).prev = NULL; + iVar1 = 0; + if (0 < itemCount) { + do { + alLink((ALLink *)items,(ALLink *)evtq); + iVar1 += 1; + items = items + 1; + } while (iVar1 != itemCount); + } + return; } @@ -13357,14 +13410,14 @@ void alEvtqNew(ALEventQueue *evtq,ALEventListItem *items,s32 itemCount) void alSynAddPlayer(ALSynth *drvr,ALPlayer *client) { - OSIntMask OVar1; - - OVar1 = osSetIntMask(1); - client->samplesLeft = drvr->curSamples; - *(ALPlayer **)&client->next = drvr->head; - drvr->head = client; - osSetIntMask(OVar1); - return; + OSIntMask OVar1; + + OVar1 = osSetIntMask(1); + client->samplesLeft = drvr->curSamples; + *(ALPlayer **)&client->next = drvr->head; + drvr->head = client; + osSetIntMask(OVar1); + return; } @@ -13372,55 +13425,55 @@ void alSynAddPlayer(ALSynth *drvr,ALPlayer *client) s32 _allocatePVoice(int param_1,int **param_2,short param_3) { - ALLink *a; - PVoice *pPVar1; - s32 stolen; - longlong lVar2; - PVoice *pv; - - a = *(ALLink **)(param_1 + 0x14); - lVar2 = (longlong)(int)param_3; - stolen = 0; - if (a == NULL) { - a = *(ALLink **)(param_1 + 4); + ALLink *a; + PVoice *pPVar1; + s32 stolen; + longlong lVar2; + PVoice *pv; + + a = *(ALLink **)(param_1 + 0x14); + lVar2 = (longlong)(int)param_3; + stolen = 0; if (a == NULL) { - pv = *(PVoice **)(param_1 + 0xc); - if ((PVoice **)pv != NULL) { - pPVar1 = ((PVoice **)pv)[2]; - while( true ) { - if (lVar2 < (longlong)*(short *)(pPVar1 + 0x16)) { - pv = *(PVoice **)pv; - } - else { - if (((PVoice **)pv)[0x36] == NULL) { - *(PVoice **)param_2 = pv; - stolen = 1; - lVar2 = (longlong)*(short *)(((PVoice **)pv)[2] + 0x16); - pv = *(PVoice **)pv; + a = *(ALLink **)(param_1 + 4); + if (a == NULL) { + pv = *(PVoice **)(param_1 + 0xc); + if ((PVoice **)pv != NULL) { + pPVar1 = ((PVoice **)pv)[2]; + while( true ) { + if (lVar2 < *(short *)(pPVar1 + 0x16)) { + pv = *(PVoice **)pv; + } + else { + if (((PVoice **)pv)[0x36] == NULL) { + *(PVoice **)param_2 = pv; + stolen = 1; + lVar2 = (longlong)*(short *)(((PVoice **)pv)[2] + 0x16); + pv = *(PVoice **)pv; + } + else { + pv = *(PVoice **)pv; + } + } + if (pv == NULL) break; + pPVar1 = *(PVoice **)(pv + 8); + } } - else { - pv = *(PVoice **)pv; - } - } - if (pv == NULL) break; - pPVar1 = *(PVoice **)(pv + 8); } - } + else { + *(ALLink **)param_2 = a; + alUnlink(a); + alLink(a,(ALLink *)(param_1 + 0xc)); + stolen = 0; + } } else { - *(ALLink **)param_2 = a; - alUnlink(a); - alLink(a,(ALLink *)(param_1 + 0xc)); - stolen = 0; + *(ALLink **)param_2 = a; + alUnlink(a); + alLink(a,(ALLink *)(param_1 + 0xc)); + stolen = 0; } - } - else { - *(ALLink **)param_2 = a; - alUnlink(a); - alLink(a,(ALLink *)(param_1 + 0xc)); - stolen = 0; - } - return stolen; + return stolen; } @@ -13428,54 +13481,54 @@ s32 _allocatePVoice(int param_1,int **param_2,short param_3) s32 alSynAllocVoice(ALSynth *drvr,ALVoice *voice,ALVoiceConfig *vc) { - byte bVar1; - s16 sVar2; - int iVar3; - s32 sVar4; - int iVar5; - int iVar6; - ALParam AVar7; - int *piStack4; - - piStack4 = NULL; - voice->priority = vc->priority; - bVar1 = vc->unityPitch; - voice->table = NULL; - voice->unityPitch = (ushort)bVar1; - sVar2 = vc->fxBus; - voice->state = 0; - voice->pvoice = NULL; - voice->fxBus = sVar2; - iVar6 = _allocatePVoice((int)drvr,&piStack4,vc->priority); - if (piStack4 != NULL) { - iVar3 = piStack4[3]; - if (iVar6 == 0) { - piStack4[0x36] = 0; + byte bVar1; + s16 sVar2; + int iVar3; + s32 sVar4; + int iVar5; + int iVar6; + ALParam AVar7; + int *piStack4; + + piStack4 = NULL; + voice->priority = vc->priority; + bVar1 = vc->unityPitch; + voice->table = NULL; + voice->unityPitch = (ushort)bVar1; + sVar2 = vc->fxBus; + voice->state = 0; + voice->pvoice = NULL; + voice->fxBus = sVar2; + iVar6 = _allocatePVoice((int)drvr,&piStack4,vc->priority); + if (piStack4 != NULL) { + iVar3 = piStack4[3]; + if (iVar6 == 0) { + piStack4[0x36] = 0; + } + else { + piStack4[0x36] = 0x200; + *(undefined4 *)(piStack4[2] + 8) = 0; + AVar7 = ___allocParam(); + sVar4 = drvr->paramSamples; + *(undefined2 *)((int)(char)AVar7 + 8) = 0xb; + *(undefined4 *)((int)(char)AVar7 + 0xc) = 0; + *(s32 *)((int)(char)AVar7 + 4) = sVar4; + *(int *)((int)(char)AVar7 + 0x10) = piStack4[0x36] + -0x40; + (**(code **)(iVar3 + 8))(iVar3,3,AVar7); + AVar7 = ___allocParam(); + if (AVar7 != (ALParam)0x0) { + iVar6 = drvr->paramSamples; + iVar5 = piStack4[0x36]; + *(undefined2 *)((int)(char)AVar7 + 8) = 0xf; + *(undefined4 *)(int)(char)AVar7 = 0; + *(int *)((int)(char)AVar7 + 4) = iVar6 + iVar5; + (**(code **)(iVar3 + 8))(iVar3,3,AVar7); + } + } + *(ALVoice **)(piStack4 + 2) = voice; + *(int **)&voice->pvoice = piStack4; } - else { - piStack4[0x36] = 0x200; - *(undefined4 *)(piStack4[2] + 8) = 0; - AVar7 = ___allocParam(); - sVar4 = drvr->paramSamples; - *(undefined2 *)((int)(char)AVar7 + 8) = 0xb; - *(undefined4 *)((int)(char)AVar7 + 0xc) = 0; - *(s32 *)((int)(char)AVar7 + 4) = sVar4; - *(int *)((int)(char)AVar7 + 0x10) = piStack4[0x36] + -0x40; - (**(code **)(iVar3 + 8))(iVar3,3,AVar7); - AVar7 = ___allocParam(); - if (AVar7 != (ALParam)0x0) { - iVar6 = drvr->paramSamples; - iVar5 = piStack4[0x36]; - *(undefined2 *)((int)(char)AVar7 + 8) = 0xf; - *(undefined4 *)(int)(char)AVar7 = 0; - *(int *)((int)(char)AVar7 + 4) = iVar6 + iVar5; - (**(code **)(iVar3 + 8))(iVar3,3,AVar7); - } - } - *(ALVoice **)(piStack4 + 2) = voice; - *(int **)&voice->pvoice = piStack4; - } - return (s32)(uint)(piStack4 != NULL); + return (s32)(uint)(piStack4 != NULL); } @@ -13483,22 +13536,22 @@ s32 alSynAllocVoice(ALSynth *drvr,ALVoice *voice,ALVoiceConfig *vc) void alSynSetVol(ALSynth *synth,ALVoice *v,s16 volume,ALMicroTime t) { - int iVar1; - ALParam AVar3; - int iVar2; - - if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { - iVar2 = synth->paramSamples; - iVar1 = *(int *)(v->pvoice + 0xd8); - *(undefined2 *)((int)(char)AVar3 + 8) = 0xb; - *(int *)((int)(char)AVar3 + 4) = iVar2 + iVar1; - *(int *)((int)(char)AVar3 + 0xc) = (int)volume; - iVar2 = _timeToSamples(synth,t); - ((undefined4 *)(int)(char)AVar3)[4] = iVar2; - *(undefined4 *)(int)(char)AVar3 = 0; - (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3); - } - return; + int iVar1; + ALParam AVar3; + int iVar2; + + if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { + iVar2 = synth->paramSamples; + iVar1 = *(int *)(v->pvoice + 0xd8); + *(undefined2 *)((int)(char)AVar3 + 8) = 0xb; + *(int *)((int)(char)AVar3 + 4) = iVar2 + iVar1; + *(int *)((int)(char)AVar3 + 0xc) = (int)volume; + iVar2 = _timeToSamples(synth,t); + ((undefined4 *)(int)(char)AVar3)[4] = iVar2; + *(undefined4 *)(int)(char)AVar3 = 0; + (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3); + } + return; } @@ -13506,21 +13559,21 @@ void alSynSetVol(ALSynth *synth,ALVoice *v,s16 volume,ALMicroTime t) void alSynStartVoice(ALSynth *synth,ALVoice *voice,ALWaveTable *table) { - int iVar1; - int iVar2; - ALParam AVar3; - - if ((voice->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { - iVar1 = synth->paramSamples; - iVar2 = *(int *)(voice->pvoice + 0xd8); - *(undefined2 *)((int)(char)AVar3 + 8) = 0xe; - *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; - *(undefined4 *)(int)(char)AVar3 = 0; - *(ALWaveTable **)((int)(char)AVar3 + 0xc) = table; - *(s16 *)((int)(char)AVar3 + 10) = voice->unityPitch; - (**(code **)(*(int *)(voice->pvoice + 0xc) + 8))(*(int *)(voice->pvoice + 0xc),3,AVar3); - } - return; + int iVar1; + int iVar2; + ALParam AVar3; + + if ((voice->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { + iVar1 = synth->paramSamples; + iVar2 = *(int *)(voice->pvoice + 0xd8); + *(undefined2 *)((int)(char)AVar3 + 8) = 0xe; + *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; + *(undefined4 *)(int)(char)AVar3 = 0; + *(ALWaveTable **)((int)(char)AVar3 + 0xc) = table; + *(s16 *)((int)(char)AVar3 + 10) = voice->unityPitch; + (**(code **)(*(int *)(voice->pvoice + 0xc) + 8))(*(int *)(voice->pvoice + 0xc),3,AVar3); + } + return; } @@ -13528,20 +13581,20 @@ void alSynStartVoice(ALSynth *synth,ALVoice *voice,ALWaveTable *table) void alSynSetPan(ALSynth *synth,ALVoice *v,u8 pan) { - int iVar1; - int iVar2; - ALParam AVar3; - - if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { - iVar1 = synth->paramSamples; - iVar2 = *(int *)(v->pvoice + 0xd8); - *(undefined2 *)((int)(char)AVar3 + 8) = 0xc; - *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; - *(undefined4 *)(int)(char)AVar3 = 0; - *(uint *)((int)(char)AVar3 + 0xc) = (uint)pan; - (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3,AVar3); - } - return; + int iVar1; + int iVar2; + ALParam AVar3; + + if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { + iVar1 = synth->paramSamples; + iVar2 = *(int *)(v->pvoice + 0xd8); + *(undefined2 *)((int)(char)AVar3 + 8) = 0xc; + *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; + *(undefined4 *)(int)(char)AVar3 = 0; + *(uint *)((int)(char)AVar3 + 0xc) = (uint)pan; + (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3,AVar3); + } + return; } @@ -13549,21 +13602,21 @@ void alSynSetPan(ALSynth *synth,ALVoice *v,u8 pan) void alSynSetPitch(ALSynth *synth,ALVoice *v,f32 pitch) { - int iVar1; - int iVar2; - ALParam AVar3; - undefined4 in_a2_lo; - - if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { - iVar1 = synth->paramSamples; - iVar2 = *(int *)(v->pvoice + 0xd8); - *(undefined2 *)((int)(char)AVar3 + 8) = 7; - *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; - *(undefined4 *)(int)(char)AVar3 = 0; - *(undefined4 *)((int)(char)AVar3 + 0xc) = in_a2_lo; - (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3,AVar3); - } - return; + int iVar1; + int iVar2; + ALParam AVar3; + undefined4 in_a2_lo; + + if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { + iVar1 = synth->paramSamples; + iVar2 = *(int *)(v->pvoice + 0xd8); + *(undefined2 *)((int)(char)AVar3 + 8) = 7; + *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; + *(undefined4 *)(int)(char)AVar3 = 0; + *(undefined4 *)((int)(char)AVar3 + 0xc) = in_a2_lo; + (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3,AVar3); + } + return; } @@ -13571,25 +13624,25 @@ void alSynSetPitch(ALSynth *synth,ALVoice *v,f32 pitch) void alSynSetFXMix(ALSynth *synth,ALVoice *v,u8 fxmix) { - int iVar1; - int iVar2; - ALParam AVar3; - - if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { - iVar1 = synth->paramSamples; - iVar2 = *(int *)(v->pvoice + 0xd8); - *(undefined2 *)((int)(char)AVar3 + 8) = 0x10; - *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; - if ((longlong)(ulonglong)fxmix < 0) { - *(int *)((int)(char)AVar3 + 0xc) = -(uint)fxmix; + int iVar1; + int iVar2; + ALParam AVar3; + + if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { + iVar1 = synth->paramSamples; + iVar2 = *(int *)(v->pvoice + 0xd8); + *(undefined2 *)((int)(char)AVar3 + 8) = 0x10; + *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; + if ((longlong)(ulonglong)fxmix < 0) { + *(int *)((int)(char)AVar3 + 0xc) = -(uint)fxmix; + } + else { + *(uint *)((int)(char)AVar3 + 0xc) = (uint)fxmix; + } + *(undefined4 *)(int)(char)AVar3 = 0; + (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3); } - else { - *(uint *)((int)(char)AVar3 + 0xc) = (uint)fxmix; - } - *(undefined4 *)(int)(char)AVar3 = 0; - (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3); - } - return; + return; } @@ -13597,19 +13650,19 @@ void alSynSetFXMix(ALSynth *synth,ALVoice *v,u8 fxmix) void alSynStopVoice(ALSynth *synth,ALVoice *v) { - int iVar1; - int iVar2; - ALParam AVar3; - - if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { - iVar1 = synth->paramSamples; - iVar2 = *(int *)(v->pvoice + 0xd8); - *(undefined2 *)((int)(char)AVar3 + 8) = 0xf; - *(undefined4 *)(int)(char)AVar3 = 0; - *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; - (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3,AVar3); - } - return; + int iVar1; + int iVar2; + ALParam AVar3; + + if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { + iVar1 = synth->paramSamples; + iVar2 = *(int *)(v->pvoice + 0xd8); + *(undefined2 *)((int)(char)AVar3 + 8) = 0xf; + *(undefined4 *)(int)(char)AVar3 = 0; + *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; + (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3,AVar3); + } + return; } @@ -13617,31 +13670,31 @@ void alSynStopVoice(ALSynth *synth,ALVoice *v) void alSynFreeVoice(ALSynth *drvr,ALVoice *voice) { - PVoice *pvoice; - int iVar1; - int iVar2; - ALParam AVar3; - - pvoice = (PVoice *)voice->pvoice; - if (pvoice != NULL) { - if (*(int *)((pvoice->envmixer).state + 9) == 0) { - _freePVoice(drvr,pvoice); + PVoice *pvoice; + int iVar1; + int iVar2; + ALParam AVar3; + + pvoice = (PVoice *)voice->pvoice; + if (pvoice != NULL) { + if (*(int *)((pvoice->envmixer).state + 9) == 0) { + _freePVoice(drvr,pvoice); + } + else { + AVar3 = ___allocParam(); + if (AVar3 == (ALParam)0x0) { + return; + } + iVar1 = drvr->paramSamples; + iVar2 = *(int *)(voice->pvoice + 0xd8); + *(undefined2 *)((int)(char)AVar3 + 8) = 0; + *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; + *(PVoice_s **)((int)(char)AVar3 + 0xc) = voice->pvoice; + (**(code **)(*(int *)(voice->pvoice + 0xc) + 8))(*(int *)(voice->pvoice + 0xc),3,AVar3); + } + voice->pvoice = NULL; } - else { - AVar3 = ___allocParam(); - if (AVar3 == (ALParam)0x0) { - return; - } - iVar1 = drvr->paramSamples; - iVar2 = *(int *)(voice->pvoice + 0xd8); - *(undefined2 *)((int)(char)AVar3 + 8) = 0; - *(int *)((int)(char)AVar3 + 4) = iVar1 + iVar2; - *(PVoice_s **)((int)(char)AVar3 + 0xc) = voice->pvoice; - (**(code **)(*(int *)(voice->pvoice + 0xc) + 8))(*(int *)(voice->pvoice + 0xc),3,AVar3); - } - voice->pvoice = NULL; - } - return; + return; } @@ -13652,25 +13705,25 @@ void alSynFreeVoice(ALSynth *drvr,ALVoice *voice) f32 alCents2Ratio(s32 cents) { - float fVar1; - uint uVar2; - float fVar3; - - fVar3 = 1.00000000; - fVar1 = flt_800296E0; - if (cents < 0) { - cents = -cents; - fVar1 = flt_800296E4; - } - while (cents != 0) { - uVar2 = cents & 1; - cents >>= 1; - if (uVar2 != 0) { - fVar3 = fVar3 * fVar1; + float fVar1; + uint uVar2; + float fVar3; + + fVar3 = 1.00000000; + fVar1 = flt_800296E0; + if (cents < 0) { + cents = -cents; + fVar1 = flt_800296E4; } - fVar1 = fVar1 * fVar1; - } - return (f32)fVar3; + while (cents != 0) { + uVar2 = cents & 1; + cents >>= 1; + if (uVar2 != 0) { + fVar3 = fVar3 * fVar1; + } + fVar1 = fVar1 * fVar1; + } + return (f32)fVar3; } @@ -13678,12 +13731,12 @@ f32 alCents2Ratio(s32 cents) s32 osPiReadIo(u32 devAddr,u32 *data) { - s32 ret; - - __osPiGetAccess(); - ret = osPiRawReadIo(devAddr,data); - __osPiRelAccess(); - return ret; + s32 ret; + + __osPiGetAccess(); + ret = osPiRawReadIo(devAddr,data); + __osPiRelAccess(); + return ret; } @@ -13691,20 +13744,20 @@ s32 osPiReadIo(u32 devAddr,u32 *data) void * memcpy(void *__dest,void *__src,size_t __n) { - undefined uVar1; - undefined *puVar2; - - puVar2 = (undefined *)__dest; - if (__n != 0) { - do { - uVar1 = *(undefined *)__src; - __n -= 1; - __src = (undefined *)__src + 1; - *puVar2 = uVar1; - puVar2 = puVar2 + 1; - } while (__n != 0); - } - return __dest; + undefined uVar1; + undefined *puVar2; + + puVar2 = (undefined *)__dest; + if (__n != 0) { + do { + uVar1 = *(undefined *)__src; + __n -= 1; + __src = (undefined *)__src + 1; + *puVar2 = uVar1; + puVar2 = puVar2 + 1; + } while (__n != 0); + } + return __dest; } @@ -13712,19 +13765,19 @@ void * memcpy(void *__dest,void *__src,size_t __n) size_t strlen(char *__s) { - char cVar1; - char *pcVar2; - - pcVar2 = __s; - if (*__s != '\0') { - cVar1 = __s[1]; + char cVar1; + char *pcVar2; + pcVar2 = __s; - while (pcVar2 = pcVar2 + 1, cVar1 != '\0') { - cVar1 = pcVar2[2]; - pcVar2 = pcVar2; + if (*__s != '\0') { + cVar1 = __s[1]; + pcVar2 = __s; + while (pcVar2 = pcVar2 + 1, cVar1 != '\0') { + cVar1 = pcVar2[2]; + pcVar2 = pcVar2; + } } - } - return (size_t)(pcVar2 + -(int)__s); + return (size_t)(pcVar2 + -(int)__s); } @@ -13732,19 +13785,19 @@ size_t strlen(char *__s) char * strchr(char *__s,int __c) { - ulonglong uVar1; - - uVar1 = (ulonglong)(byte)*__s; - if (((longlong)__c & 0xffU) != uVar1) { - do { - if (uVar1 == 0) { - return NULL; - } - uVar1 = (ulonglong)(byte)__s[1]; - __s = __s + 1; - } while (((longlong)__c & 0xffU) != uVar1); - } - return __s; + ulonglong uVar1; + + uVar1 = (ulonglong)(byte)*__s; + if (((longlong)__c & 0xffU) != uVar1) { + do { + if (uVar1 == 0) { + return NULL; + } + uVar1 = (ulonglong)(byte)__s[1]; + __s = __s + 1; + } while (((longlong)__c & 0xffU) != uVar1); + } + return __s; } @@ -13752,294 +13805,294 @@ char * strchr(char *__s,int __c) void _Putfld(undefined8 param_1,ulonglong param_2,uint **param_3,int param_4) { - undefined4 uVar1; - size_t sVar2; - int iVar3; - char *__s; - size_t sVar4; - uint *puVar5; - char code; - int iVar6; - uint uVar7; - size_t **ppsVar8; - int *piVar9; - char **ppcVar10; - _Pft *px; - undefined4 *puVar11; - - param_2 &= 0xff; - px->n0 = 0; - px->nz0 = 0; - px->n1 = 0; - px->nz1 = 0; - px->n2 = 0; - px->nz2 = 0; - code = (char)param_2; - if (param_2 < 0x26) { - if (param_2 == 0x25) { - *(undefined *)(param_4 + px->n0) = 0x25; - px->n0 = px->n0 + 1; - return; + undefined4 uVar1; + size_t sVar2; + int iVar3; + char *__s; + size_t sVar4; + uint *puVar5; + char code; + int iVar6; + uint uVar7; + size_t **ppsVar8; + int *piVar9; + char **ppcVar10; + _Pft *unaff_s0_lo; + undefined4 *puVar11; + + param_2 &= 0xff; + unaff_s0_lo->n0 = 0; + unaff_s0_lo->nz0 = 0; + unaff_s0_lo->n1 = 0; + unaff_s0_lo->nz1 = 0; + unaff_s0_lo->n2 = 0; + unaff_s0_lo->nz2 = 0; + code = (char)param_2; + if (param_2 < 0x26) { + if (param_2 == 0x25) { + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x25; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + return; + } + iVar6 = unaff_s0_lo->n0; + goto LAB_70013f3c; } - iVar6 = px->n0; - goto LAB_70013f3c; - } - if (true) { - switch((int)param_2) { - case 0x45: - case 0x47: - case 0x65: - case 0x66: - case 0x67: - if (px->qual == 'L') { - puVar5 = *param_3; - if (((uint)puVar5 & 1) == 0) { - if (((uint)puVar5 & 2) == 0) { - puVar5 = (uint *)(((int)puVar5 + 7U & 0xfffffff8) + 8); - *param_3 = puVar5; - } - else { - *param_3 = (uint *)((int)puVar5 + 10); - puVar5 = (uint *)((int)puVar5 - 0x1e); - } - } - else { - *param_3 = (uint *)((int)puVar5 + 7); - puVar5 = (uint *)((int)puVar5 - 0xf); - } - px->v = *(undefined8 *)(puVar5 + -2); - } - else { - puVar5 = *param_3; - if (((uint)puVar5 & 1) == 0) { - if (((uint)puVar5 & 2) == 0) { - puVar5 = (uint *)(((int)puVar5 + 7U & 0xfffffff8) + 8); - *param_3 = puVar5; - } - else { - *param_3 = (uint *)((int)puVar5 + 10); - puVar5 = (uint *)((int)puVar5 - 0x1e); - } - } - else { - *param_3 = (uint *)((int)puVar5 + 7); - puVar5 = (uint *)((int)puVar5 - 0xf); - } - px->v = *(undefined8 *)(puVar5 + -2); - } - if ((*(ushort *)&px->v & 0x8000) == 0) { - if ((px->flags & 2) == 0) { - if ((px->flags & 1) == 0) { - iVar6 = px->n0; - goto LAB_70013da4; - } - *(undefined *)(param_4 + px->n0) = 0x20; - px->n0 = px->n0 + 1; - } - else { - *(undefined *)(param_4 + px->n0) = 0x2b; - px->n0 = px->n0 + 1; - } - } - else { - *(undefined *)(param_4 + px->n0) = 0x2d; - px->n0 = px->n0 + 1; - } - iVar6 = px->n0; + if (true) { + switch((int)param_2) { + case 0x45: + case 0x47: + case 0x65: + case 0x66: + case 0x67: + if (unaff_s0_lo->qual == 'L') { + puVar5 = *param_3; + if (((uint)puVar5 & 1) == 0) { + if (((uint)puVar5 & 2) == 0) { + puVar5 = (uint *)(((int)puVar5 + 7U & 0xfffffff8) + 8); + *param_3 = puVar5; + } + else { + *param_3 = (uint *)((int)puVar5 + 10); + puVar5 = (uint *)((int)puVar5 - 0x1e); + } + } + else { + *param_3 = (uint *)((int)puVar5 + 7); + puVar5 = (uint *)((int)puVar5 - 0xf); + } + unaff_s0_lo->v = *(undefined8 *)(puVar5 + -2); + } + else { + puVar5 = *param_3; + if (((uint)puVar5 & 1) == 0) { + if (((uint)puVar5 & 2) == 0) { + puVar5 = (uint *)(((int)puVar5 + 7U & 0xfffffff8) + 8); + *param_3 = puVar5; + } + else { + *param_3 = (uint *)((int)puVar5 + 10); + puVar5 = (uint *)((int)puVar5 - 0x1e); + } + } + else { + *param_3 = (uint *)((int)puVar5 + 7); + puVar5 = (uint *)((int)puVar5 - 0xf); + } + unaff_s0_lo->v = *(undefined8 *)(puVar5 + -2); + } + if ((*(ushort *)&unaff_s0_lo->v & 0x8000) == 0) { + if ((unaff_s0_lo->flags & 2) == 0) { + if ((unaff_s0_lo->flags & 1) == 0) { + iVar6 = unaff_s0_lo->n0; + goto LAB_70013da4; + } + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x20; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + } + else { + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x2b; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + } + } + else { + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x2d; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + } + iVar6 = unaff_s0_lo->n0; LAB_70013da4: - px->s = (char *)(iVar6 + param_4); - _Ldtob(px,code); - return; - case 0x58: - case 0x6f: - case 0x75: - case 0x78: - if (px->qual == 'l') { - piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); - *(int **)param_3 = piVar9 + 1; - iVar6 = *piVar9; - *(int *)&px->v = iVar6 >> 0x1f; - *(int *)((int)&px->v + 4) = iVar6; - } - else { - if (px->qual == 'L') { - puVar11 = (undefined4 *)((int)*param_3 + 7U & 0xfffffff8); - *param_3 = puVar11 + 2; - uVar1 = *puVar11; - *(undefined4 *)((int)&px->v + 4) = puVar11[1]; - *(undefined4 *)&px->v = uVar1; - } - else { - piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); - *(int **)param_3 = piVar9 + 1; - iVar6 = *piVar9; - *(int *)&px->v = iVar6 >> 0x1f; - *(int *)((int)&px->v + 4) = iVar6; - } - } - if (px->qual == 'h') { - uVar7 = *(uint *)((int)&px->v + 4); - *(undefined4 *)&px->v = 0; - *(uint *)((int)&px->v + 4) = uVar7 & 0xffff; - } - else { - if (px->qual != '\0') { - uVar7 = px->flags; - goto LAB_70013be8; - } - uVar1 = *(undefined4 *)((int)&px->v + 4); - *(undefined4 *)&px->v = 0; - *(undefined4 *)((int)&px->v + 4) = uVar1; - } - uVar7 = px->flags; + unaff_s0_lo->s = (char *)(iVar6 + param_4); + _Ldtob(unaff_s0_lo,code); + return; + case 0x58: + case 0x6f: + case 0x75: + case 0x78: + if (unaff_s0_lo->qual == 'l') { + piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); + *(int **)param_3 = piVar9 + 1; + iVar6 = *piVar9; + *(int *)&unaff_s0_lo->v = iVar6 >> 0x1f; + *(int *)((int)&unaff_s0_lo->v + 4) = iVar6; + } + else { + if (unaff_s0_lo->qual == 'L') { + puVar11 = (undefined4 *)((int)*param_3 + 7U & 0xfffffff8); + *param_3 = puVar11 + 2; + uVar1 = *puVar11; + *(undefined4 *)((int)&unaff_s0_lo->v + 4) = puVar11[1]; + *(undefined4 *)&unaff_s0_lo->v = uVar1; + } + else { + piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); + *(int **)param_3 = piVar9 + 1; + iVar6 = *piVar9; + *(int *)&unaff_s0_lo->v = iVar6 >> 0x1f; + *(int *)((int)&unaff_s0_lo->v + 4) = iVar6; + } + } + if (unaff_s0_lo->qual == 'h') { + uVar7 = *(uint *)((int)&unaff_s0_lo->v + 4); + *(undefined4 *)&unaff_s0_lo->v = 0; + *(uint *)((int)&unaff_s0_lo->v + 4) = uVar7 & 0xffff; + } + else { + if (unaff_s0_lo->qual != '\0') { + uVar7 = unaff_s0_lo->flags; + goto LAB_70013be8; + } + uVar1 = *(undefined4 *)((int)&unaff_s0_lo->v + 4); + *(undefined4 *)&unaff_s0_lo->v = 0; + *(undefined4 *)((int)&unaff_s0_lo->v + 4) = uVar1; + } + uVar7 = unaff_s0_lo->flags; LAB_70013be8: - if ((uVar7 & 8) == 0) { - iVar6 = px->n0; - } - else { - *(undefined *)(param_4 + px->n0) = 0x30; - px->n0 = px->n0 + 1; - if ((param_2 == 0x78) || (param_2 == 0x58)) { - *(char *)(param_4 + px->n0) = code; - px->n0 = px->n0 + 1; - iVar6 = px->n0; - } - else { - iVar6 = px->n0; - } - } - px->s = (char *)(iVar6 + param_4); - _Litob(px,code); - return; - case 99: - puVar11 = (undefined4 *)((int)*param_3 + 3U & 0xfffffffc); - *param_3 = puVar11 + 1; - *(undefined *)(param_4 + px->n0) = (char)*puVar11; - px->n0 = px->n0 + 1; - return; - case 100: - case 0x69: - if (px->qual == 'l') { - piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); - *(int **)param_3 = piVar9 + 1; - iVar6 = *piVar9; - *(int *)&px->v = iVar6 >> 0x1f; - *(int *)((int)&px->v + 4) = iVar6; - } - else { - if (px->qual == 'L') { - puVar11 = (undefined4 *)((int)*param_3 + 7U & 0xfffffff8); - *param_3 = puVar11 + 2; - uVar1 = puVar11[1]; - *(undefined4 *)&px->v = *puVar11; - *(undefined4 *)((int)&px->v + 4) = uVar1; - } - else { - piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); - *(int **)param_3 = piVar9 + 1; - iVar6 = *piVar9; - *(int *)&px->v = iVar6 >> 0x1f; - *(int *)((int)&px->v + 4) = iVar6; - } - } - if (px->qual == 'h') { - iVar6 = (int)(short)*(undefined4 *)((int)&px->v + 4); - *(int *)&px->v = iVar6 >> 0x1f; - *(int *)((int)&px->v + 4) = iVar6; - iVar6 = *(int *)&px->v; - } - else { - iVar6 = *(int *)&px->v; - } - if (iVar6 < 1) { - if (-1 < iVar6) { - uVar7 = px->flags; - goto LAB_70013a9c; - } - *(undefined *)(param_4 + px->n0) = 0x2d; - px->n0 = px->n0 + 1; - } - else { - uVar7 = px->flags; + if ((uVar7 & 8) == 0) { + iVar6 = unaff_s0_lo->n0; + } + else { + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x30; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + if ((param_2 == 0x78) || (param_2 == 0x58)) { + *(char *)(param_4 + unaff_s0_lo->n0) = code; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + iVar6 = unaff_s0_lo->n0; + } + else { + iVar6 = unaff_s0_lo->n0; + } + } + unaff_s0_lo->s = (char *)(iVar6 + param_4); + _Litob(unaff_s0_lo,code); + return; + case 99: + puVar11 = (undefined4 *)((int)*param_3 + 3U & 0xfffffffc); + *param_3 = puVar11 + 1; + *(undefined *)(param_4 + unaff_s0_lo->n0) = (char)*puVar11; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + return; + case 100: + case 0x69: + if (unaff_s0_lo->qual == 'l') { + piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); + *(int **)param_3 = piVar9 + 1; + iVar6 = *piVar9; + *(int *)&unaff_s0_lo->v = iVar6 >> 0x1f; + *(int *)((int)&unaff_s0_lo->v + 4) = iVar6; + } + else { + if (unaff_s0_lo->qual == 'L') { + puVar11 = (undefined4 *)((int)*param_3 + 7U & 0xfffffff8); + *param_3 = puVar11 + 2; + uVar1 = puVar11[1]; + *(undefined4 *)&unaff_s0_lo->v = *puVar11; + *(undefined4 *)((int)&unaff_s0_lo->v + 4) = uVar1; + } + else { + piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); + *(int **)param_3 = piVar9 + 1; + iVar6 = *piVar9; + *(int *)&unaff_s0_lo->v = iVar6 >> 0x1f; + *(int *)((int)&unaff_s0_lo->v + 4) = iVar6; + } + } + if (unaff_s0_lo->qual == 'h') { + iVar6 = (int)(short)*(undefined4 *)((int)&unaff_s0_lo->v + 4); + *(int *)&unaff_s0_lo->v = iVar6 >> 0x1f; + *(int *)((int)&unaff_s0_lo->v + 4) = iVar6; + iVar6 = *(int *)&unaff_s0_lo->v; + } + else { + iVar6 = *(int *)&unaff_s0_lo->v; + } + if (iVar6 < 1) { + if (-1 < iVar6) { + uVar7 = unaff_s0_lo->flags; + goto LAB_70013a9c; + } + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x2d; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + } + else { + uVar7 = unaff_s0_lo->flags; LAB_70013a9c: - if ((uVar7 & 2) == 0) { - if ((uVar7 & 1) == 0) { - iVar6 = px->n0; - goto LAB_70013af0; - } - *(undefined *)(param_4 + px->n0) = 0x20; - px->n0 = px->n0 + 1; - } - else { - *(undefined *)(param_4 + px->n0) = 0x2b; - px->n0 = px->n0 + 1; - } - } - iVar6 = px->n0; + if ((uVar7 & 2) == 0) { + if ((uVar7 & 1) == 0) { + iVar6 = unaff_s0_lo->n0; + goto LAB_70013af0; + } + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x20; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + } + else { + *(undefined *)(param_4 + unaff_s0_lo->n0) = 0x2b; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + } + } + iVar6 = unaff_s0_lo->n0; LAB_70013af0: - px->s = (char *)(iVar6 + param_4); - _Litob(px,code); - return; - case 0x6e: - code = px->qual; - if (code == 'h') { - puVar11 = (undefined4 *)((int)*param_3 + 3U & 0xfffffffc); - *param_3 = puVar11 + 1; - *(undefined2 *)*puVar11 = (short)px->nchar; - return; - } - if (code != 'l') { - if (code != 'L') { - ppsVar8 = (size_t **)((int)*param_3 + 3U & 0xfffffffc); - *(size_t ***)param_3 = ppsVar8 + 1; - **ppsVar8 = px->nchar; - return; + unaff_s0_lo->s = (char *)(iVar6 + param_4); + _Litob(unaff_s0_lo,code); + return; + case 0x6e: + code = unaff_s0_lo->qual; + if (code == 'h') { + puVar11 = (undefined4 *)((int)*param_3 + 3U & 0xfffffffc); + *param_3 = puVar11 + 1; + *(undefined2 *)*puVar11 = (short)unaff_s0_lo->nchar; + return; + } + if (code != 'l') { + if (code != 'L') { + ppsVar8 = (size_t **)((int)*param_3 + 3U & 0xfffffffc); + *(size_t ***)param_3 = ppsVar8 + 1; + **ppsVar8 = unaff_s0_lo->nchar; + return; + } + puVar11 = (undefined4 *)((int)*param_3 + 3U & 0xfffffffc); + *param_3 = puVar11 + 1; + puVar11 = (undefined4 *)*puVar11; + sVar2 = unaff_s0_lo->nchar; + *puVar11 = 0; + puVar11[1] = sVar2; + return; + } + ppsVar8 = (size_t **)((int)*param_3 + 3U & 0xfffffffc); + *(size_t ***)param_3 = ppsVar8 + 1; + **ppsVar8 = unaff_s0_lo->nchar; + return; + case 0x70: + piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); + *(int **)param_3 = piVar9 + 1; + iVar6 = *piVar9; + iVar3 = unaff_s0_lo->n0; + *(int *)((int)&unaff_s0_lo->v + 4) = iVar6; + *(int *)&unaff_s0_lo->v = iVar6 >> 0x1f; + unaff_s0_lo->s = (char *)(iVar3 + param_4); + _Litob(unaff_s0_lo,'x'); + return; + case 0x73: + ppcVar10 = (char **)((int)*param_3 + 3U & 0xfffffffc); + *(char ***)param_3 = ppcVar10 + 1; + __s = *ppcVar10; + unaff_s0_lo->s = __s; + sVar4 = strlen(__s); + iVar6 = unaff_s0_lo->prec; + unaff_s0_lo->n1 = sVar4; + if (iVar6 < 0) { + return; + } + if ((int)sVar4 <= iVar6) { + return; + } + unaff_s0_lo->n1 = iVar6; + return; } - puVar11 = (undefined4 *)((int)*param_3 + 3U & 0xfffffffc); - *param_3 = puVar11 + 1; - puVar11 = (undefined4 *)*puVar11; - sVar2 = px->nchar; - *puVar11 = 0; - puVar11[1] = sVar2; - return; - } - ppsVar8 = (size_t **)((int)*param_3 + 3U & 0xfffffffc); - *(size_t ***)param_3 = ppsVar8 + 1; - **ppsVar8 = px->nchar; - return; - case 0x70: - piVar9 = (int *)((int)*param_3 + 3U & 0xfffffffc); - *(int **)param_3 = piVar9 + 1; - iVar6 = *piVar9; - iVar3 = px->n0; - *(int *)((int)&px->v + 4) = iVar6; - *(int *)&px->v = iVar6 >> 0x1f; - px->s = (char *)(iVar3 + param_4); - _Litob(px,'x'); - return; - case 0x73: - ppcVar10 = (char **)((int)*param_3 + 3U & 0xfffffffc); - *(char ***)param_3 = ppcVar10 + 1; - __s = *ppcVar10; - px->s = __s; - sVar4 = strlen(__s); - iVar6 = px->prec; - px->n1 = sVar4; - if (iVar6 < 0) { - return; - } - if ((int)sVar4 <= iVar6) { - return; - } - px->n1 = iVar6; - return; } - } - iVar6 = px->n0; + iVar6 = unaff_s0_lo->n0; LAB_70013f3c: - *(char *)(param_4 + iVar6) = code; - px->n0 = px->n0 + 1; - return; + *(char *)(param_4 + iVar6) = code; + unaff_s0_lo->n0 = unaff_s0_lo->n0 + 1; + return; } @@ -14049,241 +14102,243 @@ LAB_70013f3c: byte * _Printf(undefined *param_1,longlong param_2,byte *param_3,uint *param_4) { - bool bVar1; - byte *pbVar2; - byte *pbVar3; - char *pcVar4; - undefined8 extraout_a0; - byte bVar5; - uint __c; - uint uVar6; - byte *pbVar7; - int *piVar8; - uint *puStackX12; - undefined auStack100 [52]; - int iStack48; - int iStack44; - uint uStack40; - int iStack36; - uint uStack32; - int iStack28; - uint uStack24; - int iStack20; - uint uStack16; - byte *pbStack12; - uint uStack8; - byte bStack4; - - pbStack12 = NULL; - puStackX12 = param_4; - while( true ) { - bVar5 = *param_3; - pbVar3 = param_3; - while ((pbVar2 = pbVar3 + 1, pbVar7 = pbVar2, bVar5 != 0 && (pbVar7 = pbVar3, bVar5 != 0x25))) { - bVar5 = *pbVar2; - pbVar3 = pbVar2; - } - pbVar3 = pbVar7 + -(int)param_3; - if (0 < (int)pbVar3) { - param_2 = (*(code *)param_1)(param_2,param_3,pbVar3); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + (int)pbVar3; - } - pbVar7 = pbVar7 + 1; - if (bVar5 == 0) break; - uStack8 = 0; - pcVar4 = strchr(" +-#0",(uint)*pbVar7); - while (pcVar4 != NULL) { - pbVar7 = pbVar7 + 1; - uStack8 |= (&byteshiftleft_lookup)[(int)(pcVar4 + 0x7ffd690c)]; - pcVar4 = strchr(" +-#0",(uint)*pbVar7); - } - if (*pbVar7 == 0x2a) { - piVar8 = (int *)((int)puStackX12 + 3U & 0xfffffffc); - puStackX12 = (uint *)(piVar8 + 1); - uStack16 = *piVar8; - pbVar7 = pbVar7 + 1; - if ((int)uStack16 < 0) { - uStack16 = -uStack16; - uStack8 |= 4; - } - bVar5 = *pbVar7; - } - else { - uStack16 = 0; - bVar5 = *pbVar7; - while ((0x2f < bVar5 && (bVar5 < 0x3a))) { - if ((int)uStack16 < 999) { - uStack16 = (uint)bVar5 + uStack16 * 10 + -0x30; - bVar5 = pbVar7[1]; + bool bVar1; + byte *pbVar2; + byte *pbVar3; + char *pcVar4; + undefined8 extraout_a0; + byte bVar5; + uint __c; + uint uVar6; + byte *pbVar7; + int *piVar8; + uint *puStackX12; + undefined auStack100 [52]; + int iStack48; + int iStack44; + uint uStack40; + int iStack36; + uint uStack32; + int iStack28; + uint uStack24; + int iStack20; + uint uStack16; + byte *pbStack12; + uint uStack8; + byte bStack4; + + pbStack12 = NULL; + puStackX12 = param_4; + while( true ) { + bVar5 = *param_3; + pbVar3 = param_3; + while ((pbVar2 = pbVar3 + 1, pbVar7 = pbVar2, bVar5 != 0 && (pbVar7 = pbVar3, bVar5 != 0x25) + )) { + bVar5 = *pbVar2; + pbVar3 = pbVar2; + } + pbVar3 = pbVar7 + -(int)param_3; + if (0 < (int)pbVar3) { + param_2 = (*(code *)param_1)(param_2,param_3,pbVar3); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + (int)pbVar3; + } + pbVar7 = pbVar7 + 1; + if (bVar5 == 0) break; + uStack8 = 0; + pcVar4 = strchr(" +-#0",(uint)*pbVar7); + while (pcVar4 != NULL) { + pbVar7 = pbVar7 + 1; + uStack8 |= (&byteshiftleft_lookup)[(int)(pcVar4 + 0x7ffd690c)]; + pcVar4 = strchr(" +-#0",(uint)*pbVar7); + } + if (*pbVar7 == 0x2a) { + piVar8 = (int *)((int)puStackX12 + 3U & 0xfffffffc); + puStackX12 = (uint *)(piVar8 + 1); + uStack16 = *piVar8; + pbVar7 = pbVar7 + 1; + if ((int)uStack16 < 0) { + uStack16 = -uStack16; + uStack8 |= 4; + } + bVar5 = *pbVar7; } else { - bVar5 = pbVar7[1]; + uStack16 = 0; + bVar5 = *pbVar7; + while ((0x2f < bVar5 && (bVar5 < 0x3a))) { + if ((int)uStack16 < 999) { + uStack16 = (uint)bVar5 + uStack16 * 10 + -0x30; + bVar5 = pbVar7[1]; + } + else { + bVar5 = pbVar7[1]; + } + pbVar7 = pbVar7 + 1; + } } - pbVar7 = pbVar7 + 1; - } - } - if (bVar5 == 0x2e) { - if (pbVar7[1] == 0x2a) { - piVar8 = (int *)((int)puStackX12 + 3U & 0xfffffffc); - puStackX12 = (uint *)(piVar8 + 1); - iStack20 = *piVar8; - pbVar7 = pbVar7 + 2; - __c = (uint)*pbVar7; - } - else { - iStack20 = 0; - bVar5 = pbVar7[1]; - pbVar7 = pbVar7 + 1; - while ((__c = (uint)bVar5, 0x2f < bVar5 && (bVar5 < 0x3a))) { - if (iStack20 < 999) { - iStack20 = (uint)bVar5 + iStack20 * 10 + -0x30; - bVar5 = pbVar7[1]; - } - else { - bVar5 = pbVar7[1]; - } - pbVar7 = pbVar7 + 1; + if (bVar5 == 0x2e) { + if (pbVar7[1] == 0x2a) { + piVar8 = (int *)((int)puStackX12 + 3U & 0xfffffffc); + puStackX12 = (uint *)(piVar8 + 1); + iStack20 = *piVar8; + pbVar7 = pbVar7 + 2; + __c = (uint)*pbVar7; + } + else { + iStack20 = 0; + bVar5 = pbVar7[1]; + pbVar7 = pbVar7 + 1; + while ((__c = (uint)bVar5, 0x2f < bVar5 && (bVar5 < 0x3a))) { + if (iStack20 < 999) { + iStack20 = (uint)bVar5 + iStack20 * 10 + -0x30; + bVar5 = pbVar7[1]; + } + else { + bVar5 = pbVar7[1]; + } + pbVar7 = pbVar7 + 1; + } + } } - } - } - else { - iStack20 = -1; - __c = (uint)*pbVar7; - } - pcVar4 = strchr("hlL",__c); - if (pcVar4 == NULL) { - bStack4 = 0; - } - else { - bStack4 = *pbVar7; - pbVar7 = pbVar7 + 1; - } - if ((bStack4 == 0x6c) && (*pbVar7 == 0x6c)) { - bStack4 = 0x4c; - pbVar7 = pbVar7 + 1; - } - _Putfld(extraout_a0,(ulonglong)*pbVar7,&puStackX12,(int)auStack100); - uStack16 = (((((uStack16 - iStack44) - uStack40) - iStack36) - uStack32) - iStack28) - uStack24; - bVar1 = 0 < (int)uStack16; - if (((uStack8 & 4) == 0) && (__c = uStack16, bVar1)) { - while (bVar1) { - uVar6 = __c; - if (0x20 < __c) { - uVar6 = 0x20; + else { + iStack20 = -1; + __c = (uint)*pbVar7; } - if (0 < (int)uVar6) { - param_2 = (*(code *)param_1)(param_2," ",uVar6); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + uVar6; + pcVar4 = strchr("hlL",__c); + if (pcVar4 == NULL) { + bStack4 = 0; } - bVar1 = 0 < (int)(__c - uVar6); - __c = __c - uVar6; - } + else { + bStack4 = *pbVar7; + pbVar7 = pbVar7 + 1; + } + if ((bStack4 == 0x6c) && (*pbVar7 == 0x6c)) { + bStack4 = 0x4c; + pbVar7 = pbVar7 + 1; + } + _Putfld(extraout_a0,(ulonglong)*pbVar7,&puStackX12,(int)auStack100); + uStack16 = (((((uStack16 - iStack44) - uStack40) - iStack36) - uStack32) - iStack28) - + uStack24; + bVar1 = 0 < (int)uStack16; + if (((uStack8 & 4) == 0) && (__c = uStack16, bVar1)) { + while (bVar1) { + uVar6 = __c; + if (0x20 < __c) { + uVar6 = 0x20; + } + if (0 < (int)uVar6) { + param_2 = (*(code *)param_1)(param_2," ",uVar6); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + uVar6; + } + bVar1 = 0 < (int)(__c - uVar6); + __c = __c - uVar6; + } + } + if (0 < iStack44) { + param_2 = (*(code *)param_1)(param_2,auStack100,iStack44); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + iStack44; + } + bVar1 = 0 < (int)uStack40; + __c = uStack40; + if (bVar1) { + while (bVar1) { + uVar6 = __c; + if (0x20 < __c) { + uVar6 = 0x20; + } + if (0 < (int)uVar6) { + param_2 = (*(code *)param_1)(param_2,"00000000000000000000000000000000",uVar6); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + uVar6; + } + bVar1 = 0 < (int)(__c - uVar6); + __c = __c - uVar6; + } + } + if (0 < iStack36) { + param_2 = (*(code *)param_1)(param_2,iStack48,iStack36); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + iStack36; + } + bVar1 = 0 < (int)uStack32; + __c = uStack32; + if (bVar1) { + while (bVar1) { + uVar6 = __c; + if (0x20 < __c) { + uVar6 = 0x20; + } + if (0 < (int)uVar6) { + param_2 = (*(code *)param_1)(param_2,"00000000000000000000000000000000",uVar6); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + uVar6; + } + bVar1 = 0 < (int)(__c - uVar6); + __c = __c - uVar6; + } + } + if (0 < iStack28) { + param_2 = (*(code *)param_1)(param_2,iStack48 + iStack36,iStack28); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + iStack28; + } + bVar1 = 0 < (int)uStack24; + __c = uStack24; + if (bVar1) { + while (bVar1) { + uVar6 = __c; + if (0x20 < __c) { + uVar6 = 0x20; + } + if (0 < (int)uVar6) { + param_2 = (*(code *)param_1)(param_2,"00000000000000000000000000000000",uVar6); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + uVar6; + } + bVar1 = 0 < (int)(__c - uVar6); + __c = __c - uVar6; + } + } + bVar1 = 0 < (int)uStack16; + if (((uStack8 & 4) != 0) && (__c = uStack16, bVar1)) { + while (bVar1) { + uVar6 = __c; + if (0x20 < __c) { + uVar6 = 0x20; + } + if (0 < (int)uVar6) { + param_2 = (*(code *)param_1)(param_2," ",uVar6); + if (param_2 == 0) { + return pbStack12; + } + pbStack12 = pbStack12 + uVar6; + } + bVar1 = 0 < (int)(__c - uVar6); + __c = __c - uVar6; + } + } + param_3 = pbVar7 + 1; } - if (0 < iStack44) { - param_2 = (*(code *)param_1)(param_2,auStack100,iStack44); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + iStack44; - } - bVar1 = 0 < (int)uStack40; - __c = uStack40; - if (bVar1) { - while (bVar1) { - uVar6 = __c; - if (0x20 < __c) { - uVar6 = 0x20; - } - if (0 < (int)uVar6) { - param_2 = (*(code *)param_1)(param_2,"00000000000000000000000000000000",uVar6); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + uVar6; - } - bVar1 = 0 < (int)(__c - uVar6); - __c = __c - uVar6; - } - } - if (0 < iStack36) { - param_2 = (*(code *)param_1)(param_2,iStack48,iStack36); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + iStack36; - } - bVar1 = 0 < (int)uStack32; - __c = uStack32; - if (bVar1) { - while (bVar1) { - uVar6 = __c; - if (0x20 < __c) { - uVar6 = 0x20; - } - if (0 < (int)uVar6) { - param_2 = (*(code *)param_1)(param_2,"00000000000000000000000000000000",uVar6); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + uVar6; - } - bVar1 = 0 < (int)(__c - uVar6); - __c = __c - uVar6; - } - } - if (0 < iStack28) { - param_2 = (*(code *)param_1)(param_2,iStack48 + iStack36,iStack28); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + iStack28; - } - bVar1 = 0 < (int)uStack24; - __c = uStack24; - if (bVar1) { - while (bVar1) { - uVar6 = __c; - if (0x20 < __c) { - uVar6 = 0x20; - } - if (0 < (int)uVar6) { - param_2 = (*(code *)param_1)(param_2,"00000000000000000000000000000000",uVar6); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + uVar6; - } - bVar1 = 0 < (int)(__c - uVar6); - __c = __c - uVar6; - } - } - bVar1 = 0 < (int)uStack16; - if (((uStack8 & 4) != 0) && (__c = uStack16, bVar1)) { - while (bVar1) { - uVar6 = __c; - if (0x20 < __c) { - uVar6 = 0x20; - } - if (0 < (int)uVar6) { - param_2 = (*(code *)param_1)(param_2," ",uVar6); - if (param_2 == 0) { - return pbStack12; - } - pbStack12 = pbStack12 + uVar6; - } - bVar1 = 0 < (int)(__c - uVar6); - __c = __c - uVar6; - } - } - param_3 = pbVar7 + 1; - } - return pbStack12; + return pbStack12; } @@ -14291,39 +14346,39 @@ byte * _Printf(undefined *param_1,longlong param_2,byte *param_3,uint *param_4) void osCreatePiManager(OSPri pri,OSMesgQueue *cmdQ,OSMesg *cmdBuf,s32 cmdMsgCnt) { - OSPri myPri; - u32 savedMask; - int oldPri; - - if (__osPiDevMgr.active == 0) { - osCreateMesgQueue(cmdQ,cmdBuf,cmdMsgCnt); - osCreateMesgQueue(&piEventQueue,&piEventBuf,1); - if (__osPiAccessQueueEnabled == 0) { - __osPiCreateAccessQueue(); + OSPri myPri; + u32 savedMask; + int oldPri; + + if (__osPiDevMgr.active == 0) { + osCreateMesgQueue(cmdQ,cmdBuf,cmdMsgCnt); + osCreateMesgQueue(&piEventQueue,&piEventBuf,1); + if (__osPiAccessQueueEnabled == 0) { + __osPiCreateAccessQueue(); + } + osSetEventMesg(8,&piEventQueue,(OSMesg)0x22222222); + oldPri = -1; + myPri = osGetThreadPri(NULL); + if (myPri < pri) { + osSetThreadPri(NULL,pri); + oldPri = myPri; + } + savedMask = __osDisableInt(); + __osPiDevMgr.active = 1; + __osPiDevMgr.thread = &piThread; + __osPiDevMgr.evtQueue = &piEventQueue; + __osPiDevMgr.acsQueue = &__osPiAccessQueue; + __osPiDevMgr.dma = osPiRawStartDma; + __osPiDevMgr.edma = osEPiRawStartDma; + __osPiDevMgr.cmdQueue = cmdQ; + osCreateThread(&piThread,0,__osDevMgrMain,&__osPiDevMgr,&piEventQueue,pri); + osStartThread(&piThread); + __osRestoreInt(savedMask); + if (oldPri != -1) { + osSetThreadPri(NULL,oldPri); + } } - osSetEventMesg(); - oldPri = -1; - myPri = osGetThreadPri(NULL); - if (myPri < pri) { - osSetThreadPri(NULL,pri); - oldPri = myPri; - } - savedMask = __osDisableInt(); - __osPiDevMgr.active = 1; - __osPiDevMgr.thread = &piThread; - __osPiDevMgr.evtQueue = &piEventQueue; - __osPiDevMgr.acsQueue = &__osPiAccessQueue; - __osPiDevMgr.cmdQueue = cmdQ; - __osPiDevMgr.dma = osPiRawStartDma; - __osPiDevMgr.edma = osEPiRawStartDma; - osCreateThread(&piThread,0,__osDevMgrMain,&__osPiDevMgr,&piEventQueue,pri); - osStartThread(&piThread); - __osRestoreInt(savedMask); - if (oldPri != -1) { - osSetThreadPri(NULL,oldPri); - } - } - return; + return; } @@ -14331,22 +14386,22 @@ void osCreatePiManager(OSPri pri,OSMesgQueue *cmdQ,OSMesg *cmdBuf,s32 cmdMsgCnt) s32 osPfsInit(OSMesgQueue *queue,OSPfs *pfs,int channel) { - s32 ret; - - __osSiGetAccess(); - ret = __osPfsGetStatus(queue,channel); - __osSiRelAccess(); - if (ret == 0) { - pfs->queue = queue; - pfs->channel = channel; - pfs->status = 0; - ret = __osGetId(pfs); + s32 ret; + + __osSiGetAccess(); + ret = __osPfsGetStatus(queue,channel); + __osSiRelAccess(); if (ret == 0) { - ret = osPfsChecker(pfs); - pfs->status = pfs->status | 1; + pfs->queue = queue; + pfs->channel = channel; + pfs->status = 0; + ret = __osGetId(pfs); + if (ret == 0) { + ret = osPfsChecker(pfs); + pfs->status = pfs->status | 1; + } } - } - return ret; + return ret; } @@ -14354,32 +14409,32 @@ s32 osPfsInit(OSMesgQueue *queue,OSPfs *pfs,int channel) s32 __osPfsGetStatus(OSMesgQueue *queue,int channel) { - s32 sVar1; - s32 ret; - OSContStatus data; - u8 bitpattern; - OSMesg dummy; - - __osPfsRequestData('\0'); - __osSiRawStartDma(1,&__osPfsPifRam); - osRecvMesg(queue,&dummy,1); - sVar1 = __osSiRawStartDma(0,&__osPfsPifRam); - osRecvMesg(queue,&dummy,1); - __osPfsGetInitData(&bitpattern,&data); - if ((((&data)[channel].status & 1) == 0) || (((&data)[channel].status & 2) == 0)) { - if (((&data)[channel].errno == '\0') && (((&data)[channel].status & 1) != 0)) { - if (((&data)[channel].status & 4) != 0) { - sVar1 = 4; - } + s32 sVar1; + s32 ret; + OSContStatus data; + u8 bitpattern; + OSMesg dummy; + + __osPfsRequestData('\0'); + __osSiRawStartDma(1,&__osPfsPifRam); + osRecvMesg(queue,&dummy,1); + sVar1 = __osSiRawStartDma(0,&__osPfsPifRam); + osRecvMesg(queue,&dummy,1); + __osPfsGetInitData(&bitpattern,&data); + if ((((&data)[channel].status & 1) == 0) || (((&data)[channel].status & 2) == 0)) { + if (((&data)[channel].errno == '\0') && (((&data)[channel].status & 1) != 0)) { + if (((&data)[channel].status & 4) != 0) { + sVar1 = 4; + } + } + else { + sVar1 = 1; + } } else { - sVar1 = 1; + sVar1 = 2; } - } - else { - sVar1 = 2; - } - return sVar1; + return sVar1; } @@ -14387,51 +14442,52 @@ s32 __osPfsGetStatus(OSMesgQueue *queue,int channel) s32 osContInit(OSMesgQueue *mq,u8 *bitpattern,OSContStatus *data) { - OSTime OVar1; - int iVar4; - longlong lVar2; - ulonglong uVar3; - s32 ret; - undefined4 in_v1_hi; - uint in_v1_lo; - uint left_l; - OSTime value; - OSMesgQueue timerMesgQueue; - OSTimer mytimer; - OSMesg dummy; - - if (__osContinitialized == 0) { - __osContinitialized = 1; - OVar1 = osGetTime(); - iVar4 = (int)OVar1; - left_l = in_v1_lo; - lVar2 = __ll_mul(0,500000,osClockRate._0_4_,osClockRate._4_4_); - uVar3 = __ull_div((int)lVar2,left_l,0,1000000); - if (((ulonglong)(longlong)iVar4 <= uVar3) && - (((ulonglong)(longlong)iVar4 < uVar3 || - ((ulonglong)(longlong)(int)in_v1_lo < CONCAT44(in_v1_hi,left_l))))) { - osCreateMesgQueue(&timerMesgQueue,&dummy,1); - lVar2 = __ll_mul(0,500000,osClockRate._0_4_,osClockRate._4_4_); - uVar3 = __ull_div((int)lVar2,left_l,0,1000000); - osSetTimer(&mytimer,value,(longlong)(int)(((int)uVar3 - iVar4) - (uint)(left_l < in_v1_lo)), - (OSMesgQueue *)(left_l - in_v1_lo),NULL); - osRecvMesg(&timerMesgQueue,&dummy,1); + OSTime OVar1; + int iVar4; + longlong lVar2; + ulonglong uVar3; + s32 ret; + undefined4 in_v1_hi; + uint in_v1_lo; + uint left_l; + OSTime value; + OSMesgQueue timerMesgQueue; + OSTimer mytimer; + OSMesg dummy; + + if (__osContinitialized == 0) { + __osContinitialized = 1; + OVar1 = osGetTime(); + iVar4 = (int)OVar1; + left_l = in_v1_lo; + lVar2 = __ll_mul(0,500000,osClockRate._0_4_,osClockRate._4_4_); + uVar3 = __ull_div((int)lVar2,left_l,0,1000000); + if (((ulonglong)(longlong)iVar4 <= uVar3) && + (((ulonglong)(longlong)iVar4 < uVar3 || + ((ulonglong)(longlong)(int)in_v1_lo < CONCAT44(in_v1_hi,left_l))))) { + osCreateMesgQueue(&timerMesgQueue,&dummy,1); + lVar2 = __ll_mul(0,500000,osClockRate._0_4_,osClockRate._4_4_); + uVar3 = __ull_div((int)lVar2,left_l,0,1000000); + osSetTimer(&mytimer,value, + (longlong)(int)(((int)uVar3 - iVar4) - (uint)(left_l < in_v1_lo)), + (OSMesgQueue *)(left_l - in_v1_lo),NULL); + osRecvMesg(&timerMesgQueue,&dummy,1); + } + __osMaxControllers = '\x04'; + __osPackRequestData('\0'); + __osSiRawStartDma(1,&__osContPifRam); + osRecvMesg(mq,&dummy,1); + ret = __osSiRawStartDma(0,&__osContPifRam); + osRecvMesg(mq,&dummy,1); + __osContGetInitData(bitpattern,data); + __osContLastCmd = '\0'; + __osSiCreateAccessQueue(); + osCreateMesgQueue(&__osEepromTimerQ,&__osEepromTimerMsg,1); } - __osMaxControllers = '\x04'; - __osPackRequestData('\0'); - __osSiRawStartDma(1,&__osContPifRam); - osRecvMesg(mq,&dummy,1); - ret = __osSiRawStartDma(0,&__osContPifRam); - osRecvMesg(mq,&dummy,1); - __osContGetInitData(bitpattern,data); - __osContLastCmd = '\0'; - __osSiCreateAccessQueue(); - osCreateMesgQueue(&__osEepromTimerQ,&__osEepromTimerMsg,1); - } - else { - ret = 0; - } - return ret; + else { + ret = 0; + } + return ret; } @@ -14439,36 +14495,36 @@ s32 osContInit(OSMesgQueue *mq,u8 *bitpattern,OSContStatus *data) void __osContGetInitData(u8 *pattern,OSContStatus *data) { - u32 uVar1; - byte local_11; - uint local_10; - undefined local_8; - undefined uStack7; - u8 uStack6; - OSPifRam *local_4; - - local_11 = 0; - local_4 = &__osContPifRam; - local_10 = 0; - if (__osMaxControllers != '\0') { - do { - uVar1 = local_4->ramarray[1]; - data->errno = (u8)((int)(local_4->ramarray[0] >> 8 & 0xc0) >> 4); - if (data->errno == '\0') { - uStack7 = (undefined)(uVar1 >> 0x10); - local_8 = (undefined)(uVar1 >> 0x18); - data->type = CONCAT11(uStack7,local_8); - uStack6 = (u8)(uVar1 >> 8); - data->status = uStack6; - local_11 |= (byte)(1 << (local_10 & 0x1f)); - } - local_10 += 1; - local_4 = (OSPifRam *)(local_4->ramarray + 2); - data = data + 1; - } while ((longlong)(int)local_10 < (longlong)(ulonglong)__osMaxControllers); - } - *pattern = local_11; - return; + u32 uVar1; + byte local_11; + uint local_10; + undefined local_8; + undefined uStack7; + u8 uStack6; + OSPifRam *local_4; + + local_11 = 0; + local_4 = &__osContPifRam; + local_10 = 0; + if (__osMaxControllers != '\0') { + do { + uVar1 = local_4->ramarray[1]; + data->errno = (u8)((int)(local_4->ramarray[0] >> 8 & 0xc0) >> 4); + if (data->errno == '\0') { + uStack7 = (undefined)(uVar1 >> 0x10); + local_8 = (undefined)(uVar1 >> 0x18); + data->type = CONCAT11(uStack7,local_8); + uStack6 = (u8)(uVar1 >> 8); + data->status = uStack6; + local_11 |= (byte)(1 << (local_10 & 0x1f)); + } + local_10 += 1; + local_4 = (OSPifRam *)(local_4->ramarray + 2); + data = data + 1; + } while ((longlong)(int)local_10 < (longlong)(ulonglong)__osMaxControllers); + } + *pattern = local_11; + return; } @@ -14476,29 +14532,29 @@ void __osContGetInitData(u8 *pattern,OSContStatus *data) void __osPackRequestData(u8 cmd) { - int iStack16; - uint uStack12; - OSPifRam *pOStack4; - - iStack16 = 0; - do { - __osContPifRam.ramarray[iStack16] = 0; - iStack16 += 1; - } while (iStack16 < 0x10); - __osContPifRam.pifstatus = 1; - pOStack4 = &__osContPifRam; - uStack12 = CONCAT31(0xff0100,cmd) | 0x300; - iStack16 = 0; - if (__osMaxControllers != '\0') { + int iStack16; + uint uStack12; + OSPifRam *pOStack4; + + iStack16 = 0; do { - pOStack4->ramarray[0] = uStack12; - pOStack4->ramarray[1] = 0xffffffff; - iStack16 += 1; - pOStack4 = (OSPifRam *)(pOStack4->ramarray + 2); - } while ((longlong)iStack16 < (longlong)(ulonglong)__osMaxControllers); - } - *(undefined *)pOStack4->ramarray = 0xfe; - return; + __osContPifRam.ramarray[iStack16] = 0; + iStack16 += 1; + } while (iStack16 < 0x10); + __osContPifRam.pifstatus = 1; + pOStack4 = &__osContPifRam; + uStack12 = CONCAT31(0xff0100,cmd) | 0x300; + iStack16 = 0; + if (__osMaxControllers != '\0') { + do { + pOStack4->ramarray[0] = uStack12; + pOStack4->ramarray[1] = 0xffffffff; + iStack16 += 1; + pOStack4 = (OSPifRam *)(pOStack4->ramarray + 2); + } while ((longlong)iStack16 < (longlong)(ulonglong)__osMaxControllers); + } + *(undefined *)pOStack4->ramarray = 0xfe; + return; } @@ -14506,18 +14562,18 @@ void __osPackRequestData(u8 cmd) s32 osContStartQuery(OSMesgQueue *mq) { - s32 ret; - - __osSiGetAccess(); - if (__osContLastCmd != '\0') { - __osPackRequestData('\0'); - __osSiRawStartDma(1,&__osContPifRam); - osRecvMesg(mq,NULL,1); - } - ret = __osSiRawStartDma(0,&__osContPifRam); - __osContLastCmd = '\0'; - __osSiRelAccess(); - return ret; + s32 ret; + + __osSiGetAccess(); + if (__osContLastCmd != '\0') { + __osPackRequestData('\0'); + __osSiRawStartDma(1,&__osContPifRam); + osRecvMesg(mq,NULL,1); + } + ret = __osSiRawStartDma(0,&__osContPifRam); + __osContLastCmd = '\0'; + __osSiRelAccess(); + return ret; } @@ -14525,10 +14581,10 @@ s32 osContStartQuery(OSMesgQueue *mq) void osContGetQuery(OSContStatus *data) { - u8 pattern; - - __osContGetInitData(&pattern,data); - return; + u8 pattern; + + __osContGetInitData(&pattern,data); + return; } @@ -14536,25 +14592,25 @@ void osContGetQuery(OSContStatus *data) s32 osContStartReadData(OSMesgQueue *mq) { - s32 ret; - int i; - - __osSiGetAccess(); - if (__osContLastCmd != '\x01') { - __osPackReadData(); - __osSiRawStartDma(1,&__osContPifRam); - osRecvMesg(mq,NULL,1); - } - i = 0; - do { - __osContPifRam.ramarray[i] = 0xff; - i += 1; - } while (i < 0x10); - __osContPifRam.pifstatus = 0; - ret = __osSiRawStartDma(0,&__osContPifRam); - __osContLastCmd = '\x01'; - __osSiRelAccess(); - return ret; + s32 ret; + int i; + + __osSiGetAccess(); + if (__osContLastCmd != '\x01') { + __osPackReadData(); + __osSiRawStartDma(1,&__osContPifRam); + osRecvMesg(mq,NULL,1); + } + i = 0; + do { + __osContPifRam.ramarray[i] = 0xff; + i += 1; + } while (i < 0x10); + __osContPifRam.pifstatus = 0; + ret = __osSiRawStartDma(0,&__osContPifRam); + __osContLastCmd = '\x01'; + __osSiRelAccess(); + return ret; } @@ -14562,33 +14618,33 @@ s32 osContStartReadData(OSMesgQueue *mq) void osContGetReadData(OSContPad *data) { - u32 uVar1; - int local_10; - u16 local_8; - s8 sStack6; - s8 sStack5; - OSPifRam *local_4; - - local_4 = &__osContPifRam; - local_10 = 0; - if (__osMaxControllers != '\0') { - do { - uVar1 = local_4->ramarray[1]; - data->errno = (u8)((int)(local_4->ramarray[0] >> 8 & 0xc0) >> 4); - if (data->errno == '\0') { - local_8 = (u16)(uVar1 >> 0x10); - data->button = local_8; - sStack6 = (s8)(uVar1 >> 8); - data->stick_x = sStack6; - sStack5 = (s8)uVar1; - data->stick_y = sStack5; - } - local_10 += 1; - local_4 = (OSPifRam *)(local_4->ramarray + 2); - data = data + 1; - } while ((longlong)local_10 < (longlong)(ulonglong)__osMaxControllers); - } - return; + u32 uVar1; + int local_10; + u16 local_8; + s8 sStack6; + s8 sStack5; + OSPifRam *local_4; + + local_4 = &__osContPifRam; + local_10 = 0; + if (__osMaxControllers != '\0') { + do { + uVar1 = local_4->ramarray[1]; + data->errno = (u8)((int)(local_4->ramarray[0] >> 8 & 0xc0) >> 4); + if (data->errno == '\0') { + local_8 = (u16)(uVar1 >> 0x10); + data->button = local_8; + sStack6 = (s8)(uVar1 >> 8); + data->stick_x = sStack6; + sStack5 = (s8)uVar1; + data->stick_y = sStack5; + } + local_10 += 1; + local_4 = (OSPifRam *)(local_4->ramarray + 2); + data = data + 1; + } while ((longlong)local_10 < (longlong)(ulonglong)__osMaxControllers); + } + return; } @@ -14596,27 +14652,27 @@ void osContGetReadData(OSContPad *data) void __osPackReadData(void) { - int i; - OSPifRam *pOStack4; - - pOStack4 = &__osContPifRam; - i = 0; - do { - __osContPifRam.ramarray[i] = 0; - i += 1; - } while (i < 0x10); - __osContPifRam.pifstatus = 1; - i = 0; - if (__osMaxControllers != '\0') { + int i; + OSPifRam *pOStack4; + + pOStack4 = &__osContPifRam; + i = 0; do { - pOStack4->ramarray[0] = 0xff010401; - pOStack4->ramarray[1] = 0xffffffff; - i += 1; - pOStack4 = (OSPifRam *)(pOStack4->ramarray + 2); - } while ((longlong)i < (longlong)(ulonglong)__osMaxControllers); - } - *(undefined *)pOStack4->ramarray = 0xfe; - return; + __osContPifRam.ramarray[i] = 0; + i += 1; + } while (i < 0x10); + __osContPifRam.pifstatus = 1; + i = 0; + if (__osMaxControllers != '\0') { + do { + pOStack4->ramarray[0] = 0xff010401; + pOStack4->ramarray[1] = 0xffffffff; + i += 1; + pOStack4 = (OSPifRam *)(pOStack4->ramarray + 2); + } while ((longlong)i < (longlong)(ulonglong)__osMaxControllers); + } + *(undefined *)pOStack4->ramarray = 0xfe; + return; } @@ -14624,20 +14680,20 @@ void __osPackReadData(void) s32 osEepromProbe(OSMesgQueue *mq) { - s32 _ret; - OSContStatus sdata; - s32 ret; - - __osSiGetAccess(); - _ret = __osEepStatus(mq,&sdata); - if ((_ret == 0) && ((sdata.type & 0x8000) != 0)) { - ret = 1; - } - else { - ret = 0; - } - __osSiRelAccess(); - return ret; + s32 _ret; + OSContStatus sdata; + s32 ret; + + __osSiGetAccess(); + _ret = __osEepStatus(mq,&sdata); + if ((_ret == 0) && ((sdata.type & 0x8000) != 0)) { + ret = 1; + } + else { + ret = 0; + } + __osSiRelAccess(); + return ret; } @@ -14645,64 +14701,65 @@ s32 osEepromProbe(OSMesgQueue *mq) s32 osEepromRead(OSMesgQueue *mq,u8 address,u8 *buffer) { - s32 ret; - s32 sVar1; - OSPifRam *pOVar2; - u8 *puStackX8; - undefined4 uStack24; - undefined4 uStack20; - OSContStatus sdata; - OSPifRam *pOStack12; - int iStack8; - - if (address < 0x41) { - __osSiGetAccess(); - ret = __osEepStatus(mq,&sdata); - if ((ret == 0) && (sdata.type == 0x8000)) { - while ((sdata.status & 0x80) != 0) { - __osEepStatus(mq,&sdata); - } - __osPackEepReadData(address); - __osSiRawStartDma(1,&__osEepPifRam); - osRecvMesg(mq,NULL,1); - iStack8 = 0; - do { - __osEepPifRam.ramarray[iStack8] = 0xff; - iStack8 += 1; - } while (iStack8 < 0x10); - __osEepPifRam.pifstatus = 0; - __osSiRawStartDma(0,&__osEepPifRam); - __osContLastCmd = '\x04'; - osRecvMesg(mq,NULL,1); - iStack8 = 0; - pOVar2 = &__osEepPifRam; - do { - pOStack12 = pOVar2; - iStack8 += 1; - pOVar2 = (OSPifRam *)((int)pOStack12->ramarray + 1); - } while (iStack8 < 4); - uStack24 = *(undefined4 *)((int)pOStack12->ramarray + 5); - uStack20 = *(undefined4 *)((int)pOStack12->ramarray + 9); - sVar1 = (int)(pOVar2->ramarray[0] >> 0x10 & 0xc0) >> 4; - if (sVar1 == 0) { - iStack8 = 0; - puStackX8 = buffer; - do { - *puStackX8 = *(u8 *)((int)&uStack24 + iStack8); - iStack8 += 1; - puStackX8 = puStackX8 + 1; - } while (iStack8 < 8); - } - __osSiRelAccess(); + s32 ret; + s32 sVar1; + OSPifRam *pOVar2; + u8 *puStackX8; + undefined4 uStack24; + undefined4 uStack20; + OSContStatus sdata; + OSPifRam *pOStack12; + int iStack8; + + pOStack12 = &__osEepPifRam; + if (address < 0x41) { + __osSiGetAccess(); + ret = __osEepStatus(mq,&sdata); + if ((ret == 0) && (sdata.type == 0x8000)) { + while ((sdata.status & 0x80) != 0) { + __osEepStatus(mq,&sdata); + } + __osPackEepReadData(address); + __osSiRawStartDma(1,&__osEepPifRam); + osRecvMesg(mq,NULL,1); + iStack8 = 0; + do { + __osEepPifRam.ramarray[iStack8] = 0xff; + iStack8 += 1; + } while (iStack8 < 0x10); + __osEepPifRam.pifstatus = 0; + __osSiRawStartDma(0,&__osEepPifRam); + __osContLastCmd = '\x04'; + osRecvMesg(mq,NULL,1); + iStack8 = 0; + pOVar2 = pOStack12; + do { + pOStack12 = pOVar2; + iStack8 += 1; + pOVar2 = (OSPifRam *)((int)pOStack12->ramarray + 1); + } while (iStack8 < 4); + uStack24 = *(undefined4 *)((int)pOStack12->ramarray + 5); + uStack20 = *(undefined4 *)((int)pOStack12->ramarray + 9); + sVar1 = (int)(pOVar2->ramarray[0] >> 0x10 & 0xc0) >> 4; + if (sVar1 == 0) { + iStack8 = 0; + puStackX8 = buffer; + do { + *puStackX8 = *(u8 *)((int)&uStack24 + iStack8); + iStack8 += 1; + puStackX8 = puStackX8 + 1; + } while (iStack8 < 8); + } + __osSiRelAccess(); + } + else { + sVar1 = 8; + } } else { - sVar1 = 8; + sVar1 = -1; } - } - else { - sVar1 = -1; - } - return sVar1; + return sVar1; } @@ -14710,38 +14767,39 @@ s32 osEepromRead(OSMesgQueue *mq,u8 address,u8 *buffer) void __osPackEepReadData(u8 address) { - OSPifRam *pOVar1; - int iStack20; - uint uStack16; - undefined4 uStack12; - undefined4 uStack8; - OSPifRam *pOStack4; - - iStack20 = 0; - do { - __osEepPifRam.ramarray[iStack20] = 0xff; - iStack20 += 1; - } while (iStack20 < 0x10); - __osEepPifRam.pifstatus = 1; - uStack16 = CONCAT31(0x20800,address) | 0x400; - iStack20 = 0; - do { - *(undefined *)((int)&uStack12 + iStack20) = 0; - iStack20 += 1; - } while (iStack20 < 8); - iStack20 = 0; - pOVar1 = &__osEepPifRam; - do { - pOStack4 = pOVar1; - *(undefined *)pOStack4->ramarray = 0; - iStack20 += 1; - pOVar1 = (OSPifRam *)((int)pOStack4->ramarray + 1); - } while (iStack20 < 4); - pOVar1->ramarray[0] = uStack16; - *(undefined4 *)((int)pOStack4->ramarray + 5) = uStack12; - *(undefined4 *)((int)pOStack4->ramarray + 9) = uStack8; - *(undefined *)((int)pOStack4->ramarray + 0xd) = 0xfe; - return; + OSPifRam *pOVar1; + int iStack20; + uint uStack16; + undefined4 uStack12; + undefined4 uStack8; + OSPifRam *pOStack4; + + pOStack4 = &__osEepPifRam; + iStack20 = 0; + do { + __osEepPifRam.ramarray[iStack20] = 0xff; + iStack20 += 1; + } while (iStack20 < 0x10); + __osEepPifRam.pifstatus = 1; + uStack16 = CONCAT31(0x20800,address) | 0x400; + iStack20 = 0; + do { + *(undefined *)((int)&uStack12 + iStack20) = 0; + iStack20 += 1; + } while (iStack20 < 8); + iStack20 = 0; + pOVar1 = pOStack4; + do { + pOStack4 = pOVar1; + *(undefined *)pOStack4->ramarray = 0; + iStack20 += 1; + pOVar1 = (OSPifRam *)((int)pOStack4->ramarray + 1); + } while (iStack20 < 4); + pOVar1->ramarray[0] = uStack16; + *(undefined4 *)((int)pOStack4->ramarray + 5) = uStack12; + *(undefined4 *)((int)pOStack4->ramarray + 9) = uStack8; + *(undefined *)((int)pOStack4->ramarray + 0xd) = 0xfe; + return; } @@ -14749,48 +14807,48 @@ void __osPackEepReadData(u8 address) s32 osEepromWrite(OSMesgQueue *mq,u8 address,u8 *buffer) { - s32 ret; - s32 sVar1; - OSContStatus sdata; - OSPifRam *pOStack12; - int iStack8; - - pOStack12 = &__osEepPifRam; - if (address < 0x41) { - __osSiGetAccess(); - ret = __osEepStatus(mq,&sdata); - if ((ret == 0) && (sdata.type == 0x8000)) { - while ((sdata.status & 0x80) != 0) { - __osEepStatus(mq,&sdata); - } - __osPackEepWriteData(address,buffer); - __osSiRawStartDma(1,&__osEepPifRam); - osRecvMesg(mq,NULL,1); - iStack8 = 0; - do { - __osEepPifRam.ramarray[iStack8] = 0xff; - iStack8 += 1; - } while (iStack8 < 0x10); - __osEepPifRam.pifstatus = 0; - __osSiRawStartDma(0,&__osEepPifRam); - __osContLastCmd = '\x05'; - osRecvMesg(mq,NULL,1); - iStack8 = 0; - do { - iStack8 += 1; - pOStack12 = (OSPifRam *)((int)pOStack12->ramarray + 1); - } while (iStack8 < 4); - sVar1 = (int)(pOStack12->ramarray[0] >> 0x10 & 0xc0) >> 4; - __osSiRelAccess(); + s32 ret; + s32 sVar1; + OSContStatus sdata; + OSPifRam *pOStack12; + int iStack8; + + pOStack12 = &__osEepPifRam; + if (address < 0x41) { + __osSiGetAccess(); + ret = __osEepStatus(mq,&sdata); + if ((ret == 0) && (sdata.type == 0x8000)) { + while ((sdata.status & 0x80) != 0) { + __osEepStatus(mq,&sdata); + } + __osPackEepWriteData(address,buffer); + __osSiRawStartDma(1,&__osEepPifRam); + osRecvMesg(mq,NULL,1); + iStack8 = 0; + do { + __osEepPifRam.ramarray[iStack8] = 0xff; + iStack8 += 1; + } while (iStack8 < 0x10); + __osEepPifRam.pifstatus = 0; + __osSiRawStartDma(0,&__osEepPifRam); + __osContLastCmd = '\x05'; + osRecvMesg(mq,NULL,1); + iStack8 = 0; + do { + iStack8 += 1; + pOStack12 = (OSPifRam *)((int)pOStack12->ramarray + 1); + } while (iStack8 < 4); + sVar1 = (int)(pOStack12->ramarray[0] >> 0x10 & 0xc0) >> 4; + __osSiRelAccess(); + } + else { + sVar1 = 8; + } } else { - sVar1 = 8; + sVar1 = -1; } - } - else { - sVar1 = -1; - } - return sVar1; + return sVar1; } @@ -14798,41 +14856,42 @@ s32 osEepromWrite(OSMesgQueue *mq,u8 address,u8 *buffer) void __osPackEepWriteData(u8 address,u8 *buffer) { - u8 uVar1; - OSPifRam *pOVar2; - int iStack20; - uint uStack16; - undefined4 uStack12; - undefined4 uStack8; - OSPifRam *pOStack4; - - iStack20 = 0; - do { - __osEepPifRam.ramarray[iStack20] = 0xff; - iStack20 += 1; - } while (iStack20 < 0x10); - __osEepPifRam.pifstatus = 1; - uStack16 = CONCAT31(0xa0100,address) | 0x500; - iStack20 = 0; - do { - uVar1 = *buffer; - buffer = buffer + 1; - *(u8 *)((int)&uStack12 + iStack20) = uVar1; - iStack20 += 1; - } while (iStack20 < 8); - iStack20 = 0; - pOVar2 = &__osEepPifRam; - do { - pOStack4 = pOVar2; - *(undefined *)pOStack4->ramarray = 0; - iStack20 += 1; - pOVar2 = (OSPifRam *)((int)pOStack4->ramarray + 1); - } while (iStack20 < 4); - pOVar2->ramarray[0] = uStack16; - *(undefined4 *)((int)pOStack4->ramarray + 5) = uStack12; - *(undefined4 *)((int)pOStack4->ramarray + 9) = uStack8; - *(undefined *)((int)pOStack4->ramarray + 0xd) = 0xfe; - return; + u8 uVar1; + OSPifRam *pOVar2; + int iStack20; + uint uStack16; + undefined4 uStack12; + undefined4 uStack8; + OSPifRam *pOStack4; + + pOStack4 = &__osEepPifRam; + iStack20 = 0; + do { + __osEepPifRam.ramarray[iStack20] = 0xff; + iStack20 += 1; + } while (iStack20 < 0x10); + __osEepPifRam.pifstatus = 1; + uStack16 = CONCAT31(0xa0100,address) | 0x500; + iStack20 = 0; + do { + uVar1 = *buffer; + buffer = buffer + 1; + *(u8 *)((int)&uStack12 + iStack20) = uVar1; + iStack20 += 1; + } while (iStack20 < 8); + iStack20 = 0; + pOVar2 = pOStack4; + do { + pOStack4 = pOVar2; + *(undefined *)pOStack4->ramarray = 0; + iStack20 += 1; + pOVar2 = (OSPifRam *)((int)pOStack4->ramarray + 1); + } while (iStack20 < 4); + pOVar2->ramarray[0] = uStack16; + *(undefined4 *)((int)pOStack4->ramarray + 5) = uStack12; + *(undefined4 *)((int)pOStack4->ramarray + 9) = uStack8; + *(undefined *)((int)pOStack4->ramarray + 0xd) = 0xfe; + return; } @@ -14840,61 +14899,63 @@ void __osPackEepWriteData(u8 address,u8 *buffer) s32 __osEepStatus(OSMesgQueue *mq,OSContStatus *data) { - undefined4 uVar1; - uint uVar2; - OSPifRam *pOVar3; - undefined uStack16; - undefined uStack15; - u8 uStack14; - OSPifRam *pOStack12; - int iStack8; - - iStack8 = 0; - do { - __osEepPifRam.ramarray[iStack8] = 0; - iStack8 += 1; - } while (iStack8 < 0x10); - __osEepPifRam.pifstatus = 1; - iStack8 = 0; - pOVar3 = &__osEepPifRam; - do { - pOStack12 = pOVar3; - *(undefined *)pOStack12->ramarray = 0; - iStack8 += 1; - pOVar3 = (OSPifRam *)((int)pOStack12->ramarray + 1); - } while (iStack8 < 4); - pOVar3->ramarray[0] = 0xff010300; - *(undefined4 *)((int)pOStack12->ramarray + 5) = 0xffffffff; - *(undefined *)((int)pOStack12->ramarray + 9) = 0xfe; - __osSiRawStartDma(1,&__osEepPifRam); - osRecvMesg(mq,NULL,1); - __osContLastCmd = '\x05'; - uVar2 = __osSiRawStartDma(0,&__osEepPifRam); - osRecvMesg(mq,NULL,1); - if (uVar2 == 0) { + undefined4 uVar1; + uint uVar2; + OSPifRam *pOVar3; + undefined uStack16; + undefined uStack15; + u8 uStack14; + OSPifRam *pOStack12; + int iStack8; + iStack8 = 0; - pOVar3 = &__osEepPifRam; do { - pOStack12 = pOVar3; - *(undefined *)pOStack12->ramarray = 0; - iStack8 += 1; - pOVar3 = (OSPifRam *)((int)pOStack12->ramarray + 1); + __osEepPifRam.ramarray[iStack8] = 0; + iStack8 += 1; + } while (iStack8 < 0x10); + __osEepPifRam.pifstatus = 1; + pOStack12 = &__osEepPifRam; + iStack8 = 0; + pOVar3 = pOStack12; + do { + pOStack12 = pOVar3; + *(undefined *)pOStack12->ramarray = 0; + iStack8 += 1; + pOVar3 = (OSPifRam *)((int)pOStack12->ramarray + 1); } while (iStack8 < 4); - uVar1 = *(undefined4 *)((int)pOStack12->ramarray + 5); - data->errno = (u8)((int)(pOVar3->ramarray[0] >> 8 & 0xc0) >> 4); - uStack15 = (undefined)((uint)uVar1 >> 0x10); - uStack16 = (undefined)((uint)uVar1 >> 0x18); - data->type = CONCAT11(uStack15,uStack16); - uStack14 = (u8)((uint)uVar1 >> 8); - data->status = uStack14; - if (data->errno == 0) { - uVar2 = 0; + pOVar3->ramarray[0] = 0xff010300; + *(undefined4 *)((int)pOStack12->ramarray + 5) = 0xffffffff; + *(undefined *)((int)pOStack12->ramarray + 9) = 0xfe; + __osSiRawStartDma(1,&__osEepPifRam); + osRecvMesg(mq,NULL,1); + __osContLastCmd = '\x05'; + uVar2 = __osSiRawStartDma(0,&__osEepPifRam); + osRecvMesg(mq,NULL,1); + if (uVar2 == 0) { + pOStack12 = &__osEepPifRam; + iStack8 = 0; + pOVar3 = pOStack12; + do { + pOStack12 = pOVar3; + *(undefined *)pOStack12->ramarray = 0; + iStack8 += 1; + pOVar3 = (OSPifRam *)((int)pOStack12->ramarray + 1); + } while (iStack8 < 4); + uVar1 = *(undefined4 *)((int)pOStack12->ramarray + 5); + data->errno = (u8)((int)(pOVar3->ramarray[0] >> 8 & 0xc0) >> 4); + uStack15 = (undefined)((uint)uVar1 >> 0x10); + uStack16 = (undefined)((uint)uVar1 >> 0x18); + data->type = CONCAT11(uStack15,uStack16); + uStack14 = (u8)((uint)uVar1 >> 8); + data->status = uStack14; + if (data->errno == 0) { + uVar2 = 0; + } + else { + uVar2 = (uint)data->errno; + } } - else { - uVar2 = (uint)data->errno; - } - } - return (s32)uVar2; + return (s32)uVar2; } @@ -14902,38 +14963,38 @@ s32 __osEepStatus(OSMesgQueue *mq,OSContStatus *data) s32 osEepromLongRead(OSMesgQueue *mq,u8 address,u8 *buffer,int length) { - longlong lVar1; - ulonglong uVar2; - OSMesgQueue *mq_00; - OSTime value; - u8 *puStackX8; - int iStackX12; - s32 ret; - - ret = 0; - if (address < 0x41) { - puStackX8 = buffer; - iStackX12 = length; - if (0 < length) { - do { - ret = osEepromRead(mq,address,puStackX8); - if (ret != 0) { - return ret; + longlong lVar1; + ulonglong uVar2; + OSMesgQueue *in_v1_lo; + OSTime value; + u8 *puStackX8; + int iStackX12; + s32 ret; + + ret = 0; + if (address < 0x41) { + puStackX8 = buffer; + iStackX12 = length; + if (0 < length) { + do { + ret = osEepromRead(mq,address,puStackX8); + if (ret != 0) { + return ret; + } + iStackX12 += -8; + address += '\x01'; + puStackX8 = puStackX8 + 8; + lVar1 = __ll_mul(0,12000,osClockRate._0_4_,osClockRate._4_4_); + uVar2 = __ull_div((int)lVar1,in_v1_lo,0,1000000); + osSetTimer(&__osEepromTimer,value,(longlong)(int)uVar2,in_v1_lo,NULL); + osRecvMesg(&__osEepromTimerQ,NULL,1); + } while (0 < iStackX12); } - iStackX12 += -8; - address += '\x01'; - puStackX8 = puStackX8 + 8; - lVar1 = __ll_mul(0,12000,osClockRate._0_4_,osClockRate._4_4_); - uVar2 = __ull_div((int)lVar1,mq_00,0,1000000); - osSetTimer(&__osEepromTimer,value,(longlong)(int)uVar2,mq_00,NULL); - osRecvMesg(&__osEepromTimerQ,NULL,1); - } while (0 < iStackX12); } - } - else { - ret = -1; - } - return ret; + else { + ret = -1; + } + return ret; } @@ -14941,38 +15002,38 @@ s32 osEepromLongRead(OSMesgQueue *mq,u8 address,u8 *buffer,int length) s32 osEepromLongWrite(OSMesgQueue *mq,u8 address,u8 *buffer,int length) { - longlong lVar1; - ulonglong uVar2; - OSMesgQueue *mq_00; - OSTime value; - u8 *_buffer; - int _length; - s32 ret; - - ret = 0; - if (address < 0x41) { - _buffer = buffer; - _length = length; - if (0 < length) { - do { - ret = osEepromWrite(mq,address,_buffer); - if (ret != 0) { - return ret; + longlong lVar1; + ulonglong uVar2; + OSMesgQueue *in_v1_lo; + OSTime value; + u8 *_buffer; + int _length; + s32 ret; + + ret = 0; + if (address < 0x41) { + _buffer = buffer; + _length = length; + if (0 < length) { + do { + ret = osEepromWrite(mq,address,_buffer); + if (ret != 0) { + return ret; + } + _length += -8; + address += '\x01'; + _buffer = _buffer + 8; + lVar1 = __ll_mul(0,12000,osClockRate._0_4_,osClockRate._4_4_); + uVar2 = __ull_div((int)lVar1,in_v1_lo,0,1000000); + osSetTimer(&__osEepromTimer,value,(longlong)(int)uVar2,in_v1_lo,NULL); + osRecvMesg(&__osEepromTimerQ,NULL,1); + } while (0 < _length); } - _length += -8; - address += '\x01'; - _buffer = _buffer + 8; - lVar1 = __ll_mul(0,12000,osClockRate._0_4_,osClockRate._4_4_); - uVar2 = __ull_div((int)lVar1,mq_00,0,1000000); - osSetTimer(&__osEepromTimer,value,(longlong)(int)uVar2,mq_00,NULL); - osRecvMesg(&__osEepromTimerQ,NULL,1); - } while (0 < _length); } - } - else { - ret = -1; - } - return ret; + else { + ret = -1; + } + return ret; } @@ -14980,53 +15041,53 @@ s32 osEepromLongWrite(OSMesgQueue *mq,u8 address,u8 *buffer,int length) s32 osPfsIsPlug(OSMesgQueue *queue,u8 *pattern) { - int crc_error_cnt; - byte bits; - uint channel; - OSContStatus data [4]; - u8 bitpattern; - OSMesg pvStack8; - s32 ret; - - ret = 0; - bits = 0; - crc_error_cnt = 3; - __osSiGetAccess(); - do { - __osPfsRequestData('\0'); - ret = __osSiRawStartDma(1,&__osPfsPifRam); - osRecvMesg(queue,&pvStack8,1); - ret = __osSiRawStartDma(0,&__osPfsPifRam); - osRecvMesg(queue,&pvStack8,1); - __osPfsGetInitData(&bitpattern,data); - channel = 0; - if (__osMaxControllers != '\0') { - do { - if ((data[channel].status & 4) == 0) { - crc_error_cnt += -1; - break; + int crc_error_cnt; + byte bits; + uint channel; + OSContStatus data [4]; + u8 bitpattern; + OSMesg pvStack8; + s32 ret; + + ret = 0; + bits = 0; + crc_error_cnt = 3; + __osSiGetAccess(); + do { + __osPfsRequestData('\0'); + ret = __osSiRawStartDma(1,&__osPfsPifRam); + osRecvMesg(queue,&pvStack8,1); + ret = __osSiRawStartDma(0,&__osPfsPifRam); + osRecvMesg(queue,&pvStack8,1); + __osPfsGetInitData(&bitpattern,data); + channel = 0; + if (__osMaxControllers != '\0') { + do { + if ((data[channel].status & 4) == 0) { + crc_error_cnt += -1; + break; + } + channel += 1; + } while ((longlong)(int)channel < (longlong)(ulonglong)__osMaxControllers); } - channel += 1; - } while ((longlong)(int)channel < (longlong)(ulonglong)__osMaxControllers); - } - if ((ulonglong)__osMaxControllers == (longlong)(int)channel) { - crc_error_cnt = 0; - } - if (crc_error_cnt < 1) { - channel = 0; - if (__osMaxControllers != '\0') { - do { - if ((data[channel].errno == '\0') && ((data[channel].status & 1) != 0)) { - bits |= (byte)(1 << (channel & 0x1f)); - } - channel += 1; - } while ((longlong)(int)channel < (longlong)(ulonglong)__osMaxControllers); - } - __osSiRelAccess(); - *pattern = bits; - return ret; - } - } while( true ); + if ((ulonglong)__osMaxControllers == (longlong)(int)channel) { + crc_error_cnt = 0; + } + if (crc_error_cnt < 1) { + channel = 0; + if (__osMaxControllers != '\0') { + do { + if ((data[channel].errno == '\0') && ((data[channel].status & 1) != 0)) { + bits |= (byte)(1 << (channel & 0x1f)); + } + channel += 1; + } while ((longlong)(int)channel < (longlong)(ulonglong)__osMaxControllers); + } + __osSiRelAccess(); + *pattern = bits; + return ret; + } + } while( true ); } @@ -15034,30 +15095,30 @@ s32 osPfsIsPlug(OSMesgQueue *queue,u8 *pattern) void __osPfsRequestData(u8 cmd) { - int iStack16; - uint uStack12; - OSPifRam *pOStack4; - - iStack16 = 0; - __osContLastCmd = cmd; - do { - __osPfsPifRam.ramarray[iStack16] = 0; - iStack16 += 1; - } while (iStack16 < 0x10); - __osPfsPifRam.pifstatus = 1; - pOStack4 = &__osPfsPifRam; - uStack12 = CONCAT31(0xff0100,cmd) | 0x300; - iStack16 = 0; - if (__osMaxControllers != '\0') { + int iStack16; + uint uStack12; + OSPifRam *pOStack4; + + iStack16 = 0; + __osContLastCmd = cmd; do { - pOStack4->ramarray[0] = uStack12; - pOStack4->ramarray[1] = 0xffffffff; - iStack16 += 1; - pOStack4 = (OSPifRam *)(pOStack4->ramarray + 2); - } while ((longlong)iStack16 < (longlong)(ulonglong)__osMaxControllers); - } - *(undefined *)pOStack4->ramarray = 0xfe; - return; + __osPfsPifRam.ramarray[iStack16] = 0; + iStack16 += 1; + } while (iStack16 < 0x10); + __osPfsPifRam.pifstatus = 1; + pOStack4 = &__osPfsPifRam; + uStack12 = CONCAT31(0xff0100,cmd) | 0x300; + iStack16 = 0; + if (__osMaxControllers != '\0') { + do { + pOStack4->ramarray[0] = uStack12; + pOStack4->ramarray[1] = 0xffffffff; + iStack16 += 1; + pOStack4 = (OSPifRam *)(pOStack4->ramarray + 2); + } while ((longlong)iStack16 < (longlong)(ulonglong)__osMaxControllers); + } + *(undefined *)pOStack4->ramarray = 0xfe; + return; } @@ -15065,36 +15126,36 @@ void __osPfsRequestData(u8 cmd) void __osPfsGetInitData(u8 *pattern,OSContStatus *data) { - u32 uVar1; - byte local_11; - uint local_10; - undefined local_8; - undefined uStack7; - u8 uStack6; - OSPifRam *local_4; - - local_11 = 0; - local_4 = &__osPfsPifRam; - local_10 = 0; - if (__osMaxControllers != '\0') { - do { - uVar1 = local_4->ramarray[1]; - data->errno = (u8)((int)(local_4->ramarray[0] >> 8 & 0xc0) >> 4); - if (data->errno == '\0') { - uStack7 = (undefined)(uVar1 >> 0x10); - local_8 = (undefined)(uVar1 >> 0x18); - data->type = CONCAT11(uStack7,local_8); - uStack6 = (u8)(uVar1 >> 8); - data->status = uStack6; - local_11 |= (byte)(1 << (local_10 & 0x1f)); - } - local_10 += 1; - local_4 = (OSPifRam *)(local_4->ramarray + 2); - data = data + 1; - } while ((longlong)(int)local_10 < (longlong)(ulonglong)__osMaxControllers); - } - *pattern = local_11; - return; + u32 uVar1; + byte local_11; + uint local_10; + undefined local_8; + undefined uStack7; + u8 uStack6; + OSPifRam *local_4; + + local_11 = 0; + local_4 = &__osPfsPifRam; + local_10 = 0; + if (__osMaxControllers != '\0') { + do { + uVar1 = local_4->ramarray[1]; + data->errno = (u8)((int)(local_4->ramarray[0] >> 8 & 0xc0) >> 4); + if (data->errno == '\0') { + uStack7 = (undefined)(uVar1 >> 0x10); + local_8 = (undefined)(uVar1 >> 0x18); + data->type = CONCAT11(uStack7,local_8); + uStack6 = (u8)(uVar1 >> 8); + data->status = uStack6; + local_11 |= (byte)(1 << (local_10 & 0x1f)); + } + local_10 += 1; + local_4 = (OSPifRam *)(local_4->ramarray + 2); + data = data + 1; + } while ((longlong)(int)local_10 < (longlong)(ulonglong)__osMaxControllers); + } + *pattern = local_11; + return; } @@ -15102,10 +15163,10 @@ void __osPfsGetInitData(u8 *pattern,OSContStatus *data) void __osSiCreateAccessQueue(void) { - __osSiAccessQueueEnabled = 1; - osCreateMesgQueue(&__osSiAccessQueue,&siAccessBuf,1); - osSendMesg(&__osSiAccessQueue,NULL,0); - return; + __osSiAccessQueueEnabled = 1; + osCreateMesgQueue(&__osSiAccessQueue,&siAccessBuf,1); + osSendMesg(&__osSiAccessQueue,NULL,0); + return; } @@ -15113,13 +15174,13 @@ void __osSiCreateAccessQueue(void) void __osSiGetAccess(void) { - OSMesg dummyMesg; - - if (__osSiAccessQueueEnabled == 0) { - __osSiCreateAccessQueue(); - } - osRecvMesg(&__osSiAccessQueue,&dummyMesg,1); - return; + OSMesg dummyMesg; + + if (__osSiAccessQueueEnabled == 0) { + __osSiCreateAccessQueue(); + } + osRecvMesg(&__osSiAccessQueue,&dummyMesg,1); + return; } @@ -15127,8 +15188,8 @@ void __osSiGetAccess(void) void __osSiRelAccess(void) { - osSendMesg(&__osSiAccessQueue,NULL,0); - return; + osSendMesg(&__osSiAccessQueue,NULL,0); + return; } @@ -15138,28 +15199,28 @@ void __osSiRelAccess(void) s32 __osSiRawStartDma(s32 direction,void *dramAddr) { - int iVar1; - s32 ret; - - iVar1 = __osSiDeviceBusy(); - if (iVar1 == 0) { - if (direction == 1) { - osWritebackDCache(dramAddr,0x40); - } - _SI_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); - if (direction == 0) { - _SI_PIF_ADDR_RD64B_REG = 0x1fc007c0; - osInvalDCache(dramAddr,0x40); + int iVar1; + s32 ret; + + iVar1 = __osSiDeviceBusy(); + if (iVar1 == 0) { + if (direction == 1) { + osWritebackDCache(dramAddr,0x40); + } + _SI_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); + if (direction == 0) { + _SI_PIF_ADDR_RD64B_REG = 0x1fc007c0; + osInvalDCache(dramAddr,0x40); + } + else { + _SI_PIF_ADDR_WR64B_REG = 0x1fc007c0; + } + ret = 0; } else { - _SI_PIF_ADDR_WR64B_REG = 0x1fc007c0; + ret = -1; } - ret = 0; - } - else { - ret = -1; - } - return ret; + return ret; } @@ -15167,28 +15228,28 @@ s32 __osSiRawStartDma(s32 direction,void *dramAddr) u8 __osContAddressCrc(u16 addr) { - ulonglong uVar1; - ulonglong uVar2; - int i; - byte temp2; - byte temp; - - uVar2 = SEXT28((short)addr); - temp = 0; - i = 0; - do { - if ((temp & 0x10) == 0) { - temp2 = 0; - } - else { - temp2 = 0x15; - } - uVar1 = uVar2 & 0x400; - uVar2 = SEXT48((int)(((uint)uVar2 & 0xffff) << 1)); - i += 1; - temp = (temp << 1 | uVar1 != 0) ^ temp2; - } while (i < 0x10); - return (u8)(temp & 0x1f); + ulonglong uVar1; + ulonglong uVar2; + int i; + byte temp2; + byte temp; + + uVar2 = SEXT28((short)addr); + temp = 0; + i = 0; + do { + if ((temp & 0x10) == 0) { + temp2 = 0; + } + else { + temp2 = 0x15; + } + uVar1 = uVar2 & 0x400; + uVar2 = SEXT48((int)(((uint)uVar2 & 0xffff) << 1)); + i += 1; + temp = (temp << 1 | uVar1 != 0) ^ temp2; + } while (i < 0x10); + return (u8)(temp & 0x1f); } @@ -15196,33 +15257,33 @@ u8 __osContAddressCrc(u16 addr) u8 __osContDataCrc(u8 *data) { - uint uStack12; - int iStack8; - byte bStack2; - byte bStack1; - - bStack1 = 0; - iStack8 = 0; - do { - uStack12 = 7; + uint uStack12; + int iStack8; + byte bStack2; + byte bStack1; + + bStack1 = 0; + iStack8 = 0; do { - if ((bStack1 & 0x80) == 0) { - bStack2 = 0; - } - else { - bStack2 = 0x85; - } - bStack1 <<= 1; - if (iStack8 != 0x20) { - bStack1 |= ((ulonglong)*data & (longlong)(1 << (uStack12 & 0x1f))) != 0; - } - uStack12 -= 1; - bStack1 ^= bStack2; - } while (-1 < (int)uStack12); - data = data + 1; - iStack8 += 1; - } while (iStack8 < 0x21); - return (u8)bStack1; + uStack12 = 7; + do { + if ((bStack1 & 0x80) == 0) { + bStack2 = 0; + } + else { + bStack2 = 0x85; + } + bStack1 <<= 1; + if (iStack8 != 0x20) { + bStack1 |= ((ulonglong)*data & (longlong)(1 << (uStack12 & 0x1f))) != 0; + } + uStack12 -= 1; + bStack1 ^= bStack2; + } while (-1 < (int)uStack12); + data = data + 1; + iStack8 += 1; + } while (iStack8 < 0x21); + return (u8)bStack1; } @@ -15230,73 +15291,75 @@ u8 __osContDataCrc(u8 *data) s32 __osContRamWrite(OSMesgQueue *mq,int channel,u16 address,u8 *buffer,int force) { - bool bVar1; - u8 uVar2; - u32 *puVar3; - u32 *puVar4; - OSPifRam *pOVar5; - OSPifRam *pOVar6; - int retry; - undefined4 uStack52; - byte bStack14; - OSPifRam *pOStack12; - int iStack8; - s32 ret; - - ret = 0; - pOStack12 = &__osPfsPifRam; - retry = 2; - if (((force == 1) || (6 < address)) || (address == 0)) { - __osSiGetAccess(); - __osContLastCmd = '\x03'; - __osPackRamWriteData(channel,address,buffer); - ret = __osSiRawStartDma(1,&__osPfsPifRam); - osRecvMesg(mq,NULL,1); - do { - iStack8 = 0; - do { - __osPfsPifRam.ramarray[iStack8] = 0xff; - iStack8 += 1; - } while (iStack8 < 0x10); - __osPfsPifRam.pifstatus = 0; - ret = __osSiRawStartDma(0,&__osPfsPifRam); - osRecvMesg(mq,NULL,1); - pOStack12 = &__osPfsPifRam; - if ((channel != 0) && (iStack8 = 0, 0 < channel)) { - do { - iStack8 += 1; - pOStack12 = (OSPifRam *)((int)pOStack12->ramarray + 1); - } while (iStack8 < channel); - } - pOVar5 = pOStack12; - puVar3 = &uStack52; - do { - pOVar6 = (OSPifRam *)(pOVar5->ramarray + 3); - puVar4 = puVar3 + 3; - *puVar3 = pOVar5->ramarray[0]; - puVar3[1] = pOVar5->ramarray[1]; - puVar3[2] = pOVar5->ramarray[2]; - pOVar5 = pOVar6; - puVar3 = puVar4; - } while (pOVar6 != (OSPifRam *)(pOStack12->ramarray + 9)); - *puVar4 = pOVar6->ramarray[0]; - ret = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; - if ((ret == 0) && - (uVar2 = __osContDataCrc(buffer), (longlong)(char)uVar2 != (ulonglong)bStack14)) { - ret = __osPfsGetStatus(mq,channel); - if (ret != 0) { - __osSiRelAccess(); - return ret; - } - ret = 4; - } - } while ((ret == 4) && (bVar1 = -1 < retry, retry += -1, bVar1)); - __osSiRelAccess(); - } - else { + bool bVar1; + u32 *puVar2; + u8 uVar3; + u32 *puVar4; + u32 *puVar5; + OSPifRam *pOVar6; + OSPifRam *pOVar7; + int retry; + undefined4 uStack52; + byte bStack14; + OSPifRam *pOStack12; + int iStack8; + s32 ret; + ret = 0; - } - return ret; + pOStack12 = &__osPfsPifRam; + retry = 2; + if (((force == 1) || (6 < address)) || (address == 0)) { + __osSiGetAccess(); + __osContLastCmd = '\x03'; + __osPackRamWriteData(channel,address,buffer); + ret = __osSiRawStartDma(1,&__osPfsPifRam); + osRecvMesg(mq,NULL,1); + do { + iStack8 = 0; + do { + __osPfsPifRam.ramarray[iStack8] = 0xff; + iStack8 += 1; + } while (iStack8 < 0x10); + __osPfsPifRam.pifstatus = 0; + ret = __osSiRawStartDma(0,&__osPfsPifRam); + osRecvMesg(mq,NULL,1); + pOStack12 = &__osPfsPifRam; + if ((channel != 0) && (iStack8 = 0, 0 < channel)) { + do { + iStack8 += 1; + pOStack12 = (OSPifRam *)((int)pOStack12->ramarray + 1); + } while (iStack8 < channel); + } + puVar2 = pOStack12->ramarray; + pOVar6 = pOStack12; + puVar4 = &uStack52; + do { + pOVar7 = (OSPifRam *)(pOVar6->ramarray + 3); + puVar5 = puVar4 + 3; + *puVar4 = pOVar6->ramarray[0]; + puVar4[1] = pOVar6->ramarray[1]; + puVar4[2] = pOVar6->ramarray[2]; + pOVar6 = pOVar7; + puVar4 = puVar5; + } while (pOVar7 != (OSPifRam *)(puVar2 + 9)); + *puVar5 = pOVar7->ramarray[0]; + ret = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; + if ((ret == 0) && + (uVar3 = __osContDataCrc(buffer), (longlong)(char)uVar3 != (ulonglong)bStack14)) { + ret = __osPfsGetStatus(mq,channel); + if (ret != 0) { + __osSiRelAccess(); + return ret; + } + ret = 4; + } + } while ((ret == 4) && (bVar1 = -1 < retry, retry += -1, bVar1)); + __osSiRelAccess(); + } + else { + ret = 0; + } + return ret; } @@ -15304,60 +15367,64 @@ s32 __osContRamWrite(OSMesgQueue *mq,int channel,u16 address,u8 *buffer,int forc void __osPackRamWriteData(int channel,u16 address,u8 *buffer) { - u32 *puVar1; - OSPifRam *pOVar2; - u32 *puVar3; - u32 *puVar4; - u8 *puStackX8; - int iStack48; - undefined uStack44; - undefined uStack43; - undefined uStack42; - undefined uStack41; - u8 auStack38 [30]; - u32 uStack8; - OSPifRam *pOStack4; - - pOStack4 = &__osPfsPifRam; - iStack48 = 0; - do { - __osPfsPifRam.ramarray[iStack48] = 0; - iStack48 += 1; - } while (iStack48 < 0x10); - __osPfsPifRam.pifstatus = 1; - uStack44 = 0xff; - uStack43 = 0x23; - uStack42 = 1; - uStack41 = 3; - __osContAddressCrc(address); - iStack48 = 0; - puStackX8 = buffer; - do { - auStack38[iStack48] = *puStackX8; - iStack48 += 1; - puStackX8 = puStackX8 + 1; - } while (iStack48 < 0x20); - if ((channel != 0) && (iStack48 = 0, 0 < channel)) { + u32 *puVar1; + u8 uVar2; + OSPifRam *pOVar3; + u32 *puVar4; + u32 *puVar5; + u8 *puStackX8; + int iStack48; + undefined uStack44; + undefined uStack43; + undefined uStack42; + undefined uStack41; + ushort uStack40; + u8 auStack38 [30]; + undefined4 uStack8; + OSPifRam *pOStack4; + + pOStack4 = &__osPfsPifRam; + iStack48 = 0; do { - *(undefined *)pOStack4->ramarray = 0; - iStack48 += 1; - pOStack4 = (OSPifRam *)((int)pOStack4->ramarray + 1); - } while (iStack48 < channel); - } - puVar3 = (u32 *)&uStack44; - pOVar2 = pOStack4; - do { - puVar4 = puVar3 + 3; - puVar1 = pOVar2->ramarray; - pOVar2->ramarray[0] = *puVar3; - pOVar2->ramarray[1] = puVar3[1]; - pOVar2->ramarray[2] = puVar3[2]; - puVar3 = puVar4; - pOVar2 = (OSPifRam *)(puVar1 + 3); - } while (puVar4 != &uStack8); - ((OSPifRam *)(puVar1 + 3))->ramarray[0] = *puVar4; - *(undefined *)(pOStack4->ramarray + 10) = 0xfe; - return; + __osPfsPifRam.ramarray[iStack48] = 0; + iStack48 += 1; + } while (iStack48 < 0x10); + __osPfsPifRam.pifstatus = 1; + uStack44 = 0xff; + uStack43 = 0x23; + uStack42 = 1; + uStack41 = 3; + uVar2 = __osContAddressCrc(address); + uStack8._2_1_ = 0xff; + uStack40 = (short)(char)uVar2 | address << 5; + iStack48 = 0; + puStackX8 = buffer; + do { + auStack38[iStack48] = *puStackX8; + iStack48 += 1; + puStackX8 = puStackX8 + 1; + } while (iStack48 < 0x20); + if ((channel != 0) && (iStack48 = 0, 0 < channel)) { + do { + *(undefined *)pOStack4->ramarray = 0; + iStack48 += 1; + pOStack4 = (OSPifRam *)((int)pOStack4->ramarray + 1); + } while (iStack48 < channel); + } + puVar4 = (u32 *)&uStack44; + pOVar3 = pOStack4; + do { + puVar5 = puVar4 + 3; + puVar1 = pOVar3->ramarray; + pOVar3->ramarray[0] = *puVar4; + pOVar3->ramarray[1] = puVar4[1]; + pOVar3->ramarray[2] = puVar4[2]; + puVar4 = puVar5; + pOVar3 = (OSPifRam *)(puVar1 + 3); + } while (puVar5 != &uStack8); + ((OSPifRam *)(puVar1 + 3))->ramarray[0] = *puVar5; + *(undefined *)(pOStack4->ramarray + 10) = 0xfe; + return; } @@ -15365,81 +15432,83 @@ void __osPackRamWriteData(int channel,u16 address,u8 *buffer) s32 __osContRamRead(OSMesgQueue *mq,int channel,u16 address,u8 *buffer) { - bool bVar1; - u8 uVar2; - u32 *puVar3; - u32 *puVar4; - OSPifRam *pOVar5; - OSPifRam *pOVar6; - u8 *puStackX12; - int retry; - undefined4 uStack52; - u8 auStack46 [32]; - u8 uStack14; - OSPifRam *pOStack12; - int iStack8; - s32 ret; - - ret = 0; - pOStack12 = &__osPfsPifRam; - retry = 2; - __osSiGetAccess(); - __osContLastCmd = '\x02'; - __osPackRamReadData(channel,address); - ret = __osSiRawStartDma(1,&__osPfsPifRam); - osRecvMesg(mq,NULL,1); - puStackX12 = buffer; - do { - iStack8 = 0; - do { - __osPfsPifRam.ramarray[iStack8] = 0xff; - iStack8 += 1; - } while (iStack8 < 0x10); - __osPfsPifRam.pifstatus = 0; - ret = __osSiRawStartDma(0,&__osPfsPifRam); - osRecvMesg(mq,NULL,1); + bool bVar1; + u32 *puVar2; + u8 uVar3; + u32 *puVar4; + u32 *puVar5; + OSPifRam *pOVar6; + OSPifRam *pOVar7; + u8 *puStackX12; + int retry; + undefined4 uStack52; + u8 auStack46 [32]; + u8 uStack14; + OSPifRam *pOStack12; + int iStack8; + s32 ret; + + ret = 0; pOStack12 = &__osPfsPifRam; - if ((channel != 0) && (iStack8 = 0, 0 < channel)) { - do { - iStack8 += 1; - pOStack12 = (OSPifRam *)((int)pOStack12->ramarray + 1); - } while (iStack8 < channel); - } - pOVar5 = pOStack12; - puVar3 = &uStack52; + retry = 2; + __osSiGetAccess(); + __osContLastCmd = '\x02'; + __osPackRamReadData(channel,address); + ret = __osSiRawStartDma(1,&__osPfsPifRam); + osRecvMesg(mq,NULL,1); + puStackX12 = buffer; do { - pOVar6 = (OSPifRam *)(pOVar5->ramarray + 3); - puVar4 = puVar3 + 3; - *puVar3 = pOVar5->ramarray[0]; - puVar3[1] = pOVar5->ramarray[1]; - puVar3[2] = pOVar5->ramarray[2]; - pOVar5 = pOVar6; - puVar3 = puVar4; - } while (pOVar6 != (OSPifRam *)(pOStack12->ramarray + 9)); - *puVar4 = pOVar6->ramarray[0]; - ret = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; - if (ret == 0) { - uVar2 = __osContDataCrc(auStack46); - if (uVar2 == uStack14) { iStack8 = 0; do { - *puStackX12 = auStack46[iStack8]; - iStack8 += 1; - puStackX12 = puStackX12 + 1; - } while (iStack8 < 0x20); - } - else { - ret = __osPfsGetStatus(mq,channel); - if (ret != 0) { - __osSiRelAccess(); - return ret; + __osPfsPifRam.ramarray[iStack8] = 0xff; + iStack8 += 1; + } while (iStack8 < 0x10); + __osPfsPifRam.pifstatus = 0; + ret = __osSiRawStartDma(0,&__osPfsPifRam); + osRecvMesg(mq,NULL,1); + pOStack12 = &__osPfsPifRam; + if ((channel != 0) && (iStack8 = 0, 0 < channel)) { + do { + iStack8 += 1; + pOStack12 = (OSPifRam *)((int)pOStack12->ramarray + 1); + } while (iStack8 < channel); } - ret = 4; - } - } - } while ((ret == 4) && (bVar1 = -1 < retry, retry += -1, bVar1)); - __osSiRelAccess(); - return ret; + puVar2 = pOStack12->ramarray; + pOVar6 = pOStack12; + puVar4 = &uStack52; + do { + pOVar7 = (OSPifRam *)(pOVar6->ramarray + 3); + puVar5 = puVar4 + 3; + *puVar4 = pOVar6->ramarray[0]; + puVar4[1] = pOVar6->ramarray[1]; + puVar4[2] = pOVar6->ramarray[2]; + pOVar6 = pOVar7; + puVar4 = puVar5; + } while (pOVar7 != (OSPifRam *)(puVar2 + 9)); + *puVar5 = pOVar7->ramarray[0]; + ret = (int)((uint)uStack52._2_1_ & 0xc0) >> 4; + if (ret == 0) { + uVar3 = __osContDataCrc(auStack46); + if (uVar3 == uStack14) { + iStack8 = 0; + do { + *puStackX12 = auStack46[iStack8]; + iStack8 += 1; + puStackX12 = puStackX12 + 1; + } while (iStack8 < 0x20); + } + else { + ret = __osPfsGetStatus(mq,channel); + if (ret != 0) { + __osSiRelAccess(); + return ret; + } + ret = 4; + } + } + } while ((ret == 4) && (bVar1 = -1 < retry, retry += -1, bVar1)); + __osSiRelAccess(); + return ret; } @@ -15447,57 +15516,61 @@ s32 __osContRamRead(OSMesgQueue *mq,int channel,u16 address,u8 *buffer) void __osPackRamReadData(int channel,u16 address) { - u32 *puVar1; - OSPifRam *pOVar2; - u32 *puVar3; - u32 *puVar4; - int iStack48; - undefined uStack44; - undefined uStack43; - undefined uStack42; - undefined uStack41; - undefined auStack38 [30]; - u32 uStack8; - OSPifRam *pOStack4; - - pOStack4 = &__osPfsPifRam; - iStack48 = 0; - do { - __osPfsPifRam.ramarray[iStack48] = 0; - iStack48 += 1; - } while (iStack48 < 0x10); - __osPfsPifRam.pifstatus = 1; - uStack44 = 0xff; - uStack43 = 3; - uStack42 = 0x21; - uStack41 = 2; - __osContAddressCrc(address); - iStack48 = 0; - do { - auStack38[iStack48] = 0xff; - iStack48 += 1; - } while (iStack48 < 0x20); - if ((channel != 0) && (iStack48 = 0, 0 < channel)) { + u32 *puVar1; + u8 uVar2; + OSPifRam *pOVar3; + u32 *puVar4; + u32 *puVar5; + int iStack48; + undefined uStack44; + undefined uStack43; + undefined uStack42; + undefined uStack41; + ushort uStack40; + undefined auStack38 [30]; + undefined4 uStack8; + OSPifRam *pOStack4; + + pOStack4 = &__osPfsPifRam; + iStack48 = 0; do { - *(undefined *)pOStack4->ramarray = 0; - iStack48 += 1; - pOStack4 = (OSPifRam *)((int)pOStack4->ramarray + 1); - } while (iStack48 < channel); - } - puVar3 = (u32 *)&uStack44; - pOVar2 = pOStack4; - do { - puVar4 = puVar3 + 3; - puVar1 = pOVar2->ramarray; - pOVar2->ramarray[0] = *puVar3; - pOVar2->ramarray[1] = puVar3[1]; - pOVar2->ramarray[2] = puVar3[2]; - puVar3 = puVar4; - pOVar2 = (OSPifRam *)(puVar1 + 3); - } while (puVar4 != &uStack8); - ((OSPifRam *)(puVar1 + 3))->ramarray[0] = *puVar4; - *(undefined *)(pOStack4->ramarray + 10) = 0xfe; - return; + __osPfsPifRam.ramarray[iStack48] = 0; + iStack48 += 1; + } while (iStack48 < 0x10); + __osPfsPifRam.pifstatus = 1; + uStack44 = 0xff; + uStack43 = 3; + uStack42 = 0x21; + uStack41 = 2; + uVar2 = __osContAddressCrc(address); + uStack8._2_1_ = 0xff; + uStack40 = (short)(char)uVar2 | address << 5; + iStack48 = 0; + do { + auStack38[iStack48] = 0xff; + iStack48 += 1; + } while (iStack48 < 0x20); + if ((channel != 0) && (iStack48 = 0, 0 < channel)) { + do { + *(undefined *)pOStack4->ramarray = 0; + iStack48 += 1; + pOStack4 = (OSPifRam *)((int)pOStack4->ramarray + 1); + } while (iStack48 < channel); + } + puVar4 = (u32 *)&uStack44; + pOVar3 = pOStack4; + do { + puVar5 = puVar4 + 3; + puVar1 = pOVar3->ramarray; + pOVar3->ramarray[0] = *puVar4; + pOVar3->ramarray[1] = puVar4[1]; + pOVar3->ramarray[2] = puVar4[2]; + puVar4 = puVar5; + pOVar3 = (OSPifRam *)(puVar1 + 3); + } while (puVar5 != &uStack8); + ((OSPifRam *)(puVar1 + 3))->ramarray[0] = *puVar5; + *(undefined *)(pOStack4->ramarray + 10) = 0xfe; + return; } @@ -15507,54 +15580,54 @@ void __osPackRamReadData(int channel,u16 address) void guAlignF(float mf [4] [4],float a,float x,float y,float z) { - float in_a2_lo; - float in_a3_lo; - undefined4 unaff_s0_lo; - undefined4 unaff_retaddr; - float fVar1; - float fVar2; - float fVar3; - float fVar4; - undefined4 uStackX0; - float fStackX8; - float fStackX12; - undefined8 in_stack_ffffffe0; - undefined4 in_stack_fffffff0; - - flt_CODE_bss_80067DD0 = flt_800297F0; - fStackX8 = in_a2_lo; - fStackX12 = in_a3_lo; - guNormalize(&fStackX8,&fStackX12,(float *)mf); - z = z * flt_CODE_bss_80067DD0; - fVar1 = sinf(z); - fVar2 = cosf(z); - fVar3 = sqrtf(fStackX8 * fStackX8 + mf[0][0] * mf[0][0]); - guMtxIdentF((float [4] [4]) - CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84( + float in_a2_lo; + float in_a3_lo; + undefined4 unaff_s0_lo; + undefined4 unaff_retaddr; + float fVar1; + float fVar2; + float fVar3; + float fVar4; + undefined4 uStackX0; + float fStackX8; + float fStackX12; + undefined8 in_stack_ffffffe0; + undefined4 in_stack_fffffff0; + + flt_CODE_bss_80067DD0 = flt_800297F0; + fStackX8 = in_a2_lo; + fStackX12 = in_a3_lo; + guNormalize(&fStackX8,&fStackX12,(float *)mf); + z = z * flt_CODE_bss_80067DD0; + fVar1 = sinf(z); + fVar2 = cosf(z); + fVar3 = sqrtf(fStackX8 * fStackX8 + mf[0][0] * mf[0][0]); + guMtxIdentF((float [4] [4]) + CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84( in_stack_ffffffe0,unaff_s0_lo),unaff_retaddr), in_stack_fffffff0),fVar3),fVar2),fVar1), - CONCAT2012(CONCAT164(CONCAT124(CONCAT84(CONCAT44(uStackX0,z),fStackX8), - fStackX12),mf[0][0]),mf[0]._4_12_))); - if (fVar3 != 0.00000000) { - fVar4 = 1.00000000 / fVar3; - *(float *)y = (-mf[0][0] * fVar2 - fVar1 * fStackX12 * fStackX8) * fVar4; - *(float *)((int)y + 0x10) = (mf[0][0] * fVar1 - fVar2 * fStackX12 * fStackX8) * fVar4; - *(undefined4 *)((int)y + 0x30) = 0; - *(float *)((int)y + 0x20) = -fStackX8; - *(float *)((int)y + 4) = fVar1 * fVar3; - *(float *)((int)y + 0x14) = fVar2 * fVar3; - *(undefined4 *)((int)y + 0x34) = 0; - *(float *)((int)y + 0x24) = -fStackX12; - *(float *)((int)y + 8) = (fVar2 * fStackX8 - fVar1 * fStackX12 * mf[0][0]) * fVar4; - *(float *)((int)y + 0x18) = (-fVar1 * fStackX8 - fVar2 * fStackX12 * mf[0][0]) * fVar4; - *(undefined4 *)((int)y + 0x38) = 0; - *(undefined4 *)((int)y + 0xc) = 0; - *(undefined4 *)((int)y + 0x1c) = 0; - *(float *)((int)y + 0x28) = -mf[0][0]; - *(undefined4 *)((int)y + 0x2c) = 0; - *(undefined4 *)((int)y + 0x3c) = 0x3f800000; - } - return; + CONCAT2012(CONCAT164(CONCAT124(CONCAT84(CONCAT44(uStackX0,z),fStackX8), + fStackX12),mf[0][0]),mf[0]._4_12_))); + if (fVar3 != 0.00000000) { + fVar4 = 1.00000000 / fVar3; + *(float *)y = (-mf[0][0] * fVar2 - fVar1 * fStackX12 * fStackX8) * fVar4; + *(float *)((int)y + 0x10) = (mf[0][0] * fVar1 - fVar2 * fStackX12 * fStackX8) * fVar4; + *(undefined4 *)((int)y + 0x30) = 0; + *(float *)((int)y + 0x20) = -fStackX8; + *(float *)((int)y + 4) = fVar1 * fVar3; + *(float *)((int)y + 0x14) = fVar2 * fVar3; + *(undefined4 *)((int)y + 0x34) = 0; + *(float *)((int)y + 0x24) = -fStackX12; + *(float *)((int)y + 8) = (fVar2 * fStackX8 - fVar1 * fStackX12 * mf[0][0]) * fVar4; + *(float *)((int)y + 0x18) = (-fVar1 * fStackX8 - fVar2 * fStackX12 * mf[0][0]) * fVar4; + *(undefined4 *)((int)y + 0x38) = 0; + *(undefined4 *)((int)y + 0xc) = 0; + *(undefined4 *)((int)y + 0x1c) = 0; + *(float *)((int)y + 0x28) = -mf[0][0]; + *(undefined4 *)((int)y + 0x2c) = 0; + *(undefined4 *)((int)y + 0x3c) = 0x3f800000; + } + return; } @@ -15562,18 +15635,18 @@ void guAlignF(float mf [4] [4],float a,float x,float y,float z) void guAlign(Mtx *m,float a,float x,float y,float z) { - undefined4 local_44; - undefined4 local_50; - undefined8 in_stack_ffffffb4; - undefined in_stack_ffffffc0 [48]; - - guAlignF((float [4] [4]) - CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0),y, - z,(float)&stack0xffffffc0,y); - guMtxF2L((float [4] [4]) - CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0), - (Mtx *)&stack0xffffffc0); - return; + undefined4 local_44; + undefined4 local_50; + undefined8 in_stack_ffffffb4; + undefined in_stack_ffffffc0 [48]; + + guAlignF((float [4] [4]) + CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0), + y,z,(float)&stack0xffffffc0,y); + guMtxF2L((float [4] [4]) + CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0), + (Mtx *)&stack0xffffffc0); + return; } @@ -15583,59 +15656,59 @@ void guAlign(Mtx *m,float a,float x,float y,float z) void guOrthoF(float mf [4] [4],float l,float r,float b,float t,float n,float f,float scale) { - float *pfVar1; - int iVar2; - undefined4 unaff_retaddr; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - undefined4 in_stack_fffffff8; - - guMtxIdentF((float [4] [4]) - CONCAT856(CONCAT44(in_stack_fffffff8,unaff_retaddr), - CONCAT3224(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84( + float *pfVar1; + int iVar2; + undefined4 unaff_retaddr; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + undefined4 in_stack_fffffff8; + + guMtxIdentF((float [4] [4]) + CONCAT856(CONCAT44(in_stack_fffffff8,unaff_retaddr), + CONCAT3224(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84( CONCAT44(b,t),n),f),mf[0][0]),mf[0][1]),mf[0][2]), - mf[0][3]),mf._16_24_))); - *(float *)b = 2.00000000 / (n - t); - *(float *)((int)b + 0x28) = -2.00000000 / (mf[0][2] - mf[0][1]); - *(float *)((int)b + 0x14) = 2.00000000 / (mf[0][0] - f); - *(float *)((int)b + 0x30) = -(n + t) / (n - t); - *(float *)((int)b + 0x34) = -(mf[0][0] + f) / (mf[0][0] - f); - *(undefined4 *)((int)b + 0x3c) = 0x3f800000; - *(float *)((int)b + 0x38) = -(mf[0][2] + mf[0][1]) / (mf[0][2] - mf[0][1]); - iVar2 = 1; - fVar9 = *(float *)((int)b + 4); - fVar6 = *(float *)b * mf[0][3]; - fVar7 = *(float *)((int)b + 8); - fVar8 = *(float *)((int)b + 0xc); - pfVar1 = (float *)b; - if (true) { - do { - fVar5 = fVar9 * mf[0][3]; - fVar9 = pfVar1[5]; - fVar4 = fVar7 * mf[0][3]; - fVar7 = pfVar1[6]; - iVar2 += 1; - fVar3 = fVar8 * mf[0][3]; - fVar8 = pfVar1[7]; - *pfVar1 = fVar6; - fVar6 = pfVar1[4] * mf[0][3]; - pfVar1[1] = fVar5; - pfVar1[2] = fVar4; - b = (float)(pfVar1 + 4); - pfVar1[3] = fVar3; - pfVar1 = (float *)b; - } while (iVar2 != 4); - } - *(float *)b = fVar6; - ((float *)b)[1] = fVar9 * mf[0][3]; - ((float *)b)[2] = fVar7 * mf[0][3]; - ((float *)b)[3] = fVar8 * mf[0][3]; - return; + mf[0][3]),mf._16_24_))); + *(float *)b = 2.00000000 / (n - t); + *(float *)((int)b + 0x28) = -2.00000000 / (mf[0][2] - mf[0][1]); + *(float *)((int)b + 0x14) = 2.00000000 / (mf[0][0] - f); + *(float *)((int)b + 0x30) = -(n + t) / (n - t); + *(float *)((int)b + 0x34) = -(mf[0][0] + f) / (mf[0][0] - f); + *(undefined4 *)((int)b + 0x3c) = 0x3f800000; + *(float *)((int)b + 0x38) = -(mf[0][2] + mf[0][1]) / (mf[0][2] - mf[0][1]); + iVar2 = 1; + fVar9 = *(float *)((int)b + 4); + fVar6 = *(float *)b * mf[0][3]; + fVar7 = *(float *)((int)b + 8); + fVar8 = *(float *)((int)b + 0xc); + pfVar1 = (float *)b; + if (true) { + do { + fVar5 = fVar9 * mf[0][3]; + fVar9 = pfVar1[5]; + fVar4 = fVar7 * mf[0][3]; + fVar7 = pfVar1[6]; + iVar2 += 1; + fVar3 = fVar8 * mf[0][3]; + fVar8 = pfVar1[7]; + *pfVar1 = fVar6; + fVar6 = pfVar1[4] * mf[0][3]; + pfVar1[1] = fVar5; + pfVar1[2] = fVar4; + b = (float)(pfVar1 + 4); + pfVar1[3] = fVar3; + pfVar1 = (float *)b; + } while (iVar2 != 4); + } + *(float *)b = fVar6; + ((float *)b)[1] = fVar9 * mf[0][3]; + ((float *)b)[2] = fVar7 * mf[0][3]; + ((float *)b)[3] = fVar8 * mf[0][3]; + return; } @@ -15643,23 +15716,23 @@ void guOrthoF(float mf [4] [4],float l,float r,float b,float t,float n,float f,f void guOrtho(Mtx *m,float l,float r,float b,float t,float n,float f,float scale) { - undefined4 unaff_retaddr; - undefined4 in_stack_00000018; - undefined4 in_stack_0000001c; - undefined4 in_stack_ffffffb8; - undefined in_stack_ffffffc0 [40]; - float scale_00; - - guOrthoF((float [4] [4]) - CONCAT2440(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(f,scale),in_stack_00000018), - in_stack_0000001c),in_stack_ffffffb8), - unaff_retaddr),in_stack_ffffffc0),b,t,(float)&stack0xffffffc0,b,t,n, - scale_00); - guMtxF2L((float [4] [4]) - CONCAT2440(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(f,scale),in_stack_00000018), - in_stack_0000001c),in_stack_ffffffb8), - unaff_retaddr),in_stack_ffffffc0),(Mtx *)&stack0xffffffc0); - return; + undefined4 unaff_retaddr; + undefined4 in_stack_00000018; + undefined4 in_stack_0000001c; + undefined4 in_stack_ffffffb8; + undefined in_stack_ffffffc0 [40]; + float in_stack_ffffffe8; + + guOrthoF((float [4] [4]) + CONCAT2440(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(f,scale),in_stack_00000018), + in_stack_0000001c),in_stack_ffffffb8), + unaff_retaddr),in_stack_ffffffc0),b,t,(float)&stack0xffffffc0,b,t, + n,in_stack_ffffffe8); + guMtxF2L((float [4] [4]) + CONCAT2440(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(f,scale),in_stack_00000018), + in_stack_0000001c),in_stack_ffffffb8), + unaff_retaddr),in_stack_ffffffc0),(Mtx *)&stack0xffffffc0); + return; } @@ -15667,10 +15740,10 @@ void guOrtho(Mtx *m,float l,float r,float b,float t,float n,float f,float scale) short coss(ushort x) { - short sVar1; - - sVar1 = sins(x + 0x4000); - return sVar1; + short sVar1; + + sVar1 = sins(x + 0x4000); + return sVar1; } @@ -15678,20 +15751,20 @@ short coss(ushort x) short sins(ushort x) { - word wVar1; - uint uVar2; - - uVar2 = ((int)(short)x & 0xffffU) >> 4; - if ((uVar2 & 0x400) == 0) { - wVar1 = sin_table[uVar2 & 0x3ff]; - } - else { - wVar1 = sin_table[(uVar2 & 0x3ff) * 0x7fffffff + 0x3ff]; - } - if ((uVar2 & 0x800) != 0) { - return (short)((uint)((int)(short)wVar1 * -0x10000) >> 0x10); - } - return (short)wVar1; + word wVar1; + uint uVar2; + + uVar2 = ((int)(short)x & 0xffffU) >> 4; + if ((uVar2 & 0x400) == 0) { + wVar1 = sin_table[uVar2 & 0x3ff]; + } + else { + wVar1 = sin_table[(uVar2 & 0x3ff) * 0x7fffffff + 0x3ff]; + } + if ((uVar2 & 0x800) != 0) { + return (short)((uint)((int)(short)wVar1 * -0x10000) >> 0x10); + } + return (short)wVar1; } @@ -15701,20 +15774,20 @@ short sins(ushort x) void guTranslateF(float mf_4__4_,float x,float y,float z) { - undefined4 in_a2_lo; - undefined4 in_a3_lo; - undefined4 unaff_retaddr; - undefined in_stack_00000010 [40]; - undefined4 in_stack_fffffff8; - - guMtxIdentF((float [4] [4]) - CONCAT856(CONCAT44(in_stack_fffffff8,unaff_retaddr), - CONCAT1640(CONCAT124(CONCAT84(CONCAT44(y,z),in_a2_lo),in_a3_lo), - in_stack_00000010))); - *(float *)((int)y + 0x30) = z; - *(undefined4 *)((int)y + 0x34) = in_a2_lo; - *(undefined4 *)((int)y + 0x38) = in_a3_lo; - return; + undefined4 in_a2_lo; + undefined4 in_a3_lo; + undefined4 unaff_retaddr; + undefined in_stack_00000010 [40]; + undefined4 in_stack_fffffff8; + + guMtxIdentF((float [4] [4]) + CONCAT856(CONCAT44(in_stack_fffffff8,unaff_retaddr), + CONCAT1640(CONCAT124(CONCAT84(CONCAT44(y,z),in_a2_lo),in_a3_lo), + in_stack_00000010))); + *(float *)((int)y + 0x30) = z; + *(undefined4 *)((int)y + 0x34) = in_a2_lo; + *(undefined4 *)((int)y + 0x38) = in_a3_lo; + return; } @@ -15722,17 +15795,17 @@ void guTranslateF(float mf_4__4_,float x,float y,float z) void guTranslate(Mtx *m,float x,float y,float z) { - undefined4 unaff_retaddr; - undefined4 in_stack_ffffffa8; - undefined in_stack_ffffffb0 [56]; - float fStack16; - - guMtxIdentF((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffa8,unaff_retaddr),in_stack_ffffffb0) - ); - fStack16 = z; - guMtxF2L((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffa8,unaff_retaddr),in_stack_ffffffb0), - (Mtx *)&stack0xffffffc0); - return; + undefined4 unaff_retaddr; + undefined4 in_stack_ffffffa8; + undefined in_stack_ffffffb0 [56]; + float fStack16; + + guMtxIdentF((float [4] [4]) + CONCAT856(CONCAT44(in_stack_ffffffa8,unaff_retaddr),in_stack_ffffffb0)); + fStack16 = z; + guMtxF2L((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffa8,unaff_retaddr),in_stack_ffffffb0), + (Mtx *)&stack0xffffffc0); + return; } @@ -15743,100 +15816,100 @@ void guTranslate(Mtx *m,float x,float y,float z) int _bcmp(void *__s1,void *__s2,size_t __n) { - char cVar1; - char cVar2; - uint uVar3; - int *piVar4; - int *piVar5; - uint in_v1_lo; - uint uVar6; - uint *puVar7; - uint uVar8; - - if (0xf < (int)__n) { - if ((((uint)__s1 ^ (uint)__s2) & 3) == 0) { - uVar8 = -(int)__s1 & 3; - if (uVar8 != 0) { - uVar6 = (uint)__s1 & 3; - piVar4 = (int *)((int)__s1 - uVar6); - uVar3 = (uint)__s2 & 3; - piVar5 = (int *)((int)__s2 - uVar3); - __s1 = (void *)((int)__s1 + uVar8); - __s2 = (void *)((int)__s2 + uVar8); - if ((*piVar4 << uVar6 * 8 | in_v1_lo & 0xffffffffU >> (4 - uVar6) * 8) != - (*piVar5 << uVar3 * 8 | in_v1_lo & 0xffffffffU >> (4 - uVar3) * 8)) { - return 1; + char cVar1; + char cVar2; + uint uVar3; + int *piVar4; + int *piVar5; + uint in_v1_lo; + uint uVar6; + uint *puVar7; + uint uVar8; + + if (0xf < (int)__n) { + if ((((uint)__s1 ^ (uint)__s2) & 3) == 0) { + uVar8 = -(int)__s1 & 3; + if (uVar8 != 0) { + uVar6 = (uint)__s1 & 3; + piVar4 = (int *)((int)__s1 - uVar6); + uVar3 = (uint)__s2 & 3; + piVar5 = (int *)((int)__s2 - uVar3); + __s1 = (void *)((int)__s1 + uVar8); + __s2 = (void *)((int)__s2 + uVar8); + if ((*piVar4 << uVar6 * 8 | in_v1_lo & 0xffffffffU >> (4 - uVar6) * 8) != + (*piVar5 << uVar3 * 8 | in_v1_lo & 0xffffffffU >> (4 - uVar3) * 8)) { + return 1; + } + } + uVar6 = __n - uVar8 & 0xfffffffc; + __n = (__n - uVar8) - uVar6; + if (uVar6 != 0) { + puVar7 = (uint *)(uVar6 + (int)__s1); + uVar8 = *(uint *)__s1; + while( true ) { + uVar6 = *(uint *)__s2; + __s1 = (uint *)__s1 + 1; + __s2 = (uint *)__s2 + 1; + if (uVar8 != uVar6) { + return 1; + } + if ((uint *)__s1 == puVar7) break; + uVar8 = *(uint *)__s1; + } + } } - } - uVar6 = __n - uVar8 & 0xfffffffc; - __n = (__n - uVar8) - uVar6; - if (uVar6 != 0) { - puVar7 = (uint *)(uVar6 + (int)__s1); - uVar8 = *(uint *)__s1; - while( true ) { - uVar6 = *(uint *)__s2; - __s1 = (uint *)__s1 + 1; - __s2 = (uint *)__s2 + 1; - if (uVar8 != uVar6) { - return 1; - } - if ((uint *)__s1 == puVar7) break; - uVar8 = *(uint *)__s1; + else { + uVar8 = -(int)__s2 & 3; + if (uVar8 != 0) { + puVar7 = (uint *)(uVar8 + (int)__s1); + cVar1 = *(char *)__s1; + while( true ) { + cVar2 = *(char *)__s2; + __s1 = (void *)((int)__s1 + 1); + __s2 = (void *)((int)__s2 + 1); + if (cVar1 != cVar2) { + return 1; + } + if ((uint *)__s1 == puVar7) break; + cVar1 = *(char *)__s1; + } + } + uVar6 = __n - uVar8 & 0xfffffffc; + __n = (__n - uVar8) - uVar6; + if (uVar6 != 0) { + puVar7 = (uint *)(uVar6 + (int)__s1); + uVar8 = *(uint *)__s1; + while( true ) { + uVar6 = *(uint *)__s2; + __s1 = (uint *)__s1 + 1; + __s2 = (uint *)__s2 + 1; + if (uVar8 != uVar6) { + return 1; + } + if ((uint *)__s1 == puVar7) break; + uVar6 = (uint)__s1 & 3; + uVar8 = *(uint *)((int)__s1 - uVar6) << uVar6 * 8 | + uVar8 & 0xffffffffU >> (4 - uVar6) * 8; + } + } } - } } - else { - uVar8 = -(int)__s2 & 3; - if (uVar8 != 0) { - puVar7 = (uint *)(uVar8 + (int)__s1); + puVar7 = (uint *)(__n + (int)__s1); + if (0 < (int)__n) { cVar1 = *(char *)__s1; while( true ) { - cVar2 = *(char *)__s2; - __s1 = (void *)((int)__s1 + 1); - __s2 = (void *)((int)__s2 + 1); - if (cVar1 != cVar2) { - return 1; - } - if ((uint *)__s1 == puVar7) break; - cVar1 = *(char *)__s1; + cVar2 = *(char *)__s2; + __s1 = (void *)((int)__s1 + 1); + __s2 = (void *)((int)__s2 + 1); + if (cVar1 != cVar2) { + return 1; + } + if ((uint *)__s1 == puVar7) break; + cVar1 = *(char *)__s1; } - } - uVar6 = __n - uVar8 & 0xfffffffc; - __n = (__n - uVar8) - uVar6; - if (uVar6 != 0) { - puVar7 = (uint *)(uVar6 + (int)__s1); - uVar8 = *(uint *)__s1; - while( true ) { - uVar6 = *(uint *)__s2; - __s1 = (uint *)__s1 + 1; - __s2 = (uint *)__s2 + 1; - if (uVar8 != uVar6) { - return 1; - } - if ((uint *)__s1 == puVar7) break; - uVar6 = (uint)__s1 & 3; - uVar8 = *(uint *)((int)__s1 - uVar6) << uVar6 * 8 | uVar8 & 0xffffffffU >> (4 - uVar6) * 8 - ; - } - } - } - } - puVar7 = (uint *)(__n + (int)__s1); - if (0 < (int)__n) { - cVar1 = *(char *)__s1; - while( true ) { - cVar2 = *(char *)__s2; - __s1 = (void *)((int)__s1 + 1); - __s2 = (void *)((int)__s2 + 1); - if (cVar1 != cVar2) { - return 1; - } - if ((uint *)__s1 == puVar7) break; - cVar1 = *(char *)__s1; + return 0; } return 0; - } - return 0; } @@ -15846,21 +15919,21 @@ int _bcmp(void *__s1,void *__s2,size_t __n) void guScaleF(float mf_4__4_,float x,float y,float z) { - undefined4 in_a2_lo; - undefined4 in_a3_lo; - undefined4 unaff_retaddr; - undefined in_stack_00000010 [40]; - undefined4 in_stack_fffffff8; - - guMtxIdentF((float [4] [4]) - CONCAT856(CONCAT44(in_stack_fffffff8,unaff_retaddr), - CONCAT1640(CONCAT124(CONCAT84(CONCAT44(y,z),in_a2_lo),in_a3_lo), - in_stack_00000010))); - *(float *)y = z; - *(undefined4 *)((int)y + 0x14) = in_a2_lo; - *(undefined4 *)((int)y + 0x3c) = 0x3f800000; - *(undefined4 *)((int)y + 0x28) = in_a3_lo; - return; + undefined4 in_a2_lo; + undefined4 in_a3_lo; + undefined4 unaff_retaddr; + undefined in_stack_00000010 [40]; + undefined4 in_stack_fffffff8; + + guMtxIdentF((float [4] [4]) + CONCAT856(CONCAT44(in_stack_fffffff8,unaff_retaddr), + CONCAT1640(CONCAT124(CONCAT84(CONCAT44(y,z),in_a2_lo),in_a3_lo), + in_stack_00000010))); + *(float *)y = z; + *(undefined4 *)((int)y + 0x14) = in_a2_lo; + *(undefined4 *)((int)y + 0x3c) = 0x3f800000; + *(undefined4 *)((int)y + 0x28) = in_a3_lo; + return; } @@ -15868,15 +15941,15 @@ void guScaleF(float mf_4__4_,float x,float y,float z) void guScale(Mtx *m,float x,float y,float z) { - float x_00; - undefined4 local_44; - undefined4 in_stack_ffffffb8; - undefined in_stack_ffffffc0 [56]; - - guScaleF(z,x_00,(float)&stack0xffffffc0,z); - guMtxF2L((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffb8,local_44),in_stack_ffffffc0), - (Mtx *)&stack0xffffffc0); - return; + float in_a2_lo; + undefined4 local_44; + undefined4 in_stack_ffffffb8; + undefined in_stack_ffffffc0 [56]; + + guScaleF(z,in_a2_lo,(float)&stack0xffffffc0,z); + guMtxF2L((float [4] [4])CONCAT856(CONCAT44(in_stack_ffffffb8,local_44),in_stack_ffffffc0), + (Mtx *)&stack0xffffffc0); + return; } @@ -15887,125 +15960,125 @@ void guLookAtReflectF(float mf [4] [4],LookAt *l,float xEye,float yEye,float zEy float yAt,float zAt,float xUp,float yUp,float zUp) { - undefined4 unaff_retaddr; - float fVar1; - double dVar2; - uint uVar3; - undefined8 in_f8; - double dVar4; - double dVar5; - float fVar6; - uint in_register_00001080; - float fVar7; - float fVar8; - undefined8 unaff_f20; - undefined8 unaff_f22; - undefined8 unaff_f24; - undefined8 unaff_f26; - float fVar9; - undefined8 unaff_f28; - float fVar10; - undefined8 unaff_f30; - float fVar11; - undefined4 in_stack_fffffff8; - - uVar3 = (uint)((ulonglong)in_f8 >> 0x20); - guMtxIdentF((float [4] [4]) - CONCAT568(CONCAT524(CONCAT484(CONCAT408(CONCAT328(CONCAT248(CONCAT168(CONCAT88( + undefined4 unaff_retaddr; + float fVar1; + double dVar2; + uint uVar3; + undefined8 in_f8; + double dVar4; + double dVar5; + float fVar6; + uint in_register_00001080; + float fVar7; + float fVar8; + undefined8 unaff_f20; + undefined8 unaff_f22; + undefined8 unaff_f24; + undefined8 unaff_f26; + float fVar9; + undefined8 unaff_f28; + float fVar10; + undefined8 unaff_f30; + float fVar11; + undefined4 in_stack_fffffff8; + + uVar3 = (uint)((ulonglong)in_f8 >> 0x20); + guMtxIdentF((float [4] [4]) + CONCAT568(CONCAT524(CONCAT484(CONCAT408(CONCAT328(CONCAT248(CONCAT168(CONCAT88( unaff_f20,unaff_f22),unaff_f24),unaff_f26), unaff_f28),unaff_f30),in_stack_fffffff8), - unaff_retaddr),CONCAT44(l,zEye))); - mf[0][1] = mf[0][1] - xAt; - mf[0][2] = mf[0][2] - yAt; - mf[0][3] = mf[0][3] - mf[0][0]; - fVar1 = sqrtf(mf[0][1] * mf[0][1] + mf[0][2] * mf[0][2] + mf[0][3] * mf[0][3]); - dVar2 = (double)((ulonglong)uVar3 << 0x20) / (double)fVar1; - fVar1 = (float)dVar2; - mf[0][1] = mf[0][1] * fVar1; - mf[0][2] = mf[0][2] * fVar1; - mf[0][3] = mf[0][3] * fVar1; - uVar3 = (uint)((ulonglong)dVar2 >> 0x20); - fVar9 = mf[1][1] * mf[0][3] - mf[1][2] * mf[0][2]; - fVar10 = mf[1][2] * mf[0][1] - mf[1][0] * mf[0][3]; - fVar11 = mf[1][0] * mf[0][2] - mf[1][1] * mf[0][1]; - fVar1 = sqrtf(fVar9 * fVar9 + fVar10 * fVar10 + fVar11 * fVar11); - fVar6 = (float)((double)((ulonglong)uVar3 << 0x20) / (double)fVar1); - fVar9 = fVar9 * fVar6; - fVar10 = fVar10 * fVar6; - fVar11 = fVar11 * fVar6; - uVar3 = (uint)((ulonglong)(double)fVar1 >> 0x20); - fVar6 = mf[0][2] * fVar11 - mf[0][3] * fVar10; - fVar7 = mf[0][3] * fVar9 - mf[0][1] * fVar11; - fVar8 = mf[0][1] * fVar10 - mf[0][2] * fVar9; - fVar1 = sqrtf(fVar6 * fVar6 + fVar7 * fVar7 + fVar8 * fVar8); - dVar2 = dbl_80029800; - fVar1 = (float)((double)((ulonglong)uVar3 << 0x20) / (double)fVar1); - fVar6 = fVar6 * fVar1; - fVar7 = fVar7 * fVar1; - fVar8 = fVar8 * fVar1; - dVar4 = (double)fVar9 * (double)((ulonglong)in_register_00001080 << 0x20); - if (dbl_80029800 <= dVar4) { - dVar4 = dbl_80029800; - } - dVar5 = (double)fVar10 * (double)((ulonglong)in_register_00001080 << 0x20); - *(undefined *)((int)zEye + 8) = (char)(int)dVar4; - if (dVar2 <= dVar5) { - dVar5 = dVar2; - } - dVar4 = (double)fVar11 * (double)((ulonglong)in_register_00001080 << 0x20); - *(undefined *)((int)zEye + 9) = (char)(int)dVar5; - if (dVar2 <= dVar4) { - dVar4 = dVar2; - } - *(undefined *)((int)zEye + 10) = (char)(int)dVar4; - dVar4 = (double)fVar6 * (double)((ulonglong)in_register_00001080 << 0x20); - if (dVar2 <= dVar4) { - dVar4 = dVar2; - } - *(undefined *)((int)zEye + 0x18) = (char)(int)dVar4; - dVar4 = (double)fVar7 * (double)((ulonglong)in_register_00001080 << 0x20); - if (dVar2 <= dVar4) { - dVar4 = dVar2; - } - *(undefined *)((int)zEye + 0x19) = (char)(int)dVar4; - dVar4 = (double)fVar8 * (double)((ulonglong)in_register_00001080 << 0x20); - if (dVar2 <= dVar4) { - dVar4 = dVar2; - } - *(undefined *)zEye = 0; - *(undefined *)((int)zEye + 1) = 0; - *(undefined *)((int)zEye + 2) = 0; - *(undefined *)((int)zEye + 3) = 0; - *(undefined *)((int)zEye + 4) = 0; - *(undefined *)((int)zEye + 5) = 0; - *(undefined *)((int)zEye + 6) = 0; - *(undefined *)((int)zEye + 7) = 0; - *(undefined *)((int)zEye + 0x10) = 0; - *(undefined *)((int)zEye + 0x11) = 0x80; - *(undefined *)((int)zEye + 0x12) = 0; - *(undefined *)((int)zEye + 0x13) = 0; - *(undefined *)((int)zEye + 0x14) = 0; - *(undefined *)((int)zEye + 0x15) = 0x80; - *(undefined *)((int)zEye + 0x16) = 0; - *(undefined *)((int)zEye + 0x17) = 0; - *(undefined *)((int)zEye + 0x1a) = (char)(int)dVar4; - *(float *)l->l = fVar9; - *(float *)(l->l + 0x10) = fVar10; - *(float *)l[1].l = fVar11; - *(float *)(l->l + 8) = mf[0][1]; - *(float *)(l->l + 0x18) = mf[0][2]; - *(float *)(l[1].l + 8) = mf[0][3]; - *(float *)(l->l + 4) = fVar6; - *(float *)(l->l + 0x14) = fVar7; - *(float *)(l[1].l + 4) = fVar8; - *(float *)(l[1].l + 0x10) = -(xAt * fVar9 + yAt * fVar10 + mf[0][0] * fVar11); - *(float *)(l[1].l + 0x14) = -(xAt * fVar6 + yAt * fVar7 + mf[0][0] * fVar8); - *(undefined4 *)(l->l + 0xc) = 0; - *(undefined4 *)(l->l + 0x1c) = 0; - *(undefined4 *)(l[1].l + 0xc) = 0; - *(undefined4 *)(l[1].l + 0x1c) = 0x3f800000; - *(float *)(l[1].l + 0x18) = -(xAt * mf[0][1] + yAt * mf[0][2] + mf[0][0] * mf[0][3]); - return; + unaff_retaddr),CONCAT44(l,zEye))); + mf[0][1] = mf[0][1] - xAt; + mf[0][2] = mf[0][2] - yAt; + mf[0][3] = mf[0][3] - mf[0][0]; + fVar1 = sqrtf(mf[0][1] * mf[0][1] + mf[0][2] * mf[0][2] + mf[0][3] * mf[0][3]); + dVar2 = (double)((ulonglong)uVar3 << 0x20) / (double)fVar1; + fVar1 = (float)dVar2; + mf[0][1] = mf[0][1] * fVar1; + mf[0][2] = mf[0][2] * fVar1; + mf[0][3] = mf[0][3] * fVar1; + uVar3 = (uint)((ulonglong)dVar2 >> 0x20); + fVar9 = mf[1][1] * mf[0][3] - mf[1][2] * mf[0][2]; + fVar10 = mf[1][2] * mf[0][1] - mf[1][0] * mf[0][3]; + fVar11 = mf[1][0] * mf[0][2] - mf[1][1] * mf[0][1]; + fVar1 = sqrtf(fVar9 * fVar9 + fVar10 * fVar10 + fVar11 * fVar11); + fVar6 = (float)((double)((ulonglong)uVar3 << 0x20) / (double)fVar1); + fVar9 = fVar9 * fVar6; + fVar10 = fVar10 * fVar6; + fVar11 = fVar11 * fVar6; + uVar3 = (uint)((ulonglong)(double)fVar1 >> 0x20); + fVar6 = mf[0][2] * fVar11 - mf[0][3] * fVar10; + fVar7 = mf[0][3] * fVar9 - mf[0][1] * fVar11; + fVar8 = mf[0][1] * fVar10 - mf[0][2] * fVar9; + fVar1 = sqrtf(fVar6 * fVar6 + fVar7 * fVar7 + fVar8 * fVar8); + dVar2 = dbl_80029800; + fVar1 = (float)((double)((ulonglong)uVar3 << 0x20) / (double)fVar1); + fVar6 = fVar6 * fVar1; + fVar7 = fVar7 * fVar1; + fVar8 = fVar8 * fVar1; + dVar4 = (double)fVar9 * (double)((ulonglong)in_register_00001080 << 0x20); + if (dbl_80029800 <= dVar4) { + dVar4 = dbl_80029800; + } + dVar5 = (double)fVar10 * (double)((ulonglong)in_register_00001080 << 0x20); + *(undefined *)((int)zEye + 8) = (char)(int)dVar4; + if (dVar2 <= dVar5) { + dVar5 = dVar2; + } + dVar4 = (double)fVar11 * (double)((ulonglong)in_register_00001080 << 0x20); + *(undefined *)((int)zEye + 9) = (char)(int)dVar5; + if (dVar2 <= dVar4) { + dVar4 = dVar2; + } + *(undefined *)((int)zEye + 10) = (char)(int)dVar4; + dVar4 = (double)fVar6 * (double)((ulonglong)in_register_00001080 << 0x20); + if (dVar2 <= dVar4) { + dVar4 = dVar2; + } + *(undefined *)((int)zEye + 0x18) = (char)(int)dVar4; + dVar4 = (double)fVar7 * (double)((ulonglong)in_register_00001080 << 0x20); + if (dVar2 <= dVar4) { + dVar4 = dVar2; + } + *(undefined *)((int)zEye + 0x19) = (char)(int)dVar4; + dVar4 = (double)fVar8 * (double)((ulonglong)in_register_00001080 << 0x20); + if (dVar2 <= dVar4) { + dVar4 = dVar2; + } + *(undefined *)zEye = 0; + *(undefined *)((int)zEye + 1) = 0; + *(undefined *)((int)zEye + 2) = 0; + *(undefined *)((int)zEye + 3) = 0; + *(undefined *)((int)zEye + 4) = 0; + *(undefined *)((int)zEye + 5) = 0; + *(undefined *)((int)zEye + 6) = 0; + *(undefined *)((int)zEye + 7) = 0; + *(undefined *)((int)zEye + 0x10) = 0; + *(undefined *)((int)zEye + 0x11) = 0x80; + *(undefined *)((int)zEye + 0x12) = 0; + *(undefined *)((int)zEye + 0x13) = 0; + *(undefined *)((int)zEye + 0x14) = 0; + *(undefined *)((int)zEye + 0x15) = 0x80; + *(undefined *)((int)zEye + 0x16) = 0; + *(undefined *)((int)zEye + 0x17) = 0; + *(undefined *)((int)zEye + 0x1a) = (char)(int)dVar4; + *(float *)l->l = fVar9; + *(float *)(l->l + 0x10) = fVar10; + *(float *)l[1].l = fVar11; + *(float *)(l->l + 8) = mf[0][1]; + *(float *)(l->l + 0x18) = mf[0][2]; + *(float *)(l[1].l + 8) = mf[0][3]; + *(float *)(l->l + 4) = fVar6; + *(float *)(l->l + 0x14) = fVar7; + *(float *)(l[1].l + 4) = fVar8; + *(float *)(l[1].l + 0x10) = -(xAt * fVar9 + yAt * fVar10 + mf[0][0] * fVar11); + *(float *)(l[1].l + 0x14) = -(xAt * fVar6 + yAt * fVar7 + mf[0][0] * fVar8); + *(undefined4 *)(l->l + 0xc) = 0; + *(undefined4 *)(l->l + 0x1c) = 0; + *(undefined4 *)(l[1].l + 0xc) = 0; + *(undefined4 *)(l[1].l + 0x1c) = 0x3f800000; + *(float *)(l[1].l + 0x18) = -(xAt * mf[0][1] + yAt * mf[0][2] + mf[0][0] * mf[0][3]); + return; } @@ -16014,28 +16087,29 @@ void guLookAtReflect(Mtx *m,LookAt *l,float xEye,float yEye,float zEye,float xAt ,float xUp,float yUp,float zUp) { - undefined4 unaff_retaddr; - undefined4 in_stack_00000024; - undefined4 in_stack_00000028; - undefined8 in_stack_ffffffb4; - undefined in_stack_ffffffc0 [24]; - float zAt_00; - float xUp_00; - float yUp_00; - float zUp_00; - - guLookAtReflectF((float [4] [4]) - CONCAT4024(CONCAT364(CONCAT288(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84( + undefined4 unaff_retaddr; + undefined4 in_stack_00000024; + undefined4 in_stack_00000028; + undefined8 in_stack_ffffffb4; + undefined in_stack_ffffffc0 [24]; + float in_stack_ffffffd8; + float in_stack_ffffffdc; + float in_stack_ffffffe0; + float in_stack_ffffffe4; + + guLookAtReflectF((float [4] [4]) + CONCAT4024(CONCAT364(CONCAT288(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84 + (CONCAT44(yAt,zAt),xUp),yUp),zUp), + in_stack_00000024),in_stack_00000028), + in_stack_ffffffb4),unaff_retaddr), + in_stack_ffffffc0),(LookAt *)&stack0xffffffc0,zEye,xAt,(float)l,zEye + ,xAt,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0,in_stack_ffffffe4); + guMtxF2L((float [4] [4]) + CONCAT4024(CONCAT364(CONCAT288(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84( CONCAT44(yAt,zAt),xUp),yUp),zUp),in_stack_00000024 ),in_stack_00000028),in_stack_ffffffb4), - unaff_retaddr),in_stack_ffffffc0),(LookAt *)&stack0xffffffc0 - ,zEye,xAt,(float)l,zEye,xAt,zAt_00,xUp_00,yUp_00,zUp_00); - guMtxF2L((float [4] [4]) - CONCAT4024(CONCAT364(CONCAT288(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44( - yAt,zAt),xUp),yUp),zUp),in_stack_00000024), - in_stack_00000028),in_stack_ffffffb4), - unaff_retaddr),in_stack_ffffffc0),(Mtx *)&stack0xffffffc0); - return; + unaff_retaddr),in_stack_ffffffc0),(Mtx *)&stack0xffffffc0); + return; } @@ -16044,73 +16118,74 @@ void guLookAtF(float mf [4] [4],float xEye,float yEye,float zEye,float xAt,float float xUp,float yUp,float zUp) { - undefined4 unaff_s0_lo; - undefined4 unaff_retaddr; - float fVar1; - float fVar2; - double dVar3; - uint uVar4; - undefined8 in_f8; - float fVar5; - float fVar6; - undefined8 unaff_f20; - undefined8 unaff_f22; - undefined8 unaff_f24; - undefined8 unaff_f26; - float fVar7; - undefined8 unaff_f28; - float fVar8; - undefined8 unaff_f30; - float fVar9; - undefined8 in_stack_ffffffc0; - - uVar4 = (uint)((ulonglong)in_f8 >> 0x20); - guMtxIdentF((float [4] [4]) - CONCAT604(CONCAT564(CONCAT488(CONCAT408(CONCAT328(CONCAT248(CONCAT168(CONCAT88( + undefined4 unaff_s0_lo; + undefined4 unaff_retaddr; + float fVar1; + float fVar2; + double dVar3; + uint uVar4; + undefined8 in_f8; + float fVar5; + float fVar6; + undefined8 unaff_f20; + undefined8 unaff_f22; + undefined8 unaff_f24; + undefined8 unaff_f26; + float fVar7; + undefined8 unaff_f28; + float fVar8; + undefined8 unaff_f30; + float fVar9; + undefined8 in_stack_ffffffc0; + + uVar4 = (uint)((ulonglong)in_f8 >> 0x20); + guMtxIdentF((float [4] [4]) + CONCAT604(CONCAT564(CONCAT488(CONCAT408(CONCAT328(CONCAT248(CONCAT168(CONCAT88( in_stack_ffffffc0,unaff_f20),unaff_f22),unaff_f24) ,unaff_f26),unaff_f28),unaff_f30),unaff_s0_lo), - unaff_retaddr)); - mf[0][0] = mf[0][0] - xAt; - mf[0][1] = mf[0][1] - yAt; - mf[0][2] = mf[0][2] - zAt; - fVar1 = sqrtf(mf[0][0] * mf[0][0] + mf[0][1] * mf[0][1] + mf[0][2] * mf[0][2]); - dVar3 = (double)((ulonglong)uVar4 << 0x20) / (double)fVar1; - fVar1 = (float)dVar3; - mf[0][0] = mf[0][0] * fVar1; - mf[0][1] = mf[0][1] * fVar1; - mf[0][2] = mf[0][2] * fVar1; - uVar4 = (uint)((ulonglong)dVar3 >> 0x20); - fVar7 = mf[1][0] * mf[0][2] - mf[1][1] * mf[0][1]; - fVar8 = mf[1][1] * mf[0][0] - mf[0][3] * mf[0][2]; - fVar9 = mf[0][3] * mf[0][1] - mf[1][0] * mf[0][0]; - fVar1 = sqrtf(fVar7 * fVar7 + fVar8 * fVar8 + fVar9 * fVar9); - fVar2 = (float)((double)((ulonglong)uVar4 << 0x20) / (double)fVar1); - fVar7 = fVar7 * fVar2; - fVar8 = fVar8 * fVar2; - fVar9 = fVar9 * fVar2; - uVar4 = (uint)((ulonglong)(double)fVar1 >> 0x20); - fVar2 = mf[0][1] * fVar9 - mf[0][2] * fVar8; - fVar5 = mf[0][2] * fVar7 - mf[0][0] * fVar9; - fVar6 = mf[0][0] * fVar8 - mf[0][1] * fVar7; - fVar1 = sqrtf(fVar2 * fVar2 + fVar5 * fVar5 + fVar6 * fVar6); - fVar1 = (float)((double)((ulonglong)uVar4 << 0x20) / (double)fVar1); - *(float *)zEye = fVar7; - *(float *)((int)zEye + 0x10) = fVar8; - *(float *)((int)zEye + 0x20) = fVar9; - *(float *)((int)zEye + 4) = fVar2 * fVar1; - *(float *)((int)zEye + 0x14) = fVar5 * fVar1; - *(float *)((int)zEye + 0x30) = -(xAt * fVar7 + yAt * fVar8 + zAt * fVar9); - *(float *)((int)zEye + 0x24) = fVar6 * fVar1; - *(float *)((int)zEye + 8) = mf[0][0]; - *(float *)((int)zEye + 0x18) = mf[0][1]; - *(float *)((int)zEye + 0x28) = mf[0][2]; - *(undefined4 *)((int)zEye + 0xc) = 0; - *(undefined4 *)((int)zEye + 0x1c) = 0; - *(undefined4 *)((int)zEye + 0x2c) = 0; - *(float *)((int)zEye + 0x34) = -(xAt * fVar2 * fVar1 + yAt * fVar5 * fVar1 + zAt * fVar6 * fVar1); - *(undefined4 *)((int)zEye + 0x3c) = 0x3f800000; - *(float *)((int)zEye + 0x38) = -(xAt * mf[0][0] + yAt * mf[0][1] + zAt * mf[0][2]); - return; + unaff_retaddr)); + mf[0][0] = mf[0][0] - xAt; + mf[0][1] = mf[0][1] - yAt; + mf[0][2] = mf[0][2] - zAt; + fVar1 = sqrtf(mf[0][0] * mf[0][0] + mf[0][1] * mf[0][1] + mf[0][2] * mf[0][2]); + dVar3 = (double)((ulonglong)uVar4 << 0x20) / (double)fVar1; + fVar1 = (float)dVar3; + mf[0][0] = mf[0][0] * fVar1; + mf[0][1] = mf[0][1] * fVar1; + mf[0][2] = mf[0][2] * fVar1; + uVar4 = (uint)((ulonglong)dVar3 >> 0x20); + fVar7 = mf[1][0] * mf[0][2] - mf[1][1] * mf[0][1]; + fVar8 = mf[1][1] * mf[0][0] - mf[0][3] * mf[0][2]; + fVar9 = mf[0][3] * mf[0][1] - mf[1][0] * mf[0][0]; + fVar1 = sqrtf(fVar7 * fVar7 + fVar8 * fVar8 + fVar9 * fVar9); + fVar2 = (float)((double)((ulonglong)uVar4 << 0x20) / (double)fVar1); + fVar7 = fVar7 * fVar2; + fVar8 = fVar8 * fVar2; + fVar9 = fVar9 * fVar2; + uVar4 = (uint)((ulonglong)(double)fVar1 >> 0x20); + fVar2 = mf[0][1] * fVar9 - mf[0][2] * fVar8; + fVar5 = mf[0][2] * fVar7 - mf[0][0] * fVar9; + fVar6 = mf[0][0] * fVar8 - mf[0][1] * fVar7; + fVar1 = sqrtf(fVar2 * fVar2 + fVar5 * fVar5 + fVar6 * fVar6); + fVar1 = (float)((double)((ulonglong)uVar4 << 0x20) / (double)fVar1); + *(float *)zEye = fVar7; + *(float *)((int)zEye + 0x10) = fVar8; + *(float *)((int)zEye + 0x20) = fVar9; + *(float *)((int)zEye + 4) = fVar2 * fVar1; + *(float *)((int)zEye + 0x14) = fVar5 * fVar1; + *(float *)((int)zEye + 0x30) = -(xAt * fVar7 + yAt * fVar8 + zAt * fVar9); + *(float *)((int)zEye + 0x24) = fVar6 * fVar1; + *(float *)((int)zEye + 8) = mf[0][0]; + *(float *)((int)zEye + 0x18) = mf[0][1]; + *(float *)((int)zEye + 0x28) = mf[0][2]; + *(undefined4 *)((int)zEye + 0xc) = 0; + *(undefined4 *)((int)zEye + 0x1c) = 0; + *(undefined4 *)((int)zEye + 0x2c) = 0; + *(float *)((int)zEye + 0x34) = + -(xAt * fVar2 * fVar1 + yAt * fVar5 * fVar1 + zAt * fVar6 * fVar1); + *(undefined4 *)((int)zEye + 0x3c) = 0x3f800000; + *(float *)((int)zEye + 0x38) = -(xAt * mf[0][0] + yAt * mf[0][1] + zAt * mf[0][2]); + return; } @@ -16119,28 +16194,28 @@ void guLookAt(Mtx *m,float xEye,float yEye,float zEye,float xAt,float yAt,float float yUp,float zUp) { - undefined4 unaff_retaddr; - undefined4 in_stack_00000020; - undefined4 in_stack_00000024; - undefined4 in_stack_ffffffb8; - undefined in_stack_ffffffc0 [32]; - float xUp_00; - float yUp_00; - float zUp_00; - - guLookAtF((float [4] [4]) - CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(zAt,xUp), - yUp),zUp), - in_stack_00000020),in_stack_00000024) - ,in_stack_ffffffb8),unaff_retaddr),in_stack_ffffffc0), - zEye,xAt,(float)&stack0xffffffc0,zEye,xAt,yAt,xUp_00,yUp_00,zUp_00); - guMtxF2L((float [4] [4]) - CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(zAt,xUp), - yUp),zUp), - in_stack_00000020),in_stack_00000024), - in_stack_ffffffb8),unaff_retaddr),in_stack_ffffffc0), - (Mtx *)&stack0xffffffc0); - return; + undefined4 unaff_retaddr; + undefined4 in_stack_00000020; + undefined4 in_stack_00000024; + undefined4 in_stack_ffffffb8; + undefined in_stack_ffffffc0 [32]; + float in_stack_ffffffe0; + float in_stack_ffffffe4; + float in_stack_ffffffe8; + + guLookAtF((float [4] [4]) + CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(zAt,xUp + ),yUp),zUp),in_stack_00000020),in_stack_00000024), + in_stack_ffffffb8),unaff_retaddr),in_stack_ffffffc0), + zEye,xAt,(float)&stack0xffffffc0,zEye,xAt,yAt,in_stack_ffffffe0,in_stack_ffffffe4, + in_stack_ffffffe8); + guMtxF2L((float [4] [4]) + CONCAT3232(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(zAt,xUp) + ,yUp),zUp), + in_stack_00000020),in_stack_00000024 + ),in_stack_ffffffb8),unaff_retaddr), + in_stack_ffffffc0),(Mtx *)&stack0xffffffc0); + return; } @@ -16150,49 +16225,50 @@ void guLookAt(Mtx *m,float xEye,float yEye,float zEye,float xAt,float yAt,float void guRotateF(float mf [4] [4],float a,float x,float y,float z) { - float in_a2_lo; - float in_a3_lo; - undefined4 unaff_s0_lo; - undefined4 unaff_retaddr; - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - undefined4 uStackX0; - float fStackX8; - float fStackX12; - undefined8 in_stack_ffffffd8; - undefined4 in_stack_ffffffe8; - - flt_CODE_bss_80067DE0 = flt_80029810; - fStackX8 = in_a2_lo; - fStackX12 = in_a3_lo; - guNormalize(&fStackX8,&fStackX12,(float *)mf); - z = z * flt_CODE_bss_80067DE0; - fVar1 = sinf(z); - fVar2 = cosf(z); - fVar3 = 1.00000000 - fVar2; - fVar4 = fStackX8 * fStackX12 * fVar3; - fVar5 = fStackX12 * mf[0][0] * fVar3; - fVar3 = mf[0][0] * fStackX8 * fVar3; - guMtxIdentF((float [4] [4]) - CONCAT4024(CONCAT364(CONCAT324(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124( + float in_a2_lo; + float in_a3_lo; + undefined4 unaff_s0_lo; + undefined4 unaff_retaddr; + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + undefined4 uStackX0; + float fStackX8; + float fStackX12; + undefined8 in_stack_ffffffd8; + undefined4 in_stack_ffffffe8; + + flt_CODE_bss_80067DE0 = flt_80029810; + fStackX8 = in_a2_lo; + fStackX12 = in_a3_lo; + guNormalize(&fStackX8,&fStackX12,(float *)mf); + z = z * flt_CODE_bss_80067DE0; + fVar1 = sinf(z); + fVar2 = cosf(z); + fVar3 = 1.00000000 - fVar2; + fVar4 = fStackX8 * fStackX12 * fVar3; + fVar5 = fStackX12 * mf[0][0] * fVar3; + fVar3 = mf[0][0] * fStackX8 * fVar3; + guMtxIdentF((float [4] [4]) + CONCAT4024(CONCAT364(CONCAT324(CONCAT284(CONCAT244(CONCAT204(CONCAT164(CONCAT124( CONCAT84(in_stack_ffffffd8,unaff_s0_lo), unaff_retaddr),in_stack_ffffffe8),fVar3),fVar5), fVar4),fVar2),fVar1), - CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(uStackX0,z),fStackX8), - fStackX12),mf[0][0]),mf[0][1]))); - *(float *)y = (1.00000000 - fStackX8 * fStackX8) * fVar2 + fStackX8 * fStackX8; - *(float *)((int)y + 0x24) = fVar5 - fStackX8 * fVar1; - *(float *)((int)y + 0x18) = fStackX8 * fVar1 + fVar5; - *(float *)((int)y + 0x14) = (1.00000000 - fStackX12 * fStackX12) * fVar2 + fStackX12 * fStackX12; - *(float *)((int)y + 0x20) = fStackX12 * fVar1 + fVar3; - *(float *)((int)y + 8) = fVar3 - fStackX12 * fVar1; - *(float *)((int)y + 0x28) = (1.00000000 - mf[0][0] * mf[0][0]) * fVar2 + mf[0][0] * mf[0][0]; - *(float *)((int)y + 0x10) = fVar4 - mf[0][0] * fVar1; - *(float *)((int)y + 4) = mf[0][0] * fVar1 + fVar4; - return; + CONCAT204(CONCAT164(CONCAT124(CONCAT84(CONCAT44(uStackX0,z),fStackX8), + fStackX12),mf[0][0]),mf[0][1]))); + *(float *)y = (1.00000000 - fStackX8 * fStackX8) * fVar2 + fStackX8 * fStackX8; + *(float *)((int)y + 0x24) = fVar5 - fStackX8 * fVar1; + *(float *)((int)y + 0x18) = fStackX8 * fVar1 + fVar5; + *(float *)((int)y + 0x14) = (1.00000000 - fStackX12 * fStackX12) * fVar2 + fStackX12 * fStackX12 + ; + *(float *)((int)y + 0x20) = fStackX12 * fVar1 + fVar3; + *(float *)((int)y + 8) = fVar3 - fStackX12 * fVar1; + *(float *)((int)y + 0x28) = (1.00000000 - mf[0][0] * mf[0][0]) * fVar2 + mf[0][0] * mf[0][0]; + *(float *)((int)y + 0x10) = fVar4 - mf[0][0] * fVar1; + *(float *)((int)y + 4) = mf[0][0] * fVar1 + fVar4; + return; } @@ -16200,18 +16276,18 @@ void guRotateF(float mf [4] [4],float a,float x,float y,float z) void guRotate(Mtx *m,float a,float x,float y,float z) { - undefined4 local_44; - undefined4 local_50; - undefined8 in_stack_ffffffb4; - undefined in_stack_ffffffc0 [48]; - - guRotateF((float [4] [4]) - CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0),y - ,z,(float)&stack0xffffffc0,y); - guMtxF2L((float [4] [4]) - CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0), - (Mtx *)&stack0xffffffc0); - return; + undefined4 local_44; + undefined4 local_50; + undefined8 in_stack_ffffffb4; + undefined in_stack_ffffffc0 [48]; + + guRotateF((float [4] [4]) + CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0) + ,y,z,(float)&stack0xffffffc0,y); + guMtxF2L((float [4] [4]) + CONCAT1648(CONCAT124(CONCAT48(local_50,in_stack_ffffffb4),local_44),in_stack_ffffffc0), + (Mtx *)&stack0xffffffc0); + return; } @@ -16219,7 +16295,7 @@ void guRotate(Mtx *m,float a,float x,float y,float z) longlong __d_to_ll(double param_1) { - return (longlong)param_1 >> 0x20; + return (longlong)param_1 >> 0x20; } @@ -16227,7 +16303,7 @@ longlong __d_to_ll(double param_1) longlong __f_to_ll(float param_1) { - return (longlong)param_1 >> 0x20; + return (longlong)param_1 >> 0x20; } @@ -16237,35 +16313,35 @@ longlong __f_to_ll(float param_1) longlong __d_to_ull(double param_1) { - double dVar1; - ulonglong uVar2; - - if (false) { - dVar1 = ROUND(param_1); - } - else { - dVar1 = FLOOR(param_1); - } - uVar2 = (ulonglong)dVar1; - if (true) { - if (-1 < (longlong)uVar2) goto LAB_700179d4; - } - else { - param_1 = param_1 - (double)(uVar2 & 0xffffffff00000000); + double dVar1; + ulonglong uVar2; + if (false) { - param_1 = ROUND(param_1); + dVar1 = ROUND(param_1); } else { - param_1 = FLOOR(param_1); + dVar1 = FLOOR(param_1); } + uVar2 = (ulonglong)dVar1; if (true) { - uVar2 = (longlong)param_1 | _dword_80029820; - goto LAB_700179d4; + if (-1 < (longlong)uVar2) goto LAB_700179d4; } - } - uVar2 = 0xffffffffffffffff; + else { + param_1 = param_1 - (double)(uVar2 & 0xffffffff00000000); + if (false) { + param_1 = ROUND(param_1); + } + else { + param_1 = FLOOR(param_1); + } + if (true) { + uVar2 = (longlong)param_1 | _dword_80029820; + goto LAB_700179d4; + } + } + uVar2 = 0xffffffffffffffff; LAB_700179d4: - return (longlong)uVar2 >> 0x20; + return (longlong)uVar2 >> 0x20; } @@ -16275,34 +16351,34 @@ LAB_700179d4: longlong __f_to_ull(float param_1) { - float fVar1; - ulonglong uVar2; - - if (false) { - fVar1 = ROUND(param_1); - } - else { - fVar1 = FLOOR(param_1); - } - uVar2 = (ulonglong)fVar1; - if (true) { - if (-1 < (longlong)uVar2) goto LAB_70017a70; - } - else { + float fVar1; + ulonglong uVar2; + if (false) { - fVar1 = ROUND(param_1 - 9223372036854775808.00000000); + fVar1 = ROUND(param_1); } else { - fVar1 = FLOOR(param_1 - 9223372036854775808.00000000); + fVar1 = FLOOR(param_1); } + uVar2 = (ulonglong)fVar1; if (true) { - uVar2 = (longlong)fVar1 | _dword_80029828; - goto LAB_70017a70; + if (-1 < (longlong)uVar2) goto LAB_70017a70; } - } - uVar2 = 0xffffffffffffffff; + else { + if (false) { + fVar1 = ROUND(param_1 - 9223372036854775808.00000000); + } + else { + fVar1 = FLOOR(param_1 - 9223372036854775808.00000000); + } + if (true) { + uVar2 = (longlong)fVar1 | _dword_80029828; + goto LAB_70017a70; + } + } + uVar2 = 0xffffffffffffffff; LAB_70017a70: - return (longlong)uVar2 >> 0x20; + return (longlong)uVar2 >> 0x20; } @@ -16310,7 +16386,7 @@ LAB_70017a70: double __ll_to_d(undefined4 param_1,undefined4 param_2) { - return (double)CONCAT44(param_1,param_2); + return (double)CONCAT44(param_1,param_2); } @@ -16318,36 +16394,36 @@ double __ll_to_d(undefined4 param_1,undefined4 param_2) float __ll_to_f(undefined4 param_1,undefined4 param_2) { - return (float)CONCAT44(param_1,param_2); + return (float)CONCAT44(param_1,param_2); } -double __ull_to_d(undefined4 param_1,undefined4 param_2) +double __ull_to_d(int param_1,undefined4 param_2) { - double dVar1; - uint in_register_00001030; - - dVar1 = (double)CONCAT44(param_1,param_2); - if (CONCAT44(param_1,param_2) < 0) { - dVar1 = dVar1 + (double)((ulonglong)in_register_00001030 << 0x20); - } - return dVar1; + double dVar1; + uint in_register_00001030; + + dVar1 = (double)CONCAT44(param_1,param_2); + if (param_1 < 0) { + dVar1 = dVar1 + (double)((ulonglong)in_register_00001030 << 0x20); + } + return dVar1; } -float __ull_to_f(undefined4 param_1,undefined4 param_2) +float __ull_to_f(int param_1,undefined4 param_2) { - float fVar1; - - fVar1 = (float)CONCAT44(param_1,param_2); - if (CONCAT44(param_1,param_2) < 0) { - fVar1 = fVar1 + 4294967296.00000000; - } - return fVar1; + float fVar1; + + fVar1 = (float)CONCAT44(param_1,param_2); + if (param_1 < 0) { + fVar1 = fVar1 + 4294967296.00000000; + } + return fVar1; } @@ -16355,8 +16431,8 @@ float __ull_to_f(undefined4 param_1,undefined4 param_2) void __osSetSR(u32 param_1) { - setCopReg(0,Status,(longlong)(int)param_1,0); - return; + setCopReg(0,Status,(longlong)(int)param_1,0); + return; } @@ -16364,7 +16440,7 @@ void __osSetSR(u32 param_1) u32 __osGetSR(void) { - return Status; + return Status; } @@ -16372,18 +16448,18 @@ u32 __osGetSR(void) s32 __osSiRawReadIo(u32 devAddr,u32 *data) { - int iVar1; - s32 ret; - - iVar1 = __osSiDeviceBusy(); - if (iVar1 == 0) { - ret = 0; - *data = *(u32 *)(devAddr | 0xa0000000); - } - else { - ret = -1; - } - return ret; + int iVar1; + s32 ret; + + iVar1 = __osSiDeviceBusy(); + if (iVar1 == 0) { + ret = 0; + *data = *(u32 *)(devAddr | 0xa0000000); + } + else { + ret = -1; + } + return ret; } @@ -16391,18 +16467,18 @@ s32 __osSiRawReadIo(u32 devAddr,u32 *data) s32 __osSpRawWriteIo(u32 param_1,u32 param_2) { - int iVar1; - s32 ret; - - iVar1 = __osSiDeviceBusy(); - if (iVar1 == 0) { - ret = 0; - *(u32 *)(param_1 | 0xa0000000) = param_2; - } - else { - ret = -1; - } - return ret; + int iVar1; + s32 ret; + + iVar1 = __osSiDeviceBusy(); + if (iVar1 == 0) { + ret = 0; + *(u32 *)(param_1 | 0xa0000000) = param_2; + } + else { + ret = -1; + } + return ret; } @@ -16412,10 +16488,10 @@ s32 __osSpRawWriteIo(u32 param_1,u32 param_2) s32 osPiRawReadIo(u32 devAddr,u32 *data) { - do { - } while ((_PI_STATUS_REG & 3) != 0); - *data = *(u32 *)(_osRomBase | devAddr | 0xa0000000); - return 0; + do { + } while ((_PI_STATUS_REG & 3) != 0); + *data = *(u32 *)(_osRomBase | devAddr | 0xa0000000); + return 0; } @@ -16423,58 +16499,58 @@ s32 osPiRawReadIo(u32 devAddr,u32 *data) void bzero(void *__s,size_t __n) { - undefined4 *puVar1; - uint uVar2; - uint uVar3; - undefined4 *puVar4; - - if (0xb < (int)__n) { - uVar2 = -(int)__s & 3; - if (uVar2 != 0) { - uVar3 = (uint)__s & 3; - *(uint *)((int)__s - uVar3) = - *(uint *)((int)__s - uVar3) & -1 << (4 - uVar3) * 8 | 0U >> uVar3 * 8; - __s = (void *)((int)__s + uVar2); + undefined4 *puVar1; + uint uVar2; + uint uVar3; + undefined4 *puVar4; + + if (0xb < (int)__n) { + uVar2 = -(int)__s & 3; + if (uVar2 != 0) { + uVar3 = (uint)__s & 3; + *(uint *)((int)__s - uVar3) = + *(uint *)((int)__s - uVar3) & -1 << (4 - uVar3) * 8 | 0U >> uVar3 * 8; + __s = (void *)((int)__s + uVar2); + } + uVar3 = __n - uVar2 & 0xffffffe0; + uVar2 = (__n - uVar2) - uVar3; + if (uVar3 != 0) { + puVar4 = (undefined4 *)(uVar3 + (int)__s); + puVar1 = (undefined4 *)__s; + do { + __s = puVar1 + 8; + *puVar1 = 0; + puVar1[1] = 0; + puVar1[2] = 0; + puVar1[3] = 0; + puVar1[4] = 0; + puVar1[5] = 0; + puVar1[6] = 0; + puVar1[7] = 0; + puVar1 = (undefined4 *)__s; + } while ((undefined4 *)__s != puVar4); + } + uVar3 = uVar2 & 0xfffffffc; + __n = uVar2 - uVar3; + if (uVar3 != 0) { + puVar4 = (undefined4 *)(uVar3 + (int)__s); + puVar1 = (undefined4 *)__s; + do { + __s = puVar1 + 1; + *puVar1 = 0; + puVar1 = (undefined4 *)__s; + } while ((undefined4 *)__s != puVar4); + } } - uVar3 = __n - uVar2 & 0xffffffe0; - uVar2 = (__n - uVar2) - uVar3; - if (uVar3 != 0) { - puVar4 = (undefined4 *)(uVar3 + (int)__s); - puVar1 = (undefined4 *)__s; - do { - __s = puVar1 + 8; - *puVar1 = 0; - puVar1[1] = 0; - puVar1[2] = 0; - puVar1[3] = 0; - puVar1[4] = 0; - puVar1[5] = 0; - puVar1[6] = 0; - puVar1[7] = 0; + if (0 < (int)__n) { puVar1 = (undefined4 *)__s; - } while ((undefined4 *)__s != puVar4); + do { + puVar4 = (undefined4 *)((int)puVar1 + 1); + *(undefined *)puVar1 = 0; + puVar1 = puVar4; + } while (puVar4 != (undefined4 *)(__n + (int)__s)); } - uVar3 = uVar2 & 0xfffffffc; - __n = uVar2 - uVar3; - if (uVar3 != 0) { - puVar4 = (undefined4 *)(uVar3 + (int)__s); - puVar1 = (undefined4 *)__s; - do { - __s = puVar1 + 1; - *puVar1 = 0; - puVar1 = (undefined4 *)__s; - } while ((undefined4 *)__s != puVar4); - } - } - if (0 < (int)__n) { - puVar1 = (undefined4 *)__s; - do { - puVar4 = (undefined4 *)((int)puVar1 + 1); - *(undefined *)puVar1 = 0; - puVar1 = puVar4; - } while (puVar4 != (undefined4 *)(__n + (int)__s)); - } - return; + return; } @@ -16482,12 +16558,12 @@ void bzero(void *__s,size_t __n) void __osSetHWIntrRoutine(OSHWIntr interrupt,s32 *handler) { - u32 mask; - - mask = __osDisableInt(); - *(s32 **)(interrupt * 4 + -0x7ffd8900) = handler; - __osRestoreInt(mask); - return; + u32 mask; + + mask = __osDisableInt(); + *(s32 **)(interrupt * 4 + -0x7ffd8900) = handler; + __osRestoreInt(mask); + return; } @@ -16497,187 +16573,195 @@ void __osSetHWIntrRoutine(OSHWIntr interrupt,s32 *handler) s32 __osLeoInterrupt(void) { - ushort uVar1; - uint *puVar2; - OSPiHandle *pOVar3; - uint uVar4; - s32 sVar5; - u32 *puVar6; - u32 *puVar7; - __OSTranxInfo *p_Var8; - - uVar4 = _data; - pOVar3 = __osDiskHandle; - if (osDiskExist == 0) { - sVar5 = 0; - } - else { - p_Var8 = &__osDiskHandle->transferInfo; - puVar6 = &p_Var8->cmdType + (uint)(__osDiskHandle->transferInfo).blockNum * 9; - puVar7 = puVar6 + 6; - if ((_PI_STATUS_REG & 1) == 0) { - do { - } while ((_PI_STATUS_REG & 2) != 0); - if ((_data & 0x2000000) == 0) { - if ((_data & 0x8000000) == 0) { - if (p_Var8->cmdType == 1) { - if ((_data & 0x40000000) == 0) { - uVar1 = (__osDiskHandle->transferInfo).transferMode; - if ((__osDiskHandle->transferInfo).sectorNum + 1 == - ((uint)uVar1 * 0x14 + (uint)uVar1) * 4 + (uint)uVar1) { - _PI_STATUS_REG = 2; - __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask | 0x100401); - *puVar7 = 0; - __osLeoResume(); - sVar5 = 1; - } - else { - *puVar7 = 6; - __osLeoAbnormalResume(); - sVar5 = 1; - } - } - else { - puVar6[7] = puVar6[7] + puVar6[9]; - (pOVar3->transferInfo).sectorNum = (pOVar3->transferInfo).sectorNum + 1; - osEPiRawStartDma(__osDiskHandle,1,0x5000400,(void *)puVar6[7],puVar6[9]); - sVar5 = 1; - } - } - else { - if (p_Var8->cmdType == 0) { - if ((__osDiskHandle->transferInfo).transferMode == 3) { - if ((int)(puVar6[10] + 0x11) < (__osDiskHandle->transferInfo).sectorNum) { - *puVar7 = 0; - __osLeoAbnormalResume(); - return 1; - } - if ((_data & 0x40000000) == 0) { - *puVar7 = 0x11; - __osLeoAbnormalResume(); - return 1; - } - } - else { - puVar6[7] = puVar6[7] + puVar6[9]; - } - if ((((_ASIC_BM_CTL & 0x200000) != 0) && ((_ASIC_BM_CTL & 0x400000) != 0)) || - ((_ASIC_BM_CTL & 0x2000000) != 0)) { - if (puVar6[10] < 4) { - puVar6[puVar6[10] + 0xb] = (pOVar3->transferInfo).sectorNum + 1; - } - else { - if (((pOVar3->transferInfo).transferMode != 3) || - (0x52 < (pOVar3->transferInfo).sectorNum)) { - *puVar7 = 0x11; - __osLeoAbnormalResume(); - return 1; - } - } - puVar6[10] = puVar6[10] + 1; - } - if ((uVar4 & 0x10000000) == 0) { - if ((((pOVar3->transferInfo).sectorNum == -1) && - ((pOVar3->transferInfo).transferMode == 2)) && - ((pOVar3->transferInfo).blockNum == 1)) { - if (((pOVar3->transferInfo).block[0].C1ErrNum == 0) && - (puVar2 = (uint *)(pOVar3->transferInfo).block[0].C2Addr, - (puVar2[3] | *puVar2 | puVar2[1] | puVar2[2]) != 0)) { - *puVar7 = 6; - __osLeoAbnormalResume(); - return 1; - } - *puVar7 = 0; - __osLeoResume(); - } - (pOVar3->transferInfo).sectorNum = (pOVar3->transferInfo).sectorNum + 1; - if ((uVar4 & 0x40000000) == 0) { - if ((pOVar3->transferInfo).sectorNum < 0x55) { - *puVar7 = 6; - __osLeoAbnormalResume(); - sVar5 = 1; - } - else { - sVar5 = 1; - } - } - else { - if ((pOVar3->transferInfo).sectorNum < 0x55) { - osEPiRawStartDma(__osDiskHandle,0,0x5000400,(void *)puVar6[7],puVar6[9]); - sVar5 = 1; - *puVar7 = 0; - } - else { - *puVar7 = 6; - __osLeoAbnormalResume(); - sVar5 = 1; - } - } - } - else { - if ((pOVar3->transferInfo).sectorNum != 0x57) { - *puVar7 = 6; - __osLeoAbnormalResume(); - } - if (((pOVar3->transferInfo).transferMode == 2) && - ((pOVar3->transferInfo).blockNum == 0)) { - (pOVar3->transferInfo).blockNum = 1; - (pOVar3->transferInfo).sectorNum = -1; - (pOVar3->transferInfo).block[1].dramAddr = - (void *)((int)(pOVar3->transferInfo).block[1].dramAddr - - (pOVar3->transferInfo).block[1].sectorSize); - } - else { - _PI_STATUS_REG = 2; - __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask | 0x100401); - } - osEPiRawStartDma(__osDiskHandle,0,0x5000000,(void *)puVar6[8],puVar6[9] << 2); - sVar5 = 1; - *puVar7 = 0; - } - } - else { - *puVar7 = 0x4b; - __osLeoAbnormalResume(); - sVar5 = 1; - } - } - } - else { - *puVar7 = 3; - __osLeoResume(); - _PI_STATUS_REG = 2; - __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask | 0x100401); - sVar5 = 1; - } - } - else { - do { - } while ((_PI_STATUS_REG & 2) != 0); + ushort uVar1; + uint *puVar2; + OSPiHandle *pOVar3; + uint uVar4; + s32 sVar5; + u32 *puVar6; + u32 *puVar7; + __OSTranxInfo *p_Var8; + + uVar4 = _data; + pOVar3 = __osDiskHandle; + if (osDiskExist == 0) { sVar5 = 0; - _ASIC_BM_CTL = (__osDiskHandle->transferInfo).bmCtlShadow | 0x1000000; - *puVar7 = 0; - } } else { - _PI_STATUS_REG = 3; - if (true) { - do { - } while (true); - } - if ((_data & 0x2000000) != 0) { - if (true) { - do { - } while (true); + p_Var8 = &__osDiskHandle->transferInfo; + puVar6 = &p_Var8->cmdType + (uint)(__osDiskHandle->transferInfo).blockNum * 9; + puVar7 = puVar6 + 6; + if ((_PI_STATUS_REG & 1) == 0) { + do { + } while ((_PI_STATUS_REG & 2) != 0); + if ((_data & 0x2000000) == 0) { + if ((_data & 0x8000000) == 0) { + if (p_Var8->cmdType == 1) { + if ((_data & 0x40000000) == 0) { + uVar1 = (__osDiskHandle->transferInfo).transferMode; + if ((__osDiskHandle->transferInfo).sectorNum + 1 == + ((uint)uVar1 * 0x14 + (uint)uVar1) * 4 + (uint)uVar1) { + _PI_STATUS_REG = 2; + __OSGlobalIntMask = + (undefined *)((uint)__OSGlobalIntMask | 0x100401); + *puVar7 = 0; + __osLeoResume(); + sVar5 = 1; + } + else { + *puVar7 = 6; + __osLeoAbnormalResume(); + sVar5 = 1; + } + } + else { + puVar6[7] = puVar6[7] + puVar6[9]; + (pOVar3->transferInfo).sectorNum = (pOVar3->transferInfo).sectorNum + 1; + osEPiRawStartDma(__osDiskHandle,1,0x5000400,(void *)puVar6[7],puVar6[9]) + ; + sVar5 = 1; + } + } + else { + if (p_Var8->cmdType == 0) { + if ((__osDiskHandle->transferInfo).transferMode == 3) { + if ((int)(puVar6[10] + 0x11) < + (__osDiskHandle->transferInfo).sectorNum) { + *puVar7 = 0; + __osLeoAbnormalResume(); + return 1; + } + if ((_data & 0x40000000) == 0) { + *puVar7 = 0x11; + __osLeoAbnormalResume(); + return 1; + } + } + else { + puVar6[7] = puVar6[7] + puVar6[9]; + } + if ((((_ASIC_BM_CTL & 0x200000) != 0) && + ((_ASIC_BM_CTL & 0x400000) != 0)) || + ((_ASIC_BM_CTL & 0x2000000) != 0)) { + if (puVar6[10] < 4) { + puVar6[puVar6[10] + 0xb] = (pOVar3->transferInfo).sectorNum + 1; + } + else { + if (((pOVar3->transferInfo).transferMode != 3) || + (0x52 < (pOVar3->transferInfo).sectorNum)) { + *puVar7 = 0x11; + __osLeoAbnormalResume(); + return 1; + } + } + puVar6[10] = puVar6[10] + 1; + } + if ((uVar4 & 0x10000000) == 0) { + if ((((pOVar3->transferInfo).sectorNum == -1) && + ((pOVar3->transferInfo).transferMode == 2)) && + ((pOVar3->transferInfo).blockNum == 1)) { + if (((pOVar3->transferInfo).block[0].C1ErrNum == 0) && + (puVar2 = (uint *)(pOVar3->transferInfo).block[0].C2Addr, + (puVar2[3] | *puVar2 | puVar2[1] | puVar2[2]) != 0)) { + *puVar7 = 6; + __osLeoAbnormalResume(); + return 1; + } + *puVar7 = 0; + __osLeoResume(); + } + (pOVar3->transferInfo).sectorNum = + (pOVar3->transferInfo).sectorNum + 1; + if ((uVar4 & 0x40000000) == 0) { + if ((pOVar3->transferInfo).sectorNum < 0x55) { + *puVar7 = 6; + __osLeoAbnormalResume(); + sVar5 = 1; + } + else { + sVar5 = 1; + } + } + else { + if ((pOVar3->transferInfo).sectorNum < 0x55) { + osEPiRawStartDma(__osDiskHandle,0,0x5000400, + (void *)puVar6[7],puVar6[9]); + sVar5 = 1; + *puVar7 = 0; + } + else { + *puVar7 = 6; + __osLeoAbnormalResume(); + sVar5 = 1; + } + } + } + else { + if ((pOVar3->transferInfo).sectorNum != 0x57) { + *puVar7 = 6; + __osLeoAbnormalResume(); + } + if (((pOVar3->transferInfo).transferMode == 2) && + ((pOVar3->transferInfo).blockNum == 0)) { + (pOVar3->transferInfo).blockNum = 1; + (pOVar3->transferInfo).sectorNum = -1; + (pOVar3->transferInfo).block[1].dramAddr = + (void *)((int)(pOVar3->transferInfo).block[1].dramAddr - + (pOVar3->transferInfo).block[1].sectorSize); + } + else { + _PI_STATUS_REG = 2; + __OSGlobalIntMask = + (undefined *)((uint)__OSGlobalIntMask | 0x100401); + } + osEPiRawStartDma(__osDiskHandle,0,0x5000000,(void *)puVar6[8], + puVar6[9] << 2); + sVar5 = 1; + *puVar7 = 0; + } + } + else { + *puVar7 = 0x4b; + __osLeoAbnormalResume(); + sVar5 = 1; + } + } + } + else { + *puVar7 = 3; + __osLeoResume(); + _PI_STATUS_REG = 2; + __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask | 0x100401); + sVar5 = 1; + } + } + else { + do { + } while ((_PI_STATUS_REG & 2) != 0); + sVar5 = 0; + _ASIC_BM_CTL = (__osDiskHandle->transferInfo).bmCtlShadow | 0x1000000; + *puVar7 = 0; + } + } + else { + _PI_STATUS_REG = 3; + if (true) { + do { + } while (true); + } + if ((_data & 0x2000000) != 0) { + if (true) { + do { + } while (true); + } + _ASIC_BM_CTL = (__osDiskHandle->transferInfo).bmCtlShadow | 0x1000000; + } + *puVar7 = 0x4b; + __osLeoAbnormalResume(); + sVar5 = 1; } - _ASIC_BM_CTL = (__osDiskHandle->transferInfo).bmCtlShadow | 0x1000000; - } - *puVar7 = 0x4b; - __osLeoAbnormalResume(); - sVar5 = 1; } - } - return sVar5; + return sVar5; } @@ -16687,15 +16771,15 @@ s32 __osLeoInterrupt(void) void __osLeoAbnormalResume(void) { - do { - } while ((_PI_STATUS_REG & 2) != 0); - do { - } while ((_PI_STATUS_REG & 2) != 0); - _ASIC_BM_CTL = *(undefined4 *)(__osDiskHandle + 0x24); - __osLeoResume(); - __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask | 0x100401); - _PI_STATUS_REG = 2; - return; + do { + } while ((_PI_STATUS_REG & 2) != 0); + do { + } while ((_PI_STATUS_REG & 2) != 0); + _ASIC_BM_CTL = *(undefined4 *)(__osDiskHandle + 0x24); + __osLeoResume(); + __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask | 0x100401); + _PI_STATUS_REG = 2; + return; } @@ -16705,30 +16789,30 @@ void __osLeoAbnormalResume(void) void __osLeoResume(void) { - int iVar1; - OSThread *new; - int iVar2; - OSMesgQueue *mq; - - mq = es[0].messageQueue; - if ((es[0].messageQueue != NULL) && - ((es[0].messageQueue)->validCount < (es[0].messageQueue)->msgCount)) { - iVar1 = (es[0].messageQueue)->msgCount; - iVar2 = (es[0].messageQueue)->first + (es[0].messageQueue)->validCount; - (es[0].messageQueue)->msg[iVar2 % iVar1] = es[0].message; - if (iVar1 == 0) { - trap(0x1c00); + int iVar1; + OSThread *new; + int iVar2; + OSMesgQueue *mq; + + mq = es[0].messageQueue; + if ((es[0].messageQueue != NULL) && + ((es[0].messageQueue)->validCount < (es[0].messageQueue)->msgCount)) { + iVar1 = (es[0].messageQueue)->msgCount; + iVar2 = (es[0].messageQueue)->first + (es[0].messageQueue)->validCount; + (es[0].messageQueue)->msg[iVar2 % iVar1] = es[0].message; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + mq->validCount = mq->validCount + 1; + if (mq->mtqueue->next != NULL) { + new = __osPopThread((OSThread *)mq); + __osEnqueueThread(&__osRunQueue,new); + } } - if ((iVar1 == -1) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - mq->validCount = mq->validCount + 1; - if (mq->mtqueue->next != NULL) { - new = __osPopThread((OSThread *)mq); - __osEnqueueThread(&__osRunQueue,new); - } - } - return; + return; } @@ -16736,8 +16820,8 @@ void __osLeoResume(void) u32 __osDisableInt(void) { - setCopReg(0,CONCAT44(uRegister00002060,Status),(longlong)(int)Status & 0xfffffffffffffffe,0); - return (u32)(Status & 1); + setCopReg(0,CONCAT44(uRegister00002060,Status),(longlong)(int)Status & 0xfffffffffffffffe,0); + return (u32)(Status & 1); } @@ -16745,8 +16829,8 @@ u32 __osDisableInt(void) void __osRestoreInt(u32 mask) { - setCopReg(0,CONCAT44(uRegister00002060,Status),(longlong)(int)(Status | mask),0); - return; + setCopReg(0,CONCAT44(uRegister00002060,Status),(longlong)(int)(Status | mask),0); + return; } @@ -16754,25 +16838,25 @@ void __osRestoreInt(u32 mask) void __osTimerServicesInit(void) { - undefined4 uVar1; - OSTimer *pOVar2; - - __osCurrentTime._4_4_ = 0; - __osCurrentTime._0_4_ = 0; - __osBaseCounter = 0; - __osViIntrCount = 0; - *(OSTimer **)&__osTimerList->prev = __osTimerList; - __osTimerList->next = __osTimerList->prev; - pOVar2 = __osTimerList; - *(undefined4 *)&__osTimerList->value = 0; - *(undefined4 *)((int)&pOVar2->value + 4) = 0; - pOVar2 = __osTimerList; - uVar1 = *(undefined4 *)((int)&__osTimerList->value + 4); - *(undefined4 *)&__osTimerList->interval = *(undefined4 *)&__osTimerList->value; - *(undefined4 *)((int)&pOVar2->interval + 4) = uVar1; - __osTimerList->mq = NULL; - __osTimerList->msg = NULL; - return; + undefined4 uVar1; + OSTimer *pOVar2; + + __osCurrentTime._4_4_ = 0; + __osCurrentTime._0_4_ = 0; + __osBaseCounter = 0; + __osViIntrCount = 0; + *(OSTimer **)&__osTimerList->prev = __osTimerList; + __osTimerList->next = __osTimerList->prev; + pOVar2 = __osTimerList; + *(undefined4 *)&__osTimerList->value = 0; + *(undefined4 *)((int)&pOVar2->value + 4) = 0; + pOVar2 = __osTimerList; + uVar1 = *(undefined4 *)((int)&__osTimerList->value + 4); + *(undefined4 *)&__osTimerList->interval = *(undefined4 *)&__osTimerList->value; + *(undefined4 *)((int)&pOVar2->interval + 4) = uVar1; + __osTimerList->mq = NULL; + __osTimerList->msg = NULL; + return; } @@ -16780,44 +16864,43 @@ void __osTimerServicesInit(void) void __osTimerInterrupt(void) { - OSTimer *t; - uint uVar1; - int iVar2; - u32 uVar3; - uint uVar4; - - if ((OSTimer *)__osTimerList->next != __osTimerList) { - while (t = (OSTimer *)__osTimerList->next, t != __osTimerList) { - uVar3 = osGetCount(); - uVar4 = uVar3 - __osTimerCounter; - if ((true) && ((*(int *)&t->value != 0 || (uVar4 < *(uint *)((int)&t->value + 4))))) { - uVar1 = *(uint *)((int)&t->value + 4); - iVar2 = *(int *)&t->value; - __osTimerCounter = uVar3; - *(int *)((int)&t->value + 4) = uVar1 - uVar4; - *(uint *)&t->value = iVar2 - (uint)(uVar1 < uVar4); - __osSetTimerIntr((longlong)*(int *)&t->value); - return; - } - __osTimerCounter = uVar3; - t->prev->next = t->next; - t->next->prev = t->prev; - t->next = NULL; - t->prev = NULL; - if (t->mq != NULL) { - osSendMesg(t->mq,t->msg,0); - } - iVar2 = *(int *)((int)&t->interval + 4); - if ((*(int *)&t->interval != 0) || (iVar2 != 0)) { - *(int *)&t->value = *(int *)&t->interval; - *(int *)((int)&t->value + 4) = iVar2; - __osInsertTimer(t); - } + OSTimer *t; + uint uVar1; + int iVar2; + u32 uVar3; + uint uVar4; + + if ((OSTimer *)__osTimerList->next != __osTimerList) { + while (t = (OSTimer *)__osTimerList->next, t != __osTimerList) { + uVar3 = osGetCount(); + uVar4 = uVar3 - __osTimerCounter; + __osTimerCounter = uVar3; + if ((true) && ((*(int *)&t->value != 0 || (uVar4 < *(uint *)((int)&t->value + 4))))) { + uVar1 = *(uint *)((int)&t->value + 4); + iVar2 = *(int *)&t->value; + *(int *)((int)&t->value + 4) = uVar1 - uVar4; + *(uint *)&t->value = iVar2 - (uint)(uVar1 < uVar4); + __osSetTimerIntr((longlong)*(int *)&t->value); + return; + } + t->prev->next = t->next; + t->next->prev = t->prev; + t->next = NULL; + t->prev = NULL; + if (t->mq != NULL) { + osSendMesg(t->mq,t->msg,0); + } + iVar2 = *(int *)((int)&t->interval + 4); + if ((*(int *)&t->interval != 0) || (iVar2 != 0)) { + *(int *)&t->value = *(int *)&t->interval; + *(int *)((int)&t->value + 4) = iVar2; + __osInsertTimer(t); + } + } + __osSetCompare(0); + __osTimerCounter = 0; } - __osSetCompare(0); - __osTimerCounter = 0; - } - return; + return; } @@ -16825,14 +16908,14 @@ void __osTimerInterrupt(void) void __osSetTimerIntr(OSTime tim) { - u32 mask; - int in_a1_lo; - - mask = __osDisableInt(); - __osTimerCounter = osGetCount(); - __osSetCompare(__osTimerCounter + in_a1_lo); - __osRestoreInt(mask); - return; + u32 mask; + int in_a1_lo; + + mask = __osDisableInt(); + __osTimerCounter = osGetCount(); + __osSetCompare(__osTimerCounter + in_a1_lo); + __osRestoreInt(mask); + return; } @@ -16840,47 +16923,47 @@ void __osSetTimerIntr(OSTime tim) OSTime __osInsertTimer(OSTimer *t) { - uint uVar1; - int iVar2; - u32 mask; - uint uStack16; - uint uStack12; - OSTimer *pOStack4; - - mask = __osDisableInt(); - pOStack4 = (OSTimer *)__osTimerList->next; - uStack12 = *(uint *)((int)&t->value + 4); - uStack16 = *(uint *)&t->value; - if (pOStack4 != __osTimerList) { - if ((*(uint *)&pOStack4->value <= uStack16) && - ((*(uint *)&pOStack4->value < uStack16 || (*(uint *)((int)&pOStack4->value + 4) < uStack12))) - ) { - while( true ) { - uVar1 = *(uint *)((int)&pOStack4->value + 4); - uStack16 = (uStack16 - *(int *)&pOStack4->value) - (uint)(uStack12 < uVar1); - uStack12 -= uVar1; - pOStack4 = (OSTimer *)pOStack4->next; - if (pOStack4 == __osTimerList) break; - if ((uStack16 <= *(uint *)&((OSTimer_s *)pOStack4)->value) && - ((uStack16 < *(uint *)&((OSTimer_s *)pOStack4)->value || - (uStack12 <= *(uint *)((int)&((OSTimer_s *)pOStack4)->value + 4))))) break; - } + uint uVar1; + int iVar2; + u32 mask; + uint uStack16; + uint uStack12; + OSTimer *pOStack4; + + mask = __osDisableInt(); + pOStack4 = (OSTimer *)__osTimerList->next; + uStack12 = *(uint *)((int)&t->value + 4); + uStack16 = *(uint *)&t->value; + if (pOStack4 != __osTimerList) { + if ((*(uint *)&pOStack4->value <= uStack16) && + ((*(uint *)&pOStack4->value < uStack16 || + (*(uint *)((int)&pOStack4->value + 4) < uStack12)))) { + while( true ) { + uVar1 = *(uint *)((int)&pOStack4->value + 4); + uStack16 = (uStack16 - *(int *)&pOStack4->value) - (uint)(uStack12 < uVar1); + uStack12 -= uVar1; + pOStack4 = (OSTimer *)pOStack4->next; + if (pOStack4 == __osTimerList) break; + if ((uStack16 <= *(uint *)&((OSTimer_s *)pOStack4)->value) && + ((uStack16 < *(uint *)&((OSTimer_s *)pOStack4)->value || + (uStack12 <= *(uint *)((int)&((OSTimer_s *)pOStack4)->value + 4))))) break; + } + } } - } - *(uint *)&t->value = uStack16; - *(uint *)((int)&t->value + 4) = uStack12; - if (pOStack4 != __osTimerList) { - uVar1 = *(uint *)((int)&((OSTimer_s *)pOStack4)->value + 4); - iVar2 = *(int *)&((OSTimer_s *)pOStack4)->value; - *(int *)((int)&((OSTimer_s *)pOStack4)->value + 4) = uVar1 - uStack12; - *(uint *)&((OSTimer_s *)pOStack4)->value = (iVar2 - uStack16) - (uint)(uVar1 < uStack12); - } - *(OSTimer **)&t->next = pOStack4; - t->prev = ((OSTimer_s *)pOStack4)->prev; - *(OSTimer **)&((OSTimer_s *)pOStack4)->prev->next = t; - *(OSTimer **)&((OSTimer_s *)pOStack4)->prev = t; - __osRestoreInt(mask); - return (longlong)(int)uStack16; + *(uint *)&t->value = uStack16; + *(uint *)((int)&t->value + 4) = uStack12; + if (pOStack4 != __osTimerList) { + uVar1 = *(uint *)((int)&((OSTimer_s *)pOStack4)->value + 4); + iVar2 = *(int *)&((OSTimer_s *)pOStack4)->value; + *(int *)((int)&((OSTimer_s *)pOStack4)->value + 4) = uVar1 - uStack12; + *(uint *)&((OSTimer_s *)pOStack4)->value = (iVar2 - uStack16) - (uint)(uVar1 < uStack12); + } + *(OSTimer **)&t->next = pOStack4; + t->prev = ((OSTimer_s *)pOStack4)->prev; + *(OSTimer **)&((OSTimer_s *)pOStack4)->prev->next = t; + *(OSTimer **)&((OSTimer_s *)pOStack4)->prev = t; + __osRestoreInt(mask); + return (longlong)(int)uStack16; } @@ -16888,10 +16971,10 @@ OSTime __osInsertTimer(OSTimer *t) OSPri osGetThreadPri(OSThread *t) { - if (t == NULL) { - t = __osRunningThread; - } - return t->priority; + if (t == NULL) { + t = __osRunningThread; + } + return t->priority; } @@ -16903,34 +16986,34 @@ OSPri osGetThreadPri(OSThread *t) void __osViInit(void) { - bzero(&vi,0x60); - __osViCurr = &vi; - __osViNext = &vi_buffer_next; - vi_buffer_next.retraceCount = 1; - vi.retraceCount = 1; - if (osTvType == 0) { - osViClock = 0x2f5b2d2; - vi_buffer_next.modep = (OSViMode *)osViModePalLan1; - } - else { - osViClock = 0x2e6d354; - vi_buffer_next.modep = (OSViMode *)osViModeNtscLan1; - } - vi_buffer_next.state = 0x20; - vi_buffer_next.control = ((vi_buffer_next.modep)->comRegs).ctrl; - do { - } while (10 < _VI_CURRENT_REG); - _VI_CONTROL_REG = 0; - __osViSwapContext(); - return; + bzero(vi,0x60); + __osViCurr = vi; + __osViNext = vi + 1; + vi[1].retraceCount = 1; + vi[0].retraceCount = 1; + if (osTvType == 0) { + vi[1].modep = (OSViMode *)osViModePalLan1; + osViClock = 0x2f5b2d2; + } + else { + vi[1].modep = (OSViMode *)osViModeNtscLan1; + osViClock = 0x2e6d354; + } + vi[1].state = 0x20; + vi[1].control = ((vi[1].modep)->comRegs).ctrl; + do { + } while (10 < _VI_CURRENT_REG); + _VI_CONTROL_REG = 0; + __osViSwapContext(); + return; } -undefined * __osViGetCurrentContext(void) +__OSViContext * __osViGetCurrentContext(void) { - return (undefined *)__osViCurr; + return __osViCurr; } @@ -16940,104 +17023,105 @@ undefined * __osViGetCurrentContext(void) void __osViSwapContext(void) { - float fVar1; - __OSViContext *p_Var2; - uint uVar3; - __OSViContext *p_Var4; - __OSViContext *p_Var5; - float fVar6; - uint uVar7; - u32 hStart; - u32 uStack12; - __OSViContext *vc; - OSViMode *vm; - - vc = __osViNext; - vm = __osViNext->modep; - uVar3 = _VI_CURRENT_REG & 1; - uStack12 = osVirtualToPhysical(__osViNext->framep); - uStack12 = vm->fldRegs[uVar3].origin + uStack12; - if ((vc->state & 2) == 0) { - *(u32 *)&(vc->x).field_0x8 = (vm->comRegs).xScale; - } - else { - *(uint *)&(vc->x).field_0x8 = *(uint *)&(vc->x).field_0x8 | (vm->comRegs).xScale & 0xfffff000; - } - if ((vc->state & 4) == 0) { - *(u32 *)(vc + 1) = vm->fldRegs[uVar3].yScale; - goto LAB_70018d30; - } - fVar6 = (float)(vm->fldRegs[uVar3].yScale & 0xfff); - if (false) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar6 = *(float *)((int)&(vc->y).factor + 2) * fVar6; - if (false) { - fVar1 = ROUND(fVar6); - } - else { - fVar1 = FLOOR(fVar6); - } - uVar7 = (uint)fVar1; - if (true) { - if ((int)uVar7 < 0) goto LAB_70018cc4; - } - else { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); + float fVar1; + __OSViContext *p_Var2; + uint uVar3; + __OSViContext *p_Var4; + __OSViContext *p_Var5; + float fVar6; + u32 uVar7; + u32 hStart; + u32 uStack12; + __OSViContext *vc; + OSViMode *vm; + + vc = __osViNext; + vm = __osViNext->modep; + uVar3 = _VI_CURRENT_REG & 1; + uStack12 = osVirtualToPhysical(__osViNext->framep); + uStack12 = vm->fldRegs[uVar3].origin + uStack12; + if ((vc->state & 2) == 0) { + *(u32 *)&(vc->x).field_0x8 = (vm->comRegs).xScale; } else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); + *(uint *)&(vc->x).field_0x8 = + *(uint *)&(vc->x).field_0x8 | (vm->comRegs).xScale & 0xfffff000; } + if ((vc->state & 4) == 0) { + vc->pad = vm->fldRegs[uVar3].yScale; + goto LAB_70018d30; + } + fVar6 = (float)(vm->fldRegs[uVar3].yScale & 0xfff); if (false) { + fVar6 = fVar6 + 4294967296.00000000; + } + fVar6 = *(float *)((int)&(vc->y).factor + 2) * fVar6; + if (false) { + fVar1 = ROUND(fVar6); + } + else { + fVar1 = FLOOR(fVar6); + } + uVar7 = (u32)fVar1; + if (true) { + if ((int)uVar7 < 0) goto LAB_70018cc4; + } + else { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) { LAB_70018cc4: - uVar7 = 0xffffffff; + uVar7 = 0xffffffff; + } + else { + uVar7 = (int)fVar6 | 0x80000000; + } } - else { - uVar7 = (int)fVar6 | 0x80000000; - } - } - *(uint *)(vc + 1) = uVar7; - *(uint *)(vc + 1) = *(uint *)(vc + 1) | vm->fldRegs[uVar3].yScale & 0xfffff000; + vc->pad = uVar7; + vc->pad = vc->pad | vm->fldRegs[uVar3].yScale & 0xfffff000; LAB_70018d30: - hStart = (vm->comRegs).hStart; - if ((vc->state & 0x20) != 0) { - hStart = 0; - } - if ((vc->state & 0x40) != 0) { - *(undefined4 *)(vc + 1) = 0; - uStack12 = osVirtualToPhysical(vc->framep); - } - if ((vc->state & 0x80) != 0) { - *(uint *)(vc + 1) = ((uint)*(ushort *)&(vc->y).field_0x6 & 0x3ff) << 0x10; - uStack12 = osVirtualToPhysical(vc->framep); - } - p_Var2 = __osViCurr; - _VI_ORIGIN_REG = uStack12; - _VI_WIDTH_REG = (vm->comRegs).width; - _VI_BURST_REG = (vm->comRegs).burst; - _VI_V_SYNC_REG = (vm->comRegs).vSync; - _VI_H_SYNC_REG = (vm->comRegs).hSync; - _VI_LEAP_REG = (vm->comRegs).leap; - _VI_H_START_REG = hStart; - _VI_V_START_REG = vm->fldRegs[uVar3].vStart; - _VI_V_BURST_REG = vm->fldRegs[uVar3].vBurst; - _VI_V_INTR_REG = vm->fldRegs[uVar3].vIntr; - _VI_X_SCALE_REG = *(undefined4 *)&(vc->x).field_0x8; - _VI_Y_SCALE_REG = *(undefined4 *)(vc + 1); - _VI_CONTROL_REG = vc->control; - __osViNext = __osViCurr; - __osViCurr = vc; - p_Var4 = vc; - do { - p_Var5 = (__OSViContext *)&p_Var4->control; - *(undefined4 *)p_Var2 = *(undefined4 *)p_Var4; - p_Var2->framep = p_Var4->framep; - p_Var2->modep = p_Var4->modep; - p_Var4 = p_Var5; - p_Var2 = (__OSViContext *)&p_Var2->control; - } while (p_Var5 != (__OSViContext *)&vc[1].framep); - return; + hStart = (vm->comRegs).hStart; + if ((vc->state & 0x20) != 0) { + hStart = 0; + } + if ((vc->state & 0x40) != 0) { + vc->pad = 0; + uStack12 = osVirtualToPhysical(vc->framep); + } + if ((vc->state & 0x80) != 0) { + vc->pad = ((uint)*(ushort *)&(vc->y).field_0x6 & 0x3ff) << 0x10; + uStack12 = osVirtualToPhysical(vc->framep); + } + p_Var2 = __osViCurr; + _VI_ORIGIN_REG = uStack12; + _VI_WIDTH_REG = (vm->comRegs).width; + _VI_BURST_REG = (vm->comRegs).burst; + _VI_V_SYNC_REG = (vm->comRegs).vSync; + _VI_H_SYNC_REG = (vm->comRegs).hSync; + _VI_LEAP_REG = (vm->comRegs).leap; + _VI_H_START_REG = hStart; + _VI_V_START_REG = vm->fldRegs[uVar3].vStart; + _VI_V_BURST_REG = vm->fldRegs[uVar3].vBurst; + _VI_V_INTR_REG = vm->fldRegs[uVar3].vIntr; + _VI_X_SCALE_REG = *(undefined4 *)&(vc->x).field_0x8; + _VI_Y_SCALE_REG = vc->pad; + _VI_CONTROL_REG = vc->control; + __osViNext = __osViCurr; + __osViCurr = vc; + p_Var4 = vc; + do { + p_Var5 = (__OSViContext *)&p_Var4->control; + *(undefined4 *)p_Var2 = *(undefined4 *)p_Var4; + p_Var2->framep = p_Var4->framep; + p_Var2->modep = p_Var4->modep; + p_Var4 = p_Var5; + p_Var2 = (__OSViContext *)&p_Var2->control; + } while (p_Var5 != vc + 1); + return; } @@ -17047,7 +17131,7 @@ LAB_70018d30: u32 __osSpGetStatus(void) { - return _SP_STATUS_REG; + return _SP_STATUS_REG; } @@ -17057,8 +17141,8 @@ u32 __osSpGetStatus(void) void __osSpSetStatus(u32 data) { - _SP_STATUS_REG = data; - return; + _SP_STATUS_REG = data; + return; } @@ -17068,16 +17152,16 @@ void __osSpSetStatus(u32 data) s32 __osSpSetPc(u32 data) { - s32 sVar1; - - if ((_SP_STATUS_REG & 1) == 0) { - sVar1 = -1; - } - else { - sVar1 = 0; - _SP_PC_REG = data; - } - return sVar1; + s32 sVar1; + + if ((_SP_STATUS_REG & 1) == 0) { + sVar1 = -1; + } + else { + sVar1 = 0; + _SP_PC_REG = data; + } + return sVar1; } @@ -17087,25 +17171,25 @@ s32 __osSpSetPc(u32 data) s32 __osSpRawStartDma(s32 direction,u32 devAddr,void *dramAddr,u32 size) { - int iVar1; - s32 ret; - - iVar1 = __osSpDeviceBusy(); - if (iVar1 == 0) { - _SP_MEM_ADDR_REG = devAddr; - _SP_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); - if (direction == 0) { - _SP_WR_LEN_REG = size - 1; + int iVar1; + s32 ret; + + iVar1 = __osSpDeviceBusy(); + if (iVar1 == 0) { + _SP_MEM_ADDR_REG = devAddr; + _SP_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); + if (direction == 0) { + _SP_WR_LEN_REG = size - 1; + } + else { + _SP_RD_LEN_REG = size - 1; + } + ret = 0; } else { - _SP_RD_LEN_REG = size - 1; + ret = -1; } - ret = 0; - } - else { - ret = -1; - } - return ret; + return ret; } @@ -17115,7 +17199,7 @@ s32 __osSpRawStartDma(s32 direction,u32 devAddr,void *dramAddr,u32 size) int __osSpDeviceBusy(void) { - return (int)(uint)((_SP_STATUS_REG & 0x1c) != 0); + return (int)(uint)((_SP_STATUS_REG & 0x1c) != 0); } @@ -17125,25 +17209,40 @@ int __osSpDeviceBusy(void) ulonglong __osDpDeviceBusy(void) { - return (ulonglong)((_DPC_STATUS_REG & 0x100) != 0); + return (ulonglong)((_DPC_STATUS_REG & 0x100) != 0); } -void __osProbeTLB(void *vaddr) +u32 __osProbeTLB(void *vaddr) { - setCopReg(0,EntryHi,(longlong)EntryHi._4_4_ & 0xffU | (longlong)(int)vaddr & 0xffffffffffffe000U,0 - ); - Index = TLB_probe_for_matching_entry(EntryHi); - if ((Index & 0x80000000) == 0) { - EntryHi = TLB_read_indexed_entryHi(Index); - EntryLo0 = TLB_read_indexed_entryLo0(Index); - EntryLo1 = TLB_read_indexed_entryLo1(Index); - PageMask = TLB_read_indexed_entryLo1(Index); - } - setCopReg(0,EntryHi,(longlong)EntryHi._4_4_,0); - return; + u32 ret; + uint uVar1; + + setCopReg(0,EntryHi,(longlong)EntryHi._4_4_ & 0xffU | (longlong)(int)vaddr & 0xffffffffffffe000U + ,0); + Index = TLB_probe_for_matching_entry(EntryHi); + if ((Index & 0x80000000) == 0) { + EntryHi = TLB_read_indexed_entryHi(Index); + EntryLo0 = TLB_read_indexed_entryLo0(Index); + EntryLo1 = TLB_read_indexed_entryLo1(Index); + PageMask = TLB_read_indexed_entryLo1(Index); + uVar1 = PageMask._4_4_ + 0x2000U >> 1; + if ((uVar1 & (uint)vaddr) == 0) { + } + else { + EntryLo0._4_4_ = EntryLo1._4_4_; + } + if ((EntryLo0._4_4_ & 2) != 0) { + ret = (EntryLo0._4_4_ & 0x3fffffc0) * 0x40 + ((uint)vaddr & uVar1 - 1); + goto LAB_700190cc; + } + } + ret = 0xffffffff; +LAB_700190cc: + setCopReg(0,EntryHi,(longlong)EntryHi._4_4_,0); + return ret; } @@ -17151,8 +17250,8 @@ void __osProbeTLB(void *vaddr) void alSynDelete(ALSynth *drvr) { - drvr->head = NULL; - return; + drvr->head = NULL; + return; } @@ -17162,7 +17261,7 @@ void alSynDelete(ALSynth *drvr) ulonglong __osAiDeviceBusy(void) { - return (ulonglong)((_AI_STATUS_REG & 0x80000000) != 0); + return (ulonglong)((_AI_STATUS_REG & 0x80000000) != 0); } @@ -17170,10 +17269,10 @@ ulonglong __osAiDeviceBusy(void) void alSaveNew(ALSave *f) { - alFilterNew((ALFilter *)f,_alSavePull,alSaveParam,3); - f[1].first = 0; - *(undefined4 *)(f + 2) = 1; - return; + alFilterNew((ALFilter *)f,_alSavePull,alSaveParam,3); + f[1].first = 0; + *(undefined4 *)(f + 2) = 1; + return; } @@ -17181,11 +17280,11 @@ void alSaveNew(ALSave *f) void alMainBusNew(ALMainBus *m,void *sources,int maxSources) { - alFilterNew((ALFilter *)m,_alMainBusPull,alMainBusParam,7); - *(undefined4 *)(m + 0x14) = 0; - *(int *)(m + 0x18) = maxSources; - *(void **)(m + 0x1c) = sources; - return; + alFilterNew((ALFilter *)m,_alMainBusPull,alMainBusParam,7); + *(undefined4 *)(m + 0x14) = 0; + *(int *)(m + 0x18) = maxSources; + *(void **)(m + 0x1c) = sources; + return; } @@ -17193,11 +17292,11 @@ void alMainBusNew(ALMainBus *m,void *sources,int maxSources) void alAuxBusNew(ALAuxBus *m,void *sources,int maxSources) { - alFilterNew((ALFilter *)m,_alAuxBusPull,alAuxBusParam,6); - *(undefined4 *)(m + 0x14) = 0; - *(int *)(m + 0x18) = maxSources; - *(void **)(m + 0x1c) = sources; - return; + alFilterNew((ALFilter *)m,_alAuxBusPull,alAuxBusParam,6); + *(undefined4 *)(m + 0x14) = 0; + *(int *)(m + 0x18) = maxSources; + *(void **)(m + 0x1c) = sources; + return; } @@ -17205,19 +17304,19 @@ void alAuxBusNew(ALAuxBus *m,void *sources,int maxSources) void alResampleNew(ALResampler *r,ALHeap *hp) { - s32 in_v0_lo; - - alFilterNew((ALFilter *)r,alResamplePull,alResampleParam,1); - _alHeapDBAlloc(NULL,0,hp,1,0x20); - r->first = in_v0_lo; - *(undefined4 *)(r + 1) = 1; - r[1].upitch = 0; - r->ctrlTail = NULL; - r[1].state = NULL; - r[1].ratio = 0.00000000; - r->motion = 0; - r->ctrlList = (ALParam *)0x3f800000; - return; + s32 in_v0_lo; + + alFilterNew((ALFilter *)r,alResamplePull,alResampleParam,1); + _alHeapDBAlloc(NULL,0,hp,1,0x20); + r->first = in_v0_lo; + *(undefined4 *)(r + 1) = 1; + r[1].upitch = 0; + r->ctrlTail = NULL; + r[1].state = NULL; + r[1].ratio = 0.00000000; + r->motion = 0; + r->ctrlList = (ALParam *)0x3f800000; + return; } @@ -17225,20 +17324,20 @@ void alResampleNew(ALResampler *r,ALHeap *hp) void alLoadNew(ALLoadFilter *f,ALDMANew dmaNew,ALHeap *hp) { - ALWaveTable_s *in_v0_lo; - ALDMAproc pAVar1; - - alFilterNew((ALFilter *)f,alAdpcmPull,alLoadParam,0); - _alHeapDBAlloc(NULL,0,hp,1,0x20); - *(ALWaveTable_s **)&(f->loop).count = in_v0_lo; - _alHeapDBAlloc(NULL,0,hp,1,0x20); - f->table = in_v0_lo; - pAVar1 = (*dmaNew)(&f->memin); - *(ALDMAproc *)&f->first = pAVar1; - f[1].state = NULL; - f[1].lstate = (ADPCM_STATE *)((int)&rgba + 1); - f[1].loop.start = 0; - return; + ALWaveTable_s *in_v0_lo; + ALDMAproc pAVar1; + + alFilterNew((ALFilter *)f,alAdpcmPull,alLoadParam,0); + _alHeapDBAlloc(NULL,0,hp,1,0x20); + *(ALWaveTable_s **)&(f->loop).count = in_v0_lo; + _alHeapDBAlloc(NULL,0,hp,1,0x20); + f->table = in_v0_lo; + pAVar1 = (*dmaNew)(&f->memin); + *(ALDMAproc *)&f->first = pAVar1; + f[1].state = NULL; + f[1].lstate = (ADPCM_STATE *)((int)&rgba + 1); + f[1].loop.start = 0; + return; } @@ -17246,29 +17345,29 @@ void alLoadNew(ALLoadFilter *f,ALDMANew dmaNew,ALHeap *hp) void alEnvmixerNew(ALEnvMixer *e,ALHeap *hp) { - undefined4 in_v0_lo; - - alFilterNew((ALFilter *)e,_alEnvmixerPull,alEnvmixerParam,4); - _alHeapDBAlloc(NULL,0,hp,1,0x50); - *(undefined4 *)&e->lratl = in_v0_lo; - e->motion = 1; - *(undefined4 *)&e[1].cvolL = 0; - e->rratl = 1; - *(undefined2 *)&e->first = 1; - *(undefined2 *)((int)&e->ctrlList + 2) = 1; - e->rratm = 1; - e->rtgt = 1; - *(undefined2 *)&e->delta = 0; - *(undefined2 *)((int)&e->delta + 2) = 0; - *(undefined2 *)((int)&e->segEnd + 2) = 1; - *(undefined2 *)&e->segEnd = 0; - e->ctrlTail = NULL; - e->sources = NULL; - e->ltgt = 0; - *(undefined4 *)(e + 1) = 0; - e[1].state = NULL; - *(undefined4 *)&e[1].pan = 0; - return; + undefined4 in_v0_lo; + + alFilterNew((ALFilter *)e,_alEnvmixerPull,alEnvmixerParam,4); + _alHeapDBAlloc(NULL,0,hp,1,0x50); + *(undefined4 *)&e->lratl = in_v0_lo; + e->motion = 1; + *(undefined4 *)&e[1].cvolL = 0; + e->rratl = 1; + *(undefined2 *)&e->first = 1; + *(undefined2 *)((int)&e->ctrlList + 2) = 1; + e->rratm = 1; + e->rtgt = 1; + *(undefined2 *)&e->delta = 0; + *(undefined2 *)((int)&e->delta + 2) = 0; + *(undefined2 *)((int)&e->segEnd + 2) = 1; + *(undefined2 *)&e->segEnd = 0; + e->ctrlTail = NULL; + e->sources = NULL; + e->ltgt = 0; + *(undefined4 *)(e + 1) = 0; + e[1].state = NULL; + *(undefined4 *)&e[1].pan = 0; + return; } @@ -17276,37 +17375,37 @@ void alEnvmixerNew(ALEnvMixer *e,ALHeap *hp) void init_lpfilter(undefined8 param_1,short *param_2) { - int iVar1; - int iVar2; - short *psVar3; - short sVar4; - double dVar5; - double dVar6; - uint in_register_00001060; - - sVar4 = (short)(((int)*param_1._4_4_ << 0xe) >> 0xf); - param_1._4_4_[1] = 0x4000 - sVar4; - *(undefined4 *)(param_1._4_4_ + 0x16) = 1; - iVar1 = 0; - do { - psVar3 = param_1._4_4_; - iVar2 = iVar1; - iVar1 = iVar2 + 1; - psVar3[4] = 0; - param_1._4_4_ = psVar3 + 1; - } while (iVar1 < 8); - iVar2 += 2; - psVar3[5] = sVar4; - dVar6 = (double)(int)sVar4 / (double)((ulonglong)in_register_00001060 << 0x20); - dVar5 = dVar6; - psVar3 = psVar3 + 2; - while (iVar2 < 0x10) { - dVar5 = dVar5 * dVar6; - iVar2 += 1; - psVar3[4] = (short)(int)(dVar5 * (double)((ulonglong)in_register_00001060 << 0x20)); - psVar3 = psVar3 + 1; - } - return; + int iVar1; + int iVar2; + short *psVar3; + short sVar4; + double dVar5; + double dVar6; + uint in_register_00001060; + + sVar4 = (short)(((int)*param_1._4_4_ << 0xe) >> 0xf); + param_1._4_4_[1] = 0x4000 - sVar4; + *(undefined4 *)(param_1._4_4_ + 0x16) = 1; + iVar1 = 0; + do { + psVar3 = param_1._4_4_; + iVar2 = iVar1; + iVar1 = iVar2 + 1; + psVar3[4] = 0; + param_1._4_4_ = psVar3 + 1; + } while (iVar1 < 8); + iVar2 += 2; + psVar3[5] = sVar4; + dVar6 = (double)(int)sVar4 / (double)((ulonglong)in_register_00001060 << 0x20); + dVar5 = dVar6; + psVar3 = psVar3 + 2; + while (iVar2 < 0x10) { + dVar5 = dVar5 * dVar6; + iVar2 += 1; + psVar3[4] = (short)(int)(dVar5 * (double)((ulonglong)in_register_00001060 << 0x20)); + psVar3 = psVar3 + 1; + } + return; } @@ -17314,121 +17413,122 @@ void init_lpfilter(undefined8 param_1,short *param_2) void alFxNew(ALFx *r,ALSynConfig *c,ALHeap *hp) { - byte bVar1; - double dVar2; - ALSynConfig *pAVar3; - short *extraout_a1_lo; - uint uVar4; - int iVar5; - uint *puVar6; - uint uVar7; - undefined4 *puVar8; - ulonglong uVar9; - uint uVar10; - double dVar11; - double dVar12; - - alFilterNew((ALFilter *)r,NULL,alFxParam,5); - *(code **)&r->base = _alFxPull; - r[1].length = 0x7001ffa8; - puVar8 = NULL_PARAMS; - switch(c->fxType) { - case '\x01': - puVar8 = SMALLROOM_PARAMS; - break; - case '\x02': - puVar8 = BIGROOM_PARAMS; - break; - case '\x03': - puVar8 = CHORUS_PARAMS; - break; - case '\x04': - puVar8 = FLANGE_PARAMS; - break; - case '\x05': - puVar8 = ECHO_PARAMS; - break; - case '\x06': - puVar8 = c->params; - } - uVar10 = *puVar8; - uVar4 = 2; - *(char *)&r[1].input = (char)uVar10; - *(undefined4 *)(r + 1) = puVar8[1]; - pAVar3 = c; - _alHeapDBAlloc(NULL,0,hp,uVar10 & 0xff,0x28); - *(ALSynConfig **)&r[1].base = pAVar3; - _alHeapDBAlloc(NULL,0,hp,*(s32 *)(r + 1),2); - *(ALSynConfig **)&r->section_count = pAVar3; - *(ALSynConfig **)&r->paramHdl = pAVar3; - uVar10 = 0; - if (*(int *)(r + 1) != 0) { - iVar5 = *(int *)&r->section_count; - while( true ) { - *(undefined2 *)(iVar5 + uVar10 * 2) = 0; - uVar10 = uVar10 + 1 & 0xffff; - if (*(uint *)(r + 1) <= uVar10) break; - iVar5 = *(int *)&r->section_count; + byte bVar1; + double dVar2; + ALSynConfig *pAVar3; + short *extraout_a1_lo; + uint uVar4; + int iVar5; + uint *puVar6; + uint uVar7; + undefined4 *puVar8; + ulonglong uVar9; + uint uVar10; + double dVar11; + double dVar12; + + alFilterNew((ALFilter *)r,NULL,alFxParam,5); + *(code **)&r->base = _alFxPull; + r[1].length = 0x7001ffa8; + puVar8 = NULL_PARAMS; + switch(c->fxType) { + case '\x01': + puVar8 = SMALLROOM_PARAMS; + break; + case '\x02': + puVar8 = BIGROOM_PARAMS; + break; + case '\x03': + puVar8 = CHORUS_PARAMS; + break; + case '\x04': + puVar8 = FLANGE_PARAMS; + break; + case '\x05': + puVar8 = ECHO_PARAMS; + break; + case '\x06': + puVar8 = c->params; } - } - dVar2 = CONVERT; - uVar9 = 0; - if (*(char *)&r[1].input != '\0') { - do { - uVar7 = uVar4 + 1 & 0xffff; - puVar6 = (uint *)(r[1].base + (int)uVar9 * 0x14); - *puVar6 = puVar8[uVar4]; - uVar10 = uVar7 + 1 & 0xffff; - puVar6[1] = puVar8[uVar7]; - uVar4 = uVar10 + 1 & 0xffff; - *(undefined2 *)((int)puVar6 + 10) = (short)puVar8[uVar10]; - uVar10 = uVar4 + 1 & 0xffff; - *(short *)(puVar6 + 2) = (short)puVar8[uVar4]; - uVar4 = uVar10 + 1 & 0xffff; - *(short *)(puVar6 + 3) = (short)puVar8[uVar10]; - uVar10 = puVar8[uVar4]; - uVar7 = uVar4 + 2; - if (uVar10 == 0) { - puVar6[9] = 0; - } - else { - uVar7 = uVar4 + 1 & 0xffff; - dVar11 = (double)((float)uVar10 / 1000.00000000) + (double)((float)uVar10 / 1000.00000000); - dVar12 = (double)(puVar6[1] - *puVar6); - *(float *)(puVar6 + 4) = (float)(dVar11 / (double)c->outputRate); - if ((int)(puVar6[1] - *puVar6) < 0) { - dVar12 = dVar12 + (double)((ulonglong)dVar11 & 0xffffffff00000000); + uVar10 = *puVar8; + uVar4 = 2; + *(char *)&r[1].input = (char)uVar10; + *(undefined4 *)(r + 1) = puVar8[1]; + pAVar3 = c; + _alHeapDBAlloc(NULL,0,hp,uVar10 & 0xff,0x28); + *(ALSynConfig **)&r[1].base = pAVar3; + _alHeapDBAlloc(NULL,0,hp,*(s32 *)(r + 1),2); + *(ALSynConfig **)&r->section_count = pAVar3; + *(ALSynConfig **)&r->paramHdl = pAVar3; + uVar10 = 0; + if (*(int *)(r + 1) != 0) { + iVar5 = *(int *)&r->section_count; + while( true ) { + *(undefined2 *)(iVar5 + uVar10 * 2) = 0; + uVar10 = uVar10 + 1 & 0xffff; + if (*(uint *)(r + 1) <= uVar10) break; + iVar5 = *(int *)&r->section_count; } - uVar4 = puVar8[uVar7]; - uVar7 += 1; - puVar6[5] = 0x3f800000; - puVar6[6] = 0; - *(float *)(puVar6 + 7) = (float)(((double)uVar4 / dVar2) * dVar12); - _alHeapDBAlloc(NULL,0,hp,1,0x34); - puVar6[9] = uVar10; - _alHeapDBAlloc(NULL,0,hp,1,0x20); - *(uint *)(puVar6[9] + 0x14) = uVar10; - *(undefined4 *)(puVar6[9] + 0x20) = 0; - *(undefined4 *)(puVar6[9] + 0x24) = 1; - } - if (puVar8[uVar7 & 0xffff] == 0) { - puVar6[8] = 0; - bVar1 = *(byte *)&r[1].input; - } - else { - _alHeapDBAlloc(NULL,0,hp,1,0x30); - puVar6[8] = uVar10; - _alHeapDBAlloc(NULL,0,hp,1,8); - *(uint *)(puVar6[8] + 0x28) = uVar10; - *(undefined2 *)puVar6[8] = (short)puVar8[uVar7 & 0xffff]; - init_lpfilter((longlong)(int)puVar6[8],extraout_a1_lo); - bVar1 = *(byte *)&r[1].input; - } - uVar4 = (uVar7 & 0xffff) + 1 & 0xffff; - uVar9 = (longlong)((int)uVar9 + 1) & 0xffff; - } while (uVar9 < (ulonglong)bVar1); - } - return; + } + dVar2 = CONVERT; + uVar9 = 0; + if (*(char *)&r[1].input != '\0') { + do { + uVar7 = uVar4 + 1 & 0xffff; + puVar6 = (uint *)(r[1].base + (int)uVar9 * 0x14); + *puVar6 = puVar8[uVar4]; + uVar10 = uVar7 + 1 & 0xffff; + puVar6[1] = puVar8[uVar7]; + uVar4 = uVar10 + 1 & 0xffff; + *(undefined2 *)((int)puVar6 + 10) = (short)puVar8[uVar10]; + uVar10 = uVar4 + 1 & 0xffff; + *(short *)(puVar6 + 2) = (short)puVar8[uVar4]; + uVar4 = uVar10 + 1 & 0xffff; + *(short *)(puVar6 + 3) = (short)puVar8[uVar10]; + uVar10 = puVar8[uVar4]; + uVar7 = uVar4 + 2; + if (uVar10 == 0) { + puVar6[9] = 0; + } + else { + uVar7 = uVar4 + 1 & 0xffff; + dVar11 = (double)((float)uVar10 / 1000.00000000) + + (double)((float)uVar10 / 1000.00000000); + dVar12 = (double)(puVar6[1] - *puVar6); + *(float *)(puVar6 + 4) = (float)(dVar11 / (double)c->outputRate); + if ((int)(puVar6[1] - *puVar6) < 0) { + dVar12 = dVar12 + (double)((ulonglong)dVar11 & 0xffffffff00000000); + } + uVar4 = puVar8[uVar7]; + uVar7 += 1; + puVar6[5] = 0x3f800000; + puVar6[6] = 0; + *(float *)(puVar6 + 7) = (float)(((double)uVar4 / dVar2) * dVar12); + _alHeapDBAlloc(NULL,0,hp,1,0x34); + puVar6[9] = uVar10; + _alHeapDBAlloc(NULL,0,hp,1,0x20); + *(uint *)(puVar6[9] + 0x14) = uVar10; + *(undefined4 *)(puVar6[9] + 0x20) = 0; + *(undefined4 *)(puVar6[9] + 0x24) = 1; + } + if (puVar8[uVar7 & 0xffff] == 0) { + puVar6[8] = 0; + bVar1 = *(byte *)&r[1].input; + } + else { + _alHeapDBAlloc(NULL,0,hp,1,0x30); + puVar6[8] = uVar10; + _alHeapDBAlloc(NULL,0,hp,1,8); + *(uint *)(puVar6[8] + 0x28) = uVar10; + *(undefined2 *)puVar6[8] = (short)puVar8[uVar7 & 0xffff]; + init_lpfilter((longlong)(int)puVar6[8],extraout_a1_lo); + bVar1 = *(byte *)&r[1].input; + } + uVar4 = (uVar7 & 0xffff) + 1 & 0xffff; + uVar9 = (longlong)((int)uVar9 + 1) & 0xffff; + } while (uVar9 < bVar1); + } + return; } @@ -17436,13 +17536,13 @@ void alFxNew(ALFx *r,ALSynConfig *c,ALHeap *hp) ALFxRef _alSynAllocFX(ALSynth *s,s16 bus,ALSynConfig *c,ALHeap *hp) { - int iVar1; - - iVar1 = (int)bus * 0x4c; - alFxNew((ALFx *)(s->auxBus + iVar1 + 0x20),c,hp); - alFxParam(s->auxBus + iVar1 + 0x20,1,s->auxBus + iVar1); - alMainBusParam(s->mainBus,2,s->auxBus + iVar1 + 0x20); - return (ALFxRef)(s->auxBus + iVar1 + 0x20); + int iVar1; + + iVar1 = (int)bus * 0x4c; + alFxNew((ALFx *)(s->auxBus + iVar1 + 0x20),c,hp); + alFxParam(s->auxBus + iVar1 + 0x20,1,s->auxBus + iVar1); + alMainBusParam(s->mainBus,2,s->auxBus + iVar1 + 0x20); + return (ALFxRef)(s->auxBus + iVar1 + 0x20); } @@ -17450,11 +17550,11 @@ ALFxRef _alSynAllocFX(ALSynth *s,s16 bus,ALSynConfig *c,ALHeap *hp) s32 alMainBusParam(void *filter,s32 paramID,void *param) { - if (paramID == 2) { - *(void **)(*(int *)((int)filter + 0x1c) + *(int *)((int)filter + 0x14) * 4) = param; - *(int *)((int)filter + 0x14) = *(int *)((int)filter + 0x14) + 1; - } - return 0; + if (paramID == 2) { + *(void **)(*(int *)((int)filter + 0x1c) + *(int *)((int)filter + 0x14) * 4) = param; + *(int *)((int)filter + 0x14) = *(int *)((int)filter + 0x14) + 1; + } + return 0; } @@ -17462,36 +17562,36 @@ s32 alMainBusParam(void *filter,s32 paramID,void *param) longlong _alMainBusPull(void *filter,s16 *outp,s32 outCount,s32 sampleOffset,Acmd *p) { - uint uVar1; - undefined4 *puVar2; - int iVar3; - int *piVar4; - longlong lVar5; - - piVar4 = *(int **)((int)filter + 0x1c); - uVar1 = outCount << 1; - *(undefined4 *)p = 0x2000440; - *(uint *)((int)p + 4) = uVar1; - *(undefined4 *)(p + 1) = 0x2000580; - *(uint *)((int)p + 0xc) = uVar1; - iVar3 = 0; - lVar5 = (longlong)(int)(p + 2); - if (0 < *(int *)((int)filter + 0x14)) { - do { - puVar2 = (undefined4 *) - (**(code **)(*piVar4 + 4))(*piVar4,outp,outCount,sampleOffset,(int)lVar5); - *puVar2 = 0x8000000; - puVar2[1] = uVar1 & 0xffff; - puVar2[3] = 0x6c00440; - puVar2[2] = 0xc007fff; - puVar2[5] = 0x8000580; - puVar2[4] = 0xc007fff; - iVar3 += 1; - piVar4 = piVar4 + 1; - lVar5 = (longlong)(int)(puVar2 + 6); - } while (iVar3 < *(int *)((int)filter + 0x14)); - } - return lVar5; + uint uVar1; + undefined4 *puVar2; + int iVar3; + int *piVar4; + longlong lVar5; + + piVar4 = *(int **)((int)filter + 0x1c); + uVar1 = outCount << 1; + *(undefined4 *)p = 0x2000440; + *(uint *)((int)p + 4) = uVar1; + *(undefined4 *)(p + 1) = 0x2000580; + *(uint *)((int)p + 0xc) = uVar1; + iVar3 = 0; + lVar5 = (longlong)(int)(p + 2); + if (0 < *(int *)((int)filter + 0x14)) { + do { + puVar2 = (undefined4 *) + (**(code **)(*piVar4 + 4))(*piVar4,outp,outCount,sampleOffset,(int)lVar5); + *puVar2 = 0x8000000; + puVar2[1] = uVar1 & 0xffff; + puVar2[3] = 0x6c00440; + puVar2[2] = 0xc007fff; + puVar2[5] = 0x8000580; + puVar2[4] = 0xc007fff; + iVar3 += 1; + piVar4 = piVar4 + 1; + lVar5 = (longlong)(int)(puVar2 + 6); + } while (iVar3 < *(int *)((int)filter + 0x14)); + } + return lVar5; } @@ -17499,81 +17599,81 @@ longlong _alMainBusPull(void *filter,s16 *outp,s32 outCount,s32 sampleOffset,Acm s32 alLoadParam(void *filter,s32 paramID,void *param) { - byte bVar1; - undefined4 uVar2; - int iVar3; - undefined4 *in_v0_lo; - - if (paramID == 4) { - in_v0_lo = *(undefined4 **)((int)filter + 0x28); - *(undefined4 *)((int)filter + 0x3c) = 0; - *(undefined4 *)((int)filter + 0x40) = 1; - *(undefined4 *)((int)filter + 0x38) = 0; - if (in_v0_lo != NULL) { - *(undefined4 *)((int)filter + 0x44) = *in_v0_lo; - if (*(char *)(in_v0_lo + 2) == '\0') { - if (in_v0_lo[3] != 0) { - *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); - } - } - else { - if ((*(char *)(in_v0_lo + 2) == '\x01') && (in_v0_lo[3] != 0)) { - *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); - } - } - } - } - else { - if (paramID == 5) { - *(void **)((int)filter + 0x28) = param; - uVar2 = *(undefined4 *)param; - *(undefined4 *)((int)filter + 0x38) = 0; - *(undefined4 *)((int)filter + 0x44) = uVar2; - bVar1 = *(byte *)((int)param + 8); - in_v0_lo = (undefined4 *)(uint)bVar1; - if (bVar1 == 0) { - *(undefined4 *)((int)filter + 4) = 0x7001a15c; - iVar3 = *(int *)(*(int *)((int)filter + 0x28) + 4); - if (false) { - trap(0x1c00); - } - if ((false) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - *(int *)(*(int *)((int)filter + 0x28) + 4) = (iVar3 / 9) * 9; + byte bVar1; + undefined4 uVar2; + int iVar3; + undefined4 *in_v0_lo; + + if (paramID == 4) { in_v0_lo = *(undefined4 **)((int)filter + 0x28); - *(int *)((int)filter + 0x2c) = *(int *)in_v0_lo[4] * 0x10 * ((int *)in_v0_lo[4])[1]; - if ((undefined4 *)in_v0_lo[3] == NULL) { - *(undefined4 *)((int)filter + 0x24) = 0; - *(undefined4 *)((int)filter + 0x20) = 0; - *(undefined4 *)((int)filter + 0x1c) = 0; + *(undefined4 *)((int)filter + 0x3c) = 0; + *(undefined4 *)((int)filter + 0x40) = 1; + *(undefined4 *)((int)filter + 0x38) = 0; + if (in_v0_lo != NULL) { + *(undefined4 *)((int)filter + 0x44) = *in_v0_lo; + if (*(char *)(in_v0_lo + 2) == '\0') { + if (in_v0_lo[3] != 0) { + *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); + } + } + else { + if ((*(char *)(in_v0_lo + 2) == '\x01') && (in_v0_lo[3] != 0)) { + *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); + } + } } - else { - *(undefined4 *)((int)filter + 0x1c) = *(undefined4 *)in_v0_lo[3]; - *(undefined4 *)((int)filter + 0x20) = *(undefined4 *)(in_v0_lo[3] + 4); - *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); - alCopy((void *)(in_v0_lo[3] + 0xc),*(void **)((int)filter + 0x18),0x20); - } - } - else { - if (bVar1 == 1) { - in_v0_lo = *(undefined4 **)((int)filter + 0x28); - *(undefined4 *)((int)filter + 4) = 0x70019c84; - if ((undefined4 *)in_v0_lo[3] == NULL) { - *(undefined4 *)((int)filter + 0x24) = 0; - *(undefined4 *)((int)filter + 0x20) = 0; - *(undefined4 *)((int)filter + 0x1c) = 0; - } - else { - *(undefined4 *)((int)filter + 0x1c) = *(undefined4 *)in_v0_lo[3]; - *(undefined4 *)((int)filter + 0x20) = *(undefined4 *)(in_v0_lo[3] + 4); - *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); - } - } - } } - } - return (s32)in_v0_lo; + else { + if (paramID == 5) { + *(void **)((int)filter + 0x28) = param; + uVar2 = *(undefined4 *)param; + *(undefined4 *)((int)filter + 0x38) = 0; + *(undefined4 *)((int)filter + 0x44) = uVar2; + bVar1 = *(byte *)((int)param + 8); + in_v0_lo = (undefined4 *)(uint)bVar1; + if (bVar1 == 0) { + *(undefined4 *)((int)filter + 4) = 0x7001a15c; + iVar3 = *(int *)(*(int *)((int)filter + 0x28) + 4); + if (false) { + trap(0x1c00); + } + if ((false) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + *(int *)(*(int *)((int)filter + 0x28) + 4) = (iVar3 / 9) * 9; + in_v0_lo = *(undefined4 **)((int)filter + 0x28); + *(int *)((int)filter + 0x2c) = *(int *)in_v0_lo[4] * 0x10 * ((int *)in_v0_lo[4])[1]; + if ((undefined4 *)in_v0_lo[3] == NULL) { + *(undefined4 *)((int)filter + 0x24) = 0; + *(undefined4 *)((int)filter + 0x20) = 0; + *(undefined4 *)((int)filter + 0x1c) = 0; + } + else { + *(undefined4 *)((int)filter + 0x1c) = *(undefined4 *)in_v0_lo[3]; + *(undefined4 *)((int)filter + 0x20) = *(undefined4 *)(in_v0_lo[3] + 4); + *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); + alCopy((void *)(in_v0_lo[3] + 0xc),*(void **)((int)filter + 0x18),0x20); + } + } + else { + if (bVar1 == 1) { + in_v0_lo = *(undefined4 **)((int)filter + 0x28); + *(undefined4 *)((int)filter + 4) = 0x70019c84; + if ((undefined4 *)in_v0_lo[3] == NULL) { + *(undefined4 *)((int)filter + 0x24) = 0; + *(undefined4 *)((int)filter + 0x20) = 0; + *(undefined4 *)((int)filter + 0x1c) = 0; + } + else { + *(undefined4 *)((int)filter + 0x1c) = *(undefined4 *)in_v0_lo[3]; + *(undefined4 *)((int)filter + 0x20) = *(undefined4 *)(in_v0_lo[3] + 4); + *(undefined4 *)((int)filter + 0x24) = *(undefined4 *)(in_v0_lo[3] + 8); + } + } + } + } + } + return (s32)in_v0_lo; } @@ -17584,149 +17684,149 @@ s32 alLoadParam(void *filter,s32 paramID,void *param) longlong _alRaw16Pull(void *filter,s16 *outp,s32 outCount,s32 sampleOffset,Acmd *p) { - short sVar1; - int *piVar2; - bool bVar3; - uint uVar5; - ulonglong uVar4; - int iVar6; - short sVar9; - int iVar7; - uint uVar8; - uint uVar10; - longlong lVar11; - ulonglong uVar12; - int iVar13; - uint *puVar14; - uint *puVar15; - uint uVar16; - uint uVar17; - - lVar11 = (longlong)(int)p; - if (outCount != 0) { - if (*(uint *)((int)filter + 0x20) < (uint)(*(int *)((int)filter + 0x38) + outCount)) { - uVar16 = *(uint *)((int)filter + 0x20) - *(int *)((int)filter + 0x38); - if (*(int *)((int)filter + 0x24) != 0) { - uVar17 = uVar16 * 2; - if ((int)uVar16 < 1) { - sVar9 = 0; + short sVar1; + int *piVar2; + bool bVar3; + uint uVar5; + ulonglong uVar4; + int iVar6; + short sVar9; + int iVar7; + uint uVar8; + uint uVar10; + longlong lVar11; + ulonglong uVar12; + int iVar13; + uint *puVar14; + uint *puVar15; + uint uVar16; + uint uVar17; + + lVar11 = (longlong)(int)p; + if (outCount != 0) { + if (*(uint *)((int)filter + 0x20) < (uint)(*(int *)((int)filter + 0x38) + outCount)) { + uVar16 = *(uint *)((int)filter + 0x20) - *(int *)((int)filter + 0x38); + if (*(int *)((int)filter + 0x24) != 0) { + uVar17 = uVar16 * 2; + if ((int)uVar16 < 1) { + sVar9 = 0; + } + else { + uVar5 = (**(code **)((int)filter + 0x30)) + (*(undefined4 *)((int)filter + 0x44),uVar17, + *(undefined4 *)((int)filter + 0x34)); + uVar8 = uVar5 & 7; + sVar1 = *outp; + sVar9 = (short)uVar8; + *(uint *)((int)p + 4) = ((uVar17 + uVar8) - (uVar17 + uVar8 & 7)) + 8 & 0xffff; + *(uint *)p = (int)sVar1 & 0xffffU | 0x8000000; + *(int *)((int)p + 0xc) = uVar5 - uVar8; + *(undefined4 *)(p + 1) = 0x4000000; + lVar11 = (longlong)(int)(p + 2); + } + *outp = *outp + sVar9; + iVar6 = **(int **)((int)filter + 0x28); + *(int *)((int)filter + 0x38) = *(int *)((int)filter + 0x1c); + *(int *)((int)filter + 0x44) = iVar6 + *(int *)((int)filter + 0x1c) * 2; + uVar12 = SEXT28(*outp); + if ((int)uVar16 < outCount) { + iVar6 = *(int *)((int)filter + 0x24); + while( true ) { + iVar13 = (int)uVar12 + uVar17; + outCount -= uVar16; + if ((iVar6 != -1) && (iVar6 != 0)) { + *(int *)((int)filter + 0x24) = iVar6 + -1; + } + uVar16 = *(int *)((int)filter + 0x20) - *(int *)((int)filter + 0x1c); + if ((uint)outCount < uVar16) { + uVar16 = outCount; + } + puVar14 = (uint *)lVar11; + uVar17 = uVar16 * 2; + uVar4 = (**(code **)((int)filter + 0x30)) + (*(undefined4 *)((int)filter + 0x44),uVar17, + *(undefined4 *)((int)filter + 0x34)); + uVar12 = SEXT48(iVar13); + iVar6 = (int)(uVar4 & 7); + if ((uVar12 & 7) == 0) { + iVar7 = 0; + } + else { + iVar7 = 8 - (int)(uVar12 & 7); + } + puVar14[1] = ((uVar17 + iVar6) - (uVar17 + iVar6 & 7)) + 8 & 0xffff; + *puVar14 = iVar13 + iVar7 & 0xffffU | 0x8000000; + puVar14[2] = 0x4000000; + puVar14[3] = (int)uVar4 - iVar6; + puVar15 = puVar14 + 4; + if (((uVar4 & 7) != 0) || (iVar7 != 0)) { + *puVar15 = iVar13 + iVar6 + iVar7 & 0xffffffU | 0xa000000; + puVar14[5] = iVar13 * 0x10000 | uVar17 & 0xffff; + puVar15 = puVar14 + 6; + } + lVar11 = (longlong)(int)puVar15; + if (outCount <= (int)uVar16) break; + iVar6 = *(int *)((int)filter + 0x24); + } + } + *(int *)((int)filter + 0x38) = *(int *)((int)filter + 0x38) + outCount; + *(int *)((int)filter + 0x44) = *(int *)((int)filter + 0x44) + outCount * 2; + return lVar11; + } + piVar2 = *(int **)((int)filter + 0x28); } else { - uVar5 = (**(code **)((int)filter + 0x30)) - (*(undefined4 *)((int)filter + 0x44),uVar17, - *(undefined4 *)((int)filter + 0x34)); - uVar8 = uVar5 & 7; - sVar1 = *outp; - sVar9 = (short)uVar8; - *(uint *)((int)p + 4) = ((uVar17 + uVar8) - (uVar17 + uVar8 & 7)) + 8 & 0xffff; - *(uint *)p = (int)sVar1 & 0xffffU | 0x8000000; - *(int *)((int)p + 0xc) = uVar5 - uVar8; - *(undefined4 *)(p + 1) = 0x4000000; - lVar11 = (longlong)(int)(p + 2); + piVar2 = *(int **)((int)filter + 0x28); } - *outp = *outp + sVar9; - iVar6 = **(int **)((int)filter + 0x28); - *(int *)((int)filter + 0x38) = *(int *)((int)filter + 0x1c); - *(int *)((int)filter + 0x44) = iVar6 + *(int *)((int)filter + 0x1c) * 2; - uVar12 = SEXT28(*outp); - if ((int)uVar16 < outCount) { - iVar6 = *(int *)((int)filter + 0x24); - while( true ) { - iVar13 = (int)uVar12 + uVar17; - outCount -= uVar16; - if ((iVar6 != -1) && (iVar6 != 0)) { - *(int *)((int)filter + 0x24) = iVar6 + -1; + uVar16 = outCount * 2; + iVar6 = *(int *)((int)filter + 0x44) + uVar16; + uVar17 = (iVar6 - *piVar2) - piVar2[1]; + if ((int)uVar17 < 0) { + uVar17 = 0; + bVar3 = (int)uVar16 < 0; + } + else { + bVar3 = (int)uVar16 < (int)uVar17; + } + uVar5 = uVar16; + if (!bVar3) { + uVar5 = uVar17; + } + if (bVar3 || (int)uVar16 <= (int)uVar17) { + *(int *)((int)filter + 0x44) = iVar6; + } + else { + sVar9 = 0; + if (0 < outCount) { + uVar17 = (**(code **)((int)filter + 0x30)) + (*(int *)((int)filter + 0x44),uVar16 - uVar5, + *(undefined4 *)((int)filter + 0x34)); + uVar8 = uVar17 & 7; + sVar1 = *outp; + sVar9 = (short)uVar8; + uVar10 = (uVar16 - uVar5) + uVar8; + *(uint *)((int)p + 4) = (uVar10 - (uVar10 & 7)) + 8 & 0xffff; + *(uint *)p = (int)sVar1 & 0xffffU | 0x8000000; + *(int *)((int)p + 0xc) = uVar17 - uVar8; + *(undefined4 *)(p + 1) = 0x4000000; + lVar11 = (longlong)(int)(p + 2); } - uVar16 = *(int *)((int)filter + 0x20) - *(int *)((int)filter + 0x1c); - if ((uint)outCount < uVar16) { - uVar16 = outCount; + *outp = *outp + sVar9; + *(int *)((int)filter + 0x38) = *(int *)((int)filter + 0x38) + outCount; + *(int *)((int)filter + 0x44) = *(int *)((int)filter + 0x44) + uVar16; + } + iVar6 = uVar16 - uVar5; + if (uVar5 != 0) { + if (iVar6 < 0) { + iVar6 = 0; } puVar14 = (uint *)lVar11; - uVar17 = uVar16 * 2; - uVar4 = (**(code **)((int)filter + 0x30)) - (*(undefined4 *)((int)filter + 0x44),uVar17, - *(undefined4 *)((int)filter + 0x34)); - uVar12 = SEXT48(iVar13); - iVar6 = (int)(uVar4 & 7); - if ((uVar12 & 7) == 0) { - iVar7 = 0; - } - else { - iVar7 = 8 - (int)(uVar12 & 7); - } - puVar14[1] = ((uVar17 + iVar6) - (uVar17 + iVar6 & 7)) + 8 & 0xffff; - *puVar14 = iVar13 + iVar7 & 0xffffU | 0x8000000; - puVar14[2] = 0x4000000; - puVar14[3] = (int)uVar4 - iVar6; - puVar15 = puVar14 + 4; - if (((uVar4 & 7) != 0) || (iVar7 != 0)) { - *puVar15 = iVar13 + iVar6 + iVar7 & 0xffffffU | 0xa000000; - puVar14[5] = iVar13 * 0x10000 | uVar17 & 0xffff; - puVar15 = puVar14 + 6; - } - lVar11 = (longlong)(int)puVar15; - if (outCount <= (int)uVar16) break; - iVar6 = *(int *)((int)filter + 0x24); - } + *puVar14 = *outp + iVar6 & 0xffffffU | 0x2000000; + puVar14[1] = uVar5; + lVar11 = (longlong)(int)(puVar14 + 2); } - *(int *)((int)filter + 0x38) = *(int *)((int)filter + 0x38) + outCount; - *(int *)((int)filter + 0x44) = *(int *)((int)filter + 0x44) + outCount * 2; - return lVar11; - } - piVar2 = *(int **)((int)filter + 0x28); } - else { - piVar2 = *(int **)((int)filter + 0x28); - } - uVar16 = outCount * 2; - iVar6 = *(int *)((int)filter + 0x44) + uVar16; - uVar17 = (iVar6 - *piVar2) - piVar2[1]; - if ((int)uVar17 < 0) { - uVar17 = 0; - bVar3 = (int)uVar16 < 0; - } - else { - bVar3 = (int)uVar16 < (int)uVar17; - } - uVar5 = uVar16; - if (!bVar3) { - uVar5 = uVar17; - } - if (bVar3 || (int)uVar16 <= (int)uVar17) { - *(int *)((int)filter + 0x44) = iVar6; - } - else { - sVar9 = 0; - if (0 < outCount) { - uVar17 = (**(code **)((int)filter + 0x30)) - (*(int *)((int)filter + 0x44),uVar16 - uVar5, - *(undefined4 *)((int)filter + 0x34)); - uVar8 = uVar17 & 7; - sVar1 = *outp; - sVar9 = (short)uVar8; - uVar10 = (uVar16 - uVar5) + uVar8; - *(uint *)((int)p + 4) = (uVar10 - (uVar10 & 7)) + 8 & 0xffff; - *(uint *)p = (int)sVar1 & 0xffffU | 0x8000000; - *(int *)((int)p + 0xc) = uVar17 - uVar8; - *(undefined4 *)(p + 1) = 0x4000000; - lVar11 = (longlong)(int)(p + 2); - } - *outp = *outp + sVar9; - *(int *)((int)filter + 0x38) = *(int *)((int)filter + 0x38) + outCount; - *(int *)((int)filter + 0x44) = *(int *)((int)filter + 0x44) + uVar16; - } - iVar6 = uVar16 - uVar5; - if (uVar5 != 0) { - if (iVar6 < 0) { - iVar6 = 0; - } - puVar14 = (uint *)lVar11; - *puVar14 = (int)*outp + iVar6 & 0xffffffU | 0x2000000; - puVar14[1] = uVar5; - lVar11 = (longlong)(int)(puVar14 + 2); - } - } - return lVar11; + return lVar11; } @@ -17734,43 +17834,43 @@ longlong _alRaw16Pull(void *filter,s16 *outp,s32 outCount,s32 sampleOffset,Acmd uint * proc_7001A030(void) { - uint uVar1; - uint uVar2; - uint *unaff_s0_lo; - longlong unaff_s1; - uint uVar3; - int unaff_s2_lo; - short unaff_s3_lo; - ulonglong unaff_s4; - short unaff_s5_lo; - uint unaff_s6_lo; - - if (unaff_s1 < 1) { - uVar2 = 0; - } - else { - uVar1 = (**(code **)(unaff_s2_lo + 0x30)) - (*(undefined4 *)(unaff_s2_lo + 0x44),unaff_s1, - *(undefined4 *)(unaff_s2_lo + 0x34)); - uVar2 = uVar1 & 7; - uVar3 = (int)unaff_s1 + uVar2; - *unaff_s0_lo = (int)unaff_s3_lo & 0xffffU | 0x8000000; - unaff_s0_lo[1] = (uVar3 - (uVar3 & 7)) + 8 & 0xffff; - unaff_s0_lo[2] = 0x4000000; - unaff_s0_lo[3] = uVar1 - uVar2; - unaff_s0_lo = unaff_s0_lo + 4; - } - if ((unaff_s4 & 2) != 0) { - *unaff_s0_lo = 0xf000000; - unaff_s0_lo[1] = *(uint *)(unaff_s2_lo + 0x18) & 0x1fffffff; - unaff_s0_lo = unaff_s0_lo + 2; - } - *unaff_s0_lo = (int)unaff_s3_lo + uVar2 & 0xffff | 0x8000000; - unaff_s0_lo[1] = (int)unaff_s5_lo << 0x10 | (unaff_s6_lo & 0x7fff) << 1; - unaff_s0_lo[2] = ((uint)unaff_s4 & 0xff) << 0x10 | 0x1000000; - unaff_s0_lo[3] = *(uint *)(unaff_s2_lo + 0x14) & 0x1fffffff; - *(undefined4 *)(unaff_s2_lo + 0x40) = 0; - return unaff_s0_lo + 4; + uint uVar1; + uint uVar2; + uint *unaff_s0_lo; + longlong unaff_s1; + uint uVar3; + int unaff_s2_lo; + short unaff_s3_lo; + ulonglong unaff_s4; + short unaff_s5_lo; + uint unaff_s6_lo; + + if (unaff_s1 < 1) { + uVar2 = 0; + } + else { + uVar1 = (**(code **)(unaff_s2_lo + 0x30)) + (*(undefined4 *)(unaff_s2_lo + 0x44),unaff_s1, + *(undefined4 *)(unaff_s2_lo + 0x34)); + uVar2 = uVar1 & 7; + uVar3 = (int)unaff_s1 + uVar2; + *unaff_s0_lo = (int)unaff_s3_lo & 0xffffU | 0x8000000; + unaff_s0_lo[1] = (uVar3 - (uVar3 & 7)) + 8 & 0xffff; + unaff_s0_lo[2] = 0x4000000; + unaff_s0_lo[3] = uVar1 - uVar2; + unaff_s0_lo = unaff_s0_lo + 4; + } + if ((unaff_s4 & 2) != 0) { + *unaff_s0_lo = 0xf000000; + unaff_s0_lo[1] = *(uint *)(unaff_s2_lo + 0x18) & 0x1fffffff; + unaff_s0_lo = unaff_s0_lo + 2; + } + *unaff_s0_lo = (int)unaff_s3_lo + uVar2 & 0xffff | 0x8000000; + unaff_s0_lo[1] = (int)unaff_s5_lo << 0x10 | (unaff_s6_lo & 0x7fff) << 1; + unaff_s0_lo[2] = ((uint)unaff_s4 & 0xff) << 0x10 | 0x1000000; + unaff_s0_lo[3] = *(uint *)(unaff_s2_lo + 0x14) & 0x1fffffff; + *(undefined4 *)(unaff_s2_lo + 0x40) = 0; + return unaff_s0_lo + 4; } @@ -17778,132 +17878,132 @@ uint * proc_7001A030(void) uint * alAdpcmPull(int param_1,short *param_2,uint param_3,undefined8 param_4,uint *param_5) { - short sVar1; - bool bVar2; - bool bVar3; - uint uVar4; - int iVar5; - uint uVar6; - int iVar8; - longlong lVar7; - int iVar9; - int iVar10; - int iVar11; - - bVar3 = false; - if (param_3 != 0) { - *param_5 = *(uint *)(param_1 + 0x2c) & 0xffffff | 0xb000000; - iVar8 = 0; - param_5[1] = *(int *)(*(int *)(param_1 + 0x28) + 0x10) + 8U & 0x1fffffff; - bVar2 = *(uint *)(param_1 + 0x20) < *(int *)(param_1 + 0x38) + param_3; - if (bVar2) { - bVar2 = *(int *)(param_1 + 0x24) != 0; - } - uVar6 = param_3; - if (bVar2) { - uVar6 = *(uint *)(param_1 + 0x20) - *(int *)(param_1 + 0x38); - } - if (*(int *)(param_1 + 0x3c) != 0) { - iVar8 = 0x10 - *(int *)(param_1 + 0x3c); - } - iVar5 = uVar6 - iVar8; - if (iVar5 < 0) { - iVar5 = 0; - } - if (bVar2) { - iVar8 = iVar5 + 0xf >> 4; - param_5 = proc_7001A030(); - if (*(int *)(param_1 + 0x3c) == 0) { - *param_2 = *param_2 + 0x20; - } - else { - *param_2 = *param_2 + (short)(*(int *)(param_1 + 0x3c) << 1); - } - uVar4 = *(uint *)(param_1 + 0x1c); - *(uint *)(param_1 + 0x3c) = uVar4 & 0xf; - *(int *)(param_1 + 0x44) = **(int **)(param_1 + 0x28) + (uVar4 >> 4) * 9 + 9; - *(uint *)(param_1 + 0x38) = uVar4; - lVar7 = (longlong)*param_2; - if ((int)uVar6 < (int)param_3) { - uVar4 = uVar6 << 1; - do { - iVar11 = iVar8 + 1; - iVar8 = *(int *)(param_1 + 0x24); - iVar5 = (int)lVar7; - param_3 -= uVar6; - iVar9 = iVar5 + uVar4; - if ((iVar8 != -1) && (iVar8 != 0)) { - *(int *)(param_1 + 0x24) = iVar8 + -1; - } - uVar6 = *(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x1c); - if (param_3 < uVar6) { - uVar6 = param_3; - } - iVar8 = uVar6 + *(int *)(param_1 + 0x3c) + -0x10; - if (iVar8 < 0) { - iVar8 = 0; - } - iVar8 = iVar8 + 0xf >> 4; - param_5 = proc_7001A030(); - lVar7 = (longlong)iVar9; - uVar4 = uVar6 << 1; - *param_5 = *(int *)(param_1 + 0x3c) * 2 + (iVar11 * 0x20 + iVar5 & 0xffffffe0U) & 0xffffff - | 0xa000000; - param_5[1] = iVar9 * 0x10000 | uVar4 & 0xffff; - param_5 = param_5 + 2; - } while ((int)uVar6 < (int)param_3); - } - *(uint *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + param_3 & 0xf; - *(int *)(param_1 + 0x38) = *(int *)(param_1 + 0x38) + param_3; - *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + iVar8 * 9; - } - else { - iVar10 = iVar5 + 0xf >> 4; - iVar5 = iVar10 * 9; - iVar11 = *(int *)(param_1 + 0x44) + iVar5; - iVar9 = (iVar11 - **(int **)(param_1 + 0x28)) - (*(int **)(param_1 + 0x28))[1]; - if (iVar9 < 0) { - iVar9 = 0; - } - uVar6 = iVar9 / 9 << 4; - uVar4 = iVar10 * 0x10 + iVar8; - if ((int)uVar4 < (int)uVar6) { - uVar6 = uVar4; - } - if ((int)(uVar6 - (uVar6 & 0xf)) < (int)param_3) { - param_5 = proc_7001A030(); - bVar3 = true; - if (*(int *)(param_1 + 0x3c) == 0) { - *param_2 = *param_2 + 0x20; + short sVar1; + bool bVar2; + bool bVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar8; + longlong lVar7; + int iVar9; + int iVar10; + int iVar11; + + bVar3 = false; + if (param_3 != 0) { + *param_5 = *(uint *)(param_1 + 0x2c) & 0xffffff | 0xb000000; + iVar8 = 0; + param_5[1] = *(int *)(*(int *)(param_1 + 0x28) + 0x10) + 8U & 0x1fffffff; + bVar2 = *(uint *)(param_1 + 0x20) < *(int *)(param_1 + 0x38) + param_3; + if (bVar2) { + bVar2 = *(int *)(param_1 + 0x24) != 0; + } + uVar6 = param_3; + if (bVar2) { + uVar6 = *(uint *)(param_1 + 0x20) - *(int *)(param_1 + 0x38); + } + if (*(int *)(param_1 + 0x3c) != 0) { + iVar8 = 0x10 - *(int *)(param_1 + 0x3c); + } + iVar5 = uVar6 - iVar8; + if (iVar5 < 0) { + iVar5 = 0; + } + if (bVar2) { + iVar8 = iVar5 + 0xf >> 4; + param_5 = proc_7001A030(); + if (*(int *)(param_1 + 0x3c) == 0) { + *param_2 = *param_2 + 0x20; + } + else { + *param_2 = *param_2 + (short)(*(int *)(param_1 + 0x3c) << 1); + } + uVar4 = *(uint *)(param_1 + 0x1c); + *(uint *)(param_1 + 0x3c) = uVar4 & 0xf; + *(int *)(param_1 + 0x44) = **(int **)(param_1 + 0x28) + (uVar4 >> 4) * 9 + 9; + *(uint *)(param_1 + 0x38) = uVar4; + lVar7 = (longlong)*param_2; + if ((int)uVar6 < (int)param_3) { + uVar4 = uVar6 << 1; + do { + iVar11 = iVar8 + 1; + iVar8 = *(int *)(param_1 + 0x24); + iVar5 = (int)lVar7; + param_3 -= uVar6; + iVar9 = iVar5 + uVar4; + if ((iVar8 != -1) && (iVar8 != 0)) { + *(int *)(param_1 + 0x24) = iVar8 + -1; + } + uVar6 = *(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x1c); + if (param_3 < uVar6) { + uVar6 = param_3; + } + iVar8 = uVar6 + *(int *)(param_1 + 0x3c) + -0x10; + if (iVar8 < 0) { + iVar8 = 0; + } + iVar8 = iVar8 + 0xf >> 4; + param_5 = proc_7001A030(); + lVar7 = (longlong)iVar9; + uVar4 = uVar6 << 1; + *param_5 = *(int *)(param_1 + 0x3c) * 2 + (iVar11 * 0x20 + iVar5 & 0xffffffe0U) + & 0xffffff | 0xa000000; + param_5[1] = iVar9 * 0x10000 | uVar4 & 0xffff; + param_5 = param_5 + 2; + } while ((int)uVar6 < (int)param_3); + } + *(uint *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + param_3 & 0xf; + *(int *)(param_1 + 0x38) = *(int *)(param_1 + 0x38) + param_3; + *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + iVar8 * 9; } else { - *param_2 = *param_2 + (short)(*(int *)(param_1 + 0x3c) << 1); + iVar10 = iVar5 + 0xf >> 4; + iVar5 = iVar10 * 9; + iVar11 = *(int *)(param_1 + 0x44) + iVar5; + iVar9 = (iVar11 - **(int **)(param_1 + 0x28)) - (*(int **)(param_1 + 0x28))[1]; + if (iVar9 < 0) { + iVar9 = 0; + } + uVar6 = iVar9 / 9 << 4; + uVar4 = iVar10 * 0x10 + iVar8; + if ((int)uVar4 < (int)uVar6) { + uVar6 = uVar4; + } + if ((int)(uVar6 - (uVar6 & 0xf)) < (int)param_3) { + param_5 = proc_7001A030(); + bVar3 = true; + if (*(int *)(param_1 + 0x3c) == 0) { + *param_2 = *param_2 + 0x20; + } + else { + *param_2 = *param_2 + (short)(*(int *)(param_1 + 0x3c) << 1); + } + *(uint *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + param_3 & 0xf; + *(int *)(param_1 + 0x38) = *(int *)(param_1 + 0x38) + param_3; + *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + iVar5; + } + else { + *(undefined4 *)(param_1 + 0x3c) = 0; + *(int *)(param_1 + 0x44) = iVar11; + param_5 = param_5 + 2; + } + if (uVar6 != 0) { + *(undefined4 *)(param_1 + 0x3c) = 0; + if (bVar3) { + iVar8 = (uVar4 - uVar6) * 2; + } + else { + iVar8 = 0; + } + sVar1 = *param_2; + param_5[1] = uVar6 << 1; + *param_5 = sVar1 + iVar8 & 0xffffffU | 0x2000000; + param_5 = param_5 + 2; + } } - *(uint *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + param_3 & 0xf; - *(int *)(param_1 + 0x38) = *(int *)(param_1 + 0x38) + param_3; - *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + iVar5; - } - else { - *(undefined4 *)(param_1 + 0x3c) = 0; - *(int *)(param_1 + 0x44) = iVar11; - param_5 = param_5 + 2; - } - if (uVar6 != 0) { - *(undefined4 *)(param_1 + 0x3c) = 0; - if (bVar3) { - iVar8 = (uVar4 - uVar6) * 2; - } - else { - iVar8 = 0; - } - sVar1 = *param_2; - param_5[1] = uVar6 << 1; - *param_5 = (int)sVar1 + iVar8 & 0xffffffU | 0x2000000; - param_5 = param_5 + 2; - } } - } - return param_5; + return param_5; } @@ -17911,46 +18011,46 @@ uint * alAdpcmPull(int param_1,short *param_2,uint param_3,undefined8 param_4,ui s32 alResampleParam(void *filter,s32 paramID,void *param) { - int iVar1; - - if (false) { + int iVar1; + + if (false) { switchD_7001a628_caseD_2: - if (*(int *)filter != 0) { - (**(code **)(*(int *)filter + 8))(); + if (*(int *)filter != 0) { + (**(code **)(*(int *)filter + 8))(); + } } - } - else { - switch(paramID) { - case 1: - *(void **)filter = param; - break; - default: - goto switchD_7001a628_caseD_2; - case 4: - iVar1 = *(int *)filter; - *(undefined4 *)((int)filter + 0x24) = 1; - *(undefined4 *)((int)filter + 0x30) = 0; - *(undefined4 *)((int)filter + 0x1c) = 0; - *(undefined4 *)((int)filter + 0x20) = 0; - if (iVar1 != 0) { - (**(code **)(iVar1 + 8))(iVar1,4,0); - } - break; - case 7: - *(void **)((int)filter + 0x18) = param; - break; - case 8: - *(undefined4 *)((int)filter + 0x1c) = 1; - break; - case 9: - iVar1 = *(int *)filter; - *(undefined4 *)((int)filter + 0x30) = 1; - if (iVar1 != 0) { - (**(code **)(iVar1 + 8))(iVar1,9,0); - } + else { + switch(paramID) { + case 1: + *(void **)filter = param; + break; + default: + goto switchD_7001a628_caseD_2; + case 4: + iVar1 = *(int *)filter; + *(undefined4 *)((int)filter + 0x24) = 1; + *(undefined4 *)((int)filter + 0x30) = 0; + *(undefined4 *)((int)filter + 0x1c) = 0; + *(undefined4 *)((int)filter + 0x20) = 0; + if (iVar1 != 0) { + (**(code **)(iVar1 + 8))(iVar1,4,0); + } + break; + case 7: + *(void **)((int)filter + 0x18) = param; + break; + case 8: + *(undefined4 *)((int)filter + 0x1c) = 1; + break; + case 9: + iVar1 = *(int *)filter; + *(undefined4 *)((int)filter + 0x30) = 1; + if (iVar1 != 0) { + (**(code **)(iVar1 + 8))(iVar1,9,0); + } + } } - } - return 0; + return 0; } @@ -17958,50 +18058,50 @@ switchD_7001a628_caseD_2: uint * alResamplePull(int *param_1,short *param_2,longlong param_3,undefined8 param_4,uint *param_5) { - int iVar1; - uint *puVar2; - u32 uVar3; - uint uVar4; - float fVar5; - int iVar6; - short sStack10; - uint *puStack8; - - iVar1 = *param_1; - sStack10 = 0x140; - puStack8 = param_5; - if (param_3 != 0) { - uVar4 = (uint)param_3; - if (param_1[7] == 0) { - fVar5 = (float)param_1[6]; - if (dbl_80029878 < (double)fVar5) { - param_1[6] = DOUBLE_80029880._0_4_; - fVar5 = (float)param_1[6]; - } - *(float *)(param_1 + 6) = (float)(int)(fVar5 * 32768.00000000); - *(float *)(param_1 + 6) = (float)param_1[6] / 32768.00000000; - fVar5 = (float)param_1[8] + (float)param_1[6] * (float)uVar4; - iVar6 = (int)fVar5; - *(float *)(param_1 + 8) = fVar5 - (float)iVar6; - puVar2 = (uint *)(**(code **)(iVar1 + 4))(iVar1,&sStack10,iVar6,param_4,param_5); - fVar5 = (float)param_1[6]; - *puVar2 = (int)sStack10 & 0xffffU | 0x8000000; - puVar2[1] = (int)*param_2 << 0x10 | (uVar4 & 0x7fff) << 1; - puVar2[2] = (param_1[9] & 0xffU) << 0x10 | 0x5000000 | (int)(fVar5 * 32768.00000000) & 0xffffU - ; - puStack8 = puVar2 + 4; - uVar3 = osVirtualToPhysical((void *)param_1[5]); - puVar2[3] = uVar3; - param_1[9] = 0; + int iVar1; + uint *puVar2; + u32 uVar3; + uint uVar4; + float fVar5; + int iVar6; + short sStack10; + uint *puStack8; + + iVar1 = *param_1; + sStack10 = 0x140; + puStack8 = param_5; + if (param_3 != 0) { + uVar4 = (uint)param_3; + if (param_1[7] == 0) { + fVar5 = (float)param_1[6]; + if (dbl_80029878 < (double)fVar5) { + param_1[6] = DOUBLE_80029880._0_4_; + fVar5 = (float)param_1[6]; + } + *(float *)(param_1 + 6) = (float)(int)(fVar5 * 32768.00000000); + *(float *)(param_1 + 6) = (float)param_1[6] / 32768.00000000; + fVar5 = (float)param_1[8] + (float)param_1[6] * (float)uVar4; + iVar6 = (int)fVar5; + *(float *)(param_1 + 8) = fVar5 - (float)iVar6; + puVar2 = (uint *)(**(code **)(iVar1 + 4))(iVar1,&sStack10,iVar6,param_4,param_5); + fVar5 = (float)param_1[6]; + *puVar2 = (int)sStack10 & 0xffffU | 0x8000000; + puVar2[1] = (int)*param_2 << 0x10 | (uVar4 & 0x7fff) << 1; + puVar2[2] = (param_1[9] & 0xffU) << 0x10 | 0x5000000 | + (int)(fVar5 * 32768.00000000) & 0xffffU; + puStack8 = puVar2 + 4; + uVar3 = osVirtualToPhysical((void *)param_1[5]); + puVar2[3] = uVar3; + param_1[9] = 0; + } + else { + puVar2 = (uint *)(**(code **)(iVar1 + 4))(iVar1,&sStack10,param_3,param_4,param_5); + *puVar2 = (int)sStack10 & 0xffffffU | 0xa000000; + puStack8 = puVar2 + 2; + puVar2[1] = (int)*param_2 << 0x10 | (uVar4 & 0x7fff) << 1; + } } - else { - puVar2 = (uint *)(**(code **)(iVar1 + 4))(iVar1,&sStack10,param_3,param_4,param_5); - *puVar2 = (int)sStack10 & 0xffffffU | 0xa000000; - puStack8 = puVar2 + 2; - puVar2[1] = (int)*param_2 << 0x10 | (uVar4 & 0x7fff) << 1; - } - } - return puStack8; + return puStack8; } @@ -18009,14 +18109,15 @@ uint * alResamplePull(int *param_1,short *param_2,longlong param_3,undefined8 pa float _ldexpf(float __x,int __exponent) { - undefined4 in_a2_hi; - uint in_a2_lo; - undefined4 in_register_00001060; - - if (CONCAT44(in_a2_hi,in_a2_lo) != 0) { - __x = SUB84((double)CONCAT44(in_register_00001060,__x) * (double)(1 << (in_a2_lo & 0x1f)),0); - } - return __x; + undefined4 in_a2_hi; + uint in_a2_lo; + undefined4 in_register_00001060; + + if (CONCAT44(in_a2_hi,in_a2_lo) != 0) { + __x = SUB84((double)CONCAT44(in_register_00001060,__x) * (double)(1 << (in_a2_lo & 0x1f)),0) + ; + } + return __x; } @@ -18024,43 +18125,44 @@ float _ldexpf(float __x,int __exponent) float _frexpf(float __x,int *__exponent) { - int *in_a2_lo; - double dVar1; - ulonglong in_f2; - double dVar2; - float fVar3; - undefined4 in_register_00001060; - uint in_register_00001070; - uint in_register_00001080; - - dVar2 = (double)(in_f2 & 0xffffffff00000000); - *in_a2_lo = 0; - if ((double)CONCAT44(in_register_00001060,__x) == dVar2) { - return __x; - } - if (dVar2 < (double)CONCAT44(in_register_00001060,__x)) { - dVar1 = (double)CONCAT44(in_register_00001060,__x); - } - else { - dVar1 = -(double)CONCAT44(in_register_00001060,__x); - } - if ((double)((ulonglong)in_register_00001070 << 0x20) <= dVar1) { - do { - dVar1 = dVar1 * (double)((ulonglong)in_register_00001080 << 0x20); - *in_a2_lo = *in_a2_lo + 1; - } while ((double)((ulonglong)in_register_00001070 << 0x20) <= dVar1); - } - if (dVar1 < (double)((ulonglong)in_register_00001080 << 0x20)) { - dVar1 = dVar1 + dVar1; - while (*in_a2_lo = *in_a2_lo + -1, dVar1 < (double)((ulonglong)in_register_00001080 << 0x20)) { - dVar1 = dVar1 + dVar1; + int *in_a2_lo; + double dVar1; + ulonglong in_f2; + double dVar2; + float fVar3; + undefined4 in_register_00001060; + uint in_register_00001070; + uint in_register_00001080; + + dVar2 = (double)(in_f2 & 0xffffffff00000000); + *in_a2_lo = 0; + if ((double)CONCAT44(in_register_00001060,__x) == dVar2) { + return __x; } - } - fVar3 = SUB84(dVar1,0); - if ((double)CONCAT44(in_register_00001060,__x) <= dVar2) { - fVar3 = SUB84(-dVar1,0); - } - return fVar3; + if (dVar2 < (double)CONCAT44(in_register_00001060,__x)) { + dVar1 = (double)CONCAT44(in_register_00001060,__x); + } + else { + dVar1 = -(double)CONCAT44(in_register_00001060,__x); + } + if ((double)((ulonglong)in_register_00001070 << 0x20) <= dVar1) { + do { + dVar1 = dVar1 * (double)((ulonglong)in_register_00001080 << 0x20); + *in_a2_lo = *in_a2_lo + 1; + } while ((double)((ulonglong)in_register_00001070 << 0x20) <= dVar1); + } + if (dVar1 < (double)((ulonglong)in_register_00001080 << 0x20)) { + dVar1 = dVar1 + dVar1; + while (*in_a2_lo = *in_a2_lo + -1, dVar1 < (double)((ulonglong)in_register_00001080 << 0x20) + ) { + dVar1 = dVar1 + dVar1; + } + } + fVar3 = SUB84(dVar1,0); + if ((double)CONCAT44(in_register_00001060,__x) <= dVar2) { + fVar3 = SUB84(-dVar1,0); + } + return fVar3; } @@ -18068,48 +18170,48 @@ float _frexpf(float __x,int *__exponent) s32 alEnvmixerParam(void *filter,s32 paramID,void *param) { - int iVar1; - - if (paramID == 1) { - *(void **)filter = param; - } - else { - if (paramID == 3) { - if (*(void ***)((int)filter + 0x40) == NULL) { - *(void **)((int)filter + 0x3c) = param; - } - else { - **(void ***)((int)filter + 0x40) = param; - } - *(void **)((int)filter + 0x40) = param; + int iVar1; + + if (paramID == 1) { + *(void **)filter = param; } else { - if (paramID == 4) { - iVar1 = *(int *)filter; - *(undefined4 *)((int)filter + 0x38) = 1; - *(undefined4 *)((int)filter + 0x48) = 0; - *(undefined2 *)((int)filter + 0x1a) = 1; - if (iVar1 != 0) { - (**(code **)(iVar1 + 8))(iVar1,4); - } - } - else { - if (paramID == 9) { - iVar1 = *(int *)filter; - *(undefined4 *)((int)filter + 0x48) = 1; - if (iVar1 != 0) { - (**(code **)(iVar1 + 8))(iVar1,9); - } + if (paramID == 3) { + if (*(void ***)((int)filter + 0x40) == NULL) { + *(void **)((int)filter + 0x3c) = param; + } + else { + **(void ***)((int)filter + 0x40) = param; + } + *(void **)((int)filter + 0x40) = param; } else { - if (*(int *)filter != 0) { - (**(code **)(*(int *)filter + 8))(); - } + if (paramID == 4) { + iVar1 = *(int *)filter; + *(undefined4 *)((int)filter + 0x38) = 1; + *(undefined4 *)((int)filter + 0x48) = 0; + *(undefined2 *)((int)filter + 0x1a) = 1; + if (iVar1 != 0) { + (**(code **)(iVar1 + 8))(iVar1,4); + } + } + else { + if (paramID == 9) { + iVar1 = *(int *)filter; + *(undefined4 *)((int)filter + 0x48) = 1; + if (iVar1 != 0) { + (**(code **)(iVar1 + 8))(iVar1,9); + } + } + else { + if (*(int *)filter != 0) { + (**(code **)(*(int *)filter + 8))(); + } + } + } } - } } - } - return 0; + return 0; } @@ -18117,31 +18219,31 @@ s32 alEnvmixerParam(void *filter,s32 paramID,void *param) int proc_7001AAF4(float param_1,float param_2,longlong param_3,undefined2 *param_4) { - float fVar1; - uint in_register_00001020; - short sVar2; - double dVar3; - - if (param_3 != 0) { - dVar3 = (double)((param_1 - param_2) / (float)(int)param_3) * - (double)((ulonglong)in_register_00001020 << 0x20); - fVar1 = (float)dVar3; - if (fVar1 < 0.00000000) { - fVar1 = fVar1 - 1.00000000; - sVar2 = (short)(int)fVar1; + float fVar1; + uint in_register_00001020; + short sVar2; + double dVar3; + + if (param_3 != 0) { + dVar3 = (double)((param_1 - param_2) / (float)(int)param_3) * + (double)((ulonglong)in_register_00001020 << 0x20); + fVar1 = (float)dVar3; + if (fVar1 < 0.00000000) { + fVar1 = fVar1 - 1.00000000; + sVar2 = (short)(int)fVar1; + } + else { + sVar2 = (short)(int)dVar3; + } + *param_4 = (short)(int)((fVar1 - (float)(int)sVar2) * flt_80029964); + return (int)sVar2; } - else { - sVar2 = (short)(int)dVar3; + if (param_1 < param_2) { + *param_4 = 0; + return -0x8000; } - *param_4 = (short)(int)((fVar1 - (float)(int)sVar2) * flt_80029964); - return (int)sVar2; - } - if (param_1 < param_2) { - *param_4 = 0; - return -0x8000; - } - *param_4 = 0xffff; - return 0x7fff; + *param_4 = 0xffff; + return 0x7fff; } @@ -18149,70 +18251,71 @@ int proc_7001AAF4(float param_1,float param_2,longlong param_3,undefined2 *param Acmd * _pullSubFrame(void *filter,s16 *inp,s16 *outp,s32 outCount,s32 sampleOffset,Acmd *p) { - uint *puVar1; - int iVar2; - u32 uVar3; - int *unaff_s0_lo; - longlong unaff_s2; - short *unaff_s3_lo; - Acmd *unaff_s4_lo; - uint uVar4; - short *unaff_s5_lo; - undefined8 unaff_s6; - - iVar2 = *unaff_s0_lo; - if (unaff_s2 != 0) { - if (iVar2 == 0) { - osSyncPrintf("\n--- ASSERTION FAULT - %s - %s, line %d\n\n","source","env.c",0x175); + uint *puVar1; + int iVar2; + u32 uVar3; + int *unaff_s0_lo; + longlong unaff_s2; + short *unaff_s3_lo; + Acmd *unaff_s4_lo; + uint uVar4; + short *unaff_s5_lo; + undefined8 unaff_s6; + + iVar2 = *unaff_s0_lo; + if (unaff_s2 != 0) { + if (iVar2 == 0) { + osSyncPrintf("\n--- ASSERTION FAULT - %s - %s, line %d\n\n","source","env.c",0x175); + } + puVar1 = (uint *)(**(code **)(iVar2 + 4))(iVar2,unaff_s5_lo,unaff_s2,unaff_s6); + uVar4 = (int)unaff_s2 << 1; + *puVar1 = (int)*unaff_s5_lo & 0xffffU | 0x8000000; + puVar1[1] = ((int)*unaff_s3_lo + 0x440) * 0x10000 | uVar4 & 0xffff; + puVar1[2] = (int)*unaff_s3_lo + 0x580U & 0xffff | 0x8080000; + puVar1[3] = (int)*unaff_s3_lo + 0x800U & 0xffff | ((int)*unaff_s3_lo + 0x6c0) * 0x10000; + if (unaff_s0_lo[0xe] == 0) { + puVar1[4] = 0x3080000; + unaff_s4_lo = (Acmd *)(puVar1 + 6); + uVar3 = osVirtualToPhysical((void *)unaff_s0_lo[5]); + puVar1[5] = uVar3; + } + else { + unaff_s0_lo[0xe] = 0; + *(short *)(unaff_s0_lo + 10) = + (short)((int)eqpower[*(short *)(unaff_s0_lo + 6)] * + (int)*(short *)((int)unaff_s0_lo + 0x1a) >> 0xf); + iVar2 = proc_7001AAF4((float)(int)*(short *)(unaff_s0_lo + 10), + (float)(int)*(short *)(unaff_s0_lo + 7),(longlong)unaff_s0_lo[0xd] + ,(undefined2 *)(unaff_s0_lo + 9)); + *(undefined2 *)((int)unaff_s0_lo + 0x26) = (short)iVar2; + *(undefined2 *)((int)unaff_s0_lo + 0x2e) = + (short)((int)eqpower[(int)*(short *)(unaff_s0_lo + 6) * 0x7fffffff + 0x7f] * + (int)*(short *)((int)unaff_s0_lo + 0x1a) >> 0xf); + iVar2 = proc_7001AAF4((float)(int)*(short *)((int)unaff_s0_lo + 0x2e), + (float)(int)*(short *)((int)unaff_s0_lo + 0x1e), + (longlong)unaff_s0_lo[0xd],(undefined2 *)((int)unaff_s0_lo + 0x2a) + ); + *(short *)(unaff_s0_lo + 0xb) = (short)iVar2; + puVar1[4] = (int)*(short *)(unaff_s0_lo + 7) & 0xffffU | 0x9060000; + puVar1[5] = 0; + puVar1[6] = (int)*(short *)((int)unaff_s0_lo + 0x1e) & 0xffffU | 0x9040000; + puVar1[7] = 0; + puVar1[8] = (int)*(short *)(unaff_s0_lo + 10) & 0xffffU | 0x9020000; + puVar1[9] = CONCAT22(*(undefined2 *)((int)unaff_s0_lo + 0x26), + *(undefined2 *)(unaff_s0_lo + 9)); + puVar1[10] = (int)*(short *)((int)unaff_s0_lo + 0x2e) & 0xffffU | 0x9000000; + puVar1[0xb] = CONCAT22(*(undefined2 *)(unaff_s0_lo + 0xb), + *(undefined2 *)((int)unaff_s0_lo + 0x2a)); + puVar1[0xc] = (int)*(short *)(unaff_s0_lo + 8) & 0xffffU | 0x9080000; + puVar1[0xd] = (int)*(short *)((int)unaff_s0_lo + 0x22) & 0xffff; + puVar1[0xe] = 0x3090000; + unaff_s4_lo = (Acmd *)(puVar1 + 0x10); + uVar3 = osVirtualToPhysical((void *)unaff_s0_lo[5]); + puVar1[0xf] = uVar3; + } + *unaff_s5_lo = *unaff_s5_lo + (short)uVar4; } - puVar1 = (uint *)(**(code **)(iVar2 + 4))(iVar2,unaff_s5_lo,unaff_s2,unaff_s6); - uVar4 = (int)unaff_s2 << 1; - *puVar1 = (int)*unaff_s5_lo & 0xffffU | 0x8000000; - puVar1[1] = ((int)*unaff_s3_lo + 0x440) * 0x10000 | uVar4 & 0xffff; - puVar1[2] = (int)*unaff_s3_lo + 0x580U & 0xffff | 0x8080000; - puVar1[3] = (int)*unaff_s3_lo + 0x800U & 0xffff | ((int)*unaff_s3_lo + 0x6c0) * 0x10000; - if (unaff_s0_lo[0xe] == 0) { - puVar1[4] = 0x3080000; - unaff_s4_lo = (Acmd *)(puVar1 + 6); - uVar3 = osVirtualToPhysical((void *)unaff_s0_lo[5]); - puVar1[5] = uVar3; - } - else { - unaff_s0_lo[0xe] = 0; - *(short *)(unaff_s0_lo + 10) = - (short)((int)eqpower[(int)*(short *)(unaff_s0_lo + 6)] * - (int)*(short *)((int)unaff_s0_lo + 0x1a) >> 0xf); - iVar2 = proc_7001AAF4((float)(int)*(short *)(unaff_s0_lo + 10), - (float)(int)*(short *)(unaff_s0_lo + 7),(longlong)unaff_s0_lo[0xd], - (undefined2 *)(unaff_s0_lo + 9)); - *(undefined2 *)((int)unaff_s0_lo + 0x26) = (short)iVar2; - *(undefined2 *)((int)unaff_s0_lo + 0x2e) = - (short)((int)eqpower[(int)*(short *)(unaff_s0_lo + 6) * 0x7fffffff + 0x7f] * - (int)*(short *)((int)unaff_s0_lo + 0x1a) >> 0xf); - iVar2 = proc_7001AAF4((float)(int)*(short *)((int)unaff_s0_lo + 0x2e), - (float)(int)*(short *)((int)unaff_s0_lo + 0x1e), - (longlong)unaff_s0_lo[0xd],(undefined2 *)((int)unaff_s0_lo + 0x2a)); - *(short *)(unaff_s0_lo + 0xb) = (short)iVar2; - puVar1[4] = (int)*(short *)(unaff_s0_lo + 7) & 0xffffU | 0x9060000; - puVar1[5] = 0; - puVar1[6] = (int)*(short *)((int)unaff_s0_lo + 0x1e) & 0xffffU | 0x9040000; - puVar1[7] = 0; - puVar1[8] = (int)*(short *)(unaff_s0_lo + 10) & 0xffffU | 0x9020000; - puVar1[9] = CONCAT22(*(undefined2 *)((int)unaff_s0_lo + 0x26),*(undefined2 *)(unaff_s0_lo + 9) - ); - puVar1[10] = (int)*(short *)((int)unaff_s0_lo + 0x2e) & 0xffffU | 0x9000000; - puVar1[0xb] = CONCAT22(*(undefined2 *)(unaff_s0_lo + 0xb), - *(undefined2 *)((int)unaff_s0_lo + 0x2a)); - puVar1[0xc] = (int)*(short *)(unaff_s0_lo + 8) & 0xffffU | 0x9080000; - puVar1[0xd] = (int)*(short *)((int)unaff_s0_lo + 0x22) & 0xffff; - puVar1[0xe] = 0x3090000; - unaff_s4_lo = (Acmd *)(puVar1 + 0x10); - uVar3 = osVirtualToPhysical((void *)unaff_s0_lo[5]); - puVar1[0xf] = uVar3; - } - *unaff_s5_lo = *unaff_s5_lo + (short)uVar4; - } - return unaff_s4_lo; + return unaff_s4_lo; } @@ -18220,7 +18323,7 @@ Acmd * _pullSubFrame(void *filter,s16 *inp,s16 *outp,s32 outCount,s32 sampleOffs void proc_7001AE54(void) { - return; + return; } @@ -18228,244 +18331,253 @@ void proc_7001AE54(void) Acmd * _alEnvmixerPull(void *f,s16 *outp,s32 out,s32 sampleOffset,Acmd *p) { - int iVar1; - code *pcVar2; - int *param; - ALGlobals *drvr; - undefined **extraout_a0_lo; - undefined **filter; - char *extraout_a0_lo_00; - char *filter_00; - longlong lVar3; - undefined **extraout_a1_lo; - undefined **extraout_a1_lo_00; - undefined **inp; - int iVar4; - longlong extraout_a1; - longlong lVar5; - s16 *extraout_a2_lo; - s16 *extraout_a2_lo_00; - longlong extraout_a2; - longlong lVar6; - s32 extraout_a3_lo; - s32 extraout_a3_lo_00; - longlong extraout_a3; - short sVar7; - int samples; - float fVar8; - ulonglong unaff_f20; - ulonglong unaff_f22; - s32 sStackX8; - s32 sampleOffset_00; - Acmd *p_00; - s32 sStack20; - Acmd *pAStack4; - - lVar6 = (longlong)sampleOffset; - lVar5 = (longlong)out; - lVar3 = (longlong)(int)outp; - pAStack4 = p; - if (*(int *)((int)f + 0x3c) == 0) { - iVar4 = *(int *)((int)f + 0x48); - filter_00 = (char *)f; + int iVar1; + code *pcVar2; + int *param; + ALGlobals *drvr; + undefined **extraout_a0_lo; + undefined **filter; + char *extraout_a0_lo_00; + char *filter_00; + longlong lVar3; + undefined **extraout_a1_lo; + undefined **extraout_a1_lo_00; + undefined **inp; + int iVar4; + longlong extraout_a1; + longlong lVar5; + s16 *extraout_a2_lo; + s16 *extraout_a2_lo_00; + longlong extraout_a2; + longlong lVar6; + s32 extraout_a3_lo; + s32 extraout_a3_lo_00; + longlong extraout_a3; + short sVar7; + int samples; + float fVar8; + ulonglong unaff_f20; + ulonglong unaff_f22; + s32 sStackX8; + s32 in_stack_ffffff38; + Acmd *in_stack_ffffff3c; + s32 sStack20; + Acmd *pAStack4; + + lVar6 = (longlong)sampleOffset; + lVar5 = (longlong)out; + lVar3 = (longlong)(int)outp; + pAStack4 = p; sStackX8 = out; - } - else { - iVar4 = *(int *)((int)f + 0x3c); - sStackX8 = out; - sStack20 = sampleOffset; - while( true ) { - sampleOffset = (s32)lVar6; - out = (s32)(s16 *)lVar5; - outp = (s16 *)lVar3; - iVar1 = *(int *)(iVar4 + 4); - filter_00 = "\n--- ASSERTION FAULT - %s - %s, line %d\n\n"; - samples = iVar1 - sStack20; - if (sStackX8 < samples) break; - inp = ptr_crouched_doubles_firing_animation_groups + 2; - if (samples < 0) { - osSyncPrintf("\n--- ASSERTION FAULT - %s - %s, line %d\n\n","samples >= 0","env.c",0x68); - inp = extraout_a1_lo; - out = (s32)extraout_a2_lo; - sampleOffset = extraout_a3_lo; - } - filter = ptr_crouched_doubles_firing_animation_groups + 2; - if (0xa0 < samples) { - osSyncPrintf("\n--- ASSERTION FAULT - %s - %s, line %d\n\n","samples <= AL_MAX_RSP_SAMPLES", - "env.c",0x69); - filter = extraout_a0_lo; - inp = extraout_a1_lo_00; - out = (s32)extraout_a2_lo_00; - sampleOffset = extraout_a3_lo_00; - } - drvr = slg; - iVar4 = *(int *)((int)f + 0x3c); - if (false) { -switchD_7001af6c_caseD_1: - pAStack4 = _pullSubFrame(filter,(s16 *)inp,(s16 *)out,sampleOffset,sampleOffset_00,p_00); - *(int *)((int)f + 0x30) = *(int *)((int)f + 0x30) + samples; - (**(code **)((int)f + 8)) - (f,*(undefined2 *)(*(int *)((int)f + 0x3c) + 8), - *(undefined4 *)(*(int *)((int)f + 0x3c) + 0xc)); - } - else { - switch(*(undefined2 *)(iVar4 + 8)) { - case 0: - *(undefined4 *)(*(int *)(iVar4 + 0xc) + 0xd8) = 0; - _freePVoice((ALSynth *)drvr,*(PVoice **)(iVar4 + 0xc)); - break; - default: - goto switchD_7001af6c_caseD_1; - case 0xb: - case 0xc: - case 0x10: - pAStack4 = _pullSubFrame(filter,(s16 *)inp,(s16 *)out,sampleOffset,sampleOffset_00,p_00); - iVar4 = *(int *)((int)f + 0x30) + samples; - *(int *)((int)f + 0x30) = iVar4; - if (iVar4 < *(int *)((int)f + 0x34)) { - fVar8 = (float)(uint)*(ushort *)((int)f + 0x24); - if (false) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(undefined2 *)((int)f + 0x1c) = - (short)(int)((double)(int)*(short *)((int)f + 0x1c) + - (double)((float)((double)((float)((int)*(short *)((int)f + 0x26) << - 0x10) + fVar8) / - (double)(unaff_f20 & 0xffffffff00000000)) * - (float)iVar4) * (double)(unaff_f22 & 0xffffffff00000000)); - fVar8 = (float)(uint)*(ushort *)((int)f + 0x2a); - if (false) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(undefined2 *)((int)f + 0x1e) = - (short)(int)((double)(int)*(short *)((int)f + 0x1e) + - (double)((float)((double)((float)((int)*(short *)((int)f + 0x2c) << - 0x10) + fVar8) / - (double)(unaff_f20 & 0xffffffff00000000)) * - (float)iVar4) * (double)(unaff_f22 & 0xffffffff00000000)); - } - else { - *(undefined2 *)((int)f + 0x28) = - (short)((int)eqpower[(int)*(short *)((int)f + 0x18)] * - (int)*(short *)((int)f + 0x1a) >> 0xf); - sVar7 = eqpower[(int)*(short *)((int)f + 0x18) * 0x7fffffff + 0x7f]; - *(int *)((int)f + 0x30) = *(int *)((int)f + 0x34); - *(undefined2 *)((int)f + 0x1c) = *(undefined2 *)((int)f + 0x28); - *(undefined2 *)((int)f + 0x2e) = - (short)((int)sVar7 * (int)*(short *)((int)f + 0x1a) >> 0xf); - *(undefined2 *)((int)f + 0x1e) = *(undefined2 *)((int)f + 0x2e); - } - if (*(short *)((int)f + 0x1c) == 0) { - *(undefined2 *)((int)f + 0x1c) = 1; - sVar7 = *(short *)((int)f + 0x1e); - } - else { - sVar7 = *(short *)((int)f + 0x1e); - } - if (sVar7 == 0) { - *(undefined2 *)((int)f + 0x1e) = 1; - iVar4 = *(int *)((int)f + 0x3c); - } - else { - iVar4 = *(int *)((int)f + 0x3c); - } - sVar7 = *(short *)(iVar4 + 8); - if (sVar7 == 0xc) { - *(undefined2 *)((int)f + 0x18) = (short)*(undefined4 *)(iVar4 + 0xc); - sVar7 = *(short *)(iVar4 + 8); - } - if (sVar7 == 0xb) { - *(undefined4 *)((int)f + 0x30) = 0; - *(undefined2 *)((int)f + 0x1a) = - (short)(*(int *)(iVar4 + 0xc) * *(int *)(iVar4 + 0xc) >> 0xf); - *(undefined4 *)((int)f + 0x34) = *(undefined4 *)(iVar4 + 0x10); - sVar7 = *(short *)(iVar4 + 8); - } - if (sVar7 == 0x10) { - *(s16 *)((int)f + 0x20) = eqpower[*(int *)(iVar4 + 0xc)]; - *(s16 *)((int)f + 0x22) = eqpower[*(int *)(iVar4 + 0xc) * 0x7fffffff + 0x7f]; - } - *(undefined4 *)((int)f + 0x38) = 1; - break; - case 0xd: - if (*(short *)(iVar4 + 10) == 0) { - pcVar2 = *(code **)((int)f + 8); - } - else { - (**(code **)((int)f + 8))(f,8,0); - pcVar2 = *(code **)((int)f + 8); - } - (*pcVar2)(f,5,*(undefined4 *)(iVar4 + 0x18)); - (**(code **)((int)f + 8))(f,9,0); - *(undefined4 *)((int)f + 0x38) = 1; - *(undefined4 *)((int)f + 0x30) = 0; - *(undefined4 *)((int)f + 0x34) = *(undefined4 *)(iVar4 + 0x14); - *(undefined2 *)((int)f + 0x1a) = - (short)((int)*(short *)(iVar4 + 0x10) * (int)*(short *)(iVar4 + 0x10) >> 0xf); - *(ushort *)((int)f + 0x18) = (ushort)*(byte *)(iVar4 + 0x12); - *(s16 *)((int)f + 0x20) = eqpower[(uint)*(byte *)(iVar4 + 0x13)]; - *(s16 *)((int)f + 0x22) = eqpower[(uint)*(byte *)(iVar4 + 0x13) * 0x7fffffff + 0x7f]; - if (*(int *)(iVar4 + 0x14) == 0) { - *(undefined2 *)((int)f + 0x1c) = - (short)((int)eqpower[(int)*(short *)((int)f + 0x18)] * - (int)*(short *)((int)f + 0x1a) >> 0xf); - *(undefined2 *)((int)f + 0x1e) = - (short)((int)eqpower[(int)*(short *)((int)f + 0x18) * 0x7fffffff + 0x7f] * - (int)*(short *)((int)f + 0x1a) >> 0xf); - } - else { - *(undefined2 *)((int)f + 0x1c) = 1; - *(undefined2 *)((int)f + 0x1e) = 1; - } - if (*(int *)f != 0) { - (**(code **)(*(int *)f + 8))(*(int *)f,7,*(undefined4 *)(iVar4 + 0xc)); - } - break; - case 0xe: - if (*(short *)(iVar4 + 10) == 0) { - pcVar2 = *(code **)((int)f + 8); - } - else { - (**(code **)((int)f + 8))(f,8,0); - pcVar2 = *(code **)((int)f + 8); - } - (*pcVar2)(f,5,*(undefined4 *)(iVar4 + 0xc)); - (**(code **)((int)f + 8))(f,9,0); - break; - case 0xf: - pAStack4 = _pullSubFrame(filter,(s16 *)inp,(s16 *)out,sampleOffset,sampleOffset_00,p_00); - (**(code **)((int)f + 8))(f,4,0); - } - } - sStackX8 -= samples; - param = *(int **)((int)f + 0x3c); - iVar4 = *param; - *(int *)((int)f + 0x3c) = iVar4; - if (iVar4 == 0) { - *(undefined4 *)((int)f + 0x40) = 0; - } - __freeParam((ALParam *)param); - sampleOffset = (s32)extraout_a3; - out = (s32)(s16 *)extraout_a2; - outp = (s16 *)extraout_a1; - filter_00 = extraout_a0_lo_00; - if (*(int *)((int)f + 0x3c) == 0) break; - iVar4 = *(int *)((int)f + 0x3c); - lVar3 = extraout_a1; - lVar5 = extraout_a2; - lVar6 = extraout_a3; - sStack20 = iVar1; + if (*(int *)((int)f + 0x3c) == 0) { + iVar4 = *(int *)((int)f + 0x48); + filter_00 = (char *)f; } - iVar4 = *(int *)((int)f + 0x48); - } - if (iVar4 == 1) { - pAStack4 = _pullSubFrame(filter_00,outp,(s16 *)out,sampleOffset,sampleOffset_00,p_00); - *(int *)((int)f + 0x30) = *(int *)((int)f + 0x30) + sStackX8; - } - if (*(int *)((int)f + 0x34) < *(int *)((int)f + 0x30)) { - *(int *)((int)f + 0x30) = *(int *)((int)f + 0x34); - } - return pAStack4; + else { + iVar4 = *(int *)((int)f + 0x3c); + sStack20 = sampleOffset; + while( true ) { + sampleOffset = (s32)lVar6; + out = (s32)(s16 *)lVar5; + outp = (s16 *)lVar3; + iVar1 = *(int *)(iVar4 + 4); + filter_00 = "\n--- ASSERTION FAULT - %s - %s, line %d\n\n"; + samples = iVar1 - sStack20; + if (sStackX8 < samples) break; + inp = ptr_crouched_doubles_firing_animation_groups + 2; + if (samples < 0) { + osSyncPrintf("\n--- ASSERTION FAULT - %s - %s, line %d\n\n","samples >= 0","env.c", + 0x68); + inp = extraout_a1_lo; + out = (s32)extraout_a2_lo; + sampleOffset = extraout_a3_lo; + } + filter = ptr_crouched_doubles_firing_animation_groups + 2; + if (0xa0 < samples) { + osSyncPrintf("\n--- ASSERTION FAULT - %s - %s, line %d\n\n", + "samples <= AL_MAX_RSP_SAMPLES","env.c",0x69); + filter = extraout_a0_lo; + inp = extraout_a1_lo_00; + out = (s32)extraout_a2_lo_00; + sampleOffset = extraout_a3_lo_00; + } + drvr = slg; + iVar4 = *(int *)((int)f + 0x3c); + if (false) { +switchD_7001af6c_caseD_1: + pAStack4 = _pullSubFrame(filter,(s16 *)inp,(s16 *)out,sampleOffset,in_stack_ffffff38 + ,in_stack_ffffff3c); + *(int *)((int)f + 0x30) = *(int *)((int)f + 0x30) + samples; + (**(code **)((int)f + 8)) + (f,*(undefined2 *)(*(int *)((int)f + 0x3c) + 8), + *(undefined4 *)(*(int *)((int)f + 0x3c) + 0xc)); + } + else { + switch(*(undefined2 *)(iVar4 + 8)) { + case 0: + *(undefined4 *)(*(int *)(iVar4 + 0xc) + 0xd8) = 0; + _freePVoice((ALSynth *)drvr,*(PVoice **)(iVar4 + 0xc)); + break; + default: + goto switchD_7001af6c_caseD_1; + case 0xb: + case 0xc: + case 0x10: + pAStack4 = _pullSubFrame(filter,(s16 *)inp,(s16 *)out,sampleOffset, + in_stack_ffffff38,in_stack_ffffff3c); + iVar4 = *(int *)((int)f + 0x30) + samples; + *(int *)((int)f + 0x30) = iVar4; + if (iVar4 < *(int *)((int)f + 0x34)) { + fVar8 = (float)(uint)*(ushort *)((int)f + 0x24); + if (false) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(undefined2 *)((int)f + 0x1c) = + (short)(int)((double)(int)*(short *)((int)f + 0x1c) + + (double)((float)((double)((float)((int)*(short *)((int)f + + 0x26) << 0x10) + fVar8) / + (double)(unaff_f20 & 0xffffffff00000000)) * + (float)iVar4) * + (double)(unaff_f22 & 0xffffffff00000000)); + fVar8 = (float)(uint)*(ushort *)((int)f + 0x2a); + if (false) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(undefined2 *)((int)f + 0x1e) = + (short)(int)((double)(int)*(short *)((int)f + 0x1e) + + (double)((float)((double)((float)((int)*(short *)((int)f + + 0x2c) << 0x10) + fVar8) / + (double)(unaff_f20 & 0xffffffff00000000)) * + (float)iVar4) * + (double)(unaff_f22 & 0xffffffff00000000)); + } + else { + *(undefined2 *)((int)f + 0x28) = + (short)((int)eqpower[(int)*(short *)((int)f + 0x18)] * + (int)*(short *)((int)f + 0x1a) >> 0xf); + sVar7 = eqpower[(int)*(short *)((int)f + 0x18) * 0x7fffffff + 0x7f]; + *(int *)((int)f + 0x30) = *(int *)((int)f + 0x34); + *(undefined2 *)((int)f + 0x1c) = *(undefined2 *)((int)f + 0x28); + *(undefined2 *)((int)f + 0x2e) = + (short)((int)sVar7 * (int)*(short *)((int)f + 0x1a) >> 0xf); + *(undefined2 *)((int)f + 0x1e) = *(undefined2 *)((int)f + 0x2e); + } + if (*(short *)((int)f + 0x1c) == 0) { + *(undefined2 *)((int)f + 0x1c) = 1; + sVar7 = *(short *)((int)f + 0x1e); + } + else { + sVar7 = *(short *)((int)f + 0x1e); + } + if (sVar7 == 0) { + *(undefined2 *)((int)f + 0x1e) = 1; + iVar4 = *(int *)((int)f + 0x3c); + } + else { + iVar4 = *(int *)((int)f + 0x3c); + } + sVar7 = *(short *)(iVar4 + 8); + if (sVar7 == 0xc) { + *(undefined2 *)((int)f + 0x18) = (short)*(undefined4 *)(iVar4 + 0xc); + sVar7 = *(short *)(iVar4 + 8); + } + if (sVar7 == 0xb) { + *(undefined4 *)((int)f + 0x30) = 0; + *(undefined2 *)((int)f + 0x1a) = + (short)(*(int *)(iVar4 + 0xc) * *(int *)(iVar4 + 0xc) >> 0xf); + *(undefined4 *)((int)f + 0x34) = *(undefined4 *)(iVar4 + 0x10); + sVar7 = *(short *)(iVar4 + 8); + } + if (sVar7 == 0x10) { + *(s16 *)((int)f + 0x20) = eqpower[*(int *)(iVar4 + 0xc)]; + *(s16 *)((int)f + 0x22) = eqpower[*(int *)(iVar4 + 0xc) * 0x7fffffff + 0x7f] + ; + } + *(undefined4 *)((int)f + 0x38) = 1; + break; + case 0xd: + if (*(short *)(iVar4 + 10) == 0) { + pcVar2 = *(code **)((int)f + 8); + } + else { + (**(code **)((int)f + 8))(f,8,0); + pcVar2 = *(code **)((int)f + 8); + } + (*pcVar2)(f,5,*(undefined4 *)(iVar4 + 0x18)); + (**(code **)((int)f + 8))(f,9,0); + *(undefined4 *)((int)f + 0x38) = 1; + *(undefined4 *)((int)f + 0x30) = 0; + *(undefined4 *)((int)f + 0x34) = *(undefined4 *)(iVar4 + 0x14); + *(undefined2 *)((int)f + 0x1a) = + (short)((int)*(short *)(iVar4 + 0x10) * (int)*(short *)(iVar4 + 0x10) >> + 0xf); + *(ushort *)((int)f + 0x18) = (ushort)*(byte *)(iVar4 + 0x12); + *(s16 *)((int)f + 0x20) = eqpower[*(byte *)(iVar4 + 0x13)]; + *(s16 *)((int)f + 0x22) = + eqpower[(uint)*(byte *)(iVar4 + 0x13) * 0x7fffffff + 0x7f]; + if (*(int *)(iVar4 + 0x14) == 0) { + *(undefined2 *)((int)f + 0x1c) = + (short)((int)eqpower[(int)*(short *)((int)f + 0x18)] * + (int)*(short *)((int)f + 0x1a) >> 0xf); + *(undefined2 *)((int)f + 0x1e) = + (short)((int)eqpower[(int)*(short *)((int)f + 0x18) * 0x7fffffff + 0x7f + ] * (int)*(short *)((int)f + 0x1a) >> 0xf); + } + else { + *(undefined2 *)((int)f + 0x1c) = 1; + *(undefined2 *)((int)f + 0x1e) = 1; + } + if (*(int *)f != 0) { + (**(code **)(*(int *)f + 8))(*(int *)f,7,*(undefined4 *)(iVar4 + 0xc)); + } + break; + case 0xe: + if (*(short *)(iVar4 + 10) == 0) { + pcVar2 = *(code **)((int)f + 8); + } + else { + (**(code **)((int)f + 8))(f,8,0); + pcVar2 = *(code **)((int)f + 8); + } + (*pcVar2)(f,5,*(undefined4 *)(iVar4 + 0xc)); + (**(code **)((int)f + 8))(f,9,0); + break; + case 0xf: + pAStack4 = _pullSubFrame(filter,(s16 *)inp,(s16 *)out,sampleOffset, + in_stack_ffffff38,in_stack_ffffff3c); + (**(code **)((int)f + 8))(f,4,0); + } + } + sStackX8 -= samples; + param = *(int **)((int)f + 0x3c); + iVar4 = *param; + *(int *)((int)f + 0x3c) = iVar4; + if (iVar4 == 0) { + *(undefined4 *)((int)f + 0x40) = 0; + } + __freeParam((ALParam *)param); + sampleOffset = (s32)extraout_a3; + out = (s32)(s16 *)extraout_a2; + outp = (s16 *)extraout_a1; + filter_00 = extraout_a0_lo_00; + if (*(int *)((int)f + 0x3c) == 0) break; + iVar4 = *(int *)((int)f + 0x3c); + lVar3 = extraout_a1; + lVar5 = extraout_a2; + lVar6 = extraout_a3; + sStack20 = iVar1; + } + iVar4 = *(int *)((int)f + 0x48); + } + if (iVar4 == 1) { + pAStack4 = _pullSubFrame(filter_00,outp,(s16 *)out,sampleOffset,in_stack_ffffff38, + in_stack_ffffff3c); + *(int *)((int)f + 0x30) = *(int *)((int)f + 0x30) + sStackX8; + } + if (*(int *)((int)f + 0x34) < *(int *)((int)f + 0x30)) { + *(int *)((int)f + 0x30) = *(int *)((int)f + 0x34); + } + return pAStack4; } @@ -18473,11 +18585,11 @@ switchD_7001af6c_caseD_1: s32 alAuxBusParam(void *filter,s32 paramID,void *param) { - if (paramID == 2) { - *(void **)(*(int *)((int)filter + 0x1c) + *(int *)((int)filter + 0x14) * 4) = param; - *(int *)((int)filter + 0x14) = *(int *)((int)filter + 0x14) + 1; - } - return 0; + if (paramID == 2) { + *(void **)(*(int *)((int)filter + 0x1c) + *(int *)((int)filter + 0x14) * 4) = param; + *(int *)((int)filter + 0x14) = *(int *)((int)filter + 0x14) + 1; + } + return 0; } @@ -18485,24 +18597,24 @@ s32 alAuxBusParam(void *filter,s32 paramID,void *param) Acmd * _alAuxBusPull(void *f,s16 *outp,s32 outCount,s32 sampleOffset,Acmd *p) { - int iVar1; - int *piVar2; - - piVar2 = *(int **)((int)f + 0x1c); - *(undefined4 *)p = 0x20006c0; - *(int *)((int)p + 4) = outCount << 1; - *(undefined4 *)(p + 1) = 0x2000800; - *(int *)((int)p + 0xc) = outCount << 1; - iVar1 = 0; - p = p + 2; - if (0 < *(int *)((int)f + 0x14)) { - do { - p = (Acmd *)(**(code **)(*piVar2 + 4))(*piVar2,outp,outCount,sampleOffset,p); - iVar1 += 1; - piVar2 = piVar2 + 1; - } while (iVar1 < *(int *)((int)f + 0x14)); - } - return p; + int iVar1; + int *piVar2; + + piVar2 = *(int **)((int)f + 0x1c); + *(undefined4 *)p = 0x20006c0; + *(int *)((int)p + 4) = outCount << 1; + *(undefined4 *)(p + 1) = 0x2000800; + *(int *)((int)p + 0xc) = outCount << 1; + iVar1 = 0; + p = p + 2; + if (0 < *(int *)((int)f + 0x14)) { + do { + p = (Acmd *)(**(code **)(*piVar2 + 4))(*piVar2,outp,outCount,sampleOffset,p); + iVar1 += 1; + piVar2 = piVar2 + 1; + } while (iVar1 < *(int *)((int)f + 0x14)); + } + return p; } @@ -18510,15 +18622,15 @@ Acmd * _alAuxBusPull(void *f,s16 *outp,s32 outCount,s32 sampleOffset,Acmd *p) s32 alSaveParam(void *filter,s32 paramID,void *param) { - if (paramID == 1) { - *(void **)filter = param; + if (paramID == 1) { + *(void **)filter = param; + return 0; + } + if (paramID == 6) { + *(void **)((int)filter + 0x14) = param; + return 0; + } return 0; - } - if (paramID == 6) { - *(void **)((int)filter + 0x14) = param; - return 0; - } - return 0; } @@ -18526,19 +18638,19 @@ s32 alSaveParam(void *filter,s32 paramID,void *param) longlong _alSavePull(void *filter,s16 *outp,s32 outCount,s32 sampleOffset,Acmd *p) { - undefined4 *puVar1; - - puVar1 = (undefined4 *) - (**(code **)(*(int *)filter + 4))(*(int *)filter,outp,outCount,sampleOffset,p); - puVar1[1] = (outCount & 0x7fffU) << 1; - *puVar1 = 0x8000000; - puVar1[2] = 0xd000000; - puVar1[3] = 0x4400580; - puVar1[5] = (outCount & 0x3fffU) << 2; - puVar1[4] = 0x8000000; - puVar1[6] = 0x6000000; - puVar1[7] = *(undefined4 *)((int)filter + 0x14); - return (longlong)(int)(puVar1 + 8); + undefined4 *puVar1; + + puVar1 = (undefined4 *) + (**(code **)(*(int *)filter + 4))(*(int *)filter,outp,outCount,sampleOffset,p); + puVar1[1] = (outCount & 0x7fffU) << 1; + *puVar1 = 0x8000000; + puVar1[2] = 0xd000000; + puVar1[3] = 0x4400580; + puVar1[5] = (outCount & 0x3fffU) << 2; + puVar1[4] = 0x8000000; + puVar1[6] = 0x6000000; + puVar1[7] = *(undefined4 *)((int)filter + 0x14); + return (longlong)(int)(puVar1 + 8); } @@ -18546,39 +18658,39 @@ longlong _alSavePull(void *filter,s16 *outp,s32 outCount,s32 sampleOffset,Acmd * s32 osJamMesg(OSMesgQueue *mq,OSMesg msg,s32 flags) { - int iVar1; - u32 saveMask; - OSThread *t; - int iVar2; - - saveMask = __osDisableInt(); - if (mq->msgCount <= mq->validCount) { - do { - if (flags != 1) { - __osRestoreInt(saveMask); - return -1; - } - __osRunningThread->state = 8; - __osEnqueueAndYield(&mq->fullqueue); - } while (mq->msgCount <= mq->validCount); - } - iVar1 = mq->msgCount; - iVar2 = mq->first + iVar1 + -1; - mq->first = iVar2 % iVar1; - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - mq->msg[mq->first] = msg; - mq->validCount = mq->validCount + 1; - if (mq->mtqueue->next != NULL) { - t = __osPopThread((OSThread *)mq); - osStartThread(t); - } - __osRestoreInt(saveMask); - return 0; + int iVar1; + u32 saveMask; + OSThread *t; + int iVar2; + + saveMask = __osDisableInt(); + if (mq->msgCount <= mq->validCount) { + do { + if (flags != 1) { + __osRestoreInt(saveMask); + return -1; + } + __osRunningThread->state = 8; + __osEnqueueAndYield(&mq->fullqueue); + } while (mq->msgCount <= mq->validCount); + } + iVar1 = mq->msgCount; + iVar2 = mq->first + iVar1 + -1; + mq->first = iVar2 % iVar1; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + mq->msg[mq->first] = msg; + mq->validCount = mq->validCount + 1; + if (mq->mtqueue->next != NULL) { + t = __osPopThread((OSThread *)mq); + osStartThread(t); + } + __osRestoreInt(saveMask); + return 0; } @@ -18586,10 +18698,10 @@ s32 osJamMesg(OSMesgQueue *mq,OSMesg msg,s32 flags) OSMesgQueue * osPiGetCmdQueue(void) { - if (__osPiDevMgr.active == 0) { - return (OSMesgQueue *)0; - } - return __osPiDevMgr.cmdQueue; + if (__osPiDevMgr.active == 0) { + return (OSMesgQueue *)0; + } + return __osPiDevMgr.cmdQueue; } @@ -18599,42 +18711,42 @@ OSMesgQueue * osPiGetCmdQueue(void) ulonglong proc_7001B830(void) { - ulonglong in_f0; - double dVar1; - double dVar2; - ulonglong in_f4; - float in_f12; - double dVar3; - double dVar4; - double dVar5; - uint in_register_00001090; - - if (0x135 < ((int)in_f12 >> 0x16 & 0x1ffU)) { - if (false) { - return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_80029D40._0_4_; + ulonglong in_f0; + double dVar1; + double dVar2; + ulonglong in_f4; + float in_f12; + double dVar3; + double dVar4; + double dVar5; + uint in_register_00001090; + + if (0x135 < ((int)in_f12 >> 0x16 & 0x1ffU)) { + if (false) { + return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_80029D40._0_4_; + } + return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_800299F0; + } + if (in_f12 <= 0.00000000) { + in_f12 = -in_f12; + } + dVar3 = (double)in_f12 * dbl_800299D8 + (double)((ulonglong)in_register_00001090 << 0x20); + if ((double)(in_f4 & 0xffffffff00000000) <= dVar3) { + dVar3 = dVar3 + (double)((ulonglong)in_register_00001090 << 0x20); + } + else { + dVar3 = dVar3 - (double)((ulonglong)in_register_00001090 << 0x20); + } + dVar1 = (double)(int)dVar3 - (double)((ulonglong)in_register_00001090 << 0x20); + dVar2 = ((double)in_f12 - dVar1 * dbl_800299E0) - dVar1 * dbl_800299E8; + dVar4 = dVar2 * dVar2; + dVar5 = dbl_800299B8 + ((dbl_800299D0 * dVar4 + dbl_800299C8) * dVar4 + dbl_800299C0) * dVar4; + if (((int)dVar3 & 1U) != 0) { + return (ulonglong)dVar1 & 0xffffffff00000000 | + (ulonglong)(uint)-(float)(dVar2 * dVar4 * dVar5 + dVar2); } - return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_800299F0; - } - if (in_f12 <= 0.00000000) { - in_f12 = -in_f12; - } - dVar3 = (double)in_f12 * dbl_800299D8 + (double)((ulonglong)in_register_00001090 << 0x20); - if ((double)(in_f4 & 0xffffffff00000000) <= dVar3) { - dVar3 = dVar3 + (double)((ulonglong)in_register_00001090 << 0x20); - } - else { - dVar3 = dVar3 - (double)((ulonglong)in_register_00001090 << 0x20); - } - dVar1 = (double)(int)dVar3 - (double)((ulonglong)in_register_00001090 << 0x20); - dVar2 = ((double)in_f12 - dVar1 * dbl_800299E0) - dVar1 * dbl_800299E8; - dVar4 = dVar2 * dVar2; - dVar5 = dbl_800299B8 + ((dbl_800299D0 * dVar4 + dbl_800299C8) * dVar4 + dbl_800299C0) * dVar4; - if (((int)dVar3 & 1U) != 0) { return (ulonglong)dVar1 & 0xffffffff00000000 | - (ulonglong)(uint)-(float)(dVar2 * dVar4 * dVar5 + dVar2); - } - return (ulonglong)dVar1 & 0xffffffff00000000 | - (ulonglong)(uint)(float)(dVar2 * dVar4 * dVar5 + dVar2); + (ulonglong)(uint)(float)(dVar2 * dVar4 * dVar5 + dVar2); } @@ -18644,55 +18756,55 @@ ulonglong proc_7001B830(void) ulonglong proc_7001B9A0(void) { - uint uVar1; - ulonglong in_f0; - double dVar2; - double dVar3; - ulonglong in_f6; - ulonglong in_f8; - float in_f12; - double dVar4; - double dVar5; - double dVar6; - ulonglong in_f16; - - uVar1 = (int)in_f12 >> 0x16 & 0x1ff; - if (uVar1 < 0xff) { - dVar2 = (double)in_f12; - if (0xe5 < uVar1) { - dVar4 = dVar2 * dVar2; - return in_f0 & 0xffffffff00000000 | - (ulonglong) - (uint)(float)(dVar2 * dVar4 * - (dbl_80029A08 + - ((dbl_80029A20 * dVar4 + dbl_80029A18) * dVar4 + dbl_80029A10) * dVar4) + - dVar2); + uint uVar1; + ulonglong in_f0; + double dVar2; + double dVar3; + ulonglong in_f6; + ulonglong in_f8; + float in_f12; + double dVar4; + double dVar5; + double dVar6; + ulonglong in_f16; + + uVar1 = (int)in_f12 >> 0x16 & 0x1ff; + if (uVar1 < 0xff) { + dVar2 = (double)in_f12; + if (0xe5 < uVar1) { + dVar4 = dVar2 * dVar2; + return in_f0 & 0xffffffff00000000 | + (ulonglong) + (uint)(float)(dVar2 * dVar4 * + (dbl_80029A08 + + ((dbl_80029A20 * dVar4 + dbl_80029A18) * dVar4 + dbl_80029A10) * + dVar4) + dVar2); + } + return in_f0 & 0xffffffff00000000 | (ulonglong)(uint)in_f12; } - return in_f0 & 0xffffffff00000000 | (ulonglong)(uint)in_f12; - } - if (0x135 < uVar1) { - if (true) { - return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_80029A40._0_4_; + if (0x135 < uVar1) { + if (true) { + return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_80029A40._0_4_; + } + return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_80029D40._0_4_; + } + dVar2 = (double)in_f12 * dbl_80029A28; + if ((double)(in_f8 & 0xffffffff00000000) <= dVar2) { + dVar2 = dVar2 + (double)(in_f16 & 0xffffffff00000000); + } + else { + dVar2 = dVar2 - (double)(in_f6 & 0xffffffff00000000); + } + dVar4 = (double)(int)dVar2; + dVar3 = ((double)in_f12 - dVar4 * dbl_80029A30) - dVar4 * dbl_80029A38; + dVar5 = dVar3 * dVar3; + dVar6 = dbl_80029A08 + ((dbl_80029A20 * dVar5 + dbl_80029A18) * dVar5 + dbl_80029A10) * dVar5; + if (((int)dVar2 & 1U) == 0) { + return (ulonglong)dVar4 & 0xffffffff00000000 | + (ulonglong)(uint)(float)(dVar3 * dVar5 * dVar6 + dVar3); } - return in_f0 & 0xffffffff00000000 | (ulonglong)dbl_80029D40._0_4_; - } - dVar2 = (double)in_f12 * dbl_80029A28; - if ((double)(in_f8 & 0xffffffff00000000) <= dVar2) { - dVar2 = dVar2 + (double)(in_f16 & 0xffffffff00000000); - } - else { - dVar2 = dVar2 - (double)(in_f6 & 0xffffffff00000000); - } - dVar4 = (double)(int)dVar2; - dVar3 = ((double)in_f12 - dVar4 * dbl_80029A30) - dVar4 * dbl_80029A38; - dVar5 = dVar3 * dVar3; - dVar6 = dbl_80029A08 + ((dbl_80029A20 * dVar5 + dbl_80029A18) * dVar5 + dbl_80029A10) * dVar5; - if (((int)dVar2 & 1U) == 0) { return (ulonglong)dVar4 & 0xffffffff00000000 | - (ulonglong)(uint)(float)(dVar3 * dVar5 * dVar6 + dVar3); - } - return (ulonglong)dVar4 & 0xffffffff00000000 | - (ulonglong)(uint)-(float)(dVar3 * dVar5 * dVar6 + dVar3); + (ulonglong)(uint)-(float)(dVar3 * dVar5 * dVar6 + dVar3); } @@ -18700,43 +18812,42 @@ ulonglong proc_7001B9A0(void) void osDestroyThread(OSThread *t) { - OSThread *pOVar1; - OSThread *pOVar2; - OSThread *pOVar3; - u32 mask; - OSThread *pOStackX0; - - mask = __osDisableInt(); - if (t == NULL) { - pOStackX0 = __osRunningThread; - } - else { - pOStackX0 = t; - if (t->state != 1) { - __osDequeueThread((OSThread **)t->queue,t); - pOStackX0 = t; + OSThread *pOVar1; + OSThread *pOVar2; + OSThread *pOVar3; + u32 mask; + OSThread *pOStackX0; + + mask = __osDisableInt(); + if (t == NULL) { + pOStackX0 = __osRunningThread; } - } - if (__osActiveQueue == pOStackX0) { - __osActiveQueue = (OSThread *)__osActiveQueue->tlnext; - } - else { - pOVar3 = (OSThread *)__osActiveQueue->tlnext; - pOVar2 = __osActiveQueue; - while (pOVar1 = pOVar3, pOVar1 != NULL) { - if (pOVar1 == pOStackX0) { - pOVar2->tlnext = pOStackX0->tlnext; - break; - } - pOVar3 = (OSThread *)pOVar1->tlnext; - pOVar2 = pOVar1; + else { + pOStackX0 = t; + if (t->state != 1) { + __osDequeueThread((OSThread **)t->queue,t); + } } - } - if (pOStackX0 == __osRunningThread) { - __osDispatchThread(); - } - __osRestoreInt(mask); - return; + if (__osActiveQueue == pOStackX0) { + __osActiveQueue = (OSThread *)__osActiveQueue->tlnext; + } + else { + pOVar3 = (OSThread *)__osActiveQueue->tlnext; + pOVar2 = __osActiveQueue; + while (pOVar1 = pOVar3, pOVar1 != NULL) { + if (pOVar1 == pOStackX0) { + pOVar2->tlnext = pOStackX0->tlnext; + break; + } + pOVar3 = (OSThread *)pOVar1->tlnext; + pOVar2 = pOVar1; + } + } + if (pOStackX0 == __osRunningThread) { + __osDispatchThread(); + } + __osRestoreInt(mask); + return; } @@ -18744,13 +18855,13 @@ void osDestroyThread(OSThread *t) void __setInstChanState(int param_1,undefined *param_2,int param_3) { - param_3 *= 0x10; - *(undefined **)(*(int *)(param_1 + 0x60) + param_3) = param_2; - *(undefined *)(*(int *)(param_1 + 0x60) + param_3 + 7) = param_2[1]; - *(undefined *)(*(int *)(param_1 + 0x60) + param_3 + 9) = *param_2; - *(undefined *)(*(int *)(param_1 + 0x60) + param_3 + 8) = param_2[2]; - *(undefined2 *)(*(int *)(param_1 + 0x60) + param_3 + 4) = *(undefined2 *)(param_2 + 0xc); - return; + param_3 *= 0x10; + *(undefined **)(*(int *)(param_1 + 0x60) + param_3) = param_2; + *(undefined *)(*(int *)(param_1 + 0x60) + param_3 + 7) = param_2[1]; + *(undefined *)(*(int *)(param_1 + 0x60) + param_3 + 9) = *param_2; + *(undefined *)(*(int *)(param_1 + 0x60) + param_3 + 8) = param_2[2]; + *(undefined2 *)(*(int *)(param_1 + 0x60) + param_3 + 4) = *(undefined2 *)(param_2 + 0xc); + return; } @@ -18758,16 +18869,16 @@ void __setInstChanState(int param_1,undefined *param_2,int param_3) void __resetPerfChanState(int param_1,int param_2) { - param_2 *= 0x10; - *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 6) = 0; - *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 10) = 0; - *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 7) = 0x40; - *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 9) = 0x7f; - *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 8) = 5; - *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 0xb) = 0; - *(undefined2 *)(*(int *)(param_1 + 0x60) + param_2 + 4) = 200; - *(undefined4 *)(*(int *)(param_1 + 0x60) + param_2 + 0xc) = 0x3f800000; - return; + param_2 *= 0x10; + *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 6) = 0; + *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 10) = 0; + *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 7) = 0x40; + *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 9) = 0x7f; + *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 8) = 5; + *(undefined *)(*(int *)(param_1 + 0x60) + param_2 + 0xb) = 0; + *(undefined2 *)(*(int *)(param_1 + 0x60) + param_2 + 4) = 200; + *(undefined4 *)(*(int *)(param_1 + 0x60) + param_2 + 0xc) = 0x3f800000; + return; } @@ -18775,32 +18886,32 @@ void __resetPerfChanState(int param_1,int param_2) void __initFromBank(int param_1,int param_2) { - undefined *puVar1; - longlong lVar2; - int iVar3; - - puVar1 = *(undefined **)(param_2 + 0xc); - iVar3 = param_2; - while (puVar1 == NULL) { - puVar1 = *(undefined **)(iVar3 + 0x10); - iVar3 = iVar3 + 4; - } - lVar2 = 0; - iVar3 = 0; - if (*(char *)(param_1 + 0x34) != '\0') { - do { - iVar3 = (int)lVar2; - __resetPerfChanState(param_1,iVar3); - __setInstChanState(param_1,puVar1,iVar3); - iVar3 += 1; - lVar2 = (longlong)iVar3; - } while (lVar2 < (longlong)(ulonglong)*(byte *)(param_1 + 0x34)); - } - if (*(int *)(param_2 + 8) != 0) { - __resetPerfChanState(param_1,iVar3); - __setInstChanState(param_1,*(undefined **)(param_2 + 8),9); - } - return; + undefined *puVar1; + longlong lVar2; + int iVar3; + + puVar1 = *(undefined **)(param_2 + 0xc); + iVar3 = param_2; + while (puVar1 == NULL) { + puVar1 = *(undefined **)(iVar3 + 0x10); + iVar3 = iVar3 + 4; + } + lVar2 = 0; + iVar3 = 0; + if (*(char *)(param_1 + 0x34) != '\0') { + do { + iVar3 = (int)lVar2; + __resetPerfChanState(param_1,iVar3); + __setInstChanState(param_1,puVar1,iVar3); + iVar3 += 1; + lVar2 = (longlong)iVar3; + } while (lVar2 < (longlong)(ulonglong)*(byte *)(param_1 + 0x34)); + } + if (*(int *)(param_2 + 8) != 0) { + __resetPerfChanState(param_1,iVar3); + __setInstChanState(param_1,*(undefined **)(param_2 + 8),9); + } + return; } @@ -18808,7 +18919,7 @@ void __initFromBank(int param_1,int param_2) void proc_7001BDE8(void) { - return; + return; } @@ -18816,11 +18927,11 @@ void proc_7001BDE8(void) int __vsDelta(int param_1,int param_2) { - param_2 = *(int *)(param_1 + 0x24) - param_2; - if (-1 < param_2) { - return param_2; - } - return 1000; + param_2 = *(int *)(param_1 + 0x24) - param_2; + if (-1 < param_2) { + return param_2; + } + return 1000; } @@ -18828,12 +18939,12 @@ int __vsDelta(int param_1,int param_2) undefined2 __vsVol(int param_1,int param_2) { - return (short)((uint)(((int)((uint)*(byte *)(param_1 + 0x36) * (uint)*(byte *)(param_1 + 0x33) * - (uint)*(byte *)(param_1 + 0x30)) >> 6) * - ((int)((uint)*(byte *)(*(int *)(param_2 + 0x60) + - (uint)*(byte *)(param_1 + 0x31) * 0x10 + 9) * - (uint)*(byte *)(*(int *)(param_1 + 0x20) + 0xd) * - (int)*(short *)(param_2 + 0x32)) >> 0xe)) >> 0xf); + return (short)((uint)(((int)((uint)*(byte *)(param_1 + 0x36) * (uint)*(byte *)(param_1 + 0x33) * + (uint)*(byte *)(param_1 + 0x30)) >> 6) * + ((int)((uint)*(byte *)(*(int *)(param_2 + 0x60) + + (uint)*(byte *)(param_1 + 0x31) * 0x10 + 9) * + (uint)*(byte *)(*(int *)(param_1 + 0x20) + 0xd) * + (int)*(short *)(param_2 + 0x32)) >> 0xe)) >> 0xf); } @@ -18841,36 +18952,37 @@ undefined2 __vsVol(int param_1,int param_2) void __seqpReleaseVoice(int param_1,int *param_2,int *param_3) { - int iVar1; - ALLink_s *pAVar2; - ALLink *a; - s16 sStack16; - int *piStack12; - - iVar1 = param_2[4]; - if (*(char *)(iVar1 + 0x34) == '\0') { - pAVar2 = (ALLink_s *)*(ALLink **)(param_1 + 0x50); - while (a = (ALLink *)pAVar2, a != NULL) { - pAVar2 = a->next; - if ((*(short *)&a[1].prev == 6) && ((ALLink_s *)param_2 == a[2].next)) { - if (pAVar2 != NULL) { - pAVar2[1].next = (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar2[1].next)->next); + int iVar1; + ALLink_s *pAVar2; + ALLink *a; + s16 sStack16; + int *piStack12; + + iVar1 = param_2[4]; + if (*(char *)(iVar1 + 0x34) == '\0') { + pAVar2 = (ALLink_s *)*(ALLink **)(param_1 + 0x50); + while (a = (ALLink *)pAVar2, a != NULL) { + pAVar2 = a->next; + if ((*(short *)&a[1].prev == 6) && ((ALLink_s *)param_2 == a[2].next)) { + if (pAVar2 != NULL) { + pAVar2[1].next = + (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar2[1].next)->next); + } + alUnlink(a); + alLink(a,(ALLink *)(param_1 + 0x48)); + } } - alUnlink(a); - alLink(a,(ALLink *)(param_1 + 0x48)); - } } - } - *(undefined *)(iVar1 + 0x33) = 0; - *(undefined *)(iVar1 + 0x34) = 3; - *(undefined *)(iVar1 + 0x30) = 0; - *(int *)(iVar1 + 0x24) = *(int *)(param_1 + 0x1c) + (int)param_3; - alSynSetPriority(*(ALSynth **)(param_1 + 0x14),(ALVoice *)param_2,0); - alSynSetVol(*(ALSynth **)(param_1 + 0x14),(ALVoice *)param_2,0,(ALMicroTime)param_3); - sStack16 = 5; - piStack12 = param_2; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x48),(ALEvent *)&sStack16,(ALMicroTime)param_3); - return; + *(undefined *)(iVar1 + 0x33) = 0; + *(undefined *)(iVar1 + 0x34) = 3; + *(undefined *)(iVar1 + 0x30) = 0; + *(int *)(iVar1 + 0x24) = *(int *)(param_1 + 0x1c) + (int)param_3; + alSynSetPriority(*(ALSynth **)(param_1 + 0x14),(ALVoice *)param_2,0); + alSynSetVol(*(ALSynth **)(param_1 + 0x14),(ALVoice *)param_2,0,(ALMicroTime)param_3); + sStack16 = 5; + piStack12 = param_2; + alEvtqPostEvent((ALEventQueue *)(param_1 + 0x48),(ALEvent *)&sStack16,(ALMicroTime)param_3); + return; } @@ -18878,33 +18990,33 @@ void __seqpReleaseVoice(int param_1,int *param_2,int *param_3) undefined8 __voiceNeedsNoteKill(int param_1,int *param_2,int param_3) { - ALLink_s *pAVar1; - ALLink *a; - int iVar2; - undefined8 uVar3; - - iVar2 = 0; - pAVar1 = (ALLink_s *)*(ALLink **)(param_1 + 0x50); - do { - a = (ALLink *)pAVar1; - if (a == NULL) { - return 1; + ALLink_s *pAVar1; + ALLink *a; + int iVar2; + undefined8 uVar3; + + iVar2 = 0; + pAVar1 = (ALLink_s *)*(ALLink **)(param_1 + 0x50); + do { + a = (ALLink *)pAVar1; + if (a == NULL) { + return 1; + } + pAVar1 = a->next; + iVar2 = (int)&(a[1].next)->next + iVar2; + } while ((*(short *)&a[1].prev != 5) || ((ALLink_s *)param_2 != a[2].next)); + if (param_3 < iVar2) { + if (pAVar1 != NULL) { + pAVar1[1].next = (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar1[1].next)->next); + } + alUnlink(a); + alLink(a,(ALLink *)(param_1 + 0x48)); + uVar3 = 1; } - pAVar1 = a->next; - iVar2 = (int)&(a[1].next)->next + iVar2; - } while ((*(short *)&a[1].prev != 5) || ((ALLink_s *)param_2 != a[2].next)); - if (param_3 < iVar2) { - if (pAVar1 != NULL) { - pAVar1[1].next = (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar1[1].next)->next); + else { + uVar3 = 0; } - alUnlink(a); - alLink(a,(ALLink *)(param_1 + 0x48)); - uVar3 = 1; - } - else { - uVar3 = 0; - } - return uVar3; + return uVar3; } @@ -18912,38 +19024,38 @@ undefined8 __voiceNeedsNoteKill(int param_1,int *param_2,int param_3) void __unmapVoice(int param_1,int param_2) { - undefined4 *puVar1; - undefined4 *puVar2; - undefined4 *puVar3; - undefined4 uVar4; - - puVar3 = *(undefined4 **)(param_1 + 100); - puVar2 = NULL; - while( true ) { - puVar1 = puVar3; - if (puVar1 == NULL) { - return; + undefined4 *puVar1; + undefined4 *puVar2; + undefined4 *puVar3; + undefined4 uVar4; + + puVar3 = *(undefined4 **)(param_1 + 100); + puVar2 = NULL; + while( true ) { + puVar1 = puVar3; + if (puVar1 == NULL) { + return; + } + if (puVar1 == (undefined4 *)(param_2 + -4)) break; + puVar3 = (undefined4 *)*puVar1; + puVar2 = puVar1; } - if (puVar1 == (undefined4 *)(param_2 + -4)) break; - puVar3 = (undefined4 *)*puVar1; - puVar2 = puVar1; - } - if (puVar2 == NULL) { - *(undefined4 *)(param_1 + 100) = *puVar1; - } - else { - *puVar2 = *puVar1; - } - if (puVar1 == *(undefined4 **)(param_1 + 0x68)) { - *(undefined4 **)(param_1 + 0x68) = puVar2; - uVar4 = *(undefined4 *)(param_1 + 0x6c); - } - else { - uVar4 = *(undefined4 *)(param_1 + 0x6c); - } - *puVar1 = uVar4; - *(undefined4 **)(param_1 + 0x6c) = puVar1; - return; + if (puVar2 == NULL) { + *(undefined4 *)(param_1 + 100) = *puVar1; + } + else { + *puVar2 = *puVar1; + } + if (puVar1 == *(undefined4 **)(param_1 + 0x68)) { + *(undefined4 **)(param_1 + 0x68) = puVar2; + uVar4 = *(undefined4 *)(param_1 + 0x6c); + } + else { + uVar4 = *(undefined4 *)(param_1 + 0x6c); + } + *puVar1 = uVar4; + *(undefined4 **)(param_1 + 0x6c) = puVar1; + return; } @@ -18951,26 +19063,28 @@ void __unmapVoice(int param_1,int param_2) void __postNextSeqEvent(int param_1) { - ALSeq *seq; - ulonglong uVar1; - s32 sVar2; - int iStack20; - ALEvent AStack16; - - seq = *(ALSeq **)(param_1 + 0x18); - if (((*(int *)(param_1 + 0x2c) == 1) && (seq != NULL)) && - (uVar1 = __alSeqNextDelta((int *)seq,&iStack20), uVar1 != 0)) { - if ((*(int *)(param_1 + 0x84) != 0) && - (sVar2 = alSeqGetTicks(seq), *(int *)(*(int *)(param_1 + 0x80) + 8) <= sVar2 + iStack20)) { - alSeqSetLoc(seq,*(ALSeqMarker **)(param_1 + 0x7c)); - if (*(int *)(param_1 + 0x84) != -1) { - *(int *)(param_1 + 0x84) = *(int *)(param_1 + 0x84) + -1; - } + ALSeq *seq; + ulonglong uVar1; + s32 sVar2; + int iStack20; + ALEvent AStack16; + + seq = *(ALSeq **)(param_1 + 0x18); + if (((*(int *)(param_1 + 0x2c) == 1) && (seq != NULL)) && + (uVar1 = __alSeqNextDelta((int *)seq,&iStack20), uVar1 != 0)) { + if ((*(int *)(param_1 + 0x84) != 0) && + (sVar2 = alSeqGetTicks(seq), *(int *)(*(int *)(param_1 + 0x80) + 8) <= sVar2 + iStack20)) + { + alSeqSetLoc(seq,*(ALSeqMarker **)(param_1 + 0x7c)); + if (*(int *)(param_1 + 0x84) != -1) { + *(int *)(param_1 + 0x84) = *(int *)(param_1 + 0x84) + -1; + } + } + AStack16.type = 0; + alEvtqPostEvent((ALEventQueue *)(param_1 + 0x48),&AStack16, + *(int *)(param_1 + 0x24) * iStack20); } - AStack16.type = 0; - alEvtqPostEvent((ALEventQueue *)(param_1 + 0x48),&AStack16,*(int *)(param_1 + 0x24) * iStack20); - } - return; + return; } @@ -18978,17 +19092,17 @@ void __postNextSeqEvent(int param_1) void proc_7001C1BC(int param_1,int param_2) { - if ((*(char *)(param_1 + 8) == -1) && (*(char *)(param_1 + 9) == 'Q')) { - if (*(int *)(param_2 + 0x18) != 0) { - *(int *)(param_2 + 0x24) = - (int)((float)((uint)*(byte *)(param_1 + 0xb) << 0x10 | - (uint)*(byte *)(param_1 + 0xc) << 8 | (uint)*(byte *)(param_1 + 0xd)) * - *(float *)(*(int *)(param_2 + 0x18) + 0x14)); - return; + if ((*(char *)(param_1 + 8) == -1) && (*(char *)(param_1 + 9) == 'Q')) { + if (*(int *)(param_2 + 0x18) != 0) { + *(int *)(param_2 + 0x24) = + (int)((float)((uint)*(byte *)(param_1 + 0xb) << 0x10 | + (uint)*(byte *)(param_1 + 0xc) << 8 | (uint)*(byte *)(param_1 + 0xd)) + * *(float *)(*(int *)(param_2 + 0x18) + 0x14)); + return; + } + *(undefined4 *)(param_2 + 0x24) = 0x1e8; } - *(undefined4 *)(param_2 + 0x24) = 0x1e8; - } - return; + return; } @@ -18996,19 +19110,19 @@ void proc_7001C1BC(int param_1,int param_2) uint __vsPan(int param_1,int param_2) { - uint uVar1; - uint uVar2; - - uVar1 = ((uint)*(byte *)(*(int *)(param_2 + 0x60) + (uint)*(byte *)(param_1 + 0x31) * 0x10 + 7) + - (uint)*(byte *)(*(int *)(param_1 + 0x20) + 0xc)) - 0x40; - uVar2 = uVar1; - if ((int)uVar1 < 1) { - uVar2 = 0; - } - if (0x7e < (int)uVar1) { - uVar2 = 0x7f; - } - return uVar2 & 0xff; + uint uVar1; + uint uVar2; + + uVar1 = ((uint)*(byte *)(*(int *)(param_2 + 0x60) + (uint)*(byte *)(param_1 + 0x31) * 0x10 + 7) + + (uint)*(byte *)(*(int *)(param_1 + 0x20) + 0xc)) - 0x40; + uVar2 = uVar1; + if ((int)uVar1 < 1) { + uVar2 = 0; + } + if (0x7e < (int)uVar1) { + uVar2 = 0x7f; + } + return uVar2 & 0xff; } @@ -19016,37 +19130,37 @@ uint __vsPan(int param_1,int param_2) undefined4 * ___lookupVoice(int param_1,char param_2,char param_3) { - char cVar1; - undefined4 *puVar2; - - puVar2 = *(undefined4 **)(param_1 + 100); - if (puVar2 != NULL) { - cVar1 = *(char *)((int)puVar2 + 0x32); - while( true ) { - if (param_2 == cVar1) { - if (param_3 == *(char *)((int)puVar2 + 0x31)) { - if (*(char *)((int)puVar2 + 0x35) == '\x03') { - puVar2 = (undefined4 *)*puVar2; - } - else { - if (*(char *)((int)puVar2 + 0x35) != '\x04') { - return puVar2; + char cVar1; + undefined4 *puVar2; + + puVar2 = *(undefined4 **)(param_1 + 100); + if (puVar2 != NULL) { + cVar1 = *(char *)((int)puVar2 + 0x32); + while( true ) { + if (param_2 == cVar1) { + if (param_3 == *(char *)((int)puVar2 + 0x31)) { + if (*(char *)((int)puVar2 + 0x35) == '\x03') { + puVar2 = (undefined4 *)*puVar2; + } + else { + if (*(char *)((int)puVar2 + 0x35) != '\x04') { + return puVar2; + } + puVar2 = (undefined4 *)*puVar2; + } + } + else { + puVar2 = (undefined4 *)*puVar2; + } } - puVar2 = (undefined4 *)*puVar2; - } + else { + puVar2 = (undefined4 *)*puVar2; + } + if (puVar2 == NULL) break; + cVar1 = *(char *)((int)puVar2 + 0x32); } - else { - puVar2 = (undefined4 *)*puVar2; - } - } - else { - puVar2 = (undefined4 *)*puVar2; - } - if (puVar2 == NULL) break; - cVar1 = *(char *)((int)puVar2 + 0x32); } - } - return NULL; + return NULL; } @@ -19054,25 +19168,25 @@ undefined4 * ___lookupVoice(int param_1,char param_2,char param_3) undefined4 * ___mapVoice(int param_1,undefined param_2,undefined param_3,undefined param_4) { - undefined4 *puVar1; - - puVar1 = *(undefined4 **)(param_1 + 0x6c); - if (puVar1 != NULL) { - *(undefined4 *)(param_1 + 0x6c) = *puVar1; - *puVar1 = 0; - if (*(int *)(param_1 + 100) == 0) { - *(undefined4 **)(param_1 + 100) = puVar1; + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x6c); + if (puVar1 != NULL) { + *(undefined4 *)(param_1 + 0x6c) = *puVar1; + *puVar1 = 0; + if (*(int *)(param_1 + 100) == 0) { + *(undefined4 **)(param_1 + 100) = puVar1; + } + else { + *(undefined4 **)*(undefined4 **)(param_1 + 0x68) = puVar1; + } + *(undefined4 **)(param_1 + 0x68) = puVar1; + *(undefined *)((int)puVar1 + 0x31) = param_4; + *(undefined *)((int)puVar1 + 0x32) = param_2; + *(undefined *)((int)puVar1 + 0x33) = param_3; + *(undefined4 **)(puVar1 + 5) = puVar1; } - else { - *(undefined4 **)*(undefined4 **)(param_1 + 0x68) = puVar1; - } - *(undefined4 **)(param_1 + 0x68) = puVar1; - *(undefined *)((int)puVar1 + 0x31) = param_4; - *(undefined *)((int)puVar1 + 0x32) = param_2; - *(undefined *)((int)puVar1 + 0x33) = param_3; - *(undefined4 **)(puVar1 + 5) = puVar1; - } - return puVar1; + return puVar1; } @@ -19080,51 +19194,51 @@ undefined4 * ___mapVoice(int param_1,undefined param_2,undefined param_3,undefin int __lookupSoundQuick(int param_1,byte param_2,byte param_3,uint param_4) { - short sVar1; - int iVar2; - int iVar3; - byte *pbVar4; - longlong lVar5; - int iVar6; - longlong lVar7; - - iVar2 = *(int *)(*(int *)(param_1 + 0x60) + (param_4 & 0xff) * 0x10); - sVar1 = *(short *)(iVar2 + 0xe); - lVar7 = (longlong)sVar1; - lVar5 = 1; - iVar6 = (int)sVar1 + 1; - if (lVar7 < 1) { - return 0; - } - do { - if (iVar6 < 0) { - iVar6 += 1; + short sVar1; + int iVar2; + int iVar3; + byte *pbVar4; + longlong lVar5; + int iVar6; + longlong lVar7; + + iVar2 = *(int *)(*(int *)(param_1 + 0x60) + (param_4 & 0xff) * 0x10); + sVar1 = *(short *)(iVar2 + 0xe); + lVar7 = (longlong)sVar1; + lVar5 = 1; + iVar6 = (int)sVar1 + 1; + if (lVar7 < 1) { + return 0; } - iVar6 >>= 1; - iVar3 = *(int *)(iVar2 + iVar6 * 4 + 0xc); - pbVar4 = *(byte **)(iVar3 + 4); - if ((((pbVar4[2] <= param_2) && (param_2 <= pbVar4[3])) && (*pbVar4 <= param_3)) && - (param_3 <= pbVar4[1])) { - return iVar3; - } - if (param_2 < pbVar4[2]) { + do { + if (iVar6 < 0) { + iVar6 += 1; + } + iVar6 >>= 1; + iVar3 = *(int *)(iVar2 + iVar6 * 4 + 0xc); + pbVar4 = *(byte **)(iVar3 + 4); + if ((((pbVar4[2] <= param_2) && (param_2 <= pbVar4[3])) && (*pbVar4 <= param_3)) && + (param_3 <= pbVar4[1])) { + return iVar3; + } + if (param_2 < pbVar4[2]) { LAB_7001c438: - lVar7 = (longlong)(iVar6 + -1); - } - else { - if (param_3 < *pbVar4) { - if (param_2 <= pbVar4[3]) goto LAB_7001c438; - lVar5 = (longlong)(iVar6 + 1); - } - else { - lVar5 = (longlong)(iVar6 + 1); - } - } - if (lVar7 < lVar5) { - return 0; - } - iVar6 = (int)lVar5 + (int)lVar7; - } while( true ); + lVar7 = (longlong)(iVar6 + -1); + } + else { + if (param_3 < *pbVar4) { + if (param_2 <= pbVar4[3]) goto LAB_7001c438; + lVar5 = (longlong)(iVar6 + 1); + } + else { + lVar5 = (longlong)(iVar6 + 1); + } + } + if (lVar7 < lVar5) { + return 0; + } + iVar6 = (int)lVar5 + (int)lVar7; + } while( true ); } @@ -19132,367 +19246,371 @@ LAB_7001c438: void __handleMIDIMsg(ALSeqPlayer *seqp,ALEvent *event) { - byte bVar1; - byte bVar2; - byte fxmix; - int iVar3; - int iVar4; - int iVar5; - int **ppiVar7; - longlong lVar6; - undefined2 uVar9; - undefined4 *puVar8; - s16 volume; - uint uVar10; - ALMicroTime t; - ALVoice *voice; - char cVar11; - ulonglong uVar12; - int unaff_s1_lo; - uint uVar13; - f32 pitch; - float fVar14; - float fVar15; - undefined uVar17; - float fVar16; - f32 pitch_00; - f32 extraout_f12; - f32 extraout_f12_00; - undefined4 auStack92 [2]; - float afStack84 [4]; - ALVoiceConfig aAStack68 [4]; - s16 sStack44; - ALVoice *pAStack40; - int iStack36; - char cStack32; - - bVar1 = *(byte *)&(seqp->node).handler; - bVar2 = *(byte *)((int)&(seqp->node).handler + 1); - fxmix = *(byte *)((int)&(seqp->node).handler + 2); - uVar10 = (uint)bVar1 & 0xf0; - uVar12 = (ulonglong)bVar1 & 0xf; - if (0x60 < uVar10 - 0x80) { - return; - } - uVar13 = (uint)uVar12; - cVar11 = (char)uVar12; - switch(uVar10) { - case 0x80: - goto LAB_7001c7f8; - case 0x90: - if (fxmix != 0) { - if (*(int *)(unaff_s1_lo + 0x2c) != 1) { + byte bVar1; + byte bVar2; + byte fxmix; + int iVar3; + int iVar4; + int iVar5; + int **ppiVar7; + longlong lVar6; + undefined2 uVar9; + undefined4 *puVar8; + s16 volume; + uint uVar10; + ALMicroTime t; + ALVoice *voice; + char cVar11; + ulonglong uVar12; + int unaff_s1_lo; + uint uVar13; + f32 pitch; + float fVar14; + float fVar15; + undefined uVar17; + float fVar16; + f32 pitch_00; + f32 extraout_f12; + f32 extraout_f12_00; + undefined4 auStack92 [2]; + float afStack84 [4]; + ALVoiceConfig aAStack68 [4]; + s16 sStack44; + ALVoice *pAStack40; + int iStack36; + char cStack32; + + bVar1 = *(byte *)&(seqp->node).handler; + bVar2 = *(byte *)((int)&(seqp->node).handler + 1); + fxmix = *(byte *)((int)&(seqp->node).handler + 2); + uVar10 = (uint)bVar1 & 0xf0; + uVar12 = (ulonglong)bVar1 & 0xf; + if (0x60 < uVar10 - 0x80) { return; - } - ppiVar7 = (int **)__lookupSoundQuick(unaff_s1_lo,bVar2,fxmix,uVar13); - if (ppiVar7 == NULL) { - return; - } - iVar5 = uVar13 * 0x10; - aAStack68[0].fxBus = 0; - aAStack68[0].unityPitch = '\0'; - aAStack68[0].priority = (ushort)*(byte *)(*(int *)(unaff_s1_lo + 0x60) + iVar5 + 8); - puVar8 = ___mapVoice(unaff_s1_lo,bVar2,fxmix,cVar11); - if (puVar8 == NULL) { - return; - } - voice = (ALVoice *)(puVar8 + 1); - alSynAllocVoice(*(ALSynth **)(unaff_s1_lo + 0x14),voice,aAStack68); - *(int ***)(puVar8 + 8) = ppiVar7; - *(undefined *)(puVar8 + 0xd) = 0; - if (*(byte *)(*(int *)(unaff_s1_lo + 0x60) + iVar5 + 0xb) < 0x40) { - *(undefined *)((int)puVar8 + 0x35) = 0; - } - else { - *(undefined *)((int)puVar8 + 0x35) = 2; - } - pitch = alCents2Ratio((int)((((uint)bVar2 - (uint)*(byte *)(ppiVar7[1] + 1)) * 100 + - (int)*(char *)((int)ppiVar7[1] + 5)) * 0x10000) >> 0x10); - *(f32 *)(puVar8 + 10) = pitch; - *(undefined *)(puVar8 + 0xc) = *(undefined *)(*ppiVar7 + 3); - iVar3 = *(int *)(unaff_s1_lo + 0x1c); - iVar4 = **ppiVar7; - *(undefined *)((int)puVar8 + 0x37) = 0; - puVar8[9] = iVar3 + iVar4; - iVar3 = *(int *)(*(int *)(unaff_s1_lo + 0x60) + iVar5); - afStack84[0] = 127.00000000; - if (((*(byte *)(iVar3 + 4) != 0) && (*(code **)(unaff_s1_lo + 0x70) != NULL)) && - (lVar6 = (**(code **)(unaff_s1_lo + 0x70)) - (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 4), - (ulonglong)*(byte *)(iVar3 + 5),(uint)*(byte *)(iVar3 + 6), - (uint)*(byte *)(iVar3 + 7)), lVar6 != 0)) { - sStack44 = 0x16; - iStack36 = auStack92[0]; - pAStack40 = (ALVoice *)puVar8; - alEvtqPostEvent((ALEventQueue *)(unaff_s1_lo + 0x48),(ALEvent *)&sStack44,(ALMicroTime)lVar6 - ); - *(byte *)((int)puVar8 + 0x37) = *(byte *)((int)puVar8 + 0x37) | 1; - } - if (false) { - fVar14 = ROUND(afStack84[0]); - } - else { - fVar14 = FLOOR(afStack84[0]); - } - uVar17 = (undefined)(int)fVar14; - if (false) { - if (false) { - fVar14 = ROUND(afStack84[0] - 2147483648.00000000); + } + uVar13 = (uint)uVar12; + cVar11 = (char)uVar12; + switch(uVar10) { + case 0x80: + goto LAB_7001c7f8; + case 0x90: + if (fxmix != 0) { + if (*(int *)(unaff_s1_lo + 0x2c) != 1) { + return; + } + ppiVar7 = (int **)__lookupSoundQuick(unaff_s1_lo,bVar2,fxmix,uVar13); + if (ppiVar7 == NULL) { + return; + } + iVar5 = uVar13 * 0x10; + aAStack68[0].fxBus = 0; + aAStack68[0].unityPitch = '\0'; + aAStack68[0].priority = (ushort)*(byte *)(*(int *)(unaff_s1_lo + 0x60) + iVar5 + 8); + puVar8 = ___mapVoice(unaff_s1_lo,bVar2,fxmix,cVar11); + if (puVar8 == NULL) { + return; + } + voice = (ALVoice *)(puVar8 + 1); + alSynAllocVoice(*(ALSynth **)(unaff_s1_lo + 0x14),voice,aAStack68); + *(int ***)(puVar8 + 8) = ppiVar7; + *(undefined *)(puVar8 + 0xd) = 0; + if (*(byte *)(*(int *)(unaff_s1_lo + 0x60) + iVar5 + 0xb) < 0x40) { + *(undefined *)((int)puVar8 + 0x35) = 0; + } + else { + *(undefined *)((int)puVar8 + 0x35) = 2; + } + pitch = alCents2Ratio((int)((((uint)bVar2 - (uint)*(byte *)(ppiVar7[1] + 1)) * 100 + + (int)*(char *)((int)ppiVar7[1] + 5)) * 0x10000) >> 0x10); + *(f32 *)(puVar8 + 10) = pitch; + *(undefined *)(puVar8 + 0xc) = *(undefined *)(*ppiVar7 + 3); + iVar3 = *(int *)(unaff_s1_lo + 0x1c); + iVar4 = **ppiVar7; + *(undefined *)((int)puVar8 + 0x37) = 0; + puVar8[9] = iVar3 + iVar4; + iVar3 = *(int *)(*(int *)(unaff_s1_lo + 0x60) + iVar5); + afStack84[0] = 127.00000000; + if (((*(byte *)(iVar3 + 4) != 0) && (*(code **)(unaff_s1_lo + 0x70) != NULL)) && + (lVar6 = (**(code **)(unaff_s1_lo + 0x70)) + (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 4), + (ulonglong)*(byte *)(iVar3 + 5),(uint)*(byte *)(iVar3 + 6), + (uint)*(byte *)(iVar3 + 7)), lVar6 != 0)) { + sStack44 = 0x16; + iStack36 = auStack92[0]; + pAStack40 = (ALVoice *)puVar8; + alEvtqPostEvent((ALEventQueue *)(unaff_s1_lo + 0x48),(ALEvent *)&sStack44, + (ALMicroTime)lVar6); + *(byte *)((int)puVar8 + 0x37) = *(byte *)((int)puVar8 + 0x37) | 1; + } + if (false) { + fVar14 = ROUND(afStack84[0]); + } + else { + fVar14 = FLOOR(afStack84[0]); + } + uVar17 = (undefined)(int)fVar14; + if (false) { + if (false) { + fVar14 = ROUND(afStack84[0] - 2147483648.00000000); + } + else { + fVar14 = FLOOR(afStack84[0] - 2147483648.00000000); + } + if (true) { + uVar17 = (undefined)(int)fVar14; + goto LAB_7001c6ac; + } + } + else { + if (-1 < (int)fVar14) goto LAB_7001c6ac; + } + uVar17 = 0xff; +LAB_7001c6ac: + *(undefined *)((int)puVar8 + 0x36) = uVar17; + afStack84[0] = 1.00000000; + if (((*(byte *)(iVar3 + 8) != 0) && (*(code **)(unaff_s1_lo + 0x70) != NULL)) && + (lVar6 = (**(code **)(unaff_s1_lo + 0x70)) + (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 8), + (ulonglong)*(byte *)(iVar3 + 9),(uint)*(byte *)(iVar3 + 10), + (uint)*(byte *)(iVar3 + 0xb)), lVar6 != 0)) { + sStack44 = 0x17; + iStack36 = auStack92[0]; + pAStack40 = (ALVoice *)puVar8; + cStack32 = cVar11; + alEvtqPostEvent((ALEventQueue *)(unaff_s1_lo + 0x48),(ALEvent *)&sStack44, + (ALMicroTime)lVar6); + *(byte *)((int)puVar8 + 0x37) = *(byte *)((int)puVar8 + 0x37) | 2; + } + fVar16 = (float)puVar8[10]; + *(float *)(puVar8 + 0xb) = afStack84[0]; + fVar14 = (float)puVar8[0xb]; + iVar5 = *(int *)(unaff_s1_lo + 0x60) + iVar5; + fVar15 = *(float *)(iVar5 + 0xc); + bVar1 = *(byte *)(iVar5 + 10); + uVar10 = __vsPan((int)puVar8,unaff_s1_lo); + uVar9 = __vsVol((int)puVar8,unaff_s1_lo); + alSynStartVoiceParams + (*(ALSynth **)(unaff_s1_lo + 0x14),voice,(ALWaveTable *)ppiVar7[2],pitch_00, + SUB42(fVar15 * fVar16 * fVar14,0),(ALPan)uVar9,(u8)uVar10,(uint)bVar1); + sStack44 = 6; + cStack32 = *(undefined *)((int)*ppiVar7 + 0xd); + iStack36 = (*ppiVar7)[1]; + pAStack40 = voice; + alEvtqPostEvent((ALEventQueue *)(unaff_s1_lo + 0x48),(ALEvent *)&sStack44,**ppiVar7); + return; + } +LAB_7001c7f8: + puVar8 = ___lookupVoice(unaff_s1_lo,bVar2,cVar11); + if (puVar8 != NULL) { + if (*(char *)((int)puVar8 + 0x35) == '\x02') { + *(undefined *)((int)puVar8 + 0x35) = 4; + } + else { + *(undefined *)((int)puVar8 + 0x35) = 3; + __seqpReleaseVoice(unaff_s1_lo,puVar8 + 1,*(int **)(*(int *)puVar8[8] + 8)); + } + } + break; + case 0xa0: + puVar8 = ___lookupVoice(unaff_s1_lo,bVar2,cVar11); + if (puVar8 != NULL) { + *(byte *)((int)puVar8 + 0x33) = fxmix; + volume = __vsVol((int)puVar8,unaff_s1_lo); + t = puVar8[9] - *(int *)(unaff_s1_lo + 0x1c); + if (t < 0) { + t = 1000; + } + alSynSetVol(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),volume,t); + } + break; + case 0xb0: + if (bVar2 < 0x41) { + if (bVar2 < 0x1c) { + if (true) { + switch(bVar2) { + case 7: + *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 9) = fxmix; + puVar8 = *(undefined4 **)(unaff_s1_lo + 100); + if (puVar8 != NULL) { + bVar1 = *(byte *)((int)puVar8 + 0x31); + while( true ) { + if (uVar12 == (ulonglong)bVar1) { + if (*(char *)(puVar8 + 0xd) == '\x03') { + puVar8 = (undefined4 *)*puVar8; + } + else { + volume = __vsVol((int)puVar8,unaff_s1_lo); + t = puVar8[9] - *(int *)(unaff_s1_lo + 0x1c); + if (t < 0) { + t = 1000; + } + alSynSetVol(*(ALSynth **)(unaff_s1_lo + 0x14), + (ALVoice *)(puVar8 + 1),volume,t); + puVar8 = (undefined4 *)*puVar8; + } + } + else { + puVar8 = (undefined4 *)*puVar8; + } + if (puVar8 == NULL) break; + bVar1 = *(byte *)((int)puVar8 + 0x31); + } + } + break; + case 10: + *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 7) = fxmix; + puVar8 = *(undefined4 **)(unaff_s1_lo + 100); + if (puVar8 != NULL) { + bVar1 = *(byte *)((int)puVar8 + 0x31); + while( true ) { + if (uVar12 == (ulonglong)bVar1) { + uVar10 = __vsPan((int)puVar8,unaff_s1_lo); + alSynSetPan(*(ALSynth **)(unaff_s1_lo + 0x14), + (ALVoice *)(puVar8 + 1),(u8)uVar10); + puVar8 = (undefined4 *)*puVar8; + } + else { + puVar8 = (undefined4 *)*puVar8; + } + if (puVar8 == NULL) break; + bVar1 = *(byte *)((int)puVar8 + 0x31); + } + } + break; + case 0x10: + *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 8) = fxmix; + } + } + } + else { + if (bVar2 == 0x40) { + *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 0xb) = fxmix; + puVar8 = *(undefined4 **)(unaff_s1_lo + 100); + if (puVar8 != NULL) { + bVar1 = *(byte *)((int)puVar8 + 0x31); + do { + if (uVar12 == (ulonglong)bVar1) { + cVar11 = *(char *)((int)puVar8 + 0x35); + if (cVar11 == '\x03') { + puVar8 = (undefined4 *)*puVar8; + } + else { + if (fxmix < 0x40) { + if (cVar11 == '\x02') { + *(undefined *)((int)puVar8 + 0x35) = 0; + } + else { + if (cVar11 != '\x04') { + puVar8 = (undefined4 *)*puVar8; + goto LAB_7001cb38; + } + *(undefined *)((int)puVar8 + 0x35) = 3; + __seqpReleaseVoice(unaff_s1_lo,puVar8 + 1, + *(int **)(*(int *)puVar8[8] + 8)); + } + } + else { + if (cVar11 != '\0') { + puVar8 = (undefined4 *)*puVar8; + goto LAB_7001cb38; + } + *(undefined *)((int)puVar8 + 0x35) = 2; + } + puVar8 = (undefined4 *)*puVar8; + } + } + else { + puVar8 = (undefined4 *)*puVar8; + } +LAB_7001cb38: + if (puVar8 == NULL) { + return; + } + bVar1 = *(byte *)((int)puVar8 + 0x31); + } while( true ); + } + } + } } else { - fVar14 = FLOOR(afStack84[0] - 2147483648.00000000); + if (bVar2 == 0x5b) { + *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 10) = fxmix; + puVar8 = *(undefined4 **)(unaff_s1_lo + 100); + if (puVar8 != NULL) { + bVar1 = *(byte *)((int)puVar8 + 0x31); + while( true ) { + if (uVar12 == (ulonglong)bVar1) { + alSynSetFXMix(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1), + fxmix); + puVar8 = (undefined4 *)*puVar8; + } + else { + puVar8 = (undefined4 *)*puVar8; + } + if (puVar8 == NULL) break; + bVar1 = *(byte *)((int)puVar8 + 0x31); + } + } + } } - if (true) { - uVar17 = (undefined)(int)fVar14; - goto LAB_7001c6ac; + break; + case 0xc0: + if ((longlong)(ulonglong)bVar2 < (longlong)**(short **)(unaff_s1_lo + 0x20)) { + __setInstChanState(unaff_s1_lo, + *(undefined **) + (*(short **)(unaff_s1_lo + 0x20) + (uint)bVar2 * 2 + 6),uVar13); } - } - else { - if (-1 < (int)fVar14) goto LAB_7001c6ac; - } - uVar17 = 0xff; -LAB_7001c6ac: - *(undefined *)((int)puVar8 + 0x36) = uVar17; - afStack84[0] = 1.00000000; - if (((*(byte *)(iVar3 + 8) != 0) && (*(code **)(unaff_s1_lo + 0x70) != NULL)) && - (lVar6 = (**(code **)(unaff_s1_lo + 0x70)) - (auStack92,afStack84,(ulonglong)*(byte *)(iVar3 + 8), - (ulonglong)*(byte *)(iVar3 + 9),(uint)*(byte *)(iVar3 + 10), - (uint)*(byte *)(iVar3 + 0xb)), lVar6 != 0)) { - sStack44 = 0x17; - iStack36 = auStack92[0]; - pAStack40 = (ALVoice *)puVar8; - cStack32 = cVar11; - alEvtqPostEvent((ALEventQueue *)(unaff_s1_lo + 0x48),(ALEvent *)&sStack44,(ALMicroTime)lVar6 - ); - *(byte *)((int)puVar8 + 0x37) = *(byte *)((int)puVar8 + 0x37) | 2; - } - fVar16 = (float)puVar8[10]; - *(float *)(puVar8 + 0xb) = afStack84[0]; - fVar14 = (float)puVar8[0xb]; - iVar5 = *(int *)(unaff_s1_lo + 0x60) + iVar5; - fVar15 = *(float *)(iVar5 + 0xc); - bVar1 = *(byte *)(iVar5 + 10); - uVar10 = __vsPan((int)puVar8,unaff_s1_lo); - uVar9 = __vsVol((int)puVar8,unaff_s1_lo); - alSynStartVoiceParams - (*(ALSynth **)(unaff_s1_lo + 0x14),voice,(ALWaveTable *)ppiVar7[2],pitch_00, - SUB42(fVar15 * fVar16 * fVar14,0),(ALPan)uVar9,(u8)uVar10,(uint)bVar1); - sStack44 = 6; - cStack32 = *(undefined *)((int)*ppiVar7 + 0xd); - iStack36 = (*ppiVar7)[1]; - pAStack40 = voice; - alEvtqPostEvent((ALEventQueue *)(unaff_s1_lo + 0x48),(ALEvent *)&sStack44,**ppiVar7); - return; - } -LAB_7001c7f8: - puVar8 = ___lookupVoice(unaff_s1_lo,bVar2,cVar11); - if (puVar8 != NULL) { - if (*(char *)((int)puVar8 + 0x35) == '\x02') { - *(undefined *)((int)puVar8 + 0x35) = 4; - } - else { - *(undefined *)((int)puVar8 + 0x35) = 3; - __seqpReleaseVoice(unaff_s1_lo,puVar8 + 1,*(int **)(*(int *)puVar8[8] + 8)); - } - } - break; - case 0xa0: - puVar8 = ___lookupVoice(unaff_s1_lo,bVar2,cVar11); - if (puVar8 != NULL) { - *(byte *)((int)puVar8 + 0x33) = fxmix; - volume = __vsVol((int)puVar8,unaff_s1_lo); - t = puVar8[9] - *(int *)(unaff_s1_lo + 0x1c); - if (t < 0) { - t = 1000; - } - alSynSetVol(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),volume,t); - } - break; - case 0xb0: - if (bVar2 < 0x41) { - if (bVar2 < 0x1c) { - if (true) { - switch(bVar2) { - case 7: - *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 9) = fxmix; - puVar8 = *(undefined4 **)(unaff_s1_lo + 100); - if (puVar8 != NULL) { - bVar1 = *(byte *)((int)puVar8 + 0x31); - while( true ) { + break; + case 0xd0: + puVar8 = *(undefined4 **)(unaff_s1_lo + 100); + if (puVar8 != NULL) { + bVar1 = *(byte *)((int)puVar8 + 0x31); + while( true ) { if (uVar12 == (ulonglong)bVar1) { - if (*(char *)(puVar8 + 0xd) == '\x03') { - puVar8 = (undefined4 *)*puVar8; - } - else { + *(byte *)((int)puVar8 + 0x33) = bVar2; volume = __vsVol((int)puVar8,unaff_s1_lo); t = puVar8[9] - *(int *)(unaff_s1_lo + 0x1c); if (t < 0) { - t = 1000; + t = 1000; } alSynSetVol(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),volume,t); puVar8 = (undefined4 *)*puVar8; - } } else { - puVar8 = (undefined4 *)*puVar8; + puVar8 = (undefined4 *)*puVar8; } if (puVar8 == NULL) break; bVar1 = *(byte *)((int)puVar8 + 0x31); - } } - break; - case 10: - *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 7) = fxmix; - puVar8 = *(undefined4 **)(unaff_s1_lo + 100); - if (puVar8 != NULL) { - bVar1 = *(byte *)((int)puVar8 + 0x31); - while( true ) { - if (uVar12 == (ulonglong)bVar1) { - uVar10 = __vsPan((int)puVar8,unaff_s1_lo); - alSynSetPan(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),(u8)uVar10); - puVar8 = (undefined4 *)*puVar8; - } - else { - puVar8 = (undefined4 *)*puVar8; - } - if (puVar8 == NULL) break; - bVar1 = *(byte *)((int)puVar8 + 0x31); - } - } - break; - case 0x10: - *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 8) = fxmix; - } } - } - else { - if (bVar2 == 0x40) { - *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 0xb) = fxmix; - puVar8 = *(undefined4 **)(unaff_s1_lo + 100); - if (puVar8 != NULL) { - bVar1 = *(byte *)((int)puVar8 + 0x31); - do { - if (uVar12 == (ulonglong)bVar1) { - cVar11 = *(char *)((int)puVar8 + 0x35); - if (cVar11 == '\x03') { - puVar8 = (undefined4 *)*puVar8; - } - else { - if (fxmix < 0x40) { - if (cVar11 == '\x02') { - *(undefined *)((int)puVar8 + 0x35) = 0; - } - else { - if (cVar11 != '\x04') { - puVar8 = (undefined4 *)*puVar8; - goto LAB_7001cb38; - } - *(undefined *)((int)puVar8 + 0x35) = 3; - __seqpReleaseVoice(unaff_s1_lo,puVar8 + 1,*(int **)(*(int *)puVar8[8] + 8)); - } - } - else { - if (cVar11 != '\0') { - puVar8 = (undefined4 *)*puVar8; - goto LAB_7001cb38; - } - *(undefined *)((int)puVar8 + 0x35) = 2; - } - puVar8 = (undefined4 *)*puVar8; - } - } - else { - puVar8 = (undefined4 *)*puVar8; - } -LAB_7001cb38: - if (puVar8 == NULL) { - return; - } - bVar1 = *(byte *)((int)puVar8 + 0x31); - } while( true ); - } + break; + case 0xe0: + iVar5 = (int)*(short *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 4) * + ((uint)fxmix * 0x80 + (uint)bVar2 + -0x2000); + if (iVar5 < 0) { + iVar5 += 0x1fff; } - } - } - else { - if (bVar2 == 0x5b) { - *(byte *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 10) = fxmix; + pitch = alCents2Ratio(iVar5 >> 0xd); + *(f32 *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 0xc) = pitch; puVar8 = *(undefined4 **)(unaff_s1_lo + 100); if (puVar8 != NULL) { - bVar1 = *(byte *)((int)puVar8 + 0x31); - while( true ) { - if (uVar12 == (ulonglong)bVar1) { - alSynSetFXMix(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),fxmix); - puVar8 = (undefined4 *)*puVar8; - } - else { - puVar8 = (undefined4 *)*puVar8; - } - if (puVar8 == NULL) break; bVar1 = *(byte *)((int)puVar8 + 0x31); - } + pitch = extraout_f12; + while( true ) { + if (uVar12 == (ulonglong)bVar1) { + alSynSetPitch(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),pitch); + puVar8 = (undefined4 *)*puVar8; + pitch = extraout_f12_00; + } + else { + puVar8 = (undefined4 *)*puVar8; + } + if (puVar8 == NULL) break; + bVar1 = *(byte *)((int)puVar8 + 0x31); + } } - } } - break; - case 0xc0: - if ((longlong)(ulonglong)bVar2 < (longlong)**(short **)(unaff_s1_lo + 0x20)) { - __setInstChanState(unaff_s1_lo, - *(undefined **)(*(short **)(unaff_s1_lo + 0x20) + (uint)bVar2 * 2 + 6), - uVar13); - } - break; - case 0xd0: - puVar8 = *(undefined4 **)(unaff_s1_lo + 100); - if (puVar8 != NULL) { - bVar1 = *(byte *)((int)puVar8 + 0x31); - while( true ) { - if (uVar12 == (ulonglong)bVar1) { - *(byte *)((int)puVar8 + 0x33) = bVar2; - volume = __vsVol((int)puVar8,unaff_s1_lo); - t = puVar8[9] - *(int *)(unaff_s1_lo + 0x1c); - if (t < 0) { - t = 1000; - } - alSynSetVol(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),volume,t); - puVar8 = (undefined4 *)*puVar8; - } - else { - puVar8 = (undefined4 *)*puVar8; - } - if (puVar8 == NULL) break; - bVar1 = *(byte *)((int)puVar8 + 0x31); - } - } - break; - case 0xe0: - iVar5 = (int)*(short *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 4) * - ((uint)fxmix * 0x80 + (uint)bVar2 + -0x2000); - if (iVar5 < 0) { - iVar5 += 0x1fff; - } - pitch = alCents2Ratio(iVar5 >> 0xd); - *(f32 *)(*(int *)(unaff_s1_lo + 0x60) + uVar13 * 0x10 + 0xc) = pitch; - puVar8 = *(undefined4 **)(unaff_s1_lo + 100); - if (puVar8 != NULL) { - bVar1 = *(byte *)((int)puVar8 + 0x31); - pitch = extraout_f12; - while( true ) { - if (uVar12 == (ulonglong)bVar1) { - alSynSetPitch(*(ALSynth **)(unaff_s1_lo + 0x14),(ALVoice *)(puVar8 + 1),pitch); - puVar8 = (undefined4 *)*puVar8; - pitch = extraout_f12_00; - } - else { - puVar8 = (undefined4 *)*puVar8; - } - if (puVar8 == NULL) break; - bVar1 = *(byte *)((int)puVar8 + 0x31); - } - } - } - return; + return; } @@ -19500,7 +19618,7 @@ LAB_7001cb38: void proc_7001CC74(void) { - return; + return; } @@ -19508,233 +19626,235 @@ void proc_7001CC74(void) ALMicroTime __seqpVoiceHandler(void *node) { - void *pvVar1; - undefined4 uVar2; - int t; - int *piVar3; - undefined4 *puVar4; - float fVar5; - s16 volume; - longlong lVar6; - ALMicroTime delta; - ALMicroTime t_00; - undefined8 in_a1; - ALEvent *event; - undefined8 extraout_a1; - ALSeqPlayer *seqp; - undefined uVar7; - ALVoice *v; - ALEventQueue *evtq; - f32 pitch; - ALEvent aAStack72 [2]; - ALBank *apAStack40 [5]; - s16 sStack20; - int iStack16; - undefined4 uStack12; - undefined uStack8; - - seqp = (ALSeqPlayer *)((int)node + 0x38); - evtq = (ALEventQueue *)((int)node + 0x48); - do { - if (true) { - switch(*(undefined2 *)((int)node + 0x38)) { - case 0: - if (*(ALSeq **)((int)node + 0x18) != NULL) { - alSeqNextEvent(*(ALSeq **)((int)node + 0x18),aAStack72); - if (aAStack72[0].type == 1) { - __handleMIDIMsg((ALSeqPlayer *)aAStack72,event); - __postNextSeqEvent((int)node); - } - else { - if (aAStack72[0].type == 3) { - proc_7001C1BC((int)aAStack72,(int)node); - __postNextSeqEvent((int)node); - } - else { - if (aAStack72[0].type == 4) { - *(undefined4 *)((int)node + 0x2c) = 2; - aAStack72[0].type = 0x10; - alEvtqPostEvent(evtq,aAStack72,0x7fffffff); - } - } - } - } - break; - case 2: - __handleMIDIMsg(seqp,(ALEvent *)in_a1); - break; - case 5: - v = *(ALVoice **)((int)node + 0x3c); - alSynStopVoice(*(ALSynth **)((int)node + 0x14),v); - alSynFreeVoice(*(ALSynth **)((int)node + 0x14),v); - if (*(char *)((int)v->clientPrivate + 0x37) != '\0') { - __seqpStopOsc((int)node,(int *)v->clientPrivate); - } - __unmapVoice((int)node,(int)v); - break; - case 6: - v = *(ALVoice **)((int)node + 0x3c); - pvVar1 = v->clientPrivate; - if (*(char *)((int)pvVar1 + 0x34) == '\0') { - *(undefined *)((int)pvVar1 + 0x34) = 1; - uVar7 = *(undefined *)((int)node + 0x44); - } - else { - uVar7 = *(undefined *)((int)node + 0x44); - } - t = *(int *)((int)node + 0x40); - *(undefined *)((int)pvVar1 + 0x30) = uVar7; - *(int *)((int)pvVar1 + 0x24) = *(int *)((int)node + 0x1c) + t; - volume = __vsVol((int)pvVar1,(int)node); - alSynSetVol(*(ALSynth **)((int)node + 0x14),v,volume,t); - break; - case 7: - proc_7001C1BC((int)seqp,(int)node); - break; - case 9: - sStack20 = 9; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,*(ALMicroTime *)((int)node + 0x5c)); - break; - case 10: - puVar4 = *(undefined4 **)((int)node + 100); - *(undefined2 *)((int)node + 0x32) = *(undefined2 *)((int)node + 0x3c); - while (puVar4 != NULL) { - volume = __vsVol((int)puVar4,(int)node); - delta = puVar4[9] - *(int *)((int)node + 0x1c); - if (delta < 0) { - delta = 1000; - } - alSynSetVol(*(ALSynth **)((int)node + 0x14),(ALVoice *)(puVar4 + 1),volume,delta); - puVar4 = (undefined4 *)*puVar4; - } - break; - case 0xb: - *(undefined4 *)((int)node + 0x7c) = *(undefined4 *)((int)node + 0x3c); - *(undefined4 *)((int)node + 0x80) = *(undefined4 *)((int)node + 0x40); - *(undefined4 *)((int)node + 0x84) = *(undefined4 *)((int)node + 0x44); - break; - case 0xc: - *(undefined *)(*(int *)((int)node + 0x60) + (uint)*(byte *)((int)node + 0x3c) * 0x10 + 8) = - *(undefined *)((int)node + 0x3d); - break; - case 0xd: - t = *(int *)((int)node + 0x3c); - *(int *)((int)node + 0x18) = t; - if (t == 0) { - *(undefined4 *)((int)node + 0x24) = 0x1e8; - } - else { - *(int *)((int)node + 0x24) = (int)(flt_80029C88 * *(float *)(t + 0x14)); - } - if (*(int *)((int)node + 0x20) != 0) { - __initFromBank((int)node,*(int *)((int)node + 0x20)); - } - break; - case 0xe: - *(int *)((int)node + 0x20) = *(int *)((int)node + 0x3c); - __initFromBank((int)node,*(int *)((int)node + 0x3c)); - break; - case 0xf: - if (*(int *)((int)node + 0x2c) != 1) { - *(undefined4 *)((int)node + 0x2c) = 1; - __postNextSeqEvent((int)node); - } - break; - case 0x10: - if (*(int *)((int)node + 0x2c) == 2) { - piVar3 = *(int **)((int)node + 100); - while (piVar3 != NULL) { - v = (ALVoice *)(piVar3 + 1); - alSynStopVoice(*(ALSynth **)((int)node + 0x14),v); - alSynFreeVoice(*(ALSynth **)((int)node + 0x14),v); - if (*(char *)((int)piVar3 + 0x37) != '\0') { - __seqpStopOsc((int)node,piVar3); - } - __unmapVoice((int)node,(int)v); - piVar3 = *(int **)((int)node + 100); - } - *(undefined4 *)((int)node + 0x1c) = 0; - *(undefined4 *)((int)node + 0x2c) = 0; - } - break; - case 0x11: - if (*(int *)((int)node + 0x2c) == 1) { - alEvtqFlushType(evtq,0); - alEvtqFlushType(evtq,2); - puVar4 = *(undefined4 **)((int)node + 100); - while (puVar4 != NULL) { - lVar6 = __voiceNeedsNoteKill((int)node,puVar4 + 1,50000); - if (lVar6 != 0) { - __seqpReleaseVoice((int)node,puVar4 + 1,(int *)0xc350); - } - puVar4 = (undefined4 *)*puVar4; - } - *(undefined4 *)((int)node + 0x2c) = 2; - sStack20 = 0x10; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,0x7fffffff); - } - break; - case 0x16: - uVar2 = *(undefined4 *)((int)node + 0x40); - t = *(int *)((int)node + 0x3c); - delta = (**(code **)((int)node + 0x74))(uVar2,apAStack40); - if (false) { - fVar5 = ROUND((float)apAStack40[0]); - } - else { - fVar5 = FLOOR((float)apAStack40[0]); - } - uVar7 = (undefined)(int)fVar5; - if (false) { - if (false) { - fVar5 = ROUND((float)apAStack40[0] - 2147483648.00000000); - } - else { - fVar5 = FLOOR((float)apAStack40[0] - 2147483648.00000000); - } - if (false) goto LAB_7001cee8; - uVar7 = (undefined)(int)fVar5; - } - else { - if ((int)fVar5 < 0) { + void *pvVar1; + undefined4 uVar2; + int t; + int *piVar3; + undefined4 *puVar4; + float fVar5; + s16 volume; + longlong lVar6; + ALMicroTime delta; + ALMicroTime t_00; + undefined8 in_a1; + ALEvent *event; + undefined8 extraout_a1; + ALSeqPlayer *seqp; + undefined uVar7; + ALVoice *v; + ALEventQueue *evtq; + f32 pitch; + ALEvent aAStack72 [2]; + ALBank *apAStack40 [5]; + s16 sStack20; + int iStack16; + undefined4 uStack12; + undefined uStack8; + + seqp = (ALSeqPlayer *)((int)node + 0x38); + evtq = (ALEventQueue *)((int)node + 0x48); + do { + if (true) { + switch(*(undefined2 *)((int)node + 0x38)) { + case 0: + if (*(ALSeq **)((int)node + 0x18) != NULL) { + alSeqNextEvent(*(ALSeq **)((int)node + 0x18),aAStack72); + if (aAStack72[0].type == 1) { + __handleMIDIMsg((ALSeqPlayer *)aAStack72,event); + __postNextSeqEvent((int)node); + } + else { + if (aAStack72[0].type == 3) { + proc_7001C1BC((int)aAStack72,(int)node); + __postNextSeqEvent((int)node); + } + else { + if (aAStack72[0].type == 4) { + *(undefined4 *)((int)node + 0x2c) = 2; + aAStack72[0].type = 0x10; + alEvtqPostEvent(evtq,aAStack72,0x7fffffff); + } + } + } + } + break; + case 2: + __handleMIDIMsg(seqp,(ALEvent *)in_a1); + break; + case 5: + v = *(ALVoice **)((int)node + 0x3c); + alSynStopVoice(*(ALSynth **)((int)node + 0x14),v); + alSynFreeVoice(*(ALSynth **)((int)node + 0x14),v); + if (*(char *)((int)v->clientPrivate + 0x37) != '\0') { + __seqpStopOsc((int)node,(int *)v->clientPrivate); + } + __unmapVoice((int)node,(int)v); + break; + case 6: + v = *(ALVoice **)((int)node + 0x3c); + pvVar1 = v->clientPrivate; + if (*(char *)((int)pvVar1 + 0x34) == '\0') { + *(undefined *)((int)pvVar1 + 0x34) = 1; + uVar7 = *(undefined *)((int)node + 0x44); + } + else { + uVar7 = *(undefined *)((int)node + 0x44); + } + t = *(int *)((int)node + 0x40); + *(undefined *)((int)pvVar1 + 0x30) = uVar7; + *(int *)((int)pvVar1 + 0x24) = *(int *)((int)node + 0x1c) + t; + volume = __vsVol((int)pvVar1,(int)node); + alSynSetVol(*(ALSynth **)((int)node + 0x14),v,volume,t); + break; + case 7: + proc_7001C1BC((int)seqp,(int)node); + break; + case 9: + sStack20 = 9; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,*(ALMicroTime *)((int)node + 0x5c)); + break; + case 10: + puVar4 = *(undefined4 **)((int)node + 100); + *(undefined2 *)((int)node + 0x32) = *(undefined2 *)((int)node + 0x3c); + while (puVar4 != NULL) { + volume = __vsVol((int)puVar4,(int)node); + delta = puVar4[9] - *(int *)((int)node + 0x1c); + if (delta < 0) { + delta = 1000; + } + alSynSetVol(*(ALSynth **)((int)node + 0x14),(ALVoice *)(puVar4 + 1),volume,delta + ); + puVar4 = (undefined4 *)*puVar4; + } + break; + case 0xb: + *(undefined4 *)((int)node + 0x7c) = *(undefined4 *)((int)node + 0x3c); + *(undefined4 *)((int)node + 0x80) = *(undefined4 *)((int)node + 0x40); + *(undefined4 *)((int)node + 0x84) = *(undefined4 *)((int)node + 0x44); + break; + case 0xc: + *(undefined *) + (*(int *)((int)node + 0x60) + (uint)*(byte *)((int)node + 0x3c) * 0x10 + 8) = + *(undefined *)((int)node + 0x3d); + break; + case 0xd: + t = *(int *)((int)node + 0x3c); + *(int *)((int)node + 0x18) = t; + if (t == 0) { + *(undefined4 *)((int)node + 0x24) = 0x1e8; + } + else { + *(int *)((int)node + 0x24) = (int)(flt_80029C88 * *(float *)(t + 0x14)); + } + if (*(int *)((int)node + 0x20) != 0) { + __initFromBank((int)node,*(int *)((int)node + 0x20)); + } + break; + case 0xe: + *(int *)((int)node + 0x20) = *(int *)((int)node + 0x3c); + __initFromBank((int)node,*(int *)((int)node + 0x3c)); + break; + case 0xf: + if (*(int *)((int)node + 0x2c) != 1) { + *(undefined4 *)((int)node + 0x2c) = 1; + __postNextSeqEvent((int)node); + } + break; + case 0x10: + if (*(int *)((int)node + 0x2c) == 2) { + piVar3 = *(int **)((int)node + 100); + while (piVar3 != NULL) { + v = (ALVoice *)(piVar3 + 1); + alSynStopVoice(*(ALSynth **)((int)node + 0x14),v); + alSynFreeVoice(*(ALSynth **)((int)node + 0x14),v); + if (*(char *)((int)piVar3 + 0x37) != '\0') { + __seqpStopOsc((int)node,piVar3); + } + __unmapVoice((int)node,(int)v); + piVar3 = *(int **)((int)node + 100); + } + *(undefined4 *)((int)node + 0x1c) = 0; + *(undefined4 *)((int)node + 0x2c) = 0; + } + break; + case 0x11: + if (*(int *)((int)node + 0x2c) == 1) { + alEvtqFlushType(evtq,0); + alEvtqFlushType(evtq,2); + puVar4 = *(undefined4 **)((int)node + 100); + while (puVar4 != NULL) { + lVar6 = __voiceNeedsNoteKill((int)node,puVar4 + 1,50000); + if (lVar6 != 0) { + __seqpReleaseVoice((int)node,puVar4 + 1,(int *)0xc350); + } + puVar4 = (undefined4 *)*puVar4; + } + *(undefined4 *)((int)node + 0x2c) = 2; + sStack20 = 0x10; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,0x7fffffff); + } + break; + case 0x16: + uVar2 = *(undefined4 *)((int)node + 0x40); + t = *(int *)((int)node + 0x3c); + delta = (**(code **)((int)node + 0x74))(uVar2,apAStack40); + if (false) { + fVar5 = ROUND((float)apAStack40[0]); + } + else { + fVar5 = FLOOR((float)apAStack40[0]); + } + uVar7 = (undefined)(int)fVar5; + if (false) { + if (false) { + fVar5 = ROUND((float)apAStack40[0] - 2147483648.00000000); + } + else { + fVar5 = FLOOR((float)apAStack40[0] - 2147483648.00000000); + } + if (false) goto LAB_7001cee8; + uVar7 = (undefined)(int)fVar5; + } + else { + if ((int)fVar5 < 0) { LAB_7001cee8: - uVar7 = 0xff; - } + uVar7 = 0xff; + } + } + *(undefined *)(t + 0x36) = uVar7; + volume = __vsVol(t,(int)node); + t_00 = *(int *)(t + 0x24) - *(int *)((int)node + 0x1c); + if (t_00 < 0) { + t_00 = 1000; + } + alSynSetVol(*(ALSynth **)((int)node + 0x14),(ALVoice *)(t + 4),volume,t_00); + sStack20 = 0x16; + iStack16 = t; + uStack12 = uVar2; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); + break; + case 0x17: + uVar2 = *(undefined4 *)((int)node + 0x40); + t = *(int *)((int)node + 0x3c); + uVar7 = *(undefined *)((int)node + 0x44); + delta = (**(code **)((int)node + 0x74))(uVar2,apAStack40); + *(ALBank **)(t + 0x2c) = apAStack40[0]; + alSynSetPitch(*(ALSynth **)((int)node + 0x14),(ALVoice *)(t + 4),pitch); + sStack20 = 0x17; + iStack16 = t; + uStack12 = uVar2; + uStack8 = uVar7; + alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); + } } - *(undefined *)(t + 0x36) = uVar7; - volume = __vsVol(t,(int)node); - t_00 = *(int *)(t + 0x24) - *(int *)((int)node + 0x1c); - if (t_00 < 0) { - t_00 = 1000; + delta = alEvtqNextEvent(evtq,(ALEvent *)seqp); + *(ALMicroTime *)((int)node + 0x28) = delta; + in_a1 = extraout_a1; + if (delta != 0) { + *(int *)((int)node + 0x1c) = *(int *)((int)node + 0x1c) + delta; + return delta; } - alSynSetVol(*(ALSynth **)((int)node + 0x14),(ALVoice *)(t + 4),volume,t_00); - sStack20 = 0x16; - iStack16 = t; - uStack12 = uVar2; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); - break; - case 0x17: - uVar2 = *(undefined4 *)((int)node + 0x40); - t = *(int *)((int)node + 0x3c); - uVar7 = *(undefined *)((int)node + 0x44); - delta = (**(code **)((int)node + 0x74))(uVar2,apAStack40); - *(ALBank **)(t + 0x2c) = apAStack40[0]; - alSynSetPitch(*(ALSynth **)((int)node + 0x14),(ALVoice *)(t + 4),pitch); - sStack20 = 0x17; - iStack16 = t; - uStack12 = uVar2; - uStack8 = uVar7; - alEvtqPostEvent(evtq,(ALEvent *)&sStack20,delta); - } - } - delta = alEvtqNextEvent(evtq,(ALEvent *)seqp); - *(ALMicroTime *)((int)node + 0x28) = delta; - in_a1 = extraout_a1; - if (delta != 0) { - *(int *)((int)node + 0x1c) = *(int *)((int)node + 0x1c) + delta; - return delta; - } - } while( true ); + } while( true ); } @@ -19742,45 +19862,46 @@ LAB_7001cee8: void __seqpStopOsc(int param_1,int *param_2) { - short sVar1; - ALLink_s *pAVar2; - ALLink_s *pAVar3; - ALLink *a; - - pAVar2 = (ALLink_s *)*(ALLink **)(param_1 + 0x50); + short sVar1; + ALLink_s *pAVar2; + ALLink_s *pAVar3; + ALLink *a; + + pAVar2 = (ALLink_s *)*(ALLink **)(param_1 + 0x50); joined_r0x7001d2d4: - do { - a = (ALLink *)pAVar2; - if (a == NULL) { - return; - } - sVar1 = *(short *)&a[1].prev; - pAVar2 = a->next; - if (sVar1 == 0x16) { - pAVar3 = a[2].next; - } - else { - if (sVar1 != 0x17) goto joined_r0x7001d2d4; - pAVar3 = a[2].next; - } - if ((ALLink_s *)param_2 == pAVar3) { - (**(code **)(param_1 + 0x78))(a[2].prev); - alUnlink(a); - if (pAVar2 != NULL) { - pAVar2[1].next = (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar2[1].next)->next); - } - alLink(a,(ALLink *)(param_1 + 0x48)); - if (sVar1 == 0x16) { - *(byte *)((int)param_2 + 0x37) = *(byte *)((int)param_2 + 0x37) & 0xfe; - } - else { - *(byte *)((int)param_2 + 0x37) = *(byte *)((int)param_2 + 0x37) & 0xfd; - } - if (*(char *)((int)param_2 + 0x37) == '\0') { - return; - } - } - } while( true ); + do { + a = (ALLink *)pAVar2; + if (a == NULL) { + return; + } + sVar1 = *(short *)&a[1].prev; + pAVar2 = a->next; + if (sVar1 == 0x16) { + pAVar3 = a[2].next; + } + else { + if (sVar1 != 0x17) goto joined_r0x7001d2d4; + pAVar3 = a[2].next; + } + if ((ALLink_s *)param_2 == pAVar3) { + (**(code **)(param_1 + 0x78))(a[2].prev); + alUnlink(a); + if (pAVar2 != NULL) { + pAVar2[1].next = + (ALLink_s *)((int)&(a[1].next)->next + (int)&(pAVar2[1].next)->next); + } + alLink(a,(ALLink *)(param_1 + 0x48)); + if (sVar1 == 0x16) { + *(byte *)((int)param_2 + 0x37) = *(byte *)((int)param_2 + 0x37) & 0xfe; + } + else { + *(byte *)((int)param_2 + 0x37) = *(byte *)((int)param_2 + 0x37) & 0xfd; + } + if (*(char *)((int)param_2 + 0x37) == '\0') { + return; + } + } + } while( true ); } @@ -19788,24 +19909,24 @@ joined_r0x7001d2d4: void __initChanState(int param_1) { - int iVar1; - longlong lVar2; - int iVar3; - - lVar2 = 0; - iVar3 = 0; - if (*(char *)(param_1 + 0x34) != '\0') { - iVar1 = *(int *)(param_1 + 0x60); - while( true ) { - *(undefined4 *)(iVar1 + iVar3) = 0; - __resetPerfChanState(param_1,(int)lVar2); - lVar2 = (longlong)((int)lVar2 + 1); - iVar3 += 0x10; - if ((longlong)(ulonglong)*(byte *)(param_1 + 0x34) <= lVar2) break; - iVar1 = *(int *)(param_1 + 0x60); + int iVar1; + longlong lVar2; + int iVar3; + + lVar2 = 0; + iVar3 = 0; + if (*(char *)(param_1 + 0x34) != '\0') { + iVar1 = *(int *)(param_1 + 0x60); + while( true ) { + *(undefined4 *)(iVar1 + iVar3) = 0; + __resetPerfChanState(param_1,(int)lVar2); + lVar2 = (longlong)((int)lVar2 + 1); + iVar3 += 0x10; + if ((longlong)(ulonglong)*(byte *)(param_1 + 0x34) <= lVar2) break; + iVar1 = *(int *)(param_1 + 0x60); + } } - } - return; + return; } @@ -19813,65 +19934,65 @@ void __initChanState(int param_1) void alSeqpNew(ALSeqPlayer *seqp,ALSeqpConfig *c) { - u8 uVar1; - ALHeap *hp; - ALSeqMarker *pAVar2; - ALGlobals *pAVar3; - ALVoiceState *items; - ALVoiceState *pAVar4; - int iVar5; - ALLink_s *pAVar6; - - hp = c->heap; - seqp->bank = NULL; - seqp->target = NULL; - pAVar3 = slg; - seqp->chanMask = 0xff; - seqp->uspt = 0x1e8; - seqp->nextDelta = 0; - seqp->state = 0; - seqp->vol = 0x7fff; - *(ALGlobals **)&seqp->drvr = pAVar3; - uVar1 = c->debugFlags; - seqp->chanState = (ALChanState *)0x3e80; - seqp->curTime = 0; - seqp->debugFlags = uVar1; - seqp->updateOsc = c->initOsc; - seqp->stopOsc = c->updateOsc; - pAVar2 = (ALSeqMarker *)c->stopOsc; - seqp->loopEnd = NULL; - seqp->loopCount = 0; - seqp[1].node.next = NULL; - *(undefined2 *)&(seqp->nextEvent).msg = 9; - seqp->loopStart = pAVar2; - seqp->maxChannels = c->maxChannels; - _alHeapDBAlloc(NULL,0,hp,(uint)c->maxChannels,0x10); - seqp->vAllocHead = items; - __initChanState((int)seqp); - _alHeapDBAlloc(NULL,0,hp,c->maxVoices,0x38); - seqp->initOsc = NULL; - iVar5 = 0; - if (0 < c->maxVoices) { - pAVar6 = (ALLink_s *)seqp->initOsc; - pAVar4 = items; - while( true ) { - iVar5 += 1; - ((ALLink *)&pAVar4->next)->next = pAVar6; - *(ALVoiceState **)&seqp->initOsc = pAVar4; - pAVar4 = pAVar4 + 1; - if (c->maxVoices <= iVar5) break; - pAVar6 = (ALLink_s *)seqp->initOsc; + u8 uVar1; + ALHeap *hp; + ALSeqMarker *pAVar2; + ALGlobals *pAVar3; + ALVoiceState *in_v0_lo; + ALVoiceState *pAVar4; + int iVar5; + ALLink_s *pAVar6; + + hp = c->heap; + seqp->bank = NULL; + seqp->target = NULL; + pAVar3 = slg; + seqp->chanMask = 0xff; + seqp->uspt = 0x1e8; + seqp->nextDelta = 0; + seqp->state = 0; + seqp->vol = 0x7fff; + *(ALGlobals **)&seqp->drvr = pAVar3; + uVar1 = c->debugFlags; + seqp->chanState = (ALChanState *)0x3e80; + seqp->curTime = 0; + seqp->debugFlags = uVar1; + seqp->updateOsc = c->initOsc; + seqp->stopOsc = c->updateOsc; + pAVar2 = (ALSeqMarker *)c->stopOsc; + seqp->loopEnd = NULL; + seqp->loopCount = 0; + seqp[1].node.next = NULL; + *(undefined2 *)&(seqp->nextEvent).msg = 9; + seqp->loopStart = pAVar2; + seqp->maxChannels = c->maxChannels; + _alHeapDBAlloc(NULL,0,hp,(uint)c->maxChannels,0x10); + seqp->vAllocHead = in_v0_lo; + __initChanState((int)seqp); + _alHeapDBAlloc(NULL,0,hp,c->maxVoices,0x38); + seqp->initOsc = NULL; + iVar5 = 0; + if (0 < c->maxVoices) { + pAVar6 = (ALLink_s *)seqp->initOsc; + pAVar4 = in_v0_lo; + while( true ) { + iVar5 += 1; + ((ALLink *)&pAVar4->next)->next = pAVar6; + *(ALVoiceState **)&seqp->initOsc = pAVar4; + pAVar4 = pAVar4 + 1; + if (c->maxVoices <= iVar5) break; + pAVar6 = (ALLink_s *)seqp->initOsc; + } } - } - seqp->vAllocTail = NULL; - seqp->vFreeList = NULL; - _alHeapDBAlloc(NULL,0,hp,c->maxEvents,0x1c); - alEvtqNew((ALEventQueue *)&(seqp->evtq).freeList.prev,(ALEventListItem *)items,c->maxEvents); - (seqp->node).next = NULL; - (seqp->node).handler = __seqpVoiceHandler; - *(ALSeqPlayer **)&(seqp->node).clientData = seqp; - alSynAddPlayer((ALSynth *)slg,(ALPlayer *)seqp); - return; + seqp->vAllocTail = NULL; + seqp->vFreeList = NULL; + _alHeapDBAlloc(NULL,0,hp,c->maxEvents,0x1c); + alEvtqNew((ALEventQueue *)&(seqp->evtq).freeList.prev,(ALEventListItem *)in_v0_lo,c->maxEvents); + (seqp->node).next = NULL; + (seqp->node).handler = __seqpVoiceHandler; + *(ALSeqPlayer **)&(seqp->node).clientData = seqp; + alSynAddPlayer((ALSynth *)slg,(ALPlayer *)seqp); + return; } @@ -19881,33 +20002,33 @@ void alSynStartVoiceParams ALMicroTime t) { - int iVar1; - ALParam AVar3; - int iVar2; - undefined in_stack_00000012; - undefined2 uStack00000012; - int micros; - - if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { - if (false) { - t._3_1_ = -(char)t; + int iVar1; + ALParam AVar3; + int iVar2; + undefined in_stack_00000012; + undefined2 uStack00000012; + int in_stack_0000001c; + + if ((v->pvoice != NULL) && (AVar3 = ___allocParam(), AVar3 != (ALParam)0x0)) { + if (false) { + t._3_1_ = -(char)t; + } + iVar2 = s->paramSamples; + iVar1 = *(int *)(v->pvoice + 0xd8); + *(undefined4 *)(int)(char)AVar3 = 0; + *(undefined2 *)((int)(char)AVar3 + 8) = 0xd; + *(int *)((int)(char)AVar3 + 4) = iVar2 + iVar1; + *(s16 *)((int)(char)AVar3 + 10) = v->unityPitch; + *(u8 *)((int)(char)AVar3 + 0x12) = fxmix; + *(char *)((int)(char)AVar3 + 0x13) = (char)t; + *(undefined2 *)((int)(char)AVar3 + 0x10) = uStack00000012; + *(int *)((int)(char)AVar3 + 0xc) = (int)vol; + iVar2 = _timeToSamples(s,in_stack_0000001c); + *(int *)((int)(char)AVar3 + 0x14) = iVar2; + *(ALWaveTable **)((int)(char)AVar3 + 0x18) = w; + (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3); } - iVar2 = s->paramSamples; - iVar1 = *(int *)(v->pvoice + 0xd8); - *(undefined4 *)(int)(char)AVar3 = 0; - *(undefined2 *)((int)(char)AVar3 + 8) = 0xd; - *(int *)((int)(char)AVar3 + 4) = iVar2 + iVar1; - *(s16 *)((int)(char)AVar3 + 10) = v->unityPitch; - *(u8 *)((int)(char)AVar3 + 0x12) = fxmix; - *(char *)((int)(char)AVar3 + 0x13) = (char)t; - *(undefined2 *)((int)(char)AVar3 + 0x10) = uStack00000012; - *(int *)((int)(char)AVar3 + 0xc) = (int)vol; - iVar2 = _timeToSamples(s,micros); - *(int *)((int)(char)AVar3 + 0x14) = iVar2; - *(ALWaveTable **)((int)(char)AVar3 + 0x18) = w; - (**(code **)(*(int *)(v->pvoice + 0xc) + 8))(*(int *)(v->pvoice + 0xc),3); - } - return; + return; } @@ -19915,37 +20036,36 @@ void alSynStartVoiceParams void alCopy(void *src,void *dest,s32 len) { - undefined uVar1; - undefined *puVar2; - uint uVar3; - - uVar3 = 0; - if (0 < len) { - if ((len & 3U) != 0) { - do { - uVar1 = *(undefined *)src; - uVar3 += 1; - puVar2 = (undefined *)dest + 1; - src = (undefined *)src + 1; - *(undefined *)dest = uVar1; - dest = puVar2; - } while ((len & 3U) != uVar3); - dest = puVar2; - if (uVar3 == len) { - return; - } + undefined uVar1; + undefined *puVar2; + uint uVar3; + + uVar3 = 0; + if (0 < len) { + if ((len & 3U) != 0) { + do { + uVar1 = *(undefined *)src; + uVar3 += 1; + puVar2 = (undefined *)dest + 1; + src = (undefined *)src + 1; + *(undefined *)dest = uVar1; + dest = puVar2; + } while ((len & 3U) != uVar3); + if (uVar3 == len) { + return; + } + } + do { + uVar3 += 4; + *(undefined *)dest = *(undefined *)src; + ((undefined *)dest)[1] = ((undefined *)src)[1]; + ((undefined *)dest)[2] = ((undefined *)src)[2]; + ((undefined *)dest)[3] = ((undefined *)src)[3]; + src = (undefined *)src + 4; + dest = (undefined *)dest + 4; + } while (uVar3 != len); } - do { - uVar3 += 4; - *(undefined *)dest = *(undefined *)src; - ((undefined *)dest)[1] = ((undefined *)src)[1]; - ((undefined *)dest)[2] = ((undefined *)src)[2]; - ((undefined *)dest)[3] = ((undefined *)src)[3]; - src = (undefined *)src + 4; - dest = (undefined *)dest + 4; - } while (uVar3 != len); - } - return; + return; } @@ -19953,10 +20073,10 @@ void alCopy(void *src,void *dest,s32 len) void __osPiCreateAccessQueue(void) { - __osPiAccessQueueEnabled = 1; - osCreateMesgQueue(&__osPiAccessQueue,&piAccessBuf,1); - osSendMesg(&__osPiAccessQueue,NULL,0); - return; + __osPiAccessQueueEnabled = 1; + osCreateMesgQueue(&__osPiAccessQueue,&piAccessBuf,1); + osSendMesg(&__osPiAccessQueue,NULL,0); + return; } @@ -19964,13 +20084,13 @@ void __osPiCreateAccessQueue(void) void __osPiGetAccess(void) { - OSMesg pvStack4; - - if (__osPiAccessQueueEnabled == 0) { - __osPiCreateAccessQueue(); - } - osRecvMesg(&__osPiAccessQueue,&pvStack4,1); - return; + OSMesg pvStack4; + + if (__osPiAccessQueueEnabled == 0) { + __osPiCreateAccessQueue(); + } + osRecvMesg(&__osPiAccessQueue,&pvStack4,1); + return; } @@ -19978,8 +20098,8 @@ void __osPiGetAccess(void) void __osPiRelAccess(void) { - osSendMesg(&__osPiAccessQueue,NULL,0); - return; + osSendMesg(&__osPiAccessQueue,NULL,0); + return; } @@ -19987,81 +20107,80 @@ void __osPiRelAccess(void) void _Litob(_Pft *px,char code) { - int iVar1; - ulonglong uVar2; - longlong __numer; - longlong extraout_a1; - longlong extraout_a1_00; - int iVar3; - char *pcVar4; - int iStack80; - undefined4 uStack64; - undefined4 uStack60; - int iStack52; - uint uStack48; - int iStack44; - int iStack32; - char acStack25 [24]; - char cStack1; - - __numer = 0x58; - if (code == 'X') { - pcVar4 = "0123456789ABCDEF"; - } - else { - pcVar4 = "0123456789abcdef"; - } - iVar3 = 0x18; - if (code == 'o') { - iStack32 = 8; - } - else { - iStack32 = 0x10; - if ((code != 'x') && (code != 'X')) { - iStack32 = 10; + int iVar1; + ulonglong uVar2; + longlong __numer; + longlong extraout_a1; + longlong extraout_a1_00; + int iVar3; + char *pcVar4; + int iStack80; + undefined4 uStack64; + undefined4 uStack60; + int iStack52; + uint uStack48; + int iStack44; + int iStack32; + char acStack25 [25]; + + __numer = 0x58; + if (code == 'X') { + pcVar4 = "0123456789ABCDEF"; } - } - uStack48 = *(uint *)&px->v; - iStack44 = *(int *)((int)&px->v + 4); - if ((((code == 'd') || (code == 'i')) && ((int)uStack48 < 1)) && ((int)uStack48 < 0)) { - uStack48 = ~uStack48 + (uint)(iStack44 == 0); - iStack44 = -iStack44; - } - if (((uStack48 != 0) || (iStack44 != 0)) || (px->prec != 0)) { - iVar3 = 0x17; - __ull_rem(uStack48,iStack44,0,iStack32); - cStack1 = pcVar4[(int)__numer]; - } - uVar2 = __ull_div(uStack48,iStack44,iStack32 >> 0x1f,iStack32); - *(undefined4 *)((int)&px->v + 4) = (int)__numer; - *(int *)&px->v = (int)uVar2; - if (((-1 < (longlong)uVar2) && ((0 < (longlong)uVar2 || (__numer != 0)))) && (iVar3 != 0)) { - iStack80 = *(int *)&px->v; - __numer = extraout_a1; - while( true ) { - lldiv((lldiv_t *)&uStack64,__numer,(longlong)iStack80); - iVar3 += -1; - *(undefined4 *)&px->v = uStack64; - *(undefined4 *)((int)&px->v + 4) = uStack60; - (acStack25 + 1)[iVar3] = pcVar4[iStack52]; - iStack80 = *(int *)&px->v; - if (iStack80 < 0) break; - if (((iStack80 < 1) && (*(int *)((int)&px->v + 4) == 0)) || - (__numer = extraout_a1_00, iVar3 < 1)) break; + else { + pcVar4 = "0123456789abcdef"; } - } - px->n1 = 0x18U - iVar3; - memcpy(px->s,acStack25 + 1 + iVar3,0x18U - iVar3); - iVar3 = px->n1; - iVar1 = px->prec; - if (iVar3 < iVar1) { - px->nz0 = iVar1 - iVar3; - } - if (((iVar1 < 0) && ((px->flags & 0x14) == 0x10)) && - (iVar3 = ((px->width - px->n0) - px->nz0) - iVar3, 0 < iVar3)) { - px->nz0 = px->nz0 + iVar3; - } - return; + iVar3 = 0x18; + if (code == 'o') { + iStack32 = 8; + } + else { + iStack32 = 0x10; + if ((code != 'x') && (code != 'X')) { + iStack32 = 10; + } + } + uStack48 = *(uint *)&px->v; + iStack44 = *(int *)((int)&px->v + 4); + if ((((code == 'd') || (code == 'i')) && ((int)uStack48 < 1)) && ((int)uStack48 < 0)) { + uStack48 = ~uStack48 + (uint)(iStack44 == 0); + iStack44 = -iStack44; + } + if (((uStack48 != 0) || (iStack44 != 0)) || (px->prec != 0)) { + iVar3 = 0x17; + __ull_rem(uStack48,iStack44,0,iStack32); + acStack25[24] = pcVar4[(int)__numer]; + } + uVar2 = __ull_div(uStack48,iStack44,iStack32 >> 0x1f,iStack32); + *(undefined4 *)((int)&px->v + 4) = (int)__numer; + *(int *)&px->v = (int)uVar2; + if (((-1 < (longlong)uVar2) && ((0 < (longlong)uVar2 || (__numer != 0)))) && (iVar3 != 0)) { + iStack80 = *(int *)&px->v; + __numer = extraout_a1; + while( true ) { + lldiv((lldiv_t *)&uStack64,__numer,(longlong)iStack80); + iVar3 += -1; + *(undefined4 *)&px->v = uStack64; + *(undefined4 *)((int)&px->v + 4) = uStack60; + (acStack25 + 1)[iVar3] = pcVar4[iStack52]; + iStack80 = *(int *)&px->v; + if (iStack80 < 0) break; + if (((iStack80 < 1) && (*(int *)((int)&px->v + 4) == 0)) || + (__numer = extraout_a1_00, iVar3 < 1)) break; + } + } + px->n1 = 0x18U - iVar3; + memcpy(px->s,acStack25 + 1 + iVar3,0x18U - iVar3); + iVar3 = px->n1; + iVar1 = px->prec; + if (iVar3 < iVar1) { + px->nz0 = iVar1 - iVar3; + } + if (((iVar1 < 0) && ((px->flags & 0x14) == 0x10)) && + (iVar3 = ((px->width - px->n0) - px->nz0) - iVar3, 0 < iVar3)) { + px->nz0 = px->nz0 + iVar3; + } + return; } @@ -20072,199 +20191,204 @@ void _Litob(_Pft *px,char code) void _Genld(_Pft *px,char code,char *p,short nsig,short xexp) { - bool bVar1; - size_t sVar2; - int iVar3; - int unaff_s0_lo; - char *__src; - char *pcVar4; - char *pcVar5; - short unaff_s2_lo; - int iVar6; - size_t __n; - short unaff_s3_lo; - size_t __n_00; - char unaff_s4_lo; - - iVar6 = (int)unaff_s2_lo; - __n_00 = SEXT24(unaff_s3_lo); - if ((int)__n_00 < 1) { - __src = "0"; - __n_00 = 1; - } - if ((unaff_s4_lo != 'f') && - ((((unaff_s4_lo != 'g' && (unaff_s4_lo != 'G')) || (iVar6 < -4)) || - (*(int *)(unaff_s0_lo + 0x24) <= iVar6)))) { - if ((unaff_s4_lo == 'g') || (unaff_s4_lo == 'G')) { - __n = *(size_t *)(unaff_s0_lo + 0x24); - if ((int)__n_00 < (int)__n) { - *(size_t *)(unaff_s0_lo + 0x24) = __n_00; - __n = __n_00; - } - *(int *)(unaff_s0_lo + 0x24) = __n - 1; - if ((int)(__n - 1) < 0) { - *(undefined4 *)(unaff_s0_lo + 0x24) = 0; - } - bVar1 = unaff_s4_lo == 'g'; - unaff_s4_lo = 'E'; - if (bVar1) { - unaff_s4_lo = 'e'; - } - iVar3 = *(int *)(unaff_s0_lo + 8); + bool bVar1; + size_t sVar2; + int iVar3; + int unaff_s0_lo; + char *unaff_s1_lo; + char *pcVar4; + char *pcVar5; + short unaff_s2_lo; + int iVar6; + size_t __n; + short unaff_s3_lo; + size_t __n_00; + char unaff_s4_lo; + + iVar6 = (int)unaff_s2_lo; + __n_00 = SEXT24(unaff_s3_lo); + if ((int)__n_00 < 1) { + unaff_s1_lo = "0"; + __n_00 = 1; } - else { - iVar3 = *(int *)(unaff_s0_lo + 8); - } - *(char *)(iVar3 + *(int *)(unaff_s0_lo + 0x14)) = *__src; - iVar3 = *(int *)(unaff_s0_lo + 0x24); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; - if ((0 < iVar3) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { - *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; - iVar3 = *(int *)(unaff_s0_lo + 0x24); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; - } - if (iVar3 < 1) { - iVar3 = *(int *)(unaff_s0_lo + 8); - } - else { - __n_00 = (int)((__n_00 - 1) * 0x10000) >> 0x10; - if (iVar3 < (int)__n_00) { - __n_00 = SEXT24((short)iVar3); - } - memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),__src + 1,__n_00); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n_00; - *(int *)(unaff_s0_lo + 0x18) = *(int *)(unaff_s0_lo + 0x24) - __n_00; - iVar3 = *(int *)(unaff_s0_lo + 8); - } - pcVar4 = (char *)(iVar3 + *(int *)(unaff_s0_lo + 0x14)); - *pcVar4 = unaff_s4_lo; - if (iVar6 < 0) { - iVar6 = iVar6 * -0x10000 >> 0x10; - pcVar4[1] = '-'; - } - else { - pcVar4[1] = '+'; - } - pcVar5 = pcVar4 + 2; - if (99 < iVar6) { - if (999 < iVar6) { - iVar3 = iVar6 / 1000; + if ((unaff_s4_lo != 'f') && + ((((unaff_s4_lo != 'g' && (unaff_s4_lo != 'G')) || (iVar6 < -4)) || + (*(int *)(unaff_s0_lo + 0x24) <= iVar6)))) { + if ((unaff_s4_lo == 'g') || (unaff_s4_lo == 'G')) { + __n = *(size_t *)(unaff_s0_lo + 0x24); + if ((int)__n_00 < (int)__n) { + *(size_t *)(unaff_s0_lo + 0x24) = __n_00; + __n = __n_00; + } + *(int *)(unaff_s0_lo + 0x24) = __n - 1; + if ((int)(__n - 1) < 0) { + *(undefined4 *)(unaff_s0_lo + 0x24) = 0; + } + bVar1 = unaff_s4_lo == 'g'; + unaff_s4_lo = 'E'; + if (bVar1) { + unaff_s4_lo = 'e'; + } + iVar3 = *(int *)(unaff_s0_lo + 8); + } + else { + iVar3 = *(int *)(unaff_s0_lo + 8); + } + *(char *)(iVar3 + *(int *)(unaff_s0_lo + 0x14)) = *unaff_s1_lo; + iVar3 = *(int *)(unaff_s0_lo + 0x24); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; + if ((0 < iVar3) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { + *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; + iVar3 = *(int *)(unaff_s0_lo + 0x24); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; + } + if (iVar3 < 1) { + iVar3 = *(int *)(unaff_s0_lo + 8); + } + else { + __n_00 = (int)((__n_00 - 1) * 0x10000) >> 0x10; + if (iVar3 < (int)__n_00) { + __n_00 = SEXT24((short)iVar3); + } + memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)), + unaff_s1_lo + 1,__n_00); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n_00; + *(int *)(unaff_s0_lo + 0x18) = *(int *)(unaff_s0_lo + 0x24) - __n_00; + iVar3 = *(int *)(unaff_s0_lo + 8); + } + pcVar4 = (char *)(iVar3 + *(int *)(unaff_s0_lo + 0x14)); + *pcVar4 = unaff_s4_lo; + if (iVar6 < 0) { + iVar6 = iVar6 * -0x10000 >> 0x10; + pcVar4[1] = '-'; + } + else { + pcVar4[1] = '+'; + } + pcVar5 = pcVar4 + 2; + if (99 < iVar6) { + if (999 < iVar6) { + iVar3 = iVar6 / 1000; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar6 == -0x80000000)) { + trap(0x1800); + } + iVar6 = (int)(short)(iVar6 % 1000); + *pcVar5 = (char)iVar3 + '0'; + pcVar5 = pcVar4 + 3; + } + iVar3 = iVar6 / 100; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar6 == -0x80000000)) { + trap(0x1800); + } + iVar6 = (int)(short)(iVar6 % 100); + *pcVar5 = (char)iVar3 + '0'; + pcVar5 = pcVar5 + 1; + } if (false) { - trap(0x1c00); + trap(0x1c00); } if ((false) && (iVar6 == -0x80000000)) { - trap(0x1800); + trap(0x1800); } - iVar6 = (int)(short)(iVar6 % 1000); - *pcVar5 = (char)iVar3 + '0'; - pcVar5 = pcVar4 + 3; - } - iVar3 = iVar6 / 100; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar6 == -0x80000000)) { - trap(0x1800); - } - iVar6 = (int)(short)(iVar6 % 100); - *pcVar5 = (char)iVar3 + '0'; - pcVar5 = pcVar5 + 1; + *pcVar5 = (char)(iVar6 / 10) + '0'; + pcVar5[1] = (char)(iVar6 % 10) + '0'; + *(char **)(unaff_s0_lo + 0x1c) = + pcVar5 + ((2 - *(int *)(unaff_s0_lo + 8)) - *(int *)(unaff_s0_lo + 0x14)); + goto LAB_7001df7c; } - if (false) { - trap(0x1c00); - } - if ((false) && (iVar6 == -0x80000000)) { - trap(0x1800); - } - *pcVar5 = (char)(iVar6 / 10) + '0'; - pcVar5[1] = (char)(iVar6 % 10) + '0'; - *(char **)(unaff_s0_lo + 0x1c) = - pcVar5 + ((2 - *(int *)(unaff_s0_lo + 8)) - *(int *)(unaff_s0_lo + 0x14)); - goto LAB_7001df7c; - } - __n = (iVar6 + 1) * 0x10000 >> 0x10; - if (unaff_s4_lo != 'f') { - sVar2 = *(size_t *)(unaff_s0_lo + 0x24); - if ((*(uint *)(unaff_s0_lo + 0x30) & 8) == 0) { - if ((int)__n_00 < (int)sVar2) { - *(size_t *)(unaff_s0_lo + 0x24) = __n_00; - sVar2 = __n_00; - goto LAB_7001db18; - } - iVar6 = sVar2 - __n; - } - else { + __n = (iVar6 + 1) * 0x10000 >> 0x10; + if (unaff_s4_lo != 'f') { + sVar2 = *(size_t *)(unaff_s0_lo + 0x24); + if ((*(uint *)(unaff_s0_lo + 0x30) & 8) == 0) { + if ((int)__n_00 < (int)sVar2) { + *(size_t *)(unaff_s0_lo + 0x24) = __n_00; + sVar2 = __n_00; + goto LAB_7001db18; + } + iVar6 = sVar2 - __n; + } + else { LAB_7001db18: - iVar6 = sVar2 - __n; + iVar6 = sVar2 - __n; + } + *(int *)(unaff_s0_lo + 0x24) = iVar6; + if (iVar6 < 0) { + *(undefined4 *)(unaff_s0_lo + 0x24) = 0; + } } - *(int *)(unaff_s0_lo + 0x24) = iVar6; - if (iVar6 < 0) { - *(undefined4 *)(unaff_s0_lo + 0x24) = 0; - } - } - if ((int)__n < 1) { - iVar3 = -__n; - *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x30; - iVar6 = *(int *)(unaff_s0_lo + 0x24); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; - if ((0 < iVar6) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { - *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; - iVar6 = *(int *)(unaff_s0_lo + 0x24); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; - } - if (iVar6 < iVar3) { - __n = iVar6 * -0x10000 >> 0x10; - iVar3 = -__n; - } - iVar6 += __n; - *(int *)(unaff_s0_lo + 0x18) = iVar3; - *(int *)(unaff_s0_lo + 0x24) = iVar6; - if (iVar6 < (int)__n_00) { - __n_00 = iVar6 * 0x10000 >> 0x10; - } - *(size_t *)(unaff_s0_lo + 0x1c) = __n_00; - memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),__src,__n_00); - *(int *)(unaff_s0_lo + 0x20) = *(int *)(unaff_s0_lo + 0x24) - __n_00; - } - else { - if ((int)__n_00 < (int)__n) { - memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),__src,__n_00); - iVar6 = *(int *)(unaff_s0_lo + 0x24); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n_00; - *(int *)(unaff_s0_lo + 0x18) = __n - __n_00; - if ((0 < iVar6) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { - *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; - iVar6 = *(int *)(unaff_s0_lo + 0x24); - *(int *)(unaff_s0_lo + 0x1c) = *(int *)(unaff_s0_lo + 0x1c) + 1; - } - *(int *)(unaff_s0_lo + 0x20) = iVar6; - } - else { - memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),__src,__n); - iVar6 = *(int *)(unaff_s0_lo + 0x24); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n; - __n_00 = (int)((__n_00 - __n) * 0x10000) >> 0x10; - if ((0 < iVar6) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { - *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; + if ((int)__n < 1) { + iVar3 = -__n; + *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x30; iVar6 = *(int *)(unaff_s0_lo + 0x24); *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; - } - if (iVar6 < (int)__n_00) { - __n_00 = SEXT24((short)iVar6); - } - memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),__src + __n,__n_00); - *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n_00; - *(int *)(unaff_s0_lo + 0x18) = *(int *)(unaff_s0_lo + 0x24) - __n_00; + if ((0 < iVar6) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { + *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; + iVar6 = *(int *)(unaff_s0_lo + 0x24); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; + } + if (iVar6 < iVar3) { + __n = iVar6 * -0x10000 >> 0x10; + iVar3 = -__n; + } + iVar6 += __n; + *(int *)(unaff_s0_lo + 0x18) = iVar3; + *(int *)(unaff_s0_lo + 0x24) = iVar6; + if (iVar6 < (int)__n_00) { + __n_00 = iVar6 * 0x10000 >> 0x10; + } + *(size_t *)(unaff_s0_lo + 0x1c) = __n_00; + memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),unaff_s1_lo,__n_00 + ); + *(int *)(unaff_s0_lo + 0x20) = *(int *)(unaff_s0_lo + 0x24) - __n_00; + } + else { + if ((int)__n_00 < (int)__n) { + memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),unaff_s1_lo, + __n_00); + iVar6 = *(int *)(unaff_s0_lo + 0x24); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n_00; + *(int *)(unaff_s0_lo + 0x18) = __n - __n_00; + if ((0 < iVar6) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { + *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; + iVar6 = *(int *)(unaff_s0_lo + 0x24); + *(int *)(unaff_s0_lo + 0x1c) = *(int *)(unaff_s0_lo + 0x1c) + 1; + } + *(int *)(unaff_s0_lo + 0x20) = iVar6; + } + else { + memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)),unaff_s1_lo, + __n); + iVar6 = *(int *)(unaff_s0_lo + 0x24); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n; + __n_00 = (int)((__n_00 - __n) * 0x10000) >> 0x10; + if ((0 < iVar6) || ((*(uint *)(unaff_s0_lo + 0x30) & 8) != 0)) { + *(undefined *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)) = 0x2e; + iVar6 = *(int *)(unaff_s0_lo + 0x24); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + 1; + } + if (iVar6 < (int)__n_00) { + __n_00 = SEXT24((short)iVar6); + } + memcpy((void *)(*(int *)(unaff_s0_lo + 8) + *(int *)(unaff_s0_lo + 0x14)), + unaff_s1_lo + __n,__n_00); + *(int *)(unaff_s0_lo + 0x14) = *(int *)(unaff_s0_lo + 0x14) + __n_00; + *(int *)(unaff_s0_lo + 0x18) = *(int *)(unaff_s0_lo + 0x24) - __n_00; + } } - } LAB_7001df7c: - if (((*(uint *)(unaff_s0_lo + 0x30) & 0x14) == 0x10) && - (iVar6 = *(int *)(unaff_s0_lo + 0xc) + *(int *)(unaff_s0_lo + 0x14) + - *(int *)(unaff_s0_lo + 0x18) + *(int *)(unaff_s0_lo + 0x1c) + - *(int *)(unaff_s0_lo + 0x20), iVar6 < *(int *)(unaff_s0_lo + 0x28))) { - *(int *)(unaff_s0_lo + 0x10) = *(int *)(unaff_s0_lo + 0x28) - iVar6; - } - return; + if (((*(uint *)(unaff_s0_lo + 0x30) & 0x14) == 0x10) && + (iVar6 = *(int *)(unaff_s0_lo + 0xc) + *(int *)(unaff_s0_lo + 0x14) + + *(int *)(unaff_s0_lo + 0x18) + *(int *)(unaff_s0_lo + 0x1c) + + *(int *)(unaff_s0_lo + 0x20), iVar6 < *(int *)(unaff_s0_lo + 0x28))) { + *(int *)(unaff_s0_lo + 0x10) = *(int *)(unaff_s0_lo + 0x28) - iVar6; + } + return; } @@ -20272,7 +20396,7 @@ LAB_7001df7c: void dummy7001DFD8(void) { - return; + return; } @@ -20283,238 +20407,239 @@ void dummy7001DFD8(void) void _Ldtob(_Pft *px,char code) { - byte *pbVar1; - ulonglong uVar2; - ushort uVar3; - ushort uVar4; - int __denom; - ulonglong uVar5; - ulonglong extraout_a0; - char *p; - int iVar6; - _Pft *px_00; - undefined8 in_a2; - undefined8 extraout_a2; - short nsig; - short extraout_a3_lo; - ulonglong uVar7; - int iVar8; - ushort uVar9; - char *pcVar10; - char *pcVar11; - short sVar12; - ulonglong in_f0; - double dVar13; - uint in_register_00001010; - double dVar14; - short xexp; - int iStack92; - undefined4 uStack88; - ushort uStack54; - undefined uStack32; - char acStack31 [31]; - - p = (char *)in_a2; - dVar14 = (double)px->v; - if (px->prec < 0) { - px->prec = 6; - } - else { - if ((px->prec == 0) && ((code == 'g' || (code == 'G')))) { - px->prec = 1; - } - } - uVar3 = *(ushort *)&px->v; - uVar5 = (ulonglong)uVar3; - px_00 = (_Pft *)(uint)uVar3; - sVar12 = (short)((int)((uint)uVar3 & 0x7ff0) >> 4); - if (sVar12 == 0x7ff) { - uStack54 = 0; - if (((((*(ushort *)&px->v & 0xf) == 0) && (*(short *)((int)&px->v + 2) == 0)) && - (*(short *)((int)&px->v + 4) == 0)) && (*(short *)((int)&px->v + 6) == 0)) { - sVar12 = 1; + byte *pbVar1; + ulonglong uVar2; + ushort uVar3; + ushort uVar4; + int __denom; + ulonglong uVar5; + ulonglong extraout_a0; + char *p; + int iVar6; + _Pft *px_00; + undefined8 in_a2; + undefined8 extraout_a2; + short in_a3_lo; + short extraout_a3_lo; + ulonglong uVar7; + int iVar8; + ushort uVar9; + char *pcVar10; + char *pcVar11; + short sVar12; + ulonglong in_f0; + double dVar13; + uint in_register_00001010; + double dVar14; + short in_stack_ffffff42; + int iStack92; + undefined4 uStack88; + ushort uStack54; + undefined uStack32; + char cStack31; + char acStack30 [6]; + char acStack24 [24]; + + p = (char *)in_a2; + dVar14 = (double)px->v; + if (px->prec < 0) { + px->prec = 6; } else { - sVar12 = 2; + if ((px->prec == 0) && ((code == 'g' || (code == 'G')))) { + px->prec = 1; + } } - } - else { - if (sVar12 == 0) { - sVar12 = 0; - if (true) { + uVar3 = *(ushort *)&px->v; + uVar5 = (ulonglong)uVar3; + px_00 = (_Pft *)(uint)uVar3; + sVar12 = (short)((int)((uint)uVar3 & 0x7ff0) >> 4); + if (sVar12 == 0x7ff) { uStack54 = 0; - } - else { - sVar12 = 2; - } - } - else { - uStack54 = sVar12 + -0x3fe; - *(ushort *)&px->v = uVar3 & 0x800f | 0x3ff0; - sVar12 = -1; - } - } - if (sVar12 < 1) { - if (sVar12 == 0) { - uStack54 = 0; - } - else { - __denom = 0; - pcVar10 = acStack31; - if (dVar14 < (double)((ulonglong)in_register_00001010 << 0x20)) { - dVar14 = -dVar14; - } - iVar6 = 6; - iVar8 = ((int)(short)uStack54 * 0x7597) / 100000 + -4; - uStack54 = (ushort)iVar8; - if (iVar8 * 0x10000 >> 0x10 < 0) { - uVar5 = SEXT48(3 - (iVar8 * 0x10000 >> 0x10)); - uVar2 = uVar5 & 0xfffffffffffffffc; - uStack54 = -(short)uVar2; - if (0 < (longlong)uVar2) { - uVar5 = ZEXT48(&digits); - do { - uVar7 = uVar2 & 1; - uVar2 = SEXT48((int)uVar2 >> 1); - if (uVar7 != 0) { - dVar14 = dVar14 * (&digits)[__denom]; - } - __denom += 1; - } while (0 < (longlong)uVar2); - } - } - else { - __denom = 0; - uVar3 = uStack54 & 0xfffc; - if (0 < (short)uStack54) { - dVar13 = (double)(in_f0 & 0xffffffff00000000); - if (0 < (short)uVar3) { - uVar5 = ZEXT48(&digits); - uVar4 = uVar3; - do { - uVar9 = uVar4 & 1; - uVar4 = (short)uVar4 >> 1; - if (uVar9 != 0) { - dVar13 = dVar13 * (&digits)[__denom]; - } - __denom += 1; - } while (0 < (short)uVar4); - } - dVar14 = dVar14 / dVar13; - uStack54 = uVar3; - } - } - px_00 = (_Pft *)uVar5; - if (code == 'f') { - iVar6 = (int)(short)uStack54 + 10; - } - iVar6 += px->prec; - if (0x13 < iVar6) { - iVar6 = 0x13; - } - uStack32 = 0x30; - if (0 < iVar6) { - if ((double)((ulonglong)in_register_00001010 << 0x20) < dVar14) { - do { - __denom = (int)dVar14; - iVar6 += -8; - pcVar10 = pcVar10 + 8; - if (0 < iVar6) { - dVar14 = (dVar14 - (double)__denom) * dbl_80029CE8; - } - iVar8 = 8; - if ((0 < __denom) && (iVar8 = 7, uVar5 = (longlong)(int)&iStack92, true)) { - do { - ldiv((long)&iStack92,__denom); - pcVar10 = pcVar10 + -1; - *pcVar10 = (char)uStack88 + '0'; - uVar5 = extraout_a0; - in_a2 = extraout_a2; - nsig = extraout_a3_lo; - if (iStack92 < 1) break; - iVar8 += -1; - uVar5 = extraout_a0; - in_a2 = extraout_a2; - nsig = extraout_a3_lo; - __denom = iStack92; - } while (-1 < iVar8); - } - p = (char *)in_a2; - px_00 = (_Pft *)uVar5; - __denom = iVar8 + -2; - if (-1 < iVar8 + -1) { - while( true ) { - pcVar10 = pcVar10 + -1; - *pcVar10 = '0'; - if (__denom < 0) break; - __denom += -1; - } - } - pcVar10 = pcVar10 + 8; - } while ((0 < iVar6) && ((double)((ulonglong)in_register_00001010 << 0x20) < dVar14)); - } - } - uStack54 += 7; - pcVar10 = pcVar10 + (-1 - (int)&uStack32); - pcVar11 = acStack31; - while (acStack31[0] == '0') { - pcVar11 = pcVar11 + 1; - pcVar10 = pcVar10 + -1; - uStack54 += -1; - acStack31[0] = *pcVar11; - } - if (code == 'f') { - __denom = (int)(short)uStack54 + 1; - } - else { - if ((code == 'e') || (__denom = 0, code == 'E')) { - __denom = 1; - } - } - code = (char)__denom; - __denom = (__denom + px->prec) * 0x10000 >> 0x10; - if ((int)pcVar10 < __denom) { - __denom = (int)(short)pcVar10; - } - if (0 < __denom) { - if ((__denom < (int)pcVar10) && (0x34 < (byte)pcVar11[__denom])) { - uVar5 = 0x39; + if (((((*(ushort *)&px->v & 0xf) == 0) && (*(short *)((int)&px->v + 2) == 0)) && + (*(short *)((int)&px->v + 4) == 0)) && (*(short *)((int)&px->v + 6) == 0)) { + sVar12 = 1; } else { - uVar5 = 0x30; + sVar12 = 2; } - code = (char)uVar5; - px_00 = (_Pft *)uVar5; - iVar6 = __denom + -1; - if (uVar5 == (ulonglong)(byte)pcVar11[__denom + -1]) { - pcVar10 = pcVar11 + iVar6; - do { - pbVar1 = (byte *)(pcVar10 + -1); - iVar6 += -1; - pcVar10 = pcVar10 + -1; - } while (uVar5 == (ulonglong)*pbVar1); - } - if (uVar5 == 0x39) { - pcVar11[iVar6] = pcVar11[iVar6] + '\x01'; - } - if (iVar6 < 0) { - uStack54 += 1; - } - } - } - _Genld(px_00,code,p,nsig,xexp); - } - else { - if (sVar12 == 2) { - p = "NaN"; } else { - p = "Inf"; + if (sVar12 == 0) { + sVar12 = 0; + if (true) { + uStack54 = 0; + } + else { + sVar12 = 2; + } + } + else { + uStack54 = sVar12 + -0x3fe; + *(ushort *)&px->v = uVar3 & 0x800f | 0x3ff0; + sVar12 = -1; + } } - px->n1 = 3; - memcpy(px->s,p,3); - } - return; + if (sVar12 < 1) { + if (sVar12 == 0) { + uStack54 = 0; + } + else { + __denom = 0; + pcVar10 = &cStack31; + if (dVar14 < (double)((ulonglong)in_register_00001010 << 0x20)) { + dVar14 = -dVar14; + } + iVar6 = 6; + iVar8 = ((int)(short)uStack54 * 0x7597) / 100000 + -4; + uStack54 = (ushort)iVar8; + if (iVar8 * 0x10000 >> 0x10 < 0) { + uVar5 = SEXT48(3 - (iVar8 * 0x10000 >> 0x10)); + uVar2 = uVar5 & 0xfffffffffffffffc; + uStack54 = -(short)uVar2; + if (0 < (longlong)uVar2) { + uVar5 = ZEXT48(&digits); + do { + uVar7 = uVar2 & 1; + uVar2 = SEXT48((int)uVar2 >> 1); + if (uVar7 != 0) { + dVar14 = dVar14 * (&digits)[__denom]; + } + __denom += 1; + } while (0 < (longlong)uVar2); + } + } + else { + __denom = 0; + uVar3 = uStack54 & 0xfffc; + if (0 < (short)uStack54) { + dVar13 = (double)(in_f0 & 0xffffffff00000000); + if (0 < (short)uVar3) { + uVar5 = ZEXT48(&digits); + uVar4 = uVar3; + do { + uVar9 = uVar4 & 1; + uVar4 = (short)uVar4 >> 1; + if (uVar9 != 0) { + dVar13 = dVar13 * (&digits)[__denom]; + } + __denom += 1; + } while (0 < (short)uVar4); + } + dVar14 = dVar14 / dVar13; + uStack54 = uVar3; + } + } + px_00 = (_Pft *)uVar5; + if (code == 'f') { + iVar6 = (int)(short)uStack54 + 10; + } + iVar6 += px->prec; + if (0x13 < iVar6) { + iVar6 = 0x13; + } + uStack32 = 0x30; + if (0 < iVar6) { + if ((double)((ulonglong)in_register_00001010 << 0x20) < dVar14) { + do { + __denom = (int)dVar14; + iVar6 += -8; + pcVar10 = pcVar10 + 8; + if (0 < iVar6) { + dVar14 = (dVar14 - (double)__denom) * dbl_80029CE8; + } + iVar8 = 8; + if ((0 < __denom) && (iVar8 = 7, uVar5 = (longlong)(int)&iStack92, true)) { + do { + ldiv((long)&iStack92,__denom); + pcVar10 = pcVar10 + -1; + *pcVar10 = (char)uStack88 + '0'; + uVar5 = extraout_a0; + in_a2 = extraout_a2; + in_a3_lo = extraout_a3_lo; + if (iStack92 < 1) break; + iVar8 += -1; + uVar5 = extraout_a0; + __denom = iStack92; + } while (-1 < iVar8); + } + p = (char *)in_a2; + px_00 = (_Pft *)uVar5; + __denom = iVar8 + -2; + if (-1 < iVar8 + -1) { + while( true ) { + pcVar10 = pcVar10 + -1; + *pcVar10 = '0'; + if (__denom < 0) break; + __denom += -1; + } + } + pcVar10 = pcVar10 + 8; + } while ((0 < iVar6) && + ((double)((ulonglong)in_register_00001010 << 0x20) < dVar14)); + } + } + uStack54 += 7; + pcVar10 = pcVar10 + (-1 - (int)&uStack32); + pcVar11 = &cStack31; + while (cStack31 == '0') { + pcVar11 = pcVar11 + 1; + pcVar10 = pcVar10 + -1; + uStack54 += -1; + cStack31 = *pcVar11; + } + if (code == 'f') { + __denom = (int)(short)uStack54 + 1; + } + else { + if ((code == 'e') || (__denom = 0, code == 'E')) { + __denom = 1; + } + } + code = (char)__denom; + __denom = (__denom + px->prec) * 0x10000 >> 0x10; + if ((int)pcVar10 < __denom) { + __denom = (int)(short)pcVar10; + } + if (0 < __denom) { + if ((__denom < (int)pcVar10) && (0x34 < (byte)pcVar11[__denom])) { + uVar5 = 0x39; + } + else { + uVar5 = 0x30; + } + code = (char)uVar5; + px_00 = (_Pft *)uVar5; + iVar6 = __denom + -1; + if (uVar5 == (ulonglong)(byte)pcVar11[__denom + -1]) { + pcVar10 = pcVar11 + iVar6; + do { + pbVar1 = (byte *)(pcVar10 + -1); + iVar6 += -1; + pcVar10 = pcVar10 + -1; + } while (uVar5 == (ulonglong)*pbVar1); + } + if (uVar5 == 0x39) { + pcVar11[iVar6] = pcVar11[iVar6] + '\x01'; + } + if (iVar6 < 0) { + uStack54 += 1; + } + } + } + _Genld(px_00,code,p,in_a3_lo,in_stack_ffffff42); + } + else { + if (sVar12 == 2) { + p = "NaN"; + } + else { + p = "Inf"; + } + px->n1 = 3; + memcpy(px->s,p,3); + } + return; } @@ -20524,20 +20649,20 @@ void _Ldtob(_Pft *px,char code) s32 osEPiRawStartDma(OSPiHandle *pihandle,s32 direction,u32 devAddr,void *dramAddr,u32 size) { - do { - } while ((_PI_STATUS_REG & 3) != 0); - _PI_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); - _PI_CART_ADDR_REG = (pihandle->baseAddress | devAddr) & 0x1fffffff; - if (direction == 0) { - _PI_WR_LEN_REG = size - 1; - } - else { - if (direction != 1) { - return -1; + do { + } while ((_PI_STATUS_REG & 3) != 0); + _PI_DRAM_ADDR_REG = osVirtualToPhysical(dramAddr); + _PI_CART_ADDR_REG = (pihandle->baseAddress | devAddr) & 0x1fffffff; + if (direction == 0) { + _PI_WR_LEN_REG = size - 1; } - _PI_RD_LEN_REG = size - 1; - } - return 0; + else { + if (direction != 1) { + return -1; + } + _PI_RD_LEN_REG = size - 1; + } + return 0; } @@ -20545,91 +20670,92 @@ s32 osEPiRawStartDma(OSPiHandle *pihandle,s32 direction,u32 devAddr,void *dramAd void __osDevMgrMain(void *arg) { - int iVar1; - bool bVar2; - int iVar3; - int iStack16; - OSMesg pvStack12; - OSMesg pvStack8; - undefined2 *puStack4; - - puStack4 = NULL; - do { - while( true ) { - osRecvMesg(*(OSMesgQueue **)((int)arg + 8),&puStack4,1); - iVar1 = *(int *)(puStack4 + 10); - if (((iVar1 == 0) || (*(char *)(iVar1 + 4) != '\x02')) || - ((*(int *)(iVar1 + 0x14) != 0 && (*(int *)(iVar1 + 0x14) != 1)))) break; - iVar1 = *(int *)(puStack4 + 10); - iVar3 = iVar1 + 0x14 + (uint)*(ushort *)(iVar1 + 0x1a) * 0x24; - *(undefined4 *)(iVar1 + 0x1c) = 0xffffffff; - if (*(short *)(iVar1 + 0x18) != 3) { - *(int *)(iVar3 + 0x1c) = *(int *)(iVar3 + 0x1c) - *(int *)(iVar3 + 0x24); - } - if ((*(short *)(iVar1 + 0x18) == 2) && (*(int *)(*(int *)(puStack4 + 10) + 0x14) == 0)) { - bVar2 = true; - } - else { - bVar2 = false; - } - osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); - __osResetGlobalIntMask(0x100401); - osEPiRawWriteIo(*(OSPiHandle **)(puStack4 + 10),0x5000510,*(uint *)(iVar1 + 0x24) | 0x80000000 - ); - while( true ) { - osRecvMesg(*(OSMesgQueue **)((int)arg + 0xc),&pvStack8,1); - osSendMesg(*(OSMesgQueue **)(puStack4 + 2),puStack4,0); - if ((!bVar2) || (*(int *)(*(int *)(puStack4 + 10) + 0x2c) != 0)) break; - bVar2 = false; - } - osSendMesg(*(OSMesgQueue **)((int)arg + 0x10),NULL,0); - if (*(short *)(*(int *)(puStack4 + 10) + 0x1a) == 1) { - osYieldThread(); - } - } - if (false) { + int iVar1; + bool bVar2; + int iVar3; + int iStack16; + OSMesg pvStack12; + OSMesg pvStack8; + undefined2 *puStack4; + + puStack4 = NULL; + do { + while( true ) { + osRecvMesg(*(OSMesgQueue **)((int)arg + 8),&puStack4,1); + iVar1 = *(int *)(puStack4 + 10); + if (((iVar1 == 0) || (*(char *)(iVar1 + 4) != '\x02')) || + ((*(int *)(iVar1 + 0x14) != 0 && (*(int *)(iVar1 + 0x14) != 1)))) break; + iVar1 = *(int *)(puStack4 + 10); + iVar3 = iVar1 + 0x14 + (uint)*(ushort *)(iVar1 + 0x1a) * 0x24; + *(undefined4 *)(iVar1 + 0x1c) = 0xffffffff; + if (*(short *)(iVar1 + 0x18) != 3) { + *(int *)(iVar3 + 0x1c) = *(int *)(iVar3 + 0x1c) - *(int *)(iVar3 + 0x24); + } + if ((*(short *)(iVar1 + 0x18) == 2) && (*(int *)(*(int *)(puStack4 + 10) + 0x14) == 0)) + { + bVar2 = true; + } + else { + bVar2 = false; + } + osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); + __osResetGlobalIntMask(0x100401); + osEPiRawWriteIo(*(OSPiHandle **)(puStack4 + 10),0x5000510, + *(uint *)(iVar1 + 0x24) | 0x80000000); + while( true ) { + osRecvMesg(*(OSMesgQueue **)((int)arg + 0xc),&pvStack8,1); + osSendMesg(*(OSMesgQueue **)(puStack4 + 2),puStack4,0); + if ((!bVar2) || (*(int *)(*(int *)(puStack4 + 10) + 0x2c) != 0)) break; + bVar2 = false; + } + osSendMesg(*(OSMesgQueue **)((int)arg + 0x10),NULL,0); + if (*(short *)(*(int *)(puStack4 + 10) + 0x1a) == 1) { + osYieldThread(); + } + } + if (false) { switchD_7001e80c_caseD_d: - iStack16 = -1; - } - else { - switch(*puStack4) { - case 10: - osSendMesg(*(OSMesgQueue **)(puStack4 + 2),puStack4,0); - iStack16 = -1; - break; - case 0xb: - osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); - iStack16 = (**(code **)((int)arg + 0x14)) - (0,*(undefined4 *)(puStack4 + 6),*(undefined4 *)(puStack4 + 4), - *(undefined4 *)(puStack4 + 8)); - break; - case 0xc: - osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); - iStack16 = (**(code **)((int)arg + 0x14)) - (1,*(undefined4 *)(puStack4 + 6),*(undefined4 *)(puStack4 + 4), - *(undefined4 *)(puStack4 + 8)); - break; - default: - goto switchD_7001e80c_caseD_d; - case 0xf: - osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); - iStack16 = (**(code **)((int)arg + 0x18)) - (*(undefined4 *)(puStack4 + 10),0,*(undefined4 *)(puStack4 + 6), - *(undefined4 *)(puStack4 + 4),*(undefined4 *)(puStack4 + 8)); - break; - case 0x10: - osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); - iStack16 = (**(code **)((int)arg + 0x18)) - (*(undefined4 *)(puStack4 + 10),1,*(undefined4 *)(puStack4 + 6), - *(undefined4 *)(puStack4 + 4),*(undefined4 *)(puStack4 + 8)); - } - } - if (iStack16 == 0) { - osRecvMesg(*(OSMesgQueue **)((int)arg + 0xc),&pvStack8,1); - osSendMesg(*(OSMesgQueue **)(puStack4 + 2),puStack4,0); - osSendMesg(*(OSMesgQueue **)((int)arg + 0x10),NULL,0); - } - } while( true ); + iStack16 = -1; + } + else { + switch(*puStack4) { + case 10: + osSendMesg(*(OSMesgQueue **)(puStack4 + 2),puStack4,0); + iStack16 = -1; + break; + case 0xb: + osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); + iStack16 = (**(code **)((int)arg + 0x14)) + (0,*(undefined4 *)(puStack4 + 6),*(undefined4 *)(puStack4 + 4), + *(undefined4 *)(puStack4 + 8)); + break; + case 0xc: + osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); + iStack16 = (**(code **)((int)arg + 0x14)) + (1,*(undefined4 *)(puStack4 + 6),*(undefined4 *)(puStack4 + 4), + *(undefined4 *)(puStack4 + 8)); + break; + default: + goto switchD_7001e80c_caseD_d; + case 0xf: + osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); + iStack16 = (**(code **)((int)arg + 0x18)) + (*(undefined4 *)(puStack4 + 10),0,*(undefined4 *)(puStack4 + 6) + ,*(undefined4 *)(puStack4 + 4),*(undefined4 *)(puStack4 + 8)); + break; + case 0x10: + osRecvMesg(*(OSMesgQueue **)((int)arg + 0x10),&pvStack12,1); + iStack16 = (**(code **)((int)arg + 0x18)) + (*(undefined4 *)(puStack4 + 10),1,*(undefined4 *)(puStack4 + 6) + ,*(undefined4 *)(puStack4 + 4),*(undefined4 *)(puStack4 + 8)); + } + } + if (iStack16 == 0) { + osRecvMesg(*(OSMesgQueue **)((int)arg + 0xc),&pvStack8,1); + osSendMesg(*(OSMesgQueue **)(puStack4 + 2),puStack4,0); + osSendMesg(*(OSMesgQueue **)((int)arg + 0x10),NULL,0); + } + } while( true ); } @@ -20638,7 +20764,7 @@ void proc_7001E9B0(undefined param_1,undefined param_2,undefined param_3,undefin undefined param_5,undefined param_6,undefined param_7,undefined4 param_8) { - return; + return; } @@ -20648,24 +20774,24 @@ void proc_7001E9B0(undefined param_1,undefined param_2,undefined param_3,undefin u16 __osSumcalc(u8 *ptr,int length) { - byte bVar1; - byte *pbStack12; - undefined4 uStack8; - int iStack4; - - uStack8 = 0; - uStack8._2_2_ = 0; - iStack4 = 0; - pbStack12 = ptr; - if (0 < length) { - do { - bVar1 = *pbStack12; - pbStack12 = pbStack12 + 1; - iStack4 += 1; - uStack8 = uStack8 + (uint)bVar1 & 0xffff; - } while (iStack4 < length); - } - return uStack8._2_2_; + byte bVar1; + byte *pbStack12; + undefined4 uStack8; + int iStack4; + + uStack8 = 0; + uStack8._2_2_ = 0; + iStack4 = 0; + pbStack12 = ptr; + if (0 < length) { + do { + bVar1 = *pbStack12; + pbStack12 = pbStack12 + 1; + iStack4 += 1; + uStack8 = uStack8 + bVar1 & 0xffff; + } while (iStack4 < length); + } + return uStack8._2_2_; } @@ -20673,19 +20799,19 @@ u16 __osSumcalc(u8 *ptr,int length) s32 __osIdCheckSum(u16 *ptr,u16 *csum,u16 *icsum) { - ushort uVar1; - uint uStack8; - - *icsum = 0; - *csum = *icsum; - uStack8 = 0; - do { - uVar1 = *(ushort *)((int)ptr + uStack8); - *csum = *csum + uVar1; - *icsum = *icsum + ~uVar1; - uStack8 += 2; - } while (uStack8 < 0x1c); - return 0; + ushort uVar1; + uint uStack8; + + *icsum = 0; + *csum = *icsum; + uStack8 = 0; + do { + uVar1 = *(ushort *)((int)ptr + uStack8); + *csum = *csum + uVar1; + *icsum = *icsum + ~uVar1; + uStack8 += 2; + } while (uStack8 < 0x1c); + return 0; } @@ -20693,113 +20819,115 @@ s32 __osIdCheckSum(u16 *ptr,u16 *csum,u16 *icsum) int __osRepairPackId(int param_1,int param_2,undefined4 *param_3) { - undefined4 uVar1; - u32 uVar2; - u16 auStack88 [4]; - int iStack80; - int iStack76; - bool bStack69; - byte abStack68 [32]; - byte abStack36 [32]; - s32 sStack4; - - sStack4 = 0; - bStack69 = false; - if (*(char *)(param_1 + 0x65) != '\0') { + undefined4 uVar1; + u32 uVar2; + u16 auStack88 [4]; + int iStack80; + int iStack76; + bool bStack69; + byte abStack68 [32]; + byte abStack36 [32]; + s32 sStack4; + + sStack4 = 0; + bStack69 = false; + if (*(char *)(param_1 + 0x65) != '\0') { + *(undefined *)(param_1 + 0x65) = 0; + sStack4 = __osPfsSelectBank((OSPfs *)param_1); + if (sStack4 != 0) { + return sStack4; + } + } + *param_3 = 0xffffffff; + uVar2 = osGetCount(); + param_3[1] = uVar2; + uVar1 = *(undefined4 *)(param_2 + 0xc); + param_3[2] = *(undefined4 *)(param_2 + 8); + param_3[3] = uVar1; + uVar1 = *(undefined4 *)(param_2 + 0x14); + param_3[4] = *(undefined4 *)(param_2 + 0x10); + param_3[5] = uVar1; + iStack80 = 0; + do { + *(undefined *)(param_1 + 0x65) = (char)iStack80; + sStack4 = __osPfsSelectBank((OSPfs *)param_1); + if (sStack4 != 0) { + return sStack4; + } + sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0,abStack36); + if (sStack4 != 0) { + return sStack4; + } + abStack36[0] = (byte)iStack80 | 0x80; + iStack76 = 1; + do { + abStack36[iStack76] = ~abStack36[iStack76]; + iStack76 += 1; + } while (iStack76 < 0x20); + sStack4 = __osContRamWrite(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0,abStack36, + 0); + if (sStack4 != 0) { + return sStack4; + } + sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0,abStack68); + if (sStack4 != 0) { + return sStack4; + } + iStack76 = 0; + do { + if (abStack36[iStack76] != abStack68[iStack76]) break; + iStack76 += 1; + } while (iStack76 < 0x20); + if (iStack76 != 0x20) break; + if (0 < iStack80) { + *(undefined *)(param_1 + 0x65) = 0; + sStack4 = __osPfsSelectBank((OSPfs *)param_1); + if (sStack4 != 0) { + return sStack4; + } + sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0, + abStack36); + if (sStack4 != 0) { + return sStack4; + } + if (abStack36[0] != 0x80) break; + } + iStack80 += 1; + } while (iStack80 < 0x3e); *(undefined *)(param_1 + 0x65) = 0; sStack4 = __osPfsSelectBank((OSPfs *)param_1); - if (sStack4 != 0) { - return sStack4; - } - } - *param_3 = 0xffffffff; - uVar2 = osGetCount(); - param_3[1] = uVar2; - uVar1 = *(undefined4 *)(param_2 + 0xc); - param_3[2] = *(undefined4 *)(param_2 + 8); - param_3[3] = uVar1; - uVar1 = *(undefined4 *)(param_2 + 0x14); - param_3[4] = *(undefined4 *)(param_2 + 0x10); - param_3[5] = uVar1; - iStack80 = 0; - do { - *(undefined *)(param_1 + 0x65) = (char)iStack80; - sStack4 = __osPfsSelectBank((OSPfs *)param_1); - if (sStack4 != 0) { - return sStack4; - } - sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0,abStack36); - if (sStack4 != 0) { - return sStack4; - } - abStack36[0] = (byte)iStack80 | 0x80; - iStack76 = 1; - do { - abStack36[iStack76] = ~abStack36[iStack76]; - iStack76 += 1; - } while (iStack76 < 0x20); - sStack4 = __osContRamWrite(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0,abStack36,0); - if (sStack4 != 0) { - return sStack4; - } - sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0,abStack68); - if (sStack4 != 0) { - return sStack4; - } - iStack76 = 0; - do { - if (abStack36[iStack76] != abStack68[iStack76]) break; - iStack76 += 1; - } while (iStack76 < 0x20); - if (iStack76 != 0x20) break; - if (0 < iStack80) { - *(undefined *)(param_1 + 0x65) = 0; - sStack4 = __osPfsSelectBank((OSPfs *)param_1); - if (sStack4 != 0) { - return sStack4; - } - sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),0,abStack36); - if (sStack4 != 0) { - return sStack4; - } - if (abStack36[0] != 0x80) break; - } - iStack80 += 1; - } while (iStack80 < 0x3e); - *(undefined *)(param_1 + 0x65) = 0; - sStack4 = __osPfsSelectBank((OSPfs *)param_1); - if (sStack4 == 0) { - bStack69 = 0 < iStack80; - *(ushort *)(param_3 + 6) = *(ushort *)(param_2 + 0x18) & 0xfffe | (ushort)bStack69; - *(undefined *)((int)param_3 + 0x1a) = (char)iStack80; - *(undefined *)((int)param_3 + 0x1b) = *(undefined *)(param_2 + 0x1b); - __osIdCheckSum((u16 *)param_3,(u16 *)(param_3 + 7),(u16 *)((int)param_3 + 0x1e)); - auStack88[0] = 1; - auStack88[1] = 3; - auStack88[2] = 4; - auStack88[3] = 6; - iStack76 = 0; - do { - sStack4 = __osContRamWrite(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8), - auStack88[iStack76],(u8 *)param_3,1); - if (sStack4 != 0) { - return sStack4; - } - iStack76 += 1; - } while (iStack76 < 4); - sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),1,abStack36); if (sStack4 == 0) { - iStack76 = 0; - do { - if (*(byte *)((int)param_3 + iStack76) != abStack36[iStack76]) { - return 10; + bStack69 = 0 < iStack80; + *(ushort *)(param_3 + 6) = *(ushort *)(param_2 + 0x18) & 0xfffe | (ushort)bStack69; + *(undefined *)((int)param_3 + 0x1a) = (char)iStack80; + *(undefined *)((int)param_3 + 0x1b) = *(undefined *)(param_2 + 0x1b); + __osIdCheckSum((u16 *)param_3,(u16 *)(param_3 + 7),(u16 *)((int)param_3 + 0x1e)); + auStack88[0] = 1; + auStack88[1] = 3; + auStack88[2] = 4; + auStack88[3] = 6; + iStack76 = 0; + do { + sStack4 = __osContRamWrite(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8), + auStack88[iStack76],(u8 *)param_3,1); + if (sStack4 != 0) { + return sStack4; + } + iStack76 += 1; + } while (iStack76 < 4); + sStack4 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8),1,abStack36); + if (sStack4 == 0) { + iStack76 = 0; + do { + if (*(byte *)((int)param_3 + iStack76) != abStack36[iStack76]) { + return 10; + } + iStack76 += 1; + } while (iStack76 < 0x20); + sStack4 = 0; } - iStack76 += 1; - } while (iStack76 < 0x20); - sStack4 = 0; } - } - return (int)sStack4; + return (int)sStack4; } @@ -20807,52 +20935,52 @@ int __osRepairPackId(int param_1,int param_2,undefined4 *param_3) int __osCheckPackId(int param_1,byte *param_2) { - int iVar1; - int iStack24; - int iStack20; - u16 uStack16; - u16 uStack14; - s32 sStack12; - u16 auStack8 [4]; - - sStack12 = 0; - if (*(char *)(param_1 + 0x65) != '\0') { - *(undefined *)(param_1 + 0x65) = 0; - sStack12 = __osPfsSelectBank((OSPfs *)param_1); - if (sStack12 != 0) { - return sStack12; + int iVar1; + int iStack24; + int iStack20; + u16 uStack16; + u16 uStack14; + s32 sStack12; + u16 auStack8 [4]; + + sStack12 = 0; + if (*(char *)(param_1 + 0x65) != '\0') { + *(undefined *)(param_1 + 0x65) = 0; + sStack12 = __osPfsSelectBank((OSPfs *)param_1); + if (sStack12 != 0) { + return sStack12; + } } - } - auStack8[0] = 1; - auStack8[1] = 3; - auStack8[2] = 4; - auStack8[3] = 6; - iStack20 = 1; - do { - sStack12 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8), - auStack8[iStack20],param_2); - if (sStack12 != 0) { - return sStack12; - } - __osIdCheckSum((u16 *)param_2,&uStack14,&uStack16); - } while (((*(u16 *)(param_2 + 0x1c) != uStack14) || (*(u16 *)(param_2 + 0x1e) != uStack16)) && - (iStack20 += 1, iStack20 < 4)); - if (iStack20 == 4) { - iVar1 = 10; - } - else { - iStack24 = 0; + auStack8[0] = 1; + auStack8[1] = 3; + auStack8[2] = 4; + auStack8[3] = 6; + iStack20 = 1; do { - if ((iStack24 != iStack20) && - (sStack12 = __osContRamWrite(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8), - auStack8[iStack24],param_2,1), sStack12 != 0)) { - return sStack12; - } - iStack24 += 1; - } while (iStack24 < 4); - iVar1 = 0; - } - return iVar1; + sStack12 = __osContRamRead(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8), + auStack8[iStack20],param_2); + if (sStack12 != 0) { + return sStack12; + } + __osIdCheckSum((u16 *)param_2,&uStack14,&uStack16); + } while (((*(u16 *)(param_2 + 0x1c) != uStack14) || (*(u16 *)(param_2 + 0x1e) != uStack16)) && + (iStack20 += 1, iStack20 < 4)); + if (iStack20 == 4) { + iVar1 = 10; + } + else { + iStack24 = 0; + do { + if ((iStack24 != iStack20) && + (sStack12 = __osContRamWrite(*(OSMesgQueue **)(param_1 + 4),*(int *)(param_1 + 8), + auStack8[iStack24],param_2,1), sStack12 != 0)) { + return sStack12; + } + iStack24 += 1; + } while (iStack24 < 4); + iVar1 = 0; + } + return iVar1; } @@ -20860,73 +20988,73 @@ int __osCheckPackId(int param_1,byte *param_2) s32 __osGetId(OSPfs *pfs) { - s32 sVar1; - int iVar2; - undefined4 *puStack80; - undefined4 auStack72 [6]; - ushort uStack48; - undefined4 auStack40 [7]; - u16 uStack12; - u16 uStack10; - u16 uStack8; - u16 uStack6; - int iStack4; - - if (pfs->activebank != '\0') { - pfs->activebank = '\0'; - sVar1 = __osPfsSelectBank(pfs); + s32 sVar1; + int iVar2; + undefined4 *puStack80; + undefined4 auStack72 [6]; + ushort uStack48; + undefined4 auStack40 [7]; + u16 uStack12; + u16 uStack10; + u16 uStack8; + u16 uStack6; + int iStack4; + + if (pfs->activebank != '\0') { + pfs->activebank = '\0'; + sVar1 = __osPfsSelectBank(pfs); + if (sVar1 != 0) { + return sVar1; + } + } + sVar1 = __osContRamRead(pfs->queue,pfs->channel,1,(u8 *)auStack40); if (sVar1 != 0) { - return sVar1; + return sVar1; + } + __osIdCheckSum((u16 *)auStack40,&uStack6,&uStack8); + puStack80 = auStack40; + if ((uStack12 != uStack6) || (uStack10 != uStack8)) { + iVar2 = __osCheckPackId((int)pfs,(byte *)puStack80); + if (iVar2 == 10) { + iVar2 = __osRepairPackId((int)pfs,(int)puStack80,auStack72); + if (iVar2 != 0) { + return iVar2; + } + puStack80 = auStack72; + } + else { + if (iVar2 != 0) { + return iVar2; + } + } + } + if ((*(ushort *)(puStack80 + 6) & 1) == 0) { + iVar2 = __osRepairPackId((int)pfs,(int)puStack80,auStack72); + if (iVar2 != 0) { + return iVar2; + } + puStack80 = auStack72; + if ((uStack48 & 1) == 0) { + return 0xb; + } + } + iStack4 = 0; + do { + pfs->id[iStack4] = *(u8 *)((int)puStack80 + iStack4); + iStack4 += 1; + } while (iStack4 < 0x20); + pfs->version = (uint)*(byte *)((int)puStack80 + 0x1b); + pfs->banks = *(byte *)((int)puStack80 + 0x1a); + pfs->inode_start_page = (uint)pfs->banks * 2 + 3; + pfs->dir_size = 0x10; + pfs->inode_table = 8; + pfs->minode_table = (uint)pfs->banks * 8 + 8; + pfs->dir_table = pfs->minode_table + (uint)pfs->banks * 8; + sVar1 = __osContRamRead(pfs->queue,pfs->channel,7,pfs->label); + if (sVar1 == 0) { + sVar1 = 0; } - } - sVar1 = __osContRamRead(pfs->queue,pfs->channel,1,(u8 *)auStack40); - if (sVar1 != 0) { return sVar1; - } - __osIdCheckSum((u16 *)auStack40,&uStack6,&uStack8); - puStack80 = auStack40; - if ((uStack12 != uStack6) || (uStack10 != uStack8)) { - iVar2 = __osCheckPackId((int)pfs,(byte *)puStack80); - if (iVar2 == 10) { - iVar2 = __osRepairPackId((int)pfs,(int)puStack80,auStack72); - if (iVar2 != 0) { - return iVar2; - } - puStack80 = auStack72; - } - else { - if (iVar2 != 0) { - return iVar2; - } - } - } - if ((*(ushort *)(puStack80 + 6) & 1) == 0) { - iVar2 = __osRepairPackId((int)pfs,(int)puStack80,auStack72); - if (iVar2 != 0) { - return iVar2; - } - puStack80 = auStack72; - if ((uStack48 & 1) == 0) { - return 0xb; - } - } - iStack4 = 0; - do { - pfs->id[iStack4] = *(u8 *)((int)puStack80 + iStack4); - iStack4 += 1; - } while (iStack4 < 0x20); - pfs->version = (uint)*(byte *)((int)puStack80 + 0x1b); - pfs->banks = *(byte *)((int)puStack80 + 0x1a); - pfs->inode_start_page = (uint)pfs->banks * 2 + 3; - pfs->dir_size = 0x10; - pfs->inode_table = 8; - pfs->minode_table = (uint)pfs->banks * 8 + 8; - pfs->dir_table = pfs->minode_table + (uint)pfs->banks * 8; - sVar1 = __osContRamRead(pfs->queue,pfs->channel,7,pfs->label); - if (sVar1 == 0) { - sVar1 = 0; - } - return sVar1; } @@ -20934,30 +21062,31 @@ s32 __osGetId(OSPfs *pfs) s32 __osCheckId(OSPfs *pfs) { - s32 sVar1; - u8 auStack36 [32]; - int iStack4; - - if (pfs->activebank != '\0') { - pfs->activebank = '\0'; - sVar1 = __osPfsSelectBank(pfs); - if (sVar1 != 0) { - return sVar1; + s32 sVar1; + u8 auStack36 [32]; + int iStack4; + + if (pfs->activebank != '\0') { + pfs->activebank = '\0'; + sVar1 = __osPfsSelectBank(pfs); + if (sVar1 != 0) { + return sVar1; + } } - } - sVar1 = __osContRamRead(pfs->queue,pfs->channel,1,auStack36); - if ((sVar1 == 0) || - ((sVar1 == 2 && (sVar1 = __osContRamRead(pfs->queue,pfs->channel,1,auStack36), sVar1 == 0)))) { - iStack4 = 0; - do { - if (auStack36[iStack4] != pfs->id[iStack4]) { - return 2; - } - iStack4 += 1; - } while (iStack4 < 0x20); - sVar1 = 0; - } - return sVar1; + sVar1 = __osContRamRead(pfs->queue,pfs->channel,1,auStack36); + if ((sVar1 == 0) || + ((sVar1 == 2 && (sVar1 = __osContRamRead(pfs->queue,pfs->channel,1,auStack36), sVar1 == 0)))) + { + iStack4 = 0; + do { + if (auStack36[iStack4] != pfs->id[iStack4]) { + return 2; + } + iStack4 += 1; + } while (iStack4 < 0x20); + sVar1 = 0; + } + return sVar1; } @@ -20965,83 +21094,84 @@ s32 __osCheckId(OSPfs *pfs) s32 __osPfsRWInode(OSPfs *pfs,__OSInode *inode,u8 flag,u8 bank) { - short sVar1; - s32 sVar2; - u16 uVar3; - __OSInodeUnit *buffer; - int iStack16; - s32 sStack12; - int iStack8; - - if (pfs->activebank != '\0') { - pfs->activebank = '\0'; - sVar2 = __osPfsSelectBank(pfs); - if (sVar2 != 0) { - return sVar2; + short sVar1; + s32 sVar2; + u16 uVar3; + __OSInodeUnit *buffer; + int iStack16; + s32 sStack12; + int iStack8; + + if (pfs->activebank != '\0') { + pfs->activebank = '\0'; + sVar2 = __osPfsSelectBank(pfs); + if (sVar2 != 0) { + return sVar2; + } + } + if (bank == '\0') { + iStack16 = pfs->inode_start_page; + } + else { + iStack16 = 1; } - } - if (bank == '\0') { - iStack16 = pfs->inode_start_page; - } - else { - iStack16 = 1; - } - if (flag == '\x01') { - uVar3 = __osSumcalc((u8 *)(inode->inode_page + iStack16),iStack16 * -2 + 0x100); - *(undefined *)((int)inode->inode_page + 1) = (char)uVar3; - } - iStack8 = 0; - do { - buffer = inode->inode_page + iStack8 * 0x10; - sVar1 = (short)iStack8; if (flag == '\x01') { - __osContRamWrite(pfs->queue,pfs->channel,(short)pfs->inode_table + (ushort)bank * 8 + sVar1, - (u8 *)buffer,0); - sStack12 = __osContRamWrite(pfs->queue,pfs->channel, - (short)pfs->minode_table + (ushort)bank * 8 + sVar1,(u8 *)buffer,0 - ); + uVar3 = __osSumcalc((u8 *)(inode->inode_page + iStack16),iStack16 * -2 + 0x100); + *(undefined *)((int)inode->inode_page + 1) = (char)uVar3; } - else { - sStack12 = __osContRamRead(pfs->queue,pfs->channel, - (short)pfs->inode_table + (ushort)bank * 8 + sVar1,(u8 *)buffer); - } - if (sStack12 != 0) { - return sStack12; - } - iStack8 += 1; - } while (iStack8 < 8); - if (flag == '\0') { - uVar3 = __osSumcalc((u8 *)(inode->inode_page + iStack16),iStack16 * -2 + 0x100); - if (*(char *)((int)inode->inode_page + 1) == (char)uVar3) { - iStack8 = 0; - do { - __osContRamWrite(pfs->queue,pfs->channel, - (short)pfs->minode_table + (ushort)bank * 8 + (short)iStack8, - (u8 *)(inode->inode_page + iStack8 * 0x10),0); + iStack8 = 0; + do { + buffer = inode->inode_page + iStack8 * 0x10; + sVar1 = (short)iStack8; + if (flag == '\x01') { + __osContRamWrite(pfs->queue,pfs->channel, + (short)pfs->inode_table + (ushort)bank * 8 + sVar1,(u8 *)buffer,0); + sStack12 = __osContRamWrite(pfs->queue,pfs->channel, + (short)pfs->minode_table + (ushort)bank * 8 + sVar1, + (u8 *)buffer,0); + } + else { + sStack12 = __osContRamRead(pfs->queue,pfs->channel, + (short)pfs->inode_table + (ushort)bank * 8 + sVar1, + (u8 *)buffer); + } + if (sStack12 != 0) { + return sStack12; + } iStack8 += 1; - } while (iStack8 < 8); + } while (iStack8 < 8); + if (flag == '\0') { + uVar3 = __osSumcalc((u8 *)(inode->inode_page + iStack16),iStack16 * -2 + 0x100); + if (*(char *)((int)inode->inode_page + 1) == (char)uVar3) { + iStack8 = 0; + do { + __osContRamWrite(pfs->queue,pfs->channel, + (short)pfs->minode_table + (ushort)bank * 8 + (short)iStack8, + (u8 *)(inode->inode_page + iStack8 * 0x10),0); + iStack8 += 1; + } while (iStack8 < 8); + } + else { + iStack8 = 0; + do { + __osContRamRead(pfs->queue,pfs->channel, + (short)pfs->minode_table + (ushort)bank * 8 + (short)iStack8, + (u8 *)(inode->inode_page + iStack8 * 0x10)); + iStack8 += 1; + } while (iStack8 < 8); + if (*(char *)((int)inode->inode_page + 1) != (char)uVar3) { + return 3; + } + iStack8 = 0; + do { + __osContRamWrite(pfs->queue,pfs->channel, + (short)pfs->inode_table + (ushort)bank * 8 + (short)iStack8, + (u8 *)(inode->inode_page + iStack8 * 0x10),0); + iStack8 += 1; + } while (iStack8 < 8); + } } - else { - iStack8 = 0; - do { - __osContRamRead(pfs->queue,pfs->channel, - (short)pfs->minode_table + (ushort)bank * 8 + (short)iStack8, - (u8 *)(inode->inode_page + iStack8 * 0x10)); - iStack8 += 1; - } while (iStack8 < 8); - if (*(char *)((int)inode->inode_page + 1) != (char)uVar3) { - return 3; - } - iStack8 = 0; - do { - __osContRamWrite(pfs->queue,pfs->channel, - (short)pfs->inode_table + (ushort)bank * 8 + (short)iStack8, - (u8 *)(inode->inode_page + iStack8 * 0x10),0); - iStack8 += 1; - } while (iStack8 < 8); - } - } - return 0; + return 0; } @@ -21049,17 +21179,17 @@ s32 __osPfsRWInode(OSPfs *pfs,__OSInode *inode,u8 flag,u8 bank) s32 __osPfsSelectBank(OSPfs *pfs) { - s32 sVar1; - int iStack36; - u8 auStack32 [32]; - - iStack36 = 0; - do { - auStack32[iStack36] = pfs->activebank; - iStack36 += 1; - } while (iStack36 < 0x20); - sVar1 = __osContRamWrite(pfs->queue,pfs->channel,0x400,auStack32,0); - return sVar1; + s32 sVar1; + int iStack36; + u8 auStack32 [32]; + + iStack36 = 0; + do { + auStack32[iStack36] = pfs->activebank; + iStack36 += 1; + } while (iStack36 < 0x20); + sVar1 = __osContRamWrite(pfs->queue,pfs->channel,0x400,auStack32,0); + return sVar1; } @@ -21069,7 +21199,7 @@ s32 __osPfsSelectBank(OSPfs *pfs) int __osSiDeviceBusy(void) { - return (int)(uint)((_SI_STATUS_REG & 3) != 0); + return (int)(uint)((_SI_STATUS_REG & 3) != 0); } @@ -21077,14 +21207,14 @@ int __osSiDeviceBusy(void) void guNormalize(float *x,float *y,float *z) { - float m; - - m = sqrtf(*z * *z + *x * *x + *y * *y); - m = 1.00000000 / m; - *x = *x * m; - *y = *y * m; - *z = *z * m; - return; + float m; + + m = sqrtf(*z * *z + *x * *x + *y * *y); + m = 1.00000000 / m; + *x = *x * m; + *y = *y * m; + *z = *z * m; + return; } @@ -21092,7 +21222,7 @@ void guNormalize(float *x,float *y,float *z) float sqrtf(float __x) { - return SQRT(__x); + return SQRT(__x); } @@ -21102,25 +21232,25 @@ float sqrtf(float __x) OSPiHandle * osLeoDiskInit(void) { - u32 mask; - - LeoDiskHandle.type = '\x02'; - LeoDiskHandle.baseAddress = 0xa5000000; - LeoDiskHandle.latency = '\x03'; - LeoDiskHandle.pulse = '\x06'; - LeoDiskHandle.pageSize = '\x06'; - LeoDiskHandle.relDuration = '\x02'; - _PI_BSD_DOM2_LAT_REG = 3; - _PI_BSD_DOM2_PWD_REG = 6; - _PI_BSD_DOM2_PGS_REG = 6; - _PI_BSD_DOM2_RLS_REG = 2; - bzero(&LeoDiskHandle.transferInfo,0x60); - mask = __osDisableInt(); - LeoDiskHandle.next = (OSPiHandle_s *)__osPiTable; - __osPiTable = &LeoDiskHandle; - __osDiskHandle = &LeoDiskHandle; - __osRestoreInt(mask); - return &LeoDiskHandle; + u32 mask; + + LeoDiskHandle.type = '\x02'; + LeoDiskHandle.baseAddress = 0xa5000000; + LeoDiskHandle.latency = '\x03'; + LeoDiskHandle.pulse = '\x06'; + LeoDiskHandle.pageSize = '\x06'; + LeoDiskHandle.relDuration = '\x02'; + _PI_BSD_DOM2_LAT_REG = 3; + _PI_BSD_DOM2_PWD_REG = 6; + _PI_BSD_DOM2_PGS_REG = 6; + _PI_BSD_DOM2_RLS_REG = 2; + bzero(&LeoDiskHandle.transferInfo,0x60); + mask = __osDisableInt(); + LeoDiskHandle.next = (OSPiHandle_s *)__osPiTable; + __osPiTable = &LeoDiskHandle; + __osDiskHandle = &LeoDiskHandle; + __osRestoreInt(mask); + return &LeoDiskHandle; } @@ -21128,8 +21258,8 @@ OSPiHandle * osLeoDiskInit(void) void __osSetCompare(u32 param_1) { - setCopReg(0,Compare,(longlong)(int)param_1,0); - return; + setCopReg(0,Compare,(longlong)(int)param_1,0); + return; } @@ -21137,13 +21267,13 @@ void __osSetCompare(u32 param_1) void alFilterNew(ALFilter *f,ALCmdHandler h,ALSetParam s,int type) { - *(undefined4 *)f = 0; - *(ALCmdHandler *)(f + 4) = h; - *(ALSetParam *)(f + 8) = s; - *(undefined2 *)(f + 0xc) = 0; - *(undefined2 *)(f + 0xe) = 0; - *(int *)(f + 0x10) = type; - return; + *(undefined4 *)f = 0; + *(ALCmdHandler *)(f + 4) = h; + *(ALSetParam *)(f + 8) = s; + *(undefined2 *)(f + 0xc) = 0; + *(undefined2 *)(f + 0xe) = 0; + *(int *)(f + 0x10) = type; + return; } @@ -21151,31 +21281,31 @@ void alFilterNew(ALFilter *f,ALCmdHandler h,ALSetParam s,int type) ulonglong _doModFunc(void) { - int in_a0_lo; - int in_a1_lo; - double dVar1; - float fVar2; - ulonglong in_f4; - uint in_register_00001040; - - *(float *)(in_a0_lo + 0x14) = - *(float *)(in_a0_lo + 0x14) + *(float *)(in_a0_lo + 0x10) * (float)in_a1_lo; - dVar1 = (double)*(float *)(in_a0_lo + 0x14); - if ((double)(in_f4 & 0xffffffff00000000) < dVar1) { - *(float *)(in_a0_lo + 0x14) = (float)(dVar1 - (double)((ulonglong)in_register_00001040 << 0x20)) - ; - } - else { - *(float *)(in_a0_lo + 0x14) = *(float *)(in_a0_lo + 0x14); - } - fVar2 = *(float *)(in_a0_lo + 0x14); - if (fVar2 < 0.00000000) { - fVar2 = -fVar2; - } - return (ulonglong)dVar1 & 0xffffffff00000000 | - (ulonglong) - (uint)(*(float *)(in_a0_lo + 0x1c) * - (float)((double)fVar2 - (double)((ulonglong)in_register_00001040 << 0x20))); + int in_a0_lo; + int in_a1_lo; + double dVar1; + float fVar2; + ulonglong in_f4; + uint in_register_00001040; + + *(float *)(in_a0_lo + 0x14) = + *(float *)(in_a0_lo + 0x14) + *(float *)(in_a0_lo + 0x10) * (float)in_a1_lo; + dVar1 = (double)*(float *)(in_a0_lo + 0x14); + if ((double)(in_f4 & 0xffffffff00000000) < dVar1) { + *(float *)(in_a0_lo + 0x14) = + (float)(dVar1 - (double)((ulonglong)in_register_00001040 << 0x20)); + } + else { + *(float *)(in_a0_lo + 0x14) = *(float *)(in_a0_lo + 0x14); + } + fVar2 = *(float *)(in_a0_lo + 0x14); + if (fVar2 < 0.00000000) { + fVar2 = -fVar2; + } + return (ulonglong)dVar1 & 0xffffffff00000000 | + (ulonglong) + (uint)(*(float *)(in_a0_lo + 0x1c) * + (float)((double)fVar2 - (double)((ulonglong)in_register_00001040 << 0x20))); } @@ -21183,19 +21313,19 @@ ulonglong _doModFunc(void) uint * __filterBuffer(int param_1,uint param_2,uint param_3,uint *param_4) { - u32 uVar1; - - param_4[1] = (param_2 & 0xffff) << 0x10 | (param_3 & 0x7fff) << 1; - *param_4 = param_2 & 0xffff | 0x8000000; - param_4[2] = 0xb000020; - uVar1 = osVirtualToPhysical((void *)(param_1 + 8)); - param_4[3] = uVar1; - param_4[4] = (*(uint *)(param_1 + 0x2c) & 0xff) << 0x10 | 0xe000000 | - (int)*(short *)(param_1 + 2) & 0xffffU; - uVar1 = osVirtualToPhysical(*(void **)(param_1 + 0x28)); - param_4[5] = uVar1; - *(undefined4 *)(param_1 + 0x2c) = 0; - return param_4 + 6; + u32 uVar1; + + param_4[1] = (param_2 & 0xffff) << 0x10 | (param_3 & 0x7fff) << 1; + *param_4 = param_2 & 0xffff | 0x8000000; + param_4[2] = 0xb000020; + uVar1 = osVirtualToPhysical((void *)(param_1 + 8)); + param_4[3] = uVar1; + param_4[4] = (*(uint *)(param_1 + 0x2c) & 0xff) << 0x10 | 0xe000000 | + (int)*(short *)(param_1 + 2) & 0xffffU; + uVar1 = osVirtualToPhysical(*(void **)(param_1 + 0x28)); + param_4[5] = uVar1; + *(undefined4 *)(param_1 + 0x2c) = 0; + return param_4 + 6; } @@ -21203,45 +21333,45 @@ uint * __filterBuffer(int param_1,uint param_2,uint param_3,uint *param_4) undefined4 * __saveBuffer(int param_1,uint param_2,int param_3,int param_4,undefined4 *param_5) { - u32 uVar1; - uint uVar2; - void *pvVar3; - uint uVar4; - int iVar5; - undefined4 *puVar6; - - iVar5 = *(int *)(param_1 + 0x1c) * 2; - pvVar3 = (void *)(*(uint *)(param_1 + 0x14) + iVar5); - if (param_2 < *(uint *)(param_1 + 0x14)) { - param_2 += iVar5; - } - uVar2 = param_4 * 2; - if (pvVar3 < (void *)(uVar2 + param_2)) { - *param_5 = 0x8000000; - uVar4 = ((int)((int)pvVar3 - param_2) >> 1) * 2; - param_5[1] = param_3 << 0x10 | uVar4 & 0xffff; - param_5[2] = 0x6000000; - uVar1 = osVirtualToPhysical((void *)param_2); - param_5[3] = uVar1; - param_5[4] = 0x8000000; - param_5[5] = (uVar4 + param_3) * 0x10000 | - ((int)((int)(void *)(uVar2 + param_2) - (int)pvVar3) >> 1 & 0x7fffU) << 1; - param_5[6] = 0x6000000; - uVar1 = osVirtualToPhysical(*(void **)(param_1 + 0x14)); - param_5[7] = uVar1; - param_5[9] = uVar2 & 0xffff; - param_5[8] = 0x8000000; - puVar6 = param_5 + 10; - } - else { - *param_5 = 0x8000000; - param_5[1] = param_3 << 0x10 | uVar2 & 0xffff; - param_5[2] = 0x6000000; - puVar6 = param_5 + 4; - uVar1 = osVirtualToPhysical((void *)param_2); - param_5[3] = uVar1; - } - return puVar6; + u32 uVar1; + uint uVar2; + void *pvVar3; + uint uVar4; + int iVar5; + undefined4 *puVar6; + + iVar5 = *(int *)(param_1 + 0x1c) * 2; + pvVar3 = (void *)(*(uint *)(param_1 + 0x14) + iVar5); + if (param_2 < *(uint *)(param_1 + 0x14)) { + param_2 += iVar5; + } + uVar2 = param_4 * 2; + if (pvVar3 < (void *)(uVar2 + param_2)) { + *param_5 = 0x8000000; + uVar4 = ((int)((int)pvVar3 - param_2) >> 1) * 2; + param_5[1] = param_3 << 0x10 | uVar4 & 0xffff; + param_5[2] = 0x6000000; + uVar1 = osVirtualToPhysical((void *)param_2); + param_5[3] = uVar1; + param_5[4] = 0x8000000; + param_5[5] = (uVar4 + param_3) * 0x10000 | + ((int)((int)(void *)(uVar2 + param_2) - (int)pvVar3) >> 1 & 0x7fffU) << 1; + param_5[6] = 0x6000000; + uVar1 = osVirtualToPhysical(*(void **)(param_1 + 0x14)); + param_5[7] = uVar1; + param_5[9] = uVar2 & 0xffff; + param_5[8] = 0x8000000; + puVar6 = param_5 + 10; + } + else { + *param_5 = 0x8000000; + param_5[1] = param_3 << 0x10 | uVar2 & 0xffff; + param_5[2] = 0x6000000; + puVar6 = param_5 + 4; + uVar1 = osVirtualToPhysical((void *)param_2); + param_5[3] = uVar1; + } + return puVar6; } @@ -21249,44 +21379,44 @@ undefined4 * __saveBuffer(int param_1,uint param_2,int param_3,int param_4,undef uint * __loadBuffer(int param_1,uint param_2,uint param_3,int param_4,uint *param_5) { - u32 uVar1; - uint uVar2; - void *pvVar3; - int iVar4; - uint uVar5; - uint *puVar6; - - iVar4 = *(int *)(param_1 + 0x1c) * 2; - pvVar3 = (void *)(*(uint *)(param_1 + 0x14) + iVar4); - if (param_2 < *(uint *)(param_1 + 0x14)) { - param_2 += iVar4; - } - uVar2 = param_4 * 2; - if (pvVar3 < (void *)(uVar2 + param_2)) { - uVar5 = ((int)((int)pvVar3 - param_2) >> 1) * 2; - *param_5 = param_3 & 0xffff | 0x8000000; - param_5[1] = uVar5 & 0xffff; - param_5[2] = 0x4000000; - uVar1 = osVirtualToPhysical((void *)param_2); - param_5[3] = uVar1; - param_5[4] = uVar5 + param_3 & 0xffff | 0x8000000; - param_5[5] = ((int)((int)(void *)(uVar2 + param_2) - (int)pvVar3) >> 1 & 0x7fffU) << 1; - param_5[6] = 0x4000000; - puVar6 = param_5 + 8; - uVar1 = osVirtualToPhysical(*(void **)(param_1 + 0x14)); - param_5[7] = uVar1; - } - else { - param_5[1] = uVar2 & 0xffff; - *param_5 = param_3 & 0xffff | 0x8000000; - param_5[2] = 0x4000000; - puVar6 = param_5 + 4; - uVar1 = osVirtualToPhysical((void *)param_2); - param_5[3] = uVar1; - } - *puVar6 = 0x8000000; - puVar6[1] = uVar2 & 0xffff; - return puVar6 + 2; + u32 uVar1; + uint uVar2; + void *pvVar3; + int iVar4; + uint uVar5; + uint *puVar6; + + iVar4 = *(int *)(param_1 + 0x1c) * 2; + pvVar3 = (void *)(*(uint *)(param_1 + 0x14) + iVar4); + if (param_2 < *(uint *)(param_1 + 0x14)) { + param_2 += iVar4; + } + uVar2 = param_4 * 2; + if (pvVar3 < (void *)(uVar2 + param_2)) { + uVar5 = ((int)((int)pvVar3 - param_2) >> 1) * 2; + *param_5 = param_3 & 0xffff | 0x8000000; + param_5[1] = uVar5 & 0xffff; + param_5[2] = 0x4000000; + uVar1 = osVirtualToPhysical((void *)param_2); + param_5[3] = uVar1; + param_5[4] = uVar5 + param_3 & 0xffff | 0x8000000; + param_5[5] = ((int)((int)(void *)(uVar2 + param_2) - (int)pvVar3) >> 1 & 0x7fffU) << 1; + param_5[6] = 0x4000000; + puVar6 = param_5 + 8; + uVar1 = osVirtualToPhysical(*(void **)(param_1 + 0x14)); + param_5[7] = uVar1; + } + else { + param_5[1] = uVar2 & 0xffff; + *param_5 = param_3 & 0xffff | 0x8000000; + param_5[2] = 0x4000000; + puVar6 = param_5 + 4; + uVar1 = osVirtualToPhysical((void *)param_2); + param_5[3] = uVar1; + } + *puVar6 = 0x8000000; + puVar6[1] = uVar2 & 0xffff; + return puVar6 + 2; } @@ -21294,44 +21424,44 @@ uint * __loadBuffer(int param_1,uint param_2,uint param_3,int param_4,uint *para uint * __loadOutputBuffer(int param_1,int *param_2,uint param_3,undefined8 param_4,uint *param_5) { - uint *puVar1; - u32 uVar2; - uint *puVar3; - uint uVar4; - int iVar5; - float fVar6; - uint in_register_00001020; - float fVar7; - int iVar8; - - if (param_2[9] == 0) { - puVar3 = __loadBuffer(param_1,*(int *)(param_1 + 0x18) + param_2[1] * -2,param_3,param_4._4_4_, - param_5); - } - else { - iVar5 = param_2[1]; - iVar8 = *param_2; - fVar6 = (float)_doModFunc(); - fVar6 = (float)((double)((ulonglong)in_register_00001020 << 0x20) - - (double)((float)(int)((fVar6 / (float)(iVar5 - iVar8)) * 32768.00000000) / - 32768.00000000)); - fVar7 = *(float *)(param_2[9] + 0x20) + fVar6 * (float)param_4._4_4_; - iVar8 = (int)fVar7; - *(float *)(param_2[9] + 0x20) = fVar7 - (float)iVar8; - uVar4 = *(int *)(param_1 + 0x18) + (param_2[1] - param_2[6]) * -2; - iVar5 = (int)(uVar4 & 7) >> 1; - puVar1 = __loadBuffer(param_1,uVar4 + iVar5 * -2,0x280,iVar8 + iVar5,param_5); - *puVar1 = iVar5 * 2 + 0x280U | 0x8000000; - puVar1[1] = param_3 << 0x10 | (param_4._4_4_ & 0x7fff) << 1; - puVar3 = puVar1 + 4; - puVar1[2] = (*(uint *)(param_2[9] + 0x24) & 0xff) << 0x10 | 0x5000000 | - (int)(fVar6 * 32768.00000000) & 0xffffU; - uVar2 = osVirtualToPhysical(*(void **)(param_2[9] + 0x14)); - puVar1[3] = uVar2; - *(undefined4 *)(param_2[9] + 0x24) = 0; - param_2[6] = (param_2[6] + iVar8) - param_4._4_4_; - } - return puVar3; + uint *puVar1; + u32 uVar2; + uint *puVar3; + uint uVar4; + int iVar5; + float fVar6; + uint in_register_00001020; + float fVar7; + int iVar8; + + if (param_2[9] == 0) { + puVar3 = __loadBuffer(param_1,*(int *)(param_1 + 0x18) + param_2[1] * -2,param_3, + param_4._4_4_,param_5); + } + else { + iVar5 = param_2[1]; + iVar8 = *param_2; + fVar6 = (float)_doModFunc(); + fVar6 = (float)((double)((ulonglong)in_register_00001020 << 0x20) - + (double)((float)(int)((fVar6 / (float)(iVar5 - iVar8)) * 32768.00000000) / + 32768.00000000)); + fVar7 = *(float *)(param_2[9] + 0x20) + fVar6 * (float)param_4._4_4_; + iVar8 = (int)fVar7; + *(float *)(param_2[9] + 0x20) = fVar7 - (float)iVar8; + uVar4 = *(int *)(param_1 + 0x18) + (param_2[1] - param_2[6]) * -2; + iVar5 = (int)(uVar4 & 7) >> 1; + puVar1 = __loadBuffer(param_1,uVar4 + iVar5 * -2,0x280,iVar8 + iVar5,param_5); + *puVar1 = iVar5 * 2 + 0x280U | 0x8000000; + puVar1[1] = param_3 << 0x10 | (param_4._4_4_ & 0x7fff) << 1; + puVar3 = puVar1 + 4; + puVar1[2] = (*(uint *)(param_2[9] + 0x24) & 0xff) << 0x10 | 0x5000000 | + (int)(fVar6 * 32768.00000000) & 0xffffU; + uVar2 = osVirtualToPhysical(*(void **)(param_2[9] + 0x14)); + puVar1[3] = uVar2; + *(undefined4 *)(param_2[9] + 0x24) = 0; + param_2[6] = (param_2[6] + iVar8) - param_4._4_4_; + } + return puVar3; } @@ -21339,80 +21469,80 @@ uint * __loadOutputBuffer(int param_1,int *param_2,uint param_3,undefined8 param s32 alFxParamHdl(void *filter,s32 paramID,void *param) { - int iVar1; - undefined2 *puVar2; - uint uVar3; - undefined2 uVar4; - int *piVar5; - int iVar6; - ulonglong in_f4; - double dVar7; - - uVar3 = paramID - 2; - iVar1 = *(int *)param; - if ((uVar3 & 7) < 8) { - uVar4 = (undefined2)iVar1; - iVar6 = (int)uVar3 >> 3; - switch(uVar3 & 7) { - case 0: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - *(int *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28) = iVar1; - return 0; - case 1: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - *(int *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 4) = iVar1; - return 0; - case 2: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - *(undefined2 *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 10) = uVar4; - return 0; - case 3: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - *(undefined2 *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 8) = uVar4; - return 0; - case 4: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - *(undefined2 *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 0xc) = uVar4; - return 0; - case 5: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - *(float *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 0x10) = - (float)iVar1 / dbl_80029D30._0_4_; - return 0; - case 6: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - piVar5 = (int *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28); - dVar7 = (double)(piVar5[1] - *piVar5); - if (piVar5[1] - *piVar5 < 0) { - dVar7 = dVar7 + (double)(in_f4 & 0xffffffff00000000); - } - *(float *)(piVar5 + 7) = (float)(dVar7 * ((double)iVar1 / dbl_80029D38)); - return 0; - case 7: - if ((int)uVar3 < 0) { - iVar6 = paramID + 5 >> 3; - } - puVar2 = *(undefined2 **)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 0x20); - if (puVar2 != NULL) { - *puVar2 = uVar4; - } + int iVar1; + undefined2 *puVar2; + uint uVar3; + undefined2 uVar4; + int *piVar5; + int iVar6; + ulonglong in_f4; + double dVar7; + + uVar3 = paramID - 2; + iVar1 = *(int *)param; + if ((uVar3 & 7) < 8) { + uVar4 = (undefined2)iVar1; + iVar6 = (int)uVar3 >> 3; + switch(uVar3 & 7) { + case 0: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + *(int *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28) = iVar1; + return 0; + case 1: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + *(int *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 4) = iVar1; + return 0; + case 2: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + *(undefined2 *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 10) = uVar4; + return 0; + case 3: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + *(undefined2 *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 8) = uVar4; + return 0; + case 4: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + *(undefined2 *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 0xc) = uVar4; + return 0; + case 5: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + *(float *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 0x10) = + (float)iVar1 / dbl_80029D30._0_4_; + return 0; + case 6: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + piVar5 = (int *)(*(int *)((int)filter + 0x20) + iVar6 * 0x28); + dVar7 = (double)(piVar5[1] - *piVar5); + if (piVar5[1] - *piVar5 < 0) { + dVar7 = dVar7 + (double)(in_f4 & 0xffffffff00000000); + } + *(float *)(piVar5 + 7) = (float)(dVar7 * ((double)iVar1 / dbl_80029D38)); + return 0; + case 7: + if ((int)uVar3 < 0) { + iVar6 = paramID + 5 >> 3; + } + puVar2 = *(undefined2 **)(*(int *)((int)filter + 0x20) + iVar6 * 0x28 + 0x20); + if (puVar2 != NULL) { + *puVar2 = uVar4; + } + } } - } - return 0; + return 0; } @@ -21420,10 +21550,10 @@ s32 alFxParamHdl(void *filter,s32 paramID,void *param) s32 alFxParam(void *filter,s32 paramID,void *param) { - if (paramID == 1) { - *(void **)filter = param; - } - return 0; + if (paramID == 1) { + *(void **)filter = param; + } + return 0; } @@ -21431,104 +21561,105 @@ s32 alFxParam(void *filter,s32 paramID,void *param) longlong _alFxPull(void *filter,s16 *outp,s32 outCount,s32 sampleOffset,Acmd *p) { - undefined4 *puVar1; - uint *puVar2; - int iVar3; - uint uVar4; - uint uVar5; - int *piVar6; - short sVar7; - uint uVar8; - longlong lVar9; - uint uVar10; - uint uVar11; - uint uVar12; - - puVar1 = (undefined4 *) - (**(code **)(*(int *)filter + 4))(*(int *)filter,outp,(longlong)outCount,sampleOffset,p); - uVar5 = outCount * 2; - *puVar1 = 0x8000000; - puVar1[1] = uVar5 & 0xffff; - puVar1[2] = 0xc00da83; - puVar1[3] = 0x6c006c0; - puVar1[4] = 0xc005a82; - puVar1[5] = 0x80006c0; - uVar4 = 0; - uVar10 = 0x140; - puVar1 = __saveBuffer((int)filter,*(uint *)((int)filter + 0x18),0x6c0,outCount,puVar1 + 6); - uVar11 = 0; - *puVar1 = 0x2000800; - puVar1[1] = uVar5; - puVar2 = puVar1 + 2; - lVar9 = 0; - if (*(char *)((int)filter + 0x24) == '\0') { - iVar3 = *(int *)((int)filter + 0x1c); - } - else { - iVar3 = *(int *)((int)filter + 0x18); - do { - piVar6 = (int *)(*(int *)((int)filter + 0x20) + (int)lVar9 * 0x28); - uVar8 = iVar3 + *piVar6 * -2; - uVar12 = iVar3 + piVar6[1] * -2; - if (uVar8 == uVar11) { - sVar7 = (short)uVar4; - uVar4 = SEXT24((short)uVar10); - uVar10 = SEXT24(sVar7); - } - else { - puVar2 = __loadBuffer((int)filter,uVar8,uVar4,outCount,puVar2); - } - puVar2 = __loadOutputBuffer((int)filter,piVar6,uVar10,(longlong)outCount,puVar2); - if (*(short *)(piVar6 + 2) == 0) { + undefined4 *puVar1; + uint *puVar2; + int iVar3; + uint uVar4; + uint uVar5; + int *piVar6; + short sVar7; + uint uVar8; + longlong lVar9; + uint uVar10; + uint uVar11; + uint uVar12; + + puVar1 = (undefined4 *) + (**(code **)(*(int *)filter + 4)) + (*(int *)filter,outp,(longlong)outCount,sampleOffset,p); + uVar5 = outCount * 2; + *puVar1 = 0x8000000; + puVar1[1] = uVar5 & 0xffff; + puVar1[2] = 0xc00da83; + puVar1[3] = 0x6c006c0; + puVar1[4] = 0xc005a82; + puVar1[5] = 0x80006c0; + uVar4 = 0; + uVar10 = 0x140; + puVar1 = __saveBuffer((int)filter,*(uint *)((int)filter + 0x18),0x6c0,outCount,puVar1 + 6); + uVar11 = 0; + *puVar1 = 0x2000800; + puVar1[1] = uVar5; + puVar2 = puVar1 + 2; + lVar9 = 0; + if (*(char *)((int)filter + 0x24) == '\0') { + iVar3 = *(int *)((int)filter + 0x1c); + } + else { + iVar3 = *(int *)((int)filter + 0x18); + do { + piVar6 = (int *)(*(int *)((int)filter + 0x20) + (int)lVar9 * 0x28); + uVar8 = iVar3 + *piVar6 * -2; + uVar12 = iVar3 + piVar6[1] * -2; + if (uVar8 == uVar11) { + sVar7 = (short)uVar4; + uVar4 = SEXT24((short)uVar10); + uVar10 = SEXT24(sVar7); + } + else { + puVar2 = __loadBuffer((int)filter,uVar8,uVar4,outCount,puVar2); + } + puVar2 = __loadOutputBuffer((int)filter,piVar6,uVar10,(longlong)outCount,puVar2); + if (*(short *)(piVar6 + 2) == 0) { LAB_700203b0: - sVar7 = *(short *)((int)piVar6 + 10); - } - else { - *puVar2 = (int)*(short *)(piVar6 + 2) & 0xffffU | 0xc000000; - puVar2[1] = uVar4 << 0x10 | uVar10; - puVar2 = puVar2 + 2; - if (piVar6[9] == 0) { - if (piVar6[8] == 0) { - puVar2 = __saveBuffer((int)filter,uVar12,uVar10,outCount,puVar2); - } - goto LAB_700203b0; - } - sVar7 = *(short *)((int)piVar6 + 10); - } - if (sVar7 != 0) { - *puVar2 = (int)sVar7 & 0xffffU | 0xc000000; - puVar2[1] = uVar10 << 0x10 | uVar4; - puVar2 = __saveBuffer((int)filter,uVar8,uVar4,outCount,puVar2 + 2); - } - if (piVar6[8] == 0) { - iVar3 = piVar6[9]; - } - else { - puVar2 = __filterBuffer(piVar6[8],uVar10,outCount,puVar2); - iVar3 = piVar6[9]; - } - if (iVar3 == 0) { - puVar2 = __saveBuffer((int)filter,uVar12,uVar10,outCount,puVar2); - } - lVar9 = (longlong)(((int)lVar9 + 1) * 0x10000 >> 0x10); - if (*(short *)(piVar6 + 3) != 0) { - *puVar2 = (int)*(short *)(piVar6 + 3) & 0xffffU | 0xc000000; - puVar2[1] = uVar10 << 0x10 | 0x800; - puVar2 = puVar2 + 2; - } - iVar3 = *(int *)((int)filter + 0x18); - uVar11 = iVar3 + piVar6[1] * 2; - } while (lVar9 < (longlong)(ulonglong)*(byte *)((int)filter + 0x24)); - iVar3 = *(int *)((int)filter + 0x1c); - } - uVar11 = *(int *)((int)filter + 0x18) + uVar5; - *(uint *)((int)filter + 0x18) = uVar11; - if ((uint)(*(int *)((int)filter + 0x14) + iVar3 * 2) < uVar11) { - *(int *)((int)filter + 0x18) = uVar11 + iVar3 * -2; - } - *puVar2 = 0xa000800; - puVar2[1] = uVar5 & 0xffff | 0x6c00000; - return (longlong)(int)(puVar2 + 2); + sVar7 = *(short *)((int)piVar6 + 10); + } + else { + *puVar2 = (int)*(short *)(piVar6 + 2) & 0xffffU | 0xc000000; + puVar2[1] = uVar4 << 0x10 | uVar10; + puVar2 = puVar2 + 2; + if (piVar6[9] == 0) { + if (piVar6[8] == 0) { + puVar2 = __saveBuffer((int)filter,uVar12,uVar10,outCount,puVar2); + } + goto LAB_700203b0; + } + sVar7 = *(short *)((int)piVar6 + 10); + } + if (sVar7 != 0) { + *puVar2 = (int)sVar7 & 0xffffU | 0xc000000; + puVar2[1] = uVar10 << 0x10 | uVar4; + puVar2 = __saveBuffer((int)filter,uVar8,uVar4,outCount,puVar2 + 2); + } + if (piVar6[8] == 0) { + iVar3 = piVar6[9]; + } + else { + puVar2 = __filterBuffer(piVar6[8],uVar10,outCount,puVar2); + iVar3 = piVar6[9]; + } + if (iVar3 == 0) { + puVar2 = __saveBuffer((int)filter,uVar12,uVar10,outCount,puVar2); + } + lVar9 = (longlong)(((int)lVar9 + 1) * 0x10000 >> 0x10); + if (*(short *)(piVar6 + 3) != 0) { + *puVar2 = (int)*(short *)(piVar6 + 3) & 0xffffU | 0xc000000; + puVar2[1] = uVar10 << 0x10 | 0x800; + puVar2 = puVar2 + 2; + } + iVar3 = *(int *)((int)filter + 0x18); + uVar11 = iVar3 + piVar6[1] * 2; + } while (lVar9 < (longlong)(ulonglong)*(byte *)((int)filter + 0x24)); + iVar3 = *(int *)((int)filter + 0x1c); + } + uVar11 = *(int *)((int)filter + 0x18) + uVar5; + *(uint *)((int)filter + 0x18) = uVar11; + if ((uint)(*(int *)((int)filter + 0x14) + iVar3 * 2) < uVar11) { + *(int *)((int)filter + 0x18) = uVar11 + iVar3 * -2; + } + *puVar2 = 0xa000800; + puVar2[1] = uVar5 & 0xffff | 0x6c00000; + return (longlong)(int)(puVar2 + 2); } @@ -21538,111 +21669,111 @@ uint * alFxParam(int *param_1,undefined8 param_2,undefined8 param_3,undefined pa undefined4 param_9,undefined param_10,undefined4 param_11,undefined4 param_12) { - undefined4 *puVar1; - uint *puVar2; - int iVar3; - uint uVar4; - uint uVar5; - int *piVar6; - short sVar7; - int unaff_s3_lo; - uint uVar8; - uint uVar9; - longlong lVar10; - uint uVar11; - uint uVar12; - uint uStack00000048; - uint uStack00000050; - uint uStack00000080; - - uStack00000080 = 0; - puVar1 = (undefined4 *)(**(code **)(*param_1 + 4))(); - uVar9 = (uint)param_3; - uVar5 = uVar9 << 1; - uStack00000048 = uVar5 & 0xffff; - *puVar1 = 0x8000000; - puVar1[1] = uStack00000048; - puVar1[2] = 0xc00da83; - puVar1[3] = 0x6c006c0; - puVar1[4] = 0xc005a82; - puVar1[5] = 0x80006c0; - uVar4 = 0; - uVar11 = 0x140; - uStack00000050 = uVar5; - puVar1 = __saveBuffer(unaff_s3_lo,*(uint *)(unaff_s3_lo + 0x18),0x6c0,uVar9,puVar1 + 6); - *puVar1 = 0x2000800; - puVar1[1] = uVar5; - puVar2 = puVar1 + 2; - lVar10 = 0; - if (*(char *)(unaff_s3_lo + 0x24) == '\0') { - iVar3 = *(int *)(unaff_s3_lo + 0x1c); - } - else { - iVar3 = *(int *)(unaff_s3_lo + 0x18); - uVar5 = uStack00000080; - do { - piVar6 = (int *)(*(int *)(unaff_s3_lo + 0x20) + (int)lVar10 * 0x28); - uVar8 = iVar3 + *piVar6 * -2; - uVar12 = iVar3 + piVar6[1] * -2; - if (uVar8 == uVar5) { - sVar7 = (short)uVar4; - uVar4 = SEXT24((short)uVar11); - uVar11 = SEXT24(sVar7); - } - else { - puVar2 = __loadBuffer(unaff_s3_lo,uVar8,uVar4,uVar9,puVar2); - } - puVar2 = __loadOutputBuffer(unaff_s3_lo,piVar6,uVar11,param_3,puVar2); - if (*(short *)(piVar6 + 2) == 0) { + undefined4 *puVar1; + uint *puVar2; + int iVar3; + uint uVar4; + uint uVar5; + int *piVar6; + short sVar7; + int unaff_s3_lo; + uint uVar8; + uint uVar9; + longlong lVar10; + uint uVar11; + uint uVar12; + uint uStack00000048; + uint uStack00000050; + uint uStack00000080; + + uStack00000080 = 0; + puVar1 = (undefined4 *)(**(code **)(*param_1 + 4))(); + uVar9 = (uint)param_3; + uVar5 = uVar9 << 1; + uStack00000048 = uVar5 & 0xffff; + *puVar1 = 0x8000000; + puVar1[1] = uStack00000048; + puVar1[2] = 0xc00da83; + puVar1[3] = 0x6c006c0; + puVar1[4] = 0xc005a82; + puVar1[5] = 0x80006c0; + uVar4 = 0; + uVar11 = 0x140; + uStack00000050 = uVar5; + puVar1 = __saveBuffer(unaff_s3_lo,*(uint *)(unaff_s3_lo + 0x18),0x6c0,uVar9,puVar1 + 6); + *puVar1 = 0x2000800; + puVar1[1] = uVar5; + puVar2 = puVar1 + 2; + lVar10 = 0; + if (*(char *)(unaff_s3_lo + 0x24) == '\0') { + iVar3 = *(int *)(unaff_s3_lo + 0x1c); + } + else { + iVar3 = *(int *)(unaff_s3_lo + 0x18); + uVar5 = uStack00000080; + do { + piVar6 = (int *)(*(int *)(unaff_s3_lo + 0x20) + (int)lVar10 * 0x28); + uVar8 = iVar3 + *piVar6 * -2; + uVar12 = iVar3 + piVar6[1] * -2; + if (uVar8 == uVar5) { + sVar7 = (short)uVar4; + uVar4 = SEXT24((short)uVar11); + uVar11 = SEXT24(sVar7); + } + else { + puVar2 = __loadBuffer(unaff_s3_lo,uVar8,uVar4,uVar9,puVar2); + } + puVar2 = __loadOutputBuffer(unaff_s3_lo,piVar6,uVar11,param_3,puVar2); + if (*(short *)(piVar6 + 2) == 0) { LAB_700203b0: - sVar7 = *(short *)((int)piVar6 + 10); - } - else { - *puVar2 = (int)*(short *)(piVar6 + 2) & 0xffffU | 0xc000000; - puVar2[1] = uVar4 << 0x10 | uVar11; - puVar2 = puVar2 + 2; - if (piVar6[9] == 0) { - if (piVar6[8] == 0) { - puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar11,uVar9,puVar2); - } - goto LAB_700203b0; - } - sVar7 = *(short *)((int)piVar6 + 10); - } - if (sVar7 != 0) { - *puVar2 = (int)sVar7 & 0xffffU | 0xc000000; - puVar2[1] = uVar11 << 0x10 | uVar4; - puVar2 = __saveBuffer(unaff_s3_lo,uVar8,uVar4,uVar9,puVar2 + 2); - } - if (piVar6[8] == 0) { - iVar3 = piVar6[9]; - } - else { - puVar2 = __filterBuffer(piVar6[8],uVar11,uVar9,puVar2); - iVar3 = piVar6[9]; - } - if (iVar3 == 0) { - puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar11,uVar9,puVar2); - } - lVar10 = (longlong)(((int)lVar10 + 1) * 0x10000 >> 0x10); - if (*(short *)(piVar6 + 3) != 0) { - *puVar2 = (int)*(short *)(piVar6 + 3) & 0xffffU | 0xc000000; - puVar2[1] = uVar11 << 0x10 | 0x800; - puVar2 = puVar2 + 2; - } - iVar3 = *(int *)(unaff_s3_lo + 0x18); - uVar5 = iVar3 + piVar6[1] * 2; - } while (lVar10 < (longlong)(ulonglong)*(byte *)(unaff_s3_lo + 0x24)); - iVar3 = *(int *)(unaff_s3_lo + 0x1c); - } - uStack00000050 = *(int *)(unaff_s3_lo + 0x18) + uStack00000050; - *(uint *)(unaff_s3_lo + 0x18) = uStack00000050; - if ((uint)(*(int *)(unaff_s3_lo + 0x14) + iVar3 * 2) < uStack00000050) { - *(int *)(unaff_s3_lo + 0x18) = uStack00000050 + iVar3 * -2; - } - *puVar2 = 0xa000800; - puVar2[1] = uStack00000048 | 0x6c00000; - return puVar2 + 2; + sVar7 = *(short *)((int)piVar6 + 10); + } + else { + *puVar2 = (int)*(short *)(piVar6 + 2) & 0xffffU | 0xc000000; + puVar2[1] = uVar4 << 0x10 | uVar11; + puVar2 = puVar2 + 2; + if (piVar6[9] == 0) { + if (piVar6[8] == 0) { + puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar11,uVar9,puVar2); + } + goto LAB_700203b0; + } + sVar7 = *(short *)((int)piVar6 + 10); + } + if (sVar7 != 0) { + *puVar2 = (int)sVar7 & 0xffffU | 0xc000000; + puVar2[1] = uVar11 << 0x10 | uVar4; + puVar2 = __saveBuffer(unaff_s3_lo,uVar8,uVar4,uVar9,puVar2 + 2); + } + if (piVar6[8] == 0) { + iVar3 = piVar6[9]; + } + else { + puVar2 = __filterBuffer(piVar6[8],uVar11,uVar9,puVar2); + iVar3 = piVar6[9]; + } + if (iVar3 == 0) { + puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar11,uVar9,puVar2); + } + lVar10 = (longlong)(((int)lVar10 + 1) * 0x10000 >> 0x10); + if (*(short *)(piVar6 + 3) != 0) { + *puVar2 = (int)*(short *)(piVar6 + 3) & 0xffffU | 0xc000000; + puVar2[1] = uVar11 << 0x10 | 0x800; + puVar2 = puVar2 + 2; + } + iVar3 = *(int *)(unaff_s3_lo + 0x18); + uVar5 = iVar3 + piVar6[1] * 2; + } while (lVar10 < (longlong)(ulonglong)*(byte *)(unaff_s3_lo + 0x24)); + iVar3 = *(int *)(unaff_s3_lo + 0x1c); + } + uStack00000050 = *(int *)(unaff_s3_lo + 0x18) + uStack00000050; + *(uint *)(unaff_s3_lo + 0x18) = uStack00000050; + if ((uint)(*(int *)(unaff_s3_lo + 0x14) + iVar3 * 2) < uStack00000050) { + *(int *)(unaff_s3_lo + 0x18) = uStack00000050 + iVar3 * -2; + } + *puVar2 = 0xa000800; + puVar2[1] = uStack00000048 | 0x6c00000; + return puVar2 + 2; } @@ -21654,106 +21785,106 @@ uint * alFxPull(int param_1,undefined param_2,undefined param_3,undefined param_ undefined4 param_18,undefined4 param_19,undefined4 param_20,undefined4 param_21) { - undefined4 *puVar1; - uint *puVar2; - int iVar3; - uint uVar4; - int *piVar5; - short sVar6; - int unaff_s3_lo; - uint uVar7; - undefined8 unaff_s6; - uint uVar8; - longlong lVar9; - uint uVar10; - uint uVar11; - uint uVar12; - uint in_stack_00000080; - - puVar1 = (undefined4 *)(**(code **)(param_1 + 4))(param_1,param_2,param_3,param_4); - uVar8 = (uint)unaff_s6; - uVar4 = uVar8 * 2; - *puVar1 = 0x8000000; - puVar1[1] = uVar4 & 0xffff; - puVar1[2] = 0xc00da83; - puVar1[3] = 0x6c006c0; - puVar1[4] = 0xc005a82; - puVar1[5] = 0x80006c0; - uVar11 = 0; - uVar10 = 0x140; - puVar1 = __saveBuffer(unaff_s3_lo,*(uint *)(unaff_s3_lo + 0x18),0x6c0,uVar8,puVar1 + 6); - *puVar1 = 0x2000800; - puVar1[1] = uVar4; - puVar2 = puVar1 + 2; - lVar9 = 0; - if (*(char *)(unaff_s3_lo + 0x24) == '\0') { - iVar3 = *(int *)(unaff_s3_lo + 0x1c); - } - else { - iVar3 = *(int *)(unaff_s3_lo + 0x18); - do { - piVar5 = (int *)(*(int *)(unaff_s3_lo + 0x20) + (int)lVar9 * 0x28); - uVar7 = iVar3 + *piVar5 * -2; - uVar12 = iVar3 + piVar5[1] * -2; - if (uVar7 == in_stack_00000080) { - sVar6 = (short)uVar11; - uVar11 = SEXT24((short)uVar10); - uVar10 = SEXT24(sVar6); - } - else { - puVar2 = __loadBuffer(unaff_s3_lo,uVar7,uVar11,uVar8,puVar2); - } - puVar2 = __loadOutputBuffer(unaff_s3_lo,piVar5,uVar10,unaff_s6,puVar2); - if (*(short *)(piVar5 + 2) == 0) { + undefined4 *puVar1; + uint *puVar2; + int iVar3; + uint uVar4; + int *piVar5; + short sVar6; + int unaff_s3_lo; + uint uVar7; + undefined8 unaff_s6; + uint uVar8; + longlong lVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint in_stack_00000080; + + puVar1 = (undefined4 *)(**(code **)(param_1 + 4))(param_1,param_2,param_3,param_4); + uVar8 = (uint)unaff_s6; + uVar4 = uVar8 * 2; + *puVar1 = 0x8000000; + puVar1[1] = uVar4 & 0xffff; + puVar1[2] = 0xc00da83; + puVar1[3] = 0x6c006c0; + puVar1[4] = 0xc005a82; + puVar1[5] = 0x80006c0; + uVar11 = 0; + uVar10 = 0x140; + puVar1 = __saveBuffer(unaff_s3_lo,*(uint *)(unaff_s3_lo + 0x18),0x6c0,uVar8,puVar1 + 6); + *puVar1 = 0x2000800; + puVar1[1] = uVar4; + puVar2 = puVar1 + 2; + lVar9 = 0; + if (*(char *)(unaff_s3_lo + 0x24) == '\0') { + iVar3 = *(int *)(unaff_s3_lo + 0x1c); + } + else { + iVar3 = *(int *)(unaff_s3_lo + 0x18); + do { + piVar5 = (int *)(*(int *)(unaff_s3_lo + 0x20) + (int)lVar9 * 0x28); + uVar7 = iVar3 + *piVar5 * -2; + uVar12 = iVar3 + piVar5[1] * -2; + if (uVar7 == in_stack_00000080) { + sVar6 = (short)uVar11; + uVar11 = SEXT24((short)uVar10); + uVar10 = SEXT24(sVar6); + } + else { + puVar2 = __loadBuffer(unaff_s3_lo,uVar7,uVar11,uVar8,puVar2); + } + puVar2 = __loadOutputBuffer(unaff_s3_lo,piVar5,uVar10,unaff_s6,puVar2); + if (*(short *)(piVar5 + 2) == 0) { LAB_700203b0: - sVar6 = *(short *)((int)piVar5 + 10); - } - else { - *puVar2 = (int)*(short *)(piVar5 + 2) & 0xffffU | 0xc000000; - puVar2[1] = uVar11 << 0x10 | uVar10; - puVar2 = puVar2 + 2; - if (piVar5[9] == 0) { - if (piVar5[8] == 0) { - puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar10,uVar8,puVar2); - } - goto LAB_700203b0; - } - sVar6 = *(short *)((int)piVar5 + 10); - } - if (sVar6 != 0) { - *puVar2 = (int)sVar6 & 0xffffU | 0xc000000; - puVar2[1] = uVar10 << 0x10 | uVar11; - puVar2 = __saveBuffer(unaff_s3_lo,uVar7,uVar11,uVar8,puVar2 + 2); - } - if (piVar5[8] == 0) { - iVar3 = piVar5[9]; - } - else { - puVar2 = __filterBuffer(piVar5[8],uVar10,uVar8,puVar2); - iVar3 = piVar5[9]; - } - if (iVar3 == 0) { - puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar10,uVar8,puVar2); - } - lVar9 = (longlong)(((int)lVar9 + 1) * 0x10000 >> 0x10); - if (*(short *)(piVar5 + 3) != 0) { - *puVar2 = (int)*(short *)(piVar5 + 3) & 0xffffU | 0xc000000; - puVar2[1] = uVar10 << 0x10 | 0x800; - puVar2 = puVar2 + 2; - } - iVar3 = *(int *)(unaff_s3_lo + 0x18); - in_stack_00000080 = iVar3 + piVar5[1] * 2; - } while (lVar9 < (longlong)(ulonglong)*(byte *)(unaff_s3_lo + 0x24)); - iVar3 = *(int *)(unaff_s3_lo + 0x1c); - } - uVar11 = *(int *)(unaff_s3_lo + 0x18) + uVar4; - *(uint *)(unaff_s3_lo + 0x18) = uVar11; - if ((uint)(*(int *)(unaff_s3_lo + 0x14) + iVar3 * 2) < uVar11) { - *(int *)(unaff_s3_lo + 0x18) = uVar11 + iVar3 * -2; - } - *puVar2 = 0xa000800; - puVar2[1] = uVar4 & 0xffff | 0x6c00000; - return puVar2 + 2; + sVar6 = *(short *)((int)piVar5 + 10); + } + else { + *puVar2 = (int)*(short *)(piVar5 + 2) & 0xffffU | 0xc000000; + puVar2[1] = uVar11 << 0x10 | uVar10; + puVar2 = puVar2 + 2; + if (piVar5[9] == 0) { + if (piVar5[8] == 0) { + puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar10,uVar8,puVar2); + } + goto LAB_700203b0; + } + sVar6 = *(short *)((int)piVar5 + 10); + } + if (sVar6 != 0) { + *puVar2 = (int)sVar6 & 0xffffU | 0xc000000; + puVar2[1] = uVar10 << 0x10 | uVar11; + puVar2 = __saveBuffer(unaff_s3_lo,uVar7,uVar11,uVar8,puVar2 + 2); + } + if (piVar5[8] == 0) { + iVar3 = piVar5[9]; + } + else { + puVar2 = __filterBuffer(piVar5[8],uVar10,uVar8,puVar2); + iVar3 = piVar5[9]; + } + if (iVar3 == 0) { + puVar2 = __saveBuffer(unaff_s3_lo,uVar12,uVar10,uVar8,puVar2); + } + lVar9 = (longlong)(((int)lVar9 + 1) * 0x10000 >> 0x10); + if (*(short *)(piVar5 + 3) != 0) { + *puVar2 = (int)*(short *)(piVar5 + 3) & 0xffffU | 0xc000000; + puVar2[1] = uVar10 << 0x10 | 0x800; + puVar2 = puVar2 + 2; + } + iVar3 = *(int *)(unaff_s3_lo + 0x18); + in_stack_00000080 = iVar3 + piVar5[1] * 2; + } while (lVar9 < (longlong)(ulonglong)*(byte *)(unaff_s3_lo + 0x24)); + iVar3 = *(int *)(unaff_s3_lo + 0x1c); + } + uVar11 = *(int *)(unaff_s3_lo + 0x18) + uVar4; + *(uint *)(unaff_s3_lo + 0x18) = uVar11; + if ((uint)(*(int *)(unaff_s3_lo + 0x14) + iVar3 * 2) < uVar11) { + *(int *)(unaff_s3_lo + 0x18) = uVar11 + iVar3 * -2; + } + *puVar2 = 0xa000800; + puVar2[1] = uVar4 & 0xffff | 0x6c00000; + return puVar2 + 2; } @@ -21761,10 +21892,10 @@ LAB_700203b0: void alSeqGetLoc(ALSeq *seq,ALSeqMarker *m) { - m->curPtr = seq->curPtr; - m->lastStatus = seq->lastStatus; - m->lastTicks = seq->lastTicks; - return; + m->curPtr = seq->curPtr; + m->lastStatus = seq->lastStatus; + m->lastTicks = seq->lastTicks; + return; } @@ -21772,10 +21903,10 @@ void alSeqGetLoc(ALSeq *seq,ALSeqMarker *m) void alSeqSetLoc(ALSeq *seq,ALSeqMarker *m) { - seq->curPtr = m->curPtr; - seq->lastStatus = m->lastStatus; - seq->lastTicks = m->lastTicks; - return; + seq->curPtr = m->curPtr; + seq->lastStatus = m->lastStatus; + seq->lastTicks = m->lastTicks; + return; } @@ -21783,7 +21914,7 @@ void alSeqSetLoc(ALSeq *seq,ALSeqMarker *m) s32 alSeqGetTicks(ALSeq *seq) { - return seq->lastTicks; + return seq->lastTicks; } @@ -21791,7 +21922,7 @@ s32 alSeqGetTicks(ALSeq *seq) void dummy70020560(void) { - return; + return; } @@ -21799,23 +21930,23 @@ void dummy70020560(void) s32 readVarLen(ALSeq *seq) { - byte bVar1; - ulonglong uVar2; - uint uVar3; - - bVar1 = *seq->curPtr; - uVar3 = (uint)bVar1; - seq->curPtr = seq->curPtr + 1; - if ((bVar1 & 0x80) != 0) { - uVar2 = (ulonglong)bVar1 & 0x7f; - do { - bVar1 = *seq->curPtr; - seq->curPtr = seq->curPtr + 1; - uVar3 = (int)uVar2 * 0x80 + ((uint)bVar1 & 0x7f); - uVar2 = SEXT48((int)uVar3); - } while ((bVar1 & 0x80) != 0); - } - return (s32)uVar3; + byte bVar1; + ulonglong uVar2; + uint uVar3; + + bVar1 = *seq->curPtr; + uVar3 = (uint)bVar1; + seq->curPtr = seq->curPtr + 1; + if ((bVar1 & 0x80) != 0) { + uVar2 = (ulonglong)bVar1 & 0x7f; + do { + bVar1 = *seq->curPtr; + seq->curPtr = seq->curPtr + 1; + uVar3 = (int)uVar2 * 0x80 + ((uint)bVar1 & 0x7f); + uVar2 = SEXT48((int)uVar3); + } while ((bVar1 & 0x80) != 0); + } + return (s32)uVar3; } @@ -21823,83 +21954,83 @@ s32 readVarLen(ALSeq *seq) void alSeqNextEvent(ALSeq *seq,ALEvent *event) { - byte bVar1; - undefined uVar2; - undefined2 uVar3; - byte *pbVar4; - s32 deltaTicks; - int extraout_a2_lo; - undefined2 *extraout_a3_lo; - - deltaTicks = readVarLen(seq); - pbVar4 = *(byte **)(extraout_a2_lo + 8); - *(int *)(extraout_a2_lo + 0xc) = *(int *)(extraout_a2_lo + 0xc) + deltaTicks; - bVar1 = *pbVar4; - *(byte **)(extraout_a2_lo + 8) = pbVar4 + 1; - if (bVar1 == 0xff) { - bVar1 = pbVar4[1]; - *(byte **)(extraout_a2_lo + 8) = pbVar4 + 2; - if (bVar1 == 0x51) { - *extraout_a3_lo = 3; - *(s32 *)(extraout_a3_lo + 2) = deltaTicks; - *(undefined *)(extraout_a3_lo + 4) = 0xff; - *(undefined *)((int)extraout_a3_lo + 9) = 0x51; - uVar2 = **(undefined **)(extraout_a2_lo + 8); - *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; - *(undefined *)(extraout_a3_lo + 5) = uVar2; - uVar2 = **(undefined **)(extraout_a2_lo + 8); - *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; - *(undefined *)((int)extraout_a3_lo + 0xb) = uVar2; - uVar2 = **(undefined **)(extraout_a2_lo + 8); - *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; - *(undefined *)(extraout_a3_lo + 6) = uVar2; - uVar2 = **(undefined **)(extraout_a2_lo + 8); - *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; - *(undefined *)((int)extraout_a3_lo + 0xd) = uVar2; + byte bVar1; + undefined uVar2; + undefined2 uVar3; + byte *pbVar4; + s32 deltaTicks; + int extraout_a2_lo; + undefined2 *extraout_a3_lo; + + deltaTicks = readVarLen(seq); + pbVar4 = *(byte **)(extraout_a2_lo + 8); + *(int *)(extraout_a2_lo + 0xc) = *(int *)(extraout_a2_lo + 0xc) + deltaTicks; + bVar1 = *pbVar4; + *(byte **)(extraout_a2_lo + 8) = pbVar4 + 1; + if (bVar1 == 0xff) { + bVar1 = pbVar4[1]; + *(byte **)(extraout_a2_lo + 8) = pbVar4 + 2; + if (bVar1 == 0x51) { + *extraout_a3_lo = 3; + *(s32 *)(extraout_a3_lo + 2) = deltaTicks; + *(undefined *)(extraout_a3_lo + 4) = 0xff; + *(undefined *)((int)extraout_a3_lo + 9) = 0x51; + uVar2 = **(undefined **)(extraout_a2_lo + 8); + *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; + *(undefined *)(extraout_a3_lo + 5) = uVar2; + uVar2 = **(undefined **)(extraout_a2_lo + 8); + *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; + *(undefined *)((int)extraout_a3_lo + 0xb) = uVar2; + uVar2 = **(undefined **)(extraout_a2_lo + 8); + *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; + *(undefined *)(extraout_a3_lo + 6) = uVar2; + uVar2 = **(undefined **)(extraout_a2_lo + 8); + *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; + *(undefined *)((int)extraout_a3_lo + 0xd) = uVar2; + } + else { + if (bVar1 == 0x2f) { + *extraout_a3_lo = 4; + *(s32 *)(extraout_a3_lo + 2) = deltaTicks; + *(undefined *)(extraout_a3_lo + 4) = 0xff; + *(undefined *)((int)extraout_a3_lo + 9) = 0x2f; + uVar2 = **(undefined **)(extraout_a2_lo + 8); + *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; + *(undefined *)(extraout_a3_lo + 5) = uVar2; + } + } + *(undefined2 *)(extraout_a2_lo + 0x1a) = 0; } else { - if (bVar1 == 0x2f) { - *extraout_a3_lo = 4; + *extraout_a3_lo = 1; *(s32 *)(extraout_a3_lo + 2) = deltaTicks; - *(undefined *)(extraout_a3_lo + 4) = 0xff; - *(undefined *)((int)extraout_a3_lo + 9) = 0x2f; - uVar2 = **(undefined **)(extraout_a2_lo + 8); - *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; - *(undefined *)(extraout_a3_lo + 5) = uVar2; - } + if ((bVar1 & 0x80) == 0) { + uVar3 = *(undefined2 *)(extraout_a2_lo + 0x1a); + *(byte *)((int)extraout_a3_lo + 9) = bVar1; + *(char *)(extraout_a3_lo + 4) = (char)uVar3; + } + else { + *(byte *)(extraout_a3_lo + 4) = bVar1; + uVar2 = **(undefined **)(extraout_a2_lo + 8); + *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; + *(undefined *)((int)extraout_a3_lo + 9) = uVar2; + *(ushort *)(extraout_a2_lo + 0x1a) = (ushort)bVar1; + } + if ((*(byte *)(extraout_a3_lo + 4) & 0xf0) == 0xc0) { + *(undefined *)(extraout_a3_lo + 5) = 0; + } + else { + if ((*(byte *)(extraout_a3_lo + 4) & 0xf0) == 0xd0) { + *(undefined *)(extraout_a3_lo + 5) = 0; + } + else { + uVar2 = **(undefined **)(extraout_a2_lo + 8); + *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; + *(undefined *)(extraout_a3_lo + 5) = uVar2; + } + } } - *(undefined2 *)(extraout_a2_lo + 0x1a) = 0; - } - else { - *extraout_a3_lo = 1; - *(s32 *)(extraout_a3_lo + 2) = deltaTicks; - if ((bVar1 & 0x80) == 0) { - uVar3 = *(undefined2 *)(extraout_a2_lo + 0x1a); - *(byte *)((int)extraout_a3_lo + 9) = bVar1; - *(char *)(extraout_a3_lo + 4) = (char)uVar3; - } - else { - *(byte *)(extraout_a3_lo + 4) = bVar1; - uVar2 = **(undefined **)(extraout_a2_lo + 8); - *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; - *(undefined *)((int)extraout_a3_lo + 9) = uVar2; - *(ushort *)(extraout_a2_lo + 0x1a) = (ushort)bVar1; - } - if ((*(byte *)(extraout_a3_lo + 4) & 0xf0) == 0xc0) { - *(undefined *)(extraout_a3_lo + 5) = 0; - } - else { - if ((*(byte *)(extraout_a3_lo + 4) & 0xf0) == 0xd0) { - *(undefined *)(extraout_a3_lo + 5) = 0; - } - else { - uVar2 = **(undefined **)(extraout_a2_lo + 8); - *(undefined **)(extraout_a2_lo + 8) = *(undefined **)(extraout_a2_lo + 8) + 1; - *(undefined *)(extraout_a3_lo + 5) = uVar2; - } - } - } - return; + return; } @@ -21907,51 +22038,51 @@ void alSeqNextEvent(ALSeq *seq,ALEvent *event) void alSeqNewMarker(ALSeq *seq,ALSeqMarker *m,u32 ticks) { - s16 sVar1; - u8 *puVar2; - s32 sVar3; - uint uVar4; - u8 *puVar5; - s16 sVar6; - ALEvent AStack16; - - if (ticks == 0) { - puVar2 = seq->trackStart; - m->lastStatus = 0; - m->lastTicks = 0; - m->curTicks = 0; - m->curPtr = puVar2; - } - else { - puVar2 = seq->curPtr; - sVar1 = seq->lastStatus; - sVar3 = seq->lastTicks; - seq->lastStatus = 0; - seq->lastTicks = 0; - seq->curPtr = seq->trackStart; - puVar5 = seq->curPtr; - uVar4 = 0; - while( true ) { - sVar6 = seq->lastStatus; - alSeqNextEvent(seq,&AStack16); - if (AStack16.type == 4) break; - if (ticks <= (uint)seq->lastTicks) goto LAB_70020800; - puVar5 = seq->curPtr; - uVar4 = seq->lastTicks; + s16 sVar1; + u8 *puVar2; + s32 sVar3; + uint uVar4; + u8 *puVar5; + s16 sVar6; + ALEvent AStack16; + + if (ticks == 0) { + puVar2 = seq->trackStart; + m->lastStatus = 0; + m->lastTicks = 0; + m->curTicks = 0; + m->curPtr = puVar2; } - puVar5 = seq->curPtr; - sVar6 = seq->lastStatus; - uVar4 = seq->lastTicks; + else { + puVar2 = seq->curPtr; + sVar1 = seq->lastStatus; + sVar3 = seq->lastTicks; + seq->lastStatus = 0; + seq->lastTicks = 0; + seq->curPtr = seq->trackStart; + puVar5 = seq->curPtr; + uVar4 = 0; + while( true ) { + sVar6 = seq->lastStatus; + alSeqNextEvent(seq,&AStack16); + if (AStack16.type == 4) break; + if (ticks <= (uint)seq->lastTicks) goto LAB_70020800; + puVar5 = seq->curPtr; + uVar4 = seq->lastTicks; + } + puVar5 = seq->curPtr; + sVar6 = seq->lastStatus; + uVar4 = seq->lastTicks; LAB_70020800: - m->curPtr = puVar5; - m->lastStatus = sVar6; - m->lastTicks = uVar4; - m->curTicks = seq->lastTicks; - seq->curPtr = puVar2; - seq->lastStatus = sVar1; - seq->lastTicks = sVar3; - } - return; + m->curPtr = puVar5; + m->lastStatus = sVar6; + m->lastTicks = uVar4; + m->curTicks = seq->lastTicks; + seq->curPtr = puVar2; + seq->lastStatus = sVar1; + seq->lastTicks = sVar3; + } + return; } @@ -21959,41 +22090,41 @@ LAB_70020800: u32 alSeqSecToTicks(ALSeq *seq,f32 sec,u32 tempo) { - double dVar1; - undefined4 in_a2_hi; - int in_a2_lo; - double dVar2; - uint in_register_00001050; - - dVar2 = (double)in_a2_lo; - if (CONCAT44(in_a2_hi,in_a2_lo) < 0) { - dVar2 = dVar2 + (double)((ulonglong)in_register_00001050 << 0x20); - } - dVar2 = ((double)(float)tempo * dbl_80029D50 * (double)(int)seq->division) / dVar2; - if (false) { - dVar1 = ROUND(dVar2); - } - else { - dVar1 = FLOOR(dVar2); - } - if (false) { - dVar2 = dVar2 - (double)((ulonglong)(double)(int)seq->division & 0xffffffff00000000); + double dVar1; + int in_a2_hi; + int in_a2_lo; + double dVar2; + uint in_register_00001050; + + dVar2 = (double)in_a2_lo; + if (in_a2_hi < 0) { + dVar2 = dVar2 + (double)((ulonglong)in_register_00001050 << 0x20); + } + dVar2 = ((double)(float)tempo * dbl_80029D50 * (double)(int)seq->division) / dVar2; if (false) { - dVar2 = ROUND(dVar2); + dVar1 = ROUND(dVar2); } else { - dVar2 = FLOOR(dVar2); + dVar1 = FLOOR(dVar2); } - if (true) { - return (u32)((int)dVar2 | 0x80000000); + if (false) { + dVar2 = dVar2 - (double)((ulonglong)(double)(int)seq->division & 0xffffffff00000000); + if (false) { + dVar2 = ROUND(dVar2); + } + else { + dVar2 = FLOOR(dVar2); + } + if (true) { + return (u32)((int)dVar2 | 0x80000000); + } } - } - else { - if (-1 < (int)dVar1) { - return (u32)(int)dVar1; + else { + if (-1 < (int)dVar1) { + return (u32)(int)dVar1; + } } - } - return 0xffffffff; + return 0xffffffff; } @@ -22001,13 +22132,14 @@ u32 alSeqSecToTicks(ALSeq *seq,f32 sec,u32 tempo) f32 alSeqTicksToSec(ALSeq *seq,s32 ticks,u32 tempo) { - float fVar1; - - fVar1 = (float)tempo; - if ((int)tempo < 0) { - fVar1 = fVar1 + 4294967296.00000000; - } - return (f32)(float)((double)((float)ticks * fVar1) / ((double)(int)seq->division * dbl_80029D58)); + float fVar1; + + fVar1 = (float)tempo; + if ((int)tempo < 0) { + fVar1 = fVar1 + 4294967296.00000000; + } + return (f32)(float)((double)((float)ticks * fVar1) / ((double)(int)seq->division * dbl_80029D58) + ); } @@ -22015,18 +22147,18 @@ f32 alSeqTicksToSec(ALSeq *seq,s32 ticks,u32 tempo) ulonglong __alSeqNextDelta(int *param_1,undefined4 *param_2) { - bool bVar1; - s32 sVar2; - int extraout_a2_lo; - undefined4 extraout_a3_lo; - - bVar1 = (uint)param_1[2] < (uint)(*param_1 + param_1[4]); - if (bVar1) { - sVar2 = readVarLen((ALSeq *)param_1); - *param_2 = sVar2; - *(undefined4 *)(extraout_a2_lo + 8) = extraout_a3_lo; - } - return (ulonglong)bVar1; + bool bVar1; + s32 sVar2; + int extraout_a2_lo; + undefined4 extraout_a3_lo; + + bVar1 = (uint)param_1[2] < (uint)(*param_1 + param_1[4]); + if (bVar1) { + sVar2 = readVarLen((ALSeq *)param_1); + *param_2 = sVar2; + *(undefined4 *)(extraout_a2_lo + 8) = extraout_a3_lo; + } + return (ulonglong)bVar1; } @@ -22034,22 +22166,22 @@ ulonglong __alSeqNextDelta(int *param_1,undefined4 *param_2) s32 read32(ALSeq *seq) { - byte bVar1; - byte bVar2; - byte bVar3; - byte bVar4; - byte *pbVar5; - - pbVar5 = seq->curPtr; - bVar1 = *pbVar5; - seq->curPtr = pbVar5 + 1; - bVar2 = pbVar5[1]; - seq->curPtr = pbVar5 + 2; - bVar3 = pbVar5[2]; - seq->curPtr = pbVar5 + 3; - bVar4 = pbVar5[3]; - seq->curPtr = pbVar5 + 4; - return (s32)((uint)bVar1 << 0x18 | (uint)bVar2 << 0x10 | (uint)bVar3 << 8 | (uint)bVar4); + byte bVar1; + byte bVar2; + byte bVar3; + byte bVar4; + byte *pbVar5; + + pbVar5 = seq->curPtr; + bVar1 = *pbVar5; + seq->curPtr = pbVar5 + 1; + bVar2 = pbVar5[1]; + seq->curPtr = pbVar5 + 2; + bVar3 = pbVar5[2]; + seq->curPtr = pbVar5 + 3; + bVar4 = pbVar5[3]; + seq->curPtr = pbVar5 + 4; + return (s32)((uint)bVar1 << 0x18 | (uint)bVar2 << 0x10 | (uint)bVar3 << 8 | (uint)bVar4); } @@ -22057,16 +22189,16 @@ s32 read32(ALSeq *seq) s16 read16(ALSeq *seq) { - u8 uVar1; - u8 uVar2; - u8 *puVar3; - - puVar3 = seq->curPtr; - uVar1 = *puVar3; - seq->curPtr = puVar3 + 1; - uVar2 = puVar3[1]; - seq->curPtr = puVar3 + 2; - return CONCAT11(uVar1,uVar2); + u8 uVar1; + u8 uVar2; + u8 *puVar3; + + puVar3 = seq->curPtr; + uVar1 = *puVar3; + seq->curPtr = puVar3 + 1; + uVar2 = puVar3[1]; + seq->curPtr = puVar3 + 2; + return CONCAT11(uVar1,uVar2); } @@ -22074,42 +22206,42 @@ s16 read16(ALSeq *seq) void alSeqNew(ALSeq *seq,u8 *ptr,s32 len) { - s32 sVar1; - s16 sVar2; - ALSeq *seq_00; - ALSeq *seq_01; - ALSeq *seq_02; - ALSeq *seq_03; - ALSeq *seq_04; - ALSeq *seq_05; - int extraout_a3_lo; - uint in_register_00001020; - - seq->base = ptr; - seq->len = len; - seq->lastStatus = 0; - seq->lastTicks = 0; - seq->curPtr = ptr; - sVar1 = read32(seq); - if (sVar1 == 0x4d546864) { - read32(seq_00); - sVar2 = read16(seq_01); - if ((sVar2 == 0) && (sVar2 = read16(seq_02), sVar2 == 1)) { - sVar2 = read16(seq_03); - seq_04->division = sVar2; - if (((longlong)seq_04->division & 0x8000U) == 0) { - *(float *)&seq_04->qnpt = - (float)((double)((ulonglong)in_register_00001020 << 0x20) / - (double)(int)seq_04->division); - sVar1 = read32(seq_04); - if (sVar1 == 0x4d54726b) { - read32(seq_05); - *(undefined4 *)(extraout_a3_lo + 4) = *(undefined4 *)(extraout_a3_lo + 8); + s32 sVar1; + s16 sVar2; + ALSeq *seq_00; + ALSeq *seq_01; + ALSeq *seq_02; + ALSeq *seq_03; + ALSeq *seq_04; + ALSeq *seq_05; + int extraout_a3_lo; + uint in_register_00001020; + + seq->base = ptr; + seq->len = len; + seq->lastStatus = 0; + seq->lastTicks = 0; + seq->curPtr = ptr; + sVar1 = read32(seq); + if (sVar1 == 0x4d546864) { + read32(seq_00); + sVar2 = read16(seq_01); + if ((sVar2 == 0) && (sVar2 = read16(seq_02), sVar2 == 1)) { + sVar2 = read16(seq_03); + seq_04->division = sVar2; + if (((longlong)seq_04->division & 0x8000U) == 0) { + *(float *)&seq_04->qnpt = + (float)((double)((ulonglong)in_register_00001020 << 0x20) / + (double)(int)seq_04->division); + sVar1 = read32(seq_04); + if (sVar1 == 0x4d54726b) { + read32(seq_05); + *(undefined4 *)(extraout_a3_lo + 4) = *(undefined4 *)(extraout_a3_lo + 8); + } + } } - } } - } - return; + return; } @@ -22117,8 +22249,8 @@ void alSeqNew(ALSeq *seq,u8 *ptr,s32 len) void alSynSetPriority(ALSynth *s,ALVoice *voice,s16 priority) { - voice->priority = priority; - return; + voice->priority = priority; + return; } @@ -22126,38 +22258,38 @@ void alSynSetPriority(ALSynth *s,ALVoice *voice,s16 priority) lldiv_t * lldiv(lldiv_t *__return_storage_ptr__,longlong __numer,longlong __denom) { - longlong lVar1; - undefined4 in_v1_hi; - int right_l; - int iVar2; - int in_a3_lo; - int left_u; - uint left_l; - int iStack16; - int iStack12; - int iStack8; - uint uStack4; - - lVar1 = __ll_div((int)__denom,in_a3_lo,left_u,left_l); - iStack16 = (int)lVar1; - iVar2 = right_l; - lVar1 = __ll_mul(left_u,left_l,iStack16,right_l); - iStack8 = ((int)__denom - (int)lVar1) - - (uint)((ulonglong)(longlong)in_a3_lo < CONCAT44(in_v1_hi,iVar2)); - uStack4 = in_a3_lo - iVar2; - iStack12 = right_l; - if ((((iStack16 < 1) && (iStack12 = right_l, iStack16 < 0)) && (iStack12 = right_l, -1 < iStack8)) - && ((0 < iStack8 || (iStack12 = right_l, uStack4 != 0)))) { - iStack16 += (uint)(right_l + 1 == 0); - iStack8 = (iStack8 - left_u) - (uint)(uStack4 < left_l); - uStack4 -= left_l; - iStack12 = right_l + 1; - } - *(int *)&__return_storage_ptr__->quot = iStack16; - *(int *)((int)&__return_storage_ptr__->quot + 4) = iStack12; - *(int *)&__return_storage_ptr__->rem = iStack8; - *(uint *)((int)&__return_storage_ptr__->rem + 4) = uStack4; - return __return_storage_ptr__; + longlong lVar1; + undefined4 in_v1_hi; + int in_v1_lo; + int iVar2; + int in_a3_lo; + int in_stack_00000010; + uint in_stack_00000014; + int iStack16; + int iStack12; + int iStack8; + uint uStack4; + + lVar1 = __ll_div((int)__denom,in_a3_lo,in_stack_00000010,in_stack_00000014); + iStack16 = (int)lVar1; + iVar2 = in_v1_lo; + lVar1 = __ll_mul(in_stack_00000010,in_stack_00000014,iStack16,in_v1_lo); + iStack8 = ((int)__denom - (int)lVar1) - + (uint)((ulonglong)(longlong)in_a3_lo < CONCAT44(in_v1_hi,iVar2)); + uStack4 = in_a3_lo - iVar2; + iStack12 = in_v1_lo; + if ((((iStack16 < 1) && (iStack12 = in_v1_lo, iStack16 < 0)) && (-1 < iStack8)) && + ((0 < iStack8 || (uStack4 != 0)))) { + iStack16 += (uint)(in_v1_lo + 1 == 0); + iStack8 = (iStack8 - in_stack_00000010) - (uint)(uStack4 < in_stack_00000014); + uStack4 -= in_stack_00000014; + iStack12 = in_v1_lo + 1; + } + *(int *)&__return_storage_ptr__->quot = iStack16; + *(int *)((int)&__return_storage_ptr__->quot + 4) = iStack12; + *(int *)&__return_storage_ptr__->rem = iStack8; + *(uint *)((int)&__return_storage_ptr__->rem + 4) = uStack4; + return __return_storage_ptr__; } @@ -22165,28 +22297,28 @@ lldiv_t * lldiv(lldiv_t *__return_storage_ptr__,longlong __numer,longlong __deno ldiv_t ldiv(long __numer,long __denom) { - undefined4 in_a2_hi; - int in_a2_lo; - int local_8; - int local_4; - - local_8 = __denom / in_a2_lo; - if (CONCAT44(in_a2_hi,in_a2_lo) == 0) { - trap(0x1c00); - } - if ((CONCAT44(in_a2_hi,in_a2_lo) == -1) && (__denom == -0x80000000)) { - trap(0x1800); - } - local_4 = __denom - in_a2_lo * local_8; - if (local_8 < 0) { - if (0 < local_4) { - local_8 += 1; - local_4 -= in_a2_lo; + undefined4 in_a2_hi; + int in_a2_lo; + int local_8; + int local_4; + + local_8 = __denom / in_a2_lo; + if (CONCAT44(in_a2_hi,in_a2_lo) == 0) { + trap(0x1c00); } - } - *(int *)__numer = local_8; - *(int *)(__numer + 4) = local_4; - return (ldiv_t)(longlong)__numer; + if ((CONCAT44(in_a2_hi,in_a2_lo) == -1) && (__denom == -0x80000000)) { + trap(0x1800); + } + local_4 = __denom - in_a2_lo * local_8; + if (local_8 < 0) { + if (0 < local_4) { + local_8 += 1; + local_4 -= in_a2_lo; + } + } + *(int *)__numer = local_8; + *(int *)(__numer + 4) = local_4; + return (ldiv_t)(longlong)__numer; } @@ -22194,12 +22326,12 @@ ldiv_t ldiv(long __numer,long __denom) void __osResetGlobalIntMask(OSHWIntr interrupt) { - u32 mask; - - mask = __osDisableInt(); - __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask & ~(interrupt & 0xfffffbfe)); - __osRestoreInt(mask); - return; + u32 mask; + + mask = __osDisableInt(); + __OSGlobalIntMask = (undefined *)((uint)__OSGlobalIntMask & ~(interrupt & 0xfffffbfe)); + __osRestoreInt(mask); + return; } @@ -22209,311 +22341,313 @@ void __osResetGlobalIntMask(OSHWIntr interrupt) s32 osEPiRawWriteIo(OSPiHandle *pihandle,u32 devAddr,u32 data) { - do { - } while ((_PI_STATUS_REG & 3) != 0); - *(u32 *)(pihandle->baseAddress | devAddr | 0xa0000000) = data; - return 0; + do { + } while ((_PI_STATUS_REG & 3) != 0); + *(u32 *)(pihandle->baseAddress | devAddr | 0xa0000000) = data; + return 0; } // WARNING: Instruction at (ram,0x70200594) overlaps instruction at (ram,0x70200590) // +// WARNING: Type propagation algorithm not settling // WARNING: Could not reconcile some variable overlaps int huft_build(char b,char n,char s,char d,undefined e,undefined t,undefined m) { - uint *puVar1; - uint uVar2; - int *piVar3; - int iVar4; - int iVar5; - uint uVar6; - uint uVar7; - uint uVar8; - uint uVar9; - int *piVar10; - uint *puVar11; - int iVar12; - uint uVar13; - uint *puVar14; - uint *puVar15; - int iVar16; - undefined4 *puVar17; - longlong lVar18; - uint uVar19; - uint uVar20; - uint uVar21; - uint uVar22; - uint uVar23; - uint uVar24; - uint uVar25; - int *piVar28; - longlong lVar26; - longlong lVar27; - uint *puVar29; - int in_stack_00000010; - uint *in_stack_00000014; - uint *in_stack_00000018; - uint *puStack1440; - uint auStack1404 [2]; - int aiStack1396 [16]; - uint auStack1332 [288]; - uint auStack180 [16]; - undefined4 uStack116; - uint uStack112; - uint uStack72; - int aiStack68 [15]; - int iStack8; - int iStack4; - - iVar4 = (int)n; - lVar27 = (longlong)b; - piVar28 = (int *)(int)b; - uVar9 = SEXT14(s); - piVar3 = aiStack68; - do { - piVar10 = piVar3 + 4; - piVar3[1] = 0; - piVar3[2] = 0; - piVar3[3] = 0; - *piVar3 = 0; - piVar3 = piVar10; - } while (piVar10 != &iStack4); - uVar8 = SEXT14(n); - if (-((int)n & 3U) == 0) goto LAB_702000a4; - lVar18 = (longlong)n; - lVar26 = lVar27; - do { - piVar28 = (int *)lVar26; - lVar18 = (longlong)((int)lVar18 + -1); - lVar26 = (longlong)(int)(piVar28 + 1); - (&uStack72)[*piVar28] = (&uStack72)[*piVar28] + 1; - } while ((longlong)(int)(-((int)n & 3U) + uVar8) != lVar18); - while( true ) { - iVar4 = (int)lVar18; - piVar28 = (int *)lVar26; - if (lVar18 == 0) break; + uint *puVar1; + uint *puVar2; + uint uVar3; + uint *puVar4; + int iVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint *puVar10; + uint *puVar11; + uint uVar12; + uint uVar13; + int iVar14; + int iVar15; + longlong lVar16; + uint uVar17; + uint uVar18; + uint uVar19; + uint uVar20; + uint uVar21; + int *piVar24; + longlong lVar22; + longlong lVar23; + int in_stack_00000010; + uint *in_stack_00000014; + uint *in_stack_00000018; + uint *puStack1440; + int iStack1412; + uint auStack1404 [18]; + uint auStack1332 [288]; + uint auStack180 [16]; + undefined4 uStack116; + uint uStack112; + uint uStack80; + uint auStack72 [16]; + uint auStack8 [2]; + + iVar14 = (int)n; + lVar23 = (longlong)b; + piVar24 = (int *)(int)b; + uVar9 = SEXT14(s); + auStack72[0] = 0; + puVar4 = auStack72 + 1; + do { + puVar2 = puVar4 + 4; + puVar4[1] = 0; + puVar4[2] = 0; + puVar4[3] = 0; + *puVar4 = 0; + puVar4 = puVar2; + } while (puVar2 != auStack8 + 1); + uVar8 = SEXT14(n); + if (-((int)n & 3U) == 0) goto LAB_702000a4; + lVar16 = (longlong)n; + lVar22 = lVar23; + do { + piVar24 = (int *)lVar22; + lVar16 = (longlong)((int)lVar16 + -1); + lVar22 = (longlong)(int)(piVar24 + 1); + auStack72[*piVar24] = auStack72[*piVar24] + 1; + } while ((longlong)(int)(-((int)n & 3U) + uVar8) != lVar16); + while( true ) { + iVar14 = (int)lVar16; + piVar24 = (int *)lVar22; + if (lVar16 == 0) break; LAB_702000a4: - lVar18 = (longlong)(iVar4 + -4); - lVar26 = (longlong)(int)(piVar28 + 4); - puVar14 = &uStack72 + *piVar28; - *puVar14 = *puVar14 + 1; - puVar14 = &uStack72 + piVar28[1]; - *puVar14 = *puVar14 + 1; - puVar14 = &uStack72 + piVar28[2]; - *puVar14 = *puVar14 + 1; - puVar14 = &uStack72 + piVar28[3]; - *puVar14 = *puVar14 + 1; - } - uVar23 = 1; - puVar14 = (uint *)aiStack68; - if ((longlong)n == 0) { - *in_stack_00000014 = 0; - *in_stack_00000018 = 0; - return 0; - } - do { - if (*puVar14 != 0) break; - uVar23 += 1; - puVar14 = puVar14 + 1; - } while (uVar23 != 0x11); - uVar22 = *in_stack_00000018; - if (*in_stack_00000018 < uVar23) { - uVar22 = uVar23; - } - uVar19 = 0x10; - piVar28 = &iStack8; - do { - if (*piVar28 != 0) break; - uVar19 -= 1; - piVar28 = piVar28 + -1; - } while (uVar19 != 0); - if (uVar19 < uVar22) { - uVar22 = uVar19; - } - *in_stack_00000018 = uVar22; - iVar4 = 1 << (uVar23 & 0x1f); - if (uVar23 < uVar19) { - do { - uVar20 = *puVar14; - puVar14 = puVar14 + 1; - iVar4 = (iVar4 - uVar20) * 2; - } while (puVar14 < &uStack72 + uVar19); - } - uVar20 = uVar19 - 1; - iVar12 = 0; - iVar4 -= *piVar28; - *piVar28 = *piVar28 + iVar4; - piVar3 = aiStack68; - piVar10 = aiStack1396; - puVar14 = (uint *)(piVar28 + -1); - if (uVar20 != 0) { - if (-(uVar20 & 3) != 0) { - do { - puVar14 = puVar14 + -1; - piVar28 = piVar10 + 1; - iVar12 += *piVar3; - *piVar10 = iVar12; - piVar3 = piVar3 + 1; - piVar10 = piVar28; - } while (&uStack72 + -(uVar20 & 3) + uVar20 != puVar14); - piVar10 = piVar28; - if (puVar14 == &uStack72) goto LAB_70200290; + lVar16 = (longlong)(iVar14 + -4); + lVar22 = (longlong)(int)(piVar24 + 4); + puVar4 = auStack72 + *piVar24; + *puVar4 = *puVar4 + 1; + puVar4 = auStack72 + piVar24[1]; + *puVar4 = *puVar4 + 1; + puVar4 = auStack72 + piVar24[2]; + *puVar4 = *puVar4 + 1; + puVar4 = auStack72 + piVar24[3]; + *puVar4 = *puVar4 + 1; + } + uVar19 = 1; + puVar4 = auStack72 + 1; + if ((longlong)n == (longlong)(int)auStack72[0]) { + *in_stack_00000014 = 0; + *in_stack_00000018 = 0; + return 0; } do { - iVar16 = *piVar3; - puVar14 = puVar14 + -4; - *piVar10 = iVar12 + iVar16; - iVar12 = iVar12 + iVar16 + piVar3[1]; - piVar10[1] = iVar12; - iVar12 += piVar3[2]; - piVar10[2] = iVar12; - iVar12 += piVar3[3]; - piVar10[3] = iVar12; - piVar3 = piVar3 + 4; - piVar10 = piVar10 + 4; - } while (puVar14 != &uStack72); - } -LAB_70200290: - uVar20 = 0; - puVar14 = auStack1332; - iVar12 = *(int *)(int)b; - while( true ) { - piVar28 = (int *)((int)lVar27 + 4); - lVar27 = (longlong)(int)piVar28; - if (iVar12 != 0) { - uVar21 = auStack1404[iVar12]; - puVar14[uVar21] = uVar20; - auStack1404[iVar12] = uVar21 + 1; + if (*puVar4 != 0) break; + uVar19 += 1; + puVar4 = puVar4 + 1; + } while (uVar19 != 0x11); + uVar18 = *in_stack_00000018; + if (*in_stack_00000018 < uVar19) { + uVar18 = uVar19; } - uVar20 += 1; - if (uVar8 <= uVar20) break; - iVar12 = *piVar28; - } - uVar21 = 0; - iVar12 = -1; - uVar20 = -uVar22; - uVar7 = 0; - uVar6 = 0; - if ((int)uVar23 <= (int)uVar19) { - puStack1440 = &uStack72 + uVar23; + uStack80 = 0x10; + puVar2 = auStack8; do { - iVar16 = iVar12 * 4; - if (*puStack1440 != 0) { - puVar15 = auStack1404 + iVar12; - uVar25 = 1 << (uVar23 + 0x1f & 0x1f); - puVar29 = puVar14; - uVar13 = *puStack1440; + if (*puVar2 != 0) break; + uStack80 -= 1; + puVar2 = puVar2 + -1; + } while (uStack80 != 0); + if (uStack80 < uVar18) { + uVar18 = uStack80; + } + *in_stack_00000018 = uVar18; + iStack1412 = 1 << (uVar19 & 0x1f); + if (uVar19 < uStack80) { do { - uVar24 = uVar13 - 1; - if ((int)(uVar20 + uVar22) < (int)uVar23) { - uVar2 = uVar20 + uVar22; - puVar14 = (uint *)((int)auStack180 + iVar16); + uVar12 = *puVar4; + puVar4 = puVar4 + 1; + iStack1412 = (iStack1412 - uVar12) * 2; + } while (puVar4 < auStack72 + uStack80); + } + uVar17 = uStack80 - 1; + uVar12 = 0; + iStack1412 -= *puVar2; + *puVar2 = *puVar2 + iStack1412; + auStack1404[1] = 0; + puVar4 = auStack72 + 1; + puVar11 = auStack1404 + 2; + puVar2 = puVar2 + -1; + if (uVar17 != 0) { + if (-(uVar17 & 3) != 0) { do { - uVar20 = uVar2; - iVar12 += 1; - iVar16 += 4; - puVar15 = puVar15 + 1; - uVar7 = uVar19 - uVar20; - if (uVar22 < uVar19 - uVar20) { - uVar7 = uVar22; - } - uVar2 = uVar23 - uVar20; - uVar6 = 1 << (uVar2 & 0x1f); - if (uVar13 < uVar6) { - iVar5 = (uVar6 - uVar24) + -1; - puVar11 = &uStack72 + uVar23; - while (uVar2 += 1, uVar2 < uVar7) { - puVar1 = puVar11 + 1; - puVar11 = puVar11 + 1; - if ((uint)(iVar5 * 2) <= *puVar1) break; - iVar5 = iVar5 * 2 - *puVar1; - } - } - uVar6 = 1 << (uVar2 & 0x1f); - iVar5 = hufts * 8; - hufts = hufts + uVar6 + 1; - iVar5 += rarezip_ptrbuffer; - uVar7 = iVar5 + 8; - *in_stack_00000014 = uVar7; - *(undefined4 *)(iVar5 + 4) = 0; - in_stack_00000014 = (uint *)(iVar5 + 4); - puVar14[1] = uVar7; - if (iVar12 != 0) { - *puVar15 = uVar21; - uStack116._1_3_ = CONCAT12((char)uVar22,uStack116._2_2_); - uStack116 = CONCAT13((char)uVar2 + '\x10',uStack116._1_3_); - puVar17 = (undefined4 *)(*puVar14 + (uVar21 >> (uVar20 - uVar22 & 0x1f)) * 8); - *puVar17 = uStack116; - puVar17[1] = uVar7; - uStack112 = uVar7; - } - uVar2 = uVar20 + uVar22; - puVar14 = puVar14 + 1; - } while ((int)(uVar20 + uVar22) < (int)uVar23); - } - uStack116._1_3_ = CONCAT12((char)(uVar23 - uVar20),uStack116._2_2_); - if (puVar29 < auStack1332 + uVar8) { - uVar13 = *puVar29; - if (uVar13 < uVar9) { - if (uVar13 < 0x100) { - uStack116 = CONCAT13(0x10,uStack116._1_3_); - } - else { - uStack116 = CONCAT13(0xf,uStack116._1_3_); - } - puVar14 = puVar29 + 1; - uStack112 = uStack112 & 0xffff | *puVar29 << 0x10; + puVar2 = puVar2 + -1; + puVar10 = puVar11 + 1; + uVar12 += *puVar4; + *puVar11 = uVar12; + puVar4 = puVar4 + 1; + puVar11 = puVar10; + } while (auStack72 + -(uVar17 & 3) + uVar17 != puVar2); + if (puVar2 == auStack72) goto LAB_70200290; + } + do { + uVar17 = *puVar4; + puVar2 = puVar2 + -4; + *puVar11 = uVar12 + uVar17; + uVar12 = uVar12 + uVar17 + puVar4[1]; + puVar11[1] = uVar12; + uVar12 += puVar4[2]; + puVar11[2] = uVar12; + uVar12 += puVar4[3]; + puVar11[3] = uVar12; + puVar4 = puVar4 + 4; + puVar11 = puVar11 + 4; + } while (puVar2 != auStack72); + } +LAB_70200290: + uVar12 = 0; + puVar4 = auStack1332; + iVar14 = *(int *)(int)b; + while( true ) { + piVar24 = (int *)((int)lVar23 + 4); + lVar23 = (longlong)(int)piVar24; + if (iVar14 != 0) { + uVar17 = auStack1404[iVar14]; + puVar4[uVar17] = uVar12; + auStack1404[iVar14] = uVar17 + 1; + } + uVar12 += 1; + if (uVar8 <= uVar12) break; + iVar14 = *piVar24; + } + uVar17 = 0; + auStack1404[0] = 0; + iVar14 = -1; + uVar12 = -uVar18; + auStack180[0] = 0; + uVar7 = 0; + uVar6 = 0; + if ((int)uVar19 <= (int)uStack80) { + puStack1440 = auStack72 + uVar19; + do { + iVar15 = iVar14 * 4; + if (*puStack1440 != 0) { + puVar11 = auStack1404 + iVar14; + uVar21 = 1 << (uVar19 + 0x1f & 0x1f); + puVar2 = puVar4; + uVar13 = *puStack1440; + do { + uVar20 = uVar13 - 1; + if ((int)(uVar12 + uVar18) < (int)uVar19) { + uVar3 = uVar12 + uVar18; + puVar4 = (uint *)((int)auStack180 + iVar15); + do { + uVar12 = uVar3; + iVar14 += 1; + iVar15 += 4; + puVar11 = puVar11 + 1; + uVar7 = uStack80 - uVar12; + if (uVar18 < uStack80 - uVar12) { + uVar7 = uVar18; + } + uVar3 = uVar19 - uVar12; + uVar6 = 1 << (uVar3 & 0x1f); + if (uVar13 < uVar6) { + iVar5 = (uVar6 - uVar20) + -1; + puVar10 = auStack72 + uVar19; + while (uVar3 += 1, uVar3 < uVar7) { + puVar1 = puVar10 + 1; + puVar10 = puVar10 + 1; + if ((uint)(iVar5 * 2) <= *puVar1) break; + iVar5 = iVar5 * 2 - *puVar1; + } + } + uVar6 = 1 << (uVar3 & 0x1f); + iVar5 = hufts * 8; + hufts = hufts + uVar6 + 1; + iVar5 += rarezip_ptrbuffer; + uVar7 = iVar5 + 8; + *in_stack_00000014 = uVar7; + *(undefined4 *)(iVar5 + 4) = 0; + in_stack_00000014 = (uint *)(iVar5 + 4); + puVar4[1] = uVar7; + if (iVar14 != 0) { + *puVar11 = uVar17; + uStack116._1_3_ = CONCAT12((char)uVar18,uStack116._2_2_); + uStack116 = CONCAT13((char)uVar3 + '\x10',uStack116._1_3_); + uStack112 = uVar7; + puVar10 = (uint *)(*puVar4 + + (uVar17 >> (uVar12 - uVar18 & 0x1f)) * 8); + *puVar10 = uStack116; + puVar10[1] = uVar7; + } + uVar3 = uVar12 + uVar18; + puVar4 = puVar4 + 1; + } while ((int)(uVar12 + uVar18) < (int)uVar19); + } + uStack116._1_3_ = CONCAT12((char)(uVar19 - uVar12),uStack116._2_2_); + uStack116 = uStack116 & 0xff000000 | (uint)uStack116._1_3_; + if (puVar2 < auStack1332 + uVar8) { + uVar13 = *puVar2; + if (uVar13 < uVar9) { + if (uVar13 < 0x100) { + uStack116 = CONCAT13(0x10,uStack116._1_3_); + } + else { + uStack116 = CONCAT13(0xf,uStack116._1_3_); + } + puVar4 = puVar2 + 1; + uStack112 = uStack112 & 0xffff | *puVar2 << 0x10; + } + else { + puVar4 = puVar2 + 1; + uStack116 = CONCAT13(*(undefined *) + ((uVar13 - uVar9) + in_stack_00000010), + uStack116._1_3_); + uStack112 = uStack112 & 0xffff | + (uint)*(ushort *)((int)d + *puVar2 * 2 + uVar9 * -2) << 0x10 + ; + } + } + else { + uStack116 = CONCAT13(99,uStack116._1_3_); + puVar4 = puVar2; + } + uVar13 = uVar17 >> (uVar12 & 0x1f); + if (uVar13 < uVar6) { + do { + puVar2 = (uint *)(uVar7 + uVar13 * 8); + *puVar2 = uStack116; + uVar13 += 1 << (uVar19 - uVar12 & 0x1f); + puVar2[1] = uStack112; + } while (uVar13 < uVar6); + } + uVar3 = uVar17 & uVar21; + uVar13 = uVar21; + while (uVar3 != 0) { + uVar17 ^= uVar13; + uVar3 = uVar17 & uVar13 >> 1; + uVar13 = uVar13 >> 1; + } + uVar17 ^= uVar13; + if ((uVar17 & (1 << (uVar12 & 0x1f)) - 1U) != *puVar11) { + do { + uVar12 -= uVar18; + puVar2 = puVar11 + -1; + iVar14 += -1; + iVar15 += -4; + puVar11 = puVar11 + -1; + } while ((uVar17 & (1 << (uVar12 & 0x1f)) - 1U) != *puVar2); + } + puVar2 = puVar4; + uVar13 = uVar20; + } while (uVar20 != 0); } - else { - puVar14 = puVar29 + 1; - uStack116 = CONCAT13(*(undefined *)((uVar13 - uVar9) + in_stack_00000010), - uStack116._1_3_); - uStack112 = uStack112 & 0xffff | - (uint)*(ushort *)((int)d + *puVar29 * 2 + uVar9 * -2) << 0x10; - } - } - else { - uStack116 = CONCAT13(99,uStack116._1_3_); - puVar14 = puVar29; - } - uVar13 = uVar21 >> (uVar20 & 0x1f); - if (uVar13 < uVar6) { - do { - puVar17 = (undefined4 *)(uVar7 + uVar13 * 8); - *puVar17 = uStack116; - uVar13 += 1 << (uVar23 - uVar20 & 0x1f); - puVar17[1] = uStack112; - } while (uVar13 < uVar6); - } - uVar2 = uVar21 & uVar25; - uVar13 = uVar25; - while (uVar2 != 0) { - uVar21 ^= uVar13; - uVar2 = uVar21 & uVar13 >> 1; - uVar13 = uVar13 >> 1; - } - uVar21 ^= uVar13; - if ((uVar21 & (1 << (uVar20 & 0x1f)) - 1U) != *puVar15) { - do { - uVar20 -= uVar22; - puVar29 = puVar15 + -1; - iVar12 += -1; - iVar16 += -4; - puVar15 = puVar15 + -1; - } while ((uVar21 & (1 << (uVar20 & 0x1f)) - 1U) != *puVar29); - } - puVar29 = puVar14; - uVar13 = uVar24; - } while (uVar24 != 0); - } - uVar23 += 1; - puStack1440 = puStack1440 + 1; - } while ((int)uVar23 <= (int)uVar19); - } - return (int)(uint)(iVar4 != 0 && uVar19 != 1); + uVar19 += 1; + puStack1440 = puStack1440 + 1; + } while ((int)uVar19 <= (int)uStack80); + } + return (int)(uint)(iStack1412 != 0 && uStack80 != 1); } @@ -22521,155 +22655,157 @@ LAB_70200290: int inflate_codes(char tl,char td,char bl,char bd) { - byte bVar1; - int iVar2; - int iVar3; - int iVar4; - ulonglong uVar5; - uint uVar6; - byte *pbVar7; - ulonglong uVar8; - uint uVar9; - uint uVar10; - uint uVar11; - undefined *puVar12; - byte *pbVar13; - undefined *puVar14; - ushort ml; - ushort md; - - uVar8 = SEXT48((int)bk); - ml = mask_bits[(int)bl]; - md = mask_bits[(int)bd]; - while( true ) { + byte bVar1; + int iVar2; + int iVar3; + int iVar4; + ulonglong uVar5; + uint uVar6; + byte *pbVar7; + ulonglong uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + undefined *puVar12; + byte *pbVar13; + undefined *puVar14; + ushort ml; + ushort md; + + uVar8 = SEXT48((int)bk); + ml = mask_bits[bl]; + md = mask_bits[bd]; while( true ) { - while (uVar11 = (uint)uVar8, uVar8 < (ulonglong)(longlong)bl) { - pbVar7 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar8 = SEXT48((int)(uVar11 + 8)); - bb |= (uint)*pbVar7 << (uVar11 & 0x1f); - } - pbVar7 = (byte *)((bb & (uint)ml) * 8 + (int)tl); - uVar5 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) { - bVar1 = pbVar7[1]; - } - else { - bVar1 = pbVar7[1]; while( true ) { - iVar2 = (int)uVar5 + -0x10; - uVar11 = (int)uVar8 - (uint)bVar1; - bb >>= (uint)bVar1 & 0x1f; - while (uVar8 = SEXT48((int)uVar11), uVar8 < (ulonglong)(longlong)iVar2) { + while (uVar11 = (uint)uVar8, uVar8 < (ulonglong)(longlong)bl) { + pbVar7 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar8 = SEXT48((int)(uVar11 + 8)); + bb |= (uint)*pbVar7 << (uVar11 & 0x1f); + } + pbVar7 = (byte *)((bb & ml) * 8 + (int)tl); + uVar5 = (ulonglong)*pbVar7; + if (*pbVar7 < 0x11) { + bVar1 = pbVar7[1]; + } + else { + bVar1 = pbVar7[1]; + while( true ) { + iVar2 = (int)uVar5 + -0x10; + uVar11 = (int)uVar8 - (uint)bVar1; + bb >>= (uint)bVar1 & 0x1f; + while (uVar8 = SEXT48((int)uVar11), uVar8 < (ulonglong)(longlong)iVar2) { + pbVar13 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar10 = uVar11 & 0x1f; + uVar11 += 8; + bb |= (uint)*pbVar13 << uVar10; + } + pbVar7 = (byte *)((mask_bits[iVar2] & bb) * 8 + *(int *)(pbVar7 + 4)); + uVar5 = (ulonglong)*pbVar7; + if (*pbVar7 < 0x11) break; + bVar1 = pbVar7[1]; + } + bVar1 = pbVar7[1]; + } + bb >>= (uint)bVar1 & 0x1f; + bk = uVar11 - (uint)bVar1; + uVar8 = SEXT48((int)bk); + if (uVar5 != 0x10) break; + puVar12 = (undefined *)(rarezip_ptr_target + wp); + wp += 1; + *puVar12 = (char)*(undefined2 *)(pbVar7 + 4); + } + if (uVar5 == 0xf) break; + uVar11 = (uint)uVar5; + while (uVar8 < uVar5) { pbVar13 = (byte *)(rarezip_ptr_source + inptr); inptr += 1; - uVar10 = uVar11 & 0x1f; - uVar11 += 8; - bb |= (uint)*pbVar13 << uVar10; - } - pbVar7 = (byte *)(((uint)mask_bits[iVar2] & bb) * 8 + *(int *)(pbVar7 + 4)); - uVar5 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) break; - bVar1 = pbVar7[1]; + uVar10 = (uint)uVar8; + bk = uVar10 + 8; + uVar8 = SEXT48((int)bk); + bb |= (uint)*pbVar13 << (uVar10 & 0x1f); } - bVar1 = pbVar7[1]; - } - bb >>= (uint)bVar1 & 0x1f; - bk = uVar11 - (uint)bVar1; - uVar8 = SEXT48((int)bk); - if (uVar5 != 0x10) break; - puVar12 = (undefined *)(rarezip_ptr_target + wp); - wp += 1; - *puVar12 = (char)*(undefined2 *)(pbVar7 + 4); - } - if (uVar5 == 0xf) break; - uVar11 = (uint)uVar5; - while (uVar8 < uVar5) { - pbVar13 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar10 = (uint)uVar8; - bk = uVar10 + 8; - uVar8 = SEXT48((int)bk); - bb |= (uint)*pbVar13 << (uVar10 & 0x1f); - } - uVar9 = bk - uVar11; - uVar10 = bb >> (uVar11 & 0x1f); - uVar11 = ((uint)mask_bits[uVar11] & bb) + (uint)*(ushort *)(pbVar7 + 4); - while (uVar8 = SEXT48((int)uVar9), uVar8 < (ulonglong)(longlong)bd) { - pbVar7 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar6 = uVar9 & 0x1f; - uVar9 += 8; - uVar10 |= (uint)*pbVar7 << uVar6; - } - pbVar7 = (byte *)((uVar10 & (uint)md) * 8 + (int)td); - uVar5 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) { - bVar1 = pbVar7[1]; - } - else { - bVar1 = pbVar7[1]; - while( true ) { - iVar2 = (int)uVar5 + -0x10; - uVar9 = (int)uVar8 - (uint)bVar1; - uVar10 >>= (uint)bVar1 & 0x1f; - while (uVar8 = SEXT48((int)uVar9), uVar8 < (ulonglong)(longlong)iVar2) { - pbVar13 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar6 = uVar9 & 0x1f; - uVar9 += 8; - uVar10 |= (uint)*pbVar13 << uVar6; + uVar9 = bk - uVar11; + uVar10 = bb >> (uVar11 & 0x1f); + uVar11 = (mask_bits[uVar11] & bb) + (uint)*(ushort *)(pbVar7 + 4); + while (uVar8 = SEXT48((int)uVar9), uVar8 < (ulonglong)(longlong)bd) { + pbVar7 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar6 = uVar9 & 0x1f; + uVar9 += 8; + uVar10 |= (uint)*pbVar7 << uVar6; } - pbVar7 = (byte *)(((uint)mask_bits[iVar2] & uVar10) * 8 + *(int *)(pbVar7 + 4)); + pbVar7 = (byte *)((uVar10 & md) * 8 + (int)td); uVar5 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) break; - bVar1 = pbVar7[1]; - } - bVar1 = pbVar7[1]; - } - uVar9 -= (uint)bVar1; - uVar10 >>= (uint)bVar1 & 0x1f; - while ((ulonglong)(longlong)(int)uVar9 < uVar5) { - pbVar13 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar6 = uVar9 & 0x1f; - uVar9 += 8; - uVar10 |= (uint)*pbVar13 << uVar6; - } - uVar6 = (uint)uVar5; - uVar8 = SEXT48((int)(uVar9 - uVar6)); - iVar2 = (wp - (uint)*(ushort *)(pbVar7 + 4)) - ((uint)mask_bits[uVar6] & uVar10); - bb = uVar10 >> (uVar6 & 0x1f); - while( true ) { - if (-(uVar11 & 3) == 0) goto LAB_70200990; - uVar10 = -(uVar11 & 3) + uVar11; - do { - uVar11 -= 1; - puVar12 = (undefined *)(iVar2 + rarezip_ptr_target); - puVar14 = (undefined *)(rarezip_ptr_target + wp); - wp += 1; - iVar2 += 1; - *puVar14 = *puVar12; - } while (uVar10 != uVar11); - while (uVar11 != 0) { + if (*pbVar7 < 0x11) { + bVar1 = pbVar7[1]; + } + else { + bVar1 = pbVar7[1]; + while( true ) { + iVar2 = (int)uVar5 + -0x10; + uVar9 = (int)uVar8 - (uint)bVar1; + uVar10 >>= (uint)bVar1 & 0x1f; + while (uVar8 = SEXT48((int)uVar9), uVar8 < (ulonglong)(longlong)iVar2) { + pbVar13 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar6 = uVar9 & 0x1f; + uVar9 += 8; + uVar10 |= (uint)*pbVar13 << uVar6; + } + pbVar7 = (byte *)((mask_bits[iVar2] & uVar10) * 8 + *(int *)(pbVar7 + 4)); + uVar5 = (ulonglong)*pbVar7; + if (*pbVar7 < 0x11) break; + bVar1 = pbVar7[1]; + } + bVar1 = pbVar7[1]; + } + uVar9 -= (uint)bVar1; + uVar10 >>= (uint)bVar1 & 0x1f; + while ((ulonglong)(longlong)(int)uVar9 < uVar5) { + pbVar13 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar6 = uVar9 & 0x1f; + uVar9 += 8; + uVar10 |= (uint)*pbVar13 << uVar6; + } + uVar6 = (uint)uVar5; + uVar8 = SEXT48((int)(uVar9 - uVar6)); + iVar2 = (wp - (uint)*(ushort *)(pbVar7 + 4)) - (mask_bits[uVar6] & uVar10); + bb = uVar10 >> (uVar6 & 0x1f); + while( true ) { + if (-(uVar11 & 3) == 0) goto LAB_70200990; + uVar10 = -(uVar11 & 3) + uVar11; + do { + uVar11 -= 1; + puVar12 = (undefined *)(iVar2 + rarezip_ptr_target); + puVar14 = (undefined *)(rarezip_ptr_target + wp); + wp += 1; + iVar2 += 1; + *puVar14 = *puVar12; + } while (uVar10 != uVar11); + while (uVar11 != 0) { LAB_70200990: - uVar11 -= 4; - *(undefined *)(rarezip_ptr_target + wp) = *(undefined *)(iVar2 + rarezip_ptr_target); - *(undefined *)(rarezip_ptr_target + wp + 1) = *(undefined *)(iVar2 + 1 + rarezip_ptr_target) - ; - iVar3 = iVar2 + 3; - *(undefined *)(rarezip_ptr_target + wp + 2) = *(undefined *)(iVar2 + 2 + rarezip_ptr_target) - ; - iVar4 = wp + 3; - wp += 4; - iVar2 += 4; - *(undefined *)(rarezip_ptr_target + iVar4) = *(undefined *)(iVar3 + rarezip_ptr_target); - } - if (true) break; - uVar11 = 0; + uVar11 -= 4; + *(undefined *)(rarezip_ptr_target + wp) = *(undefined *)(iVar2 + rarezip_ptr_target) + ; + *(undefined *)(rarezip_ptr_target + wp + 1) = + *(undefined *)(iVar2 + 1 + rarezip_ptr_target); + iVar3 = iVar2 + 3; + *(undefined *)(rarezip_ptr_target + wp + 2) = + *(undefined *)(iVar2 + 2 + rarezip_ptr_target); + iVar4 = wp + 3; + wp += 4; + iVar2 += 4; + *(undefined *)(rarezip_ptr_target + iVar4) = + *(undefined *)(iVar3 + rarezip_ptr_target); + } + if (true) break; + uVar11 = 0; + } } - } - return 0; + return 0; } @@ -22677,48 +22813,48 @@ LAB_70200990: int inflate_stored(void) { - uint uVar1; - uint uVar2; - uint uVar3; - byte *pbVar4; - - uVar3 = bk - (bk & 7); - bb >>= bk & 7; - while (uVar3 < 0x10) { - pbVar4 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar2 = uVar3 & 0x1f; - uVar3 += 8; - bb |= (uint)*pbVar4 << uVar2; - } - uVar3 -= 0x10; - uVar2 = bb & 0xffff; - bb = 0; - while (uVar3 < 0x10) { - pbVar4 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar1 = uVar3 & 0x1f; - uVar3 += 8; - bb |= (uint)*pbVar4 << uVar1; - } - bb >>= 0x10; - bk = uVar3 - 0x10; - while (uVar2 != 0) { - uVar2 -= 1; - uVar3 = bb; - while (bk < 8) { - pbVar4 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar1 = bk & 0x1f; - bk += 8; - uVar3 |= (uint)*pbVar4 << uVar1; + uint uVar1; + uint uVar2; + uint uVar3; + byte *pbVar4; + + uVar3 = bk - (bk & 7); + bb >>= bk & 7; + while (uVar3 < 0x10) { + pbVar4 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar2 = uVar3 & 0x1f; + uVar3 += 8; + bb |= (uint)*pbVar4 << uVar2; } - bb = uVar3 >> 8; - *(undefined *)(rarezip_ptr_target + wp) = (char)uVar3; - wp += 1; - bk -= 8; - } - return 0; + uVar3 -= 0x10; + uVar2 = bb & 0xffff; + bb = 0; + while (uVar3 < 0x10) { + pbVar4 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar1 = uVar3 & 0x1f; + uVar3 += 8; + bb |= (uint)*pbVar4 << uVar1; + } + bb >>= 0x10; + bk = uVar3 - 0x10; + while (uVar2 != 0) { + uVar2 -= 1; + uVar3 = bb; + while (bk < 8) { + pbVar4 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar1 = bk & 0x1f; + bk += 8; + uVar3 |= (uint)*pbVar4 << uVar1; + } + bb = uVar3 >> 8; + *(undefined *)(rarezip_ptr_target + wp) = (char)uVar3; + wp += 1; + bk -= 8; + } + return 0; } @@ -22728,62 +22864,61 @@ int inflate_stored(void) int inflate_fixed(void) { - uint *puVar1; - uint *puVar2; - uint l [288]; - int bd; - int bl; - huft *td; - huft *tl; - - puVar1 = l; - do { - puVar2 = puVar1 + 4; - puVar1[1] = 8; - puVar1[2] = 8; - puVar1[3] = 8; - *puVar1 = 8; - puVar1 = puVar2; - } while (puVar2 != l + 0x90); - if (puVar2 < l + 0x100) { - puVar1 = puVar2; + uint *puVar1; + uint *puVar2; + uint l [288]; + int bd; + int bl; + huft *td; + huft *tl; + + puVar1 = l; do { - puVar2 = puVar1 + 1; - *puVar1 = 9; - puVar1 = puVar2; - } while (puVar2 < l + 0x100); - } - if (puVar2 < l + 0x118) { - puVar1 = puVar2; + puVar2 = puVar1 + 4; + puVar1[1] = 8; + puVar1[2] = 8; + puVar1[3] = 8; + *puVar1 = 8; + puVar1 = puVar2; + } while (puVar2 != l + 0x90); + if (puVar2 < l + 0x100) { + do { + puVar2 = puVar1 + 1; + *puVar1 = 9; + puVar1 = puVar2; + } while (puVar2 < l + 0x100); + } + if (puVar2 < l + 0x118) { + puVar1 = puVar2; + do { + puVar2 = puVar1 + 1; + *puVar1 = 7; + puVar1 = puVar2; + } while (puVar2 < l + 0x118); + } + if (puVar2 < &bd) { + do { + puVar1 = puVar2 + 1; + *puVar2 = 8; + puVar2 = puVar1; + } while (puVar1 < &bd); + } + huft_build(0x6c,0x20,1,0xa8,0xe8,0xf8,0xf0); + l[1] = 5; + l[0] = 5; + puVar1 = l + 2; do { - puVar2 = puVar1 + 1; - *puVar1 = 7; - puVar1 = puVar2; - } while (puVar2 < l + 0x118); - } - if (puVar2 < &bd) { - do { - puVar1 = puVar2 + 1; - *puVar2 = 8; - puVar2 = puVar1; - } while (puVar1 < &bd); - } - huft_build(0x6c,0x20,1,0xa8,0xe8,0xf8,0xf0); - l[1] = 5; - l[0] = 5; - puVar1 = l + 2; - do { - puVar2 = puVar1 + 4; - puVar1[1] = 5; - puVar1[2] = 5; - puVar1[3] = 5; - *puVar1 = 5; - puVar1 = puVar2; - } while (puVar2 != l + 0x1e); - bd = 5; - huft_build(0x6c,0x1e,0,8,0x44,0xf4,0xec); - inflate_codes(tl._3_1_,td._3_1_,7,(char)bd); - return 0; + puVar2 = puVar1 + 4; + puVar1[1] = 5; + puVar1[2] = 5; + puVar1[3] = 5; + *puVar1 = 5; + puVar1 = puVar2; + } while (puVar2 != l + 0x1e); + bd = 5; + huft_build(0x6c,0x1e,0,8,0x44,0xf4,0xec); + inflate_codes(tl._3_1_,td._3_1_,7,(char)bd); + return 0; } @@ -22793,209 +22928,209 @@ int inflate_fixed(void) int inflate_dynamic(void) { - byte bVar1; - ushort uVar2; - bool bVar3; - word wVar4; - undefined4 uVar5; - undefined4 uVar6; - uint *puVar7; - uint uVar8; - char b_00; - int iVar9; - byte *pbVar10; - ulonglong uVar11; - ulg b_; - ulg b; - uint uVar12; - uint nd; - uint nl; - huft *phVar13; - uint uVar14; - byte *pbVar15; - uint uVar16; - uint ll [316]; - int bd; - int bl; - huft *td; - huft *tl; - uint k; - - b = bk; - b_ = bk; - k = bb; - if (bk < 5) { - do { - pbVar10 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - b = b_ + 8; - k |= (uint)*pbVar10 << (b_ & 0x1f); - b_ = b; - } while (b < 5); - } - uVar12 = b - 5; - nl = (k & 0x1f) + 0x101; - k >>= 5; - while (uVar12 < 5) { - pbVar10 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar14 = uVar12 & 0x1f; - uVar12 += 8; - k |= (uint)*pbVar10 << uVar14; - } - uVar12 -= 5; - nd = (k & 0x1f) + 1; - k >>= 5; - while (uVar12 < 4) { - pbVar10 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar14 = uVar12 & 0x1f; - uVar12 += 8; - k |= (uint)*pbVar10 << uVar14; - } - uVar14 = k >> 4; - uVar12 -= 4; - uVar8 = 0; - if ((k & 0xf) != 0xfffffffc) { - pbVar10 = border; - do { - uVar8 += 1; - while (uVar12 < 3) { - pbVar15 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar16 = uVar12 & 0x1f; - uVar12 += 8; - uVar14 |= (uint)*pbVar15 << uVar16; - } - bVar1 = *pbVar10; - uVar16 = uVar14 & 7; - pbVar10 = pbVar10 + 1; - uVar14 >>= 3; - ll[(uint)bVar1] = uVar16; - uVar12 -= 3; - } while (uVar8 != (k & 0xf) + 4); - } - if (uVar8 < 0x13) { - pbVar10 = border + uVar8; - do { - bVar1 = *pbVar10; - pbVar10 = pbVar10 + 1; - ll[(uint)bVar1] = 0; - } while (pbVar10 < border + 0x13); - } - b_00 = (char)ll; - huft_build(b_00,0x13,0x13,0,0,0xe8,0xe0); - wVar4 = mask_bits[7]; - uVar8 = nl + nd; - uVar11 = 0; - k = 0; - if (uVar8 != 0) { - do { - while (uVar12 < 7) { - pbVar10 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar16 = uVar12 & 0x1f; - uVar12 += 8; - uVar14 |= (uint)*pbVar10 << uVar16; - } - phVar13 = (huft *)((uVar14 & (uint)wVar4) * 8 + (int)tl); - td._3_1_ = SUB41(phVar13,0); - uVar14 >>= (uint)phVar13->b & 0x1f; - uVar12 -= (uint)phVar13->b; - uVar2 = *(ushort *)((int)&phVar13->v + 2); - if (uVar2 < 0x10) { - ll[k] = (uint)uVar2; - k += 1; - uVar11 = (ulonglong)uVar2; -LAB_7020115c: - bVar3 = k < uVar8; - } - else { - if (uVar2 != 0x10) { - uVar11 = 0; - if (uVar2 == 0x11) { - while (uVar12 < 3) { - pbVar10 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar16 = uVar12 & 0x1f; - uVar12 += 8; - uVar14 |= (uint)*pbVar10 << uVar16; - } - uVar16 = uVar14 & 7; - uVar14 >>= 3; - uVar12 -= 3; - iVar9 = uVar16 + 2; - if (uVar16 != 0xfffffffd) { - puVar7 = ll + k; - do { - *puVar7 = 0; - k += 1; - puVar7 = puVar7 + 1; - bVar3 = iVar9 != 0; - iVar9 += -1; - } while (bVar3); - bVar3 = k < uVar8; - goto LAB_70201160; - } - } - else { - while (uVar12 < 7) { - pbVar10 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar16 = uVar12 & 0x1f; - uVar12 += 8; - uVar14 |= (uint)*pbVar10 << uVar16; - } - uVar16 = uVar14 & 0x7f; - uVar14 >>= 7; - uVar12 -= 7; - iVar9 = uVar16 + 10; - if (uVar16 != 0xfffffff5) { - puVar7 = ll + k; - do { - *puVar7 = 0; - k += 1; - puVar7 = puVar7 + 1; - bVar3 = iVar9 != 0; - iVar9 += -1; - } while (bVar3); - } - } - goto LAB_7020115c; - } - while (uVar12 < 2) { - pbVar10 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar16 = uVar12 & 0x1f; - uVar12 += 8; - uVar14 |= (uint)*pbVar10 << uVar16; - } - uVar16 = uVar14 & 3; - uVar14 >>= 2; - uVar12 -= 2; - iVar9 = uVar16 + 2; - if (uVar16 == 0xfffffffd) goto LAB_7020115c; - puVar7 = ll + k; + byte bVar1; + ushort uVar2; + bool bVar3; + undefined4 uVar4; + undefined4 uVar5; + uint *puVar6; + uint uVar7; + char b_00; + int iVar8; + byte *pbVar9; + ulonglong uVar10; + ulg b_; + ulg b; + uint uVar11; + uint nd; + uint nl; + uint uVar12; + uint uVar13; + byte *pbVar14; + uint uVar15; + uint ll [316]; + undefined4 local_30; + uint local_2c; + int bd; + int bl; + huft *td; + huft *tl; + uint k; + + b = bk; + b_ = bk; + uVar12 = bb; + if (bk < 5) { do { - *puVar7 = (uint)uVar11; - k += 1; - puVar7 = puVar7 + 1; - bVar3 = iVar9 != 0; - iVar9 += -1; - } while (bVar3); - bVar3 = k < uVar8; - } + pbVar9 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + b = b_ + 8; + uVar12 |= (uint)*pbVar9 << (b_ & 0x1f); + b_ = b; + } while (b < 5); + } + uVar11 = b - 5; + nl = (uVar12 & 0x1f) + 0x101; + uVar12 >>= 5; + while (uVar11 < 5) { + pbVar9 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar13 = uVar11 & 0x1f; + uVar11 += 8; + uVar12 |= (uint)*pbVar9 << uVar13; + } + uVar11 -= 5; + nd = (uVar12 & 0x1f) + 1; + uVar12 >>= 5; + while (uVar11 < 4) { + pbVar9 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar13 = uVar11 & 0x1f; + uVar11 += 8; + uVar12 |= (uint)*pbVar9 << uVar13; + } + uVar13 = uVar12 >> 4; + uVar11 -= 4; + uVar7 = 0; + if ((uVar12 & 0xf) != 0xfffffffc) { + pbVar9 = border; + do { + uVar7 += 1; + while (uVar11 < 3) { + pbVar14 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar15 = uVar11 & 0x1f; + uVar11 += 8; + uVar13 |= (uint)*pbVar14 << uVar15; + } + bVar1 = *pbVar9; + uVar15 = uVar13 & 7; + pbVar9 = pbVar9 + 1; + uVar13 >>= 3; + ll[bVar1] = uVar15; + uVar11 -= 3; + } while (uVar7 != (uVar12 & 0xf) + 4); + } + if (uVar7 < 0x13) { + pbVar9 = border + uVar7; + do { + bVar1 = *pbVar9; + pbVar9 = pbVar9 + 1; + ll[bVar1] = 0; + } while (pbVar9 < border + 0x13); + } + bl = 7; + b_00 = (char)ll; + huft_build(b_00,0x13,0x13,0,0,0xe8,0xe0); + uVar4 = lbits; + uVar7 = nl + nd; + uVar10 = 0; + uVar12 = 0; + if (uVar7 != 0) { + do { + while (uVar11 < (uint)bl) { + pbVar9 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar15 = uVar11 & 0x1f; + uVar11 += 8; + uVar13 |= (uint)*pbVar9 << uVar15; + } + td = (huft *)((uVar13 & mask_bits[7]) * 8 + (int)tl); + uVar13 >>= (uint)td->b & 0x1f; + uVar11 -= (uint)td->b; + uVar2 = *(ushort *)((int)&td->v + 2); + if (uVar2 < 0x10) { + ll[uVar12] = (uint)uVar2; + uVar12 += 1; + uVar10 = (ulonglong)uVar2; +LAB_7020115c: + bVar3 = uVar12 < uVar7; + } + else { + if (uVar2 != 0x10) { + uVar10 = 0; + if (uVar2 == 0x11) { + while (uVar11 < 3) { + pbVar9 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar15 = uVar11 & 0x1f; + uVar11 += 8; + uVar13 |= (uint)*pbVar9 << uVar15; + } + uVar15 = uVar13 & 7; + uVar13 >>= 3; + uVar11 -= 3; + iVar8 = uVar15 + 2; + if (uVar15 != 0xfffffffd) { + puVar6 = ll + uVar12; + do { + *puVar6 = 0; + uVar12 += 1; + puVar6 = puVar6 + 1; + bVar3 = iVar8 != 0; + iVar8 += -1; + } while (bVar3); + bVar3 = uVar12 < uVar7; + goto LAB_70201160; + } + } + else { + while (uVar11 < 7) { + pbVar9 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar15 = uVar11 & 0x1f; + uVar11 += 8; + uVar13 |= (uint)*pbVar9 << uVar15; + } + uVar15 = uVar13 & 0x7f; + uVar13 >>= 7; + uVar11 -= 7; + iVar8 = uVar15 + 10; + if (uVar15 != 0xfffffff5) { + puVar6 = ll + uVar12; + do { + *puVar6 = 0; + uVar12 += 1; + puVar6 = puVar6 + 1; + bVar3 = iVar8 != 0; + iVar8 += -1; + } while (bVar3); + } + } + goto LAB_7020115c; + } + while (uVar11 < 2) { + pbVar9 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar15 = uVar11 & 0x1f; + uVar11 += 8; + uVar13 |= (uint)*pbVar9 << uVar15; + } + uVar15 = uVar13 & 3; + uVar13 >>= 2; + uVar11 -= 2; + iVar8 = uVar15 + 2; + if (uVar15 == 0xfffffffd) goto LAB_7020115c; + puVar6 = ll + uVar12; + do { + *puVar6 = (uint)uVar10; + uVar12 += 1; + puVar6 = puVar6 + 1; + bVar3 = iVar8 != 0; + iVar8 += -1; + } while (bVar3); + bVar3 = uVar12 < uVar7; + } LAB_70201160: - } while (bVar3); - } - uVar5 = lbits; - bb = uVar14; - bk = uVar12; - huft_build(b_00,(char)nl,1,0xa8,0xe8,0xe8,0xe0); - uVar6 = dbits; - huft_build(b_00 + (char)nl * '\x04',(char)nd,0,8,0x44,0xe4,0xdc); - inflate_codes(tl._3_1_,td._3_1_,(char)uVar5,(char)uVar6); - return 0; + } while (bVar3); + } + bb = uVar13; + bk = uVar11; + huft_build(b_00,(char)nl,1,0xa8,0xe8,0xe8,0xe0); + uVar5 = dbits; + huft_build(b_00 + (char)(nl << 2),(undefined)local_30,0,8,0x44,0xe4,0xdc); + inflate_codes(tl._3_1_,td._3_1_,(char)uVar4,(char)uVar5); + return 0; } @@ -23003,52 +23138,52 @@ LAB_70201160: int inflate_block(char e) { - uint uVar1; - uint t; - int iVar2; - uint uVar3; - uint uVar4; - byte *pbVar5; - - if (bk == 0) { - do { - pbVar5 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar3 = bk & 0x1f; - bk += 8; - bb |= (uint)*pbVar5 << uVar3; - } while (bk == 0); - } - uVar3 = bk - 1; - uVar4 = bb >> 1; - *(uint *)(int)e = bb & 1; - while (uVar3 < 2) { - pbVar5 = (byte *)(rarezip_ptr_source + inptr); - inptr += 1; - uVar1 = uVar3 & 0x1f; - uVar3 += 8; - uVar4 |= (uint)*pbVar5 << uVar1; - } - t = uVar4 & 3; - bb = uVar4 >> 2; - bk = uVar3 - 2; - if (t == 2) { - iVar2 = inflate_dynamic(); - } - else { - if (t == 0) { - iVar2 = inflate_stored(); + uint uVar1; + uint t; + int iVar2; + uint uVar3; + uint uVar4; + byte *pbVar5; + + if (bk == 0) { + do { + pbVar5 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar3 = bk & 0x1f; + bk += 8; + bb |= (uint)*pbVar5 << uVar3; + } while (bk == 0); + } + uVar3 = bk - 1; + uVar4 = bb >> 1; + *(uint *)(int)e = bb & 1; + while (uVar3 < 2) { + pbVar5 = (byte *)(rarezip_ptr_source + inptr); + inptr += 1; + uVar1 = uVar3 & 0x1f; + uVar3 += 8; + uVar4 |= (uint)*pbVar5 << uVar1; + } + t = uVar4 & 3; + bb = uVar4 >> 2; + bk = uVar3 - 2; + if (t == 2) { + iVar2 = inflate_dynamic(); } else { - if (t == 1) { - iVar2 = inflate_fixed(); - } - else { - iVar2 = 2; - } + if (t == 0) { + iVar2 = inflate_stored(); + } + else { + if (t == 1) { + iVar2 = inflate_fixed(); + } + else { + iVar2 = 2; + } + } } - } - return iVar2; + return iVar2; } @@ -23056,29 +23191,29 @@ int inflate_block(char e) int inflate(void) { - int r; - uint h; - int e; - - wp = 0; - bk = 0; - bb = 0; - h = 0; - do { - hufts = 0; - r = inflate_block(0xfc); - if (r != 0) { - return r; + int r; + uint h; + int e; + + wp = 0; + bk = 0; + bb = 0; + h = 0; + do { + hufts = 0; + r = inflate_block(0xfc); + if (r != 0) { + return r; + } + if (h < hufts) { + h = hufts; + } + } while (e == 0); + while (7 < bk) { + bk -= 8; + inptr += -1; } - if (h < hufts) { - h = hufts; - } - } while (e == 0); - while (7 < bk) { - bk -= 8; - inptr += -1; - } - return 0; + return 0; } @@ -23086,13 +23221,13 @@ int inflate(void) void decompress_entry(int source,int target,int buffer) { - rarezip_ptr_source = source + 2; - wp = 0; - inptr = 0; - rarezip_ptr_target = target; - rarezip_ptrbuffer = buffer; - inflate(); - return; + rarezip_ptr_source = source + 2; + wp = 0; + inptr = 0; + rarezip_ptr_target = target; + rarezip_ptrbuffer = buffer; + inflate(); + return; } @@ -23100,32 +23235,32 @@ void decompress_entry(int source,int target,int buffer) void initGameData(void) { - current_menu = ~MENU_LEGAL_SCREEN; - menu_update = MENU_LEGAL_SCREEN; - maybe_prev_menu = ~MENU_LEGAL_SCREEN; - menu_timer = 0; - selected_folder_num = 0; - selected_stage = LEVELID_NONE; - briefingpage = 0xffffffff; - selected_difficulty = DIFFICULTY_MULTI; - folder_selection_screen_option_icon = 0; - mission_failed_or_aborted = FALSE; - is_first_time_on_legal_screen = TRUE; - is_first_time_on_main_menu = TRUE; - prev_keypresses = 0; - maybe_is_in_menu = TRUE; - screen_size = SCREEN_SIZE_320x240; - slider_007_mode_reaction = 0.00000000; - slider_007_mode_health = 1.00000000; - slider_007_mode_accuracy = 1.00000000; - slider_007_mode_damage = 1.00000000; - do_not_play_intro_movie = 0; - randomly_selected_intro_animation = 0; - intro_animation_count = 0; - objinstance = NULL; - ptrobjinstance = NULL; - full_actor_intro = FALSE; - return; + current_menu = ~MENU_LEGAL_SCREEN; + menu_update = MENU_LEGAL_SCREEN; + maybe_prev_menu = ~MENU_LEGAL_SCREEN; + menu_timer = 0; + selected_folder_num = 0; + selected_stage = LEVELID_NONE; + briefingpage = 0xffffffff; + selected_difficulty = DIFFICULTY_MULTI; + folder_selection_screen_option_icon = 0; + mission_failed_or_aborted = FALSE; + is_first_time_on_legal_screen = TRUE; + is_first_time_on_main_menu = TRUE; + prev_keypresses = 0; + maybe_is_in_menu = TRUE; + screen_size = SCREEN_SIZE_320x240; + slider_007_mode_reaction = 0.00000000; + slider_007_mode_health = 1.00000000; + slider_007_mode_accuracy = 1.00000000; + slider_007_mode_damage = 1.00000000; + do_not_play_intro_movie = 0; + randomly_selected_intro_animation = 0; + intro_animation_count = 0; + objinstance = NULL; + ptrobjinstance = NULL; + full_actor_intro = FALSE; + return; } @@ -23133,9 +23268,9 @@ void initGameData(void) void init_weapon_animation_groups_maybe(void) { - set_8003608C(get_ptr_allocated_block_for_weapon_vertices); - somethingwith_weapon_animation_groups(); - return; + set_8003608C(get_ptr_allocated_block_for_weapon_vertices); + somethingwith_weapon_animation_groups(); + return; } @@ -23143,28 +23278,28 @@ void init_weapon_animation_groups_maybe(void) void reset_counter_rand_body_head(void) { - num_bodies = 0; - if (-1 < list_of_bodies[0]) { - num_bodies = 1; - while (-1 < (int)list_of_bodies[num_bodies]) { - num_bodies += 1; + num_bodies = 0; + if (-1 < list_of_bodies[0]) { + num_bodies = 1; + while (-1 < (int)list_of_bodies[num_bodies]) { + num_bodies += 1; + } } - } - num_male_heads = 0; - if (-1 < random_male_heads[0]) { - num_male_heads = 1; - while (-1 < (int)random_male_heads[num_male_heads]) { - num_male_heads += 1; + num_male_heads = 0; + if (-1 < random_male_heads[0]) { + num_male_heads = 1; + while (-1 < (int)random_male_heads[num_male_heads]) { + num_male_heads += 1; + } } - } - num_female_heads = 0; - if (-1 < random_female_heads[0]) { - num_female_heads = 1; - while (-1 < (int)random_female_heads[num_female_heads]) { - num_female_heads += 1; + num_female_heads = 0; + if (-1 < random_female_heads[0]) { + num_female_heads = 1; + while (-1 < (int)random_female_heads[num_female_heads]) { + num_female_heads += 1; + } } - } - return; + return; } @@ -23172,19 +23307,19 @@ void reset_counter_rand_body_head(void) uint proc_7F0001F0(int param_1,int param_2,int param_3) { - uint uVar1; - uint uVar2; - short asStack8 [4]; - - uVar2 = 0; - if (param_2 < param_3) { - do { - uVar1 = proc_7F06D2E4(0,0,(int)&model_guard_character,param_1,param_2,asStack8); - param_2 += 1; - uVar2 = uVar2 + uVar1 & 0xffff; - } while (param_2 < param_3); - } - return uVar2; + uint uVar1; + uint uVar2; + short asStack8 [4]; + + uVar2 = 0; + if (param_2 < param_3) { + do { + uVar1 = proc_7F06D2E4(0,0,(int)&model_guard_character,param_1,param_2,asStack8); + param_2 += 1; + uVar2 = uVar2 + uVar1 & 0xffff; + } while (param_2 < param_3); + } + return uVar2; } @@ -23192,19 +23327,19 @@ uint proc_7F0001F0(int param_1,int param_2,int param_3) int proc_7F000290(int param_1,int param_2,int param_3) { - int iVar1; - short asStack12 [2]; - short sStack8; - - iVar1 = 0; - if (param_2 < param_3) { - do { - proc_7F06D2E4(0,0,(int)&model_guard_character,param_1,param_2,asStack12); - param_2 += 1; - iVar1 += (int)sStack8; - } while (param_2 < param_3); - } - return iVar1; + int iVar1; + short asStack12 [2]; + short sStack8; + + iVar1 = 0; + if (param_2 < param_3) { + do { + proc_7F06D2E4(0,0,(int)&model_guard_character,param_1,param_2,asStack12); + param_2 += 1; + iVar1 += sStack8; + } while (param_2 < param_3); + } + return iVar1; } @@ -23212,48 +23347,48 @@ int proc_7F000290(int param_1,int param_2,int param_3) int proc_7F00032C(int *param_1) { - float fVar1; - float fVar2; - int iVar3; - uint uVar4; - int iVar5; - float fVar6; - float fVar7; - - fVar2 = flt_8004ED74; - fVar1 = flt_8004ED70; - iVar3 = *param_1; - iVar5 = 0; - while (iVar3 != 0) { - *param_1 = iVar3 + ptr_animation_table; - iVar3 = proc_7F05C3D8((float)param_1[1]); - uVar4 = proc_7F0001F0(*param_1,0,iVar3); - fVar6 = (float)param_1[1]; - uVar4 &= 0xffff; - if (0.00000000 < fVar6) { - if (uVar4 < 0x8000) { - fVar7 = (float)uVar4; - if (false) { - fVar7 = fVar7 + 4294967296.00000000; + float fVar1; + float fVar2; + int iVar3; + uint uVar4; + int iVar5; + float fVar6; + float fVar7; + + fVar2 = flt_8004ED74; + fVar1 = flt_8004ED70; + iVar3 = *param_1; + iVar5 = 0; + while (iVar3 != 0) { + *param_1 = iVar3 + ptr_animation_table; + iVar3 = proc_7F05C3D8((float)param_1[1]); + uVar4 = proc_7F0001F0(*param_1,0,iVar3); + fVar6 = (float)param_1[1]; + uVar4 &= 0xffff; + if (0.00000000 < fVar6) { + if (uVar4 < 0x8000) { + fVar7 = (float)uVar4; + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + *(float *)(param_1 + 2) = (fVar7 * fVar2) / fVar6; + } + else { + fVar7 = (float)uVar4; + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + *(float *)(param_1 + 2) = (fVar7 * fVar2 - fVar1) / fVar6; + } } - *(float *)(param_1 + 2) = (fVar7 * fVar2) / fVar6; - } - else { - fVar7 = (float)uVar4; - if (false) { - fVar7 = fVar7 + 4294967296.00000000; + else { + param_1[2] = 0; } - *(float *)(param_1 + 2) = (fVar7 * fVar2 - fVar1) / fVar6; - } + iVar3 = param_1[0x12]; + param_1 = param_1 + 0x12; + iVar5 += 1; } - else { - param_1[2] = 0; - } - iVar3 = param_1[0x12]; - param_1 = param_1 + 0x12; - iVar5 += 1; - } - return iVar5; + return iVar5; } @@ -23261,19 +23396,19 @@ int proc_7F00032C(int *param_1) void proc_7F00046C(int **param_1) { - int iVar1; - int iVar2; - - iVar2 = 0; - do { - if ((int)(*param_1)[1] < 0) { - iVar1 = proc_7F00032C((int *)**param_1); - (*param_1)[1] = iVar1; - } - iVar2 += 4; - param_1 = param_1 + 1; - } while (iVar2 != 0x80); - return; + int iVar1; + int iVar2; + + iVar2 = 0; + do { + if ((int)(*param_1)[1] < 0) { + iVar1 = proc_7F00032C((int *)**param_1); + (*param_1)[1] = iVar1; + } + iVar2 += 4; + param_1 = param_1 + 1; + } while (iVar2 != 0x80); + return; } @@ -23281,22 +23416,22 @@ void proc_7F00046C(int **param_1) int proc_7F0004D0(int *param_1) { - int iVar1; - int iVar2; - int iVar3; - - iVar1 = 0; - if (*param_1 != 0) { - iVar2 = *param_1; - do { - iVar1 += 1; - iVar3 = iVar2 + ptr_animation_table; - iVar2 = param_1[7]; - *param_1 = iVar3; - param_1 = param_1 + 7; - } while (iVar2 != 0); - } - return iVar1; + int iVar1; + int iVar2; + int iVar3; + + iVar1 = 0; + if (*param_1 != 0) { + iVar2 = *param_1; + do { + iVar1 += 1; + iVar3 = iVar2 + ptr_animation_table; + iVar2 = param_1[7]; + *param_1 = iVar3; + param_1 = param_1 + 7; + } while (iVar2 != 0); + } + return iVar1; } @@ -23304,111 +23439,111 @@ int proc_7F0004D0(int *param_1) void somethingwith_weapon_animation_groups(void) { - float fVar1; - int iVar2; - struck_animation_table *psVar3; - animation_something *paVar4; - float fVar5; - - if (dword_8002C914.anonymous_0 != -1) { - psVar3 = dword_8002C914.field_1C; - paVar4 = &dword_8002C914; - while( true ) { - if (psVar3 == NULL) { - psVar3 = paVar4->field_24; - } - else { - iVar2 = proc_7F0004D0((int *)psVar3); - paVar4->field_20 = iVar2; - psVar3 = paVar4->field_24; - } - if (psVar3 == NULL) { - iVar2 = paVar4[1].anonymous_0; - } - else { - iVar2 = proc_7F0004D0((int *)psVar3); - paVar4->field_28 = iVar2; - iVar2 = paVar4[1].anonymous_0; - } - if (iVar2 == -1) break; - psVar3 = paVar4[1].field_1C; - paVar4 = paVar4 + 1; + float fVar1; + int iVar2; + struck_animation_table *psVar3; + animation_something *paVar4; + float fVar5; + + if (dword_8002C914.anonymous_0 != -1) { + psVar3 = dword_8002C914.field_1C; + paVar4 = &dword_8002C914; + while( true ) { + if (psVar3 == NULL) { + psVar3 = paVar4->field_24; + } + else { + iVar2 = proc_7F0004D0((int *)psVar3); + paVar4->field_20 = iVar2; + psVar3 = paVar4->field_24; + } + if (psVar3 == NULL) { + iVar2 = paVar4[1].anonymous_0; + } + else { + iVar2 = proc_7F0004D0((int *)psVar3); + paVar4->field_28 = iVar2; + iVar2 = paVar4[1].anonymous_0; + } + if (iVar2 == -1) break; + psVar3 = paVar4[1].field_1C; + paVar4 = paVar4 + 1; + } } - } - proc_7F0004D0((int *)&stru_8002DEBC); - proc_7F00046C((int **)ptr_rifle_firing_animation_groups); - proc_7F00046C((int **)ptr_pistol_firing_animation_groups); - proc_7F00046C((int **)ptr_doubles_firing_animation_groups); - proc_7F00046C((int **)ptr_crouched_rifle_firing_animation_groups); - proc_7F00046C((int **)ptr_crouched_pistol_firing_animation_groups); - proc_7F00046C((int **)ptr_crouched_doubles_firing_animation_groups); - proc_7F00032C((int *)&stru_80030078); - proc_7F00032C((int *)&stru_80030660); - iVar2 = proc_7F000290(ptr_animation_table + 0x4018,0, - (uint)*(ushort *)(ptr_animation_table + 0x401c) - 1); - fVar1 = flt_8004ED78; - dword_80030984 = (float)(uint)*(ushort *)(ptr_animation_table + 0x401c); - if (false) { - dword_80030984 = dword_80030984 + 4294967296.00000000; - } - dword_80030984 = ((float)iVar2 * flt_8004ED78) / dword_80030984; - iVar2 = proc_7F000290(ptr_animation_table + 0x40d4,0, - (uint)*(ushort *)(ptr_animation_table + 0x40d8) - 1); - dword_80030988 = (float)(uint)*(ushort *)(ptr_animation_table + 0x40d8); - if (false) { - dword_80030988 = dword_80030988 + 4294967296.00000000; - } - dword_80030988 = ((float)iVar2 * fVar1) / dword_80030988; - iVar2 = proc_7F000290(ptr_animation_table + 0x4070,0, - (uint)*(ushort *)(ptr_animation_table + 0x4074) - 1); - dword_8003098C = (float)(uint)*(ushort *)(ptr_animation_table + 0x4074); - if (false) { - dword_8003098C = dword_8003098C + 4294967296.00000000; - } - dword_8003098C = ((float)iVar2 * fVar1) / dword_8003098C; - iVar2 = proc_7F000290(ptr_animation_table + 0x8204,0, - (uint)*(ushort *)(ptr_animation_table + 0x8208) - 1); - dword_80030990 = (float)(uint)*(ushort *)(ptr_animation_table + 0x8208); - if (false) { - dword_80030990 = dword_80030990 + 4294967296.00000000; - } - dword_80030990 = ((float)iVar2 * fVar1) / dword_80030990; - iVar2 = proc_7F000290(ptr_animation_table + 0x777c,0, - (uint)*(ushort *)(ptr_animation_table + 0x7780) - 1); - dword_80030994 = (float)(uint)*(ushort *)(ptr_animation_table + 0x7780); - if (false) { - dword_80030994 = dword_80030994 + 4294967296.00000000; - } - dword_80030994 = ((float)iVar2 * fVar1) / dword_80030994; - iVar2 = proc_7F000290(ptr_animation_table + 0x77d4,0, - (uint)*(ushort *)(ptr_animation_table + 0x77d8) - 1); - dword_80030998 = (float)(uint)*(ushort *)(ptr_animation_table + 0x77d8); - if (false) { - dword_80030998 = dword_80030998 + 4294967296.00000000; - } - dword_80030998 = ((float)iVar2 * fVar1) / dword_80030998; - iVar2 = proc_7F000290(ptr_animation_table + 0x84c4,0, - (uint)*(ushort *)(ptr_animation_table + 0x84c8) - 1); - dword_8003099C = (float)(uint)*(ushort *)(ptr_animation_table + 0x84c8); - if (false) { - dword_8003099C = dword_8003099C + 4294967296.00000000; - } - dword_8003099C = ((float)iVar2 * fVar1) / dword_8003099C; - iVar2 = proc_7F000290(ptr_animation_table + 0x8520,0, - (uint)*(ushort *)(ptr_animation_table + 0x8524) - 1); - dword_800309A0 = (float)(uint)*(ushort *)(ptr_animation_table + 0x8524); - if (false) { - dword_800309A0 = dword_800309A0 + 4294967296.00000000; - } - dword_800309A0 = ((float)iVar2 * fVar1) / dword_800309A0; - iVar2 = proc_7F000290(ptr_animation_table + 0x77d4,0, - (uint)*(ushort *)(ptr_animation_table + 0x77d8) - 1); - fVar5 = (float)(uint)*(ushort *)(ptr_animation_table + 0x77d8); - if (false) { - fVar5 = fVar5 + 4294967296.00000000; - } - dword_800309A4 = ((float)iVar2 * fVar1) / fVar5; - return; + proc_7F0004D0((int *)&stru_8002DEBC); + proc_7F00046C((int **)ptr_rifle_firing_animation_groups); + proc_7F00046C((int **)ptr_pistol_firing_animation_groups); + proc_7F00046C((int **)ptr_doubles_firing_animation_groups); + proc_7F00046C((int **)ptr_crouched_rifle_firing_animation_groups); + proc_7F00046C((int **)ptr_crouched_pistol_firing_animation_groups); + proc_7F00046C((int **)ptr_crouched_doubles_firing_animation_groups); + proc_7F00032C((int *)&stru_80030078); + proc_7F00032C((int *)&stru_80030660); + iVar2 = proc_7F000290(ptr_animation_table + 0x4018,0, + (uint)*(ushort *)(ptr_animation_table + 0x401c) - 1); + fVar1 = flt_8004ED78; + dword_80030984 = (float)(uint)*(ushort *)(ptr_animation_table + 0x401c); + if (false) { + dword_80030984 = dword_80030984 + 4294967296.00000000; + } + dword_80030984 = ((float)iVar2 * flt_8004ED78) / dword_80030984; + iVar2 = proc_7F000290(ptr_animation_table + 0x40d4,0, + (uint)*(ushort *)(ptr_animation_table + 0x40d8) - 1); + dword_80030988 = (float)(uint)*(ushort *)(ptr_animation_table + 0x40d8); + if (false) { + dword_80030988 = dword_80030988 + 4294967296.00000000; + } + dword_80030988 = ((float)iVar2 * fVar1) / dword_80030988; + iVar2 = proc_7F000290(ptr_animation_table + 0x4070,0, + (uint)*(ushort *)(ptr_animation_table + 0x4074) - 1); + dword_8003098C = (float)(uint)*(ushort *)(ptr_animation_table + 0x4074); + if (false) { + dword_8003098C = dword_8003098C + 4294967296.00000000; + } + dword_8003098C = ((float)iVar2 * fVar1) / dword_8003098C; + iVar2 = proc_7F000290(ptr_animation_table + 0x8204,0, + (uint)*(ushort *)(ptr_animation_table + 0x8208) - 1); + dword_80030990 = (float)(uint)*(ushort *)(ptr_animation_table + 0x8208); + if (false) { + dword_80030990 = dword_80030990 + 4294967296.00000000; + } + dword_80030990 = ((float)iVar2 * fVar1) / dword_80030990; + iVar2 = proc_7F000290(ptr_animation_table + 0x777c,0, + (uint)*(ushort *)(ptr_animation_table + 0x7780) - 1); + dword_80030994 = (float)(uint)*(ushort *)(ptr_animation_table + 0x7780); + if (false) { + dword_80030994 = dword_80030994 + 4294967296.00000000; + } + dword_80030994 = ((float)iVar2 * fVar1) / dword_80030994; + iVar2 = proc_7F000290(ptr_animation_table + 0x77d4,0, + (uint)*(ushort *)(ptr_animation_table + 0x77d8) - 1); + dword_80030998 = (float)(uint)*(ushort *)(ptr_animation_table + 0x77d8); + if (false) { + dword_80030998 = dword_80030998 + 4294967296.00000000; + } + dword_80030998 = ((float)iVar2 * fVar1) / dword_80030998; + iVar2 = proc_7F000290(ptr_animation_table + 0x84c4,0, + (uint)*(ushort *)(ptr_animation_table + 0x84c8) - 1); + dword_8003099C = (float)(uint)*(ushort *)(ptr_animation_table + 0x84c8); + if (false) { + dword_8003099C = dword_8003099C + 4294967296.00000000; + } + dword_8003099C = ((float)iVar2 * fVar1) / dword_8003099C; + iVar2 = proc_7F000290(ptr_animation_table + 0x8520,0, + (uint)*(ushort *)(ptr_animation_table + 0x8524) - 1); + dword_800309A0 = (float)(uint)*(ushort *)(ptr_animation_table + 0x8524); + if (false) { + dword_800309A0 = dword_800309A0 + 4294967296.00000000; + } + dword_800309A0 = ((float)iVar2 * fVar1) / dword_800309A0; + iVar2 = proc_7F000290(ptr_animation_table + 0x77d4,0, + (uint)*(ushort *)(ptr_animation_table + 0x77d8) - 1); + fVar5 = (float)(uint)*(ushort *)(ptr_animation_table + 0x77d8); + if (false) { + fVar5 = fVar5 + 4294967296.00000000; + } + dword_800309A4 = ((float)iVar2 * fVar1) / fVar5; + return; } @@ -23416,8 +23551,8 @@ void somethingwith_weapon_animation_groups(void) void proc_7F000980(void) { - proc_7F0009A0(); - return; + proc_7F0009A0(); + return; } @@ -23425,15 +23560,15 @@ void proc_7F000980(void) void proc_7F0009A0(void) { - undefined *puVar1; - - puVar1 = &DAT_80075dc8; - do { - puVar1 = puVar1 + 0xa0; - *(undefined4 *)(puVar1 + 0x9c) = 0; - puVar1 = puVar1; - } while (puVar1 < &DAT_80076a48); - return; + undefined *puVar1; + + puVar1 = &DAT_80075dc8; + do { + puVar1 = puVar1 + 0xa0; + *(undefined4 *)(puVar1 + 0x9c) = 0; + puVar1 = puVar1; + } while (puVar1 < &DAT_80076a48); + return; } @@ -23441,7 +23576,7 @@ void proc_7F0009A0(void) void removed_7f0009d0(void) { - return; + return; } @@ -23449,10 +23584,10 @@ void removed_7f0009d0(void) void proc_7F0009E0(undefined4 param_1,undefined4 param_2,undefined4 param_3) { - dword_80036414 = param_1; - dword_80036418 = param_2; - dword_8003641C = param_3; - return; + dword_80036414 = param_1; + dword_80036418 = param_2; + dword_8003641C = param_3; + return; } @@ -23460,42 +23595,42 @@ void proc_7F0009E0(undefined4 param_1,undefined4 param_2,undefined4 param_3) void expand_ani_table_entries(int **param_1) { - int **ppiVar1; - int *piVar2; - - piVar2 = *param_1; - if (piVar2 != NULL) { + int **ppiVar1; + int *piVar2; + piVar2 = *param_1; - ppiVar1 = param_1; - do { - if (piVar2 == (int *)((int)&rgba + 1)) { - piVar2 = ppiVar1[1]; - } - else { - piVar2 = (int *)((int)piVar2 + ptr_animation_table); - *ppiVar1 = piVar2; - piVar2[2] = piVar2[2] + ptr_animation_table; - (*ppiVar1)[4] = (*ppiVar1)[4] + ptr_animation_table; - piVar2 = ppiVar1[1]; - } - ppiVar1 = ppiVar1 + 1; - } while (piVar2 != NULL); - piVar2 = *param_1; - } - if (piVar2 != NULL) { - piVar2 = *param_1; - do { - if (piVar2 == (int *)((int)&rgba + 1)) { - piVar2 = param_1[1]; - } - else { - *(undefined **)piVar2 = &animation_table + *piVar2; - piVar2 = param_1[1]; - } - param_1 = param_1 + 1; - } while (piVar2 != NULL); - } - return; + if (piVar2 != NULL) { + piVar2 = *param_1; + ppiVar1 = param_1; + do { + if (piVar2 == (int *)((int)&rgba + 1)) { + piVar2 = ppiVar1[1]; + } + else { + piVar2 = (int *)((int)piVar2 + ptr_animation_table); + *ppiVar1 = piVar2; + piVar2[2] = piVar2[2] + ptr_animation_table; + (*ppiVar1)[4] = (*ppiVar1)[4] + ptr_animation_table; + piVar2 = ppiVar1[1]; + } + ppiVar1 = ppiVar1 + 1; + } while (piVar2 != NULL); + piVar2 = *param_1; + } + if (piVar2 != NULL) { + piVar2 = *param_1; + do { + if (piVar2 == (int *)((int)&rgba + 1)) { + piVar2 = param_1[1]; + } + else { + *(undefined **)piVar2 = &_animation_tableSegmentRomStart + *piVar2; + piVar2 = param_1[1]; + } + param_1 = param_1 + 1; + } while (piVar2 != NULL); + } + return; } @@ -23503,13 +23638,13 @@ void expand_ani_table_entries(int **param_1) void alloc_load_expand_ani_table(void) { - osCreateMesgQueue(&animMQ,animMesg,8); - proc_7F0009E0(&dword_80029D60,&animMQ,&DAT_80069458); - ptr_animation_table = (char *)allocate_bytes_in_bank(0xe7e0,6); - romCopy(ptr_animation_table,animation_data,0xe7e0); - expand_ani_table_entries((int **)animation_table_ptrs1); - expand_ani_table_entries((int **)animation_table_ptrs2); - return; + osCreateMesgQueue(&animMQ,animMesg,8); + proc_7F0009E0(&dword_80029D60,&animMQ,&DAT_80069458); + ptr_animation_table = (char *)mempAllocBytesInBank(0xe7e0,'\x06'); + romCopy(ptr_animation_table,animation_data,0xe7e0); + expand_ani_table_entries((int **)animation_table_ptrs1); + expand_ani_table_entries((int **)animation_table_ptrs2); + return; } @@ -23517,8 +23652,8 @@ void alloc_load_expand_ani_table(void) void setup_ptr_playergait(void) { - ptr_player_gait_object.offset_obj_table = (int)&playergait; - return; + ptr_player_gait_object.offset_obj_table = &playergait; + return; } @@ -23526,11 +23661,11 @@ void setup_ptr_playergait(void) void set_gu_scale(void) { - float x; - float y; - - guScale((Mtx *)&DAT_8007a100,x,y,default_gu_scale); - return; + float in_f12; + float in_f14; + + guScale((Mtx *)&DAT_8007a100,in_f12,in_f14,default_gu_scale); + return; } @@ -23538,7 +23673,7 @@ void set_gu_scale(void) void removed_7f000bc0(void) { - return; + return; } @@ -23546,31 +23681,31 @@ void removed_7f000bc0(void) void image_entries_load(void) { - image_entry *piVar1; - image_entry *piVar2; - uint uVar3; - uint uVar4; - uint uVar5; - uint uVar6; - - piVar1 = image_entries; - uVar3 = 0; - piVar2 = image_entries; - if ((image_entries[0]._0_4_ & 0xffffff) != 0xffff) { - uVar5 = image_entries[0]._0_4_ & 0xffffff; - uVar4 = image_entries[0]._0_4_; - do { - uVar6 = (uVar3 & 0xffffff ^ uVar4) & 0xffffff ^ uVar4; - uVar4 = *(uint *)(piVar1 + 1); - uVar3 += uVar5; - *(uint *)piVar1 = uVar6; - uVar5 = uVar4 & 0xffffff; - piVar1 = piVar1 + 1; - piVar2 = piVar1; - } while (uVar5 != 0xffff); - } - *(uint *)piVar2 = (uVar3 & 0xffffff ^ *(uint *)piVar2) & 0xffffff ^ *(uint *)piVar2; - return; + image_entry *piVar1; + image_entry *piVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + + piVar1 = image_entries; + uVar3 = 0; + piVar2 = image_entries; + if ((image_entries[0]._0_4_ & 0xffffff) != 0xffff) { + uVar5 = image_entries[0]._0_4_ & 0xffffff; + uVar4 = image_entries[0]._0_4_; + do { + uVar6 = (uVar3 & 0xffffff ^ uVar4) & 0xffffff ^ uVar4; + uVar4 = *(uint *)(piVar1 + 1); + uVar3 += uVar5; + *(uint *)piVar1 = uVar6; + uVar5 = uVar4 & 0xffffff; + piVar1 = piVar1 + 1; + piVar2 = piVar1; + } while (uVar5 != 0xffff); + } + *(uint *)piVar2 = (uVar3 & 0xffffff ^ *(uint *)piVar2) & 0xffffff ^ *(uint *)piVar2; + return; } @@ -23578,15 +23713,15 @@ void image_entries_load(void) void alloc_intro_matrices(void) { - DAT_8002a7d0 = 0; - matrix_buffer_rarelogo_0 = allocate_bytes_in_bank(0x80,4); - matrix_buffer_gunbarrel_0 = (Mtx *)allocate_bytes_in_bank(0x40,4); - matrix_buffer_rarelogo_1 = allocate_bytes_in_bank(0x80,4); - matrix_buffer_rarelogo_2 = allocate_bytes_in_bank(0x80,4); - matrix_buffer_gunbarrel_1 = allocate_bytes_in_bank(0x80,4); - matrix_buffer_intro_backdrop = allocate_bytes_in_bank(0x80,4); - matrix_buffer_intro_bond = allocate_bytes_in_bank(0x80,4); - return; + DAT_8002a7d0 = 0; + matrix_buffer_rarelogo_0 = mempAllocBytesInBank(0x80,'\x04'); + matrix_buffer_gunbarrel_0 = (Mtx *)mempAllocBytesInBank(0x40,'\x04'); + matrix_buffer_rarelogo_1 = mempAllocBytesInBank(0x80,'\x04'); + matrix_buffer_rarelogo_2 = mempAllocBytesInBank(0x80,'\x04'); + matrix_buffer_gunbarrel_1 = mempAllocBytesInBank(0x80,'\x04'); + matrix_buffer_intro_backdrop = mempAllocBytesInBank(0x80,'\x04'); + matrix_buffer_intro_bond = mempAllocBytesInBank(0x80,'\x04'); + return; } @@ -23594,35 +23729,35 @@ void alloc_intro_matrices(void) void init_menus_or_reset(void) { - uint uVar1; - - current_menu = ~MENU_LEGAL_SCREEN; - maybe_prev_menu = ~MENU_LEGAL_SCREEN; - screen_size = SCREEN_SIZE_320x240; - spectrum_related_flag = TRUE; - is_emulating_spectrum = FALSE; - folder_selection_screen_option_icon = 0; - folder_selected_for_deletion = -1; - folder_selected_for_deletion_choice = 1; - tab_1_highlight = FALSE; - tab_2_highlight = FALSE; - tab_3_highlight = FALSE; - maybe_is_in_menu = TRUE; - if (prev_keypresses != 0) { - menu_update = MENU_FILE_SELECT; - } - if ((int)menu_update < 0) { - menu_update = MENU_FILE_SELECT; - } - ptr_logo_and_walletbond_DL = (undefined *)allocate_bytes_in_bank(0x78000,4); - uVar1 = allocate_bytes_in_bank(0x4b040,4); - ptr_menu_videobuffer = (undefined *)(uVar1 + 0x3f & 0xffffffc0); - ptr_folder_object_instance = NULL; - set0_never_used = 0; - set0_never_used_0 = 0; - dword_8002A968 = 0; - alloc_intro_matrices(); - return; + uint uVar1; + + current_menu = ~MENU_LEGAL_SCREEN; + maybe_prev_menu = ~MENU_LEGAL_SCREEN; + screen_size = SCREEN_SIZE_320x240; + spectrum_related_flag = TRUE; + is_emulating_spectrum = FALSE; + folder_selection_screen_option_icon = 0; + folder_selected_for_deletion = -1; + folder_selected_for_deletion_choice = 1; + tab_1_highlight = FALSE; + tab_2_highlight = FALSE; + tab_3_highlight = FALSE; + maybe_is_in_menu = TRUE; + if (prev_keypresses != 0) { + menu_update = MENU_FILE_SELECT; + } + if ((int)menu_update < 0) { + menu_update = MENU_FILE_SELECT; + } + ptr_logo_and_walletbond_DL = (Gfx *)mempAllocBytesInBank(0x78000,'\x04'); + uVar1 = mempAllocBytesInBank(0x4b040,'\x04'); + ptr_menu_videobuffer = (undefined *)(uVar1 + 0x3f & 0xffffffc0); + ptr_folder_object_instance = NULL; + set0_never_used = 0; + set0_never_used_0 = 0; + dword_8002A968 = 0; + alloc_intro_matrices(); + return; } @@ -23630,40 +23765,41 @@ void init_menus_or_reset(void) void initguards(void) { - animation_rate = 1.00000000; - dword_8002C904 = 0; - dword_8002C908 = 0; - dword_8002C90C = 0; - dword_8002C910 = 0; - dword_8002CC58 = 0; - show_patrols_flag = 0; - player1_guardID = 5000; - ptr_guard_data = NULL; - num_guards = 0; - init_obj_register_difficulty_vals(); - return; + animation_rate = 1.00000000; + dword_8002C904 = 0; + dword_8002C908 = 0; + dword_8002C90C = 0; + dword_8002C910 = 0; + dword_8002CC58 = 0; + show_patrols_flag = 0; + player1_guardID = 5000; + ptr_guard_data = NULL; + num_guards = 0; + init_obj_register_difficulty_vals(); + return; } -void alloc_init_GUARDdata_entries(int param_1) +void alloc_init_GUARDdata_entries(int guard_count) { - int iVar1; - int iVar2; - - num_guards = param_1 + 10; - ptr_guard_data = (GUARDdata *)allocate_bytes_in_bank((num_guards * 0x1dc + 0xfU | 0xf) ^ 0xf,4); - iVar2 = 0; - if (0 < num_guards) { - iVar1 = 0; - do { - iVar2 += 1; - *(undefined4 *)((int)&ptr_guard_data->MODELdata_pointer + iVar1) = 0; - iVar1 += 0x1dc; - } while (iVar2 < num_guards); - } - return; + int index; + int guardnum; + + num_guards = guard_count + 10; + ptr_guard_data = + (GUARDdata *)mempAllocBytesInBank((num_guards * 0x1dc + 0xfU | 0xf) ^ 0xf,'\x04'); + guardnum = 0; + if (0 < num_guards) { + index = 0; + do { + guardnum += 1; + *(undefined4 *)((int)&ptr_guard_data->MODELdata_pointer + index) = 0; + index += 0x1dc; + } while (guardnum < num_guards); + } + return; } @@ -23671,36 +23807,36 @@ void alloc_init_GUARDdata_entries(int param_1) void set_new_rand_head_bodies(void) { - c_itementry *pcVar1; - c_itementry *pcVar2; - u32 uVar3; - - if (c_item_entries[0].header != NULL) { - pcVar2 = c_item_entries; - (c_item_entries[0].header)->offset_obj_table = 0; - while( true ) { - pcVar1 = pcVar2 + 1; - pcVar2 = pcVar2 + 1; - if (pcVar1->header == NULL) break; - pcVar1->header->offset_obj_table = 0; + c_itementry *pcVar1; + c_itementry *pcVar2; + u32 uVar3; + + if (c_item_entries[0].header != NULL) { + pcVar2 = c_item_entries; + (c_item_entries[0].header)->offset_obj_table = 0; + while( true ) { + pcVar1 = pcVar2 + 1; + pcVar2 = pcVar2 + 1; + if (pcVar1->header == NULL) break; + pcVar1->header->offset_obj_table = 0; + } } - } - uVar3 = get_random_value(); - current_random_male_head = uVar3 % num_male_heads; - if (num_male_heads == 0) { - trap(0x1c00); - } - uVar3 = get_random_value(); - current_random_female_head = uVar3 % num_female_heads; - if (num_female_heads == 0) { - trap(0x1c00); - } - uVar3 = get_random_value(); - if (num_bodies == 0) { - trap(0x1c00); - } - current_random_body = uVar3 % num_bodies; - return; + uVar3 = get_random_value(); + current_random_male_head = uVar3 % num_male_heads; + if (num_male_heads == 0) { + trap(0x1c00); + } + uVar3 = get_random_value(); + current_random_female_head = uVar3 % num_female_heads; + if (num_female_heads == 0) { + trap(0x1c00); + } + uVar3 = get_random_value(); + if (num_bodies == 0) { + trap(0x1c00); + } + current_random_body = uVar3 % num_bodies; + return; } @@ -23708,13 +23844,13 @@ void set_new_rand_head_bodies(void) void init_obj_register_difficulty_vals(void) { - ai_accuracy_modifier = 1.00000000; - ai_damage_modifier = 1.00000000; - ai_health_modifier = 1.00000000; - ai_reaction_speed = 1.00000000; - setting_007_5 = 0.00000000; - objectiveregisters1 = 0; - return; + ai_accuracy_modifier = 1.00000000; + ai_damage_modifier = 1.00000000; + ai_health_modifier = 1.00000000; + ai_reaction_speed = 1.00000000; + setting_007_5 = 0.00000000; + objectiveregisters1 = 0; + return; } @@ -23722,93 +23858,93 @@ void init_obj_register_difficulty_vals(void) void alloc_false_GUARDdata_to_exec_global_action(void) { - undefined4 *puVar1; - undefined *puVar2; - undefined *puVar3; - int iVar4; - int iVar5; - undefined4 *puVar6; - undefined4 *puVar7; - undefined4 *puVar8; - undefined4 auStack484 [117]; - undefined4 auStack16 [2]; - int local_8; - - objectiveregisters2 = 0; - objectiveregisters3 = 0; - if (ptr_setup_actions != NULL) { - if (*(int *)ptr_setup_actions != 0) { - iVar4 = *(int *)(ptr_setup_actions + 4); - puVar3 = ptr_setup_actions; - while( true ) { - if (iVar4 < 0x1000) { - iVar4 = *(int *)(puVar3 + 8); + undefined4 *puVar1; + undefined *puVar2; + undefined *puVar3; + int iVar4; + int iVar5; + undefined4 *puVar6; + undefined4 *puVar7; + undefined4 *puVar8; + undefined4 auStack484 [117]; + undefined4 auStack16 [2]; + int local_8; + + objectiveregisters2 = 0; + objectiveregisters3 = 0; + if (ptr_setup_actions != NULL) { + if (*(int *)ptr_setup_actions != 0) { + iVar4 = *(int *)(ptr_setup_actions + 4); + puVar3 = ptr_setup_actions; + while( true ) { + if (iVar4 < 0x1000) { + iVar4 = *(int *)(puVar3 + 8); + } + else { + objectiveregisters3 += 1; + iVar4 = *(int *)(puVar3 + 8); + } + if (iVar4 == 0) break; + iVar4 = *(int *)(puVar3 + 0xc); + puVar3 = puVar3 + 8; + } } - else { - objectiveregisters3 += 1; - iVar4 = *(int *)(puVar3 + 8); + if (0 < objectiveregisters3) { + local_8 = 0; + objectiveregisters2 = + mempAllocBytesInBank((objectiveregisters3 * 0x1dc + 0xfU | 0xf) ^ 0xf,'\x04'); + iVar4 = 0; + if (*(int *)ptr_setup_actions != 0) { + iVar5 = *(int *)(ptr_setup_actions + 4); + puVar3 = ptr_setup_actions; + while( true ) { + puVar7 = global_action_block_temp_buffer; + puVar1 = auStack484; + puVar2 = puVar3; + if (0xfff < iVar5) { + do { + puVar6 = puVar1; + puVar8 = puVar7; + *puVar6 = *puVar8; + puVar6[1] = puVar8[1]; + puVar6[2] = puVar8[2]; + puVar7 = puVar8 + 3; + puVar1 = puVar6 + 3; + } while (puVar8 + 3 != global_action_block_temp_buffer + 0x75); + iVar5 = local_8 * 0x1dc; + puVar6[3] = global_action_block_temp_buffer[117]; + puVar6[4] = puVar8[4]; + puVar7 = auStack484; + puVar1 = (undefined4 *)(objectiveregisters2 + iVar5); + do { + puVar8 = puVar1; + puVar6 = puVar7; + puVar7 = puVar6 + 3; + *puVar8 = *puVar6; + puVar8[1] = puVar6[1]; + puVar8[2] = puVar6[2]; + puVar1 = puVar8 + 3; + } while (puVar7 != auStack16); + local_8 += 1; + puVar8[3] = *puVar7; + puVar8[4] = puVar6[4]; + *(undefined2 *)(objectiveregisters2 + iVar5) = 0xfe; + *(undefined4 *)(objectiveregisters2 + iVar5 + 0x104) = + *(undefined4 *)(ptr_setup_actions + iVar4); + *(undefined2 *)(objectiveregisters2 + iVar5 + 0x108) = 0; + *(undefined2 *)(objectiveregisters2 + iVar5 + 0x10a) = 0xffff; + *(undefined *)(objectiveregisters2 + iVar5 + 7) = 0x1a; + puVar2 = ptr_setup_actions + iVar4; + } + iVar4 += 8; + puVar3 = puVar2 + 8; + if (*(int *)(puVar2 + 8) == 0) break; + iVar5 = *(int *)(puVar2 + 0xc); + } + } } - if (iVar4 == 0) break; - iVar4 = *(int *)(puVar3 + 0xc); - puVar3 = puVar3 + 8; - } } - if (0 < objectiveregisters3) { - local_8 = 0; - objectiveregisters2 = - allocate_bytes_in_bank((objectiveregisters3 * 0x1dc + 0xfU | 0xf) ^ 0xf,4); - iVar4 = 0; - if (*(int *)ptr_setup_actions != 0) { - iVar5 = *(int *)(ptr_setup_actions + 4); - puVar3 = ptr_setup_actions; - while( true ) { - puVar7 = global_action_block_temp_buffer; - puVar1 = auStack484; - puVar2 = puVar3; - if (0xfff < iVar5) { - do { - puVar6 = puVar1; - puVar8 = puVar7; - *puVar6 = *puVar8; - puVar6[1] = puVar8[1]; - puVar6[2] = puVar8[2]; - puVar7 = puVar8 + 3; - puVar1 = puVar6 + 3; - } while (puVar8 + 3 != global_action_block_temp_buffer + 0x75); - iVar5 = local_8 * 0x1dc; - puVar6[3] = global_action_block_temp_buffer[117]; - puVar6[4] = puVar8[4]; - puVar7 = auStack484; - puVar1 = (undefined4 *)(objectiveregisters2 + iVar5); - do { - puVar8 = puVar1; - puVar6 = puVar7; - puVar7 = puVar6 + 3; - *puVar8 = *puVar6; - puVar8[1] = puVar6[1]; - puVar8[2] = puVar6[2]; - puVar1 = puVar8 + 3; - } while (puVar7 != auStack16); - local_8 += 1; - puVar8[3] = *puVar7; - puVar8[4] = puVar6[4]; - *(undefined2 *)(objectiveregisters2 + iVar5) = 0xfe; - *(undefined4 *)(objectiveregisters2 + iVar5 + 0x104) = - *(undefined4 *)(ptr_setup_actions + iVar4); - *(undefined2 *)(objectiveregisters2 + iVar5 + 0x108) = 0; - *(undefined2 *)(objectiveregisters2 + iVar5 + 0x10a) = 0xffff; - *(undefined *)(objectiveregisters2 + iVar5 + 7) = 0x1a; - puVar2 = ptr_setup_actions + iVar4; - } - iVar4 += 8; - puVar3 = puVar2 + 8; - if (*(int *)(puVar2 + 8) == 0) break; - iVar5 = *(int *)(puVar2 + 0xc); - } - } - } - } - return; + return; } @@ -23816,59 +23952,59 @@ void alloc_false_GUARDdata_to_exec_global_action(void) void debug_object_load_all_models(void) { - char cVar1; - int iVar2; - char *modelid; - int iVar3; - - modelid = *(char **)ptr_setup_actions; - iVar3 = 0; - if (modelid == NULL) { - return; - } - do { - cVar1 = *modelid; - while (cVar1 == '\x04') { - modelid = *(char **)(ptr_setup_actions + iVar3 + 8); - iVar3 += 8; - if (modelid == NULL) { + char cVar1; + int iVar2; + char *modelid; + int iVar3; + + modelid = *(char **)ptr_setup_actions; + iVar3 = 0; + if (modelid == NULL) { return; - } - cVar1 = *modelid; } - if (cVar1 == '\x1b') { - load_model((uint)*(ushort *)(modelid + 1)); - } - else { - if (cVar1 == -0x43) { - load_body_head_if_not_loaded((uint)(byte)modelid[1]); - if (-1 < modelid[2]) { - load_body_head_if_not_loaded((int)modelid[2]); + do { + cVar1 = *modelid; + while (cVar1 == '\x04') { + modelid = *(char **)(ptr_setup_actions + iVar3 + 8); + iVar3 += 8; + if (modelid == NULL) { + return; + } + cVar1 = *modelid; } - } - else { - if (cVar1 == -0x42) { - load_body_head_if_not_loaded((uint)(byte)modelid[1]); - if (-1 < modelid[2]) { - load_body_head_if_not_loaded((int)modelid[2]); - } + if (cVar1 == '\x1b') { + load_model((uint)*(ushort *)(modelid + 1)); } else { - if (cVar1 == -0x41) { - load_model((uint)*(ushort *)(modelid + 1)); - set_weapon_model_generated_thrown_object((uint)(byte)modelid[3]); - } - else { - if (cVar1 == -0x40) { - load_model((uint)*(ushort *)(modelid + 1)); + if (cVar1 == -0x43) { + load_body_head_if_not_loaded((uint)(byte)modelid[1]); + if (-1 < modelid[2]) { + load_body_head_if_not_loaded((int)modelid[2]); + } + } + else { + if (cVar1 == -0x42) { + load_body_head_if_not_loaded((uint)(byte)modelid[1]); + if (-1 < modelid[2]) { + load_body_head_if_not_loaded((int)modelid[2]); + } + } + else { + if (cVar1 == -0x41) { + load_model((uint)*(ushort *)(modelid + 1)); + set_weapon_model_generated_thrown_object((uint)(byte)modelid[3]); + } + else { + if (cVar1 == -0x40) { + load_model((uint)*(ushort *)(modelid + 1)); + } + } + } } - } } - } - } - iVar2 = get_length_of_action_block((int)modelid,0); - modelid = modelid + iVar2; - } while( true ); + iVar2 = get_length_of_action_block((int)modelid,0); + modelid = modelid + iVar2; + } while( true ); } @@ -23876,37 +24012,34 @@ void debug_object_load_all_models(void) void debug_weapon_load_table(void) { - PROJECTILES *pPVar1; - PROJECTILES modelid; - PROJECTILES *pPVar2; - PROJECTILES PStack32; - PROJECTILES PStack28; - PROJECTILES PStack24; - PROJECTILES PStack20; - PROJECTILES PStack16; - PROJECTILES PStack12; - PROJECTILES PStack8; - PROJECTILES PStack4; - - PStack32 = weapon_models_for_weapon_load[0]; - PStack28 = weapon_models_for_weapon_load[1]; - pPVar2 = &PStack32; - PStack20 = weapon_models_for_weapon_load[3]; - PStack24 = weapon_models_for_weapon_load[2]; - PStack16 = weapon_models_for_weapon_load[4]; - PStack12 = weapon_models_for_weapon_load[5]; - PStack4 = weapon_models_for_weapon_load[7]; - PStack8 = weapon_models_for_weapon_load[6]; - modelid = weapon_models_for_weapon_load[0]; - if (-1 < (int)weapon_models_for_weapon_load[0]) { - do { - load_model(modelid); - pPVar1 = pPVar2 + 1; - pPVar2 = pPVar2 + 1; - modelid = *pPVar1; - } while (-1 < (int)*pPVar1); - } - return; + PROJECTILES *pPVar1; + PROJECTILES modelid; + PROJECTILES *pPVar2; + PROJECTILES PStack32; + PROJECTILES aPStack28 [4]; + PROJECTILES PStack12; + PROJECTILES PStack8; + PROJECTILES PStack4; + + PStack32 = weapon_models_for_weapon_load[0]; + aPStack28[0] = weapon_models_for_weapon_load[1]; + pPVar2 = &PStack32; + aPStack28[2] = weapon_models_for_weapon_load[3]; + aPStack28[1] = weapon_models_for_weapon_load[2]; + aPStack28[3] = weapon_models_for_weapon_load[4]; + PStack12 = weapon_models_for_weapon_load[5]; + PStack4 = weapon_models_for_weapon_load[7]; + PStack8 = weapon_models_for_weapon_load[6]; + modelid = weapon_models_for_weapon_load[0]; + if (-1 < (int)weapon_models_for_weapon_load[0]) { + do { + load_model(modelid); + pPVar1 = pPVar2 + 1; + pPVar2 = pPVar2 + 1; + modelid = *pPVar1; + } while (-1 < (int)*pPVar1); + } + return; } @@ -23914,18 +24047,18 @@ void debug_weapon_load_table(void) void init_sound_effects_registers(void) { - sfx_register_struct *psVar1; - - psVar1 = &sfx_related; - do { - psVar1 = psVar1 + 4; - psVar1[1].field_0x0 = 0; - psVar1[2].field_0x0 = 0; - psVar1[3].field_0x0 = 0; - psVar1->field_0x0 = 0; - psVar1 = psVar1; - } while (psVar1 != (sfx_register_struct *)&ptr_list_object_lookup_indices); - return; + sfx_register_struct *psVar1; + + psVar1 = &sfx_related; + do { + psVar1 = psVar1 + 4; + psVar1[1].field_0x0 = 0; + psVar1[2].field_0x0 = 0; + psVar1[3].field_0x0 = 0; + psVar1->field_0x0 = 0; + psVar1 = psVar1; + } while (psVar1 != (sfx_register_struct *)&ptr_list_object_lookup_indices); + return; } @@ -23933,40 +24066,40 @@ void init_sound_effects_registers(void) void init_load_objpos_table(void) { - undefined *puVar1; - undefined *puVar2; - undefined *puVar3; - undefined *puVar4; - undefined *puVar5; - - difficulty = 0x3f800000; - ptr_obj_pos_list_first_entry = NULL; - ptr_obj_pos_list_current_entry = NULL; - DAT_80071df4 = 0; - DAT_80071620 = 0; - DAT_80071df0 = &DAT_80071620; - DAT_80069c5c = &DAT_80069c6c; - DAT_80069c90 = &DAT_80069ca0; - puVar1 = &DAT_80069cd4; - puVar5 = &DAT_80069d70; - puVar4 = &DAT_80069d3c; - puVar3 = &DAT_80069d08; - puVar2 = &DAT_80069da4; - DAT_80069cc4 = &DAT_80069cd4; - ptr_obj_pos_list_final_entry = (object_standard *)pos_data_entry; - do { - *(undefined **)(puVar1 + 0xc0) = puVar2; - puVar2 = puVar2 + 0xd0; - *(undefined **)(puVar1 + 0x58) = puVar4; - *(undefined **)(puVar1 + 0x8c) = puVar5; - *(undefined **)(puVar1 + 0x24) = puVar3; - puVar3 = puVar3 + 0xd0; - puVar5 = puVar5 + 0xd0; - puVar4 = puVar4 + 0xd0; - puVar1 = puVar1 + 0xd0; - } while (puVar2 != &DAT_800716b4); - alloc_lookup_buffers(); - return; + undefined *puVar1; + undefined *puVar2; + undefined *puVar3; + undefined *puVar4; + undefined *puVar5; + + difficulty = 1.00000000; + ptr_obj_pos_list_first_entry = NULL; + ptr_obj_pos_list_current_entry = NULL; + DAT_80071df4 = 0; + DAT_80071620 = 0; + DAT_80071df0 = &DAT_80071620; + ptr_obj_pos_list_final_entry = (object_standard *)pos_data_entry; + DAT_80069c5c = &DAT_80069c6c; + DAT_80069c90 = &DAT_80069ca0; + puVar1 = &DAT_80069cd4; + puVar5 = &DAT_80069d70; + puVar4 = &DAT_80069d3c; + puVar3 = &DAT_80069d08; + puVar2 = &DAT_80069da4; + DAT_80069cc4 = &DAT_80069cd4; + do { + *(undefined **)(puVar1 + 0xc0) = puVar2; + puVar2 = puVar2 + 0xd0; + *(undefined **)(puVar1 + 0x58) = puVar4; + *(undefined **)(puVar1 + 0x8c) = puVar5; + *(undefined **)(puVar1 + 0x24) = puVar3; + puVar3 = puVar3 + 0xd0; + puVar5 = puVar5 + 0xd0; + puVar4 = puVar4 + 0xd0; + puVar1 = puVar1 + 0xd0; + } while (puVar2 != &DAT_800716b4); + alloc_lookup_buffers(); + return; } @@ -23974,44 +24107,45 @@ void init_load_objpos_table(void) void alloc_lookup_buffers(void) { - int iVar1; - int iVar2; - int iVar3; - int iVar4; - - ptr_list_object_lookup_indices = (undefined2 *)allocate_bytes_in_bank(0x400,4); - ptr_room_lookup_buffer_maybe = allocate_bytes_in_bank((max_num_rooms * 4 + 0xf | 0xf) ^ 0xf,4); - DAT_8007161c = allocate_bytes_in_bank(0x2000,4); - *ptr_list_object_lookup_indices = 0xffff; - iVar3 = 0; - if (0 < (int)max_num_rooms) { + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + ptr_list_object_lookup_indices = (undefined2 *)mempAllocBytesInBank(0x400,'\x04'); + ptr_room_lookup_buffer_maybe = + mempAllocBytesInBank((max_num_rooms * 4 + 0xf | 0xf) ^ 0xf,'\x04'); + DAT_8007161c = mempAllocBytesInBank(0x2000,'\x04'); + *ptr_list_object_lookup_indices = 0xffff; + iVar3 = 0; + if (0 < (int)max_num_rooms) { + iVar1 = 0; + do { + iVar3 += 1; + *(undefined2 *)(ptr_room_lookup_buffer_maybe + iVar1) = 0xffff; + iVar1 += 2; + } while (iVar3 < (int)max_num_rooms); + } + iVar3 = 0; iVar1 = 0; do { - iVar3 += 1; - *(undefined2 *)(ptr_room_lookup_buffer_maybe + iVar1) = 0xffff; - iVar1 += 2; - } while (iVar3 < (int)max_num_rooms); - } - iVar3 = 0; - iVar1 = 0; - do { - *(undefined2 *)(DAT_8007161c + iVar1) = 0xfffe; - iVar2 = 8; - *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + 2) = 0xffff; - *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + 4) = 0xffff; - *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + 6) = 0xffff; - do { - *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + iVar2) = 0xffff; - *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + iVar2 + 2) = 0xffff; - *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + iVar2 + 4) = 0xffff; - iVar4 = DAT_8007161c + iVar3 * 0x20 + iVar2; - iVar2 += 8; - *(undefined2 *)(iVar4 + 6) = 0xffff; - } while (iVar2 != 0x20); - iVar3 += 1; - iVar1 += 0x20; - } while (iVar3 != 0x100); - return; + *(undefined2 *)(DAT_8007161c + iVar1) = 0xfffe; + iVar2 = 8; + *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + 2) = 0xffff; + *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + 4) = 0xffff; + *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + 6) = 0xffff; + do { + *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + iVar2) = 0xffff; + *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + iVar2 + 2) = 0xffff; + *(undefined2 *)(DAT_8007161c + iVar3 * 0x20 + iVar2 + 4) = 0xffff; + iVar4 = DAT_8007161c + iVar3 * 0x20 + iVar2; + iVar2 += 8; + *(undefined2 *)(iVar4 + 6) = 0xffff; + } while (iVar2 != 0x20); + iVar3 += 1; + iVar1 += 0x20; + } while (iVar3 != 0x100); + return; } @@ -24019,75 +24153,75 @@ void alloc_lookup_buffers(void) void reinit_between_menus(void) { - undefined *puVar1; - undefined4 *puVar2; - undefined4 *puVar3; - - write_monitor_ani_control_blocks(); - initialize_80071E00_to_80071E78(); - alarm_timer = 0; - ptr_alarm_sfx = 0; - toxic_gas_sound_timer = 0; - activate_gas_sound_timer = 0; - flt_80030AD0 = 0; - flt_80030AD4 = 0; - flt_80030AD8 = 0; - dword_80030ADC = 0; - dword_80030AE0 = 0; - dword_80030AE4 = 0; - clock_drawn_flag = 1; - clock_enable = 0; - clock_time = 0; - dword_80030AF4 = 0; - puVar1 = &ProjectileData_start_address; - do { - puVar1 = puVar1 + 0x88; - *(undefined4 *)(puVar1 + 0x10) = 0; - puVar1 = puVar1; - } while (puVar1 < (undefined *)0x80072e70); - dword_80030AF8 = 0; - puVar1 = (undefined *)0x80072e70; - do { - puVar1 = puVar1 + 0x80; - *(undefined4 *)(puVar1 + 0x10) = 0; - puVar1 = puVar1; - } while (puVar1 < &DAT_80073370); - dword_80030AFC = 0; - puVar2 = (undefined4 *)&DAT_80073370; - do { - puVar3 = puVar2 + 0x21; - puVar2[4] = 0; - puVar2 = puVar3; - } while (puVar3 < &DAT_80073dc0); - puVar2 = &DAT_80073dc0; - do { - puVar3 = puVar2 + 0x3b; - *puVar2 = 0x80000000; - puVar2[0x26] = 0; - puVar2[0x27] = 0; - puVar2 = puVar3; - } while (puVar3 < &DAT_80075030); - puVar2 = &DAT_80075030; - do { - puVar3 = puVar2 + 0x48; - puVar2[0x12] = 1; - puVar2[0x24] = 1; - puVar2[0x36] = 1; - *puVar2 = 1; - puVar2 = puVar3; - } while (puVar3 != &objinst); - dword_80030B00 = 0; - dword_80030B04 = 0; - dword_80030B08 = 0; - dword_80030B0C = 0; - bodypartshot = 0xffffffff; - flt_80030B14 = 1.00000000; - flt_80030B18 = 1.00000000; - flt_80030B1C = 1.00000000; - flt_80030B20 = 1.00000000; - flt_80030B24 = 1.00000000; - solo_ammo_multiplier = 1.00000000; - return; + undefined *puVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + write_monitor_ani_control_blocks(); + initialize_temp_mine_table(); + alarm_timer = 0; + ptr_alarm_sfx = NULL; + toxic_gas_sound_timer = 0; + activate_gas_sound_timer = 0; + D_80030AD0 = 0; + flt_80030AD4 = 0; + flt_80030AD8 = 0; + D_80030ADC = 0; + D_80030AE0 = 0; + ptr_gas_sound = NULL; + clock_drawn_flag = 1; + clock_enable = 0; + clock_time = 0.00000000; + D_80030AF4 = 0; + puVar1 = &ProjectileData_start_address; + do { + puVar1 = puVar1 + 0x88; + *(undefined4 *)(puVar1 + 0x10) = 0; + puVar1 = puVar1; + } while (puVar1 < (undefined *)0x80072e70); + dword_80030AF8 = 0; + puVar1 = (undefined *)0x80072e70; + do { + puVar1 = puVar1 + 0x80; + *(undefined4 *)(puVar1 + 0x10) = 0; + puVar1 = puVar1; + } while (puVar1 < &DAT_80073370); + dword_80030AFC = 0; + puVar2 = (undefined4 *)&DAT_80073370; + do { + puVar3 = puVar2 + 0x21; + puVar2[4] = 0; + puVar2 = puVar3; + } while (puVar3 < &DAT_80073dc0); + puVar2 = &DAT_80073dc0; + do { + puVar3 = puVar2 + 0x3b; + *puVar2 = 0x80000000; + puVar2[0x26] = 0; + puVar2[0x27] = 0; + puVar2 = puVar3; + } while (puVar3 < &DAT_80075030); + puVar2 = &DAT_80075030; + do { + puVar3 = puVar2 + 0x48; + puVar2[0x12] = 1; + puVar2[0x24] = 1; + puVar2[0x36] = 1; + *puVar2 = 1; + puVar2 = puVar3; + } while (puVar3 != &objinst); + dword_80030B00 = 0; + dword_80030B04 = 0; + dword_80030B08 = 0; + dword_80030B0C = 0; + bodypartshot = 0xffffffff; + flt_80030B14 = 1.00000000; + flt_80030B18 = 1.00000000; + flt_80030B1C = 1.00000000; + flt_80030B20 = 1.00000000; + flt_80030B24 = 1.00000000; + solo_ammo_multiplier = 1.00000000; + return; } @@ -24095,9 +24229,9 @@ void reinit_between_menus(void) void proc_7F001910(int param_1) { - *(undefined4 *)(param_1 + 0xc) = dword_80030B00; - dword_80030B00 = param_1; - return; + *(undefined4 *)(param_1 + 0xc) = dword_80030B00; + dword_80030B00 = param_1; + return; } @@ -24105,9 +24239,9 @@ void proc_7F001910(int param_1) void proc_7F001928(int param_1) { - *(undefined4 *)(param_1 + 0xc) = dword_80030B04; - dword_80030B04 = param_1; - return; + *(undefined4 *)(param_1 + 0xc) = dword_80030B04; + dword_80030B04 = param_1; + return; } @@ -24115,9 +24249,9 @@ void proc_7F001928(int param_1) void proc_7F001940(int param_1) { - *(undefined4 *)(param_1 + 0x10) = dword_80030B08; - dword_80030B08 = param_1; - return; + *(undefined4 *)(param_1 + 0x10) = dword_80030B08; + dword_80030B08 = param_1; + return; } @@ -24125,123 +24259,123 @@ void proc_7F001940(int param_1) void write_monitor_ani_control_blocks(void) { - object_animation_controller *poVar1; - void **ppvVar2; - void **ppvVar3; - void **ppvVar4; - void **ppvVar5; - object_animation_controller *poVar6; - void *apvStack348 [27]; - void *apvStack240 [2]; - void *apvStack232 [27]; - void *apvStack124 [2]; - void *apvStack116 [27]; - void *apvStack8 [2]; - - poVar1 = &ptr_monitorimageobjectanimationcontroller; - ppvVar5 = apvStack116; - do { - ppvVar2 = ppvVar5; - poVar6 = poVar1; - *ppvVar2 = poVar6->ptranimation; - ppvVar2[1] = *(void **)&poVar6->offsettocurcmd; - ppvVar2[2] = (void *)poVar6->imagenum; - poVar1 = (object_animation_controller *)&poVar6->rotation; - ppvVar5 = ppvVar2 + 3; - } while ((object_animation_controller *)&poVar6->rotation != - (object_animation_controller *)&ptr_monitorimageobjectanimationcontroller.startcolorshift - ); - *(f32 *)(ppvVar2 + 3) = ptr_monitorimageobjectanimationcontroller.startcolorshift; - ppvVar2[4] = (void *)poVar6->curzoomx; - ppvVar5 = apvStack116; - ppvVar2 = (void **)&DAT_80075b98; - do { - ppvVar3 = ppvVar2; - ppvVar4 = ppvVar5; - ppvVar5 = ppvVar4 + 3; - *ppvVar3 = *ppvVar4; - ppvVar3[1] = ppvVar4[1]; - ppvVar3[2] = ppvVar4[2]; - ppvVar2 = ppvVar3 + 3; - } while (ppvVar5 != apvStack8); - ppvVar3[3] = *ppvVar5; - ppvVar3[4] = ppvVar4[4]; - poVar1 = &unknown_object_animation_controller; - ppvVar5 = apvStack232; - do { - ppvVar2 = ppvVar5; - poVar6 = poVar1; - *ppvVar2 = poVar6->ptranimation; - ppvVar2[1] = *(void **)&poVar6->offsettocurcmd; - ppvVar2[2] = (void *)poVar6->imagenum; - poVar1 = (object_animation_controller *)&poVar6->rotation; - ppvVar5 = ppvVar2 + 3; - } while ((object_animation_controller *)&poVar6->rotation != - (object_animation_controller *)&unknown_object_animation_controller.startcolorshift); - *(f32 *)(ppvVar2 + 3) = unknown_object_animation_controller.startcolorshift; - ppvVar2[4] = (void *)poVar6->curzoomx; - ppvVar5 = apvStack232; - ppvVar2 = (void **)&DAT_80075c10; - do { - ppvVar4 = ppvVar2; - ppvVar3 = ppvVar5; - ppvVar5 = ppvVar3 + 3; - *ppvVar4 = *ppvVar3; - ppvVar4[1] = ppvVar3[1]; - ppvVar4[2] = ppvVar3[2]; - ppvVar2 = ppvVar4 + 3; - } while (ppvVar5 != apvStack124); - ppvVar4[3] = *ppvVar5; - ppvVar4[4] = ppvVar3[4]; - poVar1 = &taser_object_animation_controller; - ppvVar5 = apvStack348; - do { - ppvVar2 = ppvVar5; - poVar6 = poVar1; - *ppvVar2 = poVar6->ptranimation; - ppvVar2[1] = *(void **)&poVar6->offsettocurcmd; - ppvVar2[2] = (void *)poVar6->imagenum; - poVar1 = (object_animation_controller *)&poVar6->rotation; - ppvVar5 = ppvVar2 + 3; - } while ((object_animation_controller *)&poVar6->rotation != - (object_animation_controller *)&taser_object_animation_controller.startcolorshift); - *(f32 *)(ppvVar2 + 3) = taser_object_animation_controller.startcolorshift; - ppvVar2[4] = (void *)poVar6->curzoomx; - ppvVar5 = apvStack348; - ppvVar2 = (void **)&DAT_80075c88; - do { - ppvVar4 = ppvVar2; - ppvVar3 = ppvVar5; - ppvVar5 = ppvVar3 + 3; - *ppvVar4 = *ppvVar3; - ppvVar4[1] = ppvVar3[1]; - ppvVar4[2] = ppvVar3[2]; - ppvVar2 = ppvVar4 + 3; - } while (ppvVar5 != apvStack240); - ppvVar4[3] = *ppvVar5; - ppvVar4[4] = ppvVar3[4]; - return; + object_animation_controller *poVar1; + void **ppvVar2; + void **ppvVar3; + void **ppvVar4; + void **ppvVar5; + object_animation_controller *poVar6; + void *apvStack348 [27]; + void *apvStack240 [2]; + void *apvStack232 [27]; + void *apvStack124 [2]; + void *apvStack116 [27]; + void *apvStack8 [2]; + + poVar1 = &ptr_monitorimageobjectanimationcontroller; + ppvVar5 = apvStack116; + do { + ppvVar2 = ppvVar5; + poVar6 = poVar1; + *ppvVar2 = poVar6->ptranimation; + ppvVar2[1] = *(void **)&poVar6->offsettocurcmd; + ppvVar2[2] = (void *)poVar6->imagenum; + poVar1 = (object_animation_controller *)&poVar6->rotation; + ppvVar5 = ppvVar2 + 3; + } while ((object_animation_controller *)&poVar6->rotation != + (object_animation_controller *) + &ptr_monitorimageobjectanimationcontroller.startcolorshift); + *(f32 *)(ppvVar2 + 3) = ptr_monitorimageobjectanimationcontroller.startcolorshift; + ppvVar2[4] = (void *)poVar6->curzoomx; + ppvVar5 = apvStack116; + ppvVar2 = (void **)&DAT_80075b98; + do { + ppvVar3 = ppvVar2; + ppvVar4 = ppvVar5; + ppvVar5 = ppvVar4 + 3; + *ppvVar3 = *ppvVar4; + ppvVar3[1] = ppvVar4[1]; + ppvVar3[2] = ppvVar4[2]; + ppvVar2 = ppvVar3 + 3; + } while (ppvVar5 != apvStack8); + ppvVar3[3] = *ppvVar5; + ppvVar3[4] = ppvVar4[4]; + poVar1 = &unknown_object_animation_controller; + ppvVar5 = apvStack232; + do { + ppvVar2 = ppvVar5; + poVar6 = poVar1; + *ppvVar2 = poVar6->ptranimation; + ppvVar2[1] = *(void **)&poVar6->offsettocurcmd; + ppvVar2[2] = (void *)poVar6->imagenum; + poVar1 = (object_animation_controller *)&poVar6->rotation; + ppvVar5 = ppvVar2 + 3; + } while ((object_animation_controller *)&poVar6->rotation != + (object_animation_controller *)&unknown_object_animation_controller.startcolorshift); + *(f32 *)(ppvVar2 + 3) = unknown_object_animation_controller.startcolorshift; + ppvVar2[4] = (void *)poVar6->curzoomx; + ppvVar5 = apvStack232; + ppvVar2 = (void **)&DAT_80075c10; + do { + ppvVar4 = ppvVar2; + ppvVar3 = ppvVar5; + ppvVar5 = ppvVar3 + 3; + *ppvVar4 = *ppvVar3; + ppvVar4[1] = ppvVar3[1]; + ppvVar4[2] = ppvVar3[2]; + ppvVar2 = ppvVar4 + 3; + } while (ppvVar5 != apvStack124); + ppvVar4[3] = *ppvVar5; + ppvVar4[4] = ppvVar3[4]; + poVar1 = &taser_object_animation_controller; + ppvVar5 = apvStack348; + do { + ppvVar2 = ppvVar5; + poVar6 = poVar1; + *ppvVar2 = poVar6->ptranimation; + ppvVar2[1] = *(void **)&poVar6->offsettocurcmd; + ppvVar2[2] = (void *)poVar6->imagenum; + poVar1 = (object_animation_controller *)&poVar6->rotation; + ppvVar5 = ppvVar2 + 3; + } while ((object_animation_controller *)&poVar6->rotation != + (object_animation_controller *)&taser_object_animation_controller.startcolorshift); + *(f32 *)(ppvVar2 + 3) = taser_object_animation_controller.startcolorshift; + ppvVar2[4] = (void *)poVar6->curzoomx; + ppvVar5 = apvStack348; + ppvVar2 = (void **)&DAT_80075c88; + do { + ppvVar4 = ppvVar2; + ppvVar3 = ppvVar5; + ppvVar5 = ppvVar3 + 3; + *ppvVar4 = *ppvVar3; + ppvVar4[1] = ppvVar3[1]; + ppvVar4[2] = ppvVar3[2]; + ppvVar2 = ppvVar4 + 3; + } while (ppvVar5 != apvStack240); + ppvVar4[3] = *ppvVar5; + ppvVar4[4] = ppvVar3[4]; + return; } -void initialize_80071E00_to_80071E78(void) +void initialize_temp_mine_table(void) { - float *pfVar1; - - DAT_80071e00 = 0; - DAT_80071e04 = 0; - pfVar1 = (float *)buffer_80071e08; - do { - pfVar1 = pfVar1 + 4; - pfVar1[1] = 0.00000000; - pfVar1[2] = 0.00000000; - pfVar1[3] = 0.00000000; - *pfVar1 = 0.00000000; - pfVar1 = pfVar1; - } while (pfVar1 != &gas_damage_flag); - return; + float *pfVar1; + + temp_mine_table[0] = 0; + temp_mine_table[1] = 0; + pfVar1 = (float *)(temp_mine_table + 2); + do { + pfVar1 = pfVar1 + 4; + pfVar1[1] = 0.00000000; + pfVar1[2] = 0.00000000; + pfVar1[3] = 0.00000000; + *pfVar1 = 0.00000000; + pfVar1 = pfVar1; + } while (pfVar1 != &gas_damage_flag); + return; } @@ -24249,25 +24383,25 @@ void initialize_80071E00_to_80071E78(void) int load_proptype(PROPTYPE param_1) { - PROPTYPE PVar1; - undefined8 uVar2; - int *object; - int iVar3; - - iVar3 = 0; - if (ptr_setup_objects != NULL) { - PVar1 = ptr_setup_objects[3]; - object = (int *)ptr_setup_objects; - while (PVar1 != 0x30) { - if (param_1 == PVar1) { - iVar3 += 1; - } - uVar2 = get_size_of_setup_object_type(object); - object = object + (int)uVar2; - PVar1 = *(PROPTYPE *)((int)object + 3); + PROPTYPE PVar1; + u32 uVar2; + object_standard *object; + int iVar3; + + iVar3 = 0; + if (ptr_setup_objects != NULL) { + PVar1 = ptr_setup_objects->type; + object = ptr_setup_objects; + while (PVar1 != 0x30) { + if (param_1 == PVar1) { + iVar3 += 1; + } + uVar2 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar2 * 2); + PVar1 = object->type; + } } - } - return iVar3; + return iVar3; } @@ -24275,38 +24409,38 @@ int load_proptype(PROPTYPE param_1) void proc_7F001BD4(float *param_1,float *param_2) { - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - - fVar2 = param_1[0xb]; - fVar5 = param_1[0xc]; - fVar10 = param_1[0xd]; - fVar9 = param_1[0xe]; - fVar3 = param_1[0xf]; - fVar6 = param_1[0x10]; - fVar7 = param_1[4] * param_1[8] - param_1[7] * param_1[5]; - fVar4 = param_1[5] * param_1[6] - param_1[8] * param_1[3]; - fVar8 = param_1[3] * param_1[7] - param_1[6] * param_1[4]; - fVar1 = sqrtf(fVar8 * fVar8 + fVar7 * fVar7 + fVar4 * fVar4); - fVar1 = 1.00000000 / fVar1; - fVar3 = fVar3 + fVar6; - fVar2 = fVar2 + fVar5; - fVar10 = fVar10 + fVar9; - *param_2 = (param_1[6] * fVar3 + fVar2 * fVar7 * fVar1 + fVar10 * param_1[3]) * 0.50000000 + - *param_1; - param_2[1] = (param_1[7] * fVar3 + fVar2 * fVar4 * fVar1 + fVar10 * param_1[4]) * 0.50000000 + - param_1[1]; - param_2[2] = (param_1[8] * fVar3 + fVar2 * fVar8 * fVar1 + fVar10 * param_1[5]) * 0.50000000 + - param_1[2]; - return; + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + + fVar2 = param_1[0xb]; + fVar5 = param_1[0xc]; + fVar10 = param_1[0xd]; + fVar9 = param_1[0xe]; + fVar3 = param_1[0xf]; + fVar6 = param_1[0x10]; + fVar7 = param_1[4] * param_1[8] - param_1[7] * param_1[5]; + fVar4 = param_1[5] * param_1[6] - param_1[8] * param_1[3]; + fVar8 = param_1[3] * param_1[7] - param_1[6] * param_1[4]; + fVar1 = sqrtf(fVar8 * fVar8 + fVar7 * fVar7 + fVar4 * fVar4); + fVar1 = 1.00000000 / fVar1; + fVar3 = fVar3 + fVar6; + fVar2 = fVar2 + fVar5; + fVar10 = fVar10 + fVar9; + *param_2 = (param_1[6] * fVar3 + fVar2 * fVar7 * fVar1 + fVar10 * param_1[3]) * 0.50000000 + + *param_1; + param_2[1] = (param_1[7] * fVar3 + fVar2 * fVar4 * fVar1 + fVar10 * param_1[4]) * 0.50000000 + + param_1[1]; + param_2[2] = (param_1[8] * fVar3 + fVar2 * fVar8 * fVar1 + fVar10 * param_1[5]) * 0.50000000 + + param_1[2]; + return; } @@ -24314,380 +24448,373 @@ void proc_7F001BD4(float *param_1,float *param_2) void prepare_load_objects(undefined8 param_1,ushort *param_2) { - ushort uVar1; - uint uVar2; - bool bVar3; - ulonglong uVar4; - int instancecontroller; - GUARDdata *pGVar6; - float *pfVar7; - longlong lVar5; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined *puVar8; - float *pfVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - f32 extraout_f12_02; - f32 extraout_f12_03; - f32 extraout_f12_04; - f32 extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - f32 extraout_f12_10; - f32 extraout_f12_11; - f32 extraout_f12_12; - f32 scale; - f32 extraout_f12_13; - f32 scale_00; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fStack160; - object_standard *poStack152; - float fStack120; - float fStack116; - float fStack112; - float afStack108 [16]; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - undefined4 auStack24 [4]; - int iStack8; - - pfVar9 = NULL; - iStack8 = (int)(short)param_2[2]; - load_model(iStack8); - *(float *)(param_2 + 0x3a) = (float)*(int *)(param_2 + 0x3a) / 65536.00000000; - uVar4 = get_num_players(); - fVar10 = extraout_f12; - fVar12 = extraout_f14; - if ((longlong)uVar4 < 2) { + ushort uVar1; + uint uVar2; + bool bVar3; + s32 sVar5; + int instancecontroller; + GUARDdata *pGVar6; + float *pfVar7; + longlong lVar4; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined *puVar8; + float *pfVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + f32 extraout_f12_02; + f32 extraout_f12_03; + f32 extraout_f12_04; + f32 extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f12_09; + f32 extraout_f12_10; + f32 extraout_f12_11; + f32 extraout_f12_12; + f32 scale; + f32 extraout_f12_13; + f32 scale_00; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fStack160; + object_standard *poStack152; + float fStack120; + float fStack116; + float fStack112; + float afStack108 [16]; + float fStack44; + float fStack40; + float fStack36; + float fStack32; + undefined4 auStack24 [4]; + int iStack8; + + pfVar9 = NULL; + iStack8 = (int)(short)param_2[2]; + load_model(iStack8); + *(float *)(param_2 + 0x3a) = (float)*(int *)(param_2 + 0x3a) / 65536.00000000; + sVar5 = get_num_players(); + lVar4 = (longlong)sVar5; + fVar10 = extraout_f12; + fVar12 = extraout_f14; + if (lVar4 < 2) { LAB_7f001e90: - uVar2 = *(uint *)(param_2 + 4); - } - else { - instancecontroller = get_scenario(); - uVar4 = SEXT48(instancecontroller); - if ((uVar4 == 2) && (param_2[2] == 0x14d)) { - bVar3 = false; - fVar10 = extraout_f12_00; - fVar12 = extraout_f14_00; + uVar2 = *(uint *)(param_2 + 4); } else { - instancecontroller = get_scenario(); - uVar4 = SEXT48(instancecontroller); - bVar3 = true; - fVar10 = extraout_f12_01; - fVar12 = extraout_f14_01; - if ((uVar4 == 3) && (fVar10 = extraout_f12_01, fVar12 = extraout_f14_01, param_2[2] == 0xd0)) - { - bVar3 = false; - fVar10 = extraout_f12_01; - fVar12 = extraout_f14_01; - } + instancecontroller = get_scenario(); + lVar4 = (longlong)instancecontroller; + if ((lVar4 == 2) && (param_2[2] == 0x14d)) { + bVar3 = false; + fVar10 = extraout_f12_00; + fVar12 = extraout_f14_00; + } + else { + instancecontroller = get_scenario(); + lVar4 = (longlong)instancecontroller; + bVar3 = true; + fVar10 = extraout_f12_01; + fVar12 = extraout_f14_01; + if ((lVar4 == 3) && (param_2[2] == 0xd0)) { + bVar3 = false; + } + } + if (bVar3) { + *(byte *)(param_2 + 1) = *(byte *)(param_2 + 1) | 4; + goto LAB_7f001e90; + } + uVar2 = *(uint *)(param_2 + 4); } - if (bVar3) { - *(byte *)(param_2 + 1) = *(byte *)(param_2 + 1) | 4; - goto LAB_7f001e90; + if ((uVar2 & 0x8000) != 0) { + if (*(char *)((int)param_2 + 3) == '\b') { + proc_7F051DD8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); + instancecontroller = *(int *)(param_2 + 10); + scale_00 = extraout_f12_02; + } + else { + init_object_no_default_pos_controller + ((object_standard *)param_2,(object_header *)PitemZ_entries[iStack8].header); + instancecontroller = *(int *)(param_2 + 10); + scale_00 = extraout_f12_03; + } + set_obj_instance_controller_scale(instancecontroller,scale_00); + return; } - uVar2 = *(uint *)(param_2 + 4); - } - if ((uVar2 & 0x8000) != 0) { - if (*(char *)((int)param_2 + 3) == '\b') { - proc_7F051DD8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); - instancecontroller = *(int *)(param_2 + 10); - scale_00 = extraout_f12_02; + if ((uVar2 & 0x4000) != 0) { + pGVar6 = check_if_guardnum_loaded_get_ptr_GUARDdata(param_2[3]); + if (pGVar6 == NULL) { + return; + } + if (pGVar6->POSdata_pointer == 0) { + return; + } + if (pGVar6->MODELdata_pointer == 0) { + return; + } + if (*(char *)((int)param_2 + 3) == '\b') { + puVar8 = proc_7F051DD8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); + scale_00 = extraout_f12_04; + } + else { + puVar8 = init_object_no_default_pos_controller + ((object_standard *)param_2, + (object_header *)PitemZ_entries[iStack8].header); + scale_00 = extraout_f12_05; + } + set_obj_instance_controller_scale(*(int *)(param_2 + 10),scale_00); + proc_7F03A5A4((int)puVar8,pGVar6->POSdata_pointer); + return; + } + uVar1 = param_2[3]; + if ((short)uVar1 < 10000) { + pfVar7 = (float *)(ptr_0xxxpresets + (int)(short)uVar1 * 0x2c); + proc_7F059908(afStack108,fVar10,fVar12,0.00000000,0.00000000,0.00000000,-pfVar7[6], + -pfVar7[7],-pfVar7[8],pfVar7[3]); + fStack40 = *pfVar7; + fStack36 = pfVar7[1]; + fStack32 = pfVar7[2]; + if ((*(uint *)(param_2 + 4) & 2) == 0) { + fStack120 = *pfVar7; + fStack116 = pfVar7[1]; + fStack112 = pfVar7[2]; + } + else { + fStack120 = *pfVar7; + fStack116 = pfVar7[1]; + fStack112 = pfVar7[2]; + } + fStack44 = pfVar7[10]; + fVar10 = extraout_f12_06; } else { - proc_7F0406F8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); - instancecontroller = *(int *)(param_2 + 10); - scale_00 = extraout_f12_03; + puVar8 = ptr_2xxxpresets + (int)(short)uVar1 * 0x44; + pfVar9 = (float *)(puVar8 + -680000); + proc_7F059908(afStack108,fVar10,fVar12,0.00000000,0.00000000,0.00000000, + -*(float *)(puVar8 + -0xa6028),-*(float *)(puVar8 + -0xa6024), + -*(float *)(puVar8 + -0xa6020),*(float *)(puVar8 + -0xa6034)); + if ((*(uint *)(param_2 + 6) & 1) == 0) { + proc_7F001BD4(pfVar9,&fStack40); + fStack120 = *(float *)(puVar8 + -0xa6034) * + (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + + fStack40; + fStack116 = *(float *)(puVar8 + -0xa6030) * + (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + + fStack36; + fStack112 = *(float *)(puVar8 + -0xa602c) * + (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + + fStack32; + fStack44 = *(float *)(puVar8 + -0xa6018); + proc_7F0B0BE4((int *)&fStack44,extraout_f12_07,extraout_f14_02,*pfVar9, + *(float *)(puVar8 + -0xa6038)); + fVar10 = extraout_f12_08; + if (lVar4 == 0) { + fStack40 = *pfVar9; + fStack36 = *(float *)(puVar8 + -0xa603c); + fStack32 = *(float *)(puVar8 + -0xa6038); + fStack44 = *(float *)(puVar8 + -0xa6018); + } + } + else { + fStack40 = *pfVar9; + fStack36 = *(float *)(puVar8 + -0xa603c); + fStack32 = *(float *)(puVar8 + -0xa6038); + fStack44 = *(float *)(puVar8 + -0xa6018); + proc_7F001BD4(pfVar9,&fStack120); + fStack120 = fStack120 + + (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + * *(float *)(puVar8 + -0xa6034); + fStack116 = fStack116 + + (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + * *(float *)(puVar8 + -0xa6030); + fStack112 = fStack112 + + (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + * *(float *)(puVar8 + -0xa602c); + fVar10 = extraout_f12_09; + } } - set_obj_instance_controller_scale(instancecontroller,scale_00); - return; - } - if ((uVar2 & 0x4000) != 0) { - pGVar6 = check_if_guardnum_loaded_get_ptr_GUARDdata(param_2[3]); - if (pGVar6 == NULL) { - return; - } - if (pGVar6->POSdata_pointer == 0) { - return; - } - if (pGVar6->MODELdata_pointer == 0) { - return; + lVar4 = proc_7F056850(&fStack40,(longlong)(int)fStack44,fVar10,NULL,auStack24); + if (lVar4 == 0) { + return; } if (*(char *)((int)param_2 + 3) == '\b') { - puVar8 = proc_7F051DD8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); - scale_00 = extraout_f12_04; + poStack152 = (object_standard *) + proc_7F051DD8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); + scale_00 = extraout_f12_10; } else { - puVar8 = proc_7F0406F8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); - scale_00 = extraout_f12_05; + poStack152 = (object_standard *)proc_7F04071C((int)param_2); + scale_00 = extraout_f12_11; } - set_obj_instance_controller_scale(*(int *)(param_2 + 10),scale_00); - proc_7F03A5A4((int)puVar8,pGVar6->POSdata_pointer); - return; - } - uVar1 = param_2[3]; - if ((short)uVar1 < 10000) { - pfVar7 = (float *)(ptr_0xxxpresets + (int)(short)uVar1 * 0x2c); - proc_7F059908(afStack108,fVar10,fVar12,0.00000000,0.00000000,0.00000000,-pfVar7[6],-pfVar7[7], - -pfVar7[8],pfVar7[3]); - fStack40 = *pfVar7; - fStack36 = pfVar7[1]; - fStack32 = pfVar7[2]; - if ((*(uint *)(param_2 + 4) & 2) == 0) { - fStack120 = *pfVar7; - fStack116 = pfVar7[1]; - fStack112 = pfVar7[2]; + if (pfVar9 == NULL) { + instancecontroller = *(int *)(param_2 + 10); + goto LAB_7f002698; } - else { - fStack120 = *pfVar7; - fStack116 = pfVar7[1]; - fStack112 = pfVar7[2]; - } - fStack44 = pfVar7[10]; - fVar10 = extraout_f12_06; - } - else { - puVar8 = ptr_2xxxpresets + (int)(short)uVar1 * 0x44; - pfVar9 = (float *)(puVar8 + -680000); - proc_7F059908(afStack108,fVar10,fVar12,0.00000000,0.00000000,0.00000000, - -*(float *)(puVar8 + -0xa6028),-*(float *)(puVar8 + -0xa6024), - -*(float *)(puVar8 + -0xa6020),*(float *)(puVar8 + -0xa6034)); - if ((*(uint *)(param_2 + 6) & 1) == 0) { - proc_7F001BD4(pfVar9,&fStack40); - fStack120 = *(float *)(puVar8 + -0xa6034) * - (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + - fStack40; - fStack116 = *(float *)(puVar8 + -0xa6030) * - (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + - fStack36; - fStack112 = *(float *)(puVar8 + -0xa602c) * - (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 + - fStack32; - fStack44 = *(float *)(puVar8 + -0xa6018); - proc_7F0B0BE4((int *)&fStack44,extraout_f12_07,extraout_f14_02,*pfVar9, - *(float *)(puVar8 + -0xa6038)); - fVar10 = extraout_f12_08; - if (uVar4 == 0) { - fStack40 = *pfVar9; - fStack36 = *(float *)(puVar8 + -0xa603c); - fStack32 = *(float *)(puVar8 + -0xa6038); - fStack44 = *(float *)(puVar8 + -0xa6018); - fVar10 = extraout_f12_08; - } - } - else { - fStack40 = *pfVar9; - fStack36 = *(float *)(puVar8 + -0xa603c); - fStack32 = *(float *)(puVar8 + -0xa6038); - fStack44 = *(float *)(puVar8 + -0xa6018); - proc_7F001BD4(pfVar9,&fStack120); - fStack120 = fStack120 + - (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 * - *(float *)(puVar8 + -0xa6034); - fStack116 = fStack116 + - (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 * - *(float *)(puVar8 + -0xa6030); - fStack112 = fStack112 + - (*(float *)(puVar8 + -0xa600c) - *(float *)(puVar8 + -0xa6008)) * 0.50000000 * - *(float *)(puVar8 + -0xa602c); - fVar10 = extraout_f12_09; - } - } - lVar5 = proc_7F056850(&fStack40,(longlong)(int)fStack44,fVar10,NULL,auStack24); - if (lVar5 == 0) { - return; - } - if (*(char *)((int)param_2 + 3) == '\b') { - poStack152 = (object_standard *) - proc_7F051DD8((int)param_2,(ushort **)PitemZ_entries[iStack8].header); - scale_00 = extraout_f12_10; - } - else { - poStack152 = (object_standard *)proc_7F04071C((int)param_2); - scale_00 = extraout_f12_11; - } - if (pfVar9 == NULL) { - instancecontroller = *(int *)(param_2 + 10); - goto LAB_7f002698; - } - instancecontroller = proc_7F040078((int)param_2); - scale_00 = extraout_f12_12; - if (instancecontroller != 0) { - fStack160 = 1.00000000; - uVar2 = *(uint *)(param_2 + 4); - if ((uVar2 & 0x30) != 0) { - fVar12 = *(float *)(instancecontroller + 4); - fVar10 = *(float *)(instancecontroller + 8); - if (fVar12 < fVar10) { - if ((uVar2 & 2) == 0) { - fStack160 = (pfVar9[0xc] - pfVar9[0xb]) / - ((fVar10 - fVar12) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + instancecontroller = proc_7F040078((int)param_2); + scale_00 = extraout_f12_12; + if (instancecontroller != 0) { + fStack160 = 1.00000000; + uVar2 = *(uint *)(param_2 + 4); + if ((uVar2 & 0x30) != 0) { + fVar12 = *(float *)(instancecontroller + 4); + fVar10 = *(float *)(instancecontroller + 8); + if (fVar12 < fVar10) { + if ((uVar2 & 2) == 0) { + fStack160 = (pfVar9[0xc] - pfVar9[0xb]) / + ((fVar10 - fVar12) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + } + else { + fStack160 = (pfVar9[0xc] - pfVar9[0xb]) / + ((fVar10 - fVar12) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + } + } } - else { - fStack160 = (pfVar9[0xc] - pfVar9[0xb]) / - ((fVar10 - fVar12) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + fVar10 = 1.00000000; + fVar12 = 1.00000000; + if ((uVar2 & 0x50) != 0) { + fVar13 = *(float *)(instancecontroller + 0xc); + fVar11 = *(float *)(instancecontroller + 0x10); + fVar10 = 1.00000000; + fVar12 = 1.00000000; + if (fVar13 < fVar11) { + if ((uVar2 & 2) == 0) { + fVar10 = (pfVar9[0xe] - pfVar9[0xd]) / + ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + } + else { + fVar12 = (pfVar9[0x10] - pfVar9[0xf]) / + ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + } + } } - } - } - fVar10 = 1.00000000; - fVar12 = 1.00000000; - if ((uVar2 & 0x50) != 0) { - fVar13 = *(float *)(instancecontroller + 0xc); - fVar11 = *(float *)(instancecontroller + 0x10); - fVar10 = 1.00000000; - fVar12 = 1.00000000; - if (fVar13 < fVar11) { - if ((uVar2 & 2) == 0) { - fVar10 = (pfVar9[0xe] - pfVar9[0xd]) / - ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); - fVar12 = 1.00000000; + if ((uVar2 & 0x90) != 0) { + fVar13 = *(float *)(instancecontroller + 0x14); + fVar11 = *(float *)(instancecontroller + 0x18); + if (fVar13 < fVar11) { + if ((uVar2 & 2) == 0) { + fVar12 = (pfVar9[0x10] - pfVar9[0xf]) / + ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + } + else { + fVar10 = (pfVar9[0xe] - pfVar9[0xd]) / + ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + } + } } - else { - fVar10 = 1.00000000; - fVar12 = (pfVar9[0x10] - pfVar9[0xf]) / - ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + fVar11 = fVar10; + if (fStack160 <= fVar10) { + fVar11 = fStack160; } - } - } - if ((uVar2 & 0x90) != 0) { - fVar13 = *(float *)(instancecontroller + 0x14); - fVar11 = *(float *)(instancecontroller + 0x18); - if (fVar13 < fVar11) { - if ((uVar2 & 2) == 0) { - fVar12 = (pfVar9[0x10] - pfVar9[0xf]) / - ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + fVar13 = fVar12; + if (fVar11 <= fVar12) { + fVar13 = fVar11; } - else { - fVar10 = (pfVar9[0xe] - pfVar9[0xd]) / - ((fVar11 - fVar13) * *(float *)(*(int *)(param_2 + 10) + 0x14)); + fVar11 = fVar10; + if (fVar10 <= fStack160) { + fVar11 = fStack160; } - } - } - fVar11 = fVar10; - if (fStack160 <= fVar10) { - fVar11 = fStack160; - } - fVar13 = fVar12; - if (fVar11 <= fVar12) { - fVar13 = fVar11; - } - fVar11 = fVar10; - if (fVar10 <= fStack160) { - fVar11 = fStack160; - } - fVar14 = fVar12; - if (fVar12 <= fVar11) { - fVar14 = fVar11; - } - fVar11 = fVar13; - fVar16 = fVar13; - if ((uVar2 & 0x10) == 0) { - fVar13 = fStack160; - if ((uVar2 & 0x20) == 0) { - if ((uVar2 & 2) == 0) { - fVar13 = fVar14; - if (*(float *)(instancecontroller + 4) != *(float *)(instancecontroller + 8)) { + fVar14 = fVar12; + if (fVar12 <= fVar11) { + fVar14 = fVar11; + } + fVar11 = fVar13; + fVar16 = fVar13; + if ((uVar2 & 0x10) == 0) { fVar13 = fStack160; - } - } - else { - fVar13 = fVar14; - if (*(float *)(instancecontroller + 4) != *(float *)(instancecontroller + 8)) { - fVar13 = fStack160; - } - } - } - fVar15 = fVar10; - fVar17 = fVar12; - if ((uVar2 & 0x40) == 0) { - if ((uVar2 & 2) == 0) { - fVar15 = fVar14; - fVar17 = fVar12; - if (*(float *)(instancecontroller + 0xc) != *(float *)(instancecontroller + 0x10)) { + if ((uVar2 & 0x20) == 0) { + fVar13 = fVar14; + if ((uVar2 & 2) == 0) { + if (*(float *)(instancecontroller + 4) != *(float *)(instancecontroller + 8)) { + fVar13 = fStack160; + } + } + else { + if (*(float *)(instancecontroller + 4) != *(float *)(instancecontroller + 8)) { + fVar13 = fStack160; + } + } + } fVar15 = fVar10; fVar17 = fVar12; - } + if ((uVar2 & 0x40) == 0) { + if ((uVar2 & 2) == 0) { + fVar15 = fVar14; + if (*(float *)(instancecontroller + 0xc) != + *(float *)(instancecontroller + 0x10)) { + fVar15 = fVar10; + } + } + else { + fVar17 = fVar14; + if (*(float *)(instancecontroller + 0xc) != + *(float *)(instancecontroller + 0x10)) { + fVar17 = fVar12; + } + } + } + fVar11 = fVar15; + fVar16 = fVar17; + if ((uVar2 & 0x80) != 0) goto LAB_7f0025fc; + if ((uVar2 & 2) == 0) { + fVar16 = fVar14; + if (*(float *)(instancecontroller + 0x14) == *(float *)(instancecontroller + 0x18)) + goto LAB_7f0025fc; + fVar13 = fVar13 / fVar14; + } + else { + fVar11 = fVar14; + if (*(float *)(instancecontroller + 0x14) == *(float *)(instancecontroller + 0x18)) + goto LAB_7f0025fc; + fVar13 = fVar13 / fVar14; + } } else { - fVar15 = fVar10; - fVar17 = fVar14; - if (*(float *)(instancecontroller + 0xc) != *(float *)(instancecontroller + 0x10)) { - fVar15 = fVar10; - fVar17 = fVar12; - } - } - } - fVar11 = fVar15; - fVar16 = fVar17; - if ((uVar2 & 0x80) != 0) goto LAB_7f0025fc; - if ((uVar2 & 2) == 0) { - fVar11 = fVar15; - fVar16 = fVar14; - if (*(float *)(instancecontroller + 0x14) == *(float *)(instancecontroller + 0x18)) - goto LAB_7f0025fc; - fVar13 = fVar13 / fVar14; - } - else { - fVar11 = fVar14; - fVar16 = fVar17; - if (*(float *)(instancecontroller + 0x14) == *(float *)(instancecontroller + 0x18)) - goto LAB_7f0025fc; - fVar13 = fVar13 / fVar14; - } - } - else { LAB_7f0025fc: - fVar13 = fVar13 / fVar14; - fVar15 = fVar11; - fVar17 = fVar16; + fVar13 = fVar13 / fVar14; + fVar15 = fVar11; + fVar17 = fVar16; + } + fVar15 = fVar15 / fVar14; + fVar17 = fVar17 / fVar14; + if (((fVar13 <= flt_8004EEB4) || (fVar15 <= flt_8004EEB4)) || (fVar17 <= flt_8004EEB4)) { + fVar13 = 1.00000000; + fVar15 = 1.00000000; + fVar17 = fVar13; + } + proc_7F0589B4(fVar13,extraout_a0,afStack108); + proc_7F0589E4(fVar15,extraout_a0_00,(int)afStack108); + proc_7F058A4C(fVar17,extraout_a0_01,(int)afStack108); + set_obj_instance_controller_scale(*(int *)(param_2 + 10),scale); + scale_00 = extraout_f12_13; } - fVar15 = fVar15 / fVar14; - fVar17 = fVar17 / fVar14; - if (((fVar13 <= flt_8004EEB4) || (fVar15 <= flt_8004EEB4)) || (fVar17 <= flt_8004EEB4)) { - fVar13 = 1.00000000; - fVar15 = 1.00000000; - fVar17 = fVar13; - } - proc_7F0589B4(fVar13,extraout_a0,afStack108); - proc_7F0589E4(fVar15,extraout_a0_00,(int)afStack108); - proc_7F058A4C(fVar17,extraout_a0_01,(int)afStack108); - set_obj_instance_controller_scale(*(int *)(param_2 + 10),scale); - scale_00 = extraout_f12_13; - } - instancecontroller = *(int *)(param_2 + 10); + instancecontroller = *(int *)(param_2 + 10); LAB_7f002698: - set_obj_instance_controller_scale(instancecontroller,scale_00); - matrix_multiply_A1_by_F12(*(float *)(*(int *)(param_2 + 10) + 0x14),extraout_a0_02,afStack108); - if ((*(uint *)(param_2 + 4) & 2) == 0) { - proc_7F04088C(); - } - else { - proc_7F040BA0(); - } - proc_7F056CA0((int)param_2); - set_current_objposdata_plus_0x28(poStack152); - set_stateflag_0x04_for_posdata((int)poStack152); - return; + set_obj_instance_controller_scale(instancecontroller,scale_00); + matrix_multiply_A1_by_F12(*(float *)(*(int *)(param_2 + 10) + 0x14),extraout_a0_02,afStack108); + if ((*(uint *)(param_2 + 4) & 2) == 0) { + proc_7F04088C(); + } + else { + proc_7F040BA0(); + } + proc_7F056CA0((int)param_2); + set_current_objposdata_plus_0x28(poStack152); + set_stateflag_0x04_for_posdata((int)poStack152); + return; } @@ -24697,125 +24824,125 @@ LAB_7f002698: void expand_08_obj_set_guard_MP_weapons(int param_1,ushort *param_2) { - char cVar1; - byte bVar2; - float fVar3; - GUARDdata *pGVar5; - uint uVar6; - ulonglong uVar4; - int iVar7; - int iVar8; - undefined4 *puVar9; - float fVar10; - ushort uVar11; - - if ((*(uint *)(param_2 + 4) & 0x4000) != 0) { - pGVar5 = check_if_guardnum_loaded_get_ptr_GUARDdata(param_2[3]); - if (pGVar5 == NULL) { - return; + char cVar1; + byte bVar2; + float fVar3; + GUARDdata *pGVar4; + uint uVar5; + s32 sVar6; + int iVar7; + int iVar8; + undefined4 *puVar9; + float fVar10; + ushort uVar11; + + if ((*(uint *)(param_2 + 4) & 0x4000) != 0) { + pGVar4 = check_if_guardnum_loaded_get_ptr_GUARDdata(param_2[3]); + if (pGVar4 == NULL) { + return; + } + if (pGVar4->POSdata_pointer == 0) { + return; + } + if (pGVar4->MODELdata_pointer == 0) { + return; + } + uVar5 = cheatCheckIfOn(UNUSED_1C); + if ((uVar5 != 0) && (true)) { + switch(*(undefined *)(param_2 + 0x40)) { + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x1d: + case 0x1e: + case 0x1f: + *(undefined *)(param_2 + 0x40) = 0x19; + param_2[2] = 0xd3; + *param_2 = 0x100; + } + } + set_weapon_model_generated_thrown_object((int)*(char *)(param_2 + 0x40)); + proc_7F052030(param_2,(int)pGVar4); + return; } - if (pGVar5->POSdata_pointer == 0) { - return; - } - if (pGVar5->MODELdata_pointer == 0) { - return; - } - uVar6 = proc_7F0927BC(0x1c); - if ((uVar6 != 0) && (true)) { - switch(*(undefined *)(param_2 + 0x40)) { - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x1d: - case 0x1e: - case 0x1f: - *(undefined *)(param_2 + 0x40) = 0x19; - param_2[2] = 0xd3; - *param_2 = 0x100; - } - } - set_weapon_model_generated_thrown_object((int)*(char *)(param_2 + 0x40)); - proc_7F052030(param_2,(int)pGVar5); - return; - } - uVar4 = get_num_players(); - iVar7 = 1; - if (1 < (longlong)uVar4) { - lastmpweaponnum = -1; - bVar2 = *(byte *)(param_2 + 0x40); - if (bVar2 < 0x59) { - if (bVar2 != 0x58) { - cVar1 = *(char *)(param_2 + 0x40); - goto LAB_7f002970; - } - iVar8 = get_scenario(); - iVar7 = 1; - if (iVar8 != 2) { - iVar7 = 0; - } - } - else { - if ((uint)bVar2 - 0xf0 < 8) { - iVar7 = get_ptr_mp_weapon_set_data(); - lastmpweaponnum = (uint)*(byte *)(param_2 + 0x40) - 0xf0; - puVar9 = (undefined4 *)(iVar7 + lastmpweaponnum * 0x18); - *(char *)(param_2 + 0x40) = (char)*puVar9; - param_2[2] = (ushort)puVar9[1]; - fVar10 = (float)puVar9[2] * 256.00000000; - if (false) { - fVar3 = ROUND(fVar10); + sVar6 = get_num_players(); + iVar7 = 1; + if (1 < sVar6) { + lastmpweaponnum = -1; + bVar2 = *(byte *)(param_2 + 0x40); + if (bVar2 < 0x59) { + if (bVar2 != 0x58) { + cVar1 = *(char *)(param_2 + 0x40); + goto LAB_7f002970; + } + iVar8 = get_scenario(); + iVar7 = 1; + if (iVar8 != 2) { + iVar7 = 0; + } } else { - fVar3 = FLOOR(fVar10); - } - uVar11 = (ushort)(int)fVar3; - if (false) { - if (false) { - fVar10 = ROUND(fVar10 - 2147483648.00000000); - } - else { - fVar10 = FLOOR(fVar10 - 2147483648.00000000); - } - if (false) goto LAB_7f002924; - uVar11 = (ushort)(int)fVar10; - } - else { - if ((int)fVar3 < 0) { + if ((uint)bVar2 - 0xf0 < 8) { + iVar7 = get_ptr_mp_weapon_set_data(); + lastmpweaponnum = (uint)*(byte *)(param_2 + 0x40) - 0xf0; + puVar9 = (undefined4 *)(iVar7 + lastmpweaponnum * 0x18); + *(char *)(param_2 + 0x40) = (char)*puVar9; + param_2[2] = (ushort)puVar9[1]; + fVar10 = (float)puVar9[2] * 256.00000000; + if (false) { + fVar3 = ROUND(fVar10); + } + else { + fVar3 = FLOOR(fVar10); + } + uVar11 = (ushort)(int)fVar3; + if (false) { + if (false) { + fVar10 = ROUND(fVar10 - 2147483648.00000000); + } + else { + fVar10 = FLOOR(fVar10 - 2147483648.00000000); + } + if (false) goto LAB_7f002924; + uVar11 = (ushort)(int)fVar10; + } + else { + if ((int)fVar3 < 0) { LAB_7f002924: - uVar11 = 0xffff; - } + uVar11 = 0xffff; + } + } + *param_2 = uVar11; + iVar7 = puVar9[5]; + } } - *param_2 = uVar11; - iVar7 = puVar9[5]; - } } - } - cVar1 = *(char *)(param_2 + 0x40); + cVar1 = *(char *)(param_2 + 0x40); LAB_7f002970: - if ((cVar1 != '\0') && (iVar7 != 0)) { - set_weapon_model_generated_thrown_object((int)cVar1); - prepare_load_objects((longlong)param_1,param_2); - } - return; + if ((cVar1 != '\0') && (iVar7 != 0)) { + set_weapon_model_generated_thrown_object((int)cVar1); + prepare_load_objects((longlong)param_1,param_2); + } + return; } @@ -24823,18 +24950,19 @@ LAB_7f002970: void expand_type_0D_MP_weapon_expansion_routine(undefined8 param_1,ushort *param_2) { - GUARDdata *pGVar1; - - if ((*(uint *)(param_2 + 4) & 0x4000) == 0) { - prepare_load_objects(param_1,param_2); - } - else { - pGVar1 = check_if_guardnum_loaded_get_ptr_GUARDdata(param_2[3]); - if (((pGVar1 != NULL) && (pGVar1->POSdata_pointer != 0)) && (pGVar1->MODELdata_pointer != 0)) { - proc_7F051084(param_2,(int)pGVar1); + GUARDdata *pGVar1; + + if ((*(uint *)(param_2 + 4) & 0x4000) == 0) { + prepare_load_objects(param_1,param_2); } - } - return; + else { + pGVar1 = check_if_guardnum_loaded_get_ptr_GUARDdata(param_2[3]); + if (((pGVar1 != NULL) && (pGVar1->POSdata_pointer != 0)) && (pGVar1->MODELdata_pointer != 0) + ) { + proc_7F051084(param_2,(int)pGVar1); + } + } + return; } @@ -24842,8 +24970,8 @@ void expand_type_0D_MP_weapon_expansion_routine(undefined8 param_1,ushort *param void expand_type_04_object(undefined8 param_1,ushort *param_2) { - prepare_load_objects(param_1,param_2); - return; + prepare_load_objects(param_1,param_2); + return; } @@ -24851,62 +24979,63 @@ void expand_type_04_object(undefined8 param_1,ushort *param_2) void expand_type_06_object(undefined8 param_1,ushort *param_2) { - int iVar1; - float *pfVar2; - undefined8 extraout_a0; - float fVar3; - undefined4 uVar4; - float fVar5; - float extraout_f12; - float extraout_f14; - float fStack20; - float fStack16; - float fStack12; - float *pfStack8; - - prepare_load_objects(param_1,param_2); - iVar1 = *(int *)(param_2 + 0x40); - if (-1 < iVar1) { - pfVar2 = *(float **)(**(int **)(*(int *)(*(int *)(param_2 + 10) + 8) + 8) + 4); - if (iVar1 < 10000) { - pfStack8 = (float *)(ptr_0xxxpresets + iVar1 * 0x2c); + int iVar1; + float *pfVar2; + undefined8 extraout_a0; + float fVar3; + undefined4 uVar4; + float fVar5; + float extraout_f12; + float extraout_f14; + float fStack20; + float fStack16; + float fStack12; + float *pfStack8; + + prepare_load_objects(param_1,param_2); + iVar1 = *(int *)(param_2 + 0x40); + if (-1 < iVar1) { + pfVar2 = *(float **)(**(int **)(*(int *)(*(int *)(param_2 + 10) + 8) + 8) + 4); + if (iVar1 < 10000) { + pfStack8 = (float *)(ptr_0xxxpresets + iVar1 * 0x2c); + } + else { + pfStack8 = (float *)(ptr_2xxxpresets + iVar1 * 0x44 + -680000); + } + fStack20 = *pfVar2; + fStack16 = pfVar2[1]; + fStack12 = pfVar2[2]; + proc_7F0583D8((float *)(param_2 + 0xc),&fStack20); + fStack20 = fStack20 + *(float *)(*(int *)(param_2 + 8) + 8); + fStack16 = fStack16 + *(float *)(*(int *)(param_2 + 8) + 0xc); + fStack12 = fStack12 + *(float *)(*(int *)(param_2 + 8) + 0x10); + proc_7F059908((float *)(param_2 + 0x42),extraout_f12,extraout_f14,0.00000000,0.00000000, + 0.00000000,fStack20 - *pfStack8,fStack16 - pfStack8[1],fStack12 - pfStack8[2], + 0.00000000); + matrix_multiply_A1_by_F12 + (*(float *)(*(int *)(param_2 + 10) + 0x14),extraout_a0,(float *)(param_2 + 0x42)); + fVar3 = flt_8004EF50; + if (*(int *)(param_2 + 0x72) == 0) { + fVar5 = (float)*(int *)(param_2 + 0x66) * flt_8004EF50; + *(undefined4 *)(param_2 + 0x72) = 1; + *(float *)(param_2 + 0x66) = fVar5 / 65536.00000000; + *(float *)(param_2 + 0x68) = ((float)*(int *)(param_2 + 0x68) * fVar3) / 65536.00000000; + *(float *)(param_2 + 0x74) = (float)*(int *)(param_2 + 0x74); + *(float *)(param_2 + 0x6e) = ((float)*(int *)(param_2 + 0x6e) * fVar3) / 65536.00000000; + uVar4 = *(undefined4 *)(param_2 + 0x66); + } + else { + uVar4 = *(undefined4 *)(param_2 + 0x66); + } + *(undefined4 *)(param_2 + 0x6a) = 0; + *(undefined4 *)(param_2 + 0x6c) = 0; + *(undefined4 *)(param_2 + 100) = uVar4; + fVar3 = convert_angle_using_inverse + ((f32)(fStack20 - *pfStack8),(f32)(fStack12 - pfStack8[2])); + *(float *)(param_2 + 0x62) = fVar3; + *(undefined4 *)(param_2 + 0x70) = 0; } - else { - pfStack8 = (float *)(ptr_2xxxpresets + iVar1 * 0x44 + -680000); - } - fStack20 = *pfVar2; - fStack16 = pfVar2[1]; - fStack12 = pfVar2[2]; - proc_7F0583D8((float *)(param_2 + 0xc),&fStack20); - fStack20 = fStack20 + *(float *)(*(int *)(param_2 + 8) + 8); - fStack16 = fStack16 + *(float *)(*(int *)(param_2 + 8) + 0xc); - fStack12 = fStack12 + *(float *)(*(int *)(param_2 + 8) + 0x10); - proc_7F059908((float *)(param_2 + 0x42),extraout_f12,extraout_f14,0.00000000,0.00000000, - 0.00000000,fStack20 - *pfStack8,fStack16 - pfStack8[1],fStack12 - pfStack8[2], - 0.00000000); - matrix_multiply_A1_by_F12 - (*(float *)(*(int *)(param_2 + 10) + 0x14),extraout_a0,(float *)(param_2 + 0x42)); - fVar3 = flt_8004EF50; - if (*(int *)(param_2 + 0x72) == 0) { - fVar5 = (float)*(int *)(param_2 + 0x66) * flt_8004EF50; - *(undefined4 *)(param_2 + 0x72) = 1; - *(float *)(param_2 + 0x66) = fVar5 / 65536.00000000; - *(float *)(param_2 + 0x68) = ((float)*(int *)(param_2 + 0x68) * fVar3) / 65536.00000000; - *(float *)(param_2 + 0x74) = (float)*(int *)(param_2 + 0x74); - *(float *)(param_2 + 0x6e) = ((float)*(int *)(param_2 + 0x6e) * fVar3) / 65536.00000000; - uVar4 = *(undefined4 *)(param_2 + 0x66); - } - else { - uVar4 = *(undefined4 *)(param_2 + 0x66); - } - *(undefined4 *)(param_2 + 0x6a) = 0; - *(undefined4 *)(param_2 + 0x6c) = 0; - *(undefined4 *)(param_2 + 100) = uVar4; - fVar3 = convert_angle_using_inverse((f32)(fStack20 - *pfStack8),(f32)(fStack12 - pfStack8[2])); - *(float *)(param_2 + 0x62) = fVar3; - *(undefined4 *)(param_2 + 0x70) = 0; - } - return; + return; } @@ -24914,61 +25043,61 @@ void expand_type_06_object(undefined8 param_1,ushort *param_2) void expand_type_0D_object_autoturret(undefined8 param_1,ushort *param_2) { - int iVar1; - undefined *puVar2; - float *pfVar3; - float vector2; - float fVar4; - float fVar5; - float vector1; - float vector2_00; - - prepare_load_objects(param_1,param_2); - vector2 = flt_8004EF54; - fVar4 = (float)*(int *)(param_2 + 0x52) * flt_8004EF54; - *(undefined4 *)(param_2 + 0x56) = 0; - *(undefined4 *)(param_2 + 0x5c) = 0xffffffff; - *(undefined4 *)(param_2 + 0x5e) = 0xffffffff; - *(undefined4 *)(param_2 + 0x60) = 0xffffffff; - *(undefined4 *)(param_2 + 0x62) = 0; - *(undefined4 *)(param_2 + 100) = 0; - *(undefined4 *)(param_2 + 0x48) = 0; - *(undefined4 *)(param_2 + 0x4a) = 0; - *(undefined4 *)(param_2 + 0x42) = 0; - *(undefined4 *)(param_2 + 0x4e) = 0; - *(undefined4 *)(param_2 + 0x50) = 0; - *(undefined4 *)(param_2 + 0x4c) = 0; - *(undefined4 *)(param_2 + 0x58) = 0; - *(undefined4 *)(param_2 + 0x5a) = 0; - *(float *)(param_2 + 0x52) = fVar4 / 65536.00000000; - *(float *)(param_2 + 0x54) = ((float)*(int *)(param_2 + 0x54) * 100.00000000) / 65536.00000000; - *(float *)(param_2 + 0x44) = ((float)*(int *)(param_2 + 0x44) * vector2) / 65536.00000000; - *(float *)(param_2 + 0x46) = ((float)*(int *)(param_2 + 0x46) * vector2) / 65536.00000000; - puVar2 = (undefined *)allocate_bytes_in_bank(0x30,4); - *(undefined **)(param_2 + 0x66) = puVar2; - *puVar2 = 0xff; - iVar1 = *(int *)(param_2 + 0x40); - *(undefined4 *)(param_2 + 0x68) = 0; - *(undefined4 *)(param_2 + 0x6a) = 0; - if (-1 < iVar1) { - if (iVar1 < 10000) { - pfVar3 = (float *)(ptr_0xxxpresets + iVar1 * 0x2c); + int iVar1; + undefined *puVar2; + float *pfVar3; + float vector2; + float fVar4; + float fVar5; + float vector1; + float vector2_00; + + prepare_load_objects(param_1,param_2); + vector2 = flt_8004EF54; + fVar4 = (float)*(int *)(param_2 + 0x52) * flt_8004EF54; + *(undefined4 *)(param_2 + 0x56) = 0; + *(undefined4 *)(param_2 + 0x5c) = 0xffffffff; + *(undefined4 *)(param_2 + 0x5e) = 0xffffffff; + *(undefined4 *)(param_2 + 0x60) = 0xffffffff; + *(undefined4 *)(param_2 + 0x62) = 0; + *(undefined4 *)(param_2 + 100) = 0; + *(undefined4 *)(param_2 + 0x48) = 0; + *(undefined4 *)(param_2 + 0x4a) = 0; + *(undefined4 *)(param_2 + 0x42) = 0; + *(undefined4 *)(param_2 + 0x4e) = 0; + *(undefined4 *)(param_2 + 0x50) = 0; + *(undefined4 *)(param_2 + 0x4c) = 0; + *(undefined4 *)(param_2 + 0x58) = 0; + *(undefined4 *)(param_2 + 0x5a) = 0; + *(float *)(param_2 + 0x52) = fVar4 / 65536.00000000; + *(float *)(param_2 + 0x54) = ((float)*(int *)(param_2 + 0x54) * 100.00000000) / 65536.00000000; + *(float *)(param_2 + 0x44) = ((float)*(int *)(param_2 + 0x44) * vector2) / 65536.00000000; + *(float *)(param_2 + 0x46) = ((float)*(int *)(param_2 + 0x46) * vector2) / 65536.00000000; + puVar2 = (undefined *)mempAllocBytesInBank(0x30,'\x04'); + *(undefined **)(param_2 + 0x66) = puVar2; + *puVar2 = 0xff; + iVar1 = *(int *)(param_2 + 0x40); + *(undefined4 *)(param_2 + 0x68) = 0; + *(undefined4 *)(param_2 + 0x6a) = 0; + if (-1 < iVar1) { + if (iVar1 < 10000) { + pfVar3 = (float *)(ptr_0xxxpresets + iVar1 * 0x2c); + } + else { + pfVar3 = (float *)(ptr_2xxxpresets + iVar1 * 0x44 + -680000); + } + iVar1 = *(int *)(param_2 + 8); + fVar4 = pfVar3[1]; + fVar5 = *(float *)(iVar1 + 0xc); + vector1 = *pfVar3 - *(float *)(iVar1 + 8); + vector2_00 = pfVar3[2] - *(float *)(iVar1 + 0x10); + vector2 = convert_angle_using_inverse((f32)vector1,(f32)vector2_00); + *(float *)(param_2 + 0x42) = vector2; + vector2 = sqrtf(vector1 * vector1 + vector2_00 * vector2_00); + vector2 = convert_angle_using_inverse((f32)(fVar4 - fVar5),(f32)vector2); + *(float *)(param_2 + 0x4c) = vector2; } - else { - pfVar3 = (float *)(ptr_2xxxpresets + iVar1 * 0x44 + -680000); - } - iVar1 = *(int *)(param_2 + 8); - fVar4 = pfVar3[1]; - fVar5 = *(float *)(iVar1 + 0xc); - vector1 = *pfVar3 - *(float *)(iVar1 + 8); - vector2_00 = pfVar3[2] - *(float *)(iVar1 + 0x10); - vector2 = convert_angle_using_inverse((f32)vector1,(f32)vector2_00); - *(float *)(param_2 + 0x42) = vector2; - vector2 = sqrtf(vector1 * vector1 + vector2_00 * vector2_00); - vector2 = convert_angle_using_inverse((f32)(fVar4 - fVar5),(f32)vector2); - *(float *)(param_2 + 0x4c) = vector2; - } - return; + return; } @@ -24976,8 +25105,8 @@ void expand_type_0D_object_autoturret(undefined8 param_1,ushort *param_2) void expand_type_0C_object(undefined8 param_1,ushort *param_2) { - prepare_load_objects(param_1,param_2); - return; + prepare_load_objects(param_1,param_2); + return; } @@ -24985,96 +25114,100 @@ void expand_type_0C_object(undefined8 param_1,ushort *param_2) void expand_type_0A_object(int param_1,ushort *param_2,int param_3) { - ushort uVar1; - undefined4 *puVar2; - undefined4 *puVar3; - int iVar5; - ulonglong uVar4; - undefined *puVar6; - int iVar7; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined4 *puVar8; - undefined4 *puVar9; - f32 scale; - - puVar2 = &DAT_80075b98; - puVar3 = (undefined4 *)(param_2 + 0x40); - do { - puVar8 = puVar3; - puVar9 = puVar2; - *puVar8 = *puVar9; - puVar8[1] = puVar9[1]; - puVar8[2] = puVar9[2]; - puVar2 = puVar9 + 3; - puVar3 = puVar8 + 3; - } while (puVar9 + 3 != (undefined4 *)0x80075c04); - puVar8[3] = uRam80075c04; - puVar8[4] = puVar9[4]; - set_ptr_monitor_img_to_obj_ani_slot - ((undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x7e)); - if (((short)param_2[3] < 0) && ((*(uint *)(param_2 + 4) & 0x8000) == 0)) { - uVar1 = param_2[2]; - iVar5 = proc_7F056A88(*(int *)(param_2 + 0x7a) + param_3); - load_model((int)(short)uVar1); - *(float *)(param_2 + 0x3a) = (float)*(int *)(param_2 + 0x3a) / 65536.00000000; - uVar4 = get_num_players(); - if (1 < (longlong)uVar4) { - *(byte *)(param_2 + 1) = *(byte *)(param_2 + 1) | 4; - } - puVar6 = proc_7F04071C((int)param_2); - iVar7 = proc_7F03FE98(); - *(int *)(param_2 + 0x36) = iVar7; - if (puVar6 == NULL) { - iVar5 = *(int *)(param_2 + 4); - } - else { - if (iVar7 == 0) { - iVar5 = *(int *)(param_2 + 4); - } - else { - *(uint *)(param_2 + 0x32) = *(uint *)(param_2 + 0x32) | 0x40; - set_obj_instance_controller_scale(*(int *)(param_2 + 10),scale); - *(undefined4 *)(*(int *)(param_2 + 10) + 0x18) = *(undefined4 *)(iVar5 + 0x14); - iVar7 = *(int *)(param_2 + 0x7c); - if (iVar7 == 0) { - *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = - **(undefined4 **)(*(int *)(*(int *)(iVar5 + 0x14) + 8) + 8); + ushort uVar1; + undefined4 *puVar2; + undefined4 *puVar3; + int iVar4; + s32 sVar5; + undefined *puVar6; + int iVar7; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined4 *puVar8; + undefined4 *puVar9; + f32 scale; + + puVar2 = &DAT_80075b98; + puVar3 = (undefined4 *)(param_2 + 0x40); + do { + puVar8 = puVar3; + puVar9 = puVar2; + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + puVar8[2] = puVar9[2]; + puVar2 = puVar9 + 3; + puVar3 = puVar8 + 3; + } while (puVar9 + 3 != (undefined4 *)0x80075c04); + puVar8[3] = uRam80075c04; + puVar8[4] = puVar9[4]; + set_ptr_monitor_img_to_obj_ani_slot + ((undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x7e)); + if (((short)param_2[3] < 0) && ((*(uint *)(param_2 + 4) & 0x8000) == 0)) { + uVar1 = param_2[2]; + iVar4 = proc_7F056A88(*(int *)(param_2 + 0x7a) + param_3); + load_model((int)(short)uVar1); + *(float *)(param_2 + 0x3a) = (float)*(int *)(param_2 + 0x3a) / 65536.00000000; + sVar5 = get_num_players(); + if (1 < sVar5) { + *(byte *)(param_2 + 1) = *(byte *)(param_2 + 1) | 4; + } + puVar6 = proc_7F04071C((int)param_2); + iVar7 = proc_7F03FE98(); + *(int *)(param_2 + 0x36) = iVar7; + if (puVar6 == NULL) { + iVar4 = *(int *)(param_2 + 4); } else { - if (iVar7 == 1) { - *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(*(int *)(iVar5 + 0x14) + 8) + 8) + 4); - } - else { - if (iVar7 == 2) { - *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(*(int *)(iVar5 + 0x14) + 8) + 8) + 8); + if (iVar7 == 0) { + iVar4 = *(int *)(param_2 + 4); } else { - *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(*(int *)(iVar5 + 0x14) + 8) + 8) + 0xc); + *(uint *)(param_2 + 0x32) = *(uint *)(param_2 + 0x32) | 0x40; + set_obj_instance_controller_scale(*(int *)(param_2 + 10),scale); + *(undefined4 *)(*(int *)(param_2 + 10) + 0x18) = *(undefined4 *)(iVar4 + 0x14); + iVar7 = *(int *)(param_2 + 0x7c); + if (iVar7 == 0) { + *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = + **(undefined4 **)(*(int *)(*(int *)(iVar4 + 0x14) + 8) + 8); + } + else { + if (iVar7 == 1) { + *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = + *(undefined4 *)(*(int *)(*(int *)(*(int *)(iVar4 + 0x14) + 8) + 8) + 4) + ; + } + else { + if (iVar7 == 2) { + *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = + *(undefined4 *) + (*(int *)(*(int *)(*(int *)(iVar4 + 0x14) + 8) + 8) + 8); + } + else { + *(undefined4 *)(*(int *)(param_2 + 10) + 0x1c) = + *(undefined4 *) + (*(int *)(*(int *)(*(int *)(iVar4 + 0x14) + 8) + 8) + 0xc); + } + } + } + proc_7F03A5A4((int)puVar6,*(int *)(iVar4 + 0x10)); + proc_7F058570(flt_8004EF58,extraout_a0,(undefined4 *)(*(int *)(param_2 + 0x36) + 4)) + ; + matrix_multiply_A1_by_F12 + (*(float *)(*(int *)(param_2 + 10) + 0x14) / + *(float *)(*(int *)(iVar4 + 0x14) + 0x14),extraout_a0_00, + (float *)(*(int *)(param_2 + 0x36) + 4)); + iVar4 = *(int *)(param_2 + 4); } - } } - proc_7F03A5A4((int)puVar6,*(int *)(iVar5 + 0x10)); - proc_7F058570(flt_8004EF58,extraout_a0,(undefined4 *)(*(int *)(param_2 + 0x36) + 4)); - matrix_multiply_A1_by_F12 - (*(float *)(*(int *)(param_2 + 10) + 0x14) / - *(float *)(*(int *)(iVar5 + 0x14) + 0x14),extraout_a0_00, - (float *)(*(int *)(param_2 + 0x36) + 4)); - iVar5 = *(int *)(param_2 + 4); - } } - } - else { - prepare_load_objects((longlong)param_1,param_2); - iVar5 = *(int *)(param_2 + 4); - } - if ((iVar5 << 1 < 0) && (iVar5 = *(int *)(param_2 + 8), iVar5 != 0)) { - *(byte *)(iVar5 + 1) = *(byte *)(iVar5 + 1) | 1; - } - return; + else { + prepare_load_objects((longlong)param_1,param_2); + iVar4 = *(int *)(param_2 + 4); + } + if ((iVar4 << 1 < 0) && (iVar4 = *(int *)(param_2 + 8), iVar4 != 0)) { + *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) | 1; + } + return; } @@ -25082,73 +25215,73 @@ void expand_type_0A_object(int param_1,ushort *param_2,int param_3) void expand_type_0B_object(int param_1,ushort *param_2) { - undefined4 *puVar1; - undefined4 *puVar2; - undefined4 *puVar3; - undefined4 *puVar4; - - puVar1 = &DAT_80075b98; - puVar2 = (undefined4 *)(param_2 + 0x40); - do { - puVar3 = puVar2; - puVar4 = puVar1; - *puVar3 = *puVar4; - puVar3[1] = puVar4[1]; - puVar3[2] = puVar4[2]; - puVar1 = puVar4 + 3; - puVar2 = puVar3 + 3; - } while (puVar4 + 3 != (undefined4 *)0x80075c04); - puVar3[3] = uRam80075c04; - puVar3[4] = puVar4[4]; - set_ptr_monitor_img_to_obj_ani_slot - ((undefined4 *)(param_2 + 0x40),(uint)*(byte *)(param_2 + 0x128)); - puVar1 = &DAT_80075b98; - puVar2 = (undefined4 *)(param_2 + 0x7a); - do { - puVar4 = puVar2; - puVar3 = puVar1; - *puVar4 = *puVar3; - puVar4[1] = puVar3[1]; - puVar4[2] = puVar3[2]; - puVar1 = puVar3 + 3; - puVar2 = puVar4 + 3; - } while (puVar3 + 3 != (undefined4 *)0x80075c04); - puVar4[3] = uRam80075c04; - puVar4[4] = puVar3[4]; - set_ptr_monitor_img_to_obj_ani_slot - ((undefined4 *)(param_2 + 0x7a),(uint)*(byte *)((int)param_2 + 0x251)); - puVar1 = &DAT_80075b98; - puVar2 = (undefined4 *)(param_2 + 0xb4); - do { - puVar3 = puVar2; - puVar4 = puVar1; - *puVar3 = *puVar4; - puVar3[1] = puVar4[1]; - puVar3[2] = puVar4[2]; - puVar1 = puVar4 + 3; - puVar2 = puVar3 + 3; - } while (puVar4 + 3 != (undefined4 *)0x80075c04); - puVar3[3] = uRam80075c04; - puVar3[4] = puVar4[4]; - set_ptr_monitor_img_to_obj_ani_slot - ((undefined4 *)(param_2 + 0xb4),(uint)*(byte *)(param_2 + 0x129)); - puVar1 = &DAT_80075b98; - puVar2 = (undefined4 *)(param_2 + 0xee); - do { - puVar4 = puVar2; - puVar3 = puVar1; - *puVar4 = *puVar3; - puVar4[1] = puVar3[1]; - puVar4[2] = puVar3[2]; - puVar1 = puVar3 + 3; - puVar2 = puVar4 + 3; - } while (puVar3 + 3 != (undefined4 *)0x80075c04); - puVar4[3] = uRam80075c04; - puVar4[4] = puVar3[4]; - set_ptr_monitor_img_to_obj_ani_slot - ((undefined4 *)(param_2 + 0xee),(uint)*(byte *)((int)param_2 + 0x253)); - prepare_load_objects((longlong)param_1,param_2); - return; + undefined4 *puVar1; + undefined4 *puVar2; + undefined4 *puVar3; + undefined4 *puVar4; + + puVar1 = &DAT_80075b98; + puVar2 = (undefined4 *)(param_2 + 0x40); + do { + puVar3 = puVar2; + puVar4 = puVar1; + *puVar3 = *puVar4; + puVar3[1] = puVar4[1]; + puVar3[2] = puVar4[2]; + puVar1 = puVar4 + 3; + puVar2 = puVar3 + 3; + } while (puVar4 + 3 != (undefined4 *)0x80075c04); + puVar3[3] = uRam80075c04; + puVar3[4] = puVar4[4]; + set_ptr_monitor_img_to_obj_ani_slot + ((undefined4 *)(param_2 + 0x40),(uint)*(byte *)(param_2 + 0x128)); + puVar1 = &DAT_80075b98; + puVar2 = (undefined4 *)(param_2 + 0x7a); + do { + puVar4 = puVar2; + puVar3 = puVar1; + *puVar4 = *puVar3; + puVar4[1] = puVar3[1]; + puVar4[2] = puVar3[2]; + puVar1 = puVar3 + 3; + puVar2 = puVar4 + 3; + } while (puVar3 + 3 != (undefined4 *)0x80075c04); + puVar4[3] = uRam80075c04; + puVar4[4] = puVar3[4]; + set_ptr_monitor_img_to_obj_ani_slot + ((undefined4 *)(param_2 + 0x7a),(uint)*(byte *)((int)param_2 + 0x251)); + puVar1 = &DAT_80075b98; + puVar2 = (undefined4 *)(param_2 + 0xb4); + do { + puVar3 = puVar2; + puVar4 = puVar1; + *puVar3 = *puVar4; + puVar3[1] = puVar4[1]; + puVar3[2] = puVar4[2]; + puVar1 = puVar4 + 3; + puVar2 = puVar3 + 3; + } while (puVar4 + 3 != (undefined4 *)0x80075c04); + puVar3[3] = uRam80075c04; + puVar3[4] = puVar4[4]; + set_ptr_monitor_img_to_obj_ani_slot + ((undefined4 *)(param_2 + 0xb4),(uint)*(byte *)(param_2 + 0x129)); + puVar1 = &DAT_80075b98; + puVar2 = (undefined4 *)(param_2 + 0xee); + do { + puVar4 = puVar2; + puVar3 = puVar1; + *puVar4 = *puVar3; + puVar4[1] = puVar3[1]; + puVar4[2] = puVar3[2]; + puVar1 = puVar3 + 3; + puVar2 = puVar4 + 3; + } while (puVar3 + 3 != (undefined4 *)0x80075c04); + puVar4[3] = uRam80075c04; + puVar4[4] = puVar3[4]; + set_ptr_monitor_img_to_obj_ani_slot + ((undefined4 *)(param_2 + 0xee),(uint)*(byte *)((int)param_2 + 0x253)); + prepare_load_objects((longlong)param_1,param_2); + return; } @@ -25158,65 +25291,65 @@ void expand_type_0B_object(int param_1,ushort *param_2) void proc_7F00324C(void) { - byte bVar1; - longlong in_v0; - float *in_a0_lo; - uint *in_a1_lo; - uint *in_a2_lo; - float *in_a3_lo; - float extraout_f12; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float fVar2; - float *in_stack_00000010; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - proc_7F001BD4(in_a0_lo,&fStack32); - fStack36 = in_a0_lo[10]; - proc_7F0B0BE4((int *)&fStack36,extraout_f12,extraout_f14,*in_a0_lo,in_a0_lo[2]); - if (in_v0 == 0) { + byte bVar1; + longlong in_v0; + float *in_a0_lo; + uint *in_a1_lo; + uint *in_a2_lo; + float *in_a3_lo; + float extraout_f12; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float fVar2; + float *in_stack_00000010; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + proc_7F001BD4(in_a0_lo,&fStack32); fStack36 = in_a0_lo[10]; - fStack32 = *in_a0_lo; - fStack28 = in_a0_lo[1]; - fStack24 = in_a0_lo[2]; - fVar2 = in_a0_lo[4]; - } - else { - fVar2 = in_a0_lo[4]; - } - fStack16 = fVar2 * in_a0_lo[8] - in_a0_lo[7] * in_a0_lo[5]; - fStack12 = in_a0_lo[5] * in_a0_lo[6] - in_a0_lo[8] * in_a0_lo[3]; - fStack8 = in_a0_lo[3] * in_a0_lo[7] - in_a0_lo[6] * in_a0_lo[4]; - fVar2 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16 + fStack12 * fStack12); - fVar2 = 1.00000000 / fVar2; - fStack4 = fStack36; - fStack16 = fStack16 * fVar2; - fStack12 = fStack12 * fVar2; - fStack8 = fStack8 * fVar2; - *in_a3_lo = fStack16 * 50.00000000 + fStack32; - in_a3_lo[1] = fStack28; - in_a3_lo[2] = fStack8 * 50.00000000 + fStack24; - proc_7F0B0BE4((int *)&fStack4,50.00000000,extraout_f14_00,fStack32,fStack24); - *in_a1_lo = (uint)*(byte *)((int)fStack4 + 3); - fStack4 = fStack36; - *in_stack_00000010 = fStack32 - fStack16 * 50.00000000; - in_stack_00000010[1] = fStack28; - in_stack_00000010[2] = fStack24 - fStack8 * 50.00000000; - proc_7F0B0BE4((int *)&fStack4,50.00000000,extraout_f14_01,fStack32,fStack24); - bVar1 = *(byte *)((int)fStack4 + 3); - *in_a2_lo = (uint)bVar1; - if ((ulonglong)bVar1 == (longlong)(int)*in_a1_lo) { - *in_a2_lo = 0xffffffff; - } - return; + proc_7F0B0BE4((int *)&fStack36,extraout_f12,extraout_f14,*in_a0_lo,in_a0_lo[2]); + if (in_v0 == 0) { + fStack36 = in_a0_lo[10]; + fStack32 = *in_a0_lo; + fStack28 = in_a0_lo[1]; + fStack24 = in_a0_lo[2]; + fVar2 = in_a0_lo[4]; + } + else { + fVar2 = in_a0_lo[4]; + } + fStack16 = fVar2 * in_a0_lo[8] - in_a0_lo[7] * in_a0_lo[5]; + fStack12 = in_a0_lo[5] * in_a0_lo[6] - in_a0_lo[8] * in_a0_lo[3]; + fStack8 = in_a0_lo[3] * in_a0_lo[7] - in_a0_lo[6] * in_a0_lo[4]; + fVar2 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16 + fStack12 * fStack12); + fVar2 = 1.00000000 / fVar2; + fStack4 = fStack36; + fStack16 = fStack16 * fVar2; + fStack12 = fStack12 * fVar2; + fStack8 = fStack8 * fVar2; + *in_a3_lo = fStack16 * 50.00000000 + fStack32; + in_a3_lo[1] = fStack28; + in_a3_lo[2] = fStack8 * 50.00000000 + fStack24; + proc_7F0B0BE4((int *)&fStack4,50.00000000,extraout_f14_00,fStack32,fStack24); + *in_a1_lo = (uint)*(byte *)((int)fStack4 + 3); + fStack4 = fStack36; + *in_stack_00000010 = fStack32 - fStack16 * 50.00000000; + in_stack_00000010[1] = fStack28; + in_stack_00000010[2] = fStack24 - fStack8 * 50.00000000; + proc_7F0B0BE4((int *)&fStack4,50.00000000,extraout_f14_01,fStack32,fStack24); + bVar1 = *(byte *)((int)fStack4 + 3); + *in_a2_lo = (uint)bVar1; + if ((ulonglong)bVar1 == (longlong)(int)*in_a1_lo) { + *in_a2_lo = 0xffffffff; + } + return; } @@ -25229,927 +25362,963 @@ void proc_7F00324C(void) void expand_type_01_object(void) { - char cVar1; - ulonglong uVar2; - longlong lVar3; - short sVar5; - object_standard *poVar4; - int instancecontroller; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - int *stdobject; - int in_a2_lo; - float *pfVar6; - f32 fVar7; - float fVar8; - float fVar9; - float scale; - float fVar10; - float extraout_f12; - float extraout_f12_00; - float fVar11; - float extraout_f12_01; - float extraout_f14; - float extraout_f14_00; - float fVar12; - float fStack348; - float fStack344; - float fStack340; - float afStack336 [16]; - float fStack272; - undefined4 uStack268; - float fStack264; - float afStack260 [16]; - int *piStack196; - float fStack192; - undefined4 uStack188; - float fStack184; - PitemZ_header *pPStack180; - float afStack172 [16]; - float fStack108; - float fStack104; - float fStack100; - float fStack96; - float fStack88; - float fStack84; - float fStack80; - float fStack76; - float afStack68 [3]; - float afStack56 [3]; - undefined4 uStack44; - undefined4 uStack40; - int iStack36; - float fStack32; - undefined4 uStack28; - float fStack24; - int *piStack16; - int iStack8; - - iStack36 = -1; - uStack40 = -1; - uStack44 = -1; - iStack8 = (int)*(short *)(stdobject + 1); - uVar2 = load_model(iStack8); - pfVar6 = (float *)(ptr_2xxxpresets + (int)*(short *)((int)stdobject + 6) * 0x44); - if ((stdobject[2] << 3 < 0) || (stdobject[2] << 1 < 0)) { - uVar2 = proc_7F00324C(); - if ((stdobject[2] << 3 < 0) && ((-1 < (longlong)uStack40 && (-1 < (longlong)uStack44)))) { - iStack36 = proc_7F0B9CC8((longlong)uStack40,(longlong)uStack44,afStack56,afStack68); - uVar2 = SEXT48(iStack36); + char cVar1; + u32 uVar3; + longlong lVar2; + short sVar5; + object_standard *poVar4; + int instancecontroller; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a0_03; + int *in_a1_lo; + int in_a2_lo; + float *pfVar6; + f32 fVar7; + float fVar8; + float fVar9; + float scale; + float fVar10; + float extraout_f12; + float extraout_f12_00; + float fVar11; + float extraout_f12_01; + float extraout_f14; + float extraout_f14_00; + float fVar12; + float fStack348; + float fStack344; + float fStack340; + float afStack336 [16]; + float fStack272; + undefined4 uStack268; + float fStack264; + float afStack260 [16]; + int *piStack196; + float fStack192; + undefined4 uStack188; + float fStack184; + PitemZ_header *pPStack180; + float afStack172 [16]; + float fStack108; + float fStack104; + float fStack100; + float fStack96; + float fStack88; + float fStack84; + float fStack80; + float fStack76; + float afStack68 [3]; + float afStack56 [3]; + undefined4 uStack44; + undefined4 uStack40; + int iStack36; + float fStack32; + undefined4 uStack28; + float fStack24; + int *piStack16; + int iStack8; + + iStack36 = -1; + uStack40 = -1; + uStack44 = -1; + iStack8 = (int)*(short *)(in_a1_lo + 1); + uVar3 = load_model(iStack8); + lVar2 = (longlong)(int)uVar3; + pfVar6 = (float *)(ptr_2xxxpresets + (int)*(short *)((int)in_a1_lo + 6) * 0x44); + if ((in_a1_lo[2] << 3 < 0) || (in_a1_lo[2] << 1 < 0)) { + lVar2 = proc_7F00324C(); + if ((in_a1_lo[2] << 3 < 0) && ((-1 < (longlong)uStack40 && (-1 < (longlong)uStack44)))) { + iStack36 = proc_7F0B9CC8((longlong)uStack40,(longlong)uStack44,afStack56,afStack68); + lVar2 = (longlong)iStack36; + } } - } - scale = scale_1_0_item_related; - if (scale_1_0_item_related == 1.00000000) { - fVar9 = pfVar6[10]; scale = scale_1_0_item_related; - } - else { - if (iStack36 < 0) { - pfVar6[0xb] = pfVar6[0xb] * scale_1_0_item_related; - pfVar6[0xc] = pfVar6[0xc] * scale_1_0_item_related; + if (scale_1_0_item_related == 1.00000000) { + fVar9 = pfVar6[10]; } else { - proc_7F0B96CC(iStack36,&fStack88); - fVar7 = proc_7F0B4830(); - fStack76 = fStack76 * (float)fVar7; - fVar9 = *pfVar6; - scale = fStack80 * pfVar6[2] + fVar9 * fStack88 + pfVar6[1] * fStack84; - if (scale_1_0_item_related < 1.00000000) { - scale = (scale - fStack76) * (1.00000000 - scale_1_0_item_related); - fStack104 = fVar9 - fStack88 * scale; - fStack100 = pfVar6[1] - fStack84 * scale; - fStack96 = pfVar6[2] - fStack80 * scale; - } - else { - scale = (scale - fStack76) * (scale_1_0_item_related - 1.00000000); - fStack104 = fStack88 * scale + fVar9; - fStack100 = fStack84 * scale + pfVar6[1]; - fStack96 = fStack80 * scale + pfVar6[2]; - } - fStack108 = pfVar6[10]; - proc_7F0B0BE4((int *)&fStack108,scale_1_0_item_related,fVar9,*pfVar6,pfVar6[2]); - scale = extraout_f12; - if (uVar2 != 0) { - pfVar6[10] = fStack108; - *pfVar6 = fStack104; - pfVar6[1] = fStack100; - pfVar6[2] = fStack96; - pfVar6[0xb] = pfVar6[0xb] * scale_1_0_item_related; - pfVar6[0xc] = pfVar6[0xc] * scale_1_0_item_related; - scale = extraout_f12; - } + if (iStack36 < 0) { + pfVar6[0xb] = pfVar6[0xb] * scale_1_0_item_related; + pfVar6[0xc] = pfVar6[0xc] * scale_1_0_item_related; + } + else { + proc_7F0B96CC(iStack36,&fStack88); + fVar7 = proc_7F0B4830(); + fStack76 = fStack76 * (float)fVar7; + fVar9 = *pfVar6; + scale = fStack80 * pfVar6[2] + fVar9 * fStack88 + pfVar6[1] * fStack84; + if (scale_1_0_item_related < 1.00000000) { + scale = (scale - fStack76) * (1.00000000 - scale_1_0_item_related); + fStack104 = fVar9 - fStack88 * scale; + fStack100 = pfVar6[1] - fStack84 * scale; + fStack96 = pfVar6[2] - fStack80 * scale; + } + else { + scale = (scale - fStack76) * (scale_1_0_item_related - 1.00000000); + fStack104 = fStack88 * scale + fVar9; + fStack100 = fStack84 * scale + pfVar6[1]; + fStack96 = fStack80 * scale + pfVar6[2]; + } + fStack108 = pfVar6[10]; + proc_7F0B0BE4((int *)&fStack108,scale_1_0_item_related,fVar9,*pfVar6,pfVar6[2]); + scale = extraout_f12; + if (lVar2 != 0) { + pfVar6[10] = fStack108; + *pfVar6 = fStack104; + pfVar6[1] = fStack100; + pfVar6[2] = fStack96; + pfVar6[0xb] = pfVar6[0xb] * scale_1_0_item_related; + pfVar6[0xc] = pfVar6[0xc] * scale_1_0_item_related; + } + } + fVar9 = pfVar6[10]; } - fVar9 = pfVar6[10]; - } - lVar3 = proc_7F056850(pfVar6,(longlong)(int)fVar9,scale,NULL,&fStack32); - if (lVar3 == 0) { - stdobject[4] = 0; - return; - } - proc_7F059908(afStack172,extraout_f12_00,extraout_f14,0.00000000,0.00000000,0.00000000,-pfVar6[6], - -pfVar6[7],-pfVar6[8],pfVar6[3]); - pPStack180 = PitemZ_entries[iStack8].header; - piStack196 = piStack16; - fVar12 = pfVar6[0xb]; - fVar9 = pfVar6[0xc]; - fVar10 = pfVar6[0xd]; - fVar8 = pfVar6[0xe]; - scale = pfVar6[0xf]; - fStack340 = pfVar6[0x10]; - proc_7F058570(flt_8004EF5C,extraout_a0,afStack260); - proc_7F058688(flt_8004EF60,extraout_a0_00,afStack336); - proc_7F058068(afStack336,afStack260); - proc_7F058068(afStack172,afStack260); - proc_7F001BD4(pfVar6,&fStack192); - instancecontroller = *(int *)(*(int *)(pPStack180->microcode_entry_num + 0x14) + 4); - lVar3 = (longlong)instancecontroller; - fVar11 = (fVar8 - fVar10) / - (*(float *)(instancecontroller + 8) - *(float *)(instancecontroller + 4)); - fStack340 = fStack340 - scale; - scale = fStack340 / (*(float *)(instancecontroller + 0x10) - *(float *)(instancecontroller + 0xc)) - ; - fVar9 = (fVar9 - fVar12) / - (*(float *)(instancecontroller + 0x18) - *(float *)(instancecontroller + 0x14)); - if (((fVar11 <= flt_8004EF64) || (scale <= flt_8004EF64)) || (fVar9 <= flt_8004EF64)) { - fVar11 = 1.00000000; - scale = fVar11; - fVar9 = fVar11; - } - proc_7F0589B4(fVar11,extraout_a0_01,afStack260); - proc_7F0589E4(scale,extraout_a0_02,(int)afStack260); - proc_7F058A4C(fVar9,extraout_a0_03,(int)afStack260); - fStack272 = fStack192; - uStack268 = uStack188; - fStack264 = fStack184; - if ((stdobject[3] & 1U) == 0) { - proc_7F0B0BE4((int *)&piStack196,extraout_f12_01,extraout_f14_00,fStack32,fStack24); - if (lVar3 != 0) { - piStack16 = piStack196; - goto LAB_7f003978; + lVar2 = proc_7F056850(pfVar6,(longlong)(int)fVar9,scale,NULL,&fStack32); + if (lVar2 == 0) { + in_a1_lo[4] = 0; + return; } - fStack192 = fStack32; - fStack184 = fStack24; - if ((stdobject[2] & 0x1000U) == 0) { - sVar5 = *(short *)((int)stdobject + 0x9a); + proc_7F059908(afStack172,extraout_f12_00,extraout_f14,0.00000000,0.00000000,0.00000000, + -pfVar6[6],-pfVar6[7],-pfVar6[8],pfVar6[3]); + pPStack180 = PitemZ_entries[iStack8].header; + piStack196 = piStack16; + fVar12 = pfVar6[0xb]; + fVar9 = pfVar6[0xc]; + fVar10 = pfVar6[0xd]; + fVar8 = pfVar6[0xe]; + scale = pfVar6[0xf]; + fStack340 = pfVar6[0x10]; + proc_7F058570(flt_8004EF5C,extraout_a0,afStack260); + proc_7F058688(flt_8004EF60,extraout_a0_00,afStack336); + proc_7F058068(afStack336,afStack260); + proc_7F058068(afStack172,afStack260); + proc_7F001BD4(pfVar6,&fStack192); + instancecontroller = *(int *)(*(int *)(pPStack180->microcode_entry_num + 0x14) + 4); + lVar2 = (longlong)instancecontroller; + fVar11 = (fVar8 - fVar10) / + (*(float *)(instancecontroller + 8) - *(float *)(instancecontroller + 4)); + fStack340 = fStack340 - scale; + scale = fStack340 / + (*(float *)(instancecontroller + 0x10) - *(float *)(instancecontroller + 0xc)); + fVar9 = (fVar9 - fVar12) / + (*(float *)(instancecontroller + 0x18) - *(float *)(instancecontroller + 0x14)); + if (((fVar11 <= flt_8004EF64) || (scale <= flt_8004EF64)) || (fVar9 <= flt_8004EF64)) { + fVar11 = 1.00000000; + scale = fVar11; + fVar9 = fVar11; + } + proc_7F0589B4(fVar11,extraout_a0_01,afStack260); + proc_7F0589E4(scale,extraout_a0_02,(int)afStack260); + proc_7F058A4C(fVar9,extraout_a0_03,(int)afStack260); + fStack272 = fStack192; + uStack268 = uStack188; + fStack264 = fStack184; + if ((in_a1_lo[3] & 1U) == 0) { + proc_7F0B0BE4((int *)&piStack196,extraout_f12_01,extraout_f14_00,fStack32,fStack24); + if (lVar2 != 0) { + piStack16 = piStack196; + goto LAB_7f003978; + } + fStack192 = fStack32; + fStack184 = fStack24; + if ((in_a1_lo[2] & 0x1000U) == 0) { + sVar5 = *(short *)((int)in_a1_lo + 0x9a); + } + else { + sVar5 = *(short *)((int)in_a1_lo + 0x9a); + } } else { - sVar5 = *(short *)((int)stdobject + 0x9a); - } - } - else { - fStack192 = fStack32; - uStack188 = uStack28; - fStack184 = fStack24; + fStack192 = fStack32; + uStack188 = uStack28; + fStack184 = fStack24; LAB_7f003978: - sVar5 = *(short *)((int)stdobject + 0x9a); - } - if ((sVar5 == 4) || (sVar5 == 8)) { - fStack348 = pfVar6[6] * fStack340; - fStack344 = pfVar6[7] * fStack340; - fStack340 = pfVar6[8] * fStack340; - } - else { - fVar10 = fVar10 - fVar8; - fStack348 = pfVar6[3] * fVar10; - fStack344 = pfVar6[4] * fVar10; - fStack340 = pfVar6[5] * fVar10; - } - *(float *)(stdobject + 0x21) = (float)stdobject[0x21] / 65536.00000000; - *(float *)(stdobject + 0x22) = (float)stdobject[0x22] / 65536.00000000; - *(float *)(stdobject + 0x23) = (float)stdobject[0x23] / 65536.00000000; - *(float *)(stdobject + 0x24) = (float)stdobject[0x24] / 65536.00000000; - *(float *)(stdobject + 0x25) = (float)stdobject[0x25] / 65536.00000000; - poVar4 = (object_standard *) - initialize_door(stdobject,(int *)&fStack192,(int)afStack260,piStack16,(int)&fStack348, - (int *)&fStack272); - if (stdobject[2] << 3 < 0) { - stdobject[0x3c] = iStack36; - if (iStack36 < 0) { - instancecontroller = poVar4->runtime_ptr_obj_instance_controller; + sVar5 = *(short *)((int)in_a1_lo + 0x9a); + } + if ((sVar5 == 4) || (sVar5 == 8)) { + fStack348 = pfVar6[6] * fStack340; + fStack344 = pfVar6[7] * fStack340; + fStack340 = pfVar6[8] * fStack340; } else { - if ((float)stdobject[0x2d] == 0.00000000) { - proc_7F0535C4((int)stdobject); - instancecontroller = poVar4->runtime_ptr_obj_instance_controller; - } - else { - instancecontroller = poVar4->runtime_ptr_obj_instance_controller; - } + fVar10 = fVar10 - fVar8; + fStack348 = pfVar6[3] * fVar10; + fStack344 = pfVar6[4] * fVar10; + fStack340 = pfVar6[5] * fVar10; } - } - else { - instancecontroller = poVar4->runtime_ptr_obj_instance_controller; - } - *(undefined *)&poVar4->runtime_MATRIX5 = *(undefined *)(instancecontroller + 3); - proc_7F03DD9C((int)poVar4,(ushort)*(byte *)(instancecontroller + 3)); - *(undefined *)((int)&poVar4->runtime_MATRIX5 + 1) = 0xff; - *(undefined *)((int)&poVar4->runtime_MATRIX5 + 2) = 0xff; - if ((-1 < stdobject[2] << 3) && (-1 < stdobject[2] << 1)) { - instancecontroller = stdobject[5]; - goto LAB_7f003b5c; - } - if ((longlong)uStack40 == (ulonglong)*(byte *)(poVar4->runtime_ptr_obj_instance_controller + 3)) { - if (-1 < uStack44) { - *(undefined *)((int)&poVar4->runtime_MATRIX5 + 1) = (char)uStack44; - proc_7F03DD9C((int)poVar4,uStack44._2_2_); + *(float *)(in_a1_lo + 0x21) = (float)in_a1_lo[0x21] / 65536.00000000; + *(float *)(in_a1_lo + 0x22) = (float)in_a1_lo[0x22] / 65536.00000000; + *(float *)(in_a1_lo + 0x23) = (float)in_a1_lo[0x23] / 65536.00000000; + *(float *)(in_a1_lo + 0x24) = (float)in_a1_lo[0x24] / 65536.00000000; + *(float *)(in_a1_lo + 0x25) = (float)in_a1_lo[0x25] / 65536.00000000; + poVar4 = (object_standard *) + initialize_door(in_a1_lo,(int *)&fStack192,(int)afStack260,piStack16,(int)&fStack348, + (int *)&fStack272); + if (in_a1_lo[2] << 3 < 0) { + in_a1_lo[0x3c] = iStack36; + if (iStack36 < 0) { + instancecontroller = poVar4->runtime_ptr_obj_instance_controller; + } + else { + if ((float)in_a1_lo[0x2d] == 0.00000000) { + proc_7F0535C4((int)in_a1_lo); + instancecontroller = poVar4->runtime_ptr_obj_instance_controller; + } + else { + instancecontroller = poVar4->runtime_ptr_obj_instance_controller; + } + } } + else { + instancecontroller = poVar4->runtime_ptr_obj_instance_controller; + } + *(undefined *)&poVar4->runtime_MATRIX5 = *(undefined *)(instancecontroller + 3); + proc_7F03DD9C((int)poVar4,(ushort)*(byte *)(instancecontroller + 3)); + *(undefined *)((int)&poVar4->runtime_MATRIX5 + 1) = 0xff; + *(undefined *)((int)&poVar4->runtime_MATRIX5 + 2) = 0xff; + if ((-1 < in_a1_lo[2] << 3) && (-1 < in_a1_lo[2] << 1)) { + instancecontroller = in_a1_lo[5]; + goto LAB_7f003b5c; + } + if ((longlong)uStack40 == (ulonglong)*(byte *)(poVar4->runtime_ptr_obj_instance_controller + 3)) + { + if (-1 < uStack44) { + *(undefined *)((int)&poVar4->runtime_MATRIX5 + 1) = (char)uStack44; + proc_7F03DD9C((int)poVar4,uStack44._2_2_); + } LAB_7f003b48: - cVar1 = *(char *)((int)&poVar4->runtime_MATRIX5 + 1); - } - else { - if ((longlong)uStack40 < 0) goto LAB_7f003b48; - *(undefined *)((int)&poVar4->runtime_MATRIX5 + 1) = (char)uStack40; - proc_7F03DD9C((int)poVar4,uStack40._2_2_); - cVar1 = *(char *)((int)&poVar4->runtime_MATRIX5 + 1); - } - if (cVar1 == -1) { - instancecontroller = stdobject[5]; - } - else { - instancecontroller = stdobject[5]; - } + cVar1 = *(char *)((int)&poVar4->runtime_MATRIX5 + 1); + } + else { + if ((longlong)uStack40 < 0) goto LAB_7f003b48; + *(undefined *)((int)&poVar4->runtime_MATRIX5 + 1) = (char)uStack40; + proc_7F03DD9C((int)poVar4,uStack40._2_2_); + cVar1 = *(char *)((int)&poVar4->runtime_MATRIX5 + 1); + } + if (cVar1 == -1) { + instancecontroller = in_a1_lo[5]; + } + else { + instancecontroller = in_a1_lo[5]; + } LAB_7f003b5c: - if (instancecontroller != 0) { - set_obj_instance_controller_scale(instancecontroller,(f32)scale); - } - set_current_objposdata_plus_0x28(poVar4); - set_stateflag_0x04_for_posdata((int)poVar4); - if (stdobject[0x20] != 0) { - instancecontroller = proc_7F056A88(stdobject[0x20] + in_a2_lo); - stdobject[0x32] = instancecontroller; - } - return; + if (instancecontroller != 0) { + set_obj_instance_controller_scale(instancecontroller,(f32)scale); + } + set_current_objposdata_plus_0x28(poVar4); + set_stateflag_0x04_for_posdata((int)poVar4); + if (in_a1_lo[0x20] != 0) { + instancecontroller = proc_7F056A88(in_a1_lo[0x20] + in_a2_lo); + in_a1_lo[0x32] = instancecontroller; + } + return; } -void proplvreset2(longlong param_1) +void proplvreset2(longlong levelid) { - char cVar1; - ushort *partdesc; - bool bVar2; - PitemZ_header **ppPVar3; - byte *pbVar6; - p_itementry *ppVar7; - ulonglong uVar4; - undefined8 uVar5; - int *objdata1; - undefined *puVar8; - int additionalentries; - int iVar9; - int iVar10; - int objinst; - int iVar11; - int iVar12; - int iVar13; - int iVar14; - int iVar15; - int iVar16; - int iVar17; - int iVar18; - int iVar19; - int iVar20; - int iVar21; - int iVar22; - int iVar23; - int iVar24; - int iVar25; - int iVar26; - DIFFICULTY DVar27; - GUARDdata *pGVar28; - uint *puVar29; - int *objdata2; - short sVar30; - int **ppiVar31; - undefined4 *puVar32; - undefined4 *puVar33; - float *pfVar35; - longlong lVar34; - int *object; - uint uVar36; - LEVELID LVar37; - undefined4 *puVar38; - undefined4 *puVar39; - f32 fVar40; - float fVar41; - float fVar42; - f32 scale; - float fStack408; - float fStack372; - float fStack368; - float fStack364; - float fStack360; - float fStack356; - float fStack352; - float fStack304; - float fStack292; - undefined uStack268; - undefined uStack267; - uint uStack8; - - pbVar6 = check_token(1,(byte *)"-nochr"); - bVar2 = pbVar6 == NULL; - if (bVar2) { - pbVar6 = check_token(1,(byte *)"-noprop"); - bVar2 = pbVar6 == NULL; - } - uStack8 = (uint)bVar2; - pbVar6 = check_token(1,(byte *)"-noobj"); - bVar2 = pbVar6 == NULL; - if (bVar2) { - pbVar6 = check_token(1,(byte *)"-noprop"); - bVar2 = pbVar6 == NULL; - } - ppVar7 = PitemZ_entries; - scale_1_0_item_related = 1.00000000; - do { - ppPVar3 = &ppVar7->header; - ppVar7 = ppVar7 + 1; - (*ppPVar3)->microcode_entry_num = 0; - } while (ppVar7 < PitemZ_entries + 0x154); - LVar37 = (LEVELID)param_1; - if (param_1 < 0x3b) { - puVar8 = *(undefined **)(&setup_text_pointers + LVar37 * 4); - puVar38 = only_read_by_stageload; - puVar32 = (undefined4 *)&uStack268; - if (puVar8 != NULL) { - do { - puVar39 = puVar38 + 3; - puVar33 = puVar32 + 3; - *puVar32 = *puVar38; - puVar32[1] = puVar38[1]; - puVar32[2] = puVar38[2]; - puVar38 = puVar39; - puVar32 = puVar33; - } while (puVar39 != (undefined4 *)0x8004eeac); - additionalentries = 0; - objinst = 0; - *puVar33 = uRam8004eeac; - uStack268 = *puVar8; - uStack267 = 0; - uVar4 = get_num_players(); - if (1 < (longlong)uVar4) { - string_load_parse_something(&uStack268,"mp_"); - } - object = (int *)string_load_parse_something - (&uStack268, - (char *)(*(int *)(&setup_text_pointers + LVar37 * 4) + 1)); - _load_resource_named_to_membank(&uStack268,1,0x100,4); - DAT_80075d28 = object; - uVar5 = get_textbank_number_for_stagenum(LVar37); - load_mission_text_bank((u32)uVar5); - objdata1 = (int *)((int)object + *object); - ptr_setup_path_link = (undefined *)((int)object + object[1]); - ptr_setup_intro = (undefined *)((int)object + object[2]); - ptr_setup_objects = (undefined *)((int)object + object[3]); - ptr_setup_path_sets = (undefined *)((int)object + object[4]); - ptr_setup_actions = (undefined *)((int)object + object[5]); - ptr_0xxxpresets = (undefined *)((int)object + object[6]); - ptr_2xxxpresets = (undefined *)((int)object + object[7]); - DAT_80075d20 = (int *)((int)object + object[8]); - if (object[8] == 0) { - DAT_80075d20 = NULL; - } - DAT_80075d24 = (int *)((int)object + object[9]); - if (object[9] == 0) { - DAT_80075d24 = NULL; - } - ptr_setup_path_tbl = (undefined *)objdata1; - if ((objdata1 != NULL) && - (iVar9 = 0, ptr_setup_path_tbl = (undefined *)objdata1, -1 < *objdata1)) { - iVar10 = objdata1[1]; - ptr_setup_path_tbl = (undefined *)objdata1; - while( true ) { - iVar9 += 0x10; - objdata1[1] = iVar10 + (int)object; - objdata1 = (int *)(ptr_setup_path_tbl + iVar9); - if (*objdata1 < 0) break; - iVar10 = objdata1[1]; - } - } - if ((ptr_setup_path_link != NULL) && (iVar9 = 0, *(int *)ptr_setup_path_link != 0)) { - iVar10 = *(int *)ptr_setup_path_link; - objdata1 = (int *)ptr_setup_path_link; - do { - *objdata1 = iVar10 + (int)object; - puVar8 = ptr_setup_path_link + iVar9; - iVar9 += 0xc; - *(int *)(puVar8 + 4) = *(int *)(puVar8 + 4) + (int)object; - objdata1 = (int *)(ptr_setup_path_link + iVar9); - iVar10 = *objdata1; - } while (iVar10 != 0); - } - if ((ptr_setup_actions != NULL) && (iVar9 = 0, *(int *)ptr_setup_actions != 0)) { - iVar10 = *(int *)ptr_setup_actions; - objdata1 = (int *)ptr_setup_actions; - do { - *objdata1 = iVar10 + (int)object; - iVar9 += 8; - objdata1 = (int *)(ptr_setup_actions + iVar9); - iVar10 = *objdata1; - } while (iVar10 != 0); - } - if ((ptr_setup_path_sets != NULL) && (iVar9 = 0, *(int *)ptr_setup_path_sets != 0)) { - iVar10 = *(int *)ptr_setup_path_sets; - objdata1 = (int *)ptr_setup_path_sets; - do { - *objdata1 = iVar10 + (int)object; - sVar30 = 0; - ppiVar31 = (int **)(ptr_setup_path_sets + iVar9); - objdata1 = *ppiVar31; - if (*objdata1 < 0) { - *(undefined2 *)((int)ppiVar31 + 6) = 0; - } - else { - iVar10 = objdata1[1]; - while( true ) { - sVar30 += 1; - if (iVar10 < 0) break; - iVar10 = objdata1[2]; - objdata1 = objdata1 + 1; - } - *(short *)((int)ppiVar31 + 6) = sVar30; - } - iVar9 += 8; - objdata1 = (int *)(ptr_setup_path_sets + iVar9); - iVar10 = *objdata1; - } while (iVar10 != 0); - } - if (ptr_0xxxpresets != NULL) { - fVar40 = proc_7F0B4830(); - fVar41 = *(float *)(ptr_0xxxpresets + 0x24); - if (fVar41 != 0.00000000) { - fVar42 = *(float *)ptr_0xxxpresets; - fStack292 = (float)fVar40; - pfVar35 = (float *)ptr_0xxxpresets; - while( true ) { - *(byte **)(pfVar35 + 9) = (byte *)((int)object + (int)fVar41); - *pfVar35 = fVar42 * fStack292; - pfVar35[1] = pfVar35[1] * fStack292; - pfVar35[2] = pfVar35[2] * fStack292; - init_pathtable_something - (pfVar35,(byte *)((int)object + (int)fVar41),(int **)(pfVar35 + 10)); - fVar41 = pfVar35[0x14]; - pfVar35 = pfVar35 + 0xb; - if (fVar41 == 0.00000000) break; - fVar42 = *pfVar35; - } - } - } - if (ptr_2xxxpresets != NULL) { - fVar40 = proc_7F0B4830(); - fVar41 = *(float *)(ptr_2xxxpresets + 0x24); - if (fVar41 != 0.00000000) { - fVar42 = *(float *)ptr_2xxxpresets; - fStack304 = (float)fVar40; - pfVar35 = (float *)ptr_2xxxpresets; - while( true ) { - *(byte **)(pfVar35 + 9) = (byte *)((int)object + (int)fVar41); - *pfVar35 = fVar42 * fStack304; - pfVar35[1] = pfVar35[1] * fStack304; - pfVar35[2] = pfVar35[2] * fStack304; - pfVar35[0xb] = pfVar35[0xb] * fStack304; - pfVar35[0xc] = pfVar35[0xc] * fStack304; - pfVar35[0xd] = pfVar35[0xd] * fStack304; - pfVar35[0xe] = pfVar35[0xe] * fStack304; - pfVar35[0xf] = pfVar35[0xf] * fStack304; - pfVar35[0x10] = pfVar35[0x10] * fStack304; - init_pathtable_something - (pfVar35,(byte *)((int)object + (int)fVar41),(int **)(pfVar35 + 10)); - fVar41 = pfVar35[0x1a]; - pfVar35 = pfVar35 + 0x11; - if (fVar41 == 0.00000000) break; - fVar42 = *pfVar35; - } - } - } - if ((DAT_80075d20 != NULL) && (iVar9 = 0, *DAT_80075d20 != 0)) { - iVar10 = *DAT_80075d20; - objdata1 = DAT_80075d20; - do { - *objdata1 = iVar10 + (int)object; - iVar9 += 4; - objdata1 = (int *)((int)DAT_80075d20 + iVar9); - iVar10 = *objdata1; - } while (iVar10 != 0); - } - if (DAT_80075d24 != NULL) { - iVar9 = *DAT_80075d24; - iVar10 = 0; - objdata1 = DAT_80075d24; - while (iVar9 != 0) { - *objdata1 = iVar9 + (int)object; - iVar10 += 4; - objdata1 = (int *)((int)DAT_80075d24 + iVar10); - iVar9 = *objdata1; - } - } - if (uStack8 == 0) { - alloc_init_GUARDdata_entries(0); - } - else { - additionalentries = load_proptype(9); - alloc_init_GUARDdata_entries(additionalentries); - additionalentries = load_proptype(9); - iVar9 = load_proptype(8); - iVar10 = load_proptype(4); - objinst = load_proptype(0x11); - objinst = iVar9 + iVar10 + objinst; - } - if (bVar2) { - iVar9 = load_proptype(1); - iVar10 = load_proptype(6); - iVar11 = load_proptype(0xd); - iVar12 = load_proptype(0xc); - iVar13 = load_proptype(10); - iVar14 = load_proptype(0xb); - iVar15 = load_proptype(0x15); - iVar16 = load_proptype(3); - iVar17 = load_proptype(0x2a); - iVar18 = load_proptype(0x2f); - iVar19 = load_proptype(0x2b); - iVar20 = load_proptype(0x29); - iVar21 = load_proptype(0x24); - iVar22 = load_proptype(5); - iVar23 = load_proptype(7); - iVar24 = load_proptype(0x14); - iVar25 = load_proptype(0x27); - iVar26 = load_proptype(0x2d); - objinst = objinst + iVar9 + iVar10 + iVar11 + iVar12 + iVar13 + iVar14 + iVar15 + iVar16 + - iVar17 + iVar18 + iVar19 + iVar20 + iVar21 + iVar22 + iVar23 + iVar24 + iVar25 + - iVar26; - iVar9 = load_proptype(0x28); - additionalentries += iVar9; - } - proc_7F005540(objinst); - proc_7F005624(additionalentries); - lVar34 = 0; - uVar4 = get_num_players(); - if (0 < (longlong)uVar4) { - do { - set_cur_player((int)lVar34); - additionalentries = load_proptype(0xe); - alloc_additional_item_slots(additionalentries); - lVar34 = (longlong)((int)lVar34 + 1); - uVar4 = get_num_players(); - } while (lVar34 < (longlong)uVar4); - } - if (ptr_setup_objects != NULL) { - DVar27 = get_current_difficulty(); - uVar36 = 1 << (DVar27 + 4U & 0x1f); - uVar4 = get_num_players(); - if (1 < (longlong)uVar4) { - uVar4 = get_num_players(); - uVar36 |= 1 << ((int)uVar4 + 0x14U & 0x1f); - } - additionalentries = 0; - cVar1 = ptr_setup_objects[3]; - object = (int *)ptr_setup_objects; - if (cVar1 == '0') { - cVar1 = ptr_setup_objects[3]; - } - else { - do { - if (true) { - switch(cVar1) { - case '\x01': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - expand_type_01_object(); - } - break; - case '\x02': - scale_1_0_item_related = (float)object[1] / 65536.00000000; - break; - case '\x03': - case '\x05': - case '\a': - case '$': - case ')': - case '*': - case '+': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - prepare_load_objects(param_1,(ushort *)object); - } - break; - case '\x04': - if ((uStack8 != 0) && ((object[3] & uVar36) == 0)) { - expand_type_04_object(param_1,(ushort *)object); - } - break; - case '\x06': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - expand_type_06_object(param_1,(ushort *)object); - } - break; - case '\b': - if ((uStack8 != 0) && ((object[3] & uVar36) == 0)) { - expand_08_obj_set_guard_MP_weapons(LVar37,(ushort *)object); - } - break; - case '\t': - if (uStack8 != 0) { - expand_09_characters(); - } - break; - case '\n': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - expand_type_0A_object(LVar37,(ushort *)object,additionalentries); - } - break; - case '\v': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - expand_type_0B_object(LVar37,(ushort *)object); - } - break; - case '\f': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - expand_type_0C_object(param_1,(ushort *)object); - } - break; - case '\r': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - expand_type_0D_object_autoturret(param_1,(ushort *)object); - } - break; - case '\x11': - if ((uStack8 != 0) && ((object[3] & uVar36) == 0)) { - expand_type_0D_MP_weapon_expansion_routine(param_1,(ushort *)object); - } - break; - case '\x12': - cVar1 = *(char *)((int)object + 0xb); - pGVar28 = check_if_guardnum_loaded_get_ptr_GUARDdata((short)object[1]); - if (((pGVar28 != NULL) && (pGVar28->POSdata_pointer != 0)) && - (pGVar28->MODELdata_pointer != 0)) { - pGVar28->beligerancy = cVar1; - } - break; - case '\x14': - objinst = 1; - uVar4 = get_num_players(); - if (1 < (longlong)uVar4) { - iVar9 = get_ptr_mp_weapon_set_data(); - iVar9 += lastmpweaponnum * 0x18; - objinst = *(int *)(iVar9 + 0x10); - *(undefined2 *)((int)object + *(int *)(iVar9 + 0xc) * 4 + 0x7e) = (short)objinst; - } - if (((0 < objinst) && (bVar2)) && - (objinst = 0, objdata1 = object, (object[3] & uVar36) == 0)) { - do { - if ((*(short *)((int)objdata1 + 0x82) != 0) && - (*(ushort *)(objdata1 + 0x20) != 0xffff)) { - load_model((uint)*(ushort *)(objdata1 + 0x20)); - } - objinst += 4; - objdata1 = objdata1 + 1; - } while (objinst != 0x34); - prepare_load_objects(param_1,(ushort *)object); - } - break; - case '\x15': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - *(float *)(object + 0x20) = (float)object[0x20] / 65536.00000000; - object[0x21] = object[0x20]; - prepare_load_objects(param_1,(ushort *)object); - } - break; - case '\x16': - objinst = proc_7F056EA0(param_1,(int)*(short *)((int)object + 6) + additionalentries - ); - object[3] = objinst; - if (objinst != 0) { - *(uint *)(objinst + 100) = *(uint *)(objinst + 100) | 0x10; - } - set_parent_cur_tag_entry((int)object); - break; - case '\x17': - add_ptr_to_objective((int)object); - break; - case '\x1e': - set_parent_cur_obj_photograph((int)object); - break; - case ' ': - set_parent_cur_obj_enter_room((int)object); - break; - case '!': - set_parent_cur_obj_deposited_in_room((int)object); - break; - case '#': - setup_briefing_text_entry_parent((int)object); - break; - case '%': - objinst = proc_7F056EA0(param_1,object[1] + additionalentries); - object[9] = objinst; - if (objinst != 0) { - *(uint *)(objinst + 100) = *(uint *)(objinst + 100) | 0x400; - } - proc_7F08D8A0((int)object); - break; - case '\'': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - prepare_load_objects(param_1,(ushort *)object); - objinst = object[5]; - if ((objinst != 0) && - (partdesc = *(ushort **)(*(int *)(*(int *)(objinst + 8) + 8) + 0x14), - partdesc != NULL)) { - puVar29 = (uint *)extract_id_from_object_structure_microcode(objinst,partdesc); - *puVar29 = (uint)((object[2] & 0x10000000U) == 0); - } - object[0x22] = 0; - object[0x23] = 0; - object[0x24] = 0; - object[0x25] = 0; - object[0x27] = 0; - object[0x28] = 0; - object[0x26] = -0x40800000; - puVar8 = proc_7F035398((undefined *)object[0x20]); - *(undefined **)(object + 0x20) = puVar8; - *(undefined2 *)(object + 0x21) = 0; - *(undefined2 *)((int)object + 0x86) = 0xffff; - object[0x29] = 0; - object[0x2a] = 0; - object[0x2b] = 0; - } - break; - case '(': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - prepare_load_objects(param_1,(ushort *)object); - object[0x26] = 0; - object[0x27] = 0; - object[0x22] = 0; - object[0x23] = 0; - object[0x24] = 0; - object[0x29] = 0; - object[0x28] = -0x40800000; - object[0x25] = -0x40800000; - puVar8 = proc_7F035398((undefined *)object[0x20]); - *(undefined **)(object + 0x20) = puVar8; - *(undefined2 *)(object + 0x21) = 0; - *(undefined2 *)((int)object + 0x86) = 0xffff; - object[0x2a] = 0; - object[0x2b] = 0; - object[0x2c] = 0; - } - break; - case '-': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - fStack408 = 0.00000000; - set_weapon_model_generated_thrown_object(0x20); - prepare_load_objects(param_1,(ushort *)object); - object[0x32] = 0; - object[0x33] = 0; - fVar41 = convert_angle_using_inverse((f32)object[0xe],(f32)object[0x10]); - *(float *)(object + 0x37) = flt_8004F024 - fVar41; - if (object[4] != 0) { - fStack408 = (float)proc_7F0B2970(); - } - *(float *)(object + 0x35) = fStack408; - *(float *)(object + 0x34) = fStack408 / flt_8004F028; - } - break; - case '.': - *(float *)(object + 1) = (float)object[1] / 100.00000000; - *(float *)(object + 2) = (float)object[2] / 100.00000000; - *(float *)(object + 3) = (float)object[3] / 100.00000000; - *(float *)(object + 4) = (float)object[4] / 65536.00000000; - *(float *)(object + 5) = (float)object[5] / 65536.00000000; - break; - case '/': - if ((bVar2) && ((object[3] & uVar36) == 0)) { - if (object[2] << 3 < 0) { - if (9999 < *(short *)((int)object + 6)) { - puVar8 = ptr_2xxxpresets + (int)*(short *)((int)object + 6) * 0x44; - proc_7F001BD4((float *)(puVar8 + -680000),&fStack360); - fStack372 = *(float *)(puVar8 + -0xa6034) * 10.00000000 + fStack360; - fStack368 = *(float *)(puVar8 + -0xa6030) * 10.00000000 + fStack356; - fStack364 = *(float *)(puVar8 + -0xa602c) * 10.00000000 + fStack352; - fStack360 = fStack360 - *(float *)(puVar8 + -0xa6034) * 10.00000000; - fStack356 = fStack356 - *(float *)(puVar8 + -0xa6030) * 10.00000000; - fStack352 = fStack352 - *(float *)(puVar8 + -0xa602c) * 10.00000000; - objinst = proc_7F0B9E04(&fStack360,&fStack372); - object[0x23] = objinst; - *(float *)(object + 0x24) = (float)object[0x24] / 65536.00000000; - } - } - prepare_load_objects(param_1,(ushort *)object); - } - } - } - uVar5 = get_size_of_setup_object_type(object); - object = object + (int)uVar5; - cVar1 = *(char *)((int)object + 3); - additionalentries += 1; - } while (cVar1 != '0'); - cVar1 = ptr_setup_objects[3]; - } - additionalentries = 0; - object = (int *)ptr_setup_objects; - while (cVar1 != '0') { - if (true) { - switch(cVar1) { - case '\x03': - case '\x04': - case '\a': - case '\b': - case '\n': - case '\x14': - case '\x15': - case '$': - case ')': - case '*': - case '+': - case '/': - if (((object[4] != 0) && ((object[2] & 0x8000U) != 0)) && - ((objinst = proc_7F056EA0(param_1,additionalentries + - (int)*(short *)((int)object + 6)), objinst != 0 - && (*(int *)(objinst + 0x10) != 0)))) { - object[0x19] = object[0x19] | 0x80000; - set_obj_instance_controller_scale(object[5],scale); - proc_7F03A5A4(object[4],*(int *)(objinst + 0x10)); - } - break; - case '\x0e': - objdata1 = (int *)proc_7F056A88(object[1] + additionalentries); - objdata2 = (int *)proc_7F056A88(object[2] + additionalentries); - if ((((objdata1 != NULL) && (objdata2 != NULL)) && - (*(char *)((int)objdata1 + 3) == '\b')) && (*(char *)((int)objdata2 + 3) == '\b')) - { - link_objects(objdata1,objdata2); - } - break; - case '\x13': - objinst = object[2]; - iVar9 = proc_7F056EA0(param_1,additionalentries + object[1]); - objinst = proc_7F056A88(additionalentries + objinst); - if (((iVar9 != 0) && (*(int *)(iVar9 + 0x10) != 0)) && - ((objinst != 0 && - ((*(char *)(objinst + 3) == '\x01' && (*(int *)(objinst + 0x10) != 0)))))) { - object[1] = *(int *)(iVar9 + 0x10); - object[2] = *(int *)(objinst + 0x10); - proc_7F001910((int)object); - *(uint *)(iVar9 + 100) = *(uint *)(iVar9 + 100) | 1; - } - break; - case '&': - objinst = object[2]; - iVar9 = proc_7F056EA0(param_1,additionalentries + object[1]); - objinst = proc_7F056EA0(param_1,additionalentries + objinst); - if ((((iVar9 != 0) && (*(int *)(iVar9 + 0x10) != 0)) && (objinst != 0)) && - ((*(int *)(objinst + 0x10) != 0 && (*(char *)(iVar9 + 3) == '\x01')))) { - object[1] = iVar9; - object[2] = objinst; - proc_7F001928((int)object); - *(uint *)(iVar9 + 100) = *(uint *)(iVar9 + 100) | 0x2000; - } - break; - case ',': - objinst = object[3]; - iVar9 = object[2]; - iVar10 = proc_7F056EA0(param_1,additionalentries + object[1]); - iVar9 = proc_7F056EA0(param_1,additionalentries + iVar9); - objinst = proc_7F056EA0(param_1,additionalentries + objinst); - if ((((((iVar10 != 0) && (*(int *)(iVar10 + 0x10) != 0)) && (iVar9 != 0)) && - ((*(int *)(iVar9 + 0x10) != 0 && (*(char *)(iVar9 + 3) == '+')))) && - (objinst != 0)) && - ((*(int *)(objinst + 0x10) != 0 && (*(char *)(objinst + 3) == '\x01')))) { - object[1] = iVar10; - object[2] = iVar9; - object[3] = objinst; - proc_7F001940((int)object); - *(uint *)(iVar10 + 0xc) = *(uint *)(iVar10 + 0xc) | 0x400; - *(uint *)(objinst + 0xc) = *(uint *)(objinst + 0xc) | 0x400; - } - } - } - uVar5 = get_size_of_setup_object_type(object); - object = object + (int)uVar5; - cVar1 = *(char *)((int)object + 3); - additionalentries += 1; - } - } - goto LAB_7f004e78; + char cVar1; + ushort *partdesc; + bool bVar2; + PitemZ_header **ppPVar3; + byte *token; + p_itementry *index; + s32 sVar5; + int *objdata1; + undefined8 uVar4; + int *objdata2; + undefined *lvltextptr; + int guard_count; + int iVar6; + int iVar7; + int objinst; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + int iVar19; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + DIFFICULTY DVar24; + GUARDdata *pGVar25; + uint *puVar26; + u32 uVar27; + u32 uVar28; + short sVar29; + int **ppiVar30; + undefined4 *dst; + undefined4 *nextdst; + float *pfVar31; + PLAYER_ID playernum; + object_standard *poVar32; + object_standard *object; + uint uVar33; + LEVELID level; + undefined4 *src; + undefined4 *nextsrc; + f32 fVar34; + float fVar35; + float fVar36; + f32 scale; + float fStack408; + float fStack372; + float fStack368; + float fStack364; + float fStack360; + float fStack356; + float fStack352; + float fStack304; + float fStack292; + undefined lvltxtstring; + undefined uStack267; + uint uStack8; + + token = check_token(1,(byte *)"-nochr"); + bVar2 = token == NULL; + if (bVar2) { + token = check_token(1,(byte *)"-noprop"); + bVar2 = token == NULL; } - } - ptr_setup_path_tbl = NULL; - ptr_setup_path_link = NULL; - ptr_setup_intro = NULL; - ptr_setup_objects = NULL; - ptr_setup_path_sets = NULL; - ptr_setup_actions = NULL; - ptr_0xxxpresets = NULL; - ptr_2xxxpresets = NULL; - DAT_80075d20 = NULL; - DAT_80075d24 = NULL; - alloc_init_GUARDdata_entries(0); - proc_7F005540(0); - proc_7F005624(0); + uStack8 = (uint)bVar2; + token = check_token(1,(byte *)"-noobj"); + bVar2 = token == NULL; + if (bVar2) { + token = check_token(1,(byte *)"-noprop"); + bVar2 = token == NULL; + } + index = PitemZ_entries; + scale_1_0_item_related = 1.00000000; + do { + ppPVar3 = &index->header; + index = index + 1; + (*ppPVar3)->microcode_entry_num = 0; + } while (index < PitemZ_entries + 0x154); + level = (LEVELID)levelid; + if (levelid < 0x3b) { + lvltextptr = *(undefined **)(&setup_text_pointers + level * 4); + src = only_read_by_stageload; + dst = (undefined4 *)&lvltxtstring; + if (lvltextptr != NULL) { + do { + nextsrc = src + 3; + nextdst = dst + 3; + *dst = *src; + dst[1] = src[1]; + dst[2] = src[2]; + src = nextsrc; + dst = nextdst; + } while (nextsrc != (undefined4 *)0x8004eeac); + guard_count = 0; + objinst = 0; + *nextdst = uRam8004eeac; + lvltxtstring = *lvltextptr; + uStack267 = 0; + sVar5 = get_num_players(); + if (1 < sVar5) { + string_append_from_obseg_textbank(&lvltxtstring,"mp_"); + } + string_append_from_obseg_textbank + (&lvltxtstring,(char *)(*(int *)(&setup_text_pointers + level * 4) + 1)); + objdata1 = (int *)_load_resource_named_to_membank(&lvltxtstring,1,0x100,4); + DAT_80075d28 = objdata1; + uVar4 = get_textbank_number_for_stagenum(level); + load_mission_text_bank((u32)uVar4); + objdata2 = (int *)((int)objdata1 + *objdata1); + ptr_setup_path_link = (undefined *)((int)objdata1 + objdata1[1]); + ptr_setup_intro = (undefined *)((int)objdata1 + objdata1[2]); + ptr_setup_objects = (object_standard *)((int)objdata1 + objdata1[3]); + ptr_setup_path_sets = (undefined *)((int)objdata1 + objdata1[4]); + ptr_setup_actions = (undefined *)((int)objdata1 + objdata1[5]); + ptr_0xxxpresets = (undefined *)((int)objdata1 + objdata1[6]); + ptr_2xxxpresets = (undefined *)((int)objdata1 + objdata1[7]); + DAT_80075d20 = (int *)((int)objdata1 + objdata1[8]); + if (objdata1[8] == 0) { + DAT_80075d20 = NULL; + } + DAT_80075d24 = (int *)((int)objdata1 + objdata1[9]); + if (objdata1[9] == 0) { + DAT_80075d24 = NULL; + } + ptr_setup_path_tbl = (undefined *)objdata2; + if ((objdata2 != NULL) && (iVar6 = 0, -1 < *objdata2)) { + iVar7 = objdata2[1]; + while( true ) { + iVar6 += 0x10; + objdata2[1] = iVar7 + (int)objdata1; + objdata2 = (int *)(ptr_setup_path_tbl + iVar6); + if (*objdata2 < 0) break; + iVar7 = objdata2[1]; + } + } + if ((ptr_setup_path_link != NULL) && (iVar6 = 0, *(int *)ptr_setup_path_link != 0)) { + iVar7 = *(int *)ptr_setup_path_link; + objdata2 = (int *)ptr_setup_path_link; + do { + *objdata2 = iVar7 + (int)objdata1; + lvltextptr = ptr_setup_path_link + iVar6; + iVar6 += 0xc; + *(int *)(lvltextptr + 4) = *(int *)(lvltextptr + 4) + (int)objdata1; + objdata2 = (int *)(ptr_setup_path_link + iVar6); + iVar7 = *objdata2; + } while (iVar7 != 0); + } + if ((ptr_setup_actions != NULL) && (iVar6 = 0, *(int *)ptr_setup_actions != 0)) { + iVar7 = *(int *)ptr_setup_actions; + objdata2 = (int *)ptr_setup_actions; + do { + *objdata2 = iVar7 + (int)objdata1; + iVar6 += 8; + objdata2 = (int *)(ptr_setup_actions + iVar6); + iVar7 = *objdata2; + } while (iVar7 != 0); + } + if ((ptr_setup_path_sets != NULL) && (iVar6 = 0, *(int *)ptr_setup_path_sets != 0)) { + iVar7 = *(int *)ptr_setup_path_sets; + objdata2 = (int *)ptr_setup_path_sets; + do { + *objdata2 = iVar7 + (int)objdata1; + sVar29 = 0; + ppiVar30 = (int **)(ptr_setup_path_sets + iVar6); + objdata2 = *ppiVar30; + if (*objdata2 < 0) { + *(undefined2 *)((int)ppiVar30 + 6) = 0; + } + else { + iVar7 = objdata2[1]; + while( true ) { + sVar29 += 1; + if (iVar7 < 0) break; + iVar7 = objdata2[2]; + objdata2 = objdata2 + 1; + } + *(short *)((int)ppiVar30 + 6) = sVar29; + } + iVar6 += 8; + objdata2 = (int *)(ptr_setup_path_sets + iVar6); + iVar7 = *objdata2; + } while (iVar7 != 0); + } + if (ptr_0xxxpresets != NULL) { + fVar34 = proc_7F0B4830(); + fVar35 = *(float *)(ptr_0xxxpresets + 0x24); + if (fVar35 != 0.00000000) { + fVar36 = *(float *)ptr_0xxxpresets; + fStack292 = (float)fVar34; + pfVar31 = (float *)ptr_0xxxpresets; + while( true ) { + *(byte **)(pfVar31 + 9) = (byte *)((int)objdata1 + (int)fVar35); + *pfVar31 = fVar36 * fStack292; + pfVar31[1] = pfVar31[1] * fStack292; + pfVar31[2] = pfVar31[2] * fStack292; + init_pathtable_something + (pfVar31,(byte *)((int)objdata1 + (int)fVar35), + (int **)(pfVar31 + 10)); + fVar35 = pfVar31[0x14]; + pfVar31 = pfVar31 + 0xb; + if (fVar35 == 0.00000000) break; + fVar36 = *pfVar31; + } + } + } + if (ptr_2xxxpresets != NULL) { + fVar34 = proc_7F0B4830(); + fVar35 = *(float *)(ptr_2xxxpresets + 0x24); + if (fVar35 != 0.00000000) { + fVar36 = *(float *)ptr_2xxxpresets; + fStack304 = (float)fVar34; + pfVar31 = (float *)ptr_2xxxpresets; + while( true ) { + *(byte **)(pfVar31 + 9) = (byte *)((int)objdata1 + (int)fVar35); + *pfVar31 = fVar36 * fStack304; + pfVar31[1] = pfVar31[1] * fStack304; + pfVar31[2] = pfVar31[2] * fStack304; + pfVar31[0xb] = pfVar31[0xb] * fStack304; + pfVar31[0xc] = pfVar31[0xc] * fStack304; + pfVar31[0xd] = pfVar31[0xd] * fStack304; + pfVar31[0xe] = pfVar31[0xe] * fStack304; + pfVar31[0xf] = pfVar31[0xf] * fStack304; + pfVar31[0x10] = pfVar31[0x10] * fStack304; + init_pathtable_something + (pfVar31,(byte *)((int)objdata1 + (int)fVar35), + (int **)(pfVar31 + 10)); + fVar35 = pfVar31[0x1a]; + pfVar31 = pfVar31 + 0x11; + if (fVar35 == 0.00000000) break; + fVar36 = *pfVar31; + } + } + } + if ((DAT_80075d20 != NULL) && (iVar6 = 0, *DAT_80075d20 != 0)) { + iVar7 = *DAT_80075d20; + objdata2 = DAT_80075d20; + do { + *objdata2 = iVar7 + (int)objdata1; + iVar6 += 4; + objdata2 = (int *)((int)DAT_80075d20 + iVar6); + iVar7 = *objdata2; + } while (iVar7 != 0); + } + if (DAT_80075d24 != NULL) { + iVar6 = *DAT_80075d24; + iVar7 = 0; + objdata2 = DAT_80075d24; + while (iVar6 != 0) { + *objdata2 = iVar6 + (int)objdata1; + iVar7 += 4; + objdata2 = (int *)((int)DAT_80075d24 + iVar7); + iVar6 = *objdata2; + } + } + if (uStack8 == 0) { + alloc_init_GUARDdata_entries(0); + } + else { + guard_count = load_proptype(9); + alloc_init_GUARDdata_entries(guard_count); + guard_count = load_proptype(9); + iVar6 = load_proptype(8); + iVar7 = load_proptype(4); + objinst = load_proptype(0x11); + objinst = iVar6 + iVar7 + objinst; + } + if (bVar2) { + iVar6 = load_proptype(1); + iVar7 = load_proptype(6); + iVar8 = load_proptype(0xd); + iVar9 = load_proptype(0xc); + iVar10 = load_proptype(10); + iVar11 = load_proptype(0xb); + iVar12 = load_proptype(0x15); + iVar13 = load_proptype(3); + iVar14 = load_proptype(0x2a); + iVar15 = load_proptype(0x2f); + iVar16 = load_proptype(0x2b); + iVar17 = load_proptype(0x29); + iVar18 = load_proptype(0x24); + iVar19 = load_proptype(5); + iVar20 = load_proptype(7); + iVar21 = load_proptype(0x14); + iVar22 = load_proptype(0x27); + iVar23 = load_proptype(0x2d); + objinst = objinst + iVar6 + iVar7 + iVar8 + iVar9 + iVar10 + iVar11 + iVar12 + + iVar13 + iVar14 + iVar15 + iVar16 + iVar17 + iVar18 + iVar19 + iVar20 + + iVar21 + iVar22 + iVar23; + iVar6 = load_proptype(0x28); + guard_count += iVar6; + } + proc_7F005540(objinst); + proc_7F005624(guard_count); + playernum = PLAYER1; + sVar5 = get_num_players(); + if (0 < sVar5) { + do { + set_cur_player(playernum); + guard_count = load_proptype(0xe); + alloc_additional_item_slots(guard_count); + playernum += PLAYER2; + sVar5 = get_num_players(); + } while ((int)playernum < sVar5); + } + if (ptr_setup_objects != NULL) { + DVar24 = get_current_difficulty(); + uVar33 = 1 << (DVar24 + 4U & 0x1f); + sVar5 = get_num_players(); + if (1 < sVar5) { + sVar5 = get_num_players(); + uVar33 |= 1 << (sVar5 + 0x14U & 0x1f); + } + guard_count = 0; + cVar1 = ptr_setup_objects->type; + object = ptr_setup_objects; + if (cVar1 == '0') { + cVar1 = ptr_setup_objects->type; + } + else { + do { + if (true) { + switch(cVar1) { + case '\x01': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + expand_type_01_object(); + } + break; + case '\x02': + scale_1_0_item_related = + (float)*(int *)&object->obj / 65536.00000000; + break; + case '\x03': + case '\x05': + case '\a': + case '$': + case ')': + case '*': + case '+': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + prepare_load_objects(levelid,(ushort *)object); + } + break; + case '\x04': + if ((uStack8 != 0) && ((object->flags2 & uVar33) == 0)) { + expand_type_04_object(levelid,(ushort *)object); + } + break; + case '\x06': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + expand_type_06_object(levelid,(ushort *)object); + } + break; + case '\b': + if ((uStack8 != 0) && ((object->flags2 & uVar33) == 0)) { + expand_08_obj_set_guard_MP_weapons(level,(ushort *)object); + } + break; + case '\t': + if (uStack8 != 0) { + expand_09_characters(); + } + break; + case '\n': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + expand_type_0A_object(level,(ushort *)object,guard_count); + } + break; + case '\v': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + expand_type_0B_object(level,(ushort *)object); + } + break; + case '\f': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + expand_type_0C_object(levelid,(ushort *)object); + } + break; + case '\r': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + expand_type_0D_object_autoturret(levelid,(ushort *)object); + } + break; + case '\x11': + if ((uStack8 != 0) && ((object->flags2 & uVar33) == 0)) { + expand_type_0D_MP_weapon_expansion_routine + (levelid,(ushort *)object); + } + break; + case '\x12': + cVar1 = *(char *)((int)&object->flags + 3); + pGVar25 = check_if_guardnum_loaded_get_ptr_GUARDdata + ((short)*(undefined4 *)&object->obj); + if (((pGVar25 != NULL) && (pGVar25->POSdata_pointer != 0)) && + (pGVar25->MODELdata_pointer != 0)) { + pGVar25->beligerancy = cVar1; + } + break; + case '\x14': + objinst = 1; + sVar5 = get_num_players(); + if (1 < sVar5) { + iVar6 = get_ptr_mp_weapon_set_data(); + iVar6 += lastmpweaponnum * 0x18; + objinst = *(int *)(iVar6 + 0x10); + *(short *)(&object->field_7E + *(int *)(iVar6 + 0xc) * 4) = + (short)objinst; + } + if (((0 < objinst) && (bVar2)) && + (objinst = 0, poVar32 = object, (object->flags2 & uVar33) == 0)) + { + do { + if ((*(short *)&poVar32[1].hidden2 != 0) && + (poVar32[1].extrascale != 0xffff)) { + load_model((uint)(ushort)poVar32[1].extrascale); + } + objinst += 4; + poVar32 = (object_standard *)&poVar32->obj; + } while (objinst != 0x34); + prepare_load_objects(levelid,(ushort *)object); + } + break; + case '\x15': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + *(float *)(object + 1) = + (float)*(int *)(object + 1) / 65536.00000000; + *(undefined4 *)&object[1].obj = *(undefined4 *)(object + 1); + prepare_load_objects(levelid,(ushort *)object); + } + break; + case '\x16': + uVar28 = proc_7F056EA0(levelid,object->pad + guard_count); + object->flags2 = uVar28; + if (uVar28 != 0) { + *(uint *)(uVar28 + 100) = *(uint *)(uVar28 + 100) | 0x10; + } + set_parent_cur_tag_entry((int)object); + break; + case '\x17': + add_ptr_to_objective((int)object); + break; + case '\x1e': + set_parent_cur_obj_photograph((int)object); + break; + case ' ': + set_parent_cur_obj_enter_room((int)object); + break; + case '!': + set_parent_cur_obj_deposited_in_room((int)object); + break; + case '#': + setup_briefing_text_entry_parent((int)object); + break; + case '%': + objinst = proc_7F056EA0(levelid,*(int *)&object->obj + guard_count); + object->runtime_MATRIX3 = objinst; + if (objinst != 0) { + *(uint *)(objinst + 100) = *(uint *)(objinst + 100) | 0x400; + } + proc_7F08D8A0((int)object); + break; + case '\'': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + prepare_load_objects(levelid,(ushort *)object); + objinst = object->runtime_ptr_obj_instance_controller; + if ((objinst != 0) && + (partdesc = *(ushort **) + (*(int *)(*(int *)(objinst + 8) + 8) + 0x14), + partdesc != NULL)) { + puVar26 = (uint *)extract_id_from_object_structure_microcode + (objinst,partdesc); + *puVar26 = (uint)((object->flags & 0x10000000) == 0); + } + object[1].flags = 0; + object[1].flags2 = 0; + object[1].runtime_ptr_obj_posdata = 0; + object[1].runtime_ptr_obj_instance_controller = 0; + object[1].runtime_MATRIX1 = 0; + object[1].runtime_MATRIX2 = 0; + lvltextptr = *(undefined **)(object + 1); + object[1].runtime_MATRIX0 = -0x40800000; + lvltextptr = proc_7F035398(lvltextptr); + *(undefined **)(object + 1) = lvltextptr; + object[1].obj = 0; + object[1].pad = -1; + object[1].runtime_MATRIX3 = 0; + object[1].runtime_MATRIX4 = 0; + object[1].runtime_MATRIX5 = 0; + } + break; + case '(': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + prepare_load_objects(levelid,(ushort *)object); + object[1].runtime_MATRIX0 = 0; + object[1].runtime_MATRIX1 = 0; + object[1].flags = 0; + object[1].flags2 = 0; + object[1].runtime_ptr_obj_posdata = 0; + object[1].runtime_MATRIX3 = 0; + lvltextptr = *(undefined **)(object + 1); + object[1].runtime_MATRIX2 = -0x40800000; + object[1].runtime_ptr_obj_instance_controller = -0x40800000; + lvltextptr = proc_7F035398(lvltextptr); + *(undefined **)(object + 1) = lvltextptr; + object[1].obj = 0; + object[1].pad = -1; + object[1].runtime_MATRIX4 = 0; + object[1].runtime_MATRIX5 = 0; + object[1].runtime_MATRIX6 = 0; + } + break; + case '-': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + fStack408 = 0.00000000; + set_weapon_model_generated_thrown_object(0x20); + prepare_load_objects(levelid,(ushort *)object); + object[1].runtime_MATRIXC = 0; + object[1].runtime_MATRIXD = 0; + fVar35 = convert_angle_using_inverse + ((f32)object->runtime_MATRIX8, + (f32)object->runtime_MATRIXA); + objinst = object->runtime_ptr_obj_posdata; + object[1].runtime_y_pos = flt_8004F024 - fVar35; + if (objinst != 0) { + fStack408 = (float)proc_7F0B2970(); + } + *(float *)&object[1].runtime_MATRIXF = fStack408; + *(float *)&object[1].runtime_MATRIXE = fStack408 / flt_8004F028; + } + break; + case '.': + *(float *)&object->obj = (float)*(int *)&object->obj / 100.00000000; + *(float *)&object->flags = (float)object->flags / 100.00000000; + *(float *)&object->flags2 = (float)object->flags2 / 100.00000000; + *(float *)&object->runtime_ptr_obj_posdata = + (float)object->runtime_ptr_obj_posdata / 65536.00000000; + *(float *)&object->runtime_ptr_obj_instance_controller = + (float)object->runtime_ptr_obj_instance_controller / + 65536.00000000; + break; + case '/': + if ((bVar2) && ((object->flags2 & uVar33) == 0)) { + if ((int)(object->flags << 3) < 0) { + if (9999 < object->pad) { + lvltextptr = ptr_2xxxpresets + (int)object->pad * 0x44; + proc_7F001BD4((float *)(lvltextptr + -680000),&fStack360 + ); + fStack372 = *(float *)(lvltextptr + -0xa6034) * + 10.00000000 + fStack360; + fStack368 = *(float *)(lvltextptr + -0xa6030) * + 10.00000000 + fStack356; + fStack364 = *(float *)(lvltextptr + -0xa602c) * + 10.00000000 + fStack352; + fStack360 = fStack360 - + *(float *)(lvltextptr + -0xa6034) * + 10.00000000; + fStack356 = fStack356 - + *(float *)(lvltextptr + -0xa6030) * + 10.00000000; + fStack352 = fStack352 - + *(float *)(lvltextptr + -0xa602c) * + 10.00000000; + uVar28 = proc_7F0B9E04(&fStack360,&fStack372); + object[1].flags2 = uVar28; + *(float *)&object[1].runtime_ptr_obj_posdata = + (float)object[1].runtime_ptr_obj_posdata / + 65536.00000000; + } + } + prepare_load_objects(levelid,(ushort *)object); + } + } + } + uVar28 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar28 * 2); + cVar1 = object->type; + guard_count += 1; + } while (cVar1 != '0'); + cVar1 = ptr_setup_objects->type; + } + guard_count = 0; + object = ptr_setup_objects; + while (cVar1 != '0') { + if (true) { + switch(cVar1) { + case '\x03': + case '\x04': + case '\a': + case '\b': + case '\n': + case '\x14': + case '\x15': + case '$': + case ')': + case '*': + case '+': + case '/': + if (((object->runtime_ptr_obj_posdata != 0) && + ((object->flags & 0x8000) != 0)) && + ((objinst = proc_7F056EA0(levelid,guard_count + object->pad), + objinst != 0 && (*(int *)(objinst + 0x10) != 0)))) { + object->runtime_bitflags = object->runtime_bitflags | 0x80000; + set_obj_instance_controller_scale + (object->runtime_ptr_obj_instance_controller,scale); + proc_7F03A5A4(object->runtime_ptr_obj_posdata, + *(int *)(objinst + 0x10)); + } + break; + case '\x0e': + objdata1 = (int *)proc_7F056A88(*(int *)&object->obj + guard_count); + objdata2 = (int *)proc_7F056A88(object->flags + guard_count); + if ((((objdata1 != NULL) && (objdata2 != NULL)) && + (*(char *)((int)objdata1 + 3) == '\b')) && + (*(char *)((int)objdata2 + 3) == '\b')) { + link_objects(objdata1,objdata2); + } + break; + case '\x13': + uVar28 = object->flags; + objinst = proc_7F056EA0(levelid,guard_count + *(int *)&object->obj); + iVar6 = proc_7F056A88(guard_count + uVar28); + if (((objinst != 0) && (*(int *)(objinst + 0x10) != 0)) && + ((iVar6 != 0 && + ((*(char *)(iVar6 + 3) == '\x01' && (*(int *)(iVar6 + 0x10) != 0)))) + )) { + *(int *)&object->obj = *(int *)(objinst + 0x10); + object->flags = *(u32 *)(iVar6 + 0x10); + proc_7F001910((int)object); + *(uint *)(objinst + 100) = *(uint *)(objinst + 100) | 1; + } + break; + case '&': + uVar28 = object->flags; + objinst = proc_7F056EA0(levelid,guard_count + *(int *)&object->obj); + uVar28 = proc_7F056EA0(levelid,guard_count + uVar28); + if ((((objinst != 0) && (*(int *)(objinst + 0x10) != 0)) && + (uVar28 != 0)) && + ((*(int *)(uVar28 + 0x10) != 0 && (*(char *)(objinst + 3) == '\x01')) + )) { + *(int *)&object->obj = objinst; + object->flags = uVar28; + proc_7F001928((int)object); + *(uint *)(objinst + 100) = *(uint *)(objinst + 100) | 0x2000; + } + break; + case ',': + uVar28 = object->flags2; + uVar27 = object->flags; + objinst = proc_7F056EA0(levelid,guard_count + *(int *)&object->obj); + uVar27 = proc_7F056EA0(levelid,guard_count + uVar27); + uVar28 = proc_7F056EA0(levelid,guard_count + uVar28); + if ((((((objinst != 0) && (*(int *)(objinst + 0x10) != 0)) && + (uVar27 != 0)) && + ((*(int *)(uVar27 + 0x10) != 0 && (*(char *)(uVar27 + 3) == '+')))) + && (uVar28 != 0)) && + ((*(int *)(uVar28 + 0x10) != 0 && (*(char *)(uVar28 + 3) == '\x01'))) + ) { + *(int *)&object->obj = objinst; + object->flags = uVar27; + object->flags2 = uVar28; + proc_7F001940((int)object); + *(uint *)(objinst + 0xc) = *(uint *)(objinst + 0xc) | 0x400; + *(uint *)(uVar28 + 0xc) = *(uint *)(uVar28 + 0xc) | 0x400; + } + } + } + uVar28 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar28 * 2); + cVar1 = object->type; + guard_count += 1; + } + } + goto LAB_7f004e78; + } + } + ptr_setup_path_tbl = NULL; + ptr_setup_path_link = NULL; + ptr_setup_intro = NULL; + ptr_setup_objects = NULL; + ptr_setup_path_sets = NULL; + ptr_setup_actions = NULL; + ptr_0xxxpresets = NULL; + ptr_2xxxpresets = NULL; + DAT_80075d20 = NULL; + DAT_80075d24 = NULL; + alloc_init_GUARDdata_entries(0); + proc_7F005540(0); + proc_7F005624(0); LAB_7f004e78: - alloc_false_GUARDdata_to_exec_global_action(); - return; + alloc_false_GUARDdata_to_exec_global_action(); + return; } @@ -26157,41 +26326,42 @@ LAB_7f004e78: void something_with_stage_objectives(void) { - int iVar1; - undefined4 *puVar2; - - iVar1 = get_stage_num(); - if (iVar1 != 0x5a) { - num_objective_ptrs = 0xffffffff; - DAT_80075d58 = 0; - DAT_80075d5c = 0; - puVar2 = &DAT_80075d60; + int iVar1; + undefined **ppuVar2; + watchMenuObjectiveText **ppwVar3; + + iVar1 = get_stage_num(); + if (iVar1 != 0x5a) { + num_objective_ptrs[0] = 0xffffffff; + DAT_80075d58 = 0; + DAT_80075d5c = 0; + ppuVar2 = (undefined **)&DAT_80075d60; + do { + ppuVar2 = ppuVar2 + 4; + ppuVar2[1] = NULL; + ppuVar2[2] = NULL; + ppuVar2[3] = NULL; + *ppuVar2 = NULL; + ppuVar2 = ppuVar2; + } while (ppuVar2 != &ptr_last_tag_entry_type16); + } + objective_ptrs[0] = NULL; + objective_ptrs[1] = NULL; + ppwVar3 = objective_ptrs + 2; do { - puVar2 = puVar2 + 4; - puVar2[1] = 0; - puVar2[2] = 0; - puVar2[3] = 0; - *puVar2 = 0; - puVar2 = puVar2; - } while (puVar2 != &ptr_last_tag_entry_type16); - } - objective_ptrs[0] = 0; - objective_ptrs[1] = 0; - puVar2 = objective_ptrs + 2; - do { - puVar2 = puVar2 + 4; - puVar2[1] = 0; - puVar2[2] = 0; - puVar2[3] = 0; - *puVar2 = 0; - puVar2 = puVar2; - } while (puVar2 != &DAT_80075d58); - ptr_last_tag_entry_type16 = 0; - ptr_last_briefing_setup_entry_type23 = 0; - ptr_last_enter_room_subobject_entry_type20 = 0; - ptr_last_deposit_in_room_subobject_entry_type21 = 0; - ptr_last_photo_obj_in_room_subobject_entry_type1E = 0; - return; + ppwVar3 = ppwVar3 + 4; + ppwVar3[1] = NULL; + ppwVar3[2] = NULL; + ppwVar3[3] = NULL; + *ppwVar3 = NULL; + ppwVar3 = ppwVar3; + } while (ppwVar3 != (watchMenuObjectiveText **)&DAT_80075d58); + ptr_last_tag_entry_type16 = NULL; + ptr_last_briefing_setup_entry_type23 = NULL; + ptr_last_enter_room_subobject_entry_type20 = 0; + ptr_last_deposit_in_room_subobject_entry_type21 = 0; + ptr_last_photo_obj_in_room_subobject_entry_type1E = 0; + return; } @@ -26199,9 +26369,9 @@ void something_with_stage_objectives(void) void set_parent_cur_tag_entry(int param_1) { - *(undefined4 *)(param_1 + 8) = ptr_last_tag_entry_type16; - ptr_last_tag_entry_type16 = param_1; - return; + *(undefined **)(param_1 + 8) = ptr_last_tag_entry_type16; + ptr_last_tag_entry_type16 = (undefined *)param_1; + return; } @@ -26209,9 +26379,9 @@ void set_parent_cur_tag_entry(int param_1) void setup_briefing_text_entry_parent(int param_1) { - *(undefined4 *)(param_1 + 0xc) = ptr_last_briefing_setup_entry_type23; - ptr_last_briefing_setup_entry_type23 = param_1; - return; + *(watchMenuObjectiveText **)(param_1 + 0xc) = ptr_last_briefing_setup_entry_type23; + ptr_last_briefing_setup_entry_type23 = (watchMenuObjectiveText *)param_1; + return; } @@ -26219,11 +26389,11 @@ void setup_briefing_text_entry_parent(int param_1) void add_ptr_to_objective(int param_1) { - objective_ptrs[*(int *)(param_1 + 4)] = param_1; - if (num_objective_ptrs < *(int *)(param_1 + 4)) { - num_objective_ptrs = *(int *)(param_1 + 4); - } - return; + *(int *)(objective_ptrs + *(int *)(param_1 + 4)) = param_1; + if (num_objective_ptrs[0] < *(int *)(param_1 + 4)) { + num_objective_ptrs[0] = *(int *)(param_1 + 4); + } + return; } @@ -26231,9 +26401,9 @@ void add_ptr_to_objective(int param_1) void set_parent_cur_obj_enter_room(int param_1) { - *(undefined4 *)(param_1 + 0xc) = ptr_last_enter_room_subobject_entry_type20; - ptr_last_enter_room_subobject_entry_type20 = param_1; - return; + *(undefined4 *)(param_1 + 0xc) = ptr_last_enter_room_subobject_entry_type20; + ptr_last_enter_room_subobject_entry_type20 = param_1; + return; } @@ -26241,9 +26411,9 @@ void set_parent_cur_obj_enter_room(int param_1) void set_parent_cur_obj_deposited_in_room(int param_1) { - *(undefined4 *)(param_1 + 0x10) = ptr_last_deposit_in_room_subobject_entry_type21; - ptr_last_deposit_in_room_subobject_entry_type21 = param_1; - return; + *(undefined4 *)(param_1 + 0x10) = ptr_last_deposit_in_room_subobject_entry_type21; + ptr_last_deposit_in_room_subobject_entry_type21 = param_1; + return; } @@ -26251,9 +26421,9 @@ void set_parent_cur_obj_deposited_in_room(int param_1) void set_parent_cur_obj_photograph(int param_1) { - *(undefined4 *)(param_1 + 0xc) = ptr_last_photo_obj_in_room_subobject_entry_type1E; - ptr_last_photo_obj_in_room_subobject_entry_type1E = param_1; - return; + *(undefined4 *)(param_1 + 0xc) = ptr_last_photo_obj_in_room_subobject_entry_type1E; + ptr_last_photo_obj_in_room_subobject_entry_type1E = param_1; + return; } @@ -26261,29 +26431,29 @@ void set_parent_cur_obj_photograph(int param_1) void something_with_ejected_cartridges(void) { - undefined4 *puVar1; - object_header *header; - ejected_cart *peVar2; - - DAT_80075db0 = 0; - puVar1 = &DAT_80075db8; - do { - puVar1 = puVar1 + 1; - *puVar1 = 0; - puVar1 = puVar1; - } while (puVar1 < &DAT_80075dc8); - cartridges_eject = 0; - DAT_80034ca0 = 0; - if (ejected_cartridge.header != NULL) { - peVar2 = &ejected_cartridge; - header = (object_header *)ejected_cartridge.header; + undefined4 *puVar1; + object_header *header; + ejected_cart *peVar2; + + DAT_80075db0 = 0; + puVar1 = &DAT_80075db8; do { - load_object_into_memory(header,peVar2->text); - header = (object_header *)peVar2[1].header; - peVar2 = peVar2 + 1; - } while (header != NULL); - } - return; + puVar1 = puVar1 + 1; + *puVar1 = 0; + puVar1 = puVar1; + } while (puVar1 < &DAT_80075dc8); + cartridges_eject = 0; + DAT_80034ca0 = 0; + if (ejected_cartridge.header != NULL) { + peVar2 = &ejected_cartridge; + header = (object_header *)ejected_cartridge.header; + do { + load_object_into_memory(header,peVar2->text); + header = (object_header *)peVar2[1].header; + peVar2 = peVar2 + 1; + } while (header != NULL); + } + return; } @@ -26291,130 +26461,130 @@ void something_with_ejected_cartridges(void) void init_player_BONDdata_stats(void) { - void *pvVar2; - ulonglong uVar1; - int iVar3; - int iVar4; - Player *pPVar5; - int *piVar6; - int *piVar7; - Player *pPVar8; - int *piVar9; - struct_18 *psVar10; - struct_18 *psVar11; - int aiStack940 [234]; - int iStack4; - float fPoint9; - - psVar10 = &BONDdata_item_control_blocks_initdata; - piVar9 = aiStack940; - do { - psVar11 = (struct_18 *)&psVar10->field_C; - *piVar9 = psVar10->BONDdata_item_control_blocks_initdata; - piVar9[1] = psVar10->field_4; - piVar9[2] = psVar10->field_8; - psVar10 = psVar11; - piVar9 = piVar9 + 3; - } while (psVar11 != (struct_18 *)&BONDdata_item_control_blocks_initdata.anonymous_0); - pvVar2 = (void *)allocate_bytes_in_bank(size_item_buffer[0],4); - pPlayer->ptr_hand_weapon_buffer[0] = pvVar2; - uVar1 = get_num_players(); - if (uVar1 == 1) { - pvVar2 = (void *)allocate_bytes_in_bank(size_item_buffer[1],4); - pPlayer->ptr_hand_weapon_buffer[1] = pvVar2; - } - piVar9 = aiStack940; - pPlayer->hand_invisible[0] = 0; - pPlayer->hand_invisible[1] = 0; - pPlayer->hand_item[0] = 0; - pPlayer->hand_item[1] = 0; - pPlayer->field_2A44[0] = -1; - pPlayer->field_2A44[1] = -1; - pPlayer->lock_hand_model[0] = 0; - pPlayer->lock_hand_model[1] = 0; - pPVar5 = pPlayer; - piVar6 = piVar9; - do { - piVar7 = piVar6 + 3; - pPVar5->right_weapon = *piVar6; - pPVar5->right_weapon_attack = piVar6[1]; - pPVar5->previous_right_weapon = piVar6[2]; - pPVar5 = (Player *)&pPVar5->zpos; - piVar6 = piVar7; - pPVar8 = pPlayer; - } while (piVar7 != &iStack4); - do { - piVar6 = piVar9 + 3; - pPVar8->left_weapon = *piVar9; - pPVar8->left_weapon_attack = piVar9[1]; - pPVar8->left_weapon_previous = piVar9[2]; - piVar9 = piVar6; - pPVar8 = (Player *)&pPVar8->zpos; - iVar3 = 0; - } while (piVar6 != &iStack4); - do { - iVar4 = iVar3 + 4; - *(undefined4 *)((int)pPlayer->ammoheldarr + iVar3) = 0; - iVar3 = iVar4; - } while (iVar4 < 0x78); - pplayersperm->shotcount[0] = 0; - pplayersperm->shotcount[1] = 0; - pplayersperm->shotcount[2] = 0; - pplayersperm->shotcount[3] = 0; - pplayersperm->shotcount[4] = 0; - pplayersperm->shotcount[5] = 0; - pplayersperm->shotcount[6] = 0; - fPoint9 = flt_8004F0E0; - pplayersperm->killed_civilians = 0; - pplayersperm->killcount = 0; - pplayersperm->ggkillcount = 0; - pPlayer->deathcount = 0; - pPlayer->num_suicides = 0; - pPlayer->field_FC0 = 1.00000000; - pPlayer->field_FC4 = 1.00000000; - pPlayer->field_FC8 = 0; - pPlayer->field_FCC = 0; - pPlayer->field_FD0 = 0; - pPlayer->field_FD4 = 0; - pPlayer->field_FD8 = 0; - pPlayer->field_FDC = -1; - pPlayer->field_FDD = -1; - pPlayer->field_FDE = -1; - pPlayer->field_FDF = '\0'; - pPlayer->field_FE0 = 1; - pPlayer->field_FE4 = 0; - pPlayer->field_FE8 = 0.00000000; - pPlayer->field_FEC = 0.00000000; - pPlayer->field_FF0 = 0.00000000; - pPlayer->field_FF4 = 0.00000000; - *(float *)&pPlayer->field_FF8 = fPoint9; - pPlayer->field_FFC = 0.00000000; - pPlayer->field_1000 = 0.00000000; - pPlayer->field_1004 = 0.00000000; - pPlayer->field_1008 = 0.00000000; - *(float *)&pPlayer->field_100C = fPoint9; - pPlayer->field_1010 = 0.00000000; - *(float *)&pPlayer->holds_neg_pi = fl_neg_pi; - pPlayer->field_1018 = 0.00000000; - pPlayer->copiedgoldeneye = 0; - pPlayer->field_1270 = -1; - pPlayer->field_106C = 0.00000000; - pPlayer->field_1070 = 0.00000000; - pPlayer->field_1074 = 0.00000000; - pPlayer->field_1078 = 0; - pPlayer->field_107C = 0.00000000; - pPlayer->field_1080 = 0.00000000; - unknown_takes_playerhand(0); - unknown_takes_playerhand(0); - unknown_takes_playerhand(0); - unknown_takes_playerhand(1); - unknown_takes_playerhand(1); - unknown_takes_playerhand(1); - pPlayer->somekinda_flags = 0; - pPlayer->somekinda_bitflags = 2; - pPlayer->sniper_zoom = GsniperrifleZ_stats.zoom; - pPlayer->camera_zoom = GcameraZ_stats.zoom; - return; + u8 *puVar1; + s32 sVar2; + int iVar3; + int iVar4; + Player *pPVar5; + int *piVar6; + int *piVar7; + Player *pPVar8; + int *piVar9; + struct_18 *psVar10; + struct_18 *psVar11; + int aiStack940 [234]; + int iStack4; + float fPoint9; + + psVar10 = &BONDdata_item_control_blocks_initdata; + piVar9 = aiStack940; + do { + psVar11 = (struct_18 *)&psVar10->field_C; + *piVar9 = psVar10->BONDdata_item_control_blocks_initdata; + piVar9[1] = psVar10->field_4; + piVar9[2] = psVar10->field_8; + psVar10 = psVar11; + piVar9 = piVar9 + 3; + } while (psVar11 != (struct_18 *)&BONDdata_item_control_blocks_initdata.anonymous_0); + puVar1 = (u8 *)mempAllocBytesInBank(size_item_buffer[0],'\x04'); + pPlayer->ptr_hand_weapon_buffer[0] = puVar1; + sVar2 = get_num_players(); + if (sVar2 == 1) { + puVar1 = (u8 *)mempAllocBytesInBank(size_item_buffer[1],'\x04'); + pPlayer->ptr_hand_weapon_buffer[1] = puVar1; + } + piVar9 = aiStack940; + pPlayer->hand_invisible[0] = 0; + pPlayer->hand_invisible[1] = 0; + pPlayer->hand_item[0] = ITEM_UNARMED; + pPlayer->hand_item[1] = ITEM_UNARMED; + pPlayer->field_2A44[0] = -1; + pPlayer->field_2A44[1] = -1; + pPlayer->lock_hand_model[0] = 0; + pPlayer->lock_hand_model[1] = 0; + pPVar5 = pPlayer; + piVar6 = piVar9; + do { + piVar7 = piVar6 + 3; + pPVar5->right_weapon = *piVar6; + pPVar5->right_weapon_attack = piVar6[1]; + pPVar5->previous_right_weapon = piVar6[2]; + pPVar5 = (Player *)&pPVar5->zpos; + piVar6 = piVar7; + pPVar8 = pPlayer; + } while (piVar7 != &iStack4); + do { + piVar6 = piVar9 + 3; + pPVar8->left_weapon = *piVar9; + pPVar8->left_weapon_attack = piVar9[1]; + pPVar8->left_weapon_previous = piVar9[2]; + piVar9 = piVar6; + pPVar8 = (Player *)&pPVar8->zpos; + iVar3 = 0; + } while (piVar6 != &iStack4); + do { + iVar4 = iVar3 + 4; + *(undefined4 *)((int)pPlayer->ammoheldarr + iVar3) = 0; + iVar3 = iVar4; + } while (iVar4 < 0x78); + pPlayersPerm->shotcount[0] = 0; + pPlayersPerm->shotcount[1] = 0; + pPlayersPerm->shotcount[2] = 0; + pPlayersPerm->shotcount[3] = 0; + pPlayersPerm->shotcount[4] = 0; + pPlayersPerm->shotcount[5] = 0; + pPlayersPerm->shotcount[6] = 0; + fPoint9 = flt_8004F0E0; + pPlayersPerm->killed_civilians = 0; + pPlayersPerm->killcount = 0; + pPlayersPerm->ggkillcount = 0; + pPlayer->deathcount = 0; + pPlayer->num_suicides = 0; + pPlayer->field_FC0 = 1.00000000; + pPlayer->field_FC4 = 1.00000000; + pPlayer->field_FC8 = 0; + pPlayer->field_FCC = 0; + pPlayer->field_FD0 = 0; + pPlayer->field_FD4 = 0; + pPlayer->field_FD8 = 0; + pPlayer->field_FDC = -1; + pPlayer->field_FDD = -1; + pPlayer->field_FDE = -1; + pPlayer->field_FDF = '\0'; + pPlayer->field_FE0 = 1; + pPlayer->field_FE4 = 0; + pPlayer->field_FE8 = 0.00000000; + pPlayer->field_FEC = 0.00000000; + pPlayer->field_FF0 = 0.00000000; + pPlayer->field_FF4 = 0.00000000; + *(float *)&pPlayer->field_FF8 = fPoint9; + pPlayer->field_FFC = 0.00000000; + pPlayer->field_1000 = 0.00000000; + pPlayer->field_1004 = 0.00000000; + pPlayer->field_1008 = 0.00000000; + *(float *)&pPlayer->field_100C = fPoint9; + pPlayer->field_1010 = 0.00000000; + *(float *)&pPlayer->holds_neg_pi = fl_neg_pi; + pPlayer->field_1018 = 0.00000000; + pPlayer->copiedgoldeneye = 0; + pPlayer->field_1270 = -1; + pPlayer->field_106C = 0.00000000; + pPlayer->field_1070 = 0.00000000; + pPlayer->field_1074 = 0.00000000; + pPlayer->field_1078 = 0; + pPlayer->field_107C = 0.00000000; + pPlayer->field_1080 = 0.00000000; + unknown_takes_playerhand(0); + unknown_takes_playerhand(0); + unknown_takes_playerhand(0); + unknown_takes_playerhand(1); + unknown_takes_playerhand(1); + unknown_takes_playerhand(1); + pPlayer->somekinda_flags = 0; + pPlayer->somekinda_bitflags = 2; + pPlayer->sniper_zoom = GsniperrifleZ_stats.zoom; + pPlayer->camera_zoom = GcameraZ_stats.zoom; + return; } @@ -26422,46 +26592,46 @@ void init_player_BONDdata_stats(void) void proc_7F005450(void) { - undefined *puVar1; - undefined *puVar2; - undefined *puVar3; - undefined *puVar4; - undefined *puVar5; - undefined *puVar6; - undefined4 *puVar7; - - dword_80036060 = &DAT_80076a50; - DAT_80076a5c = &DAT_80076a64; - puVar4 = &DAT_80076a78; - DAT_80076a70 = &DAT_80076a78; - DAT_80076a74 = &DAT_80076a50; - puVar1 = &DAT_80076a8c; - DAT_80076a84 = &DAT_80076a8c; - puVar7 = (undefined4 *)&DAT_80076adc; - puVar6 = &DAT_80076ac8; - puVar5 = &DAT_80076ab4; - puVar3 = &DAT_80076aa0; - DAT_80076a88 = &DAT_80076a64; - puVar2 = puVar1; - do { - *(undefined4 **)(puVar1 + 0x48) = puVar7; - puVar7 = puVar7 + 0x14; - *(undefined **)(puVar1 + 0x20) = puVar5; - *(undefined **)(puVar1 + 0x24) = puVar2; - *(undefined **)(puVar1 + 0x34) = puVar6; - *(undefined **)(puVar1 + 0x38) = puVar3; - *(undefined **)(puVar1 + 0x4c) = puVar5; - *(undefined **)(puVar1 + 0xc) = puVar3; - *(undefined **)(puVar1 + 0x10) = puVar4; - puVar4 = puVar4 + 0x50; - puVar3 = puVar3 + 0x50; - puVar5 = puVar5 + 0x50; - puVar6 = puVar6 + 0x50; - puVar2 = puVar2 + 0x50; - puVar1 = puVar1 + 0x50; - } while (puVar7 != &flt_8007A02C); - DAT_8007992c = &DAT_80079908; - return; + undefined *puVar1; + undefined *puVar2; + undefined *puVar3; + undefined *puVar4; + undefined *puVar5; + undefined *puVar6; + undefined *puVar7; + + dword_80036060 = &DAT_80076a50; + DAT_80076a5c = &DAT_80076a64; + puVar4 = &DAT_80076a78; + DAT_80076a70 = &DAT_80076a78; + DAT_80076a74 = &DAT_80076a50; + puVar1 = &DAT_80076a8c; + DAT_80076a84 = &DAT_80076a8c; + puVar7 = &DAT_80076adc; + puVar6 = &DAT_80076ac8; + puVar5 = &DAT_80076ab4; + puVar3 = &DAT_80076aa0; + DAT_80076a88 = &DAT_80076a64; + puVar2 = puVar1; + do { + *(undefined **)(puVar1 + 0x48) = puVar7; + puVar7 = puVar7 + 0x50; + *(undefined **)(puVar1 + 0x20) = puVar5; + *(undefined **)(puVar1 + 0x24) = puVar2; + *(undefined **)(puVar1 + 0x34) = puVar6; + *(undefined **)(puVar1 + 0x38) = puVar3; + *(undefined **)(puVar1 + 0x4c) = puVar5; + *(undefined **)(puVar1 + 0xc) = puVar3; + *(undefined **)(puVar1 + 0x10) = puVar4; + puVar4 = puVar4 + 0x50; + puVar3 = puVar3 + 0x50; + puVar5 = puVar5 + 0x50; + puVar6 = puVar6 + 0x50; + puVar2 = puVar2 + 0x50; + puVar1 = puVar1 + 0x50; + } while (puVar7 != (undefined *)0x8007996c); + DAT_8007992c = &DAT_80079908; + return; } @@ -26469,9 +26639,9 @@ void proc_7F005450(void) void proc_7F005520(void) { - dword_80036070 = 0; - dword_80036074 = 0; - return; + dword_80036070 = 0; + dword_80036074 = 0; + return; } @@ -26479,8 +26649,8 @@ void proc_7F005520(void) void proc_7F005534(undefined4 param_1) { - dword_80036078 = param_1; - return; + dword_80036078 = param_1; + return; } @@ -26488,30 +26658,30 @@ void proc_7F005534(undefined4 param_1) void proc_7F005540(int param_1) { - uint uVar1; - int iVar2; - int iVar3; - - dword_80036074 = param_1 + 0x1e; - ptr_allocation_1 = allocate_bytes_in_bank(dword_80036074 * 0x20,4); - iVar3 = 0; - if (0 < dword_80036074) { - iVar2 = 0; - do { - *(undefined4 *)(ptr_allocation_1 + iVar2 + 8) = 0; - if (iVar3 < param_1) { - *(undefined4 *)(ptr_allocation_1 + iVar2 + 0x10) = 0; - } - else { - uVar1 = allocate_bytes_in_bank(0x50,4); - *(uint *)(ptr_allocation_1 + iVar2 + 0x10) = uVar1; - *(undefined2 *)(ptr_allocation_1 + iVar2 + 2) = 0x14; - } - iVar3 += 1; - iVar2 += 0x20; - } while (iVar3 < dword_80036074); - } - return; + uint uVar1; + int iVar2; + int iVar3; + + dword_80036074 = param_1 + 0x1e; + ptr_allocation_1 = mempAllocBytesInBank(dword_80036074 * 0x20,'\x04'); + iVar3 = 0; + if (0 < dword_80036074) { + iVar2 = 0; + do { + *(undefined4 *)(ptr_allocation_1 + iVar2 + 8) = 0; + if (iVar3 < param_1) { + *(undefined4 *)(ptr_allocation_1 + iVar2 + 0x10) = 0; + } + else { + uVar1 = mempAllocBytesInBank(0x50,'\x04'); + *(uint *)(ptr_allocation_1 + iVar2 + 0x10) = uVar1; + *(undefined2 *)(ptr_allocation_1 + iVar2 + 2) = 0x14; + } + iVar3 += 1; + iVar2 += 0x20; + } while (iVar3 < dword_80036074); + } + return; } @@ -26519,30 +26689,30 @@ void proc_7F005540(int param_1) void proc_7F005624(int param_1) { - uint uVar1; - int iVar2; - int iVar3; - - dword_80036070 = param_1 + 10; - ptr_allocation_0 = allocate_bytes_in_bank(dword_80036070 * 0xc0,4); - iVar3 = 0; - if (0 < dword_80036070) { - iVar2 = 0; - do { - *(undefined4 *)(ptr_allocation_0 + iVar2 + 8) = 0; - if (iVar3 < param_1) { - *(undefined4 *)(ptr_allocation_0 + iVar2 + 0x10) = 0; - } - else { - uVar1 = allocate_bytes_in_bank(0x230,4); - *(uint *)(ptr_allocation_0 + iVar2 + 0x10) = uVar1; - *(undefined2 *)(ptr_allocation_0 + iVar2 + 2) = 0x8c; - } - iVar3 += 1; - iVar2 += 0xbc; - } while (iVar3 < dword_80036070); - } - return; + uint uVar1; + int iVar2; + int iVar3; + + dword_80036070 = param_1 + 10; + ptr_allocation_0 = mempAllocBytesInBank(dword_80036070 * 0xc0,'\x04'); + iVar3 = 0; + if (0 < dword_80036070) { + iVar2 = 0; + do { + *(undefined4 *)(ptr_allocation_0 + iVar2 + 8) = 0; + if (iVar3 < param_1) { + *(undefined4 *)(ptr_allocation_0 + iVar2 + 0x10) = 0; + } + else { + uVar1 = mempAllocBytesInBank(0x230,'\x04'); + *(uint *)(ptr_allocation_0 + iVar2 + 0x10) = uVar1; + *(undefined2 *)(ptr_allocation_0 + iVar2 + 2) = 0x8c; + } + iVar3 += 1; + iVar2 += 0xbc; + } while (iVar3 < dword_80036070); + } + return; } @@ -26550,54 +26720,56 @@ void proc_7F005624(int param_1) ulonglong set_weapon_model_generated_thrown_object(undefined4 param_1) { - ulonglong uVar1; - longlong model; - - model = -1; - if (true) { - switch(param_1) { - case 3: - model = 0xba; - break; - case 0x18: - model = 0xcb; - break; - case 0x19: - model = 0xca; - break; - case 0x1a: - model = 0xc4; - break; - case 0x1b: - model = 0xc9; - break; - case 0x1c: - model = 200; - break; - case 0x1d: - model = 199; - break; - case 0x20: - model = 0xca; - break; - case 0x21: - model = 0xe2; - break; - case 0x22: - model = 0x111; - break; - case 0x2f: - model = 0xf5; - break; - case 0x30: - model = 0xf6; + ulonglong uVar1; + u32 uVar2; + longlong model; + + model = -1; + if (true) { + switch(param_1) { + case 3: + model = 0xba; + break; + case 0x18: + model = 0xcb; + break; + case 0x19: + model = 0xca; + break; + case 0x1a: + model = 0xc4; + break; + case 0x1b: + model = 0xc9; + break; + case 0x1c: + model = 200; + break; + case 0x1d: + model = 199; + break; + case 0x20: + model = 0xca; + break; + case 0x21: + model = 0xe2; + break; + case 0x22: + model = 0x111; + break; + case 0x2f: + model = 0xf5; + break; + case 0x30: + model = 0xf6; + } } - } - uVar1 = 0; - if (-1 < model) { - uVar1 = load_model((int)model); - } - return uVar1; + uVar1 = 0; + if (-1 < model) { + uVar2 = load_model((int)model); + uVar1 = SEXT48((int)uVar2); + } + return uVar1; } @@ -26608,204 +26780,204 @@ ulonglong set_weapon_model_generated_thrown_object(undefined4 param_1) void load_camera_intro_type_values(void) { - float *pfVar1; - int iVar3; - uint uVar4; - u32 uVar5; - undefined4 *puVar6; - object_standard *poVar7; - ulonglong uVar2; - uint *puVar8; - float fVar9; - float extraout_f12; - int *piStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - puVar8 = (uint *)ptr_setup_intro; - fStack12 = dword_8002A780; - fStack8 = dword_8002A784; - fStack4 = dword_8002A788; - mission_kia = FALSE; - camera_80036424 = 0; - resolution = 0; - camera_8003642C = 0; - camera_80036430 = 0; - camera_80036434 = 0; - fStack16 = 0.00000000; - iVar3 = get_stage_num(); - if (iVar3 == 0x36) { - uVar4 = allocate_bytes_in_bank(0x46ea0,4); - resolution = uVar4 + 0x3f & 0xffffffc0; - camera_80036430 = 1; - } - camera_80036438 = 0; - dword_8003643C = 0; - dword_80036440 = 0; - DAT_80079990 = 0; - DAT_80079994 = 0; - DAT_80079998 = 0; - dword_80036444 = 0; - DAT_80079c68 = 0; - in_tank_flag = FALSE; - dword_8003644C = 0; - ptr_playerstank = 0; - dword_80036454 = 0; - dword_80036458 = 0; - dword_8003645C = 0; - dword_80036460 = 0; - dword_80036464 = 0; - dword_80036468 = 0; - dword_8003646C = 0; - dword_80036470 = 0; - dword_80036474 = 0; - dword_80036478 = 0; - dword_8003647C = 0; - dword_80036480 = 0; - dword_80036484 = 0; - dword_80036488 = 0; - dword_8003648C = 0; - dword_800364B0 = 1; - disable_player_pickups_flag = 0; - cameramode = 0; - enable_move_after_cinema = 0; - dword_8003649C = 0; - stop_time_flag = 0; - dword_800364A4 = 0; - dword_800364A8 = 1; - ptr_firstcommand_rotatingcam = NULL; - ptr_random06cam_entry = NULL; - ptr_last_06_cam_entry = NULL; - num_06_cam_entries = 0; - missiontime = 0; - watch_time = 0; - selected_stage_intro_anim = 0; - watch_transition_time = flt_8004F1A8; - flt_8007A0A4 = NULL; - PTR_800799e0 = NULL; - if (puVar8 != NULL) { - uVar4 = *puVar8; - while (uVar4 != 9) { - if (uVar4 < 9) { + float *pfVar1; + int iVar2; + uint uVar3; + u32 uVar4; + undefined4 *puVar5; + object_standard *poVar6; + s32 sVar7; + uint *puVar8; + float fVar9; + float extraout_f12; + int *piStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + puVar8 = (uint *)ptr_setup_intro; + fStack12 = dword_8002A780; + fStack8 = dword_8002A784; + fStack4 = dword_8002A788; + mission_kia = FALSE; + camera_80036424 = 0; + resolution = 0; + camera_8003642C = 0; + camera_80036430 = 0; + camera_80036434 = 0; + fStack16 = 0.00000000; + iVar2 = get_stage_num(); + if (iVar2 == 0x36) { + uVar3 = mempAllocBytesInBank(0x46ea0,'\x04'); + resolution = uVar3 + 0x3f & 0xffffffc0; + camera_80036430 = 1; + } + camera_80036438 = 0; + dword_8003643C = 0; + dword_80036440 = 0; + DAT_80079990 = 0; + DAT_80079994 = 0; + DAT_80079998 = 0; + dword_80036444 = 0; + DAT_80079c68 = 0; + in_tank_flag = FALSE; + dword_8003644C = 0; + ptr_playerstank = 0; + dword_80036454 = 0; + dword_80036458 = 0; + dword_8003645C = 0; + dword_80036460 = 0; + dword_80036464 = 0; + dword_80036468 = 0; + dword_8003646C = 0; + dword_80036470 = 0; + dword_80036474 = 0; + dword_80036478 = 0; + dword_8003647C = 0; + dword_80036480 = 0; + dword_80036484 = 0; + dword_80036488 = 0; + dword_8003648C = 0; + dword_800364B0 = 1; + disable_player_pickups_flag = 0; + cameramode = 0; + enable_move_after_cinema = 0; + dword_8003649C = 0; + stop_time_flag = 0; + dword_800364A4 = 0; + dword_800364A8 = 1; + ptr_firstcommand_rotatingcam = NULL; + ptr_random06cam_entry = NULL; + ptr_last_06_cam_entry = NULL; + num_06_cam_entries = 0; + missiontime = 0; + watch_time = 0; + selected_stage_intro_anim = 0; + watch_transition_time = flt_8004F1A8; + flt_8007A0A4 = NULL; + PTR_800799e0 = NULL; + if (puVar8 != NULL) { + uVar3 = *puVar8; + while (uVar3 != 9) { + if (uVar3 < 9) { // WARNING: Could not recover jumptable at 0x7f005a74. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700399A4)[uVar4])(); - return; - } - puVar8 = puVar8 + 1; - uVar4 = *puVar8; + (*(code *)(&jpt_700399A4)[uVar3])(); + return; + } + puVar8 = puVar8 + 1; + uVar3 = *puVar8; + } } - } - if (false) { - ptr_random06cam_entry = NULL; - uVar5 = get_random_value(); - uVar4 = uVar5 % num_06_cam_entries; - if (num_06_cam_entries == 0) { - trap(0x1c00); + if (false) { + ptr_random06cam_entry = NULL; + uVar4 = get_random_value(); + uVar3 = uVar4 % num_06_cam_entries; + if (num_06_cam_entries == 0) { + trap(0x1c00); + } + while (0 < (int)uVar3) { + uVar3 -= 1; + ptr_random06cam_entry = *(undefined **)(ptr_random06cam_entry + 0x24); + } } - while (0 < (int)uVar4) { - uVar4 -= 1; - ptr_random06cam_entry = *(undefined **)(ptr_random06cam_entry + 0x24); + add_item_to_inventory(ITEM_FIST); + if (true) { + PTR_800799e0 = (undefined *)((int)&rgba + 1); } - } - add_item_to_inventory(ITEM_FIST); - if (true) { - PTR_800799e0 = (undefined *)((int)&rgba + 1); - } - pPlayer->field_78 = 0.00000000; - *(float *)&pPlayer->field_7C = flt_8004F1D0; - pPlayer->field_80 = 0.00000000; - if (DAT_80079c68 < 1) { - piStack20 = proc_7F0AFB78(&fStack12,&fStack8,&fStack4,extraout_f12); - fVar9 = proc_7F080D60((longlong)(int)piStack20,fStack12,fStack4); - fStack8 = (float)pPlayer->field_29BC + fVar9; - *(float *)&pPlayer->field_70 = fVar9; - } - else { - uVar2 = get_num_players(); - if ((longlong)uVar2 < 2) { - uVar4 = 0; + pPlayer->field_78 = 0.00000000; + *(float *)&pPlayer->field_7C = flt_8004F1D0; + pPlayer->field_80 = 0.00000000; + if (DAT_80079c68 < 1) { + piStack20 = proc_7F0AFB78(&fStack12,&fStack8,&fStack4,extraout_f12); + fVar9 = proc_7F080D60((longlong)(int)piStack20,fStack12,fStack4); + fStack8 = (float)pPlayer->field_29BC + fVar9; + *(float *)&pPlayer->field_70 = fVar9; } else { - if (DAT_80079c68 < 1) { - uVar4 = 0; - } - else { - uVar4 = proc_7F0790F0(); - } + sVar7 = get_num_players(); + if (sVar7 < 2) { + uVar3 = 0; + } + else { + if (DAT_80079c68 < 1) { + uVar3 = 0; + } + else { + uVar3 = proc_7F0790F0(); + } + } + pfVar1 = (float *)(&DAT_80079c28)[uVar3]; + fStack12 = *pfVar1; + fStack4 = pfVar1[2]; + piStack20 = (int *)pfVar1[10]; + fVar9 = proc_7F080D60((longlong)(int)piStack20,fStack12,fStack4); + fStack8 = (float)pPlayer->field_29BC + fVar9; + *(float *)&pPlayer->field_70 = fVar9; + pfVar1 = (float *)(&DAT_80079c28)[uVar3]; + fStack16 = convert_angle_using_inverse((f32)pfVar1[6],(f32)pfVar1[8]); + fStack16 = flt_8004F1D4 - fStack16; } - pfVar1 = (float *)(&DAT_80079c28)[uVar4]; - fStack12 = *pfVar1; - fStack4 = pfVar1[2]; - piStack20 = (int *)pfVar1[10]; - fVar9 = proc_7F080D60((longlong)(int)piStack20,fStack12,fStack4); - fStack8 = (float)pPlayer->field_29BC + fVar9; - *(float *)&pPlayer->field_70 = fVar9; - pfVar1 = (float *)(&DAT_80079c28)[uVar4]; - fStack16 = convert_angle_using_inverse((f32)pfVar1[6],(f32)pfVar1[8]); - fStack16 = flt_8004F1D4 - fStack16; - } - pPlayer->vv_theta = (fStack16 * 360.00000000) / flt_8004F1D8; - *(float *)&pPlayer->clipping_height = fVar9; - *(float *)&pPlayer->field_6C = fVar9 / flt_8004F1DC; - change_player_pos_to_target(&pPlayer->ptr_tile_printmanpos,(int *)&fStack12,piStack20); - fVar9 = sinf(fStack16); - *(float *)&pPlayer->field_498 = -fVar9; - pPlayer->field_49C = 0; - fVar9 = cosf(fStack16); - *(float *)&pPlayer->field_4A0 = fVar9; - proc_7F089718(flt_800364D0); - DAT_80079da0 = 0; - DAT_80079da4 = 0; - puVar6 = &DAT_80079da8; - do { - puVar6 = puVar6 + 4; - puVar6[1] = 0; - puVar6[2] = 0; - puVar6[3] = 0; - *puVar6 = 0; - puVar6 = puVar6; - } while (puVar6 != (undefined4 *)0x80079dc8); - reset_intro_camera_message_dialogs_for_BONDdata(); - proc_7F08A900(); - poVar7 = remove_last_obj_pos_data_entry(); - *(object_standard **)&pPlayer->position_data_pointer = poVar7; - *(undefined4 *)(pPlayer->position_data_pointer + 4) = 0; - *(undefined *)pPlayer->position_data_pointer = 6; - *(float *)&pPlayer->field_408 = fStack12; - *(float *)(pPlayer->position_data_pointer + 8) = fStack12; - *(float *)&pPlayer->field_40C = fStack8; - *(float *)(pPlayer->position_data_pointer + 0xc) = fStack8; - *(float *)&pPlayer->field_410 = fStack4; - *(float *)(pPlayer->position_data_pointer + 0x10) = fStack4; - *(int **)(pPlayer->position_data_pointer + 0x14) = piStack20; - set_current_objposdata_plus_0x28((object_standard *)pPlayer->position_data_pointer); - set_stateflag_0x04_for_posdata(pPlayer->position_data_pointer); - fVar9 = flt_8004F1E0; - *(float *)&pPlayer->field_3B8 = (float)pPlayer->field_4B4 / flt_8004F1E0; - *(float *)&pPlayer->field_3BC = (float)pPlayer->field_4B8 / fVar9; - *(float *)&pPlayer->field_3C0 = (float)pPlayer->field_4BC / fVar9; - uVar2 = get_num_players(); - if (uVar2 == 1) { - set_camera_mode(1); - } - else { - set_camera_mode(9); - } - total_player_death_anim = 0; - if (player_death_ani_list[0] != 0) { - total_player_death_anim = 1; - while (player_death_ani_list[total_player_death_anim] != 0) { - total_player_death_anim += 1; + pPlayer->vv_theta = (fStack16 * 360.00000000) / flt_8004F1D8; + *(float *)&pPlayer->clipping_height = fVar9; + *(float *)&pPlayer->field_6C = fVar9 / flt_8004F1DC; + change_player_pos_to_target(&pPlayer->ptr_tile_printmanpos,(int *)&fStack12,piStack20); + fVar9 = sinf(fStack16); + *(float *)&pPlayer->field_498 = -fVar9; + pPlayer->field_49C = 0; + fVar9 = cosf(fStack16); + *(float *)&pPlayer->field_4A0 = fVar9; + proc_7F089718(flt_800364D0); + DAT_80079da0 = 0; + DAT_80079da4 = 0; + puVar5 = &DAT_80079da8; + do { + puVar5 = puVar5 + 4; + puVar5[1] = 0; + puVar5[2] = 0; + puVar5[3] = 0; + *puVar5 = 0; + puVar5 = puVar5; + } while (puVar5 != (undefined4 *)0x80079dc8); + reset_intro_camera_message_dialogs_for_BONDdata(); + proc_7F08A900(); + poVar6 = remove_last_obj_pos_data_entry(); + *(object_standard **)&pPlayer->position_data_pointer = poVar6; + *(undefined4 *)(pPlayer->position_data_pointer + 4) = 0; + *(undefined *)pPlayer->position_data_pointer = 6; + *(float *)&pPlayer->field_408 = fStack12; + *(float *)(pPlayer->position_data_pointer + 8) = fStack12; + *(float *)&pPlayer->field_40C = fStack8; + *(float *)(pPlayer->position_data_pointer + 0xc) = fStack8; + *(float *)&pPlayer->field_410 = fStack4; + *(float *)(pPlayer->position_data_pointer + 0x10) = fStack4; + *(int **)(pPlayer->position_data_pointer + 0x14) = piStack20; + set_current_objposdata_plus_0x28((object_standard *)pPlayer->position_data_pointer); + set_stateflag_0x04_for_posdata(pPlayer->position_data_pointer); + fVar9 = flt_8004F1E0; + *(float *)&pPlayer->field_3B8 = (float)pPlayer->field_4B4 / flt_8004F1E0; + *(float *)&pPlayer->field_3BC = (float)pPlayer->field_4B8 / fVar9; + *(float *)&pPlayer->field_3C0 = (float)pPlayer->field_4BC / fVar9; + sVar7 = get_num_players(); + if (sVar7 == 1) { + set_camera_mode(INTRO_CAM); } - } - pPlayer->field_420 = 1; - pPlayer->field_424 = 0; - pPlayer->field_428 = 0; - dword_80036510 = 0; - return; + else { + set_camera_mode(MP_CAM); + } + total_player_death_anim = 0; + if (player_death_ani_list[0] != 0) { + total_player_death_anim = 1; + while (player_death_ani_list[total_player_death_anim] != 0) { + total_player_death_anim += 1; + } + } + pPlayer->field_420 = 1; + pPlayer->field_424 = 0; + pPlayer->field_428 = 0; + dword_80036510 = 0; + return; } @@ -26813,22 +26985,22 @@ void load_camera_intro_type_values(void) void proc_7F0061F0(void) { - int iVar1; - int iVar2; - - pPlayer->equipallguns = 0; - pPlayer->field_1200 = -1; - pPlayer->field_120C = -1; - iVar1 = 0x18; - do { - *(undefined4 *)((int)&pPlayer->field_1200 + iVar1) = 0xffffffff; - *(undefined4 *)((int)&pPlayer->field_120C + iVar1) = 0xffffffff; - *(undefined4 *)((int)&pPlayer->field_1218 + iVar1) = 0xffffffff; - iVar2 = iVar1 + 0x30; - *(undefined4 *)((int)&pPlayer->field_1224 + iVar1) = 0xffffffff; - iVar1 = iVar2; - } while (iVar2 != 0x78); - return; + int iVar1; + int iVar2; + + pPlayer->equipallguns = 0; + pPlayer->field_1200 = -1; + pPlayer->field_120C = -1; + iVar1 = 0x18; + do { + *(undefined4 *)((int)&pPlayer->field_1200 + iVar1) = 0xffffffff; + *(undefined4 *)((int)&pPlayer->field_120C + iVar1) = 0xffffffff; + *(undefined4 *)((int)&pPlayer->field_1218 + iVar1) = 0xffffffff; + iVar2 = iVar1 + 0x30; + *(undefined4 *)((int)&pPlayer->field_1224 + iVar1) = 0xffffffff; + iVar1 = iVar2; + } while (iVar2 != 0x78); + return; } @@ -26836,13 +27008,13 @@ void proc_7F0061F0(void) void alloc_additional_item_slots(int additionalentries) { - uint uVar1; - - pPlayer->equipmaxitems = additionalentries + 0x1e; - uVar1 = allocate_bytes_in_bank((pPlayer->equipmaxitems * 0x14 + 0xfU | 0xf) ^ 0xf,4); - pPlayer->p_itemcur = uVar1; - reinit_BONDdata_inventory(); - return; + uint uVar1; + + pPlayer->equipmaxitems = additionalentries + 0x1e; + uVar1 = mempAllocBytesInBank((pPlayer->equipmaxitems * 0x14 + 0xfU | 0xf) ^ 0xf,'\x04'); + pPlayer->p_itemcur = uVar1; + reinit_BONDdata_inventory(); + return; } @@ -26850,23 +27022,23 @@ void alloc_additional_item_slots(int additionalentries) void proc_7F0062C0(int param_1,int param_2,int param_3,int *param_4) { - short sStack8; - short sStack6; - short sStack4; - - *param_4 = 0; - param_4[1] = 0; - param_4[2] = 0; - if (param_2 < param_3) { - do { - proc_7F06D2E4(0,0,(int)&model_guard_character,param_1,param_2,&sStack8); - *param_4 = *param_4 + (int)sStack8; - param_2 += 1; - param_4[1] = param_4[1] + (int)sStack6; - param_4[2] = param_4[2] + (int)sStack4; - } while (param_2 < param_3); - } - return; + short sStack8; + short sStack6; + short sStack4; + + *param_4 = 0; + param_4[1] = 0; + param_4[2] = 0; + if (param_2 < param_3) { + do { + proc_7F06D2E4(0,0,(int)&model_guard_character,param_1,param_2,&sStack8); + *param_4 = *param_4 + (int)sStack8; + param_2 += 1; + param_4[1] = param_4[1] + (int)sStack6; + param_4[2] = param_4[2] + (int)sStack4; + } while (param_2 < param_3); + } + return; } @@ -26874,123 +27046,125 @@ void proc_7F0062C0(int param_1,int param_2,int param_3,int *param_4) void sets_a_bunch_of_BONDdata_values_to_default(void) { - float fVar1; - float fVar2; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - float **ppfVar3; - float **ppfVar4; - int *piVar5; - int *piVar6; - float **ppfVar7; - float **ppfVar8; - f32 scale; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - float extraout_f14_00; - float afStack144 [16]; - float *apfStack80 [4]; - int *piStack64; - int aiStack16 [2]; - int iStack8; - - if (0x1e < ptr_player_gait_object.num_table_entries) { - return_null(); - } - proc_7F075FAC((int)&pPlayer->field_598,(ushort **)&ptr_player_gait_object,&pPlayer->field_654); - fVar1 = flt_8004F1F0; - set_obj_instance_controller_scale((int)&pPlayer->field_598,scale); - fVar2 = flt_8004F1F4; - pPlayer->field_4E8 = 0; - *(float *)&pPlayer->field_4EC = flt_8004F1F8; - pPlayer->field_4F0 = 0; - pPlayer->field_4F4 = 1.00000000; - pPlayer->field_4F8 = 1.00000000; - pPlayer->scaled_velocity = 0.00000000; - pPlayer->field_500 = 0.00000000; - pPlayer->field_504 = 0.00000000; - pPlayer->field_508 = 0.00000000; - pPlayer->field_50C = 0.00000000; - pPlayer->field_510 = 0.00000000; - pPlayer->field_514 = 0.00000000; - pPlayer->field_518 = 0.00000000; - pPlayer->field_51C = 0.00000000; - pPlayer->velocity = 0.00000000; - pPlayer->field_524 = 0.00000000; - pPlayer->field_528 = 0.00000000; - pPlayer->field_52C = 0.00000000; - pPlayer->field_530 = 0.00000000; - *(float *)&pPlayer->field_534 = fVar2; - pPlayer->field_538 = 0; - *(float *)&pPlayer->field_53C = fVar2; - pPlayer->field_540 = 0.00000000; - pPlayer->field_4DC = 1; - pPlayer->field_4E0 = 1; - pPlayer->field_4E4 = 1; - pPlayer->field_544 = 0.00000000; - pPlayer->field_548 = 0.00000000; - pPlayer->field_54C = 0.00000000; - pPlayer->stationary_ground_offset = 0.00000000; - pPlayer->field_554 = 0.00000000; - pPlayer->field_558 = 0.00000000; - pPlayer->field_55C = 0.00000000; - pPlayer->field_560 = 0.00000000; - pPlayer->field_564 = 0.00000000; - pPlayer->field_568 = 0.00000000; - pPlayer->field_56C = 1.00000000; - pPlayer->field_570 = 0.00000000; - pPlayer->field_574 = 0.00000000; - pPlayer->field_578 = 1.00000000; - pPlayer->field_57C = 0.00000000; - pPlayer->field_580 = 1.00000000; - pPlayer->field_584 = 0.00000000; - pPlayer->field_588 = 0.00000000; - pPlayer->field_58C = 1.00000000; - pPlayer->field_590 = 0.00000000; - pPlayer->field_594 = 0; - piVar5 = &dword_80036AD0; - do { - proc_7F0062C0(*piVar5 + ptr_animation_table,(int)(float)piVar5[1],(int)(float)piVar5[2], - aiStack16); - piVar6 = piVar5 + 6; - *(float *)(piVar5 + 3) = ((float)iStack8 * fVar1) / ((float)piVar5[2] - (float)piVar5[1]); - piVar5 = piVar6; - } while (piVar6 != &dword_80036B00); - ppfVar7 = (float **)dword_8002A790; - ppfVar3 = apfStack80; - do { - ppfVar8 = ppfVar7 + 3; - ppfVar4 = ppfVar3 + 3; - *ppfVar3 = *ppfVar7; - ppfVar3[1] = ppfVar7[1]; - ppfVar3[2] = ppfVar7[2]; - ppfVar7 = ppfVar8; - ppfVar3 = ppfVar4; - } while (ppfVar8 != (float **)0x8002a7cc); - *ppfVar4 = pfRam8002a7cc; - proc_7F06FCA8((int)&pPlayer->field_598,ptr_animation_table + 0x1c,0,extraout_f12,0,extraout_f14); - subcalcpos((int)&pPlayer->field_598,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - apfStack80[0] = afStack144; - proc_7F057FD0(apfStack80[0]); - piStack64 = &pPlayer->field_6D0; - subcalcmatrices(apfStack80,(uint)&pPlayer->field_598,extraout_a2_lo_00,extraout_a3_lo_00); - *(int *)&pPlayer->stationary_ground_offset = pPlayer->field_704; - pPlayer->field_554 = 0.00000000; - *(float *)&pPlayer->field_558 = (float)pPlayer->field_744 - (float)pPlayer->field_704; - *(float *)&pPlayer->field_55C = (float)pPlayer->field_748 - (float)pPlayer->field_708; - proc_7F06FCA8((int)&pPlayer->field_598, - (&dword_80036AD0)[pPlayer->field_4E8 * 6] + ptr_animation_table,0,extraout_f12_00, - (&FLOAT_80036ad4)[pPlayer->field_4E8 * 6],extraout_f14_00); - proc_7F06FDCC((int)&pPlayer->field_598,(&FLOAT_80036ad4)[pPlayer->field_4E8 * 6],0); - proc_7F06FDE8((int)&pPlayer->field_598,extraout_f12_01); - proc_7F06FE3C((int)&pPlayer->field_598,proc_7F08DBB0); - proc_7F08DBC8(); - return; + float fVar1; + float fVar2; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + float (**ppaafVar3) [4] [4]; + float (**ppaafVar4) [4] [4]; + int *piVar5; + int *piVar6; + float (**ppaafVar7) [4] [4]; + float (**ppaafVar8) [4] [4]; + f32 scale; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + float extraout_f14_00; + float afStack144 [16]; + float (*apaafStack80 [4]) [4] [4]; + int *piStack64; + int aiStack16 [2]; + int iStack8; + + if (0x1e < ptr_player_gait_object.num_table_entries) { + return_null(); + } + proc_7F075FAC((int)&pPlayer->field_598,(ushort **)&ptr_player_gait_object,&pPlayer->field_654); + fVar1 = flt_8004F1F0; + set_obj_instance_controller_scale((int)&pPlayer->field_598,scale); + fVar2 = flt_8004F1F4; + pPlayer->field_4E8 = 0; + *(float *)&pPlayer->field_4EC = flt_8004F1F8; + pPlayer->field_4F0 = 0; + pPlayer->field_4F4 = 1.00000000; + pPlayer->field_4F8 = 1.00000000; + pPlayer->scaled_velocity = 0.00000000; + pPlayer->field_500 = 0.00000000; + pPlayer->field_504 = 0.00000000; + pPlayer->field_508 = 0.00000000; + pPlayer->field_50C = 0.00000000; + pPlayer->field_510 = 0.00000000; + pPlayer->field_514 = 0.00000000; + pPlayer->field_518 = 0.00000000; + pPlayer->field_51C = 0.00000000; + pPlayer->velocity = 0.00000000; + pPlayer->field_524 = 0.00000000; + pPlayer->field_528 = 0.00000000; + pPlayer->field_52C = 0.00000000; + pPlayer->field_530 = 0.00000000; + *(float *)&pPlayer->field_534 = fVar2; + pPlayer->field_538 = 0; + *(float *)&pPlayer->field_53C = fVar2; + pPlayer->field_540 = 0.00000000; + pPlayer->field_4DC = 1; + pPlayer->field_4E0 = 1; + pPlayer->field_4E4 = 1; + pPlayer->field_544 = 0.00000000; + pPlayer->field_548 = 0.00000000; + pPlayer->field_54C = 0.00000000; + pPlayer->stationary_ground_offset = 0.00000000; + pPlayer->field_554 = 0.00000000; + pPlayer->field_558 = 0.00000000; + pPlayer->field_55C = 0.00000000; + pPlayer->field_560 = 0.00000000; + pPlayer->field_564 = 0.00000000; + pPlayer->field_568 = 0.00000000; + pPlayer->field_56C = 1.00000000; + pPlayer->field_570 = 0.00000000; + pPlayer->field_574 = 0.00000000; + pPlayer->field_578 = 1.00000000; + pPlayer->field_57C = 0.00000000; + pPlayer->field_580 = 1.00000000; + pPlayer->field_584 = 0.00000000; + pPlayer->field_588 = 0.00000000; + pPlayer->field_58C = 1.00000000; + pPlayer->field_590 = 0.00000000; + pPlayer->field_594 = 0; + piVar5 = &dword_80036AD0; + do { + proc_7F0062C0(*piVar5 + ptr_animation_table,(int)(float)piVar5[1],(int)(float)piVar5[2], + aiStack16); + piVar6 = piVar5 + 6; + *(float *)(piVar5 + 3) = ((float)iStack8 * fVar1) / ((float)piVar5[2] - (float)piVar5[1]); + piVar5 = piVar6; + } while (piVar6 != &dword_80036B00); + ppaafVar7 = (float (**) [4] [4])dword_8002A790; + ppaafVar3 = apaafStack80; + do { + ppaafVar8 = ppaafVar7 + 3; + ppaafVar4 = ppaafVar3 + 3; + *ppaafVar3 = *ppaafVar7; + ppaafVar3[1] = ppaafVar7[1]; + ppaafVar3[2] = ppaafVar7[2]; + ppaafVar7 = ppaafVar8; + ppaafVar3 = ppaafVar4; + } while (ppaafVar8 != (float (**) [4] [4])0x8002a7cc); + *ppaafVar4 = paafRam8002a7cc; + proc_7F06FCA8((int)&pPlayer->field_598,ptr_animation_table + 0x1c,0,extraout_f12,0,extraout_f14) + ; + subcalcpos((int)&pPlayer->field_598,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + apaafStack80[0] = (float (*) [4] [4])afStack144; + guMtxIdentF_unrolled(apaafStack80[0]); + piStack64 = &pPlayer->field_6D0; + subcalcmatrices((float **)apaafStack80,(uint)&pPlayer->field_598,extraout_a2_lo_00, + extraout_a3_lo_00); + *(int *)&pPlayer->stationary_ground_offset = pPlayer->field_704; + pPlayer->field_554 = 0.00000000; + *(float *)&pPlayer->field_558 = (float)pPlayer->field_744 - (float)pPlayer->field_704; + *(float *)&pPlayer->field_55C = (float)pPlayer->field_748 - (float)pPlayer->field_708; + proc_7F06FCA8((int)&pPlayer->field_598, + (&dword_80036AD0)[pPlayer->field_4E8 * 6] + ptr_animation_table,0,extraout_f12_00, + (&FLOAT_80036ad4)[pPlayer->field_4E8 * 6],extraout_f14_00); + proc_7F06FDCC((int)&pPlayer->field_598,(&FLOAT_80036ad4)[pPlayer->field_4E8 * 6],0); + proc_7F06FDE8((int)&pPlayer->field_598,extraout_f12_01); + proc_7F06FE3C((int)&pPlayer->field_598,proc_7F08DBB0); + proc_7F08DBC8(); + return; } @@ -26998,48 +27172,48 @@ void sets_a_bunch_of_BONDdata_values_to_default(void) ulonglong init_pathtable_something(float *param_1,byte *param_2,int **param_3) { - int *piVar3; - u32 uVar4; - ulonglong uVar1; - longlong lVar2; - f32 extraout_f12; - float extraout_f12_00; - f32 fVar5; - float extraout_f12_01; - f32 extraout_f14; - float extraout_f14_00; - float fStack12; - float fStack8; - float fStack4; - - piVar3 = stanMatchTileName(param_2); - *param_3 = piVar3; - fVar5 = extraout_f12; - if ((piVar3 == NULL) || - (uVar4 = proc_7F0B036C((u32)piVar3,extraout_f12,extraout_f14), fVar5 = (f32)extraout_f12_00, - uVar4 == 0)) { - fStack12 = *param_1; - fStack8 = param_1[1]; - fStack4 = param_1[2]; - piVar3 = proc_7F0AFB78(&fStack12,&fStack8,&fStack4,(float)fVar5); - lVar2 = (longlong)(int)piVar3; + int *piVar3; + u32 uVar4; + ulonglong uVar1; + longlong lVar2; + f32 extraout_f12; + float extraout_f12_00; + f32 fVar5; + float extraout_f12_01; + f32 extraout_f14; + float extraout_f14_00; + float fStack12; + float fStack8; + float fStack4; + + piVar3 = stanMatchTileName(param_2); *param_3 = piVar3; - if (lVar2 == 0) { - *param_3 = NULL; + fVar5 = extraout_f12; + if ((piVar3 == NULL) || + (uVar4 = proc_7F0B036C((u32)piVar3,extraout_f12,extraout_f14), fVar5 = (f32)extraout_f12_00, + uVar4 == 0)) { + fStack12 = *param_1; + fStack8 = param_1[1]; + fStack4 = param_1[2]; + piVar3 = proc_7F0AFB78(&fStack12,&fStack8,&fStack4,(float)fVar5); + lVar2 = (longlong)(int)piVar3; + *param_3 = piVar3; + if (lVar2 == 0) { + *param_3 = NULL; + } + else { + proc_7F0B0BE4((int *)param_3,extraout_f12_01,extraout_f14_00,fStack12,fStack4); + if (lVar2 != 0) { + return 2; + } + *param_3 = NULL; + } + uVar1 = 0; } else { - proc_7F0B0BE4((int *)param_3,extraout_f12_01,extraout_f14_00,fStack12,fStack4); - if (lVar2 != 0) { - return 2; - } - *param_3 = NULL; + uVar1 = 1; } - uVar1 = 0; - } - else { - uVar1 = 1; - } - return uVar1; + return uVar1; } @@ -27047,283 +27221,284 @@ ulonglong init_pathtable_something(float *param_1,byte *param_2,int **param_3) void init_path_table_links(void) { - bool bVar1; - bool bVar2; - bool bVar3; - undefined *puVar4; - int *piVar5; - undefined *puVar6; - int iVar7; - int iVar8; - int iVar9; - int iVar10; - int iVar11; - int **ppiVar12; - int *piVar13; - int **ppiStack152; - int iStack68; - int aiStack64 [14]; - int *piStack8; - - puVar4 = ptr_setup_path_tbl; - bVar1 = false; - piStack8 = (int *)ptr_setup_path_link; - if ((ptr_setup_path_tbl != NULL) && (iVar11 = 0, -1 < *(int *)ptr_setup_path_tbl)) { - piVar13 = *(int **)(ptr_setup_path_tbl + 4); - do { - iVar8 = *piVar13; - while (-1 < iVar8) { - if (iVar8 == iVar11) { - bVar1 = true; - if (DAT_80075d20 == 0) { - iVar8 = piVar13[1]; - } - else { - iVar8 = piVar13[1]; - } - } - else { - piVar5 = *(int **)(ptr_setup_path_tbl + iVar8 * 0x10 + 4); - iVar7 = 0; - if (*piVar5 < 0) { - iVar7 = 0; - } - else { - if (iVar11 == *piVar5) { -LAB_7f00696c: - iVar7 <<= 2; - } - else { - iVar9 = 4; - while (iVar7 += 1, -1 < *(int *)((int)piVar5 + iVar9)) { - if (iVar11 == *(int *)(*(int *)(ptr_setup_path_tbl + iVar8 * 0x10 + 4) + iVar9)) - goto LAB_7f00696c; - iVar9 += 4; - } - iVar7 *= 4; - } - } - if (iVar11 == *(int *)((int)piVar5 + iVar7)) { - iVar8 = piVar13[1]; - } - else { - bVar1 = true; - iVar8 = piVar13[1]; - } - } - piVar13 = piVar13 + 1; - } - iVar11 += 1; - if (*(int *)(ptr_setup_path_tbl + iVar11 * 0x10) < 0) break; - piVar13 = *(int **)(ptr_setup_path_tbl + iVar11 * 0x10 + 1); - } while( true ); - } - if (ptr_setup_path_link != NULL) { - iVar11 = 0; - if (*(int *)ptr_setup_path_link != 0) { - ppiStack152 = (int **)ptr_setup_path_link; - piVar13 = *(int **)ptr_setup_path_link; - do { - iVar7 = 0; - iVar8 = *piVar13; - while (-1 < iVar8) { - if (iVar8 == iVar11) { - bVar1 = true; - if (DAT_80075d24 == 0) { - piVar13 = *ppiStack152; - } - else { - piVar13 = *ppiStack152; - } - } - else { - iVar9 = 0; - ppiVar12 = (int **)(piStack8 + iVar8 * 3); - piVar13 = *ppiVar12; - if (*piVar13 < 0) { - iVar9 = 0; - } - else { - iVar8 = 0; - if (iVar11 == *piVar13) { - iVar9 = 0; - } - else { - iVar10 = piVar13[1]; - piVar5 = piVar13; - while( true ) { - iVar9 += 1; - iVar8 += 4; - if ((iVar10 < 0) || (iVar11 == *(int *)((int)*ppiVar12 + iVar8))) break; - iVar10 = piVar5[2]; - piVar5 = piVar5 + 1; - } - iVar9 *= 4; - } - } - if (iVar11 == *(int *)((int)piVar13 + iVar9)) { - if (ptr_setup_path_tbl != NULL) { - proc_7F08F438((int)ppiStack152,(int)ppiVar12,aiStack64,&iStack68); - if (aiStack64[0] == 0) { - bVar1 = true; + bool bVar1; + bool bVar2; + bool bVar3; + undefined *puVar4; + int *piVar5; + undefined *puVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int **ppiVar12; + int *piVar13; + int **ppiStack152; + int iStack68; + int aiStack64 [14]; + int *piStack8; + + puVar4 = ptr_setup_path_tbl; + bVar1 = false; + piStack8 = (int *)ptr_setup_path_link; + if ((ptr_setup_path_tbl != NULL) && (iVar11 = 0, -1 < *(int *)ptr_setup_path_tbl)) { + piVar13 = *(int **)(ptr_setup_path_tbl + 4); + do { + iVar8 = *piVar13; + while (-1 < iVar8) { + if (iVar8 == iVar11) { + bVar1 = true; + if (DAT_80075d20 == 0) { + iVar8 = piVar13[1]; + } + else { + iVar8 = piVar13[1]; + } } else { - if (iStack68 != 0) { - piVar13 = *ppiStack152; - goto LAB_7f006ad4; - } - bVar1 = true; + piVar5 = *(int **)(ptr_setup_path_tbl + iVar8 * 0x10 + 4); + iVar7 = 0; + if (*piVar5 < 0) { + iVar7 = 0; + } + else { + if (iVar11 == *piVar5) { +LAB_7f00696c: + iVar7 <<= 2; + } + else { + iVar9 = 4; + while (iVar7 += 1, -1 < *(int *)((int)piVar5 + iVar9)) { + if (iVar11 == *(int *)(*(int *)(ptr_setup_path_tbl + iVar8 * 0x10 + + 4) + iVar9)) goto LAB_7f00696c; + iVar9 += 4; + } + iVar7 *= 4; + } + } + if (iVar11 == *(int *)((int)piVar5 + iVar7)) { + iVar8 = piVar13[1]; + } + else { + bVar1 = true; + iVar8 = piVar13[1]; + } } - } - piVar13 = *ppiStack152; + piVar13 = piVar13 + 1; } - else { - bVar1 = true; - if (DAT_80075d24 == 0) { - piVar13 = *ppiStack152; - } - else { - piVar13 = *ppiStack152; - } - } - } -LAB_7f006ad4: - iVar7 += 4; - iVar8 = *(int *)((int)piVar13 + iVar7); - } - iVar11 += 1; - ppiStack152 = ppiStack152 + 3; - if (*ppiStack152 == NULL) break; - piVar13 = *ppiStack152; - } while( true ); + iVar11 += 1; + if (*(int *)(ptr_setup_path_tbl + iVar11 * 0x10) < 0) break; + piVar13 = *(int **)(ptr_setup_path_tbl + iVar11 * 0x10 + 1); + } while( true ); } - } - if ((puVar4 != NULL) && (piStack8 != NULL)) { - iVar11 = *piStack8; - iVar8 = 0; - piVar13 = piStack8; - if (iVar11 != 0) { - do { - piVar5 = (int *)piVar13[1]; - iVar7 = 0; - iVar11 = *piVar5; - while (-1 < iVar11) { - iVar9 = *(int *)(puVar4 + iVar11 * 0x10 + 8); - if (iVar9 < 0) { - *(int *)(puVar4 + iVar11 * 0x10 + 8) = iVar8; - piVar5 = (int *)piVar13[1]; - iVar11 = (int)piVar5 + iVar7; - } - else { - iVar11 = (int)piVar5 + iVar7; - if (iVar8 != iVar9) { - bVar1 = true; - } - } - iVar11 = *(int *)(iVar11 + 4); - iVar7 += 4; - } - piVar5 = piVar13 + 3; - iVar8 += 1; - piVar13 = piVar13 + 3; - } while (*piVar5 != 0); - iVar11 = *piStack8; - } - iVar8 = 0; - if (-1 < *(int *)puVar4) { - iVar7 = *(int *)(puVar4 + 8); - while( true ) { - iVar8 += 1; - if (iVar7 < 0) { - bVar1 = true; - } - if (*(int *)(puVar4 + iVar8 * 0x10) < 0) break; - iVar7 = *(int *)(puVar4 + iVar8 * 0x10 + 2); - } - } - if (iVar11 != 0) { - piVar13 = (int *)piStack8[1]; - do { - iVar11 = *piVar13; - iVar8 = 0; - if (-1 < iVar11) { - do { - if (iVar8 == 0) { - *(undefined4 *)(puVar4 + iVar11 * 0x10 + 0xc) = 1; - } - else { - *(undefined4 *)(puVar4 + iVar11 * 0x10 + 0xc) = 0; - } - piVar13 = (int *)piStack8[1]; - iVar8 += 4; - iVar11 = *(int *)((int)piVar13 + iVar8); - } while (-1 < iVar11); - iVar11 = *piVar13; - } - do { - bVar2 = false; - bVar3 = false; - iVar8 = 0; - if (-1 < iVar11) { + if (ptr_setup_path_link != NULL) { + iVar11 = 0; + if (*(int *)ptr_setup_path_link != 0) { + ppiStack152 = (int **)ptr_setup_path_link; + piVar13 = *(int **)ptr_setup_path_link; do { - puVar6 = puVar4 + iVar11 * 0x10; - iVar8 += 4; - if (*(int *)(puVar6 + 0xc) == 1) { - piVar5 = *(int **)(puVar6 + 4); + iVar7 = 0; + iVar8 = *piVar13; + while (-1 < iVar8) { + if (iVar8 == iVar11) { + bVar1 = true; + if (DAT_80075d24 == 0) { + piVar13 = *ppiStack152; + } + else { + piVar13 = *ppiStack152; + } + } + else { + iVar9 = 0; + ppiVar12 = (int **)(piStack8 + iVar8 * 3); + piVar13 = *ppiVar12; + if (*piVar13 < 0) { + iVar9 = 0; + } + else { + iVar8 = 0; + if (iVar11 == *piVar13) { + iVar9 = 0; + } + else { + iVar10 = piVar13[1]; + piVar5 = piVar13; + while( true ) { + iVar9 += 1; + iVar8 += 4; + if ((iVar10 < 0) || (iVar11 == *(int *)((int)*ppiVar12 + iVar8)) + ) break; + iVar10 = piVar5[2]; + piVar5 = piVar5 + 1; + } + iVar9 *= 4; + } + } + if (iVar11 == *(int *)((int)piVar13 + iVar9)) { + if (ptr_setup_path_tbl != NULL) { + proc_7F08F438((int)ppiStack152,(int)ppiVar12,aiStack64,&iStack68); + if (aiStack64[0] == 0) { + bVar1 = true; + } + else { + if (iStack68 != 0) { + piVar13 = *ppiStack152; + goto LAB_7f006ad4; + } + bVar1 = true; + } + } + piVar13 = *ppiStack152; + } + else { + bVar1 = true; + if (DAT_80075d24 == 0) { + piVar13 = *ppiStack152; + } + else { + piVar13 = *ppiStack152; + } + } + } +LAB_7f006ad4: + iVar7 += 4; + iVar8 = *(int *)((int)piVar13 + iVar7); + } + iVar11 += 1; + ppiStack152 = ppiStack152 + 3; + if (*ppiStack152 == NULL) break; + piVar13 = *ppiStack152; + } while( true ); + } + } + if ((puVar4 != NULL) && (piStack8 != NULL)) { + iVar11 = *piStack8; + iVar8 = 0; + piVar13 = piStack8; + if (iVar11 != 0) { + do { + piVar5 = (int *)piVar13[1]; iVar7 = 0; iVar11 = *piVar5; - if (-1 < iVar11) { - do { - iVar7 += 4; - if (*(int *)(puVar4 + iVar11 * 0x10 + 0xc) != 1) { - *(undefined4 *)(puVar4 + iVar11 * 0x10 + 0xc) = 1; - piVar5 = *(int **)(puVar6 + 4); - bVar2 = true; + while (-1 < iVar11) { + iVar9 = *(int *)(puVar4 + iVar11 * 0x10 + 8); + if (iVar9 < 0) { + *(int *)(puVar4 + iVar11 * 0x10 + 8) = iVar8; + piVar5 = (int *)piVar13[1]; + iVar11 = (int)piVar5 + iVar7; } - iVar11 = *(int *)((int)piVar5 + iVar7); - } while (-1 < iVar11); - piVar13 = (int *)piStack8[1]; + else { + iVar11 = (int)piVar5 + iVar7; + if (iVar8 != iVar9) { + bVar1 = true; + } + } + iVar11 = *(int *)(iVar11 + 4); + iVar7 += 4; } - } - iVar11 = *(int *)((int)piVar13 + iVar8); - } while (-1 < iVar11); - iVar11 = *piVar13; - } - iVar7 = 0; - iVar8 = iVar11; - while (-1 < iVar8) { - iVar7 += 1; - if (*(int *)(puVar4 + iVar8 * 0x10 + 0xc) != 1) { - bVar3 = true; - break; + piVar5 = piVar13 + 3; + iVar8 += 1; + piVar13 = piVar13 + 3; + } while (*piVar5 != 0); + iVar11 = *piStack8; + } + iVar8 = 0; + if (-1 < *(int *)puVar4) { + iVar7 = *(int *)(puVar4 + 8); + while( true ) { + iVar8 += 1; + if (iVar7 < 0) { + bVar1 = true; + } + if (*(int *)(puVar4 + iVar8 * 0x10) < 0) break; + iVar7 = *(int *)(puVar4 + iVar8 * 0x10 + 2); } - iVar8 = piVar13[iVar7]; - } - } while ((bVar2) && (bVar3)); - if (bVar3) { - bVar1 = true; - if (DAT_80075d24 == 0) { - iVar11 = piStack8[3]; - } - else { - iVar11 = piStack8[3]; - } } - else { - iVar11 = piStack8[3]; + if (iVar11 != 0) { + piVar13 = (int *)piStack8[1]; + do { + iVar11 = *piVar13; + iVar8 = 0; + if (-1 < iVar11) { + do { + if (iVar8 == 0) { + *(undefined4 *)(puVar4 + iVar11 * 0x10 + 0xc) = 1; + } + else { + *(undefined4 *)(puVar4 + iVar11 * 0x10 + 0xc) = 0; + } + piVar13 = (int *)piStack8[1]; + iVar8 += 4; + iVar11 = *(int *)((int)piVar13 + iVar8); + } while (-1 < iVar11); + iVar11 = *piVar13; + } + do { + bVar2 = false; + bVar3 = false; + iVar8 = 0; + if (-1 < iVar11) { + do { + puVar6 = puVar4 + iVar11 * 0x10; + iVar8 += 4; + if (*(int *)(puVar6 + 0xc) == 1) { + piVar5 = *(int **)(puVar6 + 4); + iVar7 = 0; + iVar11 = *piVar5; + if (-1 < iVar11) { + do { + iVar7 += 4; + if (*(int *)(puVar4 + iVar11 * 0x10 + 0xc) != 1) { + *(undefined4 *)(puVar4 + iVar11 * 0x10 + 0xc) = 1; + piVar5 = *(int **)(puVar6 + 4); + bVar2 = true; + } + iVar11 = *(int *)((int)piVar5 + iVar7); + } while (-1 < iVar11); + piVar13 = (int *)piStack8[1]; + } + } + iVar11 = *(int *)((int)piVar13 + iVar8); + } while (-1 < iVar11); + iVar11 = *piVar13; + } + iVar7 = 0; + iVar8 = iVar11; + while (-1 < iVar8) { + iVar7 += 1; + if (*(int *)(puVar4 + iVar8 * 0x10 + 0xc) != 1) { + bVar3 = true; + break; + } + iVar8 = piVar13[iVar7]; + } + } while ((bVar2) && (bVar3)); + if (bVar3) { + bVar1 = true; + if (DAT_80075d24 == 0) { + iVar11 = piStack8[3]; + } + else { + iVar11 = piStack8[3]; + } + } + else { + iVar11 = piStack8[3]; + } + if (iVar11 == 0) break; + piVar13 = (int *)piStack8[4]; + piStack8 = piStack8 + 3; + } while( true ); } - if (iVar11 == 0) break; - piVar13 = (int *)piStack8[4]; - piStack8 = piStack8 + 3; - } while( true ); } - } - if (!bVar1) { - return; - } - do { + if (!bVar1) { + return; + } + do { // WARNING: Do nothing block with infinite loop - } while( true ); + } while( true ); } @@ -27331,98 +27506,98 @@ LAB_7f006ad4: void alloc_explosion_smoke_casing_scorch_impact_buffers(void) { - int iVar2; - ulonglong uVar1; - int iVar3; - int iVar4; - int iVar5; - undefined2 *puVar6; - - DAT_80040170 = 0; - DAT_80040174 = 0; - DAT_80040800 = 0; - DAT_80040804 = 0; - DAT_80040808 = 0; - dword_80040178 = 1.00000000; - DAT_8007a144 = allocate_bytes_in_bank(0x1740,4); - iVar3 = 0; - iVar4 = 0; - do { - iVar2 = 0; - *(undefined4 *)(DAT_8007a144 + iVar4) = 0; - do { - *(undefined2 *)(DAT_8007a144 + iVar3 * 0x3e0 + iVar2 + 0x1c) = 0; - *(undefined2 *)(DAT_8007a144 + iVar3 * 0x3e0 + iVar2 + 0x34) = 0; - *(undefined2 *)(DAT_8007a144 + iVar3 * 0x3e0 + iVar2 + 0x4c) = 0; - iVar5 = DAT_8007a144 + iVar3 * 0x3e0 + iVar2; - iVar2 += 0x60; - *(undefined2 *)(iVar5 + 100) = 0; - } while (iVar2 != 0x3c0); - iVar3 += 1; - iVar4 += 0x3e0; - } while (iVar3 < 6); - DAT_8007a140 = allocate_bytes_in_bank(0x1fe0,4); - iVar3 = 0; - iVar4 = 0; - do { - *(undefined4 *)(DAT_8007a140 + iVar4) = 0; - *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + 0x14) = 0; - *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + 0x3c) = 0; - iVar2 = 0x50; - do { - *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + iVar2 + 0x14) = 0; - *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + iVar2 + 0x3c) = 0; - *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + iVar2 + 100) = 0; - iVar5 = DAT_8007a140 + iVar3 * 0x198 + iVar2; - iVar2 += 0xa0; - *(undefined4 *)(iVar5 + 0x8c) = 0; - } while (iVar2 != 400); - iVar3 += 1; - iVar4 += 0x198; - } while (iVar3 < 0x14); - uVar1 = get_num_players(); - if (uVar1 == 1) { - DAT_8007a150 = allocate_bytes_in_bank(0x6e0,4); + int iVar1; + s32 sVar2; + int iVar3; + int iVar4; + int iVar5; + undefined2 *puVar6; + + DAT_80040170 = 0; + DAT_80040174 = 0; + DAT_80040800 = 0; + DAT_80040804 = 0; + DAT_80040808 = 0; + dword_80040178 = 1.00000000; + DAT_8007a144 = mempAllocBytesInBank(0x1740,'\x04'); iVar3 = 0; - do { - *(undefined2 *)(DAT_8007a150 + iVar3) = 0xffff; - *(undefined2 *)(DAT_8007a150 + iVar3 + 0x58) = 0xffff; - *(undefined2 *)(DAT_8007a150 + iVar3 + 0xb0) = 0xffff; - iVar4 = DAT_8007a150 + iVar3; - iVar3 += 0x160; - *(undefined2 *)(iVar4 + 0x108) = 0xffff; - } while (iVar3 != 0x6e0); - } - DAT_8007a154 = allocate_bytes_in_bank(8000,4); - iVar3 = 0; - do { - puVar6 = (undefined2 *)(DAT_8007a154 + iVar3); - iVar3 += 0x50; - *puVar6 = 0xffff; - } while (iVar3 < 8000); - uVar1 = get_num_players(); - DAT_8007a148 = 200 / (int)uVar1; - if (uVar1 == 0) { - trap(0x1c00); - } - if ((uVar1 == 0xffffffffffffffff) && (false)) { - trap(0x1800); - } - iVar3 = proc_7F0BDF04(); - if ((iVar3 == 0x1d) || (iVar3 = proc_7F0BDF04(), iVar3 == 0x1e)) { - DAT_8007a148 >>= 1; - } - DAT_8007a14c = allocate_bytes_in_bank(DAT_8007a148 * 0x78 + 0xfU & 0xfffffff0,4); - iVar3 = 0; - if (0 < DAT_8007a148) { iVar4 = 0; do { - iVar3 += 1; - *(undefined4 *)(DAT_8007a14c + iVar4) = 0; - iVar4 += 0x78; - } while (iVar3 < DAT_8007a148); - } - return; + iVar1 = 0; + *(undefined4 *)(DAT_8007a144 + iVar4) = 0; + do { + *(undefined2 *)(DAT_8007a144 + iVar3 * 0x3e0 + iVar1 + 0x1c) = 0; + *(undefined2 *)(DAT_8007a144 + iVar3 * 0x3e0 + iVar1 + 0x34) = 0; + *(undefined2 *)(DAT_8007a144 + iVar3 * 0x3e0 + iVar1 + 0x4c) = 0; + iVar5 = DAT_8007a144 + iVar3 * 0x3e0 + iVar1; + iVar1 += 0x60; + *(undefined2 *)(iVar5 + 100) = 0; + } while (iVar1 != 0x3c0); + iVar3 += 1; + iVar4 += 0x3e0; + } while (iVar3 < 6); + DAT_8007a140 = mempAllocBytesInBank(0x1fe0,'\x04'); + iVar3 = 0; + iVar4 = 0; + do { + *(undefined4 *)(DAT_8007a140 + iVar4) = 0; + *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + 0x14) = 0; + *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + 0x3c) = 0; + iVar1 = 0x50; + do { + *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + iVar1 + 0x14) = 0; + *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + iVar1 + 0x3c) = 0; + *(undefined4 *)(DAT_8007a140 + iVar3 * 0x198 + iVar1 + 100) = 0; + iVar5 = DAT_8007a140 + iVar3 * 0x198 + iVar1; + iVar1 += 0xa0; + *(undefined4 *)(iVar5 + 0x8c) = 0; + } while (iVar1 != 400); + iVar3 += 1; + iVar4 += 0x198; + } while (iVar3 < 0x14); + sVar2 = get_num_players(); + if (sVar2 == 1) { + DAT_8007a150 = mempAllocBytesInBank(0x6e0,'\x04'); + iVar3 = 0; + do { + *(undefined2 *)(DAT_8007a150 + iVar3) = 0xffff; + *(undefined2 *)(DAT_8007a150 + iVar3 + 0x58) = 0xffff; + *(undefined2 *)(DAT_8007a150 + iVar3 + 0xb0) = 0xffff; + iVar4 = DAT_8007a150 + iVar3; + iVar3 += 0x160; + *(undefined2 *)(iVar4 + 0x108) = 0xffff; + } while (iVar3 != 0x6e0); + } + DAT_8007a154 = mempAllocBytesInBank(8000,'\x04'); + iVar3 = 0; + do { + puVar6 = (undefined2 *)(DAT_8007a154 + iVar3); + iVar3 += 0x50; + *puVar6 = 0xffff; + } while (iVar3 < 8000); + sVar2 = get_num_players(); + DAT_8007a148 = 200 / sVar2; + if (sVar2 == 0) { + trap(0x1c00); + } + if ((sVar2 == -1) && (false)) { + trap(0x1800); + } + iVar3 = proc_7F0BDF04(); + if ((iVar3 == 0x1d) || (iVar3 = proc_7F0BDF04(), iVar3 == 0x1e)) { + DAT_8007a148 >>= 1; + } + DAT_8007a14c = mempAllocBytesInBank(DAT_8007a148 * 0x78 + 0xfU & 0xfffffff0,'\x04'); + iVar3 = 0; + if (0 < DAT_8007a148) { + iVar4 = 0; + do { + iVar3 += 1; + *(undefined4 *)(DAT_8007a14c + iVar4) = 0; + iVar4 += 0x78; + } while (iVar3 < DAT_8007a148); + } + return; } @@ -27430,34 +27605,34 @@ void alloc_explosion_smoke_casing_scorch_impact_buffers(void) void proc_7F007180(void) { - int iVar2; - ulonglong uVar1; - int iVar3; - - iVar2 = proc_7F0BDF04(); - uVar1 = get_num_players(); - DAT_8007a160 = 200 / (int)uVar1; - if (uVar1 == 0) { - trap(0x1c00); - } - if ((uVar1 == 0xffffffffffffffff) && (false)) { - trap(0x1800); - } - if ((iVar2 == 0x1d) || (iVar2 == 0x1e)) { - DAT_8007a160 >>= 1; - } - DAT_8007a164 = allocate_bytes_in_bank(DAT_8007a160 * 0x68 + 0xfU & 0xfffffff0,4); - iVar2 = 0; - if (0 < DAT_8007a160) { - iVar3 = 0; - do { - iVar2 += 1; - *(undefined4 *)(DAT_8007a164 + iVar3) = 0; - iVar3 += 0x68; - } while (iVar2 < DAT_8007a160); - } - dword_80040940 = 0; - return; + int iVar1; + s32 sVar2; + int iVar3; + + iVar1 = proc_7F0BDF04(); + sVar2 = get_num_players(); + DAT_8007a160 = 200 / sVar2; + if (sVar2 == 0) { + trap(0x1c00); + } + if ((sVar2 == -1) && (false)) { + trap(0x1800); + } + if ((iVar1 == 0x1d) || (iVar1 == 0x1e)) { + DAT_8007a160 >>= 1; + } + DAT_8007a164 = mempAllocBytesInBank(DAT_8007a160 * 0x68 + 0xfU & 0xfffffff0,'\x04'); + iVar1 = 0; + if (0 < DAT_8007a160) { + iVar3 = 0; + do { + iVar1 += 1; + *(undefined4 *)(DAT_8007a164 + iVar3) = 0; + iVar3 += 0x68; + } while (iVar1 < DAT_8007a160); + } + dword_80040940 = 0; + return; } @@ -27465,10 +27640,10 @@ void proc_7F007180(void) void proc_7F007290(void) { - FLOAT_80079e80 = 0.00000000; - FLOAT_80079e84 = 0.00000000; - FLOAT_80079e88 = 0.00000000; - return; + FLOAT_80079e80 = 0.00000000; + FLOAT_80079e84 = 0.00000000; + FLOAT_80079e88 = 0.00000000; + return; } @@ -27476,21 +27651,21 @@ void proc_7F007290(void) void proc_7F0072B0(void) { - undefined *puVar1; - - DAT_80079e30 = 0; - DAT_80079e31 = 0; - DAT_80079e32 = 0; - puVar1 = &DAT_80079e33; - do { - puVar1 = puVar1 + 4; - puVar1[1] = 0; - puVar1[2] = 0; - puVar1[3] = 0; - *puVar1 = 0; - puVar1 = puVar1; - } while (puVar1 != &DAT_80079e7b); - return; + undefined *puVar1; + + cheatl_ARRAY_80079e30[0] = 0; + cheatl_ARRAY_80079e30[1] = 0; + cheatl_ARRAY_80079e30[2] = 0; + puVar1 = cheatl_ARRAY_80079e30 + 3; + do { + puVar1 = puVar1 + 4; + puVar1[1] = 0; + puVar1[2] = 0; + puVar1[3] = 0; + *puVar1 = 0; + puVar1 = puVar1; + } while (puVar1 != &DAT_80079e7b); + return; } @@ -27498,9 +27673,9 @@ void proc_7F0072B0(void) void disable_onscreen_cheat_text(void) { - pPlayer->something_with_cheat_text = '\0'; - pPlayer->can_display_cheat_text = '\0'; - return; + pPlayer->something_with_cheat_text = '\0'; + pPlayer->can_display_cheat_text = '\0'; + return; } @@ -27508,20 +27683,20 @@ void disable_onscreen_cheat_text(void) void set_mt_tex_alloc(void) { - byte *__nptr; - long lVar1; - uint uVar2; - - DAT_8008d090 = 0; - __nptr = check_token(1,(byte *)"-mt"); - if (__nptr != NULL) { + byte *__nptr; + long lVar1; + uint uVar2; + + DAT_8008d090 = 0; __nptr = check_token(1,(byte *)"-mt"); - lVar1 = strtol((char *)__nptr,NULL,0); - bytes = lVar1 << 10; - } - uVar2 = allocate_bytes_in_bank(bytes,4); - proc_7F0CBAF4(&ptr_texture_alloc_start,uVar2,bytes); - return; + if (__nptr != NULL) { + __nptr = check_token(1,(byte *)"-mt"); + lVar1 = strtol((char *)__nptr,NULL,0); + bytes = lVar1 << 10; + } + uVar2 = mempAllocBytesInBank(bytes,'\x04'); + proc_7F0CBAF4(&ptr_texture_alloc_start,uVar2,bytes); + return; } @@ -27529,29 +27704,31 @@ void set_mt_tex_alloc(void) void unload_loop_all_guards(void) { - int iVar1; - int guardcount; - int iVar2; - int curguard; - - curguard = 0; - if (0 < num_guards) { - iVar2 = 0; - guardcount = num_guards; - do { - iVar1 = (int)&ptr_guard_data->chrnum + iVar2; - if (*(int *)(iVar1 + 0x1c) != 0) { - disable_sounds_attached_to_player_then_something(*(int *)(iVar1 + 0x18)); - proc_7F03A538(*(int *)((int)&ptr_guard_data->POSdata_pointer + iVar2)); - unset_stateflag_0x04_for_posdata(*(int *)((int)&ptr_guard_data->POSdata_pointer + iVar2)); - set_last_obj_pos_data(*(object_standard **)((int)&ptr_guard_data->POSdata_pointer + iVar2)); + int iVar1; + int guardcount; + int iVar2; + int curguard; + + curguard = 0; + if (0 < num_guards) { + iVar2 = 0; guardcount = num_guards; - } - curguard += 1; - iVar2 += 0x1dc; - } while (curguard < guardcount); - } - return; + do { + iVar1 = (int)&ptr_guard_data->chrnum + iVar2; + if (*(int *)(iVar1 + 0x1c) != 0) { + disable_sounds_attached_to_player_then_something(*(int *)(iVar1 + 0x18)); + proc_7F03A538(*(int *)((int)&ptr_guard_data->POSdata_pointer + iVar2)); + unset_stateflag_0x04_for_posdata + (*(int *)((int)&ptr_guard_data->POSdata_pointer + iVar2)); + set_last_obj_pos_data + (*(object_standard **)((int)&ptr_guard_data->POSdata_pointer + iVar2)); + guardcount = num_guards; + } + curguard += 1; + iVar2 += 0x1dc; + } while (curguard < guardcount); + } + return; } @@ -27559,21 +27736,21 @@ void unload_loop_all_guards(void) void unload_loop_all_sfx(void) { - ulonglong uVar1; - int iVar2; - sfx_register_struct *psVar3; - - psVar3 = &sfx_related; - iVar2 = sfx_related.field_0x0; - while( true ) { - if ((iVar2 != 0) && (uVar1 = music_related_26(iVar2), uVar1 != 0)) { - music_related_28(psVar3->field_0x0); + ulonglong uVar1; + ALLink_s *pAVar2; + sfx_register_struct *psVar3; + + psVar3 = &sfx_related; + pAVar2 = sfx_related.field_0x0; + while( true ) { + if ((pAVar2 != NULL) && (uVar1 = sfxGetArg0Unk3F(pAVar2), uVar1 != 0)) { + sfxDeactivate(psVar3->field_0x0); + } + psVar3 = psVar3 + 1; + if (psVar3 == (sfx_register_struct *)&ptr_list_object_lookup_indices) break; + pAVar2 = (ALLink_s *)psVar3->field_0x0; } - psVar3 = psVar3 + 1; - if (psVar3 == (sfx_register_struct *)&ptr_list_object_lookup_indices) break; - iVar2 = psVar3->field_0x0; - } - return; + return; } @@ -27581,9 +27758,9 @@ void unload_loop_all_sfx(void) void unload_alarms_something(void) { - stop_alarm(); - proc_7F055EF8(); - return; + stop_alarm(); + proc_7F055EF8(); + return; } @@ -27591,47 +27768,47 @@ void unload_alarms_something(void) void cleanupObjects(void) { - char cVar1; - undefined8 uVar2; - int *object; - - if (ptr_setup_objects != NULL) { - cVar1 = ptr_setup_objects[3]; - object = (int *)ptr_setup_objects; - while (cVar1 != '0') { - if (true) { - switch(cVar1) { - case '\x01': - case '\x03': - case '\x04': - case '\x05': - case '\x06': - case '\a': - case '\b': - case '\n': - case '\v': - case '\f': - case '\r': - case '\x11': - case '\x14': - case '\x15': - case '$': - case '\'': - case '(': - case ')': - case '*': - case '+': - case '-': - case '/': - proc_7F041024((int)object,1); + char cVar1; + u32 uVar2; + object_standard *object; + + if (ptr_setup_objects != NULL) { + cVar1 = ptr_setup_objects->type; + object = ptr_setup_objects; + while (cVar1 != '0') { + if (true) { + switch(cVar1) { + case '\x01': + case '\x03': + case '\x04': + case '\x05': + case '\x06': + case '\a': + case '\b': + case '\n': + case '\v': + case '\f': + case '\r': + case '\x11': + case '\x14': + case '\x15': + case '$': + case '\'': + case '(': + case ')': + case '*': + case '+': + case '-': + case '/': + proc_7F041024(object,1); + } + } + uVar2 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar2 * 2); + cVar1 = object->type; } - } - uVar2 = get_size_of_setup_object_type(object); - object = object + (int)uVar2; - cVar1 = *(char *)((int)object + 3); } - } - return; + return; } @@ -27639,80 +27816,80 @@ void cleanupObjects(void) void cleanupObjectives(void) { - int iVar1; - int iVar2; - int *piVar3; - - piVar3 = objective_ptrs + 2; - iVar2 = 8; - if (((objective_ptrs[0] != 0) && ((*(byte *)(objective_ptrs[0] + 0xe) & 1) != 0)) && - (DAT_80075d58 != 2)) { - DAT_80075d58 = 1; - } - if (((objective_ptrs[1] != 0) && ((*(byte *)(objective_ptrs[1] + 0xe) & 1) != 0)) && - (DAT_80075d5c != 2)) { - DAT_80075d5c = 1; - } - do { - if (*piVar3 == 0) { - iVar1 = piVar3[1]; + watchMenuObjectiveText *pwVar1; + int iVar2; + watchMenuObjectiveText **ppwVar3; + + ppwVar3 = objective_ptrs + 2; + iVar2 = 8; + if (((objective_ptrs[0] != NULL) && + ((*(byte *)((int)&objective_ptrs[0]->nextentry + 2) & 1) != 0)) && (DAT_80075d58 != 2)) { + DAT_80075d58 = 1; } - else { - if ((*(byte *)(*piVar3 + 0xe) & 1) == 0) { - iVar1 = piVar3[1]; - } - else { - if (*(int *)((int)&DAT_80075d58 + iVar2) == 2) { - iVar1 = piVar3[1]; + if (((objective_ptrs[1] != NULL) && + ((*(byte *)((int)&objective_ptrs[1]->nextentry + 2) & 1) != 0)) && (DAT_80075d5c != 2)) { + DAT_80075d5c = 1; + } + do { + if (*ppwVar3 == NULL) { + pwVar1 = ppwVar3[1]; } else { - *(int *)((int)&DAT_80075d58 + iVar2) = 1; - iVar1 = piVar3[1]; + if ((*(byte *)((int)&(*ppwVar3)->nextentry + 2) & 1) == 0) { + pwVar1 = ppwVar3[1]; + } + else { + if (*(int *)((int)&DAT_80075d58 + iVar2) == 2) { + pwVar1 = ppwVar3[1]; + } + else { + *(int *)((int)&DAT_80075d58 + iVar2) = 1; + pwVar1 = ppwVar3[1]; + } + } } - } - } - if (iVar1 == 0) { - iVar1 = piVar3[2]; - } - else { - if ((*(byte *)(iVar1 + 0xe) & 1) == 0) { - iVar1 = piVar3[2]; - } - else { - if (*(int *)((int)&DAT_80075d5c + iVar2) == 2) { - iVar1 = piVar3[2]; + if (pwVar1 == NULL) { + pwVar1 = ppwVar3[2]; } else { - *(undefined4 *)((int)&DAT_80075d5c + iVar2) = 1; - iVar1 = piVar3[2]; + if ((*(byte *)((int)&pwVar1->nextentry + 2) & 1) == 0) { + pwVar1 = ppwVar3[2]; + } + else { + if (*(int *)((int)&DAT_80075d5c + iVar2) == 2) { + pwVar1 = ppwVar3[2]; + } + else { + *(undefined4 *)((int)&DAT_80075d5c + iVar2) = 1; + pwVar1 = ppwVar3[2]; + } + } } - } - } - if (iVar1 == 0) { - iVar1 = piVar3[3]; - } - else { - if ((*(byte *)(iVar1 + 0xe) & 1) == 0) { - iVar1 = piVar3[3]; - } - else { - if (*(int *)((int)&DAT_80075d60 + iVar2) == 2) { - iVar1 = piVar3[3]; + if (pwVar1 == NULL) { + pwVar1 = ppwVar3[3]; } else { - *(undefined4 *)((int)&DAT_80075d60 + iVar2) = 1; - iVar1 = piVar3[3]; + if ((*(byte *)((int)&pwVar1->nextentry + 2) & 1) == 0) { + pwVar1 = ppwVar3[3]; + } + else { + if (*(int *)((int)&DAT_80075d60 + iVar2) == 2) { + pwVar1 = ppwVar3[3]; + } + else { + *(undefined4 *)((int)&DAT_80075d60 + iVar2) = 1; + pwVar1 = ppwVar3[3]; + } + } } - } - } - piVar3 = piVar3 + 4; - if (((iVar1 != 0) && ((*(byte *)(iVar1 + 0xe) & 1) != 0)) && - (*(int *)((int)&DAT_80075d64 + iVar2) != 2)) { - *(undefined4 *)((int)&DAT_80075d64 + iVar2) = 1; - } - iVar2 += 0x10; - } while (piVar3 != &DAT_80075d58); - return; + ppwVar3 = ppwVar3 + 4; + if (((pwVar1 != NULL) && ((*(byte *)((int)&pwVar1->nextentry + 2) & 1) != 0)) && + (*(int *)((int)&DAT_80075d64 + iVar2) != 2)) { + *(undefined4 *)((int)&DAT_80075d64 + iVar2) = 1; + } + iVar2 += 0x10; + } while (ppwVar3 != (watchMenuObjectiveText **)&DAT_80075d58); + return; } @@ -27720,15 +27897,15 @@ void cleanupObjectives(void) void unload_music_related(void) { - ulonglong uVar1; - - if ((dword_80036458 != 0) && (uVar1 = music_related_26(dword_80036458), uVar1 != 0)) { - music_related_28(dword_80036458); - } - if ((dword_8003645C != 0) && (uVar1 = music_related_26(dword_8003645C), uVar1 != 0)) { - music_related_28(dword_8003645C); - } - return; + ulonglong uVar1; + + if ((dword_80036458 != NULL) && (uVar1 = sfxGetArg0Unk3F(dword_80036458), uVar1 != 0)) { + sfxDeactivate((int)dword_80036458); + } + if ((dword_8003645C != NULL) && (uVar1 = sfxGetArg0Unk3F(dword_8003645C), uVar1 != 0)) { + sfxDeactivate((int)dword_8003645C); + } + return; } @@ -27736,25 +27913,25 @@ void unload_music_related(void) void proc_7F007770(void) { - ulonglong uVar1; - u32 playernum; - ulonglong uVar2; - undefined4 uStack8; - undefined4 uStack4; - - uVar1 = get_num_players(); - playernum = get_cur_playernum(); - uVar2 = 0; - if (0 < (longlong)uVar1) { - do { - set_cur_player((int)uVar2); - proc_7F08DB08(&uStack4,&uStack8); - store_favorite_weapon_current_player(uStack4,uStack8); - uVar2 = SEXT48((int)uVar2 + 1); - } while (uVar2 != uVar1); - } - set_cur_player(playernum); - return; + PLAYER_ID PVar1; + PLAYER_ID playernum; + PLAYER_ID playernum_00; + undefined4 uStack8; + undefined4 uStack4; + + PVar1 = get_num_players(); + playernum = get_cur_playernum(); + playernum_00 = PLAYER1; + if (0 < (int)PVar1) { + do { + set_cur_player(playernum_00); + proc_7F08DB08(&uStack4,&uStack8); + store_favorite_weapon_current_player(uStack4,uStack8); + playernum_00 += PLAYER2; + } while (playernum_00 != PVar1); + } + set_cur_player(playernum); + return; } @@ -27762,35 +27939,35 @@ void proc_7F007770(void) void unload_loop_all_objects(void) { - int iVar1; - - DAT_80040170 = 0; - video_related_9(0.00000000); - iVar1 = 0; - if (DAT_8007a144 != 0) { - do { - if (*(int *)(DAT_8007a144 + iVar1) != 0) { - proc_7F03A538(*(int *)(DAT_8007a144 + iVar1)); - unset_stateflag_0x04_for_posdata(*(int *)(DAT_8007a144 + iVar1)); - set_last_obj_pos_data(*(object_standard **)(DAT_8007a144 + iVar1)); - *(undefined4 *)(DAT_8007a144 + iVar1) = 0; - } - iVar1 += 0x3e0; - } while (iVar1 != 0x1740); - } - iVar1 = 0; - if (DAT_8007a140 != 0) { - do { - if (*(int *)(DAT_8007a140 + iVar1) != 0) { - proc_7F03A538(*(int *)(DAT_8007a140 + iVar1)); - unset_stateflag_0x04_for_posdata(*(int *)(DAT_8007a140 + iVar1)); - set_last_obj_pos_data(*(object_standard **)(DAT_8007a140 + iVar1)); - *(undefined4 *)(DAT_8007a140 + iVar1) = 0; - } - iVar1 += 0x198; - } while (iVar1 != 0x1fe0); - } - return; + int iVar1; + + DAT_80040170 = 0; + video_related_9(0.00000000); + iVar1 = 0; + if (DAT_8007a144 != 0) { + do { + if (*(int *)(DAT_8007a144 + iVar1) != 0) { + proc_7F03A538(*(int *)(DAT_8007a144 + iVar1)); + unset_stateflag_0x04_for_posdata(*(int *)(DAT_8007a144 + iVar1)); + set_last_obj_pos_data(*(object_standard **)(DAT_8007a144 + iVar1)); + *(undefined4 *)(DAT_8007a144 + iVar1) = 0; + } + iVar1 += 0x3e0; + } while (iVar1 != 0x1740); + } + iVar1 = 0; + if (DAT_8007a140 != 0) { + do { + if (*(int *)(DAT_8007a140 + iVar1) != 0) { + proc_7F03A538(*(int *)(DAT_8007a140 + iVar1)); + unset_stateflag_0x04_for_posdata(*(int *)(DAT_8007a140 + iVar1)); + set_last_obj_pos_data(*(object_standard **)(DAT_8007a140 + iVar1)); + *(undefined4 *)(DAT_8007a140 + iVar1) = 0; + } + iVar1 += 0x198; + } while (iVar1 != 0x1fe0); + } + return; } @@ -27798,19 +27975,19 @@ void unload_loop_all_objects(void) void unload_something_7f007920(void) { - int iVar1; - int iVar2; - - iVar1 = 0; - iVar2 = 0; - if (0 < DAT_8007a160) { - do { - iVar1 += 1; - *(undefined4 *)(DAT_8007a164 + iVar2) = 0; - iVar2 += 0x68; - } while (iVar1 < DAT_8007a160); - } - return; + int iVar1; + int iVar2; + + iVar1 = 0; + iVar2 = 0; + if (0 < DAT_8007a160) { + do { + iVar1 += 1; + *(undefined4 *)(DAT_8007a164 + iVar2) = 0; + iVar2 += 0x68; + } while (iVar1 < DAT_8007a160); + } + return; } @@ -27818,7 +27995,7 @@ void unload_something_7f007920(void) void unload_removed_7f007970(void) { - return; + return; } @@ -27826,37 +28003,38 @@ void unload_removed_7f007970(void) void unload_music_related_7F007980(void) { - int iVar1; - ulonglong uVar2; - int iVar3; - int iVar4; - Player **ppPVar5; - longlong lVar6; - Player *pPVar7; - - lVar6 = 0; - uVar2 = get_num_players(); - if (0 < (longlong)uVar2) { - ppPVar5 = &ptr_BONDdata_p1; - do { - iVar4 = 0; - pPVar7 = *ppPVar5; - while( true ) { - iVar3 = (int)&pPVar7->unknown + iVar4; - iVar1 = *(int *)(iVar3 + 0xa44); - if ((iVar1 != 0) && (uVar2 = music_related_26(iVar1), uVar2 != 0)) { - music_related_28(*(int *)(iVar3 + 0xa44)); - } - iVar4 += 0x3a8; - if (iVar4 == 0x750) break; - pPVar7 = *ppPVar5; - } - lVar6 = (longlong)((int)lVar6 + 1); - ppPVar5 = ppPVar5 + 1; - uVar2 = get_num_players(); - } while (lVar6 < (longlong)uVar2); - } - return; + ALLink_s *pAVar1; + s32 sVar3; + ulonglong uVar2; + int iVar4; + int iVar5; + Player **ppPVar6; + int iVar7; + Player *pPVar8; + + iVar7 = 0; + sVar3 = get_num_players(); + if (0 < sVar3) { + ppPVar6 = ptr_BONDdata_p1; + do { + iVar5 = 0; + pPVar8 = *ppPVar6; + while( true ) { + iVar4 = (int)&pPVar8->unknown + iVar5; + pAVar1 = *(ALLink_s **)(iVar4 + 0xa44); + if ((pAVar1 != NULL) && (uVar2 = sfxGetArg0Unk3F(pAVar1), uVar2 != 0)) { + sfxDeactivate(*(int *)(iVar4 + 0xa44)); + } + iVar5 += 0x3a8; + if (iVar5 == 0x750) break; + pPVar8 = *ppPVar6; + } + iVar7 += 1; + ppPVar6 = ppPVar6 + 1; + sVar3 = get_num_players(); + } while (iVar7 < sVar3); + } + return; } @@ -27864,32 +28042,32 @@ void unload_music_related_7F007980(void) undefined4 * something_with_gunbarrel_and_rareware_logo_matrix_manip(undefined4 *displaylist) { - undefined4 *puVar1; - u32 uVar2; - float x; - float x_00; - float y; - float y_00; - - guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2),x,y, - num_obj_position_data_entries); - guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1),x_00,y_00,DAT_8006957c); - *displaylist = 0x6000000; - displaylist[1] = 0x1000000; - puVar1 = insert_imageDL(displaylist + 2); - puVar1 = proc_7F01C1A4(puVar1); - *puVar1 = 0xfcffffff; - puVar1[1] = 0xfffdf6fb; - puVar1[2] = 0xfa000000; - puVar1[3] = 0xe6e6e600; - puVar1[4] = 0x6000000; - puVar1[5] = DAT_80069554 + -0x80000000; - puVar1[6] = 0x1020040; - uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1)); - puVar1[7] = uVar2; - puVar1[8] = 0x6000000; - puVar1[9] = DAT_80069554 + -0x80000000; - return puVar1 + 10; + undefined4 *puVar1; + u32 uVar2; + float in_f12; + float x; + float in_f14; + float y; + + guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2),in_f12,in_f14, + num_obj_position_data_entries); + guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1),x,y,DAT_8006957c); + *displaylist = 0x6000000; + displaylist[1] = 0x1000000; + puVar1 = insert_imageDL((Gfx *)(displaylist + 2)); + puVar1 = proc_7F01C1A4(puVar1); + *puVar1 = 0xfcffffff; + puVar1[1] = 0xfffdf6fb; + puVar1[2] = 0xfa000000; + puVar1[3] = 0xe6e6e600; + puVar1[4] = 0x6000000; + puVar1[5] = DAT_80069554 + -0x80000000; + puVar1[6] = 0x1020040; + uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1)); + puVar1[7] = uVar2; + puVar1[8] = 0x6000000; + puVar1[9] = DAT_80069554 + -0x80000000; + return puVar1 + 10; } @@ -27897,27 +28075,27 @@ undefined4 * something_with_gunbarrel_and_rareware_logo_matrix_manip(undefined4 undefined4 * insert_sight_backdrop_eye_intro(undefined4 *param_1) { - undefined4 *puVar1; - u32 uVar2; - float x; - float x_00; - float y; - float y_00; - - guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2),x,y, - num_obj_position_data_entries + 768.00000000); - guScale((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1),x_00,y_00,2.70000005); - param_1[1] = 0x1000000; - *param_1 = 0x6000000; - param_1[3] = 0x1000040; - param_1[2] = 0x6000000; - puVar1 = proc_7F01C1A4(param_1 + 4); - *puVar1 = 0x1000040; - uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1)); - puVar1[1] = uVar2; - puVar1[2] = 0x6000000; - puVar1[3] = DAT_80069554 + -0x80000000; - return puVar1 + 4; + undefined4 *puVar1; + u32 uVar2; + float in_f12; + float x; + float in_f14; + float y; + + guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2),in_f12,in_f14, + num_obj_position_data_entries + 768.00000000); + guScale((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1),x,y,2.70000005); + param_1[1] = 0x1000000; + *param_1 = 0x6000000; + param_1[3] = 0x1000040; + param_1[2] = 0x6000000; + puVar1 = proc_7F01C1A4(param_1 + 4); + *puVar1 = 0x1000040; + uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_gunbarrel_1)); + puVar1[1] = uVar2; + puVar1[2] = 0x6000000; + puVar1[3] = DAT_80069554 + -0x80000000; + return puVar1 + 4; } @@ -27925,20 +28103,21 @@ undefined4 * insert_sight_backdrop_eye_intro(undefined4 *param_1) undefined4 * proc_7F007CC8(undefined4 *param_1,int param_2,int *param_3,int *param_4) { - undefined4 *puVar1; - - *param_1 = 0xb900031d; - param_1[1] = 0xf0a4000; - param_1[2] = 0xba001402; - param_1[3] = 0; - param_1[4] = 0xba001301; - param_1[5] = 0; - param_1[6] = 0xba000c02; - param_1[7] = 0; - param_1[8] = 0xe7000000; - param_1[9] = 0; - puVar1 = proc_7F01B240(param_1 + 10,DAT_8006958c + -0x80000000,(longlong)param_2,param_3,param_4); - return puVar1; + undefined4 *puVar1; + + *param_1 = 0xb900031d; + param_1[1] = 0xf0a4000; + param_1[2] = 0xba001402; + param_1[3] = 0; + param_1[4] = 0xba001301; + param_1[5] = 0; + param_1[6] = 0xba000c02; + param_1[7] = 0; + param_1[8] = 0xe7000000; + param_1[9] = 0; + puVar1 = proc_7F01B240(param_1 + 10,DAT_8006958c + -0x80000000,(longlong)param_2,param_3,param_4 + ); + return puVar1; } @@ -27946,31 +28125,31 @@ undefined4 * proc_7F007CC8(undefined4 *param_1,int param_2,int *param_3,int *par undefined4 * insert_sniper_sight_eye_intro(undefined4 *param_1) { - undefined4 *puVar1; - short sVar2; - float fVar3; - int iStack24; - undefined4 uStack20; - undefined4 uStack16; - int iStack12; - undefined4 uStack8; - undefined4 uStack4; - - iStack12 = DAT_8002a7dc; - uStack8 = DAT_8002a7e0; - uStack4 = DAT_8002a7e4; - iStack24 = dword_8002A7E8; - uStack20 = DAT_8002a7ec; - uStack16 = DAT_8002a7f0; - *param_1 = 0x6000000; - param_1[1] = 0x1000000; - puVar1 = insert_imageDL(param_1 + 2); - puVar1[1] = 0xfffff7fb; - *puVar1 = 0xfc11fe23; - sVar2 = get_video2_settings_txtClipW(); - fVar3 = truncf(((float)(int)sVar2 * num_obj_position_data_entries) / 1280.00000000); - puVar1 = proc_7F007CC8(puVar1 + 2,(int)fVar3,&iStack12,&iStack24); - return puVar1; + undefined4 *puVar1; + short sVar2; + float fVar3; + int iStack24; + undefined4 uStack20; + undefined4 uStack16; + int iStack12; + undefined4 uStack8; + undefined4 uStack4; + + iStack12 = DAT_8002a7dc; + uStack8 = DAT_8002a7e0; + uStack4 = DAT_8002a7e4; + iStack24 = dword_8002A7E8; + uStack20 = DAT_8002a7ec; + uStack16 = DAT_8002a7f0; + *param_1 = 0x6000000; + param_1[1] = 0x1000000; + puVar1 = insert_imageDL((Gfx *)(param_1 + 2)); + puVar1[1] = 0xfffff7fb; + *puVar1 = 0xfc11fe23; + sVar2 = get_video2_settings_txtClipW(); + fVar3 = truncf(((float)(int)sVar2 * num_obj_position_data_entries) / 1280.00000000); + puVar1 = proc_7F007CC8(puVar1 + 2,(int)fVar3,&iStack12,&iStack24); + return puVar1; } @@ -27978,24 +28157,24 @@ undefined4 * insert_sniper_sight_eye_intro(undefined4 *param_1) undefined4 * proc_7F007E70(undefined4 *param_1,uint param_2) { - undefined4 *puVar1; - short sVar2; - short sVar3; - - puVar1 = proc_7F01C1A4(param_1); - *puVar1 = 0xb900031d; - puVar1[1] = 0x504340; - puVar1[2] = 0xfcffffff; - puVar1[3] = 0xfffdf6fb; - puVar1[4] = 0xfa000000; - puVar1[5] = param_2 & 0xff; - puVar1[6] = 0xba000602; - puVar1[7] = 0; - sVar2 = get_video2_settings_txtClipW(); - sVar3 = get_video2_settings_txtClipH(); - puVar1[8] = ((int)sVar3 & 0x3ffU) << 2 | 0xf6000000 | ((int)sVar2 & 0x3ffU) << 0xe; - puVar1[9] = 0; - return puVar1 + 10; + undefined4 *puVar1; + short sVar2; + short sVar3; + + puVar1 = proc_7F01C1A4(param_1); + *puVar1 = 0xb900031d; + puVar1[1] = 0x504340; + puVar1[2] = 0xfcffffff; + puVar1[3] = 0xfffdf6fb; + puVar1[4] = 0xfa000000; + puVar1[5] = param_2 & 0xff; + puVar1[6] = 0xba000602; + puVar1[7] = 0; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1[8] = ((int)sVar3 & 0x3ffU) << 2 | 0xf6000000 | ((int)sVar2 & 0x3ffU) << 0xe; + puVar1[9] = 0; + return puVar1 + 10; } @@ -28005,161 +28184,163 @@ undefined4 * proc_7F007E70(undefined4 *param_1,uint param_2) undefined4 proc_7F007F30(void) { - ushort **ppuVar1; - int *piVar2; - int **in_v0_lo; - float *pfVar3; - int *piVar4; - uint *puVar5; - undefined4 in_a0_lo; - int in_a1_lo; - uint extraout_a1_lo; - ushort *partdesc; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 extraout_a2_lo_03; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - undefined4 extraout_a3_lo_02; - undefined4 extraout_a3_lo_03; - int **ppiVar6; - int iVar7; - float **ppfVar8; - float **ppfVar9; - float **ppfVar10; - float **ppfVar11; - int iVar13; - longlong lVar12; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float in_f14; - float extraout_f14; - float extraout_f14_00; - undefined4 auStack216 [16]; - undefined4 auStack152 [21]; - float *pfStack68; - undefined4 uStack64; - undefined4 uStack60; - undefined4 uStack56; - int **ppiStack52; - undefined4 uStack20; - - ppfVar10 = (float **)&buffer_8002a7fc; - ppfVar8 = &pfStack68; - do { - ppfVar11 = ppfVar10 + 3; - ppfVar9 = ppfVar8 + 3; - *ppfVar8 = *ppfVar10; - ppfVar8[1] = ppfVar10[1]; - ppfVar8[2] = ppfVar10[2]; - ppfVar10 = ppfVar11; - ppfVar8 = ppfVar9; - } while (ppfVar11 != (float **)&DWORD_8002a838); - piVar4 = NULL; - iVar13 = 0; - *(dword *)ppfVar9 = DWORD_8002a838; - piVar2 = NULL; - if (0 < in_a1_lo) { + ushort **ppuVar1; + undefined4 uVar2; + undefined4 *in_v0_lo; + float *pfVar3; + int *piVar4; + uint *puVar5; + undefined4 in_a0_lo; + int in_a1_lo; + uint extraout_a1_lo; + ushort *partdesc; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a2_lo_02; + undefined4 extraout_a2_lo_03; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + undefined4 extraout_a3_lo_02; + undefined4 extraout_a3_lo_03; + undefined4 *puVar6; + int iVar7; + float **ppfVar8; + float **ppfVar9; + float **ppfVar10; + float **ppfVar11; + int iVar13; + longlong lVar12; + undefined4 uVar14; + float in_f12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float in_f14; + float extraout_f14; + float extraout_f14_00; + float afStack216 [16]; + float afStack152 [21]; + float *pfStack68; + undefined4 uStack64; + undefined4 uStack60; + undefined4 uStack56; + float *pfStack52; + undefined4 uStack20; + + ppfVar10 = (float **)&buffer_8002a7fc; + ppfVar8 = &pfStack68; do { - piVar4 = piVar2; - ppiVar6 = (int **)((int)DAT_80069594 + 1); - in_v0_lo = DAT_80069594; - if (-1 < (int)DAT_80069594) { - DAT_80069594 = ppiVar6; - if (ppiVar6 == (int **)((int)&USHORT_00000088 + 1)) { - DAT_80069594 = ppiVar6; - proc_7F06FCA8(DAT_8002a7f4,ptr_animation_table + 0x4298,0,in_f12,0x40000000,in_f14); - in_f12 = extraout_f12; - } - in_v0_lo = DAT_80069594; - if (DAT_80069594 == (int **)&USHORT_000000d4) { - in_v0_lo = DAT_80069594; - proc_7F06FE4C(DAT_8002a7f4,0x3fcccccd,in_f12); - } - } - proc_7F070AEC(DAT_8002a7f4,1,1); - in_f12 = extraout_f12_00; - in_f14 = extraout_f14; - if (DAT_80069594 == (int **)&USHORT_000000e6) { - piVar4 = (int *)((int)&rgba + 1); - in_v0_lo = play_sfx_a1(ptr_sfx_buf,0x6f,NULL); - in_f12 = extraout_f12_01; - in_f14 = extraout_f14_00; - } - iVar13 += 1; - piVar2 = piVar4; - } while (iVar13 != in_a1_lo); - } - lVar12 = 0; - set_80036084(1); - proc_7F073FC8(0x50); - subcalcpos(DAT_8002a7f4,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - ppuVar1 = *(ushort ***)(*(int *)(DAT_8002a7f8 + 8) + 8); - partdesc = *ppuVar1; - if (partdesc == NULL) { - partdesc = ppuVar1[2]; - } - else { - in_v0_lo = (int **)extract_id_from_object_structure_microcode(DAT_8002a7f8,partdesc); - *(short *)in_v0_lo = (short)piVar4; - partdesc = *(ushort **)(*(int *)(*(int *)(DAT_8002a7f8 + 8) + 8) + 8); - } - if (partdesc != NULL) { - in_v0_lo = (int **)extract_id_from_object_structure_microcode(DAT_8002a7f8,partdesc); - *in_v0_lo = piVar4; - } - proc_7F0BD714((int)*(short *)(*(int *)(DAT_8002a7f4 + 8) + 0xe) << 6); - ppiStack52 = in_v0_lo; - subcalcmatrices(&pfStack68,DAT_8002a7f4,extraout_a2_lo_00,extraout_a3_lo_00); - pfVar3 = (float *)proc_7F06C660(DAT_8002a7f4,*(ushort **)(DAT_8002a7f8 + 0x1c),0); - pfStack68 = pfVar3; - proc_7F0BD714((int)*(short *)(*(int *)(DAT_8002a7f8 + 8) + 0xe) << 6); - ppiStack52 = (int **)pfVar3; - instcalcmatrices(&pfStack68,DAT_8002a7f8,extraout_a2_lo_01,extraout_a3_lo_01); - piVar4 = proc_7F06B120(NULL,DAT_8002a7f4); - piVar4 = proc_7F06B120(piVar4,DAT_8002a7f8); - proc_7F06B29C(piVar4); - puVar5 = (uint *)proc_7F06BB28((int)piVar4); - uStack20 = 7; - uStack64 = 0; - uStack60 = 1; - uStack56 = in_a0_lo; - drawjointlist((int)&pfStack68,puVar5,extraout_a2_lo_02,extraout_a3_lo_02); - uStack60 = 2; - drawjointlist((int)&pfStack68,puVar5,extraout_a2_lo_03,extraout_a3_lo_03); - set_80036084(0); - proc_7F06B248((int)puVar5); - iVar13 = 0; - if (0 < *(short *)(*(int *)(DAT_8002a7f4 + 8) + 0xe)) { - iVar7 = *(int *)(DAT_8002a7f4 + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar7 + iVar13),auStack152); - proc_7F058C9C((int)auStack152,(uint *)(*(int *)(DAT_8002a7f4 + 0xc) + (int)lVar12 * 0x40)); - lVar12 = (longlong)((int)lVar12 + 1); - iVar13 += 0x40; - if ((longlong)*(short *)(*(int *)(DAT_8002a7f4 + 8) + 0xe) <= lVar12) break; - iVar7 = *(int *)(DAT_8002a7f4 + 0xc); + ppfVar11 = ppfVar10 + 3; + ppfVar9 = ppfVar8 + 3; + *ppfVar8 = *ppfVar10; + ppfVar8[1] = ppfVar10[1]; + ppfVar8[2] = ppfVar10[2]; + ppfVar10 = ppfVar11; + ppfVar8 = ppfVar9; + } while (ppfVar11 != (float **)&DWORD_8002a838); + uVar14 = 0; + iVar13 = 0; + *(dword *)ppfVar9 = DWORD_8002a838; + uVar2 = 0; + if (0 < in_a1_lo) { + do { + uVar14 = uVar2; + puVar6 = (undefined4 *)((int)DAT_80069594 + 1); + in_v0_lo = DAT_80069594; + if (-1 < (int)DAT_80069594) { + DAT_80069594 = puVar6; + if (puVar6 == (undefined4 *)((int)&USHORT_00000088 + 1)) { + proc_7F06FCA8(DAT_8002a7f4,ptr_animation_table + 0x4298,0,in_f12,0x40000000, + in_f14); + in_f12 = extraout_f12; + } + in_v0_lo = DAT_80069594; + if (DAT_80069594 == (undefined4 *)&USHORT_000000d4) { + proc_7F06FE4C(DAT_8002a7f4,0x3fcccccd,in_f12); + } + } + proc_7F070AEC(DAT_8002a7f4,1,1); + in_f12 = extraout_f12_00; + in_f14 = extraout_f14; + if (DAT_80069594 == (undefined4 *)&USHORT_000000e6) { + uVar14 = 1; + play_sfx_a1(ptr_sfx_buf,0x6f,NULL); + in_f12 = extraout_f12_01; + in_f14 = extraout_f14_00; + } + iVar13 += 1; + uVar2 = uVar14; + } while (iVar13 != in_a1_lo); } - } - lVar12 = 0; - iVar13 = 0; - if (0 < *(short *)(*(int *)(DAT_8002a7f8 + 8) + 0xe)) { - iVar7 = *(int *)(DAT_8002a7f8 + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar7 + iVar13),auStack216); - proc_7F058C9C((int)auStack216,(uint *)(*(int *)(DAT_8002a7f8 + 0xc) + (int)lVar12 * 0x40)); - lVar12 = (longlong)((int)lVar12 + 1); - iVar13 += 0x40; - if ((longlong)*(short *)(*(int *)(DAT_8002a7f8 + 8) + 0xe) <= lVar12) break; - iVar7 = *(int *)(DAT_8002a7f8 + 0xc); + lVar12 = 0; + set_80036084(1); + proc_7F073FC8(0x50); + subcalcpos(DAT_8002a7f4,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + ppuVar1 = *(ushort ***)(*(int *)(DAT_8002a7f8 + 8) + 8); + partdesc = *ppuVar1; + if (partdesc == NULL) { + partdesc = ppuVar1[2]; } - } - return uStack56; + else { + in_v0_lo = (undefined4 *)extract_id_from_object_structure_microcode(DAT_8002a7f8,partdesc); + *(ushort *)in_v0_lo = (ushort)uVar14; + partdesc = *(ushort **)(*(int *)(*(int *)(DAT_8002a7f8 + 8) + 8) + 8); + } + if (partdesc != NULL) { + in_v0_lo = (undefined4 *)extract_id_from_object_structure_microcode(DAT_8002a7f8,partdesc); + *in_v0_lo = uVar14; + } + proc_7F0BD714((int)*(short *)(*(int *)(DAT_8002a7f4 + 8) + 0xe) << 6); + pfStack52 = (float *)in_v0_lo; + subcalcmatrices(&pfStack68,DAT_8002a7f4,extraout_a2_lo_00,extraout_a3_lo_00); + pfVar3 = (float *)proc_7F06C660(DAT_8002a7f4,*(ushort **)(DAT_8002a7f8 + 0x1c),0); + pfStack68 = pfVar3; + proc_7F0BD714((int)*(short *)(*(int *)(DAT_8002a7f8 + 8) + 0xe) << 6); + pfStack52 = pfVar3; + instcalcmatrices(&pfStack68,DAT_8002a7f8,extraout_a2_lo_01,extraout_a3_lo_01); + piVar4 = proc_7F06B120(NULL,DAT_8002a7f4); + piVar4 = proc_7F06B120(piVar4,DAT_8002a7f8); + proc_7F06B29C(piVar4); + puVar5 = (uint *)proc_7F06BB28((int)piVar4); + uStack20 = 7; + uStack64 = 0; + uStack60 = 1; + uStack56 = in_a0_lo; + drawjointlist((int)&pfStack68,puVar5,extraout_a2_lo_02,extraout_a3_lo_02); + uStack60 = 2; + drawjointlist((int)&pfStack68,puVar5,extraout_a2_lo_03,extraout_a3_lo_03); + set_80036084(0); + proc_7F06B248((int)puVar5); + iVar13 = 0; + if (0 < *(short *)(*(int *)(DAT_8002a7f4 + 8) + 0xe)) { + iVar7 = *(int *)(DAT_8002a7f4 + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar7 + iVar13),(float (*) [4])afStack152); + proc_7F058C9C((int)(float (*) [4])afStack152, + (uint *)(*(int *)(DAT_8002a7f4 + 0xc) + (int)lVar12 * 0x40)); + lVar12 = (longlong)((int)lVar12 + 1); + iVar13 += 0x40; + if (*(short *)(*(int *)(DAT_8002a7f4 + 8) + 0xe) <= lVar12) break; + iVar7 = *(int *)(DAT_8002a7f4 + 0xc); + } + } + lVar12 = 0; + iVar13 = 0; + if (0 < *(short *)(*(int *)(DAT_8002a7f8 + 8) + 0xe)) { + iVar7 = *(int *)(DAT_8002a7f8 + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar7 + iVar13),(float (*) [4])afStack216); + proc_7F058C9C((int)(float (*) [4])afStack216, + (uint *)(*(int *)(DAT_8002a7f8 + 0xc) + (int)lVar12 * 0x40)); + lVar12 = (longlong)((int)lVar12 + 1); + iVar13 += 0x40; + if (*(short *)(*(int *)(DAT_8002a7f8 + 8) + 0xe) <= lVar12) break; + iVar7 = *(int *)(DAT_8002a7f8 + 0xc); + } + } + return uStack56; } @@ -28167,35 +28348,36 @@ undefined4 proc_7F007F30(void) void insert_bond_eye_intro(undefined4 *param_1) { - u32 uVar1; - float x; - float fovy; - float y; - float aspect; - float extraout_f14; - ushort local_42; - float afStack64 [16]; - - guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_backdrop),x,y,0.00000000); - guPerspective((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_bond),&local_42,fovy,aspect, - 46.00000000,1.33333337,10.00000000); - *param_1 = 0xbc00000e; - param_1[1] = (uint)local_42; - param_1[2] = 0xfcffffff; - param_1[3] = 0xfffe793c; - param_1[4] = 0xb900031d; - param_1[5] = 0x552048; - param_1[6] = 0x1030040; - uVar1 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_bond)); - param_1[7] = uVar1; - param_1[8] = 0x1020040; - uVar1 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_backdrop)); - param_1[9] = uVar1; - proc_7F059694(afStack64,FLOAT_8002a844,extraout_f14,dword_8002A83C,FLOAT_8002a840,FLOAT_8002a844, - FLOAT_8002a848 + dword_8002A83C,FLOAT_8002a84c + FLOAT_8002a840, - flt_8002A850 + FLOAT_8002a844,dword_8002A854); - proc_7F007F30(); - return; + u32 uVar1; + float in_f12; + float fovy; + float in_f14; + float aspect; + float extraout_f14; + u16 local_42; + float afStack64 [16]; + + guTranslate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_backdrop),in_f12,in_f14,0.00000000 + ); + guPerspective((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_bond),&local_42,fovy,aspect, + 46.00000000,1.33333337,10.00000000); + *param_1 = 0xbc00000e; + param_1[1] = (uint)local_42; + param_1[2] = 0xfcffffff; + param_1[3] = 0xfffe793c; + param_1[4] = 0xb900031d; + param_1[5] = 0x552048; + param_1[6] = 0x1030040; + uVar1 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_bond)); + param_1[7] = uVar1; + param_1[8] = 0x1020040; + uVar1 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_intro_backdrop)); + param_1[9] = uVar1; + proc_7F059694(afStack64,FLOAT_8002a844,extraout_f14,dword_8002A83C,FLOAT_8002a840,FLOAT_8002a844 + ,FLOAT_8002a848 + dword_8002A83C,FLOAT_8002a84c + FLOAT_8002a840, + flt_8002A850 + FLOAT_8002a844,dword_8002A854); + proc_7F007F30(); + return; } @@ -28205,131 +28387,132 @@ load_display_rare_logo (undefined4 *param_1,undefined8 param_2,undefined8 param_3,int param_4,uint param_5) { - undefined4 *puVar1; - u32 uVar2; - uint uVar3; - float fovy; - float a; - float aspect; - float yEye; - float x; - ushort local_6 [3]; - - dword_8002A880 = (f32)(float)param_4; - *param_1 = 0x6000000; - param_1[1] = 0x1000000; - puVar1 = insert_imageDL(param_1 + 2); - guPerspective((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_0),local_6,fovy,aspect, - 60.00000000,1.33333337,100.00000000); - *puVar1 = 0xbc00000e; - puVar1[1] = (uint)local_6[0]; - puVar1[2] = 0x1030040; - uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_0)); - puVar1[3] = uVar2; - puVar1[5] = 0xffffffff; - puVar1[4] = 0xb6000000; - puVar1[6] = 0xb7000000; - puVar1[7] = 0x62204; - guLookAt((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_1),(float)dword_8002A880,yEye, - dword_8002A878,dword_8002A87C,(float)dword_8002A880,DAT_8002a884 + dword_8002A878, - DAT_8002a888 + dword_8002A87C,flt_8002A88C + (float)dword_8002A880,dword_8002A890); - puVar1[8] = 0x1020040; - uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_1)); - puVar1[9] = uVar2; - guRotate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2),a,x,a,0.00000000); - a = a + 2.00000000; - puVar1[10] = 0x1000040; - uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2)); - puVar1[0xb] = uVar2; - puVar1[0xc] = 0xbc000002; - puVar1[0xd] = 0x80000040; - puVar1[0xe] = 0x3860010; - puVar1[0xf] = 0x8002a868; - puVar1[0x10] = 0x3880010; - puVar1[0x11] = 0x8002a860; - stru_8002A860.R = (char)param_5; - stru_8002A860.G = stru_8002A860.R; - stru_8002A860.B = stru_8002A860.R; - stru_8002A864.R = stru_8002A860.R; - stru_8002A864.G = stru_8002A860.R; - stru_8002A864.B = stru_8002A860.R; - puVar1[0x12] = 0xe7000000; - puVar1[0x13] = 0; - puVar1[0x15] = 0; - puVar1[0x14] = 0xe7000000; - puVar1[0x17] = 0xfffff9fc; - puVar1[0x16] = 0xfc127e24; - puVar1[0x19] = 0x80000; - puVar1[0x18] = 0xba001301; - puVar1[0x1a] = 0xba001102; - puVar1[0x1b] = 0; - puVar1[0x1c] = 0xba001001; - puVar1[0x1d] = 0; - puVar1[0x1e] = 0xba000e02; - puVar1[0x1f] = 0; - puVar1[0x21] = 0x2000; - puVar1[0x20] = 0xba000c02; - puVar1[0x22] = 0xba000903; - puVar1[0x23] = 0xc00; - puVar1[0x25] = 0; - puVar1[0x24] = 0xe7000000; - puVar1[0x27] = 0; - puVar1[0x26] = 0xe7000000; - puVar1[0x28] = 0xbb000001; - puVar1[0x29] = 0x8000800; - puVar1[0x2b] = 0x2004fe8; - puVar1[0x2a] = 0xfd100000; - puVar1[0x2c] = 0xf5100000; - puVar1[0x2d] = 0x7014050; - puVar1[0x2e] = 0xe6000000; - puVar1[0x2f] = 0; - puVar1[0x31] = 0x73ff100; - puVar1[0x30] = 0xf3000000; - puVar1[0x33] = 0; - puVar1[0x32] = 0xe7000000; - puVar1[0x35] = 82000; - puVar1[0x34] = 0xf5101000; - puVar1[0x36] = 0xf2000000; - uVar3 = param_5 & 0xff; - puVar1[0x37] = 0x7c07c; - puVar1[0x38] = 0xfa000000; - puVar1[0x39] = uVar3 << 0x18 | uVar3 << 0x10 | uVar3 << 8 | 0xff; - puVar1[0x3a] = 0x6000000; - puVar1[0x3b] = 0x20043e8; - puVar1[0x3d] = 0x20044b0; - puVar1[0x3c] = 0x6000000; - puVar1[0x3f] = 0x2005ff0; - puVar1[0x3e] = 0xfd100000; - puVar1[0x41] = 0x7014050; - puVar1[0x40] = 0xf5100000; - puVar1[0x43] = 0; - puVar1[0x42] = 0xe6000000; - puVar1[0x45] = 0x73ff100; - puVar1[0x44] = 0xf3000000; - puVar1[0x47] = 0; - puVar1[0x46] = 0xe7000000; - puVar1[0x49] = 82000; - puVar1[0x48] = 0xf5101000; - puVar1[0x4a] = 0xf2000000; - puVar1[0x4b] = 0x7c07c; - puVar1[0x4c] = 0xfa000000; - uVar3 = (int)(param_5 * 0xf0) / 0xff & 0xff; - if (false) { - trap(0x1c00); - } - if ((false) && (param_5 * 0xf0 == -0x80000000)) { - trap(0x1800); - } - if (false) { - trap(0x1c00); - } - if ((false) && (param_5 * 0xd0 == -0x80000000)) { - trap(0x1800); - } - puVar1[0x4d] = uVar3 << 0x18 | ((int)(param_5 * 0xd0) / 0xff & 0xffU) << 0x10 | uVar3 << 8 | 0xff; - puVar1[0x4e] = 0x6000000; - puVar1[0x4f] = 0x2004758; - return puVar1 + 0x50; + undefined4 *puVar1; + u32 uVar2; + uint uVar3; + float fovy; + float a; + float aspect; + float yEye; + float x; + u16 local_6 [3]; + + dword_8002A880 = (f32)(float)param_4; + *param_1 = 0x6000000; + param_1[1] = 0x1000000; + puVar1 = insert_imageDL((Gfx *)(param_1 + 2)); + guPerspective((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_0),local_6,fovy,aspect, + 60.00000000,1.33333337,100.00000000); + *puVar1 = 0xbc00000e; + puVar1[1] = (uint)local_6[0]; + puVar1[2] = 0x1030040; + uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_0)); + puVar1[3] = uVar2; + puVar1[5] = 0xffffffff; + puVar1[4] = 0xb6000000; + puVar1[6] = 0xb7000000; + puVar1[7] = 0x62204; + guLookAt((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_1),(float)dword_8002A880,yEye, + dword_8002A878,dword_8002A87C,(float)dword_8002A880,DAT_8002a884 + dword_8002A878, + DAT_8002a888 + dword_8002A87C,flt_8002A88C + (float)dword_8002A880,dword_8002A890); + puVar1[8] = 0x1020040; + uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_1)); + puVar1[9] = uVar2; + guRotate((Mtx *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2),a,x,a,0.00000000); + a = a + 2.00000000; + puVar1[10] = 0x1000040; + uVar2 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2)); + puVar1[0xb] = uVar2; + puVar1[0xc] = 0xbc000002; + puVar1[0xd] = 0x80000040; + puVar1[0xe] = 0x3860010; + puVar1[0xf] = 0x8002a868; + puVar1[0x10] = 0x3880010; + puVar1[0x11] = 0x8002a860; + stru_8002A860.R = (char)param_5; + stru_8002A860.G = stru_8002A860.R; + stru_8002A860.B = stru_8002A860.R; + stru_8002A864.R = stru_8002A860.R; + stru_8002A864.G = stru_8002A860.R; + stru_8002A864.B = stru_8002A860.R; + puVar1[0x12] = 0xe7000000; + puVar1[0x13] = 0; + puVar1[0x15] = 0; + puVar1[0x14] = 0xe7000000; + puVar1[0x17] = 0xfffff9fc; + puVar1[0x16] = 0xfc127e24; + puVar1[0x19] = 0x80000; + puVar1[0x18] = 0xba001301; + puVar1[0x1a] = 0xba001102; + puVar1[0x1b] = 0; + puVar1[0x1c] = 0xba001001; + puVar1[0x1d] = 0; + puVar1[0x1e] = 0xba000e02; + puVar1[0x1f] = 0; + puVar1[0x21] = 0x2000; + puVar1[0x20] = 0xba000c02; + puVar1[0x22] = 0xba000903; + puVar1[0x23] = 0xc00; + puVar1[0x25] = 0; + puVar1[0x24] = 0xe7000000; + puVar1[0x27] = 0; + puVar1[0x26] = 0xe7000000; + puVar1[0x28] = 0xbb000001; + puVar1[0x29] = 0x8000800; + puVar1[0x2b] = 0x2004fe8; + puVar1[0x2a] = 0xfd100000; + puVar1[0x2c] = 0xf5100000; + puVar1[0x2d] = 0x7014050; + puVar1[0x2e] = 0xe6000000; + puVar1[0x2f] = 0; + puVar1[0x31] = 0x73ff100; + puVar1[0x30] = 0xf3000000; + puVar1[0x33] = 0; + puVar1[0x32] = 0xe7000000; + puVar1[0x35] = 82000; + puVar1[0x34] = 0xf5101000; + puVar1[0x36] = 0xf2000000; + uVar3 = param_5 & 0xff; + puVar1[0x37] = 0x7c07c; + puVar1[0x38] = 0xfa000000; + puVar1[0x39] = uVar3 << 0x18 | uVar3 << 0x10 | uVar3 << 8 | 0xff; + puVar1[0x3a] = 0x6000000; + puVar1[0x3b] = 0x20043e8; + puVar1[0x3d] = 0x20044b0; + puVar1[0x3c] = 0x6000000; + puVar1[0x3f] = 0x2005ff0; + puVar1[0x3e] = 0xfd100000; + puVar1[0x41] = 0x7014050; + puVar1[0x40] = 0xf5100000; + puVar1[0x43] = 0; + puVar1[0x42] = 0xe6000000; + puVar1[0x45] = 0x73ff100; + puVar1[0x44] = 0xf3000000; + puVar1[0x47] = 0; + puVar1[0x46] = 0xe7000000; + puVar1[0x49] = 82000; + puVar1[0x48] = 0xf5101000; + puVar1[0x4a] = 0xf2000000; + puVar1[0x4b] = 0x7c07c; + puVar1[0x4c] = 0xfa000000; + uVar3 = (int)(param_5 * 0xf0) / 0xff & 0xff; + if (false) { + trap(0x1c00); + } + if ((false) && (param_5 * 0xf0 == -0x80000000)) { + trap(0x1800); + } + if (false) { + trap(0x1c00); + } + if ((false) && (param_5 * 0xd0 == -0x80000000)) { + trap(0x1800); + } + puVar1[0x4d] = uVar3 << 0x18 | ((int)(param_5 * 0xd0) / 0xff & 0xffU) << 0x10 | uVar3 << 8 | + 0xff; + puVar1[0x4e] = 0x6000000; + puVar1[0x4f] = 0x2004758; + return puVar1 + 0x50; } @@ -28337,76 +28520,74 @@ load_display_rare_logo void proc_7F008B58(ulonglong param_1) { - virtualaddress = (char *)param_1; - dword_8002A7D4 = 0; - num_obj_position_data_entries = 0x445c0000; - a = -40.00000000; - intro_eye_counter = 0; - romCopy(virtualaddress,&Globalimagetable_commandblock,0x6800); - return; + virtualaddress = (char *)param_1; + dword_8002A7D4 = 0; + num_obj_position_data_entries = 0x445c0000; + a = -40.00000000; + intro_eye_counter = 0; + romCopy(virtualaddress,&Globalimagetable_commandblock,0x6800); + return; } -undefined4 * retrieve_display_rareware_logo(undefined4 *param_1) +void retrieve_display_rareware_logo(undefined4 *param_1) { - bool bVar1; - u32 uVar2; - int iVar3; - undefined4 *puVar4; - int iVar5; - - DAT_8002a7d0 = 1 - DAT_8002a7d0; - *param_1 = 0xbc000806; - puVar4 = param_1 + 2; - uVar2 = osVirtualToPhysical(virtualaddress); - param_1[1] = uVar2; - if ((dword_8002A7D4 == '\0') || (dword_8002A7D4 == '\x01')) { - iVar3 = intro_eye_counter * 0xff; - iVar5 = iVar3 / 0x46; - if (false) { - trap(0x1c00); + bool bVar1; + u32 uVar2; + int iVar3; + int iVar4; + + DAT_8002a7d0 = 1 - DAT_8002a7d0; + *param_1 = 0xbc000806; + uVar2 = osVirtualToPhysical(virtualaddress); + param_1[1] = uVar2; + if ((dword_8002A7D4 == '\0') || (dword_8002A7D4 == '\x01')) { + iVar3 = intro_eye_counter * 0xff; + iVar4 = iVar3 / 0x46; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + if (0xff < iVar4) { + iVar4 = 0xff; + } + if (iVar4 < 0) { + iVar4 = 0; + } + if (false) { + trap(0x1c00); + } + if ((false) && (iVar3 + -0x9f60 == -0x80000000)) { + trap(0x1800); + } + iVar3 = 0xff - (iVar3 + -0x9f60) / 0x46; + if (0xff < iVar3) { + iVar3 = 0xff; + } + if (iVar3 < 0) { + iVar3 = 0; + } + if (false) { + trap(0x1c00); + } + if ((false) && (iVar4 * iVar3 == -0x80000000)) { + trap(0x1800); + } + load_display_rare_logo + (param_1 + 2,0x193,0x1e8,(int)num_obj_position_data_entries,(iVar4 * iVar3) / 0xff + ); + bVar1 = 0x103 < intro_eye_counter; + intro_eye_counter += 1; + if ((bVar1) && (0x121 < intro_eye_counter)) { + intro_eye_counter = 0; + dword_8002A7D4 += '\x02'; + } } - if ((false) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - if (0xff < iVar5) { - iVar5 = 0xff; - } - if (iVar5 < 0) { - iVar5 = 0; - } - if (false) { - trap(0x1c00); - } - if ((false) && (iVar3 + -0x9f60 == -0x80000000)) { - trap(0x1800); - } - iVar3 = 0xff - (iVar3 + -0x9f60) / 0x46; - if (0xff < iVar3) { - iVar3 = 0xff; - } - if (iVar3 < 0) { - iVar3 = 0; - } - if (false) { - trap(0x1c00); - } - if ((false) && (iVar5 * iVar3 == -0x80000000)) { - trap(0x1800); - } - puVar4 = load_display_rare_logo - (puVar4,0x193,0x1e8,(int)num_obj_position_data_entries,(iVar5 * iVar3) / 0xff - ); - bVar1 = 0x103 < intro_eye_counter; - intro_eye_counter += 1; - if ((bVar1) && (0x121 < intro_eye_counter)) { - intro_eye_counter = 0; - dword_8002A7D4 += '\x02'; - } - } - return puVar4; + return; } @@ -28414,7 +28595,7 @@ undefined4 * retrieve_display_rareware_logo(undefined4 *param_1) ulonglong proc_7F008DD0(void) { - return (ulonglong)(dword_8002A7D4 == '\x02'); + return (ulonglong)(dword_8002A7D4 == '\x02'); } @@ -28422,13 +28603,13 @@ ulonglong proc_7F008DD0(void) void proc_7F008DE4(ushort **param_1,int *param_2) { - DAT_8006958c = *param_1; - *param_2 = *param_2 + -0x40400; - DAT_80069588 = *param_1 + 0x20200; - *param_1 = DAT_80069588; - romCopy((char *)DAT_80069588,&unknown2,0x1a580); - proc_7F01B0E0(DAT_80069588,(byte *)DAT_8006958c); - return; + DAT_8006958c = *param_1; + *param_2 = *param_2 + -0x40400; + DAT_80069588 = *param_1 + 0x20200; + *param_1 = DAT_80069588; + romCopy((char *)DAT_80069588,&unknown2,0x1a580); + proc_7F01B0E0(DAT_80069588,(byte *)DAT_8006958c); + return; } @@ -28436,101 +28617,98 @@ void proc_7F008DE4(ushort **param_1,int *param_2) void proc_7F008E80(short *param_1,int param_2) { - ushort uVar1; - short *psVar2; - uint *puVar3; - int iVar4; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - uint uVar5; - float l; - f32 scale; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - f32 scale_00; - float r; - float extraout_f14; - uint *local_res0; - int local_res4 [3]; - int aiStack32 [4]; - float local_10; - undefined4 local_c; - undefined4 local_8; - - dword_8002A7D4 = 2; - local_res0 = (uint *)param_1; - local_res4[0] = param_2; - guOrtho(matrix_buffer_gunbarrel_0,l,r,0.00000000,1280.00000000,0.00000000,960.00000000,1.00000000) - ; - psVar2 = (short *)local_res0; - num_obj_position_data_entries = 0xc1f00000; - pos_data_entry = 0x43f10000; - DAT_8006957c = 0xc2c80000; - DAT_80069580 = 0x43f10000; - DAT_80069584 = 0x42; - DAT_80069550 = (short *)local_res0; - local_res0 = (uint *)((short *)local_res0 + 0x100); - local_res4[0] += -0x200; - proc_7F01BAE0(psVar2,0x1e); - puVar3 = local_res0; - DAT_80069554 = local_res0; - local_res0 = local_res0 + 0x40; - local_res4[0] += -0x100; - proc_7F01BFF8(puVar3,(uint)(DAT_80069550 + -0x40000000),0x1e); - proc_7F008DE4((ushort **)register0x000000ec,local_res4); - local_10 = dword_8002A8A8; - local_c = dword_8002A8AC; - local_8 = dword_8002A8B0; - proc_7F0CBAF4(aiStack32,(int)local_res0,0x12c00); - local_res0 = local_res0 + 0x4b00; - local_res4[0] += -0x12c00; - load_object_fill_header - (c_item_entries[5].header,(u8 *)c_item_entries[5].filename,(int)local_res0,local_res4[0] - ,(int)aiStack32); - iVar4 = get_temp_buffer_remaining_value((byte *)c_item_entries[5].filename); - uVar5 = (iVar4 + 0x3fU | 0x3f) ^ 0x3f; - local_res0 = (uint *)((int)local_res0 + uVar5); - local_res4[0] -= uVar5; - load_object_fill_header - (c_item_entries[78].header,(u8 *)c_item_entries[78].filename,(int)local_res0, - local_res4[0],(int)aiStack32); - iVar4 = get_temp_buffer_remaining_value((byte *)c_item_entries[78].filename); - uVar5 = (iVar4 + 0x3fU | 0x3f) ^ 0x3f; - local_res4[0] -= uVar5; - local_res0 = (uint *)((int)local_res0 + uVar5); - DAT_8002a7f4 = setup_chr_instance(5,0x4e,c_item_entries[5].header,c_item_entries[78].header,0); - set_obj_instance_controller_scale(DAT_8002a7f4,scale); - proc_7F06CE84(DAT_8002a7f4,0x3f800000); - setsuboffset(DAT_8002a7f4,&local_10,extraout_a2_lo,extraout_a3_lo); - setsubroty(DAT_8002a7f4,extraout_f12,0,extraout_a2_lo_00); - proc_7F06FF18(DAT_8002a7f4,0x3f000000,extraout_f12_00); - uVar1 = *(ushort *)(ptr_animation_table + 0x4148); - iVar4 = (uint)uVar1 - 0x44; - if (iVar4 < 0) { - iVar4 += (uint)uVar1; - while (iVar4 < 0) { - iVar4 += (uint)uVar1; + ushort uVar1; + short *psVar2; + uint *puVar3; + int iVar4; + undefined4 extraout_a2_lo; + uint uVar5; + float in_f12; + f32 scale; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + f32 scale_00; + float in_f14; + float extraout_f14; + uint *local_res0; + int local_res4 [3]; + int aiStack32 [4]; + xyzpoint local_10; + + dword_8002A7D4 = 2; + local_res0 = (uint *)param_1; + local_res4[0] = param_2; + guOrtho(matrix_buffer_gunbarrel_0,in_f12,in_f14,0.00000000,1280.00000000,0.00000000,960.00000000 + ,1.00000000); + psVar2 = (short *)local_res0; + num_obj_position_data_entries = 0xc1f00000; + pos_data_entry = 0x43f10000; + DAT_8006957c = 0xc2c80000; + DAT_80069580 = 0x43f10000; + DAT_80069584 = 0x42; + DAT_80069550 = (short *)local_res0; + local_res0 = (uint *)((short *)local_res0 + 0x100); + local_res4[0] += -0x200; + proc_7F01BAE0(psVar2,0x1e); + puVar3 = local_res0; + DAT_80069554 = local_res0; + local_res0 = local_res0 + 0x40; + local_res4[0] += -0x100; + proc_7F01BFF8(puVar3,(uint)(DAT_80069550 + -0x40000000),0x1e); + proc_7F008DE4((ushort **)register0x000000ec,local_res4); + local_10.x = dword_8002A8A8; + local_10.y = dword_8002A8AC; + local_10.z = dword_8002A8B0; + proc_7F0CBAF4(aiStack32,(int)local_res0,0x12c00); + local_res0 = local_res0 + 0x4b00; + local_res4[0] += -0x12c00; + load_object_fill_header + (c_item_entries[5].header,(u8 *)c_item_entries[5].filename,(int)local_res0, + local_res4[0],(int)aiStack32); + iVar4 = get_pc_buffer_remaining_value((byte *)c_item_entries[5].filename); + uVar5 = (iVar4 + 0x3fU | 0x3f) ^ 0x3f; + local_res0 = (uint *)((int)local_res0 + uVar5); + local_res4[0] -= uVar5; + load_object_fill_header + (c_item_entries[78].header,(u8 *)c_item_entries[78].filename,(int)local_res0, + local_res4[0],(int)aiStack32); + iVar4 = get_pc_buffer_remaining_value((byte *)c_item_entries[78].filename); + uVar5 = (iVar4 + 0x3fU | 0x3f) ^ 0x3f; + local_res4[0] -= uVar5; + local_res0 = (uint *)((int)local_res0 + uVar5); + DAT_8002a7f4 = setup_chr_instance(5,0x4e,c_item_entries[5].header,c_item_entries[78].header,0); + set_obj_instance_controller_scale(DAT_8002a7f4,scale); + proc_7F06CE84(DAT_8002a7f4,0x3f800000); + setsuboffset(DAT_8002a7f4,&local_10); + setsubroty(DAT_8002a7f4,extraout_f12,0,extraout_a2_lo); + proc_7F06FF18(DAT_8002a7f4,0x3f000000,extraout_f12_00); + uVar1 = *(ushort *)(ptr_animation_table + 0x4148); + iVar4 = (uint)uVar1 - 0x44; + if (iVar4 < 0) { + iVar4 += (uint)uVar1; + while (iVar4 < 0) { + iVar4 += (uint)uVar1; + } } - } - proc_7F06FCA8(DAT_8002a7f4,ptr_animation_table + 0x4144,0,extraout_f12_01,(float)iVar4, - extraout_f14); - load_object_fill_header - ((object_header *)PitemZ_entries[191].header,(u8 *)PitemZ_entries[191].filename, - (int)local_res0,local_res4[0],(int)aiStack32); - iVar4 = get_temp_buffer_remaining_value((byte *)PitemZ_entries[191].filename); - uVar5 = (iVar4 + 0x3fU | 0x3f) ^ 0x3f; - local_res4[0] -= uVar5; - local_res0 = (uint *)((int)local_res0 + uVar5); - set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[191].header); - DAT_8002a7f8 = get_obj_instance_controller_for_header(PitemZ_entries[191].header); - set_obj_instance_controller_scale(DAT_8002a7f8,scale_00); - *(uint *)(DAT_8002a7f8 + 0x18) = DAT_8002a7f4; - *(undefined4 *)(DAT_8002a7f8 + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(DAT_8002a7f4 + 8) + 8) + 0xc); - DAT_80069594 = 0; - return; + proc_7F06FCA8(DAT_8002a7f4,ptr_animation_table + 0x4144,0,extraout_f12_01,(float)iVar4, + extraout_f14); + load_object_fill_header + ((object_header *)PitemZ_entries[191].header,(u8 *)PitemZ_entries[191].filename, + (int)local_res0,local_res4[0],(int)aiStack32); + iVar4 = get_pc_buffer_remaining_value((byte *)PitemZ_entries[191].filename); + uVar5 = (iVar4 + 0x3fU | 0x3f) ^ 0x3f; + local_res4[0] -= uVar5; + local_res0 = (uint *)((int)local_res0 + uVar5); + set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[191].header); + DAT_8002a7f8 = get_obj_instance_controller_for_header + ((object_header *)PitemZ_entries[191].header); + set_obj_instance_controller_scale(DAT_8002a7f8,scale_00); + *(uint *)(DAT_8002a7f8 + 0x18) = DAT_8002a7f4; + *(undefined4 *)(DAT_8002a7f8 + 0x1c) = + *(undefined4 *)(*(int *)(*(int *)(DAT_8002a7f4 + 8) + 8) + 0xc); + DAT_80069594 = 0; + return; } @@ -28538,13 +28716,13 @@ void proc_7F008E80(short *param_1,int param_2) void proc_7F00920C(void) { - if (DAT_8002a7f4 != NULL) { - set_aircraft_obj_inst_scale_to_zero(DAT_8002a7f4); - } - if (DAT_8002a7f8 != NULL) { - set_obj_instance_scale_to_zero(DAT_8002a7f8); - } - return; + if (DAT_8002a7f4 != NULL) { + set_aircraft_obj_inst_scale_to_zero(DAT_8002a7f4); + } + if (DAT_8002a7f8 != NULL) { + set_obj_instance_scale_to_zero(DAT_8002a7f8); + } + return; } @@ -28552,130 +28730,131 @@ void proc_7F00920C(void) longlong proc_7F009254(longlong param_1) { - bool bVar1; - short sVar2; - undefined4 *displaylist; - ushort x; - - displaylist = (undefined4 *)param_1; - DAT_8002a7d0 = 1 - DAT_8002a7d0; - switch(dword_8002A7D4) { - case '\x02': - displaylist = something_with_gunbarrel_and_rareware_logo_matrix_manip(displaylist); - param_1 = (longlong)(int)displaylist; - num_obj_position_data_entries = num_obj_position_data_entries + 6.00000000; - if (DAT_80069584 < 0) { - DAT_80069584 = 200; - DAT_8006957c = num_obj_position_data_entries - 12.00000000; + bool bVar1; + Gfx *pGVar2; + short sVar3; + undefined4 *displaylist; + ushort x; + + displaylist = (undefined4 *)param_1; + DAT_8002a7d0 = 1 - DAT_8002a7d0; + switch(dword_8002A7D4) { + case '\x02': + displaylist = something_with_gunbarrel_and_rareware_logo_matrix_manip(displaylist); + param_1 = (longlong)(int)displaylist; + num_obj_position_data_entries = num_obj_position_data_entries + 6.00000000; + if (DAT_80069584 < 0) { + DAT_80069584 = 200; + DAT_8006957c = num_obj_position_data_entries - 12.00000000; + } + else { + DAT_80069584 += -6; + } + if (flt_8004F2FC < num_obj_position_data_entries) { + dword_8002A7D4 += '\x01'; + num_obj_position_data_entries = flt_8004F300; + } + break; + case '\x03': + *displaylist = 0x6000000; + displaylist[1] = 0x1000000; + pGVar2 = (Gfx *)insert_imageDL((Gfx *)(displaylist + 2)); + pGVar2 = (Gfx *)insert_imageDL(pGVar2); + pGVar2 = (Gfx *)insert_imageDL(pGVar2); + pGVar2 = (Gfx *)insert_imageDL(pGVar2); + displaylist = insert_imageDL(pGVar2); + displaylist = insert_sniper_sight_eye_intro(displaylist); + displaylist = insert_sight_backdrop_eye_intro(displaylist); + param_1 = (longlong)(int)displaylist; + if (num_obj_position_data_entries < 600.00000000) { + insert_bond_eye_intro(displaylist); + } + num_obj_position_data_entries = num_obj_position_data_entries - flt_8004F304; + if (num_obj_position_data_entries <= -80.00000000) { + dword_8002A7D4 += '\x01'; + intro_eye_counter = 0x14; + } + break; + case '\x04': + displaylist = insert_sniper_sight_eye_intro(displaylist); + displaylist = insert_sight_backdrop_eye_intro(displaylist); + param_1 = (longlong)(int)displaylist; + insert_bond_eye_intro(displaylist); + intro_eye_counter -= 1; + if ((int)intro_eye_counter < 0) { + dword_8002A7D4 += '\x01'; + die_blood_image_routine(); + intro_state_blood_animation = 0; + param_1 = (longlong)(int)param_1; + intro_eye_counter = 1; + } + break; + case '\x05': + intro_eye_counter -= 1; + if (intro_eye_counter == 0) { + intro_state_blood_animation = die_blood_image_routine(); + intro_eye_counter = 2; + } + displaylist = insert_sniper_sight_eye_intro(displaylist); + displaylist = insert_sight_backdrop_eye_intro(displaylist); + insert_bond_eye_intro(displaylist); + displaylist = proc_7F01C400(displaylist); + param_1 = (longlong)(int)displaylist; + if (intro_state_blood_animation != 0) { + dword_8002A7D4 += '\x01'; + DAT_80069584 = 0; + DAT_8006957c = num_obj_position_data_entries; + intro_eye_counter = 0; + } + break; + case '\x06': + intro_eye_counter += 1; + x = DAT_80069584 + 0x38e; + DAT_80069584 = DAT_80069584 + 0x38e; + sVar3 = sins(x); + num_obj_position_data_entries = + ((float)(int)sVar3 * 64.00000000) / 32768.00000000 + DAT_8006957c; + displaylist = insert_sniper_sight_eye_intro(displaylist); + displaylist = insert_sight_backdrop_eye_intro(displaylist); + insert_bond_eye_intro(displaylist); + displaylist = proc_7F01CA18(displaylist); + param_1 = (longlong)(int)displaylist; + if (0x6b < (int)intro_eye_counter) { + intro_eye_counter = 0; + dword_8002A7D4 += '\x01'; + } + break; + case '\a': + x = DAT_80069584 + 0x38e; + DAT_80069584 = DAT_80069584 + 0x38e; + sVar3 = sins(x); + num_obj_position_data_entries = + ((float)(int)sVar3 * 64.00000000) / 32768.00000000 + DAT_8006957c; + displaylist = insert_sniper_sight_eye_intro(displaylist); + displaylist = insert_sight_backdrop_eye_intro(displaylist); + insert_bond_eye_intro(displaylist); + displaylist = proc_7F01CA18(displaylist); + intro_eye_counter += 8; + displaylist = proc_7F007E70(displaylist,intro_eye_counter); + param_1 = (longlong)(int)displaylist; + if (0xf6 < (int)intro_eye_counter) { + intro_eye_counter = 0; + dword_8002A7D4 += '\x01'; + } + break; + case '\b': + *displaylist = 0x6000000; + displaylist[1] = 0x1000000; + displaylist = insert_imageDL((Gfx *)(displaylist + 2)); + param_1 = (longlong)(int)displaylist; + bVar1 = 0x1d < (int)intro_eye_counter; + intro_eye_counter += 1; + if (bVar1) { + intro_eye_counter = 0; + dword_8002A7D4 += '\x01'; + } } - else { - DAT_80069584 += -6; - } - if (flt_8004F2FC < num_obj_position_data_entries) { - dword_8002A7D4 += '\x01'; - num_obj_position_data_entries = flt_8004F300; - } - break; - case '\x03': - *displaylist = 0x6000000; - displaylist[1] = 0x1000000; - displaylist = insert_imageDL(displaylist + 2); - displaylist = insert_imageDL(displaylist); - displaylist = insert_imageDL(displaylist); - displaylist = insert_imageDL(displaylist); - displaylist = insert_imageDL(displaylist); - displaylist = insert_sniper_sight_eye_intro(displaylist); - displaylist = insert_sight_backdrop_eye_intro(displaylist); - param_1 = (longlong)(int)displaylist; - if (num_obj_position_data_entries < 600.00000000) { - insert_bond_eye_intro(displaylist); - } - num_obj_position_data_entries = num_obj_position_data_entries - flt_8004F304; - if (num_obj_position_data_entries <= -80.00000000) { - dword_8002A7D4 += '\x01'; - intro_eye_counter = 0x14; - } - break; - case '\x04': - displaylist = insert_sniper_sight_eye_intro(displaylist); - displaylist = insert_sight_backdrop_eye_intro(displaylist); - param_1 = (longlong)(int)displaylist; - insert_bond_eye_intro(displaylist); - intro_eye_counter -= 1; - if ((int)intro_eye_counter < 0) { - dword_8002A7D4 += '\x01'; - die_blood_image_routine(); - intro_state_blood_animation = 0; - param_1 = (longlong)(int)param_1; - intro_eye_counter = 1; - } - break; - case '\x05': - intro_eye_counter -= 1; - if (intro_eye_counter == 0) { - intro_state_blood_animation = die_blood_image_routine(); - intro_eye_counter = 2; - } - displaylist = insert_sniper_sight_eye_intro(displaylist); - displaylist = insert_sight_backdrop_eye_intro(displaylist); - insert_bond_eye_intro(displaylist); - displaylist = proc_7F01C400(displaylist); - param_1 = (longlong)(int)displaylist; - if (intro_state_blood_animation != 0) { - dword_8002A7D4 += '\x01'; - DAT_80069584 = 0; - DAT_8006957c = num_obj_position_data_entries; - intro_eye_counter = 0; - } - break; - case '\x06': - intro_eye_counter += 1; - x = DAT_80069584 + 0x38e; - DAT_80069584 = DAT_80069584 + 0x38e; - sVar2 = sins(x); - num_obj_position_data_entries = - ((float)(int)sVar2 * 64.00000000) / 32768.00000000 + DAT_8006957c; - displaylist = insert_sniper_sight_eye_intro(displaylist); - displaylist = insert_sight_backdrop_eye_intro(displaylist); - insert_bond_eye_intro(displaylist); - displaylist = proc_7F01CA18(displaylist); - param_1 = (longlong)(int)displaylist; - if (0x6b < (int)intro_eye_counter) { - intro_eye_counter = 0; - dword_8002A7D4 += '\x01'; - } - break; - case '\a': - x = DAT_80069584 + 0x38e; - DAT_80069584 = DAT_80069584 + 0x38e; - sVar2 = sins(x); - num_obj_position_data_entries = - ((float)(int)sVar2 * 64.00000000) / 32768.00000000 + DAT_8006957c; - displaylist = insert_sniper_sight_eye_intro(displaylist); - displaylist = insert_sight_backdrop_eye_intro(displaylist); - insert_bond_eye_intro(displaylist); - displaylist = proc_7F01CA18(displaylist); - intro_eye_counter += 8; - displaylist = proc_7F007E70(displaylist,intro_eye_counter); - param_1 = (longlong)(int)displaylist; - if (0xf6 < (int)intro_eye_counter) { - intro_eye_counter = 0; - dword_8002A7D4 += '\x01'; - } - break; - case '\b': - *displaylist = 0x6000000; - displaylist[1] = 0x1000000; - displaylist = insert_imageDL(displaylist + 2); - param_1 = (longlong)(int)displaylist; - bVar1 = 0x1d < (int)intro_eye_counter; - intro_eye_counter += 1; - if (bVar1) { - intro_eye_counter = 0; - dword_8002A7D4 += '\x01'; - } - } - return param_1; + return param_1; } @@ -28683,7 +28862,7 @@ longlong proc_7F009254(longlong param_1) ulonglong proc_7F009744(void) { - return (ulonglong)(dword_8002A7D4 == '\t'); + return (ulonglong)(dword_8002A7D4 == '\t'); } @@ -28693,19 +28872,19 @@ uint * write_text_at_abs_coord uint param_7,int param_8,int param_9,int param_10,int param_11) { - uint *puVar1; - - if (j_text_trigger == 0) { - puVar1 = en_text_write_stuff(param_1,(int *)param_2,(int *)param_3,param_4,param_5,param_6, - param_7,param_8,param_9,param_10,param_11); - } - else { - puVar1 = jp_text_stuff(param_1,param_2,param_3,param_4,param_5,param_6,param_7, - (uint)dword_8002A9B0 << 0x18 | (uint)dword_8002A9B4 << 0x10 | - (uint)dword_8002A9B8 << 8 | (uint)dword_8002A9BC,param_8,param_9,param_10 - ,param_11); - } - return puVar1; + uint *in_v0_lo; + + if (j_text_trigger == 0) { + en_text_write_stuff(param_1,(int *)param_2,(int *)param_3,param_4,param_5,param_6,param_7, + param_8,param_9,param_10,param_11); + } + else { + jp_text_stuff(param_1,param_2,param_3,param_4,param_5,param_6,param_7, + (uint)dword_8002A9B0 << 0x18 | (uint)dword_8002A9B4 << 0x10 | + (uint)dword_8002A9B8 << 8 | (uint)dword_8002A9BC,param_8,param_9,param_10, + param_11); + } + return in_v0_lo; } @@ -28713,78259 +28892,22 @@ uint * write_text_at_abs_coord ulonglong check_if_cheat_available(u32 cheat) { - ulonglong uVar1; - save_file *folder; - u32 uVar2; - - switch(cheat) { - case 1: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 0xd: - case 0x10: - case 0x16: - case 0x19: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - case 0x2c: - case 0x2d: - case 0x2e: - case 0x2f: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3a: - case 0x3b: - case 0x3c: - case 0x3d: - case 0x3e: - case 0x3f: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4a: - uVar1 = 0; - break; - case 2: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,1); - break; - case 3: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0x13); - break; - case 10: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,10); - break; - case 0xb: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0xf); - break; - case 0xc: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,2); - break; - case 0xe: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,7); - break; - case 0xf: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0); - break; - case 0x11: - uVar2 = check_cradle_completed_in_folder(selected_folder_num); - uVar1 = SEXT48((int)uVar2); - break; - case 0x12: - uVar2 = check_aztec_completed_in_folder_secret_00(selected_folder_num); - uVar1 = SEXT48((int)uVar2); - break; - case 0x13: - uVar2 = check_egypt_completed_in_folder_00(selected_folder_num); - uVar1 = SEXT48((int)uVar2); - break; - case 0x14: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0xd); - break; - case 0x15: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0x11); - break; - case 0x17: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,6); - break; - case 0x18: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,5); - break; - case 0x1a: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,9); - break; - case 0x1b: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0xc); - break; - case 0x1c: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0xb); - break; - case 0x1d: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,4); - break; - case 0x1e: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,3); - break; - case 0x1f: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0x10); - break; - case 0x20: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,8); - break; - case 0x21: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0xe); - break; - case 0x22: - folder = getEEPROMforFoldernum(selected_folder_num); - uVar1 = check_if_cheat_unlocked(folder,0x12); - break; - default: - do { - // WARNING: Do nothing block with infinite loop - } while( true ); - } - return uVar1; -} - - - -int getplayerfavoredweapon(int param_1,int param_2) - -{ - int iVar1; - - iVar1 = get_ptr_long_watch_text_for_item((&(&fav_weapon_player1)[param_1].right)[param_2]); - return iVar1; -} - - - -int menu_control_stick_tracking(void) - -{ - char cVar3; - int iVar1; - int iVar2; - int iVar4; - f32 fVar5; - f32 fVar6; - - cVar3 = get_cur_controller_horz_stick_pos('\0'); - iVar1 = get_cur_controller_vert_stick_pos('\0'); - iVar1 = iVar1 * -0x1000000 >> 0x18; - if (cVar3 < -5) { - iVar4 = ((int)cVar3 + 5) * 0x1000000 >> 0x18; - } - else { - if (cVar3 < '\x06') { - iVar4 = 0; - } - else { - iVar4 = ((int)cVar3 + -5) * 0x1000000 >> 0x18; - } - } - if (iVar4 < 0x47) { - if (iVar4 < -0x46) { - iVar4 = -0x46; - } - } - else { - iVar4 = 0x46; - } - if (iVar1 < -5) { - iVar2 = (iVar1 + 5) * 0x1000000 >> 0x18; - } - else { - iVar2 = 0; - if (5 < iVar1) { - iVar2 = (iVar1 + -5) * 0x1000000 >> 0x18; - } - } - cVar3 = (char)iVar2; - if (iVar2 < 0x47) { - if (iVar2 < -0x46) { - cVar3 = -0x46; - } - } - else { - cVar3 = 'F'; - } - if (iVar4 < 1) { - if (iVar4 < 0) { - cursor_h_pos = (f32)((float)cursor_h_pos + - ((float)iVar4 * folder_menu_z_dim - 0.50000000) * global_timer_delta); - } - } - else { - cursor_h_pos = (f32)((float)cursor_h_pos + - ((float)iVar4 * folder_menu_x_dim + 0.50000000) * global_timer_delta); - } - fVar5 = getPlayer_c_screenleft(); - fVar6 = getPlayer_c_screenwidth(); - if (((float)fVar6 + (float)fVar5) - 20.00000000 < (float)cursor_h_pos) { - fVar5 = getPlayer_c_screenleft(); - fVar6 = getPlayer_c_screenwidth(); - cursor_h_pos = (f32)(((float)fVar6 + (float)fVar5) - 20.00000000); - } - else { - fVar5 = getPlayer_c_screenleft(); - if ((float)cursor_h_pos < (float)fVar5 + 20.00000000) { - cursor_h_pos = getPlayer_c_screenleft(); - cursor_h_pos = (f32)((float)cursor_h_pos + 20.00000000); - } - } - iVar1 = (int)cVar3; - if (cVar3 < '\x01') { - if (cVar3 < '\0') { - cursor_v_pos = (f32)((float)cursor_v_pos + - ((float)iVar1 * flt_800519D4 - 0.50000000) * global_timer_delta); - } - } - else { - cursor_v_pos = (f32)((float)cursor_v_pos + - ((float)iVar1 * flt_800519D0 + 0.50000000) * global_timer_delta); - } - fVar5 = getPlayer_c_screentop(); - fVar6 = getPlayer_c_screenheight(); - if (((float)fVar6 + (float)fVar5) - 20.00000000 < (float)cursor_v_pos) { - fVar5 = getPlayer_c_screentop(); - fVar6 = getPlayer_c_screenheight(); - cursor_v_pos = (f32)(((float)fVar6 + (float)fVar5) - 20.00000000); - } - else { - fVar5 = getPlayer_c_screentop(); - if ((float)cursor_v_pos < (float)fVar5 + 20.00000000) { - cursor_v_pos = getPlayer_c_screentop(); - cursor_v_pos = (f32)((float)cursor_v_pos + 20.00000000); - } - } - return iVar1; -} - - - -undefined4 load_draw_selected_icon_folder_select(undefined4 param_1) - -{ - f32 wdivh; - undefined4 local_res0; - uint *local_14; - float local_10; - float local_c; - float local_8; - float local_4; - - if (folder_selection_screen_option_icon == 0) { - local_14 = imgcall; - } - else { - if (folder_selection_screen_option_icon == 1) { - local_14 = DAT_8008d128; - } - else { - if (folder_selection_screen_option_icon == 2) { - local_14 = DAT_8008d128 + 3; - } - } - } - local_res0 = param_1; - likely_generate_DL_for_image_declaration((uint **)register0x000000ec,local_14,4,0,0); - local_8 = truncf((float)cursor_h_pos + 0.50000000); - local_4 = truncf((float)cursor_v_pos + 0.50000000); - local_10 = (float)(uint)*(byte *)(local_14 + 1); - if (false) { - local_10 = local_10 + 4294967296.00000000; - } - local_10 = local_10 * 0.50000000; - local_c = (float)(uint)*(byte *)((int)local_14 + 5); - if (false) { - local_c = local_c + 4294967296.00000000; - } - local_c = local_c * 0.50000000; - display_image_at_on_screen_coord - ((int *)register0x000000ec,(int *)&local_8,wdivh,(int)&local_10, - (uint)*(byte *)(local_14 + 1),(uint)*(byte *)((int)local_14 + 5),0,0,1,0xff,0xff,0xff, - 0xdc,(uint)(*(char *)((int)local_14 + 6) != '\0')); - return local_res0; -} - - - -uint * add_tab1_start(undefined4 *param_1) - -{ - int iVar1; - short sVar3; - short sVar4; - uint *puVar2; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - dword_CODE_bss_80069770 = get_textptr_for_textID(0x9c04); - proc_7F0ACB78(1); - iStack16 = 0; - iStack12 = 0; - proc_7F0AE98C(&iStack12,&iStack16,dword_CODE_bss_80069770,D_80040EB0,D_80040EAC,0); - iStack4 = 0x33; - iVar1 = iStack12; - if (iStack12 < 0) { - iVar1 = iStack12 + 1; - } - iStack8 = 0x19b - (iVar1 >> 1); - if (tab_1_highlight != FALSE) { - param_1 = microcode_constructor_related_to_menus - (param_1,(longlong)((iStack8 - iStack12) + 1),0x33,(longlong)iStack8,0x75, - 0x32); - } - proc_7F0ACB88(1); - iVar1 = iStack16; - if (iStack16 < 0) { - iVar1 = iStack16 + 1; - } - iStack4 = 0x54 - (iVar1 >> 1); - sVar3 = get_video2_settings_txtClipH(); - sVar4 = get_video2_settings_txtClipW(); - puVar2 = en_text_write_stuff(param_1,&iStack4,&iStack8,dword_CODE_bss_80069770,D_80040EB0, - (int)D_80040EAC,0xff,(int)sVar3,(int)sVar4,0,0); - proc_7F0ACB88(0); - proc_7F0ACB78(0); - return puVar2; -} - - - -undefined8 isontab1(void) - -{ - if ((390.00000000 < (float)cursor_h_pos) && ((float)cursor_v_pos <= (float)tab1_max_x_coord)) { - return 1; - } - return 0; -} - - - -uint * add_tab3_previous(undefined4 *param_1) - -{ - int iVar1; - short sVar3; - short sVar4; - uint *puVar2; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - DAT_80069778 = get_textptr_for_textID(0x9c06); - proc_7F0ACB78(1); - iStack16 = 0; - iStack12 = 0; - proc_7F0AE98C(&iStack12,&iStack16,DAT_80069778,D_80040EB0,D_80040EAC,0); - iStack4 = 0xec; - iVar1 = iStack12; - if (iStack12 < 0) { - iVar1 = iStack12 + 1; - } - iStack8 = 0x19b - (iVar1 >> 1); - if (tab_3_highlight != FALSE) { - param_1 = microcode_constructor_related_to_menus - (param_1,(longlong)((iStack8 - iStack12) + 1),0xec,(longlong)iStack8,0x12e, - 0x32); - } - proc_7F0ACB88(1); - iVar1 = iStack16; - if (iStack16 < 0) { - iVar1 = iStack16 + 1; - } - iStack4 = 0x10d - (iVar1 >> 1); - sVar3 = get_video2_settings_txtClipH(); - sVar4 = get_video2_settings_txtClipW(); - puVar2 = en_text_write_stuff(param_1,&iStack4,&iStack8,DAT_80069778,D_80040EB0,(int)D_80040EAC, - 0xff,(int)sVar3,(int)sVar4,0,0); - proc_7F0ACB88(0); - proc_7F0ACB78(0); - return puVar2; -} - - - -undefined8 isontab3(void) - -{ - if ((390.00000000 < (float)cursor_h_pos) && (223.00000000 < (float)cursor_v_pos)) { - return 1; - } - return 0; -} - - - -void set_cursor_pos_tab2(void) - -{ - cursor_h_pos = tab2_first_x_coord; - cursor_v_pos = 144.00000000; - return; -} - - - -uint * add_tab2_next(undefined4 *param_1) - -{ - int iVar1; - short sVar3; - short sVar4; - uint *puVar2; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - DAT_80069774 = get_textptr_for_textID(0x9c05); - proc_7F0ACB78(1); - iStack16 = 0; - iStack12 = 0; - proc_7F0AE98C(&iStack12,&iStack16,DAT_80069774,D_80040EB0,D_80040EAC,0); - iStack4 = 0x90; - iVar1 = iStack12; - if (iStack12 < 0) { - iVar1 = iStack12 + 1; - } - iStack8 = 0x19b - (iVar1 >> 1); - if (tab_2_highlight != FALSE) { - param_1 = microcode_constructor_related_to_menus - (param_1,(longlong)((iStack8 - iStack12) + 1),0x90,(longlong)iStack8,0xd2, - 0x32); - } - proc_7F0ACB88(1); - iVar1 = iStack16; - if (iStack16 < 0) { - iVar1 = iStack16 + 1; - } - iStack4 = 0xb1 - (iVar1 >> 1); - sVar3 = get_video2_settings_txtClipH(); - sVar4 = get_video2_settings_txtClipW(); - puVar2 = en_text_write_stuff(param_1,&iStack4,&iStack8,DAT_80069774,D_80040EB0,(int)D_80040EAC, - 0xff,(int)sVar3,(int)sVar4,0,0); - proc_7F0ACB88(0); - proc_7F0ACB78(0); - return puVar2; -} - - - -undefined8 isontab2(void) - -{ - if (((390.00000000 < (float)cursor_h_pos) && ((float)tab2_bottom_y_coord < (float)cursor_v_pos)) - && ((float)cursor_v_pos <= 223.00000000)) { - return 1; - } - return 0; -} - - - -void init_menu00_legalscreen(void) - -{ - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - f32 scale; - float fStack16; - float fStack12; - float fStack8; - - musicTrack1Stop(); - maybe_is_in_menu = TRUE; - menu_timer = 0; - fStack16 = dword_8002A9C0.x; - fStack12 = dword_8002A9C0.y; - fStack8 = dword_8002A9C0.z; - load_object_fill_header - ((object_header *)PitemZ_entries[319].header,(u8 *)PitemZ_entries[319].filename, - (int)ptr_logo_and_walletbond_DL,0x3c000,0); - set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[319].header); - something_screen_constructor = get_obj_instance_controller_for_header(PitemZ_entries[319].header); - set_obj_instance_controller_scale(something_screen_constructor,scale); - setsuboffset(something_screen_constructor,&fStack16,extraout_a2_lo,extraout_a3_lo); - proc_7F01DF90(); - return; -} - - - -void update_menu00_legalscreen(void) - -{ - is_first_time_on_legal_screen = FALSE; - set_obj_instance_scale_to_zero(something_screen_constructor); - return; -} - - - -void interface_menu00_legalscreen(undefined8 param_1,undefined8 param_2) - -{ - longlong lVar1; - ulonglong uVar2; - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu00_aspect); - set_page_height(100.00000000,(f32)menu00_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - menu_timer += clock_timer; - if (menu_timer < 0xf1) { - uVar2 = get_controller_buttons_pressed('\0',0xffff); - if ((uVar2 != 0) && (is_first_time_on_legal_screen == FALSE)) { - if (is_first_time_on_main_menu == FALSE) { - set_menu_to_mode(5,1); - } - else { - set_menu_to_mode(1,1); - } - } - } - else { - lVar1 = get_attached_controller_count(); - if ((lVar1 < 1) && (is_first_time_on_legal_screen != FALSE)) { - set_menu_to_mode(0x16,1); - } - else { - set_menu_to_mode(1,1); - } - } - return; -} - - - -uint * display_aligned_white_text_to_screen - (undefined4 *param_1,int param_2,int param_3,int param_4,int param_5,byte *param_6, - int param_7,int param_8) - -{ - short sVar2; - short sVar3; - uint *puVar1; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - iStack8 = 0; - iStack4 = 0; - proc_7F0AE98C(&iStack4,&iStack8,param_6,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - param_4 *= iStack8; - if (param_4 < 0) { - param_4 += 1; - } - param_5 *= iStack4; - iStack12 = param_2 - (param_4 >> 1); - if (param_5 < 0) { - param_5 += 1; - } - iStack16 = param_3 - (param_5 >> 1); - sVar2 = get_video2_settings_txtClipW(); - sVar3 = get_video2_settings_txtClipH(); - puVar1 = en_text_write_stuff(param_1,&iStack12,&iStack16,param_6,param_7,param_8,0xffffffff, - (int)sVar2,(int)sVar3,0,0); - return puVar1; -} - - - -u32 * constructor_menu00_legalscreen(undefined4 *param_1) - -{ - undefined4 *DL; - uint *puVar1; - byte *pbVar2; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float **ppfVar3; - float **ppfVar4; - float **ppfVar5; - float **ppfVar6; - int iVar7; - longlong lVar8; - legal_screen_text *plVar9; - int iVar10; - float extraout_f12; - float extraout_f14; - undefined4 auStack208 [18]; - float afStack136 [17]; - float *pfStack68; - undefined4 uStack64; - undefined4 uStack60; - undefined4 *puStack56; - undefined4 *puStack52; - - ppfVar5 = (float **)dword_8002AABC; - ppfVar3 = &pfStack68; - do { - ppfVar6 = ppfVar5 + 3; - ppfVar4 = ppfVar3 + 3; - *ppfVar3 = *ppfVar5; - ppfVar3[1] = ppfVar5[1]; - ppfVar3[2] = ppfVar5[2]; - ppfVar5 = ppfVar6; - ppfVar3 = ppfVar4; - } while (ppfVar6 != (float **)0x8002aaf8); - *ppfVar4 = pfRam8002aaf8; - puStack56 = insert_imageDL(param_1); - puStack52 = puStack56; - proc_7F059694(afStack136,extraout_f12,extraout_f14,0.00000000,0.00000000,4000.00000000,0.00000000, - 0.00000000,0.00000000,0.00000000); - pfStack68 = afStack136; - proc_7F0BD714((int)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) << 6); - proc_7F058020(afStack136,puStack52); - *(undefined4 **)(something_screen_constructor + 0xc) = puStack52; - proc_7F06EFC4(something_screen_constructor); - uStack60 = 3; - uStack64 = 0; - subdraw((int)&pfStack68,something_screen_constructor,extraout_a2_lo,extraout_a3_lo); - DL = puStack56; - lVar8 = 0; - iVar10 = 0; - if (0 < *(short *)(*(int *)(something_screen_constructor + 8) + 0xe)) { - iVar7 = *(int *)(something_screen_constructor + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar7 + iVar10),auStack208); - proc_7F058C9C((int)auStack208, - (uint *)(*(int *)(something_screen_constructor + 0xc) + (int)lVar8 * 0x40)); - lVar8 = (longlong)((int)lVar8 + 1); - iVar10 += 0x40; - if ((longlong)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) <= lVar8) break; - iVar7 = *(int *)(something_screen_constructor + 0xc); - } - } - puVar1 = microcode_constructor(DL); - plVar9 = legal_screen_constructer_table; - do { - pbVar2 = get_textptr_for_textID(plVar9->txtID); - puVar1 = display_aligned_white_text_to_screen - (puVar1,plVar9->h_pos,plVar9->v_pos,plVar9->flag,plVar9->flag2,pbVar2, - (int)ptrSecondFontTable,(int)ptrFirstFontTable); - plVar9 = plVar9 + 1; - } while (plVar9 < dword_8002AABC); - return (u32 *)puVar1; -} - - - -void reset_menutimer(void) - -{ - menu_timer = 0; - return; -} - - - -void dummy7F00AAF8(void) - -{ - return; -} - - - -void interface_menu17_switchscreens(undefined8 param_1,undefined8 param_2) - -{ - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu17_aspect); - set_page_height(100.00000000,(f32)menu17_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - if (((3 < menu_timer + 1) && (spectrum_related_flag == FALSE)) && (is_emulating_spectrum == FALSE) - ) { - maybe_prev_menu = menu_update; - menu_update = ~MENU_LEGAL_SCREEN; - } - menu_timer = menu_timer + 1; - return; -} - - - -u32 * constructor_menu17_switchscreens(undefined4 *param_1) - -{ - u32 *puVar1; - - puVar1 = insert_imageDL(param_1); - return puVar1; -} - - - -void init_menu01_nintendo(void) - -{ - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - f32 scale; - float fStack12; - undefined4 uStack8; - undefined4 uStack4; - - menu_timer = 0; - fStack12 = FLOAT_8002aafc; - uStack8 = DAT_8002ab00; - uStack4 = DAT_8002ab04; - load_object_fill_header - ((object_header *)PitemZ_entries[276].header,(u8 *)PitemZ_entries[276].filename, - (int)ptr_logo_and_walletbond_DL,0x3c000,0); - set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[276].header); - something_screen_constructor = get_obj_instance_controller_for_header(PitemZ_entries[276].header); - set_obj_instance_controller_scale(something_screen_constructor,scale); - setsuboffset(something_screen_constructor,&fStack12,extraout_a2_lo,extraout_a3_lo); - musicTrack1Play(M_INTROSWOOSH); - maybe_is_in_menu = TRUE; - dword_80069CD4 = flt_800519F4; - f32_80069618 = flt_800519F8; - return; -} - - - -void update_menu01_nintendo(void) - -{ - set_obj_instance_scale_to_zero(something_screen_constructor); - return; -} - - - -void interface_menu01_nintendo(undefined8 param_1,undefined8 param_2) - -{ - ulonglong uVar1; - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu01_aspect); - set_page_height(100.00000000,(f32)menu01_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - menu_timer += clock_timer; - if (menu_timer < 0x1f5) { - uVar1 = get_controller_buttons_pressed('\0',0xffff); - if (uVar1 != 0) { - if (is_first_time_on_main_menu == FALSE) { - set_menu_to_mode(5,1); - } - else { - prev_keypresses = 1; - set_menu_to_mode(2,1); - } - } - } - else { - set_menu_to_mode(2,1); - } - return; -} - - - -u32 * constructor_menu01_nintendo(undefined4 *param_1) - -{ - u32 *puVar1; - undefined4 *puVar2; - int iVar3; - undefined8 extraout_a0; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float **ppfVar4; - float **ppfVar5; - int iVar6; - float **ppfVar7; - float **ppfVar8; - longlong lVar9; - float extraout_f12; - float extraout_f14; - undefined4 auStack280 [16]; - float afStack216 [20]; - float afStack136 [18]; - float *pfStack64; - undefined4 uStack60; - undefined4 uStack56; - u32 *puStack52; - f32 *pfStack48; - - ppfVar7 = (float **)buffer_8002ab08; - ppfVar4 = &pfStack64; - do { - ppfVar8 = ppfVar7 + 3; - ppfVar5 = ppfVar4 + 3; - *ppfVar4 = *ppfVar7; - ppfVar4[1] = ppfVar7[1]; - ppfVar4[2] = ppfVar7[2]; - ppfVar7 = ppfVar8; - ppfVar4 = ppfVar5; - } while (ppfVar8 != (float **)0x8002ab44); - *ppfVar5 = pfRam8002ab44; - puVar2 = insert_imageDL(param_1); - *puVar2 = 0xbc000002; - puVar2[1] = 0x80000040; - puVar2[2] = 0x3860010; - puVar2[3] = 0x8002a990; - puStack52 = puVar2 + 6; - puVar2[4] = 0x3880010; - puVar2[5] = 0x8002a988; - pfStack48 = &dword_80069CD4; - iVar3 = 0xff - (menu_timer * 0xff + -0x1708e) / 100; - if (0xff < iVar3) { - iVar3 = 0xff; - } - rgba_8002a988.R = (char)iVar3; - if (iVar3 < 0) { - rgba_8002a988.R = '\0'; - } - dword_80069CD4 = (f32)((float)dword_80069CD4 + flt_80051A04); - rgba_8002a988.G = rgba_8002a988.R; - rgba_8002a988.B = rgba_8002a988.R; - rgba_8002A98C.R = rgba_8002a988.R; - rgba_8002A98C.G = rgba_8002a988.R; - rgba_8002A98C.B = rgba_8002a988.R; - proc_7F0585FC((float)dword_80069CD4,ZEXT48(&rgba_8002a988),afStack216); - proc_7F058BB8((float)f32_80069618,extraout_a0,afStack216); - f32_80069618 = (f32)((float)f32_80069618 * flt_80051A0C); - if (flt_80051A08 < (float)f32_80069618) { - f32_80069618 = (f32)flt_80051A08; - } - proc_7F059694(afStack136,extraout_f12,extraout_f14,0.00000000,0.00000000,4000.00000000,0.00000000, - 0.00000000,0.00000000,0.00000000); - proc_7F058068(afStack136,afStack216); - proc_7F058020(afStack216,afStack136); - pfStack64 = afStack136; - proc_7F0BD714((int)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) << 6); - proc_7F058020(afStack136,pfStack48); - *(f32 **)(something_screen_constructor + 0xc) = pfStack48; - proc_7F06EFC4(something_screen_constructor); - uStack56 = 3; - uStack60 = 0; - subdraw((int)&pfStack64,something_screen_constructor,extraout_a2_lo,extraout_a3_lo); - puVar1 = puStack52; - lVar9 = 0; - iVar3 = 0; - if (0 < *(short *)(*(int *)(something_screen_constructor + 8) + 0xe)) { - iVar6 = *(int *)(something_screen_constructor + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar6 + iVar3),auStack280); - proc_7F058C9C((int)auStack280, - (uint *)(*(int *)(something_screen_constructor + 0xc) + (int)lVar9 * 0x40)); - lVar9 = (longlong)((int)lVar9 + 1); - iVar3 += 0x40; - if ((longlong)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) <= lVar9) break; - iVar6 = *(int *)(something_screen_constructor + 0xc); - } - } - return puVar1; -} - - - -int ** init_menu02_rareware(void) - -{ - int **ppiVar1; - - proc_7F008B58((longlong)(int)ptr_logo_and_walletbond_DL); - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0x102,NULL); - return ppiVar1; -} - - - -void update_menu02_rareware(void) - -{ - return; -} - - - -void interface_menu02_rareware(void) - -{ - ulonglong uVar1; - - set_video2_settings_offset_24(0); - uVar1 = proc_7F008DD0(); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_pressed('\0',0xffff); - if (uVar1 != 0) { - if (is_first_time_on_main_menu == FALSE) { - set_menu_to_mode(5,1); - } - else { - prev_keypresses = 1; - set_menu_to_mode(3,1); - } - } - } - else { - set_menu_to_mode(3,1); - } - return; -} - - - -u32 * constructor_menu02_rareware(undefined4 *param_1) - -{ - u32 *puVar1; - - puVar1 = retrieve_display_rareware_logo(param_1); - return puVar1; -} - - - -void init_menu03_eyeintro(void) - -{ - proc_7F008E80((short *)ptr_logo_and_walletbond_DL,0x78000); - musicTrack1Play(M_INTRO); - maybe_is_in_menu = TRUE; - return; -} - - - -void update_menu_03_eyeintro(void) - -{ - proc_7F00920C(); - return; -} - - - -void interface_menu03_eyeintro(void) - -{ - ulonglong uVar1; - - set_video2_settings_offset_24(0); - uVar1 = proc_7F009744(); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_pressed('\0',0xffff); - if (uVar1 != 0) { - if (is_first_time_on_main_menu == FALSE) { - set_menu_to_mode(5,1); - } - else { - prev_keypresses = 1; - set_menu_to_mode(4,1); - } - } - } - else { - set_menu_to_mode(4,1); - } - return; -} - - - -u32 * constructor_menu03_eyeintro(undefined4 *param_1) - -{ - longlong lVar1; - - lVar1 = proc_7F009254((longlong)(int)param_1); - return (u32 *)lVar1; -} - - - -void init_menu04_goldeneyelogo(void) - -{ - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - f32 scale; - float fStack12; - undefined4 uStack8; - undefined4 uStack4; - - menu_timer = 0; - fStack12 = DAT_8002ab48; - uStack8 = DAT_8002ab4c; - uStack4 = DAT_8002ab50; - load_object_fill_header - ((object_header *)PitemZ_entries[277].header,(u8 *)PitemZ_entries[277].filename, - (int)ptr_logo_and_walletbond_DL,0x3c000,0); - set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[277].header); - something_screen_constructor = get_obj_instance_controller_for_header(PitemZ_entries[277].header); - set_obj_instance_controller_scale(something_screen_constructor,scale); - setsuboffset(something_screen_constructor,&fStack12,extraout_a2_lo,extraout_a3_lo); - return; -} - - - -void update_menu04_goldeneyelogo(void) - -{ - is_first_time_on_main_menu = FALSE; - set_obj_instance_scale_to_zero(something_screen_constructor); - return; -} - - - -// WARNING: Instruction at (ram,0x7f00b440) overlaps instruction at (ram,0x7f00b43c) -// - -void interface_menu04_goldeneyelogo(undefined8 param_1,undefined8 param_2) - -{ - ulonglong uVar1; - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu04_aspect); - set_page_height(100.00000000,(f32)menu04_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - menu_timer += clock_timer; - if (((is_first_time_on_main_menu == FALSE) || (0xb4 < menu_timer)) || - ((ge_logo_bool != FALSE && (0x5a < menu_timer)))) { - if (menu_timer < 0xb5) { - uVar1 = get_controller_buttons_pressed('\0',0xffff); - if ((uVar1 != 0) || ((is_first_time_on_main_menu != FALSE && (ge_logo_bool != FALSE)))) { - set_menu_to_mode(5,1); - } - } - else { - if (prev_keypresses == 0) { - do_extended_cast_display(0); - set_menu_to_mode(0x18,1); - } - else { - set_menu_to_mode(5,1); - } - } - } - else { - uVar1 = get_controller_buttons_pressed('\0',0xffff); - if (uVar1 != 0) { - ge_logo_bool = TRUE; - } - } - return; -} - - - -u32 * constructor_menu04_goldeneyelogo(undefined4 *param_1) - -{ - u32 *puVar1; - undefined4 *puVar2; - LookAt *l; - undefined8 extraout_a0; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float **ppfVar3; - float **ppfVar4; - int iVar5; - float **ppfVar6; - float **ppfVar7; - longlong lVar8; - int iVar9; - float xEye; - float extraout_f12; - float yEye; - float extraout_f14; - undefined4 auStack292 [21]; - byte abStack208 [72]; - float afStack136 [18]; - float *pfStack64; - undefined4 uStack60; - undefined4 uStack56; - u32 *puStack52; - LookAt *pLStack48; - - ppfVar6 = (float **)buffer_8002ab54; - ppfVar3 = &pfStack64; - do { - ppfVar7 = ppfVar6 + 3; - ppfVar4 = ppfVar3 + 3; - *ppfVar3 = *ppfVar6; - ppfVar3[1] = ppfVar6[1]; - ppfVar3[2] = ppfVar6[2]; - ppfVar6 = ppfVar7; - ppfVar3 = ppfVar4; - } while (ppfVar7 != (float **)0x8002ab90); - *ppfVar4 = pfRam8002ab90; - puVar2 = set_setfillcolor(param_1,0,0,0); - pLStack48 = (LookAt *)insert_generic_fillrect(puVar2); - l = pLStack48; - proc_7F0BD6F8(2); - guLookAtReflect((Mtx *)abStack208,l,xEye,yEye,0.00000000,0.00000000,4000.00000000,0.00000000, - 0.00000000,0.00000000,0.00000000); - *(undefined4 *)pLStack48->l = 0xbc000002; - *(undefined4 *)(pLStack48->l + 4) = 0x80000040; - *(undefined4 *)(pLStack48->l + 8) = 0x3860010; - *(undefined4 *)(pLStack48->l + 0xc) = 0x8002a978; - *(undefined4 *)(pLStack48->l + 0x10) = 0x3880010; - *(undefined4 *)(pLStack48->l + 0x14) = 0x8002a970; - *(undefined4 *)(pLStack48->l + 0x18) = 0x3840010; - *(LookAt **)(pLStack48->l + 0x1c) = l; - *(byte **)(pLStack48[1].l + 4) = l->l + 0x10; - *(undefined4 *)pLStack48[1].l = 0x3820010; - puStack52 = (u32 *)(pLStack48[1].l + 8); - proc_7F059694(afStack136,extraout_f12,extraout_f14,0.00000000,0.00000000,3000.00000000,0.00000000, - 0.00000000,0.00000000,0.00000000); - pfStack64 = afStack136; - proc_7F0BD714((int)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) << 6); - matrix_multiply_A1_by_F12(flt_80051A18,extraout_a0,afStack136); - proc_7F058020(afStack136,(undefined4 *)pLStack48); - *(LookAt **)(something_screen_constructor + 0xc) = pLStack48; - proc_7F06EFC4(something_screen_constructor); - uStack56 = 3; - uStack60 = 0; - subdraw((int)&pfStack64,something_screen_constructor,extraout_a2_lo,extraout_a3_lo); - puVar1 = puStack52; - lVar8 = 0; - iVar9 = 0; - if (0 < *(short *)(*(int *)(something_screen_constructor + 8) + 0xe)) { - iVar5 = *(int *)(something_screen_constructor + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar5 + iVar9),auStack292); - proc_7F058C9C((int)auStack292, - (uint *)(*(int *)(something_screen_constructor + 0xc) + (int)lVar8 * 0x40)); - lVar8 = (longlong)((int)lVar8 + 1); - iVar9 += 0x40; - if ((longlong)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) <= lVar8) break; - iVar5 = *(int *)(something_screen_constructor + 0xc); - } - } - return puVar1; -} - - - -void disable_all_switches(int param_1) - -{ - ushort *partdesc; - undefined4 *puVar1; - int iVar2; - longlong lVar3; - longlong lVar4; - int iVar5; - int iVar6; - - iVar2 = *(int *)(param_1 + 8); - lVar4 = 0; - lVar3 = (longlong)*(short *)(iVar2 + 0xc); - iVar6 = 0; - if (0 < lVar3) { - do { - partdesc = *(ushort **)(*(int *)(iVar2 + 8) + iVar6); - iVar5 = (int)lVar4; - if (partdesc == NULL) { - lVar4 = (longlong)(iVar5 + 1); - } - else { - if ((*partdesc & 0xff) == 0x12) { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar1 = 0; - iVar2 = *(int *)(param_1 + 8); - lVar3 = (longlong)*(short *)(iVar2 + 0xc); - lVar4 = (longlong)(iVar5 + 1); - } - else { - lVar4 = (longlong)(iVar5 + 1); - } - } - iVar6 += 4; - } while (lVar4 < lVar3); - } - return; -} - - - -void set_item_visibility_in_objinstance(int objinstance,int item,undefined4 mode) - -{ - ushort *partdesc; - undefined4 *puVar1; - - partdesc = *(ushort **)(*(int *)(*(int *)(objinstance + 8) + 8) + item * 4); - if (partdesc != NULL) { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(objinstance,partdesc); - *puVar1 = mode; - } - return; -} - - - -void select_load_bond_picture(int objinstance,u32 bondID) - -{ - set_item_visibility_in_objinstance(objinstance,8,1); - set_item_visibility_in_objinstance(objinstance,9,0); - set_item_visibility_in_objinstance(objinstance,10,0); - set_item_visibility_in_objinstance(objinstance,0xb,0); - set_item_visibility_in_objinstance(objinstance,0xf,1); - set_item_visibility_in_objinstance(objinstance,0x10,0); - set_item_visibility_in_objinstance(objinstance,0x11,0); - set_item_visibility_in_objinstance(objinstance,0x12,0); - return; -} - - - -void load_walletbond(void) - -{ - int iVar1; - uint *puVar2; - undefined *instancecontroller; - undefined **ppuVar3; - f32 scale; - - if (ptr_folder_object_instance == NULL) { - load_object_fill_header - ((object_header *)PitemZ_entries[278].header,(u8 *)PitemZ_entries[278].filename, - (int)ptr_logo_and_walletbond_DL,0xa000,0); - set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[278].header); - ppuVar3 = &ptr_folder_object_instance; - do { - instancecontroller = - (undefined *)get_aircraft_obj_instance_controller((int *)PitemZ_entries[278].header); - *ppuVar3 = instancecontroller; - set_obj_instance_controller_scale((int)instancecontroller,scale); - ppuVar3 = ppuVar3 + 1; - } while (ppuVar3 != (undefined **)&dword_8002A96C); - iVar1 = *(int *)(*(int *)&(PitemZ_entries[278].header)->anonymous_2 + 0x54); - if (iVar1 != 0) { - puVar2 = *(uint **)(iVar1 + 4); - proc_7F0BA640((int *)(puVar2[7] + (*puVar2 & 0xffffff)),NULL,8); - } - } - return; -} - - - -void proc_7F00B990(void) - -{ - int *objinstance; - undefined **ppuVar1; - - ppuVar1 = &ptr_folder_object_instance; - objinstance = (int *)ptr_folder_object_instance; - while( true ) { - if (objinstance != NULL) { - set_aircraft_obj_inst_scale_to_zero(objinstance); - *(int **)ppuVar1 = NULL; - } - ppuVar1 = (undefined **)((int **)ppuVar1 + 1); - if (ppuVar1 == (undefined **)&dword_8002A96C) break; - objinstance = (int *)*ppuVar1; - } - return; -} - - - -void init_menu05_filesel(void) - -{ - undefined *puVar1; - ushort *local_8; - int local_4; - - local_8 = (ushort *)(ptr_logo_and_walletbond_DL + 0xa000); - prev_keypresses = 0; - local_4 = 0x6e000; - if ((int)selected_folder_num < 0) { - selected_folder_num = 0; - } - tab_2_selected = FALSE; - tab_3_selected = FALSE; - folder_selected_for_deletion = -1; - folder_selected_for_deletion_choice = 1; - proc_7F008DE4(&local_8,&local_4); - load_walletbond(); - if (maybe_is_in_menu != FALSE) { - musicTrack1Play(M_FOLDERS); - maybe_is_in_menu = FALSE; - } - menu_timer = 0; - CHEAT_AVAILABLE_EXTRA_CHARS[0] = 0; - CHEAT_AVAILABLE_EXTRA_CHARS[1] = 0; - puVar1 = CHEAT_AVAILABLE_EXTRA_CHARS + 2; - do { - puVar1 = puVar1 + 4; - puVar1[1] = 0; - puVar1[2] = 0; - puVar1[3] = 0; - *puVar1 = 0; - puVar1 = puVar1; - } while (puVar1 != CHEAT_AVAILABLE_EXTRA_CHARS + 0x4a); - append_cheat_sp = FALSE; - append_cheat_mp = FALSE; - return; -} - - - -void update_menu05_filesel(void) - -{ - if ((menu_update == MENU_LEGAL_SCREEN) || (maybe_prev_menu == MENU_LEGAL_SCREEN)) { - proc_7F00B990(); - } - return; -} - - - -int get_chapter_briefing_entry(int briefing) - -{ - mission_folder_setup *pmVar1; - - if (-1 < briefing) { - pmVar1 = mission_folder_setup_entries + briefing; - do { - if (pmVar1->type != 0) { - return briefing; - } - briefing += -1; - pmVar1 = (mission_folder_setup *)&pmVar1[-1].folder_text_preset; - } while (-1 < briefing); - } - return -1; -} - - - -void toggle_deletion_menu_for_folder(int param_1) - -{ - float local_8; - float local_4; - - proc_7F077FF4((float *)(&DAT_80069620 + param_1 * 3),&local_8); - cursor_h_pos = (f32)(local_8 + -1.00000000); - cursor_v_pos = (f32)(local_4 + 20.00000000); - return; -} - - - -void interface_menu05_filesel(void) - -{ - undefined *puVar1; - ulonglong uVar2; - undefined4 uVar5; - u32 bondID; - longlong lVar3; - ulonglong uVar4; - f32 extraout_a0_lo; - undefined8 extraout_a0; - undefined **ppuVar6; - undefined4 *puVar7; - float *pfVar8; - u32 folder; - float extraout_f12; - float fVar9; - float extraout_f12_00; - float extraout_f14; - float fVar10; - float extraout_f14_00; - float *pfStack188; - DIFFICULTY DStack180; - STAGENUM SStack176; - float fStack172; - float fStack168; - float fStack164; - float fStack160; - float fStack156; - float fStack152; - float fStack148; - float afStack144 [2]; - float afStack136 [16]; - float afStack72 [18]; - - uVar2 = get_controller_buttons_pressed('\0',0xffff); - if ((((uVar2 == 0) && (uVar2 = get_cur_controller_horz_stick_pos('\0'), -6 < (longlong)uVar2)) && - (uVar2 = get_cur_controller_horz_stick_pos('\0'), (longlong)uVar2 < 6)) && - ((uVar2 = get_cur_controller_vert_stick_pos('\0'), -6 < (longlong)uVar2 && - (uVar2 = get_cur_controller_vert_stick_pos('\0'), (longlong)uVar2 < 6)))) { - menu_timer += clock_timer; - } - else { - menu_timer = 0; - } - video_related_1F(60.00000000); - video_related_21((f32)menu05_aspect); - set_page_height(100.00000000,(f32)menu05_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - puVar7 = &DAT_80069620; - ppuVar6 = &ptr_folder_object_instance; - pfStack188 = &dword_8002AB94; - folder = 0; - fVar9 = extraout_f12; - fVar10 = extraout_f14; - do { - uVar5 = (undefined4)uVar2; - proc_7F059694(afStack72,fVar9,fVar10,0.00000000,0.00000000,4000.00000000,0.00000000,0.00000000, - 0.00000000,0.00000000); - init_something_copy_posdata_to_it((int *)pfStack188,(int *)afStack136); - matrix_multiply_A1_by_F12(flt_80051A24,extraout_a0,afStack136); - proc_7F058068(afStack72,afStack136); - proc_7F0BD714((int)*(short *)(*(int *)(*ppuVar6 + 8) + 0xe) << 6); - *(undefined4 *)(*ppuVar6 + 0xc) = uVar5; - proc_7F058020(afStack136,*(undefined4 **)(*ppuVar6 + 0xc)); - puVar1 = *ppuVar6; - *puVar7 = *(undefined4 *)(*(int *)(puVar1 + 0xc) + 0x30); - puVar7[1] = *(undefined4 *)(*(int *)(puVar1 + 0xc) + 0x34); - puVar7[2] = *(undefined4 *)(*(int *)(puVar1 + 0xc) + 0x38); - disable_all_switches((int)puVar1); - bondID = removed_would_have_returned_bond_for_folder_num(folder); - uVar2 = SEXT48((int)bondID); - select_load_bond_picture((int)*ppuVar6,bondID); - set_item_visibility_in_objinstance((int)*ppuVar6,0xe,1); - set_item_visibility_in_objinstance((int)*ppuVar6,0xd,1); - folder += 1; - pfStack188 = pfStack188 + 3; - ppuVar6 = ppuVar6 + 1; - puVar7 = puVar7 + 3; - fVar9 = extraout_f12_00; - fVar10 = extraout_f14_00; - } while (folder != 4); - if (-1 < (int)selected_folder_num) { - if (selected_folder_num == 100) { - selected_folder_num = selected_folder_num_copy; - } - if (((int)selected_folder_num < 0) || (3 < (int)selected_folder_num)) { - selected_folder_num = 0; - } - toggle_deletion_menu_for_folder(selected_folder_num); - selected_folder_num = 0xffffffff; - } - uVar2 = 0; - if (folder_selected_for_deletion < 0) { - pfVar8 = (float *)&DAT_80069620; - ppuVar6 = &ptr_folder_object_instance; - do { - proc_7F03F90C((int)*ppuVar6,afStack144,&fStack148,&fStack152,&fStack156); - proc_7F03F948(pfVar8,&fStack148,&fStack156,&fStack164,&fStack172); - folder = (u32)uVar2; - if (fStack164 <= (float)cursor_h_pos) { - if ((float)cursor_h_pos <= fStack172) { - if (fStack160 <= (float)cursor_v_pos) { - if ((float)cursor_v_pos <= fStack168) { - get_highest_stage_difficulty_completed_in_folder(folder,&SStack176,&DStack180); - uVar4 = get_controller_buttons_pressed('\0',0xb000); - if (uVar4 != 0) { - if (folder_selection_screen_option_icon == 0) { - selected_folder_num = folder; - play_sfx_a1(ptr_sfx_buf,0x4d,NULL); - } - else { - if (folder_selection_screen_option_icon == 1) { - proc_7F01EDA0(uVar2); - folder_selection_screen_option_icon = 0; - play_sfx_a1(ptr_sfx_buf,0x4f,NULL); - } - else { - if (folder_selection_screen_option_icon == 2) { - if ((-1 < (int)SStack176) && (-1 < DStack180)) { - folder_selected_for_deletion_choice = 1; - folder_selected_for_deletion = folder; - } - folder_selection_screen_option_icon = 0; - play_sfx_a1(ptr_sfx_buf,0x12,NULL); - } - } - } - break; - } - uVar2 = SEXT48((int)(folder + 1)); - } - else { - uVar2 = SEXT48((int)(folder + 1)); - } - } - else { - uVar2 = SEXT48((int)(folder + 1)); - } - } - else { - uVar2 = SEXT48((int)(folder + 1)); - } - } - else { - uVar2 = SEXT48((int)(folder + 1)); - } - ppuVar6 = ppuVar6 + 1; - pfVar8 = pfVar8 + 3; - } while (uVar2 != 4); - uVar2 = get_controller_buttons_pressed('\0',0xb000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if ((uVar2 != 0) && (folder_selection_screen_option_icon != 0)) { - folder_selection_screen_option_icon = 0; - play_sfx_a1(ptr_sfx_buf,0x76,NULL); - } - } - else { - if (((((float)cursor_h_pos < folder_option_COPY_left_bound) || - (folder_option_COPY_right_bound < (float)cursor_h_pos)) || - ((float)cursor_v_pos < folder_option_COPY_upper_bound)) || - (folder_option_COPY_lower_bound < (float)cursor_v_pos)) { - if ((((float)cursor_h_pos < folder_option_ERASE_left_bound) || - (folder_option_ERASE_right_bound < (float)cursor_h_pos)) || - (((float)cursor_v_pos < folder_option_ERASE_upper_bound || - (folder_option_ERASE_lower_bound < (float)cursor_v_pos)))) { - if (folder_selection_screen_option_icon != 0) { - folder_selection_screen_option_icon = 0; - play_sfx_a1(ptr_sfx_buf,0x76,NULL); - } - } - else { - folder_selection_screen_option_icon = 2; - play_sfx_a1(ptr_sfx_buf,0xde,NULL); - } - } - else { - folder_selection_screen_option_icon = 1; - play_sfx_a1(ptr_sfx_buf,0xde,NULL); - } - } - menu_control_stick_tracking(); - } - else { - uVar2 = get_controller_buttons_pressed('\0',0x222); - if ((uVar2 == 0) || (folder_selected_for_deletion_choice != 0)) { - uVar2 = get_controller_buttons_pressed('\0',0x111); - if ((uVar2 != 0) && (folder_selected_for_deletion_choice != 0)) { - folder_selected_for_deletion_choice = 0; - play_sfx_a1(ptr_sfx_buf,0x12,NULL); - } - } - else { - folder_selected_for_deletion_choice = 1; - play_sfx_a1(ptr_sfx_buf,0x12,NULL); - } - lVar3 = get_cur_controller_horz_stick_pos('\0'); - if ((lVar3 < -0x2d) && (folder_selected_for_deletion_choice == 0)) { - folder_selected_for_deletion_choice = 1; - play_sfx_a1(ptr_sfx_buf,0x12,NULL); - } - else { - lVar3 = get_cur_controller_horz_stick_pos('\0'); - if ((0x2d < lVar3) && (folder_selected_for_deletion_choice != 0)) { - folder_selected_for_deletion_choice = 0; - play_sfx_a1(ptr_sfx_buf,0x12,NULL); - } - } - uVar2 = get_controller_buttons_pressed('\0',0xb000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - toggle_deletion_menu_for_folder(folder_selected_for_deletion); - folder_selected_for_deletion = -1; - play_sfx_a1(ptr_sfx_buf,0x76,NULL); - } - } - else { - if (folder_selected_for_deletion_choice == 0) { - delete_eeprom_folder(folder_selected_for_deletion); - play_sfx_a1(ptr_sfx_buf,0x76,NULL); - } - else { - play_sfx_a1(ptr_sfx_buf,0x76,NULL); - } - toggle_deletion_menu_for_folder(folder_selected_for_deletion); - folder_selected_for_deletion = -1; - } - } - if ((int)selected_folder_num < 0) { - if (0x708 < menu_timer) { - set_menu_to_mode(0,1); - } - } - else { - set_menu_to_mode(6,0); - set_menu_cursor_pos_to_setting(0); - } - return; -} - - - -int get_ptr_difficulty_name(DIFFICULTY difficulty) - -{ - byte *return; - - return = NULL; - if (difficulty == DIFFICULTY_AGENT) { - return = get_textptr_for_textID(0x9c13); - } - else { - if (difficulty == DIFFICULTY_SECRET) { - return = get_textptr_for_textID(0x9c14); - } - else { - if (difficulty == DIFFICULTY_00) { - return = get_textptr_for_textID(0x9c15); - } - else { - if (difficulty == DIFFICULTY_007) { - return = get_textptr_for_textID(0x9c16); - } - } - } - } - return (int)return; -} - - - -u32 * constructor_menu05_filesel(undefined4 *param_1) - -{ - undefined4 *puVar1; - short sVar4; - byte *pbVar2; - short sVar5; - char *pcVar3; - undefined8 extraout_a2; - undefined8 extraout_a2_00; - undefined8 extraout_a2_01; - undefined8 uVar6; - undefined8 extraout_a3; - undefined8 extraout_a3_00; - undefined8 extraout_a3_01; - undefined8 uVar7; - undefined4 *puVar8; - undefined4 *puVar9; - int iVar10; - mission_folder_setup *pmVar11; - longlong lVar12; - int briefing; - undefined **ppuVar13; - STAGENUM SVar14; - undefined4 *puVar15; - float fVar16; - f32 wdivh; - f32 wdivh_00; - f32 wdivh_01; - uint *puStackX0; - float *pfStack324; - float fStack308; - float fStack304; - int iStack300; - float fStack296; - float fStack292; - float fStack288; - float fStack284; - float fStack280; - float fStack276; - float fStack272; - float fStack268; - float fStack264; - byte abStack252 [20]; - byte abStack232 [20]; - float fStack212; - float fStack208; - DIFFICULTY DStack204; - STAGENUM SStack200; - int iStack196; - int iStack192; - int iStack188; - int aiStack184 [2]; - undefined4 auStack176 [17]; - undefined4 uStack108; - undefined4 uStack104; - undefined4 uStack100; - undefined4 *puStack96; - u32 uStack28; - u32 uStack24; - u32 uStack20; - u32 uStack16; - u32 uStack12; - u32 uStack8; - int iStack4; - - uStack16 = unknown_folderselect_constructor; - uStack12 = dword_8002AF30; - uStack8 = dword_8002AF34; - uStack28 = unknown_folderselect_constructor_0; - uStack24 = dword_8002AF3C; - uStack20 = dword_8002AF40; - puStackX0 = param_1; - puVar1 = insert_imageDL(param_1); - *puVar1 = 0xfc167e2c; - puVar1[1] = 0x33fdf6fb; - puStackX0 = puVar1 + 4; - puVar1[3] = 0xffffff14; - puVar1[2] = 0xfb000000; - sVar4 = get_video2_settings_txtClipW(); - fVar16 = truncf(((float)(int)sVar4 * -80.00000000) / 1280.00000000); - puVar1 = proc_7F007CC8(puStackX0,(int)fVar16,(int *)&uStack16,(int *)&uStack28); - puVar1[1] = 0x1000000; - *puVar1 = 0x6000000; - puStackX0 = puVar1 + 4; - ppuVar13 = (undefined **)&dword_8002A968; - puVar1[3] = 0x1000040; - puVar1[2] = 0x6000000; - uVar6 = extraout_a2; - uVar7 = extraout_a3; - do { - puVar1 = unknown_folderselect; - puVar8 = &uStack108; - do { - puVar15 = puVar1 + 3; - puVar9 = puVar8 + 3; - *puVar8 = *puVar1; - puVar8[1] = puVar1[1]; - puVar8[2] = puVar1[2]; - puVar1 = puVar15; - puVar8 = puVar9; - } while (puVar15 != (undefined4 *)0x8002af80); - lVar12 = 0; - *puVar9 = uRam8002af80; - uStack100 = 3; - uStack104 = 0; - puStack96 = puStackX0; - subdraw((int)&uStack108,(uint)*ppuVar13,(int)uVar6,(int)uVar7); - iVar10 = 0; - puStackX0 = puStack96; - uVar6 = extraout_a2_00; - uVar7 = extraout_a3_00; - if (0 < *(short *)(*(int *)(*ppuVar13 + 8) + 0xe)) { - briefing = *(int *)(*ppuVar13 + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(briefing + iVar10),auStack176); - proc_7F058C9C((int)auStack176,(uint *)(*(int *)(*ppuVar13 + 0xc) + (int)lVar12 * 0x40)); - lVar12 = (longlong)((int)lVar12 + 1); - iVar10 += 0x40; - uVar6 = extraout_a2_01; - uVar7 = extraout_a3_01; - if ((longlong)*(short *)(*(int *)(*ppuVar13 + 8) + 0xe) <= lVar12) break; - briefing = *(int *)(*ppuVar13 + 0xc); - } - } - ppuVar13 = ppuVar13 + -1; - } while (&ptr_folder_object_instance <= ppuVar13); - puStackX0 = microcode_constructor(puStackX0); - proc_7F0ACB78(0); - pfStack324 = (float *)&DAT_80069620; - iStack4 = 0; - do { - proc_7F077FF4(pfStack324,&fStack212); - if (iStack4 == folder_selected_for_deletion) { - fVar16 = truncf(fStack212); - aiStack184[0] = (int)fVar16 + -0x31; - fVar16 = truncf(fStack208); - iStack188 = (int)fVar16 + 0x19; - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)aiStack184[0],(longlong)iStack188, - (longlong)(aiStack184[0] + 99),(int)fVar16 + 0x43,0x32); - pbVar2 = get_textptr_for_textID(0x9c17); - fVar16 = truncf(fStack212); - aiStack184[0] = (int)fVar16 + -0x2f; - fVar16 = truncf(fStack208); - iStack188 = (int)fVar16 + 0x1e; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,pbVar2,(int)ptrSecondFontTable - ,(int)ptrFirstFontTable,0xebd879ff,(int)sVar4,(int)sVar5,0,0); - pbVar2 = get_textptr_for_textID(0x9c18); - fVar16 = truncf(fStack212); - aiStack184[0] = (int)fVar16 + -0x2f; - fVar16 = truncf(fStack208); - iStack188 = (int)fVar16 + 0x32; - if (folder_selected_for_deletion_choice == 0) { - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,pbVar2, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xebd879ff, - (int)sVar4,(int)sVar5,0,0); - } - else { - iStack196 = 0; - iStack192 = 0; - proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTable,(int *)ptrFirstFontTable, - 0); - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(aiStack184[0] + -1),(longlong)(iStack188 + -1), - (longlong)(aiStack184[0] + iStack196 + 3),iStack188 + iStack192,0x32) - ; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,pbVar2, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xffffffff, - (int)sVar4,(int)sVar5,0,0); - } - pbVar2 = get_textptr_for_textID(0x9c19); - fVar16 = truncf(fStack212); - iVar10 = -1; - if (j_text_trigger != 0) { - iVar10 = 0x17; - } - aiStack184[0] = iVar10 + (int)fVar16 + -1; - fVar16 = truncf(fStack208); - iStack188 = (int)fVar16 + 0x32; - if (folder_selected_for_deletion_choice == 0) { - iStack196 = 0; - iStack192 = 0; - proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTable,(int *)ptrFirstFontTable, - 0); - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(aiStack184[0] + -1),(longlong)(iStack188 + -1), - (longlong)(aiStack184[0] + iStack196 + 3),iStack188 + iStack192,0x32) - ; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,pbVar2, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xffffffff, - (int)sVar4,(int)sVar5,0,0); - } - else { - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,pbVar2, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xebd879ff, - (int)sVar4,(int)sVar5,0,0); - } - } - else { - get_highest_stage_difficulty_completed_in_folder(iStack4,&SStack200,&DStack204); - if ((-1 < (int)SStack200) && (-1 < DStack204)) { - pcVar3 = (char *)get_ptr_difficulty_name(DStack204); - if (pcVar3 != NULL) { - textpointer_load_parse_something((char *)abStack232,pcVar3); - string_load_parse_something((char *)abStack232,"\n"); - iStack196 = 0; - iStack192 = 0; - proc_7F0AE98C(&iStack192,&iStack196,abStack232,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - fVar16 = truncf(fStack212); - iVar10 = iStack196; - if (iStack196 < 0) { - iVar10 = iStack196 + 1; - } - aiStack184[0] = ((int)fVar16 - (iVar10 >> 1)) + -1; - fVar16 = truncf(fStack208); - iStack188 = (int)fVar16 + 0x15; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,abStack232, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xebd879ff, - (int)sVar4,(int)sVar5,0,0); - } - iVar10 = -1; - briefing = 0; - if (DStack204 != DIFFICULTY_007) { - pbVar2 = get_textptr_for_textID(0x9c1a); - textpointer_load_parse_something((char *)abStack252,(char *)pbVar2); - pmVar11 = mission_folder_setup_entries; - SVar14 = mission_folder_setup_entries[0].mission_num; - if (mission_folder_setup_entries[0].folder_text_preset != 0) { - while (SStack200 != SVar14) { - briefing += 1; - if (pmVar11[1].folder_text_preset == 0) goto LAB_7f00cbdc; - SVar14 = pmVar11[1].mission_num; - pmVar11 = pmVar11 + 1; - } - iVar10 = get_chapter_briefing_entry(briefing); - } -LAB_7f00cbdc: - if (-1 < iVar10) { - string_load_parse_something - ((char *)abStack252,(char *)mission_folder_setup_entries[iVar10].string_ptr); - string_load_parse_something((char *)abStack252,"."); - } - string_load_parse_something - ((char *)abStack252,(char *)mission_folder_setup_entries[briefing].string_ptr); - string_load_parse_something((char *)abStack252,"\n"); - iStack196 = 0; - iStack192 = 0; - proc_7F0AE98C(&iStack192,&iStack196,abStack252,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - fVar16 = truncf(fStack212); - iVar10 = iStack196; - if (iStack196 < 0) { - iVar10 = iStack196 + 1; - } - aiStack184[0] = ((int)fVar16 - (iVar10 >> 1)) + -1; - fVar16 = truncf(fStack208); - iStack188 = (int)fVar16 + 0x2d; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,abStack252, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xebd879ff, - (int)sVar4,(int)sVar5,0,0); - } - } - } - iStack4 += 1; - pfStack324 = pfStack324 + 3; - if (iStack4 == 4) { - proc_7F0ACB78(0); - pbVar2 = get_textptr_for_textID(0x9c1b); - iStack196 = 0; - iStack192 = 0; - proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0) - ; - iVar10 = iStack192; - if (iStack192 < 0) { - iVar10 = iStack192 + 1; - } - iStack188 = 0x11d - (iVar10 >> 1); - aiStack184[0] = 0xf7; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,pbVar2,(int)ptrSecondFontTable - ,(int)ptrFirstFontTable,0xffffffff,(int)sVar4,(int)sVar5,0,0); - folder_option_COPY_right_bound = (float)(aiStack184[0] + iStack196); - pbVar2 = get_textptr_for_textID(0x9c1c); - iStack196 = 0; - iStack192 = 0; - proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0) - ; - aiStack184[0] = 0x165; - iVar10 = iStack192; - if (iStack192 < 0) { - iVar10 = iStack192 + 1; - } - iStack188 = 0x11d - (iVar10 >> 1); - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack184,&iStack188,pbVar2,(int)ptrSecondFontTable - ,(int)ptrFirstFontTable,0xffffffff,(int)sVar4,(int)sVar5,0,0); - folder_option_ERASE_right_bound = (float)(aiStack184[0] + iStack196); - fStack268 = 225.00000000; - fStack264 = flt_80051A28; - fStack276 = (float)(uint)*(byte *)(DAT_8008d128 + 1); - if (false) { - fStack276 = fStack276 + 4294967296.00000000; - } - fStack276 = fStack276 * 0.50000000; - fStack272 = (float)(uint)*(byte *)((int)DAT_8008d128 + 5); - if (false) { - fStack272 = fStack272 + 4294967296.00000000; - } - fStack272 = fStack272 * 0.50000000; - likely_generate_DL_for_image_declaration((uint **)register0x000000ec,DAT_8008d128,4,0,0); - display_image_at_on_screen_coord - ((int *)register0x000000ec,(int *)&fStack268,wdivh,(int)&fStack276, - (uint)*(byte *)(DAT_8008d128 + 1),(uint)*(byte *)((int)DAT_8008d128 + 5),0,0,1,0xff - ,0xff,0xff,0xff,(uint)(*(char *)((int)DAT_8008d128 + 6) != '\0')); - folder_option_COPY_left_bound = fStack268 - fStack276; - folder_option_COPY_upper_bound = fStack264 - fStack272; - folder_option_COPY_lower_bound = fStack272 + fStack264; - fStack284 = flt_80051A2C; - fStack280 = flt_80051A30; - fStack292 = (float)(uint)*(byte *)(DAT_8008d128 + 4); - if (false) { - fStack292 = fStack292 + 4294967296.00000000; - } - fStack292 = fStack292 * 0.50000000; - fStack288 = (float)(uint)*(byte *)((int)DAT_8008d128 + 0x11); - if (false) { - fStack288 = fStack288 + 4294967296.00000000; - } - fStack288 = fStack288 * 0.50000000; - likely_generate_DL_for_image_declaration((uint **)register0x000000ec,DAT_8008d128 + 3,4,0,0); - display_image_at_on_screen_coord - ((int *)register0x000000ec,(int *)&fStack284,wdivh_00,(int)&fStack292, - (uint)*(byte *)(DAT_8008d128 + 4),(uint)*(byte *)((int)DAT_8008d128 + 0x11),0,0,1, - 0xff,0xff,0xff,0xff,(uint)(*(char *)((int)DAT_8008d128 + 0x12) != '\0')); - folder_option_ERASE_left_bound = fStack284 - fStack292; - folder_option_ERASE_upper_bound = fStack280 - fStack288; - folder_option_ERASE_lower_bound = fStack288 + fStack280; - iStack300 = 0x42dc0000; - fStack296 = flt_80051A34; - fStack308 = (float)(uint)*(byte *)(DAT_8008d128 + 7); - if (false) { - fStack308 = fStack308 + 4294967296.00000000; - } - fStack308 = fStack308 * 0.50000000; - fStack304 = (float)(uint)*(byte *)((int)DAT_8008d128 + 0x1d); - if (false) { - fStack304 = fStack304 + 4294967296.00000000; - } - fStack304 = fStack304 * 0.50000000; - likely_generate_DL_for_image_declaration((uint **)register0x000000ec,DAT_8008d128 + 6,4,0,0); - display_image_at_on_screen_coord - ((int *)register0x000000ec,&iStack300,wdivh_01,(int)&fStack308, - (uint)*(byte *)(DAT_8008d128 + 7),(uint)*(byte *)((int)DAT_8008d128 + 0x1d),0,0,1, - 0xff,0xff,0xff,0xff,(uint)(*(char *)((int)DAT_8008d128 + 0x1e) != '\0')); - if (folder_selected_for_deletion < 0) { - puStackX0 = (uint *)load_draw_selected_icon_folder_select(puStackX0); - } - return (u32 *)puStackX0; - } - } while( true ); -} - - - -void init_menu06_modesel(void) - -{ - gamemode = GAMEMODE_INTRO; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - load_walletbond(); - copyCurrentEEPROMtoStack(); - return; -} - - - -void update_menu06_modesel(void) - -{ - return; -} - - - -void interface_menu06_modesel(void) - -{ - ulonglong uVar1; - longlong lVar2; - undefined *puVar3; - f32 extraout_a0_lo; - u32 cheat; - - is_cheat_menu_available = FALSE; - puVar3 = &cheat_available; - cheat = 1; - do { - uVar1 = check_if_cheat_available(cheat); - if (uVar1 == 0) { - *puVar3 = 0; - } - else { - *puVar3 = 1; - is_cheat_menu_available = TRUE; - } - cheat += 1; - puVar3 = puVar3 + 1; - } while (cheat != 0x4b); - video_related_1F(60.00000000); - video_related_21((f32)menu06_aspect); - set_page_height(100.00000000,(f32)menu06_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - disable_all_switches((int)ptr_folder_object_instance); - cheat = removed_would_have_returned_bond_for_folder_num(selected_folder_num); - select_load_bond_picture((int)ptr_folder_object_instance,cheat); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,7,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,2,1); - tab_3_highlight = FALSE; - mission_difficulty_highlighted = DIFFICULTY_MULTI; - lVar2 = isontab3(); - if (lVar2 == 0) { - if ((is_cheat_menu_available == FALSE) || ((float)cursor_v_pos < flt_80051A40)) { - if (((float)cursor_v_pos < 243.00000000) || - (lVar2 = get_attached_controller_count(), lVar2 < 2)) { - mission_difficulty_highlighted = DIFFICULTY_AGENT; - uVar1 = get_controller_buttons_pressed('\0',0xb000); - if (uVar1 != 0) { - gamemode = GAMEMODE_SOLO; - play_sfx_a1(ptr_sfx_buf,0xc5,NULL); - } - } - else { - mission_difficulty_highlighted = DIFFICULTY_SECRET; - uVar1 = get_controller_buttons_pressed('\0',0xb000); - if (uVar1 != 0) { - gamemode = GAMEMODE_MULTI; - play_sfx_a1(ptr_sfx_buf,0xc5,NULL); - } - } - } - else { - mission_difficulty_highlighted = DIFFICULTY_00; - uVar1 = get_controller_buttons_pressed('\0',0xb000); - if (uVar1 != 0) { - gamemode = GAMEMODE_CHEATS; - play_sfx_a1(ptr_sfx_buf,0xc5,NULL); - } - } - } - else { - tab_3_highlight = TRUE; - uVar1 = get_controller_buttons_pressed('\0',0xb000); - if (uVar1 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - uVar1 = get_controller_buttons_pressed('\0',0x4000); - if (uVar1 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - menu_control_stick_tracking(); - if (gamemode == GAMEMODE_SOLO) { - set_menu_to_mode(7,0); - set_cursor_to_stage_solo(0); - } - else { - if (gamemode == GAMEMODE_MULTI) { - set_menu_to_mode(0xe,0); - } - else { - if (gamemode == GAMEMODE_CHEATS) { - set_menu_to_mode(0x15,0); - } - else { - if (tab_3_selected != FALSE) { - set_menu_to_mode(5,0); - } - } - } - } - return; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -undefined4 proc_7F00D5E8(undefined4 param_1) - -{ - undefined4 uVar1; - undefined8 extraout_a0; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - int iVar2; - longlong lVar3; - int iVar4; - float **ppfVar5; - float **ppfVar6; - float **ppfVar7; - float **ppfVar8; - float fVar9; - float fVar10; - float in_f14; - undefined4 auStack272 [16]; - float afStack208 [16]; - float afStack144 [17]; - float *pfStack76; - undefined4 uStack72; - undefined4 uStack68; - undefined4 uStack64; - float *pfStack60; - - pfStack60 = &dword_8002AB94 + selected_folder_num * 3; - fVar9 = *pfStack60; - fVar10 = (&FLOAT_8002ab98)[selected_folder_num * 3]; - ppfVar7 = (float **)dword_8002AF84; - ppfVar5 = &pfStack76; - do { - ppfVar8 = ppfVar7 + 3; - ppfVar6 = ppfVar5 + 3; - *ppfVar5 = *ppfVar7; - ppfVar5[1] = ppfVar7[1]; - ppfVar5[2] = ppfVar7[2]; - ppfVar7 = ppfVar8; - ppfVar5 = ppfVar6; - } while (ppfVar8 != (float **)&dword_8002AFC0); - *ppfVar6 = _dword_8002AFC0; - proc_7F059694(afStack144,0.00000000,in_f14,fVar9 + flt_8002AFC4,fVar10 + flt_8002AFC8, - flt_8002AFCC + 4000.00000000,fVar9 + flt_8002AFC4,fVar10 + flt_8002AFC8,0.00000000, - 0.00000000); - init_something_copy_posdata_to_it - ((int *)(&dword_8002AB94 + selected_folder_num * 3),(int *)afStack208); - matrix_multiply_A1_by_F12(0.25000000,extraout_a0,afStack208); - proc_7F058068(afStack144,afStack208); - pfStack76 = afStack208; - proc_7F0BD714((int)*(short *)(*(int *)(ptr_folder_object_instance + 8) + 0xe) << 6); - proc_7F058020(afStack208,pfStack60); - *(float **)(ptr_folder_object_instance + 0xc) = pfStack60; - uStack68 = 3; - uStack72 = 0; - uStack64 = param_1; - subdraw((int)&pfStack76,(uint)ptr_folder_object_instance,extraout_a2_lo,extraout_a3_lo); - uVar1 = uStack64; - lVar3 = 0; - iVar4 = 0; - if (0 < *(short *)(*(int *)(ptr_folder_object_instance + 8) + 0xe)) { - iVar2 = *(int *)(ptr_folder_object_instance + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar2 + iVar4),auStack272); - proc_7F058C9C((int)auStack272, - (uint *)(*(int *)(ptr_folder_object_instance + 0xc) + (int)lVar3 * 0x40)); - lVar3 = (longlong)((int)lVar3 + 1); - iVar4 += 0x40; - if ((longlong)*(short *)(*(int *)(ptr_folder_object_instance + 8) + 0xe) <= lVar3) break; - iVar2 = *(int *)(ptr_folder_object_instance + 0xc); - } - } - return uVar1; -} - - - -void set_menu_cursor_pos_to_setting(int setting) - -{ - cursor_h_pos = 126.00000000; - cursor_v_pos = (f32)(float)(setting * 0x20 + 0xe2); - return; -} - - - -u32 * constructor_menu06_modesel(undefined4 *param_1) - -{ - undefined4 *DL; - uint *puVar2; - short sVar4; - short sVar5; - longlong lVar1; - u32 *puVar3; - u16 id; - uint uStack24; - int iStack20; - int iStack16; - uint uStack12; - uint uStack8; - byte *pbStack4; - - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - puVar2 = microcode_constructor(DL); - uStack8 = 0x96; - uStack12 = 0xdc; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)"1.\n",(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - if (append_cheat_sp == FALSE) { - id = 0x9c1d; - } - else { - id = 0x9c75; - } - pbStack4 = get_textptr_for_textID(id); - proc_7F0AE98C(&iStack20,&iStack16,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack8 = 0xaa; - uStack12 = 0xdc; - if (mission_difficulty_highlighted == DIFFICULTY_AGENT) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,0x94,0xda,(longlong)(iStack16 + 0xaf),0xea,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - uStack8 = 0x96; - uStack12 = 0xfc; - lVar1 = get_attached_controller_count(); - if (lVar1 < 2) { - uStack24 = 0x70; - } - else { - uStack24 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)"2.\n",(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uStack24,(int)sVar4,(int)sVar5,0,0); - id = 0x9c1e; - if (append_cheat_mp != FALSE) { - id = 0x9d14; - } - pbStack4 = get_textptr_for_textID(id); - proc_7F0AE98C(&iStack20,&iStack16,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack8 = 0xaa; - uStack12 = 0xfc; - if (mission_difficulty_highlighted == DIFFICULTY_SECRET) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,0x94,0xfa,(longlong)(iStack16 + 0xaf),0x10a,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uStack24,(int)sVar4,(int)sVar5,0,0); - if (is_cheat_menu_available != FALSE) { - uStack8 = 0x96; - uStack12 = 0x11c; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)"3.\n",(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c1f); - proc_7F0AE98C(&iStack20,&iStack16,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack8 = 0xaa; - uStack12 = 0x11c; - if (mission_difficulty_highlighted == DIFFICULTY_00) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,0x94,0x11a,(longlong)(iStack16 + 0xaf),0x12a,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - } - puVar2 = add_tab3_previous(puVar2); - puVar3 = (u32 *)load_draw_selected_icon_folder_select(puVar2); - return puVar3; -} - - - -int pull_and_display_text_for_folder_a0(undefined *param_1) - -{ - mission_folder_setup *pmVar1; - int iVar2; - undefined *puVar3; - - pmVar1 = mission_folder_setup_entries; - iVar2 = 0; - puVar3 = (undefined *)mission_folder_setup_entries[0].mission_num; - if (mission_folder_setup_entries[0].folder_text_preset != 0) { - while( true ) { - if (param_1 == puVar3) { - return iVar2; - } - iVar2 += 1; - if (pmVar1[1].folder_text_preset == 0) break; - puVar3 = (undefined *)pmVar1[1].mission_num; - pmVar1 = pmVar1 + 1; - } - } - return -1; -} - - - -BOOL check_if_stage_completed_on_difficulty(int stage,DIFFICULTY difficulty) - -{ - BOOL completed; - - if (mission_folder_setup_entries[stage].mission_num < 0) { - completed = FALSE; - } - else { - completed = doesFolderHaveStageUnlockedAtDifficulty - (selected_folder_num,mission_folder_setup_entries[stage].mission_num, - difficulty); - } - return completed; -} - - - -longlong get_highest_unlocked_difficulty_for_level(longlong stage) - -{ - int iVar1; - BOOL BVar2; - longlong lVar3; - - iVar1 = pull_and_display_text_for_folder_a0((undefined *)stage); - lVar3 = 2; - if (-1 < mission_folder_setup_entries[iVar1].stage_id) { - BVar2 = is007ModeUnlockedinFolder(selected_folder_num); - if (BVar2 == FALSE) { - iVar1 = get_debug_007_unlock_flag(); - if (iVar1 != 0) { - lVar3 = 3; - } - } - else { - lVar3 = 3; - } - if (true) { - do { - BVar2 = doesFolderHaveStageUnlockedAtDifficulty - (selected_folder_num,(STAGENUM)(undefined *)stage,(DIFFICULTY)lVar3); - if (append_cheat_sp == FALSE) { - if (BVar2 != FALSE) { - return lVar3; - } - } - else { - if (BVar2 == 3) { - return lVar3; - } - } - lVar3 = (longlong)((DIFFICULTY)lVar3 + DIFFICULTY_MULTI); - } while (-1 < lVar3); - } - } - return -1; -} - - - -void init_menu07_missionsel(void) - -{ - selected_stage = LEVELID_NONE; - briefingpage = 0xffffffff; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - if (maybe_is_in_menu != FALSE) { - musicTrack1Play(M_FOLDERS); - maybe_is_in_menu = FALSE; - } - load_walletbond(); - return; -} - - - -void update_menu07_missionsel(void) - -{ - return; -} - - - -void interface_menu07_missionsel(undefined8 param_1,undefined8 param_2) - -{ - ushort *partdesc; - bool bVar1; - int iVar2; - longlong lVar3; - int **ppiVar5; - int **ppiVar6; - ulonglong uVar4; - f32 extraout_a0_lo; - undefined4 *puVar7; - undefined4 *puVar8; - int iVar9; - int iVar10; - int iVar11; - int iVar12; - - video_related_1F(60.00000000); - video_related_21((f32)menu07_aspect); - set_page_height(100.00000000,(f32)menu07_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x13,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x14,1); - tab_3_highlight = FALSE; - mission_difficulty_highlighted = DIFFICULTY_MULTI; - lVar3 = isontab3(); - iVar12 = 0; - if (lVar3 == 0) { - bVar1 = true; - while (((bVar1 && ((float)(cursor_xpos_table_mission_select[iVar12 + 1] + - cursor_xpos_table_mission_select[iVar12]) * 0.50000000 <= - (float)cursor_h_pos)) && (iVar12 += 1, iVar12 != 5))) { - bVar1 = iVar12 < 4; - } - iVar10 = 0; - bVar1 = true; - while (((bVar1 && ((float)(cursor_ypos_table_mission_select[iVar10 + 1] + - cursor_ypos_table_mission_select[iVar10]) * 0.50000000 <= - (float)cursor_v_pos)) && (iVar10 += 1, iVar10 != 4))) { - bVar1 = iVar10 < 3; - } - if (0 < iVar10) { - iVar2 = iVar10 * 5; - do { - iVar11 = 0; - iVar9 = iVar2; - do { - lVar3 = get_highest_unlocked_difficulty_for_level((longlong)iVar9); - if (-1 < lVar3) break; - iVar11 += 1; - iVar9 += 1; - } while (iVar11 != 5); - if (iVar11 < 5) break; - iVar10 += -1; - iVar2 += -5; - } while (0 < iVar10); - } - iVar10 *= 5; - if (-1 < iVar12) { - iVar2 = iVar10 + iVar12; - do { - lVar3 = get_highest_unlocked_difficulty_for_level((longlong)iVar2); - if (-1 < lVar3) break; - iVar12 += -1; - iVar2 += -1; - } while (-1 < iVar12); - } - if (iVar12 < 0) { - iVar12 = 0; - iVar2 = iVar10; - do { - lVar3 = get_highest_unlocked_difficulty_for_level((longlong)iVar2); - if (-1 < lVar3) break; - iVar12 += 1; - iVar2 += 1; - } while (iVar12 != 5); - } - mission_difficulty_highlighted = iVar10 + iVar12; - } - else { - tab_3_highlight = TRUE; - } - partdesc = *(ushort **)(*(int *)(*(int *)(ptr_folder_object_instance + 8) + 8) + 0x54); - if (partdesc != NULL) { - iVar12 = *(int *)(partdesc + 2); - ppiVar5 = (int **)extract_id_from_object_structure_microcode - ((int)ptr_folder_object_instance,partdesc); - ppiVar6 = ppiVar5; - proc_7F0BD6C4((int)*(short *)(iVar12 + 0xc)); - *(int ***)ppiVar5 = ppiVar6; - lVar3 = 0; - iVar10 = 0; - if (0 < *(short *)(iVar12 + 0xc)) { - iVar2 = *(int *)(iVar12 + 8); - while( true ) { - puVar8 = (undefined4 *)(iVar2 + iVar10); - puVar7 = (undefined4 *)((int)*ppiVar5 + iVar10); - *puVar7 = *puVar8; - puVar7[1] = puVar8[1]; - puVar7[2] = puVar8[2]; - puVar7[3] = puVar8[3]; - iVar9 = (int)lVar3; - iVar2 = iVar9; - if (lVar3 < 0) { - iVar2 = iVar9 + 3; - } - lVar3 = get_highest_unlocked_difficulty_for_level((longlong)(iVar2 >> 2)); - if (lVar3 < 0) { - *(undefined *)((int)*ppiVar5 + iVar10 + 0xc) = 0xf; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xd) = 0xf; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xe) = 0xf; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xf) = 0xff; - } - else { - if (iVar2 >> 2 == mission_difficulty_highlighted) { - *(undefined *)((int)*ppiVar5 + iVar10 + 0xc) = 0xff; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xd) = 0xff; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xe) = 0xff; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xf) = 0xf5; - } - else { - *(undefined *)((int)*ppiVar5 + iVar10 + 0xc) = 0x6e; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xd) = 0x6e; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xe) = 0x6e; - *(undefined *)((int)*ppiVar5 + iVar10 + 0xf) = 0xff; - } - } - lVar3 = (longlong)(iVar9 + 1); - iVar10 += 0x10; - if ((longlong)*(short *)(iVar12 + 0xc) <= lVar3) break; - iVar2 = *(int *)(iVar12 + 8); - } - } - } - uVar4 = get_controller_buttons_pressed('\0',0xb000); - if (uVar4 == 0) { - uVar4 = get_controller_buttons_pressed('\0',0x4000); - if (uVar4 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_3_highlight == FALSE) { - if (-1 < mission_difficulty_highlighted) { - briefingpage = pull_and_display_text_for_folder_a0 - ((undefined *)mission_difficulty_highlighted); - selected_stage = mission_folder_setup_entries[briefingpage].stage_id; - tab_2_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - menu_control_stick_tracking(); - if (tab_2_selected == FALSE) { - if (tab_3_selected != FALSE) { - set_menu_to_mode(6,0); - set_menu_cursor_pos_to_setting(0); - } - } - else { - set_menu_to_mode(8,0); - lVar3 = get_highest_unlocked_difficulty_for_level - ((longlong)mission_folder_setup_entries[briefingpage].mission_num); - set_cursor_pos_difficulty((int)lVar3); - } - return; -} - - - -void set_cursor_to_stage_solo(longlong param_1) - -{ - if (false) { - trap(0x1c00); - } - if ((false) && (param_1 == -0x80000000)) { - trap(0x1800); - } - cursor_h_pos = (f32)(float)cursor_xpos_table_mission_select[(int)param_1 % 5]; - cursor_v_pos = (f32)(float)cursor_ypos_table_mission_select[(int)param_1 / 5]; - return; -} - - - -u32 * constructor_menu07_missionsel(undefined4 *param_1) - -{ - byte bVar1; - undefined4 *DL; - uint *puVar3; - int iVar4; - longlong lVar2; - byte *pbVar5; - size_t sVar6; - short sVar7; - short sVar8; - undefined *puVar9; - uint uVar10; - int iVar11; - u32 *puVar12; - int iStack88; - undefined4 uStack84; - byte abStack80 [52]; - int iStack28; - int aiStack24 [4]; - undefined *puStack8; - - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL[1] = 0xffffffff; - *DL = 0xf8000000; - DL = (undefined4 *)proc_7F00D5E8(DL + 2); - puVar3 = microcode_constructor(DL); - puStack8 = NULL; - do { - iVar11 = 0; - puVar9 = puStack8; - do { - iVar4 = pull_and_display_text_for_folder_a0(puVar9); - lVar2 = get_highest_unlocked_difficulty_for_level((longlong)(int)puVar9); - if (-1 < lVar2) { - uVar10 = 0x96969600; - puVar12 = cursor_xpos_table_mission_select + (int)puStack8; - if ((longlong)(int)puVar9 == (longlong)mission_difficulty_highlighted) { - uVar10 = 0xffffff00; - } - if (mission_folder_setup_entries[iVar4].icon_text_preset == 0) { - pbVar5 = get_textptr_for_textID(mission_folder_setup_entries[iVar4].folder_text_preset); - textpointer_load_parse_something((char *)abStack80,(char *)pbVar5); - } - else { - pbVar5 = get_textptr_for_textID(mission_folder_setup_entries[iVar4].icon_text_preset); - textpointer_load_parse_something((char *)abStack80,(char *)pbVar5); - } - if (j_text_trigger == 0) { - sVar6 = strlen((char *)abStack80); - pbVar5 = abStack80 + (sVar6 - 1); - if (-1 < (int)(sVar6 - 1)) { - bVar1 = *pbVar5; - while( true ) { - if (0x60 < bVar1) { - *pbVar5 = bVar1 - 0x20; - } - pbVar5 = pbVar5 + -1; - if (pbVar5 < abStack80) break; - bVar1 = *pbVar5; - } - } - } - string_load_parse_something((char *)abStack80,"\n"); - iStack28 = 0; - aiStack24[0] = 0; - proc_7F0AE98C(aiStack24,&iStack28,abStack80,D_80040EB0,D_80040EAC,0); - iStack88 = (cursor_ypos_table_mission_select[iVar11] - aiStack24[0]) + 0x1d; - uStack84 = *puVar12 - 0x1f; - DL = microcode_constructor_related_to_menus - (puVar3,(longlong)uStack84,(longlong)iStack88,(longlong)(uStack84 + iStack28) - ,iStack88 + aiStack24[0],0); - sVar7 = get_video2_settings_txtClipW(); - sVar8 = get_video2_settings_txtClipH(); - puVar3 = en_text_write_stuff(DL,&uStack84,&iStack88,abStack80,D_80040EB0,(int)D_80040EAC, - uVar10 | 0xff,(int)sVar7,(int)sVar8,0,0); - iStack88 = (cursor_ypos_table_mission_select[iVar11] - aiStack24[0]) + 0x1d; - uStack84 = *puVar12 - 0x1f; - sVar7 = get_video2_settings_txtClipW(); - sVar8 = get_video2_settings_txtClipH(); - puVar3 = en_text_write_stuff(puVar3,&uStack84,&iStack88,abStack80,D_80040EB0,(int)D_80040EAC - ,uVar10 | 100,(int)sVar7,(int)sVar8,0,0); - } - iVar11 += 1; - puVar9 = puVar9 + 5; - } while (iVar11 != 4); - puStack8 = puStack8 + 1; - } while (puStack8 != (undefined *)((int)&i + 1)); - puVar3 = add_tab3_previous(puVar3); - puVar12 = (u32 *)load_draw_selected_icon_folder_select(puVar3); - return puVar12; -} - - - -void init_menu08_difficulty(void) - -{ - selected_difficulty = DIFFICULTY_MULTI; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - load_walletbond(); - return; -} - - - -void update_menu08_difficulty(void) - -{ - return; -} - - - -void interface_menu08_difficulty(void) - -{ - longlong lVar1; - int iVar3; - ulonglong uVar2; - f32 extraout_a0_lo; - - lVar1 = get_highest_unlocked_difficulty_for_level - ((longlong)mission_folder_setup_entries[briefingpage].mission_num); - iVar3 = (int)lVar1; - video_related_1F(60.00000000); - video_related_21((f32)menu08_aspect); - set_page_height(100.00000000,(f32)menu08_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,4,1); - tab_3_highlight = FALSE; - mission_difficulty_highlighted = DIFFICULTY_MULTI; - lVar1 = isontab3(); - if (lVar1 == 0) { - if ((iVar3 < 3) || ((float)cursor_v_pos < flt_80051A54)) { - if ((iVar3 < 2) || ((float)cursor_v_pos < 243.00000000)) { - if (iVar3 < 1) { - mission_difficulty_highlighted = DIFFICULTY_AGENT; - } - else { - if (211.00000000 <= (float)cursor_v_pos) { - mission_difficulty_highlighted = DIFFICULTY_SECRET; - } - else { - mission_difficulty_highlighted = DIFFICULTY_AGENT; - } - } - } - else { - mission_difficulty_highlighted = DIFFICULTY_00; - } - } - else { - mission_difficulty_highlighted = DIFFICULTY_007; - } - } - else { - tab_3_highlight = TRUE; - } - uVar2 = get_controller_buttons_pressed('\0',0xb000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_3_highlight == FALSE) { - if (-1 < mission_difficulty_highlighted) { - selected_difficulty = mission_difficulty_highlighted; - tab_2_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,0x4d,NULL); - } - } - else { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - menu_control_stick_tracking(); - if (tab_2_selected == FALSE) { - if (tab_3_selected != FALSE) { - set_menu_to_mode(7,0); - set_cursor_to_stage_solo((longlong)mission_folder_setup_entries[briefingpage].mission_num); - } - } - else { - if (selected_difficulty == DIFFICULTY_007) { - set_menu_to_mode(9,0); - set_cursor_pos_tab2(); - } - else { - set_menu_to_mode(10,0); - set_cursor_pos_tab2(); - } - } - return; -} - - - -uint * print_current_solo_briefing_stage_name(uint *param_1,byte *param_2) - -{ - char *pcVar1; - byte *pbVar2; - short sVar5; - short sVar6; - int iVar3; - uint *puVar4; - uint *local_res0; - uint local_8; - uint local_4; - - local_res0 = param_1; - if (-1 < selected_difficulty) { - pcVar1 = (char *)get_ptr_difficulty_name(selected_difficulty); - textpointer_load_parse_something((char *)param_2,pcVar1); - pbVar2 = get_textptr_for_textID(0x9c20); - string_load_parse_something((char *)param_2,(char *)pbVar2); - local_4 = 0x37; - local_8 = 0x57; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - local_res0 = write_text_at_abs_coord - (param_1,&local_4,&local_8,param_2,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar5,(int)sVar6,0,0); - } - iVar3 = get_chapter_briefing_entry(briefingpage); - if (-1 < iVar3) { - pbVar2 = get_textptr_for_textID(0x9c21); - textpointer_load_parse_something((char *)param_2,(char *)pbVar2); - string_load_parse_something - ((char *)param_2,(char *)mission_folder_setup_entries[iVar3].string_ptr); - string_load_parse_something((char *)param_2,": "); - pbVar2 = get_textptr_for_textID(mission_folder_setup_entries[iVar3].folder_text_preset); - string_load_parse_something((char *)param_2,(char *)pbVar2); - string_load_parse_something((char *)param_2,"\n"); - local_4 = 0x37; - local_8 = 0x67; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - local_res0 = write_text_at_abs_coord - (local_res0,&local_4,&local_8,param_2,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar5,(int)sVar6,0,0); - } - pbVar2 = get_textptr_for_textID(0x9c22); - textpointer_load_parse_something((char *)param_2,(char *)pbVar2); - string_load_parse_something - ((char *)param_2,(char *)mission_folder_setup_entries[briefingpage].string_ptr); - string_load_parse_something((char *)param_2,": "); - pbVar2 = get_textptr_for_textID(mission_folder_setup_entries[briefingpage].folder_text_preset); - string_load_parse_something((char *)param_2,(char *)pbVar2); - string_load_parse_something((char *)param_2,"\n"); - local_4 = 0x37; - local_8 = 0x77; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar4 = write_text_at_abs_coord - (local_res0,&local_4,&local_8,param_2,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar5,(int)sVar6,0,0); - return puVar4; -} - - - -void set_cursor_pos_difficulty(int difficulty) - -{ - cursor_h_pos = 106.00000000; - cursor_v_pos = (f32)(float)(difficulty * 0x1e + 0xba); - return; -} - - - -// WARNING: Instruction at (ram,0x7f00f1b4) overlaps instruction at (ram,0x7f00f1b0) -// - -u32 * constructor_menu08_difficulty(undefined4 *param_1) - -{ - longlong lVar1; - byte *pbVar2; - short sVar6; - short sVar7; - int iVar3; - BOOL BVar4; - u32 *puVar5; - int iVar8; - DIFFICULTY difficulty; - uint uVar9; - undefined4 *puVar10; - undefined4 *puVar11; - undefined4 *puVar12; - f32 wdivh; - uint *puStackX0; - float fStack3048; - float fStack3044; - int iStack3040; - float fStack3036; - int iStack3032; - int iStack3028; - undefined4 *puStack3024; - undefined4 auStack3020 [750]; - uint uStack20; - uint auStack16 [2]; - int iStack8; - - puStackX0 = param_1; - lVar1 = get_highest_unlocked_difficulty_for_level - ((longlong)mission_folder_setup_entries[briefingpage].mission_num); - iStack8 = (int)lVar1; - puStackX0 = set_setfillcolor(puStackX0,0,0,0); - puStackX0 = insert_generic_fillrect(puStackX0); - puStackX0 = (uint *)proc_7F00D5E8(puStackX0); - puVar11 = array_8004F4B4; - puVar10 = auStack3020; - do { - puVar12 = puVar11 + 3; - *puVar10 = *puVar11; - puVar10[1] = puVar11[1]; - puVar10[2] = puVar11[2]; - puVar11 = puVar12; - puVar10 = puVar10 + 3; - } while (puVar12 != (undefined4 *)"%d.\n"); - puStackX0 = microcode_constructor(puStackX0); - puStackX0 = print_current_solo_briefing_stage_name(puStackX0,(byte *)auStack3020); - pbVar2 = get_textptr_for_textID(0x9c23); - auStack16[0] = 0x37; - uStack20 = 0x8f; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - puStackX0 = write_text_at_abs_coord - (puStackX0,auStack16,&uStack20,pbVar2,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar6,(int)sVar7,0,0); - if (-1 < mission_difficulty_highlighted) { - if (j_text_trigger == 0) { - iVar8 = 0; - } - else { - iVar8 = 0x32; - } - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(0x7e - iVar8), - (longlong)(mission_difficulty_highlighted * 0x1e + 0xb2),0xf0, - mission_difficulty_highlighted * 0x1e + 0xc3,0x32); - } - iVar8 = 0; - do { - if ((iVar8 == 0) || (iVar8 <= iStack8)) { - uVar9 = iVar8 * 0x1e + 0xb4; - if (j_text_trigger == 0) { - puStack3024 = auStack3020; - sprintf((char *)puStack3024,"%d.\n",iVar8 + 1); - } - else { - if (iVar8 == 0) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d09); - } - else { - if (iVar8 == 1) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d0a); - } - else { - if (iVar8 == 2) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d0b); - } - else { - if (iVar8 == 3) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d0c); - } - } - } - } - } - proc_7F0AE98C(&iStack3032,&iStack3028,(byte *)puStack3024,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - iVar3 = 0; - if (j_text_trigger != 0) { - iVar3 = iStack3028 + -10; - } - auStack16[0] = 0x82 - iVar3; - uStack20 = uVar9; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - puStackX0 = write_text_at_abs_coord - (puStackX0,auStack16,&uStack20,(byte *)puStack3024, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xff,(int)sVar6, - (int)sVar7,0,0); - if (iVar8 == 0) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c24); - } - else { - if (iVar8 == 1) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c25); - } - else { - if (iVar8 == 2) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c26); - } - else { - if (iVar8 == 3) { - puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c27); - } - } - } - } - auStack16[0] = 0x96; - uStack20 = uVar9; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - puStackX0 = write_text_at_abs_coord - (puStackX0,auStack16,&uStack20,(byte *)puStack3024, - (int)ptrSecondFontTable,(int)ptrFirstFontTable,0xff,(int)sVar6, - (int)sVar7,0,0); - } - iVar8 += 1; - } while (iVar8 < 4); - puStackX0 = add_tab3_previous(puStackX0); - difficulty = DIFFICULTY_AGENT; - do { - if (((difficulty == DIFFICULTY_AGENT) || (difficulty <= iStack8)) && - (BVar4 = check_if_stage_completed_on_difficulty(briefingpage,difficulty), - iVar8 = DAT_8008d128, BVar4 == 3)) { - fStack3036 = (float)(difficulty * 0x1e + 0xba); - iStack3040 = 0x438c0000; - fStack3048 = (float)(uint)*(byte *)(DAT_8008d128 + 0x34); - if (false) { - fStack3048 = fStack3048 + 4294967296.00000000; - } - fStack3048 = fStack3048 * 0.50000000; - fStack3044 = (float)(uint)*(byte *)(DAT_8008d128 + 0x35); - if (false) { - fStack3044 = fStack3044 + 4294967296.00000000; - } - fStack3044 = fStack3044 * 0.50000000; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,(uint *)(DAT_8008d128 + 0x30),4,0,0); - display_image_at_on_screen_coord - ((int *)register0x000000ec,&iStack3040,wdivh,(int)&fStack3048, - (uint)*(byte *)(iVar8 + 0x34),(uint)*(byte *)(iVar8 + 0x35),0,0,1,0xb4,0,0,0xff, - (uint)(*(char *)(iVar8 + 0x36) != '\0')); - } - difficulty += DIFFICULTY_SECRET; - } while (difficulty != DIFFICULTY_007); - puVar5 = (u32 *)load_draw_selected_icon_folder_select(puStackX0); - return puVar5; -} - - - -void init_menu09_007options(void) - -{ - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - highlight_enemy_reaction = FALSE; - highlight_enemy_health = FALSE; - highlight_enemy_accuracy = FALSE; - highlight_enemy_damage = FALSE; - load_walletbond(); - return; -} - - - -void update_menu09_007options(void) - -{ - return; -} - - - -void interface_menu09_007options(undefined8 param_1,undefined8 param_2) - -{ - f32 fVar1; - ulonglong uVar2; - longlong lVar3; - f32 extraout_a0_lo; - float fVar4; - float fVar5; - int iVar6; - - video_related_1F(60.00000000); - video_related_21((f32)menu09_aspect); - set_page_height(100.00000000,(f32)menu09_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - uVar2 = get_controller_buttons_held('\0',0xa000); - if (uVar2 == 0) { - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - highlight_enemy_reaction = FALSE; - highlight_enemy_health = FALSE; - highlight_enemy_accuracy = FALSE; - highlight_enemy_damage = FALSE; - lVar3 = isontab3(); - if (lVar3 == 0) { - lVar3 = isontab2(); - if (lVar3 == 0) { - lVar3 = isontab1(); - if (lVar3 == 0) { - iVar6 = (int)(float)cursor_v_pos; - if (iVar6 < 0x107) { - if (iVar6 < 0xe6) { - if (iVar6 < 0xc5) { - if (iVar6 < 0xa4) { - tab_2_highlight = TRUE; - } - else { - highlight_enemy_health = TRUE; - } - } - else { - highlight_enemy_accuracy = TRUE; - } - } - else { - highlight_enemy_damage = TRUE; - } - } - else { - highlight_enemy_reaction = TRUE; - } - } - else { - tab_1_highlight = TRUE; - } - } - else { - tab_2_highlight = TRUE; - } - } - else { - tab_3_highlight = TRUE; - } - } - uVar2 = get_controller_buttons_pressed('\0',0x1000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0xa000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_2_highlight == FALSE) { - if (tab_3_highlight == FALSE) { - if (tab_1_highlight != FALSE) { - tab_1_selected = TRUE; - } - } - else { - tab_3_selected = TRUE; - } - } - else { - tab_2_selected = TRUE; - } - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - tab_1_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - uVar2 = get_controller_buttons_held('\0',0xa000); - fVar1 = slider_007_mode_reaction; - if (uVar2 != 0) { - fVar5 = 1.00000000; - fVar4 = ((float)cursor_h_pos - 55.00000000) / 300.00000000; - if (fVar4 <= 1.00000000) { - fVar5 = fVar4; - } - if (fVar5 < 0.00000000) { - fVar5 = 0.00000000; - } - fVar1 = (f32)fVar5; - if (highlight_enemy_reaction == FALSE) { - if (highlight_enemy_health == FALSE) { - if (highlight_enemy_accuracy == FALSE) { - fVar1 = slider_007_mode_reaction; - if (highlight_enemy_damage != FALSE) { - slider_007_mode_damage = (f32)(fVar5 * fVar5 * 10.00000000); - fVar1 = slider_007_mode_reaction; - } - } - else { - slider_007_mode_accuracy = (f32)(fVar5 * fVar5 * 10.00000000); - fVar1 = slider_007_mode_reaction; - } - } - else { - slider_007_mode_health = (f32)(fVar5 * fVar5 * 10.00000000); - fVar1 = slider_007_mode_reaction; - } - } - } - slider_007_mode_reaction = fVar1; - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); - menu_control_stick_tracking(); - if (tab_1_selected == FALSE) { - if (tab_2_selected == FALSE) { - if (tab_3_selected != FALSE) { - set_menu_to_mode(8,0); - set_cursor_pos_difficulty(selected_difficulty); - } - } - else { - set_menu_to_mode(10,0); - } - } - else { - set_menu_to_mode(0xb,1); - } - return; -} - - - -u32 * constructor_menu09_007options(undefined4 *param_1) - -{ - undefined4 *puVar1; - undefined4 *DL; - uint *puVar2; - short sVar4; - short sVar5; - u32 *puVar3; - undefined4 *puVar6; - undefined4 *puVar7; - float fVar8; - int iStack3020; - int iStack3016; - undefined4 auStack3012 [750]; - uint uStack12; - uint uStack8; - byte *pbStack4; - - puVar1 = set_setfillcolor(param_1,0,0,0); - puVar1 = insert_generic_fillrect(puVar1); - DL = (undefined4 *)proc_7F00D5E8(puVar1); - puVar1 = (undefined4 *)array_80050074; - puVar6 = auStack3012; - do { - puVar7 = puVar1 + 3; - *puVar6 = *puVar1; - puVar6[1] = puVar1[1]; - puVar6[2] = puVar1[2]; - puVar1 = puVar7; - puVar6 = puVar6 + 3; - } while (puVar7 != (undefined4 *)"%d%%\n"); - puVar2 = microcode_constructor(DL); - puVar2 = print_current_solo_briefing_stage_name(puVar2,(byte *)auStack3012); - pbStack4 = get_textptr_for_textID(0x9c28); - uStack8 = 0x37; - uStack12 = 0x8f; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c2a); - uStack8 = 0x39; - uStack12 = 0xa4; - puVar1 = microcode_constructor_related_to_menus(puVar2,0x37,0xb5,0x163,0xc0,0x32); - fVar8 = sqrtf((float)slider_007_mode_health / 10.00000000); - puVar2 = microcode_constructor_related_to_menus - (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), - (longlong)((int)(fVar8 * 300.00000000) + 0x37),uStack12 + 0x1c,100); - if (highlight_enemy_health != FALSE) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_health * 100.00000000)); - iStack3020 = 0; - iStack3016 = 0; - proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - uStack8 = 0x11d - iStack3020; - uStack12 = 0xa4; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c2b); - uStack8 = 0x39; - uStack12 = 0xc5; - puVar1 = microcode_constructor_related_to_menus(puVar2,0x37,0xd6,0x163,0xe1,0x32); - fVar8 = sqrtf((float)slider_007_mode_accuracy / 10.00000000); - puVar2 = microcode_constructor_related_to_menus - (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), - (longlong)((int)(fVar8 * 300.00000000) + 0x37),uStack12 + 0x1c,100); - if (highlight_enemy_accuracy != FALSE) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_accuracy * 100.00000000)); - iStack3020 = 0; - iStack3016 = 0; - proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - uStack8 = 0x11d - iStack3020; - uStack12 = 0xc5; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c2c); - uStack8 = 0x39; - uStack12 = 0xe6; - puVar1 = microcode_constructor_related_to_menus(puVar2,0x37,0xf7,0x163,0x102,0x32); - fVar8 = sqrtf((float)slider_007_mode_damage / 10.00000000); - puVar2 = microcode_constructor_related_to_menus - (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), - (longlong)((int)(fVar8 * 300.00000000) + 0x37),uStack12 + 0x1c,100); - if (highlight_enemy_damage != FALSE) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_damage * 10.00000000)); - iStack3020 = 0; - iStack3016 = 0; - proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - uStack8 = 0x11d - iStack3020; - uStack12 = 0xe6; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c29); - uStack8 = 0x39; - uStack12 = 0x107; - puVar1 = microcode_constructor_related_to_menus(puVar2,0x37,0x118,0x163,0x123,0x32); - puVar2 = microcode_constructor_related_to_menus - (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), - (longlong) - ((int)((float)slider_007_mode_reaction * 300.00000000 * 1.00000000) + 0x37), - uStack12 + 0x1c,100); - if (highlight_enemy_reaction != FALSE) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_reaction * 100.00000000)); - iStack3020 = 0; - iStack3016 = 0; - proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - uStack8 = 0x11d - iStack3020; - uStack12 = 0x107; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - puVar2 = add_tab1_start(puVar2); - puVar2 = add_tab3_previous(puVar2); - puVar2 = add_tab2_next(puVar2); - puVar3 = (u32 *)load_draw_selected_icon_folder_select(puVar2); - return puVar3; -} - - - -u32 get_player_control_style(int playernum) - -{ - return controlstyle_player[playernum]; -} - - - -BOOL check_if_mp_stage_unlocked(int stage) - -{ - int iVar1; - BOOL BVar2; - - if (multi_stage_setups[stage].min_player == 0) { - BVar2 = FALSE; - } - else { - iVar1 = get_selected_num_players(); - if (multi_stage_setups[stage].max_player < iVar1) { - BVar2 = FALSE; - } - else { - if (multi_stage_setups[stage].unlock_after == ~SP_STAGE_DAM) { - BVar2 = TRUE; - } - else { - BVar2 = doesFolderHaveStageUnlockedAtDifficulty - (selected_folder_num,multi_stage_setups[stage].unlock_after, - DIFFICULTY_AGENT); - if (BVar2 == FALSE) { - BVar2 = FALSE; - } - else { - BVar2 = TRUE; - } - } - } - } - return BVar2; -} - - - -void select_game_length(void) - -{ - uint uVar1; - - if (scenario != SCENARIO_TLD) { - game_length = (int)(game_length + 1) % 7; - return; - } - uVar1 = game_length + 1 & 3; - if (((int)(game_length + 1) < 0) && (uVar1 != 0)) { - uVar1 -= 4; - } - game_length = uVar1; - return; -} - - - -void copy_aim_settings_to_playerdata(void) - -{ - player1_playerdata.autoaim = mp_sight_adjust_table[aim_sight_adjustment].autoaim; - player1_playerdata.sight = mp_sight_adjust_table[aim_sight_adjustment].sight; - player2_player_data.autoaim = player1_playerdata.autoaim; - player2_player_data.sight = player1_playerdata.sight; - player3_player_data.autoaim = player1_playerdata.autoaim; - player3_player_data.sight = player1_playerdata.sight; - player4_player_data.autoaim = player1_playerdata.autoaim; - player4_player_data.sight = player1_playerdata.sight; - return; -} - - - -void advance_aim_settings_selection(void) - -{ - uint uVar1; - - uVar1 = aim_sight_adjustment + 1; - aim_sight_adjustment = uVar1 & 3; - if (((int)uVar1 < 0) && (aim_sight_adjustment != 0)) { - aim_sight_adjustment -= 4; - } - copy_aim_settings_to_playerdata(); - return; -} - - - -void unlock_mp_chars(void) - -{ - num_chars_selectable_mp = 0x40; - return; -} - - - -u32 get_selected_num_players(void) - -{ - if (gamemode == GAMEMODE_MULTI) { - return selected_num_players; - } - return 1; -} - - - -HEADS get_player_mp_char_head(int player) - -{ - if ((int)(&player_1_char)[player] < 0) { - return (HEADS)(uint)(ushort)mp_chr_setup[player].head; - } - return (HEADS)(uint)(ushort)mp_chr_setup[(&player_1_char)[player]].head; -} - - - -ulonglong get_player_mp_char_gender(int player) - -{ - if ((int)(&player_1_char)[player] < 0) { - return (ulonglong)(byte)mp_chr_setup[player].gender; - } - return (ulonglong)(byte)mp_chr_setup[(&player_1_char)[player]].gender; -} - - - -BODIES get_player_mp_char_body(int player) - -{ - if ((int)(&player_1_char)[player] < 0) { - return (BODIES)(uint)(ushort)mp_chr_setup[player].body; - } - return (BODIES)(uint)(ushort)mp_chr_setup[(&player_1_char)[player]].body; -} - - - -f32 get_player_mp_handicap(int player) - -{ - return (f32)MP_handicap_table[(&handicap_player1)[player]].damage_modifier; -} - - - -f32 get_player_mp_char_height(int player) - -{ - if ((int)(&player_1_char)[player] < 0) { - return (f32)mp_chr_setup[player].pov; - } - return (f32)mp_chr_setup[(&player_1_char)[player]].pov; -} - - - -int get_mp_timelimit(void) - -{ - return multi_game_lengths[game_length].time; -} - - - -int get_mp_pointlimit(void) - -{ - return multi_game_lengths[game_length].points; -} - - - -void reset_mp_options_for_scenario(MPSCENARIOS scenario) - -{ - int iVar1; - - unlock_stage_select = 1; - unlock_game_length = 1; - unlock_chars = 1; - unlock_weapon_select = 1; - unlock_handicap = 1; - unlock_control_style = 1; - unlock_aim_sight = 1; - scenario = scenario; - switch(scenario) { - case SCENARIO_NORMAL: - case SCENARIO_2v2: - case SCENARIO_3v1: - case SCENARIO_2v1: - if (6 < game_length) { - game_length = 2; - } - scenario = scenario; - iVar1 = get_mp_weapon_set(); - if (0xd < iVar1) { - set_mp_weapon_set(0xd); - } - break; - case SCENARIO_YOLT: - game_length = 7; - scenario = scenario; - iVar1 = get_mp_weapon_set(); - if (0xd < iVar1) { - set_mp_weapon_set(0xd); - } - unlock_game_length = 0; - break; - case SCENARIO_TLD: - if (3 < game_length) { - game_length = 2; - } - scenario = scenario; - iVar1 = get_mp_weapon_set(); - if (0xd < iVar1) { - set_mp_weapon_set(0xd); - } - break; - case SCENARIO_MWTGG: - if (6 < game_length) { - game_length = 2; - } - scenario = scenario; - set_mp_weapon_set(0xd); - unlock_weapon_select = 0; - break; - case SCENARIO_LTK: - if (6 < game_length) { - game_length = 2; - } - scenario = scenario; - set_mp_weapon_set(1); - unlock_handicap = 0; - } - return; -} - - - -void init_mp_options_for_scenario(longlong numplayers) - -{ - longlong lVar1; - int iVar2; - int *piVar3; - - if (numplayers < 2) { - numplayers = 2; - } - selected_num_players = (u32)numplayers; - lVar1 = 0; - if (0 < numplayers) { - piVar3 = &player_1_char; - iVar2 = 0; - do { - if (*piVar3 == -1) { - *piVar3 = (int)lVar1; - *(undefined4 *)((int)&handicap_player1 + iVar2) = 5; - } - lVar1 = (longlong)((int)lVar1 + 1); - if ((2 < numplayers) && (3 < *(int *)((int)controlstyle_player + iVar2))) { - *(int *)((int)controlstyle_player + iVar2) = 0; - } - iVar2 += 4; - piVar3 = piVar3 + 1; - } while (lVar1 < numplayers); - } - if (((longlong)(ulonglong)(byte)mp_stage_playercounts[scenario].max < numplayers) || - (numplayers < (longlong)(ulonglong)(byte)mp_stage_playercounts[scenario].min)) { - reset_mp_options_for_scenario(0); - numplayers = (longlong)(int)selected_num_players; - } - if ((longlong)multi_stage_setups[MP_stage_selected].max_player < numplayers) { - MP_stage_selected = MP_STAGE_TEMPLE; - } - return; -} - - - -void init_menu0E_mpoptions(void) - -{ - longlong numplayers; - BOOL BVar1; - - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - if (maybe_is_in_menu != FALSE) { - music_related_38(0x7fff); - musicTrack1Vol(0x7fff); - music1_playing = 0; - musicTrack1Play(M_FOLDERS); - maybe_is_in_menu = FALSE; - } - if (selected_num_players == 0) { - numplayers = get_attached_controller_count(); - init_mp_options_for_scenario(numplayers); - } - BVar1 = check_if_mp_stage_unlocked(MP_stage_selected); - if (BVar1 == FALSE) { - MP_stage_selected = MP_STAGE_TEMPLE; - } - highlight_players = FALSE; - highlight_scenario = FALSE; - highlight_gameselect = FALSE; - highlight_gamelength = FALSE; - highlight_character = FALSE; - highlight_weaponselect = FALSE; - highlight_health = FALSE; - highlight_controlstyle = FALSE; - highlight_aimadjustment = FALSE; - load_walletbond(); - return; -} - - - -void update_menu0E_mpoptions(void) - -{ - return; -} - - - -void interface_menu0E_mpoptions(undefined8 param_1,undefined8 param_2) - -{ - bool bVar1; - bool bVar2; - bool bVar3; - bool bVar4; - bool bVar5; - bool bVar6; - bool bVar7; - bool bVar8; - bool bVar9; - LEVELID LVar10; - longlong numplayers; - int iVar12; - ulonglong uVar11; - u32 uVar13; - BOOL BVar14; - longlong numplayers_00; - f32 extraout_a0_lo; - - bVar1 = false; - bVar2 = false; - bVar3 = false; - bVar4 = false; - bVar5 = false; - bVar6 = false; - bVar7 = false; - bVar8 = false; - bVar9 = false; - video_related_1F(60.00000000); - video_related_21((f32)menu0E_aspect); - set_page_height(100.00000000,(f32)menu0E_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - numplayers = get_attached_controller_count(); - if (numplayers < 2) { - set_menu_to_mode(6,0); - set_menu_cursor_pos_to_setting(gamemode); - } - iVar12 = get_attached_controller_count(); - if (iVar12 < (int)selected_num_players) { - numplayers = get_attached_controller_count(); - init_mp_options_for_scenario(numplayers); - } - uVar11 = get_controller_buttons_held('\0',0xa000); - if (uVar11 == 0) { - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - highlight_players = FALSE; - highlight_scenario = FALSE; - highlight_gameselect = FALSE; - highlight_gamelength = FALSE; - highlight_character = FALSE; - highlight_weaponselect = FALSE; - highlight_health = FALSE; - highlight_controlstyle = FALSE; - highlight_aimadjustment = FALSE; - numplayers = isontab3(); - if (numplayers == 0) { - numplayers = isontab1(); - if (numplayers == 0) { - iVar12 = (int)(float)cursor_v_pos; - if ((iVar12 < 0x119) || (unlock_aim_sight == 0)) { - if ((iVar12 < 0x105) || (unlock_control_style == 0)) { - if ((iVar12 < 0xf1) || (unlock_handicap == 0)) { - if ((iVar12 < 0xdd) || (unlock_chars == 0)) { - if ((iVar12 < 0xc9) || (unlock_weapon_select == 0)) { - if ((iVar12 < 0xb5) || (unlock_game_length == 0)) { - if ((iVar12 < 0xa1) || (unlock_stage_select == 0)) { - if (iVar12 < 0x8d) { - highlight_players = TRUE; - } - else { - highlight_scenario = TRUE; - } - } - else { - highlight_gameselect = TRUE; - } - } - else { - highlight_gamelength = TRUE; - } - } - else { - highlight_weaponselect = TRUE; - } - } - else { - highlight_character = TRUE; - } - } - else { - highlight_health = TRUE; - } - } - else { - highlight_controlstyle = TRUE; - } - } - else { - highlight_aimadjustment = TRUE; - } - } - else { - tab_1_highlight = TRUE; - } - } - else { - tab_3_highlight = TRUE; - } - } - uVar11 = get_controller_buttons_pressed('\0',0x1000); - if (uVar11 == 0) { - uVar11 = get_controller_buttons_pressed('\0',0xa000); - if (uVar11 == 0) { - uVar11 = get_controller_buttons_pressed('\0',0x4000); - if (uVar11 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_3_highlight != FALSE) { - tab_3_selected = TRUE; - } - if (tab_1_highlight == FALSE) { - if (highlight_players == FALSE) { - if (highlight_scenario == FALSE) { - if (highlight_gameselect == FALSE) { - if (highlight_gamelength == FALSE) { - if (highlight_character == FALSE) { - if (highlight_weaponselect == FALSE) { - if (highlight_health == FALSE) { - if (highlight_controlstyle == FALSE) { - if (highlight_aimadjustment != FALSE) { - bVar9 = true; - } - } - else { - bVar8 = true; - } - } - else { - bVar7 = true; - } - } - else { - bVar6 = true; - } - } - else { - bVar5 = true; - } - } - else { - bVar4 = true; - } - } - else { - bVar3 = true; - } - } - else { - bVar2 = true; - } - } - else { - bVar1 = true; - } - } - else { - tab_1_selected = TRUE; - } - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - tab_1_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,5,1); - menu_control_stick_tracking(); - if (tab_3_selected == FALSE) { - if (tab_1_selected == FALSE) { - if (bVar1) { - numplayers = get_attached_controller_count(); - numplayers_00 = (longlong)(int)(selected_num_players + 1); - if (numplayers < numplayers_00) { - numplayers_00 = 2; - } - init_mp_options_for_scenario(numplayers_00); - } - else { - if (bVar2) { - set_menu_to_mode(0x13,0); - } - else { - if (bVar3) { - set_menu_to_mode(0x12,0); - } - else { - if (bVar4) { - select_game_length(); - } - else { - if (bVar5) { - set_menu_to_mode(0xf,0); - } - else { - if (bVar6) { - advance_mp_weapon_set_by_one_save_value(); - } - else { - if (bVar7) { - set_menu_to_mode(0x10,0); - } - else { - if (bVar8) { - set_menu_to_mode(0x11,0); - } - else { - if (bVar9) { - advance_aim_settings_selection(); - } - } - } - } - } - } - } - } - } - } - else { - LVar10 = multi_stage_setups[MP_stage_selected].stage_id; - if (multi_stage_setups[MP_stage_selected].stage_id < 0) { - do { - uVar13 = get_random_value(); - selected_stage = multi_stage_setups[uVar13 % 0xb + 1].stage_id; - BVar14 = check_if_mp_stage_unlocked(uVar13 % 0xb + 1); - LVar10 = selected_stage; - } while (BVar14 == FALSE); - } - selected_stage = LVar10; - briefingpage = 0xffffffff; - set_menu_to_mode(0xb,1); - } - } - else { - set_menu_to_mode(6,0); - set_menu_cursor_pos_to_setting(gamemode); - } - return; -} - - - -u32 * constructor_menu0E_mpoptions(undefined4 *param_1) - -{ - undefined4 *DL; - uint *puVar1; - short sVar4; - short sVar5; - mp_weaponset_set *pmVar2; - u32 *puVar3; - uint uVar6; - int iStack28; - int iStack24; - uint uStack20; - uint uStack16; - byte abStack12 [8]; - byte *pbStack4; - - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - puVar1 = microcode_constructor(DL); - pbStack4 = get_textptr_for_textID(0x9c4c); - uStack16 = 0x37; - uStack20 = 0x5f; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c4d); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0x79; - if (highlight_players != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0x78,(longlong)(iStack28 + 0x3c),0x87,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c4e); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0x8d; - if (highlight_scenario != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0x8c,(longlong)(iStack28 + 0x3c),0x9b,0x32); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c4f); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0xa1; - if (highlight_gameselect != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0xa0,(longlong)(iStack28 + 0x3c),0xaf,0x32); - } - if (unlock_stage_select == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c50); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0xb5; - if (highlight_gamelength != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0xb4,(longlong)(iStack28 + 0x3c),0xc3,0x32); - } - if (unlock_game_length == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c51); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0xc9; - if (highlight_weaponselect != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,200,(longlong)(iStack28 + 0x3c),0xd7,0x32); - } - if (unlock_weapon_select == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c52); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0xdd; - if (highlight_character != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0xdc,(longlong)(iStack28 + 0x3c),0xeb,0x32); - } - if (unlock_chars == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c53); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0xf1; - if (highlight_health != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0xf0,(longlong)(iStack28 + 0x3c),0xff,0x32); - } - if (unlock_handicap == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9d1e); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0x105; - if (highlight_controlstyle != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0x104,(longlong)(iStack28 + 0x3c),0x113,0x32); - } - if (unlock_control_style == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(0x9c54); - proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack16 = 0x39; - uStack20 = 0x119; - if (highlight_aimadjustment != FALSE) { - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,0x118,(longlong)(iStack28 + 0x3c),0x127,0x32); - } - if (unlock_aim_sight == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - sprintf((char *)abStack12,"%d",selected_num_players); - uStack16 = 0xa0; - uStack20 = 0x79; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,abStack12,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(mp_stage_playercounts[scenario].stage); - uStack16 = 0xa0; - uStack20 = 0x8d; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(multi_stage_setups[MP_stage_selected].folder_text_preset); - uStack16 = 0xa0; - uStack20 = 0xa1; - if (unlock_stage_select == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(multi_game_lengths[game_length].text_preset); - uStack16 = 0xa0; - uStack20 = 0xb5; - if (unlock_game_length == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pmVar2 = get_mpweaponset(); - pbStack4 = get_textptr_for_textID(*(u16 *)&pmVar2->weaponsetarray[0].anonymous_0); - uStack16 = 0xa0; - uStack20 = 0xc9; - if (unlock_weapon_select == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - pbStack4 = get_textptr_for_textID(*(u16 *)(mp_sight_adjust_table + aim_sight_adjustment)); - uStack16 = 0xa0; - uStack20 = 0x119; - if (unlock_aim_sight == 0) { - uVar6 = 0x70; - } - else { - uVar6 = 0xff; - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar6,(int)sVar4,(int)sVar5,0,0); - puVar1 = add_tab3_previous(puVar1); - puVar1 = add_tab1_start(puVar1); - puVar3 = (u32 *)load_draw_selected_icon_folder_select(puVar1); - return puVar3; -} - - - -BOOL hasPlayerSelectedMPChar(int playerchar) - -{ - BOOL BVar1; - int iVar2; - BOOL BVar3; - BOOL *pBVar4; - - BVar3 = FALSE; - iVar2 = 0; - if (0 < (int)selected_num_players) { - pBVar4 = &has_selected_char_player1; - do { - BVar1 = *pBVar4; - pBVar4 = pBVar4 + 1; - if ((BVar1 != FALSE) && (playerchar == *(int *)((int)&player_1_char + iVar2))) { - BVar3 = TRUE; - } - iVar2 += 4; - } while (pBVar4 < &has_selected_char_player1 + selected_num_players); - } - return BVar3; -} - - - -void init_menu0f_mpcharsel(void) - -{ - byte bVar1; - int iVar2; - uint *puVar3; - BOOL BVar4; - MP_STAGE_SELECTED playerchar; - MP_selectable_chars *pMVar5; - MP_STAGE_SELECTED *pMVar6; - - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - bVar1 = mp_chr_setup[0].select_photo; - pMVar5 = mp_chr_setup; - while( true ) { - iVar2 = (uint)bVar1 * 0x30; - puVar3 = (uint *)(DAT_8008d130 + iVar2); - if (*puVar3 < 3000) { - proc_7F0CBEE8(*puVar3,NULL); - puVar3 = (uint *)(DAT_8008d130 + iVar2); - } - if (puVar3[3] < 3000) { - proc_7F0CBEE8(puVar3[3],NULL); - puVar3 = (uint *)(DAT_8008d130 + iVar2); - } - if (puVar3[6] < 3000) { - proc_7F0CBEE8(puVar3[6],NULL); - puVar3 = (uint *)(DAT_8008d130 + iVar2); - } - if (puVar3[9] < 3000) { - proc_7F0CBEE8(puVar3[9],NULL); - } - if ((MP_selectable_chars *)0x8002b497 < pMVar5 + 1) break; - bVar1 = pMVar5[1].select_photo; - pMVar5 = pMVar5 + 1; - } - if (num_chars_selectable_mp != 0x40) { - BVar4 = doesFolderHaveStageUnlockedAtDifficulty - (selected_folder_num,SP_STAGE_CRADLE,DIFFICULTY_AGENT); - if (BVar4 == 3) { - num_chars_selectable_mp = 0x21; - } - else { - num_chars_selectable_mp = 8; - pMVar6 = &player_1_char; - do { - if ((int)num_chars_selectable_mp <= (int)*pMVar6) { - playerchar = MP_STAGE_RANDOM; - if (0 < (int)num_chars_selectable_mp) { - do { - BVar4 = hasPlayerSelectedMPChar(playerchar); - if (BVar4 == FALSE) { - *pMVar6 = playerchar; - goto LAB_7f011de0; - } - playerchar += MP_STAGE_TEMPLE; - } while ((int)playerchar < (int)num_chars_selectable_mp); - } - *pMVar6 = playerchar; - } -LAB_7f011de0: - pMVar6 = pMVar6 + 1; - } while (pMVar6 != &MP_stage_selected); - } - } - mp_char_cur_select_player1 = player_1_char; - mp_char_prev_select_player1 = player_1_char; - mp_unknown1_player1 = 0; - has_selected_char_player1 = FALSE; - size_mp_select_image_player1 = 0; - mp_char_cur_select_player2 = player_2_char; - mp_char_prev_select_player2 = player_2_char; - mp_unknown1_player2 = 0; - has_selected_char_player2 = FALSE; - size_mp_select_image_player2 = 0; - mp_char_cur_select_player3 = player_3_char; - mp_char_prev_select_player3 = player_3_char; - mp_unknown1_player3 = 0; - has_selected_char_player3 = FALSE; - size_mp_select_image_player3 = 0; - mp_char_cur_select_player4 = player_4_char; - mp_char_prev_select_player4 = player_4_char; - mp_unknown1_player4 = 0; - has_selected_char_player4 = FALSE; - size_mp_select_image_player4 = 0; - load_walletbond(); - return; -} - - - -void update_menu0F_mpcharsel(void) - -{ - return; -} - - - -void interface_menu0F_mpcharsel(void) - -{ - int iVar1; - int iVar2; - int iVar4; - ulonglong uVar3; - BOOL BVar5; - int iVar6; - int iVar7; - f32 extraout_a0_lo; - char cVar8; - int *piVar9; - int *piVar10; - int iVar11; - BOOL *pBVar12; - int *piVar13; - int iVar14; - int iStack12; - - iVar4 = get_selected_num_players(); - iStack12 = 0; - video_related_1F(60.00000000); - video_related_21((f32)menu0F_aspect); - set_page_height(100.00000000,(f32)menu0F_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - iVar14 = 0; - iVar11 = 0; - if (0 < iVar4) { - piVar10 = &mp_unknown1_player1; - piVar9 = &mp_char_cur_select_player1; - piVar13 = &mp_char_prev_select_player1; - pBVar12 = &has_selected_char_player1; - do { - cVar8 = (char)iVar14; - if (*pBVar12 != FALSE) { - iVar6 = *(int *)((int)&size_mp_select_image_player1 + iVar11); - if ((iVar6 < 0xb) && (*piVar13 == *piVar9)) { - *(int *)((int)&size_mp_select_image_player1 + iVar11) = iVar6 + 1; - } - uVar3 = get_controller_buttons_pressed(cVar8,0x4000); - if (uVar3 != 0) { - *pBVar12 = FALSE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - if ((*pBVar12 == FALSE) && - (iVar6 = *(int *)((int)&size_mp_select_image_player1 + iVar11), 0 < iVar6)) { - *(int *)((int)&size_mp_select_image_player1 + iVar11) = iVar6 + -1; -LAB_7f012164: - iVar6 = *piVar13; - } - else { - if (*pBVar12 != FALSE) goto LAB_7f012164; - uVar3 = get_controller_buttons_pressed(cVar8,0x202); - if (uVar3 != 0) { - if (0 < *piVar9) { - *piVar9 = *piVar9 + -1; - } - goto LAB_7f012164; - } - uVar3 = get_controller_buttons_pressed(cVar8,0x101); - if (uVar3 != 0) { - if (*piVar9 < (int)(num_chars_selectable_mp - 1)) { - *piVar9 = *piVar9 + 1; - } - goto LAB_7f012164; - } - uVar3 = get_controller_buttons_pressed(cVar8,0xb000); - if (uVar3 == 0) { - iVar6 = get_controller_3dstick_L_R(cVar8,-2,1); - if (iVar6 < 1) { - iVar6 = get_controller_3dstick_L_R(cVar8,-2,1); - if (iVar6 < -1) { - if (*piVar10 == 0) { - if (0 < *piVar9) { - *piVar9 = *piVar9 + -1; - } - goto LAB_7f012164; - } - iVar6 = *piVar13; - } - else { - iVar6 = *piVar13; - } - } - else { - if (*piVar10 == 0) { - if (*piVar9 < (int)(num_chars_selectable_mp - 1)) { - *piVar9 = *piVar9 + 1; - } - goto LAB_7f012164; - } - iVar6 = *piVar13; - } - } - else { - BVar5 = hasPlayerSelectedMPChar(*piVar9); - if (BVar5 != FALSE) goto LAB_7f012164; - *(int *)((int)&player_1_char + iVar11) = *piVar9; - *(undefined4 *)((int)&size_mp_select_image_player1 + iVar11) = 1; - *pBVar12 = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - iVar6 = *piVar13; - } - } - iVar1 = *piVar9; - iVar2 = *piVar10; - iVar14 += 1; - piVar9 = piVar9 + 1; - BVar5 = *pBVar12; - iVar7 = iVar2 + iVar6 * 0x54; - if (iVar1 * 0x54 < iVar7) { - *piVar10 = iVar2 + -0xc; - if (iVar2 + -0xc < 0) { - *piVar10 = iVar2 + 0x48; - *piVar13 = iVar6 + -1; - } - } - else { - if ((iVar7 < iVar1 * 0x54) && (*piVar10 = iVar2 + 0xc, 0x53 < iVar2 + 0xc)) { - *piVar10 = iVar2 + -0x48; - *piVar13 = iVar6 + 1; - } - } - if ((BVar5 != FALSE) && (*(int *)((int)&size_mp_select_image_player1 + iVar11) == 0xb)) { - iStack12 = iStack12 + 1; - } - iVar11 += 4; - piVar13 = piVar13 + 1; - piVar10 = piVar10 + 1; - pBVar12 = pBVar12 + 1; - } while (iVar14 != iVar4); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); - menu_control_stick_tracking(); - if (iStack12 == iVar4) { - set_menu_to_mode(0xe,0); - } - return; -} - - - -int proc_7F0122A8(int param_1,int param_2,int param_3) - -{ - if ((param_1 <= param_2) || (param_3 <= param_1)) { - return 0; - } - if (param_1 < param_2 + 0x28) { - return (param_2 - param_1) * -6 + 0xf; - } - if (param_3 + -0x28 < param_1) { - return (param_1 - param_3) * -6 + 0xf; - } - return 0xff; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 * proc_7F01231C(void) - -{ - short sVar1; - Mtx *m; - Mtx *m_00; - Mtx *pabVar2; - BOOL BVar3; - byte bVar5; - int iVar4; - undefined4 *in_a0_lo; - int in_a1_lo; - int in_a2_lo; - undefined4 in_a3_lo; - Mtx *pabVar6; - uint uVar7; - short sVar8; - short sVar9; - uint uVar10; - float l; - float a; - float r; - float x; - undefined4 *puStackX0; - int iStackX4; - int iStackX8; - undefined4 uStackX12; - short in_stack_00000012; - int playerchar; - int in_stack_00000018; - - puStackX0 = in_a0_lo; - iStackX4 = in_a1_lo; - iStackX8 = in_a2_lo; - uStackX12 = in_a3_lo; - proc_7F0BD6E0(); - m_00 = m; - proc_7F0BD6E0(); - pabVar2 = m_00; - proc_7F0BD6C4(0x10); - puStackX0 = microcode_constructor(puStackX0); - guOrtho(m,l,r,0.00000000,440.00000000,0.00000000,330.00000000,1.00000000); - guRotate(m_00,a,x,3.14159274,1.00000000); - sVar1 = (short)in_stack_00000018; - uVar10 = 0; - pabVar6 = pabVar2; - do { - uVar7 = 0; - do { - sVar9 = (short)uVar7; - if (1 < (int)uVar7) { - sVar9 += -1; - } - sVar8 = (short)uVar10; - if (1 < (int)uVar10) { - sVar8 = (short)uVar10 + -1; - } - BVar3 = hasPlayerSelectedMPChar(playerchar); - if (BVar3 == FALSE) { - bVar5 = 0xff; - } - else { - if (in_stack_00000018 == 0) { - bVar5 = 0x6e; - } - else { - bVar5 = 0xff; - } - } - *(short *)*pabVar6 = (sVar9 + -1) * (sVar1 + 0x23) + (short)uStackX12; - *(undefined2 *)(*pabVar6 + 4) = 0xfffb; - *(undefined2 *)(*pabVar6 + 6) = 0; - *(short *)(*pabVar6 + 2) = (0x14a - in_stack_00000012) + (sVar8 + -1) * (sVar1 + 0x2a) + sVar1 - ; - if ((uVar7 & 1) == 0) { - *(undefined2 *)(*pabVar6 + 8) = 0; - } - else { - *(undefined2 *)(*pabVar6 + 8) = 0x1000; - } - if ((uVar10 & 1) == 0) { - *(undefined2 *)(*pabVar6 + 10) = 0; - } - else { - *(undefined2 *)(*pabVar6 + 10) = 0x1000; - } - (*pabVar6)[0xc] = bVar5; - (*pabVar6)[0xd] = bVar5; - (*pabVar6)[0xe] = bVar5; - if (in_stack_00000018 == 0) { - iVar4 = proc_7F0122A8((int)*(short *)*pabVar6,iStackX4,iStackX8); - (*pabVar6)[0xf] = (byte)iVar4; - } - else { - (*pabVar6)[0xf] = 0xff; - } - uVar7 += 1; - pabVar6 = (Mtx *)(*pabVar6 + 0x10); - } while (uVar7 != 4); - uVar10 += 1; - } while (uVar10 != 4); - *puStackX0 = 0x1030040; - *(Mtx **)(puStackX0 + 1) = m + -0x2000000; - puStackX0[2] = 0x1020040; - *(Mtx **)(puStackX0 + 3) = m_00 + -0x2000000; - puStackX0[4] = 0x4f00100; - *(Mtx **)(puStackX0 + 5) = pabVar2; - puStackX0 = puStackX0 + 6; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec, - (uint *)((uint)(byte)mp_chr_setup[playerchar].select_photo * 0x30 + DAT_8008d130 + 0x18 - ),2,0,2); - puStackX0[1] = 0xa28; - *puStackX0 = 0xbf000000; - puStackX0[3] = 0x280a32; - puStackX0[2] = 0xbf000000; - puStackX0 = puStackX0 + 4; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec, - (uint *)((uint)(byte)mp_chr_setup[playerchar].select_photo * 0x30 + DAT_8008d130 + 0x24 - ),2,0,2); - puStackX0[1] = 0x141e3c; - *puStackX0 = 0xbf000000; - puStackX0[3] = 0x3c1e46; - puStackX0[2] = 0xbf000000; - puStackX0 = puStackX0 + 4; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec, - (uint *)((uint)(byte)mp_chr_setup[playerchar].select_photo * 0x30 + DAT_8008d130),2,0,2 - ); - puStackX0[1] = 0x505a78; - *puStackX0 = 0xbf000000; - puStackX0[3] = 0x785a82; - puStackX0[2] = 0xbf000000; - puStackX0 = puStackX0 + 4; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec, - (uint *)((uint)(byte)mp_chr_setup[playerchar].select_photo * 0x30 + DAT_8008d130 + 0xc) - ,2,0,2); - puStackX0[1] = 0x646e8c; - *puStackX0 = 0xbf000000; - puStackX0[3] = 0x8c6e96; - puStackX0[2] = 0xbf000000; - return puStackX0 + 4; -} - - - -u32 * constructor_menu0F_mpcharsel(undefined4 *param_1) - -{ - undefined4 *DL; - uint *DL_00; - uint *DL_01; - byte *pbVar1; - short sVar3; - short sVar4; - u32 *puVar2; - int iVar5; - int iVar6; - int iVar7; - int *imagesize; - int *char_prev; - int *char_cur; - int *char_selected; - uint uStack76; - uint uStack72; - int iStack68; - int aiStack64 [2]; - uint uStack56; - uint uStack52; - int iStack48; - int aiStack44 [9]; - uint uStack8; - uint numplayers; - - numplayers = get_selected_num_players(); - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - DL = microcode_constructor(DL); - DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); - if (2 < (int)numplayers) { - DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); - } - if (0 < (int)numplayers) { - imagesize = &size_mp_select_image_player1; - char_cur = &mp_char_cur_select_player1; - char_prev = &mp_char_prev_select_player1; - uStack8 = 0; - char_selected = (int *)&has_selected_char_player1; - do { - if (numplayers == 2) { - iVar5 = 0x26; - iVar6 = 0x15e; - if ((int)uStack8 < 1) { - iVar7 = 0x1e; - } - else { - iVar7 = 0xaa; - } - } - else { - iVar6 = 0xaf; - if ((int)uStack8 < 2) { - iVar7 = 0; - } - else { - iVar7 = 0x8c; - } - iVar7 += 0x1e; - if ((uStack8 & 1) == 0) { - iVar5 = 0; - } - else { - iVar5 = 0xaf; - } - iVar5 += 0x26; - } - DL_01 = DL_00 + 2; - *DL_00 = ((int)((float)(iVar5 + 6) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | - (int)((float)(iVar7 + 5U) * 4.00000000) & 0xfffU; - DL_00[1] = ((int)((float)(iVar5 + iVar6 + -6) * 4.00000000) & 0xfffU) << 0xc | - (int)((float)(iVar7 + 0x87) * 4.00000000) & 0xfffU; - if ((*char_selected == 0) && (*imagesize == 0)) { - pbVar1 = get_textptr_for_textID(0x9c55); - proc_7F0AE98C(aiStack44,&iStack48,pbVar1,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0) - ; - uStack52 = ((iVar6 >> 1) + iVar5) - (iStack48 >> 1); - uStack56 = iVar7 + 5U; - DL_00 = microcode_constructor(DL_01); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - DL_01 = write_text_at_abs_coord - (DL_00,&uStack52,&uStack56,pbVar1,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar3,(int)sVar4,0,0); - } - pbVar1 = get_textptr_for_textID(mp_chr_setup[*char_cur].text_preset); - proc_7F0AE98C(aiStack64,&iStack68,pbVar1,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack76 = iVar7 + 0x78; - uStack72 = ((iVar6 >> 1) + iVar5) - (iStack68 >> 1); - DL_00 = microcode_constructor(DL_01); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - write_text_at_abs_coord - (DL_00,&uStack72,&uStack76,pbVar1,(int)ptrSecondFontTable,(int)ptrFirstFontTable, - 0xff,(int)sVar3,(int)sVar4,0,0); - DL_00 = (uint *)proc_7F01231C(); - if (*char_selected == 0) { - if (*imagesize != 0) { - iVar6 = *char_prev; - goto LAB_7f012bd0; - } -LAB_7f012be0: - iVar6 = *char_prev; - if (2 < iVar6) { - DL_00 = (uint *)proc_7F01231C(); - iVar6 = *char_prev; - } - if (1 < iVar6) { - DL_00 = (uint *)proc_7F01231C(); - iVar6 = *char_prev; - } - if (0 < iVar6) { - DL_00 = (uint *)proc_7F01231C(); - iVar6 = *char_prev; - } - if (iVar6 < (int)(num_chars_selectable_mp - 1)) { - DL_00 = (uint *)proc_7F01231C(); - iVar6 = *char_prev; - } - if (iVar6 < (int)(num_chars_selectable_mp - 2)) { - DL_00 = (uint *)proc_7F01231C(); - iVar6 = *char_prev; - } - if (iVar6 < (int)(num_chars_selectable_mp - 3)) { - DL_00 = (uint *)proc_7F01231C(); - } - } - else { - iVar6 = *char_prev; -LAB_7f012bd0: - if (iVar6 != *char_cur) goto LAB_7f012be0; - } - char_selected = char_selected + 1; - uStack8 += 1; - char_cur = char_cur + 1; - char_prev = char_prev + 1; - imagesize = imagesize + 1; - } while (uStack8 != numplayers); - } - puVar2 = combiner_bayer_lod_perspective(DL_00); - return puVar2; -} - - - -void init_menu10_mphandicap(void) - -{ - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - has_selected_char_player1 = FALSE; - dword_CODE_bss_80069760 = 0; - has_selected_char_player2 = FALSE; - dword_CODE_bss_80069764 = 0; - has_selected_char_player3 = FALSE; - dword_CODE_bss_80069768 = 0; - has_selected_char_player4 = FALSE; - dword_CODE_bss_8006976C = 0; - load_walletbond(); - return; -} - - - -void update_menu10_mphandicap(void) - -{ - return; -} - - - -// WARNING: Instruction at (ram,0x7f013048) overlaps instruction at (ram,0x7f013044) -// - -void interface_menu10_mphandicap(void) - -{ - int iVar2; - ulonglong uVar1; - int iVar3; - BOOL BVar4; - f32 extraout_a0_lo; - char cVar5; - BOOL *pBVar6; - int *piVar7; - int iVar8; - int iVar9; - int iVar10; - - iVar2 = get_selected_num_players(); - iVar10 = 0; - video_related_1F(60.00000000); - video_related_21(menu10_aspect); - set_page_height(100.00000000,menu10_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - iVar8 = 0; - iVar9 = 0; - if (0 < iVar2) { - pBVar6 = &has_selected_char_player1; - do { - cVar5 = (char)iVar8; - if ((*pBVar6 != FALSE) && (uVar1 = get_controller_buttons_pressed(cVar5,0x4000), uVar1 != 0)) - { - *pBVar6 = FALSE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - BVar4 = *pBVar6; - if (BVar4 == FALSE) { - piVar7 = (int *)((int)&dword_CODE_bss_80069760 + iVar9); - uVar1 = get_controller_buttons_pressed(cVar5,0x202); - if ((uVar1 == 0) && - ((iVar3 = get_controller_3dstick_L_R(cVar5,-2,1), -2 < iVar3 || (*piVar7 == 0)))) { - uVar1 = get_controller_buttons_pressed(cVar5,0x101); - if ((uVar1 == 0) && - ((iVar3 = get_controller_3dstick_L_R(cVar5,-2,1), iVar3 < 1 || (*piVar7 == 0)))) { - uVar1 = get_controller_buttons_pressed(cVar5,0xb000); - if (uVar1 != 0) { - *pBVar6 = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - iVar3 = *(int *)((int)&handicap_player1 + iVar9); - if (iVar3 < 10) { - *(int *)((int)&handicap_player1 + iVar9) = iVar3 + 1; - } - } - } - else { - iVar3 = *(int *)((int)&handicap_player1 + iVar9); - if (0 < iVar3) { - *(int *)((int)&handicap_player1 + iVar9) = iVar3 + -1; - } - } - iVar3 = get_controller_3dstick_L_R(cVar5,-2,1); - if ((iVar3 == -1) || (iVar3 = get_controller_3dstick_L_R(cVar5,-2,1), iVar3 == 0)) { - *piVar7 = 1; - BVar4 = *pBVar6; - } - else { - *piVar7 = 0; - BVar4 = *pBVar6; - } - } - if (BVar4 != FALSE) { - iVar10 += 1; - } - iVar8 += 1; - iVar9 += 4; - pBVar6 = pBVar6 + 1; - } while (iVar8 != iVar2); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); - menu_control_stick_tracking(); - if (iVar10 == iVar2) { - set_menu_to_mode(0xe,0); - } - return; -} - - - -u32 * constructor_menu10_mphandicap(undefined4 *param_1) - -{ - undefined4 *DL; - uint *DL_00; - byte *pbVar1; - short sVar3; - short sVar4; - uint *DL_01; - u32 *puVar2; - int iVar5; - int iVar6; - int iVar7; - uint uVar8; - int *piStack96; - BOOL *pBStack92; - uint uStack76; - uint uStack72; - int iStack68; - int aiStack64 [2]; - uint uStack56; - uint uStack52; - int iStack48; - int aiStack44 [10]; - uint uStack4; - - uStack4 = get_selected_num_players(); - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - DL = microcode_constructor(DL); - DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); - if (2 < (int)uStack4) { - DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); - } - uVar8 = 0; - if (0 < (int)uStack4) { - pBStack92 = &has_selected_char_player1; - piStack96 = &handicap_player1; - do { - iVar6 = 0x26; - if (uStack4 == 2) { - iVar7 = 0x15e; - if ((int)uVar8 < 1) { - iVar5 = 0x1e; - } - else { - iVar5 = 0xaa; - } - } - else { - iVar7 = 0xaf; - if ((int)uVar8 < 2) { - iVar5 = 0; - } - else { - iVar5 = 0x8c; - } - iVar5 += 0x1e; - if ((uVar8 & 1) == 0) { - iVar6 = 0; - } - else { - iVar6 = 0xaf; - } - iVar6 += 0x26; - } - DL_01 = DL_00 + 2; - *DL_00 = ((int)((float)(iVar6 + 6) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | - (int)((float)(iVar5 + 5) * 4.00000000) & 0xfffU; - DL_00[1] = ((int)((float)(iVar6 + iVar7 + -6) * 4.00000000) & 0xfffU) << 0xc | - (int)((float)(iVar5 + 0x87) * 4.00000000) & 0xfffU; - if (*pBStack92 == FALSE) { - pbVar1 = get_textptr_for_textID(0x9c56); - proc_7F0AE98C(aiStack44,&iStack48,pbVar1,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0) - ; - uStack52 = ((iVar7 >> 1) + iVar6) - (iStack48 >> 1); - uStack56 = (iVar5 - (aiStack44[0] >> 1)) + 0x37; - DL_00 = microcode_constructor(DL_01); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - DL_01 = write_text_at_abs_coord - (DL_00,&uStack52,&uStack56,pbVar1,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar3,(int)sVar4,0,0); - } - pbVar1 = get_textptr_for_textID(MP_handicap_table[*piStack96].text_preset); - proc_7F0AE98C(aiStack64,&iStack68,pbVar1,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack72 = ((iVar7 >> 1) + iVar6) - (iStack68 >> 1); - uStack76 = (iVar5 - (aiStack64[0] >> 1)) + 0x55; - DL_00 = microcode_constructor(DL_01); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - DL_00 = write_text_at_abs_coord - (DL_00,&uStack72,&uStack76,pbVar1,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar3,(int)sVar4,0,0); - uVar8 += 1; - pBStack92 = pBStack92 + 1; - piStack96 = piStack96 + 1; - } while (uVar8 != uStack4); - } - puVar2 = combiner_bayer_lod_perspective(DL_00); - return puVar2; -} - - - -void init_menu11_mpcontrol(void) - -{ - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - has_selected_char_player1 = FALSE; - dword_CODE_bss_80069760 = 0; - has_selected_char_player2 = FALSE; - dword_CODE_bss_80069764 = 0; - has_selected_char_player3 = FALSE; - dword_CODE_bss_80069768 = 0; - has_selected_char_player4 = FALSE; - dword_CODE_bss_8006976C = 0; - load_walletbond(); - return; -} - - - -void update_menu11_mpcontrols(void) - -{ - return; -} - - - -// WARNING: Instruction at (ram,0x7f013734) overlaps instruction at (ram,0x7f013730) -// - -void interface_menu11_mpcontrols(void) - -{ - int iVar2; - ulonglong uVar1; - int iVar3; - BOOL BVar4; - int *piVar5; - f32 extraout_a0_lo; - char cVar6; - int iVar7; - BOOL *pBVar8; - int *piVar9; - int iVar10; - int iStack12; - - iVar2 = get_selected_num_players(); - iStack12 = 0; - video_related_1F(60.00000000); - video_related_21((f32)menu11_aspect); - set_page_height(100.00000000,(f32)menu11_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - iVar7 = 0; - if (0 < iVar2) { - pBVar8 = &has_selected_char_player1; - iVar10 = 0; - do { - cVar6 = (char)iVar7; - if ((*pBVar8 != FALSE) && (uVar1 = get_controller_buttons_pressed(cVar6,0x4000), uVar1 != 0)) - { - *pBVar8 = FALSE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - BVar4 = *pBVar8; - if (BVar4 == FALSE) { - piVar9 = (int *)((int)&dword_CODE_bss_80069760 + iVar10); - uVar1 = get_controller_buttons_pressed(cVar6,0x202); - if ((uVar1 == 0) && - ((iVar3 = get_controller_3dstick_L_R(cVar6,-2,1), -2 < iVar3 || (*piVar9 == 0)))) { - uVar1 = get_controller_buttons_pressed(cVar6,0x101); - if ((uVar1 == 0) && - ((iVar3 = get_controller_3dstick_L_R(cVar6,-2,1), iVar3 < 1 || (*piVar9 == 0)))) { - uVar1 = get_controller_buttons_pressed(cVar6,0xb000); - if (uVar1 != 0) { - *pBVar8 = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - piVar5 = (int *)((int)controlstyle_player + iVar10); - if ((iVar2 == 2) && (iVar7 == 0)) { - iVar3 = *piVar5; - } - else { - iVar3 = *piVar5; - if (iVar3 < 4) { - if (iVar3 < 3) { - *piVar5 = iVar3 + 1; - } - goto LAB_7f013890; - } - iVar3 = *piVar5; - } - if (((iVar3 < 7) && (*piVar5 = iVar3 + 1, iVar7 == 0)) && - ((controlstyle_player[0] == 4 && ((int)controlstyle_player[1] < 4)))) { - controlstyle_player[1] = 4; - } - } - } - else { - piVar5 = (int *)((int)controlstyle_player + iVar10); - iVar3 = *piVar5; - if (0 < iVar3) { - if (iVar2 == 2) { - if (iVar7 == 1) { - if (((int)controlstyle_player[0] < 4) || (4 < iVar3)) goto LAB_7f01376c; - } - else { - *piVar5 = iVar3 + -1; - } - } - else { -LAB_7f01376c: - *piVar5 = iVar3 + -1; - } - if ((((iVar2 == 2) && (iVar7 == 0)) && ((int)controlstyle_player[0] < 4)) && - (3 < (int)controlstyle_player[1])) { - controlstyle_player[1] = 0; - } - } - } -LAB_7f013890: - iVar3 = get_controller_3dstick_L_R(cVar6,-2,1); - if ((iVar3 == -1) || (iVar3 = get_controller_3dstick_L_R(cVar6,-2,1), iVar3 == 0)) { - *piVar9 = 1; - BVar4 = *pBVar8; - } - else { - *piVar9 = 0; - BVar4 = *pBVar8; - } - } - iVar7 += 1; - if (BVar4 != FALSE) { - iStack12 += 1; - } - iVar10 += 4; - pBVar8 = pBVar8 + 1; - } while (iVar7 != iVar2); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); - menu_control_stick_tracking(); - if (iStack12 == iVar2) { - set_menu_to_mode(0xe,0); - } - return; -} - - - -u32 * constructor_menu11_mpcontrol(undefined4 *param_1) - -{ - undefined4 *DL; - uint *DL_00; - byte *pbVar1; - short sVar3; - short sVar4; - uint *DL_01; - u32 *puVar2; - int iVar5; - int iVar6; - int iVar7; - uint uVar8; - u32 *puStack96; - BOOL *pBStack92; - uint uStack76; - uint uStack72; - int iStack68; - int aiStack64 [2]; - uint uStack56; - uint uStack52; - int iStack48; - int aiStack44 [10]; - uint uStack4; - - uStack4 = get_selected_num_players(); - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - DL = microcode_constructor(DL); - DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); - if (2 < (int)uStack4) { - DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); - } - uVar8 = 0; - if (0 < (int)uStack4) { - pBStack92 = &has_selected_char_player1; - puStack96 = controlstyle_player; - do { - iVar6 = 0x26; - if (uStack4 == 2) { - iVar7 = 0x15e; - if ((int)uVar8 < 1) { - iVar5 = 0x1e; - } - else { - iVar5 = 0xaa; - } - } - else { - iVar7 = 0xaf; - if ((int)uVar8 < 2) { - iVar5 = 0; - } - else { - iVar5 = 0x8c; - } - iVar5 += 0x1e; - if ((uVar8 & 1) == 0) { - iVar6 = 0; - } - else { - iVar6 = 0xaf; - } - iVar6 += 0x26; - } - DL_01 = DL_00 + 2; - *DL_00 = ((int)((float)(iVar6 + 6) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | - (int)((float)(iVar5 + 5) * 4.00000000) & 0xfffU; - DL_00[1] = ((int)((float)(iVar6 + iVar7 + -6) * 4.00000000) & 0xfffU) << 0xc | - (int)((float)(iVar5 + 0x87) * 4.00000000) & 0xfffU; - if (*pBStack92 == FALSE) { - pbVar1 = get_textptr_for_textID(0x9d1d); - proc_7F0AE98C(aiStack44,&iStack48,pbVar1,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0) - ; - uStack52 = ((iVar7 >> 1) + iVar6) - (iStack48 >> 1); - uStack56 = (iVar5 - (aiStack44[0] >> 1)) + 0x37; - DL_00 = microcode_constructor(DL_01); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - DL_01 = write_text_at_abs_coord - (DL_00,&uStack52,&uStack56,pbVar1,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar3,(int)sVar4,0,0); - } - pbVar1 = get_textptr_for_textID(*(u16 *)(mp_controller_table + *puStack96)); - proc_7F0AE98C(aiStack64,&iStack68,pbVar1,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack72 = ((iVar7 >> 1) + iVar6) - (iStack68 >> 1); - uStack76 = (iVar5 - (aiStack64[0] >> 1)) + 0x55; - DL_00 = microcode_constructor(DL_01); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - DL_00 = write_text_at_abs_coord - (DL_00,&uStack72,&uStack76,pbVar1,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar3,(int)sVar4,0,0); - uVar8 += 1; - pBStack92 = pBStack92 + 1; - puStack96 = puStack96 + 1; - } while (uVar8 != uStack4); - } - puVar2 = combiner_bayer_lod_perspective(DL_00); - return puVar2; -} - - - -void init_menu12_mpstage(void) - -{ - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - current_mp_stage_highlighted = MP_STAGE_RANDOM; - load_walletbond(); - return; -} - - - -void update_menu12_mpstage(void) - -{ - return; -} - - - -void interface_menu12_mpstage(undefined8 param_1,undefined8 param_2) - -{ - ulonglong uVar1; - longlong lVar2; - int iVar3; - BOOL BVar4; - int iVar5; - f32 extraout_a0_lo; - int iVar6; - - video_related_1F(60.00000000); - video_related_21((f32)menu12_aspect); - set_page_height(100.00000000,(f32)menu12_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - uVar1 = get_controller_buttons_held('\0',0xb000); - if (uVar1 == 0) { - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - lVar2 = isontab3(); - if (lVar2 == 0) { - if ((int)(float)cursor_v_pos < 0xf0) { - iVar5 = 0; - if (0xa9 < (int)(float)cursor_v_pos) { - iVar5 = 1; - } - } - else { - iVar5 = 2; - } - iVar6 = (int)(float)cursor_h_pos; - if (iVar6 < 0x124) { - if (iVar6 < 0xcf) { - iVar3 = 0; - if (0x79 < iVar6) { - iVar3 = 1; - } - } - else { - iVar3 = 2; - } - } - else { - iVar3 = 3; - } - current_mp_stage_highlighted = iVar5 * 4 + iVar3; - BVar4 = check_if_mp_stage_unlocked(current_mp_stage_highlighted); - while (BVar4 == FALSE) { - current_mp_stage_highlighted += ~MP_STAGE_RANDOM; - BVar4 = check_if_mp_stage_unlocked(current_mp_stage_highlighted); - } - } - else { - tab_3_highlight = TRUE; - } - } - uVar1 = get_controller_buttons_pressed('\0',0xb000); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_pressed('\0',0x4000); - if (uVar1 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_3_highlight == FALSE) { - if (-1 < (int)current_mp_stage_highlighted) { - tab_2_selected = TRUE; - MP_stage_selected = current_mp_stage_highlighted; - } - } - else { - tab_3_selected = TRUE; - } - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - menu_control_stick_tracking(); - if (tab_2_selected == FALSE) { - if (tab_3_selected != FALSE) { - set_menu_to_mode(0xe,0); - } - } - else { - set_menu_to_mode(0xe,0); - } - return; -} - - - -u32 * constructor_menu12_mpstage(undefined4 *param_1) - -{ - undefined4 *puVar1; - BOOL BVar2; - byte *pbVar3; - short sVar5; - short sVar6; - u32 *puVar4; - uint uVar7; - uint *imgcall; - longlong lVar8; - int iVar9; - MP_STAGE_SELECTED stage; - int iVar10; - int iVar11; - f32 wdivh; - f32 wdivh_00; - f32 extraout_f12; - f32 wdivh_01; - f32 wdivh_02; - uint *puStackX0; - int iStack168; - int iStack156; - int iStack132; - undefined4 uStack104; - undefined4 uStack100; - float fStack96; - float fStack92; - undefined4 uStack64; - undefined4 uStack60; - int iStack56; - float fStack52; - int iStack20; - int iStack16; - int iStack12; - int aiStack8 [2]; - - puStackX0 = param_1; - puStackX0 = set_setfillcolor(param_1,0,0,0); - puStackX0 = insert_generic_fillrect(puStackX0); - puStackX0 = (uint *)proc_7F00D5E8(puStackX0); - puStackX0 = microcode_constructor(puStackX0); - lVar8 = 0x6c; - uVar7 = 0xa0; - do { - puStackX0 = microcode_constructor_related_to_menus(puStackX0,0x25,lVar8,0x185,uVar7,0x101010ff); - uVar7 += 0x46; - lVar8 = (longlong)((int)lVar8 + 0x46); - } while (uVar7 != 0x172); - puVar1 = combiner_bayer_lod_perspective(puStackX0); - puStackX0 = puVar1 + 2; - *puVar1 = 0xba000c02; - puVar1[1] = 0; - iVar10 = DAT_8008d128; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,(uint *)(DAT_8008d128 + 0x3c),1,0,2); - wdivh = 4.00000000; - iStack56 = 0x43550000; - fStack52 = 104.00000000; - iVar9 = 0; - uStack64 = 0x43300000; - uStack60 = 0x40800000; - do { - display_image_at_on_screen_coord - ((int *)register0x000000ec,&iStack56,wdivh,(int)&uStack64,0x2f0,0x12,0,0,1,0x6b,0x67, - 0x53,0xff,(uint)(*(char *)(iVar10 + 0x42) != '\0')); - fStack52 = fStack52 + 60.00000000; - display_image_at_on_screen_coord - ((int *)register0x000000ec,&iStack56,wdivh_00,(int)&uStack64,0x2f0,0x12,0,0,1,0x6b, - 0x67,0x53,0xff,(uint)(*(char *)(iVar10 + 0x42) != '\0')); - iVar9 += 1; - fStack52 = (fStack52 - 60.00000000) + 70.00000000; - wdivh = extraout_f12; - } while (iVar9 != 3); - stage = MP_STAGE_RANDOM; - iStack132 = 0; - fStack92 = 134.00000000; - uStack104 = 0x42080000; - uStack100 = 0x41b00000; - do { - iVar10 = 0; - fStack96 = 86.00000000; - do { - if ((int)stage < 0xc) { - imgcall = (uint *)(multi_stage_setups[stage].photo * 0xc + DAT_8008d134); - likely_generate_DL_for_image_declaration((uint **)register0x000000ec,imgcall,1,0,2); - if (stage == current_mp_stage_highlighted) { - puStackX0[1] = 0x100000; - *puStackX0 = 0xba001402; - puStackX0[3] = 0xffffff0a; - puStackX0[2] = 0xf8000000; - puStackX0[5] = 0xc4112048; - puStackX0[4] = 0xb900031d; - puStackX0 = puStackX0 + 6; - display_image_at_on_screen_coord - ((int *)register0x000000ec,(int *)&fStack96,wdivh_01,(int)&uStack104,0x44,0x2c,0 - ,0,1,0xff,0xff,0xff,0xff,(uint)(*(char *)((int)imgcall + 6) != '\0')); - } - else { - BVar2 = check_if_mp_stage_unlocked(stage); - if (BVar2 == FALSE) { - display_image_at_on_screen_coord - ((int *)register0x000000ec,(int *)&fStack96,wdivh_02,(int)&uStack104,0x44,0x2c - ,0,0,1,0xf,0xf,0xf,0xff,(uint)(*(char *)((int)imgcall + 6) != '\0')); - } - else { - display_image_at_on_screen_coord - ((int *)register0x000000ec,(int *)&fStack96,wdivh_02,(int)&uStack104,0x44,0x2c - ,0,0,1,0x6e,0x6e,0x6e,0xff,(uint)(*(char *)((int)imgcall + 6) != '\0')); - } - } - } - iVar10 += 1; - fStack96 = fStack96 + 85.00000000; - stage += MP_STAGE_TEMPLE; - } while (iVar10 != 4); - fStack92 = fStack92 + 70.00000000; - iStack132 += 1; - } while (iStack132 != 3); - puStackX0 = microcode_constructor(puStackX0); - stage = MP_STAGE_RANDOM; - iStack168 = 0x97; - iStack156 = 0; - do { - iVar10 = 0x56; - iVar9 = 0; - do { - if (((int)stage < 0xc) && (BVar2 = check_if_mp_stage_unlocked(stage), BVar2 != FALSE)) { - uVar7 = 0x96969600; - if (stage == current_mp_stage_highlighted) { - uVar7 = 0xffffff00; - } - pbVar3 = get_textptr_for_textID(multi_stage_setups[stage].select_screen_text_preset); - proc_7F0AE98C(&iStack16,&iStack20,pbVar3,D_80040EB0,D_80040EAC,0); - iVar11 = iVar10 + -0x1f; - iStack12 = iStack168 - iStack16; - aiStack8[0] = iVar11; - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)iVar11,(longlong)iStack12, - (longlong)(iVar11 + iStack20),iStack12 + iStack16,0); - pbVar3 = get_textptr_for_textID(multi_stage_setups[stage].select_screen_text_preset); - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack8,&iStack12,pbVar3,D_80040EB0, - (int)D_80040EAC,uVar7 | 0xff,(int)sVar5,(int)sVar6,0,0); - iStack12 = iStack168 - iStack16; - aiStack8[0] = iVar11; - pbVar3 = get_textptr_for_textID(multi_stage_setups[stage].select_screen_text_preset); - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puStackX0,aiStack8,&iStack12,pbVar3,D_80040EB0, - (int)D_80040EAC,uVar7 | 100,(int)sVar5,(int)sVar6,0,0); - } - iVar9 += 1; - iVar10 += 0x55; - stage += MP_STAGE_TEMPLE; - } while (iVar9 != 4); - iStack156 += 1; - iStack168 += 0x46; - } while (iStack156 != 3); - puStackX0 = microcode_constructor(puStackX0); - puStackX0 = add_tab3_previous(puStackX0); - puVar4 = (u32 *)load_draw_selected_icon_folder_select(puStackX0); - return puVar4; -} - - - -MPSCENARIOS get_scenario(void) - -{ - return scenario; -} - - - -void init_menu13_mpscenariosel(void) - -{ - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - load_walletbond(); - return; -} - - - -void update_menu13_mpscenario(void) - -{ - return; -} - - - -void interface_menu13_mpscenario(undefined8 param_1,undefined8 param_2) - -{ - bool bVar1; - ulonglong uVar2; - longlong lVar3; - int iVar4; - f32 extraout_a0_lo; - int scenario; - int iVar5; - int iVar6; - - bVar1 = false; - video_related_1F(60.00000000); - video_related_21((f32)menu13_aspect); - set_page_height(100.00000000,(f32)menu13_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - uVar2 = get_controller_buttons_held('\0',0xa000); - scenario = DAT_80069780; - if (uVar2 == 0) { - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - lVar3 = isontab3(); - if (lVar3 == 0) { - DAT_80069780 = 1; - iVar5 = 7; - iVar6 = 0x11d; - do { - if ((iVar6 <= (int)(float)cursor_v_pos) && - (scenario = get_selected_num_players(), - (longlong)(ulonglong)(byte)mp_stage_playercounts[iVar5].min <= (longlong)scenario)) { - iVar4 = get_selected_num_players(); - scenario = iVar5 + 1; - if ((longlong)iVar4 <= (longlong)(ulonglong)(byte)mp_stage_playercounts[iVar5].max) break; - } - iVar5 += -1; - iVar6 += -0x16; - scenario = DAT_80069780; - } while (iVar5 != 0); - } - else { - tab_3_highlight = TRUE; - DAT_80069780 = 0; - scenario = DAT_80069780; - } - } - DAT_80069780 = scenario; - uVar2 = get_controller_buttons_pressed('\0',0xb000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_3_highlight == FALSE) { - scenario = DAT_80069780 + -1; - if (((scenario == 5) || (scenario == 6)) || (scenario == 7)) { - reset_mp_options_for_scenario(scenario); - bVar1 = true; - } - else { - reset_mp_options_for_scenario(scenario); - tab_3_selected = TRUE; - } - } - else { - tab_3_selected = TRUE; - } - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); - menu_control_stick_tracking(); - if (bVar1) { - set_menu_to_mode(0x14,0); - } - else { - if (tab_3_selected != FALSE) { - set_menu_to_mode(0xe,0); - } - } - return; -} - - - -u32 * constructor_menu13_mpscenario(undefined4 *param_1) - -{ - undefined4 *DL; - uint *puVar1; - byte *pbVar2; - short sVar5; - short sVar6; - int iVar3; - u32 *puVar4; - mp_stage_playercount *pmVar7; - int iVar8; - uint uVar9; - uint uVar10; - int iStack32; - int aiStack28 [2]; - uint uStack20; - uint auStack16 [4]; - - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - puVar1 = microcode_constructor(DL); - pbVar2 = get_textptr_for_textID(0x9c57); - auStack16[0] = 0x37; - uStack20 = 0x66; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,auStack16,&uStack20,pbVar2,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar5,(int)sVar6,0,0); - pmVar7 = mp_stage_playercounts; - iVar8 = 0; - uVar10 = 0x83; - do { - uVar9 = 0xff; - iVar3 = get_selected_num_players(); - if ((longlong)(ulonglong)(byte)pmVar7->max < (longlong)iVar3) { - uVar9 = 0x70; - } - else { - iVar3 = get_selected_num_players(); - if ((longlong)iVar3 < (longlong)(ulonglong)(byte)pmVar7->min) { - uVar9 = 0x70; - } - } - pbVar2 = get_textptr_for_textID(pmVar7->stage); - proc_7F0AE98C(aiStack28,&iStack32,pbVar2,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - auStack16[0] = 0x39; - uStack20 = uVar10; - if (iVar8 + 1 == DAT_80069780) { - uStack20 = uVar10; - puVar1 = microcode_constructor_related_to_menus - (puVar1,0x37,(longlong)(int)(uVar10 - 1),(longlong)(iStack32 + 0x3c), - uVar10 + 0xe,0x32); - } - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar1 = write_text_at_abs_coord - (puVar1,auStack16,&uStack20,pbVar2,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar9,(int)sVar5,(int)sVar6,0,0); - iVar8 += 1; - pmVar7 = pmVar7 + 1; - uVar10 += 0x16; - } while (iVar8 != 8); - puVar1 = add_tab3_previous(puVar1); - puVar4 = (u32 *)load_draw_selected_icon_folder_select(puVar1); - return puVar4; -} - - - -ulonglong get_players_team_or_scenario_item_flag(int player) - -{ - return (ulonglong)(byte)(&player1_playerdata)[player].have_token_or_goldengun; -} - - - -void set_players_team_or_scenario_item_flag(int player,char flag) - -{ - (&player1_playerdata)[player].have_token_or_goldengun = flag; - return; -} - - - -void init_menu14_mpteamsel(void) - -{ - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - if (scenario == SCENARIO_2v1) { - teamsize = 2; - } - else { - teamsize = 3; - } - dword_8002B560 = 0; - load_walletbond(); - return; -} - - - -void update_menu14_mpteams(void) - -{ - return; -} - - - -// WARNING: Instruction at (ram,0x7f014fc4) overlaps instruction at (ram,0x7f014fc0) -// - -ulonglong interface_menu14_mpteams(undefined8 param_1,undefined8 param_2) - -{ - ulonglong uVar1; - int iVar2; - int **ppiVar3; - f32 extraout_a0_lo; - char flag; - uint player; - - video_related_1F(60.00000000); - video_related_21((f32)menu14_aspect); - set_page_height(100.00000000,(f32)menu14_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - dword_8002B560 = (dword_8002B560 + 1) % 0x14; - uVar1 = get_controller_buttons_pressed('\0',0x101); - if ((uVar1 == 0) && (iVar2 = get_controller_3dstick_L_R('\0',-2,1), iVar2 < 1)) { - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (iVar2 = get_controller_3dstick_U_D('\0',-2,1), iVar2 < 1)) { - uVar1 = get_controller_buttons_pressed('\0',0x202); - if ((uVar1 == 0) && (iVar2 = get_controller_3dstick_L_R('\0',-2,1), -2 < iVar2)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (iVar2 = get_controller_3dstick_U_D('\0',-2,1), iVar2 < -1)) { - if (scenario == SCENARIO_2v1) { - if ((teamsize & 2) == 0) { - teamsize = 2; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if ((teamsize & 2) == 0) { - teamsize = teamsize + 2; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - } - } - else { - if (scenario == SCENARIO_2v2) { - if ((teamsize & 1) != 0) { - teamsize = 2; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if ((teamsize & 1) != 0) { - teamsize = teamsize - 1; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - } - } - else { - if (scenario == SCENARIO_2v2) { - if ((teamsize & 2) != 0) { - teamsize = 1; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if ((teamsize & 2) != 0) { - teamsize = teamsize - 2; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - } - } - else { - if (scenario == SCENARIO_2v1) { - if ((teamsize & 1) == 0) { - teamsize = 1; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if ((teamsize & 1) == 0) { - teamsize = teamsize + 1; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); - menu_control_stick_tracking(); - uVar1 = get_controller_buttons_pressed('\0',0xb000); - player = 0; - if (uVar1 != 0) { - do { - if (scenario == SCENARIO_2v2) { - if ((player == 0) || (flag = '\x01', player == teamsize)) { - flag = '\0'; - } - set_players_team_or_scenario_item_flag(player,flag); - } - else { - set_players_team_or_scenario_item_flag(player,player == teamsize); - } - player += 1; - } while (player != 4); - set_menu_to_mode(0xe,0); - ppiVar3 = play_sfx_a1(ptr_sfx_buf,199,NULL); - uVar1 = SEXT48((int)ppiVar3); - } - return uVar1; -} - - - -u32 * constructor_menu14_mpteams(undefined4 *param_1) - -{ - bool bVar1; - undefined4 *DL; - uint *DL_00; - int iVar2; - int iVar3; - byte *pbVar4; - short sVar6; - short sVar7; - u32 *puVar5; - int iVar8; - uint uVar9; - uint uVar10; - uint *puVar11; - uint uStack76; - uint uStack72; - int iStack68; - int aiStack64 [2]; - uint uStack56; - uint uStack52; - int iStack48; - int aiStack44 [4]; - int iStack28; - uint uStack4; - - uStack4 = get_selected_num_players(); - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - DL = microcode_constructor(DL); - DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); - if (2 < (int)uStack4) { - DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); - } - uVar10 = 0; - if (0 < (int)uStack4) { - bVar1 = true; - while( true ) { - if (bVar1) { - iVar2 = 0; - } - else { - iVar2 = 0x8c; - } - if ((uVar10 & 1) == 0) { - iVar3 = 0; - } - else { - iVar3 = 0xaf; - } - iVar8 = iVar3 + 0x7d; - puVar11 = DL_00 + 2; - *DL_00 = ((int)((float)(iVar3 + 0x2c) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | - (int)((float)(iVar2 + 0x23U) * 4.00000000) & 0xfffU; - DL_00[1] = ((int)((float)(iVar3 + 0xcf) * 4.00000000) & 0xfffU) << 0xc | - (int)((float)(iVar2 + 0xa5) * 4.00000000) & 0xfffU; - DL_00 = puVar11; - iStack28 = iVar8; - if (uVar10 == 0) { - iStack28 = iVar8; - pbVar4 = get_textptr_for_textID(0x9c58); - proc_7F0AE98C(aiStack44,&iStack48,pbVar4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0) - ; - uStack52 = iVar8 - (iStack48 >> 1); - uStack56 = iVar2 + 0x23U; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL_00 = write_text_at_abs_coord - (puVar11,&uStack52,&uStack56,pbVar4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar6,(int)sVar7,0,0); - } - if (scenario == SCENARIO_2v2) { - bVar1 = uVar10 == 0 || uVar10 == teamsize; - } - else { - bVar1 = uVar10 != teamsize; - } - if (bVar1) { - pbVar4 = get_textptr_for_textID(0x9c59); - } - else { - pbVar4 = get_textptr_for_textID(0x9c5a); - } - if (bVar1) { - uVar9 = 0xff0000ff; - } - else { - uVar9 = 0xffff; - } - proc_7F0AE98C(aiStack64,&iStack68,pbVar4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack76 = (iVar2 - (aiStack64[0] >> 1)) + 100; - uStack72 = iStack28 - (iStack68 >> 1); - if ((uVar10 != teamsize) || ((uVar10 == teamsize && (dword_8002B560 < 10)))) { - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL_00 = write_text_at_abs_coord - (DL_00,&uStack72,&uStack76,pbVar4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar9,(int)sVar6,(int)sVar7,0,0); - } - uVar10 += 1; - if (uVar10 == uStack4) break; - bVar1 = (int)uVar10 < 2; - } - } - puVar5 = combiner_bayer_lod_perspective(DL_00); - return puVar5; -} - - - -void set_briefing_page(WATCH_BRIEFING_PAGE page) - -{ - current_menu_briefing_page = page; - return; -} - - - -void load_briefing_text_for_stage(void) - -{ - undefined8 lnameID; - int iVar1; - undefined *puVar2; - - puVar2 = ptr_logo_and_walletbond_DL; - ptrbriefingdata = - _load_resource_named_to_buffer - ((byte *)mission_folder_setup_entries[briefingpage].briefing_name_ptr,1, - ptr_logo_and_walletbond_DL + 0xa000,0x200); - lnameID = get_textbank_number_for_stagenum(mission_folder_setup_entries[briefingpage].stage_id); - load_briefing_text_bank((int)lnameID,puVar2 + 0xa200,0x6de00); - iVar1 = 0; - puVar2 = ptrbriefingdata; - do { - iVar1 += 4; - if (*(short *)(puVar2 + 8) == 0) { - return; - } - puVar2 = puVar2 + 4; - } while (iVar1 != 0x28); - return; -} - - - -void init_menu0A_briefing(void) - -{ - tab_2_selected = FALSE; - tab_3_selected = FALSE; - final_menu_briefing_page = BRIEFING_OVERVIEW|BRIEFING_MONEYPENNY; - set_briefing_page(BRIEFING_TITLE); - load_walletbond(); - load_briefing_text_for_stage(); - return; -} - - - -void update_menu0A_briefing(void) - -{ - undefined8 uVar1; - - uVar1 = get_textbank_number_for_stagenum(mission_folder_setup_entries[briefingpage].stage_id); - blank_text_bank((int)uVar1); - if (-1 < (int)menu_update) { - proc_7F00B990(); - } - return; -} - - - -void interface_menu0A_briefing(undefined8 param_1,undefined8 param_2) - -{ - longlong lVar1; - ulonglong uVar2; - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu0A_aspect); - set_page_height(100.00000000,(f32)menu0A_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - lVar1 = isontab3(); - if (lVar1 == 0) { - lVar1 = isontab2(); - if ((lVar1 == 0) || - ((int)(final_menu_briefing_page + ~BRIEFING_TITLE) <= (int)current_menu_briefing_page)) { - lVar1 = isontab1(); - if (lVar1 == 0) { - if ((int)current_menu_briefing_page < (int)(final_menu_briefing_page + ~BRIEFING_TITLE)) { - tab_2_highlight = TRUE; - } - else { - tab_1_highlight = TRUE; - } - } - else { - tab_1_highlight = TRUE; - } - } - else { - tab_2_highlight = TRUE; - } - } - else { - tab_3_highlight = TRUE; - } - uVar2 = get_controller_buttons_pressed('\0',0x1000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0xa000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - if ((int)current_menu_briefing_page < 1) { - tab_3_selected = TRUE; - } - else { - set_briefing_page(current_menu_briefing_page + ~BRIEFING_TITLE); - } - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_2_highlight == FALSE) { - if (tab_3_highlight == FALSE) { - if (tab_1_highlight != FALSE) { - tab_2_selected = TRUE; - } - } - else { - if ((int)current_menu_briefing_page < 1) { - tab_3_selected = TRUE; - } - else { - set_briefing_page(current_menu_briefing_page + ~BRIEFING_TITLE); - } - } - } - else { - set_briefing_page(current_menu_briefing_page + BRIEFING_OVERVIEW); - } - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - tab_2_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance - ((int)ptr_folder_object_instance,0xc, - (uint)(current_menu_briefing_page == BRIEFING_TITLE)); - set_item_visibility_in_objinstance - ((int)ptr_folder_object_instance, - mission_folder_setup_entries[briefingpage].mission_num + 0x16, - (uint)(current_menu_briefing_page == BRIEFING_TITLE)); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); - menu_control_stick_tracking(); - if (tab_2_selected == FALSE) { - if (tab_3_selected != FALSE) { - set_menu_to_mode(7,0); - set_cursor_to_stage_solo((longlong)mission_folder_setup_entries[briefingpage].mission_num); - } - } - else { - set_menu_to_mode(0xb,1); - } - return; -} - - - -uint * print_objectives_and_status_to_menu(uint *param_1,int param_2,byte *param_3,int param_4) - -{ - u16 id; - byte *pbVar1; - short sVar4; - short sVar5; - uint *puVar2; - int iVar3; - int iVar6; - uint uVar7; - int iVar8; - uint uStack24; - uint uStack20; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - iStack8 = 0; - iVar8 = 0; - iStack4 = 0; - iVar6 = 0; - do { - id = *(u16 *)(ptrbriefingdata + iVar6 + 8); - if (id == 0) { - iStack4 += 1; - } - else { - if ((longlong)selected_difficulty < - (longlong)(ulonglong)*(ushort *)(ptrbriefingdata + iVar6 + 10)) { - iStack4 += 1; - } - else { - pbVar1 = get_textptr_for_textID(id); - textpointer_load_parse_something((char *)param_3,"a.\n"); - *param_3 = *param_3 + (char)iStack8; - iStack12 = 0; - iStack16 = 0; - proc_7F0AE98C(&iStack12,&iStack16,param_3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0 - ); - uStack20 = 0x37; - uStack24 = iStack12 * iVar8 + param_2; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (param_1,&uStack20,&uStack24,param_3,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - uStack20 = 0x4b; - uStack24 = iStack12 * iVar8 + param_2; - if (param_4 == 0) { - proc_7F0AEB64(0x140,pbVar1,param_3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable); - } - else { - proc_7F0ACB94(2); - proc_7F0AEB64(0xdc,pbVar1,param_3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable); - proc_7F0ACB94(0); - } - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - param_1 = write_text_at_abs_coord - (puVar2,&uStack20,&uStack24,param_3,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - if (param_4 != 0) { - iVar3 = get_status_of_objective((longlong)iStack4); - if ((iVar3 == 0) || (iVar3 != 1)) { - uVar7 = 0x780000ff; - pbVar1 = get_textptr_for_textID(0x9c5c); - } - else { - uVar7 = 0xff; - pbVar1 = get_textptr_for_textID(0x9c5b); - } - uStack20 = 0x136; - uStack24 = iStack12 * iVar8 + param_2; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - param_1 = write_text_at_abs_coord - (param_1,&uStack20,&uStack24,pbVar1,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar7,(int)sVar4,(int)sVar5,0,0); - } - iVar3 = proc_7F0AC0E8((char *)param_3); - iVar8 += iVar3; - iStack8 += 1; - iStack4 += 1; - } - } - iVar6 += 4; - } while (iStack4 != 10); - return param_1; -} - - - -u32 * constructor_menu0A_briefing(undefined4 *param_1) - -{ - undefined4 *puVar1; - undefined4 *DL; - uint *puVar2; - short sVar4; - short sVar5; - u32 *puVar3; - undefined4 *puVar6; - undefined4 *puVar7; - undefined4 auStack3012 [750]; - uint uStack12; - uint uStack8; - byte *pbStack4; - - puVar1 = set_setfillcolor(param_1,0,0,0); - puVar1 = insert_generic_fillrect(puVar1); - DL = (undefined4 *)proc_7F00D5E8(puVar1); - puVar1 = (undefined4 *)array_80050C54; - puVar6 = auStack3012; - do { - puVar7 = puVar1 + 3; - *puVar6 = *puVar1; - puVar6[1] = puVar1[1]; - puVar6[2] = puVar1[2]; - puVar1 = puVar7; - puVar6 = puVar6 + 3; - } while (puVar7 != (undefined4 *)"%02d:%02d"); - puVar2 = microcode_constructor(DL); - puVar2 = print_current_solo_briefing_stage_name(puVar2,(byte *)auStack3012); - switch(current_menu_briefing_page) { - case BRIEFING_TITLE: - pbStack4 = get_textptr_for_textID(0x9c5d); - break; - case BRIEFING_OVERVIEW: - pbStack4 = get_textptr_for_textID(0x9c5e); - break; - case BRIEFING_M: - pbStack4 = get_textptr_for_textID(0x9c5f); - break; - case BRIEFING_Q: - pbStack4 = get_textptr_for_textID(0x9c60); - break; - case BRIEFING_MONEYPENNY: - pbStack4 = get_textptr_for_textID(0x9c61); - } - uStack8 = 0x37; - uStack12 = 0x8f; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - if (current_menu_briefing_page == BRIEFING_TITLE) { - puVar2 = print_objectives_and_status_to_menu(puVar2,0xa7,(byte *)auStack3012,0); - } - else { - if (current_menu_briefing_page == BRIEFING_OVERVIEW) { - pbStack4 = get_textptr_for_textID(*(u16 *)ptrbriefingdata); - } - else { - if (current_menu_briefing_page == BRIEFING_M) { - pbStack4 = get_textptr_for_textID(*(u16 *)(ptrbriefingdata + 2)); - } - else { - if (current_menu_briefing_page == BRIEFING_Q) { - pbStack4 = get_textptr_for_textID(*(u16 *)(ptrbriefingdata + 4)); - } - else { - if (current_menu_briefing_page == BRIEFING_MONEYPENNY) { - pbStack4 = get_textptr_for_textID(*(u16 *)(ptrbriefingdata + 6)); - } - } - } - } - uStack8 = 0x37; - uStack12 = 0xa7; - proc_7F0AEB64(0x140,pbStack4,(byte *)auStack3012,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable); - proc_7F0ACBA0(8); - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar4,(int)sVar5,0,0); - proc_7F0ACBA0(0xffffffff); - } - puVar2 = add_tab1_start(puVar2); - puVar2 = add_tab3_previous(puVar2); - if ((int)current_menu_briefing_page < 4) { - puVar2 = add_tab2_next(puVar2); - } - puVar3 = (u32 *)load_draw_selected_icon_folder_select(puVar2); - return puVar3; -} - - - -void init_menu0B_runstage(void) - -{ - set_loaded_stage(selected_stage); - set_difficulty(selected_difficulty); - return; -} - - - -void init_menu0C_missionfailed(void) - -{ - tab_2_selected = FALSE; - tab_3_selected = FALSE; - load_walletbond(); - load_briefing_text_for_stage(); - set_cursor_pos_tab2(); - if (maybe_is_in_menu != FALSE) { - music_related_38(0x7fff); - musicTrack1Vol(0x7fff); - music1_playing = 0; - musicTrack1Play(M_FOLDERS); - maybe_is_in_menu = FALSE; - } - return; -} - - - -void update_menu0C_missionfailed(void) - -{ - return; -} - - - -void interface_menu0C_missionfailed(undefined8 param_1,undefined8 param_2) - -{ - longlong lVar1; - ulonglong uVar2; - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu0C_aspect); - set_page_height(100.00000000,(f32)menu0C_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - tab_2_highlight = FALSE; - tab_3_highlight = FALSE; - lVar1 = isontab3(); - if (lVar1 == 0) { - lVar1 = isontab2(); - if (lVar1 == 0) { - tab_2_highlight = TRUE; - } - else { - tab_2_highlight = TRUE; - } - } - else { - tab_3_highlight = TRUE; - } - uVar2 = get_controller_buttons_pressed('\0',0xb000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_3_highlight == FALSE) { - if (tab_2_highlight != FALSE) { - tab_2_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); - menu_control_stick_tracking(); - if (tab_2_selected == FALSE) { - if (tab_3_selected != FALSE) { - set_menu_to_mode(7,0); - set_cursor_to_stage_solo((longlong)mission_folder_setup_entries[briefingpage].mission_num); - } - } - else { - set_menu_to_mode(0xd,0); - } - return; -} - - - -undefined8 proc_7F01631C(void) - -{ - DIFFICULTY DVar1; - int iVar2; - longlong objective; - int iVar3; - int iVar4; - - if (mission_failed_or_aborted == FALSE) { - objective = 0; - iVar4 = 0; - if (mission_kia == FALSE) { - do { - iVar3 = (int)objective; - if (*(short *)(ptrbriefingdata + iVar4 + 8) == 0) { - objective = (longlong)(iVar3 + 1); - } - else { - DVar1 = get_current_difficulty(); - if ((longlong)DVar1 < (longlong)(ulonglong)*(ushort *)(ptrbriefingdata + iVar4 + 10)) { - objective = (longlong)(iVar3 + 1); - } - else { - iVar2 = get_status_of_objective(objective); - if (iVar2 != 1) { - return 0; - } - objective = (longlong)(iVar3 + 1); - } - } - iVar4 += 4; - } while (objective != 10); - return 1; - } - } - return 0; -} - - - -u32 * constructor_menu0C_missionfailed(undefined4 *param_1) - -{ - undefined4 *DL; - uint *puVar2; - byte *pbVar3; - short sVar5; - short sVar6; - longlong lVar1; - u32 *puVar4; - int iStack3024; - int iStack3020; - uint uStack3016; - byte abStack3008 [3000]; - uint uStack8; - uint uStack4; - - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - puVar2 = microcode_constructor(DL); - puVar2 = print_current_solo_briefing_stage_name(puVar2,abStack3008); - pbVar3 = get_textptr_for_textID(0x9c62); - uStack4 = 0x37; - uStack8 = 0x8f; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack4,&uStack8,pbVar3,(int)ptrSecondFontTable,(int)ptrFirstFontTable - ,0xff,(int)sVar5,(int)sVar6,0,0); - pbVar3 = get_textptr_for_textID(0x9c63); - iStack3024 = 0; - iStack3020 = 0; - proc_7F0AE98C(&iStack3020,&iStack3024,pbVar3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - uStack4 = 0x37; - uStack8 = 0xa7; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack4,&uStack8,pbVar3,(int)ptrSecondFontTable,(int)ptrFirstFontTable - ,0xff,(int)sVar5,(int)sVar6,0,0); - if (mission_kia == FALSE) { - if (mission_failed_or_aborted == FALSE) { - lVar1 = proc_7F01631C(); - if (lVar1 == 0) { - pbVar3 = get_textptr_for_textID(0x9c67); - uStack3016 = 0x780000ff; - } - else { - pbVar3 = get_textptr_for_textID(0x9c66); - uStack3016 = 0xff; - } - } - else { - pbVar3 = get_textptr_for_textID(0x9c65); - uStack3016 = 0x780000ff; - } - } - else { - pbVar3 = get_textptr_for_textID(0x9c64); - uStack3016 = 0x780000ff; - } - uStack8 = 0xa7; - uStack4 = iStack3024 + 0x37; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,&uStack4,&uStack8,pbVar3,(int)ptrSecondFontTable,(int)ptrFirstFontTable - ,uStack3016,(int)sVar5,(int)sVar6,0,0); - puVar2 = print_objectives_and_status_to_menu(puVar2,0xbf,abStack3008,1); - puVar2 = add_tab2_next(puVar2); - puVar2 = add_tab3_previous(puVar2); - puVar4 = (u32 *)load_draw_selected_icon_folder_select(puVar2); - return puVar4; -} - - - -void init_menu0D_missioncomplete(void) - -{ - tab_2_selected = FALSE; - tab_3_selected = FALSE; - load_walletbond(); - load_briefing_text_for_stage(); - if (newcheatunlocked != 0) { - play_sfx_a1(ptr_sfx_buf,0x102,NULL); - } - return; -} - - - -void update_menu0D_missioncomplete(void) - -{ - return; -} - - - -void interface_menu0D_missioncomplete(undefined8 param_1,undefined8 param_2) - -{ - longlong lVar1; - ulonglong uVar2; - mission_folder_setup *pmVar3; - mission_folder_setup *pmVar4; - int entry; - f32 extraout_a0_lo; - short sVar5; - int iVar6; - - video_related_1F(60.00000000); - video_related_21((f32)menu0D_aspect); - set_page_height(100.00000000,(f32)menu0D_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - lVar1 = isontab3(); - if (lVar1 == 0) { - lVar1 = isontab2(); - if (lVar1 == 0) { - tab_2_highlight = TRUE; - } - else { - tab_2_highlight = TRUE; - } - } - else { - tab_3_highlight = TRUE; - } - uVar2 = get_controller_buttons_pressed('\0',0xb000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_2_highlight == FALSE) { - if (tab_3_highlight != FALSE) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - tab_2_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); - menu_control_stick_tracking(); - if (tab_2_selected == FALSE) { - if (tab_3_selected != FALSE) { - set_menu_to_mode(7,0); - set_cursor_to_stage_solo((longlong)mission_folder_setup_entries[briefingpage].mission_num); - } - } - else { - lVar1 = proc_7F01631C(); - if ((lVar1 == 0) || (append_cheat_sp != FALSE)) { - set_menu_to_mode(10,0); - } - else { - if (mission_folder_setup_entries[briefingpage].mission_num == 0x11) { - set_menu_to_mode(0xb,1); - selected_stage = LEVELID_CUBA; - } - else { - entry = briefingpage + 1; - if (mission_folder_setup_entries[briefingpage].mission_num < 0x12) { - sVar5 = mission_folder_setup_entries[entry].folder_text_preset; - pmVar4 = mission_folder_setup_entries + entry; - if (sVar5 != 0) { - iVar6 = mission_folder_setup_entries[entry].stage_id; - pmVar3 = mission_folder_setup_entries + entry; - while (pmVar4 = pmVar3, iVar6 < 0) { - sVar5 = pmVar3[1].folder_text_preset; - entry += 1; - pmVar4 = pmVar3 + 1; - if (sVar5 == 0) break; - iVar6 = pmVar3[1].stage_id; - pmVar3 = pmVar4; - } - } - if (sVar5 != 0) { - selected_stage = pmVar4->stage_id; - briefingpage = entry; - } - set_menu_to_mode(10,0); - } - else { - set_menu_to_mode(7,0); - set_cursor_to_stage_solo((longlong)mission_folder_setup_entries[briefingpage].mission_num) - ; - } - } - } - } - return; -} - - - -u32 * constructor_menu0D_missioncomplete(undefined4 *param_1) - -{ - int iVar1; - undefined4 *DL; - uint *puVar3; - int iVar4; - undefined4 uVar5; - int iVar6; - int iVar7; - int iVar8; - int iVar9; - int iVar10; - int iVar11; - int iVar12; - short sVar17; - short sVar18; - save_file *eepromfile; - ulonglong uVar2; - byte *pbVar13; - char *pcVar14; - size_t sVar15; - u32 *puVar16; - DIFFICULTY DVar19; - int iVar20; - int iVar21; - float fVar22; - float fVar23; - undefined4 in_f5; - int iStack3020; - int iStack3016; - byte *pbStack3012; - byte abStack3008 [3000]; - uint uStack8; - uint uStack4; - - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - puVar3 = microcode_constructor(DL); - iVar4 = getMissiontime(); - uVar5 = get_curplay_killcount(); - iVar6 = get_curplayer_shot_register(0); - iVar7 = get_curplayer_shot_register(1); - iVar8 = get_curplayer_shot_register(2); - iVar9 = get_curplayer_shot_register(3); - iVar10 = get_curplayer_shot_register(4); - iVar11 = get_curplayer_shot_register(5); - iVar12 = get_curplayer_shot_register(6); - iVar20 = iVar7 + iVar8 + iVar9 + iVar10 + iVar11; - iVar12 = iVar20 + iVar12; - if (iVar20 < 1) { - iVar20 = 1; - } - puVar3 = print_current_solo_briefing_stage_name(puVar3,abStack3008); - pbStack3012 = get_textptr_for_textID(0x9c68); - uStack4 = 0x37; - uStack8 = 0x8f; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - iStack3020 = 0; - iStack3016 = 0; - proc_7F0AE98C(&iStack3016,&iStack3020,pbStack3012,(int)ptrSecondFontTable,(int *)ptrFirstFontTable - ,0); - pbStack3012 = get_textptr_for_textID(0x9c69); - uStack4 = 0x37; - uStack8 = 0xa7; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - eepromfile = getEEPROMforFoldernum(selected_folder_num); - uVar2 = get_eeprom_stage_complete_time_for_difficulty - (eepromfile,mission_folder_setup_entries[briefingpage].mission_num, - selected_difficulty); - uVar2._4_4_ = (int)uVar2; - if ((uVar2 == 0) || (0x3fe < (longlong)uVar2)) { - uVar2._4_4_ = -1; - } - DVar19 = selected_difficulty; - if (2 < selected_difficulty) { - DVar19 = DIFFICULTY_00; - } - iVar1 = iVar4 / 0x3c; - abStack3008[0] = 0; - iVar21 = (int)(&solo_target_times_ARRAY_8002b564 - [mission_folder_setup_entries[briefingpage].mission_num].agent_time)[DVar19]; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - if (false) { - trap(0x1c00); - } - if ((false) && (iVar1 == -0x80000000)) { - trap(0x1800); - } - sprintf((char *)abStack3008,"%02d:%02d",iVar1 / 0x3c,iVar1 % 0x3c); - uStack4 = 0x82; - uStack8 = 0xa7; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - if (newcheatunlocked != 0) { - abStack3008[0] = 0; - pbVar13 = get_textptr_for_textID(0x9d13); - sprintf((char *)abStack3008," [%s]",pbVar13); - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xa00000ff,(int)sVar17,(int)sVar18,0,0); - } - if ((iVar21 < 1) || (selected_difficulty == DIFFICULTY_007)) { - if ((-1 < uVar2._4_4_) && (uVar2._4_4_ < 0x3ff)) { - pbStack3012 = get_textptr_for_textID(0x9d11); - uStack8 = iStack3016 + 0xa9; - uStack4 = 0x37; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - abStack3008[0] = 0; - sprintf((char *)abStack3008,"%02d:%02d",uVar2._4_4_ / 0x3c,uVar2._4_4_ % 0x3c); - uStack4 = 0x82; - uStack8 = iStack3016 + 0xa9; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - } - } - else { - pbStack3012 = get_textptr_for_textID(0x9d12); - uStack8 = iStack3016 + 0xa9; - uStack4 = 0x37; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - abStack3008[0] = 0; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar21 == -0x80000000)) { - trap(0x1800); - } - sprintf((char *)abStack3008,"%02d:%02d",iVar21 / 0x3c,iVar21 % 0x3c); - uStack4 = 0x82; - uStack8 = iStack3016 + 0xa9; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - if ((-1 < uVar2._4_4_) && (uVar2._4_4_ < 0x3ff)) { - abStack3008[0] = 0; - if (uVar2._4_4_ < 0) { - sprintf((char *)abStack3008,&DAT_80051848); - } - else { - pbVar13 = get_textptr_for_textID(0x9d11); - if (false) { - trap(0x1c00); - } - if ((false) && (uVar2._4_4_ == -0x80000000)) { - trap(0x1800); - } - sprintf((char *)abStack3008," (%s %02d:%02d)",pbVar13,uVar2._4_4_ / 0x3c, - uVar2._4_4_ % 0x3c); - } - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - } - } - pbStack3012 = get_textptr_for_textID(0x9c6a); - uStack4 = 0x37; - uStack8 = 0xcc; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - if (iVar6 < 1) { - fVar22 = 0.00000000; - } - else { - fVar22 = ((float)iVar12 * 100.00000000) / (float)iVar6; - } - sprintf((char *)abStack3008,"%.1f%%",in_f5,SUB84((double)fVar22,0)); - uStack4 = 0x82; - uStack8 = 0xcc; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pbStack3012 = get_textptr_for_textID(0x9c6b); - uStack4 = 0x37; - uStack8 = 0xdc; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pcVar14 = (char *)getplayerfavoredweapon(0,0); - textpointer_load_parse_something((char *)abStack3008,pcVar14); - if ((0 < (int)fav_weapon_player1.right) && (fav_weapon_player1.left == fav_weapon_player1.right)) - { - sVar15 = strlen((char *)abStack3008); - sprintf((char *)((int)&pbStack3012 + sVar15 + 3)," x 2\n"); - } - uStack4 = 0xbe; - uStack8 = 0xdc; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pbStack3012 = get_textptr_for_textID(0x9c6c); - uStack4 = 0x37; - uStack8 = 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - sprintf((char *)abStack3008,"%d",iVar6); - uStack4 = 0x82; - uStack8 = 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pbStack3012 = get_textptr_for_textID(0x9c6d); - uStack4 = 0xb4; - uStack8 = 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - fVar22 = (float)iVar20; - fVar23 = truncf(((float)iVar7 * 100.00000000) / fVar22 + 0.50000000); - sprintf((char *)abStack3008,"%d (%d%%)",iVar7,(int)fVar23); - uStack4 = 300; - uStack8 = 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pbStack3012 = get_textptr_for_textID(0x9c6e); - uStack8 = iStack3016 + 0xf4; - uStack4 = 0xb4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - fVar23 = truncf(((float)iVar8 * 100.00000000) / fVar22 + 0.50000000); - sprintf((char *)abStack3008,"%d (%d%%)",iVar8,(int)fVar23); - uStack4 = 300; - uStack8 = iStack3016 + 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pbStack3012 = get_textptr_for_textID(0x9c6f); - uStack8 = iStack3016 * 2 + 0xf4; - uStack4 = 0xb4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - fVar23 = truncf(((float)iVar9 * 100.00000000) / fVar22 + 0.50000000); - sprintf((char *)abStack3008,"%d (%d%%)",iVar9,(int)fVar23); - uStack4 = 300; - uStack8 = iStack3016 * 2 + 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pbStack3012 = get_textptr_for_textID(0x9c70); - uStack8 = iStack3016 * 3 + 0xf4; - uStack4 = 0xb4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - fVar22 = truncf(((float)(iVar11 + iVar10) * 100.00000000) / fVar22 + 0.50000000); - sprintf((char *)abStack3008,"%d (%d%%)",iVar11 + iVar10,(int)fVar22); - uStack4 = 300; - uStack8 = iStack3016 * 3 + 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - pbStack3012 = get_textptr_for_textID(0x9c71); - uStack8 = iStack3016 + 0xf4; - uStack4 = 0x37; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - sprintf((char *)abStack3008,"%d",uVar5); - uStack4 = 0x82; - uStack8 = iStack3016 + 0xf4; - sVar17 = get_video2_settings_txtClipW(); - sVar18 = get_video2_settings_txtClipH(); - puVar3 = write_text_at_abs_coord - (puVar3,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar17,(int)sVar18,0,0); - puVar3 = add_tab2_next(puVar3); - puVar3 = add_tab3_previous(puVar3); - puVar16 = (u32 *)load_draw_selected_icon_folder_select(puVar3); - return puVar16; -} - - - -void init_menu15_cheat(void) - -{ - int iVar1; - char *pcVar2; - - tab_1_selected = FALSE; - tab_2_selected = FALSE; - tab_3_selected = FALSE; - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - dword_8002B5DC = 0; - pcVar2 = &cheat_available; - iVar1 = 1; - do { - if (*pcVar2 != '\0') { - (&DAT_800697f0)[dword_8002B5DC] = iVar1; - dword_8002B5DC += 1; - } - iVar1 += 1; - pcVar2 = pcVar2 + 1; - } while (iVar1 != 0x4b); - load_walletbond(); - return; -} - - - -void update_menu15_cheat(void) - -{ - longlong lVar1; - int i; - undefined1 *puVar2; - BOOL appendsp; - BOOL appendmp; - - appendsp = FALSE; - appendmp = FALSE; - puVar2 = CHEAT_AVAILABLE_EXTRA_CHARS; - i = 1; - do { - if (*puVar2 != '\0') { - appendsp = TRUE; - lVar1 = proc_7F091A78(i); - if (lVar1 != 0) { - appendmp = TRUE; - } - } - i += 1; - puVar2 = puVar2 + 1; - } while (i != 0x4b); - append_cheat_sp = appendsp; - append_cheat_mp = appendmp; - return; -} - - - -void interface_menu15_cheat(undefined8 param_1,undefined8 param_2) - -{ - int iVar1; - ulonglong uVar2; - longlong lVar3; - int iVar4; - int iVar5; - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu15_aspect); - set_page_height(100.00000000,(f32)menu15_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - MP_menu_selected_option = 0; - uVar2 = get_controller_buttons_held('\0',0xa000); - iVar1 = dword_8002B5E0; - if (uVar2 == 0) { - tab_3_highlight = FALSE; - tab_2_highlight = FALSE; - tab_1_highlight = FALSE; - dword_8002B5E0 = 0; - lVar3 = isontab3(); - if (lVar3 == 0) { - iVar1 = dword_8002B5E0; - if (((0xc < dword_8002B5DC) && - (iVar5 = dword_8002B5DC + -0xd, iVar1 = dword_8002B5E0, 0xdb < (int)(float)cursor_h_pos)) - && (iVar1 = dword_8002B5E0, -1 < iVar5)) { - iVar4 = iVar5 * 0x14 + 0x35; - do { - iVar1 = iVar5 + 0xc; - if (iVar4 <= (int)(float)cursor_v_pos) break; - iVar5 += -1; - iVar4 += -0x14; - iVar1 = dword_8002B5E0; - } while (-1 < iVar5); - } - dword_8002B5E0 = iVar1; - iVar1 = dword_8002B5E0; - if (dword_8002B5E0 == 0) { - iVar5 = dword_8002B5DC + -1; - if (0xc < dword_8002B5DC) { - iVar5 = 0xb; - } - iVar1 = dword_8002B5E0; - if (-1 < iVar5) { - iVar4 = iVar5 * 0x14 + 0x35; - do { - iVar1 = iVar5; - if (iVar4 <= (int)(float)cursor_v_pos) break; - iVar5 += -1; - iVar4 += -0x14; - iVar1 = dword_8002B5E0; - } while (-1 < iVar5); - } - } - } - else { - tab_3_highlight = TRUE; - iVar1 = dword_8002B5E0; - } - } - dword_8002B5E0 = iVar1; - uVar2 = get_controller_buttons_pressed('\0',0xa000); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x4000); - if (uVar2 != 0) { - tab_3_selected = TRUE; - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - } - else { - if (tab_3_highlight == FALSE) { - MP_menu_selected_option = 1; - } - else { - tab_3_selected = TRUE; - } - play_sfx_a1(ptr_sfx_buf,199,NULL); - } - disable_all_switches((int)ptr_folder_object_instance); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); - set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); - menu_control_stick_tracking(); - if (tab_3_selected == FALSE) { - if (MP_menu_selected_option != 0) { - (&DAT_800696a0)[(&DAT_800697f0)[dword_8002B5E0]] = - '\x01' - (&DAT_800696a0)[(&DAT_800697f0)[dword_8002B5E0]]; - } - } - else { - set_menu_to_mode(6,0); - set_menu_cursor_pos_to_setting(gamemode); - } - return; -} - - - -u32 * constructor_menu15_cheat(undefined4 *param_1) - -{ - undefined4 *DL; - uint *puVar2; - longlong lVar1; - short sVar5; - short sVar6; - byte *pbVar3; - u32 *puVar4; - u16 id; - uint uVar7; - int *piVar8; - uint uVar9; - int iVar10; - int iVar11; - int iStack28; - int iStack24; - uint uStack20; - uint auStack16 [4]; - - DL = set_setfillcolor(param_1,0,0,0); - DL = insert_generic_fillrect(DL); - DL = (undefined4 *)proc_7F00D5E8(DL); - puVar2 = microcode_constructor(DL); - iVar10 = 0; - iVar11 = dword_8002B5DC; - if (0xc < dword_8002B5DC) { - iVar11 = 0xc; - } - if (0 < iVar11) { - uVar9 = 0x35; - piVar8 = &DAT_800697f0; - do { - pbVar3 = (byte *)proc_7F092774(*piVar8); - proc_7F0AE98C(&iStack24,&iStack28,pbVar3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - auStack16[0] = 0x37; - uStack20 = uVar9; - if ((iVar10 == dword_8002B5E0) && (uStack20 = uVar9, lVar1 = isontab3(), lVar1 == 0)) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,(longlong)(int)(auStack16[0] - 2),(longlong)(int)(uStack20 - 1), - (longlong)(int)(auStack16[0] + iStack28 + 5),uStack20 + 0xe,0x32); - } - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,auStack16,&uStack20,pbVar3,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar5,(int)sVar6,0,0); - id = 0x9c74; - if ((&DAT_800696a0)[*piVar8] != '\0') { - id = 0x9c73; - } - pbVar3 = get_textptr_for_textID(id); - proc_7F0AE98C(&iStack24,&iStack28,pbVar3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - auStack16[0] = 0xb3; - uVar7 = 0xff; - if ((&DAT_800696a0)[*piVar8] != '\0') { - uVar7 = 0xa00000ff; - } - uStack20 = uVar9; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,auStack16,&uStack20,pbVar3,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar7,(int)sVar5,(int)sVar6,0,0); - iVar10 += 1; - piVar8 = piVar8 + 1; - uVar9 += 0x14; - iVar11 = dword_8002B5DC; - if (0xc < dword_8002B5DC) { - iVar11 = 0xc; - } - } while (iVar10 < iVar11); - } - if ((0xc < dword_8002B5DC) && (iVar11 = 0, 0 < dword_8002B5DC + -0xc)) { - DL = &DAT_800697f0; - uVar9 = 0x35; - do { - pbVar3 = (byte *)proc_7F092774(DL[0xc]); - proc_7F0AE98C(&iStack24,&iStack28,pbVar3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - auStack16[0] = 0xdc; - uStack20 = uVar9; - if ((iVar11 + 0xc == dword_8002B5E0) && (uStack20 = uVar9, lVar1 = isontab3(), lVar1 == 0)) { - puVar2 = microcode_constructor_related_to_menus - (puVar2,(longlong)(int)(auStack16[0] - 2),(longlong)(int)(uStack20 - 1), - (longlong)(int)(auStack16[0] + iStack28 + 5),uStack20 + 0xe,0x32); - } - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,auStack16,&uStack20,pbVar3,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xff,(int)sVar5,(int)sVar6,0,0); - id = 0x9c74; - if ((&DAT_800696a0)[DL[0xc]] != '\0') { - id = 0x9c73; - } - pbVar3 = get_textptr_for_textID(id); - proc_7F0AE98C(&iStack24,&iStack28,pbVar3,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - auStack16[0] = 0x158; - uVar7 = 0xff; - if ((&DAT_800696a0)[DL[0xc]] != '\0') { - uVar7 = 0xa00000ff; - } - uStack20 = uVar9; - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar2 = write_text_at_abs_coord - (puVar2,auStack16,&uStack20,pbVar3,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar7,(int)sVar5,(int)sVar6,0,0); - iVar11 += 1; - DL = DL + 1; - uVar9 += 0x14; - } while (iVar11 < dword_8002B5DC + -0xc); - } - puVar2 = add_tab3_previous(puVar2); - puVar4 = (u32 *)load_draw_selected_icon_folder_select(puVar2); - return puVar4; -} - - - -void init_menu16_nocontroller(void) - -{ - return; -} - - - -void update_menu16_nocontrollers(void) - -{ - return; -} - - - -void interface_menu16_nocontrollers(void) - -{ - return; -} - - - -// WARNING: Instruction at (ram,0x7f0184c8) overlaps instruction at (ram,0x7f0184c4) -// - -u32 * constructor_menu16_nocontrollers(undefined4 *param_1) - -{ - ulonglong uVar1; - undefined4 *DL; - short sVar3; - short sVar4; - uint *puVar2; - bool bVar5; - byte *pbStack20; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - uVar1 = get_num_controllers_plugged_in(); - bVar5 = (uVar1 & 8) != 0; - if ((uVar1 & 4) != 0) { - bVar5 = (bool)(bVar5 + '\x01'); - } - if ((uVar1 & 2) != 0) { - bVar5 = (bool)(bVar5 + '\x01'); - } - DL = insert_imageDL(param_1); - DL = microcode_constructor(DL); - if ((((bVar5 == false) || (bVar5 == true)) || (bVar5 == true)) || (bVar5 == true)) { - pbStack20 = get_textptr_for_textID(0x9c76); - } - proc_7F0AE98C(&iStack4,&iStack8,pbStack20,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - iStack12 = 0xdc - (iStack8 >> 1); - iStack16 = 0x99 - (iStack4 >> 1); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - puVar2 = en_text_write_stuff(DL,&iStack12,&iStack16,pbStack20,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xffffffff,(int)sVar3,(int)sVar4,0,0); - if (((bVar5 == false) || (bVar5 == true)) || ((bVar5 == true || (bVar5 == true)))) { - pbStack20 = get_textptr_for_textID(0x9c77); - } - proc_7F0AE98C(&iStack4,&iStack8,pbStack20,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - iStack12 = 0xdc - (iStack8 >> 1); - iStack16 = 0xb1 - (iStack4 >> 1); - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - puVar2 = en_text_write_stuff(puVar2,&iStack12,&iStack16,pbStack20,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xffffffff,(int)sVar3,(int)sVar4,0,0); - return (u32 *)puVar2; -} - - - -void do_extended_cast_display(longlong param_1) - -{ - if (param_1 != 0) { - do_not_play_intro_movie = 0; - full_actor_intro = (BOOL)param_1; - return; - } - do_not_play_intro_movie = 1; - full_actor_intro = (BOOL)param_1; - return; -} - - - -void init_menu18_displaycast(void) - -{ - object_header *objheader; - u32 uVar1; - u32 uVar2; - int iVar3; - BOOL BVar4; - int iVar5; - PROPS PVar6; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - uint uVar7; - PROPS *pPVar8; - PROPS *pPVar9; - PROPS *pPVar10; - PROPS *pPVar11; - float fVar12; - f32 scale; - f32 scale_00; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - PROPS local_8c [10]; - int rifles [6]; - object_header *headHeader; - HEADS headID; - BODIES bodyID; - int aiStack40 [4]; - float local_18; - undefined4 local_14; - undefined4 local_10; - undefined *local_8; - undefined *local_4; - - local_4 = ptr_logo_and_walletbond_DL; - local_18 = dword_8002BA2C; - local_14 = DAT_8002ba30; - local_10 = DAT_8002ba34; - headHeader = NULL; - uVar1 = get_random_value(); - if ((full_actor_intro != FALSE) && (do_not_play_intro_movie == 0)) { - musicTrack1Vol(0x7fff); - music1_playing = 0; - musicTrack1Play(M_INTRO); - } - intro_animation_count = 0; - if (-1 < intro_animation_table[0].animID) { - intro_animation_count = 1; - while (-1 < intro_animation_table[intro_animation_count].animID) { - intro_animation_count += 1; - } - } - uVar2 = get_random_value(); - randomly_selected_intro_animation = uVar2 % intro_animation_count; - bodyID = intro_char_table[do_not_play_intro_movie].body; - headID = intro_char_table[do_not_play_intro_movie].head; - iVar5 = intro_animation_table[randomly_selected_intro_animation].camera_preset; - if (intro_animation_count == 0) { - trap(0x1c00); - } - if (bodyID == BODY_Special_Operations_Uniform) { - uVar2 = get_random_value(); - if (true) { - switch(uVar2 % 5) { - case 1: - headID = HEAD_Male_Pierce_Bond_2; - bodyID = BODY_Formal_Wear; - break; - case 2: - headID = HEAD_Male_Pierce_Bond_2; - bodyID = BODY_Jungle_Fatigues; - break; - case 3: - headID = HEAD_Male_Pierce_Bond_2; - bodyID = BODY_Parka; - break; - case 4: - headID = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - bodyID = BODY_Tuxedo; - } - } - } - else { - if (bodyID == BODY_Natalya_Skirt) { - uVar2 = get_random_value(); - if ((uVar2 & 1) != 0) { - bodyID = BODY_Natalya_Jungle_Fatigues; - } - } - else { - if ((bodyID == BODY_Trevelyan_006) && (uVar2 = get_random_value(), (uVar2 & 1) != 0)) { - bodyID = BODY_Trevelyan_Janus; - } - } - } - if (headID == 0xffffff9f) { - headID = get_random_head(bodyID); - } - local_8 = &DAT_00031160; - proc_7F0D2448(((uint)(local_4 + 0x3119f) | 0x3f) ^ 0x3f,0x1b8,0x14a); - proc_7F0CBAF4(aiStack40,(int)local_4,0x19000); - objheader = c_item_entries[bodyID].header; - local_4 = local_4 + 0x19000; - local_8 = local_8 + -0x19000; - load_object_fill_header - (objheader,(u8 *)c_item_entries[bodyID].filename,(int)local_4,(int)local_8, - (int)aiStack40); - iVar3 = get_temp_buffer_remaining_value((byte *)c_item_entries[bodyID].filename); - uVar7 = (iVar3 + 0x3fU | 0x3f) ^ 0x3f; - local_8 = local_8 + -uVar7; - local_4 = local_4 + uVar7; - if (-1 < (int)headID) { - headHeader = c_item_entries[headID].header; - load_object_fill_header - (headHeader,(u8 *)c_item_entries[headID].filename,(int)local_4,(int)local_8, - (int)aiStack40); - iVar3 = get_temp_buffer_remaining_value((byte *)c_item_entries[headID].filename); - uVar7 = (iVar3 + 0x3fU | 0x3f) ^ 0x3f; - local_8 = local_8 + -uVar7; - local_4 = local_4 + uVar7; - } - objinstance = (undefined *)setup_chr_instance(bodyID,headID,objheader,headHeader,0); - set_obj_instance_controller_scale((int)objinstance,scale); - if (iVar5 == 0) { - ptrobjinstance = NULL; - } - else { - if (iVar5 == 2) { - rifles[0] = random_rifles_in_intro[0]; - rifles[1] = random_rifles_in_intro[1]; - rifles[3] = random_rifles_in_intro[3]; - rifles[2] = random_rifles_in_intro[2]; - rifles[4] = random_rifles_in_intro[4]; - rifles[5] = random_rifles_in_intro[5]; - uVar2 = get_random_value(); - PVar6 = rifles[uVar2 % 6]; - } - else { - pPVar8 = random_pistols_in_intro; - pPVar10 = local_8c; - do { - pPVar9 = pPVar8 + 3; - pPVar11 = pPVar10 + 3; - *pPVar10 = *pPVar8; - pPVar10[1] = pPVar8[1]; - pPVar10[2] = pPVar8[2]; - pPVar8 = pPVar9; - pPVar10 = pPVar11; - } while (pPVar9 != random_pistols_in_intro + 9); - *pPVar11 = random_pistols_in_intro[9]; - uVar2 = get_random_value(); - PVar6 = local_8c[uVar2 % 10]; - } - if ((PVar6 == PROP_chrruger) && (uVar2 = check_cradle_completed_any_folder(), uVar2 == 0)) { - PVar6 = PROP_chrwppk; - } - if ((PVar6 == PROP_chrlaser) && - (BVar4 = check_aztec_completed_any_folder_secret_00(), BVar4 == FALSE)) { - PVar6 = PROP_chrwppk; - } - if ((PVar6 == PROP_chrgolden) && (BVar4 = check_egypt_completed_any_folder_00(), BVar4 == FALSE) - ) { - PVar6 = PROP_chrwppk; - } - objheader = (object_header *)PitemZ_entries[PVar6].header; - load_object_fill_header - (objheader,(u8 *)PitemZ_entries[PVar6].filename,(int)local_4,(int)local_8, - (int)aiStack40); - get_temp_buffer_remaining_value((byte *)PitemZ_entries[PVar6].filename); - set_objuse_flag_compute_grp_nums_set_obj_loaded(objheader); - ptrobjinstance = (undefined *)get_obj_instance_controller_for_header((PitemZ_header *)objheader) - ; - set_obj_instance_controller_scale((int)ptrobjinstance,scale_00); - iVar5 = 3; - *(undefined **)(ptrobjinstance + 0x18) = objinstance; - if ((uVar1 & 1) != 0) { - iVar5 = 5; - } - *(undefined4 *)(ptrobjinstance + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(objinstance + 8) + 8) + iVar5 * 4); - } - proc_7F06CE84((int)objinstance,0x3dcccccd); - setsuboffset((int)objinstance,&local_18,extraout_a2_lo,extraout_a3_lo); - setsubroty((int)objinstance,extraout_f12,0,extraout_a2_lo_00); - proc_7F06FF18((int)objinstance,0x3f000000,extraout_f12_00); - proc_7F06FCA8((int)objinstance, - *(undefined4 *) - (animation_table_ptrs1 + - intro_animation_table[randomly_selected_intro_animation].animID * 4), - (char)(uVar1 & 1),extraout_f12_01, - intro_animation_table[randomly_selected_intro_animation].startframeoffset, - extraout_f14); - menu_timer = 0; - uVar1 = get_random_value(); - fVar12 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - DAT_800695a4 = fVar12 * 0.00000000 * 80.00000000 + 70.00000000; - uVar1 = get_random_value(); - fVar12 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - DAT_800695a8 = fVar12 * 0.00000000 * 80.00000000 + 70.00000000; - uVar1 = get_random_value(); - fVar12 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - DAT_800695b0 = (fVar12 * 0.00000000 - 0.50000000) * flt_80051B00; - uVar1 = get_random_value(); - fVar12 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - DAT_800695b4 = (fVar12 * 0.00000000 - 0.50000000) * flt_80051B04; - uVar1 = get_random_value(); - fVar12 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - DAT_800695bc = fVar12 * 0.00000000 * 200.00000000 + -100.00000000; - uVar1 = get_random_value(); - fVar12 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - DAT_800695a0 = DAT_800695a4; - dword_80069C6C = DAT_800695b0; - DAT_800695b8 = DAT_800695bc; - DAT_800695c0 = fVar12 * 0.00000000 * 200.00000000 + -100.00000000; - DAT_800695e4 = 1; - DAT_800695e8 = 0; - DAT_800695ec = 0; - DAT_800695f0 = 0; - return; -} - - - -void update_menu18_displaycast(void) - -{ - if (objinstance != NULL) { - set_aircraft_obj_inst_scale_to_zero((int *)objinstance); - } - if (ptrobjinstance != NULL) { - set_obj_instance_scale_to_zero((int *)ptrobjinstance); - } - return; -} - - - -void interface_menu18_displaycast(undefined8 param_1,undefined8 param_2) - -{ - BOOL BVar2; - u32 uVar3; - ulonglong uVar1; - f32 extraout_a0_lo; - int iVar4; - - video_related_1F(46.00000000); - set_page_height(10.00000000,2000.00000000,extraout_a0_lo); - set_video2_settings_offset_24(1); - video_related_21((f32)flt_80051B08); - set_cur_player_screen_size(0x1b8,0x14a); - set_video2_width_height(0x1b8,0x14a); - set_cur_player_viewport_size(0,0); - set_video2_ulx_uly(0,0); - menu_timer += clock_timer; - if (menu_timer < 0xb5) { - uVar1 = get_controller_buttons_pressed('\0',0xffff); - if ((uVar1 != 0) && (full_actor_intro == FALSE)) { - set_menu_to_mode(5,1); - } - return; - } - iVar4 = do_not_play_intro_movie + 1; -LAB_7f01902c: - do_not_play_intro_movie = iVar4; - if (intro_char_table[do_not_play_intro_movie].flag != 0) goto code_r0x7f01904c; - iVar4 = intro_char_table[do_not_play_intro_movie].body; - goto LAB_7f019068; -code_r0x7f01904c: - iVar4 = do_not_play_intro_movie + 1; - if (full_actor_intro != FALSE) { - iVar4 = intro_char_table[do_not_play_intro_movie].body; -LAB_7f019068: - if ((iVar4 == 0x27) && (BVar2 = check_aztec_completed_any_folder_secret_00(), BVar2 == FALSE)) { - iVar4 = do_not_play_intro_movie + 1; - goto LAB_7f01902c; - } - if ((intro_char_table[do_not_play_intro_movie].body == 0x28) && - (BVar2 = check_aztec_completed_any_folder_secret_00(), BVar2 == FALSE)) { - iVar4 = do_not_play_intro_movie + 1; - goto LAB_7f01902c; - } - if ((intro_char_table[do_not_play_intro_movie].body == 0xe) && - (BVar2 = check_aztec_completed_any_folder_secret_00(), BVar2 == FALSE)) { - uVar3 = get_random_value(); - if (false) { - trap(0x1c00); - } - if (uVar3 % 10000 != 0) { - iVar4 = do_not_play_intro_movie + 1; - goto LAB_7f01902c; - } - } - if ((intro_char_table[do_not_play_intro_movie].body == 0xd) && - (BVar2 = check_aztec_completed_any_folder_secret_00(), BVar2 == FALSE)) { - uVar3 = get_random_value(); - if (false) { - trap(0x1c00); - } - if (uVar3 % 10000 != 0) { - iVar4 = do_not_play_intro_movie + 1; - goto LAB_7f01902c; - } - } - if ((intro_char_table[do_not_play_intro_movie].body == 0xf) && - (BVar2 = check_egypt_completed_any_folder_00(), BVar2 == FALSE)) { - uVar3 = get_random_value(); - if (false) { - trap(0x1c00); - } - if (uVar3 % 10000 != 0) { - iVar4 = do_not_play_intro_movie + 1; - goto LAB_7f01902c; - } - } - if ((intro_char_table[do_not_play_intro_movie].body != 0xc) || - (BVar2 = check_egypt_completed_any_folder_00(), BVar2 != FALSE)) { -LAB_7f019268: - if (intro_char_table[do_not_play_intro_movie].body < 0) { - do_not_play_intro_movie = 0; - } - if (do_not_play_intro_movie < 1) { - if (full_actor_intro != FALSE) { - set_menu_to_mode(7,1); - set_cursor_to_stage_solo(0x11); - full_actor_intro = FALSE; - return; - } - select_ramrom_to_play(); - return; - } - set_menu_to_mode(0x18,1); - return; - } - uVar3 = get_random_value(); - if (false) { - trap(0x1c00); - } - if (uVar3 % 10000 == 0) goto LAB_7f019268; - iVar4 = do_not_play_intro_movie + 1; - } - goto LAB_7f01902c; -} - - - -u32 * constructor_menu18_displaycast(undefined4 *param_1) - -{ - ushort *partdesc; - undefined4 *puVar1; - LookAt *l; - float *pfVar2; - uint *puVar3; - byte *pbVar4; - short sVar5; - short sVar6; - undefined8 extraout_a0; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 extraout_a2_lo_03; - undefined4 extraout_a2_lo_04; - undefined4 extraout_a2_lo_05; - undefined4 uVar7; - undefined4 extraout_a2_lo_06; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - undefined4 extraout_a3_lo_02; - undefined4 extraout_a3_lo_03; - undefined *extraout_a3_lo_04; - undefined *puVar8; - float **ppfVar9; - float **ppfVar10; - float **ppfVar11; - float **ppfVar12; - int iVar13; - int iVar15; - longlong lVar14; - float fVar16; - float fVar17; - uint uVar18; - float xEye; - float yEye; - byte abStack368 [72]; - float fStack296; - float fStack292; - float fStack288; - float fStack284; - float fStack280; - float fStack276; - float fStack268; - float fStack264; - int iStack256; - int iStack252; - int iStack248; - int iStack244; - float afStack240 [18]; - float *pfStack168; - undefined4 uStack164; - undefined4 uStack160; - undefined4 *puStack156; - LookAt *pLStack152; - undefined4 uStack120; - float afStack104 [17]; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fStack12 = flt_8002BA78.x; - fStack8 = flt_8002BA78.y; - fStack4 = flt_8002BA78.z; - fStack24 = dword_8002BA84.x; - fStack20 = dword_8002BA84.y; - fStack16 = dword_8002BA84.z; - fStack36 = dword_8002BA90.x; - fStack32 = dword_8002BA90.y; - fStack28 = dword_8002BA90.z; - ppfVar11 = (float **)&dword_8002BA9C; - ppfVar9 = &pfStack168; - do { - ppfVar12 = ppfVar11 + 3; - ppfVar10 = ppfVar9 + 3; - *ppfVar9 = *ppfVar11; - ppfVar9[1] = ppfVar11[1]; - ppfVar9[2] = ppfVar11[2]; - ppfVar11 = ppfVar12; - ppfVar9 = ppfVar10; - } while (ppfVar12 != (float **)0x8002bad8); - *ppfVar10 = pfRam8002bad8; - fStack284 = DAT_8002badc; - fStack280 = dword_8002BAE0; - fStack264 = (float)menu_timer / 180.00000000; - fStack276 = dword_8002BAE4; - if ((menu_timer < 0) || (0xb3 < menu_timer)) { - fStack268 = 0.00000000; - } - else { - if (menu_timer < 0x1e) { - fStack268 = (float)menu_timer / 30.00000000; - } - else { - if (menu_timer < 0x97) { - fStack268 = 1.00000000; - } - else { - fStack268 = (float)(0xb4 - menu_timer) / 30.00000000; - } - } - } - puVar1 = set_setfillcolor(param_1,0,0,0); - pLStack152 = (LookAt *)insert_generic_fillrect(puVar1); - DAT_800695a0 = (DAT_800695a8 - DAT_800695a4) * fStack264 + DAT_800695a4; - dword_80069C6C = (DAT_800695b4 - DAT_800695b0) * fStack264 + DAT_800695b0; - DAT_800695b8 = (DAT_800695c0 - DAT_800695bc) * fStack264 + DAT_800695bc; - if (dword_80069C6C < 0.00000000) { - dword_80069C6C = dword_80069C6C + flt_80051B0C; - } - l = pLStack152; - fVar16 = sinf(dword_80069C6C); - fVar17 = cosf(dword_80069C6C); - fStack8 = DAT_800695b8; - fStack12 = fVar17 * flt_80051B10 * DAT_800695a0 + DAT_800695a0 * fVar16; - fVar16 = cosf(dword_80069C6C); - fVar17 = sinf(dword_80069C6C); - fStack4 = DAT_800695a0 * fVar16 - fVar17 * flt_80051B14 * DAT_800695a0; - fVar16 = cosf(dword_80069C6C); - fStack24 = fStack24 + fVar16 * flt_80051B18 * DAT_800695a0; - fVar16 = sinf(dword_80069C6C); - fStack16 = fStack16 + -fVar16 * flt_80051B1C * DAT_800695a0; - proc_7F0BD6F8(2); - guLookAtReflect((Mtx *)abStack368,l,xEye,yEye,0.00000000,0.00000000,4000.00000000,0.00000000, - 0.00000000,0.00000000,0.00000000); - *(undefined4 *)pLStack152->l = 0xbc000002; - *(undefined4 *)(pLStack152->l + 4) = 0x80000040; - *(undefined4 *)(pLStack152->l + 8) = 0x3860010; - *(undefined4 *)(pLStack152->l + 0xc) = 0x8002a978; - *(undefined4 *)(pLStack152->l + 0x10) = 0x3880010; - *(undefined4 *)(pLStack152->l + 0x14) = 0x8002a970; - *(undefined4 *)(pLStack152->l + 0x18) = 0x3840010; - *(LookAt **)(pLStack152->l + 0x1c) = l; - *(byte **)(pLStack152[1].l + 4) = l->l + 0x10; - *(undefined4 *)pLStack152[1].l = 0x3820010; - puStack156 = (undefined4 *)(pLStack152[1].l + 8); - proc_7F070AEC((int)objinstance,clock_timer,1); - set_80036084(1); - proc_7F073FC8(0); - subcalcpos((int)objinstance,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - if ((ptrobjinstance != NULL) && (**(ushort ***)(*(int *)(ptrobjinstance + 8) + 8) != NULL)) { - pLStack152 = (LookAt *) - extract_id_from_object_structure_microcode - ((int)ptrobjinstance,**(ushort ***)(*(int *)(ptrobjinstance + 8) + 8)); - *(undefined2 *)pLStack152->l = 0; - } - if ((ptrobjinstance != NULL) && - (partdesc = *(ushort **)(*(int *)(*(int *)(ptrobjinstance + 8) + 8) + 8), partdesc != NULL)) { - pLStack152 = (LookAt *)extract_id_from_object_structure_microcode((int)ptrobjinstance,partdesc); - *(undefined4 *)pLStack152->l = 0; - } - proc_7F0BD714((int)*(short *)(*(int *)(objinstance + 8) + 0xe) << 6); - proc_7F057FD0(afStack104); - pfStack168 = afStack104; - subcalcmatrices(&pfStack168,(uint)objinstance,extraout_a2_lo_00,extraout_a3_lo_00); - getsuboffset((int)objinstance,&fStack296,extraout_a2_lo_01,extraout_a3_lo_01); - if (DAT_800695e4 != 0) { - DAT_800695ec = fStack292; - } - fStack284 = (fStack296 - DAT_800695e8) / global_timer_delta; - fStack280 = (fStack292 - DAT_800695ec) / global_timer_delta; - fStack276 = (fStack288 - DAT_800695f0) / global_timer_delta; - if (DAT_800695e4 != 0) { - DAT_80069608 = fStack284 / flt_80051B20; - DAT_8006960c = fStack280 / flt_80051B20; - DAT_80069610 = fStack276 / flt_80051B20; - } - if (0 < clock_timer) { - iVar15 = 1; - DAT_80069608 = flt_80051B28 * DAT_80069608; - if (1 < clock_timer) { - do { - iVar15 += 1; - DAT_8006960c = fStack280 + flt_80051B28 * DAT_8006960c; - DAT_80069610 = fStack276 + flt_80051B28 * DAT_80069610; - DAT_80069608 = flt_80051B28 * (fStack284 + DAT_80069608); - } while (iVar15 < clock_timer); - } - DAT_80069608 = fStack284 + DAT_80069608; - DAT_8006960c = fStack280 + flt_80051B28 * DAT_8006960c; - DAT_80069610 = fStack276 + flt_80051B28 * DAT_80069610; - } - DAT_800695f8 = DAT_80069608 * flt_80051B24; - DAT_800695fc = DAT_8006960c * flt_80051B24; - DAT_80069600 = DAT_80069610 * flt_80051B24; - DAT_800695e8 = DAT_800695e8 + DAT_800695f8 * global_timer_delta; - DAT_800695ec = DAT_800695ec + DAT_800695fc * global_timer_delta; - DAT_800695f0 = DAT_800695f0 + DAT_80069600 * global_timer_delta; - proc_7F058474(*(float **)(objinstance + 0xc),&fStack284); - fStack284 = fStack284 - DAT_800695e8; - fStack280 = fStack280 - DAT_800695ec; - fStack276 = fStack276 - DAT_800695f0; - if (DAT_800695e4 != 0) { - DAT_800695d8 = fStack284 / flt_80051B34; - DAT_800695e4 = 0; - DAT_800695dc = fStack280 / flt_80051B34; - dword_80069CA0 = fStack276 / flt_80051B34; - } - pfVar2 = (float *)&DAT_800695d8; - if (0 < clock_timer) { - iVar15 = 1; - DAT_800695d8 = flt_80051B30 * DAT_800695d8; - if (1 < clock_timer) { - do { - iVar15 += 1; - DAT_800695dc = fStack280 + flt_80051B30 * DAT_800695dc; - dword_80069CA0 = fStack276 + flt_80051B30 * dword_80069CA0; - DAT_800695d8 = flt_80051B30 * (fStack284 + DAT_800695d8); - } while (iVar15 < clock_timer); - } - DAT_800695d8 = fStack284 + DAT_800695d8; - DAT_800695dc = fStack280 + flt_80051B30 * DAT_800695dc; - dword_80069CA0 = fStack276 + flt_80051B30 * dword_80069CA0; - } - lVar14 = 0; - DAT_800695c8 = DAT_800695d8 * flt_80051B34; - DAT_800695cc = DAT_800695dc * flt_80051B34; - dword_80069C90 = dword_80069CA0 * flt_80051B34; - fStack284 = DAT_800695e8 + DAT_800695c8; - fStack280 = (DAT_800695ec + DAT_800695cc) - 10.00000000; - fStack276 = DAT_800695f0 + dword_80069C90; - fStack24 = fStack24 + fStack284; - fStack12 = fStack12 + DAT_800695e8; - fStack16 = fStack16 + fStack276; - fStack8 = fStack8 + DAT_800695ec + 52.50000000; - fStack20 = fStack20 + fStack280; - fStack4 = fStack4 + DAT_800695f0; - proc_7F059694(afStack104,fStack280,fStack276,fStack12,fStack8,fStack4,fStack24,fStack20,fStack16, - fStack36); - pfStack168 = afStack104; - proc_7F0BD714((int)*(short *)(*(int *)(objinstance + 8) + 0xe) << 6); - pLStack152 = (LookAt *)pfVar2; - subcalcmatrices(&pfStack168,(uint)objinstance,extraout_a2_lo_02,extraout_a3_lo_02); - uVar7 = extraout_a2_lo_03; - puVar8 = ptrobjinstance; - if (ptrobjinstance != NULL) { - pfVar2 = (float *)proc_7F06C660((int)objinstance,*(ushort **)(ptrobjinstance + 0x1c),0); - if (*(int *)(ptrobjinstance + 0x1c) == *(int *)(*(int *)(*(int *)(objinstance + 8) + 8) + 0x14)) - { - pfStack168 = pfVar2; - proc_7F058688(flt_80051B38,extraout_a0,afStack240); - proc_7F058068(pfStack168,afStack240); - iVar15 = *(int *)(ptrobjinstance + 8); - pfStack168 = afStack240; - } - else { - iVar15 = *(int *)(ptrobjinstance + 8); - pfStack168 = pfVar2; - } - proc_7F0BD714((int)*(short *)(iVar15 + 0xe) << 6); - pLStack152 = (LookAt *)pfVar2; - instcalcmatrices(&pfStack168,(uint)ptrobjinstance,extraout_a2_lo_04,extraout_a3_lo_03); - uVar7 = extraout_a2_lo_05; - puVar8 = extraout_a3_lo_04; - } - uStack120 = 7; - uStack164 = 1; - uStack160 = 3; - subdraw((int)&pfStack168,(uint)objinstance,uVar7,puVar8); - if (ptrobjinstance != NULL) { - subdraw((int)&pfStack168,(uint)ptrobjinstance,extraout_a2_lo_06,ptrobjinstance); - } - puVar1 = puStack156; - set_80036084(0); - iVar15 = 0; - if (0 < *(short *)(*(int *)(objinstance + 8) + 0xe)) { - iVar13 = *(int *)(objinstance + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar13 + iVar15),afStack240); - proc_7F058C9C((int)afStack240,(uint *)(*(int *)(objinstance + 0xc) + (int)lVar14 * 0x40)); - lVar14 = (longlong)((int)lVar14 + 1); - iVar15 += 0x40; - if ((longlong)*(short *)(*(int *)(objinstance + 8) + 0xe) <= lVar14) break; - iVar13 = *(int *)(objinstance + 0xc); - } - } - if (ptrobjinstance != NULL) { - lVar14 = 0; - iVar15 = 0; - if (0 < *(short *)(*(int *)(ptrobjinstance + 8) + 0xe)) { - iVar13 = *(int *)(ptrobjinstance + 0xc); - while( true ) { - proc_7F058020((undefined4 *)(iVar13 + iVar15),afStack240); - proc_7F058C9C((int)afStack240,(uint *)(*(int *)(ptrobjinstance + 0xc) + (int)lVar14 * 0x40)) - ; - lVar14 = (longlong)((int)lVar14 + 1); - iVar15 += 0x40; - if ((longlong)*(short *)(*(int *)(ptrobjinstance + 8) + 0xe) <= lVar14) break; - iVar13 = *(int *)(ptrobjinstance + 0xc); - } - } - } - *puVar1 = 0xed000000; - puVar1[1] = 0x6e0528; - puVar1[2] = 0xe7000000; - puVar1[3] = 0; - puVar1[4] = 0xba001402; - puVar1[5] = 0; - puVar1[7] = 0xc0; - puVar1[6] = 0xba000602; - puVar1[8] = 0xba001301; - puVar1[9] = 0; - puVar1[10] = 0xb9000002; - puVar1[0xb] = 0; - puVar1[0xc] = 0xba001001; - puVar1[0xd] = 0; - puVar1[0xf] = 0x2000; - puVar1[0xe] = 0xba000c02; - puVar1[0x10] = 0xba000903; - puVar1[0x11] = 0xc00; - puVar1[0x12] = 0xba000e02; - puVar1[0x13] = 0; - puVar1[0x15] = 0x504340; - puVar1[0x14] = 0xb900031d; - puVar1[0x16] = 0xfcffffff; - puVar1[0x17] = 0xfffdf6fb; - puVar1[0x18] = 0xfa000000; - fVar16 = fStack268 * 255.00000000; - puVar1[0x19] = 0xffU - (int)fVar16 & 0xff; - puVar1[0x1b] = 0; - puVar1[0x1a] = 0xf66e0528; - puVar1[0x1d] = 0; - puVar1[0x1c] = 0xe7000000; - puVar1[0x1f] = 0x40; - puVar1[0x1e] = 0xba000602; - puVar1[0x21] = 0x80000; - puVar1[0x20] = 0xba001301; - puVar1[0x23] = 0x10000; - puVar1[0x22] = 0xba001001; - puVar3 = microcode_constructor(puVar1 + 0x24); - if (full_actor_intro == FALSE) { - pbVar4 = get_textptr_for_textID(intro_char_table[do_not_play_intro_movie].text1); - proc_7F0AE98C(&iStack256,&iStack252,pbVar4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - iVar15 = iStack252; - if (iStack252 < 0) { - iVar15 = iStack252 + 1; - } - iStack244 = 0x13b - (iVar15 >> 1); - iStack248 = 0x6c; - puVar1 = microcode_constructor_related_to_menus - (puVar3,(longlong)iStack244,0x6c,(longlong)(iStack244 + iStack252 + 1), - iStack256 + 0x6d,0); - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - if (false) { - fVar17 = ROUND(fVar16); - } - else { - fVar17 = FLOOR(fVar16); - } - uVar18 = (uint)fVar17; - if (true) { - if ((int)uVar18 < 0) goto LAB_7f01a0d0; - } - else { - if (false) { - fVar17 = ROUND(fVar16 - 2147483648.00000000); - } - else { - fVar17 = FLOOR(fVar16 - 2147483648.00000000); - } - if (false) { -LAB_7f01a0d0: - uVar18 = 0xffffffff; - } - else { - uVar18 = (int)fVar17 | 0x80000000; - } - } - puVar3 = en_text_write_stuff(puVar1,&iStack244,&iStack248,pbVar4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar18 | 0xffffff00,(int)sVar5,(int)sVar6,0, - 0); - } - if (false) { - fVar17 = ROUND(fVar16); - } - else { - fVar17 = FLOOR(fVar16); - } - uVar18 = (uint)fVar17; - if (true) { - if (-1 < (int)uVar18) goto LAB_7f01a1b0; - } - else { - if (false) { - fVar16 = ROUND(fVar16 - 2147483648.00000000); - } - else { - fVar16 = FLOOR(fVar16 - 2147483648.00000000); - } - if (true) { - uVar18 = (int)fVar16 | 0x80000000; - goto LAB_7f01a1b0; - } - } - uVar18 = 0xffffffff; -LAB_7f01a1b0: - pbVar4 = get_textptr_for_textID(intro_char_table[do_not_play_intro_movie].text2); - proc_7F0AE98C(&iStack256,&iStack252,pbVar4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - iVar15 = iStack252; - if (iStack252 < 0) { - iVar15 = iStack252 + 1; - } - iStack244 = 0x13b - (iVar15 >> 1); - iStack248 = 0x98; - puVar1 = microcode_constructor_related_to_menus - (puVar3,(longlong)iStack244,0x98,(longlong)(iStack244 + iStack252 + 1), - iStack256 + 0x99,0); - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar3 = en_text_write_stuff(puVar1,&iStack244,&iStack248,pbVar4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar18 | 0xffffff00,(int)sVar5,(int)sVar6,0,0) - ; - pbVar4 = get_textptr_for_textID(intro_char_table[do_not_play_intro_movie].text3); - proc_7F0AE98C(&iStack256,&iStack252,pbVar4,(int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - iVar15 = iStack252; - if (iStack252 < 0) { - iVar15 = iStack252 + 1; - } - iStack244 = 0x13b - (iVar15 >> 1); - iStack248 = 0xae; - puVar1 = microcode_constructor_related_to_menus - (puVar3,(longlong)iStack244,0xae,(longlong)(iStack244 + iStack252 + 1), - iStack256 + 0xaf,0); - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - puVar3 = en_text_write_stuff(puVar1,&iStack244,&iStack248,pbVar4,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,uVar18 | 0xffffff00,(int)sVar5,(int)sVar6,0,0) - ; - return (u32 *)puVar3; -} - - - -void init_menu19_spectrum(void) - -{ - ulonglong uVar1; - byte bVar2; - - bVar2 = 0; - uVar1 = get_controller_buttons_held('\x02',2); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\x02',1); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\x02',8); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\x02',4); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\x02',0x200); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\x02',0x100); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\x02',0x800); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\x02',0x400); - if (uVar1 != 0) { - bVar2 = 7; - } - } - else { - bVar2 = 6; - } - } - else { - bVar2 = 5; - } - } - else { - bVar2 = 4; - } - } - else { - bVar2 = 3; - } - } - else { - bVar2 = 2; - } - } - else { - bVar2 = 1; - } - } - init_spectrum_game(bVar2); - return; -} - - - -void update_menu19_spectrum(void) - -{ - return; -} - - - -void interface_menu19_spectrum(undefined8 param_1,undefined8 param_2) - -{ - f32 extraout_a0_lo; - - video_related_1F(60.00000000); - video_related_21((f32)menu19_aspect); - set_page_height(100.00000000,(f32)menu19_pageheight,extraout_a0_lo); - set_video2_settings_offset_24(0); - run_spectrum_game(); - return; -} - - - -u32 * constructor_menu19_spectrum(undefined4 *param_1) - -{ - undefined4 *puVar1; - u32 *puVar2; - - puVar1 = insert_imageDL(param_1); - *puVar1 = 0xba001402; - puVar1[5] = 0x204; - puVar1[4] = 0xb6000000; - puVar1[7] = 0xfffcf87c; - puVar1[2] = 0xb900031d; - puVar1[3] = 0x552048; - puVar1[6] = 0xfcffffff; - puVar1[8] = 0xba000c02; - puVar1[1] = 0; - puVar1[9] = 0; - puVar1[10] = 0xfd500000; - puVar1[0xb] = 0x8002baf0; - puVar1[0xd] = 0x7000000; - puVar1[0xc] = 0xf5000300; - puVar1[0xe] = 0xe6000000; - puVar1[0xf] = 0; - puVar1[0x10] = 0xf0000ff0; - puVar1[0x11] = 0x701cff0; - puVar1[0x12] = 0xe7000000; - puVar1[0x13] = 0; - puVar1[0x15] = 0x8000; - puVar1[0x14] = 0xba000e02; - puVar2 = spectrum_draw_screen(puVar1 + 0x16); - return puVar2; -} - - - -// WARNING: Instruction at (ram,0x7f01a5e8) overlaps instruction at (ram,0x7f01a5e4) -// - -void set_menu_to_mode(longlong param_1,longlong param_2) - -{ - if ((param_1 == 0xb) || (param_1 == 0x19)) { - is_emulating_spectrum = TRUE; - } - if (param_2 == 0) { - maybe_prev_menu = (MENU)param_1; - return; - } - menu_update = (MENU)param_1; - return; -} - - - -MENU get_currentmenu(void) - -{ - return current_menu; -} - - - -void menu_init(undefined8 param_1,undefined8 param_2) - -{ - MENU MVar1; - undefined1 *puVar2; - int iVar3; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - undefined8 extraout_a1_03; - undefined8 extraout_a1_04; - undefined8 extraout_a1_05; - undefined8 extraout_a1_06; - undefined8 extraout_a1_07; - undefined8 extraout_a1_08; - undefined8 extraout_a1_09; - undefined8 extraout_a1_10; - undefined8 extraout_a1_11; - undefined8 extraout_a1_12; - undefined8 extraout_a1_13; - undefined8 extraout_a1_14; - undefined8 extraout_a1_15; - undefined8 extraout_a1_16; - undefined8 extraout_a1_17; - undefined8 extraout_a1_18; - undefined8 extraout_a1_19; - undefined8 extraout_a1_20; - undefined8 extraout_a1_21; - undefined8 extraout_a1_22; - undefined8 extraout_a1_23; - undefined8 extraout_a1_24; - undefined8 extraout_a1_25; - undefined8 extraout_a1_26; - undefined8 extraout_a1_27; - undefined8 extraout_a1_28; - undefined8 extraout_a1_29; - undefined8 extraout_a1_30; - undefined8 extraout_a1_31; - undefined8 extraout_a1_32; - undefined8 extraout_a1_33; - undefined8 extraout_a1_34; - undefined8 extraout_a1_35; - undefined8 extraout_a1_36; - undefined8 extraout_a1_37; - undefined8 extraout_a1_38; - undefined8 extraout_a1_39; - undefined8 extraout_a1_40; - undefined8 extraout_a1_41; - undefined8 extraout_a1_42; - undefined8 extraout_a1_43; - undefined8 extraout_a1_44; - undefined8 extraout_a1_45; - undefined8 extraout_a1_46; - undefined8 extraout_a1_47; - undefined8 extraout_a1_48; - undefined8 extraout_a1_49; - undefined8 extraout_a1_50; - undefined8 uVar4; - - if (current_menu == MENU_SWITCH_SCREENS) { - if (spectrum_related_flag == FALSE) { - if ((is_emulating_spectrum != FALSE) && - (puVar2 = (undefined1 *)get_video_settings2_frameb(), puVar2 == cfb_16_a)) { - screen_size = SCREEN_SIZE_320x240; - is_emulating_spectrum = FALSE; - } - } - else { - puVar2 = (undefined1 *)get_video_settings2_frameb(); - if (puVar2 == cfb_16_b) { - screen_size = SCREEN_SIZE_440x330; - spectrum_related_flag = FALSE; - } - } - } - if (screen_size == SCREEN_SIZE_320x240) { - video_related_21((f32)flt_80051B48); - set_video2_text_clip_size(320,0xf0); - set_video2_settings_offset_18_1A(320,0xf0); - set_cur_player_screen_size(320,0xf0); - set_video2_width_height(320,0xf0); - set_cur_player_viewport_size(0,0); - set_video2_ulx_uly(0,0); - uVar4 = extraout_a1_00; - } - else { - puVar2 = (undefined1 *)get_video_settings2_frameb(); - if (puVar2 == cfb_16_b) { - set_video_settings2_frameb((int)ptr_menu_videobuffer); - } - video_related_21((f32)flt_80051B44); - set_video2_text_clip_size(0x1b8,0x14a); - set_video2_settings_offset_18_1A(0x1b8,0x14a); - set_cur_player_screen_size(0x1b8,0x14a); - set_video2_width_height(0x1b8,0x14a); - set_cur_player_viewport_size(0,0); - set_video2_ulx_uly(0,0); - uVar4 = extraout_a1; - } - if (((-1 < (int)menu_update) || (-1 < (int)maybe_prev_menu)) && - (current_menu != MENU_SWITCH_SCREENS)) { - if (true) { - switch(current_menu) { - case MENU_LEGAL_SCREEN: - update_menu00_legalscreen(); - uVar4 = extraout_a1_01; - break; - case MENU_NINTENDO_LOGO: - update_menu01_nintendo(); - uVar4 = extraout_a1_02; - break; - case MENU_RAREWARE_LOGO: - update_menu02_rareware(); - uVar4 = extraout_a1_03; - break; - case MENU_EYE_INTRO: - update_menu_03_eyeintro(); - uVar4 = extraout_a1_04; - break; - case MENU_GOLDENEYE_LOGO: - update_menu04_goldeneyelogo(); - uVar4 = extraout_a1_05; - break; - case MENU_FILE_SELECT: - update_menu05_filesel(); - uVar4 = extraout_a1_06; - break; - case MENU_MODE_SELECT: - update_menu06_modesel(); - uVar4 = extraout_a1_07; - break; - case MENU_MISSION_SELECT: - update_menu07_missionsel(); - uVar4 = extraout_a1_08; - break; - case MENU_DIFFICULTY: - update_menu08_difficulty(); - uVar4 = extraout_a1_09; - break; - case MENU_007_OPTIONS: - update_menu09_007options(); - uVar4 = extraout_a1_10; - break; - case MENU_BRIEFING: - update_menu0A_briefing(); - uVar4 = extraout_a1_11; - break; - case MENU_MISSION_FAILED: - update_menu0C_missionfailed(); - uVar4 = extraout_a1_12; - break; - case MENU_MISSION_COMPLETE: - update_menu0D_missioncomplete(); - uVar4 = extraout_a1_13; - break; - case MENU_MP_OPTIONS: - update_menu0E_mpoptions(); - uVar4 = extraout_a1_14; - break; - case MENU_MP_CHAR_SELECT: - update_menu0F_mpcharsel(); - uVar4 = extraout_a1_16; - break; - case MENU_MP_HANDICAP: - update_menu10_mphandicap(); - uVar4 = extraout_a1_18; - break; - case MENU_MP_CONTROL_STYLE: - update_menu11_mpcontrols(); - uVar4 = extraout_a1_19; - break; - case MENU_MP_STAGE_SELECT: - update_menu12_mpstage(); - uVar4 = extraout_a1_20; - break; - case MENU_MP_SCENARIO_SELECT: - update_menu13_mpscenario(); - uVar4 = extraout_a1_15; - break; - case MENU_MP_TEAMS: - update_menu14_mpteams(); - uVar4 = extraout_a1_17; - break; - case MENU_CHEAT: - update_menu15_cheat(); - uVar4 = extraout_a1_21; - break; - case MENU_NO_CONTROLLERS: - update_menu16_nocontrollers(); - uVar4 = extraout_a1_22; - break; - case MENU_DISPLAY_CAST: - update_menu18_displaycast(); - uVar4 = extraout_a1_23; - break; - case MENU_SPECTRUM_EMU: - update_menu19_spectrum(); - uVar4 = extraout_a1_24; - } - } - if (-1 < (int)menu_update) { - current_menu = MENU_SWITCH_SCREENS; - reset_menutimer(); - uVar4 = extraout_a1_25; - } - } - MVar1 = maybe_prev_menu; - if (true) { - current_menu = maybe_prev_menu; - maybe_prev_menu = ~MENU_LEGAL_SCREEN; - if (true) { - switch(MVar1) { - case MENU_LEGAL_SCREEN: - init_menu00_legalscreen(); - uVar4 = extraout_a1_26; - break; - case MENU_NINTENDO_LOGO: - init_menu01_nintendo(); - uVar4 = extraout_a1_27; - break; - case MENU_RAREWARE_LOGO: - init_menu02_rareware(); - uVar4 = extraout_a1_28; - break; - case MENU_EYE_INTRO: - init_menu03_eyeintro(); - uVar4 = extraout_a1_29; - break; - case MENU_GOLDENEYE_LOGO: - init_menu04_goldeneyelogo(); - uVar4 = extraout_a1_30; - break; - case MENU_FILE_SELECT: - init_menu05_filesel(); - uVar4 = extraout_a1_31; - break; - case MENU_MODE_SELECT: - init_menu06_modesel(); - uVar4 = extraout_a1_32; - break; - case MENU_MISSION_SELECT: - init_menu07_missionsel(); - uVar4 = extraout_a1_33; - break; - case MENU_DIFFICULTY: - init_menu08_difficulty(); - uVar4 = extraout_a1_34; - break; - case MENU_007_OPTIONS: - init_menu09_007options(); - uVar4 = extraout_a1_35; - break; - case MENU_BRIEFING: - init_menu0A_briefing(); - uVar4 = extraout_a1_36; - break; - case MENU_RUN_STAGE: - init_menu0B_runstage(); - uVar4 = extraout_a1_37; - break; - case MENU_MISSION_FAILED: - init_menu0C_missionfailed(); - uVar4 = extraout_a1_38; - break; - case MENU_MISSION_COMPLETE: - init_menu0D_missioncomplete(); - uVar4 = extraout_a1_39; - break; - case MENU_MP_OPTIONS: - init_menu0E_mpoptions(); - uVar4 = extraout_a1_40; - break; - case MENU_MP_CHAR_SELECT: - init_menu0f_mpcharsel(); - uVar4 = extraout_a1_42; - break; - case MENU_MP_HANDICAP: - init_menu10_mphandicap(); - uVar4 = extraout_a1_44; - break; - case MENU_MP_CONTROL_STYLE: - init_menu11_mpcontrol(); - uVar4 = extraout_a1_45; - break; - case MENU_MP_STAGE_SELECT: - init_menu12_mpstage(); - uVar4 = extraout_a1_46; - break; - case MENU_MP_SCENARIO_SELECT: - init_menu13_mpscenariosel(); - uVar4 = extraout_a1_41; - break; - case MENU_MP_TEAMS: - init_menu14_mpteamsel(); - uVar4 = extraout_a1_43; - break; - case MENU_CHEAT: - init_menu15_cheat(); - uVar4 = extraout_a1_47; - break; - case MENU_NO_CONTROLLERS: - init_menu16_nocontroller(); - uVar4 = extraout_a1_48; - break; - case MENU_DISPLAY_CAST: - init_menu18_displaycast(); - uVar4 = extraout_a1_49; - break; - case MENU_SPECTRUM_EMU: - init_menu19_spectrum(); - uVar4 = extraout_a1_50; - } - } - } - switch(current_menu) { - case MENU_LEGAL_SCREEN: - interface_menu00_legalscreen(ZEXT48(¤t_menu),uVar4); - break; - case MENU_NINTENDO_LOGO: - interface_menu01_nintendo(ZEXT48(¤t_menu),uVar4); - break; - case MENU_RAREWARE_LOGO: - interface_menu02_rareware(); - break; - case MENU_EYE_INTRO: - interface_menu03_eyeintro(); - break; - case MENU_GOLDENEYE_LOGO: - interface_menu04_goldeneyelogo(ZEXT48(¤t_menu),uVar4); - break; - case MENU_FILE_SELECT: - interface_menu05_filesel(); - break; - case MENU_MODE_SELECT: - interface_menu06_modesel(); - break; - case MENU_MISSION_SELECT: - interface_menu07_missionsel(ZEXT48(¤t_menu),uVar4); - break; - case MENU_DIFFICULTY: - interface_menu08_difficulty(); - break; - case MENU_007_OPTIONS: - interface_menu09_007options(ZEXT48(¤t_menu),uVar4); - break; - case MENU_BRIEFING: - interface_menu0A_briefing(ZEXT48(¤t_menu),uVar4); - break; - case MENU_RUN_STAGE: - iVar3 = interface_menu0B_runstage(); - if (iVar3 == 0) { - if (gamemode == GAMEMODE_MULTI) { - set_menu_to_mode(0xe,1); - } - else { - if (selected_stage == LEVELID_CUBA) { - do_extended_cast_display(1); - set_menu_to_mode(0x18,1); - } - else { - set_menu_to_mode(0xc,1); - } - } - } - else { - set_menu_to_mode(0,1); - } - break; - case MENU_MISSION_FAILED: - interface_menu0C_missionfailed(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MISSION_COMPLETE: - interface_menu0D_missioncomplete(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_OPTIONS: - interface_menu0E_mpoptions(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_CHAR_SELECT: - interface_menu0F_mpcharsel(); - break; - case MENU_MP_HANDICAP: - interface_menu10_mphandicap(); - break; - case MENU_MP_CONTROL_STYLE: - interface_menu11_mpcontrols(); - break; - case MENU_MP_STAGE_SELECT: - interface_menu12_mpstage(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_SCENARIO_SELECT: - interface_menu13_mpscenario(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_TEAMS: - interface_menu14_mpteams(ZEXT48(¤t_menu),uVar4); - break; - case MENU_CHEAT: - interface_menu15_cheat(ZEXT48(¤t_menu),uVar4); - break; - case MENU_NO_CONTROLLERS: - interface_menu16_nocontrollers(); - break; - case MENU_SWITCH_SCREENS: - interface_menu17_switchscreens(ZEXT48(¤t_menu),uVar4); - break; - case MENU_DISPLAY_CAST: - interface_menu18_displaycast(ZEXT48(¤t_menu),uVar4); - break; - case MENU_SPECTRUM_EMU: - interface_menu19_spectrum(ZEXT48(¤t_menu),uVar4); - } - return; -} - - - -u32 * menu_jump_constructor_handler(u32 *param_1) - -{ - if (true) { - switch(current_menu) { - case MENU_LEGAL_SCREEN: - param_1 = constructor_menu00_legalscreen(param_1); - break; - case MENU_NINTENDO_LOGO: - param_1 = constructor_menu01_nintendo(param_1); - break; - case MENU_RAREWARE_LOGO: - param_1 = constructor_menu02_rareware(param_1); - break; - case MENU_EYE_INTRO: - param_1 = constructor_menu03_eyeintro(param_1); - break; - case MENU_GOLDENEYE_LOGO: - param_1 = constructor_menu04_goldeneyelogo(param_1); - break; - case MENU_FILE_SELECT: - param_1 = constructor_menu05_filesel(param_1); - break; - case MENU_MODE_SELECT: - param_1 = constructor_menu06_modesel(param_1); - break; - case MENU_MISSION_SELECT: - param_1 = constructor_menu07_missionsel(param_1); - break; - case MENU_DIFFICULTY: - param_1 = constructor_menu08_difficulty(param_1); - break; - case MENU_007_OPTIONS: - param_1 = constructor_menu09_007options(param_1); - break; - case MENU_BRIEFING: - param_1 = constructor_menu0A_briefing(param_1); - break; - case MENU_MISSION_FAILED: - param_1 = constructor_menu0C_missionfailed(param_1); - break; - case MENU_MISSION_COMPLETE: - param_1 = constructor_menu0D_missioncomplete(param_1); - break; - case MENU_MP_OPTIONS: - param_1 = constructor_menu0E_mpoptions(param_1); - break; - case MENU_MP_CHAR_SELECT: - param_1 = constructor_menu0F_mpcharsel(param_1); - break; - case MENU_MP_HANDICAP: - param_1 = constructor_menu10_mphandicap(param_1); - break; - case MENU_MP_CONTROL_STYLE: - param_1 = constructor_menu11_mpcontrol(param_1); - break; - case MENU_MP_STAGE_SELECT: - param_1 = constructor_menu12_mpstage(param_1); - break; - case MENU_MP_SCENARIO_SELECT: - param_1 = constructor_menu13_mpscenario(param_1); - break; - case MENU_MP_TEAMS: - param_1 = constructor_menu14_mpteams(param_1); - break; - case MENU_CHEAT: - param_1 = constructor_menu15_cheat(param_1); - break; - case MENU_NO_CONTROLLERS: - param_1 = constructor_menu16_nocontrollers(param_1); - break; - case MENU_SWITCH_SCREENS: - param_1 = constructor_menu17_switchscreens(param_1); - break; - case MENU_DISPLAY_CAST: - param_1 = constructor_menu18_displaycast(param_1); - break; - case MENU_SPECTRUM_EMU: - param_1 = constructor_menu19_spectrum(param_1); - } - } - return param_1; -} - - - -void proc_7F01B0E0(ushort *param_1,byte *param_2) - -{ - byte bVar1; - byte bVar2; - uint uVar3; - int iVar4; - ushort *puVar5; - - puVar5 = param_1 + 5; - iVar4 = (uint)*param_1 * (uint)param_1[1]; - bVar1 = *(byte *)puVar5; - while( true ) { - bVar2 = *(byte *)((int)puVar5 + 1); - puVar5 = puVar5 + 1; - uVar3 = (uint)bVar1; - iVar4 -= uVar3; - do { - uVar3 -= 1; - *param_2 = bVar2; - param_2 = param_2 + 1; - } while (0 < (int)uVar3); - if (iVar4 < 1) break; - bVar1 = *(byte *)puVar5; - } - return; -} - - - -void proc_7F01B134(ushort *param_1,ushort *param_2) - -{ - byte bVar1; - byte bVar2; - byte bVar3; - uint uVar4; - int iVar5; - ushort *puVar6; - - iVar5 = (uint)*param_1 * (uint)param_1[1]; - bVar1 = *(byte *)(param_1 + 6); - puVar6 = param_1 + 5; - while( true ) { - bVar2 = *(byte *)((int)puVar6 + 3); - bVar3 = *(byte *)((int)puVar6 + 1); - uVar4 = (uint)*(byte *)puVar6; - iVar5 -= uVar4; - do { - uVar4 -= 1; - *param_2 = (ushort)(((int)(uint)bVar2 >> 3) << 0xb) | (ushort)(((int)(uint)bVar1 >> 3) << 6) | - (ushort)(((int)(uint)bVar3 >> 3) << 1) | 1; - param_2 = param_2 + 1; - } while (0 < (int)uVar4); - if (iVar5 < 1) break; - bVar1 = *(byte *)(puVar6 + 3); - puVar6 = puVar6 + 2; - } - return; -} - - - -void proc_7F01B1C8(ushort *param_1,byte *param_2) - -{ - byte bVar1; - byte bVar2; - byte bVar3; - uint uVar4; - int iVar5; - ushort *puVar6; - - puVar6 = param_1 + 5; - iVar5 = (uint)*param_1 * (uint)param_1[1]; - bVar1 = *(byte *)puVar6; - while( true ) { - bVar2 = *(byte *)((int)puVar6 + 1); - bVar3 = *(byte *)(puVar6 + 1); - uVar4 = (uint)bVar1; - iVar5 -= uVar4; - bVar1 = *(byte *)((int)puVar6 + 3); - puVar6 = puVar6 + 2; - do { - uVar4 -= 1; - *param_2 = bVar1; - param_2[1] = bVar3; - param_2[2] = bVar2; - param_2[3] = 0xff; - param_2 = param_2 + 4; - } while (0 < (int)uVar4); - if (iVar5 < 1) break; - bVar1 = *(byte *)puVar6; - } - return; -} - - - -undefined4 * -proc_7F01B240(undefined4 *param_1,int param_2,longlong param_3,int *param_4,int *param_5) - -{ - float fVar1; - float fVar2; - int iVar3; - int iVar4; - int iVar5; - float fVar6; - uint uVar7; - uint uVar8; - uint uVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - - fVar2 = flt_80051CF0; - flt_8002BB00 = (float)*param_4; - flt_8002BB04 = (float)param_4[1]; - flt_8002BB0C = (float)*param_5; - flt_8002BB10 = (float)param_5[1]; - flt_8002BB14 = (float)param_5[2]; - flt_8002BB08 = (float)param_4[2]; - fVar12 = flt_8002BB10 - flt_8002BB04; - fVar13 = flt_8002BB14 - flt_8002BB08; - fVar11 = flt_8002BB0C - flt_8002BB00; - iVar5 = 1; - iVar3 = 0; - do { - iVar4 = iVar5; - fVar10 = (float)iVar3; - *param_1 = 0xfd900000; - param_1[1] = param_2; - param_1[3] = 0x7080200; - param_1[2] = 0xf5900000; - param_1[4] = 0xe6000000; - param_1[5] = 0; - param_1[7] = 0x70db026; - param_1[6] = 0xf3000000; - param_1[9] = 0; - param_1[8] = 0xe7000000; - param_1[0xb] = 0x80200; - param_1[10] = 0xf5886e00; - param_1[0xc] = 0xf2000000; - param_1[0xd] = 0x6dc000; - fVar6 = (fVar11 * fVar10) / fVar2 + flt_8002BB00; - param_1[0xe] = 0xfa000000; - if (false) { - fVar1 = ROUND(fVar6); - } - else { - fVar1 = FLOOR(fVar6); - } - uVar7 = (uint)fVar1; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01b454; - uVar7 = (int)fVar6 | 0x80000000; - } - else { - if ((int)uVar7 < 0) { -LAB_7f01b454: - uVar7 = 0xffffffff; - } - } - fVar6 = flt_8002BB04 + (fVar12 * fVar10) / fVar2; - if (false) { - fVar1 = ROUND(fVar6); - } - else { - fVar1 = FLOOR(fVar6); - } - uVar8 = (uint)fVar1; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01b4ec; - uVar8 = (int)fVar6 | 0x80000000; - } - else { - if ((int)uVar8 < 0) { -LAB_7f01b4ec: - uVar8 = 0xffffffff; - } - } - fVar6 = flt_8002BB08 + (fVar13 * fVar10) / fVar2; - if (false) { - fVar10 = ROUND(fVar6); - } - else { - fVar10 = FLOOR(fVar6); - } - uVar9 = (uint)fVar10; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01b588; - uVar9 = (int)fVar6 | 0x80000000; - } - else { - if ((int)uVar9 < 0) { -LAB_7f01b588: - uVar9 = 0xffffffff; - } - } - param_1[0xf] = uVar7 << 0x18 | (uVar8 & 0xff) << 0x10 | (uVar9 & 0xff) << 8 | 0xff; - if (param_3 < 0) { - param_1[0x11] = (iVar3 + 0x10U & 0x3ff) << 2; - param_1[0x10] = (iVar3 + 0x11) * 4 - 1U & 0xfff | 0xe46df000; - param_1[0x13] = (uint)param_3 * -0x200000; - param_1[0x12] = 0xb4000000; - param_1[0x15] = 0x4000400; - param_1[0x14] = 0xb3000000; - } - else { - param_1[0x10] = (iVar3 + 0x11) * 4 - 1U & 0xfff | 0xe46df000; - param_1[0x11] = ((uint)param_3 & 0x3ff) << 0xe | (iVar3 + 0x10) * 4 & 0xfffU; - param_1[0x13] = 0; - param_1[0x12] = 0xb4000000; - param_1[0x15] = 0x4000400; - param_1[0x14] = 0xb3000000; - } - param_1 = param_1 + 0x16; - iVar5 = iVar4 + 1; - param_2 += 0x1b8; - iVar3 = iVar4; - if (299 < iVar5) { - return param_1; - } - } while( true ); -} - - - -undefined4 * proc_7F01B6E0(undefined4 *param_1,int param_2,int param_3) - -{ - float fVar1; - int iVar2; - int iVar3; - int iVar4; - float fVar5; - float fVar6; - uint uVar7; - uint uVar8; - uint uVar9; - - dword_8002BB18 = (float)param_3; - iVar4 = 1; - iVar2 = 0; - dword_8002BB24 = dword_8002BB18; - dword_8002BB28 = dword_8002BB18; - dword_8002BB2C = dword_8002BB18; - do { - iVar3 = iVar4; - fVar5 = (float)iVar2; - *param_1 = 0xfd100000; - param_1[1] = param_2; - param_1[3] = 0x7080200; - param_1[2] = 0xf5100000; - param_1[4] = 0xe6000000; - param_1[5] = 0; - param_1[7] = 0x713f01a; - param_1[6] = 0xf3000000; - param_1[9] = 0; - param_1[8] = 0xe7000000; - param_1[0xb] = 0x80200; - param_1[10] = 0xf510a000; - param_1[0xc] = 0xf2000000; - param_1[0xd] = 0x4fc000; - fVar6 = ((dword_8002BB18 - dword_8002BB18) * fVar5) / 217.00000000 + dword_8002BB18; - param_1[0xe] = 0xfa000000; - if (false) { - fVar1 = ROUND(fVar6); - } - else { - fVar1 = FLOOR(fVar6); - } - uVar7 = (uint)fVar1; - param_2 += 0x280; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01b8cc; - uVar7 = (int)fVar6 | 0x80000000; - } - else { - if ((int)uVar7 < 0) { -LAB_7f01b8cc: - uVar7 = 0xffffffff; - } - } - fVar6 = dword_8002BB18 + ((dword_8002BB18 - dword_8002BB18) * fVar5) / 217.00000000; - if (false) { - fVar1 = ROUND(fVar6); - } - else { - fVar1 = FLOOR(fVar6); - } - uVar8 = (uint)fVar1; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01b964; - uVar8 = (int)fVar6 | 0x80000000; - } - else { - if ((int)uVar8 < 0) { -LAB_7f01b964: - uVar8 = 0xffffffff; - } - } - fVar5 = dword_8002BB18 + ((dword_8002BB18 - dword_8002BB18) * fVar5) / 217.00000000; - if (false) { - fVar6 = ROUND(fVar5); - } - else { - fVar6 = FLOOR(fVar5); - } - uVar9 = (uint)fVar6; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f01ba00; - uVar9 = (int)fVar5 | 0x80000000; - } - else { - if ((int)uVar9 < 0) { -LAB_7f01ba00: - uVar9 = 0xffffffff; - } - } - param_1[0xf] = uVar7 << 0x18 | (uVar8 & 0xff) << 0x10 | (uVar9 & 0xff) << 8 | 0xff; - param_1[0x11] = (iVar2 + 0xcU & 0x3ff) << 2; - param_1[0x10] = (iVar2 + 0xd) * 4 - 1U & 0xfff | 0xe44ff000; - iVar4 = iVar3 + 1; - param_1[0x13] = 0; - param_1[0x12] = 0xb4000000; - param_1[0x15] = 0x4000400; - param_1[0x14] = 0xb3000000; - param_1 = param_1 + 0x16; - iVar2 = iVar3; - if (0xd9 < iVar4) { - dword_8002BB1C = dword_8002BB18; - dword_8002BB20 = dword_8002BB18; - return param_1; - } - } while( true ); -} - - - -void proc_7F01BAE0(short *param_1,int param_2) - -{ - float fVar1; - short sVar2; - short *psVar3; - int iVar4; - short sVar5; - float fVar6; - float fVar7; - undefined uVar8; - float __x; - - fVar1 = flt_80051D00; - iVar4 = 0; - if (-1 < param_2) { - do { - __x = ((float)iVar4 * fVar1) / (float)param_2; - fVar6 = sinf(__x); - fVar7 = cosf(__x); - sVar5 = (short)(int)(fVar6 * 64.00000000); - *param_1 = sVar5; - param_1[2] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[5] = 0; - *(undefined *)(param_1 + 6) = 0xff; - *(undefined *)((int)param_1 + 0xd) = 0xff; - *(undefined *)(param_1 + 7) = 0xff; - sVar2 = (short)(int)(fVar7 * -64.00000000); - param_1[1] = sVar2; - fVar6 = cosf(__x); - fVar6 = 143.00000000 - fVar6 * -111.00000000; - if (false) { - fVar7 = ROUND(fVar6); - } - else { - fVar7 = FLOOR(fVar6); - } - uVar8 = (undefined)(int)fVar7; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01bc50; - uVar8 = (undefined)(int)fVar6; - } - else { - if ((int)fVar7 < 0) { -LAB_7f01bc50: - uVar8 = 0xff; - } - } - *(undefined *)(param_1 + 6) = uVar8; - fVar6 = cosf(__x); - fVar6 = 143.00000000 - fVar6 * -111.00000000; - if (false) { - fVar7 = ROUND(fVar6); - } - else { - fVar7 = FLOOR(fVar6); - } - uVar8 = (undefined)(int)fVar7; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01bce8; - uVar8 = (undefined)(int)fVar6; - } - else { - if ((int)fVar7 < 0) { -LAB_7f01bce8: - uVar8 = 0xff; - } - } - *(undefined *)((int)param_1 + 0xd) = uVar8; - fVar6 = cosf(__x); - fVar6 = 143.00000000 - fVar6 * -111.00000000; - if (false) { - fVar7 = ROUND(fVar6); - } - else { - fVar7 = FLOOR(fVar6); - } - uVar8 = (undefined)(int)fVar7; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01bd80; - uVar8 = (undefined)(int)fVar6; - } - else { - if ((int)fVar7 < 0) { -LAB_7f01bd80: - uVar8 = 0xff; - } - } - *(undefined *)(param_1 + 7) = uVar8; - *(undefined *)((int)param_1 + 0xf) = 0; - psVar3 = param_1 + 8; - if ((iVar4 != 0) && (iVar4 < param_2)) { - *psVar3 = -sVar5; - param_1[9] = sVar2; - param_1[10] = 0; - param_1[0xb] = 0; - param_1[0xc] = 0; - param_1[0xd] = 0; - *(undefined *)(param_1 + 0xe) = 0xff; - *(undefined *)((int)param_1 + 0x1d) = 0xff; - *(undefined *)(param_1 + 0xf) = 0xff; - fVar6 = cosf(__x); - fVar6 = 143.00000000 - fVar6 * -111.00000000; - if (false) { - fVar7 = ROUND(fVar6); - } - else { - fVar7 = FLOOR(fVar6); - } - uVar8 = (undefined)(int)fVar7; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01be54; - uVar8 = (undefined)(int)fVar6; - } - else { - if ((int)fVar7 < 0) { -LAB_7f01be54: - uVar8 = 0xff; - } - } - *(undefined *)(param_1 + 0xe) = uVar8; - fVar6 = cosf(__x); - fVar6 = 143.00000000 - fVar6 * -111.00000000; - if (false) { - fVar7 = ROUND(fVar6); - } - else { - fVar7 = FLOOR(fVar6); - } - uVar8 = (undefined)(int)fVar7; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01beec; - uVar8 = (undefined)(int)fVar6; - } - else { - if ((int)fVar7 < 0) { -LAB_7f01beec: - uVar8 = 0xff; - } - } - *(undefined *)((int)param_1 + 0x1d) = uVar8; - fVar6 = cosf(__x); - fVar6 = 143.00000000 - fVar6 * -111.00000000; - if (false) { - fVar7 = ROUND(fVar6); - } - else { - fVar7 = FLOOR(fVar6); - } - uVar8 = (undefined)(int)fVar7; - if (false) { - if (false) { - fVar6 = ROUND(fVar6 - 2147483648.00000000); - } - else { - fVar6 = FLOOR(fVar6 - 2147483648.00000000); - } - if (false) goto LAB_7f01bf84; - uVar8 = (undefined)(int)fVar6; - } - else { - if ((int)fVar7 < 0) { -LAB_7f01bf84: - uVar8 = 0xff; - } - } - *(undefined *)(param_1 + 0xf) = uVar8; - *(undefined *)((int)param_1 + 0x1f) = 0; - psVar3 = param_1 + 0x10; - } - iVar4 += 2; - param_1 = psVar3; - } while (iVar4 <= param_2); - } - return; -} - - - -uint * proc_7F01BFF8(uint *param_1,uint param_2,int param_3) - -{ - bool bVar1; - int iVar2; - uint *puVar3; - uint uVar4; - - bVar1 = param_3 < 0x11; - while( true ) { - if (bVar1) { - uVar4 = SEXT14((char)param_3); - } - else { - uVar4 = 0x10; - } - param_1[1] = param_2; - *param_1 = (uVar4 - 1 & 0xf) << 0x14 | 0x4000000 | (uVar4 & 0xfff) << 4; - param_2 += 0xe0; - iVar2 = (int)((uVar4 - 3) * 0x1000000) >> 0x18; - param_1 = param_1 + 2; - do { - puVar3 = param_1; - uVar4 = iVar2 * 10; - *puVar3 = 0xbf000000; - param_1 = puVar3 + 2; - iVar2 = (iVar2 + -1) * 0x1000000 >> 0x18; - puVar3[1] = (uVar4 & 0xff) << 0x10 | (uVar4 + 10 & 0xff) << 8 | uVar4 + 0x14 & 0xff; - } while (-1 < iVar2); - param_3 += -0xe; - if (param_3 < 3) break; - bVar1 = param_3 < 0x11; - } - *param_1 = 0xb8000000; - puVar3[3] = 0; - return puVar3 + 4; -} - - - -undefined4 * insert_imageDL(undefined4 *param_1) - -{ - short sVar2; - void *virtualAddress; - u32 uVar1; - short sVar3; - - param_1[1] = 0x300000; - *param_1 = 0xba001402; - sVar2 = get_video2_settings_txtClipW(); - param_1[2] = (int)sVar2 - 1U & 0xfff | 0xff100000; - virtualAddress = (void *)get_video_settings2_frameb(); - uVar1 = osVirtualToPhysical(virtualAddress); - param_1[3] = uVar1; - param_1[4] = 0xf7000000; - param_1[5] = 0x10001; - sVar2 = get_video2_settings_txtClipW(); - sVar3 = get_video2_settings_txtClipH(); - param_1[6] = ((int)sVar3 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar2 - 1U & 0x3ff) << 0xe; - param_1[7] = 0; - return param_1 + 8; -} - - - -undefined4 * proc_7F01C1A4(undefined4 *param_1) - -{ - u32 uVar1; - - *param_1 = 0x1030040; - uVar1 = osVirtualToPhysical(matrix_buffer_gunbarrel_0); - param_1[1] = uVar1; - param_1[2] = 0x1020040; - uVar1 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2)); - param_1[3] = uVar1; - param_1[5] = 0; - param_1[4] = 0xe7000000; - param_1[6] = 0xba001402; - param_1[7] = 0; - param_1[8] = 0xb900031d; - param_1[9] = 0x552048; - param_1[0xb] = 0x204; - param_1[10] = 0xb7000000; - return param_1 + 0xc; -} - - - -ulonglong die_blood_image_routine(void) - -{ - byte *in_v0_lo; - byte *pbVar1; - longlong in_a0; - char cStack1; - - if (in_a0 == 0) { - pPlayer->bloodcnt = -0x7ffd44d0; - } - else { - if (in_a0 == 1) { - in_v0_lo = (byte *)pPlayer->field_11AC; - if (in_v0_lo < &dword_8002C50C) { - *(byte **)&pPlayer->bloodcnt = in_v0_lo; - } - } - } - pPlayer->field_11B8 = 1 - pPlayer->field_11B8; - proc_7F0BD714(0x1e00); - *(byte **)(&pPlayer->field_11B0 + pPlayer->field_11B8) = in_v0_lo; - proc_7F0BD714(0x1e00); - pbVar1 = decrypt_bleeding_animation_data((char *)pPlayer->bloodcnt,0x50,0x60,in_v0_lo,&cStack1); - *(byte **)&pPlayer->field_11AC = pbVar1; - proc_7F01D16C(in_v0_lo,0x50,0x60,(undefined *)(&pPlayer->field_11B0)[pPlayer->field_11B8]); - proc_7F01D02C((&pPlayer->field_11B0)[pPlayer->field_11B8],0x50, - (&pPlayer->field_11B0)[pPlayer->field_11B8]); - proc_7F01CEEC((&pPlayer->field_11B0)[pPlayer->field_11B8],0x50, - (&pPlayer->field_11B0)[pPlayer->field_11B8]); - proc_7F01CC94((byte *)(&pPlayer->field_11B0)[pPlayer->field_11B8],0x1e00, - (byte *)(&pPlayer->field_11B0)[pPlayer->field_11B8]); - return (ulonglong)((undefined *)pPlayer->field_11AC < &dword_8002C50C) ^ 1; -} - - - -undefined4 * proc_7F01C400(undefined4 *param_1) - -{ - undefined4 *puVar1; - short sVar2; - short sVar3; - - *param_1 = 0xba000e02; - param_1[1] = 0; - param_1[3] = 0x2000; - param_1[2] = 0xba000c02; - puVar1 = proc_7F01C1A4(param_1 + 4); - *puVar1 = 0xbb000001; - puVar1[1] = 0x80008000; - puVar1[2] = 0xb900031d; - puVar1[3] = 0x504340; - puVar1[4] = 0xfc119623; - puVar1[5] = 0xff2fffff; - puVar1[6] = 0xba000602; - puVar1[7] = 0; - puVar1[8] = 0xfa000000; - puVar1[9] = 0x960000b4; - puVar1[10] = 0xba001301; - puVar1[0xb] = 0; - puVar1[0xc] = 0xfd900000; - puVar1[0xd] = (&pPlayer->field_11B0)[pPlayer->field_11B8] + -0x80000000; - puVar1[0xe] = 0xf5900000; - puVar1[0x10] = 0xe6000000; - puVar1[0x12] = 0xf3000000; - puVar1[0x13] = 0x777f156; - puVar1[0xf] = 0x7080200; - puVar1[0x14] = 0xe7000000; - puVar1[0x17] = 0x80200; - puVar1[0x16] = 0xf5800c00; - puVar1[0x18] = 0xf2000000; - puVar1[0x19] = 0x17c13c; - puVar1[0x15] = 0; - puVar1[0x11] = 0; - sVar2 = get_video2_settings_txtClipW(); - sVar3 = get_video2_settings_txtClipH(); - puVar1[0x1a] = (int)sVar3 * 4 - 1U & 0xfff | 0xe4000000 | ((int)sVar2 * 4 - 1U & 0xfff) << 0xc; - puVar1[0x1b] = 0; - puVar1[0x1c] = 0xb4000000; - puVar1[0x1d] = 0; - puVar1[0x1e] = 0xb3000000; - sVar2 = get_video2_settings_txtClipW(); - sVar3 = get_video2_settings_txtClipH(); - if (sVar3 == 0) { - trap(0x1c00); - } - if ((sVar3 == -1) && (false)) { - trap(0x1800); - } - puVar1[0x1f] = 0x14000 / (int)sVar3 & 0xffffU | 0x18000 / (int)sVar2 << 0x10; - if (sVar2 == 0) { - trap(0x1c00); - } - if ((sVar2 == -1) && (false)) { - trap(0x1800); - } - return puVar1 + 0x20; -} - - - -undefined4 * proc_7F01C670(undefined4 *param_1) - -{ - short sVar1; - short sVar2; - short sVar3; - short sVar4; - int iVar5; - - *param_1 = 0xba000e02; - param_1[1] = 0; - param_1[2] = 0xba000c02; - param_1[3] = 0x2000; - param_1[4] = 0xba001402; - param_1[5] = 0; - param_1[7] = 0x204; - param_1[6] = 0xb7000000; - param_1[8] = 0xbb000001; - param_1[9] = 0x80008000; - param_1[10] = 0xb900031d; - param_1[0xb] = 0x504340; - param_1[0xd] = 0xff2fffff; - param_1[0xc] = 0xfc119623; - param_1[0xe] = 0xba000602; - param_1[0xf] = 0; - param_1[0x10] = 0xfa000000; - param_1[0x11] = 0x960000b4; - param_1[0x12] = 0xba001301; - param_1[0x13] = 0; - param_1[0x14] = 0xfd900000; - param_1[0x15] = (&pPlayer->field_11B0)[pPlayer->field_11B8] + -0x80000000; - param_1[0x16] = 0xf5900000; - param_1[0x17] = 0x7080200; - param_1[0x18] = 0xe6000000; - param_1[0x19] = 0; - param_1[0x1a] = 0xf3000000; - param_1[0x1b] = 0x777f156; - param_1[0x1c] = 0xe7000000; - param_1[0x1d] = 0; - param_1[0x1f] = 0x80200; - param_1[0x1e] = 0xf5800c00; - param_1[0x20] = 0xf2000000; - param_1[0x21] = 0x17c13c; - sVar1 = get_video2_settings_width(); - sVar2 = get_video2_settings_ulx(); - sVar3 = get_video2_settings_uly(); - sVar4 = get_video2_settings_height(); - param_1[0x22] = - ((int)sVar4 + (int)sVar3) * 4 - 1U & 0xfff | 0xe4000000 | - (((int)sVar2 + (int)sVar1) * 4 - 1U & 0xfff) << 0xc; - sVar1 = get_video2_settings_ulx(); - sVar2 = get_video2_settings_uly(); - param_1[0x23] = ((int)sVar2 & 0x3ffU) << 2 | ((int)sVar1 & 0x3ffU) << 0xe; - param_1[0x24] = 0xb4000000; - param_1[0x25] = 0; - param_1[0x26] = 0xb3000000; - sVar1 = get_video2_settings_width(); - iVar5 = (int)sVar1; - sVar1 = get_video2_settings_height(); - if (sVar1 == 0) { - trap(0x1c00); - } - if ((sVar1 == -1) && (false)) { - trap(0x1800); - } - param_1[0x27] = 0x14000 / (int)sVar1 & 0xffffU | 0x18000 / iVar5 << 0x10; - param_1[0x28] = 0xe7000000; - param_1[0x29] = 0; - if (iVar5 == 0) { - trap(0x1c00); - } - if ((iVar5 == -1) && (false)) { - trap(0x1800); - } - param_1[0x2b] = 0x40; - param_1[0x2a] = 0xba000602; - param_1[0x2d] = 0x80000; - param_1[0x2c] = 0xba001301; - return param_1 + 0x2e; -} - - - -undefined4 * proc_7F01CA18(undefined4 *param_1) - -{ - undefined4 *puVar1; - short sVar2; - short sVar3; - - puVar1 = proc_7F01C1A4(param_1); - *puVar1 = 0xb900031d; - puVar1[1] = 0x504340; - puVar1[2] = 0xfcffffff; - puVar1[3] = 0xfffdf6fb; - puVar1[4] = 0xfa000000; - puVar1[5] = 0x960000b4; - puVar1[6] = 0xba000602; - puVar1[7] = 0; - sVar2 = get_video2_settings_txtClipW(); - sVar3 = get_video2_settings_txtClipH(); - puVar1[8] = ((int)sVar3 & 0x3ffU) << 2 | 0xf6000000 | ((int)sVar2 & 0x3ffU) << 0xe; - puVar1[9] = 0; - return puVar1 + 10; -} - - - -byte * decrypt_bleeding_animation_data - (char *param_1,byte param_2,uint param_3,byte *param_4,char *param_5) - -{ - char cVar1; - char cVar2; - char cVar3; - byte bVar5; - uint uVar4; - byte *pbVar6; - byte bVar7; - char cVar8; - byte bVar9; - - cVar1 = *param_1; - param_3 &= 0xff; - *param_5 = cVar1; - bVar5 = param_1[1]; - pbVar6 = (byte *)(param_1 + 1); - while( true ) { - pbVar6 = pbVar6 + 1; - bVar9 = 0xff; - if (bVar5 == 0xff) { - bVar5 = *pbVar6; - bVar7 = 0; - pbVar6 = pbVar6 + 2; - while (bVar5 != 0xff) { - bVar7 += bVar5; - while (bVar5 != 0) { - bVar5 -= 1; - *param_4 = bVar9; - param_4 = param_4 + 1; - } - bVar5 = *pbVar6; - bVar9 ^= 0xff; - pbVar6 = pbVar6 + 1; - } - while (bVar7 < param_2) { - bVar7 += 1; - *param_4 = bVar9; - param_4 = param_4 + 1; - } - param_3 -= 1; - } - else { - cVar8 = cVar1 + (bVar5 & 0x1f); - uVar4 = ((int)(uint)bVar5 >> 5) + 1; - param_3 -= uVar4; - cVar2 = cVar8; - do { - while (cVar3 = param_2 - cVar8, cVar2 != '\0') { - *param_4 = 0xff; - param_4 = param_4 + 1; - cVar2 = cVar2 + -1; - } - while (cVar3 != '\0') { - *param_4 = 0; - param_4 = param_4 + 1; - cVar3 = cVar3 + -1; - } - uVar4 = uVar4 - 1 & 0xff; - cVar2 = cVar8; - } while (uVar4 != 0); - } - param_3 &= 0xff; - if (param_3 == 0) break; - bVar5 = *pbVar6; - pbVar6 = pbVar6; - } - return pbVar6; -} - - - -void proc_7F01CC94(byte *param_1,short param_2,byte *param_3) - -{ - if (param_2 != 0) { - do { - param_2 += -1; - *param_3 = (byte)((int)(uint)param_1[1] >> 4) | *param_1 & 0xf0; - param_3 = param_3 + 1; - param_1 = param_1 + 2; - } while (param_2 != 0); - } - return; -} - - - -void proc_7F01CCEC(int param_1,uint param_2,uint param_3,int param_4,byte param_5) - -{ - int iVar1; - uint uVar2; - int iVar3; - int iVar4; - int iVar5; - int iVar6; - int iVar7; - int iVar8; - int iVar9; - int iVar10; - int iVar11; - int iVar12; - int iVar13; - uint uVar14; - - param_3 &= 0xff; - param_2 &= 0xff; - iVar1 = 0; - if (param_3 != 0) { - do { - iVar13 = 0; - if (param_2 != 0) { - iVar4 = iVar1 - (uint)param_5; - iVar6 = param_3 - 1; - iVar7 = iVar1 + (uint)param_5; - do { - uVar2 = 0; - iVar3 = 0; - if (iVar4 < 0) { - iVar12 = 0; - } - else { - iVar12 = iVar4 * 0x10000 >> 0x10; - } - iVar8 = iVar7; - if (iVar6 < iVar7) { - iVar8 = iVar6; - } - if (iVar8 < iVar12) { - uVar14 = 0; - } - else { - iVar8 = iVar13 - (uint)param_5; - iVar10 = param_2 - 1; - iVar11 = iVar13 + (uint)param_5; - do { - if (iVar8 < 0) { - iVar9 = 0; - } - else { - iVar9 = iVar8 * 0x10000 >> 0x10; - } - iVar5 = iVar11; - if (iVar10 < iVar11) { - iVar5 = iVar10; - } - if (iVar9 <= iVar5) { - do { - iVar5 = param_1 + iVar9; - iVar9 = (iVar9 + 1) * 0x10000 >> 0x10; - uVar2 += 1; - iVar3 += (uint)*(byte *)(iVar5 + iVar12 * param_2); - iVar5 = iVar11; - if (iVar10 < iVar11) { - iVar5 = iVar10; - } - } while (iVar9 <= iVar5); - } - iVar12 = (int)(short)((short)iVar12 + 1); - iVar9 = iVar7; - if (iVar6 < iVar7) { - iVar9 = iVar6; - } - } while (iVar12 <= iVar9); - uVar14 = uVar2 >> 1; - } - iVar12 = param_4 + iVar13; - iVar13 = (iVar13 + 1) * 0x10000 >> 0x10; - if (uVar2 == 0) { - trap(0x1c00); - } - *(undefined *)(iVar12 + iVar1 * param_2) = (char)((uVar14 + iVar3) / uVar2); - } while (iVar13 < (int)param_2); - } - iVar1 = (iVar1 + 1) * 0x10000 >> 0x10; - } while (iVar1 < (int)param_3); - } - return; -} - - - -void proc_7F01CEEC(int param_1,int param_2,int param_3) - -{ - byte *pbVar1; - undefined *puVar2; - int iVar3; - byte *pbVar4; - int iVar5; - undefined *puVar6; - - pbVar4 = (byte *)(param_1 + 0x61); - puVar6 = (undefined *)(param_3 + 0x61); - iVar3 = 1; - if (1 < param_2 + -1) { - do { - *puVar6 = (char)((int)((uint)pbVar4[-0x60] + (uint)pbVar4[-1] + (uint)*pbVar4 + - (uint)pbVar4[-0x61] + 2) >> 2); - puVar6[1] = (char)((int)((uint)pbVar4[-0x5f] + (uint)*pbVar4 + (uint)pbVar4[1] + - (uint)pbVar4[-0x60] + 2) >> 2); - iVar5 = 3; - pbVar1 = pbVar4 + 2; - puVar2 = puVar6 + 2; - do { - puVar6 = puVar2; - pbVar4 = pbVar1; - *puVar6 = (char)((int)((uint)pbVar4[-0x60] + (uint)pbVar4[-1] + (uint)*pbVar4 + - (uint)pbVar4[-0x61] + 2) >> 2); - puVar6[1] = (char)((int)((uint)pbVar4[-0x5f] + (uint)*pbVar4 + (uint)pbVar4[1] + - (uint)pbVar4[-0x60] + 2) >> 2); - puVar6[2] = (char)((int)((uint)pbVar4[-0x5e] + (uint)pbVar4[1] + (uint)pbVar4[2] + - (uint)pbVar4[-0x5f] + 2) >> 2); - iVar5 += 4; - puVar6[3] = (char)((int)((uint)pbVar4[-0x5d] + (uint)pbVar4[2] + (uint)pbVar4[3] + - (uint)pbVar4[-0x5e] + 2) >> 2); - pbVar1 = pbVar4 + 4; - puVar2 = puVar6 + 4; - } while (iVar5 != 0x5f); - iVar3 += 1; - puVar6 = puVar6 + 6; - pbVar4 = pbVar4 + 6; - } while (iVar3 != param_2 + -1); - } - return; -} - - - -void proc_7F01D02C(int param_1,int param_2,int param_3) - -{ - byte *pbVar1; - undefined *puVar2; - int iVar3; - byte *pbVar4; - int iVar5; - undefined *puVar6; - - pbVar4 = (byte *)(param_1 + 0x61); - puVar6 = (undefined *)(param_3 + 0x61); - iVar3 = 1; - if (1 < param_2 + -1) { - do { - *puVar6 = (char)((int)((uint)pbVar4[0x60] + (uint)pbVar4[1] + (uint)*pbVar4 + - (uint)pbVar4[0x61] + 2) >> 2); - puVar6[1] = (char)((int)((uint)pbVar4[0x61] + (uint)pbVar4[2] + (uint)pbVar4[1] + - (uint)pbVar4[0x62] + 2) >> 2); - iVar5 = 3; - pbVar1 = pbVar4 + 2; - puVar2 = puVar6 + 2; - do { - puVar6 = puVar2; - pbVar4 = pbVar1; - *puVar6 = (char)((int)((uint)pbVar4[0x60] + (uint)pbVar4[1] + (uint)*pbVar4 + - (uint)pbVar4[0x61] + 2) >> 2); - puVar6[1] = (char)((int)((uint)pbVar4[0x61] + (uint)pbVar4[2] + (uint)pbVar4[1] + - (uint)pbVar4[0x62] + 2) >> 2); - puVar6[2] = (char)((int)((uint)pbVar4[0x62] + (uint)pbVar4[3] + (uint)pbVar4[2] + - (uint)pbVar4[99] + 2) >> 2); - iVar5 += 4; - puVar6[3] = (char)((int)((uint)pbVar4[99] + (uint)pbVar4[4] + (uint)pbVar4[3] + - (uint)pbVar4[100] + 2) >> 2); - pbVar1 = pbVar4 + 4; - puVar2 = puVar6 + 4; - } while (iVar5 != 0x5f); - iVar3 += 1; - puVar6 = puVar6 + 6; - pbVar4 = pbVar4 + 6; - } while (iVar3 != param_2 + -1); - } - return; -} - - - -void proc_7F01D16C(undefined *param_1,int param_2,int param_3,undefined *param_4) - -{ - undefined uVar1; - undefined *puVar2; - undefined *puVar3; - undefined *puVar4; - - puVar3 = param_1 + param_2; - puVar2 = param_1 + param_2 * param_3; - puVar4 = puVar3; - do { - do { - uVar1 = *param_1; - param_1 = param_1 + 1; - *param_4 = uVar1; - puVar3 = puVar3 + 1; - param_4 = param_4 + param_3; - } while (param_1 < puVar4); - param_4 = param_4 + (1 - param_2 * param_3); - puVar4 = puVar3; - } while (param_1 < puVar2); - return; -} - - - -byte * proc_7F01D1C0(byte *param_1,int param_2,int param_3,byte *param_4) - -{ - byte bVar1; - byte bVar2; - byte *pbVar3; - byte *pbVar4; - uint uVar5; - int iVar6; - int iVar7; - byte bVar9; - int iVar8; - - bVar1 = *param_1; - pbVar3 = param_1 + 1; - do { - bVar2 = *pbVar3; - pbVar4 = pbVar3 + 1; - bVar9 = 0xff; - if (bVar2 == 0xff) { - bVar2 = *pbVar4; - iVar6 = 0; - pbVar4 = pbVar3 + 2; - while (bVar2 != 0xff) { - uVar5 = (uint)bVar2; - iVar6 += uVar5; - if (bVar2 != 0) { - do { - uVar5 -= 1; - *param_4 = bVar9; - param_4 = param_4 + 1; - } while (0 < (int)uVar5); - } - bVar2 = *pbVar4; - bVar9 ^= 0xff; - pbVar4 = pbVar4 + 1; - } - while (iVar6 < param_2) { - iVar6 += 1; - *param_4 = bVar9; - param_4 = param_4 + 1; - } - param_3 += -1; - } - else { - iVar7 = ((uint)bVar2 & 0x1f) + (uint)bVar1; - iVar6 = (uint)(bVar2 >> 5) + 1; - param_3 -= iVar6; - do { - iVar8 = iVar7; - if (iVar7 != 0) { - do { - iVar8 += -1; - *param_4 = 0xff; - param_4 = param_4 + 1; - } while (0 < iVar8); - } - iVar8 = param_2 - iVar7; - while (0 < iVar8) { - iVar8 += -1; - *param_4 = 0; - param_4 = param_4 + 1; - } - iVar6 += -1; - } while (0 < iVar6); - } - pbVar3 = pbVar4; - } while (0 < param_3); - return pbVar4; -} - - - -f32 get_007_reaction_speed(void) - -{ - DIFFICULTY DVar1; - f32 fVar2; - - DVar1 = get_current_difficulty(); - fVar2 = slider_007_mode_reaction; - if (DVar1 != DIFFICULTY_007) { - fVar2 = 0.00000000; - } - return fVar2; -} - - - -f32 get_007_health_mod(void) - -{ - DIFFICULTY DVar1; - f32 fVar2; - - DVar1 = get_current_difficulty(); - fVar2 = slider_007_mode_health; - if (DVar1 != DIFFICULTY_007) { - fVar2 = 1.00000000; - } - return fVar2; -} - - - -f32 get_007_damage_mod(void) - -{ - DIFFICULTY DVar1; - f32 fVar2; - - DVar1 = get_current_difficulty(); - fVar2 = slider_007_mode_accuracy; - if (DVar1 != DIFFICULTY_007) { - fVar2 = 1.00000000; - } - return fVar2; -} - - - -f32 get_007_accuracy_mod(void) - -{ - DIFFICULTY DVar1; - f32 fVar2; - - DVar1 = get_current_difficulty(); - fVar2 = slider_007_mode_damage; - if (DVar1 != DIFFICULTY_007) { - fVar2 = 1.00000000; - } - return fVar2; -} - - - -void end_of_mission_briefing(void) - -{ - short sVar1; - int iVar3; - save_file *folder; - ulonglong uVar2; - - if (((-1 < briefingpage) && (selected_difficulty != DIFFICULTY_007)) && (append_cheat_sp == FALSE) - ) { - sVar1 = (&solo_target_times_ARRAY_8002b564 - [mission_folder_setup_entries[briefingpage].mission_num].agent_time) - [selected_difficulty]; - iVar3 = getMissiontime(); - unlock_stage_in_folder_on_difficulty - (selected_folder_num,(longlong)mission_folder_setup_entries[briefingpage].mission_num, - (longlong)selected_difficulty,iVar3 / 0x3c); - iVar3 = getMissiontime(); - if ((longlong)(iVar3 / 0x3c) <= (longlong)sVar1) { - folder = getEEPROMforFoldernum(selected_folder_num); - uVar2 = check_if_cheat_unlocked - (folder,(longlong)mission_folder_setup_entries[briefingpage].mission_num); - if (uVar2 == 0) { - proc_7F01E760((longlong)(int)selected_folder_num, - (longlong)mission_folder_setup_entries[briefingpage].mission_num); - newcheatunlocked = 1; - return; - } - } - newcheatunlocked = 0; - } - return; -} - - - -void proc_7F01D500(void) - -{ - get_screen_ratio_settings_for_mpgame_from_folder(selected_folder_num); - return; -} - - - -void deleteCurrentSelectedFolder(void) - -{ - delete_update_eeprom_file(selected_folder_num); - return; -} - - - -void copyCurrentEEPROMtoStack(void) - -{ - copy_eeprom_to_stack_set_folder_num(selected_folder_num); - return; -} - - - -u8 getSelectedFolderBond(void) - -{ - u32 uVar1; - u8 bond; - - uVar1 = removed_would_have_returned_bond_for_folder_num(selected_folder_num); - return (u8)uVar1; -} - - - -void set_selected_folder_num(u32 foldernum) - -{ - selected_folder_num = foldernum; - return; -} - - - -void set_selected_difficulty(DIFFICULTY difficulty) - -{ - if (difficulty != DIFFICULTY_AGENT) { - if (difficulty == DIFFICULTY_SECRET) { - selected_difficulty = DIFFICULTY_SECRET; - return; - } - if (difficulty == DIFFICULTY_00) { - selected_difficulty = DIFFICULTY_00; - return; - } - if (difficulty == DIFFICULTY_007) { - selected_difficulty = DIFFICULTY_007; - return; - } - } - selected_difficulty = DIFFICULTY_AGENT; - return; -} - - - -void set_solo_and_ptr_briefing(undefined *param_1) - -{ - gamemode = GAMEMODE_SOLO; - selected_stage = (LEVELID)param_1; - briefingpage = pull_and_display_text_for_folder_a0(param_1); - return; -} - - - -void proc_7F01D61C(undefined4 *param_1) - -{ - copy_eeprom_from_to(selected_folder_num,(int)param_1); - return; -} - - - -void proc_7F01D644(undefined4 *param_1) - -{ - selected_folder_num_copy = selected_folder_num; - selected_folder_num = 100; - copy_eepromfile_a0_from_a1_to_buffer(100,(save_file *)param_1); - return; -} - - - -void store_favorite_weapon_current_player(u32 right,u32 left) - -{ - u32 uVar1; - - uVar1 = get_cur_playernum(); - (&fav_weapon_player1)[uVar1].right = right; - (&fav_weapon_player1)[uVar1].left = left; - return; -} - - - -undefined4 proc_7F01D6C0(void) - -{ - undefined4 uVar1; - - uVar1 = save_7000C6FC(); - return uVar1; -} - - - -void proc_7F01D6E0(void) - -{ - u32 *puVar1; - u32 *puVar2; - save_file *psVar3; - save_file *psVar4; - undefined auStackX0 [16]; - u32 auStack96 [24]; - - psVar3 = &dword_8002C520; - puVar1 = auStack96; - do { - psVar4 = (save_file *)&psVar3->controller_config; - *puVar1 = psVar3->checksum1; - puVar1[1] = psVar3->checksum2; - puVar1[2] = *(u32 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - puVar1 = puVar1 + 3; - } while (psVar4 != &save_file_8002c580); - puVar1 = auStack96; - psVar3 = &save6; - do { - puVar2 = puVar1 + 3; - psVar3->checksum1 = *puVar1; - psVar3->checksum2 = puVar1[1]; - *(u32 *)&psVar3->completion_bitflags = puVar1[2]; - puVar1 = puVar2; - psVar3 = (save_file *)&psVar3->controller_config; - } while (puVar2 != (u32 *)register0x000000ec); - return; -} - - - -int proc_7F01D758(uint *param_1) - -{ - int iVar1; - - iVar1 = proc_7F01D6C0(); - if (iVar1 != 0) { - proc_7F09B600((byte *)(param_1 + 2),(byte *)(param_1 + 8),param_1); - iVar1 = save_7000C808(0,(u8 *)param_1,0x20); - } - return iVar1; -} - - - -void proc_7F01D7A0(uint *param_1) - -{ - int iVar1; - - if ((((uint *)0x8006991f < param_1) && (param_1 <= save_file_80069aa0.field_0x5d + 2)) && - (iVar1 = proc_7F01D6C0(), iVar1 != 0)) { - proc_7F09B600((byte *)(param_1 + 2),(byte *)(param_1 + 0x18),param_1); - save_7000C808((char)((uint)(((int)(param_1 + 0x1ffe59b8) / 0x60) * 0x60) >> 3) + 4,(u8 *)param_1 - ,0x60); - } - return; -} - - - -void proc_7F01D840(uint *param_1) - -{ - u32 *puVar1; - u32 *puVar2; - u32 *puVar3; - save_file *psVar4; - save_file *psVar5; - undefined auStackX0 [16]; - u32 auStack96 [24]; - - puVar2 = auStack96; - psVar4 = &save_file_8002c580; - puVar1 = puVar2; - do { - psVar5 = (save_file *)&psVar4->controller_config; - *puVar1 = psVar4->checksum1; - puVar1[1] = psVar4->checksum2; - puVar1[2] = *(u32 *)&psVar4->completion_bitflags; - psVar4 = psVar5; - puVar1 = puVar1 + 3; - puVar3 = param_1; - } while (psVar5 != &save_file_8002c5e0); - do { - puVar1 = puVar2 + 3; - *puVar3 = *puVar2; - puVar3[1] = puVar2[1]; - puVar3[2] = puVar2[2]; - puVar2 = puVar1; - puVar3 = puVar3 + 3; - } while (puVar1 != (u32 *)register0x000000ec); - proc_7F01D7A0(param_1); - return; -} - - - -u32 getEEPROMFoldernum(save_file *eeprom) - -{ - return (u32)((uint)eeprom->completion_bitflags & 7); -} - - - -void setEEPROMtoFoldernum(save_file *eeprom,byte folder) - -{ - byte bVar1; - - bVar1 = eeprom->completion_bitflags & 0xf8; - eeprom->completion_bitflags = bVar1; - eeprom->completion_bitflags = bVar1 | folder & 7; - return; -} - - - -int set_eeprom_flag_0x18(save_file *folder) - -{ - return (int)((uint)folder->completion_bitflags & 0x18) >> 3; -} - - - -void reset_eeprom_flag_0x18(save_file *folder,int value) - -{ - byte foldernum; - - foldernum = folder->completion_bitflags & 0xe7; - folder->completion_bitflags = foldernum; - folder->completion_bitflags = foldernum | (byte)(value << 3) & 0x18; - return; -} - - - -int get_selected_bond(save_file *folder) - -{ - return (int)((uint)folder->completion_bitflags & 0x60) >> 5; -} - - - -void set_selected_bond(save_file *folder,int bond) - -{ - byte bVar1; - - bVar1 = folder->completion_bitflags & 0x9f; - folder->completion_bitflags = bVar1; - folder->completion_bitflags = bVar1 | (byte)(bond << 5) & 0x60; - return; -} - - - -ulonglong check_if_eeprom_flag_set_0x80(save_file *folder) - -{ - return (ulonglong)((folder->completion_bitflags & 0x80) != 0); -} - - - -void toggle_eeprom_flag_set_0x80(save_file *folder,longlong mode) - -{ - if (mode == 0) { - folder->completion_bitflags = folder->completion_bitflags & 0x7f; - return; - } - folder->completion_bitflags = folder->completion_bitflags | 0x80; - return; -} - - - -ulonglong get_eeprom_stage_complete_time_for_difficulty - (save_file *eepromfile,STAGENUM stage,DIFFICULTY difficulty) - -{ - u32 foldernum; - BOOL BVar1; - int iVar2; - uint uVar3; - uint uVar4; - - if (-1 < (int)stage) { - if (0x13 < (int)stage) { - return 0; - } - if ((-1 < difficulty) && (difficulty < 4)) { - if (difficulty == DIFFICULTY_007) { - foldernum = getEEPROMFoldernum(eepromfile); - BVar1 = is007ModeUnlockedinFolder(foldernum); - if (BVar1 != FALSE) { - return 0x3ff; - } - return 0; - } - uVar3 = (difficulty * 0x14 + stage) * 10; - uVar4 = uVar3 & 7; - iVar2 = (int)uVar3 >> 3; - if (uVar4 == 6) { - iVar2 = (int)&eepromfile->checksum1 + iVar2; - return (ulonglong)*(byte *)(iVar2 + 0x13) | - (longlong)(int)(((uint)*(byte *)(iVar2 + 0x12) & 3) << 8); - } - if (uVar4 != 4) { - if (uVar4 == 2) { - iVar2 = (int)&eepromfile->checksum1 + iVar2; - return (longlong) - (int)((int)((uint)*(byte *)(iVar2 + 0x13) & 0xf0) >> 4 | - ((uint)*(byte *)(iVar2 + 0x12) & 0x3f) << 4); - } - if (uVar4 == 0) { - iVar2 = (int)&eepromfile->checksum1 + iVar2; - return (longlong) - (int)((int)((uint)*(byte *)(iVar2 + 0x13) & 0xc0) >> 6 | - (uint)*(byte *)(iVar2 + 0x12) << 2); - } - return 0; - } - iVar2 = (int)&eepromfile->checksum1 + iVar2; - return (longlong) - (int)((int)((uint)*(byte *)(iVar2 + 0x13) & 0xfc) >> 2 | - ((uint)*(byte *)(iVar2 + 0x12) & 0xf) << 6); - } - } - return 0; -} - - - -void proc_7F01DAE4(int param_1,longlong param_2,longlong param_3,longlong param_4) - -{ - int iVar1; - byte bVar2; - uint uVar3; - uint uVar4; - int iVar5; - byte bVar6; - - iVar1 = (int)param_4; - if ((((-1 < param_2) && (param_2 < 0x14)) && (-1 < param_3)) && (param_3 < 3)) { - if (param_4 == 0) { - iVar1 = 0x4f; - } - else { - if (0x3ff < param_4) { - iVar1 = 0x3ff; - } - } - uVar3 = ((int)param_3 * 0x14 + (int)param_2) * 10; - uVar4 = uVar3 & 7; - iVar5 = (int)uVar3 >> 3; - if (uVar4 == 6) { - param_1 += iVar5; - bVar6 = *(byte *)(param_1 + 0x12) & 0xfc; - *(byte *)(param_1 + 0x12) = bVar6; - *(undefined *)(param_1 + 0x13) = 0; - *(byte *)(param_1 + 0x12) = bVar6 | (byte)((uint)iVar1 >> 8) & 3; - *(undefined *)(param_1 + 0x13) = (char)iVar1; - } - else { - if (uVar4 == 4) { - param_1 += iVar5; - bVar6 = *(byte *)(param_1 + 0x12) & 0xf0; - bVar2 = *(byte *)(param_1 + 0x13) & 3; - *(byte *)(param_1 + 0x12) = bVar6; - *(byte *)(param_1 + 0x13) = bVar2; - *(byte *)(param_1 + 0x12) = bVar6 | (byte)(iVar1 >> 6) & 0xf; - *(byte *)(param_1 + 0x13) = bVar2 | (byte)(iVar1 << 2); - return; - } - if (uVar4 == 2) { - param_1 += iVar5; - bVar6 = *(byte *)(param_1 + 0x12) & 0xc0; - bVar2 = *(byte *)(param_1 + 0x13) & 0xf; - *(byte *)(param_1 + 0x12) = bVar6; - *(byte *)(param_1 + 0x13) = bVar2; - *(byte *)(param_1 + 0x12) = bVar6 | (byte)(iVar1 >> 4) & 0x3f; - *(byte *)(param_1 + 0x13) = bVar2 | (byte)(iVar1 << 4); - return; - } - if (uVar4 == 0) { - param_1 += iVar5; - bVar6 = *(byte *)(param_1 + 0x13) & 0x3f; - *(undefined *)(param_1 + 0x12) = 0; - *(byte *)(param_1 + 0x13) = bVar6; - *(undefined *)(param_1 + 0x12) = (char)(iVar1 >> 2); - *(byte *)(param_1 + 0x13) = bVar6 | (byte)(iVar1 << 6); - return; - } - } - } - return; -} - - - -BOOL doesSaveHaveStageCompletedOnDifficulty(save_file *folder,STAGENUM stage,DIFFICULTY difficulty) - -{ - ulonglong uVar1; - - if (-1 < (int)stage) { - if (0x13 < (int)stage) { - return FALSE; - } - if (-1 < difficulty) { - if (3 < difficulty) { - return FALSE; - } - uVar1 = get_eeprom_stage_complete_time_for_difficulty(folder,stage,difficulty); - return (uint)(uVar1 != 0); - } - } - return FALSE; -} - - - -void proc_7F01DCB0(int param_1,longlong param_2,longlong param_3,int param_4) - -{ - ulonglong uVar1; - - if ((((-1 < param_2) && (param_2 < 0x14)) && (-1 < param_3)) && (param_3 < 4)) { - uVar1 = get_eeprom_stage_complete_time_for_difficulty - ((save_file *)param_1,(STAGENUM)param_2,(DIFFICULTY)param_3); - if ((uVar1 == 0) || ((longlong)param_4 < (longlong)uVar1)) { - proc_7F01DAE4(param_1,(longlong)(int)(STAGENUM)param_2,(longlong)(DIFFICULTY)param_3, - (longlong)param_4); - } - } - return; -} - - - -ulonglong check_if_cheat_unlocked(save_file *folder,longlong cheat) - -{ - if ((-1 < cheat) && (cheat < 0x14)) { - return (ulonglong) - (((longlong)(1 << ((uint)cheat & 0x1f)) & - ((ulonglong)folder->unlocked_cheats1 | - (longlong)(int)((uint)folder->unlocked_cheats3 << 0x18) | - (longlong)(int)((uint)folder->unlocked_cheats3 << 0x10) | - (longlong)(int)((uint)folder->unlocked_cheats2 << 8))) != 0); - } - return 0; -} - - - -void proc_7F01DD74(int param_1,longlong param_2) - -{ - uint uVar1; - int iVar2; - - if ((-1 < param_2) && (param_2 < 0x14)) { - uVar1 = 1 << ((uint)param_2 & 0x1f); - uVar1._3_1_ = (byte)uVar1; - iVar2 = 0; - while (0xff < uVar1) { - uVar1._3_1_ = (byte)(uVar1 >> 8); - iVar2 += 1; - uVar1 = uVar1 >> 8; - } - *(byte *)(param_1 + iVar2 + 0xe) = *(byte *)(param_1 + iVar2 + 0xe) | (byte)uVar1; - } - return; -} - - - -save_file * getEEPROMforFoldernum(u32 foldernum) - -{ - ulonglong uVar1; - u32 uVar2; - save_file *folder; - - folder = &save1; - while ((uVar1 = check_if_eeprom_flag_set_0x80(folder), uVar1 != 0 || - (uVar2 = getEEPROMFoldernum(folder), uVar2 != foldernum))) { - folder = folder + 1; - if (folder == &save6) { - folder = NULL; - if (foldernum == 100) { - folder = &save6; - } - return folder; - } - } - return folder; -} - - - -int proc_7F01DE50(void) - -{ - ulonglong uVar1; - int iVar2; - save_file *folder; - - folder = &save1; - iVar2 = 0; - do { - uVar1 = check_if_eeprom_flag_set_0x80(folder); - if (uVar1 != 0) { - return iVar2; - } - iVar2 += 1; - folder = folder + 1; - } while (iVar2 != 5); - return -1; -} - - - -void proc_7F01DEB4(int param_1) - -{ - int iVar1; - u32 *puVar2; - u32 *puVar3; - save_file *psVar4; - save_file *eeprom; - u32 auStack100 [24]; - u32 uStack4; - - iVar1 = proc_7F01DE50(); - if (-1 < iVar1) { - psVar4 = &save_file_8002c5e0; - puVar2 = auStack100; - do { - eeprom = (save_file *)&psVar4->controller_config; - *puVar2 = psVar4->checksum1; - puVar2[1] = psVar4->checksum2; - puVar2[2] = *(u32 *)&psVar4->completion_bitflags; - psVar4 = eeprom; - puVar2 = puVar2 + 3; - } while (eeprom != (save_file *)&DAT_8002c640); - eeprom = &save1 + iVar1; - puVar2 = auStack100; - psVar4 = eeprom; - do { - puVar3 = puVar2 + 3; - psVar4->checksum1 = *puVar2; - psVar4->checksum2 = puVar2[1]; - *(u32 *)&psVar4->completion_bitflags = puVar2[2]; - puVar2 = puVar3; - psVar4 = (save_file *)&psVar4->controller_config; - } while (puVar3 != &uStack4); - setEEPROMtoFoldernum(eeprom,(byte)param_1); - toggle_eeprom_flag_set_0x80(eeprom,0); - set_selected_bond(eeprom,param_1); - proc_7F01D7A0((uint *)eeprom); - } - return; -} - - - -// WARNING: Could not reconcile some variable overlaps - -void proc_7F01DF90(void) - -{ - bool bVar1; - int iVar3; - ulonglong uVar2; - uint uVar4; - uint uVar5; - save_file *folder; - u32 uVar6; - uint uVar7; - int iVar8; - save_file *psVar9; - byte *pbVar10; - u32 foldernum; - u32 uStack44; - u32 uStack40; - u32 uStack36; - u32 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - byte abStack4 [4]; - - iVar3 = proc_7F01D6C0(); - if (iVar3 != 0) { - save_7000C7BC(0,(save_file *)&uStack36,0x20); - bVar1 = uStack28._0_1_ == 'B'; - proc_7F09B600((byte *)&uStack28,abStack4,&uStack44); - if ((uStack44 != uStack36) || (uStack40 != uStack32)) { - bVar1 = false; - } - if (!bVar1) { - uStack32 = DAT_8002c644; - uStack36 = DAT_8002c640; - uStack28 = flt_8002C648; - uStack24 = dword_8002C64C; - uStack20 = dword_8002C650; - uStack8 = dword_8002C65C; - uStack16 = dword_8002C654; - uStack12 = dword_8002C658; - proc_7F01D758((uint *)(save_file *)&uStack36); - } - save_7000C7BC(4,&save1,0x1e0); - psVar9 = &save_file_80069980; - pbVar10 = &save1.completion_bitflags; - folder = &save1; - do { - bVar1 = true; - proc_7F09B600(pbVar10,(byte *)psVar9,&uStack44); - if (uStack44 == folder->checksum1) { - if (uStack40 != folder->checksum2) { - bVar1 = false; - } - } - else { - bVar1 = false; - } - if (!bVar1) { - proc_7F01D840((uint *)folder); - } - psVar9 = psVar9 + 1; - folder = folder + 1; - pbVar10 = pbVar10 + 0x60; - } while (psVar9 != (save_file *)&end_save_files); - foldernum = 0; - do { - iVar3 = -1; - uVar4 = 0xffffffff; - folder = &save1; - iVar8 = 0; - do { - uVar2 = check_if_eeprom_flag_set_0x80(folder); - if ((uVar2 == 0) && (uVar6 = getEEPROMFoldernum(folder), uVar6 == foldernum)) { - if (iVar3 < 0) { - uVar4 = set_eeprom_flag_0x18(folder); - iVar3 = iVar8; - } - else { - uVar7 = uVar4 + 1 & 3; - if (((int)(uVar4 + 1) < 0) && (uVar7 != 0)) { - uVar7 -= 4; - } - uVar5 = set_eeprom_flag_0x18(folder); - if (uVar5 == uVar7) { - proc_7F01D840((uint *)(&save1 + iVar3)); - iVar3 = iVar8; - uVar4 = uVar5; - } - else { - proc_7F01D840((uint *)folder); - } - } - } - iVar8 += 1; - folder = folder + 1; - } while (iVar8 != 5); - if (iVar3 < 0) { - proc_7F01DEB4(foldernum); - } - foldernum += 1; - } while ((int)foldernum < 4); - foldernum = 0; - do { - folder = getEEPROMforFoldernum(foldernum); - if (folder != NULL) { - uVar6 = get_selected_bond(folder); - save1_selected_bond[foldernum] = uVar6; - } - foldernum += 1; - } while (foldernum != 4); - } - return; -} - - - -BOOL check_if_valid_folder_num(int folder) - -{ - if ((-1 < folder) && (folder < 4)) { - return TRUE; - } - if (folder != 100) { - return FALSE; - } - return TRUE; -} - - - -BOOL doesFolderHaveStageUnlockedAtDifficulty(int foldernum,STAGENUM stageid,DIFFICULTY difficulty) - -{ - BOOL BVar1; - save_file *eeprom; - DIFFICULTY difficulty_00; - STAGENUM stage; - - BVar1 = check_if_valid_folder_num(foldernum); - if (BVar1 == FALSE) { - return FALSE; - } - if (-1 < (int)stageid) { - if (0x13 < (int)stageid) { - return FALSE; - } - if (-1 < difficulty) { - if (3 < difficulty) { - return FALSE; - } - eeprom = getEEPROMforFoldernum(foldernum); - if (eeprom != NULL) { - BVar1 = doesSaveHaveStageCompletedOnDifficulty(eeprom,stageid,difficulty); - if (BVar1 != FALSE) { - return 3; - } - if (((stageid == SP_STAGE_AZTEK) && (difficulty < 1)) || - ((stageid == SP_STAGE_EGYPT && (difficulty < 2)))) { - return FALSE; - } - difficulty_00 = difficulty; - if (difficulty < 4) { - do { - stage = SP_STAGE_DAM; - if (0 < (int)stageid) { - do { - BVar1 = doesSaveHaveStageCompletedOnDifficulty(eeprom,stage,difficulty_00); - if (BVar1 == FALSE) break; - stage += SP_STAGE_FACILITY; - } while (stage != stageid); - } - difficulty_00 += DIFFICULTY_SECRET; - if ((int)stageid <= (int)stage) { - return TRUE; - } - } while (difficulty_00 != 4); - } - if (((difficulty < 3) && ((int)stageid < 0x12)) && (difficulty < 4)) { - difficulty_00 = difficulty; - do { - BVar1 = doesSaveHaveStageCompletedOnDifficulty - (eeprom,stageid + ~SP_STAGE_DAM,difficulty_00); - difficulty_00 += DIFFICULTY_SECRET; - if (BVar1 != FALSE) { - return TRUE; - } - } while (difficulty_00 != 4); - } - stage = SP_STAGE_DAM; - if (difficulty < 3) { - do { - BVar1 = doesSaveHaveStageCompletedOnDifficulty(eeprom,stage,DIFFICULTY_AGENT); - if (BVar1 == FALSE) break; - stage += SP_STAGE_FACILITY; - } while ((int)stage < 0x12); - if (0x11 < (int)stage) { - difficulty_00 = DIFFICULTY_AGENT; - if (0 < difficulty) { - do { - BVar1 = doesSaveHaveStageCompletedOnDifficulty(eeprom,stageid,difficulty_00); - if (BVar1 == FALSE) break; - difficulty_00 += DIFFICULTY_SECRET; - } while (difficulty_00 != difficulty); - } - if (difficulty <= difficulty_00) { - return TRUE; - } - } - } - } - if (stageid == SP_STAGE_DAM) { - return TRUE; - } - BVar1 = get_debug_enable_agent_levels_flag(); - if ((BVar1 != FALSE) && (difficulty == DIFFICULTY_AGENT)) { - return TRUE; - } - BVar1 = get_debug_enable_all_levels_flag(); - if (BVar1 == FALSE) { - return FALSE; - } - return TRUE; - } - } - return FALSE; -} - - - -void proc_7F01E504(uint *param_1,undefined4 *param_2) - -{ - int iVar1; - int iVar2; - save_file *folder; - u32 *puVar3; - u32 *puVar4; - uint uStack8; - - uStack8 = 0; - iVar1 = proc_7F01DE50(); - if (-1 < iVar1) { - puVar3 = param_2; - folder = &save1 + iVar1; - do { - puVar4 = puVar3 + 3; - folder->checksum1 = *puVar3; - folder->checksum2 = puVar3[1]; - *(u32 *)&folder->completion_bitflags = puVar3[2]; - puVar3 = puVar4; - folder = (save_file *)&folder->controller_config; - } while (puVar4 != param_2 + 0x18); - if (param_1 != NULL) { - iVar2 = set_eeprom_flag_0x18((save_file *)param_1); - uStack8 = iVar2 + 1U & 3; - if (((int)(iVar2 + 1U) < 0) && (uStack8 != 0)) { - uStack8 -= 4; - } - } - folder = &save1 + iVar1; - toggle_eeprom_flag_set_0x80(folder,0); - reset_eeprom_flag_0x18(folder,uStack8); - proc_7F01D7A0((uint *)folder); - if (param_1 != NULL) { - proc_7F01D840(param_1); - } - } - return; -} - - - -void unlock_stage_in_folder_on_difficulty - (int folder,longlong stagenum,longlong selecteddifficulty,int maxtime) - -{ - save_file *psVar1; - save_file *psVar2; - save_file *psVar3; - save_file *psVar4; - longlong lVar5; - save_file sStack96; - - if ((((-1 < folder) && (folder < 4)) && (-1 < stagenum)) && - (((stagenum < 0x14 && (-1 < selecteddifficulty)) && (selecteddifficulty < 4)))) { - psVar1 = &dword_8002C660; - psVar2 = &sStack96; - do { - psVar4 = (save_file *)&psVar1->controller_config; - psVar2->checksum1 = psVar1->checksum1; - psVar2->checksum2 = psVar1->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar1->completion_bitflags; - psVar1 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != &dword_8002C6C0); - psVar1 = getEEPROMforFoldernum(folder); - if (psVar1 == NULL) { - setEEPROMtoFoldernum(&sStack96,(byte)folder); - } - else { - psVar2 = psVar1; - psVar4 = &sStack96; - do { - psVar3 = (save_file *)&psVar2->controller_config; - psVar4->checksum1 = psVar2->checksum1; - psVar4->checksum2 = psVar2->checksum2; - *(undefined4 *)&psVar4->completion_bitflags = *(undefined4 *)&psVar2->completion_bitflags; - psVar2 = psVar3; - psVar4 = (save_file *)&psVar4->controller_config; - } while (psVar3 != psVar1 + 1); - } - lVar5 = selecteddifficulty; - if (-1 < selecteddifficulty) { - do { - if (lVar5 == selecteddifficulty) { - proc_7F01DCB0((int)&sStack96,stagenum,lVar5,maxtime); - } - else { - proc_7F01DCB0((int)&sStack96,stagenum,lVar5,99999999); - } - lVar5 = (longlong)((int)lVar5 + -1); - } while (-1 < lVar5); - } - proc_7F01E504((uint *)psVar1,(undefined4 *)&sStack96); - } - return; -} - - - -void proc_7F01E760(ulonglong param_1,longlong param_2) - -{ - ulonglong uVar1; - save_file *psVar2; - save_file *psVar3; - save_file *psVar4; - save_file sStack100; - save_file *psStack4; - - if ((((-1 < (longlong)param_1) && ((longlong)param_1 < 4)) && (-1 < param_2)) && (param_2 < 0x14)) - { - psStack4 = getEEPROMforFoldernum((u32)param_1); - if ((psStack4 == NULL) || - (uVar1 = check_if_cheat_unlocked(psStack4,(longlong)(int)param_2), uVar1 == 0)) { - psVar3 = &dword_8002C6C0; - psVar2 = &sStack100; - do { - psVar4 = (save_file *)&psVar3->controller_config; - psVar2->checksum1 = psVar3->checksum1; - psVar2->checksum2 = psVar3->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != &save_file_8002c720); - if (psStack4 == NULL) { - setEEPROMtoFoldernum(&sStack100,(byte)param_1); - } - else { - psVar3 = psStack4; - psVar2 = &sStack100; - do { - psVar4 = (save_file *)&psVar3->controller_config; - psVar2->checksum1 = psVar3->checksum1; - psVar2->checksum2 = psVar3->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != psStack4 + 1); - } - proc_7F01DD74((int)&sStack100,(longlong)(int)param_2); - proc_7F01E504((uint *)psStack4,(undefined4 *)&sStack100); - } - } - return; -} - - - -void get_highest_stage_difficulty_completed_in_folder - (int foldernum,STAGENUM *stagenum,DIFFICULTY *difficulty) - -{ - save_file *folder; - BOOL BVar1; - STAGENUM stage; - DIFFICULTY difficulty_00; - - folder = getEEPROMforFoldernum(foldernum); - if (folder != NULL) { - difficulty_00 = DIFFICULTY_007; - do { - stage = SP_STAGE_EGYPT; - do { - BVar1 = doesSaveHaveStageCompletedOnDifficulty(folder,stage,difficulty_00); - if (BVar1 != FALSE) { - *stagenum = stage; - *difficulty = difficulty_00; - return; - } - stage += ~SP_STAGE_DAM; - } while (-1 < (int)stage); - difficulty_00 += DIFFICULTY_MULTI; - } while (-1 < difficulty_00); - } - *stagenum = ~SP_STAGE_DAM; - *difficulty = DIFFICULTY_MULTI; - return; -} - - - -u32 check_egypt_completed_in_folder(int folder) - -{ - save_file *savefile; - BOOL BVar1; - DIFFICULTY difficulty; - longlong stagenum; - STAGENUM stageid; - - savefile = getEEPROMforFoldernum(folder); - stagenum = 0x13; - if (savefile != NULL) { - do { - difficulty = DIFFICULTY_AGENT; - stageid = (STAGENUM)stagenum; - do { - BVar1 = doesFolderHaveStageUnlockedAtDifficulty(folder,stageid,difficulty); - difficulty += DIFFICULTY_SECRET; - if (BVar1 != FALSE) { - return stageid; - } - } while (difficulty != 4); - stagenum = (longlong)(int)(stageid + ~SP_STAGE_DAM); - } while (-1 < stagenum); - } - return 0; -} - - - -u32 check_egypt_completed_any_folder(void) - -{ - u32 isfound; - int folder; - u32 isunlocked; - - isunlocked = 0; - folder = 0; - do { - isfound = check_egypt_completed_in_folder(folder); - folder += 1; - if ((int)isunlocked < (int)isfound) { - isunlocked = isfound; - } - } while (folder != 4); - return isunlocked; -} - - - -u32 check_cradle_completed_in_folder(u32 folder) - -{ - BOOL BVar1; - uint uVar2; - - BVar1 = doesFolderHaveStageUnlockedAtDifficulty(folder,SP_STAGE_CRADLE,DIFFICULTY_AGENT); - uVar2 = (uint)(BVar1 == 3); - if (BVar1 != 3) { - BVar1 = doesFolderHaveStageUnlockedAtDifficulty(folder,SP_STAGE_CRADLE,DIFFICULTY_SECRET); - uVar2 = (uint)(BVar1 == 3); - if (BVar1 != 3) { - BVar1 = doesFolderHaveStageUnlockedAtDifficulty(folder,SP_STAGE_CRADLE,DIFFICULTY_00); - uVar2 = (uint)(BVar1 == 3); - } - } - return (u32)uVar2; -} - - - -u32 check_aztec_completed_in_folder_secret_00(u32 folder) - -{ - bool bVar1; - BOOL BVar2; - - BVar2 = doesFolderHaveStageUnlockedAtDifficulty(folder,SP_STAGE_AZTEK,DIFFICULTY_SECRET); - bVar1 = BVar2 == 3; - if (!bVar1) { - BVar2 = doesFolderHaveStageUnlockedAtDifficulty(folder,SP_STAGE_AZTEK,DIFFICULTY_00); - bVar1 = BVar2 == 3; - } - return (u32)(uint)bVar1; -} - - - -u32 check_egypt_completed_in_folder_00(int folder) - -{ - BOOL BVar1; - - BVar1 = doesFolderHaveStageUnlockedAtDifficulty(folder,SP_STAGE_EGYPT,DIFFICULTY_00); - return (u32)(uint)(BVar1 == 3); -} - - - -u32 check_cradle_completed_any_folder(void) - -{ - u32 completed; - int folder; - - folder = 0; - do { - completed = check_cradle_completed_in_folder(folder); - folder += 1; - if (completed != 0) { - return 1; - } - } while (folder != 4); - return 0; -} - - - -BOOL check_aztec_completed_any_folder_secret_00(void) - -{ - u32 uVar1; - u32 folder; - - folder = 0; - do { - uVar1 = check_aztec_completed_in_folder_secret_00(folder); - folder += 1; - if (uVar1 != 0) { - return TRUE; - } - } while (folder != 4); - return FALSE; -} - - - -BOOL check_egypt_completed_any_folder_00(void) - -{ - u32 completed; - int folder; - - folder = 0; - do { - completed = check_egypt_completed_in_folder_00(folder); - folder += 1; - if (completed != 0) { - return TRUE; - } - } while (folder != 4); - return FALSE; -} - - - -u32 removed_would_have_returned_bond_for_folder_num(u32 folder) - -{ - return 0; -} - - - -void set_selected_bond_to_folder(u32 folder,u32 bond) - -{ - if ((-1 < (int)folder) && ((int)folder < 4)) { - save1_selected_bond[folder] = 0; - } - return; -} - - - -void proc_7F01EBF4(void) - -{ - return; -} - - - -void proc_7F01EBFC(void) - -{ - return; -} - - - -void delete_eeprom_folder(int foldernum) - -{ - save_file *eeprom; - u32 *puVar1; - u32 *puVar2; - save_file *psVar3; - save_file *psVar4; - u32 auStack108 [24]; - DIFFICULTY difficulty; - STAGENUM aSStack8 [2]; - - if ((((-1 < foldernum) && (foldernum < 4)) && - (eeprom = getEEPROMforFoldernum(foldernum), eeprom != NULL)) && - ((get_highest_stage_difficulty_completed_in_folder(foldernum,aSStack8,&difficulty), - -1 < (int)aSStack8[0] && (-1 < difficulty)))) { - psVar3 = &save_file_8002c720; - puVar1 = auStack108; - do { - psVar4 = (save_file *)&psVar3->controller_config; - *puVar1 = psVar3->checksum1; - puVar1[1] = psVar3->checksum2; - puVar1[2] = *(u32 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - puVar1 = puVar1 + 3; - } while (psVar4 != &save_file_8002c780); - puVar1 = auStack108; - psVar3 = eeprom; - do { - puVar2 = puVar1 + 3; - psVar3->checksum1 = *puVar1; - psVar3->checksum2 = puVar1[1]; - *(u32 *)&psVar3->completion_bitflags = puVar1[2]; - puVar1 = puVar2; - psVar3 = (save_file *)&psVar3->controller_config; - } while (puVar2 != (u32 *)&difficulty); - setEEPROMtoFoldernum(eeprom,(byte)foldernum); - toggle_eeprom_flag_set_0x80(eeprom,0); - set_selected_bond(eeprom,foldernum); - set_selected_bond_to_folder(foldernum,foldernum); - proc_7F01D7A0((uint *)eeprom); - } - return; -} - - - -void proc_7F01ED10(ulonglong param_1) - -{ - save_file *psVar1; - longlong lVar2; - longlong lVar3; - int stagenum; - - psVar1 = getEEPROMforFoldernum((u32)param_1); - lVar3 = 0; - do { - lVar2 = 0; - do { - proc_7F01DCB0((int)psVar1,lVar3,lVar2,99999999); - lVar2 = (longlong)((int)lVar2 + 1); - } while (lVar2 != 3); - stagenum = (int)lVar3; - stagenum = stagenum + 1; - lVar3 = (longlong)stagenum; - } while (lVar3 != 0x14); - return; -} - - - -void proc_7F01EDA0(ulonglong param_1) - -{ - save_file *psVar1; - save_file *psVar2; - u32 foldernum; - save_file *psVar3; - save_file *psVar4; - u32 foldernum_00; - save_file sStack112; - DIFFICULTY difficulty; - STAGENUM SStack8; - save_file *psStack4; - - if ((-1 < (longlong)param_1) && ((longlong)param_1 < 4)) { - foldernum = (u32)param_1; - psStack4 = getEEPROMforFoldernum(foldernum); - if (psStack4 != NULL) { - get_highest_stage_difficulty_completed_in_folder(foldernum,&SStack8,&difficulty); - if ((-1 < (int)SStack8) && (foldernum_00 = 0, -1 < difficulty)) { - while (psVar1 = getEEPROMforFoldernum(foldernum_00), psVar1 != NULL) { - get_highest_stage_difficulty_completed_in_folder(foldernum_00,&SStack8,&difficulty); - if ((((int)SStack8 < 0) && (difficulty < 0)) || (foldernum_00 += 1, foldernum_00 == 4)) - break; - } - if ((int)foldernum_00 < 4) { - psVar1 = &save_file_8002c780; - psVar4 = &sStack112; - do { - psVar2 = (save_file *)&psVar1->controller_config; - psVar4->checksum1 = psVar1->checksum1; - psVar4->checksum2 = psVar1->checksum2; - *(undefined4 *)&psVar4->completion_bitflags = - *(undefined4 *)&psVar1->completion_bitflags; - psVar1 = psVar2; - psVar4 = (save_file *)&psVar4->controller_config; - } while (psVar2 != &save_file_8002c7e0); - psVar2 = getEEPROMforFoldernum(foldernum_00); - psVar1 = psStack4; - psVar4 = &sStack112; - do { - psVar3 = (save_file *)&psVar1->controller_config; - psVar4->checksum1 = psVar1->checksum1; - psVar4->checksum2 = psVar1->checksum2; - *(undefined4 *)&psVar4->completion_bitflags = - *(undefined4 *)&psVar1->completion_bitflags; - psVar1 = psVar3; - psVar4 = (save_file *)&psVar4->controller_config; - } while (psVar3 != psStack4 + 1); - setEEPROMtoFoldernum(&sStack112,(byte)foldernum_00); - foldernum = removed_would_have_returned_bond_for_folder_num(foldernum); - set_selected_bond_to_folder(foldernum_00,foldernum); - proc_7F01E504((uint *)psVar2,(undefined4 *)&sStack112); - } - } - } - } - return; -} - - - -void update_eeprom_to_current_solo_watch_settings(save_file *eepromsave) - -{ - u16 uVar4; - u32 uVar1; - u32 uVar2; - int iVar3; - ushort uVar5; - ushort uVar6; - - uVar4 = proc_7F0A9358(); - iVar3 = (int)(short)uVar4; - eepromsave->music_vol = (u8)((short)uVar4 >> 7); - proc_7F0A9180(); - eepromsave->sfx_vol = (u8)(iVar3 >> 7); - uVar1 = get_cur_player_look_vertical_inverted(); - uVar2 = cur_player_get_autoaim(); - uVar6 = (ushort)(uVar1 != 0); - if (uVar2 != 0) { - uVar6 = (ushort)(uVar1 != 0) | 2; - } - iVar3 = cur_player_get_aim_control(); - if (iVar3 != 0) { - uVar6 = uVar6 | 4; - } - iVar3 = cur_player_get_sight_onscreen_control(); - if (iVar3 != 0) { - uVar6 = uVar6 | 8; - } - iVar3 = cur_player_get_lookahead(); - if (iVar3 != 0) { - uVar6 = uVar6 | 0x10; - } - iVar3 = cur_player_get_ammo_onscreen_setting(); - if (iVar3 != 0) { - uVar6 = uVar6 | 0x20; - } - iVar3 = cur_player_get_screen_setting(); - uVar5 = uVar6 | 0x40; - if (iVar3 != 1) { - iVar3 = cur_player_get_screen_setting(); - uVar5 = uVar6; - if (iVar3 == 2) { - uVar5 = uVar6 | 0x800; - } - } - iVar3 = get_screen_ratio(); - if (iVar3 != 0) { - uVar5 = uVar5 | 0x80; - } - iVar3 = cur_player_get_control_type(); - *(ushort *)&eepromsave->controller_config = uVar5 | (ushort)(iVar3 << 8) & 0x700; - return; -} - - - -void get_screen_ratio_settings_for_mpgame_from_folder(int folder) - -{ - ushort uVar1; - save_file *psVar3; - ulonglong uVar2; - - psVar3 = getEEPROMforFoldernum(folder); - if (psVar3 != NULL) { - proc_7F0A9364((ushort)psVar3->music_vol << 7 | (ushort)((int)(uint)psVar3->music_vol >> 1)); - proc_7F0A91A0((longlong)(int)((uint)psVar3->sfx_vol << 7 | (int)(uint)psVar3->sfx_vol >> 1)); - uVar1 = *(ushort *)&psVar3->controller_config; - uVar2 = get_num_players(); - if (uVar2 == 1) { - cur_player_set_control_type((int)((uint)uVar1 & 0x700) >> 8); - } - else { - cur_player_set_control_type(0); - } - set_cur_player_look_vertical_inverted((uint)((uVar1 & 1) != 0)); - cur_player_set_autoaim((uint)((uVar1 & 2) != 0)); - cur_player_set_aim_control((uint)((uVar1 & 4) != 0)); - cur_player_set_sight_onscreen_control((uint)((uVar1 & 8) != 0)); - cur_player_set_lookahead((uint)((uVar1 & 0x10) != 0)); - cur_player_set_ammo_onscreen_setting((uint)((uVar1 & 0x20) != 0)); - if ((uVar1 & 0x800) == 0) { - if ((uVar1 & 0x40) == 0) { - cur_player_set_screen_setting(0); - } - else { - cur_player_set_screen_setting(1); - } - } - else { - cur_player_set_screen_setting(2); - } - set_screen_ratio((uint)((uVar1 & 0x80) != 0)); - } - return; -} - - - -void delete_update_eeprom_file(int folder) - -{ - int iVar1; - save_file *psVar2; - save_file *psVar3; - save_file *psVar4; - save_file sStack196; - save_file sStack100; - save_file *psStack4; - - if ((-1 < folder) && (folder < 4)) { - psStack4 = getEEPROMforFoldernum(folder); - psVar3 = &save_file_8002c7e0; - psVar2 = &sStack100; - do { - psVar4 = (save_file *)&psVar3->controller_config; - psVar2->checksum1 = psVar3->checksum1; - psVar2->checksum2 = psVar3->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != &save_file_8002c840); - if (psStack4 == NULL) { - setEEPROMtoFoldernum(&sStack100,(byte)folder); - } - else { - psVar3 = psStack4; - psVar2 = &sStack100; - do { - psVar4 = (save_file *)&psVar3->controller_config; - psVar2->checksum1 = psVar3->checksum1; - psVar2->checksum2 = psVar3->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != psStack4 + 1); - } - psVar3 = &sStack100; - psVar2 = &sStack196; - do { - psVar4 = (save_file *)&psVar3->controller_config; - psVar2->checksum1 = psVar3->checksum1; - psVar2->checksum2 = psVar3->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != (save_file *)&psStack4); - update_eeprom_to_current_solo_watch_settings(&sStack196); - iVar1 = _bcmp(&sStack196,&sStack100,0x60); - if (iVar1 != 0) { - proc_7F01E504((uint *)psStack4,(undefined4 *)&sStack196); - } - } - return; -} - - - -void copy_eeprom_to_stack_set_folder_num(int foldernum) - -{ - u32 uVar1; - save_file *psVar2; - save_file *psVar3; - save_file *psVar4; - save_file sStack100; - save_file *psStack4; - - if ((-1 < foldernum) && (foldernum < 4)) { - psStack4 = getEEPROMforFoldernum(foldernum); - psVar3 = &save_file_8002c840; - psVar2 = &sStack100; - do { - psVar4 = (save_file *)&psVar3->controller_config; - psVar2->checksum1 = psVar3->checksum1; - psVar2->checksum2 = psVar3->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != &blank_eeprom); - if (psStack4 == NULL) { - setEEPROMtoFoldernum(&sStack100,(byte)foldernum); - } - else { - psVar3 = psStack4; - psVar2 = &sStack100; - do { - psVar4 = (save_file *)&psVar3->controller_config; - psVar2->checksum1 = psVar3->checksum1; - psVar2->checksum2 = psVar3->checksum2; - *(undefined4 *)&psVar2->completion_bitflags = *(undefined4 *)&psVar3->completion_bitflags; - psVar3 = psVar4; - psVar2 = (save_file *)&psVar2->controller_config; - } while (psVar4 != psStack4 + 1); - } - uVar1 = get_selected_bond(&sStack100); - if (uVar1 != save1_selected_bond[foldernum]) { - set_selected_bond(&sStack100,save1_selected_bond[foldernum]); - proc_7F01E504((uint *)psStack4,(undefined4 *)&sStack100); - } - } - return; -} - - - -void copy_eeprom_from_to(int from,int to) - -{ - save_file *psVar1; - u32 *puVar2; - u32 *puVar3; - save_file *psVar4; - save_file *psVar5; - u32 auStack100 [24]; - u32 uStack4; - - psVar1 = getEEPROMforFoldernum(from); - if (psVar1 == NULL) { - psVar1 = &blank_eeprom; - puVar2 = auStack100; - do { - psVar4 = (save_file *)&psVar1->controller_config; - *puVar2 = psVar1->checksum1; - puVar2[1] = psVar1->checksum2; - puVar2[2] = *(u32 *)&psVar1->completion_bitflags; - psVar1 = psVar4; - puVar2 = puVar2 + 3; - } while (psVar4 != (save_file *)&animation_rate); - puVar2 = auStack100; - do { - puVar3 = puVar2 + 3; - *(u32 *)to = *puVar2; - ((u32 *)to)[1] = puVar2[1]; - ((u32 *)to)[2] = puVar2[2]; - puVar2 = puVar3; - to = (int)((u32 *)to + 3); - } while (puVar3 != &uStack4); - } - else { - psVar4 = psVar1; - do { - psVar5 = (save_file *)&psVar4->controller_config; - *(u32 *)to = psVar4->checksum1; - ((u32 *)to)[1] = psVar4->checksum2; - ((u32 *)to)[2] = *(u32 *)&psVar4->completion_bitflags; - psVar4 = psVar5; - to = (int)((u32 *)to + 3); - } while (psVar5 != psVar1 + 1); - } - return; -} - - - -void copy_eepromfile_a0_from_a1_to_buffer(longlong param_1,save_file *param_2) - -{ - save_file *psVar1; - save_file *psVar2; - save_file *psVar3; - - if (param_1 == 100) { - psVar2 = param_2; - psVar1 = &save6; - do { - psVar3 = (save_file *)&psVar2->controller_config; - psVar1->checksum1 = psVar2->checksum1; - psVar1->checksum2 = psVar2->checksum2; - *(undefined4 *)&psVar1->completion_bitflags = *(undefined4 *)&psVar2->completion_bitflags; - psVar2 = psVar3; - psVar1 = (save_file *)&psVar1->controller_config; - } while (psVar3 != param_2 + 1); - } - return; -} - - - -BOOL is007ModeUnlockedinFolder(u32 foldernum) - -{ - save_file *folder; - BOOL BVar1; - BOOL found; - int stagenum; - - folder = getEEPROMforFoldernum(foldernum); - if (folder == NULL) { - BVar1 = FALSE; - } - else { - stagenum = SP_STAGE_DAM; - if ((folder->bitflags & 1) == 0) { - do { - found = doesSaveHaveStageCompletedOnDifficulty(folder,stagenum,DIFFICULTY_00); - if (found == FALSE) break; - stagenum += SP_STAGE_FACILITY; - } while (stagenum != 0x14); - if (stagenum == SP_STAGE_MAX) { - BVar1 = TRUE; - } - else { - BVar1 = FALSE; - } - } - else { - BVar1 = TRUE; - } - } - return BVar1; -} - - - -undefined4 get_numguards(void) - -{ - return num_guards; -} - - - -void get_ptr_allocated_block_for_weapon_vertices(int param_1) - -{ - proc_7F0BD714(param_1 << 4); - return; -} - - - -void set_show_patrols_flag(BOOL flag) - -{ - show_patrols_flag = flag; - return; -} - - - -undefined4 get_show_patrols_flag(void) - -{ - return show_patrols_flag; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 proc_7F01F574(void) - -{ - longlong in_v0; - int in_a0_lo; - undefined4 uVar1; - float in_f12; - float in_f14; - - if (*(int *)(in_a0_lo + 0x14) == 0) { - uVar1 = 0; - } - else { - proc_7F0B20D0((int *)(in_a0_lo + 0x14),in_f12,in_f14,*(float *)(in_a0_lo + 8)); - if (in_v0 < 0) { - uVar1 = proc_7F0B2970(); - } - else { - uVar1 = 0; - } - } - return uVar1; -} - - - -void set_or_unset_GUARDdata_flag(GUARDdata *guard,int param_2) - -{ - if (param_2 == 0) { - guard->special_bitflags = guard->special_bitflags | 0x100; - return; - } - guard->special_bitflags = guard->special_bitflags & 0xfeff; - return; -} - - - -int proc_7F01F614(int param_1,int param_2,float *param_3,float *param_4,int param_5) - -{ - bool bVar1; - int iVar3; - longlong lVar2; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - f32 extraout_f12; - f32 extraout_f12_00; - f32 fVar9; - f32 extraout_f14; - f32 extraout_f14_00; - f32 extraout_f14_01; - f32 fVar10; - f32 extraout_f14_02; - f32 extraout_f14_03; - float fStack88; - float fStack80; - float afStack44 [2]; - float fStack36; - float afStack32 [2]; - float fStack24; - float fStack20; - undefined4 uStack16; - float fStack12; - u32 uStack8; - u32 uStack4; - - uStack4 = 0; - uStack8 = param_2; - proc_7F023160(*(int *)(param_1 + 0x18),&fStack20,&fStack12,&uStack16); - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - proc_7F0B1CC4(); - iVar3 = proc_7F0B0E24(&uStack8,extraout_f12,extraout_f14,(f32)*param_3); - if ((iVar3 == 0) || (lVar2 = proc_7F0B18B8(), -1 < lVar2)) { - lVar2 = proc_7F0B28B0(afStack32,afStack44); - if (lVar2 != 0) { - fVar8 = *param_4 - *param_3; - fVar7 = param_4[2] - param_3[2]; - if ((afStack32[0] == afStack44[0]) && (fStack24 == fStack36)) { - bVar1 = false; - fVar9 = extraout_f12_00; - fVar10 = extraout_f14_00; - } - else { - fVar6 = fStack36 - fStack24; - fVar4 = afStack44[0] - afStack32[0]; - fVar5 = sqrtf(fVar6 * fVar6 + fVar4 * fVar4); - fVar4 = fVar4 * (1.00000000 / fVar5); - fVar6 = fVar6 * (1.00000000 / fVar5); - fVar9 = (f32)(fVar6 * fVar7 + fVar8 * fVar4); - fStack88 = fVar4 * (float)fVar9 + *param_3; - fStack80 = fVar6 * (float)fVar9 + param_3[2]; - bVar1 = true; - fVar10 = extraout_f14_01; - uStack8 = param_2; - } - if (((bVar1) && (iVar3 = proc_7F0B0E24(&uStack8,fVar9,fVar10,(f32)*param_3), iVar3 != 0)) && - (lVar2 = proc_7F0B18B8(), lVar2 < 0)) { - *param_4 = fStack88; - param_4[2] = fStack80; - *(undefined *)(param_1 + 9) = 2; - uStack4 = uStack8; - } - else { - if ((fStack24 - param_4[2]) * (fStack24 - param_4[2]) + - (afStack32[0] - *param_4) * (afStack32[0] - *param_4) <= fStack20 * fStack20) { - if (afStack32[0] == *param_3) { - if (fStack24 == param_3[2]) goto LAB_7f01fbdc; - fVar4 = param_3[2]; - } - else { - fVar4 = param_3[2]; - } - fVar5 = -(fStack24 - fVar4); - afStack32[0] = afStack32[0] - *param_3; - fVar4 = sqrtf(afStack32[0] * afStack32[0] + fVar5 * fVar5); - fVar5 = fVar5 * (1.00000000 / fVar4); - afStack32[0] = afStack32[0] * (1.00000000 / fVar4); - fVar4 = *param_3; - fVar8 = afStack32[0] * fVar7 + fVar8 * fVar5; - fVar7 = param_3[2]; - uStack8 = param_2; - iVar3 = proc_7F0B0E24(&uStack8,(f32)fVar8,extraout_f14_02,(f32)*param_3); - if ((iVar3 != 0) && (lVar2 = proc_7F0B18B8(), lVar2 < 0)) { - *param_4 = fVar5 * fVar8 + fVar4; - param_4[2] = afStack32[0] * fVar8 + fVar7; - *(undefined *)(param_1 + 9) = 2; - uStack4 = uStack8; - } - } - else { - if ((fStack36 - param_4[2]) * (fStack36 - param_4[2]) + - (afStack44[0] - *param_4) * (afStack44[0] - *param_4) <= fStack20 * fStack20) { - if (afStack44[0] == *param_3) { - if (fStack36 == param_3[2]) goto LAB_7f01fbdc; - fVar4 = param_3[2]; - } - else { - fVar4 = param_3[2]; - } - fVar5 = -(fStack36 - fVar4); - afStack44[0] = afStack44[0] - *param_3; - fVar4 = sqrtf(afStack44[0] * afStack44[0] + fVar5 * fVar5); - fVar5 = fVar5 * (1.00000000 / fVar4); - afStack44[0] = afStack44[0] * (1.00000000 / fVar4); - fVar4 = *param_3; - fVar7 = afStack44[0] * fVar7 + fVar8 * fVar5; - fVar8 = param_3[2]; - uStack8 = param_2; - iVar3 = proc_7F0B0E24(&uStack8,(f32)fVar7,extraout_f14_03,(f32)*param_3); - if ((iVar3 != 0) && (lVar2 = proc_7F0B18B8(), lVar2 < 0)) { - *param_4 = fVar5 * fVar7 + fVar4; - param_4[2] = afStack44[0] * fVar7 + fVar8; - *(undefined *)(param_1 + 9) = 2; - uStack4 = uStack8; - } - } - } - } - } - } - else { - if (param_5 != 0) { - *(undefined *)(param_1 + 9) = 0; - *(undefined4 *)(param_1 + 0xcc) = global_timer; - } - uStack4 = uStack8; - } -LAB_7f01fbdc: - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - if (uStack4 == 0) { - *(undefined *)(param_1 + 9) = 1; - } - return (int)uStack4; -} - - - -undefined8 proc_7F01FC10(int param_1,float *param_2,float *param_3,float *param_4) - -{ - bool bVar1; - int iVar2; - bool bVar3; - float fVar4; - int iVar5; - float fVar6; - float fVar7; - float fVar8; - - iVar2 = *(int *)(param_1 + 4); - bVar1 = false; - fVar7 = 0.00000000; - if (*(int *)(*(int *)(iVar2 + 0x18) + 0x14) == 0) goto LAB_7f01ff80; - if ((*(char *)(iVar2 + 7) == '\x04') && (fVar7 = *(float *)(iVar2 + 0x38), 0.00000000 < fVar7)) { - fVar7 = (*(float *)(param_1 + 0xa4) * global_timer_delta * (fVar7 - *(float *)(iVar2 + 0x3c))) / - fVar7; - *param_3 = *param_3 + *(float *)(iVar2 + 0x40) * fVar7; - param_3[1] = param_3[1] + *(float *)(iVar2 + 0x44) * fVar7; - param_3[2] = param_3[2] + *(float *)(iVar2 + 0x48) * fVar7; - *(float *)(iVar2 + 0x3c) = - *(float *)(iVar2 + 0x3c) + global_timer_delta * *(float *)(param_1 + 0xa4); - if (*(float *)(iVar2 + 0x38) < *(float *)(iVar2 + 0x3c)) { - *(undefined4 *)(iVar2 + 0x38) = 0; - } - } - *param_3 = *param_3 + *(float *)(iVar2 + 0xb0) * global_timer_delta; - param_3[2] = param_3[2] + *(float *)(iVar2 + 0xb8) * global_timer_delta; - iVar5 = proc_7F01F614(iVar2,*(int *)(*(int *)(iVar2 + 0x18) + 0x14),param_2,param_3,1); - bVar1 = iVar5 != 0; - if (bVar1) { - *(int *)(*(int *)(iVar2 + 0x18) + 0x14) = iVar5; - } - if ((*(uint *)(iVar2 + 0x14) & 0x1000) != 0) { - fVar7 = *(float *)(iVar2 + 0xac); - goto LAB_7f01ff80; - } - fVar7 = (float)proc_7F0B2970(); - *(float *)(iVar2 + 0xac) = fVar7; - if ((*(uint *)(iVar2 + 0x14) & 1) == 0) { - if (*(float *)(iVar2 + 0xb4) == 0.00000000) { - fVar6 = *(float *)(iVar2 + 0xac); - if (fVar6 < *(float *)(iVar2 + 0xa8)) goto LAB_7f01fe44; - bVar3 = *(float *)(iVar2 + 0xa8) <= fVar6; - } - else { -LAB_7f01fe44: - proc_7F057D44((float *)(iVar2 + 0xa8),(float *)(iVar2 + 0xb4),0.00000000); - fVar6 = *(float *)(iVar2 + 0xac); - if (*(float *)(iVar2 + 0xa8) <= fVar6) { - *(float *)(iVar2 + 0xa8) = fVar6; - fVar4 = flt_80051D14; - *(undefined4 *)(iVar2 + 0xb4) = 0; - *(float *)(iVar2 + 0xa4) = fVar6 / fVar4; - bVar3 = *(float *)(iVar2 + 0xa8) <= fVar6; - } - else { - bVar3 = *(float *)(iVar2 + 0xa8) <= fVar6; - } - } - fVar4 = flt_80051D18; - if (bVar3) { - iVar5 = 0; - if (0 < clock_timer) { - fVar8 = *(float *)(iVar2 + 0xa4); - while( true ) { - iVar5 += 1; - *(float *)(iVar2 + 0xb0) = *(float *)(iVar2 + 0xb0) * fVar4; - *(float *)(iVar2 + 0xa4) = fVar8 * fVar4 + fVar6; - *(float *)(iVar2 + 0xb8) = *(float *)(iVar2 + 0xb8) * fVar4; - if (clock_timer <= iVar5) break; - fVar8 = *(float *)(iVar2 + 0xa4); - } - } - fVar6 = flt_80051D1C; - bVar3 = flt_80051D1C <= *(float *)(iVar2 + 0xb0); - *(float *)(iVar2 + 0xa8) = *(float *)(iVar2 + 0xa4) * flt_80051D20; - if (bVar3) goto LAB_7f01ff60; - if (flt_80051D24 < *(float *)(iVar2 + 0xb0)) { - if (*(float *)(iVar2 + 0xb8) < fVar6) { - if (flt_80051D24 < *(float *)(iVar2 + 0xb8)) { - *(undefined4 *)(iVar2 + 0xb8) = 0; - *(undefined4 *)(iVar2 + 0xb0) = 0; - goto LAB_7f01ff60; - } - fVar6 = *(float *)(iVar2 + 0xa8); - } - else { - fVar6 = *(float *)(iVar2 + 0xa8); - } - } - else { - fVar6 = *(float *)(iVar2 + 0xa8); - } - } - else { - fVar6 = *(float *)(iVar2 + 0xa8); - } - } - else { - iVar5 = extract_id_from_object_structure_microcode(param_1,**(ushort ***)(param_1 + 8)); - *(uint *)(iVar2 + 0x14) = *(uint *)(iVar2 + 0x14) & 0xfffffffe; - *(float *)(iVar2 + 0xa8) = *(float *)(iVar2 + 0xac); - *(float *)(iVar2 + 0xa4) = *(float *)(iVar2 + 0xac) / flt_80051D10; - *(undefined4 *)(iVar5 + 0x38) = *(undefined4 *)(iVar5 + 0x28); -LAB_7f01ff60: - fVar6 = *(float *)(iVar2 + 0xa8); - } - param_3[1] = param_3[1] + (fVar6 - fVar7); -LAB_7f01ff80: - *param_4 = fVar7; - if (!bVar1) { - *param_3 = *param_2; - param_3[2] = param_2[2]; - } - return 1; -} - - - -int get_next_available_guardID(void) - -{ - int iVar1; - int iVar2; - GUARDdata *pGVar3; - - iVar2 = 0; - iVar1 = 0; - if (0 < num_guards) { - pGVar3 = ptr_guard_data; - do { - iVar1 += 0x1dc; - if (pGVar3->MODELdata_pointer == 0) { - iVar2 += 1; - } - pGVar3 = pGVar3 + 1; - } while (iVar1 < num_guards * 0x1dc); - } - return iVar2; -} - - - -void proc_7F020018(void) - -{ - int in_a0_lo; - float in_a1_lo; - f32 fVar1; - - fVar1 = get_007_health_mod(); - *(float *)(in_a0_lo + 0x100) = (float)fVar1 * in_a1_lo; - return; -} - - - -f32 get_guard_health(GUARDdata *param_1) - -{ - return param_1->maxdamage; -} - - - -void guard_calc_final_damage_recieved(GUARDdata *guard,u32 damage) - -{ - f32 fVar1; - - fVar1 = get_007_health_mod(); - *(float *)&guard->damage = (float)guard->damage - (float)damage * (float)fVar1; - return; -} - - - -float proc_7F020090(GUARDdata *param_1) - -{ - if (0.00000000 <= (float)param_1->damage) { - return 0.00000000; - } - return -(float)param_1->damage; -} - - - -u32 init_GUARDdata_with_set_values(u32 param_1,u32 param_2,u32 param_3,u32 param_4) - -{ - int *piVar1; - int iVar2; - GUARDdata *pGVar3; - int iVar4; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - GUARDdata *guard; - f32 fVar5; - float fVar6; - float extraout_f12; - float extraout_f12_00; - undefined4 in_stack_00000010; - int in_stack_00000014; - - guard = NULL; - iVar2 = 0; - if (0 < num_guards) { - iVar4 = 0; - pGVar3 = ptr_guard_data; - do { - piVar1 = &pGVar3->MODELdata_pointer; - iVar2 += 1; - pGVar3 = pGVar3 + 1; - if (*piVar1 == 0) { - guard = (GUARDdata *)((int)&ptr_guard_data->chrnum + iVar4); - break; - } - iVar4 += 0x1dc; - } while (iVar2 < num_guards); - } - *(undefined *)param_1 = 3; - *(GUARDdata **)(param_1 + 4) = guard; - *(undefined4 *)(param_1 + 8) = *(undefined4 *)param_3; - *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_3 + 4); - *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_3 + 8); - *(undefined4 *)(param_1 + 0x14) = in_stack_00000010; - proc_7F06FF5C(param_2,proc_7F01FC10); - *(undefined2 *)param_2 = 10; - *(GUARDdata **)(param_2 + 4) = guard; - setsuboffset(param_2,(float *)param_3,extraout_a2_lo,extraout_a3_lo); - setsubroty(param_2,extraout_f12,param_4,extraout_a2_lo_00); - proc_7F06FF18(param_2,animation_rate,extraout_f12_00); - guard->chrnum = (u16)player1_guardID; - player1_guardID += 1; - guard->headnum = '\0'; - guard->bodynum = '\0'; - guard->POSdata_pointer = param_1; - guard->MODELdata_pointer = param_2; - guard->pertains_to_action61 = 0; - guard->numarghs = '\0'; - guard->field_C8 = 0; - guard->invalidmove = '\0'; - iVar2 = global_timer; - guard->last_bond_detection_time = 0; - guard->field_D8 = 0.00000000; - guard->field_DC = 0.00000000; - guard->field_E0 = 0.00000000; - guard->lastshooter = 0; - guard->timeshooter = 0; - guard->field_F0 = 0; - guard->numclosearghs = '\0'; - guard->field_13C = 0.00000000; - guard->damage = 0; - guard->reaction_time = 250.00000000; - guard->field_CC = iVar2; - guard->hearingscale = 1.00000000; - fVar5 = get_007_health_mod(); - *(float *)&guard->maxdamage = (float)fVar5 * 4.00000000; - proc_7F04009C(param_1,(byte *)&guard->field_F8); - guard->fadealpha = -1; - guard->ptr_SEbuffer1 = 0; - guard->ptr_SEbuffer2 = 0; - guard->ptr_SEbuffer3 = 0; - guard->ptr_SEbuffer4 = 0; - guard->field_178 = 0; - guard->field_17C = 0; - guard->guard_bitflags = 1; - guard->special_bitflags = 0; - guard->field_A4 = 0.00000000; - guard->field_A8 = 0.00000000; - guard->clipping_height = 0.00000000; - guard->field_B0 = 0.00000000; - guard->field_B4 = 0.00000000; - guard->field_B8 = 0.00000000; - guard->field_F4 = guard->field_F8; - guard->field_F5 = guard->field_F9; - guard->field_F6 = guard->field_FA; - guard->field_F7 = guard->field_FB; - (guard->prevpos).x = *(float *)param_3; - (guard->prevpos).y = *(float *)(param_3 + 4); - fVar6 = *(float *)(param_3 + 8); - guard->actiontype = None; - guard->sleep = '\0'; - (guard->prevpos).z = fVar6; - guard->action_block_offset = 0; - guard->action_block_return = -1; - guard->userbyte1 = '\0'; - guard->userbyte2 = '\0'; - guard->guardtype_bitflags_scientist = '\0'; - guard->randomvalue = '\0'; - guard->loopcounter = 0; - guard->preset_of_2328_object_to_interact_with = -1; - guard->FA_target = -1; - guard->FB_target = -1; - guard->FC_target = -1; - guard->field_180 = -1; - guard->field_1AC = -1; - guard->firecount_left = '\0'; - guard->firecount_right = '\0'; - guard->beligerancy = '\0'; - guard->accuracyrating = '\0'; - guard->speedrating = '\0'; - guard->field_D = '\0'; - guard->field_11 = -1; - guard->field_140 = 0.00000000; - guard->field_144 = 0.00000000; - guard->field_148 = 0.00000000; - guard->field_14C = 0.00000000; - guard->field_150 = 0; - guard->field_154 = 0; - guard->field_158 = 0; - guard->field_15C = 0; - guard->field_E = '\0'; - guard->handle_positiondata_right_gun = 0; - guard->handle_positiondata_left_gun = 0; - guard->handle_positiondata_hat = 0; - guard->chrwidth = 20.00000000; - guard->action_block_pointer = in_stack_00000014; - guard->chrheight = 0x43390000; - proc_7F01FC10(param_2,(float *)(param_1 + 8),(float *)(param_1 + 8),&guard->clipping_height); - proc_7F020D94((int)guard); - return param_1; -} - - - -int replace_GUARDdata_with_actual_values - (u32 param_1,u32 param_2,u32 param_3,undefined4 param_4,undefined4 param_5) - -{ - object_standard *poVar1; - - poVar1 = remove_last_obj_pos_data_entry(); - if (poVar1 != NULL) { - poVar1 = (object_standard *)init_GUARDdata_with_set_values((u32)poVar1,param_1,param_2,param_3); - } - return (int)poVar1; -} - - - -void disable_sounds_attached_to_player_then_something(int param_1) - -{ - undefined2 *puVar1; - int *objinstance; - int iVar2; - int iVar3; - ulonglong uVar4; - int iVar5; - - puVar1 = *(undefined2 **)(param_1 + 4); - objinstance = *(int **)(puVar1 + 0xe); - if (*(int *)(puVar1 + 0xb4) == 0) { - iVar5 = *(int *)(puVar1 + 0xb6); - } - else { - uVar4 = music_related_26(*(int *)(puVar1 + 0xb4)); - if (uVar4 == 0) { - iVar5 = *(int *)(puVar1 + 0xb6); - } - else { - music_related_28(*(int *)(puVar1 + 0xb4)); - iVar5 = *(int *)(puVar1 + 0xb6); - } - } - if (iVar5 == 0) { - iVar5 = *(int *)(puVar1 + 0xb8); - } - else { - uVar4 = music_related_26(iVar5); - if (uVar4 == 0) { - iVar5 = *(int *)(puVar1 + 0xb8); - } - else { - music_related_28(*(int *)(puVar1 + 0xb6)); - iVar5 = *(int *)(puVar1 + 0xb8); - } - } - if (iVar5 == 0) { - iVar5 = *(int *)(puVar1 + 0xba); - } - else { - uVar4 = music_related_26(iVar5); - if (uVar4 == 0) { - iVar5 = *(int *)(puVar1 + 0xba); - } - else { - music_related_28(*(int *)(puVar1 + 0xb8)); - iVar5 = *(int *)(puVar1 + 0xba); - } - } - if ((iVar5 != 0) && (uVar4 = music_related_26(iVar5), uVar4 != 0)) { - music_related_28(*(int *)(puVar1 + 0xba)); - } - proc_7F050DE8((int)objinstance); - proc_7F03E18C(param_1); - iVar5 = *(int *)(param_1 + 0x20); - while (iVar5 != 0) { - iVar2 = *(int *)(iVar5 + 4); - iVar3 = *(int *)(iVar5 + 0x24); - proc_7F04C044(iVar5); - proc_7F041024(iVar2,1); - iVar5 = iVar3; - } - set_aircraft_obj_inst_scale_to_zero(objinstance); - *(undefined4 *)(puVar1 + 0xe) = 0; - *puVar1 = 0xffff; - if (*(int *)(puVar1 + 0x10) != 0) { - proc_7F06B248(*(int *)(puVar1 + 0x10)); - } - return; -} - - - -void animation_speed_related(f32 rate) - -{ - int iVar1; - int iVar2; - int iVar3; - int iVar4; - float extraout_f12; - - iVar4 = 0; - animation_rate = rate; - if (0 < num_guards) { - iVar3 = 0; - iVar2 = num_guards; - animation_rate = rate; - do { - iVar1 = *(int *)((int)&ptr_guard_data->MODELdata_pointer + iVar3); - if (iVar1 != 0) { - proc_7F06FF18(iVar1,animation_rate,(float)rate); - rate = (f32)extraout_f12; - iVar2 = num_guards; - } - iVar4 += 1; - iVar3 += 0x1dc; - } while (iVar4 < iVar2); - } - return; -} - - - -f32 get_animation_rate(void) - -{ - return animation_rate; -} - - - -void proc_7F0205F0(int param_1) - -{ - float fVar1; - float fVar2; - float fVar3; - - if (*(char *)(param_1 + 0xe) < '\x02') { - *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0x150); - *(undefined4 *)(param_1 + 0x144) = *(undefined4 *)(param_1 + 0x154); - *(undefined4 *)(param_1 + 0x148) = *(undefined4 *)(param_1 + 0x158); - *(undefined4 *)(param_1 + 0x14c) = *(undefined4 *)(param_1 + 0x15c); - return; - } - fVar2 = 1.00000000; - fVar1 = global_timer_delta / (float)(int)*(char *)(param_1 + 0xe); - if (1.00000000 < fVar1) { - fVar3 = *(float *)(param_1 + 0x140); - } - else { - fVar3 = *(float *)(param_1 + 0x140); - fVar2 = fVar1; - } - *(float *)(param_1 + 0x140) = fVar3 + (*(float *)(param_1 + 0x150) - fVar3) * fVar2; - *(float *)(param_1 + 0x144) = - *(float *)(param_1 + 0x144) + - (*(float *)(param_1 + 0x154) - *(float *)(param_1 + 0x144)) * fVar2; - *(float *)(param_1 + 0x148) = - *(float *)(param_1 + 0x148) + - (*(float *)(param_1 + 0x158) - *(float *)(param_1 + 0x148)) * fVar2; - *(float *)(param_1 + 0x14c) = - *(float *)(param_1 + 0x14c) + - (*(float *)(param_1 + 0x15c) - *(float *)(param_1 + 0x14c)) * fVar2; - *(char *)(param_1 + 0xe) = *(char *)(param_1 + 0xe) - (char)clock_timer; - return; -} - - - -void proc_7F0206D4(int param_1) - -{ - u32 uVar1; - - if (*(char *)(param_1 + 0x11) < '\0') { - *(undefined *)(param_1 + 0x11) = 1; - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfff; - uVar1 = get_random_value(); - if (uVar1 % 3 == 0) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x1000; - } - else { - if (uVar1 % 3 == 1) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x2000; - } - } - uVar1 = get_random_value(); - if (uVar1 % 3 == 0) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x4000; - } - else { - if (uVar1 % 3 == 1) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x8000; - } - } - } - return; -} - - - -float proc_7F020794(int param_1) - -{ - float fVar1; - - fVar1 = (float)(int)*(char *)(param_1 + 0x11); - if (fVar1 < 10.00000000) { - fVar1 = sinf((fVar1 * flt_80051D28 * 0.25000000) / 10.00000000); - } - else { - fVar1 = sinf(((fVar1 - 10.00000000) * flt_80051D2C * 0.25000000) / 20.00000000); - fVar1 = 1.00000000 - fVar1; - } - return fVar1; -} - - - -// WARNING: Instruction at (ram,0x7f020890) overlaps instruction at (ram,0x7f02088c) -// - -void proc_7F02083C(int param_1,float *param_2) - -{ - ushort uVar1; - bool bVar2; - uint uVar3; - float *pfVar4; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - undefined8 extraout_a0_04; - undefined8 uVar5; - float fVar6; - float fVar7; - float afStack104 [16]; - float fStack40; - float fStack36; - float fStack32; - float fStack28; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fStack4 = 1.00000000; - uVar3 = proc_7F0927BC(0xc); - if (uVar3 != 0) { - if (param_1 == 0) { - fStack4 = 4.00000000; - } - else { - if ((param_1 == 2) || (param_1 == 3)) { - fStack4 = 2.50000000; - } - } - } - if ((((param_1 != 2) && (param_1 != 3)) && (param_1 != 1)) && (param_1 != 0)) { - return; - } - fStack12 = 0.00000000; - fStack16 = 0.00000000; - if (param_1 == 3) { - fStack8 = *(float *)(end_save_files + 0x144); - } - else { - if (param_1 == 2) { - fStack8 = *(float *)(end_save_files + 0x140); - } - else { - if (param_1 == 1) { - fStack8 = *(float *)(end_save_files + 0x148); - if ((*(ushort *)(end_save_files + 0x12) & 0x400) != 0) { - if (flt_80051D30 < fStack8) { - fStack8 = fStack8 - flt_80051D30; - } - else { - if (fStack8 < flt_80051D34) { - fStack8 = fStack8 + flt_80051D38; - } - else { - fStack8 = 0.00000000; - } - } - } - fStack12 = *(float *)(end_save_files + 0x14c); - } - else { - fStack8 = 0.00000000; - if (param_1 == 0) { - if ((*(ushort *)(end_save_files + 0x12) & 0x400) == 0) { - if (*(char *)(*(int *)(end_save_files + 0x1c) + 0x24) == '\0') { - fStack8 = *(float *)(end_save_files + 0x144); - } - else { - fStack8 = *(float *)(end_save_files + 0x140); - } - } - else { - fVar7 = *(float *)(end_save_files + 0x148); - fStack8 = fVar7; - if ((((*(ushort *)(end_save_files + 0x12) & 0x400) != 0) && - (fStack8 = flt_80051D3C, fVar7 <= flt_80051D3C)) && - (fStack8 = flt_80051D40, flt_80051D40 <= fVar7)) { - fStack8 = fVar7; - } - } - } - } - } - } - if (*(char *)(end_save_files + 0x11) < '\0') { - bVar2 = fStack8 == 0.00000000; - } - else { - if ((param_1 == 3) || (param_1 == 2)) { - fVar7 = proc_7F020794(end_save_files); - fVar7 = (fVar7 * flt_80051D44 * 15.00000000) / 360.00000000; - fStack8 = fStack8 - fVar7; - if ((*(ushort *)(end_save_files + 0x12) & 0x1000) == 0) { - if ((*(ushort *)(end_save_files + 0x12) & 0x2000) == 0) { - bVar2 = fStack8 == 0.00000000; - goto code_r0x7f020b5c; - } - fStack12 = fStack12 + fVar7; - } - else { - fStack12 = fStack12 - fVar7; - } - } - else { - if (param_1 != 1) { - bVar2 = fStack8 == 0.00000000; - goto code_r0x7f020b5c; - } - fVar7 = proc_7F020794(end_save_files); - fVar7 = fVar7 * flt_80051D48; - uVar1 = *(ushort *)(end_save_files + 0x12); - fVar6 = (fVar7 * 15.00000000) / 360.00000000; - fStack8 = fStack8 + fVar6; - if ((uVar1 & 0x1000) == 0) { - if ((uVar1 & 0x2000) != 0) { - fStack12 = fStack12 - fVar6; - } - } - else { - fStack12 = fStack12 + fVar6; - } - if ((uVar1 & 0x4000) == 0) { - if ((uVar1 & 0x8000) != 0) { - fStack16 = 0.00000000 - (fVar7 * 10.00000000) / 360.00000000; - } - } - else { - fStack16 = (fVar7 * 10.00000000) / 360.00000000 + 0.00000000; - } - } - bVar2 = fStack8 == 0.00000000; - } -code_r0x7f020b5c: - if ((((!bVar2) || (fStack12 != 0.00000000)) || (fStack16 != 0.00000000)) || - (fStack4 != 1.00000000)) { - fStack40 = (float)proc_7F02C190(); - if (fStack8 < 0.00000000) { - fStack8 = -fStack8; - } - else { - fStack8 = flt_80051D4C - fStack8; - } - if (fStack12 < 0.00000000) { - fStack12 = fStack12 + flt_80051D50; - } - pfVar4 = (float *)proc_7F078444(); - proc_7F058098(pfVar4,param_2); - fStack36 = param_2[0xc]; - fStack32 = param_2[0xd]; - fStack28 = param_2[0xe]; - param_2[0xc] = 0.00000000; - param_2[0xd] = 0.00000000; - param_2[0xe] = 0.00000000; - if ((fStack8 == 0.00000000) && (fStack16 == 0.00000000)) { - proc_7F0585FC(fStack12,extraout_a0,afStack104); - proc_7F058098(afStack104,param_2); - uVar5 = extraout_a0_04; - } - else { - fVar7 = fStack12 - fStack40; - if (fVar7 < 0.00000000) { - fVar7 = fVar7 + flt_80051D54; - } - proc_7F0585FC(fVar7,extraout_a0,afStack104); - proc_7F058098(afStack104,param_2); - uVar5 = extraout_a0_00; - if (fStack8 != 0.00000000) { - proc_7F058570(fStack8,extraout_a0_00,afStack104); - proc_7F058098(afStack104,param_2); - uVar5 = extraout_a0_01; - } - if (fStack16 != 0.00000000) { - proc_7F058688(fStack16,uVar5,afStack104); - proc_7F058098(afStack104,param_2); - uVar5 = extraout_a0_02; - } - proc_7F0585FC(fStack40,uVar5,afStack104); - proc_7F058098(afStack104,param_2); - uVar5 = extraout_a0_03; - } - if (fStack4 != 1.00000000) { - matrix_multiply_A1_by_F12(fStack4,uVar5,param_2); - } - param_2[0xc] = fStack36; - param_2[0xd] = fStack32; - param_2[0xe] = fStack28; - pfVar4 = (float *)proc_7F0783C4(); - proc_7F058098(pfVar4,param_2); - } - return; -} - - - -void proc_7F020D94(int param_1) - -{ - float extraout_f12; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - char *pcStack4; - - pcStack4 = *(char **)(param_1 + 0x18); - fStack16 = *(float *)(pcStack4 + 8) - 50.00000000; - fStack12 = *(float *)(param_1 + 0xac) - 1.00000000; - fStack8 = *(float *)(pcStack4 + 0x10) - 50.00000000; - fStack28 = *(float *)(pcStack4 + 8) + 50.00000000; - fStack24 = *(float *)(pcStack4 + 0xc) + 100.00000000; - fStack20 = *(float *)(pcStack4 + 0x10) + 50.00000000; - proc_7F03E18C((int)pcStack4); - proc_7F03E27C(pcStack4,&fStack16,&fStack28,extraout_f12); - proc_7F03E210((int)pcStack4); - return; -} - - - -void proc_7F020E40(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - int iVar1; - int iVar2; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - - iVar1 = *(int *)(param_1 + 0x18); - iVar2 = *(int *)(param_1 + 0x1c); - if ((*(ushort *)(param_1 + 0x12) & 0x800) == 0) { - getsuboffset(iVar2,(undefined4 *)(param_1 + 0xbc),param_3,param_4); - proc_7F070AEC(iVar2,param_2,1); - subcalcpos(iVar2,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - proc_7F04009C(iVar1,(byte *)(param_1 + 0xf8)); - getsuboffset(iVar2,(undefined4 *)(iVar1 + 8),extraout_a2_lo_00,extraout_a3_lo_00); - proc_7F020D94(param_1); - } - else { - subcalcpos(iVar2,param_2,param_3,param_4); - getsuboffset(iVar2,(undefined4 *)(iVar1 + 8),extraout_a2_lo_01,extraout_a3_lo_01); - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f021344) overlaps instruction at (ram,0x7f021340) -// -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -ulonglong proc_7F020EF0(char *param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - short *psVar1; - ushort *partdesc; - int iVar2; - longlong lVar3; - uint uVar6; - int *piVar7; - float *pfVar8; - undefined8 uVar4; - u32 uVar9; - ulonglong uVar5; - undefined4 *puVar10; - int iVar11; - char cVar13; - int iVar12; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - uint extraout_a1_lo; - uint extraout_a1_lo_00; - uint extraout_a1_lo_01; - uint extraout_a1_lo_02; - uint extraout_a1_lo_03; - uint extraout_a1_lo_04; - uint extraout_a1_lo_05; - uint extraout_a1_lo_06; - uint extraout_a1_lo_07; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - uint extraout_a1_lo_08; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 extraout_a2_lo_03; - undefined4 extraout_a2_lo_04; - undefined4 extraout_a2_lo_05; - undefined4 extraout_a2_lo_06; - undefined4 extraout_a2_lo_07; - undefined4 extraout_a2_lo_08; - undefined4 extraout_a2_lo_09; - undefined4 extraout_a2_lo_10; - undefined4 extraout_a2_lo_11; - undefined4 uVar14; - undefined8 extraout_a2; - undefined8 extraout_a2_00; - undefined4 extraout_a2_lo_12; - undefined4 extraout_a2_lo_13; - undefined4 extraout_a2_lo_14; - undefined8 extraout_a2_01; - undefined8 extraout_a2_02; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - undefined4 extraout_a3_lo_02; - undefined4 extraout_a3_lo_03; - undefined4 extraout_a3_lo_04; - undefined4 extraout_a3_lo_05; - undefined4 extraout_a3_lo_06; - undefined4 extraout_a3_lo_07; - undefined4 extraout_a3_lo_08; - undefined4 extraout_a3_lo_09; - undefined4 extraout_a3_lo_10; - undefined4 extraout_a3_lo_11; - undefined4 extraout_a3_lo_12; - undefined4 uVar15; - undefined8 extraout_a3; - undefined8 extraout_a3_00; - undefined4 extraout_a3_lo_13; - undefined4 extraout_a3_lo_14; - undefined4 extraout_a3_lo_15; - undefined8 extraout_a3_01; - undefined8 extraout_a3_02; - ushort uVar16; - float **ppfVar17; - float **ppfVar18; - float **ppfVar19; - float **ppfVar20; - float fVar21; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f14; - undefined4 auStack244 [16]; - float afStack180 [16]; - float fStack116; - float fStack112; - float fStack108; - float fStack104; - float fStack100; - float fStack96; - uint uStack92; - int iStack88; - uint uStack84; - undefined4 uStack80; - uint uStack76; - uint uStack72; - float *apfStack64 [4]; - float *pfStack48; - - ppfVar19 = (float **)&dword_8002CC6C; - ppfVar17 = apfStack64; - do { - ppfVar20 = ppfVar19 + 3; - ppfVar18 = ppfVar17 + 3; - *ppfVar17 = *ppfVar19; - ppfVar17[1] = ppfVar19[1]; - ppfVar17[2] = ppfVar19[2]; - ppfVar19 = ppfVar20; - ppfVar17 = ppfVar18; - } while (ppfVar20 != (float **)&dword_8002CCA8); - *ppfVar18 = _dword_8002CCA8; - psVar1 = *(short **)(param_1 + 4); - uStack72 = *(uint *)(psVar1 + 0xe); - uStack80 = 1; - uStack84 = clock_timer; - if (((*(uint *)(psVar1 + 10) & 0x400) == 0) || ((int)(*(uint *)(psVar1 + 10) << 0xd) < 0)) { - if (dword_8002C904 == 0) { - proc_7F0326BC((int)psVar1); - param_2 = extraout_a1_lo_00; - param_4 = extraout_a3_lo_01; - param_3 = extraout_a2_lo_00; - if (*(int *)(psVar1 + 0xe) == 0) { - return 1; - } - } - else { - if (*(int *)(animation_table_ptrs1 + dword_8002C908 * 4) != 1) { - uVar6 = proc_7F06F5AC(uStack72); - param_2 = *(uint *)(animation_table_ptrs1 + dword_8002C908 * 4); - param_3 = 0; - param_4 = extraout_a3_lo; - if (uVar6 != param_2) { - proc_7F06FCA8(uStack72,param_2,0,extraout_f12,0,extraout_f14); - param_2 = extraout_a1_lo; - param_4 = extraout_a3_lo_00; - param_3 = extraout_a2_lo; - } - } - } - if (dword_8002C90C == 0) { - uVar16 = psVar1[9]; - } - else { - uStack84 = 0; - if (dword_8002C910 == 0) { - uVar16 = psVar1[9]; - } - else { - uStack84 = 1; - uVar16 = psVar1[9]; - } - } - } - else { - uVar16 = psVar1[9]; - } - if ((uVar16 & 0x20) != 0) { - disable_sounds_attached_to_player_then_something((int)param_1); - return 1; - } - if (*(int *)(psVar1 + 0xb0) == 0) { - iVar11 = *(int *)(psVar1 + 0xb2); - } - else { - iVar11 = *(int *)(*(int *)(psVar1 + 0xb0) + 4); - if ((*(uint *)(iVar11 + 100) & 4) == 0) { - iVar11 = *(int *)(psVar1 + 0xb2); - } - else { - proc_7F041024(iVar11,1); - iVar11 = *(int *)(psVar1 + 0xb2); - param_2 = extraout_a1_lo_01; - param_4 = extraout_a3_lo_02; - param_3 = extraout_a2_lo_01; - } - } - if (iVar11 == 0) { - uVar6 = *(uint *)(psVar1 + 10); - } - else { - if ((*(uint *)(*(int *)(iVar11 + 4) + 100) & 4) == 0) { - uVar6 = *(uint *)(psVar1 + 10); - } - else { - proc_7F041024(*(int *)(iVar11 + 4),1); - uVar6 = *(uint *)(psVar1 + 10); - param_2 = extraout_a1_lo_02; - param_4 = extraout_a3_lo_03; - param_3 = extraout_a2_lo_02; - } - } - if ((uVar6 & 0x400) == 0) { - if (*param_1 == '\x06') { - lVar3 = proc_7F09B15C((int)param_1); - param_4 = extraout_a3_lo_04; - param_3 = extraout_a2_lo_03; - if ((&ptr_BONDdata_p1)[(int)lVar3]->unknown != 1) { - uVar6 = *(uint *)(psVar1 + 10); - param_2 = extraout_a1_lo_03; - param_4 = extraout_a3_lo_04; - param_3 = extraout_a2_lo_03; - goto LAB_7f021118; - } - } - else { -LAB_7f021118: - if (-1 < (int)(uVar6 << 8)) { - cVar13 = *(char *)((int)psVar1 + 7); - if ((cVar13 == '\x0e') || (cVar13 == '\x0f')) { - if (((cVar13 == '\x0e') && (*(char *)(psVar1 + 0x1c) == '\x06')) || - ((cVar13 == '\x0f' && (*(char *)(psVar1 + 0x2e) == '\x06')))) { - fVar21 = getinstsize(uStack72,param_2,0xe,param_4); - uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_00,(int)fVar21); - if (uStack76 != 0) { - getsuboffset(uStack72,(undefined4 *)(psVar1 + 0x5e),extraout_a2_lo_04, - extraout_a3_lo_05); - subcalcpos(uStack72,extraout_a1_lo_04,extraout_a2_lo_05,extraout_a3_lo_06); - proc_7F04009C((int)param_1,(byte *)(psVar1 + 0x7c)); - getsuboffset(uStack72,(undefined4 *)(param_1 + 8),extraout_a2_lo_06,extraout_a3_lo_07) - ; - proc_7F020D94((int)psVar1); - } - } - else { - proc_7F020E40((int)psVar1,uStack84,0xe,param_4); - fVar21 = getinstsize(uStack72,extraout_a1_lo_05,extraout_a2_lo_07,extraout_a3_lo_08); - uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_01,(int)fVar21); - if (uStack76 != 0) { - if (*(char *)((int)psVar1 + 7) == '\x0e') { - *(undefined4 *)(psVar1 + 0x3c) = global_timer; - } - else { - if (*(char *)((int)psVar1 + 7) == '\x0f') { - *(undefined4 *)(psVar1 + 0x4e) = global_timer; - } - } - } - } - cVar13 = *(char *)((int)psVar1 + 7); - } - else { - if ((cVar13 == '\x03') && (*(int *)(psVar1 + 0x16) == 0)) { - fVar21 = getinstsize(uStack72,param_2,0xe,param_4); - uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_02,(int)fVar21); - if ((uStack76 == 0) || (*(int *)(psVar1 + 0x1e) != 0)) { - proc_7F070AEC(uStack72,uStack84,0); - } - else { - proc_7F020E40((int)psVar1,uStack84,extraout_a2_lo_08,extraout_a3_lo_09); - } - cVar13 = *(char *)((int)psVar1 + 7); - } - else { - if (cVar13 == '\x01') { - fVar21 = getinstsize(uStack72,param_2,0xe,param_4); - uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_03,(int)fVar21); - if ((uStack76 == 0) && ((*(uint *)(psVar1 + 10) & 1) == 0)) { - if (*(int *)(uStack72 + 0x54) != 0) { - proc_7F070AEC(uStack72,uStack84,0); - } - } - else { - proc_7F020E40((int)psVar1,uStack84,extraout_a2_lo_09,extraout_a3_lo_10); - } - cVar13 = *(char *)((int)psVar1 + 7); - } - else { - if ((uVar6 & 0x4000) == 0) { - proc_7F020E40((int)psVar1,uStack84,0xe,param_4); - uVar6 = extraout_a1_lo_07; - uVar14 = extraout_a2_lo_11; - uVar15 = extraout_a3_lo_12; - } - else { - proc_7F070AEC(uStack72,uStack84,0); - uVar6 = extraout_a1_lo_06; - uVar14 = extraout_a2_lo_10; - uVar15 = extraout_a3_lo_11; - } - fVar21 = getinstsize(uStack72,uVar6,uVar14,uVar15); - uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_04,(int)fVar21); - cVar13 = *(char *)((int)psVar1 + 7); - } - } - } - goto LAB_7f0213c8; - } - } - uStack76 = 1; - if (((*(char *)((int)psVar1 + 7) == '\x03') && (*(int *)(psVar1 + 0x16) == 0)) && - (param_3 = 0, *(int *)(psVar1 + 0x1e) != 0)) { - proc_7F070AEC(uStack72,uStack84,0); - } - else { - proc_7F020E40((int)psVar1,uStack84,param_3,param_4); - } - cVar13 = *(char *)((int)psVar1 + 7); - } - else { - uStack76 = 0; - cVar13 = *(char *)((int)psVar1 + 7); - } -LAB_7f0213c8: - if (cVar13 == '\x01') { - if (*(int *)(uStack72 + 0x54) != 0) { - uVar16 = psVar1[9]; - goto LAB_7f0213f8; - } - if (*param_1 == '\x06') goto LAB_7f0213f4; - } - else { -LAB_7f0213f4: - uVar16 = psVar1[9]; -LAB_7f0213f8: - psVar1[9] = uVar16 | 0x200; - } - proc_7F0205F0((int)psVar1); - uVar4 = extraout_a1; - extraout_a2_02 = extraout_a2; - extraout_a3_02 = extraout_a3; - if (*(int *)(psVar1 + 0x10) != 0) { - proc_7F06B248(*(int *)(psVar1 + 0x10)); - *(undefined4 *)(psVar1 + 0x10) = 0; - uVar4 = extraout_a1_00; - extraout_a2_02 = extraout_a2_00; - extraout_a3_02 = extraout_a3_00; - } - if (uStack76 == 0) { - iVar11 = *(int *)(psVar1 + 0xb0); - if (iVar11 == 0) { - iVar11 = *(int *)(psVar1 + 0xb2); - } - else { - *(byte *)(iVar11 + 1) = *(byte *)(iVar11 + 1) & 0xfd; - iVar11 = *(int *)(psVar1 + 0xb2); - } - if (iVar11 == 0) { - iVar11 = *(int *)(psVar1 + 0xec); - } - else { - *(byte *)(iVar11 + 1) = *(byte *)(iVar11 + 1) & 0xfd; - iVar11 = *(int *)(psVar1 + 0xec); - } - if (iVar11 != 0) { - *(byte *)(iVar11 + 1) = *(byte *)(iVar11 + 1) & 0xfd; - } - param_1[1] = param_1[1] & 0xfd; - *(undefined *)(psVar1 + 0x7a) = *(undefined *)(psVar1 + 0x7c); - *(undefined *)((int)psVar1 + 0xf5) = *(undefined *)((int)psVar1 + 0xf9); - *(undefined *)(psVar1 + 0x7b) = *(undefined *)(psVar1 + 0x7d); - *(undefined *)((int)psVar1 + 0xf7) = *(undefined *)((int)psVar1 + 0xfb); - goto LAB_7f021aac; - } - get_debug_chrnum_flag(); - param_1[1] = param_1[1] | 2; - *(uint *)(psVar1 + 10) = *(uint *)(psVar1 + 10) | 8; - uVar6 = proc_7F0927BC(0xc); - if (uVar6 != 0) { - set_flt_80036088(0.31250000); - } - dword_80036090 = proc_7F02083C; - end_save_files = psVar1; - pfStack48 = (float *)proc_7F0783C4(); - apfStack64[0] = pfStack48; - proc_7F0BD714((int)*(short *)(*(int *)(uStack72 + 8) + 0xe) << 6); - if ((-1 < *(char *)((int)end_save_files + 0x11)) && - (*(char *)((int)end_save_files + 0x11) = - *(char *)((int)end_save_files + 0x11) + (char)clock_timer, - '\x1d' < *(char *)((int)end_save_files + 0x11))) { - *(undefined *)((int)end_save_files + 0x11) = 0xff; - } - subcalcmatrices(apfStack64,uStack72,extraout_a2_lo_12,extraout_a3_lo_13); - dword_80036090 = NULL; - set_flt_80036088(1.00000000); - proc_7F040310((byte *)(psVar1 + 0x7a),(byte *)(psVar1 + 0x7c)); - fVar21 = proc_7F06C768(uStack72,extraout_a1_lo_08,extraout_a2_lo_13,extraout_a3_lo_14); - *(float *)(param_1 + 0x18) = fVar21; - piVar7 = proc_7F06B120(NULL,uStack72); - *(int **)(psVar1 + 0x10) = piVar7; - proc_7F0523F8((int)param_1,0,(int **)(psVar1 + 0x10)); - proc_7F0523F8((int)param_1,1,(int **)(psVar1 + 0x10)); - iVar11 = *(int *)(psVar1 + 0xec); - if (iVar11 != 0) { - iStack88 = *(int *)(iVar11 + 4); - uStack92 = *(uint *)(iStack88 + 0x14); - *(byte *)(iVar11 + 1) = *(byte *)(iVar11 + 1) | 2; - pfVar8 = (float *)proc_7F06C660(uStack72,*(ushort **)(uStack92 + 0x1c),0); - apfStack64[0] = pfVar8; - proc_7F0BD714((int)*(short *)(*(int *)(uStack92 + 8) + 0xe) << 6); - pfStack48 = pfVar8; - instcalcmatrices(apfStack64,uStack92,extraout_a2_lo_14,extraout_a3_lo_15); - if ((*(char *)(psVar1 + 3) < '*') || ('E' < *(char *)(psVar1 + 3))) { -LAB_7f021998: - uVar16 = psVar1[9]; - } - else { - fStack104 = dword_8002CCAC; - fStack100 = (float)dword_8002CCB0; - fStack96 = (float)dword_8002CCB4; - uVar4 = get_hat_model(*(int *)(psVar1 + 0xec)); - iVar11 = ((int)*(char *)(psVar1 + 3) + -0x2a) * 0x90 + (int)uVar4 * 0x18; - pfVar8 = (float *)(&flt_8003E464 + iVar11); - uVar9 = get_debug_render_raster(); - if (uVar9 == 0) { - uVar5 = get_controller_buttons_held('\0',0x20); - if (uVar5 != 0) { - uVar5 = get_controller_buttons_held('\0',0x8000); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b94) = *(float *)(iVar11 + -0x7ffc1b94) - flt_80051D58; - } - uVar5 = get_controller_buttons_held('\0',0x4000); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b94) = *(float *)(iVar11 + -0x7ffc1b94) + flt_80051D5C; - } - uVar5 = get_controller_buttons_held('\0',4); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b98) = *(float *)(iVar11 + -0x7ffc1b98) - flt_80051D60; - } - uVar5 = get_controller_buttons_held('\0',8); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b98) = *(float *)(iVar11 + -0x7ffc1b98) + flt_80051D64; - } - uVar5 = get_controller_buttons_held('\0',2); - if (uVar5 != 0) { - *pfVar8 = *pfVar8 - flt_80051D68; - } - uVar5 = get_controller_buttons_held('\0',1); - if (uVar5 != 0) { - *pfVar8 = *pfVar8 + flt_80051D6C; - } - } - uVar5 = get_controller_buttons_held('\0',0x10); - if (uVar5 != 0) { - uVar5 = get_controller_buttons_held('\0',0x8000); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b88) = *(float *)(iVar11 + -0x7ffc1b88) * flt_80051D70; - } - uVar5 = get_controller_buttons_held('\0',0x4000); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b88) = *(float *)(iVar11 + -0x7ffc1b88) * flt_80051D74; - } - uVar5 = get_controller_buttons_held('\0',4); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b8c) = *(float *)(iVar11 + -0x7ffc1b8c) * flt_80051D78; - } - uVar5 = get_controller_buttons_held('\0',8); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b8c) = *(float *)(iVar11 + -0x7ffc1b8c) * flt_80051D7C; - } - uVar5 = get_controller_buttons_held('\0',2); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b90) = *(float *)(iVar11 + -0x7ffc1b90) * flt_80051D80; - } - uVar5 = get_controller_buttons_held('\0',1); - if (uVar5 != 0) { - *(float *)(iVar11 + -0x7ffc1b90) = *(float *)(iVar11 + -0x7ffc1b90) * flt_80051D84; - } - } - } - fStack104 = *pfVar8 * flt_80051D88; - fStack100 = *(float *)(iVar11 + -0x7ffc1b98) * flt_80051D88; - fStack96 = *(float *)(iVar11 + -0x7ffc1b94) * flt_80051D88; - fStack108 = *(float *)(iVar11 + -0x7ffc1b90); - fStack112 = *(float *)(iVar11 + -0x7ffc1b8c); - fStack116 = *(float *)(iVar11 + -0x7ffc1b88); - init_something_copy_posdata_to_it((int *)&fStack104,(int *)afStack180); - proc_7F0589B4(fStack108,extraout_a0,afStack180); - proc_7F0589E4(fStack112,extraout_a0_00,(int)afStack180); - proc_7F058A4C(fStack116,extraout_a0_01,(int)afStack180); - proc_7F05818C(*(float **)(uStack92 + 0xc),afStack180,(int)auStack244); - proc_7F058020(auStack244,*(undefined4 **)(uStack92 + 0xc)); - if ((int)uVar4 == 2) { - uStack80 = 0; - goto LAB_7f021998; - } - uVar16 = psVar1[9]; - } - if (((uVar16 & 1) == 0) || ((*(uint *)(iStack88 + 100) & 0x80) == 0)) { - piVar7 = proc_7F06B120(*(int **)(psVar1 + 0x10),uStack92); - *(int **)(psVar1 + 0x10) = piVar7; - } - } - partdesc = *(ushort **)(*(int *)(*(int *)(uStack72 + 8) + 8) + 0x10); - if (partdesc != NULL) { - piVar7 = (int *)extract_id_from_object_structure_microcode(uStack72,partdesc); - if ((*piVar7 != 0) && (partdesc = *(ushort **)(*(int *)(*piVar7 + 8) + 4), partdesc != NULL)) { - puVar10 = (undefined4 *)extract_id_from_object_structure_microcode(uStack72,partdesc); - *puVar10 = uStack80; - } - } - proc_7F06B29C(*(int **)(psVar1 + 0x10)); - iVar11 = proc_7F06BB28(*(int *)(psVar1 + 0x10)); - *(int *)(psVar1 + 0x10) = iVar11; - uVar4 = extraout_a1_01; - extraout_a2_02 = extraout_a2_01; - extraout_a3_02 = extraout_a3_01; -LAB_7f021aac: - if ((*(uint *)(psVar1 + 10) & 0x400) == 0) { - uVar16 = psVar1[9]; - if ((uVar16 & 1) != 0) { - iVar11 = *(int *)(param_1 + 0x20); - if (iVar11 != 0) { - iVar2 = *(int *)(iVar11 + 0x24); - while (iVar12 = iVar2, - proc_7F04C130(iVar11,(uint)uVar4,(int)extraout_a2_02,(int)extraout_a3_02), iVar12 != 0 - ) { - uVar4 = extraout_a1_02; - extraout_a2_02 = extraout_a2_02; - extraout_a3_02 = extraout_a3_02; - iVar2 = *(int *)(iVar12 + 0x24); - iVar11 = iVar12; - } - uVar16 = psVar1[9]; - } - psVar1[9] = uVar16 & 0xfffe; - } - proc_7F02E26C(psVar1); - } - return 0; -} - - - -void proc_7F021B20(int param_1) - -{ - int iVar1; - ushort uVar2; - int iVar3; - - iVar3 = *(int *)(*(int *)(param_1 + 0x18) + 0x20); - if (iVar3 == 0) { - uVar2 = *(ushort *)(param_1 + 0x12); - } - else { - iVar1 = *(int *)(param_1 + 0x1d8); - while( true ) { - if (iVar3 == iVar1) { - iVar3 = *(int *)(iVar3 + 0x24); - } - else { - if (iVar3 == *(int *)(param_1 + 0x164)) { - iVar3 = *(int *)(iVar3 + 0x24); - } - else { - if (iVar3 == *(int *)(param_1 + 0x160)) { - iVar3 = *(int *)(iVar3 + 0x24); - } - else { - if ((*(uint *)(*(int *)(iVar3 + 4) + 8) & 0x2000) == 0) { - proc_7F04BFD0(iVar3,1); - iVar3 = *(int *)(iVar3 + 0x24); - } - else { - iVar3 = *(int *)(iVar3 + 0x24); - } - } - } - } - if (iVar3 == 0) break; - iVar1 = *(int *)(param_1 + 0x1d8); - } - uVar2 = *(ushort *)(param_1 + 0x12); - } - *(ushort *)(param_1 + 0x12) = uVar2 | 1; - return; -} - - - -void proc_7F021BB4(undefined *param_1) - -{ - byte_8002CCB8 = *param_1; - DAT_8002ccb9 = param_1[1]; - DAT_8002ccba = param_1[2]; - return; -} - - - -void proc_7F021BD8(undefined *param_1) - -{ - *param_1 = byte_8002CCB8; - param_1[1] = DAT_8002ccb9; - param_1[2] = DAT_8002ccba; - return; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -longlong proc_7F021BFC(char *param_1,uint *param_2,uint param_3) - -{ - int iVar1; - int iVar2; - int iVar3; - int iVar4; - longlong lVar5; - undefined4 extraout_a2_lo; - int iVar6; - undefined4 extraout_a3_lo; - int iVar7; - int iVar8; - undefined4 *puVar9; - undefined4 *puVar10; - undefined4 *puVar11; - undefined4 *puVar12; - float fVar13; - float extraout_f12; - float extraout_f14; - uint *puStackX4; - int iStack140; - uint uStack136; - uint uStack132; - uint uStack128; - uint uStack124; - float fStack120; - float fStack116; - undefined4 uStack104; - undefined4 uStack100; - undefined4 uStack96; - uint *puStack92; - undefined4 uStack56; - uint uStack52; - uint uStack48; - uint uStack36; - undefined4 uStack32; - int iStack28; - float afStack24 [3]; - float fStack12; - - iVar1 = *(int *)(param_1 + 4); - uStack36 = (uint)*(byte *)(iVar1 + 0xc); - if (-1 < *(int *)(iVar1 + 0x14) << 5) { - fVar13 = getinstsize(*(int *)(iVar1 + 0x1c),(uint)param_2,param_3,*(int *)(iVar1 + 0x1c)); - proc_7F054B80((int)param_1); - uStack36 = (uint)((float)uStack36 * fVar13); - } - if (((int)uStack36 < 0xff) || (*(int *)(iVar1 + 0x14) << 0xe < 0)) { - if (param_3 == 0) { - return (longlong)(int)param_2; - } - uStack32 = 3; - } - else { - if (param_3 == 0) { - uStack32 = 1; - } - else { - uStack32 = 2; - } - } - lVar5 = if_sky_present_convert_values((int)param_1,afStack24); - iStack28 = (int)lVar5; - puStackX4 = param_2; - if (lVar5 != 0) { - puVar11 = &dword_8002CCBC; - puVar9 = &uStack104; - puStackX4 = param_2; - if (0 < (int)uStack36) { - do { - puVar12 = puVar11 + 3; - puVar10 = puVar9 + 3; - *puVar9 = *puVar11; - puVar9[1] = puVar11[1]; - puVar9[2] = puVar11[2]; - puVar11 = puVar12; - puVar9 = puVar10; - } while (puVar12 != (undefined4 *)&dword_8002CCF8); - iVar6 = 0; - *puVar10 = _dword_8002CCF8; - iStack140 = 0x50; - iVar2 = *(int *)(iVar1 + 0x160); - iVar3 = *(int *)(iVar1 + 0x164); - iVar4 = *(int *)(iVar1 + 0x1d8); - iVar7 = 0; - iVar8 = 0; - if (iVar2 != 0) { - iVar6 = *(int *)(iVar2 + 4); - } - if (iVar3 != 0) { - iVar7 = *(int *)(iVar3 + 4); - } - if (iVar4 != 0) { - iVar8 = *(int *)(iVar4 + 4); - } - lVar5 = proc_7F054A64(param_1,&fStack120); - if ((lVar5 < 1) || (*(int *)(iVar1 + 0x14) << 8 < 0)) { - puStack92 = proc_7F0B4FB4(param_2); - } - else { - puStack92 = proc_7F0B4FF4(param_2,extraout_f12,extraout_f14,fStack120,fStack116); - } - uStack100 = 1; - uStack96 = uStack32; - if ((*(uint *)(iVar1 + 0x14) & 0x2000) == 0) { - if (iStack28 == 1) { - iStack140 = (int)((1.00000000 - fStack12) * 80.00000000); - } - } - else { - iStack140 = 0; - } - proc_7F073FC8(iStack140); - uStack136 = (uint)*(byte *)(iVar1 + 0xf4); - uStack132 = (uint)*(byte *)(iVar1 + 0xf5); - uStack128 = (uint)*(byte *)(iVar1 + 0xf6); - uStack124 = (uint)*(byte *)(iVar1 + 0xf7); - proc_7F040384((int *)&uStack136,(longlong)iStack28,afStack24); - uStack52 = (uint)DAT_8002ccba << 8 | (uint)byte_8002CCB8 << 0x18 | (uint)DAT_8002ccb9 << 0x10; - uStack48 = uStack124 | uStack136 << 0x18 | uStack132 << 0x10 | uStack128 << 8; - if ((int)uStack36 < 0xff) { - uStack56 = 8; - uStack52 |= uStack36 & 0xff; - } - else { - uStack56 = 7; - } - pplayersperm->drawplayercount = pplayersperm->drawplayercount + 1; - drawjointlist((int)&uStack104,*(uint **)(iVar1 + 0x20),extraout_a2_lo,extraout_a3_lo); - puStackX4 = puStack92; - if ((iVar6 != 0) && - (((ulonglong)*(byte *)(iVar6 + 2) & (longlong)(1 << (param_3 & 0x1f)) & 0xffU) != 0)) { - puStackX4 = proc_7F0A1A94(puStack92,iVar2,param_3); - } - if ((iVar7 != 0) && - (((ulonglong)*(byte *)(iVar7 + 2) & (longlong)(1 << (param_3 & 0x1f)) & 0xffU) != 0)) { - puStackX4 = proc_7F0A1A94(puStackX4,iVar3,param_3); - } - if ((iVar8 != 0) && - (((ulonglong)*(byte *)(iVar8 + 2) & (longlong)(1 << (param_3 & 0x1f)) & 0xffU) != 0)) { - puStackX4 = proc_7F0A1A94(puStackX4,iVar4,param_3); - } - if (param_3 != 0) { - proc_7F08BD48(*(undefined4 **)(*(int *)(iVar1 + 0x1c) + 0xc), - (int)*(short *)(*(int *)(*(int *)(iVar1 + 0x1c) + 8) + 0xe)); - if ((iVar6 != 0) && ((*(uint *)(iVar6 + 100) & 0x800) == 0)) { - proc_7F08BD48(*(undefined4 **)(*(int *)(iVar6 + 0x14) + 0xc), - (int)*(short *)(*(int *)(*(int *)(iVar6 + 0x14) + 8) + 0xe)); - } - if ((iVar7 != 0) && ((*(uint *)(iVar7 + 100) & 0x800) == 0)) { - proc_7F08BD48(*(undefined4 **)(*(int *)(iVar7 + 0x14) + 0xc), - (int)*(short *)(*(int *)(*(int *)(iVar7 + 0x14) + 8) + 0xe)); - } - if (iVar8 != 0) { - proc_7F08BD48(*(undefined4 **)(*(int *)(iVar8 + 0x14) + 0xc), - (int)*(short *)(*(int *)(*(int *)(iVar8 + 0x14) + 8) + 0xe)); - } - } - } - } - if (param_3 != 0) { - proc_7F06B248(*(int *)(iVar1 + 0x20)); - *(undefined4 *)(iVar1 + 0x20) = 0; - } - return (longlong)(int)puStackX4; -} - - - -void proc_7F022078(int param_1,longlong param_2,float *param_3,undefined4 *param_4) - -{ - animation_something *paVar1; - u32 uVar2; - float *pfVar3; - longlong lVar4; - int iVar5; - int iVar6; - float fVar7; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float local_14; - float local_10; - float local_c; - - iVar5 = 0; - iVar6 = 0; - if (dword_8002C914.anonymous_0 != -1) { - paVar1 = &dword_8002C914; - lVar4 = (longlong)dword_8002C914.anonymous_0; - do { - iVar6 = iVar5; - if (param_2 == lVar4) break; - lVar4 = (longlong)paVar1[1].anonymous_0; - iVar5 += 1; - paVar1 = paVar1 + 1; - iVar6 = 0; - } while (lVar4 != -1); - } - if ((&dword_8002C914)[iVar6].field_10 == 0) { - iVar5 = (&dword_8002C914)[iVar6].field_4; - } - else { - uVar2 = get_random_value(); - in_f12 = extraout_f12; - if ((uVar2 & 4) == 0) { - fVar7 = sqrtf(param_3[2] * param_3[2] + *param_3 * *param_3 + param_3[1] * param_3[1]); - local_c = 42.00000000 / fVar7 + 1.00000000; - local_14 = *param_3 * local_c; - local_10 = param_3[1] * local_c; - local_c = param_3[2] * local_c; - pfVar3 = (float *)proc_7F078444(); - proc_7F058474(pfVar3,&local_14); - proc_7F0A3E1C(&local_14,(&dword_8002C914)[iVar6].field_10,extraout_f12_00, - (short)(&dword_8002C914)[iVar6].field_18); - in_f12 = extraout_f12_01; - } - iVar5 = (&dword_8002C914)[iVar6].field_4; - } - if (iVar5 != 0) { - proc_7F0A3E1C(param_4,iVar5,in_f12,(short)(&dword_8002C914)[iVar6].field_C); - } - return; -} - - - -void proc_7F0221DC(int param_1,int param_2,ushort *param_3,float *param_4) - -{ - char cVar1; - int *piVar2; - u32 uVar3; - char cVar4; - int iVar5; - short *psVar6; - undefined4 *puVar7; - longlong lVar8; - int iVar9; - longlong lVar10; - ushort *puVar11; - undefined4 *puVar12; - ushort uVar13; - ushort *puVar14; - int iVar15; - int iVar16; - int *piVar17; - ushort *puVar18; - ushort *partdesc; - longlong lVar19; - longlong lVar20; - int iVar21; - float fVar22; - float fVar23; - float fVar24; - int iStack80; - - fVar22 = *param_4; - partdesc = NULL; - lVar19 = 0; - iVar9 = 0; - iVar15 = 0x7fffffff; - fVar23 = param_4[1]; - fVar24 = param_4[2]; - if (param_3 == NULL) { -LAB_7f0223c0: - if (partdesc != NULL) { - iVar15 = *(int *)(partdesc + 2); - piVar2 = (int *)extract_id_from_object_structure_microcode(param_1,partdesc); - iVar16 = 0; - piVar17 = NULL; - iStack80 = 0; - uVar3 = get_random_value(); - cVar1 = (char)(uVar3 % 0x32); - cVar4 = cVar1 + '\x14'; - if (param_2 == 8) { - cVar4 = cVar1 + 'x'; - } - if (param_2 == 0xf) { - cVar4 += '2'; - iVar5 = *(int *)(iVar15 + 0x10); - } - else { - iVar5 = *(int *)(iVar15 + 0x10); - } - iVar9 *= 0x10; - partdesc = *(ushort **)(iVar5 + iVar9 + 8); - if (partdesc != NULL) { - iVar16 = *(int *)(partdesc + 2); - piVar17 = (int *)extract_id_from_object_structure_microcode(param_1,partdesc); - iStack80 = (int)*(short *)(*(int *)(iVar15 + 0x10) + iVar9 + 0xc); - } - if ((*(int *)(iVar15 + 8) == *piVar2) && - (puVar7 = (undefined4 *)proc_7F09BE4C((longlong)*(short *)(iVar15 + 0xc),0xcccc,0,0), - puVar7 != NULL)) { - *(undefined4 **)piVar2 = puVar7; - lVar19 = 0; - iVar5 = 0; - if (0 < *(short *)(iVar15 + 0xc)) { - iVar21 = *(int *)(iVar15 + 8); - while( true ) { - lVar19 = (longlong)((int)lVar19 + 1); - puVar12 = (undefined4 *)(iVar21 + iVar5); - iVar5 += 0x10; - *puVar7 = *puVar12; - puVar7[1] = puVar12[1]; - puVar7[2] = puVar12[2]; - puVar7[3] = puVar12[3]; - if ((longlong)*(short *)(iVar15 + 0xc) <= lVar19) break; - iVar21 = *(int *)(iVar15 + 8); - puVar7 = puVar7 + 4; - } - } - } - if (piVar17 == NULL) { - iVar5 = *(int *)(iVar15 + 8); - } - else { - if ((*(int *)(iVar16 + 8) == *piVar17) && - (puVar7 = (undefined4 *)proc_7F09BE4C((longlong)*(short *)(iVar16 + 0xc),0xcccc,0,0), - puVar7 != NULL)) { - *(undefined4 **)piVar17 = puVar7; - lVar19 = 0; - iVar5 = 0; - if (0 < *(short *)(iVar16 + 0xc)) { - iVar21 = *(int *)(iVar16 + 8); - while( true ) { - lVar19 = (longlong)((int)lVar19 + 1); - puVar12 = (undefined4 *)(iVar21 + iVar5); - iVar5 += 0x10; - *puVar7 = *puVar12; - puVar7[1] = puVar12[1]; - puVar7[2] = puVar12[2]; - puVar7[3] = puVar12[3]; - if ((longlong)*(short *)(iVar16 + 0xc) <= lVar19) break; - iVar21 = *(int *)(iVar16 + 8); - puVar7 = puVar7 + 4; - } - } - } - iVar5 = *(int *)(iVar15 + 8); - } - if ((iVar5 != *piVar2) && - (lVar19 = (longlong)*(short *)(*(int *)(iVar15 + 0x10) + iVar9 + 6), -1 < lVar19)) { - iVar9 = *piVar2; - while( true ) { - *(char *)(iVar9 + (int)lVar19 * 0x10 + 0xf) = cVar4; - lVar19 = (longlong)*(short *)(*(int *)(iVar15 + 0x14) + (int)lVar19 * 2); - if (lVar19 < 0) break; - iVar9 = *piVar2; - } - } - if (((piVar17 != NULL) && (*(int *)(iVar16 + 8) != *piVar17)) && - (lVar19 = (longlong)*(short *)(*(int *)(iVar16 + 0x10) + iStack80 * 0x10 + 6), -1 < lVar19) - ) { - iVar9 = *piVar17; - while( true ) { - *(char *)(iVar9 + (int)lVar19 * 0x10 + 0xf) = cVar4; - lVar19 = (longlong)*(short *)(*(int *)(iVar16 + 0x14) + (int)lVar19 * 2); - if (lVar19 < 0) break; - iVar9 = *piVar17; - } - } - } - return; - } - uVar13 = *param_3; - puVar14 = param_3; - do { - uVar13 &= 0xff; - if (uVar13 == 8) { - proc_7F06E970(param_1,puVar14); - puVar11 = *(ushort **)(puVar14 + 10); - } - else { - if (uVar13 == 0x12) { - process_12_handle_switch(param_1,puVar14); - puVar11 = *(ushort **)(puVar14 + 10); - } - else { - if (uVar13 == 0x17) { - process_17_pointer_to_head(param_1,puVar14); - puVar11 = *(ushort **)(puVar14 + 10); - } - else { - puVar11 = *(ushort **)(puVar14 + 10); - if (uVar13 == 0x18) { - lVar8 = 0; - lVar10 = (longlong)*(short *)(*(int *)(puVar14 + 2) + 0xe); - if (0 < lVar10) { - psVar6 = *(short **)(*(int *)(puVar14 + 2) + 0x10); - lVar20 = lVar19; - puVar18 = partdesc; - do { - iVar9 = ((int)fVar22 - (int)*psVar6) * ((int)fVar22 - (int)*psVar6) + - ((int)fVar23 - (int)psVar6[1]) * ((int)fVar23 - (int)psVar6[1]) + - ((int)fVar24 - (int)psVar6[2]) * ((int)fVar24 - (int)psVar6[2]); - lVar19 = lVar8; - partdesc = puVar14; - if (iVar15 <= iVar9) { - lVar19 = lVar20; - iVar9 = iVar15; - partdesc = puVar18; - } - iVar15 = iVar9; - lVar8 = (longlong)((int)lVar8 + 1); - psVar6 = psVar6 + 8; - lVar20 = lVar19; - puVar18 = partdesc; - } while (lVar8 < lVar10); - } - } - } - } - } - iVar9 = (int)lVar19; - if ((puVar11 == NULL) || ((puVar14 != param_3 && ((uVar13 == 10 || (uVar13 == 0x11)))))) { - while (puVar11 = puVar14, puVar14 != NULL) { - if (puVar14 == param_3) { - puVar11 = NULL; - break; - } - puVar11 = *(ushort **)(puVar14 + 6); - if (*(ushort **)(puVar14 + 6) != NULL) break; - puVar14 = *(ushort **)(puVar14 + 4); - } - } - puVar14 = puVar11; - if (puVar14 == NULL) goto LAB_7f0223c0; - uVar13 = *puVar14; - } while( true ); -} - - - -// WARNING: Instruction at (ram,0x7f0227bc) overlaps instruction at (ram,0x7f0227b8) -// - -void proc_7F022648(int param_1,float *param_2,undefined4 param_3,undefined4 param_4) - -{ - bool bVar1; - longlong lVar2; - int iVar3; - uint extraout_a1_lo; - uint uVar4; - undefined4 extraout_a2_lo; - int iVar5; - undefined4 extraout_a3_lo; - undefined8 extraout_a3; - undefined8 extraout_a3_00; - undefined8 uVar6; - float *pfVar7; - ulonglong uVar8; - float fVar9; - float fVar10; - float fVar11; - float extraout_f12; - float fStack124; - float fStack120; - float fStack116; - int *apiStack112 [5]; - float fStack92; - int iStack88; - ushort *puStack84; - int iStack80; - float afStack76 [12]; - int iStack28; - undefined4 *puStack24; - int aiStack20 [2]; - float fStack12; - int iStack4; - - iStack4 = *(int *)(param_1 + 4); - if (*(char *)(iStack4 + 7) != '\x05') { - iVar3 = *(int *)(iStack4 + 0x1c); - fStack12 = getinstsize(iVar3,(uint)param_2,param_3,param_4); - if (((*(byte *)(param_1 + 1) & 2) != 0) && - (*(float *)(param_1 + 0x18) - fStack12 < param_2[0xd])) { - aiStack20[0] = 0; - puStack24 = NULL; - iStack28 = 0; - puStack84 = NULL; - iStack88 = getsubmatrix(iVar3,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - fVar11 = 0.00000000; - uVar4 = 0; - uVar6 = extraout_a3; - iVar5 = iStack4; - do { - if (*(int *)(iVar5 + 0x160) != 0) { - fStack92 = fVar11; - fVar11 = getinstsize(*(int *)(*(int *)(*(int *)(iVar5 + 0x160) + 4) + 0x14),uVar4,iVar5, - (int)uVar6); - fVar11 = fVar11 * *(float *)(iVar3 + 0x14); - uVar6 = extraout_a3_00; - if (fVar11 <= fStack92) { - uVar6 = extraout_a3_00; - fVar11 = fStack92; - } - } - uVar4 += 4; - iVar5 += 4; - } while (uVar4 != 8); - pfVar7 = param_2 + 3; - lVar2 = proc_7F041074(param_2,pfVar7,(float *)(iStack88 + 0x30),fVar11); - bVar1 = lVar2 != 0; - if (bVar1) { - iStack28 = 1; - } - uVar8 = (ulonglong)bVar1; - if (bVar1) { - apiStack112[0] = *(int **)(iStack4 + 0x20); - iVar3 = proc_7F06C010(apiStack112,param_2,pfVar7,aiStack20,(ushort **)&puStack24); - while ((uVar8 = SEXT48(iVar3), uVar8 == 100 || (uVar8 == 0x6e))) { - iVar3 = proc_7F04D9B0(aiStack20[0],(ushort *)puStack24,param_2,pfVar7,afStack76,&iStack80, - &puStack84); - if (iVar3 != 0) break; - iVar3 = probably_damage_detail_blood_effect_related - (apiStack112,param_2,pfVar7,aiStack20,(ushort **)&puStack24); - } - } - if (0 < (longlong)uVar8) { - fStack124 = param_2[3]; - fStack120 = param_2[4]; - fStack116 = param_2[5]; - pfVar7 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar7,&fStack124); - iVar3 = proc_7F06C660(aiStack20[0],(ushort *)puStack24,0); - fVar9 = *(float *)(iVar3 + 0x30) - *param_2; - fVar11 = *(float *)(iVar3 + 0x34) - param_2[1]; - fVar10 = *(float *)(iVar3 + 0x38) - param_2[2]; - fVar11 = sqrtf(fVar10 * fVar10 + fVar9 * fVar9 + fVar11 * fVar11); - fVar11 = -(param_2[5] * fVar11 + param_2[2]); - if (fVar11 < param_2[0xd]) { - proc_7F03B9C0((int)param_2,param_1,extraout_f12,fVar11,(int)uVar8,puStack24,afStack76, - iStack80,puStack84,aiStack20[0],1); - } - } - if ((iStack28 != 0) && (*(float *)(param_1 + 0x18) <= param_2[0xd])) { - *(uint *)(iStack4 + 0x14) = *(uint *)(iStack4 + 0x14) | 4; - *(char *)(iStack4 + 10) = *(char *)(iStack4 + 10) + '\x01'; - } - } - } - return; -} - - - -void proc_7F022980(float *param_1,float *param_2) - -{ - char cVar1; - int iVar2; - int iVar3; - hit_header *phVar4; - longlong lVar5; - u32 uVar6; - undefined8 extraout_a2; - undefined8 extraout_a2_00; - undefined8 extraout_a2_01; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - int iVar7; - int iVar8; - float fVar9; - float *extraout_f0; - float *pfVar10; - float *pfVar11; - float extraout_f12; - float fStack136; - float fStack132; - float fStack128; - hit_header *phStack112; - float fStack96; - float fStack92; - float fStack88; - float fStack80; - float fStack76; - float fStack72; - float afStack68 [17]; - - iVar2 = *(int *)((int)param_2[1] + 4); - fStack96 = *param_1 - (*param_2 * param_1[3]) / param_1[5]; - fStack92 = param_1[1] - (*param_2 * param_1[4]) / param_1[5]; - fStack88 = param_1[2] - *param_2; - fVar9 = sqrtf(fStack88 * fStack88 + fStack96 * fStack96 + fStack92 * fStack92); - fStack72 = 1.00000000 - 42.00000000 / fVar9; - fStack80 = fStack96 * fStack72; - fStack76 = fStack92 * fStack72; - fStack72 = fStack88 * fStack72; - pfVar10 = (float *)proc_7F078444(); - proc_7F058474(pfVar10,&fStack80); - proc_7F067B4C(&fStack80); - recall_joy2_hits_edit_detail_edit_flag(); - proc_7F022078((int)param_2[1],(longlong)(int)param_2[2],&fStack96,&fStack80); - lVar5 = proc_7F02727C(); - if (lVar5 != 0) { - if (param_2[2] == 0.00000000) { - iVar7 = 0; - pfVar10 = extraout_f0; - iVar8 = iVar2; - do { - iVar3 = *(int *)(iVar8 + 0x160); - if ((iVar3 != 0) && (param_2[0x12] == *(float *)(*(int *)(iVar3 + 4) + 0x14))) { - cVar1 = *(char *)(*(int *)(iVar3 + 4) + 0x80); - if (((cVar1 == '\x1a') || (((cVar1 == 'W' || (cVar1 == 'V')) || (cVar1 == '\x1b')))) || - (((cVar1 == '!' || (cVar1 == '\x1d')) || (cVar1 == '\x1c')))) { - proc_7F04BFD0(iVar3,1); - *(ushort *)(iVar2 + 0x12) = *(ushort *)(iVar2 + 0x12) | 1; - proc_7F05DF84((int)param_1[6]); - pfVar11 = pfVar10; - get_cur_playernum(); - maybe_detonate_object - (*(int *)(iVar3 + 4),extraout_f12,pfVar10,(int)&fStack96,(int)param_1[6]); - pfVar10 = pfVar11; - } - else { - phStack112 = (hit_header *)hit_header_array[0]; - if (-1 < *(short *)((int)param_2 + 0x3a)) { - phStack112 = (hit_header *) - hit_header_array - [(uint)(byte)image_entries[(int)*(short *)((int)param_2 + 0x3a)].flag1 & - 0xf]; - } - uVar6 = get_random_value(); - if (phStack112->count2 == 0) { - trap(0x1c00); - } - proc_7F0A108C(param_2 + 4,param_2 + 7, - (ushort)phStack112->ptrarray2[uVar6 % (int)(short)phStack112->count2],1, - iVar3,SUB41(param_2[0x10],0),0); - } - } - iVar7 += 4; - iVar8 += 4; - } while (iVar7 != 8); - } - else { - if (param_2[2] == 0.00000000) { - phVar4 = (hit_header *)hit_header_array[0]; - if (-1 < *(short *)((int)param_2 + 0x3a)) { - phVar4 = (hit_header *) - hit_header_array - [(uint)(byte)image_entries[(int)*(short *)((int)param_2 + 0x3a)].flag1 & 0xf]; - } - uVar6 = get_random_value(); - if (phVar4->count2 == 0) { - trap(0x1c00); - } - proc_7F0A108C(param_2 + 4,param_2 + 7, - (ushort)phVar4->ptrarray2[uVar6 % (int)(short)phVar4->count2],1, - *(int *)(iVar2 + 0x1d8),SUB41(param_2[0x10],0),0); - } - else { - pfVar10 = (float *)proc_7F06C660((int)param_2[0x12],(ushort *)param_2[3],0); - fStack136 = fStack96 + (fStack96 - pfVar10[0xc]) * 0.50000000; - fStack132 = fStack92 + (fStack92 - pfVar10[0xd]) * 0.50000000; - fStack128 = fStack88 + (fStack88 - pfVar10[0xe]) * 0.50000000; - fVar9 = getjointsize((int)param_2[0x12],(ushort *)param_2[3],extraout_a2,extraout_a3_lo); - fStack136 = fStack136 - fVar9 * 0.50000000 * param_1[3]; - fVar9 = getjointsize((int)param_2[0x12],(ushort *)param_2[3],extraout_a2_00, - extraout_a3_lo_00); - fStack132 = fStack132 - fVar9 * 0.50000000 * param_1[4]; - fVar9 = getjointsize((int)param_2[0x12],(ushort *)param_2[3],extraout_a2_01, - extraout_a3_lo_01); - fStack128 = fStack128 - fVar9 * 0.50000000 * param_1[5]; - proc_7F059E64(pfVar10,afStack68); - proc_7F058474(afStack68,&fStack136); - proc_7F0221DC((int)param_2[0x12],(int)param_2[2],(ushort *)param_2[3],&fStack136); - } - } - } - return; -} - - - -void removed_tooklevelscale(f32 param_1) - -{ - return; -} - - - -void proc_7F022E24(undefined4 param_1) - -{ - dword_8002C904 = param_1; - return; -} - - - -void proc_7F022E30(void) - -{ - int iVar1; - - dword_8002C908 += -1; - if (dword_8002C908 < 0) { - dword_8002C908 = 0; - iVar1 = 1; - if (animation_table_ptrs1._4_4_ != 0) { - while (dword_8002C908 = iVar1, *(int *)(animation_table_ptrs1 + iVar1 * 4 + 4) != 0) { - iVar1 += 1; - } - } - } - return; -} - - - -void proc_7F022E90(void) - -{ - dword_8002C908 += 1; - if (*(int *)(animation_table_ptrs1 + dword_8002C908 * 4) == 0) { - dword_8002C908 = 0; - } - return; -} - - - -void proc_7F022EC8(void) - -{ - dword_8002C90C = (uint)(dword_8002C90C == 0); - return; -} - - - -void proc_7F022EE0(undefined4 param_1) - -{ - dword_8002C910 = param_1; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F022EEC(void) - -{ - int iVar1; - int iVar2; - float in_f0; - float in_f12; - - iVar2 = 0; - if (0 < num_guards) { - iVar1 = 0; - do { - if ((*(int *)((int)&ptr_guard_data->MODELdata_pointer + iVar1) != 0) && - (proc_7F032DE4((int)&ptr_guard_data->chrnum + iVar1), - in_f0 < *(float *)((int)&ptr_guard_data->hearingscale + iVar1) * in_f12 * 100.00000000)) { - proc_7F029C00((int)&ptr_guard_data->chrnum + iVar1); - } - iVar2 += 1; - iVar1 += 0x1dc; - } while (iVar2 < num_guards); - } - return; -} - - - -GUARDdata * check_if_guardnum_loaded_get_ptr_GUARDdata(short guardnum) - -{ - int iVar1; - int iVar2; - GUARDdata *pGVar3; - - iVar1 = 0; - if (0 < num_guards) { - iVar2 = 0; - pGVar3 = ptr_guard_data; - do { - iVar1 += 1; - if ((pGVar3->MODELdata_pointer != 0) && (guardnum == pGVar3->chrnum)) { - return (GUARDdata *)((int)&ptr_guard_data->chrnum + iVar2); - } - iVar2 += 0x1dc; - pGVar3 = pGVar3 + 1; - } while (iVar1 < num_guards); - } - return NULL; -} - - - -int something_with_weaponpos_of_guarddata_hand(GUARDdata *guard,int hand) - -{ - return (&guard->handle_positiondata_right_gun)[hand]; -} - - - -int is_weapon_in_guarddata_hand(GUARDdata *guard,int hand) - -{ - int iVar1; - int iVar2; - - iVar2 = (&guard->handle_positiondata_right_gun)[hand]; - if ((iVar2 != 0) && - (iVar1 = check_special_attributes((int)*(char *)(*(int *)(iVar2 + 4) + 0x80),0x200), iVar1 == 0 - )) { - iVar2 = 0; - } - return iVar2; -} - - - -void proc_7F02308C(int param_1,int *param_2,undefined4 *param_3,float *param_4,float *param_5) - -{ - int iVar1; - float fVar2; - - iVar1 = *(int *)(param_1 + 4); - if (*(char *)(iVar1 + 7) == '\x04') { - *param_3 = 0; - } - else { - if (*(char *)(iVar1 + 7) == '\x05') { - *param_3 = 0; - } - else { - if ((*(uint *)(iVar1 + 0x14) & 0x10400) == 0) { - if ((*(ushort *)(iVar1 + 0x12) & 0x100) == 0) { - *param_3 = 4; - *param_2 = iVar1 + 0x11c; - fVar2 = *(float *)(iVar1 + 0x24); - *(float *)(iVar1 + 0x11c) = *(float *)(param_1 + 8) + fVar2; - *(undefined4 *)(iVar1 + 0x120) = *(undefined4 *)(param_1 + 0x10); - *(undefined4 *)(iVar1 + 0x124) = *(undefined4 *)(param_1 + 8); - *(float *)(iVar1 + 0x128) = *(float *)(param_1 + 0x10) + fVar2; - *(float *)(iVar1 + 300) = *(float *)(param_1 + 8) - fVar2; - *(undefined4 *)(iVar1 + 0x130) = *(undefined4 *)(param_1 + 0x10); - *(undefined4 *)(iVar1 + 0x134) = *(undefined4 *)(param_1 + 8); - *(float *)(iVar1 + 0x138) = *(float *)(param_1 + 0x10) - fVar2; - *param_5 = *(float *)(iVar1 + 0xac); - *param_4 = *param_5 + *(float *)(iVar1 + 0x28); - return; - } - *param_3 = 0; - } - else { - *param_3 = 0; - } - } - } - return; -} - - - -void proc_7F023160(int param_1,undefined4 *param_2,float *param_3,undefined4 *param_4) - -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 4); - *param_2 = *(undefined4 *)(iVar1 + 0x24); - *param_3 = *(float *)(iVar1 + 0x28) - 20.00000000; - *param_4 = 0x41a00000; - return; -} - - - -undefined4 proc_7F023188(int param_1) - -{ - return *(undefined4 *)(param_1 + 4); -} - - - -undefined8 proc_7F023194(int param_1,float *param_2,float *param_3,float *param_4) - -{ - int iVar1; - int iVar2; - undefined8 uVar3; - float fVar4; - - iVar1 = *(int *)(param_1 + 4); - if ((*(byte *)(param_1 + 1) & 2) == 0) { - uVar3 = 0; - } - else { - if (*(char *)(iVar1 + 7) == '\x04') { - uVar3 = 0; - } - else { - if (*(char *)(iVar1 + 7) == '\x05') { - uVar3 = 0; - } - else { - if ((*(uint *)(iVar1 + 0x14) & 0x800) == 0) { - iVar1 = *(int *)(iVar1 + 0x1c); - iVar2 = *(int *)(iVar1 + 0xc); - fVar4 = (*(float *)(iVar2 + 0x38) - *(float *)(iVar2 + 0x78)) * 0.25000000 + - *(float *)(iVar2 + 0x78); - param_2[2] = fVar4; - if (fVar4 < 0.00000000) { - *param_2 = (*(float *)(iVar2 + 0x30) - *(float *)(iVar2 + 0x70)) * 0.25000000 + - *(float *)(iVar2 + 0x70); - param_2[1] = (*(float *)(iVar2 + 0x34) - *(float *)(iVar2 + 0x74)) * 0.25000000 + - *(float *)(iVar2 + 0x74); - param_4[1] = 0.00000000; - *param_4 = 0.00000000; - *param_3 = 0.00000000; - param_3[1] = 0.00000000; - proc_7F03F90C(iVar1,param_3 + 1,param_3,param_4 + 1,param_4); - uVar3 = 1; - } - else { - uVar3 = 0; - } - } - else { - uVar3 = 0; - } - } - } - } - return uVar3; -} - - - -ulonglong load_body_head_if_not_loaded(int model) - -{ - bool bVar1; - - bVar1 = (c_item_entries[model].header)->offset_obj_table == 0; - if (bVar1) { - load_object_into_memory(c_item_entries[model].header,(u8 *)c_item_entries[model].filename); - } - return (ulonglong)bVar1; -} - - - -uint maybe_load_models_for_guards - (int body,int head,object_header *bodyheader,object_header *headheader,int sunglasses - ,uint object_controller) - -{ - undefined4 *puVar1; - float fVar2; - f32 extraout_f12; - f32 extraout_f12_00; - f32 scale; - f32 extraout_f12_01; - ushort *local_c; - - fVar2 = c_item_entries[body].anonymous_2; - local_c = NULL; - proc_7F0927BC(0xc); - if (bodyheader->offset_obj_table == 0) { - load_object_into_memory(bodyheader,(u8 *)c_item_entries[body].filename); - } - set_objuse_flag_compute_grp_nums_set_obj_loaded(bodyheader); - scale = extraout_f12; - if (((*(char *)((int)&c_item_entries[body].anonymous_3 + 1) == '\0') && - (scale = extraout_f12, -1 < head)) && - (local_c = *(ushort **)(bodyheader->offset_obj_offset_block + 0x10), scale = extraout_f12, - local_c != NULL)) { - if (headheader->offset_obj_table == 0) { - load_object_into_memory(headheader,(u8 *)c_item_entries[head].filename); - } - set_objuse_flag_compute_grp_nums_set_obj_loaded(headheader); - bodyheader->num_table_entries = bodyheader->num_table_entries + headheader->num_table_entries; - scale = extraout_f12_00; - } - if (object_controller == 0) { - object_controller = get_aircraft_obj_instance_controller((int *)bodyheader); - scale = extraout_f12_01; - } - if (object_controller != 0) { - set_obj_instance_controller_scale(object_controller,scale); - proc_7F06CE84(object_controller,fVar2); - if ((headheader != NULL) && (*(char *)((int)&c_item_entries[body].anonymous_3 + 1) == '\0')) { - bodyheader->num_table_entries = bodyheader->num_table_entries - headheader->num_table_entries; - proc_7F06C3B4(object_controller,local_c,(ushort **)headheader); - if ((sunglasses == 0) && - ((0 < headheader->num_offset_entries && - (*(ushort **)headheader->offset_obj_offset_block != NULL)))) { - puVar1 = (undefined4 *) - extract_id_from_object_structure_microcode - (object_controller,*(ushort **)headheader->offset_obj_offset_block); - *puVar1 = 0; - } - } - } - return object_controller; -} - - - -uint setup_chr_instance(int body,int head,object_header *body_header,object_header *head_header, - int sunglasses) - -{ - uint uVar1; - - uVar1 = maybe_load_models_for_guards(body,head,body_header,head_header,sunglasses,0); - return uVar1; -} - - - -uint retrieve_header_for_body_and_head(int body,int head,ulonglong bitflags) - -{ - object_header *body_header; - u32 uVar1; - uint sunglasses; - object_header *local_8; - - body_header = c_item_entries[body].header; - local_8 = NULL; - sunglasses = 0; - if ((bitflags & 1) == 0) { - if ((bitflags & 2) != 0) { - uVar1 = get_random_value(); - sunglasses = (uint)((uVar1 & 1) == 0); - } - } - else { - sunglasses = 1; - } - if ((-1 < head) && (*(char *)((int)&c_item_entries[body].anonymous_3 + 1) == '\0')) { - local_8 = c_item_entries[head].header; - } - sunglasses = setup_chr_instance(body,head,body_header,local_8,sunglasses); - return sunglasses; -} - - - -undefined4 get_current_random_body(void) - -{ - return list_of_bodies[current_random_body]; -} - - - -undefined4 select_psuedorandom_heads(int param_1) - -{ - undefined4 uVar1; - u32 uVar2; - int iVar3; - - if (*(char *)&c_item_entries[param_1].anonymous_3 == '\0') { - uVar1 = random_female_heads[current_random_female_head]; - } - else { - uVar2 = get_random_value(); - iVar3 = current_random_male_head + (uVar2 & 3); - if (num_male_heads == 0) { - trap(0x1c00); - } - if ((num_male_heads == -1) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - uVar1 = random_male_heads[iVar3 % num_male_heads]; - } - return uVar1; -} - - - -u32 get_random_head(int bodyID) - -{ - uint random_male; - uint random_female; - u32 head; - - if (*(char *)&c_item_entries[bodyID].anonymous_3 == '\0') { - random_female = get_random_value(); - head = random_female_heads[random_female % num_female_heads]; - if (num_female_heads == 0) { - trap(0x1c00); - } - } - else { - random_male = get_random_value(); - if (num_male_heads == 0) { - trap(0x1c00); - } - head = random_male_heads[random_male % num_male_heads]; - } - return head; -} - - - -void expand_09_characters(void) - -{ - ushort uVar1; - undefined2 *puVar2; - longlong lVar3; - uint uVar4; - undefined *puVar5; - object_standard *poVar6; - int in_a1_lo; - float fVar7; - float in_f12; - int iStack48; - uint uStack44; - undefined4 auStack24 [3]; - undefined4 uStack12; - undefined4 *puStack4; - - puStack4 = (undefined4 *) - (ptr_0xxxpresets + - ((uint)*(ushort *)(in_a1_lo + 6) * 0xc - (uint)*(ushort *)(in_a1_lo + 6)) * 4); - lVar3 = proc_7F056850(puStack4,(longlong)(int)puStack4[10],in_f12,(undefined4 *)0x41a00000, - auStack24); - if (lVar3 != 0) { - iStack48 = -1; - if (*(ushort *)(in_a1_lo + 8) == 0xffff) { - uStack44 = get_current_random_body(); - } - else { - uStack44 = (uint)*(ushort *)(in_a1_lo + 8); - } - if (*(char *)((int)&c_item_entries[uStack44].anonymous_3 + 1) == '\0') { - if (*(short *)(in_a1_lo + 0x16) < 0) { - iStack48 = select_psuedorandom_heads(uStack44); - } - else { - iStack48 = (int)*(short *)(in_a1_lo + 0x16); - } - } - uVar4 = retrieve_header_for_body_and_head - (uStack44,iStack48,(ulonglong)*(ushort *)(in_a1_lo + 0x14)); - if (uVar4 != 0) { - fVar7 = convert_angle_using_inverse((f32)puStack4[6],(f32)puStack4[8]); - puVar5 = proc_7F035398((undefined *)(uint)*(ushort *)(in_a1_lo + 10)); - poVar6 = (object_standard *) - replace_GUARDdata_with_actual_values(uVar4,auStack24,fVar7,uStack12,puVar5); - if (poVar6 != NULL) { - set_current_objposdata_plus_0x28(poVar6); - set_stateflag_0x04_for_posdata((int)poVar6); - puVar2 = *(undefined2 **)&poVar6->obj; - *puVar2 = *(undefined2 *)(in_a1_lo + 4); - fVar7 = (float)(uint)*(ushort *)(in_a1_lo + 0x10); - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - *(float *)(puVar2 + 0x76) = fVar7 / 1000.00000000; - fVar7 = (float)(uint)*(ushort *)(in_a1_lo + 0x12); - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - *(float *)(puVar2 + 0x68) = fVar7; - puVar2[0x8a] = *(undefined2 *)(in_a1_lo + 0xc); - puVar2[0x8b] = *(undefined2 *)(in_a1_lo + 0xe); - *(char *)(puVar2 + 3) = (char)iStack48; - *(undefined *)((int)puVar2 + 0xf) = (char)uStack44; - uVar1 = *(ushort *)(in_a1_lo + 0x14); - if ((uVar1 & 4) != 0) { - *(uint *)(puVar2 + 10) = *(uint *)(puVar2 + 10) | 2; - uVar1 = *(ushort *)(in_a1_lo + 0x14); - } - if ((uVar1 & 8) == 0) { - *(undefined2 **)(in_a1_lo + 0x18) = puVar2; - } - else { - *(uint *)(puVar2 + 10) = *(uint *)(puVar2 + 10) | 0x10; - *(undefined2 **)(in_a1_lo + 0x18) = puVar2; - } - } - } - } - return; -} - - - -ulonglong check_if_item_held_like_pistol(int param_1) - -{ - int iVar2; - ulonglong uVar1; - - if (param_1 == 0) { - uVar1 = 0; - } - else { - iVar2 = check_special_attributes((int)*(char *)(*(int *)(param_1 + 4) + 0x80),0x100); - uVar1 = SEXT48(iVar2); - } - return uVar1; -} - - - -void proc_7F023948(int param_1,float param_2) - -{ - int iVar2; - int iVar3; - ulonglong uVar1; - u32 uVar4; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - float extraout_f14_00; - - iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - if ((((iVar2 == 0) || (iVar3 == 0)) && ((iVar2 != 0 || (iVar3 != 0)))) && - ((uVar1 = check_if_item_held_like_pistol(iVar2), uVar1 == 0 && - (uVar1 = check_if_item_held_like_pistol(iVar3), uVar1 == 0)))) { - if ((iVar3 != 0) || (iVar2 != 0)) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x1c,iVar2 != 0,extraout_f12,0, - extraout_f14); - proc_7F06FDCC(*(int *)(param_1 + 0x1c),0,0x41800000); - proc_7F06FDE8(*(int *)(param_1 + 0x1c),extraout_f12_01); - } - } - else { - uVar4 = get_random_value(); - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8194,(byte)uVar4 & 1, - extraout_f12_00,0,extraout_f14_00); - proc_7F06FDCC(*(int *)(param_1 + 0x1c),0,0x41800000); - } - return; -} - - - -void proc_7F023A94(int param_1,float param_2) - -{ - u32 uVar1; - float in_a1_lo; - float fVar2; - float fVar3; - undefined uVar4; - - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 1; - *(undefined4 *)(param_1 + 0x2c) = 0; - *(undefined4 *)(param_1 + 0x30) = 0; - *(undefined4 *)(param_1 + 0x34) = 0; - *(undefined4 *)(param_1 + 0x38) = 0; - *(undefined4 *)(param_1 + 0x3c) = 2; - *(undefined4 *)(param_1 + 0x40) = 0; - uVar1 = get_random_value(); - *(int *)(param_1 + 0x44) = uVar1 % 0x78 + 0xb4; - fVar3 = *(float *)(*(int *)(param_1 + 0x1c) + 0xa4); - fVar2 = in_a1_lo; - if (fVar3 != 1.00000000) { - fVar2 = in_a1_lo / fVar3; - } - if (127.00000000 < fVar2) { - uVar4 = 0x7f; - } - else { - uVar4 = (undefined)(int)fVar2; - } - *(undefined *)(param_1 + 8) = uVar4; - proc_7F023948(param_1,in_a1_lo); - return; -} - - - -undefined4 proc_7F023B5C(void) - -{ - undefined4 in_v0_lo; - - get_007_reaction_speed(); - return in_v0_lo; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -int proc_7F023BC0(void) - -{ - char cVar1; - int iVar2; - int in_a0_lo; - int in_a1_lo; - f32 reactionspeed; - - cVar1 = *(char *)(in_a0_lo + 3); - reactionspeed = get_007_reaction_speed(); - iVar2 = (100 - ((int)((float)reactionspeed * (float)(100 - (int)cVar1)) + (int)cVar1)) * in_a1_lo; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - return iVar2 / 100; -} - - - -undefined4 proc_7F023C54(void) - -{ - undefined4 in_v0_lo; - - get_007_reaction_speed(); - return in_v0_lo; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F023CB8(void) - -{ - u32 uVar1; - int iVar2; - int in_a0_lo; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f14; - float extraout_f14_00; - - if (*(char *)(in_a0_lo + 7) == '\x02') { - proc_7F02D184(in_a0_lo); - *(undefined *)(in_a0_lo + 7) = 1; - *(undefined4 *)(in_a0_lo + 0x2c) = 1; - *(undefined4 *)(in_a0_lo + 0x30) = 0; - *(undefined4 *)(in_a0_lo + 0x34) = 0; - *(undefined4 *)(in_a0_lo + 0x38) = 0; - *(undefined4 *)(in_a0_lo + 0x3c) = 2; - *(undefined4 *)(in_a0_lo + 0x40) = 0; - uVar1 = get_random_value(); - *(int *)(in_a0_lo + 0x44) = uVar1 % 0x78 + 0xb4; - *(undefined *)(in_a0_lo + 8) = 0; - iVar2 = proc_7F06F5AC(*(int *)(in_a0_lo + 0x1c)); - if (iVar2 == ptr_animation_table + 0x6c18) { - proc_7F023B5C(); - proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x6c18, - *(undefined *)(*(int *)(in_a0_lo + 0x1c) + 0x24),extraout_f12,0x42da0000, - extraout_f14); - proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_00); - } - else { - proc_7F023B5C(); - proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0xb84, - *(undefined *)(*(int *)(in_a0_lo + 0x1c) + 0x24),extraout_f12_01,0x42f00000, - extraout_f14_00); - proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_02); - } - } - else { - proc_7F023A94(in_a0_lo,in_f12); - } - return; -} - - - -void proc_7F023E14(int param_1,float param_2) - -{ - float in_a1_lo; - - proc_7F023A94(param_1,in_a1_lo); - *(undefined4 *)(param_1 + 0x40) = 1; - return; -} - - - -void proc_7F023E48(int param_1) - -{ - proc_7F023CB8(); - *(undefined4 *)(param_1 + 0x40) = 1; - return; -} - - - -// WARNING: Instruction at (ram,0x7f023f68) overlaps instruction at (ram,0x7f023f64) -// -// WARNING: Unknown calling convention yet parameter storage is locked - -void actor_kneel(void) - -{ - int iVar2; - int iVar3; - ulonglong uVar1; - u32 uVar4; - GUARDdata *guard; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f14; - float extraout_f14_00; - - iVar2 = something_with_weaponpos_of_guarddata_hand(guard,1); - iVar3 = something_with_weaponpos_of_guarddata_hand(guard,0); - proc_7F02D184((int)guard); - if ((((iVar2 == 0) || (iVar3 == 0)) && ((iVar2 != 0 || (iVar3 != 0)))) && - ((uVar1 = check_if_item_held_like_pistol(iVar2), uVar1 == 0 && - (uVar1 = check_if_item_held_like_pistol(iVar3), uVar1 == 0)))) { - if ((iVar3 != 0) || (iVar2 != 0)) { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0xb84,iVar2 != 0,extraout_f12_01, - 0,extraout_f14_00); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_02); - } - } - else { - uVar4 = get_random_value(); - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x6c18,(byte)uVar4 & 1,extraout_f12 - ,0,extraout_f14); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_00); - } - guard->actiontype = freeze; - guard->sleep = '\0'; - return; -} - - - -void perform_animation_for_actor - (GUARDdata *guard,int param_2,int param_3,int param_4,byte param_5,int param_6) - -{ - uint uVar1; - bool bVar2; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - - proc_7F02D184((int)guard); - proc_7F06FCA8(guard->MODELdata_pointer,*(undefined4 *)(animation_table_ptrs1 + param_2 * 4), - (param_5 & 1) != 0,extraout_f12,(float)param_3,extraout_f14); - if (-1 < param_4) { - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_00); - } - if ((param_5 & 0x20) == 0) { - uVar1 = guard->guard_bitflags; - } - else { - proc_7F06CE84(guard->MODELdata_pointer,*(float *)(guard->MODELdata_pointer + 0xb8) * 4.00000000) - ; - uVar1 = guard->guard_bitflags; - } - guard->guard_bitflags = uVar1 & 0xfdffffff; - bVar2 = (param_5 & 0x10) != 0; - guard->actiontype = swattingflies; - guard->bond_position = (uint)((param_5 & 2) != 0); - guard->field_30 = (uint)((param_5 & 4) != 0); - *(uint *)&guard->field_34 = (uint)((param_5 & 8) != 0); - *(uint *)&guard->field_38 = (uint)bVar2; - guard->path_target_position = (uint)((param_5 & 0x40) != 0); - if (bVar2) { - guard->sleep = (char)param_6; - } - else { - guard->sleep = '\0'; - } - return; -} - - - -void proc_7F024150(int param_1) - -{ - int iVar1; - int iVar2; - u32 uVar3; - byte bVar4; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - - iVar1 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - bVar4 = 0; - if ((iVar1 == 0) || (iVar2 != 0)) { - if (((iVar1 != 0) && (iVar2 != 0)) || ((iVar1 == 0 && (iVar2 == 0)))) { - uVar3 = get_random_value(); - bVar4 = (byte)uVar3 & 1; - } - } - else { - bVar4 = 1; - } - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 0x13; - *(undefined *)(param_1 + 8) = 0; - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x5744,bVar4,extraout_f12,0x42200000, - extraout_f14); - proc_7F06FDE8(*(int *)(param_1 + 0x1c),extraout_f12_00); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void throw_weapon_in_guard_hand(void) - -{ - int in_a0_lo; - int iVar1; - int in_a2_lo; - int in_a3_lo; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float fVar2; - float extraout_f14; - float extraout_f14_00; - - proc_7F02D184(in_a0_lo); - *(undefined *)(in_a0_lo + 7) = 0x14; - *(undefined *)(in_a0_lo + 8) = 0; - if (in_a3_lo == 0) { - proc_7F023B5C(); - proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x5964,in_a2_lo != 0, - extraout_f12_01,0x42a80000,extraout_f14_00); - iVar1 = *(int *)(in_a0_lo + 0x1c); - fVar2 = extraout_f12_02; - } - else { - proc_7F023B5C(); - proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x5964,in_a2_lo != 0,extraout_f12, - 0,extraout_f14); - iVar1 = *(int *)(in_a0_lo + 0x1c); - fVar2 = extraout_f12_00; - } - proc_7F06FDE8(iVar1,fVar2); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F024334(void) - -{ - int iVar1; - int iVar2; - u32 uVar3; - GUARDdata *guard; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - byte bStack9; - - iVar1 = something_with_weaponpos_of_guarddata_hand(guard,1); - iVar2 = something_with_weaponpos_of_guarddata_hand(guard,0); - bStack9 = 0; - if ((iVar1 == 0) || (iVar2 != 0)) { - if (((iVar1 != 0) && (iVar2 != 0)) || ((iVar1 == 0 && (iVar2 == 0)))) { - uVar3 = get_random_value(); - bStack9 = (byte)uVar3 & 1; - } - } - else { - bStack9 = 1; - } - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x5d10,bStack9,extraout_f12, - 0x41200000,extraout_f14); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_00); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void actor_shuffle_feet(void) - -{ - longlong lVar1; - int in_a0_lo; - float in_f0; - - proc_7F032C4C(in_a0_lo); - if ((in_f0 < flt_80051DA0) || (flt_80051DA4 < in_f0)) { - proc_7F024334(); - proc_7F02D184(in_a0_lo); - *(undefined *)(in_a0_lo + 7) = 0x12; - *(undefined *)(in_a0_lo + 8) = 0; - } - else { - lVar1 = proc_7F029C5C(); - if (lVar1 == 0) { - proc_7F023CB8(); - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F0244AC(void) - -{ - u32 uVar1; - int in_a0_lo; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - - proc_7F02D184(in_a0_lo); - *(undefined *)(in_a0_lo + 7) = 0x12; - *(undefined *)(in_a0_lo + 8) = 0; - uVar1 = get_random_value(); - proc_7F023B5C(); - proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x4384,(byte)uVar1 & 1,extraout_f12, - 0,extraout_f14); - proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_00); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F024548(void) - -{ - u32 uVar1; - u32 uVar2; - int in_a0_lo; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f14; - - uVar1 = get_random_value(); - proc_7F02D184(in_a0_lo); - *(undefined *)(in_a0_lo + 7) = 0x12; - *(undefined *)(in_a0_lo + 8) = 0; - uVar2 = get_random_value(); - proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x5ef0,(byte)uVar2 & 1,extraout_f12, - 0x41880000,extraout_f14); - if (uVar1 % 3 == 0) { - proc_7F023B5C(); - proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_00); - } - else { - if (uVar1 % 3 == 1) { - proc_7F023B5C(); - proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_01); - } - else { - proc_7F023B5C(); - proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_02); - } - } - return; -} - - - -void proc_7F024648(int param_1) - -{ - int iVar1; - int iVar2; - u32 uVar3; - ushort uVar4; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float extraout_f14_00; - - if (*(char *)(param_1 + 7) != '\x10') { - iVar1 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 0x10; - if ((iVar2 == 0) && (iVar1 == 0)) { - uVar3 = get_random_value(); - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4384,(byte)uVar3 & 1, - extraout_f12_00,0,extraout_f14_00); - proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x41f00000,0x41800000); - *(undefined *)(param_1 + 8) = 0x10; - } - else { - uVar3 = get_random_value(); - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4504,(byte)uVar3 & 1, - extraout_f12,0,extraout_f14); - proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x42200000,0x41800000); - *(undefined *)(param_1 + 8) = 0x10; - if (iVar1 != 0) { - proc_7F04BFD0(iVar1,2); - } - if (iVar2 == 0) { - uVar4 = *(ushort *)(param_1 + 0x12); - } - else { - proc_7F04BFD0(iVar2,2); - uVar4 = *(ushort *)(param_1 + 0x12); - } - *(ushort *)(param_1 + 0x12) = uVar4 | 1; - } - proc_7F021B20(param_1); - } - return; -} - - - -void proc_7F0247B8(int param_1) - -{ - if (*(char *)(param_1 + 7) != '\x05') { - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 5; - *(undefined4 *)(param_1 + 0x2c) = 0xffffffff; - *(undefined *)(param_1 + 8) = 0; - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F024800(void) - -{ - int iVar2; - int iVar3; - u32 uVar4; - ulonglong uVar1; - uint uVar5; - GUARDdata *guard; - int in_a1_lo; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - uint uStack12; - - iVar2 = something_with_weaponpos_of_guarddata_hand(guard,1); - iVar3 = something_with_weaponpos_of_guarddata_hand(guard,0); - uStack12 = 0; - if ((iVar2 == 0) || (iVar3 == 0)) { - uVar1 = check_if_item_held_like_pistol(iVar2); - uVar5 = 0; - if (uVar1 == 0) { - uVar1 = check_if_item_held_like_pistol(iVar3); - uVar5 = 0; - if ((uVar1 == 0) && ((iVar2 != 0 || (iVar3 != 0)))) { - uStack12 = (uint)(iVar2 != 0); - uVar4 = get_random_value(); - uVar5 = uVar4 & 1; - } - } - } - else { - uVar4 = get_random_value(); - uStack12 = uVar4 & 1; - uVar4 = get_random_value(); - uVar5 = uVar4 & 1; - } - proc_7F02D184((int)guard); - guard->actiontype = sidestep; - guard->sleep = '\0'; - if (uVar5 == 0) { - if (in_a1_lo == 0) { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x3d9c,1,extraout_f12_01, - 0x40a00000,extraout_f14_00); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_02); - } - else { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x3d9c,0,extraout_f12,0x40a00000, - extraout_f14); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_00); - } - } - else { - if (((in_a1_lo == 0) || (uStack12 != 0)) && ((in_a1_lo != 0 || (uStack12 == 0)))) { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x54a0,(char)uStack12, - extraout_f12_05,0x40a00000,extraout_f14_02); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_06); - } - else { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x5554,(char)uStack12, - extraout_f12_03,0x40a00000,extraout_f14_01); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_04); - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F024A84(void) - -{ - int iVar2; - int iVar3; - ulonglong uVar1; - u32 uVar4; - GUARDdata *guard; - int in_a1_lo; - undefined uVar5; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - uint uStack12; - - iVar2 = something_with_weaponpos_of_guarddata_hand(guard,1); - iVar3 = something_with_weaponpos_of_guarddata_hand(guard,0); - uStack12 = 0; - if ((iVar2 == 0) || (iVar3 != 0)) { - if (((iVar2 == 0) || (iVar3 == 0)) && ((iVar2 != 0 || (iVar3 != 0)))) { - uVar1 = check_if_item_held_like_pistol(iVar2); - if ((uVar1 == 0) && (uVar1 = check_if_item_held_like_pistol(iVar3), uVar1 == 0)) - goto LAB_7f024b24; - } - uVar4 = get_random_value(); - uStack12 = uVar4 & 1; - } - else { - uStack12 = 1; - } -LAB_7f024b24: - proc_7F02D184((int)guard); - guard->actiontype = sidehop; - guard->sleep = '\0'; - uVar5 = (undefined)uStack12; - if (((in_a1_lo == 0) || (uStack12 != 0)) && ((in_a1_lo != 0 || (uStack12 == 0)))) { - uVar4 = get_random_value(); - if ((uVar4 & 1) == 0) { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x47bc,uVar5,extraout_f12_05, - 0x42b60000,extraout_f14_02); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_06); - } - else { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x4a40,uVar5,extraout_f12_03, - 0x41a00000,extraout_f14_01); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_04); - } - } - else { - uVar4 = get_random_value(); - if ((uVar4 & 1) == 0) { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x4a40,uVar5,extraout_f12_01, - 0x43020000,extraout_f14_00); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_02); - } - else { - proc_7F023B5C(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x47bc,uVar5,extraout_f12, - 0x40a00000,extraout_f14); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_00); - } - } - return; -} - - - -void proc_7F024CF8(int param_1,float *param_2) - -{ - bool bVar1; - int iVar3; - int iVar4; - u32 uVar5; - ulonglong uVar2; - bool bVar6; - float fVar7; - float fVar8; - float extraout_f12; - float extraout_f14; - - fVar7 = *(float *)(*(int *)(param_1 + 0x18) + 8) - *param_2; - fVar8 = *(float *)(*(int *)(param_1 + 0x18) + 0x10) - param_2[2]; - fVar7 = sqrtf(fVar7 * fVar7 + fVar8 * fVar8); - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - bVar1 = true; - if (((iVar3 == 0) || (iVar4 == 0)) && ((iVar3 != 0 || (iVar4 != 0)))) { - uVar2 = check_if_item_held_like_pistol(iVar3); - if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(iVar4), uVar2 == 0)) { - bVar6 = iVar3 != 0; - } - else { - bVar1 = false; - bVar6 = iVar3 != 0; - } - } - else { - bVar1 = false; - uVar5 = get_random_value(); - bVar6 = (bool)((byte)uVar5 & 1); - } - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 0xd; - *(float *)(param_1 + 0x2c) = *param_2; - *(float *)(param_1 + 0x30) = param_2[1]; - fVar8 = param_2[2]; - *(undefined *)(param_1 + 8) = 0; - *(undefined4 *)(param_1 + 0x40) = 0; - *(undefined4 *)(param_1 + 0x38) = 0x41f00000; - *(float *)(param_1 + 0x34) = fVar8; - if (bVar1) { - *(int *)(param_1 + 0x3c) = (int)(fVar7 / (dword_80030988 * 0.50000000)); - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x40d4,bVar6,extraout_f12,0, - extraout_f14); - } - else { - *(int *)(param_1 + 0x3c) = (int)(fVar7 / (dword_80030994 * 0.50000000)); - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x777c,bVar6,extraout_f12,0, - extraout_f14); - } - return; -} - - - -void proc_7F024F00(int param_1) - -{ - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 0x16; - *(undefined *)(param_1 + 8) = 0; - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x2f94,0,extraout_f12,0x41200000, - extraout_f14); - proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x41200000,0x41800000); - proc_7F06FDE8(*(int *)(param_1 + 0x1c),extraout_f12_00); - return; -} - - - -void proc_7F024F8C(int param_1) - -{ - int iVar1; - int iVar2; - float in_f12; - - iVar1 = *(int *)(param_1 + 0x1c); - iVar2 = *(int *)(param_1 + 0x2c); - if ((*(uint *)(param_1 + 0x4c) & 0x20) == 0) { - if (*(char *)(param_1 + 0x36) == '\0') { - if (0.00000000 <= *(float *)(iVar2 + 0x20)) { - proc_7F06FDE8(iVar1,in_f12); - } - else { - if (0.00000000 <= *(float *)(iVar2 + 0x14)) { - proc_7F06FDE8(iVar1,in_f12); - } - else { - proc_7F06FDE8(iVar1,in_f12); - } - } - } - else { - if (0.00000000 <= *(float *)(iVar2 + 0x20)) { - proc_7F06FDE8(iVar1,in_f12); - } - else { - proc_7F06FDE8(iVar1,in_f12); - } - } - } - else { - if ((*(float *)(iVar2 + 0x20) < 0.00000000) || - (*(float *)(iVar2 + 0x18) <= *(float *)(iVar2 + 0x20))) { - proc_7F06FDE8(iVar1,in_f12); - } - else { - proc_7F06FDE8(iVar1,in_f12); - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -float proc_7F0250BC(void) - -{ - short *in_a0_lo; - ulonglong in_a1; - undefined4 in_a2_hi; - int in_a2_lo; - undefined4 in_a3_lo; - float in_f0; - float fVar1; - undefined4 auStack8 [2]; - - if ((in_a1 & 2) == 0) { - if ((in_a1 & 0x10) == 0) { - proc_7F032C78(in_a0_lo,in_a1,CONCAT44(in_a2_hi,in_a2_lo),auStack8); - in_f0 = (float)proc_7F032BD8(); - } - else { - fVar1 = (float)in_a2_lo * flt_80051DAC; - getsubroty(*(int *)(in_a0_lo + 0xe),(uint)in_a1,in_a2_lo,in_a3_lo); - in_f0 = fVar1 / 65536.00000000 - in_f0; - if (in_f0 < 0.00000000) { - in_f0 = in_f0 + flt_80051DB0; - } - } - } - else { - in_f0 = 0.00000000; - } - return in_f0; -} - - - -void proc_7F02516C(int param_1,int param_2,int param_3,int *param_4,uint param_5,undefined4 param_6, - undefined4 param_7) - -{ - uint uVar1; - u32 uVar3; - longlong lVar2; - char cVar4; - int iVar5; - int hand; - int iVar6; - int *piVar7; - undefined uVar8; - undefined uVar9; - int iVar10; - float fVar11; - float extraout_f12; - float extraout_f14; - int iStack56; - int iStack52; - undefined4 uStack48; - undefined4 uStack44; - int *piStack16; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x1c); - uStack44 = dword_800309AC; - uStack48 = dword_800309A8; - iStack52 = dword_800309B4; - iStack56 = dword_800309B0; - *(undefined *)(param_1 + 7) = 8; - uVar8 = 1; - uVar9 = 0; - fVar11 = (float)proc_7F0250BC(); - if (param_3 == 0) { - fVar11 = (fVar11 * 32.00000000) / flt_80051DB8; - } - else { - fVar11 = ((flt_80051DB4 - fVar11) * 32.00000000) / flt_80051DB4; - } - iVar10 = (int)(fVar11 + 0.50000000); - if (0x1f < iVar10) { - iVar10 = 0; - } - uVar3 = get_random_value(); - piVar7 = *(int **)(param_2 + iVar10 * 4); - uVar1 = piVar7[1]; - iVar10 = *piVar7; - if (uVar1 == 0) { - trap(0x1c00); - } - hand = 0; - iVar6 = 0; - piStack16 = (int *)(iVar10 + (uVar3 % uVar1) * 0x48); - piVar7 = param_4; - if (((*(uint *)(param_1 + 0x14) & 0x20) != 0) && - (iVar5 = uVar3 % uVar1 + 1, piVar7 = param_4, ptr_animation_table + 0x318 == *piStack16)) { - if (uVar1 == 0) { - trap(0x1c00); - } - if ((uVar1 == 0xffffffff) && (iVar5 == -0x80000000)) { - trap(0x1800); - } - piStack16 = (int *)((iVar5 % uVar1) * 0x48 + iVar10); - piVar7 = param_4; - } - do { - if (*piVar7 != 0) { - iVar10 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,hand); - iVar10 = *(int *)(iVar10 + 4); - lVar2 = proc_7F05DFCC((int)*(char *)(iVar10 + 0x80)); - if (lVar2 < 0) { - *(undefined4 *)((int)&iStack56 + iVar6 + 8) = 1; - cVar4 = *(char *)(iVar10 + 0x80); - if (cVar4 == '\x16') goto LAB_7f025398; - } - else { - uVar9 = 1; - cVar4 = *(char *)(iVar10 + 0x80); -LAB_7f025398: - uVar8 = 0; - } - if ((cVar4 == '\x19') || (cVar4 == '\x18')) { - *(undefined4 *)((int)&iStack56 + iVar6) = 1; - } - } - hand += 1; - iVar6 += 4; - piVar7 = piVar7 + 1; - if (hand == 2) { - *(undefined *)(param_1 + 0x30) = 1; - *(undefined *)(param_1 + 0x31) = 0; - *(int **)(param_1 + 0x2c) = piStack16; - uVar3 = get_random_value(); - *(byte *)(param_1 + 0x32) = (byte)uVar3 & 1; - *(undefined *)(param_1 + 0x39) = (char)param_4[1]; - *(undefined *)(param_1 + 0x38) = (char)*param_4; - *(undefined *)(param_1 + 0x3b) = (char)uStack44; - *(undefined *)(param_1 + 0x3a) = (char)uStack48; - *(undefined *)(param_1 + 0x3d) = (char)iStack52; - *(undefined *)(param_1 + 0x36) = uVar8; - *(undefined *)(param_1 + 0x37) = uVar9; - *(undefined4 *)(param_1 + 0x40) = 0; - *(undefined *)(param_1 + 0x33) = 0; - *(undefined *)(param_1 + 0x3c) = (char)iStack56; - if ((iStack52 == 0) && (iStack56 == 0)) { - if ((param_5 & 0x80) == 0) { - uVar3 = get_random_value(); - *(char *)(param_1 + 0x34) = ((byte)uVar3 & 3) + 2; - } - else { - *(undefined *)(param_1 + 0x34) = 1; - } - if ((*param_4 != 0) && (param_4[1] != 0)) { - uVar3 = get_random_value(); - *(char *)(param_1 + 0x34) = *(char *)(param_1 + 0x34) + ((byte)uVar3 & 3) + '\x02'; - } - } - else { - if ((iStack52 == 0) || (iStack56 == 0)) { - *(undefined *)(param_1 + 0x34) = 1; - } - else { - *(undefined *)(param_1 + 0x34) = 2; - } - } - *(uint *)(param_1 + 0x4c) = param_5; - *(undefined4 *)(param_1 + 0x50) = param_6; - *(undefined4 *)(param_1 + 0x58) = 0; - *(undefined4 *)(param_1 + 0x44) = 0; - *(undefined4 *)(param_1 + 0x48) = 0; - *(undefined *)(param_1 + 8) = 0; - *(undefined4 *)(param_1 + 0x54) = param_7; - proc_7F023B5C(); - proc_7F06FCA8(iStack4,*piStack16,(char)param_3,extraout_f12,piStack16[4],extraout_f14); - proc_7F024F8C(param_1); - return; - } - } while( true ); -} - - - -void proc_7F025560(int param_1,uint param_2,undefined4 param_3) - -{ - bool bVar1; - int iVar3; - int iVar4; - u32 uVar5; - ulonglong uVar2; - undefined **ppuVar6; - uint uVar7; - uint uStack24; - uint uStack20; - uint uStack12; - int iStack8; - int iStack4; - - iStack4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - uStack24 = dword_800309B8; - uStack20 = dword_800309BC; - if ((iStack4 == 0) || (iVar3 == 0)) { - iStack8 = iVar3; - uVar2 = check_if_item_held_like_pistol(iStack4); - if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(iStack8), uVar2 == 0)) { - ppuVar6 = ptr_rifle_firing_animation_groups; - bVar1 = iStack4 != 0; - uVar7 = (uint)bVar1; - uStack20 = (uint)bVar1; - uStack24 = (uint)!bVar1; - } - else { - ppuVar6 = ptr_pistol_firing_animation_groups; - bVar1 = iStack4 != 0; - uVar7 = (uint)bVar1; - uStack20 = (uint)bVar1; - uStack24 = (uint)!bVar1; - } - } - else { - iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1); - iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - bVar1 = iVar4 == 0; - ppuVar6 = ptr_pistol_firing_animation_groups; - if ((iVar3 == 0) || (iVar4 == 0)) { - uStack20 = (uint)bVar1; - uStack24 = (uint)!bVar1; - uVar7 = (uint)bVar1; - } - else { - uVar5 = get_random_value(); - uStack12 = uVar5 & 1; - uVar5 = get_random_value(); - if (uVar5 % 3 == 0) { - ppuVar6 = ptr_pistol_firing_animation_groups; - uStack20 = uStack12; - uStack24 = (uint)(uStack12 == 0); - uVar7 = uStack12; - } - else { - ppuVar6 = ptr_doubles_firing_animation_groups; - uStack20 = 1; - uStack24 = 1; - uVar7 = uStack12; - } - } - } - proc_7F02516C(param_1,(int)ppuVar6,uVar7,(int *)&uStack24,param_2,param_3,1); - return; -} - - - -void proc_7F0256F0(int param_1,uint param_2,undefined4 param_3) - -{ - bool bVar1; - int iVar3; - int iVar4; - u32 uVar5; - ulonglong uVar2; - undefined **ppuVar6; - uint uVar7; - uint uStack24; - uint uStack20; - uint uStack12; - int iStack8; - int iStack4; - - iStack4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - uStack24 = dword_800309C0; - uStack20 = dword_800309C4; - if ((iStack4 == 0) || (iVar3 == 0)) { - iStack8 = iVar3; - uVar2 = check_if_item_held_like_pistol(iStack4); - if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(iStack8), uVar2 == 0)) { - ppuVar6 = ptr_crouched_rifle_firing_animation_groups; - bVar1 = iStack4 != 0; - uVar7 = (uint)bVar1; - uStack20 = (uint)bVar1; - uStack24 = (uint)!bVar1; - } - else { - ppuVar6 = ptr_crouched_pistol_firing_animation_groups; - bVar1 = iStack4 != 0; - uVar7 = (uint)bVar1; - uStack20 = (uint)bVar1; - uStack24 = (uint)!bVar1; - } - } - else { - iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1); - iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - bVar1 = iVar4 == 0; - ppuVar6 = ptr_crouched_pistol_firing_animation_groups; - if ((iVar3 == 0) || (iVar4 == 0)) { - uStack20 = (uint)bVar1; - uStack24 = (uint)!bVar1; - uVar7 = (uint)bVar1; - } - else { - uVar5 = get_random_value(); - uStack12 = uVar5 & 1; - uVar5 = get_random_value(); - if (uVar5 % 3 == 0) { - ppuVar6 = ptr_crouched_pistol_firing_animation_groups; - uStack20 = uStack12; - uStack24 = (uint)(uStack12 == 0); - uVar7 = uStack12; - } - else { - ppuVar6 = ptr_crouched_doubles_firing_animation_groups; - uStack20 = 1; - uStack24 = 1; - uVar7 = uStack12; - } - } - } - proc_7F02516C(param_1,(int)ppuVar6,uVar7,(int *)&uStack24,param_2,param_3,0); - return; -} - - - -void proc_7F02587C(int param_1,longlong param_2) - -{ - char cVar1; - f32 fVar2; - int hand; - int iVar5; - ulonglong uVar3; - int iVar6; - longlong lVar4; - u32 uVar7; - uint uVar8; - int *piVar9; - float extraout_f12; - float extraout_f14; - int iStack40; - undefined4 uStack36; - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - uint uStack16; - weapon_firing_animation_table *pwStack4; - - hand = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar5 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - uStack24 = dword_800309C8; - uStack20 = dword_800309CC; - uStack28 = dword_800309D4; - uStack32 = dword_800309D0; - uStack36 = dword_800309DC; - iStack40 = dword_800309D8; - if ((hand == 0) || (iVar5 == 0)) { - uVar3 = check_if_item_held_like_pistol(hand); - if ((uVar3 == 0) && (uVar3 = check_if_item_held_like_pistol(iVar5), uVar3 == 0)) { - uStack16 = (uint)(hand != 0); - if (param_2 == 0) { - pwStack4 = &stru_80030660; - } - else { - pwStack4 = &stru_800306A8; - } - if (hand != 0) { - uStack20 = 1; - } - else { - uStack24 = 1; - } - } - else { - uStack16 = (uint)(hand != 0); - if (param_2 == 0) { - pwStack4 = &stru_800306F0; - } - else { - pwStack4 = &stru_80030738; - } - if (hand != 0) { - uStack20 = 1; - } - else { - uStack24 = 1; - } - } - } - else { - hand = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1); - iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - uVar8 = 0; - if ((hand == 0) || (iVar5 == 0)) { - uStack16 = (uint)(iVar5 == 0); - } - else { - uVar7 = get_random_value(); - uStack16 = uVar7 & 1; - uVar7 = get_random_value(); - uVar8 = uVar7 % 3; - } - if (uVar8 == 0) { - if (param_2 == 0) { - pwStack4 = &stru_800306F0; - } - else { - pwStack4 = &stru_80030738; - } - if (uStack16 == 0) { - uStack24 = 1; - } - else { - uStack20 = 1; - } - } - else { - if (uVar8 == 1) { - if (param_2 == 0) { - pwStack4 = &stru_80030780; - } - else { - pwStack4 = &stru_800307C8; - } - uStack20 = 1; - uStack24 = 1; - } - else { - if (param_2 == 0) { - pwStack4 = &stru_80030810; - } - else { - pwStack4 = &stru_80030858; - } - uStack20 = 1; - uStack24 = 1; - } - } - } - hand = 0; - iVar5 = 0; - piVar9 = &iStack40 + 4; - do { - if (*piVar9 != 0) { - iVar6 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,hand); - iVar6 = *(int *)(iVar6 + 4); - lVar4 = proc_7F05DFCC((int)*(char *)(iVar6 + 0x80)); - if (lVar4 < 0) { - *(undefined4 *)((int)&iStack40 + iVar5 + 8) = 1; - } - cVar1 = *(char *)(iVar6 + 0x80); - if ((cVar1 == '\x19') || (cVar1 == '\x18')) { - *(undefined4 *)((int)&iStack40 + iVar5) = 1; - } - } - hand += 1; - iVar5 += 4; - piVar9 = piVar9 + 1; - } while (hand != 2); - *(undefined *)(param_1 + 7) = 9; - *(undefined4 *)(param_1 + 0x30) = 0; - uVar7 = get_random_value(); - fVar2 = ai_reaction_speed; - *(undefined4 *)(param_1 + 0x38) = 0; - *(int *)(param_1 + 0x34) = uVar7 % (int)((float)fVar2 * 400.00000000) + 0x78; - if ((int)((float)fVar2 * 400.00000000) == 0) { - trap(0x1c00); - } - *(undefined4 *)(param_1 + 0x40) = 0; - *(weapon_firing_animation_table **)(param_1 + 0x3c) = pwStack4; - uVar7 = get_random_value(); - *(uint *)(param_1 + 0x44) = uVar7 & 1; - *(undefined *)(param_1 + 0x49) = (char)uStack20; - *(undefined *)(param_1 + 0x48) = (char)uStack24; - *(undefined *)(param_1 + 0x4b) = (char)uStack28; - *(undefined *)(param_1 + 0x4a) = (char)uStack32; - *(undefined *)(param_1 + 0x4d) = (char)uStack36; - *(undefined *)(param_1 + 8) = 0; - *(undefined4 *)(param_1 + 0x54) = 0; - *(undefined *)(param_1 + 0x4c) = (char)iStack40; - proc_7F06FCA8(*(int *)(param_1 + 0x1c),pwStack4->anonymous_0,(char)uStack16,extraout_f12, - pwStack4->anonymous_4,extraout_f14); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F025C40(void) - -{ - bool bVar1; - int iVar4; - int hand; - ulonglong uVar2; - u32 uVar5; - int iVar6; - longlong lVar3; - char cVar7; - GUARDdata *guard; - int in_a1_lo; - uint *puVar8; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - int iStack68; - int iStack64; - undefined4 uStack60; - undefined4 uStack56; - undefined4 uStack52; - uint uStack44; - uint uStack40; - int iStack32; - int iStack24; - uint uStack20; - weapon_firing_animation_table *pwStack8; - int iStack4; - - iStack4 = guard->MODELdata_pointer; - iVar4 = something_with_weaponpos_of_guarddata_hand(guard,1); - hand = something_with_weaponpos_of_guarddata_hand(guard,0); - iStack24 = 0; - uStack44 = dword_800309E0; - uStack40 = dword_800309E4; - uStack52 = 0; - uStack60 = dword_800309E8; - uStack56 = dword_800309EC; - bVar1 = true; - iStack64 = dword_800309F4; - iStack68 = dword_800309F0; - if ((iVar4 == 0) || (hand == 0)) { - uVar2 = check_if_item_held_like_pistol(iVar4); - if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(hand), uVar2 == 0)) { - uStack40 = (uint)(iVar4 != 0); - uStack44 = (uint)(iVar4 == 0); - uStack20 = uStack40; - } - else { - uStack40 = (uint)(iVar4 != 0); - iStack24 = 1; - uStack44 = (uint)(iVar4 == 0); - uStack20 = uStack40; - } - } - else { - iVar4 = is_weapon_in_guarddata_hand(guard,1); - hand = is_weapon_in_guarddata_hand(guard,0); - if ((iVar4 == 0) || (hand == 0)) { - uStack40 = (uint)(hand == 0); - iStack24 = 1; - uStack44 = (uint)(hand != 0); - uStack20 = uStack40; - } - else { - uVar5 = get_random_value(); - uStack20 = uVar5 & 1; - iStack24 = 1; - uVar5 = get_random_value(); - if (uVar5 % 3 == 0) { - uStack44 = (uint)(uStack20 == 0); - uStack40 = uStack20; - } - else { - uStack40 = 1; - uStack44 = 1; - } - } - } - if (((in_a1_lo == 0) || (uStack20 != 0)) && ((in_a1_lo != 0 || (uStack20 == 0)))) { - uVar5 = get_random_value(); - if ((uVar5 & 1) == 0) { - pwStack8 = &stru_80030150; - } - else { - pwStack8 = &stru_800300C0; - } - } - else { - uVar5 = get_random_value(); - if ((uVar5 & 1) == 0) { - pwStack8 = &stru_80030108; - } - else { - pwStack8 = &stru_80030078; - } - } - hand = 0; - iVar4 = 0; - puVar8 = &uStack44; - if (iStack24 != 0) { - pwStack8 = pwStack8 + 4; - } - do { - if (*puVar8 != 0) { - iVar6 = something_with_weaponpos_of_guarddata_hand(guard,hand); - iStack32 = *(int *)(iVar6 + 4); - lVar3 = proc_7F05DFCC((int)*(char *)(iStack32 + 0x80)); - if (lVar3 < 0) { - *(undefined4 *)((int)&iStack68 + iVar4 + 8) = 1; - cVar7 = *(char *)(iStack32 + 0x80); - if (cVar7 == '\x16') goto LAB_7f025eec; - } - else { - uStack52 = 1; - cVar7 = *(char *)(iStack32 + 0x80); -LAB_7f025eec: - bVar1 = false; - } - if ((cVar7 == '\x19') || (cVar7 == '\x18')) { - *(undefined4 *)((int)&iStack68 + iVar4) = 1; - } - } - hand += 1; - iVar4 += 4; - puVar8 = puVar8 + 1; - if (hand == 2) { - guard->actiontype = run_roll_fire; - *(undefined *)((int)&guard->field_30 + 1) = 0; - *(weapon_firing_animation_table **)&guard->bond_position = pwStack8; - uVar5 = get_random_value(); - *(byte *)((int)&guard->field_30 + 2) = (byte)uVar5 & 1; - guard->field_39 = (char)uStack40; - guard->field_38 = (char)uStack44; - guard->field_3B = (char)uStack56; - guard->field_3A = (char)uStack60; - *(undefined *)((int)&guard->path_target_position + 1) = (char)iStack64; - *(bool *)&guard->field_36 = bVar1; - *(char *)&guard->path_target_position = (char)iStack68; - guard->field_37 = (char)uStack52; - guard->field_40 = 0; - *(undefined *)((int)&guard->field_30 + 3) = 0; - *(undefined *)&guard->field_30 = 1; - *(undefined *)((int)&guard->field_34 + 1) = (char)iStack24; - if ((iStack64 == 0) && (iStack68 == 0)) { - uVar5 = get_random_value(); - *(byte *)&guard->field_34 = ((byte)uVar5 & 3) + 2; - if ((uStack44 != 0) && (uStack40 != 0)) { - uVar5 = get_random_value(); - *(byte *)&guard->field_34 = *(char *)&guard->field_34 + ((byte)uVar5 & 3) + '\x02'; - } - } - else { - if ((iStack64 == 0) || (iStack68 == 0)) { - *(undefined *)&guard->field_34 = 1; - } - else { - *(undefined *)&guard->field_34 = 2; - } - } - guard->field_4C = 1; - guard->field_50 = 0; - guard->field_54 = 1; - *(undefined4 *)&guard->type_of_motion = 0; - guard->field_44 = 0; - guard->field_48 = 0; - guard->sleep = '\0'; - proc_7F023B5C(); - proc_7F06FCA8(iStack4,pwStack8->anonymous_0,(char)uStack20,extraout_f12,pwStack8->anonymous_4, - extraout_f14); - if (iStack24 == 0) { - if (bVar1) { - if (0.00000000 <= (float)pwStack8->anonymous_9) { - proc_7F06FDE8(iStack4,extraout_f12_00); - } - else { - proc_7F06FDE8(iStack4,extraout_f12_00); - } - } - else { - if (0.00000000 <= (float)pwStack8->anonymous_8) { - proc_7F06FDE8(iStack4,extraout_f12_00); - } - else { - if (0.00000000 <= (float)pwStack8->anonymous_5) { - proc_7F06FDE8(iStack4,extraout_f12_00); - } - } - } - } - return; - } - } while( true ); -} - - - -void proc_7F026130(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - - fVar3 = *param_1; - fVar2 = *param_4; - fVar4 = param_2[2] - param_1[2]; - fVar1 = param_4[2] * (*param_2 - fVar3) - fVar4 * fVar2; - if (fVar1 == 0.00000000) { - if (fVar2 == 0.00000000) { - if (param_4[2] == 0.00000000) { - *param_5 = *param_3; - param_5[1] = param_3[1]; - param_5[2] = param_3[2]; - return; - } - *param_5 = fVar3; - } - else { - *param_5 = fVar3; - } - param_5[1] = param_1[1]; - param_5[2] = param_1[2]; - } - else { - fVar1 = (fVar4 * (*param_3 - fVar3) + (param_1[2] - param_3[2]) * (*param_2 - fVar3)) / fVar1; - *param_5 = fVar2 * fVar1 + *param_3; - param_5[1] = param_4[1] * fVar1 + param_3[1]; - param_5[2] = param_4[2] * fVar1 + param_3[2]; - } - return; -} - - - -void proc_7F02624C(float *param_1,float *param_2,float *param_3) - -{ - float afStack24 [3]; - float afStack12 [3]; - - proc_7F0B28B0(afStack12,afStack24); - proc_7F026130(afStack12,afStack24,param_1,param_2,param_3); - return; -} - - - -void proc_7F026298(float *param_1,float *param_2,float *param_3) - -{ - float fVar1; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - proc_7F0B28B0(&fStack12,&fStack24); - fVar1 = (*param_2 * (fStack4 - param_1[2]) - param_2[2] * (fStack12 - *param_1)) / - (param_2[2] * (fStack24 - fStack12) - (fStack16 - fStack4) * *param_2); - *param_3 = (fStack24 - fStack12) * fVar1 + fStack12; - param_3[1] = (fStack20 - fStack8) * fVar1 + fStack8; - param_3[2] = (fStack16 - fStack4) * fVar1 + fStack4; - return; -} - - - -float proc_7F026364(int param_1,float param_2,float param_3,float param_4,float param_5, - undefined4 param_6) - -{ - int iVar1; - f32 extraout_f12; - float afStack44 [2]; - float fStack36; - float fStack32; - GUARDdata *pGStack28; - u32 uStack24; - float fStack20; - float fStack16; - float fStack12; - undefined4 uStack8; - float fStack4; - - uStack24 = *(u32 *)(param_1 + 0x14); - pGStack28 = *(GUARDdata **)(param_1 + 4); - fStack12 = sinf(param_4); - uStack8 = 0; - fStack4 = cosf(param_4); - fStack16 = fStack12 * param_5 + *(float *)(param_1 + 8); - fStack20 = fStack4 * param_5 + *(float *)(param_1 + 0x10); - set_or_unset_GUARDdata_flag(pGStack28,0); - proc_7F0B1CC4(); - iVar1 = proc_7F0B0E24(&uStack24,extraout_f12,(f32)fStack20,*(f32 *)(param_1 + 8)); - if (iVar1 == 0) { - proc_7F02624C((float *)(param_1 + 8),&fStack12,afStack44); - afStack44[0] = afStack44[0] - *(float *)(param_1 + 8); - fStack36 = fStack36 - *(float *)(param_1 + 0x10); - param_5 = sqrtf(afStack44[0] * afStack44[0] + fStack36 * fStack36); - } - fStack32 = param_5; - set_or_unset_GUARDdata_flag(pGStack28,1); - return fStack32; -} - - - -undefined proc_7F0264B0(int param_1,float param_2,float param_3) - -{ - undefined in_v0_lo; - undefined4 in_a1_lo; - undefined4 in_a2_lo; - float extraout_f12; - float extraout_f14; - undefined4 uStack12; - undefined4 uStack8; - float fStack4; - - proc_7F023160(param_1,&uStack12,&fStack4,&uStack8); - proc_7F026364(param_1,extraout_f12,extraout_f14,in_a1_lo,in_a2_lo,0x1f); - return in_v0_lo; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F026508(void) - -{ - char *pcVar1; - bool bVar2; - bool bVar3; - ulonglong uVar4; - animation_something *paVar5; - int iVar6; - u32 uVar7; - int iVar8; - GUARDdata *guard; - int iVar9; - float *in_a1_lo; - uint extraout_a1_lo; - float in_a2_lo; - undefined4 extraout_a2_lo; - int in_a3_lo; - undefined4 extraout_a3_lo; - struck_animation_table *psVar10; - uint uVar11; - int iVar12; - float in_f0; - float fVar13; - float fVar14; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - float extraout_f12_10; - float extraout_f12_11; - float extraout_f12_12; - float extraout_f12_13; - float extraout_f12_14; - float extraout_f12_15; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - int in_stack_00000010; - int iStack24; - - pcVar1 = (char *)guard->POSdata_pointer; - iVar12 = guard->MODELdata_pointer; - bVar3 = false; - iStack24 = 0; - if ((*pcVar1 == '\x06') && (uVar4 = get_num_players(), 1 < (longlong)uVar4)) { - return; - } - iVar9 = 0; - iVar6 = iStack24; - if (dword_8002C914.anonymous_0 != -1) { - paVar5 = &dword_8002C914; - iVar8 = dword_8002C914.anonymous_0; - do { - iVar6 = iVar9; - if (in_a3_lo == iVar8) break; - iVar8 = paVar5[1].anonymous_0; - iVar9 += 1; - paVar5 = paVar5 + 1; - iVar6 = iStack24; - } while (iVar8 != -1); - } - iStack24 = iVar6; - if ((float)guard->damage < (float)guard->maxdamage) { - if (((in_a3_lo == 7) && (flt_80051DD4 < in_a2_lo)) && - ((in_a2_lo < flt_80051DD8 && (uVar7 = get_random_value(), uVar7 % 5 < 2)))) { - uVar7 = get_random_value(); - uVar11 = uVar7 % 5; - proc_7F02D184((int)guard); - guard->actiontype = gettingshot; - guard->bond_position = 0; - iVar6 = global_timer; - guard->sleep = '\0'; - guard->field_30 = iVar6; - uVar7 = get_random_value(); - if ((uVar7 & 1) == 0) { - iVar6 = ptr_animation_table + 0x4f14; - uVar7 = get_random_value(); - proc_7F06FC4C(iVar12,iVar6,(byte)uVar7 & 1,extraout_f12_09,0,extraout_f14_03,0x3f000000); - if (uVar11 < 2) { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_10); - } - else { - if (uVar11 < 4) { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_11); - } - else { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_12); - } - } - } - else { - iVar6 = ptr_animation_table + 0x4ce0; - uVar7 = get_random_value(); - proc_7F06FC4C(iVar12,iVar6,(byte)uVar7 & 1,extraout_f12_05,0x41200000,extraout_f14_02, - 0x3f000000); - if (uVar11 < 2) { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_06); - } - else { - if (uVar11 < 4) { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_07); - } - else { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_08); - } - } - } - bVar3 = true; - } - if (((!bVar3) && - (paVar5 = &dword_8002C914 + iStack24, (&dword_8002C914)[iStack24].field_24 != NULL)) && - (0 < (&dword_8002C914)[iStack24].field_28)) { - bVar3 = true; - iVar6 = something_with_weaponpos_of_guarddata_hand(guard,1); - iVar9 = something_with_weaponpos_of_guarddata_hand(guard,0); - if ((paVar5 == &animation_something_8002caa0) && (iVar6 != 0)) { - paVar5 = &animation_something_8002cacc; - } - else { - if ((paVar5 == &animation_something_8002cb24) && (iVar9 != 0)) { - paVar5 = &animation_something_8002cb50; - } - } - uVar7 = get_random_value(); - if (paVar5->field_28 == 0) { - trap(0x1c00); - } - psVar10 = paVar5->field_24 + uVar7 % paVar5->field_28; - proc_7F02D184((int)guard); - guard->actiontype = gettingshot; - guard->bond_position = 0; - iVar6 = global_timer; - guard->sleep = '\0'; - guard->field_30 = iVar6; - proc_7F06FC4C(iVar12,psVar10->anonymous_0,(char)psVar10->anonymous_1,extraout_f12_13,0, - extraout_f14_04,(int)psVar10->anonymous_3); - if (0.00000000 <= psVar10->anonymous_2) { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_14); - } - else { - proc_7F023C54(); - proc_7F06FDE8(iVar12,extraout_f12_15); - } - } - bVar2 = false; - goto LAB_7f026ea0; - } - if ((in_a2_lo < flt_80051DBC) || (flt_80051DC0 < in_a2_lo)) { - uVar7 = get_random_value(); - if (uVar7 % 0x14 == 0) { - getsubroty(iVar12,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - proc_7F0264B0((int)pcVar1,in_f0 + flt_80051DC8 + flt_80051DCC, - (in_f0 + flt_80051DC8) - flt_80051DD0); - fVar13 = in_f0; - proc_7F0264B0((int)pcVar1,extraout_f12,extraout_f14); - if (in_f0 < 150.00000000) { - if (fVar13 < 150.00000000) { - if (in_f0 - fVar13 < 10.00000000) { - if (-10.00000000 < in_f0 - fVar13) { - uVar7 = get_random_value(); - uVar11 = uVar7 & 1; - proc_7F02D184((int)guard); - guard->actiontype = dying; - guard->bond_position = 0; - *(float *)&guard->field_30 = (&stru_8002DEBC)[uVar11].anonymous_5; - fVar13 = (&stru_8002DEBC)[uVar11].anonymous_6; - guard->sleep = '\0'; - *(undefined4 *)&guard->field_38 = 0; - *(float *)&guard->field_34 = fVar13; - proc_7F06FC4C(iVar12,(&stru_8002DEBC)[uVar11].anonymous_0, - (char)(&stru_8002DEBC)[uVar11].anonymous_1,extraout_f12_00,0, - extraout_f14_00,(int)(&stru_8002DEBC)[uVar11].anonymous_3); - if (0.00000000 <= (&stru_8002DEBC)[uVar11].anonymous_2) { - proc_7F06FDE8(iVar12,extraout_f12_01); - } - guard->chrwidth = 10.00000000; - bVar3 = true; - bVar2 = true; - } - else { - bVar2 = false; - } - } - else { - bVar2 = false; - } - } - else { - bVar2 = false; - } - } - else { - bVar2 = false; - } - } - else { - bVar2 = false; - } - } - else { - bVar2 = false; - } - if (((!bVar2) && ((&dword_8002C914)[iStack24].field_1C != NULL)) && - (0 < (&dword_8002C914)[iStack24].field_20)) { - bVar3 = true; - uVar7 = get_random_value(); - if ((&dword_8002C914)[iStack24].field_20 == 0) { - trap(0x1c00); - } - psVar10 = (&dword_8002C914)[iStack24].field_1C + uVar7 % (&dword_8002C914)[iStack24].field_20; - proc_7F02D184((int)guard); - guard->actiontype = dying; - guard->bond_position = 0; - fVar13 = 0.00000000; - *(float *)&guard->field_30 = psVar10->anonymous_5; - fVar14 = psVar10->anonymous_6; - guard->sleep = '\0'; - *(undefined4 *)&guard->field_38 = 0; - *(float *)&guard->field_34 = fVar14; - proc_7F06FC4C(iVar12,psVar10->anonymous_0,(char)psVar10->anonymous_1,extraout_f12_02,0, - extraout_f14_01,(int)psVar10->anonymous_3); - if (ptr_animation_table + 0x2e64 == psVar10->anonymous_0) { - uVar7 = get_random_value(); - if (uVar7 % 100 == 0) { - fVar13 = psVar10->anonymous_2; - fVar14 = extraout_f12_04; - goto LAB_7f026940; - } - proc_7F06FDE8(iVar12,extraout_f12_04); - } - else { - fVar13 = psVar10->anonymous_2; - fVar14 = extraout_f12_03; -LAB_7f026940: - if (0.00000000 <= fVar13) { - proc_7F06FDE8(iVar12,fVar14); - } - } - proc_7F05DFA8(in_stack_00000010); - if (fVar13 <= 0.00000000) { - if ((guard->guard_bitflags & 0x8000U) == 0) { - iVar12 = psVar10->anonymous_4; - } - else { - fVar13 = 6.00000000; - iVar12 = psVar10->anonymous_4; - } - } - else { - iVar12 = psVar10->anonymous_4; - } - if ((iVar12 != 0) && (0.00000000 < fVar13)) { - guard->path_target_position = 0; - *(float *)&guard->field_38 = (fVar13 * 90.00000000) / 6.00000000; - *(float *)&guard->field_40 = *in_a1_lo * fVar13; - *(float *)&guard->field_44 = in_a1_lo[1] * fVar13; - *(float *)&guard->field_48 = in_a1_lo[2] * fVar13; - } - } - proc_7F021B20((int)guard); - increment_num_kills_display_text_in_MP(); - if (guard->guard_bitflags << 0xb < 0) { - inc_cur_civilian_casualties(); - bVar2 = true; - } - else { - bVar2 = true; - } -LAB_7f026ea0: - if ((bVar2) && (bVar3)) { - iVar12 = guard->handle_positiondata_right_gun; - if (iVar12 == 0) { - iVar12 = guard->handle_positiondata_left_gun; - } - else { - if ((*(uint *)(*(int *)(iVar12 + 4) + 8) & 0x2000) == 0) { - proc_7F04BFD0(iVar12,1); - guard->special_bitflags = guard->special_bitflags | 1; - iVar12 = guard->handle_positiondata_left_gun; - } - else { - iVar12 = guard->handle_positiondata_left_gun; - } - } - if ((iVar12 != 0) && ((*(uint *)(*(int *)(iVar12 + 4) + 8) & 0x2000) == 0)) { - proc_7F04BFD0(iVar12,1); - guard->special_bitflags = guard->special_bitflags | 1; - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 proc_7F026F30(void) - -{ - weapon_firing_animation_table *pwVar1; - int in_a0_lo; - int iVar2; - float *in_a1_lo; - float in_f0; - float fVar3; - float fVar4; - - if (*(char *)(in_a0_lo + 7) == '\n') { - if (*(char *)(in_a0_lo + 0x35) == '\0') { - fVar4 = *(float *)(*(int *)(in_a0_lo + 0x2c) + 4) - 8.00000000; - proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); - if (fVar4 <= in_f0) { - return 0; - } - *in_a1_lo = fVar4; - } - else { - pwVar1 = *(weapon_firing_animation_table **)(in_a0_lo + 0x2c); - if ((((pwVar1 != &stru_80030198) && (pwVar1 != &stru_800301E0)) && (pwVar1 != &stru_80030228)) - && (pwVar1 != &stru_80030270)) { - return 0; - } - fVar3 = (float)pwVar1->anonymous_1; - fVar4 = (float)pwVar1->anonymous_5; - if (fVar4 < fVar3) { - iVar2 = *(int *)(in_a0_lo + 0x1c); - } - else { - iVar2 = *(int *)(in_a0_lo + 0x1c); - fVar4 = fVar3 - 8.00000000; - } - proc_7F06F5BC(iVar2); - if (fVar4 <= fVar3) { - return 0; - } - *in_a1_lo = fVar4; - } - } - else { - if (*(char *)(in_a0_lo + 7) != '\a') { - return 0; - } - } - return 1; -} - - - -void proc_7F027060(int param_1) - -{ - ulonglong uVar1; - longlong lVar2; - int **ppiVar3; - int iVar4; - undefined **ppuVar5; - undefined **ppuVar6; - undefined4 *puVar7; - undefined4 *puVar8; - undefined4 uStack72; - undefined2 uStack68; - undefined4 auStack64 [14]; - int iStack8; - - iVar4 = 0; - if (**(char **)(param_1 + 0x18) == '\x06') { - iStack8 = 0; - lVar2 = proc_7F09B15C((int)*(char **)(param_1 + 0x18)); - iVar4 = iStack8; - if ((&ptr_BONDdata_p1)[(int)lVar2]->bonddead != 0) { - return; - } - } - if (**(char **)(param_1 + 0x18) == '\x06') { - iStack8 = iVar4; - uVar1 = get_num_players(); - if (uVar1 == 1) { - iVar4 = iStack8; - if (*(char *)&c_item_entries[(int)*(char *)(param_1 + 0xf)].anonymous_3 != '\0') { - iVar4 = 1; - } - } - else { - lVar2 = proc_7F09B15C(*(int *)(param_1 + 0x18)); - uVar1 = get_player_mp_char_gender((int)lVar2); - iVar4 = iStack8; - if (uVar1 != 0) { - iVar4 = 1; - } - } - } - else { - if (*(char *)&c_item_entries[(int)*(char *)(param_1 + 0xf)].anonymous_3 != '\0') { - iVar4 = 1; - } - } - if (iVar4 == 0) { - uStack72 = female_guard_yelps[0]; - uStack68 = female_guard_yelps[1]._0_2_; - ppiVar3 = play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack72 + female_guard_yelp_counter * 2), - NULL); - female_guard_yelp_counter += 1; - if (2 < female_guard_yelp_counter) { - female_guard_yelp_counter = 0; - } - } - else { - ppuVar5 = male_guard_yelps; - puVar7 = auStack64; - do { - ppuVar6 = ppuVar5 + 3; - puVar8 = puVar7 + 3; - *(undefined **)puVar7 = *ppuVar5; - *(undefined **)(puVar7 + 1) = ppuVar5[1]; - *(undefined **)(puVar7 + 2) = ppuVar5[2]; - ppuVar5 = ppuVar6; - puVar7 = puVar8; - } while (ppuVar6 != male_guard_yelps + 0xc); - *(undefined2 *)puVar8 = male_guard_yelps[12]._0_2_; - ppiVar3 = play_sfx_a1(ptr_sfx_buf,*(short *)((int)auStack64 + male_guard_yelp_counter * 2),NULL) - ; - male_guard_yelp_counter += 1; - if (0x18 < male_guard_yelp_counter) { - male_guard_yelp_counter = 0; - } - } - proc_7F053A10((int)ppiVar3,(float *)(*(int *)(param_1 + 0x18) + 8)); - return; -} - - - -// WARNING: Instruction at (ram,0x7f02755c) overlaps instruction at (ram,0x7f027558) -// -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F02727C(void) - -{ - char cVar1; - int **ppiVar4; - ulonglong uVar2; - u32 playernum; - longlong lVar3; - int in_a0_lo; - longlong in_a1; - undefined4 *in_a2_lo; - int weapon; - uint uVar5; - char *pcVar6; - float in_f0; - float fVar7; - float extraout_f12; - int iStackX4; - int in_stack_00000010; - undefined4 uStack20; - word wStack16; - undefined4 uStack8; - - iStackX4 = (int)in_a1; - uStack8 = *(undefined4 *)(in_a0_lo + 0x18); - if ((in_a1 == 0x6e) && (*(int *)(in_a0_lo + 0x1d8) != 0)) { - lVar3 = get_hat_model(*(int *)(in_a0_lo + 0x1d8)); - if (lVar3 == 5) { - iStackX4 = 8; - } - else { - if (lVar3 == 3) { - uStack20 = metal_ricochet_SFX._0_4_; - wStack16 = metal_ricochet_SFX[2]; - playernum = get_random_value(); - ppiVar4 = play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack20 + (playernum % 3) * 2),NULL); - proc_7F053A10((int)ppiVar4,(float *)(*(int *)(in_a0_lo + 0x18) + 8)); - } - else { - proc_7F04BFD0(*(int *)(in_a0_lo + 0x1d8),4); - *(ushort *)(in_a0_lo + 0x12) = *(ushort *)(in_a0_lo + 0x12) | 1; - } - } - } - if (in_stack_00000010 == 0) { - uVar5 = *(uint *)(in_a0_lo + 0x14); - } - else { - if (iStackX4 == 0) { -LAB_7f0273e8: - uVar5 = *(uint *)(in_a0_lo + 0x14); - } - else { - if (iStackX4 == 7) { -LAB_7f0273d0: - inc_curplayer_hitcount_with_weapon(weapon,2); - uVar5 = *(uint *)(in_a0_lo + 0x14); - } - else { - if (iStackX4 == 8) { - inc_curplayer_hitcount_with_weapon(weapon,1); - uVar5 = *(uint *)(in_a0_lo + 0x14); - } - else { - if (iStackX4 == 0xf) goto LAB_7f0273d0; - if (iStackX4 == 100) { - inc_curplayer_hitcount_with_weapon(weapon,4); - uVar5 = *(uint *)(in_a0_lo + 0x14); - } - else { - if (iStackX4 != 0x6e) { - inc_curplayer_hitcount_with_weapon(weapon,3); - goto LAB_7f0273e8; - } - inc_curplayer_hitcount_with_weapon(weapon,5); - uVar5 = *(uint *)(in_a0_lo + 0x14); - } - } - } - } - } - *(char *)(in_a0_lo + 0xb) = *(char *)(in_a0_lo + 0xb) + '\x01'; - *(uint *)(in_a0_lo + 0x14) = uVar5 | 0x200000; - if ((uVar5 & 0x10) != 0) { - proc_7F0206D4(in_a0_lo); - return 0; - } - if (*(char *)(in_a0_lo + 7) == '\x04') { - return 1; - } - if (*(char *)(in_a0_lo + 7) == '\x05') { - return 1; - } - proc_7F05DF84(weapon); - if ((in_stack_00000010 != 0) && (uVar2 = get_num_players(), uVar2 == 1)) { - in_f0 = in_f0 * (float)ai_health_modifier; - } - fVar7 = (float)proc_7F032BD8(); - if (iStackX4 == 200) { - iStackX4 = 0xf; - in_f0 = in_f0 * 0.50000000; - } - else { - if (iStackX4 == 0xc9) { - iStackX4 = 0xf; - in_f0 = in_f0 * 0.25000000; - } - } - if (((((weapon == 1) && (cVar1 = *(char *)(in_a0_lo + 7), cVar1 != '\x01')) && (cVar1 != '\x0e')) - && ((cVar1 != '\x10' && (cVar1 != '\x03')))) && - ((cVar1 != '\x0f' || (*(char *)(in_a0_lo + 0x59) != '\0')))) { - if ((fVar7 < flt_80051DDC) || (FLOAT_80051de0 < fVar7)) { - in_f0 = in_f0 * 0.12500000; - } - else { - if ((fVar7 < flt_80051DE4) || (FLOAT_80051de8 < fVar7)) { - in_f0 = in_f0 * 0.25000000; - } - else { - in_f0 = in_f0 * 0.50000000; - } - } - } - if (iStackX4 == 8) { - in_f0 = in_f0 * 4.00000000; - pcVar6 = *(char **)(in_a0_lo + 0x18); - goto LAB_7f027664; - } - if (iStackX4 == 0xf) { - in_f0 = in_f0 + in_f0; - } - else { - if (iStackX4 == 100) { - in_f0 = 0.00000000; - pcVar6 = *(char **)(in_a0_lo + 0x18); - goto LAB_7f027664; - } - if (iStackX4 != 0x6e) { - pcVar6 = *(char **)(in_a0_lo + 0x18); - goto LAB_7f027664; - } - in_f0 = 0.00000000; - } - pcVar6 = *(char **)(in_a0_lo + 0x18); -LAB_7f027664: - if (*pcVar6 == '\x06') { - playernum = get_cur_playernum(); - lVar3 = proc_7F09B15C(*(int *)(in_a0_lo + 0x18)); - set_cur_player((int)lVar3); - record_damage_kills(); - set_cur_player(playernum); - } - else { - *(uint *)(in_a0_lo + 0x14) = *(uint *)(in_a0_lo + 0x14) | 0x100; - *(float *)(in_a0_lo + 0xfc) = *(float *)(in_a0_lo + 0xfc) + in_f0; - if ((*(float *)(in_a0_lo + 0xfc) < 0.00000000) && (lVar3 = proc_7F026F30(), lVar3 == 0)) { - proc_7F0206D4(in_a0_lo); - return 0; - } - } - if (iStackX4 != 0x6e) { - proc_7F027060(in_a0_lo); - lVar3 = proc_7F026F30(); - if (lVar3 == 0) { - proc_7F026508(); - } - else { - if (false) { - proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12); - } - *(undefined *)(in_a0_lo + 7) = 7; - *(undefined4 *)(in_a0_lo + 0x2c) = *in_a2_lo; - *(undefined4 *)(in_a0_lo + 0x30) = in_a2_lo[1]; - *(undefined4 *)(in_a0_lo + 0x34) = in_a2_lo[2]; - *(float *)(in_a0_lo + 0x38) = fVar7; - *(int *)(in_a0_lo + 0x3c) = iStackX4; - *(undefined *)(in_a0_lo + 8) = 0; - *(int *)(in_a0_lo + 0x40) = weapon; - } - } - return 1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F027804(void) - -{ - uint uVar1; - undefined8 uVar2; - u32 uVar3; - int in_a0_lo; - int iVar4; - float *in_a1_lo; - float in_a2_lo; - int in_a3_lo; - float in_f0; - float fVar5; - float fVar6; - float fVar7; - int iVar8; - float fVar9; - float extraout_f12; - float extraout_f12_00; - float fVar10; - float extraout_f14; - float fStack36; - - iVar4 = *(int *)(in_a0_lo + 0x1c); - iVar8 = *(int *)(in_a0_lo + 0x18); - if ((*(char *)(in_a0_lo + 7) == '\x05') || (*(char *)(in_a0_lo + 7) == '\x04')) { - uVar2 = 0; - } - else { - uVar1 = *(uint *)(in_a0_lo + 0x14); - *(uint *)(in_a0_lo + 0x14) = uVar1 | 0x200000; - if ((uVar1 & 0x10) == 0) { - *(char *)(in_a0_lo + 0xb) = *(char *)(in_a0_lo + 0xb) + '\x01'; - *(uint *)(in_a0_lo + 0x14) = uVar1 | 0x200100; - *(float *)(in_a0_lo + 0xfc) = *(float *)(in_a0_lo + 0xfc) + in_a2_lo; - if (*(float *)(in_a0_lo + 0xfc) <= 0.00000000) { - uVar2 = 0; - } - else { - *(undefined4 *)(in_a0_lo + 0xfc) = *(undefined4 *)(in_a0_lo + 0x100); - getsubroty(iVar4,(uint)in_a1_lo,iVar4,in_a3_lo); - fVar5 = convert_angle_using_inverse - ((f32)(*(float *)(iVar8 + 8) - *in_a1_lo), - (f32)(*(float *)(iVar8 + 0x10) - in_a1_lo[2])); - fVar7 = *(float *)(iVar8 + 8) - *in_a1_lo; - fVar9 = *(float *)(iVar8 + 0xc) - in_a1_lo[1]; - fStack36 = *(float *)(iVar8 + 0x10) - in_a1_lo[2]; - if (((fVar7 == 0.00000000) && (fVar9 == 0.00000000)) && (fStack36 == 0.00000000)) { - fStack36 = 1.00000000; - } - fVar6 = sqrtf(fStack36 * fStack36 + fVar7 * fVar7 + fVar9 * fVar9); - fVar6 = (in_a2_lo * 5.00000000) / fVar6; - fVar10 = fVar5 - in_f0; - *(float *)(in_a0_lo + 0xb0) = fVar7 * fVar6; - *(float *)(in_a0_lo + 0xb4) = fVar9 * fVar6; - *(float *)(in_a0_lo + 0xb8) = fStack36 * fVar6; - if (fVar5 < in_f0) { - fVar10 = fVar10 + flt_80051DEC; - } - iVar8 = (int)((fVar10 * 8.00000000) / flt_80051DF0 + 0.50000000); - if (7 < iVar8) { - iVar8 = 0; - } - uVar3 = get_random_value(); - if (explosion_animation_table[iVar8].count == 0) { - trap(0x1c00); - } - iVar8 = (int)*(char *)((int)explosion_animation_table[iVar8].direction + - uVar3 % explosion_animation_table[iVar8].count); - proc_7F02D184(in_a0_lo); - *(undefined *)(in_a0_lo + 7) = 4; - *(undefined4 *)(in_a0_lo + 0x2c) = 0; - *(float *)(in_a0_lo + 0x30) = (&stru_8002E648)[iVar8].anonymous_5; - *(undefined *)(in_a0_lo + 8) = 0; - *(undefined4 *)(in_a0_lo + 0x34) = 0xbf800000; - *(undefined4 *)(in_a0_lo + 0x38) = 0; - proc_7F06FCA8(iVar4,(&stru_8002E648)[iVar8].anonymous_0 + ptr_animation_table, - (char)(&stru_8002E648)[iVar8].anonymous_1,extraout_f12, - (&stru_8002E648)[iVar8].anonymous_3,extraout_f14); - if (0.00000000 <= (&stru_8002E648)[iVar8].anonymous_6) { - proc_7F06FDE8(iVar4,extraout_f12_00); - } - if (in_a3_lo != 0) { - proc_7F027060(in_a0_lo); - } - proc_7F021B20(in_a0_lo); - increment_num_kills_display_text_in_MP(); - if (*(int *)(in_a0_lo + 0x14) << 0xb < 0) { - inc_cur_civilian_casualties(); - iVar4 = *(int *)(in_a0_lo + 0x160); - } - else { - iVar4 = *(int *)(in_a0_lo + 0x160); - } - if (iVar4 == 0) { - iVar4 = *(int *)(in_a0_lo + 0x164); - } - else { - if ((*(uint *)(*(int *)(iVar4 + 4) + 8) & 0x2000) == 0) { - proc_7F04BFD0(iVar4,1); - *(ushort *)(in_a0_lo + 0x12) = *(ushort *)(in_a0_lo + 0x12) | 1; - iVar4 = *(int *)(in_a0_lo + 0x164); - } - else { - iVar4 = *(int *)(in_a0_lo + 0x164); - } - } - if ((iVar4 != 0) && ((*(uint *)(*(int *)(iVar4 + 4) + 8) & 0x2000) == 0)) { - proc_7F04BFD0(iVar4,1); - *(ushort *)(in_a0_lo + 0x12) = *(ushort *)(in_a0_lo + 0x12) | 1; - } - uVar2 = 1; - } - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -int * proc_7F027BF4(int param_1) - -{ - int *piVar1; - int iVar2; - - if ((ptr_setup_path_tbl != NULL) && (-1 < *(int *)ptr_setup_path_tbl)) { - iVar2 = *(int *)ptr_setup_path_tbl; - piVar1 = (int *)ptr_setup_path_tbl; - do { - if (param_1 == *(int *)(ptr_0xxxpresets + iVar2 * 0x2c + 0x28)) { - return piVar1; - } - iVar2 = piVar1[4]; - piVar1 = piVar1 + 4; - } while (-1 < iVar2); - } - return NULL; -} - - - -ulonglong proc_7F027C60(int param_1) - -{ - int *piVar1; - - piVar1 = proc_7F027BF4(param_1); - return (ulonglong)(piVar1 != NULL); -} - - - -float proc_7F027C84(float *param_1,int *param_2) - -{ - float fVar1; - float fVar2; - - fVar1 = *(float *)(ptr_0xxxpresets + *param_2 * 0x2c) - *param_1; - fVar2 = *(float *)(ptr_0xxxpresets + *param_2 * 0x2c + 2) - param_1[2]; - return fVar1 * fVar1 + fVar2 * fVar2; -} - - - -int * proc_7F027CD4(float *param_1,undefined4 param_2) - -{ - int iVar1; - int *piVar2; - int *piVar3; - int *piVar4; - float fVar5; - float fVar6; - - piVar2 = NULL; - iVar1 = proc_7F0B2718(param_2,proc_7F027C60); - if ((iVar1 != 0) && (piVar2 = proc_7F027BF4(iVar1), piVar2 != NULL)) { - fVar5 = proc_7F027C84(param_1,piVar2); - piVar3 = (int *)piVar2[1]; - iVar1 = *piVar3; - while (-1 < iVar1) { - piVar4 = (int *)(ptr_setup_path_tbl + iVar1 * 0x10); - fVar6 = proc_7F027C84(param_1,piVar4); - if (fVar6 < fVar5) { - iVar1 = piVar3[1]; - } - else { - iVar1 = piVar3[1]; - piVar4 = piVar2; - } - piVar3 = piVar3 + 1; - piVar2 = piVar4; - } - } - return piVar2; -} - - - -void proc_7F027DB0(int param_1,float *param_2,int param_3) - -{ - int iVar2; - ulonglong uVar1; - int iVar3; - int *piVar4; - float in_f12; - float in_f14; - int aiStackX8 [2]; - int aiStack80 [20]; - - iVar2 = *(int *)(param_1 + 0x18); - aiStackX8[0] = param_3; - iVar2 = proc_7F0B0D0C(*(int *)(iVar2 + 0x14),in_f12,in_f14,*(int **)(iVar2 + 8), - *(float *)(iVar2 + 0x10),(float)aiStackX8,(uint *)*param_2,(int)param_2[2]); - if (((0 < iVar2) && (iVar2 < 0x14)) && (iVar3 = 0, 0 < iVar2)) { - piVar4 = aiStack80; - do { - uVar1 = proc_7F0B5E50(*piVar4); - iVar3 += 1; - if (uVar1 != 0) { - return; - } - piVar4 = piVar4 + 1; - } while (iVar3 != iVar2); - } - return; -} - - - -void proc_7F027E70(int param_1,float *param_2) - -{ - proc_7F027DB0(param_1,param_2,(int)param_2[10]); - return; -} - - - -void proc_7F027E90(int param_1,undefined *param_2,float *param_3) - -{ - undefined4 extraout_a2_lo; - float fVar1; - float vector1; - float extraout_f12; - float vector2; - - vector1 = *param_3 - *(float *)(*(int *)(param_1 + 0x18) + 8); - vector2 = param_3[2] - *(float *)(*(int *)(param_1 + 0x18) + 0x10); - fVar1 = convert_angle_using_inverse((f32)vector1,(f32)vector2); - *param_2 = 6; - *(undefined4 *)(param_2 + 0x38) = 0; - vector1 = sqrtf(vector1 * vector1 + vector2 * vector2); - *(float *)(param_2 + 0x3c) = vector1; - setsubroty(*(int *)(param_1 + 0x1c),extraout_f12,fVar1,extraout_a2_lo); - return; -} - - - -void proc_7F027F20(int param_1,undefined4 *param_2,undefined4 *param_3) - -{ - int *piVar1; - undefined4 *puVar2; - - piVar1 = *(int **)(param_1 + (uint)*(byte *)(param_1 + 0x58) * 4 + 0x40); - if (piVar1 == NULL) { - *param_2 = *(undefined4 *)(param_1 + 0x2c); - param_2[1] = *(undefined4 *)(param_1 + 0x30); - param_2[2] = *(undefined4 *)(param_1 + 0x34); - *param_3 = *(undefined4 *)(param_1 + 0x38); - return; - } - puVar2 = (undefined4 *)(ptr_0xxxpresets + *piVar1 * 0x2c); - *param_2 = *puVar2; - param_2[1] = puVar2[1]; - param_2[2] = puVar2[2]; - *param_3 = puVar2[10]; - return; -} - - - -float proc_7F027FA8(int param_1) - -{ - float fVar1; - int iVar2; - float fVar3; - - fVar1 = dword_80030984; - iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)); - fVar3 = dword_8003098C; - if (((((iVar2 != ptr_animation_table + 0x4070) && - (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030988, - iVar2 != ptr_animation_table + 0x40d4)) && - (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030998, - iVar2 != ptr_animation_table + 0x77d4)) && - ((iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030994, - iVar2 != ptr_animation_table + 0x777c && - (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030990, - iVar2 != ptr_animation_table + 0x8204)))) && - ((iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_800309A4, - iVar2 != ptr_animation_table + 0x77d4 && - ((iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_800309A0, - iVar2 != ptr_animation_table + 0x8520 && - (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = fVar1, - iVar2 == ptr_animation_table + 0x84c4)))))) { - fVar3 = dword_8003099C; - } - return *(float *)(*(int *)(param_1 + 0x1c) + 0x14) * fVar3 * flt_80051DF4; -} - - - -int proc_7F028144(int param_1) - -{ - float fVar1; - float fVar2; - undefined4 uStack28; - float afStack24 [2]; - float fStack16; - float fStack8; - float fStack4; - - fVar1 = proc_7F06F618(*(int *)(param_1 + 0x1c)); - proc_7F027F20(param_1,afStack24,&uStack28); - fStack4 = afStack24[0] - *(float *)(*(int *)(param_1 + 0x18) + 8); - fStack8 = fStack16 - *(float *)(*(int *)(param_1 + 0x18) + 0x10); - if (fStack4 < 0.00000000) { - fStack4 = -fStack4; - } - if (fStack8 < 0.00000000) { - fStack8 = -fStack8; - } - fVar2 = proc_7F027FA8(param_1); - return (int)((fStack4 + fStack8) / (fVar2 * fVar1)); -} - - - -void proc_7F0281F4(int param_1) - -{ - *(undefined2 *)(param_1 + 0x5a) = 0; - return; -} - - - -void proc_7F0281FC(int param_1) - -{ - ushort uVar1; - int iVar2; - undefined2 uVar3; - - if (*(char *)(param_1 + 0x5c) != '\x06') { - uVar1 = *(ushort *)(param_1 + 0x5a); - if (uVar1 == 0) { - iVar2 = proc_7F028144(param_1); - iVar2 = iVar2 * 2 + 300; - uVar3 = (undefined2)iVar2; - if (0xffff < iVar2) { - uVar3 = 0xffff; - } - *(undefined2 *)(param_1 + 0x5a) = uVar3; - } - else { - if (clock_timer._2_2_ < uVar1) { - *(short *)(param_1 + 0x5a) = uVar1 - clock_timer._2_2_; - } - else { - proc_7F028DDC(param_1,(float *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x38), - *(char *)(param_1 + 0x59)); - } - } - } - return; -} - - - -void proc_7F02828C(int param_1) - -{ - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - proc_7F027F20(param_1,&uStack12,&uStack16); - *(undefined *)(param_1 + 0x5c) = 0; - *(undefined *)(param_1 + 0x5d) = 0; - *(undefined *)(param_1 + 0x5e) = 0; - *(undefined4 *)(param_1 + 0x60) = uStack12; - *(undefined4 *)(param_1 + 100) = uStack8; - *(undefined4 *)(param_1 + 0x68) = uStack4; - proc_7F0281F4(param_1); - return; -} - - - -void proc_7F0282E0(int param_1) - -{ - byte bVar1; - int iVar2; - - bVar1 = *(byte *)(param_1 + 0x58); - if (bVar1 < 3) { - *(char *)(param_1 + 0x58) = bVar1 + 1; - } - else { - iVar2 = *(int *)(param_1 + (uint)bVar1 * 4 + 0x40); - *(undefined *)(param_1 + 0x58) = 1; - proc_7F08F4F0(iVar2,*(int *)(param_1 + 0x3c),(int *)(param_1 + 0x40),6); - } - proc_7F02828C(param_1); - return; -} - - - -int proc_7F028348(int param_1,int *param_2,int param_3) - -{ - int iVar1; - int iVar2; - ulonglong uVar3; - - iVar2 = *(int *)(param_1 + 0x30); - uVar3 = SEXT48(*param_2); - if (param_3 < 0) { - uVar3 = (ulonglong)(uVar3 == 0); - param_3 = -param_3; - } - if (param_3 < 1) { - *param_2 = (int)uVar3; - } - else { - do { - param_3 += -1; - if (uVar3 == 0) { - iVar1 = iVar2 + -1; - if (iVar2 + -1 < 0) { - if ((*(byte *)(*(int *)(param_1 + 0x2c) + 5) & 1) == 0) { - uVar3 = 1; - iVar1 = 1; - } - else { - iVar1 = (uint)*(ushort *)(*(int *)(param_1 + 0x2c) + 6) - 1; - } - } - } - else { - iVar1 = iVar2 + 1; - if (*(int *)(**(int **)(param_1 + 0x2c) + (iVar2 + 1) * 4) < 0) { - if ((*(byte *)((int)*(int **)(param_1 + 0x2c) + 5) & 1) == 0) { - uVar3 = 0; - iVar1 = iVar2 + -1; - } - else { - iVar1 = 0; - } - } - } - iVar2 = iVar1; - } while (0 < param_3); - *param_2 = (int)uVar3; - } - return iVar2; -} - - - -int proc_7F0283FC(int param_1,int param_2) - -{ - int iVar1; - int aiStack8 [2]; - - aiStack8[0] = *(int *)(param_1 + 0x34); - iVar1 = proc_7F028348(param_1,aiStack8,param_2); - return (int)(ptr_0xxxpresets + - *(int *)(ptr_setup_path_tbl + *(int *)(**(int **)(param_1 + 0x2c) + iVar1 * 4) * 0x10) - * 0x2c); -} - - - -int proc_7F028474(int param_1) - -{ - int iVar1; - - iVar1 = proc_7F0283FC(param_1,0); - return iVar1; -} - - - -void proc_7F028494(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)proc_7F028474(param_1); - *(undefined *)(param_1 + 0x38) = 0; - *(undefined *)(param_1 + 0x39) = 0; - *(undefined *)(param_1 + 0x3a) = 0; - *(undefined4 *)(param_1 + 0x3c) = *puVar1; - *(undefined4 *)(param_1 + 0x40) = puVar1[1]; - *(undefined4 *)(param_1 + 0x44) = puVar1[2]; - return; -} - - - -void proc_7F0284DC(int param_1) - -{ - int iVar1; - - iVar1 = proc_7F028348(param_1,(int *)(param_1 + 0x34),1); - *(int *)(param_1 + 0x30) = iVar1; - proc_7F028494(param_1); - return; -} - - - -undefined8 proc_7F028510(float *param_1,int param_2) - -{ - longlong lVar1; - short *psVar2; - uint uStack48; - float *apfStack44 [3]; - uint uStack32; - undefined4 uStack28; - - uStack28 = 0xffffffff; - uStack32 = (uint)*(byte *)(param_2 + 3); - proc_7F03E3FC((int *)&uStack32); - lVar1 = (longlong)*ptr_list_object_lookup_indices; - psVar2 = ptr_list_object_lookup_indices; - do { - if (lVar1 < 0) { - return 1; - } - if (pos_data_entry[(int)lVar1 * 0x34] == '\x01') { - proc_7F03CCB0(pos_data_entry + (int)lVar1 * 0x34,(int **)apfStack44,&uStack48); - if ((int)uStack48 < 1) { - lVar1 = (longlong)psVar2[1]; - } - else { - lVar1 = proc_7F03CCD8(param_1,apfStack44[0],uStack48); - if (lVar1 != 0) { - return 0; - } - lVar1 = (longlong)psVar2[1]; - } - } - else { - lVar1 = (longlong)psVar2[1]; - } - psVar2 = psVar2 + 1; - } while( true ); -} - - - -void proc_7F028600(int param_1,undefined *param_2,float param_3,float *param_4,int param_5) - -{ - byte bVar1; - longlong lVar2; - float *pfVar3; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float fVar4; - float extraout_f12; - int in_stack_00000010; - undefined4 uStack44; - float afStack40 [9]; - int iStack4; - - *(undefined *)(param_1 + 9) = 0; - *(undefined4 *)(param_1 + 0xcc) = global_timer; - fVar4 = proc_7F06F618(*(int *)(param_1 + 0x1c)); - *(float *)(param_2 + 0x38) = - *(float *)(param_2 + 0x38) + (float)param_4 * fVar4 * global_timer_delta; - if (*(float *)(param_2 + 0x3c) <= *(float *)(param_2 + 0x38)) { - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - lVar2 = proc_7F0B18B8(); - if ((lVar2 < 0) && (lVar2 = proc_7F028510((float *)param_5,in_stack_00000010), lVar2 != 0)) { - iStack4 = *(int *)(param_1 + 0x18); - *(int *)(iStack4 + 0x14) = in_stack_00000010; - *(undefined4 *)(iStack4 + 8) = *(undefined4 *)param_5; - *(undefined4 *)(iStack4 + 0xc) = *(undefined4 *)(param_5 + 4); - *(undefined4 *)(iStack4 + 0x10) = *(undefined4 *)(param_5 + 8); - *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1; - setsuboffset(*(int *)(param_1 + 0x1c),(float *)param_5,param_5,extraout_a3_lo); - proc_7F01FC10(*(int *)(param_1 + 0x1c),(float *)(iStack4 + 8),(float *)(iStack4 + 8), - (float *)(param_1 + 0xac)); - proc_7F020D94(param_1); - if (*(char *)(param_1 + 7) == '\x0e') { - proc_7F0284DC(param_1); - pfVar3 = (float *)proc_7F028474(param_1); - proc_7F027E90(param_1,param_2,pfVar3); - } - else { - if (*(char *)(param_1 + 7) == '\x0f') { - bVar1 = *(byte *)(param_1 + 0x58); - if (*(int *)(param_1 + (uint)bVar1 * 4 + 0x40) == 0) { - if (bVar1 != 0) { - fVar4 = convert_angle_using_inverse - ((f32)(*(float *)(iStack4 + 8) - - *(float *)(ptr_0xxxpresets + - **(int **)(param_1 + (uint)bVar1 * 4 + 0x3c) * 0x2c) - ),(f32)(*(float *)(iStack4 + 0x10) - - *(float *)(ptr_0xxxpresets + - **(int **)(param_1 + (uint)bVar1 * 4 + 0x3c) - * 0x2c + 2))); - setsubroty(*(int *)(param_1 + 0x1c),extraout_f12,fVar4,extraout_a2_lo); - } - proc_7F023E48(param_1); - } - else { - proc_7F0282E0(param_1); - proc_7F027F20(param_1,afStack40,&uStack44); - proc_7F027E90(param_1,param_2,afStack40); - } - } - } - } - else { - *(undefined4 *)(param_2 + 0x38) = *(undefined4 *)(param_2 + 0x3c); - if (*(char *)(param_1 + 7) == '\x0e') { - *(undefined4 *)(param_1 + 0x78) = global_timer; - proc_7F028494(param_1); - } - else { - *(undefined4 *)(param_1 + 0x9c) = global_timer; - proc_7F02828C(param_1); - } - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - } - return; -} - - - -void proc_7F028894(int param_1,float *param_2) - -{ - int iVar1; - float *pfVar2; - float fVar3; - float fVar4; - undefined4 uStack24; - float fStack20; - float fStack16; - float fStack12; - - if ((*(char *)(param_1 + 7) == '\x0e') && (*(char *)(param_1 + 0x38) == '\x06')) { - pfVar2 = (float *)proc_7F028474(param_1); - if (*(float *)(param_1 + 0x74) <= *(float *)(param_1 + 0x70)) { - *param_2 = *pfVar2; - param_2[1] = pfVar2[1]; - param_2[2] = pfVar2[2]; - } - else { - fVar3 = *(float *)(param_1 + 0x70) / *(float *)(param_1 + 0x74); - fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 8); - *param_2 = (*pfVar2 - fVar4) * fVar3 + fVar4; - fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0xc); - param_2[1] = (pfVar2[1] - fVar4) * fVar3 + fVar4; - fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0x10); - param_2[2] = (pfVar2[2] - fVar4) * fVar3 + fVar4; - } - } - else { - if (*(char *)(param_1 + 7) == '\x0f') { - if (*(char *)(param_1 + 0x5c) == '\x06') { - proc_7F027F20(param_1,&fStack20,&uStack24); - if (*(float *)(param_1 + 0x94) < *(float *)(param_1 + 0x98)) { - fVar3 = *(float *)(param_1 + 0x94) / *(float *)(param_1 + 0x98); - fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 8); - *param_2 = (fStack20 - fVar4) * fVar3 + fVar4; - fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0xc); - param_2[1] = (fStack16 - fVar4) * fVar3 + fVar4; - fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0x10); - param_2[2] = (fStack12 - fVar4) * fVar3 + fVar4; - return; - } - *param_2 = fStack20; - param_2[1] = fStack16; - param_2[2] = fStack12; - return; - } - iVar1 = *(int *)(param_1 + 0x18); - } - else { - iVar1 = *(int *)(param_1 + 0x18); - } - *param_2 = *(float *)(iVar1 + 8); - param_2[1] = *(float *)(*(int *)(param_1 + 0x18) + 0xc); - param_2[2] = *(float *)(*(int *)(param_1 + 0x18) + 0x10); - } - return; -} - - - -void proc_7F028A5C(int param_1,int param_2,int param_3) - -{ - bool bVar1; - int iVar3; - int iVar4; - u32 uVar5; - ulonglong uVar2; - bool bVar6; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fVar7; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float fVar8; - - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - if (((iVar3 == 0) || (iVar4 == 0)) && ((iVar3 != 0 || (iVar4 != 0)))) { - uVar2 = check_if_item_held_like_pistol(iVar3); - fVar7 = extraout_f12_00; - fVar8 = extraout_f14_00; - if ((uVar2 == 0) && - (uVar2 = check_if_item_held_like_pistol(iVar4), fVar7 = extraout_f12_01, - fVar8 = extraout_f14_01, uVar2 == 0)) { - bVar1 = true; - bVar6 = iVar3 != 0; - fVar7 = extraout_f12_01; - fVar8 = extraout_f14_01; - } - else { - bVar1 = false; - bVar6 = iVar3 != 0; - } - } - else { - uVar5 = get_random_value(); - bVar1 = false; - bVar6 = (bool)((byte)uVar5 & 1); - fVar7 = extraout_f12; - fVar8 = extraout_f14; - } - if (bVar1) { - if (param_2 == 2) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4070,bVar6,fVar7,0,fVar8); - } - else { - if (param_2 == 1) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x40d4,bVar6,fVar7,0,fVar8); - } - else { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4018,bVar6,fVar7,0,fVar8); - } - } - } - else { - if (param_3 == 0) { - if (param_2 == 2) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x77d4,bVar6,fVar7,0,fVar8); - } - else { - if (param_2 == 1) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8520,bVar6,fVar7,0,fVar8); - } - else { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x84c4,bVar6,fVar7,0,fVar8); - } - } - } - else { - if (param_2 == 2) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x77d4,bVar6,fVar7,0,fVar8); - } - else { - if (param_2 == 1) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x777c,bVar6,fVar7,0,fVar8); - } - else { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8204,bVar6,fVar7,0,fVar8); - } - } - } - } - return; -} - - - -void proc_7F028DA0(int param_1) - -{ - proc_7F028A5C(param_1,(uint)*(byte *)(param_1 + 0x59), - (uint)*(byte *)&c_item_entries[(int)*(char *)(param_1 + 0xf)].anonymous_3); - return; -} - - - -undefined8 proc_7F028DDC(int param_1,float *param_2,undefined4 param_3,char param_4) - -{ - bool bVar1; - undefined8 uVar2; - int iVar4; - u32 uVar5; - longlong lVar3; - int iStack56; - float afStack52 [4]; - int iStack36; - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - int *piStack12; - int *piStack8; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x18); - bVar1 = *(char *)(param_1 + 7) == '\x0f'; - if (bVar1) { - bVar1 = param_4 == *(char *)(param_1 + 0x59); - } - piStack8 = proc_7F027CD4((float *)(iStack4 + 8),*(undefined4 *)(iStack4 + 0x14)); - piStack12 = proc_7F027CD4(param_2,param_3); - if (piStack8 == NULL) { - uVar2 = 0; - } - else { - if (piStack12 == NULL) { - uVar2 = 0; - } - else { - iVar4 = proc_7F08F4F0((int)piStack8,(int)piStack12,&iStack36,6); - if (iVar4 < 2) { - uVar2 = 0; - } - else { - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 0xf; - *(float *)(param_1 + 0x2c) = *param_2; - *(float *)(param_1 + 0x30) = param_2[1]; - *(float *)(param_1 + 0x34) = param_2[2]; - *(undefined4 *)(param_1 + 0x38) = param_3; - *(undefined *)(param_1 + 0x58) = 0; - *(int **)(param_1 + 0x3c) = piStack12; - *(undefined4 *)(param_1 + 0xa0) = 0; - *(char *)(param_1 + 0x59) = param_4; - uVar5 = get_random_value(); - *(uint *)(param_1 + 0x84) = uVar5 % 100; - *(undefined *)(param_1 + 0x5f) = 0; - *(undefined4 *)(param_1 + 0x9c) = 0xffffffff; - *(int *)(param_1 + 0x40) = iStack36; - *(undefined4 *)(param_1 + 0x44) = uStack32; - lVar3 = (longlong)(param_1 + 8); - *(undefined4 *)(param_1 + 0x48) = uStack28; - *(undefined4 *)(param_1 + 0x4c) = uStack24; - *(undefined4 *)(param_1 + 0x50) = uStack20; - *(undefined4 *)(param_1 + 0x54) = uStack16; - proc_7F02828C(param_1); - *(undefined *)(param_1 + 8) = 0; - if (!bVar1) { - proc_7F028DA0(param_1); - } - proc_7F027F20(param_1,afStack52,&iStack56); - if (((*(byte *)(iStack4 + 1) & 2) == 0) && - (proc_7F027DB0(param_1,afStack52,iStack56), lVar3 != 0)) { - proc_7F027E90(param_1,(undefined *)(param_1 + 0x5c),afStack52); - } - uVar2 = 1; - } - } - } - return uVar2; -} - - - -void proc_7F028FAC(int param_1) - -{ - bool bVar1; - int iVar3; - int iVar4; - u32 uVar5; - ulonglong uVar2; - bool bVar6; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fVar7; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float fVar8; - - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - if (((iVar3 == 0) || (iVar4 == 0)) && ((iVar3 != 0 || (iVar4 != 0)))) { - uVar2 = check_if_item_held_like_pistol(iVar3); - fVar7 = extraout_f12_00; - fVar8 = extraout_f14_00; - if ((uVar2 == 0) && - (uVar2 = check_if_item_held_like_pistol(iVar4), fVar7 = extraout_f12_01, - fVar8 = extraout_f14_01, uVar2 == 0)) { - bVar1 = true; - bVar6 = iVar3 != 0; - fVar7 = extraout_f12_01; - fVar8 = extraout_f14_01; - } - else { - bVar1 = false; - bVar6 = iVar3 != 0; - } - } - else { - uVar5 = get_random_value(); - bVar1 = false; - bVar6 = (bool)((byte)uVar5 & 1); - fVar7 = extraout_f12; - fVar8 = extraout_f14; - } - if (bVar1) { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4018,bVar6,fVar7,0,fVar8); - } - else { - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8204,bVar6,fVar7,0,fVar8); - } - return; -} - - - -void proc_7F0290F8(int param_1,int **param_2) - -{ - int *piVar1; - int iVar2; - u32 uVar4; - longlong lVar3; - float *pfVar5; - int iVar6; - int iVar7; - float fVar8; - float fVar9; - - piVar1 = *param_2; - iVar2 = *(int *)(param_1 + 0x18); - iVar6 = 0; - iVar7 = -1; - if (-1 < *piVar1) { - iVar7 = 0; - while( true ) { - pfVar5 = (float *)(ptr_0xxxpresets + - *(int *)(ptr_setup_path_tbl + *(int *)((int)piVar1 + iVar7) * 0x10) * 0x2c); - if ((((pfVar5[10] != 0.00000000) && (*(float *)(iVar2 + 0x14) == pfVar5[10])) && - (fVar8 = *pfVar5 - *(float *)(iVar2 + 8), fVar9 = pfVar5[2] - *(float *)(iVar2 + 0x10), - iVar7 = iVar6, fVar8 * fVar8 + fVar9 * fVar9 < flt_80051DF8)) || - (iVar6 += 1, iVar7 = -1, piVar1[iVar6] < 0)) break; - iVar7 = iVar6 * 4; - } - } - if (iVar7 < 0) { - iVar7 = 0; - } - proc_7F02D184(param_1); - *(undefined *)(param_1 + 7) = 0xe; - *(undefined4 *)(param_1 + 0x34) = 1; - *(int *)(param_1 + 0x30) = iVar7; - *(int ***)(param_1 + 0x2c) = param_2; - uVar4 = get_random_value(); - *(uint *)(param_1 + 0x60) = uVar4 % 100; - *(undefined *)(param_1 + 0x3b) = 0; - *(undefined4 *)(param_1 + 0x78) = 0xffffffff; - *(undefined4 *)(param_1 + 0x7c) = 0; - proc_7F028494(param_1); - *(undefined *)(param_1 + 8) = 0; - proc_7F028FAC(param_1); - pfVar5 = (float *)proc_7F028474(param_1); - lVar3 = (longlong)(int)pfVar5; - if (((*(byte *)(*(int *)(param_1 + 0x18) + 1) & 2) == 0) && - (proc_7F027E70(param_1,pfVar5), lVar3 != 0)) { - proc_7F027E90(param_1,(undefined *)(param_1 + 0x38),pfVar5); - } - return; -} - - - -void proc_7F029298(int param_1) - -{ - *(undefined4 *)(param_1 + 0xe8) = global_timer; - return; -} - - - -undefined4 proc_7F0292A8(short *param_1,undefined4 *param_2,int param_3) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f14; - f32 extraout_f14_00; - u32 uStack16; - u32 uStack12; - uint uStack8; - undefined4 uStack4; - - uStack4 = 0; - uStack8 = 1; - if (*(char *)((int)param_1 + 7) == '\b') { - uStack8 = *(uint *)(param_1 + 0x26); - } - if ((uStack8 & 2) == 0) { - uStack12 = param_3; - proc_7F032C78(param_1,(longlong)(int)uStack8,(longlong)*(int *)(param_1 + 0x28),&uStack16); - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - if ((uStack8 & 1) == 0) { - if ((uStack8 & 4) == 0) { - if ((((uStack8 & 8) != 0) && - (iVar1 = proc_7F0B0E24(&uStack12,extraout_f12,extraout_f14,(f32)*param_2), iVar1 != 0)) - && (uStack12 == uStack16)) { - uStack4 = 1; - } - } - else { - iVar1 = proc_7F0B0E24(&uStack12,extraout_f12,extraout_f14,(f32)*param_2); - if ((iVar1 != 0) && (uStack12 == uStack16)) { - uStack4 = 1; - } - } - } - else { - proc_7F08A03C(pPlayer->position_data_pointer,0); - iVar1 = get_invisible_to_guards_flag(); - if (((iVar1 != 0) && - (iVar1 = proc_7F0B0E24(&uStack12,extraout_f12_00,extraout_f14_00,(f32)*param_2), - iVar1 != 0)) && (uStack12 == uStack16)) { - proc_7F029298((int)param_1); - uStack4 = 1; - } - proc_7F08A03C(pPlayer->position_data_pointer,1); - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - } - else { - uStack4 = 1; - } - return uStack4; -} - - - -undefined4 proc_7F0294BC(int param_1) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f14; - u32 uStack16; - int iStack12; - int iStack8; - undefined4 uStack4; - - uStack4 = 0; - iVar1 = get_invisible_to_guards_flag(); - if (iVar1 != 0) { - iStack8 = *(int *)(param_1 + 0x18); - iStack12 = get_curplayer_positiondata(); - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - proc_7F08A03C(pPlayer->position_data_pointer,0); - uStack16 = *(u32 *)(iStack8 + 0x14); - iVar1 = proc_7F0B0E24(&uStack16,extraout_f12,extraout_f14,*(f32 *)(iStack8 + 8)); - if ((iVar1 != 0) && (uStack16 == *(u32 *)(iStack12 + 0x14))) { - proc_7F029298(param_1); - uStack4 = 1; - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - proc_7F08A03C(pPlayer->position_data_pointer,1); - } - return uStack4; -} - - - -undefined4 proc_7F0295D0(int param_1,undefined4 *param_2,int param_3) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f14; - undefined4 uStack16; - u32 uStack8; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x18); - uStack16 = 0; - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - uStack8 = *(u32 *)(iStack4 + 0x14); - iVar1 = proc_7F0B0E24(&uStack8,extraout_f12,extraout_f14,*(f32 *)(iStack4 + 8)); - if ((iVar1 != 0) && (uStack8 == param_3)) { - uStack16 = 1; - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - return uStack16; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 proc_7F02969C(void) - -{ - undefined4 uVar1; - int in_a0_lo; - float *in_a1_lo; - int in_a2_lo; - undefined4 in_a3_lo; - float in_f0; - float fVar2; - float fVar3; - - getsubroty(*(int *)(in_a0_lo + 0x1c),(uint)in_a1_lo,in_a2_lo,in_a3_lo); - fVar2 = convert_angle_using_inverse - ((f32)(*in_a1_lo - *(float *)(*(int *)(in_a0_lo + 0x18) + 8)), - (f32)(in_a1_lo[2] - *(float *)(*(int *)(in_a0_lo + 0x18) + 0x10))); - fVar3 = fVar2 - in_f0; - if (fVar2 < in_f0) { - fVar3 = fVar3 + flt_80051DFC; - } - if ((fVar3 < flt_80051E00) || (uVar1 = 0, flt_80051E04 < fVar3)) { - uVar1 = proc_7F0295D0(in_a0_lo,in_a1_lo,in_a2_lo); - } - return uVar1; -} - - - -undefined4 proc_7F029760(int param_1) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f14; - undefined4 uStack16; - u32 uStack12; - int iStack8; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x18); - iStack8 = get_curplayer_positiondata(); - uStack16 = 0; - proc_7F08A03C(pPlayer->position_data_pointer,0); - uStack12 = *(u32 *)(iStack8 + 0x14); - iVar1 = proc_7F0B0E24(&uStack12,extraout_f12,extraout_f14,*(f32 *)(iStack8 + 8)); - if ((iVar1 != 0) && (uStack12 == *(u32 *)(iStack4 + 0x14))) { - uStack16 = 1; - } - proc_7F08A03C(pPlayer->position_data_pointer,1); - return uStack16; -} - - - -undefined4 proc_7F02982C(int param_1,float *param_2,float *param_3) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f12_01; - f32 extraout_f12_02; - f32 extraout_f14; - f32 extraout_f14_00; - f32 extraout_f14_01; - f32 extraout_f14_02; - float fVar2; - float fVar3; - undefined4 uStack48; - undefined4 uStack44; - float fStack40; - undefined4 uStack36; - u32 uStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - GUARDdata *pGStack4; - - pGStack4 = *(GUARDdata **)(param_1 + 4); - uStack36 = 0; - fVar2 = *param_3 * (float)pGStack4->chrwidth * flt_80051E08; - fVar3 = param_3[2] * (float)pGStack4->chrwidth * flt_80051E08; - proc_7F023160(param_1,&uStack48,&fStack40,&uStack44); - set_or_unset_GUARDdata_flag(pGStack4,0); - fStack8 = *(float *)(param_1 + 8) + fVar3; - fStack12 = *(float *)(param_1 + 0x10) - fVar2; - fStack16 = *param_2 + fVar3 + fVar2; - fStack20 = (param_2[2] - fVar2) + fVar3; - uStack24 = *(u32 *)(param_1 + 0x14); - iVar1 = proc_7F0B0E24(&uStack24,extraout_f12,extraout_f14,*(f32 *)(param_1 + 8)); - if (iVar1 != 0) { - iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)fStack8); - if (iVar1 != 0) { - fStack8 = *(float *)(param_1 + 8) - fVar3; - fStack16 = (*param_2 - fVar3) + fVar2; - fStack12 = *(float *)(param_1 + 0x10) + fVar2; - fStack20 = param_2[2] + fVar2 + fVar3; - uStack24 = *(u32 *)(param_1 + 0x14); - iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_01,extraout_f14_01,*(f32 *)(param_1 + 8)); - if (iVar1 != 0) { - iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_02,extraout_f14_02,(f32)fStack8); - if (iVar1 != 0) { - uStack36 = 1; - } - } - } - } - set_or_unset_GUARDdata_flag(pGStack4,1); - return uStack36; -} - - - -undefined4 proc_7F029A94(int param_1,float *param_2,float param_3) - -{ - undefined4 uVar1; - float in_a2_lo; - float fStack12; - undefined4 uStack8; - float fStack4; - - fStack12 = *param_2 * in_a2_lo + *(float *)(param_1 + 8); - uStack8 = *(undefined4 *)(param_1 + 0xc); - fStack4 = param_2[2] * in_a2_lo + *(float *)(param_1 + 0x10); - uVar1 = proc_7F02982C(param_1,&fStack12,param_2); - return uVar1; -} - - - -undefined4 proc_7F029AF0(int param_1,float *param_2) - -{ - undefined4 uVar1; - float fVar2; - float fStack12; - undefined4 uStack8; - float fStack4; - - fStack12 = *param_2 - *(float *)(param_1 + 8); - uStack8 = 0; - fStack4 = param_2[2] - *(float *)(param_1 + 0x10); - if ((fStack12 == 0.00000000) && (fStack4 == 0.00000000)) { - uVar1 = 1; - } - else { - fVar2 = sqrtf(fStack4 * fStack4 + fStack12 * fStack12); - fStack12 = fStack12 * (1.00000000 / fVar2); - fStack4 = fStack4 * (1.00000000 / fVar2); - uVar1 = proc_7F02982C(param_1,param_2,&fStack12); - } - return uVar1; -} - - - -void proc_7F029BB0(int param_1) - -{ - int iVar1; - - iVar1 = get_curplayer_positiondata(); - *(undefined4 *)(param_1 + 0xd4) = global_timer; - *(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(iVar1 + 8); - *(undefined4 *)(param_1 + 0xdc) = *(undefined4 *)(iVar1 + 0xc); - *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(iVar1 + 0x10); - *(undefined4 *)(param_1 + 0xe4) = *(undefined4 *)(iVar1 + 0x14); - return; -} - - - -void proc_7F029C00(int param_1) - -{ - int iVar1; - - iVar1 = get_curplayer_positiondata(); - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 2; - *(undefined4 *)(param_1 + 0xf0) = global_timer; - *(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(iVar1 + 8); - *(undefined4 *)(param_1 + 0xdc) = *(undefined4 *)(iVar1 + 0xc); - *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(iVar1 + 0x10); - *(undefined4 *)(param_1 + 0xe4) = *(undefined4 *)(iVar1 + 0x14); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F029C5C(void) - -{ - char cVar1; - bool bVar2; - int in_a0_lo; - float in_f0; - float fVar3; - - cVar1 = *(char *)(in_a0_lo + 7); - if (((cVar1 == '\x01') && (*(int *)(in_a0_lo + 0x2c) == 0)) && (*(int *)(in_a0_lo + 0x38) == 0)) { - return 1; - } - if (cVar1 != '\x03') { - if (cVar1 == '\x0e') { - return 1; - } - return 0; - } - if (*(int *)(in_a0_lo + 0x34) == 0) { - proc_7F06F610(*(int *)(in_a0_lo + 0x1c)); - if (0.00000000 <= in_f0) { - proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); - fVar3 = proc_7F06F5C4(*(int *)(in_a0_lo + 0x1c)); - bVar2 = fVar3 <= in_f0; - in_f0 = fVar3; - if (bVar2) { - return 1; - } - } - proc_7F06F610(*(int *)(in_a0_lo + 0x1c)); - if (0.00000000 <= in_f0) { - return 0; - } - proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); - if (0.00000000 < in_f0) { - return 0; - } - } - return 1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -ulonglong proc_7F029D70(void) - -{ - int iVar2; - longlong lVar1; - u32 uVar3; - int iVar4; - ulonglong uVar5; - int in_a0_lo; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float in_f0; - float __x; - float fVar6; - float vector1; - float fVar7; - float vector2; - - iVar4 = *(int *)(in_a0_lo + 0x18); - iVar2 = get_curplayer_positiondata(); - getsubroty(*(int *)(in_a0_lo + 0x1c),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - vector1 = *(float *)(iVar2 + 8) - *(float *)(iVar4 + 8); - fVar6 = *(float *)(iVar2 + 0xc) - *(float *)(iVar4 + 0xc); - vector2 = *(float *)(iVar2 + 0x10) - *(float *)(iVar4 + 0x10); - __x = convert_angle_using_inverse((f32)vector1,(f32)vector2); - fVar7 = __x - in_f0; - if (__x < in_f0) { - fVar7 = fVar7 + flt_80051E0C; - } - lVar1 = proc_7F032B68(in_a0_lo); - uVar5 = 0; - if (lVar1 == 0) { - __x = vector1 * vector1 + fVar6 * fVar6 + vector2 * vector2; - if (((__x < *(float *)(in_a0_lo + 0xd0) * *(float *)(in_a0_lo + 0xd0) * 100.00000000 * - 100.00000000) && ((fVar7 < flt_80051E10 || (flt_80051E14 < fVar7)))) || - ((__x < flt_80051E18 && ((fVar7 < flt_80051E1C || (flt_80051E20 < fVar7)))))) { - fVar7 = square_near_fog_value(); - uVar5 = 0; - if (__x < fVar7) { - sqrtf(__x); - iVar4 = proc_7F023BC0(); - uVar3 = get_random_value(); - uVar5 = (ulonglong)(uVar3 % (iVar4 + 1U) == 0); - if (iVar4 + 1U == 0) { - trap(0x1c00); - } - } - } - } - else { - uVar5 = 1; - } - if (uVar5 != 0) { - iVar4 = proc_7F0294BC(in_a0_lo); - uVar5 = SEXT48(iVar4); - } - if (uVar5 != 0) { - proc_7F029BB0(in_a0_lo); - uVar5 = SEXT48((int)uVar5); - } - return uVar5; -} - - - -void proc_7F02A044(int param_1,int param_2,float *param_3) - -{ - int iVar1; - int iVar2; - float fVar3; - float fVar4; - float fVar5; - - iVar1 = *(int *)(param_1 + 0x18); - iVar2 = get_curplayer_positiondata(); - fVar4 = *(float *)(iVar2 + 8) - *(float *)(iVar1 + 8); - fVar5 = *(float *)(iVar2 + 0x10) - *(float *)(iVar1 + 0x10); - fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); - if (param_2 == 0) { - param_3[2] = fVar4 / fVar3; - *param_3 = -(fVar5 / fVar3); - param_3[1] = 0.00000000; - } - else { - *param_3 = fVar5 / fVar3; - param_3[2] = -(fVar4 / fVar3); - param_3[1] = 0.00000000; - } - return; -} - - - -undefined4 proc_7F02A0EC(int param_1,int param_2,float param_3) - -{ - undefined4 uVar1; - float in_a2_lo; - float fStack28; - undefined4 uStack24; - float fStack20; - float afStack16 [2]; - float fStack8; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x18); - proc_7F02A044(param_1,param_2,afStack16); - fStack28 = afStack16[0] * in_a2_lo + *(float *)(iStack4 + 8); - uStack24 = *(undefined4 *)(iStack4 + 0xc); - fStack20 = fStack8 * in_a2_lo + *(float *)(iStack4 + 0x10); - uVar1 = proc_7F02982C(iStack4,&fStack28,afStack16); - return uVar1; -} - - - -void proc_7F02A15C(int param_1,uint param_2,float *param_3,undefined4 param_4) - -{ - float __x; - float fVar1; - - getsubroty(*(int *)(param_1 + 0x1c),param_2,param_3,param_4); - if (param_2 == 0) { - fVar1 = cosf(__x); - *param_3 = -fVar1; - param_3[1] = 0.00000000; - fVar1 = sinf(__x); - param_3[2] = fVar1; - } - else { - fVar1 = cosf(__x); - *param_3 = fVar1; - param_3[1] = 0.00000000; - fVar1 = sinf(__x); - param_3[2] = -fVar1; - } - return; -} - - - -undefined4 proc_7F02A1E8(int param_1,uint param_2,float param_3) - -{ - undefined4 uVar1; - float in_a2_lo; - float fStack28; - undefined4 uStack24; - float fStack20; - float afStack16 [2]; - float fStack8; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x18); - proc_7F02A15C(param_1,param_2,afStack16,iStack4); - fStack28 = afStack16[0] * in_a2_lo + *(float *)(iStack4 + 8); - uStack24 = *(undefined4 *)(iStack4 + 0xc); - fStack20 = fStack8 * in_a2_lo + *(float *)(iStack4 + 0x10); - uVar1 = proc_7F02982C(iStack4,&fStack28,afStack16); - return uVar1; -} - - - -undefined8 proc_7F02A258(int param_1) - -{ - char cVar1; - - cVar1 = *(char *)(param_1 + 7); - if ((((cVar1 != '\x04') && (cVar1 != '\x05')) && (cVar1 != '\a')) && - ((cVar1 != '\x06' || ((*(uint *)(param_1 + 0x14) & 0x200) != 0)))) { - return 1; - } - return 0; -} - - - -ulonglong proc_7F02A2A4(int param_1) - -{ - return (ulonglong)(*(char *)(param_1 + 7) == '\x04' || *(char *)(param_1 + 7) == '\x05'); -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F02A2C8(void) - -{ - bool bVar1; - longlong lVar2; - int iVar4; - u32 uVar5; - int iVar6; - undefined8 uVar3; - int in_a0_lo; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float in_f0; - float fVar7; - float fVar8; - float extraout_f12; - float extraout_f12_00; - - lVar2 = proc_7F02A258(in_a0_lo); - if (lVar2 == 0) { - return 0; - } - iVar6 = *(int *)(in_a0_lo + 0x18); - iVar4 = get_curplayer_positiondata(); - getsubroty(*(int *)(in_a0_lo + 0x1c),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - fVar7 = convert_angle_using_inverse - ((f32)(*(float *)(iVar4 + 8) - *(float *)(iVar6 + 8)), - (f32)(*(float *)(iVar4 + 0x10) - *(float *)(iVar6 + 0x10))); - fVar8 = fVar7 - in_f0; - if (fVar7 < in_f0) { - fVar8 = fVar8 + flt_80051E38; - } - if ((flt_80051E3C <= fVar8) && (fVar8 <= flt_80051E40)) { - if (fVar8 <= flt_80051E44) { - return 0; - } - if (flt_80051E48 <= fVar8) { - return 0; - } - } - uVar5 = get_random_value(); - bVar1 = (uVar5 & 1) == 0; - iVar6 = proc_7F02A1E8(in_a0_lo,(uint)bVar1,extraout_f12); - if (iVar6 == 0) { - iVar6 = proc_7F02A1E8(in_a0_lo,(uint)!bVar1,extraout_f12_00); - if (iVar6 == 0) { - uVar3 = 0; - } - else { - proc_7F024800(); - uVar3 = 1; - } - } - else { - proc_7F024800(); - uVar3 = 1; - } - return uVar3; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F02A428(void) - -{ - bool bVar1; - longlong lVar2; - int iVar4; - u32 uVar5; - int iVar6; - undefined8 uVar3; - int in_a0_lo; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float in_f0; - float fVar7; - float fVar8; - float extraout_f12; - float extraout_f12_00; - - lVar2 = proc_7F02A258(in_a0_lo); - if (lVar2 == 0) { - return 0; - } - iVar6 = *(int *)(in_a0_lo + 0x18); - iVar4 = get_curplayer_positiondata(); - getsubroty(*(int *)(in_a0_lo + 0x1c),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - fVar7 = convert_angle_using_inverse - ((f32)(*(float *)(iVar4 + 8) - *(float *)(iVar6 + 8)), - (f32)(*(float *)(iVar4 + 0x10) - *(float *)(iVar6 + 0x10))); - fVar8 = fVar7 - in_f0; - if (fVar7 < in_f0) { - fVar8 = fVar8 + flt_80051E4C; - } - if ((flt_80051E50 <= fVar8) && (fVar8 <= flt_80051E54)) { - if (fVar8 <= flt_80051E58) { - return 0; - } - if (flt_80051E5C <= fVar8) { - return 0; - } - } - uVar5 = get_random_value(); - bVar1 = (uVar5 & 1) == 0; - iVar6 = proc_7F02A1E8(in_a0_lo,(uint)bVar1,extraout_f12); - if (iVar6 == 0) { - iVar6 = proc_7F02A1E8(in_a0_lo,(uint)!bVar1,extraout_f12_00); - if (iVar6 == 0) { - uVar3 = 0; - } - else { - proc_7F024A84(); - uVar3 = 1; - } - } - else { - proc_7F024A84(); - uVar3 = 1; - } - return uVar3; -} - - - -undefined8 proc_7F02A588(int param_1) - -{ - longlong lVar1; - u32 uVar2; - int iVar3; - int iVar4; - float fVar5; - float fStack32; - undefined4 uStack28; - float fStack24; - float afStack20 [2]; - float fStack12; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - if (global_timer - *(int *)(param_1 + 200) < 0xb5) { - return 0; - } - iVar4 = *(int *)(param_1 + 0x18); - uVar2 = get_random_value(); - fVar5 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fVar5 = fVar5 * 0.00000000 * 200.00000000 + 200.00000000; - uVar2 = get_random_value(); - proc_7F02A044(param_1,(uint)((uVar2 & 1) == 0),afStack20); - fStack32 = afStack20[0] * fVar5 + *(float *)(iVar4 + 8); - uStack28 = *(undefined4 *)(iVar4 + 0xc); - fStack24 = fStack12 * fVar5 + *(float *)(iVar4 + 0x10); - iVar3 = proc_7F02982C(iVar4,&fStack32,afStack20); - if (iVar3 != 0) { - proc_7F024CF8(param_1,&fStack32); - return 1; - } - afStack20[0] = -afStack20[0]; - fStack12 = -fStack12; - fStack32 = afStack20[0] * fVar5 + *(float *)(iVar4 + 8); - uStack28 = *(undefined4 *)(iVar4 + 0xc); - fStack24 = fStack12 * fVar5 + *(float *)(iVar4 + 0x10); - iVar4 = proc_7F02982C(iVar4,&fStack32,afStack20); - if (iVar4 != 0) { - proc_7F024CF8(param_1,&fStack32); - return 1; - } - } - return 0; -} - - - -undefined8 proc_7F02A704(int param_1) - -{ - int iVar1; - longlong lVar2; - undefined8 uVar3; - int iVar4; - int iVar5; - float fVar6; - float fVar7; - float fVar8; - - lVar2 = proc_7F02A258(param_1); - if (lVar2 == 0) { - uVar3 = 0; - } - else { - iVar1 = *(int *)(param_1 + 0x18); - iVar4 = get_curplayer_positiondata(); - iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - if ((iVar5 == 0) && (iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar5 == 0)) { - return 0; - } - if (global_timer - *(int *)(param_1 + 200) < 0xb5) { - uVar3 = 0; - } - else { - fVar6 = *(float *)(iVar4 + 8) - *(float *)(iVar1 + 8); - fVar7 = *(float *)(iVar4 + 0xc) - *(float *)(iVar1 + 0xc); - fVar8 = *(float *)(iVar4 + 0x10) - *(float *)(iVar1 + 0x10); - if (flt_80051E60 <= fVar6 * fVar6 + fVar7 * fVar7 + fVar8 * fVar8) { - proc_7F02587C(param_1,0); - uVar3 = 1; - } - else { - uVar3 = 0; - } - } - } - return uVar3; -} - - - -undefined8 proc_7F02A7F8(int param_1) - -{ - int iVar1; - longlong lVar2; - undefined8 uVar3; - int iVar4; - int iVar5; - float fVar6; - float fVar7; - float fVar8; - - lVar2 = proc_7F02A258(param_1); - if (lVar2 == 0) { - uVar3 = 0; - } - else { - iVar1 = *(int *)(param_1 + 0x18); - iVar4 = get_curplayer_positiondata(); - iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - if ((iVar5 == 0) && (iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar5 == 0)) { - return 0; - } - if (global_timer - *(int *)(param_1 + 200) < 0xb5) { - uVar3 = 0; - } - else { - fVar6 = *(float *)(iVar4 + 8) - *(float *)(iVar1 + 8); - fVar7 = *(float *)(iVar4 + 0xc) - *(float *)(iVar1 + 0xc); - fVar8 = *(float *)(iVar4 + 0x10) - *(float *)(iVar1 + 0x10); - if (flt_80051E64 <= fVar6 * fVar6 + fVar7 * fVar7 + fVar8 * fVar8) { - proc_7F02587C(param_1,1); - uVar3 = 1; - } - else { - uVar3 = 0; - } - } - } - return uVar3; -} - - - -ulonglong proc_7F02A8EC(int param_1) - -{ - bool bVar1; - longlong lVar2; - int iVar3; - int iVar4; - u32 uVar5; - int iVar6; - float fVar7; - float fVar8; - float fVar9; - float extraout_f12; - float extraout_f12_00; - - lVar2 = proc_7F02A258(param_1); - if (lVar2 == 0) { - return 0; - } - iVar6 = *(int *)(param_1 + 0x18); - iVar3 = get_curplayer_positiondata(); - iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - if ((iVar4 != 0) || (iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar4 != 0)) { - fVar7 = *(float *)(iVar3 + 8) - *(float *)(iVar6 + 8); - fVar8 = *(float *)(iVar3 + 0xc) - *(float *)(iVar6 + 0xc); - fVar9 = *(float *)(iVar3 + 0x10) - *(float *)(iVar6 + 0x10); - if (fVar7 * fVar7 + fVar8 * fVar8 + fVar9 * fVar9 < flt_80051E68) { - return 0; - } - uVar5 = get_random_value(); - bVar1 = (uVar5 & 1) == 0; - iVar6 = proc_7F02A0EC(param_1,(uint)bVar1,extraout_f12); - if (iVar6 != 0) { - proc_7F025C40(); - return 1; - } - iVar6 = proc_7F02A0EC(param_1,(uint)!bVar1,extraout_f12_00); - if (iVar6 != 0) { - proc_7F025C40(); - return 1; - } - } - return 0; -} - - - -undefined8 proc_7F02AA1C(int param_1,uint param_2,undefined4 param_3) - -{ - longlong lVar1; - int iVar3; - undefined8 uVar2; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - if ((iVar3 == 0) && (iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar3 == 0)) { - uVar2 = 0; - } - else { - proc_7F025560(param_1,param_2,param_3); - uVar2 = 1; - } - } - return uVar2; -} - - - -undefined8 proc_7F02AA88(int param_1,uint param_2,undefined4 param_3) - -{ - longlong lVar1; - int iVar3; - undefined8 uVar2; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); - if ((iVar3 == 0) && (iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar3 == 0)) { - uVar2 = 0; - } - else { - proc_7F0256F0(param_1,param_2,param_3); - uVar2 = 1; - } - } - return uVar2; -} - - - -undefined8 proc_7F02AAF4(int param_1,undefined4 param_2,undefined4 param_3) - -{ - undefined8 uVar1; - - uVar1 = 0; - if ((*(char *)(param_1 + 7) == '\b') && ((*(uint *)(param_1 + 0x4c) & 0x60) != 0)) { - *(undefined4 *)(param_1 + 0x4c) = param_2; - *(undefined4 *)(param_1 + 0x50) = param_3; - proc_7F024F8C(param_1); - uVar1 = 1; - } - return uVar1; -} - - - -undefined8 proc_7F02AB44(int param_1,undefined4 param_2,undefined4 param_3) - -{ - longlong lVar1; - undefined8 uVar2; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - if (*(char *)(param_1 + 7) != '\x01') { - proc_7F023CB8(); - } - uVar2 = 1; - *(undefined4 *)(param_1 + 0x30) = param_2; - *(undefined4 *)(param_1 + 0x38) = 0; - *(undefined4 *)(param_1 + 0x40) = 0; - *(undefined4 *)(param_1 + 0x34) = param_3; - } - return uVar2; -} - - - -undefined8 proc_7F02ABB4(int param_1,longlong param_2,char param_3) - -{ - longlong lVar1; - short sVar2; - float *pfVar3; - float extraout_f12; - float extraout_f14; - float fStack20; - float fStack16; - float fStack12; - float afStack8 [2]; - - if ((-1 < param_2) && (lVar1 = proc_7F02A258(param_1), lVar1 != 0)) { - if (9 < (int)setting_007_5) { - return 0; - } - sVar2 = proc_7F032F94(param_1,(short)param_2); - lVar1 = (longlong)sVar2; - if (lVar1 < 10000) { - pfVar3 = (float *)(ptr_0xxxpresets + (int)sVar2 * 0x2c); - } - else { - pfVar3 = (float *)(ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000); - } - afStack8[0] = pfVar3[10]; - if (afStack8[0] != 0.00000000) { - if (0.50000000 <= pfVar3[4]) { - lVar1 = proc_7F028DDC(param_1,pfVar3,afStack8[0],param_3); - if (lVar1 == 0) { - return 0; - } - return 1; - } - fStack20 = pfVar3[3] * *(float *)(param_1 + 0x24) * flt_80051E6C + *pfVar3; - fStack16 = pfVar3[4] * *(float *)(param_1 + 0x24) * flt_80051E6C + pfVar3[1]; - fStack12 = pfVar3[5] * *(float *)(param_1 + 0x24) * flt_80051E6C + pfVar3[2]; - proc_7F0B0BE4((int *)afStack8,extraout_f12,extraout_f14,*pfVar3,pfVar3[2]); - if (lVar1 != 0) { - lVar1 = proc_7F028DDC(param_1,&fStack20,afStack8[0],param_3); - if (lVar1 == 0) { - return 0; - } - return 1; - } - } - } - return 0; -} - - - -undefined8 proc_7F02AD54(int param_1,longlong param_2) - -{ - longlong lVar1; - - if (param_2 != 0) { - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - proc_7F0290F8(param_1,(int **)param_2); - return 1; - } - } - return 0; -} - - - -// WARNING: Instruction at (ram,0x7f02afbc) overlaps instruction at (ram,0x7f02afb8) -// -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02AD98(void) - -{ - longlong lVar1; - ulonglong uVar2; - u32 uVar3; - float *pfVar4; - float *pfVar5; - int iVar6; - int *piVar7; - GUARDdata *guard; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - int *piVar8; - int iVar9; - int iVar10; - uint uVar11; - int iVar12; - float in_f0; - float fVar13; - float fVar14; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - int aiStack108 [4]; - int iStack92; - int iStack88; - int iStack84; - int iStack80; - float fStack68; - float fStack64; - float afStack60 [8]; - float afStack28 [2]; - int iStack20; - int iStack16; - - if ('\0' < guard->sleep) { - return; - } - if (guard->bond_position != 0) { - proc_7F06F5BC(guard->MODELdata_pointer); - fVar13 = proc_7F06F5C4(guard->MODELdata_pointer); - if (fVar13 <= in_f0) { - proc_7F023948((int)guard,extraout_f12); - guard->bond_position = 0; - } - guard->sleep = '\0'; - return; - } - if (guard->field_30 < 1) { - uVar3 = get_random_value(); - guard->sleep = (char)(uVar3 % 5) + '\x0e'; - if (guard->field_40 == 0) { - return; - } - if ((guard->guard_bitflags & 0x80U) != 0) { - guard->field_40 = 0; - return; - } - iVar10 = guard->field_44 - (int)guard->sleep; - guard->field_44 = iVar10; - if (-1 < iVar10) { - return; - } - getsubroty(guard->MODELdata_pointer,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - fVar13 = flt_80051E78; - fVar14 = extraout_f14_01; - pfVar4 = afStack60; - fStack64 = in_f0; - do { - fStack68 = in_f0 + flt_80051E7C; - if (fVar13 <= fStack68) { - fStack68 = fStack68 - fVar13; - iVar10 = guard->POSdata_pointer; - } - else { - iVar10 = guard->POSdata_pointer; - } - fVar14 = proc_7F026364(iVar10,fVar13,fVar14,fStack68,0x447a0000,0); - fVar13 = flt_80051E80; - pfVar5 = pfVar4 + 1; - *pfVar4 = fVar14; - in_f0 = fStack68; - fVar14 = extraout_f14_02; - pfVar4 = pfVar5; - } while (pfVar5 < afStack28); - iVar10 = 0; - piVar8 = aiStack108; - do { - *piVar8 = iVar10; - iVar10 += 1; - piVar8 = piVar8 + 1; - } while (iVar10 < 8); - piVar8 = aiStack108; - iVar10 = 0; - do { - iVar9 = iVar10 + 1; - if (iVar9 < 8) { - uVar11 = 8U - iVar9 & 3; - iVar6 = iVar9; - if (uVar11 != 0) { - piVar7 = aiStack108 + iVar9; - iVar6 = iVar9; - do { - iVar12 = iVar6; - if (afStack60[aiStack108[iVar10]] <= afStack60[*piVar7]) { - iVar12 = iVar10; - } - iVar10 = iVar12; - iVar6 += 1; - piVar7 = piVar7 + 1; - } while (uVar11 + iVar9 != iVar6); - if (iVar6 == 8) goto LAB_7f02b2e8; - } - piVar7 = aiStack108 + iVar6; - do { - fVar14 = afStack60[aiStack108[iVar10]]; - if (afStack60[*piVar7] < fVar14) { - fVar14 = afStack60[aiStack108[iVar6]]; - iVar12 = piVar7[1]; - iVar10 = iVar6; - } - else { - iVar12 = piVar7[1]; - } - if (afStack60[iVar12] < fVar14) { - iVar10 = iVar6 + 1; - fVar14 = afStack60[aiStack108[iVar10]]; - iVar12 = piVar7[2]; - } - else { - iVar12 = piVar7[2]; - } - if (afStack60[iVar12] < fVar14) { - iVar10 = iVar6 + 2; - fVar14 = afStack60[aiStack108[iVar10]]; - iVar12 = piVar7[3]; - } - else { - iVar12 = piVar7[3]; - } - if (afStack60[iVar12] < fVar14) { - iVar10 = iVar6 + 3; - } - iVar6 += 4; - piVar7 = piVar7 + 4; - } while (iVar6 != 8); - } -LAB_7f02b2e8: - piVar7 = aiStack108 + iVar10; - iVar10 = *piVar8; - *piVar8 = *piVar7; - piVar8 = piVar8 + 1; - *piVar7 = iVar10; - iVar10 = iVar9; - if (6 < iVar9) { - iVar10 = -1; - if (afStack60[0] < 490.00000000) { - if (afStack60[iStack92] < 200.00000000) { - iVar10 = 7; - } - else { - if (((aiStack108[0] == 0) || (aiStack108[1] == 0)) || (aiStack108[2] == 0)) { - if (((aiStack108[3] == 4) || (iStack92 == 4)) && - (uVar3 = get_random_value(), uVar3 % 3 == 0)) { - if (aiStack108[3] == 4) { - iVar10 = 3; - fVar13 = flt_80051E84; - } - else { - iVar10 = 4; - fVar13 = flt_80051E84; - } - } - else { - uVar3 = get_random_value(); - iVar10 = uVar3 % 3 + 5; - fVar13 = flt_80051E88; - } - } - else { - if (((aiStack108[0] == 1) || (aiStack108[0] == 7)) && - ((iStack88 != 0 && ((iStack84 != 0 && (iStack80 != 0)))))) { - uVar3 = get_random_value(); - iVar10 = uVar3 % 3 + 5; - fVar13 = flt_80051E8C; - } - } - } - } - if (iVar10 < 0) { - guard->field_40 = 0; - return; - } - fStack64 = (float)aiStack108[iVar10] * fVar13 * 0.12500000 + fStack64; - if (fVar13 <= fStack64) { - fStack64 = fStack64 - fVar13; - } - proc_7F02AB44((int)guard,0x10,(int)((fStack64 * 65536.00000000) / fVar13)); - return; - } - } while( true ); - } - if (*(int *)&guard->field_38 == 0) { - fVar13 = (float)proc_7F0250BC(); - if (flt_80051E70 < fVar13) { - if (fVar13 < flt_80051E74) { - iStack16 = something_with_weaponpos_of_guarddata_hand(guard,1); - iStack20 = something_with_weaponpos_of_guarddata_hand(guard,0); - *(undefined4 *)&guard->field_38 = 1; - guard->path_target_position = 1; - if (((iStack16 == 0) || (iStack20 == 0)) && - (((iStack16 != 0 || (iStack20 != 0)) && - ((uVar2 = check_if_item_held_like_pistol(iStack16), uVar2 == 0 && - (uVar2 = check_if_item_held_like_pistol(iStack20), uVar2 == 0)))))) { - if ((iStack20 != 0) || (iStack16 != 0)) { - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x4018,iStack16 != 0, - extraout_f12_01,0,extraout_f14); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_04); - } - } - else { - uVar3 = get_random_value(); - proc_7F06FCA8(guard->MODELdata_pointer,ptr_animation_table + 0x8204,(byte)uVar3 & 1, - extraout_f12_02,0,extraout_f14_00); - proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_03); - } - goto LAB_7f02b054; - } - uVar11 = guard->field_30; - } - else { - uVar11 = guard->field_30; - } - if ((uVar11 & 0x10) != 0) { - guard->field_30 = 0; - } - } - else { - proc_7F06F5AC(guard->MODELdata_pointer); - lVar1 = proc_7F02C2B0(); - guard->path_target_position = (int)lVar1; - if (lVar1 != 1) { - proc_7F023948((int)guard,extraout_f12_00); - *(undefined4 *)&guard->field_38 = 0; - if ((guard->field_30 & 0x10U) != 0) { - guard->field_30 = 0; - } - } - } -LAB_7f02b054: - guard->sleep = '\0'; - return; -} - - - -void proc_7F02B4E0(int param_1) - -{ - *(undefined *)(param_1 + 8) = 0; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02B4E8(void) - -{ - int iVar1; - int **ppiVar2; - u32 uVar3; - int in_a0_lo; - uint uVar4; - char cVar5; - float in_f0; - float fVar6; - - fVar6 = in_f0; - if (*(int *)(in_a0_lo + 0x30) == 0) { - proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); - fVar6 = proc_7F06F5C4(*(int *)(in_a0_lo + 0x1c)); - if (fVar6 <= in_f0) { - fVar6 = (float)proc_7F023CB8(); - } - } - iVar1 = proc_7F06F5AC(*(int *)(in_a0_lo + 0x1c)); - if (iVar1 == ptr_animation_table + 0xb9a8) { - proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); - if (42.00000000 <= fVar6) { - if (*(int *)(in_a0_lo + 0x14) << 6 < 0) { - cVar5 = *(char *)(in_a0_lo + 8); - } - else { - if ((dword_80048380 & 1) == 0) { - proc_7F032DE4(in_a0_lo); - if (fVar6 < 800.00000000) { - ppiVar2 = play_sfx_a1(ptr_sfx_buf,0x101,NULL); - proc_7F053A10((int)ppiVar2,(float *)(*(int *)(in_a0_lo + 0x18) + 8)); - uVar4 = *(uint *)(in_a0_lo + 0x14); - } - else { - uVar4 = *(uint *)(in_a0_lo + 0x14); - } - } - else { - uVar4 = *(uint *)(in_a0_lo + 0x14); - } - *(uint *)(in_a0_lo + 0x14) = uVar4 | 0x2000000; - cVar5 = *(char *)(in_a0_lo + 8); - } - } - else { - cVar5 = *(char *)(in_a0_lo + 8); - } - } - else { - cVar5 = *(char *)(in_a0_lo + 8); - } - if ((cVar5 < '\x01') && (*(int *)(in_a0_lo + 0x38) != 0)) { - uVar3 = get_random_value(); - *(char *)(in_a0_lo + 8) = (char)(uVar3 % 5) + '\x0e'; - } - return; -} - - - -void proc_7F02B638(int param_1) - -{ - int iVar1; - u32 uVar2; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float __x; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float fStack16; - undefined4 uStack12; - float fStack8; - int iStack4; - - if (*(char *)(param_1 + 8) < '\x01') { - iStack4 = *(int *)(param_1 + 0x1c); - *(undefined *)(param_1 + 8) = 0x10; - iVar1 = proc_7F06F5AC(iStack4); - if ((iVar1 == ptr_animation_table + 0x4504) && (proc_7F06F5BC(iStack4), 80.00000000 <= __x)) { - fStack16 = dword_80030A44; - uStack12 = dword_80030A48; - fStack8 = (float)dword_80030A4C; - getsubroty(iStack4,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - fStack16 = sinf(__x); - fStack16 = -fStack16; - fStack8 = cosf(__x); - fStack8 = -fStack8; - iVar1 = proc_7F029A94(*(int *)(param_1 + 0x18),&fStack16,extraout_f12); - if (iVar1 == 0) { - uVar2 = get_random_value(); - proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4384,(byte)uVar2 & 1, - extraout_f12_00,0x41f00000,extraout_f14); - proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x41f00000,0x41800000); - } - } - } - return; -} - - - -void proc_7F02B774(int param_1) - -{ - int iVar1; - - if (*(int *)(param_1 + 0x2c) < 0) { - *(undefined4 *)(param_1 + 0x2c) = 0; - return; - } - iVar1 = *(int *)(param_1 + 0x2c) + clock_timer; - *(int *)(param_1 + 0x2c) = iVar1; - if (0x59 < iVar1) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x20; - return; - } - iVar1 = (0x5a - iVar1) * 0xff; - *(undefined *)(param_1 + 0xc) = (char)(iVar1 / 0x5a); - if (false) { - trap(0x1c00); - } - if ((false) && (iVar1 == -0x80000000)) { - trap(0x1800); - } - return; -} - - - -void proc_7F02B800(undefined2 *param_1,longlong param_2) - -{ - int iVar1; - int iVar2; - bool bVar3; - float fVar4; - int iVar6; - longlong lVar5; - int iVar7; - int iVar8; - int iVar9; - int iVar10; - float fVar11; - float fVar12; - float fVar13; - - iVar10 = 0; - iVar9 = 0; - iVar6 = get_numguards(); - fVar4 = flt_80051E90; - if (*(char *)((int)param_1 + 7) == '\x06') { - iVar10 = *(int *)(param_1 + 0x16); - } - else { - if (*(char *)((int)param_1 + 7) != '\x04') { - bVar3 = 0 < iVar6; - goto LAB_7f02b870; - } - iVar10 = *(int *)(param_1 + 0x16); - } - bVar3 = iVar10 < iVar6; -LAB_7f02b870: - if (bVar3) { - iVar8 = iVar10 * 0x1dc; - do { - iVar7 = (int)&ptr_guard_data->chrnum + iVar8; - if (*(int *)(iVar7 + 0x1c) != 0) { - iVar1 = *(int *)(iVar7 + 0x18); - iVar2 = *(int *)(param_1 + 0xc); - fVar11 = *(float *)(iVar1 + 8) - *(float *)(iVar2 + 8); - fVar12 = *(float *)(iVar1 + 0xc) - *(float *)(iVar2 + 0xc); - fVar13 = *(float *)(iVar1 + 0x10) - *(float *)(iVar2 + 0x10); - if (fVar11 * fVar11 + fVar12 * fVar12 + fVar13 * fVar13 < fVar4) { - iVar9 += 1; - lVar5 = proc_7F02969C(); - if (lVar5 != 0) { - if (param_2 == 0) { - *(undefined2 *)(iVar7 + 0x118) = *param_1; - } - else { - *(undefined2 *)(iVar7 + 0x11a) = *param_1; - } - } - } - } - iVar10 += 1; - iVar8 += 0x1dc; - } while ((iVar10 < iVar6) && (iVar9 < 4)); - } - if (*(char *)((int)param_1 + 7) == '\x06') { - *(int *)(param_1 + 0x16) = iVar10; - } - else { - if (*(char *)((int)param_1 + 7) == '\x04') { - *(int *)(param_1 + 0x16) = iVar10; - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02B9A4(void) - -{ - int iVar1; - int **ppiVar3; - int iVar4; - longlong lVar2; - undefined2 *in_a0_lo; - float in_f0; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float fVar5; - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - s16 sStack12; - - iVar1 = *(int *)(in_a0_lo + 0xe); - uStack32 = body_hit_SFX._0_4_; - uStack24 = body_hit_SFX._8_4_; - uStack28 = body_hit_SFX._4_4_; - uStack16 = body_hit_SFX._16_4_; - uStack20 = body_hit_SFX._12_4_; - sStack12 = body_hit_SFX[10]; - if (0.00000000 <= *(float *)(in_a0_lo + 0x18)) { - proc_7F06F5BC(iVar1); - if (*(float *)(in_a0_lo + 0x18) <= in_f0) { - ppiVar3 = play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack32 + dword_80030A68 * 2),NULL); - proc_7F053A10((int)ppiVar3,(float *)(*(int *)(in_a0_lo + 0xc) + 8)); - dword_80030A68 += 1; - if (10 < dword_80030A68) { - dword_80030A68 = 0; - } - *(undefined4 *)(in_a0_lo + 0x18) = 0xbf800000; - fVar5 = *(float *)(in_a0_lo + 0x1a); - } - else { - fVar5 = *(float *)(in_a0_lo + 0x1a); - } - } - else { - fVar5 = *(float *)(in_a0_lo + 0x1a); - } - if ((0.00000000 <= fVar5) && (proc_7F06F5BC(iVar1), *(float *)(in_a0_lo + 0x1a) <= in_f0)) { - ppiVar3 = play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack32 + dword_80030A68 * 2),NULL); - proc_7F053A10((int)ppiVar3,(float *)(*(int *)(in_a0_lo + 0xc) + 8)); - dword_80030A68 += 1; - if (10 < dword_80030A68) { - dword_80030A68 = 0; - } - *(undefined4 *)(in_a0_lo + 0x1a) = 0xbf800000; - } - proc_7F06F5BC(iVar1); - fVar5 = proc_7F06F5C4(iVar1); - if (fVar5 <= in_f0) { - iVar4 = proc_7F06F5AC(iVar1); - if (iVar4 == ptr_animation_table + 0x540c) { - lVar2 = proc_7F06F5B4(iVar1); - proc_7F06FCA8(iVar1,ptr_animation_table + 0x5684,lVar2 == 0,extraout_f12,0x42480000, - extraout_f14); - proc_7F06FE4C(iVar1,0x3f000000,extraout_f12_00); - return; - } - proc_7F0247B8((int)in_a0_lo); - } - proc_7F02B800(in_a0_lo,1); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02BC80(void) - -{ - int iVar1; - undefined2 *in_a0_lo; - float in_f0; - float fVar2; - float extraout_f12; - - iVar1 = *(int *)(in_a0_lo + 0xe); - proc_7F06F5BC(iVar1); - fVar2 = proc_7F06F5C4(iVar1); - if (fVar2 <= in_f0) { - proc_7F029BB0((int)in_a0_lo); - iVar1 = proc_7F06F5AC(iVar1); - if (iVar1 == ptr_animation_table + 0x540c) { - proc_7F023E14((int)in_a0_lo,extraout_f12); - } - else { - proc_7F023E48((int)in_a0_lo); - } - } - proc_7F02B800(in_a0_lo,0); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02BD20(void) - -{ - int iVar1; - int in_a0_lo; - float in_f0; - float fVar2; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar1); - fVar2 = proc_7F06F5C4(iVar1); - if (fVar2 <= in_f0) { - proc_7F026508(); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02BDA4(void) - -{ - int iVar1; - int in_a0_lo; - float in_f0; - float fVar2; - float extraout_f12; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar1); - fVar2 = proc_7F06F5C4(iVar1); - if (fVar2 <= in_f0) { - proc_7F029BB0(in_a0_lo); - proc_7F023E14(in_a0_lo,extraout_f12); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02BE00(void) - -{ - int iVar1; - int in_a0_lo; - float in_f0; - float fVar2; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar1); - fVar2 = proc_7F06F5C4(iVar1); - if (fVar2 <= in_f0) { - proc_7F029BB0(in_a0_lo); - proc_7F023E48(in_a0_lo); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02BE58(void) - -{ - int iVar1; - int in_a0_lo; - float in_f0; - float fVar2; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar1); - fVar2 = proc_7F06F5C4(iVar1); - if (fVar2 <= in_f0) { - proc_7F023CB8(); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02BEA8(void) - -{ - int iVar1; - int in_a0_lo; - float in_f0; - float fVar2; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar1); - if (60.00000000 <= in_f0) { - start_alarm(); - } - proc_7F06F5BC(iVar1); - fVar2 = proc_7F06F5C4(iVar1); - if (fVar2 <= in_f0) { - proc_7F023E48(in_a0_lo); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02BF24(void) - -{ - int iVar1; - int iVar2; - int in_a0_lo; - float in_f0; - float fVar3; - float extraout_f12; - float extraout_f12_00; - - iVar2 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar2); - fVar3 = proc_7F06F5C4(iVar2); - if (fVar3 <= in_f0) { - iVar1 = proc_7F06F5AC(iVar2); - if (iVar1 == ptr_animation_table + 0x4384) { - proc_7F023E14(in_a0_lo,extraout_f12); - } - else { - iVar2 = proc_7F06F5AC(iVar2); - if (iVar2 == ptr_animation_table + 0x5d10) { - proc_7F023E14(in_a0_lo,extraout_f12_00); - } - else { - proc_7F023E48(in_a0_lo); - } - } - } - return; -} - - - -void proc_7F02BFE4(int param_1,int param_2,int param_3) - -{ - bool bVar1; - int iVar5; - ulonglong uVar2; - ulonglong uVar3; - ulonglong uVar4; - int iVar6; - sfxdata *data; - - iVar5 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); - iVar5 = *(int *)(iVar5 + 4); - uVar2 = proc_7F05DFF0((int)*(char *)(iVar5 + 0x80)); - uVar3 = proc_7F05E014((int)*(char *)(iVar5 + 0x80)); - bVar1 = false; - if (param_3 != 0) { - if ((byte)uVar2 == 0) { - bVar1 = true; - } - else { - if (((*(ushort *)(param_1 + 0x12) & 0x80) == 0) && - (*(int *)(param_1 + param_2 * 4 + 0x178) < global_timer)) { - bVar1 = true; - } - } - } - if (bVar1) { - iVar5 = param_1 + param_2 * 8; - if (*(int *)(iVar5 + 0x168) == 0) { - iVar6 = *(int *)(iVar5 + 0x16c); - } - else { - uVar4 = music_related_26(*(int *)(iVar5 + 0x168)); - if (uVar4 != 0) { - music_related_28(*(int *)(iVar5 + 0x168)); - } - iVar6 = *(int *)(iVar5 + 0x16c); - } - if ((iVar6 != 0) && (uVar4 = music_related_26(iVar6), uVar4 != 0)) { - music_related_28(*(int *)(iVar5 + 0x16c)); - } - if ((short)uVar3 != 0) { - data = NULL; - if (*(int *)(iVar5 + 0x168) == 0) { - data = (sfxdata *)(iVar5 + 0x168); - } - else { - if (*(int *)(iVar5 + 0x16c) == 0) { - data = (sfxdata *)(iVar5 + 0x16c); - } - } - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,(short)uVar3,data); - proc_7F053A10(data->target_volume,(float *)(*(int *)(param_1 + 0x18) + 8)); - *(int *)(param_1 + param_2 * 4 + 0x178) = global_timer + (uint)(byte)uVar2; - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x80; - } - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -float proc_7F02C190(void) - -{ - bool bVar1; - char cVar2; - uint in_a0_lo; - undefined4 in_a2_lo; - undefined4 in_a3_lo; - float in_f0; - float fVar3; - - getsubroty(*(int *)(in_a0_lo + 0x1c),in_a0_lo,in_a2_lo,in_a3_lo); - in_f0 = in_f0 + *(float *)(in_a0_lo + 0x14c); - fVar3 = 0.00000000; - if (flt_80051E98 <= in_f0) { - in_f0 = in_f0 - flt_80051E98; -LAB_7f02c1f8: - cVar2 = *(char *)(in_a0_lo + 7); - } - else { - if (in_f0 < 0.00000000) { - in_f0 = in_f0 + flt_80051E98; - goto LAB_7f02c1f8; - } - cVar2 = *(char *)(in_a0_lo + 7); - } - if ((cVar2 == '\b') || (cVar2 == '\n')) { - fVar3 = *(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc); - } - else { - if (cVar2 != '\x19') { - bVar1 = true; - goto code_r0x7f02c240; - } - if (*(int *)(in_a0_lo + 0x2c) == 0) { - bVar1 = true; - goto code_r0x7f02c240; - } - fVar3 = *(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc); - } - bVar1 = fVar3 == 0.00000000; -code_r0x7f02c240: - if (!bVar1) { - if (*(char *)(*(int *)(in_a0_lo + 0x1c) + 0x24) != '\0') { - fVar3 = flt_80051E98 - fVar3; - } - in_f0 = in_f0 + fVar3; - if (flt_80051E98 <= in_f0) { - in_f0 = in_f0 - flt_80051E98; - } - } - return in_f0; -} - - - -float proc_7F02C27C(int param_1) - -{ - float fVar1; - - fVar1 = *(float *)(param_1 + 0x144) + *(float *)(param_1 + 0x148); - if (fVar1 < 0.00000000) { - fVar1 = fVar1 + flt_80051E9C; - } - return fVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 proc_7F02C2B0(void) - -{ - int iVar1; - int in_a0_lo; - longlong in_a1; - uint extraout_a1_lo; - float in_a2_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 uVar2; - float in_a3_lo; - undefined4 extraout_a3_lo; - float in_f0; - float fVar3; - float fVar4; - float fVar5; - undefined4 uStackX4; - float in_stack_00000010; - - uStackX4 = (undefined4)in_a1; - if (in_a1 != 2) { - iVar1 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar1); - fVar4 = in_f0; - getsubroty(iVar1,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - fVar5 = flt_80051EA0 * in_a3_lo * global_timer_delta * *(float *)(iVar1 + 0xa4); - if (*(char *)(in_a0_lo + 7) == '\b') { - fVar3 = (float)proc_7F0250BC(); - uVar2 = extraout_a2_lo_00; - } - else { - if (*(char *)(in_a0_lo + 7) == '\x01') { - fVar3 = (float)proc_7F0250BC(); - uVar2 = extraout_a2_lo_01; - } - else { - get_curplayer_positiondata(); - fVar3 = (float)proc_7F032BD8(); - uVar2 = extraout_a2_lo_02; - } - } - fVar3 = fVar3 - in_stack_00000010; - if (fVar3 < 0.00000000) { - fVar3 = fVar3 + flt_80051EA4; - } - if ((fVar3 < fVar5) || (flt_80051EA8 - fVar5 < fVar3)) { - fVar4 = fVar4 + fVar3; - if (flt_80051EA8 <= fVar4) { - fVar4 = fVar4 - flt_80051EA8; - } - setsubroty(iVar1,fVar4,fVar4,uVar2); - uStackX4 = 3; - } - else { - if (flt_80051EAC <= fVar3) { - fVar4 = fVar4 - fVar5; - if (fVar4 < 0.00000000) { - fVar4 = fVar4 + flt_80051EA8; - } - setsubroty(iVar1,fVar4,fVar4,uVar2); - } - else { - fVar4 = fVar4 + fVar5; - if (flt_80051EA8 <= fVar4) { - fVar4 = fVar4 - flt_80051EA8; - } - setsubroty(iVar1,fVar4,fVar4,uVar2); - } - } - if (in_a2_lo <= in_f0) { - uStackX4 = 2; - } - } - return uStackX4; -} - - - -undefined4 proc_7F02C4C0(short *param_1,int param_2,int param_3,int param_4,float param_5) - -{ - ushort **ppuVar1; - ushort *puVar2; - bool bVar3; - int iVar4; - u32 uVar5; - uint *puVar6; - float *pfVar7; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 uVar8; - uint uVar9; - uint uVar10; - float fVar11; - float vector2; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - float extraout_f12_10; - float extraout_f12_11; - float in_stack_00000010; - float fStack292; - undefined4 uStack288; - float fStack284; - float fStack280; - undefined4 uStack276; - float fStack272; - float afStack268 [2]; - float fStack260; - float afStack256 [12]; - float fStack208; - float fStack204; - float fStack200; - float fStack188; - float fStack184; - float fStack180; - float *pfStack176; - float afStack172 [18]; - float fStack100; - float fStack96; - float fStack92; - int iStack88; - float fStack80; - float fStack72; - float fStack68; - float fStack64; - undefined4 uStack60; - float fStack56; - float *pfStack52; - int iStack48; - int iStack44; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - undefined4 uStack20; - int iStack16; - uint uStack12; - float fStack8; - float fStack4; - - uStack20 = 1; - fStack4 = 0.00000000; - uVar9 = 1; - iVar4 = 0; - if (*(char *)((int)param_1 + 7) == '\b') { - uVar9 = *(uint *)(param_1 + 0x26); - iVar4 = *(int *)(param_1 + 0x28); - } - else { - if (*(char *)((int)param_1 + 7) != '\x01') { - uVar10 = 0; - goto LAB_7f02c51c; - } - uVar9 = *(uint *)(param_1 + 0x18); - iVar4 = *(int *)(param_1 + 0x1a); - } - uVar10 = uVar9 & 2; -LAB_7f02c51c: - fStack8 = 0.00000000; - if (uVar10 == 0) { - fStack8 = 0.00000000; - iStack16 = iVar4; - uStack12 = uVar9; - iVar4 = get_curplayer_positiondata(); - pfStack52 = (float *)(iVar4 + 8); - iStack44 = *(int *)(param_1 + 0xc); - uVar9 = uStack12 & 1; - fStack24 = *(float *)(iVar4 + 8) - *(float *)(iStack44 + 8); - fStack28 = *(float *)(iVar4 + 0xc) - *(float *)(iStack44 + 0xc); - fStack32 = *(float *)(iVar4 + 0x10) - *(float *)(iStack44 + 0x10); - vector2 = fStack24 * fStack24 + fStack28 * fStack28 + fStack32 * fStack32; - if (uVar9 == 0) { - iStack48 = 1; - uVar8 = extraout_a3_lo; - fStack36 = vector2; - } - else { - if ((uStack12 & 0x40) == 0) { - fStack36 = vector2; - iStack48 = proc_7F0294BC((int)param_1); - uVar8 = extraout_a3_lo_00; - } - else { - iStack48 = 1; - uVar8 = extraout_a3_lo; - fStack36 = vector2; - } - } - if (uVar9 == 0) { - getsuboffset(*(int *)(param_1 + 0xe),&fStack72,param_1,uVar8); - pfStack52 = (float *)proc_7F032C78(param_1,(longlong)(int)uStack12,(longlong)iStack16, - &uStack60); - fStack24 = *pfStack52 - fStack72; - fStack28 = pfStack52[1] - fStack68; - fStack32 = pfStack52[2] - fStack64; - param_5 = extraout_f12_08; - } - else { - fStack56 = proc_7F089780((int)pPlayer); - if ((*(uint *)(param_1 + 10) & 0x20) == 0) { - if (flt_80051ED0 < vector2) { - uVar5 = get_random_value(); - if (uVar5 % 3 == 0) { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = fStack28 + - fStack56 * - (flt_80051ED8 + flt_80051ED4 * vector2 * 0.00000000 * in_stack_00000010); - param_5 = extraout_f12_03; - } - else { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = fStack28 - - fStack56 * - (flt_80051EE0 + flt_80051EDC * vector2 * 0.00000000 * in_stack_00000010); - param_5 = extraout_f12_04; - } - } - else { - if (*(float *)(iStack44 + 0xc) < pfStack52[1] - fStack56) { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = fStack28 - - fStack56 * - (flt_80051EE8 + flt_80051EE4 * vector2 * 0.00000000 * in_stack_00000010); - param_5 = extraout_f12_05; - } - else { - if (pfStack52[1] - fStack56 * 0.50000000 < *(float *)(iStack44 + 0xc)) { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = fStack28 - - fStack56 * - (flt_80051EF0 + flt_80051EEC * vector2 * 0.00000000 * in_stack_00000010); - param_5 = extraout_f12_06; - } - else { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = (vector2 * 0.00000000 * flt_80051EF4 * in_stack_00000010 - flt_80051EF8) * - fStack56; - param_5 = extraout_f12_07; - } - } - } - } - else { - if (vector2 < flt_80051EB0) { - if (*(float *)(iStack44 + 0xc) < pfStack52[1] - (fStack56 + fStack56)) { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = fStack28 - - fStack56 * - (flt_80051EB8 + flt_80051EB4 * vector2 * 0.00000000 * in_stack_00000010); - param_5 = extraout_f12; - } - else { - if (pfStack52[1] - fStack56 * 0.50000000 < *(float *)(iStack44 + 0xc)) { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = fStack28 - - fStack56 * - (flt_80051EC0 + flt_80051EBC * vector2 * 0.00000000 * in_stack_00000010); - param_5 = extraout_f12_00; - } - else { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = (vector2 * 0.00000000 * flt_80051EC4 * in_stack_00000010 + 1.00000000) * - 40.00000000; - param_5 = extraout_f12_01; - } - } - } - else { - uVar5 = get_random_value(); - vector2 = (float)uVar5; - if ((int)uVar5 < 0) { - vector2 = vector2 + 4294967296.00000000; - } - fStack28 = fStack28 + - fStack56 * - (flt_80051ECC - flt_80051EC8 * vector2 * 0.00000000 * in_stack_00000010); - param_5 = extraout_f12_02; - } - } - } - if ((uStack12 & 0x100) == 0) { - vector2 = sqrtf(fStack24 * fStack24 + fStack32 * fStack32); - fStack4 = convert_angle_using_inverse((f32)fStack28,(f32)vector2); - param_5 = extraout_f12_09; - if (flt_80051EFC <= fStack4) { - fStack4 = fStack4 - flt_80051F00; - param_5 = extraout_f12_09; - } - } - if (iStack48 != 0) { - fStack80 = (float)proc_7F02C190(); - if (param_4 == 0) { - iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); - } - else { - iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); - } - if (((iVar4 != 0) && ((*(byte *)(iVar4 + 1) & 2) != 0)) && (fStack36 < flt_80051F04)) { - bVar3 = false; - iVar4 = *(int *)(*(int *)(iVar4 + 4) + 0x14); - ppuVar1 = *(ushort ***)(*(int *)(iVar4 + 8) + 8); - puVar2 = *ppuVar1; - if (puVar2 == NULL) { - puVar2 = ppuVar1[1]; - if (puVar2 != NULL) { - puVar6 = (uint *)proc_7F06C660(iVar4,puVar2,0); - proc_7F058E78(puVar6,(int)afStack256); - pfVar7 = (float *)proc_7F078454(); - proc_7F058098(pfVar7,afStack256); - bVar3 = true; - fStack100 = fStack208; - fStack96 = fStack204; - fStack92 = fStack200; - } - } - else { - iStack88 = iVar4; - puVar6 = (uint *)proc_7F06C660(iVar4,puVar2,0); - pfStack176 = *(float **)(**(int **)(*(int *)(iStack88 + 8) + 8) + 4); - proc_7F058E78(puVar6,(int)afStack172); - pfVar7 = (float *)proc_7F078454(); - proc_7F058098(pfVar7,afStack172); - fStack188 = *pfStack176; - fStack184 = pfStack176[1]; - fStack180 = pfStack176[2]; - proc_7F058474(afStack172,&fStack188); - bVar3 = true; - fStack100 = fStack188; - fStack96 = fStack184; - fStack92 = fStack180; - } - if (bVar3) { - fStack280 = sinf(fStack80); - uStack276 = 0; - fStack272 = cosf(fStack80); - fStack292 = *(float *)(iStack44 + 8) - fStack32; - uStack288 = *(undefined4 *)(iStack44 + 0xc); - fStack284 = *(float *)(iStack44 + 0x10) + fStack24; - proc_7F026130((float *)(iStack44 + 8),&fStack292,&fStack100,&fStack280,afStack268); - fStack24 = *pfStack52 - afStack268[0]; - fStack32 = pfStack52[2] - fStack260; - } - } - vector2 = convert_angle_using_inverse((f32)fStack24,(f32)fStack32); - fStack8 = vector2 - fStack80; - if (vector2 < fStack80) { - fStack8 = fStack8 + flt_80051F08; - } - iVar4 = extract_id_from_object_structure_microcode - (*(int *)(param_1 + 0xe),**(ushort ***)(*(int *)(param_1 + 0xe) + 8)); - if (0.00000000 < *(float *)(iVar4 + 0x5c)) { - fStack8 = fStack8 - *(float *)(iVar4 + 0x5c) * *(float *)(iVar4 + 0x58); - if (fStack8 < 0.00000000) { - fStack8 = fStack8 + flt_80051F0C; - } - if (flt_80051F10 <= fStack8) { - fStack8 = fStack8 - flt_80051F10; - } - } - param_5 = extraout_f12_10; - if ((uVar9 != 0) && (param_5 = extraout_f12_10, (uStack12 & 0x60) == 0)) { - fVar11 = sinf(((float)(((int)((float)global_timer * - *(float *)(*(int *)(param_1 + 0xe) + 0xa4)) + (int)*param_1) % - 0x3c) * flt_80051F14) / 60.00000000); - vector2 = fVar11; - proc_7F02D244(fStack36); - fStack8 = fStack8 + vector2 * 0.50000000 * fVar11; - if (fStack8 < 0.00000000) { - fStack8 = fStack8 + flt_80051F18; - } - param_5 = extraout_f12_11; - if (flt_80051F1C <= fStack8) { - fStack8 = fStack8 - flt_80051F20; - param_5 = extraout_f12_11; - } - } - if (flt_80051F28 <= fStack8) { - fStack8 = fStack8 - flt_80051F24; - iVar4 = *(int *)(param_1 + 0xe); - } - else { - iVar4 = *(int *)(param_1 + 0xe); - } - vector2 = fStack8 + *(float *)(param_1 + 0xa6); - if (*(char *)(iVar4 + 0x24) == '\0') { - if (*(float *)(param_2 + 0x38) < vector2) { - uStack20 = 0; - fStack8 = *(float *)(param_2 + 0x38); - } - else { - fStack8 = vector2; - if (vector2 < *(float *)(param_2 + 0x3c)) { - uStack20 = 0; - fStack8 = *(float *)(param_2 + 0x3c); - } - } - } - else { - fStack8 = -*(float *)(param_2 + 0x38); - if (vector2 < fStack8) { - uStack20 = 0; - } - else { - fStack8 = vector2; - if (-*(float *)(param_2 + 0x3c) < vector2) { - uStack20 = 0; - fStack8 = -*(float *)(param_2 + 0x3c); - } - } - } - } - } - proc_7F02D048((int)param_1,param_2,(longlong)param_3,(longlong)param_4,param_5); - *(undefined *)(param_1 + 7) = 10; - *(float *)(param_1 + 0xae) = fStack8; - return uStack20; -} - - - -void proc_7F02D048(int param_1,int param_2,longlong param_3,longlong param_4,float param_5) - -{ - float fVar1; - float fVar2; - float in_stack_00000010; - - fVar1 = 0.00000000; - fVar2 = 0.00000000; - if (param_2 != 0) { - fVar1 = *(float *)(param_2 + 0x30); - if ((fVar1 < in_stack_00000010) || - (fVar1 = *(float *)(param_2 + 0x34), in_stack_00000010 < fVar1)) { - fVar2 = in_stack_00000010 - fVar1; - in_stack_00000010 = fVar1; - } - if (0.00000000 < in_stack_00000010) { - fVar1 = *(float *)(param_2 + 0x40) * in_stack_00000010; - } - else { - fVar1 = *(float *)(param_2 + 0x44) * in_stack_00000010; - } - } - if (param_4 == 0) { - *(float *)(param_1 + 0x154) = fVar1; - *(float *)(param_1 + 0x150) = in_stack_00000010; - } - else { - *(float *)(param_1 + 0x154) = in_stack_00000010; - if (param_3 == 0) { - *(float *)(param_1 + 0x150) = fVar1; - } - else { - *(float *)(param_1 + 0x150) = in_stack_00000010; - } - } - *(float *)(param_1 + 0x158) = fVar2; - return; -} - - - -void proc_7F02D0F8(int param_1) - -{ - *(undefined *)(param_1 + 0xe) = 10; - *(undefined4 *)(param_1 + 0x154) = 0; - *(undefined4 *)(param_1 + 0x150) = 0; - *(undefined4 *)(param_1 + 0x158) = 0; - *(undefined4 *)(param_1 + 0x15c) = 0; - return; -} - - - -void proc_7F02D118(int param_1,int param_2,undefined4 param_3) - -{ - int iVar1; - - iVar1 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); - if (iVar1 != 0) { - proc_7F052574(iVar1,param_3); - } - return; -} - - - -longlong proc_7F02D148(int param_1,int param_2) - -{ - int iVar2; - longlong lVar1; - - iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); - if (iVar2 == 0) { - lVar1 = 0; - } - else { - lVar1 = proc_7F052604(iVar2); - } - return lVar1; -} - - - -void proc_7F02D184(int param_1) - -{ - proc_7F02D118(param_1,0,0); - proc_7F02D118(param_1,1,0); - proc_7F02D0F8(param_1); - return; -} - - - -void proc_7F02D1C4(int param_1,longlong param_2,longlong param_3) - -{ - if (param_3 == 0) { - if (param_2 == 1) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfffb; - } - else { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfff7; - } - } - else { - if (param_2 == 1) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 4; - } - else { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 8; - } - } - if (param_3 == 0) { - proc_7F02D118(param_1,(int)param_2,0); - } - return; -} - - - -undefined4 proc_7F02D244(float param_1) - -{ - undefined4 in_v0_lo; - - if (flt_80051F2C < param_1) { - return in_v0_lo; - } - if (flt_80051F34 < param_1) { - return in_v0_lo; - } - if (flt_80051F3C < param_1) { - return in_v0_lo; - } - if (param_1 <= flt_80051F44) { - return in_v0_lo; - } - return in_v0_lo; -} - - - -// WARNING: Instruction at (ram,0x7f02d5e4) overlaps instruction at (ram,0x7f02d5e0) -// - -void proc_7F02D2E4(int param_1,uint *param_2,undefined4 *param_3,int param_4) - -{ - char cVar1; - int iVar2; - int iVar5; - ulonglong uVar3; - longlong lVar4; - uint uVar6; - undefined4 extraout_a0_lo; - undefined8 extraout_a1; - float fVar7; - f32 fVar8; - float extraout_f0; - float fVar9; - float __x; - float vector1; - float vector2; - undefined4 in_stack_ffffffb0; - - iVar5 = get_curplayer_positiondata(); - iVar2 = *(int *)(param_1 + 0x18); - vector1 = *(float *)(iVar5 + 8) - *(float *)(iVar2 + 8); - __x = *(float *)(iVar5 + 0xc) - *(float *)(iVar2 + 0xc); - vector2 = *(float *)(iVar5 + 0x10) - *(float *)(iVar2 + 0x10); - fVar7 = convert_angle_using_inverse((f32)vector1,(f32)vector2); - fVar9 = (float)proc_7F02C190(); - fVar7 = fVar7 - fVar9; - __x = vector1 * vector1 + __x * __x + vector2 * vector2; - proc_7F02D244(__x); - if (fVar7 < 0.00000000) { - fVar7 = fVar7 + flt_80051F50; - } - uVar6 = (uint)(fVar7 < fVar9); - if (fVar7 >= fVar9) { - uVar6 = 0; - if (fVar7 <= flt_80051F54 - fVar9) { - *param_2 = 0; - goto LAB_7f02d3ec; - } - uVar6 = 1; - } - *param_2 = uVar6; -LAB_7f02d3ec: - *param_3 = 0; - uVar3 = check_if_bond_is_invincible(); - if ((uVar3 == 0) && (uVar6 != 0)) { - fVar7 = sqrtf(__x); - fVar9 = flt_80051F58 * global_timer_delta; - if (300.00000000 < fVar7) { - fVar9 = fVar9 * (300.00000000 / fVar7); - cVar1 = *(char *)(param_1 + 2); - } - else { - cVar1 = *(char *)(param_1 + 2); - } - if (cVar1 < '\x01') { - if (cVar1 < '\0') { - if (cVar1 < -99) { - fVar9 = 0.00000000; - } - else { - fVar9 = fVar9 * ((float)((int)cVar1 + 100) / 100.00000000); - } - } - } - else { - fVar9 = fVar9 * ((float)(int)cVar1 / 10.00000000 + 1.00000000); - } - fVar8 = get_007_accuracy_mod(); - if ((float)fVar8 <= 1.00000000) { - fVar7 = (float)get_007_accuracy_mod(); - } - else { - fVar8 = get_007_accuracy_mod(); - fVar7 = 9.00000000 / (flt_80051F5C - (float)fVar8); - } - fVar7 = fVar9 * fVar7 * (float)ai_accuracy_modifier; - lVar4 = proc_7F05DFCC(param_4); - if (lVar4 < 1) { - fVar7 = fVar7 + fVar7; - } - if ((param_4 == 0xf) || (param_4 == 0x10)) { - fVar7 = fVar7 + fVar7; - fVar9 = *(float *)(param_1 + 0x13c); - } - else { - fVar9 = *(float *)(param_1 + 0x13c); - } - *(float *)(param_1 + 0x13c) = fVar9 + fVar7; - if (1.00000000 <= *(float *)(param_1 + 0x13c)) { - fVar7 = extraout_f0; - proc_7F05DF84(param_4); - fVar8 = get_007_damage_mod(); - fVar7 = (float)fVar8 * fVar7 * 0.12500000 * (float)ai_damage_modifier; - if ((param_4 == 0xf) || (param_4 == 0x10)) { - fVar7 = fVar7 * 3.00000000; - } - proc_7F089E4C(extraout_a0_lo,fVar7,extraout_a1,0xffffffffffffffff,1,in_stack_ffffffb0); - *(undefined4 *)(param_1 + 0x13c) = 0; - uVar3 = check_if_bond_is_invincible(); - if (uVar3 != 0) { - *param_3 = 1; - } - } - } - return; -} - - - -undefined8 proc_7F02D630(int param_1,int param_2,float *param_3) - -{ - ushort **ppuVar1; - ushort *puVar2; - int iVar3; - float *pfVar4; - undefined8 uVar5; - undefined auStack156 [48]; - float fStack108; - float fStack104; - float fStack100; - float *pfStack92; - float afStack84 [16]; - float *pfStack20; - int iStack12; - - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); - uVar5 = 0; - if ((iVar3 != 0) && - (iStack12 = *(int *)(*(int *)(iVar3 + 4) + 0x14), (*(byte *)(iVar3 + 1) & 2) != 0)) { - ppuVar1 = *(ushort ***)(*(int *)(iStack12 + 8) + 8); - puVar2 = *ppuVar1; - if (puVar2 == NULL) { - puVar2 = ppuVar1[1]; - if (puVar2 != NULL) { - pfStack92 = (float *)proc_7F06C660(iStack12,puVar2,0); - pfVar4 = (float *)proc_7F078444(); - proc_7F05818C(pfVar4,pfStack92,(int)auStack156); - uVar5 = 1; - *param_3 = fStack108; - param_3[1] = fStack104; - param_3[2] = fStack100; - } - } - else { - pfStack20 = (float *)proc_7F06C660(iStack12,puVar2,0); - pfVar4 = *(float **)(**(int **)(*(int *)(iStack12 + 8) + 8) + 4); - *param_3 = *pfVar4; - param_3[1] = pfVar4[1]; - param_3[2] = pfVar4[2]; - pfVar4 = (float *)proc_7F078444(); - proc_7F05818C(pfVar4,pfStack20,(int)afStack84); - proc_7F058474(afStack84,param_3); - uVar5 = 1; - } - } - return uVar5; -} - - - -// WARNING: Instruction at (ram,0x7f02e084) overlaps instruction at (ram,0x7f02e080) -// - -void proc_7F02D734(short *param_1,int param_2) - -{ - char cVar1; - int iVar3; - longlong lVar2; - int iVar4; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - uint uVar5; - float fVar6; - float *pfVar7; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f12_01; - f32 fVar8; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - f32 extraout_f14; - f32 extraout_f14_00; - f32 extraout_f14_01; - f32 fVar9; - float fVar10; - float fVar11; - float afStack556 [16]; - float afStack492 [16]; - float fStack428; - float fStack424; - float fStack420; - undefined4 auStack416 [16]; - undefined4 *puStack352; - float afStack348 [16]; - float afStack284 [16]; - float fStack220; - float fStack216; - float fStack212; - float fStack204; - float fStack200; - float fStack196; - undefined4 auStack192 [16]; - undefined4 *puStack128; - float fStack124; - int iStack108; - float fStack104; - float fStack100; - float fStack96; - uint uStack92; - int iStack88; - uint uStack84; - u32 uStack80; - u32 uStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - u32 uStack52; - float fStack48; - float fStack44; - float fStack40; - int iStack36; - int iStack32; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - int iStack4; - - iStack4 = *(int *)(param_1 + 0xc); - iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); - if (iVar3 == 0) { - return; - } - iStack12 = 0; - iStack16 = 0; - iStack20 = *(int *)(iVar3 + 4); - iStack24 = get_curplayer_positiondata(); - if (*(char *)((int)param_1 + 7) == '\b') { - uVar5 = *(uint *)(param_1 + 0x26) & 1; - } - else { - uVar5 = 1; - } - if (((uVar5 != 0) && (*(int *)(param_1 + 0x74) < global_timer + -0x78)) && - (lVar2 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)), -1 < lVar2)) goto LAB_7f02e24c; - iStack32 = 0; - iStack36 = 0; - iVar3 = (int)param_1 + param_2; - *(char *)(iVar3 + 4) = *(char *)(iVar3 + 4) + '\x01'; - lVar2 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)); - if (lVar2 < 0) { - iStack32 = 1; - iStack36 = 1; - } - else { - lVar2 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)); - if (lVar2 == 0) { - trap(0x1c00); - } - if ((lVar2 == -1) && ((ulonglong)*(byte *)(iVar3 + 4) == 0xffffffff80000000)) { - trap(0x1800); - } - if ((int)(uint)*(byte *)(iVar3 + 4) % (int)lVar2 == 0) { - iStack32 = 1; - iVar4 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)); - iVar4 <<= 1; - if (iVar4 == 0) { - trap(0x1c00); - } - if ((iVar4 == -1) && ((ulonglong)*(byte *)(iVar3 + 4) == 0xffffffff80000000)) { - trap(0x1800); - } - if (((int)(uint)*(byte *)(iVar3 + 4) % iVar4 == 0) || (*(char *)(iStack20 + 0x80) == '\x16')) - { - iStack36 = 1; - } - } - else { - iStack16 = 1; - } - } - if (iStack32 != 0) { - uStack52 = 0; - fStack56 = (float)proc_7F02C190(); - fStack60 = proc_7F02C27C((int)param_1); - uStack76 = *(u32 *)(iStack4 + 0x14); - iStack12 = 1; - lVar2 = proc_7F02D630((int)param_1,param_2,&fStack72); - fVar8 = extraout_f12; - fVar9 = extraout_f14; - if (lVar2 == 0) { - fStack72 = *(float *)(iStack4 + 8); - fStack68 = *(float *)(iStack4 + 0xc) + 30.00000000; - fStack64 = *(float *)(iStack4 + 0x10); - if (param_2 == 1) { - fVar6 = cosf(fStack56); - fStack72 = fStack72 + fVar6 * 10.00000000; - fVar6 = sinf(fStack56); - fStack64 = fStack64 + -fVar6 * 10.00000000; - fVar8 = extraout_f12_00; - fVar9 = extraout_f14_00; - } - else { - fVar6 = cosf(fStack56); - fStack72 = fStack72 + -fVar6 * 10.00000000; - fVar6 = sinf(fStack56); - fStack64 = fStack64 + fVar6 * 10.00000000; - fVar8 = extraout_f12_01; - fVar9 = extraout_f14_01; - } - } - iVar4 = proc_7F0B0E24(&uStack76,fVar8,fVar9,*(f32 *)(iStack4 + 8)); - if (iVar4 == 0) { - *(char *)(iVar3 + 4) = *(char *)(iVar3 + 4) + -1; - iStack12 = 0; - } - else { - uStack80 = uStack76; - } - if (iStack12 != 0) { - uStack84 = 0; - iStack88 = 0; - uStack92 = 1; - iStack108 = proc_7F0292A8(param_1,&fStack72,uStack80); - fVar6 = cosf(fStack60); - fStack104 = sinf(fStack56); - fStack104 = fStack104 * fVar6; - fStack100 = sinf(fStack60); - fVar6 = cosf(fStack60); - fStack96 = cosf(fStack56); - fStack96 = fStack96 * fVar6; - fStack48 = fStack104 * 65536.00000000 + fStack72; - fStack44 = fStack100 * 65536.00000000 + fStack68; - fStack40 = fStack96 * 65536.00000000 + fStack64; - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - proc_7F0B1CC4(); - uStack76 = uStack80; - iVar3 = proc_7F0B0E24(&uStack76,(f32)fStack68,(f32)fStack44,(f32)fStack72); - if (iVar3 == 0) { - proc_7F02624C(&fStack72,&fStack104,&fStack48); - uStack52 = uStack76; - fStack48 = fStack48 - fStack104 * 26.00000000; - fStack44 = fStack44 - fStack100 * 26.00000000; - fStack40 = fStack40 - fStack96 * 26.00000000; - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - fVar6 = fStack48 - fStack72; - fVar10 = fStack44 - fStack68; - fVar11 = fStack40 - fStack64; - fStack124 = fVar6 * fVar6 + fVar10 * fVar10 + fVar11 * fVar11; - cVar1 = *(char *)(iStack20 + 0x80); - if (cVar1 == '\x19') { - if (flt_80051F60 < fVar6 * fVar6 + fVar10 * fVar10 + fVar11 * fVar11) { - puStack128 = create_new_item_instance_of_model(0xca,0x56); - if (puStack128 != NULL) { - proc_7F057FD0(auStack192); - proc_7F058570(fStack60,extraout_a0,afStack284); - proc_7F0585FC(fStack56,extraout_a0_00,afStack348); - proc_7F058098(afStack348,afStack284); - fStack220 = fStack104 * flt_80051F64; - fStack216 = fStack100 * flt_80051F64; - fStack212 = fStack96 * flt_80051F64; - fStack204 = fStack220 * global_timer_delta; - fStack200 = fStack216 * global_timer_delta; - fStack196 = fStack212 * global_timer_delta; - proc_7F05EB0C((int)puStack128,&fStack72,uStack80,afStack284,&fStack204,auStack192, - iStack4); - if ((puStack128[0x19] & 0x80) != 0) { - *(uint *)puStack128[0x1b] = *(uint *)puStack128[0x1b] | 0x80; - *(undefined2 *)((int)puStack128 + 0x82) = 0xffff; - *(uint *)puStack128[0x1b] = *(uint *)puStack128[0x1b] | 0x20; - *(undefined4 *)(puStack128[0x1b] + 0xb0) = puStack128[0x17]; - *(undefined4 *)(puStack128[0x1b] + 0xb4) = *(undefined4 *)(puStack128[0x1b] + 8); - *(float *)(puStack128[0x1b] + 0x10) = fStack220; - *(float *)(puStack128[0x1b] + 0x14) = fStack216; - *(float *)(puStack128[0x1b] + 0x18) = fStack212; - iVar3 = puStack128[0x1b]; - if (*(int *)(iVar3 + 0x98) == 0) { - play_sfx_a1(ptr_sfx_buf,1,(sfxdata *)(iVar3 + 0x98)); - } - else { - if (*(int *)(iVar3 + 0x9c) == 0) { - play_sfx_a1(ptr_sfx_buf,1,(sfxdata *)(iVar3 + 0x9c)); - } - } - } - } - } - else { - iStack12 = 0; - } - } - else { - if (cVar1 == '\x18') { - if (flt_80051F68 < fVar6 * fVar6 + fVar10 * fVar10 + fVar11 * fVar11) { - puStack352 = create_new_item_instance_of_model(0xcb,0x57); - if (puStack352 != NULL) { - proc_7F057FD0(auStack416); - fStack428 = fStack104 * flt_80051F6C; - fStack424 = fStack100 * flt_80051F6C; - fStack420 = fStack96 * flt_80051F6C; - proc_7F058570(fStack60,extraout_a0_01,afStack492); - proc_7F0585FC(fStack56,extraout_a0_02,afStack556); - proc_7F058098(afStack556,afStack492); - *(undefined2 *)((int)puStack352 + 0x82) = 0xb4; - proc_7F05EB0C((int)puStack352,&fStack72,uStack80,afStack492,&fStack428,auStack416, - iStack4); - if ((puStack352[0x19] & 0x80) != 0) { - *(float *)(puStack352[0x1b] + 0x8c) = flt_80051F70; - *(float *)(puStack352[0x1b] + 0x94) = flt_80051F74; - *(undefined4 *)(puStack352[0x1b] + 0xbc) = 0x3c; - } - } - } - else { - iStack12 = 0; - } - } - else { - if ((uVar5 == 0) || (iStack108 == 0)) { - if ((*(char *)((int)param_1 + 7) == '\b') || - (fVar6 = extraout_f12_02, *(char *)((int)param_1 + 7) == '\n')) { - *(int *)(param_1 + 0x24) = global_timer; - fVar6 = extraout_f12_02; - } - } - else { - fVar10 = (*(float *)(iStack24 + 8) - fStack72) - fStack104 * 15.00000000; - fVar6 = (*(float *)(iStack24 + 0xc) - fStack68) - fStack100 * 15.00000000; - fVar11 = (*(float *)(iStack24 + 0x10) - fStack64) - fStack96 * 15.00000000; - if (fVar10 * fVar10 + fVar6 * fVar6 + fVar11 * fVar11 <= fStack124) { - proc_7F02D2E4((int)param_1,&uStack84,&iStack88,(int)cVar1); - uStack92 = (uint)(iStack88 == 0); - fVar6 = extraout_f12_03; - if ((uStack84 != 0) && - ((*(char *)((int)param_1 + 7) == '\b' || - (fVar6 = extraout_f12_03, *(char *)((int)param_1 + 7) == '\n')))) { - *(int *)(param_1 + 0x24) = global_timer; - fVar6 = extraout_f12_03; - } - } - } - if (iStack88 == 0) { - if (((DAT_8007ba04 == NULL) || ((*DAT_8007ba04 != '\x03' && (*DAT_8007ba04 != '\x06')))) - && (fStack124 < flt_80051F78)) { - uStack92 = 0; - } - } - else { - fStack48 = *(float *)(iStack24 + 8); - fStack44 = *(float *)(iStack24 + 0xc); - fStack40 = *(float *)(iStack24 + 0x10); - uStack52 = *(u32 *)(iStack24 + 0x14); - recall_joy2_hits_edit_detail_edit_flag(); - fVar6 = extraout_f12_04; - } - if (uStack92 != 0) { - if (uStack52 != 0) { - proc_7F0A3E1C(&fStack48,1,fVar6,0); - } - if (DAT_8007ba04 == NULL) { - recall_joy2_hits_edit_flag((int)*(char *)(iStack20 + 0x80),&fStack48,-1); - } - else { - pfVar7 = (float *)recall_joy2_hits_edit_detail_edit_flag(); - cVar1 = *DAT_8007ba04; - if (cVar1 == '\x03') { - if ((*(uint *)(param_1 + 10) & 0x40) != 0) { - proc_7F02727C(); - } - } - else { - if ((cVar1 == '\x01') || (cVar1 == '\x04')) { - proc_7F05DF84((int)*(char *)(iStack20 + 0x80)); - get_cur_playernum(); - proc_7F04E0CC(*(int *)(DAT_8007ba04 + 4),extraout_f12_05,pfVar7,(int)&fStack48, - (int)*(char *)(iStack20 + 0x80)); - } - } - } - } - if (iStack36 != 0) { - if (true) { - switch(*(undefined *)(iStack20 + 0x80)) { - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - iStack36 = 1; - goto LAB_7f02e1e8; - } - } - iStack36 = 0; - } -LAB_7f02e1e8: - if (iStack36 != 0) { - proc_7F061948((undefined *)(param_1 + param_2 * 0x16 + 0xc0), - (int)*(char *)(iStack20 + 0x80),&fStack72,&fStack48); - } - } - } - } - } - proc_7F02BFE4((int)param_1,param_2,(uint)(iStack12 != 0 || iStack16 != 0)); -LAB_7f02e24c: - proc_7F02D118((int)param_1,param_2,iStack12); - return; -} - - - -void proc_7F02E26C(short *param_1) - -{ - ushort uVar1; - ushort uVar2; - - uVar1 = param_1[9]; - uVar2 = uVar1 & 0xff7f; - param_1[9] = uVar2; - if ((uVar1 & 8) != 0) { - proc_7F02D734(param_1,0); - uVar2 = param_1[9] & 0xfff7; - param_1[9] = uVar2; - } - if ((uVar2 & 4) != 0) { - proc_7F02D734(param_1,1); - param_1[9] = param_1[9] & 0xfffb; - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F02E2E0(void) - -{ - undefined uVar1; - int iVar2; - undefined8 uVar3; - int in_a0_lo; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - - if ((*(weapon_firing_animation_table **)(in_a0_lo + 0x2c) == &stru_80030108) || - (*(weapon_firing_animation_table **)(in_a0_lo + 0x2c) == &stru_80030150)) { - iVar2 = *(int *)(in_a0_lo + 0x1c); - uVar1 = *(undefined *)(iVar2 + 0x24); - *(undefined *)(in_a0_lo + 0x30) = 2; - *(undefined4 *)(in_a0_lo + 0x2c) = 0x800300c0; - *(undefined *)(in_a0_lo + 8) = 0; - proc_7F023B5C(); - proc_7F06FCA8(iVar2,stru_800300C0.anonymous_0,uVar1,extraout_f12,stru_800300C0.anonymous_7, - extraout_f14); - if (0.00000000 <= (float)stru_800300C0.anonymous_5) { - proc_7F06FDE8(iVar2,extraout_f12_00); - } - uVar3 = 1; - } - else { - uVar3 = 0; - } - return uVar3; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02E3B8(void) - -{ - int iVar1; - int iVar2; - undefined4 uVar3; - int in_a0_lo; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float fVar4; - float extraout_f14; - float extraout_f14_00; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - if (0.00000000 < *(float *)(*(int *)(in_a0_lo + 0x2c) + 0x24)) { - uVar3 = proc_7F06F5AC(iVar1); - proc_7F023B5C(); - proc_7F06FCA8(iVar1,uVar3,*(undefined *)(iVar1 + 0x24),extraout_f12, - *(undefined4 *)(*(int *)(in_a0_lo + 0x2c) + 0x24),extraout_f14); - iVar2 = *(int *)(in_a0_lo + 0x2c); - fVar4 = extraout_f12_00; - } - else { - uVar3 = proc_7F06F5AC(iVar1); - proc_7F023B5C(); - proc_7F06FCA8(iVar1,uVar3,*(undefined *)(iVar1 + 0x24),extraout_f12_01, - *(undefined4 *)(*(int *)(in_a0_lo + 0x2c) + 0x1c),extraout_f14_00); - iVar2 = *(int *)(in_a0_lo + 0x2c); - fVar4 = extraout_f12_02; - } - if (0.00000000 <= *(float *)(iVar2 + 0x14)) { - proc_7F06FDE8(iVar1,fVar4); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02E4C0(void) - -{ - char cVar1; - int iVar2; - uint uVar3; - int iVar4; - undefined4 uVar5; - undefined uVar6; - short *in_a0_lo; - char cVar7; - int iVar9; - longlong lVar8; - short *psVar10; - float in_f0; - float extraout_f0; - float fVar11; - float extraout_f0_00; - float fVar12; - float extraout_f0_01; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f14; - float fVar13; - - iVar2 = *(int *)(in_a0_lo + 0xe); - proc_7F06F5BC(iVar2); - if ((((*(int *)(in_a0_lo + 0x24) < *(int *)(in_a0_lo + 0x22) + -0x1e) && - (*(int *)(iVar2 + 0x54) == 0)) && - (iVar9 = *(int *)(in_a0_lo + 0x16), *(float *)(iVar9 + 0x18) + 10.00000000 < in_f0)) && - (in_f0 < *(float *)(iVar9 + 0x1c))) { - if (0.00000000 <= *(float *)(iVar9 + 0x24)) { - if (*(float *)(iVar9 + 0x24) <= in_f0) goto LAB_7f02e638; - cVar7 = *(char *)(in_a0_lo + 0x1b); - } - else { - cVar7 = *(char *)(in_a0_lo + 0x1b); - } - if (cVar7 == '\0') { - lVar8 = proc_7F02E2E0(); - in_f0 = extraout_f0; - if (lVar8 == 0) { - uVar5 = proc_7F06F5AC(iVar2); - proc_7F023B5C(); - proc_7F06FCA8(iVar2,uVar5,*(undefined *)(iVar2 + 0x24),extraout_f12, - *(undefined4 *)(*(int *)(in_a0_lo + 0x16) + 0x1c),extraout_f14); - in_f0 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x14); - if (0.00000000 <= in_f0) { - proc_7F06FDE8(iVar2,extraout_f12_00); - } - } - cVar7 = *(char *)(in_a0_lo + 0x1a); - } - else { - in_f0 = (float)proc_7F02E3B8(); - cVar7 = *(char *)(in_a0_lo + 0x1a); - } - *(char *)((int)in_a0_lo + 0x33) = cVar7 + '\x01'; - proc_7F06F5BC(iVar2); - } -LAB_7f02e638: - fVar11 = proc_7F06F5C4(iVar2); - if (in_f0 < fVar11) { - uVar3 = *(uint *)(in_a0_lo + 0x26); - fVar12 = extraout_f12_01; - goto LAB_7f02e82c; - } - if (*(char *)((int)in_a0_lo + 0x37) == '\0') { - cVar7 = *(char *)((int)in_a0_lo + 0x33); - if (*(char *)(in_a0_lo + 0x1a) < cVar7) goto LAB_7f02e678; - if (*(char *)(in_a0_lo + 0x1a) == cVar7) { - *(char *)((int)in_a0_lo + 0x33) = cVar7 + '\x01'; - fVar11 = (float)proc_7F02E3B8(); - } - else { - if (*(char *)((int)in_a0_lo + 0x31) != '\0') { - fVar12 = 0.50000000; - if (*(char *)(in_a0_lo + 0x1b) == '\0') { - iVar9 = *(int *)(in_a0_lo + 0x16); - fVar11 = *(float *)(iVar9 + 0x20); - fVar13 = *(float *)(iVar9 + 0x18); - if (fVar11 <= 0.00000000) { - fVar11 = *(float *)(iVar9 + 0x1c); - } - } - else { - iVar9 = *(int *)(in_a0_lo + 0x16); - fVar13 = *(float *)(iVar9 + 0x20); - if (fVar13 <= 0.00000000) { - fVar13 = *(float *)(iVar9 + 0x18); - } - fVar11 = *(float *)(iVar9 + 0x24); - if (fVar11 <= 0.00000000) { - fVar11 = *(float *)(iVar9 + 0x1c); - } - } - fVar11 = fVar11 - fVar13; - if (fVar11 < 12.00000000) { - fVar12 = (fVar11 * 0.50000000) / 12.00000000; -LAB_7f02e7b8: - cVar7 = *(char *)(in_a0_lo + 0x1d); - } - else { - if (16.00000000 < fVar11) { - fVar12 = fVar11 * 0.50000000 * 0.06250000; - goto LAB_7f02e7b8; - } - cVar7 = *(char *)(in_a0_lo + 0x1d); - } - if (cVar7 == '\0') { - *(undefined *)((int)in_a0_lo + 0x31) = 0; - } - else { - if (*(char *)((int)in_a0_lo + 0x3b) == '\0') { - *(undefined *)((int)in_a0_lo + 0x31) = 0; - } - else { - fVar12 = fVar12 + fVar12; - *(undefined *)((int)in_a0_lo + 0x31) = 0; - } - } - uVar5 = proc_7F06F5AC(iVar2); - proc_7F06FCA8(iVar2,uVar5,*(undefined *)(iVar2 + 0x24),fVar12,fVar13,fVar13); - proc_7F06FDE8(iVar2,extraout_f12_02); - } - } - } - else { -LAB_7f02e678: - lVar8 = proc_7F02E2E0(); - fVar11 = extraout_f0_00; - if (lVar8 == 0) { - if ((*(uint *)(in_a0_lo + 0x26) & 1) != 0) { - proc_7F029BB0((int)in_a0_lo); - } - proc_7F023E48((int)in_a0_lo); - return; - } - } - proc_7F06F5BC(iVar2); - uVar3 = *(uint *)(in_a0_lo + 0x26); - fVar12 = extraout_f12_03; - in_f0 = fVar11; -LAB_7f02e82c: - if ((uVar3 & 0x40) == 0) { - fVar11 = *(float *)(*(int *)(in_a0_lo + 0x16) + 4); - if (((uVar3 & 0x20) != 0) && (fVar12 = proc_7F06F5C4(iVar2), fVar12 < fVar11)) { - proc_7F06F5C4(iVar2); - } - proc_7F023B5C(); - uVar6 = proc_7F02C2B0(); - *(undefined *)(in_a0_lo + 0x18) = uVar6; - iVar9 = *(int *)(in_a0_lo + 0x16); - fVar11 = extraout_f0_01; - fVar12 = extraout_f12_04; - } - else { - iVar9 = *(int *)(in_a0_lo + 0x16); - } - if ((in_f0 <= *(float *)(iVar9 + 0x28)) || (*(float *)(iVar9 + 0x2c) <= in_f0)) { - proc_7F02D0F8((int)in_a0_lo); - } - else { - proc_7F02C4C0(in_a0_lo,iVar9,(int)*(char *)((int)in_a0_lo + 0x39), - (int)*(char *)(in_a0_lo + 0x1c),fVar12); - } - lVar8 = 0; - psVar10 = in_a0_lo; - do { - iVar9 = (int)lVar8; - if (*(char *)(psVar10 + 0x1c) == '\0') { - proc_7F02D1C4((int)in_a0_lo,lVar8,0); -LAB_7f02ebc4: - lVar8 = (longlong)(iVar9 + 1); - } - else { - if (*(char *)(psVar10 + 0x1d) == '\0') { - if ((in_f0 < *(float *)(*(int *)(in_a0_lo + 0x16) + 0x18)) || - (*(float *)(*(int *)(in_a0_lo + 0x16) + 0x1c) <= in_f0)) { - proc_7F02D1C4((int)in_a0_lo,lVar8,0); - if (*(char *)((int)in_a0_lo + 7) == '\n') { - proc_7F023B5C(); - proc_7F06FE4C(iVar2,fVar11,extraout_f12_06); - lVar8 = (longlong)(iVar9 + 1); - } - else { - proc_7F023B5C(); - proc_7F06FE4C(iVar2,fVar11,extraout_f12_07); - lVar8 = (longlong)(iVar9 + 1); - } - } - else { - proc_7F02D1C4((int)in_a0_lo,lVar8,1); - *(undefined4 *)(in_a0_lo + 0x22) = global_timer; - if (*(char *)((int)in_a0_lo + 7) == '\n') { - fVar11 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x1c) - - *(float *)(*(int *)(in_a0_lo + 0x16) + 0x18); - if (fVar11 < 30.00000000) { - if (*(int *)(in_a0_lo + 0x20) < (int)fVar11 * -2 + 0x3c) { - proc_7F06FE4C(iVar2,0x3dcccccd,extraout_f12_05); - *(int *)(in_a0_lo + 0x20) = *(int *)(in_a0_lo + 0x20) + clock_timer; - goto LAB_7f02ebc4; - } - proc_7F06FE4C(iVar2,0x3f000000,extraout_f12_05); - lVar8 = (longlong)(iVar9 + 1); - } - else { - proc_7F06FE4C(iVar2,0x3f000000,extraout_f12_05); - lVar8 = (longlong)(iVar9 + 1); - } - } - else { - proc_7F06FE4C(iVar2,0x3f000000,extraout_f12_05); - lVar8 = (longlong)(iVar9 + 1); - } - } - } - else { - if (*(char *)((int)in_a0_lo + 0x31) == '\0') { - cVar7 = *(char *)(in_a0_lo + 0x19); - if ((lVar8 == (longlong)cVar7) || (*(char *)((int)in_a0_lo + (int)cVar7 + 0x3a) == '\0')) - { - iVar4 = *(int *)(in_a0_lo + 0x16); - fVar11 = *(float *)(iVar4 + 0x20); - if ((fVar11 < 0.00000000) || ((in_f0 < fVar11 || (*(float *)(iVar4 + 0x24) < in_f0)))) { - if ((0.00000000 <= fVar11) || (in_f0 < *(float *)(iVar4 + 0x18))) goto LAB_7f02ebac; - cVar1 = *(char *)((int)in_a0_lo + 0x33); - } - else { - cVar1 = *(char *)((int)in_a0_lo + 0x33); - } - *(undefined *)((int)in_a0_lo + 0x31) = 1; - *(char *)(in_a0_lo + 0x19) = '\x01' - cVar7; - *(char *)((int)in_a0_lo + 0x33) = cVar1 + '\x01'; - *(undefined4 *)(in_a0_lo + 0x22) = global_timer; - proc_7F02D1C4((int)in_a0_lo,lVar8,1); - lVar8 = (longlong)(iVar9 + 1); - goto LAB_7f02ebc8; - } - } -LAB_7f02ebac: - proc_7F02D1C4((int)in_a0_lo,lVar8,0); - lVar8 = (longlong)(iVar9 + 1); - } - } -LAB_7f02ebc8: - psVar10 = (short *)((int)psVar10 + 1); - if (lVar8 == 2) { - return; - } - } while( true ); -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02EBFC(void) - -{ - int iVar1; - int iVar2; - undefined4 uVar3; - short *in_a0_lo; - uint uVar4; - char cVar5; - float in_f0; - float fVar6; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f14; - float extraout_f14_00; - - iVar2 = *(int *)(in_a0_lo + 0xe); - proc_7F06F5BC(iVar2); - iVar1 = *(int *)(in_a0_lo + 0x2c); - if (iVar1 == 0) { - uVar4 = *(uint *)(in_a0_lo + 0x26); - } - else { - if (iVar1 == 1) { - fVar6 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x24); - if (fVar6 < 0.00000000) { - fVar6 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x1c); - } - uVar3 = proc_7F06F5AC(iVar2); - proc_7F023B5C(); - proc_7F06FCA8(iVar2,uVar3,*(undefined *)(iVar2 + 0x24),extraout_f12_00,fVar6,extraout_f14); - if (0.00000000 <= *(float *)(*(int *)(in_a0_lo + 0x16) + 0x14)) { - proc_7F06FDE8(iVar2,extraout_f12_01); - } - *(undefined4 *)(in_a0_lo + 0x2c) = 2; - proc_7F02D0F8((int)in_a0_lo); - return; - } - if (iVar1 == 2) { - fVar6 = proc_7F06F5C4(iVar2); - if (in_f0 < fVar6) { - return; - } - uVar4 = *(uint *)(in_a0_lo + 0x26); - *(uint *)(in_a0_lo + 0x26) = uVar4 | 0x20; - uVar4 = uVar4 & 0xffffffbf | 0x20; - *(uint *)(in_a0_lo + 0x26) = uVar4; - if (*(int *)(in_a0_lo + 0x2a) != 0) { - proc_7F025560((int)in_a0_lo,uVar4,*(undefined4 *)(in_a0_lo + 0x28)); - return; - } - proc_7F0256F0((int)in_a0_lo,*(uint *)(in_a0_lo + 0x26),*(undefined4 *)(in_a0_lo + 0x28)); - return; - } - uVar4 = *(uint *)(in_a0_lo + 0x26); - } - if ((uVar4 & 0x20) == 0) { - cVar5 = *(char *)(in_a0_lo + 0x1b); - } - else { - if ((uVar4 & 0x40) != 0) { - iVar2 = proc_7F02C4C0(in_a0_lo,*(int *)(in_a0_lo + 0x16),(int)*(char *)((int)in_a0_lo + 0x39), - (int)*(char *)(in_a0_lo + 0x1c),extraout_f12); - if (iVar2 != 0) { - return; - } - *(undefined4 *)(in_a0_lo + 0x2c) = 1; - return; - } - fVar6 = proc_7F06F5C4(iVar2); - if (fVar6 <= in_f0) { - *(undefined *)(in_a0_lo + 0x18) = 2; - *(uint *)(in_a0_lo + 0x26) = *(uint *)(in_a0_lo + 0x26) | 0x40; - return; - } - cVar5 = *(char *)(in_a0_lo + 0x1b); - } - if ((((cVar5 == '\0') && (0.00000000 < *(float *)(*(int *)(in_a0_lo + 0x16) + 0x24))) && - (in_f0 <= *(float *)(*(int *)(in_a0_lo + 0x16) + 0x24))) && - (fVar6 = proc_7F06F5C4(iVar2), fVar6 <= in_f0)) { - uVar3 = proc_7F06F5AC(iVar2); - proc_7F023B5C(); - proc_7F06FCA8(iVar2,uVar3,*(undefined *)(iVar2 + 0x24),extraout_f12_02, - *(undefined4 *)(*(int *)(in_a0_lo + 0x16) + 0x24),extraout_f14_00); - if (*(char *)((int)in_a0_lo + 0x37) == '\0') { - proc_7F06FDE8(iVar2,extraout_f12_03); - } - else { - if (0.00000000 <= *(float *)(*(int *)(in_a0_lo + 0x16) + 0x14)) { - proc_7F06FDE8(iVar2,extraout_f12_03); - } - } - } - proc_7F02E4C0(); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02EEE0(void) - -{ - char cVar1; - weapon_firing_animation_table *pwVar2; - u32 uVar3; - int objinst; - undefined4 uVar4; - weapon_firing_animation_table *pwVar5; - int in_a0_lo; - float in_f0; - float fVar6; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f14; - float extraout_f14_00; - - if (*(char *)(in_a0_lo + 0x35) != '\0') { - objinst = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(objinst); - pwVar2 = *(weapon_firing_animation_table **)(in_a0_lo + 0x2c); - if ((((pwVar2 == &stru_80030198) || (pwVar2 == &stru_800301E0)) || (pwVar2 == &stru_80030228)) - || (pwVar2 == &stru_80030270)) { - if ((float)pwVar2->anonymous_5 <= in_f0) { - cVar1 = *(char *)(objinst + 0x24); - pwVar5 = pwVar2 + 4; - if ((*(char *)(in_a0_lo + 0x39) != '\0') && (*(char *)(in_a0_lo + 0x38) != '\0')) { - uVar3 = get_random_value(); - if ((uVar3 & 1) == 0) { - pwVar5 = pwVar2 + 8; - } - else { - pwVar5 = pwVar2 + 0xc; - } - } - if (pwVar5 == &stru_800302B8) { - fVar6 = 24.00000000; - } - else { - if (pwVar5 == &stru_80030300) { - fVar6 = 24.00000000; - } - else { - if (pwVar5 == &stru_80030348) { - fVar6 = 32.00000000; - } - else { - if (pwVar5 == &stru_80030390) { - fVar6 = 44.00000000; - } - else { - if (pwVar5 == &stru_800303D8) { - fVar6 = 24.00000000; - } - else { - if (pwVar5 == &stru_80030420) { - fVar6 = 34.00000000; - } - else { - if (pwVar5 == &stru_80030468) { - fVar6 = 32.00000000; - } - else { - if (pwVar5 == &stru_800304B0) { - fVar6 = 44.00000000; - } - else { - if (pwVar5 == &stru_800304F8) { - fVar6 = 24.00000000; - } - else { - if (pwVar5 == &stru_80030540) { - fVar6 = 34.00000000; - } - else { - if (pwVar5 == &stru_80030588) { - fVar6 = 32.00000000; - } - else { - fVar6 = 16.00000000; - if (pwVar5 == &stru_800305D0) { - fVar6 = 44.00000000; - } - } - } - } - } - } - } - } - } - } - } - } - *(undefined *)(in_a0_lo + 0x30) = 2; - *(weapon_firing_animation_table **)(in_a0_lo + 0x2c) = pwVar5; - *(undefined *)(in_a0_lo + 8) = 0; - proc_7F023B5C(); - proc_7F06FCA8(objinst,pwVar5->anonymous_0,cVar1,extraout_f12,pwVar5->anonymous_4, - extraout_f14); - if (*(char *)(in_a0_lo + 0x36) == '\0') { - if (0.00000000 <= (float)pwVar5->anonymous_8) { - proc_7F06FDE8(objinst,extraout_f12_00); - } - else { - if (0.00000000 <= (float)pwVar5->anonymous_5) { - proc_7F06FDE8(objinst,extraout_f12_00); - } - } - } - else { - if (0.00000000 <= (float)pwVar5->anonymous_9) { - proc_7F06FDE8(objinst,extraout_f12_00); - } - else { - proc_7F06FDE8(objinst,extraout_f12_00); - } - } - if (*(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc) != 0.00000000) { - objinst = extract_id_from_object_structure_microcode(objinst,**(ushort ***)(objinst + 8)); - *(float *)(objinst + 0x5c) = fVar6; - *(float *)(objinst + 0x58) = -*(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc) / fVar6; - if (cVar1 != '\0') { - *(float *)(objinst + 0x58) = -*(float *)(objinst + 0x58); - } - } - } - } - else { - if (((((pwVar2 == &stru_800302B8) || (pwVar2 == &stru_80030300)) || - ((pwVar2 == &stru_80030348 || ((pwVar2 == &stru_80030390 || (pwVar2 == &stru_800303D8)))) - )) || ((pwVar2 == &stru_80030420 || - (((((pwVar2 == &stru_80030468 || (pwVar2 == &stru_800304B0)) || - (pwVar2 == &stru_800304F8)) || - ((pwVar2 == &stru_80030540 || (pwVar2 == &stru_80030588)))) || - (pwVar2 == &stru_800305D0)))))) && - (((*(char *)(in_a0_lo + 0x36) == '\0' && (0.00000000 < (float)pwVar2->anonymous_9)) && - ((in_f0 <= (float)pwVar2->anonymous_9 && (fVar6 = proc_7F06F5C4(objinst), fVar6 <= in_f0)) - )))) { - uVar4 = proc_7F06F5AC(objinst); - proc_7F023B5C(); - proc_7F06FCA8(objinst,uVar4,*(undefined *)(objinst + 0x24),extraout_f12_01, - *(undefined4 *)(*(int *)(in_a0_lo + 0x2c) + 0x24),extraout_f14_00); - if (*(char *)(in_a0_lo + 0x37) == '\0') { - proc_7F06FDE8(objinst,extraout_f12_02); - } - else { - if (0.00000000 <= *(float *)(*(int *)(in_a0_lo + 0x2c) + 0x14)) { - proc_7F06FDE8(objinst,extraout_f12_02); - } - } - } - } - } - proc_7F02E4C0(); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02F3F8(void) - -{ - bool bVar1; - int iVar2; - int iVar3; - GUARDdata *guard; - float in_f0; - float fVar4; - float fVar5; - - iVar2 = guard->MODELdata_pointer; - proc_7F06F5BC(iVar2); - bVar1 = *(char *)(iVar2 + 0x24) != '\0'; - fVar4 = in_f0; - iVar3 = something_with_weaponpos_of_guarddata_hand(guard,(uint)bVar1); - if ((20.00000000 <= in_f0) && (iVar3 != 0)) { - *(uint *)(*(int *)(iVar3 + 4) + 100) = *(uint *)(*(int *)(iVar3 + 4) + 100) & 0xfffff7ff; - } - if ((61.00000000 <= in_f0) && (iVar3 != 0)) { - *(undefined2 *)(*(int *)(iVar3 + 4) + 0x82) = 0xb4; - } - if ((119.00000000 <= in_f0) && (iVar3 != 0)) { - proc_7F04BFD0((&guard->handle_positiondata_right_gun)[(uint)bVar1],3); - guard->special_bitflags = guard->special_bitflags | 1; - } - proc_7F06F5BC(iVar2); - fVar5 = proc_7F06F5C4(iVar2); - if (fVar5 <= fVar4) { - proc_7F023E48((int)guard); - } - else { - if ((87.00000000 <= in_f0) && (in_f0 <= 110.00000000)) { - proc_7F023B5C(); - proc_7F02C2B0(); - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02F5A4(void) - -{ - int iVar1; - int in_a0_lo; - float in_f0; - float fVar2; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - proc_7F06F5BC(iVar1); - if ((86.00000000 <= in_f0) || (fVar2 = proc_7F06F5C4(iVar1), in_f0 < fVar2)) { - fVar2 = proc_7F06F5C4(iVar1); - if (fVar2 <= in_f0) { - proc_7F023CB8(); - } - } - else { - proc_7F06F610(iVar1); - proc_7F06FCA8(iVar1,ptr_animation_table + 0x6254,0,extraout_f12,0x42ac0000,extraout_f14); - proc_7F06FDE8(iVar1,extraout_f12_00); - } - return; -} - - - -void proc_7F02F688(void) - -{ - return; -} - - - -uint proc_7F02F690(int param_1,float *param_2,int param_3,float *param_4) - -{ - bool bVar1; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - float fVar2; - float fVar3; - float fVar4; - float extraout_f12; - float *pfStack24; - float *pfStack20; - int iStack8; - - iStack8 = *(int *)(param_1 + 0x1c); - pfStack24 = (float *)convert_angle_using_inverse - ((f32)(*param_2 - *(float *)(*(int *)(param_1 + 0x18) + 8)), - (f32)(param_2[2] - *(float *)(*(int *)(param_1 + 0x18) + 0x10))); - pfStack20 = pfStack24; - getsubroty(iStack8,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - fVar3 = (float)pfStack20 - (float)pfStack24; - if ((float)pfStack20 < (float)pfStack24) { - fVar3 = fVar3 + flt_80051FD0; - } - if (flt_80051FD4 < fVar3) { - fVar3 = FLOAT_80051fd8 - fVar3; - } - fVar2 = flt_80051FE0; - fVar4 = flt_80051FDC; - if (param_3 != 2) { - if (param_3 == 1) { - fVar2 = flt_80051FF8; - fVar4 = flt_80051FE8; - if ((flt_80051FE4 <= fVar3) && - (fVar2 = flt_80051FF8, fVar4 = flt_80051FF0, flt_80051FEC <= fVar3)) { - fVar2 = flt_80051FF8; - fVar4 = flt_80051FF4; - } - } - else { - fVar2 = flt_80052010; - fVar4 = flt_80052000; - if ((flt_80051FFC <= fVar3) && - (fVar2 = flt_80052010, fVar4 = flt_80052008, flt_80052004 <= fVar3)) { - fVar2 = flt_80052010; - fVar4 = flt_8005200C; - } - } - } - proc_7F04310C((float *)&pfStack24,fVar4 * *(float *)(iStack8 + 0xa4),pfStack20,(float)pfStack20, - (float)param_4,fVar2 * *(float *)(iStack8 + 0xa4)); - bVar1 = (float)pfStack24 == (float)pfStack20; - if (bVar1) { - *param_4 = 0.00000000; - } - setsubroty(iStack8,extraout_f12,pfStack24,extraout_a2_lo_00); - return (uint)bVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02F888(void) - -{ - int iVar1; - int iVar2; - uint uVar3; - short *in_a0_lo; - int iVar4; - longlong lVar5; - short *psVar6; - int iVar7; - float in_f0; - float fVar8; - float fVar9; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - float extraout_f14_00; - - iVar4 = *(int *)(in_a0_lo + 0xe); - iVar2 = *(int *)(in_a0_lo + 0xc); - iVar1 = get_curplayer_positiondata(); - iVar7 = *(int *)(in_a0_lo + 0x18) + clock_timer; - *(int *)(in_a0_lo + 0x18) = iVar7; - *(int *)(in_a0_lo + 100) = global_timer; - if (((*(char *)((int)in_a0_lo + 9) == '\x01') || - (*(int *)(in_a0_lo + 0x66) < global_timer + -0x3c)) || (*(int *)(in_a0_lo + 0x1a) < iVar7)) { - proc_7F06F5BC(iVar4); - iVar2 = proc_7F06F5AC(iVar4); - fVar8 = (float)(uint)*(ushort *)(iVar2 + 4); - if (false) { - fVar8 = fVar8 + 4294967296.00000000; - } - if (fVar8 * 0.50000000 < in_f0) { - proc_7F06FE90(iVar4,extraout_f12,extraout_f14); - } - else { - proc_7F06F5AC(iVar4); - proc_7F06FE90(iVar4,extraout_f12_00,extraout_f14_00); - } - proc_7F029BB0((int)in_a0_lo); - proc_7F023E48((int)in_a0_lo); - } - else { - fVar8 = *(float *)(iVar1 + 8) - *(float *)(iVar2 + 8); - fVar9 = *(float *)(iVar1 + 0x10) - *(float *)(iVar2 + 0x10); - if (((300.00000000 <= fVar8) || (fVar8 <= -300.00000000)) || - ((300.00000000 <= fVar9 || (fVar9 <= -300.00000000)))) { - uVar3 = proc_7F02F690((int)in_a0_lo,(float *)(iVar1 + 8),0,(float *)(in_a0_lo + 0x2a)); - if (uVar3 != 0) { - *(undefined4 *)(in_a0_lo + 0x1c) = 1; - } - if (*(int *)(in_a0_lo + 0x18) < 0x15) { - proc_7F02D0F8((int)in_a0_lo); - iVar4 = *(int *)(in_a0_lo + 0x1c); - } - else { - proc_7F02C4C0(in_a0_lo,*(int *)(in_a0_lo + 0x1e),(int)*(char *)((int)in_a0_lo + 0x49), - (int)*(char *)(in_a0_lo + 0x24),extraout_f12_01); - iVar4 = *(int *)(in_a0_lo + 0x1c); - } - if ((iVar4 == 0) || (lVar5 = 0, psVar6 = in_a0_lo, *(int *)(in_a0_lo + 0x18) < 0x1f)) { - proc_7F02D1C4((int)in_a0_lo,1,0); - proc_7F02D1C4((int)in_a0_lo,0,0); - } - else { - do { - iVar4 = (int)lVar5; - if (*(char *)(psVar6 + 0x24) == '\0') { - proc_7F02D1C4((int)in_a0_lo,lVar5,0); - lVar5 = (longlong)(iVar4 + 1); - } - else { - if (*(char *)(psVar6 + 0x25) == '\0') { - proc_7F02D1C4((int)in_a0_lo,lVar5,1); - lVar5 = (longlong)(iVar4 + 1); - } - else { - iVar2 = *(int *)(in_a0_lo + 0x18); - if (*(int *)(in_a0_lo + 0x20) < iVar2) { - if ((lVar5 == (longlong)*(int *)(in_a0_lo + 0x22)) || - (*(char *)((int)in_a0_lo + *(int *)(in_a0_lo + 0x22) + 0x4a) == '\0')) { - *(int *)(in_a0_lo + 0x20) = iVar2; - if (*(char *)((int)in_a0_lo + (0x4b - iVar4)) == '\0') { - if (*(char *)(psVar6 + 0x26) == '\0') { - *(int *)(in_a0_lo + 0x20) = *(int *)(in_a0_lo + 0x20) + 0x28; - } - else { - *(int *)(in_a0_lo + 0x20) = *(int *)(in_a0_lo + 0x20) + 0xb4; - } - } - else { - if (*(char *)(psVar6 + 0x26) == '\0') { - *(int *)(in_a0_lo + 0x20) = *(int *)(in_a0_lo + 0x20) + 0x14; - } - else { - *(int *)(in_a0_lo + 0x20) = iVar2 + 0x5a; - } - } - *(int *)(in_a0_lo + 0x22) = 1 - *(int *)(in_a0_lo + 0x22); - proc_7F02D1C4((int)in_a0_lo,lVar5,1); - lVar5 = (longlong)(iVar4 + 1); - goto LAB_7f02fbf0; - } - } - proc_7F02D1C4((int)in_a0_lo,lVar5,0); - lVar5 = (longlong)(iVar4 + 1); - } - } -LAB_7f02fbf0: - psVar6 = (short *)((int)psVar6 + 1); - } while (lVar5 != 2); - } - } - else { - proc_7F029BB0((int)in_a0_lo); - proc_7F023E48((int)in_a0_lo); - } - } - return; -} - - - -undefined8 proc_7F02FC34(float *param_1,float *param_2,float *param_3,float param_4) - -{ - undefined8 uVar1; - float in_a3_lo; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - - fVar5 = *param_3 - *param_1; - fVar4 = param_3[2] - param_1[2]; - fVar2 = *param_2; - if (fVar2 == 0.00000000) { - if (param_2[2] == 0.00000000) { - if (in_a3_lo * in_a3_lo < fVar4 * fVar4 + fVar5 * fVar5) { - return 0; - } - return 1; - } - fVar3 = param_2[2]; - } - else { - fVar3 = param_2[2]; - } - uVar1 = 0; - fVar6 = fVar4 * fVar3 + fVar2 * fVar5; - if (0.00000000 < fVar6) { - if (((fVar4 * fVar4 + fVar5 * fVar5) - in_a3_lo * in_a3_lo) * (fVar3 * fVar3 + fVar2 * fVar2) <= - fVar6 * fVar6) { - uVar1 = 1; - } - else { - uVar1 = 0; - } - } - return uVar1; -} - - - -undefined8 proc_7F02FD50(float *param_1,float *param_2,float *param_3,float param_4) - -{ - undefined8 uVar1; - float in_a3_lo; - float fVar2; - float fVar3; - float fStack12; - undefined4 uStack8; - float fStack4; - - fVar3 = *param_1; - fVar2 = *param_3 - in_a3_lo; - if ((fVar2 < fVar3) || (fVar2 < *param_2)) { - fVar2 = *param_3 + in_a3_lo; - if (fVar2 <= fVar3) { - if (fVar2 <= *param_2) { - return 0; - } - fVar2 = param_3[2]; - } - else { - fVar2 = param_3[2]; - } - if ((fVar2 - in_a3_lo < param_1[2]) || (fVar2 - in_a3_lo < param_2[2])) { - if (fVar2 + in_a3_lo <= param_1[2]) { - if (fVar2 + in_a3_lo <= param_2[2]) { - return 0; - } - fStack12 = *param_2; - } - else { - fStack12 = *param_2; - } - fStack12 = fStack12 - fVar3; - uStack8 = 0; - fStack4 = param_2[2] - param_1[2]; - uVar1 = proc_7F02FC34(param_1,&fStack12,param_3,in_a3_lo); - } - else { - uVar1 = 0; - } - } - else { - uVar1 = 0; - } - return uVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F02FE78(void) - -{ - int iVar1; - longlong lVar2; - int iVar3; - int in_a0_lo; - float in_f0; - float extraout_f0; - float fVar4; - float fVar5; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float fVar6; - float fStack20; - - iVar1 = *(int *)(in_a0_lo + 0x1c); - *(int *)(in_a0_lo + 200) = global_timer; - if (*(char *)(in_a0_lo + 9) != '\x01') { - if (global_timer + -0x3c <= *(int *)(in_a0_lo + 0xcc)) { - lVar2 = proc_7F02FD50((float *)(in_a0_lo + 0xbc),(float *)(*(int *)(in_a0_lo + 0x18) + 8), - (float *)(in_a0_lo + 0x2c),in_f12); - in_f0 = extraout_f0; - if (lVar2 == 0) { - proc_7F02F690(in_a0_lo,(float *)(in_a0_lo + 0x2c),1,(float *)(in_a0_lo + 0x40)); - if (0 < *(int *)(in_a0_lo + 0x3c)) { - *(int *)(in_a0_lo + 0x3c) = *(int *)(in_a0_lo + 0x3c) - clock_timer; - return; - } - fStack20 = dword_80030988; - iVar3 = proc_7F06F5AC(iVar1); - if (iVar3 == ptr_animation_table + 0x777c) { - fStack20 = dword_80030994; - } - fVar4 = proc_7F06F618(iVar1); - *(float *)(in_a0_lo + 0x38) = - *(float *)(in_a0_lo + 0x38) + fStack20 * global_timer_delta * fVar4; - return; - } - } - } - proc_7F06F5AC(iVar1); - proc_7F06F5BC(iVar1); - fVar4 = in_f0 - 0.00000000; - if (in_f0 < 0.00000000) { - iVar3 = proc_7F06F5AC(iVar1); - fVar5 = (float)(uint)*(ushort *)(iVar3 + 4); - if (false) { - fVar5 = fVar5 + 4294967296.00000000; - } - fVar4 = fVar4 + fVar5; - } - iVar3 = proc_7F06F5AC(iVar1); - fVar5 = (float)(uint)*(ushort *)(iVar3 + 4); - if (false) { - fVar5 = fVar5 + 4294967296.00000000; - } - if (fVar5 * 0.50000000 < fVar4) { - proc_7F06F5AC(iVar1); - proc_7F06FE90(iVar1,extraout_f12,extraout_f14); - } - else { - iVar3 = proc_7F06F5AC(iVar1); - fVar4 = (float)(uint)*(ushort *)(iVar3 + 4); - if (false) { - fVar4 = fVar4 + 4294967296.00000000; - } - fVar5 = extraout_f12_00; - fVar6 = extraout_f14_00; - if (fVar4 * 0.50000000 - 0.00000000 < 0.00000000) { - proc_7F06F5AC(iVar1); - fVar5 = extraout_f12_01; - fVar6 = extraout_f14_01; - } - proc_7F06FE90(iVar1,fVar5,fVar6); - } - proc_7F023E48(in_a0_lo); - return; -} - - - -undefined4 -proc_7F030128(int param_1,undefined4 *param_2,int param_3,undefined4 *param_4,int param_5, - undefined4 param_6) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f14; - undefined4 uStack20; - undefined4 uStack16; - float fStack12; - undefined4 uStack8; - u32 uStack4; - - uStack8 = 0; - uStack4 = param_3; - proc_7F023160(*(int *)(param_1 + 0x18),&uStack20,&fStack12,&uStack16); - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); - if (iVar1 != 0) { - if (param_5 == 0) { - uStack8 = 1; - } - else { - if (uStack4 == param_5) { - uStack8 = 1; - } - } - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - return uStack8; -} - - - -undefined4 -proc_7F0301FC(int param_1,float *param_2,u32 param_3,float *param_4,float param_5,float param_6) - -{ - int iVar1; - float fVar2; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f12_01; - f32 extraout_f12_02; - f32 extraout_f14; - f32 extraout_f14_00; - f32 extraout_f14_01; - f32 extraout_f14_02; - undefined4 uStack44; - undefined4 uStack40; - float fStack36; - undefined4 uStack32; - float fStack16; - undefined4 uStack12; - float fStack8; - u32 uStack4; - - uStack32 = 0; - proc_7F023160(*(int *)(param_1 + 0x18),&uStack44,&fStack36,&uStack40); - fStack16 = *param_4 - *param_2; - uStack12 = 0; - fStack8 = param_4[2] - param_2[2]; - if ((fStack16 == 0.00000000) && (fStack8 == 0.00000000)) { - uStack32 = 1; - } - else { - fVar2 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); - fStack16 = fStack16 * (1.00000000 / fVar2); - fStack8 = fStack8 * (1.00000000 / fVar2); - param_6 = fStack8 * param_6; - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - uStack4 = param_3; - iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); - if ((iVar1 != 0) && - (iVar1 = proc_7F0B0E24(&uStack4,extraout_f12_00,extraout_f14_00,(f32)(*param_2 + param_6)), - iVar1 != 0)) { - uStack4 = param_3; - iVar1 = proc_7F0B0E24(&uStack4,extraout_f12_01,extraout_f14_01,(f32)*param_2); - if ((iVar1 != 0) && - (iVar1 = proc_7F0B0E24(&uStack4,extraout_f12_02,extraout_f14_02,(f32)(*param_2 - param_6)), - iVar1 != 0)) { - uStack32 = 1; - } - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - } - return uStack32; -} - - - -undefined4 -proc_7F0304AC(int param_1,undefined4 *param_2,int param_3,undefined4 *param_4,undefined4 *param_5, - int param_6,undefined4 param_7) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f14; - f32 extraout_f14_00; - u32 uStack24; - undefined4 uStack20; - undefined4 uStack16; - float fStack12; - undefined4 uStack8; - u32 uStack4; - - uStack8 = 0; - uStack4 = param_3; - proc_7F023160(*(int *)(param_1 + 0x18),&uStack20,&fStack12,&uStack16); - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); - if (iVar1 != 0) { - uStack24 = uStack4; - iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)*param_4); - if (iVar1 != 0) { - if (param_6 == 0) { - uStack8 = 1; - } - else { - if (uStack24 == param_6) { - uStack8 = 1; - } - } - } - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - return uStack8; -} - - - -void proc_7F0305E0(int param_1,float *param_2,u32 param_3,float *param_4,float *param_5, - float param_6,undefined4 param_7) - -{ - int iVar1; - f32 extraout_f12; - f32 extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - f32 extraout_f14; - f32 extraout_f14_00; - u32 uStack24; - undefined4 uStack20; - undefined4 uStack16; - float fStack12; - undefined4 uStack8; - u32 uStack4; - - uStack8 = 0; - uStack4 = param_3; - proc_7F023160(*(int *)(param_1 + 0x18),&uStack20,&fStack12,&uStack16); - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); - if (iVar1 != 0) { - uStack24 = uStack4; - iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)*param_4); - if (iVar1 != 0) { - iVar1 = proc_7F0301FC(param_1,param_2,param_3,param_4,extraout_f12_01,param_7); - if (iVar1 != 0) { - iVar1 = proc_7F0301FC(param_1,param_4,uStack4,param_5,extraout_f12_02,param_7); - if (iVar1 != 0) { - uStack8 = 1; - } - } - } - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - return; -} - - - -void proc_7F03074C(float *param_1,float *param_2,float *param_3) - -{ - float fVar1; - float fVar2; - float fVar3; - - if ((param_2[2] - param_1[2]) * *param_3 + -param_3[2] * (*param_2 - *param_1) <= 0.00000000) { - fVar1 = *param_1; - fVar2 = param_1[1]; - fVar3 = param_1[2]; - *param_1 = *param_2; - param_1[1] = param_2[1]; - param_1[2] = param_2[2]; - *param_2 = fVar1; - param_2[1] = fVar2; - param_2[2] = fVar3; - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f030b7c) overlaps instruction at (ram,0x7f030b78) -// - -undefined4 -proc_7F03081C(int param_1,float *param_2,u32 param_3,float *param_4,float *param_5,float *param_6, - float param_7,float param_8,undefined4 param_9) - -{ - int iVar2; - longlong lVar1; - float fVar3; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f12_01; - f32 extraout_f12_02; - f32 extraout_f12_03; - f32 fVar4; - f32 extraout_f14; - f32 extraout_f14_00; - f32 extraout_f14_01; - f32 extraout_f14_02; - f32 extraout_f14_03; - f32 fVar5; - float in_stack_0000001c; - undefined4 uStack108; - undefined4 uStack104; - f32 fStack100; - undefined4 uStack96; - float fStack92; - float fStack88; - float fStack84; - float fStack80; - float fStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - int iStack44; - int iStack40; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - undefined4 uStack12; - float fStack8; - u32 uStack4; - - iStack40 = 0; - iStack44 = 0; - uStack96 = 0; - proc_7F023160(*(int *)(param_1 + 0x18),&uStack108,(float *)&fStack100,&uStack104); - uStack12 = 0; - fStack16 = *param_4 - *param_2; - fStack8 = param_4[2] - param_2[2]; - if ((fStack16 == 0.00000000) && (fStack8 == 0.00000000)) { - uStack96 = 1; - } - else { - fVar3 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); - fStack16 = fStack16 * (1.00000000 / fVar3); - fStack8 = fStack8 * (1.00000000 / fVar3); - fStack20 = fStack16 * in_stack_0000001c * flt_80052014; - fStack24 = fStack8 * in_stack_0000001c * flt_80052018; - fStack28 = fStack16 * in_stack_0000001c * flt_8005201C; - fStack32 = fStack8 * in_stack_0000001c * flt_80052020; - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - proc_7F0B1CC4(); - uStack4 = param_3; - iVar2 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); - if ((iVar2 == 0) || - (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,(f32)(*param_2 + fStack24), - (f32)(*param_2 + fStack24)), fVar4 = extraout_f12_00, - fVar5 = extraout_f14_00, iVar2 == 0)) { - iStack40 = 1; - proc_7F0B28B0(&fStack56,&fStack68); - proc_7F03074C(&fStack56,&fStack68,&fStack16); - fVar4 = extraout_f12_01; - fVar5 = extraout_f14_01; - } - uStack4 = param_3; - iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); - if ((iVar2 == 0) || - (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,fStack100,(f32)(*param_2 - fStack24)), - fVar4 = extraout_f12_02, fVar5 = extraout_f14_02, iVar2 == 0)) { - iStack44 = 1; - proc_7F0B28B0(&fStack80,&fStack92); - proc_7F03074C(&fStack80,&fStack92,&fStack16); - fVar4 = extraout_f12_03; - fVar5 = extraout_f14_03; - } - if ((iStack40 == 0) || (iStack44 == 0)) { - if (iStack40 == 0) { - if (iStack44 == 0) { - uStack4 = param_3; - iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); - if ((iVar2 == 0) || (lVar1 = proc_7F0B18B8(), -1 < lVar1)) { - proc_7F0B28B0(param_5,param_6); - proc_7F03074C(param_5,param_6,&fStack16); - } - else { - uStack96 = 1; - } - } - else { - *param_5 = fStack80; - param_5[1] = fStack76; - param_5[2] = fStack72; - *param_6 = fStack92; - param_6[1] = fStack88; - param_6[2] = fStack84; - } - } - else { - *param_5 = fStack56; - param_5[1] = fStack52; - param_5[2] = fStack48; - *param_6 = fStack68; - param_6[1] = fStack64; - param_6[2] = fStack60; - } - } - else { - proc_7F03074C(&fStack56,&fStack80,&fStack16); - proc_7F03074C(&fStack68,&fStack92,&fStack16); - *param_5 = fStack56; - param_5[1] = fStack52; - param_5[2] = fStack48; - *param_6 = fStack92; - param_6[1] = fStack88; - param_6[2] = fStack84; - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - } - return uStack96; -} - - - -// WARNING: Instruction at (ram,0x7f0310dc) overlaps instruction at (ram,0x7f0310d8) -// - -undefined4 -proc_7F030D70(int param_1,float *param_2,u32 param_3,float *param_4,float *param_5,float *param_6, - float param_7,float param_8,undefined4 param_9) - -{ - int iVar2; - longlong lVar1; - float fVar3; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f12_01; - f32 extraout_f12_02; - f32 extraout_f12_03; - f32 fVar4; - f32 extraout_f14; - f32 extraout_f14_00; - f32 extraout_f14_01; - f32 extraout_f14_02; - f32 extraout_f14_03; - f32 fVar5; - float in_stack_0000001c; - undefined4 uStack116; - undefined4 uStack112; - f32 fStack108; - float fStack104; - float fStack100; - undefined4 uStack96; - float fStack92; - float fStack88; - float fStack84; - float fStack80; - float fStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - int iStack44; - int iStack40; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - undefined4 uStack12; - float fStack8; - u32 uStack4; - - iStack40 = 0; - iStack44 = 0; - uStack96 = 0; - proc_7F023160(*(int *)(param_1 + 0x18),&uStack116,(float *)&fStack108,&uStack112); - uStack12 = 0; - fStack16 = *param_4 - *param_2; - fStack8 = param_4[2] - param_2[2]; - if ((fStack16 == 0.00000000) && (fStack8 == 0.00000000)) { - uStack96 = 1; - } - else { - fVar3 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); - fStack16 = fStack16 * (1.00000000 / fVar3); - fStack8 = fStack8 * (1.00000000 / fVar3); - fStack20 = fStack16 * in_stack_0000001c * flt_80052024; - fStack24 = fStack8 * in_stack_0000001c * flt_80052028; - fStack28 = fStack16 * in_stack_0000001c * flt_8005202C; - fStack32 = fStack8 * in_stack_0000001c * flt_80052030; - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); - proc_7F0B1CC4(); - uStack4 = param_3; - iVar2 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); - if ((iVar2 == 0) || - (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,(f32)(*param_2 + fStack24), - (f32)(*param_2 + fStack24)), fVar4 = extraout_f12_00, - fVar5 = extraout_f14_00, iVar2 == 0)) { - iStack40 = 1; - proc_7F0B28B0(&fStack56,&fStack68); - proc_7F03074C(&fStack56,&fStack68,&fStack16); - fStack100 = DAT_8007ba00; - fVar4 = extraout_f12_01; - fVar5 = extraout_f14_01; - } - uStack4 = param_3; - iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); - if ((iVar2 == 0) || - (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,fStack108,(f32)(*param_2 - fStack24)), - fVar4 = extraout_f12_02, fVar5 = extraout_f14_02, iVar2 == 0)) { - iStack44 = 1; - proc_7F0B28B0(&fStack80,&fStack92); - proc_7F03074C(&fStack80,&fStack92,&fStack16); - fStack104 = DAT_8007ba00; - fVar4 = extraout_f12_03; - fVar5 = extraout_f14_03; - } - if ((iStack40 == 0) || (iStack44 == 0)) { - if (iStack40 == 0) { - if (iStack44 == 0) { - uStack4 = param_3; - iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); - if ((iVar2 == 0) || (lVar1 = proc_7F0B18B8(), -1 < lVar1)) { - proc_7F0B28B0(param_5,param_6); - proc_7F03074C(param_5,param_6,&fStack16); - } - else { - uStack96 = 1; - } - } - else { - *param_5 = fStack80; - param_5[1] = fStack76; - param_5[2] = fStack72; - *param_6 = fStack92; - param_6[1] = fStack88; - param_6[2] = fStack84; - } - } - else { - *param_5 = fStack56; - param_5[1] = fStack52; - param_5[2] = fStack48; - *param_6 = fStack68; - param_6[1] = fStack64; - param_6[2] = fStack60; - } - } - else { - if (fStack100 < fStack104) { - *param_5 = fStack56; - param_5[1] = fStack52; - param_5[2] = fStack48; - *param_6 = fStack68; - param_6[1] = fStack64; - param_6[2] = fStack60; - } - else { - *param_5 = fStack80; - param_5[1] = fStack76; - param_5[2] = fStack72; - *param_6 = fStack92; - param_6[1] = fStack88; - param_6[2] = fStack84; - } - } - set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); - } - return uStack96; -} - - - -ulonglong proc_7F03130C(int param_1,float *param_2,longlong param_3,float *param_4,float param_5, - int param_6,undefined4 *param_7,int param_8,float param_9,int param_10, - int param_11) - -{ - int iVar2; - ulonglong uVar1; - float *pfVar3; - float fVar4; - float __x; - float fVar5; - float fVar6; - float extraout_f12; - float extraout_f14; - undefined4 in_stack_00000024; - int in_stack_00000028; - float *pfStack56; - float *pfStack52; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - undefined4 uStack12; - float fStack8; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x18); - pfStack56 = param_2; - pfStack52 = param_4; - if (param_3 != 0) { - pfStack56 = param_4; - pfStack52 = param_2; - } - fStack16 = *param_2 - *(float *)(iStack4 + 8); - uStack12 = 0; - fStack8 = param_2[2] - *(float *)(iStack4 + 0x10); - fVar4 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); - fVar5 = (float)param_6 * (1.00000000 / fVar4); - fStack16 = fStack16 * fVar5; - fStack8 = fStack8 * fVar5; - __x = flt_80052034; - if (fVar5 <= 1.00000000) { - __x = proc_7F05ACB0((float)param_6 * (1.00000000 / fVar4)); - } - if (((int)param_3 == 0) && (__x != 0.00000000)) { - __x = flt_80052038 - __x; - } - fVar4 = cosf(__x); - fVar5 = sinf(__x); - fVar6 = -fVar4 * fStack16; - fVar5 = fStack8 * fVar5; - fVar4 = sinf(__x); - __x = cosf(__x); - pfVar3 = (float *)(iStack4 + 8); - fStack28 = fVar5 + fVar6 + *param_2; - fStack24 = param_2[1]; - fStack20 = (-fVar4 * fStack16 - fStack8 * __x) + param_2[2]; - iVar2 = proc_7F03081C(param_1,pfVar3,*(undefined4 *)(iStack4 + 0x14),&fStack28,pfStack52,pfStack56 - ,extraout_f12,extraout_f14,param_11); - if (iVar2 == 0) { - uVar1 = 0; - } - else { - if ((param_7 == NULL) || - (iVar2 = proc_7F0304AC(param_1,pfVar3,*(int *)(iStack4 + 0x14),&fStack28, - (undefined4 *)param_8,0,in_stack_00000024), iVar2 != 0)) { - if (in_stack_00000028 == 0) { - *(undefined *)(param_10 + 2) = 1; - *(float *)(param_10 + 4) = fStack28; - *(float *)(param_10 + 8) = fStack24; - *(float *)(param_10 + 0xc) = fStack20; - uVar1 = 1; - } - else { - *(undefined *)(param_10 + 3) = 1; - *(float *)(param_10 + 0x2c) = fStack28; - *(float *)(param_10 + 0x30) = fStack24; - *(float *)(param_10 + 0x34) = fStack20; - uVar1 = 1; - } - } - else { - uVar1 = 0; - } - } - return uVar1; -} - - - -void proc_7F0315A4(int param_1,float *param_2,undefined8 param_3,char *param_4) - -{ - int iVar2; - ulonglong uVar1; - char *pcVar3; - int iVar4; - char cVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float fVar11; - float extraout_f12_09; - float extraout_f12_10; - float in_f14; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float extraout_f14_06; - float extraout_f14_07; - float extraout_f14_08; - float extraout_f14_09; - float extraout_f14_10; - float extraout_f14_11; - float fVar12; - int iStack32; - float afStack28 [2]; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - - fVar10 = flt_80052040; - fVar9 = flt_8005203C; - iVar4 = *(int *)(param_1 + 0x18); - iStack32 = 0; - do { - cVar5 = *param_4; - if (cVar5 == '\0') { - fStack16 = *param_2; -LAB_7f03164c: - fStack12 = param_2[1]; - fStack8 = param_2[2]; - iVar2 = proc_7F03081C(param_1,(float *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0x14),&fStack16, - (float *)(param_4 + 0x10),(float *)(param_4 + 0x1c),in_f12,in_f14, - -*(float *)(param_1 + 0x24)); - if (iVar2 == 0) { - if (*param_4 == '\0') { - *param_4 = '\x01'; - param_4[1] = '\0'; - in_f12 = extraout_f12; - in_f14 = extraout_f14; - } - else { - in_f12 = extraout_f12; - in_f14 = extraout_f14; - if (*param_4 == '\x02') { - *param_4 = '\x03'; - param_4[1] = '\0'; - in_f12 = extraout_f12; - in_f14 = extraout_f14; - } - } - } - else { - param_4[2] = '\x01'; - *(float *)(param_4 + 4) = fStack16; - *(float *)(param_4 + 8) = fStack12; - *param_4 = '\x04'; - *(float *)(param_4 + 0xc) = fStack8; - in_f12 = extraout_f12; - in_f14 = extraout_f14; - } - } - else { - if (cVar5 == '\x02') { - fStack16 = *param_2; - goto LAB_7f03164c; - } - if (cVar5 == '\x01') { - fVar11 = *(float *)(param_1 + 0x24) * flt_80052044 * flt_80052048; - uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x10),1,afStack28,in_f12,(int)fVar11, - (undefined4 *)((int)&rgba + 1),(int)param_2,in_f14,param_4,0); - if (uVar1 == 0) { - uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x1c),0,afStack28,extraout_f12_00, - (int)fVar11,(undefined4 *)((int)&rgba + 1),(int)param_2, - extraout_f14_00,param_4,0); - if (uVar1 == 0) { - param_4[1] = param_4[1] + '\x01'; - in_f12 = extraout_f12_01; - in_f14 = extraout_f14_01; - if ('\x05' < param_4[1]) { - *param_4 = '\x02'; - in_f12 = extraout_f12_01; - in_f14 = extraout_f14_01; - } - } - else { - *param_4 = '\x04'; - in_f12 = extraout_f12_01; - in_f14 = extraout_f14_01; - } - } - else { - *param_4 = '\x04'; - in_f12 = extraout_f12_00; - in_f14 = extraout_f14_00; - } - } - else { - if (cVar5 == '\x03') { - fVar11 = *(float *)(param_1 + 0x24) * flt_8005204C * flt_80052050; - uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x10),1,afStack28,in_f12,(int)fVar11, - NULL,0,in_f14,param_4,0); - if (uVar1 == 0) { - uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x1c),0,afStack28,extraout_f12_02, - (int)fVar11,NULL,0,extraout_f14_02,param_4,0); - if (uVar1 == 0) { - param_4[1] = param_4[1] + '\x01'; - in_f12 = extraout_f12_03; - in_f14 = extraout_f14_03; - if ('\x05' < param_4[1]) { - param_4[2] = '\0'; - param_4[3] = param_4[2]; - fVar11 = *param_2; - *(float *)(param_4 + 4) = fVar11; - *(float *)(param_4 + 0x2c) = fVar11; - fVar11 = param_2[1]; - *(float *)(param_4 + 8) = fVar11; - *(float *)(param_4 + 0x30) = fVar11; - fVar11 = param_2[2]; - *param_4 = '\0'; - *(float *)(param_4 + 0xc) = fVar11; - *(float *)(param_4 + 0x34) = fVar11; - in_f12 = extraout_f12_03; - in_f14 = extraout_f14_03; - } - } - else { - *param_4 = '\x04'; - in_f12 = extraout_f12_03; - in_f14 = extraout_f14_03; - } - } - else { - *param_4 = '\x04'; - in_f12 = extraout_f12_02; - in_f14 = extraout_f14_02; - } - } - else { - if (cVar5 == '\x04') { - iVar2 = proc_7F030D70(param_1,(float *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0x14), - (float *)(param_4 + 4),(float *)(param_4 + 0x10), - (float *)(param_4 + 0x1c),in_f12,in_f14, - -*(float *)(param_1 + 0x24)); - if (iVar2 == 0) { - *param_4 = '\x05'; - param_4[1] = '\0'; - in_f12 = extraout_f12_04; - in_f14 = extraout_f14_04; - } - else { - param_4[3] = '\x01'; - *param_4 = '\0'; - *(undefined4 *)(param_4 + 0x2c) = *(undefined4 *)(param_4 + 4); - *(undefined4 *)(param_4 + 0x30) = *(undefined4 *)(param_4 + 8); - *(undefined4 *)(param_4 + 0x34) = *(undefined4 *)(param_4 + 0xc); - in_f12 = extraout_f12_04; - in_f14 = extraout_f14_04; - } - } - else { - if (cVar5 == '\x05') { - fVar12 = *(float *)(param_1 + 0x24) * flt_80052054 * flt_80052058; - fVar11 = convert_angle_using_inverse - ((f32)(*(float *)(param_4 + 4) - *(float *)(iVar4 + 8)), - (f32)(*(float *)(param_4 + 0xc) - *(float *)(iVar4 + 0x10))); - fVar6 = convert_angle_using_inverse - ((f32)(*(float *)(param_4 + 0x10) - *(float *)(iVar4 + 8)), - (f32)(*(float *)(param_4 + 0x18) - *(float *)(iVar4 + 0x10))); - fVar6 = fVar11 - fVar6; - fVar7 = convert_angle_using_inverse - ((f32)(*(float *)(param_4 + 0x1c) - *(float *)(iVar4 + 8)), - (f32)(*(float *)(param_4 + 0x24) - *(float *)(iVar4 + 0x10))); - fVar7 = fVar11 - fVar7; - if (fVar6 < 0.00000000) { - fVar6 = fVar6 + fVar10; - } - if (fVar9 <= fVar6) { - fVar6 = fVar6 - fVar10; - } - if (fVar6 < 0.00000000) { - fVar6 = -fVar6; - } - fVar8 = fVar7; - if (fVar7 < 0.00000000) { - fVar8 = fVar7 + fVar10; - } - if (fVar9 <= fVar8) { - fVar8 = fVar8 - fVar10; - } - if (fVar8 < 0.00000000) { - fVar8 = -fVar8; - } - if (fVar6 < fVar8) { - fVar6 = fVar12 * flt_8005205C; - uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x10),1,afStack28,fVar7, - (int)fVar12,NULL,0,extraout_f14_05,param_4,(int)fVar6); - if (uVar1 != 0) { - *param_4 = '\0'; - in_f12 = extraout_f12_05; - in_f14 = extraout_f14_06; - break; - } - fVar7 = convert_angle_using_inverse - ((f32)(*(float *)(param_4 + 0x10) - *(float *)(iVar4 + 8)), - (f32)(*(float *)(param_4 + 0x18) - *(float *)(iVar4 + 0x10))); - fVar7 = fVar11 - fVar7; - fVar8 = convert_angle_using_inverse - ((f32)(afStack28[0] - *(float *)(iVar4 + 8)), - (f32)(fStack20 - *(float *)(iVar4 + 0x10))); - in_f12 = fVar11 - fVar8; - if (fVar7 < 0.00000000) { - fVar7 = fVar7 + fVar10; - } - if (fVar9 <= fVar7) { - fVar7 = fVar7 - fVar10; - } - if (fVar7 < 0.00000000) { - fVar7 = -fVar7; - } - fVar11 = in_f12; - if (in_f12 < 0.00000000) { - fVar11 = in_f12 + fVar10; - } - if (fVar9 <= fVar11) { - fVar11 = fVar11 - fVar10; - } - if (fVar11 < 0.00000000) { - fVar11 = -fVar11; - } - if (fVar11 < fVar7) { - uVar1 = proc_7F03130C(param_1,afStack28,0,afStack28,in_f12,(int)fVar12,NULL,0, - extraout_f14_07,param_4,(int)fVar6); - if (uVar1 != 0) { - *param_4 = '\0'; - in_f12 = extraout_f12_06; - in_f14 = extraout_f14_08; - break; - } - cVar5 = param_4[1]; - in_f12 = extraout_f12_06; - in_f14 = extraout_f14_08; - } - else { - cVar5 = param_4[1]; - in_f14 = extraout_f14_07; - } - } - else { - fVar6 = fVar12 * flt_80052060; - uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x1c),0,afStack28,fVar7, - (int)fVar12,NULL,0,extraout_f14_05,param_4,(int)fVar6); - if (uVar1 != 0) { - *param_4 = '\0'; - in_f12 = extraout_f12_07; - in_f14 = extraout_f14_09; - break; - } - fVar7 = convert_angle_using_inverse - ((f32)(*(float *)(param_4 + 0x1c) - *(float *)(iVar4 + 8)), - (f32)(*(float *)(param_4 + 0x24) - *(float *)(iVar4 + 0x10))); - fVar7 = fVar11 - fVar7; - fVar8 = convert_angle_using_inverse - ((f32)(afStack28[0] - *(float *)(iVar4 + 8)), - (f32)(fStack20 - *(float *)(iVar4 + 0x10))); - in_f12 = fVar11 - fVar8; - if (fVar7 < 0.00000000) { - fVar7 = fVar7 + fVar10; - } - if (fVar9 <= fVar7) { - fVar7 = fVar7 - fVar10; - } - if (fVar7 < 0.00000000) { - fVar7 = -fVar7; - } - fVar11 = in_f12; - if (in_f12 < 0.00000000) { - fVar11 = in_f12 + fVar10; - } - if (fVar9 <= fVar11) { - fVar11 = fVar11 - fVar10; - } - if (fVar11 < 0.00000000) { - fVar11 = -fVar11; - } - if (fVar11 < fVar7) { - uVar1 = proc_7F03130C(param_1,afStack28,1,afStack28,in_f12,(int)fVar12,NULL,0, - extraout_f14_10,param_4,(int)fVar6); - if (uVar1 != 0) { - *param_4 = '\0'; - in_f12 = extraout_f12_08; - in_f14 = extraout_f14_11; - break; - } - cVar5 = param_4[1]; - in_f12 = extraout_f12_08; - in_f14 = extraout_f14_11; - } - else { - cVar5 = param_4[1]; - in_f14 = extraout_f14_10; - } - } - param_4[1] = cVar5 + '\x01'; - if ('\x05' < param_4[1]) { - param_4[3] = '\0'; - *param_4 = '\0'; - } - } - } - } - } - } - iStack32 += 1; - } while (iStack32 != 1); - if (param_4[3] == '\0') { - *(undefined4 *)(param_4 + 0x2c) = *(undefined4 *)(param_4 + 4); - *(undefined4 *)(param_4 + 0x30) = *(undefined4 *)(param_4 + 8); - *(undefined4 *)(param_4 + 0x34) = *(undefined4 *)(param_4 + 0xc); - iVar2 = *(int *)(param_4 + 0x28); - } - else { - iVar2 = *(int *)(param_4 + 0x28); - } - if (iVar2 % 10 == 0) { - pcVar3 = proc_7F0B1410(*(int *)(iVar4 + 0x14),in_f12,in_f14,*(float *)(iVar4 + 8), - *(float *)(iVar4 + 0x10),*(uint *)(param_4 + 0x2c)); - if (pcVar3 != NULL) { - if (*(int *)(*(int *)(pcVar3 + 4) + 0xc) << 2 < 0) { - pcVar3 = NULL; - } - else { - fVar9 = *(float *)(pcVar3 + 8) - *(float *)(iVar4 + 8); - fVar10 = *(float *)(pcVar3 + 0xc) - *(float *)(iVar4 + 0xc); - fVar11 = *(float *)(pcVar3 + 0x10) - *(float *)(iVar4 + 0x10); - if (fVar9 * fVar9 + fVar10 * fVar10 + fVar11 * fVar11 < flt_80052064) { - proc_7F0281F4(param_1); - proc_7F055B78(iVar4,*(int *)(pcVar3 + 4)); - proc_7F054988(*(int *)(pcVar3 + 4),1); - if ((((*(ushort *)(param_1 + 0x12) & 0x10) == 0) && - (iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), - iVar4 != ptr_animation_table + 0x8194)) && - (iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), iVar4 != ptr_animation_table + 0x1c)) - { - proc_7F023948(param_1,extraout_f12_09); - *(undefined4 *)(param_1 + 0xcc) = global_timer; - } - } - else { - pcVar3 = NULL; - } - } - } - if ((pcVar3 == NULL) || ((*(ushort *)(param_1 + 0x12) & 0x10) != 0)) { - iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)); - if ((iVar4 == ptr_animation_table + 0x8194) || - (iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), iVar4 == ptr_animation_table + 0x1c)) { - if (*(char *)(param_1 + 7) == '\x0e') { - proc_7F028FAC(param_1); - } - else { - proc_7F028DA0(param_1); - } - } - if (pcVar3 == NULL) { - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xffef; - cVar5 = *(char *)(param_1 + 7); - } - else { - cVar5 = *(char *)(param_1 + 7); - } - } - else { - cVar5 = *(char *)(param_1 + 7); - } - } - else { - cVar5 = *(char *)(param_1 + 7); - } - if (cVar5 == '\x0e') { - proc_7F02F690(param_1,(float *)(param_4 + 0x2c),0,(float *)(param_1 + 0x7c)); - } - else { - proc_7F02F690(param_1,(float *)(param_4 + 0x2c),(uint)*(byte *)(param_1 + 0x59), - (float *)(param_1 + 0xa0)); - if (*(char *)(param_1 + 0x59) == '\x02') { - if (*(float *)(param_1 + 0xa0) == 0.00000000) { - if (*(int *)(param_1 + 0x14) << 0xc < 0) { - proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3f266666,extraout_f12_10); - } - else { - proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3f000000,extraout_f12_10); - } - } - else { - proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3e800000,extraout_f12_10); - } - } - else { - if (*(char *)(param_1 + 0x59) == '\x01') { - if (*(float *)(param_1 + 0xa0) == 0.00000000) { - proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3f000000,extraout_f12_10); - } - else { - proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3ecccccd,extraout_f12_10); - } - } - } - } - return; -} - - - -void proc_7F032088(void) - -{ - int *piVar1; - bool bVar2; - longlong in_v0; - longlong lVar3; - int iVar4; - int in_a0_lo; - uint uVar5; - float *pfVar6; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fVar7; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float *pfStack92; - int iStack52; - float afStack48 [3]; - int iStack36; - float afStack32 [3]; - int iStack20; - int iStack16; - float fStack12; - float *pfStack8; - - iStack16 = *(int *)(in_a0_lo + 0x18); - iStack20 = 0; - *(int *)(in_a0_lo + 0x84) = *(int *)(in_a0_lo + 0x84) + 1; - *(int *)(in_a0_lo + 200) = global_timer; - if (*(int *)(in_a0_lo + 0xcc) < global_timer + -0x3c) { - in_v0 = proc_7F028DDC(in_a0_lo,(float *)(in_a0_lo + 0x2c),*(undefined4 *)(in_a0_lo + 0x38), - *(char *)(in_a0_lo + 0x59)); - } - proc_7F0281FC(in_a0_lo); - fVar7 = extraout_f12; - if ((*(char *)(in_a0_lo + 0x5c) != '\x06') && - (fVar7 = extraout_f12, *(int *)(in_a0_lo + 0x9c) + 0xb4 < global_timer)) { - proc_7F027F20(in_a0_lo,afStack32,&iStack36); - proc_7F027DB0(in_a0_lo,afStack32,iStack36); - fVar7 = extraout_f12_00; - if (in_v0 != 0) { - iStack20 = 1; - proc_7F027E90(in_a0_lo,(undefined *)(in_a0_lo + 0x5c),afStack32); - fVar7 = extraout_f12_01; - } - } - iVar4 = iStack16; - if (9 < (int)setting_007_5) { - proc_7F023E48(in_a0_lo); - return; - } - if (*(char *)(in_a0_lo + 0x5c) == '\x06') { - proc_7F027F20(in_a0_lo,afStack48,&iStack52); - if ((iStack20 == 0) && - (((*(byte *)(iStack16 + 1) & 2) != 0 || - (proc_7F027DB0(in_a0_lo,afStack48,iStack52), in_v0 == 0)))) { - proc_7F02828C(in_a0_lo); - *(int *)(in_a0_lo + 0x9c) = global_timer; - return; - } - pfVar6 = (float *)proc_7F027FA8(in_a0_lo); - proc_7F028600(in_a0_lo,(undefined *)(in_a0_lo + 0x5c),extraout_f12_02,pfVar6,(int)afStack48); - return; - } - piVar1 = *(int **)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x40); - if (piVar1 == NULL) { - lVar3 = proc_7F02FD50((float *)(in_a0_lo + 0xbc),(float *)(iStack16 + 8), - (float *)(in_a0_lo + 0x2c),fVar7); - bVar2 = false; - if (lVar3 != 0) { - proc_7F023E48(in_a0_lo); - return; - } - } - else { - lVar3 = proc_7F02FD50((float *)(in_a0_lo + 0xbc),(float *)(iStack16 + 8), - (float *)(ptr_0xxxpresets + *piVar1 * 0x2c),fVar7); - bVar2 = false; - if (lVar3 != 0) { - bVar2 = true; - } - } - pfStack92 = (float *)(iVar4 + 8); - if (bVar2) { - proc_7F0282E0(in_a0_lo); - } - if (*(int *)(in_a0_lo + 0x84) % 10 == 5) { - iVar4 = in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4; - if (*(int *)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x40) == 0) { - iVar4 = *(int *)(in_a0_lo + 0x84); - } - else { - if (*(int *)(iVar4 + 0x44) == 0) { - iVar4 = *(int *)(in_a0_lo + 0x84); - } - else { - piVar1 = *(int **)(iVar4 + 0x48); - pfStack8 = (float *)(in_a0_lo + 0x2c); - if (piVar1 == NULL) { - fStack12 = *(float *)(in_a0_lo + 0x38); - } - else { - pfStack8 = (float *)(ptr_0xxxpresets + *piVar1 * 0x2c); - fStack12 = pfStack8[10]; - } - iVar4 = proc_7F030128(in_a0_lo,pfStack92,*(int *)(iStack16 + 0x14),pfStack8,(int)fStack12, - 0x10); - if (iVar4 != 0) { - iVar4 = proc_7F0301FC(in_a0_lo,pfStack92,*(undefined4 *)(iStack16 + 0x14),pfStack8, - extraout_f12_03,*(float *)(in_a0_lo + 0x24) * flt_80052068); - if (iVar4 == 0) { - iVar4 = *(int *)(in_a0_lo + 0x84); - goto LAB_7f0323e0; - } - proc_7F0282E0(in_a0_lo); - proc_7F0282E0(in_a0_lo); - } - iVar4 = *(int *)(in_a0_lo + 0x84); - } - } - } - else { - iVar4 = *(int *)(in_a0_lo + 0x84); - } -LAB_7f0323e0: - if (iVar4 % 10 == 0) { - if (*(int *)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x40) != 0) { - piVar1 = *(int **)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x44); - pfStack8 = (float *)(in_a0_lo + 0x2c); - if (piVar1 == NULL) { - fStack12 = *(float *)(in_a0_lo + 0x38); - } - else { - pfStack8 = (float *)(ptr_0xxxpresets + *piVar1 * 0x2c); - fStack12 = pfStack8[10]; - } - iVar4 = proc_7F030128(in_a0_lo,pfStack92,*(int *)(iStack16 + 0x14),pfStack8,(int)fStack12,0x10 - ); - if (iVar4 != 0) { - iVar4 = proc_7F0301FC(in_a0_lo,pfStack92,*(undefined4 *)(iStack16 + 0x14),pfStack8, - extraout_f12_04,*(float *)(in_a0_lo + 0x24) * flt_8005206C); - if (iVar4 == 0) { - uVar5 = (uint)*(byte *)(in_a0_lo + 0x58); - goto LAB_7f0324d4; - } - proc_7F0282E0(in_a0_lo); - } - } - uVar5 = (uint)*(byte *)(in_a0_lo + 0x58); - } - else { - uVar5 = (uint)*(byte *)(in_a0_lo + 0x58); - } -LAB_7f0324d4: - pfStack8 = (float *)(in_a0_lo + 0x2c); - piVar1 = *(int **)(in_a0_lo + uVar5 * 4 + 0x40); - if (piVar1 == NULL) { - fVar7 = *(float *)(in_a0_lo + 0x38); - } - else { - pfStack8 = (float *)(ptr_0xxxpresets + *piVar1 * 0x2c); - fVar7 = pfStack8[10]; - } - proc_7F0315A4(in_a0_lo,pfStack8,(longlong)(int)fVar7,(char *)(in_a0_lo + 0x5c)); - return; -} - - - -// WARNING: Instruction at (ram,0x7f03261c) overlaps instruction at (ram,0x7f032618) -// - -void proc_7F032548(int param_1) - -{ - int iVar1; - bool bVar2; - longlong lVar3; - char cVar4; - float *pfVar5; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float fVar6; - - iVar1 = *(int *)(param_1 + 0x18); - pfVar5 = (float *)proc_7F028474(param_1); - lVar3 = (longlong)(int)pfVar5; - bVar2 = false; - *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1; - *(int *)(param_1 + 200) = global_timer; - fVar6 = extraout_f12; - if (*(char *)(param_1 + 0x38) != '\x06') { - if (global_timer <= *(int *)(param_1 + 0x78) + 0xb4) { - cVar4 = *(char *)(param_1 + 0x38); - fVar6 = extraout_f12; - goto LAB_7f0325dc; - } - proc_7F027E70(param_1,pfVar5); - fVar6 = extraout_f12_00; - if (lVar3 != 0) { - bVar2 = true; - proc_7F027E90(param_1,(undefined *)(param_1 + 0x38),pfVar5); - fVar6 = extraout_f12_01; - } - } - cVar4 = *(char *)(param_1 + 0x38); -LAB_7f0325dc: - if (cVar4 == '\x06') { - if ((bVar2) || - (((*(byte *)(iVar1 + 1) & 2) == 0 && - (proc_7F027E70(param_1,pfVar5), fVar6 = extraout_f12_02, lVar3 != 0)))) { - proc_7F028600(param_1,(undefined *)(param_1 + 0x38),fVar6,dword_80030984,(int)pfVar5); - } - else { - *(int *)(param_1 + 0x78) = global_timer; - proc_7F028494(param_1); - } - } - else { - lVar3 = proc_7F02FD50((float *)(param_1 + 0xbc),(float *)(iVar1 + 8),pfVar5,fVar6); - if (lVar3 != 0) { - proc_7F0284DC(param_1); - pfVar5 = (float *)proc_7F028474(param_1); - } - proc_7F0315A4(param_1,pfVar5,(longlong)(int)pfVar5[10],(char *)(param_1 + 0x38)); - } - return; -} - - - -void proc_7F0326BC(int param_1) - -{ - char cVar1; - ushort uVar2; - char cVar3; - uint uVar4; - float in_f12; - - if (clock_timer < 1) { - return; - } - if (*(char *)(param_1 + 7) == '\0') { - *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1; - proc_7F023A94(param_1,in_f12); - *(undefined *)(param_1 + 8) = 0; - uVar2 = *(ushort *)(param_1 + 0x12); - } - else { - uVar2 = *(ushort *)(param_1 + 0x12); - } - cVar3 = (char)clock_timer; - if ((uVar2 & 0x40) == 0) { - cVar1 = *(char *)(param_1 + 8); - } - else { - *(int *)(param_1 + 0x110) = *(int *)(param_1 + 0x110) + clock_timer; - cVar3 = (char)clock_timer; - cVar1 = *(char *)(param_1 + 8); - } - *(char *)(param_1 + 8) = cVar1 - cVar3; - if ((-1 < *(char *)(param_1 + 8)) && (-1 < *(int *)(param_1 + 0x14) << 0xd)) { - return; - } - *(undefined *)(param_1 + 8) = 0; - parse_handle_actionblocks(); - if (false) goto switchD_7f032780_caseD_11; - switch(*(undefined *)(param_1 + 7)) { - case 1: - proc_7F02AD98(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 2: - proc_7F02B4E0(param_1); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 3: - proc_7F02B4E8(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 4: - proc_7F02B9A4(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 5: - proc_7F02B774(param_1); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 6: - proc_7F02BC80(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 7: - proc_7F02BD20(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 8: - proc_7F02EBFC(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 9: - proc_7F02F888(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 10: - proc_7F02EEE0(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0xb: - proc_7F02BDA4(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0xc: - proc_7F02BE00(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0xd: - proc_7F02FE78(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0xe: - proc_7F032548(param_1); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0xf: - proc_7F032088(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0x10: - proc_7F02B638(param_1); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0x12: - proc_7F02BF24(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0x13: - proc_7F02BEA8(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0x14: - proc_7F02F3F8(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0x16: - proc_7F02BE58(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0x17: - proc_7F02F5A4(); - uVar4 = *(uint *)(param_1 + 0x14); - break; - case 0x18: - proc_7F02F688(); - default: -switchD_7f032780_caseD_11: - uVar4 = *(uint *)(param_1 + 0x14); - } - *(uint *)(param_1 + 0x14) = uVar4 & 0xfffffffb; - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfdfd; - *(undefined2 *)(param_1 + 0x118) = 0xffff; - *(undefined2 *)(param_1 + 0x11a) = 0xffff; - return; -} - - - -// WARNING: Instruction at (ram,0x7f032a0c) overlaps instruction at (ram,0x7f032a08) -// - -void proc_7F03291C(void) - -{ - uint uVar1; - int iVar2; - uint uVar3; - GUARDdata *pGVar4; - u16 *puVar5; - u16 *puVar6; - u16 *puVar7; - u16 *puVar8; - int iVar9; - - uVar1 = get_numguards(); - iVar2 = 0; - iVar9 = 0; - if (0 < objectiveregisters3) { - do { - proc_7F0326BC(iVar9 + objectiveregisters2); - iVar2 += 1; - iVar9 += 0x1dc; - } while (iVar2 < objectiveregisters3); - } - uVar3 = 0; - setting_007_5 = 0.00000000; - if (0 < (int)uVar1) { - pGVar4 = ptr_guard_data; - if ((uVar1 & 3) == 0) { - iVar2 = 0; - } - else { - do { - uVar3 += 1; - if (((pGVar4->MODELdata_pointer != 0) && (0 < pGVar4->last_bond_detection_time)) && - (global_timer - pGVar4->last_bond_detection_time < 0x78)) { - setting_007_5 = (f32)((int)setting_007_5 + 1); - } - pGVar4 = pGVar4 + 1; - } while ((uVar1 & 3) != uVar3); - iVar2 = uVar3 * 0x10; - if (uVar3 == uVar1) { - return; - } - } - iVar2 = iVar2 * 8 + uVar3 * -9; - iVar9 = iVar2 * 4; - puVar5 = &ptr_guard_data->chrnum + iVar2 * 2; - puVar8 = puVar5 + 0x2ca; - puVar6 = puVar5 + 0xee; - puVar7 = puVar5 + 0x1dc; - do { - iVar9 += 0x770; - if (*(int *)(puVar5 + 0xe) == 0) { - iVar2 = *(int *)(puVar6 + 0xe); - } - else { - if (*(int *)(puVar5 + 0x6a) < 1) { - iVar2 = *(int *)(puVar6 + 0xe); - } - else { - if (global_timer - *(int *)(puVar5 + 0x6a) < 0x78) { - setting_007_5 = (f32)((int)setting_007_5 + 1); - iVar2 = *(int *)(puVar6 + 0xe); - } - else { - iVar2 = *(int *)(puVar6 + 0xe); - } - } - } - puVar5 = puVar5 + 0x3b8; - if (iVar2 == 0) { -LAB_7f032ad0: - iVar2 = *(int *)(puVar7 + 0xe); - } - else { - if (*(int *)(puVar6 + 0x6a) < 1) { - iVar2 = *(int *)(puVar7 + 0xe); - } - else { - if (global_timer - *(int *)(puVar6 + 0x6a) < 0x78) { - setting_007_5 = (f32)((int)setting_007_5 + 1); - goto LAB_7f032ad0; - } - iVar2 = *(int *)(puVar7 + 0xe); - } - } - if (iVar2 == 0) { - iVar2 = *(int *)(puVar8 + 0xe); - } - else { - if (*(int *)(puVar7 + 0x6a) < 1) { - iVar2 = *(int *)(puVar8 + 0xe); - } - else { - if (global_timer - *(int *)(puVar7 + 0x6a) < 0x78) { - setting_007_5 = (f32)((int)setting_007_5 + 1); - iVar2 = *(int *)(puVar8 + 0xe); - } - else { - iVar2 = *(int *)(puVar8 + 0xe); - } - } - } - if (((iVar2 != 0) && (0 < *(int *)(puVar8 + 0x6a))) && - (global_timer - *(int *)(puVar8 + 0x6a) < 0x78)) { - setting_007_5 = (f32)((int)setting_007_5 + 1); - } - puVar8 = puVar8 + 0x3b8; - puVar6 = puVar6 + 0x3b8; - puVar7 = puVar7 + 0x3b8; - } while (iVar9 != uVar1 * 0x1dc); - } - return; -} - - - -undefined8 proc_7F032B68(int param_1) - -{ - if ((0 < *(int *)(param_1 + 0xd4)) && (global_timer - *(int *)(param_1 + 0xd4) < 600)) { - return 1; - } - return 0; -} - - - -undefined8 proc_7F032BA0(int param_1) - -{ - if ((0 < *(int *)(param_1 + 0xf0)) && (global_timer - *(int *)(param_1 + 0xf0) < 600)) { - return 1; - } - return 0; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -float proc_7F032BD8(void) - -{ - int in_a0_lo; - float *in_a1_lo; - undefined4 in_a2_lo; - undefined4 in_a3_lo; - float in_f0; - float fVar1; - float fVar2; - - getsubroty(*(int *)(in_a0_lo + 0x1c),(uint)in_a1_lo,in_a2_lo,in_a3_lo); - fVar1 = convert_angle_using_inverse - ((f32)(*in_a1_lo - *(float *)(*(int *)(in_a0_lo + 0x18) + 8)), - (f32)(in_a1_lo[2] - *(float *)(*(int *)(in_a0_lo + 0x18) + 0x10))); - fVar2 = fVar1 - in_f0; - if (fVar1 < in_f0) { - fVar2 = fVar2 + flt_800520D0; - } - return fVar2; -} - - - -void proc_7F032C4C(undefined4 param_1) - -{ - get_curplayer_positiondata(); - proc_7F032BD8(); - return; -} - - - -int proc_7F032C78(short *param_1,ulonglong param_2,longlong param_3,undefined4 *param_4) - -{ - short *psVar1; - short sVar3; - int iVar2; - undefined *puVar4; - - if ((param_2 & 4) == 0) { - if ((param_2 & 8) == 0) { - iVar2 = get_curplayer_positiondata(); - puVar4 = (undefined *)(iVar2 + 8); - *param_4 = *(undefined4 *)(iVar2 + 0x14); - } - else { - sVar3 = proc_7F032F94((int)param_1,(short)param_3); - if (sVar3 < 10000) { - puVar4 = ptr_0xxxpresets + ((int)sVar3 * 0xc - (int)sVar3) * 4; - } - else { - puVar4 = ptr_2xxxpresets + (int)sVar3 * 0x44 + -680000; - } - *param_4 = *(undefined4 *)(puVar4 + 0x28); - } - } - else { - psVar1 = (short *)proc_7F033040(param_1,param_3); - if ((psVar1 == NULL) || (*(int *)(psVar1 + 0xc) == 0)) { - iVar2 = *(int *)(param_1 + 0xc); - } - else { - iVar2 = *(int *)(param_1 + 0xc); - param_1 = psVar1; - } - *param_4 = *(undefined4 *)(iVar2 + 0x14); - puVar4 = (undefined *)(*(int *)(param_1 + 0xc) + 8); - } - return (int)puVar4; -} - - - -float proc_7F032D70(int param_1) - -{ - int iVar1; - int iVar2; - float fVar3; - float fVar4; - float fVar5; - - fVar3 = get_curplay_horizontal_rotation_in_degrees(); - iVar1 = *(int *)(param_1 + 0x18); - iVar2 = get_curplayer_positiondata(); - fVar4 = convert_angle_using_inverse - ((f32)(*(float *)(iVar1 + 8) - *(float *)(iVar2 + 8)), - (f32)(*(float *)(iVar1 + 0x10) - *(float *)(iVar2 + 0x10))); - fVar5 = fVar4 - fVar3; - if (fVar4 < fVar3) { - fVar5 = fVar5 + flt_800520D4; - } - return fVar5; -} - - - -void proc_7F032DE4(int param_1) - -{ - int iVar1; - int iVar2; - float fVar3; - float fVar4; - float fVar5; - - iVar1 = *(int *)(param_1 + 0x18); - iVar2 = get_curplayer_positiondata(); - fVar3 = *(float *)(iVar2 + 8) - *(float *)(iVar1 + 8); - fVar4 = *(float *)(iVar2 + 0xc) - *(float *)(iVar1 + 0xc); - fVar5 = *(float *)(iVar2 + 0x10) - *(float *)(iVar1 + 0x10); - sqrtf(fVar3 * fVar3 + fVar4 * fVar4 + fVar5 * fVar5); - return; -} - - - -void proc_7F032E48(int param_1,short param_2) - -{ - int iVar1; - short sVar2; - float *pfVar3; - float fVar4; - float fVar5; - float fVar6; - - iVar1 = *(int *)(param_1 + 0x18); - sVar2 = proc_7F032F94(param_1,param_2); - if (sVar2 < 10000) { - pfVar3 = (float *)(ptr_0xxxpresets + ((int)sVar2 * 0xc - (int)sVar2) * 4); - } - else { - pfVar3 = (float *)(ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000); - } - fVar4 = *pfVar3 - *(float *)(iVar1 + 8); - fVar5 = pfVar3[1] - *(float *)(iVar1 + 0xc); - fVar6 = pfVar3[2] - *(float *)(iVar1 + 0x10); - sqrtf(fVar4 * fVar4 + fVar5 * fVar5 + fVar6 * fVar6); - return; -} - - - -ulonglong proc_7F032EFC(int param_1,short param_2) - -{ - short sVar2; - ulonglong uVar1; - undefined *puVar3; - - sVar2 = proc_7F032F94(param_1,param_2); - if (sVar2 < 10000) { - puVar3 = ptr_0xxxpresets + (int)sVar2 * 0x2c; - } - else { - puVar3 = ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000; - } - uVar1 = 0; - if (*(int *)(puVar3 + 0x28) != 0) { - uVar1 = proc_7F0B2FD8(*(int *)(puVar3 + 0x28)); - uVar1 = proc_7F0B5E50((int)uVar1); - } - return uVar1; -} - - - -short proc_7F032F94(int param_1,short param_2) - -{ - if (param_2 == 9000) { - param_2 = *(short *)(param_1 + 0x114); - } - return param_2; -} - - - -longlong proc_7F032FAC(short *param_1,longlong param_2) - -{ - short *psVar1; - - if (param_2 == 0xfa) { - return (longlong)param_1[0x8c]; - } - if (param_2 == 0xfb) { - return (longlong)param_1[0x8d]; - } - if (param_2 == 0xfc) { - return (longlong)param_1[0x8b]; - } - if (param_2 != 0xfd) { - if (param_2 != 0xf9) { - if ((param_2 == 0xf8) && - (psVar1 = *(short **)(pPlayer->position_data_pointer + 4), psVar1 != NULL)) { - param_2 = (longlong)*psVar1; - } - return param_2; - } - return (longlong)((int)*param_1 + 10000); - } - return (longlong)*param_1; -} - - - -int proc_7F033040(short *param_1,longlong param_2) - -{ - short sVar1; - longlong lVar2; - GUARDdata *pGVar3; - int iVar4; - short *psVar5; - int iVar6; - - lVar2 = proc_7F032FAC(param_1,param_2); - pGVar3 = check_if_guardnum_loaded_get_ptr_GUARDdata((short)lVar2); - if ((pGVar3 == NULL) && (iVar4 = 0, 0 < objectiveregisters3)) { - iVar6 = 0; - psVar5 = objectiveregisters2; - do { - sVar1 = *psVar5; - iVar4 += 1; - psVar5 = psVar5 + 0xee; - if ((longlong)(int)lVar2 == (longlong)sVar1) { - return iVar6 + (int)objectiveregisters2; - } - iVar6 += 0x1dc; - } while (iVar4 < objectiveregisters3); - } - return (int)pGVar3; -} - - - -float proc_7F0330C4(short *param_1,longlong param_2) - -{ - int iVar1; - int iVar2; - float fVar3; - float fVar4; - float fVar5; - - iVar1 = *(int *)(param_1 + 0xc); - iVar2 = proc_7F033040(param_1,param_2); - fVar3 = 0.00000000; - if (((iVar2 != 0) && (*(int *)(iVar2 + 0x1c) != 0)) && (*(int *)(iVar2 + 0x18) != 0)) { - iVar2 = *(int *)(iVar2 + 0x18); - fVar3 = *(float *)(iVar2 + 8) - *(float *)(iVar1 + 8); - fVar4 = *(float *)(iVar2 + 0xc) - *(float *)(iVar1 + 0xc); - fVar5 = *(float *)(iVar2 + 0x10) - *(float *)(iVar1 + 0x10); - fVar3 = sqrtf(fVar3 * fVar3 + fVar4 * fVar4 + fVar5 * fVar5); - } - return fVar3; -} - - - -void proc_7F033154(int param_1,short param_2) - -{ - int iVar1; - short sVar2; - float *pfVar3; - float fVar4; - float fVar5; - float fVar6; - - iVar1 = get_curplayer_positiondata(); - sVar2 = proc_7F032F94(param_1,param_2); - if (sVar2 < 10000) { - pfVar3 = (float *)(ptr_0xxxpresets + ((int)sVar2 * 0xc - (int)sVar2) * 4); - } - else { - pfVar3 = (float *)(ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000); - } - fVar4 = *pfVar3 - *(float *)(iVar1 + 8); - fVar5 = pfVar3[1] - *(float *)(iVar1 + 0xc); - fVar6 = pfVar3[2] - *(float *)(iVar1 + 0x10); - sqrtf(fVar4 * fVar4 + fVar5 * fVar5 + fVar6 * fVar6); - return; -} - - - -void proc_7F033218(int param_1,byte param_2) - -{ - *(byte *)(param_1 + 0x10e) = *(byte *)(param_1 + 0x10e) | param_2; - return; -} - - - -void proc_7F03322C(int param_1,byte param_2) - -{ - *(byte *)(param_1 + 0x10e) = *(byte *)(param_1 + 0x10e) & ~param_2; - return; -} - - - -ulonglong proc_7F033244(int param_1,byte param_2) - -{ - return (ulonglong)((*(byte *)(param_1 + 0x10e) & param_2) != 0); -} - - - -void proc_7F033260(short *param_1,longlong param_2,byte param_3) - -{ - int iVar1; - - iVar1 = proc_7F033040(param_1,param_2); - if (iVar1 != 0) { - proc_7F033218(iVar1,param_3); - } - return; -} - - - -void proc_7F033290(short *param_1,longlong param_2,byte param_3) - -{ - int iVar1; - - iVar1 = proc_7F033040(param_1,param_2); - if (iVar1 != 0) { - proc_7F03322C(iVar1,param_3); - } - return; -} - - - -ulonglong proc_7F0332C0(short *param_1,longlong param_2,byte param_3) - -{ - int iVar2; - ulonglong uVar1; - - iVar2 = proc_7F033040(param_1,param_2); - if (iVar2 == 0) { - uVar1 = 0; - } - else { - uVar1 = proc_7F033244(iVar2,param_3); - } - return uVar1; -} - - - -void proc_7F0332FC(undefined8 param_1,uint param_2) - -{ - objectiveregisters1 = objectiveregisters1 | param_2; - return; -} - - - -void proc_7F033318(undefined8 param_1,uint param_2) - -{ - objectiveregisters1 = ~param_2 & objectiveregisters1; - return; -} - - - -ulonglong proc_7F033338(undefined8 param_1,uint param_2) - -{ - return (ulonglong)((objectiveregisters1 & param_2) != 0); -} - - - -ulonglong proc_7F033354(int param_1) - -{ - return (ulonglong)((*(ushort *)(param_1 + 0x12) & 2) != 0); -} - - - -ulonglong proc_7F033364(int param_1) - -{ - longlong lVar1; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - proc_7F024648(param_1); - } - return (ulonglong)(lVar1 != 0); -} - - - -undefined8 proc_7F0333A0(int param_1) - -{ - proc_7F0247B8(param_1); - return 1; -} - - - -void proc_7F0333C4(int param_1) - -{ - *(undefined4 *)(param_1 + 0x110) = 0; - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x40; - return; -} - - - -float proc_7F0333D8(int param_1) - -{ - return (float)*(int *)(param_1 + 0x110) / 60.00000000; -} - - - -ulonglong proc_7F0333F8(int param_1) - -{ - int iVar3; - float *pfVar4; - longlong lVar1; - ulonglong uVar2; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - float extraout_f12; - float afStack40 [3]; - float afStack28 [3]; - float afStack16 [3]; - int iStack4; - - iVar3 = proc_7F029760(param_1); - if (iVar3 == 0) { - uVar2 = 0; - } - else { - iStack4 = *(int *)(param_1 + 0x1c); - getinstsize(iStack4,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - proc_7F068190(afStack16,afStack28); - getsuboffset(iStack4,afStack40,extraout_a2_lo_00,extraout_a3_lo_00); - pfVar4 = (float *)proc_7F0783C4(); - proc_7F058474(pfVar4,afStack40); - lVar1 = proc_7F041074(afStack16,afStack28,afStack40,extraout_f12); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - uVar2 = 1; - } - } - return uVar2; -} - - - -ulonglong proc_7F033490(int param_1) - -{ - return (ulonglong)((*(uint *)(param_1 + 0x14) & 4) != 0); -} - - - -undefined8 proc_7F0334A0(int param_1,char param_2) - -{ - longlong lVar1; - undefined8 uVar2; - int iVar3; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - if ((int)setting_007_5 < 10) { - iVar3 = get_curplayer_positiondata(); - lVar1 = proc_7F028DDC(param_1,(float *)(iVar3 + 8),*(undefined4 *)(iVar3 + 0x14),param_2); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - uVar2 = 1; - } - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -undefined8 proc_7F03350C(short *param_1,int param_2,char param_3) - -{ - longlong lVar1; - undefined8 uVar2; - int iVar3; - - lVar1 = proc_7F02A258((int)param_1); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - if ((int)setting_007_5 < 10) { - iVar3 = proc_7F033040(param_1,(longlong)param_2); - if (iVar3 == 0) { - uVar2 = 0; - } - else { - if (*(int *)(iVar3 + 0x1c) == 0) { - uVar2 = 0; - } - else { - if (*(int *)(iVar3 + 0x18) == 0) { - uVar2 = 0; - } - else { - lVar1 = proc_7F028DDC((int)param_1,(float *)(*(int *)(iVar3 + 0x18) + 8), - *(undefined4 *)(*(int *)(iVar3 + 0x18) + 0x14),param_3); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - uVar2 = 1; - } - } - } - } - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -undefined proc_7F0335A4(int param_1) - -{ - return *(undefined *)(param_1 + 0xb); -} - - - -undefined proc_7F0335AC(int param_1) - -{ - return *(undefined *)(param_1 + 10); -} - - - -ulonglong proc_7F0335B4(int param_1) - -{ - return (ulonglong)(*(short *)(param_1 + 0x118) < 0) ^ 1; -} - - - -ulonglong proc_7F0335C4(int param_1) - -{ - return (ulonglong)(*(short *)(param_1 + 0x11a) < 0) ^ 1; -} - - - -ulonglong proc_7F0335D4(int param_1) - -{ - longlong lVar1; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - proc_7F023E48(param_1); - } - return (ulonglong)(lVar1 != 0); -} - - - -ulonglong proc_7F033610(int param_1) - -{ - longlong lVar1; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - actor_shuffle_feet(); - } - return (ulonglong)(lVar1 != 0); -} - - - -ulonglong proc_7F03364C(int param_1) - -{ - longlong lVar1; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - proc_7F0244AC(); - } - return (ulonglong)(lVar1 != 0); -} - - - -ulonglong proc_7F033688(int param_1) - -{ - longlong lVar1; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - proc_7F024548(); - } - return (ulonglong)(lVar1 != 0); -} - - - -ulonglong proc_7F0336C4(int param_1) - -{ - longlong lVar1; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - actor_kneel(); - } - return (ulonglong)(lVar1 != 0); -} - - - -ulonglong proc_7F033700(int param_1,int param_2,int param_3,int param_4,byte param_5,int param_6) - -{ - longlong lVar1; - - lVar1 = proc_7F02A258(param_1); - if (lVar1 != 0) { - perform_animation_for_actor((GUARDdata *)param_1,param_2,param_3,param_4,param_5,param_6); - } - return (ulonglong)(lVar1 != 0); -} - - - -void proc_7F033760(void) - -{ - is_alarm_on(); - return; -} - - - -undefined8 proc_7F033780(int *param_1,float *param_2,float param_3) - -{ - undefined8 uVar1; - float in_a2_lo; - float fVar2; - float fVar3; - - fVar2 = convert_angle_using_inverse - ((f32)(*(float *)(ptr_0xxxpresets + *param_1 * 0x2c) - *param_2), - (f32)(*(float *)(ptr_0xxxpresets + *param_1 * 0x2c + 2) - param_2[2])); - fVar3 = in_a2_lo - fVar2; - if (in_a2_lo < fVar2) { - fVar3 = fVar3 + flt_800520DC; - } - if ((fVar3 < flt_800520E0) || (uVar1 = 0, flt_800520E4 < fVar3)) { - uVar1 = 1; - } - return uVar1; -} - - - -longlong proc_7F033834(float *param_1,undefined4 param_2,float param_3,char param_4) - -{ - int *piVar2; - longlong lVar1; - int iVar3; - int iVar4; - float extraout_f12; - float extraout_f12_00; - float fVar5; - float extraout_f12_01; - - piVar2 = proc_7F027CD4(param_1,param_2); - if (piVar2 != NULL) { - lVar1 = proc_7F033780(piVar2,param_1,extraout_f12); - if (lVar1 != 0) { - return (longlong)*piVar2; - } - iVar4 = *(int *)piVar2[1]; - iVar3 = 0; - fVar5 = extraout_f12_00; - if (iVar4 < 0) { - return 0xffffffffffffffff; - } - do { - lVar1 = proc_7F033780((int *)(ptr_setup_path_tbl + iVar4 * 0x10),param_1,fVar5); - if (lVar1 != 0) { - return (longlong)*(int *)(ptr_setup_path_tbl + iVar4 * 0x10); - } - iVar3 += 1; - iVar4 = *(int *)(piVar2[1] + iVar3 * 4); - fVar5 = extraout_f12_01; - } while (-1 < iVar4); - } - return 0xffffffffffffffff; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F033998(void) - -{ - int *piVar2; - int *piVar3; - int iVar4; - undefined4 *puVar5; - longlong lVar1; - int in_a0_lo; - uint in_a1_lo; - undefined4 in_a3_lo; - uint uVar6; - char in_f0; - float extraout_f12; - int iStack28; - undefined4 *puStack24; - int iStack8; - - uVar6 = in_a1_lo & 0xff; - if ((uVar6 != 0x10) && (uVar6 != 0x20)) { - getsubroty(*(int *)(in_a0_lo + 0x1c),in_a1_lo,uVar6,in_a3_lo); - lVar1 = proc_7F033834((float *)(*(int *)(in_a0_lo + 0x18) + 8), - *(undefined4 *)(*(int *)(in_a0_lo + 0x18) + 0x14),extraout_f12,in_f0); - if (lVar1 < 0) { - return 0; - } - *(undefined2 *)(in_a0_lo + 0x114) = (short)lVar1; - return 1; - } - iVar4 = *(int *)(in_a0_lo + 0x18); - iStack8 = get_curplayer_positiondata(); - piVar2 = proc_7F027CD4((float *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0x14)); - piVar3 = proc_7F027CD4((float *)(iStack8 + 8),*(undefined4 *)(iStack8 + 0x14)); - if ((piVar2 != NULL) && (piVar3 != NULL)) { - if (uVar6 != 0x10) { - puVar5 = (undefined4 *)proc_7F08FB90((int)piVar2,(int)piVar3); - if (puVar5 == NULL) { - return 0; - } - *(undefined2 *)(in_a0_lo + 0x114) = (short)*puVar5; - return 1; - } - iVar4 = proc_7F08F4F0((int)piVar2,(int)piVar3,&iStack28,3); - if (2 < iVar4) { - *(undefined2 *)(in_a0_lo + 0x114) = (short)*puStack24; - return 1; - } - } - return 0; -} - - - -ulonglong proc_7F033AAC(int param_1,ulonglong param_2) - -{ - ulonglong uVar1; - int iVar3; - longlong lVar2; - float fVar4; - float extraout_f12; - - if (((param_2 & 0xff) == 0x10) || ((param_2 & 0xff) == 0x20)) { - uVar1 = proc_7F033998(); - } - else { - fVar4 = get_curplay_horizontal_rotation_in_degrees(); - iVar3 = get_curplayer_positiondata(); - lVar2 = proc_7F033834((float *)(iVar3 + 8),*(undefined4 *)(iVar3 + 0x14),extraout_f12, - SUB41(fVar4,0)); - if (-1 < lVar2) { - *(undefined2 *)(param_1 + 0x114) = (short)lVar2; - } - uVar1 = (ulonglong)(-1 < lVar2); - } - return uVar1; -} - - - -undefined8 proc_7F033B38(undefined2 *param_1,float param_2) - -{ - int iVar1; - int iVar4; - ulonglong uVar2; - longlong lVar3; - float in_a1_lo; - undefined2 uVar5; - undefined2 *puVar6; - int iVar7; - int iVar8; - ulonglong uVar9; - float fVar10; - float fVar11; - float fVar12; - - iVar4 = get_numguards(); - iVar8 = *(int *)(param_1 + 0xc); - fVar10 = *(float *)(iVar8 + 8); - fVar11 = *(float *)(iVar8 + 0xc); - fVar12 = *(float *)(iVar8 + 0x10); - iVar7 = 0; - uVar9 = (ulonglong)*(byte *)(*(int *)(iVar8 + 0x14) + 3); - if (0 < iVar4) { - iVar8 = 0; - do { - puVar6 = (undefined2 *)((int)&ptr_guard_data->chrnum + iVar8); - if (((puVar6 != param_1) && (*(int *)(puVar6 + 0xe) != 0)) && - (uVar2 = proc_7F02A2A4((int)puVar6), uVar2 == 0)) { - iVar1 = *(int *)(puVar6 + 0xc); - if ((((fVar10 - in_a1_lo <= *(float *)(iVar1 + 8)) && - (*(float *)(iVar1 + 8) <= fVar10 + in_a1_lo)) && - ((fVar11 - in_a1_lo <= *(float *)(iVar1 + 0xc) && - ((*(float *)(iVar1 + 0xc) <= fVar11 + in_a1_lo && - (fVar12 - in_a1_lo <= *(float *)(iVar1 + 0x10))))))) && - (*(float *)(iVar1 + 0x10) <= fVar12 + in_a1_lo)) { - uVar2 = (ulonglong)*(byte *)(*(int *)(iVar1 + 0x14) + 3); - if (uVar9 == uVar2) { - uVar5 = *puVar6; -LAB_7f033c94: - param_1[0x8b] = uVar5; - return 1; - } - lVar3 = proc_7F0B8FD0(uVar9,uVar2); - if (lVar3 != 0) { - uVar5 = *puVar6; - goto LAB_7f033c94; - } - } - } - iVar7 += 1; - iVar8 += 0x1dc; - } while (iVar7 < iVar4); - } - return 0; -} - - - -void proc_7F033CF4(short *param_1,longlong param_2) - -{ - longlong lVar1; - - lVar1 = proc_7F032FAC(param_1,param_2); - param_1[0x8b] = (short)lVar1; - return; -} - - - -void proc_7F033D1C(short *param_1,longlong param_2,int param_3) - -{ - int iVar2; - longlong lVar1; - - iVar2 = proc_7F033040(param_1,param_2); - if (iVar2 != 0) { - lVar1 = proc_7F032FAC(param_1,(longlong)param_3); - *(undefined2 *)(iVar2 + 0x116) = (short)lVar1; - } - return; -} - - - -void proc_7F033D5C(int param_1,short param_2) - -{ - short sVar1; - - sVar1 = proc_7F032F94(param_1,param_2); - *(short *)(param_1 + 0x114) = sVar1; - return; -} - - - -void proc_7F033D84(short *param_1,longlong param_2,short param_3) - -{ - int iVar1; - short sVar2; - - iVar1 = proc_7F033040(param_1,param_2); - if (iVar1 != 0) { - sVar2 = proc_7F032F94((int)param_1,param_3); - *(short *)(iVar1 + 0x114) = sVar2; - } - return; -} - - - -undefined8 proc_7F033DC4(int param_1) - -{ - longlong lVar1; - undefined8 uVar2; - int iVar3; - int iVar4; - float extraout_f12; - float extraout_f14; - float afStack36 [3]; - float afStack24 [3]; - int aiStack12 [3]; - - lVar1._4_4_ = get_curplayer_positiondata(); - lVar1 = (longlong)lVar1._4_4_; - iVar4 = *(int *)(param_1 + 0x18); - aiStack12[0] = *(int *)(iVar4 + 0x14); - proc_7F0B1CC4(); - proc_7F0B0BE4(aiStack12,extraout_f12,extraout_f14,*(float *)(iVar4 + 8),*(float *)(iVar4 + 0x10)); - if (lVar1 == 0) { - proc_7F0B28B0(afStack24,afStack36); - iVar3 = proc_7F0304AC(param_1,(undefined4 *)(iVar4 + 8),*(int *)(iVar4 + 0x14),afStack24, - (undefined4 *)(lVar1._4_4_ + 8),*(int *)(lVar1._4_4_ + 0x14),0); - if ((iVar3 == 0) && - (iVar4 = proc_7F0304AC(param_1,(undefined4 *)(iVar4 + 8),*(int *)(iVar4 + 0x14),afStack36, - (undefined4 *)(lVar1._4_4_ + 8),*(int *)(lVar1._4_4_ + 0x14),0), - iVar4 == 0)) { - return 0; - } - uVar2 = 1; - } - else { - uVar2 = 0; - } - return uVar2; -} - - - -longlong proc_7F033EAC(float *param_1,int param_2) - -{ - ulonglong uVar1; - longlong lVar2; - float extraout_f12; - float extraout_f12_00; - int aiStack20 [4]; - uint uStack4; - - uStack4 = 1; - uVar1 = proc_7F0B2FD8(param_2); - uVar1 = proc_7F0B5E50((int)uVar1); - if ((uVar1 != 0) && (lVar2 = proc_7F0BB2C8(param_1,extraout_f12), lVar2 != 0)) { - uVar1 = proc_7F0B2FD8(param_2); - lVar2 = proc_7F0B3C0C((int)uVar1,aiStack20); - if (lVar2 == 0) { - lVar2 = proc_7F078A58(param_1,extraout_f12_00); - uStack4 = (uint)(lVar2 == 0); - } - else { - lVar2 = proc_7F078BF4(param_1,extraout_f12_00,(float *)0x43480000); - uStack4 = (uint)(lVar2 == 0); - } - } - return (longlong)(int)uStack4; -} - - - -undefined8 proc_7F033F48(float *param_1,int *param_2,float param_3,longlong param_4) - -{ - float fVar1; - float fVar2; - longlong lVar3; - undefined8 uVar4; - int iVar5; - longlong in_a3; - int iVar6; - float fVar7; - f32 extraout_f12; - f32 extraout_f14; - ulonglong uVar8; - float __x; - u32 uStack16; - float fStack12; - float fStack8; - float fStack4; - - uStack16 = *param_2; - uVar8 = param_4 & 0xffffffff; - lVar3 = proc_7F0B18B8(); - if ((lVar3 < 0) && ((in_a3 != 0 || (lVar3 = proc_7F033EAC(param_1,*param_2), lVar3 != 0)))) { - uVar4 = 1; - } - else { - fVar2 = flt_800520FC; - fVar1 = flt_800520F8; - iVar6 = 0; - do { - __x = (float)uVar8; - fVar7 = sinf(__x); - fStack12 = fVar7 * 60.00000000 + *param_1; - fStack8 = param_1[1]; - fVar7 = cosf(__x); - fStack4 = fVar7 * 60.00000000 + param_1[2]; - uStack16 = *param_2; - iVar5 = proc_7F0B0E24(&uStack16,extraout_f12,extraout_f14,(f32)*param_1); - if (((iVar5 != 0) && (lVar3 = proc_7F0B18B8(), lVar3 < 0)) && - ((in_a3 != 0 || (lVar3 = proc_7F033EAC(&fStack12,uStack16), lVar3 != 0)))) { - *param_2 = uStack16; - *param_1 = fStack12; - param_1[2] = fStack4; - return 1; - } - __x = __x + fVar1; - iVar6 += 1; - if (fVar2 <= __x) { - __x = __x - fVar2; - } - uVar8 = (ulonglong)(uint)__x; - } while (iVar6 != 8); - uVar4 = 0; - } - return uVar4; -} - - - -longlong proc_7F03415C(int param_1,uint param_2,float *param_3,int param_4,float param_5,int param_6 - ,uint param_7) - -{ - int iVar2; - longlong lVar1; - uint uVar3; - float extraout_f12; - float extraout_f12_00; - float fVar4; - uint uStackX4; - int in_stack_00000018; - int aiStack24 [2]; - float fStack16; - float fStack12; - float fStack8; - int iStack4; - - iVar2 = get_next_available_guardID(); - if (2 < iVar2) { - if ((int)param_2 < 0) { - uStackX4 = select_psuedorandom_heads(param_1); - fStack16 = *param_3; - fVar4 = extraout_f12_00; - } - else { - fStack16 = *param_3; - fVar4 = extraout_f12; - uStackX4 = param_2; - } - fStack12 = param_3[1]; - fStack8 = param_3[2]; - aiStack24[0] = param_4; - lVar1 = proc_7F033F48(&fStack16,aiStack24,fVar4,(longlong)param_6); - if (((lVar1 != 0) && - (uVar3 = retrieve_header_for_body_and_head(param_1,uStackX4,(longlong)in_stack_00000018), - uVar3 != 0)) && - (iStack4 = replace_GUARDdata_with_actual_values(uVar3,&fStack16,param_6,aiStack24[0],param_7) - , iStack4 != 0)) { - proc_7F03A4F0(iStack4); - set_stateflag_0x04_for_posdata(iStack4); - iVar2 = *(int *)(iStack4 + 4); - *(undefined *)(iVar2 + 6) = (char)uStackX4; - *(undefined *)(iVar2 + 0xf) = (char)param_1; - return (longlong)iStack4; - } - } - return 0; -} - - - -void proc_7F034258(int param_1,int param_2,uint param_3,short param_4,uint param_5,uint param_6) - -{ - short sVar1; - undefined *puVar2; - float fVar3; - float extraout_f12; - - sVar1 = proc_7F032F94(param_1,param_4); - if (sVar1 < 10000) { - puVar2 = ptr_0xxxpresets + (int)sVar1 * 0x2c; - } - else { - puVar2 = ptr_2xxxpresets + (int)sVar1 * 0x44 + -680000; - } - fVar3 = convert_angle_using_inverse(*(f32 *)(puVar2 + 0x18),*(f32 *)(puVar2 + 0x20)); - proc_7F03415C(param_2,param_3,puVar2,*(int *)(puVar2 + 0x28),extraout_f12,fVar3,param_5); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F034308(void) - -{ - int iVar2; - undefined8 uVar1; - short *in_a0_lo; - int in_a1_lo; - uint extraout_a1_lo; - uint in_a2_lo; - undefined4 extraout_a2_lo; - longlong in_a3; - undefined4 extraout_a3_lo; - undefined4 in_f0; - float extraout_f12; - uint in_stack_00000010; - - iVar2 = proc_7F033040(in_a0_lo,in_a3); - if ((*(uint *)(iVar2 + 0x14) & 8) == 0) { - getsubroty(*(int *)(iVar2 + 0x1c),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - uVar1 = proc_7F03415C(in_a1_lo,in_a2_lo,*(int *)(iVar2 + 0x18) + 8, - *(int *)(*(int *)(iVar2 + 0x18) + 0x14),extraout_f12,in_f0, - in_stack_00000010); - } - else { - uVar1 = 0; - } - return uVar1; -} - - - -undefined8 proc_7F034388(short *param_1,longlong param_2,short param_3) - -{ - int iVar2; - short sVar3; - undefined8 uVar1; - undefined *puVar4; - - iVar2 = proc_7F033040(param_1,param_2); - sVar3 = proc_7F032F94((int)param_1,param_3); - if (sVar3 < 10000) { - puVar4 = ptr_0xxxpresets + ((int)sVar3 * 0xc - (int)sVar3) * 4; - } - else { - puVar4 = ptr_2xxxpresets + (int)sVar3 * 0x44 + -680000; - } - if (*(int *)(puVar4 + 0x28) == 0) { - uVar1 = 0; - } - else { - if (iVar2 == 0) { - uVar1 = 0; - } - else { - if (*(int *)(iVar2 + 0x18) == 0) { - uVar1 = 0; - } - else { - if (*(char *)(*(int *)(*(int *)(iVar2 + 0x18) + 0x14) + 3) == - *(char *)(*(int *)(puVar4 + 0x28) + 3)) { - uVar1 = 1; - } - else { - uVar1 = 0; - } - } - } - } - return uVar1; -} - - - -undefined8 proc_7F03444C(int param_1,short param_2) - -{ - int iVar2; - short sVar3; - undefined8 uVar1; - undefined *puVar4; - - iVar2 = get_curplayer_positiondata(); - sVar3 = proc_7F032F94(param_1,param_2); - if (sVar3 < 10000) { - puVar4 = ptr_0xxxpresets + ((int)sVar3 * 0xc - (int)sVar3) * 4; - } - else { - puVar4 = ptr_2xxxpresets + (int)sVar3 * 0x44 + -680000; - } - if (*(int *)(puVar4 + 0x28) == 0) { - uVar1 = 0; - } - else { - if (*(char *)(*(int *)(iVar2 + 0x14) + 3) == *(char *)(*(int *)(puVar4 + 0x28) + 3)) { - uVar1 = 1; - } - else { - uVar1 = 0; - } - } - return uVar1; -} - - - -undefined8 proc_7F0344FC(void) - -{ - return 0; -} - - - -undefined8 proc_7F034508(void) - -{ - return 0; -} - - - -undefined8 proc_7F034514(int param_1,short param_2) - -{ - short sVar5; - longlong lVar1; - undefined8 uVar2; - int iVar4; - ulonglong uVar3; - - sVar5 = proc_7F032F94(param_1,param_2); - lVar1 = proc_7F02A258(param_1); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - iVar4 = scan_position_data_table_for_normal_object_at_preset(sVar5); - if (iVar4 == 0) { - uVar2 = 0; - } - else { - uVar3 = check_if_object_has_not_been_destroyed(iVar4); - if (uVar3 == 0) { - uVar2 = 0; - } - else { - proc_7F024150(param_1); - uVar2 = 1; - } - } - } - return uVar2; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F03457C(void) - -{ - u32 uVar2; - longlong lVar1; - int iVar3; - int iVar4; - undefined *puVar5; - GUARDdata *guard; - uint uVar6; - float in_f0; - - uVar2 = get_random_value(); - if ((((ulonglong)(longlong)(int)(uVar2 % 0xff) < (ulonglong)(byte)guard->beligerancy) && - (proc_7F032DE4((int)guard), 10.00000000 <= in_f0)) && - (lVar1 = proc_7F02A258((int)guard), lVar1 != 0)) { - iVar3 = something_with_weaponpos_of_guarddata_hand(guard,1); - iVar4 = something_with_weaponpos_of_guarddata_hand(guard,0); - if ((iVar4 != 0) && (*(char *)(*(int *)(iVar4 + 4) + 0x80) == '\x1a')) { - throw_weapon_in_guard_hand(); - return 1; - } - if ((iVar3 != 0) && (*(char *)(*(int *)(iVar3 + 4) + 0x80) == '\x1a')) { - throw_weapon_in_guard_hand(); - return 1; - } - if ((iVar3 != 0) && (iVar4 != 0)) { - return 0; - } - uVar6 = 0; - if (iVar4 != 0) { - uVar6 = 0x10000000; - } - puVar5 = actor_draws_weapon_with_model((undefined2 *)guard,0xc4,0x1a,uVar6); - if (puVar5 != NULL) { - *(uint *)(*(int *)(puVar5 + 4) + 100) = *(uint *)(*(int *)(puVar5 + 4) + 100) | 0x800; - throw_weapon_in_guard_hand(); - return 1; - } - } - return 0; -} - - - -undefined8 proc_7F0346FC(int param_1,int param_2,char param_3) - -{ - undefined4 *puVar2; - undefined8 uVar1; - f32 scale; - - puVar2 = create_new_item_instance_of_model(param_2,(int)param_3 & 0xff); - if (puVar2 == NULL) { - uVar1 = 0; - } - else { - if (puVar2[4] == 0) { - uVar1 = 0; - } - else { - set_obj_instance_controller_scale(puVar2[5],scale); - proc_7F03A5A4(puVar2[4],*(int *)(param_1 + 0x18)); - *(undefined2 *)((int)puVar2 + 0x82) = 0xb4; - proc_7F04BFD0(puVar2[4],1); - uVar1 = 1; - *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 1; - } - } - return uVar1; -} - - - -void proc_7F0347A0(int param_1) - -{ - int iVar1; - ulonglong uVar2; - int iVar3; - int iVar4; - - iVar3 = (&sfx_related)[param_1].field_0x0; - if (iVar3 == 0) { - (&sfx_related)[param_1].field_0x4 = 0; - return; - } - uVar2 = music_related_26(iVar3); - uVar2._4_4_ = (undefined4)uVar2; - if (uVar2 == 0) { - (&sfx_related)[param_1].field_0x4 = 0; - return; - } - if ((float *)(&sfx_related)[param_1].field_0x10 == NULL) { - iVar3 = (&sfx_related)[param_1].field_0x14; - if (iVar3 == 0) { - iVar3 = (&sfx_related)[param_1].field_0x8; - goto LAB_7f034824; - } - if (*(int *)(iVar3 + 0x10) == 0) { - iVar3 = (&sfx_related)[param_1].field_0x8; - goto LAB_7f034824; - } - proc_7F0539E4((float *)(iVar3 + 0x58)); - (&sfx_related)[param_1].field_0xc = iVar3; - } - else { - proc_7F0539E4((float *)(&sfx_related)[param_1].field_0x10); - (&sfx_related)[param_1].field_0xc = uVar2._4_4_; - } - iVar3 = (&sfx_related)[param_1].field_0x8; -LAB_7f034824: - iVar4 = (&sfx_related)[param_1].field_0xc; - if (-1 < iVar3) { - if (clock_timer < iVar3) { - iVar1 = (iVar4 - (&sfx_related)[param_1].field_0x4) * clock_timer; - iVar4 = iVar1 / iVar3 + (&sfx_related)[param_1].field_0x4; - if (iVar3 == 0) { - trap(0x1c00); - } - if ((iVar3 == -1) && (iVar1 == -0x80000000)) { - trap(0x1800); - } - } - (&sfx_related)[param_1].field_0x8 = iVar3 - clock_timer; - } - iVar3 = get_controls_locked_flag(); - if (iVar3 != 0) { - iVar4 = 0; - } - if (iVar4 != (&sfx_related)[param_1].field_0x4) { - music_related_36((longlong)(int)(&sfx_related)[param_1].field_0x0,8,iVar4); - (&sfx_related)[param_1].field_0x4 = iVar4; - } - return; -} - - - -void loop_set_sound_effect_all_slots(void) - -{ - int iVar1; - - iVar1 = 0; - do { - proc_7F0347A0(iVar1); - iVar1 += 1; - } while (iVar1 != 8); - return; -} - - - -int ** proc_7F034924(longlong param_1,short param_2) - -{ - int iVar1; - ulonglong uVar2; - int **ppiVar3; - int iVar4; - sfx_register_struct *data; - - data = NULL; - if ((-1 < param_1) && (iVar4 = (int)param_1, data = NULL, param_1 < 8)) { - iVar1 = (&sfx_related)[iVar4].field_0x0; - if (iVar1 != 0) { - uVar2 = music_related_26(iVar1); - data = NULL; - if (uVar2 != 0) goto LAB_7f03499c; - } - (&sfx_related)[iVar4].field_0xc = 0x7fff; - (&sfx_related)[iVar4].field_0x4 = 0x7fff; - (&sfx_related)[iVar4].field_0x8 = 0xffffffff; - (&sfx_related)[iVar4].field_0x10 = 0; - (&sfx_related)[iVar4].field_0x14 = 0; - data = &sfx_related + iVar4; - } -LAB_7f03499c: - ppiVar3 = play_sfx_a1(ptr_sfx_buf,param_2,(sfxdata *)data); - return ppiVar3; -} - - - -void proc_7F0349BC(longlong param_1) - -{ - if ((-1 < param_1) && (param_1 < 8)) { - music_related_28((&sfx_related)[(int)param_1].field_0x0); - } - return; -} - - - -int get_length_of_action_block(int param_1,int param_2) - -{ - char cVar1; - int iVar2; - int iVar3; - - switch(*(undefined *)(param_1 + param_2)) { - case 0: - return 2; - case 1: - return 2; - case 2: - return 2; - case 3: - return 1; - case 4: - return 1; - case 5: - return 4; - case 6: - return 3; - case 7: - return 1; - case 8: - return 1; - case 9: - return 1; - case 10: - return 9; - case 0xb: - return 2; - case 0xc: - return 1; - case 0xd: - return 1; - case 0xe: - return 2; - case 0xf: - return 2; - case 0x10: - return 2; - case 0x11: - return 2; - case 0x12: - return 2; - case 0x13: - return 2; - case 0x14: - return 6; - case 0x15: - return 6; - case 0x16: - return 6; - case 0x17: - return 6; - case 0x18: - return 4; - case 0x19: - return 4; - case 0x1a: - return 2; - case 0x1b: - return 5; - case 0x1c: - return 3; - case 0x1d: - return 1; - case 0x1e: - return 3; - case 0x1f: - return 3; - case 0x20: - return 2; - case 0x21: - return 1; - case 0x22: - return 1; - case 0x23: - return 2; - case 0x24: - return 4; - case 0x25: - return 1; - case 0x26: - return 1; - case 0x27: - return 2; - case 0x28: - return 2; - case 0x29: - return 2; - case 0x2a: - return 2; - case 0x2b: - return 2; - case 0x2c: - return 3; - case 0x2d: - return 3; - case 0x2e: - return 3; - case 0x2f: - return 2; - case 0x30: - return 3; - case 0x31: - return 3; - case 0x32: - return 2; - case 0x33: - return 1; - case 0x34: - return 3; - case 0x35: - return 3; - case 0x36: - return 2; - case 0x37: - return 2; - case 0x38: - return 2; - case 0x39: - return 2; - case 0x3a: - return 2; - case 0x3b: - return 2; - case 0x3c: - return 2; - case 0x3d: - return 2; - case 0x3e: - return 2; - case 0x3f: - return 2; - case 0x40: - return 3; - case 0x41: - return 2; - case 0x42: - return 2; - case 0x43: - return 2; - case 0x44: - return 4; - case 0x45: - return 2; - case 0x46: - return 2; - case 0x47: - return 3; - case 0x48: - return 3; - case 0x49: - return 3; - case 0x4a: - return 3; - case 0x4b: - return 4; - case 0x4c: - return 4; - case 0x4d: - return 7; - case 0x4e: - return 7; - case 0x4f: - return 5; - case 0x50: - return 5; - case 0x51: - return 4; - case 0x52: - return 6; - case 0x53: - return 6; - case 0x54: - return 5; - case 0x55: - return 4; - case 0x56: - return 3; - case 0x57: - return 3; - case 0x58: - return 4; - case 0x59: - return 3; - case 0x5a: - return 3; - case 0x5b: - return 3; - case 0x5c: - return 3; - case 0x5d: - return 3; - case 0x5e: - return 2; - case 0x5f: - return 2; - case 0x60: - return 2; - case 0x61: - return 2; - case 0x62: - return 2; - case 99: - return 2; - case 100: - return 3; - case 0x65: - return 4; - case 0x66: - return 2; - case 0x67: - return 2; - case 0x68: - return 4; - case 0x69: - return 3; - case 0x6a: - return 3; - case 0x6b: - return 3; - case 0x6c: - return 4; - case 0x6d: - return 3; - case 0x6e: - return 3; - case 0x6f: - return 3; - case 0x70: - return 3; - case 0x71: - return 3; - case 0x72: - return 4; - case 0x73: - return 4; - case 0x74: - return 4; - case 0x75: - return 4; - case 0x76: - return 3; - case 0x77: - return 3; - case 0x78: - return 3; - case 0x79: - return 3; - case 0x7a: - return 3; - case 0x7b: - return 3; - case 0x7c: - return 4; - case 0x7d: - return 4; - case 0x7e: - return 3; - case 0x7f: - return 3; - case 0x80: - return 3; - case 0x81: - return 2; - case 0x82: - return 2; - case 0x83: - return 2; - case 0x84: - return 3; - case 0x85: - return 2; - case 0x86: - return 2; - case 0x87: - return 2; - case 0x88: - return 2; - case 0x89: - return 3; - case 0x8a: - return 2; - case 0x8b: - return 3; - case 0x8c: - return 2; - case 0x8d: - return 2; - case 0x8e: - return 2; - case 0x8f: - return 3; - case 0x90: - return 3; - case 0x91: - return 2; - case 0x92: - return 2; - case 0x93: - return 2; - case 0x94: - return 2; - case 0x95: - return 2; - case 0x96: - return 3; - case 0x97: - return 3; - case 0x98: - return 3; - case 0x99: - return 4; - case 0x9a: - return 5; - case 0x9b: - return 5; - case 0x9c: - return 6; - case 0x9d: - return 5; - case 0x9e: - return 5; - case 0x9f: - return 6; - case 0xa0: - return 6; - case 0xa1: - return 6; - case 0xa2: - return 7; - case 0xa3: - return 6; - case 0xa4: - return 6; - case 0xa5: - return 7; - case 0xa6: - return 6; - case 0xa7: - return 6; - case 0xa8: - return 7; - case 0xa9: - return 2; - case 0xaa: - return 3; - case 0xab: - return 3; - case 0xac: - return 4; - case 0xad: - break; - case 0xae: - return 1; - case 0xaf: - return 1; - case 0xb0: - return 1; - case 0xb1: - return 1; - case 0xb2: - return 2; - case 0xb3: - return 5; - case 0xb4: - return 5; - case 0xb5: - return 1; - case 0xb6: - return 1; - case 0xb7: - return 3; - case 0xb8: - return 1; - case 0xb9: - return 1; - case 0xba: - return 2; - case 0xbb: - return 4; - case 0xbc: - return 4; - case 0xbd: - return 0xc; - case 0xbe: - return 0xb; - case 0xbf: - return 9; - case 0xc0: - return 8; - case 0xc1: - return 5; - case 0xc2: - return 3; - case 0xc3: - return 3; - case 0xc4: - return 4; - case 0xc5: - return 5; - case 0xc6: - return 6; - case 199: - return 6; - case 200: - return 6; - case 0xc9: - return 2; - case 0xca: - return 5; - case 0xcb: - return 2; - case 0xcc: - return 5; - case 0xcd: - return 5; - case 0xce: - return 2; - case 0xcf: - return 2; - case 0xd0: - return 4; - case 0xd1: - return 2; - case 0xd2: - return 1; - case 0xd3: - return 1; - case 0xd4: - return 3; - case 0xd5: - return 6; - case 0xd6: - return 4; - case 0xd7: - return 2; - case 0xd8: - return 1; - case 0xd9: - return 5; - case 0xda: - return 1; - case 0xdb: - return 1; - case 0xdc: - return 2; - case 0xdd: - return 1; - case 0xde: - return 1; - case 0xdf: - return 2; - case 0xe0: - return 3; - case 0xe1: - return 3; - case 0xe2: - return 4; - case 0xe3: - return 2; - case 0xe4: - return 2; - case 0xe5: - return 3; - case 0xe6: - return 5; - case 0xe7: - return 2; - case 0xe8: - return 2; - case 0xe9: - return 1; - case 0xea: - return 1; - case 0xeb: - return 2; - case 0xec: - return 1; - case 0xed: - return 1; - case 0xee: - return 0xd; - case 0xef: - return 1; - case 0xf0: - return 2; - case 0xf1: - return 2; - case 0xf2: - return 3; - case 0xf3: - return 2; - case 0xf4: - return 4; - case 0xf5: - return 2; - case 0xf6: - return 1; - case 0xf7: - return 3; - case 0xf8: - return 3; - case 0xf9: - return 1; - case 0xfa: - return 1; - case 0xfb: - return 1; - case 0xfc: - return 2; - default: - return 1; - } - iVar3 = param_2 + 1; - if (((undefined *)(param_1 + param_2))[1] == '\0') { - iVar3 -= param_2; - } - else { - cVar1 = *(char *)(param_1 + iVar3 + 1); - iVar2 = param_1 + iVar3; - while( true ) { - iVar3 += 1; - if (cVar1 == '\0') break; - cVar1 = *(char *)(iVar2 + 2); - iVar2 = iVar2 + 1; - } - iVar3 -= param_2; - } - return iVar3 + 1; -} - - - -undefined * proc_7F035244(undefined *param_1,undefined4 *param_2) - -{ - struct_13 *psVar1; - undefined *puVar2; - int iVar3; - struct_13 *psVar4; - undefined *puVar5; - - if ((ptr_setup_actions != NULL) && (iVar3 = 0, *(int *)ptr_setup_actions != 0)) { - puVar2 = *(undefined **)ptr_setup_actions; - puVar5 = ptr_setup_actions; - do { - if (param_1 == puVar2) { - *param_2 = 0; - return *(undefined **)(ptr_setup_actions + iVar3 + 4); - } - puVar2 = *(undefined **)(puVar5 + 8); - iVar3 += 8; - puVar5 = puVar5 + 8; - } while (puVar2 != NULL); - } - psVar4 = &stru_8003744C; - puVar2 = (undefined *)stru_8003744C.anonymous_0; - if (stru_8003744C.anonymous_0 != NULL) { - do { - if (param_1 == puVar2) { - *param_2 = 1; - return (undefined *)psVar4->anonymous_1; - } - psVar1 = psVar4 + 1; - psVar4 = psVar4 + 1; - puVar2 = (undefined *)psVar1->anonymous_0; - } while ((undefined *)psVar1->anonymous_0 != NULL); - } - return (undefined *)0xffffffff; -} - - - -int proc_7F0352F0(undefined *param_1,int param_2,char param_3) - -{ - char cVar1; - int iVar2; - undefined4 auStack12 [3]; - - do { - cVar1 = param_1[param_2]; - if (cVar1 == '\x02') { - if (param_3 == (param_1 + param_2)[1]) { - return param_2; - } - } - else { - if (cVar1 == '\x04') { - proc_7F035244(param_1,auStack12); - return 0; - } - } - iVar2 = get_length_of_action_block((int)param_1,param_2); - param_2 += iVar2; - } while( true ); -} - - - -undefined * proc_7F035398(undefined *param_1) - -{ - undefined4 *puVar1; - struct_13 *psVar2; - undefined *puVar3; - - if ((int)param_1 < 0x401) { - psVar2 = &stru_8003744C; - puVar3 = (undefined *)stru_8003744C.anonymous_1; - if (stru_8003744C.anonymous_0 != NULL) { - while( true ) { - if (param_1 == puVar3) { - return (undefined *)psVar2->anonymous_0; - } - if (psVar2[1].anonymous_0 == NULL) break; - puVar3 = (undefined *)psVar2[1].anonymous_1; - psVar2 = psVar2 + 1; - } - } - } - else { - if ((ptr_setup_actions != NULL) && (*(int *)ptr_setup_actions != 0)) { - puVar3 = *(undefined **)(ptr_setup_actions + 4); - puVar1 = (undefined4 *)ptr_setup_actions; - while( true ) { - if (param_1 == puVar3) { - return (undefined *)*puVar1; - } - if (puVar1[2] == 0) break; - puVar3 = (undefined *)puVar1[3]; - puVar1 = puVar1 + 2; - } - } - } - return NULL; -} - - - -int * get_ptr_path_for_pathnum(ulonglong pathnum) - -{ - byte bVar1; - undefined *puVar2; - int iVar3; - - iVar3 = 0; - if (*(int *)ptr_setup_path_sets != 0) { - bVar1 = ptr_setup_path_sets[4]; - puVar2 = ptr_setup_path_sets; - while( true ) { - if (pathnum == (ulonglong)bVar1) { - return (int *)(ptr_setup_path_sets + iVar3 * 8); - } - iVar3 += 1; - if (*(int *)(puVar2 + 8) == 0) break; - bVar1 = puVar2[0xc]; - puVar2 = puVar2 + 8; - } - } - return NULL; -} - - -/* -Unable to decompile 'parse_handle_actionblocks' -Cause: Exception while decompiling 7f035484: process: timeout - -*/ - - -// WARNING: Instruction at (ram,0x7f03a330) overlaps instruction at (ram,0x7f03a32c) -// - -void proc_7F03A240(void) - -{ - byte bVar1; - undefined4 uVar2; - bool bVar3; - int iVar4; - int iVar5; - int *piVar6; - int iVar7; - int iVar8; - uint uVar9; - int iVar10; - float fVar11; - float fVar12; - float fVar13; - - iVar4 = get_ptr_obj_pos_list_current_entry(); - iVar8 = 0; - if (iVar4 != 0) { - bVar1 = *(byte *)(iVar4 + 1); - while( true ) { - if ((bVar1 & 6) == 6) { - (&DAT_80071620)[iVar8] = iVar4; - iVar8 += 1; - iVar4 = *(int *)(iVar4 + 0x24); - } - else { - iVar4 = *(int *)(iVar4 + 0x24); - } - if (iVar4 == 0) break; - bVar1 = *(byte *)(iVar4 + 1); - } - } - DAT_80071df4 = iVar8; - (&DAT_80071620)[iVar8] = 0; - DAT_80071df0 = &DAT_80071620 + iVar8; - iVar4 = 0; - if (iVar8 < 1) { - return; - } - bVar3 = 0 < iVar8; - do { - iVar7 = -1; - if (bVar3) { - uVar9 = iVar8 - iVar4 & 3; - if (uVar9 == 0) { - iVar10 = iVar4 << 2; - fVar12 = -4294967296.00000000; - iVar5 = iVar4; - } - else { - piVar6 = &DAT_80071620 + iVar4; - fVar13 = -4294967296.00000000; - iVar5 = iVar4; - iVar10 = iVar7; - do { - fVar12 = *(float *)(*piVar6 + 0x18); - iVar7 = iVar5; - if (fVar12 <= fVar13) { - fVar12 = fVar13; - iVar7 = iVar10; - } - iVar5 += 1; - piVar6 = piVar6 + 1; - fVar13 = fVar12; - iVar10 = iVar7; - } while (uVar9 + iVar4 != iVar5); - iVar10 = iVar5 * 4; - if (iVar5 == iVar8) goto LAB_7f03a3c4; - } - piVar6 = (int *)((int)&DAT_80071620 + iVar10); - do { - fVar13 = *(float *)(*piVar6 + 0x18); - if (fVar12 < fVar13) { - iVar10 = piVar6[1]; - iVar7 = iVar5; - } - else { - iVar10 = piVar6[1]; - fVar13 = fVar12; - } - fVar11 = *(float *)(iVar10 + 0x18); - if (fVar13 < fVar11) { - iVar7 = iVar5 + 1; - iVar10 = piVar6[2]; - } - else { - iVar10 = piVar6[2]; - fVar11 = fVar13; - } - fVar12 = *(float *)(iVar10 + 0x18); - if (fVar11 < fVar12) { - iVar7 = iVar5 + 2; - iVar10 = piVar6[3]; - } - else { - iVar10 = piVar6[3]; - fVar12 = fVar11; - } - if (fVar12 < *(float *)(iVar10 + 0x18)) { - iVar7 = iVar5 + 3; - fVar12 = *(float *)(iVar10 + 0x18); - } - iVar5 += 4; - piVar6 = piVar6 + 4; - } while (iVar5 != iVar8); - } -LAB_7f03a3c4: - if (-1 < iVar7) { - uVar2 = (&DAT_80071620)[iVar4]; - (&DAT_80071620)[iVar4] = (&DAT_80071620)[iVar7]; - (&DAT_80071620)[iVar7] = uVar2; - } - iVar4 += 1; - if (iVar4 == iVar8) { - return; - } - bVar3 = iVar4 < iVar8; - } while( true ); -} - - - -void set_stateflag_0x04_for_posdata(int param_1) - -{ - *(byte *)(param_1 + 1) = *(byte *)(param_1 + 1) | 4; - return; -} - - - -void unset_stateflag_0x04_for_posdata(int param_1) - -{ - *(byte *)(param_1 + 1) = *(byte *)(param_1 + 1) & 0xfb; - return; -} - - - -object_standard * get_ptr_obj_pos_list_current_entry(void) - -{ - return ptr_obj_pos_list_current_entry; -} - - - -object_standard * remove_last_obj_pos_data_entry(void) - -{ - int *piVar1; - object_standard *poVar2; - - poVar2 = ptr_obj_pos_list_final_entry; - if (ptr_obj_pos_list_final_entry == NULL) { - return NULL; - } - piVar1 = &ptr_obj_pos_list_final_entry->runtime_MATRIX3; - ptr_obj_pos_list_final_entry = (object_standard *)ptr_obj_pos_list_final_entry->runtime_MATRIX3; - *piVar1 = 0; - poVar2->runtime_MATRIX4 = 0; - poVar2->runtime_MATRIX1 = 0; - poVar2->runtime_MATRIX2 = 0; - *(undefined *)((int)&poVar2->extrascale + 1) = 0; - poVar2->runtime_ptr_obj_instance_controller = 0; - *(undefined2 *)&poVar2->hidden2 = 0; - *(undefined *)&poVar2->runtime_MATRIX5 = 0xff; - return poVar2; -} - - - -void set_last_obj_pos_data(object_standard *param_1) - -{ - param_1->runtime_MATRIX4 = 0; - param_1->runtime_ptr_obj_instance_controller = 0; - *(object_standard **)¶m_1->runtime_MATRIX3 = ptr_obj_pos_list_final_entry; - ptr_obj_pos_list_final_entry = param_1; - return; -} - - - -void set_current_objposdata_plus_0x28(object_standard *param_1) - -{ - if (ptr_obj_pos_list_current_entry != NULL) { - *(object_standard **)&ptr_obj_pos_list_current_entry->runtime_MATRIX4 = param_1; - param_1->runtime_MATRIX4 = 0; - *(object_standard **)¶m_1->runtime_MATRIX3 = ptr_obj_pos_list_current_entry; - ptr_obj_pos_list_current_entry = param_1; - return; - } - param_1->runtime_MATRIX3 = 0; - param_1->runtime_MATRIX4 = 0; - ptr_obj_pos_list_current_entry = param_1; - ptr_obj_pos_list_first_entry = param_1; - return; -} - - - -void proc_7F03A4F0(int param_1) - -{ - if (ptr_obj_pos_list_first_entry == NULL) { - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - ptr_obj_pos_list_current_entry = (object_standard *)param_1; - ptr_obj_pos_list_first_entry = (object_standard *)param_1; - return; - } - ptr_obj_pos_list_first_entry->runtime_MATRIX3 = param_1; - *(undefined4 *)(param_1 + 0x24) = 0; - *(object_standard **)(param_1 + 0x28) = ptr_obj_pos_list_first_entry; - ptr_obj_pos_list_first_entry = (object_standard *)param_1; - return; -} - - - -void proc_7F03A538(int param_1) - -{ - int iVar1; - - if ((object_standard *)param_1 == ptr_obj_pos_list_current_entry) { - ptr_obj_pos_list_current_entry = *(object_standard **)(param_1 + 0x24); - } - if ((object_standard *)param_1 == ptr_obj_pos_list_first_entry) { - ptr_obj_pos_list_first_entry = *(object_standard **)(param_1 + 0x28); - iVar1 = *(int *)(param_1 + 0x24); - } - else { - iVar1 = *(int *)(param_1 + 0x24); - } - if (iVar1 == 0) { - iVar1 = *(int *)(param_1 + 0x28); - } - else { - *(undefined4 *)(iVar1 + 0x28) = *(undefined4 *)(param_1 + 0x28); - iVar1 = *(int *)(param_1 + 0x28); - } - if (iVar1 == 0) { - *(undefined4 *)(param_1 + 0x24) = 0; - } - else { - *(undefined4 *)(iVar1 + 0x24) = *(undefined4 *)(param_1 + 0x24); - *(undefined4 *)(param_1 + 0x24) = 0; - } - *(undefined4 *)(param_1 + 0x28) = 0; - return; -} - - - -void proc_7F03A5A4(int param_1,int param_2) - -{ - *(int *)(param_1 + 0x1c) = param_2; - if (*(int *)(param_2 + 0x20) == 0) { - *(undefined4 *)(param_1 + 0x24) = 0; - } - else { - *(int *)(*(int *)(param_2 + 0x20) + 0x28) = param_1; - *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_2 + 0x20); - } - *(undefined4 *)(param_1 + 0x28) = 0; - *(undefined4 *)(param_1 + 0x14) = 0; - *(int *)(param_2 + 0x20) = param_1; - return; -} - - - -void proc_7F03A5D0(int param_1) - -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 0x1c); - if (iVar1 != 0) { - if (param_1 == *(int *)(iVar1 + 0x20)) { - *(undefined4 *)(iVar1 + 0x20) = *(undefined4 *)(param_1 + 0x24); - iVar1 = *(int *)(param_1 + 0x24); - } - else { - iVar1 = *(int *)(param_1 + 0x24); - } - if (iVar1 == 0) { - iVar1 = *(int *)(param_1 + 0x28); - } - else { - *(undefined4 *)(iVar1 + 0x28) = *(undefined4 *)(param_1 + 0x28); - iVar1 = *(int *)(param_1 + 0x28); - } - if (iVar1 == 0) { - *(undefined4 *)(param_1 + 0x1c) = 0; - } - else { - *(undefined4 *)(iVar1 + 0x24) = *(undefined4 *)(param_1 + 0x24); - *(undefined4 *)(param_1 + 0x1c) = 0; - } - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - } - return; -} - - - -undefined8 proc_7F03A62C(undefined8 param_1,char *param_2,longlong param_3) - -{ - char cVar1; - uint uVar2; - - uVar2 = (uint)param_3; - cVar1 = *param_2; - if (cVar1 == '\x03') { - param_1 = proc_7F021BFC(param_2,(uint *)param_1,uVar2); - } - else { - if (((cVar1 == '\x01') || (cVar1 == '\x04')) || (cVar1 == '\x02')) { - param_1 = proc_7F04B150(param_2,(uint *)param_1,uVar2); - } - else { - if (cVar1 == '\a') { - param_1 = proc_7F09D5A0(param_2,param_1,param_3); - } - else { - if (cVar1 == '\b') { - param_1 = proc_7F09F03C(param_2,param_1,param_3); - } - else { - if (cVar1 == '\x06') { - param_1 = proc_7F08BCC0(param_2,param_1,uVar2); - } - } - } - } - } - return param_1; -} - - - -longlong proc_7F03A6F4(longlong param_1,uint param_2,longlong param_3) - -{ - char *pcVar1; - uint uVar2; - bool bVar3; - int iVar5; - ulonglong uVar4; - uint *puVar6; - char **ppcVar7; - uint auStack40 [10]; - - puVar6 = (uint *)param_1; - iVar5 = get_stage_num(); - if (iVar5 == 0x36) { - if (param_3 == 0) { - return param_1; - } - if (param_3 == 2) { - param_3 = 0; - } - } - if ((param_3 == 0) || (param_3 == 2)) { - ppcVar7 = DAT_80071df0 + -1; - if ((char **)((int)&DAT_8007161c + 3) < ppcVar7) { - pcVar1 = *ppcVar7; - do { - if (pcVar1 != NULL) { - bVar3 = false; - if ((param_3 == 0) && ((pcVar1[1] & 0x21U) == 0)) { - bVar3 = true; - } - else { - if ((param_3 == 2) && ((pcVar1[1] & 0x21U) == 1)) { - bVar3 = true; - } - } - if (bVar3) { - bVar3 = false; - proc_7F03CB8C(pcVar1,auStack40); - puVar6 = auStack40; - uVar2 = auStack40[0]; - while (-1 < (int)uVar2) { - uVar4 = proc_7F0B5E50(uVar2); - if (uVar4 != 0) { - if (param_2 == *puVar6) { - bVar3 = true; - } - break; - } - uVar2 = puVar6[1]; - puVar6 = puVar6 + 1; - } - if (bVar3) { - param_1 = proc_7F03A62C(param_1,pcVar1,0); - } - } - } - puVar6 = (uint *)param_1; - ppcVar7 = ppcVar7 + -1; - if (ppcVar7 < &DAT_80071620) break; - pcVar1 = *ppcVar7; - } while( true ); - } - } - else { - ppcVar7 = (char **)&DAT_80071620; - if (&DAT_80071620 < DAT_80071df0) { - pcVar1 = DAT_80071620; - do { - bVar3 = false; - if (pcVar1 != NULL) { - proc_7F03CB8C(pcVar1,auStack40); - puVar6 = auStack40; - uVar2 = auStack40[0]; - while (-1 < (int)uVar2) { - uVar4 = proc_7F0B5E50(uVar2); - if (uVar4 != 0) { - if (param_2 == *puVar6) { - bVar3 = true; - } - break; - } - uVar2 = puVar6[1]; - puVar6 = puVar6 + 1; - } - if (bVar3) { - if ((pcVar1[1] & 0x20U) != 0) { - param_1 = proc_7F03A62C(param_1,pcVar1,0); - } - param_1 = proc_7F03A62C(param_1,pcVar1,1); - } - } - puVar6 = (uint *)param_1; - ppcVar7 = ppcVar7 + 1; - if (DAT_80071df0 <= ppcVar7) break; - pcVar1 = *ppcVar7; - } while( true ); - } - } - puVar6 = proc_7F0B4FB4(puVar6); - return (longlong)(int)puVar6; -} - - - -undefined8 proc_7F03A97C(int param_1,float *param_2,float *param_3) - -{ - int iVar1; - longlong lVar2; - undefined8 uVar3; - int local_18; - int local_14; - int local_10; - int local_c; - int local_8; - int local_4; - - iVar1 = param_1 * 0x50; - if ((&DAT_80041440)[param_1 * 0x14] == 0) { - uVar3 = 0; - } - else { - local_18 = (int)*(float *)(&DAT_8004144c + iVar1); - local_14 = (int)*(float *)(&DAT_80041450 + iVar1); - local_10 = (int)*(float *)(&DAT_80041454 + iVar1); - local_c = (int)*(float *)(&DAT_80041458 + iVar1); - local_8 = (int)*(float *)(&DAT_8004145c + iVar1); - local_4 = (int)*(float *)(&DAT_80041460 + iVar1); - lVar2 = proc_7F0B6CEC(param_2,param_3,&local_18,&local_c); - if (lVar2 == 0) { - uVar3 = 0; - } - else { - uVar3 = 1; - } - } - return uVar3; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F03AA44(void) - -{ - char cVar1; - int iVar3; - longlong lVar2; - float *in_a1_lo; - float *in_a2_lo; - int in_a3_lo; - int iVar4; - char *pcVar5; - f32 fVar6; - f32 fVar7; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fVar6 = proc_7F0B483C(); - fVar7 = proc_7F0B4878(); - iVar4 = 1; - fStack24 = *in_a2_lo - *in_a1_lo; - fStack20 = in_a2_lo[1] - in_a1_lo[1]; - fStack4 = (float)fVar7 * (float)fVar6; - fStack16 = in_a2_lo[2] - in_a1_lo[2]; - fStack12 = *in_a1_lo * fStack4; - fStack8 = in_a1_lo[1] * fStack4; - fStack4 = in_a1_lo[2] * fStack4; - iVar3 = get_max_num_rooms(); - pcVar5 = (char *)(in_a3_lo + 1); - if (1 < iVar3) { - cVar1 = *pcVar5; - while( true ) { - if ((cVar1 == '\0') && (lVar2 = proc_7F03A97C(iVar4,&fStack12,&fStack24), lVar2 == 0)) { - *pcVar5 = '\x01'; - } - iVar4 += 1; - pcVar5 = pcVar5 + 1; - iVar3 = get_max_num_rooms(); - if (iVar3 <= iVar4) break; - cVar1 = *pcVar5; - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -uint proc_7F03AB58(void) - -{ - uint uVar1; - int iVar3; - longlong lVar2; - float *in_a0_lo; - float *in_a1_lo; - float *in_a2_lo; - float *in_a3_lo; - float *pfVar4; - float *pfVar5; - float *pfVar6; - uint *puVar7; - uint *puVar8; - f32 fVar9; - float fVar10; - float fVar11; - int in_stack_00000010; - float *in_stack_00000014; - uint in_stack_00000018; - float fStack460; - float fStack456; - float fStack452; - float afStack412 [3]; - uint auStack400 [100]; - - fVar9 = proc_7F0B4830(); - iVar3 = proc_7F0B8E98(auStack400,100); - puVar7 = auStack400; - if (iVar3 < 1) { - return in_stack_00000018; - } - puVar8 = puVar7 + iVar3; - do { - if (*(char *)(auStack400[0] + in_stack_00000010) == '\0') { - *(char *)(auStack400[0] + in_stack_00000010) = '\x01'; - lVar2 = proc_7F03A97C(*puVar7,in_a3_lo,in_a2_lo); - if ((lVar2 != 0) && (iVar3 = proc_7F0B7A78(in_a0_lo,in_a1_lo,*puVar7,&fStack460), iVar3 != 0)) - { - fStack460 = fStack460 * (float)fVar9; - fStack456 = fStack456 * (float)fVar9; - uVar1 = *puVar7; - fStack452 = fStack452 * (float)fVar9; - pfVar4 = &fStack460; - pfVar6 = in_stack_00000014; - if (0 < (int)in_stack_00000018) { - fVar10 = *in_stack_00000014; - fVar11 = *in_a0_lo; - if (((fVar10 < fVar11) || (fStack460 < fVar11)) || (fVar10 <= fStack460)) { - if (((fVar11 < fVar10) || (fVar11 < fStack460)) || (fStack460 <= fVar10)) - goto LAB_7f03adb4; - fVar10 = in_stack_00000014[1]; - } - else { - fVar10 = in_stack_00000014[1]; - } - fVar11 = in_a0_lo[1]; - if (((fVar10 < fVar11) || (fStack456 < fVar11)) || (fVar10 <= fStack456)) { - if (((fVar11 < fVar10) || (fVar11 < fStack456)) || (fStack456 <= fVar10)) - goto LAB_7f03adb4; - fVar10 = in_stack_00000014[2]; - } - else { - fVar10 = in_stack_00000014[2]; - } - fVar11 = in_a0_lo[2]; - if ((((fVar10 < fVar11) || (fStack452 < fVar11)) || - (pfVar4 = &fStack460, pfVar6 = in_stack_00000014, fVar10 <= fStack452)) && - (((fVar11 < fVar10 || (fVar11 < fStack452)) || - (pfVar4 = &fStack460, pfVar6 = in_stack_00000014, fStack452 <= fVar10)))) - goto LAB_7f03adb4; - } - do { - pfVar5 = pfVar4 + 3; - *pfVar6 = *pfVar4; - pfVar6[1] = pfVar4[1]; - pfVar6[2] = pfVar4[2]; - pfVar4 = pfVar5; - pfVar6 = pfVar6 + 3; - in_stack_00000018 = uVar1; - } while (pfVar5 != afStack412); - } - } -LAB_7f03adb4: - puVar7 = puVar7 + 1; - if (puVar8 <= puVar7) { - return in_stack_00000018; - } - auStack400[0] = *puVar7; - } while( true ); -} - - - -ulonglong proc_7F03ADF4(byte param_1,float *param_2,float *param_3,float *param_4,float *param_5, - int param_6,float *param_7) - -{ - byte bVar1; - longlong lVar2; - int iVar3; - byte *pbVar4; - int iVar5; - int iVar6; - int iVar7; - int iVar8; - byte *pbVar9; - int aiStack660 [101]; - byte abStack256 [256]; - - iVar6 = 1; - iVar8 = 0; - pbVar9 = abStack256; - abStack256[0] = param_1; - do { - bVar1 = *pbVar9; - if (*(char *)(param_6 + (uint)bVar1) == '\0') { - *(char *)(param_6 + (uint)bVar1) = '\x01'; - lVar2 = proc_7F03A97C((uint)bVar1,param_5,param_4); - if ((lVar2 != 0) && (iVar3 = proc_7F0B7A78(param_2,param_3,(uint)bVar1,param_7), iVar3 != 0)) - { - return (ulonglong)bVar1; - } - } - iVar7 = 0; - iVar3 = proc_7F0B8EFC((ulonglong)bVar1,aiStack660,100); - if (0 < iVar3) { - do { - iVar5 = 0; - if (0 < iVar6) { - pbVar4 = abStack256; - do { - if ((ulonglong)*pbVar4 == (longlong)aiStack660[iVar7]) break; - iVar5 += 1; - pbVar4 = pbVar4 + 1; - } while (iVar5 != iVar6); - } - if (iVar5 == iVar6) { - pbVar4 = abStack256 + iVar6; - iVar6 += 1; - *pbVar4 = (byte)aiStack660[iVar7]; - } - iVar7 += 1; - } while (iVar7 < iVar3); - } - iVar8 += 1; - pbVar9 = pbVar9 + 1; - if (iVar6 <= iVar8) { - return 0; - } - } while( true ); -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -int proc_7F03AF5C(void) - -{ - char cVar1; - int iVar3; - longlong lVar2; - float *in_a1_lo; - float *in_a2_lo; - float *in_a3_lo; - int iVar4; - char *pcVar5; - int iVar6; - f32 fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float *in_stack_00000010; - int in_stack_00000014; - float *in_stack_00000018; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - undefined2 uStack16; - short sStack14; - - fVar11 = 4294967296.00000000; - iVar6 = 0; - fVar7 = proc_7F0B4830(); - iVar4 = 1; - iVar3 = get_max_num_rooms(); - if (1 < iVar3) { - pcVar5 = (char *)(in_stack_00000014 + 1); - cVar1 = *pcVar5; - while( true ) { - if (cVar1 == '\0') { - *pcVar5 = '\x01'; - lVar2 = proc_7F03A97C(iVar4,in_stack_00000010,in_a3_lo); - if ((lVar2 != 0) && (iVar3 = proc_7F0B7A78(in_a1_lo,in_a2_lo,iVar4,&fStack56), iVar3 != 0)) - { - fVar8 = fStack56 * (float)fVar7 - *in_a1_lo; - fVar9 = fStack52 * (float)fVar7 - in_a1_lo[1]; - fVar10 = fStack48 * (float)fVar7 - in_a1_lo[2]; - fVar8 = fVar8 * fVar8 + fVar9 * fVar9 + fVar10 * fVar10; - lVar2 = check_if_imageID_is_light((longlong)sStack14); - if (lVar2 != 0) { - fVar8 = fVar8 - 4.00000000; - } - if (fVar8 < fVar11) { - *in_stack_00000018 = fStack56; - in_stack_00000018[1] = fStack52; - in_stack_00000018[2] = fStack48; - in_stack_00000018[3] = fStack44; - in_stack_00000018[4] = fStack40; - in_stack_00000018[5] = fStack36; - in_stack_00000018[6] = fStack32; - in_stack_00000018[7] = fStack28; - in_stack_00000018[8] = fStack24; - *(short *)((int)in_stack_00000018 + 0x2a) = sStack14; - in_stack_00000018[9] = fStack20; - *(undefined2 *)(in_stack_00000018 + 10) = uStack16; - fVar11 = fVar8; - iVar6 = iVar4; - } - } - } - iVar4 += 1; - pcVar5 = pcVar5 + 1; - iVar3 = get_max_num_rooms(); - if (iVar3 <= iVar4) break; - cVar1 = *pcVar5; - } - } - return iVar6; -} - - - -// WARNING: Instruction at (ram,0x7f03b764) overlaps instruction at (ram,0x7f03b760) -// -// WARNING: Could not reconcile some variable overlaps - -void proc_7F03B15C(undefined8 param_1) - -{ - char *pcVar1; - hit_header **pphVar2; - bool bVar3; - int iVar6; - xyzpoint *pxVar7; - char cVar9; - ulonglong uVar4; - u32 uVar8; - longlong lVar5; - int *piVar10; - undefined8 extraout_a2; - int iVar12; - undefined8 extraout_a2_00; - undefined8 extraout_a2_01; - undefined8 uVar11; - undefined8 extraout_a2_02; - undefined8 extraout_a2_03; - undefined8 extraout_a2_04; - undefined8 extraout_a3; - undefined8 extraout_a3_00; - undefined8 extraout_a3_01; - undefined8 uVar13; - undefined8 extraout_a3_02; - undefined8 extraout_a3_03; - undefined8 extraout_a3_04; - float fVar14; - byte bVar15; - float *pfVar16; - char **ppcVar17; - f32 fVar18; - f32 fVar19; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - float extraout_f14_00; - char cStack1320; - undefined uStack1319; - float fStack1292; - float fStack1288; - float fStack1284; - float fStack1280; - float fStack1276; - float fStack1272; - float fStack1268; - int aiStack1260 [64]; - int aiStack1004 [2]; - float fStack996; - float fStack992; - float fStack988; - float fStack984; - float fStack980; - float fStack976; - ITEM_IDS IStack972; - float fStack968; - float fStack964; - float fStack960; - float fStack956; - float fStack952; - float fStack948; - float fStack944; - char *pcStack936; - undefined4 uStack932; - undefined4 uStack928; - undefined4 uStack856; - undefined4 uStack852; - undefined4 uStack848; - float afStack836 [160]; - float afStack196 [14]; - float fStack140; - float fStack136; - float fStack132; - int aiStack128 [2]; - float fStack120; - float fStack116; - float fStack112; - float fStack108; - float fStack104; - float fStack100; - float fStack96; - float afStack92 [6]; - int iStack68; - short sStack64; - short sStack62; - int iStack56; - undefined4 uStack52; - float fStack48; - float fStack44; - float fStack40; - int iStack36; - int iStack28; - float fStack24; - float fStack20; - float fStack16; - int iStack12; - - iStack12 = 0; - iStack28 = 0; - iStack36 = 0; - uStack52 = 0; - iVar6 = get_curplayer_positiondata(); - aiStack128[0] = *(int *)(iVar6 + 0x14); - aiStack1004[0] = 0; - proc_7F0681CC(); - IStack972 = get_item_in_hand(param_1._4_4_); - pcStack936 = NULL; - uStack932 = 0; - uStack928 = 0; - uStack856 = 0; - uStack852 = 0; - uStack848 = 0; - fStack944 = 4294967296.00000000; - pfVar16 = afStack836; - do { - pfVar16 = pfVar16 + 0x50; - pfVar16[0x23] = 0.00000000; - pfVar16[0x24] = 0.00000000; - pfVar16[0x25] = 0.00000000; - pfVar16[0x37] = 0.00000000; - pfVar16[0x38] = 0.00000000; - pfVar16[0x39] = 0.00000000; - pfVar16[0x4b] = 0.00000000; - pfVar16[0x4c] = 0.00000000; - pfVar16[0x4d] = 0.00000000; - pfVar16[0xf] = 0.00000000; - pfVar16[0x10] = 0.00000000; - pfVar16[0x11] = 0.00000000; - pfVar16 = pfVar16; - } while (pfVar16 != afStack196); - fStack968 = fStack996; - fStack964 = fStack992; - fStack960 = fStack988; - pfVar16 = (float *)proc_7F078444(); - proc_7F058474(pfVar16,&fStack968); - fStack956 = fStack984; - fStack952 = fStack980; - fStack948 = fStack976; - pfVar16 = (float *)proc_7F078444(); - lVar5 = (longlong)(int)pfVar16; - proc_7F0583D8(pfVar16,&fStack956); - fStack140 = fStack956 * 65536.00000000 + fStack968; - fStack136 = fStack952 * 65536.00000000 + fStack964; - fStack132 = fStack948 * 65536.00000000 + fStack960; - proc_7F0B0BE4(aiStack128,extraout_f12,extraout_f14,*(float *)(iVar6 + 8),*(float *)(iVar6 + 0x10)) - ; - uVar11 = extraout_a2; - uVar13 = extraout_a3; - if (lVar5 != 0) { - fVar18 = proc_7F0B483C(); - fVar19 = proc_7F0B4878(); - fStack1292 = (float)fVar19 * (float)fVar18; - pxVar7 = get_BONDdata_position(); - lVar5 = (longlong)(int)pxVar7; - proc_7F0B1CC4(); - proc_7F0B0BE4(aiStack128,extraout_f12_00,extraout_f14_00,fStack968,fStack960); - if (lVar5 == 0) { - proc_7F02624C(&fStack968,&fStack956,&fStack24); - iStack12 = 1; - } - else { - fStack24 = fStack140; - fStack20 = fStack136; - fStack16 = fStack132; - } - fStack1288 = fStack24 - pxVar7->x; - fStack1284 = fStack20 - pxVar7->y; - fStack1280 = fStack16 - pxVar7->z; - fStack1276 = pxVar7->x * fStack1292; - fStack1272 = pxVar7->y * fStack1292; - iStack28 = aiStack128[0]; - fStack1268 = pxVar7->z * fStack1292; - uVar4 = proc_7F0B2FD8(aiStack128[0]); - piVar10 = aiStack1260; - do { - piVar10 = piVar10 + 1; - *(undefined *)((int)piVar10 + 1) = 0; - *(undefined *)((int)piVar10 + 2) = 0; - *(undefined *)((int)piVar10 + 3) = 0; - *(undefined *)piVar10 = 0; - piVar10 = piVar10; - } while (piVar10 != aiStack1004); - iVar12 = (int)uVar4; - iVar6 = proc_7F0B7A78((float *)pxVar7,&fStack24,iVar12,&fStack104); - if (iVar6 != 0) { - uStack52 = iVar12; - } - *(undefined *)((int)aiStack1260 + iVar12) = 1; - if (uStack52 < 1) { - if (ptr_bgdata_portals->offset_portal == NULL) { - iVar6 = get_curplayer_positiondata(); - proc_7F0B2FD8(*(int *)(iVar6 + 0x14)); - uStack52 = proc_7F03AF5C(); - } - else { - iVar6 = get_curplayer_positiondata(); - uVar4 = proc_7F0B2FD8(*(int *)(iVar6 + 0x14)); - uVar4 = proc_7F03ADF4((byte)uVar4,(float *)pxVar7,&fStack24,&fStack1288,&fStack1276, - (int)aiStack1260,&fStack104); - uStack52 = (int)uVar4; - } - } - if (0 < uStack52) { - fVar18 = proc_7F0B4830(); - fStack104 = fStack104 * (float)fVar18; - fStack100 = fStack100 * (float)fVar18; - fStack96 = fStack96 * (float)fVar18; - } - lVar5 = proc_7F03AB58(); - if (lVar5 < 1) { - iStack56 = -1; - fStack120 = fStack140; - fStack116 = fStack136; - fStack112 = fStack132; - uStack52 = iVar12; - } - else { - iStack36 = 1; - iStack56 = (int)sStack62; - fStack48 = fStack104; - fStack120 = fStack104; - fStack44 = fStack100; - fStack116 = fStack100; - fStack40 = fStack96; - fStack112 = fStack96; - uStack52 = (int)lVar5; - } - if ((iStack12 != 0) || (uVar11 = extraout_a2_00, uVar13 = extraout_a3_00, iStack36 != 0)) { - pfVar16 = (float *)proc_7F0783C4(); - proc_7F058474(pfVar16,&fStack120); - fStack944 = -fStack112; - uVar11 = extraout_a2_01; - uVar13 = extraout_a3_01; - fStack108 = fStack944; - } - } - if ((IStack972 == ITEM_WATCHLASER) && (300.00000000 < fStack944)) { - fStack944 = 300.00000000; - } - ppcVar17 = (char **)(DAT_80071df0 + -4); - if (ppcVar17 <= (char **)((int)&DAT_8007161c + 3)) { -LAB_7f03b6a8: - pcVar1 = pcStack936; - pfVar16 = &fStack996; - while( true ) { - if (pcVar1 != NULL) { - cVar9 = *pcVar1; - if ((cVar9 == '\x03') || (cVar9 == '\x06')) { - proc_7F022980(&fStack996,pfVar16 + 0xe); - fVar14 = pfVar16[0x21]; - } - else { - if (((cVar9 == '\x01') || (cVar9 == '\x04')) || (cVar9 == '\x02')) { - proc_7F04EA68(&fStack996,pfVar16 + 0xe); - fVar14 = pfVar16[0x21]; - } - else { - fVar14 = pfVar16[0x21]; - } - } - if ((fVar14 != 0.00000000) && - (aiStack1004[0] = aiStack1004[0] + 1, uVar4 = proc_7F05E038(IStack972), - (longlong)uVar4 <= (longlong)aiStack1004[0])) { - iStack36 = 0; - iStack12 = 0; - } - } - if (pfVar16 + 0x14 == afStack196) break; - pcVar1 = (char *)pfVar16[0x23]; - pfVar16 = pfVar16 + 0x14; - } - if ((iStack36 != 0) || (iStack12 != 0)) { - pfVar16 = NULL; - bVar3 = true; - if ((IStack972 == ITEM_WATCHLASER) && (300.00000000 < fStack108)) { - bVar3 = false; - } - if (iStack36 == 0) { - if (iStack12 != 0) { - pfVar16 = &fStack24; - fStack24 = fStack956 * 65536.00000000 + fStack968; - fStack20 = fStack952 * 65536.00000000 + fStack964; - fStack16 = fStack948 * 65536.00000000 + fStack960; - } - } - else { - pphVar2 = hit_header_array[0]; - if (-1 < sStack62) { - pphVar2 = hit_header_array[(uint)(byte)image_entries[(int)sStack62].flag1 & 0xf]; - } - if (bVar3) { - if ((0 < *(short *)((int)pphVar2 + 10)) && (IStack972 != ITEM_WATCHLASER)) { - uVar8 = get_random_value(); - if (*(short *)((int)pphVar2 + 10) == 0) { - trap(0x1c00); - } - proc_7F0A108C(&fStack48,afStack92, - (ushort)*(byte *)((int)&pphVar2[1]->pImageIDArray + - uVar8 % (int)*(short *)((int)pphVar2 + 10)), - uStack52._2_2_,0,-1,0); - } - lVar5 = check_if_imageID_is_light((longlong)sStack62); - if (lVar5 != 0) { - proc_7F0BBE0C((longlong)iStack68,(longlong)sStack64,(short)uStack52); - } - } - pfVar16 = &fStack48; - } - if (pfVar16 != NULL) { - if (bVar3) { - recall_joy2_hits_edit_flag(IStack972,pfVar16,iStack56); - bVar15 = image_entries[iStack56].flag1 & 0xf; - if ((bVar15 != 5) && (bVar15 != 6)) { - cStack1320 = (char)uStack52; - uStack1319 = 0xff; - uVar8 = get_cur_playernum(); - proc_7F09C250(0,pfVar16,iStack28,1,0,(char)uVar8,&cStack1320,0); - } - } - *pfVar16 = *pfVar16 - fStack956 * 26.00000000; - pfVar16[1] = pfVar16[1] - fStack952 * 26.00000000; - pfVar16[2] = pfVar16[2] - fStack948 * 26.00000000; - proc_7F067B4C(pfVar16); - if (bVar3) { - proc_7F0A3E1C(pfVar16,1,extraout_f12_01,0); - } - } - } - return; - } - pcVar1 = *ppcVar17; - do { - extraout_a3_02._4_4_ = (undefined4)uVar13; - extraout_a2_02._4_4_ = (undefined4)uVar11; - if (pcVar1 != NULL) { - if (*pcVar1 == '\x03') { -code_r0x7f03b650: - proc_7F022648((int)pcVar1,&fStack996,extraout_a2_02._4_4_,extraout_a3_02._4_4_); - uVar11 = extraout_a2_03; - uVar13 = extraout_a3_03; - } - else { - if (*pcVar1 == '\x06') { - if (*(int *)(pcVar1 + 4) == 0) { - cVar9 = *pcVar1; - } - else { - lVar5 = proc_7F09B15C((int)pcVar1); - uVar8 = get_cur_playernum(); - extraout_a3_02._4_4_ = (undefined4)extraout_a3_02; - extraout_a2_02._4_4_ = (undefined4)extraout_a2_02; - if (uVar8 != (u32)lVar5) goto code_r0x7f03b650; - cVar9 = *pcVar1; - uVar11 = extraout_a2_02; - uVar13 = extraout_a3_02; - } - } - else { - cVar9 = *pcVar1; - } - if (((cVar9 == '\x01') || (cVar9 == '\x04')) || (cVar9 == '\x02')) { - proc_7F04E9BC((int)pcVar1,&fStack996); - uVar11 = extraout_a2_04; - uVar13 = extraout_a3_04; - } - } - } - ppcVar17 = ppcVar17 + -1; - if (ppcVar17 < &DAT_80071620) goto LAB_7f03b6a8; - pcVar1 = *ppcVar17; - } while( true ); -} - - - -void proc_7F03B9C0(int param_1,undefined4 param_2,float param_3,float param_4,undefined4 param_5, - undefined4 *param_6,undefined4 *param_7,undefined4 param_8,undefined4 param_9, - int param_10,int param_11) - -{ - int iVar2; - ulonglong uVar1; - int iVar3; - int iVar4; - int iVar5; - int iVar6; - undefined4 *puVar7; - undefined4 *puVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - int in_stack_00000028; - - if (param_11 == 0) goto LAB_7f03bc24; - iVar5 = 0; - iVar3 = 0; - fVar9 = 0.00000000; - fVar11 = 0.00000000; - iVar4 = 0; - iVar2 = param_1; - do { - fVar10 = fVar9; - fVar12 = fVar11; - iVar6 = iVar4; - if ((*(int *)(iVar2 + 0x3c) != 0) && - (fVar10 = fVar9, fVar12 = fVar11, iVar6 = iVar4, *(int *)(iVar2 + 0x84) != 0)) { - iVar5 += 1; - fVar10 = *(float *)(iVar2 + 0x38); - fVar12 = fVar9; - iVar6 = iVar3; - if (*(float *)(iVar2 + 0x38) <= fVar9) { - fVar10 = fVar9; - fVar12 = fVar11; - iVar6 = iVar4; - } - } - iVar3 += 1; - iVar2 += 0x50; - fVar9 = fVar10; - fVar11 = fVar12; - iVar4 = iVar6; - } while (iVar3 < 10); - uVar1 = proc_7F05E038(*(int *)(param_1 + 0x18)); - if ((longlong)iVar5 < (longlong)uVar1) { - uVar1 = proc_7F05E038(*(int *)(param_1 + 0x18)); - if (((longlong)(iVar5 + 1) == uVar1) && (param_4 < *(float *)(param_1 + 0x34))) { - *(float *)(param_1 + 0x34) = param_4; - } - goto LAB_7f03bc24; - } - *(undefined4 *)(param_1 + iVar6 * 0x50 + 0x3c) = 0; - *(float *)(param_1 + 0x34) = fVar12; - if (fVar12 < param_4) { - *(float *)(param_1 + 0x34) = param_4; - } - iVar4 = 0xa0; - if (*(int *)(param_1 + 0x3c) == 0) { -LAB_7f03bad8: - iVar2 = *(int *)(param_1 + 0x8c); - } - else { - if (*(int *)(param_1 + 0x84) == 0) { - if (fVar12 < *(float *)(param_1 + 0x38)) { - *(undefined4 *)(param_1 + 0x3c) = 0; - goto LAB_7f03bad8; - } - iVar2 = *(int *)(param_1 + 0x8c); - } - else { - iVar2 = *(int *)(param_1 + 0x8c); - } - } - if (iVar2 == 0) { - iVar2 = param_1 + 0xa0; - } - else { - if (*(int *)(param_1 + 0xd4) == 0) { - if (fVar12 < *(float *)(param_1 + 0x88)) { - *(undefined4 *)(param_1 + 0x8c) = 0; - iVar2 = param_1 + 0xa0; - } - else { - iVar2 = param_1 + 0xa0; - } - } - else { - iVar2 = param_1 + 0xa0; - } - } - do { - iVar4 += 0x140; - if (*(int *)(iVar2 + 0x3c) == 0) { - iVar3 = *(int *)(iVar2 + 0x8c); - } - else { - if (*(int *)(iVar2 + 0x84) == 0) { - if (fVar12 < *(float *)(iVar2 + 0x38)) { - *(undefined4 *)(iVar2 + 0x3c) = 0; - iVar3 = *(int *)(iVar2 + 0x8c); - } - else { - iVar3 = *(int *)(iVar2 + 0x8c); - } - } - else { - iVar3 = *(int *)(iVar2 + 0x8c); - } - } - if (iVar3 == 0) { - iVar3 = *(int *)(iVar2 + 0xdc); - } - else { - if (*(int *)(iVar2 + 0xd4) == 0) { - if (fVar12 < *(float *)(iVar2 + 0x88)) { - *(undefined4 *)(iVar2 + 0x8c) = 0; - iVar3 = *(int *)(iVar2 + 0xdc); - } - else { - iVar3 = *(int *)(iVar2 + 0xdc); - } - } - else { - iVar3 = *(int *)(iVar2 + 0xdc); - } - } - if (iVar3 == 0) { - iVar3 = *(int *)(iVar2 + 300); - } - else { - if (*(int *)(iVar2 + 0x124) == 0) { - if (fVar12 < *(float *)(iVar2 + 0xd8)) { - *(undefined4 *)(iVar2 + 0xdc) = 0; - iVar3 = *(int *)(iVar2 + 300); - } - else { - iVar3 = *(int *)(iVar2 + 300); - } - } - else { - iVar3 = *(int *)(iVar2 + 300); - } - } - if (((iVar3 != 0) && (*(int *)(iVar2 + 0x174) == 0)) && (fVar12 < *(float *)(iVar2 + 0x128))) { - *(undefined4 *)(iVar2 + 300) = 0; - } - iVar2 += 0x140; - } while (iVar4 != 800); -LAB_7f03bc24: - if (((in_stack_00000028 != 0) && (*(int *)(param_1 + 0x18) != 0x12)) && - (*(int *)(param_1 + 0x18) != 0x14)) { - if (*(int *)(param_1 + 0x3c) == 0) { - iVar4 = *(int *)(param_1 + 0x8c); - } - else { - if (param_4 < *(float *)(param_1 + 0x38)) { - *(undefined4 *)(param_1 + 0x3c) = 0; - iVar4 = *(int *)(param_1 + 0x8c); - } - else { - iVar4 = *(int *)(param_1 + 0x8c); - } - } - if ((iVar4 != 0) && (param_4 < *(float *)(param_1 + 0x88))) { - *(undefined4 *)(param_1 + 0x8c) = 0; - } - iVar2 = 0xa0; - iVar4 = param_1 + 0xa0; - do { - iVar2 += 0x140; - if (*(int *)(iVar4 + 0x3c) == 0) { - iVar3 = *(int *)(iVar4 + 0x8c); - } - else { - if (param_4 < *(float *)(iVar4 + 0x38)) { - *(undefined4 *)(iVar4 + 0x3c) = 0; - iVar3 = *(int *)(iVar4 + 0x8c); - } - else { - iVar3 = *(int *)(iVar4 + 0x8c); - } - } - if (iVar3 == 0) { - iVar3 = *(int *)(iVar4 + 0xdc); - } - else { - if (param_4 < *(float *)(iVar4 + 0x88)) { - *(undefined4 *)(iVar4 + 0x8c) = 0; - iVar3 = *(int *)(iVar4 + 0xdc); - } - else { - iVar3 = *(int *)(iVar4 + 0xdc); - } - } - if (iVar3 == 0) { - iVar3 = *(int *)(iVar4 + 300); - } - else { - if (param_4 < *(float *)(iVar4 + 0xd8)) { - *(undefined4 *)(iVar4 + 0xdc) = 0; - iVar3 = *(int *)(iVar4 + 300); - } - else { - iVar3 = *(int *)(iVar4 + 300); - } - } - if ((iVar3 != 0) && (param_4 < *(float *)(iVar4 + 0x128))) { - *(undefined4 *)(iVar4 + 300) = 0; - } - iVar4 += 0x140; - } while (iVar2 != 800); - *(float *)(param_1 + 0x34) = param_4; - } - iVar4 = 0; - do { - iVar4 += 0x50; - if (*(int *)(param_1 + 0x3c) == 0) { - *(float *)(param_1 + 0x38) = param_4; - *(undefined4 *)(param_1 + 0x3c) = param_2; - *(undefined4 *)(param_1 + 0x40) = param_5; - *(undefined4 **)(param_1 + 0x44) = param_6; - puVar7 = param_7; - iVar4 = param_1; - do { - puVar8 = puVar7 + 3; - *(undefined4 *)(iVar4 + 0x48) = *puVar7; - *(undefined4 *)(iVar4 + 0x4c) = puVar7[1]; - *(undefined4 *)(iVar4 + 0x50) = puVar7[2]; - puVar7 = puVar8; - iVar4 = iVar4 + 0xc; - } while (puVar8 != param_7 + 0xc); - *(undefined4 *)(param_1 + 0x78) = param_8; - *(undefined4 *)(param_1 + 0x7c) = param_9; - *(int *)(param_1 + 0x80) = param_10; - *(int *)(param_1 + 0x84) = param_11; - return; - } - param_1 += 0x50; - } while (iVar4 != 800); - return; -} - - - -// WARNING: Instruction at (ram,0x7f03bec8) overlaps instruction at (ram,0x7f03bec4) -// - -void proc_7F03BDEC(undefined4 param_1,longlong param_2) - -{ - char *pcVar1; - int iVar3; - longlong lVar2; - u32 uVar4; - int iVar5; - int iVar6; - float *pfVar7; - char **ppcVar8; - f32 extraout_f12; - f32 extraout_f14; - float fVar9; - float afStack80 [6]; - u32 auStack56 [2]; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - float afStack28 [4]; - int iStack12; - - iStack12 = 0; - iVar3 = get_curplayer_positiondata(); - proc_7F089780((int)pPlayer); - ppcVar8 = (char **)(DAT_80071df0 + -4); - if (ppcVar8 <= (char **)((int)&DAT_8007161c + 3)) { -LAB_7f03c094: - if ((iStack12 == 0) && (param_2 == 1)) { - play_sfx_a1(ptr_sfx_buf,0x69,NULL); - } - return; - } - pcVar1 = *ppcVar8; - do { - if ((pcVar1 != NULL) && (*(float *)(pcVar1 + 0x18) < 500.00000000)) { - if (*pcVar1 == '\x03') { -code_r0x7f03becc: - fVar9 = 50.00000000; - iVar6 = *(int *)(pcVar1 + 4); - iVar5 = proc_7F05D078(); - if (iVar5 == 0x11) { - fVar9 = 100.00000000; - } - proc_7F03F748(*(int *)(iVar6 + 0x1c),afStack28,&fStack32,0); - if (0.00000000 <= afStack28[0]) { - if ((fStack32 <= 0.00000000) && - (proc_7F03F748(*(int *)(iVar6 + 0x1c),&fStack36,&fStack40,1), 0.00000000 <= fStack36)) - { - if ((fStack40 <= 0.00000000) && - ((proc_7F03F748(*(int *)(iVar6 + 0x1c),&fStack44,&fStack48,2), fStack48 <= 0.00000000 - && (-fVar9 <= fStack44)))) { - auStack56[0] = *(u32 *)(iVar3 + 0x14); - iVar6 = proc_7F0B0E24(auStack56,extraout_f12,extraout_f14,*(f32 *)(iVar3 + 8)); - if ((iVar6 != 0) && (auStack56[0] == *(u32 *)(pcVar1 + 0x14))) { - iVar6 = proc_7F0799F0(); - if (iVar6 != 1) { - proc_7F0799F0(); - } - proc_7F0681CC(); - pfVar7 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar7,afStack80); - lVar2 = proc_7F02727C(); - if (lVar2 != 0) { - iStack12 = 1; - recall_joy2_hits_edit_detail_edit_flag(); - } - } - } - } - } - } - else { - if ((*pcVar1 == '\x06') && (*(int *)(pcVar1 + 4) != 0)) { - lVar2 = proc_7F09B15C((int)pcVar1); - uVar4 = get_cur_playernum(); - if ((longlong)(int)uVar4 != lVar2) goto code_r0x7f03becc; - } - } - } - ppcVar8 = ppcVar8 + -1; - if (ppcVar8 < &DAT_80071620) goto LAB_7f03c094; - pcVar1 = *ppcVar8; - } while( true ); -} - - - -void proc_7F03C0F0(undefined8 param_1) - -{ - longlong lVar1; - ITEM_IDS weapon; - int hand; - - hand = (int)param_1; - lVar1 = get_hands_firing_status(hand); - if (lVar1 != 0) { - weapon = get_item_in_hand(hand); - lVar1 = (longlong)(int)weapon; - if (lVar1 == 0x1e) { - trigger_remote_mine_detonation(); - } - else { - if ((((((lVar1 != 0x18) && (lVar1 != 0x19)) && (lVar1 != 0x1a)) && - ((lVar1 != 3 && (lVar1 != 0x1d)))) && - (((lVar1 != 0x1c && ((lVar1 != 0x1b && (lVar1 != 0x23)))) && (lVar1 != 0x24)))) && - ((((lVar1 != 0x21 && (lVar1 != 0x2f)) && (lVar1 != 0x30)) && - (((lVar1 != 0x3d && (lVar1 != 0x58)) && (lVar1 != 0x22)))))) { - if (lVar1 == 0x20) { - proc_7F05FB64(hand); - } - else { - if ((lVar1 == 1) || (lVar1 == 2)) { - proc_7F03BDEC(hand,lVar1); - } - else { - if ((lVar1 == 0xf) || (lVar1 == 0x10)) { - inc_curplayer_hitcount_with_weapon(weapon,0); - hand = 0; - do { - proc_7F03B15C(param_1); - hand += 1; - } while (hand != 5); - } - else { - if (lVar1 == 0x28) { - proc_7F057898(); - } - else { - if (lVar1 == 0x3c) { - pPlayer->field_1270 = 0; - } - else { - inc_curplayer_hitcount_with_weapon(weapon,0); - proc_7F03B15C(param_1); - } - } - } - } - } - } - } - } - return; -} - - - -void proc_7F03C294(void) - -{ - proc_7F03C0F0(0); - proc_7F03C0F0(1); - return; -} - - - -void proc_7F03C2BC(char *param_1,longlong param_2) - -{ - uint uVar1; - int iVar2; - - if (param_2 != 1) { - if (param_2 == 2) { - proc_7F03E18C((int)param_1); - proc_7F03A538((int)param_1); - unset_stateflag_0x04_for_posdata((int)param_1); - return; - } - if (param_2 != 4) { - return; - } - proc_7F03E18C((int)param_1); - proc_7F03A538((int)param_1); - unset_stateflag_0x04_for_posdata((int)param_1); - proc_7F04C044((int)param_1); - proc_7F040CF0((int)param_1); - iVar2 = get_curplayer_positiondata(); - proc_7F03A5A4((int)param_1,iVar2); - return; - } - if (*param_1 == '\x04') { - iVar2 = *(int *)(param_1 + 4); - } - else { - if (*param_1 != '\x01') goto LAB_7f03c34c; - iVar2 = *(int *)(param_1 + 4); - } - if ((*(byte *)(iVar2 + 2) & 4) != 0) { - *(undefined2 *)(param_1 + 2) = 0x4b0; - uVar1 = *(uint *)(iVar2 + 100); - *(uint *)(iVar2 + 100) = uVar1 | 0x800; - *(uint *)(iVar2 + 100) = uVar1 & 0xfffffffb | 0x800; - *(byte *)(iVar2 + 2) = *(byte *)(iVar2 + 2) & 0x7f; - *(undefined4 *)(iVar2 + 0x70) = 0; - proc_7F03E18C((int)param_1); - unset_stateflag_0x04_for_posdata((int)param_1); - return; - } -LAB_7f03c34c: - proc_7F03E18C((int)param_1); - proc_7F03A538((int)param_1); - unset_stateflag_0x04_for_posdata((int)param_1); - set_last_obj_pos_data((object_standard *)param_1); - return; -} - - - -undefined4 proc_7F03C3FC(void) - -{ - char cVar1; - char *pcVar2; - int iVar3; - longlong lVar4; - char **ppcVar5; - - DAT_80071df8 = 0; - ppcVar5 = (char **)(DAT_80071df0 + -4); - lVar4 = 1; - if (ppcVar5 <= (char **)((int)&DAT_8007161c + 3)) { - DAT_80071df8 = 0; - return 0; - } - pcVar2 = *ppcVar5; - do { - if (pcVar2 != NULL) { - cVar1 = *pcVar2; - if (cVar1 != '\x03') { - if ((cVar1 == '\x01') || (cVar1 == '\x04')) { - lVar4 = proc_7F04EF58((int)pcVar2); - } - else { - if (cVar1 == '\x02') { - iVar3 = proc_7F055804(pcVar2); - lVar4 = (longlong)iVar3; - } - } - } - if (lVar4 == 0) { - return DAT_80071df8; - } - } - ppcVar5 = ppcVar5 + -1; - if (ppcVar5 < &DAT_80071620) { - return DAT_80071df8; - } - pcVar2 = *ppcVar5; - } while( true ); -} - - - -undefined8 proc_7F03C4F0(void) - -{ - char *pcVar2; - int iVar3; - undefined8 uVar1; - longlong lVar4; - - pcVar2 = (char *)proc_7F03C3FC(); - lVar4 = 0; - if (pcVar2 == NULL) { - uVar1 = 1; - } - else { - if (true) { - switch(*pcVar2) { - case '\x01': - case '\x04': - iVar3 = proc_7F04F170(pcVar2); - lVar4 = (longlong)iVar3; - break; - case '\x02': - lVar4 = proc_7F055C40((int)pcVar2); - } - } - proc_7F03C2BC(pcVar2,lVar4); - uVar1 = 0; - } - return uVar1; -} - - - -undefined4 proc_7F03C574(int param_1) - -{ - int iVar1; - ulonglong uVar2; - longlong lVar3; - Player **ppPVar4; - float fVar5; - float fVar6; - float fVar7; - - uVar2 = get_num_players(); - lVar3 = 0; - if (0 < (longlong)uVar2) { - ppPVar4 = &ptr_BONDdata_p1; - do { - iVar1 = (*ppPVar4)->position_data_pointer; - fVar5 = *(float *)(iVar1 + 8) - *(float *)(param_1 + 8); - fVar6 = *(float *)(iVar1 + 0xc) - *(float *)(param_1 + 0xc); - fVar7 = *(float *)(iVar1 + 0x10) - *(float *)(param_1 + 0x10); - fVar5 = sqrtf(fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7); - lVar3 = (longlong)((int)lVar3 + 1); - if (fVar5 < 400.00000000) { - return 0; - } - ppPVar4 = ppPVar4 + 1; - } while (lVar3 < (longlong)uVar2); - } - return 1; -} - - - -void handle_mp_respawn_and_some_things(void) - -{ - byte bVar1; - short sVar2; - int iVar3; - bool bVar4; - char *pcVar5; - char *pcVar6; - char *pcVar7; - char *pcVar10; - short sVar14; - int iVar11; - int iVar12; - int **ppiVar13; - longlong lVar8; - ulonglong uVar9; - longlong lVar15; - char cVar16; - f32 scale; - - proc_7F03291C(); - pcVar10 = (char *)get_ptr_obj_pos_list_current_entry(); - pcVar7 = pcVar10; - do { - pcVar6 = pcVar7; - pcVar5 = pcVar10; - if (pcVar5 == NULL) { - return; - } - pcVar10 = *(char **)(pcVar5 + 0x24); - lVar15 = 0; - cVar16 = *pcVar5; - if (cVar16 == '\x03') { - iVar3 = *(int *)(pcVar5 + 4); - proc_7F062B00((char *)(iVar3 + 0x180)); - proc_7F062B00((char *)(iVar3 + 0x1ac)); - } - else { - if (((cVar16 == '\x01') || (cVar16 == '\x04')) || (cVar16 == '\x02')) { - sVar2 = *(short *)(pcVar5 + 2); - iVar3 = *(int *)(pcVar5 + 4); - bVar4 = false; - if (sVar2 < 1) { -LAB_7f03c8e4: - cVar16 = *(char *)(iVar3 + 3); - } - else { - *(short *)(pcVar5 + 2) = sVar2 - (short)clock_timer; - if (*(short *)(pcVar5 + 2) < 0x3c) { - if ((0x3b < sVar2) && (iVar11 = proc_7F03C574((int)pcVar5), iVar11 == 0)) { - *(short *)(pcVar5 + 2) = *(short *)(pcVar5 + 2) + 0x3c; - } - sVar14 = *(short *)(pcVar5 + 2); - } - else { - sVar14 = *(short *)(pcVar5 + 2); - } - if (sVar14 < 1) { - *(undefined2 *)(pcVar5 + 2) = 0; - if ((*(byte *)(iVar3 + 2) & 0x10) == 0) { - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) & 0xffffefff; - } - else { - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 0x1000; - } - goto LAB_7f03c8e4; - } - if (sVar14 < 0x3c) { - if (0x3b < sVar2) { - if (*(float *)(iVar3 + 0x70) == 0.00000000) { - if ((*(byte *)(iVar3 + 2) & 0x80) != 0) { - bVar1 = *(byte *)(iVar3 + 2); - goto LAB_7f03c868; - } - if ((*(uint *)(iVar3 + 8) & 0x8000) == 0) { - set_stateflag_0x04_for_posdata((int)pcVar5); - proc_7F03E134(pcVar5); - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) & 0xfffff7ff; - goto LAB_7f03c8ac; - } - proc_7F03E18C((int)pcVar5); - proc_7F03A538((int)pcVar5); - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) & 0xfffff7ff; - iVar11 = proc_7F056BA8((int)pcVar5); - sVar2 = *(short *)(iVar3 + 6); - iVar12 = proc_7F0BDF04(); - iVar11 = proc_7F056EA0((longlong)iVar12,iVar11 + (int)sVar2); - if (iVar11 == 0) { - cVar16 = *(char *)(iVar3 + 3); - } - else { - if (*(int *)(iVar11 + 0x10) != 0) { - set_obj_instance_controller_scale(*(int *)(iVar3 + 0x14),scale); - proc_7F03A5A4(*(int *)(iVar3 + 0x10),*(int *)(iVar11 + 0x10)); - bVar4 = true; - goto LAB_7f03c8ac; - } - cVar16 = *(char *)(iVar3 + 3); - } - } - else { - bVar1 = *(byte *)(iVar3 + 2); -LAB_7f03c868: - if ((bVar1 & 8) == 0) { - *(uint *)(iVar3 + 8) = *(uint *)(iVar3 + 8) & 0xfffffeff; - } - else { - *(uint *)(iVar3 + 8) = *(uint *)(iVar3 + 8) | 0x100; - } - *(undefined4 *)(iVar3 + 0x70) = 0; - *(byte *)(iVar3 + 2) = *(byte *)(iVar3 + 2) & 0x7f; - proc_7F050DE8(*(int *)(iVar3 + 0x14)); -LAB_7f03c8ac: - cVar16 = *(char *)(iVar3 + 3); - } - if (cVar16 == '\x15') { - *(undefined4 *)(iVar3 + 0x84) = *(undefined4 *)(iVar3 + 0x80); - } - if (!bVar4) { - ppiVar13 = play_sfx_a1(ptr_sfx_buf,0x52,NULL); - proc_7F053A10((int)ppiVar13,(float *)(pcVar5 + 8)); - } - goto LAB_7f03c8e4; - } - cVar16 = *(char *)(iVar3 + 3); - } - else { - cVar16 = *(char *)(iVar3 + 3); - } - } - if (cVar16 == '\r') { - proc_7F062B00(*(char **)(*(int *)(pcVar5 + 4) + 0xcc)); - } - } - else { - if (cVar16 == '\a') { - lVar15 = proc_7F09CEE8(pcVar5); - } - else { - if (cVar16 == '\b') { - lVar15 = proc_7F09E8AC(pcVar5); - } - else { - if (cVar16 == '\x06') { - lVar8 = proc_7F09B15C((int)pcVar5); - proc_7F062B00((char *)&(&ptr_BONDdata_p1)[(int)lVar8]->field_A54); - lVar8 = proc_7F09B15C((int)pcVar5); - proc_7F062B00((char *)&(&ptr_BONDdata_p1)[(int)lVar8]->field_DFC); - if ((*(int *)(pcVar5 + 4) != 0) && (uVar9 = get_num_players(), 1 < (longlong)uVar9)) { - iVar3 = *(int *)(pcVar5 + 4); - proc_7F062B00((char *)(iVar3 + 0x180)); - proc_7F062B00((char *)(iVar3 + 0x1ac)); - } - } - } - } - } - } - pcVar7 = pcVar10; - if (lVar15 != 5) { - pcVar10 = *(char **)(pcVar6 + 0x24); - if (lVar15 == 3) { - proc_7F03A538((int)pcVar5); - proc_7F03A4F0((int)pcVar5); - pcVar7 = pcVar10; - if (pcVar10 == NULL) { - pcVar10 = pcVar5; - pcVar7 = pcVar6; - } - } - else { - proc_7F03C2BC(pcVar5,lVar15); - pcVar7 = pcVar10; - } - } - } while( true ); -} - - - -void determing_type_of_object_and_detection(void) - -{ - byte bVar1; - longlong lVar2; - int iVar4; - ulonglong uVar3; - int iVar5; - u32 uVar6; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 extraout_a2_lo_03; - undefined4 extraout_a2_lo_04; - undefined4 uVar7; - undefined4 extraout_a2_lo_05; - undefined4 extraout_a2_lo_06; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - undefined4 extraout_a3_lo_02; - undefined4 extraout_a3_lo_03; - undefined4 extraout_a3_lo_04; - undefined4 uVar8; - undefined4 extraout_a3_lo_05; - undefined4 extraout_a3_lo_06; - byte *pbVar9; - longlong lVar10; - - iVar4 = get_ptr_obj_pos_list_current_entry(); - lVar10 = (longlong)iVar4; - uVar7 = extraout_a2_lo; - uVar8 = extraout_a3_lo; - while (lVar2 = lVar10, lVar2 != 0) { - pbVar9 = (byte *)lVar2; - bVar1 = *pbVar9; - uVar3 = (ulonglong)bVar1; - iVar4 = *(int *)(pbVar9 + 0x24); - if (bVar1 == 3) { - uVar3 = proc_7F020EF0((char *)pbVar9,0,uVar7,uVar8); - uVar7 = extraout_a2_lo_00; - uVar8 = extraout_a3_lo_00; - } - else { - if (((bVar1 == 1) || (bVar1 == 4)) || (bVar1 == 2)) { - object_interaction(lVar2); - uVar7 = extraout_a2_lo_01; - uVar8 = extraout_a3_lo_01; - } - else { - if (bVar1 == 7) { - uVar3 = proc_7F09D4EC((int)pbVar9); - uVar7 = extraout_a2_lo_02; - uVar8 = extraout_a3_lo_02; - } - else { - if (bVar1 == 8) { - uVar3 = proc_7F09EF9C((int)pbVar9); - uVar7 = extraout_a2_lo_03; - uVar8 = extraout_a3_lo_03; - } - else { - uVar3 = 0; - if (bVar1 == 6) { - iVar5 = proc_7F08B0F0((char *)pbVar9); - uVar3 = SEXT48(iVar5); - uVar7 = extraout_a2_lo_04; - uVar8 = extraout_a3_lo_04; - } - } - } - } - } - lVar10 = (longlong)iVar4; - if (uVar3 != 5) { - lVar10 = (longlong)*(int *)(pbVar9 + 0x24); - if (uVar3 == 3) { - proc_7F03A538((int)pbVar9); - proc_7F03A4F0((int)pbVar9); - uVar7 = extraout_a2_lo_05; - uVar8 = extraout_a3_lo_05; - if (lVar10 == 0) { - lVar10 = lVar2; - uVar7 = extraout_a2_lo_05; - uVar8 = extraout_a3_lo_05; - } - } - else { - proc_7F03C2BC((char *)pbVar9,uVar3); - uVar7 = extraout_a2_lo_06; - uVar8 = extraout_a3_lo_06; - } - } - } - uVar6 = get_cur_playernum(); - iVar4 = proc_7F09B4D8(uVar6); - if (iVar4 == 0) { - proc_7F0565F0(); - loop_set_sound_effect_all_slots(); - proc_7F03E4F0(); - } - return; -} - - - -void proc_7F03CB8C(char *param_1,uint *param_2) - -{ - char cVar1; - byte bVar2; - int iVar3; - uint *puVar4; - - if (*(int *)(param_1 + 0x14) == 0) { - *param_2 = 0xffffffff; - return; - } - if (*param_1 == '\x06') { - if (*(int *)(param_1 + 4) == 0) { - bVar2 = *(byte *)(*(int *)(param_1 + 0x14) + 3); - param_2[1] = 0xffffffff; - *param_2 = (uint)bVar2; - return; - } - cVar1 = param_1[0x2c]; - } - else { - cVar1 = param_1[0x2c]; - } - iVar3 = 0; - if (cVar1 != -1) { - bVar2 = param_1[0x2c]; - puVar4 = param_2; - do { - *puVar4 = (uint)bVar2; - bVar2 = param_1[0x2d]; - iVar3 += 1; - puVar4 = puVar4 + 1; - param_1 = param_1 + 1; - } while (bVar2 != 0xff); - } - param_2[iVar3] = 0xffffffff; - return; -} - - - -void proc_7F03CC20(char *param_1,int **param_2,undefined4 *param_3,float *param_4,float *param_5) - -{ - char cVar1; - - *param_2 = NULL; - *param_3 = 0; - cVar1 = *param_1; - if (cVar1 == '\x03') { - proc_7F02308C((int)param_1,(int *)param_2,param_3,param_4,param_5); - } - else { - if (cVar1 == '\x06') { - proc_7F08A0B0((int)param_1,param_2,param_3,param_4,param_5); - } - else { - if ((cVar1 != '\x04') && ((cVar1 == '\x01' || (cVar1 == '\x02')))) { - proc_7F04F244((int)param_1,(int *)param_2,param_3,param_4,param_5); - } - } - } - return; -} - - - -void proc_7F03CCB0(char *param_1,int **param_2,undefined4 *param_3) - -{ - float fStack8; - float fStack4; - - proc_7F03CC20(param_1,param_2,param_3,&fStack4,&fStack8); - return; -} - - - -// WARNING: Instruction at (ram,0x7f03cd9c) overlaps instruction at (ram,0x7f03cd98) -// - -undefined8 proc_7F03CCD8(float *param_1,float *param_2,uint param_3) - -{ - float *pfVar1; - float *pfVar2; - longlong lVar3; - uint uVar4; - uint uVar5; - float *pfVar6; - int iVar7; - float fVar8; - - lVar3 = -1; - if ((int)param_3 < 1) { - return 0; - } - uVar4 = 0; - if (0 < (int)param_3) { - if ((param_3 & 1) == 0) { - iVar7 = 0; - } - else { - if (param_3 == 0) { - trap(0x1c00); - } - if ((param_3 == 0xffffffff) && (false)) { - trap(0x1800); - } - uVar4 = 1; - fVar8 = ((param_2 + (1 % param_3) * 2)[1] - param_2[1]) * (*param_1 - *param_2) - - (param_1[2] - param_2[1]) * (param_2[(1 % param_3) * 2] - *param_2); - if ((fVar8 != 0.00000000) && (lVar3 = 0, 0.00000000 < fVar8)) { - lVar3 = 1; - } - iVar7 = 8; - if (param_3 == 1) { - return 1; - } - } - pfVar6 = (float *)((int)param_2 + iVar7); - do { - if (param_3 == 0) { - trap(0x1c00); - } - if ((param_3 == 0xffffffff) && (uVar4 + 1 == -0x80000000)) { - trap(0x1800); - } - uVar5 = uVar4 + 2; - fVar8 = ((param_2 + ((int)(uVar4 + 1) % param_3) * 2)[1] - pfVar6[1]) * (*param_1 - *pfVar6) - - (param_1[2] - pfVar6[1]) * (param_2[((int)(uVar4 + 1) % param_3) * 2] - *pfVar6); - if (fVar8 != 0.00000000) { - if ((uVar4 == 0) || (lVar3 < 0)) { - lVar3 = 0; - if (0.00000000 < fVar8) { - lVar3 = 1; - } - } - else { - if ((lVar3 != 0) && (fVar8 < 0.00000000)) { - return 0; - } - if ((lVar3 == 0) && (0.00000000 < fVar8)) { - return 0; - } - } - } - pfVar1 = pfVar6 + 3; - pfVar2 = pfVar6 + 2; - if (param_3 == 0) { - trap(0x1c00); - } - if ((param_3 == 0xffffffff) && (uVar5 == 0x80000000)) { - trap(0x1800); - } - pfVar6 = pfVar6 + 4; - fVar8 = ((param_2 + ((int)uVar5 % param_3) * 2)[1] - *pfVar1) * (*param_1 - *pfVar2) - - (param_1[2] - *pfVar1) * (param_2[((int)uVar5 % param_3) * 2] - *pfVar2); - if (fVar8 != 0.00000000) { - if ((uVar4 == 0xffffffff) || (lVar3 < 0)) { - lVar3 = 0; - if (0.00000000 < fVar8) { - lVar3 = 1; - } - } - else { - if ((lVar3 != 0) && (fVar8 < 0.00000000)) { - return 0; - } - if ((lVar3 == 0) && (0.00000000 < fVar8)) { - return 0; - } - } - } - uVar4 = uVar5; - } while (uVar5 != param_3); - } - return 1; -} - - - -void proc_7F03CF88(char *param_1,undefined4 *param_2,float *param_3,undefined4 *param_4) - -{ - if (*param_1 == '\x03') { - proc_7F023160((int)param_1,param_2,param_3,param_4); - } - else { - if (*param_1 == '\x06') { - proc_7F08A274((int)param_1,param_2,param_3,param_4); - } - else { - *param_2 = 0; - } - } - return; -} - - - -ulonglong proc_7F03CFE8(byte *param_1) - -{ - byte bVar1; - ulonglong uVar2; - longlong lVar3; - int iVar4; - - bVar1 = *param_1; - uVar2 = (ulonglong)bVar1; - if (bVar1 == 3) { - iVar4 = proc_7F023188((int)param_1); - uVar2 = SEXT48(iVar4); - } - else { - if (bVar1 == 6) { - lVar3 = proc_7F09B15C((int)param_1); - iVar4 = proc_7F089778((int)(&ptr_BONDdata_p1)[(int)lVar3]); - uVar2 = SEXT48(iVar4); - } - } - return uVar2; -} - - - -void proc_7F03D058(char *param_1,longlong param_2) - -{ - char cVar1; - - cVar1 = *param_1; - if (cVar1 == '\x03') { - set_or_unset_GUARDdata_flag(*(GUARDdata **)(param_1 + 4),(int)param_2); - } - else { - if (cVar1 == '\x06') { - proc_7F08A03C((int)param_1,(int)param_2); - } - else { - if (((cVar1 == '\x01') || (cVar1 == '\x02')) || (cVar1 == '\x04')) { - proc_7F04F218((int)param_1,param_2); - } - } - } - return; -} - - - -void proc_7F03D0D4(void) - -{ - object_standard *poVar1; - int iVar3; - longlong lVar2; - longlong lVar4; - longlong lVar5; - - iVar3 = get_intank_flag(); - if ((iVar3 == 0) && (disable_player_pickups_flag == 0)) { - iVar3 = get_ptr_obj_pos_list_current_entry(); - lVar2 = (longlong)iVar3; - lVar5 = lVar2; - while (lVar5 != 0) { - poVar1 = (object_standard *)lVar5; - lVar4 = 0; - if (*(short *)&poVar1->hidden2 < 1) { - if (true) { - switch(*(undefined *)&poVar1->extrascale) { - case 1: - lVar2 = object_collectability_routine(poVar1); - lVar4 = lVar2; - break; - case 4: - redirect_object_collectability_routines(); - lVar4 = lVar2; - } - } - iVar3 = poVar1->runtime_MATRIX3; - } - else { - iVar3 = poVar1->runtime_MATRIX3; - } - lVar5 = (longlong)iVar3; - proc_7F03C2BC((char *)poVar1,lVar4); - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -float proc_7F03D188(void) - -{ - bool bVar1; - uint uVar2; - longlong lVar3; - ulonglong uVar4; - int iVar5; - int in_a0_lo; - float *in_a1_lo; - float *in_a2_lo; - undefined4 *in_a3_lo; - f32 fVar6; - f32 fVar7; - float fVar8; - f32 extraout_f12; - f32 extraout_f14; - float *in_stack_00000010; - u32 uStack96; - int iStack92; - float fStack88; - uint uStack84; - float fStack80; - float fStack76; - float fStack72; - float fStack68; - float fStack64; - undefined4 uStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float afStack36 [2]; - float afStack28 [2]; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fVar6 = getPlayer_c_screentop(); - fVar7 = getPlayer_c_screenheight(); - fStack64 = (float)fVar7 * flt_800529C0 + (float)fVar6; - fVar6 = getPlayer_c_screentop(); - fVar7 = getPlayer_c_screenheight(); - fStack68 = (float)fVar7 * flt_800529C4 + (float)fVar6; - fVar6 = getPlayer_c_screenleft(); - fVar7 = getPlayer_c_screenwidth(); - fStack72 = (float)fVar7 * 0.25000000 + (float)fVar6; - fVar6 = getPlayer_c_screenleft(); - fVar7 = getPlayer_c_screenwidth(); - fStack80 = -2.00000000; - fStack76 = (float)fVar7 * 0.75000000 + (float)fVar6; - proc_7F077FF4(in_a1_lo,&fStack8); - fStack20 = *in_a2_lo; - fStack16 = in_a1_lo[1]; - fStack12 = in_a1_lo[2]; - proc_7F077FF4(&fStack20,afStack28); - fStack20 = in_a2_lo[1]; - fStack16 = in_a1_lo[1]; - fStack12 = in_a1_lo[2]; - proc_7F077FF4(&fStack20,afStack36); - lVar3 = (longlong)(int)in_a1_lo; - fStack20 = *in_a1_lo; - fStack16 = (float)in_a3_lo[1]; - fStack12 = in_a1_lo[2]; - proc_7F077FF4(&fStack20,&fStack44); - fStack20 = *in_a1_lo; - fStack16 = (float)*in_a3_lo; - fStack12 = in_a1_lo[2]; - proc_7F077FF4(&fStack20,&fStack52); - if (fStack48 < fStack64) { - return fStack80; - } - if (fStack68 < fStack40) { - return fStack80; - } - uStack84 = 0; - proc_7F068008(&fStack56,&uStack60); - afStack28[0] = truncf(afStack28[0]); - afStack36[0] = proc_7F05C440(afStack36[0]); - redirect_get_BONDdata_autoaim_x(); - if (lVar3 == 0) { - if (afStack28[0] <= fStack56) { - if (fStack56 <= afStack36[0]) { - uStack84 = 1; - uVar2 = uStack84; - } - else { - uStack84 = 0; - uVar2 = uStack84; - } - } - else { - uVar2 = (uint)(afStack28[0] <= fStack56); - } - } - else { - uVar2 = uStack84; - if ((afStack28[0] <= fStack76) && (uVar2 = uStack84, fStack72 <= afStack36[0])) { - fStack88 = (afStack36[0] - afStack28[0]) * 1.50000000; - uVar4 = get_num_players(); - if (uVar4 == 1) { - fStack88 = fStack88 * difficulty; - } - fVar6 = getPlayer_c_screenwidth(); - fVar7 = getPlayer_c_screenleft(); - bVar1 = (afStack36[0] + afStack28[0]) * 0.50000000 - fStack88 <= - (float)fVar7 + (float)fVar6 * 0.50000000; - uVar2 = (uint)bVar1; - if (bVar1) { - fVar6 = getPlayer_c_screenwidth(); - fVar7 = getPlayer_c_screenleft(); - bVar1 = (float)fVar7 + (float)fVar6 * 0.50000000 <= - (afStack36[0] + afStack28[0]) * 0.50000000 + fStack88; - uVar2 = (uint)bVar1; - if (((bVar1) && (uVar2 = (uint)(fStack72 <= fStack8), fStack72 <= fStack8)) && - (uVar2 = 0, fStack8 <= fStack76)) { - uVar2 = 1; - } - } - } - } - uStack84 = uVar2; - if (uStack84 == 0) { - return fStack80; - } - iStack92 = get_curplayer_positiondata(); - uStack96 = *(u32 *)(iStack92 + 0x14); - proc_7F089780((int)pPlayer); - proc_7F08A03C(iStack92,0); - iVar5 = proc_7F0B0E24(&uStack96,extraout_f12,extraout_f14,*(f32 *)(iStack92 + 8)); - lVar3 = (longlong)iVar5; - if ((lVar3 != 0) && (uStack96 == *(u32 *)(in_a0_lo + 0x14))) { - fVar8 = fStack64; - if ((fStack64 <= fStack4) && (fVar8 = fStack68, fStack4 <= fStack68)) { - fVar8 = fStack4; - } - in_stack_00000010[1] = fVar8; - redirect_get_BONDdata_autoaim_x(); - if (lVar3 != 0) { - fVar8 = fStack72; - if ((fStack8 < fStack72) || (fVar8 = fStack76, fStack76 < fStack8)) { - *in_stack_00000010 = fVar8; - } - else { - *in_stack_00000010 = fStack8; - } - } - fVar6 = getPlayer_c_screenwidth(); - fVar7 = getPlayer_c_screenleft(); - if (afStack28[0] <= (float)fVar7 + (float)fVar6 * 0.50000000) { - fVar6 = getPlayer_c_screenwidth(); - fVar7 = getPlayer_c_screenleft(); - if ((float)fVar7 + (float)fVar6 * 0.50000000 <= afStack36[0]) { - fStack80 = 1.00000000; - goto LAB_7f03d76c; - } - } - fVar6 = getPlayer_c_screenwidth(); - fVar7 = getPlayer_c_screenleft(); - if (afStack28[0] <= (float)fVar7 + (float)fVar6 * 0.50000000) { - fVar6 = getPlayer_c_screenwidth(); - fVar7 = getPlayer_c_screenleft(); - fStack80 = 1.00000000 - (((float)fVar7 + (float)fVar6 * 0.50000000) - afStack36[0]) / fStack88 - ; - } - else { - fVar6 = getPlayer_c_screenleft(); - fVar7 = getPlayer_c_screenwidth(); - fStack80 = 1.00000000 - (afStack28[0] - ((float)fVar7 * 0.50000000 + (float)fVar6)) / fStack88 - ; - } - } -LAB_7f03d76c: - proc_7F08A03C(iStack92,1); - return fStack80; -} - - - -// WARNING: Instruction at (ram,0x7f03d884) overlaps instruction at (ram,0x7f03d880) -// -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F03D78C(void) - -{ - byte bVar1; - GUARDdata *guard; - ulonglong in_v0; - ulonglong uVar2; - u32 uVar3; - int iVar4; - byte **ppbVar5; - byte *pbVar6; - byte *pbVar7; - float extraout_f0; - f32 fVar8; - f32 fVar9; - float fVar10; - float fStack60; - float fStack56; - float afStack48 [2]; - float afStack40 [2]; - float afStack32 [5]; - float fStack12; - float fStack8; - - pbVar6 = NULL; - fStack12 = dword_80030AB0; - fStack8 = dword_80030AB4; - redirect_get_BONDdata_autoaim(); - pbVar7 = pbVar6; - if (in_v0 != 0) { - fVar10 = -1.00000000; - ppbVar5 = (byte **)(DAT_80071df0 + -4); - pbVar7 = pbVar6; - if ((byte **)((int)&DAT_8007161c + 3) < ppbVar5) { - pbVar7 = *ppbVar5; - do { - if (pbVar7 != NULL) { - bVar1 = *pbVar7; - in_v0 = (ulonglong)bVar1; - if (bVar1 == 3) { -LAB_7f03d860: - guard = *(GUARDdata **)(pbVar7 + 4); - iVar4 = something_with_weaponpos_of_guarddata_hand(guard,0); - if (iVar4 == 0) { - iVar4 = something_with_weaponpos_of_guarddata_hand(guard,1); - in_v0 = SEXT48(iVar4); - if (in_v0 == 0) goto LAB_7f03d8e4; - } - in_v0 = proc_7F023194((int)pbVar7,afStack32,afStack40,afStack48); - if ((in_v0 != 0) && (in_v0 = proc_7F03D188(), fVar10 < extraout_f0)) { - fStack12 = fStack60; - fStack8 = fStack56; - fVar10 = extraout_f0; - pbVar6 = pbVar7; - if (1.00000000 <= extraout_f0) break; - } - } - else { - if ((bVar1 == 6) && (*(int *)(pbVar7 + 4) != 0)) { - uVar2 = proc_7F09B15C((int)pbVar7); - uVar3 = get_cur_playernum(); - in_v0 = SEXT48((int)uVar3); - if (in_v0 != uVar2) goto LAB_7f03d860; - } - } - } -LAB_7f03d8e4: - ppbVar5 = ppbVar5 + -1; - pbVar7 = pbVar6; - if (ppbVar5 < &DAT_80071620) break; - pbVar7 = *ppbVar5; - } while( true ); - } - } - if (pbVar7 == NULL) { - proc_7F07C5F0(0,0); - proc_7F07C6C8(0,0); - } - else { - fVar8 = getPlayer_c_screentop(); - fVar9 = getPlayer_c_screenheight(); - proc_7F07C5F0((int)pbVar7,(fStack8 - (float)fVar8) / ((float)fVar9 * 0.50000000) - 1.00000000); - redirect_get_BONDdata_autoaim_x(); - if (in_v0 != 0) { - fVar8 = getPlayer_c_screenleft(); - fVar9 = getPlayer_c_screenwidth(); - proc_7F07C6C8((int)pbVar7,(fStack12 - (float)fVar8) / ((float)fVar9 * 0.50000000) - 1.00000000 - ); - } - } - return; -} - - - -ulonglong proc_7F03D9EC(int param_1) - -{ - int iVar1; - ulonglong uVar2; - - iVar1 = *(int *)(param_1 + 4); - if (*(float *)(iVar1 + 0xb4) <= 0.00000000) { - uVar2 = 0x1000; - } - else { - uVar2 = 0x4000; - if (*(float *)(iVar1 + 0x84) <= *(float *)(iVar1 + 0xb4)) { - uVar2 = 0x2000; - } - } - if (*(int *)(iVar1 + 0xc) << 2 < 0) { - uVar2 = uVar2 | 0x8000; - } - return uVar2; -} - - - -undefined4 proc_7F03DA50(char *param_1,uint param_2) - -{ - char cVar1; - uint uVar2; - ulonglong uVar3; - undefined4 uVar4; - uint uVar5; - - cVar1 = *param_1; - uVar4 = 1; - if (cVar1 == '\x02') { - if (((param_2 & 0x100) != 0) && (*(int *)(*(int *)(param_1 + 4) + 8) << 5 < 0)) { - uVar4 = 0; - } - if ((param_2 & 2) != 0) { - return uVar4; - } - uVar3 = proc_7F03D9EC((int)param_1); - if ((uVar3 & (longlong)(int)param_2) != 0) { - return uVar4; - } - } - else { - uVar5 = param_2 & 4; - if (cVar1 != '\x06') { - if (cVar1 == '\x03') { - uVar5 = param_2 & 8; - } - else { - if (((param_2 & 0x100) != 0) && (*(int *)(*(int *)(param_1 + 4) + 8) << 5 < 0)) { - uVar4 = 0; - } - uVar2 = *(uint *)(*(int *)(param_1 + 4) + 8); - if (((param_2 & 0x200) != 0) && (-1 < (int)(uVar2 << 0xe))) { - uVar4 = 0; - } - uVar5 = param_2 & 1; - if ((uVar2 & 0x800) != 0) { - uVar5 = param_2 & 0x10; - } - } - } - if (uVar5 != 0) { - return uVar4; - } - } - return 0; -} - - - -undefined8 proc_7F03DB70(int *param_1,int *param_2) - -{ - int iVar1; - int *piVar2; - int iVar3; - - iVar3 = *param_1; - if (-1 < iVar3) { - iVar1 = *param_2; - piVar2 = param_2; - do { - while (-1 < iVar1) { - if (iVar3 == iVar1) { - return 1; - } - iVar1 = piVar2[1]; - piVar2 = piVar2 + 1; - } - iVar3 = param_1[1]; - param_1 = param_1 + 1; - iVar1 = *param_2; - piVar2 = param_2; - } while (-1 < iVar3); - } - return 0; -} - - - -undefined8 proc_7F03DBCC(short param_1,int param_2) - -{ - short *psVar1; - int iVar2; - short *psVar3; - - psVar1 = (short *)(DAT_8007161c + param_2 * 0x20); - if (*psVar1 < 0) { - *psVar1 = param_1; - return 1; - } - if (psVar1[1] < 0) { - psVar1[1] = param_1; - return 1; - } - psVar3 = psVar1 + 3; - if (psVar1[2] < 0) { - psVar1[2] = param_1; - return 1; - } - iVar2 = 6; - while( true ) { - iVar2 += 8; - if (*psVar3 < 0) { - *psVar3 = param_1; - return 1; - } - if (psVar3[1] < 0) { - psVar3[1] = param_1; - return 1; - } - if (psVar3[2] < 0) { - psVar3[2] = param_1; - return 1; - } - if (psVar3[3] < 0) break; - psVar3 = psVar3 + 4; - if (iVar2 == 0x1e) { - return 0; - } - } - psVar3[3] = param_1; - return 1; -} - - - -int proc_7F03DCB8(int param_1,longlong param_2) - -{ - int iVar1; - short *psVar2; - int iVar3; - int iVar4; - - iVar3 = 0; - psVar2 = DAT_8007161c; - while (*psVar2 != -2) { - iVar3 += 1; - psVar2 = psVar2 + 0x10; - if (iVar3 == 0x100) { - return -1; - } - } - iVar4 = 0; - do { - *(undefined2 *)((int)DAT_8007161c + iVar4 + iVar3 * 0x20) = 0xffff; - *(undefined2 *)((int)DAT_8007161c + iVar4 + iVar3 * 0x20 + 2) = 0xffff; - *(undefined2 *)((int)DAT_8007161c + iVar4 + iVar3 * 0x20 + 4) = 0xffff; - iVar1 = iVar4 + iVar3 * 0x20; - iVar4 += 8; - *(undefined2 *)((int)DAT_8007161c + iVar1 + 6) = 0xffff; - } while (iVar4 != 0x20); - if (-1 < param_2) { - DAT_8007161c[(int)param_2 * 0x10 + 0xf] = (short)iVar3; - return iVar3; - } - *(short *)(ptr_room_lookup_buffer_maybe + param_1 * 2) = (short)iVar3; - return iVar3; -} - - - -void proc_7F03DD9C(int param_1,short param_2) - -{ - int iVar1; - longlong lVar2; - longlong lVar3; - - lVar2 = -1; - if (-1 < param_2) { - lVar3 = (longlong)*(short *)(ptr_room_lookup_buffer_maybe + (int)param_2 * 2); - if (-1 < lVar3) { - do { - lVar2 = lVar3; - lVar3 = proc_7F03DBCC((short)((param_1 + 0x7ff963c8) / 0x34),(int)lVar2); - if (lVar3 != 0) { - return; - } - lVar3 = (longlong)*(short *)(DAT_8007161c + (int)lVar2 * 0x20 + 0x1e); - } while (-1 < lVar3); - } - iVar1 = proc_7F03DCB8((int)param_2,lVar2); - if (-1 < iVar1) { - proc_7F03DBCC((short)((param_1 + 0x7ff963c8) / 0x34),iVar1); - } - } - return; -} - - - -void proc_7F03DE94(int param_1,short param_2) - -{ - short sVar1; - bool bVar2; - bool bVar3; - longlong lVar4; - int iVar5; - longlong lVar6; - longlong lVar7; - int iVar8; - longlong lVar9; - short *psVar10; - int iVar11; - - bVar3 = false; - if (-1 < (int)param_2) { - iVar8 = (int)param_2 * 2; - sVar1 = *(short *)(ptr_room_lookup_buffer_maybe + iVar8); - lVar4 = (longlong)sVar1; - if (-1 < lVar4) { - lVar6 = (longlong)(int)(short)((param_1 + 0x7ff963c8) / 0x34); - lVar7 = -1; - do { - psVar10 = (short *)(DAT_8007161c + (int)sVar1 * 0x20); - bVar2 = false; - iVar5 = (int)lVar4; - if (lVar6 == (longlong)*psVar10) { - *psVar10 = -1; - bVar3 = true; - psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20); -LAB_7f03df4c: - sVar1 = psVar10[1]; - } - else { - if (-1 < (longlong)*psVar10) { - bVar2 = true; - goto LAB_7f03df4c; - } - sVar1 = psVar10[1]; - } - if (lVar6 == (longlong)sVar1) { - psVar10[1] = -1; - bVar3 = true; - psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20); -LAB_7f03df80: - lVar9 = (longlong)psVar10[2]; - } - else { - if (bVar2) { - lVar9 = (longlong)psVar10[2]; - } - else { - if (-1 < (longlong)sVar1) { - bVar2 = true; - goto LAB_7f03df80; - } - lVar9 = (longlong)psVar10[2]; - } - } - if (lVar6 == lVar9) { - psVar10[2] = -1; - bVar3 = true; - } - else { - if ((!bVar2) && (-1 < lVar9)) { - bVar2 = true; - } - } - iVar11 = 6; - do { - psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); - if (lVar6 == (longlong)*psVar10) { - *psVar10 = -1; - bVar3 = true; - psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); -LAB_7f03dffc: - lVar9 = (longlong)psVar10[1]; - } - else { - if (bVar2) { - lVar9 = (longlong)psVar10[1]; - } - else { - if (-1 < (longlong)*psVar10) { - bVar2 = true; - goto LAB_7f03dffc; - } - lVar9 = (longlong)psVar10[1]; - } - } - if (lVar6 == lVar9) { - psVar10[1] = -1; - bVar3 = true; - psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); -LAB_7f03e038: - lVar9 = (longlong)psVar10[2]; - } - else { - if (bVar2) { - lVar9 = (longlong)psVar10[2]; - } - else { - if (-1 < lVar9) { - bVar2 = true; - goto LAB_7f03e038; - } - lVar9 = (longlong)psVar10[2]; - } - } - if (lVar6 == lVar9) { - psVar10[2] = -1; - bVar3 = true; - psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); -LAB_7f03e074: - lVar9 = (longlong)psVar10[3]; - } - else { - if (bVar2) { - lVar9 = (longlong)psVar10[3]; - } - else { - if (-1 < lVar9) { - bVar2 = true; - goto LAB_7f03e074; - } - lVar9 = (longlong)psVar10[3]; - } - } - iVar11 += 8; - if (lVar6 == lVar9) { - psVar10[3] = -1; - bVar3 = true; - } - else { - if ((!bVar2) && (-1 < lVar9)) { - bVar2 = true; - } - } - } while (iVar11 != 0x1e); - lVar9 = lVar4; - if (!bVar2) { - iVar11 = iVar5 * 0x20; - *(undefined2 *)(DAT_8007161c + iVar11) = 0xfffe; - if (lVar7 < 0) { - *(undefined2 *)(ptr_room_lookup_buffer_maybe + iVar8) = - *(undefined2 *)(DAT_8007161c + iVar11 + 0x1e); - lVar9 = lVar7; - } - else { - *(undefined2 *)(DAT_8007161c + (int)lVar7 * 0x20 + 0x1e) = - *(undefined2 *)(DAT_8007161c + iVar11 + 0x1e); - lVar9 = lVar7; - } - } - if (bVar3) { - return; - } - sVar1 = *(short *)(DAT_8007161c + iVar5 * 0x20 + 0x1e); - lVar4 = (longlong)sVar1; - lVar7 = lVar9; - } while (-1 < lVar4); - } - } - return; -} - - - -void proc_7F03E134(char *param_1) - -{ - char cVar1; - - cVar1 = *param_1; - if (cVar1 == '\x03') { - proc_7F020D94(*(int *)(param_1 + 4)); - } - else { - if ((cVar1 == '\x01') || (cVar1 == '\x04')) { - proc_7F056CA0(*(int *)(param_1 + 4)); - } - } - return; -} - - - -void proc_7F03E18C(int param_1) - -{ - byte bVar1; - int iVar2; - - bVar1 = *(byte *)(param_1 + 0x2c); - iVar2 = param_1 + 0x2c; - while (bVar1 != 0xff) { - proc_7F03DE94(param_1,(ushort)bVar1); - bVar1 = *(byte *)(iVar2 + 1); - iVar2 += 1; - } - if ((*(byte *)(param_1 + 1) & 0x10) == 0) { - *(undefined *)(param_1 + 0x2c) = 0xff; - } - return; -} - - - -void proc_7F03E210(int param_1) - -{ - byte bVar1; - int iVar2; - - bVar1 = *(byte *)(param_1 + 0x2c); - iVar2 = param_1 + 0x2c; - while (bVar1 != 0xff) { - proc_7F03DD9C(param_1,(ushort)bVar1); - bVar1 = *(byte *)(iVar2 + 1); - iVar2 += 1; - } - return; -} - - - -void proc_7F03E27C(char *param_1,float *param_2,float *param_3,float param_4) - -{ - char cVar1; - byte bVar2; - uint *puVar3; - uint *puVar4; - char *pcVar5; - float in_a3_lo; - int iVar6; - float in_f14; - int iStack40; - int iStack36; - uint auStack32 [8]; - - iVar6 = 0; - if ((param_1[1] & 8U) == 0) { - iStack36 = *(int *)(param_1 + 0x14); - iStack40 = 0; - proc_7F0B21B0(&iStack36,in_a3_lo,in_f14,*(float *)(param_1 + 8),*(undefined4 *)(param_1 + 0x10), - (undefined4 *)in_a3_lo,auStack32); - } - else { - cVar1 = *param_1; - puVar4 = (uint *)(param_1 + 0x2c); - if (((cVar1 == '\x01') || (cVar1 == '\x04')) || (cVar1 == '\x02')) { - iVar6 = *(int *)(param_1 + 4); - } - if (((iVar6 != 0) && ((*(uint *)(iVar6 + 100) & 0x80) != 0)) && - ((**(uint **)(iVar6 + 0x6c) & 8) != 0)) { - puVar4 = *(uint **)(iVar6 + 0x6c) + 0x33; - } - iStack40 = 0; - puVar3 = auStack32; - if (*(byte *)puVar4 != 0xff) { - bVar2 = *(byte *)puVar4; - do { - *puVar3 = (uint)bVar2; - bVar2 = *(byte *)((int)puVar4 + 1); - iStack40 += 1; - puVar3 = puVar3 + 1; - puVar4 = (uint *)((int)puVar4 + 1); - } while (bVar2 != 0xff); - } - } - proc_7F0BA2D4(param_2,param_3,(int *)auStack32,&iStack40,7); - iVar6 = 0; - puVar4 = auStack32; - pcVar5 = param_1; - if (0 < iStack40) { - while( true ) { - iVar6 += 1; - puVar4 = puVar4 + 1; - pcVar5[0x2c] = (char)auStack32[0]; - if (iStack40 <= iVar6) break; - auStack32[0] = *puVar4; - pcVar5 = pcVar5 + 1; - } - } - param_1[iVar6 + 0x2c] = -1; - return; -} - - - -void proc_7F03E3FC(int *param_1) - -{ - short sVar1; - short *psVar2; - longlong lVar3; - int iVar4; - int iVar5; - short *psVar6; - short sVar7; - - iVar5 = *param_1; - psVar2 = ptr_list_object_lookup_indices; - iVar4 = DAT_8007161c; - while (-1 < iVar5) { - lVar3 = (longlong)*(short *)(ptr_room_lookup_buffer_maybe + iVar5 * 2); - DAT_8007161c = iVar4; - if (lVar3 < 0) { - iVar5 = param_1[1]; - DAT_8007161c = iVar4; - } - else { - do { - iVar5 = 0; - do { - sVar1 = *(short *)(iVar4 + (int)lVar3 * 0x20 + iVar5); - iVar5 += 2; - if (-1 < sVar1) { - psVar6 = ptr_list_object_lookup_indices; - if (ptr_list_object_lookup_indices < psVar2) { - sVar7 = *ptr_list_object_lookup_indices; - psVar6 = ptr_list_object_lookup_indices; - while ((sVar1 != sVar7 && (psVar6 = psVar6 + 1, psVar6 < psVar2))) { - sVar7 = *psVar6; - } - } - if (psVar6 == psVar2) { - *psVar2 = sVar1; - psVar2 = psVar2 + 1; - iVar4 = DAT_8007161c; - } - } - } while (iVar5 != 0x1e); - lVar3 = (longlong)*(short *)(iVar4 + (int)lVar3 * 0x20 + 0x1e); - } while (-1 < lVar3); - iVar5 = param_1[1]; - } - param_1 = param_1 + 1; - iVar4 = DAT_8007161c; - } - DAT_8007161c = iVar4; - *psVar2 = -1; - num_obj_position_data_entries = (int)psVar2 + (2 - (int)ptr_list_object_lookup_indices) >> 1; - return; -} - - - -// WARNING: Instruction at (ram,0x7f03e63c) overlaps instruction at (ram,0x7f03e638) -// - -void proc_7F03E4F0(void) - -{ - short sVar1; - longlong lVar2; - int iVar3; - u32 uVar4; - int iVar5; - int iVar7; - longlong lVar6; - int iVar8; - int iVar9; - short *psVar10; - short *psVar11; - - iVar3 = 0; - if (0 < (int)max_num_rooms) { - iVar5 = 0; - uVar4 = max_num_rooms; - do { - iVar3 += 1; - sVar1 = *(short *)(ptr_room_lookup_buffer_maybe + iVar5); - if (-1 < (longlong)sVar1) { - lVar2 = (longlong)sVar1; - lVar6 = (longlong)*(short *)(DAT_8007161c + (int)sVar1 * 0x20 + 0x1e); - while (-1 < lVar6) { - iVar8 = 0; - do { - iVar7 = (int)lVar6; - psVar11 = (short *)(DAT_8007161c + (int)lVar2 * 0x20 + iVar8); - iVar8 += 2; - iVar9 = 0; - psVar10 = (short *)(DAT_8007161c + iVar7 * 0x20); - if (*psVar11 < 0) { - do { - if (-1 < *psVar10) { - *psVar11 = *psVar10; - *(undefined2 *)(DAT_8007161c + iVar7 * 0x20 + iVar9) = 0xffff; - break; - } - iVar9 += 2; - psVar10 = psVar10 + 1; - } while (iVar9 != 0x1e); - if (iVar9 < 0x1e) { - psVar11 = (short *)(DAT_8007161c + iVar7 * 0x20 + iVar9); - do { - if (-1 < *psVar11) break; - iVar9 += 2; - psVar11 = psVar11 + 1; - } while (iVar9 < 0x1e); - } - if (iVar9 == 0x1e) { - iVar9 = (int)lVar2 * 0x20; - *(undefined2 *)(DAT_8007161c + iVar7 * 0x20) = 0xfffe; - *(undefined2 *)(DAT_8007161c + iVar9 + 0x1e) = - *(undefined2 *)(DAT_8007161c + iVar7 * 0x20 + 0x1e); - lVar6 = (longlong)*(short *)(DAT_8007161c + iVar9 + 0x1e); - if (lVar6 < 0) break; - } - } - } while (iVar8 < 0x1e); - uVar4 = max_num_rooms; - if (-1 < lVar6) { - lVar2 = lVar6; - lVar6 = (longlong)*(short *)(DAT_8007161c + (int)lVar6 * 0x20 + 0x1e); - uVar4 = max_num_rooms; - } - } - } - iVar5 += 2; - } while (iVar3 < (int)uVar4); - } - return; -} - - - -void removed_debug_roomblocks_feature(void) - -{ - return; -} - - - -void proc_7F03E6A0(int param_1) - -{ - int iVar1; - int iVar2; - - if (((*(uint *)(*(int *)(param_1 + 4) + 100) & 1) != 0) && (dword_80030B00 != 0)) { - iVar2 = *(int *)(dword_80030B00 + 4); - iVar1 = dword_80030B00; - while( true ) { - if (param_1 == iVar2) { - if (*(int *)(iVar1 + 8) == 0) { - iVar1 = *(int *)(iVar1 + 0xc); - } - else { - proc_7F05599C(*(int *)(iVar1 + 8)); - iVar1 = *(int *)(iVar1 + 0xc); - } - } - else { - iVar1 = *(int *)(iVar1 + 0xc); - } - if (iVar1 == 0) break; - iVar2 = *(int *)(iVar1 + 4); - } - } - return; -} - - - -undefined8 proc_7F03E718(int param_1) - -{ - ulonglong uVar1; - int iVar2; - int iVar3; - - if (((*(uint *)(param_1 + 100) & 0x2000) != 0) && (dword_80030B04 != 0)) { - iVar3 = *(int *)(dword_80030B04 + 4); - iVar2 = dword_80030B04; - while( true ) { - if (param_1 == iVar3) { - iVar3 = *(int *)(iVar2 + 8); - if (iVar3 == 0) { - iVar2 = *(int *)(iVar2 + 0xc); - } - else { - if (*(int *)(iVar3 + 0x10) == 0) { - iVar2 = *(int *)(iVar2 + 0xc); - } - else { - uVar1 = check_if_object_has_not_been_destroyed(iVar3); - if (uVar1 != 0) { - return 0; - } - iVar2 = *(int *)(iVar2 + 0xc); - } - } - } - else { - iVar2 = *(int *)(iVar2 + 0xc); - } - if (iVar2 == 0) break; - iVar3 = *(int *)(iVar2 + 4); - } - } - return 1; -} - - - -undefined8 proc_7F03E7AC(int param_1) - -{ - int iVar1; - int iVar2; - - if (((*(uint *)(param_1 + 0xc) & 0x400) != 0) && (dword_80030B08 != 0)) { - iVar2 = *(int *)(dword_80030B08 + 4); - iVar1 = dword_80030B08; - while( true ) { - if (param_1 == iVar2) { - iVar2 = *(int *)(iVar1 + 0xc); - if (iVar2 == 0) { - iVar1 = *(int *)(iVar1 + 0x10); - } - else { - if (*(int *)(iVar2 + 0x10) == 0) { - iVar1 = *(int *)(iVar1 + 0x10); - } - else { - if (*(float *)(iVar2 + 0xb4) <= 0.50000000) { - return 0; - } - iVar1 = *(int *)(iVar1 + 0x10); - } - } - } - else { - iVar1 = *(int *)(iVar1 + 0x10); - } - if (iVar1 == 0) break; - iVar2 = *(int *)(iVar1 + 4); - } - } - return 1; -} - - - -void proc_7F03E830(int param_1) - -{ - proc_7F0B2970(); - return; -} - - - -undefined4 proc_7F03E85C(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -undefined4 proc_7F03E864(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -undefined4 proc_7F03E86C(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -undefined4 proc_7F03E874(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -float proc_7F03E87C(int param_1,float *param_2) - -{ - float fVar1; - float fVar2; - - if (0.00000000 <= *param_2) { - fVar2 = *(float *)(param_1 + 4); - } - else { - fVar2 = *(float *)(param_1 + 8); - } - if (0.00000000 <= param_2[4]) { - fVar1 = *(float *)(param_1 + 0xc); - } - else { - fVar1 = *(float *)(param_1 + 0x10); - } - fVar1 = fVar2 * *param_2 + 0.00000000 + fVar1 * param_2[4]; - fVar2 = param_2[8]; - if (fVar2 < 0.00000000) { - return fVar1 + *(float *)(param_1 + 0x18) * fVar2; - } - return fVar1 + *(float *)(param_1 + 0x14) * fVar2; -} - - - -float proc_7F03E91C(int param_1,float *param_2) - -{ - float fVar1; - float fVar2; - - if (*param_2 <= 0.00000000) { - fVar2 = *(float *)(param_1 + 4); - } - else { - fVar2 = *(float *)(param_1 + 8); - } - if (param_2[4] <= 0.00000000) { - fVar1 = *(float *)(param_1 + 0xc); - } - else { - fVar1 = *(float *)(param_1 + 0x10); - } - fVar1 = fVar2 * *param_2 + 0.00000000 + fVar1 * param_2[4]; - fVar2 = param_2[8]; - if (0.00000000 < fVar2) { - return fVar1 + *(float *)(param_1 + 0x18) * fVar2; - } - return fVar1 + *(float *)(param_1 + 0x14) * fVar2; -} - - - -float proc_7F03E9BC(int param_1,int param_2) - -{ - float fVar1; - float fVar2; - - if (0.00000000 <= *(float *)(param_2 + 4)) { - fVar2 = *(float *)(param_1 + 4); - } - else { - fVar2 = *(float *)(param_1 + 8); - } - if (0.00000000 <= *(float *)(param_2 + 0x14)) { - fVar1 = *(float *)(param_1 + 0xc); - } - else { - fVar1 = *(float *)(param_1 + 0x10); - } - fVar1 = fVar2 * *(float *)(param_2 + 4) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x14); - fVar2 = *(float *)(param_2 + 0x24); - if (fVar2 < 0.00000000) { - return fVar1 + *(float *)(param_1 + 0x18) * fVar2; - } - return fVar1 + *(float *)(param_1 + 0x14) * fVar2; -} - - - -float proc_7F03EA5C(int param_1,int param_2) - -{ - float fVar1; - float fVar2; - - if (*(float *)(param_2 + 4) <= 0.00000000) { - fVar2 = *(float *)(param_1 + 4); - } - else { - fVar2 = *(float *)(param_1 + 8); - } - if (*(float *)(param_2 + 0x14) <= 0.00000000) { - fVar1 = *(float *)(param_1 + 0xc); - } - else { - fVar1 = *(float *)(param_1 + 0x10); - } - fVar1 = fVar2 * *(float *)(param_2 + 4) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x14); - fVar2 = *(float *)(param_2 + 0x24); - if (0.00000000 < fVar2) { - return fVar1 + *(float *)(param_1 + 0x18) * fVar2; - } - return fVar1 + *(float *)(param_1 + 0x14) * fVar2; -} - - - -float proc_7F03EAFC(int param_1,int param_2) - -{ - float fVar1; - float fVar2; - - if (0.00000000 <= *(float *)(param_2 + 8)) { - fVar2 = *(float *)(param_1 + 4); - } - else { - fVar2 = *(float *)(param_1 + 8); - } - if (0.00000000 <= *(float *)(param_2 + 0x18)) { - fVar1 = *(float *)(param_1 + 0xc); - } - else { - fVar1 = *(float *)(param_1 + 0x10); - } - fVar1 = fVar2 * *(float *)(param_2 + 8) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x18); - fVar2 = *(float *)(param_2 + 0x28); - if (fVar2 < 0.00000000) { - return fVar1 + *(float *)(param_1 + 0x18) * fVar2; - } - return fVar1 + *(float *)(param_1 + 0x14) * fVar2; -} - - - -float proc_7F03EB9C(int param_1,int param_2) - -{ - float fVar1; - float fVar2; - - if (*(float *)(param_2 + 8) <= 0.00000000) { - fVar2 = *(float *)(param_1 + 4); - } - else { - fVar2 = *(float *)(param_1 + 8); - } - if (*(float *)(param_2 + 0x18) <= 0.00000000) { - fVar1 = *(float *)(param_1 + 0xc); - } - else { - fVar1 = *(float *)(param_1 + 0x10); - } - fVar1 = fVar2 * *(float *)(param_2 + 8) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x18); - fVar2 = *(float *)(param_2 + 0x28); - if (0.00000000 < fVar2) { - return fVar1 + *(float *)(param_1 + 0x18) * fVar2; - } - return fVar1 + *(float *)(param_1 + 0x14) * fVar2; -} - - - -void proc_7F03EC3C(int param_1,int param_2,undefined4 *param_3) - -{ - if (*(float *)(param_2 + 8) <= 0.00000000) { - *param_3 = *(undefined4 *)(param_1 + 4); - } - else { - *param_3 = *(undefined4 *)(param_1 + 8); - } - if (*(float *)(param_2 + 0x18) <= 0.00000000) { - param_3[1] = *(undefined4 *)(param_1 + 0xc); - } - else { - param_3[1] = *(undefined4 *)(param_1 + 0x10); - } - if (0.00000000 < *(float *)(param_2 + 0x28)) { - param_3[2] = *(undefined4 *)(param_1 + 0x18); - return; - } - param_3[2] = *(undefined4 *)(param_1 + 0x14); - return; -} - - - -// WARNING: Instruction at (ram,0x7f03f418) overlaps instruction at (ram,0x7f03f414) -// - -void proc_7F03ECC0(float param_1,undefined8 param_2,undefined8 param_3,float param_4, - undefined8 param_5,float param_6,float param_7,float *param_8,float *param_9, - uint *param_10) - -{ - int *piVar1; - int iVar2; - uint uVar3; - int iVar4; - double *pdVar5; - int iVar6; - int iVar7; - int iVar8; - uint uVar9; - double *pdVar10; - uint uVar11; - double *pdVar12; - double *pdVar13; - float *pfVar14; - float *pfVar15; - double *pdVar16; - int iVar17; - double dVar18; - double dVar19; - float fVar20; - float fVar21; - uint *in_stack_00000020; - int aiStack176 [4]; - int aiStack160 [8]; - double adStack128 [16]; - - pdVar13 = adStack128; - iVar7 = 0; - pdVar12 = adStack128; - iVar4 = 0; - pdVar10 = adStack128; - iVar8 = 0; - pdVar16 = adStack128; - iVar17 = 0; - dVar19 = (double)*param_9 * (double)param_1 + (double)param_9[4] * (double)param_5._4_4_ + - (double)param_9[8] * (double)param_7; - pdVar5 = adStack128; - iVar2 = 1; - do { - pdVar5 = pdVar5 + 2; - if ((*pdVar5 < dVar19) || ((*pdVar5 == dVar19 && (pdVar5[1] < pdVar13[1])))) { - pdVar13 = adStack128 + iVar2 * 2; - dVar19 = *pdVar13; - iVar17 = iVar2; - } - iVar2 += 1; - } while (iVar2 < 8); - iVar2 = 1; - pdVar5 = adStack128; - do { - pdVar5 = pdVar5 + 2; - if ((pdVar12[1] < pdVar5[1]) || ((pdVar5[1] == pdVar12[1] && (*pdVar5 < *pdVar12)))) { - pdVar12 = adStack128 + iVar2 * 2; - iVar7 = iVar2; - } - iVar2 += 1; - } while (iVar2 < 8); - iVar2 = 1; - pdVar5 = adStack128; - do { - pdVar5 = pdVar5 + 2; - if ((*pdVar10 < *pdVar5) || ((*pdVar5 == *pdVar10 && (pdVar10[1] < pdVar5[1])))) { - pdVar10 = adStack128 + iVar2 * 2; - iVar4 = iVar2; - } - iVar2 += 1; - } while (iVar2 < 8); - iVar2 = 1; - pdVar5 = adStack128; - do { - pdVar5 = pdVar5 + 2; - if ((pdVar5[1] < pdVar16[1]) || ((pdVar5[1] == pdVar16[1] && (*pdVar16 < *pdVar5)))) { - pdVar16 = adStack128 + iVar2 * 2; - iVar8 = iVar2; - } - iVar2 += 1; - } while (iVar2 < 8); - iVar6 = 0; - iVar2 = 0; - do { - if ((((iVar2 != iVar17) && (iVar2 != iVar4)) && (iVar2 != iVar7)) && (iVar2 != iVar8)) { - aiStack176[iVar6] = iVar2; - iVar6 += 1; - } - iVar2 += 1; - } while (iVar2 < 8); - iVar8 = 1; - piVar1 = aiStack176; - *(float *)param_10 = (float)dVar19; - *(float *)(param_10 + 1) = (float)pdVar13[1]; - dVar19 = *pdVar16; - iVar17 = aiStack176[0]; - while (dVar18 = adStack128[iVar17 * 2], - (adStack128[iVar17 * 2 + 1] - pdVar16[1]) * (*pdVar13 - dVar19) <= - (dVar18 - dVar19) * (pdVar13[1] - pdVar16[1])) { - piVar1 = piVar1 + 1; - if (aiStack160 <= piVar1) goto LAB_7f03f19c; - iVar17 = *piVar1; - } - iVar8 = 2; - *(float *)(param_10 + 2) = (float)dVar18; - *(float *)(param_10 + 3) = (float)adStack128[iVar17 * 2 + 1]; - dVar19 = *pdVar16; -LAB_7f03f19c: - pfVar15 = (float *)(param_10 + iVar8 * 2); - pfVar14 = pfVar15 + 2; - *pfVar15 = (float)dVar19; - iVar7 = iVar8 + 1; - piVar1 = aiStack176; - pfVar15[1] = (float)pdVar16[1]; - dVar19 = *pdVar10; - iVar17 = aiStack176[0]; - while (dVar18 = adStack128[iVar17 * 2], - (adStack128[iVar17 * 2 + 1] - pdVar10[1]) * (*pdVar16 - dVar19) <= - (dVar18 - dVar19) * (pdVar16[1] - pdVar10[1])) { - piVar1 = piVar1 + 1; - if (aiStack160 <= piVar1) goto LAB_7f03f24c; - iVar17 = *piVar1; - } - iVar7 = iVar8 + 2; - pfVar14 = pfVar15 + 4; - pfVar15[2] = (float)dVar18; - pfVar15[3] = (float)adStack128[iVar17 * 2 + 1]; - dVar19 = *pdVar10; -LAB_7f03f24c: - iVar8 = iVar7 + 1; - pfVar15 = pfVar14 + 2; - piVar1 = aiStack176; - *pfVar14 = (float)dVar19; - pfVar14[1] = (float)pdVar10[1]; - dVar19 = *pdVar12; - iVar17 = aiStack176[0]; - while (dVar18 = adStack128[iVar17 * 2], - (adStack128[iVar17 * 2 + 1] - pdVar12[1]) * (*pdVar10 - dVar19) <= - (dVar18 - dVar19) * (pdVar10[1] - pdVar12[1])) { - piVar1 = piVar1 + 1; - if (aiStack160 <= piVar1) goto LAB_7f03f2f4; - iVar17 = *piVar1; - } - iVar8 = iVar7 + 2; - pfVar15 = pfVar14 + 4; - pfVar14[2] = (float)dVar18; - pfVar14[3] = (float)adStack128[iVar17 * 2 + 1]; - dVar19 = *pdVar12; -LAB_7f03f2f4: - uVar9 = iVar8 + 1; - piVar1 = aiStack176; - *pfVar15 = (float)dVar19; - pfVar15[1] = (float)pdVar12[1]; - while (dVar19 = adStack128[aiStack176[0] * 2], - (adStack128[aiStack176[0] * 2 + 1] - pdVar13[1]) * (*pdVar12 - *pdVar13) <= - (dVar19 - *pdVar13) * (pdVar12[1] - pdVar13[1])) { - piVar1 = piVar1 + 1; - if (aiStack160 <= piVar1) goto LAB_7f03f39c; - aiStack176[0] = *piVar1; - } - uVar9 = iVar8 + 2; - pfVar15[2] = (float)dVar19; - pfVar15[3] = (float)adStack128[aiStack176[0] * 2 + 1]; -LAB_7f03f39c: - *in_stack_00000020 = uVar9; - if (uVar9 != 0) { - uVar11 = uVar9 & 3; - if (uVar11 == 0) { - iVar17 = 0; - } - else { - uVar3 = 1; - fVar21 = (float)*param_10; - pfVar15 = (float *)param_10; - pfVar14 = (float *)param_10; - if (uVar11 != 1) { - do { - uVar3 += 1; - fVar20 = fVar21 + param_9[0xc]; - fVar21 = pfVar14[2]; - pfVar15 = pfVar14 + 2; - *pfVar14 = fVar20; - pfVar14[1] = pfVar14[1] + param_9[0xe]; - pfVar14 = pfVar15; - } while (uVar11 != uVar3); - } - *pfVar15 = fVar21 + param_9[0xc]; - pfVar15[1] = pfVar15[1] + param_9[0xe]; - iVar17 = uVar3 << 3; - if (uVar3 == uVar9) { - return; - } - } - fVar21 = *(float *)((int)param_10 + iVar17); - pfVar15 = (float *)((int)param_10 + iVar17); - while (pfVar14 = pfVar15 + 8, pfVar14 != (float *)(param_10 + uVar9 * 2)) { - *pfVar15 = fVar21 + param_9[0xc]; - fVar21 = *pfVar14; - pfVar15[1] = pfVar15[1] + param_9[0xe]; - pfVar15[2] = pfVar15[2] + param_9[0xc]; - pfVar15[3] = pfVar15[3] + param_9[0xe]; - pfVar15[4] = pfVar15[4] + param_9[0xc]; - pfVar15[5] = pfVar15[5] + param_9[0xe]; - pfVar15[6] = pfVar15[6] + param_9[0xc]; - pfVar15[7] = pfVar15[7] + param_9[0xe]; - pfVar15 = pfVar14; - } - *pfVar15 = fVar21 + param_9[0xc]; - pfVar15[1] = pfVar15[1] + param_9[0xe]; - pfVar15[2] = pfVar15[2] + param_9[0xc]; - pfVar15[3] = pfVar15[3] + param_9[0xe]; - pfVar15[4] = pfVar15[4] + param_9[0xc]; - pfVar15[5] = pfVar15[5] + param_9[0xe]; - pfVar15[6] = pfVar15[6] + param_9[0xc]; - pfVar15[7] = pfVar15[7] + param_9[0xe]; - } - return; -} - - - -void proc_7F03F540(undefined8 param_1,undefined8 param_2,float *param_3,uint *param_4) - -{ - int iVar1; - - iVar1 = (int)param_1; - proc_7F03ECC0(*(float *)(iVar1 + 4),param_1,param_2,*(float *)(iVar1 + 8), - (longlong)*(int *)(iVar1 + 0xc),*(float *)(iVar1 + 0x10), - *(undefined4 *)(iVar1 + 0x14),*(float **)(iVar1 + 0x18),(float *)param_2, - (uint *)param_3); - return; -} - - - -undefined8 proc_7F03F598(float *param_1,float param_2,float *param_3) - -{ - undefined8 uVar1; - float *in_a2_lo; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - - fVar2 = *param_1 - *in_a2_lo; - fVar3 = param_1[1] - in_a2_lo[1]; - fVar4 = param_1[2] - in_a2_lo[2]; - fVar5 = in_a2_lo[8] * fVar4 + fVar2 * in_a2_lo[6] + fVar3 * in_a2_lo[7]; - if ((in_a2_lo[0x10] + (float)param_3 < fVar5) || (fVar5 < in_a2_lo[0xf] - (float)param_3)) { - uVar1 = 0; - } - else { - fVar5 = in_a2_lo[5] * fVar4 + fVar2 * in_a2_lo[3] + fVar3 * in_a2_lo[4]; - if ((in_a2_lo[0xe] + (float)param_3 < fVar5) || (fVar5 < in_a2_lo[0xd] - (float)param_3)) { - uVar1 = 0; - } - else { - fVar2 = (in_a2_lo[3] * in_a2_lo[7] - in_a2_lo[6] * in_a2_lo[4]) * fVar4 + - fVar2 * (in_a2_lo[4] * in_a2_lo[8] - in_a2_lo[7] * in_a2_lo[5]) + - fVar3 * (in_a2_lo[5] * in_a2_lo[6] - in_a2_lo[8] * in_a2_lo[3]); - if ((in_a2_lo[0xc] + (float)param_3 < fVar2) || - (uVar1 = 1, fVar2 < in_a2_lo[0xb] - (float)param_3)) { - uVar1 = 0; - } - } - } - return uVar1; -} - - - -void proc_7F03F748(int param_1,float *param_2,float *param_3,longlong param_4) - -{ - ushort uVar1; - int iVar2; - bool bVar3; - float *pfVar4; - ushort *puVar5; - ushort *puVar6; - float fVar7; - float fVar8; - - puVar5 = **(ushort ***)(param_1 + 8); - bVar3 = true; - if (puVar5 != NULL) { - uVar1 = *puVar5; - while( true ) { - if ((uVar1 & 0xff) == 10) { - iVar2 = *(int *)(puVar5 + 2); - pfVar4 = (float *)proc_7F06C660(param_1,puVar5,0); - if (param_4 == 0) { - fVar7 = proc_7F03E91C(iVar2,pfVar4); - fVar7 = pfVar4[0xc] + fVar7; - fVar8 = proc_7F03E87C(iVar2,pfVar4); - fVar8 = pfVar4[0xc] + fVar8; - } - else { - if (param_4 == 1) { - fVar7 = proc_7F03EA5C(iVar2,(int)pfVar4); - fVar7 = pfVar4[0xd] + fVar7; - fVar8 = proc_7F03E9BC(iVar2,(int)pfVar4); - fVar8 = pfVar4[0xd] + fVar8; - } - else { - fVar7 = proc_7F03EB9C(iVar2,(int)pfVar4); - fVar7 = pfVar4[0xe] + fVar7; - fVar8 = proc_7F03EAFC(iVar2,(int)pfVar4); - fVar8 = pfVar4[0xe] + fVar8; - } - } - if ((bVar3) || (*param_2 < fVar7)) { - *param_2 = fVar7; - } - if ((bVar3) || (fVar8 < *param_3)) { - *param_3 = fVar8; - } - puVar6 = *(ushort **)(puVar5 + 10); - bVar3 = false; - } - else { - puVar6 = *(ushort **)(puVar5 + 10); - } - if ((puVar6 == NULL) && (puVar6 = puVar5, puVar5 != NULL)) { - puVar6 = *(ushort **)(puVar5 + 6); - while ((puVar6 == NULL && - (puVar5 = *(ushort **)(puVar5 + 4), puVar6 = puVar5, puVar5 != NULL))) { - puVar6 = *(ushort **)(puVar5 + 6); - } - } - if (puVar6 == NULL) break; - uVar1 = *puVar6; - puVar5 = puVar6; - } - } - return; -} - - - -void proc_7F03F90C(int param_1,float *param_2,float *param_3,float *param_4,float *param_5) - -{ - proc_7F03F748(param_1,param_2,param_3,0); - proc_7F03F748(param_1,param_4,param_5,1); - return; -} - - - -void proc_7F03F948(float *param_1,float *param_2,undefined4 *param_3,float *param_4,float *param_5) - -{ - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fStack12 = *param_2; - fStack8 = param_1[1]; - fStack4 = param_1[2]; - proc_7F077FF4(&fStack12,&fStack20); - *param_4 = fStack20; - fStack12 = param_2[1]; - fStack8 = param_1[1]; - fStack4 = param_1[2]; - proc_7F077FF4(&fStack12,&fStack20); - *param_5 = fStack20; - fStack12 = *param_1; - fStack8 = (float)param_3[1]; - fStack4 = param_1[2]; - proc_7F077FF4(&fStack12,&fStack20); - param_4[1] = fStack16; - fStack12 = *param_1; - fStack8 = (float)*param_3; - fStack4 = param_1[2]; - proc_7F077FF4(&fStack12,&fStack20); - param_5[1] = fStack16; - return; -} - - - -int scan_position_data_table_for_normal_object_at_preset(short param_1) - -{ - char cVar1; - char *pcVar2; - - pcVar2 = (char *)get_ptr_obj_pos_list_current_entry(); - if (pcVar2 != NULL) { - cVar1 = *pcVar2; - while( true ) { - if (cVar1 == '\x01') { - if ((longlong)(int)param_1 == (longlong)*(short *)(*(int *)(pcVar2 + 4) + 6)) { - return *(int *)(pcVar2 + 4); - } - pcVar2 = *(char **)(pcVar2 + 0x24); - } - else { - pcVar2 = *(char **)(pcVar2 + 0x24); - } - if (pcVar2 == NULL) break; - cVar1 = *pcVar2; - } - } - return 0; -} - - - -undefined4 proc_7F03FAB0(float *param_1,ulonglong param_2) - -{ - char cVar1; - longlong lVar2; - char *pcVar3; - uint uStack12; - float *apfStack8 [2]; - - pcVar3 = (char *)get_ptr_obj_pos_list_current_entry(); - if (pcVar3 != NULL) { - cVar1 = *pcVar3; - while( true ) { - if (cVar1 == '\x01') { - if (param_2 == (ulonglong)*(byte *)(*(int *)(pcVar3 + 0x14) + 3)) { - proc_7F03CCB0(pcVar3,(int **)apfStack8,&uStack12); - lVar2 = proc_7F03CCD8(param_1,apfStack8[0],uStack12); - if (lVar2 != 0) { - return *(undefined4 *)(pcVar3 + 4); - } - pcVar3 = *(char **)(pcVar3 + 0x24); - } - else { - pcVar3 = *(char **)(pcVar3 + 0x24); - } - } - else { - pcVar3 = *(char **)(pcVar3 + 0x24); - } - if (pcVar3 == NULL) break; - cVar1 = *pcVar3; - } - } - return 0; -} - - - -void proc_7F03FB70(uint *param_1) - -{ - ulonglong uVar1; - uint uVar2; - - if ((*param_1 & 0x80) == 0) { - uVar2 = *param_1; - } - else { - if (param_1[0x26] == 0) { - uVar2 = param_1[0x27]; - } - else { - uVar1 = music_related_26(param_1[0x26]); - if (uVar1 == 0) { - uVar2 = param_1[0x27]; - } - else { - music_related_28(param_1[0x26]); - uVar2 = param_1[0x27]; - } - } - if (uVar2 == 0) { - uVar2 = *param_1; - } - else { - uVar1 = music_related_26(uVar2); - if (uVar1 == 0) { - uVar2 = *param_1; - } - else { - music_related_28(param_1[0x27]); - uVar2 = *param_1; - } - } - } - *param_1 = uVar2 | 0x80000000; - return; -} - - - -void proc_7F03FBFC(undefined4 *param_1) - -{ - float fVar1; - - *param_1 = 0; - param_1[0x22] = 0; - param_1[1] = 0; - param_1[2] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[5] = 0; - param_1[6] = 0; - param_1[7] = 0; - param_1[0x18] = 0x3f800000; - fVar1 = flt_80052A48; - param_1[0x24] = 0; - param_1[0x28] = 0xffffffff; - param_1[0x29] = 0; - param_1[0x2a] = 0; - param_1[0x2b] = 0xffffffff; - param_1[0x2e] = 1; - param_1[0x2f] = 0; - param_1[0x38] = 0; - param_1[0x39] = 0; - param_1[0x3a] = 0; - param_1[0x25] = 0; - param_1[0x30] = 0x3f800000; - param_1[0x31] = 0x3f800000; - param_1[0x32] = 0x3f800000; - *(float *)(param_1 + 0x23) = fVar1; - return; -} - - - -undefined4 * proc_7F03FC80(void) - -{ - uint uVar1; - uint *puVar2; - undefined4 *puVar3; - int iVar4; - int iVar5; - - iVar5 = -1; - puVar2 = &DAT_80073dc0; - iVar4 = 0; - do { - uVar1 = *puVar2; - puVar2 = puVar2 + 0x3b; - if ((uVar1 & 0x80000000) != 0) { - proc_7F03FBFC((undefined4 *)((int)&DAT_80073dc0 + iVar4)); - return (undefined4 *)((int)&DAT_80073dc0 + iVar4); - } - iVar4 += 0xec; - } while (puVar2 < &DAT_80075030); - puVar3 = &DAT_80073dc0; - iVar4 = 0; - do { - if ((puVar3[0x39] != 0) && - ((iVar5 < 0 || ((int)puVar3[0x3a] < (int)(&DAT_80073ea8)[iVar5 * 0x3b])))) { - iVar5 = iVar4; - } - iVar4 += 1; - puVar3 = puVar3 + 0x3b; - } while (iVar4 != 0x14); - puVar3 = NULL; - if (-1 < iVar5) { - proc_7F040CF0(*(int *)((&DAT_80073ea4)[iVar5 * 0x3b] + 0x10)); - puVar3 = &DAT_80073dc0 + iVar5 * 0x3b; - *(uint *)((&DAT_80073ea4)[iVar5 * 0x3b] + 100) = - *(uint *)((&DAT_80073ea4)[iVar5 * 0x3b] + 100) | 4; - proc_7F03FBFC(puVar3); - } - return puVar3; -} - - - -void proc_7F03FDA8(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - - iVar1 = *(int *)(param_1 + 4); - if ((*(uint *)(iVar1 + 100) & 0x40) == 0) { - if ((*(uint *)(iVar1 + 100) & 0x80) == 0) { - puVar2 = proc_7F03FC80(); - *(undefined4 **)(iVar1 + 0x6c) = puVar2; - if (puVar2 != NULL) { - *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) | 0x80; - } - } - } - else { - puVar2 = proc_7F03FC80(); - *(undefined4 **)(*(int *)(iVar1 + 0x6c) + 0x44) = puVar2; - } - return; -} - - - -void proc_7F03FE14(int param_1) - -{ - undefined uVar1; - int iVar2; - uint *puVar3; - - iVar2 = *(int *)(param_1 + 4); - puVar3 = NULL; - if ((*(uint *)(iVar2 + 100) & 0x40) == 0) { - if ((*(uint *)(iVar2 + 100) & 0x80) != 0) { - puVar3 = *(uint **)(iVar2 + 0x6c); - } - } - else { - puVar3 = *(uint **)(*(int *)(iVar2 + 0x6c) + 0x44); - } - if (puVar3 != NULL) { - *puVar3 = *puVar3 | 4; - if (*(int *)(param_1 + 0x14) != 0) { - uVar1 = *(undefined *)(*(int *)(param_1 + 0x14) + 3); - *(undefined *)((int)puVar3 + 0xcd) = 0xff; - *(undefined *)(puVar3 + 0x33) = uVar1; - return; - } - *(undefined *)(puVar3 + 0x33) = 0xff; - } - return; -} - - - -void proc_7F03FE88(uint *param_1) - -{ - *param_1 = *param_1 | 1; - return; -} - - - -int proc_7F03FE98(void) - -{ - int iVar1; - uint *puVar2; - - puVar2 = &DAT_80075030; - iVar1 = 0; - while( true ) { - if ((*puVar2 & 1) != 0) { - *puVar2 = 0; - puVar2[0x11] = 0; - return (int)&DAT_80075030 + iVar1; - } - if ((puVar2[0x12] & 1) != 0) { - puVar2[0x12] = 0; - puVar2[0x23] = 0; - return (int)&DAT_80075078 + iVar1; - } - if ((puVar2[0x24] & 1) != 0) { - puVar2[0x24] = 0; - puVar2[0x35] = 0; - return (int)&DAT_800750c0 + iVar1; - } - if ((puVar2[0x36] & 1) != 0) break; - puVar2 = puVar2 + 0x48; - iVar1 += 0x120; - if (puVar2 == &objinst) { - return 0; - } - } - puVar2[0x36] = 0; - puVar2[0x47] = 0; - return (int)&DAT_80075108 + iVar1; -} - - - -int proc_7F03FF60(int param_1) - -{ - if ((*(byte *)(param_1 + 2) & 0x80) != 0) { - return (int)(*(float *)(param_1 + 0x70) + 4.00000000); - } - return (int)((*(float *)(param_1 + 0x70) * 3.00000000) / *(float *)(param_1 + 0x74)); -} - - - -int do_something_if_object_destroyed(int param_1) - -{ - if ((*(byte *)(param_1 + 2) & 0x80) != 0) { - return ((int)*(float *)(param_1 + 0x70) >> 2) + 1; - } - return 0; -} - - - -undefined4 proc_7F03FFF8(int *param_1) - -{ - short sVar1; - short *psVar2; - short *psVar3; - - psVar3 = *(short **)(*param_1 + 0x14); - if (psVar3 != NULL) { - if (psVar3 != NULL) { - sVar1 = *psVar3; - psVar2 = psVar3; - while( true ) { - if (sVar1 == 10) { - return *(undefined4 *)(psVar2 + 2); - } - psVar2 = *(short **)(psVar2 + 6); - if (psVar2 == NULL) break; - sVar1 = *psVar2; - } - } - psVar3 = *(short **)(psVar3 + 10); - if ((psVar3 != NULL) && (psVar3 != NULL)) { - sVar1 = *psVar3; - while( true ) { - if (sVar1 == 10) { - return *(undefined4 *)(psVar3 + 2); - } - psVar3 = *(short **)(psVar3 + 6); - if (psVar3 == NULL) break; - sVar1 = *psVar3; - } - } - } - return 0; -} - - - -undefined4 proc_7F040078(int param_1) - -{ - undefined4 uVar1; - - uVar1 = proc_7F03FFF8(*(int **)(*(int *)(param_1 + 0x14) + 8)); - return uVar1; -} - - - -void proc_7F04009C(int param_1,byte *param_2) - -{ - byte bVar1; - byte bVar2; - byte bVar3; - int iVar4; - float fVar5; - uint uVar6; - int iVar7; - ulonglong uVar8; - byte *pbVar9; - uint uVar10; - float fVar11; - byte bVar12; - - copy_tile_RGB_as_24bit - (*(int **)(param_1 + 0x14),*(int *)(param_1 + 8),*(int *)(param_1 + 0x10), - (tile_rgb *)param_2); - bVar1 = param_2[2]; - bVar2 = *param_2; - bVar3 = param_2[1]; - fVar11 = (float)(0xff - ((int)((uint)bVar1 * 0x14 + (uint)bVar1 + - ((uint)bVar2 * 0x50 - (uint)bVar2) + - ((uint)bVar3 * 0x28 - (uint)bVar3) * 4) >> 8)) * 0.75000000; - if (false) { - fVar5 = ROUND(fVar11); - } - else { - fVar5 = FLOOR(fVar11); - } - bVar12 = (byte)(int)fVar5; - if (false) { - if (false) { - fVar11 = ROUND(fVar11 - 2147483648.00000000); - } - else { - fVar11 = FLOOR(fVar11 - 2147483648.00000000); - } - if (true) { - bVar12 = (byte)(int)fVar11; - goto LAB_7f0401b8; - } - } - else { - if (-1 < (int)fVar5) goto LAB_7f0401b8; - } - bVar12 = 0xff; -LAB_7f0401b8: - param_2[3] = bVar12; - uVar10 = (uint)(bVar3 <= bVar2); - uVar6 = (uint)(bVar3 > bVar2); - pbVar9 = param_2 + uVar6; - uVar8 = (ulonglong)*pbVar9; - if (uVar8 < (ulonglong)bVar1) { - pbVar9 = param_2 + 2; - uVar8 = (ulonglong)*pbVar9; - } - else { - if ((ulonglong)param_2[uVar10] < (ulonglong)bVar1) { - uVar6 = 2; - } - else { - uVar6 = uVar10; - uVar10 = 2; - } - } - if (uVar8 != 0) { - bVar1 = param_2[uVar10]; - bVar2 = param_2[uVar6]; - param_2[uVar10] = 0; - iVar7 = (int)uVar8 - (uint)bVar1; - iVar4 = (uint)bVar2 * iVar7; - param_2[uVar6] = (byte)(iVar4 / (int)uVar8); - *pbVar9 = (byte)iVar7; - if (uVar8 == 0) { - trap(0x1c00); - } - if ((uVar8 == 0xffffffffffffffff) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - bVar3 = param_2[1]; - bVar2 = *param_2; - bVar1 = param_2[2]; - } - *param_2 = bVar2 >> 1; - param_2[1] = bVar3 >> 1; - param_2[2] = bVar1 >> 1; - return; -} - - - -void proc_7F0402B4(int param_1,byte *param_2) - -{ - if ((*(uint *)(*(int *)(param_1 + 4) + 8) & 0x400) == 0) { - proc_7F04009C(param_1,param_2); - *param_2 = *param_2 >> 1; - param_2[1] = param_2[1] >> 1; - param_2[2] = param_2[2] >> 1; - } - return; -} - - - -void proc_7F040310(byte *param_1,byte *param_2) - -{ - *param_1 = *param_1 + (char)((int)(((uint)*param_2 - (uint)*param_1) + 7) >> 3); - param_1[1] = param_1[1] + (char)((int)(((uint)param_2[1] - (uint)param_1[1]) + 7) >> 3); - param_1[2] = param_1[2] + (char)((int)(((uint)param_2[2] - (uint)param_1[2]) + 7) >> 3); - param_1[3] = param_1[3] + (char)((int)(((uint)param_2[3] - (uint)param_1[3]) + 7) >> 3); - return; -} - - - -void proc_7F040384(int *param_1,longlong param_2,float *param_3) - -{ - if (param_2 == 1) { - *param_3 = *param_3 * 255.00000000; - param_3[1] = param_3[1] * 255.00000000; - param_3[2] = param_3[2] * 255.00000000; - *param_1 = (int)(param_3[3] * (*param_3 - (float)*param_1) + (float)*param_1); - param_1[1] = (int)(param_3[3] * (param_3[1] - (float)param_1[1]) + (float)param_1[1]); - param_1[2] = (int)(param_3[3] * (param_3[2] - (float)param_1[2]) + (float)param_1[2]); - param_1[3] = (int)(param_3[3] * (255.00000000 - (float)param_1[3]) + (float)param_1[3]); - } - return; -} - - - -void proc_7F040484(int param_1) - -{ - float fVar1; - undefined4 auStack68 [16]; - int iStack4; - - if (*(int *)(param_1 + 0x68) != 0) { - iStack4 = proc_7F040078(param_1); - proc_7F058020((undefined4 *)(param_1 + 0x18),auStack68); - proc_7F058998((undefined4 *)(param_1 + 0x58),(int)auStack68); - proc_7F03F540((longlong)iStack4,(longlong)(int)auStack68, - (float *)(*(uint **)(param_1 + 0x68) + 1),*(uint **)(param_1 + 0x68)); - fVar1 = proc_7F03E9BC(iStack4,(int)auStack68); - *(float *)(*(int *)(param_1 + 0x68) + 0x48) = fVar1 + *(float *)(param_1 + 0x5c); - fVar1 = proc_7F03EA5C(iStack4,(int)auStack68); - *(float *)(*(int *)(param_1 + 0x68) + 0x44) = fVar1 + *(float *)(param_1 + 0x5c); - if (*(char *)(param_1 + 3) == '(') { - *(float *)(*(int *)(param_1 + 0x68) + 0x48) = - *(float *)(*(int *)(param_1 + 0x68) + 0x48) - 200.00000000; - } - } - return; -} - - - -undefined * init_standard_object(int param_1,ushort **param_2,undefined *param_3,uint param_4) - -{ - uint uVar1; - f32 scale; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f12_01; - f32 extraout_f12_02; - - if (param_3 == NULL) { - param_3 = (undefined *)remove_last_obj_pos_data_entry(); - scale = extraout_f12; - } - if (param_4 == 0) { - if (*(char *)(param_1 + 3) == '(') { - param_4 = get_aircraft_obj_instance_controller((int *)param_2); - scale = extraout_f12_00; - } - else { - param_4 = get_obj_instance_controller_for_header((PitemZ_header *)param_2); - scale = extraout_f12_01; - } - } - if (((object_standard *)param_3 == NULL) || ((int *)param_4 == NULL)) { - if ((int *)param_4 != NULL) { - if (*(char *)(param_1 + 3) == '(') { - set_aircraft_obj_inst_scale_to_zero((int *)param_4); - } - else { - set_obj_instance_scale_to_zero((int *)param_4); - } - } - if ((object_standard *)param_3 != NULL) { - set_last_obj_pos_data((object_standard *)param_3); - param_3 = NULL; - } - } - else { - *(uint *)(param_1 + 0x14) = param_4; - *(undefined4 *)(param_1 + 0x68) = 0; - if ((*(uint *)(param_1 + 8) & 0x100) == 0) { - *(byte *)(param_1 + 2) = *(byte *)(param_1 + 2) & 0xf7; - } - else { - uVar1 = allocate_bytes_in_bank(0x50,4); - *(uint *)(param_1 + 0x68) = uVar1; - *(byte *)(param_1 + 2) = *(byte *)(param_1 + 2) | 8; - scale = extraout_f12_02; - } - *(undefined **)(param_1 + 0x10) = param_3; - *(undefined4 *)(param_1 + 0x6c) = 0; - *(undefined *)(param_1 + 0x78) = 0; - *(undefined *)(param_1 + 0x79) = 0; - *(undefined *)(param_1 + 0x7a) = 0; - *(undefined *)(param_1 + 0x7b) = 0; - *(undefined *)(param_1 + 0x7c) = 0; - *(undefined *)(param_1 + 0x7d) = 0; - *(undefined *)(param_1 + 0x7e) = 0; - *(undefined *)(param_1 + 0x7f) = 0; - *(undefined4 *)(param_1 + 0x70) = 0; - **(undefined2 **)(param_1 + 0x14) = 0xffff; - *(undefined4 *)(*(int *)(param_1 + 0x14) + 4) = 0; - set_obj_instance_controller_scale(*(int *)(param_1 + 0x14),scale); - *(undefined *)&((object_standard *)param_3)->extrascale = 1; - *(int *)&((object_standard *)param_3)->obj = param_1; - ((object_standard *)param_3)->flags = 0; - *(undefined4 *)(param_1 + 0x58) = 0; - ((object_standard *)param_3)->flags2 = 0; - *(undefined4 *)(param_1 + 0x5c) = 0; - ((object_standard *)param_3)->runtime_ptr_obj_posdata = 0; - *(undefined4 *)(param_1 + 0x60) = 0; - ((object_standard *)param_3)->runtime_ptr_obj_instance_controller = 0; - } - return param_3; -} - - - -undefined * proc_7F0406F8(int param_1,ushort **param_2) - -{ - undefined *puVar1; - - puVar1 = init_standard_object(param_1,param_2,NULL,0); - return puVar1; -} - - - -undefined * proc_7F04071C(int param_1) - -{ - undefined *puVar1; - - puVar1 = proc_7F0406F8(param_1,(ushort **)PitemZ_entries[(int)*(short *)(param_1 + 4)].header); - return puVar1; -} - - - -void proc_7F040754(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4) - -{ - int iVar1; - undefined4 uVar2; - - iVar1 = *(int *)(param_1 + 0x10); - proc_7F058020(param_3,(undefined4 *)(param_1 + 0x18)); - uVar2 = *param_2; - *(undefined4 *)(iVar1 + 8) = uVar2; - *(undefined4 *)(param_1 + 0x58) = uVar2; - uVar2 = param_2[1]; - *(undefined4 *)(iVar1 + 0xc) = uVar2; - *(undefined4 *)(param_1 + 0x5c) = uVar2; - uVar2 = param_2[2]; - *(undefined4 *)(iVar1 + 0x10) = uVar2; - *(undefined4 *)(param_1 + 0x60) = uVar2; - *(undefined4 *)(iVar1 + 0x14) = param_4; - proc_7F0402B4(*(int *)(param_1 + 0x10),(byte *)(param_1 + 0x7c)); - *(undefined *)(param_1 + 0x78) = *(undefined *)(param_1 + 0x7c); - *(undefined *)(param_1 + 0x79) = *(undefined *)(param_1 + 0x7d); - *(undefined *)(param_1 + 0x7a) = *(undefined *)(param_1 + 0x7e); - *(undefined *)(param_1 + 0x7b) = *(undefined *)(param_1 + 0x7f); - return; -} - - - -void proc_7F0407F4(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4) - -{ - int iVar1; - float fVar2; - - iVar1 = proc_7F03FFF8(*(int **)(*(int *)(param_1 + 0x14) + 8)); - fVar2 = (float)proc_7F0B2970(); - *(float *)(param_2 + 1) = fVar2 + 4.00000000; - fVar2 = proc_7F03E9BC(iVar1,(int)param_3); - *(float *)(param_2 + 1) = (float)param_2[1] - fVar2; - proc_7F040754(param_1,param_2,param_3,param_4); - proc_7F040484(param_1); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F04088C(void) - -{ - int iVar2; - longlong lVar1; - int in_a0_lo; - undefined8 extraout_a0; - float *in_a1_lo; - float *in_a2_lo; - int in_a3_lo; - float in_f0; - float extraout_f12; - float extraout_f12_00; - float fVar3; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float fVar4; - float *in_stack_00000010; - float fStack120; - float fStack116; - undefined4 uStack112; - int *piStack108; - float fStack104; - float afStack96 [4]; - float fStack80; - float fStack76; - float fStack72; - int iStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - int iStack8; - - iStack8 = proc_7F03FFF8(*(int **)(*(int *)(in_a0_lo + 0x14) + 8)); - proc_7F03E864(iStack8); - fStack12 = in_f0; - proc_7F03E86C(iStack8); - if ((*(uint *)(in_a0_lo + 8) & 4) == 0) { - if ((*(uint *)(in_a0_lo + 8) & 8) == 0) { - iStack32 = in_a3_lo; - fStack16 = in_f0; - fStack104 = (float)proc_7F0B2970(); - proc_7F058020(in_a2_lo,afStack96); - fStack28 = *in_stack_00000010 - fStack80 * fStack12; - fStack20 = in_stack_00000010[2] - fStack72 * fStack12; - iVar2 = proc_7F03FAB0(in_a1_lo,(ulonglong)*(byte *)(in_a3_lo + 3)); - if (iVar2 == 0) { - fStack24 = (fStack104 - fStack76 * fStack12) + 4.00000000; - fVar3 = fStack104; - fVar4 = extraout_f14_01; - } - else { - proc_7F03CC20(*(char **)(iVar2 + 0x10),&piStack108,&uStack112,&fStack116,&fStack120); - if ((fStack116 <= fStack104) || - (fStack76 * (fStack16 - fStack12) + fStack104 + 4.00000000 <= fStack120)) { - fStack24 = (fStack104 - fStack76 * fStack12) + 4.00000000; - fVar3 = fStack104; - fVar4 = extraout_f14_02; - } - else { - fStack24 = fStack116 - fStack76 * fStack12; - *(uint *)(in_a0_lo + 100) = *(uint *)(in_a0_lo + 100) | 0x8000; - fVar3 = fStack104; - fVar4 = extraout_f14_02; - } - } - } - else { - iStack32 = in_a3_lo; - proc_7F058020(in_a2_lo,afStack96); - fStack28 = *in_stack_00000010 - fStack80 * fStack12; - fStack24 = in_stack_00000010[1] - fStack76 * fStack12; - fStack20 = in_stack_00000010[2] - fStack72 * fStack12; - fVar3 = extraout_f12_00; - fVar4 = extraout_f14_00; - } - } - else { - iStack32 = in_a3_lo; - fStack16 = in_f0; - proc_7F058688(flt_80052A4C,extraout_a0,afStack96); - proc_7F058068(in_a2_lo,afStack96); - fStack28 = *in_stack_00000010 - fStack80 * fStack16; - fStack24 = in_stack_00000010[1] - fStack76 * fStack16; - fStack20 = in_stack_00000010[2] - fStack72 * fStack16; - fVar3 = extraout_f12; - fVar4 = extraout_f14; - } - lVar1 = (longlong)(int)in_a1_lo; - if (((*(uint *)(in_a0_lo + 0xc) & 1) == 0) && - (proc_7F0B0BE4(&iStack32,fVar3,fVar4,*in_a1_lo,in_a1_lo[2]), lVar1 != 0)) { - proc_7F040754(in_a0_lo,&fStack28,afStack96,iStack32); - } - else { - proc_7F040754(in_a0_lo,in_a1_lo,afStack96,in_a3_lo); - if ((*(uint *)(in_a0_lo + 0xc) & 1) == 0) { - if ((*(uint *)(in_a0_lo + 8) & 0x1000) == 0) goto LAB_7f040b84; - *(float *)(in_a0_lo + 0x58) = fStack28; - } - else { - *(float *)(in_a0_lo + 0x58) = fStack28; - } - *(float *)(in_a0_lo + 0x5c) = fStack24; - *(float *)(in_a0_lo + 0x60) = fStack20; - } -LAB_7f040b84: - proc_7F040484(in_a0_lo); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F040BA0(void) - -{ - int iVar2; - longlong lVar1; - int in_a0_lo; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - float *in_a1_lo; - float *in_a2_lo; - int in_a3_lo; - float in_f0; - float extraout_f12; - float extraout_f14; - float *in_stack_00000010; - float afStack156 [16]; - float afStack92 [8]; - float fStack60; - float fStack56; - float fStack52; - int iStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - - iVar2 = proc_7F03FFF8(*(int **)(*(int *)(in_a0_lo + 0x14) + 8)); - proc_7F03E874(iVar2); - iStack28 = in_a3_lo; - fStack12 = in_f0; - proc_7F058570(flt_80052A50,extraout_a0,afStack92); - proc_7F0585FC(flt_80052A54,extraout_a0_00,afStack156); - proc_7F058068(afStack156,afStack92); - proc_7F058068(in_a2_lo,afStack92); - fStack24 = *in_stack_00000010 - fStack60 * fStack12; - fStack20 = in_stack_00000010[1] - fStack56 * fStack12; - lVar1 = (longlong)(int)in_a1_lo; - fStack16 = in_stack_00000010[2] - fStack52 * fStack12; - if (((*(uint *)(in_a0_lo + 0xc) & 1) == 0) && - (proc_7F0B0BE4(&iStack28,extraout_f12,extraout_f14,*in_a1_lo,in_a1_lo[2]), lVar1 != 0)) { - proc_7F040754(in_a0_lo,&fStack24,afStack92,iStack28); - } - else { - proc_7F040754(in_a0_lo,in_a1_lo,afStack92,in_a3_lo); - *(float *)(in_a0_lo + 0x58) = fStack24; - *(float *)(in_a0_lo + 0x5c) = fStack20; - *(float *)(in_a0_lo + 0x60) = fStack16; - } - proc_7F040484(in_a0_lo); - return; -} - - - -void proc_7F040CF0(int param_1) - -{ - int iVar1; - uint uVar2; - uint *puVar3; - - iVar1 = *(int *)(param_1 + 4); - uVar2 = *(uint *)(iVar1 + 100); - if ((uVar2 & 0x40) == 0) { - if ((uVar2 & 0x80) != 0) { - proc_7F03FB70(*(uint **)(iVar1 + 0x6c)); - *(undefined4 *)(iVar1 + 0x6c) = 0; - *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) & 0xffffff7f; - } - } - else { - puVar3 = *(uint **)(iVar1 + 0x6c); - if (puVar3 != NULL) { - if ((uint *)puVar3[0x11] != NULL) { - proc_7F03FB70((uint *)puVar3[0x11]); - puVar3 = *(uint **)(iVar1 + 0x6c); - } - proc_7F03FE88(puVar3); - uVar2 = *(uint *)(iVar1 + 100); - } - *(undefined4 *)(iVar1 + 0x6c) = 0; - *(uint *)(iVar1 + 100) = uVar2 & 0xffffffbf; - } - return; -} - - - -void proc_7F040D98(int param_1,int param_2,longlong param_3) - -{ - char cVar1; - int iVar2; - ulonglong uVar3; - int iVar4; - - cVar1 = *(char *)(param_1 + 3); - if (cVar1 == '\r') { - if (*(int *)(param_1 + 0xc4) == 0) { - iVar4 = *(int *)(param_1 + 200); - } - else { - uVar3 = music_related_26(*(int *)(param_1 + 0xc4)); - if (uVar3 == 0) { - iVar4 = *(int *)(param_1 + 200); - } - else { - music_related_28(*(int *)(param_1 + 0xc4)); - iVar4 = *(int *)(param_1 + 200); - } - } - if (iVar4 == 0) { - iVar4 = *(int *)(param_1 + 0x10); - } - else { - uVar3 = music_related_26(iVar4); - if (uVar3 == 0) { - iVar4 = *(int *)(param_1 + 0x10); - } - else { - music_related_28(*(int *)(param_1 + 200)); - iVar4 = *(int *)(param_1 + 0x10); - } - } - goto LAB_7f040f28; - } - if (cVar1 == '\b') { - if (*(int *)(param_1 + 0x84) == 0) { - iVar4 = *(int *)(param_1 + 0x10); - goto LAB_7f040f28; - } - *(undefined4 *)(*(int *)(param_1 + 0x84) + 0x84) = 0; - *(undefined4 *)(param_1 + 0x84) = 0; - } - else { - if (cVar1 == '\x01') { - if (*(int *)(param_1 + 0xf4) == 0) { - iVar4 = *(int *)(param_1 + 0xf8); - } - else { - uVar3 = music_related_26(*(int *)(param_1 + 0xf4)); - if (uVar3 == 0) { - iVar4 = *(int *)(param_1 + 0xf8); - } - else { - music_related_28(*(int *)(param_1 + 0xf4)); - iVar4 = *(int *)(param_1 + 0xf8); - } - } - if (iVar4 == 0) { - iVar4 = *(int *)(param_1 + 0x10); - } - else { - uVar3 = music_related_26(iVar4); - if (uVar3 == 0) { - iVar4 = *(int *)(param_1 + 0x10); - } - else { - music_related_28(*(int *)(param_1 + 0xf8)); - iVar4 = *(int *)(param_1 + 0x10); - } - } - goto LAB_7f040f28; - } - if (cVar1 == '/') { - if (*(int *)(param_1 + 0x8c) < 0) { - iVar4 = *(int *)(param_1 + 0x10); - } - else { - proc_7F0B9DBC(*(int *)(param_1 + 0x8c),1); - iVar4 = *(int *)(param_1 + 0x10); - } - goto LAB_7f040f28; - } - if (cVar1 == '(') { - if (*(int *)(param_1 + 0xb0) == 0) { - iVar4 = *(int *)(param_1 + 0x10); - } - else { - uVar3 = music_related_26(*(int *)(param_1 + 0xb0)); - if (uVar3 == 0) { - iVar4 = *(int *)(param_1 + 0x10); - } - else { - music_related_28(*(int *)(param_1 + 0xb0)); - iVar4 = *(int *)(param_1 + 0x10); - } - } - goto LAB_7f040f28; - } - if (cVar1 != '\'') { - iVar4 = *(int *)(param_1 + 0x10); - goto LAB_7f040f28; - } - if (*(int *)(param_1 + 0xac) == 0) { - iVar4 = *(int *)(param_1 + 0x10); - goto LAB_7f040f28; - } - uVar3 = music_related_26(*(int *)(param_1 + 0xac)); - if (uVar3 == 0) { - iVar4 = *(int *)(param_1 + 0x10); - goto LAB_7f040f28; - } - music_related_28(*(int *)(param_1 + 0xac)); - } - iVar4 = *(int *)(param_1 + 0x10); -LAB_7f040f28: - if (iVar4 != 0) { - proc_7F0A0CCC(iVar4,'\0'); - proc_7F0A0CCC(*(int *)(param_1 + 0x10),'\x01'); - if (param_3 == 0) { - proc_7F040CF0(*(int *)(param_1 + 0x10)); - iVar4 = *(int *)(param_1 + 0x10); - if (*(int *)(iVar4 + 0x1c) != 0) { - proc_7F04C044(iVar4); - iVar4 = *(int *)(param_1 + 0x10); - } - proc_7F03E18C(iVar4); - iVar4 = *(int *)(*(char **)(param_1 + 0x10) + 0x20); - if (iVar4 == 0) { - cVar1 = **(char **)(param_1 + 0x10); - } - else { - do { - iVar2 = *(int *)(iVar4 + 0x24); - proc_7F041024(*(int *)(iVar4 + 4),1); - iVar4 = iVar2; - } while (iVar2 != 0); - cVar1 = **(char **)(param_1 + 0x10); - } - if (cVar1 == '\x02') { - cVar1 = *(char *)(param_1 + 3); - } - else { - proc_7F050DE8(*(int *)(param_1 + 0x14)); - cVar1 = *(char *)(param_1 + 3); - } - if (cVar1 == '(') { - set_aircraft_obj_inst_scale_to_zero(*(int **)(param_1 + 0x14)); - } - else { - set_obj_instance_scale_to_zero(*(int **)(param_1 + 0x14)); - } - if (param_2 == 0) { - *(undefined4 *)(param_1 + 0x10) = 0; - } - else { - proc_7F03A538(*(int *)(param_1 + 0x10)); - unset_stateflag_0x04_for_posdata(*(int *)(param_1 + 0x10)); - set_last_obj_pos_data(*(object_standard **)(param_1 + 0x10)); - *(undefined4 *)(param_1 + 0x10) = 0; - } - } - } - return; -} - - - -void proc_7F041024(int param_1,int param_2) - -{ - proc_7F040D98(param_1,param_2,0); - return; -} - - - -undefined4 proc_7F041044(int param_1) - -{ - undefined4 in_v0_lo; - - if (*(char *)(param_1 + 3) == '\x04') { - return in_v0_lo; - } - return in_v0_lo; -} - - - -undefined8 proc_7F041074(float *param_1,float *param_2,float *param_3,float param_4) - -{ - undefined8 uVar1; - float in_a3_lo; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - - uVar1 = 0; - fVar4 = *param_3 - *param_1; - fVar6 = param_3[1] - param_1[1]; - fVar5 = param_3[2] - param_1[2]; - fVar7 = *param_2; - fVar8 = param_2[1]; - fVar3 = param_2[2]; - fVar2 = fVar5 * fVar3 + fVar7 * fVar4 + fVar8 * fVar6; - if ((0.00000000 < fVar2) && - (((fVar5 * fVar5 + fVar4 * fVar4 + fVar6 * fVar6) - in_a3_lo * in_a3_lo) * - (fVar3 * fVar3 + fVar7 * fVar7 + fVar8 * fVar8) <= fVar2 * fVar2)) { - uVar1 = 1; - } - return uVar1; -} - - - -undefined8 -proc_7F041160(int param_1,float *param_2,float *param_3,float *param_4,float *param_5,int *param_6, - ushort **param_7) - -{ - int iVar1; - longlong lVar2; - int iVar4; - undefined8 uVar3; - float *pfVar5; - float *pfVar6; - ushort *puStack68; - int iStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - ushort *apuStack12 [3]; - - iVar1 = *(int *)(param_1 + 0x14); - apuStack12[0] = NULL; - puStack68 = NULL; - if (*(char *)(param_1 + 3) == '\x01') { - lVar2 = proc_7F0747D0(param_1 + 0xd0,*(float **)(iVar1 + 0xc),param_2,param_3); - apuStack12[0] = **(ushort ***)(iVar1 + 8); - if ((0 < lVar2) && - (iVar4 = proc_7F04D9B0(iVar1,apuStack12[0],param_2,param_3,&fStack60,&iStack64,&puStack68), - iVar4 == 0)) { - lVar2 = 0; - } - } - else { - do { - iVar4 = proc_7F0752FC(iVar1,param_2,param_3,apuStack12); - lVar2 = (longlong)iVar4; - if ((0 < lVar2) && - (iVar4 = proc_7F04D9B0(iVar1,apuStack12[0],param_2,param_3,&fStack60,&iStack64,&puStack68), - iVar4 != 0)) break; - } while (0 < lVar2); - } - uVar3 = 0; - if (0 < lVar2) { - iVar4 = *(int *)(iVar1 + 0xc); - *param_4 = fStack60; - pfVar6 = (float *)(iVar4 + iStack64 * 0x40); - param_4[1] = fStack56; - param_4[2] = fStack52; - proc_7F058474(pfVar6,param_4); - pfVar5 = (float *)proc_7F078444(); - proc_7F058474(pfVar5,param_4); - *param_5 = fStack48; - param_5[1] = fStack44; - param_5[2] = fStack40; - proc_7F0583D8(pfVar6,param_5); - if (0.00000000 < param_3[2] * param_5[2] + *param_5 * *param_3 + param_5[1] * param_3[1]) { - *param_5 = -*param_5; - param_5[1] = -param_5[1]; - param_5[2] = -param_5[2]; - } - pfVar5 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar5,param_5); - if (((*param_5 == 0.00000000) && (param_5[1] == 0.00000000)) && (param_5[2] == 0.00000000)) { - param_5[2] = 1.00000000; - } - else { - guNormalize(param_5,param_5 + 1,param_5 + 2); - } - uVar3 = 1; - *param_6 = iVar1; - *param_7 = puStack68; - } - return uVar3; -} - - - -undefined8 -proc_7F041400(char *param_1,float *param_2,float *param_3,float *param_4,float *param_5, - float *param_6,float *param_7) - -{ - int iVar1; - int iVar2; - undefined8 uVar3; - ulonglong uVar4; - float *pfVar5; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - int iVar6; - int iVar7; - int iVar8; - float fVar9; - float fVar10; - float fStack108; - float fStack104; - float fStack100; - float fStack92; - undefined4 uStack88; - float fStack84; - float fStack80; - undefined4 uStack76; - float fStack72; - int iStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float fStack16; - float fStack12; - int iStack8; - int *piStack4; - - fVar10 = 1.00000000; - iStack68 = -1; - proc_7F03CC20(param_1,&piStack4,&iStack8,&fStack12,&fStack16); - if (iStack8 < 1) { - uVar3 = 0; - } - else { - if ((param_2[1] <= fStack12) || (param_3[1] <= fStack12)) { - if (param_2[1] < fStack16) { - if (param_3[1] < fStack16) { - return 0; - } - fStack56 = *param_2; - } - else { - fStack56 = *param_2; - } - fStack52 = param_2[2]; - fStack64 = *param_3; - fStack60 = param_3[2]; - if (0 < iStack8) { - iVar7 = 0; - uVar3 = extraout_a1; - iVar6 = 0; - do { - iVar8 = iVar6 + 1; - iVar1 = iVar8 % iStack8; - pfVar5 = (float *)(piStack4 + iVar1 * 2); - if (iStack8 == 0) { - trap(0x1c00); - } - if ((iStack8 == -1) && (iVar8 == -0x80000000)) { - trap(0x1800); - } - uVar4 = proc_7F0B0688(*param_2,param_2[2],(longlong)(int)pfVar5,uVar3,*param_3,param_3[2], - *(float *)((int)piStack4 + iVar7), - ((float *)((int)piStack4 + iVar7))[1],*pfVar5,pfVar5[1]); - uVar3 = extraout_a1_00; - fVar9 = fVar10; - iVar2 = iStack68; - if (uVar4 != 0) { - fStack40 = *(float *)((int)piStack4 + iVar7); - fStack36 = ((float *)((int)piStack4 + iVar7))[1]; - fStack48 = (float)piStack4[iVar1 * 2]; - fStack44 = (float)(piStack4 + iVar1 * 2)[1]; - fVar9 = proc_7F0B3200(&fStack56,&fStack64,&fStack40,&fStack48); - uVar3 = extraout_a1_01; - iVar2 = iVar6; - if (fVar10 <= fVar9) { - uVar3 = extraout_a1_01; - fVar9 = fVar10; - iVar2 = iStack68; - } - } - iStack68 = iVar2; - fVar10 = fVar9; - iVar7 += 8; - iVar6 = iVar8; - } while (iVar8 < iStack8); - } - if (iStack68 < 1) { - uVar3 = 0; - } - else { - fStack80 = (float)piStack4[iStack68 * 2]; - uStack76 = 0; - fStack72 = (float)(piStack4 + iStack68 * 2)[1]; - fStack92 = (float)piStack4[((iStack68 + 1) % iStack8) * 2]; - uStack88 = 0; - fStack84 = (float)(piStack4 + ((iStack68 + 1) % iStack8) * 2)[1]; - if (iStack8 == 0) { - trap(0x1c00); - } - if ((iStack8 == -1) && (iStack68 + 1 == -0x80000000)) { - trap(0x1800); - } - proc_7F026130(&fStack80,&fStack92,param_2,param_4,&fStack108); - fVar10 = param_4[2] * (fStack100 - param_2[2]) + - (fStack108 - *param_2) * *param_4 + (fStack104 - param_2[1]) * param_4[1]; - if (*param_7 <= fVar10) { - uVar3 = 0; - } - else { - *param_7 = fVar10; - *param_5 = fStack108; - param_5[1] = fStack104; - param_5[2] = fStack100; - fVar10 = *param_4; - param_6[1] = 0.00000000; - *param_6 = -fVar10; - param_6[2] = -param_4[2]; - if ((*param_6 == 0.00000000) && (param_6[2] == 0.00000000)) { - param_6[2] = 1.00000000; - } - else { - guNormalize(param_6,param_6 + 1,param_6 + 2); - } - uVar3 = 1; - bodypartshot = 0; - objinst = 0; - DAT_80075b74 = 0; - dword_80030B0C = param_1; - } - } - } - else { - uVar3 = 0; - } - } - return uVar3; -} - - - -ulonglong proc_7F0417DC(int param_1,float *param_2,float *param_3,float *param_4,float param_5, - float *param_6,float *param_7,float *param_8,float *param_9,float *param_10, - int *param_11,ushort **param_12) - -{ - ushort *puVar1; - char *pcVar2; - longlong lVar3; - undefined4 extraout_a3_lo; - float fVar4; - float fVar5; - float extraout_f12; - ushort **in_stack_0000002c; - - puVar1 = *(ushort **)(param_1 + 0x14); - fVar4 = getinstsize((int)puVar1,(uint)param_2,param_3,param_4); - pcVar2 = *(char **)(param_1 + 0x10); - fVar5 = 0.00000000; - if (*(int *)(pcVar2 + 0x1c) == 0) { - fVar5 = param_4[2] * (*(float *)(param_1 + 0x60) - param_2[2]) + - (*(float *)(param_1 + 0x58) - *param_2) * *param_4 + - (*(float *)(param_1 + 0x5c) - param_2[1]) * param_4[1]; - } - if ((-fVar4 <= fVar5) && (fVar5 <= (float)param_6 + fVar4)) { - if ((pcVar2[1] & 2U) == 0) { - getinstsize((int)puVar1,(uint)param_7,param_8,extraout_a3_lo); - lVar3 = proc_7F041074(param_2,param_4,(float *)(param_1 + 0x58),extraout_f12); - if (lVar3 != 0) { - *(float **)param_11 = param_6; - lVar3 = proc_7F041400(pcVar2,param_2,param_3,param_4,param_9,param_10,(float *)param_11); - if (lVar3 != 0) { - *param_12 = puVar1; - *in_stack_0000002c = **(ushort ***)(puVar1 + 4); - return 1; - } - } - } - else { - lVar3 = proc_7F041160(param_1,param_7,param_8,param_9,param_10,(int *)param_12, - in_stack_0000002c); - if (lVar3 != 0) { - fVar4 = param_4[2] * (param_9[2] - param_2[2]) + - (*param_9 - *param_2) * *param_4 + (param_9[1] - param_2[1]) * param_4[1]; - if (fVar4 < 0.00000000) { - return 0; - } - if (fVar4 <= (float)param_6) { - *(float *)param_11 = fVar4; - return 1; - } - return 0; - } - } - } - return 0; -} - - - -undefined8 -proc_7F0419E4(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,float param_5, - float *param_6,float *param_7,float *param_8,float *param_9,float *param_10) - -{ - byte bVar1; - ulonglong uVar2; - longlong lVar3; - int iVar4; - undefined8 uVar5; - float extraout_f12; - float extraout_f12_00; - float param_5_00; - float *in_stack_00000024; - undefined4 uStack36; - ushort *puStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - iVar4 = *(int *)(param_1 + 0x10); - uVar5 = 0; - uVar2 = proc_7F0417DC(param_1,(float *)param_2,(float *)param_3,(float *)param_4,param_5,param_6, - param_7,param_8,&fStack12,&fStack24,(int *)&fStack28,&puStack32); - if (uVar2 != 0) { - if (*in_stack_00000024 <= fStack28) { - bVar1 = *(byte *)(iVar4 + 1); - goto LAB_7f041b0c; - } - *in_stack_00000024 = fStack28; - *param_9 = fStack12; - uVar5 = 1; - param_9[1] = fStack8; - param_9[2] = fStack4; - *param_10 = fStack24; - param_10[1] = fStack20; - param_10[2] = fStack16; - dword_80030B0C = *(undefined4 *)(param_1 + 0x10); - bodypartshot = 0xffffffff; - objinst = puStack32; - DAT_80075b74 = uStack36; - } - bVar1 = *(byte *)(iVar4 + 1); -LAB_7f041b0c: - if (((bVar1 & 2) == 0) || (iVar4 = *(int *)(iVar4 + 0x20), iVar4 == 0)) { - return uVar5; - } - bVar1 = *(byte *)(iVar4 + 1); - param_5_00 = extraout_f12; - do { - if ((bVar1 & 2) == 0) { -LAB_7f041b74: - iVar4 = *(int *)(iVar4 + 0x24); - } - else { - lVar3 = proc_7F0419E4(*(int *)(iVar4 + 4),param_2,param_3,param_4,param_5_00,param_6,param_7, - param_8,param_9,param_10); - if (lVar3 != 0) { - uVar5 = 1; - param_5_00 = extraout_f12_00; - goto LAB_7f041b74; - } - iVar4 = *(int *)(iVar4 + 0x24); - param_5_00 = extraout_f12_00; - } - if (iVar4 == 0) { - return uVar5; - } - bVar1 = *(byte *)(iVar4 + 1); - } while( true ); -} - - - -undefined8 -proc_7F041BB8(int param_1,float *param_2,float *param_3,float param_4,float *param_5,float *param_6, - float *param_7,float *param_8,float *param_9) - -{ - int iVar1; - int iVar2; - float fVar3; - float fVar4; - float *in_stack_00000020; - int *piStack48; - ushort *puStack44; - int iStack40; - int iStack36; - - iVar1 = *(int *)(param_1 + 0x18); - fVar3 = getinstsize(*(int *)(param_1 + 0x1c),(uint)param_2,param_3,param_1); - fVar4 = param_3[2] * (*(float *)(iVar1 + 0x10) - param_2[2]) + - (*(float *)(iVar1 + 8) - *param_2) * *param_3 + - (*(float *)(iVar1 + 0xc) - param_2[1]) * param_3[1]; - if ((-fVar3 <= fVar4) && (fVar4 <= (float)param_5 + fVar3)) { - if ((*(byte *)(iVar1 + 1) & 2) != 0) { - piStack48 = *(int **)(param_1 + 0x20); - iStack36 = proc_7F06C010(&piStack48,param_6,param_7,&iStack40,&puStack44); - if (0 < iStack36) { - iVar2 = proc_7F06C660(iStack40,puStack44,0); - fVar3 = param_7[2] * (*(float *)(iVar2 + 0x38) - param_6[2]) + - (*(float *)(iVar2 + 0x30) - *param_6) * *param_7 + - (*(float *)(iVar2 + 0x34) - param_6[1]) * param_7[1]; - if (*in_stack_00000020 <= fVar3) { - return 0; - } - *in_stack_00000020 = fVar3; - *param_8 = *param_3 * fVar3 + *param_2; - param_8[1] = param_3[1] * fVar3 + param_2[1]; - param_8[2] = param_3[2] * fVar3 + param_2[2]; - fVar3 = *param_3; - param_9[1] = 0.00000000; - *param_9 = -fVar3; - param_9[2] = -param_3[2]; - if ((*param_9 == 0.00000000) && (param_9[2] == 0.00000000)) { - param_9[2] = 1.00000000; - } - else { - guNormalize(param_9,param_9 + 1,param_9 + 2); - } - dword_80030B0C = iVar1; - bodypartshot = iStack36; - objinst = iStack40; - DAT_80075b74 = puStack44; - return 1; - } - } - } - return 0; -} - - - -// WARNING: Instruction at (ram,0x7f0420ac) overlaps instruction at (ram,0x7f0420a8) -// - -longlong proc_7F041E0C(char *param_1,undefined8 param_2,float *param_3,ulonglong param_4, - float *param_5,float *param_6,int *param_7) - -{ - char cVar1; - char *pcVar4; - float *pfVar5; - longlong lVar2; - ulonglong uVar3; - float *pfVar6; - int iVar7; - char *pcVar8; - short *psVar9; - float *pfVar10; - float fVar11; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack32; - float fStack28; - float fStack24; - int iStack20; - float *apfStack16 [3]; - int iStack4; - - iStack4 = 0; - iStack20 = 0; - pcVar4 = (char *)get_ptr_for_players_tank(); - pfVar6 = (float *)param_2; - fStack32 = *param_3 - *pfVar6; - fStack28 = param_3[1] - pfVar6[1]; - fStack24 = param_3[2] - pfVar6[2]; - pfVar10 = (float *)sqrtf(fStack24 * fStack24 + fStack32 * fStack32 + fStack28 * fStack28); - if ((float)pfVar10 == 0.00000000) { - lVar2 = 0; - } - else { - fVar11 = 1.00000000 / (float)pfVar10; - fStack32 = fStack32 * fVar11; - fStack28 = fStack28 * fVar11; - fStack24 = fStack24 * fVar11; - fStack48 = *pfVar6; - fStack44 = pfVar6[1]; - fStack40 = pfVar6[2]; - pfVar5 = (float *)proc_7F0783C4(); - proc_7F058474(pfVar5,&fStack48); - fStack60 = fStack32; - fStack56 = fStack28; - fStack52 = fStack24; - pfVar5 = (float *)proc_7F0783C4(); - proc_7F0583D8(pfVar5,&fStack60); - if (param_4 != 0) { - apfStack16[0] = pfVar10; - proc_7F03E3FC(param_7); - lVar2 = (longlong)*ptr_list_object_lookup_indices; - iVar7 = (int)*ptr_list_object_lookup_indices; - fVar11 = extraout_f12; - psVar9 = ptr_list_object_lookup_indices; - if (-1 < lVar2) { - do { - iVar7 = (iVar7 * 0x10 + (int)lVar2 * -4 + (int)lVar2) * 4; - pcVar8 = pos_data_entry + iVar7; - if (pcVar8 == param_1) { - lVar2 = (longlong)psVar9[1]; - } - else { - cVar1 = *pcVar8; - if (((cVar1 == '\x01') || (cVar1 == '\x04')) || (cVar1 == '\x02')) { - iVar7 = *(int *)(pos_data_entry + iVar7 + 4); - if ((*(uint *)(iVar7 + 100) & 8) == 0) { - if (*(int *)(iVar7 + 0xc) << 6 < 0) { - lVar2 = (longlong)psVar9[1]; - } - else { - if (cVar1 == '\x02') { - if (((param_4 & 2) != 0) || - (uVar3 = proc_7F03D9EC((int)pcVar8), fVar11 = extraout_f12_00, - (uVar3 & param_4) != 0)) { -LAB_7f04203c: - if (((pcVar8 != pcVar4) || ((*(byte *)(iVar7 + 2) & 0x20) == 0)) && - (lVar2 = proc_7F0419E4(iVar7,param_2,(longlong)(int)param_3, - (longlong)(int)&fStack32,fVar11,pfVar10,&fStack48, - &fStack60,param_5,param_6), fVar11 = extraout_f12_01 - , lVar2 != 0)) { - iStack20 = 1; - fVar11 = extraout_f12_01; - } - goto LAB_7f0421b4; - } - lVar2 = (longlong)psVar9[1]; - fVar11 = extraout_f12_00; - } - else { - if ((param_4 & 1) != 0) goto LAB_7f04203c; - lVar2 = (longlong)psVar9[1]; - } - } - } - else { - lVar2 = (longlong)psVar9[1]; - } - } - else { - if ((cVar1 == '\x03') || - ((cVar1 == '\x06' && (*(int *)(pos_data_entry + iVar7 + 4) != 0)))) { - iVar7 = *(int *)(pos_data_entry + iVar7 + 4); - if (cVar1 == '\x06') { - lVar2 = proc_7F09B15C((int)pcVar8); - if ((&ptr_BONDdata_p1)[(int)lVar2]->field_AC == 0) { - lVar2 = (longlong)psVar9[1]; - fVar11 = extraout_f12_02; - } - else { - fVar11 = extraout_f12_02; - if ((param_4 & 4) != 0) goto LAB_7f04211c; - lVar2 = (longlong)psVar9[1]; - fVar11 = extraout_f12_02; - } - } - else { - if (cVar1 != '\x03') { -LAB_7f04211c: - lVar2 = proc_7F041BB8(iVar7,pfVar6,&fStack32,fVar11,pfVar10,&fStack48,&fStack60, - param_5,param_6); - fVar11 = extraout_f12_03; - if (lVar2 != 0) { - iStack20 = 1; - fVar11 = extraout_f12_03; - } - goto LAB_7f0421b4; - } - if ((*(ushort *)(iVar7 + 0x12) & 0x100) == 0) { - if ((param_4 & 8) != 0) goto LAB_7f04211c; - lVar2 = (longlong)psVar9[1]; - } - else { - lVar2 = (longlong)psVar9[1]; - } - } - } - else { - if (cVar1 == '\x06') { - lVar2 = proc_7F09B15C((int)pcVar8); - if ((&ptr_BONDdata_p1)[(int)lVar2]->field_AC == 0) { - lVar2 = (longlong)psVar9[1]; - fVar11 = extraout_f12_04; - } - else { - lVar2 = proc_7F041400(pcVar8,pfVar6,param_3,&fStack32,param_5,param_6, - (float *)apfStack16); - fVar11 = extraout_f12_05; - if (lVar2 != 0) { - iStack20 = 1; - fVar11 = extraout_f12_05; - } -LAB_7f0421b4: - lVar2 = (longlong)psVar9[1]; - } - } - else { - lVar2 = (longlong)psVar9[1]; - } - } - } - } - psVar9 = psVar9 + 1; - if (lVar2 < 0) break; - iVar7 = (int)lVar2; - } while( true ); - } - } - if (iStack20 != 0) { - iStack4 = 1; - DAT_80075b78 = fStack32; - DAT_80075b7c = fStack28; - DAT_80075b80 = fStack24; - DAT_80075b88 = fStack60; - DAT_80075b8c = fStack56; - DAT_80075b90 = fStack52; - } - lVar2 = (longlong)iStack4; - } - return lVar2; -} - - - -int handles_projectile_motion - (int param_1,float *param_2,float *param_3,float *param_4,int param_5,int param_6) - -{ - byte bVar1; - longlong lVar2; - int *piVar3; - byte *pbVar4; - float *pfVar5; - uint uVar6; - int iVar7; - uint *puVar8; - f32 fVar9; - float fVar10; - float fVar11; - float fVar12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float fVar13; - float fVar14; - byte abStack572 [8]; - uint auStack564 [121]; - int iStack80; - int iStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - int iStack12; - int iStack8; - char *pcStack4; - - pcStack4 = *(char **)(param_1 + 0x10); - iStack8 = *(int *)(pcStack4 + 0x14); - iStack12 = 1; - dword_80030B0C = 0; - fStack72 = *param_2; - if (((fStack72 == *(float *)(param_1 + 0x58)) && (param_2[1] == *(float *)(param_1 + 0x5c))) && - (param_2[2] == *(float *)(param_1 + 0x60))) { - dword_80030B0C = 0; - return 1; - } - fStack68 = param_2[1]; - fStack64 = param_2[2]; - if ((*(uint *)(param_1 + 100) & 0x80) == 0) { - dword_80030B0C = 0; - return 1; - } - pfVar5 = (float *)(param_1 + 0x58); - if ((**(uint **)(param_1 + 0x6c) & 4) == 0) { - dword_80030B0C = 0; - return 1; - } - iStack80 = 0; - proc_7F0B4AB4(pfVar5,&fStack72,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc),(int)abStack572, - auStack564,&iStack80,0x14); - if (iStack80 < 0x15) { - iVar7 = iStack80 << 2; - } - else { - iStack80 = 0x14; - iVar7 = 0x50; - } - iVar7 = proc_7F0B8E98((uint *)((int)auStack564 + iVar7),100); - puVar8 = auStack564; - iStack80 += iVar7; - auStack564[iStack80] = 0xffffffff; - while (-1 < (int)auStack564[0]) { - iVar7 = proc_7F0B7A78(pfVar5,&fStack72,auStack564[0],&fStack60); - if (iVar7 == 0) { - auStack564[0] = puVar8[1]; - } - else { - fVar9 = proc_7F0B4830(); - fStack60 = fStack60 * (float)fVar9; - fStack56 = fStack56 * (float)fVar9; - fStack52 = fStack52 * (float)fVar9; - fVar11 = *(float *)(param_1 + 0x58); - if (((fStack72 < fVar11) || (fStack72 < fStack60)) || (fStack60 < fVar11)) { - if (fStack72 <= fVar11) { - if (fStack72 <= fStack60) { - if (fStack60 <= fVar11) { - fVar10 = *(float *)(param_1 + 0x5c); - goto LAB_7f042460; - } - auStack564[0] = puVar8[1]; - } - else { - auStack564[0] = puVar8[1]; - } - } - else { - auStack564[0] = puVar8[1]; - } - } - else { - fVar10 = *(float *)(param_1 + 0x5c); -LAB_7f042460: - if (((fStack68 < fVar10) || (fStack68 < fStack56)) || (fStack56 < fVar10)) { - if (fStack68 <= fVar10) { - if (fStack68 <= fStack56) { - if (fStack56 <= fVar10) { - fVar12 = *(float *)(param_1 + 0x60); - goto LAB_7f0424d0; - } - auStack564[0] = puVar8[1]; - } - else { - auStack564[0] = puVar8[1]; - } - } - else { - auStack564[0] = puVar8[1]; - } - } - else { - fVar12 = *(float *)(param_1 + 0x60); -LAB_7f0424d0: - if (((fStack64 < fVar12) || (fStack64 < fStack52)) || (fStack52 < fVar12)) { - if (fStack64 <= fVar12) { - if (fStack64 <= fStack52) { - if (fStack52 <= fVar12) goto LAB_7f042540; - auStack564[0] = puVar8[1]; - } - else { - auStack564[0] = puVar8[1]; - } - } - else { - auStack564[0] = puVar8[1]; - } - } - else { -LAB_7f042540: - if (((fVar11 == fStack60) && (fVar10 == fStack56)) && (fVar12 == fStack52)) { - auStack564[0] = puVar8[1]; - } - else { - iStack12 = 0; - *param_3 = fStack60; - param_3[1] = fStack56; - param_3[2] = fStack52; - *param_4 = fStack48; - param_4[1] = fStack44; - param_4[2] = fStack40; - if (((*param_4 == 0.00000000) && (param_4[1] == 0.00000000)) && - (param_4[2] == 0.00000000)) { - param_4[2] = 1.00000000; - auStack564[0] = puVar8[1]; - } - else { - guNormalize(param_4,param_4 + 1,param_4 + 2); - auStack564[0] = puVar8[1]; - } - } - } - } - } - } - puVar8 = puVar8 + 1; - } - if (iStack12 == 0) { - fVar13 = *param_2 - *(float *)(param_1 + 0x58); - fVar12 = param_2[1] - *(float *)(param_1 + 0x5c); - fVar14 = param_2[2] - *(float *)(param_1 + 0x60); - fVar10 = sqrtf(fVar14 * fVar14 + fVar13 * fVar13 + fVar12 * fVar12); - fVar11 = 0.50000000; - if (flt_80052A58 < fVar10) { - fVar11 = flt_80052A58 / fVar10; - } - *param_3 = *param_3 - fVar11 * fVar13; - fStack72 = *param_3; - param_3[1] = param_3[1] - fVar11 * fVar12; - param_3[2] = param_3[2] - fVar11 * fVar14; - fStack68 = param_3[1]; - fStack64 = param_3[2]; - } - lVar2 = proc_7F041E0C(pcStack4,(longlong)(int)pfVar5,&fStack72,0x1f,param_3,param_4, - (int *)auStack564); - if (lVar2 == 0) { - if ((iStack12 == 0) && (param_5 != 0)) { - iStack12 = 2; - fVar11 = extraout_f12; - fVar10 = extraout_f14; - if (param_6 == 0) { - proc_7F0B4AB4(pfVar5,param_3,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc),(int)abStack572, - auStack564,&iStack80,0x14); - fVar11 = extraout_f12_00; - fVar10 = extraout_f14_00; - } - } - else { - if ((iStack12 == 1) || (fVar11 = extraout_f12, fVar10 = extraout_f14, param_6 == 0)) { - fVar11 = extraout_f12; - fVar10 = extraout_f14; - if (iStack12 != 1) { - proc_7F0B4AB4(pfVar5,&fStack72,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc),(int)abStack572, - auStack564,&iStack80,0x14); - fVar11 = extraout_f12_01; - fVar10 = extraout_f14_01; - } - *(float *)(param_1 + 0x58) = fStack72; - *(float *)(param_1 + 0x60) = fStack64; - *(float *)(pcStack4 + 0xc) = fStack68; - *(float *)(param_1 + 0x5c) = fStack68; - } - } - } - else { - fVar11 = extraout_f12; - fVar10 = extraout_f14; - if (param_6 == 0) { - fStack72 = *(float *)(param_1 + 0x58); - fStack64 = *(float *)(param_1 + 0x60); - proc_7F0B4AB4(pfVar5,&fStack72,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc),(int)abStack572, - auStack564,&iStack80,0x14); - *(float *)(pcStack4 + 0xc) = fStack68; - *(float *)(param_1 + 0x5c) = fStack68; - if (param_5 == 0) { - iStack12 = 0; - fVar11 = extraout_f12_02; - fVar10 = extraout_f14_02; - } - else { - iStack12 = 2; - fVar11 = extraout_f12_02; - fVar10 = extraout_f14_02; - } - } - } - if (iStack12 == 1) { - puVar8 = *(uint **)(param_1 + 0x6c); - } - else { - if (param_6 != 0) { - return iStack12; - } - puVar8 = *(uint **)(param_1 + 0x6c); - } - iStack76 = 0; - uVar6 = *puVar8 & 8; - if (uVar6 == 0) { - lVar2 = (longlong)(int)pcStack4; - iStack8 = *(int *)(pcStack4 + 0x14); - iStack76 = 0; - proc_7F0B0BE4(&iStack8,fVar11,fVar10,*(float *)(pcStack4 + 8),*(float *)(pcStack4 + 0x10)); - if (lVar2 == 1) { - if (iStack8 != 0) { - *(int *)(pcStack4 + 0x14) = iStack8; - *(undefined4 *)(pcStack4 + 8) = *(undefined4 *)(param_1 + 0x58); - *(undefined4 *)(pcStack4 + 0x10) = *(undefined4 *)(param_1 + 0x60); - uVar6 = **(uint **)(param_1 + 0x6c) & 8; - goto LAB_7f042938; - } - puVar8 = *(uint **)(param_1 + 0x6c); - } - else { - puVar8 = *(uint **)(param_1 + 0x6c); - } - *puVar8 = *puVar8 | 8; - pcStack4[1] = pcStack4[1] | 8; - uVar6 = **(uint **)(param_1 + 0x6c) & 8; - } -LAB_7f042938: - if ((uVar6 != 0) && (piVar3 = proc_7F0AF20C(pfVar5,abStack572,NULL), piVar3 != NULL)) { - *(int **)(pcStack4 + 0x14) = piVar3; - *(undefined4 *)(pcStack4 + 8) = *(undefined4 *)(param_1 + 0x58); - *(undefined4 *)(pcStack4 + 0x10) = *(undefined4 *)(param_1 + 0x60); - **(uint **)(param_1 + 0x6c) = **(uint **)(param_1 + 0x6c) & 0xfffffff7; - pcStack4[1] = pcStack4[1] & 0xf7; - } - pbVar4 = abStack572 + iStack76; - if (abStack572[0] == 0xff) { -LAB_7f0429d8: - iVar7 = *(int *)(param_1 + 0x6c); - } - else { - bVar1 = *pbVar4; - iVar7 = *(int *)(param_1 + 0x6c); - while( true ) { - pbVar4 = pbVar4 + 1; - *(byte *)(iVar7 + iStack76 + 0xcc) = bVar1; - bVar1 = *pbVar4; - iStack76 += 1; - if (bVar1 == 0xff) break; - if (iStack76 == 7) goto LAB_7f0429d8; - iVar7 = *(int *)(param_1 + 0x6c); - } - iVar7 = *(int *)(param_1 + 0x6c); - } - *(undefined *)(iVar7 + iStack76 + 0xcc) = 0xff; - return iStack12; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 proc_7F042A0C(void) - -{ - int iVar1; - int iVar3; - longlong lVar2; - int in_a0_lo; - float *in_a1_lo; - float *in_a2_lo; - float *x; - float in_f0; - float fVar4; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f14; - f32 extraout_f14_00; - float fStack124; - float fStack120; - float fStack116; - float fStack112; - float fStack108; - float fStack104; - float fStack100; - undefined4 uStack96; - undefined4 uStack92; - float fStack88; - float fStack84; - float fStack80; - float afStack76 [2]; - float fStack68; - float afStack64 [2]; - float fStack56; - float fStack52; - float fStack48; - float fStack40; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - undefined4 uStack16; - float fStack12; - u32 auStack8 [2]; - - iVar1 = *(int *)(in_a0_lo + 0x10); - auStack8[0] = *(u32 *)(iVar1 + 0x14); - proc_7F041044(in_a0_lo); - uStack16 = 1; - dword_80030B0C = 0; - fStack40 = *in_a1_lo; - if (((fStack40 != *(float *)(iVar1 + 8)) || (in_a1_lo[1] != *(float *)(iVar1 + 0xc))) || - (in_a1_lo[2] != *(float *)(iVar1 + 0x10))) { - fStack36 = in_a1_lo[1]; - fStack32 = in_a1_lo[2]; - if ((*(uint *)(in_a0_lo + 100) & 0x80) != 0) { - fStack12 = in_f0; - fVar4 = (float)proc_7F0B2970(); - if ((**(uint **)(in_a0_lo + 0x6c) & 0x40) == 0) { - fStack48 = 0.00000000; - fStack52 = 1.00000000; - } - else { - fStack52 = *(float *)(iVar1 + 0xc); - if (fStack36 < fStack52) { - fStack48 = fStack52 - fVar4; - fStack52 = fStack36 - fVar4; - } - else { - fStack48 = fStack36 - fVar4; - fStack52 = fStack52 - fVar4; - } - } - proc_7F0B1CC4(); - iVar3 = proc_7F0B0E24(auStack8,extraout_f12,extraout_f14,*(f32 *)(iVar1 + 8)); - if (((iVar3 == 0) || (auStack8[0] == 0)) || (lVar2 = proc_7F0B18B8(), -1 < lVar2)) { - proc_7F0B28B0(afStack64,afStack76); - x[1] = 0.00000000; - *x = fStack68 - fStack56; - x[2] = afStack64[0] - afStack76[0]; - if ((*x == 0.00000000) && (x[2] == 0.00000000)) { - x[2] = 1.00000000; - fStack28 = *(float *)(iVar1 + 8); - } - else { - guNormalize(x,x + 1,x + 2); - fStack28 = *(float *)(iVar1 + 8); - } - if (((fStack40 == fStack28) && (fStack36 == *(float *)(iVar1 + 0xc))) && - (fStack32 == *(float *)(iVar1 + 0x10))) { - *in_a2_lo = fStack40; - in_a2_lo[1] = fStack36; - in_a2_lo[2] = fStack32; - } - else { - fStack28 = fStack40 - fStack28; - fStack24 = fStack36 - *(float *)(iVar1 + 0xc); - fStack20 = fStack32 - *(float *)(iVar1 + 0x10); - proc_7F02624C((float *)(iVar1 + 8),&fStack28,in_a2_lo); - fStack100 = fStack12; - uStack96 = *(undefined4 *)(iVar1 + 8); - uStack92 = *(undefined4 *)(iVar1 + 0x10); - fStack108 = afStack64[0]; - fStack104 = fStack56; - fStack116 = afStack76[0]; - fStack112 = fStack68; - fStack124 = fStack40 - *(float *)(iVar1 + 8); - fStack120 = fStack32 - *(float *)(iVar1 + 0x10); - fVar4 = proc_7F0B33DC(&fStack100,&fStack108,&fStack116,&fStack124); - auStack8[0] = *(u32 *)(iVar1 + 0x14); - fStack84 = fStack36; - fStack88 = *(float *)(iVar1 + 8) + fStack124 * fVar4 * flt_80052A5C; - fStack80 = *(float *)(iVar1 + 0x10) + fStack120 * fVar4 * flt_80052A5C; - iVar3 = proc_7F0B0E24(auStack8,extraout_f12_00,extraout_f14_00,*(f32 *)(iVar1 + 8)); - if (((iVar3 != 0) && (auStack8[0] != 0)) && (lVar2 = proc_7F0B18B8(), lVar2 < 0)) { - *(float *)(in_a0_lo + 0x58) = fStack88; - *(float *)(in_a0_lo + 0x60) = fStack80; - *(u32 *)(iVar1 + 0x14) = auStack8[0]; - *(float *)(iVar1 + 8) = fStack88; - *(float *)(iVar1 + 0x10) = fStack80; - } - } - *(float *)(iVar1 + 0xc) = fStack84; - *(float *)(in_a0_lo + 0x5c) = fStack84; - uStack16 = 0; - } - else { - *(float *)(in_a0_lo + 0x58) = fStack40; - *(float *)(in_a0_lo + 0x60) = fStack32; - *(u32 *)(iVar1 + 0x14) = auStack8[0]; - *(float *)(iVar1 + 8) = fStack40; - *(float *)(iVar1 + 0x10) = fStack32; - *(float *)(iVar1 + 0xc) = fStack36; - *(float *)(in_a0_lo + 0x5c) = fStack36; - } - } - } - return uStack16; -} - - - -int proc_7F042EB4(int param_1,float *param_2,float *param_3,float *param_4,int param_5,int param_6) - -{ - int iVar1; - - if (((*(uint *)(param_1 + 100) & 0x80) == 0) || ((**(uint **)(param_1 + 0x6c) & 4) == 0)) { - iVar1 = proc_7F042A0C(); - } - else { - iVar1 = handles_projectile_motion(param_1,param_2,param_3,param_4,param_5,param_6); - } - return iVar1; -} - - - -void proc_7F042F18(float *param_1,float param_2,float *param_3,float param_4,float param_5, - float param_6) - -{ - bool bVar1; - float fVar2; - int iVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float in_stack_00000010; - float in_stack_00000014; - - fVar4 = *(float *)param_5; - iVar3 = 0; - if (clock_timer < 1) { -LAB_7f0430f0: - *(float *)param_5 = fVar4; - return; - } - fVar6 = *param_1; - do { - fVar5 = (float)param_3 - fVar6; - if (0.00000000 < fVar5) { - if ((fVar4 <= 0.00000000) || ((fVar4 * fVar4 * 0.50000000) / in_stack_00000010 < fVar5)) { - if (fVar4 < in_stack_00000014) { - fVar7 = in_stack_00000010; - if (0.00000000 <= fVar4) { - fVar7 = param_6; - } - fVar4 = fVar4 + fVar7; - fVar7 = in_stack_00000014; - if (in_stack_00000014 < fVar4) goto LAB_7f043004; - bVar1 = fVar5 <= fVar4; - } - else { - bVar1 = fVar5 <= fVar4; - } - } - else { - fVar4 = fVar4 - in_stack_00000010; - fVar7 = in_stack_00000010; - if (fVar4 < in_stack_00000010) { -LAB_7f043004: - bVar1 = fVar5 <= fVar7; - fVar4 = fVar7; - } - else { - bVar1 = fVar5 <= fVar4; - } - } - if (bVar1) { - *(float **)param_1 = param_3; - goto LAB_7f0430f0; - } - *param_1 = fVar6 + fVar4; - } - else { - if ((0.00000000 <= fVar4) || ((fVar4 * fVar4 * 0.50000000) / in_stack_00000010 < -fVar5)) { - fVar7 = -in_stack_00000014; - if (fVar7 < fVar4) { - fVar2 = in_stack_00000010; - if (fVar4 <= 0.00000000) { - fVar2 = param_6; - } - fVar4 = fVar4 - fVar2; - if (fVar4 < fVar7) goto LAB_7f0430bc; - bVar1 = fVar4 <= fVar5; - } - else { - bVar1 = fVar4 <= fVar5; - } - } - else { - fVar4 = fVar4 + in_stack_00000010; - fVar7 = -in_stack_00000010; - if (fVar7 < fVar4) { -LAB_7f0430bc: - bVar1 = fVar7 <= fVar5; - fVar4 = fVar7; - } - else { - bVar1 = fVar4 <= fVar5; - } - } - if (bVar1) { - *(float **)param_1 = param_3; - goto LAB_7f0430f0; - } - *param_1 = fVar6 + fVar4; - } - iVar3 += 1; - if (clock_timer <= iVar3) goto LAB_7f0430f0; - fVar6 = *param_1; - } while( true ); -} - - - -void proc_7F04310C(float *param_1,float param_2,float *param_3,float param_4,float param_5, - float param_6) - -{ - float fVar1; - float fVar2; - - if ((float)param_3 - *param_1 < flt_80052A60) { - param_3 = (float *)((float)param_3 + flt_80052A64); - } - else { - if (flt_80052A68 <= (float)param_3 - *param_1) { - param_3 = (float *)((float)param_3 - flt_80052A6C); - } - } - proc_7F042F18(param_1,(float)param_3,param_3,param_6,param_5,param_6); - fVar1 = flt_80052A70; - fVar2 = *param_1; - if (fVar2 < 0.00000000) { - *param_1 = fVar2 + flt_80052A70; - fVar2 = *param_1; - } - if (fVar1 <= fVar2) { - *param_1 = fVar2 - fVar1; - } - return; -} - - - -void proc_7F0431E4(int param_1,float *param_2) - -{ - uint uVar1; - uint *puVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fStack204; - float fStack200; - float fStack196; - float fStack188; - float fStack184; - float fStack180; - float fStack172; - float fStack168; - float fStack164; - float fStack140; - float fStack136; - float fStack132; - undefined4 uStack128; - undefined4 uStack124; - undefined4 uStack120; - undefined4 uStack116; - undefined4 uStack112; - float fStack108; - undefined4 uStack104; - float fStack100; - undefined4 uStack96; - undefined4 uStack92; - undefined4 uStack88; - undefined4 uStack84; - undefined4 uStack80; - float fStack76; - float fStack72; - float fStack68; - float afStack12 [3]; - - uVar1 = *(uint *)(param_1 + 100); - *(uint *)(param_1 + 100) = uVar1 & 0xfffeffff; - if ((uVar1 & 0x80) == 0) { - return; - } - puVar2 = *(uint **)(param_1 + 0x6c); - if (*(char *)(param_1 + 3) == '\x01') { - proc_7F03FB70(puVar2); - *(undefined4 *)(param_1 + 0x6c) = 0; - *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) & 0xffffff7f; - return; - } - uVar1 = *puVar2; - puVar2[0x22] = 0; - *puVar2 = uVar1 & 0xfffffffe; - *puVar2 = uVar1 & 0xfffffffa; - proc_7F058860((float *)(param_1 + 0x18),afStack12); - proc_7F058714(afStack12,&fStack76); - proc_7F05B3F4(afStack12,(float *)(puVar2 + 0x1a)); - proc_7F059D38(&fStack76,&fStack140); - proc_7F0580C8(&fStack140,(float *)(param_1 + 0x18),(int)&fStack204); - fVar3 = sqrtf(fStack196 * fStack196 + fStack204 * fStack204 + fStack200 * fStack200); - *(float *)(puVar2 + 0x30) = fVar3; - fVar3 = sqrtf(fStack180 * fStack180 + fStack188 * fStack188 + fStack184 * fStack184); - *(float *)(puVar2 + 0x31) = fVar3; - fVar3 = sqrtf(fStack164 * fStack164 + fStack172 * fStack172 + fStack168 * fStack168); - *(float *)(puVar2 + 0x32) = fVar3; - fStack140 = *(float *)(param_1 + 0x18); - fVar3 = *(float *)(param_1 + 0x20); - if ((fStack140 == 0.00000000) && (fStack132 = 1.00000000, fVar3 == 0.00000000)) { - fStack140 = 0.00000000; - } - else { - fVar4 = sqrtf(fStack140 * fStack140 + fVar3 * fVar3); - fStack140 = fStack140 * (1.00000000 / fVar4); - fStack132 = fVar3 * (1.00000000 / fVar4); - } - fStack136 = 0.00000000; - uStack128 = 0; - if (0.00000000 <= *(float *)(param_1 + 0x2c)) { - fStack108 = -fStack132; - uStack120 = 0x3f800000; - fStack100 = fStack140; - } - else { - fStack100 = -fStack140; - uStack120 = 0xbf800000; - fStack108 = fStack132; - } - uStack96 = 0; - uStack104 = 0; - uStack112 = 0; - uStack116 = 0; - uStack124 = 0; - uStack92 = 0; - uStack88 = 0; - uStack84 = 0; - uStack80 = 0x3f800000; - proc_7F058860(&fStack140,afStack12); - proc_7F05B3F4(afStack12,(float *)(puVar2 + 0x1e)); - proc_7F05BE10((float *)(puVar2 + 0x1a),(float *)(puVar2 + 0x1e)); - puVar2[0x18] = 0; - fVar3 = proc_7F05ACB0(fStack68 * fStack132 + fStack140 * fStack76 + fStack136 * fStack72); - if (((fVar3 <= 0.00000000) || (*(float *)(param_1 + 0x1c) <= 0.00000000)) || - (*(float *)(param_1 + 0x1c) <= param_2[1])) { - fVar4 = *(float *)(param_1 + 0x1c); - if (0.00000000 < fVar3) { - if (fVar4 < 0.00000000) { - if (fVar4 < param_2[1]) { - *(float *)(puVar2 + 0x19) = flt_80052A80 / ((fVar3 * 4.00000000) / flt_80052A7C); - goto LAB_7f0435e0; - } - fVar6 = *(float *)(param_1 + 0x20); - } - else { - fVar6 = *(float *)(param_1 + 0x20); - } - } - else { - fVar6 = *(float *)(param_1 + 0x20); - } - fVar5 = *(float *)(*(int *)(param_1 + 0x14) + 0x14); - fVar4 = proc_7F05ACB0((fVar6 * param_2[2] + - *param_2 * *(float *)(param_1 + 0x18) + param_2[1] * fVar4) / - (fVar5 * fVar5)); - if (fVar3 == 0.00000000) { - puVar2[0x19] = 0x3f800000; - } - else { - *(float *)(puVar2 + 0x19) = (fVar4 / global_timer_delta) / fVar3; - } - } - else { - *(float *)(puVar2 + 0x19) = flt_80052A78 / ((fVar3 * 4.00000000) / flt_80052A74); - } -LAB_7f0435e0: - fVar3 = (float)puVar2[0x19]; - if (fVar3 < 0.00000000) { - *(float *)(puVar2 + 0x19) = -fVar3; - fVar3 = (float)puVar2[0x19]; - } - if (fVar3 < flt_80052A84) { - *(float *)(puVar2 + 0x19) = flt_80052A84; - } - else { - if (flt_80052A88 < fVar3) { - *(float *)(puVar2 + 0x19) = flt_80052A88; - } - } - return; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -void proc_7F043650(int param_1) - -{ - uint uVar1; - uint *puVar2; - u32 uVar4; - int iVar5; - ulonglong uVar3; - int iVar6; - int iVar7; - undefined4 uStack8; - u16 uStack4; - - uVar1 = *(uint *)(param_1 + 100); - if ((uVar1 & 0x80) != 0) { - puVar2 = *(uint **)(param_1 + 0x6c); - if ((((*puVar2 & 1) == 0) || (0 < (int)puVar2[0x24])) || ((uVar1 & 0x20) == 0)) { - *(uint *)(param_1 + 100) = uVar1 & 0xffffffdf; - if (puVar2[0x26] == 0) { - iVar6 = *(int *)(param_1 + 0x6c); - } - else { - uVar3 = music_related_26(puVar2[0x26]); - if (uVar3 == 0) { - iVar6 = *(int *)(param_1 + 0x6c); - } - else { - music_related_28(*(int *)(*(int *)(param_1 + 0x6c) + 0x98)); - iVar6 = *(int *)(param_1 + 0x6c); - } - } - if ((*(int *)(iVar6 + 0x9c) != 0) && - (uVar3 = music_related_26(*(int *)(iVar6 + 0x9c)), uVar3 != 0)) { - music_related_28(*(int *)(*(int *)(param_1 + 0x6c) + 0x9c)); - } - } - else { - uStack8 = _Throwing_knife_SFX_1; - uStack4 = Throwing_knife_SFX_3; - iVar6 = *(int *)(*(int *)(param_1 + 0x6c) + 0xa4); - uVar4 = get_random_value(); - if (((*(int *)(*(int *)(param_1 + 0x6c) + 0xa0) < global_timer + -6) && - (iVar7 = *(int *)(*(int *)(param_1 + 0x6c) + iVar6 * 4 + 0x98), iVar7 != 0)) && - (uVar3 = music_related_26(iVar7), uVar3 != 0)) { - music_related_28(*(int *)(*(int *)(param_1 + 0x6c) + iVar6 * 4 + 0x98)); - } - iVar7 = iVar6 * 4; - if ((*(int *)(*(int *)(param_1 + 0x6c) + iVar7 + 0x98) == 0) && - (iVar5 = get_controls_locked_flag(), iVar5 == 0)) { - play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack8 + (uVar4 % 3) * 2), - (sfxdata *)(*(int *)(param_1 + 0x6c) + iVar7 + 0x98)); - proc_7F053A10(*(int *)(*(int *)(param_1 + 0x6c) + iVar7 + 0x98), - (float *)(*(int *)(param_1 + 0x10) + 8)); - *(int *)(*(int *)(param_1 + 0x6c) + 0xa0) = global_timer; - *(int *)(*(int *)(param_1 + 0x6c) + 0xa4) = 1 - iVar6; - } - } - } - return; -} - - - -void proc_7F043838(float *param_1,int param_2) - -{ - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - float fVar1; - float fVar2; - float fStack260; - float fStack256; - float fStack252; - float afStack248 [16]; - float afStack184 [16]; - float afStack120 [16]; - float fStack56; - float fStack52; - float fStack36; - float fStack32; - float fStack28; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fVar1 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1 + param_1[1] * param_1[1]); - fVar2 = *param_1 / fVar1; - fStack12 = param_1[1] / fVar1; - fVar1 = param_1[2] / fVar1; - if ((fVar2 == 0.00000000) && (fVar1 == 0.00000000)) { - fStack4 = 0.00000000; - fStack8 = 0.00000000; - fStack20 = 0.00000000; - fStack16 = 1.00000000; - } - else { - fStack36 = fVar1; - fStack32 = fStack12; - fStack28 = fVar2; - fVar1 = sqrtf(fVar2 * fVar2 + fVar1 * fVar1); - fStack8 = -fVar1; - fStack16 = fStack36 / fVar1; - fStack4 = fStack32 * (fStack28 / fVar1); - fStack20 = -(fStack28 / fVar1); - fStack12 = fStack32 * fStack16; - } - fStack52 = convert_angle_using_inverse((f32)fStack16,(f32)fStack20); - proc_7F0585FC(-fStack52,extraout_a0,afStack120); - fStack260 = fStack4; - fStack256 = fStack8; - fStack252 = fStack12; - proc_7F0583D8(afStack120,&fStack260); - fStack56 = convert_angle_using_inverse((f32)fStack260,(f32)fStack256); - proc_7F0585FC(flt_80052A8C + fStack52,extraout_a0_00,afStack184); - proc_7F058570(flt_80052A90 - fStack56,extraout_a0_01,afStack248); - proc_7F0580C8(afStack184,afStack248,param_2); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F0439B8(void) - -{ - int iVar1; - int in_a0_lo; - undefined8 extraout_a0; - undefined4 *in_a1_lo; - undefined4 in_a2_lo; - float *in_a3_lo; - float in_f0; - float afStack64 [16]; - - proc_7F043838(in_a3_lo,(int)afStack64); - matrix_multiply_A1_by_F12(*(float *)(*(int *)(in_a0_lo + 0x14) + 0x14),extraout_a0,afStack64); - proc_7F040754(in_a0_lo,in_a1_lo,afStack64,in_a2_lo); - iVar1 = proc_7F03FFF8(*(int **)(*(int *)(in_a0_lo + 0x14) + 8)); - proc_7F03E864(iVar1); - *(float *)(in_a0_lo + 0x58) = *(float *)(in_a0_lo + 0x58) - in_f0 * *(float *)(in_a0_lo + 0x28); - *(float *)(in_a0_lo + 0x5c) = *(float *)(in_a0_lo + 0x5c) - in_f0 * *(float *)(in_a0_lo + 0x2c); - *(float *)(in_a0_lo + 0x60) = *(float *)(in_a0_lo + 0x60) - in_f0 * *(float *)(in_a0_lo + 0x30); - proc_7F040484(in_a0_lo); - return; -} - - - -undefined8 proc_7F043A6C(int param_1,int param_2,int param_3,ushort *param_4) - -{ - int iVar1; - undefined8 uVar2; - int iVar3; - float *pfVar4; - float *pfVar5; - float afStack196 [16]; - float afStack132 [16]; - float afStack68 [17]; - - if ((*(byte *)(param_2 + 1) & 2) == 0) { - uVar2 = 0; - } - else { - iVar1 = *(int *)(param_1 + 4); - iVar3 = proc_7F03FE98(); - *(int *)(iVar1 + 0x6c) = iVar3; - if (iVar3 == 0) { - uVar2 = 0; - } - else { - pfVar4 = (float *)proc_7F06C660(param_3,param_4,0); - *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) | 0x40; - proc_7F03E18C(param_1); - proc_7F03A538(param_1); - unset_stateflag_0x04_for_posdata(param_1); - *(int *)(*(int *)(iVar1 + 0x14) + 0x18) = param_3; - *(ushort **)(*(int *)(iVar1 + 0x14) + 0x1c) = param_4; - proc_7F03A5A4(param_1,param_2); - proc_7F058020((undefined4 *)(iVar1 + 0x18),afStack68); - proc_7F058998((undefined4 *)(iVar1 + 0x58),(int)afStack68); - pfVar5 = (float *)proc_7F078444(); - proc_7F05818C(pfVar5,pfVar4,(int)afStack132); - proc_7F059FB8(afStack132,afStack196); - proc_7F05818C(afStack196,afStack68,*(int *)(iVar1 + 0x6c) + 4); - uVar2 = 1; - } - } - return uVar2; -} - - - -void generate_explosion_at_position(int param_1,uint param_2,undefined8 param_3,undefined4 param_4) - -{ - int iVar1; - bool bVar2; - longlong lVar3; - int iVar4; - float *pfVar5; - int iVar6; - float in_f12; - float extraout_f12; - float in_f14; - float extraout_f14; - short sStackX6; - float fStack28; - undefined4 uStack24; - undefined4 uStack20; - int iStack16; - int iStack12; - uint uStack8; - int iStack4; - - iVar4 = *(int *)(param_1 + 4); - uStack8 = (*(uint *)(iVar4 + 100) & 0x60000) >> 0x11; - iVar1 = *(int *)(param_1 + 0x1c); - sStackX6 = (short)param_2; - if (iVar1 == 0) { - bVar2 = (*(uint *)(iVar4 + 8) & 0xe) == 0; - if (bVar2) { - bVar2 = (*(byte *)(param_1 + 1) & 8) == 0; - } - proc_7F09C250(0,(float *)(iVar4 + 0x58),*(int *)(param_1 + 0x14),(int)sStackX6,(uint)bVar2, - (char)uStack8,(char *)(param_1 + 0x2c),(uint)((*(byte *)(param_1 + 1) & 8) != 0)); - } - else { - lVar3 = (longlong)*(int *)(iVar1 + 0x1c); - if (lVar3 == 0) { - iStack16 = *(int *)(iVar1 + 0x14); - iVar6 = iVar1; - } - else { - do { - iVar6 = (int)lVar3; - lVar3 = (longlong)*(int *)(iVar6 + 0x1c); - } while (lVar3 != 0); - iStack16 = *(int *)(iVar6 + 0x14); - } - if ((*(byte *)(param_1 + 1) & 2) == 0) { - fStack28 = *(float *)(iVar6 + 8); - uStack24 = *(undefined4 *)(iVar6 + 0xc); - uStack20 = *(undefined4 *)(iVar6 + 0x10); - } - else { - iStack12 = iVar6; - iStack4 = iVar4; - iVar4 = getsubmatrix(*(int *)(iVar4 + 0x14),param_2,iVar1,param_4); - fStack28 = *(float *)(iVar4 + 0x30); - uStack24 = *(undefined4 *)(iVar4 + 0x34); - uStack20 = *(undefined4 *)(iVar4 + 0x38); - pfVar5 = (float *)proc_7F078444(); - lVar3 = (longlong)(int)pfVar5; - proc_7F058474(pfVar5,&fStack28); - in_f12 = extraout_f12; - in_f14 = extraout_f14; - iVar4 = iStack4; - iVar6 = iStack12; - } - if (((*(byte *)(iVar6 + 1) & 8) == 0) && - (iStack12 = iVar6, iStack4 = iVar4, - proc_7F0B0BE4(&iStack16,in_f12,in_f14,*(float *)(iVar6 + 8),*(float *)(iVar6 + 0x10)), - iVar6 = iStack12, lVar3 != 0)) { - proc_7F09C250(0,&fStack28,iStack16,(int)sStackX6,(uint)((*(uint *)(iStack4 + 8) & 0xe) == 0), - (char)uStack8,(char *)(iStack12 + 0x2c),0); - } - else { - proc_7F09C250(0,&fStack28,iStack16,(int)sStackX6,0,(char)uStack8,(char *)(iVar6 + 0x2c),1); - } - } - return; -} - - - -void handle_thrown_explosive_detonation(int param_1) - -{ - char cVar1; - short sVar2; - int iVar3; - undefined4 *objdata; - u32 uVar4; - int iVar5; - uint uVar6; - undefined8 extraout_a2; - longlong lVar7; - short sVar8; - float fVar9; - float fVar10; - float fVar11; - - iVar3 = *(int *)(param_1 + 4); - uVar4 = get_cur_playernum(); - iVar5 = proc_7F09B4D8(uVar4); - if (iVar5 != 0) { - return; - } - if (*(char *)(iVar3 + 3) == '\a') { - if (-1 < *(int *)(iVar3 + 8) << 3) { - return; - } - generate_explosion_at_position(param_1,0xc,extraout_a2,iVar3); - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 4; - return; - } - if (*(char *)(iVar3 + 3) != '\b') { - return; - } - objdata = *(undefined4 **)(param_1 + 4); - lVar7 = (longlong)(int)objdata; - cVar1 = *(char *)(objdata + 0x20); - sVar8 = (short)clock_timer; - if (((cVar1 == '\x1a') || (cVar1 == 'W')) && (-1 < *(short *)((int)objdata + 0x82))) { - *(short *)((int)objdata + 0x82) = *(short *)((int)objdata + 0x82) - sVar8; - if (-1 < *(short *)((int)objdata + 0x82)) { - return; - } - uVar6 = 0xd; - if (*(int *)(iVar3 + 0xc) < 0) { - uVar6 = 0x11; - } - generate_explosion_at_position(param_1,uVar6,lVar7,iVar3); - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 4; - return; - } - if (cVar1 == 'V') { - if (*(short *)((int)objdata + 0x82) != 0) { - return; - } - uVar6 = 0xd; - if (*(int *)(iVar3 + 0xc) < 0) { - uVar6 = 0x11; - } - generate_explosion_at_position(param_1,uVar6,lVar7,iVar3); - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 4; - return; - } - if (cVar1 == '\"') { - if (*(short *)((int)objdata + 0x82) != 0) { - return; - } - generate_explosion_at_position(param_1,0x11,lVar7,iVar3); - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 4; - trigger_explosions_around_player(0x78); - set_unset_clock_lock_bits(2,0); - return; - } - if (((cVar1 == '\x1b') || (cVar1 == '!')) && (-1 < *(short *)((int)objdata + 0x82))) { - *(short *)((int)objdata + 0x82) = *(short *)((int)objdata + 0x82) - sVar8; - if (-1 < *(short *)((int)objdata + 0x82)) { - return; - } - uVar6 = 0xd; - if (*(int *)(iVar3 + 0xc) < 0) { - uVar6 = 0x11; - } - generate_explosion_at_position(param_1,uVar6,lVar7,iVar3); - *(undefined2 *)((int)objdata + 0x82) = 0xffff; - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 4; - return; - } - if (cVar1 == '\x1d') { - if (dword_80030AF4 == 0) { - sVar8 = *(short *)((int)objdata + 0x82); - } - else { - if ((dword_80030AF4 & 1 << ((*(uint *)(iVar3 + 100) & 0x60000) >> 0x11)) == 0) { - sVar8 = *(short *)((int)objdata + 0x82); - } - else { - *(undefined2 *)((int)objdata + 0x82) = 0; - sVar8 = *(short *)((int)objdata + 0x82); - } - } - if (1 < sVar8) { - *(short *)((int)objdata + 0x82) = sVar8 - (short)clock_timer; - if (1 < *(short *)((int)objdata + 0x82)) { - return; - } - *(undefined2 *)((int)objdata + 0x82) = 1; - return; - } - if (sVar8 != 0) { - return; - } - if (*(int *)(iVar3 + 0xc) < 0) { - generate_explosion_at_position(param_1,0x11,lVar7,iVar3); - } - else { - iVar5 = get_stage_num(); - if (iVar5 == 0x22) { - generate_explosion_at_position(param_1,0x13,(longlong)(int)objdata,iVar3); - } - else { - generate_explosion_at_position(param_1,0xd,(longlong)(int)objdata,iVar3); - } - } - *(undefined2 *)((int)objdata + 0x82) = 0xffff; - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 4; - return; - } - if (cVar1 != '\x1c') { - return; - } - sVar2 = *(short *)((int)objdata + 0x82); - if (sVar2 < 2) { - if (sVar2 != 1) { - sVar8 = *(short *)((int)objdata + 0x82); - goto LAB_7f04419c; - } - iVar5 = get_curplayer_positiondata(); - fVar9 = *(float *)(iVar5 + 8) - *(float *)(param_1 + 8); - fVar10 = *(float *)(iVar5 + 0xc) - *(float *)(param_1 + 0xc); - fVar11 = *(float *)(iVar5 + 0x10) - *(float *)(param_1 + 0x10); - if (flt_80052A94 <= fVar9 * fVar9 + fVar10 * fVar10 + fVar11 * fVar11) { - sVar8 = *(short *)((int)objdata + 0x82); - goto LAB_7f04419c; - } - *(undefined2 *)((int)objdata + 0x82) = 0; - } - else { - *(short *)((int)objdata + 0x82) = sVar2 - sVar8; - if (1 < *(short *)((int)objdata + 0x82)) { - sVar8 = *(short *)((int)objdata + 0x82); - goto LAB_7f04419c; - } - *(undefined2 *)((int)objdata + 0x82) = 1; - add_obj_to_temp_proxmine_table(objdata); - } - sVar8 = *(short *)((int)objdata + 0x82); -LAB_7f04419c: - if (sVar8 == 0) { - uVar6 = 0xd; - if (*(int *)(iVar3 + 0xc) < 0) { - uVar6 = 0x11; - } - generate_explosion_at_position(param_1,uVar6,(longlong)(int)objdata,iVar3); - *(undefined2 *)((int)objdata + 0x82) = 0xffff; - *(uint *)(iVar3 + 100) = *(uint *)(iVar3 + 100) | 4; - remove_obj_from_temp_proxmine_table(objdata); - } - return; -} - - - -void proc_7F044200(int param_1) - -{ - int iVar1; - int param_1_00; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - - param_1_00 = *(int *)(param_1 + 0x20); - while (param_1_00 != 0) { - iVar1 = *(int *)(param_1_00 + 0x24); - proc_7F044200(param_1_00); - proc_7F04C130(param_1_00,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - param_1_00 = iVar1; - } - return; -} - - - -void proc_7F04424C(int param_1) - -{ - int param_1_00; - int iVar1; - - param_1_00 = *(int *)(param_1 + 4); - if ((*(uint *)(param_1_00 + 100) & 4) == 0) { - *(byte *)(param_1 + 1) = *(byte *)(param_1 + 1) & 0xfd; - handle_thrown_explosive_detonation(param_1); - param_1_00 = *(int *)(param_1 + 0x20); - while (param_1_00 != 0) { - iVar1 = *(int *)(param_1_00 + 0x24); - proc_7F04424C(param_1_00); - param_1_00 = iVar1; - } - } - else { - proc_7F040D98(param_1_00,1,(ulonglong)*(byte *)(param_1_00 + 2) & 4); - } - return; -} - - - -void proc_7F0442DC(int param_1) - -{ - byte bVar1; - int param_1_00; - int iVar2; - float *pfVar3; - float *pfVar4; - - param_1_00 = *(int *)(param_1 + 4); - iVar2 = *(int *)(param_1_00 + 0x14); - if ((*(uint *)(param_1_00 + 100) & 4) == 0) { - if (*(ushort **)(iVar2 + 0x1c) == NULL) { - bVar1 = *(byte *)(param_1 + 1); - } - else { - if ((*(uint *)(param_1_00 + 100) & 0x40) != 0) { - pfVar3 = (float *)proc_7F06C660(*(int *)(iVar2 + 0x18),*(ushort **)(iVar2 + 0x1c),0); - *(byte *)(param_1 + 1) = *(byte *)(param_1 + 1) | 2; - pfVar4 = pfVar3; - proc_7F0BD714((int)*(short *)(*(int *)(iVar2 + 8) + 0xe) << 6); - *(float **)(iVar2 + 0xc) = pfVar4; - proc_7F05818C(pfVar3,(float *)(*(int *)(param_1_00 + 0x6c) + 4),(int)pfVar4); - proc_7F06EEA4((longlong)iVar2,**(int **)(iVar2 + 8)); - handle_thrown_explosive_detonation(param_1); - param_1_00 = *(int *)(param_1 + 0x20); - while (param_1_00 != 0) { - iVar2 = *(int *)(param_1_00 + 0x24); - proc_7F0442DC(param_1_00); - param_1_00 = iVar2; - } - return; - } - bVar1 = *(byte *)(param_1 + 1); - } - *(byte *)(param_1 + 1) = bVar1 & 0xfd; - handle_thrown_explosive_detonation(param_1); - param_1_00 = *(int *)(param_1 + 0x20); - while (param_1_00 != 0) { - iVar2 = *(int *)(param_1_00 + 0x24); - proc_7F04424C(param_1_00); - param_1_00 = iVar2; - } - } - else { - proc_7F040D98(param_1_00,1,(ulonglong)*(byte *)(param_1_00 + 2) & 4); - } - return; -} - - - -undefined8 proc_7F044414(float *param_1,int param_2,float *param_3,uint param_4) - -{ - longlong lVar1; - float *pfVar2; - uint uVar3; - int iVar4; - int iVar5; - float *pfVar6; - int iVar7; - double dVar8; - double dVar9; - double dVar10; - double dVar11; - ulonglong unaff_f22; - float fStack68; - undefined4 uStack64; - float fStack60; - double dStack48; - - if (0 < param_2) { - iVar4 = 0; - pfVar6 = param_1; - do { - iVar7 = iVar4 + 1; - fStack68 = *pfVar6; - dVar10 = (double)(param_1 + (iVar7 % param_2) * 2)[1] - (double)pfVar6[1]; - if (param_2 == 0) { - trap(0x1c00); - } - if ((param_2 == -1) && (iVar7 == -0x80000000)) { - trap(0x1800); - } - iVar5 = iVar7 % param_2 + 1; - dVar11 = (double)fStack68 - (double)param_1[(iVar7 % param_2) * 2]; - if ((dVar10 == (double)(unaff_f22 & 0xffffffff00000000)) && - (dVar11 == (double)(unaff_f22 & 0xffffffff00000000))) { - uStack64 = 0; - fStack60 = pfVar6[1]; - lVar1 = proc_7F03CCD8(&fStack68,param_3,param_4); - if (lVar1 != 0) { - return 0; - } - } - else { - uVar3 = 0; - dVar9 = (double)pfVar6[1] * dVar11 + (double)fStack68 * dVar10; - if (param_2 == 0) { - trap(0x1c00); - } - if ((param_2 == -1) && (iVar5 == -0x80000000)) { - trap(0x1800); - } - while ((iVar5 %= param_2, iVar4 != iVar5 && - (dStack48 = (double)(param_1 + iVar5 * 2)[1] * dVar11 + - (double)param_1[iVar5 * 2] * dVar10, dStack48 == dVar9))) { - iVar5 += 1; - if (param_2 == 0) { - trap(0x1c00); - } - if ((param_2 == -1) && (iVar5 == -0x80000000)) { - trap(0x1800); - } - } - pfVar2 = param_3; - if (0 < (int)param_4) { - do { - dVar8 = (double)pfVar2[1] * dVar11 + (double)*pfVar2 * dVar10; - if (dStack48 == dVar9) { - dStack48 = (dVar9 - dVar8) + dVar9; - } - if (((dVar8 < dVar9) && (dStack48 < dVar9)) || ((dVar9 < dVar8 && (dVar9 < dStack48)))) - break; - uVar3 += 1; - pfVar2 = pfVar2 + 2; - } while (uVar3 != param_4); - } - if (uVar3 == param_4) { - return 1; - } - } - pfVar6 = pfVar6 + 2; - iVar4 = iVar7; - } while (iVar7 != param_2); - } - return 0; -} - - - -undefined8 proc_7F0446B8(float *param_1,uint param_2,float *param_3,uint param_4) - -{ - longlong lVar1; - undefined8 uVar2; - - lVar1 = proc_7F044414(param_1,param_2,param_3,param_4); - if (lVar1 == 0) { - lVar1 = proc_7F044414(param_3,param_4,param_1,param_2); - if (lVar1 == 0) { - uVar2 = 1; - } - else { - uVar2 = 0; - } - } - else { - uVar2 = 0; - } - return uVar2; -} - - - -undefined8 proc_7F044718(undefined8 param_1,undefined8 param_2,float *param_3,int param_4) - -{ - float fVar1; - ulonglong uVar2; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined4 extraout_a1_hi; - undefined4 extraout_a1_hi_00; - undefined4 extraout_a1_hi_01; - undefined4 extraout_a1_hi_02; - undefined4 uVar3; - undefined4 extraout_a1_lo; - undefined4 extraout_a1_lo_00; - undefined4 extraout_a1_lo_01; - undefined4 extraout_a1_lo_02; - undefined4 uVar4; - float *pfVar5; - float *pfVar6; - int iVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - - fVar1 = (float)param_2; - fVar11 = *(float *)param_1; - fVar12 = ((float *)param_1)[2]; - iVar7 = 0; - pfVar6 = param_3; - if (0 < param_4) { - do { - iVar7 += 1; - pfVar5 = param_3 + (iVar7 % param_4) * 2; - if (param_4 == 0) { - trap(0x1c00); - } - if ((param_4 == -1) && (iVar7 == -0x80000000)) { - trap(0x1800); - } - fVar8 = proc_7F0B16C4(*pfVar6,pfVar6[1],param_1,param_2,*pfVar5,pfVar5[1],fVar11,fVar12); - if (fVar8 < 0.00000000) { - fVar10 = -fVar8; - fVar9 = *pfVar6; - } - else { - fVar9 = *pfVar6; - fVar10 = fVar8; - } - proc_7F0B1794(fVar9,pfVar6[1],extraout_a0,CONCAT44(extraout_a1_hi,extraout_a1_lo),fVar11, - fVar12); - fVar9 = fVar8; - proc_7F0B1794(*pfVar5,pfVar5[1],extraout_a0_00,CONCAT44(extraout_a1_hi_00,extraout_a1_lo_00), - fVar11,fVar12); - param_1 = extraout_a0_01; - uVar3 = extraout_a1_hi_01; - uVar4 = extraout_a1_lo_01; - if ((fVar10 < fVar1) && - (((fVar8 < fVar1 || (fVar9 < fVar1)) || - (uVar2 = proc_7F0B17E4(*pfVar6,pfVar6[1],extraout_a0_01, - CONCAT44(extraout_a1_hi_01,extraout_a1_lo_01),*pfVar5,pfVar5[1], - fVar11,fVar12), param_1 = extraout_a0_02, uVar3 = extraout_a1_hi_02 - , uVar4 = extraout_a1_lo_02, uVar2 != 0)))) { - return 1; - } - param_2 = CONCAT44(uVar3,uVar4); - pfVar6 = pfVar6 + 2; - } while (iVar7 != param_4); - } - return 0; -} - - - -// WARNING: Instruction at (ram,0x7f044a9c) overlaps instruction at (ram,0x7f044a98) -// -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined8 proc_7F0448A8(void) - -{ - bool bVar1; - byte bVar2; - byte bVar3; - longlong lVar4; - byte *in_a0_lo; - byte *pbVar5; - short *psVar6; - int iVar7; - float in_f0; - float fStack96; - float fStack92; - uint uStack88; - float *apfStack84 [4]; - int iStack68; - float fStack64; - float afStack60 [2]; - uint auStack52 [8]; - float fStack20; - float fStack16; - uint uStack12; - float *apfStack8 [2]; - - proc_7F03CC20((char *)in_a0_lo,(int **)apfStack8,&uStack12,&fStack16,&fStack20); - if (0 < (int)uStack12) { - proc_7F03CB8C((char *)in_a0_lo,auStack52); - proc_7F03E3FC((int *)auStack52); - lVar4 = (longlong)*ptr_list_object_lookup_indices; - iVar7 = (int)*ptr_list_object_lookup_indices; - psVar6 = ptr_list_object_lookup_indices; - if (-1 < lVar4) { - do { - iVar7 = (iVar7 * 0x10 + (int)lVar4 * -4 + (int)lVar4) * 4; - pbVar5 = pos_data_entry + iVar7; - if (pbVar5 == in_a0_lo) { - lVar4 = (longlong)psVar6[1]; - goto LAB_7f044b04; - } - bVar2 = *pbVar5; - if ((bVar2 == 6) || (bVar2 == 3)) { - if ((*(int *)(pos_data_entry + iVar7 + 4) == 0) || - ((*(uint *)(*(int *)(pos_data_entry + iVar7 + 4) + 0x14) & 0x400) == 0)) { - proc_7F03CF88((char *)pbVar5,&iStack68,afStack60,&fStack64); - proc_7F03CFE8(pbVar5); - fStack64 = fStack64 + in_f0; - afStack60[0] = afStack60[0] + in_f0; - if (fStack64 <= fStack16) { - if (fStack20 <= afStack60[0]) { - lVar4 = proc_7F03CCD8((float *)(pos_data_entry + iVar7 + 8),apfStack8[0],uStack12); - bVar1 = lVar4 == 0; - if ((bVar1) && - (lVar4 = proc_7F044718((longlong)(int)(pos_data_entry + iVar7 + 8), - (longlong)iStack68,apfStack8[0],uStack12), lVar4 != 0)) { - bVar1 = false; - } - if (!bVar1) { - if ((*pbVar5 == 3) && (*in_a0_lo == 2)) { - *(ushort *)(*(int *)(pos_data_entry + iVar7 + 4) + 0x12) = - *(ushort *)(*(int *)(pos_data_entry + iVar7 + 4) + 0x12) | 0x10; - } - return 0; - } - lVar4 = (longlong)psVar6[1]; - goto LAB_7f044b04; - } -LAB_7f044b00: - lVar4 = (longlong)psVar6[1]; - } - else { - lVar4 = (longlong)psVar6[1]; - } - } - else { - lVar4 = (longlong)psVar6[1]; - } - } - else { - if (bVar2 == 1) { -LAB_7f044a68: - bVar3 = *in_a0_lo; - } - else { - if (bVar2 != 4) { - if (bVar2 != 2) { - lVar4 = (longlong)psVar6[1]; - goto LAB_7f044b04; - } - goto LAB_7f044a68; - } - bVar3 = *in_a0_lo; - } - if (bVar3 == 2) { - if (bVar2 == 2) { - lVar4 = (longlong)psVar6[1]; - goto LAB_7f044b04; - } - if ((*(char *)(*(int *)(pos_data_entry + iVar7 + 4) + 3) == '+') || - (*(char *)(*(int *)(pos_data_entry + iVar7 + 4) + 3) == '(')) goto LAB_7f044b00; - } - proc_7F03CC20((char *)pbVar5,(int **)apfStack84,&uStack88,&fStack92,&fStack96); - if ((int)uStack88 < 1) { - lVar4 = (longlong)psVar6[1]; - } - else { - if (fStack96 <= fStack16) { - if (fStack20 <= fStack92) { - lVar4 = proc_7F0446B8(apfStack84[0],uStack88,apfStack8[0],uStack12); - if (lVar4 != 0) { - return 0; - } - lVar4 = (longlong)psVar6[1]; - } - else { - lVar4 = (longlong)psVar6[1]; - } - } - else { - lVar4 = (longlong)psVar6[1]; - } - } - } -LAB_7f044b04: - psVar6 = psVar6 + 1; - if (lVar4 < 0) { - return 1; - } - iVar7 = (int)lVar4; - } while( true ); - } - } - return 1; -} - - - -int proc_7F044B38(undefined8 param_1) - -{ - int iVar1; - int iVar2; - int iVar3; - longlong lVar4; - undefined8 extraout_a0; - float *pfVar5; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - float extraout_f0; - float extraout_f0_00; - float extraout_f0_01; - float fVar6; - float fVar7; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float fVar8; - float fVar9; - float fVar10; - float fStack228; - float fStack224; - float fStack220; - float fStack200; - float fStack196; - float fStack192; - float fStack188; - float fStack184; - float fStack180; - float fStack176; - float fStack172; - float fStack168; - float fStack164; - float fStack160; - float fStack156; - int iStack152; - int iStack148; - float afStack144 [16]; - int iStack80; - float fStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - float *pfStack28; - float *pfStack24; - float *pfStack20; - float *pfStack16; - int iStack4; - - iVar3 = (int)param_1; - iStack4 = *(int *)(iVar3 + 0x14); - iVar1 = *(int *)(iVar3 + 0x10); - iVar2 = *(int *)(*(int *)(iStack4 + 8) + 8); - lVar4 = (longlong)iVar2; - pfStack16 = *(float **)(*(int *)(iVar2 + 4) + 4); - pfStack20 = *(float **)(*(int *)(iVar2 + 8) + 4); - pfStack24 = *(float **)(*(int *)(iVar2 + 0xc) + 4); - pfStack28 = *(float **)(*(int *)(iVar2 + 0x10) + 4); - iStack80 = 1; - iStack152 = *(int *)(*(int *)(iVar2 + 0x18) + 4); - proc_7F0585FC(*(float *)(iVar3 + 0xa0),param_1,afStack144); - matrix_multiply_A1_by_F12(*(float *)(iStack4 + 0x14),extraout_a0,afStack144); - proc_7F058998((undefined4 *)(iVar3 + 0x58),(int)afStack144); - proc_7F058418(afStack144,pfStack16,&fStack40); - proc_7F058418(afStack144,pfStack20,&fStack52); - proc_7F058418(afStack144,pfStack24,&fStack64); - proc_7F058418(afStack144,pfStack28,&fStack76); - iStack148 = *(int *)(iVar1 + 0x14); - proc_7F0B0BE4(&iStack148,extraout_f12,extraout_f14,*(float *)(iVar1 + 8),*(float *)(iVar1 + 0x10)) - ; - if (lVar4 == 0) { - iStack80 = 0; - fVar8 = extraout_f12_00; - fVar7 = extraout_f14_00; - } - else { - lVar4 = proc_7F0B2970(); - fVar8 = extraout_f12_01; - fVar7 = extraout_f14_01; - fStack36 = extraout_f0; - } - iStack148 = *(int *)(iVar1 + 0x14); - proc_7F0B0BE4(&iStack148,fVar8,fVar7,*(float *)(iVar1 + 8),*(float *)(iVar1 + 0x10)); - if (lVar4 == 0) { - iStack80 = 0; - fVar8 = extraout_f12_02; - fVar7 = extraout_f14_02; - } - else { - lVar4 = proc_7F0B2970(); - fVar8 = extraout_f12_03; - fVar7 = extraout_f14_03; - fStack48 = extraout_f0_00; - } - iStack148 = *(int *)(iVar1 + 0x14); - proc_7F0B0BE4(&iStack148,fVar8,fVar7,*(float *)(iVar1 + 8),*(float *)(iVar1 + 0x10)); - if (lVar4 == 0) { - iStack80 = 0; - fVar8 = extraout_f12_04; - fVar7 = extraout_f14_04; - } - else { - lVar4 = proc_7F0B2970(); - fVar8 = extraout_f12_05; - fVar7 = extraout_f14_05; - fStack60 = extraout_f0_01; - } - iStack148 = *(int *)(iVar1 + 0x14); - proc_7F0B0BE4(&iStack148,fVar8,fVar7,*(float *)(iVar1 + 8),*(float *)(iVar1 + 0x10)); - if (lVar4 == 0) { - iStack80 = 0; - } - else { - fStack72 = (float)proc_7F0B2970(); - } - pfVar5 = (float *)(iVar3 + 0x18); - if (iStack80 == 0) { - proc_7F0585FC(*(float *)(iVar3 + 0xa0),(longlong)(int)pfVar5,pfVar5); - matrix_multiply_A1_by_F12(*(float *)(iStack4 + 0x14),extraout_a0_01,pfVar5); - fVar7 = (float)proc_7F0B2970(); - fVar8 = fVar7; - proc_7F03E864(iStack152); - fVar7 = fVar7 - (pfStack16[1] + fVar8) * *(float *)(iStack4 + 0x14); - *(float *)(iVar1 + 0xc) = fVar7; - *(float *)(iVar3 + 0x5c) = fVar7; - } - else { - fStack164 = fStack52 - fStack40; - fStack160 = fStack48 - fStack36; - fStack156 = fStack44 - fStack32; - guNormalize(&fStack164,&fStack160,&fStack156); - fStack176 = fStack76 - fStack52; - fStack172 = fStack72 - fStack48; - fStack168 = fStack68 - fStack44; - guNormalize(&fStack176,&fStack172,&fStack168); - fStack188 = fStack64 - fStack76; - fStack184 = fStack60 - fStack72; - fStack180 = fStack56 - fStack68; - guNormalize(&fStack188,&fStack184,&fStack180); - fStack200 = fStack40 - fStack64; - fStack196 = fStack36 - fStack60; - fStack192 = fStack32 - fStack56; - guNormalize(&fStack200,&fStack196,&fStack192); - fStack224 = fStack156 * fStack176 - fStack168 * fStack164; - fVar8 = fStack168 * fStack188 - fStack180 * fStack176; - if (((fStack224 < fVar8) || (fStack224 < fStack180 * fStack200 - fStack192 * fStack188)) || - (fStack224 < fStack192 * fStack164 - fStack156 * fStack200)) { - fStack224 = fStack180 * fStack200 - fStack192 * fStack188; - fVar7 = fStack192 * fStack164 - fStack156 * fStack200; - if ((fVar8 < fStack224) || (fVar8 < fVar7)) { - if (fVar7 <= fStack224) { - fStack228 = fStack184 * fStack192 - fStack196 * fStack180; - fStack220 = fStack188 * fStack196 - fStack200 * fStack184; - } - else { - fStack228 = fStack196 * fStack156 - fStack160 * fStack192; - fStack220 = fStack200 * fStack160 - fStack164 * fStack196; - fStack224 = fVar7; - } - } - else { - fStack228 = fStack172 * fStack180 - fStack184 * fStack168; - fStack220 = fStack176 * fStack184 - fStack188 * fStack172; - fStack224 = fVar8; - } - } - else { - fStack228 = fStack160 * fStack168 - fStack172 * fStack156; - fStack220 = fStack164 * fStack172 - fStack176 * fStack160; - } - fVar8 = sinf(*(float *)(iVar3 + 0xa0)); - fVar7 = cosf(*(float *)(iVar3 + 0xa0)); - pfVar5 = (float *)(iVar3 + 0x18); - proc_7F057FD0(pfVar5); - *(float *)(iVar3 + 0x28) = fStack228; - fVar10 = *(float *)(iVar3 + 0x28); - *(float *)(iVar3 + 0x2c) = fStack224; - fVar9 = *(float *)(iVar3 + 0x2c); - *(float *)(iVar3 + 0x30) = fStack220; - fVar6 = *(float *)(iVar3 + 0x30); - *(float *)(iVar3 + 0x18) = fVar9 * fVar7 - fVar6 * 0.00000000; - *(float *)(iVar3 + 0x1c) = fVar6 * fVar8 - fVar7 * fVar10; - *(float *)(iVar3 + 0x20) = fVar10 * 0.00000000 - fVar8 * fVar9; - *(float *)(iVar3 + 0x38) = *(float *)(iVar3 + 0x1c) * fVar6 - fVar9 * *(float *)(iVar3 + 0x20); - *(float *)(iVar3 + 0x3c) = *(float *)(iVar3 + 0x20) * fVar10 - fVar6 * *(float *)(iVar3 + 0x18); - *(float *)(iVar3 + 0x40) = *(float *)(iVar3 + 0x18) * fVar9 - fVar10 * *(float *)(iVar3 + 0x1c); - matrix_multiply_A1_by_F12(*(float *)(iStack4 + 0x14),extraout_a0_00,pfVar5); - proc_7F058418(pfVar5,pfStack16,&fStack52); - proc_7F03E864(iStack152); - fStack48 = (fStack36 - fVar6 * *(float *)(iStack4 + 0x14)) - fStack48; - *(float *)(iVar1 + 0xc) = fStack48; - *(float *)(iVar3 + 0x5c) = fStack48; - } - return iStack80; -} - - - -int proc_7F0451DC(float *param_1,float param_2,float param_3,float param_4) - -{ - int iVar1; - float in_a2_lo; - float in_a3_lo; - float fVar2; - float fVar3; - float fVar4; - - iVar1 = get_curplayer_positiondata(); - fVar2 = *param_1 - *(float *)(iVar1 + 8); - fVar3 = param_1[1] - *(float *)(iVar1 + 0xc); - fVar4 = param_1[2] - *(float *)(iVar1 + 0x10); - fVar2 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3 + fVar4 * fVar4); - if (in_a2_lo < fVar2) { - iVar1 = 0xff; - } - else { - if (fVar2 < param_4) { - iVar1 = (int)(in_a3_lo * 255.00000000); - } - else { - iVar1 = (int)((((fVar2 - param_4) * (1.00000000 - in_a3_lo)) / (in_a2_lo - param_4) + in_a3_lo - ) * 255.00000000); - } - } - return iVar1; -} - - -/* -Unable to decompile 'object_interaction' -Cause: Exception while decompiling 7f0452d4: process: timeout - -*/ - - -undefined4 * proc_7F049B58(undefined4 *param_1) - -{ - char cVar1; - int iVar2; - undefined4 *puVar4; - longlong lVar3; - u32 uVar5; - char *pcVar6; - - pcVar6 = (char *)get_ptr_obj_pos_list_current_entry(); - if (pcVar6 == NULL) { - return param_1; - } - cVar1 = *pcVar6; - do { - if (cVar1 == '\x03') { - iVar2 = *(int *)(pcVar6 + 4); - puVar4 = proc_7F061E18(param_1,(char *)(iVar2 + 0x180),1); - param_1 = proc_7F061E18(puVar4,(char *)(iVar2 + 0x1ac),1); -LAB_7f049c54: - pcVar6 = *(char **)(pcVar6 + 0x24); - } - else { - if (cVar1 == '\x01') { - if (*(char *)(*(int *)(pcVar6 + 4) + 3) == '\r') { - param_1 = proc_7F061E18(param_1,*(char **)(*(int *)(pcVar6 + 4) + 0xcc),1); - goto LAB_7f049c54; - } - pcVar6 = *(char **)(pcVar6 + 0x24); - } - else { - if (cVar1 == '\x06') { - if (*(int *)(pcVar6 + 4) != 0) { - lVar3 = proc_7F09B15C((int)pcVar6); - uVar5 = get_cur_playernum(); - if ((longlong)(int)uVar5 != lVar3) { - iVar2 = *(int *)(pcVar6 + 4); - puVar4 = proc_7F061E18(param_1,(char *)(iVar2 + 0x180),1); - param_1 = proc_7F061E18(puVar4,(char *)(iVar2 + 0x1ac),1); - } - goto LAB_7f049c54; - } - pcVar6 = *(char **)(pcVar6 + 0x24); - } - else { - pcVar6 = *(char **)(pcVar6 + 0x24); - } - } - } - if (pcVar6 == NULL) { - return param_1; - } - cVar1 = *pcVar6; - } while( true ); -} - - - -void set_ptr_monitor_img_to_obj_ani_slot(undefined4 *slot,undefined4 image) - -{ - *slot = image; - *(undefined2 *)(slot + 1) = 0; - return; -} - - - -void set_ptr_monitor_img_to_obj_ani_slot(undefined4 *param_1,undefined4 param_2) - -{ - undefined4 *image; - - image = &monitor_animation_microcode; - if (true) { - switch(param_2) { + ulonglong uVar1; + save_file *folder; + u32 uVar2; + + switch(cheat) { case 1: - image = &DAT_80030c00; - break; - case 2: - image = &DAT_80030e24; - break; - case 3: - image = &dword_80030F44; - break; case 4: - image = &dword_80031018; - break; case 5: - image = &dword_80031074; - break; case 6: - image = &dword_800310F0; - break; case 7: - image = &dword_8003118C; - break; case 8: - image = &dword_8003121C; - break; case 9: - image = &dword_80031248; - break; - case 10: - image = &dword_80031274; - break; - case 0xb: - image = &DAT_800312f4; - break; - case 0xc: - image = &DAT_80031310; - break; case 0xd: - image = &dword_80031490; - break; - case 0xe: - image = &dword_800314F8; - break; - case 0xf: - image = &DAT_80030ec8; - break; case 0x10: - image = &DAT_80031360; - break; - case 0x11: - image = &dword_8003156C; - break; - case 0x12: - image = &DAT_800315cc; - break; - case 0x13: - image = &DAT_80031848; - break; - case 0x14: - image = &dword_80031898; - break; - case 0x15: - image = &stru_800318B8; - break; case 0x16: - image = &stru_8003191C; - break; - case 0x17: - image = &stru_80031950; - break; - case 0x18: - image = &stru_800319D4; - break; case 0x19: - image = &stru_800319F0; - break; - case 0x1a: - image = &stru_80031A0C; - break; - case 0x1b: - image = &stru_80031A28; - break; - case 0x1c: - image = &stru_80031A44; - break; - case 0x1d: - image = &stru_80031A60; - break; - case 0x1e: - image = &stru_80031A7C; - break; - case 0x1f: - image = &stru_80031A98; - break; - case 0x20: - image = &stru_80031AB4; - break; - case 0x21: - image = &stru_80031AD0; - break; - case 0x22: - image = &stru_80031AEC; - break; - case 0x23: - image = (undefined4 *)&stru_80031B24; - break; - case 0x24: - image = (undefined4 *)&stru_80031B38; - break; - case 0x25: - image = (undefined4 *)&stru_80031B4C; - break; - case 0x26: - image = (undefined4 *)&dword_80031B60; - break; - case 0x27: - image = &stru_80031BB4; - break; - case 0x28: - image = (undefined4 *)&stru_80031BD0; - break; - case 0x29: - image = (undefined4 *)&stru_80031BEC; - break; - case 0x2a: - image = &stru_80031C08; - break; - case 0x2b: - image = (undefined4 *)&stru_80031C80; - break; - case 0x2c: - image = (undefined4 *)&dword_80031D30; - break; - case 0x2d: - image = (undefined4 *)&dword_80031D58; - break; - case 0x2e: - image = (undefined4 *)&dword_80031DA8; - break; - case 0x2f: - image = &dword_80031DF4; - break; - case 0x30: - image = &dword_80031E40; - break; - case 0x31: - image = &dword_80031E78; - break; - case 0x32: - image = &DAT_80031eb0; - break; - case 0x33: - image = &DAT_80031ee8; - } - } - set_ptr_monitor_img_to_obj_ani_slot(param_1,image); - return; -} - - - -void save_img_index_to_obj_ani_slot(int slot,undefined4 index) - -{ - *(undefined4 *)(slot + 8) = index; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -uint * process_monitor_animation_microcode(void) - -{ - undefined uVar1; - ushort uVar2; - int iVar3; - undefined4 uVar4; - int iVar5; - bool bVar6; - uint *puVar7; - uint *puVar8; - undefined4 *virtualAddress; - undefined4 *puVar9; - u32 uVar10; - undefined4 *puVar11; - int objinst; - ushort *partdesc; - int *slot; - uint *in_a3_lo; - short sVar12; - uint *imgcall; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - uint *puStackX12; - int in_stack_00000010; - int in_stack_00000014; - - puStackX12 = in_a3_lo; - if ((partdesc != NULL) && (puStackX12 = in_a3_lo, (*partdesc & 0xff) == 0x18)) { - puStackX12 = in_a3_lo; - proc_7F0BD6C4(4); - puVar7 = puStackX12; - puStackX12 = puStackX12 + 2; - iVar3 = *(int *)(partdesc + 2); - puVar9 = (undefined4 *)extract_id_from_object_structure_microcode(objinst,partdesc); - fVar16 = flt_80052C68; - bVar6 = false; - uVar2 = *(ushort *)(slot + 1); - while( true ) { - puVar11 = (undefined4 *)(*slot + (uint)uVar2 * 4); - switch(*puVar11) { - case 0: - slot[0x10] = 0; - slot[0x15] = 0; - *(ushort *)(slot + 1) = uVar2 + 1; - break; - case 1: - slot[0xf] = 0; - fVar19 = (float)puVar11[2]; - if ((int)puVar11[2] < 0) { - fVar19 = fVar19 + 4294967296.00000000; - } - slot[0x11] = slot[0xe]; - *(float *)(slot + 0x10) = 1.00000000 / fVar19; - iVar5 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 3; - *(float *)(slot + 0x12) = (float)slot[0xe] + (float)iVar5 * 0.00097656; - break; - case 2: - slot[0x14] = 0; - fVar19 = (float)puVar11[2]; - if ((int)puVar11[2] < 0) { - fVar19 = fVar19 + 4294967296.00000000; - } - slot[0x16] = slot[0x13]; - *(float *)(slot + 0x15) = 1.00000000 / fVar19; - iVar5 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 3; - *(float *)(slot + 0x17) = (float)slot[0x13] + (float)iVar5 * 0.00097656; - break; - case 3: - slot[0xf] = 0; - fVar19 = (float)puVar11[2]; - if ((int)puVar11[2] < 0) { - fVar19 = fVar19 + 4294967296.00000000; - } - slot[0x11] = slot[0xe]; - *(float *)(slot + 0x10) = 1.00000000 / fVar19; - iVar5 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 3; - *(float *)(slot + 0x12) = (float)iVar5 * 0.00097656; - break; - case 4: - slot[0x14] = 0; - fVar19 = (float)puVar11[2]; - if ((int)puVar11[2] < 0) { - fVar19 = fVar19 + 4294967296.00000000; - } - slot[0x16] = slot[0x13]; - *(float *)(slot + 0x15) = 1.00000000 / fVar19; - iVar5 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 3; - *(float *)(slot + 0x17) = (float)iVar5 * 0.00097656; - break; - case 5: - slot[5] = 0; - fVar19 = (float)puVar11[2]; - if ((int)puVar11[2] < 0) { - fVar19 = fVar19 + 4294967296.00000000; - } - slot[7] = slot[4]; - *(float *)(slot + 6) = 1.00000000 / fVar19; - iVar5 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 3; - *(float *)(slot + 8) = (float)iVar5 * 0.00097656; - break; - case 6: - slot[10] = 0; - fVar19 = (float)puVar11[2]; - if ((int)puVar11[2] < 0) { - fVar19 = fVar19 + 4294967296.00000000; - } - slot[0xc] = slot[9]; - *(float *)(slot + 0xb) = 1.00000000 / fVar19; - iVar5 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 3; - *(float *)(slot + 0xd) = (float)iVar5 * 0.00097656; - break; - case 7: - save_img_index_to_obj_ani_slot((int)slot,puVar11[1]); - *(short *)(slot + 1) = *(short *)(slot + 1) + 2; - break; - case 8: - if (*(short *)((int)slot + 6) < 0) { - bVar6 = true; - *(undefined2 *)((int)slot + 6) = (short)puVar11[1]; - } - else { - *(short *)((int)slot + 6) = *(short *)((int)slot + 6) - (short)clock_timer; - if (*(short *)((int)slot + 6) < 0) { - *(short *)(slot + 1) = *(short *)(slot + 1) + 2; - } - else { - bVar6 = true; - } - } - break; - case 9: - set_ptr_monitor_img_to_obj_ani_slot(slot,puVar11[1]); - break; - case 10: - uVar10 = get_random_value(); - if (uVar10 >> 0x10 < (uint)puVar11[2]) { - set_ptr_monitor_img_to_obj_ani_slot(slot,puVar11[1]); - } - else { - *(short *)(slot + 1) = *(short *)(slot + 1) + 3; - } - break; - case 0xb: - *(undefined2 *)(slot + 1) = 0; - break; - case 0xc: - bVar6 = true; - break; - case 0xd: - slot[0x1b] = 0; - fVar19 = (float)puVar11[2]; - if ((int)puVar11[2] < 0) { - fVar19 = fVar19 + 4294967296.00000000; - } - *(undefined *)((int)slot + 0x61) = *(undefined *)(slot + 0x18); - *(float *)(slot + 0x1c) = 1.00000000 / fVar19; - uVar4 = puVar11[1]; - *(undefined *)(slot + 0x19) = *(undefined *)((int)slot + 99); - *(undefined *)((int)slot + 0x62) = (char)((uint)uVar4 >> 0x18); - uVar4 = puVar11[1]; - *(undefined *)((int)slot + 0x67) = *(undefined *)((int)slot + 0x66); - *(undefined *)((int)slot + 0x65) = (char)((uint)uVar4 >> 0x10); - uVar4 = puVar11[1]; - *(undefined *)((int)slot + 0x6a) = *(undefined *)((int)slot + 0x69); - *(char *)(slot + 0x1a) = (char)((uint)uVar4 >> 8); - uVar4 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 3; - *(undefined *)((int)slot + 0x6b) = (char)uVar4; - break; - case 0xe: - iVar5 = puVar11[1]; - *(ushort *)(slot + 1) = uVar2 + 2; - *(float *)(slot + 3) = ((float)iVar5 * fVar16) / 65536.00000000; - break; - case 0xf: - *(float *)(slot + 3) = - (float)slot[3] + (global_timer_delta * (float)puVar11[1] * fVar16) / 65536.00000000; - fVar19 = (float)slot[3]; - if (fVar16 <= fVar19) { - *(float *)(slot + 3) = fVar19 - fVar16; - fVar19 = (float)slot[3]; - } - if (fVar19 < 0.00000000) { - *(float *)(slot + 3) = fVar19 + fVar16; - sVar12 = *(short *)(slot + 1); - } - else { - sVar12 = *(short *)(slot + 1); - } - *(short *)(slot + 1) = sVar12 + 2; - } - if (bVar6) break; - uVar2 = *(ushort *)(slot + 1); - } - if (0.00000000 < (float)slot[6]) { - *(float *)(slot + 5) = (float)slot[5] + (float)slot[6] * global_timer_delta; - if ((float)slot[5] < 1.00000000) { - *(float *)(slot + 4) = (float)slot[7] + ((float)slot[8] - (float)slot[7]) * (float)slot[5]; - } - else { - slot[5] = 0x3f800000; - slot[6] = 0; - slot[4] = slot[8]; - } - } - if (0.00000000 < (float)slot[0xb]) { - *(float *)(slot + 10) = (float)slot[10] + (float)slot[0xb] * global_timer_delta; - if ((float)slot[10] < 1.00000000) { - *(float *)(slot + 9) = - (float)slot[0xc] + ((float)slot[0xd] - (float)slot[0xc]) * (float)slot[10]; - } - else { - slot[10] = 0x3f800000; - slot[0xb] = 0; - slot[9] = slot[0xd]; - } - fVar16 = (float)slot[0x10]; - } - else { - fVar16 = (float)slot[0x10]; - } - if (0.00000000 < fVar16) { - *(float *)(slot + 0xf) = (float)slot[0xf] + fVar16 * global_timer_delta; - if ((float)slot[0xf] < 1.00000000) { - *(float *)(slot + 0xe) = - (float)slot[0x11] + ((float)slot[0x12] - (float)slot[0x11]) * (float)slot[0xf]; - } - else { - slot[0xf] = 0x3f800000; - slot[0x10] = 0; - slot[0xe] = slot[0x12]; - } - fVar16 = (float)slot[0x15]; - } - else { - fVar16 = (float)slot[0x15]; - } - if (0.00000000 < fVar16) { - *(float *)(slot + 0x14) = (float)slot[0x14] + fVar16 * global_timer_delta; - if ((float)slot[0x14] < 1.00000000) { - *(float *)(slot + 0x13) = - (float)slot[0x16] + ((float)slot[0x17] - (float)slot[0x16]) * (float)slot[0x14]; - } - else { - slot[0x14] = 0x3f800000; - slot[0x15] = 0; - slot[0x13] = slot[0x17]; - } - fVar16 = (float)slot[0x1c]; - } - else { - fVar16 = (float)slot[0x1c]; - } - if (0.00000000 < fVar16) { - *(float *)(slot + 0x1b) = (float)slot[0x1b] + fVar16 * global_timer_delta; - fVar16 = (float)slot[0x1b]; - if (fVar16 < 1.00000000) { - *(byte *)(slot + 0x18) = - *(byte *)((int)slot + 0x61) + - (char)(int)((float)((uint)*(byte *)((int)slot + 0x62) - - (uint)*(byte *)((int)slot + 0x61)) * fVar16); - *(char *)((int)slot + 99) = - *(byte *)(slot + 0x19) + - (char)(int)((float)((uint)*(byte *)((int)slot + 0x65) - (uint)*(byte *)(slot + 0x19)) * - fVar16); - *(char *)((int)slot + 0x66) = - *(byte *)((int)slot + 0x67) + - (char)(int)((float)((uint)*(byte *)(slot + 0x1a) - (uint)*(byte *)((int)slot + 0x67)) * - fVar16); - *(char *)((int)slot + 0x69) = - *(byte *)((int)slot + 0x6a) + - (char)(int)((float)((uint)*(byte *)((int)slot + 0x6b) - - (uint)*(byte *)((int)slot + 0x6a)) * fVar16); - } - else { - slot[0x1b] = 0x3f800000; - slot[0x1c] = 0; - *(undefined *)(slot + 0x18) = *(undefined *)((int)slot + 0x62); - *(undefined *)((int)slot + 99) = *(undefined *)((int)slot + 0x65); - *(undefined *)((int)slot + 0x66) = *(undefined *)(slot + 0x1a); - *(undefined *)((int)slot + 0x69) = *(undefined *)((int)slot + 0x6b); - } - } - *(undefined4 **)puVar9 = virtualAddress; - *(uint **)(puVar9 + 1) = puStackX12; - puVar9 = *(undefined4 **)(iVar3 + 8); - *virtualAddress = *puVar9; - virtualAddress[1] = puVar9[1]; - virtualAddress[2] = puVar9[2]; - virtualAddress[3] = puVar9[3]; - iVar5 = *(int *)(iVar3 + 8); - virtualAddress[4] = *(undefined4 *)(iVar5 + 0x10); - virtualAddress[5] = *(undefined4 *)(iVar5 + 0x14); - virtualAddress[6] = *(undefined4 *)(iVar5 + 0x18); - virtualAddress[7] = *(undefined4 *)(iVar5 + 0x1c); - iVar5 = *(int *)(iVar3 + 8); - virtualAddress[8] = *(undefined4 *)(iVar5 + 0x20); - virtualAddress[9] = *(undefined4 *)(iVar5 + 0x24); - virtualAddress[10] = *(undefined4 *)(iVar5 + 0x28); - virtualAddress[0xb] = *(undefined4 *)(iVar5 + 0x2c); - iVar3 = *(int *)(iVar3 + 8); - virtualAddress[0xc] = *(undefined4 *)(iVar3 + 0x30); - virtualAddress[0xd] = *(undefined4 *)(iVar3 + 0x34); - virtualAddress[0xe] = *(undefined4 *)(iVar3 + 0x38); - virtualAddress[0xf] = *(undefined4 *)(iVar3 + 0x3c); - imgcall = (uint *)slot[2]; - if (imgcall < &UNK_00000064) { - imgcall = (uint *)((int)imgcall * 0xc + DAT_8008d120); - } - if (imgcall != NULL) { - fVar17 = (float)slot[4] * 0.50000000; - fVar18 = (float)slot[9] * 0.50000000; - fVar16 = fVar17; - fVar19 = fVar18; - if ((float)slot[3] != 0.00000000) { - fVar13 = cosf((float)slot[3]); - fVar15 = flt_80052CB0; - fVar13 = fVar13 * flt_80052CB0; - fVar14 = sinf((float)slot[3]); - fVar16 = fVar17 * fVar13; - fVar19 = fVar18 * fVar14 * fVar15; - fVar17 = fVar17 * fVar14 * fVar15; - fVar18 = fVar18 * fVar13; - } - fVar15 = (float)(uint)*(byte *)(imgcall + 1); - if (false) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(short *)(virtualAddress + 2) = - (short)(int)(fVar15 * ((float)slot[0xe] + fVar16) * 32.00000000); - fVar15 = (float)(uint)*(byte *)((int)imgcall + 5); - if (false) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(undefined2 *)((int)virtualAddress + 10) = - (short)(int)(fVar15 * ((float)slot[0x13] + fVar19) * 32.00000000); - fVar15 = (float)(uint)*(byte *)(imgcall + 1); - if (false) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(short *)(virtualAddress + 6) = - (short)(int)(fVar15 * ((float)slot[0xe] - fVar17) * 32.00000000); - fVar15 = (float)(uint)*(byte *)((int)imgcall + 5); - if (false) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(undefined2 *)((int)virtualAddress + 0x1a) = - (short)(int)(fVar15 * ((float)slot[0x13] + fVar18) * 32.00000000); - fVar15 = (float)(uint)*(byte *)(imgcall + 1); - if (false) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(short *)(virtualAddress + 10) = - (short)(int)(fVar15 * ((float)slot[0xe] - fVar16) * 32.00000000); - fVar16 = (float)(uint)*(byte *)((int)imgcall + 5); - if (false) { - fVar16 = fVar16 + 4294967296.00000000; - } - *(undefined2 *)((int)virtualAddress + 0x2a) = - (short)(int)(fVar16 * ((float)slot[0x13] - fVar19) * 32.00000000); - fVar16 = (float)(uint)*(byte *)(imgcall + 1); - if (false) { - fVar16 = fVar16 + 4294967296.00000000; - } - *(short *)(virtualAddress + 0xe) = - (short)(int)(fVar16 * ((float)slot[0xe] + fVar17) * 32.00000000); - fVar16 = (float)(uint)*(byte *)((int)imgcall + 5); - if (false) { - fVar16 = fVar16 + 4294967296.00000000; - } - *(undefined2 *)((int)virtualAddress + 0x3a) = - (short)(int)(fVar16 * ((float)slot[0x13] - fVar18) * 32.00000000); - } - uVar1 = *(undefined *)(slot + 0x18); - *(undefined *)(virtualAddress + 0xf) = uVar1; - *(undefined *)(virtualAddress + 0xb) = uVar1; - *(undefined *)(virtualAddress + 7) = uVar1; - *(undefined *)(virtualAddress + 3) = uVar1; - uVar1 = *(undefined *)((int)slot + 99); - *(undefined *)((int)virtualAddress + 0x3d) = uVar1; - *(undefined *)((int)virtualAddress + 0x2d) = uVar1; - *(undefined *)((int)virtualAddress + 0x1d) = uVar1; - *(undefined *)((int)virtualAddress + 0xd) = uVar1; - uVar1 = *(undefined *)((int)slot + 0x66); - *(undefined *)((int)virtualAddress + 0x3e) = uVar1; - *(undefined *)((int)virtualAddress + 0x2e) = uVar1; - *(undefined *)((int)virtualAddress + 0x1e) = uVar1; - *(undefined *)((int)virtualAddress + 0xe) = uVar1; - uVar1 = *(undefined *)((int)slot + 0x69); - *(undefined *)((int)virtualAddress + 0x3f) = uVar1; - *(undefined *)((int)virtualAddress + 0x2f) = uVar1; - *(undefined *)((int)virtualAddress + 0x1f) = uVar1; - *(undefined *)((int)virtualAddress + 0xf) = uVar1; - if (*(char *)((int)slot + 0x69) != -1) { - in_stack_00000014 = 2; - } - puStackX12[1] = 0x2000; - *puStackX12 = 0xb7000000; - puStackX12 = puStackX12 + 2; - likely_generate_DL_for_image_declaration - (&puStackX12,imgcall,in_stack_00000014,(longlong)in_stack_00000010,2); - imgcall = puStackX12; - *puStackX12 = 0x1020040; - puStackX12 = puStackX12 + 2; - uVar10 = osVirtualToPhysical(*(void **)(objinst + 0xc)); - puVar8 = puStackX12; - imgcall[1] = uVar10; - *puStackX12 = 0xbc001006; - puStackX12 = puStackX12 + 2; - uVar10 = osVirtualToPhysical(virtualAddress); - puVar8[1] = uVar10; - puStackX12[1] = 0x4000000; - *puStackX12 = 0x4300040; - puStackX12[3] = 0x2010; - puStackX12[2] = 0xb1000032; - puStackX12[5] = 0; - puStackX12[4] = 0xb8000000; - *puVar7 = 0x6010000; - *(uint **)(puVar7 + 1) = puStackX12 + 6; - puStackX12 = puStackX12 + 6; - } - return puStackX12; -} - - - -void proc_7F04AC20(int param_1,int param_2,uint param_3) - -{ - int param_1_00; - uint uVar1; - uint uVar2; - bool bVar3; - bool bVar4; - int iVar5; - ushort *puVar6; - undefined4 uVar7; - undefined4 *puVar8; - char cVar9; - uint uVar10; - uint extraout_a2_lo; - uint extraout_a2_lo_00; - uint extraout_a2_lo_01; - uint extraout_a2_lo_02; - uint extraout_a2_lo_03; - uint extraout_a2_lo_04; - undefined4 *puVar11; - - if ((*(byte *)(param_1 + 1) & 2) != 0) { - param_1_00 = *(int *)(param_1 + 4); - uVar1 = *(uint *)(param_1_00 + 0x14); - bVar3 = (*(uint *)(param_1_00 + 8) & 0x200) != 0; - uVar10 = param_3; - if (bVar3) { - iVar5 = proc_7F078394(); - bVar3 = iVar5 != 0; - uVar10 = extraout_a2_lo; - } - puVar11 = *(undefined4 **)(param_2 + 0xc); - cVar9 = *(char *)(param_1_00 + 3); - if (cVar9 == '\n') { - if ((*(uint *)(param_2 + 8) & 1) != 0) { - puVar11 = (undefined4 *)process_monitor_animation_microcode(); - cVar9 = *(char *)(param_1_00 + 3); - uVar10 = extraout_a2_lo_00; - } - } - else { - if ((cVar9 == '\v') && ((*(uint *)(param_2 + 8) & 1) != 0)) { - process_monitor_animation_microcode(); - process_monitor_animation_microcode(); - process_monitor_animation_microcode(); - puVar11 = (undefined4 *)process_monitor_animation_microcode(); - cVar9 = *(char *)(param_1_00 + 3); - uVar10 = extraout_a2_lo_01; - } - } - if (cVar9 == '\x01') { - iVar5 = *(int *)(param_1 + 4); - puVar11[1] = 0x3000; - *puVar11 = 0xb6000000; - puVar11 = puVar11 + 2; - if ((*(ushort *)(iVar5 + 0x98) & 8) == 0) { - *(undefined4 *)(param_2 + 0x3c) = 3; - } - else { - *(undefined4 *)(param_2 + 0x3c) = 2; - } - if (*(int *)(param_2 + 0x30) == 9) { - *(uint *)(param_2 + 0x34) = *(uint *)(param_2 + 0x34) & 0xffffff00; - } - } - else { - puVar6 = proc_7F04B478(param_1_00); - bVar4 = false; - if (((puVar6 != NULL) && (iVar5 = *(int *)(puVar6 + 2), bVar4 = false, iVar5 != 0)) && - (bVar4 = false, - *(int *)(iVar5 + 8) != - *(int *)(*(int *)(*(int *)(param_1_00 + 0x14) + 0x10) + (uint)*(ushort *)(iVar5 + 0x1a) * 4 - ))) { - bVar4 = true; - } - iVar5 = do_something_if_object_destroyed(param_1_00); - if ((iVar5 == 0) || (!bVar4)) { - *(undefined4 *)(param_2 + 0x3c) = 3; - uVar10 = extraout_a2_lo_02; - if (*(int *)(param_2 + 0x30) == 9) { - *(uint *)(param_2 + 0x34) = *(uint *)(param_2 + 0x34) & 0xffffff00; - uVar10 = extraout_a2_lo_02; - } - } - else { - iVar5 = do_something_if_object_destroyed(param_1_00); - *(undefined4 *)(param_2 + 0x3c) = 1; - if (*(int *)(param_2 + 0x30) == 9) { - uVar10 = iVar5 * 0x32 + 100; - if ((int)uVar10 < 0x100) { - uVar2 = *(uint *)(param_2 + 0x34); - } - else { - uVar10 = 0xff; - uVar2 = *(uint *)(param_2 + 0x34); - } - *(uint *)(param_2 + 0x34) = uVar2 & 0xffffff00; - *(uint *)(param_2 + 0x34) = uVar2 & 0xffffff00 | uVar10; - uVar10 = extraout_a2_lo_03; - } - else { - uVar10 = extraout_a2_lo_03; - if (0 < iVar5) { - *(uint *)(param_2 + 0x34) = *(uint *)(param_2 + 0x34) | 0xff00; - uVar10 = extraout_a2_lo_03; - } - } - } - } - puVar8 = puVar11; - if (bVar3) { - puVar8 = puVar11 + 2; - *puVar11 = 0x1030040; - uVar7 = proc_7F078394(); - puVar11[1] = uVar7; - uVar10 = extraout_a2_lo_04; - } - *(undefined4 **)(param_2 + 0xc) = puVar8; - subdraw(param_2,uVar1,uVar10,puVar8); - puVar11 = *(undefined4 **)(param_2 + 0xc); - puVar8 = puVar11; - if (*(char *)(param_1_00 + 3) == '\x01') { - puVar8 = puVar11 + 2; - *puVar11 = 0xb6000000; - puVar11[1] = 0x3000; - } - if (((ulonglong)*(byte *)(param_1_00 + 2) & (longlong)(1 << (param_3 & 0x1f))) != 0) { - puVar8 = proc_7F0A1A94(puVar8,param_1,param_3); - } - puVar11 = puVar8; - if (bVar3) { - puVar11 = puVar8 + 2; - *puVar8 = 0x1030040; - uVar7 = proc_7F078374(); - puVar8[1] = uVar7; - } - *(undefined4 **)(param_2 + 0xc) = puVar11; - param_1_00 = *(int *)(param_1 + 0x20); - while (param_1_00 != 0) { - proc_7F04AC20(param_1_00,param_2,param_3); - param_1_00 = *(int *)(param_1_00 + 0x24); - } - if (param_3 != 0) { - if (bVar3) { - proc_7F08BEEC(*(float **)(uVar1 + 0xc),(int)*(short *)(*(int *)(uVar1 + 8) + 0xe)); - } - else { - proc_7F08BD48(*(undefined4 **)(uVar1 + 0xc),(int)*(short *)(*(int *)(uVar1 + 8) + 0xe)); - } - } - } - return; -} - - - -longlong proc_7F04B150(char *param_1,uint *param_2,uint param_3) - -{ - short sVar1; - int iVar2; - longlong lVar3; - int iVar4; - int iVar5; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - undefined4 *puVar6; - undefined4 *puVar7; - undefined4 *puVar8; - undefined4 *puVar9; - float fVar10; - float extraout_f12; - float extraout_f14; - int iStack132; - int iStack120; - int iStack116; - int iStack112; - uint uStack108; - float fStack104; - float fStack100; - undefined4 uStack88; - uint uStack84; - undefined4 uStack80; - uint *puStack76; - undefined4 uStack40; - int iStack36; - uint uStack32; - int iStack20; - float afStack16 [4]; - - iVar2 = *(int *)(param_1 + 4); - puVar8 = &DAT_80031fd0; - puVar6 = &uStack88; - do { - puVar9 = puVar8 + 3; - puVar7 = puVar6 + 3; - *puVar6 = *puVar8; - puVar6[1] = puVar8[1]; - puVar6[2] = puVar8[2]; - puVar8 = puVar9; - puVar6 = puVar7; - } while (puVar9 != (undefined4 *)0x8003200c); - *puVar7 = uRam8003200c; - iStack132 = 0xff; - lVar3 = if_sky_present_convert_values((int)param_1,afStack16); - iStack20 = (int)lVar3; - if (lVar3 == 0) { - lVar3 = (longlong)(int)param_2; - } - else { - if (*(char *)(iVar2 + 3) != '/') { - fVar10 = getinstsize(*(int *)(iVar2 + 0x14),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - proc_7F054B80((int)param_1); - sVar1 = *(short *)(param_1 + 2); - if ((0 < sVar1) && (sVar1 < 0x3c)) { - fVar10 = fVar10 * ((60.00000000 - (float)(int)sVar1) / 60.00000000); - } - iStack132 = (int)(fVar10 * 255.00000000); - if (iStack132 < 1) { - return (longlong)(int)param_2; - } - } - if ((iStack132 < 0xff) || (*(int *)(iVar2 + 0xc) << 0xf < 0)) { - if (param_3 == 0) { - return (longlong)(int)param_2; - } - uStack80 = 3; - } - else { - uStack80 = 2; - if (param_3 == 0) { - uStack80 = 1; - } - } - lVar3 = proc_7F054A64(param_1,&fStack104); - if ((lVar3 < 1) || (*(int *)(iVar2 + 0xc) << 5 < 0)) { - puStack76 = proc_7F0B4FB4(param_2); - } - else { - puStack76 = proc_7F0B4FF4(param_2,extraout_f12,extraout_f14,fStack104,fStack100); - } - uStack84 = (uint)((*(uint *)(iVar2 + 0xc) & 0x10000) == 0); - if (iStack132 < 0xff) { - uStack40 = 5; - iStack36 = iStack132; - } - else { - uStack40 = 9; - if (*(char *)(iVar2 + 3) == '/') { - iStack36 = *(int *)(iVar2 + 0x88) << 8; - } - else { - if (*(char *)(iVar2 + 3) == '\x01') { - if ((*(ushort *)(iVar2 + 0x98) & 2) == 0) { - iStack36 = 0; - } - else { - iStack36 = (int)*(short *)(iVar2 + 0xbe) << 8; - } - } - else { - iStack36 = 0; - } - } - } - iVar4 = proc_7F03FF60(iVar2); - iVar5 = iVar4 * -0x15 + 0xff; - if (iVar5 < 0) { - iVar5 = 0; - } - iStack120 = (int)((uint)*(byte *)(iVar2 + 0x78) * iVar5) >> 8; - iStack116 = (int)((uint)*(byte *)(iVar2 + 0x79) * iVar5) >> 8; - iStack112 = (int)((uint)*(byte *)(iVar2 + 0x7a) * iVar5) >> 8; - uStack108 = (uint)*(byte *)(iVar2 + 0x7b) + iVar4 * 0xf; - if (0xff < (int)uStack108) { - uStack108 = 0xff; - } - proc_7F040384(&iStack120,(longlong)iStack20,afStack16); - uStack32 = uStack108 | iStack120 << 0x18 | iStack116 << 0x10 | iStack112 << 8; - proc_7F04AC20((int)param_1,(int)&uStack88,param_3); - lVar3 = (longlong)(int)puStack76; - } - return lVar3; -} - - - -ushort * proc_7F04B478(int param_1) - -{ - ushort uVar1; - ushort *puVar2; - ushort *puVar3; - - puVar2 = **(ushort ***)(*(int *)(param_1 + 0x14) + 8); - if (puVar2 != NULL) { - uVar1 = *puVar2; - while( true ) { - uVar1 &= 0xff; - if (uVar1 == 8) { - proc_7F06E970(*(int *)(param_1 + 0x14),puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - } - else { - if (uVar1 == 0x12) { - process_12_handle_switch(*(int *)(param_1 + 0x14),puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - } - else { - if (uVar1 == 0x17) { - process_17_pointer_to_head(*(int *)(param_1 + 0x14),puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - } - else { - if (uVar1 == 0x18) { - return puVar2; - } - puVar3 = *(ushort **)(puVar2 + 10); - } - } - } - if ((puVar3 == NULL) && (puVar3 = puVar2, puVar2 != NULL)) { - puVar3 = *(ushort **)(puVar2 + 6); - while ((puVar3 == NULL && - (puVar2 = *(ushort **)(puVar2 + 4), puVar3 = puVar2, puVar2 != NULL))) { - puVar3 = *(ushort **)(puVar2 + 6); - } - } - if (puVar3 == NULL) break; - uVar1 = *puVar3; - puVar2 = puVar3; - } - } - return NULL; -} - - - -undefined8 proc_7F04B590(int param_1,int param_2) - -{ - int *piVar1; - - if ((*(item_related **)(param_1 + 4) == &prop_console_one_screen_related) && - (param_2 == **(int **)(param_1 + 8))) { - return 0; - } - if ((*(item_related **)(param_1 + 4) == &prop_console_four_screen_related) && - ((((piVar1 = *(int **)(param_1 + 8), param_2 == *piVar1 || (param_2 == piVar1[1])) || - (param_2 == piVar1[2])) || (param_2 == piVar1[3])))) { - return 0; - } - return 1; -} - - - -void proc_7F04B610(int param_1,int param_2) - -{ - bool bVar1; - short sVar2; - ushort uVar3; - int iVar4; - bool bVar5; - ushort *puVar8; - longlong lVar6; - u32 uVar9; - int iVar10; - undefined4 *puVar11; - longlong lVar7; - int iVar12; - short *psVar13; - uint uVar14; - undefined4 *puVar15; - undefined4 *puVar16; - uint uVar17; - int iVar18; - int iVar19; - uint *puVar20; - longlong lVar21; - longlong lVar22; - float fVar23; - float fVar24; - float fVar25; - int iStack88; - float fStack48; - u32 uStack32; - - iVar18 = *(int *)(param_1 + 0x14); - lVar21 = 99999; - iVar12 = -99999; - puVar8 = proc_7F04B478(param_1); - if (((puVar8 != NULL) && (iVar4 = *(int *)(puVar8 + 2), iVar4 != 0)) && - (lVar6 = proc_7F04B590(*(int *)(*(int *)(param_1 + 0x14) + 8),(int)puVar8), lVar6 != 0)) { - puVar20 = (uint *)(*(int *)(iVar18 + 0x10) + (uint)*(ushort *)(iVar4 + 0x1a) * 4); - uVar9 = get_random_value(); - if ((uVar9 & 1) == 0) { - uVar3 = *(ushort *) - ((int)object_explosion_details + (int)*(short *)(param_1 + 4) * 0xe + param_2 * 2 + 8 - ); - } - else { - uVar3 = *(ushort *) - ((int)object_explosion_details + (int)*(short *)(param_1 + 4) * 0xe + param_2 * 2 + 2 - ); - } - uStack32 = (u32)uVar3; - iStack88 = param_2 * 2; - iVar10 = get_debug_explosioninfo_flag(); - if ((iVar10 != 0) || (uVar3 == 0)) { - get_debug_explosioninfo_flag(); - uStack32 = get_random_value(); - iVar10 = get_debug_explosioninfo_flag(); - if (iVar10 != 0) { - uStack32 &= 0xffff; - } - } - proc_7F0A0D90(*(int *)(param_1 + 0x10)); - bVar1 = *(short *)(param_1 + 4) == 0x4c; - iVar10 = do_something_if_object_destroyed(param_1); - puVar11 = (undefined4 *) - proc_7F09BE4C((longlong)*(short *)(iVar4 + 0xc),0xb0b,*(int *)(iVar18 + 8),iVar10); - if (puVar11 == NULL) { - if (*(uint *)(iVar4 + 8) != *puVar20) { - proc_7F09C044(*puVar20); - *puVar20 = *(uint *)(iVar4 + 8); - *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) | 4; - } - fVar23 = flt_80052CB4; - fVar24 = *(float *)(param_1 + 0x2c) * flt_80052CB4; - fVar25 = *(float *)(param_1 + 0x30) * flt_80052CB4; - *(float *)(param_1 + 0x28) = *(float *)(param_1 + 0x28) * flt_80052CB4; - *(float *)(param_1 + 0x2c) = fVar24; - *(float *)(param_1 + 0x30) = fVar25; - if (!bVar1) { - fVar24 = *(float *)(*(int *)(param_1 + 0x14) + 0x14); - iVar18 = proc_7F03FFF8(*(int **)(*(int *)(param_1 + 0x14) + 8)); - proc_7F03E864(iVar18); - *(float *)(*(int *)(param_1 + 0x10) + 0xc) = - *(float *)(*(int *)(param_1 + 0x10) + 0xc) + fVar24 * fVar23 * flt_80052CB8; - proc_7F03E864(iVar18); - *(float *)(param_1 + 0x5c) = *(float *)(param_1 + 0x5c) + fVar24 * fVar23 * flt_80052CBC; - } - } - else { - uVar17 = *puVar20; - if (*(uint *)(iVar4 + 8) == uVar17) { - lVar6 = 0; - iVar18 = 0; - if (0 < *(short *)(iVar4 + 0xc)) { - iVar10 = *(int *)(iVar4 + 8); - puVar15 = puVar11; - while( true ) { - lVar6 = (longlong)((int)lVar6 + 1); - puVar16 = (undefined4 *)(iVar10 + iVar18); - iVar18 += 0x10; - *puVar15 = *puVar16; - puVar15[1] = puVar16[1]; - puVar15[2] = puVar16[2]; - puVar15[3] = puVar16[3]; - if ((longlong)*(short *)(iVar4 + 0xc) <= lVar6) break; - iVar10 = *(int *)(iVar4 + 8); - puVar15 = puVar15 + 4; - } - } - } - else { - lVar6 = 0; - iVar18 = 0; - if (0 < *(short *)(iVar4 + 0xc)) { - uVar17 = *puVar20; - puVar15 = puVar11; - while( true ) { - lVar6 = (longlong)((int)lVar6 + 1); - puVar16 = (undefined4 *)(uVar17 + iVar18); - iVar18 += 0x10; - *puVar15 = *puVar16; - puVar15[1] = puVar16[1]; - puVar15[2] = puVar16[2]; - puVar15[3] = puVar16[3]; - if ((longlong)*(short *)(iVar4 + 0xc) <= lVar6) break; - uVar17 = *puVar20; - puVar15 = puVar15 + 4; - } - uVar17 = *puVar20; - } - proc_7F09C044(uVar17); - } - *(undefined4 **)puVar20 = puVar11; - sVar2 = *(short *)(param_1 + 4); - iVar18 = 0; - if (((sVar2 == 0x26) || (sVar2 == 0x27)) || (sVar2 == 0x55)) { - bVar5 = false; - } - else { - bVar5 = true; - } - sVar2 = *(short *)(iVar4 + 0xc); - if (0 < sVar2) { - uVar17 = *puVar20; - lVar6 = -99999; - lVar22 = lVar21; - do { - lVar7 = (longlong)*(short *)(uVar17 + 2); - iVar18 += 0x10; - lVar21 = lVar7; - if (lVar22 <= lVar7) { - lVar21 = lVar22; - } - if (lVar7 <= lVar6) { - lVar7 = lVar6; - } - iVar12 = (int)lVar7; - uVar17 += 0x10; - lVar6 = lVar7; - lVar22 = lVar21; - } while (iVar18 < (int)sVar2 << 4); - } - lVar6 = 0; - iVar10 = (int)lVar21; - iVar18 = iVar10 + iVar12 >> 1; - if ((iStack88 == 6) && (0x28 < iVar18 - iVar10)) { - iVar18 = iVar10 + 0x28; - } - iVar12 -= iVar10; - if (iVar12 < 0x3d) { - fStack48 = 1.00000000; - } - else { - if (iStack88 < 6) { - fStack48 = flt_80052CC0; - } - else { - fStack48 = (float)(iVar12 + -0x3c) / (float)iVar12; - } - } - if (0 < sVar2) { - iVar19 = 0; - iVar12 = *(int *)(iVar4 + 8); - do { - psVar13 = (short *)(iVar12 + iVar19); - proc_7F09B788((longlong) - (int)((int)psVar13[2] + (int)*psVar13 + (int)psVar13[1] + uStack32)); - uVar17 = 0; - if (bVar5) { - if (0.00000000 <= *(float *)(param_1 + 0x2c)) { - if ((longlong)*(short *)(*puVar20 + iVar19 + 2) < (longlong)iVar18) { - if (bVar1) { - uVar17 = 0x5a; - } - else { - uVar17 = 0x14; - } - } - else { - if (bVar1) { - uVar17 = 0x14; - } - else { - uVar17 = 0x5a; - } - } - } - else { - if ((longlong)iVar18 < (longlong)*(short *)(*puVar20 + iVar19 + 2)) { - if (bVar1) { - uVar17 = 0x5a; - } - else { - uVar17 = 0x14; - } - } - else { - if (bVar1) { - uVar17 = 0x14; - } - else { - uVar17 = 0x5a; - } - } - } - } - uVar14 = proc_7F09B740(); - if (uVar14 % 100 < uVar17) { - *(undefined *)(*puVar20 + iVar19 + 0xc) = 0; - *(undefined *)(*puVar20 + iVar19 + 0xd) = 0; - *(undefined *)(*puVar20 + iVar19 + 0xe) = 0; - *(undefined *)(*puVar20 + iVar19 + 0xf) = 0xff; -LAB_7f04bbb0: - uVar17 = *puVar20; - } - else { - if (iStack88 == 2) { - *(undefined *)(*puVar20 + iVar19 + 0xf) = 0; - goto LAB_7f04bbb0; - } - uVar17 = *puVar20; - } - *(undefined2 *)(uVar17 + iVar19 + 2) = - (short)(int)((float)((int)*(short *)(uVar17 + iVar19 + 2) - iVar10) * fStack48 + - (float)iVar10); - uVar17 = proc_7F09B740(); - if (false) { - trap(0x1c00); - } - *(short *)(*puVar20 + iVar19) = - *(short *)(*puVar20 + iVar19) + (short)(uVar17 % 0x50) + -0x28; - uVar17 = proc_7F09B740(); - if (false) { - trap(0x1c00); - } - *(short *)(*puVar20 + iVar19 + 2) = - *(short *)(*puVar20 + iVar19 + 2) + (short)(uVar17 % 0x50) + -0x28; - uVar17 = proc_7F09B740(); - if (false) { - trap(0x1c00); - } - *(short *)(*puVar20 + iVar19 + 4) = - *(short *)(*puVar20 + iVar19 + 4) + (short)(uVar17 % 0x50) + -0x28; - if ((longlong)*(short *)(*puVar20 + iVar19 + 2) < lVar21) { - *(undefined2 *)(*puVar20 + iVar19 + 2) = (short)lVar21; - sVar2 = *(short *)(iVar4 + 0xc); - } - else { - sVar2 = *(short *)(iVar4 + 0xc); - } - lVar6 = (longlong)((int)lVar6 + 1); - iVar19 += 0x10; - if ((longlong)sVar2 <= lVar6) { - return; - } - iVar12 = *(int *)(iVar4 + 8); - } while( true ); - } - } - } - return; -} - - - -void proc_7F04BCDC(int param_1,float *param_2) - -{ - u32 uVar1; - float *pfVar2; - uint uVar3; - uint *puVar4; - float fVar5; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fStack24 = DAT_80032010; - fStack20 = (float)DAT_80032014; - fStack16 = (float)DAT_80032018; - puVar4 = NULL; - proc_7F03FDA8(*(int *)(param_1 + 0x10)); - if ((*(uint *)(param_1 + 100) & 0x40) == 0) { - if ((*(uint *)(param_1 + 100) & 0x80) != 0) { - puVar4 = *(uint **)(param_1 + 0x6c); - } - } - else { - puVar4 = *(uint **)(*(int *)(param_1 + 0x6c) + 0x44); - } - if (puVar4 != NULL) { - uVar1 = get_random_value(); - fVar5 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - *(float *)(puVar4 + 1) = fVar5 * 0.00000000 * flt_80052CC4 * 4.00000000 - flt_80052CC8; - uVar1 = get_random_value(); - fVar5 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fVar5 = fVar5 * 0.00000000 * flt_80052CCC; - *(float *)(puVar4 + 2) = fVar5 + fVar5 + flt_80052CD0; - uVar1 = get_random_value(); - fVar5 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - *(float *)(puVar4 + 3) = fVar5 * 0.00000000 * flt_80052CD4 * 4.00000000 - flt_80052CD8; - uVar1 = get_random_value(); - fVar5 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fStack24 = fVar5 * 0.00000000 * flt_80052CDC * 0.01562500 - flt_80052CE0; - uVar1 = get_random_value(); - fVar5 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fStack20 = fVar5 * 0.00000000 * flt_80052CE4 * 0.01562500 - flt_80052CE8; - uVar1 = get_random_value(); - fVar5 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fStack16 = fVar5 * 0.00000000 * flt_80052CEC * 0.01562500 - flt_80052CF0; - proc_7F058714(&fStack24,(float *)(puVar4 + 8)); - *puVar4 = *puVar4 | 1; - fStack12 = *param_2; - fStack8 = param_2[1]; - fStack4 = param_2[2]; - pfVar2 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar2,&fStack12); - fVar5 = flt_80052CF4; - *(float *)(puVar4 + 1) = (float)puVar4[1] + flt_80052CF4 * fStack12; - *(float *)(puVar4 + 3) = (float)puVar4[3] + fVar5 * fStack4; - uVar3 = get_curplayer_positiondata(); - puVar4[0x22] = uVar3; - puVar4[0x24] = 1; - } - return; -} - - - -void proc_7F04BFD0(int param_1,undefined4 param_2) - -{ - int iVar1; - int iVar2; - - if (*(int *)(param_1 + 0x1c) != 0) { - iVar1 = *(int *)(param_1 + 4); - proc_7F03FDA8(param_1); - if (((*(uint *)(iVar1 + 100) & 0x40) == 0) || - (iVar2 = *(int *)(*(int *)(iVar1 + 0x6c) + 0x44), iVar2 == 0)) { - if ((*(uint *)(iVar1 + 100) & 0x80) != 0) { - *(undefined4 *)(*(int *)(iVar1 + 0x6c) + 0xb8) = param_2; - } - } - else { - *(undefined4 *)(iVar2 + 0xb8) = param_2; - } - } - return; -} - - - -void proc_7F04C044(int param_1) - -{ - char *pcVar1; - int iVar2; - int iVar3; - - pcVar1 = *(char **)(param_1 + 0x1c); - if (pcVar1 != NULL) { - iVar2 = *(int *)(param_1 + 4); - iVar3 = *(int *)(iVar2 + 0x14); - proc_7F03A5D0(param_1); - *(undefined4 *)(iVar3 + 0x1c) = 0; - *(uint *)(iVar2 + 100) = *(uint *)(iVar2 + 100) & 0xfff7ffff; - if (((*pcVar1 == '\x03') || (*pcVar1 == '\x06')) && (iVar2 = *(int *)(pcVar1 + 4), iVar2 != 0)) - { - if (param_1 == *(int *)(iVar2 + 0x1d8)) { - *(undefined4 *)(iVar2 + 0x1d8) = 0; - } - else { - if (param_1 == *(int *)(iVar2 + 0x160)) { - proc_7F02D118(iVar2,0,0); - *(undefined4 *)(iVar2 + 0x160) = 0; - } - else { - if (param_1 == *(int *)(iVar2 + 0x164)) { - proc_7F02D118(iVar2,1,0); - *(undefined4 *)(iVar2 + 0x164) = 0; - } - } - } - } - } - return; -} - - - -undefined8 proc_7F04C130(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - int iVar1; - uint *puVar2; - char *pcVar3; - undefined8 uVar4; - u32 uVar6; - float *pfVar7; - float *pfVar8; - int iVar9; - longlong lVar5; - undefined8 extraout_a0; - uint extraout_a1_lo; - uint extraout_a1_lo_00; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - uint uVar10; - char *pcVar11; - float __x; - float __x_00; - float fVar12; - f32 extraout_f12; - f32 extraout_f14; - float fVar13; - float fStack152; - float fStack148; - float fStack144; - float fStack140; - float fStack136; - float fStack132; - float fStack128; - float fStack116; - float fStack112; - float fStack108; - float fStack104; - u32 auStack88 [2]; - float afStack80 [12]; - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - int iStack16; - char *pcStack4; - - pcStack4 = *(char **)(param_1 + 0x1c); - iVar1 = *(int *)(param_1 + 4); - if ((*(uint *)(iVar1 + 100) & 0x40) != 0) { - uVar10 = (*(uint **)(iVar1 + 0x6c))[0x11]; - if (uVar10 != 0) { - proc_7F03FE88(*(uint **)(iVar1 + 0x6c)); - *(uint *)(iVar1 + 0x6c) = uVar10; - uVar10 = *(uint *)(iVar1 + 100) & 0xffffffbf; - *(uint *)(iVar1 + 100) = uVar10; - *(uint *)(iVar1 + 100) = uVar10 | 0x80; - param_2 = extraout_a1_lo; - param_3 = extraout_a2_lo; - param_4 = extraout_a3_lo; - } - } - pcVar11 = pcStack4; - uVar4 = 0; - if ((pcStack4 != NULL) && ((*(uint *)(iVar1 + 100) & 0x80) != 0)) { - iStack16 = *(int *)(iVar1 + 0x14); - puVar2 = *(uint **)(iVar1 + 0x6c); - uVar10 = puVar2[0x2e]; - *puVar2 = *puVar2 | 1; - *(char **)(puVar2 + 0x22) = pcStack4; - if ((uVar10 == 2) && (*pcStack4 == '\x03')) { - fStack112 = DAT_8003201c; - fStack108 = (float)DAT_80032020; - fStack104 = (float)DAT_80032024; - getsubroty(*(int *)(*(int *)(pcStack4 + 4) + 0x1c),param_2,param_3,param_4); - fStack116 = __x; - __x_00 = sinf(__x); - *(float *)(puVar2 + 1) = __x_00 * flt_80052CF8; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - *(float *)(puVar2 + 2) = -(__x_00 * 0.00000000) * flt_80052CFC * 0.50000000; - __x_00 = cosf(fStack116); - *(float *)(puVar2 + 3) = __x_00 * flt_80052D00; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack112 = __x_00 * 0.00000000 * flt_80052D04 * 0.00781250 - flt_80052D08; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack108 = __x_00 * 0.00000000 * flt_80052D0C * 0.00781250 - flt_80052D10; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack104 = __x_00 * 0.00000000 * flt_80052D14 * 0.00781250 - flt_80052D18; - proc_7F058714(&fStack112,(float *)(puVar2 + 8)); - } - else { - if ((uVar10 == 3) && (*pcStack4 == '\x03')) { - fStack136 = DAT_80032028; - fStack132 = (float)DAT_8003202c; - fStack128 = (float)DAT_80032030; - getsubroty(*(int *)(*(int *)(pcStack4 + 4) + 0x1c),param_2,param_3,param_4); - fStack140 = __x; - __x_00 = sinf(__x); - *(float *)(puVar2 + 1) = __x_00 * flt_80052D1C; - *(float *)(puVar2 + 2) = flt_80052D20; - __x_00 = cosf(fStack140); - *(float *)(puVar2 + 3) = __x_00 * flt_80052D24; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack136 = __x_00 * 0.00000000 * flt_80052D28 * 0.00781250 - flt_80052D2C; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack132 = __x_00 * 0.00000000 * flt_80052D30 * 0.00781250 - flt_80052D34; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack128 = __x_00 * 0.00000000 * flt_80052D38 * 0.00781250 - flt_80052D3C; - proc_7F058714(&fStack136,(float *)(puVar2 + 8)); - *puVar2 = *puVar2 | 0x40; - } - else { - if (uVar10 == 4) { - fStack152 = DAT_80032034; - fStack148 = (float)DAT_80032038; - fStack144 = (float)DAT_8003203c; - iVar9 = get_curplayer_positiondata(); - __x_00 = convert_angle_using_inverse - ((f32)(*(float *)(pcStack4 + 8) - *(float *)(iVar9 + 8)), - (f32)(*(float *)(pcStack4 + 0x10) - *(float *)(iVar9 + 0x10))); - uVar6 = get_random_value(); - fVar12 = sinf(__x_00); - fVar13 = (float)uVar6; - if ((int)uVar6 < 0) { - fVar13 = fVar13 + 4294967296.00000000; - } - fVar13 = fVar13 * 0.00000000 * flt_80052D40; - *(float *)(puVar2 + 1) = fVar12 * (fVar13 + fVar13 + flt_80052D44); - uVar6 = get_random_value(); - fVar12 = (float)uVar6; - if ((int)uVar6 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - fVar12 = fVar12 * 0.00000000 * flt_80052D48; - *(float *)(puVar2 + 2) = fVar12 + fVar12; - uVar6 = get_random_value(); - __x_00 = cosf(__x_00); - fVar12 = (float)uVar6; - if ((int)uVar6 < 0) { - fVar12 = fVar12 + 4294967296.00000000; - } - fVar12 = fVar12 * 0.00000000 * flt_80052D4C; - *(float *)(puVar2 + 3) = __x_00 * (fVar12 + fVar12 + flt_80052D50); - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack152 = __x_00 * 0.00000000 * flt_80052D54 * 0.03125000 - flt_80052D58; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack148 = __x_00 * 0.00000000 * flt_80052D5C * 0.03125000 - flt_80052D60; - uVar6 = get_random_value(); - __x_00 = (float)uVar6; - if ((int)uVar6 < 0) { - __x_00 = __x_00 + 4294967296.00000000; - } - fStack144 = __x_00 * 0.00000000 * flt_80052D64 * 0.03125000 - flt_80052D68; - proc_7F058714(&fStack152,(float *)(puVar2 + 8)); - } - else { - proc_7F057C14((float *)(puVar2 + 1),(float *)(puVar2 + 8)); - } - } - } - if (*(int *)(pcStack4 + 0x1c) == 0) { - auStack88[0] = *(u32 *)(pcVar11 + 0x14); - } - else { - pcVar3 = *(char **)(pcVar11 + 0x1c); - do { - pcVar11 = pcVar3; - pcVar3 = *(char **)(pcVar11 + 0x1c); - } while (*(char **)(pcVar11 + 0x1c) != NULL); - auStack88[0] = *(u32 *)(pcVar11 + 0x14); - } - if ((*(byte *)(param_1 + 1) & 2) == 0) { - *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(pcVar11 + 0x14); - proc_7F057FD0(afStack80); - matrix_multiply_A1_by_F12(*(float *)(iStack16 + 0x14),extraout_a0,afStack80); - proc_7F058998((undefined4 *)(pcVar11 + 8),(int)afStack80); - } - else { - proc_7F041044(iVar1); - pfVar7 = (float *)getsubmatrix(iStack16,extraout_a1_lo_00,extraout_a2_lo_00,extraout_a3_lo_00) - ; - pfVar8 = (float *)proc_7F078444(); - proc_7F05818C(pfVar8,pfVar7,(int)afStack80); - proc_7F03D058(pcVar11,0); - iVar9 = proc_7F0B0E24(auStack88,extraout_f12,extraout_f14,*(f32 *)(pcVar11 + 8)); - if ((iVar9 == 0) || (lVar5 = proc_7F0B18B8(), -1 < lVar5)) { - *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(pcVar11 + 0x14); - uStack32 = *(undefined4 *)(pcVar11 + 8); - uStack24 = *(undefined4 *)(pcVar11 + 0x10); - } - else { - *(u32 *)(param_1 + 0x14) = auStack88[0]; - } - proc_7F03D058(pcVar11,1); - *(float *)(param_1 + 0x18) = -pfVar7[0xe]; - } - proc_7F04C044(param_1); - set_current_objposdata_plus_0x28((object_standard *)param_1); - set_stateflag_0x04_for_posdata(param_1); - *(undefined4 *)(param_1 + 8) = uStack32; - *(undefined4 *)(iVar1 + 0x58) = uStack32; - *(undefined4 *)(param_1 + 0xc) = uStack28; - *(undefined4 *)(iVar1 + 0x5c) = uStack28; - *(undefined4 *)(param_1 + 0x10) = uStack24; - *(undefined4 *)(iVar1 + 0x60) = uStack24; - uStack32 = 0; - uStack28 = 0; - uStack24 = 0; - proc_7F058020(afStack80,(undefined4 *)(iVar1 + 0x18)); - proc_7F0402B4(*(int *)(iVar1 + 0x10),(byte *)(iVar1 + 0x7c)); - *(undefined *)(iVar1 + 0x78) = *(undefined *)(iVar1 + 0x7c); - *(undefined *)(iVar1 + 0x79) = *(undefined *)(iVar1 + 0x7d); - *(undefined *)(iVar1 + 0x7a) = *(undefined *)(iVar1 + 0x7e); - *(undefined *)(iVar1 + 0x7b) = *(undefined *)(iVar1 + 0x7f); - proc_7F056CA0(iVar1); - uVar4 = 1; - } - return uVar4; -} - - - -void proc_7F04CA44(int param_1,undefined8 param_2) - -{ - uint uVar1; - u32 uVar2; - uint uVar3; - uint *puVar4; - float fVar5; - float fStack12; - float fStack8; - float fStack4; - - uVar1 = *(uint *)(param_1 + 100); - uVar3 = uVar1 & 0xfff9ffff; - *(uint *)(param_1 + 100) = uVar3; - *(uint *)(param_1 + 100) = uVar3 | (int)param_2 << 0x11; - if ((((*(uint *)(param_1 + 0xc) & 0x100) == 0) && ((*(uint *)(param_1 + 8) & 1) != 0)) && - ((uVar1 & 0xc0) == 0)) { - fStack12 = DAT_80032040; - fStack8 = DAT_80032044; - puVar4 = NULL; - fStack4 = DAT_80032048; - proc_7F03FDA8(*(int *)(param_1 + 0x10)); - if ((*(uint *)(param_1 + 100) & 0x80) != 0) { - puVar4 = *(uint **)(param_1 + 0x6c); - } - if (puVar4 != NULL) { - uVar2 = get_random_value(); - fVar5 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - *(float *)(puVar4 + 1) = fVar5 * 0.00000000 * flt_80052D6C - flt_80052D70; - uVar2 = get_random_value(); - fVar5 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fVar5 = fVar5 * 0.00000000 * flt_80052D74; - *(float *)(puVar4 + 2) = fVar5 + fVar5 + flt_80052D74; - uVar2 = get_random_value(); - fVar5 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - *(float *)(puVar4 + 3) = fVar5 * 0.00000000 * flt_80052D78 - flt_80052D7C; - if ((*(uint *)(param_1 + 0xc) & 0x200) == 0) { - uVar2 = get_random_value(); - fVar5 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fStack12 = (fVar5 * 0.00000000 * flt_80052D80) / 320.00000000 - flt_80052D84; - uVar2 = get_random_value(); - fVar5 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fStack8 = (fVar5 * 0.00000000 * flt_80052D88) / 320.00000000 - flt_80052D8C; - uVar2 = get_random_value(); - fVar5 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - fStack4 = (fVar5 * 0.00000000 * flt_80052D90) / 320.00000000 - flt_80052D94; - } - proc_7F058714(&fStack12,(float *)(puVar4 + 8)); - *puVar4 = *puVar4 | 1; - *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) & 0xfffffeff; - *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) & 0xffff7fff; - } - } - return; -} - - - -void proc_7F04CD04(char *param_1,undefined8 param_2) - -{ - char cVar1; - char cVar2; - int iVar3; - int iVar4; - longlong lVar5; - char *pcVar6; - uint uStack20; - float *apfStack16 [4]; - - iVar3 = *(int *)(param_1 + 4); - cVar1 = *(char *)(*(int *)(param_1 + 0x14) + 3); - proc_7F03CCB0(param_1,(int **)apfStack16,&uStack20); - if (((int)uStack20 < 1) || (pcVar6 = (char *)get_ptr_obj_pos_list_current_entry(), pcVar6 == NULL) - ) { - return; - } - cVar2 = *pcVar6; - do { - if (cVar2 == '\x01') { - iVar4 = *(int *)(pcVar6 + 0x14); -LAB_7f04cd80: - if (cVar1 == *(char *)(iVar4 + 3)) { - iVar4 = *(int *)(pcVar6 + 4); - if (*(float *)(iVar3 + 0x5c) < *(float *)(iVar4 + 0x5c)) { - if ((*(uint *)(iVar4 + 100) & 0x8000) == 0) { - pcVar6 = *(char **)(pcVar6 + 0x24); - } - else { - lVar5 = proc_7F03CCD8((float *)(iVar4 + 0x58),apfStack16[0],uStack20); - if (lVar5 != 0) { - proc_7F04CA44(iVar4,param_2); - } - pcVar6 = *(char **)(pcVar6 + 0x24); - } - } - else { - pcVar6 = *(char **)(pcVar6 + 0x24); - } - } - else { - pcVar6 = *(char **)(pcVar6 + 0x24); - } - } - else { - if (cVar2 == '\x04') { - iVar4 = *(int *)(pcVar6 + 0x14); - goto LAB_7f04cd80; - } - pcVar6 = *(char **)(pcVar6 + 0x24); - } - if (pcVar6 == NULL) { - return; - } - cVar2 = *pcVar6; - } while( true ); -} - - - -void object_explosion_related(int param_1,float *param_2,int param_3) - -{ - byte bVar1; - short sVar2; - char *pcVar3; - int iVar5; - longlong lVar4; - u32 uVar6; - uint uVar7; - char *pcVar8; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float extraout_f14_00; - undefined uVar9; - int iStack16; - short sStack10; - char *pcStack4; - - if (*(float *)(param_1 + 0x70) <= *(float *)(param_1 + 0x74)) { - iVar5 = do_something_if_object_destroyed(param_1); - if (iVar5 == 0) { - return; - } - sVar2 = *(short *)(param_1 + 4); - } - else { - sVar2 = *(short *)(param_1 + 4); - } - pcStack4 = *(char **)(param_1 + 0x10); - sStack10 = *(short *)((int)object_explosion_details + (int)sVar2 * 0xe); - if (*(int *)(pcStack4 + 0x1c) == 0) { - iStack16 = *(int *)(pcStack4 + 0x14); - pcVar8 = pcStack4; - } - else { - pcVar3 = *(char **)(pcStack4 + 0x1c); - do { - pcVar8 = pcVar3; - pcVar3 = *(char **)(pcVar8 + 0x1c); - } while (*(char **)(pcVar8 + 0x1c) != NULL); - iStack16 = *(int *)(pcVar8 + 0x14); - } - iVar5 = do_something_if_object_destroyed(param_1); - uVar9 = (undefined)param_3; - if (iVar5 != 0) { - uVar7 = proc_7F03FF60(param_1); - if (((uVar7 & 3) == 0) && (proc_7F04B610(param_1,((int)uVar7 >> 2) + 1), iStack16 != 0)) { - lVar4 = (longlong)(int)param_2; - if ((pcVar8[1] & 8U) == 0) { - proc_7F0B0BE4(&iStack16,extraout_f12_00,extraout_f14_00,*(float *)(pcVar8 + 8), - *(float *)(pcVar8 + 0x10)); - if (lVar4 != 0) { - proc_7F09C250((int)pcStack4,param_2,iStack16,0x10, - (uint)((*(uint *)(param_1 + 8) & 0xe) == 0),uVar9,pcVar8 + 0x2c,0); - goto LAB_7f04d0dc; - } - iVar5 = *(int *)(pcVar8 + 0x14); - } - else { - iVar5 = *(int *)(pcVar8 + 0x14); - } - proc_7F09C250((int)pcStack4,param_2,iVar5,0x10,0,uVar9,pcVar8 + 0x2c,1); - } -LAB_7f04d0dc: - iVar5 = do_something_if_object_destroyed(param_1); - if ((0 < iVar5) && (bVar1 = *(byte *)(param_1 + 2), (bVar1 & 4) != 0)) { - if ((*(uint *)(param_1 + 100) & 0x1000) == 0) { - *(byte *)(param_1 + 2) = bVar1 & 0xef; - } - else { - *(byte *)(param_1 + 2) = bVar1 | 0x10; - } - *(undefined2 *)(pcStack4 + 2) = 0x4b0; - } - if ((int)uVar7 < 0xc) { - return; - } - *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) | 0x1000; - *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) & 0xfffffeff; - return; - } - *(byte *)(param_1 + 2) = *(byte *)(param_1 + 2) | 0x80; - *(undefined4 *)(param_1 + 0x70) = 0; - if (iStack16 == 0) { - uVar7 = *(uint *)(param_1 + 0xc); - } - else { - lVar4 = (longlong)(int)param_2; - if ((pcVar8[1] & 8U) == 0) { - proc_7F0B0BE4(&iStack16,extraout_f12,extraout_f14,*(float *)(pcVar8 + 8), - *(float *)(pcVar8 + 0x10)); - if (lVar4 != 0) { - proc_7F09C250((int)pcStack4,param_2,iStack16,(int)sStack10, - (uint)((*(uint *)(param_1 + 8) & 0xe) == 0),uVar9,pcVar8 + 0x2c,0); - uVar7 = *(uint *)(param_1 + 0xc); - goto LAB_7f04cf7c; - } - iVar5 = *(int *)(pcVar8 + 0x14); - } - else { - iVar5 = *(int *)(pcVar8 + 0x14); - } - proc_7F09C250((int)pcStack4,param_2,iVar5,(int)sStack10,0,uVar9,pcVar8 + 0x2c,1); - uVar7 = *(uint *)(param_1 + 0xc); - } -LAB_7f04cf7c: - if ((uVar7 & 0x2000) == 0) { - proc_7F04B610(param_1,1); - if (pcVar8 == pcStack4) { - proc_7F04CD04(pcStack4,(longlong)param_3); - uVar7 = *(uint *)(param_1 + 100); - if ((uVar7 & 0x8000) != 0) { - uVar6 = get_random_value(); - if (uVar6 % 3 != 0) { - return; - } - uVar7 = *(uint *)(param_1 + 100); - } - *(uint *)(param_1 + 100) = uVar7 | 0x10000; - proc_7F04CA44(param_1,(longlong)param_3); - } - } - else { - *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) | 4; - } - return; -} - - - -undefined4 -proc_7F04D16C(float *param_1,float *param_2,float *param_3,uint *param_4,uint *param_5,int param_6, - float *param_7) - -{ - char cVar1; - short sVar2; - longlong lVar3; - uint *puVar4; - uint *puVar5; - short *psVar6; - int *piVar7; - undefined2 uVar8; - uint *puVar9; - int iVar10; - uint uVar11; - float fVar12; - float fVar13; - float fStack224; - undefined4 uStack220; - undefined4 uStack216; - int iStack200; - int iStack196; - int iStack192; - int iStack188; - int iStack184; - int iStack180; - uint uStack172; - uint uStack168; - uint uStack164; - uint auStack160 [5]; - float fStack140; - undefined4 uStack136; - undefined4 uStack132; - int iStack116; - int iStack112; - int iStack108; - int iStack104; - int iStack100; - int iStack96; - int iStack88; - int iStack84; - int iStack80; - int aiStack76 [3]; - undefined4 uStack64; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - int iStack4; - - uStack64 = 0; - fVar13 = 4294967296.00000000; - puVar9 = param_4; - do { - while( true ) { - while( true ) { - while (puVar5 = param_5, cVar1 = *(char *)puVar9, cVar1 == -0x48) { - if (param_5 == NULL) { - return uStack64; - } - param_5 = NULL; - param_4 = puVar5; - puVar9 = puVar5; - } - if (cVar1 != '\x04') break; - iStack4 = param_6 + (puVar9[1] & 0xffffff) + - ((uint)*(byte *)((int)puVar9 + 1) & 0xf) * -0x10; - puVar9 = puVar9 + 2; - } - if (cVar1 == -0x41) break; - if (cVar1 == -0x4f) { - iVar10 = 0; - do { - iStack188 = dword_80032070; - iStack184 = DAT_80032074; - iStack180 = DAT_80032078; - iStack200 = DAT_8003207c; - iStack196 = DAT_80032080; - iStack192 = DAT_80032084; - if (iVar10 == 0) { - uStack172 = puVar9[1] & 0xf; - uStack168 = (uint)(*(byte *)((int)puVar9 + 7) >> 4); - uStack164 = *puVar9 & 0xf; - } - else { - if (iVar10 == 1) { - uStack172 = (uint)*(byte *)((int)puVar9 + 6) & 0xf; - uStack168 = (uint)(*(ushort *)((int)puVar9 + 6) >> 0xc); - uStack164 = (uint)(*(byte *)((int)puVar9 + 3) >> 4); - } - else { - if (iVar10 == 2) { - uStack172 = (uint)*(ushort *)(puVar9 + 1) & 0xf; - uStack168 = (uint)(*(byte *)((int)puVar9 + 5) >> 4); - uStack164 = (uint)*(byte *)((int)puVar9 + 2) & 0xf; - } - else { - uStack172 = (uint)*(byte *)(puVar9 + 1) & 0xf; - uStack168 = puVar9[1] >> 0x1c; - uStack164 = (uint)(*(ushort *)((int)puVar9 + 2) >> 0xc); - } - } - } - puVar5 = &uStack172; - uVar11 = uStack172; - while( true ) { - puVar5 = puVar5 + 1; - psVar6 = (short *)(iStack4 + uVar11 * 0x10); - lVar3 = (longlong)*psVar6; - if (lVar3 < (longlong)iStack188) { - iStack188 = (int)*psVar6; - lVar3 = (longlong)*psVar6; - } - if ((longlong)iStack200 < lVar3) { - iStack200 = (int)lVar3; - sVar2 = psVar6[1]; - } - else { - sVar2 = psVar6[1]; - } - lVar3 = (longlong)sVar2; - if (lVar3 < (longlong)iStack184) { - iStack184 = (int)sVar2; - lVar3 = (longlong)psVar6[1]; - } - if ((longlong)iStack196 < lVar3) { - iStack196 = (int)lVar3; - sVar2 = psVar6[2]; - } - else { - sVar2 = psVar6[2]; - } - lVar3 = (longlong)sVar2; - if (lVar3 < (longlong)iStack180) { - iStack180 = (int)sVar2; - lVar3 = (longlong)psVar6[2]; - } - if ((longlong)iStack192 < lVar3) { - iStack192 = (int)lVar3; - } - if (puVar5 == auStack160) break; - uVar11 = *puVar5; - } - lVar3 = proc_7F0B6CEC(param_1,param_3,&iStack188,&iStack200); - if (lVar3 != 0) { - fStack224 = DAT_80032088; - uStack220 = DAT_8003208c; - uStack216 = DAT_80032090; - lVar3 = proc_7F092890((short *)(iStack4 + uStack172 * 0x10), - (short *)(iStack4 + uStack168 * 0x10), - (short *)(iStack4 + uStack164 * 0x10),&fStack224,param_1,param_2, - param_3,&fStack52); - if (lVar3 != 0) { - puVar5 = puVar9; - if ((*(char *)puVar9 != -3) && (puVar5 = puVar9, param_4 < puVar9)) { - cVar1 = *(char *)(puVar9 + -2); - puVar4 = puVar9; - while( true ) { - puVar5 = puVar4 + -2; - if ((cVar1 == -3) || (puVar5 <= param_4)) break; - cVar1 = *(char *)(puVar4 + -4); - puVar4 = puVar5; - } - } - if (puVar5 == param_4) { - uVar8 = 0xffff; - } - else { - uVar8 = *(undefined2 *)(puVar5[1] - 8 | 0x80000000); - } - fVar12 = (float)((int)fStack52 - (int)*param_1) * - (float)((int)fStack52 - (int)*param_1) + - (float)((int)fStack48 - (int)param_1[1]) * - (float)((int)fStack48 - (int)param_1[1]) + - (float)((int)fStack44 - (int)param_1[2]) * - (float)((int)fStack44 - (int)param_1[2]); - if (fVar12 < fVar13) { - *param_7 = fStack52; - param_7[1] = fStack48; - param_7[2] = fStack44; - param_7[3] = fStack40; - param_7[4] = fStack36; - param_7[5] = fStack32; - *(uint *)(param_7 + 6) = uStack172 * 0x10 + iStack4; - *(uint *)(param_7 + 7) = uStack168 * 0x10 + iStack4; - *(undefined2 *)((int)param_7 + 0x2a) = uVar8; - *(uint **)(param_7 + 9) = puVar9; - *(uint *)(param_7 + 8) = uStack164 * 0x10 + iStack4; - *(short *)(param_7 + 10) = (short)iVar10 + 1; - uStack64 = 1; - fVar13 = fVar12; - } - } - } - iVar10 += 1; - } while (iVar10 != 4); - } -LAB_7f04d970: - puVar9 = puVar9 + 2; - } - iStack104 = dword_8003204C; - iStack100 = DAT_80032050; - iStack96 = DAT_80032054; - iStack116 = DAT_80032058; - iStack112 = DAT_8003205c; - iStack108 = DAT_80032060; - piVar7 = &iStack88; - iStack88 = (int)(uint)*(byte *)((int)puVar9 + 5) / 10; - if (false) { - trap(0x1c00); - } - if ((false) && ((ulonglong)*(byte *)((int)puVar9 + 5) == 0xffffffff80000000)) { - trap(0x1800); - } - iStack84 = (int)(uint)*(byte *)((int)puVar9 + 6) / 10; - if (false) { - trap(0x1c00); - } - if ((false) && ((ulonglong)*(byte *)((int)puVar9 + 6) == 0xffffffff80000000)) { - trap(0x1800); - } - iStack80 = (int)(uint)*(byte *)((int)puVar9 + 7) / 10; - if (false) { - trap(0x1c00); - } - iVar10 = iStack88; - if ((false) && (iVar10 = iStack88, (ulonglong)*(byte *)((int)puVar9 + 7) == 0xffffffff80000000)) - { - trap(0x1800); - iVar10 = iStack88; - } - while( true ) { - piVar7 = piVar7 + 1; - psVar6 = (short *)(iStack4 + iVar10 * 0x10); - lVar3 = (longlong)*psVar6; - if (lVar3 < (longlong)iStack104) { - iStack104 = (int)*psVar6; - lVar3 = (longlong)*psVar6; - } - if ((longlong)iStack116 < lVar3) { - iStack116 = (int)lVar3; - sVar2 = psVar6[1]; - } - else { - sVar2 = psVar6[1]; - } - lVar3 = (longlong)sVar2; - if (lVar3 < (longlong)iStack100) { - iStack100 = (int)sVar2; - lVar3 = (longlong)psVar6[1]; - } - if ((longlong)iStack112 < lVar3) { - iStack112 = (int)lVar3; - sVar2 = psVar6[2]; - } - else { - sVar2 = psVar6[2]; - } - lVar3 = (longlong)sVar2; - if (lVar3 < (longlong)iStack96) { - iStack96 = (int)sVar2; - lVar3 = (longlong)psVar6[2]; - } - if ((longlong)iStack108 < lVar3) { - iStack108 = (int)lVar3; - } - if (piVar7 == aiStack76) break; - iVar10 = *piVar7; - } - lVar3 = proc_7F0B6CEC(param_1,param_3,&iStack104,&iStack116); - if (lVar3 == 0) goto LAB_7f04d970; - fStack140 = DAT_80032064; - uStack136 = DAT_80032068; - uStack132 = DAT_8003206c; - lVar3 = proc_7F092890((short *)(iStack4 + iStack88 * 0x10),(short *)(iStack4 + iStack84 * 0x10), - (short *)(iStack4 + iStack80 * 0x10),&fStack140,param_1,param_2,param_3, - &fStack52); - if (lVar3 == 0) goto LAB_7f04d970; - puVar5 = puVar9; - if ((*(char *)puVar9 != -3) && (puVar5 = puVar9, param_4 < puVar9)) { - cVar1 = *(char *)(puVar9 + -2); - puVar4 = puVar9; - while( true ) { - puVar5 = puVar4 + -2; - if ((cVar1 == -3) || (puVar5 <= param_4)) break; - cVar1 = *(char *)(puVar4 + -4); - puVar4 = puVar5; - } - } - if (puVar5 == param_4) { - uVar8 = 0xffff; - } - else { - uVar8 = *(undefined2 *)(puVar5[1] - 8 | 0x80000000); - } - fVar12 = (float)((int)fStack52 - (int)*param_1) * (float)((int)fStack52 - (int)*param_1) + - (float)((int)fStack48 - (int)param_1[1]) * (float)((int)fStack48 - (int)param_1[1]) + - (float)((int)fStack44 - (int)param_1[2]) * (float)((int)fStack44 - (int)param_1[2]); - if (fVar13 <= fVar12) goto LAB_7f04d970; - *param_7 = fStack52; - param_7[1] = fStack48; - param_7[2] = fStack44; - param_7[3] = fStack40; - param_7[4] = fStack36; - param_7[5] = fStack32; - *(int *)(param_7 + 6) = iStack88 * 0x10 + iStack4; - *(int *)(param_7 + 7) = iStack84 * 0x10 + iStack4; - *(undefined2 *)((int)param_7 + 0x2a) = uVar8; - *(uint **)(param_7 + 9) = puVar9; - *(int *)(param_7 + 8) = iStack80 * 0x10 + iStack4; - *(undefined2 *)(param_7 + 10) = 0; - uStack64 = 1; - fVar13 = fVar12; - puVar9 = puVar9 + 2; - } while( true ); -} - - - -int proc_7F04D9B0(int param_1,ushort *param_2,float *param_3,float *param_4,float *param_5, - int *param_6,ushort **param_7) - -{ - ushort uVar1; - uint **ppuVar2; - float fVar3; - uint *puVar4; - short sVar6; - int iVar5; - ushort *partdesc; - ushort *puVar7; - float *pfVar8; - uint *puVar9; - uint *puVar10; - uint *puVar11; - uint uVar12; - float afStack148 [26]; - int iStack44; - float *pfStack40; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fVar3 = flt_80052D98; - pfStack40 = NULL; - iStack44 = 0; - uVar12 = 0; - if (param_2 == NULL) { - return 0; - } - uVar1 = *param_2; - partdesc = param_2; - do { - puVar10 = NULL; - puVar11 = NULL; - if (true) { - switch((uint)uVar1 & 0xff) { - case 4: - puVar9 = *(uint **)(partdesc + 2); - if (*puVar9 != 0) { - uVar12 = puVar9[2]; - puVar10 = (uint *)(uVar12 + (*puVar9 & 0xffffff)); - if (puVar9[1] != 0) { - puVar11 = (uint *)(uVar12 + (puVar9[1] & 0xffffff)); - } - } - break; - case 8: - proc_7F06E970(param_1,partdesc); - break; - case 0x12: - process_12_handle_switch(param_1,partdesc); - break; - case 0x17: - process_17_pointer_to_head(param_1,partdesc); - break; - case 0x18: - ppuVar2 = *(uint ***)(partdesc + 2); - puVar4 = (uint *)extract_id_from_object_structure_microcode(param_1,partdesc); - puVar9 = (uint *)puVar4[1]; - if (puVar9 != NULL) { - if (*ppuVar2 == puVar9) { - puVar9 = (uint *)((int)ppuVar2[7] + ((uint)*ppuVar2 & 0xffffff)); - } - if (ppuVar2[1] != NULL) { - puVar11 = (uint *)((int)ppuVar2[7] + ((uint)ppuVar2[1] & 0xffffff)); - } - uVar12 = *puVar4; - puVar10 = puVar9; - } - } - } - if (puVar10 != NULL) { - pfVar8 = NULL; - sVar6 = proc_7F06C570(partdesc,0); - if (-1 < sVar6) { - pfVar8 = (float *)(*(int *)(param_1 + 0xc) + (int)sVar6 * 0x40); - } - if ((pfVar8 != NULL) && (pfVar8 != pfStack40)) { - pfStack40 = pfVar8; - proc_7F059FB8(pfVar8,afStack148); - fStack12 = *param_3; - fStack8 = param_3[1]; - fStack4 = param_3[2]; - proc_7F058474(afStack148,&fStack12); - fStack36 = *param_4; - fStack32 = param_4[1]; - fStack28 = param_4[2]; - proc_7F0583D8(afStack148,&fStack36); - fStack24 = fStack36 * fVar3 + fStack12; - fStack20 = fStack32 * fVar3 + fStack8; - fStack16 = fStack28 * fVar3 + fStack4; - } - iVar5 = proc_7F04D16C(&fStack12,&fStack24,&fStack36,puVar10,puVar11,uVar12,param_5); - if (iVar5 != 0) { - *param_6 = (int)sVar6; - *param_7 = partdesc; - iStack44 = 1; - } - } - puVar7 = *(ushort **)(partdesc + 10); - if (puVar7 == NULL) { - while (puVar7 = partdesc, partdesc != NULL) { - if (partdesc == param_2) { - puVar7 = NULL; - break; - } - puVar7 = *(ushort **)(partdesc + 6); - if (puVar7 != NULL) break; - partdesc = *(ushort **)(partdesc + 4); - } - } - if (puVar7 == NULL) { - return iStack44; - } - if (iStack44 != 0) { - return iStack44; - } - uVar1 = *puVar7; - partdesc = puVar7; - } while( true ); -} - - - -void proc_7F04DCB4(int param_1) - -{ - int iVar1; - int iVar2; - float extraout_f12; - float extraout_f14; - - iVar1 = *(int *)(param_1 + 0x10); - iVar2 = proc_7F040078(param_1); - proc_7F0A0CCC(iVar1,'\0'); - proc_7F0A0CCC(iVar1,'\x01'); - proc_7F0A1DA0((float *)(param_1 + 0x58),(float *)(param_1 + 0x18),(float *)(param_1 + 0x28), - (float *)(param_1 + 0x38),extraout_f12,extraout_f14,*(float *)(iVar2 + 4), - *(float *)(iVar2 + 8)); - *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) | 4; - *(byte *)(param_1 + 2) = *(byte *)(param_1 + 2) | 0x80; - *(undefined4 *)(param_1 + 0x70) = 0; - return; -} - - - -void proc_7F04DD68(int param_1) - -{ - undefined4 *puVar1; - float extraout_f12; - float extraout_f14; - float afStack80 [4]; - float afStack64 [4]; - float afStack48 [4]; - float afStack32 [5]; - int iStack12; - int iStack8; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x10); - iStack8 = *(int *)(param_1 + 0x14); - iStack12 = *(int *)(*(int *)(*(int *)(*(int *)(iStack8 + 8) + 8) + 8) + 4); - proc_7F0526EC(param_1,afStack80); - proc_7F0A1DA0(afStack32,afStack80,afStack64,afStack48,extraout_f12,extraout_f14, - *(float *)(iStack12 + 4),*(float *)(iStack12 + 8)); - proc_7F0A0CCC(iStack4,'\x01'); - puVar1 = (undefined4 *) - extract_id_from_object_structure_microcode - (iStack8,*(ushort **)(*(int *)(*(int *)(iStack8 + 8) + 8) + 4)); - *puVar1 = 0; - return; -} - - - -void proc_7F04DE18(int param_1) - -{ - int objinst; - int iVar1; - float *pfVar2; - undefined4 *puVar3; - float extraout_f12; - float extraout_f14; - float afStack84 [4]; - float afStack68 [4]; - float afStack52 [4]; - float afStack36 [4]; - float *pfStack20; - int iStack16; - int iStack4; - - iStack4 = *(int *)(param_1 + 0x10); - objinst = *(int *)(param_1 + 0x14); - if ((*(byte *)(iStack4 + 1) & 2) != 0) { - iVar1 = *(int *)(*(int *)(objinst + 8) + 8); - iStack16 = *(int *)(*(int *)(iVar1 + 8) + 4); - pfStack20 = (float *)proc_7F06C660(objinst,*(ushort **)(iVar1 + 4),0); - pfVar2 = (float *)proc_7F078444(); - proc_7F05818C(pfVar2,pfStack20,(int)afStack84); - proc_7F0A1DA0(afStack36,afStack84,afStack68,afStack52,extraout_f12,extraout_f14, - *(float *)(iStack16 + 4),*(float *)(iStack16 + 8)); - } - proc_7F0A0CCC(iStack4,'\x01'); - puVar3 = (undefined4 *) - extract_id_from_object_structure_microcode - (objinst,*(ushort **)(*(int *)(*(int *)(objinst + 8) + 8) + 0xc)); - *puVar3 = 0; - return; -} - - - -void proc_7F04DEFC(int param_1,float param_2,undefined8 param_3,undefined8 param_4,int param_5) - -{ - int param_1_00; - int iVar1; - uint uVar2; - uint uVar3; - float extraout_f12; - int in_stack_00000010; - - param_1_00 = *(int *)(param_1 + 4); - uVar3 = *(uint *)(param_1_00 + 100) & 0xfff9ffff; - uVar2 = uVar3 | in_stack_00000010 << 0x11; - *(uint *)(param_1_00 + 100) = uVar3; - *(uint *)(param_1_00 + 100) = uVar2; - if (-1 < (int)(uVar2 << 0xc)) { - param_1_00 = *(int *)(param_1 + 0x20); - while (param_1_00 != 0) { - iVar1 = *(int *)(param_1_00 + 0x24); - proc_7F04DEFC(param_1_00,param_2,(longlong)(int)param_3._4_4_,param_4,param_5); - param_1_00 = iVar1; - param_2 = extraout_f12; - } - maybe_detonate_object(*(int *)(param_1 + 4),param_2,param_3._4_4_,(int)param_4,param_5); - } - return; -} - - - -undefined8 check_if_destroyable_object_type(int param_1) - -{ - if (true) { - switch(*(undefined *)(param_1 + 3)) { - case 1: - case 3: - case 5: - case 6: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0x24: - case 0x27: - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - case 0x2d: - case 0x2f: - return 1; - } - } - return 0; -} - - - -undefined8 check_if_collectable_object(int objdata) - -{ - if (true) { - switch(*(undefined *)(objdata + 3)) { - case 4: - case 7: - case 8: - case 0x11: - case 0x14: - case 0x15: - return 1; - } - } - return 0; -} - - - -undefined8 check_if_destroyable_not_invincible(int object) - -{ - undefined8 uVar1; - longlong lVar2; - int iVar3; - - if (*(char *)(object + 3) == '\x01') { - uVar1 = 0; - } - else { - lVar2 = check_if_collectable_object(object); - if (lVar2 == 0) { - iVar3 = *(int *)(object + 8); - } - else { - if (*(char *)(object + 3) != '\x15') { - if (*(int *)(object + 8) << 0xf < 0) { - return 1; - } - return 0; - } - iVar3 = *(int *)(object + 8); - } - if (iVar3 << 0xe < 0) { - uVar1 = 0; - } - else { - uVar1 = 1; - } - } - return uVar1; -} - - - -void proc_7F04E0CC(int param_1,float param_2,float *param_3,int param_4,int param_5) - -{ - if ((*(uint *)(param_1 + 0xc) & 0x4000) == 0) { - maybe_detonate_object(param_1,(float)param_3,param_3,param_4,param_5); - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f04e280) overlaps instruction at (ram,0x7f04e27c) -// - -void maybe_detonate_object(int objdata,float param_2,float *param_3,int param_4,int param_5) - -{ - ushort uVar1; - dword *pdVar2; - int iVar3; - int iVar5; - longlong lVar4; - uint uVar6; - u32 uVar7; - dword *pdVar8; - undefined *puVar9; - char cVar11; - int iVar10; - uint uVar12; - dword *pdVar13; - dword *pdVar14; - dword *pdVar15; - float *pfVar16; - f32 scale; - float fVar17; - int in_stack_00000010; - dword adStack164 [30]; - dword adStack44 [3]; - dword *pdStack32; - uint uStack28; - uint uStack24; - - uVar6 = *(uint *)(objdata + 100) & 0xfff9ffff; - *(uint *)(objdata + 100) = uVar6; - *(uint *)(objdata + 100) = uVar6 | in_stack_00000010 << 0x11; - if ((*(char *)(objdata + 3) == '$') && - (iVar5 = do_something_if_object_destroyed(objdata), iVar5 == 1)) { - return; - } - if (param_5 == 0) { - lVar4 = check_if_collectable_object(objdata); - if (lVar4 == 0) { - if (*(int *)(objdata + 8) << 7 < 0) { - return; - } - } - else { - if (-1 < *(int *)(objdata + 8) << 8) { - return; - } - } - } - else { - if ((int)(*(uint *)(objdata + 8) << 0xe) < 0) { - return; - } - if (*(char *)(objdata + 3) == '\b') { - cVar11 = *(char *)(objdata + 0x80); - if (((((cVar11 != '\x1a') && (cVar11 != '\x1b')) && (cVar11 != '\x1d')) && - ((cVar11 != '\x1c' && (cVar11 != 'V')))) && - ((cVar11 != 'W' && ((cVar11 != '!' && (cVar11 != '\"')))))) { - return; - } - *(undefined2 *)(objdata + 0x82) = 0; - return; - } - if (*(char *)(objdata + 3) == '\a') { - iVar5 = *(int *)(objdata + 0x80); - if (((((iVar5 != 5) && (iVar5 != 6)) && (iVar5 != 7)) && - (((iVar5 != 8 && (iVar5 != 9)) && ((iVar5 != 0xb && ((iVar5 != 0xf && (iVar5 != 0x10)))))) - )) && (iVar5 != 0x13)) { - return; - } - *(uint *)(objdata + 8) = *(uint *)(objdata + 8) | 0x10000000; - return; - } - lVar4 = check_if_destroyable_not_invincible(objdata); - if (lVar4 == 0) { - return; - } - } - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 0) { - *(float *)(objdata + 0x70) = *(float *)(objdata + 0x70) + (float)param_3 * 250.00000000; - } - else { - uVar6 = proc_7F03FF60(objdata); - uVar12 = uVar6 & 3; - if (((int)uVar6 < 0) && (uVar12 != 0)) { - uVar12 -= 4; - } - pfVar16 = (float *)(float)(4 - uVar12); - if (((float)(float *)(float)(4 - uVar12) < (float)param_3) || - (pfVar16 = (float *)0x3f800000, (float)param_3 < 1.00000000)) { - fVar17 = *(float *)(objdata + 0x70); - } - else { - fVar17 = *(float *)(objdata + 0x70); - pfVar16 = param_3; - } - *(float *)(objdata + 0x70) = fVar17 + (float)pfVar16; - } - cVar11 = *(char *)(objdata + 3); - if ((cVar11 == '*') || (cVar11 == '/')) { - if (*(float *)(objdata + 0x74) <= *(float *)(objdata + 0x70)) { - proc_7F04DCB4(objdata); - cVar11 = *(char *)(objdata + 3); - } - } - else { - proc_7F04BFD0(*(int *)(objdata + 0x10),1); - object_explosion_related(objdata,(float *)param_4,in_stack_00000010); - cVar11 = *(char *)(objdata + 3); - } - if (cVar11 == '\x14') { - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 1) { - uVar7 = get_random_value(); - uVar6 = uVar7 % 0xd; - uVar12 = uVar6; -LAB_7f04e3e8: - iVar5 = objdata + uVar6 * 4; - if (*(short *)(iVar5 + 0x82) == 0) { - iVar5 = uVar6 + 1; - } - else { - if (*(short *)(iVar5 + 0x80) == -1) { - iVar5 = uVar6 + 1; - } - else { - uStack28 = uVar6; - uStack24 = uVar12; - pdVar8 = (dword *)proc_7F0518D0(); - if (pdVar8 != NULL) { - uVar1 = *(ushort *)(iVar5 + 0x80); - pdVar14 = blank_07_object; - pdVar2 = adStack164; - do { - pdVar13 = pdVar2; - pdVar15 = pdVar14; - *pdVar13 = *pdVar15; - pdVar13[1] = pdVar15[1]; - pdVar13[2] = pdVar15[2]; - pdVar14 = pdVar15 + 3; - pdVar2 = pdVar13 + 3; - } while (pdVar15 + 3 != &DWORD_8003210c); - pdVar13[3] = DWORD_8003210c; - pdVar13[4] = pdVar15[4]; - pdVar14 = adStack164; - pdVar2 = pdVar8; - do { - pdVar15 = pdVar2; - pdVar13 = pdVar14; - pdVar14 = pdVar13 + 3; - *pdVar15 = *pdVar13; - pdVar15[1] = pdVar13[1]; - pdVar15[2] = pdVar13[2]; - pdVar2 = pdVar15 + 3; - } while (pdVar14 != adStack44); - pdVar15[3] = *pdVar14; - pdVar15[4] = pdVar13[4]; - *(ushort *)(pdVar8 + 1) = uVar1; - pdVar8[0x20] = uStack28 + 1; - if (uStack28 + 1 == 2) { - pdVar8[0x20] = 1; - } - pdStack32 = pdVar8; - puVar9 = proc_7F0406F8((int)pdVar8,(ushort **)PitemZ_entries[(uint)uVar1].header); - if (puVar9 != NULL) { - set_obj_instance_controller_scale(pdStack32[5],scale); - proc_7F03A5A4(pdStack32[4],*(int *)(objdata + 0x10)); - cVar11 = *(char *)(objdata + 3); - goto LAB_7f04e544; - } -LAB_7f04e540: - cVar11 = *(char *)(objdata + 3); - goto LAB_7f04e544; - } - iVar5 = uStack28 + 1; - uVar12 = uStack24; - } - } - uVar6 = iVar5 % 0xd; - if (uVar6 == uVar12) goto LAB_7f04e540; - goto LAB_7f04e3e8; - } - cVar11 = *(char *)(objdata + 3); - } - else { - cVar11 = *(char *)(objdata + 3); - } -LAB_7f04e544: - if (cVar11 == '\r') { - *(uint *)(objdata + 8) = *(uint *)(objdata + 8) | 0x40000000; - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 1) { - *(uint *)(objdata + 8) = *(uint *)(objdata + 8) | 0x10000000; - } - } - else { - if (cVar11 == '\x06') { - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 1) { - *(uint *)(objdata + 8) = *(uint *)(objdata + 8) | 0x10000000; - } - } - else { - if (cVar11 == '\n') { - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 1) { - set_ptr_monitor_img_to_obj_ani_slot((undefined4 *)(objdata + 0x80),&DAT_80031ee8); - } - } - else { - if (cVar11 == '\v') { - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 1) { - set_ptr_monitor_img_to_obj_ani_slot((undefined4 *)(objdata + 0x80),&DAT_80031ee8); - set_ptr_monitor_img_to_obj_ani_slot((undefined4 *)(objdata + 0xf4),&DAT_80031ee8); - set_ptr_monitor_img_to_obj_ani_slot((undefined4 *)(objdata + 0x168),&DAT_80031ee8); - set_ptr_monitor_img_to_obj_ani_slot((undefined4 *)(objdata + 0x1dc),&DAT_80031ee8); - } - } - else { - if (cVar11 == '$') { - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 1) { - init_trigger_toxic_gas_effect((undefined4 *)(objdata + 0x58)); - } - } - else { - if (cVar11 == '\x15') { - iVar5 = do_something_if_object_destroyed(objdata); - if (iVar5 == 0) { - *(float *)(objdata + 0x84) = - (*(float *)(objdata + 0x80) * - (*(float *)(objdata + 0x74) - *(float *)(objdata + 0x70))) / - *(float *)(objdata + 0x74); - } - else { - *(undefined4 *)(objdata + 0x84) = 0; - } - } - } - } - } - } - } - iVar5 = do_something_if_object_destroyed(objdata); - if ((iVar5 == 1) && (iVar5 = *(int *)(*(int *)(objdata + 0x10) + 0x20), iVar5 != 0)) { - iVar3 = *(int *)(iVar5 + 0x24); - while (iVar10 = iVar3, proc_7F04BFD0(iVar5,1), iVar10 != 0) { - iVar3 = *(int *)(iVar10 + 0x24); - iVar5 = iVar10; - } - } - return; -} - - - -void proc_7F04E720(int param_1,float *param_2) - -{ - int iVar1; - longlong lVar2; - int iVar3; - int param_1_00; - float extraout_f12; - ushort *apuStack96 [2]; - float fStack88; - undefined4 uStack84; - float fStack80; - int iStack76; - float fStack72; - undefined4 uStack68; - float fStack64; - undefined4 *apuStack24 [6]; - - iVar1 = *(int *)(param_1 + 4); - if (((*(uint *)(iVar1 + 100) & 0x1000) == 0) && ((*(byte *)(param_1 + 1) & 2) != 0)) { - param_1_00 = *(int *)(param_1 + 0x20); - if (*(int *)(param_1 + 0x20) == 0) { - param_1_00 = *(int *)(iVar1 + 0x14); - } - else { - do { - iVar3 = *(int *)(param_1_00 + 0x24); - proc_7F04E720(param_1_00,param_2); - param_1_00 = iVar3; - } while (iVar3 != 0); - param_1_00 = *(int *)(iVar1 + 0x14); - } - apuStack24[0] = NULL; - if ((*(char *)(iVar1 + 3) == '\x01') && - ((((*(ushort *)(iVar1 + 0x98) & 4) != 0 || (*(short *)(iVar1 + 0x9a) == 6)) || - (*(short *)(iVar1 + 0x9a) == 7)))) { - lVar2 = proc_7F0747D0(iVar1 + 0xd0,*(float **)(param_1_00 + 0xc),param_2,param_2 + 3); - apuStack24[0] = (undefined4 *)**(ushort ***)(param_1_00 + 8); - if ((0 < lVar2) && - (iVar3 = proc_7F04D9B0(param_1_00,(ushort *)apuStack24[0],param_2,param_2 + 3,&fStack72, - &iStack76,apuStack96), iVar3 == 0)) { - lVar2 = 0; - } - } - else { - do { - iVar3 = proc_7F0752FC(param_1_00,param_2,param_2 + 3,(ushort **)apuStack24); - lVar2 = (longlong)iVar3; - if ((0 < lVar2) && - (iVar3 = proc_7F04D9B0(param_1_00,(ushort *)apuStack24[0],param_2,param_2 + 3,&fStack72, - &iStack76,apuStack96), iVar3 != 0)) break; - } while (0 < lVar2); - } - if (0 < lVar2) { - fStack88 = fStack72; - uStack84 = uStack68; - fStack80 = fStack64; - proc_7F058474((float *)(*(int *)(param_1_00 + 0xc) + iStack76 * 0x40),&fStack88); - if (-fStack80 <= param_2[0xd]) { - iVar3 = 1; - if ((-1 < *(int *)(iVar1 + 8) << 0xe) && - (((*(char *)(iVar1 + 3) == '*' || (*(char *)(iVar1 + 3) == '/')) || - ((iVar1 = *(int *)(*(int *)(iVar1 + 0x14) + 8), - *(item_related **)(iVar1 + 4) == &prop_door_related && - (apuStack96[0] == *(ushort **)(*(int *)(iVar1 + 8) + 0xc))))))) { - iVar3 = 0; - } - proc_7F03B9C0((int)param_2,param_1,extraout_f12,-fStack80,(int)lVar2,apuStack24[0],&fStack72 - ,iStack76,apuStack96[0],param_1_00,iVar3); - } - } - } - return; -} - - - -void proc_7F04E9BC(int param_1,float *param_2) - -{ - int iVar1; - int iVar2; - int iVar3; - float fVar4; - - iVar1 = *(int *)(param_1 + 4); - iVar2 = *(int *)(iVar1 + 0x14); - iVar3 = proc_7F040078(iVar1); - if (((((*(byte *)(param_1 + 1) & 2) != 0) && ((*(uint *)(iVar1 + 100) & 0x1000) == 0)) && - ((*(uint *)(iVar1 + 0xc) & 0x8000) == 0)) && - (fVar4 = proc_7F03EB9C(iVar3,*(int *)(iVar2 + 0xc)), - -(fVar4 + *(float *)(*(int *)(iVar2 + 0xc) + 0x38)) <= param_2[0xd])) { - proc_7F04E720(param_1,param_2); - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f04ed2c) overlaps instruction at (ram,0x7f04ed28) -// - -void proc_7F04EA68(float *param_1,float *param_2) - -{ - item_related *piVar1; - int iVar2; - bool bVar3; - float *pfVar6; - ulonglong uVar4; - u32 uVar7; - longlong lVar5; - int object; - hit_header **pphVar8; - undefined uVar9; - uint uVar10; - hit_header *phVar11; - float *pfVar12; - float fVar13; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fStack16; - float fStack12; - float fStack8; - - object = *(int *)((int)param_2[1] + 0x1c); - if (object == 0) { - fVar13 = *param_2; - } - else { - do { - object = *(int *)(object + 0x1c); - } while (object != 0); - fVar13 = *param_2; - } - object = *(int *)((int)param_2[1] + 4); - pfVar12 = (float *)0x41d00000; - fStack16 = (*param_1 - (fVar13 * param_1[3]) / param_1[5]) - param_1[3] * 26.00000000; - fStack12 = (param_1[1] - (*param_2 * param_1[4]) / param_1[5]) - param_1[4] * 26.00000000; - fStack8 = (param_1[2] - *param_2) - param_1[5] * 26.00000000; - pfVar6 = (float *)proc_7F078444(); - proc_7F058474(pfVar6,&fStack16); - fVar13 = extraout_f12; - if (param_2[0x13] != 0.00000000) { - proc_7F067B4C(&fStack16); - fVar13 = extraout_f12_00; - } - proc_7F0A3E1C(&fStack16,1,fVar13,0); - uVar4 = check_if_object_has_not_been_destroyed(object); - if (uVar4 == 0) { - fVar13 = param_2[0x13]; - } - else { - lVar5 = check_if_destroyable_not_invincible(object); - if (lVar5 == 0) { - fVar13 = param_2[0x13]; - } - else { - if (param_2[0x13] == 0.00000000) { - fVar13 = param_2[0x13]; - } - else { - inc_curplayer_hitcount_with_weapon((int)param_1[6],6); - fVar13 = param_2[0x13]; - } - } - } - if (fVar13 == 0.00000000) { - proc_7F064720((float *)((int)param_2[1] + 8)); - } - else { - pfVar12 = (float *)recall_joy2_hits_edit_detail_edit_flag(); - } - fVar13 = param_1[6]; - if (fVar13 != 0.00000000) { - if (param_2[0x13] == 0.00000000) { - fVar13 = param_2[1]; - piVar1 = *(item_related **)(*(int *)(*(int *)(object + 0x14) + 8) + 4); - uVar7 = get_random_value(); - proc_7F0A108C(param_2 + 4,param_2 + 7,(short)(uVar7 % 3) + 0x11,1,(int)fVar13, - SUB41(param_2[0x10],0),piVar1 == &prop_door_related); - fVar13 = param_1[6]; - } - else { - pphVar8 = hit_header_array[0]; - if (-1 < *(short *)((int)param_2 + 0x3a)) { - pphVar8 = hit_header_array - [(uint)(byte)image_entries[(int)*(short *)((int)param_2 + 0x3a)].flag1 & 0xf]; - } - uVar7 = get_random_value(); - iVar2 = *(int *)(*(int *)(object + 0x14) + 8); - uVar9 = 0; - if (*(short *)((int)pphVar8 + 10) == 0) { - trap(0x1c00); - } - if ((*(item_related **)(iVar2 + 4) == &prop_door_related) && - (param_2[0x11] == *(float *)(*(int *)(iVar2 + 8) + 0xc))) { -LAB_7f04ed50: - uVar9 = 1; - phVar11 = pphVar8[1]; - } - else { - if (*(item_related **)(iVar2 + 4) == &prop_cctv_related) { - if (param_2[0x11] == *(float *)(*(int *)(iVar2 + 8) + 4)) goto LAB_7f04ed50; - phVar11 = pphVar8[1]; - } - else { - phVar11 = pphVar8[1]; - } - } - proc_7F0A108C(param_2 + 4,param_2 + 7, - (ushort)*(byte *)((int)&phVar11->pImageIDArray + - uVar7 % (int)*(short *)((int)pphVar8 + 10)),1,(int)param_2[1], - SUB41(param_2[0x10],0),uVar9); - fVar13 = param_1[6]; - } - } - proc_7F05DF84((int)fVar13); - if (*(char *)(object + 3) == '\r') { - pfVar12 = (float *)((float)pfVar12 * flt_80030B24); - } - else { - if (*(char *)(object + 3) == '\x06') { - iVar2 = *(int *)(*(int *)(object + 0x14) + 8); - if ((*(item_related **)(iVar2 + 4) == &prop_cctv_related) && - (param_2[0x11] == *(float *)(*(int *)(iVar2 + 8) + 4))) { - pfVar12 = (float *)((float)pfVar12 * 100.00000000); - proc_7F04DE18(object); - } - pfVar12 = (float *)((float)pfVar12 * flt_80030B18); - } - } - get_cur_playernum(); - proc_7F04E0CC(object,extraout_f12_01,pfVar12,(int)&fStack16,(int)param_1[6]); - if (((*(item_related **)(*(int *)(*(int *)(object + 0x14) + 8) + 4) == &prop_door_related) && - (param_2[0x13] == 0.00000000)) && - (*(char *)(object + 0xbd) = *(char *)(object + 0xbd) + '\x01', - '\x02' < *(char *)(object + 0xbd))) { - proc_7F04DD68(object); - } - proc_7F044200((int)param_2[1]); - bVar3 = false; - lVar5 = check_if_collectable_object(object); - if (lVar5 == 0) { - if (-1 < *(int *)(object + 8) << 10) { - uVar10 = *(uint *)(object + 0xc); - goto LAB_7f04eed8; - } - } - else { - if (*(int *)(object + 8) << 9 < 0) { - uVar10 = *(uint *)(object + 0xc); - goto LAB_7f04eed8; - } - } - bVar3 = true; - uVar10 = *(uint *)(object + 0xc); -LAB_7f04eed8: - if ((uVar10 & 2) == 0) { - uVar10 = *(uint *)(object + 0xc); - } - else { - uVar4 = check_if_object_has_not_been_destroyed(object); - if (uVar4 == 0) { - bVar3 = true; - uVar10 = *(uint *)(object + 0xc); - } - else { - uVar10 = *(uint *)(object + 0xc); - } - } - if ((uVar10 & 0x400) != 0) { - bVar3 = false; - } - if (bVar3) { - proc_7F04BCDC(object,param_1 + 3); - } - return; -} - - - -ulonglong check_if_object_has_not_been_destroyed(int param_1) - -{ - int iVar1; - - iVar1 = do_something_if_object_destroyed(param_1); - return (ulonglong)(iVar1 == 0); -} - - - -undefined8 proc_7F04EF58(int param_1) - -{ - int iVar1; - ulonglong uVar2; - longlong lVar3; - byte bVar4; - float fVar5; - float vector1; - float vector2; - float fVar6; - float fVar7; - int iStack44; - float fStack40; - int iStack12; - int iStack8; - - iStack8 = *(int *)(param_1 + 4); - if (*(char *)(iStack8 + 3) == '\x05') { - bVar4 = *(byte *)(param_1 + 1); - } - else { - if (*(int *)(iStack8 + 8) << 0xc < 0) { - bVar4 = *(byte *)(param_1 + 1); - } - else { - if ((*(uint *)(iStack8 + 100) & 0x13) == 0) { - return 1; - } - bVar4 = *(byte *)(param_1 + 1); - } - } - if ((bVar4 & 2) == 0) { - return 1; - } - uVar2 = check_if_object_has_not_been_destroyed(iStack8); - iVar1 = DAT_80071df8; - if (uVar2 != 0) { - if (*(int *)(iStack8 + 8) << 6 < 0) { - return 1; - } - iStack12 = get_curplayer_positiondata(); - iStack44 = *(int *)(iStack12 + 0x14); - vector1 = *(float *)(iStack8 + 0x58) - *(float *)(iStack12 + 8); - fVar7 = *(float *)(iStack8 + 0x5c) - *(float *)(iStack12 + 0xc); - vector2 = *(float *)(iStack8 + 0x60) - *(float *)(iStack12 + 0x10); - if ((*(char *)(iStack8 + 3) == '(') && (*(int *)(iStack8 + 8) << 2 < 0)) { - fVar5 = 400.00000000; - fVar6 = flt_80052EF4; - fStack40 = flt_80052EF8; - } - else { - fVar5 = 200.00000000; - fVar6 = flt_80052EFC; - fStack40 = flt_80052F00; - } - if (fVar6 <= vector1 * vector1 + vector2 * vector2) { - return 1; - } - if (fVar5 <= fVar7) { - return 1; - } - if (fVar7 <= -fVar5) { - return 1; - } - vector2 = convert_angle_using_inverse((f32)vector1,(f32)vector2); - fVar7 = get_curplay_horizontal_rotation_in_degrees(); - fVar6 = vector2 - fVar7; - vector1 = fVar6; - if (vector2 < fVar7) { - vector1 = fVar6 + flt_80052F04; - } - if (flt_80052F08 < vector1) { - vector1 = flt_80052F0C - vector1; - } - if (fStack40 < vector1) { - return 1; - } - lVar3 = (longlong)param_1; - iVar1 = param_1; - if (((*(uint *)(iStack8 + 0xc) & 0x800) != 0) && - (proc_7F0B0BE4(&iStack44,vector2,fVar6,*(float *)(iStack12 + 8),*(float *)(iStack12 + 0x10)), - iVar1 = param_1, lVar3 == 0)) { - return 1; - } - } - DAT_80071df8 = iVar1; - return 1; -} - - - -undefined4 proc_7F04F170(char *param_1) - -{ - int iVar1; - s32 sVar3; - undefined8 uVar2; - uint uVar4; - int iVar5; - undefined4 uStack8; - - iVar1 = *(int *)(param_1 + 4); - uStack8 = 0; - if (*(char *)(iVar1 + 3) == '\x05') { - play_sfx_a1(ptr_sfx_buf,0xba,NULL); - sVar3 = is_alarm_on(); - if (sVar3 != 0) { - stop_alarm(); - iVar5 = *(int *)(iVar1 + 8); - goto LAB_7f04f1d4; - } - start_alarm(); - } - iVar5 = *(int *)(iVar1 + 8); -LAB_7f04f1d4: - if (iVar5 << 0xc < 0) { - uVar2 = collect_or_interact_object(param_1,1); - uStack8 = (undefined4)uVar2; - uVar4 = *(uint *)(iVar1 + 100); - } - else { - uVar4 = *(uint *)(iVar1 + 100); - } - *(uint *)(iVar1 + 100) = uVar4 | 0x4000; - proc_7F03E6A0((int)param_1); - return uStack8; -} - - - -void proc_7F04F218(int param_1,longlong param_2) - -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 4); - if (param_2 != 0) { - *(byte *)(iVar1 + 2) = *(byte *)(iVar1 + 2) & 0xdf; - return; - } - *(byte *)(iVar1 + 2) = *(byte *)(iVar1 + 2) | 0x20; - return; -} - - - -void proc_7F04F244(int param_1,int *param_2,undefined4 *param_3,undefined4 *param_4, - undefined4 *param_5) - -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 4); - if (*(undefined4 **)(iVar1 + 0x68) == NULL) { - *param_3 = 0; - } - else { - if ((*(uint *)(iVar1 + 8) & 0x100) == 0) { - *param_3 = 0; - } - else { - if ((*(byte *)(iVar1 + 2) & 0x20) == 0) { - *param_3 = **(undefined4 **)(iVar1 + 0x68); - *param_2 = *(int *)(iVar1 + 0x68) + 4; - *param_5 = *(undefined4 *)(*(int *)(iVar1 + 0x68) + 0x48); - *param_4 = *(undefined4 *)(*(int *)(iVar1 + 0x68) + 0x44); - return; - } - *param_3 = 0; - } - } - return; -} - - - -char * append_text_picked_up(char *param_1) - -{ - byte *pbVar1; - char *pcVar2; - - pbVar1 = get_textptr_for_textID(0xa400); - pcVar2 = string_load_parse_something(param_1,(char *)pbVar1); - return pcVar2; -} - - - -void append_text_ammo_amount_word(char *buffer,undefined4 ammotype,longlong amount) - -{ - byte *pbVar1; - - if (true) { - switch(ammotype) { - case 1: - case 2: - case 3: - case 0x17: - pbVar1 = get_textptr_for_textID(0xa401); - string_load_parse_something(buffer,(char *)pbVar1); - break; - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - if (amount == 1) { - pbVar1 = get_textptr_for_textID(0xa402); - string_load_parse_something(buffer,(char *)pbVar1); - } - else { - pbVar1 = get_textptr_for_textID(0xa401); - string_load_parse_something(buffer,(char *)pbVar1); - } - break; - case 0xf: - case 0x10: - if (amount == 1) { - pbVar1 = get_textptr_for_textID(0xa403); - string_load_parse_something(buffer,(char *)pbVar1); - } - else { - pbVar1 = get_textptr_for_textID(0xa401); - string_load_parse_something(buffer,(char *)pbVar1); - } - break; - case 0x16: - case 0x1d: - if (amount == 1) { - pbVar1 = get_textptr_for_textID(0xa404); - string_load_parse_something(buffer,(char *)pbVar1); - } - else { - pbVar1 = get_textptr_for_textID(0xa401); - string_load_parse_something(buffer,(char *)pbVar1); - } - } - } - return; -} - - - -char * apped_text_ammotype(char *buffer,int ammotype,int amount) - -{ - byte *pbVar1; - char *pcVar2; - - pcVar2 = (char *)((int)&rgba + 1); - if (((ammotype == 1) || (ammotype == 2)) || (ammotype == 3)) { - pbVar1 = get_textptr_for_textID(0xa405); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - } - else { - if (ammotype == 10) { - pbVar1 = get_textptr_for_textID(41999); - string_load_parse_something(buffer,(char *)pbVar1); - if (amount == 1) { - pbVar1 = get_textptr_for_textID(42000); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - } - else { - pbVar1 = get_textptr_for_textID(0xa411); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - } - } - else { - if (ammotype == 0x13) { - if (amount == 1) { - pbVar1 = get_textptr_for_textID(0xa419); - string_load_parse_something(buffer,(char *)pbVar1); - } - else { - pbVar1 = get_textptr_for_textID(0xa41a); - string_load_parse_something(buffer,(char *)pbVar1); - } - pbVar1 = get_textptr_for_textID(0xa418); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - } - else { - if (true) { - switch(ammotype) { - case 4: - pbVar1 = get_textptr_for_textID(0xa406); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 5: - pbVar1 = get_textptr_for_textID(0xa409); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 6: - pbVar1 = get_textptr_for_textID(0xa40b); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 7: - pbVar1 = get_textptr_for_textID(0xa40c); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 8: - pbVar1 = get_textptr_for_textID(0xa40d); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 9: - pbVar1 = get_textptr_for_textID(0xa40e); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0xb: - pbVar1 = get_textptr_for_textID(0xa40a); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0xc: - pbVar1 = get_textptr_for_textID(0xa407); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0xd: - pbVar1 = get_textptr_for_textID(0xa408); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0xe: - pbVar1 = get_textptr_for_textID(0xa413); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0xf: - pbVar1 = get_textptr_for_textID(0xa414); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x10: - pbVar1 = get_textptr_for_textID(0xa415); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x11: - pbVar1 = get_textptr_for_textID(0xa416); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x12: - pbVar1 = get_textptr_for_textID(0xa417); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x14: - pbVar1 = get_textptr_for_textID(0xa41b); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x15: - pbVar1 = get_textptr_for_textID(0xa41c); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x16: - pbVar1 = get_textptr_for_textID(0xa41d); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x17: - pbVar1 = get_textptr_for_textID(0xa41f); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - break; - case 0x1d: - pbVar1 = get_textptr_for_textID(0xa41e); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - } - } - if (1 < amount) { - pbVar1 = get_textptr_for_textID(0xa412); - pcVar2 = string_load_parse_something(buffer,(char *)pbVar1); - } - } - } - } - return pcVar2; -} - - - -void set_sound_effect_for_ammo_collection(undefined4 ammotype) - -{ - if (true) { - switch(ammotype) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x11: - case 0x12: - case 0x13: - case 0x16: - case 0x1d: - play_sfx_a1(ptr_sfx_buf,0xea,NULL); - break; - case 7: - case 8: - case 9: - case 0x10: - case 0x14: - case 0x15: - case 0x17: - play_sfx_a1(ptr_sfx_buf,0xeb,NULL); - break; - case 10: - play_sfx_a1(ptr_sfx_buf,0xe9,NULL); - } - } - return; -} - - - -int ** set_sound_effect_for_weapontype_collection(longlong weapontype) - -{ - int **ppiVar1; - - if ((weapontype == 2) || (weapontype == 3)) { - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xe9,NULL); - } - else { - if (((((weapontype == 0x1d) || (weapontype == 0x1c)) || (weapontype == 0x1b)) || - ((weapontype == 0x21 || (weapontype == 0x2f)))) || - ((weapontype == 0x30 || (weapontype == 0x22)))) { - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xeb,NULL); - } - else { - if (((weapontype == 0x1a) || (weapontype == 0x57)) || (weapontype == 0x56)) { - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xea,NULL); - } - else { - if (weapontype == 0x16) { - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xf2,NULL); - } - else { - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xe8,NULL); - } - } - } - } - return ppiVar1; -} - - - -char * display_ammo_type_collection_text(char *finaltext,int ammotype,longlong quantity) - -{ - ulonglong uVar1; - char *pcVar2; - - *finaltext = '\0'; - if (j_text_trigger == 0) { - uVar1 = get_num_players(); - if ((longlong)uVar1 < 3) { - append_text_picked_up(finaltext); - append_text_ammo_amount_word(finaltext,ammotype,quantity); - } - apped_text_ammotype(finaltext,ammotype,(int)quantity); - pcVar2 = string_load_parse_something(finaltext,".\n"); - } - else { - apped_text_ammotype(finaltext,ammotype,(int)quantity); - uVar1 = get_num_players(); - if ((longlong)uVar1 < 3) { - append_text_picked_up(finaltext); - } - pcVar2 = string_load_parse_something(finaltext,"\n"); - } - return pcVar2; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -void display_text_when_ammo_collected(int ammotype,longlong amount) - -{ - undefined4 *puVar1; - undefined4 *puVar2; - undefined4 *puVar3; - undefined4 *puVar4; - undefined4 stringbuf [25]; - - puVar3 = &dword_800529D8; - puVar1 = stringbuf; - do { - puVar4 = puVar3 + 3; - puVar2 = puVar1 + 3; - *puVar1 = *puVar3; - puVar1[1] = puVar3[1]; - puVar1[2] = puVar3[2]; - puVar3 = puVar4; - puVar1 = puVar2; - } while (puVar4 != (undefined4 *)&dword_80052A38); - *puVar2 = _dword_80052A38; - display_ammo_type_collection_text((char *)stringbuf,ammotype,amount); - display_string_in_lower_left_corner((char *)stringbuf); - return; -} - - - -void add_ammo_to_inventory(int ammotype,longlong amount,int doplaysound,int dodisplaytext) - -{ - int iVar1; - int iVar2; - - if (0 < amount) { - iVar1 = check_cur_player_ammo_amount_in_inventory(ammotype); - iVar2 = get_max_ammo_for_type(ammotype); - if (iVar1 < iVar2) { - iVar1 = check_cur_player_ammo_amount_in_inventory(ammotype); - give_cur_player_ammo(ammotype,iVar1 + (int)amount); - if (dodisplaytext != 0) { - display_text_when_ammo_collected(ammotype,(longlong)(int)amount); - } - if (doplaysound != 0) { - set_sound_effect_for_ammo_collection(ammotype); - } - if (ammotype == 5) { - add_item_to_inventory(ITEM_GRENADE); - } - else { - if (ammotype == 7) { - add_item_to_inventory(ITEM_REMOTEMINE); - add_item_to_inventory(ITEM_TRIGGER); - } - else { - if (ammotype == 8) { - add_item_to_inventory(ITEM_PROXIMITYMINE); - } - else { - if (ammotype == 9) { - add_item_to_inventory(ITEM_TIMEDMINE); - } - else { - if (ammotype == 10) { - add_item_to_inventory(ITEM_THROWKNIFE); - } - else { - if (ammotype == 0x10) { - add_item_to_inventory(ITEM_BOMBCASE); - } - else { - if (ammotype == 0x14) { - add_item_to_inventory(ITEM_BUG); - } - else { - if (ammotype == 0x15) { - add_item_to_inventory(ITEM_MICROCAMERA); - } - else { - if (ammotype == 0x16) { - add_item_to_inventory(ITEM_GOLDENEYEKEY); - } - else { - if (ammotype == 0x1d) { - add_item_to_inventory(ITEM_TOKEN); - } - else { - if (ammotype == 0x17) { - add_item_to_inventory(ITEM_PLASTIQUE); - } - } - } - } - } - } - } - } - } - } - } - } - } - return; -} - - - -uint get_ammo_in_magazine(int objdata) - -{ - ulonglong uVar1; - uint uVar2; - - uVar2 = 1; - if (true) { - switch(*(undefined4 *)(objdata + 0x80)) { - case 1: - uVar2 = 10; - break; - case 2: - uVar2 = 10; - break; - case 3: - uVar2 = 10; - break; - case 4: - uVar2 = 5; - break; - case 0xc: - uVar2 = 5; - break; - case 0xd: - uVar2 = 3; - break; - case 0xe: - uVar2 = 4; - } - } - if ((1 < uVar2) && (uVar1 = get_num_players(), uVar1 == 1)) { - uVar2 = (uint)((float)uVar2 * solo_ammo_multiplier); - } - return uVar2; -} - - - -uint ammo_collected_from_weapon(int objdata) - -{ - undefined4 uVar2; - ulonglong uVar1; - uint uVar3; - - uVar2 = get_ammo_type_for_weapon((int)*(char *)(objdata + 0x80)); - uVar3 = 1; - if (*(int *)(objdata + 8) << 1 < 0) { - uVar3 = 0; - } - else { - if (true) { - switch(uVar2) { - case 1: - uVar3 = 10; - break; - case 2: - uVar3 = 10; - break; - case 3: - uVar3 = 10; - break; - case 4: - uVar3 = 5; - break; - case 0xb: - uVar3 = 3; - break; - case 0xc: - uVar3 = 5; - break; - case 0xd: - uVar3 = 3; - break; - case 0xe: - uVar3 = 4; - } - } - if ((1 < uVar3) && (uVar1 = get_num_players(), uVar1 == 1)) { - uVar3 = (uint)((float)uVar3 * solo_ammo_multiplier); - } - } - return uVar3; -} - - - -char * generate_language_specific_text_for_weapon(char *finalstring,int itemtype) - -{ - bool bVar1; - ulonglong uVar2; - int ammotype; - byte *pbVar3; - char *pcVar4; - size_t sVar5; - - bVar1 = false; - if (j_text_trigger == 0) { - uVar2 = get_num_players(); - if ((longlong)uVar2 < 3) { - pbVar3 = get_textptr_for_textID(0xa400); - textpointer_load_parse_something(finalstring,(char *)pbVar3); - } - } - else { - textpointer_load_parse_something(finalstring,""); - uVar2 = get_num_players(); - if (2 < (longlong)uVar2) { - bVar1 = true; - } - } - if (false) { -switchD_7f04fe74_caseD_17: - pbVar3 = get_textptr_for_textID(0xa43b); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - } - else { - switch(itemtype) { - case 2: - pbVar3 = get_textptr_for_textID(0xa420); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 3: - case 0x1a: - case 0x1b: - case 0x1c: - case 0x1d: - case 0x21: - case 0x22: - case 0x2f: - case 0x30: - case 0x3d: - case 0x56: - case 0x57: - case 0x58: - ammotype = get_ammo_type_for_weapon(itemtype); - pcVar4 = display_ammo_type_collection_text(finalstring,ammotype,1); - return pcVar4; - case 4: - pbVar3 = get_textptr_for_textID(0xa421); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 5: - pbVar3 = get_textptr_for_textID(0xa422); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 6: - pbVar3 = get_textptr_for_textID(0xa423); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 7: - pbVar3 = get_textptr_for_textID(0xa424); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 8: - pbVar3 = get_textptr_for_textID(0xa425); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 9: - pbVar3 = get_textptr_for_textID(0xa426); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 10: - pbVar3 = get_textptr_for_textID(0xa427); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0xb: - pbVar3 = get_textptr_for_textID(0xa428); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0xc: - pbVar3 = get_textptr_for_textID(0xa429); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0xd: - pbVar3 = get_textptr_for_textID(0xa42a); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0xe: - pbVar3 = get_textptr_for_textID(0xa42b); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0xf: - pbVar3 = get_textptr_for_textID(0xa42c); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x10: - pbVar3 = get_textptr_for_textID(0xa42d); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x11: - pbVar3 = get_textptr_for_textID(0xa42e); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x12: - pbVar3 = get_textptr_for_textID(0xa431); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x13: - pbVar3 = get_textptr_for_textID(0xa432); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x14: - pbVar3 = get_textptr_for_textID(0xa436); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x15: - pbVar3 = get_textptr_for_textID(0xa437); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x16: - pbVar3 = get_textptr_for_textID(0xa433); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - default: - goto switchD_7f04fe74_caseD_17; - case 0x18: - pbVar3 = get_textptr_for_textID(0xa42f); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x19: - pbVar3 = get_textptr_for_textID(0xa430); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x23: - pbVar3 = get_textptr_for_textID(0xa434); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x24: - pbVar3 = get_textptr_for_textID(0xa435); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x51: - pbVar3 = get_textptr_for_textID(0xa438); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x52: - pbVar3 = get_textptr_for_textID(0xa439); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - break; - case 0x53: - pbVar3 = get_textptr_for_textID(0xa43a); - pcVar4 = string_load_parse_something(finalstring,(char *)pbVar3); - } - } - if ((j_text_trigger != 0) && (!bVar1)) { - sVar5 = strlen(finalstring); - if (finalstring[sVar5 - 1] == '\n') { - sVar5 = strlen(finalstring); - finalstring[sVar5 - 1] = '\0'; - } - pbVar3 = get_textptr_for_textID(0xa400); - string_load_parse_something(finalstring,(char *)pbVar3); - pcVar4 = string_load_parse_something(finalstring,"\n"); - } - return pcVar4; -} - - - -void display_text_for_weapon_in_lower_left_corner(int weaponid) - -{ - char acStack100 [100]; - - generate_language_specific_text_for_weapon(acStack100,weaponid); - display_string_in_lower_left_corner(acStack100); - return; -} - - - -undefined8 collect_or_interact_object(char *param_1,int param_2) - -{ - bool bVar1; - char cVar2; - int objdata; - char *text; - AMMOTYPES type; - int iVar5; - ulonglong uVar3; - byte *text_00; - undefined8 uVar4; - int iVar6; - int ammotype; - int iVar7; - uint uVar8; - - objdata = *(int *)(param_1 + 4); - if ((pPlayer->bonddead != 0) || (clock_timer == 0)) { - return 0; - } - if (false) { -switchD_7f0502bc_caseD_3: - play_sfx_a1(ptr_sfx_buf,0xe5,NULL); - if (param_2 == 0) { - ammotype = 4; - } - else { - text_00 = (byte *)proc_7F08D95C(objdata); - if (text_00 == NULL) { - text_00 = get_textptr_for_textID(0xa43f); - } - display_string_in_lower_left_corner((char *)text_00); - ammotype = 4; - } - } - else { - switch(*(undefined *)(objdata + 3)) { - default: - goto switchD_7f0502bc_caseD_3; - case 4: - play_sfx_a1(ptr_sfx_buf,0xe5,NULL); - if (param_2 != 0) { - text_00 = (byte *)proc_7F08D95C(objdata); - if (text_00 == NULL) { - text_00 = get_textptr_for_textID(0xa43c); - } - display_string_in_lower_left_corner((char *)text_00); - } - ammotype = 4; - break; - case 7: - uVar8 = get_ammo_in_magazine(objdata); - add_ammo_to_inventory(*(int *)(objdata + 0x80),(longlong)(int)uVar8,1,param_2); - ammotype = 1; - break; - case 8: - bVar1 = false; - set_sound_effect_for_weapontype_collection((longlong)*(char *)(objdata + 0x80)); - if (*(char *)(objdata + 0x80) == '\x1d') { - add_item_to_inventory(ITEM_TRIGGER); - } - else { - if (*(char *)(objdata + 0x80) == 'X') { - draw_item_in_hand_has_more_ammo(0,ITEM_TOKEN); - } - } - if ((*(uint *)(objdata + 100) & 0x400) == 0) { - uVar3 = proc_7F08C764(param_1); - bVar1 = uVar3 != 0; - if (param_2 != 0) { - text = (char *)proc_7F08D9A4((int)*(char *)(objdata + 0x80)); - if (text == NULL) { - if (bVar1) { - display_text_for_weapon_in_lower_left_corner((int)*(char *)(objdata + 0x80)); - } - } - else { - bVar1 = true; - display_string_in_lower_left_corner(text); - } - } - ammotype = 1; - cVar2 = *(char *)(objdata + 0x80); - } - else { - if (*(char *)(objdata + 0x80) < '!') { - proc_7F08C764(param_1); - } - if (param_2 != 0) { - text = (char *)proc_7F08D95C(objdata); - if (text == NULL) { - display_text_for_weapon_in_lower_left_corner((int)*(char *)(objdata + 0x80)); - } - else { - display_string_in_lower_left_corner(text); - } - bVar1 = true; - } - ammotype = 4; - cVar2 = *(char *)(objdata + 0x80); - } - type = get_ammo_type_for_weapon((int)cVar2); - if ((type != 0) && (uVar8 = ammo_collected_from_weapon(objdata), 0 < (int)uVar8)) { - iVar5 = check_cur_player_ammo_amount_in_inventory(type); - iVar7 = get_max_ammo_for_type(type); - if (iVar5 < iVar7) { - iVar5 = check_cur_player_ammo_amount_in_inventory(type); - give_cur_player_ammo(type,iVar5 + uVar8); - if ((!bVar1) && (param_2 != 0)) { - display_text_when_ammo_collected(type,(longlong)(int)uVar8); - } - } - } - break; - case 0x14: - ammotype = 1; - iVar5 = 0; - iVar7 = objdata; - while( true ) { - iVar6 = ammotype; - ammotype = iVar6; - if (iVar5 == 1) { - ammotype = 1; - } - uVar8 = (uint)*(ushort *)(iVar7 + 0x82); - uVar3 = get_num_players(); - if (uVar3 == 1) { - uVar8 = (uint)((float)uVar8 * solo_ammo_multiplier); - } - add_ammo_to_inventory(ammotype,(longlong)(int)uVar8,0,param_2); - iVar7 += 4; - if (iVar6 == 0xd) break; - ammotype = iVar6 + 1; - iVar5 = iVar6; - } - play_sfx_a1(ptr_sfx_buf,0xea,NULL); - ammotype = 1; - break; - case 0x15: - add_BONDdata_watch_armor(*(f32 *)(objdata + 0x84)); - play_sfx_a1(ptr_sfx_buf,0x51,NULL); - if (param_2 != 0) { - text_00 = (byte *)proc_7F08D95C(objdata); - if (text_00 == NULL) { - uVar3 = get_num_players(); - if ((longlong)uVar3 < 3) { - text_00 = get_textptr_for_textID(0xa43d); - } - else { - text_00 = get_textptr_for_textID(0xa43e); - } - } - display_string_in_lower_left_corner((char *)text_00); - } - ammotype = 1; - } - } - if ((ammotype == 1) && ((*(uint *)(objdata + 100) & 0x10) == 0)) { - proc_7F040D98(objdata,0,(ulonglong)*(byte *)(objdata + 2) & 4); - uVar4 = 1; - } - else { - uVar4 = 0; - if (ammotype != 0) { - proc_7F08C724((int)param_1); - uVar4 = 4; - } - } - return uVar4; -} - - - -undefined8 object_collectability_routine(object_standard *param_1) - -{ - char cVar1; - bool bVar2; - longlong lVar3; - int item; - int hand; - AMMOTYPES AVar6; - int iVar7; - ulonglong uVar4; - undefined8 uVar5; - AMMOTYPES type; - AMMOTYPES AVar8; - ulonglong uVar9; - f32 fVar10; - float fVar11; - float fVar12; - float fVar13; - f32 extraout_f14; - u32 uStack76; - int iStack72; - int iStack48; - int iStack44; - int iStack40; - AMMOTYPES AStack36; - int iStack28; - int iStack24; - int iStack20; - int iStack8; - int iStack4; - - iStack4 = *(int *)¶m_1->obj; - lVar3 = check_if_collectable_object(iStack4); - if ((lVar3 == 0) || (*(char *)(iStack4 + 3) == '\x11')) { - item = *(int *)(iStack4 + 8); - if (-1 < item << 0xd) { - return 0; - } - } - else { - item = *(int *)(iStack4 + 8); - if (item << 0xb < 0) { - return 0; - } - } - if (item << 0xc < 0) { - return 0; - } - if ((((*(uint *)(iStack4 + 100) & 0x80) != 0) && (0 < *(int *)(*(int *)(iStack4 + 0x6c) + 0xbc))) - && (*(int *)(*(int *)(iStack4 + 0x6c) + 0x90) == 0)) { - return 0; - } - lVar3 = proc_7F03E7AC(iStack4); - if (lVar3 == 0) { - return 0; - } - cVar1 = *(char *)(iStack4 + 3); - if (cVar1 == '\b') { - iStack8 = *(int *)¶m_1->obj; - cVar1 = *(char *)(iStack8 + 0x80); - if ((cVar1 == '\x1a') || (cVar1 == 'W')) { - if (-1 < *(short *)(iStack8 + 0x82)) { - return 0; - } - if ((*(uint *)(iStack4 + 100) & 4) != 0) { - return 0; - } - } - if (((cVar1 == '\x1d') || (cVar1 == '\x1c')) || - ((cVar1 == '\x1b' || - ((((cVar1 == '!' || (cVar1 == '/')) || (cVar1 == '0')) || (cVar1 == '\"')))))) { - if (-1 < *(short *)(iStack8 + 0x82)) { - return 0; - } - if ((*(uint *)(iStack4 + 100) & 4) != 0) { - return 0; - } - } - if ((cVar1 == 'V') && ((*(uint *)(iStack4 + 100) & 0x80) != 0)) { - return 0; - } - uVar9 = is_weapon_in_inv((int)cVar1); - if ((uVar9 != 0) && (item = get_ammo_type_for_weapon((int)*(char *)(iStack8 + 0x80)), item != 0) - ) { - item = get_ammo_count_for_weapon((int)*(char *)(iStack8 + 0x80)); - hand = get_max_ammo_for_weapon((int)*(char *)(iStack8 + 0x80)); - if (hand <= item) { - item = *(int *)(iStack8 + 0x84); - if ((item == 0) && (*(char *)(iStack8 + 0x81) < '\0')) { - return 0; - } - if (item == 0) { - cVar1 = *(char *)(iStack8 + 0x81); - } - else { - cVar1 = *(char *)(item + 0x80); - } - if (*(int *)(iStack8 + 8) << 3 < 0) { - hand = (int)*(char *)(iStack8 + 0x80); - item = (int)cVar1; - } - else { - item = (int)*(char *)(iStack8 + 0x80); - hand = (int)cVar1; - } - uVar9 = is_item_for_hand_in_inventory(item,hand); - if (uVar9 != 0) { - return 0; - } - } - } - goto LAB_7f050af0; - } - if (cVar1 == '\a') { - iStack20 = *(int *)¶m_1->obj; - item = check_cur_player_ammo_amount_in_inventory(*(int *)(iStack20 + 0x80)); - hand = get_max_ammo_for_type(*(AMMOTYPES *)(iStack20 + 0x80)); - if (hand <= item) { - return 0; - } - goto LAB_7f050af0; - } - if (cVar1 == '\x14') { - iStack24 = *(int *)¶m_1->obj; - iStack28 = 1; - item = do_something_if_object_destroyed(iStack4); - if (item != 0) { - return 0; - } - AVar6 = 0; - hand = iStack24; - do { - AVar8 = AVar6 + AMMO_9MM; - type = AVar8; - if (AVar6 == AMMO_9MM) { - type = AMMO_9MM; - } - if (*(short *)(hand + 0x82) != 0) { - AStack36 = type; - item = check_cur_player_ammo_amount_in_inventory(type); - iVar7 = get_max_ammo_for_type(AStack36); - if (item < iVar7) { - iStack28 = 0; - item = iStack28; - break; - } - } - hand += 4; - AVar6 = AVar8; - item = iStack28; - } while (AVar8 != AMMO_GGUN); - } - else { - if (cVar1 != '\x15') goto LAB_7f050af0; - iStack40 = *(int *)¶m_1->obj; - iStack44 = 0; - fVar10 = get_BONDdata_watch_armor(); - if (*(float *)(iStack40 + 0x84) <= (float)fVar10) { - iStack44 = 1; - item = iStack44; - } - else { - uVar9 = get_num_players(); - item = iStack44; - if (1 < (longlong)uVar9) { - item = get_scenario(); - uVar4 = SEXT48(item); - uVar9 = uVar4; - if (uVar4 == 2) { - iStack48 = item; - uVar4 = proc_7F08CF80(); - uVar9 = SEXT48(iStack48); - if (uVar4 != 0) { - iStack44 = 1; - item = iStack44; - goto joined_r0x7f050ae0; - } - } - item = iStack44; - if ((uVar9 == 3) && (checkforgoldengun(), item = iStack44, uVar4 != 0)) { - iStack44 = 1; - item = iStack44; - } - } - } - } -joined_r0x7f050ae0: - if (item != 0) { - return 0; - } -LAB_7f050af0: - fVar11 = get_curplay_vertical_rotation_in_degrees(); - if ((flt_800532E0 <= fVar11) || (-1 < pPlayer->field_1270)) { - item = get_curplayer_positiondata(); - fVar11 = *(float *)(iStack4 + 0x58) - *(float *)(item + 8); - fVar13 = *(float *)(iStack4 + 0x5c) - *(float *)(item + 0xc); - fVar12 = *(float *)(iStack4 + 0x60) - *(float *)(item + 0x10); - if (pPlayer->field_1270 < 0x3c) { - bVar2 = fVar11 * fVar11 + fVar12 * fVar12 <= flt_800532E8; - uVar9 = (ulonglong)bVar2; - if (((bVar2) && (uVar9 = (ulonglong)(-200.00000000 <= fVar13), -200.00000000 <= fVar13)) && - (uVar9 = 0, fVar13 <= 200.00000000)) { - uVar9 = 1; - } - } - else { - bVar2 = fVar11 * fVar11 + fVar12 * fVar12 <= flt_800532E4; - uVar9 = (ulonglong)bVar2; - if (((bVar2) && (uVar9 = (ulonglong)(-500.00000000 <= fVar13), -500.00000000 <= fVar13)) && - (uVar9 = 0, fVar13 <= 500.00000000)) { - uVar9 = 1; - } - } - if ((uVar9 != 0) && ((*(uint *)(iStack4 + 0xc) & 0x1000) == 0)) { - uStack76 = *(u32 *)(item + 0x14); - iStack72 = (int)uVar9; - item = proc_7F0B0E24(&uStack76,(f32)fVar13,extraout_f14,*(f32 *)(item + 8)); - uVar9 = SEXT48(iStack72); - if ((item == 0) || (uStack76 != param_1->runtime_ptr_obj_instance_controller)) { - uVar9 = 0; - } - } - if (uVar9 != 0) { - uVar5 = collect_or_interact_object((char *)param_1,1); - return uVar5; - } - } - return 0; -} - - - -undefined8 proc_7F050D30(int param_1,undefined4 *param_2,float *param_3,float *param_4) - -{ - int iVar1; - undefined8 uVar2; - int iVar3; - - if ((*(byte *)(param_1 + 1) & 2) == 0) { - uVar2 = 0; - } - else { - iVar1 = *(int *)(param_1 + 4); - iVar3 = getsubmatrix(*(int *)(iVar1 + 0x14),(uint)param_2,param_3,param_4); - param_2[2] = *(undefined4 *)(iVar3 + 0x38); - if ((float)param_2[2] < 0.00000000) { - *param_2 = *(undefined4 *)(iVar3 + 0x30); - param_2[1] = *(undefined4 *)(iVar3 + 0x34); - *param_4 = 0.00000000; - param_4[1] = 0.00000000; - *param_3 = 0.00000000; - param_3[1] = 0.00000000; - proc_7F03F90C(*(int *)(iVar1 + 0x14),param_3 + 1,param_3,param_4 + 1,param_4); - uVar2 = 1; - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -void proc_7F050DE8(int param_1) - -{ - ushort **ppuVar1; - int iVar2; - uint *puVar4; - longlong lVar3; - ushort uVar5; - ushort *partdesc; - ushort *puVar6; - - ppuVar1 = *(ushort ***)(param_1 + 8); - partdesc = *ppuVar1; - if (partdesc != NULL) { - uVar5 = *partdesc; - while( true ) { - uVar5 &= 0xff; - if (uVar5 == 8) { - proc_7F06E970(param_1,partdesc); - puVar6 = *(ushort **)(partdesc + 10); - } - else { - if (uVar5 == 0x12) { - process_12_handle_switch(param_1,partdesc); - puVar6 = *(ushort **)(partdesc + 10); - } - else { - if (uVar5 == 0x17) { - process_17_pointer_to_head(param_1,partdesc); - puVar6 = *(ushort **)(partdesc + 10); - } - else { - if (uVar5 == 0x18) { - iVar2 = *(int *)(partdesc + 2); - puVar4 = (uint *)extract_id_from_object_structure_microcode(param_1,partdesc); - if ((*(uint *)(iVar2 + 8) != *puVar4) && - (lVar3 = proc_7F04B590((int)ppuVar1,(int)partdesc), lVar3 != 0)) { - proc_7F09C044(*puVar4); - *puVar4 = *(uint *)(iVar2 + 8); - } - puVar6 = *(ushort **)(partdesc + 10); - } - else { - puVar6 = *(ushort **)(partdesc + 10); - } - } - } - } - if ((puVar6 == NULL) && (puVar6 = partdesc, partdesc != NULL)) { - puVar6 = *(ushort **)(partdesc + 6); - while ((puVar6 == NULL && - (partdesc = *(ushort **)(partdesc + 4), puVar6 = partdesc, partdesc != NULL))) { - puVar6 = *(ushort **)(partdesc + 6); - } - } - if (puVar6 == NULL) break; - uVar5 = *puVar6; - partdesc = puVar6; - } - } - return; -} - - - -undefined * -proc_7F050F50(ushort *param_1,int param_2,ushort **param_3,undefined *param_4,uint param_5) - -{ - undefined *puVar1; - f32 scale; - - puVar1 = init_standard_object((int)param_1,param_3,param_4,param_5); - if ((puVar1 != NULL) && (*(int *)(param_1 + 10) != 0)) { - set_obj_instance_controller_scale(*(int *)(param_1 + 10),scale); - *(undefined4 *)(*(int *)(param_1 + 10) + 0x18) = *(undefined4 *)(param_2 + 0x1c); - *(undefined4 *)(*(int *)(param_1 + 10) + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(*(int *)(param_2 + 0x1c) + 8) + 8) + 0x18); - proc_7F03A5A4((int)puVar1,*(int *)(param_2 + 0x18)); - *(undefined **)(param_2 + 0x1d8) = puVar1; - } - return puVar1; -} - - - -undefined * proc_7F051028(ushort *param_1,int param_2) - -{ - ushort uVar1; - undefined *puVar2; - - uVar1 = param_1[2]; - load_model((int)(short)uVar1); - puVar2 = proc_7F050F50(param_1,param_2,(ushort **)PitemZ_entries[(int)(short)uVar1].header,NULL,0) - ; - return puVar2; -} - - - -undefined * proc_7F051084(ushort *param_1,int param_2) - -{ - undefined *puVar1; - - *(float *)(param_1 + 0x3a) = (float)*(int *)(param_1 + 0x3a) / 65536.00000000; - puVar1 = proc_7F051028(param_1,param_2); - return puVar1; -} - - - -undefined * proc_7F0510C0(undefined2 *param_1,int param_2,uint param_3) - -{ - dword *pdVar1; - object_standard *poVar2; - dword *pdVar3; - dword *pdVar4; - dword *pdVar5; - int *ptrobjinstance; - dword *pdVar6; - dword adStack144 [30]; - dword adStack24 [5]; - PitemZ_header *pPStack4; - - pPStack4 = PitemZ_entries[param_2].header; - load_model(param_2); - poVar2 = remove_last_obj_pos_data_entry(); - ptrobjinstance = (int *)get_obj_instance_controller_for_header(pPStack4); - pdVar3 = (dword *)proc_7F0515B0((ulonglong)(poVar2 == NULL),(ulonglong)(ptrobjinstance == NULL), - (int)pPStack4); - if (poVar2 == NULL) { - poVar2 = remove_last_obj_pos_data_entry(); - } - if (ptrobjinstance == NULL) { - ptrobjinstance = (int *)get_obj_instance_controller_for_header(pPStack4); - } - if (((pdVar3 == NULL) || (poVar2 == NULL)) || (ptrobjinstance == NULL)) { - if (ptrobjinstance != NULL) { - set_obj_instance_scale_to_zero(ptrobjinstance); - } - if (poVar2 != NULL) { - set_last_obj_pos_data(poVar2); - poVar2 = NULL; - } - } - else { - pdVar5 = blank_11_object; - pdVar1 = adStack144; - do { - pdVar4 = pdVar1; - pdVar6 = pdVar5; - *pdVar4 = *pdVar6; - pdVar4[1] = pdVar6[1]; - pdVar4[2] = pdVar6[2]; - pdVar5 = pdVar6 + 3; - pdVar1 = pdVar4 + 3; - } while (pdVar6 + 3 != &DWORD_8003218c); - pdVar4[3] = DWORD_8003218c; - pdVar4[4] = pdVar6[4]; - pdVar5 = adStack144; - pdVar1 = pdVar3; - do { - pdVar6 = pdVar1; - pdVar4 = pdVar5; - pdVar5 = pdVar4 + 3; - *pdVar6 = *pdVar4; - pdVar6[1] = pdVar4[1]; - pdVar6[2] = pdVar4[2]; - pdVar1 = pdVar6 + 3; - } while (pdVar5 != adStack24); - pdVar6[3] = *pdVar5; - pdVar6[4] = pdVar4[4]; - *(short *)(pdVar3 + 1) = (short)param_2; - pdVar3[2] = param_3 | 0x4000; - *(undefined2 *)((int)pdVar3 + 6) = *param_1; - poVar2 = (object_standard *) - proc_7F050F50((ushort *)pdVar3,(int)param_1,(ushort **)pPStack4,(undefined *)poVar2, - (uint)ptrobjinstance); - } - return (undefined *)poVar2; -} - - - -int proc_7F05126C(int param_1,longlong param_2,int param_3) - -{ - int iVar1; - char cVar4; - ulonglong uVar2; - undefined *puVar3; - int iVar5; - int iVar6; - int iVar7; - int iVar8; - int iVar9; - int iStack20; - undefined *puStack16; - undefined *apuStack12 [2]; - int iStack4; - - apuStack12[0] = NULL; - puStack16 = NULL; - iStack20 = -1; - iVar7 = -1; - iVar9 = -1; - iVar5 = dword_80030AF8; - do { - iVar1 = iVar5 * 0x88; - iVar8 = (&DAT_80071e90)[iVar5 * 0x22]; - if (iVar8 == 0) { - if (param_1 == 0) { - iVar8 = iVar5; - if (param_2 == 0) break; - iVar5 += 1; - } - else { - iVar5 += 1; - } - } - else { - if ((*(uint *)(&DAT_80071ee4 + iVar1) & 0x80) == 0) { - if (((&DAT_80071e82)[iVar1] & 4) == 0) { - if (*(short *)(&DAT_80071f02 + iVar1) < 1) { - if (*(int *)(iVar8 + 0x1c) != 0) { - cVar4 = (&DAT_80071f00)[iVar1]; - goto LAB_7f051324; - } -LAB_7f05136c: - iVar6 = iVar5; - if (param_2 == 0) { -LAB_7f0513a8: - if (((*(byte *)(iVar8 + 1) & 2) == 0) && (iVar7 < 0)) { - iVar7 = iVar6; - } - iVar8 = iVar6; - if (-1 < iVar9) { - iVar5 = iVar6 + 1; - goto LAB_7f0513d4; - } - } - else { - iStack4 = iVar5; - uVar2 = proc_7F06C060(*(int *)(&DAT_80071e94 + iVar1),param_3); - iVar6 = iStack4; - iVar8 = iVar9; - if (uVar2 != 0) { - iVar8 = (&DAT_80071e90)[iVar5 * 0x22]; - iVar6 = iStack4; - goto LAB_7f0513a8; - } - } - iVar5 = iVar6 + 1; - iVar9 = iVar8; - } - else { - cVar4 = (&DAT_80071f00)[iVar1]; -LAB_7f051324: - if (((cVar4 == '\x1d') || (cVar4 == '\x1c')) || (cVar4 == '\x1b')) { - if (((*(char **)(iVar8 + 0x1c) == NULL) || - (cVar4 = **(char **)(iVar8 + 0x1c), cVar4 == '\x01')) || - ((cVar4 == '\x02' || (cVar4 == '\x04')))) goto LAB_7f05136c; - iVar5 += 1; - } - else { - iVar5 += 1; - } - } - } - else { - iVar5 += 1; - } - } - else { - iVar5 += 1; - } - } -LAB_7f0513d4: - iVar5 %= 0x1e; - iVar8 = iStack20; - } while (iVar5 != dword_80030AF8); - iStack20 = iVar8; - if (iStack20 < 0) { - puVar3 = (undefined *) - proc_7F056F08(8,(int *)apuStack12,(int *)&puStack16,(longlong)param_1,(int)param_2, - param_3); - if (puVar3 == NULL) { - if (iVar7 < 0) { - if (apuStack12[0] == NULL) { - if (iVar9 < 0) { - if (puStack16 == NULL) { - puVar3 = NULL; - } - else { - puVar3 = puStack16; - if (*(int *)(puStack16 + 0x10) != 0) { - proc_7F041024((int)puStack16,1); - puVar3 = puStack16; - } - } - } - else { - if ((&DAT_80071e90)[iVar9 * 0x22] != 0) { - proc_7F041024((int)(&ProjectileData_start_address + iVar9 * 0x88),1); - } - dword_80030AF8 = (iVar9 + 1) % 0x1e; - puVar3 = &ProjectileData_start_address + iVar9 * 0x88; - } - } - else { - puVar3 = apuStack12[0]; - if (*(int *)(apuStack12[0] + 0x10) != 0) { - proc_7F041024((int)apuStack12[0],1); - puVar3 = apuStack12[0]; - } - } - } - else { - if ((&DAT_80071e90)[iVar7 * 0x22] != 0) { - proc_7F041024((int)(&ProjectileData_start_address + iVar7 * 0x88),1); - } - dword_80030AF8 = (iVar7 + 1) % 0x1e; - puVar3 = &ProjectileData_start_address + iVar7 * 0x88; - } - } - } - else { - dword_80030AF8 = (iStack20 + 1) % 0x1e; - puVar3 = &ProjectileData_start_address + iStack20 * 0x88; - } - return (int)puVar3; -} - - - -int proc_7F051588(void) - -{ - int iVar1; - - iVar1 = proc_7F05126C(0,0,0); - return iVar1; -} - - - -int proc_7F0515B0(longlong param_1,longlong param_2,int param_3) - -{ - byte bVar1; - ulonglong uVar2; - int iVar3; - int iVar4; - int iVar5; - int iVar6; - int iVar7; - int iStack20; - int iStack16; - int aiStack12 [2]; - int iStack4; - - aiStack12[0] = 0; - iStack16 = 0; - iStack20 = -1; - iVar5 = -1; - iVar7 = -1; - iVar3 = dword_80030AFC; - do { - iVar4 = (&DAT_80072e80)[iVar3 * 0x20]; - if (iVar4 == 0) { - if (param_1 == 0) { - iVar4 = iVar3; - if (param_2 == 0) break; - iVar4 = iVar3 + 1; - } - else { - iVar4 = iVar3 + 1; - } - } - else { - if ((*(uint *)(&DAT_80072ed4 + iVar3 * 0x80) & 0x80) == 0) { - if (*(int *)(iVar4 + 0x1c) == 0) { - if (param_2 == 0) { - bVar1 = *(byte *)(iVar4 + 1); - iVar4 = iVar3; -LAB_7f051688: - if (((bVar1 & 2) == 0) && (iVar5 < 0)) { - iVar5 = iVar4; - } - iVar6 = iVar4; - if (-1 < iVar7) { - iVar4 += 1; - goto LAB_7f0516b0; - } - } - else { - iStack4 = iVar3; - uVar2 = proc_7F06C060(*(int *)(&DAT_80072e84 + iVar3 * 0x80),param_3); - param_1 = (longlong)(int)param_1; - iVar4 = iStack4; - iVar6 = iVar7; - if (uVar2 != 0) { - bVar1 = *(byte *)((&DAT_80072e80)[iVar3 * 0x20] + 1); - iVar4 = iStack4; - goto LAB_7f051688; - } - } - iVar4 += 1; - iVar7 = iVar6; - } - else { - iVar4 = iVar3 + 1; - } - } - else { - iVar4 = iVar3 + 1; - } - } -LAB_7f0516b0: - iVar3 = iVar4 % 10; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - iVar4 = iStack20; - } while (iVar3 != dword_80030AFC); - iStack20 = iVar4; - if (iStack20 < 0) { - iVar3 = proc_7F056F08(0x11,aiStack12,&iStack16,param_1,(int)param_2,param_3); - if (iVar3 == 0) { - if (iVar5 < 0) { - if (aiStack12[0] == 0) { - if (iVar7 < 0) { - if (iStack16 == 0) { - iVar3 = 0; - } - else { - iVar3 = iStack16; - if (*(int *)(iStack16 + 0x10) != 0) { - proc_7F041024(iStack16,1); - iVar3 = iStack16; - } - } - } - else { - if ((&DAT_80072e80)[iVar7 * 0x20] != 0) { - proc_7F041024(iVar7 * 0x80 + -0x7ff8d190,1); - } - dword_80030AFC = (iVar7 + 1) % 10; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar7 + 1 == -0x80000000)) { - trap(0x1800); - } - iVar3 = iVar7 * 0x80 + -0x7ff8d190; - } - } - else { - iVar3 = aiStack12[0]; - if (*(int *)(aiStack12[0] + 0x10) != 0) { - proc_7F041024(aiStack12[0],1); - iVar3 = aiStack12[0]; - } - } - } - else { - if ((&DAT_80072e80)[iVar5 * 0x20] != 0) { - proc_7F041024(iVar5 * 0x80 + -0x7ff8d190,1); - } - dword_80030AFC = (iVar5 + 1) % 10; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar5 + 1 == -0x80000000)) { - trap(0x1800); - } - iVar3 = iVar5 * 0x80 + -0x7ff8d190; - } - } - } - else { - dword_80030AFC = (iStack20 + 1) % 10; - if (false) { - trap(0x1c00); - } - if ((false) && (iStack20 + 1 == -0x80000000)) { - trap(0x1800); - } - iVar3 = iStack20 * 0x80 + -0x7ff8d190; - } - return iVar3; -} - - - -int proc_7F0518A8(void) - -{ - int iVar1; - - iVar1 = proc_7F0515B0(0,0,0); - return iVar1; -} - - - -undefined * proc_7F0518D0(void) - -{ - int *piVar1; - int iVar2; - undefined4 *puVar3; - - puVar3 = (undefined4 *)&DAT_80073370; - iVar2 = 0; - do { - piVar1 = puVar3 + 4; - puVar3 = puVar3 + 0x21; - if (*piVar1 == 0) { - return &DAT_80073370 + iVar2; - } - iVar2 += 0x84; - } while (puVar3 < &DAT_80073dc0); - puVar3 = (undefined4 *)&DAT_80073370; - iVar2 = 0; - while (((((puVar3[0x19] & 0x80) != 0 || ((*(byte *)((int)puVar3 + 2) & 4) != 0)) || - (*(int *)(puVar3[4] + 0x1c) != 0)) || ((*(byte *)(puVar3[4] + 1) & 2) != 0))) { - puVar3 = puVar3 + 0x21; - iVar2 += 0x84; - if (&DAT_80073dc0 <= puVar3) { - puVar3 = (undefined4 *)&DAT_80073370; - iVar2 = 0; - while ((((puVar3[0x19] & 0x80) != 0 || ((*(byte *)((int)puVar3 + 2) & 4) != 0)) || - (*(int *)(puVar3[4] + 0x1c) != 0))) { - puVar3 = puVar3 + 0x21; - iVar2 += 0x84; - if (puVar3 == &DAT_80073dc0) { - return NULL; - } - } - proc_7F041024((int)puVar3,1); - return &DAT_80073370 + iVar2; - } - } - proc_7F041024((int)puVar3,1); - return &DAT_80073370 + iVar2; -} - - - -int ** trigger_remote_mine_detonation(void) - -{ - u32 uVar1; - int **ppiVar2; - - uVar1 = get_cur_playernum(); - dword_80030AF4 |= 1 << (uVar1 & 0x1f); - ppiVar2 = play_sfx_a1(ptr_sfx_buf,0xf3,NULL); - return ppiVar2; -} - - - -int check_if_entry_is_collectable(char type,char *objposdata) - -{ - char *objposdata_00; - int iVar1; - - if (*objposdata == '\x04') { - if (type == *(char *)(*(int *)(objposdata + 4) + 0x80)) { - return *(int *)(objposdata + 4); - } - objposdata_00 = *(char **)(objposdata + 0x20); - } - else { - objposdata_00 = *(char **)(objposdata + 0x20); - } - while( true ) { - if (objposdata_00 == NULL) { - return 0; - } - iVar1 = check_if_entry_is_collectable(type,objposdata_00); - if (iVar1 != 0) break; - objposdata_00 = *(char **)(objposdata_00 + 0x24); - } - return iVar1; -} - - - -int check_if_item_deposited(char item) - -{ - char *objposdata; - int iVar1; - - objposdata = (char *)get_ptr_obj_pos_list_current_entry(); - while( true ) { - while( true ) { - if (objposdata == NULL) { - return 0; - } - iVar1 = check_if_entry_is_collectable(item,objposdata); - if (iVar1 != 0) break; - objposdata = *(char **)(objposdata + 0x24); - } - if ((*(uint *)(iVar1 + 100) & 0x80) == 0) break; - objposdata = *(char **)(objposdata + 0x24); - } - return iVar1; -} - - - -void add_obj_to_temp_proxmine_table(undefined4 *objdata) - -{ - float *pfVar1; - float fVar2; - - pfVar1 = (float *)&DAT_80071e00; - fVar2 = DAT_80071e00; - while( true ) { - if (fVar2 == 0.00000000) { - *(undefined4 **)pfVar1 = objdata; - return; - } - pfVar1 = pfVar1 + 1; - if (pfVar1 == &gas_damage_flag) break; - fVar2 = *pfVar1; - } - return; -} - - - -void remove_obj_from_temp_proxmine_table(undefined4 *objdata) - -{ - float *pfVar1; - undefined4 *puVar2; - - pfVar1 = (float *)&DAT_80071e00; - puVar2 = DAT_80071e00; - while( true ) { - if (objdata == puVar2) { - *pfVar1 = 0.00000000; - return; - } - pfVar1 = pfVar1 + 1; - if (pfVar1 == &gas_damage_flag) break; - puVar2 = (undefined4 *)*pfVar1; - } - return; -} - - - -void detonate_proxmine_within_range(float (*xyzpos) [3]) - -{ - float fVar1; - float fVar2; - float *pfVar3; - float fVar4; - float fVar5; - float fVar6; - - fVar1 = flt_800532EC; - pfVar3 = (float *)&DAT_80071e00; - fVar2 = DAT_80071e00; - while( true ) { - if (fVar2 == 0.00000000) { - fVar2 = pfVar3[1]; - } - else { - if (*(short *)((int)fVar2 + 0x82) == 1) { - fVar4 = (*xyzpos)[0] - *(float *)((int)fVar2 + 0x58); - fVar5 = (*xyzpos)[1] - *(float *)((int)fVar2 + 0x5c); - fVar6 = (*xyzpos)[2] - *(float *)((int)fVar2 + 0x60); - if (fVar4 * fVar4 + fVar5 * fVar5 + fVar6 * fVar6 < fVar1) { - *(undefined2 *)((int)fVar2 + 0x82) = 0; - fVar2 = pfVar3[1]; - } - else { - fVar2 = pfVar3[1]; - } - } - else { - fVar2 = pfVar3[1]; - } - } - pfVar3 = pfVar3 + 2; - if (((fVar2 != 0.00000000) && (*(short *)((int)fVar2 + 0x82) == 1)) && - (fVar4 = (*xyzpos)[0] - *(float *)((int)fVar2 + 0x58), - fVar5 = (*xyzpos)[1] - *(float *)((int)fVar2 + 0x5c), - fVar6 = (*xyzpos)[2] - *(float *)((int)fVar2 + 0x60), - fVar4 * fVar4 + fVar5 * fVar5 + fVar6 * fVar6 < fVar1)) { - *(undefined2 *)((int)fVar2 + 0x82) = 0; - } - if (pfVar3 == &gas_damage_flag) break; - fVar2 = *pfVar3; - } - return; -} - - - -void proc_7F051CC8(void) - -{ - int iVar1; - int iVar2; - int iVar3; - float xyz [6]; - - iVar1 = get_numguards(); - iVar3 = 0; - if (0 < iVar1) { - do { - iVar2 = (int)&ptr_guard_data->chrnum + iVar3; - if ((*(int *)(iVar2 + 0x1c) != 0) && ((*(ushort *)(iVar2 + 0x12) & 0x200) != 0)) { - proc_7F028894(iVar2,(float *)(float (*) [3])xyz); - detonate_proxmine_within_range((float (*) [3])xyz); - } - iVar3 += 0x1dc; - } while (iVar3 < iVar1 * 0x1dc); - } - return; -} - - - -void link_objects(int *objdata1,int *objdata2) - -{ - undefined uVar1; - undefined uVar2; - - uVar1 = *(undefined *)(objdata2 + 0x20); - uVar2 = *(undefined *)(objdata1 + 0x20); - *(int **)(objdata1 + 0x21) = objdata2; - *(undefined *)((int)objdata1 + 0x81) = uVar1; - *(int **)(objdata2 + 0x21) = objdata1; - *(undefined *)((int)objdata2 + 0x81) = uVar2; - return; -} - - - -undefined * -complete_object_data_block_return_position_entry - (int *objdata,int *modelheader,int *targetposdata,int controller) - -{ - undefined *puVar1; - - puVar1 = init_standard_object - ((int)objdata,(ushort **)modelheader,(undefined *)targetposdata,controller); - if (puVar1 != NULL) { - *puVar1 = 4; - proc_7F052574((int)puVar1,0); - } - return puVar1; -} - - - -undefined * proc_7F051DD8(int param_1,ushort **param_2) - -{ - undefined *puVar1; - - puVar1 = proc_7F0406F8(param_1,param_2); - if (puVar1 != NULL) { - *puVar1 = 4; - proc_7F052574((int)puVar1,0); - } - return puVar1; -} - - - -undefined8 proc_7F051E1C(int param_1,int param_2) - -{ - bool bVar1; - int iVar2; - uint uVar3; - - bVar1 = *(int *)(param_1 + 8) << 3 < 0; - iVar2 = *(int *)(param_1 + 0x10); - if (iVar2 != 0) { - if (*(int *)(param_1 + 0x14) != 0) { - if (-1 < *(int *)(param_1 + 8) << 2) { - uVar3 = (uint)bVar1; - iVar2 = param_2 + uVar3 * 4; - if (*(int *)(iVar2 + 0x160) != 0) { - return 0; - } - *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x18) = *(undefined4 *)(param_2 + 0x1c); - if (bVar1) { - *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(*(int *)(param_2 + 0x1c) + 8) + 8) + 0x14); - } - else { - *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x1c) = - *(undefined4 *)(*(int *)(*(int *)(*(int *)(param_2 + 0x1c) + 8) + 8) + 0xc); - } - *(undefined4 *)(iVar2 + 0x160) = *(undefined4 *)(param_1 + 0x10); - if ((*(int *)(param_1 + 8) < 0) && - (iVar2 = *(int *)(param_2 + uVar3 * -4 + 0x164), iVar2 != 0)) { - link_objects((int *)param_1,*(int **)(iVar2 + 4)); - } - iVar2 = *(int *)(param_1 + 0x10); - } - proc_7F03A5A4(iVar2,*(int *)(param_2 + 0x18)); - } - } - return 1; -} - - - -undefined * -proc_7F051F30(ushort *param_1,int param_2,ushort **param_3,undefined *param_4,uint param_5) - -{ - undefined *puVar1; - f32 scale; - - puVar1 = complete_object_data_block_return_position_entry - ((int *)param_1,(int *)param_3,(int *)param_4,param_5); - if ((puVar1 != NULL) && (*(int *)(param_1 + 10) != 0)) { - set_obj_instance_controller_scale(*(int *)(param_1 + 10),scale); - proc_7F051E1C((int)param_1,param_2); - } - return puVar1; -} - - - -undefined * proc_7F051FD4(ushort *param_1,int param_2) - -{ - ushort uVar1; - undefined *puVar2; - - uVar1 = param_1[2]; - load_model((int)(short)uVar1); - puVar2 = proc_7F051F30(param_1,param_2,(ushort **)PitemZ_entries[(int)(short)uVar1].header,NULL,0) - ; - return puVar2; -} - - - -undefined * proc_7F052030(ushort *param_1,int param_2) - -{ - undefined *puVar1; - - *(float *)(param_1 + 0x3a) = (float)*(int *)(param_1 + 0x3a) / 65536.00000000; - puVar1 = proc_7F051FD4(param_1,param_2); - return puVar1; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -undefined4 * create_new_item_instance_of_model(int model,int iteminstance) - -{ - object_standard *targetposdata; - int *ptrobjinstance; - int *piVar1; - int *piVar2; - int *piVar3; - int *piVar4; - int *objdata; - object_standard *poVar5; - object_standard *poVar6; - int aiStack152 [33]; - int aiStack20 [2]; - int *local_c; - PitemZ_header *local_4; - - local_4 = PitemZ_entries[model].header; - load_model(model); - targetposdata = remove_last_obj_pos_data_entry(); - local_c = (int *)get_obj_instance_controller_for_header(local_4); - objdata = (int *)proc_7F05126C((uint)(targetposdata == NULL),(ulonglong)(local_c == NULL), - (int)local_4); - if (targetposdata == NULL) { - targetposdata = remove_last_obj_pos_data_entry(); - } - ptrobjinstance = local_c; - if (local_c == NULL) { - ptrobjinstance = (int *)get_obj_instance_controller_for_header(local_4); - } - if (((objdata == NULL) || (targetposdata == NULL)) || (ptrobjinstance == NULL)) { - objdata = NULL; - if (ptrobjinstance != NULL) { - set_obj_instance_scale_to_zero(ptrobjinstance); - } - if (targetposdata != NULL) { - set_last_obj_pos_data(targetposdata); - } - } - else { - poVar5 = &blank_08_object_preset_1; - piVar3 = aiStack152; - do { - poVar6 = (object_standard *)&poVar5->flags2; - piVar1 = piVar3 + 3; - *piVar3 = *(int *)poVar5; - piVar3[1] = *(int *)&poVar5->obj; - piVar3[2] = poVar5->flags; - poVar5 = poVar6; - piVar3 = piVar1; - } while (poVar6 != (object_standard *)&dword_80032218); - *piVar1 = _dword_80032218; - piVar3 = objdata; - piVar1 = aiStack152; - do { - piVar2 = piVar1 + 3; - piVar4 = piVar3 + 3; - *piVar3 = *piVar1; - piVar3[1] = piVar1[1]; - piVar3[2] = piVar1[2]; - piVar3 = piVar4; - piVar1 = piVar2; - } while (piVar2 != aiStack20); - *piVar4 = *piVar2; - *(char *)(objdata + 0x20) = (char)iteminstance; - *(short *)(objdata + 1) = (short)model; - complete_object_data_block_return_position_entry - (objdata,(int *)local_4,(int *)targetposdata,(int)ptrobjinstance); - } - return (undefined4 *)objdata; -} - - - -void set_0x4_in_runtime_flags_for_item_in_guards_hand(int *GUARDdata,int hand) - -{ - int iVar1; - - if (GUARDdata[hand + 0x58] != 0) { - iVar1 = *(int *)(GUARDdata[hand + 0x58] + 4); - *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) | 4; - } - return; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -undefined * -create_held_weapon(undefined2 *param_1,int param_2,undefined param_3,uint param_4, - undefined4 *param_5,ushort **param_6) - -{ - undefined *ret; - object_standard *poVar1; - object_standard *poVar2; - undefined4 *puVar3; - undefined4 *puVar4; - int *ptrobjinstance; - undefined4 *puVar5; - undefined4 *puVar6; - undefined4 auStack144 [33]; - undefined4 auStack12 [3]; - - if (param_6 == NULL) { - param_6 = (ushort **)PitemZ_entries[param_2].header; - load_model(param_2); - } - ret = (undefined *)remove_last_obj_pos_data_entry(); - ptrobjinstance = (int *)get_obj_instance_controller_for_header((PitemZ_header *)param_6); - if (param_5 == NULL) { - param_5 = (undefined4 *) - proc_7F05126C((uint)((object_standard *)ret == NULL), - (ulonglong)(ptrobjinstance == NULL),(int)param_6); - } - if ((object_standard *)ret == NULL) { - ret = (undefined *)remove_last_obj_pos_data_entry(); - } - if (ptrobjinstance == NULL) { - ptrobjinstance = (int *)get_obj_instance_controller_for_header((PitemZ_header *)param_6); - } - if (((param_5 == NULL) || ((object_standard *)ret == NULL)) || (ptrobjinstance == NULL)) { - if (ptrobjinstance != NULL) { - set_obj_instance_scale_to_zero(ptrobjinstance); - } - if ((object_standard *)ret != NULL) { - set_last_obj_pos_data((object_standard *)ret); - ret = NULL; - } - } - else { - poVar1 = &blank_08_object_preset_4001; - puVar5 = auStack144; - do { - poVar2 = (object_standard *)&poVar1->flags2; - puVar3 = puVar5 + 3; - *puVar5 = *(undefined4 *)poVar1; - puVar5[1] = *(undefined4 *)&poVar1->obj; - puVar5[2] = poVar1->flags; - poVar1 = poVar2; - puVar5 = puVar3; - } while (poVar2 != (object_standard *)&dword_800322A0); - *puVar3 = _dword_800322A0; - puVar5 = param_5; - puVar3 = auStack144; - do { - puVar4 = puVar3 + 3; - puVar6 = puVar5 + 3; - *puVar5 = *puVar3; - puVar5[1] = puVar3[1]; - puVar5[2] = puVar3[2]; - puVar5 = puVar6; - puVar3 = puVar4; - } while (puVar4 != auStack12); - *puVar6 = *puVar4; - *(undefined *)(param_5 + 0x20) = param_3; - *(short *)(param_5 + 1) = (short)param_2; - param_5[2] = param_4 | 0x4000; - *(undefined2 *)((int)param_5 + 6) = *param_1; - ret = proc_7F051F30((ushort *)param_5,(int)param_1,param_6,ret,(uint)ptrobjinstance); - } - return ret; -} - - - -undefined * -actor_draws_weapon_with_model(undefined2 *param_1,int param_2,undefined param_3,uint param_4) - -{ - undefined *puVar1; - - puVar1 = create_held_weapon(param_1,param_2,param_3,param_4,NULL,NULL); - return puVar1; -} - - - -void proc_7F0523F8(int param_1,int param_2,int **param_3) - -{ - int iVar1; - uint uVar2; - int iVar3; - int iVar4; - int *piVar5; - undefined8 extraout_a0; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - float **ppfVar6; - float **ppfVar7; - byte bVar8; - float **ppfVar9; - float **ppfVar10; - float afStack152 [18]; - float *apfStack80 [4]; - float *pfStack64; - GUARDdata *pGStack4; - - pGStack4 = *(GUARDdata **)(param_1 + 4); - iVar4 = something_with_weaponpos_of_guarddata_hand(pGStack4,param_2); - if (iVar4 != 0) { - iVar1 = *(int *)(iVar4 + 4); - if ((*(uint *)(iVar1 + 100) & 0x800) == 0) { - if (-1 < *(int *)(iVar1 + 0xc) << 0xc) { - uVar2 = *(uint *)(iVar1 + 0x14); - ppfVar9 = (float **)&dword_800322A4; - ppfVar6 = apfStack80; - do { - ppfVar10 = ppfVar9 + 3; - ppfVar7 = ppfVar6 + 3; - *ppfVar6 = *ppfVar9; - ppfVar6[1] = ppfVar9[1]; - ppfVar6[2] = ppfVar9[2]; - ppfVar9 = ppfVar10; - ppfVar6 = ppfVar7; - } while (ppfVar10 != (float **)0x800322e0); - *ppfVar7 = pfRam800322e0; - iVar3 = pGStack4->MODELdata_pointer; - *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) | 2; - pfStack64 = (float *)proc_7F06C660(iVar3,*(ushort **)(uVar2 + 0x1c),0); - apfStack80[0] = pfStack64; - if (param_2 == 1) { - apfStack80[0] = pfStack64; - proc_7F058688(flt_800532F0,extraout_a0,afStack152); - proc_7F058068(apfStack80[0],afStack152); - apfStack80[0] = afStack152; - } - proc_7F0BD714((int)*(short *)(*(int *)(uVar2 + 8) + 0xe) << 6); - instcalcmatrices(apfStack80,uVar2,extraout_a2_lo,extraout_a3_lo); - if (param_3 == NULL) { - return; - } - if ((*(uint *)(iVar1 + 100) & 0x80) != 0) { - return; - } - piVar5 = proc_7F06B120(*param_3,uVar2); - *param_3 = piVar5; - return; - } - bVar8 = *(byte *)(iVar4 + 1); - } - else { - bVar8 = *(byte *)(iVar4 + 1); - } - *(byte *)(iVar4 + 1) = bVar8 & 0xfd; - } - return; -} - - - -void redirect_object_collectability_routines(void) - -{ - object_standard *in_a0_lo; - - object_collectability_routine(in_a0_lo); - return; -} - - - -void proc_7F052574(int param_1,undefined4 param_2) - -{ - int objinst; - ushort **ppuVar1; - undefined2 *puVar2; - undefined4 *puVar3; - ushort *partdesc; - - objinst = *(int *)(*(int *)(param_1 + 4) + 0x14); - if ((objinst != 0) && (*(item_related **)(*(int *)(objinst + 8) + 4) == &prop_weapon_related)) { - ppuVar1 = *(ushort ***)(*(int *)(objinst + 8) + 8); - partdesc = *ppuVar1; - if (partdesc == NULL) { - partdesc = ppuVar1[2]; - } - else { - puVar2 = (undefined2 *)extract_id_from_object_structure_microcode(objinst,partdesc); - *puVar2 = (short)param_2; - partdesc = *(ushort **)(*(int *)(*(int *)(objinst + 8) + 8) + 8); - } - if (partdesc != NULL) { - puVar3 = (undefined4 *)extract_id_from_object_structure_microcode(objinst,partdesc); - *puVar3 = param_2; - } - } - return; -} - - - -longlong proc_7F052604(int param_1) - -{ - int objinst; - ushort **ppuVar1; - ushort *partdesc; - longlong lVar2; - short *psVar3; - int *piVar4; - - objinst = *(int *)(*(int *)(param_1 + 4) + 0x14); - if (objinst == 0) { - lVar2 = 0; - } - else { - if (*(item_related **)(*(int *)(objinst + 8) + 4) == &prop_weapon_related) { - ppuVar1 = *(ushort ***)(*(int *)(objinst + 8) + 8); - partdesc = *ppuVar1; - if (partdesc == NULL) { - partdesc = ppuVar1[2]; - if (partdesc == NULL) { - lVar2 = 0; - } - else { - piVar4 = (int *)extract_id_from_object_structure_microcode(objinst,partdesc); - lVar2 = (longlong)*piVar4; - } - } - else { - psVar3 = (short *)extract_id_from_object_structure_microcode(objinst,partdesc); - lVar2 = (longlong)*psVar3; - } - } - else { - lVar2 = 0; - } - } - return lVar2; -} - - - -undefined8 get_hat_model(int param_1) - -{ - switch(*(undefined2 *)(*(int *)(param_1 + 4) + 4)) { - case 0xd4: - case 0xd5: - case 0xd6: - return 4; - case 0xd7: - case 0xd8: - return 1; - case 0xd9: - case 0xda: - return 3; - case 0xdb: - return 5; - case 0xdc: - case 0xdd: - case 0xde: - return 0; - case 0xdf: - return 2; - default: - return 0xffffffffffffffff; - } -} - - - -void proc_7F0526EC(int param_1,float *param_2) - -{ - short sVar1; - float *pfVar2; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 uVar3; - ushort uVar4; - float fStack116; - float fStack112; - float fStack108; - float fStack104; - float fStack100; - float fStack96; - float fStack88; - float fStack84; - float fStack80; - float fStack76; - float fStack72; - float fStack68; - float afStack64 [16]; - - sVar1 = *(short *)(param_1 + 0x9a); - if ((sVar1 == 5) || (sVar1 == 9)) { - pfVar2 = (float *)(ptr_2xxxpresets + (int)*(short *)(param_1 + 6) * 0x44); - fStack104 = pfVar2[4] * pfVar2[8] - pfVar2[7] * pfVar2[5]; - fStack100 = pfVar2[5] * pfVar2[6] - pfVar2[8] * pfVar2[3]; - fStack96 = pfVar2[3] * pfVar2[7] - pfVar2[6] * pfVar2[4]; - fStack76 = pfVar2[3] * pfVar2[0xd] + *pfVar2; - fStack72 = pfVar2[4] * pfVar2[0xd] + pfVar2[1]; - fStack68 = pfVar2[5] * pfVar2[0xd] + pfVar2[2]; - if (*(short *)(param_1 + 0x9a) == 9) { - fStack76 = fStack76 + fStack104 * pfVar2[0xc]; - fStack72 = fStack72 + fStack100 * pfVar2[0xc]; - fStack68 = fStack68 + fStack96 * pfVar2[0xc]; - } - else { - if (*(int *)(param_1 + 8) << 2 < 0) { - fStack76 = fStack76 + fStack104 * pfVar2[0xc]; - fStack72 = fStack72 + fStack100 * pfVar2[0xc]; - fStack68 = fStack68 + fStack96 * pfVar2[0xc]; - } - else { - fStack76 = fStack76 + fStack104 * pfVar2[0xb]; - fStack72 = fStack72 + fStack100 * pfVar2[0xb]; - fStack68 = fStack68 + fStack96 * pfVar2[0xb]; - } - } - fStack88 = *(float *)(param_1 + 0x58) - fStack76; - fStack84 = *(float *)(param_1 + 0x5c) - fStack72; - fStack80 = *(float *)(param_1 + 0x60) - fStack68; - proc_7F058020((undefined4 *)(param_1 + 0x18),param_2); - init_something_copy_posdata_to_it((int *)&fStack88,(int *)afStack64); - proc_7F058068(afStack64,param_2); - if (*(short *)(param_1 + 0x9a) == 9) { - if (*(int *)(param_1 + 8) << 2 < 0) { - proc_7F058688(flt_80053324 - (*(float *)(param_1 + 0xb4) * flt_80053324) / 360.00000000, - extraout_a0,afStack64); - } - else { - proc_7F058688((*(float *)(param_1 + 0xb4) * flt_80053328) / 360.00000000,extraout_a0, - afStack64); - } - } - else { - if (*(int *)(param_1 + 8) << 2 < 0) { - proc_7F0585FC(flt_8005332C - (*(float *)(param_1 + 0xb4) * flt_8005332C) / 360.00000000, - extraout_a0,afStack64); - } - else { - proc_7F0585FC((*(float *)(param_1 + 0xb4) * flt_80053330) / 360.00000000,extraout_a0, - afStack64); - } - } - proc_7F058068(afStack64,param_2); - init_something_copy_posdata_to_it((int *)&fStack76,(int *)afStack64); - proc_7F058068(afStack64,param_2); - uVar4 = *(ushort *)(param_1 + 0x98); - uVar3 = extraout_a0_00; - } - else { - if ((sVar1 == 6) || (sVar1 == 7)) { - proc_7F058020((undefined4 *)(param_1 + 0x18),param_2); - proc_7F058998((undefined4 *)(param_1 + 0x58),(int)param_2); - uVar4 = *(ushort *)(param_1 + 0x98); - uVar3 = extraout_a0_01; - } - else { - fStack116 = *(float *)(param_1 + 0xa8) * *(float *)(param_1 + 0xb4) + - *(float *)(param_1 + 0x58); - fStack112 = *(float *)(param_1 + 0xac) * *(float *)(param_1 + 0xb4) + - *(float *)(param_1 + 0x5c); - fStack108 = *(float *)(param_1 + 0xb0) * *(float *)(param_1 + 0xb4) + - *(float *)(param_1 + 0x60); - proc_7F058020((undefined4 *)(param_1 + 0x18),param_2); - proc_7F058998(&fStack116,(int)param_2); - uVar4 = *(ushort *)(param_1 + 0x98); - uVar3 = extraout_a0_02; - } - } - if ((uVar4 & 8) != 0) { - proc_7F058A4C(-1.00000000,uVar3,(int)param_2); - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f052cc8) overlaps instruction at (ram,0x7f052cc4) -// - -void proc_7F052B00(int param_1) - -{ - short sVar1; - undefined4 *puVar2; - undefined4 *puVar3; - float fVar4; - float afStack68 [13]; - float fStack16; - - puVar3 = (undefined4 *)(param_1 + 0xd0); - puVar2 = *(undefined4 **)(*(int *)(**(int **)(*(int *)(param_1 + 0x14) + 8) + 0x14) + 4); - *puVar3 = *puVar2; - *(undefined4 *)(param_1 + 0xd4) = puVar2[1]; - *(undefined4 *)(param_1 + 0xd8) = puVar2[2]; - *(undefined4 *)(param_1 + 0xdc) = puVar2[3]; - *(undefined4 *)(param_1 + 0xe0) = puVar2[4]; - *(undefined4 *)(param_1 + 0xe4) = puVar2[5]; - *(undefined4 *)(param_1 + 0xe8) = puVar2[6]; - if ((*(ushort *)(param_1 + 0x98) & 4) == 0) { - fVar4 = *(float *)(param_1 + 0xb4); - } - else { - if (*(short *)(param_1 + 0x9a) == 4) { - *(float *)(param_1 + 0xe0) = - (float)puVar2[4] + ((float)puVar2[3] - (float)puVar2[4]) * *(float *)(param_1 + 0xb4); - } - else { - *(float *)(param_1 + 0xd4) = - (float)puVar2[1] + ((float)puVar2[2] - (float)puVar2[1]) * *(float *)(param_1 + 0xb4); - } - fVar4 = *(float *)(param_1 + 0xb4); - } - if (*(float *)(param_1 + 0x88) <= fVar4) { - **(undefined4 **)(param_1 + 0x68) = 0; - return; - } - proc_7F0526EC(param_1,afStack68); - proc_7F03F540((longlong)(int)puVar3,(longlong)(int)afStack68, - (float *)(*(uint **)(param_1 + 0x68) + 1),*(uint **)(param_1 + 0x68)); - if (*(short *)(param_1 + 0x9a) == 4) { - fVar4 = proc_7F03E9BC((int)puVar3,(int)afStack68); - *(float *)(*(int *)(param_1 + 0x68) + 0x48) = fVar4 + *(float *)(param_1 + 0x5c); - } - else { - if (*(short *)(param_1 + 0x9a) == 8) { - *(float *)(*(int *)(param_1 + 0x68) + 0x48) = *(float *)(param_1 + 0x5c) - flt_80053334; - } - else { - fVar4 = proc_7F03E9BC((int)puVar3,(int)afStack68); - *(float *)(*(int *)(param_1 + 0x68) + 0x48) = fVar4 + fStack16; - if ((*(ushort *)(param_1 + 0x98) & 1) == 0) { - sVar1 = *(short *)(param_1 + 0x9a); - goto LAB_7f052ca0; - } - *(float *)(*(int *)(param_1 + 0x68) + 0x48) = - *(float *)(*(int *)(param_1 + 0x68) + 0x48) - 1000.00000000; - } - } - sVar1 = *(short *)(param_1 + 0x9a); -LAB_7f052ca0: - if (((sVar1 == 6) && (flt_80053338 * *(float *)(param_1 + 0x84) < *(float *)(param_1 + 0xb4))) || - ((sVar1 == 7 && (flt_8005333C * *(float *)(param_1 + 0x84) < *(float *)(param_1 + 0xb4))))) { - *(float *)(*(int *)(param_1 + 0x68) + 0x44) = - *(float *)(*(int *)(param_1 + 0x68) + 0x48) + 50.00000000; - } - else { - if (sVar1 == 8) { - *(float *)(*(int *)(param_1 + 0x68) + 0x44) = *(float *)(param_1 + 0x5c) + 1000.00000000; - } - else { - fVar4 = proc_7F03EA5C((int)puVar3,(int)afStack68); - *(float *)(*(int *)(param_1 + 0x68) + 0x44) = fVar4 + fStack16; - if ((*(ushort *)(param_1 + 0x98) & 1) != 0) { - *(float *)(*(int *)(param_1 + 0x68) + 0x44) = - *(float *)(*(int *)(param_1 + 0x68) + 0x44) + 1000.00000000; - } - } - } - return; -} - - - -void proc_7F052D8C(int param_1) - -{ - short sVar1; - short sVar2; - ushort *partdesc; - int iVar3; - int iVar4; - int **ppiVar5; - int **ppiVar6; - uint uVar7; - uint uVar8; - undefined4 *puVar9; - undefined4 *puVar10; - undefined4 *puVar11; - int iVar12; - undefined4 *puVar13; - undefined4 *puVar14; - short sVar15; - uint uVar16; - short sVar17; - undefined4 *puVar18; - undefined4 *puVar19; - uint uVar20; - uint uVar21; - int iVar22; - int iVar23; - undefined4 *puVar24; - - if ((*(ushort *)(param_1 + 0x98) & 4) != 0) { - partdesc = *(ushort **)(*(int *)(**(int **)(*(int *)(param_1 + 0x14) + 8) + 0x14) + 0x14); - iVar3 = *(int *)(partdesc + 2); - ppiVar5 = (int **)extract_id_from_object_structure_microcode(*(int *)(param_1 + 0x14),partdesc); - if (*(short *)(param_1 + 0x9a) == 4) { - sVar15 = (short)(int)(*(float *)(param_1 + 0xe0) + 0.50000000); - } - else { - sVar15 = (short)(int)(*(float *)(param_1 + 0xd4) + 0.50000000); - } - ppiVar6 = ppiVar5; - proc_7F0BD6C4((int)*(short *)(iVar3 + 0xc)); - *(int ***)ppiVar5 = ppiVar6; - iVar23 = 0; - iVar4 = (int)*(short *)(iVar3 + 0xc); - if (*(short *)(iVar3 + 0xc) < 0) { - iVar4 += 3; - } - if (0 < iVar4 >> 2) { - do { - uVar7 = 0; - do { - iVar4 = (int)(*ppiVar5 + iVar23 * 4); - uVar20 = uVar7 + 1; - puVar14 = (undefined4 *)(iVar4 + uVar7 * 0x10); - uVar8 = uVar20 & 3; - if (((int)uVar20 < 0) && (uVar8 != 0)) { - uVar8 -= 4; - } - puVar24 = (undefined4 *)(iVar4 + uVar8 * 0x10); - uVar16 = uVar7 + 2 & 3; - if (((int)(uVar7 + 2) < 0) && (uVar16 != 0)) { - uVar16 -= 4; - } - puVar18 = (undefined4 *)(iVar4 + uVar16 * 0x10); - iVar12 = *(int *)(iVar3 + 8) + iVar23 * 0x10; - uVar21 = uVar7 + 3 & 3; - if (((int)(uVar7 + 3) < 0) && (uVar21 != 0)) { - uVar21 -= 4; - } - puVar13 = (undefined4 *)(iVar12 + uVar16 * 0x10); - puVar19 = (undefined4 *)(iVar4 + uVar21 * 0x10); - puVar9 = (undefined4 *)(iVar12 + uVar7 * 0x10); - puVar11 = (undefined4 *)(iVar12 + uVar8 * 0x10); - puVar10 = (undefined4 *)(iVar12 + uVar21 * 0x10); - if (uVar7 == 0) { - *puVar14 = *puVar9; - puVar14[1] = puVar9[1]; - puVar14[2] = puVar9[2]; - puVar14[3] = puVar9[3]; - *puVar24 = *puVar11; - puVar24[1] = puVar11[1]; - puVar24[2] = puVar11[2]; - puVar24[3] = puVar11[3]; - *puVar18 = *puVar13; - puVar18[1] = puVar13[1]; - puVar18[2] = puVar13[2]; - puVar18[3] = puVar13[3]; - *puVar19 = *puVar10; - puVar19[1] = puVar10[1]; - puVar19[2] = puVar10[2]; - puVar19[3] = puVar10[3]; - } - iVar4 = (int)sVar15; - if (*(short *)(param_1 + 0x9a) == 4) { - sVar1 = *(short *)((int)puVar9 + 2); - if (sVar15 <= sVar1) { - sVar2 = *(short *)puVar9; - if (*(short *)puVar11 == sVar2) { - if (*(short *)(puVar11 + 1) != *(short *)(puVar9 + 1)) { - sVar17 = *(short *)puVar13; - goto LAB_7f0530a4; - } - if (*(short *)((int)puVar11 + 2) == sVar1) { - sVar17 = *(short *)puVar13; - goto LAB_7f0530a4; - } - iVar4 = ((int)sVar1 - (int)sVar15) * - ((int)*(short *)(puVar11 + 2) - (int)*(short *)(puVar9 + 2)); - iVar12 = (int)sVar1 - (int)*(short *)((int)puVar11 + 2); - *(short *)(puVar14 + 2) = (short)(iVar4 / iVar12) + *(short *)(puVar9 + 2); - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - iVar4 = ((int)*(short *)((int)puVar9 + 2) - (int)sVar15) * - ((int)*(short *)((int)puVar11 + 10) - (int)*(short *)((int)puVar9 + 10)); - iVar12 = (int)*(short *)((int)puVar9 + 2) - (int)*(short *)((int)puVar11 + 2); - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - *(short *)((int)puVar14 + 10) = - (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); - } - else { - sVar17 = *(short *)puVar13; -LAB_7f0530a4: - iVar12 = (int)sVar1; - if (sVar17 == sVar2) { - if (*(short *)(puVar13 + 1) == *(short *)(puVar9 + 1)) { - if (*(short *)((int)puVar13 + 2) != sVar1) { - iVar22 = (iVar12 - iVar4) * - ((int)*(short *)(puVar13 + 2) - (int)*(short *)(puVar9 + 2)); - iVar12 -= (int)*(short *)((int)puVar13 + 2); - *(short *)(puVar14 + 2) = (short)(iVar22 / iVar12) + *(short *)(puVar9 + 2); - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar22 == -0x80000000)) { - trap(0x1800); - } - iVar4 = ((int)*(short *)((int)puVar9 + 2) - iVar4) * - ((int)*(short *)((int)puVar13 + 10) - - (int)*(short *)((int)puVar9 + 10)); - iVar12 = (int)*(short *)((int)puVar9 + 2) - (int)*(short *)((int)puVar13 + 2); - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - *(short *)((int)puVar14 + 10) = - (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); - goto LAB_7f053268; - } - sVar17 = *(short *)puVar10; - } - else { - sVar17 = *(short *)puVar10; - } - } - else { - sVar17 = *(short *)puVar10; - } - if (((sVar17 == sVar2) && (*(short *)(puVar10 + 1) == *(short *)(puVar9 + 1))) && - (*(short *)((int)puVar10 + 2) != sVar1)) { - iVar22 = (iVar12 - iVar4) * - ((int)*(short *)(puVar10 + 2) - (int)*(short *)(puVar9 + 2)); - iVar12 -= (int)*(short *)((int)puVar10 + 2); - *(short *)(puVar14 + 2) = (short)(iVar22 / iVar12) + *(short *)(puVar9 + 2); - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar22 == -0x80000000)) { - trap(0x1800); - } - iVar4 = ((int)*(short *)((int)puVar9 + 2) - iVar4) * - ((int)*(short *)((int)puVar10 + 10) - (int)*(short *)((int)puVar9 + 10)); - iVar12 = (int)*(short *)((int)puVar9 + 2) - (int)*(short *)((int)puVar10 + 2); - *(short *)((int)puVar14 + 10) = - (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - } - } -LAB_7f053268: - *(short *)((int)puVar14 + 2) = sVar15; - } - } - else { - sVar1 = *(short *)puVar9; - if (sVar1 <= sVar15) { - sVar2 = *(short *)((int)puVar9 + 2); - iVar12 = (int)sVar15; - if (*(short *)((int)puVar11 + 2) == sVar2) { - if (*(short *)(puVar11 + 1) == *(short *)(puVar9 + 1)) { - if (*(short *)puVar11 != sVar1) { - iVar4 = (iVar12 - (int)sVar1) * - ((int)*(short *)(puVar11 + 2) - (int)*(short *)(puVar9 + 2)); - iVar22 = (int)*(short *)puVar11 - (int)sVar1; - *(short *)(puVar14 + 2) = (short)(iVar4 / iVar22) + *(short *)(puVar9 + 2); - if (iVar22 == 0) { - trap(0x1c00); - } - if ((iVar22 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - iVar4 = (iVar12 - (int)*(short *)puVar9) * - ((int)*(short *)((int)puVar11 + 10) - (int)*(short *)((int)puVar9 + 10)) - ; - iVar12 = (int)*(short *)puVar11 - (int)*(short *)puVar9; - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - *(short *)((int)puVar14 + 10) = - (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); - *(short *)puVar14 = sVar15; - goto LAB_7f053538; - } - sVar17 = *(short *)((int)puVar13 + 2); - } - else { - sVar17 = *(short *)((int)puVar13 + 2); - } - } - else { - sVar17 = *(short *)((int)puVar13 + 2); - } - iVar22 = (int)sVar1; - if (sVar17 == sVar2) { - if (*(short *)(puVar13 + 1) == *(short *)(puVar9 + 1)) { - if (*(short *)puVar13 != sVar1) { - iVar4 = (iVar12 - iVar22) * - ((int)*(short *)(puVar13 + 2) - (int)*(short *)(puVar9 + 2)); - iVar22 = (int)*(short *)puVar13 - iVar22; - *(short *)(puVar14 + 2) = (short)(iVar4 / iVar22) + *(short *)(puVar9 + 2); - if (iVar22 == 0) { - trap(0x1c00); - } - if ((iVar22 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - iVar4 = (iVar12 - (int)*(short *)puVar9) * - ((int)*(short *)((int)puVar13 + 10) - (int)*(short *)((int)puVar9 + 10)) - ; - iVar12 = (int)*(short *)puVar13 - (int)*(short *)puVar9; - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - *(short *)((int)puVar14 + 10) = - (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); - *(short *)puVar14 = sVar15; - goto LAB_7f053538; - } - sVar17 = *(short *)((int)puVar10 + 2); - } - else { - sVar17 = *(short *)((int)puVar10 + 2); - } - } - else { - sVar17 = *(short *)((int)puVar10 + 2); - } - if (sVar17 == sVar2) { - if (*(short *)(puVar10 + 1) == *(short *)(puVar9 + 1)) { - if (*(short *)puVar10 == sVar1) { - *(short *)puVar14 = sVar15; - } - else { - iVar12 = (iVar4 - iVar22) * - ((int)*(short *)(puVar10 + 2) - (int)*(short *)(puVar9 + 2)); - iVar22 = (int)*(short *)puVar10 - iVar22; - *(short *)(puVar14 + 2) = (short)(iVar12 / iVar22) + *(short *)(puVar9 + 2); - if (iVar22 == 0) { - trap(0x1c00); - } - if ((iVar22 == -1) && (iVar12 == -0x80000000)) { - trap(0x1800); - } - iVar4 = (iVar4 - (int)*(short *)puVar9) * - ((int)*(short *)((int)puVar10 + 10) - (int)*(short *)((int)puVar9 + 10)) - ; - iVar12 = (int)*(short *)puVar10 - (int)*(short *)puVar9; - *(short *)((int)puVar14 + 10) = - (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); - if (iVar12 == 0) { - trap(0x1c00); - } - if ((iVar12 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - *(short *)puVar14 = sVar15; - } - } - else { - *(short *)puVar14 = sVar15; - } - } - else { - *(short *)puVar14 = sVar15; - } - } - } -LAB_7f053538: - uVar7 = uVar20; - } while (uVar20 != 4); - iVar23 += 4; - iVar4 = (int)*(short *)(iVar3 + 0xc); - if (*(short *)(iVar3 + 0xc) < 0) { - iVar4 += 3; - } - } while (iVar23 < (iVar4 >> 2) << 2); - } - } - return; -} - - - -void proc_7F053598(int param_1) - -{ - if (-1 < *(int *)(param_1 + 0xf0)) { - proc_7F0B9DBC(*(int *)(param_1 + 0xf0),1); - } - return; -} - - - -void proc_7F0535C4(int param_1) - -{ - if (-1 < *(int *)(param_1 + 0xf0)) { - proc_7F0B9DBC(*(int *)(param_1 + 0xf0),0); - } - return; -} - - - -undefined * -initialize_door(int *stdobject,int *xyzpos,int matrix,int *tile,int param_5,int *runtimexyzpos) - -{ - undefined *puVar1; - uint uVar2; - undefined8 extraout_a0; - float fVar3; - int iVar4; - - puVar1 = proc_7F04071C((int)stdobject); - fVar3 = PitemZ_entries[(int)*(short *)(stdobject + 1)].scale; - uVar2 = allocate_bytes_in_bank(0x50,4); - stdobject[0x1a] = uVar2; - proc_7F058020((undefined4 *)matrix,stdobject + 6); - matrix_multiply_A1_by_F12(fVar3,extraout_a0,(float *)(stdobject + 6)); - stdobject[0x2a] = *(int *)param_5; - stdobject[0x2b] = *(int *)(param_5 + 4); - stdobject[0x2c] = *(int *)(param_5 + 8); - if (stdobject[2] < 0) { - stdobject[0x2d] = stdobject[0x21]; - } - else { - stdobject[0x2d] = 0; - } - stdobject[0x2e] = 0; - *(undefined *)(stdobject + 0x2f) = 0; - *(undefined *)((int)stdobject + 0xbd) = 0; - stdobject[0x32] = 0; - if ((*(ushort *)(stdobject + 0x26) & 4) == 0) { - stdobject[0x33] = 0; - } - else { - uVar2 = allocate_bytes_in_bank - ((int)*(short *)(*(int *)(*(int *)(*(int *)(**(int **)(stdobject[5] + 8) + - 0x14) + 0x14) + 4) + 0xc) << 4,4); - stdobject[0x33] = uVar2; - } - stdobject[0x3c] = -1; - stdobject[0x3d] = 0; - stdobject[0x3e] = 0; - *puVar1 = 2; - *(int **)(puVar1 + 4) = stdobject; - *(int *)(puVar1 + 8) = *xyzpos; - *(int *)(puVar1 + 0xc) = xyzpos[1]; - *(int *)(puVar1 + 0x10) = xyzpos[2]; - *(int **)(puVar1 + 0x14) = tile; - stdobject[0x16] = *runtimexyzpos; - stdobject[0x17] = runtimexyzpos[1]; - iVar4 = runtimexyzpos[2]; - stdobject[2] = stdobject[2] | 0x100; - stdobject[0x18] = iVar4; - proc_7F052B00((int)stdobject); - proc_7F052D8C((int)stdobject); - proc_7F0402B4(stdobject[4],(byte *)(stdobject + 0x1f)); - *(undefined *)(stdobject + 0x1e) = *(undefined *)(stdobject + 0x1f); - *(undefined *)((int)stdobject + 0x79) = *(undefined *)((int)stdobject + 0x7d); - *(undefined *)((int)stdobject + 0x7a) = *(undefined *)((int)stdobject + 0x7e); - *(undefined *)((int)stdobject + 0x7b) = *(undefined *)((int)stdobject + 0x7f); - return puVar1; -} - - - -int proc_7F0537B8(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) - -{ - int iVar1; - float fVar2; - float fVar3; - - if (param_1 <= 200.00000000) { - iVar1 = 0x7fff; - } - else { - if (param_5 <= param_1) { - iVar1 = 0; - } - else { - if (param_2 <= param_1) { - iVar1 = (int)(((param_5 - param_1) * flt_80053340) / (param_5 - param_2)); - } - else { - fVar2 = sqrtf(param_1 - 200.00000000); - fVar3 = sqrtf(param_2 - 200.00000000); - iVar1 = 0x7fff - (int)((fVar2 * flt_80053344) / fVar3); - } - } - } - return iVar1; -} - - - -int proc_7F053894(float *param_1,float param_2,float param_3) - -{ - Player *pPVar1; - ulonglong uVar2; - int iVar3; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 uVar4; - undefined4 extraout_a1_hi; - undefined4 extraout_a1_hi_00; - undefined4 uVar5; - float in_a1_lo; - undefined4 extraout_a1_lo; - undefined4 extraout_a1_lo_00; - undefined4 uVar6; - float in_a2_lo; - Player **ppPVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - - uVar2 = get_num_players(); - uVar4 = extraout_a0; - uVar5 = extraout_a1_hi; - uVar6 = extraout_a1_lo; - fVar11 = in_a2_lo; - if (0 < (longlong)uVar2) { - ppPVar7 = &ptr_BONDdata_p1; - fVar11 = in_a2_lo; - pPVar1 = ptr_BONDdata_p1; - while( true ) { - iVar3 = pPVar1->position_data_pointer; - fVar8 = *(float *)(iVar3 + 8) - *param_1; - fVar9 = *(float *)(iVar3 + 0xc) - param_1[1]; - fVar10 = *(float *)(iVar3 + 0x10) - param_1[2]; - fVar8 = sqrtf(fVar8 * fVar8 + fVar9 * fVar9 + fVar10 * fVar10); - ppPVar7 = ppPVar7 + 1; - if (fVar11 <= fVar8) { - fVar8 = fVar11; - } - fVar11 = fVar8; - uVar4 = extraout_a0_00; - uVar5 = extraout_a1_hi_00; - uVar6 = extraout_a1_lo_00; - if (&ptr_BONDdata_p1 + (int)uVar2 <= ppPVar7) break; - pPVar1 = *ppPVar7; - } - } - iVar3 = proc_7F0537B8(fVar11,in_a1_lo,uVar4,CONCAT44(uVar5,uVar6),in_a2_lo); - return iVar3; -} - - - -void proc_7F05396C(int param_1,float *param_2,float param_3,float param_4) - -{ - int iVar1; - float in_a2_lo; - float in_a3_lo; - - iVar1 = proc_7F053894(param_2,in_a2_lo,in_a3_lo); - music_related_36((longlong)param_1,8,iVar1); - return; -} - - - -int proc_7F0539B8(float param_1,undefined8 param_2,undefined8 param_3) - -{ - int iVar1; - - iVar1 = proc_7F0537B8(param_1,flt_80053348,param_2,param_3,6000.00000000); - return iVar1; -} - - - -void proc_7F0539E4(float *param_1) - -{ - float in_f12; - float in_f14; - - proc_7F053894(param_1,in_f12,in_f14); - return; -} - - - -void proc_7F053A10(int param_1,float *param_2) - -{ - float in_f12; - float in_f14; - - proc_7F05396C(param_1,param_2,in_f12,in_f14); - return; -} - - - -void proc_7F053A3C(void) - -{ - bool bVar1; - bool bVar2; - undefined4 in_v0_lo; - ulonglong uVar3; - int iVar4; - int in_a0_lo; - undefined4 uStack12; - - bVar1 = *(int *)(in_a0_lo + 0xf4) != 0; - if (bVar1) { - uVar3 = music_related_26(*(int *)(in_a0_lo + 0xf4)); - in_v0_lo = (undefined4)uVar3; - bVar1 = uVar3 != 0; - } - bVar2 = *(int *)(in_a0_lo + 0xf8) != 0; - if (bVar2) { - uVar3 = music_related_26(*(int *)(in_a0_lo + 0xf8)); - in_v0_lo = (undefined4)uVar3; - bVar2 = uVar3 != 0; - } - if (bVar1) { - iVar4 = *(int *)(in_a0_lo + 0x10); - } - else { - if (!bVar2) { - return; - } - iVar4 = *(int *)(in_a0_lo + 0x10); - } - proc_7F0539E4((float *)(iVar4 + 8)); - iVar4 = get_controls_locked_flag(); - uStack12 = in_v0_lo; - if (iVar4 != 0) { - uStack12 = 0; - } - if (bVar1) { - music_related_36((longlong)*(int *)(in_a0_lo + 0xf4),8,uStack12); - } - if (bVar2) { - music_related_36((longlong)*(int *)(in_a0_lo + 0xf8),8,uStack12); - } - return; -} - - - -void proc_7F053B10(int param_1) - -{ - ulonglong uVar1; - - if ((*(int *)(param_1 + 0xf4) != 0) && - (uVar1 = music_related_26(*(int *)(param_1 + 0xf4)), uVar1 != 0)) { - music_related_28(*(int *)(param_1 + 0xf4)); - } - if ((*(int *)(param_1 + 0xf8) != 0) && - (uVar1 = music_related_26(*(int *)(param_1 + 0xf8)), uVar1 != 0)) { - music_related_28(*(int *)(param_1 + 0xf8)); - } - return; -} - - - -void play_door_opening_soundeffect_0(int param_1) - -{ - int **ppiVar1; - sfxdata *data; - undefined4 uVar2; - int **ppiStack4; - - ppiStack4 = NULL; - proc_7F053B10(param_1); - data = NULL; - if (*(int *)(param_1 + 0xf4) == 0) { - data = (sfxdata *)(param_1 + 0xf4); - } - else { - if (*(int *)(param_1 + 0xf8) != 0) { - uVar2 = *(undefined4 *)(param_1 + 0xa4); - goto LAB_7f053bc8; - } - data = (sfxdata *)(param_1 + 0xf8); - } - uVar2 = *(undefined4 *)(param_1 + 0xa4); -LAB_7f053bc8: - switch(uVar2) { - case 1: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xd3,data); - } - break; - case 2: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,7,data); - } - break; - case 3: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xca,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xcc,data); - } - break; - case 4: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd6,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xd8,data); - } - break; - case 5: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xbc,NULL); - break; - case 6: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,7,NULL); - break; - case 7: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xc0,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xbf,data); - } - break; - case 8: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xbc,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,7,data); - } - break; - case 9: - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xc2,data); - ppiStack4 = NULL; - } - break; - case 10: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xc4,NULL); - break; - case 0xb: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,7,NULL); - break; - case 0xc: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,200,NULL); - break; - case 0xd: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,7,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,7,data); - } - break; - case 0xe: - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xda,data); - ppiStack4 = NULL; - } - break; - case 0xf: - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xe1,data); - ppiStack4 = NULL; - } - break; - case 0x10: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd6,NULL); - break; - case 0x11: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,7,NULL); - if (ppiVar1 != NULL) { - proc_7F053A10((int)ppiVar1,(float *)(*(int *)(param_1 + 0x10) + 8)); - } - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xca,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xcc,data); - } - } - if (ppiStack4 != NULL) { - proc_7F053A10((int)ppiStack4,(float *)(*(int *)(param_1 + 0x10) + 8)); - } - proc_7F053A3C(); - return; -} - - - -void play_door_opening_soundeffect_(int param_1) - -{ - int **ppiVar1; - sfxdata *data; - undefined4 uVar2; - int **ppiStack4; - - ppiStack4 = NULL; - proc_7F053B10(param_1); - data = NULL; - if (*(int *)(param_1 + 0xf4) == 0) { - data = (sfxdata *)(param_1 + 0xf4); - } - else { - if (*(int *)(param_1 + 0xf8) != 0) { - uVar2 = *(undefined4 *)(param_1 + 0xa4); - goto LAB_7f053fb4; - } - data = (sfxdata *)(param_1 + 0xf8); - } - uVar2 = *(undefined4 *)(param_1 + 0xa4); -LAB_7f053fb4: - if (true) { - switch(uVar2) { - case 1: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xd3,data); - } - break; - case 2: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,7,data); - } - break; - case 3: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xca,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xcc,data); - } - break; - case 4: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd6,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xd8,data); - } - break; - case 7: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xc0,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xbf,data); - } - break; - case 8: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xbc,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,7,data); - } - break; - case 9: - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xc2,data); - ppiStack4 = NULL; - } - break; - case 0xd: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,7,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,7,data); - } - break; - case 0xe: - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xda,data); - ppiStack4 = NULL; - } - break; - case 0xf: - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xe1,data); - ppiStack4 = NULL; - } - break; - case 0x10: - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xd6,NULL); - break; - case 0x11: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,7,NULL); - if (ppiVar1 != NULL) { - proc_7F053A10((int)ppiVar1,(float *)(*(int *)(param_1 + 0x10) + 8)); - } - ppiStack4 = play_sfx_a1(ptr_sfx_buf,0xca,NULL); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0xcc,data); - } - } - } - if (ppiStack4 != NULL) { - proc_7F053A10((int)ppiStack4,(float *)(*(int *)(param_1 + 0x10) + 8)); - } - proc_7F053A3C(); - return; -} - - - -void play_door_closing_soundeffect_0(int param_1) - -{ - int **ppiVar1; - - proc_7F053B10(param_1); - ppiVar1 = NULL; - if (true) { - switch(*(undefined4 *)(param_1 + 0xa4)) { - case 1: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - break; - case 2: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - break; - case 3: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xcb,NULL); - break; - case 4: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd7,NULL); - break; - case 7: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - break; - case 8: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xbb,NULL); - break; - case 9: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xc3,NULL); - break; - case 0xd: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,7,NULL); - break; - case 0xe: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xdb,NULL); - break; - case 0xf: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xe2,NULL); - break; - case 0x10: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd7,NULL); - break; - case 0x11: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xcb,NULL); - } - } - if (ppiVar1 != NULL) { - proc_7F053A10((int)ppiVar1,(float *)(*(int *)(param_1 + 0x10) + 8)); - } - proc_7F053A3C(); - return; -} - - - -void play_door_closing_soundeffect_1(int param_1) - -{ - int **ppiVar1; - - proc_7F053B10(param_1); - ppiVar1 = NULL; - switch(*(undefined4 *)(param_1 + 0xa4)) { - case 1: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - break; - case 2: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - break; - case 3: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xcb,NULL); - break; - case 4: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd7,NULL); - break; - case 5: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xbb,NULL); - break; - case 6: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,7,NULL); - break; - case 7: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd2,NULL); - break; - case 8: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xbb,NULL); - break; - case 9: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xc3,NULL); - break; - case 10: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xc5,NULL); - break; - case 0xb: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,199,NULL); - break; - case 0xc: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xc9,NULL); - break; - case 0xd: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,7,NULL); - break; - case 0xe: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xdb,NULL); - break; - case 0xf: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xe2,NULL); - break; - case 0x10: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xd7,NULL); - break; - case 0x11: - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xcb,NULL); - } - if (ppiVar1 != NULL) { - proc_7F053A10((int)ppiVar1,(float *)(*(int *)(param_1 + 0x10) + 8)); - } - proc_7F053A3C(); - return; -} - - - -void set_door_state(int *objdata,DOORSTATE state) - -{ - objdata[2] = objdata[2] & 0x7fffffff; - objdata[0x19] = objdata[0x19] | 0x200; - play_door_opening_soundeffect_0((int)objdata); - proc_7F053598((int)objdata); - if (*(short *)((int)objdata + 0x9a) == 8) { - objdata[2] = objdata[2] | 0x2000000; - objdata[0x22] = 0; - if ((undefined4 *)objdata[0x1a] != NULL) { - *(undefined4 *)objdata[0x1a] = 0; - } - objdata[2] = objdata[2] & 0xfffffeff; - } - return; -} - - - -void proc_7F0547DC(int param_1) - -{ - *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) & 0x7fffffff; - play_door_opening_soundeffect_(param_1); - return; -} - - - -void proc_7F05480C(int param_1) - -{ - play_door_closing_soundeffect_0(param_1); - if ((*(short *)(param_1 + 0x9a) == 8) && - (proc_7F03FDA8(*(int *)(param_1 + 0x10)), (*(uint *)(param_1 + 100) & 0x80) != 0)) { - **(uint **)(param_1 + 0x6c) = **(uint **)(param_1 + 0x6c) | 1; - proc_7F057FD0((undefined4 *)(*(int *)(param_1 + 0x6c) + 0x20)); - } - return; -} - - - -void proc_7F05487C(int param_1) - -{ - play_door_closing_soundeffect_1(param_1); - proc_7F0535C4(param_1); - return; -} - - - -void proc_7F0548A4(int param_1,int param_2) - -{ - char cVar1; - undefined uVar2; - - uVar2 = (undefined)param_2; - if (param_2 == 1) { - if ((*(char *)(param_1 + 0xbc) == '\0') || (*(char *)(param_1 + 0xbc) == '\x03')) { - set_door_state((int *)param_1,OPEN); - } - *(undefined *)(param_1 + 0xbc) = uVar2; - } - else { - if (param_2 == 2) { - cVar1 = *(char *)(param_1 + 0xbc); - if ((cVar1 == '\0') && (0.00000000 < *(float *)(param_1 + 0xb4))) { - proc_7F0547DC(param_1); - cVar1 = *(char *)(param_1 + 0xbc); - } - if (((cVar1 != '\0') && (cVar1 != '\x03')) || (0.00000000 < *(float *)(param_1 + 0xb4))) { - *(undefined *)(param_1 + 0xbc) = uVar2; - } - else { - if (cVar1 == '\x03') { - *(undefined *)(param_1 + 0xbc) = 0; - } - } - } - else { - *(undefined *)(param_1 + 0xbc) = uVar2; - } - } - return; -} - - - -void proc_7F054988(int param_1,longlong param_2) - -{ - int iVar1; - int iVar2; - - iVar1 = (int)param_2; - iVar2 = iVar1; - if (((*(int *)(param_1 + 0xc) << 1 < 0) && (iVar2 = iVar1, param_2 == 1)) && - (iVar2 = 2, *(char *)(param_1 + 0xbc) == '\0')) { - iVar1 = 3; - } - proc_7F0548A4(param_1,iVar1); - iVar1 = *(int *)(param_1 + 200); - while ((iVar1 != 0 && (iVar1 != param_1))) { - proc_7F0548A4(iVar1,iVar2); - iVar1 = *(int *)(iVar1 + 200); - } - return; -} - - - -ulonglong proc_7F054A20(int param_1) - -{ - char cVar1; - ulonglong uVar2; - - cVar1 = *(char *)(param_1 + 0xbc); - if (((cVar1 == '\0') || (uVar2 = (ulonglong)(cVar1 == '\x03'), cVar1 == '\x03')) && - (uVar2 = 0, *(float *)(param_1 + 0xb4) <= 0.00000000)) { - uVar2 = 1; - } - return uVar2; -} - - - -longlong proc_7F054A64(char *param_1,float *param_2) - -{ - bool bVar1; - longlong lVar2; - longlong lVar3; - uint *puVar4; - float fVar5; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - uint auStack32 [8]; - - puVar4 = auStack32; - lVar3 = 0; - proc_7F03CB8C(param_1,puVar4); - do { - if ((int)auStack32[0] < 0) { - return lVar3; - } - lVar2 = proc_7F0B3C0C(auStack32[0],(int *)&fStack60); - bVar1 = lVar3 == 0; - if (lVar2 == 0) { -LAB_7f054b50: - auStack32[0] = puVar4[1]; - } - else { - lVar3 = 1; - if (bVar1) { - *param_2 = fStack60; - param_2[1] = fStack56; - param_2[2] = fStack52; - param_2[3] = fStack48; - goto LAB_7f054b50; - } - if (fStack60 < *param_2) { - *param_2 = fStack60; - } - if (fStack56 < param_2[1]) { - param_2[1] = fStack56; - fVar5 = param_2[2]; - } - else { - fVar5 = param_2[2]; - } - if (fVar5 < fStack52) { - param_2[2] = fStack52; - fVar5 = param_2[3]; - } - else { - fVar5 = param_2[3]; - } - if (fVar5 < fStack48) { - param_2[3] = fStack48; - goto LAB_7f054b50; - } - auStack32[0] = puVar4[1]; - } - puVar4 = puVar4 + 1; - } while( true ); -} - - - -int proc_7F054B80(int param_1) - -{ - int iVar1; - - iVar1 = return_nearfog_values(); - if ((iVar1 != 0) && (*(float *)(iVar1 + 8) < *(float *)(param_1 + 0x18))) { - getPlayer_c_lodscalez(); - } - return iVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 proc_7F054C58(void) - -{ - int iVar1; - xyzpoint *pxVar2; - float *pfVar3; - float *in_a0_lo; - float in_a1_lo; - f32 fVar4; - float fVar5; - undefined4 uStack4; - - uStack4 = 1; - iVar1 = return_nearfog_values(); - if (iVar1 != 0) { - pxVar2 = get_BONDdata_position(); - pfVar3 = (float *)proc_7F0783C4(); - fVar5 = pfVar3[2] * (in_a0_lo[2] - pxVar2->z) + - (*in_a0_lo - pxVar2->x) * *pfVar3 + (in_a0_lo[1] - pxVar2->y) * pfVar3[1]; - if ((*(float *)(iVar1 + 8) < fVar5) && - (fVar4 = getPlayer_c_lodscalez(), - *(float *)(iVar1 + 4) <= - (((fVar5 - *(float *)(iVar1 + 8)) * 100.00000000) / in_a1_lo + *(float *)(iVar1 + 8)) * - (float)fVar4)) { - uStack4 = 0; - } - } - return uStack4; -} - - - -// WARNING: Instruction at (ram,0x7f054ddc) overlaps instruction at (ram,0x7f054dd8) -// - -uint proc_7F054D6C(char *param_1,float *param_2,float param_3,int param_4) - -{ - ulonglong uVar1; - longlong lVar2; - xyzpoint *pxVar3; - int in_a3_lo; - uint *puVar4; - float fVar5; - float fVar6; - float extraout_f12; - float extraout_f12_00; - float fVar7; - float afStack60 [4]; - uint uStack44; - uint auStack32 [8]; - - uStack44 = 0; - proc_7F03CB8C(param_1,auStack32); - puVar4 = auStack32; - while( true ) { - if ((int)auStack32[0] < 0) { - return uStack44; - } - uVar1 = proc_7F0B5E50(auStack32[0]); - if (uVar1 != 0) break; - auStack32[0] = puVar4[1]; - puVar4 = puVar4 + 1; - } - lVar2 = proc_7F0BB2C8(param_2,extraout_f12); - if (lVar2 == 0) { - return uStack44; - } - if ((in_a3_lo != 0) && (lVar2 = proc_7F054C58(), lVar2 == 0)) { - return uStack44; - } - lVar2 = proc_7F054A64(param_1,afStack60); - if (lVar2 == 0) { - lVar2 = proc_7F078A58(param_2,extraout_f12_00); - uStack44 = (uint)lVar2; - } - else { - lVar2 = proc_7F078BF4(param_2,extraout_f12_00,(float *)param_4); - uStack44 = (uint)lVar2; - } - if (lVar2 == 0) { - return uStack44; - } - pxVar3 = get_BONDdata_position(); - fVar5 = *param_2 - pxVar3->x; - fVar6 = param_2[1] - pxVar3->y; - fVar7 = param_2[2] - pxVar3->z; - if (fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7 <= flt_8005345C) { - return uStack44; - } - return 0; -} - - - -undefined8 proc_7F054EA8(int param_1) - -{ - undefined8 uVar1; - float in_f12; - float in_f14; - - uVar1 = 0; - if (*(char *)(param_1 + 0xbc) == '\x01') { - proc_7F042F18((float *)(param_1 + 0xb4),in_f12,*(float **)(param_1 + 0x84),in_f14, - (float)(param_1 + 0xb8),*(float *)(param_1 + 0x8c)); - uVar1 = 1; - if (*(float *)(param_1 + 0x84) <= *(float *)(param_1 + 0xb4)) { - *(float *)(param_1 + 0xb4) = *(float *)(param_1 + 0x84); - } - else { - if (*(float *)(param_1 + 0xb4) <= 0.00000000) { - *(undefined4 *)(param_1 + 0xb4) = 0; - } - uVar1 = 1; - } - } - else { - if (*(char *)(param_1 + 0xbc) == '\x02') { - proc_7F042F18((float *)(param_1 + 0xb4),0.00000000,NULL,in_f14,(float)(param_1 + 0xb8), - *(float *)(param_1 + 0x8c)); - uVar1 = 1; - if (*(float *)(param_1 + 0x84) <= *(float *)(param_1 + 0xb4)) { - *(float *)(param_1 + 0xb4) = *(float *)(param_1 + 0x84); - } - else { - if (*(float *)(param_1 + 0xb4) <= 0.00000000) { - *(undefined4 *)(param_1 + 0xb4) = 0; - } - } - } - } - return uVar1; -} - - - -void proc_7F054FB4(int param_1) - -{ - ushort *partdesc; - bool bVar1; - longlong lVar2; - int *piVar3; - int iVar4; - int iVar5; - undefined4 *puVar6; - int iVar7; - undefined4 *puVar8; - int iVar9; - longlong lVar10; - undefined4 uVar11; - - bVar1 = false; - lVar10 = 1; - if (param_1 != 0) { - uVar11 = *(undefined4 *)(param_1 + 0xb4); - iVar9 = param_1; - while( true ) { - *(undefined4 *)(iVar9 + 0xfc) = uVar11; - lVar2 = proc_7F054EA8(iVar9); - if (lVar2 == 0) { - iVar9 = *(int *)(iVar9 + 200); - } - else { - bVar1 = true; - iVar9 = *(int *)(iVar9 + 200); - } - if ((iVar9 == param_1) || (iVar9 == 0)) break; - uVar11 = *(undefined4 *)(iVar9 + 0xb4); - } - } - if ((bVar1) && (iVar9 = param_1, param_1 != 0)) { - while( true ) { - proc_7F052B00(iVar9); - lVar10 = proc_7F0448A8(); - if (lVar10 == 0) break; - iVar9 = *(int *)(iVar9 + 200); - if ((iVar9 == param_1) || (iVar9 == 0)) break; - } - } - iVar9 = param_1; - if (param_1 != 0) { - do { - if (bVar1) { - if (lVar10 == 0) { - *(undefined4 *)(iVar9 + 0xb8) = 0; - *(undefined4 *)(iVar9 + 0xb4) = *(undefined4 *)(iVar9 + 0xfc); - proc_7F052B00(iVar9); - } - else { - if (*(char *)(iVar9 + 0xbc) == '\x01') { - if (*(float *)(iVar9 + 0x84) <= *(float *)(iVar9 + 0xb4)) { - *(undefined *)(iVar9 + 0xbc) = 0; - *(undefined4 *)(iVar9 + 0xb8) = 0; - *(undefined4 *)(iVar9 + 0xec) = global_timer; - proc_7F05480C(iVar9); - iVar5 = *(int *)(iVar9 + 0x10); - } - else { - iVar5 = *(int *)(iVar9 + 0x10); - } - } - else { - if (*(char *)(iVar9 + 0xbc) == '\x02') { - if (*(float *)(iVar9 + 0xb4) <= 0.00000000) { - *(undefined *)(iVar9 + 0xbc) = 0; - *(undefined4 *)(iVar9 + 0xb8) = 0; - *(undefined4 *)(iVar9 + 0xec) = 0; - proc_7F05487C(iVar9); - iVar5 = *(int *)(iVar9 + 0x10); - } - else { - iVar5 = *(int *)(iVar9 + 0x10); - } - } - else { - iVar5 = *(int *)(iVar9 + 0x10); - } - } - proc_7F0402B4(iVar5,(byte *)(iVar9 + 0x7c)); - } - proc_7F052D8C(iVar9); - } - else { - if ((*(ushort *)(iVar9 + 0x98) & 4) != 0) { - partdesc = *(ushort **)(*(int *)(**(int **)(*(int *)(iVar9 + 0x14) + 8) + 0x14) + 0x14); - iVar5 = *(int *)(partdesc + 2); - piVar3 = (int *)extract_id_from_object_structure_microcode - (*(int *)(iVar9 + 0x14),partdesc); - iVar7 = *(int *)(iVar9 + 0xcc); - if (iVar7 == *piVar3) { - *piVar3 = iVar7; - } - else { - lVar2 = 0; - if (*(short *)(iVar5 + 0xc) < 1) { - *piVar3 = iVar7; - } - else { - iVar4 = 0; - iVar7 = *piVar3; - while( true ) { - lVar2 = (longlong)((int)lVar2 + 1); - puVar8 = (undefined4 *)(iVar7 + iVar4); - puVar6 = (undefined4 *)(*(int *)(iVar9 + 0xcc) + iVar4); - iVar4 += 0x10; - *puVar6 = *puVar8; - puVar6[1] = puVar8[1]; - puVar6[2] = puVar8[2]; - puVar6[3] = puVar8[3]; - if ((longlong)*(short *)(iVar5 + 0xc) <= lVar2) break; - iVar7 = *piVar3; - } - *piVar3 = *(int *)(iVar9 + 0xcc); - } - } - } - } - *(undefined4 *)(iVar9 + 0xfc) = global_timer; - iVar9 = *(int *)(iVar9 + 200); - } while ((iVar9 != param_1) && (iVar9 != 0)); - } - return; -} - - - -void proc_7F05522C(int param_1,float *param_2,float *param_3,int param_4) - -{ - short sVar1; - int iVar2; - float *pfVar3; - float __x; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fStack44; - float fStack36; - float fStack28; - - pfVar3 = (float *)(ptr_2xxxpresets + (int)*(short *)(param_1 + 6) * 0x44); - iVar2 = get_curplayer_positiondata(); - fVar6 = (float)pPlayer->field_498 * 30.00000000 * 1.00000000 * 0.75000000 + *(float *)(iVar2 + 8); - fVar5 = (float)pPlayer->field_4A0 * 30.00000000 * 1.00000000 * 0.75000000 + - *(float *)(iVar2 + 0x10); - if (param_4 == 0) { - fStack44 = pfVar3[0xe]; - fVar8 = pfVar3[0xd]; - fStack36 = pfVar3[3]; - fStack28 = pfVar3[5]; - } - else { - fStack44 = pfVar3[0xc]; - fVar8 = pfVar3[0xb]; - fStack36 = pfVar3[4] * pfVar3[8] - pfVar3[7] * pfVar3[5]; - fStack28 = pfVar3[3] * pfVar3[7] - pfVar3[6] * pfVar3[4]; - } - __x = convert_angle_using_inverse - ((f32)((*pfVar3 + fStack36 * fVar8) - fVar6), - (f32)((pfVar3[2] + fStack28 * fVar8) - fVar5)); - fVar4 = get_curplay_horizontal_rotation_in_degrees(); - fVar7 = __x - fVar4; - if (__x < fVar4) { - fVar7 = fVar7 + flt_80053460; - } - if (flt_80053468 < fVar7) { - fVar7 = fVar7 - flt_80053464; - sVar1 = *(short *)(param_1 + 0x9a); - } - else { - sVar1 = *(short *)(param_1 + 0x9a); - } - if (sVar1 == 5) { - __x = (*(float *)(param_1 + 0xb4) * flt_80053464) / 360.00000000; - if (*(int *)(param_1 + 8) << 2 < 0) { - __x = flt_80053464 - __x; - } - fVar4 = cosf(__x); - __x = sinf(__x); - fVar5 = convert_angle_using_inverse - ((f32)((*pfVar3 + fStack36 * fVar8 + - (fStack44 - fVar8) * (fStack36 * fVar4 + fStack28 * __x)) - fVar6), - (f32)((pfVar3[2] + fStack28 * fVar8 + - (fStack44 - fVar8) * (-fStack36 * __x + fStack28 * fVar4)) - fVar5)); - fVar6 = get_curplay_horizontal_rotation_in_degrees(); - fVar8 = fVar5 - fVar6; - if (fVar5 < fVar6) { - fVar8 = fVar8 + flt_8005346C; - } - if (flt_80053470 < fVar8) { - fVar8 = fVar8 - flt_80053474; - } - } - else { - fVar5 = convert_angle_using_inverse - ((f32)((*pfVar3 + fStack36 * fStack44) - fVar6), - (f32)((pfVar3[2] + fStack28 * fStack44) - fVar5)); - fVar6 = get_curplay_horizontal_rotation_in_degrees(); - fVar8 = fVar5 - fVar6; - if (fVar5 < fVar6) { - fVar8 = fVar8 + flt_80053478; - } - if (flt_8005347C < fVar8) { - fVar8 = fVar8 - flt_80053480; - } - } - if (fVar7 < fVar8) { - *param_2 = fVar7; - *param_3 = fVar8; - } - else { - *param_2 = fVar8; - *param_3 = fVar7; - } - return; -} - - - -undefined4 proc_7F0555F8(int param_1,int param_2) - -{ - int iVar1; - float fStack28; - float afStack24 [3]; - float fStack12; - float fStack8; - undefined4 uStack4; - - uStack4 = 1; - if (DAT_80071df8 == 0) { - proc_7F05522C(param_1,&fStack8,&fStack12,param_2); - if (-flt_80053484 <= fStack8) { - if (fStack8 <= flt_80053484) { - if (-flt_80053484 <= fStack12) { - if (fStack12 <= flt_80053484) { - DAT_80071df8 = *(undefined4 *)(param_1 + 0x10); - return 0; - } - iVar1 = *(int *)(param_1 + 200); - } - else { - iVar1 = *(int *)(param_1 + 200); - } - } - else { - iVar1 = *(int *)(param_1 + 200); - } - } - else { - iVar1 = *(int *)(param_1 + 200); - } - if ((iVar1 != 0) && (iVar1 != param_1)) { - while ((0.00000000 <= fStack8 || (fStack12 < 0.00000000))) { - proc_7F05522C(iVar1,afStack24,&fStack28,param_2); - if ((0.00000000 < fStack8) && (afStack24[0] < fStack8)) { - fStack8 = afStack24[0]; - } - if (fStack12 < 0.00000000) { - if (fStack12 < fStack28) { - fStack12 = fStack28; - iVar1 = *(int *)(iVar1 + 200); - } - else { - iVar1 = *(int *)(iVar1 + 200); - } - } - else { - iVar1 = *(int *)(iVar1 + 200); - } - if ((iVar1 == 0) || (iVar1 == param_1)) break; - } - } - if ((fStack12 - fStack8 < flt_80053488) && ((fStack8 < 0.00000000 && (0.00000000 < fStack12)))) - { - DAT_80071df8 = *(int *)(param_1 + 0x10); - uStack4 = 0; - } - } - return uStack4; -} - - - -int proc_7F055804(char *param_1) - -{ - int iVar1; - longlong lVar2; - float fVar3; - float fVar4; - float fVar5; - float extraout_f12; - uint auStack96 [8]; - uint auStack64 [12]; - char *pcStack16; - int iStack12; - int iStack4; - - iStack4 = 1; - iVar1 = *(int *)(param_1 + 4); - if (((-1 < *(int *)(iVar1 + 8) << 6) && (0.00000000 < *(float *)(iVar1 + 0x84))) && - ((param_1[1] & 2U) != 0)) { - iStack12 = 0; - pcStack16 = (char *)get_curplayer_positiondata(); - fVar3 = *(float *)(iVar1 + 0x58) - *(float *)(pcStack16 + 8); - fVar4 = *(float *)(iVar1 + 0x60) - *(float *)(pcStack16 + 0x10); - fVar5 = *(float *)(iVar1 + 0x5c) - *(float *)(pcStack16 + 0xc); - if (((flt_8005348C <= fVar3 * fVar3 + fVar4 * fVar4) || (200.00000000 <= fVar5)) || - (fVar5 <= -200.00000000)) { - proc_7F03CB8C(param_1,auStack64); - proc_7F03CB8C(pcStack16,auStack96); - lVar2 = proc_7F03DB70((int *)auStack64,(int *)auStack96); - if ((lVar2 != 0) && - (lVar2 = proc_7F03F598((float *)(pcStack16 + 8),extraout_f12,(float *)0x43160000), - lVar2 != 0)) { - iStack12 = 1; - } - } - else { - iStack12 = 1; - } - if (((iStack12 != 0) && (iStack4 = proc_7F0555F8(iVar1,0), iStack4 != 0)) && - (*(int *)(iVar1 + 0xc) < 0)) { - iStack4 = proc_7F0555F8(iVar1,1); - } - } - return iStack4; -} - - - -void proc_7F05599C(int param_1) - -{ - char cVar1; - int iVar2; - uint uVar3; - - iVar2 = *(int *)(param_1 + 4); - cVar1 = *(char *)(iVar2 + 0xbc); - if ((cVar1 == '\x01') || (cVar1 == '\x03')) { - proc_7F054988(iVar2,2); - uVar3 = *(uint *)(iVar2 + 100); - } - else { - if (cVar1 == '\x02') { - proc_7F054988(iVar2,1); - uVar3 = *(uint *)(iVar2 + 100); - } - else { - if (cVar1 == '\0') { - if (0.50000000 < *(float *)(iVar2 + 0xb4)) { - proc_7F054988(iVar2,2); - uVar3 = *(uint *)(iVar2 + 100); - goto LAB_7f055a3c; - } - proc_7F054988(iVar2,1); - } - uVar3 = *(uint *)(iVar2 + 100); - } - } -LAB_7f055a3c: - *(uint *)(iVar2 + 100) = uVar3 | 0x4000; - *(uint *)(iVar2 + 0xc) = *(uint *)(iVar2 + 0xc) & 0xfffffff7; - proc_7F03E6A0(param_1); - return; -} - - - -undefined8 proc_7F055A70(int param_1,int param_2) - -{ - float *pfVar2; - undefined8 uVar1; - float fVar3; - - pfVar2 = (float *)(ptr_2xxxpresets + (int)*(short *)(param_2 + 6) * 0x44); - fVar3 = (pfVar2[3] * pfVar2[7] - pfVar2[6] * pfVar2[4]) * (*(float *)(param_1 + 0x10) - pfVar2[2]) - + (*(float *)(param_1 + 8) - *pfVar2) * (pfVar2[4] * pfVar2[8] - pfVar2[7] * pfVar2[5]) + - (*(float *)(param_1 + 0xc) - pfVar2[1]) * - (pfVar2[5] * pfVar2[6] - pfVar2[8] * pfVar2[3]); - if ((*(ushort *)(param_2 + 0x98) & 8) != 0) { - fVar3 = -fVar3; - } - if (fVar3 < 0.00000000) { - uVar1 = 0; - } - else { - uVar1 = 1; - if (0.00000000 < fVar3) { - uVar1 = 1; - } - } - return uVar1; -} - - - -void proc_7F055B78(int param_1,int param_2) - -{ - longlong lVar1; - int iVar2; - uint uVar3; - uint uVar4; - - if (((*(int *)(param_2 + 8) << 4 < 0) && (*(char *)(param_2 + 0xbc) == '\0')) && - (*(float *)(param_2 + 0xb4) == 0.00000000)) { - lVar1 = proc_7F055A70(param_1,param_2); - uVar3 = 0; - if ((*(ushort *)(param_2 + 0x98) & 8) == 0) { - if (lVar1 == 0) { - uVar3 = 0x20000000; - } - uVar4 = *(uint *)(param_2 + 8); - } - else { - if (lVar1 == 0) { - uVar4 = *(uint *)(param_2 + 8); - } - else { - uVar3 = 0x20000000; - uVar4 = *(uint *)(param_2 + 8); - } - } - if ((int)((uVar4 ^ uVar3) << 2) < 0) { - uVar3 = *(uint *)(param_2 + 8); - iVar2 = param_2; - while( true ) { - *(uint *)(iVar2 + 8) = uVar3 ^ 0x20000000; - iVar2 = *(int *)(iVar2 + 200); - if ((iVar2 == 0) || (iVar2 == param_2)) break; - uVar3 = *(uint *)(iVar2 + 8); - } - } - } - return; -} - - - -undefined8 proc_7F055C40(int param_1) - -{ - int iVar1; - uint uVar2; - bool bVar3; - int iVar5; - longlong lVar4; - byte *text; - uint uVar6; - - iVar1 = *(int *)(param_1 + 4); - iVar5 = get_curplayer_positiondata(); - if (*(uint *)(iVar1 + 0x9c) == 0) { - bVar3 = true; - } - else { - lVar4 = proc_7F08CE70(*(uint *)(iVar1 + 0x9c)); - if (lVar4 == 0) { - lVar4 = proc_7F055A70(iVar5,iVar1); - bVar3 = false; - if (lVar4 == 0) { - if ((-1 < *(int *)(iVar1 + 0xc) << 3) && (*(int *)(iVar1 + 0xc) << 4 < 0)) { - bVar3 = true; - } - } - else { - if ((*(int *)(iVar1 + 0xc) << 3 < 0) && (-1 < *(int *)(iVar1 + 0xc) << 4)) { - bVar3 = true; - } - } - } - else { - bVar3 = true; - } - } - lVar4 = proc_7F03E718(iVar1); - if (lVar4 == 0) { - bVar3 = false; - } - if (bVar3) { - proc_7F055B78(iVar5,iVar1); - proc_7F05599C(param_1); - } - else { - if ((*(char *)(iVar1 + 0xbc) == '\0') && (*(float *)(iVar1 + 0xb4) < 0.50000000)) { - uVar6 = *(uint *)(iVar1 + 0xc); - if ((uVar6 & 4) == 0) { - iVar5 = proc_7F08D21C(iVar1); - if ((iVar5 == 0) || (*(int *)(iVar5 + 0x1c) == 0)) { - text = get_textptr_for_textID(0xa440); - display_string_in_lower_left_corner((char *)text); - uVar6 = *(uint *)(iVar1 + 0xc); - } - else { - text = get_textptr_for_textID((u16)*(undefined4 *)(iVar5 + 0x1c)); - display_string_in_lower_left_corner((char *)text); - uVar6 = *(uint *)(iVar1 + 0xc); - } - uVar2 = *(uint *)(iVar1 + 100); - } - else { - uVar2 = *(uint *)(iVar1 + 100); - } - *(uint *)(iVar1 + 0xc) = uVar6 | 8; - *(uint *)(iVar1 + 100) = uVar2 | 0x4000; - } - } - return 0; -} - - - -void start_alarm(void) - -{ - if (alarm_timer < 1) { - alarm_timer = 1; - } - return; -} - - - -void deactivate_alarm_sound_effect(void) - -{ - ulonglong uVar1; - - if ((ptr_alarm_sfx != 0) && (uVar1 = music_related_26(ptr_alarm_sfx), uVar1 != 0)) { - music_related_28(ptr_alarm_sfx); - } - return; -} - - - -void stop_alarm(void) - -{ - alarm_timer = 0; - deactivate_alarm_sound_effect(); - return; -} - - - -s32 is_alarm_on(void) - -{ - return (s32)(uint)(0 < alarm_timer); -} - - - -void init_trigger_toxic_gas_effect(undefined4 *param_1) - -{ - int iVar1; - - activate_gas_sound_timer = 1; - dword_80030AE0 = 0; - flt_80030AD0 = *param_1; - flt_80030AD4 = param_1[1]; - flt_80030AD8 = param_1[2]; - iVar1 = get_stage_num(); - if (iVar1 != 0x20) { - gas_damage_flag = 3600.00000000; - } - else { - gas_damage_flag = 120.00000000; - } - DAT_80071e7c = (uint)(iVar1 != 0x20); - return; -} - - - -void proc_7F055EF8(void) - -{ - ulonglong uVar1; - - if ((dword_80030AE4 != 0) && (uVar1 = music_related_26(dword_80030AE4), uVar1 != 0)) { - music_related_28(dword_80030AE4); - } - return; -} - - - -ulonglong check_if_toxic_gas_activated(void) - -{ - return (ulonglong)(0.00000000 < toxic_gas_sound_timer); -} - - - -void proc_7F055F64(void) - -{ - int iVar2; - ulonglong uVar1; - - if ((activate_gas_sound_timer != 0) && - (toxic_gas_sound_timer = toxic_gas_sound_timer + global_timer_delta, - gas_damage_flag <= toxic_gas_sound_timer)) { - toxic_gas_sound_timer = gas_damage_flag; - activate_gas_sound_timer = 0; - } - if (((0.00000000 < toxic_gas_sound_timer) && (disable_player_pickups_flag == 0)) && - (switch_to_solosky2(toxic_gas_sound_timer / gas_damage_flag), DAT_80071e7c != 0)) { - if (dword_80030ADC < global_timer + -0xe1) { - dword_80030ADC = global_timer; - if (600.00000000 <= toxic_gas_sound_timer) { - play_sfx_a1(ptr_sfx_buf,0x62,NULL); - } - if (1800.00000000 <= toxic_gas_sound_timer) { - record_damage_kills(); - } - } - if (dword_80030AE0 < gas_damage_flag) { - dword_80030AE0 = dword_80030AE0 + global_timer_delta; - if ((dword_80030AE4 == 0) && (iVar2 = get_controls_locked_flag(), iVar2 == 0)) { - play_sfx_a1(ptr_sfx_buf,0x66,(sfxdata *)&dword_80030AE4); - } - if (dword_80030AE4 != 0) { - proc_7F053A10(dword_80030AE4,(float *)&flt_80030AD0); - } - } - else { - if ((dword_80030AE4 != 0) && (uVar1 = music_related_26(dword_80030AE4), uVar1 != 0)) { - music_related_28(dword_80030AE4); - } - } - } - return; -} - - - -void set_unset_clock_lock_bits(int clocklockbits,int flag) - -{ - if (flag != 0) { - clock_drawn_flag = clock_drawn_flag & ~clocklockbits; - return; - } - clock_drawn_flag = clock_drawn_flag | clocklockbits; - return; -} - - - -ulonglong is_clock_drawn_onscreen(void) - -{ - return (ulonglong)(clock_drawn_flag == 0); -} - - - -void set_clock_time(f32 time) - -{ - clock_time = time; - return; -} - - - -f32 get_clock_time(void) - -{ - return clock_time; -} - - - -void set_clock_enable(int enable) - -{ - clock_enable = enable; - return; -} - - - -undefined4 get_clock_enable(void) - -{ - return clock_enable; -} - - - -void proc_7F0561E0(void) - -{ - if (clock_enable != 0) { - clock_time = clock_time - global_timer_delta; - } - return; -} - - - -undefined4 * proc_7F056210(undefined4 *param_1) - -{ - undefined4 *puVar1; - short sVar2; - short sVar3; - uint *DL; - int iVar4; - int iVar5; - float fVar6; - float fVar7; - int iVar8; - - if (clock_drawn_flag == 0) { - fVar7 = clock_time; - if (clock_time < 0.00000000) { - fVar7 = -clock_time; - } - fVar6 = truncf(fVar7 / 3600.00000000); - iVar8 = (int)fVar6; - fVar6 = truncf(fVar7 / 60.00000000); - iVar5 = (int)fVar6 + iVar8 * -0x3c; - fVar7 = truncf((fVar7 * 100.00000000) / 60.00000000); - iVar4 = (int)fVar7 + iVar8 * -6000 + iVar5 * -100; - puVar1 = microcode_constructor(param_1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = display_ammo_total_in_a1 - (puVar1,(longlong)((iVar8 % 100) / 10),0x82,2,((int)sVar3 + (int)sVar2) - 0x12,2, - 1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = display_ammo_total_in_a1 - (DL,(longlong)(iVar8 % 10),0x8a,2,((int)sVar3 + (int)sVar2) - 0x12,2,1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = proc_7F069A50(DL,(byte *)":\n",0x93,2,((int)sVar3 + (int)sVar2) - 0x12,2,1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = display_ammo_total_in_a1 - (DL,(longlong)((iVar5 % 0x3c) / 10),0x9c,2,((int)sVar3 + (int)sVar2) - 0x12,2,1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = display_ammo_total_in_a1 - (DL,(longlong)(iVar5 % 10),0xa4,2,((int)sVar3 + (int)sVar2) - 0x12,2,1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = proc_7F069A50(DL,(byte *)":\n",0xad,2,((int)sVar3 + (int)sVar2) - 0x12,2,1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = display_ammo_total_in_a1 - (DL,(longlong)((iVar4 % 100) / 10),0xb6,2,((int)sVar3 + (int)sVar2) - 0x12,2,1); - sVar2 = get_video2_settings_uly(); - sVar3 = get_video2_settings_height(); - DL = display_ammo_total_in_a1 - (DL,(longlong)(iVar4 % 10),0xbe,2,((int)sVar3 + (int)sVar2) - 0x12,2,1); - param_1 = combiner_bayer_lod_perspective(DL); - } - return param_1; -} - - - -void proc_7F0565F0(void) - -{ - s32 sVar1; - int iVar2; - - sVar1 = is_alarm_on(); - if (sVar1 != 0) { - if ((ptr_alarm_sfx == 0) && (iVar2 = get_controls_locked_flag(), iVar2 == 0)) { - play_sfx_a1(ptr_sfx_buf,0xa3,(sfxdata *)&ptr_alarm_sfx); - } - alarm_timer += clock_timer; - if (0x708 < alarm_timer) { - stop_alarm(); - } - } - proc_7F055F64(); - proc_7F0561E0(); - proc_7F051CC8(); - dword_80030AF4 = 0; - return; -} - - - -void proc_7F056690(void) - -{ - char cVar1; - int iVar2; - int iVar3; - int iVar4; - ushort *puVar6; - longlong lVar5; - char *pcVar7; - - pcVar7 = (char *)get_ptr_obj_pos_list_current_entry(); - if (pcVar7 == NULL) { - return; - } - cVar1 = *pcVar7; - do { - if (cVar1 == '\x01') { - if ((pcVar7[1] & 2U) == 0) { - iVar2 = *(int *)(pcVar7 + 4); - if ((*(byte *)(iVar2 + 2) & 0x80) == 0) { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - else { - iVar3 = *(int *)(iVar2 + 0x14); - puVar6 = proc_7F04B478(iVar2); - if (puVar6 == NULL) { - return; - } - iVar4 = *(int *)(puVar6 + 2); - if (iVar4 == 0) { - return; - } - lVar5 = proc_7F04B590(*(int *)(*(int *)(iVar2 + 0x14) + 8),(int)puVar6); - if (lVar5 == 0) { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - else { - if (*(int *)(iVar4 + 8) != - *(int *)(*(int *)(iVar3 + 0x10) + (uint)*(ushort *)(iVar4 + 0x1a) * 4)) { - proc_7F041024(iVar2,1); - return; - } - pcVar7 = *(char **)(pcVar7 + 0x24); - } - } - } - else { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - } - else { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - if (pcVar7 == NULL) { - return; - } - cVar1 = *pcVar7; - } while( true ); -} - - - -void drop_inventory(void) - -{ - int *GUARDdata; - longlong lVar1; - ulonglong uVar2; - undefined *puVar3; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - ulonglong uVar4; - - GUARDdata = *(int **)(pPlayer->position_data_pointer + 4); - set_0x4_in_runtime_flags_for_item_in_guards_hand(GUARDdata,0); - set_0x4_in_runtime_flags_for_item_in_guards_hand(GUARDdata,1); - uVar4 = 1; - do { - lVar1 = proc_7F09B244(uVar4); - if ((-1 < lVar1) && (uVar2 = is_weapon_in_inv((int)uVar4), uVar2 != 0)) { - puVar3 = create_held_weapon((undefined2 *)GUARDdata,(int)lVar1,(char)uVar4,0x20000000,NULL, - NULL); - if (puVar3 != NULL) { - proc_7F04BFD0((int)puVar3,1); - proc_7F04C130((int)puVar3,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - } - } - uVar4 = SEXT48((int)uVar4 + 1); - } while (uVar4 != 0x59); - return; -} - - - -undefined8 -proc_7F056850(undefined4 *param_1,longlong param_2,float param_3,undefined4 *param_4, - undefined4 *param_5) - -{ - undefined8 uVar1; - longlong lVar2; - undefined4 *in_stack_00000010; - - *param_5 = *param_1; - param_5[1] = param_1[1]; - param_5[2] = param_1[2]; - *in_stack_00000010 = (int)param_2; - if (param_2 == 0) { - uVar1 = 0; - } - else { - if (0.00000000 < (float)param_4) { - lVar2 = proc_7F0B18B8(); - if (lVar2 < 0) { - uVar1 = 1; - } - else { - uVar1 = 0; - } - } - else { - uVar1 = 1; - } - } - return uVar1; -} - - - -undefined8 get_size_of_setup_object_type(int *object) - -{ - if (true) { - switch(*(undefined *)((int)object + 3)) { - case 1: - return 0x40; - case 2: - return 2; - case 3: - return 0x20; - case 4: - return 0x21; - case 5: - return 0x20; - case 6: - return 0x3b; - case 7: - return 0x21; - case 8: - return 0x22; - case 9: - return 7; - case 10: - return 0x40; - case 0xb: - return 0x95; - case 0xc: - return 0x20; - case 0xd: - return 0x36; - case 0xe: - return 3; - case 0x11: - return 0x20; - case 0x12: - return 3; - case 0x13: - return 4; - case 0x14: - return 0x2d; - case 0x15: - return 0x22; - case 0x16: - return 4; - case 0x17: - return 4; - case 0x18: - return 1; - case 0x19: - return 2; - case 0x1a: - return 2; - case 0x1b: - return 2; - case 0x1c: - return 2; - case 0x1d: - return 2; - case 0x1e: - return 4; - case 0x1f: - return 1; - case 0x20: - return 4; - case 0x21: - return 5; - case 0x22: - return 1; - case 0x23: - return 4; - case 0x24: - return 0x20; - case 0x25: - return 10; - case 0x26: - return 4; - case 0x27: - return 0x2c; - case 0x28: - return 0x2d; - case 0x2a: - return 0x20; - case 0x2b: - return 0x20; - case 0x2c: - return 5; - case 0x2d: - return 0x38; - case 0x2e: - return 7; - case 0x2f: - return 0x25; - } - } - return 1; -} - - - -int proc_7F056A88(int param_1) - -{ - undefined8 uVar1; - int iVar2; - int *object; - - if (-1 < param_1) { - if (ptr_setup_objects == NULL) { - return 0; - } - iVar2 = 0; - object = (int *)ptr_setup_objects; - if (ptr_setup_objects[3] == '0') { - return 0; - } - do { - if (iVar2 == param_1) { - return (int)object; - } - uVar1 = get_size_of_setup_object_type(object); - object = object + (int)uVar1; - iVar2 += 1; - } while (*(char *)((int)object + 3) != '0'); - } - return 0; -} - - - -int proc_7F056B1C(int param_1) - -{ - undefined8 uVar1; - int *object; - int iVar2; - - if (ptr_setup_objects != NULL) { - iVar2 = 0; - object = (int *)ptr_setup_objects; - if (ptr_setup_objects[3] == '0') { - return -1; - } - do { - if (object == (int *)param_1) { - return iVar2; - } - uVar1 = get_size_of_setup_object_type(object); - object = object + (int)uVar1; - iVar2 += 1; - } while (*(char *)((int)object + 3) != '0'); - } - return -1; -} - - - -int proc_7F056BA8(int param_1) - -{ - undefined8 uVar1; - int iVar2; - int *object; - int iVar3; - - if (ptr_setup_objects == NULL) { -LAB_7f056c18: - iVar3 = -1; - } - else { - iVar3 = 0; - if (ptr_setup_objects[3] == '0') { - iVar3 = -1; - } - else { - iVar2 = *(int *)(ptr_setup_objects + 0x10); - object = (int *)ptr_setup_objects; - while (param_1 != iVar2) { - uVar1 = get_size_of_setup_object_type(object); - object = object + (int)uVar1; - iVar3 += 1; - if (*(char *)((int)object + 3) == '0') goto LAB_7f056c18; - iVar2 = object[4]; - } - } - } - return iVar3; -} - - - -ulonglong load_model(int modelid) - -{ - object_header *header; - bool bVar1; - - header = (object_header *)PitemZ_entries[modelid].header; - bVar1 = header->offset_obj_table == 0; - if (bVar1) { - load_object_into_memory(header,(u8 *)PitemZ_entries[modelid].filename); - set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[modelid].header) - ; - } - return (ulonglong)bVar1; -} - - - -void proc_7F056CA0(int param_1) - -{ - char cVar1; - char *pcVar2; - int iVar3; - float *pfVar4; - float fVar5; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - - pcVar2 = *(char **)(param_1 + 0x10); - proc_7F03E18C((int)pcVar2); - if (*(int *)(param_1 + 0xc) << 0xe < 0) { - if (*(int *)(pcVar2 + 0x14) == 0) { - pcVar2[0x2c] = -1; - } - else { - cVar1 = *(char *)(*(int *)(pcVar2 + 0x14) + 3); - pcVar2[0x2d] = -1; - pcVar2[0x2c] = cVar1; - } - } - else { - iVar3 = proc_7F040078(param_1); - if (iVar3 != 0) { - pfVar4 = (float *)(param_1 + 0x18); - fStack16 = proc_7F03E87C(iVar3,pfVar4); - fStack16 = fStack16 - 30.00000000; - fStack12 = proc_7F03E9BC(iVar3,(int)pfVar4); - fStack8 = proc_7F03EAFC(iVar3,(int)pfVar4); - fStack8 = fStack8 - 30.00000000; - fStack28 = proc_7F03E91C(iVar3,pfVar4); - fStack28 = fStack28 + 30.00000000; - fStack24 = proc_7F03EA5C(iVar3,(int)pfVar4); - fVar5 = proc_7F03EB9C(iVar3,(int)pfVar4); - fStack16 = fStack16 + *(float *)(param_1 + 0x58); - fStack12 = fStack12 + *(float *)(param_1 + 0x5c); - fStack8 = fStack8 + *(float *)(param_1 + 0x60); - fStack28 = fStack28 + *(float *)(param_1 + 0x58); - fStack24 = fStack24 + *(float *)(param_1 + 0x5c); - fStack20 = fVar5 + 30.00000000 + *(float *)(param_1 + 0x60); - proc_7F03E27C(pcVar2,&fStack16,&fStack28,fVar5 + 30.00000000); - } - } - proc_7F03E210((int)pcVar2); - return; -} - - - -int proc_7F056EA0(undefined8 param_1,int param_2) - -{ - int iVar1; - - iVar1 = proc_7F056A88(param_2); - if ((iVar1 != 0) && (true)) { - switch(*(undefined *)(iVar1 + 3)) { - case 1: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0x11: - case 0x14: - case 0x15: - case 0x24: - case 0x27: - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - case 0x2d: - case 0x2f: - break; - case 2: - case 9: - case 0xe: - case 0x12: - case 0x13: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1a: - case 0x1b: - case 0x1c: - case 0x1d: - case 0x1e: - case 0x1f: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x25: - case 0x26: - case 0x2c: - case 0x2e: - iVar1 = 0; - } - } - return iVar1; -} - - - -int proc_7F056F08(ulonglong param_1,int *param_2,int *param_3,longlong param_4,int param_5, - int param_6) - -{ - byte bVar1; - ulonglong uVar2; - undefined8 uVar3; - int *object; - int *piVar4; - int *piVar5; - - piVar4 = NULL; - piVar5 = NULL; - if (ptr_setup_objects != NULL) { - bVar1 = ptr_setup_objects[3]; - object = (int *)ptr_setup_objects; - while (bVar1 != 0x30) { - if ((param_1 & 0xff) == (ulonglong)bVar1) { - if (object[4] == 0) { - if ((param_4 == 0) && (param_5 == 0)) { - return (int)object; - } - } - else { - if (((((param_1 != 8) && ((object[0x19] & 0x80U) == 0)) && - ((*(byte *)((int)object + 2) & 4) == 0)) && (*(int *)(object[4] + 0x1c) == 0)) && - ((param_5 == 0 || (uVar2 = proc_7F06C060(object[5],param_6), uVar2 != 0)))) { - if ((piVar4 == NULL) && ((*(byte *)(object[4] + 1) & 2) == 0)) { - piVar4 = object; - } - if (piVar5 == NULL) { - piVar5 = object; - } - } - } - } - uVar3 = get_size_of_setup_object_type(object); - object = object + (int)uVar3; - bVar1 = *(byte *)((int)object + 3); - } - } - *(int **)param_2 = piVar4; - *(int **)param_3 = piVar5; - return 0; -} - - - -int proc_7F057080(short param_1) - -{ - short sVar1; - int iVar2; - - if (ptr_last_tag_entry_type16 != 0) { - sVar1 = *(short *)(ptr_last_tag_entry_type16 + 4); - iVar2 = ptr_last_tag_entry_type16; - while( true ) { - if (param_1 == sVar1) { - return iVar2; - } - iVar2 = *(int *)(iVar2 + 8); - if (iVar2 == 0) break; - sVar1 = *(short *)(iVar2 + 4); - } - } - return 0; -} - - - -int get_handle_to_tagged_object(int object) - -{ - int iVar1; - int iVar2; - - iVar1 = proc_7F057080((short)object); - iVar2 = 0; - if (iVar1 != 0) { - iVar2 = *(int *)(iVar1 + 0xc); - } - if ((iVar2 != 0) && ((*(uint *)(iVar2 + 100) & 0x10) == 0)) { - iVar2 = 0; - } - return iVar2; -} - - - -int get_ptr_text_for_watch_breifing_page(WATCH_BRIEFING_PAGE page) - -{ - int iVar1; - byte *pbVar2; - WATCH_BRIEFING_PAGE WVar3; - - pbVar2 = NULL; - if (ptr_last_briefing_setup_entry_type23 != 0) { - WVar3 = *(WATCH_BRIEFING_PAGE *)(ptr_last_briefing_setup_entry_type23 + 4); - iVar1 = ptr_last_briefing_setup_entry_type23; - while (page != WVar3) { - iVar1 = *(int *)(iVar1 + 0xc); - if (iVar1 == 0) goto LAB_7f057150; - WVar3 = *(WATCH_BRIEFING_PAGE *)(iVar1 + 4); - } - pbVar2 = get_textptr_for_textID(*(u16 *)(iVar1 + 10)); - } -LAB_7f057150: - if (pbVar2 == NULL) { - if (page == BRIEFING_TITLE) { - pbVar2 = get_textptr_for_textID(0xb029); - } - else { - if (page == BRIEFING_OVERVIEW) { - pbVar2 = get_textptr_for_textID(0xb02a); - } - else { - pbVar2 = get_textptr_for_textID(0xb02b); - } - } - } - return (int)pbVar2; -} - - - -int add_objective(void) - -{ - return num_objective_ptrs + 1; -} - - - -int get_text_for_objective(int objective) - -{ - byte *pbVar1; - - if ((objective < 10) && (objective_ptrs[objective] != 0)) { - pbVar1 = get_textptr_for_textID(*(u16 *)(objective_ptrs[objective] + 10)); - } - else { - pbVar1 = NULL; - } - return (int)pbVar1; -} - - - -DIFFICULTY get_difficulty_for_objective(int objective) - -{ - if ((objective < 10) && (objective_ptrs[objective] != 0)) { - return (DIFFICULTY)(int)*(char *)(objective_ptrs[objective] + 0xf); - } - return DIFFICULTY_AGENT; -} - - - -int get_status_of_objective(longlong objective) - -{ - char cVar1; - longlong lVar2; - ulonglong uVar3; - int iVar5; - undefined8 uVar4; - BOOL BVar6; - int iVar7; - int *object; - int iVar8; - - iVar8 = 1; - if (objective < 10) { - object = (int *)objective_ptrs[(int)objective]; - if (object == NULL) { - iVar8 = (&DAT_80075d58)[(int)objective]; - } - else { - cVar1 = *(char *)((int)object + 3); - while (cVar1 != '\x18') { - iVar7 = 1; - if (true) { - switch(cVar1) { - case '\x19': - iVar5 = get_handle_to_tagged_object(object[1]); - if (((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) && - (uVar3 = check_if_object_has_not_been_destroyed(iVar5), uVar3 != 0)) { - iVar7 = 0; - } - break; - case '\x1a': - uVar3 = proc_7F033338(0,object[1]); - if (uVar3 == 0) { - iVar7 = 0; - } - break; - case '\x1b': - uVar3 = proc_7F033338(0,object[1]); - if (uVar3 != 0) { - iVar7 = 2; - } - break; - case '\x1c': - iVar5 = get_handle_to_tagged_object(object[1]); - if (((iVar5 == 0) || (*(int *)(iVar5 + 0x10) == 0)) || - (uVar3 = check_if_object_has_not_been_destroyed(iVar5), uVar3 == 0)) { - iVar7 = 2; - } - else { - lVar2 = proc_7F08CFE0(*(int *)(iVar5 + 0x10)); - if (lVar2 == 0) { - iVar7 = 0; - } - } - break; - case '\x1d': - iVar5 = get_handle_to_tagged_object(object[1]); - if (((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) && - (lVar2 = proc_7F08CFE0(*(int *)(iVar5 + 0x10)), lVar2 != 0)) { - iVar7 = 0; - } - break; - case '\x1e': - iVar5 = get_handle_to_tagged_object(object[1]); - if (object[2] == 0) { - if (((iVar5 == 0) || (*(int *)(iVar5 + 0x10) == 0)) || - (uVar3 = check_if_object_has_not_been_destroyed(iVar5), uVar3 == 0)) { - iVar7 = 2; - } - else { - iVar7 = 0; - } - } - break; - case ' ': - if (object[2] == 0) { - iVar7 = 0; - } - break; - case '!': - if (object[3] == 0) { - iVar7 = 0; - } - break; - case '\"': - iVar5 = get_keyanalyzer_flag(); - if (iVar5 == 0) { - iVar7 = 0; - } - } - } - if (iVar8 == 1) { - if (iVar7 != 1) { - iVar8 = iVar7; - } - } - else { - if ((iVar8 == 0) && (iVar7 == 2)) { - iVar8 = iVar7; - } - } - uVar4 = get_size_of_setup_object_type(object); - object = object + (int)uVar4; - cVar1 = *(char *)((int)object + 3); - } - } - } - BVar6 = get_debug_all_obj_complete_flag(); - if (BVar6 != FALSE) { - iVar8 = 1; - } - return iVar8; -} - - - -undefined8 check_objectives_complete(void) - -{ - int iVar1; - DIFFICULTY DVar2; - DIFFICULTY DVar3; - longlong objective; - - objective = 0; - iVar1 = add_objective(); - if (0 < iVar1) { - do { - DVar2 = get_difficulty_for_objective((int)objective); - DVar3 = get_current_difficulty(); - if ((DVar2 <= DVar3) && (iVar1 = get_status_of_objective(objective), iVar1 != 1)) { - return 0; - } - objective = (longlong)((int)objective + 1); - iVar1 = add_objective(); - } while (objective < (longlong)iVar1); - } - return 1; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -void display_objective_status_text_on_status_change(void) - -{ - int objstatus; - DIFFICULTY DVar1; - DIFFICULTY DVar2; - byte *pbVar3; - undefined4 *puVar4; - undefined4 *puVar5; - undefined4 *puVar6; - undefined4 *puVar7; - longlong objective; - int objective_00; - int iVar8; - int *piVar9; - undefined4 auStack60 [15]; - - iVar8 = 0; - puVar6 = dword_80053610; - puVar4 = auStack60; - do { - puVar7 = puVar6 + 3; - puVar5 = puVar4 + 3; - *puVar4 = *puVar6; - puVar4[1] = puVar6[1]; - puVar4[2] = puVar6[2]; - puVar6 = puVar7; - puVar4 = puVar5; - } while (puVar7 != (undefined4 *)&dword_80053640); - *(undefined2 *)puVar5 = _dword_80053640; - piVar9 = &DAT_80075d58; - objective = 0; - if (-1 < num_objective_ptrs) { - do { - objstatus = get_status_of_objective(objective); - objective_00 = (int)objective; - if (objstatus != *piVar9) { - *piVar9 = objstatus; - DVar1 = get_difficulty_for_objective(objective_00); - DVar2 = get_current_difficulty(); - if (DVar1 <= DVar2) { - if (j_text_trigger == 0) { - pbVar3 = get_textptr_for_textID(0xb02c); - sprintf((char *)auStack60,"%s %c: ",pbVar3,iVar8 + 0x61); - } - else { - pbVar3 = get_textptr_for_textID(0xb02c); - sprintf((char *)auStack60,aSAC,pbVar3,iVar8 + 0x1a); - } - if (objstatus == 1) { - pbVar3 = get_textptr_for_textID(0xb02d); - string_load_parse_something((char *)auStack60,(char *)pbVar3); - } - else { - if (objstatus == 0) { - pbVar3 = get_textptr_for_textID(0xb02e); - string_load_parse_something((char *)auStack60,(char *)pbVar3); - } - else { - if (objstatus == 2) { - pbVar3 = get_textptr_for_textID(0xb02f); - string_load_parse_something((char *)auStack60,(char *)pbVar3); - } - } - } - display_string_in_lower_left_corner((char *)auStack60); - } - } - DVar1 = get_difficulty_for_objective(objective_00); - DVar2 = get_current_difficulty(); - if (DVar1 <= DVar2) { - iVar8 += 1; - } - objective = (longlong)(objective_00 + 1); - piVar9 = piVar9 + 1; - } while (objective <= (longlong)num_objective_ptrs); - } - return; -} - - - -void proc_7F057744(ulonglong param_1) - -{ - uint uVar1; - int iVar2; - int iVar3; - - if (ptr_last_enter_room_subobject_entry_type20 != 0) { - iVar3 = *(int *)(ptr_last_enter_room_subobject_entry_type20 + 8); - iVar2 = ptr_last_enter_room_subobject_entry_type20; - while( true ) { - if (iVar3 == 0) { - uVar1 = *(uint *)(iVar2 + 4); - if (uVar1 < 10000) { - iVar3 = *(int *)(ptr_0xxxpresets + uVar1 * 0x2c + 0x28); - } - else { - iVar3 = *(int *)(ptr_2xxxpresets + uVar1 * 0x44 + -0xa6018); - } - if (iVar3 == 0) { - iVar2 = *(int *)(iVar2 + 0xc); - } - else { - if (param_1 == (ulonglong)*(byte *)(iVar3 + 3)) { - *(undefined4 *)(iVar2 + 8) = 1; - iVar2 = *(int *)(iVar2 + 0xc); - } - else { - iVar2 = *(int *)(iVar2 + 0xc); - } - } - } - else { - iVar2 = *(int *)(iVar2 + 0xc); - } - if (iVar2 == 0) break; - iVar3 = *(int *)(iVar2 + 8); - } - } - return; -} - - - -void proc_7F0577E8(int param_1,ulonglong param_2) - -{ - uint uVar1; - int iVar2; - int iVar3; - - if (ptr_last_deposit_in_room_subobject_entry_type21 != 0) { - iVar3 = *(int *)(ptr_last_deposit_in_room_subobject_entry_type21 + 0xc); - iVar2 = ptr_last_deposit_in_room_subobject_entry_type21; - while( true ) { - if (iVar3 == 0) { - if (param_1 == *(int *)(iVar2 + 4)) { - uVar1 = *(uint *)(iVar2 + 8); - if (uVar1 < 10000) { - iVar3 = *(int *)(ptr_0xxxpresets + uVar1 * 0x2c + 0x28); - } - else { - iVar3 = *(int *)(ptr_2xxxpresets + uVar1 * 0x44 + -0xa6018); - } - if (iVar3 == 0) { - iVar2 = *(int *)(iVar2 + 0x10); - } - else { - if (param_2 == (ulonglong)*(byte *)(iVar3 + 3)) { - *(undefined4 *)(iVar2 + 0xc) = 1; - iVar2 = *(int *)(iVar2 + 0x10); - } - else { - iVar2 = *(int *)(iVar2 + 0x10); - } - } - } - else { - iVar2 = *(int *)(iVar2 + 0x10); - } - } - else { - iVar2 = *(int *)(iVar2 + 0x10); - } - if (iVar2 == 0) break; - iVar3 = *(int *)(iVar2 + 0xc); - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F057898(void) - -{ - int iVar1; - int iVar4; - ulonglong uVar2; - longlong lVar3; - int iVar5; - f32 fVar6; - f32 fVar7; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float afStack36 [2]; - float afStack28 [2]; - float afStack20 [5]; - - if (ptr_last_photo_obj_in_room_subobject_entry_type1E == 0) { - return; - } - iVar4 = *(int *)(ptr_last_photo_obj_in_room_subobject_entry_type1E + 8); - iVar5 = ptr_last_photo_obj_in_room_subobject_entry_type1E; - do { - if (iVar4 == 0) { - iVar4 = get_handle_to_tagged_object(*(int *)(iVar5 + 4)); - if (iVar4 == 0) { -LAB_7f057a84: - iVar5 = *(int *)(iVar5 + 0xc); - } - else { - iVar1 = *(int *)(iVar4 + 0x10); - if (iVar1 == 0) { - iVar5 = *(int *)(iVar5 + 0xc); - } - else { - if ((*(byte *)(iVar1 + 1) & 2) == 0) { - iVar5 = *(int *)(iVar5 + 0xc); - } - else { - if (0.00000000 <= *(float *)(iVar1 + 0x18)) { - uVar2 = check_if_object_has_not_been_destroyed(iVar4); - if ((uVar2 == 0) || - (lVar3 = proc_7F050D30(*(int *)(iVar4 + 0x10),afStack20,afStack28,afStack36), - lVar3 == 0)) goto LAB_7f057a84; - proc_7F03F948(afStack20,afStack28,afStack36,&fStack44,&fStack52); - fVar6 = getPlayer_c_screenleft(); - if ((float)fVar6 < fStack44) { - fVar6 = getPlayer_c_screenleft(); - fVar7 = getPlayer_c_screenwidth(); - if (fStack44 < (float)fVar7 + (float)fVar6) { - fVar6 = getPlayer_c_screenleft(); - if ((float)fVar6 < fStack52) { - fVar6 = getPlayer_c_screenleft(); - fVar7 = getPlayer_c_screenwidth(); - if (fStack52 < (float)fVar7 + (float)fVar6) { - fVar6 = getPlayer_c_screentop(); - if ((float)fVar6 < fStack40) { - fVar6 = getPlayer_c_screentop(); - fVar7 = getPlayer_c_screenheight(); - if (fStack40 < (float)fVar7 + (float)fVar6) { - fVar6 = getPlayer_c_screentop(); - if ((float)fVar6 < fStack48) { - fVar6 = getPlayer_c_screentop(); - fVar7 = getPlayer_c_screenheight(); - if (fStack48 < (float)fVar7 + (float)fVar6) { - *(undefined4 *)(iVar5 + 8) = 1; - goto LAB_7f057a84; - } - iVar5 = *(int *)(iVar5 + 0xc); - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - } - } - } - } - else { - iVar5 = *(int *)(iVar5 + 0xc); - } - if (iVar5 == 0) { - return; - } - iVar4 = *(int *)(iVar5 + 8); - } while( true ); -} - - - -void proc_7F057AC0(float *param_1) - -{ - u32 uVar1; - float fVar2; - float fStack12; - float fStack8; - float fStack4; - - fStack12 = dword_80032300; - fStack8 = (float)dword_80032304; - fStack4 = (float)dword_80032308; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - fStack12 = fVar2 * 0.00000000 * flt_80053690 * 0.03125000 - flt_80053694; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - fStack8 = fVar2 * 0.00000000 * flt_80053698 * 0.03125000 - flt_8005369C; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - fStack4 = fVar2 * 0.00000000 * flt_800536A0 * 0.03125000 - flt_800536A4; - proc_7F058714(&fStack12,param_1); - return; -} - - - -void proc_7F057C14(float *param_1,float *param_2) - -{ - u32 uVar1; - float fVar2; - - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *param_1 = fVar2 * 0.00000000 * flt_800536A8 * 4.00000000 - flt_800536AC; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - param_1[1] = fVar2 * 0.00000000 * flt_800536B0 * 4.00000000; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - param_1[2] = fVar2 * 0.00000000 * flt_800536B4 * 4.00000000 - flt_800536B8; - proc_7F057AC0(param_2); - return; -} - - - -void proc_7F057D44(float *param_1,float *param_2,float param_3) - -{ - float in_a2_lo; - float fVar1; - - fVar1 = *param_2 - in_a2_lo * npc_gravity_modifier; - *param_1 = *param_1 + in_a2_lo * (*param_2 + fVar1) * 0.50000000; - *param_2 = fVar1; - return; -} - - - -void proc_7F057D88(float *param_1,float *param_2,float param_3) - -{ - float in_a2_lo; - - proc_7F057D44(param_1 + 1,param_2 + 1,in_a2_lo); - *param_1 = *param_1 + in_a2_lo * *param_2; - param_1[2] = param_1[2] + in_a2_lo * param_2[2]; - return; -} - - - -void proc_7F057DF8(float *param_1,float *param_2,int param_3) - -{ - int iVar1; - - iVar1 = 0; - if (0 < param_3) { - do { - proc_7F058098(param_2,param_1); - iVar1 += 1; - } while (iVar1 != param_3); - } - return; -} - - - -void proc_7F057E58(float *param_1,float *param_2,float *param_3,float *param_4,int param_5) - -{ - float in_f12; - - proc_7F057D88(param_1,param_2,in_f12); - proc_7F057DF8(param_3,param_4,param_5); - return; -} - - - -float cosf(float __x) - -{ - uint uVar1; - float fVar2; - float fVar3; - - __x = __x + flt_800536C0; - uVar1 = (int)__x >> 0x16 & 0x1ff; - if (uVar1 < 0xff) { - if (0xe5 < uVar1) { - fVar2 = __x * __x; - __x = (flt_800536D0 + (flt_800536CC + (flt_800536C8 + flt_800536C4 * fVar2) * fVar2) * fVar2) - * fVar2 * __x + __x; - } - } - else { - if (uVar1 < 0x136) { - fVar2 = flt_800536D4 * __x; - fVar3 = (float)(int)(longlong)ROUND(fVar2); - __x = (__x - flt_800536D8 * fVar3) - flt_800536DC * fVar3; - fVar3 = __x * __x; - __x = (flt_800536EC + (flt_800536E8 + (flt_800536E4 + flt_800536E0 * fVar3) * fVar3) * fVar3) - * fVar3 * __x + __x; - if (((longlong)ROUND(fVar2) & 1U) != 0) { - __x = -__x; - } - } - else { - __x = 0.00000000; - } - } - return __x; -} - - - -float sinf(float __x) - -{ - uint uVar1; - float fVar2; - float fVar3; - - uVar1 = (int)__x >> 0x16 & 0x1ff; - if (uVar1 < 0xff) { - if (0xe5 < uVar1) { - fVar2 = __x * __x; - __x = (flt_800536D0 + (flt_800536CC + (flt_800536C8 + flt_800536C4 * fVar2) * fVar2) * fVar2) - * fVar2 * __x + __x; - } - } - else { - if (uVar1 < 0x136) { - fVar2 = flt_800536D4 * __x; - fVar3 = (float)(int)(longlong)ROUND(fVar2); - __x = (__x - flt_800536D8 * fVar3) - flt_800536DC * fVar3; - fVar3 = __x * __x; - __x = (flt_800536EC + (flt_800536E8 + (flt_800536E4 + flt_800536E0 * fVar3) * fVar3) * fVar3) - * fVar3 * __x + __x; - if (((longlong)ROUND(fVar2) & 1U) != 0) { - __x = -__x; - } - } - else { - __x = 0.00000000; - } - } - return __x; -} - - - -void proc_7F057FD0(undefined4 *param_1) - -{ - param_1[1] = 0; - param_1[2] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[6] = 0; - param_1[7] = 0; - param_1[8] = 0; - param_1[9] = 0; - param_1[0xb] = 0; - param_1[0xc] = 0; - param_1[0xd] = 0; - param_1[0xe] = 0; - *param_1 = 0x3f800000; - param_1[5] = 0x3f800000; - param_1[10] = 0x3f800000; - param_1[0xf] = 0x3f800000; - return; -} - - - -void proc_7F058020(undefined4 *param_1,undefined4 *param_2) - -{ - int iVar1; - - iVar1 = 0; - do { - iVar1 += 1; - *param_2 = *param_1; - param_2[1] = param_1[1]; - param_2[2] = param_1[2]; - param_2[3] = param_1[3]; - param_1 = param_1 + 4; - param_2 = param_2 + 4; - } while (iVar1 != 4); - return; -} - - - -void proc_7F058068(float *param_1,float *param_2) - -{ - undefined4 auStack64 [16]; - - proc_7F0580C8(param_1,param_2,(int)auStack64); - proc_7F058020(auStack64,param_2); - return; -} - - - -void proc_7F058098(float *param_1,float *param_2) - -{ - undefined4 auStack64 [16]; - - proc_7F05818C(param_1,param_2,(int)auStack64); - proc_7F058020(auStack64,param_2); - return; -} - - - -void proc_7F0580C8(float *param_1,float *param_2,int param_3) - -{ - int iVar1; - int iVar2; - float *pfVar3; - float *pfVar4; - - iVar2 = 0; - do { - iVar1 = 0; - pfVar4 = param_2; - pfVar3 = (float *)(param_3 + iVar2); - do { - iVar1 += 2; - *pfVar3 = pfVar4[3] * param_1[0xc] + - *param_1 * *pfVar4 + param_1[4] * pfVar4[1] + param_1[8] * pfVar4[2]; - pfVar3[4] = pfVar4[7] * param_1[0xc] + - *param_1 * pfVar4[4] + param_1[4] * pfVar4[5] + param_1[8] * pfVar4[6]; - pfVar4 = pfVar4 + 8; - pfVar3 = pfVar3 + 8; - } while (iVar1 != 4); - iVar2 += 4; - param_1 = param_1 + 1; - } while (iVar2 != 0x10); - return; -} - - - -void proc_7F05818C(float *param_1,float *param_2,int param_3) - -{ - float *pfVar1; - float *pfVar2; - float *pfVar3; - int iVar4; - int iVar5; - float *pfVar6; - float *pfVar7; - - iVar5 = 0; - do { - iVar4 = 0; - pfVar6 = (float *)(param_3 + iVar5); - pfVar7 = param_2; - do { - *pfVar6 = pfVar7[2] * param_1[8] + *param_1 * *pfVar7 + param_1[4] * pfVar7[1]; - if (iVar4 == 3) { - *pfVar6 = *pfVar6 + param_1[0xc]; - } - pfVar1 = pfVar7 + 4; - pfVar2 = pfVar7 + 5; - pfVar3 = pfVar7 + 6; - pfVar7 = pfVar7 + 8; - pfVar6[4] = *pfVar3 * param_1[8] + *param_1 * *pfVar1 + param_1[4] * *pfVar2; - if (iVar4 == 2) { - pfVar6[4] = pfVar6[4] + param_1[0xc]; - } - iVar4 += 2; - pfVar6 = pfVar6 + 8; - } while (iVar4 != 4); - iVar5 += 4; - param_1 = param_1 + 1; - } while (iVar5 != 0xc); - *(undefined4 *)(param_3 + 0xc) = 0; - *(undefined4 *)(param_3 + 0x1c) = 0; - *(undefined4 *)(param_3 + 0x2c) = 0; - *(undefined4 *)(param_3 + 0x3c) = 0x3f800000; - return; -} - - - -void proc_7F058274(float *param_1,float *param_2,float *param_3) - -{ - *param_3 = *param_2 * *param_1; - param_3[4] = param_2[4] * *param_1; - param_3[8] = param_2[8] * *param_1; - param_3[0xc] = param_2[0xc] * *param_1; - param_3[1] = param_2[1] * param_1[5]; - param_3[5] = param_2[5] * param_1[5]; - param_3[9] = param_2[9] * param_1[5]; - param_3[0xd] = param_2[0xd] * param_1[5]; - param_3[2] = param_2[2] * param_1[10]; - param_3[6] = param_2[6] * param_1[10]; - param_3[10] = param_2[10] * param_1[10]; - param_3[0xe] = param_1[0xe] + param_1[10] * param_2[0xe]; - param_3[3] = param_2[2] * param_1[0xb]; - param_3[7] = param_2[6] * param_1[0xb]; - param_3[0xb] = param_2[10] * param_1[0xb]; - param_3[0xf] = param_2[0xe] * param_1[0xb]; - return; -} - - - -void proc_7F058380(float *param_1,float *param_2,float *param_3) - -{ - float *pfVar1; - float *pfVar2; - int iVar3; - float fVar4; - - iVar3 = 0; - do { - fVar4 = *param_1; - pfVar1 = param_1 + 4; - pfVar2 = param_1 + 8; - iVar3 += 1; - param_1 = param_1 + 1; - *param_3 = param_2[2] * *pfVar2 + fVar4 * *param_2 + *pfVar1 * param_2[1]; - param_3 = param_3 + 1; - } while (iVar3 != 3); - return; -} - - - -void proc_7F0583D8(float *param_1,float *param_2) - -{ - float fStack12; - float fStack8; - float fStack4; - - proc_7F058380(param_1,param_2,&fStack12); - *param_2 = fStack12; - param_2[1] = fStack8; - param_2[2] = fStack4; - return; -} - - - -void proc_7F058418(float *param_1,float *param_2,float *param_3) - -{ - proc_7F058380(param_1,param_2,param_3); - *param_3 = *param_3 + param_1[0xc]; - param_3[1] = param_3[1] + param_1[0xd]; - param_3[2] = param_3[2] + param_1[0xe]; - return; -} - - - -void proc_7F058474(float *param_1,float *param_2) - -{ - proc_7F0583D8(param_1,param_2); - *param_2 = *param_2 + param_1[0xc]; - param_2[1] = param_2[1] + param_1[0xd]; - param_2[2] = param_2[2] + param_1[0xe]; - return; -} - - - -void proc_7F0584D0(float *param_1,float param_2,float *param_3) - -{ - float *in_a2_lo; - float fVar1; - float fVar2; - - fVar1 = cosf((float)param_3); - fVar2 = sinf((float)param_3); - in_a2_lo[8] = fVar2; - in_a2_lo[2] = -fVar2; - *in_a2_lo = fVar1; - in_a2_lo[10] = fVar1; - in_a2_lo[1] = 0.00000000; - in_a2_lo[3] = 0.00000000; - in_a2_lo[4] = 0.00000000; - in_a2_lo[6] = 0.00000000; - in_a2_lo[7] = 0.00000000; - in_a2_lo[9] = 0.00000000; - in_a2_lo[0xb] = 0.00000000; - in_a2_lo[5] = 1.00000000; - in_a2_lo[0xc] = *param_1; - in_a2_lo[0xd] = param_1[1]; - fVar1 = param_1[2]; - in_a2_lo[0xf] = 1.00000000; - in_a2_lo[0xe] = fVar1; - return; -} - - - -void proc_7F058570(float param_1,undefined8 param_2,undefined4 *param_3) - -{ - float fVar1; - float fVar2; - - fVar1 = cosf(param_1); - fVar2 = sinf(param_1); - *(float *)(param_3 + 6) = fVar2; - *(float *)(param_3 + 9) = -fVar2; - *(float *)(param_3 + 5) = fVar1; - *(float *)(param_3 + 10) = fVar1; - param_3[1] = 0; - param_3[2] = 0; - param_3[3] = 0; - param_3[4] = 0; - param_3[7] = 0; - param_3[8] = 0; - param_3[0xb] = 0; - param_3[0xc] = 0; - param_3[0xd] = 0; - param_3[0xe] = 0; - *param_3 = 0x3f800000; - param_3[0xf] = 0x3f800000; - return; -} - - - -void proc_7F0585FC(float param_1,undefined8 param_2,float *param_3) - -{ - float fVar1; - float fVar2; - - fVar1 = cosf(param_1); - fVar2 = sinf(param_1); - param_3[8] = fVar2; - param_3[2] = -fVar2; - *param_3 = fVar1; - param_3[10] = fVar1; - param_3[1] = 0.00000000; - param_3[3] = 0.00000000; - param_3[4] = 0.00000000; - param_3[6] = 0.00000000; - param_3[7] = 0.00000000; - param_3[9] = 0.00000000; - param_3[0xb] = 0.00000000; - param_3[0xc] = 0.00000000; - param_3[0xd] = 0.00000000; - param_3[0xe] = 0.00000000; - param_3[5] = 1.00000000; - param_3[0xf] = 1.00000000; - return; -} - - - -void proc_7F058688(float param_1,undefined8 param_2,float *param_3) - -{ - float fVar1; - float fVar2; - - fVar1 = cosf(param_1); - fVar2 = sinf(param_1); - param_3[1] = fVar2; - param_3[4] = -fVar2; - *param_3 = fVar1; - param_3[5] = fVar1; - param_3[2] = 0.00000000; - param_3[3] = 0.00000000; - param_3[6] = 0.00000000; - param_3[7] = 0.00000000; - param_3[8] = 0.00000000; - param_3[9] = 0.00000000; - param_3[0xb] = 0.00000000; - param_3[0xc] = 0.00000000; - param_3[0xd] = 0.00000000; - param_3[0xe] = 0.00000000; - param_3[10] = 1.00000000; - param_3[0xf] = 1.00000000; - return; -} - - - -void proc_7F058714(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - - fVar1 = cosf(*param_1); - fVar2 = sinf(*param_1); - fVar3 = cosf(param_1[1]); - fVar4 = sinf(param_1[1]); - fVar5 = cosf(param_1[2]); - fVar6 = sinf(param_1[2]); - param_2[3] = 0.00000000; - param_2[2] = -fVar4; - *param_2 = fVar3 * fVar5; - param_2[1] = fVar3 * fVar6; - param_2[4] = fVar2 * fVar5 * fVar4 - fVar1 * fVar6; - param_2[5] = fVar2 * fVar6 * fVar4 + fVar1 * fVar5; - param_2[7] = 0.00000000; - param_2[6] = fVar2 * fVar3; - param_2[8] = fVar1 * fVar5 * fVar4 + fVar2 * fVar6; - param_2[9] = fVar1 * fVar6 * fVar4 - fVar2 * fVar5; - param_2[0xb] = 0.00000000; - param_2[0xc] = 0.00000000; - param_2[0xd] = 0.00000000; - param_2[0xe] = 0.00000000; - param_2[0xf] = 1.00000000; - param_2[10] = fVar1 * fVar3; - return; -} - - - -void proc_7F058860(float *param_1,float *param_2) - -{ - float vector2; - float fVar1; - - vector2 = sqrtf(param_1[6] * param_1[6] + param_1[10] * param_1[10]); - if (0.00000191 < vector2) { - fVar1 = convert_angle_using_inverse((f32)param_1[6],(f32)param_1[10]); - *param_2 = fVar1; - vector2 = convert_angle_using_inverse((f32)-param_1[2],(f32)vector2); - param_2[1] = vector2; - vector2 = convert_angle_using_inverse((f32)param_1[1],(f32)*param_1); - param_2[2] = vector2; - } - else { - *param_2 = 0.00000000; - vector2 = convert_angle_using_inverse((f32)-param_1[2],(f32)vector2); - param_2[1] = vector2; - vector2 = convert_angle_using_inverse((f32)-param_1[4],(f32)param_1[5]); - param_2[2] = vector2; - } - return; -} - - - -void proc_7F05892C(undefined4 *param_1,float *param_2,float *param_3) - -{ - proc_7F058714(param_2,param_3); - proc_7F058998(param_1,(int)param_3); - return; -} - - - -void init_something_copy_posdata_to_it(int *posdata,int *param_2) - -{ - proc_7F057FD0(param_2); - proc_7F058998(posdata,(int)param_2); - return; -} - - - -void proc_7F058998(undefined4 *param_1,int param_2) - -{ - *(undefined4 *)(param_2 + 0x30) = *param_1; - *(undefined4 *)(param_2 + 0x34) = param_1[1]; - *(undefined4 *)(param_2 + 0x38) = param_1[2]; - return; -} - - - -void proc_7F0589B4(float param_1,undefined8 param_2,float *param_3) - -{ - *param_3 = *param_3 * param_1; - param_3[1] = param_3[1] * param_1; - param_3[2] = param_3[2] * param_1; - return; -} - - - -void proc_7F0589E4(float param_1,undefined8 param_2,int param_3) - -{ - *(float *)(param_3 + 0x10) = *(float *)(param_3 + 0x10) * param_1; - *(float *)(param_3 + 0x14) = *(float *)(param_3 + 0x14) * param_1; - *(float *)(param_3 + 0x18) = *(float *)(param_3 + 0x18) * param_1; - return; -} - - - -void proc_7F058A14(float param_1,undefined8 param_2,int param_3) - -{ - *(float *)(param_3 + 0x20) = *(float *)(param_3 + 0x20) * param_1; - *(float *)(param_3 + 0x24) = *(float *)(param_3 + 0x24) * param_1; - *(float *)(param_3 + 0x28) = *(float *)(param_3 + 0x28) * param_1; - *(float *)(param_3 + 0x2c) = *(float *)(param_3 + 0x2c) * param_1; - return; -} - - - -void proc_7F058A4C(float param_1,undefined8 param_2,int param_3) - -{ - *(float *)(param_3 + 0x20) = *(float *)(param_3 + 0x20) * param_1; - *(float *)(param_3 + 0x24) = *(float *)(param_3 + 0x24) * param_1; - *(float *)(param_3 + 0x28) = *(float *)(param_3 + 0x28) * param_1; - return; -} - - - -void matrix_multiply_A1_by_F12(float param_1,undefined8 param_2,float *param_3) - -{ - *param_3 = *param_3 * param_1; - param_3[1] = param_3[1] * param_1; - param_3[2] = param_3[2] * param_1; - param_3[3] = param_3[3] * param_1; - param_3[4] = param_3[4] * param_1; - param_3[5] = param_3[5] * param_1; - param_3[6] = param_3[6] * param_1; - param_3[7] = param_3[7] * param_1; - param_3[8] = param_3[8] * param_1; - param_3[9] = param_3[9] * param_1; - param_3[10] = param_3[10] * param_1; - param_3[0xb] = param_3[0xb] * param_1; - return; -} - - - -void proc_7F058B10(float param_1,undefined8 param_2,float *param_3) - -{ - *param_3 = *param_3 * param_1; - param_3[1] = param_3[1] * param_1; - param_3[2] = param_3[2] * param_1; - param_3[4] = param_3[4] * param_1; - param_3[5] = param_3[5] * param_1; - param_3[6] = param_3[6] * param_1; - param_3[8] = param_3[8] * param_1; - param_3[9] = param_3[9] * param_1; - param_3[10] = param_3[10] * param_1; - return; -} - - - -void proc_7F058B80(float param_1,undefined8 param_2,int param_3) - -{ - *(float *)(param_3 + 8) = *(float *)(param_3 + 8) * param_1; - *(float *)(param_3 + 0x18) = *(float *)(param_3 + 0x18) * param_1; - *(float *)(param_3 + 0x28) = *(float *)(param_3 + 0x28) * param_1; - *(float *)(param_3 + 0x38) = *(float *)(param_3 + 0x38) * param_1; - return; -} - - - -void proc_7F058BB8(float param_1,undefined8 param_2,float *param_3) - -{ - *param_3 = *param_3 * param_1; - param_3[4] = param_3[4] * param_1; - param_3[8] = param_3[8] * param_1; - param_3[0xc] = param_3[0xc] * param_1; - param_3[1] = param_3[1] * param_1; - param_3[5] = param_3[5] * param_1; - param_3[9] = param_3[9] * param_1; - param_3[0xd] = param_3[0xd] * param_1; - param_3[2] = param_3[2] * param_1; - param_3[6] = param_3[6] * param_1; - param_3[10] = param_3[10] * param_1; - param_3[0xe] = param_3[0xe] * param_1; - return; -} - - - -void proc_7F058C4C(float param_1) - -{ - flt_80032310 = param_1 * 65536.00000000; - return; -} - - - -void proc_7F058C64(void) - -{ - DAT_80075da0 = flt_80032310; - flt_80032310 = 0x47800000; - return; -} - - - -void proc_7F058C88(void) - -{ - flt_80032310 = DAT_80075da0; - return; -} - - - -void proc_7F058C9C(int param_1,uint *param_2) - -{ - int iVar1; - uint uVar2; - int iVar3; - uint uVar4; - float *pfVar5; - uint uVar6; - uint uVar7; - - iVar1 = 0; - do { - pfVar5 = (float *)(param_1 + iVar1 * 8); - uVar2 = iVar1 + 1; - iVar3 = iVar1 + 2; - uVar7 = (uint)(flt_80032310 * *pfVar5); - uVar4 = iVar1 + 3; - iVar1 += 4; - uVar6 = (uint)(flt_80032310 * pfVar5[1]); - *param_2 = uVar7 & 0xffff0000 | uVar6 >> 0x10; - param_2[8] = uVar7 << 0x10 | uVar6 & 0xffff; - pfVar5 = (float *)(param_1 + uVar2 * 8); - uVar6 = (uint)(flt_80032310 * *pfVar5); - uVar2 = (uint)((float)(&flt_80032310)[uVar2 & 1] * pfVar5[1]); - param_2[1] = uVar6 & 0xffff0000 | uVar2 >> 0x10; - param_2[9] = uVar6 << 0x10 | uVar2 & 0xffff; - pfVar5 = (float *)(param_1 + iVar3 * 8); - uVar6 = (uint)(flt_80032310 * *pfVar5); - uVar2 = (uint)(flt_80032310 * pfVar5[1]); - param_2[2] = uVar6 & 0xffff0000 | uVar2 >> 0x10; - param_2[10] = uVar6 << 0x10 | uVar2 & 0xffff; - pfVar5 = (float *)(param_1 + uVar4 * 8); - uVar2 = (uint)(flt_80032310 * *pfVar5); - uVar4 = (uint)((float)(&flt_80032310)[uVar4 & 1] * pfVar5[1]); - param_2[3] = uVar2 & 0xffff0000 | uVar4 >> 0x10; - param_2[0xb] = uVar2 << 0x10 | uVar4 & 0xffff; - param_2 = param_2 + 4; - } while (iVar1 != 8); - return; -} - - - -void proc_7F058E78(uint *param_1,int param_2) - -{ - uint uVar1; - uint uVar2; - int iVar3; - uint uVar4; - int iVar5; - uint uVar6; - float *pfVar7; - float *pfVar8; - - iVar3 = 0; - do { - uVar1 = *param_1; - uVar2 = param_1[8]; - pfVar7 = (float *)(param_2 + iVar3 * 8); - uVar4 = iVar3 + 1; - pfVar8 = (float *)(param_2 + uVar4 * 8); - iVar5 = iVar3 + 2; - uVar6 = iVar3 + 3; - iVar3 += 4; - *pfVar7 = (float)(uVar1 & 0xffff0000 | uVar2 >> 0x10) / flt_80032310; - pfVar7[1] = (float)(uVar1 << 0x10 | uVar2 & 0xffff) / flt_80032310; - uVar1 = param_1[9]; - uVar2 = param_1[1]; - pfVar7 = (float *)(param_2 + iVar5 * 8); - *pfVar8 = (float)(uVar2 & 0xffff0000 | uVar1 >> 0x10) / flt_80032310; - pfVar8[1] = (float)(uVar2 << 0x10 | uVar1 & 0xffff) / (float)(&flt_80032310)[uVar4 & 1]; - uVar1 = param_1[10]; - uVar2 = param_1[2]; - pfVar8 = (float *)(param_2 + uVar6 * 8); - *pfVar7 = (float)(uVar2 & 0xffff0000 | uVar1 >> 0x10) / flt_80032310; - pfVar7[1] = (float)(uVar2 << 0x10 | uVar1 & 0xffff) / flt_80032310; - uVar1 = param_1[0xb]; - uVar2 = param_1[3]; - *pfVar8 = (float)(uVar2 & 0xffff0000 | uVar1 >> 0x10) / flt_80032310; - pfVar8[1] = (float)(uVar2 << 0x10 | uVar1 & 0xffff) / (float)(&flt_80032310)[uVar6 & 1]; - param_1 = param_1 + 4; - } while (iVar3 != 8); - return; -} - - - -void proc_7F059044(float *param_1,int *param_2) - -{ - int iVar1; - int *piVar2; - float *pfVar3; - float fVar4; - - iVar1 = 1; - fVar4 = *param_1 * 65536.00000000; - piVar2 = param_2; - pfVar3 = param_1; - if (true) { - do { - iVar1 += 1; - param_2 = piVar2 + 4; - param_1 = pfVar3 + 4; - *piVar2 = (int)fVar4; - piVar2[1] = (int)(pfVar3[1] * 65536.00000000); - piVar2[2] = (int)(pfVar3[2] * 65536.00000000); - piVar2[3] = (int)(pfVar3[3] * 65536.00000000); - fVar4 = *param_1 * 65536.00000000; - piVar2 = param_2; - pfVar3 = param_1; - } while (iVar1 != 4); - } - *param_2 = (int)fVar4; - param_2[1] = (int)(param_1[1] * 65536.00000000); - param_2[2] = (int)(param_1[2] * 65536.00000000); - param_2[3] = (int)(param_1[3] * 65536.00000000); - return; -} - - - -void proc_7F05914C(int *param_1,float *param_2) - -{ - int iVar1; - float *pfVar2; - int *piVar3; - int iVar4; - - iVar1 = 1; - iVar4 = *param_1; - pfVar2 = param_2; - piVar3 = param_1; - if (true) { - do { - iVar1 += 1; - param_2 = pfVar2 + 4; - param_1 = piVar3 + 4; - *pfVar2 = (float)iVar4 / 65536.00000000; - pfVar2[1] = (float)piVar3[1] / 65536.00000000; - pfVar2[2] = (float)piVar3[2] / 65536.00000000; - pfVar2[3] = (float)piVar3[3] / 65536.00000000; - iVar4 = *param_1; - pfVar2 = param_2; - piVar3 = param_1; - } while (iVar1 != 4); - } - *param_2 = (float)iVar4 / 65536.00000000; - param_2[1] = (float)param_1[1] / 65536.00000000; - param_2[2] = (float)param_1[2] / 65536.00000000; - param_2[3] = (float)param_1[3] / 65536.00000000; - return; -} - - - -void proc_7F059244(int param_1,uint *param_2) - -{ - uint uVar1; - uint uVar2; - int iVar3; - uint *puVar4; - - iVar3 = 0; - do { - puVar4 = (uint *)(param_1 + iVar3 * 8); - uVar1 = *puVar4; - uVar2 = puVar4[1]; - puVar4 = (uint *)(param_1 + (iVar3 + 1) * 8); - *param_2 = uVar1 & 0xffff0000 | uVar2 >> 0x10; - param_2[8] = uVar1 << 0x10 | uVar2 & 0xffff; - uVar1 = puVar4[1]; - uVar2 = *puVar4; - puVar4 = (uint *)(param_1 + (iVar3 + 2) * 8); - param_2[9] = uVar2 << 0x10 | uVar1 & 0xffff; - param_2[1] = uVar2 & 0xffff0000 | uVar1 >> 0x10; - uVar1 = puVar4[1]; - uVar2 = *puVar4; - puVar4 = (uint *)(param_1 + (iVar3 + 3) * 8); - param_2[10] = uVar2 << 0x10 | uVar1 & 0xffff; - param_2[2] = uVar2 & 0xffff0000 | uVar1 >> 0x10; - uVar1 = puVar4[1]; - uVar2 = *puVar4; - iVar3 += 4; - param_2[0xb] = uVar2 << 0x10 | uVar1 & 0xffff; - param_2[3] = uVar2 & 0xffff0000 | uVar1 >> 0x10; - param_2 = param_2 + 4; - } while (iVar3 != 8); - return; -} - - - -void proc_7F059334(uint *param_1,int param_2) - -{ - uint uVar1; - uint uVar2; - int iVar3; - uint *puVar4; - - iVar3 = 0; - do { - uVar1 = *param_1; - uVar2 = param_1[8]; - puVar4 = (uint *)(param_2 + iVar3 * 8); - *puVar4 = uVar1 & 0xffff0000 | uVar2 >> 0x10; - puVar4[1] = uVar1 << 0x10 | uVar2 & 0xffff; - uVar1 = param_1[9]; - uVar2 = param_1[1]; - puVar4 = (uint *)(param_2 + (iVar3 + 1) * 8); - puVar4[1] = uVar2 << 0x10 | uVar1 & 0xffff; - *puVar4 = uVar2 & 0xffff0000 | uVar1 >> 0x10; - uVar1 = param_1[10]; - uVar2 = param_1[2]; - puVar4 = (uint *)(param_2 + (iVar3 + 2) * 8); - puVar4[1] = uVar2 << 0x10 | uVar1 & 0xffff; - *puVar4 = uVar2 & 0xffff0000 | uVar1 >> 0x10; - uVar1 = param_1[0xb]; - uVar2 = param_1[3]; - puVar4 = (uint *)(param_2 + (iVar3 + 3) * 8); - iVar3 += 4; - puVar4[1] = uVar2 << 0x10 | uVar1 & 0xffff; - *puVar4 = uVar2 & 0xffff0000 | uVar1 >> 0x10; - param_1 = param_1 + 4; - } while (iVar3 != 8); - return; -} - - - -void proc_7F059424(float *param_1,float param_2,float param_3,float param_4,float param_5, - float param_6,float param_7,float param_8,float param_9,float param_10) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float in_stack_00000020; - float in_stack_00000024; - - fVar1 = sqrtf(param_7 * param_7 + param_8 * param_8 + param_9 * param_9); - fVar1 = -1.00000000 / fVar1; - param_7 = param_7 * fVar1; - param_8 = param_8 * fVar1; - param_9 = param_9 * fVar1; - fVar5 = in_stack_00000020 * param_9 - in_stack_00000024 * param_8; - fVar6 = in_stack_00000024 * param_7 - param_10 * param_9; - fVar7 = param_10 * param_8 - in_stack_00000020 * param_7; - fVar1 = sqrtf(fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7); - fVar1 = 1.00000000 / fVar1; - fVar5 = fVar5 * fVar1; - fVar6 = fVar6 * fVar1; - fVar7 = fVar7 * fVar1; - fVar2 = param_8 * fVar7 - param_9 * fVar6; - fVar3 = param_9 * fVar5 - param_7 * fVar7; - fVar4 = param_7 * fVar6 - param_8 * fVar5; - fVar1 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3 + fVar4 * fVar4); - fVar1 = 1.00000000 / fVar1; - *param_1 = fVar5; - param_1[4] = fVar6; - param_1[8] = fVar7; - param_1[1] = fVar2 * fVar1; - param_1[5] = fVar3 * fVar1; - param_1[0xc] = -(param_4 * fVar5 + param_5 * fVar6 + param_6 * fVar7); - param_1[9] = fVar4 * fVar1; - param_1[2] = param_7; - param_1[6] = param_8; - param_1[10] = param_9; - param_1[0xd] = -(param_4 * fVar2 * fVar1 + param_5 * fVar3 * fVar1 + param_6 * fVar4 * fVar1); - param_1[3] = 0.00000000; - param_1[7] = 0.00000000; - param_1[0xb] = 0.00000000; - param_1[0xf] = 1.00000000; - param_1[0xe] = -(param_4 * param_7 + param_5 * param_8 + param_6 * param_9); - return; -} - - - -void proc_7F059694(float *param_1,float param_2,float param_3,float param_4,float param_5, - float param_6,float param_7,float param_8,float param_9,float param_10) - -{ - proc_7F059424(param_1,param_4,param_5,param_4,param_5,param_6,param_7 - param_4,param_8 - param_5, - param_9 - param_6,param_10); - return; -} - - - -void proc_7F059708(float *param_1,float param_2,float param_3,float param_4,float param_5, - float param_6,float param_7,float param_8,float param_9,float param_10) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float in_stack_00000020; - float in_stack_00000024; - - fVar1 = sqrtf(param_7 * param_7 + param_8 * param_8 + param_9 * param_9); - fVar1 = -1.00000000 / fVar1; - param_7 = param_7 * fVar1; - param_8 = param_8 * fVar1; - param_9 = param_9 * fVar1; - fVar5 = in_stack_00000020 * param_9 - in_stack_00000024 * param_8; - fVar6 = in_stack_00000024 * param_7 - param_10 * param_9; - fVar7 = param_10 * param_8 - in_stack_00000020 * param_7; - fVar1 = sqrtf(fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7); - fVar1 = 1.00000000 / fVar1; - fVar5 = fVar5 * fVar1; - fVar6 = fVar6 * fVar1; - fVar7 = fVar7 * fVar1; - fVar2 = param_8 * fVar7 - param_9 * fVar6; - fVar3 = param_9 * fVar5 - param_7 * fVar7; - fVar4 = param_7 * fVar6 - param_8 * fVar5; - fVar1 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3 + fVar4 * fVar4); - fVar1 = 1.00000000 / fVar1; - *param_1 = fVar5; - param_1[4] = fVar2 * fVar1; - param_1[8] = param_7; - param_1[1] = fVar6; - param_1[5] = fVar3 * fVar1; - param_1[9] = param_8; - param_1[0xc] = param_4; - param_1[2] = fVar7; - param_1[0xd] = param_5; - param_1[10] = param_9; - param_1[6] = fVar4 * fVar1; - param_1[3] = 0.00000000; - param_1[7] = 0.00000000; - param_1[0xb] = 0.00000000; - param_1[0xf] = 1.00000000; - param_1[0xe] = param_6; - return; -} - - - -void proc_7F059908(float *param_1,float param_2,float param_3,float param_4,float param_5, - float param_6,float param_7,float param_8,float param_9,float param_10) - -{ - proc_7F059708(param_1,param_4,param_5,param_4,param_5,param_6,param_7 - param_4,param_8 - param_5, - param_9 - param_6,param_10); - return; -} - - - -uint proc_7F05997C(float param_1,float param_2) - -{ - float fVar1; - uint uVar2; - float fVar3; - uint uVar4; - - if (param_1 + param_2 <= 2.00000000) { - return 0xffff; - } - fVar3 = 131072.00000000 / (param_1 + param_2); - if (false) { - fVar1 = ROUND(fVar3); - } - else { - fVar1 = FLOOR(fVar3); - } - uVar4 = (uint)fVar1; - if (false) { - if (false) { - fVar3 = ROUND(fVar3 - 2147483648.00000000); - } - else { - fVar3 = FLOOR(fVar3 - 2147483648.00000000); - } - if (true) { - uVar4 = (int)fVar3 | 0x80000000; - goto LAB_7f059a2c; - } - } - else { - if (-1 < (int)uVar4) goto LAB_7f059a2c; - } - uVar4 = 0xffffffff; -LAB_7f059a2c: - uVar2 = uVar4 & 0xffff; - if ((uVar4 & 0xffff) == 0) { - uVar2 = 1; - } - return uVar2; -} - - - -void proc_7F059A48(float *param_1,undefined2 *param_2,float param_3,float param_4,float param_5, - float param_6,float param_7) - -{ - uint uVar1; - float fVar2; - float fVar3; - float fVar4; - float in_stack_00000014; - float in_stack_00000018; - - fVar2 = cosf(param_5 * 0.50000000); - fVar3 = sinf(param_5 * 0.50000000); - fVar4 = in_stack_00000018 * 65536.00000000; - param_1[4] = 0.00000000; - param_1[8] = 0.00000000; - param_1[0xc] = 0.00000000; - param_1[1] = 0.00000000; - param_1[9] = 0.00000000; - param_1[0xd] = 0.00000000; - param_1[2] = 0.00000000; - param_1[6] = 0.00000000; - *param_1 = ((fVar2 / fVar3) / param_6) * fVar4; - param_1[5] = (fVar2 / fVar3) * fVar4; - param_1[10] = ((param_7 + in_stack_00000014) / (param_7 - in_stack_00000014)) * fVar4; - param_1[3] = 0.00000000; - param_1[7] = 0.00000000; - param_1[0xf] = 0.00000000; - param_1[0xb] = -fVar4; - param_1[0xe] = (((param_7 + param_7) * in_stack_00000014) / (param_7 - in_stack_00000014)) * fVar4 - ; - if (param_2 != NULL) { - uVar1 = proc_7F05997C(param_7,in_stack_00000014); - *param_2 = (short)uVar1; - } - return; -} - - - -void proc_7F059B58(float *param_1,float param_2,float param_3,float param_4,float param_5) - -{ - float in_a3_lo; - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fStackX8; - float fStackX12; - float in_stack_00000010; - - fStackX8 = param_5; - fStackX12 = in_a3_lo; - guNormalize(&fStackX8,&fStackX12,(float *)&stack0x00000010); - fVar1 = sinf(param_4); - fVar2 = cosf(param_4); - fVar3 = sqrtf(fStackX8 * fStackX8 + in_stack_00000010 * in_stack_00000010); - if (fVar3 == 0.00000000) { - proc_7F057FD0(param_1); - } - else { - fVar4 = 1.00000000 / fVar3; - *param_1 = (-(in_stack_00000010 * fVar2) - fStackX12 * fStackX8 * fVar1) * fVar4; - param_1[4] = fVar1 * fVar3; - param_1[0xc] = 0.00000000; - param_1[8] = (fStackX8 * fVar2 - fStackX12 * in_stack_00000010 * fVar1) * fVar4; - param_1[1] = (in_stack_00000010 * fVar1 - fStackX12 * fStackX8 * fVar2) * fVar4; - param_1[5] = fVar2 * fVar3; - param_1[0xd] = 0.00000000; - param_1[9] = (-(fStackX8 * fVar1) - fStackX12 * in_stack_00000010 * fVar2) * fVar4; - param_1[2] = -fStackX8; - param_1[6] = -fStackX12; - param_1[0xe] = 0.00000000; - param_1[3] = 0.00000000; - param_1[7] = 0.00000000; - param_1[10] = -in_stack_00000010; - param_1[0xb] = 0.00000000; - param_1[0xf] = 1.00000000; - } - return; -} - - - -// WARNING: Restarted to delay deadcode elimination for space: stack - -void proc_7F059CE8(float *param_1,float param_2,float param_3,float param_4,float param_5) - -{ - undefined4 in_a3_lo; - undefined4 unaff_retaddr; - undefined auStackX0 [12]; - undefined4 in_stack_00000010; - undefined in_stack_00000014 [28]; - undefined8 in_stack_fffffff4; - - guAlignF((float [4] [4]) - CONCAT1648(CONCAT124(CONCAT48(in_stack_00000010,in_stack_fffffff4),unaff_retaddr), - CONCAT2028(CONCAT164(CONCAT124(auStackX0,in_a3_lo),in_stack_00000010), - in_stack_00000014)),param_4 * flt_800536F0,param_5,(float)param_1, - param_4 * flt_800536F0); - return; -} - - - -void proc_7F059D30(void) - -{ - return; -} - - - -void proc_7F059D38(undefined4 *param_1,undefined4 *param_2) - -{ - undefined4 uVar1; - - *param_2 = *param_1; - param_2[1] = param_1[4]; - param_2[2] = param_1[8]; - param_2[4] = param_1[1]; - param_2[5] = param_1[5]; - param_2[6] = param_1[9]; - param_2[8] = param_1[2]; - param_2[9] = param_1[6]; - uVar1 = param_1[10]; - param_2[0xc] = 0; - param_2[0xd] = 0; - param_2[0xe] = 0; - param_2[3] = 0; - param_2[7] = 0; - param_2[0xb] = 0; - param_2[0xf] = 0x3f800000; - param_2[10] = uVar1; - return; -} - - - -void proc_7F059DAC(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - - fVar2 = *param_1; - fVar1 = 1.00000000 / (param_1[8] * param_1[8] + fVar2 * fVar2 + param_1[4] * param_1[4]); - *param_2 = fVar2 * fVar1; - param_2[1] = param_1[4] * fVar1; - param_2[2] = param_1[8] * fVar1; - param_2[4] = param_1[1] * fVar1; - param_2[5] = param_1[5] * fVar1; - param_2[6] = param_1[9] * fVar1; - param_2[8] = param_1[2] * fVar1; - param_2[9] = param_1[6] * fVar1; - fVar2 = param_1[10]; - param_2[0xf] = 1.00000000; - param_2[0xc] = 0.00000000; - param_2[0xd] = 0.00000000; - param_2[0xe] = 0.00000000; - param_2[3] = 0.00000000; - param_2[7] = 0.00000000; - param_2[0xb] = 0.00000000; - param_2[10] = fVar2 * fVar1; - return; -} - - - -void proc_7F059E64(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - - fVar3 = *param_1; - fVar1 = 1.00000000 / (param_1[8] * param_1[8] + fVar3 * fVar3 + param_1[4] * param_1[4]); - *param_2 = fVar3 * fVar1; - param_2[1] = param_1[4] * fVar1; - param_2[2] = param_1[8] * fVar1; - param_2[4] = param_1[1] * fVar1; - param_2[5] = param_1[5] * fVar1; - param_2[6] = param_1[9] * fVar1; - param_2[8] = param_1[2] * fVar1; - param_2[9] = param_1[6] * fVar1; - param_2[10] = param_1[10] * fVar1; - param_2[0xc] = -(param_1[0xe] * param_2[8] + *param_2 * param_1[0xc] + param_2[4] * param_1[0xd]); - param_2[0xd] = -(param_1[0xe] * param_2[9] + param_2[1] * param_1[0xc] + param_2[5] * param_1[0xd] - ); - fVar2 = param_1[0xc]; - fVar3 = param_1[0xd]; - fVar1 = param_1[0xe]; - param_2[0xf] = 1.00000000; - param_2[3] = 0.00000000; - param_2[7] = 0.00000000; - param_2[0xb] = 0.00000000; - param_2[0xe] = -(fVar1 * param_2[10] + param_2[2] * fVar2 + param_2[6] * fVar3); - return; -} - - - -void proc_7F059FB8(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - - fVar3 = param_1[5]; - fVar4 = param_1[10]; - fVar5 = param_1[6]; - fVar2 = param_1[9]; - fVar1 = 1.00000000 / - ((((*param_1 * fVar3 * fVar4 + param_1[1] * fVar5 * param_1[8] + - param_1[2] * param_1[4] * fVar2) - param_1[2] * fVar3 * param_1[8]) - - param_1[1] * param_1[4] * fVar4) - *param_1 * fVar5 * fVar2); - *param_2 = (fVar3 * fVar4 - fVar2 * fVar5) * fVar1; - param_2[4] = (param_1[6] * param_1[8] - param_1[10] * param_1[4]) * fVar1; - param_2[8] = (param_1[4] * param_1[9] - param_1[8] * param_1[5]) * fVar1; - param_2[1] = (param_1[2] * param_1[9] - param_1[10] * param_1[1]) * fVar1; - param_2[5] = (*param_1 * param_1[10] - param_1[8] * param_1[2]) * fVar1; - param_2[9] = (param_1[1] * param_1[8] - param_1[9] * *param_1) * fVar1; - param_2[2] = (param_1[1] * param_1[6] - param_1[5] * param_1[2]) * fVar1; - param_2[6] = (param_1[2] * param_1[4] - param_1[6] * *param_1) * fVar1; - param_2[10] = (*param_1 * param_1[5] - param_1[4] * param_1[1]) * fVar1; - param_2[0xc] = -(param_2[8] * param_1[0xe] + param_1[0xc] * *param_2 + param_1[0xd] * param_2[4]); - param_2[0xd] = -(param_2[9] * param_1[0xe] + param_1[0xc] * param_2[1] + param_1[0xd] * param_2[5] - ); - fVar3 = param_1[0xc]; - fVar2 = param_1[0xd]; - fVar1 = param_1[0xe]; - param_2[0xf] = 1.00000000; - param_2[3] = 0.00000000; - param_2[7] = 0.00000000; - param_2[0xb] = 0.00000000; - param_2[0xe] = -(param_2[10] * fVar1 + fVar3 * param_2[2] + fVar2 * param_2[6]); - return; -} - - - -void proc_7F05A250(undefined8 param_1,undefined8 param_2) - -{ - float *pfVar1; - int iVar2; - undefined4 extraout_a1_hi; - float *pfVar3; - undefined4 extraout_a1_lo; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - - pfVar3 = (float *)param_2; - proc_7F05A310(param_1,param_2); - fVar4 = proc_7F05A774((longlong)(int)param_1,CONCAT44(extraout_a1_hi,extraout_a1_lo)); - fVar4 = 1.00000000 / fVar4; - iVar2 = 1; - fVar9 = pfVar3[1]; - fVar10 = *pfVar3 * fVar4; - fVar8 = pfVar3[2]; - fVar11 = pfVar3[3]; - pfVar1 = pfVar3; - if (true) { - do { - fVar7 = fVar9 * fVar4; - fVar9 = pfVar1[5]; - fVar6 = fVar8 * fVar4; - fVar8 = pfVar1[6]; - iVar2 += 1; - fVar5 = fVar11 * fVar4; - fVar11 = pfVar1[7]; - *pfVar1 = fVar10; - fVar10 = pfVar1[4] * fVar4; - pfVar1[1] = fVar7; - pfVar1[2] = fVar6; - pfVar3 = pfVar1 + 4; - pfVar1[3] = fVar5; - pfVar1 = pfVar3; - } while (iVar2 != 4); - } - *pfVar3 = fVar10; - pfVar3[1] = fVar9 * fVar4; - pfVar3[2] = fVar8 * fVar4; - pfVar3[3] = fVar11 * fVar4; - return; -} - - - -void proc_7F05A310(undefined8 param_1,undefined8 param_2) - -{ - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - undefined8 extraout_a0_04; - undefined8 extraout_a0_05; - undefined8 extraout_a0_06; - undefined8 extraout_a0_07; - undefined8 extraout_a0_08; - undefined8 extraout_a0_09; - undefined8 extraout_a0_10; - undefined8 extraout_a0_11; - undefined8 extraout_a0_12; - undefined8 extraout_a0_13; - undefined8 extraout_a1; - float *pfVar1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - undefined8 extraout_a1_03; - undefined8 extraout_a1_04; - undefined8 extraout_a1_05; - undefined8 extraout_a1_06; - undefined8 extraout_a1_07; - undefined8 extraout_a1_08; - undefined8 extraout_a1_09; - undefined8 extraout_a1_10; - undefined8 extraout_a1_11; - undefined8 extraout_a1_12; - undefined8 extraout_a1_13; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - - pfVar1 = (float *)param_1; - fVar5 = pfVar1[2]; - fVar18 = pfVar1[1]; - fVar17 = *pfVar1; - fVar6 = pfVar1[3]; - fVar7 = pfVar1[4]; - fVar8 = pfVar1[8]; - fVar9 = pfVar1[5]; - fVar4 = pfVar1[7]; - fVar2 = pfVar1[6]; - fVar14 = pfVar1[0xd]; - fVar10 = pfVar1[9]; - fVar12 = pfVar1[0xb]; - fVar11 = pfVar1[10]; - fVar16 = pfVar1[0xf]; - fVar15 = pfVar1[0xe]; - fVar13 = pfVar1[0xc]; - fVar3 = proc_7F05A928(fVar9,fVar10,param_1,param_2,fVar14,fVar2,fVar11,fVar15,fVar4,fVar12,fVar16) - ; - pfVar1 = (float *)param_2; - *pfVar1 = fVar3; - fVar3 = proc_7F05A928(fVar7,fVar8,extraout_a0,extraout_a1,fVar13,fVar2,fVar11,fVar15,fVar4,fVar12, - fVar16); - pfVar1[4] = -fVar3; - fVar3 = proc_7F05A928(fVar7,fVar8,extraout_a0_00,extraout_a1_00,fVar13,fVar9,fVar10,fVar14,fVar4, - fVar12,fVar16); - pfVar1[8] = fVar3; - fVar3 = proc_7F05A928(fVar7,fVar8,extraout_a0_01,extraout_a1_01,fVar13,fVar9,fVar10,fVar14,fVar2, - fVar11,fVar15); - pfVar1[0xc] = -fVar3; - fVar3 = proc_7F05A928(fVar18,fVar10,extraout_a0_02,extraout_a1_02,fVar14,fVar5,fVar11,fVar15,fVar6 - ,fVar12,fVar16); - pfVar1[1] = -fVar3; - fVar3 = proc_7F05A928(fVar17,fVar8,extraout_a0_03,extraout_a1_03,fVar13,fVar5,fVar11,fVar15,fVar6, - fVar12,fVar16); - pfVar1[5] = fVar3; - fVar3 = proc_7F05A928(fVar17,fVar8,extraout_a0_04,extraout_a1_04,fVar13,fVar18,fVar10,fVar14,fVar6 - ,fVar12,fVar16); - pfVar1[9] = -fVar3; - fVar3 = proc_7F05A928(fVar17,fVar8,extraout_a0_05,extraout_a1_05,fVar13,fVar18,fVar10,fVar14,fVar5 - ,fVar11,fVar15); - pfVar1[0xd] = fVar3; - fVar3 = proc_7F05A928(fVar18,fVar9,extraout_a0_06,extraout_a1_06,fVar14,fVar5,fVar2,fVar15,fVar6, - fVar4,fVar16); - pfVar1[2] = fVar3; - fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_07,extraout_a1_07,fVar13,fVar5,fVar2,fVar15,fVar6, - fVar4,fVar16); - pfVar1[6] = -fVar3; - fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_08,extraout_a1_08,fVar13,fVar18,fVar9,fVar14,fVar6, - fVar4,fVar16); - pfVar1[10] = fVar3; - fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_09,extraout_a1_09,fVar13,fVar18,fVar9,fVar14,fVar5, - fVar2,fVar15); - pfVar1[0xe] = -fVar3; - fVar3 = proc_7F05A928(fVar18,fVar9,extraout_a0_10,extraout_a1_10,fVar10,fVar5,fVar2,fVar11,fVar6, - fVar4,fVar12); - pfVar1[3] = -fVar3; - fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_11,extraout_a1_11,fVar8,fVar5,fVar2,fVar11,fVar6, - fVar4,fVar12); - pfVar1[7] = fVar3; - fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_12,extraout_a1_12,fVar8,fVar18,fVar9,fVar10,fVar6, - fVar4,fVar12); - pfVar1[0xb] = -fVar3; - fVar2 = proc_7F05A928(fVar17,fVar7,extraout_a0_13,extraout_a1_13,fVar8,fVar18,fVar9,fVar10,fVar5, - fVar2,fVar11); - pfVar1[0xf] = fVar2; - return; -} - - - -float proc_7F05A774(undefined8 param_1,undefined8 param_2) - -{ - float *pfVar1; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - - pfVar1 = (float *)param_1; - fVar6 = *pfVar1; - fVar9 = pfVar1[1]; - fVar12 = pfVar1[2]; - fVar14 = pfVar1[3]; - fVar7 = pfVar1[6]; - fVar2 = pfVar1[5]; - fVar16 = pfVar1[4]; - fVar10 = pfVar1[10]; - fVar5 = pfVar1[7]; - fVar18 = pfVar1[9]; - fVar17 = pfVar1[8]; - fVar13 = pfVar1[0xc]; - fVar19 = pfVar1[0xb]; - fVar15 = pfVar1[0xd]; - fVar8 = pfVar1[0xe]; - fVar11 = pfVar1[0xf]; - fVar3 = proc_7F05A928(fVar16,fVar17,param_1,param_2,fVar13,fVar2,fVar18,fVar15,fVar5,fVar19,fVar11 - ); - fVar4 = proc_7F05A928(fVar16,fVar17,extraout_a0,extraout_a1,fVar13,fVar7,fVar10,fVar8,fVar5,fVar19 - ,fVar11); - fVar5 = proc_7F05A928(fVar2,fVar18,extraout_a0_00,extraout_a1_00,fVar15,fVar7,fVar10,fVar8,fVar5, - fVar19,fVar11); - fVar2 = proc_7F05A928(fVar16,fVar17,extraout_a0_01,extraout_a1_01,fVar13,fVar2,fVar18,fVar15,fVar7 - ,fVar10,fVar8); - return ((fVar6 * fVar5 - fVar9 * fVar4) + fVar12 * fVar3) - fVar2 * fVar14; -} - - - -float proc_7F05A928(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, - float param_6,float param_7,float param_8,float param_9,float param_10, - float param_11) - -{ - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - float fVar1; - float fVar2; - float fVar3; - - fVar1 = proc_7F05A9B8(param_2,param_5,param_3,param_4,param_10,param_11); - fVar2 = proc_7F05A9B8(param_7,param_8,extraout_a0,extraout_a1,param_10,param_11); - fVar3 = proc_7F05A9B8(param_2,param_5,extraout_a0_00,extraout_a1_00,param_7,param_8); - return fVar3 * param_9 + (param_1 * fVar2 - param_6 * fVar1); -} - - - -float proc_7F05A9B8(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, - float param_6) - -{ - return param_1 * param_6 - param_2 * param_5; -} - - - -void proc_7F05A9E0(float param_1) - -{ - float fVar1; - float fVar2; - - fVar1 = sinf(param_1); - fVar2 = cosf(param_1); - sqrtf(fVar1 / fVar2 + 1.00000000); - return; -} - - - -float convert_angle_using_inverse(f32 vector1,f32 vector2) - -{ - float fVar1; - - if ((float)vector1 == 0.00000000) { - fVar1 = flt_80053700; - if (0.00000000 <= (float)vector2) { - fVar1 = 0.00000000; - } - } - else { - if ((float)vector2 == 0.00000000) { - fVar1 = flt_80053704; - if ((float)vector1 <= 0.00000000) { - fVar1 = flt_80053708; - } - } - else { - fVar1 = sqrtf((float)vector1 * (float)vector1 + (float)vector2 * (float)vector2); - if ((float)vector2 < (float)vector1) { - fVar1 = proc_7F05ACB0((float)vector2 / fVar1); - if ((float)vector1 < 0.00000000) { - fVar1 = flt_8005370C - fVar1; - } - } - else { - fVar1 = proc_7F05ACB0((float)vector1 / fVar1); - fVar1 = flt_80053710 - fVar1; - if ((float)vector2 < 0.00000000) { - fVar1 = flt_80053714 - fVar1; - } - if (fVar1 < 0.00000000) { - fVar1 = fVar1 + flt_80053718; - } - } - } - } - return fVar1; -} - - - -int proc_7F05AB70(uint param_1) - -{ - uint uVar1; - int iVar2; - undefined *puVar3; - uint uVar4; - - uVar1 = 7; - if ((int)param_1 < 0x7fe0) { - uVar1 = 0x1ff; - if ((int)param_1 < 0x7800) { - iVar2 = 9; - puVar3 = &table_1; - } - else { - uVar1 = 0x1f; - iVar2 = 5; - puVar3 = &table_2; - param_1 -= 0x7800; - } - } - else { - iVar2 = 3; - puVar3 = &table_3; - param_1 -= 0x7fe0; - } - uVar4 = (uint)*(ushort *)(puVar3 + ((int)param_1 >> iVar2) * 2); - return (int)(uVar4 - ((int)((uVar4 - (uint)*(ushort *)(puVar3 + ((int)param_1 >> iVar2) * 2 + 1)) - * (param_1 & uVar1)) >> iVar2)); -} - - - -uint proc_7F05ABF0(short param_1) - -{ - uint uVar1; - - uVar1 = SEXT24(param_1); - if ((int)uVar1 < 0) { - uVar1 = -uVar1; - } - uVar1 = proc_7F05AB70(uVar1); - if (param_1 < 0) { - uVar1 = 0xffff - uVar1; - } - return uVar1 & 0xffff; -} - - - -short proc_7F05AC44(short param_1) - -{ - int iVar1; - short sVar2; - uint uVar3; - - uVar3 = SEXT24(param_1); - if ((int)uVar3 < 0) { - uVar3 = -uVar3; - } - iVar1 = proc_7F05AB70(uVar3); - if (param_1 < 0) { - sVar2 = (short)iVar1 + -0x8000; - } - else { - sVar2 = 0x7fff - (short)iVar1; - } - return sVar2; -} - - - -float proc_7F05ACB0(float param_1) - -{ - uint uVar1; - short sVar2; - float fVar3; - - if (1.00000000 <= param_1) { - sVar2 = 0x7fff; - } - else { - if (param_1 <= -1.00000000) { - sVar2 = -0x7fff; - } - else { - sVar2 = (short)(int)(param_1 * flt_80053720); - } - } - uVar1 = proc_7F05ABF0(sVar2); - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - return (fVar3 * flt_80053724) / flt_80053728; -} - - - -float proc_7F05AD5C(float param_1) - -{ - short sVar1; - - if (1.00000000 <= param_1) { - sVar1 = 0x7fff; - } - else { - if (param_1 <= -1.00000000) { - sVar1 = -0x7fff; - } - else { - sVar1 = (short)(int)(param_1 * flt_8005372C); - } - } - sVar1 = proc_7F05AC44(sVar1); - return ((float)(int)sVar1 * flt_80053730) / flt_80053734; -} - - - -void proc_7F05AE00(float *param_1,float *param_2,float param_3,float *param_4) - -{ - float *in_a3_lo; - - *in_a3_lo = (*param_2 - *param_1) * (float)param_4 + *param_1; - in_a3_lo[1] = (param_2[1] - param_1[1]) * (float)param_4 + param_1[1]; - in_a3_lo[2] = (param_2[2] - param_1[2]) * (float)param_4 + param_1[2]; - return; -} - - - -float proc_7F05AE50(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, - float param_6,float param_7) - -{ - float fVar1; - float fVar2; - - fVar1 = param_7 * param_7; - fVar2 = fVar1 * param_7; - return param_1 * (fVar1 - (param_7 + fVar2) * 0.50000000) + - param_2 * ((fVar2 * 1.50000000 - fVar1 * 2.50000000) + 1.00000000) + - param_5 * (fVar2 * -1.50000000 + fVar1 + fVar1 + param_7 * 0.50000000) + - param_6 * (fVar2 - fVar1) * 0.50000000; -} - - - -void proc_7F05AEFC(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, - float *param_6) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float *in_stack_00000014; - - fVar1 = (float)param_6 * (float)param_6; - fVar2 = fVar1 * (float)param_6; - fVar3 = (fVar2 - fVar1) * 0.50000000; - fVar4 = fVar1 - ((float)param_6 + fVar2) * 0.50000000; - fVar5 = (fVar2 * 1.50000000 - fVar1 * 2.50000000) + 1.00000000; - fVar1 = fVar2 * -1.50000000 + fVar1 + fVar1 + (float)param_6 * 0.50000000; - *in_stack_00000014 = *param_4 * fVar3 + fVar4 * *param_1 + fVar5 * *param_2 + fVar1 * *param_3; - in_stack_00000014[1] = - param_4[1] * fVar3 + fVar4 * param_1[1] + fVar5 * param_2[1] + fVar1 * param_3[1]; - in_stack_00000014[2] = - param_4[2] * fVar3 + fVar4 * param_1[2] + fVar5 * param_2[2] + fVar1 * param_3[2]; - return; -} - - - -void proc_7F05B024(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, - float param_6,float *param_7) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float in_stack_00000014; - float *in_stack_00000018; - - fVar1 = (float)param_7 * (float)param_7; - fVar2 = fVar1 * (float)param_7; - fVar3 = (fVar2 - fVar1) * in_stack_00000014; - fVar4 = ((fVar1 + fVar1) - ((float)param_7 + fVar2)) * in_stack_00000014; - fVar5 = (2.00000000 - in_stack_00000014) * fVar2 + fVar1 * (in_stack_00000014 - 3.00000000) + - 1.00000000; - fVar1 = (in_stack_00000014 - 2.00000000) * fVar2 + - fVar1 * (3.00000000 - (in_stack_00000014 + in_stack_00000014)) + - (float)param_7 * in_stack_00000014; - *in_stack_00000018 = *param_4 * fVar3 + fVar4 * *param_1 + fVar5 * *param_2 + fVar1 * *param_3; - in_stack_00000018[1] = - param_4[1] * fVar3 + fVar4 * param_1[1] + fVar5 * param_2[1] + fVar1 * param_3[1]; - in_stack_00000018[2] = - param_4[2] * fVar3 + fVar4 * param_1[2] + fVar5 * param_2[2] + fVar1 * param_3[2]; - return; -} - - - -float proc_7F05B154(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, - float param_6,float param_7) - -{ - float fVar1; - float fVar2; - float fVar3; - - fVar1 = param_7 * param_7; - fVar2 = fVar1 * param_7; - fVar3 = ((fVar2 + fVar2) - fVar1 * 3.00000000) + 1.00000000; - return param_1 * fVar3 + param_2 * (1.00000000 - fVar3) + - param_5 * ((fVar2 - (fVar1 + fVar1)) + param_7) + param_6 * (fVar2 - fVar1); -} - - - -void proc_7F05B1D4(ushort *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - - fVar1 = flt_80053740; - fVar2 = (float)(uint)*param_1; - if (false) { - fVar2 = fVar2 + 4294967296.00000000; - } - fVar2 = cosf(fVar2 * flt_80053740 * 0.50000000); - fVar5 = (float)(uint)*param_1; - if (false) { - fVar5 = fVar5 + 4294967296.00000000; - } - fVar5 = sinf(fVar5 * fVar1 * 0.50000000); - fVar3 = (float)(uint)param_1[1]; - if (false) { - fVar3 = fVar3 + 4294967296.00000000; - } - fVar3 = cosf(fVar3 * fVar1 * 0.50000000); - fVar6 = (float)(uint)param_1[1]; - if (false) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar6 = sinf(fVar6 * fVar1 * 0.50000000); - fVar4 = (float)(uint)param_1[2]; - if (false) { - fVar4 = fVar4 + 4294967296.00000000; - } - fVar4 = cosf(fVar4 * fVar1 * 0.50000000); - fVar7 = (float)(uint)param_1[2]; - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar1 = sinf(fVar7 * fVar1 * 0.50000000); - *param_2 = fVar2 * fVar3 * fVar4 + fVar5 * fVar6 * fVar1; - param_2[1] = fVar5 * fVar3 * fVar4 - fVar2 * fVar6 * fVar1; - param_2[2] = fVar2 * fVar6 * fVar4 + fVar5 * fVar3 * fVar1; - param_2[3] = fVar2 * fVar3 * fVar1 - fVar5 * fVar6 * fVar4; - return; -} - - - -void proc_7F05B3F4(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - - fVar1 = cosf(*param_1 * 0.50000000); - fVar2 = sinf(*param_1 * 0.50000000); - fVar3 = cosf(param_1[1] * 0.50000000); - fVar4 = sinf(param_1[1] * 0.50000000); - fVar5 = cosf(param_1[2] * 0.50000000); - fVar6 = sinf(param_1[2] * 0.50000000); - *param_2 = fVar1 * fVar3 * fVar5 + fVar2 * fVar4 * fVar6; - param_2[1] = fVar2 * fVar3 * fVar5 - fVar1 * fVar4 * fVar6; - param_2[2] = fVar1 * fVar4 * fVar5 + fVar2 * fVar3 * fVar6; - param_2[3] = fVar1 * fVar3 * fVar6 - fVar2 * fVar4 * fVar5; - return; -} - - - -void proc_7F05B528(float param_1,undefined8 param_2,float *param_3) - -{ - float fVar1; - - fVar1 = cosf(param_1 * 0.50000000); - *param_3 = fVar1; - fVar1 = sinf(param_1 * 0.50000000); - param_3[1] = fVar1; - param_3[2] = 0.00000000; - param_3[3] = 0.00000000; - return; -} - - - -void proc_7F05B57C(float param_1,undefined8 param_2,float *param_3) - -{ - float fVar1; - - fVar1 = cosf(param_1 * 0.50000000); - *param_3 = fVar1; - param_3[1] = 0.00000000; - fVar1 = sinf(param_1 * 0.50000000); - param_3[2] = fVar1; - param_3[3] = 0.00000000; - return; -} - - - -void proc_7F05B5D4(float param_1,undefined8 param_2,float *param_3) - -{ - float fVar1; - - fVar1 = cosf(param_1 * 0.50000000); - *param_3 = fVar1; - param_3[1] = 0.00000000; - param_3[2] = 0.00000000; - fVar1 = sinf(param_1 * 0.50000000); - param_3[3] = fVar1; - return; -} - - - -void proc_7F05B628(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - - fVar8 = *param_1; - fVar1 = param_1[1]; - fVar2 = param_1[2]; - fVar5 = param_1[3]; - fVar4 = 2.00000000 / (fVar5 * fVar5 + fVar8 * fVar8 + fVar1 * fVar1 + fVar2 * fVar2); - fVar7 = fVar2 * fVar4; - fVar6 = fVar5 * fVar4; - fVar3 = fVar8 * fVar1 * fVar4; - fVar4 = fVar1 * fVar1 * fVar4; - *param_2 = 1.00000000 - (fVar2 * fVar7 + fVar5 * fVar6); - param_2[1] = fVar1 * fVar7 + fVar8 * fVar6; - param_2[2] = fVar1 * fVar6 - fVar8 * fVar7; - param_2[4] = fVar1 * fVar7 - fVar8 * fVar6; - param_2[6] = fVar2 * fVar6 + fVar3; - param_2[5] = 1.00000000 - (fVar4 + fVar5 * fVar6); - param_2[9] = fVar2 * fVar6 - fVar3; - param_2[8] = fVar1 * fVar6 + fVar8 * fVar7; - param_2[0xc] = 0.00000000; - param_2[0xd] = 0.00000000; - param_2[0xe] = 0.00000000; - param_2[3] = 0.00000000; - param_2[7] = 0.00000000; - param_2[0xb] = 0.00000000; - param_2[0xf] = 1.00000000; - param_2[10] = 1.00000000 - (fVar4 + fVar2 * fVar7); - return; -} - - - -void proc_7F05B798(float *param_1,float *param_2) - -{ - int iVar1; - int iVar2; - float *pfVar3; - uint uVar4; - float *pfVar5; - int *piVar6; - int iVar7; - float fVar8; - float __x; - int aiStack32 [8]; - - __x = param_1[10] + *param_1 + param_1[5] + 1.00000000; - if (0.00000000 < __x) { - __x = sqrtf(__x); - fVar8 = 0.50000000 / __x; - *param_2 = __x * 0.50000000; - param_2[1] = (param_1[6] - param_1[9]) * fVar8; - param_2[2] = (param_1[8] - param_1[2]) * fVar8; - param_2[3] = (param_1[1] - param_1[4]) * fVar8; - } - else { - aiStack32[0] = dword_80032430; - aiStack32[1] = DAT_80032434; - aiStack32[2] = DAT_80032438; - if (*param_1 < param_1[5]) { - iVar7 = 0x10; - } - else { - iVar7 = 0; - } - pfVar3 = (float *)((int)param_1 + iVar7); - uVar4 = (uint)(*param_1 < param_1[5]); - iVar7 = uVar4 * 4; - __x = pfVar3[uVar4]; - if (__x < param_1[10]) { - pfVar3 = param_1 + 8; - __x = param_1[10]; - iVar7 = 8; - piVar6 = aiStack32 + 2; - } - else { - piVar6 = aiStack32 + uVar4; - } - iVar1 = *piVar6; - iVar2 = aiStack32[iVar1]; - pfVar5 = param_1 + iVar1 * 4; - param_1 = param_1 + iVar2 * 4; - __x = sqrtf(((__x - pfVar5[iVar1]) - param_1[iVar2]) + 1.00000000); - fVar8 = 0.50000000 / __x; - *(float *)((int)param_2 + iVar7 + 4) = __x * 0.50000000; - *param_2 = (pfVar5[iVar2] - param_1[iVar1]) * fVar8; - param_2[iVar1 + 1] = (*(float *)((int)pfVar5 + iVar7) + pfVar3[iVar1]) * fVar8; - param_2[iVar2 + 1] = (*(float *)((int)param_1 + iVar7) + pfVar3[iVar2]) * fVar8; - } - return; -} - - - -void proc_7F05B9B4(float *param_1,float *param_2,float *param_3) - -{ - proc_7F05B628(param_2,param_3); - param_3[0xc] = *param_1; - param_3[0xd] = param_1[1]; - param_3[0xe] = param_1[2]; - return; -} - - - -void proc_7F05BA08(float *param_1,float *param_2,float param_3,float *param_4) - -{ - float *in_a3_lo; - float __x; - float fVar1; - float fVar2; - - fVar2 = *param_2; - __x = *param_1; - fVar1 = param_2[3] * param_1[3] + __x * fVar2 + param_1[1] * param_2[1] + param_1[2] * param_2[2]; - if (fVar1 < flt_80053744) { - fVar1 = 1.00000000 - (float)param_4; - *in_a3_lo = fVar1 * __x - fVar2 * (float)param_4; - in_a3_lo[1] = fVar1 * param_1[1] - param_2[1] * (float)param_4; - in_a3_lo[2] = fVar1 * param_1[2] - param_2[2] * (float)param_4; - in_a3_lo[3] = fVar1 * param_1[3] - param_2[3] * (float)param_4; - } - else { - if (fVar1 <= flt_80053748) { - __x = proc_7F05ACB0(fVar1); - fVar1 = sinf(__x); - fVar2 = sinf((1.00000000 - (float)param_4) * __x); - fVar2 = fVar2 / fVar1; - __x = sinf((float)param_4 * __x); - __x = __x / fVar1; - *in_a3_lo = *param_2 * __x + fVar2 * *param_1; - in_a3_lo[1] = param_2[1] * __x + fVar2 * param_1[1]; - in_a3_lo[2] = param_2[2] * __x + fVar2 * param_1[2]; - in_a3_lo[3] = param_2[3] * __x + fVar2 * param_1[3]; - } - else { - fVar1 = 1.00000000 - (float)param_4; - *in_a3_lo = fVar2 * (float)param_4 + fVar1 * __x; - in_a3_lo[1] = param_2[1] * (float)param_4 + fVar1 * param_1[1]; - in_a3_lo[2] = param_2[2] * (float)param_4 + fVar1 * param_1[2]; - in_a3_lo[3] = param_2[3] * (float)param_4 + fVar1 * param_1[3]; - } - } - return; -} - - - -void proc_7F05BC68(float *param_1,float param_2,float *param_3) - -{ - float *in_a2_lo; - float fVar1; - float __x; - float fVar2; - float fVar3; - - fVar1 = *param_1; - fVar3 = 1.00000000; - __x = fVar1; - if (fVar1 < 0.00000000) { - fVar3 = -1.00000000; - __x = -fVar1; - } - if (__x < flt_8005374C) { - *in_a2_lo = fVar1 * (float)param_3 - (1.00000000 - (float)param_3) * fVar3; - in_a2_lo[1] = param_1[1] * (float)param_3; - in_a2_lo[2] = param_1[2] * (float)param_3; - in_a2_lo[3] = param_1[3] * (float)param_3; - } - else { - if (__x <= flt_80053750) { - __x = proc_7F05ACB0(__x); - fVar1 = sinf(__x); - fVar2 = sinf((float)param_3 * __x); - fVar2 = fVar2 / fVar1; - __x = sinf((1.00000000 - (float)param_3) * __x); - *in_a2_lo = *param_1 * fVar2 + (__x / fVar1) * fVar3; - in_a2_lo[1] = param_1[1] * fVar2; - in_a2_lo[2] = param_1[2] * fVar2; - in_a2_lo[3] = param_1[3] * fVar2; - } - else { - *in_a2_lo = fVar1 * (float)param_3 + (1.00000000 - (float)param_3) * fVar3; - in_a2_lo[1] = param_1[1] * (float)param_3; - in_a2_lo[2] = param_1[2] * (float)param_3; - in_a2_lo[3] = param_1[3] * (float)param_3; - } - } - return; -} - - - -void proc_7F05BE10(float *param_1,float *param_2) - -{ - if (param_2[3] * param_1[3] + - *param_1 * *param_2 + param_1[1] * param_2[1] + param_1[2] * param_2[2] < 0.00000000) { - *param_2 = -*param_2; - param_2[1] = -param_2[1]; - param_2[2] = -param_2[2]; - param_2[3] = -param_2[3]; - } - return; -} - - - -void proc_7F05BE88(float *param_1,float *param_2,float *param_3) - -{ - *param_3 = ((*param_1 * *param_2 - param_1[1] * param_2[1]) - param_1[2] * param_2[2]) - - param_2[3] * param_1[3]; - param_3[1] = (*param_1 * param_2[1] + *param_2 * param_1[1] + param_1[2] * param_2[3]) - - param_2[2] * param_1[3]; - param_3[2] = (*param_1 * param_2[2] + *param_2 * param_1[2] + param_1[3] * param_2[1]) - - param_2[3] * param_1[1]; - param_3[3] = (*param_1 * param_2[3] + *param_2 * param_1[3] + param_1[1] * param_2[2]) - - param_2[1] * param_1[2]; - return; -} - - - -void proc_7F05BF8C(float *param_1,float *param_2) - -{ - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - proc_7F05BE88(param_1,param_2,&fStack16); - *param_2 = fStack16; - param_2[1] = fStack12; - param_2[2] = fStack8; - param_2[3] = fStack4; - return; -} - - - -void proc_7F05BFD4(float *param_1,undefined4 *param_2) - -{ - float __x; - float fVar1; - - __x = proc_7F05ACB0(*param_1); - fVar1 = sinf(__x); - if (fVar1 == 0.00000000) { - *param_2 = 0; - param_2[1] = 0; - param_2[2] = 0; - param_2[3] = 0; - } - else { - *param_2 = 0; - __x = __x / fVar1; - *(float *)(param_2 + 1) = param_1[1] * __x; - *(float *)(param_2 + 2) = param_1[2] * __x; - *(float *)(param_2 + 3) = param_1[3] * __x; - } - return; -} - - - -void proc_7F05C068(int param_1,float *param_2) - -{ - float __x; - float fVar1; - - __x = sqrtf(*(float *)(param_1 + 0xc) * *(float *)(param_1 + 0xc) + - *(float *)(param_1 + 4) * *(float *)(param_1 + 4) + - *(float *)(param_1 + 8) * *(float *)(param_1 + 8)); - if (__x == 0.00000000) { - param_2[1] = 0.00000000; - param_2[2] = 0.00000000; - param_2[3] = 0.00000000; - *param_2 = 1.00000000; - } - else { - fVar1 = sinf(__x); - fVar1 = fVar1 / __x; - __x = cosf(__x); - *param_2 = __x; - param_2[1] = *(float *)(param_1 + 4) * fVar1; - param_2[2] = *(float *)(param_1 + 8) * fVar1; - param_2[3] = *(float *)(param_1 + 0xc) * fVar1; - } - return; -} - - - -void proc_7F05C138(float *param_1,float *param_2,float *param_3,float *param_4) - -{ - float fStack80; - float fStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float afStack48 [4]; - float afStack32 [4]; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - fStack16 = *param_2; - fStack12 = -param_2[1]; - fStack8 = -param_2[2]; - fStack4 = -param_2[3]; - proc_7F05BE88(&fStack16,param_1,afStack32); - proc_7F05BE88(&fStack16,param_3,afStack48); - proc_7F05BFD4(afStack32,&fStack64); - proc_7F05BFD4(afStack48,&fStack80); - fStack64 = -(fStack80 + fStack64) * 0.25000000; - fStack60 = -(fStack76 + fStack60) * 0.25000000; - fStack56 = -(fStack72 + fStack56) * 0.25000000; - fStack52 = -(fStack68 + fStack52) * 0.25000000; - proc_7F05C068((int)&fStack64,afStack32); - proc_7F05BE88(param_2,afStack32,param_4); - return; -} - - - -void proc_7F05C250(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, - float *param_6) - -{ - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float afStack32 [4]; - float afStack16 [4]; - - proc_7F05BE10(param_1,param_4); - proc_7F05BA08(param_1,param_4,extraout_f12,param_6); - proc_7F05BE10(param_2,param_3); - proc_7F05BA08(param_2,param_3,extraout_f12_00,param_6); - proc_7F05BE10(afStack16,afStack32); - proc_7F05BA08(afStack16,afStack32,extraout_f12_01, - (float *)(((float)param_6 + (float)param_6) * (1.00000000 - (float)param_6))); - return; -} - - - -void proc_7F05C2F0(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, - float *param_6) - -{ - float extraout_f12; - float afStack32 [4]; - float afStack16 [4]; - - proc_7F05C138(param_1,param_2,param_3,afStack16); - proc_7F05C138(param_2,param_3,param_4,afStack32); - proc_7F05C250(param_2,afStack16,afStack32,param_3,extraout_f12,param_6); - return; -} - - - -float truncf(float __x) - -{ - float y; - - if (0.00000000 <= __x) { - return (float)(int)__x; - } - y = (float)(int)__x; - if (__x != y) { - return y - 1.00000000; - } - return y; -} - - - -int proc_7F05C3D8(float param_1) - -{ - int iVar1; - - if (0.00000000 <= param_1) { - return (int)param_1; - } - iVar1 = (int)param_1; - if (param_1 != (float)iVar1) { - return iVar1 + -1; - } - return iVar1; -} - - - -float proc_7F05C440(float param_1) - -{ - float fVar1; - - if (param_1 <= 0.00000000) { - return (float)(int)param_1; - } - fVar1 = (float)(int)param_1; - if (param_1 != fVar1) { - return fVar1 + 1.00000000; - } - return fVar1; -} - - - -int proc_7F05C4B8(float param_1) - -{ - int iVar1; - - if (param_1 <= 0.00000000) { - return (int)param_1; - } - iVar1 = (int)param_1; - if (param_1 != (float)iVar1) { - return iVar1 + 1; - } - return iVar1; -} - - - -void set_cartridges_eject(u32 param_1) - -{ - cartridges_eject = param_1; - return; -} - - - -undefined4 get_cartridges_eject(void) - -{ - return cartridges_eject; -} - - - -void nullsub_73(void) - -{ - return; -} - - - -void proc_7F05C540(float *param_1) - -{ - int iVar1; - int iVar2; - float fVar3; - - iVar2 = DAT_80034ca0; - iVar1 = DAT_80034ca0 * 9; - fVar3 = (float)DWORD_ARRAY_80035904[DAT_80034ca0 * 9 + 3]; - *(float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 1) = - (float)DWORD_ARRAY_80035904[DAT_80034ca0 * 9 + 1] + *param_1; - *(float *)(DWORD_ARRAY_80035904 + iVar2 * 9 + 2) = - (float)DWORD_ARRAY_80035904[iVar1 + 2] + param_1[1]; - *(float *)(DWORD_ARRAY_80035904 + iVar2 * 9 + 3) = fVar3 + param_1[2]; - return; -} - - - -void proc_7F05C594(float *param_1) - -{ - float afStack64 [16]; - - proc_7F058714((float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 4),afStack64); - proc_7F058068(param_1,afStack64); - proc_7F058860(afStack64,(float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 4)); - return; -} - - - -void proc_7F05C614(void) - -{ - if (cartridges_eject != 0) { - pPlayer->field_92C = 1; - proc_7F058714((float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 4), - (float *)&pPlayer->field_8EC); - proc_7F058998(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 1,(int)&pPlayer->field_8EC); - cartridges_eject = 0; - } - return; -} - - - -void proc_7F05C6B8(void) - -{ - DAT_80034ca0 += 1; - if ((DWORD_ARRAY_80035904[DAT_80034ca0 * 9] & 1) != 0) { - DAT_80034ca0 = 0; - } - return; -} - - - -undefined8 proc_7F05C6FC(int param_1,float param_2,float *param_3,int param_4) - -{ - uint uVar1; - int iVar3; - undefined8 uVar2; - int in_a3_lo; - int iVar4; - float fVar5; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float afStack104 [4]; - float afStack88 [4]; - float afStack72 [4]; - float afStack56 [4]; - float fStack40; - float fStack36; - float afStack24 [3]; - undefined4 uStack12; - float *pfStack8; - - iVar3 = 1; - if (*(float *)(param_1 + 0x44) <= (float)param_3) { - fVar5 = *(float *)(param_1 + 0x44); - uVar1 = *(uint *)(param_1 + 0x90); - iVar4 = param_1 + 0x24; - while( true ) { - param_3 = (float *)((float)param_3 - fVar5); - iVar3 += 1; - if (((uVar1 & 1) != 0) || (fVar5 = *(float *)(iVar4 + 0x44), (float)param_3 < fVar5)) break; - uVar1 = *(uint *)(iVar4 + 0x90); - iVar4 = iVar4 + 0x24; - } - iVar4 = iVar3 * 8; - } - else { - iVar4 = 8; - } - param_1 += (iVar4 + iVar3) * 4; - if ((*(uint *)(param_1 + 0x48) & 1) == 0) { - pfStack8 = (float *)((float)param_3 / *(float *)(param_1 + 0x20)); - uStack12 = *(undefined4 *)(param_1 + 0x1c); - proc_7F05B3F4((float *)(param_1 + -0x14),afStack56); - proc_7F05B3F4((float *)(param_1 + 0x10),afStack72); - proc_7F05B3F4((float *)(param_1 + 0x34),afStack88); - proc_7F05B3F4((float *)(param_1 + 0x58),afStack104); - proc_7F05BE10(afStack72,afStack88); - proc_7F05BE10(afStack88,afStack104); - proc_7F05BE10(afStack72,afStack56); - proc_7F05C2F0(afStack56,afStack72,afStack88,afStack104,extraout_f12,pfStack8); - proc_7F05B024((float *)(param_1 + -0x20),(float *)(param_1 + 4),(float *)(param_1 + 0x28), - (float *)(param_1 + 0x4c),extraout_f12_00,extraout_f14,pfStack8); - if (in_a3_lo == 1) { - afStack24[0] = -afStack24[0]; - fStack40 = -fStack40; - fStack36 = -fStack36; - } - proc_7F05B628(&fStack40,(float *)param_4); - proc_7F058998(afStack24,param_4); - uVar2 = 1; - } - else { - proc_7F058714((float *)(param_1 + 0x10),(float *)param_4); - proc_7F058998((undefined4 *)(param_1 + 4),param_4); - uVar2 = 0; - } - return uVar2; -} - - - -undefined * get_ptr_item_statistics(int item) - -{ - if ((&gitem_structs)[item].no_model == 0) { - return (undefined *)(&gitem_structs)[item].item_weapon_stats; - } - return (undefined *)&stru_80032494; -} - - - -void proc_7F05C8F0(undefined4 *param_1) - -{ - ITEM_IDS item; - undefined *puVar1; - - item = get_item_in_hand(0); - puVar1 = get_ptr_item_statistics(item); - *param_1 = *(undefined4 *)(puVar1 + 4); - param_1[1] = *(undefined4 *)(puVar1 + 8); - param_1[2] = *(undefined4 *)(puVar1 + 0xc); - return; -} - - - -void copy_item_in_hand_to_main_list(undefined4 *param_1) - -{ - ITEM_IDS item; - undefined *puVar1; - - item = get_item_in_hand(0); - puVar1 = get_ptr_item_statistics(item); - *(undefined4 *)(puVar1 + 4) = *param_1; - *(undefined4 *)(puVar1 + 8) = param_1[1]; - *(undefined4 *)(puVar1 + 0xc) = param_1[2]; - return; -} - - - -void unknown_takes_playerhand(int hand) - -{ - ITEM_IDS item; - undefined *puVar1; - u32 uVar2; - int *piVar3; - uint uVar4; - uint *puVar5; - float fVar6; - float fVar7; - uint auStack16 [4]; - - item = get_item_in_hand(hand); - puVar1 = get_ptr_item_statistics(item); - piVar3 = &pPlayer->unknown + hand * 0xea; - fVar7 = *(float *)(puVar1 + 0x40); - puVar5 = auStack16 + hand + 2; - uVar4 = piVar3[0x282] + 2U & 3; - if (((int)(piVar3[0x282] + 2U) < 0) && (uVar4 != 0)) { - uVar4 -= 4; - } - *puVar5 = uVar4; - uVar4 = piVar3[0x282] + 1U & 3; - if (((int)(piVar3[0x282] + 1U) < 0) && (uVar4 != 0)) { - uVar4 -= 4; - } - auStack16[hand] = uVar4; - piVar3[0x282] = uVar4; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_9A8 + hand * 0xea + *puVar5 * 3) = - (fVar6 * 0.00000000 - 0.50000000) * flt_80053C14 * fVar7; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_9AC + hand * 0xea + *puVar5 * 3) = - (fVar6 * 0.00000000 - 0.50000000) * flt_80053C18 * fVar7; - (&pPlayer->field_9B0)[hand * 0xea + *puVar5 * 3] = -0x40800000; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_9D8 + hand * 0xea + *puVar5 * 3) = - (fVar6 * 0.00000000 - 0.50000000) * flt_80053C1C * fVar7; - (&pPlayer->field_9DC)[hand * 0xea + *puVar5 * 3] = 0x3f800000; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_9E0 + hand * 0xea + *puVar5 * 3) = - (fVar6 * 0.00000000 - 0.50000000) * flt_80053C20 * fVar7; - uVar2 = get_random_value(); - fVar7 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar7 = fVar7 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_978 + hand * 0xea + *puVar5 * 3) = - fVar7 * 0.00000000 * 0.75000000 + 1.50000000; - uVar2 = get_random_value(); - fVar7 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar7 = fVar7 + 4294967296.00000000; - } - *(float *)(&pPlayer->unknown + hand * 0xea + *puVar5 * 3 + 0x25f) = - (float)(&pPlayer->unknown + hand * 0xea)[0x285] * (fVar7 * 0.00000000 + 2.00000000); - uVar2 = get_random_value(); - fVar7 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar7 = fVar7 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_980 + hand * 0xea + *puVar5 * 3) = - (fVar7 * 0.00000000 - 0.50000000) * 2.50000000; - piVar3 = &pPlayer->unknown + hand * 0xea; - if (piVar3[0x286] < 0) { - *(float *)(&pPlayer->unknown + hand * 0xea + *puVar5 * 3 + 0x25e) = - (float)(&pPlayer->unknown + hand * 0xea + *puVar5 * 3)[0x25e] * -1.00000000; - piVar3 = &pPlayer->unknown + hand * 0xea; - if (piVar3[0x286] == -2) { - piVar3[0x286] = 1; - } - else { - piVar3[0x286] = -2; - } - } - else { - if (piVar3[0x286] == 2) { - piVar3[0x286] = -1; - } - else { - piVar3[0x286] = 2; - } - } - *(float *)(&pPlayer->unknown + hand * 0xea + 0x285) = - -(float)(&pPlayer->unknown + hand * 0xea)[0x285]; - return; -} - - - -ulonglong proc_7F05CEBC(int param_1) - -{ - int *piVar1; - ulonglong uVar2; - - piVar1 = &pPlayer->unknown + param_1; - uVar2 = (ulonglong)(0 < piVar1[0x1fe]); - if ((0 >= piVar1[0x1fe]) && (uVar2 = (ulonglong)(piVar1[0x200] == 0), piVar1[0x200] == 0)) { - uVar2 = (ulonglong)(piVar1[0xa91] < 0); - } - return uVar2; -} - - - -int get_itemtype_in_hand(int hand) - -{ - return pPlayer->hand_item[hand]; -} - - - -Gitemheader * get_ptr_itemheader_in_hand(int hand) - -{ - return (Gitemheader *)(pPlayer->copy_of_body_obj_header + hand * 8); -} - - - -void * proc_7F05CF30(int param_1) - -{ - return pPlayer->ptr_hand_weapon_buffer[param_1]; -} - - - -u32 proc_7F05CF48(int param_1) - -{ - return size_item_buffer[param_1]; -} - - - -void remove_item_in_hand(int hand) - -{ - pPlayer->hand_invisible[hand] = 0; - pPlayer->hand_item[hand] = 0; - pPlayer->field_2A44[hand] = -1; - pPlayer->lock_hand_model[hand] = 1; - return; -} - - - -void place_item_in_hand_swap_and_make_visible(int hand,int item) - -{ - Player *local_v1_lo_16; - - local_v1_lo_16 = (Player *)(&pPlayer->unknown + hand); - if (local_v1_lo_16->lock_hand_model[0] == 0) { - if (local_v1_lo_16->hand_invisible[0] < 0) { - if (item != local_v1_lo_16->hand_item[0]) { - local_v1_lo_16->field_2A44[0] = item; - return; - } - local_v1_lo_16->hand_invisible[0] = 1; - } - else { - if (item != local_v1_lo_16->hand_item[0]) { - local_v1_lo_16->hand_invisible[0] = -1; - pPlayer->field_2A44[hand] = item; - return; - } - } - } - return; -} - - - -char * get_ptr_item_text_call_line(int item) - -{ - if (item == 1) { - item = pPlayer->field_2A38; - } - return (&gitem_structs)[item].item_file_name; -} - - - -Gitemheader * get_ptr_weapon_model_header_line(int weapon) - -{ - if (weapon == 1) { - weapon = pPlayer->field_2A38; - } - return (&gitem_structs)[weapon].item_header; -} - - - -int proc_7F05D078(void) - -{ - return pPlayer->field_2A38; -} - - - -void used_to_load_1st_person_model_on_demand(int param_1) - -{ - int item; - u32 uVar1; - int *piVar2; - u8 *recallstring; - int targetloc; - int iVar3; - int *piVar4; - - piVar2 = &pPlayer->unknown + param_1; - item = piVar2[0x1fe]; - if ((item < 0) && (piVar2[0xa94] == 0)) { - if (item < -2) { - item = piVar2[0xa91]; - } - else { - if (piVar2[0x200] != 0) { - piVar2[0x1fe] = item + -1; - return; - } - item = piVar2[0xa91]; - } - recallstring = (u8 *)get_ptr_item_text_call_line(item); - piVar2 = (int *)get_ptr_weapon_model_header_line(item); - if ((recallstring != NULL) && (piVar2 != NULL)) { - targetloc = proc_7F05CF30(param_1); - iVar3 = proc_7F05CF48(param_1); - piVar4 = &pPlayer->unknown + param_1 * 8; - piVar4[0x204] = *piVar2; - piVar4[0x205] = piVar2[1]; - piVar4[0x206] = piVar2[2]; - piVar4[0x207] = piVar2[3]; - piVar4[0x208] = piVar2[4]; - piVar4[0x209] = piVar2[5]; - piVar4[0x20a] = piVar2[6]; - piVar4[0x20b] = piVar2[7]; - if (item == 0x54) { - proc_7F0CBAF4(&pPlayer->field_850 + param_1 * 4,targetloc + 0xbd70,iVar3 + -0xbd70); - load_object_fill_header - ((object_header *)(pPlayer->copy_of_body_obj_header + param_1 * 8),recallstring, - targetloc,0xbd70,(int)(&pPlayer->field_850 + param_1 * 4)); - } - else { - if ((item == 0x1e) || (item == 0x17)) { - proc_7F0CBAF4(&pPlayer->field_850 + param_1 * 4,targetloc + 0xafd0,iVar3 + -0xafd0); - load_object_fill_header - ((object_header *)(pPlayer->copy_of_body_obj_header + param_1 * 8),recallstring, - targetloc,0xafd0,(int)(&pPlayer->field_850 + param_1 * 4)); - } - else { - uVar1 = (&dword_80032464)[param_1]; - proc_7F0CBAF4(&pPlayer->field_850 + param_1 * 4,uVar1 + targetloc,iVar3 - uVar1); - load_object_fill_header - ((object_header *)(pPlayer->copy_of_body_obj_header + param_1 * 8),recallstring, - targetloc,(&dword_80032464)[param_1],(int)(&pPlayer->field_850 + param_1 * 4)); - } - } - } - pPlayer->hand_invisible[param_1] = 1; - pPlayer->hand_item[param_1] = item; - pPlayer->field_2A44[param_1] = -1; - } - return; -} - - - -longlong proc_7F05D334(longlong param_1,int param_2) - -{ - ulonglong uVar1; - ITEM_IDS weaponid; - int iVar2; - - if (0 < param_2) { - iVar2 = (int)param_1 + 1; - while( true ) { - while( true ) { - weaponid = iVar2 % 0x21; - param_1 = (longlong)(int)weaponid; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - uVar1 = check_if_item_available(weaponid); - if (uVar1 != 0) break; - iVar2 = weaponid + ITEM_FIST; - } - param_2 += -1; - if (param_2 < 1) break; - iVar2 = weaponid + ITEM_FIST; - } - } - if (param_2 < 0) { - param_1 = (longlong)((int)param_1 + -1); - while( true ) { - while( true ) { - if (param_1 < 0) { - iVar2 = -1 - (int)param_1; - param_1 = (longlong)(0x20 - iVar2 % 0x21); - if (false) { - trap(0x1c00); - } - if ((false) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - } - weaponid = (ITEM_IDS)param_1; - uVar1 = check_if_item_available(weaponid); - if (uVar1 != 0) break; - param_1 = (longlong)(int)(weaponid + ~ITEM_UNARMED); - } - param_2 += 1; - if (-1 < param_2) break; - param_1 = (longlong)(int)(weaponid + ~ITEM_UNARMED); - } - } - return param_1; -} - - - -ITEM_IDS get_next_weapon_in_cycle_for_hand(int hand,longlong direction) - -{ - ITEM_IDS IVar1; - int *piVar2; - - piVar2 = &pPlayer->unknown + hand * 0xea; - if (piVar2[0x225] == 5) { - if (((direction < 0) && (0 < piVar2[0x22e])) || ((0 < direction && (piVar2[0x22e] < 0)))) { - IVar1 = get_item_in_hand(hand); - } - else { - IVar1 = piVar2[0x22b]; - } - } - else { - if (piVar2[0x225] == 6) { - IVar1 = piVar2[0x22b]; - } - else { - IVar1 = get_item_in_hand(hand); - } - } - return IVar1; -} - - - -void likely_change_weapon_in_hand(int hand,int weapon,s32 direction) - -{ - ulonglong uVar1; - int iVar2; - int *piVar3; - - piVar3 = &pPlayer->unknown + hand * 0xea; - if ((piVar3[0x225] == 5) || (piVar3[0x225] == 6)) { - piVar3[0x22c] = piVar3[0x224]; - uVar1 = get_num_players(); - if (uVar1 == 1) { - (&pPlayer->unknown + hand * 0xea)[0x22c] = (&pPlayer->unknown + hand * 0xea)[0x22c] + 0x11; - } - else { - (&pPlayer->unknown + hand * 0xea)[0x22c] = (&pPlayer->unknown + hand * 0xea)[0x22c] + 0xd; - } - } - iVar2 = get_next_weapon_in_cycle_for_hand(hand,0); - if (iVar2 != weapon) { - piVar3 = &pPlayer->unknown + hand * 0xea; - if ((piVar3[0x225] != 5) && (piVar3[0x225] != 6)) { - piVar3[0x226] = 5; - piVar3 = &pPlayer->unknown + hand * 0xea; - } - piVar3[0x22b] = weapon; - (&pPlayer->right_weapon_animation_trigger)[hand * 0xea] = 1; - (&pPlayer->field_8B8)[hand * 0xea] = direction; - } - return; -} - - - -void proc_7F05D610(int param_1) - -{ - int iVar2; - longlong lVar1; - - iVar2 = get_next_weapon_in_cycle_for_hand(param_1,0); - lVar1 = proc_7F05D334((longlong)iVar2,1); - likely_change_weapon_in_hand(param_1,(int)lVar1,0); - return; -} - - - -void proc_7F05D650(int param_1) - -{ - int iVar2; - longlong lVar1; - - iVar2 = get_next_weapon_in_cycle_for_hand(param_1,0); - lVar1 = proc_7F05D334((longlong)iVar2,-1); - likely_change_weapon_in_hand(param_1,(int)lVar1,0); - return; -} - - - -void proc_7F05D690(void) - -{ - draw_item_in_hand_has_more_ammo(0,pPlayer->previous_right_weapon); - draw_item_in_hand_has_more_ammo(1,pPlayer->left_weapon_previous); - return; -} - - - -void advance_through_inventory(void) - -{ - int iStack8; - int iStack4; - - iStack4 = get_next_weapon_in_cycle_for_hand(0,1); - iStack8 = get_next_weapon_in_cycle_for_hand(1,1); - if ((iStack4 < 0x21) && (iStack8 < 0x21)) { - proc_7F08C86C(&iStack4,&iStack8,0); - } - else { - iStack4 = pPlayer->previous_right_weapon; - iStack8 = pPlayer->left_weapon_previous; - } - likely_change_weapon_in_hand(0,iStack4,1); - likely_change_weapon_in_hand(1,iStack8,1); - return; -} - - - -void backstep_through_inventory(void) - -{ - int iStack8; - int iStack4; - - iStack4 = get_next_weapon_in_cycle_for_hand(0,-1); - iStack8 = get_next_weapon_in_cycle_for_hand(1,-1); - if ((iStack4 < 0x21) && (iStack8 < 0x21)) { - proc_7F08CB10(&iStack4,&iStack8,0); - } - else { - iStack4 = pPlayer->previous_right_weapon; - iStack8 = pPlayer->left_weapon_previous; - } - likely_change_weapon_in_hand(0,iStack4,-1); - likely_change_weapon_in_hand(1,iStack8,-1); - return; -} - - - -void autoadvance_on_deplete_all_ammo(void) - -{ - ulonglong uVar1; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - iStack12 = get_next_weapon_in_cycle_for_hand(0,1); - iStack4 = iStack12; - iStack16 = get_next_weapon_in_cycle_for_hand(1,1); - if ((iStack12 < 0x21) && (iStack16 < 0x21)) { - iStack8 = iStack16; - if ((iStack12 == 0x1d) && - (iStack8 = iStack16, uVar1 = check_if_item_available(ITEM_TRIGGER), uVar1 != 0)) { - iStack12 = 0x1e; - iStack16 = 0; - } - else { - proc_7F08C86C(&iStack12,&iStack16,1); - if ((iStack12 < iStack4) || ((iStack12 == iStack4 && (iStack16 <= iStack8)))) { - iStack12 = iStack4; - iStack16 = iStack8; - proc_7F08CB10(&iStack12,&iStack16,1); - } - } - } - else { - iStack12 = pPlayer->previous_right_weapon; - iStack16 = pPlayer->left_weapon_previous; - } - likely_change_weapon_in_hand(0,iStack12,1); - likely_change_weapon_in_hand(1,iStack16,1); - return; -} - - - -void draw_item_in_hand_has_more_ammo(int hand,ITEM_IDS item) - -{ - (&pPlayer->right_weapon_current_animation)[hand * 0xea] = 5; - (&pPlayer->right_weapon_next_weapon)[hand * 0xea] = item; - (&pPlayer->right_weapon_animation_trigger)[hand * 0xea] = 0; - return; -} - - - -void attempt_reload_item_in_hand(int hand) - -{ - ITEM_IDS weapon; - int iVar1; - - weapon = get_item_in_hand(hand); - iVar1 = get_ammo_type_for_weapon(weapon); - if ((iVar1 != 0) && ((&pPlayer->unknown + hand * 0xea)[0x226] == 0)) { - (&pPlayer->unknown + hand * 0xea)[0x226] = 9; - } - return; -} - - - -ITEM_IDS get_item_in_hand(int hand) - -{ - return (ITEM_IDS)(&pPlayer->right_weapon)[hand * 0xea]; -} - - - -void draw_item_in_hand(int param_1,int param_2) - -{ - (&pPlayer->right_weapon_current_animation)[param_1 * 0xea] = 0xe; - (&pPlayer->right_weapon_next_weapon)[param_1 * 0xea] = param_2; - return; -} - - - -int return_ammo_in_hand(int hand) - -{ - int iVar1; - - iVar1 = (&pPlayer->unknown + hand * 0xea)[0x21d]; - if (iVar1 < 0) { - return (&pPlayer->unknown + hand * 0xea)[0x21c]; - } - return iVar1; -} - - - -void proc_7F05DA8C(int param_1,int param_2) - -{ - place_item_in_hand_swap_and_make_visible(param_1,param_2); - (&pPlayer->right_weapon_attack)[param_1 * 0xea] = param_2; - return; -} - - - -void proc_7F05DAE4(int param_1) - -{ - if (-1 < (&pPlayer->unknown + param_1 * 0xea)[0x21d]) { - place_item_in_hand_swap_and_make_visible(param_1,(&pPlayer->unknown + param_1 * 0xea)[0x21c]); - (&pPlayer->right_weapon_attack)[param_1 * 0xea] = -1; - } - return; -} - - - -void remove_hands_item(int param_1,int param_2) - -{ - int weapon; - int iVar2; - ulonglong uVar1; - int iVar3; - - weapon = (&pPlayer->right_weapon)[param_1 * 0xea]; - iVar2 = get_ammo_type_for_weapon(weapon); - if ((&pPlayer->unknown + param_1 * 0xea)[0x21d] < 0) { - place_item_in_hand_swap_and_make_visible(param_1,param_2); - iVar3 = (&pPlayer->right_weapon_ammo_in_magazine)[param_1 * 0xea]; - } - else { - iVar3 = (&pPlayer->unknown + param_1 * 0xea)[0x227]; - } - if (0 < iVar3) { - (&pPlayer->unknown + iVar2)[0x44c] = (&pPlayer->unknown + iVar2)[0x44c] + iVar3; - } - if (weapon < 0x21) { - (&pPlayer->previous_right_weapon)[param_1 * 0xea] = weapon; - } - uVar1 = get_num_players(); - if (1 < (longlong)uVar1) { - proc_7F09B368(param_1); - } - proc_7F05FB00(param_1); - (&pPlayer->right_weapon)[param_1 * 0xea] = param_2; - (&pPlayer->right_weapon_ammo_in_magazine)[param_1 * 0xea] = 0; - (&pPlayer->field_A4C)[param_1 * 0xea] = 0; - (&pPlayer->field_A50)[param_1 * 0xea] = 0; - proc_7F08D8E0(); - return; -} - - - -undefined get_hands_firing_status(int hand) - -{ - return *(undefined *)(&pPlayer->right_weapon_firing_status + hand * 0xea); -} - - - -undefined4 proc_7F05DCB8(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -float proc_7F05DCE8(longlong param_1) - -{ - int item; - undefined *puVar1; - float fVar2; - - if (param_1 == 0) { - item = return_ammo_in_hand(0); - puVar1 = get_ptr_item_statistics(item); - fVar2 = *(float *)(puVar1 + 4); - } - else { - item = return_ammo_in_hand(1); - puVar1 = get_ptr_item_statistics(item); - fVar2 = -*(float *)(puVar1 + 4); - } - return fVar2; -} - - - -char * proc_7F05DD38(void) - -{ - int item; - char *pcVar1; - - pcVar1 = (char *)return_ammo_in_hand(0); - if ((pcVar1 != &UNK_00000011) && - (pcVar1 = (char *)return_ammo_in_hand(0), pcVar1 != "E ")) { - item = return_ammo_in_hand(0); - pcVar1 = get_ptr_item_statistics(item); - } - return pcVar1; -} - - - -void proc_7F05DDA4(float param_1) - -{ - int iVar1; - - iVar1 = return_ammo_in_hand(0); - if (iVar1 == 0x11) { - pPlayer->sniper_zoom = pPlayer->sniper_zoom * (param_1 * flt_80053C24 + 1.00000000); - if (60.00000000 < pPlayer->sniper_zoom) { - pPlayer->sniper_zoom = 60.00000000; - } - } - else { - iVar1 = return_ammo_in_hand(0); - if ((iVar1 == 0x28) && - (pPlayer->camera_zoom = pPlayer->camera_zoom * (param_1 * flt_80053C28 + 1.00000000), - 60.00000000 < pPlayer->camera_zoom)) { - pPlayer->camera_zoom = 60.00000000; - } - } - return; -} - - - -void proc_7F05DE94(float param_1) - -{ - int iVar1; - - iVar1 = return_ammo_in_hand(0); - if (iVar1 == 0x11) { - pPlayer->sniper_zoom = pPlayer->sniper_zoom / (param_1 * flt_80053C2C + 1.00000000); - if (pPlayer->sniper_zoom < 7.00000000) { - pPlayer->sniper_zoom = 7.00000000; - } - } - else { - iVar1 = return_ammo_in_hand(0); - if ((iVar1 == 0x28) && - (pPlayer->camera_zoom = pPlayer->camera_zoom / (param_1 * flt_80053C30 + 1.00000000), - pPlayer->camera_zoom < 7.00000000)) { - pPlayer->camera_zoom = 7.00000000; - } - } - return; -} - - - -undefined * proc_7F05DF84(int param_1) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(param_1); - return puVar1; -} - - - -undefined * proc_7F05DFA8(int param_1) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(param_1); - return puVar1; -} - - - -undefined proc_7F05DFCC(int param_1) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(param_1); - return puVar1[0x22]; -} - - - -ulonglong proc_7F05DFF0(int param_1) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(param_1); - return (ulonglong)(byte)puVar1[0x25]; -} - - - -ulonglong proc_7F05E014(int param_1) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(param_1); - return (ulonglong)*(ushort *)(puVar1 + 0x26); -} - - - -ulonglong proc_7F05E038(int param_1) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(param_1); - return (ulonglong)(byte)puVar1[0x24]; -} - - - -BOOL check_if_have_ammo_for_item(int item) - -{ - int iVar1; - BOOL haveammo; - - iVar1 = check_special_attributes(item,0x40000); - if (iVar1 == 0) { - haveammo = FALSE; - } - else { - iVar1 = get_ammo_type_for_weapon(item); - if ((iVar1 == 0) || (iVar1 = get_ammo_count_for_weapon(item), 0 < iVar1)) { - haveammo = TRUE; - } - else { - haveammo = FALSE; - } - } - return haveammo; -} - - - -uint check_special_attributes(int item,uint mask) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(item); - return (uint)((*(uint *)(puVar1 + 0x6c) & mask) != 0); -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F05E0E4(void) - -{ - float fVar1; - int iVar2; - u32 uVar3; - float *pfVar4; - float in_a2_lo; - float in_a3_lo; - f32 fVar5; - float fVar6; - float fVar7; - float in_f12; - float in_f14; - undefined auStackX0 [8]; - float fStackX8; - float fStackX12; - float fStack8; - float fStack4; - - fVar7 = in_a2_lo; - if (in_a2_lo < 0.00000000) { - fVar7 = -in_a2_lo; - } - if (flt_80053C34 < in_f14) { - pPlayer->field_FC0 = 1.00000000; - fStackX8 = in_a2_lo; - fStackX12 = in_a3_lo; - } - else { - if (flt_80053C3C < in_f14) { - fStackX8 = in_a2_lo; - fStackX12 = in_a3_lo; - fVar6 = cosf(((in_f14 - flt_80053C3C) * flt_80053C40) / flt_80053C44); - pPlayer->field_FC0 = flt_80053C48 * (1.00000000 - fVar6) + flt_80053C4C; - } - else { - pPlayer->field_FC0 = flt_80053C3C; - fStackX8 = in_a2_lo; - fStackX12 = in_a3_lo; - } - } - fVar5 = get_BONDdata_field19C(); - fVar6 = pPlayer->field_FC0; - if (fVar6 < (float)fVar5 * flt_80053C54) { - fVar5 = get_BONDdata_field19C(); - pPlayer->field_FC0 = (float)fVar5 * flt_80053C58; - fVar6 = pPlayer->field_FC0; - } - if (fVar6 < fVar7 * 0.50000000) { - pPlayer->field_FC0 = fVar7 * 0.50000000; - } - fVar6 = flt_80053C5C; - iVar2 = 0; - if (0 < clock_timer) { - do { - iVar2 += 1; - pPlayer->field_1080 = pPlayer->field_1080 * fVar6 + pPlayer->field_FC0; - } while (iVar2 < clock_timer); - } - fVar1 = flt_80053C64; - fVar6 = flt_80053C60; - iVar2 = 0; - pPlayer->field_FC0 = pPlayer->field_1080 * flt_80053C64; - fVar7 = flt_80053C68 * fVar7; - if (fVar7 <= in_f12) { - fVar7 = in_f12; - } - if (0 < clock_timer) { - do { - iVar2 += 1; - pPlayer->field_107C = pPlayer->field_107C * fVar6 + fVar7; - } while (iVar2 < clock_timer); - } - fVar7 = pPlayer->field_107C * fVar1 * global_timer_delta; - fStack8 = (float)pPlayer->field_A0C + fVar7; - while (1.00000000 <= fStack8) { - unknown_takes_playerhand(0); - fStack8 = fStack8 - 1.00000000; - pPlayer->field_1078 = pPlayer->field_1078 + 1; - } - pPlayer->field_1074 = pPlayer->field_1074 + global_timer_delta; - if (60.00000000 < pPlayer->field_1074) { - pPlayer->field_1074 = 0.00000000; - uVar3 = get_random_value(); - fVar6 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - pPlayer->field_1070 = ((fVar6 * 0.00000000 - 0.50000000) * flt_80053C6C) / 60.00000000; - fVar6 = pPlayer->field_1070; - } - else { - fVar6 = pPlayer->field_1070; - } - if (0.00000000 < fVar6 + fVar7) { - pPlayer->field_106C = pPlayer->field_106C + fVar6; - fStack4 = pPlayer->field_106C; - } - else { - fStack4 = pPlayer->field_106C; - } - if (0.50000000 < fStack4) { - pPlayer->field_106C = 0.50000000; - fStack4 = pPlayer->field_106C; - } - else { - if (fStack4 < -0.50000000) { - pPlayer->field_106C = -0.50000000; - fStack4 = pPlayer->field_106C; - } - else { - if (flt_80053C70 <= fStack4) { - iVar2 = pPlayer->field_1078; - goto LAB_7f05e518; - } - if (fStack4 <= flt_80053C74) { - iVar2 = pPlayer->field_1078; - goto LAB_7f05e518; - } - if (0.00000000 < fStack4) { - pPlayer->field_106C = flt_80053C74; - fStack4 = pPlayer->field_106C; - } - else { - pPlayer->field_106C = flt_80053C70; - fStack4 = pPlayer->field_106C; - } - } - } - iVar2 = pPlayer->field_1078; -LAB_7f05e518: - fStack4 = fStack8 + (float)iVar2 + fStack4; - while (1.00000000 <= fStack4) { - unknown_takes_playerhand(1); - fStack4 = fStack4 - 1.00000000; - pPlayer->field_1078 = pPlayer->field_1078 + -1; - } - pfVar4 = &fStack8; - iVar2 = 0; - do { - fVar7 = *pfVar4; - pfVar4 = pfVar4 + 1; - *(float *)((int)&pPlayer->field_A0C + iVar2) = fVar7; - *(float *)((int)&pPlayer->field_A1C + iVar2) = fStackX12 * -1.75000000; - *(float *)((int)&pPlayer->field_A20 + iVar2) = fStackX8 * -2.00000000; - iVar2 = iVar2 + 0x3a8; - } while (pfVar4 != (float *)register0x000000ec); - return; -} - - - -void proc_7F05E5F0(float param_1) - -{ - float fVar1; - - fVar1 = cosf(param_1); - *(float *)&pPlayer->field_A30 = (1.00000000 - fVar1) * 5.00000000; - fVar1 = cosf(param_1); - *(float *)&pPlayer->field_DD8 = (1.00000000 - fVar1) * 5.00000000; - return; -} - - - -// WARNING: Instruction at (ram,0x7f05e690) overlaps instruction at (ram,0x7f05e68c) -// - -ITEM_IDS get_value_if_watch_is_on_hand_or_not(int hand) - -{ - ITEM_IDS item; - - item = get_item_in_hand(hand); - if (item != ITEM_TRIGGER) { - item = get_item_in_hand(hand); - } - return item; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -int * proc_7F05E6B4(void) - -{ - int *piVar1; - int hand; - longlong in_a1; - float in_f0; - float fVar2; - - if (in_a1 == 0) { - piVar1 = &pPlayer->unknown + hand * 0xea; - fVar2 = (float)piVar1[0x2a1]; - if (0.00000000 < fVar2) { - *(float *)(piVar1 + 0x2a1) = fVar2 - flt_80053C84 * global_timer_delta; - piVar1 = &pPlayer->unknown + hand * 0xea; - fVar2 = (float)piVar1[0x2a1]; - } - if (fVar2 < 0.00000000) { - piVar1[0x2a1] = 0; - } - } - else { - get_value_if_watch_is_on_hand_or_not(hand); - fVar2 = (float)(&pPlayer->unknown + hand * 0xea)[0x2a1]; - if (fVar2 < in_f0) { - *(float *)(&pPlayer->unknown + hand * 0xea + 0x2a1) = - fVar2 + flt_80053C80 * global_timer_delta; - } - piVar1 = (int *)get_value_if_watch_is_on_hand_or_not(hand); - if (in_f0 < (float)(&pPlayer->field_A84)[hand * 0xea]) { - piVar1 = (int *)get_value_if_watch_is_on_hand_or_not(hand); - *(float *)(&pPlayer->field_A84 + hand * 0xea) = in_f0; - } - } - return piVar1; -} - - - -void proc_7F05E808(int param_1) - -{ - (&pPlayer->field_A8C)[param_1 * 0xea] = 1; - return; -} - - - -void proc_7F05E83C(int param_1) - -{ - int item; - undefined *puVar1; - int *piVar2; - float fVar3; - float fVar4; - - item = return_ammo_in_hand(param_1); - puVar1 = get_ptr_item_statistics(item); - piVar2 = &pPlayer->unknown + param_1 * 0xea; - fVar4 = *(float *)(puVar1 + 0x50); - if (piVar2[0x2a3] == 0) { - if (0 < piVar2[0x227]) { - fVar3 = (float)piVar2[0x2a2]; - if (0.00000000 < fVar3) { - *(float *)(piVar2 + 0x2a2) = fVar3 - fVar4 * flt_80053C88 * global_timer_delta; - piVar2 = &pPlayer->unknown + param_1 * 0xea; - fVar3 = (float)piVar2[0x2a2]; - } - if (fVar3 < 0.00000000) { - piVar2[0x2a2] = 0; - } - } - } - else { - fVar3 = (float)piVar2[0x2a2]; - if (fVar3 < fVar4) { - *(float *)(piVar2 + 0x2a2) = fVar3 + fVar4 * 0.25000000 * global_timer_delta; - piVar2 = &pPlayer->unknown + param_1 * 0xea; - fVar3 = (float)piVar2[0x2a2]; - } - if (fVar4 <= fVar3) { - *(float *)(piVar2 + 0x2a2) = fVar4; - (&pPlayer->field_A8C)[param_1 * 0xea] = 0; - } - } - return; -} - - - -void proc_7F05E978(int param_1,undefined4 param_2) - -{ - undefined4 *puVar1; - int iVar2; - ushort *partdesc; - int iVar3; - short sVar4; - - iVar2 = *(int *)(param_1 + 8); - iVar3 = *(int *)(iVar2 + 8); - if (*(ushort **)(iVar3 + 0x20) == NULL) { - partdesc = *(ushort **)(iVar3 + 0x24); - } - else { - puVar1 = (undefined4 *) - extract_id_from_object_structure_microcode(param_1,*(ushort **)(iVar3 + 0x20)); - *puVar1 = param_2; - iVar2 = *(int *)(param_1 + 8); - iVar3 = *(int *)(iVar2 + 8); - partdesc = *(ushort **)(iVar3 + 0x24); - } - if (partdesc == NULL) { - partdesc = *(ushort **)(iVar3 + 0x28); - } - else { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar1 = param_2; - iVar2 = *(int *)(param_1 + 8); - iVar3 = *(int *)(iVar2 + 8); - partdesc = *(ushort **)(iVar3 + 0x28); - } - if (partdesc == NULL) { - partdesc = *(ushort **)(iVar3 + 0x2c); - } - else { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar1 = param_2; - iVar2 = *(int *)(param_1 + 8); - iVar3 = *(int *)(iVar2 + 8); - partdesc = *(ushort **)(iVar3 + 0x2c); - } - if (partdesc == NULL) { - partdesc = *(ushort **)(iVar3 + 0x30); - } - else { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar1 = param_2; - iVar2 = *(int *)(param_1 + 8); - iVar3 = *(int *)(iVar2 + 8); - partdesc = *(ushort **)(iVar3 + 0x30); - } - if (partdesc == NULL) { - partdesc = *(ushort **)(iVar3 + 0x34); - } - else { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar1 = param_2; - iVar2 = *(int *)(param_1 + 8); - partdesc = *(ushort **)(*(int *)(iVar2 + 8) + 0x34); - } - if (partdesc == NULL) { - sVar4 = *(short *)(iVar2 + 0xc); - } - else { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar1 = param_2; - iVar2 = *(int *)(param_1 + 8); - sVar4 = *(short *)(iVar2 + 0xc); - } - if ((0x23 < sVar4) && (partdesc = *(ushort **)(*(int *)(iVar2 + 8) + 0x8c), partdesc != NULL)) { - puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar1 = param_2; - } - return; -} - - - -void proc_7F05EA94(int param_1,undefined4 param_2) - -{ - int iVar1; - undefined4 *puVar2; - ushort *partdesc; - - if (0xf < *(short *)(*(int *)(param_1 + 8) + 0xc)) { - iVar1 = *(int *)(*(int *)(param_1 + 8) + 8); - partdesc = *(ushort **)(iVar1 + 0x38); - if (partdesc == NULL) { - partdesc = *(ushort **)(iVar1 + 0x3c); - } - else { - puVar2 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar2 = param_2; - partdesc = *(ushort **)(*(int *)(*(int *)(param_1 + 8) + 8) + 0x3c); - } - if (partdesc != NULL) { - puVar2 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar2 = param_2; - } - } - return; -} - - - -void proc_7F05EB0C(int param_1,undefined4 *param_2,undefined4 param_3,float *param_4, - undefined4 *param_5,undefined4 *param_6,undefined4 param_7) - -{ - object_standard *poVar1; - undefined8 extraout_a0; - - poVar1 = *(object_standard **)(param_1 + 0x10); - if (poVar1 != NULL) { - set_current_objposdata_plus_0x28(poVar1); - set_stateflag_0x04_for_posdata((int)poVar1); - matrix_multiply_A1_by_F12(*(float *)(*(int *)(param_1 + 0x14) + 0x14),extraout_a0,param_4); - proc_7F040754(param_1,param_2,param_4,param_3); - proc_7F056CA0(param_1); - proc_7F040484(param_1); - proc_7F03FDA8((int)poVar1); - if ((*(uint *)(param_1 + 100) & 0x80) != 0) { - **(uint **)(param_1 + 0x6c) = **(uint **)(param_1 + 0x6c) | 0x41; - *(undefined4 *)(*(int *)(param_1 + 0x6c) + 0x88) = param_7; - proc_7F03FE14((int)poVar1); - proc_7F058020(param_6,(undefined4 *)(*(int *)(param_1 + 0x6c) + 0x20)); - *(undefined4 *)(*(int *)(param_1 + 0x6c) + 4) = *param_5; - *(undefined4 *)(*(int *)(param_1 + 0x6c) + 8) = param_5[1]; - *(undefined4 *)(*(int *)(param_1 + 0x6c) + 0xc) = param_5[2]; - *(int *)(*(int *)(param_1 + 0x6c) + 0xe4) = param_1; - *(undefined4 *)(*(int *)(param_1 + 0x6c) + 0xe8) = dword_80048380; - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F05EC1C(void) - -{ - int iVar2; - int iVar3; - ulonglong uVar1; - float *pfVar4; - int in_a0_lo; - float *in_a1_lo; - float *in_a2_lo; - undefined4 *in_a3_lo; - float in_f0; - float fVar5; - f32 extraout_f12; - undefined4 *in_stack_00000010; - int iStack136; - uint auStack132 [21]; - byte bStack48; - undefined uStack47; - int iStack40; - float fStack36; - float fStack32; - u32 uStack20; - float fStack16; - float fStack12; - float fStack8; - - if (*(int *)(in_a0_lo + 0x10) != 0) { - iVar2 = get_curplayer_positiondata(); - proc_7F089778((int)pPlayer); - iStack40 = 0; - fVar5 = *(float *)(iVar2 + 0xc); - fStack36 = in_a1_lo[1]; - fStack32 = fVar5; - if (fVar5 <= fStack36) { - fStack32 = fStack36; - fStack36 = fVar5; - } - fStack36 = fStack36 - in_f0; - fStack32 = fStack32 - in_f0; - uStack20 = *(u32 *)(iVar2 + 0x14); - proc_7F08A03C(iVar2,0); - iVar3 = proc_7F0B0E24(&uStack20,extraout_f12,(f32)fStack32,*(f32 *)(iVar2 + 8)); - if (iVar3 == 0) { - uStack20 = *(u32 *)(iVar2 + 0x14); - fStack16 = *(float *)(iVar2 + 8); - fStack12 = *(float *)(iVar2 + 0xc); - fStack8 = *(float *)(iVar2 + 0x10); - iStack40 = 1; - } - else { - fStack16 = *in_a1_lo; - fStack12 = in_a1_lo[1]; - fStack8 = in_a1_lo[2]; - } - proc_7F08A03C(iVar2,1); - proc_7F05EB0C(in_a0_lo,&fStack16,uStack20,in_a2_lo,in_a3_lo,in_stack_00000010,iVar2); - if ((*(uint *)(in_a0_lo + 100) & 0x80) != 0) { - if (iStack40 != 0) { - **(uint **)(in_a0_lo + 0x6c) = **(uint **)(in_a0_lo + 0x6c) | 0x100; - *(float *)(*(int *)(in_a0_lo + 0x6c) + 0xd4) = *in_a1_lo; - *(float *)(*(int *)(in_a0_lo + 0x6c) + 0xd8) = in_a1_lo[1]; - *(float *)(*(int *)(in_a0_lo + 0x6c) + 0xdc) = in_a1_lo[2]; - } - uVar1 = get_cur_players_room(); - bStack48 = (byte)uVar1; - uStack47 = 0xff; - pfVar4 = (float *)get_BONDdata_position3(); - proc_7F0B4AB4(pfVar4,&fStack16,&bStack48,*(int *)(in_a0_lo + 0x6c) + 0xcc,auStack132, - &iStack136,0x14); - } - } - return; -} - - - -void proc_7F05EE24(int param_1) - -{ - uint uVar1; - int iVar2; - ITEM_IDS iteminstance; - float *pfVar3; - int *piVar4; - undefined4 *puVar5; - u32 uVar6; - int **ppiVar7; - float afStack256 [12]; - undefined4 uStack208; - undefined4 uStack204; - undefined4 uStack200; - float *pfStack192; - float fStack184; - float fStack180; - float fStack176; - float afStack160 [16]; - int iStack96; - int iStack92; - int iStack88; - float fStack80; - float fStack76; - float fStack72; - float afStack68 [17]; - - iVar2 = get_curplayer_positiondata(); - pfStack192 = (float *)proc_7F08A02C(); - iteminstance = get_item_in_hand(param_1); - proc_7F057C14(&fStack80,afStack68); - proc_7F0681CC(); - pfVar3 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar3,&fStack184); - fStack80 = fStack184 * flt_80053C8C; - fStack72 = fStack176 * flt_80053C8C; - fStack76 = fStack180 * flt_80053C8C + 5.00000000; - if (0 < clock_timer) { - fStack80 = fStack80 + (*(float *)(iVar2 + 8) - *pfStack192) / global_timer_delta; - fStack76 = fStack76 + (*(float *)(iVar2 + 0xc) - pfStack192[1]) / global_timer_delta; - fStack72 = fStack72 + (*(float *)(iVar2 + 0x10) - pfStack192[2]) / global_timer_delta; - } - piVar4 = &pPlayer->unknown + param_1 * 0xea; - iStack96 = piVar4[0x2c2]; - iStack92 = piVar4[0x2c3]; - iStack88 = piVar4[0x2c4]; - proc_7F057FD0(afStack160); - proc_7F058020(&pPlayer->field_AD8 + param_1 * 0xea,afStack256); - uStack208 = 0; - uStack204 = 0; - uStack200 = 0; - proc_7F058068(afStack256,afStack160); - puVar5 = create_new_item_instance_of_model(0xc4,iteminstance); - if (puVar5 != NULL) { - *(short *)((int)puVar5 + 0x82) = 0xf0 - (short)pPlayer->field_105C; - if (*(short *)((int)puVar5 + 0x82) < 0) { - *(undefined2 *)((int)puVar5 + 0x82) = 0; - uVar1 = puVar5[0x19]; - } - else { - uVar1 = puVar5[0x19]; - } - puVar5[0x19] = uVar1 & 0xfff9ffff; - uVar6 = get_cur_playernum(); - puVar5[0x19] = puVar5[0x19] | uVar6 << 0x11; - proc_7F05EC1C(); - if ((puVar5[0x19] & 0x80) != 0) { - *(uint *)puVar5[0x1b] = *(uint *)puVar5[0x1b] | 2; - *(float *)(puVar5[0x1b] + 0x8c) = flt_80053C90; - *(float *)(puVar5[0x1b] + 0x94) = flt_80053C94; - *(undefined4 *)(puVar5[0x1b] + 0xbc) = 0x3c; - ppiVar7 = play_sfx_a1(ptr_sfx_buf,4,NULL); - if (ppiVar7 != NULL) { - proc_7F053A10((int)ppiVar7,(float *)(puVar5 + 0x16)); - } - } - } - return; -} - - - -void proc_7F05F09C(int param_1) - -{ - int iVar1; - float *pfVar2; - int *piVar3; - u32 uVar4; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - int iVar5; - undefined4 unaff_retaddr; - float a; - float x; - float fVar6; - undefined8 in_stack_fffffee4; - undefined8 in_stack_fffffef0; - undefined4 in_stack_fffffefc; - float *pfVar7; - undefined in_stack_ffffff08 [24]; - undefined4 uStack200; - undefined4 uStack196; - undefined4 uStack192; - float fStack184; - float fStack180; - float fStack176; - float afStack160 [6]; - undefined4 uStack136; - int iStack96; - int iStack92; - int iStack88; - float fStack80; - float fStack76; - float fStack72; - float afStack68 [16]; - undefined4 *puStack4; - - iVar1 = get_curplayer_positiondata(); - pfVar7 = (float *)proc_7F08A02C(); - proc_7F057C14(&fStack80,afStack68); - proc_7F0681CC(); - pfVar2 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar2,&fStack184); - fStack80 = fStack184 * 25.00000000; - fStack72 = fStack176 * 25.00000000; - fStack76 = fStack180 * 25.00000000 + 5.00000000; - if (0 < clock_timer) { - fStack80 = fStack80 + (*(float *)(iVar1 + 8) - *pfVar7) / global_timer_delta; - fStack76 = fStack76 + (*(float *)(iVar1 + 0xc) - pfVar7[1]) / global_timer_delta; - fStack72 = fStack72 + (*(float *)(iVar1 + 0x10) - pfVar7[2]) / global_timer_delta; - } - iVar5 = param_1 * 0x3a8; - piVar3 = &pPlayer->unknown + param_1 * 0xea; - iStack96 = piVar3[0x2c2]; - iStack92 = piVar3[0x2c3]; - iStack88 = piVar3[0x2c4]; - proc_7F058688(flt_80053C98,extraout_a0,afStack160); - proc_7F058570(flt_80053C9C,extraout_a0_00,(undefined4 *)&stack0xffffff08); - proc_7F058068((float *)&stack0xffffff08,afStack160); - proc_7F058020((undefined4 *)((int)&pPlayer->field_AD8 + iVar5),(undefined4 *)&stack0xffffff08); - uStack200 = 0; - uStack196 = 0; - uStack192 = 0; - proc_7F058068((float *)&stack0xffffff08,afStack160); - uVar4 = get_random_value(); - fVar6 = (float)uVar4; - if ((int)uVar4 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - guRotateF((float [4] [4]) - CONCAT4024(CONCAT364(CONCAT324(CONCAT284(CONCAT244(CONCAT168(CONCAT124(CONCAT48( - uStack136,in_stack_fffffee4),unaff_retaddr), - in_stack_fffffef0),iVar5),in_stack_fffffefc), - pfVar7),iVar1),in_stack_ffffff08),a,x,(float)afStack68, - 360.00000000 / (fVar6 * 0.00000000 + flt_80053CA0)); - puStack4 = create_new_item_instance_of_model(0xba,3); - if (puStack4 != NULL) { - puStack4[0x19] = puStack4[0x19] & 0xfff9ffff; - uVar4 = get_cur_playernum(); - puStack4[0x19] = puStack4[0x19] | uVar4 << 0x11; - proc_7F05EC1C(); - if ((puStack4[0x19] & 0x80) != 0) { - *(uint *)puStack4[0x1b] = *(uint *)puStack4[0x1b] | 2; - *(float *)(puStack4[0x1b] + 0x8c) = flt_80053CA4; - *(undefined4 *)(puStack4[0x1b] + 0xbc) = 0x3c; - puStack4[0x19] = puStack4[0x19] | 0x20; - } - proc_7F043650((int)puStack4); - } - return; -} - - - -void generate_player_thrown_object(int param_1) - -{ - ITEM_IDS iteminstance; - float *pfVar2; - int *piVar3; - undefined4 *puVar4; - ulonglong uVar1; - u32 uVar5; - int **ppiVar6; - int model; - float afStack256 [12]; - undefined4 uStack208; - undefined4 uStack204; - undefined4 uStack200; - float *pfStack192; - int iStack188; - float fStack184; - float fStack180; - float fStack176; - float afStack160 [16]; - int iStack96; - int iStack92; - int iStack88; - float fStack84; - float fStack80; - float fStack76; - float fStack72; - float afStack68 [17]; - - puVar4 = NULL; - fStack84 = flt_80053CA8; - iStack188 = get_curplayer_positiondata(); - pfStack192 = (float *)proc_7F08A02C(); - iteminstance = get_item_in_hand(param_1); - if (iteminstance == ITEM_GOLDENEYEKEY) { - fStack84 = flt_80053CAC; - } - proc_7F057C14(&fStack80,afStack68); - proc_7F0681CC(); - pfVar2 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar2,&fStack184); - fStack80 = fStack184 * fStack84; - fStack72 = fStack176 * fStack84; - fStack76 = fStack180 * fStack84 + 5.00000000; - if (0 < clock_timer) { - fStack80 = fStack80 + (*(float *)(iStack188 + 8) - *pfStack192) / global_timer_delta; - fStack76 = fStack76 + (*(float *)(iStack188 + 0xc) - pfStack192[1]) / global_timer_delta; - fStack72 = fStack72 + (*(float *)(iStack188 + 0x10) - pfStack192[2]) / global_timer_delta; - } - piVar3 = &pPlayer->unknown + param_1 * 0xea; - iStack96 = piVar3[0x2c2]; - iStack92 = piVar3[0x2c3]; - iStack88 = piVar3[0x2c4]; - proc_7F057FD0(afStack160); - proc_7F058020(&pPlayer->field_AD8 + param_1 * 0xea,afStack256); - uStack208 = 0; - uStack204 = 0; - uStack200 = 0; - proc_7F058068(afStack256,afStack160); - if (iteminstance == ITEM_GOLDENEYEKEY) { - puVar4 = (undefined4 *)proc_7F08C570('='); - proc_7F08C61C(0x3d); - if (puVar4 != NULL) { - proc_7F04C044(puVar4[4]); - } - proc_7F05D690(); - } - if (puVar4 == NULL) { - model = 199; - if (true) { - switch(iteminstance) { - case ITEM_TIMEDMINE: - model = 0xc9; - break; - case ITEM_PROXIMITYMINE: - model = 200; - break; - case ITEM_BOMBCASE: - model = 0xe2; - break; - case ITEM_PLASTIQUE: - model = 0x111; - break; - case ITEM_BUG: - model = 0xf5; - break; - case ITEM_MICROCAMERA: - model = 0xf6; - break; - case ITEM_GOLDENEYEKEY: - model = 0xf8; - } - } - puVar4 = create_new_item_instance_of_model(model,iteminstance); - } - if (puVar4 == NULL) { - return; - } - if (false) { -switchD_7f05f5c8_caseD_1e: - *(undefined2 *)((int)puVar4 + 0x82) = 0xf0; - } - else { - switch(iteminstance) { - case ITEM_TIMEDMINE: - uVar1 = get_num_players(); - if (uVar1 == 1) { - *(undefined2 *)((int)puVar4 + 0x82) = 300; - } - else { - *(undefined2 *)((int)puVar4 + 0x82) = 0xb4; - } - break; - case ITEM_PROXIMITYMINE: - uVar1 = get_num_players(); - if (uVar1 == 1) { - *(undefined2 *)((int)puVar4 + 0x82) = 300; - } - else { - *(undefined2 *)((int)puVar4 + 0x82) = 0xb4; - } - break; - case ITEM_REMOTEMINE: - uVar1 = get_num_players(); - if (uVar1 == 1) { - *(undefined2 *)((int)puVar4 + 0x82) = 300; - } - else { - *(undefined2 *)((int)puVar4 + 0x82) = 0xb4; - } - break; - default: - goto switchD_7f05f5c8_caseD_1e; - case ITEM_BOMBCASE: - uVar1 = get_num_players(); - if (uVar1 == 1) { - *(undefined2 *)((int)puVar4 + 0x82) = 300; - } - else { - *(undefined2 *)((int)puVar4 + 0x82) = 0xb4; - } - break; - case ITEM_PLASTIQUE: - case ITEM_BUG: - case ITEM_MICROCAMERA: - case ITEM_GOLDENEYEKEY: - *(undefined2 *)((int)puVar4 + 0x82) = 1; - } - } - puVar4[0x19] = puVar4[0x19] & 0xfff9ffff; - uVar5 = get_cur_playernum(); - puVar4[0x19] = puVar4[0x19] | uVar5 << 0x11; - proc_7F05EC1C(); - if ((puVar4[0x19] & 0x80) != 0) { - *(uint *)puVar4[0x1b] = *(uint *)puVar4[0x1b] | 2; - *(float *)(puVar4[0x1b] + 0x8c) = flt_80053DC8; - *(undefined4 *)(puVar4[0x1b] + 0xbc) = 0x3c; - ppiVar6 = play_sfx_a1(ptr_sfx_buf,4,NULL); - if (ppiVar6 != NULL) { - proc_7F053A10((int)ppiVar6,(float *)(puVar4 + 0x16)); - } - } - return; -} - - - -void proc_7F05F73C(int param_1) - -{ - int iVar1; - float *pfVar2; - float *pfVar3; - u32 uVar4; - float local_b0; - float local_ac; - float local_a8; - undefined4 auStack152 [12]; - undefined4 local_68; - undefined4 local_64; - undefined4 local_60; - float local_54; - float local_50; - float local_4c; - undefined4 auStack72 [16]; - int *local_8; - undefined4 *local_4; - - local_8 = &pPlayer->right_weapon + param_1 * 0xea; - iVar1 = get_curplayer_positiondata(); - pfVar2 = (float *)proc_7F08A02C(); - proc_7F057FD0(auStack72); - proc_7F0681CC(); - pfVar3 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar3,&local_b0); - local_54 = local_b0 * flt_80053DCC; - local_50 = local_ac * flt_80053DCC; - local_4c = local_a8 * flt_80053DCC; - if (0 < clock_timer) { - local_54 = local_54 + (*(float *)(iVar1 + 8) - *pfVar2) / global_timer_delta; - local_50 = local_50 + (*(float *)(iVar1 + 0xc) - pfVar2[1]) / global_timer_delta; - local_4c = local_4c + (*(float *)(iVar1 + 0x10) - pfVar2[2]) / global_timer_delta; - } - proc_7F058020(&pPlayer->field_AD8 + param_1 * 0xea,auStack152); - local_68 = 0; - local_64 = 0; - local_60 = 0; - local_4 = create_new_item_instance_of_model(0xcb,0x57); - if (local_4 != NULL) { - *(undefined2 *)((int)local_4 + 0x82) = 0x4b0; - local_4[0x19] = local_4[0x19] & 0xfff9ffff; - uVar4 = get_cur_playernum(); - local_4[0x19] = local_4[0x19] | uVar4 << 0x11; - proc_7F05EC1C(); - if ((local_4[0x19] & 0x80) != 0) { - *(float *)(local_4[0x1b] + 0x8c) = flt_80053DD0; - *(float *)(local_4[0x1b] + 0x94) = flt_80053DD4; - *(undefined4 *)(local_4[0x1b] + 0xbc) = 0x3c; - } - } - return; -} - - - -void proc_7F05F928(int param_1) - -{ - int iVar1; - int iVar2; - int iVar3; - int iVar4; - int iVar5; - float *pfVar6; - undefined8 extraout_a0; - float afStack76 [12]; - undefined4 local_1c; - undefined4 local_18; - undefined4 local_14; - int *local_4; - - iVar1 = (&pPlayer->unknown + param_1 * 0xea)[0x2a4]; - local_4 = &pPlayer->unknown + param_1 * 0xea + 0x21c; - if ((iVar1 != 0) && (iVar2 = *(int *)(iVar1 + 0x10), iVar2 != 0)) { - iVar4 = get_curplayer_positiondata(); - iVar3 = *(int *)(iVar1 + 0x14); - iVar5 = iVar4; - proc_7F058020(local_4 + 0x9a,afStack76); - local_1c = 0; - local_18 = 0; - local_14 = 0; - matrix_multiply_A1_by_F12(*(float *)(*(int *)(iVar1 + 0x14) + 0x14),extraout_a0,afStack76); - proc_7F040754(iVar1,local_4 + 0xba,afStack76,*(undefined4 *)(iVar4 + 0x14)); - proc_7F040484(iVar1); - proc_7F0BD714((int)*(short *)(*(int *)(iVar3 + 8) + 0xe) << 6); - *(int *)(iVar3 + 0xc) = iVar5; - proc_7F058020((undefined4 *)(iVar1 + 0x18),afStack76); - proc_7F058998((undefined4 *)(iVar1 + 0x58),(int)afStack76); - pfVar6 = (float *)proc_7F0783C4(); - proc_7F05818C(pfVar6,afStack76,*(int *)(iVar3 + 0xc)); - proc_7F06EEA4((longlong)iVar3,**(int **)(iVar3 + 8)); - *(byte *)(iVar2 + 1) = *(byte *)(iVar2 + 1) | 2; - *(float *)(iVar2 + 0x18) = -*(float *)(*(int *)(iVar3 + 0xc) + 0x38); - } - return; -} - - - -void proc_7F05FA7C(int param_1) - -{ - undefined4 *puVar1; - int *piVar2; - - piVar2 = &pPlayer->unknown + param_1 * 0xea; - if (((piVar2[0x2a4] == 0) && (0 < piVar2[0x227])) && - (puVar1 = create_new_item_instance_of_model(0xca,0x56), puVar1 != NULL)) { - *(undefined4 **)(piVar2 + 0x2a4) = puVar1; - piVar2[0x2a5] = 0; - *(undefined2 *)((int)puVar1 + 0x82) = 1; - } - return; -} - - - -void proc_7F05FB00(int param_1) - -{ - int iVar1; - int *piVar2; - - piVar2 = &pPlayer->unknown; - iVar1 = (piVar2 + param_1 * 0xea)[0x2a4]; - if (iVar1 != 0) { - proc_7F041024(iVar1,1); - (piVar2 + param_1 * 0xea)[0x2a4] = 0; - } - return; -} - - - -int ** proc_7F05FB64(int param_1) - -{ - int iVar1; - float *pfVar2; - u32 uVar3; - int **ppiVar4; - float local_d4; - int local_d0; - int local_cc; - ITEM_IDS local_c8; - float *local_c4; - int local_c0; - float local_bc; - float local_b8; - float local_b4; - undefined4 auStack176 [3]; - undefined4 auStack164 [12]; - undefined4 local_74; - undefined4 local_70; - undefined4 local_6c; - float local_64; - float local_60; - float local_5c; - float local_54; - float local_50; - float local_4c; - undefined4 auStack72 [16]; - int *local_8; - int **local_4; - - local_8 = &pPlayer->right_weapon + param_1 * 0xea; - local_c0 = get_curplayer_positiondata(); - local_c4 = (float *)proc_7F08A02C(); - local_c8 = get_item_in_hand(param_1); - proc_7F057FD0(auStack72); - if (local_c8 != ITEM_TANKSHELLS) { - proc_7F0681CC(); - pfVar2 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar2,&local_bc); - local_d4 = (float)local_8[0xba]; - local_d0 = local_8[0xbb]; - local_64 = local_bc * flt_80053DDC; - local_cc = local_8[0xbc]; - local_60 = local_b8 * flt_80053DDC; - local_5c = local_b4 * flt_80053DDC; - local_54 = local_64 * global_timer_delta; - local_50 = local_60 * global_timer_delta; - local_4c = local_5c * global_timer_delta; - if (0 < clock_timer) { - local_54 = local_54 + (*(float *)(local_c0 + 8) - *local_c4) / global_timer_delta; - local_50 = local_50 + (*(float *)(local_c0 + 0xc) - local_c4[1]) / global_timer_delta; - local_4c = local_4c + (*(float *)(local_c0 + 0x10) - local_c4[2]) / global_timer_delta; - } - goto LAB_7f05fe34; - } - iVar1 = get_ptr_for_players_tank(); - if ((iVar1 == 0) || ((*(byte *)(iVar1 + 1) & 2) == 0)) { - proc_7F068190(auStack176,&local_bc); - pfVar2 = (float *)proc_7F078444(); - proc_7F0583D8(pfVar2,&local_bc); - } - else { - proc_7F07CEB0(&local_bc); - } - local_54 = local_bc * flt_80053DD8; - local_50 = local_b8 * flt_80053DD8; - local_4c = local_b4 * flt_80053DD8; - if (0 < clock_timer) { - local_54 = local_54 + (*(float *)(local_c0 + 8) - *local_c4) / global_timer_delta; - local_50 = local_50 + (*(float *)(local_c0 + 0xc) - local_c4[1]) / global_timer_delta; - local_4c = local_4c + (*(float *)(local_c0 + 0x10) - local_c4[2]) / global_timer_delta; - } - if (iVar1 == 0) { - local_d4 = *(float *)(local_c0 + 8); -LAB_7f05fd2c: - local_d0 = *(int *)(local_c0 + 0xc); - local_cc = *(int *)(local_c0 + 0x10); - } - else { - if ((*(byte *)(iVar1 + 1) & 2) == 0) { - local_d4 = *(float *)(local_c0 + 8); - goto LAB_7f05fd2c; - } - iVar1 = *(int *)(iVar1 + 4); - local_d4 = *(float *)(*(int *)(*(int *)(iVar1 + 0x14) + 0xc) + 0x130); - local_d0 = *(int *)(*(int *)(*(int *)(iVar1 + 0x14) + 0xc) + 0x134); - local_cc = *(int *)(*(int *)(*(int *)(iVar1 + 0x14) + 0xc) + 0x138); - pfVar2 = (float *)proc_7F078444(); - proc_7F058474(pfVar2,&local_d4); - } - proc_7F09C7AC(); -LAB_7f05fe34: - proc_7F058020(&pPlayer->field_AD8 + param_1 * 0xea,auStack164); - local_74 = 0; - local_70 = 0; - local_6c = 0; - ppiVar4 = (int **)local_8[0x88]; - if (ppiVar4 == NULL) { - ppiVar4 = (int **)create_new_item_instance_of_model(0xca,0x56); - } - else { - local_8[0x89] = 1; - } - if (ppiVar4 != NULL) { - *(undefined2 *)((int)ppiVar4 + 0x82) = 0xffff; - ppiVar4[0x19] = (int *)((uint)ppiVar4[0x19] & 0xfff9ffff); - local_4 = ppiVar4; - uVar3 = get_cur_playernum(); - local_4[0x19] = (int *)((uint)local_4[0x19] | uVar3 << 0x11); - ppiVar4 = (int **)proc_7F05EC1C(); - if (((uint)local_4[0x19] & 0x80) != 0) { - ppiVar4 = (int **)local_4[0x1b]; - *ppiVar4 = (int *)((uint)*ppiVar4 | 0x80); - if (local_c8 != ITEM_TANKSHELLS) { - *local_4[0x1b] = *local_4[0x1b] | 0x20; - *(int **)(local_4[0x1b] + 0x2c) = local_4[0x17]; - local_4[0x1b][0x2d] = local_4[0x1b][2]; - *(float *)(local_4[0x1b] + 4) = local_64; - *(float *)(local_4[0x1b] + 5) = local_60; - *(float *)(local_4[0x1b] + 6) = local_5c; - local_4[0x1b][0x2f] = 0x3c; - ppiVar4 = (int **)local_4[0x1b]; - if (ppiVar4[0x26] == NULL) { - ppiVar4 = play_sfx_a1(ptr_sfx_buf,1,(sfxdata *)(ppiVar4 + 0x26)); - } - else { - if (ppiVar4[0x27] == NULL) { - ppiVar4 = play_sfx_a1(ptr_sfx_buf,1,(sfxdata *)(ppiVar4 + 0x27)); - } - } - } - } - } - return ppiVar4; -} - - - -// WARNING: Instruction at (ram,0x7f060974) overlaps instruction at (ram,0x7f060970) -// - -void handles_firing_or_throwing_weapon_in_hand(int hand) - -{ - ushort *partdesc; - int item; - u32 uVar3; - float *pfVar4; - ulonglong uVar1; - longlong lVar2; - short sVar6; - uint *puVar5; - undefined4 *puVar7; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - undefined8 extraout_a0_04; - undefined8 extraout_a0_05; - undefined8 extraout_a0_06; - undefined8 extraout_a0_07; - undefined8 extraout_a0_08; - undefined4 unaff_s0_lo; - int *piVar8; - int *posdata; - uint uVar9; - char cVar10; - undefined4 unaff_retaddr; - float fVar11; - f32 fVar12; - f32 fVar13; - f32 fVar14; - int iVar15; - int iVar16; - float fVar17; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - float extraout_f12_10; - float extraout_f12_11; - float extraout_f12_12; - float extraout_f12_13; - float a; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float extraout_f14_06; - float extraout_f14_07; - float extraout_f14_08; - float x; - float fVar18; - float fVar19; - float fVar20; - float fVar21; - float fVar22; - undefined8 in_stack_fffffd80; - int *piVar23; - int *piVar24; - int *objinst; - int *piVar25; - float *pfVar26; - float fStack548; - float fStack544; - float fStack540; - int *piStack532; - undefined4 *puStack524; - float fStack520; - float fStack516; - float fStack512; - float fStack508; - float fStack504; - float fStack500; - float fStack496; - float fStack492; - float fStack488; - float fStack480; - float fStack476; - float fStack472; - float fStack468; - float fStack464; - float fStack460; - float fStack456; - float fStack452; - float fStack448; - float *pfStack432; - int iStack428; - int iStack424; - int *piStack416; - int *piStack412; - float afStack404 [16]; - float afStack340 [12]; - undefined4 uStack292; - undefined4 uStack288; - undefined4 uStack284; - float fStack276; - float fStack272; - float fStack268; - object_header *poStack264; - float afStack260 [14]; - float fStack204; - float afStack196 [16]; - float fStack132; - float fStack128; - float fStack124; - float fStack116; - float fStack112; - float fStack108; - float fStack100; - float fStack96; - float fStack92; - float fStack84; - float fStack80; - float fStack76; - float afStack68 [16]; - undefined4 *puStack4; - - fStack276 = dword_80035C40; - fStack272 = (float)dword_80035C44; - fStack268 = (float)dword_80035C48; - piVar8 = &pPlayer->unknown + hand * 0xea; - piStack412 = NULL; - piStack416 = NULL; - posdata = piVar8 + 0x21c; - iStack428 = return_ammo_in_hand(hand); - pfStack432 = (float *)get_ptr_item_statistics(iStack428); - if (hand == 0) { - item = return_ammo_in_hand(1); - item = check_special_attributes(item,0x800); - fVar11 = global_timer_delta; - if (item == 0) { - *(float *)(piVar8 + 0x28d) = - (float)piVar8[0x28d] - (global_timer_delta + global_timer_delta) / 240.00000000; - fVar18 = extraout_f12; - if ((float)piVar8[0x28d] < 0.00000000) { - piVar8[0x28d] = 0; - fVar18 = extraout_f12; - } - } - else { - *(float *)(piVar8 + 0x28d) = - (float)piVar8[0x28d] + (global_timer_delta + global_timer_delta) / 240.00000000; - fVar18 = extraout_f12; - if (2.00000000 < (float)piVar8[0x28d]) { - piVar8[0x28d] = 0x40000000; - fVar18 = extraout_f12; - } - } - } - else { - item = return_ammo_in_hand(0); - item = check_special_attributes(item,0x800); - fVar11 = global_timer_delta; - if (item == 0) { - *(float *)(piVar8 + 0x28d) = - (float)piVar8[0x28d] + (global_timer_delta + global_timer_delta) / 240.00000000; - fVar18 = extraout_f12_00; - if (0.00000000 < (float)piVar8[0x28d]) { - piVar8[0x28d] = 0; - fVar18 = extraout_f12_00; - } - } - else { - *(float *)(piVar8 + 0x28d) = - (float)piVar8[0x28d] - (global_timer_delta + global_timer_delta) / 240.00000000; - fVar18 = extraout_f12_00; - if ((float)piVar8[0x28d] < -2.00000000) { - piVar8[0x28d] = -0x40000000; - fVar18 = extraout_f12_00; - } - } - } - fStack456 = dword_80035C4C; - fStack452 = dword_80035C50; - fStack448 = dword_80035C54; - fStack468 = dword_80035C58; - fStack464 = dword_80035C5C; - fStack460 = flt_80035C60; - fStack480 = dword_80035C64; - fStack476 = flt_80035C68; - fStack472 = dword_80035C6C; - item = piVar8[0x282]; - uVar9 = item + 3U & 3; - if (((int)(item + 3U) < 0) && (uVar9 != 0)) { - uVar9 -= 4; - } - piVar25 = posdata + uVar9 * 3; - objinst = posdata + item * 3; - uVar9 = item + 1U & 3; - if (((int)(item + 1U) < 0) && (uVar9 != 0)) { - uVar9 -= 4; - } - piVar24 = posdata + uVar9 * 3; - uVar9 = item + 2U & 3; - if (((int)(item + 2U) < 0) && (uVar9 != 0)) { - uVar9 -= 4; - } - piVar23 = posdata + uVar9 * 3; - proc_7F05AEFC((float *)(piVar25 + 0x42),(float *)(objinst + 0x42),(float *)(piVar24 + 0x42), - (float *)(piVar23 + 0x42),fVar18,(float *)piVar8[0x283]); - proc_7F05AEFC((float *)(piVar25 + 0x4e),(float *)(objinst + 0x4e),(float *)(piVar24 + 0x4e), - (float *)(piVar23 + 0x4e),extraout_f12_01,(float *)piVar8[0x283]); - proc_7F05AEFC((float *)(piVar25 + 0x5a),(float *)(objinst + 0x5a),(float *)(piVar24 + 0x5a), - (float *)(piVar23 + 0x5a),extraout_f12_02,(float *)piVar8[0x283]); - fStack448 = fStack448 * pPlayer->field_FC0; - fStack456 = fStack456 * pPlayer->field_FC0 + (float)piVar8[0x287]; - fStack452 = fStack452 * pPlayer->field_FC0 + (float)piVar8[0x288]; - proc_7F05DCB8(hand); - fVar18 = flt_80053DE0; - fStack456 = fStack456 + fVar11; - item = 0; - if (0 < clock_timer) { - fVar11 = (float)piVar8[0x255]; - while( true ) { - item += 1; - *(float *)(piVar8 + 0x255) = fStack456 + fVar18 * fVar11; - *(float *)(piVar8 + 0x256) = fStack452 + fVar18 * (float)piVar8[0x256]; - *(float *)(piVar8 + 599) = fStack448 + fVar18 * (float)piVar8[599]; - *(float *)(piVar8 + 600) = fStack468 + fVar18 * (float)piVar8[600]; - *(float *)(piVar8 + 0x259) = fStack464 + fVar18 * (float)piVar8[0x259]; - *(float *)(piVar8 + 0x25a) = fStack460 + fVar18 * (float)piVar8[0x25a]; - *(float *)(piVar8 + 0x25b) = fStack480 + fVar18 * (float)piVar8[0x25b]; - *(float *)(piVar8 + 0x25c) = fStack476 + fVar18 * (float)piVar8[0x25c]; - *(float *)(piVar8 + 0x25d) = fStack472 + fVar18 * (float)piVar8[0x25d]; - if (clock_timer <= item) break; - fVar11 = (float)piVar8[0x255]; - } - } - fVar11 = flt_80053DE4; - fVar19 = (float)piVar8[0x256] * flt_80053DE4; - fVar18 = (float)piVar8[599] * flt_80053DE4; - *(float *)(piVar8 + 0x24c) = (float)piVar8[0x255] * flt_80053DE4; - *(float *)(piVar8 + 0x24d) = fVar19; - *(float *)(piVar8 + 0x24e) = fVar18; - *(float *)(piVar8 + 0x24f) = (float)piVar8[600] * fVar11; - *(float *)(piVar8 + 0x250) = (float)piVar8[0x259] * fVar11; - *(float *)(piVar8 + 0x251) = (float)piVar8[0x25a] * fVar11; - *(float *)(piVar8 + 0x252) = (float)piVar8[0x25b] * fVar11; - *(float *)(piVar8 + 0x253) = (float)piVar8[0x25c] * fVar11; - *(float *)(piVar8 + 0x254) = (float)piVar8[0x25d] * fVar11; - if ((longlong)hand == 0) { - fVar11 = proc_7F05DCE8(0); - fStack276 = (float)piVar8[0x28a] + fVar11 + (float)piVar8[0x24c]; - } - else { - fVar11 = proc_7F05DCE8((longlong)hand); - fStack276 = (fVar11 + (float)piVar8[0x24c]) - (float)piVar8[0x28a]; - } - fStack272 = (float)piVar8[0x28b] + pfStack432[2] + (float)piVar8[0x24d]; - fStack268 = (float)piVar8[0x28c] + pfStack432[3] + (float)piVar8[0x24e]; - if (((iStack428 == 0x19) || (iStack428 == 0x1e)) || (iStack428 == 0x17)) { - fStack272 = fStack272 + (float)pPlayer->ducking_height_offset / -100.00000000; - fStack268 = fStack268 + ((float)pPlayer->ducking_height_offset * 3.00000000) / -100.00000000; - if ((iStack428 == 0x19) && - (((item = cur_player_get_screen_setting(), item == 1 || - (item = cur_player_get_screen_setting(), item == 2)) || - (item = get_screen_ratio(), item == 1)))) { - fStack272 = fStack272 - 3.00000000; - } - } - else { - if (iStack428 == 0x1f) { - fStack272 = fStack272 + ((float)pPlayer->ducking_height_offset * 2.50000000) / -100.00000000; - fStack268 = fStack268 + ((float)pPlayer->ducking_height_offset * 7.50000000) / -100.00000000; - } - else { - fStack272 = fStack272 + ((float)pPlayer->ducking_height_offset * 5.00000000) / -100.00000000; - fStack268 = fStack268 + ((float)pPlayer->ducking_height_offset * 15.00000000) / -100.00000000; - } - } - if ((*(char *)(piVar8 + 0x21f) != '\0') && - (item = check_special_attributes(iStack428,0x20), item != 0)) { - item = check_special_attributes(iStack428,0x40); - if (item != 0) { - uVar3 = get_random_value(); - fVar11 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar11 = fVar11 + 4294967296.00000000; - } - fStack276 = fStack276 + (flt_80053DEC - fVar11 * 0.00000000 * flt_80053DE8); - } - uVar3 = get_random_value(); - fVar11 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar11 = fVar11 + 4294967296.00000000; - } - fStack272 = fStack272 + (flt_80053DF4 - fVar11 * 0.00000000 * flt_80053DF0); - uVar3 = get_random_value(); - fVar11 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar11 = fVar11 + 4294967296.00000000; - } - fStack268 = fStack268 + (flt_80053DFC - fVar11 * 0.00000000 * flt_80053DF8); - } - fVar12 = getPlayer_c_screenwidth(); - fVar13 = getPlayer_c_screenwidth(); - fVar14 = getPlayer_c_screenleft(); - fStack276 = fStack276 + - (((pPlayer->field_FFC - (float)fVar14) - (float)fVar13 * 0.50000000) * pfStack432[6]) - / ((float)fVar12 * 0.50000000); - fVar12 = getPlayer_c_screentop(); - fVar13 = getPlayer_c_screenheight(); - if ((float)fVar13 * 0.50000000 < pPlayer->field_1000 - (float)fVar12) { - fVar13 = getPlayer_c_screenheight(); - fVar14 = getPlayer_c_screenheight(); - fVar12 = getPlayer_c_screentop(); - fStack272 = fStack272 - - (((pPlayer->field_1000 - (float)fVar12) - (float)fVar14 * 0.50000000) * - pfStack432[5]) / ((float)fVar13 * 0.50000000); - } - else { - fVar13 = getPlayer_c_screenheight(); - fVar14 = getPlayer_c_screenheight(); - fVar12 = getPlayer_c_screentop(); - fStack272 = fStack272 - - (((pPlayer->field_1000 - (float)fVar12) - (float)fVar14 * 0.50000000) * - pfStack432[4]) / ((float)fVar13 * 0.50000000); - } - proc_7F05C614(); - proc_7F057FD0(afStack340); - if ((iStack428 == 0x1e) || (iStack428 == 0x17)) { - fStack496 = flt_80035C70; - fStack492 = flt_80035C74; - fStack488 = flt_80035C78; - proc_7F058714(&fStack496,afStack260); - proc_7F058098(afStack260,afStack340); - item = piVar8[0x24b]; - fVar11 = extraout_f12_04; - fVar18 = extraout_f14_00; - } - else { - if (iStack428 == 0x1f) { - fStack508 = flt_80035C7C; - fStack504 = flt_80035C80; - fStack500 = flt_80035C84; - proc_7F058714(&fStack508,afStack260); - proc_7F058098(afStack260,afStack340); - item = piVar8[0x24b]; - fVar11 = extraout_f12_05; - fVar18 = extraout_f14_01; - } - else { - fVar11 = extraout_f12_03; - fVar18 = extraout_f14; - if (iStack428 == 1) { - if (pPlayer->field_2A38 != 0x11) { - item = piVar8[0x24b]; - fVar11 = extraout_f12_03; - fVar18 = extraout_f14; - goto LAB_7f060a94; - } - fStack520 = flt_80035C88; - fStack516 = flt_80035C8C; - fStack512 = flt_80035C90; - proc_7F058714(&fStack520,afStack260); - proc_7F058098(afStack260,afStack340); - fStack276 = fStack276 + -2.50000000; - fStack272 = fStack272 + flt_80053E00; - fStack268 = fStack268 + 2.00000000; - fVar11 = extraout_f12_06; - fVar18 = extraout_f14_02; - } - item = piVar8[0x24b]; - } - } -LAB_7f060a94: - if (item == 0) { - piVar8[0x23a] = 0; - piVar8[0x237] = 0; - piVar8[0x238] = 0; - piVar8[0x239] = 0; - } - else { - fStack276 = fStack276 + (float)piVar8[0x247]; - fStack272 = fStack272 + (float)piVar8[0x248]; - fStack268 = fStack268 + (float)piVar8[0x249]; - proc_7F058098((float *)(piVar8 + 0x23b),afStack340); - uStack292 = 0; - uStack288 = 0; - uStack284 = 0; - fVar11 = extraout_f12_07; - fVar18 = extraout_f14_03; - } - fVar19 = 0.00000000; - fVar20 = (float)piVar8[0x250]; - fVar21 = (float)piVar8[0x251]; - fVar22 = (float)piVar8[0x252]; - iVar15 = piVar8[0x253]; - iVar16 = piVar8[0x254]; - proc_7F059908(afStack260,fVar11,fVar18,0.00000000,0.00000000,0.00000000,(float)piVar8[0x24f], - fVar20,fVar21,fVar22); - proc_7F058098(afStack260,afStack340); - proc_7F059CE8(afStack260,extraout_f12_08,extraout_f14_04,0.00000000, - fStack276 - (float)piVar8[0x28e]); - proc_7F058098(afStack260,afStack340); - proc_7F058020(afStack340,afStack68); - proc_7F058998(&fStack276,(int)afStack68); - pfVar26 = (float *)(piVar8 + 0x2a6); - proc_7F058020(afStack68,pfVar26); - piVar25 = piVar8 + 0x2b6; - proc_7F058020(piVar25,piVar8 + 0x2c6); - pfVar4 = (float *)proc_7F078444(); - proc_7F05818C(pfVar4,pfVar26,(int)piVar25); - *(undefined *)((int)piVar8 + 0x87f) = 1; - item = get_ptr_weapon_model_header_line(iStack428); - if ((item == 0) || (item = check_special_attributes(iStack428,0x800), item == 0)) { -LAB_7f060c6c: - *(undefined *)((int)piVar8 + 0x87f) = 0; - } - else { - item = check_special_attributes(iStack428,0x2000); - if (item == 0) { - if (piVar8[0x225] == 6) goto LAB_7f060c6c; - if (piVar8[0x225] == 7) { - *(undefined *)((int)piVar8 + 0x87f) = 0; - } - else { - uVar1 = proc_7F05CEBC(hand); - if (uVar1 != 0) { - item = get_itemtype_in_hand(hand); - if (item != 0) { - item = piVar8[0x227]; - goto LAB_7f060c74; - } - goto LAB_7f060c6c; - } - *(undefined *)((int)piVar8 + 0x87f) = 0; - } - } - else { - *(undefined *)((int)piVar8 + 0x87f) = 0; - } - } - item = piVar8[0x227]; -LAB_7f060c74: - if (item < 1) { - item = check_special_attributes(iStack428,2); - if (item == 0) { - cVar10 = *(char *)((int)piVar8 + 0x87f); - } - else { - *(undefined *)((int)piVar8 + 0x87f) = 0; - cVar10 = *(char *)((int)piVar8 + 0x87f); - } - } - else { - cVar10 = *(char *)((int)piVar8 + 0x87f); - } - if (cVar10 != '\0') { - poStack264 = (object_header *)(&pPlayer->unknown + hand * 8 + 0x204); - lVar2 = (longlong)(int)poStack264; - iStack424 = 0; - proc_7F0BD714((int)*(short *)((int)(&pPlayer->unknown + hand * 8) + 0x81e) << 6); - puStack4 = (undefined4 *)lVar2; - item = iStack424; - if (0 < poStack264->num_object_grps) { - do { - iStack424 = item; - puVar7 = (undefined4 *)lVar2; - proc_7F057FD0(puVar7); - lVar2 = (longlong)(int)(puVar7 + 0x10); - item = iStack424 + 1; - } while ((longlong)(iStack424 + 1) < (longlong)poStack264->num_object_grps); - } - set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack264); - objinst = piVar8 + 0x2da; - proc_7F075F68((int)objinst,(ushort **)poStack264,piVar8 + 0x2e2); - proc_7F05E978((int)objinst,1); - proc_7F05EA94((int)objinst,(int)*(char *)((int)piVar8 + 0x87e)); - item = poStack264->offset_obj_offset_block; - if (*(int *)(item + 4) == 0) { - item = *(int *)(item + 0xc); - } - else { - piStack412 = posdata + (uint)*(ushort *)(*(int *)(*(int *)(item + 4) + 4) + 4) + 0xc6; - item = *(int *)(item + 0xc); - } - if (item != 0) { - piStack416 = *(int **)(item + 4); - } - *(undefined4 **)(piVar8 + 0x2dd) = puStack4; - item = check_special_attributes(iStack428,0x400); - extraout_a0_04 = extraout_a0; - if ((item != 0) && (extraout_a0_04 = extraout_a0, hand == 1)) { - proc_7F0589B4(-1.00000000,extraout_a0,afStack68); - extraout_a0_04 = extraout_a0_00; - } - matrix_multiply_A1_by_F12(flt_80053E04,extraout_a0_04,afStack68); - proc_7F058020(afStack68,puStack4); - if ((item_related *)poStack264->ptr_archetype == &weapon_gun_revolver) { - item = *(int *)(poStack264->offset_obj_offset_block + 0x10); - if (item == 0) { - item = *(int *)(poStack264->offset_obj_offset_block + 0x14); - } - else { - fVar11 = 0.00000000; - puStack524 = *(undefined4 **)(item + 4); - if (iStack428 == 0x12) { - if (piVar8[0x225] == 1) { - fVar11 = ((float)(piVar8[0x224] + piVar8[0x227] * -6 + 0x1e) * flt_80053E08) / - 36.00000000; - } - else { - fVar11 = ((float)(6 - piVar8[0x227]) * flt_80053E0C) / 6.00000000; - } - } - else { - if ((piVar8[0x225] == 1) && (piVar8[0x224] < 6)) { - fVar11 = ((float)piVar8[0x224] * flt_80053E10) / 36.00000000; - } - } - proc_7F058688(fVar11,(longlong)(int)puStack524,afStack260); - proc_7F058998(puStack524,(int)afStack260); - proc_7F0580C8(afStack68,afStack260,(int)(puStack4 + 0x30)); - item = *(int *)(poStack264->offset_obj_offset_block + 0x14); - } - if (item != 0) { - posdata = *(int **)(item + 4); - if (piVar8[0x225] == 1) { - item = piVar8[0x224]; - if (item < 3) { - fVar19 = -(float)item * flt_80053E14; - fVar11 = fVar19 + fVar19; - } - else { - fVar19 = -(float)(6 - item) * flt_80053E18; - fVar11 = fVar19 + fVar19; - } - piStack532 = posdata; - proc_7F058570(fVar11 / 6.00000000,(longlong)(int)posdata,afStack260); - proc_7F058998(piStack532,(int)afStack260); - } - else { - init_something_copy_posdata_to_it(posdata,(int *)afStack260); - } - proc_7F0580C8(afStack68,afStack260,(int)(puStack4 + 0x40)); - } - } - if (piStack412 != NULL) { - *piStack412 = 0; - } - if (piStack416 == NULL) { - piVar8[0x2d6] = piVar8[0x2c2]; - *(float *)(piVar8 + 0x2d9) = -(float)piVar8[0x2b4]; - piVar8[0x2d7] = piVar8[0x2c3]; - piVar8[0x2d8] = piVar8[0x2c4]; - item = poStack264->offset_obj_offset_block; - } - else { - uVar3 = get_random_value(); - fVar11 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar11 = fVar11 + 4294967296.00000000; - } - fVar11 = fVar11 * 0.00000000 * 0.25000000 + 1.00000000; - fVar18 = *pfStack432; - item = check_special_attributes(iStack428,1); - if (item == 0) { - init_something_copy_posdata_to_it(piStack416,(int *)&fStack132); - extraout_a0_04 = extraout_a0_03; - } - else { - uVar3 = get_random_value(); - fVar17 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar17 = fVar17 + 4294967296.00000000; - } - proc_7F058688(fVar17 * 0.00000000 * flt_80053E1C,extraout_a0_01,&fStack132); - proc_7F058998(piStack416,(int)&fStack132); - extraout_a0_04 = extraout_a0_02; - } - matrix_multiply_A1_by_F12(fVar11,extraout_a0_04,&fStack132); - proc_7F058A14(fVar18,extraout_a0_04,(int)&fStack132); - proc_7F058068(afStack68,&fStack132); - proc_7F058020(&fStack132,puStack4 + 0x10); - *(float *)(piVar8 + 0x2d6) = fStack84; - *(float *)(piVar8 + 0x2d7) = fStack80; - *(float *)(piVar8 + 0x2d8) = fStack76; - pfVar4 = (float *)proc_7F078444(); - proc_7F058474(pfVar4,(float *)(piVar8 + 0x2d6)); - *(float *)(piVar8 + 0x2d9) = -fStack76; - if (*(char *)((int)piVar8 + 0x87d) != '\0') { - if (piStack412 != NULL) { - *piStack412 = 1; - } - item = *(int *)(poStack264->offset_obj_offset_block + 8); - if (item != 0) { - pfVar4 = *(float **)(item + 4); - fStack548 = fStack84 + *pfVar4 * fStack132 + pfVar4[1] * fStack116 + pfVar4[2] * fStack100 - ; - fStack544 = fStack80 + *pfVar4 * fStack128 + pfVar4[1] * fStack112 + pfVar4[2] * fStack96; - fStack540 = fStack76 + *pfVar4 * fStack124 + pfVar4[1] * fStack108 + pfVar4[2] * fStack92; - uVar3 = get_random_value(); - fVar17 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar17 = fVar17 + 4294967296.00000000; - } - proc_7F059CE8(afStack196,extraout_f12_09,extraout_f14_05, - fVar17 * 0.00000000 * flt_80053E20,-fStack548); - matrix_multiply_A1_by_F12(flt_80053E24 * fVar11,extraout_a0_05,afStack196); - proc_7F059B58(afStack404,extraout_f12_10,extraout_f14_06,0.00000000, - fStack276 - (float)piVar8[0x28e]); - proc_7F058068(afStack404,afStack196); - proc_7F058B80(fVar18,extraout_a0_06,(int)afStack196); - proc_7F058068(afStack340,afStack196); - proc_7F058998(&fStack548,(int)afStack196); - proc_7F058020(afStack196,puStack4 + 0x20); - } - if (((item_related *)poStack264->ptr_archetype == &weapon_gun_kf7) && - (item = *(int *)(poStack264->offset_obj_offset_block + 0x10), item != 0)) { - pfVar4 = *(float **)(item + 4); - piVar25 = puStack4 + 0x30; - fStack548 = fStack84 + *pfVar4 * fStack132 + pfVar4[1] * fStack116 + pfVar4[2] * fStack100 - ; - fStack544 = fStack80 + *pfVar4 * fStack128 + pfVar4[1] * fStack112 + pfVar4[2] * fStack96; - piVar23 = (int *)(flt_80053E28 * fVar11); - fStack540 = fStack76 + *pfVar4 * fStack124 + pfVar4[1] * fStack108 + pfVar4[2] * fStack92; - uVar3 = get_random_value(); - fVar11 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar11 = fVar11 + 4294967296.00000000; - } - proc_7F059CE8(afStack196,extraout_f12_11,extraout_f14_07, - fVar11 * 0.00000000 * flt_80053E2C,-fStack548); - matrix_multiply_A1_by_F12((float)piVar23,extraout_a0_07,afStack196); - proc_7F059B58(afStack404,extraout_f12_12,extraout_f14_08,0.00000000, - fStack276 - (float)piVar8[0x28e]); - proc_7F058068(afStack404,afStack196); - proc_7F058B80(fVar18,extraout_a0_08,(int)afStack196); - proc_7F058068(afStack340,afStack196); - proc_7F058998(&fStack548,(int)afStack196); - proc_7F058020(afStack196,piVar25); - } - } - item = poStack264->offset_obj_offset_block; - } - partdesc = *(ushort **)(item + 0x18); - if (partdesc != NULL) { - pfVar4 = *(float **)(partdesc + 2); - sVar6 = proc_7F06C570(partdesc,0); - fVar19 = (float)proc_7F05E6B4(); - if ((poStack264->num_offset_entries < 0x1d) || - (item = *(int *)(poStack264->offset_obj_offset_block + 0x70), item == 0)) { - proc_7F0584D0(pfVar4,extraout_f12_13,(float *)piVar8[0x2a1]); - } - else { - item = *(int *)(item + 4); - get_value_if_watch_is_on_hand_or_not(hand); - guRotateF((float [4] [4]) - CONCAT604(CONCAT564(CONCAT524(CONCAT484(CONCAT444(CONCAT404(CONCAT364(CONCAT324( - CONCAT248(CONCAT204(CONCAT164(CONCAT124(CONCAT84( - CONCAT44(*(float *)(item + 8) - - *(float *)(item + 0x14),fVar20),fVar21), - fVar22),iVar15),iVar16),in_stack_fffffd80), - unaff_s0_lo),unaff_retaddr),piVar23),piVar24), - piVar25),objinst),fVar13),fVar14),a,x, - (float)afStack260, - ((((float)piVar8[0x2a1] + flt_80053E30) - fVar19) * 360.00000000) / flt_80053E34); - proc_7F058998(pfVar4,(int)afStack260); - } - proc_7F05818C(afStack68,afStack260,(int)(puStack4 + (int)sVar6 * 0x10)); - } - if (0x1d < poStack264->num_offset_entries) { - fVar19 = (float)seems_to_load_cuff_microcode(); - } - partdesc = *(ushort **)(poStack264->offset_obj_offset_block + 0x1c); - if (partdesc != NULL) { - posdata = *(int **)(partdesc + 2); - sVar6 = proc_7F06C570(partdesc,0); - proc_7F05E83C(hand); - init_something_copy_posdata_to_it(posdata,(int *)afStack260); - fStack204 = fStack204 - (float)piVar8[0x2a2]; - proc_7F0580C8(afStack68,afStack260,(int)(puStack4 + (int)sVar6 * 0x10)); - } - item = 0; - iVar15 = 0; - if (0x12 < poStack264->num_offset_entries) { - do { - partdesc = *(ushort **)(poStack264->offset_obj_offset_block + iVar15 + 0x48); - if ((partdesc != NULL) && - (puVar5 = (uint *)extract_id_from_object_structure_microcode((int)objinst,partdesc), - puVar5 != NULL)) { - *puVar5 = (uint)(piVar8[0x229] < 5 - item) ^ 1; - } - partdesc = *(ushort **)(poStack264->offset_obj_offset_block + iVar15 + 0x5c); - if ((partdesc != NULL) && - (puVar5 = (uint *)extract_id_from_object_structure_microcode((int)objinst,partdesc), - puVar5 != NULL)) { - *puVar5 = (uint)(piVar8[0x229] < 5 - item) ^ 1; - } - item += 1; - iVar15 += 4; - } while (item != 5); - } - proc_7F06EFC4((int)objinst); - if ((*(char *)(piVar8 + 0x21f) != '\0') && (true)) { - switch(iStack428) { - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - proc_7F061BF4(hand); - piVar8[0x228] = piVar8[0x228] + 1; - break; - case 0x16: - case 0x17: - proc_7F061BF4(hand); - } - } - } - if (iStack428 == 0x19) { - proc_7F05F928(hand); - cVar10 = *(char *)(piVar8 + 0x21f); - } - else { - cVar10 = *(char *)(piVar8 + 0x21f); - } - if (cVar10 != '\0') { - proc_7F089778((int)pPlayer); - proc_7F068508(hand,fVar19); - if (iStack428 == 0x18) { - proc_7F05F73C(hand); - } - else { - if (iStack428 == 0x1a) { - proc_7F05EE24(hand); - } - else { - if (iStack428 == 0x19) { - proc_7F05FB64(hand); - } - else { - if (iStack428 == 3) { - proc_7F05F09C(hand); - } - else { - if (((((iStack428 == 0x1d) || (iStack428 == 0x1c)) || (iStack428 == 0x1b)) || - ((iStack428 == 0x21 || (iStack428 == 0x2f)))) || - ((iStack428 == 0x30 || ((iStack428 == 0x3d || (iStack428 == 0x22)))))) { - generate_player_thrown_object(hand); - } - else { - if (iStack428 == 0x23) { - proc_7F05F73C(hand); - } - else { - if (iStack428 == 0x24) { - proc_7F05F73C(hand); - } - } - } - } - } - } - } - } - return; -} - - - -void proc_7F061920(void) - -{ - handles_firing_or_throwing_weapon_in_hand(0); - handles_firing_or_throwing_weapon_in_hand(1); - return; -} - - - -void proc_7F061948(undefined *param_1,int param_2,float *param_3,float *param_4) - -{ - bool bVar1; - float fVar2; - float fVar3; - u32 uVar4; - float fVar5; - float fVar6; - float fVar7; - - *(float *)(param_1 + 4) = *param_3; - *(float *)(param_1 + 8) = param_3[1]; - *(float *)(param_1 + 0xc) = param_3[2]; - *(float *)(param_1 + 0x10) = *param_4 - *param_3; - *(float *)(param_1 + 0x14) = param_4[1] - param_3[1]; - *(float *)(param_1 + 0x18) = param_4[2] - param_3[2]; - fVar5 = sqrtf(*(float *)(param_1 + 0x18) * *(float *)(param_1 + 0x18) + - *(float *)(param_1 + 0x10) * *(float *)(param_1 + 0x10) + - *(float *)(param_1 + 0x14) * *(float *)(param_1 + 0x14)); - fVar7 = 1.00000000 / fVar5; - *(float *)(param_1 + 0x10) = *(float *)(param_1 + 0x10) * fVar7; - *(float *)(param_1 + 0x14) = *(float *)(param_1 + 0x14) * fVar7; - *(float *)(param_1 + 0x18) = *(float *)(param_1 + 0x18) * fVar7; - if (param_2 == 0x17) { - fVar7 = 300.00000000; - if (fVar5 <= 300.00000000) goto LAB_7f061a54; - } - else { - fVar7 = flt_80053E88; - if (fVar5 <= flt_80053E88) goto LAB_7f061a54; - } - fVar5 = fVar7; -LAB_7f061a54: - fVar6 = 500.00000000; - *param_1 = 0; - param_1[1] = (char)param_2; - *(float *)(param_1 + 0x1c) = fVar5; - fVar3 = flt_80053EA0; - fVar2 = flt_80053E9C; - fVar7 = flt_80053E8C; - if (500.00000000 <= fVar5) { - fVar6 = fVar5; - } - if (param_2 == 0x16) { - *(float *)(param_1 + 0x20) = fVar6 * 0.25000000; - fVar5 = flt_80053E90 * fVar6; - *(float *)(param_1 + 0x24) = fVar5; - if (fVar7 < fVar5) { - *(float *)(param_1 + 0x24) = fVar7; - } - uVar4 = get_random_value(); - fVar5 = (float)uVar4; - if ((int)uVar4 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - *(float *)(param_1 + 0x28) = (flt_80053E98 - fVar5 * 0.00000000 * flt_80053E94) * fVar6; - } - else { - if (param_2 == 0x17) { - *(float *)(param_1 + 0x24) = fVar6; - *(float *)(param_1 + 0x20) = fVar6 + fVar6; - if (fVar2 < fVar6) { - *(float *)(param_1 + 0x24) = fVar2; - } - *(undefined4 *)(param_1 + 0x28) = 0; - } - else { - fVar6 = flt_80053EA4 * fVar6; - bVar1 = flt_80053EA0 < fVar6; - *(float *)(param_1 + 0x20) = fVar6; - *(float *)(param_1 + 0x24) = fVar6; - if (bVar1) { - *(float *)(param_1 + 0x24) = fVar3; - } - uVar4 = get_random_value(); - fVar5 = (float)uVar4; - if ((int)uVar4 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - *(float *)(param_1 + 0x28) = - ((fVar5 * 0.00000000 + fVar5 * 0.00000000) - 1.00000000) * *(float *)(param_1 + 0x20); - } - } - if (*(float *)(param_1 + 0x1c) <= *(float *)(param_1 + 0x28)) { - *param_1 = 0xff; - } - return; -} - - - -void proc_7F061BF4(int param_1) - -{ - int iVar2; - ITEM_IDS IVar3; - ulonglong uVar1; - int *piVar4; - int *piVar5; - float fVar6; - float local_2c; - float local_28; - float local_24; - float local_20; - float local_1c; - float local_18; - int local_14; - - piVar5 = &pPlayer->unknown + param_1 * 0xea; - iVar2 = proc_7F0783C4(); - if ((float)piVar5[0x2d9] <= - -(*(float *)(iVar2 + 0x38) + - (float)piVar5[0x303] * *(float *)(iVar2 + 8) + - (float)piVar5[0x304] * *(float *)(iVar2 + 0x18) + - (float)piVar5[0x305] * *(float *)(iVar2 + 0x28))) { - IVar3 = get_item_in_hand(param_1); - proc_7F061948((undefined *)(piVar5 + 0x295),IVar3,(float *)(piVar5 + 0x2d6), - (float *)(piVar5 + 0x303)); - if ((*(int *)(pPlayer->position_data_pointer + 4) != 0) && - (uVar1 = get_num_players(), 1 < (longlong)uVar1)) { - piVar4 = &pPlayer->unknown + param_1 * 3; - local_14 = *(int *)(pPlayer->position_data_pointer + 4); - local_20 = (float)piVar5[0x303] - (float)piVar4[0xa86]; - local_1c = (float)piVar5[0x304] - (float)piVar4[0xa87]; - local_18 = (float)piVar5[0x305] - (float)piVar4[0xa88]; - guNormalize(&local_20,&local_1c,&local_18); - local_2c = (float)piVar5[0x303] - (float)piVar5[0x2d6]; - local_28 = (float)piVar5[0x304] - (float)piVar5[0x2d7]; - local_24 = (float)piVar5[0x305] - (float)piVar5[0x2d8]; - guNormalize(&local_2c,&local_28,&local_24); - fVar6 = proc_7F05ACB0(local_24 * local_18 + local_20 * local_2c + local_1c * local_28); - if (fVar6 <= flt_80053EA8) { - IVar3 = get_item_in_hand(param_1); - proc_7F061948((undefined *)(local_14 + param_1 * 0x2c + 0x180),IVar3, - (float *)(&pPlayer->field_2A18 + param_1 * 3),(float *)(piVar5 + 0x303)); - } - } - } - return; -} - - - -// WARNING: Could not reconcile some variable overlaps - -undefined4 * proc_7F061E18(undefined4 *param_1,char *param_2,int param_3) - -{ - byte bVar1; - undefined4 *puVar2; - xyzpoint *virtualAddress; - float *pfVar3; - u32 uVar4; - char cVar5; - undefined8 extraout_a0; - undefined4 *puVar6; - float fVar7; - float extraout_f12; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - undefined4 *puStackX0; - int iStackX8; - float fStack216; - float fStack212; - float fStack208; - float fStack196; - float fStack192; - float fStack188; - float *pfStack184; - uint *puStack176; - float fStack172; - float fStack168; - float fStack164; - float fStack160; - float fStack156; - float fStack152; - float fStack148; - float fStack144; - float fStack140; - float fStack136; - float fStack132; - float fStack128; - float fStack124; - float fStack120; - float fStack108; - xyzpoint *pxStack104; - float fStack100; - float fStack96; - float fStack92; - float fStack88; - float fStack84; - float fStack80; - undefined4 uStack76; - float afStack72 [16]; - xyzpoint *pxStack8; - - if (*param_2 < '\0') { - return param_1; - } - fStack88 = dword_80035C98; - fStack84 = dword_80035C9C; - uStack76 = dword_80035CA4; - fStack80 = dword_80035CA0; - puStackX0 = param_1; - iStackX8 = param_3; - pxStack104 = get_BONDdata_position(); - fStack120 = *(float *)(param_2 + 0x28); - fVar12 = *(float *)(param_2 + 0x24); - fStack156 = (float)DAT_80035ca8; - fStack148 = (float)DAT_80035cb0; - fStack152 = (float)DAT_80035cac; - fStack168 = DAT_80035cb4; - fStack164 = DAT_80035cb8; - fStack160 = DAT_80035cbc; - fStack172 = flt_80053EAC; - puStack176 = DAT_8008d0d0; - pfStack184 = (float *)proc_7F0783C4(); - if (param_2[1] == '\x16') { - fStack108 = 50.00000000; - puStack176 = DAT_8008d0d4; - } - else { - if (param_2[1] == '\x17') { - fStack108 = 10.00000000; - puStack176 = DAT_8008d0d4; - uVar4 = get_random_value(); - uStack76 = (float)((uint)uStack76 & 0xffffff00 | (uint)(byte)((char)(uVar4 % 0x32) + 0x96)); - uVar4 = get_random_value(); - if (uVar4 % 5 != 0) { - fStack100 = *(float *)(param_2 + 4); - goto LAB_7f061fac; - } - uVar4 = get_random_value(); - cVar5 = -1 - (char)(uVar4 % 100); - uStack76 = (float)CONCAT13(cVar5,CONCAT12(cVar5,uStack76._2_2_)); - } - else { - fStack108 = 30.00000000; - } - } - fStack100 = *(float *)(param_2 + 4); -LAB_7f061fac: - fStack96 = *(float *)(param_2 + 8); - fStack92 = *(float *)(param_2 + 0xc); - if (0.00000000 < fStack120) { - fStack100 = fStack100 + fStack120 * *(float *)(param_2 + 0x10); - fStack96 = fStack96 + fStack120 * *(float *)(param_2 + 0x14); - fStack92 = fStack92 + fStack120 * *(float *)(param_2 + 0x18); - fVar7 = fStack120; - } - else { - fVar12 = fVar12 + fStack120; - fVar7 = 0.00000000; - } - if (*(float *)(param_2 + 0x1c) < fVar7 + fVar12) { - fVar12 = *(float *)(param_2 + 0x1c) - fVar7; - fVar7 = *(float *)(param_2 + 0x18); - } - else { - fVar7 = *(float *)(param_2 + 0x18); - } - fStack144 = *(float *)(param_2 + 0x14) * (pxStack104->z - (fStack92 + fVar12 * fVar7)) - - (pxStack104->y - (*(float *)(param_2 + 0x14) * fVar12 + fStack96)) * fVar7; - fStack140 = *(float *)(param_2 + 0x18) * - (pxStack104->x - (fStack100 + fVar12 * *(float *)(param_2 + 0x10))) - - (pxStack104->z - (*(float *)(param_2 + 0x18) * fVar12 + fStack92)) * - *(float *)(param_2 + 0x10); - fStack136 = *(float *)(param_2 + 0x10) * - (pxStack104->y - (fStack96 + fVar12 * *(float *)(param_2 + 0x14))) - - (pxStack104->x - (*(float *)(param_2 + 0x10) * fVar12 + fStack100)) * - *(float *)(param_2 + 0x14); - if (((fStack144 == 0.00000000) && (fStack140 == 0.00000000)) && (fStack136 == 0.00000000)) { - fStack144 = 0.00000000; - fStack136 = 0.00000000; - fStack140 = fStack108; - virtualAddress = pxStack104; - } - else { - virtualAddress = pxStack104; - guNormalize(&fStack144,&fStack140,&fStack136); - fStack144 = fStack144 * fStack108; - fStack140 = fStack140 * fStack108; - fStack136 = fStack136 * fStack108; - } - fStack132 = *(float *)(param_2 + 0x14) * fStack136 - fStack140 * *(float *)(param_2 + 0x18); - fStack128 = *(float *)(param_2 + 0x18) * fStack144 - fStack136 * *(float *)(param_2 + 0x10); - fStack124 = *(float *)(param_2 + 0x10) * fStack140 - fStack144 * *(float *)(param_2 + 0x14); - guNormalize(&fStack132,&fStack128,&fStack124); - fStack132 = fStack132 * fStack108; - fStack128 = fStack128 * fStack108; - fStack124 = fStack124 * fStack108; - if (param_2[1] == '\x16') { - proc_7F0BD6C4(8); - } - else { - proc_7F0BD6C4(4); - } - pxStack8 = virtualAddress; - proc_7F0BD6E0(); - init_something_copy_posdata_to_it((int *)&fStack100,(int *)afStack72); - matrix_multiply_A1_by_F12(flt_80053EB0,extraout_a0,afStack72); - proc_7F058098(pfStack184,afStack72); - proc_7F058C9C((int)afStack72,(uint *)pxStack8); - virtualAddress->x = fStack88; - virtualAddress->y = fStack84; - virtualAddress->z = fStack80; - virtualAddress[1].x = uStack76; - virtualAddress[1].y = fStack88; - virtualAddress[1].z = fStack84; - virtualAddress[2].x = fStack80; - virtualAddress[2].y = uStack76; - virtualAddress[2].z = fStack88; - virtualAddress[3].x = fStack84; - virtualAddress[3].y = fStack80; - virtualAddress[3].z = uStack76; - virtualAddress[4].x = fStack88; - virtualAddress[4].y = fStack84; - virtualAddress[4].z = fStack80; - virtualAddress[5].x = uStack76; - cVar5 = param_2[1]; - if (cVar5 == '\x16') { - virtualAddress[5].y = fStack88; - virtualAddress[5].z = fStack84; - virtualAddress[6].x = fStack80; - virtualAddress[6].y = uStack76; - virtualAddress[6].z = fStack88; - virtualAddress[7].x = fStack84; - virtualAddress[7].y = fStack80; - virtualAddress[7].z = uStack76; - virtualAddress[8].x = fStack88; - virtualAddress[8].y = fStack84; - virtualAddress[8].z = fStack80; - virtualAddress[9].x = uStack76; - virtualAddress[9].y = fStack88; - virtualAddress[9].z = fStack84; - virtualAddress[10].x = fStack80; - virtualAddress[10].y = uStack76; - cVar5 = param_2[1]; - } - if (cVar5 == '\x17') { - fStack196 = *(float *)(param_2 + 0x10) * fVar12 + fStack100; - fStack192 = *(float *)(param_2 + 0x14) * fVar12 + fStack96; - fStack188 = *(float *)(param_2 + 0x18) * fVar12 + fStack92; - proc_7F058474(pfStack184,&fStack196); - fStack216 = fStack108 / 10.00000000; - fStack212 = fStack216; - proc_7F0780F0(&fStack216,extraout_f12,(float *)-fStack188); - if (fStack208 < 2.00000000) { - fStack208 = fStack208 * 0.50000000; - fStack196 = fStack196 * fStack208; - fStack192 = fStack192 * fStack208; - fStack188 = fStack188 * fStack208; - } - pfVar3 = (float *)proc_7F078444(); - proc_7F058474(pfVar3,&fStack196); - fStack196 = fStack196 - fStack100; - fStack192 = fStack192 - fStack96; - fStack156 = fStack196 * 10.00000000; - fStack188 = fStack188 - fStack92; - fStack152 = fStack192 * 10.00000000; - fStack148 = fStack188 * 10.00000000; - } - else { - fStack148 = fVar12 * 10.00000000; - fStack156 = *(float *)(param_2 + 0x10) * fStack148; - fStack152 = *(float *)(param_2 + 0x14) * fStack148; - fStack148 = *(float *)(param_2 + 0x18) * fStack148; - } - puVar2 = puStackX0; - *(short *)&virtualAddress->x = (short)(int)fStack144; - *(undefined2 *)((int)&virtualAddress->x + 2) = (short)(int)fStack140; - *(short *)&virtualAddress->y = (short)(int)fStack136; - bVar1 = *(byte *)(puStack176 + 1); - *(undefined2 *)((int)&virtualAddress->z + 2) = 0; - *(ushort *)&virtualAddress->z = (ushort)bVar1 << 5; - *(short *)&virtualAddress[1].y = (short)(int)-fStack144; - *(undefined2 *)((int)&virtualAddress[1].y + 2) = (short)(int)-fStack140; - *(undefined2 *)&virtualAddress[2].x = 0; - *(undefined2 *)((int)&virtualAddress[2].x + 2) = 0; - *(short *)&virtualAddress[1].z = (short)(int)-fStack136; - *(short *)&virtualAddress[2].z = (short)(int)(fStack144 * flt_80053EB4 + fStack156); - *(undefined2 *)((int)&virtualAddress[2].z + 2) = - (short)(int)(fStack140 * flt_80053EB8 + fStack152); - *(short *)&virtualAddress[3].x = (short)(int)(fStack136 * flt_80053EBC + fStack148); - *(ushort *)&virtualAddress[3].y = (ushort)*(byte *)(puStack176 + 1) << 5; - *(short *)((int)&virtualAddress[3].y + 2) = (ushort)*(byte *)((int)puStack176 + 5) << 5; - *(short *)&virtualAddress[4].x = (short)(int)(fStack156 - fStack144 * flt_80053EC0); - *(undefined2 *)((int)&virtualAddress[4].x + 2) = - (short)(int)(fStack152 - fStack140 * flt_80053EC4); - fVar7 = flt_80053EC8; - *(undefined2 *)&virtualAddress[4].z = 0; - *(short *)&virtualAddress[4].y = (short)(int)(fStack148 - fStack136 * fVar7); - *(short *)((int)&virtualAddress[4].z + 2) = (ushort)*(byte *)((int)puStack176 + 5) << 5; - if (param_2[1] == '\x16') { - fVar7 = pxStack104->x - fStack100; - fVar9 = pxStack104->y - fStack96; - fVar11 = pxStack104->z - fStack92; - fVar8 = pxStack104->x - (*(float *)(param_2 + 0x10) * fVar12 + fStack100); - fVar10 = pxStack104->y - (*(float *)(param_2 + 0x14) * fVar12 + fStack96); - fVar12 = pxStack104->z - (*(float *)(param_2 + 0x18) * fVar12 + fStack92); - if (fVar8 * fVar8 + fVar10 * fVar10 + fVar12 * fVar12 < - fVar7 * fVar7 + fVar9 * fVar9 + fVar11 * fVar11) { - fStack168 = fStack156; - fStack172 = flt_80053ECC * flt_80053ED0; - fStack164 = fStack152; - fStack160 = fStack148; - } - *(short *)&virtualAddress[5].y = (short)(int)(fStack132 * fStack172 + fStack168); - *(undefined2 *)((int)&virtualAddress[5].y + 2) = (short)(int)(fStack128 * fStack172 + fStack164) - ; - *(short *)&virtualAddress[5].z = (short)(int)(fStack124 * fStack172 + fStack160); - *(ushort *)&virtualAddress[6].x = (ushort)*(byte *)(DAT_8008d0d8 + 1) << 5; - *(short *)((int)&virtualAddress[6].x + 2) = (ushort)*(byte *)((int)DAT_8008d0d8 + 5) << 5; - *(short *)&virtualAddress[6].z = (short)(int)(fStack168 - fStack132 * fStack172); - *(undefined2 *)((int)&virtualAddress[6].z + 2) = (short)(int)(fStack164 - fStack128 * fStack172) - ; - *(undefined2 *)&virtualAddress[7].y = 0; - *(undefined2 *)((int)&virtualAddress[7].y + 2) = 0; - *(short *)&virtualAddress[7].x = (short)(int)(fStack160 - fStack124 * fStack172); - *(short *)&virtualAddress[8].x = (short)(int)(fStack144 * fStack172 + fStack168); - *(undefined2 *)((int)&virtualAddress[8].x + 2) = (short)(int)(fStack140 * fStack172 + fStack164) - ; - *(undefined2 *)&virtualAddress[8].z = 0; - *(short *)&virtualAddress[8].y = (short)(int)(fStack136 * fStack172 + fStack160); - *(short *)((int)&virtualAddress[8].z + 2) = (ushort)*(byte *)((int)DAT_8008d0d8 + 5) << 5; - *(short *)&virtualAddress[9].y = (short)(int)(fStack168 - fStack144 * fStack172); - *(undefined2 *)((int)&virtualAddress[9].y + 2) = (short)(int)(fStack164 - fStack140 * fStack172) - ; - *(short *)&virtualAddress[9].z = (short)(int)(fStack160 - fStack136 * fStack172); - bVar1 = *(byte *)(DAT_8008d0d8 + 1); - *(undefined2 *)((int)&virtualAddress[10].x + 2) = 0; - *(ushort *)&virtualAddress[10].x = (ushort)bVar1 << 5; - } - puVar6 = puStackX0 + 2; - puStackX0[1] = 0x2000; - *puStackX0 = 0xb6000000; - puStackX0 = puStackX0 + 4; - *puVar6 = 0x1020040; - uVar4 = osVirtualToPhysical(pxStack8); - puVar2[3] = uVar4; - if (param_2[1] == '\x16') { - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,DAT_8008d0d8,4,(longlong)iStackX8,2); - puVar2 = puStackX0; - *puStackX0 = 0x4700080; - puStackX0 = puStackX0 + 2; - uVar4 = osVirtualToPhysical(virtualAddress); - puVar2[1] = uVar4; - puStackX0[1] = 0x5454; - *puStackX0 = 0xb1000076; - puStackX0 = puStackX0 + 2; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,puStack176,4,(longlong)iStackX8,2); - puStackX0[1] = 0x3020; - *puStackX0 = 0xb1000013; - } - else { - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,puStack176,4,(longlong)iStackX8,2); - puVar2 = puStackX0; - *puStackX0 = 0x4300040; - puStackX0 = puStackX0 + 2; - uVar4 = osVirtualToPhysical(virtualAddress); - puVar2[1] = uVar4; - puStackX0[1] = 0x3020; - *puStackX0 = 0xb1000013; - } - puStackX0 = puStackX0 + 2; - return puStackX0; -} - - - -void proc_7F062B00(char *param_1) - -{ - u32 uVar1; - float fVar2; - - if (-1 < *param_1) { - if (clock_timer < 3) { - *(float *)(param_1 + 0x28) = - *(float *)(param_1 + 0x28) + *(float *)(param_1 + 0x20) * global_timer_delta; - } - else { - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)(param_1 + 0x28) = - *(float *)(param_1 + 0x28) + - *(float *)(param_1 + 0x20) * (fVar2 * 0.00000000 * 0.50000000 + 2.00000000); - } - if (*(float *)(param_1 + 0x1c) <= *(float *)(param_1 + 0x28)) { - *param_1 = -1; - } - else { - *param_1 = *param_1 + '\x01'; - } - } - return; -} - - - -void proc_7F062BE4(undefined4 *param_1) - -{ - int item; - undefined4 *puVar2; - undefined4 uVar3; - uint uVar4; - int iVar5; - ulonglong uVar1; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 *puVar6; - undefined4 *puVar7; - undefined4 *puVar8; - undefined4 *puVar9; - int iVar10; - int hand; - int iVar11; - undefined4 uStack68; - undefined4 uStack64; - undefined4 *puStack56; - undefined4 uStack20; - uint uStack16; - undefined4 uStack8; - - puVar2 = (undefined4 *)*param_1; - puVar9 = &DAT_80035cc0; - puVar6 = &uStack68; - do { - puVar8 = puVar9 + 3; - puVar7 = puVar6 + 3; - *puVar6 = *puVar9; - puVar6[1] = puVar9[1]; - puVar6[2] = puVar9[2]; - puVar9 = puVar8; - puVar6 = puVar7; - } while (puVar8 != (undefined4 *)0x80035cfc); - hand = 0; - iVar11 = 0; - *puVar7 = uRam80035cfc; - do { - iVar10 = (int)&pPlayer->unknown + iVar11; - item = return_ammo_in_hand(hand); - if (*(char *)(iVar10 + 0x87f) != '\0') { - if (item != 0x17) { - puVar2 = proc_7F061E18(puVar2,(char *)(iVar10 + 0xa54),0); - } - if (((((item == 0x13) || (item == 0x12)) || (item == 2)) || ((item == 3 || (item == 0x14)))) - || (item == 0x15)) { - *puVar2 = 0xbc000002; - puVar2[1] = 0x80000040; - puVar2[2] = 0x3860010; - puVar2[3] = 0x80032448; - puVar2[4] = 0x3880010; - puVar2[5] = 0x80032440; - puVar2[6] = 0x3840010; - uVar3 = proc_7F078474(); - puVar2[7] = uVar3; - puVar2[8] = 0x3820010; - iVar5 = proc_7F078474(); - puVar2[9] = iVar5 + 0x10; - puVar2 = puVar2 + 10; - } - *puVar2 = 0xbc00000e; - puVar9 = puVar2 + 2; - uVar4 = proc_7F05997C(0.00000000,300.00000000); - puVar2[1] = uVar4; - if (0x10 < *(short *)(*(int *)(iVar10 + 0xb70) + 0xc)) { - iVar5 = *(int *)(*(int *)(iVar10 + 0xb70) + 8); - if (*(int *)(iVar5 + 0x40) != 0) { - puVar2 = (undefined4 *) - extract_id_from_object_structure_microcode - (iVar10 + 0xb68,*(ushort **)(iVar5 + 0x44)); - if (puVar2 != NULL) { - *puVar2 = 1; - } - if (item == 0x19) { - save_img_index_to_obj_ani_slot((int)&DAT_80075c10,imgcall); - puVar9 = (undefined4 *)process_monitor_animation_microcode(); - } - else { - puVar9 = (undefined4 *)process_monitor_animation_microcode(); - } - } - } - uStack20 = 4; - uStack16 = (uint)(byte)pPlayer->field_FDF | (uint)(byte)pPlayer->field_FDC << 0x18 | - (uint)(byte)pPlayer->field_FDD << 0x10 | (uint)(byte)pPlayer->field_FDE << 8; - uStack64 = 0; - puStack56 = puVar9; - proc_7F058C64(); - if ((item == 0x19) && (*(int *)(iVar10 + 0xa90) != 0)) { - uVar4 = *(uint *)(*(int *)(iVar10 + 0xa90) + 0x14); - subdraw((int)&uStack68,uVar4,extraout_a2_lo,extraout_a3_lo); - proc_7F08BD48(*(undefined4 **)(uVar4 + 0xc),(int)*(short *)(*(int *)(uVar4 + 8) + 0xe)); - if (*(int *)(iVar10 + 0xa94) != 0) { - *(undefined4 *)(iVar10 + 0xa90) = 0; - } - } - iVar5 = check_special_attributes(item,0x400); - if (iVar5 != 0) { - puStack56[1] = 0x3000; - *puStack56 = 0xb6000000; - if (hand == 0) { - uStack8 = 3; - puStack56 = puStack56 + 2; - } - else { - uStack8 = 2; - puStack56 = puStack56 + 2; - } - } - subdraw((int)&uStack68,iVar10 + 0xb68,extraout_a2_lo_00,extraout_a3_lo_00); - puVar9 = puStack56; - iVar5 = check_special_attributes(item,0x400); - if (iVar5 != 0) { - puVar9[1] = 0x3000; - *puVar9 = 0xb6000000; - puVar9 = puVar9 + 2; - } - proc_7F08BD48(*(undefined4 **)(iVar10 + 0xb74),(int)*(short *)(*(int *)(iVar10 + 0xb70) + 0xe) - ); - proc_7F058C88(); - *puVar9 = 0xbc00000e; - puVar2 = puVar9 + 2; - uVar1 = get_80060824(); - puVar9[1] = (int)uVar1; - if (item == 0x17) { - puVar2 = proc_7F061E18(puVar2,(char *)(iVar10 + 0xa54),0); - } - } - hand += 1; - iVar11 += 0x3a8; - } while (hand != 2); - *(undefined4 **)param_1 = puVar2; - return; -} - - - -undefined4 * -set_enviro_fog_for_items_in_solo_watch_menu - (undefined4 *DL,longlong param_2,float *buffer,int param_4,int rgba) - -{ - ushort *partdesc; - int *posdata; - Player *pPVar1; - ulonglong uVar2; - int iVar3; - short sVar5; - undefined4 uVar4; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - undefined4 uVar6; - int iVar7; - undefined4 *puVar8; - undefined4 *puVar9; - undefined4 *puVar10; - undefined4 *puVar11; - int weapon; - longlong lVar12; - object_header *objheader; - undefined4 *puStackX0; - float afStack292 [17]; - undefined auStack224 [128]; - undefined auStack96 [12]; - undefined4 *puStack84; - undefined4 uStack64; - undefined4 uStack60; - undefined4 *puStack52; - undefined4 uStack16; - int iStack12; - int iStack8; - - weapon = (int)param_2; - puVar10 = &DAT_80035d00; - puVar8 = &uStack64; - do { - puVar11 = puVar10 + 3; - puVar9 = puVar8 + 3; - *puVar8 = *puVar10; - puVar8[1] = puVar10[1]; - puVar8[2] = puVar10[2]; - puVar10 = puVar11; - puVar8 = puVar9; - } while (puVar11 != (undefined4 *)0x80035d3c); - *puVar9 = uRam80035d3c; - if ((param_2 == 0x1e) || (param_2 == 0x17)) { - weapon = 0x3c; - } - proc_7F05DA8C(0,weapon); - uVar2 = proc_7F05CEBC(0); - if ((uVar2 != 0) && (iVar3 = get_itemtype_in_hand(0), pPVar1 = pPlayer, iVar3 != 0)) { - objheader = (object_header *)pPlayer->copy_of_body_obj_header; - iVar3 = get_ptr_weapon_model_header_line(weapon); - if ((iVar3 != 0) && - (puVar10 = (undefined4 *)check_special_attributes(weapon,0x4000), puVar10 == NULL)) { - proc_7F0BD714((int)*(short *)((int)pPVar1->copy_of_body_obj_header + 0xe) << 6); - lVar12 = 0; - iVar3 = 0; - if (0 < *(short *)((int)pPVar1->copy_of_body_obj_header + 0xe)) { - while( true ) { - proc_7F057FD0((undefined4 *)(iVar3 + (int)puVar10)); - iVar3 = (int)lVar12 + 1; - lVar12 = (longlong)iVar3; - if ((longlong)*(short *)((int)pPVar1->copy_of_body_obj_header + 0xe) <= lVar12) break; - iVar3 *= 0x40; - } - } - lVar12 = 0; - puStack84 = puVar10; - set_objuse_flag_compute_grp_nums_set_obj_loaded(objheader); - proc_7F075F68((int)auStack96,(ushort **)objheader,auStack224); - proc_7F05E978((int)auStack96,0); - proc_7F05EA94((int)auStack96,1); - partdesc = *(ushort **)(pPVar1->copy_of_body_obj_header[2] + 4); - if ((partdesc != NULL) && - (puVar8 = (undefined4 *)extract_id_from_object_structure_microcode((int)auStack96,partdesc) - , puVar8 != NULL)) { - *puVar8 = 0; - } - proc_7F058020(buffer,puVar10); - if ((item_related *)pPVar1->copy_of_body_obj_header[1] == &weapon_gun_revolver) { - iVar3 = *(int *)(pPVar1->copy_of_body_obj_header[2] + 0x10); - if (iVar3 == 0) { - iVar3 = *(int *)(pPVar1->copy_of_body_obj_header[2] + 0x14); - } - else { - init_something_copy_posdata_to_it(*(int **)(iVar3 + 4),(int *)afStack292); - proc_7F0580C8(buffer,afStack292,(int)(puVar10 + 0x30)); - iVar3 = *(int *)(pPVar1->copy_of_body_obj_header[2] + 0x14); - } - if (iVar3 == 0) { - iVar3 = pPVar1->copy_of_body_obj_header[2]; - } - else { - init_something_copy_posdata_to_it(*(int **)(iVar3 + 4),(int *)afStack292); - proc_7F0580C8(buffer,afStack292,(int)(puVar10 + 0x40)); - iVar3 = pPVar1->copy_of_body_obj_header[2]; - } - } - else { - iVar3 = pPVar1->copy_of_body_obj_header[2]; - } - partdesc = *(ushort **)(iVar3 + 0x18); - if (partdesc == NULL) { - partdesc = *(ushort **)(iVar3 + 0x1c); - } - else { - posdata = *(int **)(partdesc + 2); - sVar5 = proc_7F06C570(partdesc,0); - init_something_copy_posdata_to_it(posdata,(int *)afStack292); - proc_7F0580C8(buffer,afStack292,(int)(puVar10 + (int)sVar5 * 0x10)); - partdesc = *(ushort **)(pPVar1->copy_of_body_obj_header[2] + 0x1c); - } - if (partdesc == NULL) { - sVar5 = *(short *)(pPVar1->copy_of_body_obj_header + 3); - } - else { - posdata = *(int **)(partdesc + 2); - sVar5 = proc_7F06C570(partdesc,0); - init_something_copy_posdata_to_it(posdata,(int *)afStack292); - proc_7F0580C8(buffer,afStack292,(int)(puVar10 + (int)sVar5 * 0x10)); - sVar5 = *(short *)(pPVar1->copy_of_body_obj_header + 3); - } - iVar3 = 0; - if (0x12 < sVar5) { - iVar7 = pPVar1->copy_of_body_obj_header[2]; - while( true ) { - partdesc = *(ushort **)(iVar7 + iVar3 + 0x48); - if (partdesc == NULL) { - iVar7 = pPVar1->copy_of_body_obj_header[2]; - } - else { - puVar10 = (undefined4 *) - extract_id_from_object_structure_microcode((int)auStack96,partdesc); - if (puVar10 != NULL) { - *puVar10 = 1; - } - iVar7 = pPVar1->copy_of_body_obj_header[2]; - } - partdesc = *(ushort **)(iVar7 + iVar3 + 0x5c); - if ((partdesc != NULL) && - (puVar10 = (undefined4 *) - extract_id_from_object_structure_microcode((int)auStack96,partdesc), - puVar10 != NULL)) { - *puVar10 = 1; - } - iVar3 += 4; - if (iVar3 == 0x14) break; - iVar7 = pPVar1->copy_of_body_obj_header[2]; - } - } - proc_7F06EFC4((int)auStack96); - if (((((weapon == 0x13) || (weapon == 0x12)) || (weapon == 2)) || - ((weapon == 3 || (weapon == 0x14)))) || (weapon == 0x15)) { - DL[1] = 0x80000040; - *DL = 0xbc000002; - DL[2] = 0x3860010; - DL[3] = 0x80032448; - DL[4] = 0x3880010; - DL[5] = 0x80032440; - DL[6] = 0x3840010; - uVar4 = proc_7F078474(); - DL[7] = uVar4; - puStackX0 = DL + 10; - DL[8] = 0x3820010; - weapon = proc_7F078474(); - DL[9] = weapon + 0x10; - sVar5 = *(short *)(pPVar1->copy_of_body_obj_header + 3); - uVar4 = extraout_a2_lo_00; - uVar6 = extraout_a3_lo_00; - } - else { - sVar5 = *(short *)(pPVar1->copy_of_body_obj_header + 3); - uVar4 = extraout_a2_lo; - uVar6 = extraout_a3_lo; - puStackX0 = DL; - } - if (((0x10 < sVar5) && (*(int *)(pPVar1->copy_of_body_obj_header[2] + 0x40) != 0)) && - (puVar10 = (undefined4 *) - extract_id_from_object_structure_microcode - ((int)auStack96, - *(ushort **)(pPVar1->copy_of_body_obj_header[2] + 0x44)), - uVar4 = extraout_a2_lo_01, uVar6 = extraout_a3_lo_01, puVar10 != NULL)) { - *puVar10 = 0; - uVar4 = extraout_a2_lo_01; - uVar6 = extraout_a3_lo_01; - } - puStack52 = puStackX0; - if (param_4 < 0xff) { - uStack16 = 5; - iStack8 = rgba; - iStack12 = param_4; - } - else { - uStack16 = 4; - iStack12 = rgba; - } - uStack60 = 0; - subdraw((int)&uStack64,(uint)auStack96,uVar4,uVar6); - DL = puStack52; - proc_7F058C64(); - weapon = 0; - if (0 < *(short *)((int)pPVar1->copy_of_body_obj_header + 0xe)) { - do { - proc_7F058020((undefined4 *)((int)puStack84 + weapon),afStack292); - proc_7F058C9C((int)afStack292,puStack84 + (int)lVar12 * 0x10); - lVar12 = (longlong)((int)lVar12 + 1); - weapon += 0x40; - } while (lVar12 < (longlong)*(short *)((int)pPVar1->copy_of_body_obj_header + 0xe)); - } - proc_7F058C88(); - } - } - return DL; -} - - - -undefined4 * proc_7F0634D8(undefined4 *param_1,longlong param_2,float *param_3,int param_4) - -{ - undefined4 *puVar1; - - puVar1 = set_enviro_fog_for_items_in_solo_watch_menu(param_1,param_2,param_3,param_4,-0x100); - return puVar1; -} - - - -undefined4 * proc_7F0634FC(undefined4 *param_1,longlong param_2,float *param_3) - -{ - undefined4 *puVar1; - - puVar1 = proc_7F0634D8(param_1,param_2,param_3,0xff); - return puVar1; -} - - - -void proc_7F06351C(undefined4 *param_1,float *param_2,float *param_3,float *param_4, - undefined4 *param_5,float *param_6,float *param_7) - -{ - float afStack64 [16]; - - init_something_copy_posdata_to_it(param_1,(int *)param_7); - proc_7F058068(param_2,param_7); - proc_7F058068(param_3,param_7); - proc_7F058068(param_4,param_7); - init_something_copy_posdata_to_it(param_5,(int *)afStack64); - proc_7F058068(afStack64,param_7); - proc_7F058068(param_6,param_7); - return; -} - - - -undefined4 -proc_7F06359C(undefined4 param_1,float *param_2,longlong param_3,longlong param_4,int param_5, - char *param_6) - -{ - int *posdata; - ushort *partdesc; - float fVar1; - ulonglong uVar2; - int iVar5; - longlong lVar3; - int iVar6; - longlong lVar4; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - undefined8 extraout_a0_04; - undefined8 extraout_a0_05; - undefined8 extraout_a0_06; - undefined8 extraout_a0_07; - undefined8 extraout_a0_08; - undefined8 extraout_a0_09; - undefined8 extraout_a0_10; - undefined8 extraout_a0_11; - undefined8 extraout_a0_12; - undefined8 extraout_a0_13; - undefined8 extraout_a0_14; - undefined8 extraout_a0_15; - undefined8 extraout_a0_16; - undefined8 extraout_a0_17; - undefined8 extraout_a0_18; - undefined8 extraout_a0_19; - undefined8 extraout_a0_20; - undefined8 uVar7; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 *puVar8; - undefined4 *puVar9; - undefined4 *puVar10; - undefined4 *puVar11; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - float extraout_f12_10; - float extraout_f12_11; - float extraout_f12_12; - float extraout_f12_13; - float fVar12; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float extraout_f14_06; - float extraout_f14_07; - float extraout_f14_08; - float extraout_f14_09; - float extraout_f14_10; - float extraout_f14_11; - float extraout_f14_12; - float extraout_f14_13; - float fVar13; - int iStack1224; - undefined4 uStack1216; - undefined4 uStack1212; - undefined4 uStack1208; - undefined4 uStack1204; - undefined4 uStack1200; - undefined4 uStack1196; - undefined4 uStack1192; - float fStack1188; - undefined4 uStack1184; - undefined4 uStack1180; - undefined4 uStack1176; - undefined4 uStack1172; - undefined4 uStack1168; - undefined4 uStack1164; - undefined4 uStack1160; - float afStack1156 [16]; - undefined4 uStack1092; - undefined4 uStack1088; - undefined4 uStack1084; - undefined4 uStack1080; - undefined4 uStack1076; - undefined4 uStack1072; - undefined4 uStack1068; - undefined4 uStack1064; - undefined4 uStack1060; - undefined4 uStack1056; - float fStack1052; - undefined4 uStack1048; - undefined4 uStack1044; - undefined4 uStack1040; - undefined4 uStack1036; - undefined4 uStack1032; - float fStack1028; - undefined4 uStack1024; - undefined4 uStack1020; - undefined4 uStack1016; - undefined4 uStack1012; - undefined4 uStack1008; - float fStack1004; - undefined4 uStack1000; - undefined4 uStack996; - undefined4 uStack992; - undefined4 uStack988; - undefined4 uStack984; - float fStack980; - undefined4 uStack976; - undefined4 uStack972; - undefined4 uStack968; - undefined4 uStack964; - undefined4 uStack960; - float fStack956; - undefined4 uStack952; - undefined4 uStack948; - undefined4 uStack944; - undefined4 uStack940; - undefined4 uStack936; - float fStack932; - undefined4 uStack928; - undefined4 uStack924; - undefined4 uStack920; - undefined4 uStack916; - undefined4 uStack912; - undefined4 uStack908; - undefined4 uStack904; - undefined4 uStack900; - undefined4 uStack896; - undefined4 uStack892; - int iStack888; - undefined4 uStack884; - undefined4 uStack880; - float afStack876 [16]; - float afStack812 [16]; - float afStack748 [16]; - float afStack684 [16]; - undefined4 auStack620 [16]; - undefined4 auStack556 [16]; - float afStack492 [16]; - float afStack428 [19]; - object_header *poStack352; - float afStack348 [16]; - float afStack284 [17]; - undefined auStack216 [120]; - undefined auStack96 [12]; - undefined4 *puStack84; - undefined4 uStack64; - undefined4 uStack60; - undefined4 uStack52; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - - puVar11 = &DAT_80035d40; - puVar8 = &uStack64; - do { - puVar10 = puVar11 + 3; - puVar9 = puVar8 + 3; - *puVar8 = *puVar11; - puVar8[1] = puVar11[1]; - puVar8[2] = puVar11[2]; - puVar11 = puVar10; - puVar8 = puVar9; - } while (puVar10 != (undefined4 *)0x80035d7c); - *puVar9 = uRam80035d7c; - proc_7F05DA8C(0,0x55); - uVar2 = proc_7F05CEBC(0); - if ((uVar2 != 0) && (iVar5 = get_itemtype_in_hand(0), iVar5 != 0)) { - poStack352 = (object_header *)pPlayer->copy_of_body_obj_header; - lVar3 = (longlong)(int)poStack352; - proc_7F0BD714((int)*(short *)((int)pPlayer->copy_of_body_obj_header + 0xe) << 6); - lVar4 = lVar3; - set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack352); - proc_7F075F68((int)auStack96,(ushort **)poStack352,auStack216); - puVar11 = (undefined4 *)lVar3; - puStack84 = puVar11; - proc_7F058020(param_2,puVar11); - iStack1224 = 4; - iVar5 = 1; - do { - posdata = *(int **)(*(int *)(poStack352->offset_obj_offset_block + iStack1224) + 4); - if (iVar5 == 2) { - iVar6 = get_cur_controller_horz_stick_pos(*param_6); - proc_7F058688((-(float)iVar6 * flt_80053ED4 * flt_80053ED8) / 360.00000000,extraout_a0, - afStack284); - lVar4 = get_cur_controller_vert_stick_pos(*param_6); - proc_7F058570((-(float)(int)lVar4 * flt_80053EDC * flt_80053EE0) / 360.00000000, - extraout_a0_00,afStack348); - proc_7F058068(afStack348,afStack284); - proc_7F058998(posdata,(int)afStack284); - } - else { - init_something_copy_posdata_to_it(posdata,(int *)afStack284); - } - proc_7F0580C8(param_2,afStack284,(int)(puVar11 + iVar5 * 0x10)); - iVar5 += 1; - iStack1224 += 4; - } while (iVar5 < 0xd); - proc_7F06EFC4((int)auStack96); - if (param_3 < 0xff) { - uStack16 = 5; - uStack12 = (undefined4)param_3; - uStack8 = 0xffffff00; - } - else { - uStack16 = 1; - } - uStack60 = 1; - uStack52 = param_1; - subdraw((int)&uStack64,(uint)auStack96,extraout_a2_lo,extraout_a3_lo); - param_1 = uStack52; - proc_7F058C64(); - puVar11 = (undefined4 *)lVar4; - lVar3 = 0; - iVar5 = 0; - if (0 < poStack352->num_object_grps) { - do { - proc_7F058020((undefined4 *)((int)puStack84 + iVar5),afStack284); - proc_7F058C9C((int)afStack284,puStack84 + (int)lVar3 * 0x10); - puVar11 = (undefined4 *)lVar4; - lVar3 = (longlong)((int)lVar3 + 1); - iVar5 += 0x40; - } while (lVar3 < (longlong)poStack352->num_object_grps); - } - proc_7F058C88(); - if (param_4 != 0) { - iVar5 = 0; - partdesc = *(ushort **)(poStack352->offset_obj_offset_block + 0x34); - if (partdesc != NULL) { - puVar11 = (undefined4 *)extract_id_from_object_structure_microcode((int)auStack96,partdesc); - *puVar11 = 0; - } - proc_7F0BD714((int)poStack352->num_object_grps << 6); - fVar1 = flt_80053EE4; - fVar12 = extraout_f12; - fVar13 = extraout_f14; - puStack84 = puVar11; - do { - proc_7F059694(afStack812,fVar12,fVar13,-5.00000000,2000.00000000,-168.00000000,-5.00000000, - 0.00000000,-168.00000000,0.00000000); - proc_7F059694(afStack428,extraout_f12_00,extraout_f14_00,-5.00000000,2000.00000000, - -168.00000000,-5.00000000,0.00000000,-168.00000000,0.00000000); - proc_7F057FD0(afStack748); - proc_7F057FD0(afStack876); - proc_7F058020(afStack876,auStack620); - if (iVar5 == 2) { - iStack888 = *(int *)(param_5 + 0x58); - uStack884 = *(undefined4 *)(param_5 + 0x5c); - uStack880 = *(undefined4 *)(param_5 + 0x60); - init_something_copy_posdata_to_it(&iStack888,(int *)afStack492); - iVar6 = get_cur_controller_horz_stick_pos(*param_6); - proc_7F058688((-(float)iVar6 * flt_80053EE8 * flt_80053EEC) / 360.00000000,extraout_a0_01, - afStack284); - iVar6 = get_cur_controller_vert_stick_pos(*param_6); - proc_7F058570((-(float)iVar6 * flt_80053EF0 * flt_80053EF4) / 360.00000000,extraout_a0_02, - afStack348); - proc_7F058068(afStack348,afStack284); - proc_7F058068(afStack492,afStack284); - proc_7F0580C8(afStack812,afStack284,(int)auStack556); - proc_7F058020(auStack556,puVar11 + 0x20); - fVar12 = extraout_f12_01; - fVar13 = extraout_f14_01; - } - else { - if (iVar5 == 0xb) { - uStack912 = DAT_80035d80; - uStack908 = DAT_80035d84; - uStack904 = DAT_80035d88; - uStack900 = *(undefined4 *)(param_5 + 0xc4); - uStack896 = *(undefined4 *)(param_5 + 200); - uStack892 = *(undefined4 *)(param_5 + 0xcc); - uVar2 = get_controller_buttons_held(*param_6,0x10); - uVar7 = extraout_a0_03; - if (uVar2 != 0) { - proc_7F0585FC(flt_80053EF8,extraout_a0_03,afStack748); - uVar7 = extraout_a0_04; - } - proc_7F058570(flt_80053EFC,uVar7,afStack684); - proc_7F06351C(&uStack912,afStack748,afStack684,afStack876,&uStack900,afStack812, - afStack428); - proc_7F058020(afStack428,puVar11 + 0xb0); - fVar12 = extraout_f12_02; - fVar13 = extraout_f14_02; - } - else { - if (iVar5 == 4) { - uStack936 = DAT_80035d8c; - fStack932 = DAT_80035d90; - uStack928 = DAT_80035d94; - uStack924 = *(undefined4 *)(param_5 + 0x70); - uStack920 = *(undefined4 *)(param_5 + 0x74); - uStack916 = *(undefined4 *)(param_5 + 0x78); - uVar2 = get_controller_buttons_held(*param_6,8); - if (uVar2 != 0) { - fStack932 = fStack932 + -10.00000000; - } - proc_7F058570(fVar1,extraout_a0_05,afStack684); - proc_7F06351C(&uStack936,afStack748,afStack684,afStack876,&uStack924,afStack812, - afStack428); - proc_7F058020(afStack428,puVar11 + 0x40); - fVar12 = extraout_f12_03; - fVar13 = extraout_f14_03; - } - else { - if (iVar5 == 5) { - uStack960 = DAT_80035d98; - fStack956 = DAT_80035d9c; - uStack952 = DAT_80035da0; - uStack948 = *(undefined4 *)(param_5 + 0x7c); - uStack944 = *(undefined4 *)(param_5 + 0x80); - uStack940 = *(undefined4 *)(param_5 + 0x84); - uVar2 = get_controller_buttons_held(*param_6,4); - if (uVar2 != 0) { - fStack956 = fStack956 + -10.00000000; - } - proc_7F058570(fVar1,extraout_a0_06,afStack684); - proc_7F06351C(&uStack960,afStack748,afStack684,afStack876,&uStack948,afStack812, - afStack428); - proc_7F058020(afStack428,puVar11 + 0x50); - fVar12 = extraout_f12_04; - fVar13 = extraout_f14_04; - } - else { - if (iVar5 == 6) { - uStack984 = DAT_80035da4; - fStack980 = DAT_80035da8; - uStack976 = DAT_80035dac; - uStack972 = *(undefined4 *)(param_5 + 0x88); - uStack968 = *(undefined4 *)(param_5 + 0x8c); - uStack964 = *(undefined4 *)(param_5 + 0x90); - uVar2 = get_controller_buttons_held(*param_6,2); - if (uVar2 != 0) { - fStack980 = fStack980 + -10.00000000; - } - proc_7F058570(fVar1,extraout_a0_07,afStack684); - proc_7F06351C(&uStack984,afStack748,afStack684,afStack876,&uStack972,afStack812, - afStack428); - proc_7F058020(afStack428,puVar11 + 0x60); - fVar12 = extraout_f12_05; - fVar13 = extraout_f14_05; - } - else { - if (iVar5 == 7) { - uStack1008 = DAT_80035db0; - fStack1004 = DAT_80035db4; - uStack1000 = DAT_80035db8; - uStack996 = *(undefined4 *)(param_5 + 0x94); - uStack992 = *(undefined4 *)(param_5 + 0x98); - uStack988 = *(undefined4 *)(param_5 + 0x9c); - uVar2 = get_controller_buttons_held(*param_6,1); - if (uVar2 != 0) { - fStack1004 = fStack1004 + -10.00000000; - } - proc_7F058570(fVar1,extraout_a0_08,afStack684); - proc_7F06351C(&uStack1008,afStack748,afStack684,afStack876,&uStack996,afStack812 - ,afStack428); - proc_7F058020(afStack428,puVar11 + 0x70); - fVar12 = extraout_f12_06; - fVar13 = extraout_f14_06; - } - else { - if (iVar5 == 9) { - uStack1032 = DAT_80035dbc; - fStack1028 = DAT_80035dc0; - uStack1024 = DAT_80035dc4; - uStack1020 = *(undefined4 *)(param_5 + 0xac); - uStack1016 = *(undefined4 *)(param_5 + 0xb0); - uStack1012 = *(undefined4 *)(param_5 + 0xb4); - uVar2 = get_controller_buttons_held(*param_6,0x4000); - if (uVar2 != 0) { - fStack1028 = fStack1028 + -10.00000000; - } - proc_7F058570(fVar1,extraout_a0_09,afStack684); - proc_7F06351C(&uStack1032,afStack748,afStack684,afStack876,&uStack1020, - afStack812,afStack428); - proc_7F058020(afStack428,puVar11 + 0x90); - fVar12 = extraout_f12_07; - fVar13 = extraout_f14_07; - } - else { - if (iVar5 == 8) { - uStack1056 = DAT_80035dc8; - fStack1052 = DAT_80035dcc; - uStack1048 = DAT_80035dd0; - uStack1044 = *(undefined4 *)(param_5 + 0xa0); - uStack1040 = *(undefined4 *)(param_5 + 0xa4); - uStack1036 = *(undefined4 *)(param_5 + 0xa8); - uVar2 = get_controller_buttons_held(*param_6,0x8000); - if (uVar2 != 0) { - fStack1052 = fStack1052 + -10.00000000; - } - proc_7F058570(fVar1,extraout_a0_10,afStack684); - proc_7F06351C(&uStack1056,afStack748,afStack684,afStack876,&uStack1044, - afStack812,afStack428); - proc_7F058020(afStack428,puVar11 + 0x80); - fVar12 = extraout_f12_08; - fVar13 = extraout_f14_08; - } - else { - if (iVar5 == 10) { - uStack1080 = DAT_80035dd4; - uStack1076 = DAT_80035dd8; - uStack1072 = DAT_80035ddc; - uStack1068 = *(undefined4 *)(param_5 + 0xb8); - uStack1064 = *(undefined4 *)(param_5 + 0xbc); - uStack1060 = *(undefined4 *)(param_5 + 0xc0); - uVar2 = get_controller_buttons_held(*param_6,0x20); - uVar7 = extraout_a0_11; - if (uVar2 != 0) { - proc_7F0585FC(flt_80053F00,extraout_a0_11,afStack748); - uVar7 = extraout_a0_12; - } - proc_7F058570(flt_80053F04,uVar7,afStack684); - proc_7F06351C(&uStack1080,afStack748,afStack684,afStack876,&uStack1068, - afStack812,afStack428); - proc_7F058020(afStack428,puVar11 + 0xa0); - fVar12 = extraout_f12_09; - fVar13 = extraout_f14_09; - } - else { - if (iVar5 == 3) { - uStack1168 = DAT_80035de0; - uStack1164 = DAT_80035de4; - uStack1160 = DAT_80035de8; - uStack1092 = *(undefined4 *)(param_5 + 100); - uStack1088 = *(undefined4 *)(param_5 + 0x68); - uStack1084 = *(undefined4 *)(param_5 + 0x6c); - proc_7F057FD0(afStack1156); - uVar2 = get_controller_buttons_held(*param_6,0x800); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held(*param_6,0x400); - if (uVar2 != 0) { - proc_7F058570(flt_80053F0C,extraout_a0_14,afStack748); - } - extraout_a0_15._7_1_ = *param_6; - } - else { - proc_7F058570(flt_80053F08,extraout_a0_13,afStack748); - extraout_a0_15._7_1_ = *param_6; - } - uVar2 = get_controller_buttons_held((char)extraout_a0_15,0x200); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held(*param_6,0x100); - if (uVar2 != 0) { - proc_7F058688(flt_80053F14,extraout_a0_16,afStack1156); - } - } - else { - proc_7F058688(flt_80053F10,extraout_a0_15,afStack1156); - } - proc_7F058068(afStack1156,afStack748); - proc_7F058570(flt_80053F18,extraout_a0_17,afStack684); - proc_7F06351C(&uStack1168,afStack748,afStack684,afStack876,&uStack1092, - afStack812,afStack428); - proc_7F058020(afStack428,puVar11 + 0x30); - fVar12 = extraout_f12_10; - fVar13 = extraout_f14_10; - } - else { - if (iVar5 == 1) { - uStack1192 = DAT_80035dec; - fStack1188 = DAT_80035df0; - uStack1184 = DAT_80035df4; - uStack1180 = *(undefined4 *)(param_5 + 0x4c); - uStack1176 = *(undefined4 *)(param_5 + 0x50); - uStack1172 = *(undefined4 *)(param_5 + 0x54); - uVar2 = get_controller_buttons_held(*param_6,0x1000); - if (uVar2 != 0) { - fStack1188 = fStack1188 + -10.00000000; - } - proc_7F058570(fVar1,extraout_a0_18,afStack684); - proc_7F06351C(&uStack1192,afStack748,afStack684,afStack876,&uStack1180 - ,afStack812,afStack428); - proc_7F058020(afStack428,puVar11 + 0x10); - fVar12 = extraout_f12_11; - fVar13 = extraout_f14_11; - } - else { - if (iVar5 == 0xc) { - uStack1216 = DAT_80035df8; - uStack1212 = DAT_80035dfc; - uStack1208 = DAT_80035e00; - uStack1204 = *(undefined4 *)(param_5 + 0xd0); - uStack1200 = *(undefined4 *)(param_5 + 0xd4); - uStack1196 = *(undefined4 *)(param_5 + 0xd8); - uVar2 = get_controller_buttons_held(*param_6,0x2000); - uVar7 = extraout_a0_19; - if (uVar2 != 0) { - proc_7F058570(flt_80053F1C,extraout_a0_19,afStack748); - uVar7 = extraout_a0_20; - } - proc_7F058688(flt_80053F20,uVar7,afStack684); - proc_7F06351C(&uStack1216,afStack748,afStack684,afStack876, - &uStack1204,afStack812,afStack428); - proc_7F058020(afStack428,puVar11 + 0xc0); - fVar12 = extraout_f12_12; - fVar13 = extraout_f14_12; - } - else { - proc_7F058020(param_2,puVar11 + iVar5 * 0x10); - fVar12 = extraout_f12_13; - fVar13 = extraout_f14_13; - } - } - } - } - } - } - } - } - } - } - } - } - iVar5 += 1; - } while (iVar5 < 0xd); - proc_7F06EFC4((int)auStack96); - uStack52 = param_1; - subdraw((int)&uStack64,(uint)auStack96,extraout_a2_lo_00,extraout_a3_lo_00); - param_1 = uStack52; - proc_7F058C64(); - lVar4 = 0; - iVar5 = 0; - if (0 < poStack352->num_object_grps) { - do { - proc_7F058020((undefined4 *)((int)puStack84 + iVar5),afStack284); - proc_7F058C9C((int)afStack284,puStack84 + (int)lVar4 * 0x10); - lVar4 = (longlong)((int)lVar4 + 1); - iVar5 += 0x40; - } while (lVar4 < (longlong)poStack352->num_object_grps); - } - proc_7F058C88(); - } - } - return param_1; -} - - - -undefined4 -proc_7F064364(undefined4 param_1,float *param_2,longlong param_3,int param_4,char *param_5) - -{ - undefined4 uVar1; - - uVar1 = proc_7F06359C(param_1,param_2,0xff,param_3,param_4,param_5); - return uVar1; -} - - - -undefined4 * proc_7F0643A0(void) - -{ - if (DAT_80075db8 == 0) { - return &DAT_80075db8; - } - if (DAT_80075dbc == 0) { - return &DAT_80075dbc; - } - if (DAT_80075dc0 == 0) { - return &DAT_80075dc0; - } - if (DAT_80075dc4 == 0) { - return &DAT_80075dc4; - } - return NULL; -} - - - -void recall_joy2_hits_edit_detail_edit_flag(void) - -{ - short sVar1; - hit_header **pphVar2; - undefined4 in_v0_lo; - int iVar3; - sfxdata *data; - int in_a0_lo; - char *in_a1_lo; - int in_a2_lo; - undefined4 *puVar4; - undefined4 *puVar5; - undefined **ppuVar6; - undefined **ppuVar7; - undefined *puStack68; - undefined *puStack64; - undefined2 uStack60; - undefined4 auStack56 [10]; - sfxdata *psStack16; - u32 uStack12; - u32 uStack8; - undefined4 uStack4; - - proc_7F0539E4((float *)(in_a1_lo + 8)); - uStack4 = in_v0_lo; - uStack8 = get_random_value(); - uStack12 = get_random_value(); - DAT_800483c4 = in_a2_lo; - iVar3 = get_debug_joy2hitsedit_flag(); - if (iVar3 == 0) { - get_debug_joy2detailedit_flag(); - } - if (((((in_a0_lo != 0x1d) && (in_a0_lo != 0x1c)) && (in_a0_lo != 0x1b)) && - (((in_a0_lo != 0x21 && (in_a0_lo != 0x2f)) && - ((in_a0_lo != 0x30 && ((in_a0_lo != 0x22 && (in_a0_lo != 0x17)))))))) && (in_a0_lo != 0x3c)) - { - data = (sfxdata *)proc_7F0643A0(); - if (data != NULL) { - if ((*in_a1_lo == '\x03') || (*in_a1_lo == '\x06')) { - if (in_a0_lo == 2) { - psStack16 = data; - play_sfx_a1(ptr_sfx_buf,0x4a,data); - } - else { - if (in_a0_lo == 1) { - puStack64 = PTR_DAT_80035e2c; - uStack60 = PTR_DAT_80035e30._0_2_; - psStack16 = data; - play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack68 + (uStack8 % 3) * 2 + 4),data); - } - else { - puStack68 = PTR_DAT_80035e34; - psStack16 = data; - play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack68 + (uStack8 & 1) * 2),data); - } - } - if ((longlong)psStack16->target_volume != 0) { - music_related_36((longlong)psStack16->target_volume,8,uStack4); - } - } - else { - if (in_a0_lo == 0x16) { - psStack16 = data; - play_sfx_a1(ptr_sfx_buf,0x5b,data); - } - else { - ppuVar6 = &dword_80035E04; - puVar4 = auStack56; - do { - ppuVar7 = ppuVar6 + 3; - puVar5 = puVar4 + 3; - *(undefined **)puVar4 = *ppuVar6; - *(undefined **)(puVar4 + 1) = ppuVar6[1]; - *(undefined **)(puVar4 + 2) = ppuVar6[2]; - ppuVar6 = ppuVar7; - puVar4 = puVar5; - } while (ppuVar7 != (undefined **)0x80035e28); - *puVar5 = uRam80035e28; - psStack16 = data; - play_sfx_a1(ptr_sfx_buf,*(short *)((int)auStack56 + (uStack8 % 0x14) * 2),data); - } - if ((longlong)psStack16->target_volume != 0) { - music_related_36((longlong)psStack16->target_volume,8,uStack4); - } - } - } - psStack16 = (sfxdata *)proc_7F0643A0(); - if (((psStack16 != NULL) && (-1 < in_a2_lo)) && - (pphVar2 = hit_header_array[*(uint *)(image_entries + in_a2_lo) >> 0x1c], pphVar2 != NULL)) { - sVar1 = *(short *)(pphVar2 + 2); - if (0 < sVar1) { - if (sVar1 == 0) { - trap(0x1c00); - } - play_sfx_a1(ptr_sfx_buf, - *(short *)((int)&(*pphVar2)->pImageIDArray + (uStack12 % (int)sVar1) * 2), - psStack16); - } - if (psStack16->target_volume != 0) { - proc_7F053A10(psStack16->target_volume,(float *)(in_a1_lo + 8)); - } - } - } - return; -} - - - -void proc_7F064720(float *param_1) - -{ - sfxdata *data; - - data = (sfxdata *)proc_7F0643A0(); - if (data != NULL) { - play_sfx_a1(ptr_sfx_buf,0x46,data); - if (data->target_volume != 0) { - proc_7F053A10(data->target_volume,param_1); - } - } - return; -} - - - -void recall_joy2_hits_edit_flag(int param_1,float *param_2,int param_3) - -{ - short sVar1; - hit_header **pphVar2; - sfxdata *data; - undefined **ppuVar3; - undefined **ppuVar4; - undefined4 *puVar5; - undefined4 auStack88 [18]; - undefined *puStack16; - u32 uStack12; - u32 uStack8; - sfxdata *psStack4; - - uStack8 = get_random_value(); - uStack12 = get_random_value(); - DAT_800483c4 = param_3; - get_debug_joy2hitsedit_flag(); - data = (sfxdata *)proc_7F0643A0(); - if (data != NULL) { - if (param_1 != 0x17) { - if (param_1 == 0x16) { - puStack16 = PTR_DAT_80035e38; - psStack4 = data; - play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack16 + (uStack8 & 1) * 2),data); - data = psStack4; - } - else { - ppuVar3 = &PTR_DAT_80035e3c; - puVar5 = auStack88; - do { - ppuVar4 = ppuVar3 + 3; - *(undefined **)puVar5 = *ppuVar3; - *(undefined **)(puVar5 + 1) = ppuVar3[1]; - *(undefined **)(puVar5 + 2) = ppuVar3[2]; - ppuVar3 = ppuVar4; - puVar5 = puVar5 + 3; - } while (ppuVar4 != &PTR_DAT_80035e84); - psStack4 = data; - play_sfx_a1(ptr_sfx_buf,*(short *)((int)auStack88 + (uStack8 % 0x24) * 2),data); - data = psStack4; - } - } - if (data->target_volume != 0) { - proc_7F053A10(data->target_volume,param_2); - } - } - data = (sfxdata *)proc_7F0643A0(); - if ((data != NULL) && (-1 < param_3)) { - pphVar2 = hit_header_array[*(uint *)(image_entries + param_3) >> 0x1c]; - sVar1 = *(short *)(pphVar2 + 2); - if (0 < sVar1) { - if (pphVar2 != NULL) { - if (sVar1 == 0) { - trap(0x1c00); - } - psStack4 = data; - play_sfx_a1(ptr_sfx_buf, - *(short *)((int)&(*pphVar2)->pImageIDArray + (uStack12 % (int)sVar1) * 2),data); - data = psStack4; - } - if (data->target_volume != 0) { - proc_7F053A10(data->target_volume,param_2); - } - } - } - return; -} - - - -void proc_7F064934(longlong param_1) - -{ - u32 uVar1; - undefined *puStack12; - undefined *puStack8; - undefined2 uStack4; - - if ((param_1 != 0x16) && (param_1 != 0x17)) { - puStack12 = PTR_DAT_80035e84; - puStack8 = PTR_DAT_80035e88; - uStack4 = PTR_DAT_80035e8c._0_2_; - uVar1 = get_random_value(); - play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack12 + (uVar1 % 5) * 2),NULL); - } - return; -} - - - -undefined4 proc_7F0649AC(longlong param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -void proc_7F0649D8(int param_1) - -{ - ITEM_IDS item; - int iVar1; - undefined *puVar2; - int iVar3; - int *piVar4; - - piVar4 = &pPlayer->unknown + param_1 * 0xea; - item = get_item_in_hand(param_1); - iVar3 = piVar4[0x227]; - iVar1 = get_ammo_in_hands_weapon(param_1); - puVar2 = get_ptr_item_statistics(item); - iVar1 += iVar3; - if ((longlong)iVar1 < (longlong)*(short *)(puVar2 + 0x20)) { - piVar4[0x227] = iVar1; - } - else { - piVar4[0x227] = (int)*(short *)(puVar2 + 0x20); - } - iVar1 = check_special_attributes(item,0x200000); - if (iVar1 == 0) { - (&pPlayer->unknown + *(int *)(puVar2 + 0x1c))[0x44c] = - ((&pPlayer->unknown + *(int *)(puVar2 + 0x1c))[0x44c] - piVar4[0x227]) + iVar3; - } - else { - pPlayer->ammoheldarr[*(int *)(puVar2 + 0x1c)] = 0; - } - if (item == ITEM_ROCKETLAUNCH) { - proc_7F05FA7C(param_1); - } - else { - if ((item == ITEM_SHOTGUN) || (item == ITEM_AUTOSHOT)) { - iVar3 = get_ammo_in_hands_weapon(param_1); - if (iVar3 < 5) { - piVar4[0x229] = iVar3; - } - else { - piVar4[0x229] = 5; - } - } - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f066818) overlaps instruction at (ram,0x7f066814) -// - -void handle_weapon_id_values_possibly_1st_person_animation(uint param_1,int param_2) - -{ - longlong weapon; - int weapon_00; - longlong lVar1; - ITEM_IDS item; - ulonglong uVar2; - undefined *puVar3; - u32 uVar4; - int weapon_01; - Player *pPVar5; - int *piVar6; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - longlong extraout_a0_04; - longlong extraout_a0_05; - longlong extraout_a0_06; - longlong extraout_a0_07; - longlong extraout_a0_08; - longlong extraout_a0_09; - longlong extraout_a0_10; - longlong extraout_a0_11; - longlong extraout_a0_12; - longlong extraout_a0_13; - longlong extraout_a0_14; - longlong extraout_a0_15; - longlong extraout_a0_16; - longlong extraout_a0_17; - longlong extraout_a0_18; - longlong extraout_a0_19; - undefined8 extraout_a0_20; - undefined8 extraout_a0_21; - longlong extraout_a0_22; - longlong extraout_a0_23; - longlong extraout_a0_24; - undefined8 extraout_a0_25; - undefined8 extraout_a0_26; - longlong extraout_a0_27; - longlong extraout_a0_28; - longlong extraout_a0_29; - undefined8 extraout_a0_30; - undefined8 extraout_a0_31; - undefined8 uVar7; - longlong extraout_a0_32; - undefined8 extraout_a0_33; - undefined8 extraout_a0_34; - dword *pdVar8; - bool bVar12; - longlong lVar9; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 uVar10; - undefined8 extraout_a1_01; - float *pfVar11; - int iVar13; - int iVar14; - char cVar15; - undefined unaff_s0_lo; - int *piVar16; - undefined unaff_s1_lo; - undefined unaff_retaddr; - float fVar17; - float fVar18; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - float extraout_f12_10; - float extraout_f12_11; - float extraout_f12_12; - float extraout_f12_13; - float extraout_f12_14; - float extraout_f12_15; - float extraout_f12_16; - float extraout_f12_17; - float extraout_f12_18; - float extraout_f12_19; - float extraout_f12_20; - float extraout_f12_21; - float extraout_f12_22; - float extraout_f12_23; - float extraout_f12_24; - float extraout_f12_25; - float extraout_f12_26; - float extraout_f12_27; - float extraout_f12_28; - float extraout_f12_29; - float extraout_f12_30; - float extraout_f12_31; - float extraout_f12_32; - float extraout_f12_33; - float extraout_f12_34; - float extraout_f12_35; - float extraout_f12_36; - float extraout_f12_37; - float extraout_f12_38; - float extraout_f12_39; - float extraout_f12_40; - float extraout_f12_41; - float extraout_f12_42; - float extraout_f12_43; - float extraout_f12_44; - float extraout_f12_45; - float extraout_f12_46; - float extraout_f12_47; - float extraout_f12_48; - float extraout_f12_49; - float extraout_f12_50; - float extraout_f12_51; - float extraout_f12_52; - float extraout_f12_53; - float extraout_f12_54; - float extraout_f12_55; - float extraout_f12_56; - float extraout_f12_57; - float extraout_f12_58; - float extraout_f12_59; - float extraout_f12_60; - float extraout_f12_61; - float extraout_f12_62; - float extraout_f12_63; - float extraout_f12_64; - float extraout_f12_65; - float extraout_f12_66; - float extraout_f12_67; - float extraout_f12_68; - float extraout_f12_69; - float extraout_f12_70; - float extraout_f12_71; - float extraout_f12_72; - float extraout_f12_73; - float extraout_f12_74; - float extraout_f12_75; - float extraout_f12_76; - float extraout_f12_77; - float extraout_f12_78; - float extraout_f12_79; - float extraout_f12_80; - float extraout_f12_81; - float extraout_f12_82; - float extraout_f12_83; - undefined in_stack_fffffe47; - undefined in_stack_fffffe4b; - undefined4 in_stack_fffffe58; - dword *local_15c; - undefined *local_154; - undefined2 local_150; - float *local_148; - float local_144; - float local_13c; - float local_138; - float afStack308 [18]; - float afStack236 [17]; - float local_a8; - float afStack164 [18]; - float local_5c; - int local_58; - float local_4c; - int local_48; - float local_44; - float local_40; - float local_38; - int local_30; - int local_2c; - undefined *local_28; - undefined *local_20; - int local_1c; - int *local_14; - int local_c; - - piVar16 = &pPlayer->unknown + param_1 * 0xea; - weapon._4_4_ = return_ammo_in_hand(param_1); - weapon = (longlong)weapon._4_4_; - weapon_00 = get_ammo_type_for_weapon(weapon._4_4_); - weapon_01 = piVar16[0x220]; - piVar16[0x220] = param_2; - piVar16[0x221] = weapon_01; - if (param_2 == 0) { - piVar16[0x222] = 1; - } - *(undefined *)(piVar16 + 0x21f) = 0; - *(undefined *)((int)piVar16 + 0x87d) = 0; - if (clock_timer < 1) { - weapon_01 = piVar16[0x225]; - } - else { - piVar16[0x224] = piVar16[0x224] + clock_timer; - piVar16[0x223] = piVar16[0x223] + 1; - weapon_01 = piVar16[0x225]; - } - piVar16[0x24b] = 0; - if (weapon_01 == 0) { - if (piVar16[0x220] == 0) { - weapon_01 = piVar16[0x226]; - fVar18 = extraout_f12; -LAB_7f064c2c: - if (weapon_01 != 0) { - piVar16[0x225] = weapon_01; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - goto LAB_7f064c40; - } - weapon_01 = piVar16[0x225]; - } - else { - fVar18 = extraout_f12; - if ((weapon == 0) || - ((local_c = weapon_00, weapon_01 = check_special_attributes(weapon._4_4_,0x10), - weapon_01 == 0 && (fVar18 = extraout_f12_00, weapon_00 = local_c, piVar16[0x227] < 1)))) { - weapon_01 = piVar16[0x226]; - goto LAB_7f064c2c; - } - piVar16[0x225] = 1; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - piVar16[0x222] = 0; - fVar18 = extraout_f12_00; - weapon_00 = local_c; -LAB_7f064c40: - weapon_01 = piVar16[0x225]; - } - piVar16[0x226] = 0; - if (weapon_01 == 0) { - if (piVar16[0x227] == 0) { - if (weapon_00 == 0) { - weapon_01 = piVar16[0x225]; - } - else { - local_c = weapon_00; - weapon_01 = get_controls_locked_flag(); - fVar18 = extraout_f12_01; - if (weapon_01 == 0) { - if (pPlayer->mpmenuon == 0) { - if (((dword_80032458 != 0) && (local_c == 1)) && ((&pPlayer->unknown + 1)[0x44c] < 1)) - { - (&pPlayer->unknown + 1)[0x44c] = 1; - } - weapon_01 = get_ammo_in_hands_weapon(param_1); - if (0 < weapon_01) { - piVar16[0x225] = 9; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_02; - goto LAB_7f064da0; - } - if (pPlayer->field_FC8 == 0) { - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_02; - } - else { - weapon_01 = return_ammo_in_hand(1 - param_1); - pPVar5 = (Player *)((int)pPlayer + param_1 * -0x3a8); - if (pPVar5->field_C3C == 0) { - if (pPVar5->left_weapon_animation == 0) { - piVar6 = &pPVar5->left_weapon; - if (weapon_01 != 0) { - if (pPVar5->left_weapon_ammo_in_magazine != 0) { - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_03; - goto LAB_7f064da4; - } - local_14 = &pPVar5->left_weapon; - weapon_01 = get_ammo_type_for_weapon(weapon_01); - fVar18 = extraout_f12_04; - if ((weapon_01 == 0) || - (weapon_01 = get_ammo_in_hands_weapon(1 - param_1), - fVar18 = extraout_f12_05, piVar6 = local_14, 0 < weapon_01)) - goto LAB_7f064da0; - } - local_14 = piVar6; - autoadvance_on_deplete_all_ammo(); - weapon_01 = piVar16[0x226]; - piVar16[0x223] = 0; - piVar16[0x224] = 0; - piVar16[0x226] = 0; - piVar16[0x225] = weapon_01; - weapon_01 = local_14[10]; - local_14[7] = 0; - local_14[8] = 0; - local_14[10] = 0; - local_14[9] = weapon_01; - fVar18 = extraout_f12_06; - goto LAB_7f064da0; - } - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_03; - } - else { - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_03; - } - } - } - else { - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_01; - } - } - else { -LAB_7f064da0: - weapon_01 = piVar16[0x225]; - } - } - } - else { - weapon_01 = piVar16[0x225]; - } - } - else { - weapon_01 = piVar16[0x225]; - } - } - else { - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12; - } -LAB_7f064da4: - if (weapon_01 == 1) { - if (false) { -switchD_7f064dc8_caseD_2b: - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - goto LAB_7f064f9c; - } - switch(weapon._4_4_) { - case 1: - uVar4 = get_random_value(); - if ((uVar4 & 1) == 0) { - piVar16[0x225] = 0x1e; - } - else { - piVar16[0x225] = 0x20; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_10; - break; - case 2: - uVar4 = get_random_value(); - if ((uVar4 & 1) == 0) { - piVar16[0x225] = 0x11; - } - else { - piVar16[0x225] = 0x14; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_09; - break; - case 3: - piVar16[0x225] = 0x17; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - break; - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x19: - case 0x1e: - case 0x20: - case 0x23: - case 0x24: - case 0x3c: - piVar16[0x225] = 2; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - break; - case 0x12: - case 0x18: - if (5 < piVar16[0x224]) { - piVar16[0x225] = 2; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - break; - } - piVar16[0x302] = 0; - goto LAB_7f064fa0; - case 0x1a: - if (piVar16[0x222] == 0) { - if (piVar16[0x224] < 0xf0) { - piVar16[0x302] = 0; - goto LAB_7f064fa0; - } - weapon_01 = piVar16[0x224]; - } - else { - weapon_01 = piVar16[0x224]; - } - pPlayer->field_105C = weapon_01; - piVar16[0x225] = 0x1a; - piVar16[0x223] = 0; - piVar16[0x224] = 0; - break; - case 0x1b: - case 0x1c: - case 0x1d: - case 0x21: - case 0x22: - case 0x2f: - case 0x30: - case 0x3d: - piVar16[0x225] = 0x1c; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - break; - case 0x1f: - lVar1 = proc_7F05C6FC((int)DWORD_ARRAY_80035a90,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - piVar16[0x225] = 2; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_11; - } - else { - piVar16[0x24b] = 1; - fVar18 = extraout_f12_11; - } - break; - case 0x25: - case 0x26: - case 0x27: - case 0x29: - case 0x2a: - case 0x2c: - case 0x2d: - case 0x2e: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3a: - case 0x3b: - case 0x49: - case 0x51: - case 0x52: - case 0x53: - piVar16[0x225] = 0x24; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - break; - case 0x28: - if (piVar16[0x223] == 0) { - proc_7F0807B0(0,0,0,0x3f800000); - piVar16[0x302] = 0; - fVar18 = extraout_f12_07; - goto LAB_7f064fa0; - } - if (0 < piVar16[0x224]) { - proc_7F0807E0(0,0,0,0,0,in_stack_fffffe47,in_stack_fffffe4b,unaff_s0_lo,unaff_s1_lo, - unaff_retaddr,in_stack_fffffe58); - piVar16[0x225] = 2; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_08; - } - break; - default: - goto switchD_7f064dc8_caseD_2b; - } -LAB_7f064f9c: - piVar16[0x302] = 0; -LAB_7f064fa0: - weapon_01 = piVar16[0x225]; - } - if (weapon_01 == 2) { - weapon_01 = get_ammo_type_for_weapon(weapon._4_4_); - if ((weapon_01 == 0) || (0 < piVar16[0x227])) { - fVar18 = extraout_f12_12; - if (false) goto switchD_7f064fe0_caseD_3; - fVar18 = extraout_f12_12; - switch(weapon._4_4_) { - case 2: - if (piVar16[0x223] == 0) { - *(undefined *)(piVar16 + 0x21f) = 0; - } - else { - if (piVar16[0x220] == 0) { - piVar16[0x225] = 3; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_12; - break; - } - *(undefined *)(piVar16 + 0x21f) = 0; - } - *(undefined *)((int)piVar16 + 0x87d) = *(undefined *)(piVar16 + 0x21f); - fVar18 = extraout_f12_12; - break; - case 4: - case 5: - case 6: - case 0xf: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1e: - case 0x20: - case 0x23: - case 0x24: - if (piVar16[0x223] != 0) { - piVar16[0x225] = 3; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_12; - break; - } - uVar2 = get_num_players(); - if ((uVar2 == 1) || - ((weapon_01 = get_ispaused(), weapon_01 == 0 && (pPlayer->mpmenuon == 0)))) { - *(undefined *)((int)piVar16 + 0x87d) = 1; - } - weapon_01 = get_controls_locked_flag(); - bVar12 = weapon_01 == 0; - if (bVar12) { - bVar12 = pPlayer->mpmenuon == 0; - } - *(bool *)(piVar16 + 0x21f) = bVar12; - proc_7F05E808(param_1); - cVar15 = *(char *)(piVar16 + 0x21f); - fVar18 = extraout_f12_14; - goto LAB_7f065290; - case 7: - case 8: - case 9: - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - if (((piVar16[0x223] == 0) || (piVar16[0x220] != 0)) || - ((weapon_01 = check_special_attributes(weapon._4_4_,4), fVar18 = extraout_f12_15, - weapon_01 != 0 && - ((weapon_01 = get_BONDdata_is_aiming(), fVar18 = extraout_f12_16, weapon_01 == 0 && - (fVar18 = extraout_f12_16, piVar16[0x302] % 3 != 0)))))) { - lVar1 = proc_7F05DFCC(weapon._4_4_); - if (lVar1 == 0) { - trap(0x1c00); - } - if ((lVar1 == -1) && (piVar16[0x223] == -0x80000000)) { - trap(0x1800); - } - if (piVar16[0x223] % (int)lVar1 != 0) { - cVar15 = *(char *)(piVar16 + 0x21f); - fVar18 = extraout_f12_17; - goto LAB_7f065290; - } - uVar2 = get_num_players(); - if ((uVar2 == 1) || - ((weapon_01 = get_ispaused(), weapon_01 == 0 && (pPlayer->mpmenuon == 0)))) { - *(undefined *)((int)piVar16 + 0x87d) = 1; - } - weapon_01 = get_controls_locked_flag(); - bVar12 = weapon_01 == 0; - if (bVar12) { - bVar12 = pPlayer->mpmenuon == 0; - } - *(bool *)(piVar16 + 0x21f) = bVar12; - fVar18 = extraout_f12_18; - } - else { - piVar16[0x225] = 3; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - break; - case 0x1f: - if ((piVar16[0x223] == 0) || (piVar16[0x220] != 0)) { - proc_7F05C6FC((int)DWORD_ARRAY_80035b68,extraout_f12_12,NULL,(int)(piVar16 + 0x23b)); - *(undefined *)(piVar16 + 0x21f) = 0; - piVar16[0x24b] = 1; - *(undefined *)((int)piVar16 + 0x87d) = *(undefined *)(piVar16 + 0x21f); - fVar18 = extraout_f12_19; - if (piVar16[0x223] == 0) { - weapon_01 = get_controls_locked_flag(); - bVar12 = weapon_01 == 0; - if (bVar12) { - bVar12 = pPlayer->mpmenuon == 0; - } - *(bool *)(piVar16 + 0x21f) = bVar12; - fVar18 = extraout_f12_20; - } - } - else { - piVar16[0x225] = 3; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_12; - } - break; - case 0x28: - case 0x3c: - if (piVar16[0x223] == 0) { - weapon_01 = get_controls_locked_flag(); - bVar12 = weapon_01 == 0; - if (bVar12) { - bVar12 = pPlayer->mpmenuon == 0; - } - *(bool *)(piVar16 + 0x21f) = bVar12; - fVar18 = extraout_f12_13; - } - else { - piVar16[0x225] = 3; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_12; - } - } -switchD_7f064fe0_caseD_3: - cVar15 = *(char *)(piVar16 + 0x21f); -LAB_7f065290: - if (cVar15 == '\0') { - weapon_01 = piVar16[0x225]; - } - else { - if (weapon == 0x28) { - weapon_01 = piVar16[0x227]; - } - else { - uVar4 = get_cur_playernum(); - controller_7000C854(uVar4,extraout_f12_21); - weapon_01 = cur_player_get_control_type(); - if (weapon_01 < 4) { - weapon_01 = piVar16[0x227]; - fVar18 = extraout_f12_22; - } - else { - uVar4 = get_cur_playernum(); - uVar2 = get_num_players(); - controller_7000C854((int)uVar2 + uVar4,extraout_f12_23); - weapon_01 = piVar16[0x227]; - fVar18 = extraout_f12_24; - } - } - piVar16[0x227] = weapon_01 + -1; - piVar16[0x302] = piVar16[0x302] + 1; - weapon_01 = piVar16[0x225]; - } - if (weapon_01 == 2) { - local_1c = 0; - uVar2 = proc_7F05DFF0(weapon._4_4_); - if ((longlong)uVar2 < 1) { - if (*(char *)(piVar16 + 0x21f) != '\0') { - local_1c = 1; - } - } - else { - if ((global_timer != *(int *)((int)pPlayer + param_1 * -0x3a8 + 0xdf8)) && - (piVar16[0x293] < global_timer)) { - uVar2 = proc_7F05DFF0(weapon._4_4_); - piVar16[0x293] = (int)uVar2 + global_timer; - local_1c = 1; - } - } - uVar2 = get_num_players(); - fVar18 = extraout_f12_25; - if (uVar2 != 1) { - weapon_01 = get_ispaused(); - fVar18 = extraout_f12_26; - if (weapon_01 != 0) goto LAB_7f065548; - fVar18 = extraout_f12_26; - if (pPlayer->mpmenuon != 0) { - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_26; - goto LAB_7f06554c; - } - } - if (local_1c != 0) { - if (piVar16[0x291] == 0) { - weapon_01 = piVar16[0x292]; - } - else { - uVar2 = music_related_26(piVar16[0x291]); - if (uVar2 == 0) { - weapon_01 = piVar16[0x292]; - } - else { - music_related_28(piVar16[0x291]); - weapon_01 = piVar16[0x292]; - } - } - if ((weapon_01 != 0) && (uVar2 = music_related_26(weapon_01), uVar2 != 0)) { - music_related_28(piVar16[0x292]); - } - uVar2 = proc_7F05E014(weapon._4_4_); - fVar18 = extraout_f12_27; - if (uVar2 != 0) { - if (piVar16[0x291] == 0) { - uVar2 = proc_7F05E014(weapon._4_4_); - play_sfx_a1(ptr_sfx_buf,(short)uVar2,(sfxdata *)(piVar16 + 0x291)); - fVar18 = extraout_f12_28; - } - else { - fVar18 = extraout_f12_27; - if (piVar16[0x292] == 0) { - uVar2 = proc_7F05E014(weapon._4_4_); - play_sfx_a1(ptr_sfx_buf,(short)uVar2,(sfxdata *)(piVar16 + 0x292)); - fVar18 = extraout_f12_29; - } - } - piVar16[0x294] = global_timer; - } - } - if (weapon != 0x17) goto LAB_7f065548; - local_20 = PTR_DAT_80035e90; - uVar4 = get_random_value(); - play_sfx_a1(ptr_sfx_buf,*(short *)((int)&local_20 + (uVar4 & 1) * 2),NULL); - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_30; - } - else { - weapon_01 = piVar16[0x225]; - } - } - else { - if (piVar16[0x223] < 1) { - piVar16[0x225] = 0xd; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - uVar2 = get_num_players(); - if ((uVar2 == 1) || (weapon_01 = get_ispaused(), fVar18 = extraout_f12_31, weapon_01 == 0)) - { - play_sfx_a1(ptr_sfx_buf,0x59,NULL); - fVar18 = extraout_f12_32; - } - } - else { - piVar16[0x225] = 3; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_12; - } -LAB_7f065548: - weapon_01 = piVar16[0x225]; - } - } - else { - weapon_01 = piVar16[0x225]; - } -LAB_7f06554c: - if (weapon_01 == 3) { - if (weapon == 0x1f) { - lVar1 = proc_7F05C6FC((int)DWORD_ARRAY_80035b68,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_33; - } - else { - piVar16[0x24b] = 1; - fVar18 = extraout_f12_33; - } - } - else { - puVar3 = get_ptr_item_statistics(weapon._4_4_); - weapon_01 = piVar16[0x222]; - cVar15 = puVar3[0x44]; - weapon_00 = (int)cVar15; - iVar14 = (int)(char)puVar3[0x45]; - if ((weapon_01 == 0) || (piVar16[0x224] < weapon_00 + iVar14)) { - lVar1 = (longlong)piVar16[0x224]; - iVar13 = weapon_00 + iVar14; - if (((char)puVar3[0x23] < '\0') || - ((weapon_01 != 0 || (lVar1 < (longlong)(iVar13 + (int)(char)puVar3[0x23]))))) { - if ((weapon_01 == 0) || - ((((piVar16[0x220] == 0 || (lVar1 < (longlong)(char)puVar3[0x46])) || - (lVar9 = (longlong)(piVar16[0x224] + (int)(char)puVar3[0x47]), - (char)puVar3[0x47] < '\0')) || - (((longlong)iVar13 <= lVar9 || (lVar9 < (longlong)(char)puVar3[0x46])))))) { - fVar18 = extraout_f12_34; - if (lVar1 < (longlong)iVar13) { - local_38 = *(float *)(puVar3 + 0x48); - fVar18 = *(float *)(puVar3 + 0x4c); - if (lVar1 == 0) { - lVar1 = (longlong)piVar16[0x224]; - piVar16[0x232] = piVar16[0x23a]; - piVar16[0x22f] = piVar16[0x237]; - piVar16[0x230] = piVar16[0x238]; - piVar16[0x231] = piVar16[0x239]; - } - if (lVar1 < (longlong)cVar15) { - *(float *)(piVar16 + 0x236) = flt_80054170 - (fVar18 * flt_80054170) / 360.00000000; - local_2c = weapon_00; - local_28 = puVar3; - fVar18 = proc_7F05DCE8((longlong)(int)param_1); - piVar16[0x234] = 0; - *(float *)(piVar16 + 0x233) = - ((fVar18 - (float)piVar16[0x28e]) * local_38) / 1000.00000000; - *(float *)(piVar16 + 0x235) = - ((*(float *)(local_28 + 0xc) - (float)piVar16[0x290]) * local_38) / - 1000.00000000; - local_40 = sinf(((float)piVar16[0x224] * flt_80054174) / (float)local_2c); - uVar7 = extraout_a0; - uVar10 = extraout_a1; - } - else { - *(float *)(piVar16 + 0x236) = flt_80054178 - (fVar18 * flt_80054178) / 360.00000000; - local_30 = iVar14; - local_2c = weapon_00; - local_28 = puVar3; - fVar18 = proc_7F05DCE8((longlong)(int)param_1); - piVar16[0x234] = 0; - *(float *)(piVar16 + 0x233) = - ((fVar18 - (float)piVar16[0x28e]) * local_38) / 1000.00000000; - *(float *)(piVar16 + 0x235) = - ((*(float *)(local_28 + 0xc) - (float)piVar16[0x290]) * local_38) / - 1000.00000000; - fVar18 = cosf(((float)(piVar16[0x224] - local_2c) * flt_8005417C) / (float)local_30) - ; - local_40 = fVar18 * 0.50000000 + 0.50000000; - uVar7 = extraout_a0_00; - uVar10 = extraout_a1_00; - } - fVar18 = proc_7F06D0CC((float)piVar16[0x232],(float)piVar16[0x236],uVar7,uVar10, - local_40); - *(float *)(piVar16 + 0x23a) = fVar18; - piVar16[0x24b] = 1; - *(float *)(piVar16 + 0x237) = - ((float)piVar16[0x233] - (float)piVar16[0x22f]) * local_40 + - (float)piVar16[0x22f]; - *(float *)(piVar16 + 0x238) = - ((float)piVar16[0x234] - (float)piVar16[0x230]) * local_40 + - (float)piVar16[0x230]; - *(float *)(piVar16 + 0x239) = - ((float)piVar16[0x235] - (float)piVar16[0x231]) * local_40 + - (float)piVar16[0x231]; - proc_7F058570(fVar18,extraout_a0_01,piVar16 + 0x23b); - proc_7F058998(piVar16 + 0x237,(int)(piVar16 + 0x23b)); - fVar18 = extraout_f12_35; - } - } - else { - piVar16[0x225] = 4; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - piVar16[0x22a] = (int)(char)puVar3[0x47]; - fVar18 = extraout_f12_34; - } - goto LAB_7f0658a8; - } - piVar16[0x225] = 0; - } - else { - piVar16[0x225] = 0; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_34; - } - } -LAB_7f0658a8: - weapon_01 = piVar16[0x225]; - if (weapon_01 == 4) { - weapon_01 = piVar16[0x224]; - if (weapon_01 == 0) { - piVar16[0x232] = piVar16[0x23a]; - piVar16[0x22f] = piVar16[0x237]; - piVar16[0x230] = piVar16[0x238]; - piVar16[0x231] = piVar16[0x239]; - weapon_01 = piVar16[0x224]; - piVar16[0x236] = 0; - piVar16[0x233] = 0; - piVar16[0x234] = 0; - piVar16[0x235] = 0; - weapon_00 = piVar16[0x22a]; - } - else { - weapon_00 = piVar16[0x22a]; - } - if (weapon_01 < weapon_00) { - fVar18 = cosf(((float)(weapon_00 - weapon_01) * flt_80054180) / (float)weapon_00); - local_44 = fVar18 * 0.50000000 + 0.50000000; - fVar18 = proc_7F06D0CC((float)piVar16[0x232],(float)piVar16[0x236],extraout_a0_02, - extraout_a1_01,local_44); - *(float *)(piVar16 + 0x23a) = fVar18; - piVar16[0x24b] = 1; - *(float *)(piVar16 + 0x237) = - ((float)piVar16[0x233] - (float)piVar16[0x22f]) * local_44 + (float)piVar16[0x22f]; - *(float *)(piVar16 + 0x238) = - ((float)piVar16[0x234] - (float)piVar16[0x230]) * local_44 + (float)piVar16[0x230]; - *(float *)(piVar16 + 0x239) = - ((float)piVar16[0x235] - (float)piVar16[0x231]) * local_44 + (float)piVar16[0x231]; - proc_7F058570(fVar18,extraout_a0_03,piVar16 + 0x23b); - proc_7F058998(piVar16 + 0x237,(int)(piVar16 + 0x23b)); - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_36; - } - else { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - } - } - if (weapon_01 == 0xd) { - if (piVar16[0x223] == 0) { - proc_7F05E808(param_1); - weapon_01 = piVar16[0x222]; - fVar18 = extraout_f12_37; - } - else { - weapon_01 = piVar16[0x222]; - } - if (weapon_01 == 0) { - if (true) { - if (0x13 < piVar16[0x224]) { - piVar16[0x225] = 0; - goto LAB_7f065a44; - } - weapon_01 = piVar16[0x225]; - } - else { - weapon_01 = piVar16[0x225]; - } - } - else { - piVar16[0x225] = 0; -LAB_7f065a44: - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = piVar16[0x225]; - } - } - else { - weapon_01 = piVar16[0x225]; - } - lVar1 = 0x10; - if (weapon_01 == 5) { - local_48 = 0x10; - uVar2 = get_num_players(); - lVar1 = (longlong)local_48; - if (1 < (longlong)uVar2) { - lVar1 = 0xc; - } - if (piVar16[0x223] == 0) { - local_48 = (int)lVar1; - uVar2 = get_num_players(); - lVar1 = (longlong)local_48; - if (uVar2 == 1) { - piVar16[0x22c] = 0x11; - } - else { - piVar16[0x22c] = 0xd; - } - weapon_01 = piVar16[0x224]; - } - else { - weapon_01 = piVar16[0x224]; - } - fVar18 = flt_80054184; - if ((longlong)weapon_01 < lVar1) { - piVar16[0x24b] = 1; - local_4c = ((float)weapon_01 * fVar18) / (float)(int)lVar1; - proc_7F058570(local_4c,lVar1,piVar16 + 0x23b); - piVar16[0x247] = 0; - fVar18 = cosf(local_4c); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar18) * -60.00000000; - fVar18 = sinf(local_4c); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - lVar1 = extraout_a0_05; - fVar18 = extraout_f12_39; - } - else { - weapon_01 = get_ammo_type_for_weapon(weapon._4_4_); - (&pPlayer->unknown + weapon_01)[0x44c] = - (&pPlayer->unknown + weapon_01)[0x44c] + piVar16[0x227]; - piVar16[0x227] = 0; - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - proc_7F09B368(param_1); - } - proc_7F05FB00(param_1); - piVar16[0x225] = 6; - uVar2 = check_if_item_available(ITEM_SNIPERRIFLE); - if (uVar2 == 0) { - pPlayer->field_2A38 = 1; - } - else { - pPlayer->field_2A38 = 0x11; - } - weapon_01 = piVar16[0x225]; - lVar1 = extraout_a0_04; - fVar18 = extraout_f12_38; - } - } - if ((weapon_01 == 6) || (weapon_01 == 7)) { - if ((piVar16[0x22d] == 0) || (piVar16[0x22c] <= piVar16[0x224])) { - if (weapon_01 == 6) { - pPVar5 = (Player *)((int)pPlayer + param_1 * -0x3a8); - weapon_01 = pPVar5->field_C3C; - if ((((weapon_01 != 6) && (weapon_01 != 5)) && - (weapon_00 = pPVar5->left_weapon_animation, weapon_00 != 5)) && - (((weapon_01 != 0xe && (weapon_01 != 0xf)) && ((weapon_01 != 0x10 && (weapon_00 != 0xe))) - ))) { - if (param_1 == 0) { - item = get_item_in_hand(1); - uVar2 = check_if_item_for_hand_available(piVar16[0x22b],item); - if (uVar2 == 0) { - draw_item_in_hand_has_more_ammo(1,ITEM_UNARMED); - } - } - else { - item = get_item_in_hand(0); - uVar2 = check_if_item_for_hand_available(item,piVar16[0x22b]); - if (uVar2 == 0) { - piVar16[0x22b] = 0; - } - } - } - remove_hands_item(param_1,piVar16[0x22b]); - weapon_01 = return_ammo_in_hand(param_1); - weapon = (longlong)weapon_01; - piVar16[0x225] = 7; - lVar1 = extraout_a0_06; - fVar18 = extraout_f12_40; - } - else { - uVar2 = proc_7F05CEBC(param_1); - lVar1 = extraout_a0_07; - fVar18 = extraout_f12_41; - if (uVar2 != 0) { - piVar16[0x225] = 8; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - lVar1 = extraout_a0_07; - fVar18 = extraout_f12_41; - } - } - weapon_01 = piVar16[0x225]; - } - else { - weapon_01 = piVar16[0x225]; - } - if ((weapon_01 == 6) || (weapon_01 == 7)) { - piVar16[0x24b] = 1; - proc_7F058570(flt_80054188,lVar1,piVar16 + 0x23b); - piVar16[0x247] = 0; - fVar18 = cosf(flt_8005418C); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar18) * -60.00000000; - fVar18 = sinf(flt_80054190); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - lVar1 = extraout_a0_08; - fVar18 = extraout_f12_42; - } - } - weapon_00 = (int)weapon; - if (weapon_01 == 8) { - local_58 = 0x17; - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - local_58 = 0xc; - } - if (piVar16[0x223] == 0) { - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - proc_7F09B398(param_1); - } - proc_7F0649D8(param_1); - pPlayer->field_FC8 = 0; - if (clock_timer < 1) { - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_10; - fVar18 = extraout_f12_44; - } - else { - if (pPlayer->unknown == 1) { - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_10; - fVar18 = extraout_f12_44; - } - else { - uVar2 = proc_7F05CEBC(param_1); - lVar1 = extraout_a0_11; - fVar18 = extraout_f12_45; - if (uVar2 == 0) { -switchD_7f065e4c_caseD_0: - weapon_01 = piVar16[0x224]; - } - else { - if (disable_player_pickups_flag == 0) { - if (weapon < 0x3e) { - if (false) { -switchD_7f065e4c_caseD_4: - play_sfx_a1(ptr_sfx_buf,0xe8,NULL); - lVar1 = extraout_a0_15; - fVar18 = extraout_f12_49; - goto switchD_7f065e4c_caseD_0; - } - lVar1 = extraout_a0_11; - fVar18 = extraout_f12_45; - switch(weapon_00) { - case 0: - case 1: - case 0x17: - case 0x1a: - case 0x1e: - case 0x1f: - case 0x20: - case 0x21: - case 0x22: - case 0x28: - case 0x2f: - case 0x30: - case 0x3c: - case 0x3d: - goto switchD_7f065e4c_caseD_0; - case 2: - case 3: - play_sfx_a1(ptr_sfx_buf,0xe9,NULL); - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_13; - fVar18 = extraout_f12_47; - break; - default: - goto switchD_7f065e4c_caseD_4; - case 0x16: - play_sfx_a1(ptr_sfx_buf,0xf2,NULL); - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_12; - fVar18 = extraout_f12_46; - break; - case 0x1b: - case 0x1c: - case 0x1d: - play_sfx_a1(ptr_sfx_buf,0xeb,NULL); - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_14; - fVar18 = extraout_f12_48; - } - } - else { - if (weapon != 0x58) goto switchD_7f065e4c_caseD_4; - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_11; - fVar18 = extraout_f12_45; - } - } - else { - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_11; - fVar18 = extraout_f12_45; - } - } - } - } - } - else { - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_09; - fVar18 = extraout_f12_43; - } - if (weapon_01 < local_58) { - weapon_01 = get_ptr_weapon_model_header_line(weapon_00); - lVar1 = weapon; - fVar18 = extraout_f12_50; - if (((weapon_01 != 0) && - (weapon_01 = check_special_attributes(weapon_00,0x800), lVar1 = weapon, - fVar18 = extraout_f12_51, weapon_01 != 0)) && - (weapon_01 = check_special_attributes(weapon_00,0x2000), fVar17 = flt_8005428C, - lVar1 = extraout_a0_16, fVar18 = extraout_f12_52, weapon_01 == 0)) { - piVar16[0x24b] = 1; - local_5c = ((float)(local_58 - piVar16[0x224]) * fVar17) / (float)local_58; - proc_7F058570(local_5c,extraout_a0_16,piVar16 + 0x23b); - piVar16[0x247] = 0; - fVar18 = cosf(local_5c); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar18) * -60.00000000; - fVar18 = sinf(local_5c); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - lVar1 = extraout_a0_17; - fVar18 = extraout_f12_53; - goto LAB_7f065f9c; - } - piVar16[0x225] = 0; - } - else { - piVar16[0x225] = 0; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - } -LAB_7f065f9c: - if (weapon_01 == 9) { - puVar3 = get_ptr_item_statistics(weapon_00); - if (((longlong)piVar16[0x227] < (longlong)*(short *)(puVar3 + 0x20)) || - (weapon_01 = check_special_attributes(weapon_00,0x200000), weapon_01 != 0)) { - weapon._4_4_ = get_ammo_in_hands_weapon(param_1); - weapon_01 = 10; - if (0 < weapon._4_4_) { - piVar16[0x225] = 10; - lVar1 = extraout_a0_19; - fVar18 = extraout_f12_55; - goto LAB_7f066004; - } - piVar16[0x225] = 0; - lVar1 = extraout_a0_19; - fVar18 = extraout_f12_55; - } - else { - piVar16[0x225] = 0; - lVar1 = extraout_a0_18; - fVar18 = extraout_f12_54; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - } -LAB_7f066004: - if (weapon_01 == 10) { - weapon_01 = 0xb; - if (piVar16[0x224] < 0x10) { - if (*(char *)((int)piVar16 + 0x87f) != '\0') { - pfVar11 = (float *)(piVar16 + 0x23b); - local_a8 = ((float)piVar16[0x224] * flt_80054290) / 16.00000000; - piVar16[0x24b] = 1; - if (param_1 == 0) { - proc_7F058688(0.00000000,lVar1,pfVar11); - uVar7 = extraout_a0_20; - } - else { - proc_7F058688(-0.00000000,lVar1,pfVar11); - uVar7 = extraout_a0_21; - } - proc_7F058570(local_a8,uVar7,afStack164); - proc_7F058068(afStack164,pfVar11); - fVar18 = sinf(0.00000000); - piVar16[0x247] = 0; - proc_7F0649AC(weapon); - fVar17 = cosf(local_a8); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar17) * fVar18; - fVar18 = sinf(local_a8); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - lVar1 = extraout_a0_22; - fVar18 = extraout_f12_56; - goto LAB_7f066128; - } - piVar16[0x225] = 0xb; - } - else { - piVar16[0x225] = 0xb; - } - piVar16[0x22c] = 0x11; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } -LAB_7f066128: - if (weapon_01 == 0xb) { - if (piVar16[0x223] == 0) { - if (pPlayer->unknown == 1) { - weapon_01 = piVar16[0x224]; - } - else { - uVar2 = proc_7F05CEBC(param_1); - lVar1 = extraout_a0_23; - fVar18 = extraout_f12_57; - if (uVar2 != 0) { - if (disable_player_pickups_flag != 0) { - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_23; - fVar18 = extraout_f12_57; - goto LAB_7f0661c4; - } - if (weapon < 0x3e) { - if (true) { - lVar1 = extraout_a0_23; - fVar18 = extraout_f12_57; - switch(weapon_00) { - case 0: - case 1: - case 2: - case 3: - case 0x16: - case 0x17: - case 0x1a: - case 0x1b: - case 0x1c: - case 0x1d: - case 0x1e: - case 0x1f: - case 0x20: - case 0x21: - case 0x22: - case 0x28: - case 0x2f: - case 0x30: - case 0x3c: - case 0x3d: - goto switchD_7f0661a4_caseD_0; - } - } - } - else { - if (weapon == 0x58) { - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_23; - fVar18 = extraout_f12_57; - goto LAB_7f0661c4; - } - } - play_sfx_a1(ptr_sfx_buf,0x32,NULL); - lVar1 = extraout_a0_24; - fVar18 = extraout_f12_58; - } -switchD_7f0661a4_caseD_0: - weapon_01 = piVar16[0x224]; - } - } - else { - weapon_01 = piVar16[0x224]; - } -LAB_7f0661c4: - if (weapon_01 < piVar16[0x22c]) { - piVar16[0x24b] = 1; - } - else { - weapon_01 = 0xc; - if (1 < piVar16[0x223]) { - piVar16[0x225] = 0xc; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - goto LAB_7f0662b8; - } - piVar16[0x24b] = 1; - } - pfVar11 = (float *)(piVar16 + 0x23b); - if (param_1 == 0) { - proc_7F058688(0.00000000,lVar1,pfVar11); - uVar7 = extraout_a0_25; - } - else { - proc_7F058688(-0.00000000,lVar1,pfVar11); - uVar7 = extraout_a0_26; - } - proc_7F058570(flt_8005438C,uVar7,afStack236); - proc_7F058068(afStack236,pfVar11); - fVar18 = sinf(0.00000000); - piVar16[0x247] = 0; - proc_7F0649AC(weapon); - fVar17 = cosf(flt_80054390); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar17) * fVar18; - fVar18 = sinf(flt_80054394); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - lVar1 = extraout_a0_27; - fVar18 = extraout_f12_59; - } -LAB_7f0662b8: - if (weapon_01 == 0xc) { - if (piVar16[0x223] == 0) { - proc_7F0649D8(param_1); - pPlayer->field_FC8 = 0; - weapon_01 = piVar16[0x224]; - lVar1 = extraout_a0_28; - fVar18 = extraout_f12_60; - } - else { - weapon_01 = piVar16[0x224]; - } - if (weapon_01 < 0x17) { - weapon_01 = get_ptr_weapon_model_header_line(weapon_00); - lVar1 = weapon; - fVar18 = extraout_f12_61; - if (((weapon_01 != 0) && - (weapon_01 = check_special_attributes(weapon_00,0x800), lVar1 = weapon, - fVar18 = extraout_f12_62, weapon_01 != 0)) && - (weapon_01 = check_special_attributes(weapon_00,0x2000), lVar1 = extraout_a0_29, - fVar18 = extraout_f12_63, weapon_01 == 0)) { - pfVar11 = (float *)(piVar16 + 0x23b); - local_138 = ((float)(0x17 - piVar16[0x224]) * flt_80054398) / 23.00000000; - piVar16[0x24b] = 1; - if (param_1 == 0) { - proc_7F058688(0.00000000,extraout_a0_29,pfVar11); - uVar7 = extraout_a0_30; - } - else { - proc_7F058688(-0.00000000,extraout_a0_29,pfVar11); - uVar7 = extraout_a0_31; - } - proc_7F058570(local_138,uVar7,afStack308); - proc_7F058068(afStack308,pfVar11); - fVar18 = sinf(0.00000000); - piVar16[0x247] = 0; - proc_7F0649AC(weapon); - fVar17 = cosf(local_138); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar17) * fVar18; - fVar18 = sinf(local_138); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - lVar1 = extraout_a0_32; - fVar18 = extraout_f12_64; - goto LAB_7f066424; - } - piVar16[0x225] = 0; - } - else { - piVar16[0x225] = 0; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - } -LAB_7f066424: - fVar17 = flt_8005439C; - if (weapon_01 == 0xe) { - weapon_01 = 0xf; - if (piVar16[0x224] < 0x10) { - if (*(char *)((int)piVar16 + 0x87f) != '\0') { - piVar16[0x24b] = 1; - local_13c = ((float)piVar16[0x224] * fVar17) / 16.00000000; - proc_7F058570(local_13c,lVar1,piVar16 + 0x23b); - piVar16[0x247] = 0; - fVar18 = cosf(local_13c); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar18) * -60.00000000; - fVar18 = sinf(local_13c); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - fVar18 = extraout_f12_65; - goto LAB_7f0664e0; - } - piVar16[0x225] = 0xf; - } - else { - piVar16[0x225] = 0xf; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } -LAB_7f0664e0: - if (weapon_01 == 0xf) { - if ((piVar16[0x223] == 0) || (uVar2 = proc_7F05CEBC(param_1), uVar2 == 0)) { - proc_7F05DA8C(param_1,piVar16[0x22b]); - weapon_01 = return_ammo_in_hand(param_1); - weapon = (longlong)weapon_01; - } - uVar2 = proc_7F05CEBC(param_1); - if (uVar2 == 0) { - piVar16[0x24b] = 1; - proc_7F058570(flt_800543A0,extraout_a0_33,piVar16 + 0x23b); - piVar16[0x247] = 0; - fVar18 = cosf(flt_800543A4); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar18) * -60.00000000; - fVar18 = sinf(flt_800543A8); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - fVar18 = extraout_f12_67; - } - else { - weapon_01 = 0x10; - piVar16[0x225] = 0x10; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - fVar18 = extraout_f12_66; - } - } - weapon_00 = (int)weapon; - if (weapon_01 == 0x10) { - if (piVar16[0x223] == 0) { - if (weapon < 0x21) { - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - proc_7F09B398(param_1); - } - proc_7F0649D8(param_1); - pPlayer->field_FC8 = 0; - weapon_01 = piVar16[0x224]; - fVar18 = extraout_f12_68; - } - else { - weapon_01 = piVar16[0x224]; - } - } - else { - weapon_01 = piVar16[0x224]; - } - if (weapon_01 < 0x17) { - weapon_01 = get_ptr_weapon_model_header_line(weapon_00); - fVar18 = extraout_f12_69; - if (((weapon_01 != 0) && - (weapon_01 = check_special_attributes(weapon_00,0x800), fVar18 = extraout_f12_70, - weapon_01 != 0)) && - (weapon_01 = check_special_attributes(weapon_00,0x2000), fVar17 = flt_800543AC, - fVar18 = extraout_f12_71, weapon_01 == 0)) { - piVar16[0x24b] = 1; - local_144 = ((float)(0x17 - piVar16[0x224]) * fVar17) / 23.00000000; - proc_7F058570(local_144,extraout_a0_34,piVar16 + 0x23b); - piVar16[0x247] = 0; - fVar18 = cosf(local_144); - *(float *)(piVar16 + 0x248) = (1.00000000 - fVar18) * -60.00000000; - fVar18 = sinf(local_144); - weapon_01 = piVar16[0x225]; - *(float *)(piVar16 + 0x249) = fVar18 * 15.00000000; - fVar18 = extraout_f12_72; - goto LAB_7f0666dc; - } - piVar16[0x225] = 0; - } - else { - piVar16[0x225] = 0; - } - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - } -LAB_7f0666dc: - if (((weapon_01 == 0x11) || (weapon_01 == 0x12)) || - (((weapon_01 == 0x13 || ((weapon_01 == 0x14 || (weapon_01 == 0x15)))) || (weapon_01 == 0x16)))) - { - local_148 = (float *)(float)piVar16[0x224]; - if (((weapon_01 == 0x11) || (weapon_01 == 0x14)) && (0xf < piVar16[0x224])) { - local_154 = PTR_DAT_80035e94; - local_150 = PTR_DAT_80035e98._0_2_; - uVar4 = get_random_value(); - play_sfx_a1(ptr_sfx_buf,*(short *)((int)&local_154 + (uVar4 % 3) * 2),NULL); - weapon_01 = 0x15; - if (piVar16[0x225] == 0x11) { - weapon_01 = 0x12; - piVar16[0x225] = 0x12; - fVar18 = extraout_f12_73; - } - else { - piVar16[0x225] = 0x15; - fVar18 = extraout_f12_73; - } - } - if (((weapon_01 != 0x13) && (weapon_01 != 0x16)) && (0x17 < piVar16[0x224])) { - *(undefined *)(piVar16 + 0x21f) = 1; - if ((weapon_01 == 0x11) || (weapon_01 == 0x12)) { - piVar16[0x225] = 0x13; - weapon_01 = 0x13; - } - else { - weapon_01 = 0x16; - piVar16[0x225] = 0x16; - } - } - if (((weapon_01 == 0x11) || (weapon_01 == 0x12)) || (weapon_01 == 0x13)) { - pdVar8 = DWORD_ARRAY_80034ca4; - } - else { - pdVar8 = flt_80034E0C; - } - lVar1 = proc_7F05C6FC((int)pdVar8,fVar18,local_148,(int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - fVar18 = extraout_f12_74; - } - else { - piVar16[0x24b] = 1; - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_74; - } - } - if (((weapon_01 == 0x1e) || (weapon_01 == 0x1f)) || ((weapon_01 == 0x20 || (weapon_01 == 0x21)))) - { - weapon._4_4_ = piVar16[0x224]; - if ((weapon_01 == 0x1e) || (weapon_01 == 0x1f)) { - if (pPlayer->field_2A38 == 0x11) { - local_15c = DWORD_ARRAY_80035778; - } - else { - local_15c = DWORD_ARRAY_800354a8; - } - if ((weapon_01 != 0x1f) && (0x1d < weapon._4_4_)) { - *(undefined *)(piVar16 + 0x21f) = 1; - piVar16[0x225] = 0x1f; - } - } - else { - if ((weapon_01 == 0x20) || (weapon_01 == 0x21)) { - if (pPlayer->field_2A38 == 0x11) { - local_15c = DWORD_ARRAY_80035904; - } - else { - local_15c = DWORD_ARRAY_80035610; - } - if ((weapon_01 != 0x21) && (0x1d < weapon._4_4_)) { - *(undefined *)(piVar16 + 0x21f) = 1; - piVar16[0x225] = 0x21; - } - } - } - lVar1 = proc_7F05C6FC((int)local_15c,fVar18,(float *)(float)weapon._4_4_,(int)(piVar16 + 0x23b)) - ; - if (lVar1 == 0) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - fVar18 = extraout_f12_75; - } - else { - piVar16[0x24b] = 1; - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_75; - } - } - if (weapon_01 == 0x1a) { - weapon_01 = 0; - if (piVar16[0x227] < 1) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - else { - lVar1 = proc_7F05C6FC((int)dword_80035124,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - *(undefined *)((int)piVar16 + 0x87e) = 0; - *(undefined *)(piVar16 + 0x21f) = 1; - piVar16[0x227] = piVar16[0x227] + -1; - piVar16[0x225] = 0x1b; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - else { - piVar16[0x24b] = 1; - } - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_76; - } - } - if (weapon_01 == 0x1b) { - lVar1 = proc_7F05C6FC((int)dword_800351FC,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - *(undefined *)((int)piVar16 + 0x87e) = 1; - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - fVar18 = extraout_f12_77; - } - else { - piVar16[0x24b] = 1; - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_77; - } - } - if (weapon_01 == 0x17) { - weapon_01 = 0; - if (piVar16[0x227] < 1) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - else { - if (piVar16[0x222] == 0) { - lVar1 = proc_7F05C6FC((int)flt_80034F74,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - lVar1 = proc_7F05C6FC((int)dword_8003504C,extraout_f12_78,NULL,(int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - piVar16[0x225] = 0x18; - fVar18 = extraout_f12_79; - } - else { - piVar16[0x24b] = 1; - fVar18 = extraout_f12_79; - } - } - else { - piVar16[0x24b] = 1; - fVar18 = extraout_f12_78; - } - } - else { - piVar16[0x225] = 0x18; - } - weapon_01 = piVar16[0x225]; - } - } - if (weapon_01 == 0x18) { - weapon_01 = 0; - if (piVar16[0x227] < 1) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - else { - lVar1 = proc_7F05C6FC((int)flt_80034F74,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - *(undefined *)((int)piVar16 + 0x87e) = 0; - *(undefined *)(piVar16 + 0x21f) = 1; - piVar16[0x227] = piVar16[0x227] + -1; - piVar16[0x225] = 0x19; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - else { - piVar16[0x24b] = 1; - } - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_80; - } - } - if (weapon_01 == 0x19) { - lVar1 = proc_7F05C6FC((int)dword_8003504C,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - *(undefined *)((int)piVar16 + 0x87e) = 1; - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - fVar18 = extraout_f12_81; - } - else { - piVar16[0x24b] = 1; - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_81; - } - } - if (weapon_01 == 0x1c) { - if (piVar16[0x227] < 1) { - weapon_01 = check_special_attributes(weapon_00,0x10); - if (weapon_01 == 0) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - fVar18 = extraout_f12_82; - goto LAB_7f066cb8; - } - weapon_01 = piVar16[0x224]; - fVar18 = extraout_f12_82; - } - else { - weapon_01 = piVar16[0x224]; - } - lVar1 = proc_7F05C6FC((int)DWORD_ARRAY_800352d4,fVar18,(float *)(float)weapon_01, - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - *(undefined *)((int)piVar16 + 0x87e) = 0; - *(undefined *)(piVar16 + 0x21f) = 1; - piVar16[0x227] = piVar16[0x227] + -1; - piVar16[0x225] = 0x1d; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - else { - piVar16[0x24b] = 1; - } - weapon_01 = piVar16[0x225]; - fVar18 = extraout_f12_83; - } -LAB_7f066cb8: - if (weapon_01 == 0x1d) { - lVar1 = proc_7F05C6FC((int)DWORD_ARRAY_800353ac,fVar18,(float *)(float)piVar16[0x224], - (int)(piVar16 + 0x23b)); - if (lVar1 == 0) { - *(undefined *)((int)piVar16 + 0x87e) = 1; - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - weapon_01 = 0; - } - else { - piVar16[0x24b] = 1; - weapon_01 = piVar16[0x225]; - } - } - if (weapon_01 == 0x24) { - if (weapon == 0x2e) { - if (piVar16[0x223] == 0) { - proc_7F066E64(); - } - weapon_01 = piVar16[0x222]; - } - else { - if (weapon == 0x2c) { - if (piVar16[0x223] == 0) { - proc_7F066F08(); - } - weapon_01 = piVar16[0x222]; - } - else { - if ((((weapon == 0x27) || (weapon == 0x37)) || (weapon == 0x26)) || - ((weapon == 0x32 || (weapon == 0x49)))) { - if ((piVar16[0x223] == 0) && (weapon_01 = proc_7F03C3FC(), weapon_01 != 0)) { - *(byte *)(*(int *)(weapon_01 + 4) + 2) = *(byte *)(*(int *)(weapon_01 + 4) + 2) | 0x40; - } - weapon_01 = piVar16[0x222]; - } - else { - weapon_01 = piVar16[0x222]; - } - } - } - if (weapon_01 != 0) { - piVar16[0x225] = 0; - piVar16[0x224] = 0; - piVar16[0x223] = 0; - } - } - return; -} - - - -void proc_7F066E64(void) - -{ - longlong lVar1; - byte *text; - - lVar1 = proc_7F08CF0C(); - if (lVar1 == 0) { - text = get_textptr_for_textID(0x98d9); - display_string_in_lower_left_corner((char *)text); - proc_7F05D690(); - } - else { - text = get_textptr_for_textID(0x98d8); - display_string_in_lower_left_corner((char *)text); - pPlayer->copiedgoldeneye = 1; - play_sfx_a1(ptr_sfx_buf,0xf5,NULL); - draw_item_in_hand_has_more_ammo(0,ITEM_GOLDENEYEKEY); - draw_item_in_hand_has_more_ammo(1,ITEM_UNARMED); - } - return; -} - - - -int get_keyanalyzer_flag(void) - -{ - return pPlayer->copiedgoldeneye; -} - - - -void proc_7F066F08(void) - -{ - int iVar1; - - add_ammo_to_inventory(10,2,0,1); - add_ammo_to_inventory(5,2,0,1); - add_item_to_inventory(ITEM_SNIPERRIFLE); - set_sound_effect_for_weapontype_collection(0x11); - display_text_for_weapon_in_lower_left_corner(0x11); - iVar1 = check_cur_player_ammo_amount_in_inventory(GsniperrifleZ_stats.ammotype); - give_cur_player_ammo(GsniperrifleZ_stats.ammotype,iVar1 + (int)GsniperrifleZ_stats.mag_size); - proc_7F08C61C(0x2c); - draw_item_in_hand_has_more_ammo(0,ITEM_SNIPERRIFLE); - draw_item_in_hand_has_more_ammo(1,ITEM_UNARMED); - return; -} - - - -f32 get_vertical_position_solo_watch_menu_main_page_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].watch_pos_x; -} - - - -f32 get_lateral_position_solo_watch_menu_main_page_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].watch_pos_y; -} - - - -f32 get_depth_on_solo_watch_menu_page_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].watch_pos_z; -} - - - -f32 get_zrotation_solo_watch_menu_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].x_rotation; -} - - - -f32 get_xrotation_solo_watch_menu_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].y_rotation; -} - - - -f32 get_45_degree_angle(void) - -{ - return 45.00000000; -} - - - -int get_ptr_first_title_line_item(int item) - -{ - byte *pbVar1; - - pbVar1 = get_textptr_for_textID((&gitem_structs)[item].upper_watch_text); - return (int)pbVar1; -} - - - -int get_ptr_second_title_line_item(int item) - -{ - byte *pbVar1; - - pbVar1 = get_textptr_for_textID((&gitem_structs)[item].lower_watch_text); - return (int)pbVar1; -} - - - -int get_ptr_short_watch_text_for_item(int item) - -{ - byte *pbVar1; - - pbVar1 = get_textptr_for_textID((&gitem_structs)[item].watch_equipment_text); - return (int)pbVar1; -} - - - -int get_ptr_long_watch_text_for_item(int item) - -{ - byte *pbVar1; - - pbVar1 = get_textptr_for_textID((&gitem_structs)[item].weapon_of_choice_text); - return (int)pbVar1; -} - - - -f32 get_45_degree_angle_0(void) - -{ - return 45.00000000; -} - - - -f32 get_horizontal_offset_on_solo_watch_menu_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].equip_watch_x; -} - - - -f32 get_vertical_offset_on_solo_watch_menu_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].equip_watch_y; -} - - - -f32 get_depth_offset_solo_watch_menu_inventory_page_for_item(int item) - -{ - return (f32)(&gitem_structs)[item].equip_watch_z; -} - - - -undefined4 proc_7F067174(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -void proc_7F0671A4(void) - -{ - ITEM_IDS item; - ITEM_IDS item_00; - undefined *puVar2; - undefined *puVar3; - longlong lVar1; - float fVar4; - float fVar5; - - item = get_item_in_hand(0); - item_00 = get_item_in_hand(1); - puVar2 = get_ptr_item_statistics(item); - puVar3 = get_ptr_item_statistics(item_00); - if ((item != ITEM_UNARMED) && (lVar1 = get_hands_firing_status(0), lVar1 != 0)) { - *(float *)&pPlayer->noise = (float)pPlayer->noise + *(float *)(puVar2 + 0x5c); - if (*(float *)(puVar2 + 0x58) < (float)pPlayer->noise) { - *(float *)&pPlayer->noise = *(float *)(puVar2 + 0x58); - } - } - if ((item_00 != ITEM_UNARMED) && (lVar1 = get_hands_firing_status(1), lVar1 != 0)) { - *(float *)&pPlayer->field_E28 = (float)pPlayer->field_E28 + *(float *)(puVar3 + 0x5c); - if (*(float *)(puVar3 + 0x58) < (float)pPlayer->field_E28) { - *(float *)&pPlayer->field_E28 = *(float *)(puVar3 + 0x58); - } - } - fVar5 = (*(float *)(puVar2 + 0x5c) * global_timer_delta) / - (*(float *)(puVar2 + 0x60) * 60.00000000); - fVar4 = (((float)pPlayer->noise - *(float *)(puVar2 + 0x54)) * global_timer_delta) / - (*(float *)(puVar2 + 100) * 60.00000000); - if (fVar4 <= fVar5) { - fVar4 = fVar5; - } - *(float *)&pPlayer->noise = (float)pPlayer->noise - fVar4; - if ((float)pPlayer->noise < *(float *)(puVar2 + 0x54)) { - *(float *)&pPlayer->noise = *(float *)(puVar2 + 0x54); - } - fVar5 = (*(float *)(puVar3 + 0x5c) * global_timer_delta) / - (*(float *)(puVar3 + 0x60) * 60.00000000); - fVar4 = (((float)pPlayer->field_E28 - *(float *)(puVar3 + 0x54)) * global_timer_delta) / - (*(float *)(puVar3 + 100) * 60.00000000); - if (fVar4 <= fVar5) { - fVar4 = fVar5; - } - *(float *)&pPlayer->field_E28 = (float)pPlayer->field_E28 - fVar4; - if ((float)pPlayer->field_E28 < *(float *)(puVar3 + 0x54)) { - *(float *)&pPlayer->field_E28 = *(float *)(puVar3 + 0x54); - } - return; -} - - - -ulonglong proc_7F0673B4(int param_1) - -{ - bool bVar1; - ITEM_IDS weapon; - int iVar2; - - weapon = get_item_in_hand(param_1); - iVar2 = get_ammo_type_for_weapon(weapon); - bVar1 = iVar2 == 0; - if (!bVar1) { - bVar1 = 0 < (&pPlayer->right_weapon_ammo_in_magazine)[param_1 * 0xea]; - } - return (ulonglong)bVar1; -} - - - -void proc_7F067420(int param_1) - -{ - Player *pPVar1; - uint uVar2; - int iVar4; - ITEM_IDS IVar5; - ITEM_IDS IVar6; - ulonglong uVar3; - byte abStack24 [4]; - uint uStack20; - ITEM_IDS IStack16; - ITEM_IDS IStack12; - int aiStack8 [2]; - - aiStack8[0] = DAT_80035e9c; - aiStack8[1] = DAT_80035ea0; - pPlayer->field_FD0 = pPlayer->field_FCC; - pPlayer->field_FCC = param_1; - iVar4 = pPlayer->field_FCC; - if ((iVar4 == 0) && (pPlayer->field_FD0 != 0)) { - pPlayer->field_FC8 = 1; - iVar4 = pPlayer->field_FCC; - } - if (iVar4 == 0) { - pPlayer->field_FD4 = 0; - } - else { - IStack12 = get_item_in_hand(0); - IStack16 = get_item_in_hand(1); - pPlayer->field_FD4 = pPlayer->field_FD4 + clock_timer; - if ((IStack12 == ITEM_UNARMED) || (IStack16 == ITEM_UNARMED)) { - IVar5 = get_item_in_hand(pPlayer->field_FD8); - if ((IVar5 == ITEM_UNARMED) && - (IVar5 = get_item_in_hand(1 - pPlayer->field_FD8), IVar5 != ITEM_UNARMED)) { - pPlayer->field_FD8 = 1 - pPlayer->field_FD8; - } - pPVar1 = pPlayer; - aiStack8[pPlayer->field_FD8] = 1; - aiStack8[pPVar1->field_FD8 * 0x3fffffff + 1] = 0; - } - else { - iVar4 = check_special_attributes(IStack12,0x80); - if ((iVar4 == 0) || - (iVar4 = check_special_attributes(IStack16,0x80), pPVar1 = pPlayer, iVar4 == 0)) { - iVar4 = check_special_attributes(IStack12,0x80); - if ((iVar4 == 0) && - (iVar4 = check_special_attributes(IStack16,0x80), pPVar1 = pPlayer, iVar4 == 0)) { - if (pPlayer->field_FD4 < 0x1f) { - if ((pPlayer->field_FD0 == 0) && - ((uVar3 = proc_7F0673B4(1 - pPlayer->field_FD8), uVar3 != 0 || - (uVar3 = proc_7F0673B4(pPlayer->field_FD8), uVar3 == 0)))) { - pPlayer->field_FD8 = 1 - pPlayer->field_FD8; - } - pPVar1 = pPlayer; - aiStack8[pPlayer->field_FD8] = 1; - aiStack8[pPVar1->field_FD8 * 0x3fffffff + 1] = 0; - } - else { - aiStack8[pPlayer->field_FD8] = 1; - uVar3 = proc_7F0673B4(1 - pPVar1->field_FD8); - if ((uVar3 != 0) || (*(int *)((int)pPlayer + pPlayer->field_FD8 * -0x3a8 + 0xc28) != 0)) - { - aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 1; - } - } - } - else { - pPVar1 = pPlayer; - if (pPlayer->field_FD4 < 0x1f) { - iVar4 = check_special_attributes(IStack12,0x80); - uStack20 = (uint)(iVar4 == 0); - uVar3 = proc_7F0673B4((uint)(iVar4 == 0)); - uVar2 = uStack20; - if ((uVar3 == 0) && (iVar4 = 1 - uStack20, (&pPlayer->field_880)[uStack20 * 0xea] == 0)) - { - uVar3 = proc_7F0673B4(iVar4); - if ((uVar3 == 0) && (*(int *)((int)pPlayer + uVar2 * -0x3a8 + 0xc28) == 0)) { - pPlayer->field_FD8 = 1 - pPlayer->field_FD8; - } - else { - pPlayer->field_FD8 = iVar4; - } - } - else { - pPlayer->field_FD8 = uStack20; - } - pPVar1 = pPlayer; - aiStack8[pPlayer->field_FD8] = 1; - aiStack8[pPVar1->field_FD8 * 0x3fffffff + 1] = 0; - } - else { - aiStack8[pPlayer->field_FD8] = 1; - uVar3 = proc_7F0673B4(1 - pPVar1->field_FD8); - if ((uVar3 != 0) || (*(int *)((int)pPlayer + pPlayer->field_FD8 * -0x3a8 + 0xc28) != 0)) - { - aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 1; - } - } - } - } - else { - if (pPlayer->field_FD4 < 0x15) { - if ((pPlayer->field_FD0 == 0) && - ((uVar3 = proc_7F0673B4(1 - pPlayer->field_FD8), uVar3 != 0 || - (uVar3 = proc_7F0673B4(pPlayer->field_FD8), uVar3 == 0)))) { - pPlayer->field_FD8 = 1 - pPlayer->field_FD8; - } - pPVar1 = pPlayer; - aiStack8[pPlayer->field_FD8] = 1; - aiStack8[pPVar1->field_FD8 * 0x3fffffff + 1] = 0; - } - else { - aiStack8[pPlayer->field_FD8] = 1; - uVar3 = proc_7F0673B4(1 - pPVar1->field_FD8); - if ((uVar3 != 0) || (*(int *)((int)pPlayer + pPlayer->field_FD8 * -0x3a8 + 0xc28) != 0)) { - aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 1; - } - } - } - } - } - handle_weapon_id_values_possibly_1st_person_animation(0,aiStack8[0]); - handle_weapon_id_values_possibly_1st_person_animation(1,aiStack8[1]); - used_to_load_1st_person_model_on_demand(0); - used_to_load_1st_person_model_on_demand(1); - proc_7F0671A4(); - if (pPlayer->field_FE0 == 0) { - iVar4 = get_curplayer_positiondata(); - proc_7F04009C(iVar4,abStack24); - proc_7F040310((byte *)&pPlayer->field_FDC,abStack24); - } - else { - iVar4 = get_curplayer_positiondata(); - proc_7F04009C(iVar4,(byte *)&pPlayer->field_FDC); - pPlayer->field_FE0 = 0; - } - IVar5 = get_item_in_hand(0); - IVar6 = get_item_in_hand(1); - proc_7F08D9EC(IVar5,IVar6); - pPVar1 = pPlayer; - if (-1 < pPlayer->field_1270) { - pPlayer->field_1270 = pPlayer->field_1270 + clock_timer; - if (pPlayer->field_1270 < 300) { - if (((pPVar1->field_A44 == 0) || (uVar3 = music_related_26(pPVar1->field_A44), uVar3 == 0)) && - (iVar4 = get_controls_locked_flag(), iVar4 == 0)) { - play_sfx_a1(ptr_sfx_buf,0xf6,(sfxdata *)&pPVar1->field_A44); - } - } - else { - pPlayer->field_1270 = -1; - if ((pPVar1->field_A44 != 0) && (uVar3 = music_related_26(pPVar1->field_A44), uVar3 != 0)) { - music_related_28(pPVar1->field_A44); - } - } - } - return; -} - - - -void proc_7F067AA4(int param_1) - -{ - pPlayer->field_FE4 = param_1; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F067AB4(void) - -{ - float *in_a0_lo; - float in_f0; - - proc_7F05DCB8(0); - *(float *)&pPlayer->field_A38 = in_f0 + *in_a0_lo; - *(float *)&pPlayer->field_A3C = in_a0_lo[1]; - *(float *)&pPlayer->field_A40 = in_a0_lo[2]; - proc_7F05DCB8(1); - *(float *)&pPlayer->field_DE0 = in_f0 + *in_a0_lo; - *(float *)&pPlayer->field_DE4 = in_a0_lo[1]; - *(float *)&pPlayer->field_DE8 = in_a0_lo[2]; - return; -} - - - -void proc_7F067B4C(undefined4 *param_1) - -{ - int iVar1; - - iVar1 = *param_1; - pPlayer->left_item_related1 = iVar1; - pPlayer->field_FB4 = iVar1; - iVar1 = param_1[1]; - pPlayer->left_item_related2 = iVar1; - pPlayer->field_FB8 = iVar1; - iVar1 = param_1[2]; - pPlayer->left_item_related3 = iVar1; - pPlayer->field_FBC = iVar1; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void caclulate_gun_crosshair_position_rotation(void) - -{ - int iVar1; - float in_a2_lo; - float in_a3_lo; - f32 fVar2; - float fVar3; - float fVar4; - float in_f12; - float extraout_f12; - float in_f14; - float afStack24 [3]; - f32 fStack12; - f32 fStack8; - int iStack4; - - fStack8 = getPlayer_c_screenwidth(); - fStack12 = getPlayer_c_screenheight(); - if (in_a2_lo != (float)pPlayer->field_FF8) { - pPlayer->field_FF0 = - (pPlayer->field_FF0 * (1.00000000 - (float)pPlayer->field_FF8)) / (1.00000000 - in_a2_lo); - pPlayer->field_FF4 = - (pPlayer->field_FF4 * (1.00000000 - (float)pPlayer->field_FF8)) / (1.00000000 - in_a2_lo); - *(float *)&pPlayer->field_FF8 = in_a2_lo; - } - if (in_a3_lo != (float)pPlayer->field_100C) { - pPlayer->field_1004 = - (pPlayer->field_1004 * (1.00000000 - (float)pPlayer->field_100C)) / (1.00000000 - in_a3_lo) - ; - pPlayer->field_1008 = - (pPlayer->field_1008 * (1.00000000 - (float)pPlayer->field_100C)) / (1.00000000 - in_a3_lo) - ; - *(float *)&pPlayer->field_100C = in_a3_lo; - } - iVar1 = 0; - if (0 < clock_timer) { - do { - iVar1 += 1; - pPlayer->field_FF0 = pPlayer->field_FF0 * in_a2_lo + in_f12; - pPlayer->field_FF4 = pPlayer->field_FF4 * in_a2_lo + in_f14; - } while (iVar1 < clock_timer); - } - fVar4 = (float)fStack8 * 0.50000000; - pPlayer->field_FE8 = - pPlayer->field_FF0 * (1.00000000 - in_a2_lo) * (float)fStack8 * 0.50000000 + fVar4; - pPlayer->field_FEC = - pPlayer->field_FF4 * (1.00000000 - in_a2_lo) * (float)fStack12 * 0.50000000 + - (float)fStack12 * 0.50000000; - if (pPlayer->field_FE8 < 3.00000000) { - pPlayer->field_FE8 = 3.00000000; - } - else { - if (pPlayer->field_FE8 <= (float)fStack8 - 4.00000000) { - fVar3 = pPlayer->field_FEC; - goto LAB_7f067db8; - } - pPlayer->field_FE8 = (float)fStack8 - 4.00000000; - } - fVar3 = pPlayer->field_FEC; -LAB_7f067db8: - if (fVar3 < 3.00000000) { - pPlayer->field_FEC = 3.00000000; - } - else { - if ((float)fStack12 - 4.00000000 < fVar3) { - pPlayer->field_FEC = (float)fStack12 - 4.00000000; - } - } - iStack4 = 0; - fVar2 = getPlayer_c_screenleft(); - pPlayer->field_FE8 = pPlayer->field_FE8 + (float)fVar2; - fVar2 = getPlayer_c_screentop(); - pPlayer->field_FEC = pPlayer->field_FEC + (float)fVar2; - iVar1 = iStack4; - if (0 < clock_timer) { - do { - iVar1 += 1; - pPlayer->field_1004 = pPlayer->field_1004 * in_a3_lo + in_f12; - pPlayer->field_1008 = pPlayer->field_1008 * in_a3_lo + in_f14; - } while (iVar1 < clock_timer); - } - pPlayer->field_FFC = - pPlayer->field_1004 * (1.00000000 - in_a3_lo) * (float)fStack8 * 0.50000000 + fVar4; - pPlayer->field_1000 = - pPlayer->field_1008 * (1.00000000 - in_a3_lo) * (float)fStack12 * 0.50000000 + - (float)fStack12 * 0.50000000; - fVar2 = getPlayer_c_screenleft(); - pPlayer->field_FFC = pPlayer->field_FFC + (float)fVar2; - fVar2 = getPlayer_c_screentop(); - pPlayer->field_1000 = pPlayer->field_1000 + (float)fVar2; - proc_7F077EEC(&pPlayer->field_FFC,afStack24,extraout_f12); - proc_7F067AB4(); - return; -} - - - -void proc_7F067F58(undefined4 param_1,undefined4 param_2) - -{ - ITEM_IDS item; - - item = get_item_in_hand(0); - get_ptr_item_statistics(item); - caclulate_gun_crosshair_position_rotation(); - return; -} - - - -void proc_7F067FBC(undefined4 param_1,undefined4 param_2) - -{ - ITEM_IDS item; - - item = get_item_in_hand(0); - get_ptr_item_statistics(item); - caclulate_gun_crosshair_position_rotation(); - return; -} - - - -void proc_7F068008(undefined4 *param_1,undefined4 *param_2) - -{ - *(float *)param_1 = pPlayer->field_FE8; - *(float *)param_2 = pPlayer->field_FEC; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F06802C(void) - -{ - f32 fVar1; - f32 fVar2; - float fVar3; - float extraout_f12; - float afStack12 [3]; - - fVar1 = getPlayer_c_screenleft(); - fVar2 = getPlayer_c_screenwidth(); - fVar3 = (float)fVar2 * 0.50000000 + (float)fVar1; - pPlayer->field_FE8 = fVar3; - pPlayer->field_FFC = fVar3; - fVar1 = getPlayer_c_screentop(); - fVar2 = getPlayer_c_screenheight(); - fVar3 = (float)fVar2 * 0.50000000 + (float)fVar1; - pPlayer->field_FEC = fVar3; - pPlayer->field_1000 = fVar3; - proc_7F077EEC(&pPlayer->field_FFC,afStack12,extraout_f12); - proc_7F067AB4(); - return; -} - - - -void proc_7F0680D4(float *param_1) - -{ - float fStack12; - float fStack8; - float fStack4; - - pPlayer->field_1010 = *param_1; - *(float *)&pPlayer->holds_neg_pi = param_1[1]; - pPlayer->field_1018 = param_1[2]; - proc_7F058714(param_1,(float *)&pPlayer->field_101C); - fStack12 = (float)pPlayer->field_103C * 1000.00000000; - fStack8 = (float)pPlayer->field_1040 * 1000.00000000; - fStack4 = (float)pPlayer->field_1044 * 1000.00000000; - proc_7F077FF4(&fStack12,&pPlayer->field_FE8); - pPlayer->field_FFC = pPlayer->field_FE8; - pPlayer->field_1000 = pPlayer->field_FEC; - proc_7F067AB4(); - return; -} - - - -void proc_7F068190(undefined4 *param_1,float *param_2) - -{ - float in_f12; - - *param_1 = 0; - param_1[1] = 0; - param_1[2] = 0; - proc_7F077EEC(&pPlayer->field_FE8,param_2,in_f12); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F0681CC(void) - -{ - ITEM_IDS item; - undefined *puVar1; - int item_00; - u32 uVar2; - u32 uVar3; - undefined4 *in_a0_lo; - float *in_a1_lo; - int hand; - float in_f0; - f32 fVar4; - f32 fVar5; - float fVar6; - float extraout_f12; - float fVar7; - float fStack16; - float fStack8; - float fStack4; - - item = get_item_in_hand(hand); - puVar1 = get_ptr_item_statistics(item); - fStack16 = *(float *)(puVar1 + 0x30); - item_00 = return_ammo_in_hand(hand); - item_00 = check_special_attributes(item_00,0x1000); - if ((item_00 != 0) && ((&pPlayer->field_C08)[hand * 0xea] == 1)) { - fStack16 = fStack16 * 0.25000000; - } - video_related_23(); - in_f0 = (fStack16 * 120.00000000) / in_f0; - uVar2 = get_random_value(); - uVar3 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar7 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar4 = getPlayer_c_screenwidth(); - fVar5 = getPlayer_c_perspaspect(); - fStack8 = (fVar7 * 0.00000000 * (fVar6 * 0.00000000 - 0.50000000) * in_f0 * (float)fVar4 * - flt_800543B0) / ((float)fVar5 * 320.00000000) + pPlayer->field_FE8; - uVar2 = get_random_value(); - uVar3 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar7 = (float)uVar3; - if ((int)uVar3 < 0) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar4 = getPlayer_c_screenheight(); - fStack4 = ((float)fVar4 * fVar7 * 0.00000000 * (fVar6 * 0.00000000 - 0.50000000) * in_f0) / - 240.00000000 + pPlayer->field_FEC; - *in_a0_lo = 0; - in_a0_lo[1] = 0; - in_a0_lo[2] = 0; - proc_7F077EEC(&fStack8,in_a1_lo,extraout_f12); - return; -} - - - -undefined * proc_7F068420(undefined4 param_1,undefined4 *param_2) - -{ - undefined *puVar1; - undefined4 uVar2; - - puVar1 = &DAT_80075dc8; - if (DAT_80075e64 != 0) { - puVar1 = &DAT_80075e68; - while ((puVar1 < &DAT_80076a48 && (*(int *)(puVar1 + 0x9c) != 0))) { - puVar1 = puVar1 + 0xa0; - } - } - if (puVar1 < &DAT_80076a48) { - *(undefined4 *)(puVar1 + 0x9c) = param_1; - *(undefined4 *)(puVar1 + 4) = param_2[0xc]; - *(undefined4 *)(puVar1 + 8) = param_2[0xd]; - *(undefined4 *)(puVar1 + 0xc) = param_2[0xe]; - *(undefined4 *)(puVar1 + 0x1c) = *param_2; - *(undefined4 *)(puVar1 + 0x20) = param_2[1]; - uVar2 = param_2[2]; - *(undefined4 *)(puVar1 + 0x28) = 0; - *(undefined4 *)(puVar1 + 0x24) = uVar2; - *(undefined4 *)(puVar1 + 0x2c) = param_2[4]; - *(undefined4 *)(puVar1 + 0x30) = param_2[5]; - uVar2 = param_2[6]; - *(undefined4 *)(puVar1 + 0x38) = 0; - *(undefined4 *)(puVar1 + 0x34) = uVar2; - *(undefined4 *)(puVar1 + 0x3c) = param_2[8]; - *(undefined4 *)(puVar1 + 0x40) = param_2[9]; - uVar2 = param_2[10]; - *(undefined4 *)(puVar1 + 0x48) = 0; - *(undefined4 *)(puVar1 + 0x4c) = 0; - *(undefined4 *)(puVar1 + 0x50) = 0; - *(undefined4 *)(puVar1 + 0x54) = 0; - *(undefined4 *)(puVar1 + 0x58) = 0x3f800000; - *(undefined4 *)(puVar1 + 0x44) = uVar2; - return puVar1; - } - return NULL; -} - - - -void proc_7F068508(int param_1,undefined4 param_2) - -{ - float *pfVar1; - undefined *puVar3; - ulonglong uVar2; - undefined4 *puVar4; - u32 uVar5; - u32 uVar6; - float fVar7; - float fVar8; - float fVar9; - float fStack108; - float fStack104; - float fStack100; - float fStack92; - float fStack88; - float fStack84; - int iStack80; - ITEM_IDS IStack72; - float afStack68 [17]; - - IStack72 = get_item_in_hand(param_1); - puVar3 = get_ptr_item_statistics(IStack72); - iStack80 = *(int *)(puVar3 + 0x28); - if ((iStack80 != 0) && (uVar2 = get_num_players(), (longlong)uVar2 < 2)) { - if (*(int *)pPlayer->copy_of_body_obj_header[param_1 * 8 + 2] == 0) { - proc_7F058020(&pPlayer->field_AD8 + param_1 * 0xea,afStack68); - } - else { - pfVar1 = *(float **)(*(int *)pPlayer->copy_of_body_obj_header[param_1 * 8 + 2] + 4); - fStack92 = *pfVar1 * flt_800543B4; - fStack88 = pfVar1[1] * flt_800543B4; - fStack84 = pfVar1[2] * flt_800543B4; - init_something_copy_posdata_to_it((int *)&fStack92,(int *)afStack68); - proc_7F058068((float *)(&pPlayer->field_AD8 + param_1 * 0xea),afStack68); - } - puVar4 = (undefined4 *)proc_7F068420(iStack80,afStack68); - if (puVar4 != NULL) { - fStack108 = DAT_80035ea4; - fStack100 = (float)DAT_80035eac; - fStack104 = (float)DAT_80035ea8; - *puVar4 = param_2; - if ((((IStack72 == ITEM_WPPK) || (IStack72 == ITEM_WPPKSIL)) || (IStack72 == ITEM_TT33)) || - ((IStack72 == ITEM_SILVERWPPK || (IStack72 == ITEM_GOLDWPPK)))) { - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(puVar4 + 4) = -(fVar8 * 0.00000000 * flt_800543B8 * 0.06250000 + flt_800543B8); - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - puVar4[6] = 0; - *(float *)(puVar4 + 5) = fVar8 * 0.00000000 * 2.50000000 * 0.06250000 + 2.50000000; - proc_7F0583D8((float *)(&pPlayer->field_AD8 + param_1 * 0xea),(float *)(puVar4 + 4)); - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - fStack108 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543BC * 0.06250000 - - flt_800543C0; - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - fStack104 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543C4 * 0.06250000 - - flt_800543C8; - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - fStack100 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543CC * 0.06250000 - - flt_800543D0; - proc_7F058714(&fStack108,(float *)(puVar4 + 0x17)); - uVar5 = get_random_value(); - uVar6 = get_random_value(); - fVar8 = (float)puVar4[5]; - if (&UNK_00158679 + ((int)((uVar5 >> 0x18) * 0x158679) >> 10) == NULL) { - trap(0x1c00); - } - fVar9 = (float)(uVar6 % (uint)(&UNK_00158679 + ((int)((uVar5 >> 0x18) * 0x158679) >> 10))); - if (false) { - fVar9 = fVar9 + 4294967296.00000000; - } - fVar9 = fVar9 / flt_800543D4; - fVar7 = fVar8 - fVar9 * expended_shell_initial_gravity_modifier_pistol; - *(float *)(puVar4 + 5) = fVar7; - *(float *)(puVar4 + 2) = (float)puVar4[2] + fVar9 * (fVar8 + fVar7) * 0.50000000; - *(float *)(puVar4 + 1) = (float)puVar4[1] + fVar9 * (float)puVar4[4]; - *(float *)(puVar4 + 3) = (float)puVar4[3] + fVar9 * (float)puVar4[6]; - if (0 < clock_timer) { - *(float *)(puVar4 + 4) = - (float)puVar4[4] + - ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c2] - - (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d2]) / global_timer_delta; - *(float *)(puVar4 + 5) = - (float)puVar4[5] + - ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c3] - - (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d3]) / global_timer_delta; - *(float *)(puVar4 + 6) = - (float)puVar4[6] + - ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c4] - - (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d4]) / global_timer_delta; - } - } - else { - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(puVar4 + 4) = -(fVar8 * 0.00000000 * flt_800543DC * 0.12500000 + flt_800543DC); - uVar5 = get_random_value(); - fVar8 = flt_800543E0; - fVar9 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar9 = fVar9 + 4294967296.00000000; - } - fVar9 = fVar9 * 0.00000000 * flt_800543E0; - puVar4[6] = 0; - *(float *)(puVar4 + 5) = fVar9 * 0.12500000 + fVar8; - proc_7F0583D8((float *)(&pPlayer->field_AD8 + param_1 * 0xea),(float *)(puVar4 + 4)); - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - fStack108 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543E4 * 0.06250000 - - flt_800543E8; - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - fStack104 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543EC * 0.06250000 - - flt_800543F0; - uVar5 = get_random_value(); - fVar8 = (float)uVar5; - if ((int)uVar5 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - fStack100 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543F4 * 0.06250000 - - flt_800543F8; - proc_7F058714(&fStack108,(float *)(puVar4 + 0x17)); - uVar5 = get_random_value(); - uVar6 = get_random_value(); - fVar8 = (float)puVar4[5]; - if (&UNK_00158679 + ((int)((uVar5 >> 0x18) * 0x158679) >> 10) == NULL) { - trap(0x1c00); - } - fVar9 = (float)(uVar6 % (uint)(&UNK_00158679 + ((int)((uVar5 >> 0x18) * 0x158679) >> 10))); - if (false) { - fVar9 = fVar9 + 4294967296.00000000; - } - fVar9 = fVar9 / flt_800543FC; - fVar7 = fVar8 - fVar9 * expended_shell_initial_gravity_modifier_non_pistol; - *(float *)(puVar4 + 5) = fVar7; - *(float *)(puVar4 + 2) = (float)puVar4[2] + fVar9 * (fVar8 + fVar7) * 0.50000000; - *(float *)(puVar4 + 1) = (float)puVar4[1] + fVar9 * (float)puVar4[4]; - *(float *)(puVar4 + 3) = (float)puVar4[3] + fVar9 * (float)puVar4[6]; - if (0 < clock_timer) { - *(float *)(puVar4 + 4) = - (float)puVar4[4] + - ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c2] - - (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d2]) / global_timer_delta; - *(float *)(puVar4 + 5) = - (float)puVar4[5] + - ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c3] - - (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d3]) / global_timer_delta; - *(float *)(puVar4 + 6) = - (float)puVar4[6] + - ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c4] - - (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d4]) / global_timer_delta; - } - } - } - } - return; -} - - - -void proc_7F068D20(float *param_1) - -{ - float fVar1; - int iVar2; - float fVar3; - - fVar1 = global_timer_delta; - fVar3 = param_1[5] - global_timer_delta * expended_shell_initial_gravity_modifier_all; - param_1[2] = param_1[2] + global_timer_delta * 0.50000000 * (param_1[5] + fVar3); - if (param_1[2] < *param_1) { - if (((DAT_80075db0 == 0) && (pPlayer->when_detonating_mines_is_0 != 2)) && - (pPlayer->field_C3C != 2)) { - play_sfx_a1(ptr_sfx_buf,0x7a,(sfxdata *)&DAT_80075db0); - } - param_1[0x27] = 0.00000000; - } - else { - param_1[5] = fVar3; - iVar2 = 0; - param_1[1] = param_1[1] + fVar1 * param_1[4]; - param_1[3] = param_1[3] + fVar1 * param_1[6]; - if (0 < clock_timer) { - do { - proc_7F058098(param_1 + 0x17,param_1 + 7); - iVar2 += 1; - } while (iVar2 < clock_timer); - } - } - return; -} - - - -void proc_7F068E6C(void) - -{ - float fVar1; - float *pfVar2; - - fVar1 = DAT_80075e64; - pfVar2 = (float *)&DAT_80075dc8; - while( true ) { - if (fVar1 != 0.00000000) { - proc_7F068D20(pfVar2); - } - if ((float *)0x80076a47 < pfVar2 + 0x28) break; - fVar1 = pfVar2[0x4f]; - pfVar2 = pfVar2 + 0x28; - } - return; -} - - - -void proc_7F068EC4(int param_1,undefined4 *param_2) - -{ - bool bVar1; - float *pfVar2; - int iVar3; - object_header *poVar4; - undefined8 extraout_a0; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - undefined4 *puVar5; - undefined4 *puVar6; - undefined4 *puVar7; - undefined4 *puVar8; - float afStack172 [16]; - undefined4 uStack108; - undefined4 uStack104; - undefined4 uStack96; - object_header *poStack92; - undefined4 uStack60; - uint uStack56; - undefined auStack44 [12]; - object_header *poStack32; - object_header *poStack12; - object_header *poStack8; - undefined4 uStack4; - - uStack4 = *param_2; - poStack12 = *(object_header **)(param_1 + 0x9c); - poStack8 = poStack12; - proc_7F0BD714((int)poStack12->num_object_grps << 6); - puVar7 = &DAT_80035eb0; - puVar5 = &uStack108; - do { - puVar8 = puVar7 + 3; - puVar6 = puVar5 + 3; - *puVar5 = *puVar7; - puVar5[1] = puVar7[1]; - puVar5[2] = puVar7[2]; - puVar7 = puVar8; - puVar5 = puVar6; - } while (puVar8 != (undefined4 *)0x80035eec); - bVar1 = true; - *puVar6 = uRam80035eec; - set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack8); - proc_7F075F68((int)auStack44,(ushort **)poStack8,0); - poStack32 = poStack12; - proc_7F058020((undefined4 *)(param_1 + 0x1c),afStack172); - matrix_multiply_A1_by_F12(flt_80054408,extraout_a0,afStack172); - proc_7F058998((undefined4 *)(param_1 + 4),(int)afStack172); - pfVar2 = (float *)proc_7F0783C4(); - proc_7F05818C(pfVar2,afStack172,(int)poStack32); - iVar3 = 0; - poVar4 = poStack32; - do { - iVar3 += 4; - if (flt_80054410 < poVar4[1].anonymous_4) { - bVar1 = false; - } - else { - if (poVar4[1].anonymous_4 < flt_8005440C) { - bVar1 = false; - } - } - poVar4 = (object_header *)&poVar4->ptr_archetype; - } while (iVar3 != 0xc); - if (bVar1) { - uStack104 = 0; - uStack60 = 4; - uStack96 = uStack4; - poStack92 = poStack12; - uStack56 = (uint)(byte)pPlayer->field_FDF | (uint)(byte)pPlayer->field_FDC << 0x18 | - (uint)(byte)pPlayer->field_FDD << 0x10 | (uint)(byte)pPlayer->field_FDE << 8; - subdraw((int)&uStack108,(uint)auStack44,extraout_a2_lo,extraout_a3_lo); - *param_2 = uStack96; - proc_7F08BD48((undefined4 *)poStack12,(int)poStack8->num_object_grps); - } - return; -} - - - -void proc_7F06908C(undefined4 *param_1) - -{ - int iVar1; - undefined *puVar2; - - iVar1 = DAT_80075e64; - puVar2 = &DAT_80075dc8; - while( true ) { - if (iVar1 != 0) { - proc_7F068EC4((int)puVar2,param_1); - } - if ((undefined *)0x80076a47 < puVar2 + 0xa0) break; - iVar1 = *(int *)(puVar2 + 0x13c); - puVar2 = puVar2 + 0xa0; - } - return; -} - - - -void set_unset_ammo_on_screen_setting(int flags,int isset) - -{ - if (isset != 0) { - pPlayer->somekinda_flags = pPlayer->somekinda_flags & ~flags; - return; - } - pPlayer->somekinda_flags = pPlayer->somekinda_flags | flags; - return; -} - - - -void give_cur_player_ammo(AMMOTYPES type,int amount) - -{ - ITEM_IDS weapon; - AMMOTYPES AVar1; - int iVar2; - undefined *puVar3; - - weapon = get_item_in_hand(0); - AVar1 = get_ammo_type_for_weapon(weapon); - if ((AVar1 == type) && (iVar2 = check_special_attributes(weapon,0x200000), iVar2 != 0)) { - pPlayer->right_weapon_ammo_in_magazine = pPlayer->right_weapon_ammo_in_magazine + amount; - puVar3 = get_ptr_item_statistics(weapon); - if ((longlong)*(short *)(puVar3 + 0x20) < (longlong)pPlayer->right_weapon_ammo_in_magazine) { - puVar3 = get_ptr_item_statistics(weapon); - pPlayer->right_weapon_ammo_in_magazine = (int)*(short *)(puVar3 + 0x20); - } - pPlayer->ammoheldarr[type] = 0; - } - else { - if ((int)(&DAT_80035ef0)[type * 3] < amount) { - pPlayer->ammoheldarr[type] = (&DAT_80035ef0)[type * 3]; - } - else { - pPlayer->ammoheldarr[type] = amount; - } - } - return; -} - - - -int check_cur_player_ammo_amount_in_inventory(int type) - -{ - return pPlayer->ammoheldarr[type]; -} - - - -int check_cur_player_ammo_amount_total(int type) - -{ - int iVar1; - ITEM_IDS weapon; - int iVar2; - - iVar1 = check_cur_player_ammo_amount_in_inventory(type); - weapon = get_item_in_hand(0); - iVar2 = get_ammo_type_for_weapon(weapon); - if (iVar2 == type) { - iVar2 = get_ammo_in_hands_magazine(0); - iVar1 += iVar2; - } - weapon = get_item_in_hand(1); - iVar2 = get_ammo_type_for_weapon(weapon); - if (iVar2 == type) { - iVar2 = get_ammo_in_hands_magazine(1); - iVar1 += iVar2; - } - return iVar1; -} - - - -undefined4 get_max_ammo_for_type(AMMOTYPES type) - -{ - return (&DAT_80035ef0)[type * 3]; -} - - - -void set_max_ammo_for_cur_player(void) - -{ - AMMOTYPES type; - int *piVar1; - - piVar1 = &DAT_80035ef0; - type = 0; - do { - give_cur_player_ammo(type,*piVar1); - type += AMMO_9MM; - piVar1 = piVar1 + 3; - } while (type != 0x1e); - return; -} - - - -int get_ammo_in_hands_magazine(int hand) - -{ - return (&pPlayer->right_weapon_ammo_in_magazine)[hand * 0xea]; -} - - - -int get_ammo_in_hands_weapon(int hand) - -{ - ITEM_IDS weapon; - int iVar1; - - weapon = get_item_in_hand(hand); - iVar1 = get_ammo_count_for_weapon(weapon); - if (((weapon == ITEM_SHOTGUN) || (weapon == ITEM_AUTOSHOT)) && - ((weapon = get_item_in_hand(1 - hand), weapon == ITEM_SHOTGUN || (weapon == ITEM_AUTOSHOT)))) { - iVar1 -= *(int *)((int)pPlayer + hand * -0x3a8 + 0xc4c); - } - return iVar1; -} - - - -undefined4 get_ammo_type_for_weapon(int weapon) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(weapon); - return *(undefined4 *)(puVar1 + 0x1c); -} - - - -int get_ammo_count_for_weapon(int weapon) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(weapon); - return pPlayer->ammoheldarr[*(int *)(puVar1 + 0x1c)]; -} - - - -void add_ammo_to_weapon(int weapon,int ammo) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(weapon); - give_cur_player_ammo(*(AMMOTYPES *)(puVar1 + 0x1c),ammo); - return; -} - - - -undefined4 get_max_ammo_for_weapon(int weapon) - -{ - undefined *puVar1; - - puVar1 = get_ptr_item_statistics(weapon); - return (&DAT_80035ef0)[*(int *)(puVar1 + 0x1c) * 3]; -} - - - -undefined4 * -microcode_generation_ammo_related - (int *buffer,int *imagedeclaration,f32 hpos,f32 param_4,f32 vpos,f32 param_6,f32 voffset, - int param_8,int red,int green,int blue,int alpha) - -{ - uint uVar1; - int iVar2; - float fVar3; - f32 wdivh; - int *piStackX0; - int alpha_00; - int format; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - buffer[1] = 0xc0; - *buffer = -0x45fff9fe; - buffer[3] = 0; - buffer[2] = -0x45ffecff; - buffer[5] = 0; - buffer[4] = -0x46fffffe; - buffer[7] = 0; - buffer[6] = -0x45ffefff; - buffer[9] = 0; - buffer[8] = -0x45fff3fe; - buffer[0xb] = 0xc00; - buffer[10] = -0x45fff6fd; - buffer[0xd] = 0; - buffer[0xc] = -0x45fff1fe; - uVar1 = (uint)*(byte *)(imagedeclaration + 1); - fVar3 = (float)uVar1; - if (false) { - fVar3 = fVar3 + 4294967296.00000000; - } - if (false) { - uVar1 = (uint)*(byte *)(imagedeclaration + 1) + 1; - } - fStack8 = fVar3 * 0.50000000 - (float)((int)uVar1 >> 1); - if (param_8 != 0) { - fStack8 = -fStack8; - } - fStack8 = fStack8 + (float)vpos; - if (0.00000000 <= (float)param_6) { - fVar3 = (float)(uint)*(byte *)((int)imagedeclaration + 5); - if (false) { - fVar3 = fVar3 + 4294967296.00000000; - } - fStack4 = (float)param_6 - fVar3 * 0.50000000; - } - else { - uVar1 = (uint)*(byte *)((int)imagedeclaration + 5); - fVar3 = (float)uVar1; - if (false) { - fVar3 = fVar3 + 4294967296.00000000; - } - if (false) { - uVar1 = (uint)*(byte *)((int)imagedeclaration + 5) + 1; - } - fStack4 = ((float)voffset - (fVar3 * 0.50000000 - (float)((int)uVar1 >> 1))) + (float)red; - } - iVar2 = 1; - fStack16 = (float)(uint)*(byte *)(imagedeclaration + 1); - if (false) { - fStack16 = fStack16 + 4294967296.00000000; - } - fStack16 = fStack16 * 0.50000000; - fStack12 = (float)(uint)*(byte *)((int)imagedeclaration + 5); - if (false) { - fStack12 = fStack12 + 4294967296.00000000; - } - fStack12 = fStack12 * 0.50000000; - buffer[0xf] = 0; - buffer[0xe] = -0x19000000; - buffer[0x11] = 0; - buffer[0x10] = -0x45ffebfe; - buffer[0x13] = 0x504240; - buffer[0x12] = -0x46fffce3; - buffer[0x15] = -0x20905; - buffer[0x14] = -0x3000001; - buffer[0x17] = 0; - buffer[0x16] = -0x6000000; - piStackX0 = buffer + 0x1a; - buffer[0x18] = ((int)(fStack12 + fStack4) + 1U & 0x3ff) << 2 | 0xf6000000 | - ((int)(fStack8 + fStack16) + 1U & 0x3ff) << 0xe; - buffer[0x19] = ((int)(fStack4 - fStack12) - 1U & 0x3ff) << 2 | - ((int)(fStack8 - fStack16) - 1U & 0x3ff) << 0xe; - if (green != 0) { - iVar2 = 2; - } - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,(uint *)imagedeclaration,iVar2,0,0); - display_image_at_on_screen_coord - ((int *)register0x000000ec,(int *)&fStack8,wdivh,(int)&fStack16, - (uint)*(byte *)(imagedeclaration + 1),(uint)*(byte *)((int)imagedeclaration + 5),0,0,1, - blue,alpha,alpha_00,format,(uint)(*(char *)((int)imagedeclaration + 6) != '\0')); - piStackX0[1] = 0; - *piStackX0 = -0x19000000; - piStackX0[3] = 0x40; - piStackX0[2] = -0x45fff9fe; - piStackX0[5] = 0x80000; - piStackX0[4] = -0x45ffecff; - piStackX0[7] = 0; - piStackX0[6] = -0x46fffffe; - piStackX0[9] = 0x10000; - piStackX0[8] = -0x45ffefff; - piStackX0[0xb] = 0x2000; - piStackX0[10] = -0x45fff3fe; - piStackX0[0xd] = 0xc00; - piStackX0[0xc] = -0x45fff6fd; - piStackX0[0xf] = 0; - piStackX0[0xe] = -0x45fff1fe; - return (undefined4 *)(piStackX0 + 0x10); -} - - - -void set_rgba_redirect_generate_microcode - (int *buffer,int *imagedeclaration,f32 param_3,f32 param_4,f32 hoffset,f32 param_6, - f32 voffset,int param_8) - -{ - int red; - int green; - - microcode_generation_ammo_related - (buffer,imagedeclaration,hoffset,param_6,hoffset,param_6,voffset,param_8,red,green,0xff, - 0xff); - return; -} - - - -uint * proc_7F069A50(undefined4 *param_1,byte *param_2,uint param_3,int param_4,uint param_5, - int param_6,int param_7) - -{ - int iVar1; - uint *puVar2; - short sVar3; - short sVar4; - int iStack24; - int iStack20; - uint uStack16; - uint uStack12; - uint uStack8; - uint uStack4; - - uStack4 = 0; - uStack8 = 0; - uStack12 = 0; - uStack16 = 0; - iStack24 = 0; - iStack20 = 0; - proc_7F0AE98C(&iStack20,&iStack24,param_2,D_80040EB0,D_80040EAC,0); - if (param_4 == 1) { - uStack12 = param_3 + iStack24; - uStack4 = param_3; - } - else { - if (param_4 == 0) { - uStack4 = param_3 - iStack24; - uStack12 = param_3; - } - else { - if (param_4 == 2) { - iVar1 = iStack24; - if (iStack24 < 0) { - iVar1 = iStack24 + 1; - } - uStack12 = (iVar1 >> 1) + param_3; - uStack4 = uStack12 - iStack24; - } - } - } - if (param_6 == 1) { - uStack8 = param_5; - uStack16 = param_5 + iStack20; - } - else { - if (param_6 == 0) { - uStack16 = param_5; - uStack8 = param_5 - iStack20; - } - else { - if (param_6 == 2) { - iVar1 = iStack20; - if (iStack20 < 0) { - iVar1 = iStack20 + 1; - } - uStack16 = (iVar1 >> 1) + param_5; - uStack8 = uStack16 - iStack20; - } - } - } - puVar2 = draw_blackbox_to_screen(param_1,&uStack4,&uStack8,&uStack12,&uStack16); - if (param_7 == 0) { - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - puVar2 = en_text_write_stuff(puVar2,(int *)&uStack4,(int *)&uStack8,param_2,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar3,(int)sVar4,0,0); - } - else { - sVar3 = get_video2_settings_txtClipW(); - sVar4 = get_video2_settings_txtClipH(); - puVar2 = jp_text_stuff(puVar2,&uStack4,&uStack8,param_2,D_80040EB0,(int)D_80040EAC,0xffffffff, - 0x646464ff,(int)sVar3,(int)sVar4,0,0); - } - return puVar2; -} - - - -uint * display_ammo_total_in_a1 - (undefined4 *param_1,undefined8 param_2,uint param_3,int param_4,uint param_5, - int param_6,int param_7) - -{ - uint *puVar1; - byte abStack12 [12]; - - sprintf((char *)abStack12,"%d\n",param_2); - puVar1 = proc_7F069A50(param_1,abStack12,param_3,param_4,param_5,param_6,param_7); - return puVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -int * generate_ammo_total_microcode(void) - -{ - uint uVar1; - ITEM_IDS weapon; - ITEM_IDS weapon_00; - ulonglong uVar2; - u32 uVar3; - int *imagedeclaration; - short sVar7; - int iVar4; - int iVar5; - short sVar8; - short sVar9; - int *piVar6; - short sVar10; - int *buffer; - f32 fVar11; - f32 fVar12; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f14; - uint *local_res0; - uint local_2c; - uint local_24; - int local_1c; - int local_18; - int local_14; - int local_10; - - local_res0 = (uint *)buffer; - if ((pPlayer->somekinda_flags == 0) && (local_res0 = (uint *)buffer, pPlayer->mpmenuon == 0)) { - weapon = get_item_in_hand(1); - weapon_00 = get_item_in_hand(0); - uVar2 = get_num_players(); - if ((longlong)uVar2 < 3) { - local_10 = 0x3b; - local_14 = 0x3b; - } - else { - uVar3 = get_cur_playernum(); - if ((uVar3 & 1) == 0) { - local_10 = 0x3b; - local_14 = 0x6d; - } - else { - local_10 = 0x2b; - local_14 = 0x7f; - } - } - local_res0 = (uint *)buffer; - if ((((weapon_00 != ITEM_UNARMED) && - (iVar4 = get_ammo_type_for_weapon(weapon_00), local_res0 = (uint *)buffer, iVar4 != 0)) && - (local_res0 = (uint *)buffer, pPlayer->when_detonating_mines_is_0 != 6)) && - ((local_res0 = (uint *)buffer, pPlayer->when_detonating_mines_is_0 != 7 && - (iVar5 = check_special_attributes(weapon_00,0x80000), local_res0 = (uint *)buffer, - iVar5 == 0)))) { - local_24 = 5; - local_res0 = (uint *)buffer; - if ((&DAT_80035ef4)[iVar4 * 3] != 0) { - imagedeclaration = (int *)((&DAT_80035ef4)[iVar4 * 3] + dword_8008D770); - fVar12 = getPlayer_c_screenleft(); - fVar11 = getPlayer_c_screenwidth(); - sVar8 = get_video2_settings_uly(); - sVar9 = get_video2_settings_height(); - local_res0 = (uint *)(int)sVar9; - set_rgba_redirect_generate_microcode - (buffer,imagedeclaration,extraout_f12,extraout_f14, - (f32)(((float)fVar11 + (float)fVar12) - (float)local_14),-1.00000000, - (f32)(float)((int)sVar9 + (int)sVar8 + -0x14),0); - local_24 = (uint)*(byte *)(imagedeclaration + 1); - } - local_res0 = microcode_constructor(local_res0); - iVar5 = check_special_attributes(weapon_00,0x400000); - if (iVar5 == 0) { - local_1c = pPlayer->right_weapon_ammo_in_magazine; - local_18 = pPlayer->ammoheldarr[iVar4]; - } - else { - local_1c = 0; - local_18 = pPlayer->right_weapon_ammo_in_magazine + pPlayer->ammoheldarr[iVar4]; - if (weapon == weapon_00) { - local_18 += pPlayer->left_weapon_ammo_in_magazine; - } - } - iVar4 = check_special_attributes(weapon_00,0x400000); - if (iVar4 == 0) { - sVar8 = get_video2_settings_ulx(); - sVar9 = get_video2_settings_width(); - sVar10 = get_video2_settings_uly(); - sVar7 = get_video2_settings_height(); - uVar1 = local_24; - if (false) { - uVar1 = local_24 + 1; - } - local_res0 = display_ammo_total_in_a1 - (local_res0,(longlong)local_1c, - ((((int)sVar9 + (int)sVar8) - local_14) - ((int)uVar1 >> 1)) - 4,0, - ((int)sVar7 + (int)sVar10) - 0x12,2,1); - } - if ((0 < local_18) || (iVar4 = check_special_attributes(weapon_00,0x400000), iVar4 != 0)) { - sVar8 = get_video2_settings_ulx(); - sVar9 = get_video2_settings_width(); - sVar10 = get_video2_settings_uly(); - sVar7 = get_video2_settings_height(); - iVar4 = local_24 + 1; - if (false) { - iVar4 = local_24 + 2; - } - local_res0 = display_ammo_total_in_a1 - (local_res0,(longlong)local_18, - (((int)sVar9 + (int)sVar8) - local_14) + (iVar4 >> 1) + 3,1, - ((int)sVar7 + (int)sVar10) - 0x12,2,1); - } - local_res0 = combiner_bayer_lod_perspective(local_res0); - } - if ((((weapon != ITEM_UNARMED) && (iVar4 = get_ammo_type_for_weapon(weapon), iVar4 != 0)) && - (pPlayer->field_C3C != 6)) && - ((pPlayer->field_C3C != 7 && (iVar5 = check_special_attributes(weapon,0x80000), iVar5 == 0))) - ) { - local_2c = 5; - if ((&DAT_80035ef4)[iVar4 * 3] != 0) { - imagedeclaration = (int *)((&DAT_80035ef4)[iVar4 * 3] + dword_8008D770); - fVar12 = getPlayer_c_screenleft(); - sVar8 = get_video2_settings_uly(); - sVar9 = get_video2_settings_height(); - piVar6 = (int *)(int)sVar9; - set_rgba_redirect_generate_microcode - ((int *)local_res0,imagedeclaration,extraout_f12_00, - (f32)(&DAT_80035ef8)[iVar4 * 3],(f32)((float)fVar12 + (float)local_10), - -1.00000000,(f32)(float)((int)sVar9 + (int)sVar8 + -0x14),1); - local_2c = (uint)*(byte *)(imagedeclaration + 1); - local_res0 = (uint *)piVar6; - } - local_res0 = microcode_constructor(local_res0); - iVar5 = check_special_attributes(weapon,0x400000); - if (iVar5 == 0) { - local_1c = pPlayer->left_weapon_ammo_in_magazine; - local_18 = pPlayer->ammoheldarr[iVar4]; - } - else { - local_1c = 0; - local_18 = pPlayer->left_weapon_ammo_in_magazine + pPlayer->ammoheldarr[iVar4]; - if (weapon == weapon_00) { - local_18 += pPlayer->right_weapon_ammo_in_magazine; - } - } - iVar4 = check_special_attributes(weapon,0x400000); - if (iVar4 == 0) { - sVar8 = get_video2_settings_ulx(); - sVar9 = get_video2_settings_uly(); - sVar10 = get_video2_settings_height(); - uVar1 = local_2c; - if (false) { - uVar1 = local_2c + 1; - } - local_res0 = display_ammo_total_in_a1 - (local_res0,(longlong)local_1c, - (int)sVar8 + local_10 + ((int)uVar1 >> 1) + 3,1, - ((int)sVar10 + (int)sVar9) - 0x12,2,1); - } - if ((0 < local_18) || (iVar4 = check_special_attributes(weapon,0x400000), iVar4 != 0)) { - sVar8 = get_video2_settings_ulx(); - sVar9 = get_video2_settings_uly(); - sVar10 = get_video2_settings_height(); - iVar4 = local_2c + 1; - if (false) { - iVar4 = local_2c + 2; - } - local_res0 = display_ammo_total_in_a1 - (local_res0,(longlong)local_18, - (((int)sVar8 + local_10) - (iVar4 >> 1)) - 4,0, - ((int)sVar10 + (int)sVar9) - 0x12,2,1); - } - local_res0 = combiner_bayer_lod_perspective(local_res0); - } - } - return (int *)local_res0; -} - - - -undefined4 * proc_7F06A334(undefined4 *param_1) - -{ - undefined4 *puVar1; - uint uVar2; - ITEM_IDS IVar3; - ITEM_IDS weapon; - int iVar4; - int iVar5; - short sVar6; - short sVar7; - uint *DL; - int *imagedeclaration; - f32 extraout_f12; - f32 extraout_f14; - uint uStack28; - int iStack20; - int iStack16; - - IVar3 = get_item_in_hand(1); - weapon = get_item_in_hand(0); - if ((((weapon != ITEM_UNARMED) && (iVar4 = get_ammo_type_for_weapon(weapon), iVar4 != 0)) && - (pPlayer->when_detonating_mines_is_0 != 6)) && - ((pPlayer->when_detonating_mines_is_0 != 7 && - (iVar5 = check_special_attributes(weapon,0x80000), iVar5 == 0)))) { - iVar5 = (&DAT_80035ef4)[iVar4 * 3]; - uStack28 = 5; - get_ptr_item_statistics(weapon); - if (iVar5 != 0) { - imagedeclaration = (int *)(iVar5 + dword_8008D770); - sVar6 = get_video2_settings_uly(); - sVar7 = get_video2_settings_height(); - puVar1 = (undefined4 *)(int)sVar7; - set_rgba_redirect_generate_microcode - (param_1,imagedeclaration,extraout_f12,extraout_f14,200.00000000,180.00000000, - (f32)(float)((int)sVar7 + (int)sVar6 + -0x14),0); - param_1 = puVar1; - uStack28 = (uint)*(byte *)(imagedeclaration + 1); - } - DL = microcode_constructor(param_1); - iVar5 = check_special_attributes(weapon,0x400000); - if (iVar5 == 0) { - iStack20 = pPlayer->right_weapon_ammo_in_magazine; - iStack16 = pPlayer->ammoheldarr[iVar4]; - } - else { - iStack20 = 0; - iStack16 = pPlayer->right_weapon_ammo_in_magazine + pPlayer->ammoheldarr[iVar4]; - if (IVar3 == weapon) { - iStack16 += pPlayer->left_weapon_ammo_in_magazine; - } - } - iVar4 = check_special_attributes(weapon,0x400000); - if (iVar4 == 0) { - uVar2 = uStack28; - if (false) { - uVar2 = uStack28 + 1; - } - DL = display_ammo_total_in_a1(DL,(longlong)iStack20,0xc4 - ((int)uVar2 >> 1),0,0xb1,2,0); - } - if ((0 < iStack16) || (iVar4 = check_special_attributes(weapon,0x400000), iVar4 != 0)) { - iVar4 = uStack28 + 1; - if (false) { - iVar4 = uStack28 + 2; - } - DL = display_ammo_total_in_a1(DL,(longlong)iStack16,(iVar4 >> 1) + 0xcb,1,0xb1,2,0); - } - param_1 = combiner_bayer_lod_perspective(DL); - } - return param_1; -} - - - -void set_unset_bitflags(int bitflags,int flag) - -{ - if (flag != 0) { - pPlayer->somekinda_bitflags = pPlayer->somekinda_bitflags & ~bitflags; - return; - } - pPlayer->somekinda_bitflags = pPlayer->somekinda_bitflags | bitflags; - return; -} - - - -void proc_7F06A5E4(uint **param_1) - -{ - int iVar1; - f32 wdivh; - float local_14; - undefined4 local_10; - float local_c; - float local_8; - uint *local_4; - - if ((pPlayer->somekinda_bitflags == 0) && (pPlayer->mpmenuon == 0)) { - local_4 = *param_1; - likely_generate_DL_for_image_declaration(&local_4,imgcall,4,0,0); - local_c = pPlayer->field_FE8; - local_8 = pPlayer->field_FEC; - local_14 = 16.00000000; - local_10 = 0x41800000; - iVar1 = get_screen_ratio(); - if (iVar1 == 1) { - local_14 = local_14 * 0.75000000; - } - display_image_at_on_screen_coord - ((int *)&local_4,(int *)&local_c,wdivh,(int)&local_14,0x20,0x20,0,0,1,0xff,0xff,0xff, - 0x6e,(uint)(*(char *)((int)imgcall + 6) != '\0')); - *param_1 = local_4; - } - return; -} - - - -void inc_curplayer_hitcount_with_weapon(int weapon,int hitcount) - -{ - int iVar1; - - iVar1 = check_special_attributes(weapon,0x10000); - if (iVar1 != 0) { - pplayersperm->shotcount[hitcount] = pplayersperm->shotcount[hitcount] + 1; - } - return; -} - - - -int get_curplayer_shot_register(int statsregister) - -{ - return pplayersperm->shotcount[statsregister]; -} - - - -void inc_cur_civilian_casualties(void) - -{ - pplayersperm->killed_civilians = pplayersperm->killed_civilians + 1; - return; -} - - - -int get_civilian_casualties(void) - -{ - return pplayersperm->killed_civilians; -} - - - -void increment_num_kills_display_text_in_MP(void) - -{ - ulonglong uVar1; - int iVar2; - byte *pbVar3; - int iVar4; - int iVar5; - char acStack256 [256]; - - pplayersperm->killcount = pplayersperm->killcount + 1; - pPlayer->field_29F8 = pPlayer->field_29F8 + 1; - uVar1 = get_num_players(); - if (1 < (longlong)uVar1) { - iVar2 = getMissiontime(); - pbVar3 = get_textptr_for_textID(0x98da); - sprintf(acStack256,"%s: %d\n",pbVar3,pplayersperm->killcount); - display_string_in_lower_left_corner(acStack256); - if (1 < pplayersperm->killcount) { - iVar4 = iVar2 - pPlayer->field_29E4; - if (pplayersperm->slowest2kills < iVar4) { - pplayersperm->slowest2kills = iVar4; - iVar5 = pplayersperm->fastest2kills; - } - else { - iVar5 = pplayersperm->fastest2kills; - } - if (iVar4 < iVar5) { - pplayersperm->fastest2kills = iVar4; - } - } - iVar4 = 1; - pPlayer->field_29F0 = pPlayer->field_29EC; - pPlayer->field_29EC = pPlayer->field_29E8; - pPlayer->field_29E8 = pPlayer->field_29E4; - pPlayer->field_29E4 = iVar2; - if ((pPlayer->field_29E8 != -1) && - (iVar2 = pPlayer->field_29E4, iVar2 - pPlayer->field_29E8 < 0x78)) { - iVar4 = 2; - if ((pPlayer->field_29EC != -1) && (iVar2 - pPlayer->field_29EC < 0x78)) { - iVar4 = 3; - if ((pPlayer->field_29F0 != -1) && (iVar2 - pPlayer->field_29F0 < 0x78)) { - iVar4 = 4; - } - } - } - if (pplayersperm->most_killed_one_time < iVar4) { - pplayersperm->most_killed_one_time = iVar4; - } - } - return; -} - - - -int get_curplay_killcount(void) - -{ - return pplayersperm->killcount; -} - - - -void increment_num_times_killed_MwtGC(void) - -{ - pplayersperm->ggkillcount = pplayersperm->ggkillcount + 1; - return; -} - - - -int get_times_killed_mwtgx(void) - -{ - return pplayersperm->ggkillcount; -} - - - -void increment_num_deaths(void) - -{ - ulonglong uVar1; - byte *__format; - byte *pbVar2; - char acStack256 [256]; - - pPlayer->deathcount = pPlayer->deathcount + 1; - uVar1 = get_num_players(); - if (1 < (longlong)uVar1) { - if (pPlayer->deathcount == 1) { - __format = get_textptr_for_textID(0x98db); - sprintf(acStack256,(char *)__format); - } - else { - __format = get_textptr_for_textID(0x98dc); - pbVar2 = get_textptr_for_textID(0x98dd); - sprintf(acStack256,"%s %d %s\n",__format,pPlayer->deathcount,pbVar2); - } - display_string_in_lower_left_corner(acStack256); - } - return; -} - - - -int get_curplayer_numdeaths(void) - -{ - return pPlayer->deathcount; -} - - - -void increment_num_suicides_display_MP(void) - -{ - ulonglong uVar1; - int iVar2; - byte *pbVar3; - int iVar4; - int iVar5; - char acStack256 [256]; - - pPlayer->num_suicides = pPlayer->num_suicides + 1; - uVar1 = get_num_players(); - if (1 < (longlong)uVar1) { - iVar2 = getMissiontime(); - pbVar3 = get_textptr_for_textID(0x98de); - sprintf(acStack256,"%s: %d\n",pbVar3,pPlayer->num_suicides); - display_string_in_lower_left_corner(acStack256); - if (1 < pplayersperm->killcount) { - iVar4 = iVar2 - pPlayer->field_29E4; - if (pplayersperm->slowest2kills < iVar4) { - pplayersperm->slowest2kills = iVar4; - iVar5 = pplayersperm->fastest2kills; - } - else { - iVar5 = pplayersperm->fastest2kills; - } - if (iVar4 < iVar5) { - pplayersperm->fastest2kills = iVar4; - } - } - iVar4 = 1; - pPlayer->field_29F0 = pPlayer->field_29EC; - pPlayer->field_29EC = pPlayer->field_29E8; - pPlayer->field_29E8 = pPlayer->field_29E4; - pPlayer->field_29E4 = iVar2; - if ((pPlayer->field_29E8 != -1) && - (iVar2 = pPlayer->field_29E4, iVar2 - pPlayer->field_29E8 < 0x78)) { - iVar4 = 2; - if ((pPlayer->field_29EC != -1) && (iVar2 - pPlayer->field_29EC < 0x78)) { - iVar4 = 3; - if ((pPlayer->field_29F0 != -1) && (iVar2 - pPlayer->field_29F0 < 0x78)) { - iVar4 = 4; - } - } - } - if (pplayersperm->most_killed_one_time < iVar4) { - pplayersperm->most_killed_one_time = iVar4; - } - } - return; -} - - - -int get_curplayer_numsuicides(void) - -{ - return pPlayer->num_suicides; -} - - - -void proc_7F06ABB0(uint **param_1,float *param_2,float *param_3,int param_4,int param_5,int param_6, - int param_7,int param_8) - -{ - uint *puVar1; - uint *puVar2; - uint uVar3; - int iVar4; - uint uVar5; - int iVar6; - int iVar7; - float fVar8; - float fVar9; - uint uVar10; - uint uVar11; - float fVar12; - uint uVar13; - uint uVar14; - - if ((0.00000000 < *param_3) && (0.00000000 < param_3[1])) { - puVar1 = *param_1; - *puVar1 = 0xba001301; - puVar1[1] = 0; - fVar8 = *param_3; - fVar9 = param_3[1]; - iVar4 = 0; - uVar5 = 0; - puVar2 = puVar1 + 2; - uVar14 = (uint)((*param_2 - fVar8) * 4.00000000); - uVar11 = (uint)((param_2[1] - fVar9) * 4.00000000); - uVar10 = (uint)((fVar8 + *param_2) * 4.00000000); - uVar13 = (uint)((fVar9 + param_2[1]) * 4.00000000); - if ((-1 < (int)uVar10) && (-1 < (int)uVar13)) { - if ((int)uVar14 < 0) { - if (param_6 == 0) { - iVar7 = uVar10 - uVar14; - iVar6 = -uVar14 * param_4 * 0x20; - iVar4 = iVar6 / iVar7; - if (iVar7 == 0) { - trap(0x1c00); - } - if ((iVar7 == -1) && (iVar6 == -0x80000000)) { - trap(0x1800); - } - uVar14 = 0; - } - else { - iVar7 = uVar10 - uVar14; - iVar6 = -uVar14 * param_5 * 0x20; - uVar5 = iVar6 / iVar7; - if (iVar7 == 0) { - trap(0x1c00); - } - if ((iVar7 == -1) && (iVar6 == -0x80000000)) { - trap(0x1800); - } - uVar14 = 0; - } - } - if ((int)uVar11 < 0) { - if (param_6 == 0) { - iVar6 = uVar13 - uVar11; - iVar7 = -uVar11 * param_5 * 0x20; - uVar5 += iVar7 / iVar6; - if (iVar6 == 0) { - trap(0x1c00); - } - if ((iVar6 == -1) && (iVar7 == -0x80000000)) { - trap(0x1800); - } - uVar11 = 0; - } - else { - iVar6 = uVar13 - uVar11; - iVar7 = -uVar11 * param_4 * 0x20; - iVar4 += iVar7 / iVar6; - if (iVar6 == 0) { - trap(0x1c00); - } - if ((iVar6 == -1) && (iVar7 == -0x80000000)) { - trap(0x1800); - } - uVar11 = 0; - } - } - if (param_6 == 0) { - fVar12 = (float)param_4 / (fVar8 + fVar8); - fVar8 = (float)param_5 / (fVar9 + fVar9); - } - else { - fVar12 = (float)param_4 / (fVar9 + fVar9); - fVar8 = (float)param_5 / (fVar8 + fVar8); - } - uVar3 = (uint)(fVar8 * 1024.00000000); - iVar6 = (int)(fVar12 * 1024.00000000); - if (param_7 != 0) { - iVar6 = 0x10000 - iVar6; - iVar4 = (param_4 + -1) * 0x20 - iVar4; - } - if (param_8 != 0) { - uVar3 = 0x10000 - uVar3; - uVar5 = (param_5 + -1) * 0x20 - uVar5; - } - if (param_6 == 0) { - *puVar2 = (uVar10 & 0xfff) << 0xc | 0xe4000000 | uVar13 & 0xfff; - puVar1[3] = (uVar14 & 0xfff) << 0xc | uVar11 & 0xfff; - puVar1[4] = 0xb4000000; - puVar1[5] = iVar4 << 0x10 | uVar5 & 0xffff; - puVar1[6] = 0xb3000000; - puVar1[7] = iVar6 << 0x10 | uVar3 & 0xffff; - } - else { - *puVar2 = (uVar10 & 0xfff) << 0xc | 0xe5000000 | uVar13 & 0xfff; - puVar1[3] = (uVar14 & 0xfff) << 0xc | uVar11 & 0xfff; - puVar1[4] = 0xb4000000; - puVar1[5] = iVar4 << 0x10 | uVar5 & 0xffff; - puVar1[6] = 0xb3000000; - puVar1[7] = iVar6 << 0x10 | uVar3 & 0xffff; - } - puVar2 = puVar1 + 8; - } - puVar2[1] = 0x80000; - *puVar2 = 0xba001301; - *param_1 = puVar2 + 2; - } - return; -} - - - -void display_image_at_on_screen_coord - (int *DL,int *xypos,f32 wdivh,int width,int height,int rotateleft90,int fliph, - int flipv,int red,int green,int blue,int alpha,int format,int param_14) - -{ - undefined4 *puVar1; - undefined4 *puVar2; - int in_stack_00000034; - - if ((0.00000000 < *(float *)width) && (0.00000000 < *(float *)(width + 4))) { - puVar1 = (undefined4 *)*DL; - *puVar1 = 0xfb000000; - puVar1[1] = green << 0x18 | (blue & 0xffU) << 0x10 | (alpha & 0xffU) << 8 | format & 0xffU; - puVar2 = puVar1 + 2; - if (param_14 == 0) { - if (in_stack_00000034 == 0) { - *puVar2 = 0xfc129a25; - puVar1[3] = 0xff37ffff; - } - else { - puVar1[3] = 0xfffffe38; - *puVar2 = 0xfc129bff; - } - } - else { - *puVar2 = 0xfc26a005; - puVar1[3] = 0x1f1493ff; - } - *(undefined4 **)DL = puVar1 + 4; - proc_7F06ABB0((uint **)DL,(float *)xypos,(float *)width,height,rotateleft90,fliph,flipv,red); - } - return; -} - - - -int * proc_7F06B120(int *param_1,int param_2) - -{ - ushort uVar1; - ushort *puVar2; - ushort *puVar3; - int *piVar4; - int *piVar5; - int *piVar6; - - puVar2 = **(ushort ***)(param_2 + 8); - piVar4 = dword_80036060; - if ((puVar2 != NULL) && (piVar4 = dword_80036060, dword_80036060 != NULL)) { - uVar1 = *puVar2; - piVar4 = dword_80036060; - do { - if (false) { -switchD_7f06b16c_caseD_4: - puVar3 = *(ushort **)(puVar2 + 10); - } - else { - switch((uint)uVar1 & 0xff) { - case 1: - case 2: - case 3: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x15: - *piVar4 = param_2; - *(ushort **)(piVar4 + 1) = puVar2; - piVar4 = (int *)piVar4[3]; - puVar3 = *(ushort **)(puVar2 + 10); - break; - default: - goto switchD_7f06b16c_caseD_4; - } - } - if ((puVar3 == NULL) && (puVar3 = puVar2, puVar2 != NULL)) { - puVar3 = *(ushort **)(puVar2 + 6); - while ((puVar3 == NULL && - (puVar2 = *(ushort **)(puVar2 + 4), puVar3 = puVar2, puVar2 != NULL))) { - puVar3 = *(ushort **)(puVar2 + 6); - } - } - if ((puVar3 == NULL) || (piVar4 == NULL)) break; - uVar1 = *puVar3; - puVar2 = puVar3; - } while( true ); - } - piVar6 = param_1; - if (piVar4 != dword_80036060) { - piVar6 = dword_80036060; - if (param_1 != NULL) { - if (param_1[3] == 0) { - *(int **)(param_1 + 3) = dword_80036060; - piVar5 = param_1; - } - else { - piVar6 = (int *)param_1[3]; - do { - piVar5 = piVar6; - piVar6 = (int *)piVar5[3]; - } while ((int *)piVar5[3] != NULL); - *(int **)(piVar5 + 3) = dword_80036060; - } - *(int **)(dword_80036060 + 4) = piVar5; - piVar6 = param_1; - } - dword_80036060 = piVar4; - if ((piVar4 != NULL) && (dword_80036060 = piVar4, piVar4[4] != 0)) { - *(undefined4 *)(piVar4[4] + 0xc) = 0; - piVar4[4] = 0; - dword_80036060 = piVar4; - } - } - return piVar6; -} - - - -void proc_7F06B248(int param_1) - -{ - int iVar1; - int iVar2; - - iVar1 = dword_80036060; - if ((param_1 != 0) && (iVar1 = param_1, dword_80036060 != 0)) { - if (*(int *)(param_1 + 0xc) == 0) { - *(int *)(param_1 + 0xc) = dword_80036060; - iVar2 = param_1; - } - else { - iVar1 = *(int *)(param_1 + 0xc); - do { - iVar2 = iVar1; - iVar1 = *(int *)(iVar2 + 0xc); - } while (*(int *)(iVar2 + 0xc) != 0); - *(int *)(iVar2 + 0xc) = dword_80036060; - } - *(int *)(dword_80036060 + 0x10) = iVar2; - iVar1 = param_1; - } - dword_80036060 = iVar1; - return; -} - - - -void proc_7F06B29C(int *param_1) - -{ - ushort *puVar1; - ushort *puVar2; - float *pfVar3; - int iVar4; - int *piVar5; - int iVar6; - int iVar7; - float *pfVar8; - int iVar9; - int *piVar10; - int *piVar11; - int *piVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - float fVar20; - int *piStack8; - - piStack8 = NULL; - if (param_1 != NULL) { - puVar1 = (ushort *)param_1[1]; - piVar12 = param_1; - while( true ) { - if (true) { - switch((uint)*puVar1 & 0xff) { - case 1: - puVar2 = *(ushort **)(*(int *)(puVar1 + 2) + 4); - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - if (puVar2 == NULL) { - *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); - } - else { - iVar7 = proc_7F06C660(*piVar12,puVar2,0); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar7 + 0x38) + *(float *)(iVar6 + 0x38)) * 0.50000000; - } - break; - case 2: - puVar2 = *(ushort **)(*(int *)(puVar1 + 2) + 0x14); - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - if (puVar2 == NULL) { - *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); - } - else { - iVar7 = proc_7F06C660(*piVar12,puVar2,0); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar7 + 0x38) + *(float *)(iVar6 + 0x38)) * 0.50000000; - } - break; - case 3: - puVar2 = *(ushort **)(*(int *)(puVar1 + 2) + 0x14); - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - if (puVar2 == NULL) { - *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); - } - else { - iVar7 = proc_7F06C660(*piVar12,puVar2,0); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar7 + 0x38) + *(float *)(iVar6 + 0x38)) * 0.50000000; - } - break; - case 0xb: - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - pfVar3 = *(float **)(puVar1 + 2); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar6 + 0x38) + - *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + - pfVar3[2] * *(float *)(iVar6 + 0x28)); - break; - case 0xc: - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - pfVar3 = *(float **)(puVar1 + 2); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar6 + 0x38) + - *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + - pfVar3[2] * *(float *)(iVar6 + 0x28)); - break; - case 0xd: - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - pfVar3 = *(float **)(puVar1 + 2); - iVar7 = extract_id_from_object_structure_microcode(*piVar12,(ushort *)pfVar3[5]); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar6 + 0x38) + - *pfVar3 * *(float *)(iVar6 + 8) + - (*(float *)(iVar7 + 4) - *(float *)(iVar7 + 0xc)) * *(float *)(iVar6 + 0x18) + - pfVar3[1] * *(float *)(iVar6 + 0x28)); - break; - case 0xe: - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - pfVar3 = *(float **)(puVar1 + 2); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar6 + 0x38) + - *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + - pfVar3[2] * *(float *)(iVar6 + 0x28)); - break; - case 0xf: - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - pfVar3 = *(float **)(puVar1 + 2); - fVar19 = -(*(float *)(iVar6 + 0x38) + - *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + - pfVar3[2] * *(float *)(iVar6 + 0x28)); - fVar13 = -(*(float *)(iVar6 + 0x38) + - pfVar3[3] * *(float *)(iVar6 + 8) + pfVar3[4] * *(float *)(iVar6 + 0x18) + - pfVar3[5] * *(float *)(iVar6 + 0x28)); - if (fVar19 < fVar13) { - *(float *)(piVar12 + 2) = fVar19; - } - else { - *(float *)(piVar12 + 2) = fVar13; - } - break; - case 0x10: - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - pfVar3 = *(float **)(puVar1 + 2); - *(float *)(piVar12 + 2) = - -(*(float *)(iVar6 + 0x38) + - *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + - pfVar3[2] * *(float *)(iVar6 + 0x28)); - piStack8 = piVar12; - break; - case 0x15: - iVar6 = proc_7F06C660(*piVar12,puVar1,0); - *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); - } - } - piVar12 = (int *)piVar12[3]; - if (piVar12 == NULL) break; - puVar1 = (ushort *)piVar12[1]; - } - } - if (piStack8 != NULL) { - iVar6 = *(int *)(*piStack8 + 0x18); - if (iVar6 != 0) { - fVar19 = (float)piStack8[2]; - pfVar3 = *(float **)((ushort *)piStack8[1] + 2); - iVar6 = *(int *)(*(int *)(iVar6 + 8) + 8); - iVar7 = *(int *)(iVar6 + (int)*(short *)((int)pfVar3 + 0xe) * 4); - iVar4 = *(int *)(iVar6 + (int)*(short *)(pfVar3 + 3) * 4); - iVar6 = *(int *)(iVar6 + (int)*(short *)(pfVar3 + 4) * 4); - pfVar8 = (float *)proc_7F06C660(*piStack8,(ushort *)piStack8[1],0); - piVar12 = NULL; - piVar10 = NULL; - piVar11 = NULL; - if (param_1 != NULL) { - iVar9 = param_1[1]; - while( true ) { - if (iVar7 == iVar9) { - piVar10 = param_1; - } - if (iVar4 == iVar9) { - piVar12 = param_1; - } - if (iVar6 == iVar9) { - piVar5 = (int *)param_1[3]; - piVar11 = param_1; - } - else { - piVar5 = (int *)param_1[3]; - } - if (piVar5 == NULL) break; - iVar9 = piVar5[1]; - param_1 = piVar5; - } - } - fVar14 = pfVar8[0xc] + *pfVar3 * *pfVar8 + pfVar3[1] * pfVar8[4] + pfVar3[2] * pfVar8[8]; - fVar15 = pfVar8[0xd] + *pfVar3 * pfVar8[1] + pfVar3[1] * pfVar8[5] + pfVar3[2] * pfVar8[9]; - fVar16 = pfVar8[0xe] + *pfVar3 * pfVar8[2] + pfVar3[1] * pfVar8[6] + pfVar3[2] * pfVar8[10]; - fVar18 = (float)piVar10[2]; - fVar17 = (float)piVar12[2]; - fVar20 = (float)piVar11[2]; - fVar13 = fVar16 * pfVar8[10] + pfVar8[8] * fVar14 + pfVar8[9] * fVar15; - fVar14 = fVar16 * pfVar8[6] + pfVar8[4] * fVar14 + pfVar8[5] * fVar15; - if (fVar13 < 0.00000000) { - if (fVar20 < fVar18) { - if (fVar20 < fVar19) { - *(float *)(piStack8 + 2) = fVar20 - 0.00003052; - } - } - else { - if (fVar18 < fVar19) { - *(float *)(piStack8 + 2) = fVar18 - 0.00003052; - } - } - } - else { - if (0.00000000 <= fVar13) { - if (fVar19 < fVar18) { - *(float *)(piVar10 + 2) = fVar19 - 0.00006104; - } - if (fVar19 < fVar20) { - if (fVar20 < fVar18) { - *(float *)(piVar11 + 2) = fVar19 - 0.00009155; - } - else { - *(float *)(piVar11 + 2) = fVar19 - 0.00003052; - } - } - } - } - if (fVar14 < 0.00000000) { - fVar19 = (float)piStack8[2]; - if (fVar17 < fVar19) { - if ((float)piVar10[2] < fVar19) { - if (fVar17 < (float)piVar10[2]) { - *(float *)(piVar10 + 2) = fVar17 - 0.00006104; - fVar19 = (float)piStack8[2]; - fVar13 = (float)piVar11[2]; - } - else { - fVar13 = (float)piVar11[2]; - } - } - else { - fVar13 = (float)piVar11[2]; - } - if ((fVar13 < fVar19) && (fVar17 < fVar13)) { - if (fVar20 < fVar18) { - *(float *)(piVar11 + 2) = fVar17 - 0.00009155; - } - else { - *(float *)(piVar11 + 2) = fVar17 - 0.00003052; - } - } - *(float *)(piStack8 + 2) = fVar17 - 0.00001526; - } - } - else { - if ((0.00000000 <= fVar14) && ((float)piStack8[2] < fVar17)) { - *(float *)(piVar12 + 2) = (float)piStack8[2] - 0.00001526; - if ((fVar17 < fVar18) && ((float)piVar10[2] < (float)piVar12[2])) { - *(float *)(piVar12 + 2) = (float)piVar10[2] - 0.00001526; - } - if ((fVar17 < fVar20) && ((float)piVar11[2] < (float)piVar12[2])) { - *(float *)(piVar12 + 2) = (float)piVar11[2] - 0.00001526; - } - } - } - } - } - return; -} - - - -int proc_7F06BB28(int param_1) - -{ - undefined *puVar1; - undefined *puVar2; - int iVar3; - int iVar4; - undefined *puVar5; - undefined *puVar6; - undefined *puVar7; - float fVar8; - float fVar9; - undefined auStack40 [20]; - undefined auStack20 [20]; - - if (param_1 != 0) { - iVar4 = param_1; - if (*(int *)(param_1 + 0xc) != 0) { - iVar3 = *(int *)(param_1 + 0xc); - do { - iVar4 = iVar3; - iVar3 = *(int *)(iVar4 + 0xc); - } while (*(int *)(iVar4 + 0xc) != 0); - } - puVar6 = auStack20; - *(undefined **)(param_1 + 0x10) = puVar6; - *(undefined **)(iVar4 + 0xc) = auStack40; - do { - puVar1 = *(undefined **)(puVar6 + 0xc); - puVar5 = NULL; - if (puVar1 != auStack40) { - fVar8 = -4294967296.00000000; - fVar9 = *(float *)(puVar1 + 8); - puVar7 = puVar1; - while( true ) { - if (fVar8 < fVar9) { - puVar2 = *(undefined **)(puVar7 + 0xc); - puVar5 = puVar7; - } - else { - puVar2 = *(undefined **)(puVar7 + 0xc); - fVar9 = fVar8; - } - if (puVar2 == auStack40) break; - fVar8 = fVar9; - fVar9 = *(float *)(puVar2 + 8); - puVar7 = puVar2; - } - } - if (puVar5 != NULL) { - *(undefined4 *)(*(int *)(puVar5 + 0xc) + 0x10) = *(undefined4 *)(puVar5 + 0x10); - *(undefined4 *)(*(int *)(puVar5 + 0x10) + 0xc) = *(undefined4 *)(puVar5 + 0xc); - *(undefined **)(puVar5 + 0x10) = puVar6; - *(undefined4 *)(puVar5 + 0xc) = *(undefined4 *)(puVar6 + 0xc); - *(undefined **)(*(int *)(puVar6 + 0xc) + 0x10) = puVar5; - *(undefined **)(puVar6 + 0xc) = puVar5; - puVar1 = puVar5; - } - puVar6 = puVar1; - } while (puVar6 != auStack40); - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(iVar4 + 0xc) = 0; - } - return param_1; -} - - - -void drawjointlist(int param_1,uint *param_2,undefined4 param_3,int param_4) - -{ - ushort uVar1; - uint uVar2; - ushort *puVar3; - undefined4 *puVar4; - bool bVar5; - u32 uVar6; - uint object; - longlong lVar7; - longlong extraout_a2; - longlong extraout_a2_00; - longlong extraout_a3; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 uVar8; - longlong extraout_a3_00; - longlong extraout_a3_01; - longlong extraout_a3_02; - longlong extraout_a3_03; - ushort *puVar9; - ushort *puVar10; - int object_initialized; - int iVar11; - float fVar12; - - lVar7 = (longlong)param_4; - if (*(int *)(param_1 + 0xc) == 0) { - osSyncPrintf("drawjointlist: no gfxlist!\n",param_2,param_3); - return_null(); - lVar7 = extraout_a3; - } - if (param_2 == NULL) { - return; - } - uVar2 = *param_2; -LAB_7f06bc58: - uVar8 = (undefined4)lVar7; - lVar7 = (longlong)(int)uVar2; - puVar3 = (ushort *)param_2[1]; - if (*(int *)(uVar2 + 8) == 0) { - osSyncPrintf("drawjointlist: no object! (0x%X)\n",lVar7); - return_null(); - object_initialized = *(int *)(*(int *)(*param_2 + 8) + 0x1c); - lVar7 = extraout_a2; - uVar8 = extraout_a3_lo; - } - else { - object_initialized = *(int *)(*(int *)(uVar2 + 8) + 0x1c); - } - if (object_initialized == 0) { - osSyncPrintf("drawjointlist: object not initialised! (0x%X)\n"); - return_null(); - iVar11 = *(int *)(param_1 + 0x18); - lVar7 = extraout_a2_00; - uVar8 = extraout_a3_lo_00; - } - else { - iVar11 = *(int *)(param_1 + 0x18); - } - if (iVar11 == 0) { - puVar4 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; - *puVar4 = 0xbc000c06; - uVar6 = osVirtualToPhysical(*(void **)(*param_2 + 0xc)); - puVar4[1] = uVar6; - lVar7 = extraout_a3_01; - puVar9 = puVar3; - } - else { - fVar12 = getjointsize(*param_2,puVar3,lVar7,uVar8); - lVar7 = extraout_a3_00; - puVar9 = puVar3; - if ((float)param_2[2] < fVar12) { - lVar7 = extraout_a3_00; - puVar9 = NULL; - } - } - if (puVar9 != NULL) { - uVar1 = *puVar9; - do { - bVar5 = true; - if (false) { -switchD_7f06bd3c_caseD_4: - proc_7F074534(param_1,*param_2,puVar9); - lVar7 = extraout_a3_03; - } - else { - switch((uint)uVar1 & 0xff) { - case 1: - case 2: - case 3: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x15: - if (puVar9 == puVar3) { - proc_7F074534(param_1,*param_2,puVar9); - lVar7 = extraout_a3_02; - } - else { - bVar5 = false; - } - break; - default: - goto switchD_7f06bd3c_caseD_4; - } - } - if ((!bVar5) || (puVar10 = *(ushort **)(puVar9 + 10), puVar10 == NULL)) { - while (puVar10 = puVar9, puVar9 != NULL) { - if (puVar9 == puVar3) { - puVar10 = NULL; - break; - } - puVar10 = *(ushort **)(puVar9 + 6); - if (puVar10 != NULL) break; - puVar9 = *(ushort **)(puVar9 + 4); - } - } - if (puVar10 == NULL) goto code_r0x7f06bdd4; - uVar1 = *puVar10; - puVar9 = puVar10; - } while( true ); - } - param_2 = (uint *)param_2[3]; - goto LAB_7f06bdd8; -code_r0x7f06bdd4: - param_2 = (uint *)param_2[3]; -LAB_7f06bdd8: - if (param_2 == NULL) { - return; - } - uVar2 = *param_2; - goto LAB_7f06bc58; -} - - - -undefined4 -probably_damage_detail_blood_effect_related - (int **param_1,float *param_2,float *param_3,int *param_4,ushort **param_5) - -{ - ushort *puVar1; - bool bVar2; - ulonglong uVar3; - longlong lVar4; - ushort *puVar5; - ushort *puVar6; - int *piVar7; - - piVar7 = *param_1; - if (piVar7 == NULL) { -LAB_7f06bfdc: - *param_1 = NULL; - return 0; - } - puVar6 = *param_5; - do { - puVar1 = (ushort *)piVar7[1]; - bVar2 = true; - puVar5 = puVar1; - if (puVar6 != NULL) { - *param_5 = NULL; - puVar5 = puVar6; - } - if (puVar5 == NULL) { - piVar7 = (int *)piVar7[4]; - } - else { - do { - if ((!bVar2) || (puVar6 = *(ushort **)(puVar5 + 10), puVar6 == NULL)) { - while (puVar6 = puVar5, puVar5 != NULL) { - if (puVar5 == puVar1) { - puVar6 = NULL; - break; - } - puVar6 = *(ushort **)(puVar5 + 6); - if (puVar6 != NULL) break; - puVar5 = *(ushort **)(puVar5 + 4); - } - if (puVar6 == NULL) { - piVar7 = (int *)piVar7[4]; - goto LAB_7f06bfd4; - } - } - uVar3 = (ulonglong)*puVar6; - bVar2 = true; - if (true) { - switch((uint)*puVar6 & 0xff) { - case 1: - case 2: - case 3: - case 0x15: - bVar2 = false; - break; - case 8: - proc_7F06E970(*piVar7,puVar6); - break; - case 10: - proc_7F074C68(*piVar7,puVar6,param_2,param_3); - if (uVar3 != 0) { - *param_4 = *piVar7; - *param_5 = puVar6; - *param_1 = piVar7; - return **(undefined4 **)(puVar6 + 2); - } - bVar2 = false; - break; - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - bVar2 = false; - break; - case 0x11: - lVar4 = proc_7F074CAC(*piVar7,puVar6,param_2,param_3); - if (lVar4 != 0) { - *param_4 = *piVar7; - *param_5 = puVar6; - *param_1 = piVar7; - return **(undefined4 **)(puVar6 + 2); - } - bVar2 = false; - break; - case 0x12: - process_12_handle_switch(*piVar7,puVar6); - break; - case 0x17: - process_17_pointer_to_head(*piVar7,puVar6); - } - } - puVar5 = puVar6; - } while (puVar6 != NULL); - piVar7 = (int *)piVar7[4]; - } -LAB_7f06bfd4: - if (piVar7 == NULL) goto LAB_7f06bfdc; - puVar6 = *param_5; - } while( true ); -} - - - -undefined4 proc_7F06C010(int **param_1,float *param_2,float *param_3,int *param_4,ushort **param_5) - -{ - int *piVar1; - int *piVar2; - undefined4 uVar3; - - piVar1 = *param_1; - piVar2 = (int *)(*param_1)[3]; - while (piVar2 != NULL) { - piVar1 = piVar2; - piVar2 = (int *)piVar2[3]; - } - *param_1 = piVar1; - *param_4 = 0; - *param_5 = NULL; - uVar3 = probably_damage_detail_blood_effect_related(param_1,param_2,param_3,param_4,param_5); - return uVar3; -} - - - -ulonglong proc_7F06C060(int param_1,int param_2) - -{ - short sVar1; - bool bVar2; - ulonglong uVar3; - - sVar1 = *(short *)(param_2 + 0x14); - uVar3 = (ulonglong)(sVar1 < 1); - if ((sVar1 >= 1) && (bVar2 = *(int *)(param_1 + 0x10) != 0, uVar3 = (ulonglong)bVar2, bVar2)) { - uVar3 = (ulonglong)(*(short *)(param_1 + 2) < sVar1) ^ 1; - } - return uVar3; -} - - - -uint get_obj_instance_controller_for_header(PitemZ_header *objheader) - -{ - short sVar1; - int iVar3; - ulonglong uVar2; - int iVar4; - uint uVar5; - undefined2 uStack10; - uint uStack8; - - uVar5 = 0; - uStack8 = 0; - uStack10 = 0xffff; - if (dword_80036078 == 0) { - iVar4 = 0; - iVar3 = 0; - if (0 < dword_80036074) { - do { - if ((*(int *)(ptr_allocation_1 + iVar3 + 8) == 0) && - (uVar2 = proc_7F06C060(iVar4 * 0x20 + ptr_allocation_1,(int)objheader), uVar2 != 0)) { - uStack8 = *(uint *)(ptr_allocation_1 + iVar3 + 0x10); - uVar5 = iVar4 * 0x20 + ptr_allocation_1; - uStack10 = *(undefined2 *)(ptr_allocation_1 + iVar3 + 2); - break; - } - iVar4 += 1; - iVar3 += 0x20; - } while (iVar4 < dword_80036074); - } - } - else { - iVar3 = 0; - iVar4 = ptr_allocation_1; - if (0 < dword_80036074 + -0x1e) { - do { - if (*(int *)(iVar4 + 8) == 0) { - uVar5 = iVar3 * 0x20 + ptr_allocation_1; - break; - } - iVar3 += 1; - iVar4 = iVar4 + 0x20; - } while (iVar3 < dword_80036074 + -0x1e); - } - if (uVar5 == 0) { - uVar5 = allocate_bytes_in_bank(0x20,4); - sVar1 = *(short *)&objheader->anonymous_5; - } - else { - sVar1 = *(short *)&objheader->anonymous_5; - } - if (0 < sVar1) { - uStack8 = allocate_bytes_in_bank(((int)sVar1 * 4 + 0xfU | 0xf) ^ 0xf,4); - uStack10 = *(undefined2 *)&objheader->anonymous_5; - } - } - if (uVar5 != 0) { - proc_7F075F68(uVar5,(ushort **)objheader,uStack8); - *(undefined2 *)(uVar5 + 2) = uStack10; - } - return uVar5; -} - - - -void set_obj_instance_scale_to_zero(int *ptrobjinstance) - -{ - ptrobjinstance[2] = 0; - return; -} - - - -uint get_aircraft_obj_instance_controller(int *objheader) - -{ - int *piVar1; - int iVar2; - int iVar3; - int iVar4; - undefined2 uVar5; - uint uVar6; - uint local_8; - - uVar6 = 0; - local_8 = 0; - uVar5 = 0xffff; - if (dword_80036078 == 0) { - iVar2 = 0; - if (0 < dword_80036070) { - iVar4 = 0; - iVar3 = ptr_allocation_0; - do { - iVar2 += 1; - if (*(int *)(iVar3 + 8) == 0) { - if (*(short *)(objheader + 5) < 1) { - local_8 = *(uint *)(iVar3 + 0x10); - } - else { - if ((*(int *)(iVar3 + 0x10) == 0) || (*(short *)(iVar3 + 2) < *(short *)(objheader + 5)) - ) goto LAB_7f06c374; - local_8 = *(uint *)(iVar3 + 0x10); - } - uVar6 = iVar4 + ptr_allocation_0; - uVar5 = *(undefined2 *)(iVar3 + 2); - break; - } -LAB_7f06c374: - iVar4 += 0xbc; - iVar3 += 0xbc; - } while (iVar2 < dword_80036070); - } - } - else { - iVar2 = 0; - if (0 < dword_80036070 + -10) { - iVar4 = 0; - iVar3 = ptr_allocation_0; - do { - piVar1 = (int *)(iVar3 + 8); - iVar2 += 1; - iVar3 += 0xbc; - if (*piVar1 == 0) { - uVar6 = iVar4 + ptr_allocation_0; - break; - } - iVar4 += 0xbc; - } while (iVar2 < dword_80036070 + -10); - } - if (uVar6 == 0) { - uVar6 = allocate_bytes_in_bank(0xc0,4); - } - uVar5 = 0xffff; - if (0 < *(short *)(objheader + 5)) { - local_8 = allocate_bytes_in_bank(((int)*(short *)(objheader + 5) * 4 + 0xfU | 0xf) ^ 0xf,4); - uVar5 = *(undefined2 *)(objheader + 5); - } - } - if (uVar6 != 0) { - proc_7F075FAC(uVar6,(ushort **)objheader,local_8); - *(undefined2 *)(uVar6 + 2) = uVar5; - } - return uVar6; -} - - - -void proc_7F06C3B4(int param_1,ushort *param_2,ushort **param_3) - -{ - proc_7F076030(param_1,*(int *)(param_1 + 8),param_2,param_3); - unknown_object_microcode_handler(param_1,*param_3); - return; -} - - - -void set_aircraft_obj_inst_scale_to_zero(int *objinstance) - -{ - objinstance[2] = 0; - return; -} - - - -void set_80036084(s32 param_1) - -{ - dword_80036084 = param_1; - return; -} - - - -void set_flt_80036088(f32 param_1) - -{ - flt_80036088 = param_1; - return; -} - - - -void proc_7F06C418(undefined4 *param_1,undefined4 *param_2) - -{ - int iVar1; - - iVar1 = 0; - do { - iVar1 += 1; - *param_2 = *param_1; - param_2[1] = param_1[1]; - param_2[2] = param_1[2]; - param_2[3] = param_1[3]; - param_1 = param_1 + 4; - param_2 = param_2 + 4; - } while (iVar1 != 4); - return; -} - - - -void set_8003608C(undefined4 param_1) - -{ - vtxallocator = param_1; - return; -} - - - -void return_null(void) - -{ - return; -} - - - -void proc_7F06C474(int param_1,float *param_2,undefined4 param_3,undefined4 param_4) - -{ - int iVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - - iVar1 = getsubmatrix(param_1,(uint)param_2,param_3,param_4); - fVar3 = -*(float *)(iVar1 + 0x30); - fVar4 = -*(float *)(iVar1 + 0x34); - fVar5 = -*(float *)(iVar1 + 0x38); - fVar2 = sqrtf(fVar3 * fVar3 + fVar4 * fVar4 + fVar5 * fVar5); - if (0.00000000 < fVar2) { - fVar2 = 1.00000000 / (*(float *)(param_1 + 0x14) * fVar2); - *param_2 = fVar3 * fVar2; - param_2[1] = fVar4 * fVar2; - param_2[2] = fVar5 * fVar2; - } - else { - *param_2 = 0.00000000; - param_2[1] = 0.00000000; - param_2[2] = 1.00000000 / *(float *)(param_1 + 0x14); - } - return; -} - - - -void proc_7F06C550(int param_1,float *param_2,undefined4 param_3,undefined4 param_4) - -{ - proc_7F06C474(param_1,param_2,param_3,param_4); - return; -} - - - -undefined2 proc_7F06C570(ushort *param_1,longlong param_2) - -{ - uint uVar1; - ushort uVar2; - - if (param_1 != NULL) { - uVar2 = *param_1; - while( true ) { - uVar2 &= 0xff; - if (uVar2 == 1) { - return *(undefined2 *)(*(int *)(param_1 + 2) + 2); - } - if (uVar2 == 2) { - if (param_2 == 0x200) { - uVar1 = 2; - } - else { - uVar1 = (uint)(param_2 == 0x100); - } - return *(undefined2 *)(*(int *)(param_1 + 2) + uVar1 * 2 + 0xe); - } - if (uVar2 == 3) { - if (param_2 == 0x200) { - uVar1 = 2; - } - else { - uVar1 = (uint)(param_2 == 0x100); - } - return *(undefined2 *)(*(int *)(param_1 + 2) + uVar1 * 2 + 0xe); - } - if (uVar2 == 0x15) { - return *(undefined2 *)(*(int *)(param_1 + 2) + 0xc); - } - param_1 = *(ushort **)(param_1 + 4); - if (param_1 == NULL) break; - uVar2 = *param_1; - } - } - return 0xffff; -} - - - -int proc_7F06C660(int param_1,ushort *param_2,longlong param_3) - -{ - short sVar2; - int iVar1; - - sVar2 = proc_7F06C570(param_2,param_3); - if (sVar2 < 0) { - iVar1 = 0; - } - else { - iVar1 = *(int *)(param_1 + 0xc) + (int)sVar2 * 0x40; - } - return iVar1; -} - - - -int getsubmatrix(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - ushort **object; - int iVar1; - - if (param_1 == 0) { - osSyncPrintf("getsubmatrix: no objinst!\n",param_2,param_3,param_4); - return_null(); - } - object = *(ushort ***)(param_1 + 8); - if (object == NULL) { - osSyncPrintf("getsubmatrix: objinst has no object!\n"); - return_null(); - object = *(ushort ***)(param_1 + 8); - } - iVar1 = proc_7F06C660(param_1,*object,0); - return iVar1; -} - - - -void proc_7F06C710(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4) - -{ - int iVar1; - - iVar1 = getsubmatrix(param_1,(uint)param_2,param_3,param_4); - if (iVar1 == 0) { - *param_2 = 0; - param_2[1] = 0; - param_2[2] = 0; - } - else { - *param_2 = *(undefined4 *)(iVar1 + 0x30); - param_2[1] = *(undefined4 *)(iVar1 + 0x34); - param_2[2] = *(undefined4 *)(iVar1 + 0x38); - } - return; -} - - - -float proc_7F06C768(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - int iVar1; - float fVar2; - - iVar1 = getsubmatrix(param_1,param_2,param_3,param_4); - if (iVar1 == 0) { - fVar2 = 0.00000000; - } - else { - fVar2 = -*(float *)(iVar1 + 0x38); - } - return fVar2; -} - - - -int extract_id_from_object_structure_microcode(int objinst,ushort *partdesc) - -{ - ushort uVar1; - ushort *partdesc_00; - int iVar2; - uint uVar3; - - uVar3 = 0; - iVar2 = *(int *)(objinst + 0x10); - if (true) { - switch((uint)*partdesc & 0xff) { - case 1: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0xc); - break; - case 7: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x1aa); - break; - case 8: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0xc); - break; - case 9: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x22); - break; - case 0xb: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x44); - break; - case 0xc: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x20); - break; - case 0x12: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 4); - break; - case 0x17: - uVar3 = (uint)**(ushort **)(partdesc + 2); - break; - case 0x18: - uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x1a); - } - } - partdesc_00 = *(ushort **)(partdesc + 4); - if (partdesc_00 != NULL) { - uVar1 = *partdesc_00; - while ((uVar1 & 0xff) != 0x17) { - partdesc_00 = *(ushort **)(partdesc_00 + 4); - if (partdesc_00 == NULL) goto LAB_7f06c888; - uVar1 = *partdesc_00; - } - iVar2 = extract_id_from_object_structure_microcode(objinst,partdesc_00); - iVar2 = *(int *)(iVar2 + 4); - } -LAB_7f06c888: - return (int)(uVar3 * 4 + iVar2); -} - - - -void getpartoffset(longlong param_1,ushort *param_2,undefined4 *param_3,undefined4 param_4) - -{ - undefined4 *puVar1; - int iVar2; - ushort uVar3; - - if (param_1 == 0) { - osSyncPrintf("getpartoffset: no objinst!",param_2,param_3,param_4); - return_null(); - } - if (param_2 == NULL) { - osSyncPrintf("getpartoffset: no partdesc!"); - return_null(); - } - uVar3 = *param_2 & 0xff; - if (uVar3 == 1) { - iVar2 = extract_id_from_object_structure_microcode((int)param_1,param_2); - *param_3 = *(undefined4 *)(iVar2 + 8); - param_3[1] = *(undefined4 *)(iVar2 + 0xc); - param_3[2] = *(undefined4 *)(iVar2 + 0x10); - } - else { - if (uVar3 == 2) { - puVar1 = *(undefined4 **)(param_2 + 2); - *param_3 = *puVar1; - param_3[1] = puVar1[1]; - param_3[2] = puVar1[2]; - } - else { - if (uVar3 == 3) { - puVar1 = *(undefined4 **)(param_2 + 2); - *param_3 = *puVar1; - param_3[1] = puVar1[1]; - param_3[2] = puVar1[2]; - } - else { - if (uVar3 == 0x15) { - puVar1 = *(undefined4 **)(param_2 + 2); - *param_3 = *puVar1; - param_3[1] = puVar1[1]; - param_3[2] = puVar1[2]; - } - else { - *param_3 = 0; - param_3[1] = 0; - param_3[2] = 0; - } - } - } - } - return; -} - - - -void setpartoffset(longlong param_1,ushort *param_2,float *param_3,undefined4 param_4) - -{ - float *pfVar1; - int iVar2; - ushort uVar3; - float fVar4; - float fVar5; - - if (param_1 == 0) { - osSyncPrintf("setpartoffset: no objinst!",param_2,param_3,param_4); - return_null(); - } - if (param_2 == NULL) { - osSyncPrintf("setpartoffset: no partdesc!"); - return_null(); - } - uVar3 = *param_2 & 0xff; - if (uVar3 == 1) { - iVar2 = extract_id_from_object_structure_microcode((int)param_1,param_2); - fVar4 = *param_3 - *(float *)(iVar2 + 8); - fVar5 = param_3[2] - *(float *)(iVar2 + 0x10); - *(float *)(iVar2 + 8) = *param_3; - *(float *)(iVar2 + 0xc) = param_3[1]; - *(float *)(iVar2 + 0x10) = param_3[2]; - *(float *)(iVar2 + 0x24) = *(float *)(iVar2 + 0x24) + fVar4; - *(float *)(iVar2 + 0x2c) = *(float *)(iVar2 + 0x2c) + fVar5; - *(float *)(iVar2 + 0x34) = *(float *)(iVar2 + 0x34) + fVar4; - *(float *)(iVar2 + 0x3c) = *(float *)(iVar2 + 0x3c) + fVar5; - *(float *)(iVar2 + 0x40) = *(float *)(iVar2 + 0x40) + fVar4; - *(float *)(iVar2 + 0x48) = *(float *)(iVar2 + 0x48) + fVar5; - *(float *)(iVar2 + 0x4c) = *(float *)(iVar2 + 0x4c) + fVar4; - *(float *)(iVar2 + 0x54) = *(float *)(iVar2 + 0x54) + fVar5; - } - else { - if (uVar3 == 2) { - pfVar1 = *(float **)(param_2 + 2); - *pfVar1 = *param_3; - pfVar1[1] = param_3[1]; - pfVar1[2] = param_3[2]; - } - else { - if (uVar3 == 3) { - pfVar1 = *(float **)(param_2 + 2); - *pfVar1 = *param_3; - pfVar1[1] = param_3[1]; - pfVar1[2] = param_3[2]; - } - else { - if (uVar3 == 0x15) { - pfVar1 = *(float **)(param_2 + 2); - *pfVar1 = *param_3; - pfVar1[1] = param_3[1]; - pfVar1[2] = param_3[2]; - } - } - } - } - return; -} - - - -void getsuboffset(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4) - -{ - ushort **object; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - - if (param_1 == 0) { - osSyncPrintf("getsuboffset: no objinst!",param_2,param_3); - return_null(); - param_4 = extraout_a3_lo; - } - object = *(ushort ***)(param_1 + 8); - if (object == NULL) { - osSyncPrintf("getsuboffset: objinst has no object!"); - return_null(); - object = *(ushort ***)(param_1 + 8); - param_4 = extraout_a3_lo_00; - } - getpartoffset((longlong)param_1,*object,param_2,param_4); - return; -} - - - -void setsuboffset(int param_1,float *param_2,undefined4 param_3,undefined4 param_4) - -{ - ushort **object; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - - if (param_1 == 0) { - osSyncPrintf("setsuboffset: no objinst!",param_2,param_3); - return_null(); - param_4 = extraout_a3_lo; - } - object = *(ushort ***)(param_1 + 8); - if (object == NULL) { - osSyncPrintf("setsuboffset: objinst has no object!"); - return_null(); - object = *(ushort ***)(param_1 + 8); - param_4 = extraout_a3_lo_00; - } - setpartoffset((longlong)param_1,*object,param_2,param_4); - return; -} - - - -ushort ** getsubroty(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - ushort uVar1; - ushort *partdesc; - ushort **object; - - if (param_1 == 0) { - osSyncPrintf("getsubroty: no objinst!",param_2,param_3,param_4); - return_null(); - } - object = *(ushort ***)(param_1 + 8); - if (object == NULL) { - osSyncPrintf("getsubroty: objinst has no object!"); - return_null(); - object = *(ushort ***)(param_1 + 8); - partdesc = *object; - } - else { - partdesc = *object; - } - if (partdesc == NULL) { - osSyncPrintf("getsubroty: objinst has no root part!"); - return_null(); - partdesc = **(ushort ***)(param_1 + 8); - uVar1 = *partdesc; - } - else { - uVar1 = *partdesc; - } - if ((uVar1 & 0xff) == 1) { - object = (ushort **)extract_id_from_object_structure_microcode(param_1,partdesc); - } - return object; -} - - - -void setsubroty(int param_1,float param_2,float param_3,undefined4 param_4) - -{ - ushort uVar1; - float fVar2; - int iVar3; - float fVar4; - float fVar5; - ushort *rootpart; - - if (param_1 == 0) { - osSyncPrintf("setsubroty: no objinst!",param_3,param_4); - return_null(); - } - if (*(ushort ***)(param_1 + 8) == NULL) { - osSyncPrintf("setsubroty: objinst has no object!"); - return_null(); - rootpart = **(ushort ***)(param_1 + 8); - } - else { - rootpart = **(ushort ***)(param_1 + 8); - } - if (rootpart == NULL) { - osSyncPrintf("setsubroty: objinst has no root part!"); - return_null(); - rootpart = **(ushort ***)(param_1 + 8); - uVar1 = *rootpart; - } - else { - uVar1 = *rootpart; - } - if ((uVar1 & 0xff) == 1) { - iVar3 = extract_id_from_object_structure_microcode(param_1,rootpart); - fVar2 = flt_80054B5C; - fVar4 = param_3 - *(float *)(iVar3 + 0x14); - if (fVar4 < 0.00000000) { - fVar4 = fVar4 + flt_80054B58; - fVar5 = *(float *)(iVar3 + 0x30); - } - else { - fVar5 = *(float *)(iVar3 + 0x30); - } - *(float *)(iVar3 + 0x30) = fVar5 + fVar4; - if (fVar2 <= *(float *)(iVar3 + 0x30)) { - *(float *)(iVar3 + 0x30) = *(float *)(iVar3 + 0x30) - fVar2; - fVar5 = *(float *)(iVar3 + 0x20); - } - else { - fVar5 = *(float *)(iVar3 + 0x20); - } - *(float *)(iVar3 + 0x20) = fVar5 + fVar4; - if (fVar2 <= *(float *)(iVar3 + 0x20)) { - *(float *)(iVar3 + 0x20) = *(float *)(iVar3 + 0x20) - fVar2; - } - *(float *)(iVar3 + 0x14) = param_3; - } - return; -} - - - -void set_obj_instance_controller_scale(int instancecontroller,f32 scale) - -{ - undefined4 in_a1_lo; - - *(undefined4 *)(instancecontroller + 0x14) = in_a1_lo; - return; -} - - - -void proc_7F06CE84(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0xb8) = param_2; - return; -} - - - -float getjointsize(int param_1,ushort *param_2,undefined8 param_3,undefined4 param_4) - -{ - ushort uVar1; - - if (param_1 == 0) { - osSyncPrintf("getjointsize: no objinst!\n",param_2,0,param_4); - return_null(); - } - if (param_2 != NULL) { - uVar1 = *param_2; - while( true ) { - if (true) { - switch((uint)uVar1 & 0xff) { - case 1: - return *(float *)(*(int *)(param_2 + 2) + 8) * *(float *)(param_1 + 0x14); - case 2: - return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(param_1 + 0x14); - case 3: - return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(param_1 + 0x14); - case 0xb: - return *(float *)(*(int *)(param_2 + 2) + 0x40) * *(float *)(param_1 + 0x14); - case 0xc: - return *(float *)(*(int *)(param_2 + 2) + 0x1c) * *(float *)(param_1 + 0x14); - case 0xd: - return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(param_1 + 0x14); - case 0xe: - return *(float *)(*(int *)(param_2 + 2) + 0xc) * *(float *)(param_1 + 0x14); - case 0xf: - return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(param_1 + 0x14); - case 0x10: - return *(float *)(*(int *)(param_2 + 2) + 0x14) * *(float *)(param_1 + 0x14); - case 0x15: - return *(float *)(*(int *)(param_2 + 2) + 0x10) * *(float *)(param_1 + 0x14); - } - } - param_2 = *(ushort **)(param_2 + 4); - if (param_2 == NULL) break; - uVar1 = *param_2; - } - } - return 0.00000000; -} - - - -float getinstsize(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - int objdesc; - - if (param_1 == 0) { - osSyncPrintf("getinstsize: no objinst!\n",param_2,param_3,param_4); - return_null(); - } - objdesc = *(int *)(param_1 + 8); - if (objdesc == 0) { - osSyncPrintf("getinstsize: no objdesc!\n"); - return_null(); - objdesc = *(int *)(param_1 + 8); - } - return *(float *)(objdesc + 0x10) * *(float *)(param_1 + 0x14); -} - - - -void proc_7F06D07C(float *param_1,float *param_2,float param_3) - -{ - float in_a2_lo; - - *param_1 = *param_1 + (*param_2 - *param_1) * in_a2_lo; - param_1[1] = param_1[1] + (param_2[1] - param_1[1]) * in_a2_lo; - param_1[2] = param_1[2] + (param_2[2] - param_1[2]) * in_a2_lo; - return; -} - - - -float proc_7F06D0CC(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) - -{ - float fVar1; - - fVar1 = param_2 - param_1; - if (param_2 < param_1) { - fVar1 = fVar1 + flt_80054BB4; - } - if (fVar1 < flt_80054BBC) { - param_1 = param_1 + fVar1 * param_5; - if (flt_80054BB8 <= param_1) { - return param_1 - flt_80054BB8; - } - } - else { - param_1 = param_1 - (flt_80054BB8 - fVar1) * param_5; - if (param_1 < 0.00000000) { - param_1 = param_1 + flt_80054BB8; - } - } - return param_1; -} - - - -void proc_7F06D160(undefined8 param_1,undefined8 param_2,float param_3) - -{ - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined4 extraout_a1_hi; - undefined4 extraout_a1_hi_00; - float *pfVar1; - undefined4 extraout_a1_lo; - undefined4 extraout_a1_lo_00; - float in_a2_lo; - float fVar2; - - pfVar1 = (float *)param_2; - extraout_a0._4_4_ = (float *)param_1; - fVar2 = proc_7F06D0CC(*extraout_a0._4_4_,*pfVar1,param_1,param_2,in_a2_lo); - *extraout_a0._4_4_ = fVar2; - fVar2 = proc_7F06D0CC(extraout_a0._4_4_[1],pfVar1[1],extraout_a0, - CONCAT44(extraout_a1_hi,extraout_a1_lo),in_a2_lo); - extraout_a0._4_4_[1] = fVar2; - fVar2 = proc_7F06D0CC(extraout_a0._4_4_[2],pfVar1[2],extraout_a0_00, - CONCAT44(extraout_a1_hi_00,extraout_a1_lo_00),in_a2_lo); - extraout_a0._4_4_[2] = fVar2; - return; -} - - - -uint proc_7F06D1CC(int param_1,int param_2,int param_3) - -{ - byte bVar1; - ushort uVar2; - ushort *puVar3; - ulonglong uVar4; - byte *pbVar5; - ulonglong uVar6; - ulonglong uVar7; - uint uVar8; - - puVar3 = (ushort *)(*(int *)(param_1 + 8) + param_2 * 6); - bVar1 = *(byte *)(puVar3 + 1); - uVar4 = (ulonglong)bVar1; - uVar8 = 0; - if (bVar1 == 0) { - uVar2 = puVar3[2]; - } - else { - uVar7 = SEXT48((int)(8 - ((uint)*puVar3 + param_3 & 7))); - uVar6 = uVar7 & 0xff; - uVar6._4_4_ = (int)uVar6; - pbVar5 = (byte *)(*(int *)(param_1 + 0x10) + ((uint)*puVar3 + param_3 >> 3)); - if ((uVar7 & 0xff) <= uVar4) { - do { - uVar4 = (longlong)(int)((int)uVar4 - (uint)uVar6) & 0xff; - uVar8 |= ((uint)*pbVar5 & (1 << ((uint)uVar6 & 0x1f)) - 1U) << ((uint)uVar4 & 0x1f) & 0xffff - ; - pbVar5 = pbVar5 + 1; - uVar6 = 8; - uVar6._4_4_ = 8; - } while (7 < uVar4); - } - if (uVar4 != 0) { - uVar8 |= (int)(uint)*pbVar5 >> (uVar6._4_4_ - (uint)uVar4 & 0x1f) & - (1 << ((uint)uVar4 & 0x1f)) - 1U & 0xffff; - } - if ((bVar1 < 0x10) && ((uVar8 & 1 << ((uint)bVar1 + 0x1f & 0x1f)) != 0)) { - uVar8 |= (1 << (0x10 - (uint)bVar1 & 0x1f)) + -1 << ((uint)bVar1 & 0x1f) & 0xffffU; - } - uVar2 = puVar3[2]; - } - return uVar8 + (uint)uVar2 & 0xffff; -} - - - -uint proc_7F06D2E4(int param_1,longlong param_2,int param_3,int param_4,int param_5,short *param_6) - -{ - ushort uVar1; - uint uVar2; - uint uVar3; - - param_5 = (uint)*(ushort *)(param_4 + 0xc) * param_5; - if (param_2 == 0) { - uVar1 = *(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 2); - } - else { - uVar1 = *(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 4); - } - uVar2 = proc_7F06D1CC(param_4,(uint)uVar1,param_5); - *param_6 = (short)uVar2; - uVar2 = proc_7F06D1CC(param_4,(uint)uVar1 + 1,param_5); - param_6[1] = (short)uVar2; - uVar2 = proc_7F06D1CC(param_4,(uint)uVar1 + 2,param_5); - param_6[2] = (short)uVar2; - uVar2 = proc_7F06D1CC(param_4,(uint)uVar1 + 3,param_5); - uVar3 = uVar2 & 0xffff; - if (((int)param_2 != 0) && (*param_6 = -*param_6, uVar2 != 0)) { - uVar3 = 0x10000 - uVar2 & 0xffff; - } - return uVar3; -} - - - -float proc_7F06D3F4(int param_1,longlong param_2,int param_3,int param_4,int param_5,float *param_6) - -{ - uint uVar1; - float fVar2; - short sStack8; - short sStack6; - short sStack4; - - uVar1 = proc_7F06D2E4(param_1,param_2,param_3,param_4,param_5,&sStack8); - *param_6 = (float)(int)sStack8; - fVar2 = (float)uVar1; - param_6[1] = (float)(int)sStack6; - param_6[2] = (float)(int)sStack4; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - return (fVar2 * flt_80054BC0) / 65536.00000000; -} - - - -void proc_7F06D490(int param_1,ushort *param_2) - -{ - char *pcVar2; - longlong lVar1; - undefined8 extraout_a0; - undefined8 extraout_a1; - int iVar3; - float fVar4; - float extraout_f12; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - - pcVar2 = (char *)extract_id_from_object_structure_microcode(param_1,param_2); - if (*pcVar2 == '\0') { - fStack16 = *(float *)(pcVar2 + 0x34); - fStack12 = *(float *)(pcVar2 + 0x38); - fStack8 = *(float *)(pcVar2 + 0x3c); - *(undefined4 *)(pcVar2 + 0x14) = *(undefined4 *)(pcVar2 + 0x30); - if (*(float *)(param_1 + 0x2c) == 0.00000000) { - iVar3 = *(int *)(param_1 + 0x54); - } - else { - if (pcVar2[1] == '\0') { - iVar3 = *(int *)(param_1 + 0x54); - } - else { - proc_7F06D07C(&fStack16,(float *)(pcVar2 + 0x24),extraout_f12); - fVar4 = proc_7F06D0CC(*(float *)(pcVar2 + 0x30),*(float *)(pcVar2 + 0x20),extraout_a0, - extraout_a1,*(float *)(param_1 + 0x2c)); - *(float *)(pcVar2 + 0x14) = fVar4; - iVar3 = *(int *)(param_1 + 0x54); - } - } - if (((iVar3 != 0) || (*(float *)(param_1 + 0x84) != 0.00000000)) && (pcVar2[2] != '\0')) { - fVar4 = *(float *)(pcVar2 + 0x50); - if (*(float *)(param_1 + 0x5c) != 0.00000000) { - fVar4 = fVar4 + (*(float *)(pcVar2 + 0x44) - fVar4) * *(float *)(param_1 + 0x5c); - } - fStack12 = fStack12 + (fVar4 - fStack12) * *(float *)(param_1 + 0x84); - } - fStack28 = fStack16; - fStack24 = fStack12; - fStack20 = fStack8; - if ((*(code **)(param_1 + 0xa0) == NULL) || - (lVar1 = (**(code **)(param_1 + 0xa0))(param_1,pcVar2 + 8,&fStack28,pcVar2 + 4), lVar1 != 0)) - { - fStack16 = fStack28 - fStack16; - fStack8 = fStack20 - fStack8; - *(float *)(pcVar2 + 8) = fStack28; - *(float *)(pcVar2 + 0xc) = fStack24 + *(float *)(pcVar2 + 4); - *(float *)(pcVar2 + 0x10) = fStack20; - *(float *)(pcVar2 + 0x34) = *(float *)(pcVar2 + 0x34) + fStack16; - *(float *)(pcVar2 + 0x3c) = *(float *)(pcVar2 + 0x3c) + fStack8; - if (pcVar2[1] != '\0') { - *(float *)(pcVar2 + 0x24) = *(float *)(pcVar2 + 0x24) + fStack16; - *(float *)(pcVar2 + 0x2c) = *(float *)(pcVar2 + 0x2c) + fStack8; - } - if (pcVar2[2] != '\0') { - *(float *)(pcVar2 + 0x4c) = *(float *)(pcVar2 + 0x4c) + fStack16; - *(float *)(pcVar2 + 0x54) = *(float *)(pcVar2 + 0x54) + fStack8; - *(float *)(pcVar2 + 0x40) = *(float *)(pcVar2 + 0x40) + fStack16; - *(float *)(pcVar2 + 0x48) = *(float *)(pcVar2 + 0x48) + fStack8; - } - } - } - return; -} - - - -void subcalcpos(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - ushort *puVar1; - - if (param_1 == 0) { - osSyncPrintf("subcalcpos: no objanim!\n",param_2,param_3,param_4); - return_null(); - } - if (*(ushort ***)(param_1 + 8) == NULL) { - osSyncPrintf("subcalcpos: no objdesc!\n"); - return_null(); - puVar1 = **(ushort ***)(param_1 + 8); - } - else { - puVar1 = **(ushort ***)(param_1 + 8); - } - if ((puVar1 != NULL) && ((*puVar1 & 0xff) == 1)) { - proc_7F06D490(param_1,puVar1); - } - return; -} - - - -void process_01_group_heading(float **param_1,int param_2,ushort *param_3) - -{ - int iVar1; - longlong extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - longlong lVar2; - longlong extraout_a1; - longlong lVar3; - float *pfVar4; - float fVar5; - float afStack96 [16]; - float *pfStack32; - float *pfStack24; - float fStack20; - float *pfStack16; - float fStack12; - int iStack8; - int iStack4; - - iStack4 = *(int *)(param_3 + 2); - iVar1 = extract_id_from_object_structure_microcode(param_2,param_3); - lVar3 = (longlong)param_2; - pfStack16 = (float *)(iVar1 + 8); - fStack12 = *(float *)(param_2 + 0x14); - fVar5 = *(float *)(iVar1 + 0x14); - pfStack32 = (float *)(*(int *)(param_2 + 0xc) + (int)*(short *)(iStack4 + 2) * 0x40); - lVar2 = (longlong)(int)*(ushort **)(param_3 + 4); - if (lVar2 == 0) { - pfVar4 = *param_1; - } - else { - fStack20 = fVar5; - iStack8 = iVar1; - pfVar4 = (float *)proc_7F06C660(param_2,*(ushort **)(param_3 + 4),0); - lVar3 = extraout_a0; - lVar2 = extraout_a1; - fVar5 = fStack20; - iVar1 = iStack8; - } - if (*(float *)(iVar1 + 0x18) != 0.00000000) { - pfStack24 = pfVar4; - fVar5 = proc_7F06D0CC(fVar5,*(float *)(iVar1 + 0x1c),lVar3,lVar2,*(float *)(iVar1 + 0x18)); - pfVar4 = pfStack24; - } - if (pfVar4 == NULL) { - proc_7F0584D0(pfStack16,fVar5,(float *)fVar5); - if (fStack12 != 1.00000000) { - proc_7F058B10(fStack12,extraout_a0_01,pfStack32); - } - } - else { - pfStack24 = pfVar4; - proc_7F0584D0(pfStack16,fVar5,(float *)fVar5); - if (fStack12 != 1.00000000) { - proc_7F058B10(fStack12,extraout_a0_00,afStack96); - } - proc_7F05818C(pfStack24,afStack96,(int)pfStack32); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F06D8B0(void) - -{ - float **in_a0_lo; - longlong lVar1; - longlong extraout_a0; - longlong extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 uVar2; - int in_a1_lo; - ushort *in_a2_lo; - int iVar3; - float *in_a3_lo; - float in_f0; - float extraout_f12; - float fVar4; - float fVar5; - float *pfStack144; - float afStack140 [4]; - float afStack124 [7]; - int iStack96; - int iStack92; - int iStack88; - int iStack84; - float afStack80 [17]; - float *pfStack12; - float *pfStack8; - uint uStack4; - - uStack4 = (uint)*in_a2_lo; - pfStack8 = *(float **)(in_a2_lo + 2); - iStack84 = (int)*(short *)((int)pfStack8 + 0xe); - iStack88 = (int)*(short *)(pfStack8 + 4); - iStack92 = (int)*(short *)((int)pfStack8 + 0x12); - iStack96 = *(int *)(in_a1_lo + 0xc); - if (*(ushort **)(in_a2_lo + 4) == NULL) { - pfStack12 = *in_a0_lo; - } - else { - pfStack12 = (float *)proc_7F06C660(in_a1_lo,*(ushort **)(in_a2_lo + 4),0); - } - if (pfStack12 == NULL) { - proc_7F05892C(pfStack8,in_a3_lo,(float *)(iStack84 * 0x40 + iStack96)); - } - else { - proc_7F05892C(pfStack8,in_a3_lo,afStack80); - iVar3 = iStack84 * 0x40 + iStack96; - proc_7F05818C(pfStack12,afStack80,iVar3); - if (dword_80036090 != NULL) { - in_f0 = (float)(*dword_80036090)(iStack84,iVar3); - } - } - lVar1 = (longlong)(int)in_a3_lo; - if ((uStack4 & 0x100) != 0) { - proc_7F05B3F4(in_a3_lo,afStack124); - proc_7F05BC68(afStack124,extraout_f12,(float *)0x3f000000); - if (pfStack12 == NULL) { - proc_7F05B9B4(pfStack8,afStack140,(float *)(iStack88 * 0x40 + iStack96)); - lVar1 = extraout_a0_00; - } - else { - proc_7F05B9B4(pfStack8,afStack140,afStack80); - proc_7F05818C(pfStack12,afStack80,iStack88 * 0x40 + iStack96); - lVar1 = extraout_a0; - } - } - if ((uStack4 & 0x200) != 0) { - if (pfStack12 == NULL) { - pfStack144 = (float *)(iStack92 * 0x40 + iStack96); - } - else { - pfStack144 = afStack80; - } - fVar4 = in_a3_lo[1]; - if (fVar4 < flt_80054BC4) { - fVar4 = fVar4 * 0.50000000; - } - else { - fVar4 = flt_80054BCC - (flt_80054BC8 - fVar4) * 0.50000000; - } - proc_7F0585FC(fVar4,lVar1,pfStack144); - if (flt_80054BD0 <= fVar4) { - fVar4 = flt_80054BD4 - fVar4; - } - fVar5 = 1.50000000; - uVar2 = extraout_a0_01; - if (fVar4 < flt_80054BD8) { - proc_7F05A9E0(fVar4); - uVar2 = extraout_a0_02; - fVar5 = in_f0; - } - proc_7F058A4C(fVar5,uVar2,(int)pfStack144); - proc_7F058998(pfStack8,(int)pfStack144); - if (pfStack12 != NULL) { - proc_7F05818C(pfStack12,pfStack144,iStack92 * 0x40 + iStack96); - } - } - return; -} - - - -void proc_7F06DB5C(float **param_1,int param_2,ushort *param_3,float *param_4) - -{ - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 uVar1; - int iVar2; - float fVar3; - float fVar4; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fVar5; - float *pfStack128; - float afStack124 [7]; - int iStack96; - int iStack92; - int iStack88; - int iStack84; - float afStack80 [17]; - float *pfStack12; - float *pfStack8; - uint uStack4; - - uStack4 = (uint)*param_3; - pfStack8 = *(float **)(param_3 + 2); - iStack84 = (int)*(short *)((int)pfStack8 + 0xe); - iStack88 = (int)*(short *)(pfStack8 + 4); - iStack92 = (int)*(short *)((int)pfStack8 + 0x12); - iStack96 = *(int *)(param_2 + 0xc); - if (*(ushort **)(param_3 + 4) == NULL) { - pfStack12 = *param_1; - } - else { - pfStack12 = (float *)proc_7F06C660(param_2,*(ushort **)(param_3 + 4),0); - } - if (pfStack12 == NULL) { - proc_7F05B9B4(pfStack8,param_4,(float *)(iStack84 * 0x40 + iStack96)); - fVar3 = extraout_f12_01; - } - else { - proc_7F05B9B4(pfStack8,param_4,afStack80); - iVar2 = iStack84 * 0x40 + iStack96; - proc_7F05818C(pfStack12,afStack80,iVar2); - fVar3 = extraout_f12; - if (dword_80036090 != NULL) { - (*dword_80036090)(iStack84,iVar2); - fVar3 = extraout_f12_00; - } - } - if ((uStack4 & 0x100) != 0) { - proc_7F05BC68(param_4,fVar3,(float *)0x3f000000); - if (pfStack12 == NULL) { - proc_7F05B9B4(pfStack8,afStack124,(float *)(iStack88 * 0x40 + iStack96)); - } - else { - proc_7F05B9B4(pfStack8,afStack124,afStack80); - proc_7F05818C(pfStack12,afStack80,iStack88 * 0x40 + iStack96); - } - } - if ((uStack4 & 0x200) != 0) { - if (pfStack12 == NULL) { - pfStack128 = (float *)(iStack92 * 0x40 + iStack96); - } - else { - pfStack128 = afStack80; - } - fVar3 = proc_7F05ACB0(*param_4); - fVar4 = fVar3 + fVar3; - if (fVar4 < flt_80054BDC) { - fVar4 = fVar4 * 0.50000000; - } - else { - fVar4 = flt_80054BE4 - (flt_80054BE0 - fVar4) * 0.50000000; - } - proc_7F0585FC(fVar4,extraout_a0,pfStack128); - if (flt_80054BE8 <= fVar4) { - fVar4 = flt_80054BEC - fVar4; - } - fVar5 = 1.50000000; - uVar1 = extraout_a0_00; - if (fVar4 < flt_80054BF0) { - proc_7F05A9E0(fVar4); - uVar1 = extraout_a0_01; - fVar5 = fVar3; - } - proc_7F058A4C(fVar5,uVar1,(int)pfStack128); - proc_7F058998(pfStack8,(int)pfStack128); - if (pfStack12 != NULL) { - proc_7F05818C(pfStack12,pfStack128,iStack92 * 0x40 + iStack96); - } - } - return; -} - - - -uint proc_7F06DE04(int param_1,uint param_2,uint param_3) - -{ - uint uVar1; - byte *pbVar2; - uint uVar3; - uint uVar4; - uint uVar5; - - uVar4 = 8 - (param_3 & 7); - uVar5 = 0; - uVar1 = param_2 & 0xff; - pbVar2 = (byte *)(param_1 + (param_3 >> 3)); - uVar3 = uVar4 & 0xff; - if ((uVar4 & 0xff) <= (param_2 & 0xff)) { - do { - uVar4 = uVar1 - uVar3; - uVar1 = uVar4 & 0xff; - uVar5 |= ((uint)*pbVar2 & (1 << (uVar3 & 0x1f)) - 1U) << (uVar4 & 0x1f) & 0xffff; - pbVar2 = pbVar2 + 1; - uVar3 = 8; - } while (7 < uVar1); - } - if (uVar1 != 0) { - uVar5 |= (int)(uint)*pbVar2 >> (uVar3 - uVar1 & 0x1f) & (1 << (uVar1 & 0x1f)) - 1U & 0xffff; - } - return uVar5 << (0x10 - (param_2 & 0xff) & 0x1f) & 0xffff; -} - - - -void proc_7F06DEC0(int param_1,longlong param_2,int param_3,int param_4,int param_5,float *param_6) - -{ - byte bVar1; - float fVar2; - uint uVar3; - uint uVar4; - uint uVar5; - float fVar6; - - bVar1 = *(byte *)(param_4 + 6); - if (param_2 == 0) { - uVar5 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 2) * (uint)bVar1; - } - else { - uVar5 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 4) * (uint)bVar1; - } - uVar3 = proc_7F06DE04(param_5,(uint)bVar1,uVar5); - uVar5 += (uint)bVar1; - uVar4 = proc_7F06DE04(param_5,(uint)bVar1,uVar5); - uVar5 = proc_7F06DE04(param_5,(uint)bVar1,uVar5 + (uint)bVar1); - fVar2 = flt_80054BF4; - fVar6 = (float)(uVar3 & 0xffff); - if (false) { - fVar6 = fVar6 + 4294967296.00000000; - } - *param_6 = (fVar6 * flt_80054BF4) / 65536.00000000; - if ((int)param_2 == 0) { - fVar6 = (float)(uVar4 & 0xffff); - if (false) { - fVar6 = fVar6 + 4294967296.00000000; - } - param_6[1] = (fVar6 * fVar2) / 65536.00000000; - fVar6 = (float)(uVar5 & 0xffff); - if (false) { - fVar6 = fVar6 + 4294967296.00000000; - } - param_6[2] = (fVar6 * fVar2) / 65536.00000000; - } - else { - if ((short)uVar4 == 0) { - param_6[1] = 0.00000000; - } - else { - param_6[1] = ((float)(0x10000 - (uVar4 & 0xffff)) * fVar2) / 65536.00000000; - } - if ((short)uVar5 == 0) { - param_6[2] = 0.00000000; - } - else { - param_6[2] = ((float)(0x10000 - (uVar5 & 0xffff)) * fVar2) / 65536.00000000; - } - } - return; -} - - - -void process_02_position(float **param_1,int param_2,ushort *param_3) - -{ - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fStack108; - undefined4 uStack104; - undefined4 uStack100; - float afStack96 [4]; - float afStack80 [4]; - float afStack64 [4]; - float fStack48; - undefined4 uStack44; - undefined4 uStack40; - float fStack36; - undefined4 uStack32; - undefined4 uStack28; - float fStack24; - undefined4 uStack20; - undefined4 uStack16; - int iStack12; - uint uStack8; - - iStack12 = *(int *)(*(int *)(param_2 + 8) + 4); - fStack24 = dword_80036094; - uStack20 = dword_80036098; - uStack16 = dword_8003609C; - uStack8 = (uint)*(ushort *)(*(int *)(param_3 + 2) + 0xc); - proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x24),iStack12,*(int *)(param_2 + 0x20), - *(int *)(param_2 + 0x34),&fStack24); - if (*(float *)(param_2 + 0x2c) != 0.00000000) { - fStack36 = dword_800360A0; - uStack32 = dword_800360A4; - uStack28 = dword_800360A8; - proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x24),iStack12,*(int *)(param_2 + 0x20), - *(int *)(param_2 + 0x38),&fStack36); - proc_7F06D160((longlong)(int)&fStack24,(longlong)(int)&fStack36,extraout_f12); - } - if (*(float *)(param_2 + 0x84) == 0.00000000) { - proc_7F06D8B0(); - } - else { - fStack48 = dword_800360AC; - uStack44 = dword_800360B0; - uStack40 = dword_800360B4; - proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x25),iStack12,*(int *)(param_2 + 0x54), - *(int *)(param_2 + 100),&fStack48); - if (*(float *)(param_2 + 0x5c) != 0.00000000) { - fStack108 = dword_800360B8; - uStack104 = dword_800360BC; - uStack100 = dword_800360C0; - proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x25),iStack12,*(int *)(param_2 + 0x54), - *(int *)(param_2 + 0x68),&fStack108); - proc_7F06D160((longlong)(int)&fStack48,(longlong)(int)&fStack108,extraout_f12_00); - } - proc_7F05B3F4(&fStack24,afStack64); - proc_7F05B3F4(&fStack48,afStack80); - proc_7F05BE10(afStack64,afStack80); - proc_7F05BA08(afStack64,afStack80,extraout_f12_01,*(float **)(param_2 + 0x84)); - proc_7F06DB5C(param_1,param_2,param_3,afStack96); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F06E2B8(void) - -{ - short sVar1; - short sVar2; - short sVar3; - int iVar4; - uint uVar5; - float **in_a0_lo; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - undefined8 extraout_a0_04; - undefined8 uVar6; - int in_a1_lo; - ushort *in_a2_lo; - float *in_a3_lo; - float in_f0; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fVar7; - float *pfStack112; - float afStack80 [17]; - float *pfStack12; - float *pfStack8; - uint uStack4; - - uStack4 = (uint)*in_a2_lo; - pfStack8 = *(float **)(in_a2_lo + 2); - sVar1 = *(short *)(pfStack8 + 4); - sVar2 = *(short *)((int)pfStack8 + 0xe); - sVar3 = *(short *)((int)pfStack8 + 0x12); - iVar4 = *(int *)(in_a1_lo + 0xc); - if (*(ushort **)(in_a2_lo + 4) == NULL) { - pfStack12 = *in_a0_lo; - } - else { - pfStack12 = (float *)proc_7F06C660(in_a1_lo,*(ushort **)(in_a2_lo + 4),0); - in_f12 = extraout_f12; - } - if (pfStack12 == NULL) { - proc_7F0584D0(pfStack8,in_f12,in_a3_lo); - uVar6 = extraout_a0_00; - fVar7 = extraout_f12_01; - } - else { - proc_7F0584D0(pfStack8,in_f12,in_a3_lo); - proc_7F05818C(pfStack12,afStack80,(int)sVar2 * 0x40 + iVar4); - uVar6 = extraout_a0; - fVar7 = extraout_f12_00; - } - if (((uStack4 & 0x100) != 0) || ((uStack4 & 0x200) != 0)) { - if ((float)in_a3_lo < flt_80054BF8) { - in_a3_lo = (float *)((float)in_a3_lo * 0.50000000); - } - else { - in_a3_lo = (float *)(flt_80054C00 - (flt_80054BFC - (float)in_a3_lo) * 0.50000000); - } - } - uVar5 = uStack4 & 0x200; - if ((uStack4 & 0x100) != 0) { - if (pfStack12 == NULL) { - proc_7F0584D0(pfStack8,fVar7,in_a3_lo); - uVar6 = extraout_a0_02; - } - else { - proc_7F0584D0(pfStack8,fVar7,in_a3_lo); - proc_7F05818C(pfStack12,afStack80,(int)sVar1 * 0x40 + iVar4); - uVar6 = extraout_a0_01; - } - } - if (uVar5 != 0) { - if (pfStack12 == NULL) { - pfStack112 = (float *)((int)sVar3 * 0x40 + iVar4); - } - else { - pfStack112 = afStack80; - } - proc_7F0585FC((float)in_a3_lo,uVar6,pfStack112); - if (flt_80054C04 <= (float)in_a3_lo) { - in_a3_lo = (float *)(flt_80054C08 - (float)in_a3_lo); - } - fVar7 = 1.50000000; - uVar6 = extraout_a0_03; - if ((float)in_a3_lo < flt_80054C0C) { - proc_7F05A9E0((float)in_a3_lo); - uVar6 = extraout_a0_04; - fVar7 = in_f0; - } - proc_7F058A4C(fVar7,uVar6,(int)pfStack112); - proc_7F058998(pfStack8,(int)pfStack112); - if (pfStack12 != NULL) { - proc_7F05818C(pfStack12,pfStack112,(int)sVar3 * 0x40 + iVar4); - } - } - return; -} - - - -float proc_7F06E540(int param_1,longlong param_2,int param_3,int param_4,int param_5) - -{ - byte bVar1; - uint uVar2; - float fVar3; - - bVar1 = *(byte *)(param_4 + 6); - if (param_2 == 0) { - uVar2 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 2) * (uint)bVar1; - } - else { - uVar2 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 4) * (uint)bVar1; - } - uVar2 = proc_7F06DE04(param_5,(uint)bVar1,uVar2); - fVar3 = 0.00000000; - if ((int)param_2 == 0) { - fVar3 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - fVar3 = (fVar3 * flt_80054C14) / 65536.00000000; - } - else { - if (uVar2 != 0) { - fVar3 = ((float)(0x10000 - uVar2) * flt_80054C10) / 65536.00000000; - } - } - return fVar3; -} - - - -void process_03_unknown(undefined4 param_1,int param_2,int param_3) - -{ - ushort uVar1; - int iVar2; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - ulonglong extraout_a0_01; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - undefined8 uVar3; - ulonglong uVar4; - float fVar5; - float fVar6; - float fStack24; - - uVar1 = *(ushort *)(*(int *)(param_3 + 4) + 0xc); - uVar4 = (ulonglong)uVar1; - iVar2 = *(int *)(*(int *)(param_2 + 8) + 4); - fVar5 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x24),iVar2, - *(int *)(param_2 + 0x20),*(int *)(param_2 + 0x34)); - if (*(float *)(param_2 + 0x2c) != 0.00000000) { - fVar6 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x24),iVar2, - *(int *)(param_2 + 0x20),*(int *)(param_2 + 0x38)); - fVar5 = proc_7F06D0CC(fVar5,fVar6,extraout_a0,extraout_a1,*(float *)(param_2 + 0x2c)); - } - if (*(float *)(param_2 + 0x84) != 0.00000000) { - fStack24 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x25),iVar2, - *(int *)(param_2 + 0x54),*(int *)(param_2 + 100)); - uVar3 = extraout_a1_00; - if (*(float *)(param_2 + 0x5c) != 0.00000000) { - fVar6 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x25),iVar2, - *(int *)(param_2 + 0x54),*(int *)(param_2 + 0x68)); - fStack24 = proc_7F06D0CC(fStack24,fVar6,extraout_a0_00,extraout_a1_01, - *(float *)(param_2 + 0x5c)); - uVar4 = extraout_a0_01; - uVar3 = extraout_a1_02; - } - proc_7F06D0CC(fVar5,fStack24,uVar4,uVar3,*(float *)(param_2 + 0x84)); - } - proc_7F06E2B8(); - return; -} - - - -void process_15_subposition(float **param_1,int param_2,int param_3) - -{ - short sVar1; - int iVar2; - float afStack72 [16]; - float *pfStack8; - int *piStack4; - - piStack4 = *(int **)(param_3 + 4); - iVar2 = *(int *)(param_2 + 0xc); - sVar1 = *(short *)(piStack4 + 3); - if (*(ushort **)(param_3 + 8) == NULL) { - pfStack8 = *param_1; - } - else { - pfStack8 = (float *)proc_7F06C660(param_2,*(ushort **)(param_3 + 8),0); - } - if (pfStack8 == NULL) { - init_something_copy_posdata_to_it(piStack4,(int *)((int)sVar1 * 0x40 + iVar2)); - } - else { - init_something_copy_posdata_to_it(piStack4,(int *)afStack72); - proc_7F05818C(pfStack8,afStack72,(int)sVar1 * 0x40 + iVar2); - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void process_08_distance_triggers(void) - -{ - float *pfVar1; - undefined4 *puVar2; - int iVar3; - int objinst; - ushort *partdesc; - f32 fVar4; - float fVar5; - float fVar6; - - pfVar1 = *(float **)(partdesc + 2); - puVar2 = (undefined4 *)extract_id_from_object_structure_microcode(objinst,partdesc); - iVar3 = proc_7F06C660(objinst,partdesc,0); - if (dword_80036084 == 0) { - fVar4 = getPlayer_c_lodscalez(); - fVar5 = (float)fVar4 * -*(float *)(iVar3 + 0x38); - if (flt_80036088 != 1.00000000) { - fVar5 = fVar5 * flt_80036088; - } - } - else { - fVar5 = 0.00000000; - } - if (fVar5 <= *pfVar1 * *(float *)(objinst + 0x14)) { - if (*pfVar1 != 0.00000000) goto LAB_7f06e954; - fVar6 = pfVar1[1]; - } - else { - fVar6 = pfVar1[1]; - } - if (fVar5 <= fVar6 * *(float *)(objinst + 0x14)) { - *puVar2 = 1; - *(float *)(partdesc + 10) = pfVar1[2]; - return; - } -LAB_7f06e954: - *puVar2 = 0; - *(undefined4 *)(partdesc + 10) = 0; - return; -} - - - -void proc_7F06E970(int param_1,ushort *param_2) - -{ - int iVar1; - int *piVar2; - - iVar1 = *(int *)(param_2 + 2); - piVar2 = (int *)extract_id_from_object_structure_microcode(param_1,param_2); - if (*piVar2 == 0) { - *(undefined4 *)(param_2 + 10) = 0; - } - else { - *(undefined4 *)(param_2 + 10) = *(undefined4 *)(iVar1 + 8); - } - return; -} - - - -void process_12_handle_switch(int param_1,ushort *param_2) - -{ - undefined4 *puVar1; - int *piVar2; - - puVar1 = *(undefined4 **)(param_2 + 2); - piVar2 = (int *)extract_id_from_object_structure_microcode(param_1,param_2); - if (*piVar2 == 0) { - *(undefined4 *)(param_2 + 10) = 0; - } - else { - *(undefined4 *)(param_2 + 10) = *puVar1; - } - return; -} - - - -void process_17_pointer_to_head(int param_1,ushort *param_2) - -{ - int **ppiVar1; - int iVar2; - - ppiVar1 = (int **)extract_id_from_object_structure_microcode(param_1,param_2); - if (*ppiVar1 != NULL) { - iVar2 = **ppiVar1; - *(int *)(param_2 + 10) = iVar2; - if (iVar2 != 0) { - *(ushort **)(iVar2 + 8) = param_2; - while (iVar2 = *(int *)(iVar2 + 0xc), iVar2 != 0) { - *(ushort **)(iVar2 + 8) = param_2; - } - } - } - return; -} - - - -void proc_7F06EA54(int param_1,longlong param_2) - -{ - int iVar1; - int iVar2; - int iVar3; - int iVar4; - - iVar4 = *(int *)(param_1 + 4); - if (param_2 == 0) { - iVar1 = *(int *)(iVar4 + 0x1c); - iVar4 = *(int *)(iVar4 + 0x18); - } - else { - iVar1 = *(int *)(iVar4 + 0x18); - iVar4 = *(int *)(iVar4 + 0x1c); - } - if (iVar1 == 0) { - *(int *)(param_1 + 0x14) = iVar4; - if (iVar4 != 0) { - *(undefined4 *)(iVar4 + 0x10) = 0; - } - } - else { - *(int *)(param_1 + 0x14) = iVar1; - *(undefined4 *)(iVar1 + 0x10) = 0; - iVar3 = iVar1; - if ((*(int *)(iVar1 + 0xc) != 0) && (iVar3 = iVar1, iVar4 != *(int *)(iVar1 + 0xc))) { - iVar2 = *(int *)(iVar1 + 0xc); - do { - iVar3 = iVar2; - iVar2 = *(int *)(iVar3 + 0xc); - if (iVar2 == 0) break; - } while (iVar4 != iVar2); - } - *(int *)(iVar3 + 0xc) = iVar4; - if (iVar4 != 0) { - *(int *)(iVar4 + 0x10) = iVar3; - if ((*(int *)(iVar4 + 0xc) != 0) && (iVar1 != *(int *)(iVar4 + 0xc))) { - iVar3 = *(int *)(iVar4 + 0xc); - do { - iVar4 = iVar3; - iVar3 = *(int *)(iVar4 + 0xc); - if (iVar3 == 0) break; - } while (iVar1 != iVar3); - } - *(undefined4 *)(iVar4 + 0xc) = 0; - return; - } - } - return; -} - - - -void proc_7F06EB10(int param_1,ushort *param_2) - -{ - int *piVar1; - - piVar1 = (int *)extract_id_from_object_structure_microcode(param_1,param_2); - proc_7F06EA54((int)param_2,(longlong)*piVar1); - return; -} - - - -void process_09_head_hat_placement_interlink(int param_1,ushort *param_2) - -{ - short sVar1; - float *pfVar2; - float *pfVar3; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float *pfStack12; - undefined4 *puStack8; - - pfVar2 = *(float **)(param_2 + 2); - puStack8 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,param_2); - pfVar3 = (float *)proc_7F06C660(param_1,param_2,0); - sVar1 = *(short *)(pfVar2 + 8); - if (sVar1 == 0) { - fStack24 = pfVar2[3]; - fStack20 = pfVar2[4]; - fStack16 = pfVar2[5]; - pfStack12 = pfVar3; - proc_7F0583D8(pfVar3,&fStack24); - pfVar3 = pfStack12; - } - else { - if (sVar1 == 2) { - fStack24 = pfVar2[4] * pfVar3[4]; - fStack20 = pfVar2[4] * pfVar3[5]; - fStack16 = pfVar2[4] * pfVar3[6]; - } - else { - if (sVar1 == 3) { - fStack24 = pfVar2[5] * pfVar3[8]; - fStack20 = pfVar2[5] * pfVar3[9]; - fStack16 = pfVar2[5] * pfVar3[10]; - } - else { - if (sVar1 != 1) { - fStack36 = *pfVar2; - goto LAB_7f06ec68; - } - fStack24 = pfVar2[3] * *pfVar3; - fStack20 = pfVar2[3] * pfVar3[1]; - fStack16 = pfVar2[3] * pfVar3[2]; - } - } - } - fStack36 = *pfVar2; -LAB_7f06ec68: - fStack32 = pfVar2[1]; - fStack28 = pfVar2[2]; - proc_7F058474(pfVar3,&fStack36); - if (fStack28 * fStack16 + fStack24 * fStack36 + fStack20 * fStack32 < 0.00000000) { - *puStack8 = 1; - } - else { - *puStack8 = 0; - } - proc_7F06EB10(param_1,param_2); - return; -} - - - -void process_07_unknown(int param_1,ushort *param_2) - -{ - float *pfVar1; - undefined4 extraout_a2_lo; - undefined4 extraout_a3_lo; - int iVar2; - float __x; - float fVar3; - float fStack32; - float fStack28; - float fStack24; - uint *puStack8; - int iStack4; - - iStack4 = *(int *)(param_2 + 2); - puStack8 = (uint *)extract_id_from_object_structure_microcode(param_1,param_2); - pfVar1 = (float *)proc_7F06C660(param_1,param_2,0); - proc_7F06C550(param_1,&fStack32,extraout_a2_lo,extraout_a3_lo); - __x = proc_7F05ACB0(pfVar1[6] * fStack24 + fStack32 * pfVar1[4] + fStack28 * pfVar1[5]); - fVar3 = sinf(__x); - fVar3 = proc_7F05ACB0((fStack32 * pfVar1[8] + fStack28 * pfVar1[9] + fStack24 * pfVar1[10]) / - fVar3); - if ((pfVar1[2] * fStack24 + fStack32 * *pfVar1 + fStack28 * pfVar1[1] < 0.00000000) && - (0.00000000 < fVar3)) { - fVar3 = flt_80054C18 - fVar3; - } - iVar2 = (int)((__x * 64.00000000) / flt_80054C1C) * 0xc; - *puStack8 = (uint)*(byte *)(iStack4 + *(int *)(&dword_800360C4 + iVar2) + - ((int)((fVar3 * 65536.00000000) / flt_80054C1C) + - *(int *)(&DAT_800360c8 + iVar2) >> - (*(uint *)(&DAT_800360cc + iVar2) & 0x1f)) + 0x18); - return; -} - - - -void proc_7F06EEA4(undefined8 param_1,int param_2) - -{ - ushort uVar1; - bool bVar2; - ushort *puVar3; - ushort *puVar4; - - puVar3 = *(ushort **)(param_2 + 0x14); - if (puVar3 == NULL) { - return; - } - uVar1 = *puVar3; - do { - bVar2 = true; - if (true) { - switch((uint)uVar1 & 0xff) { - case 1: - case 2: - case 3: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x15: - bVar2 = false; - break; - case 7: - process_07_unknown(param_1._4_4_,puVar3); - break; - case 8: - process_08_distance_triggers(); - break; - case 9: - process_09_head_hat_placement_interlink(param_1._4_4_,puVar3); - break; - case 0x17: - process_17_pointer_to_head(param_1._4_4_,puVar3); - } - } - if (((!bVar2) || (puVar4 = *(ushort **)(puVar3 + 10), puVar4 == NULL)) && - (puVar4 = puVar3, puVar3 != NULL)) { - while (puVar3 != *(ushort **)(param_2 + 8)) { - puVar4 = *(ushort **)(puVar3 + 6); - if ((puVar4 != NULL) || (puVar4 = *(ushort **)(puVar3 + 4), puVar3 = puVar4, puVar4 == NULL) - ) goto LAB_7f06efa4; - } - puVar4 = NULL; - } -LAB_7f06efa4: - if (puVar4 == NULL) { - return; - } - uVar1 = *puVar4; - puVar3 = puVar4; - } while( true ); -} - - - -void proc_7F06EFC4(int param_1) - -{ - ushort uVar1; - ushort *puVar2; - ushort *puVar3; - - puVar2 = **(ushort ***)(param_1 + 8); - if (puVar2 == NULL) { - return; - } - uVar1 = *puVar2; - do { - if (false) { -switchD_7f06f00c_caseD_1: - puVar3 = *(ushort **)(puVar2 + 10); - } - else { - switch((uint)uVar1 & 0xff) { - default: - goto switchD_7f06f00c_caseD_1; - case 7: - process_07_unknown(param_1,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 8: - process_08_distance_triggers(); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 9: - process_09_head_hat_placement_interlink(param_1,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 0x12: - process_12_handle_switch(param_1,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 0x17: - process_17_pointer_to_head(param_1,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - } - } - if ((puVar3 == NULL) && (puVar3 = puVar2, puVar2 != NULL)) { - puVar3 = *(ushort **)(puVar2 + 6); - while ((puVar3 == NULL && (puVar2 = *(ushort **)(puVar2 + 4), puVar3 = puVar2, puVar2 != NULL) - )) { - puVar3 = *(ushort **)(puVar2 + 6); - } - } - if (puVar3 == NULL) { - return; - } - uVar1 = *puVar3; - puVar2 = puVar3; - } while( true ); -} - - - -void proc_7F06F0D0(float **param_1,int param_2) - -{ - ushort uVar1; - ushort *puVar2; - ushort *puVar3; - - puVar2 = **(ushort ***)(param_2 + 8); - if (puVar2 == NULL) { - return; - } - uVar1 = *puVar2; - do { - if (false) { -switchD_7f06f120_caseD_4: - puVar3 = *(ushort **)(puVar2 + 10); - } - else { - switch((uint)uVar1 & 0xff) { - case 1: - process_01_group_heading(param_1,param_2,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 2: - process_02_position(param_1,param_2,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 3: - process_03_unknown(param_1,param_2,(int)puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - default: - goto switchD_7f06f120_caseD_4; - case 7: - process_07_unknown(param_2,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 8: - process_08_distance_triggers(); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 9: - process_09_head_hat_placement_interlink(param_2,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 0x12: - process_12_handle_switch(param_2,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 0x15: - process_15_subposition(param_1,param_2,(int)puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - break; - case 0x17: - process_17_pointer_to_head(param_2,puVar2); - puVar3 = *(ushort **)(puVar2 + 10); - } - } - if ((puVar3 == NULL) && (puVar3 = puVar2, puVar2 != NULL)) { - puVar3 = *(ushort **)(puVar2 + 6); - while ((puVar3 == NULL && (puVar2 = *(ushort **)(puVar2 + 4), puVar3 = puVar2, puVar2 != NULL) - )) { - puVar3 = *(ushort **)(puVar2 + 6); - } - } - if (puVar3 == NULL) { - return; - } - uVar1 = *puVar3; - puVar2 = puVar3; - } while( true ); -} - - - -void instcalcmatrices(float **param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - float *mtxlist; - - if (param_2 == 0) { - osSyncPrintf("instcalcmatrices: no objinst!\n",0,param_3,param_4); - return_null(); - } - if (*param_1 == NULL) { - osSyncPrintf("instcalcmatrices: no basemtx!\n"); - return_null(); - mtxlist = param_1[4]; - } - else { - mtxlist = param_1[4]; - } - if (mtxlist == NULL) { - osSyncPrintf("instcalcmatrices: no mtxlist!\n"); - return_null(); - mtxlist = param_1[4]; - } - *(float **)(param_2 + 0xc) = mtxlist; - param_1[4] = param_1[4] + (int)*(short *)(*(int *)(param_2 + 8) + 0xe) * 0x10; - proc_7F06F0D0(param_1,param_2); - return; -} - - - -void subcalcmatrices(float **param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - short sVar1; - uint uVar2; - int *piVar3; - longlong lVar4; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - undefined4 extraout_a3_lo_02; - int iVar5; - - if (param_2 == 0) { - osSyncPrintf("subcalcmatrices: no objanim!\n"); - return_null(); - param_3 = extraout_a2_lo; - param_4 = extraout_a3_lo; - } - if (*param_1 == NULL) { - osSyncPrintf("subcalcmatrices: no basemtx!\n"); - return_null(); - param_3 = extraout_a2_lo_00; - param_4 = extraout_a3_lo_00; - } - if (param_1[4] == NULL) { - osSyncPrintf("subcalcmatrices: no mtxlist!\n"); - return_null(); - iVar5 = *(int *)(param_2 + 0x20); - param_3 = extraout_a2_lo_01; - param_4 = extraout_a3_lo_01; - } - else { - iVar5 = *(int *)(param_2 + 0x20); - } - if (iVar5 == 0) goto LAB_7f06f590; - if (*(int *)(param_2 + 0x18) == 0) { - lVar4 = (longlong)*(short *)(param_2 + 0x30); - } - else { - if (*(int *)(param_2 + 0x1c) == 0) { - osSyncPrintf("subcalcmatrices: no attach for objinst!\n"); - return_null(); - lVar4 = (longlong)*(short *)(param_2 + 0x30); - } - else { - lVar4 = (longlong)*(short *)(param_2 + 0x30); - } - } - if ((lVar4 < 0) || ((longlong)(ulonglong)*(ushort *)(*(int *)(param_2 + 0x20) + 4) <= lVar4)) { - osSyncPrintf("subcalcmatrices: framea out of range!\n"); - return_null(); - sVar1 = *(short *)(param_2 + 0x32); - } - else { - sVar1 = *(short *)(param_2 + 0x32); - } - if (((longlong)sVar1 < 0) || - ((longlong)(ulonglong)*(ushort *)(*(int *)(param_2 + 0x20) + 4) <= (longlong)sVar1)) { - osSyncPrintf("subcalcmatrices: frameb out of range!\n"); - return_null(); - } - if ((*(float *)(param_2 + 0x84) == 0.00000000) || - ((*(float *)(param_2 + 0x84) != 0.00000000 && (*(int *)(param_2 + 0x54) != 0)))) { - iVar5 = *(int *)(param_2 + 0x54); - } - else { - osSyncPrintf("subcalcmatrices: no anim2!\n"); - return_null(); - iVar5 = *(int *)(param_2 + 0x54); - } - if ((iVar5 != 0) && - (((iVar5 == 0 || ((longlong)*(short *)(param_2 + 0x60) < 0)) || - ((longlong)(ulonglong)*(ushort *)(iVar5 + 4) <= (longlong)*(short *)(param_2 + 0x60))))) { - osSyncPrintf("subcalcmatrices: frame2a out of range!\n"); - return_null(); - iVar5 = *(int *)(param_2 + 0x54); - } - if (iVar5 == 0) { - piVar3 = *(int **)(param_2 + 0x20); -LAB_7f06f4d0: - sVar1 = *(short *)(param_2 + 0x30); - } - else { - if (((iVar5 != 0) && (-1 < (longlong)*(short *)(param_2 + 0x62))) && - ((longlong)*(short *)(param_2 + 0x62) < (longlong)(ulonglong)*(ushort *)(iVar5 + 4))) { - piVar3 = *(int **)(param_2 + 0x20); - goto LAB_7f06f4d0; - } - osSyncPrintf("subcalcmatrices: frame2b out of range!\n"); - return_null(); - piVar3 = *(int **)(param_2 + 0x20); - sVar1 = *(short *)(param_2 + 0x30); - } - uVar2 = proc_7F0754BC(piVar3,(int)sVar1); - *(uint *)(param_2 + 0x34) = uVar2; - if (*(float *)(param_2 + 0x2c) == 0.00000000) { - piVar3 = *(int **)(param_2 + 0x54); - } - else { - uVar2 = proc_7F0754BC(*(int **)(param_2 + 0x20),(int)*(short *)(param_2 + 0x32)); - *(uint *)(param_2 + 0x38) = uVar2; - piVar3 = *(int **)(param_2 + 0x54); - } - if (piVar3 != NULL) { - uVar2 = proc_7F0754BC(piVar3,(int)*(short *)(param_2 + 0x60)); - *(uint *)(param_2 + 100) = uVar2; - if (*(float *)(param_2 + 0x5c) != 0.00000000) { - uVar2 = proc_7F0754BC(*(int **)(param_2 + 0x54),(int)*(short *)(param_2 + 0x62)); - *(uint *)(param_2 + 0x68) = uVar2; - } - } - proc_7F0755B0(); - param_3 = extraout_a2_lo_02; - param_4 = extraout_a3_lo_02; -LAB_7f06f590: - instcalcmatrices(param_1,param_2,param_3,param_4); - return; -} - - - -undefined4 proc_7F06F5AC(int param_1) - -{ - return *(undefined4 *)(param_1 + 0x20); -} - - - -undefined proc_7F06F5B4(int param_1) - -{ - return *(undefined *)(param_1 + 0x24); -} - - - -undefined4 proc_7F06F5BC(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -float proc_7F06F5C4(int param_1) - -{ - if (0.00000000 <= *(float *)(param_1 + 0x3c)) { - return *(float *)(param_1 + 0x3c); - } - if (*(int *)(param_1 + 0x20) == 0) { - return 0.00000000; - } - return (float)((uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4) - 1); -} - - - -undefined4 proc_7F06F610(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -float proc_7F06F618(int param_1) - -{ - float fVar1; - - fVar1 = *(float *)(param_1 + 0x40); - if (fVar1 < 0.00000000) { - fVar1 = -fVar1; - } - return fVar1; -} - - - -undefined4 proc_7F06F640(int param_1) - -{ - undefined4 uVar1; - - uVar1 = proc_7F06F610(param_1); - return uVar1; -} - - - -longlong proc_7F06F66C(longlong param_1,int param_2,float param_3) - -{ - ushort uVar1; - int iVar2; - longlong lVar3; - float in_a2_lo; - - if (param_1 < 0) { - if ((*(byte *)(param_2 + 7) & 1) == 0) { - lVar3 = 0; - } - else { - uVar1 = *(ushort *)(param_2 + 4); - iVar2 = -(int)param_1; - lVar3 = (longlong)(int)((uint)uVar1 - iVar2 % (uint)uVar1); - if (uVar1 == 0) { - trap(0x1c00); - } - if (((ulonglong)uVar1 == 0xffffffffffffffff) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - } - } - else { - if (0.00000000 <= in_a2_lo) { - if ((longlong)(int)in_a2_lo < param_1) { - iVar2 = proc_7F05C4B8(in_a2_lo); - return (longlong)iVar2; - } - uVar1 = *(ushort *)(param_2 + 4); - } - else { - uVar1 = *(ushort *)(param_2 + 4); - } - lVar3 = param_1; - if ((longlong)(ulonglong)uVar1 <= param_1) { - if ((*(byte *)(param_2 + 7) & 1) == 0) { - lVar3 = (longlong)(int)((uint)uVar1 - 1); - } - else { - lVar3 = (longlong)((int)param_1 % (uint)uVar1); - if (uVar1 == 0) { - trap(0x1c00); - } - if (((ulonglong)uVar1 == 0xffffffffffffffff) && (param_1 == -0x80000000)) { - trap(0x1800); - } - } - } - } - return lVar3; -} - - - -void proc_7F06F780(int param_1,float param_2) - -{ - ushort uVar1; - ushort *partdesc; - int iVar2; - float in_a1_lo; - - if (0.00000000 < in_a1_lo) { - if (*(int *)(param_1 + 0x20) == 0) { - *(undefined4 *)(param_1 + 0x54) = 0; - } - else { - partdesc = **(ushort ***)(param_1 + 8); - uVar1 = *partdesc; - *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x28); - *(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(param_1 + 0x2c); - *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x20); - *(undefined *)(param_1 + 0x25) = *(undefined *)(param_1 + 0x24); - *(undefined2 *)(param_1 + 0x60) = *(undefined2 *)(param_1 + 0x30); - *(undefined2 *)(param_1 + 0x62) = *(undefined2 *)(param_1 + 0x32); - *(undefined4 *)(param_1 + 0x70) = *(undefined4 *)(param_1 + 0x40); - *(undefined4 *)(param_1 + 0x74) = *(undefined4 *)(param_1 + 0x44); - *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1 + 0x48); - *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(param_1 + 0x4c); - *(undefined4 *)(param_1 + 0x80) = *(undefined4 *)(param_1 + 0x50); - *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + 0x3c); - if ((uVar1 & 0xff) == 1) { - iVar2 = extract_id_from_object_structure_microcode(param_1,partdesc); - *(undefined *)(iVar2 + 2) = 1; - *(undefined4 *)(iVar2 + 0x4c) = *(undefined4 *)(iVar2 + 0x34); - *(undefined4 *)(iVar2 + 0x50) = *(undefined4 *)(iVar2 + 0x38); - *(undefined4 *)(iVar2 + 0x54) = *(undefined4 *)(iVar2 + 0x3c); - *(undefined4 *)(iVar2 + 0x40) = *(undefined4 *)(iVar2 + 0x24); - *(undefined4 *)(iVar2 + 0x44) = *(undefined4 *)(iVar2 + 0x28); - *(undefined4 *)(iVar2 + 0x48) = *(undefined4 *)(iVar2 + 0x2c); - } - } - } - else { - *(undefined4 *)(param_1 + 0x54) = 0; - } - return; -} - - - -void proc_7F06F878(int param_1,undefined4 param_2,undefined param_3,float param_4,float param_5, - undefined4 param_6) - -{ - int iVar1; - ushort *partdesc; - bool bVar2; - int iVar3; - undefined8 extraout_a0; - undefined8 extraout_a1; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - undefined4 in_stack_00000014; - float fStack52; - float fStack48; - float fStack44; - float fStack36; - float fStack32; - ushort *puStack16; - - iVar1 = *(int *)(param_1 + 0x20); - if (*(int *)(param_1 + 0x54) == 0) { - *(undefined4 *)(param_1 + 0x88) = 0; - *(undefined4 *)(param_1 + 0x84) = 0; - } - else { - *(undefined4 *)(param_1 + 0x88) = in_stack_00000014; - *(undefined4 *)(param_1 + 0x8c) = 0; - *(undefined4 *)(param_1 + 0x84) = 0x3f800000; - } - *(undefined4 *)(param_1 + 0x20) = param_2; - *(undefined *)(param_1 + 0x24) = param_3; - *(undefined4 *)(param_1 + 0x3c) = 0xbf800000; - *(undefined4 *)(param_1 + 0x40) = param_6; - *(undefined4 *)(param_1 + 0x4c) = 0; - proc_7F06FF64(param_1,param_5); - *(undefined *)(param_1 + 0x26) = 0; - partdesc = **(ushort ***)(param_1 + 8); - if ((*partdesc & 0xff) == 1) { - puStack16 = *(ushort **)(partdesc + 2); - iVar3 = extract_id_from_object_structure_microcode(param_1,partdesc); - fStack52 = dword_80036244; - fStack32 = *(float *)(param_1 + 0x14) * *(float *)(param_1 + 0xb8); - fStack48 = dword_80036248; - fStack44 = dword_8003624C; - fVar4 = proc_7F06D3F4((uint)*puStack16,(longlong)*(char *)(param_1 + 0x24), - *(int *)(*(int *)(param_1 + 8) + 4),*(int *)(param_1 + 0x20), - (int)*(short *)(param_1 + 0x32),&fStack52); - if (fStack32 != 1.00000000) { - fStack52 = fStack52 * fStack32; - fStack48 = fStack48 * fStack32; - fStack44 = fStack44 * fStack32; - } - fStack36 = cosf(*(float *)(iVar3 + 0x14)); - fVar5 = sinf(*(float *)(iVar3 + 0x14)); - if (*(float *)(param_1 + 0x2c) == 0.00000000) { - *(float *)(iVar3 + 0x34) = *(float *)(iVar3 + 8); - *(undefined4 *)(iVar3 + 0x3c) = *(undefined4 *)(iVar3 + 0x10); - *(float *)(iVar3 + 0x38) = *(float *)(iVar3 + 0xc) - *(float *)(iVar3 + 4); - *(undefined4 *)(iVar3 + 0x30) = *(undefined4 *)(iVar3 + 0x14); - *(float *)(iVar3 + 0x24) = fStack44 * fVar5 + *(float *)(iVar3 + 8) + fStack52 * fStack36; - *(float *)(iVar3 + 0x28) = fStack48; - *(float *)(iVar3 + 0x2c) = fStack44 * fStack36 + (*(float *)(iVar3 + 0x3c) - fStack52 * fVar5) - ; - fVar5 = flt_80054D40; - if ((*(float *)(iVar3 + 0x18) == 0.00000000) && - (fVar4 = *(float *)(iVar3 + 0x30) + fVar4, bVar2 = flt_80054D40 <= fVar4, - *(float *)(iVar3 + 0x20) = fVar4, bVar2)) { - *(float *)(iVar3 + 0x20) = *(float *)(iVar3 + 0x20) - fVar5; - } - *(undefined *)(iVar3 + 1) = 1; - } - else { - fVar7 = fStack44 * fVar5 + fStack52 * fStack36; - fVar6 = fStack44 * fStack36 + -fStack52 * fVar5; - fVar5 = *(float *)(param_1 + 0x2c); - *(float *)(iVar3 + 0x24) = - *(float *)(iVar3 + 8) + fVar7 * (1.00000000 - *(float *)(param_1 + 0x2c)); - *(float *)(iVar3 + 0x28) = fStack48; - *(float *)(iVar3 + 0x2c) = *(float *)(iVar3 + 0x10) + fVar6 * (1.00000000 - fVar5); - *(float *)(iVar3 + 0x34) = *(float *)(iVar3 + 0x24) - fVar7; - fVar5 = *(float *)(iVar3 + 0xc) - *(float *)(iVar3 + 4); - *(float *)(iVar3 + 0x38) = - fVar5 - ((fStack48 - fVar5) * *(float *)(param_1 + 0x2c)) / - (1.00000000 - *(float *)(param_1 + 0x2c)); - *(float *)(iVar3 + 0x3c) = *(float *)(iVar3 + 0x2c) - fVar6; - fVar5 = *(float *)(iVar3 + 0x14) - fVar4; - if (fVar5 < 0.00000000) { - fVar5 = fVar5 + flt_80054D44; - } - fVar6 = proc_7F06D0CC(*(float *)(iVar3 + 0x14),fVar5,extraout_a0,extraout_a1, - *(float *)(param_1 + 0x2c)); - fVar5 = flt_80054D48; - *(float *)(iVar3 + 0x30) = fVar6; - if (*(float *)(iVar3 + 0x18) == 0.00000000) { - fVar4 = *(float *)(iVar3 + 0x30) + fVar4; - *(float *)(iVar3 + 0x20) = fVar4; - if (fVar5 <= fVar4) { - *(float *)(iVar3 + 0x20) = *(float *)(iVar3 + 0x20) - fVar5; - *(undefined *)(iVar3 + 1) = 1; - } - else { - *(undefined *)(iVar3 + 1) = 1; - } - } - else { - *(undefined *)(iVar3 + 1) = 1; - } - } - if (iVar1 == 0) { - *(undefined4 *)(iVar3 + 0x38) = *(undefined4 *)(iVar3 + 0x28); - } - } - return; -} - - - -void proc_7F06FC4C(int param_1,undefined4 param_2,undefined param_3,float param_4,undefined4 param_5 - ,float param_6,int param_7) - -{ - float extraout_f12; - int in_stack_00000018; - - if (in_stack_00000018 != 0) { - proc_7F06F780(param_1,param_4); - param_4 = extraout_f12; - } - proc_7F06F878(param_1,param_2,param_3,param_4,param_5,param_7); - return; -} - - - -void proc_7F06FCA8(int param_1,undefined4 param_2,undefined param_3,float param_4,undefined4 param_5 - ,float param_6) - -{ - float extraout_f12; - undefined4 in_stack_00000010; - - proc_7F06F780(param_1,param_4); - proc_7F06F878(param_1,param_2,param_3,extraout_f12,param_5,in_stack_00000010); - return; -} - - - -void proc_7F06FCFC(undefined4 *param_1,undefined4 *param_2) - -{ - undefined4 uVar1; - undefined4 uVar2; - undefined4 uVar3; - undefined4 uVar4; - undefined4 uVar5; - undefined4 uVar6; - undefined4 uVar7; - undefined4 uVar8; - undefined4 *puVar9; - undefined4 *puVar10; - undefined4 *puVar11; - undefined4 *puVar12; - - uVar1 = *param_2; - uVar2 = param_2[1]; - uVar3 = param_2[2]; - uVar4 = param_2[3]; - uVar5 = param_2[4]; - uVar6 = param_2[5]; - uVar7 = param_2[6]; - uVar8 = param_2[7]; - puVar11 = param_1; - puVar9 = param_2; - do { - puVar12 = puVar9; - puVar10 = puVar11; - puVar11 = puVar10 + 3; - *puVar12 = *puVar10; - puVar12[1] = puVar10[1]; - puVar12[2] = puVar10[2]; - puVar9 = puVar12 + 3; - } while (puVar11 != param_1 + 0x2d); - puVar12[3] = *puVar11; - puVar12[4] = puVar10[4]; - *param_2 = uVar1; - param_2[1] = uVar2; - param_2[2] = uVar3; - param_2[3] = uVar4; - param_2[4] = uVar5; - param_2[5] = uVar6; - param_2[6] = uVar7; - param_2[7] = uVar8; - return; -} - - - -void proc_7F06FDCC(int param_1,undefined4 param_2,undefined4 param_3) - -{ - *(undefined *)(param_1 + 0x26) = 1; - *(undefined4 *)(param_1 + 0x90) = param_2; - *(undefined4 *)(param_1 + 0x94) = param_3; - return; -} - - - -void proc_7F06FDE8(int param_1,float param_2) - -{ - float in_a1_lo; - - if ((*(int *)(param_1 + 0x20) != 0) && - (in_a1_lo < (float)((uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4) - 1))) { - *(float *)(param_1 + 0x3c) = in_a1_lo; - return; - } - *(undefined4 *)(param_1 + 0x3c) = 0xbf800000; - return; -} - - - -void proc_7F06FE3C(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0x98) = param_2; - return; -} - - - -void proc_7F06FE44(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0x9c) = param_2; - return; -} - - - -void proc_7F06FE4C(int param_1,undefined4 param_2,float param_3) - -{ - float in_a2_lo; - - if (in_a2_lo <= 0.00000000) { - *(undefined4 *)(param_1 + 0x40) = param_2; - *(undefined4 *)(param_1 + 0x4c) = 0; - return; - } - *(float *)(param_1 + 0x4c) = in_a2_lo; - *(undefined4 *)(param_1 + 0x44) = param_2; - *(undefined4 *)(param_1 + 0x50) = 0; - *(undefined4 *)(param_1 + 0x48) = *(undefined4 *)(param_1 + 0x40); - return; -} - - - -void proc_7F06FE90(int param_1,float param_2,float param_3) - -{ - float in_a1_lo; - float in_a2_lo; - float fVar1; - float fVar2; - - fVar1 = *(float *)(param_1 + 0x28); - if (fVar1 <= in_a1_lo) { - fVar1 = in_a1_lo - fVar1; - } - else { - fVar2 = (float)(uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4); - if (false) { - fVar2 = fVar2 + 4294967296.00000000; - } - fVar1 = (fVar2 - fVar1) + in_a1_lo; - } - proc_7F06FE4C(param_1,*(float *)(param_1 + 0x40) + (fVar1 + fVar1) / in_a2_lo,in_a1_lo); - return; -} - - - -void proc_7F06FF18(int param_1,undefined4 param_2,float param_3) - -{ - float in_a2_lo; - - if (in_a2_lo <= 0.00000000) { - *(undefined4 *)(param_1 + 0xa4) = param_2; - *(undefined4 *)(param_1 + 0xb0) = 0; - return; - } - *(float *)(param_1 + 0xb0) = in_a2_lo; - *(undefined4 *)(param_1 + 0xa8) = param_2; - *(undefined4 *)(param_1 + 0xb4) = 0; - *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(param_1 + 0xa4); - return; -} - - - -void proc_7F06FF5C(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0xa0) = param_2; - return; -} - - - -void proc_7F06FF64(int param_1,float param_2) - -{ - short sVar1; - bool bVar2; - int iVar4; - longlong lVar3; - float in_a1_lo; - int iVar5; - float fVar6; - float extraout_f12; - float extraout_f12_00; - - iVar4 = proc_7F05C3D8(in_a1_lo); - bVar2 = 0.00000000 <= *(float *)(param_1 + 0x40); - iVar5 = iVar4 + -1; - if (bVar2) { - iVar5 = iVar4 + 1; - } - lVar3 = proc_7F06F66C((longlong)iVar4,*(int *)(param_1 + 0x20),extraout_f12); - *(undefined2 *)(param_1 + 0x30) = (short)lVar3; - lVar3 = proc_7F06F66C((longlong)iVar5,*(int *)(param_1 + 0x20),extraout_f12_00); - *(undefined2 *)(param_1 + 0x32) = (short)lVar3; - sVar1 = *(short *)(param_1 + 0x30); - if (*(short *)(param_1 + 0x32) == sVar1) { - *(undefined4 *)(param_1 + 0x2c) = 0; - *(float *)(param_1 + 0x28) = (float)(int)sVar1; - } - else { - if (bVar2) { - *(float *)(param_1 + 0x2c) = in_a1_lo - (float)iVar4; - *(float *)(param_1 + 0x28) = (float)(int)sVar1 + (in_a1_lo - (float)iVar4); - } - else { - fVar6 = 1.00000000 - (in_a1_lo - (float)iVar5); - *(float *)(param_1 + 0x2c) = fVar6; - *(float *)(param_1 + 0x28) = (float)(int)*(short *)(param_1 + 0x32) + (1.00000000 - fVar6); - } - } - return; -} - - - -void proc_7F070090(int param_1,float param_2,float param_3) - -{ - short sVar1; - bool bVar2; - int iVar4; - longlong lVar3; - float in_a1_lo; - float in_a2_lo; - int iVar5; - float fVar6; - float extraout_f12; - float extraout_f12_00; - - proc_7F06FF64(param_1,in_a1_lo); - if (*(int *)(param_1 + 0x54) != 0) { - iVar4 = proc_7F05C3D8(in_a2_lo); - bVar2 = 0.00000000 <= *(float *)(param_1 + 0x70); - iVar5 = iVar4 + -1; - if (bVar2) { - iVar5 = iVar4 + 1; - } - lVar3 = proc_7F06F66C((longlong)iVar4,*(int *)(param_1 + 0x54),extraout_f12); - *(undefined2 *)(param_1 + 0x60) = (short)lVar3; - lVar3 = proc_7F06F66C((longlong)iVar5,*(int *)(param_1 + 0x54),extraout_f12_00); - *(undefined2 *)(param_1 + 0x62) = (short)lVar3; - sVar1 = *(short *)(param_1 + 0x60); - if (*(short *)(param_1 + 0x62) == sVar1) { - *(undefined4 *)(param_1 + 0x5c) = 0; - *(float *)(param_1 + 0x58) = (float)(int)sVar1; - } - else { - if (bVar2) { - *(float *)(param_1 + 0x5c) = in_a2_lo - (float)iVar4; - *(float *)(param_1 + 0x58) = (float)(int)sVar1 + (in_a2_lo - (float)iVar4); - } - else { - fVar6 = 1.00000000 - (in_a2_lo - (float)iVar5); - *(float *)(param_1 + 0x5c) = fVar6; - *(float *)(param_1 + 0x58) = (float)(int)*(short *)(param_1 + 0x62) + (1.00000000 - fVar6); - } - } - } - return; -} - - - -void proc_7F0701D4(undefined4 param_1) - -{ - dword_80036250 = param_1; - return; -} - - - -undefined4 proc_7F0701E0(void) - -{ - return dword_80036250; -} - - - -void proc_7F0701EC(int param_1,float param_2,float param_3,float param_4,float param_5) - -{ - short sVar1; - ushort *partdesc; - ushort *puVar2; - bool bVar3; - float fVar4; - char *pcVar6; - int iVar7; - longlong lVar5; - int iVar8; - float in_a3_lo; - char cVar9; - longlong lVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f14; - float fVar15; - float fVar16; - float in_stack_00000010; - float fStack96; - float fStack92; - float fStack88; - float fStack84; - float fStack76; - float fStack72; - float fStack68; - int iStack64; - float fStack48; - float fStack44; - float fStack40; - float fStack28; - int iStack24; - uint uStack20; - - partdesc = **(ushort ***)(param_1 + 8); - if ((*partdesc & 0xff) != 1) { - proc_7F070090(param_1,param_2,param_3); - return; - } - puVar2 = *(ushort **)(partdesc + 2); - pcVar6 = (char *)extract_id_from_object_structure_microcode(param_1,partdesc); - if (*pcVar6 != '\0') { - proc_7F070090(param_1,extraout_f12,extraout_f14); - return; - } - uStack20 = (uint)*puVar2; - iStack24 = *(int *)(*(int *)(param_1 + 8) + 4); - fStack28 = *(float *)(param_1 + 0x14) * *(float *)(param_1 + 0xb8); - fStack48 = DAT_80036254; - fStack44 = DAT_80036258; - fStack40 = DAT_8003625c; - fStack76 = *(float *)(pcVar6 + 0x34); - fStack72 = *(float *)(pcVar6 + 0x38); - fStack68 = *(float *)(pcVar6 + 0x3c); - fStack92 = *(float *)(pcVar6 + 0x24); - fVar15 = *(float *)(pcVar6 + 0x30); - fStack88 = *(float *)(pcVar6 + 0x28); - fStack84 = *(float *)(pcVar6 + 0x2c); - fStack96 = *(float *)(pcVar6 + 0x20); - cVar9 = pcVar6[1]; - fVar16 = *(float *)(param_1 + 0x40); - if (fVar16 < 0.00000000) { - fVar16 = -fVar16; - fVar11 = *(float *)(param_1 + 0x70); - } - else { - fVar11 = *(float *)(param_1 + 0x70); - } - if (fVar11 < 0.00000000) { - fVar11 = -fVar11; - } - bVar3 = param_4 <= param_5; - if (bVar3) { - iVar7 = proc_7F05C3D8(param_4); - iVar7 += 1; - iStack64 = proc_7F05C3D8(param_5); - fVar13 = extraout_f12_00; - } - else { - iVar7 = proc_7F05C4B8(param_4); - iVar7 += -1; - iStack64 = proc_7F05C4B8(param_5); - fVar13 = extraout_f12_01; - } - fVar4 = flt_80054D4C; - lVar10 = (longlong)iVar7; -LAB_7f070388: - if (bVar3) { - if ((longlong)iStack64 < lVar10) goto LAB_7f070860; - iVar7 = *(int *)(param_1 + 0x20); - } - else { - if (lVar10 < (longlong)iStack64) goto LAB_7f070860; - iVar7 = *(int *)(param_1 + 0x20); - } - lVar5 = proc_7F06F66C(lVar10,iVar7,fVar13); - *(undefined2 *)(param_1 + 0x30) = (short)lVar5; - if (cVar9 == '\0') { - fVar13 = proc_7F06D3F4(uStack20,(longlong)*(char *)(param_1 + 0x24),iStack24, - *(int *)(param_1 + 0x20),(int)lVar5,&fStack48); - if (fStack28 != 1.00000000) { - fStack48 = fStack48 * fStack28; - fStack44 = fStack44 * fStack28; - fStack40 = fStack40 * fStack28; - } - if (!bVar3) { - fStack48 = -fStack48; - fStack40 = -fStack40; - if (0.00000000 < fVar13) { - fVar13 = fVar4 - fVar13; - } - } - fVar12 = cosf(*(float *)(pcVar6 + 0x14)); - fVar14 = sinf(*(float *)(pcVar6 + 0x14)); - fStack76 = fStack76 + fStack48 * fVar12 + fStack40 * fVar14; - fStack72 = fStack44; - fStack68 = fStack68 + -fStack48 * fVar14 + fStack40 * fVar12; - fVar12 = extraout_f12_03; - fVar14 = fVar15; - if ((*(float *)(pcVar6 + 0x18) == 0.00000000) && - (fVar14 = fVar15 + fVar13, fVar12 = extraout_f12_03, fVar4 <= fVar14)) { - fVar12 = extraout_f12_03; - fVar14 = fVar14 - fVar4; - } - } - else { - fStack76 = fStack92; - fStack72 = fStack88; - fStack68 = fStack84; - fVar12 = extraout_f12_02; - fVar14 = fStack96; - if (*(float *)(pcVar6 + 0x18) != 0.00000000) { - fVar12 = extraout_f12_02; - fVar14 = fVar15; - } - } - fVar15 = fVar14; - if (bVar3) { - iVar7 = (int)lVar10 + 1; - } - else { - iVar7 = (int)lVar10 + -1; - } - lVar10 = (longlong)iVar7; - lVar5 = proc_7F06F66C(lVar10,*(int *)(param_1 + 0x20),fVar12); - *(undefined2 *)(param_1 + 0x32) = (short)lVar5; - fVar13 = extraout_f12_04; - if (*(short *)(param_1 + 0x30) != *(short *)(param_1 + 0x32)) { - cVar9 = 1; - fVar12 = proc_7F06D3F4(uStack20,(longlong)*(char *)(param_1 + 0x24),iStack24, - *(int *)(param_1 + 0x20),(int)lVar5,&fStack48); - if (fStack28 != 1.00000000) { - fStack48 = fStack48 * fStack28; - fStack44 = fStack44 * fStack28; - fStack40 = fStack40 * fStack28; - } - if (!bVar3) { - fStack48 = -fStack48; - fStack40 = -fStack40; - if (0.00000000 < fVar12) { - fVar12 = fVar4 - fVar12; - } - } - fVar13 = cosf(*(float *)(pcVar6 + 0x30)); - fVar14 = sinf(*(float *)(pcVar6 + 0x30)); - if ((dword_80036250 == 0) || (*(int *)(param_1 + 0x54) == 0)) { - fStack92 = fStack40 * fVar14 + fStack76 + fStack48 * fVar13; - fStack84 = fStack40 * fVar13 + (fStack68 - fStack48 * fVar14); - } - else { - fStack92 = fStack40 * fVar14 + fStack48 * fVar13; - fStack84 = fStack40 * fVar13 + -fStack48 * fVar14; - if (0.00000000 < fVar16) { - fVar14 = *(float *)(param_1 + 0x84); - fVar13 = fVar14 - *(float *)(param_1 + 0xa4) / (fVar16 * *(float *)(param_1 + 0x88)); - if (fVar13 < 0.00000000) { - fVar14 = fVar14 + 0.00000000; - } - else { - fVar14 = fVar14 + fVar13; - } - fVar13 = (((*(float *)(pcVar6 + 0x40) - *(float *)(pcVar6 + 0x4c)) * fVar11) / fVar16 - - fStack92) * fVar14 * 0.50000000; - fVar14 = (((*(float *)(pcVar6 + 0x48) - *(float *)(pcVar6 + 0x54)) * fVar11) / fVar16 - - fStack84) * fVar14 * 0.50000000; - } - else { - fVar13 = (*(float *)(pcVar6 + 0x40) - *(float *)(pcVar6 + 0x4c)) * - *(float *)(param_1 + 0x84); - fVar14 = (*(float *)(pcVar6 + 0x48) - *(float *)(pcVar6 + 0x54)) * - *(float *)(param_1 + 0x84); - } - fStack84 = fStack84 + fVar14; - fStack92 = fStack92 + fVar13; - fStack92 = fStack92 + fStack76; - fStack84 = fStack84 + fStack68; - } - fStack88 = fStack44; - fVar13 = *(float *)(pcVar6 + 0x5c); - if (0.00000000 < fVar13) { - if (0.00000000 < fVar16) { - fVar14 = 1.00000000 / fVar16; - if (fVar13 < fVar14) { - *(undefined4 *)(pcVar6 + 0x5c) = 0; - } - else { - *(float *)(pcVar6 + 0x5c) = fVar13 - fVar14; - fVar13 = fVar14; - } - fVar12 = fVar12 + *(float *)(pcVar6 + 0x58) * fVar13; - if (fVar12 < 0.00000000) { - fVar12 = fVar12 + fVar4; - } - else { - if (fVar12 < fVar4) { - fVar14 = *(float *)(pcVar6 + 0x18); - goto LAB_7f070828; - } - fVar12 = fVar12 - fVar4; - } - fVar14 = *(float *)(pcVar6 + 0x18); - } - else { - fVar14 = *(float *)(pcVar6 + 0x18); - fVar13 = fStack40; - } - } - else { - fVar14 = *(float *)(pcVar6 + 0x18); - fVar13 = fStack40; - } -LAB_7f070828: - if ((fVar14 == 0.00000000) && (fStack96 = fVar15 + fVar12, fVar4 <= fStack96)) { - fStack96 = fStack96 - fVar4; - } - } - goto LAB_7f070388; -LAB_7f070860: - *(float *)(pcVar6 + 0x34) = fStack76; - *(float *)(pcVar6 + 0x38) = fStack72; - *(float *)(pcVar6 + 0x30) = fVar15; - *(float *)(pcVar6 + 0x3c) = fStack68; - *(float *)(pcVar6 + 0x24) = fStack92; - *(float *)(pcVar6 + 0x28) = fStack88; - *(float *)(pcVar6 + 0x2c) = fStack84; - *(float *)(pcVar6 + 0x20) = fStack96; - sVar1 = *(short *)(param_1 + 0x30); - if (*(short *)(param_1 + 0x32) == sVar1) { - *(undefined4 *)(param_1 + 0x2c) = 0; - *(float *)(param_1 + 0x28) = (float)(int)sVar1; - } - else { - if (bVar3) { - *(float *)(param_1 + 0x2c) = param_5 - (float)iStack64; - *(float *)(param_1 + 0x28) = (float)(int)sVar1 + (param_5 - (float)iStack64); - } - else { - *(float *)(param_1 + 0x2c) = (float)iStack64 - param_5; - *(float *)(param_1 + 0x28) = - (float)(int)*(short *)(param_1 + 0x32) + (1.00000000 - ((float)iStack64 - param_5)); - } - } - if (*(int *)(param_1 + 0x54) == 0) { - pcVar6[2] = '\0'; - return; - } - iVar7 = proc_7F05C3D8(in_a3_lo); - iVar8 = proc_7F05C3D8(in_stack_00000010); - if ((bVar3) && (iVar7 < iVar8)) { - cVar9 = pcVar6[2]; - } - else { - if ((bVar3) || (iVar7 <= iVar8)) goto LAB_7f070a0c; - cVar9 = pcVar6[2]; - } - if (cVar9 == '\0') { - *(undefined4 *)(pcVar6 + 0x50) = *(undefined4 *)(pcVar6 + 0x38); - } - else { - *(undefined4 *)(pcVar6 + 0x50) = *(undefined4 *)(pcVar6 + 0x44); - } - lVar10 = proc_7F06F66C((longlong)iVar8,*(int *)(param_1 + 0x54),extraout_f12_05); - *(undefined2 *)(param_1 + 0x60) = (short)lVar10; - lVar10 = proc_7F06F66C((longlong)(iVar8 + 1),*(int *)(param_1 + 0x54),extraout_f12_06); - *(undefined2 *)(param_1 + 0x62) = (short)lVar10; - proc_7F06D3F4(uStack20,(longlong)*(char *)(param_1 + 0x25),iStack24,*(int *)(param_1 + 0x54), - (int)lVar10,&fStack48); - if (fStack28 != 1.00000000) { - fStack44 = fStack44 * fStack28; - } - pcVar6[2] = '\x01'; - *(float *)(pcVar6 + 0x44) = fStack44; -LAB_7f070a0c: - if (bVar3) { - *(float *)(param_1 + 0x5c) = in_stack_00000010 - (float)iVar8; - *(float *)(param_1 + 0x58) = - (float)(int)*(short *)(param_1 + 0x60) + (in_stack_00000010 - (float)iVar8); - } - else { - fVar15 = 1.00000000 - (in_stack_00000010 - (float)iVar8); - *(float *)(param_1 + 0x5c) = fVar15; - *(float *)(param_1 + 0x58) = (float)(int)*(short *)(param_1 + 0x62) + (1.00000000 - fVar15); - } - return; -} - - - -void proc_7F070AEC(int param_1,int param_2,int param_3) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - undefined4 uVar6; - undefined4 uVar7; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float in_f14; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - undefined4 uVar12; - undefined4 uVar13; - - fVar8 = *(float *)(param_1 + 0x28); - if (0 < param_2) { - if (0 < param_2) { - fVar3 = *(float *)(param_1 + 0xb0); - do { - if (0.00000000 < fVar3) { - *(float *)(param_1 + 0xb4) = *(float *)(param_1 + 0xb4) + 1.00000000; - if (*(float *)(param_1 + 0xb4) < fVar3) { - *(float *)(param_1 + 0xa4) = - *(float *)(param_1 + 0xac) + - ((*(float *)(param_1 + 0xa8) - *(float *)(param_1 + 0xac)) * - *(float *)(param_1 + 0xb4)) / fVar3; - } - else { - *(undefined4 *)(param_1 + 0xb0) = 0; - *(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)(param_1 + 0xa8); - } - fVar3 = *(float *)(param_1 + 0x88); - } - else { - fVar3 = *(float *)(param_1 + 0x88); - } - fVar4 = *(float *)(param_1 + 0xa4); - if (0.00000000 < fVar3) { - *(float *)(param_1 + 0x8c) = *(float *)(param_1 + 0x8c) + fVar4; - fVar3 = *(float *)(param_1 + 0x8c); - if (fVar3 == 0.00000000) { - fVar4 = *(float *)(param_1 + 0xa4); - *(undefined4 *)(param_1 + 0x84) = 0x3f800000; - } - else { - fVar1 = *(float *)(param_1 + 0x88); - if (fVar3 < fVar1) { - fVar4 = *(float *)(param_1 + 0xa4); - *(float *)(param_1 + 0x84) = (fVar1 - fVar3) / fVar1; - } - else { - *(undefined4 *)(param_1 + 0x88) = 0; - *(undefined4 *)(param_1 + 0x84) = 0; - *(undefined4 *)(param_1 + 0x54) = 0; - fVar4 = *(float *)(param_1 + 0xa4); - } - } - in_f12 = *(float *)(param_1 + 0x4c); - } - else { - in_f12 = *(float *)(param_1 + 0x4c); - } - if (0.00000000 < in_f12) { - *(float *)(param_1 + 0x50) = *(float *)(param_1 + 0x50) + fVar4; - in_f14 = *(float *)(param_1 + 0x50); - if (in_f14 < in_f12) { - fVar4 = *(float *)(param_1 + 0xa4); - *(float *)(param_1 + 0x40) = - *(float *)(param_1 + 0x48) + - ((*(float *)(param_1 + 0x44) - *(float *)(param_1 + 0x48)) * in_f14) / in_f12; - } - else { - *(undefined4 *)(param_1 + 0x4c) = 0; - fVar4 = *(float *)(param_1 + 0xa4); - *(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_1 + 0x44); - } - fVar3 = *(float *)(param_1 + 0x40); - } - else { - fVar3 = *(float *)(param_1 + 0x40); - } - fVar8 = fVar8 + fVar4 * fVar3; - if ((*(int *)(param_1 + 0x54) != 0) && - (in_f12 = *(float *)(param_1 + 0x7c), 0.00000000 < in_f12)) { - *(float *)(param_1 + 0x80) = *(float *)(param_1 + 0x80) + fVar4; - in_f14 = *(float *)(param_1 + 0x80); - if (in_f14 < in_f12) { - *(float *)(param_1 + 0x70) = - *(float *)(param_1 + 0x78) + - ((*(float *)(param_1 + 0x74) - *(float *)(param_1 + 0x78)) * in_f14) / in_f12; - } - else { - *(undefined4 *)(param_1 + 0x7c) = 0; - *(undefined4 *)(param_1 + 0x70) = *(undefined4 *)(param_1 + 0x74); - } - } - if (*(char *)(param_1 + 0x26) != '\0') { - fVar10 = *(float *)(param_1 + 0x3c); - fVar5 = *(float *)(param_1 + 0x90); - fVar2 = (float)((uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4) - 1); - fVar4 = fVar10; - fVar1 = fVar5; - fVar11 = fVar5; - fVar9 = fVar2; - if (fVar3 < 0.00000000) { - fVar4 = fVar5; - fVar1 = fVar10; - fVar11 = fVar2; - fVar9 = fVar5; - } - if ((0.00000000 <= fVar10) && (fVar10 < fVar2)) { - fVar9 = fVar4; - fVar11 = fVar1; - } - if ((fVar3 < 0.00000000) || (fVar8 < fVar9)) { - if ((0.00000000 <= fVar3) || (fVar9 < fVar8)) goto LAB_7f070ec0; - uVar6 = *(undefined4 *)(param_1 + 0x4c); - } - else { - uVar6 = *(undefined4 *)(param_1 + 0x4c); - } - uVar12 = *(undefined4 *)(param_1 + 0x44); - uVar13 = *(undefined4 *)(param_1 + 0x48); - uVar7 = *(undefined4 *)(param_1 + 0x50); - if (param_3 == 0) { - proc_7F070090(param_1,in_f12,in_f14); - fVar3 = extraout_f12_00; - fVar4 = extraout_f14_00; - } - else { - proc_7F0701EC(param_1,in_f12,in_f14,*(float *)(param_1 + 0x28),fVar9); - fVar3 = extraout_f12; - fVar4 = extraout_f14; - } - proc_7F06FCA8(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined *)(param_1 + 0x24),fVar3 - ,fVar11,fVar4); - *(undefined *)(param_1 + 0x26) = 1; - *(float *)(param_1 + 0x3c) = fVar10; - *(undefined4 *)(param_1 + 0x44) = uVar12; - *(undefined4 *)(param_1 + 0x48) = uVar13; - *(undefined4 *)(param_1 + 0x4c) = uVar6; - *(undefined4 *)(param_1 + 0x50) = uVar7; - fVar8 = (fVar11 + fVar8) - fVar9; - in_f12 = extraout_f12_01; - in_f14 = extraout_f14_01; - if (*(code **)(param_1 + 0x98) != NULL) { - (**(code **)(param_1 + 0x98))(); - in_f12 = extraout_f12_02; - in_f14 = extraout_f14_02; - } - } -LAB_7f070ec0: - param_2 += -1; - if (param_2 < 1) break; - fVar3 = *(float *)(param_1 + 0xb0); - } while( true ); - } - if (param_3 == 0) { - if (*(int *)(param_1 + 0x54) == 0) { - proc_7F070090(param_1,in_f12,in_f14); - } - else { - proc_7F070090(param_1,in_f12,in_f14); - } - } - else { - if (*(int *)(param_1 + 0x54) == 0) { - proc_7F0701EC(param_1,in_f12,in_f14,*(float *)(param_1 + 0x28),fVar8); - } - else { - proc_7F0701EC(param_1,in_f12,in_f14,*(float *)(param_1 + 0x28),fVar8); - } - } - } - return; -} - - - -void proc_7F070F80(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - puVar1[1] = 0; - *puVar1 = 0xe7000000; - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - puVar1[1] = 0; - *puVar1 = 0xba001402; - if (*(int *)(param_1 + 4) == 0) { - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - puVar1[1] = 0x552048; - *puVar1 = 0xb900031d; - } - else { - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - *puVar1 = 0xb900031d; - puVar1[1] = 0x552078; - } - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - puVar1[1] = 0xff33ffff; - *puVar1 = 0xfc121824; - return; -} - - - -void proc_7F071030(int param_1,longlong param_2) - -{ - int iVar1; - uint uVar2; - undefined4 *puVar3; - - iVar1 = *(int *)(param_1 + 0x30); - if (iVar1 == 7) { - if (param_2 != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0; - *puVar3 = 0xe7000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x100000; - *puVar3 = 0xba001402; - uVar2 = *(uint *)(param_1 + 0x38); - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xf8000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - uVar2 & 0xff; - uVar2 = *(uint *)(param_1 + 0x34); - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfb000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x5ffedbf8; - *puVar3 = 0xfc159804; - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc4112078; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc4112048; - *puVar3 = 0xb900031d; - return; - } - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc41049d8; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc41041c8; - *puVar3 = 0xb900031d; - return; - } - if (iVar1 == 8) { - if (param_2 != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0; - *puVar3 = 0xe7000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x100000; - *puVar3 = 0xba001402; - uVar2 = *(uint *)(param_1 + 0x38); - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xf8000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - uVar2 & 0xff; - uVar2 = *(uint *)(param_1 + 0x34); - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfb000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - uVar2 & 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x5ffefff8; - *puVar3 = 0xfc159a04; - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc41049d8; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc41041c8; - *puVar3 = 0xb900031d; - return; - } - } - else { - if (iVar1 == 9) { - if ((*(uint *)(param_1 + 0x34) & 0xff) != 0) { - if (param_2 == 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfa000000; - puVar3[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1fccdff8; - *puVar3 = 0xfc26c204; - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc4113078; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc4113048; - *puVar3 = 0xb900031d; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - uVar2 = *(uint *)(param_1 + 0x38); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0; - *puVar3 = 0xe7000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x100000; - *puVar3 = 0xba001402; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xf8000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - uVar2 & 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfb000000; - puVar3[1] = *(uint *)(param_1 + 0x34) & 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1ffcfbf8; - *puVar3 = 0xfc26e804; - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc4113078; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc4113048; - *puVar3 = 0xb900031d; - return; - } - if (param_2 == 0) { - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc41049d8; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc41041c8; - *puVar3 = 0xb900031d; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - uVar2 = *(uint *)(param_1 + 0x38); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0; - *puVar3 = 0xe7000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x100000; - *puVar3 = 0xba001402; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xf8000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - uVar2 & 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xffffffff; - *puVar3 = 0xfb000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfa000000; - puVar3[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1f1093fb; - *puVar3 = 0xfc26a004; - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc4112078; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc4112048; - *puVar3 = 0xb900031d; - return; - } - if (iVar1 == 4) { - if (param_2 == 0) { - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc41049d8; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc41041c8; - *puVar3 = 0xb900031d; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - uVar2 = *(uint *)(param_1 + 0x34); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0; - *puVar3 = 0xe7000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x100000; - *puVar3 = 0xba001402; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xf8000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - uVar2 & 0xff; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1f1093ff; - *puVar3 = 0xfc26a004; - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc4112078; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc4112048; - *puVar3 = 0xb900031d; - return; - } - if (iVar1 == 5) { - if (param_2 == 0) { - if ((*(uint *)(param_1 + 0x34) & 0xff) < 0xff) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1f10ffff; - *puVar3 = 0xfc269a04; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfc26a004; - puVar3[1] = 0x1f1093ff; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0; - *puVar3 = 0xe7000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x100000; - *puVar3 = 0xba001402; - uVar2 = *(uint *)(param_1 + 0x38); - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xf8000000; - puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | (uVar2 >> 8 & 0xff) << 8 | - uVar2 & 0xff; - uVar2 = *(uint *)(param_1 + 0x34); - if ((uVar2 & 0xff) < 0xff) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfb000000; - puVar3[1] = uVar2 & 0xff | 0xffffff00; - if ((*(uint *)(param_1 + 0x34) & 0xff00) == 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xfc26ea04; - puVar3[1] = 0x1f10ffff; - } - else { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1f10cfff; - *puVar3 = 0xfc26ea04; - } - } - else { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1f1093ff; - *puVar3 = 0xfc26a004; - } - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc41049d8; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc41041c8; - *puVar3 = 0xb900031d; - return; - } - if (param_2 != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0; - *puVar3 = 0xe7000000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x100000; - *puVar3 = 0xba001402; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x1f1093ff; - *puVar3 = 0xfc26a004; - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc192078; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc192048; - *puVar3 = 0xb900031d; - return; - } - if (*(int *)(param_1 + 4) != 0) { - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb900031d; - puVar3[1] = 0xc1849d8; - return; - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0xc1841c8; - *puVar3 = 0xb900031d; - } - return; -} - - - -void proc_7F071B44(int param_1,longlong param_2) - -{ - int iVar1; - undefined4 *puVar2; - uint uVar3; - - iVar1 = *(int *)(param_1 + 0x30); - if (iVar1 == 7) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0; - *puVar2 = 0xe7000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x100000; - *puVar2 = 0xba001402; - puVar2 = *(undefined4 **)(param_1 + 0xc); - uVar3 = *(uint *)(param_1 + 0x38); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xf8000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - uVar3 & 0xff; - uVar3 = *(uint *)(param_1 + 0x34); - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfb000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - 0xff; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x5ffedbf8; - *puVar2 = 0xfc159804; - if (param_2 == 0) { - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc41049d8; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc41041c8; - *puVar2 = 0xb900031d; - return; - } - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc4112078; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc4112048; - *puVar2 = 0xb900031d; - return; - } - if (iVar1 == 8) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0; - *puVar2 = 0xe7000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x100000; - *puVar2 = 0xba001402; - puVar2 = *(undefined4 **)(param_1 + 0xc); - uVar3 = *(uint *)(param_1 + 0x38); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xf8000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - uVar3 & 0xff; - puVar2 = *(undefined4 **)(param_1 + 0xc); - uVar3 = *(uint *)(param_1 + 0x34); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfb000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - uVar3 & 0xff; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x5ffefff8; - *puVar2 = 0xfc159a04; - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc41049d8; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc41041c8; - *puVar2 = 0xb900031d; - return; - } - if (iVar1 == 9) { - if ((*(uint *)(param_1 + 0x34) & 0xff) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - uVar3 = *(uint *)(param_1 + 0x38); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0; - *puVar2 = 0xe7000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x100000; - *puVar2 = 0xba001402; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xf8000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - uVar3 & 0xff; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfb000000; - puVar2[1] = *(uint *)(param_1 + 0x34) & 0xff; - if (param_2 == 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfa000000; - puVar2[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x1fccdff8; - *puVar2 = 0xfc26c204; - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc4113078; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc4113048; - *puVar2 = 0xb900031d; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x1ffcfbf8; - *puVar2 = 0xfc26e804; - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc4113078; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc4113048; - *puVar2 = 0xb900031d; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - uVar3 = *(uint *)(param_1 + 0x38); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0; - *puVar2 = 0xe7000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x100000; - *puVar2 = 0xba001402; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xf8000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - uVar3 & 0xff; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xffffffff; - *puVar2 = 0xfb000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfa000000; - puVar2[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; - if (param_2 == 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x1f1093fb; - *puVar2 = 0xfc26a004; - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc41049d8; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc41041c8; - *puVar2 = 0xb900031d; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfc26a004; - puVar2[1] = 0x1f1093fb; - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc4112078; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc4112048; - *puVar2 = 0xb900031d; - return; - } - if (iVar1 == 4) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - uVar3 = *(uint *)(param_1 + 0x34); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0; - *puVar2 = 0xe7000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x100000; - *puVar2 = 0xba001402; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xf8000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - uVar3 & 0xff; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x1f1093ff; - *puVar2 = 0xfc26a004; - if (param_2 == 0) { - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc41049d8; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc41041c8; - *puVar2 = 0xb900031d; - return; - } - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc4112078; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc4112048; - *puVar2 = 0xb900031d; - return; - } - if (iVar1 == 5) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0; - *puVar2 = 0xe7000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x100000; - *puVar2 = 0xba001402; - puVar2 = *(undefined4 **)(param_1 + 0xc); - uVar3 = *(uint *)(param_1 + 0x38); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xf8000000; - puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | - uVar3 & 0xff; - uVar3 = *(uint *)(param_1 + 0x34); - if ((uVar3 & 0xff) < 0xff) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfb000000; - puVar2[1] = uVar3 & 0xff | 0xffffff00; - if (param_2 == 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfc269a04; - puVar2[1] = 0x1f10ffff; - } - else { - if ((*(uint *)(param_1 + 0x34) & 0xff00) == 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x1f10ffff; - *puVar2 = 0xfc26ea04; - } - else { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfc26ea04; - puVar2[1] = 0x1f10cfff; - } - } - } - else { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x1f1093ff; - *puVar2 = 0xfc26a004; - } - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc41049d8; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc41041c8; - *puVar2 = 0xb900031d; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0; - *puVar2 = 0xe7000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x100000; - *puVar2 = 0xba001402; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xffffff00; - *puVar2 = 0xf8000000; - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xfc26a004; - puVar2[1] = 0x1f1093ff; - if (param_2 == 0) { - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc41049d8; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc41041c8; - *puVar2 = 0xb900031d; - return; - } - if (*(int *)(param_1 + 4) != 0) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xb900031d; - puVar2[1] = 0xc4112078; - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0xc4112048; - *puVar2 = 0xb900031d; - return; -} - - - -void proc_7F072644(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - puVar1[1] = 0; - *puVar1 = 0xe7000000; - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - puVar1[1] = 0x100000; - *puVar1 = 0xba001402; - if (*(int *)(param_1 + 4) == 0) { - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - *puVar1 = 0xb900031d; - puVar1[1] = 0xc192048; - } - else { - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - *puVar1 = 0xb900031d; - puVar1[1] = 0xc192078; - } - puVar1 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - puVar1[1] = 0x1f1093ff; - *puVar1 = 0xfc26a004; - return; -} - - - -void proc_7F0726F8(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - - iVar1 = *(int *)(param_1 + 0x3c); - if (iVar1 == 1) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x3000; - *puVar2 = 0xb6000000; - return; - } - if (iVar1 != 2) { - if (iVar1 == 3) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x2000; - *puVar2 = 0xb7000000; - } - return; - } - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - puVar2[1] = 0x1000; - *puVar2 = 0xb7000000; - return; -} - - - -void proc_7F072784(int param_1,int param_2) - -{ - int *piVar1; - char cVar4; - undefined4 *puVar2; - u32 uVar3; - uint uVar5; - - piVar1 = *(int **)(param_2 + 4); - if (*(int *)(param_1 + 0x18) == 0) { - if ((*(uint *)(param_1 + 8) & 1) == 0) { - uVar5 = *(uint *)(param_1 + 8); - } - else { - if (*piVar1 == 0) { - uVar5 = *(uint *)(param_1 + 8); - } - else { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xbc001406; - uVar3 = osVirtualToPhysical((void *)piVar1[2]); - puVar2[1] = uVar3; - if (*(int *)(param_1 + 0x3c) == 0) { - cVar4 = *(char *)((int)piVar1 + 0x12); - } - else { - proc_7F0726F8(param_1); - cVar4 = *(char *)((int)piVar1 + 0x12); - } - if (cVar4 == '\x01') { - proc_7F070F80(param_1); - puVar2 = *(undefined4 **)(param_1 + 0xc); - } - else { - if (cVar4 == '\x03') { - proc_7F071030(param_1,1); - puVar2 = *(undefined4 **)(param_1 + 0xc); - } - else { - if (cVar4 == '\x04') { - proc_7F071B44(param_1,1); - puVar2 = *(undefined4 **)(param_1 + 0xc); - } - else { - if (cVar4 == '\x02') { - proc_7F072644(param_1); - puVar2 = *(undefined4 **)(param_1 + 0xc); - } - else { - puVar2 = *(undefined4 **)(param_1 + 0xc); - } - } - } - } - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0x6000000; - puVar2[1] = *piVar1; - if (*(char *)((int)piVar1 + 0x12) == '\x03') { - if (piVar1[1] == 0) { - uVar5 = *(uint *)(param_1 + 8); - } - else { - proc_7F071030(param_1,0); - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0x6000000; - puVar2[1] = piVar1[1]; - uVar5 = *(uint *)(param_1 + 8); - } - } - else { - uVar5 = *(uint *)(param_1 + 8); - } - } - } - if (((((uVar5 & 2) != 0) && (*piVar1 != 0)) && (*(char *)((int)piVar1 + 0x12) == '\x04')) && - (piVar1[1] != 0)) { - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0xbc001406; - uVar3 = osVirtualToPhysical((void *)piVar1[2]); - puVar2[1] = uVar3; - if (*(int *)(param_1 + 0x3c) != 0) { - proc_7F0726F8(param_1); - } - proc_7F071B44(param_1,0); - puVar2 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; - *puVar2 = 0x6000000; - puVar2[1] = piVar1[1]; - } - } - return; -} - - - -void proc_7F072984(int param_1,int param_2,ushort *param_3) - -{ - int iVar1; - void **ppvVar2; - short sVar4; - u32 uVar3; - undefined4 *puVar5; - uint uVar6; - - iVar1 = *(int *)(param_3 + 2); - if (*(int *)(param_1 + 0x18) == 0) { - if ((*(uint *)(param_1 + 8) & 1) == 0) { - uVar6 = *(uint *)(param_1 + 8); - } - else { - ppvVar2 = (void **)extract_id_from_object_structure_microcode(param_2,param_3); - if (ppvVar2[1] == NULL) { - uVar6 = *(uint *)(param_1 + 8); - } - else { - puVar5 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; - *puVar5 = 0xbc001406; - uVar3 = osVirtualToPhysical(*(void **)(iVar1 + 0x1c)); - puVar5[1] = uVar3; - if (*(int *)(param_1 + 0x3c) == 0) { - sVar4 = *(short *)(iVar1 + 0x18); - } - else { - proc_7F0726F8(param_1); - sVar4 = *(short *)(iVar1 + 0x18); - } - if (sVar4 == 1) { - proc_7F070F80(param_1); - puVar5 = *(undefined4 **)(param_1 + 0xc); - } - else { - if (sVar4 == 3) { - proc_7F071030(param_1,1); - puVar5 = *(undefined4 **)(param_1 + 0xc); - } - else { - if (sVar4 == 4) { - proc_7F071B44(param_1,1); - puVar5 = *(undefined4 **)(param_1 + 0xc); - } - else { - if (sVar4 == 2) { - proc_7F072644(param_1); - puVar5 = *(undefined4 **)(param_1 + 0xc); - } - else { - puVar5 = *(undefined4 **)(param_1 + 0xc); - } - } - } - } - *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; - *puVar5 = 0xbc001006; - uVar3 = osVirtualToPhysical(*ppvVar2); - puVar5[1] = uVar3; - puVar5 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; - *puVar5 = 0x6000000; - *(void **)(puVar5 + 1) = ppvVar2[1]; - if (*(short *)(iVar1 + 0x18) == 3) { - if (*(int *)(iVar1 + 4) == 0) { - uVar6 = *(uint *)(param_1 + 8); - } - else { - proc_7F071030(param_1,0); - puVar5 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; - *puVar5 = 0x6000000; - puVar5[1] = *(undefined4 *)(iVar1 + 4); - uVar6 = *(uint *)(param_1 + 8); - } - } - else { - uVar6 = *(uint *)(param_1 + 8); - } - } - } - if (((((uVar6 & 2) != 0) && - (ppvVar2 = (void **)extract_id_from_object_structure_microcode(param_2,param_3), - ppvVar2[1] != NULL)) && (*(short *)(iVar1 + 0x18) == 4)) && (*(int *)(iVar1 + 4) != 0)) { - puVar5 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; - *puVar5 = 0xbc001406; - uVar3 = osVirtualToPhysical(*(void **)(iVar1 + 0x1c)); - puVar5[1] = uVar3; - if (*(int *)(param_1 + 0x3c) == 0) { - puVar5 = *(undefined4 **)(param_1 + 0xc); - } - else { - proc_7F0726F8(param_1); - puVar5 = *(undefined4 **)(param_1 + 0xc); - } - *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; - *puVar5 = 0xbc001006; - uVar3 = osVirtualToPhysical(*ppvVar2); - puVar5[1] = uVar3; - proc_7F071B44(param_1,0); - puVar5 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; - *puVar5 = 0x6000000; - puVar5[1] = *(undefined4 *)(iVar1 + 4); - } - } - return; -} - - - -void proc_7F072C10(void) - -{ - return; -} - - - -void dorottex(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - short sVar1; - int *piVar2; - undefined4 uVar3; - ushort x; - u32 uVar4; - short sVar5; - short sVar6; - int iVar7; - undefined4 *puVar8; - short sVar9; - short sVar10; - int iVar11; - undefined4 *virtualAddress; - uint uVar12; - undefined4 *puVar13; - int iVar14; - uint uVar15; - - if (((*(int *)(param_1 + 0x18) == 0) && ((*(uint *)(param_1 + 8) & 2) != 0)) && - (piVar2 = *(int **)(param_2 + 4), piVar2[2] != 0)) { - puVar13 = (undefined4 *)piVar2[1]; - if (vtxallocator == NULL) { - osSyncPrintf("dorottex: no vtx allocator!\n",param_2,param_3,param_4); - return_null(); - } - virtualAddress = (undefined4 *)(*vtxallocator)(*piVar2 << 2); - puVar8 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar8 + 2; - *puVar8 = 0xbc001006; - uVar4 = osVirtualToPhysical(virtualAddress); - puVar8[1] = uVar4; - puVar8 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar8 + 2; - *puVar8 = 0xbc001406; - uVar4 = osVirtualToPhysical((void *)piVar2[3]); - puVar8[1] = uVar4; - puVar8 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar8 + 2; - puVar8[1] = 0; - *puVar8 = 0xf8000000; - puVar8 = *(undefined4 **)(param_1 + 0xc); - iVar14 = 0; - *(undefined4 **)(param_1 + 0xc) = puVar8 + 2; - *puVar8 = 0x6000000; - puVar8[1] = piVar2[2]; - if (0 < *piVar2) { - do { - uVar4 = get_random_value(); - x = (ushort)(uVar4 << 10); - sVar5 = coss(x); - sVar6 = sins(x); - uVar4 = get_random_value(); - uVar12 = uVar4 >> 0x1f; - uVar4 = get_random_value(); - iVar7 = 0x10000 - (uVar4 & 0x3fff); - *virtualAddress = *puVar13; - sVar5 = (short)((int)sVar5 * 0x16a0 >> 0x12); - sVar10 = 0x200 - sVar5; - sVar6 = (short)((int)sVar6 * 0x16a0 >> 0x12); - sVar9 = 0x200 - sVar6; - virtualAddress[1] = puVar13[1]; - sVar6 += 0x200; - virtualAddress[2] = puVar13[2]; - iVar14 += 1; - virtualAddress[3] = puVar13[3]; - virtualAddress[4] = puVar13[4]; - virtualAddress[5] = puVar13[5]; - virtualAddress[6] = puVar13[6]; - virtualAddress[7] = puVar13[7]; - virtualAddress[8] = puVar13[8]; - virtualAddress[9] = puVar13[9]; - virtualAddress[10] = puVar13[10]; - virtualAddress[0xb] = puVar13[0xb]; - virtualAddress[0xc] = puVar13[0xc]; - virtualAddress[0xd] = puVar13[0xd]; - virtualAddress[0xe] = puVar13[0xe]; - uVar3 = puVar13[0xf]; - *(short *)(virtualAddress + 2) = sVar10; - *(short *)((int)virtualAddress + 10) = sVar9; - virtualAddress[0xf] = uVar3; - uVar15 = uVar12; - if ((false) && (uVar15 = uVar12, uVar12 != 0)) { - uVar15 = uVar12 - 4; - } - puVar8 = puVar13 + uVar15 * 4; - iVar11 = uVar12 + 1; - *(short *)virtualAddress = (short)((uint)((int)*(short *)puVar8 * iVar7) >> 0x10); - sVar5 += 0x200; - *(undefined2 *)((int)virtualAddress + 2) = - (short)((uint)((int)*(short *)((int)puVar8 + 2) * iVar7) >> 0x10); - sVar1 = *(short *)(puVar8 + 1); - *(short *)(virtualAddress + 6) = sVar6; - *(short *)((int)virtualAddress + 0x1a) = sVar10; - *(short *)(virtualAddress + 1) = (short)((uint)((int)sVar1 * iVar7) >> 0x10); - if ((false) && (iVar11 != 0)) { - iVar11 = uVar12 - 3; - } - puVar8 = puVar13 + iVar11 * 4; - *(short *)(virtualAddress + 4) = (short)((uint)((int)*(short *)puVar8 * iVar7) >> 0x10); - *(undefined2 *)((int)virtualAddress + 0x12) = - (short)((uint)((int)*(short *)((int)puVar8 + 2) * iVar7) >> 0x10); - sVar10 = *(short *)(puVar8 + 1); - *(short *)(virtualAddress + 10) = sVar5; - *(short *)((int)virtualAddress + 0x2a) = sVar6; - *(short *)(virtualAddress + 5) = (short)((uint)((int)sVar10 * iVar7) >> 0x10); - uVar15 = uVar12 + 2 & 3; - if ((false) && (uVar15 != 0)) { - uVar15 -= 4; - } - puVar8 = puVar13 + uVar15 * 4; - *(short *)(virtualAddress + 8) = (short)((uint)((int)*(short *)puVar8 * iVar7) >> 0x10); - *(undefined2 *)((int)virtualAddress + 0x22) = - (short)((uint)((int)*(short *)((int)puVar8 + 2) * iVar7) >> 0x10); - sVar6 = *(short *)(puVar8 + 1); - *(short *)(virtualAddress + 0xe) = sVar9; - *(short *)((int)virtualAddress + 0x3a) = sVar5; - *(short *)(virtualAddress + 9) = (short)((uint)((int)sVar6 * iVar7) >> 0x10); - uVar15 = uVar12 + 3 & 3; - if ((false) && (uVar15 != 0)) { - uVar15 -= 4; - } - puVar8 = puVar13 + uVar15 * 4; - puVar13 = puVar13 + 0x10; - *(short *)(virtualAddress + 0xc) = (short)((uint)((int)*(short *)puVar8 * iVar7) >> 0x10); - *(undefined2 *)((int)virtualAddress + 0x32) = - (short)((uint)((int)*(short *)((int)puVar8 + 2) * iVar7) >> 0x10); - *(short *)(virtualAddress + 0xd) = - (short)((uint)((int)*(short *)(puVar8 + 1) * iVar7) >> 0x10); - virtualAddress = virtualAddress + 0x10; - } while (iVar14 < *piVar2); - } - } - return; -} - - - -void proc_7F073038(int param_1,uint *param_2,int param_3) - -{ - likely_generate_DL_for_image_declaration - ((uint **)(param_1 + 0xc),param_2,param_3,(longlong)*(int *)(param_1 + 4),2); - return; -} - - - -void proc_7F07306C(void) - -{ - return; -} - - - -void dotube(int param_1,int param_2,ushort *param_3) - -{ - byte bVar1; - char cVar2; - ushort **ppuVar3; - int iVar4; - int iVar5; - ushort *puVar6; - uint *puVar7; - bool bVar8; - int iVar9; - int *piVar10; - int *piVar11; - short sVar13; - short sVar14; - u32 uVar12; - byte *pbVar15; - undefined2 *puVar16; - ushort *partdesc; - char *pcVar17; - ulonglong uVar18; - int iVar19; - undefined4 *puVar20; - int iVar21; - undefined4 *puVar22; - undefined4 *virtualAddress; - int iVar23; - char *pcVar24; - ulonglong uVar25; - int iVar26; - - ppuVar3 = *(ushort ***)(param_3 + 2); - piVar10 = (int *)extract_id_from_object_structure_microcode(param_2,param_3); - partdesc = *ppuVar3; - if (partdesc == NULL) { - partdesc = ppuVar3[1]; - } - iVar4 = *(int *)(partdesc + 2); - piVar11 = (int *)extract_id_from_object_structure_microcode(param_2,partdesc); - bVar8 = true; - if ((*(uint *)(param_1 + 8) & 1) != 0) { - sVar13 = proc_7F06C570(param_3,0); - iVar5 = *(int *)(param_2 + 0xc); - iVar23 = *piVar10; - partdesc = ppuVar3[3]; - iVar26 = *piVar11; - iVar9 = iVar23 * 4; - if (*ppuVar3 == NULL) { - sVar14 = proc_7F06C570(ppuVar3[1],0x200); - iVar21 = *(int *)(param_2 + 0xc); - iVar19 = iVar26; - } - else { - sVar14 = proc_7F06C570(param_3,0x200); - iVar21 = *(int *)(param_2 + 0xc); - iVar19 = iVar23; - iVar23 = iVar26; - } - puVar6 = ppuVar3[2]; - iVar19 = (iVar19 - iVar23) + (int)puVar6; - iVar26 = iVar19 % (int)puVar6; - if (puVar6 == NULL) { - trap(0x1c00); - } - if ((puVar6 == (ushort *)0xffffffff) && (iVar19 == -0x80000000)) { - trap(0x1800); - } - if ((iVar26 < 2) || (6 < iVar26)) { - if ((iVar26 < 10) || (0xe < iVar26)) { - if ((6 < iVar26) && (iVar26 < 10)) { - bVar8 = false; - } - virtualAddress = *(undefined4 **)(param_1 + 0xc); - } - else { - if (iVar26 < 0xd) { - iVar19 = iVar26 + -8; - if (iVar19 < 0) { - iVar19 = iVar26 + -7; - } - iVar26 = (iVar19 >> 1) + iVar23 + (int)puVar6; - iVar23 = iVar26 % (int)puVar6; - bVar8 = false; - if (puVar6 == NULL) { - trap(0x1c00); - } - if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { - trap(0x1800); - } - virtualAddress = *(undefined4 **)(param_1 + 0xc); - } - else { - iVar19 = -iVar26 + 0x10; - if (iVar19 < 0) { - iVar19 = -iVar26 + 0x11; - } - iVar26 = (iVar23 - (iVar19 >> 1)) + (int)puVar6; - iVar23 = iVar26 % (int)puVar6; - if (puVar6 == NULL) { - trap(0x1c00); - } - if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { - trap(0x1800); - } - virtualAddress = *(undefined4 **)(param_1 + 0xc); - } - } - } - else { - if (iVar26 < 4) { - if (iVar26 < 0) { - iVar26 += 1; - } - iVar26 = (iVar26 >> 1) + iVar23 + (int)puVar6; - iVar23 = iVar26 % (int)puVar6; - if (puVar6 == NULL) { - trap(0x1c00); - } - if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { - trap(0x1800); - } - virtualAddress = *(undefined4 **)(param_1 + 0xc); - } - else { - iVar19 = -iVar26 + 8; - if (iVar19 < 0) { - iVar19 = -iVar26 + 9; - } - iVar26 = (iVar23 - (iVar19 >> 1)) + (int)puVar6; - iVar23 = iVar26 % (int)puVar6; - bVar8 = false; - if (puVar6 == NULL) { - trap(0x1c00); - } - if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { - trap(0x1800); - } - virtualAddress = *(undefined4 **)(param_1 + 0xc); - } - } - pcVar24 = *(char **)(partdesc + iVar9 + 2); - *(undefined4 **)(param_1 + 0xc) = virtualAddress + 2; - *virtualAddress = 0xbc001406; - uVar12 = osVirtualToPhysical(ppuVar3[0x6b]); - virtualAddress[1] = uVar12; - bVar1 = *(byte *)(partdesc + iVar9); - uVar25 = (ulonglong)bVar1; - if (bVar1 != 0) { - cVar2 = *pcVar24; - do { - if (cVar2 == '\x01') { - if (vtxallocator == NULL) { - osSyncPrintf("dotube: no vtx allocator!\n"); - return_null(); - } - virtualAddress = (undefined4 *)(*vtxallocator)(2); - puVar22 = virtualAddress + 4; - puVar20 = (undefined4 *)(ppuVar3[4] + (uint)*(ushort *)(pcVar24 + 2) * 8); - *virtualAddress = *puVar20; - virtualAddress[1] = puVar20[1]; - virtualAddress[2] = puVar20[2]; - virtualAddress[3] = puVar20[3]; - partdesc = ppuVar3[4] + (uint)*(ushort *)(pcVar24 + 2) * 8; - *puVar22 = *(undefined4 *)(partdesc + 8); - virtualAddress[5] = *(undefined4 *)(partdesc + 10); - virtualAddress[6] = *(undefined4 *)(partdesc + 0xc); - virtualAddress[7] = *(undefined4 *)(partdesc + 0xe); - if (ppuVar3[1] == NULL) { - pbVar15 = (byte *)(*(int *)(iVar4 + 0xc) + iVar23 * 8); - bVar1 = *pbVar15; - uVar18 = (ulonglong)bVar1; - pcVar17 = *(char **)(pbVar15 + 4); - if (bVar1 == 0) { - puVar22 = *(undefined4 **)(param_1 + 0xc); - } - else { - cVar2 = *pcVar17; - while (uVar18 = SEXT48((int)uVar18 + -1), cVar2 != '\x01') { - if (cVar2 == '\x01') { - pcVar17 = pcVar17 + 4; - } - else { - if (cVar2 == '\x02') { - pcVar17 = pcVar17 + 2; - } - else { - if (cVar2 == '\x03') { - pcVar17 = pcVar17 + 4; - } - } - } - if ((longlong)uVar18 < 1) goto LAB_7f073618; - cVar2 = *pcVar17; - } - puVar16 = (undefined2 *) - (*(int *)(iVar4 + 0x10) + (uint)*(ushort *)(pcVar17 + 2) * 0x10); - if (bVar8) { - *(undefined2 *)virtualAddress = puVar16[8]; - *(undefined2 *)((int)virtualAddress + 2) = puVar16[9]; - *(undefined2 *)(virtualAddress + 1) = puVar16[10]; - *(undefined2 *)puVar22 = *puVar16; - *(undefined2 *)((int)virtualAddress + 0x12) = puVar16[1]; - *(undefined2 *)(virtualAddress + 5) = puVar16[2]; - } - else { - *(undefined2 *)virtualAddress = *puVar16; - *(undefined2 *)((int)virtualAddress + 2) = puVar16[1]; - *(undefined2 *)(virtualAddress + 1) = puVar16[2]; - *(undefined2 *)puVar22 = puVar16[8]; - *(undefined2 *)((int)virtualAddress + 0x12) = puVar16[9]; - *(undefined2 *)(virtualAddress + 5) = puVar16[10]; - } -LAB_7f073618: - puVar22 = *(undefined4 **)(param_1 + 0xc); - } - } - else { - bVar1 = *(byte *)(ppuVar3[3] + iVar23 * 4); - uVar18 = (ulonglong)bVar1; - pcVar17 = *(char **)(ppuVar3[3] + iVar23 * 4 + 2); - if (bVar1 != 0) { - cVar2 = *pcVar17; - while (uVar18 = SEXT48((int)uVar18 + -1), cVar2 != '\x01') { - if (cVar2 == '\x01') { - pcVar17 = pcVar17 + 4; - } - else { - if (cVar2 == '\x02') { - pcVar17 = pcVar17 + 2; - } - else { - if (cVar2 == '\x03') { - pcVar17 = pcVar17 + 4; - } - } - } - if ((longlong)uVar18 < 1) { - puVar22 = *(undefined4 **)(param_1 + 0xc); - goto LAB_7f07361c; - } - cVar2 = *pcVar17; - } - partdesc = ppuVar3[4] + (uint)*(ushort *)(pcVar17 + 2) * 8; - *(ushort *)virtualAddress = *partdesc; - *(ushort *)((int)virtualAddress + 2) = partdesc[1]; - *(ushort *)(virtualAddress + 1) = partdesc[2]; - *(ushort *)puVar22 = partdesc[8]; - *(ushort *)((int)virtualAddress + 0x12) = partdesc[9]; - *(ushort *)(virtualAddress + 5) = partdesc[10]; - goto LAB_7f073618; - } - puVar22 = *(undefined4 **)(param_1 + 0xc); - } -LAB_7f07361c: - *(undefined4 **)(param_1 + 0xc) = puVar22 + 2; - *puVar22 = 0x1020040; - uVar12 = osVirtualToPhysical((void *)(iVar21 + (int)sVar14 * 0x40)); - puVar22[1] = uVar12; - puVar22 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar22 + 2; - *puVar22 = 0x4100020; - uVar12 = osVirtualToPhysical(virtualAddress); - puVar22[1] = uVar12; - virtualAddress = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = virtualAddress + 2; - *virtualAddress = 0x1020040; - uVar12 = osVirtualToPhysical((void *)(iVar5 + (int)sVar13 * 0x40)); - virtualAddress[1] = uVar12; - puVar7 = *(uint **)(param_1 + 0xc); - *(uint **)(param_1 + 0xc) = puVar7 + 2; - *puVar7 = (((uint)(byte)pcVar24[1] - 3) * 0x10 & 0xff | 2) << 0x10 | 0x4000000 | - ((uint)(byte)pcVar24[1] - 2) * 0x10 & 0xffff; - uVar12 = osVirtualToPhysical(ppuVar3[4] + (uint)*(ushort *)(pcVar24 + 2) * 8 + 0x10); - pcVar24 = pcVar24 + 4; - puVar7[1] = uVar12; - } - else { - if (cVar2 == '\x02') { - if (pcVar24[1] == 0xff) { - proc_7F073038(param_1,NULL,1); - pcVar24 = pcVar24 + 2; - } - else { - proc_7F073038(param_1,(uint *)(ppuVar3[5] + (uint)(byte)pcVar24[1] * 6),1); - pcVar24 = pcVar24 + 2; - } - } - else { - if (cVar2 == '\x03') { - virtualAddress = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = virtualAddress + 2; - *virtualAddress = 0xbf000000; - virtualAddress[1] = - ((uint)(byte)pcVar24[1] * 10 & 0xff) << 0x10 | - ((uint)(byte)pcVar24[2] * 10 & 0xff) << 8 | (uint)(byte)pcVar24[3] * 10 & 0xff; - pcVar24 = pcVar24 + 4; - } - } - } - uVar25 = SEXT48((int)uVar25 + -1); - if ((longlong)uVar25 < 1) { - return; - } - cVar2 = *pcVar24; - } while( true ); - } - } - return; -} - - - -void proc_7F0737EC(void) - -{ - return; -} - - - -void proc_7F0737FC(void) - -{ - return; -} - - - -void dogfnegx(int param_1,int param_2,ushort *param_3) - -{ - byte bVar1; - byte bVar2; - float *pfVar3; - undefined4 *puVar4; - uint *puVar5; - undefined4 uVar6; - undefined4 uVar7; - undefined4 uVar8; - undefined4 uVar9; - short *psVar10; - short sVar12; - u32 uVar11; - undefined4 *virtualAddress; - short sVar13; - short sVar14; - short sVar15; - float *virtualAddress_00; - ushort x; - float __x; - float __x_00; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - float fVar20; - float fVar21; - float fVar22; - float fVar23; - float fVar24; - float fStack48; - float fStack44; - float fStack40; - - pfVar3 = *(float **)(param_3 + 2); - psVar10 = (short *)extract_id_from_object_structure_microcode(param_2,param_3); - uVar9 = dword_800363EC; - uVar8 = DAT_800363e8; - uVar7 = DAT_800363e4; - uVar6 = DAT_800363e0; - if (((*(uint *)(param_1 + 8) & 2) != 0) && (*psVar10 != 0)) { - sVar12 = proc_7F06C570(param_3,0); - virtualAddress_00 = (float *)(*(int *)(param_2 + 0xc) + (int)sVar12 * 0x40); - fStack48 = -(virtualAddress_00[0xc] + - *pfVar3 * *virtualAddress_00 + pfVar3[1] * virtualAddress_00[4] + - pfVar3[2] * virtualAddress_00[8]); - fStack44 = -(virtualAddress_00[0xd] + - *pfVar3 * virtualAddress_00[1] + pfVar3[1] * virtualAddress_00[5] + - pfVar3[2] * virtualAddress_00[9]); - fStack40 = -(virtualAddress_00[0xe] + - *pfVar3 * virtualAddress_00[2] + pfVar3[1] * virtualAddress_00[6] + - pfVar3[2] * virtualAddress_00[10]); - __x = sqrtf(fStack40 * fStack40 + fStack48 * fStack48 + fStack44 * fStack44); - if (0.00000000 < __x) { - __x = 1.00000000 / (*(float *)(param_2 + 0x14) * __x); - fStack48 = fStack48 * __x; - fStack44 = fStack44 * __x; - fStack40 = fStack40 * __x; - } - else { - fStack48 = 0.00000000; - fStack44 = 0.00000000; - fStack40 = 1.00000000 / *(float *)(param_2 + 0x14); - } - __x = proc_7F05ACB0(virtualAddress_00[6] * fStack40 + - fStack48 * virtualAddress_00[4] + fStack44 * virtualAddress_00[5]); - __x_00 = sinf(__x); - __x_00 = proc_7F05ACB0(-(fStack48 * virtualAddress_00[8] + fStack44 * virtualAddress_00[9] + - fStack40 * virtualAddress_00[10]) / __x_00); - if (-(virtualAddress_00[2] * fStack40 + - fStack48 * *virtualAddress_00 + fStack44 * virtualAddress_00[1]) < 0.00000000) { - __x_00 = flt_80054D50 - __x_00; - } - fVar16 = cosf(__x_00); - __x_00 = sinf(__x_00); - fVar17 = cosf(__x); - __x = sinf(__x); - uVar11 = get_random_value(); - fVar20 = (float)(uVar11 & 0x7f); - if (false) { - fVar20 = fVar20 + 4294967296.00000000; - } - fVar20 = fVar20 * 0.00390625 + 0.75000000; - fVar19 = pfVar3[3] * fVar20; - fVar21 = pfVar3[5]; - fVar24 = pfVar3[4] * fVar20 * __x * 0.50000000; - __x = *pfVar3 - fVar19 * 0.50000000; - fVar23 = pfVar3[1]; - fVar22 = pfVar3[2]; - if (vtxallocator == NULL) { - osSyncPrintf("dogfnegx: no vtx allocator!\n"); - return_null(); - } - virtualAddress = (undefined4 *)(*vtxallocator)(4); - *virtualAddress = uVar6; - virtualAddress[1] = uVar7; - virtualAddress[2] = uVar8; - virtualAddress[3] = uVar9; - virtualAddress[4] = uVar6; - virtualAddress[5] = uVar7; - virtualAddress[6] = uVar8; - virtualAddress[7] = uVar9; - virtualAddress[8] = uVar6; - virtualAddress[9] = uVar7; - virtualAddress[10] = uVar8; - virtualAddress[0xb] = uVar9; - virtualAddress[0xc] = uVar6; - virtualAddress[0xd] = uVar7; - virtualAddress[0xe] = uVar8; - virtualAddress[0xf] = uVar9; - fVar18 = -(fVar19 * fVar16 * 0.50000000); - fVar19 = -(fVar19 * fVar17 * __x_00 * 0.50000000); - *(short *)virtualAddress = (short)(int)(__x + fVar18 + fVar19); - *(undefined2 *)((int)virtualAddress + 2) = (short)(int)(fVar23 - fVar24); - __x_00 = -(fVar21 * fVar20 * __x_00 * 0.50000000); - fVar16 = -(fVar21 * fVar20 * fVar17 * fVar16 * 0.50000000); - *(short *)(virtualAddress + 1) = (short)(int)((fVar22 - __x_00) + fVar16); - *(short *)(virtualAddress + 4) = (short)(int)((__x + fVar18) - fVar19); - *(undefined2 *)((int)virtualAddress + 0x12) = (short)(int)(fVar23 + fVar24); - *(short *)(virtualAddress + 5) = (short)(int)((fVar22 - __x_00) - fVar16); - *(short *)(virtualAddress + 8) = (short)(int)((__x - fVar18) - fVar19); - *(undefined2 *)((int)virtualAddress + 0x22) = (short)(int)(fVar23 + fVar24); - *(short *)(virtualAddress + 9) = (short)(int)((fVar22 + __x_00) - fVar16); - *(short *)(virtualAddress + 0xc) = (short)(int)((__x - fVar18) + fVar19); - *(undefined2 *)((int)virtualAddress + 0x32) = (short)(int)(fVar23 - fVar24); - *(short *)(virtualAddress + 0xd) = (short)(int)(fVar22 + __x_00 + fVar16); - puVar4 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; - *puVar4 = 0xbc001406; - uVar11 = osVirtualToPhysical((void *)pfVar3[9]); - puVar4[1] = uVar11; - puVar5 = (uint *)pfVar3[6]; - if (puVar5 == NULL) { - proc_7F073038(param_1,NULL,1); - puVar4 = *(undefined4 **)(param_1 + 0xc); - } - else { - uVar11 = get_random_value(); - x = (ushort)(uVar11 << 10); - sVar13 = coss(x); - bVar1 = *(byte *)(puVar5 + 1); - sVar14 = sins(x); - bVar2 = *(byte *)(puVar5 + 1); - sVar12 = (ushort)bVar2 * 0x10; - sVar13 = (short)((int)((int)sVar13 * (uint)bVar1 * 0xb5) >> 0x12); - sVar15 = sVar12 - sVar13; - *(short *)(virtualAddress + 2) = sVar15; - *(short *)((int)virtualAddress + 0x1a) = sVar15; - sVar13 = sVar12 + sVar13; - *(short *)(virtualAddress + 10) = sVar13; - *(short *)((int)virtualAddress + 0x3a) = sVar13; - sVar13 = (short)((int)((int)sVar14 * (uint)bVar2 * 0xb5) >> 0x12); - sVar14 = sVar12 - sVar13; - sVar12 += sVar13; - *(short *)((int)virtualAddress + 10) = sVar14; - *(short *)(virtualAddress + 6) = sVar12; - *(short *)((int)virtualAddress + 0x2a) = sVar12; - *(short *)(virtualAddress + 0xe) = sVar14; - proc_7F073038(param_1,puVar5,4); - puVar4 = *(undefined4 **)(param_1 + 0xc); - } - *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; - puVar4[1] = 0x2000; - *puVar4 = 0xb7000000; - puVar4 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; - *puVar4 = 0x1020040; - uVar11 = osVirtualToPhysical(virtualAddress_00); - puVar4[1] = uVar11; - puVar4 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; - *puVar4 = 0x4300040; - uVar11 = osVirtualToPhysical(virtualAddress); - puVar4[1] = uVar11; - puVar4 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; - puVar4[1] = 0x3210; - *puVar4 = 0xb1000002; - } - return; -} - - - -void proc_7F073FC8(undefined4 param_1) - -{ - dword_800363F0 = param_1; - return; -} - - - -void doshadow(int param_1,int param_2,ushort *param_3) - -{ - byte bVar1; - float *pfVar2; - undefined4 *puVar3; - uint *puVar4; - undefined4 uVar5; - undefined4 uVar6; - undefined4 uVar7; - uint uVar8; - int iVar9; - short sVar11; - undefined4 *virtualAddress; - u32 uVar10; - undefined2 uVar12; - float fVar13; - float fVar14; - float fVar15; - uint local_14; - - uVar8 = dword_80036404; - uVar7 = dword_80036400; - uVar6 = dword_800363FC; - uVar5 = dword_800363F8; - if (0 < (int)dword_800363F0) { - pfVar2 = *(float **)(param_3 + 2); - iVar9 = extract_id_from_object_structure_microcode(param_2,(ushort *)pfVar2[5]); - fVar14 = pfVar2[2]; - fVar15 = pfVar2[3]; - fVar13 = *(float *)(iVar9 + 0xc) - *(float *)(iVar9 + 4); - if ((*(uint *)(param_1 + 8) & 2) != 0) { - if ((*(int *)(param_1 + 0x30) == 3) || (*(int *)(param_1 + 0x30) == 8)) { - local_14 = uVar8 & 0xffffff00 | - ((*(uint *)(param_1 + 0x34) & 0xff) * dword_800363F0) / 0xff & 0xff; - } - else { - local_14 = uVar8 & 0xffffff00 | dword_800363F0 & 0xff; - } - sVar11 = proc_7F06C570(param_3,0); - iVar9 = *(int *)(param_2 + 0xc); - if (*(int *)(param_1 + 4) == 0) { - uVar12 = (undefined2)(int)(-fVar13 / *(float *)(param_2 + 0x14)); - } - else { - uVar12 = (undefined2)(int)((2.00000000 - fVar13) / *(float *)(param_2 + 0x14)); - } - if (fVar13 < 50.00000000) { - fVar14 = fVar14 * 1.25000000; - fVar15 = fVar15 * 1.25000000; - } - else { - if (300.00000000 < fVar13) { - fVar15 = 0.00000000; - fVar14 = 0.00000000; - } - else { - fVar13 = (300.00000000 - fVar13) / 200.00000000; - fVar14 = fVar14 * fVar13; - fVar15 = fVar15 * fVar13; - } - } - if (vtxallocator == NULL) { - osSyncPrintf("doshadow: no vtx allocator!\n"); - return_null(); - } - virtualAddress = (undefined4 *)(*vtxallocator)(4); - *virtualAddress = uVar5; - virtualAddress[1] = uVar6; - virtualAddress[2] = uVar7; - virtualAddress[3] = local_14; - virtualAddress[4] = uVar5; - virtualAddress[5] = uVar6; - virtualAddress[6] = uVar7; - virtualAddress[7] = local_14; - virtualAddress[8] = uVar5; - virtualAddress[9] = uVar6; - virtualAddress[10] = uVar7; - virtualAddress[0xb] = local_14; - virtualAddress[0xc] = uVar5; - virtualAddress[0xd] = uVar6; - virtualAddress[0xe] = uVar7; - virtualAddress[0xf] = local_14; - fVar13 = *pfVar2; - *(undefined2 *)((int)virtualAddress + 2) = uVar12; - *(short *)virtualAddress = (short)(int)(fVar13 - fVar14); - *(short *)(virtualAddress + 1) = (short)(int)(pfVar2[1] - fVar15); - fVar13 = *pfVar2; - *(undefined2 *)((int)virtualAddress + 0x12) = uVar12; - *(short *)(virtualAddress + 4) = (short)(int)(fVar13 - fVar14); - *(short *)(virtualAddress + 5) = (short)(int)(pfVar2[1] + fVar15); - fVar13 = *pfVar2; - *(undefined2 *)((int)virtualAddress + 0x22) = uVar12; - *(short *)(virtualAddress + 8) = (short)(int)(fVar13 + fVar14); - *(short *)(virtualAddress + 9) = (short)(int)(pfVar2[1] + fVar15); - fVar13 = *pfVar2; - *(undefined2 *)((int)virtualAddress + 0x32) = uVar12; - *(short *)(virtualAddress + 0xc) = (short)(int)(fVar13 + fVar14); - *(short *)(virtualAddress + 0xd) = (short)(int)(pfVar2[1] - fVar15); - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xbc001406; - uVar10 = osVirtualToPhysical((void *)pfVar2[7]); - puVar3[1] = uVar10; - puVar4 = (uint *)pfVar2[4]; - if (puVar4 == NULL) { - proc_7F073038(param_1,NULL,1); - } - else { - *(undefined2 *)(virtualAddress + 2) = 0; - *(undefined2 *)((int)virtualAddress + 10) = 0; - bVar1 = *(byte *)(puVar4 + 1); - *(undefined2 *)((int)virtualAddress + 0x1a) = 0; - *(ushort *)(virtualAddress + 6) = (ushort)bVar1 * 0x20 + -1; - *(ushort *)(virtualAddress + 10) = (ushort)*(byte *)(puVar4 + 1) * 0x20 + -1; - bVar1 = *(byte *)((int)puVar4 + 5); - *(undefined2 *)(virtualAddress + 0xe) = 0; - *(short *)((int)virtualAddress + 0x2a) = (ushort)bVar1 * 0x20 + -1; - *(short *)((int)virtualAddress + 0x3a) = (ushort)*(byte *)((int)puVar4 + 5) * 0x20 + -1; - proc_7F073038(param_1,puVar4,4); - } - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0xb7000000; - puVar3[1] = 0x2000; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0x1020040; - uVar10 = osVirtualToPhysical((void *)(iVar9 + (int)sVar11 * 0x40)); - puVar3[1] = uVar10; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - *puVar3 = 0x4300040; - uVar10 = osVirtualToPhysical(virtualAddress); - puVar3[1] = uVar10; - puVar3 = *(undefined4 **)(param_1 + 0xc); - *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; - puVar3[1] = 0x3210; - *puVar3 = 0xb1000002; - } - } - return; -} - - - -void proc_7F074514(void) - -{ - return; -} - - - -void proc_7F074524(void) - -{ - return; -} - - - -void proc_7F074534(int param_1,int param_2,ushort *param_3) - -{ - if (true) { - switch((uint)*param_3 & 0xff) { - case 4: - proc_7F072784(param_1,(int)param_3); - break; - case 5: - proc_7F07306C(); - break; - case 6: - proc_7F0737EC(); - break; - case 7: - dotube(param_1,param_2,param_3); - break; - case 8: - proc_7F06E970(param_2,param_3); - break; - case 9: - proc_7F06EB10(param_2,param_3); - break; - case 10: - proc_7F074514(); - break; - case 0xb: - proc_7F0737FC(); - break; - case 0xc: - dogfnegx(param_1,param_2,param_3); - break; - case 0xd: - doshadow(param_1,param_2,param_3); - break; - case 0x11: - proc_7F074524(); - break; - case 0x12: - process_12_handle_switch(param_2,param_3); - break; - case 0x14: - proc_7F072C10(); - break; - case 0x16: - dorottex(param_1,(uint)param_3,param_3,param_2); - break; - case 0x17: - process_17_pointer_to_head(param_2,param_3); - break; - case 0x18: - proc_7F072984(param_1,param_2,param_3); - } - } - return; -} - - - -void subdraw(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - undefined4 *puVar1; - ushort *puVar2; - u32 uVar3; - ushort *puVar4; - - puVar1 = *(undefined4 **)(param_2 + 8); - puVar2 = (ushort *)*puVar1; - if (*(int *)(param_1 + 0xc) == 0) { - osSyncPrintf("subdraw: no gfxlist!\n",param_2,param_3,param_4); - return_null(); - puVar1 = *(undefined4 **)(param_2 + 8); - } - if (puVar1[7] == 0) { - osSyncPrintf("subdraw: object not initialised! (0x%X)\n",puVar1); - return_null(); - puVar1 = *(undefined4 **)(param_1 + 0xc); - } - else { - puVar1 = *(undefined4 **)(param_1 + 0xc); - } - *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; - *puVar1 = 0xbc000c06; - uVar3 = osVirtualToPhysical(*(void **)(param_2 + 0xc)); - puVar1[1] = uVar3; - while (puVar4 = puVar2, puVar4 != NULL) { - proc_7F074534(param_1,param_2,puVar4); - puVar2 = (ushort *)*(int *)(puVar4 + 10); - if ((*(int *)(puVar4 + 10) == 0) && (puVar2 = puVar4, puVar4 != NULL)) { - puVar2 = *(ushort **)(puVar4 + 6); - while ((puVar2 == NULL && (puVar4 = *(ushort **)(puVar4 + 4), puVar2 = puVar4, puVar4 != NULL) - )) { - puVar2 = *(ushort **)(puVar4 + 6); - } - } - } - return; -} - - - -void proc_7F074790(float **param_1,uint param_2,undefined4 param_3,undefined4 param_4) - -{ - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - - subcalcpos(param_2,param_2,param_3,param_4); - subcalcmatrices(param_1,param_2,extraout_a2_lo,extraout_a3_lo); - subdraw((int)param_1,param_2,extraout_a2_lo_00,extraout_a3_lo_00); - return; -} - - - -undefined8 proc_7F0747D0(int param_1,float *param_2,float *param_3,float *param_4) - -{ - undefined8 uVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float local_68; - float local_64; - float local_60; - float local_5c; - float local_24; - float local_1c; - - fVar2 = *param_2; - fVar3 = param_2[1]; - fVar10 = param_2[2]; - fVar11 = -(fVar2 * fVar2 + fVar3 * fVar3 + fVar10 * fVar10); - fVar7 = param_4[2]; - fVar8 = *param_4; - fVar9 = param_4[1]; - local_1c = fVar7 * fVar10 + fVar2 * fVar8 + fVar3 * fVar9; - fVar4 = param_3[2] - param_2[0xe]; - fVar5 = *param_3 - param_2[0xc]; - fVar6 = param_3[1] - param_2[0xd]; - fVar3 = fVar4 * fVar10 + fVar2 * fVar5 + fVar3 * fVar6; - fVar2 = -(fVar3 + fVar11 * *(float *)(param_1 + 8)); - local_24 = -(fVar3 + fVar11 * *(float *)(param_1 + 4)); - if (local_1c < 0.00000000) { - local_1c = -local_1c; - local_24 = -local_24; - fVar2 = -fVar2; - } - if ((0.00000000 <= local_24) || (0.00000000 <= fVar2)) { - if (fVar2 < local_24) { - fVar10 = param_2[4]; - fVar3 = fVar2; - } - else { - fVar10 = param_2[4]; - fVar3 = local_24; - local_24 = fVar2; - } - fVar2 = param_2[5]; - fVar11 = param_2[6]; - fVar12 = -(fVar10 * fVar10 + fVar2 * fVar2 + fVar11 * fVar11); - local_68 = fVar7 * fVar11 + fVar10 * fVar8 + fVar2 * fVar9; - fVar2 = fVar4 * fVar11 + fVar10 * fVar5 + fVar2 * fVar6; - local_5c = -(fVar2 + fVar12 * *(float *)(param_1 + 0x10)); - fVar2 = -(fVar2 + fVar12 * *(float *)(param_1 + 0xc)); - if (local_68 < 0.00000000) { - local_68 = -local_68; - fVar2 = -fVar2; - local_5c = -local_5c; - } - if ((0.00000000 <= fVar2) || (0.00000000 <= local_5c)) { - local_64 = fVar2; - if (fVar2 <= local_5c) { - local_64 = local_5c; - local_5c = fVar2; - } - if (local_5c * local_1c < fVar3 * local_68) { - if (local_64 * local_1c < fVar3 * local_68) { - return 0; - } - local_60 = local_1c; - local_5c = fVar3; - } - else { - local_60 = local_68; - if (local_24 * local_68 < local_5c * local_1c) { - return 0; - } - } - if (local_24 * local_68 < local_64 * local_1c) { - local_64 = local_24; - local_68 = local_1c; - } - fVar2 = param_2[8]; - fVar3 = param_2[9]; - fVar10 = param_2[10]; - fVar11 = -(fVar2 * fVar2 + fVar3 * fVar3 + fVar10 * fVar10); - fVar7 = fVar7 * fVar10 + fVar2 * fVar8 + fVar3 * fVar9; - fVar3 = fVar4 * fVar10 + fVar2 * fVar5 + fVar3 * fVar6; - fVar2 = -(fVar3 + fVar11 * *(float *)(param_1 + 0x18)); - fVar3 = -(fVar3 + fVar11 * *(float *)(param_1 + 0x14)); - if (fVar7 < 0.00000000) { - fVar7 = -fVar7; - fVar3 = -fVar3; - fVar2 = -fVar2; - } - if ((0.00000000 <= fVar3) || (0.00000000 <= fVar2)) { - fVar4 = fVar3; - if (fVar3 <= fVar2) { - fVar4 = fVar2; - fVar2 = fVar3; - } - if (local_5c * fVar7 < fVar2 * local_60) { - if (local_64 * fVar7 < fVar2 * local_68) { - uVar1 = 0; - } - else { - uVar1 = 1; - } - } - else { - if (fVar4 * local_60 < local_5c * fVar7) { - uVar1 = 0; - } - else { - uVar1 = 1; - } - } - } - else { - uVar1 = 0; - } - } - else { - uVar1 = 0; - } - } - else { - uVar1 = 0; - } - return uVar1; -} - - - -void proc_7F074C68(int param_1,ushort *param_2,float *param_3,float *param_4) - -{ - int iVar1; - float *pfVar2; - - iVar1 = *(int *)(param_2 + 2); - pfVar2 = (float *)proc_7F06C660(param_1,param_2,0); - proc_7F0747D0(iVar1,pfVar2,param_3,param_4); - return; -} - - - -undefined8 proc_7F074CAC(int param_1,ushort *param_2,float *param_3,float *param_4) - -{ - ushort uVar1; - int iVar2; - float *pfVar4; - int iVar5; - undefined8 uVar3; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fStack92; - float fStack88; - float fStack84; - float fStack32; - float fStack28; - float fStack24; - float fStack16; - float fStack12; - - iVar2 = *(int *)(param_2 + 2); - pfVar4 = (float *)proc_7F06C660(param_1,param_2,0); - fVar8 = *(float *)(iVar2 + 4); - fVar6 = *param_4; - fStack16 = param_4[1]; - fStack12 = param_4[2]; - if ((*param_2 & 0x100) == 0) { - if ((*param_2 & 0x200) == 0) { - fStack32 = pfVar4[0xc] - *param_3; - fStack28 = pfVar4[0xd] - param_3[1]; - fStack24 = pfVar4[0xe] - param_3[2]; - } - else { - if (*(ushort **)(iVar2 + 0x14) == NULL) { - fStack32 = pfVar4[0xc] - *param_3; - fStack28 = pfVar4[0xd] - param_3[1]; - fStack24 = pfVar4[0xe] - param_3[2]; - } - else { - iVar5 = proc_7F06C660(param_1,*(ushort **)(iVar2 + 0x14),0); - fStack32 = (pfVar4[0xc] + *(float *)(iVar5 + 0x30)) * 0.50000000 - *param_3; - fStack28 = (pfVar4[0xd] + *(float *)(iVar5 + 0x34)) * 0.50000000 - param_3[1]; - fStack24 = (pfVar4[0xe] + *(float *)(iVar5 + 0x38)) * 0.50000000 - param_3[2]; - } - } - } - else { - fVar9 = *(float *)(iVar2 + 8); - fVar7 = *(float *)(iVar2 + 0xc); - fVar10 = *(float *)(iVar2 + 0x10); - fStack32 = (pfVar4[0xc] - *param_3) + fVar9 * *pfVar4 + fVar7 * pfVar4[4] + fVar10 * pfVar4[8]; - fStack28 = (pfVar4[0xd] - param_3[1]) + - fVar9 * pfVar4[1] + fVar7 * pfVar4[5] + fVar10 * pfVar4[9]; - fStack24 = (pfVar4[0xe] - param_3[2]) + - fVar9 * pfVar4[2] + fVar7 * pfVar4[6] + fVar10 * pfVar4[10]; - } - uVar1 = *param_2; - if ((uVar1 & 0x400) == 0) { - if ((((uVar1 & 0x800) != 0) || ((uVar1 & 0x1000) != 0)) || ((uVar1 & 0x2000) != 0)) { - if ((uVar1 & 0x800) == 0) { - if ((uVar1 & 0x1000) == 0) { - if ((uVar1 & 0x2000) != 0) { - fStack92 = pfVar4[8]; - fStack88 = pfVar4[9]; - fStack84 = pfVar4[10]; - } - } - else { - fStack92 = pfVar4[4]; - fStack88 = pfVar4[5]; - fStack84 = pfVar4[6]; - } - } - else { - fStack92 = *pfVar4; - fStack88 = pfVar4[1]; - fStack84 = pfVar4[2]; - } - fVar7 = (fStack84 * fStack12 + fVar6 * fStack92 + fStack16 * fStack88) * - *(float *)(iVar2 + 0x18); - fVar6 = fStack92 * fVar7 + fVar6; - fStack16 = fStack88 * fVar7 + fStack16; - fStack12 = fStack84 * fVar7 + fStack12; - fVar7 = (fStack84 * fStack24 + fStack32 * fStack92 + fStack28 * fStack88) * - *(float *)(iVar2 + 0x18); - fStack32 = fStack92 * fVar7 + fStack32; - fStack28 = fStack88 * fVar7 + fStack28; - fStack24 = fStack84 * fVar7 + fStack24; - } - } - else { - fVar7 = (pfVar4[2] * fStack12 + fVar6 * *pfVar4 + fStack16 * pfVar4[1]) * - *(float *)(iVar2 + 0x18); - fVar6 = *pfVar4 * fVar7 + fVar6; - fStack16 = pfVar4[1] * fVar7 + fStack16; - fStack12 = pfVar4[2] * fVar7 + fStack12; - fVar7 = (pfVar4[2] * fStack24 + fStack32 * *pfVar4 + fStack28 * pfVar4[1]) * - *(float *)(iVar2 + 0x18); - fStack32 = *pfVar4 * fVar7 + fStack32; - fStack28 = pfVar4[1] * fVar7 + fStack28; - fStack24 = pfVar4[2] * fVar7 + fStack24; - fVar7 = (pfVar4[6] * fStack12 + fVar6 * pfVar4[4] + fStack16 * pfVar4[5]) * - *(float *)(iVar2 + 0x1c); - fVar6 = pfVar4[4] * fVar7 + fVar6; - fStack16 = pfVar4[5] * fVar7 + fStack16; - fStack12 = pfVar4[6] * fVar7 + fStack12; - fVar7 = (pfVar4[6] * fStack24 + fStack32 * pfVar4[4] + fStack28 * pfVar4[5]) * - *(float *)(iVar2 + 0x1c); - fStack32 = pfVar4[4] * fVar7 + fStack32; - fStack28 = pfVar4[5] * fVar7 + fStack28; - fStack24 = pfVar4[6] * fVar7 + fStack24; - } - uVar3 = 0; - fVar7 = fStack24 * fStack12 + fVar6 * fStack32 + fStack16 * fStack28; - if (0.00000000 < fVar7) { - if (((fStack24 * fStack24 + fStack32 * fStack32 + fStack28 * fStack28) - fVar8) * - (fStack12 * fStack12 + fVar6 * fVar6 + fStack16 * fStack16) <= fVar7 * fVar7) { - uVar3 = 1; - } - else { - uVar3 = 0; - } - } - return uVar3; -} - - - -undefined4 proc_7F0752FC(int param_1,float *param_2,float *param_3,ushort **param_4) - -{ - bool bVar1; - ulonglong uVar2; - longlong lVar3; - ushort *puVar4; - ushort *puVar5; - - puVar4 = *param_4; - bVar1 = true; - if (puVar4 == NULL) { - puVar4 = **(ushort ***)(param_1 + 8); - } - else { - *param_4 = NULL; - } - do { - if (puVar4 == NULL) { - return 0; - } - if ((!bVar1) || (puVar5 = *(ushort **)(puVar4 + 10), puVar5 == NULL)) { - puVar5 = puVar4; - if (puVar4 != NULL) { - puVar5 = *(ushort **)(puVar4 + 6); - while ((puVar5 == NULL && - (puVar4 = *(ushort **)(puVar4 + 4), puVar5 = puVar4, puVar4 != NULL))) { - puVar5 = *(ushort **)(puVar4 + 6); - } - } - if (puVar5 == NULL) { - return 0; - } - } - uVar2 = (ulonglong)*puVar5; - bVar1 = true; - puVar4 = puVar5; - if (true) { - puVar4 = puVar5; - switch((uint)*puVar5 & 0xff) { - case 8: - proc_7F06E970(param_1,puVar5); - puVar4 = puVar5; - break; - case 10: - proc_7F074C68(param_1,puVar5,param_2,param_3); - if (uVar2 != 0) { - *param_4 = puVar5; - return **(undefined4 **)(puVar5 + 2); - } - bVar1 = false; - puVar4 = puVar5; - break; - case 0x11: - lVar3 = proc_7F074CAC(param_1,puVar5,param_2,param_3); - if (lVar3 != 0) { - *param_4 = puVar5; - return **(undefined4 **)(puVar5 + 2); - } - bVar1 = false; - puVar4 = puVar5; - break; - case 0x12: - process_12_handle_switch(param_1,puVar5); - puVar4 = puVar5; - break; - case 0x17: - process_17_pointer_to_head(param_1,puVar5); - puVar4 = puVar5; - } - } - } while( true ); -} - - - -undefined4 proc_7F07549C(int param_1,float *param_2,float *param_3,ushort **param_4) - -{ - undefined4 uVar1; - - *param_4 = NULL; - uVar1 = proc_7F0752FC(param_1,param_2,param_3,param_4); - return uVar1; -} - - - -uint proc_7F0754BC(int *param_1,int param_2) - -{ - int iVar1; - char *dest; - uint uVar2; - char *pcVar3; - char *src; - int iVar4; - - iVar1 = *param_1; - pcVar3 = NULL; - iVar4 = (int)(uint)*(ushort *)((int)param_1 + 0xe) >> 3; - if (iVar1 < 0) { - pcVar3 = (char *)(iVar1 + param_2 * iVar4); - } - else { - if (dword_80036414 != NULL) { - src = (char *)(dword_80036414[2] + 0xfU & 0xfffffff0); - dest = (char *)(iVar1 + param_2 * iVar4); - if (((uint)dest & 1) == 0) { - uVar2 = iVar4 + 0xf; - pcVar3 = src; - } - else { - dest = dest + -1; - pcVar3 = src + 1; - uVar2 = iVar4 + 0x10; - } - romCopy(src,dest,uVar2 & 0xfffffff0); - *dword_80036414 = *dword_80036414 + 1; - *(char **)(dword_80036414 + 2) = src + (uVar2 & 0xfffffff0); - } - } - return (uint)pcVar3; -} - - - -void proc_7F0755B0(void) - -{ - if (dword_80036414 != NULL) { - dword_80036414[2] = dword_80036414[1]; - *dword_80036414 = 0; - } - return; -} - - - -void convert_obj_microcode_offset_to_rdram_addr(ushort *param_1,int param_2,int param_3) - -{ - ushort uVar1; - int *piVar2; - longlong lVar3; - int iVar4; - longlong lVar5; - int iVar6; - ushort *puVar7; - int iVar8; - int iVar9; - ushort *puVar10; - - if (param_1 == NULL) { - return; - } - uVar1 = *param_1; - do { - if (*(int *)(param_1 + 2) != 0) { - *(int *)(param_1 + 2) = *(int *)(param_1 + 2) + (param_3 - param_2); - } - if (*(int *)(param_1 + 4) != 0) { - *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + (param_3 - param_2); - } - if (*(int *)(param_1 + 6) != 0) { - *(int *)(param_1 + 6) = *(int *)(param_1 + 6) + (param_3 - param_2); - } - if (*(int *)(param_1 + 8) != 0) { - *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + (param_3 - param_2); - } - if (*(int *)(param_1 + 10) != 0) { - *(int *)(param_1 + 10) = *(int *)(param_1 + 10) + (param_3 - param_2); - } - if (false) { -switchD_7f075670_caseD_a: - puVar7 = *(ushort **)(param_1 + 10); - } - else { - switch((uint)uVar1 & 0xff) { - case 1: - iVar4 = *(int *)(*(int *)(param_1 + 2) + 4); - if (iVar4 != 0) { - *(int *)(*(int *)(param_1 + 2) + 4) = iVar4 + (param_3 - param_2); - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 2: - iVar4 = *(int *)(*(int *)(param_1 + 2) + 0x14); - if (iVar4 != 0) { - *(int *)(*(int *)(param_1 + 2) + 0x14) = iVar4 + (param_3 - param_2); - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 3: - iVar4 = *(int *)(*(int *)(param_1 + 2) + 0x14); - if (iVar4 != 0) { - *(int *)(*(int *)(param_1 + 2) + 0x14) = iVar4 + (param_3 - param_2); - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 4: - iVar4 = *(int *)(param_1 + 2); - if (*(int *)(iVar4 + 0xc) != 0) { - *(int *)(iVar4 + 0xc) = *(int *)(iVar4 + 0xc) + (param_3 - param_2); - } - *(int *)(iVar4 + 8) = param_3; - puVar7 = *(ushort **)(param_1 + 10); - break; - case 5: - piVar2 = *(int **)(param_1 + 2); - iVar4 = 0; - if (piVar2[1] != 0) { - piVar2[1] = piVar2[1] + (param_3 - param_2); - } - iVar8 = 0; - if (piVar2[2] != 0) { - piVar2[2] = piVar2[2] + (param_3 - param_2); - } - if (piVar2[3] != 0) { - piVar2[3] = piVar2[3] + (param_3 - param_2); - } - iVar6 = *piVar2; - if (iVar6 < 1) { - piVar2[0x69] = param_3; - } - else { - do { - iVar4 += 1; - iVar9 = *(int *)(piVar2[1] + iVar8 + 4); - if (iVar9 != 0) { - *(int *)(piVar2[1] + iVar8 + 4) = iVar9 + (param_3 - param_2); - iVar6 = *piVar2; - } - iVar8 += 8; - } while (iVar4 < iVar6); - piVar2[0x69] = param_3; - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 6: - *(int *)(*(int *)(param_1 + 2) + 0x14) = param_3; - puVar7 = *(ushort **)(param_1 + 10); - break; - case 7: - piVar2 = *(int **)(param_1 + 2); - iVar4 = 0; - if (*piVar2 != 0) { - *piVar2 = *piVar2 + (param_3 - param_2); - } - if (piVar2[1] != 0) { - piVar2[1] = piVar2[1] + (param_3 - param_2); - } - iVar8 = 0; - if (piVar2[3] != 0) { - piVar2[3] = piVar2[3] + (param_3 - param_2); - } - if (piVar2[4] != 0) { - piVar2[4] = piVar2[4] + (param_3 - param_2); - } - if (piVar2[5] != 0) { - piVar2[5] = piVar2[5] + (param_3 - param_2); - } - iVar6 = piVar2[2]; - if (iVar6 < 1) { - piVar2[0x6b] = param_3; - } - else { - do { - iVar4 += 1; - iVar9 = *(int *)(piVar2[3] + iVar8 + 4); - if (iVar9 != 0) { - *(int *)(piVar2[3] + iVar8 + 4) = iVar9 + (param_3 - param_2); - iVar6 = piVar2[2]; - } - iVar8 += 8; - } while (iVar4 < iVar6); - piVar2[0x6b] = param_3; - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 8: - puVar7 = *(ushort **)(*(int *)(param_1 + 2) + 8); - puVar10 = (ushort *)((int)puVar7 + (param_3 - param_2)); - if (puVar7 != NULL) { - *(ushort **)(*(int *)(param_1 + 2) + 8) = puVar10; - puVar7 = puVar10; - } - *(ushort **)(param_1 + 10) = puVar7; - break; - case 9: - iVar4 = *(int *)(param_1 + 2); - if (*(int *)(iVar4 + 0x18) != 0) { - *(int *)(iVar4 + 0x18) = *(int *)(iVar4 + 0x18) + (param_3 - param_2); - } - if (*(int *)(iVar4 + 0x1c) != 0) { - *(int *)(iVar4 + 0x1c) = *(int *)(iVar4 + 0x1c) + (param_3 - param_2); - } - puVar7 = *(ushort **)(param_1 + 10); - break; - default: - goto switchD_7f075670_caseD_a; - case 0xb: - iVar4 = *(int *)(param_1 + 2); - if (*(int *)(iVar4 + 0x3c) != 0) { - *(int *)(iVar4 + 0x3c) = *(int *)(iVar4 + 0x3c) + (param_3 - param_2); - } - *(int *)(iVar4 + 0x48) = param_3; - puVar7 = *(ushort **)(param_1 + 10); - break; - case 0xc: - iVar4 = *(int *)(param_1 + 2); - if (*(int *)(iVar4 + 0x18) != 0) { - *(int *)(iVar4 + 0x18) = *(int *)(iVar4 + 0x18) + (param_3 - param_2); - } - *(int *)(iVar4 + 0x24) = param_3; - puVar7 = *(ushort **)(param_1 + 10); - break; - case 0xd: - iVar4 = *(int *)(param_1 + 2); - if (*(int *)(iVar4 + 0x10) != 0) { - *(int *)(iVar4 + 0x10) = *(int *)(iVar4 + 0x10) + (param_3 - param_2); - } - if (*(int *)(iVar4 + 0x14) != 0) { - *(int *)(iVar4 + 0x14) = *(int *)(iVar4 + 0x14) + (param_3 - param_2); - } - *(int *)(iVar4 + 0x1c) = param_3; - puVar7 = *(ushort **)(param_1 + 10); - break; - case 0x11: - iVar4 = *(int *)(*(int *)(param_1 + 2) + 0x14); - if (iVar4 != 0) { - *(int *)(*(int *)(param_1 + 2) + 0x14) = iVar4 + (param_3 - param_2); - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 0x12: - iVar4 = **(int **)(param_1 + 2); - if (iVar4 != 0) { - **(int **)(param_1 + 2) = iVar4 + (param_3 - param_2); - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 0x14: - iVar4 = *(int *)(*(int *)(param_1 + 2) + 4); - if (iVar4 != 0) { - *(int *)(*(int *)(param_1 + 2) + 4) = iVar4 + (param_3 - param_2); - } - puVar7 = *(ushort **)(param_1 + 10); - break; - case 0x16: - iVar4 = *(int *)(param_1 + 2); - if (*(int *)(iVar4 + 4) != 0) { - *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + (param_3 - param_2); - } - *(int *)(iVar4 + 0xc) = param_3; - puVar7 = *(ushort **)(param_1 + 10); - break; - case 0x18: - iVar4 = *(int *)(param_1 + 2); - lVar3 = 0; - if (*(int *)(iVar4 + 8) != 0) { - *(int *)(iVar4 + 8) = *(int *)(iVar4 + 8) + (param_3 - param_2); - } - iVar8 = 0; - if (*(int *)(iVar4 + 0x10) != 0) { - *(int *)(iVar4 + 0x10) = *(int *)(iVar4 + 0x10) + (param_3 - param_2); - } - if (*(int *)(iVar4 + 0x14) != 0) { - *(int *)(iVar4 + 0x14) = *(int *)(iVar4 + 0x14) + (param_3 - param_2); - } - lVar5 = (longlong)*(short *)(iVar4 + 0xe); - if (lVar5 < 1) { - *(int *)(iVar4 + 0x1c) = param_3; - } - else { - do { - lVar3 = (longlong)((int)lVar3 + 1); - iVar9 = *(int *)(iVar4 + 0x10) + iVar8; - iVar6 = *(int *)(iVar9 + 8); - if (iVar6 != 0) { - *(int *)(iVar9 + 8) = iVar6 + (param_3 - param_2); - lVar5 = (longlong)*(short *)(iVar4 + 0xe); - } - iVar8 += 0x10; - } while (lVar3 < lVar5); - *(int *)(iVar4 + 0x1c) = param_3; - } - puVar7 = *(ushort **)(param_1 + 10); - } - } - if ((puVar7 == NULL) && (puVar7 = param_1, param_1 != NULL)) { - puVar7 = *(ushort **)(param_1 + 6); - while ((puVar7 == NULL && - (param_1 = *(ushort **)(param_1 + 4), puVar7 = param_1, param_1 != NULL))) { - puVar7 = *(ushort **)(param_1 + 6); - } - } - if (puVar7 == NULL) { - return; - } - uVar1 = *puVar7; - param_1 = puVar7; - } while( true ); -} - - - -void proc_7F075A90(ushort **param_1,int param_2,int param_3) - -{ - int iVar1; - longlong lVar2; - int iVar3; - longlong lVar4; - - lVar4 = (longlong)*(short *)(param_1 + 3); - lVar2 = 0; - if (0 < lVar4) { - iVar3 = 0; - do { - lVar2 = (longlong)((int)lVar2 + 1); - iVar1 = *(int *)((int)param_1[2] + iVar3); - if (iVar1 != 0) { - *(int *)((int)param_1[2] + iVar3) = iVar1 + (param_3 - param_2); - lVar4 = (longlong)*(short *)(param_1 + 3); - } - iVar3 += 4; - } while (lVar2 < lVar4); - } - convert_obj_microcode_offset_to_rdram_addr(*param_1,param_2,param_3); - return; -} - - - -void proc_7F075B08(void) - -{ - return; -} - - - -uint set_microcode_entry_numbers(ushort *param_1) - -{ - ushort uVar1; - int iVar2; - ushort **ppuVar3; - ushort *puVar4; - ushort *puVar5; - undefined2 uVar6; - uint uVar7; - - uVar7 = 0; - if (param_1 == NULL) { - return 0; - } - uVar1 = *param_1; - puVar4 = param_1; - do { - if (false) { -switchD_7f075b60_caseD_2: - puVar5 = *(ushort **)(puVar4 + 10); - } - else { - uVar6 = (undefined2)uVar7; - switch((uint)uVar1 & 0xff) { - case 1: - *(undefined2 *)(*(int *)(puVar4 + 2) + 0xc) = uVar6; - uVar7 = uVar7 + 0x18 & 0xffff; - puVar5 = *(ushort **)(puVar4 + 10); - break; - default: - goto switchD_7f075b60_caseD_2; - case 7: - *(undefined2 *)(*(int *)(puVar4 + 2) + 0x1aa) = uVar6; - uVar7 = uVar7 + 1 & 0xffff; - puVar5 = *(ushort **)(puVar4 + 10); - break; - case 8: - iVar2 = *(int *)(puVar4 + 2); - *(undefined2 *)(iVar2 + 0xc) = uVar6; - puVar5 = *(ushort **)(iVar2 + 8); - uVar7 = uVar7 + 1 & 0xffff; - *(ushort **)(puVar4 + 10) = puVar5; - break; - case 9: - *(undefined2 *)(*(int *)(puVar4 + 2) + 0x22) = uVar6; - uVar7 = uVar7 + 1 & 0xffff; - proc_7F06EA54((int)puVar4,0); - puVar5 = *(ushort **)(puVar4 + 10); - break; - case 0xb: - *(undefined2 *)(*(int *)(puVar4 + 2) + 0x44) = uVar6; - uVar7 = uVar7 + 1 & 0xffff; - puVar5 = *(ushort **)(puVar4 + 10); - break; - case 0xc: - *(undefined2 *)(*(int *)(puVar4 + 2) + 0x20) = uVar6; - uVar7 = uVar7 + 1 & 0xffff; - puVar5 = *(ushort **)(puVar4 + 10); - break; - case 0x12: - ppuVar3 = *(ushort ***)(puVar4 + 2); - *(undefined2 *)(ppuVar3 + 1) = uVar6; - puVar5 = *ppuVar3; - uVar7 = uVar7 + 1 & 0xffff; - *(ushort **)(puVar4 + 10) = puVar5; - break; - case 0x17: - puVar5 = NULL; - **(undefined2 **)(puVar4 + 2) = uVar6; - uVar7 = uVar7 + 2 & 0xffff; - *(undefined4 *)(puVar4 + 10) = 0; - break; - case 0x18: - *(undefined2 *)(*(int *)(puVar4 + 2) + 0x1a) = uVar6; - uVar7 = uVar7 + 2 & 0xffff; - puVar5 = *(ushort **)(puVar4 + 10); - } - } - if ((puVar5 == NULL) && (puVar5 = puVar4, puVar4 != NULL)) { - while (puVar4 != *(ushort **)(param_1 + 4)) { - puVar5 = *(ushort **)(puVar4 + 6); - if ((puVar5 != NULL) || (puVar5 = *(ushort **)(puVar4 + 4), puVar4 = puVar5, puVar5 == NULL) - ) goto LAB_7f075cd4; - } - puVar5 = NULL; - } -LAB_7f075cd4: - if (puVar5 == NULL) { - return uVar7; - } - uVar1 = *puVar5; - puVar4 = puVar5; - } while( true ); -} - - - -void set_objuse_flag_compute_grp_nums_set_obj_loaded(object_header *objheader) - -{ - uint uVar1; - - objheader->is_loaded_in_mem = 1; - uVar1 = set_microcode_entry_numbers((ushort *)objheader->offset_obj_table); - objheader->num_table_entries = (short)uVar1; - return; -} - - - -void unknown_object_microcode_handler(int param_1,ushort *param_2) - -{ - ushort uVar1; - int iVar2; - ushort **ppuVar3; - undefined *puVar4; - undefined4 *puVar5; - undefined2 *puVar6; - undefined4 *puVar7; - ushort *partdesc; - ushort *puVar8; - - if (param_2 == NULL) { - return; - } - uVar1 = *param_2; - partdesc = param_2; - do { - if (false) { -switchD_7f075d80_caseD_2: - puVar8 = *(ushort **)(partdesc + 10); - } - else { - switch((uint)uVar1 & 0xff) { - case 1: - puVar4 = (undefined *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar4 = 0; - *(undefined4 *)(puVar4 + 4) = 0; - *(undefined4 *)(puVar4 + 8) = 0; - *(undefined4 *)(puVar4 + 0xc) = 0; - *(undefined4 *)(puVar4 + 0x10) = 0; - *(undefined4 *)(puVar4 + 0x14) = 0; - *(undefined4 *)(puVar4 + 0x18) = 0; - *(undefined4 *)(puVar4 + 0x1c) = 0; - puVar4[1] = 0; - *(undefined4 *)(puVar4 + 0x34) = 0; - *(undefined4 *)(puVar4 + 0x38) = 0; - *(undefined4 *)(puVar4 + 0x3c) = 0; - *(undefined4 *)(puVar4 + 0x30) = 0; - *(undefined4 *)(puVar4 + 0x24) = 0; - *(undefined4 *)(puVar4 + 0x28) = 0; - *(undefined4 *)(puVar4 + 0x2c) = 0; - *(undefined4 *)(puVar4 + 0x20) = 0; - puVar4[2] = 0; - *(undefined4 *)(puVar4 + 0x4c) = 0; - *(undefined4 *)(puVar4 + 0x50) = 0; - *(undefined4 *)(puVar4 + 0x54) = 0; - *(undefined4 *)(puVar4 + 0x40) = 0; - *(undefined4 *)(puVar4 + 0x44) = 0; - *(undefined4 *)(puVar4 + 0x48) = 0; - *(undefined4 *)(puVar4 + 0x5c) = 0; - puVar8 = *(ushort **)(partdesc + 10); - break; - default: - goto switchD_7f075d80_caseD_2; - case 7: - puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar5 = 0; - puVar8 = *(ushort **)(partdesc + 10); - break; - case 8: - iVar2 = *(int *)(partdesc + 2); - puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar5 = 0; - puVar8 = *(ushort **)(iVar2 + 8); - *(ushort **)(partdesc + 10) = puVar8; - break; - case 9: - puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar5 = 0; - proc_7F06EB10(param_1,partdesc); - puVar8 = *(ushort **)(partdesc + 10); - break; - case 0xb: - puVar6 = (undefined2 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar6 = 0; - puVar8 = *(ushort **)(partdesc + 10); - break; - case 0xc: - puVar6 = (undefined2 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar6 = 0; - puVar8 = *(ushort **)(partdesc + 10); - break; - case 0x12: - ppuVar3 = *(ushort ***)(partdesc + 2); - puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar5 = 1; - puVar8 = *ppuVar3; - *(ushort **)(partdesc + 10) = puVar8; - break; - case 0x17: - puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar5 = 0; - puVar5[1] = 0; - puVar8 = *(ushort **)(partdesc + 10); - break; - case 0x18: - puVar5 = *(undefined4 **)(partdesc + 2); - puVar7 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); - *puVar7 = puVar5[2]; - puVar7[1] = *puVar5; - puVar8 = *(ushort **)(partdesc + 10); - } - } - if ((puVar8 == NULL) && (puVar8 = partdesc, partdesc != NULL)) { - while (partdesc != *(ushort **)(param_2 + 4)) { - puVar8 = *(ushort **)(partdesc + 6); - if ((puVar8 != NULL) || - (puVar8 = *(ushort **)(partdesc + 4), partdesc = puVar8, puVar8 == NULL)) - goto LAB_7f075f44; - } - puVar8 = NULL; - } -LAB_7f075f44: - if (puVar8 == NULL) { - return; - } - uVar1 = *puVar8; - partdesc = puVar8; - } while( true ); -} - - - -void proc_7F075F68(int param_1,ushort **param_2,undefined4 param_3) - -{ - *(ushort ***)(param_1 + 8) = param_2; - *(undefined4 *)(param_1 + 0x10) = param_3; - *(undefined2 *)(param_1 + 2) = 0xffff; - *(undefined4 *)(param_1 + 0x18) = 0; - *(undefined4 *)(param_1 + 0x1c) = 0; - *(undefined4 *)(param_1 + 0x14) = 0x3f800000; - unknown_object_microcode_handler(param_1,*param_2); - return; -} - - - -void proc_7F075FAC(int param_1,ushort **param_2,undefined4 param_3) - -{ - proc_7F075F68(param_1,param_2,param_3); - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x54) = 0; - *(undefined *)(param_1 + 0x26) = 0; - *(undefined4 *)(param_1 + 0x98) = 0; - *(undefined4 *)(param_1 + 0x9c) = 0; - *(undefined4 *)(param_1 + 0xa0) = 0; - *(undefined4 *)(param_1 + 0x2c) = 0; - *(undefined4 *)(param_1 + 0x4c) = 0; - *(undefined4 *)(param_1 + 0x5c) = 0; - *(undefined4 *)(param_1 + 0x7c) = 0; - *(undefined4 *)(param_1 + 0x84) = 0; - *(undefined4 *)(param_1 + 0x88) = 0; - *(undefined4 *)(param_1 + 0xb0) = 0; - *(undefined4 *)(param_1 + 0x40) = 0x3f800000; - *(undefined4 *)(param_1 + 0x70) = 0x3f800000; - *(undefined4 *)(param_1 + 0xa4) = 0x3f800000; - *(undefined4 *)(param_1 + 0xb8) = 0x3f800000; - *(undefined4 *)(param_1 + 0x3c) = 0xbf800000; - *(undefined4 *)(param_1 + 0x6c) = 0xbf800000; - return; -} - - - -void proc_7F076030(int param_1,int param_2,ushort *param_3,ushort **param_4) - -{ - ushort **ppuVar1; - uint uVar2; - ushort *puVar3; - - ppuVar1 = (ushort **)extract_id_from_object_structure_microcode(param_1,param_3); - *(ushort ***)ppuVar1 = param_4; - ppuVar1[1] = (ushort *)(*(int *)(param_1 + 0x10) + (int)*(short *)(param_2 + 0x14) * 4); - puVar3 = *param_4; - *(ushort **)(param_3 + 10) = puVar3; - if (puVar3 != NULL) { - *(ushort **)(puVar3 + 4) = param_3; - while (puVar3 = *(ushort **)(puVar3 + 6), puVar3 != NULL) { - *(ushort **)(puVar3 + 4) = param_3; - } - puVar3 = *(ushort **)(param_3 + 10); - } - uVar2 = set_microcode_entry_numbers(puVar3); - *(short *)(param_2 + 0x14) = *(short *)(param_2 + 0x14) + (short)uVar2; - return; -} - - - -void proc_7F0760C4(ushort **param_1,ushort **param_2,int *param_3) - -{ - ushort uVar1; - int iVar2; - ushort *puVar3; - ushort *puVar4; - int iVar5; - - puVar3 = *param_2; - iVar5 = 0; - if (puVar3 == NULL) { - puVar3 = *param_1; - } - if (puVar3 == NULL) { - *param_3 = 0; - puVar4 = puVar3; - } - else { - uVar1 = *puVar3; - while( true ) { - if (true) { - switch((uint)uVar1 & 0xff) { - case 4: - if (puVar3 == *param_2) { - iVar2 = (*(int **)(puVar3 + 2))[1]; - if (iVar2 != *param_3) { - iVar5 = iVar2; - } - } - else { - iVar5 = **(int **)(puVar3 + 2); - } - break; - case 8: - *(undefined4 *)(puVar3 + 10) = *(undefined4 *)(*(int *)(puVar3 + 2) + 8); - break; - case 9: - proc_7F06EA54((int)puVar3,1); - break; - case 0x12: - *(undefined4 *)(puVar3 + 10) = **(undefined4 **)(puVar3 + 2); - break; - case 0x16: - if (puVar3 != *param_2) { - iVar5 = *(int *)(*(int *)(puVar3 + 2) + 8); - } - break; - case 0x18: - if (puVar3 == *param_2) { - iVar2 = (*(int **)(puVar3 + 2))[1]; - if (iVar2 != *param_3) { - iVar5 = iVar2; - } - } - else { - iVar5 = **(int **)(puVar3 + 2); - } - } - } - if (iVar5 != 0) { - *param_3 = iVar5; - puVar4 = puVar3; - goto LAB_7f07621c; - } - puVar4 = *(ushort **)(puVar3 + 10); - if ((puVar4 == NULL) && (puVar4 = puVar3, puVar3 != NULL)) { - puVar4 = *(ushort **)(puVar3 + 6); - while ((puVar4 == NULL && - (puVar3 = *(ushort **)(puVar3 + 4), puVar4 = puVar3, puVar3 != NULL))) { - puVar4 = *(ushort **)(puVar3 + 6); - } - } - if (puVar4 == NULL) break; - uVar1 = *puVar4; - puVar3 = puVar4; - } - *param_3 = 0; - } -LAB_7f07621c: - *param_2 = puVar4; - return; -} - - - -void proc_7F07623C(undefined8 param_1,ushort *param_2,int param_3,int param_4) - -{ - int *piVar1; - ushort uVar2; - - uVar2 = *param_2 & 0xff; - if (uVar2 == 4) { - piVar1 = *(int **)(param_2 + 2); - if (param_3 == *piVar1) { - *piVar1 = param_4; - return; - } - if (param_3 == piVar1[1]) { - piVar1[1] = param_4; - return; - } - } - else { - if (uVar2 == 0x16) { - if (param_3 == *(int *)(*(int *)(param_2 + 2) + 8)) { - *(int *)(*(int *)(param_2 + 2) + 8) = param_4; - } - } - else { - if (uVar2 != 0x18) { - return; - } - piVar1 = *(int **)(param_2 + 2); - if (param_3 == *piVar1) { - *piVar1 = param_4; - return; - } - if (param_3 == piVar1[1]) { - piVar1[1] = param_4; - return; - } - } - } - return; -} - - - -void proc_7F0762E0(undefined8 param_1,byte *param_2,int param_3,uint *param_4) - -{ - ushort *puVar1; - ushort **ppuVar2; - uint uVar3; - int iVar4; - int buffer; - int buffer_remain; - uint *puVar5; - int iVar6; - int iVar7; - int iVar8; - ushort *puVar9; - uint uVar10; - uint auStack12 [2]; - ushort *puStack4; - - ppuVar2 = (ushort **)param_1; - puVar1 = ppuVar2[2]; - iVar4 = get_index_num_of_named_resource(param_2); - buffer = get_remaining_buffer_for_index(iVar4); - buffer_remain = get_temp_remaining_buffer_for_index(iVar4); - puStack4 = NULL; - proc_7F0760C4(ppuVar2,&puStack4,(int *)auStack12); - uVar10 = auStack12[0]; - if (auStack12[0] != 0) { - iVar6 = (int)ppuVar2[2] + (auStack12[0] & 0xffffff); - iVar8 = (buffer_remain - iVar6) + (int)puVar1; - iVar7 = (int)puVar1 + (buffer - iVar8); - proc_7F0CE794(iVar6,iVar7,iVar8); - proc_7F0CBE50((int)ppuVar2,param_4); - if (puStack4 == NULL) { - puVar9 = ppuVar2[2]; - } - else { - do { - puVar9 = puStack4; - uVar3 = auStack12[0]; - proc_7F0760C4(ppuVar2,&puStack4,(int *)auStack12); - if (auStack12[0] == 0) { - iVar8 = (int)puVar1 + ((buffer_remain - (int)ppuVar2[2]) - (uVar3 & 0xffffff)); - } - else { - iVar8 = auStack12[0] - uVar3; - } - proc_7F07623C(param_1,puVar9,uVar3,uVar10); - puVar5 = process_microcode_sort_display_modes_expand_image_calls - ((uint *)((int)ppuVar2[2] + (iVar7 - iVar6) + (uVar3 & 0xffffff)),iVar8, - (uint *)((int)ppuVar2[2] + (uVar10 & 0xffffff)),param_4); - uVar10 += (int)puVar5; - } while (puStack4 != NULL); - puVar9 = ppuVar2[2]; - } - proc_7F0BD138(iVar4,(int)puVar1, - (int)puVar9 + ((uVar10 & 0xffffff) - (int)puVar1) + 0xf & 0xfffffff0, - (ulonglong)(param_3 == 0)); - } - return; -} - - - -void load_object_fill_header - (object_header *objheader,u8 *recallstring,int targetloc,int sizeleft,int param_5) - -{ - undefined *in_v0_lo; - - if (targetloc == 0) { - _load_resource_named_to_membank(recallstring,0,0x100,4); - } - else { - in_v0_lo = _load_resource_named_to_buffer(recallstring,0,(undefined *)targetloc,sizeleft); - } - *(undefined **)&objheader->offset_obj_offset_block = in_v0_lo; - *(undefined **)&objheader->offset_img_declaration = - in_v0_lo + (int)objheader->num_offset_entries * 4; - *(undefined **)&objheader->offset_obj_table = - in_v0_lo + (int)objheader->num_offset_entries * 4 + (int)objheader->num_image_entries * 0xc; - proc_7F075A90((ushort **)objheader,0x5000000,(int)in_v0_lo); - proc_7F0762E0((longlong)(int)objheader,recallstring,targetloc,(uint *)param_5); - return; -} - - - -void load_object_into_memory(object_header *header,u8 *recallstring) - -{ - load_object_fill_header(header,recallstring,0,0,0); - return; -} - - - -void load_object_into_memory_unused_maybe - (object_header *header,int *recallstring,int targetloc,int sizeleft) - -{ - load_object_fill_header(header,(u8 *)recallstring,targetloc,sizeleft,0); - return; -} - - - -s32 is_less_than_certain_power_of_2(int number) - -{ - if (number < 2) { - return 0; - } - if (number < 3) { - return 1; - } - if (number < 5) { - return 2; - } - if (number < 9) { - return 3; - } - if (number < 0x11) { - return 4; - } - if (number < 0x21) { - return 5; - } - if (number < 0x41) { - return 6; - } - if (number < 0x81) { - return 7; - } - return 8; -} - - - -int ceil8000(int width) - -{ - int iVar1; - float fVar2; - - iVar1 = width + 0xf; - if (iVar1 < 0) { - iVar1 = width + 0x1e; - } - fVar2 = 32768.00000000 / (float)((iVar1 >> 4) << 4); - iVar1 = (int)fVar2; - return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F90); -} - - - -int ceil4000(int width) - -{ - int iVar1; - float fVar2; - - iVar1 = width + 7; - if (iVar1 < 0) { - iVar1 = width + 0xe; - } - fVar2 = 16384.00000000 / (float)((iVar1 >> 3) << 3); - iVar1 = (int)fVar2; - return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F94); -} - - - -int ceil2000(int width) - -{ - int iVar1; - float fVar2; - - iVar1 = width + 3; - if (iVar1 < 0) { - iVar1 = width + 6; - } - fVar2 = 8192.00000000 / (float)((iVar1 >> 2) << 2); - iVar1 = (int)fVar2; - return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F98); -} - - - -int ceil1000(int width) - -{ - int iVar1; - float fVar2; - - iVar1 = width + 3; - if (iVar1 < 0) { - iVar1 = width + 6; - } - fVar2 = 4096.00000000 / (float)((iVar1 >> 2) << 2); - iVar1 = (int)fVar2; - return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F9C); -} - - - -int proc_7F0767D8(int param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar1 = 0; - if (param_3 < 1) { - param_3 = 1; - } - iVar2 = param_1 + 0xf; - if (0 < param_3) { - while( true ) { - if (iVar2 < 0) { - iVar2 += 0xf; - } - param_3 += -1; - iVar1 += (iVar2 >> 4) * 4 * param_2; - iVar2 = param_1 >> 1; - if (param_1 < 2) { - iVar2 = param_1; - } - param_1 = iVar2; - if (1 < param_2) { - param_2 = param_2 >> 1; - } - if (param_3 < 1) break; - iVar2 = param_1 + 0xf; - } - } - return iVar1; -} - - - -int proc_7F076848(int param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar1 = 0; - if (param_3 < 1) { - param_3 = 1; - } - iVar2 = param_1 + 7; - if (0 < param_3) { - while( true ) { - if (iVar2 < 0) { - iVar2 += 7; - } - param_3 += -1; - iVar1 += (iVar2 >> 3) * 4 * param_2; - iVar2 = param_1 >> 1; - if (param_1 < 2) { - iVar2 = param_1; - } - param_1 = iVar2; - if (1 < param_2) { - param_2 = param_2 >> 1; - } - if (param_3 < 1) break; - iVar2 = param_1 + 7; - } - } - return iVar1; -} - - - -int proc_7F0768B8(int param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar1 = 0; - if (param_3 < 1) { - param_3 = 1; - } - iVar2 = param_1 + 3; - if (0 < param_3) { - while( true ) { - if (iVar2 < 0) { - iVar2 += 3; - } - param_3 += -1; - iVar1 += (iVar2 >> 2) * 4 * param_2; - iVar2 = param_1 >> 1; - if (param_1 < 2) { - iVar2 = param_1; - } - param_1 = iVar2; - if (1 < param_2) { - param_2 = param_2 >> 1; - } - if (param_3 < 1) break; - iVar2 = param_1 + 3; - } - } - return iVar1; -} - - - -int proc_7F076928(int param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar1 = 0; - if (param_3 < 1) { - param_3 = 1; - } - iVar2 = param_1 + 3; - if (0 < param_3) { - while( true ) { - if (iVar2 < 0) { - iVar2 += 3; - } - param_3 += -1; - iVar1 += (iVar2 >> 2) * 4 * param_2; - iVar2 = param_1 >> 1; - if (param_1 < 2) { - iVar2 = param_1; - } - param_1 = iVar2; - if (1 < param_2) { - param_2 = param_2 >> 1; - } - if (param_3 < 1) break; - iVar2 = param_1 + 3; - } - } - return iVar1; -} - - - -void generate_microcode_for_othermode_setting - (undefined4 *DL,int param_2,longlong param_3,longlong bowtie) - -{ - undefined4 *puVar1; - undefined4 *puVar2; - - puVar1 = (undefined4 *)*DL; - if (param_3 != 1) { - *puVar1 = 0xe7000000; - puVar1[1] = 0; - puVar1[3] = 0x100000; - puVar1[2] = 0xba001402; - puVar2 = puVar1 + 4; - if (param_2 != 1) { - if (param_2 == 2) { - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc1841c8; - } - else { - if (bowtie < 2) { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc1849d8; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc184dd8; - } - } - goto LAB_7f076d60; - } - if (param_2 == 3) { - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc193048; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc193078; - } - goto LAB_7f076d60; - } - if (param_2 == 4) { - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc184340; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc184b50; - } - goto LAB_7f076d60; - } - } - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc192048; - } - else { - if (bowtie < 2) { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc192078; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0xc192d58; - } - } - goto LAB_7f076d60; - } - *puVar1 = 0xe7000000; - puVar1[1] = 0; - puVar1[2] = 0xba001402; - puVar1[3] = 0; - puVar2 = puVar1 + 4; - if (param_2 != 1) { - if (param_2 == 2) { - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0x5041c8; - } - else { - if (bowtie < 2) { - *puVar2 = 0xb900031d; - puVar1[5] = 0x5049d8; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0x504dd8; - } - } - goto LAB_7f076d60; - } - if (param_2 == 3) { - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0x553048; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0x553078; - } - goto LAB_7f076d60; - } - if (param_2 == 4) { - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0x504340; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0x504b50; - } - goto LAB_7f076d60; - } - } - if (bowtie == 0) { - *puVar2 = 0xb900031d; - puVar1[5] = 0x552048; - } - else { - if (bowtie < 2) { - *puVar2 = 0xb900031d; - puVar1[5] = 0x552078; - } - else { - *puVar2 = 0xb900031d; - puVar1[5] = 0x552d58; - } - } -LAB_7f076d60: - *(undefined4 **)DL = puVar1 + 6; - return; -} - - - -void likely_generate_DL_for_image_declaration - (uint **DLtarget,uint *imgcall,int param_3,longlong param_4,uint param_5) - -{ - byte bVar1; - byte bVar2; - uint *puVar3; - uint *puVar4; - int number; - uint uVar5; - uint uVar6; - uint uVar7; - uint *puVar8; - uint uVar9; - int iVar10; - ulonglong uVar11; - ulonglong uVar12; - int number_00; - uint uVar13; - ulonglong uVar14; - uint uStack268; - uint uStack180; - uint uStack176; - uint uStack172; - byte bStack166; - uint uStack164; - uint uStack160; - uint uStack60; - uint uStack56; - uint uStack52; - uint uStack48; - uint uStack44; - uint *puStack4; - - puStack4 = *DLtarget; - uVar5 = (uint)param_4; - if (imgcall == NULL) { - generate_microcode_for_othermode_setting(&puStack4,param_3,1,param_4); - puVar3 = puStack4; - if (param_4 < 2) { - puStack4[1] = 0xffffffff; - *puStack4 = 0xbb000001; - } - else { - puStack4[1] = 0xffffffff; - *puStack4 = (uVar5 & 0xff) << 0x10 | 0xbb000001; - } - puStack4 = puStack4 + 2; - *puStack4 = 0xfcffffff; - puVar3[3] = 0xfffe793c; - puStack4 = puVar3 + 4; - goto LAB_7f077b80; - } - uVar9 = *imgcall; - bVar1 = *(byte *)(imgcall + 1); - uVar12 = (ulonglong)bVar1; - bVar2 = *(byte *)((int)imgcall + 5); - uVar11 = (ulonglong)bVar2; - if (uVar9 < 0xbb9) { - load_image_to_buffer(imgcall,NULL); - uVar9 = *imgcall; - } - puVar3 = proc_7F0CBB0C((uint)*(ushort *)((uVar9 | 0x80000000) - 8),NULL); - if (*(byte *)((int)imgcall + 6) == 0) { - if (puVar3 == NULL) { - uVar11 = (ulonglong)*(byte *)((int)imgcall + 7); - uVar12 = (ulonglong)*(byte *)(imgcall + 2); - } - else { - uVar11 = SEXT48((int)((puVar3[2] << 0x1b) >> 0x1d)); - uStack44 = (puVar3[3] >> 0x1e) << 0xe; - uVar12 = (longlong)(int)puVar3[2] & 3; - } - uVar9 = (uint)bVar1; - if (uVar12 == 0) { - uStack48 = 2; - number = proc_7F0767D8((uint)bVar1,(uint)bVar2,1); - uStack52 = number - 1; - uStack56 = ceil8000((uint)bVar1); - uStack60 = (int)(uVar9 + 0xf) >> 4; - } - else { - if (uVar12 == 1) { - uStack48 = 2; - number = proc_7F076848((uint)bVar1,(uint)bVar2,1); - uStack52 = number - 1; - uStack56 = ceil4000((uint)bVar1); - uStack60 = (int)(uVar9 + 7) >> 3; - } - else { - if (uVar12 == 2) { - uStack48 = 2; - number = proc_7F0768B8((uint)bVar1,(uint)bVar2,1); - uStack52 = number - 1; - uStack56 = ceil2000((uint)bVar1); - uStack60 = (int)(uVar9 + 3) >> 2; - } - else { - if (uVar12 == 3) { - uStack48 = 3; - number = proc_7F076928((uint)bVar1,(uint)bVar2,1); - uStack52 = number - 1; - uStack56 = ceil1000((uint)bVar1); - uStack60 = (int)(uVar9 + 3) >> 2; - } - } - } - } - generate_microcode_for_othermode_setting(&puStack4,param_3,1,param_4); - puVar8 = puStack4; - if (param_4 < 2) { - puStack4[1] = 0xffffffff; - *puStack4 = 0xbb000001; - } - else { - puStack4[1] = 0xffffffff; - *puStack4 = (uVar5 & 0xff) << 0x10 | 0xbb000001; - } - puStack4 = puStack4 + 2; - puVar4 = puVar8 + 4; - puVar8[3] = 0; - *puStack4 = 0xba001001; - if (uVar11 == 0) { - *puVar4 = 0xfc121824; - puVar8[5] = 0xff33ffff; -LAB_7f077150: - puStack4 = puVar8 + 6; - puVar4 = puStack4; - } - else { - if (uVar11 == 2) { - if (uStack44 == 0x8000) { - puVar8[5] = 0xff33ffff; - *puVar4 = 0xfc121824; - } - else { - if (uStack44 != 0xc000) goto LAB_7f077154; - *puVar4 = 0xfc121824; - puVar8[5] = 0xff33ffff; - } - goto LAB_7f077150; - } - if (uVar11 == 3) { - puVar8[5] = 0xff33ffff; - *puVar4 = 0xfc121824; - goto LAB_7f077150; - } - if (uVar11 == 4) { - puVar8[5] = 0xfffff9fc; - *puVar4 = 0xfc127e24; - goto LAB_7f077150; - } - } -LAB_7f077154: - uVar7 = ((uint)uVar11 & 7) << 0x15; - uVar5 = (uStack48 & 3) << 0x13; - *puVar4 = uVar7 | 0xfd000000 | uVar5; - uVar7 |= 0xf5000000; - puVar4[1] = *imgcall; - puVar4[2] = uVar7 | uVar5; - puVar4[3] = ((uint)*(byte *)((int)imgcall + 10) & 3) << 0x12 | 0x7000000 | - ((uint)*(byte *)((int)imgcall + 9) & 3) << 8; - puVar4[5] = 0; - puVar4[4] = 0xe6000000; - puVar4[6] = 0xf3000000; - uVar5 = 0x7ff; - if ((int)uStack52 < 0x7ff) { - uVar5 = uStack52; - } - puVar4[7] = (uVar5 & 0xfff) << 0xc | 0x7000000 | uStack56 & 0xfff; - puVar4[9] = 0; - puVar4[8] = 0xe7000000; - if (uVar11 == 2) { - uVar5 = 0x3ff - (uint)*(byte *)((int)puVar3 + 10); - if (uStack52 + 1 <= uVar5) { - uVar5 = 0; - } - puVar4[10] = 0xf5000100; - puVar4[0xb] = 0x7000000; - uVar6 = (uStack52 + 1) - uVar5; - puVar4[0xd] = 0; - puVar4[0xc] = 0xe6000000; - uVar5 = (uVar5 & 0x3ff) << 2; - puVar4[0xe] = (uVar6 & 0x3ff) << 0xe | 0xf0000000 | uVar5; - puVar4[0xf] = ((uint)*(byte *)((int)puVar3 + 10) + uVar6 & 0x3ff) << 0xe | 0x7000000 | uVar5; - puVar4[0x11] = 0; - puVar4[0x10] = 0xe7000000; - puStack4 = puVar4 + 0x14; - puVar4[0x12] = 0xba000e02; - puVar4[0x13] = uStack44; - } - else { - puStack4 = puVar4 + 0xc; - puVar4[0xb] = 0; - puVar4[10] = 0xba000e02; - } - puVar3 = puStack4; - *puStack4 = uVar7 | ((uint)uVar12 & 3) << 0x13 | (uStack60 & 0x1ff) << 9; - puStack4 = puStack4 + 2; - uVar5 = is_less_than_certain_power_of_2((uint)bVar2); - uVar7 = is_less_than_certain_power_of_2((uint)bVar1); - puVar3[1] = (uVar7 & 0xf) << 4 | ((uint)*(byte *)((int)imgcall + 10) & 3) << 0x12 | - (uVar5 & 0xf) << 0xe | ((uint)*(byte *)((int)imgcall + 9) & 3) << 8; - *puStack4 = (param_5 & 0xfff) << 0xc | 0xf2000000 | param_5 & 0xfff; - puStack4[1] = ((uVar9 - 1) * 4 + param_5 & 0xfff) << 0xc | - ((uint)bVar2 - 1) * 4 + param_5 & 0xfff; - puStack4 = puStack4 + 2; - goto LAB_7f077b80; - } - uStack160 = 0; - uStack164 = (uint)*(byte *)((int)imgcall + 6); - if (puVar3 == NULL) { - bStack166 = *(byte *)(imgcall + 2); - uVar14 = (ulonglong)*(byte *)((int)imgcall + 7); -LAB_7f07748c: - if (bStack166 == 0) { - uStack176 = 2; - number = proc_7F0767D8((uint)bVar1,(uint)bVar2,uStack164); - uStack180 = number - 1; - } - else { - if (bStack166 == 1) { - uStack176 = 2; - number = proc_7F076848((uint)bVar1,(uint)bVar2,uStack164); - uStack180 = number - 1; - } - else { - if (bStack166 == 2) { - uStack176 = 2; - number = proc_7F0768B8((uint)bVar1,(uint)bVar2,uStack164); - uStack180 = number - 1; - } - else { - if (bStack166 == 3) { - uStack176 = 3; - number = proc_7F076928((uint)bVar1,(uint)bVar2,uStack164); - uStack180 = number - 1; - } - } - } - } - } - else { - bStack166 = (byte)puVar3[2] & 3; - uVar14 = SEXT48((int)((puVar3[2] << 0x1b) >> 0x1d)); - uStack172 = (puVar3[3] >> 0x1e) << 0xe; - if (-1 < (int)(puVar3[3] << 2)) goto LAB_7f07748c; - proc_7F0CC9D4(puVar3,&uStack176,(int *)&uStack180); - } - generate_microcode_for_othermode_setting(&puStack4,param_3,2,param_4); - puVar8 = puStack4; - bVar1 = bStack166; - if (param_4 < 2) { - puStack4[1] = 0xffffffff; - *puStack4 = (uStack164 - 1 & 7) << 0xb | 0xbb000001; - } - else { - puStack4[1] = 0xffffffff; - *puStack4 = (uVar5 & 0xff) << 0x10 | 0xbb000000 | (uStack164 - 1 & 7) << 0xb | 1; - } - puStack4 = puStack4 + 2; - puVar4 = puVar8 + 4; - puVar8[3] = 0x10000; - *puStack4 = 0xba001001; - if (uVar14 == 0) { - *puVar4 = 0xfc26a004; - puVar8[5] = 0x1f1093ff; -LAB_7f0776ec: - puStack4 = puVar8 + 6; - puVar4 = puStack4; - } - else { - if (uVar14 == 2) { - if (uStack172 == 0x8000) { - puVar8[5] = 0xff33ffff; - *puVar4 = 0xfc121824; - } - else { - if (uStack172 != 0xc000) goto LAB_7f0776f0; - *puVar4 = 0xfc121824; - puVar8[5] = 0xff33ffff; - } - goto LAB_7f0776ec; - } - if (uVar14 == 3) { - puVar8[5] = 0x1f1093ff; - *puVar4 = 0xfc26a004; - goto LAB_7f0776ec; - } - if (uVar14 == 4) { - puVar8[5] = 0x1ffc93fc; - *puVar4 = 0xfc26a004; - goto LAB_7f0776ec; - } - } -LAB_7f0776f0: - uVar9 = ((uint)uVar14 & 7) << 0x15; - *puVar4 = uVar9 | 0xfd000000 | (uStack176 & 3) << 0x13; - uVar9 |= 0xf5000000; - puVar4[1] = *imgcall; - puVar4[2] = uVar9 | (uStack176 & 3) << 0x13; - puVar4[3] = 0x7000000; - puVar4[5] = 0; - puVar4[4] = 0xe6000000; - puVar4[6] = 0xf3000000; - uVar5 = 0x7ff; - if ((int)uStack180 < 0x7ff) { - uVar5 = uStack180; - } - puVar4[7] = (uVar5 & 0xfff) << 0xc | 0x7000000; - puVar4[9] = 0; - puVar4[8] = 0xe7000000; - if (uVar14 == 2) { - uVar5 = 0x3ff - (uint)*(byte *)((int)puVar3 + 10); - if (uStack180 + 1 <= uVar5) { - uVar5 = 0; - } - puVar4[10] = 0xf5000100; - puVar4[0xb] = 0x7000000; - uVar7 = (uStack180 + 1) - uVar5; - puVar4[0xd] = 0; - puVar4[0xc] = 0xe6000000; - uVar5 = (uVar5 & 0x3ff) << 2; - puVar4[0xe] = (uVar7 & 0x3ff) << 0xe | 0xf0000000 | uVar5; - puVar4[0xf] = ((uint)*(byte *)((int)puVar3 + 10) + uVar7 & 0x3ff) << 0xe | 0x7000000 | uVar5; - puVar4[0x11] = 0; - puVar4[0x10] = 0xe7000000; - puStack4 = puVar4 + 0x14; - puVar4[0x13] = uStack172; - puVar4[0x12] = 0xba000e02; - } - else { - puStack4 = puVar4 + 0xc; - puVar4[0xb] = 0; - puVar4[10] = 0xba000e02; - } - uVar14 = 0; - if (0 < (int)uStack164) { - uVar9 |= ((uint)bStack166 & 3) << 0x13; - do { - if (0 < (longlong)uVar14) { - if ((puVar3 == NULL) || (-1 < (int)(puVar3[3] << 2))) { - if (1 < (longlong)uVar12) { - uVar12 = (longlong)((int)uVar12 >> 1); - } - if (1 < (longlong)uVar11) { - uVar11 = (longlong)((int)uVar11 >> 1); - } - } - else { - uVar12 = proc_7F0CC714(puVar3,uVar14); - uVar11 = proc_7F0CC7FC(puVar3,uVar14); - } - } - puVar8 = puStack4; - number_00 = (int)uVar12; - number = (int)uVar11; - if (bVar1 == 0) { - iVar10 = number_00 + 0xf; - if (iVar10 < 0) { - iVar10 = number_00 + 0x1e; - } - uStack268 = iVar10 >> 4; - iVar10 = uStack268 * number; - uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; - } - else { - if (bVar1 == 1) { - iVar10 = number_00 + 7; - if (iVar10 < 0) { - iVar10 = number_00 + 0xe; - } - uStack268 = iVar10 >> 3; - iVar10 = uStack268 * number; - uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; - } - else { - if (bVar1 == 2) { - iVar10 = number_00 + 3; - if (iVar10 < 0) { - iVar10 = number_00 + 6; - } - uStack268 = iVar10 >> 2; - iVar10 = uStack268 * number; - uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; - } - else { - if (bVar1 == 3) { - iVar10 = number_00 + 3; - if (iVar10 < 0) { - iVar10 = number_00 + 6; - } - uStack268 = iVar10 >> 2; - iVar10 = uStack268 * number; - uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; - } - else { - iVar10 = uStack268 * number; - uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; - } - } - } - } - *puStack4 = uVar5 | uStack160 & 0x1ff; - puStack4 = puStack4 + 2; - uVar7 = is_less_than_certain_power_of_2(number); - uVar6 = is_less_than_certain_power_of_2(number_00); - uVar5 = (uint)uVar14; - uVar13 = (uVar5 & 7) << 0x18; - puVar8[1] = (uVar6 & 0xf) << 4 | uVar13 | ((uint)*(byte *)((int)imgcall + 10) & 3) << 0x12 | - (uVar7 & 0xf) << 0xe | (uVar5 & 0xf) << 10 | - ((uint)*(byte *)((int)imgcall + 9) & 3) << 8 | uVar5 & 0xf; - uVar14 = SEXT48((int)(uVar5 + 1)); - puVar8 = puStack4 + 2; - *puStack4 = (param_5 & 0xfff) << 0xc | 0xf2000000 | param_5 & 0xfff; - puStack4[1] = uVar13 | ((number_00 + -1) * 4 + param_5 & 0xfff) << 0xc | - (number + -1) * 4 + param_5 & 0xfff; - uStack160 += iVar10; - puStack4 = puVar8; - } while (uVar14 != (longlong)(int)uStack164); - } -LAB_7f077b80: - *DLtarget = puStack4; - return; -} - - - -void proc_7F077BB8(s32 param_1,s32 param_2,s32 param_3) - -{ - return; -} - - - -void proc_7F077BD0(void) - -{ - return; -} - - - -void set_BONDdata_screensize(float width,float height) - -{ - pPlayer->c_screenwidth = width; - pPlayer->c_screenheight = height; - pPlayer->c_halfwidth = width * 0.50000000; - pPlayer->c_halfheight = height * 0.50000000; - return; -} - - - -void set_ulx_uly(f32 ulx,f32 uly) - -{ - *(f32 *)&pPlayer->c_screenleft = ulx; - *(f32 *)&pPlayer->c_screentop = uly; - return; -} - - - -void sub_GAME_7F077C30(f32 arg0,f32 arg1,f32 arg2) - -{ - float in_a2_lo; - - *(f32 *)&pPlayer->c_perspnear = arg0; - *(f32 *)&pPlayer->c_perspfovy = arg1; - pPlayer->c_perspaspect = in_a2_lo; - return; -} - - - -void proc_7F077C5C(void) - -{ - float fVar1; - float fVar2; - uint uVar3; - - fVar1 = sinf((pPlayer->c_perspfovy * 3.14159274) / 360.00000000); - fVar2 = cosf((pPlayer->c_perspfovy * 3.14159274) / 360.00000000); - *(float *)&pPlayer->c_scaley = fVar1 / (fVar2 * pPlayer->c_halfheight); - *(float *)&pPlayer->c_scalex = - ((float)pPlayer->c_scaley * pPlayer->c_perspaspect * pPlayer->c_halfheight) / - pPlayer->c_halfwidth; - *(float *)&pPlayer->c_recipscalex = 1.00000000 / (float)pPlayer->c_scalex; - *(float *)&pPlayer->c_recipscaley = 1.00000000 / (float)pPlayer->c_scaley; - pPlayer->c_scalelod = pPlayer->c_scaley; - fVar1 = sinf(0.52359879); - fVar2 = cosf(0.52359879); - *(float *)&pPlayer->c_scalelod60 = fVar1 / (fVar2 * 120.00000000); - *(float *)&pPlayer->c_lodscalez = (float)pPlayer->c_scalelod / (float)pPlayer->c_scalelod60; - fVar1 = (float)pPlayer->c_lodscalez * 65536.00000000; - if (4294967296.00000000 < fVar1) { - pPlayer->c_lodscalezu32 = -1; - goto LAB_7f077e34; - } - if (false) { - fVar2 = ROUND(fVar1); - } - else { - fVar2 = FLOOR(fVar1); - } - uVar3 = (uint)fVar2; - if (false) { - if (false) { - fVar1 = ROUND(fVar1 - 2147483648.00000000); - } - else { - fVar1 = FLOOR(fVar1 - 2147483648.00000000); - } - if (false) goto LAB_7f077e10; - uVar3 = (int)fVar1 | 0x80000000; - } - else { - if ((int)uVar3 < 0) { -LAB_7f077e10: - uVar3 = 0xffffffff; - } - } - pPlayer->c_lodscalezu32 = uVar3; -LAB_7f077e34: - fVar2 = pPlayer->c_halfheight * (float)pPlayer->c_scaley; - fVar1 = sqrtf(fVar2 * fVar2 + 1.00000000); - (pPlayer->c_cameratopnorm).x = 0.00000000; - (pPlayer->c_cameratopnorm).y = 1.00000000 / fVar1; - (pPlayer->c_cameratopnorm).z = fVar2 * (1.00000000 / fVar1); - fVar2 = -pPlayer->c_halfwidth * (float)pPlayer->c_scalex; - fVar1 = sqrtf(fVar2 * fVar2 + 1.00000000); - (pPlayer->c_cameraleftnorm).x = -(1.00000000 / fVar1); - (pPlayer->c_cameraleftnorm).y = 0.00000000; - (pPlayer->c_cameraleftnorm).z = -fVar2 * (1.00000000 / fVar1); - return; -} - - - -void proc_7F077EEC(float *param_1,float *param_2,float param_3) - -{ - float in_a2_lo; - float fVar1; - float fVar2; - float fVar3; - - fVar2 = (pPlayer->c_halfheight - (param_1[1] - pPlayer->c_screentop)) * (float)pPlayer->c_scaley; - fVar3 = ((*param_1 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * (float)pPlayer->c_scalex; - fVar1 = sqrtf(fVar3 * fVar3 + fVar2 * fVar2 + 1.00000000); - fVar1 = in_a2_lo / fVar1; - *param_2 = fVar3 * fVar1; - param_2[1] = fVar2 * fVar1; - param_2[2] = fVar1 * -1.00000000; - return; -} - - - -void proc_7F077FB4(float *param_1,float param_2,float *param_3) - -{ - float *in_a2_lo; - - in_a2_lo[1] = param_1[1] * (float)param_3 * (float)pPlayer->c_scaley; - *in_a2_lo = *param_1 * (float)param_3 * (float)pPlayer->c_scalex; - return; -} - - - -void proc_7F077FF4(float *param_1,float *param_2) - -{ - float fVar1; - - fVar1 = param_1[2]; - param_2[1] = param_1[1] * (1.00000000 / fVar1) * (float)pPlayer->c_recipscaley + - pPlayer->c_screentop + pPlayer->c_halfheight; - *param_2 = (pPlayer->c_screenleft + pPlayer->c_halfwidth) - - *param_1 * (1.00000000 / fVar1) * (float)pPlayer->c_recipscalex; - return; -} - - - -void proc_7F078060(float *param_1,float *param_2) - -{ - float fVar1; - - fVar1 = flt_80054FAC; - if (param_1[2] != 0.00000000) { - fVar1 = 1.00000000 / param_1[2]; - } - param_2[1] = param_1[1] * fVar1 * (float)pPlayer->c_recipscaley + - pPlayer->c_screentop + pPlayer->c_halfheight; - *param_2 = (pPlayer->c_screenleft + pPlayer->c_halfwidth) - - *param_1 * fVar1 * (float)pPlayer->c_recipscalex; - return; -} - - - -void proc_7F0780F0(float *param_1,float param_2,float *param_3) - -{ - float *in_a2_lo; - - in_a2_lo[1] = param_1[1] * (1.00000000 / (float)param_3) * (float)pPlayer->c_recipscaley; - *in_a2_lo = *param_1 * (1.00000000 / (float)param_3) * (float)pPlayer->c_recipscalex; - return; -} - - - -void proc_7F078140(float *param_1,float *param_2,float param_3,float param_4,float param_5) - -{ - float in_a3_lo; - float fVar1; - float fVar2; - float __x; - float in_stack_00000010; - - __x = (in_a3_lo * flt_80054FB0) / 360.00000000; - fVar1 = sinf(__x); - __x = cosf(__x); - fVar2 = pPlayer->c_halfheight; - fVar1 = fVar1 / (__x * fVar2); - __x = (fVar2 - (param_1[1] - pPlayer->c_screentop)) * fVar1; - fVar2 = ((*param_1 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * - ((fVar1 * in_stack_00000010 * fVar2) / pPlayer->c_halfwidth); - fVar1 = sqrtf(fVar2 * fVar2 + __x * __x + 1.00000000); - param_5 = param_5 / fVar1; - *param_2 = fVar2 * param_5; - param_2[1] = __x * param_5; - param_2[2] = param_5 * -1.00000000; - return; -} - - - -void proc_7F078258(float *param_1,float *param_2,float param_3,float param_4) - -{ - float in_a2_lo; - float in_a3_lo; - float fVar1; - float fVar2; - float fVar3; - float __x; - - __x = (in_a2_lo * flt_80054FB4) / 360.00000000; - fVar1 = cosf(__x); - __x = sinf(__x); - fVar2 = pPlayer->c_halfheight; - fVar3 = pPlayer->c_halfwidth; - fVar1 = (fVar1 * fVar2) / (param_1[2] * __x); - param_2[1] = param_1[1] * fVar1 + pPlayer->c_screentop + fVar2; - *param_2 = (pPlayer->c_screenleft + pPlayer->c_halfwidth) - - *param_1 * ((fVar3 * fVar1) / (in_a3_lo * fVar2)); - return; -} - - - -void proc_7F078324(int param_1) - -{ - pPlayer->field_10C4 = param_1; - return; -} - - - -int proc_7F078334(void) - -{ - return pPlayer->field_10C4; -} - - - -void proc_7F078344(int param_1) - -{ - pPlayer->field_10C8 = param_1; - return; -} - - - -int proc_7F078354(void) - -{ - return pPlayer->field_10C8; -} - - - -void proc_7F078364(int param_1) - -{ - pPlayer->field_10D8 = param_1; - return; -} - - - -int proc_7F078374(void) - -{ - return pPlayer->field_10D8; -} - - - -void proc_7F078384(int param_1) - -{ - pPlayer->field_10E0 = param_1; - return; -} - - - -int proc_7F078394(void) - -{ - return pPlayer->field_10E0; -} - - - -void proc_7F0783A4(int param_1) - -{ - pPlayer->field_10E8 = pPlayer->field_10CC; - pPlayer->field_10CC = param_1; - return; -} - - - -int proc_7F0783C4(void) - -{ - return pPlayer->field_10CC; -} - - - -void proc_7F0783D4(int param_1) - -{ - pPlayer->field_10DC = param_1; - return; -} - - - -int proc_7F0783E4(void) - -{ - return pPlayer->field_10DC; -} - - - -int proc_7F0783F4(void) - -{ - return pPlayer->field_10E8; -} - - - -void proc_7F078404(int param_1) - -{ - pPlayer->field_10D0 = param_1; - return; -} - - - -int proc_7F078414(void) - -{ - return pPlayer->field_10D0; -} - - - -void proc_7F078424(int param_1) - -{ - pPlayer->field_10EC = pPlayer->field_10D4; - pPlayer->field_10D4 = param_1; - return; -} - - - -int proc_7F078444(void) - -{ - return pPlayer->field_10D4; -} - - - -int proc_7F078454(void) - -{ - return pPlayer->field_10EC; -} - - - -void proc_7F078464(int param_1) - -{ - pPlayer->field_10E4 = param_1; - return; -} - - - -int proc_7F078474(void) - -{ - return pPlayer->field_10E4; -} - - - -f32 getPlayer_c_lodscalez(void) - -{ - return pPlayer->c_lodscalez; -} - - - -int getPlayer_c_lodscalezu32(void) - -{ - return pPlayer->c_lodscalezu32; -} - - - -f32 getPlayer_c_screenwidth(void) - -{ - return (f32)pPlayer->c_screenwidth; -} - - - -f32 getPlayer_c_screenheight(void) - -{ - return (f32)pPlayer->c_screenheight; -} - - - -f32 getPlayer_c_screenleft(void) - -{ - return (f32)pPlayer->c_screenleft; -} - - - -f32 getPlayer_c_screentop(void) - -{ - return (f32)pPlayer->c_screentop; -} - - - -f32 getPlayer_c_perspfovy(void) - -{ - return (f32)pPlayer->c_perspfovy; -} - - - -f32 getPlayer_c_perspaspect(void) - -{ - return (f32)pPlayer->c_perspaspect; -} - - - -void proc_7F078504(undefined4 *param_1) - -{ - *(float *)param_1 = (pPlayer->c_cameratopnorm).x; - *(float *)(param_1 + 1) = (pPlayer->c_cameratopnorm).y; - *(float *)(param_1 + 2) = (pPlayer->c_cameratopnorm).z; - return; -} - - - -void proc_7F078534(undefined4 *param_1) - -{ - *(float *)param_1 = (pPlayer->c_cameratopnorm).x; - *(float *)(param_1 + 1) = -(pPlayer->c_cameratopnorm).y; - *(float *)(param_1 + 2) = (pPlayer->c_cameratopnorm).z; - return; -} - - - -void proc_7F078568(undefined4 *param_1) - -{ - *(float *)param_1 = (pPlayer->c_cameraleftnorm).x; - *(float *)(param_1 + 1) = (pPlayer->c_cameraleftnorm).y; - *(float *)(param_1 + 2) = (pPlayer->c_cameraleftnorm).z; - return; -} - - - -void proc_7F078598(float *param_1) - -{ - *param_1 = -(pPlayer->c_cameraleftnorm).x; - param_1[1] = (pPlayer->c_cameraleftnorm).y; - param_1[2] = (pPlayer->c_cameraleftnorm).z; - return; -} - - - -f32 getPlayer_c_perspnear(void) - -{ - return (f32)pPlayer->c_perspnear; -} - - - -void proc_7F0785DC(void) - -{ - int iVar1; - int iVar2; - int iVar3; - float fVar4; - float fVar5; - float fVar6; - - fVar5 = pPlayer->c_halfheight * (float)pPlayer->c_scaley; - fVar4 = sqrtf(fVar5 * fVar5 + 1.00000000); - fVar5 = fVar5 * (1.00000000 / fVar4); - fVar4 = -(1.00000000 / fVar4); - fVar6 = -fVar4; - DAT_80079940 = *(float *)(pPlayer->field_10D4 + 0x20) * fVar5 + - fVar6 * *(float *)(pPlayer->field_10D4 + 0x10); - DAT_80079944 = *(float *)(pPlayer->field_10D4 + 0x24) * fVar5 + - fVar6 * *(float *)(pPlayer->field_10D4 + 0x14); - DAT_80079948 = *(float *)(pPlayer->field_10D4 + 0x28) * fVar5 + - fVar6 * *(float *)(pPlayer->field_10D4 + 0x18); - iVar1 = pPlayer->field_10D4; - DAT_8007994c = *(float *)(iVar1 + 0x38) * DAT_80079948 + - DAT_80079940 * *(float *)(iVar1 + 0x30) + DAT_80079944 * *(float *)(iVar1 + 0x34); - DAT_80079950 = *(float *)(pPlayer->field_10D4 + 0x20) * fVar5 + - fVar4 * *(float *)(pPlayer->field_10D4 + 0x10); - DAT_80079954 = *(float *)(pPlayer->field_10D4 + 0x24) * fVar5 + - fVar4 * *(float *)(pPlayer->field_10D4 + 0x14); - DAT_80079958 = *(float *)(pPlayer->field_10D4 + 0x28) * fVar5 + - fVar4 * *(float *)(pPlayer->field_10D4 + 0x18); - iVar1 = pPlayer->field_10D4; - DAT_8007995c = *(float *)(iVar1 + 0x38) * DAT_80079958 + - DAT_80079950 * *(float *)(iVar1 + 0x30) + DAT_80079954 * *(float *)(iVar1 + 0x34); - fVar5 = -pPlayer->c_halfwidth * (float)pPlayer->c_scalex; - fVar4 = sqrtf(fVar5 * fVar5 + 1.00000000); - fVar5 = fVar5 * (1.00000000 / fVar4); - fVar4 = -(1.00000000 / fVar4); - fVar6 = -fVar4; - DAT_80079960 = fVar4 * *(float *)pPlayer->field_10D4 - ((float *)pPlayer->field_10D4)[8] * fVar5; - DAT_80079964 = fVar4 * *(float *)(pPlayer->field_10D4 + 4) - - *(float *)(pPlayer->field_10D4 + 0x24) * fVar5; - DAT_80079968 = fVar4 * *(float *)(pPlayer->field_10D4 + 8) - - *(float *)(pPlayer->field_10D4 + 0x28) * fVar5; - iVar1 = pPlayer->field_10D4; - DAT_80079970 = fVar6 * *(float *)pPlayer->field_10D4 - ((float *)pPlayer->field_10D4)[8] * fVar5; - flt_8007A034 = fVar6 * *(float *)(pPlayer->field_10D4 + 4) - - *(float *)(pPlayer->field_10D4 + 0x24) * fVar5; - DAT_80079978 = fVar6 * *(float *)(pPlayer->field_10D4 + 8) - - *(float *)(pPlayer->field_10D4 + 0x28) * fVar5; - iVar2 = pPlayer->field_10D4; - iVar3 = pPlayer->field_10D4; - flt_8007A02C = *(float *)(iVar1 + 0x38) * DAT_80079968 + - DAT_80079960 * *(float *)(iVar1 + 0x30) + DAT_80079964 * *(float *)(iVar1 + 0x34); - DAT_8007997c = *(float *)(iVar2 + 0x38) * DAT_80079978 + - DAT_80079970 * *(float *)(iVar2 + 0x30) + flt_8007A034 * *(float *)(iVar2 + 0x34); - DAT_80079980 = *(float *)(iVar3 + 0x38) * *(float *)(iVar3 + 0x28) + - *(float *)(iVar3 + 0x20) * *(float *)(iVar3 + 0x30) + - *(float *)(iVar3 + 0x24) * *(float *)(iVar3 + 0x34); - return; -} - - - -void proc_7F078950(undefined4 *param_1,undefined4 *param_2) - -{ - *param_1 = DAT_80079940; - param_1[1] = DAT_80079944; - param_1[2] = DAT_80079948; - *param_2 = DAT_8007994c; - return; -} - - - -void proc_7F078980(undefined4 *param_1,undefined4 *param_2) - -{ - *param_1 = DAT_80079950; - param_1[1] = DAT_80079954; - param_1[2] = DAT_80079958; - *param_2 = DAT_8007995c; - return; -} - - - -void proc_7F0789B0(undefined4 *param_1,undefined4 *param_2) - -{ - *param_1 = DAT_80079960; - param_1[1] = DAT_80079964; - param_1[2] = DAT_80079968; - *param_2 = flt_8007A02C; - return; -} - - - -void proc_7F0789E0(undefined4 *param_1,undefined4 *param_2) - -{ - *param_1 = DAT_80079970; - param_1[1] = flt_8007A034; - param_1[2] = DAT_80079978; - *param_2 = DAT_8007997c; - return; -} - - - -void proc_7F078A10(undefined4 *param_1,undefined4 *param_2) - -{ - *param_1 = *(undefined4 *)(pPlayer->field_10D4 + 0x20); - param_1[1] = *(undefined4 *)(pPlayer->field_10D4 + 0x24); - param_1[2] = *(undefined4 *)(pPlayer->field_10D4 + 0x28); - *param_2 = DAT_80079980; - return; -} - - - -undefined8 proc_7F078A58(float *param_1,float param_2) - -{ - int iVar1; - float in_a1_lo; - float fVar2; - float fVar3; - float fVar4; - - fVar3 = *param_1; - fVar4 = param_1[1]; - iVar1 = pPlayer->field_10D4; - fVar2 = param_1[2]; - if (DAT_80079980 + in_a1_lo < - fVar2 * *(float *)(iVar1 + 0x28) + - *(float *)(iVar1 + 0x20) * fVar3 + *(float *)(iVar1 + 0x24) * fVar4) { - return 0; - } - if (flt_8007A02C + in_a1_lo < fVar2 * DAT_80079968 + DAT_80079960 * fVar3 + DAT_80079964 * fVar4) - { - return 0; - } - if (DAT_8007997c + in_a1_lo < fVar2 * DAT_80079978 + DAT_80079970 * fVar3 + flt_8007A034 * fVar4) - { - return 0; - } - if (fVar2 * DAT_80079948 + DAT_80079940 * fVar3 + DAT_80079944 * fVar4 <= DAT_8007994c + in_a1_lo) - { - if (fVar2 * DAT_80079958 + DAT_80079950 * fVar3 + DAT_80079954 * fVar4 <= - DAT_8007995c + in_a1_lo) { - return 1; - } - return 0; - } - return 0; -} - - - -undefined8 proc_7F078BF4(float *param_1,float param_2,float *param_3) - -{ - int iVar1; - undefined8 uVar2; - float *in_a2_lo; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - - iVar1 = pPlayer->field_10D4; - if (DAT_80079980 + (float)param_3 < - param_1[2] * *(float *)(iVar1 + 0x28) + - *(float *)(iVar1 + 0x20) * *param_1 + *(float *)(iVar1 + 0x24) * param_1[1]) { - uVar2 = 0; - } - else { - fVar4 = ((*in_a2_lo - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * (float)pPlayer->c_scalex; - fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); - fVar4 = fVar4 * (1.00000000 / fVar3); - fVar6 = -(1.00000000 / fVar3); - fVar5 = fVar6 * *(float *)pPlayer->field_10D4 - ((float *)pPlayer->field_10D4)[8] * fVar4; - fVar3 = fVar6 * *(float *)(pPlayer->field_10D4 + 4) - - *(float *)(pPlayer->field_10D4 + 0x24) * fVar4; - fVar4 = fVar6 * *(float *)(pPlayer->field_10D4 + 8) - - *(float *)(pPlayer->field_10D4 + 0x28) * fVar4; - iVar1 = pPlayer->field_10D4; - if (*(float *)(iVar1 + 0x38) * fVar4 + - fVar5 * *(float *)(iVar1 + 0x30) + fVar3 * *(float *)(iVar1 + 0x34) + (float)param_3 < - param_1[2] * fVar4 + fVar5 * *param_1 + fVar3 * param_1[1]) { - uVar2 = 0; - } - else { - fVar4 = -((in_a2_lo[2] - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * - (float)pPlayer->c_scalex; - fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); - fVar4 = fVar4 * (1.00000000 / fVar3); - fVar3 = --(1.00000000 / fVar3); - fVar5 = fVar3 * *(float *)pPlayer->field_10D4 - ((float *)pPlayer->field_10D4)[8] * fVar4; - fVar6 = fVar3 * *(float *)(pPlayer->field_10D4 + 4) - - *(float *)(pPlayer->field_10D4 + 0x24) * fVar4; - fVar3 = fVar3 * *(float *)(pPlayer->field_10D4 + 8) - - *(float *)(pPlayer->field_10D4 + 0x28) * fVar4; - iVar1 = pPlayer->field_10D4; - if (*(float *)(iVar1 + 0x38) * fVar3 + - fVar5 * *(float *)(iVar1 + 0x30) + fVar6 * *(float *)(iVar1 + 0x34) + (float)param_3 < - param_1[2] * fVar3 + fVar5 * *param_1 + fVar6 * param_1[1]) { - uVar2 = 0; - } - else { - fVar4 = (pPlayer->c_halfheight - (in_a2_lo[1] - pPlayer->c_screentop)) * - (float)pPlayer->c_scaley; - fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); - fVar4 = fVar4 * (1.00000000 / fVar3); - fVar3 = --(1.00000000 / fVar3); - fVar5 = *(float *)(pPlayer->field_10D4 + 0x20) * fVar4 + - fVar3 * *(float *)(pPlayer->field_10D4 + 0x10); - fVar6 = *(float *)(pPlayer->field_10D4 + 0x24) * fVar4 + - fVar3 * *(float *)(pPlayer->field_10D4 + 0x14); - fVar3 = *(float *)(pPlayer->field_10D4 + 0x28) * fVar4 + - fVar3 * *(float *)(pPlayer->field_10D4 + 0x18); - iVar1 = pPlayer->field_10D4; - if (*(float *)(iVar1 + 0x38) * fVar3 + - fVar5 * *(float *)(iVar1 + 0x30) + fVar6 * *(float *)(iVar1 + 0x34) + (float)param_3 < - param_1[2] * fVar3 + fVar5 * *param_1 + fVar6 * param_1[1]) { - uVar2 = 0; - } - else { - fVar4 = -(pPlayer->c_halfheight - (in_a2_lo[3] - pPlayer->c_screentop)) * - (float)pPlayer->c_scaley; - fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); - fVar4 = fVar4 * (1.00000000 / fVar3); - fVar6 = -(1.00000000 / fVar3); - fVar3 = *(float *)(pPlayer->field_10D4 + 0x20) * fVar4 + - fVar6 * *(float *)(pPlayer->field_10D4 + 0x10); - fVar5 = *(float *)(pPlayer->field_10D4 + 0x24) * fVar4 + - fVar6 * *(float *)(pPlayer->field_10D4 + 0x14); - fVar4 = *(float *)(pPlayer->field_10D4 + 0x28) * fVar4 + - fVar6 * *(float *)(pPlayer->field_10D4 + 0x18); - iVar1 = pPlayer->field_10D4; - uVar2 = 1; - if (*(float *)(iVar1 + 0x38) * fVar4 + - fVar3 * *(float *)(iVar1 + 0x30) + fVar5 * *(float *)(iVar1 + 0x34) + (float)param_3 < - param_1[2] * fVar4 + fVar3 * *param_1 + fVar5 * param_1[1]) { - uVar2 = 0; - } - } - } - } - } - return uVar2; -} - - - -uint proc_7F0790F0(void) - -{ - int iVar1; - bool bVar2; - u32 uVar4; - ulonglong uVar3; - ulonglong uVar5; - int iVar6; - int iVar7; - float fVar8; - float fVar9; - uint uStack20; - - uVar4 = get_cur_playernum(); - uVar3 = get_num_players(); - bVar2 = true; - iVar7 = 0; - if (0 < (int)DAT_80079c68) { - do { - iVar7 += 1; - bVar2 = false; - uVar5 = 0; - pPlayer->field_29E0 = pPlayer->field_29E0 + 1; - uStack20 = pPlayer->field_29E0 % DAT_80079c68; - if (DAT_80079c68 == 0) { - trap(0x1c00); - } - if ((DAT_80079c68 == 0xffffffff) && (pPlayer->field_29E0 == -0x80000000)) { - trap(0x1800); - } - if (0 < (longlong)uVar3) { - do { - iVar6 = (int)uVar5; - if (uVar5 == (longlong)(int)uVar4) { - uVar5 = SEXT48(iVar6 + 1); - } - else { - iVar1 = (&ptr_BONDdata_p1)[iVar6]->position_data_pointer; - if (iVar1 == 0) { - uVar5 = SEXT48(iVar6 + 1); - } - else { - fVar8 = *(float *)(iVar1 + 8) - *(float *)(&DAT_80079c28)[uStack20]; - fVar9 = *(float *)(iVar1 + 0x10) - ((float *)(&DAT_80079c28)[uStack20])[2]; - fVar8 = sqrtf(fVar8 * fVar8 + fVar9 * fVar9); - if (fVar8 < 1000.00000000) { - bVar2 = true; - uVar5 = SEXT48(iVar6 + 1); - } - else { - uVar5 = SEXT48(iVar6 + 1); - } - } - } - } while (uVar5 != uVar3); - } - } while ((bVar2) && (iVar7 < (int)DAT_80079c68)); - } - if ((bVar2) && (iVar7 < (int)DAT_80079c68)) { - do { - iVar7 += 1; - bVar2 = false; - uVar5 = 0; - pPlayer->field_29E0 = pPlayer->field_29E0 + 1; - uStack20 = pPlayer->field_29E0 % DAT_80079c68; - if (DAT_80079c68 == 0) { - trap(0x1c00); - } - if ((DAT_80079c68 == 0xffffffff) && (pPlayer->field_29E0 == -0x80000000)) { - trap(0x1800); - } - if (0 < (longlong)uVar3) { - do { - iVar6 = (int)uVar5; - if (uVar5 == (longlong)(int)uVar4) { - uVar5 = SEXT48(iVar6 + 1); - } - else { - iVar1 = (&ptr_BONDdata_p1)[iVar6]->position_data_pointer; - if (iVar1 == 0) { - uVar5 = SEXT48(iVar6 + 1); - } - else { - fVar8 = *(float *)(iVar1 + 8) - *(float *)(&DAT_80079c28)[uStack20]; - fVar9 = *(float *)(iVar1 + 0x10) - ((float *)(&DAT_80079c28)[uStack20])[2]; - fVar8 = sqrtf(fVar8 * fVar8 + fVar9 * fVar9); - if (fVar8 < 100.00000000) { - bVar2 = true; - uVar5 = SEXT48(iVar6 + 1); - } - else { - uVar5 = SEXT48(iVar6 + 1); - } - } - } - } while (uVar5 != uVar3); - } - } while ((bVar2) && (iVar7 < (int)DAT_80079c68)); - } - if (bVar2) { - uVar4 = get_random_value(); - uStack20 = uVar4 % DAT_80079c68; - if (DAT_80079c68 == 0) { - trap(0x1c00); - } - } - return uStack20; -} - - - -void init_player_BONDdata(void) - -{ - ulonglong uVar1; - u32 playernum; - int iVar2; - - uVar1 = get_num_players(); - if (1 < (longlong)uVar1) { - playernum = get_cur_playernum(); - iVar2 = get_player_control_style(playernum); - pPlayer->controlstyle = iVar2; - playernum = get_cur_playernum(); - iVar2 = get_player_control_style(playernum); - cur_player_set_control_type(iVar2); - } - pPlayer->current_model_xpos = 0.00000000; - pPlayer->current_model_ypos = 0.00000000; - pPlayer->current_model_zpos = 0.00000000; - pPlayer->previous_model_xpos = 0.00000000; - pPlayer->previous_model_ypos = 0.00000000; - pPlayer->previous_model_zpos = 0.00000000; - pPlayer->current_room_xpos = 0.00000000; - pPlayer->current_room_ypos = 0.00000000; - pPlayer->current_room_zpos = 0.00000000; - pPlayer->unknown = 0; - pPlayer->xpos = 0.00000000; - pPlayer->ypos = 0.00000000; - pPlayer->zpos = 0.00000000; - pPlayer->xpos2 = 0.00000000; - pPlayer->ypos2 = 0.00000000; - pPlayer->zpos2 = 1.00000000; - pPlayer->xoffset = 0.00000000; - pPlayer->yoffset = 1.00000000; - pPlayer->zoffset = 0.00000000; - pPlayer->xpos3 = 0.00000000; - pPlayer->ypos3 = 0.00000000; - pPlayer->zpos3 = 0.00000000; - pPlayer->room_pointer = 0; - pPlayer->field_3C4 = 0.00000000; - pPlayer->field_3C8 = 0.00000000; - pPlayer->field_3CC = 1.00000000; - pPlayer->field_84 = 0.00000000; - pPlayer->field_88 = 0.00000000; - pPlayer->field_8C = 0; - pPlayer->field_90 = 0.00000000; - pPlayer->field_94 = 0; - pPlayer->field_98 = 0.00000000; - pPlayer->field_1274 = 0.00000000; - pPlayer->field_1278 = 0.00000000; - pPlayer->field_127C = 0.00000000; - pPlayer->crouchposition = 2; - pPlayer->field_29FC = 2; - pPlayer->ducking_height_offset = 0.00000000; - pPlayer->field_A4 = 0.00000000; - pPlayer->field_AC = 1; - pPlayer->field_D0 = 0; - pPlayer->bonddead = 0; - pPlayer->bondhealth = 1.00000000; - pPlayer->bondarmour = 0.00000000; - pPlayer->oldhealth = 1.00000000; - pPlayer->oldarmour = 0.00000000; - pPlayer->apparenthealth = 1.00000000; - pPlayer->apparentarmour = 0.00000000; - pPlayer->damageshowtime = -1; - pPlayer->healthshowtime = -1; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - pPlayer->pause_animation_state = 0; - pPlayer->paused_flag = 1; - pPlayer->open_close_solo_watch_menu = 0; - pPlayer->field_1A0 = 0; - pPlayer->bondfadefracnew = 0.00000000; - pPlayer->speedtheta = 0.00000000; - pPlayer->vv_costheta = 1.00000000; - pPlayer->vv_sintheta = 0.00000000; - pPlayer->vv_verta = -4.00000000; - *(float *)&pPlayer->vv_verta360 = pPlayer->vv_verta; - if ((float)pPlayer->vv_verta360 < 0.00000000) { - *(float *)&pPlayer->vv_verta360 = (float)pPlayer->vv_verta360 + 360.00000000; - pPlayer->speedverta = 0.00000000; - } - else { - pPlayer->speedverta = 0.00000000; - } - pPlayer->vv_cosverta = 1.00000000; - pPlayer->vv_sinverta = 0.00000000; - pPlayer->speedsideways = 0.00000000; - pPlayer->speedstrafe = 0.00000000; - pPlayer->speedforwards = 0.00000000; - pPlayer->field_2A4C = 0.00000000; - pPlayer->speedboost = 1.00000000; - pPlayer->speedmaxtime60 = 0; - pPlayer->boost_factor_x = 0.00000000; - pPlayer->boost_factor_y = 0.00000000; - pPlayer->boost_factor_z = 0.00000000; - pPlayer->field_104 = 0; - pPlayer->field_108 = 0; - pPlayer->field_10C = 0; - pPlayer->movecentrerelease = 0; - pPlayer->lookaheadcentreenabled = 1; - pPlayer->automovecentreenabled = 1; - pPlayer->fastmovecentreenabled = 0; - pPlayer->automovecentre = 1; - pPlayer->insightaimmode = 0; - pPlayer->autoyaimenabled = 1; - pPlayer->autoaimy = 0.00000000; - pPlayer->autoyaimtime = 0; - pPlayer->autoyaimtime60 = -1; - pPlayer->autoxaimenabled = 1; - pPlayer->autoaimx = 0.00000000; - pPlayer->autoxaimtime = 0; - pPlayer->autoxaimtime60 = -1; - *(undefined4 *)&pPlayer->field_3D0 = 0xff; - *(undefined4 *)&pPlayer->field_3D4 = 0xff; - *(undefined4 *)&pPlayer->field_3D8 = 0xff; - pPlayer->tint_alpha = 0.00000000; - pPlayer->field_3E0 = -1.00000000; - pPlayer->timer_for_fade = -1.00000000; - pPlayer->field_3E8 = 0xff; - pPlayer->field_3EC = 0xff; - pPlayer->field_3F0 = 0xff; - pPlayer->field_3F4 = 0xff; - pPlayer->field_3F8 = 0xff; - pPlayer->field_3FC = 0xff; - pPlayer->field_400 = 0.00000000; - pPlayer->field_404 = 0.00000000; - pPlayer->viewport_alpha = -1.00000000; - pPlayer->bondfadetime60 = -1.00000000; - pPlayer->bondfadetimemax = 0.00000000; - pPlayer->bondfadefracold = 0.00000000; - pPlayer->field_42C = 2; - pPlayer->controlstyle = 0; - pPlayer->pause_starting_angle = 0.00000000; - pPlayer->field_208 = 0.00000000; - pPlayer->pause_target_angle = 0.00000000; - pPlayer->field_210 = 0.00000000; - pPlayer->field_214 = 0.00000000; - pPlayer->field_218 = 0; - pPlayer->step_in_view_watch_animation = 0; - pPlayer->pause_animation_counter = 0.00000000; - pPlayer->pausing_flag = 0; - pPlayer->field_3B4 = 0; - pPlayer->field_3B6 = 0; - pPlayer->field_29C0 = 15.00000000; - *(undefined2 *)&pPlayer->field_2A04 = 0xffff; - pPlayer->field_2A08 = 0.00000000; - pPlayer->field_2A0C = 0.00000000; - pPlayer->field_2A6C = 0; - pPlayer->field_2A70 = 0; - return; -} - - - -void proc_7F0798B8(void) - -{ - int iVar2; - ulonglong uVar1; - - *(float *)&pPlayer->field_29BC = - pplayersperm->player_perspective_height * 185.00000000 * 1.00000000 - 10.00000000; - pPlayer->field_29F8 = 0; - iVar2 = getMissiontime(); - pPlayer->field_29F4 = iVar2; - pPlayer->healthdisplaytime = 0; - add_item_to_inventory(ITEM_FIST); - uVar1 = get_num_players(); - if (1 < (longlong)uVar1) { - draw_item_in_hand_has_more_ammo(1,(ITEM_IDS)flt_8007A0A4); - draw_item_in_hand_has_more_ammo(0,(ITEM_IDS)PTR_800799e0); - if (pPlayer->ptr_char_objectinstance == 0) { - solo_char_load(); - } - } - return; -} - - - -void proc_7F079988(int param_1) - -{ - *(float *)&pPlayer->field_1274 = (float)param_1 * 75.00000000; - return; -} - - - -void change_crouch_position(int position) - -{ - pPlayer->crouchposition = pPlayer->crouchposition + position; - if (pPlayer->crouchposition < 0) { - pPlayer->crouchposition = 0; - return; - } - if (2 < pPlayer->crouchposition) { - pPlayer->crouchposition = 2; - } - return; -} - - - -int proc_7F0799F0(void) - -{ - if (pPlayer->crouchposition < pPlayer->field_29FC) { - return pPlayer->crouchposition; - } - return pPlayer->field_29FC; -} - - - -int proc_7F079A1C(int param_1) - -{ - int iVar1; - int iVar2; - - iVar1 = (&ptr_BONDdata_p1)[param_1]->crouchposition; - iVar2 = (&ptr_BONDdata_p1)[param_1]->field_29FC; - if (iVar1 < iVar2) { - return iVar1; - } - return iVar2; -} - - - -void proc_7F079A50(int param_1) - -{ - pPlayer->unknown = param_1; - return; -} - - - -void proc_7F079A60(float *param_1,float *param_2,float *param_3,int param_4,float *param_5) - -{ - longlong lVar1; - f32 fVar2; - float in_f12; - float extraout_f12; - float in_f14; - float extraout_f14; - int iStack8; - int iStack4; - - if ((((((*param_1 != (float)pPlayer->xpos) || (param_1[1] != (float)pPlayer->ypos)) || - (param_1[2] != (float)pPlayer->zpos)) || - ((*param_2 != (float)pPlayer->xpos2 || (param_2[1] != (float)pPlayer->ypos2)))) || - ((param_2[2] != (float)pPlayer->zpos2 || - ((*param_3 != (float)pPlayer->xoffset || (param_3[1] != (float)pPlayer->yoffset)))))) || - ((param_3[2] != (float)pPlayer->zoffset || (pPlayer->room_pointer == 0)))) { - lVar1 = (longlong)(int)param_5; - iStack4 = param_4; - proc_7F0B0BE4(&iStack4,in_f12,in_f14,*param_5,param_5[2]); - if (lVar1 == 0) { - lVar1 = (longlong)(int)pPlayer; - if (pPlayer->room_pointer == 0) { - pPlayer->room_pointer = iStack4; - } - else { - iStack8 = pPlayer->room_pointer; - proc_7F0B0BE4(&iStack8,extraout_f12,extraout_f14,(float)pPlayer->xpos,(float)pPlayer->zpos); - if (lVar1 == 0) { - pPlayer->room_pointer = iStack4; - } - else { - pPlayer->room_pointer = iStack8; - } - } - } - else { - proc_7F0B0518(iStack4,extraout_f12,extraout_f14); - pPlayer->room_pointer = iStack4; - } - *(float *)&pPlayer->xpos = *param_1; - *(float *)&pPlayer->ypos = param_1[1]; - *(float *)&pPlayer->zpos = param_1[2]; - *(float *)&pPlayer->xpos2 = *param_2; - *(float *)&pPlayer->ypos2 = param_2[1]; - *(float *)&pPlayer->zpos2 = param_2[2]; - *(float *)&pPlayer->xoffset = *param_3; - *(float *)&pPlayer->yoffset = param_3[1]; - *(float *)&pPlayer->zoffset = param_3[2]; - pPlayer->xpos3 = pPlayer->xpos; - pPlayer->zpos3 = pPlayer->zpos; - fVar2 = (f32)proc_7F0B2970(); - pPlayer->ypos3 = fVar2; - } - return; -} - - - -void solo_char_load(void) - -{ - PitemZ_header *pPVar1; - ulonglong uVar2; - u8 selectedbond; - u32 player; - int iVar4; - uint uVar5; - longlong lVar3; - int iVar6; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - object_header *header; - undefined4 extraout_a3_lo; - dword *pdVar7; - dword *pdVar8; - dword *pdVar9; - dword *pdVar10; - float extraout_f12; - f32 scale; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float fVar11; - float extraout_f12_03; - uint uStack224; - HEADS head; - BODIES body; - undefined *puStack208; - dword adStack196 [34]; - undefined4 *puStack60; - int iStack56; - int iStack52; - uint uStack48; - int iStack44; - int iStack40; - object_header *poStack36; - object_header *poStack32; - object_header *poStack28; - int aiStack24 [4]; - undefined2 *puStack8; - float fStack4; - - fStack4 = get_curplay_horizontal_rotation_in_degrees(); - iVar4 = *(int *)(pPlayer->position_data_pointer + 4); - if (iVar4 == 0) { - iStack40 = proc_7F05CF30(0); - iStack44 = proc_7F05CF30(1); - uStack48 = 0; - iStack52 = proc_7F05CF48(0); - iStack56 = proc_7F05CF48(1); - pdVar9 = dummy_08_pp7_obj; - pdVar7 = adStack196; - do { - pdVar10 = pdVar9 + 3; - pdVar8 = pdVar7 + 3; - *pdVar7 = *pdVar9; - pdVar7[1] = pdVar9[1]; - pdVar7[2] = pdVar9[2]; - pdVar9 = pdVar10; - pdVar7 = pdVar8; - } while (pdVar10 != &dword_80036630); - *pdVar8 = dword_80036630; - puStack208 = (undefined *)return_ammo_in_hand(0); - body = BODY_Formal_Wear; - head = HEAD_Male_Pierce_Bond_2; - uStack224 = 0; - proc_7F07DE64((int)pPlayer); - uVar2 = get_num_players(); - if (uVar2 == 1) { - selectedbond = getSelectedFolderBond(); - if (true) { - switch(pPlayer->cuff_value) { - case 1: - body = BODY_Tuxedo; - break; - case 2: - body = BODY_Jungle_Fatigues; - break; - case 3: - body = BODY_Special_Operations_Uniform; - break; - case 4: - body = BODY_Parka; - break; - case 5: - body = BODY_Tuxedo; - break; - case 6: - body = BODY_Tuxedo; - break; - case 7: - body = BODY_Tuxedo; - break; - case 8: - if (selectedbond == '\0') { - body = BODY_Tuxedo; - } - else { - if (selectedbond == '\x01') { - body = BODY_Tuxedo; - } - else { - if (selectedbond == '\x02') { - body = BODY_Tuxedo; - } - else { - if (selectedbond == '\x03') { - body = BODY_Tuxedo; - } - } - } - } - } - } - if (selectedbond == '\0') { - if (true) { - switch(pPlayer->cuff_value) { - case 1: - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - break; - case 2: - head = HEAD_Male_Pierce_Bond_3; - break; - case 3: - head = HEAD_Male_Pierce_Bond_1; - break; - case 5: - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - break; - case 6: - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - break; - case 7: - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - break; - case 8: - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - } - } - } - else { - if (selectedbond == '\x01') { - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - } - else { - if (selectedbond == '\x02') { - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - } - else { - if (selectedbond == '\x03') { - head = HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT; - } - } - } - } - } - else { - player = get_cur_playernum(); - head = get_player_mp_char_head(player); - player = get_cur_playernum(); - body = get_player_mp_char_body(player); - } - if (cameramode == SWIRL_CAM) { - puStack208 = PTR_800799e0; - } - uVar2 = get_num_players(); - if (uVar2 == 1) { - remove_item_in_hand(1); - remove_item_in_hand(0); - proc_7F0CBAF4(aiStack24,iStack44,iStack56); - poStack28 = (object_header *)get_ptr_itemheader_in_hand(0); - header = c_item_entries[body].header; - poStack28->offset_obj_table = header->offset_obj_table; - poStack28->ptr_archetype = header->ptr_archetype; - poStack28->offset_obj_offset_block = header->offset_obj_offset_block; - *(undefined4 *)&poStack28->num_offset_entries = *(undefined4 *)&header->num_offset_entries; - poStack28->anonymous_4 = header->anonymous_4; - *(undefined4 *)&poStack28->num_table_entries = *(undefined4 *)&header->num_table_entries; - poStack28->offset_img_declaration = header->offset_img_declaration; - poStack28->is_loaded_in_mem = header->is_loaded_in_mem; - load_object_fill_header - (poStack28,(u8 *)c_item_entries[body].filename,iStack40,iStack52,(int)aiStack24); - iVar4 = get_temp_buffer_remaining_value((byte *)c_item_entries[body].filename); - header = c_item_entries[head].header; - uVar5 = (iVar4 + 0x3fU | 0x3f) ^ 0x3f; - poStack32 = (object_header *)(iStack40 + uVar5); - uStack48 = (uVar5 + 0x5f | 0x3f) ^ 0x3f; - poStack32->offset_obj_table = header->offset_obj_table; - poStack32->ptr_archetype = header->ptr_archetype; - poStack32->offset_obj_offset_block = header->offset_obj_offset_block; - *(undefined4 *)&poStack32->num_offset_entries = *(undefined4 *)&header->num_offset_entries; - poStack32->anonymous_4 = header->anonymous_4; - *(undefined4 *)&poStack32->num_table_entries = *(undefined4 *)&header->num_table_entries; - poStack32->offset_img_declaration = header->offset_img_declaration; - poStack32->is_loaded_in_mem = header->is_loaded_in_mem; - load_object_fill_header - (poStack32,(u8 *)c_item_entries[head].filename,iStack40 + uStack48, - iStack52 - uStack48,(int)aiStack24); - iVar4 = get_temp_buffer_remaining_value((byte *)c_item_entries[head].filename); - uStack224 = (iVar4 + uStack48 + 0x3f | 0x3f) ^ 0x3f; - uStack48 = (uStack224 + 0xfb | 0x3f) ^ 0x3f; - uStack224 = iStack40 + uStack224; - set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack28); - set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack32); - iVar4 = (int)poStack28->num_table_entries + (int)poStack32->num_table_entries + 10; - iVar6 = iStack40 + uStack48; - uStack48 = (iVar4 * 4 + uStack48 + 0x3f | 0x3f) ^ 0x3f; - proc_7F075FAC(uStack224,(ushort **)poStack28,iVar6); - *(undefined2 *)(uStack224 + 2) = (short)iVar4; - header = poStack32; - } - else { - poStack28 = c_item_entries[body].header; - if (poStack28->offset_obj_table == 0) { - load_object_into_memory(poStack28,(u8 *)c_item_entries[body].filename); - } - header = c_item_entries[head].header; - if (header->offset_obj_table == 0) { - poStack32 = header; - load_object_into_memory(header,(u8 *)c_item_entries[head].filename); - header = poStack32; - } - else { - uStack224 = 0; - } - } - uVar5 = maybe_load_models_for_guards(body,head,poStack28,header,0,uStack224); - pPlayer->ptr_char_objectinstance = uVar5; - set_obj_instance_controller_scale(pPlayer->ptr_char_objectinstance,scale); - init_GUARDdata_with_set_values - (pPlayer->position_data_pointer,pPlayer->ptr_char_objectinstance, - pPlayer->position_data_pointer + 8,(u32)fStack4); - *(undefined *)pPlayer->position_data_pointer = 6; - puStack8 = *(undefined2 **)(pPlayer->position_data_pointer + 4); - *(uint *)(puStack8 + 10) = *(uint *)(puStack8 + 10) | 1; - setsuboffset(pPlayer->ptr_char_objectinstance,(float *)(pPlayer->position_data_pointer + 8), - puStack8,&pPlayer); - setsubroty(pPlayer->ptr_char_objectinstance,extraout_f12_00,fStack4,extraout_a2_lo); - lVar3 = proc_7F09B244((longlong)(int)puStack208); - iVar4 = (int)lVar3; - fVar11 = extraout_f12_01; - if (-1 < lVar3) { - uVar2 = get_num_players(); - if (uVar2 == 1) { - puStack60 = (undefined4 *)(iStack40 + uStack48); - uStack48 = (uStack48 + 199 | 0x3f) ^ 0x3f; - poStack36 = (object_header *)get_ptr_itemheader_in_hand(1); - pPVar1 = PitemZ_entries[iVar4].header; - poStack36->offset_obj_table = pPVar1->microcode_entry_num; - *(item_related **)&poStack36->ptr_archetype = pPVar1->anonymous_1; - poStack36->offset_obj_offset_block = *(int *)&pPVar1->anonymous_2; - *(float *)&poStack36->num_offset_entries = pPVar1->drawdistance; - poStack36->anonymous_4 = pPVar1->anonymous_4; - *(int *)&poStack36->num_table_entries = pPVar1->anonymous_5; - poStack36->offset_img_declaration = pPVar1->anonymous_6; - poStack36->is_loaded_in_mem = pPVar1->anonymous_7; - load_object_fill_header - (poStack36,(u8 *)PitemZ_entries[iVar4].filename,iStack40 + uStack48, - iStack52 - uStack48,(int)aiStack24); - get_temp_buffer_remaining_value((byte *)PitemZ_entries[iVar4].filename); - set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack36); - } - else { - puStack60 = NULL; - poStack36 = NULL; - } - create_held_weapon(puStack8,iVar4,(char)puStack208,0,puStack60,(ushort **)poStack36); - fVar11 = extraout_f12_02; - } - proc_7F023A94((int)puStack8,fVar11); - } - else { - if (*(int *)(*(int *)(iVar4 + 0x1c) + 0x20) == 0) { - *(uint *)(iVar4 + 0x14) = *(uint *)(iVar4 + 0x14) | 1; - proc_7F023A94(iVar4,extraout_f12); - setsuboffset(pPlayer->ptr_char_objectinstance,(float *)(pPlayer->position_data_pointer + 8), - extraout_a2_lo_00,extraout_a3_lo); - setsubroty(pPlayer->ptr_char_objectinstance,extraout_f12_03,fStack4,extraout_a2_lo_01); - } - } - return; -} - - - -void maybe_solo_intro_camera_handler(void) - -{ - ulonglong uVar1; - - if ((*(int *)(pPlayer->position_data_pointer + 4) != 0) && (uVar1 = get_num_players(), uVar1 == 1) - ) { - disable_sounds_attached_to_player_then_something(pPlayer->position_data_pointer); - *(undefined4 *)(pPlayer->position_data_pointer + 4) = 0; - pPlayer->ptr_char_objectinstance = 0; - camera_80036424 = 1; - proc_7F07DE9C((int)pPlayer); - } - return; -} - - - -CAMERAMODE get_camera_mode(void) - -{ - return cameramode; -} - - - -longlong proc_7F07A534(undefined4 param_1,float *param_2,char *param_3,float *param_4,u32 param_5, - float param_6) - -{ - u32 uVar2; - int iVar3; - longlong lVar1; - longlong lVar4; - int iVar5; - float fVar6; - float fVar7; - f32 extraout_f12; - f32 extraout_f12_00; - f32 extraout_f14; - f32 extraout_f14_00; - float fVar8; - float fVar9; - float fVar10; - float in_stack_00000014; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - undefined4 uStack32; - float fStack28; - u32 uStack24; - float fStack20; - float fStack16; - int iStack8; - - lVar4 = 0; - iStack8 = 0; - fVar9 = flt_80055030; - cur_player_stat_ptr = param_1; - do { - fVar10 = (float)pPlayer->collision_radius; - iVar5 = 0; - fStack16 = flt_80055034 + fVar10; - uVar2 = get_random_value(); - fVar7 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar9 = fVar7 * 0.00000000 * fVar9; - do { - if (lVar4 != 0) break; - fStack20 = fVar9 + flt_8005503C; - if (flt_80055038 <= fStack20) { - fStack20 = fStack20 - flt_80055038; - } - fStack36 = sinf(fStack20); - uStack32 = 0; - fStack28 = cosf(fStack20); - fStack48 = fStack36 * fStack16 + *param_2; - fStack44 = param_2[1]; - fStack40 = fStack28 * fStack16 + param_2[2]; - proc_7F0B1CC4(); - uStack24 = param_5; - proc_7F03D058(param_3,0); - iVar3 = proc_7F0B0E24(&uStack24,extraout_f12,extraout_f14,(f32)*param_4); - proc_7F03D058(param_3,1); - if (iVar3 == 0) { - proc_7F026298(param_4,&fStack36,&fStack48); - fStack16 = sqrtf((fStack48 - *param_4) * (fStack48 - *param_4) + - (fStack40 - param_4[2]) * (fStack40 - param_4[2])); - } - fStack16 = fStack16 - fVar10; - if (((in_stack_00000014 <= fStack16) && (fVar9 = 1.00000000, true)) && (true)) { - fVar7 = fStack16 - in_stack_00000014; - do { - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar6 = fVar6 * 0.00000000 * fVar7 * fVar9 + in_stack_00000014; - PTR_800799e8 = (undefined *)(fStack36 * fVar6 + *param_2); - DAT_800799ec = param_2[1]; - uStack24 = param_5; - ptr_BONDdata = fStack28 * fVar6 + param_2[2]; - proc_7F03D058(param_3,0); - iVar3 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)*param_4); - proc_7F03D058(param_3,1); - if ((iVar3 != 0) && (lVar1 = proc_7F0B18B8(), lVar1 < 0)) { - fVar6 = (float)proc_7F0B2970(); - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - DAT_800799ec = fVar8 * 0.00000000 * (185.00000000 - fVar10) + fVar6 + fVar10; - if ((-1000.00000000 < DAT_800799ec - param_2[1]) && - (DAT_800799ec - param_2[1] < 1000.00000000)) { - lVar4 = 1; - } - } - fVar9 = fVar9 - 0.25000000; - } while ((0.00000000 < fVar9) && (lVar4 == 0)); - } - iVar5 += 1; - fVar9 = fStack20; - } while (iVar5 < 0x10); - iStack8 += 1; - if ((0x80 < iStack8) || (fVar9 = flt_80055040, lVar4 != 0)) { - return lVar4; - } - } while( true ); -} - - - -void set_camera_mode(int param_1) - -{ - u32 uVar3; - int iVar4; - undefined4 uVar5; - undefined uVar6; - longlong lVar1; - ulonglong uVar2; - undefined8 extraout_a0; - undefined8 extraout_a1; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - char *pcVar7; - undefined4 extraout_a3_lo; - Player *pPVar8; - Player *pPVar9; - Player *pPVar10; - Player *pPVar11; - float fVar12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f14; - float extraout_f14_00; - f32 fStack64; - int iStack60; - int iStack56; - f32 fStack48; - f32 fStack44; - f32 fStack40; - char *pcStack36; - float fStack16; - - enable_move_after_cinema = 0; - if (param_1 == 1) { - cameramode = param_1; - if (((ptr_random06cam_entry == NULL) || - (cameramode = param_1, uVar3 = get_recording_ramrom_flag(), uVar3 != 0)) || - (iVar4 = get_is_ramrom_flag(), iVar4 != 0)) { - set_camera_mode(3); - } - else { - dword_800364A4 = 0; - proc_7F0807B0(0,0,0,0x3f800000); - fade_to_over_seconds(60.00000000,0.00000000); - iVar4 = get_stage_num(); - load_enviroment(iVar4,1); - pPlayer->room_pointer = 0; - } - } - else { - if (param_1 == 2) { - cameramode = param_1; - proc_7F0807B0(0,0,0,0); - fade_to_over_seconds(60.00000000,1.00000000); - } - else { - if (param_1 == 9) { - DAT_80079e04 = 0; - DAT_80079e08 = 0xc2b40000; - DAT_80079e0c = 0; - DAT_80079e10 = 0x42a00000; - cameramode = param_1; - iVar4 = get_stage_num(); - load_enviroment(iVar4,0); - } - else { - if (param_1 == 3) { - dword_8003649C = 0; - cameramode = param_1; - proc_7F0807B0(0,0,0,0x3f800000); - fade_to_over_seconds(60.00000000,0.00000000); - iVar4 = get_stage_num(); - load_enviroment(iVar4,0); - if (((ptr_firstcommand_rotatingcam == NULL) || - (uVar3 = get_recording_ramrom_flag(), uVar3 != 0)) || - (iVar4 = get_is_ramrom_flag(), iVar4 != 0)) { - set_camera_mode(4); - } - else { - dword_800364A4 = 0; - dword_800364A8 = 1; - set_curplayer_fade(0.00000000,1.00000000); - solo_char_load(); - fStack16 = stage_intro_anim_table[selected_stage_intro_anim].anonymous_2; - proc_7F06FCA8(pPlayer->ptr_char_objectinstance, - stage_intro_anim_table[selected_stage_intro_anim].anonymous_0 + - ptr_animation_table,0,fStack16, - stage_intro_anim_table[selected_stage_intro_anim].anonymous_1,extraout_f14 - ); - if (0.00000000 < fStack16) { - proc_7F06FDE8(pPlayer->ptr_char_objectinstance,fStack16); - } - iVar4 = *(int *)(pPlayer->position_data_pointer + 4); - *(undefined *)(iVar4 + 7) = 0x17; - *(undefined *)(iVar4 + 8) = 0; - pPlayer->room_pointer = 0; - } - } - else { - if (param_1 == 4) { - cameramode = param_1; - iVar4 = get_stage_num(); - if (iVar4 == 0x36) { - proc_7F0807B0(0,0,0,0x3f800000); - fade_to_over_seconds(0.00000000,1.00000000); - } - else { - if (dword_8003649C != 0) { - proc_7F0807B0(0,0,0,0x3f800000); - fade_to_over_seconds(60.00000000,0.00000000); - } - } - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - iVar4 = get_stage_num(); - load_enviroment(iVar4,0); - } - if (pPlayer->pause_animation_state == 0) { - draw_item_in_hand_has_more_ammo(1,(ITEM_IDS)flt_8007A0A4); - draw_item_in_hand_has_more_ammo(0,(ITEM_IDS)PTR_800799e0); - } - stop_time_flag = 0; - } - else { - if (param_1 == 5) { - dword_800364A4 = 0; - dword_800364A8 = 1; - cameramode = param_1; - proc_7F0807B0(0,0,0,0x3f800000); - fade_to_over_seconds(60.00000000,0.00000000); - if ((dword_8003648C == 0) || (fVar12 = extraout_f12, ptr_playerstank == NULL)) { - in_tank_flag = FALSE; - pPVar8 = (Player *)&pPlayer->current_room_ypos; - pPVar11 = pPlayer; - pPVar9 = pPlayer; - do { - pPVar10 = (Player *)&pPVar9->zpos; - pPVar11->ptr_tile_printmanpos = pPVar9->field_434; - *(int *)&pPVar11->positionx = pPVar9->field_438; - pPVar11->positiony = pPVar9->field_43C; - pPVar11 = (Player *)&pPVar11->zpos; - pPVar9 = pPVar10; - } while (pPVar10 != pPVar8); - *(int *)&pPlayer->vv_theta = pPlayer->field_414; - *(int *)&pPlayer->vv_verta = pPlayer->field_418; - *(f32 *)(pPlayer->position_data_pointer + 8) = pPlayer->positionx; - *(int *)(pPlayer->position_data_pointer + 0xc) = pPlayer->positiony; - *(int *)(pPlayer->position_data_pointer + 0x10) = pPlayer->positionz; - *(int *)(pPlayer->position_data_pointer + 0x14) = pPlayer->ptr_tile_printmanpos; - proc_7F081790(); - proc_7F080B34(0.00000000,0.00000000,extraout_a0,extraout_a1,0.00000000); - proc_7F081478(); - set_curplayer_fade(0.00000000,1.00000000); - solo_char_load(); - uVar5 = proc_7F06F5AC((int)&pPlayer->field_598); - uVar6 = proc_7F06F5B4((int)&pPlayer->field_598); - proc_7F06FCA8(pPlayer->ptr_char_objectinstance,uVar5,uVar6,extraout_f12_00,0, - extraout_f14_00); - iVar4 = *(int *)(pPlayer->position_data_pointer + 4); - *(undefined *)(iVar4 + 7) = 0x18; - *(undefined *)(iVar4 + 8) = 0; - *(uint *)(iVar4 + 0x14) = *(uint *)(iVar4 + 0x14) | 1; - setsuboffset(pPlayer->ptr_char_objectinstance, - (float *)(pPlayer->position_data_pointer + 8),extraout_a2_lo, - extraout_a3_lo); - fVar12 = get_curplay_horizontal_rotation_in_degrees(); - setsubroty(pPlayer->ptr_char_objectinstance,extraout_f12_01,fVar12,extraout_a2_lo_00 - ); - fVar12 = extraout_f12_02; - } - if ((dword_8003648C == 0) || (ptr_playerstank == NULL)) { - pcStack36 = (char *)pPlayer->position_data_pointer; - fStack48 = pPlayer->field_3C4; - fStack44 = pPlayer->field_3C8; - fStack40 = pPlayer->field_3CC; - fStack64 = pPlayer->positionx; - iStack60 = pPlayer->positiony; - iStack56 = pPlayer->positionz; - iVar4 = pPlayer->ptr_tile_printmanpos; - pcVar7 = (char *)pPlayer->position_data_pointer; - } - else { - pcStack36 = ptr_playerstank; - fStack48 = *(f32 *)(ptr_playerstank + 8); - fStack44 = *(f32 *)(ptr_playerstank + 0xc); - fStack40 = *(f32 *)(ptr_playerstank + 0x10); - fStack64 = *(f32 *)(ptr_playerstank + 8); - iStack60 = *(int *)(ptr_playerstank + 0xc); - iStack56 = *(int *)(ptr_playerstank + 0x10); - iVar4 = *(int *)(ptr_playerstank + 0x14); - pcVar7 = ptr_playerstank; - } - lVar1 = proc_7F07A534(pcStack36,(float *)&fStack48,pcVar7,(float *)&fStack64,iVar4, - fVar12); - if (lVar1 == 0) { - run_title_stage(); - } - else { - if (dword_80036510 == 0) { - musicTrack1Play(M_INTROSWOOSH); - music_related_39(0.50000000); - } - if ((dword_8003648C != 0) && (ptr_playerstank != NULL)) { - uVar3 = get_cur_playernum(); - proc_7F09C250((int)ptr_playerstank,(float *)(ptr_playerstank + 8), - *(int *)(ptr_playerstank + 0x14),0xd,0,(char)uVar3, - ptr_playerstank + 0x2c,0); - } - } - } - else { - if (param_1 == 6) { - cameramode = param_1; - proc_7F0807B0(0,0,0,0); - fade_to_over_seconds(60.00000000,1.00000000); - } - else { - if (param_1 == 7) { - cameramode = param_1; - solo_char_load(); - pPlayer->room_pointer = 0; - } - else { - if (param_1 == 8) { - cameramode = param_1; - maybe_solo_intro_camera_handler(); - cameramode = FP_CAM; - } - else { - cameramode = param_1; - if (param_1 == 10) { - lVar1 = 0; - cameramode = param_1; - uVar2 = get_num_players(); - if (0 < (longlong)uVar2) { - do { - set_cur_player((int)lVar1); - proc_7F0807B0(0,0,0,0); - fade_to_over_seconds(60.00000000,1.00000000); - lVar1 = (longlong)((int)lVar1 + 1); - uVar2 = get_num_players(); - } while (lVar1 < (longlong)uVar2); - } - set_cur_player(0); - } - } - } - } - } - } - } - } - } - } - return; -} - - - -void proc_7F07B1A4(void) - -{ - CAMERAMODE CVar1; - - CVar1 = cameramode; - cameramode = 0; - enable_move_after_cinema = 0; - if (CVar1 == INTRO_CAM) { - set_camera_mode(2); - } - else { - if (CVar1 == FADESWIRL_CAM) { - reset_intro_camera_message_dialogs_for_BONDdata(); - set_camera_mode(3); - } - else { - if (CVar1 != MP_CAM) { - if (CVar1 == SWIRL_CAM) { - maybe_solo_intro_camera_handler(); - set_curplayer_fade(0.00000000,1.00000000); - set_camera_mode(4); - } - else { - if (CVar1 != FP_CAM) { - if (CVar1 == UNK5_CAM) { - set_camera_mode(6); - } - else { - if ((CVar1 == UNK6_CAM) && (dword_80036510 += 1, dword_80036510 < 3)) { - set_camera_mode(5); - } - } - } - } - } - } - } - return; -} - - - -void proc_7F07B2A0(int param_1,float param_2,float *param_3,float *param_4) - -{ - Player *pPVar1; - undefined *puVar2; - undefined *puVar3; - undefined *puVar4; - undefined *puVar5; - int iVar6; - f32 *in_a3_lo; - undefined *puVar7; - undefined *puVar8; - uint uVar9; - float in_f14; - undefined auStack60 [4]; - float *local_38; - float local_30 [3]; - float afStack36 [3]; - float afStack24 [3]; - float afStack12 [3]; - - puVar8 = ptr_firstcommand_rotatingcam; - local_38 = NULL; - puVar5 = auStack60; - iVar6 = -1; - puVar7 = ptr_firstcommand_rotatingcam + param_1 * 0x20; - if (0.00000000 < *(float *)(ptr_firstcommand_rotatingcam + param_1 * 0x20 + 0x18)) { - local_38 = (float *)((float)param_3 / - *(float *)(ptr_firstcommand_rotatingcam + param_1 * 0x20 + 0x18)); - } - do { - pPVar1 = pPlayer; - puVar4 = puVar7 + iVar6 * 0x20; - if (iVar6 < 0) { - puVar2 = puVar4; - if (puVar4 < puVar8) { - puVar2 = puVar8; - } -LAB_7f07b354: - uVar9 = *(uint *)(puVar2 + 4); - puVar3 = puVar2; - } - else { - if (puVar7 < puVar4) { - uVar9 = *(uint *)(puVar7 + 0x24); - puVar3 = puVar7; - while ((uVar9 & 1) == 0) { - puVar2 = puVar3 + 0x20; - if (puVar4 <= puVar2) goto LAB_7f07b354; - uVar9 = *(uint *)(puVar3 + 0x44); - puVar3 = puVar2; - } - uVar9 = *(uint *)(puVar3 + 4); - } - else { - uVar9 = *(uint *)(puVar7 + 4); - puVar3 = puVar7; - } - } - iVar6 += 1; - if ((uVar9 & 2) == 0) { - *(undefined4 *)(puVar5 + 0xc) = *(undefined4 *)(puVar3 + 8); - *(undefined4 *)(puVar5 + 0x10) = *(undefined4 *)(puVar3 + 0xc); - *(undefined4 *)(puVar5 + 0x14) = *(undefined4 *)(puVar3 + 0x10); - } - else { - *(float *)(puVar5 + 0xc) = - (float)pPlayer->field_4A0 * *(float *)(puVar3 + 8) + - *(float *)(puVar3 + 0x10) * (float)pPlayer->field_498; - *(undefined4 *)(puVar5 + 0x10) = *(undefined4 *)(puVar3 + 0xc); - *(float *)(puVar5 + 0x14) = - *(float *)(puVar3 + 0x10) * (float)pPVar1->field_4A0 - - (float)pPVar1->field_498 * *(float *)(puVar3 + 8); - } - puVar5 = puVar5 + 0xc; - if (iVar6 == 3) { - proc_7F05B024(local_30,afStack36,afStack24,afStack12,(float)param_3,in_f14,local_38); - *param_4 = *param_4 + (float)pPlayer->field_3C4; - param_4[1] = param_4[1] + (float)pPlayer->field_3C8; - param_4[2] = param_4[2] + (float)pPlayer->field_3CC; - *in_a3_lo = pPlayer->field_3C4; - in_a3_lo[1] = pPlayer->field_3C8; - in_a3_lo[2] = pPlayer->field_3CC; - puVar8 = ptr_firstcommand_rotatingcam + param_1 * 0x20; - if ((*(uint *)(puVar8 + 4) & 4) == 0) { - if ((*(uint *)(puVar8 + 0x24) & 4) == 0) { - local_38 = (float *)0x3f800000; - } - else { - local_38 = (float *)(1.00000000 - (float)local_38); - } - } - else { - if ((*(uint *)(puVar8 + 0x24) & 4) != 0) { - local_38 = NULL; - } - } - *(float *)in_a3_lo = - (float)*in_a3_lo + (float)pPlayer->field_4C0 * 40.00000000 * (float)local_38; - *(float *)(in_a3_lo + 1) = - (float)in_a3_lo[1] + (float)pPlayer->field_4C4 * 40.00000000 * (float)local_38; - *(float *)(in_a3_lo + 2) = - (float)in_a3_lo[2] + (float)pPlayer->field_4C8 * 40.00000000 * (float)local_38; - return; - } - } while( true ); -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F07B56C(void) - -{ - int iVar2; - u32 uVar3; - undefined *puVar4; - ulonglong uVar1; - f32 *pfVar5; - undefined4 in_a0_lo; - undefined4 in_a1_lo; - float *in_a2_lo; - f32 *in_a3_lo; - uint uVar6; - float in_f0; - float fVar7; - float __x; - float *pfVar8; - float *pfVar9; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - ushort uStackX2; - ushort uStackX6; - f32 *in_stack_00000014; - f32 *in_stack_00000018; - - uStackX6 = (ushort)in_a1_lo; - uStackX2 = (ushort)in_a0_lo; - if ((cameramode == INTRO_CAM) || (cameramode == FADESWIRL_CAM)) { - if (cameramode == INTRO_CAM) { - if (((float)dword_800364A4 < 120.00000000) && - (120.00000000 <= (float)dword_800364A4 + global_timer_delta)) { - proc_7F08A3B4(ptrSecondFontTable,ptrFirstFontTable); - display_string_in_lower_left_corner(*(char **)(ptr_random06cam_entry + 0x1c)); - } - pfVar9 = (float *)((float)dword_800364A4 + global_timer_delta); - if (*(char **)(ptr_random06cam_entry + 0x20) == NULL) { - if (300.00000000 < (float)dword_800364A4) { - enable_move_after_cinema = 1; - } - } - else { - if (((float)dword_800364A4 < 300.00000000) && (300.00000000 <= (float)pfVar9)) { - display_string_in_lower_left_corner(*(char **)(ptr_random06cam_entry + 0x20)); - pfVar9 = (float *)((float)dword_800364A4 + global_timer_delta); - } - if (480.00000000 < (float)dword_800364A4) { - enable_move_after_cinema = 1; - } - } - dword_800364A4 = pfVar9; - iVar2 = get_controls_locked_flag(); - if ((iVar2 == 0) && ((uStackX2 & ~uStackX6 & 0xf030) != 0)) { - enable_move_after_cinema = 1; - } - } - else { - if (pPlayer->timer_for_fade < 0.00000000) { - enable_move_after_cinema = 1; - } - } - *in_a2_lo = *(float *)(ptr_random06cam_entry + 4); - in_a2_lo[1] = *(float *)(ptr_random06cam_entry + 8); - in_a2_lo[2] = *(float *)(ptr_random06cam_entry + 0xc); - fVar7 = cosf(*(float *)(ptr_random06cam_entry + 0x14)); - __x = sinf(*(float *)(ptr_random06cam_entry + 0x10)); - *(float *)in_a3_lo = __x * fVar7 + *in_a2_lo; - fVar7 = sinf(*(float *)(ptr_random06cam_entry + 0x14)); - *(float *)(in_a3_lo + 1) = fVar7 + in_a2_lo[1]; - fVar7 = cosf(*(float *)(ptr_random06cam_entry + 0x14)); - __x = cosf(*(float *)(ptr_random06cam_entry + 0x10)); - *(float *)(in_a3_lo + 2) = in_a2_lo[2] - __x * fVar7; - pfVar5 = (f32 *)(ptr_0xxxpresets + *(int *)(ptr_random06cam_entry + 0x18) * 0x2c); - *in_stack_00000014 = pfVar5[10]; - *in_stack_00000018 = *pfVar5; - in_stack_00000018[1] = pfVar5[1]; - in_stack_00000018[2] = pfVar5[2]; - } - else { - if (cameramode == MP_CAM) { - uVar3 = get_cur_playernum(); - iVar2 = proc_7F09B4D8(uVar3); - if ((iVar2 == 0) && (iVar2 = 0, 0 < clock_timer)) { - do { - iVar2 += 1; - if (DAT_80079e08 < flt_80055044) { - if (DAT_80079e08 < -20.00000000) { - DAT_80079e04 = DAT_80079e04 + flt_80055048; - } - if (110.00000000 < DAT_80079e08) { - DAT_80079e04 = DAT_80079e04 - flt_80055048; - } - DAT_80079e08 = DAT_80079e08 + DAT_80079e04; - } - else { - DAT_80079e08 = 180.00000000; - } - if (80.00000000 < DAT_80079e08) { - if (60.00000000 < DAT_80079e10) { - DAT_80079e0c = DAT_80079e0c - flt_80055048; - } - else { - DAT_80079e0c = DAT_80079e0c + flt_8005504C; - } - DAT_80079e10 = DAT_80079e10 + DAT_80079e0c; - if (DAT_80079e10 < 1.00000000) { - DAT_80079e10 = 1.00000000; - } - } - } while (iVar2 < clock_timer); - } - __x = ((DAT_80079e08 - pPlayer->vv_theta) * flt_80055050) / 180.00000000; - fVar7 = sinf(__x); - *in_a2_lo = fVar7 * DAT_80079e10 + (float)pPlayer->field_4B4; - in_a2_lo[1] = (float)pPlayer->field_4B8 + DAT_80079e10 * flt_80055054; - fVar7 = cosf(__x); - in_a2_lo[2] = fVar7 * DAT_80079e10 + (float)pPlayer->field_4BC; - *(int *)in_a3_lo = pPlayer->field_4B4; - *(int *)(in_a3_lo + 1) = pPlayer->field_4B8; - *(int *)(in_a3_lo + 2) = pPlayer->field_4BC; - *in_stack_00000014 = *(f32 *)(pPlayer->position_data_pointer + 0x14); - *(int *)in_stack_00000018 = pPlayer->field_4B4; - *(float *)(in_stack_00000018 + 1) = (float)pPlayer->field_4B8 + DAT_80079e10 * flt_80055058; - *(int *)(in_stack_00000018 + 2) = pPlayer->field_4BC; - if (DAT_80079e10 < 5.00000000) { - enable_move_after_cinema = 1; - } - } - else { - if (cameramode == SWIRL_CAM) { - dword_800364A4 = (float *)((float)dword_800364A4 + global_timer_delta); - puVar4 = ptr_firstcommand_rotatingcam + dword_800364A8 * 0x20; - pfVar8 = *(float **)(puVar4 + 0x18); - pfVar9 = pfVar8; - if ((float)pfVar8 <= (float)dword_800364A4) { - uVar6 = *(uint *)(puVar4 + 100); - while ((uVar6 & 1) == 0) { - dword_800364A4 = (float *)((float)dword_800364A4 - (float)pfVar8); - dword_800364A8 += 1; - puVar4 = ptr_firstcommand_rotatingcam + dword_800364A8 * 0x20; - pfVar8 = *(float **)(puVar4 + 0x18); - pfVar9 = pfVar8; - if ((float)dword_800364A4 < (float)pfVar8) goto LAB_7f07bbe4; - uVar6 = *(uint *)(puVar4 + 100); - } - enable_move_after_cinema = 1; - pfVar9 = *(float **)(puVar4 + 0x18); - dword_800364A4 = pfVar8; - } -LAB_7f07bbe4: - puVar4 = ptr_firstcommand_rotatingcam + (dword_800364A8 + 1) * 0x20; - uVar6 = *(uint *)(puVar4 + 0x44); - fVar7 = ((float)pfVar9 - (float)dword_800364A4) + 0.00000000; - while ((uVar6 & 1) == 0) { - uVar6 = *(uint *)(puVar4 + 100); - pfVar9 = (float *)(puVar4 + 0x18); - puVar4 = puVar4 + 0x20; - fVar7 = fVar7 + *pfVar9; - } - __x = 30.00000000; - if ((fVar7 < 30.00000000) && (__x = 30.00000000, 30.00000000 <= fVar7 + global_timer_delta)) - { - set_curplayer_fade(30.00000000,0.00000000); - __x = extraout_f12; - } - if ((dword_8003649C != 0) && - (uVar1 = check_if_fade_to_black_complete(), __x = extraout_f12_00, uVar1 != 0)) { - enable_move_after_cinema = 1; - __x = extraout_f12_00; - } - if ((((60.00000000 < fVar7) && (dword_8003649C == 0)) && - (iVar2 = get_controls_locked_flag(), __x = extraout_f12_01, iVar2 == 0)) && - (__x = extraout_f12_01, (uStackX2 & ~uStackX6 & 0xf030) != 0)) { - dword_8003649C = 1; - proc_7F0807B0(0,0,0,pPlayer->tint_alpha); - uVar1 = check_if_fade_to_black_complete(); - if (uVar1 == 0) { - fade_to_over_seconds(pPlayer->field_3E0,1.00000000); - __x = extraout_f12_03; - } - else { - fade_to_over_seconds(60.00000000,1.00000000); - __x = extraout_f12_02; - } - } - proc_7F07B2A0(dword_800364A8,__x,dword_800364A4,in_a2_lo); - if (*(int *)(ptr_firstcommand_rotatingcam + dword_800364A8 * 0x20 + 0x1c) < 0) { - *(int *)in_stack_00000014 = pPlayer->ptr_tile_printmanpos; - *in_stack_00000018 = pPlayer->positionx; - *(int *)(in_stack_00000018 + 1) = pPlayer->positiony; - *(int *)(in_stack_00000018 + 2) = pPlayer->positionz; - } - else { - pfVar5 = (f32 *)(ptr_0xxxpresets + - *(int *)(ptr_firstcommand_rotatingcam + dword_800364A8 * 0x20 + 0x1c) * - 0x2c); - *in_stack_00000014 = pfVar5[10]; - *in_stack_00000018 = *pfVar5; - in_stack_00000018[1] = pfVar5[1]; - in_stack_00000018[2] = pfVar5[2]; - } - } - else { - if ((cameramode == UNK5_CAM) || (cameramode == UNK6_CAM)) { - if (cameramode == UNK5_CAM) { - dword_800364A4 = (float *)((float)dword_800364A4 + global_timer_delta); - if (pPlayer->ptr_char_objectinstance == 0) { - if (180.00000000 <= (float)dword_800364A4) { - enable_move_after_cinema = 1; - } - } - else { - proc_7F06F5BC(pPlayer->ptr_char_objectinstance); - fVar7 = proc_7F06F5C4(pPlayer->ptr_char_objectinstance); - if (fVar7 <= in_f0) { - enable_move_after_cinema = 1; - } - } - if ((((uStackX2 & ~uStackX6 & 0xf000) != 0) && (pPlayer->bonddead != 0)) && - ((pPlayer->field_424 != 0 && (pPlayer->field_428 != 0)))) { - enable_move_after_cinema = 1; - dword_80036510 = 2; - } - } - else { - if (cameramode == UNK6_CAM) { - dword_800364A4 = (float *)((float)dword_800364A4 + global_timer_delta); - if (pPlayer->timer_for_fade < 0.00000000) { - enable_move_after_cinema = 1; - } - if (((((uStackX2 & ~uStackX6 & 0xf000) != 0) && (pPlayer->bonddead != 0)) && - (pPlayer->field_424 != 0)) && (pPlayer->field_428 != 0)) { - dword_80036510 = 2; - } - } - } - *(undefined **)in_a2_lo = PTR_800799e8; - in_a2_lo[1] = DAT_800799ec; - in_a2_lo[2] = ptr_BONDdata; - if (cur_player_stat_ptr == pPlayer->position_data_pointer) { - *in_a3_lo = pPlayer->field_3C4; - in_a3_lo[1] = pPlayer->field_3C8; - in_a3_lo[2] = pPlayer->field_3CC; - } - else { - *in_a3_lo = *(f32 *)(cur_player_stat_ptr + 8); - in_a3_lo[1] = *(f32 *)(cur_player_stat_ptr + 0xc); - in_a3_lo[2] = *(f32 *)(cur_player_stat_ptr + 0x10); - } - *(int *)in_stack_00000014 = pPlayer->ptr_tile_printmanpos; - *in_stack_00000018 = pPlayer->positionx; - *(int *)(in_stack_00000018 + 1) = pPlayer->positiony; - *(int *)(in_stack_00000018 + 2) = pPlayer->positionz; - } - else { - if (cameramode == POSEND_CAM) { - if (player_num == NULL) { - if (random_byte == 0) { - if (dword_8007A0D4 < 10000) { - pfVar5 = (f32 *)(ptr_0xxxpresets + dword_8007A0D4 * 0x2c); - } - else { - pfVar5 = (f32 *)(ptr_2xxxpresets + dword_8007A0D4 * 0x44 + -680000); - } - *in_stack_00000014 = pfVar5[10]; - *in_stack_00000018 = *pfVar5; - in_stack_00000018[1] = pfVar5[1]; - in_stack_00000018[2] = pfVar5[2]; - cosf(dword_8007A0C0); - *in_a3_lo = *pfVar5; - *(float *)(in_a3_lo + 1) = (float)pfVar5[1] + dword_8007A0D0; - sinf(dword_8007A0C0); - in_a3_lo[2] = pfVar5[2]; - fVar7 = sinf(dword_8007A0C0); - cosf(dword_8007A0C0); - *in_a2_lo = (float)*pfVar5 + fVar7 * dword_8007A0C8; - in_a2_lo[1] = (float)pfVar5[1] + dword_8007A0D0 + dword_8007A0CC; - __x = cosf(dword_8007A0C0); - sinf(dword_8007A0C0); - fVar7 = flt_8005505C; - in_a2_lo[2] = (float)pfVar5[2] + __x * dword_8007A0C8; - dword_8007A0C0 = dword_8007A0C0 + dword_8007A0C4 * global_timer_delta; - while (fVar7 <= dword_8007A0C0) { - dword_8007A0C0 = dword_8007A0C0 - fVar7; - } - while (dword_8007A0C0 < 0.00000000) { - dword_8007A0C0 = dword_8007A0C0 + fVar7; - } - } - else { - iVar2 = *(int *)(random_byte + 0x18); - if (iVar2 < 10000) { - pfVar5 = (f32 *)(ptr_0xxxpresets + iVar2 * 0x2c); - } - else { - pfVar5 = (f32 *)(ptr_2xxxpresets + iVar2 * 0x44 + -680000); - } - *in_a2_lo = *(float *)(random_byte + 4); - in_a2_lo[1] = *(float *)(random_byte + 8); - in_a2_lo[2] = *(float *)(random_byte + 0xc); - *in_stack_00000014 = pfVar5[10]; - *in_stack_00000018 = *pfVar5; - in_stack_00000018[1] = pfVar5[1]; - in_stack_00000018[2] = pfVar5[2]; - if (dword_8007A0D8 == 1) { - *in_a3_lo = pPlayer->field_3C4; - in_a3_lo[1] = pPlayer->field_3C8; - in_a3_lo[2] = pPlayer->field_3CC; - } - else { - fVar7 = cosf(*(float *)(random_byte + 0x14)); - __x = sinf(*(float *)(random_byte + 0x10)); - *(float *)in_a3_lo = __x * fVar7 + *in_a2_lo; - fVar7 = sinf(*(float *)(random_byte + 0x14)); - *(float *)(in_a3_lo + 1) = fVar7 + in_a2_lo[1]; - fVar7 = cosf(*(float *)(random_byte + 0x14)); - __x = cosf(*(float *)(random_byte + 0x10)); - *(float *)(in_a3_lo + 2) = in_a2_lo[2] - __x * fVar7; - } - } - } - else { - *(f32 *)in_a2_lo = *player_num; - *(f32 *)(in_a2_lo + 1) = player_num[1]; - *(f32 *)(in_a2_lo + 2) = player_num[2]; - *in_a3_lo = pPlayer->field_3C4; - in_a3_lo[1] = pPlayer->field_3C8; - in_a3_lo[2] = pPlayer->field_3CC; - *in_stack_00000014 = player_num[10]; - *in_stack_00000018 = *player_num; - in_stack_00000018[1] = player_num[1]; - in_stack_00000018[2] = player_num[2]; - } - } - } - } - } - } - return; -} - - - -void proc_7F07C540(int param_1) - -{ - pPlayer->field_42C = param_1; - return; -} - - - -void set_BONDdata_lookahead_setting(int param_1) - -{ - pPlayer->automovecentreenabled = param_1; - return; -} - - - -int get_BONDdata_lookahead_setting(void) - -{ - return pPlayer->automovecentreenabled; -} - - - -void set_BONDdata_autoaim_y(int param_1) - -{ - pPlayer->autoyaimenabled = param_1; - return; -} - - - -ulonglong get_BONDdata_autoaim_y(void) - -{ - ulonglong uVar1; - - uVar1 = get_num_players(); - if (uVar1 == 1) { - uVar1 = SEXT48(pPlayer->autoyaimenabled); - } - else { - uVar1 = (ulonglong)(byte)pplayersperm->autoaim; - } - return uVar1; -} - - - -void redirect_get_BONDdata_autoaim(void) - -{ - get_BONDdata_autoaim_y(); - return; -} - - - -int get_BONDdata_is_aiming(void) - -{ - return pPlayer->insightaimmode; -} - - - -void proc_7F07C5F0(int param_1,float param_2) - -{ - int iVar1; - - if (pPlayer->autoyaimtime60 < 0) { - iVar1 = pPlayer->autoyaimtime; - } - else { - pPlayer->autoyaimtime60 = pPlayer->autoyaimtime60 - clock_timer; - iVar1 = pPlayer->autoyaimtime; - } - if (param_1 == iVar1) { - pPlayer->autoaimy = param_2; - } - else { - if (pPlayer->autoyaimtime60 < 0) { - pPlayer->autoyaimtime60 = 0x1e; - pPlayer->autoyaimtime = param_1; - pPlayer->autoaimy = param_2; - } - } - return; -} - - - -void set_BONDdata_autoaim_x(int param_1) - -{ - pPlayer->autoxaimenabled = param_1; - return; -} - - - -ulonglong get_BONDdata_autoaim_x(void) - -{ - ulonglong uVar1; - - uVar1 = get_num_players(); - if (uVar1 == 1) { - uVar1 = SEXT48(pPlayer->autoxaimenabled); - } - else { - uVar1 = (ulonglong)(byte)pplayersperm->autoaim; - } - return uVar1; -} - - - -void redirect_get_BONDdata_autoaim_x(void) - -{ - get_BONDdata_autoaim_x(); - return; -} - - - -void proc_7F07C6C8(int param_1,float param_2) - -{ - int iVar1; - - if (pPlayer->autoxaimtime60 < 0) { - iVar1 = pPlayer->autoxaimtime; - } - else { - pPlayer->autoxaimtime60 = pPlayer->autoxaimtime60 - clock_timer; - iVar1 = pPlayer->autoxaimtime; - } - if (param_1 == iVar1) { - pPlayer->autoaimx = param_2; - } - else { - if (pPlayer->autoxaimtime60 < 0) { - pPlayer->autoxaimtime60 = 0x1e; - pPlayer->autoxaimtime = param_1; - pPlayer->autoaimx = param_2; - } - } - return; -} - - - -void change_player_pos_to_target(int *target_posblock,int *src_pos,int *tile) - -{ - target_posblock[1] = *src_pos; - target_posblock[2] = src_pos[1]; - target_posblock[3] = src_pos[2]; - *(int **)target_posblock = tile; - *(int **)(target_posblock + 0x14) = tile; - target_posblock[0xf] = 0; - target_posblock[0x10] = 0; - target_posblock[0x11] = 0; - target_posblock[0x13] = 0; - target_posblock[4] = 0; - target_posblock[5] = 0; - target_posblock[0xb] = target_posblock[1]; - target_posblock[7] = target_posblock[1]; - target_posblock[0xe] = 0x3f800000; - target_posblock[0x12] = 0x3f800000; - target_posblock[6] = 0x3f800000; - target_posblock[0xc] = target_posblock[2]; - target_posblock[8] = target_posblock[2]; - target_posblock[0xd] = target_posblock[3]; - target_posblock[9] = target_posblock[3]; - target_posblock[10] = 0x41f00000; - return; -} - - - -void proc_7F07C7B4(void) - -{ - int iVar1; - float afStack76 [16]; - float *local_c; - float *local_8; - - if ((longlong)ptr_playerstank != 0) { - iVar1 = *(int *)(*(int *)(*(int *)(*(int *)(ptr_playerstank + 4) + 0x14) + 8) + 8); - local_8 = *(float **)(*(int *)(iVar1 + 8) + 4); - local_c = *(float **)(*(int *)(iVar1 + 4) + 4); - proc_7F0585FC(flt_80055060 - dword_80036474,(longlong)ptr_playerstank,afStack76); - DAT_800799a8 = *local_8; - DAT_800799ac = local_8[1]; - dword_8007A070 = local_8[2]; - proc_7F0583D8(afStack76,(float *)&DAT_800799a8); - DAT_800799a8 = DAT_800799a8 + *local_c; - DAT_800799ac = DAT_800799ac + local_c[1]; - dword_8007A070 = dword_8007A070 + local_c[2]; - } - return; -} - - - -void proc_7F07C888(float *param_1,float *param_2,float param_3) - -{ - int iVar1; - int iVar2; - float __x; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - - iVar1 = *(int *)(ptr_playerstank + 4); - iVar2 = proc_7F040078(iVar1); - fVar7 = *(float *)(iVar2 + 4) - DAT_800799a8; - fVar9 = *(float *)(iVar2 + 8) - DAT_800799a8; - fVar8 = *(float *)(iVar2 + 0x14) - dword_8007A070; - fVar10 = *(float *)(iVar2 + 0x18) - dword_8007A070; - fVar3 = cosf(__x); - fVar3 = fVar3 * *(float *)(*(int *)(iVar1 + 0x14) + 0x14); - fVar4 = sinf(__x); - fVar4 = fVar4 * *(float *)(*(int *)(iVar1 + 0x14) + 0x14); - fVar5 = -fVar8 * fVar4; - fVar11 = fVar7 * fVar3; - *param_1 = *param_2 + fVar5 + fVar11; - fVar8 = fVar8 * fVar3; - fVar7 = fVar7 * fVar4; - param_1[1] = param_2[2] + fVar8 + fVar7; - fVar6 = fVar9 * fVar3; - param_1[2] = *param_2 + fVar5 + fVar6; - fVar9 = fVar9 * fVar4; - param_1[3] = param_2[2] + fVar8 + fVar9; - fVar4 = -fVar10 * fVar4; - param_1[4] = *param_2 + fVar4 + fVar6; - fVar10 = fVar10 * fVar3; - param_1[5] = param_2[2] + fVar10 + fVar9; - param_1[6] = *param_2 + fVar4 + fVar11; - param_1[7] = param_2[2] + fVar10 + fVar7; - return; -} - - - -longlong proc_7F07CA2C(undefined8 param_1,f32 param_2,undefined4 param_3,undefined4 param_4, - undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 *param_8) - -{ - int iVar1; - f32 in_f12; - f32 in_f14; - - iVar1 = proc_7F0B0E24(param_1._4_4_,in_f12,in_f14,param_2); - if (((longlong)iVar1 == 0) && (param_7 != NULL)) { - *(f32 *)param_7 = param_2; - param_7[1] = 0; - param_7[2] = param_3; - param_8[1] = 0; - *param_8 = param_4; - param_8[2] = param_5; - } - return (longlong)iVar1; -} - - - -undefined4 -proc_7F07CAC8(float *param_1,undefined4 param_2,float param_3,undefined4 *param_4, - undefined4 *param_5) - -{ - int iVar1; - float *pfVar2; - float *pfVar3; - float *pfVar4; - longlong lVar5; - float fVar6; - undefined4 *in_stack_00000010; - float afStack140 [16]; - float fStack76; - undefined4 uStack72; - float fStack68; - int iStack52; - undefined4 uStack44; - float fStack40; - undefined4 uStack36; - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack4; - - uStack44 = 0; - uStack4 = param_2; - proc_7F07C888(&fStack40,param_1,param_3); - if (ptr_playerstank != NULL) { - proc_7F03D058(ptr_playerstank,0); - } - lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,*param_1,param_1[2],fStack40,uStack36,0x213,param_5, - in_stack_00000010); - if (lVar5 != 0) { - lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,fStack40,uStack36,uStack32,uStack28,0x213,param_5, - in_stack_00000010); - if (lVar5 != 0) { - lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,uStack32,uStack28,uStack24,uStack20,0x213, - param_5,in_stack_00000010); - if (lVar5 != 0) { - lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,uStack24,uStack20,uStack16,uStack12,0x213, - param_5,in_stack_00000010); - if ((lVar5 != 0) && - (lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,uStack16,uStack12,fStack40,uStack36,0x213, - param_5,in_stack_00000010), lVar5 != 0)) { - uStack44 = 1; - if ((longlong)(int)ptr_playerstank != 0) { - iStack52 = *(int *)(*(int *)(ptr_playerstank + 4) + 0x14); - iVar1 = *(int *)(*(int *)(iStack52 + 8) + 8); - pfVar2 = *(float **)(*(int *)(iVar1 + 0xc) + 4); - pfVar3 = *(float **)(*(int *)(iVar1 + 0x10) + 4); - pfVar4 = *(float **)(*(int *)(iVar1 + 8) + 4); - uStack72 = 0; - fStack76 = (*pfVar3 + *pfVar2) - *pfVar4; - fVar6 = (float)param_4 + dword_80036474; - fStack68 = (pfVar3[2] + pfVar2[2]) - pfVar4[2]; - if (flt_80055064 <= fVar6) { - fVar6 = fVar6 - flt_80055064; - } - if (fVar6 < 0.00000000) { - fVar6 = fVar6 + flt_80055064; - } - proc_7F0585FC(flt_80055064 - fVar6,(longlong)(int)ptr_playerstank,afStack140); - proc_7F0583D8(afStack140,&fStack76); - fStack76 = fStack76 * *(float *)(iStack52 + 0x14) + *param_1; - fStack68 = fStack68 * *(float *)(iStack52 + 0x14) + param_1[2]; - uStack4 = param_2; - lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,*param_1,param_1[2],fStack76,fStack68, - 0x213,param_5,in_stack_00000010); - if (lVar5 == 0) { - uStack44 = 0; - } - } - } - } - } - } - if (ptr_playerstank != NULL) { - proc_7F03D058(ptr_playerstank,1); - } - return uStack44; -} - - - -void proc_7F07CDA8(float *param_1,undefined4 param_2,float param_3) - -{ - float in_a2_lo; - - proc_7F07CAC8(param_1,param_2,in_a2_lo,(undefined4 *)in_a2_lo,NULL); - return; -} - - - -undefined8 related_printmanpos(float *param_1,float param_2,undefined4 *param_3) - -{ - longlong lVar1; - u32 *in_a2_lo; - float extraout_f12; - f32 in_f14; - u32 uStack4; - - uStack4 = pPlayer->ptr_tile_printmanpos; - lVar1._4_4_ = proc_7F0B0E24(&uStack4,(f32)param_2,in_f14,pPlayer->positionx); - lVar1 = (longlong)lVar1._4_4_; - if ((lVar1 != 0) && (proc_7F07CDA8(param_1,uStack4,extraout_f12), lVar1 != 0)) { - *in_a2_lo = uStack4; - return 1; - } - return 0; -} - - - -BOOL get_intank_flag(void) - -{ - return in_tank_flag; -} - - - -undefined4 get_ptr_for_players_tank(void) - -{ - if (in_tank_flag == TRUE) { - return ptr_playerstank; - } - return 0; -} - - - -void proc_7F07CEB0(float *param_1) - -{ - float fVar1; - float fVar2; - float __x; - - __x = dword_80036464 + dword_80036474; - if (flt_80055068 <= __x) { - __x = __x - flt_80055068; - } - if (__x < 0.00000000) { - __x = __x + flt_80055068; - } - fVar1 = sinf(__x); - fVar2 = cosf(dword_8003646C); - *param_1 = fVar2 * -fVar1; - fVar1 = sinf(dword_8003646C); - param_1[1] = fVar1; - __x = cosf(__x); - fVar1 = cosf(dword_8003646C); - param_1[2] = fVar1 * __x; - return; -} - - - -undefined4 proc_7F07CF80(void) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -undefined4 proc_7F07CF8C(void) - -{ - undefined8 uVar1; - int iVar3; - longlong lVar2; - float *in_a0_lo; - char *pcVar4; - u32 *in_a1_lo; - float in_f12; - float extraout_f12; - f32 extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - f32 extraout_f14_00; - float extraout_f14_01; - undefined4 auStack92 [16]; - uint local_1c; - undefined4 local_18; - undefined4 local_14; - float local_10; - undefined4 local_c; - u32 local_8; - undefined4 local_4; - - local_4 = 0; - if ((in_tank_flag == TRUE) && (DAT_800799b8 != 0)) { - uVar1 = related_printmanpos(in_a0_lo,in_f12,dword_80036464); - return (int)uVar1; - } - local_8 = pPlayer->ptr_tile_printmanpos; - if (obj_collision_flag == FALSE) { - local_c = 0; - } - else { - local_c = 0x1f; - } - proc_7F08A274(pPlayer->position_data_pointer,&local_18,&local_10,&local_14); - if (dword_8003644C != NULL) { - proc_7F03D058(dword_8003644C,0); - } - proc_7F03D058((char *)pPlayer->position_data_pointer,0); - local_1c = proc_7F0B2314((int *)&local_8,extraout_f12,extraout_f14,*in_a0_lo, - (undefined4 *)in_a0_lo[2]); - iVar3 = proc_7F0B239C(auStack92); - if (iVar3 != 0) { - pPlayer->field_29FC = 0; - } - iVar3 = proc_7F0B0E24(&local_8,extraout_f12_00,extraout_f14_00,pPlayer->positionx); - if (((iVar3 == 0) || (lVar2 = proc_7F0B18B8(), -1 < lVar2)) || - (((float)pPlayer->ducking_height_offset != -100.00000000 && (-1 < (int)local_1c)))) { -LAB_7f07d1b4: - if (ptr_playerstank != 0) { - pcVar4 = (char *)pPlayer->position_data_pointer; - goto LAB_7f07d200; - } - if (DAT_8007ba04 == NULL) { - pcVar4 = (char *)pPlayer->position_data_pointer; - goto LAB_7f07d200; - } - if (*DAT_8007ba04 != '\x01') { - pcVar4 = (char *)pPlayer->position_data_pointer; - goto LAB_7f07d200; - } - if (*(char *)(*(int *)(DAT_8007ba04 + 4) + 3) == '-') { - dword_8003644C = DAT_8007ba04; - } - } - else { - iVar3 = proc_7F0B23A4((int)auStack92); - lVar2 = (longlong)iVar3; - if ((lVar2 == 0) && - (proc_7F0B26B8((int *)&local_8,extraout_f12_01,extraout_f14_01,*in_a0_lo,in_a0_lo[2]), - -1 < lVar2)) goto LAB_7f07d1b4; - *in_a1_lo = local_8; - local_4 = 1; - } - pcVar4 = (char *)pPlayer->position_data_pointer; -LAB_7f07d200: - proc_7F03D058(pcVar4,1); - if (dword_8003644C != NULL) { - proc_7F03D058(dword_8003644C,1); - } - return local_4; -} - - - -ulonglong proc_7F07D234(undefined4 *param_1,float *param_2,float *param_3) - -{ - longlong lVar1; - int iStack4; - - proc_7F0B1CC4(); - lVar1 = proc_7F07CF8C(); - if (lVar1 == 0) { - proc_7F0B28B0(param_2,param_3); - } - else { - pPlayer->ptr_tile_printmanpos = iStack4; - pPlayer->positionx = *param_1; - pPlayer->positionz = param_1[2]; - } - return (ulonglong)(lVar1 != 0); -} - - - -undefined8 proc_7F07D2B4(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5) - -{ - longlong lVar1; - undefined8 uVar2; - float fVar3; - float afStack80 [2]; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - f32 fStack44; - int iStack40; - float fStack36; - float fStack28; - float fStack24; - float fStack16; - undefined4 uStack12; - float fStack8; - int iStack4; - - proc_7F08A274(pPlayer->position_data_pointer,afStack80,&fStack8,&uStack12); - fStack72 = *param_1 - (float)pPlayer->positionx; - fStack48 = afStack80[0]; - fStack68 = param_1[2] - (float)pPlayer->positionz; - fStack44 = pPlayer->positionx; - iStack40 = pPlayer->positionz; - fStack56 = *param_2; - fStack52 = param_2[2]; - fStack64 = *param_3; - fStack60 = param_3[2]; - fStack36 = fStack72; - fStack28 = fStack68; - fVar3 = proc_7F0B33DC(&fStack48,&fStack56,&fStack64,&fStack72); - fStack24 = fStack36 * fVar3 * 0.25000000 + (float)pPlayer->positionx; - fStack16 = fStack28 * fVar3 * 0.25000000 + (float)pPlayer->positionz; - lVar1 = proc_7F07CF8C(); - if (lVar1 == 0) { - proc_7F0B28B0(param_4,param_5); - if ((((*param_4 != *param_2) || (param_4[1] != param_2[1])) || (param_4[2] != param_2[2])) || - (((*param_5 != *param_3 || (param_5[1] != param_3[1])) || - (uVar2 = 0xffffffffffffffff, param_5[2] != param_3[2])))) { - uVar2 = 0; - } - } - else { - uVar2 = 1; - pPlayer->ptr_tile_printmanpos = iStack4; - *(float *)&pPlayer->positionx = fStack24; - *(float *)&pPlayer->positionz = fStack16; - } - return uVar2; -} - - - -undefined8 proc_7F07D4C0(float *param_1,float *param_2,float *param_3) - -{ - longlong lVar1; - undefined8 uVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - int local_2c; - - fVar4 = *param_1; - fVar7 = (float)pPlayer->positionx; - fVar6 = param_1[2]; - fVar8 = (float)pPlayer->positionz; - if ((*param_2 != *param_3) || (uVar2 = 0xffffffffffffffff, param_2[2] != param_3[2])) { - fVar5 = *param_3 - *param_2; - fVar9 = param_3[2] - param_2[2]; - fVar3 = sqrtf(fVar9 * fVar9 + fVar5 * fVar5); - fVar5 = fVar5 * (1.00000000 / fVar3); - fVar9 = fVar9 * (1.00000000 / fVar3); - fVar3 = (float)pPlayer->positionx; - fVar7 = fVar9 * (fVar6 - fVar8) + (fVar4 - fVar7) * fVar5; - fVar4 = (float)pPlayer->positionz; - lVar1 = proc_7F07CF8C(); - if (lVar1 == 0) { - uVar2 = 0; - } - else { - uVar2 = 1; - pPlayer->ptr_tile_printmanpos = local_2c; - *(float *)&pPlayer->positionx = fVar5 * fVar7 + fVar3; - *(float *)&pPlayer->positionz = fVar9 * fVar7 + fVar4; - } - } - return uVar2; -} - - - -undefined8 proc_7F07D61C(float *param_1,float *param_2,float *param_3) - -{ - longlong lVar1; - float fVar2; - float fStack56; - int iStack52; - undefined4 uStack44; - float fStack40; - float fStack36; - float fStack28; - float fStack24; - float fStack16; - float fStack12; - float fStack4; - - proc_7F08A274(pPlayer->position_data_pointer,&fStack56,&fStack40,&uStack44); - fStack12 = *param_1 - (float)pPlayer->positionx; - fStack4 = param_1[2] - (float)pPlayer->positionz; - if ((param_2[2] - param_1[2]) * (param_2[2] - param_1[2]) + - (*param_2 - *param_1) * (*param_2 - *param_1) <= fStack56 * fStack56) { - if (*param_2 == (float)pPlayer->positionx) { - if (param_2[2] == (float)pPlayer->positionz) { - return 0; - } - fVar2 = param_2[2]; - } - else { - fVar2 = param_2[2]; - } - fStack24 = -(fVar2 - (float)pPlayer->positionz); - fStack16 = *param_2 - (float)pPlayer->positionx; - fVar2 = sqrtf(fStack16 * fStack16 + fStack24 * fStack24); - fStack24 = fStack24 * (1.00000000 / fVar2); - fStack16 = fStack16 * (1.00000000 / fVar2); - fVar2 = fStack16 * fStack4 + fStack12 * fStack24; - fStack24 = fStack24 * fVar2; - fStack16 = fStack16 * fVar2; - fStack36 = fStack24 + (float)pPlayer->positionx; - fStack28 = fStack16 + (float)pPlayer->positionz; - lVar1 = proc_7F07CF8C(); - if (lVar1 != 0) { - pPlayer->ptr_tile_printmanpos = iStack52; - *(float *)&pPlayer->positionx = fStack36; - *(float *)&pPlayer->positionz = fStack28; - return 1; - } - } - else { - if ((param_3[2] - param_1[2]) * (param_3[2] - param_1[2]) + - (*param_3 - *param_1) * (*param_3 - *param_1) <= fStack56 * fStack56) { - if (*param_3 == (float)pPlayer->positionx) { - if (param_3[2] == (float)pPlayer->positionz) { - return 0; - } - fVar2 = param_3[2]; - } - else { - fVar2 = param_3[2]; - } - fStack24 = -(fVar2 - (float)pPlayer->positionz); - fStack16 = *param_3 - (float)pPlayer->positionx; - fVar2 = sqrtf(fStack16 * fStack16 + fStack24 * fStack24); - fStack24 = fStack24 * (1.00000000 / fVar2); - fStack16 = fStack16 * (1.00000000 / fVar2); - fVar2 = fStack16 * fStack4 + fStack12 * fStack24; - fStack24 = fStack24 * fVar2; - fStack16 = fStack16 * fVar2; - fStack36 = fStack24 + (float)pPlayer->positionx; - fStack28 = fStack16 + (float)pPlayer->positionz; - lVar1 = proc_7F07CF8C(); - if (lVar1 != 0) { - pPlayer->ptr_tile_printmanpos = iStack52; - *(float *)&pPlayer->positionx = fStack36; - *(float *)&pPlayer->positionz = fStack28; - return 1; - } - } - } - return 0; -} - - - -undefined4 proc_7F07D954(undefined4 param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -void proc_7F07D960(float *param_1,int param_2) - -{ - short sVar1; - longlong lVar2; - ulonglong uVar3; - int iVar4; - u32 uVar5; - int iVar6; - uint uVar7; - uint uVar8; - int iVar9; - int iVar10; - uint uVar11; - float fVar12; - float fVar13; - float fVar14; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float extraout_f14_06; - float extraout_f14_07; - float extraout_f14_08; - float afStack116 [3]; - float afStack104 [4]; - float afStack88 [3]; - float afStack76 [3]; - float local_40; - int local_3c; - uint local_2c; - float *local_28; - float afStack36 [3]; - float afStack24 [3]; - float local_c [2]; - float local_4; - - *(f32 *)&pPlayer->field_408 = pPlayer->positionx; - pPlayer->field_40C = pPlayer->positiony; - pPlayer->field_410 = pPlayer->positionz; - local_c[0] = *param_1 + (float)pPlayer->positionx; - dword_80036480 = 0; - local_4 = param_1[2] + (float)pPlayer->positionz; - pPlayer->field_29FC = 2; - if (dword_8003644C == NULL) goto LAB_7f07dbf0; - proc_7F03CCB0(dword_8003644C,(int **)&local_28,&local_2c); - if (((in_tank_flag != TRUE) && - (lVar2 = proc_7F03CCD8((float *)&pPlayer->positionx,local_28,local_2c), lVar2 == 0)) && - (lVar2 = proc_7F044718((longlong)(int)&pPlayer->positionx,(longlong)pPlayer->collision_radius, - local_28,local_2c), lVar2 == 0)) { - if (ptr_playerstank != NULL) { - dword_8003644C = NULL; - ptr_playerstank = NULL; - dword_80036454 = 0.00000000; - } - goto LAB_7f07dbf0; - } - iVar10 = *(int *)(dword_8003644C + 4); - iVar9 = *(int *)(*(int *)(*(int *)(iVar10 + 0x14) + 8) + 8); - iVar4 = *(int *)(*(int *)(iVar9 + 0x14) + 4); - iVar9 = *(int *)(*(int *)(iVar9 + 0x18) + 4); - ptr_playerstank = dword_8003644C; - fVar12 = *(float *)(*(int *)(iVar10 + 0x14) + 0x14); - fVar13 = (*(float *)(iVar4 + 0x10) - *(float *)(iVar4 + 0xc)) * fVar12; - if (in_tank_flag == TRUE) { - fVar14 = *(float *)(iVar9 + 0x10); -LAB_7f07dad8: - dword_80036480 = 1; - fVar13 = fVar13 + (fVar14 - *(float *)(iVar9 + 0xc)) * fVar12; - } - else { - local_40 = fVar13; - local_3c = iVar9; - lVar2 = proc_7F03CCD8((float *)&pPlayer->positionx,(float *)(iVar10 + 0x84), - *(uint *)(iVar10 + 0x80)); - fVar13 = local_40; - if (lVar2 != 0) { - fVar12 = *(float *)(*(int *)(iVar10 + 0x14) + 0x14); - fVar14 = *(float *)(local_3c + 0x10); - fVar13 = local_40; - iVar9 = local_3c; - goto LAB_7f07dad8; - } - } - if (((in_tank_flag == FALSE) && (dword_80036454 < fVar13)) && - (dword_80036454 = dword_80036454 + global_timer_delta * 20.00000000, dword_80036454 <= fVar13)) - { - return; - } - dword_80036454 = fVar13; - if (in_tank_flag == TRUE) { - if (DAT_800799b8 == 0) { - dword_80036454 = fVar13 + (1.00000000 - (float)f32_800799c0) * -37.00000000; - } - else { - dword_80036454 = fVar13 + -37.00000000; - } - } -LAB_7f07dbf0: - uVar3 = proc_7F07D234(local_c,afStack24,afStack36); - fVar13 = extraout_f12; - fVar12 = extraout_f14; - if (uVar3 == 0) { - lVar2 = proc_7F07D2B4(local_c,afStack24,afStack36,afStack76,afStack88); - if ((lVar2 < 1) && (-1 < lVar2)) { - fVar13 = extraout_f12_00; - fVar12 = extraout_f14_00; - if (lVar2 == 0) { - proc_7F07D2B4(local_c,afStack76,afStack88,afStack104,afStack116); - fVar13 = extraout_f12_03; - fVar12 = extraout_f14_03; - if ((((param_2 != 0) && - (lVar2 = proc_7F07D4C0(local_c,afStack76,afStack88), fVar13 = extraout_f12_04, - fVar12 = extraout_f14_04, lVar2 < 1)) && - (lVar2 = proc_7F07D4C0(local_c,afStack24,afStack36), fVar13 = extraout_f12_05, - fVar12 = extraout_f14_05, lVar2 < 1)) && - (lVar2 = proc_7F07D61C(local_c,afStack76,afStack88), fVar13 = extraout_f12_06, - fVar12 = extraout_f14_06, lVar2 == 0)) { - proc_7F07D61C(local_c,afStack24,afStack36); - fVar13 = extraout_f12_07; - fVar12 = extraout_f14_07; - } - } - } - else { - fVar13 = extraout_f12_00; - fVar12 = extraout_f14_00; - if ((param_2 != 0) && - (lVar2 = proc_7F07D4C0(local_c,afStack24,afStack36), fVar13 = extraout_f12_01, - fVar12 = extraout_f14_01, lVar2 < 1)) { - proc_7F07D61C(local_c,afStack24,afStack36); - fVar13 = extraout_f12_02; - fVar12 = extraout_f14_02; - } - } - } - lVar2 = proc_7F0B0518(pPlayer->ptr_tile_printmanpos,fVar13,fVar12); - if (lVar2 != 0) { -LAB_7f07de28: - proc_7F07DE9C((int)pPlayer); - if (pPlayer->ptr_tile_printmanpos != 0) { - proc_7F057744((ulonglong)*(byte *)(pPlayer->ptr_tile_printmanpos + 3)); - } - return; - } - iVar9 = 0; - iVar10 = pPlayer->ptr_tile_printmanpos; - sVar1 = *(short *)(iVar10 + 6); - do { - uVar7 = 0; - uVar11 = (int)sVar1 >> 0xc & 0xf; - if (uVar11 != 0) { - iVar6 = 0; - iVar4 = iVar10; - do { - iVar6 += 8; - if ((int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 != 0) { - uVar7 += 1; - } - iVar4 += 8; - } while (iVar6 < (int)(uVar11 << 3)); - } - uVar5 = get_random_value(); - iVar4 = 0; - uVar11 = (int)*(short *)(iVar10 + 6) >> 0xc & 0xf; - if (uVar7 == 0) { - trap(0x1c00); - } - uVar8 = 0; - iVar6 = iVar10; - if (uVar11 != 0) { - do { - iVar4 += 1; - if ((int)(uint)*(ushort *)(iVar6 + 0xe) >> 4 != 0) { - if (uVar8 == uVar5 % uVar7) { - iVar10 = (uint)*(ushort *)(iVar6 + 0xe) * 8 + base_ptr_connection_vals; - break; - } - uVar8 += 1; - } - iVar6 = iVar6 + 8; - } while (iVar4 < (int)uVar11); - } - lVar2 = proc_7F0B0518(iVar10,extraout_f12_08,extraout_f14_08); - if (lVar2 != 0) { - pPlayer->ptr_tile_printmanpos = iVar10; - goto LAB_7f07de28; - } - iVar9 += 1; - if (iVar9 == 5) goto LAB_7f07de28; - sVar1 = *(short *)(iVar10 + 6); - } while( true ); -} - - - -void proc_7F07DE64(int param_1) - -{ - proc_7F03DE94(*(int *)(param_1 + 0xa8),*(short *)(param_1 + 0x2a04)); - *(undefined2 *)(param_1 + 0x2a04) = 0xffff; - return; -} - - - -void proc_7F07DE9C(int param_1) - -{ - int iVar1; - - proc_7F07DE64(param_1); - iVar1 = *(int *)(*(int *)(param_1 + 0xa8) + 4); - if (iVar1 == 0) { - if (*(int *)(param_1 + 0x488) != 0) { - *(ushort *)(param_1 + 0x2a04) = (ushort)*(byte *)(*(int *)(param_1 + 0x488) + 3); - proc_7F03DD9C(*(int *)(param_1 + 0xa8),*(short *)(param_1 + 0x2a04)); - } - } - else { - proc_7F020D94(iVar1); - } - return; -} - - - -void proc_7F07DEFC(void) - -{ - *(float *)&pPlayer->pause_starting_angle = pPlayer->vv_verta; - pPlayer->field_210 = 0.00000000; - pPlayer->field_218 = 0; - return; -} - - - -float proc_7F07DF28(longlong param_1) - -{ - float fVar1; - - if (param_1 == 0) { - pPlayer->field_208 = pPlayer->pause_starting_angle; - *(float *)&pPlayer->pause_target_angle = pPlayer->vv_verta; - } - else { - *(float *)&pPlayer->field_208 = pPlayer->vv_verta; - pPlayer->pause_target_angle = -40.00000000; - } - fVar1 = (float)pPlayer->field_208 - (float)pPlayer->pause_target_angle; - if (fVar1 < 0.00000000) { - fVar1 = -fVar1; - } - if (60.00000000 <= fVar1) { - return ((fVar1 - 60.00000000) * 60.00000000 * 0.50000000) / 60.00000000 + 60.00000000; - } - if (fVar1 <= 0.00000000) { - return 0.00000000; - } - return (fVar1 * 60.00000000) / 60.00000000; -} - - - -void proc_7F07E010(undefined4 param_1) - -{ - f32 in_f12; - - pPlayer->field_210 = 0.00000000; - pPlayer->field_214 = in_f12; - pPlayer->field_218 = 1; - return; -} - - - -void proc_7F07E03C(undefined4 param_1) - -{ - f32 in_f12; - - pPlayer->field_210 = 0.00000000; - pPlayer->field_214 = in_f12; - pPlayer->field_218 = 2; - return; -} - - - -ulonglong proc_7F07E068(void) - -{ - return (ulonglong)(pPlayer->field_218 != 0 && pPlayer->field_218 != 3); -} - - - -void proc_7F07E090(void) - -{ - float fVar1; - float fVar2; - - fVar2 = pPlayer->vv_verta; - if (pPlayer->field_218 == 1) { - *(float *)&pPlayer->field_210 = - (float)pPlayer->field_210 + global_timer_delta * watch_transition_time; - if ((float)pPlayer->field_210 < (float)pPlayer->field_214) { - fVar1 = cosf(((float)pPlayer->field_210 / (float)pPlayer->field_214) * flt_8005506C * - 0.50000000); - pPlayer->vv_verta = - (float)pPlayer->field_208 + - ((float)pPlayer->pause_target_angle - (float)pPlayer->field_208) * - (1.00000000 - fVar1) * 0.50000000; - } - else { - *(f32 *)&pPlayer->vv_verta = pPlayer->pause_target_angle; - pPlayer->field_218 = 3; - } - fVar1 = pPlayer->vv_verta; - } - else { - fVar1 = fVar2; - if (pPlayer->field_218 == 2) { - *(float *)&pPlayer->field_210 = - (float)pPlayer->field_210 + global_timer_delta * watch_transition_time; - if ((float)pPlayer->field_210 < (float)pPlayer->field_214) { - fVar1 = cosf(((float)pPlayer->field_210 / (float)pPlayer->field_214) * flt_80055070 * - 0.50000000); - pPlayer->vv_verta = - (float)pPlayer->pause_target_angle + - ((float)pPlayer->field_208 - (float)pPlayer->pause_target_angle) * - (1.00000000 - fVar1) * 0.50000000; - fVar1 = pPlayer->vv_verta; - } - else { - *(f32 *)&pPlayer->vv_verta = pPlayer->field_208; - pPlayer->field_218 = 0; - fVar1 = pPlayer->vv_verta; - } - } - } - if (fVar1 < -180.00000000) { - pPlayer->vv_verta = fVar1 + 360.00000000; - } - else { - if (180.00000000 <= fVar1) { - pPlayer->vv_verta = fVar1 - 360.00000000; - } - } - if (0 < clock_timer) { - pPlayer->speedverta = pPlayer->vv_verta - fVar2; - fVar2 = pPlayer->speedverta; - if (fVar2 < 0.00000000) { - pPlayer->speedverta = fVar2 + 360.00000000; - fVar2 = pPlayer->speedverta; - } - if (180.00000000 < fVar2) { - pPlayer->speedverta = fVar2 - 360.00000000; - fVar2 = pPlayer->speedverta; - } - fVar1 = flt_80055074; - pPlayer->speedverta = fVar2 / (global_timer_delta + global_timer_delta); - if (pPlayer->speedverta < fVar1) { - pPlayer->speedverta = fVar1; - } - else { - if (flt_80055078 < pPlayer->speedverta) { - pPlayer->speedverta = flt_80055078; - } - } - } - return; -} - - - -float proc_7F07E388(void) - -{ - int iVar1; - - iVar1 = pPlayer->field_218; - if (iVar1 == 1) { - return (float)pPlayer->field_210 / (float)pPlayer->field_214; - } - if (iVar1 != 2) { - if (iVar1 == 3) { - return 1.00000000; - } - return 0.00000000; - } - return 1.00000000 - (float)pPlayer->field_210 / (float)pPlayer->field_214; -} - - - -void trigger_watch_zoom(f32 final,f32 time) - -{ - pPlayer->zoomintime = 0.00000000; - pPlayer->zoomintimemax = time; - pPlayer->zoominfovyold = pPlayer->zoominfovy; - pPlayer->zoominfovynew = final; - return; -} - - - -Player * proc_7F07E438(void) - -{ - if ((float)pPlayer->zoomintimemax <= (float)pPlayer->zoomintime) { - return pPlayer; - } - return pPlayer; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F07E46C(void) - -{ - float in_f0; - float fVar1; - float final; - - proc_7F07E438(); - if (in_f0 != final) { - fVar1 = (float)pPlayer->zoominfovy; - if (final < fVar1) { - trigger_watch_zoom((f32)final,(f32)(((fVar1 - final) * 15.00000000) / 30.00000000)); - } - else { - trigger_watch_zoom((f32)final,(f32)(((final - fVar1) * 15.00000000) / 30.00000000)); - } - } - return; -} - - - -void proc_7F07E504(void) - -{ - proc_7F07E46C(); - return; -} - - - -void zoom_to_watch_on_open(void) - -{ - f32 time; - - time = (f32)(((final - (float)pPlayer->zoominfovy) * 45.00000000) / flt_80055080); - if ((float)time < 0.00000000) { - time = (f32)-(float)time; - } - trigger_watch_zoom((f32)final,time); - return; -} - - - -void zoom_from_watch_on_exit(void) - -{ - f32 time; - - time = (f32)(((60.00000000 - (float)pPlayer->zoominfovy) * 45.00000000) / flt_80055084); - if ((float)time < 0.00000000) { - time = (f32)-(float)time; - } - trigger_watch_zoom(60.00000000,time); - return; -} - - - -ulonglong check_watch_page_transistion_running(void) - -{ - return (ulonglong)((float)pPlayer->zoomintime < (float)pPlayer->zoomintimemax); -} - - - -void proc_7F07E62C(void) - -{ - float fVar1; - float fVar2; - float fVar3; - - fVar1 = (float)pPlayer->zoomintime; - if (fVar1 < (float)pPlayer->zoomintimemax) { - if ((pPlayer->pause_animation_state == 5) || (pPlayer->pause_animation_state == 0xc)) { - *(float *)&pPlayer->zoomintime = fVar1 + (float)dword_80048498; - } - else { - *(float *)&pPlayer->zoomintime = fVar1 + (float)dword_80048498 * watch_transition_time; - } - fVar1 = (float)pPlayer->zoomintimemax; - fVar3 = (float)pPlayer->zoomintime; - if (fVar1 < fVar3) { - *(float *)&pPlayer->zoomintime = fVar1; - fVar3 = (float)pPlayer->zoomintime; - fVar1 = (float)pPlayer->zoomintimemax; - fVar2 = (float)pPlayer->zoominfovyold; - } - else { - fVar2 = (float)pPlayer->zoominfovyold; - } - *(float *)&pPlayer->zoominfovy = - fVar2 + (fVar3 * ((float)pPlayer->zoominfovynew - fVar2)) / fVar1; - } - else { - pPlayer->zoomintime = pPlayer->zoomintimemax; - pPlayer->zoominfovy = pPlayer->zoominfovynew; - } - set_watch_menu_current_size_unused_maybe(pPlayer->zoominfovy); - video_related_1F(pPlayer->zoominfovy); - return; -} - - - -// WARNING: Instruction at (ram,0x7f07e7ac) overlaps instruction at (ram,0x7f07e7a8) -// - -float proc_7F07E740(void) - -{ - int iVar1; - - iVar1 = pPlayer->pause_animation_state; - if (iVar1 == 4) { - return ((45.00000000 - (float)pPlayer->zoomintimemax) + (float)pPlayer->zoomintime) / - 45.00000000; - } - if (iVar1 == 6) { - return ((float)pPlayer->zoomintimemax - (float)pPlayer->zoomintime) / 45.00000000; - } - if ((iVar1 != 5) && (iVar1 != 0xc)) { - return 0.00000000; - } - return 1.00000000; -} - - - -void proc_7F07E7CC(void) - -{ - object_header *objheader; - f32 scale; - float extraout_f12; - float extraout_f14; - - objheader = (object_header *)get_ptr_itemheader_in_hand(1); - set_objuse_flag_compute_grp_nums_set_obj_loaded(objheader); - if (0x32 < objheader->num_table_entries) { - return_null(); - } - proc_7F075FAC((int)&pPlayer->something_with_watch_object_instance,(ushort **)objheader, - &pPlayer->field_2EC); - set_obj_instance_controller_scale((int)&pPlayer->something_with_watch_object_instance,scale); - proc_7F06FCA8((int)&pPlayer->something_with_watch_object_instance,ptr_animation_table + 0x42c8,0, - extraout_f12,0,extraout_f14); - pPlayer->step_in_view_watch_animation = 0; - return; -} - - - -void proc_7F07E8B0(float param_1) - -{ - if (pPlayer->step_in_view_watch_animation == 0) { - *(float *)&pPlayer->field_22C = 20.00000000 / param_1; - } - else { - *(float *)&pPlayer->field_22C = (20.00000000 - (float)pPlayer->field_258) / param_1; - } - pPlayer->step_in_view_watch_animation = 1; - *(float *)&pPlayer->field_228 = param_1; - return; -} - - - -void proc_7F07E910(float param_1) - -{ - if (pPlayer->step_in_view_watch_animation == 3) { - *(float *)&pPlayer->field_22C = 20.00000000 / param_1; - } - else { - *(float *)&pPlayer->field_22C = (float)pPlayer->field_258 / param_1; - } - pPlayer->step_in_view_watch_animation = 2; - *(float *)&pPlayer->field_228 = param_1; - return; -} - - - -void proc_7F07E964(void) - -{ - int iVar1; - float in_f12; - float in_f14; - - iVar1 = pPlayer->step_in_view_watch_animation; - if ((iVar1 != 0) && (iVar1 != 3)) { - if (iVar1 == 1) { - *(float *)&pPlayer->pause_animation_counter = - (float)pPlayer->pause_animation_counter + - global_timer_delta * watch_transition_time * (float)pPlayer->field_22C; - if (20.00000000 < (float)pPlayer->pause_animation_counter) { - pPlayer->pause_animation_counter = 20.00000000; - pPlayer->step_in_view_watch_animation = 3; - } - } - else { - if ((iVar1 == 2) && - (*(float *)&pPlayer->pause_animation_counter = - (float)pPlayer->pause_animation_counter - - global_timer_delta * watch_transition_time * (float)pPlayer->field_22C, - (float)pPlayer->pause_animation_counter < 0.00000000)) { - pPlayer->pause_animation_counter = 0.00000000; - pPlayer->step_in_view_watch_animation = 0; - } - } - proc_7F070090((int)&pPlayer->something_with_watch_object_instance,in_f12,in_f14); - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f07ea94) overlaps instruction at (ram,0x7f07ea90) -// - -float proc_7F07EA78(void) - -{ - int iVar1; - - iVar1 = pPlayer->step_in_view_watch_animation; - if ((iVar1 != 1) && (iVar1 != 2)) { - if (iVar1 != 3) { - return 0.00000000; - } - return 1.00000000; - } - return (float)pPlayer->pause_animation_counter / 20.00000000; -} - - - -void set_BONDdata_paused_flag(int ispaused) - -{ - pPlayer->paused_flag = ispaused; - return; -} - - - -int get_BONDdata_paused_flag(void) - -{ - return pPlayer->paused_flag; -} - - - -void proc_7F07EAF0(void) - -{ - char cVar1; - int iVar2; - ulonglong uVar3; - int iVar4; - int *piVar5; - int iVar6; - char *pcVar7; - - deactivate_alarm_sound_effect(); - proc_7F055EF8(); - iVar6 = 0; - do { - iVar4 = (int)&pPlayer->unknown + iVar6; - iVar2 = *(int *)(iVar4 + 0xa44); - if ((iVar2 != 0) && (uVar3 = music_related_26(iVar2), uVar3 != 0)) { - music_related_28(*(int *)(iVar4 + 0xa44)); - } - iVar6 += 0x3a8; - } while (iVar6 < 0x750); - piVar5 = &dword_80036458; - iVar6 = dword_80036458; - while( true ) { - if ((iVar6 != 0) && (uVar3 = music_related_26(iVar6), uVar3 != 0)) { - music_related_28(*piVar5); - } - piVar5 = piVar5 + 1; - if (piVar5 == &dword_80036460) break; - iVar6 = *piVar5; - } - pcVar7 = (char *)get_ptr_obj_pos_list_current_entry(); - if (pcVar7 == NULL) { - return; - } - cVar1 = *pcVar7; - do { - if (cVar1 == '\x02') { -LAB_7f07ec34: - pcVar7 = *(char **)(pcVar7 + 0x24); - } - else { - if (cVar1 == '\x01') { - iVar6 = *(int *)(pcVar7 + 4); - if (*(char *)(iVar6 + 3) == '\'') { - if (*(int *)(iVar6 + 0xac) == 0) { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - else { - uVar3 = music_related_26(*(int *)(iVar6 + 0xac)); - if (uVar3 == 0) { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - else { - music_related_28(*(int *)(iVar6 + 0xac)); - pcVar7 = *(char **)(pcVar7 + 0x24); - } - } - } - else { - if (*(char *)(iVar6 + 3) == '(') { - if (*(int *)(iVar6 + 0xb0) == 0) { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - else { - uVar3 = music_related_26(*(int *)(iVar6 + 0xb0)); - if (uVar3 != 0) { - music_related_28(*(int *)(iVar6 + 0xb0)); - goto LAB_7f07ec34; - } - pcVar7 = *(char **)(pcVar7 + 0x24); - } - } - else { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - } - } - else { - pcVar7 = *(char **)(pcVar7 + 0x24); - } - } - if (pcVar7 == NULL) { - return; - } - cVar1 = *pcVar7; - } while( true ); -} - - - -// WARNING: Instruction at (ram,0x7f07f738) overlaps instruction at (ram,0x7f07f734) -// - -void probably_look_at_watch(void) - -{ - bool bVar1; - ITEM_IDS IVar3; - int iVar4; - ITEM_IDS IVar5; - ulonglong uVar2; - int iVar6; - undefined4 extraout_a0_lo; - undefined4 extraout_a0_lo_00; - undefined4 extraout_a0_lo_01; - undefined4 extraout_a0_lo_02; - float fVar7; - float fVar8; - float local_14; - - iVar6 = pPlayer->pause_animation_state; - if (iVar6 == 0) goto LAB_7f07f80c; - IVar3 = get_item_in_hand(0); - bVar1 = IVar3 == ITEM_TRIGGER; - if (!bVar1) { - IVar3 = get_item_in_hand(0); - bVar1 = IVar3 == ITEM_WATCHLASER; - } - iVar6 = 0x11; - if (bVar1) { - iVar6 = 0x23; - } - pPlayer->field_1C4 = pPlayer->field_1C4 + clock_timer; - pPlayer->field_1C0 = pPlayer->field_1C0 + 1; - pPlayer->pausing_flag = 0; - if (pPlayer->pause_animation_state == 1) { - pPlayer->pausing_flag = 0; - if (pPlayer->field_1C0 == 1) { - draw_item_in_hand(1,0x54); - } - else { - if (pPlayer->field_1C0 == 2) { - if (bVar1) { - draw_item_in_hand(0,0); - } - } - else { - iVar4 = return_ammo_in_hand(1); - if ((((iVar4 == 0x54) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) && - ((!bVar1 || - ((iVar4 = return_ammo_in_hand(0), iVar4 == 0 && (uVar2 = proc_7F05CEBC(0), uVar2 != 0)) - )))) && (iVar6 <= pPlayer->field_1C4)) { - pPlayer->pause_animation_state = 2; - pPlayer->field_1C0 = 1; - pPlayer->field_1C4 = 0; - } - } - } - } - if (pPlayer->pause_animation_state == 2) { - pPlayer->pausing_flag = 0; - if (pPlayer->field_1C0 == 1) { - set_unset_bitflags(8,0); - set_unset_ammo_on_screen_setting(4,0); - set_flags_in_BONDdata_stationary_intro_cam(1); - proc_7F08A944(1); - set_unset_clock_lock_bits(4,0); - iVar6 = pPlayer->field_218; - if (((iVar6 == 0) || (iVar6 == 2)) || (iVar6 == 3)) { - proc_7F07DF28(1); - proc_7F07E010(extraout_a0_lo); - fVar8 = (float)pPlayer->field_214; - } - else { - fVar8 = (float)pPlayer->field_214; - } - } - else { - fVar8 = (float)pPlayer->field_214; - } - if (fVar8 - (float)pPlayer->field_210 < 30.00000000) { - pPlayer->pause_animation_state = 3; - pPlayer->field_1C0 = 1; - pPlayer->field_1C4 = 0; - proc_7F07E7CC(); - iVar6 = pPlayer->pause_animation_state; - } - else { - iVar6 = pPlayer->pause_animation_state; - } - } - else { - iVar6 = pPlayer->pause_animation_state; - } - if (iVar6 == 3) { - if (pPlayer->field_1C0 == 1) { - iVar6 = pPlayer->field_218; - fVar8 = 40.00000000; - if ((pPlayer->step_in_view_watch_animation != 0) && - (fVar8 = 40.00000000, pPlayer->step_in_view_watch_animation != 3)) { - fVar8 = ((20.00000000 - (float)pPlayer->field_258) * 40.00000000) / 20.00000000; - } - if (((iVar6 == 0) || (iVar6 == 2)) || (local_14 = fVar8, iVar6 == 3)) { - fVar7 = proc_7F07DF28(1); - local_14 = fVar8 - 10.00000000; - if (local_14 <= fVar7) { - local_14 = fVar7; - } - proc_7F07E010(extraout_a0_lo_00); - local_14 = local_14 + 10.00000000; - if (local_14 <= fVar8) { - local_14 = fVar8; - } - } - proc_7F07E8B0(local_14); - iVar6 = pPlayer->step_in_view_watch_animation; - } - else { - iVar6 = pPlayer->step_in_view_watch_animation; - } - if (((iVar6 == 0) || (iVar6 == 3)) && (uVar2 = proc_7F07E068(), uVar2 == 0)) { - pPlayer->pause_animation_state = 4; - pPlayer->field_1C0 = 1; - pPlayer->field_1C4 = 0; - iVar6 = pPlayer->pause_animation_state; - } - else { - pPlayer->pausing_flag = 1; - iVar6 = pPlayer->pause_animation_state; - } - } - if (iVar6 == 4) { - if ((pPlayer->field_1C0 == 1) && (pPlayer->field_21C != 0)) { - play_sfx_a1(ptr_sfx_buf,0xed,NULL); - pPlayer->field_21C = 0; - } - zoom_to_watch_on_open(); - uVar2 = check_watch_page_transistion_running(); - if (uVar2 == 0) { - pPlayer->pause_animation_state = 5; - pPlayer->field_1C0 = 1; - pPlayer->field_1C4 = 0; - pPlayer->field_21C = 1; - iVar6 = pPlayer->pause_animation_state; - } - else { - pPlayer->pausing_flag = 1; - iVar6 = pPlayer->pause_animation_state; - } - } - if (iVar6 == 5) { - if (pPlayer->field_1C0 == 1) { - proc_7F0C1310(); - } - pPlayer->pausing_flag = 1; - iVar6 = pPlayer->pause_animation_state; - } - if (iVar6 == 0xc) { - pPlayer->pausing_flag = 1; - if (2 < pPlayer->field_1C0) { - pPlayer->pause_animation_state = 6; - pPlayer->field_1C0 = 1; - pPlayer->field_1C4 = 0; - play_sfx_a1(ptr_sfx_buf,0xee,NULL); - goto LAB_7f07f1d8; - } - iVar6 = pPlayer->pause_animation_state; - } - else { -LAB_7f07f1d8: - iVar6 = pPlayer->pause_animation_state; - } - if (iVar6 == 6) { - if (pPlayer->field_1C0 == 1) { - zoom_from_watch_on_exit(); - if (bVar1) { - draw_item_in_hand(0,0); - } - else { - proc_7F05DAE4(0); - } - } - uVar2 = check_watch_page_transistion_running(); - if (uVar2 == 0) { - pPlayer->pause_animation_state = 7; - pPlayer->field_1C0 = 1; - pPlayer->field_1C4 = 0; - pPlayer->field_21C = 1; - iVar6 = pPlayer->pause_animation_state; - } - else { - pPlayer->pausing_flag = 1; - iVar6 = pPlayer->pause_animation_state; - } - } - if (iVar6 == 7) { - if (pPlayer->field_1C0 == 1) { - proc_7F07DF28(0); - fVar8 = 40.00000000; - if ((pPlayer->step_in_view_watch_animation != 0) && - (pPlayer->step_in_view_watch_animation != 3)) { - fVar8 = ((float)pPlayer->field_258 * 40.00000000) / 20.00000000; - } - proc_7F07E03C(extraout_a0_lo_01); - proc_7F07E910(fVar8); - } - if ((pPlayer->step_in_view_watch_animation == 0) || (pPlayer->step_in_view_watch_animation == 3) - ) { - pPlayer->pause_animation_state = 8; - pPlayer->field_1C0 = 1; - pPlayer->field_1C4 = 0; - iVar6 = pPlayer->pause_animation_state; - } - else { - pPlayer->pausing_flag = 1; - iVar6 = pPlayer->pause_animation_state; - } - } - if (iVar6 == 8) { - pPlayer->pausing_flag = 0; - if (pPlayer->field_1C0 == 1) { - IVar3 = return_ammo_in_hand(1); - IVar5 = get_item_in_hand(1); - if ((IVar5 != IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { - IVar3 = get_item_in_hand(1); - draw_item_in_hand(1,IVar3); - } - if (bVar1) { - IVar3 = return_ammo_in_hand(0); - IVar5 = get_item_in_hand(0); - if ((IVar5 != IVar3) && (uVar2 = proc_7F05CEBC(0), uVar2 != 0)) { - IVar3 = get_item_in_hand(0); - draw_item_in_hand(0,IVar3); - } - } - } - else { - uVar2 = proc_7F07E068(); - if (uVar2 == 0) { - IVar3 = return_ammo_in_hand(1); - IVar5 = get_item_in_hand(1); - if ((IVar5 == IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { - if (bVar1) { - IVar3 = return_ammo_in_hand(0); - IVar5 = get_item_in_hand(0); - if ((IVar5 != IVar3) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) goto LAB_7f07f548; - } - proc_7F05DAE4(1); - if (bVar1) { - proc_7F05DAE4(0); - } - set_unset_bitflags(8,1); - set_unset_ammo_on_screen_setting(4,1); - proc_7F08A380(1); - proc_7F08A928(1); - set_unset_clock_lock_bits(4,1); - pPlayer->pause_animation_state = 0; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - } - } - } -LAB_7f07f548: - if (pPlayer->pause_animation_state == 9) { - pPlayer->pausing_flag = 0; - IVar3 = get_item_in_hand(1); - IVar5 = return_ammo_in_hand(1); - if ((IVar5 != IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { - if (bVar1) { - IVar3 = get_item_in_hand(0); - IVar5 = return_ammo_in_hand(0); - if ((IVar5 == IVar3) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) goto LAB_7f07f5ec; - } - pPlayer->pause_animation_state = 8; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - } -LAB_7f07f5ec: - if (pPlayer->pause_animation_state == 10) { - pPlayer->pausing_flag = 0; - if (pPlayer->field_1C0 == 1) { - proc_7F07DF28(0); - proc_7F07E03C(extraout_a0_lo_02); - } - IVar3 = get_item_in_hand(1); - IVar5 = return_ammo_in_hand(1); - if ((IVar5 != IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { - if (bVar1) { - IVar3 = get_item_in_hand(0); - IVar5 = return_ammo_in_hand(0); - if ((IVar5 == IVar3) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) goto LAB_7f07f6b8; - } - pPlayer->pause_animation_state = 8; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - } -LAB_7f07f6b8: - if (pPlayer->pause_animation_state == 0xb) { - pPlayer->pausing_flag = 0; - IVar3 = get_item_in_hand(1); - IVar5 = return_ammo_in_hand(1); - if ((IVar5 == IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { - if (bVar1) { - IVar3 = get_item_in_hand(0); - IVar5 = return_ammo_in_hand(0); - if ((IVar5 != IVar3) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) goto LAB_7f07f760; - } - pPlayer->pause_animation_state = 1; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - } -LAB_7f07f760: - if (pPlayer->pause_animation_state == 0xd) { - pPlayer->pausing_flag = 0; - uVar2 = proc_7F05CEBC(1); - if (((((uVar2 != 0) && (uVar2 = proc_7F05CEBC(0), uVar2 != 0)) && - (iVar6 = pPlayer->field_C3C, iVar6 != 5)) && ((iVar6 != 6 && (iVar6 != 7)))) && - (iVar6 != 8)) { - pPlayer->pause_animation_state = 1; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - } - proc_7F07E090(); - proc_7F07E964(); - proc_7F07E62C(); - iVar6 = pPlayer->pause_animation_state; -LAB_7f07f80c: - if (iVar6 == 5) { - set_controls_locked_flag(1); - proc_7F0A6A80(); - } - else { - if (iVar6 == 0xc) { - set_controls_locked_flag(1); - } - else { - set_controls_locked_flag(0); - } - } - return; -} - - - -void set_open_close_solo_watch_menu_to_1(void) - -{ - pPlayer->open_close_solo_watch_menu = 1; - return; -} - - - -void trigger_solo_watch_menu(longlong param_1) - -{ - Player *pPVar1; - ulonglong uVar2; - int *piVar3; - int *piVar4; - undefined4 *puVar5; - int iVar6; - int *piVar7; - float extraout_f12; - float extraout_f12_00; - - iVar6 = pPlayer->pause_animation_state; - if (iVar6 == 0) { - if (param_1 == 0) { - watch_transition_time = watch_transition_time * flt_80055090; - if (flt_8005508C < watch_transition_time) { - watch_transition_time = flt_8005508C; - } - uVar2 = proc_7F05CEBC(1); - if ((((uVar2 == 0) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) || - (iVar6 = pPlayer->field_C3C, iVar6 == 5)) || - (((iVar6 == 6 || (iVar6 == 7)) || (iVar6 == 8)))) { - pPlayer->pause_animation_state = 0xd; - } - else { - pPlayer->pause_animation_state = 1; - } - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - proc_7F07DEFC(); - proc_7F07E504(); - get_BONDdata_watch_armor(); - proc_7F0A2F30((short *)&pPlayer->healthdamagetype,0x2e,1,extraout_f12); - proc_7F0A3330(&pPlayer->field_19F8,(int)&pPlayer[0x30303].field_1338,0x2e); - get_BONDdata_watch_health(); - proc_7F0A2F30((short *)&pPlayer->related_to_health_display,0x2e,-1,extraout_f12_00); - proc_7F0A3330(&pPlayer->field_2128,(int)&pPlayer[0x30303].field_1618,0x2e); - proc_7F0A69A8(); - iVar6 = 0; - piVar4 = &pPlayer->buffer_for_watch_greenbackdrop_DL; - piVar7 = &pPlayer->buffer_for_watch_greenbackdrop_vertices; - do { - piVar3 = (int *)proc_7F0A3AB8((short *)piVar7,(short)iVar6,0,100,0x14,-299,0x136); - piVar4 = proc_7F0A3B40(piVar4,piVar7 + -0x20000000); - iVar6 += 0x7d; - piVar7 = piVar3; - } while (iVar6 != 0x271); - *piVar4 = -0x48000000; - piVar4[1] = 0; - pPVar1 = pPlayer; - piVar7 = &pPlayer->field_2998; - proc_7F0A3AB8((short *)&pPlayer->field_19B8,0,0,0x398,0x14,-0x1cc,0); - puVar5 = proc_7F0A3B40(piVar7,&pPVar1[0x30303].field_1A38); - *puVar5 = 0xb8000000; - puVar5[1] = 0; - } - } - else { - if (iVar6 == 1) { - pPlayer->pause_animation_state = 9; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - else { - if (iVar6 == 2) { - pPlayer->pause_animation_state = 10; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - else { - if (iVar6 == 3) { - pPlayer->pause_animation_state = 7; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - else { - if (iVar6 == 4) { - pPlayer->pause_animation_state = 6; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - else { - if (iVar6 == 5) { - deleteCurrentSelectedFolder(); - proc_7F0C1340(); - pPlayer->pause_animation_state = 0xc; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - pPlayer->open_close_solo_watch_menu = 0; - } - else { - if (iVar6 != 0xc) { - if (iVar6 == 6) { - if (param_1 == 0) { - pPlayer->pause_animation_state = 4; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - proc_7F0A69A8(); - } - } - else { - if (iVar6 == 7) { - if (param_1 == 0) { - pPlayer->pause_animation_state = 3; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - proc_7F0A69A8(); - } - } - else { - if (iVar6 == 8) { - if (param_1 == 0) { - pPlayer->pause_animation_state = 0xb; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - proc_7F0A69A8(); - } - } - else { - if (iVar6 == 9) { - if (param_1 == 0) { - pPlayer->pause_animation_state = 1; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - } - else { - if (iVar6 == 10) { - if (param_1 == 0) { - pPlayer->pause_animation_state = 1; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - } - else { - if (iVar6 == 0xb) { - pPlayer->pause_animation_state = 8; - pPlayer->field_1C0 = 0; - pPlayer->field_1C4 = 0; - } - else { - if (iVar6 == 0xd) { - pPlayer->pause_animation_state = 0; - } - } - } - } - } - } - } - } - } - } - } - } - } - } - return; -} - - - -void proc_7F07FCC4(longlong param_1) - -{ - float fVar1; - - if (param_1 == -1) { - pPlayer->speedstrafe = pPlayer->speedstrafe - global_timer_delta; - fVar1 = pPlayer->speedstrafe; - if (fVar1 < -1.00000000) { - pPlayer->speedstrafe = -1.00000000; - fVar1 = pPlayer->speedstrafe; - } - } - else { - if (param_1 == 1) { - pPlayer->speedstrafe = pPlayer->speedstrafe + global_timer_delta; - fVar1 = pPlayer->speedstrafe; - if (1.00000000 < fVar1) { - pPlayer->speedstrafe = 1.00000000; - fVar1 = pPlayer->speedstrafe; - } - } - else { - fVar1 = pPlayer->speedstrafe; - if (0.00000000 < fVar1) { - pPlayer->speedstrafe = fVar1 - global_timer_delta; - fVar1 = pPlayer->speedstrafe; - if (fVar1 < 0.00000000) { - pPlayer->speedstrafe = 0.00000000; - fVar1 = pPlayer->speedstrafe; - } - } - else { - pPlayer->speedstrafe = fVar1 + global_timer_delta; - fVar1 = pPlayer->speedstrafe; - if (0.00000000 < fVar1) { - pPlayer->speedstrafe = 0.00000000; - fVar1 = pPlayer->speedstrafe; - } - } - } - } - pPlayer->speedsideways = fVar1; - return; -} - - - -void proc_7F07FE1C(longlong param_1) - -{ - f32 fVar1; - float fVar2; - - if (param_1 == 1) { - *(float *)&pPlayer->field_2A4C = (float)pPlayer->field_2A4C + global_timer_delta; - fVar1 = pPlayer->field_2A4C; - if (1.00000000 < (float)fVar1) { - pPlayer->field_2A4C = 1.00000000; - fVar1 = pPlayer->field_2A4C; - } - } - else { - if (param_1 == -1) { - *(float *)&pPlayer->field_2A4C = (float)pPlayer->field_2A4C - global_timer_delta; - fVar1 = pPlayer->field_2A4C; - if ((float)fVar1 < -1.00000000) { - pPlayer->field_2A4C = -1.00000000; - fVar1 = pPlayer->field_2A4C; - } - } - else { - fVar2 = (float)pPlayer->field_2A4C; - if (0.00000000 < fVar2) { - *(float *)&pPlayer->field_2A4C = fVar2 - global_timer_delta; - fVar1 = pPlayer->field_2A4C; - if ((float)fVar1 < 0.00000000) { - pPlayer->field_2A4C = 0.00000000; - fVar1 = pPlayer->field_2A4C; - } - } - else { - *(float *)&pPlayer->field_2A4C = fVar2 + global_timer_delta; - fVar1 = pPlayer->field_2A4C; - if (0.00000000 < (float)fVar1) { - pPlayer->field_2A4C = 0.00000000; - fVar1 = pPlayer->field_2A4C; - } - } - } - } - *(f32 *)&pPlayer->speedforwards = fVar1; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -float proc_7F07FF74(void) - -{ - float in_f0; - float fVar1; - float in_f12; - - if (0.00000000 < in_f12) { - video_related_23(); - fVar1 = (in_f0 * in_f12 * flt_80055094) / 60.00000000; - } - else { - if (in_f12 < 0.00000000) { - video_related_23(); - fVar1 = (in_f0 * -in_f12 * flt_80055098) / 60.00000000; - } - else { - fVar1 = 0.00000000; - } - } - return fVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F080010(void) - -{ - float in_f0; - float fVar1; - float fVar2; - float in_f12; - - video_related_23(); - in_f0 = in_f0 / 60.00000000; - fVar1 = (float)proc_7F07FF74(); - if (0.00000000 < in_f12) { - fVar2 = pPlayer->speedverta; - if (0.00000000 < fVar2) { - pPlayer->speedverta = fVar2 - flt_8005509C * global_timer_delta * in_f0; - } - else { - pPlayer->speedverta = fVar2 - flt_800550A0 * global_timer_delta * in_f0; - } - if (pPlayer->speedverta < fVar1) { - pPlayer->speedverta = fVar1; - } - } - else { - if (in_f12 < 0.00000000) { - fVar2 = pPlayer->speedverta; - if (fVar2 < 0.00000000) { - pPlayer->speedverta = fVar2 + flt_800550A4 * global_timer_delta * in_f0; - } - else { - pPlayer->speedverta = fVar2 + flt_800550A8 * global_timer_delta * in_f0; - } - if (fVar1 < pPlayer->speedverta) { - pPlayer->speedverta = fVar1; - } - } - else { - fVar2 = pPlayer->speedverta; - if (fVar1 < fVar2) { - pPlayer->speedverta = fVar2 - flt_800550AC * global_timer_delta * in_f0; - if (pPlayer->speedverta < fVar1) { - pPlayer->speedverta = fVar1; - } - } - else { - pPlayer->speedverta = fVar2 + flt_800550B0 * global_timer_delta * in_f0; - if (fVar1 < pPlayer->speedverta) { - pPlayer->speedverta = fVar1; - } - } - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -float proc_7F080228(void) - -{ - float in_f0; - float fVar1; - float in_f12; - - if (0.00000000 < in_f12) { - video_related_23(); - fVar1 = (in_f0 * in_f12 * flt_800550B4) / 60.00000000; - } - else { - if (in_f12 < 0.00000000) { - video_related_23(); - fVar1 = (in_f0 * -in_f12 * flt_800550B8) / 60.00000000; - } - else { - fVar1 = 0.00000000; - } - } - return fVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F0802C4(void) - -{ - float in_f0; - float fVar1; - float fVar2; - float in_f12; - - video_related_23(); - in_f0 = in_f0 / 60.00000000; - fVar1 = (float)proc_7F080228(); - if (0.00000000 < in_f12) { - fVar2 = pPlayer->speedtheta; - if (0.00000000 < fVar2) { - pPlayer->speedtheta = fVar2 - flt_800550BC * global_timer_delta * in_f0; - } - else { - pPlayer->speedtheta = fVar2 - flt_800550C0 * global_timer_delta * in_f0; - } - if (pPlayer->speedtheta < fVar1) { - pPlayer->speedtheta = fVar1; - } - } - else { - if (in_f12 < 0.00000000) { - fVar2 = pPlayer->speedtheta; - if (fVar2 < 0.00000000) { - pPlayer->speedtheta = fVar2 + flt_800550C4 * global_timer_delta * in_f0; - } - else { - pPlayer->speedtheta = fVar2 + flt_800550C8 * global_timer_delta * in_f0; - } - if (fVar1 < pPlayer->speedtheta) { - pPlayer->speedtheta = fVar1; - } - } - else { - fVar2 = pPlayer->speedtheta; - if (fVar1 < fVar2) { - pPlayer->speedtheta = fVar2 - flt_800550CC * global_timer_delta * in_f0; - if (pPlayer->speedtheta < fVar1) { - pPlayer->speedtheta = fVar1; - } - } - else { - pPlayer->speedtheta = fVar2 + flt_800550D0 * global_timer_delta * in_f0; - if (fVar1 < pPlayer->speedtheta) { - pPlayer->speedtheta = fVar1; - } - } - } - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f080520) overlaps instruction at (ram,0x7f08051c) -// - -undefined4 * proc_7F0804E0(undefined4 *param_1) - -{ - short sVar1; - short sVar2; - short sVar3; - short sVar4; - int iVar5; - uint uVar6; - uint uVar7; - float fVar8; - - fVar8 = pPlayer->tint_alpha; - iVar5 = *(int *)&pPlayer->field_3D0; - uVar6 = *(uint *)&pPlayer->field_3D4; - uVar7 = *(uint *)&pPlayer->field_3D8; - if ((camera_80036430 != 0) || (camera_80036434 != 0)) { - fVar8 = 1.00000000; - uVar7 = 0; - uVar6 = 0; - iVar5 = 0; - } - if (0.00000000 < fVar8) { - *param_1 = 0xe7000000; - param_1[1] = 0; - param_1[3] = 0; - param_1[2] = 0xba001402; - param_1[5] = 0xc0; - param_1[4] = 0xba000602; - param_1[6] = 0xba001301; - param_1[7] = 0; - param_1[8] = 0xb9000002; - param_1[9] = 0; - param_1[10] = 0xba001001; - param_1[0xb] = 0; - param_1[0xd] = 0x2000; - param_1[0xc] = 0xba000c02; - param_1[0xf] = 0xc00; - param_1[0xe] = 0xba000903; - param_1[0x10] = 0xba000e02; - param_1[0x11] = 0; - param_1[0x12] = 0xb900031d; - param_1[0x13] = 0x504340; - param_1[0x15] = 0xfffdf6fb; - param_1[0x14] = 0xfcffffff; - param_1[0x16] = 0xfa000000; - param_1[0x17] = - iVar5 << 0x18 | (uVar6 & 0xff) << 0x10 | (uVar7 & 0xff) << 8 | - (int)(fVar8 * 255.00000000) & 0xffU; - sVar1 = get_video2_settings_width(); - sVar2 = get_video2_settings_ulx(); - sVar3 = get_video2_settings_uly(); - sVar4 = get_video2_settings_height(); - param_1[0x18] = - ((int)sVar4 + (int)sVar3 & 0x3ffU) << 2 | 0xf6000000 | - ((int)sVar2 + (int)sVar1 & 0x3ffU) << 0xe; - sVar1 = get_video2_settings_ulx(); - sVar2 = get_video2_settings_uly(); - param_1[0x19] = ((int)sVar2 & 0x3ffU) << 2 | ((int)sVar1 & 0x3ffU) << 0xe; - param_1[0x1a] = 0xe7000000; - param_1[0x1b] = 0; - param_1[0x1d] = 0x40; - param_1[0x1c] = 0xba000602; - param_1[0x1f] = 0x80000; - param_1[0x1e] = 0xba001301; - param_1[0x21] = 0x10000; - param_1[0x20] = 0xba001001; - param_1 = param_1 + 0x22; - } - return param_1; -} - - - -void proc_7F0807B0(undefined4 param_1,undefined4 param_2,undefined4 param_3,float param_4) - -{ - *(undefined4 *)&pPlayer->field_3D0 = param_1; - *(undefined4 *)&pPlayer->field_3D4 = param_2; - *(undefined4 *)&pPlayer->field_3D8 = param_3; - pPlayer->tint_alpha = param_4; - return; -} - - - -void proc_7F0807E0(undefined4 param_1,undefined8 param_2,int param_3,int param_4,f32 param_5, - undefined param_6,undefined param_7,undefined param_8,undefined param_9, - undefined param_10,undefined4 param_11) - -{ - float in_f12; - - pPlayer->field_3E0 = 0.00000000; - pPlayer->timer_for_fade = in_f12; - pPlayer->field_3E8 = *(int *)&pPlayer->field_3D0; - pPlayer->field_3EC = param_2._4_4_; - pPlayer->field_3F0 = *(int *)&pPlayer->field_3D4; - pPlayer->field_3F4 = param_3; - pPlayer->field_3F8 = *(int *)&pPlayer->field_3D8; - pPlayer->field_3FC = param_4; - *(float *)&pPlayer->field_400 = pPlayer->tint_alpha; - pPlayer->field_404 = param_5; - return; -} - - - -void fade_to_over_seconds(f32 seconds,f32 fadeto) - -{ - undefined4 in_a0_lo; - undefined unaff_retaddr; - undefined in_stack_00000003; - undefined in_stack_00000007; - undefined4 in_stack_00000008; - undefined in_stack_fffffff7; - undefined in_stack_fffffffb; - - proc_7F0807E0(in_a0_lo,(longlong)*(int *)&pPlayer->field_3D0,*(undefined4 *)&pPlayer->field_3D4, - *(undefined4 *)&pPlayer->field_3D8,fadeto,in_stack_fffffff7,in_stack_fffffffb, - unaff_retaddr,in_stack_00000003,in_stack_00000007,in_stack_00000008); - return; -} - - - -ulonglong check_if_fade_to_black_complete(void) - -{ - return (ulonglong)(pPlayer->timer_for_fade < 0.00000000); -} - - - -void proc_7F0808BC(void) - -{ - float fVar1; - - if (0.00000000 <= pPlayer->timer_for_fade) { - *(float *)&pPlayer->field_3E0 = (float)pPlayer->field_3E0 + global_timer_delta; - if ((float)pPlayer->field_3E0 < pPlayer->timer_for_fade) { - fVar1 = (float)pPlayer->field_3E0 / pPlayer->timer_for_fade; - pPlayer->tint_alpha = - (float)pPlayer->field_400 + - ((float)pPlayer->field_404 - (float)pPlayer->field_400) * fVar1; - *(int *)&pPlayer->field_3D0 = - pPlayer->field_3E8 + (int)((float)(pPlayer->field_3EC - pPlayer->field_3E8) * fVar1); - *(int *)&pPlayer->field_3D4 = - pPlayer->field_3F0 + (int)((float)(pPlayer->field_3F4 - pPlayer->field_3F0) * fVar1); - *(int *)&pPlayer->field_3D8 = - pPlayer->field_3F8 + (int)((float)(pPlayer->field_3FC - pPlayer->field_3F8) * fVar1); - return; - } - *(f32 *)&pPlayer->tint_alpha = pPlayer->field_404; - *(int *)&pPlayer->field_3D0 = pPlayer->field_3EC; - *(int *)&pPlayer->field_3D4 = pPlayer->field_3F4; - *(int *)&pPlayer->field_3D8 = pPlayer->field_3FC; - pPlayer->timer_for_fade = -1.00000000; - } - return; -} - - - -void set_curplayer_fade(f32 timer,f32 finalamount) - -{ - int iVar1; - float fVar2; - - iVar1 = *(int *)(pPlayer->position_data_pointer + 4); - if (iVar1 != 0) { - pPlayer->viewport_alpha = 0.00000000; - pPlayer->bondfadetime60 = timer; - fVar2 = (float)(uint)*(byte *)(iVar1 + 0xc); - if (false) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)&pPlayer->bondfadetimemax = fVar2 / 255.00000000; - pPlayer->bondfadefracold = finalamount; - } - return; -} - - - -void proc_7F080A80(void) - -{ - int iVar1; - float fVar2; - - if (0.00000000 <= (float)pPlayer->bondfadetime60) { - iVar1 = *(int *)(pPlayer->position_data_pointer + 4); - *(float *)&pPlayer->viewport_alpha = (float)pPlayer->viewport_alpha + global_timer_delta; - if ((float)pPlayer->viewport_alpha < (float)pPlayer->bondfadetime60) { - fVar2 = (float)pPlayer->bondfadetimemax + - (((float)pPlayer->bondfadefracold - (float)pPlayer->bondfadetimemax) * - (float)pPlayer->viewport_alpha) / (float)pPlayer->bondfadetime60; - } - else { - fVar2 = (float)pPlayer->bondfadefracold; - pPlayer->bondfadetime60 = -1.00000000; - } - if (iVar1 != 0) { - *(undefined *)(iVar1 + 0xc) = (char)(int)(fVar2 * 255.00000000); - } - } - return; -} - - - -void proc_7F080B34(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) - -{ - u32 uVar1; - u32 uVar2; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float extraout_f14_00; - float fStackX8; - float afStack132 [16]; - float afStack68 [4]; - int iStack52; - int iStack48; - int iStack44; - int iStack36; - int iStack32; - int iStack28; - float fStack4; - - fStack4 = 0.00000000; - if (pPlayer->bonddead == 0) { - proc_7F08E8BC(param_1); - fStackX8 = param_5; - if (param_1 != 0.00000000) { - fStack4 = param_2 / param_1; - fStackX8 = param_5; - } - } - else { - if (pPlayer->field_420 != 0) { - uVar1 = get_random_value(); - uVar2 = get_random_value(); - if (total_player_death_anim == 0) { - trap(0x1c00); - } - proc_7F08EA48(player_death_ani_list[uVar1 % total_player_death_anim] + ptr_animation_table, - (byte)uVar2 & 1,extraout_f12,extraout_f14); - pPlayer->field_420 = 0; - } - proc_7F08EAB8(0.50000000); - fStackX8 = 0.00000000; - } - proc_7F08E240(fStack4,fStackX8); - proc_7F058570((360.00000000 - (float)pPlayer->vv_verta360) * - firstperson_weapon_movement_restrictor,extraout_a0,afStack68); - proc_7F059908(afStack132,extraout_f12_00,extraout_f14_00,0.00000000,0.00000000,0.00000000, - -(float)pPlayer->field_508,-(float)pPlayer->field_50C,-(float)pPlayer->field_510, - (float)pPlayer->field_514); - proc_7F058068(afStack132,afStack68); - proc_7F0585FC((360.00000000 - pPlayer->vv_theta) * flt_800550D8,extraout_a0_00,afStack132); - proc_7F058068(afStack132,afStack68); - pPlayer->field_4C0 = iStack36; - pPlayer->field_4C4 = iStack32; - pPlayer->field_4C8 = iStack28; - pPlayer->field_4CC = iStack52; - pPlayer->field_4D0 = iStack48; - pPlayer->field_4D4 = iStack44; - return; -} - - - -float proc_7F080D60(undefined8 param_1,undefined4 param_2,undefined4 param_3) - -{ - float fVar1; - - if (ptr_playerstank == 0) { - if (pPlayer->field_2A6C == 0) { - fVar1 = (float)proc_7F0B2970(); - } - else { - fVar1 = (float)proc_7F0B2970(); - } - } - else { - fVar1 = (float)proc_7F0B2970(); - fVar1 = fVar1 + dword_80036454; - } - return fVar1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F080DF8(void) - -{ - bool bVar1; - longlong in_v0; - BOOL BVar2; - int iVar3; - longlong in_a0; - float in_a1_lo; - float fVar4; - float fVar5; - float fVar6; - float extraout_f12; - float extraout_f14; - float fVar7; - float local_30; - undefined4 uStack28; - float fStack24; - undefined4 local_14; - int local_10; - float local_c; - int local_4; - - if (in_tank_flag == TRUE) { - fVar4 = proc_7F080D60((longlong)pPlayer->ptr_tile_printmanpos,pPlayer->positionx, - pPlayer->positionz); - fVar5 = flt_800550DC; - *(float *)&pPlayer->clipping_height = fVar4; - iVar3 = 0; - *(float *)&pPlayer->field_6C = (float)pPlayer->field_70 / fVar5; - fVar4 = flt_800550E0; - if (0 < clock_timer) { - do { - iVar3 += 1; - *(float *)&pPlayer->field_6C = - (float)pPlayer->field_6C * fVar4 + (float)pPlayer->clipping_height; - } while (iVar3 < clock_timer); - } - local_4 = 0; - *(float *)&pPlayer->field_70 = (float)pPlayer->field_6C * fVar5; - goto LAB_7f08139c; - } - if (in_a0 == 0) { - local_10 = pPlayer->ptr_tile_printmanpos; - proc_7F08A274(pPlayer->position_data_pointer,&local_14,&fStack24,&uStack28); - local_c = proc_7F080D60((longlong)pPlayer->ptr_tile_printmanpos,pPlayer->positionx, - pPlayer->positionz); - proc_7F089780((int)pPlayer); - proc_7F0B26B8(&local_10,extraout_f12,extraout_f14,(float)pPlayer->positionx, - (float)pPlayer->positionz); - fVar5 = local_c; - if ((-1 < in_v0) && (fVar5 = (float)pPlayer->clipping_height, fVar5 <= local_c)) { - fVar5 = local_c; - } - *(float *)&pPlayer->clipping_height = fVar5; -LAB_7f080fdc: - iVar3 = pPlayer->field_2A6C; - } - else { - *(float *)&pPlayer->clipping_height = (float)pPlayer->clipping_height + in_a1_lo; - fVar5 = proc_7F080D60((longlong)pPlayer->ptr_tile_printmanpos,pPlayer->positionx, - pPlayer->positionz); - if ((float)pPlayer->clipping_height < fVar5) { - *(float *)&pPlayer->clipping_height = fVar5; - goto LAB_7f080fdc; - } - iVar3 = pPlayer->field_2A6C; - } - if (iVar3 == 0) { - fVar5 = (float)pPlayer->field_7C; - } - else { - if ((float)pPlayer->field_70 < (float)pPlayer->clipping_height) { - pPlayer->field_2A6C = 0; - pPlayer->ptr_tile_printmanpos = pPlayer->field_2A70; - pPlayer->field_2A70 = 0; - fVar5 = (float)pPlayer->field_7C; - } - else { - fVar5 = (float)pPlayer->field_7C; - } - } - fVar4 = flt_800550E4; - fVar7 = (float)pPlayer->field_70; - if ((0.00000000 <= fVar5) || (fVar5 = (float)pPlayer->clipping_height, fVar7 < fVar5)) { - iVar3 = 0; - *(float *)&pPlayer->field_6C = fVar7 / flt_800550E4; - fVar5 = flt_800550E8; - if (0 < clock_timer) { - do { - iVar3 += 1; - *(float *)&pPlayer->field_6C = - (float)pPlayer->field_6C * fVar5 + (float)pPlayer->clipping_height; - } while (iVar3 < clock_timer); - } - fVar7 = (float)pPlayer->field_70; - if (fVar7 < (float)pPlayer->clipping_height) { - *(float *)&pPlayer->field_70 = (float)pPlayer->field_6C * fVar4; - fVar7 = (float)pPlayer->field_70; - fVar5 = (float)pPlayer->clipping_height; - goto LAB_7f0810d8; - } - bVar1 = (float)pPlayer->clipping_height < fVar7; - } - else { -LAB_7f0810d8: - bVar1 = fVar5 < fVar7; - } - local_4 = 0; - fVar5 = (float)pPlayer->field_7C; - if (bVar1) { - local_4 = 0; - BVar2 = get_debug_fast_bond_flag(); - if (((BVar2 == FALSE) || (DAT_80079990 != 0.00000000)) || (DAT_80079998 != 0.00000000)) { - local_30 = player_gravity_modifier; - } - else { - local_30 = flt_800550EC; - } - fVar4 = (float)pPlayer->clipping_height; - fVar6 = fVar5 - global_timer_delta * local_30; - fVar7 = fVar7 + global_timer_delta * (fVar5 + fVar6) * 0.50000000; - if (fVar7 < fVar4) { - fVar5 = (float)pPlayer->field_70 - fVar4; - fVar6 = sqrtf((float)pPlayer->field_7C * (float)pPlayer->field_7C + - (((fVar5 + fVar5) * player_view_gravity_modifier) / 60.00000000) * 60.00000000); - fVar6 = -fVar6; - fVar7 = fVar4; - if (pPlayer->field_2A6C != 0) { - pPlayer->field_2A6C = 0; - pPlayer->ptr_tile_printmanpos = pPlayer->field_2A70; - pPlayer->field_2A70 = 0; - fVar7 = fVar4; - } - } - *(float *)&pPlayer->field_70 = fVar7; - *(float *)&pPlayer->field_7C = fVar6; - fVar5 = (float)pPlayer->field_7C; - } - if (fVar5 < 0.00000000) { - if ((float)pPlayer->field_70 <= (float)pPlayer->clipping_height) { - if (fVar5 < flt_800550F8) { - pPlayer->field_8C = 0xf; - pPlayer->field_90 = -90.00000000; -LAB_7f08130c: - pPlayer->field_7C = 0.00000000; - } - else { - if (fVar5 < -5.00000000) { - pPlayer->field_8C = 0xf; - *(float *)&pPlayer->field_90 = - ((-5.00000000 - (float)pPlayer->field_7C) * -90.00000000) / flt_800550FC; - goto LAB_7f08130c; - } - pPlayer->field_7C = 0.00000000; - } - iVar3 = pPlayer->field_2A6C; - } - else { - iVar3 = pPlayer->field_2A6C; - } - } - else { - iVar3 = pPlayer->field_2A6C; - } - if (iVar3 != 0) { - fVar5 = proc_7F089780((int)pPlayer); - fVar4 = (float)proc_7F0B2970(); - if ((float)pPlayer->field_70 + fVar5 < fVar4) { - pPlayer->field_2A6C = 0; - pPlayer->ptr_tile_printmanpos = pPlayer->field_2A70; - pPlayer->field_2A70 = 0; - } - } -LAB_7f08139c: - fVar5 = flt_80055100; - if (0 < clock_timer) { - do { - if (pPlayer->field_8C < 1) { - fVar4 = (float)pPlayer->field_90; - if (fVar4 < 0.00000000) { - *(float *)&pPlayer->field_90 = fVar4 - -4.50000000; - fVar4 = (float)pPlayer->field_90; - if (0.00000000 <= fVar4) { - pPlayer->field_90 = 0.00000000; - fVar4 = (float)pPlayer->field_90; - fVar7 = (float)pPlayer->field_84; - } - else { - fVar7 = (float)pPlayer->field_84; - } - } - else { - fVar7 = (float)pPlayer->field_84; - } - *(float *)&pPlayer->field_84 = fVar7 * fVar5 + fVar4; - } - else { - *(float *)&pPlayer->field_84 = (float)pPlayer->field_84 * fVar5 + (float)pPlayer->field_90; - pPlayer->field_8C = pPlayer->field_8C + -1; - } - local_4 += 1; - } while (local_4 < clock_timer); - } - *(float *)&pPlayer->field_88 = (float)pPlayer->field_84 * flt_80055104; - return; -} - - - -void proc_7F081478(void) - -{ - undefined4 uVar1; - int iVar2; - float fVar3; - float fVar4; - float in_f12; - float in_f14; - float fVar5; - int local_c [3]; - - fVar4 = 30.00000000; - *(float *)&pPlayer->field_29BC = - (float)pPlayer->field_500 * pplayersperm->player_perspective_height + 7.00000000; - fVar3 = (float)pPlayer->field_29BC + - ((float)pPlayer->field_88 + (float)pPlayer->ducking_height_offset) * - pplayersperm->player_perspective_height; - if (fVar3 < 30.00000000) { - fVar5 = (float)pPlayer->field_70; - } - else { - fVar5 = (float)pPlayer->field_70; - fVar4 = fVar3; - } - *(float *)&pPlayer->positiony = fVar5 + fVar4; - if ((((cameramode == UNK5_CAM) || (cameramode == UNK6_CAM)) || (cameramode == POSEND_CAM)) && - (pPlayer->ptr_char_objectinstance != 0)) { - iVar2 = pPlayer->bonddead; - } - else { - *(f32 *)&pPlayer->field_4B4 = pPlayer->positionx; - pPlayer->field_4B8 = pPlayer->positiony; - pPlayer->field_4BC = pPlayer->positionz; - iVar2 = pPlayer->bonddead; - } - if (((iVar2 != 0) && (0.00000000 < (float)pPlayer->field_29C0)) && - (*(float *)&pPlayer->field_29C0 = (float)pPlayer->field_29C0 - 0.25000000, - (float)pPlayer->field_29C0 < 0.00000000)) { - pPlayer->field_29C0 = 0.00000000; - } - if (pPlayer->vv_verta < 0.00000000) { - *(float *)&pPlayer->field_4B8 = - (float)pPlayer->field_4B8 + - -(1.00000000 - (float)pPlayer->vv_cosverta) * (float)pPlayer->field_29C0; - local_c[0] = pPlayer->ptr_tile_printmanpos; - } - else { - local_c[0] = pPlayer->ptr_tile_printmanpos; - } - uVar1 = do_stanlinelog; - do_stanlinelog = 0; - proc_7F0B0BE4(local_c,in_f12,in_f14,(float)pPlayer->positionx,(float)pPlayer->positionz); - do_stanlinelog = uVar1; - pPlayer->room_tile_ptr = local_c[0]; - pPlayer->field_4A4 = pPlayer->field_4B4; - pPlayer->field_4AC = pPlayer->field_4BC; - fVar4 = proc_7F080D60((longlong)pPlayer->room_tile_ptr,pPlayer->field_4B4,pPlayer->field_4BC); - *(float *)&pPlayer->field_4A8 = fVar4; - iVar2 = 0; - *(int *)(pPlayer->position_data_pointer + 0x14) = pPlayer->ptr_tile_printmanpos; - *(f32 *)(pPlayer->position_data_pointer + 8) = pPlayer->positionx; - *(int *)(pPlayer->position_data_pointer + 0xc) = pPlayer->positiony; - *(int *)(pPlayer->position_data_pointer + 0x10) = pPlayer->positionz; - fVar4 = flt_80055108; - if (0 < clock_timer) { - do { - iVar2 += 1; - *(float *)&pPlayer->field_3B8 = (float)pPlayer->field_4B4 + fVar4 * (float)pPlayer->field_3B8; - *(float *)&pPlayer->field_3BC = (float)pPlayer->field_4B8 + fVar4 * (float)pPlayer->field_3BC; - *(float *)&pPlayer->field_3C0 = (float)pPlayer->field_4BC + fVar4 * (float)pPlayer->field_3C0; - } while (iVar2 < clock_timer); - } - fVar4 = flt_8005510C; - *(float *)&pPlayer->field_3C4 = (float)pPlayer->field_3B8 * flt_8005510C; - *(float *)&pPlayer->field_3C8 = (float)pPlayer->field_3BC * fVar4; - *(float *)&pPlayer->field_3CC = (float)pPlayer->field_3C0 * fVar4; - return; -} - - - -void proc_7F081790(void) - -{ - float fVar1; - - fVar1 = pPlayer->vv_verta; - while (fVar1 < -180.00000000) { - pPlayer->vv_verta = fVar1 + 360.00000000; - fVar1 = pPlayer->vv_verta; - } - while (180.00000000 <= fVar1) { - pPlayer->vv_verta = fVar1 - 360.00000000; - fVar1 = pPlayer->vv_verta; - } - if (90.00000000 < fVar1) { - pPlayer->vv_verta = 90.00000000; - } - else { - if (fVar1 < -90.00000000) { - pPlayer->vv_verta = -90.00000000; - } - } - fVar1 = cosf(pPlayer->vv_theta * flt_80055110); - *(float *)&pPlayer->vv_costheta = fVar1; - fVar1 = sinf(pPlayer->vv_theta * flt_80055114); - *(float *)&pPlayer->vv_sintheta = fVar1; - *(float *)&pPlayer->vv_verta360 = pPlayer->vv_verta; - fVar1 = (float)pPlayer->vv_verta360; - if (fVar1 < 0.00000000) { - *(float *)&pPlayer->vv_verta360 = fVar1 + 360.00000000; - fVar1 = (float)pPlayer->vv_verta360; - } - fVar1 = cosf(fVar1 * flt_80055118); - *(float *)&pPlayer->vv_cosverta = fVar1; - fVar1 = sinf((float)pPlayer->vv_verta360 * flt_8005511C); - *(float *)&pPlayer->vv_sinverta = fVar1; - *(float *)&pPlayer->field_498 = -(float)pPlayer->vv_sintheta; - pPlayer->field_49C = 0; - *(f32 *)&pPlayer->field_4A0 = pPlayer->vv_costheta; - return; -} - - - -// WARNING: Instruction at (ram,0x7f0837d8) overlaps instruction at (ram,0x7f0837d4) -// -// WARNING: Unknown calling convention yet parameter storage is locked - -void controller_gameplay_interaction(void) - -{ - bool bVar1; - bool bVar2; - bool bVar3; - bool bVar4; - ushort uVar5; - ushort uVar6; - ushort uVar7; - ushort uVar8; - ushort uVar9; - uint uVar10; - u32 uVar13; - undefined4 uVar14; - ITEM_IDS item; - int iVar15; - ulonglong uVar11; - int iVar16; - longlong lVar12; - ushort uVar17; - char in_a0_lo; - undefined4 extraout_a0_lo; - undefined4 extraout_a0_lo_00; - undefined4 extraout_a0_lo_01; - undefined4 extraout_a0_lo_02; - undefined4 extraout_a0_lo_03; - undefined4 extraout_a0_lo_04; - char in_a1_lo; - undefined4 extraout_a1_lo; - undefined4 extraout_a1_lo_00; - undefined4 extraout_a1_lo_01; - undefined4 extraout_a1_lo_02; - undefined4 extraout_a1_lo_03; - undefined4 uVar18; - undefined4 extraout_a1_lo_04; - ushort in_a2_lo; - ushort in_a3_lo; - ushort uVar19; - uint uVar20; - float extraout_f0; - float extraout_f0_00; - float fVar21; - float vector1; - f32 extraout_f12; - float fVar22; - f32 extraout_f14; - uint uStack380; - undefined4 uStack288; - undefined4 uStack284; - float fStack280; - float fStack276; - float fStack272; - float fStack268; - float fStack260; - u32 uStack256; - float fStack252; - float fStack220; - int iStack212; - int iStack204; - ushort uStack198; - ushort uStack196; - ushort uStack194; - uint uStack192; - uint uStack188; - uint uStack184; - uint uStack180; - int iStack176; - int iStack172; - ushort uStack166; - ushort uStack164; - char cStack162; - char cStack161; - int iStack160; - int iStack156; - int iStack152; - int iStack148; - int iStack144; - int iStack140; - int iStack128; - uint uStack124; - uint uStack120; - int iStack116; - uint uStack112; - uint uStack108; - uint uStack104; - uint uStack100; - float fStack96; - float fStack92; - int iStack88; - int iStack84; - uint uStack80; - uint uStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - uint uStack48; - uint uStack44; - uint uStack40; - uint uStack36; - uint uStack32; - uint uStack28; - uint uStack24; - uint uStack20; - uint uStack16; - uint uStack12; - int iStack8; - uint uStack4; - - uStack4 = 0; - iStack8 = 0; - uStack12 = 0; - uStack16 = 0; - uStack20 = 0; - uStack24 = 0; - uStack28 = 0; - uStack32 = 0; - uStack36 = 0; - uStack40 = 0; - uStack44 = 0; - uStack48 = 0; - uStack76 = 0; - uStack80 = 0; - iStack84 = 0; - iStack88 = 0; - uStack100 = 0; - uStack104 = 0; - uStack108 = 0; - uStack112 = 0; - iStack116 = 0; - uStack120 = 0; - fStack52 = 0.00000000; - fStack56 = 0.00000000; - fStack60 = 0.00000000; - fStack64 = 0.00000000; - fStack68 = 0.00000000; - fStack72 = 0.00000000; - fStack92 = 0.00000000; - fStack96 = 0.00000000; - uVar13 = get_cur_player_look_vertical_inverted(); - uStack124 = (uint)(uVar13 == 0); - iStack128 = 0; - if (in_a0_lo < -5) { - iStack156 = (int)in_a0_lo + 5; - } - else { - iStack156 = 0; - if ('\x05' < in_a0_lo) { - iStack156 = (int)in_a0_lo + -5; - } - } - if (in_a1_lo < -5) { - iStack160 = (int)in_a1_lo + 5; - } - else { - iStack160 = 0; - if ('\x05' < in_a1_lo) { - iStack160 = (int)in_a1_lo + -5; - } - } - iStack140 = (int)in_a0_lo; - iStack144 = (int)in_a1_lo; - iStack152 = iStack160; - iStack148 = iStack156; - if (((pPlayer->bonddead == 0) && - (iStack152 = iStack160, iStack148 = iStack156, camera_80036424 < 1)) && - ((((pPlayer->pause_animation_state != 5 && ((in_a2_lo & ~in_a3_lo & 0x1000) != 0)) || - ((iStack152 = iStack160, iStack148 = iStack156, pPlayer->pause_animation_state == 5 && - (iStack152 = iStack160, iStack148 = iStack156, pPlayer->open_close_solo_watch_menu != 0)))) - && (iStack152 = iStack160, iStack148 = iStack156, uVar11 = get_num_players(), uVar11 == 1)))) - { - trigger_solo_watch_menu(0); - } - if (((pPlayer->pause_animation_state == 0) && (pPlayer->bonddead == 0)) && - ((uVar11 = get_num_players(), uVar11 == 1 || ((stop_play_flag == 0 && (is_gameover_flag == 0))) - ))) { - iVar16 = cur_player_get_control_type(); - if ((iVar16 == 6) || - (((iVar16 = cur_player_get_control_type(), iVar16 == 7 || - (iVar16 = cur_player_get_control_type(), iVar16 == 5)) || - (iVar16 = cur_player_get_control_type(), iVar16 == 4)))) { - uVar19 = in_a2_lo & ~in_a3_lo; - uVar13 = get_cur_playernum(); - uVar11 = get_num_players(); - cStack161 = get_cur_controller_horz_stick_pos - ((char)(((int)uVar11 + uVar13) * 0x1000000 >> 0x18)); - uVar13 = get_cur_playernum(); - uVar11 = get_num_players(); - cStack162 = get_cur_controller_vert_stick_pos - ((char)(((int)uVar11 + uVar13) * 0x1000000 >> 0x18)); - uVar13 = get_cur_playernum(); - uVar11 = get_num_players(); - uVar11 = get_controller_buttons_held - ((char)(((int)uVar11 + uVar13) * 0x1000000 >> 0x18),0xffff); - uStack164 = (ushort)uVar11; - uStack166 = pPlayer->field_3B6; - if (cStack161 < -5) { - iStack172 = (int)cStack161 + 5; - } - else { - iStack172 = 0; - if ('\x05' < cStack161) { - iStack172 = (int)cStack161 + -5; - } - } - iStack176 = (int)cStack162 + 5; - if ((-6 < cStack162) && (iStack176 = (int)cStack162 + -5, cStack162 < '\x06')) { - iStack176 = 0; - } - iVar16 = cur_player_get_control_type(); - if ((iVar16 == 4) || (iVar16 = cur_player_get_control_type(), iVar16 == 6)) { - iStack156 = iStack172; - iStack152 = iStack176; - } - else { - if (in_tank_flag == TRUE) { - if (pPlayer->insightaimmode == 0) { - iStack148 = iStack172; - } - else { - iStack156 = iStack172; - } - } - else { - iStack156 = iStack172; - } - iStack160 = iStack176; - } - iVar16 = cur_player_get_control_type(); - if ((iVar16 == 4) || (iVar16 = cur_player_get_control_type(), iVar16 == 5)) { - uVar5 = uStack164 & 0x2000; - uVar17 = uStack164 & ~uStack166; - uVar6 = in_a2_lo & 0x2000; - uVar7 = uVar17; - uVar8 = uVar19; - } - else { - uVar5 = in_a2_lo & 0x2000; - uVar17 = uStack164 & ~uStack166; - uVar6 = uStack164 & 0x2000; - uVar7 = uVar19; - uVar8 = uVar17; - } - uVar9 = uStack164; - uStack180 = (uint)(uVar6 != 0); - uStack184 = (uint)((uVar8 & 0x2000) != 0); - uStack188 = (uint)(uVar5 != 0); - uStack192 = (uint)((uVar7 & 0x2000) != 0); - iVar16 = get_controls_locked_flag(); - if ((iVar16 == 0) && (lVar12 = proc_7F0C24BC(), lVar12 != 0)) { - iVar16 = cur_player_get_aim_control(); - if (iVar16 == 0) { - pPlayer->insightaimmode = uStack188; - } - else { - if (uStack192 != 0) { - pPlayer->insightaimmode = (uint)(pPlayer->insightaimmode == 0); - } - } - iStack88 = pPlayer->insightaimmode; - bVar4 = (uVar19 & 0x4000) != 0; - uStack120 = (uint)(iStack88 == 0); - bVar1 = bVar4; - if (!bVar4) { - bVar1 = (uVar17 & 0x4000) != 0; - } - uStack16 = (uint)bVar1; - uStack32 = (uint)(iStack88 == 0); - uStack24 = 1; - if (((iStack88 != 0) && ('<' < in_a1_lo)) && - (fStack60 = (float)((int)in_a1_lo + -0x3c) / 10.00000000, 1.00000000 < fStack60)) { - fStack60 = 1.00000000; - } - if (((iStack88 != 0) && (in_a1_lo < -0x3c)) && - (fStack64 = (float)(-0x3c - (int)in_a1_lo) / 10.00000000, 1.00000000 < fStack64)) { - fStack64 = 1.00000000; - } - if (((iStack88 != 0) && (in_a0_lo < -0x3c)) && - (fStack68 = (float)(-0x3c - (int)in_a0_lo) / 10.00000000, 1.00000000 < fStack68)) { - fStack68 = 1.00000000; - } - if (((iStack88 != 0) && ('<' < in_a0_lo)) && - (fStack72 = (float)((int)in_a0_lo + -0x3c) / 10.00000000, 1.00000000 < fStack72)) { - fStack72 = 1.00000000; - } - bVar1 = (in_a2_lo & 0x8000) != 0; - if ((bVar1) || (bVar2 = (uVar9 & 0x8000) != 0, bVar2)) { - bVar2 = uStack184 != 0; - } - uStack76 = (uint)bVar2; - bVar2 = (uVar19 & 0x8000) != 0; - if ((bVar2) || (bVar3 = (uVar17 & 0x8000) != 0, bVar3)) { - bVar3 = uStack180 == 0; - } - uStack80 = (uint)bVar3; - iStack84 = iStack88; - uStack28 = uStack32; - uStack20 = uStack32; - iStack8 = iStack88; - uStack4 = uStack120; - item = get_item_in_hand(0); - iVar16 = check_special_attributes(item,0x8000); - if ((iVar16 != 0) && (pPlayer->insightaimmode != 0)) { - if (iStack176 < 0) { - fStack92 = (float)-iStack176 / 70.00000000; - if (1.00000000 < fStack92) { - fStack92 = 2.00000000; - } - else { - fStack92 = fStack92 + fStack92; - } - } - if (0 < iStack176) { - fStack96 = (float)iStack176 / 70.00000000; - if (1.00000000 < fStack96) { - fStack96 = 2.00000000; - } - else { - fStack96 = fStack96 + fStack96; - } - } - } - item = get_item_in_hand(0); - iVar16 = check_special_attributes(item,0x8000); - uStack100 = (uint)(iVar16 == 0); - if ((iVar16 == 0) && (bVar3 = pPlayer->insightaimmode != 0, uStack100 = (uint)bVar3, bVar3)) - { - uStack100 = (uint)(cStack162 < -0x1e); - } - item = get_item_in_hand(0); - iVar16 = check_special_attributes(item,0x8000); - uStack104 = (uint)(iVar16 == 0); - if ((iVar16 == 0) && (bVar3 = pPlayer->insightaimmode != 0, uStack104 = (uint)bVar3, bVar3)) - { - uStack104 = (uint)(cStack162 < '\x1f') ^ 1; - } - if ((((((bVar1) && (bVar4)) || (((in_a2_lo & 0x4000) != 0 && (bVar2)))) || - (((uVar9 & 0x8000) != 0 && ((uVar17 & 0x4000) != 0)))) || - (((uVar9 & 0x4000) != 0 && ((uVar17 & 0x8000) != 0)))) && - (item = get_item_in_hand(0), item == ITEM_REMOTEMINE)) { - iStack116 = 1; - uStack76 = 0; - uStack80 = 0; - uStack16 = 0; - } - if ((in_tank_flag == TRUE) && (pPlayer->insightaimmode != 0)) { - item = get_item_in_hand(0); - if (item == ITEM_TANKSHELLS) { - iStack140 = 0; - if (iStack156 == 0) { - iStack156 = iStack148; - } - } - else { - if (iStack156 == 0) { - if (0.00000000 < fStack68) { - fStack52 = fStack68; - } - if (0.00000000 < fStack72) { - fStack56 = fStack72; - } - } - } - fStack68 = 0.00000000; - fStack72 = 0.00000000; - } - } - uStack12 = (uint)(uStack180 != 0); - if (uStack180 != 0) { - bVar4 = pPlayer->pause_animation_state == 0; - if (bVar4) { - bVar4 = (in_a2_lo & 0x8000) == 0; - uStack12 = (uint)bVar4; - if (!bVar4) goto LAB_7f0822a8; - bVar4 = (uVar9 & 0x8000) == 0; - } - uStack12 = (uint)bVar4; - } -LAB_7f0822a8: - iStack128 = 1; - pPlayer->field_3B6 = uStack164; - } - else { - iVar16 = cur_player_get_control_type(); - if ((iVar16 == 2) || (iVar16 = cur_player_get_control_type(), iVar16 == 3)) { - uStack194 = 0x8000; - uStack196 = 0x2000; - uStack198 = 0x30; - } - else { - uStack194 = 0x2000; - uStack196 = 0x30; - uStack198 = 0x8000; - } - iVar16 = get_controls_locked_flag(); - if ((iVar16 == 0) && (lVar12 = proc_7F0C24BC(), lVar12 != 0)) { - uVar19 = in_a2_lo & ~in_a3_lo; - iVar16 = cur_player_get_aim_control(); - if (iVar16 == 0) { - pPlayer->insightaimmode = (uint)((in_a2_lo & uStack196) != 0); - } - else { - if ((uVar19 & uStack196) != 0) { - pPlayer->insightaimmode = (uint)(pPlayer->insightaimmode == 0); - } - } - iStack8 = pPlayer->insightaimmode; - bVar4 = (uVar19 & 0x4000) != 0; - uStack120 = (uint)(iStack8 == 0); - uStack16 = (uint)bVar4; - uStack4 = uStack120; - iVar16 = cur_player_get_control_type(); - if ((iVar16 == 1) || (iVar16 = cur_player_get_control_type(), iVar16 == 3)) { - bVar1 = (in_a2_lo & 0x202) != 0; - uVar20 = (uint)bVar1; - if (bVar1) { - if (pPlayer->insightaimmode == 0) { - if (in_tank_flag == TRUE) { - fStack68 = 1.00000000; - } - else { - uStack44 = 1; - } - } - else { - fStack52 = 1.00000000; - } - } - bVar2 = (in_a2_lo & 0x101) != 0; - uStack380 = (uint)bVar2; - iStack88 = pPlayer->insightaimmode; - if (bVar2) { - if (iStack88 == 0) { - if (in_tank_flag == TRUE) { - fStack72 = 1.00000000; - } - else { - uStack48 = 1; - } - } - else { - fStack56 = 1.00000000; - } - } - bVar2 = iStack88 == 0; - bVar3 = bVar2; - if (bVar2) { - bVar3 = (in_a2_lo & 0x808) != 0; - } - uStack36 = (uint)bVar3; - bVar3 = bVar2; - if (bVar2) { - bVar3 = (in_a2_lo & 0x404) != 0; - } - uStack40 = (uint)bVar3; - uStack32 = (uint)bVar2; - uVar10 = uStack32; - if (in_tank_flag != TRUE) { - uStack28 = (uint)bVar2; - uVar20 = (uint)bVar1; - uVar10 = uStack24; - } - } - else { - bVar1 = (in_a2_lo & 0x202) != 0; - uVar20 = (uint)bVar1; - if (bVar1) { - fStack52 = 1.00000000; - } - bVar2 = (in_a2_lo & 0x101) != 0; - if (bVar2) { - fStack56 = 1.00000000; - } - iStack88 = pPlayer->insightaimmode; - bVar3 = iStack88 == 0; - uStack44 = (uint)(bVar3 && bVar1); - uStack380 = (uint)bVar2; - uStack48 = (uint)(bVar3 && bVar2); - uStack20 = (uint)bVar3; - if ((iStack88 == 0) && ((in_a2_lo & 0x808) != 0)) { - fStack60 = 1.00000000; - } - if ((iStack88 == 0) && ((in_a2_lo & 0x404) != 0)) { - fStack64 = 1.00000000; - } - uStack28 = (uint)bVar3; - uVar10 = uStack24; - } - uStack24 = uVar10; - if ((iStack88 == 0) || (in_a1_lo < '=')) { - if ((iStack88 != 0) && - ((in_a1_lo < -0x3c && - (fStack64 = (float)(-0x3c - (int)in_a1_lo) / 10.00000000, 1.00000000 < fStack64)))) { - fStack64 = 1.00000000; - } - } - else { - fStack60 = (float)((int)in_a1_lo + -0x3c) / 10.00000000; - if (1.00000000 < fStack60) { - fStack60 = 1.00000000; - } - } - if (((iStack88 != 0) && (in_a0_lo < -0x3c)) && - (fStack68 = (float)(-0x3c - (int)in_a0_lo) / 10.00000000, 1.00000000 < fStack68)) { - fStack68 = 1.00000000; - } - if (((iStack88 != 0) && ('<' < in_a0_lo)) && - (fStack72 = (float)((int)in_a0_lo + -0x3c) / 10.00000000, 1.00000000 < fStack72)) { - fStack72 = 1.00000000; - } - bVar1 = (in_a2_lo & uStack198) != 0; - bVar2 = bVar1; - if (bVar1) { - bVar2 = (uVar19 & uStack194) != 0; - } - uStack76 = (uint)bVar2; - bVar3 = (uVar19 & uStack198) != 0; - bVar2 = bVar3; - if (bVar3) { - bVar2 = (in_a2_lo & uStack194) == 0; - } - uStack80 = (uint)bVar2; - iStack84 = iStack88; - item = get_item_in_hand(0); - iVar16 = check_special_attributes(item,0x8000); - if (iVar16 != 0) { - if (pPlayer->insightaimmode != 0) { - if ((in_a2_lo & 0x404) != 0) { - fStack92 = 1.00000000; - } - if ((in_a2_lo & 0x808) != 0) { - fStack96 = 1.00000000; - } - } - } - item = get_item_in_hand(0); - iVar16 = check_special_attributes(item,0x8000); - uStack100 = (uint)(iVar16 == 0); - if ((iVar16 == 0) && (bVar2 = pPlayer->insightaimmode != 0, uStack100 = (uint)bVar2, bVar2)) - { - uStack100 = (uint)((in_a2_lo & 0x404) != 0); - } - item = get_item_in_hand(0); - iVar16 = check_special_attributes(item,0x8000); - uStack104 = (uint)(iVar16 == 0); - if ((iVar16 == 0) && (bVar2 = pPlayer->insightaimmode != 0, uStack104 = (uint)bVar2, bVar2)) - { - uStack104 = (uint)((~in_a2_lo & 0x808) != 0); - } - bVar2 = pPlayer->insightaimmode != 0; - uStack112 = (uint)bVar2; - uStack108 = uStack112; - if (bVar2) { - uStack112 = uStack380; - uStack108 = uVar20; - } - if ((((bVar1) && (bVar4)) || (((in_a2_lo & 0x4000) != 0 && (bVar3)))) && - (item = get_item_in_hand(0), item == ITEM_REMOTEMINE)) { - iStack116 = 1; - uStack76 = 0; - uStack80 = 0; - uStack16 = 0; - } - if ((in_tank_flag == TRUE) && (pPlayer->insightaimmode != 0)) { - item = get_item_in_hand(0); - if (item == ITEM_TANKSHELLS) { - iStack140 = 0; - uStack24 = 1; - } - else { - if ((fStack52 == 0.00000000) && (fStack56 == 0.00000000)) { - if (0.00000000 < fStack68) { - fStack52 = fStack68; - } - if (0.00000000 < fStack72) { - fStack56 = fStack72; - } - } - } - fStack68 = 0.00000000; - fStack72 = 0.00000000; - } - } - bVar4 = (in_a2_lo & uStack194) != 0; - uStack12 = (uint)bVar4; - if ((bVar4) && (bVar4 = pPlayer->pause_animation_state == 0, uStack12 = (uint)bVar4, bVar4)) { - uStack12 = (uint)((in_a2_lo & uStack198) == 0); - } - iVar16 = cur_player_get_control_type(); - if ((iVar16 == 1) || (iVar16 = cur_player_get_control_type(), iVar16 == 3)) { - iStack128 = 1; - } - } - } - pPlayer->field_D0 = 0; - if (uStack16 != 0) { - if (in_tank_flag == TRUE) { - iStack204 = *(int *)(ptr_playerstank + 4); - uVar14 = get_ammo_count_for_weapon(0x20); - *(undefined4 *)(iStack204 + 0xd8) = uVar14; - add_ammo_to_weapon(0x20,0); - proc_7F08C61C(0x20); - item = get_item_in_hand(0); - if (item == ITEM_TANKSHELLS) { - iVar16 = get_ammo_in_hands_magazine(0); - *(int *)(iStack204 + 0xd8) = *(int *)(iStack204 + 0xd8) + iVar16; - autoadvance_on_deplete_all_ammo(); - } - *(undefined4 *)(iStack204 + 0xc4) = 0; - in_tank_flag = FALSE; - pPlayer->speedsideways = 0.00000000; - pPlayer->speedforwards = 0.00000000; - pPlayer->speedtheta = 0.00000000; - iVar16 = 0; - do { - iVar15 = iVar16 + 4; - *(undefined4 *)((int)&pPlayer->boost_factor_x + iVar16) = 0; - iVar16 = iVar15; - } while (iVar15 != 0xc); - pPlayer->crouchposition = 2; - } - else { - if ((((ptr_playerstank == NULL) || (*ptr_playerstank != '\x01')) || - (*(char *)(*(int *)(ptr_playerstank + 4) + 3) != '-')) || (dword_80036480 == 0)) { - pPlayer->field_D0 = 1; - } - else { - iStack212 = *(int *)(ptr_playerstank + 4); - add_item_to_inventory(ITEM_TANKSHELLS); - add_ammo_to_weapon(0x20,*(int *)(iStack212 + 0xd8)); - dword_8003646C = *(float *)(iStack212 + 200); - *(undefined4 *)(iStack212 + 0xd8) = 0; - dword_80036470 = dword_8003646C / flt_80055120; - dword_80036484 = *(undefined4 *)(iStack212 + 0xcc); - dword_80036474 = *(float *)(iStack212 + 0xcc); - dword_80036478 = dword_80036474 / flt_80055124; - dword_8003647C = 0; - dword_80036464 = *(undefined4 *)(iStack212 + 0xdc); - dword_80036460 = 0.00000000; - in_tank_flag = TRUE; - DAT_800799b8 = 0; - pPlayer->speedsideways = 0.00000000; - pPlayer->speedforwards = 0.00000000; - pPlayer->speedtheta = 0.00000000; - pPlayer->crouchposition = 1; - DAT_800799bc = 0; - f32_800799c0 = 1.00000000; - copy_bond_azimuth = pPlayer->vv_theta; - copy_bond_inclination_angle1 = pPlayer->vv_verta; - copy_bond_posx = pPlayer->positionx; - copy_bond_posy = pPlayer->positiony; - copy_bond_posz = pPlayer->positionz; - dword_80036490 = 0; - proc_7F07C7B4(); - } - } - } - fVar22 = fStack64; - if (uStack124 == 0) { - iStack144 = -(int)in_a1_lo; - iStack152 = -iStack152; - fStack64 = fStack60; - fStack60 = fVar22; - } - uVar11 = check_if_bond_is_invincible(); - if ((uVar11 != 0) && (uVar11 = get_num_players(), uVar11 == 1)) { - uStack12 = 0; - } - proc_7F067420(uStack12); - iVar16 = get_invisible_to_guards_flag(); - if ((iVar16 != 0) && - ((lVar12 = get_hands_firing_status(0), lVar12 != 0 || - (lVar12 = get_hands_firing_status(1), lVar12 != 0)))) { - fStack220 = 0.00000000; - lVar12 = get_hands_firing_status(0); - if ((lVar12 != 0) && (fVar22 = extraout_f0, proc_7F067174(0), 0.00000000 < fVar22)) { - proc_7F067174(0); - fStack220 = fVar22; - } - lVar12 = get_hands_firing_status(1); - if ((lVar12 != 0) && (fVar22 = extraout_f0_00, proc_7F067174(1), fStack220 < fVar22)) { - proc_7F067174(1); - fStack220 = fVar22; - } - proc_7F022EEC(); - } - set_unset_bitflags(2,iStack84); - if (0.00000000 < fStack92) { - proc_7F05DDA4(fStack92); - } - if (0.00000000 < fStack96) { - proc_7F05DE94(fStack96); - } - if (pPlayer->pause_animation_state == 0) { - if (iStack88 != 0) { - proc_7F05DD38(); - } - proc_7F07E46C(); - proc_7F07E62C(); - } - if (in_tank_flag == TRUE) { - dword_80036488 = 0.00000000; - if (DAT_800799b8 == 2) { - if (0.00000000 < fStack56) { - dword_80036488 = global_timer_delta * fStack56 * flt_80055128 + 0.00000000; - } - else { - if (0.00000000 < fStack52) { - dword_80036488 = 0.00000000 - global_timer_delta * fStack52 * flt_8005512C; - } - else { - if (uStack24 != 0) { - fVar22 = 1.00000000; - if ((float)iStack156 / 70.00000000 <= 1.00000000) { - fVar22 = (float)iStack156 / 70.00000000; - } - fVar21 = -1.00000000; - if (-1.00000000 <= fVar22) { - fVar21 = fVar22; - } - dword_80036488 = flt_80055130 * fVar21 * global_timer_delta + 0.00000000; - } - } - } - fVar22 = 1.00000000; - if (pPlayer->insightaimmode == 0) { - if (uStack20 == 0) { - fVar21 = fVar22; - if ((uStack36 == 0) && (fVar21 = 0.00000000, uStack40 != 0)) { - fVar21 = -1.00000000; - } - } - else { - fVar21 = (float)iStack160 / 70.00000000; - } - if (1.00000000 < fVar21) { - vector1 = 1.00000000; - } - else { - vector1 = -1.00000000; - if (-1.00000000 <= fVar21) { - vector1 = fVar21; - } - } - vector1 = vector1 * 15.00000000; - if (0 < dword_80036490) { - fVar22 = 4.00000000; - dword_80036490 -= clock_timer; - vector1 = vector1 * 0.50000000; - } - fVar21 = pPlayer->speedforwards; - if (vector1 != fVar21) { - if (fVar21 < vector1) { - pPlayer->speedforwards = - fVar21 + (((((vector1 - fVar21) * 0.25000000) / 15.00000000 + 0.50000000) * fVar22 - * 10.00000000) / 60.00000000) * global_timer_delta; - if (vector1 < pPlayer->speedforwards) { - pPlayer->speedforwards = vector1; - } - } - else { - if ((vector1 < fVar21) && - (pPlayer->speedforwards = - fVar21 + (((((fVar21 - vector1) * 0.25000000) / 15.00000000 + 0.50000000) * - fVar22 * -10.00000000) / 60.00000000) * global_timer_delta, - pPlayer->speedforwards < vector1)) { - pPlayer->speedforwards = vector1; - } - } - } - } - } - } - else { - if (uStack44 == 0) { - if (uStack48 == 0) { - proc_7F07FCC4(0); - } - else { - proc_7F07FCC4(1); - } - } - else { - proc_7F07FCC4(-1); - } - if (uStack24 != 0) { - pPlayer->speedsideways = (float)iStack156 / 70.00000000; - } - if (uStack36 == 0) { - if (uStack40 == 0) { - proc_7F07FE1C(0); - } - else { - proc_7F07FE1C(-1); - } - } - else { - proc_7F07FE1C(1); - pPlayer->speedmaxtime60 = pPlayer->speedmaxtime60 + clock_timer; - } - if (uStack20 != 0) { - pPlayer->speedforwards = (float)iStack160 / 70.00000000; - if (iStack160 < 0x3d) { - pPlayer->speedmaxtime60 = 0; - } - else { - pPlayer->speedmaxtime60 = pPlayer->speedmaxtime60 + clock_timer; - } - } - fVar22 = pPlayer->speedforwards; - if (1.00000000 < fVar22) { - pPlayer->speedforwards = 1.00000000; - fVar22 = pPlayer->speedforwards; - } - if (fVar22 < -1.00000000) { - pPlayer->speedforwards = -1.00000000; - } - fVar22 = pPlayer->speedsideways; - if (1.00000000 < fVar22) { - pPlayer->speedsideways = 1.00000000; - fVar22 = pPlayer->speedsideways; - } - if (fVar22 < -1.00000000) { - pPlayer->speedsideways = -1.00000000; - } - pPlayer->speedforwards = pPlayer->speedforwards * flt_80055134; - pPlayer->speedforwards = pPlayer->speedforwards * (float)pPlayer->speedboost; - if ((uStack20 == 0) && (uStack36 == 0)) { - pPlayer->speedmaxtime60 = 0; - } - if (uStack108 == 0) { - if (uStack112 == 0) { - proc_7F079988(0); - } - else { - proc_7F079988(1); - } - } - else { - proc_7F079988(-1); - } - if (uStack100 == 0) { - if (uStack104 != 0) { - change_crouch_position(2); - } - } - else { - change_crouch_position(-2); - } - } - if (pPlayer->speedmaxtime60 < 0xb4) { - fVar22 = (float)pPlayer->speedboost; - if (1.00000000 < fVar22) { - *(float *)&pPlayer->speedboost = fVar22 - FLOAT_8005513c * global_timer_delta; - fVar22 = (float)pPlayer->speedboost; - } - if (fVar22 < 1.00000000) { - pPlayer->speedboost = 1.00000000; - goto LAB_7f083468; - } - iVar16 = pPlayer->pause_animation_state; - } - else { - fVar22 = (float)pPlayer->speedboost; - if (fVar22 < 1.25000000) { - *(float *)&pPlayer->speedboost = fVar22 + flt_80055138 * global_timer_delta; - fVar22 = (float)pPlayer->speedboost; - } - if (1.25000000 < fVar22) { - pPlayer->speedboost = 1.25000000; -LAB_7f083468: - iVar16 = pPlayer->pause_animation_state; - } - else { - iVar16 = pPlayer->pause_animation_state; - } - } - if (iVar16 != 0) goto LAB_7f083b40; - fVar21 = -4.00000000; - if (pPlayer->lookaheadcentreenabled != 0) { - uStack256 = pPlayer->ptr_tile_printmanpos; - fStack260 = 300.00000000; - fStack252 = -4.00000000; - proc_7F08A274(pPlayer->position_data_pointer,&uStack288,&fStack280,&uStack284); - fStack276 = (float)pPlayer->field_498 * 300.00000000 + (float)pPlayer->positionx; - fStack272 = (float)pPlayer->positiony; - fStack268 = (float)pPlayer->field_4A0 * 300.00000000 + (float)pPlayer->positionz; - proc_7F0B1CC4(); - iVar16 = proc_7F0B0E24(&uStack256,extraout_f12,extraout_f14,pPlayer->positionx); - if (iVar16 == 0) { - proc_7F026298((float *)&pPlayer->positionx,(float *)&pPlayer->field_498,&fStack276); - fVar22 = fStack276 - (float)pPlayer->positionx; - fVar21 = fStack268 - (float)pPlayer->positionz; - fStack260 = sqrtf(fVar22 * fVar22 + fVar21 * fVar21); - fVar22 = proc_7F080D60((longlong)(int)uStack256,fStack276,fStack268); - } - else { - fVar22 = proc_7F080D60((longlong)(int)uStack256,fStack276,fStack268); - } - fVar21 = fStack252; - fStack272 = fVar22; - if (((0.00000000 < fStack260) && - (vector1 = fVar22 - (float)pPlayer->clipping_height, fVar21 = fStack252, fStack272 = fVar22, - -300.00000000 < vector1)) && - (fVar21 = fStack252, fStack272 = fVar22, vector1 < 500.00000000)) { - fStack272 = fVar22; - fVar22 = convert_angle_using_inverse((f32)vector1,(f32)fStack260); - fVar21 = (fVar22 * 360.00000000) / flt_80055140 + -4.00000000; - if (180.00000000 <= fVar21) { - fVar21 = fVar21 - 360.00000000; - } - if (0.00000000 < fVar21) { - fVar21 = fVar21 * flt_80055144; - } - } - } - if (((pPlayer->movecentrerelease != 0) && (iStack160 < 0x28)) && (-0x28 < iStack160)) { - pPlayer->movecentrerelease = 0; - } - if (in_tank_flag == FALSE) { - if (fStack60 <= 0.00000000) { - if (0.00000000 < fStack64) { - pPlayer->field_104 = 0; - goto LAB_7f0836e8; - } - if (iStack128 != 0) { - pPlayer->automovecentre = 0; - goto LAB_7f083830; - } - if (pPlayer->automovecentreenabled == 0) { - if (pPlayer->fastmovecentreenabled == 0) { - pPlayer->field_10C = 0; - } - else { - if ((uStack20 != 0) && ((0x3c < iStack160 || (iStack160 < -0x3c)))) { - fVar22 = pPlayer->vv_verta; - if (fVar22 <= fVar21 + 5.00000000) { - if (fVar21 + -10.00000000 <= fVar22) { - pPlayer->field_10C = 0; - goto LAB_7f083838; - } - iVar16 = pPlayer->movecentrerelease; - } - else { - iVar16 = pPlayer->movecentrerelease; - } - if (iVar16 != 0) { - pPlayer->field_10C = 0; - goto LAB_7f083838; - } - pPlayer->field_104 = 1; - } -LAB_7f083830: - pPlayer->field_10C = 0; - } - } - else { - if (uStack20 == 0) { -LAB_7f08374c: - iVar16 = pPlayer->automovecentre; - } - else { - if ((0x3c < iStack160) || (iStack160 < -0x3c)) { - pPlayer->automovecentre = 1; - goto LAB_7f08374c; - } - iVar16 = pPlayer->automovecentre; - } - if (iVar16 == 0) { - pPlayer->field_10C = 0; - } - else { - fVar22 = pPlayer->vv_verta; - if (fVar22 <= fVar21 + 5.00000000) { - if (fVar21 + -10.00000000 <= fVar22) { - pPlayer->field_10C = 0; - goto LAB_7f083838; - } - iVar16 = pPlayer->movecentrerelease; - } - else { - iVar16 = pPlayer->movecentrerelease; - } - if (iVar16 == 0) { - pPlayer->field_104 = 1; - goto LAB_7f083830; - } - pPlayer->field_10C = 0; - } - } - } - else { - pPlayer->field_104 = 0; -LAB_7f0836e8: - pPlayer->field_10C = 1; - pPlayer->automovecentre = 0; - } -LAB_7f083838: - iVar16 = pPlayer->field_104; - } - else { - iVar16 = pPlayer->field_104; - } - if (iVar16 == 0) { - if (uStack32 == 0) { - if (fStack60 <= 0.00000000) { - if (0.00000000 < fStack64) { - fVar22 = (float)proc_7F080010(); - if ((uStack20 != 0) && ((0x3c < iStack160 || (iStack160 < 0x3c)))) { - pPlayer->movecentrerelease = 1; - } - } - else { - fVar22 = (float)proc_7F080010(); - } - } - else { - fVar22 = (float)proc_7F080010(); - if ((uStack20 != 0) && ((0x3c < iStack160 || (iStack160 < 0x3c)))) { - pPlayer->movecentrerelease = 1; - } - } - } - else { - video_related_23(); - fVar21 = (float)iStack152 / 70.00000000; - if (1.00000000 < fVar21) { - fVar21 = 1.00000000; - bVar4 = true; - } - else { - if (fVar21 < -1.00000000) { - fVar21 = -1.00000000; - bVar4 = false; - } - else { - bVar4 = 0.00000000 <= fVar21; - } - } - vector1 = fVar21; - if (!bVar4) { - vector1 = -fVar21; - } - pPlayer->speedverta = -(fVar21 * vector1) * (fVar22 / 60.00000000); - } - pPlayer->vv_verta = pPlayer->vv_verta + pPlayer->speedverta * global_timer_delta * 3.50000000; - if (((in_tank_flag == TRUE) && (DAT_800799b8 == 2)) && - (fVar22 = -20.00000000, pPlayer->vv_verta < -20.00000000)) { - pPlayer->vv_verta = -20.00000000; - } - } - else { - if (in_tank_flag == FALSE) { - fVar22 = (pPlayer->speedverta * pPlayer->speedverta * 0.50000000) / flt_80055148; - if (fVar21 + fVar22 < pPlayer->vv_verta) { - fStack252 = fVar21; - proc_7F080010(); - } - else { - if (pPlayer->vv_verta < fVar21 - fVar22) { - fStack252 = fVar21; - proc_7F080010(); - } - else { - fStack252 = fVar21; - proc_7F080010(); - } - } - fVar22 = pPlayer->vv_verta; - fVar21 = pPlayer->speedverta * global_timer_delta; - fVar21 = fVar22 + fVar21 + fVar21; - if ((fVar22 <= fStack252) || (fVar21 <= fStack252)) { - if (fVar22 < fStack252) { - if (fVar21 < fStack252) { - pPlayer->vv_verta = fVar21; - goto LAB_7f083b40; - } - pPlayer->vv_verta = fStack252; - } - else { - pPlayer->vv_verta = fStack252; - } - pPlayer->speedverta = 0.00000000; - if (pPlayer->field_10C == 0) { - pPlayer->field_104 = 0; - } - } - else { - pPlayer->vv_verta = fVar21; - } - } - } -LAB_7f083b40: - if (uStack28 == 0) { - if (0.00000000 < fStack68) { - proc_7F0802C4(); - } - else { - if (0.00000000 < fStack72) { - proc_7F0802C4(); - } - else { - proc_7F0802C4(); - } - } - } - else { - video_related_23(); - fVar21 = (float)iStack148 / 70.00000000; - if (1.00000000 < fVar21) { - vector1 = 1.00000000; - } - else { - vector1 = -1.00000000; - if (-1.00000000 <= fVar21) { - vector1 = fVar21; - } - } - fVar21 = vector1; - if (vector1 < 0.00000000) { - fVar21 = -vector1; - } - pPlayer->speedtheta = vector1 * fVar21 * (fVar22 / 60.00000000); - } - if (in_tank_flag == TRUE) { - if (DAT_800799b8 == 2) { - fVar22 = 0.00000000; - if (uStack28 == 0) { - if (0.00000000 < fStack68) { - fVar22 = (float)proc_7F080228(); - fVar22 = fVar22 * flt_80055150; - } - else { - if (0.00000000 < fStack72) { - fVar22 = (float)proc_7F080228(); - fVar22 = fVar22 * flt_80055154; - } - } - } - else { - fVar22 = pPlayer->speedtheta * flt_8005514C; - } - if (0 < clock_timer) { - iVar16 = 1; - dword_80036460 = flt_80055158 * dword_80036460; - if (1 < clock_timer) { - do { - iVar16 += 1; - dword_80036460 = flt_80055158 * (dword_80036460 + fVar22); - } while (iVar16 < clock_timer); - } - dword_80036460 = dword_80036460 + fVar22; - } - pPlayer->speedtheta = dword_80036460 * flt_8005515C; - } - else { - pPlayer->speedtheta = 0.00000000; - } - } - if (iStack116 != 0) { - pPlayer->when_detonating_mines_is_0 = 0; - pPlayer->right_weapon_current_animation = 0; - trigger_remote_mine_detonation(); - } - uVar11 = get_num_players(); - if ((longlong)uVar11 < 2) { - bVar4 = true; - } - else { - iVar16 = get_scenario(); - if (iVar16 == 2) { - uVar11 = proc_7F08CF80(); - if (uVar11 == 0) { - bVar4 = true; - } - else { - bVar4 = false; - } - } - else { - bVar4 = true; - } - } - if (bVar4) { - if (uStack76 != 0) { - backstep_through_inventory(); - } - if (uStack80 != 0) { - advance_through_inventory(); - } - } - if (uStack4 == 0) { - if (iStack8 != 0) { - pPlayer->controlstyle = 2; - } - } - else { - pPlayer->controlstyle = 0; - } - lVar12 = (longlong)pPlayer->controlstyle; - if (lVar12 == 0) { - proc_7F067AA4(0); - uVar14 = extraout_a0_lo; - uVar18 = extraout_a1_lo; - if (((uStack120 != 0) && - (redirect_get_BONDdata_autoaim_x(), uVar14 = extraout_a0_lo_00, uVar18 = extraout_a1_lo_00, - lVar12 != 0)) && - (uVar14 = extraout_a0_lo_00, uVar18 = extraout_a1_lo_00, pPlayer->autoxaimtime != 0)) { - item = get_item_in_hand(0); - iVar16 = check_special_attributes(item,8); - lVar12 = (longlong)iVar16; - uVar14 = extraout_a0_lo_01; - uVar18 = extraout_a1_lo_01; - } - if (((uStack120 != 0) && - (redirect_get_BONDdata_autoaim(), uVar14 = extraout_a0_lo_02, uVar18 = extraout_a1_lo_02, - lVar12 != 0)) && - (uVar14 = extraout_a0_lo_02, uVar18 = extraout_a1_lo_02, pPlayer->autoyaimtime != 0)) { - item = get_item_in_hand(0); - check_special_attributes(item,8); - uVar14 = extraout_a0_lo_03; - uVar18 = extraout_a1_lo_03; - } - proc_7F067F58(uVar14,uVar18); - } - else { - if (lVar12 == 2) { - proc_7F067AA4(0); - proc_7F067FBC(extraout_a0_lo_04,extraout_a1_lo_04); - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F083FC8(void) - -{ - dword dVar1; - dword dVar2; - int iVar3; - int iVar4; - int iVar5; - float fVar6; - f32 fVar7; - - if (pPlayer->damageshowtime < 0) { - iVar4 = pPlayer->healthshowtime; - goto LAB_7f084204; - } - if (pPlayer->damageshowtime == 0) { - set_unset_ammo_on_screen_setting(8,0); - set_unset_bitflags(0x10,0); - set_flags_in_BONDdata_stationary_intro_cam(4); - proc_7F08A944(4); - set_unset_clock_lock_bits(8,0); - fVar7 = get_BONDdata_watch_health(); - pPlayer->damagetype = (int)((float)fVar7 * 8.00000000); - if (7 < pPlayer->damagetype) { - pPlayer->damagetype = 7; - goto LAB_7f08406c; - } - iVar4 = pPlayer->damagetype; - } - else { -LAB_7f08406c: - iVar4 = pPlayer->damagetype; - } - iVar3 = pPlayer->damageshowtime; - if ((int)dword_80036634[iVar4 * 0xb + 2] < iVar3) { - if (iVar3 <= (int)dword_80036634[iVar4 * 0xb + 6]) { - iVar5 = pPlayer->bonddead; - goto LAB_7f0840c0; - } - pPlayer->damageshowtime = -1; - proc_7F0807B0(0xff,0xff,0xff,0); - if (pPlayer->bonddead != 0) { - iVar4 = pPlayer->healthshowtime; - goto LAB_7f084204; - } - set_unset_ammo_on_screen_setting(8,1); - set_unset_bitflags(0x10,1); - proc_7F08A380(4); - proc_7F08A928(4); - set_unset_clock_lock_bits(8,1); - } - else { - iVar5 = pPlayer->bonddead; -LAB_7f0840c0: - if (iVar5 == 0) { - dVar1 = dword_80036634[iVar4 * 0xb + 4]; - if (iVar3 < (int)dVar1) { - iVar4 = pPlayer->pause_animation_state; - } - else { - if ((int)dword_80036634[iVar4 * 0xb + 6] < iVar3) { - iVar4 = pPlayer->pause_animation_state; - } - else { - dVar2 = dword_80036634[iVar4 * 0xb + 5]; - iVar3 -= dVar1; - iVar5 = dword_80036634[iVar4 * 0xb + 6] - dVar1; - if (iVar3 < (int)dVar2) { - fVar6 = ((float)dword_80036634[iVar4 * 0xb + 7] * (float)iVar3) / (float)dVar2; - } - else { - fVar6 = ((float)dword_80036634[iVar4 * 0xb + 7] * (float)(iVar5 - iVar3)) / - (float)(iVar5 - dVar2); - } - proc_7F0807B0(dword_80036634[iVar4 * 0xb + 8],dword_80036634[iVar4 * 0xb + 9], - dword_80036634[iVar4 * 0xb + 10],fVar6); - iVar3 = pPlayer->damageshowtime; - iVar4 = pPlayer->pause_animation_state; - } - } - } - else { - iVar4 = pPlayer->pause_animation_state; - } - if (iVar4 == 0) { - pPlayer->damageshowtime = iVar3 + clock_timer; - } - else { - pPlayer->damageshowtime = iVar3 + dword_80048498; - } - } - iVar4 = pPlayer->healthshowtime; -LAB_7f084204: - if (-1 < iVar4) { - if (iVar4 == 0) { - fVar7 = get_BONDdata_watch_health(); - pPlayer->field_29B8 = (int)((float)fVar7 * 8.00000000); - if (pPlayer->field_29B8 < 8) { - iVar4 = pPlayer->bonddead; - } - else { - pPlayer->field_29B8 = 7; - iVar4 = pPlayer->bonddead; - } - } - else { - iVar4 = pPlayer->bonddead; - } - if (iVar4 == 0) { - iVar4 = pPlayer->field_29B8; - iVar3 = pPlayer->healthshowtime; - if ((iVar3 < (int)(&dword_80036794)[iVar4 * 3]) || ((int)(&DAT_80036798)[iVar4 * 3] < iVar3)) - { - if ((iVar3 < (int)(&dword_80036794)[iVar4 * 3]) || - ((int)null_ARRAY_8003679c[iVar4 * 3] < iVar3)) { - pPlayer->healthshowtime = -1; - } - else { - pPlayer->apparenthealth = pPlayer->bondhealth; - pPlayer->apparentarmour = pPlayer->bondarmour; - pPlayer->healthshowtime = pPlayer->healthshowtime + clock_timer; - } - } - else { - pPlayer->apparenthealth = pPlayer->oldhealth; - pPlayer->apparentarmour = pPlayer->oldarmour; - pPlayer->healthshowtime = pPlayer->healthshowtime + clock_timer; - } - } - else { - pPlayer->healthshowtime = -1; - } - } - return; -} - - - -void proc_7F084360(void) - -{ - u32 uVar1; - uint uVar2; - float fVar3; - float local_c; - float local_8; - float local_4; - - DAT_800799a0 += 1; - if (((dword_80036444 != 0) && (disable_player_pickups_flag == 0)) && (DAT_8007999c < global_timer) - ) { - local_c = *(float *)(pPlayer->position_data_pointer + 8); - local_8 = *(float *)(pPlayer->position_data_pointer + 0xc); - local_4 = *(float *)(pPlayer->position_data_pointer + 0x10); - uVar2 = DAT_800799a0 & 3; - if (((int)DAT_800799a0 < 0) && (uVar2 != 0)) { - uVar2 -= 4; - } - if (uVar2 == 0) { - uVar1 = get_random_value(); - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - local_c = local_c + fVar3 * 0.00000000 * 150.00000000 + 250.00000000; - } - else { - if (uVar2 == 1) { - uVar1 = get_random_value(); - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - local_c = local_c - (fVar3 * 0.00000000 * 150.00000000 + 250.00000000); - } - else { - if (uVar2 == 2) { - uVar1 = get_random_value(); - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - local_4 = local_4 + fVar3 * 0.00000000 * 150.00000000 + 250.00000000; - } - else { - if (uVar2 == 3) { - uVar1 = get_random_value(); - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - local_4 = local_4 - (fVar3 * 0.00000000 * 150.00000000 + 250.00000000); - } - } - } - } - uVar1 = get_random_value(); - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - local_8 = local_8 + (fVar3 * 0.00000000 * 200.00000000 - 100.00000000); - proc_7F09C250(0,&local_c,*(int *)(pPlayer->position_data_pointer + 0x14),0x12,0,0, - (char *)(pPlayer->position_data_pointer + 0x2c),0); - uVar1 = get_random_value(); - DAT_8007999c = uVar1 % 0xf + global_timer + 0xf; - } - return; -} - - - -void MoveBond(char param_1,char param_2,ushort param_3,ushort param_4) - -{ - short sVar1; - bool bVar2; - ITEM_IDS IVar5; - longlong lVar3; - ulonglong uVar4; - int iVar6; - int **ppiVar7; - BOOL BVar8; - longlong lVar9; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - longlong extraout_a0_02; - undefined8 extraout_a0_03; - longlong extraout_a0_04; - longlong extraout_a0_05; - longlong extraout_a0_06; - longlong extraout_a0_07; - undefined8 extraout_a0_08; - float *pfVar10; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - longlong extraout_a1_03; - longlong extraout_a1_04; - longlong extraout_a1_05; - undefined8 extraout_a1_06; - undefined8 extraout_a1_07; - undefined8 extraout_a1_08; - undefined8 extraout_a1_09; - undefined8 extraout_a1_10; - undefined8 uVar11; - char *pcVar12; - int iVar13; - float fVar14; - float __x; - float ducking_offset; - float fVar15; - float z; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float extraout_f14_06; - tile_rgb tStack860; - uint uStack856; - float *apfStack852 [2]; - int iStack844; - undefined4 uStack840; - undefined4 uStack836; - undefined4 uStack832; - int iStack828; - int iStack824; - undefined4 uStack820; - float fStack816; - short *psStack812; - uint auStack804 [8]; - float afStack772 [12]; - float fStack724; - float fStack720; - float fStack716; - float afStack712 [16]; - int iStack648; - int iStack640; - float fStack628; - float fStack592; - float fStack588; - int iStack584; - int aiStack580 [3]; - float fStack568; - float fStack564; - float fStack560; - float fStack556; - float fStack552; - float fStack544; - float fStack540; - float fStack536; - float fStack532; - float fStack528; - float fStack520; - undefined auStack516 [76]; - int iStack440; - undefined4 *puStack436; - float fStack432; - float fStack416; - float fStack412; - float fStack408; - float fStack372; - float fStack356; - float fStack352; - float fStack348; - float fStack344; - float fStack340; - float afStack336 [17]; - float *pfStack268; - float afStack260 [16]; - float fStack196; - undefined4 uStack192; - float fStack188; - int iStack184; - float fStack180; - float fStack176; - float fStack172; - float fStack156; - float fStack152; - float fStack148; - float fStack132; - float fStack128; - float afStack124 [2]; - float fStack116; - float afStack112 [2]; - float fStack104; - float fStack100; - float fStack96; - undefined4 *puStack92; - float fStack80; - float fStack72; - float afStack68 [2]; - float fStack60; - float fStack48; - float fStack44; - float fStack40; - undefined4 uStack36; - float fStack32; - float fStack24; - float fStack12; - undefined4 uStack8; - float fStack4; - - fStack12 = dword_800367F4; - fStack4 = dword_800367FC; - uStack8 = dword_800367F8; - uStack36 = 0; - fStack32 = 0.00000000; - fStack40 = 0.00000000; - if (('c' < param_1) || (param_1 < -99)) { - return_null(); - } - if (('c' < param_2) || (param_2 < -99)) { - return_null(); - } - iVar13 = camera_80036424 + 1; - if ((0 < camera_80036424) && (camera_80036424 = iVar13, 3 < iVar13)) { - camera_80036424 = 0; - pPlayer->lock_hand_model[1] = 0; - pPlayer->lock_hand_model[0] = 0; - IVar5 = get_item_in_hand(1); - remove_hands_item(1,IVar5); - IVar5 = get_item_in_hand(0); - remove_hands_item(0,IVar5); - } - proc_7F079A50(0); - proc_7F083FC8(); - proc_7F084360(); - controller_gameplay_interaction(); - iVar13 = get_controls_locked_flag(); - if (iVar13 != 0) { - proc_7F07EAF0(); - } - if (pPlayer->pause_animation_state != 0) { - probably_look_at_watch(); - } - if (in_tank_flag == FALSE) { - iVar13 = proc_7F0799F0(); - if (iVar13 == 0) { - pPlayer->speedforwards = pPlayer->speedforwards * 0.50000000; - pPlayer->speedsideways = pPlayer->speedsideways * 0.50000000; - } - __x = (float)pPlayer->boost_factor_x; - if (__x == 0.00000000) { - if ((float)pPlayer->boost_factor_z == 0.00000000) goto LAB_7f08497c; - fVar14 = (float)pPlayer->boost_factor_z; - } - else { - fVar14 = (float)pPlayer->boost_factor_z; - } - fStack44 = fVar14 * (float)pPlayer->vv_costheta + -__x * (float)pPlayer->vv_sintheta; - fStack48 = -__x * (float)pPlayer->vv_costheta - fVar14 * (float)pPlayer->vv_sintheta; - fVar14 = sqrtf(fVar14 * fVar14 + __x * __x); - iVar13 = 0; - pPlayer->speedforwards = pPlayer->speedforwards + fStack44; - pPlayer->speedsideways = pPlayer->speedsideways + fStack48; - __x = flt_8005516C; - do { - iVar6 = (int)&pPlayer->unknown + iVar13; - fVar15 = *(float *)(iVar6 + 0x180); - if (fVar15 != 0.00000000) { - if (0.00000000 < fVar15) { - *(float *)(iVar6 + 0x180) = fVar15 - (__x * global_timer_delta * fVar15) / fVar14; - iVar6 = (int)&pPlayer->unknown + iVar13; - if (*(float *)(iVar6 + 0x180) < 0.00000000) { - *(undefined4 *)(iVar6 + 0x180) = 0; - } - } - else { - if (fVar15 < 0.00000000) { - *(float *)(iVar6 + 0x180) = fVar15 - (__x * global_timer_delta * fVar15) / fVar14; - iVar6 = (int)&pPlayer->unknown + iVar13; - if (0.00000000 < *(float *)(iVar6 + 0x180)) { - *(undefined4 *)(iVar6 + 0x180) = 0; - } - } - } - } - iVar13 += 4; - } while (iVar13 != 0xc); - } -LAB_7f08497c: - if (in_tank_flag == TRUE) { - fStack96 = pPlayer->speedtheta * global_timer_delta * flt_80055174 * 3.50000000; - puStack92 = (undefined4 *)((float)dword_80036464 + fStack96); - if ((float)flt_80055170 <= (float)puStack92) { - puStack92 = (undefined4 *)((float)puStack92 - (float)flt_80055170); - } - if ((float)puStack92 < 0.00000000) { - puStack92 = (undefined4 *)((float)puStack92 + (float)flt_80055170); - iVar13 = pPlayer->ptr_tile_printmanpos; - } - else { - iVar13 = pPlayer->ptr_tile_printmanpos; - } - iVar13 = proc_7F07CAC8((float *)&pPlayer->positionx,iVar13,(float)flt_80055170,puStack92, - afStack68); - if (iVar13 == 0) { - fStack156 = -1.00000000; - fStack180 = -1.00000000; - proc_7F0B28B0(afStack112,afStack124); - fStack128 = afStack124[0] - afStack112[0]; - fStack132 = fStack116 - fStack104; - __x = sqrtf(fStack128 * fStack128 + fStack132 * fStack132); - fStack148 = fStack132 * (1.00000000 / __x); - fStack152 = -(fStack128 * (1.00000000 / __x)); - __x = ((float)pPlayer->positionz - fStack72) * fStack152 + - ((float)pPlayer->positionx - fStack80) * fStack148; - if (__x < 0.00000000) { - fStack148 = -fStack148; - fStack152 = -fStack152; - __x = -__x; - } - fVar14 = ((float)pPlayer->positionz - fStack104) * fStack152 + - ((float)pPlayer->positionx - afStack112[0]) * fStack148; - if (fVar14 < __x) { - fStack156 = __x - fVar14; - } - fStack128 = fStack80 - afStack68[0]; - fStack132 = fStack72 - fStack60; - __x = sqrtf(fStack128 * fStack128 + fStack132 * fStack132); - fStack172 = fStack132 * (1.00000000 / __x); - fStack176 = -(fStack128 * (1.00000000 / __x)); - z = (float)pPlayer->positionz; - __x = (float)pPlayer->positionx; - fVar14 = (z - fStack72) * fStack176 + (__x - fStack80) * fStack172; - if (fVar14 < 0.00000000) { - fStack172 = -fStack172; - fStack176 = -fStack176; - fVar14 = -fVar14; - } - fVar15 = (z - fStack104) * fStack176 + (__x - afStack112[0]) * fStack172; - __x = (z - fStack116) * fStack176 + (__x - afStack124[0]) * fStack172; - if (fVar15 <= __x) { - __x = fVar15; - } - if (__x < fVar14) { - fStack180 = fVar14 - __x; - } - if ((0.00000000 <= fStack180) && ((fStack180 < fStack156 || (fStack156 < 0.00000000)))) { - fStack148 = fStack172; - fStack152 = fStack176; - fStack156 = fStack180; - } - if (0.00000000 <= fStack156) { - fStack12 = fStack156 * fStack148 * flt_80055178; - fStack4 = fStack156 * fStack152 * flt_8005517C; - proc_7F07D960(&fStack12,1); - fStack12 = 0.00000000; - fStack4 = 0.00000000; - iVar13 = proc_7F07CAC8((float *)&pPlayer->positionx,pPlayer->ptr_tile_printmanpos, - extraout_f12,puStack92,afStack68); - if (iVar13 == 0) { - fStack96 = 0.00000000; - } - else { - dword_80036464 = puStack92; - } - } - else { - fStack96 = 0.00000000; - } - } - else { - dword_80036464 = puStack92; - } - fStack100 = dword_80036474; - dword_80036484 = dword_80036484 + dword_80036488; - if (flt_80055180 <= dword_80036484) { - dword_80036484 = dword_80036484 - flt_80055180; - } - if (dword_80036484 < 0.00000000) { - dword_80036484 = dword_80036484 + flt_80055180; - __x = pPlayer->speedtheta; - } - else { - __x = pPlayer->speedtheta; - } - __x = __x * 3.50000000 * flt_80055184 * 4.00000000 + dword_80036484; - if (__x < 0.00000000) { - __x = __x + flt_80055180; - } - if (flt_80055180 <= __x) { - __x = __x - flt_80055180; - } - if (flt_80055188 <= __x - dword_80036474) { - __x = __x - flt_8005518C; - } - else { - if (__x - dword_80036474 < flt_80055190) { - __x = __x + flt_80055194; - } - } - lVar9 = (longlong)clock_timer; - lVar3 = 0; - if (0 < lVar9) { - lVar3 = 1; - dword_80036478 = flt_80055198 * dword_80036478; - if (1 < lVar9) { - do { - lVar3 = (longlong)((int)lVar3 + 1); - dword_80036478 = flt_80055198 * (dword_80036478 + __x); - } while (lVar3 < lVar9); - } - dword_80036478 = dword_80036478 + __x; - } - dword_80036474 = dword_80036478 * flt_8005519C; - if (flt_800551A0 <= dword_80036474) { - dword_80036474 = dword_80036474 - flt_800551A0; - dword_80036478 = dword_80036474 / flt_8005519C; - } - __x = dword_80036474; - if (dword_80036474 < 0.00000000) { - dword_80036474 = dword_80036474 + flt_800551A0; - dword_80036478 = dword_80036474 / flt_8005519C; - iVar13 = pPlayer->ptr_tile_printmanpos; - } - else { - iVar13 = pPlayer->ptr_tile_printmanpos; - } - proc_7F07CDA8((float *)&pPlayer->positionx,iVar13,__x); - if (lVar3 == 0) { - dword_80036474 = fStack100; - dword_80036484 = fStack100; - dword_80036478 = fStack100 / flt_800551AC; - } - __x = flt_800551A8; - if (ptr_playerstank != 0) { - iStack184 = *(int *)(ptr_playerstank + 4); - uStack192 = 0; - fStack196 = DAT_800799a8; - fStack188 = dword_8007A070; - proc_7F0585FC(fStack96,extraout_a0,afStack260); - proc_7F0583D8(afStack260,&fStack196); - proc_7F07C7B4(); - fStack196 = DAT_800799a8 - fStack196; - uStack192 = 0; - fStack188 = dword_8007A070 - fStack188; - proc_7F0585FC(flt_800551BC - (float)dword_80036464,extraout_a0_00,afStack260); - matrix_multiply_A1_by_F12 - (*(float *)(*(int *)(iStack184 + 0x14) + 0x14),extraout_a0_01,afStack260); - proc_7F0583D8(afStack260,&fStack196); - proc_7F07D960(&fStack196,1); - __x = flt_800551CC; - } - if ((0 < clock_timer) && (0 < clock_timer)) { - iVar13 = 1; - dword_8003647C = __x * dword_8003647C; - if (1 < clock_timer) { - do { - iVar13 += 1; - dword_8003647C = __x * (dword_8003647C + dword_80036488 / global_timer_delta); - } while (iVar13 < clock_timer); - } - dword_8003647C = dword_8003647C + dword_80036488 / global_timer_delta; - } - pPlayer->vv_theta = - (((float)dword_80036464 + dword_80036474 + - pPlayer->speedtheta * 3.50000000 * flt_800551D4 * 4.00000000 + - dword_8003647C * flt_800551D0 * 4.00000000) * 360.00000000) / flt_800551D8; - __x = pPlayer->vv_theta; - while (__x < 0.00000000) { - pPlayer->vv_theta = __x + 360.00000000; - __x = pPlayer->vv_theta; - } - while (360.00000000 <= __x) { - pPlayer->vv_theta = __x - 360.00000000; - __x = pPlayer->vv_theta; - } - } - else { - __x = pPlayer->vv_theta + pPlayer->speedtheta * global_timer_delta * 3.50000000; - while (__x < 0.00000000) { - __x = __x + 360.00000000; - } - if (360.00000000 <= __x) { - do { - __x = __x - 360.00000000; - } while (360.00000000 <= __x); - pPlayer->vv_theta = __x; - } - else { - pPlayer->vv_theta = __x; - } - } - proc_7F081790(); - pfStack268 = NULL; - iVar13 = proc_7F0799F0(); - if (iVar13 == 0) { - pfStack268 = (float *)0xc2c80000; - uVar11 = extraout_a1; - __x = extraout_f12_00; - fVar14 = extraout_f14; - } - else { - iVar13 = proc_7F0799F0(); - if (iVar13 == 1) { - pfStack268 = (float *)0xc2700000; - uVar11 = extraout_a1_00; - __x = extraout_f12_01; - fVar14 = extraout_f14_00; - } - else { - proc_7F0799F0(); - uVar11 = extraout_a1_01; - __x = extraout_f12_02; - fVar14 = extraout_f14_01; - } - } - ducking_offset = (float)pPlayer->ducking_height_offset; - lVar3 = (longlong)(int)&pPlayer->ducking_height_offset; - if ((float)pfStack268 != ducking_offset) { - proc_7F042F18((float *)&pPlayer->ducking_height_offset,__x,pfStack268,fVar14, - (float)&pPlayer->field_A4,0.50000000); - ducking_offset = (float)pPlayer->ducking_height_offset; - lVar3 = extraout_a0_02; - uVar11 = extraout_a1_02; - } - if ((float)pfStack268 == ducking_offset) { - pPlayer->field_A4 = 0.00000000; - } - if (in_tank_flag == TRUE) { - if (DAT_800799b8 == 0) { - lVar9 = (longlong)(int)afStack336; - if (ptr_playerstank != 0) { - iVar13 = *(int *)(ptr_playerstank + 4); - proc_7F0585FC(flt_800551DC - (float)dword_80036464,lVar3,afStack336); - matrix_multiply_A1_by_F12 - (*(float *)(*(int *)(iVar13 + 0x14) + 0x14),extraout_a0_03,afStack336); - fStack348 = DAT_800799a8; - fStack344 = DAT_800799ac; - fStack340 = dword_8007A070; - proc_7F0583D8(afStack336,&fStack348); - fStack356 = -20.00000000; - fStack348 = fStack348 + *(float *)(iVar13 + 0x58); - fStack344 = fStack344 + *(float *)(iVar13 + 0x5c); - fStack340 = fStack340 + *(float *)(iVar13 + 0x60); - fStack352 = (((float)dword_80036464 + dword_80036474) * 360.00000000) / flt_800551E0; - if (-20.00000000 <= pPlayer->vv_verta) { - fStack356 = pPlayer->vv_verta; - } - DAT_800799bc = DAT_800799bc + global_timer_delta / 45.00000000; - if (1.00000000 <= DAT_800799bc) { - DAT_800799bc = 1.00000000; - } - __x = cosf(DAT_800799bc * flt_800551E4 * 0.50000000); - f32_800799c0 = (f32)((__x + 1.00000000) * 0.50000000); - pPlayer->vv_verta = - (float)f32_800799c0 * copy_bond_inclination_angle1 + - (1.00000000 - (float)f32_800799c0) * fStack356; - __x = fStack352; - if (180.00000000 < fStack352 - copy_bond_azimuth) { - __x = fStack352 - 360.00000000; - } - if (fStack352 - copy_bond_azimuth < -180.00000000) { - __x = __x + 360.00000000; - } - pPlayer->vv_theta = - (float)f32_800799c0 * copy_bond_azimuth + (1.00000000 - (float)f32_800799c0) * __x; - __x = pPlayer->vv_theta; - if (360.00000000 <= __x) { - pPlayer->vv_theta = __x - 360.00000000; - __x = pPlayer->vv_theta; - } - if (__x < 0.00000000) { - pPlayer->vv_theta = __x + 360.00000000; - } - uStack8 = 0; - fStack12 = ((float)f32_800799c0 * copy_bond_posx + - (1.00000000 - (float)f32_800799c0) * fStack348) - (float)pPlayer->positionx; - fStack4 = ((float)f32_800799c0 * copy_bond_posz + - (1.00000000 - (float)f32_800799c0) * fStack340) - (float)pPlayer->positionz; - lVar3 = extraout_a0_04; - lVar9 = extraout_a1_03; - } - if (1.00000000 <= DAT_800799bc) { - DAT_800799b8 = 1; - } - } - else { - if (DAT_800799b8 == 1) { - DAT_800799b8 = 2; - if ((dword_80036458 == 0) && (iVar13 = get_controls_locked_flag(), iVar13 == 0)) { - play_sfx_a1(ptr_sfx_buf,0x42,(sfxdata *)&dword_80036458); - } - music_related_36((longlong)dword_80036458,8,25000); - DAT_800799b4 = 25000; - lVar3 = extraout_a0_05; - lVar9 = extraout_a1_04; - } - else { - fVar14 = pPlayer->speedforwards / 15.00000000; - __x = pPlayer->speedtheta / flt_800551E8; - if (fVar14 < 0.00000000) { - fVar14 = -fVar14; - } - if (__x < 0.00000000) { - __x = -__x; - } - if (__x <= fVar14) { - __x = fVar14; - } - if (0.00000000 < __x) { - fVar14 = 1.00000000; - if (__x <= 1.00000000) { - fVar14 = __x; - } - if ((dword_8003645C == 0) && - (fStack372 = fVar14, iVar13 = get_controls_locked_flag(), fVar14 = fStack372, - iVar13 == 0)) { - play_sfx_a1(ptr_sfx_buf,0x3e,(sfxdata *)&dword_8003645C); - fVar14 = fStack372; - } - __x = fVar14; - if ((longlong)dword_8003645C != 0) { - iVar13 = 0x7fff; - if (fVar14 < flt_800551EC) { - iVar13 = (int)((fVar14 * flt_800551F0) / flt_800551EC); - } - else { - if (fVar14 < flt_800551F4) { - iVar13 = (int)(((fVar14 - flt_800551EC) * flt_800551F8) / 0.75000000 + flt_800551FC) - ; - } - } - fStack372 = fVar14; - music_related_36((longlong)dword_8003645C,8,iVar13); - __x = fStack372; - } - } - else { - if ((dword_8003645C != 0) && - (fStack372 = __x, uVar4 = music_related_26(dword_8003645C), __x = fStack372, uVar4 != 0 - )) { - music_related_28(dword_8003645C); - __x = fStack372; - } - } - if ((dword_80036458 == 0) && - (fStack372 = __x, iVar13 = get_controls_locked_flag(), __x = fStack372, iVar13 == 0)) { - play_sfx_a1(ptr_sfx_buf,0x41,(sfxdata *)&dword_80036458); - __x = fStack372; - } - if ((longlong)dword_80036458 != 0) { - DAT_800799b4 = 0x7fff; - if (__x < flt_80055200) { - DAT_800799b4 = (int)((__x * flt_80055204) / flt_80055208 + flt_8005520C); - } - music_related_36((longlong)dword_80036458,8,DAT_800799b4); - } - IVar5 = get_item_in_hand(0); - if (IVar5 == ITEM_TANKSHELLS) { - dword_8003646C = (float)pPlayer->field_2A08 + flt_80055210; - } - __x = flt_80055214; - if (dword_8003646C <= flt_80055214) { - __x = dword_8003646C; - } - fVar14 = flt_80055218; - if (flt_80055218 <= __x) { - fVar14 = __x; - } - lVar3 = (longlong)clock_timer; - if (0 < lVar3) { - lVar9 = 1; - dword_80036470 = flt_8005521C * dword_80036470; - if (1 < lVar3) { - do { - lVar9 = (longlong)((int)lVar9 + 1); - dword_80036470 = flt_8005521C * (dword_80036470 + fVar14); - } while (lVar9 < lVar3); - } - dword_80036470 = dword_80036470 + fVar14; - } - dword_8003646C = dword_80036470 * flt_80055220; - lVar9 = extraout_a1_05; - } - } - *(float *)&pPlayer->bondfadefracnew = - (float)pPlayer->bondfadefracnew - (global_timer_delta * 0.75000000) / flt_80055224; - if ((float)pPlayer->bondfadefracnew < 0.00000000) { - pPlayer->bondfadefracnew = 0.00000000; - } - proc_7F080B34(0.00000000,0.00000000,lVar3,lVar9,0.00000000); - __x = sinf(flt_80055228 - (float)dword_80036464); - fStack12 = fStack12 + pPlayer->speedforwards * __x * global_timer_delta; - __x = cosf(flt_8005522C - (float)dword_80036464); - fStack4 = fStack4 + pPlayer->speedforwards * __x * global_timer_delta; - proc_7F07D960(&fStack12,1); - if ((DAT_800799b8 == 2) && (0 < clock_timer)) { - __x = ((float)pPlayer->positionx - (float)pPlayer->field_408) / global_timer_delta; - fVar14 = ((float)pPlayer->positionz - (float)pPlayer->field_410) / global_timer_delta; - __x = sqrtf(__x * __x + fVar14 * fVar14); - if (pPlayer->speedforwards < 0.00000000) { - __x = -__x; - } - pPlayer->speedforwards = __x; - } - goto LAB_7f0863ac; - } - if (dword_80036458 == 0) { - lVar3 = (longlong)dword_8003645C; - } - else { - uVar4 = music_related_26(dword_80036458); - uVar11 = extraout_a1_06; - if (uVar4 != 0) { - DAT_800799b4 += clock_timer * -1000; - if (0 < DAT_800799b4) { - music_related_36((longlong)dword_80036458,8,DAT_800799b4); - lVar3 = (longlong)dword_8003645C; - uVar11 = extraout_a1_07; - goto LAB_7f085bb4; - } - music_related_28(dword_80036458); - uVar11 = extraout_a1_08; - } - lVar3 = (longlong)dword_8003645C; - } -LAB_7f085bb4: - if ((lVar3 != 0) && - (uVar4 = music_related_26((int)lVar3), lVar3 = extraout_a0_06, uVar11 = extraout_a1_09, - uVar4 != 0)) { - music_related_28(dword_8003645C); - lVar3 = extraout_a0_07; - uVar11 = extraout_a1_10; - } - fStack24 = pPlayer->speedsideways * DAT_80036af4 * 0.50000000 * global_timer_delta; - fStack408 = (float)pPlayer->field_4A0 * -(float)pPlayer->field_1274 - (float)pPlayer->field_1278; - fStack412 = (float)pPlayer->field_498 * (float)pPlayer->field_1274 - (float)pPlayer->field_127C; - fStack416 = fStack408 * fStack408 + fStack412 * fStack412; - if (100.00000000 <= fStack416) { - fStack408 = fStack408 * flt_80055230; - fStack412 = fStack412 * flt_80055230; - } - fVar14 = pPlayer->speedforwards; - fStack32 = pPlayer->speedsideways * flt_80055234; - __x = pPlayer->speedtheta * flt_80055234; - if (fStack32 < 0.00000000) { - fStack32 = -fStack32; - } - if (fVar14 < 0.00000000) { - fVar14 = -fVar14; - } - if (__x < 0.00000000) { - __x = -__x; - } - if (fStack32 <= fVar14) { - fStack32 = fVar14; - } - if (__x <= fStack32) { - __x = fStack32; - } - fStack32 = __x; - if ((flt_80055238 <= fStack416) && (fStack32 < flt_80055234)) { - fStack32 = flt_80055234; - } - if (0.75000000 <= fStack32) { - *(float *)&pPlayer->bondfadefracnew = - (float)pPlayer->bondfadefracnew + - ((fStack32 - 0.75000000) * global_timer_delta) / 900.00000000; - } - else { - *(float *)&pPlayer->bondfadefracnew = - (float)pPlayer->bondfadefracnew - - ((0.75000000 - fStack32) * global_timer_delta) / flt_8005523C; - } - if ((float)pPlayer->bondfadefracnew < 0.00000000) { - pPlayer->bondfadefracnew = 0.00000000; - } - else { - if (1.00000000 < (float)pPlayer->bondfadefracnew) { - pPlayer->bondfadefracnew = 1.00000000; - } - } - proc_7F080B34(fStack32,pPlayer->speedforwards,lVar3,uVar11,fStack24); - fStack12 = fStack12 + - ((float)pPlayer->field_504 * (float)pPlayer->field_498 - - (float)pPlayer->scaled_velocity * (float)pPlayer->field_4A0) * global_timer_delta + - fStack408; - fStack4 = fStack4 + ((float)pPlayer->field_504 * (float)pPlayer->field_4A0 + - (float)pPlayer->scaled_velocity * (float)pPlayer->field_498) * - global_timer_delta + fStack412; - fStack432 = (float)pPlayer->positionx; - puStack436 = (undefined4 *)pPlayer->positionz; - iStack440 = pPlayer->ptr_tile_printmanpos; - BVar8 = get_debug_fast_bond_flag(); - if (BVar8 != FALSE) { - fStack12 = fStack12 + - ((float)pPlayer->field_498 * pPlayer->speedforwards - - (float)pPlayer->field_4A0 * pPlayer->speedsideways) * global_timer_delta * - 10.00000000; - fStack4 = fStack4 + ((float)pPlayer->field_4A0 * pPlayer->speedforwards + - (float)pPlayer->field_498 * pPlayer->speedsideways) * global_timer_delta * - 10.00000000; - } - proc_7F07D960(&fStack12,(uint)((float)pPlayer->field_1274 == 0.00000000)); - proc_7F0B2314(&iStack440,extraout_f12_03,extraout_f14_02,fStack432,puStack436); - iVar13 = proc_7F0B23A4((int)auStack516); - if (iVar13 != 0) { - uStack36 = 1; - } - proc_7F0B2314(&pPlayer->ptr_tile_printmanpos,extraout_f12_04,extraout_f14_03, - (float)pPlayer->positionx,(undefined4 *)pPlayer->positionz); - iVar13 = proc_7F0B23A4((int)auStack516); - if (iVar13 != 0) { - uStack36 = 1; - } - proc_7F0B2314(&pPlayer->ptr_tile_printmanpos,extraout_f12_05,extraout_f14_04, - (float)pPlayer->positionx,(undefined4 *)pPlayer->positionz); - iVar13 = proc_7F0B23A4((int)auStack516); - if (iVar13 == 0) { - proc_7F0B2314(&iStack440,extraout_f12_06,extraout_f14_05,fStack432,puStack436); - } - iVar13 = proc_7F0B23A4((int)auStack516); - if (iVar13 != 0) { - uStack36 = 1; - proc_7F0B2420(aiStack580,&iStack584,(int)&fStack564); - if ((float)pPlayer->clipping_height <= fStack536) { - fStack588 = fStack544 - fStack556; - fStack592 = fStack564 - fStack552; - __x = sqrtf(fStack588 * fStack588 + fStack592 * fStack592); - fVar14 = ((float)puStack436 - fStack556) * (fStack592 / __x) + - (fStack432 - fStack564) * (fStack588 / __x); - __x = (((float)puStack436 + fStack4) - fStack556) * (fStack592 / __x) + - ((fStack432 + fStack12) - fStack564) * (fStack588 / __x); - if (fVar14 * __x <= 0.00000000) { - fStack568 = 0.00000000; - } - else { - if (__x < 0.00000000) { - __x = -__x; - fVar14 = -fVar14; - bVar2 = fVar14 <= __x; - } - else { - bVar2 = fVar14 <= __x; - } - if (bVar2) { - fStack568 = 0.00000000; - } - else { - fVar15 = (float)pPlayer->collision_radius; - if (fVar15 < __x) { - fStack568 = 0.00000000; - } - else { - if (fVar14 < fVar15) { - fStack568 = 0.00000000; - } - else { - fStack568 = (fVar14 - fVar15) / (fVar14 - __x); - } - } - } - } - fVar14 = sqrtf(fStack4 * fStack4 + fStack12 * fStack12); - __x = fStack568; - if (0.00000000 < fVar14) { - fVar15 = (1.00000000 - fStack568) * fVar14; - fStack40 = fVar15 * 0.25000000; - __x = fStack568; - if (fStack536 <= (float)pPlayer->clipping_height + fStack40) { - fStack40 = fStack536 - (float)pPlayer->clipping_height; - __x = fStack568 + (fVar15 - fStack40 / 0.25000000) / fVar14; - } - } - fStack540 = fStack540 - fStack564; - fStack532 = fStack532 - fStack556; - fStack528 = fStack528 - fStack564; - fStack520 = fStack520 - fStack556; - if (fStack540 * fStack540 + fStack532 * fStack532 <= - fStack528 * fStack528 + fStack520 * fStack520) { - fStack528 = fStack540; - fStack520 = fStack532; - } - fVar14 = fStack40 / (fStack536 - fStack560); - fStack12 = fVar14 * fStack528 + fStack12 * __x; - fStack4 = fVar14 * fStack520 + fStack4 * __x; - *(float *)&pPlayer->positionx = fStack432; - *(undefined4 **)&pPlayer->positionz = puStack436; - pPlayer->ptr_tile_printmanpos = iStack440; - proc_7F07D960(&fStack12,(uint)((float)pPlayer->field_1274 == 0.00000000)); - } - } - fVar14 = (float)pPlayer->positionx - fStack432; - fVar15 = (float)pPlayer->positionz - (float)puStack436; - __x = fStack4 * fStack4 + fStack12 * fStack12; - if (__x != 0.00000000) { - __x = (fVar14 * fVar14 + fVar15 * fVar15) / __x; - } - __x = sqrtf(__x); - *(float *)&pPlayer->field_1278 = (float)pPlayer->field_1278 + __x * fStack408; - *(float *)&pPlayer->field_127C = (float)pPlayer->field_127C + __x * fStack412; -LAB_7f0863ac: - fStack628 = pPlayer->speedverta / flt_8005524C + (float)pPlayer->field_A4 / 5.00000000; - proc_7F08EAF8(); - proc_7F05E0E4(); - proc_7F05E5F0((float)pPlayer->vv_verta360 * flt_80055254); - if (((ptr_playerstank != 0) && (in_tank_flag == TRUE)) && (DAT_800799b8 == 2)) { - iVar13 = *(int *)(ptr_playerstank + 4); - iStack648 = *(int *)(*(int *)(*(int *)(*(int *)(*(int *)(iVar13 + 0x14) + 8) + 8) + 0x14) + 4); - iStack640 = iVar13; - IVar5 = get_item_in_hand(0); - bVar2 = IVar5 == ITEM_TANKSHELLS; - if (bVar2) { - lVar3 = get_hands_firing_status(0); - bVar2 = lVar3 != 0; - *(uint *)(iVar13 + 0xc4) = (uint)bVar2; - } - else { - *(uint *)(iVar13 + 0xc4) = (uint)bVar2; - } - *(float *)(iVar13 + 200) = dword_8003646C; - *(float *)(iVar13 + 0xcc) = dword_80036474; - *(undefined4 **)(iVar13 + 0xdc) = dword_80036464; - proc_7F0585FC(flt_80055258 - (float)dword_80036464,(ulonglong)bVar2,afStack712); - matrix_multiply_A1_by_F12 - (*(float *)(*(int *)(iStack640 + 0x14) + 0x14),extraout_a0_08,afStack712); - fStack724 = -DAT_800799a8; - fStack720 = -DAT_800799ac; - fStack716 = -dword_8007A070; - proc_7F0583D8(afStack712,&fStack724); - fStack724 = fStack724 + (float)pPlayer->positionx; - fStack716 = fStack716 + (float)pPlayer->positionz; - *(int *)(*(int *)(iStack640 + 0x10) + 0x14) = pPlayer->ptr_tile_printmanpos; - proc_7F0B0BE4((int *)(*(int *)(iStack640 + 0x10) + 0x14),extraout_f12_07,extraout_f14_06, - (float)pPlayer->positionx,(float)pPlayer->positionz); - fVar14 = (float)proc_7F0B2970(); - *(float *)(iVar13 + 0xd4) = fVar14; - __x = flt_8005525C; - iVar6 = 0; - if (0 < clock_timer) { - fVar14 = *(float *)(iVar13 + 0xd0); - while( true ) { - iVar6 += 1; - *(float *)(iVar13 + 0xd0) = fVar14 * __x + *(float *)(iVar13 + 0xd4); - fVar14 = __x; - if (clock_timer <= iVar6) break; - fVar14 = *(float *)(iVar13 + 0xd0); - } - } - __x = *(float *)(iVar13 + 0xd0) * flt_80055260; - proc_7F03E864(iStack648); - fStack720 = (__x - fVar14 * *(float *)(*(int *)(iStack640 + 0x14) + 0x14)) + 4.00000000; - proc_7F058020(afStack712,(undefined4 *)(iStack640 + 0x18)); - *(float *)(*(int *)(iStack640 + 0x10) + 8) = fStack724; - *(float *)(iStack640 + 0x58) = fStack724; - *(float *)(*(int *)(iStack640 + 0x10) + 0xc) = fStack720; - *(float *)(iStack640 + 0x5c) = fStack720; - *(float *)(*(int *)(iStack640 + 0x10) + 0x10) = fStack716; - *(float *)(iStack640 + 0x60) = fStack716; - proc_7F056CA0(iStack640); - proc_7F040484(iStack640); - proc_7F07C888(afStack772,(float *)&pPlayer->positionx,extraout_f12_08); - proc_7F03CB8C(*(char **)(iStack640 + 0x10),auStack804); - proc_7F03E3FC((int *)auStack804); - sVar1 = *ptr_list_object_lookup_indices; - psStack812 = ptr_list_object_lookup_indices; - while (-1 < sVar1) { - iVar13 = (int)sVar1 * 0x34; - pcVar12 = pos_data_entry + iVar13; - if (pcVar12 != *(char **)(iStack640 + 0x10)) { - if (*pcVar12 == '\x03') { - iStack828 = 1; - iStack844 = *(int *)(pos_data_entry + iVar13 + 4); - proc_7F03CF88(pcVar12,&iStack824,&fStack816,&uStack820); - pfVar10 = (float *)(pos_data_entry + iVar13 + 8); - lVar3 = proc_7F03CCD8(pfVar10,afStack772,4); - if (((lVar3 != 0) && (iStack828 = 0, *(char *)(iStack844 + 7) == '\x04')) && - (-1 < (int)(*(uint *)(iStack844 + 0x14) << 7))) { - *(uint *)(iStack844 + 0x14) = *(uint *)(iStack844 + 0x14) | 0x1000000; - iVar6 = dword_80048380 % 3; - if (iVar6 < 2) { - ppiVar7 = play_sfx_a1(ptr_sfx_buf,0xb7,NULL); - proc_7F053A10((int)ppiVar7,pfVar10); - iVar6 = dword_80048380 % 3; - } - if (0 < iVar6) { - ppiVar7 = play_sfx_a1(ptr_sfx_buf,0xd5,NULL); - proc_7F053A10((int)ppiVar7,pfVar10); - } - } - if ((iStack828 != 0) && - (lVar3 = proc_7F044718((longlong)(int)pfVar10,(longlong)iStack824,afStack772,4), - lVar3 != 0)) { - iStack828 = 0; - } - if (iStack828 == 0) { - uStack840 = *(undefined4 *)(iStack640 + 0x58); - uStack836 = *(undefined4 *)(pos_data_entry + iVar13 + 0xc); - uStack832 = *(undefined4 *)(iStack640 + 0x60); - proc_7F027804(); - } - } - else { - if (*pcVar12 == '\x01') { - proc_7F03CCB0(pcVar12,(int **)apfStack852,&uStack856); - if ((0 < (int)uStack856) && - (lVar3 = proc_7F0446B8(apfStack852[0],uStack856,afStack772,4), lVar3 != 0)) { - get_cur_playernum(); - proc_7F04DEFC((int)pcVar12,extraout_f12_09,0x461c4000, - (longlong)(*(int *)(pos_data_entry + iVar13 + 4) + 0x58),0x20); - dword_80036490 = 0x5a; - } - } - } - } - psStack812 = psStack812 + 1; - sVar1 = *psStack812; - } - } - proc_7F080DF8(); - proc_7F081478(); - proc_7F08A19C(); - BVar8 = get_debug_man_pos_flag(); - if (BVar8 != FALSE) { - copy_tile_RGB_as_24bit - ((int *)pPlayer->ptr_tile_printmanpos,(int)pPlayer->positionx,pPlayer->positionz, - &tStack860); - } - return; -} - - - -void proc_7F086990(undefined8 param_1,undefined8 param_2,ushort param_3,ushort param_4) - -{ - undefined8 extraout_a0; - undefined8 extraout_a1; - undefined auStack64 [12]; - int iStack52; - float fStack48; - undefined4 uStack44; - float fStack40; - float fStack36; - undefined4 uStack32; - undefined4 uStack28; - float fStack24; - undefined4 uStack20; - undefined4 uStack16; - float fStack12; - undefined4 uStack8; - undefined4 uStack4; - - fStack12 = dword_80036800; - uStack8 = dword_80036804; - uStack4 = dword_80036808; - fStack24 = dword_8003680C; - uStack20 = dword_80036810; - uStack16 = dword_80036814; - fStack36 = dword_80036818; - uStack32 = dword_8003681C; - uStack28 = dword_80036820; - fStack48 = dword_80036824; - uStack44 = dword_80036828; - fStack40 = dword_8003682C; - proc_7F083FC8(); - proc_7F084360(); - controller_gameplay_interaction(); - proc_7F081790(); - proc_7F080B34(0.00000000,0.00000000,extraout_a0,extraout_a1,0.00000000); - if ((DAT_80079990 != 0.00000000) || (DAT_80079998 != 0.00000000)) { - fStack48 = fStack48 + DAT_80079990 * global_timer_delta; - fStack40 = fStack40 + DAT_80079998 * global_timer_delta; - } - fStack48 = fStack48 + - ((float)pPlayer->field_504 * (float)pPlayer->field_498 - - (float)pPlayer->scaled_velocity * (float)pPlayer->field_4A0) * global_timer_delta; - fStack40 = fStack40 + - ((float)pPlayer->field_504 * (float)pPlayer->field_4A0 + - (float)pPlayer->scaled_velocity * (float)pPlayer->field_498) * global_timer_delta; - proc_7F07D960(&fStack48,1); - proc_7F080DF8(); - proc_7F081478(); - if (((cameramode == FP_NOINPUT_CAM) || (cameramode == FP_CAM)) || (cameramode == UNK10_CAM)) { - proc_7F079A50(0); - } - else { - proc_7F07B56C(); - proc_7F079A50(1); - proc_7F079A60(&fStack12,&fStack24,&fStack36,iStack52,auStack64); - } - return; -} - - - -undefined8 proc_7F086BF8(void) - -{ - if (camera_8003642C != 0) { - return 0x1b8; - } - return 0x140; -} - - - -undefined8 proc_7F086C1C(void) - -{ - if (camera_8003642C != 0) { - return 0x14a; - } - return 0xf0; -} - - - -undefined8 get_curplayer_viewport_width(void) - -{ - ulonglong uVar1; - undefined8 uVar2; - int iVar3; - - uVar1 = get_num_players(); - if ((longlong)uVar1 < 3) { - if (camera_8003642C == 0) { - iVar3 = cur_player_get_screen_setting(); - if (iVar3 == 1) { - uVar2 = 0x140; - } - else { - iVar3 = cur_player_get_screen_setting(); - if (iVar3 == 2) { - uVar2 = 0x140; - } - else { - uVar2 = 0x140; - } - } - } - else { - uVar2 = 0x1b8; - } - } - else { - uVar2 = 0x9f; - } - return uVar2; -} - - - -undefined8 get_curplayer_viewport_ulx(void) - -{ - ulonglong uVar1; - undefined8 uVar2; - u32 uVar3; - - uVar1 = get_num_players(); - if ((longlong)uVar1 < 3) { - uVar2 = 0; - } - else { - uVar3 = get_cur_playernum(); - if ((uVar3 == 1) || (uVar3 = get_cur_playernum(), uVar3 == 3)) { - uVar2 = 0xa1; - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -int get_curplayer_viewport_height(void) - -{ - ulonglong uVar1; - int iVar2; - float fVar3; - - uVar1 = get_num_players(); - if ((longlong)uVar1 < 2) { - if (camera_8003642C == 0) { - iVar2 = cur_player_get_screen_setting(); - if (iVar2 == 1) { - fVar3 = proc_7F07EA78(); - iVar2 = ((int)(fVar3 * 40.00000000) + 0xb4) * 0x10000 >> 0x10; - } - else { - iVar2 = cur_player_get_screen_setting(); - if (iVar2 == 2) { - fVar3 = proc_7F07EA78(); - iVar2 = ((int)(fVar3 * 84.00000000) + 0x88) * 0x10000 >> 0x10; - } - else { - iVar2 = 0xdc; - } - } - } - else { - iVar2 = cur_player_get_screen_setting(); - if (iVar2 == 1) { - iVar2 = 0xf8; - } - else { - iVar2 = cur_player_get_screen_setting(); - if (iVar2 == 2) { - iVar2 = 0xbe; - } - else { - iVar2 = 0x130; - } - } - } - } - else { - iVar2 = 0x6d; - } - return iVar2; -} - - - -int get_curplayer_viewport_uly(void) - -{ - ulonglong uVar1; - u32 uVar2; - int iVar3; - float fVar4; - - uVar1 = get_num_players(); - if (uVar1 == 2) { - uVar2 = get_cur_playernum(); - if (uVar2 == 0) { - iVar3 = 10; - } - else { - iVar3 = 0x79; - } - } - else { - uVar1 = get_num_players(); - if ((longlong)uVar1 < 3) { - if (camera_8003642C == 0) { - iVar3 = cur_player_get_screen_setting(); - if (iVar3 == 1) { - fVar4 = proc_7F07EA78(); - iVar3 = ((int)(fVar4 * -20.00000000) + 0x1e) * 0x10000 >> 0x10; - } - else { - iVar3 = cur_player_get_screen_setting(); - if (iVar3 == 2) { - fVar4 = proc_7F07EA78(); - iVar3 = ((int)(fVar4 * -42.00000000) + 0x34) * 0x10000 >> 0x10; - } - else { - iVar3 = 10; - } - } - } - else { - iVar3 = cur_player_get_screen_setting(); - if (iVar3 == 1) { - iVar3 = 0x29; - } - else { - iVar3 = cur_player_get_screen_setting(); - if (iVar3 == 2) { - iVar3 = 0x46; - } - else { - iVar3 = 0xd; - } - } - } - } - else { - uVar2 = get_cur_playernum(); - if ((int)uVar2 < 2) { - iVar3 = 10; - } - else { - iVar3 = 0x79; - } - } - } - return iVar3; -} - - - -// WARNING: Instruction at (ram,0x7f08735c) overlaps instruction at (ram,0x7f087358) -// - -void possibly_reset_viewport_options_for_player(char param_1,char param_2,ushort param_3) - -{ - undefined1 *puVar4; - int isset; - undefined8 uVar1; - undefined8 uVar2; - u32 uVar5; - undefined4 uVar6; - ulonglong uVar3; - undefined4 extraout_a0_lo; - undefined4 extraout_a0_lo_00; - uint flag; - - set_watch_menu_current_size_unused_maybe(60.00000000); - video_related_1F(60.00000000); - if (camera_80036430 == 0) { - if (camera_80036434 != 0) { - if ((camera_80036434 < 4) || - (puVar4 = (undefined1 *)get_video_settings2_frameb(), puVar4 != cfb_16_a)) { - camera_80036434 += 1; - } - else { - camera_8003642C = 0; - camera_80036434 = 0; - } - } - } - else { - if (((camera_80036430 < 4) || (resolution == 0)) || - (puVar4 = (undefined1 *)get_video_settings2_frameb(), puVar4 != cfb_16_b)) { - camera_80036430 += 1; - } - else { - camera_8003642C = 1; - camera_80036430 = 0; - } - } - if ((camera_8003642C != 0) && - (puVar4 = (undefined1 *)get_video_settings2_frameb(), puVar4 == cfb_16_b)) { - set_video_settings2_frameb(resolution); - } - isset = get_screen_ratio(); - if (isset == 1) { - get_curplayer_viewport_width(); - get_curplayer_viewport_height(); - proc_7F09B224(extraout_a0_lo); - uVar1 = get_curplayer_viewport_width(); - isset = get_curplayer_viewport_height(); - video_related_21((f32)(((float)(int)(short)uVar1 / (float)isset) * 0.75000000 * flt_80055268)); - } - else { - get_curplayer_viewport_width(); - get_curplayer_viewport_height(); - proc_7F09B224(extraout_a0_lo_00); - uVar1 = get_curplayer_viewport_width(); - isset = get_curplayer_viewport_height(); - video_related_21((f32)((float)(int)(short)uVar1 / (float)isset)); - } - uVar1 = get_curplayer_viewport_width(); - isset = get_curplayer_viewport_height(); - set_cur_player_screen_size((short)uVar1,(short)isset); - uVar1 = get_curplayer_viewport_ulx(); - isset = get_curplayer_viewport_uly(); - set_cur_player_viewport_size((short)uVar1,(short)isset); - uVar1 = proc_7F086BF8(); - uVar2 = proc_7F086C1C(); - set_video2_text_clip_size((short)uVar1,(short)uVar2); - uVar1 = proc_7F086BF8(); - uVar2 = proc_7F086C1C(); - set_video2_settings_offset_18_1A((short)uVar1,(short)uVar2); - uVar1 = get_curplayer_viewport_width(); - isset = get_curplayer_viewport_height(); - set_video2_width_height((short)uVar1,(short)isset); - uVar1 = get_curplayer_viewport_ulx(); - isset = get_curplayer_viewport_uly(); - set_video2_ulx_uly((short)uVar1,(short)isset); - proc_7F0808BC(); - proc_7F080A80(); - uVar5 = cur_player_get_autoaim(); - set_BONDdata_autoaim_y(uVar5); - uVar5 = cur_player_get_autoaim(); - set_BONDdata_autoaim_x(uVar5); - uVar6 = cur_player_get_lookahead(); - set_BONDdata_lookahead_setting(uVar6); - isset = cur_player_get_ammo_onscreen_setting(); - set_unset_ammo_on_screen_setting(1,isset); - uVar3 = get_num_players(); - if (uVar3 == 1) { - isset = cur_player_get_sight_onscreen_control(); - flag = (uint)(isset != 0); - if (isset != 0) goto LAB_7f087330; - } - uVar3 = get_num_players(); - uVar3 = (ulonglong)((longlong)uVar3 < 2) ^ 1; - flag = (uint)uVar3; - if (uVar3 != 0) { - flag = (uint)(pplayersperm->sight != '\0'); - } -LAB_7f087330: - set_unset_bitflags(1,flag); - if (((cameramode == 0) || ((cameramode == FP_CAM && (dword_800364B0 != 0)))) || - (cameramode == UNK10_CAM)) { - uVar5 = get_cur_playernum(); - if (uVar5 == 0) { - missiontime += clock_timer; - } - MoveBond(param_1,param_2,param_3,pPlayer->field_3B4); - } - else { - proc_7F086990((longlong)param_1,(longlong)param_2,param_3,pPlayer->field_3B4); - } - watch_time += dword_80048498; - if (stop_time_flag != 0) { - isset = get_controls_locked_flag(); - if ((isset == 0) && ((param_3 & ~pPlayer->field_3B4 & 0xf030) != 0)) { - stop_time_flag = 2; - uVar3 = check_if_fade_to_black_complete(); - if (uVar3 == 0) { - if ((float)pPlayer->field_404 == 0.00000000) { - fade_to_over_seconds(pPlayer->field_3E0,1.00000000); - } - } - else { - if (pPlayer->tint_alpha == 0.00000000) { - proc_7F0807B0(0,0,0,0); - fade_to_over_seconds(60.00000000,1.00000000); - } - } - } - if (((stop_time_flag == 2) && (uVar3 = check_if_fade_to_black_complete(), uVar3 != 0)) && - (pPlayer->tint_alpha == 1.00000000)) { - return_to_title_from_level_end(); - } - } - if (enable_move_after_cinema != 0) { - proc_7F07B1A4(); - } - if (pPlayer->bonddead != 0) { - isset = pPlayer->field_424; - if (isset == 0) { - draw_item_in_hand_has_more_ammo(1,ITEM_UNARMED); - draw_item_in_hand_has_more_ammo(0,ITEM_UNARMED); - isset = pPlayer->field_424; - } - if (((isset != 0) && (pPlayer->field_428 != 0)) && (2 < dword_80036510)) { - run_title_stage(); - } - } - if ((cameramode == UNK10_CAM) && (uVar3 = check_if_fade_to_black_complete(), uVar3 != 0)) { - run_title_stage(); - } - pPlayer->field_3B4 = param_3; - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F0875E4(void) - -{ - int in_a0_lo; - f32 fVar1; - - proc_7F0BCA34(in_a0_lo,(float *)&pPlayer->current_model_xpos); - fVar1 = proc_7F0B483C(); - *(float *)&pPlayer->current_room_xpos = (float)fVar1 * (float)pPlayer->current_model_xpos; - fVar1 = proc_7F0B483C(); - *(float *)&pPlayer->current_room_ypos = (float)fVar1 * (float)pPlayer->current_model_ypos; - fVar1 = proc_7F0B483C(); - *(float *)&pPlayer->current_room_zpos = (float)fVar1 * (float)pPlayer->current_model_zpos; - proc_7F0BC624(in_a0_lo); - return; -} - - - -void store_BONDdata_curpos_to_previous(void) - -{ - float *pfVar1; - - pPlayer->previous_model_xpos = pPlayer->current_model_xpos; - pPlayer->previous_model_ypos = pPlayer->current_model_ypos; - pPlayer->previous_model_zpos = pPlayer->current_model_zpos; - pfVar1 = (float *)proc_7F0783C4(); - proc_7F0583D8(pfVar1,(float *)&pPlayer->previous_model_xpos); - return; -} - - - -void proc_7F0876C4(float *param_1,float *param_2,float *param_3) - -{ - float *pfVar1; - float *pfVar2; - int iVar3; - undefined8 extraout_a0; - float *pfVar4; - undefined4 unaff_s0_lo; - undefined4 unaff_s1_lo; - undefined4 unaff_s2_lo; - undefined4 unaff_retaddr; - f32 fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float extraout_f12; - float xEye; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - float yEye; - float extraout_f14_00; - float extraout_f14_01; - float fVar11; - float fVar12; - undefined in_stack_fffffee4 [12]; - undefined8 in_stack_ffffff00; - float afStack232 [16]; - float afStack168 [3]; - float fStack156; - float fStack152; - float fStack148; - float fStack144; - float fStack140; - float fStack136; - float afStack132 [16]; - LookAt *pLStack68; - byte abStack64 [64]; - - get_cur_players_room(); - pLStack68 = (LookAt *)proc_7F0875E4(); - proc_7F0BD6E0(); - *(LookAt **)&pPlayer->field_5C = pLStack68; - proc_7F0BD6E0(); - *(LookAt **)&pPlayer->field_60 = pLStack68; - proc_7F0BD6E0(); - *(LookAt **)&pPlayer->field_64 = pLStack68; - proc_7F0BD6E0(); - *(LookAt **)&pPlayer->field_68 = pLStack68; - proc_7F0BD6F8(2); - fStack156 = (*param_1 - (float)pPlayer->current_model_xpos) * flt_800364CC; - fStack152 = (param_1[1] - (float)pPlayer->current_model_ypos) * flt_800364CC; - fStack148 = (param_1[2] - (float)pPlayer->current_model_zpos) * flt_800364CC; - fStack144 = *param_2 + fStack156; - fStack140 = param_2[1] + fStack152; - fStack136 = param_2[2] + fStack148; - proc_7F059424(afStack132,extraout_f12,extraout_f14,fStack156,fStack152,fStack148,*param_2, - param_2[1],param_2[2],*param_3); - fVar8 = param_3[2]; - guLookAtReflect((Mtx *)abStack64,pLStack68,xEye,yEye,fStack156,fStack152,fStack148,fStack144, - fStack140,fStack136,*param_3); - pfVar1 = param_1; - proc_7F059424((float *)pPlayer->field_64,extraout_f12_00,extraout_f14_00,*param_1,param_1[1], - param_1[2],*param_2,param_2[1],param_2[2],*param_3); - fVar11 = *param_2; - fVar12 = param_2[1]; - fVar10 = param_2[2]; - fVar7 = *param_3; - fVar6 = param_3[1]; - fVar9 = param_3[2]; - proc_7F059708((float *)pPlayer->field_68,extraout_f12_01,extraout_f14_01,*param_1,param_1[1], - param_1[2],fVar11,fVar12,fVar10,fVar7); - proc_7F0BD6E0(); - pfVar4 = (float *)proc_7F0783E4(); - proc_7F0580C8(pfVar4,afStack132,(int)(Mtx *)afStack232); - pfVar4 = afStack232; - do { - iVar3 = 0; - pfVar2 = pfVar4; - do { - iVar3 += 4; - if (32000.00000000 < *pfVar2) { - *pfVar2 = 32000.00000000; - } - else { - if (*pfVar2 < -32000.00000000) { - *pfVar2 = -32000.00000000; - } - } - pfVar2 = pfVar2 + 1; - } while (iVar3 != 0x10); - pfVar4 = pfVar4 + 4; - } while (pfVar4 != afStack168); - guMtxF2L((float [4] [4]) - CONCAT568(CONCAT524(CONCAT484(CONCAT444(CONCAT404(CONCAT2812(CONCAT244(CONCAT204( - CONCAT164(CONCAT124(CONCAT84(CONCAT44(fVar11, - fVar12),fVar10),fVar7),fVar6),fVar9),fVar8), - in_stack_fffffee4),unaff_s0_lo),unaff_s1_lo), - unaff_s2_lo),unaff_retaddr),in_stack_ffffff00), - (Mtx *)afStack232); - proc_7F078384(pfVar1); - fVar5 = proc_7F0B4878(); - matrix_multiply_A1_by_F12((float)fVar5,extraout_a0,afStack132); - guMtxF2L((float [4] [4]) - CONCAT568(CONCAT524(CONCAT484(CONCAT444(CONCAT404(CONCAT2812(CONCAT244(CONCAT204( - CONCAT164(CONCAT124(CONCAT84(CONCAT44(fVar11, - fVar12),fVar10),fVar7),fVar6),fVar9),fVar8), - in_stack_fffffee4),unaff_s0_lo),unaff_s1_lo), - unaff_s2_lo),unaff_retaddr),in_stack_ffffff00), - (Mtx *)afStack132); - proc_7F059334((uint *)pPlayer->field_5C,pPlayer->field_60); - proc_7F078344(pPlayer->field_5C); - proc_7F078324(pPlayer->field_60); - proc_7F0783A4(pPlayer->field_64); - proc_7F078424(pPlayer->field_68); - proc_7F078464(pLStack68); - proc_7F0785DC(); - store_BONDdata_curpos_to_previous(); - return; -} - - - -undefined4 proc_7F087A08(undefined4 param_1) - -{ - float vector2; - float fVar1; - undefined4 auStack76 [3]; - float local_40; - f32 local_3c; - float local_38; - float local_34; - undefined4 local_30; - undefined4 local_2c; - int *local_28; - f32 local_24; - f32 local_20; - f32 local_1c; - float local_18; - float local_14; - float local_10; - f32 local_c; - f32 local_8; - f32 local_4; - - if (pPlayer->unknown == 1) { - local_c = pPlayer->xpos; - local_8 = pPlayer->ypos; - local_4 = pPlayer->zpos; - local_18 = (float)pPlayer->xpos2 - (float)pPlayer->xpos; - local_14 = (float)pPlayer->ypos2 - (float)pPlayer->ypos; - local_10 = (float)pPlayer->zpos2 - (float)pPlayer->zpos; - local_24 = pPlayer->xoffset; - local_20 = pPlayer->yoffset; - local_1c = pPlayer->zoffset; - } - else { - local_28 = &pPlayer->ptr_tile_printmanpos; - local_34 = dword_80036830; - local_30 = dword_80036834; - local_2c = dword_80036838; - if (pPlayer->bonddead == 0) { - proc_7F09C7C4((float *)&pPlayer->field_4B4,(float *)&pPlayer->field_4C0,&local_34); - } - else { - video_related_9(0.00000000); - } - local_c = (f32)local_28[0xb]; - local_8 = (f32)local_28[0xc]; - local_4 = (f32)local_28[0xd]; - local_18 = (float)local_28[0xe]; - local_14 = (float)local_28[0xf]; - local_10 = (float)local_28[0x10]; - local_24 = (f32)local_28[0x11]; - local_20 = (f32)local_28[0x12]; - local_1c = (f32)local_28[0x13]; - } - proc_7F0876C4((float *)&local_c,&local_18,(float *)&local_24); - proc_7F068190(auStack76,&local_40); - vector2 = sqrtf(local_38 * local_38 + local_40 * local_40); - fVar1 = get_curplay_vertical_rotation_in_degrees(); - vector2 = convert_angle_using_inverse(local_3c,(f32)vector2); - vector2 = vector2 + fVar1; - if (flt_8005526C <= vector2) { - vector2 = vector2 - flt_80055270; - } - *(float *)&pPlayer->field_2A08 = vector2; - vector2 = convert_angle_using_inverse((f32)-local_40,(f32)-local_38); - if (flt_80055274 <= vector2) { - vector2 = vector2 - flt_80055278; - } - *(float *)&pPlayer->field_2A0C = vector2; - return param_1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void seems_to_load_cuff_microcode(void) - -{ - u8 selectedbond; - uint *puVar1; - int objinst; - ushort **ppuVar2; - int in_a1_lo; - int in_a2_lo; - int iVar3; - int iVar4; - ushort *puVar5; - - selectedbond = getSelectedFolderBond(); - iVar3 = *(int *)(in_a1_lo + 8); - iVar4 = in_a2_lo * 4; - ppuVar2 = (ushort **)(iVar3 + iVar4); - if (*ppuVar2 == NULL) { - puVar5 = ppuVar2[1]; - } - else { - puVar1 = (uint *)extract_id_from_object_structure_microcode(objinst,*ppuVar2); - *puVar1 = (uint)(pPlayer->cuff_value == 3); - iVar3 = *(int *)(in_a1_lo + 8); - ppuVar2 = (ushort **)(iVar3 + iVar4); - puVar5 = ppuVar2[1]; - } - if (puVar5 != NULL) { - puVar1 = (uint *)extract_id_from_object_structure_microcode - (objinst,*(ushort **)(iVar3 + (in_a2_lo + 1) * 4)); - iVar3 = pPlayer->cuff_value; - if (iVar3 == 1) { - *puVar1 = (uint)(iVar3 == 1); - } - else { - if (iVar3 == 6) { - *puVar1 = (uint)(iVar3 == 6); - } - else { - if (iVar3 == 7) { - *puVar1 = (uint)(iVar3 == 7); - } - else { - if (iVar3 == 8) { - *puVar1 = (uint)(selectedbond != '\x01'); - } - else { - *puVar1 = (uint)(iVar3 == 8); - } - } - } - } - iVar3 = *(int *)(in_a1_lo + 8); - ppuVar2 = (ushort **)(iVar3 + iVar4); - } - if (ppuVar2[2] != NULL) { - puVar1 = (uint *)extract_id_from_object_structure_microcode - (objinst,*(ushort **)(iVar3 + (in_a2_lo + 2) * 4)); - iVar3 = pPlayer->cuff_value; - if (iVar3 == 5) { - *puVar1 = (uint)(iVar3 == 5); - } - else { - if (iVar3 == 8) { - *puVar1 = (uint)(selectedbond == '\x01'); - } - else { - *puVar1 = (uint)(iVar3 == 8); - } - } - iVar3 = *(int *)(in_a1_lo + 8); - ppuVar2 = (ushort **)(iVar3 + iVar4); - } - if (ppuVar2[3] != NULL) { - puVar1 = (uint *)extract_id_from_object_structure_microcode - (objinst,*(ushort **)(iVar3 + (in_a2_lo + 3) * 4)); - *puVar1 = (uint)(pPlayer->cuff_value == 0); - iVar3 = *(int *)(in_a1_lo + 8); - ppuVar2 = (ushort **)(iVar3 + iVar4); - } - if (ppuVar2[4] != NULL) { - puVar1 = (uint *)extract_id_from_object_structure_microcode - (objinst,*(ushort **)(iVar3 + (in_a2_lo + 4) * 4)); - *puVar1 = (uint)(pPlayer->cuff_value == 2); - iVar3 = *(int *)(in_a1_lo + 8); - ppuVar2 = (ushort **)(iVar3 + iVar4); - } - if (ppuVar2[5] != NULL) { - puVar1 = (uint *)extract_id_from_object_structure_microcode - (objinst,*(ushort **)(iVar3 + (in_a2_lo + 5) * 4)); - *puVar1 = (uint)(pPlayer->cuff_value == 4); - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f088514) overlaps instruction at (ram,0x7f088510) -// - -undefined4 * proc_7F087E74(undefined4 *param_1) - -{ - int *piVar1; - int iVar2; - undefined4 *puVar3; - Player *pPVar5; - longlong lVar4; - undefined8 extraout_a0; - undefined4 extraout_a2_lo; - float *pfVar6; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - float **ppfVar7; - float **ppfVar8; - float **ppfVar9; - float **ppfVar10; - float *pfVar11; - float fVar12; - float fovy; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float aspect; - undefined4 *local_res0; - float afStack428 [16]; - int *local_16c; - int local_168; - float *local_160; - float local_15c; - float local_144; - float local_140; - float local_13c; - float afStack312 [4]; - float afStack296 [4]; - float afStack280 [4]; - float afStack264 [3]; - float afStack252 [3]; - float afStack240 [18]; - ushort local_a6; - Mtx *local_a4; - Mtx *local_a0; - Gitemheader *local_98; - float *local_94; - float *local_90; - float local_8c; - float local_88; - float local_84; - float afStack128 [16]; - float *local_40; - undefined4 local_3c; - undefined4 local_38; - undefined4 *local_34; - float *local_30; - undefined4 local_10; - uint local_c; - - local_res0 = param_1; - if (pPlayer->pause_animation_state != 0) { - ppfVar9 = (float **)&dword_8003683C; - ppfVar7 = &local_40; - local_res0 = param_1; - if (pPlayer->pausing_flag != 0) { - do { - ppfVar10 = ppfVar9 + 3; - ppfVar8 = ppfVar7 + 3; - *ppfVar7 = *ppfVar9; - ppfVar7[1] = ppfVar9[1]; - ppfVar7[2] = ppfVar9[2]; - ppfVar9 = ppfVar10; - ppfVar7 = ppfVar8; - } while (ppfVar10 != (float **)0x80036878); - *ppfVar8 = pfRam80036878; - local_8c = DAT_8003687c; - local_88 = (float)DAT_80036880; - local_84 = (float)DAT_80036884; - local_98 = get_ptr_itemheader_in_hand(1); - local_a4 = (Mtx *)extract_id_from_object_structure_microcode - ((int)&pPlayer->something_with_watch_object_instance, - *(ushort **)(local_98->offset_objblock + 0xc)); - local_a0 = local_a4; - proc_7F0BD6E0(); - guPerspective(local_a4,&local_a6,fovy,aspect,(float)pPlayer->zoominfovy,1.45454550,10.00000000 - ); - *param_1 = 0x1030040; - *(Mtx **)(param_1 + 1) = local_a4 + -0x2000000; - param_1[2] = 0xbc00000e; - param_1[3] = (uint)local_a6; - local_34 = param_1 + 4; - *(int *)*local_a0 = pPlayer->paused_flag; - local_8c = (float)pPlayer->field_498 * ((float)pPlayer->field_54C + -12.00000000) + - (float)pPlayer->positionx + (float)pPlayer->field_544 * -(float)pPlayer->field_4A0; - local_88 = (float)pPlayer->field_548 + (float)pPlayer->positiony; - local_84 = (float)pPlayer->field_4A0 * ((float)pPlayer->field_54C + -12.00000000) + - (float)pPlayer->positionz + (float)pPlayer->field_544 * (float)pPlayer->field_498; - proc_7F0584D0(&local_8c,extraout_f12, - (float *)((360.00000000 - pPlayer->vv_theta) * flt_8005527C)); - local_94 = (float *)proc_7F0783C4(); - proc_7F058098(local_94,afStack128); - proc_7F0BD714((int)local_98->num_objgroups << 6); - seems_to_load_cuff_microcode(); - local_40 = afStack128; - local_30 = local_94; - subcalcmatrices(&local_40,(uint)&pPlayer->something_with_watch_object_instance,extraout_a2_lo, - extraout_a3_lo); - local_90 = (float *)0x3f800000; - pfVar11 = *(float **)(*(int *)local_98->offset_objblock + 4); - local_168 = watch_time; - pfVar6 = (float *)((float)pPlayer->field_258 / 20.00000000); - if (1.00000000 < (float)pfVar6) { - fVar12 = *pfVar11; - } - else { - fVar12 = *pfVar11; - local_90 = pfVar6; - } - local_144 = (((float)pPlayer->field_1D4 - fVar12 * (float)pPlayer->watch_scale_destination) - - local_94[0xc]) * (float)local_90 + local_94[0xc]; - local_140 = (((float)pPlayer->field_1D8 + pfVar11[2] * (float)pPlayer->watch_scale_destination - ) - local_94[0xd]) * (float)local_90 + local_94[0xd]; - fVar12 = local_94[0xe]; - local_13c = (((float)pPlayer->pause_watch_position - - pfVar11[1] * (float)pPlayer->watch_scale_destination) - fVar12) * (float)local_90 - + fVar12; - proc_7F059908(afStack240,fVar12,(float)local_90,0.00000000,0.00000000,0.00000000, - (float)pPlayer->field_1E0,(float)pPlayer->field_1E4,(float)pPlayer->field_1E8, - (float)pPlayer->field_1EC); - proc_7F058860(local_94,afStack252); - proc_7F058860(afStack240,afStack264); - proc_7F05B3F4(afStack252,afStack280); - proc_7F05B3F4(afStack264,afStack296); - proc_7F05BE10(afStack280,afStack296); - proc_7F05BA08(afStack280,afStack296,extraout_f12_00,local_90); - proc_7F05B628(afStack312,local_94); - proc_7F058998(&local_144,(int)local_94); - matrix_multiply_A1_by_F12((float)pPlayer->watch_scale_destination,extraout_a0,local_94); - iVar2 = local_168 / 0x3c; - if (false) { - trap(0x1c00); - } - if ((false) && (local_168 == -0x80000000)) { - trap(0x1800); - } - if (false) { - trap(0x1c00); - } - if ((false) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - local_15c = (-((float)(iVar2 % 0x3c) + (float)(local_168 % 0x3c) / 60.00000000) * flt_80055280 - ) / 60.00000000; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar2 / 0x3c == -0x80000000)) { - trap(0x1800); - } - local_160 = (float *)((-(float)((iVar2 / 0x3c) % 0x3c) * flt_80055280) / 60.00000000 + - local_15c / 60.00000000); - pfVar11 = (float *)((-(float)((iVar2 / 0xe10) % 0xc) * flt_80055280) / 12.00000000 + - (float)local_160 / 12.00000000 + local_15c / 720.00000000); - while (local_15c < 0.00000000) { - local_15c = local_15c + flt_80055280; - } - while ((float)local_160 < 0.00000000) { - local_160 = (float *)((float)local_160 + flt_80055280); - } - if ((float)pfVar11 < 0.00000000) { - do { - pfVar11 = (float *)((float)pfVar11 + flt_80055280); - } while ((float)pfVar11 < 0.00000000); - piVar1 = (int *)local_98->offset_objblock; - } - else { - piVar1 = (int *)local_98->offset_objblock; - } - pfVar6 = local_94 + 0x10; - proc_7F0584D0(*(float **)(*piVar1 + 4),local_15c,pfVar11); - proc_7F058068(local_94,pfVar6); - pfVar11 = local_94 + 0x20; - proc_7F0584D0(*(float **)(*(int *)(local_98->offset_objblock + 4) + 4),extraout_f12_01, - local_160); - proc_7F058068(local_94,pfVar11); - pfVar11 = local_94 + 0x30; - proc_7F0584D0(*(float **)(*(int *)(local_98->offset_objblock + 8) + 4),local_15c, - (float *)local_15c); - proc_7F058068(local_94,pfVar11); - local_38 = 3; - local_3c = 0; - local_10 = 4; - if ((pPlayer->pause_animation_state == 5) || (pPlayer->pause_animation_state == 0xc)) { - local_c = 0xcd; - } - else { - local_c = (uint)(byte)pPlayer->field_FDF | (uint)(byte)pPlayer->field_FDC << 0x18 | - (uint)(byte)pPlayer->field_FDD << 0x10 | (uint)(byte)pPlayer->field_FDE << 8; - } - pPVar5 = pPlayer; - subdraw((int)&local_40,(uint)&pPlayer->something_with_watch_object_instance,extraout_a2_lo_00, - extraout_a3_lo_00); - puVar3 = local_34; - local_16c = *(int **)(*(int *)(local_98->offset_objblock + 8) + 4); - proc_7F0BD6E0(); - init_something_copy_posdata_to_it(local_16c,(int *)afStack428); - proc_7F058068(local_94,afStack428); - proc_7F058C64(); - proc_7F058C9C((int)afStack428,(uint *)pPVar5); - proc_7F058C88(); - lVar4 = proc_7F0ACA28((longlong)(int)puVar3,(int)pPVar5, - (uint)(pPlayer->pause_animation_state == 5 || - pPlayer->pause_animation_state == 0xc)); - local_res0 = (undefined4 *)lVar4; - proc_7F058C64(); - proc_7F08BD48((undefined4 *)pPlayer->field_23C,(int)local_98->num_objgroups); - proc_7F058C88(); - } - } - return local_res0; -} - - - -undefined4 * proc_7F088618(undefined4 *param_1) - -{ - u32 uVar1; - void *virtualAddress; - float in_f12; - float extraout_f12; - float l; - float extraout_f12_00; - float r; - float extraout_f14; - float afStack72 [16]; - Mtx *pabStack8; - Mtx *pabStack4; - - proc_7F0A2F30((short *)&pPlayer->healthdamagetype,0x2e,1,in_f12); - proc_7F0A3330(&pPlayer->field_19F8,(int)&pPlayer[0x30303].field_1338,0x2e); - proc_7F0A2F30((short *)&pPlayer->related_to_health_display,0x2e,-1,extraout_f12); - pabStack8 = (Mtx *)proc_7F0A3330(&pPlayer->field_2128,(int)&pPlayer[0x30303].field_1618,0x2e); - proc_7F0BD6E0(); - pabStack4 = pabStack8; - proc_7F0BD6E0(); - guOrtho(pabStack8,l,r,flt_800364CC * -800.00000000,flt_800364CC * 800.00000000, - flt_800364CC * -600.00000000,flt_800364CC * 600.00000000,-100.00000000); - *param_1 = 0x1030040; - uVar1 = osVirtualToPhysical(pabStack8); - param_1[1] = uVar1; - proc_7F059694(afStack72,extraout_f12_00,extraout_f14,0.00000000,500.00000000,0.00000000,0.00000000 - ,0.00000000,0.00000000,0.00000000); - proc_7F058C9C((int)afStack72,(uint *)pabStack4); - param_1[2] = 0x1020040; - uVar1 = osVirtualToPhysical(pabStack4); - param_1[3] = uVar1; - param_1[4] = 0xe7000000; - param_1[5] = 0; - param_1[6] = 0xba001402; - param_1[7] = 0; - param_1[8] = 0xb900031d; - param_1[9] = 0x5041c8; - param_1[10] = 0xb9000002; - param_1[0xb] = 0; - param_1[0xc] = 0xfcffffff; - param_1[0xd] = 0xfffe793c; - param_1[0xe] = 0xfa000000; - param_1[0xf] = 0xe6e6e600; - param_1[0x10] = 0xb6000000; - param_1[0x11] = 0x3000; - param_1[0x12] = 0x6000000; - *(int **)(param_1 + 0x13) = &pPlayer[0x30303].field_1A78; - param_1[0x14] = 0x6000000; - *(int **)(param_1 + 0x15) = &pPlayer[0x30303].field_21A8; - param_1[0x16] = 0x1030040; - virtualAddress = (void *)proc_7F078374(); - uVar1 = osVirtualToPhysical(virtualAddress); - param_1[0x17] = uVar1; - return param_1 + 0x18; -} - - - -void proc_7F0888E8(void) - -{ - int *tile; - ulonglong uVar1; - uint uVar2; - u32 uVar3; - int iVar4; - int iVar5; - uint *puVar6; - float fVar7; - float __x; - int iStack12; - float fStack8; - int iStack4; - - puVar6 = (uint *)ptr_setup_intro; - iStack12 = DAT_8003688c; - fStack8 = (float)DAT_80036890; - iStack4 = DAT_80036894; - init_player_BONDdata(); - proc_7F0798B8(); - pPlayer->bonddead = 0; - pPlayer->field_428 = 0; - pPlayer->field_424 = 0; - pPlayer->field_420 = 1; - pPlayer->field_29B8 = 7; - pPlayer->damagetype = 7; - pPlayer->somekinda_flags = 0; - pPlayer->somekinda_bitflags = 2; - proc_7F08A380(0xffffffff); - proc_7F08A928(0xffffffff); - uVar1 = get_num_players(); - if ((longlong)uVar1 < 2) { - uVar2 = 0; - } - else { - if (DAT_80079c68 < 1) { - uVar2 = 0; - } - else { - uVar2 = proc_7F0790F0(); - } - } - tile = (int *)(&DAT_80079c28)[uVar2]; - iStack12 = *tile; - iStack4 = tile[2]; - tile = (int *)tile[10]; - fVar7 = proc_7F080D60((longlong)(int)tile,iStack12,iStack4); - fStack8 = (float)pPlayer->field_29BC + fVar7; - *(float *)&pPlayer->field_70 = fVar7; - uVar3 = get_random_value(); - __x = (float)uVar3; - if ((int)uVar3 < 0) { - __x = __x + 4294967296.00000000; - } - __x = __x * 0.00000000 * flt_80055284; - pPlayer->vv_theta = (__x * 360.00000000) / flt_80055284; - *(float *)&pPlayer->clipping_height = fVar7; - *(float *)&pPlayer->field_6C = fVar7 / flt_80055288; - change_player_pos_to_target(&pPlayer->ptr_tile_printmanpos,&iStack12,tile); - fVar7 = sinf(__x); - *(float *)&pPlayer->field_498 = -fVar7; - pPlayer->field_49C = 0; - __x = cosf(__x); - fVar7 = flt_8005528C; - *(float *)&pPlayer->field_4A0 = __x; - pPlayer->field_408 = iStack12; - *(int *)(pPlayer->position_data_pointer + 8) = iStack12; - *(float *)&pPlayer->field_40C = fStack8; - *(float *)(pPlayer->position_data_pointer + 0xc) = fStack8; - pPlayer->field_410 = iStack4; - *(int *)(pPlayer->position_data_pointer + 0x10) = iStack4; - *(int **)(pPlayer->position_data_pointer + 0x14) = tile; - *(float *)&pPlayer->field_3B8 = (float)pPlayer->field_4B4 / fVar7; - *(float *)&pPlayer->field_3BC = (float)pPlayer->field_4B8 / fVar7; - *(float *)&pPlayer->field_3C0 = (float)pPlayer->field_4BC / fVar7; - reinit_BONDdata_inventory(); - pPlayer->ammoheldarr[0] = 0; - pPlayer->ammoheldarr[1] = 0; - iVar4 = 8; - do { - *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4) = 0; - *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4 + 4) = 0; - *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4 + 8) = 0; - iVar5 = iVar4 + 0x10; - *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4 + 0xc) = 0; - iVar4 = iVar5; - } while (iVar5 != 0x78); - if (puVar6 != NULL) { - uVar2 = *puVar6; - while (uVar2 != 9) { - if (uVar2 < 7) { - // WARNING: Could not recover jumptable at 0x7f088be0. Too many branches - // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700BCB10)[uVar2])(); - return; - } - puVar6 = puVar6 + 1; - uVar2 = *puVar6; - } - } - pPlayer->field_78 = 0.00000000; - *(float *)&pPlayer->field_7C = flt_800552AC; - pPlayer->field_80 = 0.00000000; - set_curplayer_fade(120.00000000,1.00000000); - return; -} - - - -undefined4 * proc_7F088CD8(undefined4 *param_1) - -{ - u16 uVar1; - short *psVar2; - short sVar3; - int iVar4; - int iVar5; - uint *DL; - short sVar8; - u16 id; - byte *pbVar6; - short sVar9; - short sVar10; - undefined4 *puVar7; - longlong lVar11; - longlong lVar12; - u16 *puVar13; - int iVar14; - int iVar15; - longlong lVar16; - longlong lVar17; - int iStack40; - int iStack32; - int aiStack28 [3]; - int iStack16; - int aiStack12 [2]; - int iStack4; - - iVar5 = get_stage_num(); - if (((iVar5 == 0x36) && (dword_8003643C == 1)) && (lVar16 = 0xdc, dword_80036440 != NULL)) { - lVar17 = 0xdc; - sVar9 = 0; - camera_80036438 += 1; - sVar3 = 0; - iStack4 = camera_80036438; - DL = microcode_constructor(param_1); - sVar8 = get_video2_settings_height(); - iVar5 = iStack4 - (int)sVar8; - if (iVar5 < 0) { - iVar5 += 0xf; - } - iVar5 >>= 4; - iVar4 = iStack4; - if (iStack4 < 0) { - iVar4 = iStack4 + 0xf; - } - iStack40 = (iVar4 >> 4) + 1; - if (iVar5 < 0) { - iVar5 = 0; - } - iVar4 = 0; - lVar11 = lVar16; - lVar12 = lVar17; - psVar2 = dword_80036440; - sVar8 = sVar9; - if (0 < iVar5) { - do { - if ((*psVar2 == 0) && (psVar2[1] == 0)) { - dword_8003643C = 2; - lVar11 = lVar16; - lVar12 = lVar17; - iVar5 = iVar4; - iStack40 = iVar4; - sVar8 = sVar9; - break; - } - lVar11 = lVar16; - sVar8 = sVar9; - if (*psVar2 != 0x5011) { - lVar11 = (longlong)psVar2[2]; - if (lVar11 < 0) { - sVar8 = psVar2[3]; - lVar11 = lVar16; - } - else { - sVar8 = psVar2[3]; - } - if (sVar8 < 0) { - sVar8 = sVar9; - } - } - iVar4 += 1; - lVar12 = lVar17; - if (psVar2[1] != 0x5011) { - lVar12 = (longlong)psVar2[4]; - if (lVar12 < 0) { - sVar9 = psVar2[5]; - lVar12 = lVar17; - } - else { - sVar9 = psVar2[5]; - } - if (-1 < sVar9) { - sVar3 = sVar9; - } - } - lVar16 = lVar11; - lVar17 = lVar12; - psVar2 = psVar2 + 6; - sVar9 = sVar8; - } while (iVar4 != iVar5); - } - if (iVar5 < iStack40) { - iVar4 = iVar5 * 0xc; - puVar13 = (u16 *)(dword_80036440 + iVar5 * 6); - id = *puVar13; - lVar16 = lVar11; - lVar17 = lVar12; - if (id != 0) goto LAB_7f088e98; - uVar1 = dword_80036440[iVar5 * 6 + 1]; - while (lVar16 = lVar11, lVar17 = lVar12, uVar1 != 0) { -LAB_7f088e98: - do { - lVar11 = lVar16; - if (id != 0x5011) { - pbVar6 = get_textptr_for_textID(id); - iVar14 = (int)dword_80036440 + iVar4; - lVar11 = (longlong)*(short *)(iVar14 + 4); - if (lVar11 < 0) { - sVar9 = *(short *)(iVar14 + 6); - lVar11 = lVar16; - } - else { - sVar9 = *(short *)(iVar14 + 6); - } - iVar14 = (int)lVar11; - if (-1 < sVar9) { - sVar8 = sVar9; - } - sVar9 = get_video2_settings_height(); - sVar10 = get_video2_settings_uly(); - iStack16 = (((int)sVar10 + iVar5 * 0x10) - iStack4) + (int)sVar9; - aiStack28[0] = 0; - iStack32 = 0; - proc_7F0AE98C(aiStack28,&iStack32,pbVar6,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - if (sVar8 == 1) { - lVar16 = (longlong)(iVar14 - iStack32); - } - else { - if (sVar8 == 2) { - iVar15 = iVar14 - (iStack32 >> 1); - iVar14 = iVar15 + iStack32; - lVar16 = (longlong)iVar15; - } - else { - iVar14 += iStack32; - lVar16 = lVar11; - } - } - aiStack12[0] = (int)lVar16; - puVar7 = microcode_constructor_related_to_menus - (DL,lVar16,(longlong)(iStack16 + -1),(longlong)(iVar14 + 1), - iStack16 + aiStack28[0] + 1,0); - sVar9 = get_video2_settings_txtClipW(); - sVar10 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(puVar7,aiStack12,&iStack16,pbVar6,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xffffffff,(int)sVar9,(int)sVar10,0,0); - puVar13 = (u16 *)((int)dword_80036440 + iVar4); - } - lVar12 = lVar17; - if (puVar13[1] != 0x5011) { - pbVar6 = get_textptr_for_textID(puVar13[1]); - iVar14 = (int)dword_80036440 + iVar4; - lVar12 = (longlong)*(short *)(iVar14 + 8); - if (lVar12 < 0) { - sVar9 = *(short *)(iVar14 + 10); - lVar12 = lVar17; - } - else { - sVar9 = *(short *)(iVar14 + 10); - } - iVar14 = (int)lVar12; - if (-1 < sVar9) { - sVar3 = sVar9; - } - sVar9 = get_video2_settings_height(); - sVar10 = get_video2_settings_uly(); - iStack16 = (((int)sVar10 + iVar5 * 0x10) - iStack4) + (int)sVar9; - aiStack28[0] = 0; - iStack32 = 0; - proc_7F0AE98C(aiStack28,&iStack32,pbVar6,(int)ptrSecondFontTable, - (int *)ptrFirstFontTable,0); - if (sVar3 == 1) { - lVar16 = (longlong)(iVar14 - iStack32); - } - else { - if (sVar3 == 2) { - iVar15 = iVar14 - (iStack32 >> 1); - iVar14 = iVar15 + iStack32; - lVar16 = (longlong)iVar15; - } - else { - iVar14 += iStack32; - lVar16 = lVar12; - } - } - aiStack12[0] = (int)lVar16; - puVar7 = microcode_constructor_related_to_menus - (DL,lVar16,(longlong)(iStack16 + -1),(longlong)(iVar14 + 1), - iStack16 + aiStack28[0] + 1,0); - sVar9 = get_video2_settings_txtClipW(); - sVar10 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(puVar7,aiStack12,&iStack16,pbVar6,(int)ptrSecondFontTable, - (int)ptrFirstFontTable,0xffffffff,(int)sVar9,(int)sVar10,0,0); - } - iVar5 += 1; - iVar4 += 0xc; - if (iStack40 <= iVar5) goto LAB_7f0891c8; - puVar13 = (u16 *)((int)dword_80036440 + iVar4); - id = *puVar13; - lVar16 = lVar11; - lVar17 = lVar12; - } while (id != 0); - uVar1 = puVar13[1]; - } - } -LAB_7f0891c8: - param_1 = combiner_bayer_lod_perspective(DL); - } - return param_1; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 * maybe_mp_interface(void) - -{ - int *piVar1; - undefined4 *puVar3; - short sVar7; - short sVar8; - short sVar9; - short sVar10; - short sVar11; - short sVar12; - ulonglong uVar2; - s16 sVar13; - int iVar4; - u32 uVar5; - int *piVar6; - longlong lVar14; - undefined4 *in_a0_lo; - undefined4 extraout_a0_lo; - int iVar15; - undefined unaff_retaddr; - float local_34; - float extraout_f0; - float fVar16; - undefined4 *local_res0; - undefined in_stack_ffffffbf; - undefined in_stack_ffffffc3; - undefined in_stack_ffffffcb; - undefined4 in_stack_ffffffd0; - - if (pPlayer->unknown == 1) { - local_res0 = in_a0_lo; - proc_7F08A4E4(); - local_res0 = proc_7F08A5FC(local_res0); - proc_7F08A9F8(); - local_res0 = (undefined4 *)proc_7F08AAE8(); - local_res0 = proc_7F056210(local_res0); - local_res0 = proc_7F0804E0(local_res0); - puVar3 = proc_7F088CD8(local_res0); - } - else { - local_res0 = in_a0_lo; - proc_7F061920(); - proc_7F06908C((undefined4 *)register0x000000ec); - proc_7F062BE4((undefined4 *)register0x000000ec); - local_res0 = proc_7F087E74(local_res0); - if (pPlayer->mpmenuon != 0) { - sVar7 = get_video2_settings_ulx(); - sVar8 = get_video2_settings_uly(); - sVar9 = get_video2_settings_ulx(); - sVar10 = get_video2_settings_width(); - sVar11 = get_video2_settings_uly(); - sVar12 = get_video2_settings_height(); - local_res0 = microcode_constructor(local_res0); - in_stack_ffffffbf = 0xa0; - local_res0 = microcode_constructor_related_to_menus - (local_res0,(longlong)(int)sVar7,(longlong)(int)sVar8, - (longlong)((int)sVar10 + (int)sVar9),(int)sVar12 + (int)sVar11,0xa0); - } - uVar2 = check_if_healthbar_timer_greater_than_0(); - if ((uVar2 == 0) || (pPlayer->pause_animation_state != 0)) { - uVar2 = proc_7F0C6048(); - if (uVar2 != 0) { - local_res0 = proc_7F088618(local_res0); - iVar4 = pPlayer->healthdisplaytime; - if (0 < iVar4) { - pPlayer->healthdisplaytime = iVar4 - clock_timer; - iVar4 = pPlayer->healthdisplaytime; - } - if (iVar4 < 0) { - pPlayer->healthdisplaytime = 0; - } - } - } - else { - local_res0 = proc_7F088618(local_res0); - } - uVar2 = get_num_players(); - if (uVar2 == 1) { - display_objective_status_text_on_status_change(); - } - if (pPlayer->bonddead != 0) { - if (pPlayer->field_428 == 0) { - if (pPlayer->bonddead == 1) { - pPlayer->bonddead = 2; - local_34 = (float)die_blood_image_routine(); - uVar2 = get_num_players(); - sVar13 = (s16)uVar2; - if (uVar2 == 1) { - reset_music_in_slot(0xffffffff); - set_missionstate(0); - proc_7F0C0BF0(); - musicTrack1Vol(sVar13); - music1_playing = 0; - musicTrack2Vol(0); - music2_playing = FALSE; - musicTrack1Play(M_DEATHSOLO); - } - else { - set_missionstate(6); - } - } - else { - if (pPlayer->field_424 == 0) { - lVar14 = die_blood_image_routine(); - if (lVar14 != 0) { - pPlayer->field_424 = 1; - } - local_34 = extraout_f0; - local_res0 = proc_7F01C670(local_res0); - } - else { - proc_7F0807B0(0x96,0,0,0x3f34b4b5); - } - } - } - proc_7F06F5BC((int)&pPlayer->field_598); - fVar16 = proc_7F06F5C4((int)&pPlayer->field_598); - if ((fVar16 <= local_34) && (pPlayer->field_424 != 0)) { - if (pPlayer->field_428 == 0) { - pPlayer->field_428 = 1; - proc_7F0807E0(extraout_a0_lo,0,0,0,0x3f800000,in_stack_ffffffbf,in_stack_ffffffc3, - unaff_retaddr,in_stack_ffffffcb,SUB41(local_34,0),in_stack_ffffffd0); - set_curplayer_fade(120.00000000,0.00000000); - } - uVar2 = check_if_fade_to_black_complete(); - if (uVar2 != 0) { - uVar2 = get_num_players(); - if (uVar2 == 1) { - set_camera_mode(5); - } - else { - iVar4 = get_scenario(); - uVar5 = get_cur_playernum(); - uVar2 = get_num_players(); - iVar15 = 0; - lVar14 = 0; - if (0 < (longlong)uVar2) { - piVar6 = player1_playerdata.shotcount + uVar5; - do { - piVar1 = piVar6 + 9; - lVar14 = (longlong)((int)lVar14 + 1); - piVar6 = piVar6 + 0x1c; - iVar15 += *piVar1; - } while (lVar14 < (longlong)uVar2); - } - if ((iVar4 != 1) || (iVar15 < 2)) { - uVar5 = get_cur_playernum(); - uVar2 = get_controller_buttons_held((char)uVar5,0xb000); - if (uVar2 != 0) { - proc_7F0888E8(); - } - } - } - } - } - } - proc_7F08A4E4(); - local_res0 = proc_7F08A5FC(local_res0); - proc_7F08A9F8(); - local_res0 = (undefined4 *)proc_7F08AAE8(); - proc_7F06A5E4((uint **)register0x000000ec); - local_res0 = (undefined4 *)generate_ammo_total_microcode(); - local_res0 = proc_7F056210(local_res0); - local_res0 = display_red_blue_on_radar(local_res0); - puVar3 = proc_7F0804E0(local_res0); - } - return puVar3; -} - - - -undefined8 write_stan_tiles_in_yellow(undefined8 param_1) - -{ - if (DAT_80079da0 != 0) { - param_1 = proc_7F0B3024(param_1); - } - if (DAT_80079da4 != 0) { - param_1 = proc_7F0B3024(param_1); - } - return param_1; -} - - - -void proc_7F089718(float param_1) - -{ - float *pfVar1; - Player *pPVar2; - - pPVar2 = pPlayer; - pfVar1 = (float *)&pPlayer->positionz; - *(float *)&pPlayer->positionx = (float)pPlayer->positionx * (flt_800364D0 / param_1); - *(float *)&pPVar2->positionz = *pfVar1 * (flt_800364D0 / param_1); - flt_800364D0 = param_1; - flt_800364D4 = 1.00000000 / param_1; - return; -} - - - -void proc_7F08976C(undefined4 param_1) - -{ - undefined4 in_f12; - - flt_800364CC = in_f12; - return; -} - - - -undefined4 proc_7F089778(int param_1) - -{ - undefined4 in_v0_lo; - - return in_v0_lo; -} - - - -float proc_7F089780(int param_1) - -{ - return *(float *)(param_1 + 0x29bc) + *(float *)(param_1 + 0x88) + *(float *)(param_1 + 0xa0); -} - - - -int get_curplayer_positiondata(void) - -{ - return pPlayer->position_data_pointer; -} - - - -void kill_current_player(void) - -{ - int iVar1; - Player *pPVar2; - Player *pPVar3; - Player *pPVar4; - Player *pPVar5; - - if ((pPlayer->bondinvincible == '\0') && (pPlayer->bonddead == 0)) { - if (pPlayer->pause_animation_state != 0) { - trigger_solo_watch_menu(1); - } - mission_kia = TRUE; - pPlayer->bonddead = 1; - pPVar2 = (Player *)&pPlayer->current_room_ypos; - pPVar5 = pPlayer; - pPVar3 = pPlayer; - do { - pPVar4 = (Player *)&pPVar3->zpos; - pPVar5->field_434 = pPVar3->ptr_tile_printmanpos; - *(f32 *)&pPVar5->field_438 = pPVar3->positionx; - pPVar5->field_43C = pPVar3->positiony; - pPVar5 = (Player *)&pPVar5->zpos; - pPVar3 = pPVar4; - } while (pPVar4 != pPVar2); - *(float *)&pPlayer->field_414 = pPlayer->vv_theta; - *(float *)&pPlayer->field_418 = pPlayer->vv_verta; - if (ptr_playerstank != 0) { - dword_8003648C = 1; - } - draw_item_in_hand_has_more_ammo(1,ITEM_UNARMED); - draw_item_in_hand_has_more_ammo(0,ITEM_UNARMED); - iVar1 = getMissiontime(); - if (iVar1 - pPlayer->field_29F4 < pplayersperm->shortestlife) { - iVar1 = getMissiontime(); - pplayersperm->shortestlife = iVar1 - pPlayer->field_29F4; - } - iVar1 = getMissiontime(); - pPlayer->field_29F4 = iVar1; - } - return; -} - - - -int proc_7F0898E8(void) - -{ - int iVar1; - - iVar1 = get_cur_controller_vert_stick_pos('\0'); - return (iVar1 * 8 + 0x280) / 0xa0; -} - - - -// WARNING: Instruction at (ram,0x7f0899cc) overlaps instruction at (ram,0x7f0899c8) -// -// WARNING: Unknown calling convention yet parameter storage is locked - -ulonglong record_damage_kills(void) - -{ - bool bVar1; - ulonglong uVar2; - u32 playernum; - int iVar4; - longlong lVar3; - int **ppiVar5; - float vector2; - u32 playernum_00; - float fVar6; - float in_f12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - f32 vector1; - int in_stack_00000010; - float fStack4; - - fStack4 = pplayersperm->handicap * in_f12; - if (pPlayer->pause_animation_state != 0) { - get_BONDdata_watch_armor(); - proc_7F0A2F30((short *)&pPlayer->healthdamagetype,0x2e,1,extraout_f12); - get_BONDdata_watch_health(); - proc_7F0A2F30((short *)&pPlayer->related_to_health_display,0x2e,-1,extraout_f12_00); - } - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - if (stop_play_flag != 0) { - return uVar2; - } - if (is_gameover_flag != 0) { - return uVar2; - } - } - if (in_tank_flag == TRUE) { - fStack4 = fStack4 * 0.25000000; - } - if ((pPlayer->bonddead == 0) && (pPlayer->bondinvincible == '\0')) { - playernum = get_cur_playernum(); - controller_7000C854(playernum,extraout_f12_01); - iVar4 = cur_player_get_control_type(); - if (3 < iVar4) { - playernum = get_cur_playernum(); - uVar2 = get_num_players(); - controller_7000C854((int)uVar2 + playernum,extraout_f12_02); - } - } - uVar2 = get_num_players(); - if ((1 < (longlong)uVar2) && (iVar4 = get_scenario(), iVar4 == 4)) { - fStack4 = (float)pPlayer->bondhealth * (float)pPlayer->actual_health + - (float)pPlayer->bondarmour * (float)pPlayer->actual_armor; - } - lVar3 = (longlong)(int)pPlayer; - if (pPlayer->bondinvincible != '\0') { - return lVar3; - } - if (pPlayer->bonddead != 0) { - return lVar3; - } - if (disable_player_pickups_flag != 0) { - return lVar3; - } - if (pPlayer->damageshowtime < 0) { - iVar4 = pPlayer->pause_animation_state; - } - else { - uVar2 = get_num_players(); - if ((longlong)uVar2 < 2) { - return ZEXT48(&DAT_80080000); - } - lVar3 = (longlong)(int)pPlayer; - if (pPlayer->damageshowtime != 0) { - return lVar3; - } - iVar4 = pPlayer->pause_animation_state; - } - if (iVar4 == 5) { - return lVar3; - } - if (iVar4 == 0xc) { - return lVar3; - } - *(undefined4 *)((int)lVar3 + 0xe4) = *(undefined4 *)((int)lVar3 + 0xdc); - pPlayer->oldarmour = pPlayer->bondarmour; - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - playernum = get_cur_playernum(); - fVar6 = convert_angle_using_inverse(vector1,(f32)vector2); - fVar6 = (&ptr_BONDdata_p1)[playernum]->vv_theta - - (360.00000000 - (fVar6 * 180.00000000) / flt_800552B0); - if (fVar6 < 0.00000000) { - fVar6 = -fVar6; - } - if (90.00000000 <= fVar6) { - if (fVar6 <= 270.00000000) goto LAB_7f089c1c; - iVar4 = (&player1_playerdata)[playernum_00].backshotcount; - } - else { - iVar4 = (&player1_playerdata)[playernum_00].backshotcount; - } - (&player1_playerdata)[playernum_00].backshotcount = iVar4 + 1; - } -LAB_7f089c1c: - if (in_stack_00000010 == 0) { -LAB_7f089c68: - if (in_stack_00000010 != 0) { - fStack4 = fStack4 - (float)pPlayer->bondarmour / (float)pPlayer->actual_armor; - pPlayer->bondarmour = 0.00000000; - pPlayer->actual_armor = 1.00000000; - } - *(float *)&pPlayer->bondhealth = - (float)pPlayer->bondhealth - fStack4 / (float)pPlayer->actual_health; - if (0.00000000 < (float)pPlayer->bondhealth) { - iVar4 = pPlayer->damageshowtime; - goto LAB_7f089ddc; - } - uVar2 = get_num_players(); - if (1 < (longlong)uVar2) { - playernum = get_cur_playernum(); - bVar1 = false; - iVar4 = get_scenario(); - lVar3 = (longlong)iVar4; - if (lVar3 == 3) { - checkforgoldengun(); - bVar1 = lVar3 != 0; - } - if (playernum != playernum_00) { - drop_inventory(); - increment_num_deaths(); - } - set_cur_player(playernum_00); - if (playernum == playernum_00) { - increment_num_suicides_display_MP(); - } - else { - increment_num_kills_display_text_in_MP(); - if (bVar1) { - increment_num_times_killed_MwtGC(); - } - } - set_cur_player(playernum); - (&player1_playerdata)[playernum_00].kills[playernum] = - (&player1_playerdata)[playernum_00].kills[playernum] + 1; - } - kill_current_player(); - } - else { - if ((float)pPlayer->bondarmour * (float)pPlayer->actual_armor < fStack4) goto LAB_7f089c68; - *(float *)&pPlayer->bondarmour = - (float)pPlayer->bondarmour - fStack4 / (float)pPlayer->actual_armor; - } - iVar4 = pPlayer->damageshowtime; -LAB_7f089ddc: - if (iVar4 < 0) { - *(float *)&pPlayer->boost_factor_x = - (float)pPlayer->boost_factor_x + (float)vector1 + (float)vector1; - *(float *)&pPlayer->boost_factor_z = (float)pPlayer->boost_factor_z + vector2 + vector2; - } - pPlayer->damageshowtime = 0; - pPlayer->healthshowtime = 0; - ppiVar5 = play_sfx_a1(ptr_sfx_buf,0x44,NULL); - return (longlong)(int)ppiVar5; -} - - - -void proc_7F089E4C(undefined4 param_1,float param_2,undefined8 param_3,undefined8 param_4, - undefined4 param_5,undefined4 param_6) - -{ - float __x; - - sinf(__x); - cosf(__x); - record_damage_kills(); - return; -} - - - -ulonglong check_if_bond_is_invincible(void) - -{ - return (ulonglong)(pPlayer->damageshowtime < 0) ^ 1; -} - - - -ulonglong check_if_healthbar_timer_greater_than_0(void) - -{ - return (ulonglong)(0 < pPlayer->healthshowtime); -} - - - -f32 get_BONDdata_field19C(void) - -{ - return pPlayer->bondfadefracnew; -} - - - -float get_curplay_horizontal_rotation_in_degrees(void) - -{ - return ((360.00000000 - pPlayer->vv_theta) * flt_800552B4) / 360.00000000; -} - - - -float get_curplay_vertical_rotation_in_degrees(void) - -{ - return (pPlayer->vv_verta * flt_800552B8) / 360.00000000; -} - - - -int proc_7F089F38(void) - -{ - return pPlayer->field_D0; -} - - - -void set_bondata_invincible_flag(char param_1) - -{ - pPlayer->bondinvincible = param_1; - return; -} - - - -ulonglong get_bondata_invincible_flag(void) - -{ - return (ulonglong)(byte)pPlayer->bondinvincible; -} - - - -void set_invisible_to_guards_flag(BOOL param_1) - -{ - visible_to_guards_flag = param_1; - return; -} - - - -BOOL get_invisible_to_guards_flag(void) - -{ - return visible_to_guards_flag; -} - - - -void set_obj_collision_flag(int flag) - -{ - obj_collision_flag = flag; - return; -} - - - -BOOL get_obj_collision_flag(void) - -{ - return obj_collision_flag; -} - - - -ulonglong get_cur_players_room(void) - -{ - int iVar1; - - if (pPlayer->unknown == 1) { - if (pPlayer->room_pointer != 0) { - return (ulonglong)*(byte *)(pPlayer->room_pointer + 3); - } - iVar1 = pPlayer->room_tile_ptr; - } - else { - iVar1 = pPlayer->room_tile_ptr; - } - return (ulonglong)*(byte *)(iVar1 + 3); -} - - - -xyzpoint * get_BONDdata_position(void) - -{ - if (pPlayer->unknown == 1) { - return (xyzpoint *)&pPlayer->xpos; - } - return (xyzpoint *)&pPlayer->field_4B4; -} - - - -int * get_BONDdata_position3(void) - -{ - if (pPlayer->unknown == 1) { - return (int *)&pPlayer->xpos3; - } - return &pPlayer->field_4A4; -} - - - -int proc_7F08A02C(void) - -{ - return (int)&pPlayer->field_408; -} - - - -void proc_7F08A03C(int param_1,int param_2) - -{ - longlong lVar1; - - lVar1 = proc_7F09B15C(param_1); - if (*(GUARDdata **)(param_1 + 4) != NULL) { - set_or_unset_GUARDdata_flag(*(GUARDdata **)(param_1 + 4),param_2); - } - if (ptr_playerstank != 0) { - proc_7F04F218(ptr_playerstank,(longlong)param_2); - } - (&ptr_BONDdata_p1)[(int)lVar1]->field_AC = param_2; - return; -} - - - -// WARNING: Instruction at (ram,0x7f08a118) overlaps instruction at (ram,0x7f08a114) -// - -void proc_7F08A0B0(int param_1,int **param_2,undefined4 *param_3,float *param_4,float *param_5) - -{ - longlong lVar1; - int iVar3; - ulonglong uVar2; - Player **ppPVar4; - float fVar5; - - lVar1 = proc_7F09B15C(param_1); - iVar3 = (int)lVar1; - if (((&ptr_BONDdata_p1)[iVar3]->field_AC == 0) || - (((uVar2 = get_num_players(), uVar2 != 1 && ((&ptr_BONDdata_p1)[iVar3]->bonddead != 0)) || - (ppPVar4 = &ptr_BONDdata_p1 + iVar3, (*ppPVar4)->unknown == 1)))) { - *param_3 = 0; - } - else { - *param_3 = 4; - *param_2 = &(*ppPVar4)->field_B0; - *(f32 *)param_5 = (*ppPVar4)->field_70; - fVar5 = proc_7F089780((int)*ppPVar4); - *param_4 = fVar5 + *param_5 + 10.00000000; - } - return; -} - - - -void proc_7F08A19C(void) - -{ - float in_f12; - - if (in_tank_flag == TRUE) { - proc_7F07C888((float *)&pPlayer->field_B0,(float *)&pPlayer->positionx,in_f12); - } - else { - *(float *)&pPlayer->field_B0 = (float)pPlayer->positionx + (float)pPlayer->collision_radius; - pPlayer->zpos_0 = pPlayer->positionz; - *(f32 *)&pPlayer->xpos_0 = pPlayer->positionx; - *(float *)&pPlayer->field_BC = (float)pPlayer->positionz + (float)pPlayer->collision_radius; - *(float *)&pPlayer->field_C0 = (float)pPlayer->positionx - (float)pPlayer->collision_radius; - pPlayer->zpos_1 = pPlayer->positionz; - *(f32 *)&pPlayer->xpos_1 = pPlayer->positionx; - *(float *)&pPlayer->field_CC = (float)pPlayer->positionz - (float)pPlayer->collision_radius; - } - return; -} - - - -void proc_7F08A274(int param_1,undefined4 *param_2,float *param_3,undefined4 *param_4) - -{ - longlong lVar1; - float fVar2; - - lVar1 = proc_7F09B15C(param_1); - *param_2 = (&ptr_BONDdata_p1)[(int)lVar1]->collision_radius; - fVar2 = proc_7F089780((int)(&ptr_BONDdata_p1)[(int)lVar1]); - *param_3 = (fVar2 + 10.00000000) - 30.00000000; - *param_4 = 0x41f00000; - return; -} - - - -f32 get_BONDdata_watch_health(void) - -{ - return pPlayer->bondhealth; -} - - - -f32 get_BONDdata_watch_armor(void) - -{ - return pPlayer->bondarmour; -} - - - -void add_BONDdata_watch_armor(f32 amount) - -{ - pplayersperm->armourcount = pplayersperm->armourcount + (float)amount; - pPlayer->bondarmour = amount; - return; -} - - - -void reset_intro_camera_message_dialogs_for_BONDdata(void) - -{ - pPlayer->hudmessoff = 0; - pPlayer->bondmesscnt = -1; - status_bar_text_buffer_index = 0; - display_statusbar = FALSE; - copy_1stfonttable = D_80040EAC; - copy_2ndfonttable = D_80040EB0; - return; -} - - - -void proc_7F08A380(uint param_1) - -{ - pPlayer->hudmessoff = pPlayer->hudmessoff & ~param_1; - return; -} - - - -void set_flags_in_BONDdata_stationary_intro_cam(uint param_1) - -{ - pPlayer->hudmessoff = pPlayer->hudmessoff | param_1; - return; -} - - - -void proc_7F08A3B4(undefined4 param_1,undefined4 param_2) - -{ - copy_1stfonttable = param_2; - copy_2ndfonttable = param_1; - return; -} - - - -ulonglong display_string_in_lower_left_corner(char *text) - -{ - int iVar1; - Player *pPVar2; - ulonglong uVar3; - char *pcVar4; - u32 uVar5; - - uVar3 = get_num_players(); - if (uVar3 == 1) { - if ((int)display_statusbar < 5) { - iVar1 = ((int)(status_bar_text_buffer_index + display_statusbar) % 5) * 0x65; - pcVar4 = something_with_strings(dword_8007A0E8 + iVar1,text,100); - uVar3 = SEXT48((int)pcVar4); - display_statusbar += TRUE; - dword_8007A0E8[iVar1 + 100] = 0; - } - } - else { - uVar5 = get_cur_playernum(); - pcVar4 = something_with_strings(dword_8007A0E8 + uVar5 * 0x65,text,100); - pPVar2 = pPlayer; - uVar3 = SEXT48((int)pcVar4); - dword_8007A0E8[uVar5 * 0x65 + 100] = 0; - pPVar2->bondmesscnt = 0x78; - } - return uVar3; -} - - - -void proc_7F08A4E4(void) - -{ - ulonglong uVar1; - - if ((pPlayer->hudmessoff == 0) && (pPlayer->mpmenuon == 0)) { - if (-1 < pPlayer->bondmesscnt) { - pPlayer->bondmesscnt = pPlayer->bondmesscnt - clock_timer; - uVar1 = get_num_players(); - if (uVar1 == 1) { - if (pPlayer->bondmesscnt < 0) { - status_bar_text_buffer_index = (status_bar_text_buffer_index + 1) % 5; - display_statusbar += ~FALSE; - } - else { - if ((1 < (int)display_statusbar) && (0x1e < pPlayer->bondmesscnt)) { - pPlayer->bondmesscnt = 0x1e; - } - } - } - } - uVar1 = get_num_players(); - if (((uVar1 == 1) && (pPlayer->bondmesscnt < 0)) && (0 < (int)display_statusbar)) { - if ((int)display_statusbar < 2) { - pPlayer->bondmesscnt = 0x78; - } - else { - pPlayer->bondmesscnt = 0x1e; - } - } - } - return; -} - - - -undefined4 * proc_7F08A5FC(undefined4 *param_1) - -{ - ulonglong uVar1; - undefined4 *puVar2; - short sVar5; - ITEM_IDS weapon; - int iVar3; - short sVar6; - u32 uVar4; - uint *DL; - undefined4 *local_res0; - int local_1c; - int local_18; - uint local_14; - uint local_10; - uint local_c; - uint local_8; - int local_4; - - local_res0 = param_1; - if (((pPlayer->hudmessoff == 0) && (local_res0 = param_1, -1 < pPlayer->bondmesscnt)) && - (local_res0 = param_1, pPlayer->mpmenuon == 0)) { - local_4 = 0; - uVar1 = get_num_players(); - if (uVar1 == 1) { - iVar3 = local_4; - if (dword_8007A0E8[status_bar_text_buffer_index * 0x65] != '\0') { - iVar3 = 1; - } - } - else { - iVar3 = local_4; - if (-1 < pPlayer->bondmesscnt) { - status_bar_text_buffer_index = get_cur_playernum(); - iVar3 = 1; - } - } - local_res0 = param_1; - if (iVar3 != 0) { - puVar2 = microcode_constructor(param_1); - local_1c = 0; - local_18 = 0; - proc_7F0AE98C(&local_18,&local_1c,dword_8007A0E8 + status_bar_text_buffer_index * 0x65, - copy_2ndfonttable,copy_1stfonttable,0); - uVar1 = get_num_players(); - if ((longlong)uVar1 < 3) { - sVar5 = get_video2_settings_ulx(); - local_8 = (int)sVar5 + 0x1e; - } - else { - uVar4 = get_cur_playernum(); - if ((uVar4 & 1) == 0) { - sVar5 = get_video2_settings_ulx(); - local_8 = (int)sVar5 + 0x1e; - } - else { - sVar5 = get_video2_settings_ulx(); - local_8 = (int)sVar5 + 10; - } - } - local_10 = local_8 + local_1c; - uVar1 = get_num_players(); - if ((longlong)uVar1 < 3) { - weapon = get_item_in_hand(1); - iVar3 = get_ammo_type_for_weapon(weapon); - if ((iVar3 == 0) && (uVar1 = is_clock_drawn_onscreen(), uVar1 == 0)) { - sVar5 = get_video2_settings_uly(); - sVar6 = get_video2_settings_height(); - local_14 = ((int)sVar6 + (int)sVar5) - 0xc; - } - else { - sVar5 = get_video2_settings_uly(); - sVar6 = get_video2_settings_height(); - local_14 = ((int)sVar6 + (int)sVar5) - 0x28; - } - uVar4 = get_cur_playernum(); - if (uVar4 == 1) { - local_14 -= 8; - } - } - else { - sVar5 = get_video2_settings_uly(); - local_14 = (int)sVar5 + 0x10; - } - local_c = local_14 - local_18; - DL = draw_blackbox_to_screen(puVar2,&local_8,&local_c,&local_10,&local_14); - sVar5 = get_video2_settings_txtClipW(); - sVar6 = get_video2_settings_txtClipH(); - DL = jp_text_stuff(DL,&local_8,&local_c,dword_8007A0E8 + status_bar_text_buffer_index * 0x65, - copy_2ndfonttable,(int)copy_1stfonttable,0xffffffff,0x646464ff,(int)sVar5, - (int)sVar6,0,0); - local_res0 = combiner_bayer_lod_perspective(DL); - } - } - return local_res0; -} - - - -void proc_7F08A900(void) - -{ - upper_text_buffer_index = 0; - display_upper_text_window = 0; - upper_text_window_timer = 0xffffffff; - DAT_800368b4 = 0; - return; -} - - - -void proc_7F08A928(uint param_1) - -{ - DAT_800368b4 = DAT_800368b4 & ~param_1; - return; -} - - - -void proc_7F08A944(uint param_1) - -{ - DAT_800368b4 = DAT_800368b4 | param_1; - return; -} - - - -void display_string_at_top_of_screen(char *text) - -{ - uint uVar1; - - if (display_upper_text_window < 2) { - uVar1 = upper_text_buffer_index + display_upper_text_window & 1; - if ((upper_text_buffer_index + display_upper_text_window < 0) && (uVar1 != 0)) { - uVar1 -= 2; - } - something_with_strings(ARRAY_80079c70 + uVar1 * 0x97,text,0x96); - display_upper_text_window += 1; - *(undefined *)(uVar1 * 0x97 + -0x7ff862fa) = 0; - } - return; -} - - - -void proc_7F08A9F8(void) - -{ - uint uVar1; - - if ((DAT_800368b4 == 0) && (pPlayer->mpmenuon == 0)) { - if (-1 < upper_text_window_timer) { - upper_text_window_timer -= clock_timer; - if (upper_text_window_timer < 0) { - uVar1 = upper_text_buffer_index + 1; - upper_text_buffer_index = uVar1 & 1; - if (((int)uVar1 < 0) && (upper_text_buffer_index != 0)) { - upper_text_buffer_index -= 2; - } - display_upper_text_window += -1; - } - else { - if ((1 < display_upper_text_window) && (0x3c < upper_text_window_timer)) { - upper_text_window_timer = 0x3c; - } - } - } - if ((upper_text_window_timer < 0) && (0 < display_upper_text_window)) { - if (1 < display_upper_text_window) { - upper_text_window_timer = 0x3c; - return; - } - upper_text_window_timer = 0xf0; - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -undefined4 * proc_7F08AAE8(void) - -{ - uint uVar1; - undefined6 *puVar2; - undefined4 *puVar3; - short sVar6; - short sVar7; - uint *DL; - BOOL BVar4; - char *pcVar5; - undefined4 *DL_00; - float fVar8; - undefined4 in_f5; - undefined4 in_f9; - undefined4 in_f17; - undefined *local_9c; - undefined4 local_98; - undefined *local_94; - undefined4 local_90; - uint local_8c; - undefined *local_88; - undefined6 uStack130; - int local_74; - int local_6c; - int local_68; - byte abStack100 [16]; - byte abStack84 [16]; - byte abStack68 [16]; - byte abStack52 [16]; - byte abStack36 [16]; - int local_14; - int local_10; - uint local_c; - int local_8; - int local_4; - - if ((((DAT_800368b4 == 0) && (-1 < upper_text_window_timer)) && - (ARRAY_80079c70[upper_text_buffer_index * 0x97] != '\0')) && (pPlayer->mpmenuon == 0)) { - puVar3 = microcode_constructor(DL_00); - local_14 = 0; - local_10 = 0; - proc_7F0AE98C(&local_10,&local_14,ARRAY_80079c70 + upper_text_buffer_index * 0x97, - (int)ptrSecondFontTable,(int *)ptrFirstFontTable,0); - if (camera_8003642C == 0) { - sVar6 = get_video2_settings_ulx(); - local_4 = (int)sVar6 + 0x1e; - sVar6 = get_video2_settings_uly(); - local_8 = (int)sVar6 + 0xd; - } - else { - sVar6 = get_video2_settings_ulx(); - local_4 = (int)sVar6 + 0x46; - sVar6 = get_video2_settings_uly(); - if (false) { - trap(0x1c00); - } - if ((false) && ((int)sVar6 + 0x20 == -0x80000000)) { - trap(0x1800); - } - local_8 = (((int)sVar6 + 0x20) / 0xb) * 0xb + -2; - } - local_c = local_8 + local_10; - sVar6 = get_video2_settings_txtClipW(); - puVar3 = microcode_constructor_related_to_menus - (puVar3,0,(longlong)(local_8 + -2),(longlong)sVar6,local_c,100); - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(puVar3,&local_4,&local_8, - ARRAY_80079c70 + upper_text_buffer_index * 0x97,(int)ptrSecondFontTable - ,(int)ptrFirstFontTable,0xffffffff,(int)sVar6,(int)sVar7,0,0); - DL_00 = combiner_bayer_lod_perspective(DL); - } - else { - BVar4 = get_debug_testingmanpos_flag(); - if (BVar4 != FALSE) { - fVar8 = convert_angle_using_inverse((f32)-(float)pPlayer->field_498,(f32)pPlayer->field_4A0); - uStack130._2_4_ = (int)((fVar8 * 180.00000000) / flt_800552BC); - local_9c = dword_800368B8; - local_98 = DAT_800368bc; - local_94 = PTR_DAT_800368c0; - local_90 = DAT_800368c4; - local_8c = DAT_800368c8; - local_88 = PTR_DAT_800368cc; - uVar1 = (uint)&uStack130 & 3; - puVar2 = (undefined6 *)((int)&uStack130 - uVar1); - *(uint *)puVar2 = - *(uint *)puVar2 & 0xffffffffU >> (uVar1 + 1) * 8 | - (DAT_800368c8 & 0xff000000 | DAT_800368d0 >> 8) << (3 - uVar1) * 8; - pcVar5 = printroom((ulonglong)*(byte *)(pPlayer->ptr_tile_printmanpos + 3)); - sprintf((char *)abStack36,"%8s",pcVar5); - sprintf((char *)abStack52,"x %4.0f",in_f5,SUB84((double)(float)pPlayer->positionx,0)); - sprintf((char *)abStack68,"y %4.0f",in_f9,SUB84((double)(float)pPlayer->positiony,0)); - sprintf((char *)abStack84,"z %4.0f",in_f17,SUB84((double)(float)pPlayer->positionz,0)); - sprintf((char *)abStack100,"%s %3d", - (undefined **)((int)&local_9c + ((uStack130._2_4_ + 0x16) / 0x2d) * 3)); - sVar6 = get_video2_settings_ulx(); - local_68 = (int)sVar6 + 0x11; - sVar6 = get_video2_settings_uly(); - local_6c = (int)sVar6 + 0x11; - local_74 = (int)sVar6 + 0x1b; - puVar3 = microcode_constructor(DL_00); - sVar6 = get_video2_settings_txtClipW(); - puVar3 = microcode_constructor_related_to_menus - (puVar3,0,(longlong)local_6c,(longlong)sVar6,local_74 + 1,100); - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(puVar3,&local_68,&local_6c,abStack36,D_80040EB0,D_80040EAC,0xffffffff - ,(int)sVar6,(int)sVar7,0,0); - sVar6 = get_video2_settings_ulx(); - local_68 = (int)sVar6 + 0x57; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,&local_68,&local_6c,abStack52,D_80040EB0,D_80040EAC,0xffffffff, - (int)sVar6,(int)sVar7,0,0); - sVar6 = get_video2_settings_ulx(); - local_68 = (int)sVar6 + 0x8d; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,&local_68,&local_6c,abStack68,D_80040EB0,D_80040EAC,0xffffffff, - (int)sVar6,(int)sVar7,0,0); - sVar6 = get_video2_settings_ulx(); - local_68 = (int)sVar6 + 0xc3; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,&local_68,&local_6c,abStack84,D_80040EB0,D_80040EAC,0xffffffff, - (int)sVar6,(int)sVar7,0,0); - sVar6 = get_video2_settings_ulx(); - local_68 = (int)sVar6 + 0xf9; - sVar6 = get_video2_settings_txtClipW(); - sVar7 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,&local_68,&local_6c,abStack100,D_80040EB0,D_80040EAC,0xffffffff, - (int)sVar6,(int)sVar7,0,0); - DL_00 = combiner_bayer_lod_perspective(DL); - } - } - return DL_00; -} - - - -undefined4 proc_7F08B0F0(char *param_1) - -{ - float *pfVar1; - bool bVar2; - longlong lVar3; - u32 uVar5; - int iVar6; - float *pfVar7; - ulonglong uVar4; - int iVar8; - int iVar9; - int iVar10; - u32 *puVar11; - uint extraout_a1_lo; - uint extraout_a1_lo_00; - undefined4 extraout_a2_lo; - int extraout_a2_lo_00; - int extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 extraout_a2_lo_03; - undefined4 extraout_a2_lo_04; - undefined4 extraout_a3_lo; - uint extraout_a3_lo_00; - uint extraout_a3_lo_01; - uint extraout_a3_lo_02; - uint extraout_a3_lo_03; - uint extraout_a3_lo_04; - uint extraout_a3_lo_05; - uint extraout_a3_lo_06; - uint extraout_a3_lo_07; - uint extraout_a3_lo_08; - uint uVar12; - undefined4 extraout_a3_lo_09; - undefined4 extraout_a3_lo_10; - int iVar13; - Player *pPVar14; - Player **ppPVar15; - float fVar16; - float fVar17; - float fVar18; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float afStack136 [2]; - undefined4 uStack128; - int *piStack124; - f32 fStack112; - f32 fStack108; - f32 fStack104; - float fStack100; - f32 fStack96; - int iStack92; - undefined4 uStack88; - undefined auStack84 [16]; - float fStack68; - float fStack64; - float fStack60; - float fStack36; - float fStack32; - float fStack28; - undefined4 uStack16; - GUARDdata *pGStack8; - u32 uStack4; - - lVar3 = proc_7F09B15C((int)param_1); - uStack4 = (u32)lVar3; - pGStack8 = *(GUARDdata **)(param_1 + 4); - if (pGStack8 != NULL) { - uVar5 = get_cur_playernum(); - iVar6 = proc_7F09B4D8(uVar5); - if (iVar6 == 0) { - pGStack8->special_bitflags = pGStack8->special_bitflags & 0xf7ff; - } - } - if ((pGStack8 != NULL) && - (ppPVar15 = &ptr_BONDdata_p1 + uStack4, (*ppPVar15)->ptr_char_objectinstance != 0)) { - uVar5 = get_debug_render_raster(); - if (uVar5 == 0) { - pPVar14 = *ppPVar15; -LAB_7f08b198: - pPVar14->field_AC = 0; - uVar4 = proc_7F020EF0(param_1,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - uStack16 = (undefined4)uVar4; - (*ppPVar15)->field_AC = 1; - (*ppPVar15)->positionx = *(f32 *)((*ppPVar15)->position_data_pointer + 8); - (*ppPVar15)->positiony = *(int *)((*ppPVar15)->position_data_pointer + 0xc); - (*ppPVar15)->positionz = *(int *)((*ppPVar15)->position_data_pointer + 0x10); - (*ppPVar15)->ptr_tile_printmanpos = *(int *)((*ppPVar15)->position_data_pointer + 0x14); - proc_7F07DE9C((int)*ppPVar15); - if ((param_1[1] & 2U) == 0) { - return uStack16; - } - pfVar1 = *(float **)((*ppPVar15)->ptr_char_objectinstance + 0xc); - pfVar7 = (float *)proc_7F078444(); - proc_7F05818C(pfVar7,pfVar1,(int)auStack84); - *(float *)&(*ppPVar15)->field_4B4 = fStack68 * 7.00000000 + fStack36; - *(float *)&(*ppPVar15)->field_4B8 = fStack64 * 7.00000000 + fStack32; - *(float *)&(*ppPVar15)->field_4BC = fStack60 * 7.00000000 + fStack28; - return uStack16; - } - if ((*ppPVar15)->unknown == 1) { - pPVar14 = *ppPVar15; - goto LAB_7f08b198; - } - } - if ((((pGStack8 == NULL) || - (ppPVar15 = &ptr_BONDdata_p1 + uStack4, (*ppPVar15)->ptr_char_objectinstance == 0)) || - (uVar4 = get_num_players(), (longlong)uVar4 < 2)) || - (uVar5 = get_cur_playernum(), uVar5 == uStack4)) { - param_1[1] = param_1[1] & 0xfd; - return 0; - } - iStack92 = 0; - piStack124 = NULL; - fStack104 = -1.00000000; - fStack100 = -1.00000000; - iVar8 = something_with_weaponpos_of_guarddata_hand(pGStack8,1); - iVar9 = something_with_weaponpos_of_guarddata_hand(pGStack8,0); - iVar6 = 0; - iVar13 = 0; - if (iVar8 != 0) { - iVar6 = *(int *)(iVar8 + 4); - } - if (iVar9 != 0) { - iVar13 = *(int *)(iVar9 + 4); - } - uVar5 = get_cur_playernum(); - iVar10 = proc_7F09B4D8(uVar5); - if (iVar10 == 0) { - DAT_800368d4 += 1; - } - if (DAT_800368d4 < 2) { - pPVar14 = *ppPVar15; - iVar6 = extraout_a2_lo_00; - uVar12 = extraout_a3_lo_00; - goto LAB_7f08ba78; - } - pPVar14 = *ppPVar15; - fStack108 = pPVar14->field_2A08; - fStack112 = pPVar14->field_2A0C; - if (pPVar14->bonddead == 0) { - if ((iVar8 == 0) || (iVar9 == 0)) { - if ((iVar8 == 0) && (iVar9 == 0)) { - iVar6 = 2; - } - else { - if ((iVar6 == 0) || - (iVar8 = check_special_attributes((int)*(char *)(iVar6 + 0x80),0x200), iVar8 != 0)) { - if ((iVar13 == 0) || - (iVar8 = check_special_attributes((int)*(char *)(iVar13 + 0x80),0x200), iVar8 != 0)) { - if ((iVar6 == 0) || - (iVar6 = check_special_attributes((int)*(char *)(iVar6 + 0x80),0x100), iVar6 == 0)) { - if (iVar13 == 0) { - iVar6 = 1; - } - else { - iVar6 = check_special_attributes((int)*(char *)(iVar13 + 0x80),0x100); - if (iVar6 == 0) { - iVar6 = 1; - } - else { - iVar6 = 0; - } - } - } - else { - iVar6 = 0; - } - } - else { - iVar6 = 2; - } - } - else { - iVar6 = 2; - } - } - } - else { - iVar6 = 3; - } - iVar13 = proc_7F079A1C(uStack4); - uVar12 = extraout_a3_lo_02; - if ((iVar13 == 1) || (iVar13 = proc_7F079A1C(uStack4), uVar12 = extraout_a3_lo_03, iVar13 == 0)) - { - fVar18 = 1.00000000; - pPVar14 = *ppPVar15; - iVar13 = 5; - } - else { - pPVar14 = *ppPVar15; - fVar18 = pPVar14->speedsideways; - if ((0.00000000 <= fVar18) || (off_800368D8[iVar6 * 6 + 4].pointer == NULL)) { - if (0.00000000 < fVar18) { - if (off_800368D8[iVar6 * 6 + 3].pointer != NULL) { - iVar13 = 3; - uVar12 = extraout_a3_lo_03; - if (-90.00000000 < (float)pPVar14->field_1280) { - *(float *)&pPVar14->field_1280 = (float)pPVar14->field_1280 - 15.00000000; - pPVar14 = *ppPVar15; - iVar13 = 3; - uVar12 = extraout_a3_lo_03; - } - goto LAB_7f08b7fc; - } - fVar18 = pPVar14->speedtheta; - } - else { - fVar18 = pPVar14->speedtheta; - } - if (fVar18 < 0.00000000) { - fVar18 = -fVar18; - fVar16 = pPVar14->speedforwards; - } - else { - fVar16 = pPVar14->speedforwards; - } - if (fVar16 < flt_800552C0) { - if (fVar16 < -fVar18) { - iVar13 = pPVar14->field_4E8; - fVar18 = fVar16; - } - else { - iVar13 = pPVar14->field_4E8; - fVar18 = -fVar18; - } - if ((iVar13 == 0) || (iVar13 = 2, flt_800552C4 < fVar16)) { - fVar18 = fVar18 + fVar18; - iVar13 = 1; - if (-1.00000000 <= fVar18) { - fVar16 = (float)pPVar14->field_1280; - goto LAB_7f08b7a8; - } - fVar18 = -1.00000000; - iVar13 = 1; - } -LAB_7f08b7a4: - fVar16 = (float)pPVar14->field_1280; - } - else { - if ((fVar16 <= flt_800552C8) && (fVar18 <= flt_800552C8)) { - fVar18 = 1.00000000; - iVar13 = 0; - goto LAB_7f08b7a4; - } - if (fVar18 < fVar16) { - iVar13 = pPVar14->field_4E8; - fVar18 = fVar16; - } - else { - iVar13 = pPVar14->field_4E8; - } - if ((iVar13 != 0) && (iVar13 = 2, flt_800552CC <= fVar16)) goto LAB_7f08b7a4; - fVar17 = fVar18 + fVar18; - iVar13 = 1; - fVar18 = 1.00000000; - if (1.00000000 < fVar17) { - fVar16 = (float)pPVar14->field_1280; - } - else { - fVar16 = (float)pPVar14->field_1280; - fVar18 = fVar17; - } - } -LAB_7f08b7a8: - if (0.00000000 < fVar16) { - *(float *)&pPVar14->field_1280 = fVar16 - 15.00000000; - pPVar14 = *ppPVar15; - fVar16 = (float)pPVar14->field_1280; - } - uVar12 = extraout_a3_lo_03; - if (fVar16 < 0.00000000) { - *(float *)&pPVar14->field_1280 = fVar16 + 15.00000000; - pPVar14 = *ppPVar15; - uVar12 = extraout_a3_lo_03; - } - } - else { - fVar18 = -fVar18; - iVar13 = 4; - uVar12 = extraout_a3_lo_03; - if ((float)pPVar14->field_1280 < 90.00000000) { - *(float *)&pPVar14->field_1280 = (float)pPVar14->field_1280 + 15.00000000; - pPVar14 = *ppPVar15; - iVar13 = 4; - uVar12 = extraout_a3_lo_03; - } - } - } -LAB_7f08b7fc: - piStack124 = (int *)off_800368D8[iVar13 + iVar6 * 6].pointer; - if (off_800368D8[iVar13 + iVar6 * 6].anim != 0) { - iStack92 = off_800368D8[iVar13 + iVar6 * 6].anim + ptr_animation_table; - } - fStack104 = off_800368D8[iVar13 + iVar6 * 6].z; - fVar16 = (float)off_800368D8[iVar13 + iVar6 * 6].y; - fVar18 = fVar18 * (float)off_800368D8[iVar13 + iVar6 * 6].x; - iVar6 = pPVar14->players_cur_animation; - } - else { - bVar2 = false; - if (0 < (int)total_player_death_anim) { - puVar11 = player_death_ani_list; - uVar5 = player_death_ani_list[0]; - while( true ) { - puVar11 = puVar11 + 1; - if (pPVar14->players_cur_animation == uVar5 + ptr_animation_table) { - bVar2 = true; - } - if (player_death_ani_list + total_player_death_anim <= puVar11) break; - uVar5 = *puVar11; - } - } - if (bVar2) { - iVar6 = pPVar14->players_cur_animation; - uVar12 = total_player_death_anim; - iStack92 = iVar6; - } - else { - uVar5 = get_random_value(); - pPVar14 = *ppPVar15; - iStack92 = player_death_ani_list[uVar5 % total_player_death_anim] + ptr_animation_table; - if (total_player_death_anim == 0) { - trap(0x1c00); - } - iVar6 = pPVar14->players_cur_animation; - uVar12 = extraout_a3_lo_01; - } - fVar18 = 0.50000000; - fStack108 = 0.00000000; - fStack112 = 0.00000000; - fVar16 = fStack100; - } - if ((piStack124 != NULL) && (iStack92 == 0)) { - iStack92 = *piStack124; - } - bVar2 = iStack92 != iVar6; - if ((0.00000000 <= fVar16) && - ((*(char *)(pPVar14->ptr_char_objectinstance + 0x26) == '\0' || - (fVar16 != *(float *)(pPVar14->ptr_char_objectinstance + 0x90))))) { - bVar2 = true; - } - if ((fVar16 < 0.00000000) && (*(char *)(pPVar14->ptr_char_objectinstance + 0x26) != '\0')) { - bVar2 = true; - } - if (bVar2) { - if (*(int *)(pPVar14->ptr_char_objectinstance + 0x54) == 0) { - fVar17 = fVar16; - if (fVar16 < 0.00000000) { - fVar17 = 0.00000000; - } - fStack100 = fVar16; - fStack96 = (f32)fVar18; - proc_7F06FCA8(pPVar14->ptr_char_objectinstance,iStack92,0,fVar18,fVar17,0.00000000); - (*ppPVar15)->players_cur_animation = iStack92; - (*ppPVar15)->field_1288 = fStack96; - fVar18 = (float)fStack96; - uVar12 = extraout_a3_lo_04; - if (0.00000000 <= fStack100) { - proc_7F06FDCC((*ppPVar15)->ptr_char_objectinstance,fStack100,0x41800000); - fVar18 = extraout_f12; - uVar12 = extraout_a3_lo_05; - } - if (0.00000000 <= (float)fStack104) { - proc_7F06FDE8((*ppPVar15)->ptr_char_objectinstance,fVar18); - pPVar14 = *ppPVar15; - fVar18 = extraout_f12_00; - uVar12 = extraout_a3_lo_06; - } - else { - pPVar14 = *ppPVar15; - } - } - else { - pPVar14 = *ppPVar15; - } - iVar6 = pPVar14->players_cur_animation; - } - else { - if (fVar18 != (float)pPVar14->field_1288) { - fStack96 = (f32)fVar18; - proc_7F06FE4C(pPVar14->ptr_char_objectinstance,fVar18,fVar18); - (*ppPVar15)->field_1288 = fStack96; - iVar6 = (*ppPVar15)->players_cur_animation; - fVar18 = (float)fStack96; - uVar12 = extraout_a3_lo_07; - } - } - if (iStack92 == iVar6) { - if (piStack124 == NULL) { - pGStack8->field_154 = 0; - pGStack8->field_150 = 0; - pGStack8->special_bitflags = pGStack8->special_bitflags | 0x400; - *(f32 *)&pGStack8->field_158 = fStack108; - } - else { - pGStack8->special_bitflags = pGStack8->special_bitflags & 0xfbff; - proc_7F02D048((int)pGStack8,(int)piStack124,0,1,fVar18); - iVar6 = extraout_a2_lo_01; - uVar12 = extraout_a3_lo_08; - } - } - pGStack8->field_E = '\n'; - *(f32 *)&pGStack8->field_15C = fStack112; - pPVar14 = *ppPVar15; -LAB_7f08ba78: - iVar8 = 0; - *(f32 *)(param_1 + 8) = pPVar14->positionx; - *(int *)(param_1 + 0xc) = (*ppPVar15)->positiony; - *(int *)(param_1 + 0x10) = (*ppPVar15)->positionz; - *(int *)(param_1 + 0x14) = (*ppPVar15)->ptr_tile_printmanpos; - getsuboffset(pGStack8->MODELdata_pointer,afStack136,iVar6,uVar12); - afStack136[0] = *(float *)(param_1 + 8); - uStack128 = *(undefined4 *)(param_1 + 0x10); - setsuboffset(pGStack8->MODELdata_pointer,afStack136,extraout_a2_lo_02,extraout_a3_lo_09); - setsubroty(pGStack8->MODELdata_pointer,extraout_f12_01, - (((float)(*ppPVar15)->field_1280 + (360.00000000 - (*ppPVar15)->vv_theta)) * - flt_800552D0) / 360.00000000,extraout_a2_lo_03); - pGStack8->actiontype = 0x19; - pGStack8->guard_bitflags = pGStack8->guard_bitflags | 1; - *(int **)&pGStack8->bond_position = piStack124; - proc_7F02D118((int)pGStack8,0,(int)*(char *)((int)&(*ppPVar15)->right_weapon_firing_status + 1)); - proc_7F02D118((int)pGStack8,1,(int)*(char *)((int)&(*ppPVar15)->left_weapon_firing_status + 1)); - uVar4 = proc_7F020EF0(param_1,extraout_a1_lo_00,extraout_a2_lo_04,extraout_a3_lo_10); - uStack88 = (undefined4)uVar4; - iVar13 = 0; - iVar6 = 0; - do { - lVar3 = proc_7F02D630((int)pGStack8,iVar8,(float *)((int)&(*ppPVar15)->field_2A18 + iVar6)); - if (lVar3 == 0) { - pPVar14 = *ppPVar15; - if (*(int *)((int)&pPVar14->field_2A30 + iVar13) < dword_80048380 + -1) { - *(int *)((int)&pPVar14->field_2A18 + iVar6) = (&pPVar14->field_B58)[iVar8 * 0xea]; - *(int *)((int)&(*ppPVar15)->field_2A1C + iVar6) = (&(*ppPVar15)->field_B5C)[iVar8 * 0xea]; - *(int *)((int)&(*ppPVar15)->field_2A20 + iVar6) = (&(*ppPVar15)->field_B60)[iVar8 * 0xea]; - } - } - else { - *(int *)((int)&(*ppPVar15)->field_2A30 + iVar13) = dword_80048380; - } - iVar8 += 1; - iVar13 += 4; - iVar6 += 0xc; - } while (iVar8 != 2); - pGStack8->special_bitflags = pGStack8->special_bitflags | 0x800; - *(f32 *)(param_1 + 8) = (*ppPVar15)->positionx; - *(int *)(param_1 + 0xc) = (*ppPVar15)->positiony; - *(int *)(param_1 + 0x10) = (*ppPVar15)->positionz; - *(int *)(param_1 + 0x14) = (*ppPVar15)->ptr_tile_printmanpos; - return uStack88; -} - - - -undefined8 proc_7F08BCB8(undefined8 param_1) - -{ - return param_1; -} - - - -undefined8 proc_7F08BCC0(char *param_1,undefined8 param_2,uint param_3) - -{ - if (*(int *)(param_1 + 4) != 0) { - param_2 = proc_7F021BFC(param_1,(uint *)param_2,param_3); - } - return param_2; -} - - - -undefined4 * proc_7F08BCF4(undefined4 *param_1) - -{ - *param_1 = 0x1020040; - param_1[1] = pPlayer->field_5C; - return param_1 + 2; -} - - - -void proc_7F08BD18(uint *param_1) - -{ - undefined4 auStack64 [16]; - - proc_7F058020(param_1,auStack64); - proc_7F058C9C((int)auStack64,param_1); - return; -} - - - -void proc_7F08BD48(undefined4 *param_1,int param_2) - -{ - int iVar1; - undefined4 *puVar2; - undefined4 auStack64 [16]; - - iVar1 = 0; - if (0 < param_2) { - puVar2 = param_1; - do { - proc_7F058020(puVar2,auStack64); - proc_7F058C9C((int)auStack64,param_1 + iVar1 * 0x10); - iVar1 += 1; - puVar2 = puVar2 + 0x10; - } while (iVar1 != param_2); - } - return; -} - - - -void proc_7F08BDC4(uint *param_1) - -{ - undefined4 auStack64 [12]; - float fStack16; - float fStack12; - float fStack8; - - proc_7F058020(param_1,auStack64); - fStack16 = fStack16 - (float)pPlayer->previous_model_xpos; - fStack12 = fStack12 - (float)pPlayer->previous_model_ypos; - fStack8 = fStack8 - (float)pPlayer->previous_model_zpos; - proc_7F058C9C((int)auStack64,param_1); - return; -} - - - -void proc_7F08BE2C(undefined4 *param_1,int param_2) - -{ - int iVar1; - undefined4 *puVar2; - undefined4 auStack64 [12]; - float fStack16; - float fStack12; - float fStack8; - - iVar1 = 0; - if (0 < param_2) { - puVar2 = param_1; - do { - proc_7F058020(puVar2,auStack64); - fStack16 = fStack16 - (float)pPlayer->previous_model_xpos; - fStack12 = fStack12 - (float)pPlayer->previous_model_ypos; - fStack8 = fStack8 - (float)pPlayer->previous_model_zpos; - proc_7F058C9C((int)auStack64,param_1 + iVar1 * 0x10); - iVar1 += 1; - puVar2 = puVar2 + 0x10; - } while (iVar1 != param_2); - } - return; -} - - - -void proc_7F08BEEC(float *param_1,int param_2) - -{ - float *pfVar1; - float *pfVar2; - int iVar3; - undefined auStack64 [48]; - float fStack16; - float fStack12; - float fStack8; - - iVar3 = 0; - if (0 < param_2) { - pfVar2 = param_1; - do { - pfVar1 = (float *)proc_7F078444(); - proc_7F05818C(pfVar1,pfVar2,(int)auStack64); - fStack16 = fStack16 - (float)pPlayer->current_model_xpos; - fStack12 = fStack12 - (float)pPlayer->current_model_ypos; - fStack8 = fStack8 - (float)pPlayer->current_model_zpos; - proc_7F058C9C((int)auStack64,(uint *)(param_1 + iVar3 * 0x10)); - iVar3 += 1; - pfVar2 = pfVar2 + 0x10; - } while (iVar3 != param_2); - } - return; -} - - - -int getMissiontime(void) - -{ - return missiontime; -} - - - -void trigger_explosions_around_player(int delay) - -{ - dword_80036444 = 1; - DAT_8007999c = delay + global_timer; - DAT_800799a0 = 0; - return; -} - - - -void reinit_BONDdata_inventory(void) - -{ - int iVar1; - int iVar2; - int iVar3; - - iVar1 = 0; - iVar2 = 0; - if (pPlayer->equipmaxitems < 1) { - pPlayer->ptr_inventory_first_in_cycle = 0; - } - else { - iVar3 = pPlayer->p_itemcur; - while( true ) { - iVar1 += 1; - *(undefined4 *)(iVar3 + iVar2) = 0xffffffff; - iVar2 += 0x14; - if (pPlayer->equipmaxitems <= iVar1) break; - iVar3 = pPlayer->p_itemcur; - } - pPlayer->ptr_inventory_first_in_cycle = 0; - } - pPlayer->field_11F4 = 0; - pPlayer->field_11F0 = 0; - return; -} - - - -void proc_7F08C054(int *param_1) - -{ - int iVar1; - bool bVar2; - int iVar3; - int iVar4; - int *piVar5; - int iVar6; - int *piVar7; - int iVar8; - - iVar1 = *param_1; - iVar3 = -1; - iVar4 = -1; - if (iVar1 == 1) { - iVar3 = param_1[1]; - } - else { - if (iVar1 == 3) { - iVar3 = param_1[1]; - iVar4 = param_1[2]; - } - else { - if (iVar1 == 2) { - iVar3 = 2000; - } - } - } - piVar5 = (int *)param_1[3]; - if (piVar5 != (int *)pPlayer->ptr_inventory_first_in_cycle) { - do { - iVar1 = *piVar5; - iVar6 = -1; - iVar8 = -1; - if (iVar1 == 1) { - iVar6 = piVar5[1]; -LAB_7f08c104: - bVar2 = iVar6 < iVar3; - } - else { - if (iVar1 == 3) { - iVar6 = piVar5[1]; - iVar8 = piVar5[2]; - goto LAB_7f08c104; - } - if (iVar1 == 2) { - iVar6 = 1000; - goto LAB_7f08c104; - } - bVar2 = -1 < iVar3; - } - if (bVar2) { - piVar7 = (int *)piVar5[3]; - } - else { - if (iVar3 != iVar6) { - return; - } - if (iVar4 <= iVar8) { - return; - } - piVar7 = (int *)piVar5[3]; - } - if (param_1 == piVar7) { - *(int **)&pPlayer->ptr_inventory_first_in_cycle = piVar5; - piVar7 = (int *)pPlayer->ptr_inventory_first_in_cycle; -LAB_7f08c17c: - piVar5 = (int *)param_1[3]; - } - else { - *(int **)(param_1 + 3) = piVar7; - piVar5[4] = param_1[4]; - *(int **)(param_1 + 4) = piVar5; - *(int **)(piVar5 + 3) = param_1; - *(int **)(param_1[3] + 0x10) = param_1; - *(int **)(piVar5[4] + 0xc) = piVar5; - piVar7 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (param_1 == piVar7) { - *(int **)&pPlayer->ptr_inventory_first_in_cycle = piVar5; - piVar7 = (int *)pPlayer->ptr_inventory_first_in_cycle; - goto LAB_7f08c17c; - } - piVar5 = (int *)param_1[3]; - } - } while (piVar5 != piVar7); - } - return; -} - - - -void add_additional_weapon_slot_to_player_inventory_documentation_guess(int *param_1) - -{ - int iVar1; - - iVar1 = pPlayer->ptr_inventory_first_in_cycle; - if (iVar1 == 0) { - *(int **)(param_1 + 3) = param_1; - *(int **)(param_1 + 4) = param_1; - } - else { - param_1[3] = iVar1; - param_1[4] = *(int *)(pPlayer->ptr_inventory_first_in_cycle + 0x10); - *(int **)(iVar1 + 0x10) = param_1; - *(int **)(param_1[4] + 0xc) = param_1; - } - *(int **)&pPlayer->ptr_inventory_first_in_cycle = param_1; - proc_7F08C054(param_1); - return; -} - - - -void reorder_inventory_ptrs_based_on_id_code(undefined4 *param_1) - -{ - undefined4 *puVar1; - int iVar2; - - puVar1 = (undefined4 *)param_1[3]; - iVar2 = param_1[4]; - if (param_1 == (undefined4 *)pPlayer->ptr_inventory_first_in_cycle) { - if (param_1 == puVar1) { - pPlayer->ptr_inventory_first_in_cycle = 0; - } - else { - *(undefined4 **)&pPlayer->ptr_inventory_first_in_cycle = puVar1; - } - puVar1[4] = iVar2; - } - else { - puVar1[4] = iVar2; - } - *(undefined4 **)(iVar2 + 0xc) = puVar1; - *param_1 = 0xffffffff; - return; -} - - - -int get_ptr_next_available_weapon(void) - -{ - int iVar1; - int iVar2; - int iVar3; - int *piVar4; - - iVar2 = 0; - if (0 < pPlayer->equipmaxitems) { - iVar3 = 0; - piVar4 = (int *)pPlayer->p_itemcur; - do { - iVar1 = *piVar4; - iVar2 += 1; - piVar4 = piVar4 + 5; - if (iVar1 == -1) { - return (int)(int *)pPlayer->p_itemcur + iVar3; - } - iVar3 += 0x14; - } while (iVar2 < pPlayer->equipmaxitems); - } - return 0; -} - - - -void set_BONDdata_allguns_flag(int param_1) - -{ - pPlayer->equipallguns = param_1; - return; -} - - - -int get_BONDdata_allguns_flag(void) - -{ - return pPlayer->equipallguns; -} - - - -int * get_ptr_inventory_item(int item) - -{ - int *piVar1; - int *piVar2; - int iVar3; - - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (piVar1 != NULL) { - iVar3 = *piVar1; - piVar2 = piVar1; - while( true ) { - if (iVar3 == 1) { - if (item == piVar2[1]) { - return piVar2; - } - piVar2 = (int *)piVar2[3]; - } - else { - piVar2 = (int *)piVar2[3]; - } - if ((piVar2 == piVar1) || (piVar2 == NULL)) break; - iVar3 = *piVar2; - } - } - return NULL; -} - - - -ulonglong is_weapon_in_inv(int param_1) - -{ - int *piVar1; - - piVar1 = get_ptr_inventory_item(param_1); - return (ulonglong)(piVar1 != NULL); -} - - - -int * get_ptr_inventory_for_item_in_hand(int item,int hand) - -{ - int *piVar1; - int *piVar2; - int iVar3; - - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (piVar1 != NULL) { - iVar3 = *piVar1; - piVar2 = piVar1; - while( true ) { - if (iVar3 == 3) { - if (item == piVar2[1]) { - if (hand == piVar2[2]) { - return piVar2; - } - piVar2 = (int *)piVar2[3]; - } - else { - piVar2 = (int *)piVar2[3]; - } - } - else { - piVar2 = (int *)piVar2[3]; - } - if ((piVar2 == piVar1) || (piVar2 == NULL)) break; - iVar3 = *piVar2; - } - } - return NULL; -} - - - -ulonglong is_item_for_hand_in_inventory(int item,int hand) - -{ - int *piVar1; - - piVar1 = get_ptr_inventory_for_item_in_hand(item,hand); - return (ulonglong)(piVar1 != NULL); -} - - - -ulonglong check_if_item_available(ITEM_IDS weaponid) - -{ - ulonglong uVar1; - - if (((pPlayer->equipallguns == 0) || (weaponid == ITEM_UNARMED)) || (0x20 < (int)weaponid)) { - uVar1 = is_weapon_in_inv(weaponid); - } - else { - uVar1 = 1; - } - return uVar1; -} - - - -ulonglong check_if_item_for_hand_available(ITEM_IDS item,int hand) - -{ - ulonglong uVar1; - int iVar2; - - if ((((pPlayer->equipallguns != 0) && ((int)item < 0x21)) && (item == hand)) && - ((uVar1 = get_num_players(), uVar1 == 1 && - (iVar2 = check_special_attributes(item,0x100000), iVar2 != 0)))) { - return 1; - } - uVar1 = is_item_for_hand_in_inventory(item,hand); - return uVar1; -} - - - -undefined8 add_item_to_inventory(ITEM_IDS item) - -{ - ulonglong uVar1; - undefined8 uVar2; - int *piVar3; - - uVar1 = is_weapon_in_inv(item); - if (uVar1 == 0) { - piVar3 = (int *)get_ptr_next_available_weapon(); - if (piVar3 != NULL) { - *piVar3 = 1; - piVar3[1] = item; - add_additional_weapon_slot_to_player_inventory_documentation_guess(piVar3); - } - if ((pPlayer->equipallguns == 0) || (0x20 < (int)item)) { - uVar2 = 1; - } - else { - uVar2 = 0; - } - } - else { - uVar2 = 0; - } - return uVar2; -} - - - -undefined8 add_doubles_item_to_inventory(int right,int left) - -{ - ulonglong uVar1; - undefined8 uVar2; - int *piVar3; - - uVar1 = is_item_for_hand_in_inventory(right,left); - if (uVar1 == 0) { - piVar3 = (int *)get_ptr_next_available_weapon(); - if (piVar3 != NULL) { - *piVar3 = 3; - piVar3[1] = right; - piVar3[2] = left; - add_additional_weapon_slot_to_player_inventory_documentation_guess(piVar3); - } - uVar2 = 1; - } - else { - uVar2 = 0; - } - return uVar2; -} - - - -int proc_7F08C570(char param_1) - -{ - int *piVar1; - int iVar2; - int *piVar3; - - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (piVar1 != NULL) { - piVar3 = (int *)piVar1[3]; - do { - if ((((*piVar3 == 2) && (*(char *)piVar3[1] == '\x04')) && - (iVar2 = *(int *)((char *)piVar3[1] + 4), *(char *)(iVar2 + 3) == '\b')) && - (param_1 == *(char *)(iVar2 + 0x80))) { - reorder_inventory_ptrs_based_on_id_code(piVar3); - return iVar2; - } - if (piVar3 == piVar1) { - return 0; - } - piVar3 = (int *)piVar3[3]; - } while (piVar1 != NULL); - } - return 0; -} - - - -void proc_7F08C61C(longlong param_1) - -{ - int *piVar1; - int iVar2; - int *piVar3; - int *piVar4; - - piVar3 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (piVar3 != NULL) { - piVar4 = (int *)piVar3[3]; - do { - piVar1 = (int *)piVar4[3]; - if (*piVar4 == 2) { - if (((*(char *)piVar4[1] == '\x04') && - (iVar2 = *(int *)((char *)piVar4[1] + 4), *(char *)(iVar2 + 3) == '\b')) && - (param_1 == (longlong)*(char *)(iVar2 + 0x80))) { - reorder_inventory_ptrs_based_on_id_code(piVar4); - piVar3 = (int *)pPlayer->ptr_inventory_first_in_cycle; - } - } - else { - if ((*piVar4 == 1) && (param_1 == (longlong)piVar4[1])) { - reorder_inventory_ptrs_based_on_id_code(piVar4); - piVar3 = (int *)pPlayer->ptr_inventory_first_in_cycle; - } - } - } while ((piVar4 != piVar3) && (piVar4 = piVar1, piVar3 != NULL)); - } - return; -} - - - -undefined8 proc_7F08C724(int param_1) - -{ - int *piVar1; - - piVar1 = (int *)get_ptr_next_available_weapon(); - if (piVar1 != NULL) { - *piVar1 = 2; - piVar1[1] = param_1; - add_additional_weapon_slot_to_player_inventory_documentation_guess(piVar1); - } - return 1; -} - - - -ulonglong proc_7F08C764(char *param_1) - -{ - char cVar1; - char cVar2; - int iVar3; - int iVar4; - ulonglong uVar5; - - uVar5 = 0; - if ((*param_1 == '\x04') && (iVar3 = *(int *)(param_1 + 4), *(char *)(iVar3 + 3) == '\b')) { - cVar1 = *(char *)(iVar3 + 0x80); - uVar5 = add_item_to_inventory((int)cVar1); - iVar4 = *(int *)(iVar3 + 0x84); - if (iVar4 == 0) { - cVar2 = *(char *)(iVar3 + 0x81); - if (-1 < cVar2) { - if (*(int *)(iVar3 + 8) << 3 < 0) { - uVar5 = add_doubles_item_to_inventory((int)cVar2,(int)cVar1); - } - else { - uVar5 = add_doubles_item_to_inventory((int)cVar1,(int)cVar2); - } - } - } - else { - if (*(int *)(iVar3 + 8) << 3 < 0) { - uVar5 = is_item_for_hand_in_inventory((int)*(char *)(iVar4 + 0x80),(int)cVar1); - } - else { - uVar5 = is_item_for_hand_in_inventory((int)cVar1,(int)*(char *)(iVar4 + 0x80)); - } - uVar5 = (ulonglong)(uVar5 == 0); - *(char *)(*(int *)(iVar3 + 0x84) + 0x81) = cVar1; - *(undefined4 *)(*(int *)(iVar3 + 0x84) + 0x84) = 0; - *(undefined4 *)(iVar3 + 0x84) = 0; - } - } - return uVar5; -} - - - -// WARNING: Instruction at (ram,0x7f08c954) overlaps instruction at (ram,0x7f08c950) -// - -void proc_7F08C86C(int *param_1,int *param_2,longlong param_3) - -{ - BOOL BVar2; - ulonglong uVar1; - int item; - int iVar3; - int *piVar4; - int item_00; - int iVar5; - int iVar6; - - piVar4 = (int *)pPlayer->ptr_inventory_first_in_cycle; - iVar5 = *param_1; - iVar6 = *param_2; - if (piVar4 != NULL) { - item_00 = *piVar4; - do { - if (item_00 == 1) { - item_00 = piVar4[1]; - if ((item_00 < 0x21) && (iVar5 < item_00)) { - if (param_3 != 0) { - BVar2 = check_if_have_ammo_for_item(item_00); - if (BVar2 == FALSE) goto LAB_7f08c968; - item_00 = piVar4[1]; - } - iVar5 = item_00; - iVar6 = 0; - break; - } - } - else { - if (((item_00 == 3) && - ((item_00 = piVar4[1], iVar5 < item_00 || ((iVar5 == item_00 && (iVar6 < piVar4[2])))))) - && ((param_3 == 0 || - ((BVar2 = check_if_have_ammo_for_item(item_00), BVar2 != FALSE || - (BVar2 = check_if_have_ammo_for_item(piVar4[2]), BVar2 != FALSE)))))) { - iVar5 = piVar4[1]; - iVar6 = piVar4[2]; - break; - } - } -LAB_7f08c968: - piVar4 = (int *)piVar4[3]; - if (piVar4 == (int *)pPlayer->ptr_inventory_first_in_cycle) { - if (param_3 != 0) { - item_00 = pPlayer->equipallguns; - goto LAB_7f08c99c; - } - iVar5 = -1; - iVar6 = -1; - } - if (piVar4 == NULL) break; - item_00 = *piVar4; - } while( true ); - } - item_00 = pPlayer->equipallguns; -LAB_7f08c99c: - item = iVar5; - iVar3 = iVar6; - if (item_00 == 0) goto LAB_7f08cae8; - item_00 = *param_1; - uVar1 = get_num_players(); - if (((uVar1 == 1) && (item = check_special_attributes(*param_1,0x100000), item != 0)) && - (item = *param_1, *param_2 < item)) { - if (param_3 != 0) { - BVar2 = check_if_have_ammo_for_item(item); - if (BVar2 == FALSE) goto LAB_7f08ca30; - item = *param_1; - } - iVar3 = item; - if ((iVar5 != item) || (iVar3 = item, item < iVar6)) goto LAB_7f08cae8; - } -LAB_7f08ca30: - if ((iVar5 != *param_1) || (item = iVar5, iVar3 = iVar6, iVar6 == *param_2)) { - do { - item = item_00 + 1; - item_00 = item % 0x21; - iVar3 = item_00 + 1; - if (false) { - trap(0x1c00); - } - if ((false) && (item == -0x80000000)) { - trap(0x1800); - } - if (item_00 == 0) { - item_00 = iVar3 % 0x21; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - } - if ((param_3 == 0) || (BVar2 = check_if_have_ammo_for_item(item_00), BVar2 != FALSE)) { - item = item_00; - iVar3 = 0; - break; - } - item = iVar5; - iVar3 = iVar6; - } while (item_00 != iVar5); - } -LAB_7f08cae8: - *param_1 = item; - *param_2 = iVar3; - return; -} - - - -// WARNING: Instruction at (ram,0x7f08cc18) overlaps instruction at (ram,0x7f08cc14) -// - -void proc_7F08CB10(int *param_1,int *param_2,longlong param_3) - -{ - int *piVar1; - BOOL BVar3; - ulonglong uVar2; - int iVar4; - int iVar5; - int iVar6; - int item; - int iVar7; - - iVar4 = *param_1; - iVar7 = *param_2; - if (pPlayer->ptr_inventory_first_in_cycle != 0) { - piVar1 = *(int **)(pPlayer->ptr_inventory_first_in_cycle + 0x10); - do { - if (*piVar1 == 1) { - item = piVar1[1]; - if ((item < 0x21) && ((item < iVar4 || ((iVar4 == item && (0 < iVar7)))))) { - if (param_3 != 0) { - BVar3 = check_if_have_ammo_for_item(item); - if (BVar3 == FALSE) goto LAB_7f08cc2c; - item = piVar1[1]; - } - iVar4 = item; - iVar7 = 0; - break; - } - } - else { - if (((*piVar1 == 3) && - ((item = piVar1[1], item < iVar4 || ((iVar4 == item && (piVar1[2] < iVar7)))))) && - ((param_3 == 0 || - ((BVar3 = check_if_have_ammo_for_item(item), BVar3 != FALSE || - (BVar3 = check_if_have_ammo_for_item(piVar1[2]), BVar3 != FALSE)))))) - goto code_r0x7f08cc1c; - } -LAB_7f08cc2c: - if (piVar1 == (int *)pPlayer->ptr_inventory_first_in_cycle) { - if (param_3 != 0) { - item = pPlayer->equipallguns; - goto LAB_7f08cc5c; - } - iVar4 = 1000; - iVar7 = 1000; - } - piVar1 = (int *)piVar1[4]; - } while( true ); - } -LAB_7f08cc58: - item = pPlayer->equipallguns; -LAB_7f08cc5c: - if (item != 0) { - item = *param_1; - if (*param_2 == 0) { - iVar5 = item + 0x20; - item = iVar5 % 0x21; - iVar6 = item + 0x20; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar5 == -0x80000000)) { - trap(0x1800); - } - if (item == 0) { - item = iVar6 % 0x21; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar6 == -0x80000000)) { - trap(0x1800); - } - } - } - while (item != iVar4) { - if ((param_3 == 0) || (BVar3 = check_if_have_ammo_for_item(item), BVar3 != FALSE)) { - uVar2 = get_num_players(); - if (((uVar2 != 1) || (iVar4 = check_special_attributes(item,0x100000), iVar4 == 0)) || - ((iVar5 = item, iVar6 = item, item == *param_1 && - (iVar5 = item, iVar6 = item, *param_2 <= item)))) { - iVar5 = item; - iVar6 = 0; - } - goto LAB_7f08ce44; - } - iVar5 = item + 0x20; - item = iVar5 % 0x21; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar5 == -0x80000000)) { - trap(0x1800); - } - if (item == 0) { - item = 0x20; - if (false) { - trap(0x1c00); - } - if ((false) && (false)) { - trap(0x1800); - } - } - } - uVar2 = get_num_players(); - iVar5 = iVar4; - iVar6 = iVar7; - if ((uVar2 != 1) || - (((iVar5 = check_special_attributes(item,0x100000), iVar5 != 0 && - ((param_3 == 0 || (BVar3 = check_if_have_ammo_for_item(item), BVar3 != FALSE)))) && - (((item == *param_1 && (iVar5 = iVar4, iVar6 = iVar7, *param_2 <= item)) || - (iVar5 = item, iVar6 = item, iVar7 < item)))))) { -LAB_7f08ce44: - iVar4 = iVar5; - iVar7 = iVar6; - } - } - *param_1 = iVar4; - *param_2 = iVar7; - return; -code_r0x7f08cc1c: - iVar4 = piVar1[1]; - iVar7 = piVar1[2]; - goto LAB_7f08cc58; -} - - - -undefined8 proc_7F08CE70(uint param_1) - -{ - int *piVar1; - uint uVar2; - int *piVar3; - int iVar4; - - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - uVar2 = 0; - if (piVar1 != NULL) { - iVar4 = *piVar1; - piVar3 = piVar1; - while( true ) { - if (iVar4 == 2) { - if (*(char *)piVar3[1] == '\x01') { - iVar4 = *(int *)((char *)piVar3[1] + 4); - if (*(char *)(iVar4 + 3) == '\x04') { - uVar2 |= *(uint *)(iVar4 + 0x80); - if (param_1 == (param_1 & uVar2)) { - return 1; - } - piVar3 = (int *)piVar3[3]; - } - else { - piVar3 = (int *)piVar3[3]; - } - } - else { - piVar3 = (int *)piVar3[3]; - } - } - else { - piVar3 = (int *)piVar3[3]; - } - if (piVar3 == piVar1) { - return 0; - } - if (piVar3 == NULL) break; - iVar4 = *piVar3; - } - } - return 0; -} - - - -undefined8 proc_7F08CF0C(void) - -{ - int *piVar1; - int *piVar2; - int iVar3; - - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (piVar1 != NULL) { - iVar3 = *piVar1; - piVar2 = piVar1; - while( true ) { - if (iVar3 == 2) { - if (*(char *)piVar2[1] == '\x04') { - if (*(short *)(*(int *)((char *)piVar2[1] + 4) + 4) == 0xf8) { - return 1; - } - piVar2 = (int *)piVar2[3]; - } - else { - piVar2 = (int *)piVar2[3]; - } - } - else { - piVar2 = (int *)piVar2[3]; - } - if ((piVar2 == piVar1) || (piVar2 == NULL)) break; - iVar3 = *piVar2; - } - } - return 0; -} - - - -ulonglong proc_7F08CF80(void) - -{ - ulonglong uVar1; - - uVar1 = 0; - if (pPlayer->bonddead == 0) { - uVar1 = is_weapon_in_inv(0x58); - } - return uVar1; -} - - - -void checkforgoldengun(void) - -{ - is_weapon_in_inv(0x13); - return; -} - - - -undefined8 proc_7F08CFE0(int param_1) - -{ - int *piVar1; - int *piVar2; - int iVar3; - - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (piVar1 != NULL) { - iVar3 = *piVar1; - piVar2 = piVar1; - while( true ) { - if (iVar3 == 2) { - if (param_1 == piVar2[1]) { - return 1; - } - piVar2 = (int *)piVar2[3]; - } - else { - piVar2 = (int *)piVar2[3]; - } - if ((piVar2 == piVar1) || (piVar2 == NULL)) break; - iVar3 = *piVar2; - } - } - return 0; -} - - - -int proc_7F08D038(void) - -{ - int *piVar1; - int iVar2; - char *pcVar3; - int iVar4; - int *piVar5; - - iVar4 = 0; - if (pPlayer->equipallguns != 0) { - iVar4 = 0x20; - } - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - if (piVar1 == NULL) { - return iVar4; - } - iVar2 = *piVar1; - piVar5 = piVar1; - do { - if (iVar2 == 2) { - pcVar3 = (char *)piVar5[1]; - if (*pcVar3 == '\x04') { - if ((*(uint *)(*(int *)(pcVar3 + 4) + 100) & 0x400) == 0) { - piVar5 = (int *)piVar5[3]; - } - else { -LAB_7f08d0ec: - iVar4 += 1; - piVar5 = (int *)piVar5[3]; - } - } - else { - if (*pcVar3 == '\x01') { - if ((*(uint *)(*(int *)(pcVar3 + 4) + 0xc) & 0x40000) == 0) goto LAB_7f08d0ec; - piVar5 = (int *)piVar5[3]; - } - else { - piVar5 = (int *)piVar5[3]; - } - } - } - else { - if (iVar2 == 1) { - if ((pPlayer->equipallguns == 0) || (0x20 < piVar5[1])) goto LAB_7f08d0ec; - piVar5 = (int *)piVar5[3]; - } - else { - piVar5 = (int *)piVar5[3]; - } - } - if (piVar5 == piVar1) { - return iVar4; - } - if (piVar5 == NULL) { - return iVar4; - } - iVar2 = *piVar5; - } while( true ); -} - - - -int * proc_7F08D108(int param_1) - -{ - int *piVar1; - int iVar2; - char *pcVar3; - bool bVar4; - int *piVar5; - - bVar4 = param_1 < 0x20; - if (pPlayer->equipallguns == 0) { - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - } - else { - param_1 += -0x20; - if (bVar4) { - return NULL; - } - piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; - } - if (piVar1 == NULL) { - return NULL; - } - iVar2 = *piVar1; - piVar5 = piVar1; - do { - if (iVar2 == 2) { - pcVar3 = (char *)piVar5[1]; - if (*pcVar3 == '\x04') { - if ((*(uint *)(*(int *)(pcVar3 + 4) + 100) & 0x400) == 0) { - piVar5 = (int *)piVar5[3]; - } - else { - if (param_1 == 0) { - return piVar5; - } -LAB_7f08d1fc: - param_1 += -1; - piVar5 = (int *)piVar5[3]; - } - } - else { - if (*pcVar3 == '\x01') { - if ((*(uint *)(*(int *)(pcVar3 + 4) + 0xc) & 0x40000) == 0) { - if (param_1 == 0) { - return piVar5; - } - goto LAB_7f08d1fc; - } - piVar5 = (int *)piVar5[3]; - } - else { - piVar5 = (int *)piVar5[3]; - } - } - } - else { - if (iVar2 == 1) { - if ((pPlayer->equipallguns == 0) || (0x20 < piVar5[1])) { - if (param_1 == 0) { - return piVar5; - } - goto LAB_7f08d1fc; - } - piVar5 = (int *)piVar5[3]; - } - else { - piVar5 = (int *)piVar5[3]; - } - } - if (piVar5 == piVar1) { - return NULL; - } - if (piVar5 == NULL) { - return NULL; - } - iVar2 = *piVar5; - } while( true ); -} - - - -int proc_7F08D21C(int param_1) - -{ - int iVar1; - int iVar2; - - iVar1 = pPlayer->field_11F4; - if (iVar1 != 0) { - iVar2 = *(int *)(iVar1 + 0x24); - while( true ) { - if (param_1 == iVar2) { - return iVar1; - } - iVar1 = *(int *)(iVar1 + 0x20); - if (iVar1 == 0) break; - iVar2 = *(int *)(iVar1 + 0x24); - } - } - return 0; -} - - - -int proc_7F08D25C(int param_1) - -{ - int iVar1; - int iVar2; - - iVar1 = pPlayer->field_11F4; - if (iVar1 != 0) { - iVar2 = *(int *)(iVar1 + 4); - while( true ) { - if (iVar2 == 0) { - if (param_1 == *(int *)(iVar1 + 8)) { - return iVar1; - } - iVar1 = *(int *)(iVar1 + 0x20); - } - else { - iVar1 = *(int *)(iVar1 + 0x20); - } - if (iVar1 == 0) break; - iVar2 = *(int *)(iVar1 + 4); - } - } - return 0; -} - - - -int proc_7F08D2A8(int param_1) - -{ - int *piVar1; - int iVar2; - - piVar1 = proc_7F08D108(param_1); - if (piVar1 == NULL) { - if (pPlayer->equipallguns == 0) { - param_1 = 0; - } - else { - if (param_1 < 0x20) { - param_1 += 1; - } - else { - param_1 = 0; - } - } - } - else { - if (*piVar1 == 2) { - iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); - if (iVar2 == 0) { - param_1 = 0; - } - else { - param_1 = *(int *)(iVar2 + 8); - } - } - else { - if (*piVar1 == 1) { - param_1 = piVar1[1]; - } - else { - param_1 = 0; - } - } - } - return param_1; -} - - - -int proc_7F08D340(int param_1) - -{ - int *piVar1; - int iVar2; - byte *pbVar3; - int item; - - piVar1 = proc_7F08D108(param_1); - item = 0; - if (piVar1 == NULL) { - if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { - item = get_ptr_short_watch_text_for_item(param_1 + 1); - return item; - } - } - else { - if (*piVar1 == 2) { - iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); - item = 0; - if (iVar2 != 0) { - if (*(int *)(iVar2 + 0x14) != 0) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0x14)); - return (int)pbVar3; - } - item = *(int *)(iVar2 + 8); - } - } - else { - if (*piVar1 == 1) { - item = piVar1[1]; - iVar2 = proc_7F08D25C(item); - if ((iVar2 != 0) && (*(int *)(iVar2 + 0x14) != 0)) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0x14)); - return (int)pbVar3; - } - } - } - } - item = get_ptr_short_watch_text_for_item(item); - return item; -} - - - -int proc_7F08D434(int param_1) - -{ - int *piVar1; - int iVar2; - byte *pbVar3; - int item; - - piVar1 = proc_7F08D108(param_1); - item = 0; - if (piVar1 == NULL) { - if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { - item = get_ptr_long_watch_text_for_item(param_1 + 1); - return item; - } - } - else { - if (*piVar1 == 2) { - iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); - item = 0; - if (iVar2 != 0) { - if (*(int *)(iVar2 + 0x18) != 0) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0x18)); - return (int)pbVar3; - } - item = *(int *)(iVar2 + 8); - } - } - else { - if (*piVar1 == 1) { - item = piVar1[1]; - iVar2 = proc_7F08D25C(item); - if ((iVar2 != 0) && (*(int *)(iVar2 + 0x18) != 0)) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0x18)); - return (int)pbVar3; - } - } - } - } - item = get_ptr_long_watch_text_for_item(item); - return item; -} - - - -int proc_7F08D528(int param_1) - -{ - int iVar1; - - iVar1 = proc_7F08D2A8(param_1); - get_45_degree_angle_0(); - return iVar1; -} - - - -int proc_7F08D550(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_horizontal_offset_on_solo_watch_menu_for_item(item); - return item; -} - - - -int proc_7F08D578(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_vertical_offset_on_solo_watch_menu_for_item(item); - return item; -} - - - -int proc_7F08D5A0(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_depth_offset_solo_watch_menu_inventory_page_for_item(item); - return item; -} - - - -int proc_7F08D5C8(int param_1) - -{ - int *piVar1; - int iVar2; - byte *pbVar3; - int item; - - piVar1 = proc_7F08D108(param_1); - item = 0; - if (piVar1 == NULL) { - if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { - item = get_ptr_first_title_line_item(param_1 + 1); - return item; - } - } - else { - if (*piVar1 == 2) { - iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); - item = 0; - if (iVar2 != 0) { - if (*(int *)(iVar2 + 0xc) != 0) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0xc)); - return (int)pbVar3; - } - item = *(int *)(iVar2 + 8); - } - } - else { - if (*piVar1 == 1) { - item = piVar1[1]; - iVar2 = proc_7F08D25C(item); - if ((iVar2 != 0) && (*(int *)(iVar2 + 0xc) != 0)) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0xc)); - return (int)pbVar3; - } - } - } - } - item = get_ptr_first_title_line_item(item); - return item; -} - - - -int proc_7F08D6BC(int param_1) - -{ - int *piVar1; - int iVar2; - byte *pbVar3; - int item; - - piVar1 = proc_7F08D108(param_1); - item = 0; - if (piVar1 == NULL) { - if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { - item = get_ptr_second_title_line_item(param_1 + 1); - return item; - } - } - else { - if (*piVar1 == 2) { - iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); - item = 0; - if (iVar2 != 0) { - if (*(int *)(iVar2 + 0x10) != 0) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0x10)); - return (int)pbVar3; - } - item = *(int *)(iVar2 + 8); - } - } - else { - if (*piVar1 == 1) { - item = piVar1[1]; - iVar2 = proc_7F08D25C(item); - if ((iVar2 != 0) && (*(int *)(iVar2 + 0x10) != 0)) { - pbVar3 = get_textptr_for_textID((u16)*(undefined4 *)(iVar2 + 0x10)); - return (int)pbVar3; - } - } - } - } - item = get_ptr_second_title_line_item(item); - return item; -} - - - -int proc_7F08D7B0(int param_1) - -{ - int iVar1; - - iVar1 = proc_7F08D2A8(param_1); - get_45_degree_angle(); - return iVar1; -} - - - -int proc_7F08D7D8(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_vertical_position_solo_watch_menu_main_page_for_item(item); - return item; -} - - - -int proc_7F08D800(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_lateral_position_solo_watch_menu_main_page_for_item(item); - return item; -} - - - -int proc_7F08D828(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_depth_on_solo_watch_menu_page_for_item(item); - return item; -} - - - -int proc_7F08D850(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_zrotation_solo_watch_menu_for_item(item); - return item; -} - - - -int proc_7F08D878(int param_1) - -{ - int item; - - item = proc_7F08D2A8(param_1); - get_xrotation_solo_watch_menu_for_item(item); - return item; -} - - - -void proc_7F08D8A0(int param_1) - -{ - *(int *)(param_1 + 0x20) = pPlayer->field_11F4; - pPlayer->field_11F4 = param_1; - return; -} - - - -int proc_7F08D8C0(void) - -{ - return pPlayer->field_11F0; -} - - - -void proc_7F08D8D0(int param_1) - -{ - pPlayer->field_11F0 = param_1; - return; -} - - - -void proc_7F08D8E0(void) - -{ - ITEM_IDS IVar1; - int iVar2; - ITEM_IDS IVar3; - int iVar4; - - IVar1 = get_item_in_hand(0); - iVar4 = 0; - pPlayer->field_11F0 = 0; - iVar2 = proc_7F08D038(); - if (0 < iVar2) { - do { - IVar3 = proc_7F08D2A8(iVar4); - if (IVar3 == IVar1) { - pPlayer->field_11F0 = iVar4; - return; - } - iVar4 += 1; - iVar2 = proc_7F08D038(); - } while (iVar4 < iVar2); - } - return; -} - - - -int proc_7F08D95C(int param_1) - -{ - int iVar1; - byte *pbVar2; - - iVar1 = proc_7F08D21C(param_1); - if ((iVar1 == 0) || (*(int *)(iVar1 + 0x1c) == 0)) { - pbVar2 = NULL; - } - else { - pbVar2 = get_textptr_for_textID((u16)*(undefined4 *)(iVar1 + 0x1c)); - } - return (int)pbVar2; -} - - - -int proc_7F08D9A4(int param_1) - -{ - int iVar1; - byte *pbVar2; - - iVar1 = proc_7F08D25C(param_1); - if ((iVar1 == 0) || (*(int *)(iVar1 + 0x1c) == 0)) { - pbVar2 = NULL; - } - else { - pbVar2 = get_textptr_for_textID((u16)*(undefined4 *)(iVar1 + 0x1c)); - } - return (int)pbVar2; -} - - - -void proc_7F08D9EC(int param_1,int param_2) - -{ - int iVar1; - int iVar2; - int iVar3; - Player *pPVar4; - int iVar5; - int iVar6; - - iVar2 = check_special_attributes(param_1,0x20000); - if (iVar2 != 0) { - iVar3 = check_special_attributes(param_2,0x20000); - iVar2 = 0x7fffffff; - iVar6 = 0; - if (iVar3 == 0) { - param_2 = 0; - } - iVar3 = 0; - pPVar4 = pPlayer; - do { - iVar5 = pPVar4->field_1200; - if (iVar5 < 0) { - iVar5 = 10; - iVar6 = iVar3; - break; - } - if ((param_1 == pPVar4->index_time_spent_using_item) && (param_2 == pPVar4->field_11FC)) { - pPVar4->field_1200 = iVar5 + clock_timer; - iVar5 = iVar3; - break; - } - iVar1 = iVar3; - if (iVar2 <= iVar5) { - iVar5 = iVar2; - iVar1 = iVar6; - } - iVar6 = iVar1; - iVar2 = iVar5; - iVar3 += 1; - pPVar4 = (Player *)&pPVar4->zpos; - iVar5 = iVar3; - } while (iVar3 < 10); - if (iVar5 == 10) { - (&pPlayer->field_1200)[iVar6 * 3] = clock_timer; - (&pPlayer->index_time_spent_using_item)[iVar6 * 3] = param_1; - (&pPlayer->field_11FC)[iVar6 * 3] = param_2; - } - } - return; -} - - - -void proc_7F08DB08(undefined4 *param_1,undefined4 *param_2) - -{ - int iVar1; - int iVar2; - int iVar3; - int iVar4; - - *param_1 = 0; - iVar2 = -1; - *param_2 = 0; - iVar4 = 0; - do { - iVar3 = (int)&pPlayer->unknown + iVar4; - iVar1 = *(int *)(iVar3 + 0x1200); - if (iVar1 < 0) { -LAB_7f08db64: - iVar1 = *(int *)(iVar3 + 0x120c); - } - else { - if (iVar2 < iVar1) { - *param_1 = *(undefined4 *)(iVar3 + 0x11f8); - *param_2 = *(undefined4 *)((int)&pPlayer->field_11FC + iVar4); - iVar3 = (int)&pPlayer->unknown + iVar4; - iVar2 = iVar1; - goto LAB_7f08db64; - } - iVar1 = *(int *)(iVar3 + 0x120c); - } - if ((-1 < iVar1) && (iVar2 < iVar1)) { - *param_1 = *(undefined4 *)(iVar3 + 0x1204); - *param_2 = *(undefined4 *)((int)&pPlayer->field_1208 + iVar4); - iVar2 = iVar1; - } - iVar4 += 0x18; - if (iVar4 == 0x78) { - return; - } - } while( true ); -} - - - -void proc_7F08DBB0(void) - -{ - *(bool *)&pPlayer->field_5BC = *(char *)&pPlayer->field_5BC == '\0'; - return; -} - - - -void proc_7F08DBC8(void) - -{ - u32 uVar1; - float fVar2; - - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_564 + pPlayer->field_594 * 3) = - (fVar2 * 0.00000000 - 0.50000000) * flt_800552E0; - (&pPlayer->field_56C)[pPlayer->field_594 * 3] = 1.00000000; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_57C + pPlayer->field_594 * 3) = - (fVar2 * 0.00000000 - 0.50000000) * flt_800552E4; - (&pPlayer->field_580)[pPlayer->field_594 * 3] = 1.00000000; - if (pPlayer->field_594 == 0) { - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_568 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552F0; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_584 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552F4; - } - else { - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_568 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552E8; - uVar1 = get_random_value(); - fVar2 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar2 = fVar2 + 4294967296.00000000; - } - *(float *)(&pPlayer->field_584 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552EC; - } - pPlayer->field_594 = 1 - pPlayer->field_594; - return; -} - - - -void proc_7F08DE48(float *param_1) - -{ - float fVar1; - float fVar2; - int iVar3; - - fVar1 = flt_800552F8; - if (pPlayer->field_4DC != 0) { - pPlayer->velocity = 0.00000000; - *(float *)&pPlayer->field_524 = param_1[1] / fVar1; - pPlayer->field_528 = 0.00000000; - pPlayer->field_4DC = 0; - } - fVar2 = flt_80055300; - fVar1 = master_player_perspective; - iVar3 = 0; - if (0 < clock_timer) { - do { - iVar3 += 1; - *(float *)&pPlayer->velocity = *param_1 + fVar2 * (float)pPlayer->velocity; - *(float *)&pPlayer->field_524 = param_1[1] + fVar2 * (float)pPlayer->field_524; - *(float *)&pPlayer->field_528 = param_1[2] + fVar2 * (float)pPlayer->field_528; - } while (iVar3 < clock_timer); - } - *(float *)&pPlayer->scaled_velocity = (float)pPlayer->velocity * fVar1; - *(float *)&pPlayer->field_500 = (float)pPlayer->field_524 * fVar1; - *(float *)&pPlayer->field_504 = (float)pPlayer->field_528 * fVar1; - return; -} - - - -void proc_7F08DF44(float *param_1,float *param_2) - -{ - int iVar1; - - if (pPlayer->field_4E0 != 0) { - *(float *)&pPlayer->field_52C = *param_1 / (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_530 = param_1[1] / (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_534 = param_1[2] / (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_538 = *param_2 / (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_53C = param_2[1] / (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_540 = param_2[2] / (1.00000000 - (float)pPlayer->field_4EC); - pPlayer->field_4E0 = 0; - } - iVar1 = 0; - if (0 < clock_timer) { - do { - iVar1 += 1; - *(float *)&pPlayer->field_52C = - *param_1 + (float)pPlayer->field_4EC * (float)pPlayer->field_52C; - *(float *)&pPlayer->field_530 = - param_1[1] + (float)pPlayer->field_4EC * (float)pPlayer->field_530; - *(float *)&pPlayer->field_534 = - param_1[2] + (float)pPlayer->field_4EC * (float)pPlayer->field_534; - *(float *)&pPlayer->field_538 = - *param_2 + (float)pPlayer->field_4EC * (float)pPlayer->field_538; - *(float *)&pPlayer->field_53C = - param_2[1] + (float)pPlayer->field_4EC * (float)pPlayer->field_53C; - *(float *)&pPlayer->field_540 = - param_2[2] + (float)pPlayer->field_4EC * (float)pPlayer->field_540; - } while (iVar1 < clock_timer); - } - *(float *)&pPlayer->field_508 = - (float)pPlayer->field_52C * (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_50C = - (float)pPlayer->field_530 * (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_510 = - (float)pPlayer->field_534 * (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_514 = - (float)pPlayer->field_538 * (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_518 = - (float)pPlayer->field_53C * (1.00000000 - (float)pPlayer->field_4EC); - *(float *)&pPlayer->field_51C = - (float)pPlayer->field_540 * (1.00000000 - (float)pPlayer->field_4EC); - return; -} - - - -void proc_7F08E164(float param_1) - -{ - float fVar1; - - if (param_1 != (float)pPlayer->field_4EC) { - fVar1 = 1.00000000 - param_1; - *(float *)&pPlayer->field_52C = - ((float)pPlayer->field_52C * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; - *(float *)&pPlayer->field_530 = - ((float)pPlayer->field_530 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; - *(float *)&pPlayer->field_534 = - ((float)pPlayer->field_534 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; - *(float *)&pPlayer->field_538 = - ((float)pPlayer->field_538 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; - *(float *)&pPlayer->field_53C = - ((float)pPlayer->field_53C * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; - *(float *)&pPlayer->field_540 = - ((float)pPlayer->field_540 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; - *(float *)&pPlayer->field_4EC = param_1; - } - return; -} - - - -// WARNING: Globals starting with '_' overlap smaller symbols at the same address - -void proc_7F08E240(float param_1,float param_2) - -{ - undefined4 uVar1; - int iVar2; - uint extraout_a1_lo; - undefined4 extraout_a2_lo; - undefined4 extraout_a2_lo_00; - undefined4 extraout_a2_lo_01; - undefined4 extraout_a2_lo_02; - undefined4 extraout_a3_lo; - undefined4 extraout_a3_lo_00; - undefined4 extraout_a3_lo_01; - undefined4 extraout_a3_lo_02; - float **ppfVar3; - float **ppfVar4; - float **ppfVar5; - float **ppfVar6; - f32 fVar7; - float *pfVar8; - float extraout_f12; - float extraout_f12_00; - float fVar9; - float extraout_f12_01; - float fStack180; - undefined4 uStack176; - float fStack172; - float afStack168 [16]; - float *apfStack104 [4]; - int *piStack88; - float fStack40; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - f32 fStack8; - float fStack4; - - fStack12 = dword_80036B00; - fStack8 = (f32)dword_80036B04; - fStack4 = (float)dword_80036B08; - fStack24 = dword_80036B0C; - fStack20 = dword_80036B10; - fStack16 = flt_80036B14; - fStack36 = dword_80036B18; - fStack32 = flt_80036B1C; - fStack28 = dword_80036B20; - fStack40 = proc_7F06F618((int)&pPlayer->field_598); - ppfVar3 = (float **)&dword_80036B24; - ppfVar5 = apfStack104; - if (pPlayer->field_4E8 == 0) { - if (flt_80055304 < fStack40) { - pPlayer->field_4F4 = 1.00000000; - } - else { - if (flt_80055308 < fStack40) { - *(float *)&pPlayer->field_4F4 = - ((fStack40 - flt_80055308) * flt_8005530C) / flt_80055310 + flt_80055314; - } - else { - *(float *)&pPlayer->field_4F4 = flt_80055318; - } - } - pPlayer->field_4F8 = pPlayer->field_4F4; - ppfVar3 = (float **)&dword_80036B24; - } - else { - if (pPlayer->field_4E8 == 1) { - *(float *)&pPlayer->field_4F4 = flt_8005531C; - pPlayer->field_4F8 = 0.50000000; - } - else { - pPlayer->field_4F4 = 1.00000000; - pPlayer->field_4F8 = pPlayer->field_4F4; - } - } - do { - ppfVar4 = ppfVar3 + 3; - ppfVar6 = ppfVar5 + 3; - *ppfVar5 = *ppfVar3; - ppfVar5[1] = ppfVar3[1]; - ppfVar5[2] = ppfVar3[2]; - ppfVar3 = ppfVar4; - ppfVar5 = ppfVar6; - } while (ppfVar4 != (float **)&dword_80036B60); - *ppfVar6 = _dword_80036B60; - fStack180 = dword_80036B64; - uStack176 = dword_80036B68; - fStack172 = dword_80036B6C; - uVar1 = proc_7F0701E0(); - pPlayer->field_4E4 = 0; - proc_7F0701D4(0); - proc_7F070AEC((int)&pPlayer->field_598,clock_timer,1); - proc_7F0701D4(uVar1); - subcalcpos((int)&pPlayer->field_598,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); - proc_7F057FD0(afStack168); - apfStack104[0] = afStack168; - piStack88 = &pPlayer->field_6D0; - subcalcmatrices(apfStack104,(uint)&pPlayer->field_598,extraout_a2_lo_00,extraout_a3_lo_00); - pPlayer->field_544 = pPlayer->field_554; - pPlayer->field_548 = pPlayer->field_558; - pPlayer->field_54C = pPlayer->field_55C; - getsuboffset((int)&pPlayer->field_598,&fStack180,extraout_a2_lo_01,extraout_a3_lo_01); - fStack180 = fStack180 - (float)pPlayer->field_700; - fStack172 = fStack172 - (float)pPlayer->field_708; - setsuboffset((int)&pPlayer->field_598,&fStack180,extraout_a2_lo_02,extraout_a3_lo_02); - if (0.00000000 < fStack40) { - *(float *)&pPlayer->field_700 = (float)pPlayer->field_700 + param_2; - *(float *)&pPlayer->field_708 = (float)pPlayer->field_708 * param_1; - if (0 < clock_timer) { - *(float *)&pPlayer->field_700 = (float)pPlayer->field_700 / global_timer_delta; - *(float *)&pPlayer->field_708 = (float)pPlayer->field_708 / global_timer_delta; - } - fStack12 = (float)pPlayer->field_700 * (float)pPlayer->field_4F4; - fStack8 = (f32)(((float)pPlayer->field_704 - (float)pPlayer->stationary_ground_offset) * - (float)pPlayer->field_4F4 + (float)pPlayer->stationary_ground_offset); - fStack4 = (float)pPlayer->field_708 * (float)pPlayer->field_4F4; - if (pPlayer->field_4E8 < 0) { - fStack24 = (float)pPlayer->field_6F0; - fStack20 = (float)pPlayer->field_6F4; - fStack16 = (float)pPlayer->field_6F8; - fStack36 = (float)pPlayer->field_6E0; - fStack32 = (float)pPlayer->field_6E4; - fStack28 = (float)pPlayer->field_6E8; - proc_7F08E164(flt_80055328); - } - else { - fStack24 = (float)pPlayer->field_6F0 * (float)pPlayer->field_4F8; - fStack20 = (float)pPlayer->field_6F4 * (float)pPlayer->field_4F4; - fStack16 = ((float)pPlayer->field_6F8 - 1.00000000) * (float)pPlayer->field_4F4 + 1.00000000; - fStack36 = (float)pPlayer->field_6E0 * (float)pPlayer->field_4F4; - fStack32 = ((float)pPlayer->field_6E4 - 1.00000000) * (float)pPlayer->field_4F4 + 1.00000000; - fStack28 = (float)pPlayer->field_6E8 * (float)pPlayer->field_4F4; - pPlayer->field_4F0 = pPlayer->field_4F0 + clock_timer; - if (pPlayer->field_4F0 < 0x3d) { - proc_7F08E164(flt_80055324); - } - else { - proc_7F08E164(flt_80055320); - } - } - } - else { - pPlayer->field_544 = pPlayer->field_554; - pPlayer->field_548 = pPlayer->field_558; - pPlayer->field_54C = pPlayer->field_55C; - fStack12 = 0.00000000; - fStack8 = pPlayer->stationary_ground_offset; - fStack4 = 0.00000000; - pPlayer->field_4F0 = 0; - proc_7F08E164(flt_8005532C); - fVar7 = get_BONDdata_field19C(); - *(float *)&pPlayer->field_560 = - (float)pPlayer->field_560 + - (flt_80055330 + flt_80055334 * (float)fVar7) * global_timer_delta; - pfVar8 = (float *)pPlayer->field_560; - if (1.00000000 <= (float)pfVar8) { - proc_7F08DBC8(); - *(float *)&pPlayer->field_560 = (float)pPlayer->field_560 - 1.00000000; - pfVar8 = (float *)pPlayer->field_560; - iVar2 = pPlayer->field_594; - fVar9 = extraout_f12_00; - } - else { - iVar2 = pPlayer->field_594; - fVar9 = extraout_f12; - } - proc_7F05AE00((float *)(&pPlayer->field_564 + iVar2 * 3), - (float *)((int)pPlayer + iVar2 * -0xc + 0x570),fVar9,pfVar8); - fVar7 = get_BONDdata_field19C(); - fStack24 = fStack24 * ((float)fVar7 * 5.00000000 + 1.00000000); - fVar7 = get_BONDdata_field19C(); - fStack20 = fStack20 * ((float)fVar7 * 5.00000000 + 1.00000000); - proc_7F05AE00((float *)(&pPlayer->field_57C + pPlayer->field_594 * 3), - (float *)((int)pPlayer + pPlayer->field_594 * -0xc + 0x588),extraout_f12_01, - (float *)pPlayer->field_560); - fVar7 = get_BONDdata_field19C(); - fStack36 = fStack36 * ((float)fVar7 * 5.00000000 + 1.00000000); - fVar7 = get_BONDdata_field19C(); - fStack28 = fStack28 * ((float)fVar7 * 5.00000000 + 1.00000000); - } - proc_7F08DE48(&fStack12); - proc_7F08DF44(&fStack24,&fStack36); - return; -} - - - -void proc_7F08E8BC(float param_1) - -{ - int iVar1; - int iVar2; - int *piVar3; - float extraout_f12; - float fVar4; - - param_1 = param_1 * DAT_80036af4; - piVar3 = &dword_80036AD0; - iVar2 = 0; - do { - fVar4 = (float)piVar3[3]; - if (param_1 <= fVar4 * (float)piVar3[5]) { - iVar1 = pPlayer->field_4E8; - if (iVar2 != iVar1) { - fVar4 = 0.00000000; - if (-1 < iVar1) { - fVar4 = ((float)piVar3[2] - (float)piVar3[1]) * - (((float)pPlayer->field_5C0 - (&FLOAT_80036ad4)[iVar1 * 6]) / - ((&FLOAT_80036ad8)[iVar1 * 6] - (&FLOAT_80036ad4)[iVar1 * 6])) + (float)piVar3[1]; - } - proc_7F06FCA8((int)&pPlayer->field_598,*piVar3 + ptr_animation_table, - *(undefined *)&pPlayer->field_5BC,param_1,fVar4,fVar4); - proc_7F06FDCC((int)&pPlayer->field_598,piVar3[1],0); - proc_7F06FDE8((int)&pPlayer->field_598,extraout_f12); - proc_7F06FE3C((int)&pPlayer->field_598,proc_7F08DBB0); - pPlayer->field_4E8 = iVar2; - fVar4 = (float)piVar3[3]; - } - proc_7F06FE4C((int)&pPlayer->field_598,(param_1 / fVar4) * 0.50000000,param_1 / fVar4); - return; - } - iVar2 += 1; - piVar3 = piVar3 + 6; - } while (iVar2 != 2); - return; -} - - - -void proc_7F08EA48(undefined4 param_1,undefined param_2,float param_3,float param_4) - -{ - float in_a2_lo; - float in_a3_lo; - - proc_7F06FCA8((int)&pPlayer->field_598,param_1,param_2,in_a2_lo,in_a2_lo,in_a3_lo); - pPlayer->field_4E8 = -1; - return; -} - - - -void proc_7F08EAB8(float param_1) - -{ - proc_7F06FE4C((int)&pPlayer->field_598,param_1 * 0.50000000,param_1); - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -float proc_7F08EAF8(void) - -{ - f32 fVar1; - float fVar2; - float fVar3; - - if (pPlayer->field_4E8 < 0) { - fVar3 = 0.00000000; - } - else { - fVar1 = get_BONDdata_field19C(); - fVar3 = (float)fVar1 * flt_80055338 + flt_8005533C; - fVar2 = proc_7F06F618((int)&pPlayer->field_598); - if ((0.00000000 < fVar2) && - (fVar2 = fVar2 / ((&FLOAT_80036ad8)[pPlayer->field_4E8 * 6] - - (&FLOAT_80036ad4)[pPlayer->field_4E8 * 6]), fVar3 <= fVar2)) { - fVar3 = fVar2; - } - } - return fVar3; -} - - - -int * proc_7F08EBD0(float *param_1) - -{ - int *piVar1; - int *piVar2; - int iVar3; - float fVar4; - float fVar5; - float fVar6; - - piVar1 = NULL; - if ((ptr_setup_path_tbl != NULL) && (fVar4 = -1.00000000, -1 < *(int *)ptr_setup_path_tbl)) { - iVar3 = *(int *)ptr_setup_path_tbl; - piVar2 = (int *)ptr_setup_path_tbl; - do { - fVar5 = param_1[2] - *(float *)(ptr_0xxxpresets + iVar3 * 0x2c + 2); - fVar6 = *param_1 - *(float *)(ptr_0xxxpresets + iVar3 * 0x2c); - fVar5 = fVar5 * fVar5 + fVar6 * fVar6; - if ((fVar4 < 0.00000000) || (fVar5 < fVar4)) { - iVar3 = piVar2[4]; - fVar4 = fVar5; - piVar1 = piVar2; - } - else { - iVar3 = piVar2[4]; - } - piVar2 = piVar2 + 4; - } while (-1 < iVar3); - } - return piVar1; -} - - - -int * proc_7F08EC8C(float *param_1,undefined8 param_2,int *param_3) - -{ - int iVar1; - int *piVar2; - int *piVar3; - float fVar4; - float fVar5; - float fVar6; - - piVar2 = (int *)param_3[1]; - if (piVar2 != NULL) { - iVar1 = *piVar2; - fVar4 = param_1[2] - *(float *)(ptr_0xxxpresets + *param_3 * 0x2c + 2); - fVar5 = *param_1 - *(float *)(ptr_0xxxpresets + *param_3 * 0x2c); - fVar4 = fVar4 * fVar4 + fVar5 * fVar5; - while (-1 < iVar1) { - piVar3 = (int *)(ptr_setup_path_tbl + iVar1 * 0x10); - fVar5 = param_1[2] - *(float *)(ptr_0xxxpresets + *piVar3 * 0x2c + 2); - fVar6 = *param_1 - *(float *)(ptr_0xxxpresets + *piVar3 * 0x2c); - fVar5 = fVar5 * fVar5 + fVar6 * fVar6; - if (fVar4 <= fVar5) { - fVar5 = fVar4; - piVar3 = param_3; - } - iVar1 = piVar2[1]; - piVar2 = piVar2 + 1; - fVar4 = fVar5; - param_3 = piVar3; - } - } - return param_3; -} - - - -int proc_7F08ED60(int *param_1,int param_2) - -{ - int iVar1; - - iVar1 = *param_1; - while( true ) { - if (iVar1 < 0) { - return 0; - } - if (param_2 == *(int *)(ptr_setup_path_link + iVar1 * 0xc + 8)) break; - iVar1 = param_1[1]; - param_1 = param_1 + 1; - } - return (int)(ptr_setup_path_link + iVar1 * 0xc); -} - - - -void proc_7F08EDB4(int *param_1,undefined4 param_2) - -{ - undefined *puVar1; - int iVar2; - - puVar1 = ptr_setup_path_link; - iVar2 = *param_1; - while (-1 < iVar2) { - if (*(int *)(puVar1 + iVar2 * 0xc + 8) < 0) { - *(undefined4 *)(puVar1 + iVar2 * 0xc + 8) = param_2; - iVar2 = param_1[1]; - } - else { - iVar2 = param_1[1]; - } - param_1 = param_1 + 1; - } - return; -} - - - -undefined8 proc_7F08EE00(int **param_1,int *param_2) - -{ - int *piVar1; - int *piVar2; - undefined8 uVar3; - - piVar1 = *param_1; - uVar3 = 0; - if (piVar1 != NULL) { - piVar2 = param_1[2]; - while( true ) { - if (param_2 == piVar2) { - uVar3 = 1; - proc_7F08EDB4(piVar1,(int)param_2 + 1); - piVar1 = param_1[3]; - } - else { - piVar1 = param_1[3]; - } - if (piVar1 == NULL) break; - piVar2 = param_1[5]; - param_1 = param_1 + 3; - } - } - return uVar3; -} - - - -// WARNING: Instruction at (ram,0x7f08eed0) overlaps instruction at (ram,0x7f08eecc) -// - -longlong proc_7F08EE70(int param_1,int param_2,int **param_3,longlong param_4) - -{ - int **ppiVar1; - longlong lVar2; - int *piVar3; - - lVar2 = 1; - if (*param_3 != NULL) { - piVar3 = param_3[3]; - ppiVar1 = param_3; - while( true ) { - ppiVar1[2] = (int *)0xffffffff; - if (piVar3 == NULL) break; - piVar3 = ppiVar1[6]; - ppiVar1 = ppiVar1 + 3; - } - } - *(undefined4 *)(param_1 + 8) = 0; - piVar3 = NULL; - if ((param_4 != 0) || (*(int *)(param_2 + 8) < 0)) { - do { - lVar2 = proc_7F08EE00(param_3,piVar3); - piVar3 = (int *)((int)piVar3 + 1); - if ((param_4 == 0) && (-1 < *(int *)(param_2 + 8))) { - return lVar2; - } - } while (lVar2 != 0); - } - return lVar2; -} - - - -undefined4 proc_7F08EF1C(int param_1,int **param_2,int **param_3) - -{ - longlong lVar1; - int iVar2; - int *piVar3; - - lVar1 = proc_7F08EE70(param_1,(int)param_2,param_3,0); - if (lVar1 != 0) { - iVar2 = (int)param_2[2] + -1; - if (iVar2 < 0) { - piVar3 = param_2[2]; - } - else { - do { - param_2[2] = param_2[2] + 0x9c4; - param_2 = (int **)proc_7F08ED60(*param_2,iVar2); - iVar2 += -1; - } while (-1 < iVar2); - piVar3 = param_2[2]; - } - param_2[2] = piVar3 + 0x9c4; - } - return (int)lVar1; -} - - - -int proc_7F08EFA0(int **param_1,int **param_2,int **param_3,longlong param_4) - -{ - int iVar1; - int **ppiVar2; - int *piVar3; - int **ppiVar4; - int iVar5; - - ppiVar4 = param_3; - if (1 < param_4) { - if (ptr_setup_path_link == NULL) { - *param_3 = NULL; - ppiVar4 = param_3; - goto LAB_7f08f05c; - } - iVar1 = proc_7F08EF1C((int)param_1,param_2,(int **)ptr_setup_path_link); - ppiVar4 = param_3; - if (iVar1 != 0) { - iVar5 = (int)param_4 + 9999; - *(int ***)param_3 = param_1; - iVar1 = 0x2711; - ppiVar4 = param_3 + 1; - if (10000 < (int)param_2[2]) { - if (iVar5 < 0x2712) { - *ppiVar4 = NULL; - goto LAB_7f08f05c; - } - piVar3 = *param_1; - while( true ) { - ppiVar2 = (int **)proc_7F08ED60(piVar3,iVar1); - *(int ***)ppiVar4 = ppiVar2; - iVar1 += 1; - ppiVar4 = ppiVar4 + 1; - if (((int)param_2[2] < iVar1) || (iVar5 <= iVar1)) break; - piVar3 = *ppiVar2; - } - } - } - } - *ppiVar4 = NULL; -LAB_7f08f05c: - return (int)ppiVar4 + (4 - (int)param_3) >> 2; -} - - - -int proc_7F08F090(int *param_1,int param_2,int param_3) - -{ - int iVar1; - undefined *puVar2; - - iVar1 = *param_1; - do { - if (iVar1 < 0) { - return 0; - } - puVar2 = ptr_setup_path_tbl + iVar1 * 0x10; - if (param_3 == *(int *)(puVar2 + 8)) { - if (param_2 == *(int *)(puVar2 + 0xc)) { - return (int)puVar2; - } - iVar1 = param_1[1]; - } - else { - iVar1 = param_1[1]; - } - param_1 = param_1 + 1; - } while( true ); -} - - - -void proc_7F08F0E8(int *param_1,undefined4 param_2,int param_3) - -{ - undefined *puVar1; - int iVar2; - undefined *puVar3; - - puVar1 = ptr_setup_path_tbl; - iVar2 = *param_1; - while (-1 < iVar2) { - puVar3 = puVar1 + iVar2 * 0x10; - if (param_3 == *(int *)(puVar3 + 8)) { - if (*(int *)(puVar3 + 0xc) < 0) { - *(undefined4 *)(puVar3 + 0xc) = param_2; - iVar2 = param_1[1]; - } - else { - iVar2 = param_1[1]; - } - } - else { - iVar2 = param_1[1]; - } - param_1 = param_1 + 1; - } - return; -} - - - -undefined8 proc_7F08F138(int *param_1,int param_2,int param_3) - -{ - int *piVar1; - undefined *puVar2; - int iVar3; - undefined8 uVar4; - - puVar2 = ptr_setup_path_tbl; - iVar3 = *param_1; - uVar4 = 0; - while (-1 < iVar3) { - if (param_2 == *(int *)(puVar2 + iVar3 * 0x10 + 0xc)) { - piVar1 = *(int **)(puVar2 + iVar3 * 0x10 + 4); - if (piVar1 == NULL) { - iVar3 = param_1[1]; - } - else { - uVar4 = 1; - proc_7F08F0E8(piVar1,param_2 + 1,param_3); - iVar3 = param_1[1]; - } - } - else { - iVar3 = param_1[1]; - } - param_1 = param_1 + 1; - } - return uVar4; -} - - - -void proc_7F08F1D8(int param_1,int param_2,longlong param_3) - -{ - undefined *puVar1; - undefined *puVar2; - longlong lVar3; - int *piVar4; - int iVar5; - int iVar6; - - puVar2 = ptr_setup_path_link; - puVar1 = ptr_setup_path_tbl; - iVar6 = 0; - piVar4 = *(int **)(ptr_setup_path_link + *(int *)(param_1 + 8) * 0xc + 4); - iVar5 = *piVar4; - while (-1 < iVar5) { - *(undefined4 *)(puVar1 + iVar5 * 0x10 + 0xc) = 0xffffffff; - iVar5 = piVar4[1]; - piVar4 = piVar4 + 1; - } - *(undefined4 *)(param_1 + 0xc) = 0; - if ((param_3 != 0) || (*(int *)(param_2 + 0xc) < 0)) { - iVar5 = *(int *)(param_1 + 8); - while( true ) { - lVar3 = proc_7F08F138(*(int **)(puVar2 + iVar5 * 0xc + 4),iVar6,iVar5); - iVar6 += 1; - if (((param_3 == 0) && (-1 < *(int *)(param_2 + 0xc))) || (lVar3 == 0)) break; - iVar5 = *(int *)(param_1 + 8); - } - } - return; -} - - - -void proc_7F08F2CC(int param_1,int param_2) - -{ - int iVar1; - - proc_7F08F1D8(param_1,param_2,0); - iVar1 = *(int *)(param_2 + 0xc) + -1; - if (iVar1 < 0) { - iVar1 = *(int *)(param_2 + 0xc); - } - else { - do { - *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 10000; - param_2 = proc_7F08F090(*(int **)(param_2 + 4),iVar1,*(int *)(param_1 + 8)); - iVar1 += -1; - } while (-1 < iVar1); - iVar1 = *(int *)(param_2 + 0xc); - } - *(int *)(param_2 + 0xc) = iVar1 + 10000; - return; -} - - - -int proc_7F08F350(int param_1,int param_2,int *param_3,longlong param_4) - -{ - int iVar1; - int *piVar2; - int iVar3; - int *piVar4; - int iVar5; - - piVar4 = param_3; - if (1 < param_4) { - proc_7F08F2CC(param_1,param_2); - iVar5 = (int)param_4 + 9999; - *param_3 = param_1; - iVar3 = 0x2711; - piVar4 = param_3 + 1; - if (10000 < *(int *)(param_2 + 0xc)) { - if (iVar5 < 0x2712) { - *piVar4 = 0; - goto LAB_7f08f400; - } - piVar2 = *(int **)(param_1 + 4); - while( true ) { - iVar1 = proc_7F08F090(piVar2,iVar3,*(int *)(param_1 + 8)); - *piVar4 = iVar1; - iVar3 += 1; - piVar4 = piVar4 + 1; - if ((*(int *)(param_2 + 0xc) < iVar3) || (iVar5 <= iVar3)) break; - piVar2 = *(int **)(iVar1 + 4); - } - } - } - *piVar4 = 0; -LAB_7f08f400: - return (int)piVar4 + (4 - (int)param_3) >> 2; -} - - - -void proc_7F08F438(int param_1,int param_2,int *param_3,int *param_4) - -{ - int iVar1; - int iVar2; - int *piVar3; - undefined *puVar4; - int *piVar5; - - piVar5 = *(int **)(param_1 + 4); - iVar1 = *piVar5; - do { - if (iVar1 < 0) { - *param_4 = 0; - *param_3 = 0; - return; - } - piVar3 = *(int **)(ptr_setup_path_tbl + iVar1 * 0x10 + 4); - iVar2 = *piVar3; - while (-1 < iVar2) { - puVar4 = ptr_setup_path_tbl + iVar2 * 0x10; - if ((undefined *)param_2 == ptr_setup_path_link + *(int *)(puVar4 + 8) * 0xc) { - *(undefined **)param_3 = ptr_setup_path_tbl + iVar1 * 0x10; - *(undefined **)param_4 = puVar4; - return; - } - iVar2 = piVar3[1]; - piVar3 = piVar3 + 1; - } - iVar1 = piVar5[1]; - piVar5 = piVar5 + 1; - } while( true ); -} - - - -int proc_7F08F4F0(int param_1,int param_2,int *param_3,longlong param_4) - -{ - int iVar1; - int **ppiVar2; - int iVar3; - int *piVar4; - int **ppiVar5; - int *piVar6; - int **ppiVar7; - int iStack44; - int aiStack40 [10]; - - piVar6 = param_3; - if (ptr_setup_path_link != NULL) { - ppiVar5 = (int **)(ptr_setup_path_link + *(int *)(param_1 + 8) * 0xc); - ppiVar7 = (int **)(ptr_setup_path_link + *(int *)(param_2 + 8) * 0xc); - iVar1 = proc_7F08EF1C((int)ppiVar5,ppiVar7,(int **)ptr_setup_path_link); - if (iVar1 == 0) { - *param_3 = 0; - piVar6 = param_3; - goto LAB_7f08f638; - } - iVar1 = (int)ppiVar5[2] + 1; - piVar6 = param_3; - if ((iVar1 <= (int)ppiVar7[2]) && (piVar6 = param_3, 1 < param_4)) { - piVar4 = *ppiVar5; - piVar6 = param_3; - while( true ) { - ppiVar2 = (int **)proc_7F08ED60(piVar4,iVar1); - proc_7F08F438((int)ppiVar5,(int)ppiVar2,aiStack40,&iStack44); - iVar3 = proc_7F08F350(param_1,aiStack40[0],piVar6,param_4); - iVar1 += 1; - param_4 = (longlong)(((int)param_4 - iVar3) + 1); - piVar6 = piVar6 + iVar3 + -1; - param_1 = iStack44; - if (((int)ppiVar7[2] < iVar1) || (param_1 = iStack44, param_4 < 2)) break; - piVar4 = *ppiVar2; - param_1 = iStack44; - ppiVar5 = ppiVar2; - } - } - iVar1 = proc_7F08F350(param_1,param_2,piVar6,param_4); - piVar6 = piVar6 + iVar1 + -1; - } - *piVar6 = 0; -LAB_7f08f638: - return (int)piVar6 + (4 - (int)param_3) >> 2; -} - - - -void proc_7F08F67C(void) - -{ - undefined *puVar1; - int iVar2; - - if (-1 < *(int *)ptr_setup_path_tbl) { - iVar2 = *(int *)(ptr_setup_path_tbl + 0x10); - puVar1 = ptr_setup_path_tbl; - while( true ) { - *(undefined4 *)(puVar1 + 0xc) = 0xffffffff; - if (iVar2 < 0) break; - iVar2 = *(int *)(puVar1 + 0x20); - puVar1 = puVar1 + 0x10; - } - } - return; -} - - - -// WARNING: Instruction at (ram,0x7f08f860) overlaps instruction at (ram,0x7f08f85c) -// - -int proc_7F08F6B0(int *param_1,int param_2) - -{ - uint uVar1; - int *piVar2; - u32 uVar3; - uint uVar4; - uint uVar5; - uint uVar6; - int iVar7; - - uVar5 = 0; - if (-1 < *param_1) { - iVar7 = param_1[1]; - piVar2 = param_1; - while( true ) { - uVar5 += 1; - if (iVar7 < 0) break; - iVar7 = piVar2[2]; - piVar2 = piVar2 + 1; - } - } - uVar3 = get_random_value(); - uVar1 = uVar3 % uVar5; - if (uVar5 == 0) { - trap(0x1c00); - } - if ((int)uVar1 < (int)uVar5) { - uVar6 = uVar5 - uVar1 & 3; - if (uVar6 == 0) { - iVar7 = uVar1 << 2; - uVar4 = uVar1; - } - else { - piVar2 = param_1 + uVar1; - uVar4 = uVar1; - do { - uVar4 += 1; - if (param_2 == *(int *)(ptr_setup_path_tbl + *piVar2 * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + *piVar2 * 0x10); - } - piVar2 = piVar2 + 1; - } while (uVar6 + uVar1 != uVar4); - iVar7 = uVar4 * 4; - if (uVar4 == uVar5) goto LAB_7f08f80c; - } - piVar2 = (int *)((int)param_1 + iVar7); - do { - uVar4 += 4; - if (param_2 == *(int *)(ptr_setup_path_tbl + *piVar2 * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + *piVar2 * 0x10); - } - if (param_2 == *(int *)(ptr_setup_path_tbl + piVar2[1] * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + piVar2[1] * 0x10); - } - if (param_2 == *(int *)(ptr_setup_path_tbl + piVar2[2] * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + piVar2[2] * 0x10); - } - if (param_2 == *(int *)(ptr_setup_path_tbl + piVar2[3] * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + piVar2[3] * 0x10); - } - piVar2 = piVar2 + 4; - } while (uVar4 != uVar5); - } -LAB_7f08f80c: - uVar5 = 0; - if (0 < (int)uVar1) { - piVar2 = param_1; - if ((uVar1 & 3) == 0) { - iVar7 = 0; - } - else { - do { - uVar5 += 1; - if (param_2 == *(int *)(ptr_setup_path_tbl + *piVar2 * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + *piVar2 * 0x10); - } - piVar2 = piVar2 + 1; - } while ((uVar1 & 3) != uVar5); - iVar7 = uVar5 * 4; - if (uVar5 == uVar1) { - return 0; - } - } - param_1 = (int *)((int)param_1 + iVar7); - do { - uVar5 += 4; - if (param_2 == *(int *)(ptr_setup_path_tbl + *param_1 * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + *param_1 * 0x10); - } - if (param_2 == *(int *)(ptr_setup_path_tbl + param_1[1] * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + param_1[1] * 0x10); - } - if (param_2 == *(int *)(ptr_setup_path_tbl + param_1[2] * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + param_1[2] * 0x10); - } - if (param_2 == *(int *)(ptr_setup_path_tbl + param_1[3] * 0x10 + 0xc)) { - return (int)(ptr_setup_path_tbl + param_1[3] * 0x10); - } - param_1 = param_1 + 4; - } while (uVar5 != uVar1); - } - return 0; -} - - - -// WARNING: Instruction at (ram,0x7f08fadc) overlaps instruction at (ram,0x7f08fad8) -// - -int proc_7F08F908(int *param_1,int param_2) - -{ - uint uVar1; - int *piVar2; - u32 uVar3; - uint uVar4; - uint uVar5; - uint uVar6; - int iVar7; - - uVar5 = 0; - if (-1 < *param_1) { - iVar7 = param_1[1]; - piVar2 = param_1; - while( true ) { - uVar5 += 1; - if (iVar7 < 0) break; - iVar7 = piVar2[2]; - piVar2 = piVar2 + 1; - } - } - uVar3 = get_random_value(); - uVar1 = uVar3 % uVar5; - if (uVar5 == 0) { - trap(0x1c00); - } - if ((int)uVar1 < (int)uVar5) { - uVar6 = uVar5 - uVar1 & 3; - if (uVar6 == 0) { - iVar7 = uVar1 << 2; - uVar4 = uVar1; - } - else { - piVar2 = param_1 + uVar1; - uVar4 = uVar1; - do { - uVar4 += 1; - if (param_2 == *(int *)(ptr_setup_path_link + *piVar2 * 0xc + 8)) { - return (int)(ptr_setup_path_link + *piVar2 * 0xc); - } - piVar2 = piVar2 + 1; - } while (uVar6 + uVar1 != uVar4); - iVar7 = uVar4 * 4; - if (uVar4 == uVar5) goto LAB_7f08fa80; - } - piVar2 = (int *)((int)param_1 + iVar7); - do { - uVar4 += 4; - if (param_2 == *(int *)(ptr_setup_path_link + *piVar2 * 0xc + 8)) { - return (int)(ptr_setup_path_link + *piVar2 * 0xc); - } - if (param_2 == *(int *)(ptr_setup_path_link + piVar2[1] * 0xc + 8)) { - return (int)(ptr_setup_path_link + piVar2[1] * 0xc); - } - if (param_2 == *(int *)(ptr_setup_path_link + piVar2[2] * 0xc + 8)) { - return (int)(ptr_setup_path_link + piVar2[2] * 0xc); - } - if (param_2 == *(int *)(ptr_setup_path_link + piVar2[3] * 0xc + 8)) { - return (int)(ptr_setup_path_link + piVar2[3] * 0xc); - } - piVar2 = piVar2 + 4; - } while (uVar4 != uVar5); - } -LAB_7f08fa80: - uVar5 = 0; - if (0 < (int)uVar1) { - piVar2 = param_1; - if ((uVar1 & 3) == 0) { - iVar7 = 0; - } - else { - do { - uVar5 += 1; - if (param_2 == *(int *)(ptr_setup_path_link + *piVar2 * 0xc + 8)) { - return (int)(ptr_setup_path_link + *piVar2 * 0xc); - } - piVar2 = piVar2 + 1; - } while ((uVar1 & 3) != uVar5); - iVar7 = uVar5 * 4; - if (uVar5 == uVar1) { - return 0; - } - } - param_1 = (int *)((int)param_1 + iVar7); - do { - uVar5 += 4; - if (param_2 == *(int *)(ptr_setup_path_link + *param_1 * 0xc + 8)) { - return (int)(ptr_setup_path_link + *param_1 * 0xc); - } - if (param_2 == *(int *)(ptr_setup_path_link + param_1[1] * 0xc + 8)) { - return (int)(ptr_setup_path_link + param_1[1] * 0xc); - } - if (param_2 == *(int *)(ptr_setup_path_link + param_1[2] * 0xc + 8)) { - return (int)(ptr_setup_path_link + param_1[2] * 0xc); - } - if (param_2 == *(int *)(ptr_setup_path_link + param_1[3] * 0xc + 8)) { - return (int)(ptr_setup_path_link + param_1[3] * 0xc); - } - param_1 = param_1 + 4; - } while (uVar5 != uVar1); - } - return 0; -} - - - -int proc_7F08FB90(int param_1,int param_2) - -{ - int iVar1; - int **ppiVar2; - int iStack52; - int local_30 [2]; - int iStack40; - int local_24; - int local_1c; - int local_18 [6]; - - if (ptr_setup_path_link != NULL) { - ppiVar2 = (int **)(ptr_setup_path_link + *(int *)(param_1 + 8) * 0xc); - if (ppiVar2 == (int **)(ptr_setup_path_link + *(int *)(param_2 + 8) * 0xc)) { - proc_7F08F67C(); - proc_7F08F1D8(param_2,param_1,1); - iVar1 = proc_7F08F6B0(*(int **)(param_1 + 4),-1); - if (iVar1 != 0) { - return iVar1; - } - iVar1 = proc_7F08F6B0(*(int **)(param_1 + 4),*(int *)(param_1 + 0xc) + 1); - if (iVar1 != 0) { - return iVar1; - } - return 0; - } - proc_7F08EE70((int)(ptr_setup_path_link + *(int *)(param_2 + 8) * 0xc),(int)ppiVar2, - (int **)ptr_setup_path_link,0); - if ((int)ppiVar2[2] < 0) { - return 0; - } - iVar1 = proc_7F08F908(*ppiVar2,-1); - if (iVar1 != 0) { - proc_7F08F438((int)ppiVar2,iVar1,local_18,&local_1c); - if (local_18[0] == param_1) { - return local_1c; - } - iVar1 = proc_7F08F350(param_1,local_18[0],&iStack40,3); - if (2 < iVar1) { - return local_24; - } - return 0; - } - iVar1 = proc_7F08ED60(*ppiVar2,(int)ppiVar2[2] + -1); - if (iVar1 != 0) { - proc_7F08F438((int)ppiVar2,iVar1,local_30,&iStack52); - proc_7F08F1D8(local_30[0],param_1,1); - iVar1 = proc_7F08F090(*(int **)(param_1 + 4),*(int *)(param_1 + 0xc) + 1,*(int *)(param_1 + 8) - ); - if (iVar1 != 0) { - return iVar1; - } - return 0; - } - } - return 0; -} - - - -void proc_7F08FD1C(void) - -{ - undefined *puVar1; - u32 uVar2; - int iVar3; - int *piVar4; - int local_dc; - int local_d8; - undefined *local_10; - uint local_8; - undefined *local_4; - - if (ptr_setup_path_tbl != NULL) { - local_8 = 0; - if (*(int *)ptr_setup_path_tbl < 0) { - local_8 = 0; - } - else { - iVar3 = *(int *)(ptr_setup_path_tbl + 0x10); - puVar1 = ptr_setup_path_tbl; - while( true ) { - local_8 += 1; - if (iVar3 < 0) break; - iVar3 = *(int *)(puVar1 + 0x20); - puVar1 = puVar1 + 0x10; - } - } - local_4 = ptr_setup_path_tbl; - uVar2 = get_random_value(); - if (local_8 == 0) { - trap(0x1c00); - } - local_10 = local_4 + (uVar2 % local_8) * 0x10; - uVar2 = get_random_value(); - if (local_8 == 0) { - trap(0x1c00); - } - iVar3 = proc_7F08F4F0((int)local_10,(int)(local_4 + (uVar2 % local_8) * 0x10),&local_dc,0x32); - if ((iVar3 != 0) && (piVar4 = &local_dc, local_dc != 0)) { - while (local_d8 != 0) { - local_d8 = piVar4[2]; - piVar4 = piVar4 + 1; - } - } - } - return; -} - - - -void nullsub_32(void) - -{ - return; -} - - - -void proc_7F08FE08(undefined4 param_1) - -{ - num_mcm_something = param_1; - return; -} - - - -void init_debug_menu_values(char *strings,mcm_layout *positions,u32 *columns) - -{ - u32 *puVar1; - u32 uVar2; - int iVar3; - - number_groups = 0; - if ((int)*columns < 0) { - iVar3 = 0; - } - else { - uVar2 = columns[1]; - puVar1 = columns; - while( true ) { - number_groups += 1; - if ((int)uVar2 < 0) break; - uVar2 = puVar1[2]; - puVar1 = puVar1 + 1; - } - iVar3 = number_groups * 4; - } - ptr_last_debuggrp_cutoff = *(undefined **)((int)columns + iVar3 + -4); - ptr_textptrs = strings; - ptr_positions = positions; - ptr_groupings = columns; - return; -} - - - -undefined4 print_debug_mcm_to_stdout(undefined4 counter) - -{ - byte bVar1; - byte bVar2; - int iVar3; - int *piVar4; - int xpos; - int ypos; - u32 uVar5; - int iVar6; - int iVar7; - - bVar1 = x_offset_multiplier[num_mcm_something]; - bVar2 = y_offset_multiplier[num_mcm_something]; - uVar5 = 0; - if (0 < (int)ptr_last_debuggrp_cutoff) { - iVar6 = 0; - iVar7 = 0; - do { - nullsub_32(); - if (uVar5 == highlighted_debug_option) { - set_debug_text_color(0xc0,0,0,0xc0); - } - else { - set_debug_text_color(0xc0,0xc0,0xc0,0xc0); - } - piVar4 = (int *)((int)&ptr_positions->xpos + iVar6); - iVar3 = *piVar4 * (uint)bVar1; - xpos = iVar3 + -0x14; - if (xpos < 0) { - xpos = iVar3 + -0x11; - } - ypos = piVar4[1] * (uint)bVar2 + -8; - if (false) { - trap(0x1c00); - } - if ((false) && (ypos == -0x80000000)) { - trap(0x1800); - } - set_final_debug_text_positions(xpos >> 2,ypos / 7); - write_string_stdout(*(u8 **)(ptr_textptrs + iVar7)); - uVar5 += 1; - iVar6 += 8; - iVar7 += 4; - } while ((int)uVar5 < (int)ptr_last_debuggrp_cutoff); - } - return counter; -} - - - -void proc_7F09000C(void) - -{ - byte bVar1; - byte bVar2; - int iVar3; - int *piVar4; - int xpos; - int ypos; - int checkedoption; - int iVar5; - int iVar6; - - bVar1 = x_offset_multiplier[num_mcm_something]; - bVar2 = y_offset_multiplier[num_mcm_something]; - checkedoption = 0; - if (0 < (int)ptr_last_debuggrp_cutoff) { - iVar5 = 0; - iVar6 = 0; - do { - nullsub_32(); - if (checkedoption == highlighted_debug_option) { - set_debug_text_color(0xc0,0,0,0xc0); - } - else { - set_debug_text_color(0xc0,0xc0,0xc0,0xc0); - } - piVar4 = (int *)((int)&ptr_positions->xpos + iVar5); - iVar3 = *piVar4 * (uint)bVar1; - xpos = iVar3 + -0x14; - if (xpos < 0) { - xpos = iVar3 + -0x11; - } - ypos = piVar4[1] * (uint)bVar2 + -8; - if (false) { - trap(0x1c00); - } - if ((false) && (ypos == -0x80000000)) { - trap(0x1800); - } - set_final_debug_text_positions(xpos >> 2,ypos / 7); - write_string_stdout(*(u8 **)(ptr_textptrs + iVar6)); - osSyncPrintf("menu.c: ERROR! Tried to call font_makegt\n"); - checkedoption += 1; - iVar5 += 8; - iVar6 += 4; - } while (checkedoption < (int)ptr_last_debuggrp_cutoff); - } - return; -} - - - -u32 get_highlighted_debug_option(void) - -{ - return highlighted_debug_option; -} - - - -void set_highlighted_debug_option(u32 option) - -{ - highlighted_debug_option = option; - return; -} - - - -void gotoAboveDebugOption(void) - -{ - u32 *puVar1; - int iVar2; - - if ((int)(highlighted_debug_option - 1) < 0) { - highlighted_debug_option = *ptr_groupings - 1; - return; - } - iVar2 = 0; - puVar1 = ptr_groupings; - if (0 < (int)number_groups) { - do { - iVar2 += 1; - if (highlighted_debug_option == *puVar1) { - highlighted_debug_option = puVar1[1] - 1; - return; - } - puVar1 = puVar1 + 1; - } while (iVar2 < (int)number_groups); - } - highlighted_debug_option = highlighted_debug_option - 1; - return; -} - - - -void gotoBelowDebugOption(void) - -{ - int iVar1; - u32 *puVar2; - - highlighted_debug_option += 1; - if (highlighted_debug_option == *ptr_groupings) { - highlighted_debug_option = 0; - return; - } - iVar1 = 0; - puVar2 = ptr_groupings; - if (0 < (int)number_groups) { - do { - iVar1 += 1; - if (highlighted_debug_option == *puVar2) { - highlighted_debug_option = puVar2[-1]; - return; - } - puVar2 = puVar2 + 1; - } while (iVar1 < (int)number_groups); - } - return; -} - - - -void gotoRightDebugOption(void) - -{ - int iVar1; - u32 *puVar2; - u32 uVar3; - - uVar3 = highlighted_debug_option + *ptr_groupings; - if ((int)highlighted_debug_option < (int)*ptr_groupings) { - highlighted_debug_option = uVar3; - if ((int)ptr_groupings[1] <= (int)uVar3) { - highlighted_debug_option = ptr_groupings[1] - 1; - return; - } - } - else { - iVar1 = 0; - puVar2 = ptr_groupings; - if (0 < (int)number_groups) { - do { - iVar1 += 1; - if ((int)highlighted_debug_option < (int)*puVar2) { - highlighted_debug_option = (highlighted_debug_option + *puVar2) - puVar2[-1]; - uVar3 = puVar2[1]; - if ((int)uVar3 < 0) { - if ((int)(highlighted_debug_option - *puVar2) < (int)*ptr_groupings) { - highlighted_debug_option = highlighted_debug_option - *puVar2; - return; - } - highlighted_debug_option = *ptr_groupings - 1; - return; - } - if ((int)highlighted_debug_option < (int)uVar3) { - return; - } - highlighted_debug_option = uVar3 - 1; - return; - } - puVar2 = puVar2 + 1; - } while (iVar1 < (int)number_groups); - } - } - return; -} - - - -void gotoLeftDebugOption(void) - -{ - u32 *puVar1; - int iVar2; - u32 uVar3; - - if ((int)highlighted_debug_option < (int)*ptr_groupings) { - if ((int)(number_groups - 1) < 1) { - iVar2 = 0; - } - else { - iVar2 = 1; - while (iVar2 < (int)(number_groups - 1)) { - iVar2 += 1; - } - iVar2 <<= 2; - } - highlighted_debug_option += ((int *)((int)ptr_groupings + iVar2))[-1]; - iVar2 = *(int *)((int)ptr_groupings + iVar2); - if (iVar2 <= (int)highlighted_debug_option) { - highlighted_debug_option = iVar2 - 1; - return; - } - } - else { - iVar2 = 0; - if ((int)*ptr_groupings <= (int)highlighted_debug_option) { - uVar3 = ptr_groupings[1]; - puVar1 = ptr_groupings; - while( true ) { - iVar2 += 1; - if ((int)highlighted_debug_option < (int)uVar3) break; - uVar3 = puVar1[2]; - puVar1 = puVar1 + 1; - } - } - puVar1 = ptr_groupings + iVar2; - highlighted_debug_option -= puVar1[-1]; - if (-1 < iVar2 + -2) { - highlighted_debug_option += puVar1[-2]; - } - if ((int)puVar1[-1] <= (int)highlighted_debug_option) { - highlighted_debug_option = puVar1[-1] - 1; - } - } - return; -} - - - -void display_debug_menu_text_onscreen(void) - -{ - init_debug_menu_values((char *)mcm_strings,mcm_onscreen_positions,mcm_column_groupings); - return; -} - - - -void handle_debug_stanview(void) - -{ - stanStoreBondCoord(); - debug_render_raster = get_highlighted_debug_option(); - debug_freeze_processing = debug_render_raster; - debug_controlmode = debug_render_raster; - return; -} - - - -void handle_debug_bondview(void) - -{ - maybe_solo_intro_camera_handler(); - debug_render_raster = get_highlighted_debug_option(); - debug_freeze_processing = debug_render_raster; - debug_controlmode = debug_render_raster; - return; -} - - - -void handle_debug_case_2(void) - -{ - maybe_solo_intro_camera_handler(); - debug_render_raster = get_highlighted_debug_option(); - debug_freeze_processing = debug_render_raster; - debug_controlmode = debug_render_raster; - return; -} - - - -void null_68(void) - -{ - return; -} - - - -void nullsub_35(void) - -{ - return; -} - - - -// WARNING: Switch with 1 destination removed at 0x7f090ea8 : 5 cases all go to same destination - -uint debug_menu_processor(undefined8 param_1,undefined8 param_2,uint param_3,uint param_4) - -{ - bool bVar1; - undefined4 uVar3; - ulonglong uVar2; - int iVar4; - u32 playernum; - float fVar5; - float fVar6; - float fVar7; - int iStack8; - int iStack4; - - if ((grab_rgb_screenshot_flag != 0) && - (playernum = grab_rgb_screenshot_flag + 1, bVar1 = grab_rgb_screenshot_flag == 3, - grab_rgb_screenshot_flag = playernum, bVar1)) { - grab_rgb_screenshot_flag = playernum; - indy_grab_rgb_32bit(); - grab_rgb_screenshot_flag = 0; - set_coloroutputmode_16bit(); - osViBlack(0); - } - if ((grab_jpeg_screenshot_flag != 0) && - (playernum = grab_jpeg_screenshot_flag + 1, bVar1 = grab_jpeg_screenshot_flag == 3, - grab_jpeg_screenshot_flag = playernum, bVar1)) { - grab_jpeg_screenshot_flag = playernum; - indy_grab_jpg_32bit(); - grab_jpeg_screenshot_flag = 0; - set_coloroutputmode_16bit(); - osViBlack(0); - } - if (show_debug_menu_flag == 0) { - bVar1 = (param_3 & 8) != 0; - if (bVar1) { - bVar1 = (param_3 & 4) != 0; - } - show_debug_menu_flag = (uint)bVar1; - if (bVar1 != false) { - stop_recording_ramrom(); - } - } - else { - if (debug_limit_controller_input != 0xfffffffe) { - debug_controlmode = debug_limit_controller_input; - debug_limit_controller_input = 0xfffffffe; - } - if ((param_4 & 0x200) != 0) { - gotoLeftDebugOption(); - debug_limit_controller_input = 0xfffffffe; - } - if ((param_4 & 0x100) != 0) { - gotoRightDebugOption(); - debug_limit_controller_input = 0xfffffffe; - } - if ((param_4 & 0x800) != 0) { - gotoAboveDebugOption(); - debug_limit_controller_input = 0xfffffffe; - } - if ((param_4 & 0x400) != 0) { - gotoBelowDebugOption(); - debug_limit_controller_input = 0xfffffffe; - } - if (((param_4 & 0x9000) != 0) && (uVar3 = get_highlighted_debug_option(), true)) { - switch(uVar3) { - case 0: - handle_debug_stanview(); - break; - case 1: - handle_debug_bondview(); - break; - case 2: - handle_debug_case_2(); - break; - case 3: - debug_controlmode = get_highlighted_debug_option(); - break; - case 4: - debug_controlmode = get_highlighted_debug_option(); - break; - case 5: - debug_controlmode = get_highlighted_debug_option(); - break; - case 6: - set_loaded_stage(LEVELID_TITLE); - break; - case 7: - kill_current_player(); - break; - case 8: - debug_controlmode = get_highlighted_debug_option(); - break; - case 9: - debug_controlmode = get_highlighted_debug_option(); - break; - case 10: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0xb: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0xc: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0xd: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0xe: - uVar2 = get_bondata_invincible_flag(); - set_bondata_invincible_flag(uVar2 == 0); - break; - case 0xf: - iVar4 = get_invisible_to_guards_flag(); - set_invisible_to_guards_flag((uint)(iVar4 == 0)); - break; - case 0x10: - iVar4 = get_obj_collision_flag(); - set_obj_collision_flag((uint)(iVar4 == 0)); - break; - case 0x11: - iStack4 = 0; - uVar2 = get_num_players(); - if (0 < (longlong)uVar2) { - do { - set_cur_player(iStack4); - iVar4 = get_BONDdata_allguns_flag(); - set_BONDdata_allguns_flag((uint)(iVar4 == 0)); - iStack4 += 1; - uVar2 = get_num_players(); - } while ((longlong)iStack4 < (longlong)uVar2); - } - break; - case 0x12: - playernum = get_cur_playernum(); - iStack8 = 0; - uVar2 = get_num_players(); - if (0 < (longlong)uVar2) { - do { - set_cur_player(iStack8); - set_max_ammo_for_cur_player(); - iStack8 += 1; - uVar2 = get_num_players(); - } while ((longlong)iStack8 < (longlong)uVar2); - } - set_cur_player(playernum); - break; - case 0x13: - memusage_display_flag ^= 1; - if (memusage_display_flag == FALSE) { - blank_debug_buffer_chars(); - } - break; - case 0x14: - debug_do_draw_bg ^= 1; - break; - case 0x15: - debug_do_draw_obj ^= 1; - break; - case 0x16: - debug_stanhit_flag ^= 1; - break; - case 0x17: - debug_stanregion_flag ^= 1; - break; - case 0x18: - turbo_mode ^= 1; - break; - case 0x19: - debug_man_pos_flag ^= 1; - break; - case 0x1a: - case 0x1b: - case 0x1c: - debug_portal_flag ^= 1; - break; - case 0x1d: - debug_prroomloads_flag ^= 1; - break; - case 0x1e: - enable_show_mem_use_flag(); - break; - case 0x1f: - mem_bars_flag_toggle(); - break; - case 0x20: - grab_rgb_screenshot_flag = 1; - osViBlack(1); - set_coloroutputmode_32bit(); - break; - case 0x21: - grab_jpeg_screenshot_flag = 1; - osViBlack(1); - set_coloroutputmode_32bit(); - break; - case 0x22: - debug_enable_taskgrab_flag ^= 1; - break; - case 0x24: - record_next_movie_to_slot(0); - break; - case 0x25: - record_next_movie_to_slot(1); - break; - case 0x26: - record_next_movie_to_slot(2); - break; - case 0x27: - record_next_movie_to_slot(3); - break; - case 0x28: - replay_recorded_ramrom_from_indy(); - break; - case 0x29: - save_ramrom_to_devtool(); - break; - case 0x2a: - load_ramrom_from_devtool(); - break; - case 0x2b: - uVar2 = get_BONDdata_autoaim_y(); - set_BONDdata_autoaim_y((uint)(uVar2 == 0)); - break; - case 0x2c: - uVar2 = get_BONDdata_autoaim_x(); - set_BONDdata_autoaim_x((uint)(uVar2 == 0)); - break; - case 0x2d: - debug_007_unlock_flag ^= 1; - break; - case 0x2e: - debug_enable_agent_levels ^= 1; - break; - case 0x2f: - debug_enable_all_levels ^= 1; - break; - case 0x30: - debug_fast_bond ^= 1; - break; - case 0x31: - debug_all_obj_complete ^= 1; - break; - case 0x37: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0x38: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0x39: - iVar4 = get_show_patrols_flag(); - set_show_patrols_flag((uint)(iVar4 == 0)); - break; - case 0x3a: - set_camera_mode(3); - break; - case 0x3b: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0x3c: - if (debug_render_raster == 0) { - handle_debug_intropos(); - } - break; - case 0x3d: - if (debug_render_raster == 0) { - handle_debug_worldpos(); - } - else { - iVar4 = get_curplayer_positiondata(); - if (iVar4 != 0) { - fVar5 = *(float *)(iVar4 + 8) - dword_80037004; - fVar6 = *(float *)(iVar4 + 0xc) - dword_80037008; - fVar7 = *(float *)(iVar4 + 0x10) - dword_8003700C; - sqrtf(fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7); - dword_80037004 = *(float *)(iVar4 + 8); - dword_80037008 = *(float *)(iVar4 + 0xc); - dword_8003700C = *(float *)(iVar4 + 0x10); - } - } - break; - case 0x3e: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0x3f: - debug_VisCVG_flag ^= 1; - break; - case 0x40: - debug_chrnum_flag ^= 1; - break; - case 0x41: - removed_debug_roomblocks_feature(); - break; - case 0x42: - debug_profile_flag ^= 1; - if (debug_profile_flag == FALSE) { - nullsub_35(); - } - else { - null_68(); - } - break; - case 0x43: - debug_object_load_all_models(); - break; - case 0x44: - debug_weapon_load_table(); - break; - case 0x45: - debug_joy2skyedit_flag ^= 1; - break; - case 0x46: - debug_joy2hitsedit_flag ^= 1; - break; - case 0x47: - debug_joy2detailedit_flag ^= 1; - break; - case 0x48: - debug_explosioninfo_flag ^= 1; - break; - case 0x49: - debug_controlmode = get_highlighted_debug_option(); - break; - case 0x4a: - debug_gunwatchpos_flag ^= 1; - break; - case 0x4b: - debug_testingmanpos_flag ^= 1; - break; - case 0x4c: - debug_controlmode = get_highlighted_debug_option(); - } - } - if ((param_4 & 3) != 0) { - get_highlighted_debug_option(); - } - if ((param_4 & 0x1000) != 0) { - if (show_debug_menu_flag == 1) { - blank_debug_buffer_chars(); - } - show_debug_menu_flag = 0; - } - } - return show_debug_menu_flag; -} - - - -u32 get_debug_render_raster(void) - -{ - return debug_render_raster; -} - - - -u32 get_debug_freeze_processing(void) - -{ - return debug_freeze_processing; -} - - - -u32 get_debug_limit_controller_input(void) - -{ - return debug_limit_controller_input; -} - - - -void set_debug_limit_controller_input(void) - -{ - debug_limit_controller_input = debug_controlmode; - return; -} - - - -BOOL get_memusage_display_flag(void) - -{ - return memusage_display_flag; -} - - - -BOOL get_debug_do_draw_bg(void) - -{ - return debug_do_draw_bg; -} - - - -BOOL get_debug_do_draw_obj(void) - -{ - return debug_do_draw_obj; -} - - - -BOOL get_debug_stanhit_flag(void) - -{ - return debug_stanhit_flag; -} - - - -BOOL get_debug_stanregion_flag(void) - -{ - return debug_stanregion_flag; -} - - - -BOOL get_turbo_mode_flag(void) - -{ - return turbo_mode; -} - - - -BOOL get_debug_man_pos_flag(void) - -{ - return debug_man_pos_flag; -} - - - -BOOL get_debug_testingmanpos_flag(void) - -{ - return debug_testingmanpos_flag; -} - - - -void set_debug_testingmanpos_flag(BOOL flag) - -{ - debug_testingmanpos_flag = flag; - return; -} - - - -BOOL get_debug_joy2skyedit_flag(void) - -{ - return debug_joy2skyedit_flag; -} - - - -BOOL get_debug_joy2hitsedit_flag(void) - -{ - return debug_joy2hitsedit_flag; -} - - - -BOOL get_debug_joy2detailedit_flag(void) - -{ - return debug_joy2detailedit_flag; -} - - - -BOOL get_debug_explosioninfo_flag(void) - -{ - return debug_explosioninfo_flag; -} - - - -BOOL get_debug_prroomloads_flag(void) - -{ - return debug_prroomloads_flag; -} - - - -BOOL get_debug_VisCVG_flag(void) - -{ - return debug_VisCVG_flag; -} - - - -void set_debug_VisCVG_flag(BOOL param_1) - -{ - debug_VisCVG_flag = param_1; - return; -} - - - -BOOL get_debug_007_unlock_flag(void) - -{ - return debug_007_unlock_flag; -} - - - -BOOL get_debug_enable_agent_levels_flag(void) - -{ - return debug_enable_agent_levels; -} - - - -BOOL get_debug_enable_all_levels_flag(void) - -{ - return debug_enable_all_levels; -} - - - -BOOL get_debug_fast_bond_flag(void) - -{ - return debug_fast_bond; -} - - - -void set_debug_fast_bond_flag(BOOL param_1) - -{ - debug_fast_bond = param_1; - return; -} - - - -BOOL get_debug_all_obj_complete_flag(void) - -{ - return debug_all_obj_complete; -} - - - -BOOL getdebug_portal_flag(void) - -{ - return debug_portal_flag; -} - - - -BOOL get_debug_chrnum_flag(void) - -{ - return debug_chrnum_flag; -} - - - -BOOL get_debug_gunwatchpos_flag(void) - -{ - return debug_gunwatchpos_flag; -} - - - -BOOL get_debug_profile_flag(void) - -{ - return debug_profile_flag; -} - - - -BOOL get_debug_taskgrab_val(void) - -{ - return debug_enable_taskgrab_flag; -} - - - -void proc_7F091080(char param_1,char param_2,ushort param_3) - -{ - int iVar1; - float fVar2; - char cStackX3; - - fVar2 = 1.00000000; - iVar1 = (int)param_2; - if (param_1 < -3) { - cStackX3 = param_1 + '\x03'; - } - else { - cStackX3 = param_1 + -3; - if (param_1 < '\x04') { - cStackX3 = '\0'; - } - } - if (iVar1 < -3) { - iVar1 = (iVar1 + 3) * 0x1000000 >> 0x18; - } - else { - if (iVar1 < 4) { - iVar1 = 0; - } - else { - iVar1 = (iVar1 + -3) * 0x1000000 >> 0x18; - } - } - if ((param_3 & 0x30) == 0) { - if ((param_3 & 0x2000) != 0) { - fVar2 = 0.19999999; - } - if ((param_3 & ~dword_80037054 & 0x8000) != 0) { - flt_80037050 = flt_80037050 + flt_80037050; - } - if ((param_3 & ~dword_80037054 & 0x4000) != 0) { - flt_80037050 = flt_80037050 * 0.50000000; - } - stanbondx = stanbondx + (float)iVar1 * dword_80037040 * fVar2 * flt_80037050; - stanbondz = stanbondz + -(float)iVar1 * flt_8003703C * fVar2 * flt_80037050; - if ((param_3 & 0x202) != 0) { - stanbondx = stanbondx - flt_8003703C * 20.00000000 * fVar2 * flt_80037050; - stanbondz = stanbondz - dword_80037040 * 20.00000000 * fVar2 * flt_80037050; - } - if ((param_3 & 0x101) != 0) { - stanbondx = stanbondx + flt_8003703C * 20.00000000 * fVar2 * flt_80037050; - stanbondz = stanbondz + dword_80037040 * 20.00000000 * fVar2 * flt_80037050; - } - dword_80037038 = dword_80037038 + (float)(int)cStackX3 * fVar2 * 0.12500000; - if ((param_3 & 0x800) != 0) { - dword_80037044 = dword_80037044 - (fVar2 + fVar2); - } - if ((param_3 & 0x400) != 0) { - dword_80037044 = dword_80037044 + fVar2 + fVar2; - } - if ((param_3 & 8) != 0) { - stanbondy = stanbondy + fVar2 * 20.00000000 * flt_80037050; - } - if ((param_3 & 4) != 0) { - stanbondy = stanbondy - fVar2 * 20.00000000 * flt_80037050; - } - } - while (dword_80037038 < 0.00000000) { - dword_80037038 = dword_80037038 + 360.00000000; - } - while (360.00000000 <= dword_80037038) { - dword_80037038 = dword_80037038 - 360.00000000; - } - while (dword_80037044 < 0.00000000) { - dword_80037044 = dword_80037044 + 360.00000000; - } - while (360.00000000 <= dword_80037044) { - dword_80037044 = dword_80037044 - 360.00000000; - } - flt_8003703C = cosf(dword_80037038 * flt_80055850); - dword_80037040 = sinf(dword_80037038 * flt_80055854); - flt_80037048 = cosf(dword_80037044 * flt_80055858); - dword_80037024 = sinf(dword_80037044 * flt_8005585C); - dword_80037020 = flt_80037048 * dword_80037040; - flt_80037030 = flt_80037048; - flt_80037028 = -flt_80037048 * flt_8003703C; - dword_8003702C = -dword_80037024 * dword_80037040; - dword_80037034 = dword_80037024 * flt_8003703C; - dword_8003704C = dword_80037024; - dword_80037054 = param_3; - set_watch_menu_current_size_unused_maybe(60.00000000); - dword_8007A4E0 += 1; - if (dword_8007A4E0 == 1) { - remove_item_in_hand(0); - remove_item_in_hand(1); - } - else { - if (dword_8007A4E0 == 4) { - solo_char_load(); - } - } - return; -} - - - -undefined4 proc_7F091580(undefined4 param_1) - -{ - proc_7F0876C4((float *)&stanbondx,(float *)&dword_80037020,(float *)&dword_8003702C); - return param_1; -} - - - -void proc_7F0915BC(float param_1) - -{ - flt_80037058 = flt_80037058 / param_1; - stanbondx = stanbondx * flt_80037058; - stanbondy = stanbondy * flt_80037058; - stanbondz = stanbondz * flt_80037058; - flt_80037058 = param_1; - flt_8003705C = 1.00000000 / param_1; - return; -} - - - -void handle_debug_intropos(void) - -{ - float __x; - - get_BONDdata_position(); - __x = get_curplay_horizontal_rotation_in_degrees(); - __x = flt_80055860 - __x; - cosf(__x); - sinf(__x); - cosf(__x); - sinf(__x); - return; -} - - - -void handle_debug_worldpos(void) - -{ - sqrtf((stanbondx - dword_80037060) * (stanbondx - dword_80037060) + - (stanbondy - dword_80037064) * (stanbondy - dword_80037064) + - (stanbondz - dword_80037068) * (stanbondz - dword_80037068)); - dword_80037060 = stanbondx; - dword_80037064 = stanbondy; - dword_80037068 = stanbondz; - return; -} - - - -void stanStoreBondCoord(void) - -{ - xyzpoint *pos; - - pos = get_BONDdata_position(); - stanbondx = pos->x; - stanbondy = pos->y; - stanbondz = pos->z; - dword_8007A4E0 = 0; - return; -} - - - -int proc_7F091740(uint param_1) - -{ - int iVar1; - - param_1 &= 0xffff; - iVar1 = 0; - while (param_1 != 0) { - if ((param_1 & 1) != 0) { - iVar1 += 1; - } - param_1 >>= 1; - } - return iVar1; -} - - - -void proc_7F09177C(void) - -{ - byte bVar1; - int iVar2; - int iVar3; - uint uVar4; - short *psVar5; - ulonglong uVar6; - ulonglong uVar7; - char cVar8; - struct_15 *psVar9; - uint uVar10; - - psVar9 = stru_8003F80C; - iVar2 = proc_7F0BDF04(); - if (iVar2 == 0x5a) { - uVar10 = 1; - } - else { - uVar7 = get_num_players(); - uVar10 = 4; - if (uVar7 == 1) { - uVar10 = 2; - } - } - bVar1 = stru_8003F80C[0].field_1; - if (stru_8003F80C[0].anonymous_0 == '\0') { - return; - } - do { - uVar7 = (ulonglong)bVar1; - if (bVar1 == 0) { - cVar8 = psVar9[1].anonymous_0; - } - else { - if ((ulonglong)(byte)pPlayer->can_display_cheat_text < uVar7) { - cVar8 = psVar9[1].anonymous_0; - } - else { - if ((psVar9->anonymous_3 & uVar10) == 0) { - cVar8 = psVar9[1].anonymous_0; - } - else { - uVar6 = 0; - iVar2 = ((uint)(byte)pPlayer->something_with_cheat_text - (uint)bVar1) + 0x14; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - if (bVar1 != 0) { - psVar5 = (short *)psVar9->anonymous_1; - do { - iVar3 = iVar2 % 0x14; - iVar2 = iVar3 + 1; - if (*(short *)((int)&pPlayer->field_128C + iVar3 * 2) != *psVar5) break; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - uVar6 = SEXT48((int)uVar6 + 1); - psVar5 = psVar5 + 1; - } while ((longlong)uVar6 < (longlong)uVar7); - } - if (uVar6 == uVar7) { - pPlayer->can_display_cheat_text = '\0'; - uVar4 = proc_7F0927BC((uint)(byte)psVar9->anonymous_0); - if ((uVar4 == 0) || ((psVar9->anonymous_3 & 0x10U) != 0)) { - proc_7F091B64(); - cVar8 = psVar9[1].anonymous_0; - } - else { - proc_7F092438((uint)(byte)psVar9->anonymous_0); - cVar8 = psVar9[1].anonymous_0; - } - } - else { - cVar8 = psVar9[1].anonymous_0; - } - } - } - } - if (cVar8 == '\0') { - return; - } - if (false) { - return; - } - bVar1 = psVar9[1].field_1; - psVar9 = psVar9 + 1; - } while( true ); -} - - - -void proc_7F09193C(void) - -{ - ushort uVar1; - u32 uVar4; - ulonglong uVar2; - ulonglong uVar3; - int iVar5; - - uVar4 = get_cur_playernum(); - uVar2 = get_controller_buttons_held((char)uVar4,0xffff); - uVar4 = get_cur_playernum(); - uVar3 = get_controller_buttons_pressed((char)uVar4,0xffff); - uVar1 = (ushort)(uVar2 & 0x30); - uVar3 &= ~(uVar2 & 0x30); - if ((uVar3 & 0xffff) != 0) { - iVar5 = proc_7F091740((uint)uVar3 & 0xffff); - if (iVar5 == 1) { - iVar5 = proc_7F091740((uint)(ushort)((ushort)uVar2 & ~uVar1)); - if (iVar5 == 1) { - *(ushort *)((int)&pPlayer->field_128C + (uint)(byte)pPlayer->something_with_cheat_text * 2) - = (ushort)uVar3 | uVar1; - pPlayer->something_with_cheat_text = - (char)((int)((uint)(byte)pPlayer->something_with_cheat_text + 1) % 0x14); - if ((byte)pPlayer->can_display_cheat_text < 0x14) { - pPlayer->can_display_cheat_text = pPlayer->can_display_cheat_text + 1; - } - goto LAB_7f091a44; - } - } - pPlayer->can_display_cheat_text = '\0'; - } -LAB_7f091a44: - proc_7F09177C(); - return; -} - - - -undefined8 proc_7F091A5C(longlong param_1) - -{ - if (param_1 == 0x1c) { - return 1; - } - return 0; -} - - - -undefined8 proc_7F091A78(int param_1) - -{ - if ((*(uint *)(&dword_8003F808 + param_1 * 0x10) & 4) == 4) { - return 1; - } - return 0; -} - - - -void proc_7F091AAC(undefined8 param_1) - -{ - uint uVar1; - u32 playernum; - ulonglong uVar2; - ulonglong uVar3; - - uVar1 = *(uint *)(&dword_8003F808 + param_1._4_4_ * 0x10); - playernum = get_cur_playernum(); - uVar2 = get_num_players(); - if (uVar2 == 1) { - proc_7F091B64(); - } - else { - if ((uVar1 & 4) != 0) { - if ((uVar1 & 0x20) == 0) { - uVar3 = 0; - if (0 < (longlong)uVar2) { - do { - set_cur_player((int)uVar3); - proc_7F091B64(); - uVar3 = SEXT48((int)uVar3 + 1); - } while (uVar3 != uVar2); - } - set_cur_player(playernum); - } - else { - proc_7F091B64(); - } - } - } - return; -} - - - -// WARNING: Unknown calling convention yet parameter storage is locked - -void proc_7F091B64(void) - -{ - uint uVar1; - bool bVar2; - u32 playernum; - ulonglong uVar3; - ulonglong uVar4; - undefined8 uVar5; - undefined8 uVar6; - undefined8 uVar7; - undefined8 uVar8; - undefined8 uVar9; - byte *text; - BOOL BVar10; - int amount; - int in_a0_lo; - STAGENUM stageid; - STAGENUM SVar11; - f32 fVar12; - f32 scale; - u32 local_10; - - uVar1 = *(uint *)(&dword_8003F808 + in_a0_lo * 0x10); - playernum = get_cur_playernum(); - uVar3 = get_num_players(); - if ((uVar1 & 0x10) == 0) { - if ((uVar1 & 0x20) == 0) { - (&DAT_80079e30)[in_a0_lo] = (&DAT_80079e30)[in_a0_lo] | (byte)(1 << (playernum & 0x1f)); - } - else { - (&DAT_80079e30)[in_a0_lo] = (char)(1 << ((uint)uVar3 & 0x1f)) + -1; - } - } - if (true) { - switch(in_a0_lo) { - case 1: - unlock_mp_chars(); - break; - case 2: - uVar3 = get_bondata_invincible_flag(); - if (uVar3 == 0) { - text = get_textptr_for_textID(0xb00f); - display_string_in_lower_left_corner((char *)text); - set_bondata_invincible_flag(1); - } - break; - case 3: - amount = get_BONDdata_allguns_flag(); - if (amount == 0) { - text = get_textptr_for_textID(0xb010); - display_string_in_lower_left_corner((char *)text); - set_BONDdata_allguns_flag(1); - } - break; - case 4: - text = get_textptr_for_textID(0xb011); - display_string_in_lower_left_corner((char *)text); - set_max_ammo_for_cur_player(); - break; - case 6: - bVar2 = false; - if (1 < (longlong)uVar3) { - local_10 = 0; - if (0 < (longlong)uVar3) { - do { - if (local_10 != playernum) { - set_cur_player(local_10); - uVar4 = get_bondata_invincible_flag(); - if (uVar4 != 0) { - bVar2 = true; - set_bondata_invincible_flag(0); - } - } - set_cur_player(playernum); - local_10 += 1; - } while (local_10 != (uint)uVar3); - } - if (bVar2) { - play_sfx_a1(ptr_sfx_buf,0x9f,NULL); - } - } - break; - case 7: - set_debug_VisCVG_flag(1); - break; - case 8: - if (((float)pPlayer->actual_health == 1.00000000) || ((float)pPlayer->bondhealth < 1.00000000) - ) { - text = get_textptr_for_textID(0xb012); - display_string_in_lower_left_corner((char *)text); - pPlayer->bondhealth = 1.00000000; - pPlayer->actual_health = 2.00000000; - } - break; - case 9: - if (((float)pPlayer->actual_armor == 1.00000000) || ((float)pPlayer->bondarmour < 1.00000000)) - { - text = get_textptr_for_textID(0xb013); - display_string_in_lower_left_corner((char *)text); - pPlayer->bondarmour = 1.00000000; - pPlayer->actual_armor = 2.00000000; - } - break; - case 10: - amount = get_invisible_to_guards_flag(); - if (amount != 0) { - text = get_textptr_for_textID(0xb014); - display_string_in_lower_left_corner((char *)text); - set_invisible_to_guards_flag(0); - } - break; - case 0xb: - text = get_textptr_for_textID(0xb016); - display_string_in_lower_left_corner((char *)text); - break; - case 0xc: - text = get_textptr_for_textID(0xb017); - display_string_in_lower_left_corner((char *)text); - proc_7F0927F4(1); - break; - case 0xd: - if (uVar3 == 1) { - uVar5 = add_item_to_inventory(ITEM_RUGER); - uVar6 = add_item_to_inventory(ITEM_LASER); - uVar7 = add_item_to_inventory(ITEM_GOLDENGUN); - uVar8 = add_item_to_inventory(ITEM_SILVERWPPK); - uVar9 = add_item_to_inventory(ITEM_GOLDWPPK); - amount = get_max_ammo_for_type(AMMO_MAGNUM); - give_cur_player_ammo(AMMO_MAGNUM,amount); - amount = get_max_ammo_for_type(AMMO_GGUN); - give_cur_player_ammo(AMMO_GGUN,amount); - amount = get_max_ammo_for_type(AMMO_9MM); - give_cur_player_ammo(AMMO_9MM,amount); - if (0 < (int)uVar5 + (int)uVar6 + (int)uVar7 + (int)uVar8 + (int)uVar9) { - text = get_textptr_for_textID(0xb018); - display_string_in_lower_left_corner((char *)text); - } - } - break; - case 0xe: - if ((uVar3 == 1) && (pplayersperm->player_perspective_height == 1.00000000)) { - text = get_textptr_for_textID(0xb019); - display_string_in_lower_left_corner((char *)text); - pplayersperm->player_perspective_height = 0.50000000; - if (pPlayer->ptr_char_objectinstance != 0) { - set_obj_instance_controller_scale(pPlayer->ptr_char_objectinstance,scale); - } - } - break; - case 0xf: - text = get_textptr_for_textID(0xb01a); - display_string_in_lower_left_corner((char *)text); - break; - case 0x10: - if (((float)pPlayer->actual_health == 1.00000000) || ((float)pPlayer->bondhealth < 1.00000000) - ) { - text = get_textptr_for_textID(0xb01b); - display_string_in_lower_left_corner((char *)text); - pPlayer->bondhealth = 1.00000000; - pPlayer->actual_health = 10.00000000; - } - break; - case 0x11: - if (uVar3 == 1) { - add_item_to_inventory(ITEM_RUGER); - amount = get_max_ammo_for_type(AMMO_MAGNUM); - give_cur_player_ammo(AMMO_MAGNUM,amount); - } - break; - case 0x12: - if (uVar3 == 1) { - add_item_to_inventory(ITEM_LASER); - } - break; - case 0x13: - if (uVar3 == 1) { - add_item_to_inventory(ITEM_GOLDENGUN); - amount = get_max_ammo_for_type(AMMO_GGUN); - give_cur_player_ammo(AMMO_GGUN,amount); - } - break; - case 0x14: - if (uVar3 == 1) { - add_item_to_inventory(ITEM_SILVERWPPK); - amount = get_max_ammo_for_type(AMMO_9MM); - give_cur_player_ammo(AMMO_9MM,amount); - } - break; - case 0x15: - if (uVar3 == 1) { - add_item_to_inventory(ITEM_GOLDWPPK); - amount = get_max_ammo_for_type(AMMO_9MM); - give_cur_player_ammo(AMMO_9MM,amount); - } - break; - case 0x16: - set_curplayer_fade(300.00000000,flt_800573D8); - break; - case 0x18: - BVar10 = get_debug_fast_bond_flag(); - if (BVar10 == FALSE) { - text = get_textptr_for_textID(0xb01d); - display_string_in_lower_left_corner((char *)text); - set_debug_fast_bond_flag(TRUE); - } - break; - case 0x19: - BVar10 = get_debug_testingmanpos_flag(); - if (BVar10 == FALSE) { - set_debug_testingmanpos_flag(TRUE); - } - break; - case 0x1a: - fVar12 = get_animation_rate(); - if ((float)fVar12 < 4.00000000) { - text = get_textptr_for_textID(0xb034); - display_string_in_lower_left_corner((char *)text); - animation_speed_related(4.00000000); - } - break; - case 0x1b: - fVar12 = get_animation_rate(); - if (0.25000000 < (float)fVar12) { - text = get_textptr_for_textID(0xb032); - display_string_in_lower_left_corner((char *)text); - animation_speed_related(0.25000000); - } - break; - case 0x1d: - if (uVar3 == 1) { - add_doubles_item_to_inventory(0x19,0x19); - amount = get_max_ammo_for_type(AMMO_ROCKETS); - give_cur_player_ammo(AMMO_ROCKETS,amount); - } - break; - case 0x1e: - if (uVar3 == 1) { - add_doubles_item_to_inventory(0x18,0x18); - amount = get_max_ammo_for_type(AMMO_GRENADEROUND); - give_cur_player_ammo(AMMO_GRENADEROUND,amount); - } - break; - case 0x1f: - if (uVar3 == 1) { - add_doubles_item_to_inventory(0xe,0xe); - amount = get_max_ammo_for_type(AMMO_9MM); - give_cur_player_ammo(AMMO_9MM,amount); - } - break; - case 0x20: - if (uVar3 == 1) { - add_doubles_item_to_inventory(3,3); - amount = get_max_ammo_for_type(AMMO_KNIFE); - give_cur_player_ammo(AMMO_KNIFE,amount); - } - break; - case 0x21: - if (uVar3 == 1) { - add_doubles_item_to_inventory(2,2); - } - break; - case 0x22: - if (uVar3 == 1) { - add_doubles_item_to_inventory(0x16,0x16); - } - break; case 0x23: case 0x24: case 0x25: @@ -106986,12 +28928,6 @@ void proc_7F091B64(void) case 0x34: case 0x35: case 0x36: - uVar3 = SEXT48((int)selected_folder_num); - if ((-1 < (longlong)uVar3) && ((longlong)uVar3 < 4)) { - proc_7F01E760(uVar3,(longlong)(in_a0_lo + -0x23)); - play_sfx_a1(ptr_sfx_buf,0x9f,NULL); - } - break; case 0x37: case 0x38: case 0x39: @@ -107012,215 +28948,77233 @@ void proc_7F091B64(void) case 0x48: case 0x49: case 0x4a: - SVar11 = in_a0_lo + 0xffffffc9; - if ((-1 < (int)selected_folder_num) && (amount = 0, (int)selected_folder_num < 4)) { - stageid = SP_STAGE_DAM; - if (0 < (int)SVar11) { - do { - BVar10 = doesFolderHaveStageUnlockedAtDifficulty - (selected_folder_num,stageid,DIFFICULTY_AGENT); - if (BVar10 == 3) { - amount += 1; - } - stageid += SP_STAGE_FACILITY; - } while (stageid != SVar11); - } - if (SVar11 == amount + SP_STAGE_FACILITY) { - unlock_stage_in_folder_on_difficulty - (selected_folder_num,(longlong)(in_a0_lo + -0x38),0,99999999); - play_sfx_a1(ptr_sfx_buf,0x9f,NULL); - } - } + uVar1 = 0; + break; + case 2: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,1); + break; + case 3: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0x13); + break; + case 10: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,10); + break; + case 0xb: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0xf); + break; + case 0xc: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,2); + break; + case 0xe: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,7); + break; + case 0xf: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0); + break; + case 0x11: + uVar2 = check_cradle_completed_in_folder(selected_folder_num); + uVar1 = SEXT48((int)uVar2); + break; + case 0x12: + uVar2 = check_aztec_completed_in_folder_secret_00(selected_folder_num); + uVar1 = SEXT48((int)uVar2); + break; + case 0x13: + uVar2 = check_egypt_completed_in_folder_00(selected_folder_num); + uVar1 = SEXT48((int)uVar2); + break; + case 0x14: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0xd); + break; + case 0x15: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0x11); + break; + case 0x17: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,6); + break; + case 0x18: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,5); + break; + case 0x1a: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,9); + break; + case 0x1b: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0xc); + break; + case 0x1c: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0xb); + break; + case 0x1d: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,4); + break; + case 0x1e: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,3); + break; + case 0x1f: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0x10); + break; + case 0x20: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,8); + break; + case 0x21: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0xe); + break; + case 0x22: + folder = getEEPROMforFoldernum(selected_folder_num); + uVar1 = check_if_cheat_unlocked(folder,0x12); + break; + default: + do { + // WARNING: Do nothing block with infinite loop + } while( true ); } - } - return; + return uVar1; } -void proc_7F092438(int param_1) +int getplayerfavoredweapon(int param_1,int param_2) { - uint uVar1; - u32 uVar3; - ulonglong uVar2; - int iVar4; - byte *text; - BOOL BVar5; - f32 scale; - - uVar1 = *(uint *)(&dword_8003F808 + param_1 * 0x10); - uVar3 = get_cur_playernum(); - uVar2 = get_num_players(); - if ((uVar1 & 0x10) == 0) { - if ((uVar1 & 0x20) == 0) { - (&DAT_80079e30)[param_1] = (&DAT_80079e30)[param_1] & ~(byte)(1 << (uVar3 & 0x1f)); + int iVar1; + + iVar1 = get_ptr_long_watch_text_for_item((&(&fav_weapon_player1)[param_1].right)[param_2]); + return iVar1; +} + + + +int menu_control_stick_tracking(void) + +{ + s32 sVar1; + char cVar3; + int iVar2; + int iVar4; + int iVar5; + f32 fVar6; + f32 fVar7; + + sVar1 = get_cur_controller_horz_stick_pos('\0'); + cVar3 = (char)sVar1; + sVar1 = get_cur_controller_vert_stick_pos('\0'); + iVar5 = sVar1 * -0x1000000 >> 0x18; + if (cVar3 < -5) { + iVar4 = ((int)cVar3 + 5) * 0x1000000 >> 0x18; } else { - (&DAT_80079e30)[param_1] = 0; - } - } - if (true) { - switch(param_1) { - case 2: - uVar2 = get_bondata_invincible_flag(); - if (uVar2 != 0) { - text = get_textptr_for_textID(0xb01e); - display_string_in_lower_left_corner((char *)text); - set_bondata_invincible_flag(0); - } - break; - case 3: - iVar4 = get_BONDdata_allguns_flag(); - if (iVar4 != 0) { - text = get_textptr_for_textID(0xb01f); - display_string_in_lower_left_corner((char *)text); - set_BONDdata_allguns_flag(0); - } - break; - case 7: - set_debug_VisCVG_flag(0); - break; - case 10: - iVar4 = get_invisible_to_guards_flag(); - if (iVar4 == 0) { - text = get_textptr_for_textID(0xb020); - display_string_in_lower_left_corner((char *)text); - set_invisible_to_guards_flag(1); - } - break; - case 0xb: - text = get_textptr_for_textID(0xb022); - display_string_in_lower_left_corner((char *)text); - break; - case 0xc: - text = get_textptr_for_textID(0xb023); - display_string_in_lower_left_corner((char *)text); - proc_7F0927F4(0); - break; - case 0xe: - if ((uVar2 == 1) && (pplayersperm->player_perspective_height != 1.00000000)) { - text = get_textptr_for_textID(0xb024); - display_string_in_lower_left_corner((char *)text); - pplayersperm->player_perspective_height = 1.00000000; - if (pPlayer->ptr_char_objectinstance != 0) { - set_obj_instance_controller_scale(pPlayer->ptr_char_objectinstance,scale); + if (cVar3 < '\x06') { + iVar4 = 0; + } + else { + iVar4 = ((int)cVar3 + -5) * 0x1000000 >> 0x18; } - } - break; - case 0xf: - text = get_textptr_for_textID(0xb025); - display_string_in_lower_left_corner((char *)text); - break; - case 0x16: - set_curplayer_fade(300.00000000,1.00000000); - break; - case 0x18: - BVar5 = get_debug_fast_bond_flag(); - if (BVar5 != FALSE) { - text = get_textptr_for_textID(0xb027); - display_string_in_lower_left_corner((char *)text); - set_debug_fast_bond_flag(FALSE); - } - break; - case 0x19: - BVar5 = get_debug_testingmanpos_flag(); - if (BVar5 != FALSE) { - set_debug_testingmanpos_flag(FALSE); - } } - } - return; + if (iVar4 < 0x47) { + if (iVar4 < -0x46) { + iVar4 = -0x46; + } + } + else { + iVar4 = 0x46; + } + if (iVar5 < -5) { + iVar2 = (iVar5 + 5) * 0x1000000 >> 0x18; + } + else { + iVar2 = 0; + if (5 < iVar5) { + iVar2 = (iVar5 + -5) * 0x1000000 >> 0x18; + } + } + cVar3 = (char)iVar2; + if (iVar2 < 0x47) { + if (iVar2 < -0x46) { + cVar3 = -0x46; + } + } + else { + cVar3 = 'F'; + } + if (iVar4 < 1) { + if (iVar4 < 0) { + cursor_h_pos = (f32)((float)cursor_h_pos + + ((float)iVar4 * folder_menu_z_dim - 0.50000000) * global_timer_delta + ); + } + } + else { + cursor_h_pos = (f32)((float)cursor_h_pos + + ((float)iVar4 * folder_menu_x_dim + 0.50000000) * global_timer_delta); + } + fVar6 = getPlayer_c_screenleft(); + fVar7 = getPlayer_c_screenwidth(); + if (((float)fVar7 + (float)fVar6) - 20.00000000 < (float)cursor_h_pos) { + fVar6 = getPlayer_c_screenleft(); + fVar7 = getPlayer_c_screenwidth(); + cursor_h_pos = (f32)(((float)fVar7 + (float)fVar6) - 20.00000000); + } + else { + fVar6 = getPlayer_c_screenleft(); + if ((float)cursor_h_pos < (float)fVar6 + 20.00000000) { + cursor_h_pos = getPlayer_c_screenleft(); + cursor_h_pos = (f32)((float)cursor_h_pos + 20.00000000); + } + } + iVar5 = (int)cVar3; + if (cVar3 < '\x01') { + if (cVar3 < '\0') { + cursor_v_pos = (f32)((float)cursor_v_pos + + ((float)iVar5 * flt_800519D4 - 0.50000000) * global_timer_delta); + } + } + else { + cursor_v_pos = (f32)((float)cursor_v_pos + + ((float)iVar5 * flt_800519D0 + 0.50000000) * global_timer_delta); + } + fVar6 = getPlayer_c_screentop(); + fVar7 = getPlayer_c_screenheight(); + if (((float)fVar7 + (float)fVar6) - 20.00000000 < (float)cursor_v_pos) { + fVar6 = getPlayer_c_screentop(); + fVar7 = getPlayer_c_screenheight(); + cursor_v_pos = (f32)(((float)fVar7 + (float)fVar6) - 20.00000000); + } + else { + fVar6 = getPlayer_c_screentop(); + if ((float)cursor_v_pos < (float)fVar6 + 20.00000000) { + cursor_v_pos = getPlayer_c_screentop(); + cursor_v_pos = (f32)((float)cursor_v_pos + 20.00000000); + } + } + return iVar5; } -void unload_loop_all_players(void) +undefined4 load_draw_selected_icon_folder_select(undefined4 param_1) { - ulonglong numplayers; - u32 playernum; - uint uVar1; - int iVar2; - int iVar3; - ulonglong curplayer; - - numplayers = get_num_players(); - playernum = get_cur_playernum(); - curplayer = 0; - if (0 < (longlong)numplayers) { + f32 wdivh; + undefined4 local_res0; + sImageTableEntry *local_14; + float local_10; + float local_c; + float local_8; + float local_4; + + if (folder_selection_screen_option_icon == 0) { + local_14 = crosshairimage; + } + else { + if (folder_selection_screen_option_icon == 1) { + local_14 = mainfolderimages; + } + else { + if (folder_selection_screen_option_icon == 2) { + local_14 = mainfolderimages + 1; + } + } + } + local_res0 = param_1; + append_image_to_DL((uint **)register0x000000ec,local_14,4,0,0); + local_8 = truncf((float)cursor_h_pos + 0.50000000); + local_4 = truncf((float)cursor_v_pos + 0.50000000); + local_10 = (float)(uint)local_14->width; + if (false) { + local_10 = local_10 + 4294967296.00000000; + } + local_10 = local_10 * 0.50000000; + local_c = (float)(uint)local_14->height; + if (false) { + local_c = local_c + 4294967296.00000000; + } + local_c = local_c * 0.50000000; + display_image_at_on_screen_coord + ((int *)register0x000000ec,(int *)&local_8,wdivh,(int)&local_10,(uint)local_14->width, + (uint)local_14->height,0,0,1,0xff,0xff,0xff,0xdc,(uint)(local_14->level != '\0')); + return local_res0; +} + + + +uint * add_tab1_start(undefined4 *param_1) + +{ + int iVar1; + short sVar3; + short sVar4; + uint *puVar2; + int iStack16; + int iStack12; + int iStack8; + int iStack4; + + dword_CODE_bss_80069770 = get_textptr_for_textID(0x9c04); + setTextSpacingInverted(1); + iStack16 = 0; + iStack12 = 0; + proc_7F0AE98C(&iStack12,&iStack16,dword_CODE_bss_80069770,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + iStack4 = 0x33; + iVar1 = iStack12; + if (iStack12 < 0) { + iVar1 = iStack12 + 1; + } + iStack8 = 0x19b - (iVar1 >> 1); + if (tab_1_highlight != FALSE) { + param_1 = microcode_constructor_related_to_menus + (param_1,(longlong)((iStack8 - iStack12) + 1),0x33,(longlong)iStack8, + 0x75,0x32); + } + setTextOrientation(1); + iVar1 = iStack16; + if (iStack16 < 0) { + iVar1 = iStack16 + 1; + } + iStack4 = 0x54 - (iVar1 >> 1); + sVar3 = get_video2_settings_txtClipH(); + sVar4 = get_video2_settings_txtClipW(); + puVar2 = (uint *)(int)sVar4; + en_text_write_stuff(param_1,&iStack4,&iStack8,dword_CODE_bss_80069770, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff,(int)sVar3, + (int)sVar4,0,0); + setTextOrientation(0); + setTextSpacingInverted(0); + return puVar2; +} + + + +undefined8 isontab1(void) + +{ + if ((390.00000000 < (float)cursor_h_pos) && ((float)cursor_v_pos <= (float)tab1_max_x_coord)) { + return 1; + } + return 0; +} + + + +uint * add_tab3_previous(undefined4 *param_1) + +{ + int iVar1; + short sVar3; + short sVar4; + uint *puVar2; + int iStack16; + int iStack12; + int iStack8; + int iStack4; + + DAT_80069778 = get_textptr_for_textID(0x9c06); + setTextSpacingInverted(1); + iStack16 = 0; + iStack12 = 0; + proc_7F0AE98C(&iStack12,&iStack16,DAT_80069778,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + iStack4 = 0xec; + iVar1 = iStack12; + if (iStack12 < 0) { + iVar1 = iStack12 + 1; + } + iStack8 = 0x19b - (iVar1 >> 1); + if (tab_3_highlight != FALSE) { + param_1 = microcode_constructor_related_to_menus + (param_1,(longlong)((iStack8 - iStack12) + 1),0xec,(longlong)iStack8, + 0x12e,0x32); + } + setTextOrientation(1); + iVar1 = iStack16; + if (iStack16 < 0) { + iVar1 = iStack16 + 1; + } + iStack4 = 0x10d - (iVar1 >> 1); + sVar3 = get_video2_settings_txtClipH(); + sVar4 = get_video2_settings_txtClipW(); + puVar2 = (uint *)(int)sVar4; + en_text_write_stuff(param_1,&iStack4,&iStack8,DAT_80069778,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xff,(int)sVar3,(int)sVar4,0,0); + setTextOrientation(0); + setTextSpacingInverted(0); + return puVar2; +} + + + +undefined8 isontab3(void) + +{ + if ((390.00000000 < (float)cursor_h_pos) && (223.00000000 < (float)cursor_v_pos)) { + return 1; + } + return 0; +} + + + +void set_cursor_pos_tab2(void) + +{ + cursor_h_pos = tab2_first_x_coord; + cursor_v_pos = 144.00000000; + return; +} + + + +uint * add_tab2_next(undefined4 *param_1) + +{ + int iVar1; + short sVar3; + short sVar4; + uint *puVar2; + int iStack16; + int iStack12; + int iStack8; + int iStack4; + + DAT_80069774 = get_textptr_for_textID(0x9c05); + setTextSpacingInverted(1); + iStack16 = 0; + iStack12 = 0; + proc_7F0AE98C(&iStack12,&iStack16,DAT_80069774,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + iStack4 = 0x90; + iVar1 = iStack12; + if (iStack12 < 0) { + iVar1 = iStack12 + 1; + } + iStack8 = 0x19b - (iVar1 >> 1); + if (tab_2_highlight != FALSE) { + param_1 = microcode_constructor_related_to_menus + (param_1,(longlong)((iStack8 - iStack12) + 1),0x90,(longlong)iStack8, + 0xd2,0x32); + } + setTextOrientation(1); + iVar1 = iStack16; + if (iStack16 < 0) { + iVar1 = iStack16 + 1; + } + iStack4 = 0xb1 - (iVar1 >> 1); + sVar3 = get_video2_settings_txtClipH(); + sVar4 = get_video2_settings_txtClipW(); + puVar2 = (uint *)(int)sVar4; + en_text_write_stuff(param_1,&iStack4,&iStack8,DAT_80069774,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xff,(int)sVar3,(int)sVar4,0,0); + setTextOrientation(0); + setTextSpacingInverted(0); + return puVar2; +} + + + +undefined8 isontab2(void) + +{ + if (((390.00000000 < (float)cursor_h_pos) && ((float)tab2_bottom_y_coord < (float)cursor_v_pos)) + && ((float)cursor_v_pos <= 223.00000000)) { + return 1; + } + return 0; +} + + + +void init_menu00_legalscreen(void) + +{ + f32 scale; + xyzpoint xStack16; + + musicTrack1Stop(); + maybe_is_in_menu = TRUE; + menu_timer = 0; + xStack16.x = dword_8002A9C0.x; + xStack16.y = dword_8002A9C0.y; + xStack16.z = dword_8002A9C0.z; + load_object_fill_header + ((object_header *)PitemZ_entries[319].header,(u8 *)PitemZ_entries[319].filename, + (int)ptr_logo_and_walletbond_DL,0x3c000,0); + set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[319].header); + something_screen_constructor = + get_obj_instance_controller_for_header((object_header *)PitemZ_entries[319].header); + set_obj_instance_controller_scale(something_screen_constructor,scale); + setsuboffset(something_screen_constructor,&xStack16); + proc_7F01DF90(); + return; +} + + + +void update_menu00_legalscreen(void) + +{ + is_first_time_on_legal_screen = FALSE; + set_obj_instance_scale_to_zero(something_screen_constructor); + return; +} + + + +void interface_menu00_legalscreen(void) + +{ + u64 uVar1; + u32 uVar2; + + setvideo_far(60.00000000); + video_related_21((f32)menu00_aspect); + set_page_height(100.00000000,(f32)menu00_pageheight); + set_video2_settings_offset_24(0); + menu_timer += clock_timer; + if (menu_timer < 0xf1) { + uVar2 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if ((uVar2 != 0) && (is_first_time_on_legal_screen == FALSE)) { + if (is_first_time_on_main_menu == FALSE) { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + else { + set_menu_to_mode(MENU_NINTENDO_LOGO,1); + } + } + } + else { + uVar1 = get_attached_controller_count(); + if (((longlong)uVar1 < 1) && (is_first_time_on_legal_screen != FALSE)) { + set_menu_to_mode(MENU_NO_CONTROLLERS,1); + } + else { + set_menu_to_mode(MENU_NINTENDO_LOGO,1); + } + } + return; +} + + + +uint * display_aligned_white_text_to_screen + (undefined4 *param_1,int param_2,int param_3,int param_4,int param_5,byte *param_6, + int param_7,int param_8) + +{ + short sVar2; + short sVar3; + uint *puVar1; + int iStack16; + int iStack12; + int iStack8; + int iStack4; + + iStack8 = 0; + iStack4 = 0; + proc_7F0AE98C(&iStack4,&iStack8,param_6,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + param_4 *= iStack8; + if (param_4 < 0) { + param_4 += 1; + } + param_5 *= iStack4; + iStack12 = param_2 - (param_4 >> 1); + if (param_5 < 0) { + param_5 += 1; + } + iStack16 = param_3 - (param_5 >> 1); + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1 = (uint *)(int)sVar3; + en_text_write_stuff(param_1,&iStack12,&iStack16,param_6,param_7,param_8,0xffffffff,(int)sVar2, + (int)sVar3,0,0); + return puVar1; +} + + + +void constructor_menu00_legalscreen(Gfx *param_1) + +{ + float (*DL) [4]; + longlong lVar1; + byte *pbVar2; + uint *puVar3; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float (**ppaafVar4) [4] [4]; + float (**ppaafVar5) [4] [4]; + float (**ppaafVar6) [4] [4]; + float (**ppaafVar7) [4] [4]; + int iVar8; + legal_screen_text *plVar9; + int iVar10; + float extraout_f12; + float extraout_f14; + float afStack208 [18]; + float afStack136 [17]; + float (*paafStack68) [4] [4]; + undefined4 uStack64; + undefined4 uStack60; + float (*pafStack56) [4]; + float (*pafStack52) [4]; + + ppaafVar6 = (float (**) [4] [4])dword_8002AABC; + ppaafVar4 = &paafStack68; do { - set_cur_player((int)curplayer); - iVar3 = -0x7ffc07e4; - iVar2 = 1; - do { - if (((*(uint *)(iVar3 + -4) & 0x40) != 0) && (uVar1 = proc_7F0927BC(iVar2), uVar1 != 0)) { - proc_7F092438(iVar2); + ppaafVar7 = ppaafVar6 + 3; + ppaafVar5 = ppaafVar4 + 3; + *ppaafVar4 = *ppaafVar6; + ppaafVar4[1] = ppaafVar6[1]; + ppaafVar4[2] = ppaafVar6[2]; + ppaafVar6 = ppaafVar7; + ppaafVar4 = ppaafVar5; + } while (ppaafVar7 != (float (**) [4] [4])0x8002aaf8); + *ppaafVar5 = paafRam8002aaf8; + pafStack56 = (float (*) [4])insert_imageDL(param_1); + pafStack52 = pafStack56; + proc_7F059694((float *)(float (*) [4] [4])afStack136,extraout_f12,extraout_f14,0.00000000, + 0.00000000,4000.00000000,0.00000000,0.00000000,0.00000000,0.00000000); + paafStack68 = (float (*) [4] [4])afStack136; + proc_7F0BD714((int)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) << 6); + proc_7F058020((float (*) [4] [4])afStack136,pafStack52); + *(float (**) [4])(something_screen_constructor + 0xc) = pafStack52; + proc_7F06EFC4(something_screen_constructor); + uStack60 = 3; + uStack64 = 0; + subdraw((int)&paafStack68,something_screen_constructor,extraout_a2_lo,extraout_a3_lo); + DL = pafStack56; + lVar1 = 0; + iVar10 = 0; + if (0 < *(short *)(*(int *)(something_screen_constructor + 8) + 0xe)) { + iVar8 = *(int *)(something_screen_constructor + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar8 + iVar10),(float (*) [4])afStack208); + proc_7F058C9C((int)(float (*) [4])afStack208, + (uint *)(*(int *)(something_screen_constructor + 0xc) + (int)lVar1 * 0x40) + ); + lVar1 = (longlong)((int)lVar1 + 1); + iVar10 += 0x40; + if (*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) <= lVar1) break; + iVar8 = *(int *)(something_screen_constructor + 0xc); + } + } + lVar1 = (longlong)(int)something_screen_constructor; + microcode_constructor((u32 *)DL); + plVar9 = legal_screen_constructer_table; + do { + pbVar2 = get_textptr_for_textID(plVar9->txtID); + puVar3 = display_aligned_white_text_to_screen + ((undefined4 *)lVar1,plVar9->h_pos,plVar9->v_pos,plVar9->flag, + plVar9->flag2,pbVar2,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge); + lVar1 = (longlong)(int)puVar3; + plVar9 = plVar9 + 1; + } while (plVar9 < dword_8002AABC); + return; +} + + + +void reset_menutimer(void) + +{ + menu_timer = 0; + return; +} + + + +void dummy7F00AAF8(void) + +{ + return; +} + + + +void interface_menu17_switchscreens(void) + +{ + setvideo_far(60.00000000); + video_related_21((f32)menu17_aspect); + set_page_height(100.00000000,(f32)menu17_pageheight); + set_video2_settings_offset_24(0); + if (((3 < menu_timer + 1) && (spectrum_related_flag == FALSE)) && + (is_emulating_spectrum == FALSE)) { + maybe_prev_menu = menu_update; + menu_update = ~MENU_LEGAL_SCREEN; + } + menu_timer = menu_timer + 1; + return; +} + + + +void constructor_menu17_switchscreens(Gfx *param_1) + +{ + insert_imageDL(param_1); + return; +} + + + +void init_menu01_nintendo(void) + +{ + f32 scale; + xyzpoint local_c; + + menu_timer = 0; + local_c.x = xyzpoint_8002aafc.x; + local_c.y = xyzpoint_8002aafc.y; + local_c.z = xyzpoint_8002aafc.z; + load_object_fill_header + ((object_header *)PitemZ_entries[276].header,(u8 *)PitemZ_entries[276].filename, + (int)ptr_logo_and_walletbond_DL,0x3c000,0); + set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[276].header); + something_screen_constructor = + get_obj_instance_controller_for_header((object_header *)PitemZ_entries[276].header); + set_obj_instance_controller_scale(something_screen_constructor,scale); + setsuboffset(something_screen_constructor,&local_c); + musicTrack1Play(M_INTROSWOOSH); + maybe_is_in_menu = TRUE; + flt_CODE_bss_80069614 = D_800519F4; + flt_CODE_bss_80069618 = D_800519F8; + return; +} + + + +void update_menu01_nintendo(void) + +{ + set_obj_instance_scale_to_zero(something_screen_constructor); + return; +} + + + +void interface_menu01_nintendo(void) + +{ + u32 uVar1; + + setvideo_far(60.00000000); + video_related_21((f32)menu01_aspect); + set_page_height(100.00000000,(f32)menu01_pageheight); + set_video2_settings_offset_24(0); + menu_timer += clock_timer; + if (menu_timer < 0x1f5) { + uVar1 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if (uVar1 != 0) { + if (is_first_time_on_main_menu == FALSE) { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + else { + prev_keypresses = 1; + set_menu_to_mode(MENU_RAREWARE_LOGO,1); + } + } + } + else { + set_menu_to_mode(MENU_RAREWARE_LOGO,1); + } + return; +} + + + +void constructor_menu01_nintendo(Gfx *param_1) + +{ + undefined4 *puVar1; + int iVar2; + undefined8 extraout_a0; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float (**ppaafVar3) [4] [4]; + float (**ppaafVar4) [4] [4]; + int iVar5; + float (**ppaafVar6) [4] [4]; + float (**ppaafVar7) [4] [4]; + longlong lVar8; + float extraout_f12; + float extraout_f14; + float afStack280 [16]; + float afStack216 [20]; + float afStack136 [18]; + float (*paafStack64) [4] [4]; + undefined4 uStack60; + undefined4 uStack56; + undefined4 *puStack52; + f32 *pfStack48; + + ppaafVar6 = (float (**) [4] [4])buffer_8002ab08; + ppaafVar3 = &paafStack64; + do { + ppaafVar7 = ppaafVar6 + 3; + ppaafVar4 = ppaafVar3 + 3; + *ppaafVar3 = *ppaafVar6; + ppaafVar3[1] = ppaafVar6[1]; + ppaafVar3[2] = ppaafVar6[2]; + ppaafVar6 = ppaafVar7; + ppaafVar3 = ppaafVar4; + } while (ppaafVar7 != (float (**) [4] [4])0x8002ab44); + *ppaafVar4 = paafRam8002ab44; + puVar1 = insert_imageDL(param_1); + *puVar1 = 0xbc000002; + puVar1[1] = 0x80000040; + puVar1[2] = 0x3860010; + puVar1[3] = 0x8002a990; + puStack52 = puVar1 + 6; + puVar1[4] = 0x3880010; + puVar1[5] = 0x8002a988; + pfStack48 = &flt_CODE_bss_80069614; + iVar2 = 0xff - (menu_timer * 0xff + -0x1708e) / 100; + if (0xff < iVar2) { + iVar2 = 0xff; + } + rgba_8002a988.R = (char)iVar2; + if (iVar2 < 0) { + rgba_8002a988.R = '\0'; + } + flt_CODE_bss_80069614 = (f32)((float)flt_CODE_bss_80069614 + flt_80051A04); + rgba_8002a988.G = rgba_8002a988.R; + rgba_8002a988.B = rgba_8002a988.R; + rgba_8002A98C.R = rgba_8002a988.R; + rgba_8002A98C.G = rgba_8002a988.R; + rgba_8002A98C.B = rgba_8002a988.R; + proc_7F0585FC((float)flt_CODE_bss_80069614,ZEXT48(&rgba_8002a988), + (float *)(float (*) [4] [4])afStack216); + proc_7F058BB8((float)flt_CODE_bss_80069618,extraout_a0,(float *)(float (*) [4] [4])afStack216); + flt_CODE_bss_80069618 = (f32)((float)flt_CODE_bss_80069618 * flt_80051A0C); + if (flt_80051A08 < (float)flt_CODE_bss_80069618) { + flt_CODE_bss_80069618 = (f32)flt_80051A08; + } + proc_7F059694((float *)(float (*) [4] [4])afStack136,extraout_f12,extraout_f14,0.00000000, + 0.00000000,4000.00000000,0.00000000,0.00000000,0.00000000,0.00000000); + proc_7F058068((float *)(float (*) [4] [4])afStack136,(float *)(float (*) [4] [4])afStack216); + proc_7F058020((float (*) [4] [4])afStack216,(float (*) [4])(float (*) [4] [4])afStack136); + paafStack64 = (float (*) [4] [4])afStack136; + proc_7F0BD714((int)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) << 6); + proc_7F058020((float (*) [4] [4])afStack136,(float (*) [4])pfStack48); + *(f32 **)(something_screen_constructor + 0xc) = pfStack48; + proc_7F06EFC4(something_screen_constructor); + uStack56 = 3; + uStack60 = 0; + subdraw((int)&paafStack64,something_screen_constructor,extraout_a2_lo,extraout_a3_lo); + lVar8 = 0; + iVar2 = 0; + if (0 < *(short *)(*(int *)(something_screen_constructor + 8) + 0xe)) { + iVar5 = *(int *)(something_screen_constructor + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar5 + iVar2),(float (*) [4])afStack280); + proc_7F058C9C((int)(float (*) [4])afStack280, + (uint *)(*(int *)(something_screen_constructor + 0xc) + (int)lVar8 * 0x40) + ); + lVar8 = (longlong)((int)lVar8 + 1); + iVar2 += 0x40; + if (*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) <= lVar8) break; + iVar5 = *(int *)(something_screen_constructor + 0xc); + } + } + return; +} + + + +int ** init_menu02_rareware(void) + +{ + int **in_v0_lo; + + proc_7F008B58((longlong)(int)ptr_logo_and_walletbond_DL); + play_sfx_a1(ptr_sfx_buf,0x102,NULL); + return in_v0_lo; +} + + + +void update_menu02_rareware(void) + +{ + return; +} + + + +void interface_menu02_rareware(void) + +{ + ulonglong uVar1; + u32 uVar2; + + set_video2_settings_offset_24(0); + uVar1 = proc_7F008DD0(); + if (uVar1 == 0) { + uVar2 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if (uVar2 != 0) { + if (is_first_time_on_main_menu == FALSE) { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + else { + prev_keypresses = 1; + set_menu_to_mode(MENU_EYE_INTRO,1); + } + } + } + else { + set_menu_to_mode(MENU_EYE_INTRO,1); + } + return; +} + + + +void constructor_menu02_rareware(Gfx *param_1) + +{ + retrieve_display_rareware_logo((undefined4 *)param_1); + return; +} + + + +void init_menu03_eyeintro(void) + +{ + proc_7F008E80((short *)ptr_logo_and_walletbond_DL,0x78000); + musicTrack1Play(M_INTRO); + maybe_is_in_menu = TRUE; + return; +} + + + +void update_menu_03_eyeintro(void) + +{ + proc_7F00920C(); + return; +} + + + +void interface_menu03_eyeintro(void) + +{ + ulonglong uVar1; + u32 uVar2; + + set_video2_settings_offset_24(0); + uVar1 = proc_7F009744(); + if (uVar1 == 0) { + uVar2 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if (uVar2 != 0) { + if (is_first_time_on_main_menu == FALSE) { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + else { + prev_keypresses = 1; + set_menu_to_mode(MENU_GOLDENEYE_LOGO,1); + } + } + } + else { + set_menu_to_mode(MENU_GOLDENEYE_LOGO,1); + } + return; +} + + + +void constructor_menu03_eyeintro(Gfx *param_1) + +{ + proc_7F009254((longlong)(int)param_1); + return; +} + + + +void init_menu04_goldeneyelogo(void) + +{ + f32 scale; + xyzpoint xStack12; + + menu_timer = 0; + xStack12.x = DAT_8002ab48; + xStack12.y = DAT_8002ab4c; + xStack12.z = DAT_8002ab50; + load_object_fill_header + ((object_header *)PitemZ_entries[277].header,(u8 *)PitemZ_entries[277].filename, + (int)ptr_logo_and_walletbond_DL,0x3c000,0); + set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[277].header); + something_screen_constructor = + get_obj_instance_controller_for_header((object_header *)PitemZ_entries[277].header); + set_obj_instance_controller_scale(something_screen_constructor,scale); + setsuboffset(something_screen_constructor,&xStack12); + return; +} + + + +void update_menu04_goldeneyelogo(void) + +{ + is_first_time_on_main_menu = FALSE; + set_obj_instance_scale_to_zero(something_screen_constructor); + return; +} + + + +// WARNING: Instruction at (ram,0x7f00b440) overlaps instruction at (ram,0x7f00b43c) +// + +void interface_menu04_goldeneyelogo(void) + +{ + u32 uVar1; + + setvideo_far(60.00000000); + video_related_21((f32)menu04_aspect); + set_page_height(100.00000000,(f32)menu04_pageheight); + set_video2_settings_offset_24(0); + menu_timer += clock_timer; + if (((is_first_time_on_main_menu == FALSE) || (0xb4 < menu_timer)) || + ((ge_logo_bool != FALSE && (0x5a < menu_timer)))) { + if (menu_timer < 0xb5) { + uVar1 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG| + DUMMY_2|DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG| + B_BUTTON|A_BUTTON); + if ((uVar1 != 0) || ((is_first_time_on_main_menu != FALSE && (ge_logo_bool != FALSE)))) + { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + } + else { + if (prev_keypresses == 0) { + do_extended_cast_display(0); + set_menu_to_mode(MENU_DISPLAY_CAST,1); + } + else { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + } + } + else { + uVar1 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if (uVar1 != 0) { + ge_logo_bool = TRUE; + } + } + return; +} + + + +void constructor_menu04_goldeneyelogo(Gfx *param_1) + +{ + undefined4 *puVar1; + LookAt *l; + undefined8 extraout_a0; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float (**ppaafVar2) [4] [4]; + float (**ppaafVar3) [4] [4]; + int iVar4; + float (**ppaafVar5) [4] [4]; + float (**ppaafVar6) [4] [4]; + longlong lVar7; + int iVar8; + float xEye; + float extraout_f12; + float yEye; + float extraout_f14; + float afStack292 [21]; + byte abStack208 [72]; + float afStack136 [18]; + float (*paafStack64) [4] [4]; + undefined4 uStack60; + undefined4 uStack56; + byte *pbStack52; + LookAt *pLStack48; + + ppaafVar5 = (float (**) [4] [4])buffer_8002ab54; + ppaafVar2 = &paafStack64; + do { + ppaafVar6 = ppaafVar5 + 3; + ppaafVar3 = ppaafVar2 + 3; + *ppaafVar2 = *ppaafVar5; + ppaafVar2[1] = ppaafVar5[1]; + ppaafVar2[2] = ppaafVar5[2]; + ppaafVar5 = ppaafVar6; + ppaafVar2 = ppaafVar3; + } while (ppaafVar6 != (float (**) [4] [4])0x8002ab90); + *ppaafVar3 = paafRam8002ab90; + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + pLStack48 = (LookAt *)insert_generic_fillrect(puVar1); + l = pLStack48; + proc_7F0BD6F8(2); + guLookAtReflect((Mtx *)abStack208,l,xEye,yEye,0.00000000,0.00000000,4000.00000000,0.00000000, + 0.00000000,0.00000000,0.00000000); + *(undefined4 *)pLStack48->l = 0xbc000002; + *(undefined4 *)(pLStack48->l + 4) = 0x80000040; + *(undefined4 *)(pLStack48->l + 8) = 0x3860010; + *(undefined4 *)(pLStack48->l + 0xc) = 0x8002a978; + *(undefined4 *)(pLStack48->l + 0x10) = 0x3880010; + *(undefined4 *)(pLStack48->l + 0x14) = 0x8002a970; + *(undefined4 *)(pLStack48->l + 0x18) = 0x3840010; + *(LookAt **)(pLStack48->l + 0x1c) = l; + *(byte **)(pLStack48[1].l + 4) = l->l + 0x10; + *(undefined4 *)pLStack48[1].l = 0x3820010; + pbStack52 = pLStack48[1].l + 8; + proc_7F059694((float *)(float (*) [4] [4])afStack136,extraout_f12,extraout_f14,0.00000000, + 0.00000000,3000.00000000,0.00000000,0.00000000,0.00000000,0.00000000); + paafStack64 = (float (*) [4] [4])afStack136; + proc_7F0BD714((int)*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) << 6); + matrix_multiply_A1_by_F12(flt_80051A18,extraout_a0,(float *)(float (*) [4] [4])afStack136); + proc_7F058020((float (*) [4] [4])afStack136,(float (*) [4])pLStack48); + *(LookAt **)(something_screen_constructor + 0xc) = pLStack48; + proc_7F06EFC4(something_screen_constructor); + uStack56 = 3; + uStack60 = 0; + subdraw((int)&paafStack64,something_screen_constructor,extraout_a2_lo,extraout_a3_lo); + lVar7 = 0; + iVar8 = 0; + if (0 < *(short *)(*(int *)(something_screen_constructor + 8) + 0xe)) { + iVar4 = *(int *)(something_screen_constructor + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar4 + iVar8),(float (*) [4])afStack292); + proc_7F058C9C((int)(float (*) [4])afStack292, + (uint *)(*(int *)(something_screen_constructor + 0xc) + (int)lVar7 * 0x40) + ); + lVar7 = (longlong)((int)lVar7 + 1); + iVar8 += 0x40; + if (*(short *)(*(int *)(something_screen_constructor + 8) + 0xe) <= lVar7) break; + iVar4 = *(int *)(something_screen_constructor + 0xc); + } + } + return; +} + + + +void disable_all_switches(int param_1) + +{ + ushort *partdesc; + undefined4 *puVar1; + int iVar2; + longlong lVar3; + longlong lVar4; + int iVar5; + int iVar6; + + iVar2 = *(int *)(param_1 + 8); + lVar4 = 0; + lVar3 = (longlong)*(short *)(iVar2 + 0xc); + iVar6 = 0; + if (0 < lVar3) { + do { + partdesc = *(ushort **)(*(int *)(iVar2 + 8) + iVar6); + iVar5 = (int)lVar4; + if (partdesc == NULL) { + lVar4 = (longlong)(iVar5 + 1); + } + else { + if ((*partdesc & 0xff) == 0x12) { + puVar1 = (undefined4 *) + extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar1 = 0; + iVar2 = *(int *)(param_1 + 8); + lVar3 = (longlong)*(short *)(iVar2 + 0xc); + lVar4 = (longlong)(iVar5 + 1); + } + else { + lVar4 = (longlong)(iVar5 + 1); + } + } + iVar6 += 4; + } while (lVar4 < lVar3); + } + return; +} + + + +void set_item_visibility_in_objinstance(int objinstance,int item,undefined4 mode) + +{ + ushort *partdesc; + undefined4 *puVar1; + + partdesc = *(ushort **)(*(int *)(*(int *)(objinstance + 8) + 8) + item * 4); + if (partdesc != NULL) { + puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(objinstance,partdesc); + *puVar1 = mode; + } + return; +} + + + +void select_load_bond_picture(int objinstance,u32 bondID) + +{ + set_item_visibility_in_objinstance(objinstance,8,1); + set_item_visibility_in_objinstance(objinstance,9,0); + set_item_visibility_in_objinstance(objinstance,10,0); + set_item_visibility_in_objinstance(objinstance,0xb,0); + set_item_visibility_in_objinstance(objinstance,0xf,1); + set_item_visibility_in_objinstance(objinstance,0x10,0); + set_item_visibility_in_objinstance(objinstance,0x11,0); + set_item_visibility_in_objinstance(objinstance,0x12,0); + return; +} + + + +void load_walletbond(void) + +{ + int iVar1; + uint *puVar2; + undefined *instancecontroller; + undefined **ppuVar3; + f32 scale; + + if (ptr_folder_object_instance == NULL) { + load_object_fill_header + ((object_header *)PitemZ_entries[278].header,(u8 *)PitemZ_entries[278].filename, + (int)ptr_logo_and_walletbond_DL,0xa000,0); + set_objuse_flag_compute_grp_nums_set_obj_loaded((object_header *)PitemZ_entries[278].header) + ; + ppuVar3 = &ptr_folder_object_instance; + do { + instancecontroller = + (undefined *) + get_aircraft_obj_instance_controller((object_header *)PitemZ_entries[278].header); + *ppuVar3 = instancecontroller; + set_obj_instance_controller_scale((int)instancecontroller,scale); + ppuVar3 = ppuVar3 + 1; + } while (ppuVar3 != (undefined **)&dword_8002A96C); + iVar1 = *(int *)(*(int *)&(PitemZ_entries[278].header)->anonymous_2 + 0x54); + if (iVar1 != 0) { + puVar2 = *(uint **)(iVar1 + 4); + proc_7F0BA640((int *)(puVar2[7] + (*puVar2 & 0xffffff)),NULL,8); + } + } + return; +} + + + +void proc_7F00B990(void) + +{ + int *objinstance; + undefined **ppuVar1; + + ppuVar1 = &ptr_folder_object_instance; + objinstance = (int *)ptr_folder_object_instance; + while( true ) { + if (objinstance != NULL) { + set_aircraft_obj_inst_scale_to_zero(objinstance); + *(int **)ppuVar1 = NULL; + } + ppuVar1 = (undefined **)((int **)ppuVar1 + 1); + if (ppuVar1 == (undefined **)&dword_8002A96C) break; + objinstance = (int *)*ppuVar1; + } + return; +} + + + +void init_menu05_filesel(void) + +{ + u8 *puVar1; + Gfx *local_8; + int local_4; + + local_8 = ptr_logo_and_walletbond_DL + 0x1400; + prev_keypresses = 0; + local_4 = 0x6e000; + if ((int)selected_folder_num < 0) { + selected_folder_num = 0; + } + tab_2_selected = FALSE; + tab_3_selected = FALSE; + folder_selected_for_deletion = -1; + folder_selected_for_deletion_choice = 1; + proc_7F008DE4((ushort **)&local_8,&local_4); + load_walletbond(); + if (maybe_is_in_menu != FALSE) { + musicTrack1Play(M_FOLDERS); + maybe_is_in_menu = FALSE; + } + menu_timer = 0; + CHEATS_ACTIVE_ARRAY[0] = '\0'; + CHEATS_ACTIVE_ARRAY[1] = '\0'; + puVar1 = CHEATS_ACTIVE_ARRAY + 2; + do { + puVar1 = puVar1 + 4; + puVar1[1] = '\0'; + puVar1[2] = '\0'; + puVar1[3] = '\0'; + *puVar1 = '\0'; + puVar1 = puVar1; + } while (puVar1 != CHEATS_ACTIVE_ARRAY + 0x4a); + append_cheat_sp = FALSE; + append_cheat_mp = FALSE; + return; +} + + + +void update_menu05_filesel(void) + +{ + if ((menu_update == MENU_LEGAL_SCREEN) || (maybe_prev_menu == MENU_LEGAL_SCREEN)) { + proc_7F00B990(); + } + return; +} + + + +int get_chapter_briefing_entry(int briefing) + +{ + mission_folder_setup *pmVar1; + + if (-1 < briefing) { + pmVar1 = mission_folder_setup_entries + briefing; + do { + if (pmVar1->type != 0) { + return briefing; + } + briefing += -1; + pmVar1 = pmVar1 + -1; + } while (-1 < briefing); + } + return -1; +} + + + +void toggle_deletion_menu_for_folder(int param_1) + +{ + float local_8; + float local_4; + + proc_7F077FF4((float *)(&DAT_80069620 + param_1 * 3),&local_8); + cursor_h_pos = (f32)(local_8 + -1.00000000); + cursor_v_pos = (f32)(local_4 + 20.00000000); + return; +} + + + +void interface_menu05_filesel(void) + +{ + undefined *puVar1; + longlong folder; + s32 sVar2; + undefined4 uVar3; + u32 bondID; + undefined8 extraout_a0; + undefined **ppuVar4; + undefined4 *puVar5; + float *pfVar6; + ulonglong uVar7; + float extraout_f12; + float fVar8; + float extraout_f12_00; + float extraout_f14; + float fVar9; + float extraout_f14_00; + float *pfStack188; + DIFFICULTY DStack180; + STAGENUM SStack176; + float fStack172; + float fStack168; + float fStack164; + float fStack160; + float fStack156; + float fStack152; + float fStack148; + float afStack144 [2]; + float afStack136 [16]; + float afStack72 [18]; + + folder._4_4_ = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2 + |DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON + |A_BUTTON); + folder = (longlong)(int)folder._4_4_; + if (folder == 0) { + sVar2 = get_cur_controller_horz_stick_pos('\0'); + folder = (longlong)sVar2; + if (-6 < folder) { + sVar2 = get_cur_controller_horz_stick_pos('\0'); + folder = (longlong)sVar2; + if (folder < 6) { + sVar2 = get_cur_controller_vert_stick_pos('\0'); + folder = (longlong)sVar2; + if (-6 < folder) { + sVar2 = get_cur_controller_vert_stick_pos('\0'); + folder = (longlong)sVar2; + if (folder < 6) { + menu_timer += clock_timer; + goto LAB_7f00bc70; + } + } + } + } + } + menu_timer = 0; +LAB_7f00bc70: + setvideo_far(60.00000000); + video_related_21((f32)menu05_aspect); + set_page_height(100.00000000,(f32)menu05_pageheight); + set_video2_settings_offset_24(0); + puVar5 = &DAT_80069620; + ppuVar4 = &ptr_folder_object_instance; + pfStack188 = &dword_8002AB94; + folder._4_4_ = 0; + fVar8 = extraout_f12; + fVar9 = extraout_f14; + do { + uVar3 = (undefined4)folder; + proc_7F059694(afStack72,fVar8,fVar9,0.00000000,0.00000000,4000.00000000,0.00000000, + 0.00000000,0.00000000,0.00000000); + init_something_copy_posdata_to_it + ((xyzpoint *)pfStack188,(int *)(float (*) [4] [4])afStack136); + matrix_multiply_A1_by_F12(flt_80051A24,extraout_a0,(float *)(float (*) [4] [4])afStack136); + proc_7F058068(afStack72,(float *)(float (*) [4] [4])afStack136); + proc_7F0BD714((int)*(short *)(*(int *)(*ppuVar4 + 8) + 0xe) << 6); + *(undefined4 *)(*ppuVar4 + 0xc) = uVar3; + proc_7F058020((float (*) [4] [4])afStack136,*(float (**) [4])(*ppuVar4 + 0xc)); + puVar1 = *ppuVar4; + *puVar5 = *(undefined4 *)(*(int *)(puVar1 + 0xc) + 0x30); + puVar5[1] = *(undefined4 *)(*(int *)(puVar1 + 0xc) + 0x34); + puVar5[2] = *(undefined4 *)(*(int *)(puVar1 + 0xc) + 0x38); + disable_all_switches((int)puVar1); + bondID = removed_would_have_returned_bond_for_folder_num(folder._4_4_); + folder = (longlong)(int)bondID; + select_load_bond_picture((int)*ppuVar4,bondID); + set_item_visibility_in_objinstance((int)*ppuVar4,0xe,1); + set_item_visibility_in_objinstance((int)*ppuVar4,0xd,1); + folder._4_4_ += 1; + pfStack188 = (float *)((xyzpoint *)pfStack188 + 1); + ppuVar4 = ppuVar4 + 1; + puVar5 = puVar5 + 3; + fVar8 = extraout_f12_00; + fVar9 = extraout_f14_00; + } while (folder._4_4_ != 4); + if (-1 < (int)selected_folder_num) { + if (selected_folder_num == 100) { + selected_folder_num = selected_folder_num_copy; + } + if (((int)selected_folder_num < 0) || (3 < (int)selected_folder_num)) { + selected_folder_num = 0; + } + toggle_deletion_menu_for_folder(selected_folder_num); + selected_folder_num = 0xffffffff; + } + uVar7 = 0; + if (folder_selected_for_deletion < 0) { + pfVar6 = (float *)&DAT_80069620; + ppuVar4 = &ptr_folder_object_instance; + do { + proc_7F03F90C((int)*ppuVar4,afStack144,&fStack148,&fStack152,&fStack156); + proc_7F03F948(pfVar6,&fStack148,&fStack156,&fStack164,&fStack172); + folder._4_4_ = (u32)uVar7; + if (fStack164 <= (float)cursor_h_pos) { + if ((float)cursor_h_pos <= fStack172) { + if (fStack160 <= (float)cursor_v_pos) { + if ((float)cursor_v_pos <= fStack168) { + get_highest_stage_difficulty_completed_in_folder + (folder._4_4_,&SStack176,&DStack180); + bondID = get_controller_buttons_pressed + ('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (bondID != 0) { + if (folder_selection_screen_option_icon == 0) { + selected_folder_num = folder._4_4_; + play_sfx_a1(ptr_sfx_buf,0x4d,NULL); + } + else { + if (folder_selection_screen_option_icon == 1) { + proc_7F01EDA0(uVar7); + folder_selection_screen_option_icon = 0; + play_sfx_a1(ptr_sfx_buf,0x4f,NULL); + } + else { + if (folder_selection_screen_option_icon == 2) { + if ((-1 < (int)SStack176) && (-1 < DStack180)) { + folder_selected_for_deletion_choice = 1; + folder_selected_for_deletion = folder._4_4_; + } + folder_selection_screen_option_icon = 0; + play_sfx_a1(ptr_sfx_buf,0x12,NULL); + } + } + } + break; + } + uVar7 = SEXT48((int)(folder._4_4_ + 1)); + } + else { + uVar7 = SEXT48((int)(folder._4_4_ + 1)); + } + } + else { + uVar7 = SEXT48((int)(folder._4_4_ + 1)); + } + } + else { + uVar7 = SEXT48((int)(folder._4_4_ + 1)); + } + } + else { + uVar7 = SEXT48((int)(folder._4_4_ + 1)); + } + ppuVar4 = ppuVar4 + 1; + pfVar6 = pfVar6 + 3; + } while (uVar7 != 4); + folder._4_4_ = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (folder._4_4_ == 0) { + folder._4_4_ = get_controller_buttons_pressed('\0',B_BUTTON); + if ((folder._4_4_ != 0) && (folder_selection_screen_option_icon != 0)) { + folder_selection_screen_option_icon = 0; + play_sfx_a1(ptr_sfx_buf,0x76,NULL); + } + } + else { + if (((((float)cursor_h_pos < folder_option_COPY_left_bound) || + (folder_option_COPY_right_bound < (float)cursor_h_pos)) || + ((float)cursor_v_pos < folder_option_COPY_upper_bound)) || + (folder_option_COPY_lower_bound < (float)cursor_v_pos)) { + if ((((float)cursor_h_pos < folder_option_ERASE_left_bound) || + (folder_option_ERASE_right_bound < (float)cursor_h_pos)) || + (((float)cursor_v_pos < folder_option_ERASE_upper_bound || + (folder_option_ERASE_lower_bound < (float)cursor_v_pos)))) { + if (folder_selection_screen_option_icon != 0) { + folder_selection_screen_option_icon = 0; + play_sfx_a1(ptr_sfx_buf,0x76,NULL); + } + } + else { + folder_selection_screen_option_icon = 2; + play_sfx_a1(ptr_sfx_buf,0xde,NULL); + } + } + else { + folder_selection_screen_option_icon = 1; + play_sfx_a1(ptr_sfx_buf,0xde,NULL); + } + } + menu_control_stick_tracking(); + } + else { + folder._4_4_ = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG|L_JPAD); + if ((folder._4_4_ == 0) || (folder_selected_for_deletion_choice != 0)) { + folder._4_4_ = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG|R_JPAD); + if ((folder._4_4_ != 0) && (folder_selected_for_deletion_choice != 0)) { + folder_selected_for_deletion_choice = 0; + play_sfx_a1(ptr_sfx_buf,0x12,NULL); + } + } + else { + folder_selected_for_deletion_choice = 1; + play_sfx_a1(ptr_sfx_buf,0x12,NULL); + } + sVar2 = get_cur_controller_horz_stick_pos('\0'); + if ((sVar2 < -0x2d) && (folder_selected_for_deletion_choice == 0)) { + folder_selected_for_deletion_choice = 1; + play_sfx_a1(ptr_sfx_buf,0x12,NULL); + } + else { + sVar2 = get_cur_controller_horz_stick_pos('\0'); + if ((0x2d < sVar2) && (folder_selected_for_deletion_choice != 0)) { + folder_selected_for_deletion_choice = 0; + play_sfx_a1(ptr_sfx_buf,0x12,NULL); + } + } + folder._4_4_ = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (folder._4_4_ == 0) { + folder._4_4_ = get_controller_buttons_pressed('\0',B_BUTTON); + if (folder._4_4_ != 0) { + toggle_deletion_menu_for_folder(folder_selected_for_deletion); + folder_selected_for_deletion = -1; + play_sfx_a1(ptr_sfx_buf,0x76,NULL); + } + } + else { + if (folder_selected_for_deletion_choice == 0) { + delete_eeprom_folder(folder_selected_for_deletion); + play_sfx_a1(ptr_sfx_buf,0x76,NULL); + } + else { + play_sfx_a1(ptr_sfx_buf,0x76,NULL); + } + toggle_deletion_menu_for_folder(folder_selected_for_deletion); + folder_selected_for_deletion = -1; + } + } + if ((int)selected_folder_num < 0) { + if (0x708 < menu_timer) { + set_menu_to_mode(MENU_LEGAL_SCREEN,1); + } + } + else { + set_menu_to_mode(MENU_MODE_SELECT,0); + set_menu_cursor_pos_to_setting(0); + } + return; +} + + + +int get_ptr_difficulty_name(DIFFICULTY difficulty) + +{ + byte *return; + + return = NULL; + if (difficulty == DIFFICULTY_AGENT) { + return = get_textptr_for_textID(0x9c13); + } + else { + if (difficulty == DIFFICULTY_SECRET) { + return = get_textptr_for_textID(0x9c14); + } + else { + if (difficulty == DIFFICULTY_00) { + return = get_textptr_for_textID(0x9c15); + } + else { + if (difficulty == DIFFICULTY_007) { + return = get_textptr_for_textID(0x9c16); + } + } + } + } + return (int)return; +} + + + +void constructor_menu05_filesel(Gfx *param_1) + +{ + undefined4 *puVar1; + short sVar5; + byte *pbVar2; + short sVar6; + char *pcVar3; + u8 *puVar4; + undefined8 extraout_a2; + undefined8 extraout_a2_00; + undefined8 extraout_a2_01; + undefined8 uVar7; + undefined8 extraout_a3; + undefined8 extraout_a3_00; + undefined8 extraout_a3_01; + undefined8 uVar8; + undefined4 *puVar9; + undefined4 *puVar10; + int iVar11; + mission_folder_setup *pmVar12; + longlong lVar13; + int briefing; + undefined **ppuVar14; + STAGENUM SVar15; + undefined4 *puVar16; + float fVar17; + f32 wdivh; + f32 wdivh_00; + f32 wdivh_01; + Gfx *pGStackX0; + float *pfStack324; + float fStack308; + float fStack304; + int iStack300; + float fStack296; + float fStack292; + float fStack288; + float fStack284; + float fStack280; + float fStack276; + float fStack272; + float fStack268; + float fStack264; + byte abStack252 [20]; + byte abStack232 [20]; + float fStack212; + float fStack208; + DIFFICULTY DStack204; + STAGENUM SStack200; + int iStack196; + int iStack192; + int iStack188; + int aiStack184 [2]; + float afStack176 [17]; + undefined4 uStack108; + undefined4 uStack104; + undefined4 uStack100; + u32 *puStack96; + u32 uStack28; + u32 uStack24; + u32 uStack20; + u32 uStack16; + u32 uStack12; + u32 uStack8; + int iStack4; + + uStack16 = unknown_folderselect_constructor; + uStack12 = dword_8002AF30; + uStack8 = dword_8002AF34; + uStack28 = unknown_folderselect_constructor_0; + uStack24 = dword_8002AF3C; + uStack20 = dword_8002AF40; + pGStackX0 = param_1; + puVar1 = insert_imageDL(param_1); + *puVar1 = 0xfc167e2c; + puVar1[1] = 0x33fdf6fb; + pGStackX0 = (Gfx *)(puVar1 + 4); + puVar1[3] = 0xffffff14; + puVar1[2] = 0xfb000000; + sVar5 = get_video2_settings_txtClipW(); + fVar17 = truncf(((float)(int)sVar5 * -80.00000000) / 1280.00000000); + puVar1 = proc_7F007CC8((undefined4 *)pGStackX0,(int)fVar17,(int *)&uStack16,(int *)&uStack28); + puVar1[1] = 0x1000000; + *puVar1 = 0x6000000; + pGStackX0 = (Gfx *)(puVar1 + 4); + ppuVar14 = (undefined **)&dword_8002A968; + puVar1[3] = 0x1000040; + puVar1[2] = 0x6000000; + uVar7 = extraout_a2; + uVar8 = extraout_a3; + do { + puVar1 = unknown_folderselect; + puVar9 = &uStack108; + do { + puVar16 = puVar1 + 3; + puVar10 = puVar9 + 3; + *puVar9 = *puVar1; + puVar9[1] = puVar1[1]; + puVar9[2] = puVar1[2]; + puVar1 = puVar16; + puVar9 = puVar10; + } while (puVar16 != (undefined4 *)0x8002af80); + lVar13 = 0; + *puVar10 = uRam8002af80; + uStack100 = 3; + uStack104 = 0; + puStack96 = (u32 *)pGStackX0; + subdraw((int)&uStack108,(uint)*ppuVar14,(int)uVar7,(int)uVar8); + puVar1 = (undefined4 *)*ppuVar14; + iVar11 = 0; + pGStackX0 = (Gfx *)puStack96; + uVar7 = extraout_a2_00; + uVar8 = extraout_a3_00; + if (0 < *(short *)(puVar1[2] + 0xe)) { + briefing = puVar1[3]; + while( true ) { + proc_7F058020((float (*) [4] [4])(briefing + iVar11),(float (*) [4])afStack176); + proc_7F058C9C((int)(float (*) [4])afStack176, + (uint *)(*(int *)(*ppuVar14 + 0xc) + (int)lVar13 * 0x40)); + puVar1 = (undefined4 *)*ppuVar14; + lVar13 = (longlong)((int)lVar13 + 1); + iVar11 += 0x40; + uVar7 = extraout_a2_01; + uVar8 = extraout_a3_01; + if (*(short *)(puVar1[2] + 0xe) <= lVar13) break; + briefing = puVar1[3]; + } + } + ppuVar14 = ppuVar14 + -1; + } while (&ptr_folder_object_instance <= ppuVar14); + microcode_constructor((u32 *)pGStackX0); + pGStackX0 = (Gfx *)puVar1; + setTextSpacingInverted(0); + pfStack324 = (float *)&DAT_80069620; + iStack4 = 0; + do { + proc_7F077FF4(pfStack324,&fStack212); + if (iStack4 == folder_selected_for_deletion) { + fVar17 = truncf(fStack212); + aiStack184[0] = (int)fVar17 + -0x31; + fVar17 = truncf(fStack208); + iStack188 = (int)fVar17 + 0x19; + pGStackX0 = (Gfx *)microcode_constructor_related_to_menus + ((undefined4 *)pGStackX0,(longlong)aiStack184[0], + (longlong)iStack188,(longlong)(aiStack184[0] + 99), + (int)fVar17 + 0x43,0x32); + pbVar2 = get_textptr_for_textID(0x9c17); + fVar17 = truncf(fStack212); + aiStack184[0] = (int)fVar17 + -0x2f; + fVar17 = truncf(fStack208); + iStack188 = (int)fVar17 + 0x1e; + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,pbVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xebd879ff, + (int)sVar5,(int)sVar6,0,0); + pGStackX0 = (Gfx *)puVar1; + pbVar2 = get_textptr_for_textID(0x9c18); + fVar17 = truncf(fStack212); + aiStack184[0] = (int)fVar17 + -0x2f; + fVar17 = truncf(fStack208); + iStack188 = (int)fVar17 + 0x32; + if (folder_selected_for_deletion_choice == 0) { + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,pbVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xebd879ff,(int)sVar5,(int)sVar6,0,0); + pGStackX0 = (Gfx *)puVar1; + } + else { + iStack196 = 0; + iStack192 = 0; + proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + pGStackX0 = (Gfx *)microcode_constructor_related_to_menus + ((undefined4 *)pGStackX0,(longlong)(aiStack184[0] + -1) + ,(longlong)(iStack188 + -1), + (longlong)(aiStack184[0] + iStack196 + 3), + iStack188 + iStack192,0x32); + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,pbVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xffffffff,(int)sVar5,(int)sVar6,0,0); + pGStackX0 = (Gfx *)puVar1; + } + pbVar2 = get_textptr_for_textID(0x9c19); + fVar17 = truncf(fStack212); + iVar11 = -1; + if (j_text_trigger != 0) { + iVar11 = 0x17; + } + aiStack184[0] = iVar11 + (int)fVar17 + -1; + fVar17 = truncf(fStack208); + iStack188 = (int)fVar17 + 0x32; + if (folder_selected_for_deletion_choice == 0) { + iStack196 = 0; + iStack192 = 0; + proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + pGStackX0 = (Gfx *)microcode_constructor_related_to_menus + ((undefined4 *)pGStackX0,(longlong)(aiStack184[0] + -1) + ,(longlong)(iStack188 + -1), + (longlong)(aiStack184[0] + iStack196 + 3), + iStack188 + iStack192,0x32); + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,pbVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xffffffff,(int)sVar5,(int)sVar6,0,0); + pGStackX0 = (Gfx *)puVar1; + } + else { + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,pbVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xebd879ff,(int)sVar5,(int)sVar6,0,0); + pGStackX0 = (Gfx *)puVar1; + } + } + else { + get_highest_stage_difficulty_completed_in_folder(iStack4,&SStack200,&DStack204); + if ((-1 < (int)SStack200) && (-1 < DStack204)) { + pcVar3 = (char *)get_ptr_difficulty_name(DStack204); + if (pcVar3 != NULL) { + textpointer_load_parse_something((char *)abStack232,pcVar3); + string_append_from_obseg_textbank((char *)abStack232,"\n"); + iStack196 = 0; + iStack192 = 0; + proc_7F0AE98C(&iStack192,&iStack196,abStack232,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + fVar17 = truncf(fStack212); + iVar11 = iStack196; + if (iStack196 < 0) { + iVar11 = iStack196 + 1; + } + aiStack184[0] = ((int)fVar17 - (iVar11 >> 1)) + -1; + fVar17 = truncf(fStack208); + iStack188 = (int)fVar17 + 0x15; + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,abStack232, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xebd879ff,(int)sVar5,(int)sVar6,0,0); + pGStackX0 = (Gfx *)puVar1; + } + iVar11 = -1; + briefing = 0; + if (DStack204 != DIFFICULTY_007) { + puVar4 = get_textptr_for_textID(0x9c1a); + textpointer_load_parse_something((char *)abStack252,(char *)puVar4); + pmVar12 = mission_folder_setup_entries; + SVar15 = mission_folder_setup_entries[0].mission_num; + if (mission_folder_setup_entries[0].folder_text_preset != 0) { + while (SStack200 != SVar15) { + briefing += 1; + if (pmVar12[1].folder_text_preset == 0) goto LAB_7f00cbdc; + SVar15 = pmVar12[1].mission_num; + pmVar12 = pmVar12 + 1; + } + iVar11 = get_chapter_briefing_entry(briefing); + } +LAB_7f00cbdc: + if (-1 < iVar11) { + string_append_from_obseg_textbank + ((char *)abStack252, + (char *)mission_folder_setup_entries[iVar11].string_ptr); + string_append_from_obseg_textbank((char *)abStack252,"."); + } + string_append_from_obseg_textbank + ((char *)abStack252, + (char *)mission_folder_setup_entries[briefing].string_ptr); + string_append_from_obseg_textbank((char *)abStack252,"\n"); + iStack196 = 0; + iStack192 = 0; + proc_7F0AE98C(&iStack192,&iStack196,abStack252,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + fVar17 = truncf(fStack212); + iVar11 = iStack196; + if (iStack196 < 0) { + iVar11 = iStack196 + 1; + } + aiStack184[0] = ((int)fVar17 - (iVar11 >> 1)) + -1; + fVar17 = truncf(fStack208); + iStack188 = (int)fVar17 + 0x2d; + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,abStack252, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xebd879ff,(int)sVar5,(int)sVar6,0,0); + pGStackX0 = (Gfx *)puVar1; + } + } + } + iStack4 += 1; + pfStack324 = pfStack324 + 3; + if (iStack4 == 4) { + setTextSpacingInverted(0); + pbVar2 = get_textptr_for_textID(0x9c1b); + iStack196 = 0; + iStack192 = 0; + proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + iVar11 = iStack192; + if (iStack192 < 0) { + iVar11 = iStack192 + 1; + } + iStack188 = 0x11d - (iVar11 >> 1); + aiStack184[0] = 0xf7; + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,pbVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xffffffff, + (int)sVar5,(int)sVar6,0,0); + folder_option_COPY_right_bound = (float)(aiStack184[0] + iStack196); + pGStackX0 = (Gfx *)puVar1; + pbVar2 = get_textptr_for_textID(0x9c1c); + iStack196 = 0; + iStack192 = 0; + proc_7F0AE98C(&iStack192,&iStack196,pbVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + aiStack184[0] = 0x165; + iVar11 = iStack192; + if (iStack192 < 0) { + iVar11 = iStack192 + 1; + } + iStack188 = 0x11d - (iVar11 >> 1); + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + iVar11 = (int)sVar6; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack184,&iStack188,pbVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xffffffff, + (int)sVar5,(int)sVar6,0,0); + folder_option_ERASE_right_bound = (float)(aiStack184[0] + iStack196); + fStack268 = 225.00000000; + fStack264 = flt_80051A28; + fStack276 = (float)(uint)mainfolderimages->width; + if (false) { + fStack276 = fStack276 + 4294967296.00000000; + } + fStack276 = fStack276 * 0.50000000; + fStack272 = (float)(uint)mainfolderimages->height; + if (false) { + fStack272 = fStack272 + 4294967296.00000000; + } + fStack272 = fStack272 * 0.50000000; + pGStackX0 = (Gfx *)iVar11; + append_image_to_DL((uint **)register0x000000ec,mainfolderimages,4,0,0); + display_image_at_on_screen_coord + ((int *)register0x000000ec,(int *)&fStack268,wdivh,(int)&fStack276, + (uint)mainfolderimages->width,(uint)mainfolderimages->height,0,0,1,0xff,0xff, + 0xff,0xff,(uint)(mainfolderimages->level != '\0')); + folder_option_COPY_left_bound = fStack268 - fStack276; + folder_option_COPY_upper_bound = fStack264 - fStack272; + folder_option_COPY_lower_bound = fStack272 + fStack264; + fStack284 = flt_80051A2C; + fStack280 = flt_80051A30; + fStack292 = (float)(uint)mainfolderimages[1].width; + if (false) { + fStack292 = fStack292 + 4294967296.00000000; + } + fStack292 = fStack292 * 0.50000000; + fStack288 = (float)(uint)mainfolderimages[1].height; + if (false) { + fStack288 = fStack288 + 4294967296.00000000; + } + fStack288 = fStack288 * 0.50000000; + append_image_to_DL((uint **)register0x000000ec,mainfolderimages + 1,4,0,0); + display_image_at_on_screen_coord + ((int *)register0x000000ec,(int *)&fStack284,wdivh_00,(int)&fStack292, + (uint)mainfolderimages[1].width,(uint)mainfolderimages[1].height,0,0,1,0xff, + 0xff,0xff,0xff,(uint)(mainfolderimages[1].level != '\0')); + folder_option_ERASE_left_bound = fStack284 - fStack292; + folder_option_ERASE_upper_bound = fStack280 - fStack288; + folder_option_ERASE_lower_bound = fStack288 + fStack280; + iStack300 = 0x42dc0000; + fStack296 = flt_80051A34; + fStack308 = (float)(uint)mainfolderimages[2].width; + if (false) { + fStack308 = fStack308 + 4294967296.00000000; + } + fStack308 = fStack308 * 0.50000000; + fStack304 = (float)(uint)mainfolderimages[2].height; + if (false) { + fStack304 = fStack304 + 4294967296.00000000; + } + fStack304 = fStack304 * 0.50000000; + append_image_to_DL((uint **)register0x000000ec,mainfolderimages + 2,4,0,0); + display_image_at_on_screen_coord + ((int *)register0x000000ec,&iStack300,wdivh_01,(int)&fStack308, + (uint)mainfolderimages[2].width,(uint)mainfolderimages[2].height,0,0,1,0xff, + 0xff,0xff,0xff,(uint)(mainfolderimages[2].level != '\0')); + if (folder_selected_for_deletion < 0) { + load_draw_selected_icon_folder_select(pGStackX0); + } + return; + } + } while( true ); +} + + + +void init_menu06_modesel(void) + +{ + gamemode = GAMEMODE_INTRO; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + load_walletbond(); + copyCurrentEEPROMtoStack(); + return; +} + + + +void update_menu06_modesel(void) + +{ + return; +} + + + +void interface_menu06_modesel(void) + +{ + ulonglong uVar1; + longlong lVar2; + u64 uVar3; + undefined *puVar4; + u32 cheat; + + is_cheat_menu_available = FALSE; + puVar4 = &cheat_available; + cheat = 1; + do { + uVar1 = check_if_cheat_available(cheat); + if (uVar1 == 0) { + *puVar4 = 0; + } + else { + *puVar4 = 1; + is_cheat_menu_available = TRUE; + } + cheat += 1; + puVar4 = puVar4 + 1; + } while (cheat != 0x4b); + setvideo_far(60.00000000); + video_related_21((f32)menu06_aspect); + set_page_height(100.00000000,(f32)menu06_pageheight); + set_video2_settings_offset_24(0); + disable_all_switches((int)ptr_folder_object_instance); + cheat = removed_would_have_returned_bond_for_folder_num(selected_folder_num); + select_load_bond_picture((int)ptr_folder_object_instance,cheat); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,7,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,2,1); + tab_3_highlight = FALSE; + mission_difficulty_highlighted = DIFFICULTY_MULTI; + lVar2 = isontab3(); + if (lVar2 == 0) { + if ((is_cheat_menu_available == FALSE) || ((float)cursor_v_pos < flt_80051A40)) { + if (((float)cursor_v_pos < 243.00000000) || + (uVar3 = get_attached_controller_count(), (longlong)uVar3 < 2)) { + mission_difficulty_highlighted = DIFFICULTY_AGENT; + cheat = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (cheat != 0) { + gamemode = GAMEMODE_SOLO; + play_sfx_a1(ptr_sfx_buf,0xc5,NULL); + } + } + else { + mission_difficulty_highlighted = DIFFICULTY_SECRET; + cheat = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (cheat != 0) { + gamemode = GAMEMODE_MULTI; + play_sfx_a1(ptr_sfx_buf,0xc5,NULL); + } + } + } + else { + mission_difficulty_highlighted = DIFFICULTY_00; + cheat = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (cheat != 0) { + gamemode = GAMEMODE_CHEATS; + play_sfx_a1(ptr_sfx_buf,0xc5,NULL); + } + } + } + else { + tab_3_highlight = TRUE; + cheat = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (cheat != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + cheat = get_controller_buttons_pressed('\0',B_BUTTON); + if (cheat != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + menu_control_stick_tracking(); + if (gamemode == GAMEMODE_SOLO) { + set_menu_to_mode(MENU_MISSION_SELECT,0); + set_cursor_to_stage_solo(0); + } + else { + if (gamemode == GAMEMODE_MULTI) { + set_menu_to_mode(MENU_MP_OPTIONS,0); + } + else { + if (gamemode == GAMEMODE_CHEATS) { + set_menu_to_mode(MENU_CHEAT,0); + } + else { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_FILE_SELECT,0); + } + } + } + } + return; +} + + + +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +undefined4 proc_7F00D5E8(undefined4 param_1) + +{ + undefined4 uVar1; + undefined8 extraout_a0; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + int iVar2; + longlong lVar3; + int iVar4; + float (**ppaafVar5) [4] [4]; + float (**ppaafVar6) [4] [4]; + float (**ppaafVar7) [4] [4]; + float (**ppaafVar8) [4] [4]; + float fVar9; + float fVar10; + float in_f14; + float afStack272 [16]; + float afStack208 [16]; + float afStack144 [17]; + float (*paafStack76) [4] [4]; + undefined4 uStack72; + undefined4 uStack68; + undefined4 uStack64; + float (*pafStack60) [4]; + + pafStack60 = (float (*) [4])(&dword_8002AB94 + selected_folder_num * 3); + fVar9 = (*pafStack60)[0]; + fVar10 = (&FLOAT_8002ab98)[selected_folder_num * 3]; + ppaafVar7 = (float (**) [4] [4])dword_8002AF84; + ppaafVar5 = &paafStack76; + do { + ppaafVar8 = ppaafVar7 + 3; + ppaafVar6 = ppaafVar5 + 3; + *ppaafVar5 = *ppaafVar7; + ppaafVar5[1] = ppaafVar7[1]; + ppaafVar5[2] = ppaafVar7[2]; + ppaafVar7 = ppaafVar8; + ppaafVar5 = ppaafVar6; + } while (ppaafVar8 != (float (**) [4] [4])&dword_8002AFC0); + *ppaafVar6 = _dword_8002AFC0; + fVar9 = fVar9 + flt_8002AFC4; + proc_7F059694(afStack144,0.00000000,in_f14,fVar9,fVar10 + flt_8002AFC8, + flt_8002AFCC + 4000.00000000,fVar9,fVar10 + flt_8002AFC8,0.00000000,0.00000000); + init_something_copy_posdata_to_it + ((xyzpoint *)(&dword_8002AB94 + selected_folder_num * 3), + (int *)(float (*) [4] [4])afStack208); + matrix_multiply_A1_by_F12(0.25000000,extraout_a0,(float *)(float (*) [4] [4])afStack208); + proc_7F058068(afStack144,(float *)(float (*) [4] [4])afStack208); + paafStack76 = (float (*) [4] [4])afStack208; + proc_7F0BD714((int)*(short *)(*(int *)(ptr_folder_object_instance + 8) + 0xe) << 6); + proc_7F058020((float (*) [4] [4])afStack208,pafStack60); + *(float (**) [4])(ptr_folder_object_instance + 0xc) = pafStack60; + uStack68 = 3; + uStack72 = 0; + uStack64 = param_1; + subdraw((int)&paafStack76,(uint)ptr_folder_object_instance,extraout_a2_lo,extraout_a3_lo); + uVar1 = uStack64; + lVar3 = 0; + iVar4 = 0; + if (0 < *(short *)(*(int *)(ptr_folder_object_instance + 8) + 0xe)) { + iVar2 = *(int *)(ptr_folder_object_instance + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar2 + iVar4),(float (*) [4])afStack272); + proc_7F058C9C((int)(float (*) [4])afStack272, + (uint *)(*(int *)(ptr_folder_object_instance + 0xc) + (int)lVar3 * 0x40)); + lVar3 = (longlong)((int)lVar3 + 1); + iVar4 += 0x40; + if (*(short *)(*(int *)(ptr_folder_object_instance + 8) + 0xe) <= lVar3) break; + iVar2 = *(int *)(ptr_folder_object_instance + 0xc); + } + } + return uVar1; +} + + + +void set_menu_cursor_pos_to_setting(int setting) + +{ + cursor_h_pos = 126.00000000; + cursor_v_pos = (f32)(float)(setting * 0x20 + 0xe2); + return; +} + + + +void constructor_menu06_modesel(Gfx *param_1) + +{ + undefined4 *puVar2; + short sVar3; + short sVar4; + uint *DL; + u64 uVar1; + TEXTFILESTRINGS id; + uint uStack24; + int iStack20; + int iStack16; + uint uStack12; + uint uStack8; + byte *pbStack4; + + puVar2 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar2 = insert_generic_fillrect(puVar2); + DL = (uint *)proc_7F00D5E8(puVar2); + microcode_constructor(DL); + uStack8 = 0x96; + uStack12 = 0xdc; + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)"1.\n",(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + if (append_cheat_sp == FALSE) { + id = 0x9c1d; + } + else { + id = 0x9c75; + } + pbStack4 = get_textptr_for_textID(id); + proc_7F0AE98C(&iStack20,&iStack16,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack8 = 0xaa; + uStack12 = 0xdc; + if (mission_difficulty_highlighted == DIFFICULTY_AGENT) { + DL = microcode_constructor_related_to_menus + (DL,0x94,0xda,(longlong)(iStack16 + 0xaf),0xea,0x32); + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + uStack8 = 0x96; + uStack12 = 0xfc; + uVar1 = get_attached_controller_count(); + if ((longlong)uVar1 < 2) { + uStack24 = 0x70; + } + else { + uStack24 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)"2.\n",(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uStack24,(int)sVar3,(int)sVar4,0,0); + id = 0x9c1e; + if (append_cheat_mp != FALSE) { + id = 0x9d14; + } + pbStack4 = get_textptr_for_textID(id); + proc_7F0AE98C(&iStack20,&iStack16,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack8 = 0xaa; + uStack12 = 0xfc; + if (mission_difficulty_highlighted == DIFFICULTY_SECRET) { + DL = microcode_constructor_related_to_menus + (DL,0x94,0xfa,(longlong)(iStack16 + 0xaf),0x10a,0x32); + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uStack24,(int)sVar3,(int)sVar4,0,0); + if (is_cheat_menu_available != FALSE) { + uStack8 = 0x96; + uStack12 = 0x11c; + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)"3.\n",(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c1f); + proc_7F0AE98C(&iStack20,&iStack16,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack8 = 0xaa; + uStack12 = 0x11c; + if (mission_difficulty_highlighted == DIFFICULTY_00) { + DL = microcode_constructor_related_to_menus + (DL,0x94,0x11a,(longlong)(iStack16 + 0xaf),0x12a,0x32); + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + } + DL = add_tab3_previous(DL); + load_draw_selected_icon_folder_select(DL); + return; +} + + + +int pull_and_display_text_for_folder_a0(LEVELID param_1) + +{ + mission_folder_setup *pmVar1; + int iVar2; + LEVELID LVar3; + + pmVar1 = mission_folder_setup_entries; + iVar2 = 0; + LVar3 = mission_folder_setup_entries[0].mission_num; + if (mission_folder_setup_entries[0].folder_text_preset != 0) { + while( true ) { + if (param_1 == LVar3) { + return iVar2; + } + iVar2 += 1; + if (pmVar1[1].folder_text_preset == 0) break; + LVar3 = pmVar1[1].mission_num; + pmVar1 = pmVar1 + 1; + } + } + return -1; +} + + + +BOOL check_if_stage_completed_on_difficulty(int stage,DIFFICULTY difficulty) + +{ + BOOL completed; + + if (mission_folder_setup_entries[stage].mission_num < 0) { + completed = FALSE; + } + else { + completed = isStageUnlockedAtDifficulty + (selected_folder_num,mission_folder_setup_entries[stage].mission_num, + difficulty); + } + return completed; +} + + + +longlong get_highest_unlocked_difficulty_for_level(longlong stage) + +{ + int iVar1; + BOOL BVar2; + s32 sVar3; + longlong lVar4; + + iVar1 = pull_and_display_text_for_folder_a0((STAGENUM)stage); + lVar4 = 2; + if (-1 < mission_folder_setup_entries[iVar1].stage_id) { + BVar2 = is007ModeUnlockedinFolder(selected_folder_num); + if (BVar2 == FALSE) { + iVar1 = get_debug_007_unlock_flag(); + if (iVar1 != 0) { + lVar4 = 3; + } + } + else { + lVar4 = 3; + } + if (true) { + do { + sVar3 = isStageUnlockedAtDifficulty + (selected_folder_num,(STAGENUM)stage,(DIFFICULTY)lVar4); + if (append_cheat_sp == FALSE) { + if (sVar3 != 0) { + return lVar4; + } + } + else { + if (sVar3 == 3) { + return lVar4; + } + } + lVar4 = (longlong)((DIFFICULTY)lVar4 + DIFFICULTY_MULTI); + } while (-1 < lVar4); + } + } + return -1; +} + + + +void init_menu07_missionsel(void) + +{ + selected_stage = LEVELID_NONE; + briefingpage = 0xffffffff; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + if (maybe_is_in_menu != FALSE) { + musicTrack1Play(M_FOLDERS); + maybe_is_in_menu = FALSE; + } + load_walletbond(); + return; +} + + + +void update_menu07_missionsel(void) + +{ + return; +} + + + +void interface_menu07_missionsel(void) + +{ + ushort *partdesc; + bool bVar1; + int iVar2; + longlong lVar3; + int **ppiVar4; + int **ppiVar5; + u32 uVar6; + undefined4 *puVar7; + undefined4 *puVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + + setvideo_far(60.00000000); + video_related_21((f32)menu07_aspect); + set_page_height(100.00000000,(f32)menu07_pageheight); + set_video2_settings_offset_24(0); + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x13,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x14,1); + tab_3_highlight = FALSE; + mission_difficulty_highlighted = DIFFICULTY_MULTI; + lVar3 = isontab3(); + iVar12 = 0; + if (lVar3 == 0) { + bVar1 = true; + while (((bVar1 && ((float)(cursor_xpos_table_mission_select[iVar12 + 1] + + cursor_xpos_table_mission_select[iVar12]) * 0.50000000 <= + (float)cursor_h_pos)) && (iVar12 += 1, iVar12 != 5))) { + bVar1 = iVar12 < 4; + } + iVar10 = 0; + bVar1 = true; + while (((bVar1 && ((float)(cursor_ypos_table_mission_select[iVar10 + 1] + + cursor_ypos_table_mission_select[iVar10]) * 0.50000000 <= + (float)cursor_v_pos)) && (iVar10 += 1, iVar10 != 4))) { + bVar1 = iVar10 < 3; + } + if (0 < iVar10) { + iVar2 = iVar10 * 5; + do { + iVar11 = 0; + iVar9 = iVar2; + do { + lVar3 = get_highest_unlocked_difficulty_for_level((longlong)iVar9); + if (-1 < lVar3) break; + iVar11 += 1; + iVar9 += 1; + } while (iVar11 != 5); + if (iVar11 < 5) break; + iVar10 += -1; + iVar2 += -5; + } while (0 < iVar10); + } + iVar10 *= 5; + if (-1 < iVar12) { + iVar2 = iVar10 + iVar12; + do { + lVar3 = get_highest_unlocked_difficulty_for_level((longlong)iVar2); + if (-1 < lVar3) break; + iVar12 += -1; + iVar2 += -1; + } while (-1 < iVar12); + } + if (iVar12 < 0) { + iVar12 = 0; + iVar2 = iVar10; + do { + lVar3 = get_highest_unlocked_difficulty_for_level((longlong)iVar2); + if (-1 < lVar3) break; + iVar12 += 1; + iVar2 += 1; + } while (iVar12 != 5); + } + mission_difficulty_highlighted = iVar10 + iVar12; + } + else { + tab_3_highlight = TRUE; + } + partdesc = *(ushort **)(*(int *)(*(int *)(ptr_folder_object_instance + 8) + 8) + 0x54); + if (partdesc != NULL) { + iVar12 = *(int *)(partdesc + 2); + ppiVar4 = (int **)extract_id_from_object_structure_microcode + ((int)ptr_folder_object_instance,partdesc); + ppiVar5 = ppiVar4; + proc_7F0BD6C4((int)*(short *)(iVar12 + 0xc)); + *(int ***)ppiVar4 = ppiVar5; + lVar3 = 0; + iVar10 = 0; + if (0 < *(short *)(iVar12 + 0xc)) { + iVar2 = *(int *)(iVar12 + 8); + while( true ) { + puVar8 = (undefined4 *)(iVar2 + iVar10); + puVar7 = (undefined4 *)((int)*ppiVar4 + iVar10); + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + puVar7[2] = puVar8[2]; + puVar7[3] = puVar8[3]; + iVar9 = (int)lVar3; + iVar2 = iVar9; + if (lVar3 < 0) { + iVar2 = iVar9 + 3; + } + lVar3 = get_highest_unlocked_difficulty_for_level((longlong)(iVar2 >> 2)); + if (lVar3 < 0) { + *(undefined *)((int)*ppiVar4 + iVar10 + 0xc) = 0xf; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xd) = 0xf; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xe) = 0xf; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xf) = 0xff; + } + else { + if (iVar2 >> 2 == mission_difficulty_highlighted) { + *(undefined *)((int)*ppiVar4 + iVar10 + 0xc) = 0xff; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xd) = 0xff; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xe) = 0xff; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xf) = 0xf5; + } + else { + *(undefined *)((int)*ppiVar4 + iVar10 + 0xc) = 0x6e; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xd) = 0x6e; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xe) = 0x6e; + *(undefined *)((int)*ppiVar4 + iVar10 + 0xf) = 0xff; + } + } + lVar3 = (longlong)(iVar9 + 1); + iVar10 += 0x10; + if (*(short *)(iVar12 + 0xc) <= lVar3) break; + iVar2 = *(int *)(iVar12 + 8); + } + } + } + uVar6 = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar6 == 0) { + uVar6 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar6 != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_3_highlight == FALSE) { + if (-1 < mission_difficulty_highlighted) { + briefingpage = pull_and_display_text_for_folder_a0(mission_difficulty_highlighted); + selected_stage = mission_folder_setup_entries[briefingpage].stage_id; + tab_2_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + menu_control_stick_tracking(); + if (tab_2_selected == FALSE) { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_MODE_SELECT,0); + set_menu_cursor_pos_to_setting(0); + } + } + else { + set_menu_to_mode(MENU_DIFFICULTY,0); + lVar3 = get_highest_unlocked_difficulty_for_level + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + set_cursor_pos_difficulty((int)lVar3); + } + return; +} + + + +void set_cursor_to_stage_solo(longlong param_1) + +{ + if (false) { + trap(0x1c00); + } + if ((false) && (param_1 == -0x80000000)) { + trap(0x1800); + } + cursor_h_pos = (f32)(float)cursor_xpos_table_mission_select[(int)param_1 % 5]; + cursor_v_pos = (f32)(float)cursor_ypos_table_mission_select[(int)param_1 / 5]; + return; +} + + + +void constructor_menu07_missionsel(Gfx *param_1) + +{ + byte bVar1; + undefined4 *puVar4; + longlong lVar2; + int iVar5; + longlong lVar3; + u8 *puVar6; + size_t sVar7; + byte *pbVar8; + short sVar11; + short sVar12; + undefined4 *puVar9; + uint *puVar10; + LEVELID LVar13; + uint uVar14; + int iVar15; + u32 *DL; + int iStack88; + undefined4 uStack84; + byte abStack80 [52]; + int iStack28; + int aiStack24 [4]; + LEVELID LStack8; + + puVar4 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar4 = insert_generic_fillrect(puVar4); + puVar4[1] = 0xffffffff; + *puVar4 = 0xf8000000; + DL = (u32 *)proc_7F00D5E8(puVar4 + 2); + lVar2 = (longlong)(int)DL; + microcode_constructor(DL); + LStack8 = ~LEVELID_NONE; + do { + iVar15 = 0; + LVar13 = LStack8; + do { + iVar5 = pull_and_display_text_for_folder_a0(LVar13); + lVar3 = get_highest_unlocked_difficulty_for_level((longlong)LVar13); + if (-1 < lVar3) { + uVar14 = 0x96969600; + DL = cursor_xpos_table_mission_select + LStack8; + if ((longlong)LVar13 == (longlong)mission_difficulty_highlighted) { + uVar14 = 0xffffff00; + } + if (mission_folder_setup_entries[iVar5].icon_text_preset == 0) { + puVar6 = get_textptr_for_textID + (mission_folder_setup_entries[iVar5].folder_text_preset); + textpointer_load_parse_something((char *)abStack80,(char *)puVar6); + } + else { + puVar6 = get_textptr_for_textID + (mission_folder_setup_entries[iVar5].icon_text_preset); + textpointer_load_parse_something((char *)abStack80,(char *)puVar6); + } + if (j_text_trigger == 0) { + sVar7 = strlen((char *)abStack80); + pbVar8 = abStack80 + (sVar7 - 1); + if (-1 < (int)(sVar7 - 1)) { + bVar1 = *pbVar8; + while( true ) { + if (0x60 < bVar1) { + *pbVar8 = bVar1 - 0x20; + } + pbVar8 = pbVar8 + -1; + if (pbVar8 < abStack80) break; + bVar1 = *pbVar8; + } + } + } + string_append_from_obseg_textbank((char *)abStack80,"\n"); + iStack28 = 0; + aiStack24[0] = 0; + proc_7F0AE98C(aiStack24,&iStack28,abStack80,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + iStack88 = (cursor_ypos_table_mission_select[iVar15] - aiStack24[0]) + 0x1d; + uStack84 = *DL - 0x1f; + puVar4 = microcode_constructor_related_to_menus + ((undefined4 *)lVar2,(longlong)uStack84,(longlong)iStack88, + (longlong)(uStack84 + iStack28),iStack88 + aiStack24[0],0); + sVar11 = get_video2_settings_txtClipW(); + sVar12 = get_video2_settings_txtClipH(); + puVar9 = (undefined4 *)(int)sVar12; + en_text_write_stuff(puVar4,&uStack84,&iStack88,abStack80, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + uVar14 | 0xff,(int)sVar11,(int)sVar12,0,0); + iStack88 = (cursor_ypos_table_mission_select[iVar15] - aiStack24[0]) + 0x1d; + uStack84 = *DL - 0x1f; + sVar11 = get_video2_settings_txtClipW(); + sVar12 = get_video2_settings_txtClipH(); + lVar2 = (longlong)sVar12; + en_text_write_stuff(puVar9,&uStack84,&iStack88,abStack80, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + uVar14 | 100,(int)sVar11,(int)sVar12,0,0); + } + iVar15 += 1; + LVar13 += 5; + } while (iVar15 != 4); + LStack8 += 1; + } while (LStack8 != 5); + puVar10 = add_tab3_previous((undefined4 *)lVar2); + load_draw_selected_icon_folder_select(puVar10); + return; +} + + + +void init_menu08_difficulty(void) + +{ + selected_difficulty = DIFFICULTY_MULTI; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + load_walletbond(); + return; +} + + + +void update_menu08_difficulty(void) + +{ + return; +} + + + +void interface_menu08_difficulty(void) + +{ + longlong lVar1; + int iVar2; + u32 uVar3; + + lVar1 = get_highest_unlocked_difficulty_for_level + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + iVar2 = (int)lVar1; + setvideo_far(60.00000000); + video_related_21((f32)menu08_aspect); + set_page_height(100.00000000,(f32)menu08_pageheight); + set_video2_settings_offset_24(0); + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,4,1); + tab_3_highlight = FALSE; + mission_difficulty_highlighted = DIFFICULTY_MULTI; + lVar1 = isontab3(); + if (lVar1 == 0) { + if ((iVar2 < 3) || ((float)cursor_v_pos < flt_80051A54)) { + if ((iVar2 < 2) || ((float)cursor_v_pos < 243.00000000)) { + if (iVar2 < 1) { + mission_difficulty_highlighted = DIFFICULTY_AGENT; + } + else { + if (211.00000000 <= (float)cursor_v_pos) { + mission_difficulty_highlighted = DIFFICULTY_SECRET; + } + else { + mission_difficulty_highlighted = DIFFICULTY_AGENT; + } + } + } + else { + mission_difficulty_highlighted = DIFFICULTY_00; + } + } + else { + mission_difficulty_highlighted = DIFFICULTY_007; + } + } + else { + tab_3_highlight = TRUE; + } + uVar3 = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar3 == 0) { + uVar3 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar3 != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_3_highlight == FALSE) { + if (-1 < mission_difficulty_highlighted) { + selected_difficulty = mission_difficulty_highlighted; + tab_2_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,0x4d,NULL); + } + } + else { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + menu_control_stick_tracking(); + if (tab_2_selected == FALSE) { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_MISSION_SELECT,0); + set_cursor_to_stage_solo + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + } + } + else { + if (selected_difficulty == DIFFICULTY_007) { + set_menu_to_mode(MENU_007_OPTIONS,0); + set_cursor_pos_tab2(); + } + else { + set_menu_to_mode(MENU_BRIEFING,0); + set_cursor_pos_tab2(); + } + } + return; +} + + + +uint * print_current_solo_briefing_stage_name(uint *param_1,byte *param_2) + +{ + char *pcVar1; + u8 *textfiletext; + short sVar4; + short sVar5; + int iVar2; + uint *puVar3; + uint *local_res0; + uint local_8; + uint local_4; + + local_res0 = param_1; + if (-1 < selected_difficulty) { + pcVar1 = (char *)get_ptr_difficulty_name(selected_difficulty); + textpointer_load_parse_something((char *)param_2,pcVar1); + textfiletext = get_textptr_for_textID(0x9c20); + string_append_from_obseg_textbank((char *)param_2,(char *)textfiletext); + local_4 = 0x37; + local_8 = 0x57; + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + local_res0 = write_text_at_abs_coord + (param_1,&local_4,&local_8,param_2,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar4,(int)sVar5,0,0); + } + iVar2 = get_chapter_briefing_entry(briefingpage); + if (-1 < iVar2) { + textfiletext = get_textptr_for_textID(0x9c21); + textpointer_load_parse_something((char *)param_2,(char *)textfiletext); + string_append_from_obseg_textbank + ((char *)param_2,(char *)mission_folder_setup_entries[iVar2].string_ptr); + string_append_from_obseg_textbank((char *)param_2,": "); + textfiletext = get_textptr_for_textID + (mission_folder_setup_entries[iVar2].folder_text_preset); + string_append_from_obseg_textbank((char *)param_2,(char *)textfiletext); + string_append_from_obseg_textbank((char *)param_2,"\n"); + local_4 = 0x37; + local_8 = 0x67; + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + local_res0 = write_text_at_abs_coord + (local_res0,&local_4,&local_8,param_2,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar4,(int)sVar5,0,0); + } + textfiletext = get_textptr_for_textID(0x9c22); + textpointer_load_parse_something((char *)param_2,(char *)textfiletext); + string_append_from_obseg_textbank + ((char *)param_2,(char *)mission_folder_setup_entries[briefingpage].string_ptr); + string_append_from_obseg_textbank((char *)param_2,": "); + textfiletext = get_textptr_for_textID + (mission_folder_setup_entries[briefingpage].folder_text_preset); + string_append_from_obseg_textbank((char *)param_2,(char *)textfiletext); + string_append_from_obseg_textbank((char *)param_2,"\n"); + local_4 = 0x37; + local_8 = 0x77; + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + puVar3 = write_text_at_abs_coord + (local_res0,&local_4,&local_8,param_2,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar4,(int)sVar5,0,0); + return puVar3; +} + + + +void set_cursor_pos_difficulty(int difficulty) + +{ + cursor_h_pos = 106.00000000; + cursor_v_pos = (f32)(float)(difficulty * 0x1e + 0xba); + return; +} + + + +// WARNING: Instruction at (ram,0x7f00f1b4) overlaps instruction at (ram,0x7f00f1b0) +// + +void constructor_menu08_difficulty(Gfx *param_1) + +{ + sImageTableEntry *psVar1; + longlong lVar2; + byte *pbVar3; + short sVar6; + short sVar7; + int iVar4; + BOOL BVar5; + int iVar8; + DIFFICULTY difficulty; + uint uVar9; + undefined4 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + f32 wdivh; + Gfx *pGStackX0; + float fStack3048; + float fStack3044; + int iStack3040; + float fStack3036; + int iStack3032; + int iStack3028; + undefined4 *puStack3024; + undefined4 auStack3020 [750]; + uint uStack20; + uint auStack16 [2]; + int iStack8; + + pGStackX0 = param_1; + lVar2 = get_highest_unlocked_difficulty_for_level + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + iStack8 = (int)lVar2; + pGStackX0 = (Gfx *)set_setfillcolor((undefined4 *)pGStackX0,0,0,0); + pGStackX0 = (Gfx *)insert_generic_fillrect((undefined4 *)pGStackX0); + pGStackX0 = (Gfx *)proc_7F00D5E8(pGStackX0); + puVar11 = array_8004F4B4; + puVar10 = auStack3020; + do { + puVar12 = puVar11 + 3; + *puVar10 = *puVar11; + puVar10[1] = puVar11[1]; + puVar10[2] = puVar11[2]; + puVar11 = puVar12; + puVar10 = puVar10 + 3; + } while (puVar12 != (undefined4 *)"%d.\n"); + microcode_constructor((u32 *)pGStackX0); + pGStackX0 = (Gfx *)print_current_solo_briefing_stage_name((uint *)pGStackX0,(byte *)auStack3020) + ; + pbVar3 = get_textptr_for_textID(0x9c23); + auStack16[0] = 0x37; + uStack20 = 0x8f; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + pGStackX0 = (Gfx *)write_text_at_abs_coord + ((uint *)pGStackX0,auStack16,&uStack20,pbVar3, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xff, + (int)sVar6,(int)sVar7,0,0); + if (-1 < mission_difficulty_highlighted) { + if (j_text_trigger == 0) { + iVar8 = 0; + } + else { + iVar8 = 0x32; + } + pGStackX0 = (Gfx *)microcode_constructor_related_to_menus + ((undefined4 *)pGStackX0,(longlong)(0x7e - iVar8), + (longlong)(mission_difficulty_highlighted * 0x1e + 0xb2),0xf0, + mission_difficulty_highlighted * 0x1e + 0xc3,0x32); + } + iVar8 = 0; + do { + if ((iVar8 == 0) || (iVar8 <= iStack8)) { + uVar9 = iVar8 * 0x1e + 0xb4; + if (j_text_trigger == 0) { + puStack3024 = auStack3020; + sprintf((char *)puStack3024,"%d.\n",iVar8 + 1); + } + else { + if (iVar8 == 0) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d09); + } + else { + if (iVar8 == 1) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d0a); + } + else { + if (iVar8 == 2) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d0b); + } + else { + if (iVar8 == 3) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9d0c); + } + } + } + } + } + proc_7F0AE98C(&iStack3032,&iStack3028,(byte *)puStack3024,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + iVar4 = 0; + if (j_text_trigger != 0) { + iVar4 = iStack3028 + -10; + } + auStack16[0] = 0x82 - iVar4; + uStack20 = uVar9; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + pGStackX0 = (Gfx *)write_text_at_abs_coord + ((uint *)pGStackX0,auStack16,&uStack20,(byte *)puStack3024, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xff,(int)sVar6,(int)sVar7,0,0); + if (iVar8 == 0) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c24); + } + else { + if (iVar8 == 1) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c25); + } + else { + if (iVar8 == 2) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c26); + } + else { + if (iVar8 == 3) { + puStack3024 = (undefined4 *)get_textptr_for_textID(0x9c27); + } + } + } + } + auStack16[0] = 0x96; + uStack20 = uVar9; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + pGStackX0 = (Gfx *)write_text_at_abs_coord + ((uint *)pGStackX0,auStack16,&uStack20,(byte *)puStack3024, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + 0xff,(int)sVar6,(int)sVar7,0,0); + } + iVar8 += 1; + } while (iVar8 < 4); + pGStackX0 = (Gfx *)add_tab3_previous((undefined4 *)pGStackX0); + difficulty = DIFFICULTY_AGENT; + do { + if (((difficulty == DIFFICULTY_AGENT) || (difficulty <= iStack8)) && + (BVar5 = check_if_stage_completed_on_difficulty(briefingpage,difficulty), + psVar1 = mainfolderimages, BVar5 == 3)) { + fStack3036 = (float)(difficulty * 0x1e + 0xba); + iStack3040 = 0x438c0000; + fStack3048 = (float)(uint)mainfolderimages[4].width; + if (false) { + fStack3048 = fStack3048 + 4294967296.00000000; + } + fStack3048 = fStack3048 * 0.50000000; + fStack3044 = (float)(uint)mainfolderimages[4].height; + if (false) { + fStack3044 = fStack3044 + 4294967296.00000000; + } + fStack3044 = fStack3044 * 0.50000000; + append_image_to_DL((uint **)register0x000000ec,mainfolderimages + 4,4,0,0); + display_image_at_on_screen_coord + ((int *)register0x000000ec,&iStack3040,wdivh,(int)&fStack3048, + (uint)psVar1[4].width,(uint)psVar1[4].height,0,0,1,0xb4,0,0,0xff, + (uint)(psVar1[4].level != '\0')); + } + difficulty += DIFFICULTY_SECRET; + } while (difficulty != DIFFICULTY_007); + load_draw_selected_icon_folder_select(pGStackX0); + return; +} + + + +void init_menu09_007options(void) + +{ + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + highlight_enemy_reaction = FALSE; + highlight_enemy_health = FALSE; + highlight_enemy_accuracy = FALSE; + highlight_enemy_damage = FALSE; + load_walletbond(); + return; +} + + + +void update_menu09_007options(void) + +{ + return; +} + + + +void interface_menu09_007options(void) + +{ + f32 fVar1; + u32 uVar3; + longlong lVar2; + float fVar4; + float fVar5; + int iVar6; + + setvideo_far(60.00000000); + video_related_21((f32)menu09_aspect); + set_page_height(100.00000000,(f32)menu09_pageheight); + set_video2_settings_offset_24(0); + uVar3 = get_controller_buttons_held('\0',Z_TRIG|A_BUTTON); + if (uVar3 == 0) { + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + highlight_enemy_reaction = FALSE; + highlight_enemy_health = FALSE; + highlight_enemy_accuracy = FALSE; + highlight_enemy_damage = FALSE; + lVar2 = isontab3(); + if (lVar2 == 0) { + lVar2 = isontab2(); + if (lVar2 == 0) { + lVar2 = isontab1(); + if (lVar2 == 0) { + iVar6 = (int)(float)cursor_v_pos; + if (iVar6 < 0x107) { + if (iVar6 < 0xe6) { + if (iVar6 < 0xc5) { + if (iVar6 < 0xa4) { + tab_2_highlight = TRUE; + } + else { + highlight_enemy_health = TRUE; + } + } + else { + highlight_enemy_accuracy = TRUE; + } + } + else { + highlight_enemy_damage = TRUE; + } + } + else { + highlight_enemy_reaction = TRUE; + } + } + else { + tab_1_highlight = TRUE; + } + } + else { + tab_2_highlight = TRUE; + } + } + else { + tab_3_highlight = TRUE; + } + } + uVar3 = get_controller_buttons_pressed('\0',START_BUTTON); + if (uVar3 == 0) { + uVar3 = get_controller_buttons_pressed('\0',Z_TRIG|A_BUTTON); + if (uVar3 == 0) { + uVar3 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar3 != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_2_highlight == FALSE) { + if (tab_3_highlight == FALSE) { + if (tab_1_highlight != FALSE) { + tab_1_selected = TRUE; + } + } + else { + tab_3_selected = TRUE; + } + } + else { + tab_2_selected = TRUE; + } + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + tab_1_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + uVar3 = get_controller_buttons_held('\0',Z_TRIG|A_BUTTON); + fVar1 = slider_007_mode_reaction; + if (uVar3 != 0) { + fVar5 = 1.00000000; + fVar4 = ((float)cursor_h_pos - 55.00000000) / 300.00000000; + if (fVar4 <= 1.00000000) { + fVar5 = fVar4; + } + if (fVar5 < 0.00000000) { + fVar5 = 0.00000000; + } + fVar1 = (f32)fVar5; + if (highlight_enemy_reaction == FALSE) { + if (highlight_enemy_health == FALSE) { + if (highlight_enemy_accuracy == FALSE) { + fVar1 = slider_007_mode_reaction; + if (highlight_enemy_damage != FALSE) { + slider_007_mode_damage = (f32)(fVar5 * fVar5 * 10.00000000); + } + } + else { + slider_007_mode_accuracy = (f32)(fVar5 * fVar5 * 10.00000000); + fVar1 = slider_007_mode_reaction; + } + } + else { + slider_007_mode_health = (f32)(fVar5 * fVar5 * 10.00000000); + fVar1 = slider_007_mode_reaction; + } + } + } + slider_007_mode_reaction = fVar1; + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); + menu_control_stick_tracking(); + if (tab_1_selected == FALSE) { + if (tab_2_selected == FALSE) { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_DIFFICULTY,0); + set_cursor_pos_difficulty(selected_difficulty); + } + } + else { + set_menu_to_mode(MENU_BRIEFING,0); + } + } + else { + set_menu_to_mode(MENU_RUN_STAGE,1); + } + return; +} + + + +void constructor_menu09_007options(Gfx *param_1) + +{ + undefined4 *puVar1; + uint *DL; + short sVar2; + short sVar3; + undefined4 *puVar4; + undefined4 *puVar5; + float fVar6; + int iStack3020; + int iStack3016; + undefined4 auStack3012 [750]; + uint uStack12; + uint uStack8; + byte *pbStack4; + + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar1 = insert_generic_fillrect(puVar1); + DL = (uint *)proc_7F00D5E8(puVar1); + puVar1 = (undefined4 *)array_80050074; + puVar4 = auStack3012; + do { + puVar5 = puVar1 + 3; + *puVar4 = *puVar1; + puVar4[1] = puVar1[1]; + puVar4[2] = puVar1[2]; + puVar1 = puVar5; + puVar4 = puVar4 + 3; + } while (puVar5 != (undefined4 *)"%d%%\n"); + microcode_constructor(DL); + DL = print_current_solo_briefing_stage_name(DL,(byte *)auStack3012); + pbStack4 = get_textptr_for_textID(0x9c28); + uStack8 = 0x37; + uStack12 = 0x8f; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + pbStack4 = get_textptr_for_textID(0x9c2a); + uStack8 = 0x39; + uStack12 = 0xa4; + puVar1 = microcode_constructor_related_to_menus(DL,0x37,0xb5,0x163,0xc0,0x32); + fVar6 = sqrtf((float)slider_007_mode_health / 10.00000000); + DL = microcode_constructor_related_to_menus + (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), + (longlong)((int)(fVar6 * 300.00000000) + 0x37),uStack12 + 0x1c,100); + if (highlight_enemy_health != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); + } + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_health * 100.00000000)); + iStack3020 = 0; + iStack3016 = 0; + proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack8 = 0x11d - iStack3020; + uStack12 = 0xa4; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + pbStack4 = get_textptr_for_textID(0x9c2b); + uStack8 = 0x39; + uStack12 = 0xc5; + puVar1 = microcode_constructor_related_to_menus(DL,0x37,0xd6,0x163,0xe1,0x32); + fVar6 = sqrtf((float)slider_007_mode_accuracy / 10.00000000); + DL = microcode_constructor_related_to_menus + (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), + (longlong)((int)(fVar6 * 300.00000000) + 0x37),uStack12 + 0x1c,100); + if (highlight_enemy_accuracy != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); + } + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_accuracy * 100.00000000)); + iStack3020 = 0; + iStack3016 = 0; + proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack8 = 0x11d - iStack3020; + uStack12 = 0xc5; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + pbStack4 = get_textptr_for_textID(0x9c2c); + uStack8 = 0x39; + uStack12 = 0xe6; + puVar1 = microcode_constructor_related_to_menus(DL,0x37,0xf7,0x163,0x102,0x32); + fVar6 = sqrtf((float)slider_007_mode_damage / 10.00000000); + DL = microcode_constructor_related_to_menus + (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), + (longlong)((int)(fVar6 * 300.00000000) + 0x37),uStack12 + 0x1c,100); + if (highlight_enemy_damage != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); + } + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_damage * 10.00000000)); + iStack3020 = 0; + iStack3016 = 0; + proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack8 = 0x11d - iStack3020; + uStack12 = 0xe6; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + pbStack4 = get_textptr_for_textID(0x9c29); + uStack8 = 0x39; + uStack12 = 0x107; + puVar1 = microcode_constructor_related_to_menus(DL,0x37,0x118,0x163,0x123,0x32); + DL = microcode_constructor_related_to_menus + (puVar1,0x37,(longlong)(int)(uStack12 + 0x11), + (longlong) + ((int)((float)slider_007_mode_reaction * 300.00000000 * 1.00000000) + 0x37), + uStack12 + 0x1c,100); + if (highlight_enemy_reaction != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,(longlong)(int)(uStack12 - 1),199,uStack12 + 0xe,0x32); + } + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + sprintf((char *)auStack3012,"%d%%\n",(int)((float)slider_007_mode_reaction * 100.00000000)); + iStack3020 = 0; + iStack3016 = 0; + proc_7F0AE98C(&iStack3016,&iStack3020,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack8 = 0x11d - iStack3020; + uStack12 = 0x107; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + DL = add_tab1_start(DL); + DL = add_tab3_previous(DL); + DL = add_tab2_next(DL); + load_draw_selected_icon_folder_select(DL); + return; +} + + + +u32 get_player_control_style(int playernum) + +{ + return controlstyle_player[playernum]; +} + + + +BOOL check_if_mp_stage_unlocked(int stage) + +{ + BOOL BVar1; + int iVar2; + s32 sVar3; + + if (multi_stage_setups[stage].min_player == 0) { + BVar1 = FALSE; + } + else { + iVar2 = get_selected_num_players(); + if (multi_stage_setups[stage].max_player < iVar2) { + BVar1 = FALSE; + } + else { + if (multi_stage_setups[stage].unlock_after == ~SP_STAGE_DAM) { + BVar1 = TRUE; + } + else { + sVar3 = isStageUnlockedAtDifficulty + (selected_folder_num,multi_stage_setups[stage].unlock_after, + DIFFICULTY_AGENT); + if (sVar3 == 0) { + BVar1 = FALSE; + } + else { + BVar1 = TRUE; + } + } + } + } + return BVar1; +} + + + +void select_game_length(void) + +{ + uint uVar1; + + if (scenario != SCENARIO_TLD) { + game_length = (int)(game_length + 1) % 7; + return; + } + uVar1 = game_length + 1 & 3; + if (((int)(game_length + 1) < 0) && (uVar1 != 0)) { + uVar1 -= 4; + } + game_length = uVar1; + return; +} + + + +void copy_aim_settings_to_playerdata(void) + +{ + player1_playerdata[0].autoaim = mp_sight_adjust_table[aim_sight_adjustment].autoaim; + player1_playerdata[0].sight = mp_sight_adjust_table[aim_sight_adjustment].sight; + player1_playerdata[1].autoaim = player1_playerdata[0].autoaim; + player1_playerdata[1].sight = player1_playerdata[0].sight; + player1_playerdata[2].autoaim = player1_playerdata[0].autoaim; + player1_playerdata[2].sight = player1_playerdata[0].sight; + player1_playerdata[3].autoaim = player1_playerdata[0].autoaim; + player1_playerdata[3].sight = player1_playerdata[0].sight; + return; +} + + + +void advance_aim_settings_selection(void) + +{ + uint uVar1; + + uVar1 = aim_sight_adjustment + 1; + aim_sight_adjustment = uVar1 & 3; + if (((int)uVar1 < 0) && (aim_sight_adjustment != 0)) { + aim_sight_adjustment -= 4; + } + copy_aim_settings_to_playerdata(); + return; +} + + + +void unlock_mp_chars(void) + +{ + num_chars_selectable_mp = 0x40; + return; +} + + + +u32 get_selected_num_players(void) + +{ + if (gamemode == GAMEMODE_MULTI) { + return selected_num_players; + } + return 1; +} + + + +HEADS get_player_mp_char_head(int player) + +{ + if ((int)player_1_char[player] < 0) { + return mp_chr_setup[player].head; + } + return mp_chr_setup[(int)player_1_char[player]].head; +} + + + +u8 get_player_mp_char_gender(int player) + +{ + if ((int)player_1_char[player] < 0) { + return (u8)mp_chr_setup[player].gender; + } + return (u8)mp_chr_setup[(int)player_1_char[player]].gender; +} + + + +BODIES get_player_mp_char_body(int player) + +{ + if ((int)player_1_char[player] < 0) { + return (BODIES)mp_chr_setup[player].body; + } + return (BODIES)mp_chr_setup[(int)player_1_char[player]].body; +} + + + +f32 get_player_mp_handicap(int player) + +{ + return (f32)MP_handicap_table[handicap_player1[player]].damage_modifier; +} + + + +f32 get_player_mp_char_height(int player) + +{ + if ((int)player_1_char[player] < 0) { + return mp_chr_setup[player].pov; + } + return mp_chr_setup[(int)player_1_char[player]].pov; +} + + + +int get_mp_timelimit(void) + +{ + return multi_game_lengths[game_length].time; +} + + + +int get_mp_pointlimit(void) + +{ + return multi_game_lengths[game_length].points; +} + + + +void reset_mp_options_for_scenario(MPSCENARIOS scenarioid) + +{ + int iVar1; + + unlock_stage_select = 1; + unlock_game_length = 1; + unlock_chars = 1; + unlock_weapon_select = 1; + unlock_handicap = 1; + unlock_control_style = 1; + unlock_aim_sight = 1; + scenario = scenarioid; + switch(scenarioid) { + case SCENARIO_NORMAL: + case SCENARIO_2v2: + case SCENARIO_3v1: + case SCENARIO_2v1: + if (6 < game_length) { + game_length = 2; + } + iVar1 = get_mp_weapon_set(); + if (0xd < iVar1) { + set_mp_weapon_set(0xd); + } + break; + case SCENARIO_YOLT: + game_length = 7; + iVar1 = get_mp_weapon_set(); + if (0xd < iVar1) { + set_mp_weapon_set(0xd); + } + unlock_game_length = 0; + break; + case SCENARIO_TLD: + if (3 < game_length) { + game_length = 2; + } + iVar1 = get_mp_weapon_set(); + if (0xd < iVar1) { + set_mp_weapon_set(0xd); + } + break; + case SCENARIO_MWTGG: + if (6 < game_length) { + game_length = 2; + } + set_mp_weapon_set(0xd); + unlock_weapon_select = 0; + break; + case SCENARIO_LTK: + if (6 < game_length) { + game_length = 2; + } + set_mp_weapon_set(1); + unlock_handicap = 0; + } + return; +} + + + +void init_mp_options_for_scenario(u32 numplayers) + +{ + longlong lVar1; + int iVar2; + s32 **ppsVar3; + longlong players; + + players = (longlong)(int)numplayers; + if (players < 2) { + players = 2; + } + selected_num_players = (u32)players; + lVar1 = 0; + if (0 < players) { + ppsVar3 = player_1_char; + iVar2 = 0; + do { + if (*ppsVar3 == (s32 *)0xffffffff) { + *ppsVar3 = (s32 *)lVar1; + *(undefined4 *)((int)handicap_player1 + iVar2) = 5; + } + lVar1 = (longlong)((int)(s32 *)lVar1 + 1); + if ((2 < players) && (3 < *(int *)((int)controlstyle_player + iVar2))) { + *(int *)((int)controlstyle_player + iVar2) = 0; + } + iVar2 += 4; + ppsVar3 = ppsVar3 + 1; + } while (lVar1 < players); + } + if (((longlong)(ulonglong)(byte)mp_stage_playercounts[scenario].max < players) || + (players < (longlong)(ulonglong)(byte)mp_stage_playercounts[scenario].min)) { + reset_mp_options_for_scenario(0); + players = (longlong)(int)selected_num_players; + } + if (multi_stage_setups[MP_stage_selected].max_player < players) { + MP_stage_selected = MP_STAGE_TEMPLE; + } + return; +} + + + +void init_menu0E_mpoptions(void) + +{ + u64 uVar1; + BOOL BVar2; + + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + if (maybe_is_in_menu != FALSE) { + music_related_38(0x7fff); + musicTrack1Vol(0x7fff); + music1_playing = 0; + musicTrack1Play(M_FOLDERS); + maybe_is_in_menu = FALSE; + } + if (selected_num_players == 0) { + uVar1 = get_attached_controller_count(); + init_mp_options_for_scenario((u32)uVar1); + } + BVar2 = check_if_mp_stage_unlocked(MP_stage_selected); + if (BVar2 == FALSE) { + MP_stage_selected = MP_STAGE_TEMPLE; + } + highlight_players = FALSE; + highlight_scenario = FALSE; + highlight_gameselect = FALSE; + highlight_gamelength = FALSE; + highlight_character = FALSE; + highlight_weaponselect = FALSE; + highlight_health = FALSE; + highlight_controlstyle = FALSE; + highlight_aimadjustment = FALSE; + load_walletbond(); + return; +} + + + +void update_menu0E_mpoptions(void) + +{ + return; +} + + + +void interface_menu0E_mpoptions(void) + +{ + bool players_selected; + bool scenario_selected; + bool gameselect_selected; + bool gamelength_selected; + bool character_selected; + bool weaponselect_selected; + bool health_selected; + bool controlstyle_selected; + bool aimadjustment_selected; + LEVELID curstageid; + u64 uVar1; + u32 numplayers; + longlong lVar2; + BOOL BVar3; + int iVar4; + + players_selected = false; + scenario_selected = false; + gameselect_selected = false; + gamelength_selected = false; + character_selected = false; + weaponselect_selected = false; + health_selected = false; + controlstyle_selected = false; + aimadjustment_selected = false; + setvideo_far(60.00000000); + video_related_21(1.33333337); + set_page_height(100.00000000,10000.00000000); + set_video2_settings_offset_24(0); + uVar1 = get_attached_controller_count(); + if ((longlong)uVar1 < 2) { + set_menu_to_mode(MENU_MODE_SELECT,0); + set_menu_cursor_pos_to_setting(gamemode); + } + uVar1 = get_attached_controller_count(); + if ((longlong)uVar1 < (longlong)(int)selected_num_players) { + uVar1 = get_attached_controller_count(); + init_mp_options_for_scenario((u32)uVar1); + } + numplayers = get_controller_buttons_held('\0',Z_TRIG|A_BUTTON); + if (numplayers == 0) { + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + highlight_players = FALSE; + highlight_scenario = FALSE; + highlight_gameselect = FALSE; + highlight_gamelength = FALSE; + highlight_character = FALSE; + highlight_weaponselect = FALSE; + highlight_health = FALSE; + highlight_controlstyle = FALSE; + highlight_aimadjustment = FALSE; + lVar2 = isontab3(); + if (lVar2 == 0) { + lVar2 = isontab1(); + if (lVar2 == 0) { + iVar4 = (int)(float)cursor_v_pos; + if ((iVar4 < 0x119) || (unlock_aim_sight == 0)) { + if ((iVar4 < 0x105) || (unlock_control_style == 0)) { + if ((iVar4 < 0xf1) || (unlock_handicap == 0)) { + if ((iVar4 < 0xdd) || (unlock_chars == 0)) { + if ((iVar4 < 0xc9) || (unlock_weapon_select == 0)) { + if ((iVar4 < 0xb5) || (unlock_game_length == 0)) { + if ((iVar4 < 0xa1) || (unlock_stage_select == 0)) { + if (iVar4 < 0x8d) { + highlight_players = TRUE; + } + else { + highlight_scenario = TRUE; + } + } + else { + highlight_gameselect = TRUE; + } + } + else { + highlight_gamelength = TRUE; + } + } + else { + highlight_weaponselect = TRUE; + } + } + else { + highlight_character = TRUE; + } + } + else { + highlight_health = TRUE; + } + } + else { + highlight_controlstyle = TRUE; + } + } + else { + highlight_aimadjustment = TRUE; + } + } + else { + tab_1_highlight = TRUE; + } + } + else { + tab_3_highlight = TRUE; + } + } + numplayers = get_controller_buttons_pressed('\0',START_BUTTON); + if (numplayers == 0) { + numplayers = get_controller_buttons_pressed('\0',Z_TRIG|A_BUTTON); + if (numplayers == 0) { + numplayers = get_controller_buttons_pressed('\0',B_BUTTON); + if (numplayers != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_3_highlight != FALSE) { + tab_3_selected = TRUE; + } + if (tab_1_highlight == FALSE) { + if (highlight_players == FALSE) { + if (highlight_scenario == FALSE) { + if (highlight_gameselect == FALSE) { + if (highlight_gamelength == FALSE) { + if (highlight_character == FALSE) { + if (highlight_weaponselect == FALSE) { + if (highlight_health == FALSE) { + if (highlight_controlstyle == FALSE) { + if (highlight_aimadjustment != FALSE) { + aimadjustment_selected = true; + } + } + else { + controlstyle_selected = true; + } + } + else { + health_selected = true; + } + } + else { + weaponselect_selected = true; + } + } + else { + character_selected = true; + } + } + else { + gamelength_selected = true; + } + } + else { + gameselect_selected = true; + } + } + else { + scenario_selected = true; + } + } + else { + players_selected = true; + } + } + else { + tab_1_selected = TRUE; + } + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + tab_1_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,5,1); + menu_control_stick_tracking(); + if (tab_3_selected == FALSE) { + if (tab_1_selected == FALSE) { + if (players_selected) { + uVar1 = get_attached_controller_count(); + numplayers = selected_num_players + 1; + if ((longlong)uVar1 < (longlong)(int)numplayers) { + numplayers = 2; + } + init_mp_options_for_scenario(numplayers); + } + else { + if (scenario_selected) { + set_menu_to_mode(MENU_MP_SCENARIO_SELECT,0); + } + else { + if (gameselect_selected) { + set_menu_to_mode(MENU_MP_STAGE_SELECT,0); + } + else { + if (gamelength_selected) { + select_game_length(); + } + else { + if (character_selected) { + set_menu_to_mode(MENU_MP_CHAR_SELECT,0); + } + else { + if (weaponselect_selected) { + advance_mp_weapon_set_by_one_save_value(); + } + else { + if (health_selected) { + set_menu_to_mode(MENU_MP_HANDICAP,0); + } + else { + if (controlstyle_selected) { + set_menu_to_mode(MENU_MP_CONTROL_STYLE,0); + } + else { + if (aimadjustment_selected) { + advance_aim_settings_selection(); + } + } + } + } + } + } + } + } + } + } + else { + curstageid = multi_stage_setups[MP_stage_selected].stage_id; + if (multi_stage_setups[MP_stage_selected].stage_id < 0) { + do { + numplayers = get_random_value(); + selected_stage = multi_stage_setups[numplayers % 0xb + 1].stage_id; + BVar3 = check_if_mp_stage_unlocked(numplayers % 0xb + 1); + curstageid = selected_stage; + } while (BVar3 == FALSE); + } + selected_stage = curstageid; + briefingpage = 0xffffffff; + set_menu_to_mode(MENU_RUN_STAGE,1); + } + } + else { + set_menu_to_mode(MENU_MODE_SELECT,0); + set_menu_cursor_pos_to_setting(gamemode); + } + return; +} + + + +void constructor_menu0E_mpoptions(Gfx *param_1) + +{ + undefined4 *puVar1; + short sVar3; + short sVar4; + uint *DL; + mp_weaponset_set *pmVar2; + uint uVar5; + int iStack28; + int iStack24; + uint uStack20; + uint uStack16; + byte abStack12 [8]; + byte *pbStack4; + + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar1 = insert_generic_fillrect(puVar1); + DL = (uint *)proc_7F00D5E8(puVar1); + microcode_constructor(DL); + pbStack4 = get_textptr_for_textID(0x9c4c); + uStack16 = 0x37; + uStack20 = 0x5f; + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c4d); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0x79; + if (highlight_players != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0x78,(longlong)(iStack28 + 0x3c),0x87,0x32); + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c4e); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0x8d; + if (highlight_scenario != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0x8c,(longlong)(iStack28 + 0x3c),0x9b,0x32); + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c4f); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0xa1; + if (highlight_gameselect != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0xa0,(longlong)(iStack28 + 0x3c),0xaf,0x32); + } + if (unlock_stage_select == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c50); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0xb5; + if (highlight_gamelength != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0xb4,(longlong)(iStack28 + 0x3c),0xc3,0x32); + } + if (unlock_game_length == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c51); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0xc9; + if (highlight_weaponselect != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,200,(longlong)(iStack28 + 0x3c),0xd7,0x32); + } + if (unlock_weapon_select == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c52); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0xdd; + if (highlight_character != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0xdc,(longlong)(iStack28 + 0x3c),0xeb,0x32); + } + if (unlock_chars == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c53); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0xf1; + if (highlight_health != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0xf0,(longlong)(iStack28 + 0x3c),0xff,0x32); + } + if (unlock_handicap == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9d1e); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0x105; + if (highlight_controlstyle != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0x104,(longlong)(iStack28 + 0x3c),0x113,0x32); + } + if (unlock_control_style == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(0x9c54); + proc_7F0AE98C(&iStack24,&iStack28,pbStack4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack16 = 0x39; + uStack20 = 0x119; + if (highlight_aimadjustment != FALSE) { + DL = microcode_constructor_related_to_menus + (DL,0x37,0x118,(longlong)(iStack28 + 0x3c),0x127,0x32); + } + if (unlock_aim_sight == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + sprintf((char *)abStack12,"%d",selected_num_players); + uStack16 = 0xa0; + uStack20 = 0x79; + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,abStack12,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(mp_stage_playercounts[scenario].stage); + uStack16 = 0xa0; + uStack20 = 0x8d; + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(multi_stage_setups[MP_stage_selected].folder_text_preset); + uStack16 = 0xa0; + uStack20 = 0xa1; + if (unlock_stage_select == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID(multi_game_lengths[game_length].text_preset); + uStack16 = 0xa0; + uStack20 = 0xb5; + if (unlock_game_length == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pmVar2 = get_mpweaponset(); + pbStack4 = get_textptr_for_textID(*(TEXTFILESTRINGS *)&pmVar2->weaponsetarray[0].anonymous_0); + uStack16 = 0xa0; + uStack20 = 0xc9; + if (unlock_weapon_select == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + pbStack4 = get_textptr_for_textID + (*(TEXTFILESTRINGS *)(mp_sight_adjust_table + aim_sight_adjustment)); + uStack16 = 0xa0; + uStack20 = 0x119; + if (unlock_aim_sight == 0) { + uVar5 = 0x70; + } + else { + uVar5 = 0xff; + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack16,&uStack20,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar5,(int)sVar3,(int)sVar4,0,0); + DL = add_tab3_previous(DL); + DL = add_tab1_start(DL); + load_draw_selected_icon_folder_select(DL); + return; +} + + + +BOOL hasPlayerSelectedMPChar(int playerchar) + +{ + BOOL BVar1; + int iVar2; + BOOL BVar3; + BOOL *pBVar4; + + BVar3 = FALSE; + iVar2 = 0; + if (0 < (int)selected_num_players) { + pBVar4 = &has_selected_char_player1; + do { + BVar1 = *pBVar4; + pBVar4 = pBVar4 + 1; + if ((BVar1 != FALSE) && (playerchar == *(int *)((int)player_1_char + iVar2))) { + BVar3 = TRUE; + } + iVar2 += 4; + } while (pBVar4 < &has_selected_char_player1 + selected_num_players); + } + return BVar3; +} + + + +void init_menu0f_mpcharsel(void) + +{ + byte chrphoto; + sImageTableEntry *imageaddress; + s32 sVar1; + BOOL BVar2; + uint uVar3; + s32 *playerchar; + MP_selectable_chars *character; + s32 **chrindex; + + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + chrphoto = mp_chr_setup[0].select_photo; + character = mp_chr_setup; + while( true ) { + uVar3 = (uint)chrphoto; + imageaddress = mpcharselimages + uVar3 * 4; + if (imageaddress->index < 3000) { + calls_load_image_to_buffer(imageaddress->index,NULL); + imageaddress = mpcharselimages + uVar3 * 4; + } + if (imageaddress[1].index < 3000) { + calls_load_image_to_buffer(imageaddress[1].index,NULL); + imageaddress = mpcharselimages + uVar3 * 4; + } + if (imageaddress[2].index < 3000) { + calls_load_image_to_buffer(imageaddress[2].index,NULL); + imageaddress = mpcharselimages + uVar3 * 4; + } + if (imageaddress[3].index < 3000) { + calls_load_image_to_buffer(imageaddress[3].index,NULL); + } + if ((MP_selectable_chars *)0x8002b497 < character + 1) break; + chrphoto = character[1].select_photo; + character = character + 1; + } + if (num_chars_selectable_mp != 0x40) { + sVar1 = isStageUnlockedAtDifficulty(selected_folder_num,SP_STAGE_CRADLE,DIFFICULTY_AGENT); + if (sVar1 == 3) { + num_chars_selectable_mp = 0x21; + } + else { + num_chars_selectable_mp = 8; + chrindex = player_1_char; + do { + if ((int)num_chars_selectable_mp <= (int)*chrindex) { + playerchar = NULL; + if (0 < (int)num_chars_selectable_mp) { + do { + BVar2 = hasPlayerSelectedMPChar((int)playerchar); + if (BVar2 == FALSE) { + *chrindex = playerchar; + goto LAB_7f011de0; + } + playerchar = (s32 *)((int)playerchar + MP_STAGE_TEMPLE); + } while ((int)playerchar < (int)num_chars_selectable_mp); + } + *chrindex = playerchar; + } +LAB_7f011de0: + chrindex = chrindex + 1; + } while (chrindex != (s32 **)&MP_stage_selected); + } + } + mp_char_cur_select_player1 = player_1_char[0]; + mp_char_prev_select_player1 = player_1_char[0]; + mp_unknown1_player1 = 0; + has_selected_char_player1 = FALSE; + size_mp_select_image_player1 = 0; + mp_char_cur_select_player2 = player_1_char[1]; + mp_char_prev_select_player2 = player_1_char[1]; + mp_unknown1_player2 = 0; + has_selected_char_player2 = FALSE; + size_mp_select_image_player2 = 0; + mp_char_cur_select_player3 = player_1_char[2]; + mp_char_prev_select_player3 = player_1_char[2]; + mp_unknown1_player3 = 0; + has_selected_char_player3 = FALSE; + size_mp_select_image_player3 = 0; + mp_char_cur_select_player4 = player_1_char[3]; + mp_char_prev_select_player4 = player_1_char[3]; + mp_unknown1_player4 = 0; + has_selected_char_player4 = FALSE; + size_mp_select_image_player4 = 0; + load_walletbond(); + return; +} + + + +void update_menu0F_mpcharsel(void) + +{ + return; +} + + + +void interface_menu0F_mpcharsel(void) + +{ + int iVar1; + int iVar2; + int iVar3; + u32 uVar4; + BOOL BVar5; + int iVar6; + int iVar7; + char cVar8; + int *piVar9; + int *piVar10; + int iVar11; + BOOL *pBVar12; + int *piVar13; + int iVar14; + int iStack12; + + iVar3 = get_selected_num_players(); + iStack12 = 0; + setvideo_far(60.00000000); + video_related_21((f32)menu0F_aspect); + set_page_height(100.00000000,(f32)menu0F_pageheight); + set_video2_settings_offset_24(0); + iVar14 = 0; + iVar11 = 0; + if (0 < iVar3) { + piVar10 = &mp_unknown1_player1; + piVar9 = &mp_char_cur_select_player1; + piVar13 = &mp_char_prev_select_player1; + pBVar12 = &has_selected_char_player1; + do { + cVar8 = (char)iVar14; + if (*pBVar12 != FALSE) { + iVar6 = *(int *)((int)&size_mp_select_image_player1 + iVar11); + if ((iVar6 < 0xb) && (*piVar13 == *piVar9)) { + *(int *)((int)&size_mp_select_image_player1 + iVar11) = iVar6 + 1; + } + uVar4 = get_controller_buttons_pressed(cVar8,B_BUTTON); + if (uVar4 != 0) { + *pBVar12 = FALSE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + if ((*pBVar12 == FALSE) && + (iVar6 = *(int *)((int)&size_mp_select_image_player1 + iVar11), 0 < iVar6)) { + *(int *)((int)&size_mp_select_image_player1 + iVar11) = iVar6 + -1; +LAB_7f012164: + iVar6 = *piVar13; + } + else { + if (*pBVar12 != FALSE) goto LAB_7f012164; + uVar4 = get_controller_buttons_pressed(cVar8,L_CBUTTONS|L_JPAD); + if (uVar4 != 0) { + if (0 < *piVar9) { + *piVar9 = *piVar9 + -1; + } + goto LAB_7f012164; + } + uVar4 = get_controller_buttons_pressed(cVar8,R_CBUTTONS|R_JPAD); + if (uVar4 != 0) { + if (*piVar9 < (int)(num_chars_selectable_mp - 1)) { + *piVar9 = *piVar9 + 1; + } + goto LAB_7f012164; + } + uVar4 = get_controller_buttons_pressed(cVar8,START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar4 == 0) { + iVar6 = get_controller_3dstick_L_R(cVar8,-2,1); + if (iVar6 < 1) { + iVar6 = get_controller_3dstick_L_R(cVar8,-2,1); + if (iVar6 < -1) { + if (*piVar10 == 0) { + if (0 < *piVar9) { + *piVar9 = *piVar9 + -1; + } + goto LAB_7f012164; + } + iVar6 = *piVar13; + } + else { + iVar6 = *piVar13; + } + } + else { + if (*piVar10 == 0) { + if (*piVar9 < (int)(num_chars_selectable_mp - 1)) { + *piVar9 = *piVar9 + 1; + } + goto LAB_7f012164; + } + iVar6 = *piVar13; + } + } + else { + BVar5 = hasPlayerSelectedMPChar(*piVar9); + if (BVar5 != FALSE) goto LAB_7f012164; + *(int *)((int)player_1_char + iVar11) = *piVar9; + *(undefined4 *)((int)&size_mp_select_image_player1 + iVar11) = 1; + *pBVar12 = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + iVar6 = *piVar13; + } + } + iVar1 = *piVar9; + iVar2 = *piVar10; + iVar14 += 1; + piVar9 = piVar9 + 1; + BVar5 = *pBVar12; + iVar7 = iVar2 + iVar6 * 0x54; + if (iVar1 * 0x54 < iVar7) { + *piVar10 = iVar2 + -0xc; + if (iVar2 + -0xc < 0) { + *piVar10 = iVar2 + 0x48; + *piVar13 = iVar6 + -1; + } + } + else { + if ((iVar7 < iVar1 * 0x54) && (*piVar10 = iVar2 + 0xc, 0x53 < iVar2 + 0xc)) { + *piVar10 = iVar2 + -0x48; + *piVar13 = iVar6 + 1; + } + } + if ((BVar5 != FALSE) && (*(int *)((int)&size_mp_select_image_player1 + iVar11) == 0xb)) + { + iStack12 = iStack12 + 1; + } + iVar11 += 4; + piVar13 = piVar13 + 1; + piVar10 = piVar10 + 1; + pBVar12 = pBVar12 + 1; + } while (iVar14 != iVar3); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); + menu_control_stick_tracking(); + if (iStack12 == iVar3) { + set_menu_to_mode(MENU_MP_OPTIONS,0); + } + return; +} + + + +int proc_7F0122A8(int param_1,int param_2,int param_3) + +{ + if ((param_1 <= param_2) || (param_3 <= param_1)) { + return 0; + } + if (param_1 < param_2 + 0x28) { + return (param_2 - param_1) * -6 + 0xf; + } + if (param_3 + -0x28 < param_1) { + return (param_1 - param_3) * -6 + 0xf; + } + return 0xff; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 * proc_7F01231C(void) + +{ + short sVar1; + Mtx *in_v0_lo; + Mtx *m; + Mtx *pabVar2; + Mtx *pabVar3; + BOOL BVar4; + byte bVar6; + int iVar5; + u32 *in_a0_lo; + int in_a1_lo; + int in_a2_lo; + undefined4 in_a3_lo; + uint uVar7; + short sVar8; + short sVar9; + uint uVar10; + float l; + float a; + float r; + float x; + Mtx *pabStackX0; + int iStackX4; + int iStackX8; + undefined4 uStackX12; + short in_stack_00000012; + int in_stack_00000014; + int in_stack_00000018; + + pabStackX0 = (Mtx *)in_a0_lo; + iStackX4 = in_a1_lo; + iStackX8 = in_a2_lo; + uStackX12 = in_a3_lo; + proc_7F0BD6E0(); + m = in_v0_lo; + proc_7F0BD6E0(); + pabVar2 = m; + proc_7F0BD6C4(0x10); + pabVar3 = pabVar2; + microcode_constructor((u32 *)pabStackX0); + pabStackX0 = pabVar3; + guOrtho(in_v0_lo,l,r,0.00000000,440.00000000,0.00000000,330.00000000,1.00000000); + guRotate(m,a,x,3.14159274,1.00000000); + sVar1 = (short)in_stack_00000018; + uVar10 = 0; + pabVar3 = pabVar2; + do { + uVar7 = 0; + do { + sVar9 = (short)uVar7; + if (1 < (int)uVar7) { + sVar9 += -1; + } + sVar8 = (short)uVar10; + if (1 < (int)uVar10) { + sVar8 = (short)uVar10 + -1; + } + BVar4 = hasPlayerSelectedMPChar(in_stack_00000014); + if (BVar4 == FALSE) { + bVar6 = 0xff; + } + else { + if (in_stack_00000018 == 0) { + bVar6 = 0x6e; + } + else { + bVar6 = 0xff; + } + } + *(short *)*pabVar3 = (sVar9 + -1) * (sVar1 + 0x23) + (short)uStackX12; + *(undefined2 *)(*pabVar3 + 4) = 0xfffb; + *(undefined2 *)(*pabVar3 + 6) = 0; + *(short *)(*pabVar3 + 2) = + (0x14a - in_stack_00000012) + (sVar8 + -1) * (sVar1 + 0x2a) + sVar1; + if ((uVar7 & 1) == 0) { + *(undefined2 *)(*pabVar3 + 8) = 0; + } + else { + *(undefined2 *)(*pabVar3 + 8) = 0x1000; + } + if ((uVar10 & 1) == 0) { + *(undefined2 *)(*pabVar3 + 10) = 0; + } + else { + *(undefined2 *)(*pabVar3 + 10) = 0x1000; + } + (*pabVar3)[0xc] = bVar6; + (*pabVar3)[0xd] = bVar6; + (*pabVar3)[0xe] = bVar6; + if (in_stack_00000018 == 0) { + iVar5 = proc_7F0122A8((int)*(short *)*pabVar3,iStackX4,iStackX8); + (*pabVar3)[0xf] = (byte)iVar5; + } + else { + (*pabVar3)[0xf] = 0xff; + } + uVar7 += 1; + pabVar3 = (Mtx *)(*pabVar3 + 0x10); + } while (uVar7 != 4); + uVar10 += 1; + } while (uVar10 != 4); + *(undefined4 *)*pabStackX0 = 0x1030040; + *(Mtx **)(*pabStackX0 + 4) = in_v0_lo + -0x2000000; + *(undefined4 *)(*pabStackX0 + 8) = 0x1020040; + *(Mtx **)(*pabStackX0 + 0xc) = m + -0x2000000; + *(undefined4 *)(*pabStackX0 + 0x10) = 0x4f00100; + *(Mtx **)(*pabStackX0 + 0x14) = pabVar2; + pabStackX0 = (Mtx *)(*pabStackX0 + 0x18); + append_image_to_DL((uint **)register0x000000ec, + mpcharselimages + + (uint)(byte)mp_chr_setup[in_stack_00000014].select_photo * 4 + 2,2,0,2); + ((undefined4 *)pabStackX0)[1] = 0xa28; + *(undefined4 *)pabStackX0 = 0xbf000000; + ((undefined4 *)pabStackX0)[3] = 0x280a32; + ((undefined4 *)pabStackX0)[2] = 0xbf000000; + pabStackX0 = (Mtx *)((undefined4 *)pabStackX0 + 4); + append_image_to_DL((uint **)register0x000000ec, + mpcharselimages + + (uint)(byte)mp_chr_setup[in_stack_00000014].select_photo * 4 + 3,2,0,2); + ((undefined4 *)pabStackX0)[1] = 0x141e3c; + *(undefined4 *)pabStackX0 = 0xbf000000; + ((undefined4 *)pabStackX0)[3] = 0x3c1e46; + ((undefined4 *)pabStackX0)[2] = 0xbf000000; + pabStackX0 = (Mtx *)((undefined4 *)pabStackX0 + 4); + append_image_to_DL((uint **)register0x000000ec, + mpcharselimages + + (uint)(byte)mp_chr_setup[in_stack_00000014].select_photo * 4,2,0,2); + ((undefined4 *)pabStackX0)[1] = 0x505a78; + *(undefined4 *)pabStackX0 = 0xbf000000; + ((undefined4 *)pabStackX0)[3] = 0x785a82; + ((undefined4 *)pabStackX0)[2] = 0xbf000000; + pabStackX0 = (Mtx *)((undefined4 *)pabStackX0 + 4); + append_image_to_DL((uint **)register0x000000ec, + mpcharselimages + + (uint)(byte)mp_chr_setup[in_stack_00000014].select_photo * 4 + 1,2,0,2); + ((undefined4 *)pabStackX0)[1] = 0x646e8c; + *(undefined4 *)pabStackX0 = 0xbf000000; + ((undefined4 *)pabStackX0)[3] = 0x8c6e96; + ((undefined4 *)pabStackX0)[2] = 0xbf000000; + return (undefined4 *)pabStackX0 + 4; +} + + + +void constructor_menu0F_mpcharsel(Gfx *param_1) + +{ + undefined4 *puVar1; + u32 *DL; + uint *DL_00; + uint *puVar2; + uint *DL_01; + short sVar3; + short sVar4; + int iVar5; + int iVar6; + int iVar7; + int *imagesize; + int *char_prev; + int *char_cur; + int *char_selected; + uint uStack76; + uint uStack72; + int iStack68; + int aiStack64 [2]; + uint uStack56; + uint uStack52; + int iStack48; + int aiStack44 [9]; + uint uStack8; + uint numplayers; + + numplayers = get_selected_num_players(); + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar1 = insert_generic_fillrect(puVar1); + DL = (u32 *)proc_7F00D5E8(puVar1); + microcode_constructor(DL); + DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); + if (2 < (int)numplayers) { + DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); + } + if (0 < (int)numplayers) { + imagesize = &size_mp_select_image_player1; + char_selected = &has_selected_char_player1; + char_cur = &mp_char_cur_select_player1; + char_prev = &mp_char_prev_select_player1; + uStack8 = 0; + do { + if (numplayers == 2) { + iVar5 = 0x26; + iVar6 = 0x15e; + if ((int)uStack8 < 1) { + iVar7 = 0x1e; + } + else { + iVar7 = 0xaa; + } + } + else { + iVar6 = 0xaf; + if ((int)uStack8 < 2) { + iVar7 = 0; + } + else { + iVar7 = 0x8c; + } + iVar7 += 0x1e; + if ((uStack8 & 1) == 0) { + iVar5 = 0; + } + else { + iVar5 = 0xaf; + } + iVar5 += 0x26; + } + DL_01 = DL_00 + 2; + *DL_00 = ((int)((float)(iVar5 + 6) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | + (int)((float)(iVar7 + 5U) * 4.00000000) & 0xfffU; + DL_00[1] = ((int)((float)(iVar5 + iVar6 + -6) * 4.00000000) & 0xfffU) << 0xc | + (int)((float)(iVar7 + 0x87) * 4.00000000) & 0xfffU; + if ((*char_selected == 0) && (*imagesize == 0)) { + puVar2 = (uint *)get_textptr_for_textID(0x9c55); + DL_00 = puVar2; + proc_7F0AE98C(aiStack44,&iStack48,(byte *)puVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack52 = ((iVar6 >> 1) + iVar5) - (iStack48 >> 1); + uStack56 = iVar7 + 5U; + microcode_constructor(DL_01); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL_01 = write_text_at_abs_coord + (DL_00,&uStack52,&uStack56,(byte *)puVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xff, + (int)sVar3,(int)sVar4,0,0); + } + puVar2 = (uint *)get_textptr_for_textID(mp_chr_setup[*char_cur].text_preset); + DL_00 = puVar2; + proc_7F0AE98C(aiStack64,&iStack68,(byte *)puVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack76 = iVar7 + 0x78; + uStack72 = ((iVar6 >> 1) + iVar5) - (iStack68 >> 1); + microcode_constructor(DL_01); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + write_text_at_abs_coord + (DL_00,&uStack72,&uStack76,(byte *)puVar2,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + DL_00 = (uint *)proc_7F01231C(); + if (*char_selected == 0) { + if (*imagesize != 0) { + iVar6 = *char_prev; + goto LAB_7f012bd0; + } +LAB_7f012be0: + iVar6 = *char_prev; + if (2 < iVar6) { + DL_00 = (uint *)proc_7F01231C(); + iVar6 = *char_prev; + } + if (1 < iVar6) { + DL_00 = (uint *)proc_7F01231C(); + iVar6 = *char_prev; + } + if (0 < iVar6) { + DL_00 = (uint *)proc_7F01231C(); + iVar6 = *char_prev; + } + if (iVar6 < (int)(num_chars_selectable_mp - 1)) { + DL_00 = (uint *)proc_7F01231C(); + iVar6 = *char_prev; + } + if (iVar6 < (int)(num_chars_selectable_mp - 2)) { + DL_00 = (uint *)proc_7F01231C(); + iVar6 = *char_prev; + } + if (iVar6 < (int)(num_chars_selectable_mp - 3)) { + DL_00 = (uint *)proc_7F01231C(); + } + } + else { + iVar6 = *char_prev; +LAB_7f012bd0: + if (iVar6 != *char_cur) goto LAB_7f012be0; + } + char_selected = (BOOL *)((int *)char_selected + 1); + uStack8 += 1; + char_cur = char_cur + 1; + char_prev = char_prev + 1; + imagesize = imagesize + 1; + } while (uStack8 != numplayers); + } + combiner_bayer_lod_perspective(DL_00); + return; +} + + + +void init_menu10_mphandicap(void) + +{ + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + has_selected_char_player1 = FALSE; + dword_CODE_bss_80069760 = 0; + has_selected_char_player2 = FALSE; + dword_CODE_bss_80069764 = 0; + has_selected_char_player3 = FALSE; + dword_CODE_bss_80069768 = 0; + has_selected_char_player4 = FALSE; + dword_CODE_bss_8006976C = 0; + load_walletbond(); + return; +} + + + +void update_menu10_mphandicap(void) + +{ + return; +} + + + +// WARNING: Instruction at (ram,0x7f013048) overlaps instruction at (ram,0x7f013044) +// + +void interface_menu10_mphandicap(void) + +{ + int iVar1; + u32 uVar2; + int iVar3; + BOOL BVar4; + char cVar5; + BOOL *pBVar6; + int *piVar7; + int iVar8; + int iVar9; + int iVar10; + + iVar1 = get_selected_num_players(); + iVar10 = 0; + setvideo_far(60.00000000); + video_related_21(menu10_aspect); + set_page_height(100.00000000,menu10_pageheight); + set_video2_settings_offset_24(0); + iVar8 = 0; + iVar9 = 0; + if (0 < iVar1) { + pBVar6 = &has_selected_char_player1; + do { + cVar5 = (char)iVar8; + if ((*pBVar6 != FALSE) && + (uVar2 = get_controller_buttons_pressed(cVar5,B_BUTTON), uVar2 != 0)) { + *pBVar6 = FALSE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + BVar4 = *pBVar6; + if (BVar4 == FALSE) { + piVar7 = (int *)((int)&dword_CODE_bss_80069760 + iVar9); + uVar2 = get_controller_buttons_pressed(cVar5,L_CBUTTONS|L_JPAD); + if ((uVar2 == 0) && + ((iVar3 = get_controller_3dstick_L_R(cVar5,-2,1), -2 < iVar3 || (*piVar7 == 0)))) + { + uVar2 = get_controller_buttons_pressed(cVar5,R_CBUTTONS|R_JPAD); + if ((uVar2 == 0) && + ((iVar3 = get_controller_3dstick_L_R(cVar5,-2,1), iVar3 < 1 || (*piVar7 == 0) + ))) { + uVar2 = get_controller_buttons_pressed(cVar5,START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar2 != 0) { + *pBVar6 = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + iVar3 = *(int *)((int)handicap_player1 + iVar9); + if (iVar3 < 10) { + *(int *)((int)handicap_player1 + iVar9) = iVar3 + 1; + } + } + } + else { + iVar3 = *(int *)((int)handicap_player1 + iVar9); + if (0 < iVar3) { + *(int *)((int)handicap_player1 + iVar9) = iVar3 + -1; + } + } + iVar3 = get_controller_3dstick_L_R(cVar5,-2,1); + if ((iVar3 == -1) || (iVar3 = get_controller_3dstick_L_R(cVar5,-2,1), iVar3 == 0)) { + *piVar7 = 1; + BVar4 = *pBVar6; + } + else { + *piVar7 = 0; + BVar4 = *pBVar6; + } + } + if (BVar4 != FALSE) { + iVar10 += 1; + } + iVar8 += 1; + iVar9 += 4; + pBVar6 = pBVar6 + 1; + } while (iVar8 != iVar1); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); + menu_control_stick_tracking(); + if (iVar10 == iVar1) { + set_menu_to_mode(MENU_MP_OPTIONS,0); + } + return; +} + + + +void constructor_menu10_mphandicap(Gfx *param_1) + +{ + undefined4 *puVar1; + u32 *DL; + uint *DL_00; + uint *puVar2; + short sVar3; + short sVar4; + uint *DL_01; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + s32 *psStack96; + BOOL *pBStack92; + uint uStack76; + uint uStack72; + int iStack68; + int aiStack64 [2]; + uint uStack56; + uint uStack52; + int iStack48; + int aiStack44 [10]; + uint uStack4; + + uStack4 = get_selected_num_players(); + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar1 = insert_generic_fillrect(puVar1); + DL = (u32 *)proc_7F00D5E8(puVar1); + microcode_constructor(DL); + DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); + if (2 < (int)uStack4) { + DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); + } + uVar8 = 0; + if (0 < (int)uStack4) { + pBStack92 = &has_selected_char_player1; + psStack96 = handicap_player1; + do { + iVar6 = 0x26; + if (uStack4 == 2) { + iVar7 = 0x15e; + if ((int)uVar8 < 1) { + iVar5 = 0x1e; + } + else { + iVar5 = 0xaa; + } + } + else { + iVar7 = 0xaf; + if ((int)uVar8 < 2) { + iVar5 = 0; + } + else { + iVar5 = 0x8c; + } + iVar5 += 0x1e; + if ((uVar8 & 1) == 0) { + iVar6 = 0; + } + else { + iVar6 = 0xaf; + } + iVar6 += 0x26; + } + DL_01 = DL_00 + 2; + *DL_00 = ((int)((float)(iVar6 + 6) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | + (int)((float)(iVar5 + 5) * 4.00000000) & 0xfffU; + DL_00[1] = ((int)((float)(iVar6 + iVar7 + -6) * 4.00000000) & 0xfffU) << 0xc | + (int)((float)(iVar5 + 0x87) * 4.00000000) & 0xfffU; + if (*pBStack92 == FALSE) { + puVar2 = (uint *)get_textptr_for_textID(0x9c56); + DL_00 = puVar2; + proc_7F0AE98C(aiStack44,&iStack48,(byte *)puVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack52 = ((iVar7 >> 1) + iVar6) - (iStack48 >> 1); + uStack56 = (iVar5 - (aiStack44[0] >> 1)) + 0x37; + microcode_constructor(DL_01); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL_01 = write_text_at_abs_coord + (DL_00,&uStack52,&uStack56,(byte *)puVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xff, + (int)sVar3,(int)sVar4,0,0); + } + puVar2 = (uint *)get_textptr_for_textID(MP_handicap_table[*psStack96].text_preset); + DL_00 = puVar2; + proc_7F0AE98C(aiStack64,&iStack68,(byte *)puVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack72 = ((iVar7 >> 1) + iVar6) - (iStack68 >> 1); + uStack76 = (iVar5 - (aiStack64[0] >> 1)) + 0x55; + microcode_constructor(DL_01); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL_00 = write_text_at_abs_coord + (DL_00,&uStack72,&uStack76,(byte *)puVar2,(int)ptrSecondFontTableLarge + ,(int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + uVar8 += 1; + pBStack92 = pBStack92 + 1; + psStack96 = psStack96 + 1; + } while (uVar8 != uStack4); + } + combiner_bayer_lod_perspective(DL_00); + return; +} + + + +void init_menu11_mpcontrol(void) + +{ + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + has_selected_char_player1 = FALSE; + dword_CODE_bss_80069760 = 0; + has_selected_char_player2 = FALSE; + dword_CODE_bss_80069764 = 0; + has_selected_char_player3 = FALSE; + dword_CODE_bss_80069768 = 0; + has_selected_char_player4 = FALSE; + dword_CODE_bss_8006976C = 0; + load_walletbond(); + return; +} + + + +void update_menu11_mpcontrols(void) + +{ + return; +} + + + +// WARNING: Instruction at (ram,0x7f013734) overlaps instruction at (ram,0x7f013730) +// + +void interface_menu11_mpcontrols(void) + +{ + int iVar1; + u32 uVar2; + int iVar3; + BOOL BVar4; + int *piVar5; + char cVar6; + int iVar7; + BOOL *pBVar8; + int *piVar9; + int iVar10; + int iStack12; + + iVar1 = get_selected_num_players(); + iStack12 = 0; + setvideo_far(60.00000000); + video_related_21((f32)menu11_aspect); + set_page_height(100.00000000,(f32)menu11_pageheight); + set_video2_settings_offset_24(0); + iVar7 = 0; + if (0 < iVar1) { + pBVar8 = &has_selected_char_player1; + iVar10 = 0; + do { + cVar6 = (char)iVar7; + if ((*pBVar8 != FALSE) && + (uVar2 = get_controller_buttons_pressed(cVar6,B_BUTTON), uVar2 != 0)) { + *pBVar8 = FALSE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + BVar4 = *pBVar8; + if (BVar4 == FALSE) { + piVar9 = (int *)((int)&dword_CODE_bss_80069760 + iVar10); + uVar2 = get_controller_buttons_pressed(cVar6,L_CBUTTONS|L_JPAD); + if ((uVar2 == 0) && + ((iVar3 = get_controller_3dstick_L_R(cVar6,-2,1), -2 < iVar3 || (*piVar9 == 0)))) + { + uVar2 = get_controller_buttons_pressed(cVar6,R_CBUTTONS|R_JPAD); + if ((uVar2 == 0) && + ((iVar3 = get_controller_3dstick_L_R(cVar6,-2,1), iVar3 < 1 || (*piVar9 == 0) + ))) { + uVar2 = get_controller_buttons_pressed(cVar6,START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar2 != 0) { + *pBVar8 = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + piVar5 = (int *)((int)controlstyle_player + iVar10); + if ((iVar1 == 2) && (iVar7 == 0)) { + iVar3 = *piVar5; + } + else { + iVar3 = *piVar5; + if (iVar3 < 4) { + if (iVar3 < 3) { + *piVar5 = iVar3 + 1; + } + goto LAB_7f013890; + } + iVar3 = *piVar5; + } + if (((iVar3 < 7) && (*piVar5 = iVar3 + 1, iVar7 == 0)) && + ((controlstyle_player[0] == 4 && ((int)controlstyle_player[1] < 4)))) { + controlstyle_player[1] = 4; + } + } + } + else { + piVar5 = (int *)((int)controlstyle_player + iVar10); + iVar3 = *piVar5; + if (0 < iVar3) { + if (iVar1 == 2) { + if (iVar7 == 1) { + if (((int)controlstyle_player[0] < 4) || (4 < iVar3)) + goto LAB_7f01376c; + } + else { + *piVar5 = iVar3 + -1; + } + } + else { +LAB_7f01376c: + *piVar5 = iVar3 + -1; + } + if ((((iVar1 == 2) && (iVar7 == 0)) && ((int)controlstyle_player[0] < 4)) && + (3 < (int)controlstyle_player[1])) { + controlstyle_player[1] = 0; + } + } + } +LAB_7f013890: + iVar3 = get_controller_3dstick_L_R(cVar6,-2,1); + if ((iVar3 == -1) || (iVar3 = get_controller_3dstick_L_R(cVar6,-2,1), iVar3 == 0)) { + *piVar9 = 1; + BVar4 = *pBVar8; + } + else { + *piVar9 = 0; + BVar4 = *pBVar8; + } + } + iVar7 += 1; + if (BVar4 != FALSE) { + iStack12 += 1; + } + iVar10 += 4; + pBVar8 = pBVar8 + 1; + } while (iVar7 != iVar1); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); + menu_control_stick_tracking(); + if (iStack12 == iVar1) { + set_menu_to_mode(MENU_MP_OPTIONS,0); + } + return; +} + + + +void constructor_menu11_mpcontrol(Gfx *param_1) + +{ + undefined4 *puVar1; + u32 *DL; + uint *DL_00; + uint *puVar2; + short sVar3; + short sVar4; + uint *DL_01; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + u32 *puStack96; + BOOL *pBStack92; + uint uStack76; + uint uStack72; + int iStack68; + int aiStack64 [2]; + uint uStack56; + uint uStack52; + int iStack48; + int aiStack44 [10]; + uint uStack4; + + uStack4 = get_selected_num_players(); + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar1 = insert_generic_fillrect(puVar1); + DL = (u32 *)proc_7F00D5E8(puVar1); + microcode_constructor(DL); + DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); + if (2 < (int)uStack4) { + DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); + } + uVar8 = 0; + if (0 < (int)uStack4) { + pBStack92 = &has_selected_char_player1; + puStack96 = controlstyle_player; + do { + iVar6 = 0x26; + if (uStack4 == 2) { + iVar7 = 0x15e; + if ((int)uVar8 < 1) { + iVar5 = 0x1e; + } + else { + iVar5 = 0xaa; + } + } + else { + iVar7 = 0xaf; + if ((int)uVar8 < 2) { + iVar5 = 0; + } + else { + iVar5 = 0x8c; + } + iVar5 += 0x1e; + if ((uVar8 & 1) == 0) { + iVar6 = 0; + } + else { + iVar6 = 0xaf; + } + iVar6 += 0x26; + } + DL_01 = DL_00 + 2; + *DL_00 = ((int)((float)(iVar6 + 6) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | + (int)((float)(iVar5 + 5) * 4.00000000) & 0xfffU; + DL_00[1] = ((int)((float)(iVar6 + iVar7 + -6) * 4.00000000) & 0xfffU) << 0xc | + (int)((float)(iVar5 + 0x87) * 4.00000000) & 0xfffU; + if (*pBStack92 == FALSE) { + puVar2 = (uint *)get_textptr_for_textID(0x9d1d); + DL_00 = puVar2; + proc_7F0AE98C(aiStack44,&iStack48,(byte *)puVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack52 = ((iVar7 >> 1) + iVar6) - (iStack48 >> 1); + uStack56 = (iVar5 - (aiStack44[0] >> 1)) + 0x37; + microcode_constructor(DL_01); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL_01 = write_text_at_abs_coord + (DL_00,&uStack52,&uStack56,(byte *)puVar2, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xff, + (int)sVar3,(int)sVar4,0,0); + } + puVar2 = (uint *)get_textptr_for_textID + (*(TEXTFILESTRINGS *)(mp_controller_table + *puStack96)); + DL_00 = puVar2; + proc_7F0AE98C(aiStack64,&iStack68,(byte *)puVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack72 = ((iVar7 >> 1) + iVar6) - (iStack68 >> 1); + uStack76 = (iVar5 - (aiStack64[0] >> 1)) + 0x55; + microcode_constructor(DL_01); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + DL_00 = write_text_at_abs_coord + (DL_00,&uStack72,&uStack76,(byte *)puVar2,(int)ptrSecondFontTableLarge + ,(int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + uVar8 += 1; + pBStack92 = pBStack92 + 1; + puStack96 = puStack96 + 1; + } while (uVar8 != uStack4); + } + combiner_bayer_lod_perspective(DL_00); + return; +} + + + +void init_menu12_mpstage(void) + +{ + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + current_mp_stage_highlighted = MP_STAGE_RANDOM; + load_walletbond(); + return; +} + + + +void update_menu12_mpstage(void) + +{ + return; +} + + + +void interface_menu12_mpstage(void) + +{ + u32 uVar2; + longlong lVar1; + int iVar3; + BOOL BVar4; + int iVar5; + int iVar6; + + setvideo_far(60.00000000); + video_related_21((f32)menu12_aspect); + set_page_height(100.00000000,(f32)menu12_pageheight); + set_video2_settings_offset_24(0); + uVar2 = get_controller_buttons_held('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar2 == 0) { + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + lVar1 = isontab3(); + if (lVar1 == 0) { + if ((int)(float)cursor_v_pos < 0xf0) { + iVar5 = 0; + if (0xa9 < (int)(float)cursor_v_pos) { + iVar5 = 1; + } + } + else { + iVar5 = 2; + } + iVar6 = (int)(float)cursor_h_pos; + if (iVar6 < 0x124) { + if (iVar6 < 0xcf) { + iVar3 = 0; + if (0x79 < iVar6) { + iVar3 = 1; + } + } + else { + iVar3 = 2; + } + } + else { + iVar3 = 3; + } + current_mp_stage_highlighted = iVar5 * 4 + iVar3; + BVar4 = check_if_mp_stage_unlocked(current_mp_stage_highlighted); + while (BVar4 == FALSE) { + current_mp_stage_highlighted += ~MP_STAGE_RANDOM; + BVar4 = check_if_mp_stage_unlocked(current_mp_stage_highlighted); + } + } + else { + tab_3_highlight = TRUE; + } + } + uVar2 = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar2 == 0) { + uVar2 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar2 != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_3_highlight == FALSE) { + if (-1 < (int)current_mp_stage_highlighted) { + tab_2_selected = TRUE; + MP_stage_selected = current_mp_stage_highlighted; + } + } + else { + tab_3_selected = TRUE; + } + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + menu_control_stick_tracking(); + if (tab_2_selected == FALSE) { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_MP_OPTIONS,0); + } + } + else { + set_menu_to_mode(MENU_MP_OPTIONS,0); + } + return; +} + + + +void constructor_menu12_mpstage(Gfx *param_1) + +{ + undefined4 *puVar1; + BOOL BVar2; + byte *pbVar3; + short sVar4; + short sVar5; + uint uVar6; + sImageTableEntry *imgcall; + longlong lVar7; + int iVar8; + MP_STAGE_SELECTED stage; + int iVar9; + int iVar10; + f32 wdivh; + f32 wdivh_00; + f32 extraout_f12; + f32 wdivh_01; + f32 wdivh_02; + Gfx *pGStackX0; + int iStack168; + int iStack156; + int iStack132; + undefined4 uStack104; + undefined4 uStack100; + float fStack96; + float fStack92; + undefined4 uStack64; + undefined4 uStack60; + int iStack56; + float fStack52; + int iStack20; + int iStack16; + int iStack12; + int aiStack8 [2]; + + pGStackX0 = param_1; + pGStackX0 = (Gfx *)set_setfillcolor((undefined4 *)param_1,0,0,0); + pGStackX0 = (Gfx *)insert_generic_fillrect((undefined4 *)pGStackX0); + pGStackX0 = (Gfx *)proc_7F00D5E8(pGStackX0); + microcode_constructor((u32 *)pGStackX0); + lVar7 = 0x6c; + uVar6 = 0xa0; + do { + pGStackX0 = (Gfx *)microcode_constructor_related_to_menus + ((undefined4 *)pGStackX0,0x25,lVar7,0x185,uVar6,0x101010ff); + uVar6 += 0x46; + lVar7 = (longlong)((int)lVar7 + 0x46); + } while (uVar6 != 0x172); + puVar1 = combiner_bayer_lod_perspective((undefined4 *)pGStackX0); + lVar7 = (longlong)(int)puVar1; + pGStackX0 = (Gfx *)(puVar1 + 2); + *puVar1 = 0xba000c02; + puVar1[1] = 0; + imgcall = mainfolderimages; + append_image_to_DL((uint **)register0x000000ec,mainfolderimages + 5,1,0,2); + wdivh = 4.00000000; + iStack56 = 0x43550000; + fStack52 = 104.00000000; + iVar8 = 0; + uStack64 = 0x43300000; + uStack60 = 0x40800000; + do { + display_image_at_on_screen_coord + ((int *)register0x000000ec,&iStack56,wdivh,(int)&uStack64,0x2f0,0x12,0,0,1,0x6b, + 0x67,0x53,0xff,(uint)(imgcall[5].level != '\0')); + fStack52 = fStack52 + 60.00000000; + display_image_at_on_screen_coord + ((int *)register0x000000ec,&iStack56,wdivh_00,(int)&uStack64,0x2f0,0x12,0,0,1,0x6b + ,0x67,0x53,0xff,(uint)(imgcall[5].level != '\0')); + iVar8 += 1; + fStack52 = (fStack52 - 60.00000000) + 70.00000000; + wdivh = extraout_f12; + } while (iVar8 != 3); + stage = MP_STAGE_RANDOM; + iStack132 = 0; + fStack92 = 134.00000000; + uStack104 = 0x42080000; + uStack100 = 0x41b00000; + do { + iVar8 = 0; + fStack96 = 86.00000000; + do { + if ((int)stage < 0xc) { + imgcall = mpstageselimages + multi_stage_setups[stage].photo; + append_image_to_DL((uint **)register0x000000ec,imgcall,1,0,2); + if (stage == current_mp_stage_highlighted) { + ((u32 *)pGStackX0)[1] = 0x100000; + *(u32 *)pGStackX0 = 0xba001402; + ((u32 *)pGStackX0)[3] = 0xffffff0a; + ((u32 *)pGStackX0)[2] = 0xf8000000; + ((u32 *)pGStackX0)[5] = 0xc4112048; + ((u32 *)pGStackX0)[4] = 0xb900031d; + pGStackX0 = (Gfx *)((u32 *)pGStackX0 + 6); + display_image_at_on_screen_coord + ((int *)register0x000000ec,(int *)&fStack96,wdivh_01,(int)&uStack104, + 0x44,0x2c,0,0,1,0xff,0xff,0xff,0xff,(uint)(imgcall->level != '\0')); + } + else { + BVar2 = check_if_mp_stage_unlocked(stage); + lVar7 = (longlong)(int)BVar2; + if (lVar7 == 0) { + display_image_at_on_screen_coord + ((int *)register0x000000ec,(int *)&fStack96,wdivh_02, + (int)&uStack104,0x44,0x2c,0,0,1,0xf,0xf,0xf,0xff, + (uint)(imgcall->level != '\0')); + } + else { + display_image_at_on_screen_coord + ((int *)register0x000000ec,(int *)&fStack96,wdivh_02, + (int)&uStack104,0x44,0x2c,0,0,1,0x6e,0x6e,0x6e,0xff, + (uint)(imgcall->level != '\0')); + } + } + } + iVar8 += 1; + fStack96 = fStack96 + 85.00000000; + stage += MP_STAGE_TEMPLE; + } while (iVar8 != 4); + fStack92 = fStack92 + 70.00000000; + iStack132 += 1; + } while (iStack132 != 3); + microcode_constructor((u32 *)pGStackX0); + pGStackX0 = (Gfx *)(u32 *)lVar7; + stage = MP_STAGE_RANDOM; + iStack168 = 0x97; + iStack156 = 0; + do { + iVar8 = 0x56; + iVar10 = 0; + do { + if ((int)stage < 0xc) { + BVar2 = check_if_mp_stage_unlocked(stage); + lVar7 = (longlong)(int)BVar2; + if (lVar7 != 0) { + uVar6 = 0x96969600; + if (stage == current_mp_stage_highlighted) { + uVar6 = 0xffffff00; + } + pbVar3 = get_textptr_for_textID + (multi_stage_setups[stage].select_screen_text_preset); + proc_7F0AE98C(&iStack16,&iStack20,pbVar3,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + iVar9 = iVar8 + -0x1f; + iStack12 = iStack168 - iStack16; + aiStack8[0] = iVar9; + pGStackX0 = (Gfx *)microcode_constructor_related_to_menus + ((undefined4 *)pGStackX0,(longlong)iVar9, + (longlong)iStack12,(longlong)(iVar9 + iStack20), + iStack12 + iStack16,0); + pbVar3 = get_textptr_for_textID + (multi_stage_setups[stage].select_screen_text_preset); + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + puVar1 = (undefined4 *)(int)sVar5; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack8,&iStack12,pbVar3, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + uVar6 | 0xff,(int)sVar4,(int)sVar5,0,0); + iStack12 = iStack168 - iStack16; + pGStackX0 = (Gfx *)puVar1; + aiStack8[0] = iVar9; + pbVar3 = get_textptr_for_textID + (multi_stage_setups[stage].select_screen_text_preset); + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + lVar7 = (longlong)sVar5; + en_text_write_stuff((undefined4 *)pGStackX0,aiStack8,&iStack12,pbVar3, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + uVar6 | 100,(int)sVar4,(int)sVar5,0,0); + pGStackX0 = (Gfx *)(u32 *)lVar7; + } + } + puVar1 = (undefined4 *)lVar7; + iVar10 += 1; + iVar8 += 0x55; + stage += MP_STAGE_TEMPLE; + } while (iVar10 != 4); + iStack156 += 1; + iStack168 += 0x46; + } while (iStack156 != 3); + microcode_constructor((u32 *)pGStackX0); + pGStackX0 = (Gfx *)puVar1; + pGStackX0 = (Gfx *)add_tab3_previous(puVar1); + load_draw_selected_icon_folder_select(pGStackX0); + return; +} + + + +MPSCENARIOS get_scenario(void) + +{ + return scenario; +} + + + +void init_menu13_mpscenariosel(void) + +{ + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + load_walletbond(); + return; +} + + + +void update_menu13_mpscenario(void) + +{ + return; +} + + + +void interface_menu13_mpscenario(void) + +{ + bool bVar1; + u32 uVar3; + longlong lVar2; + int iVar4; + int scenarioid; + int iVar5; + int iVar6; + + bVar1 = false; + setvideo_far(60.00000000); + video_related_21((f32)menu13_aspect); + set_page_height(100.00000000,(f32)menu13_pageheight); + set_video2_settings_offset_24(0); + uVar3 = get_controller_buttons_held('\0',Z_TRIG|A_BUTTON); + scenarioid = DAT_80069780; + if (uVar3 == 0) { + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + lVar2 = isontab3(); + if (lVar2 == 0) { + DAT_80069780 = 1; + iVar5 = 7; + iVar6 = 0x11d; + do { + if ((iVar6 <= (int)(float)cursor_v_pos) && + (scenarioid = get_selected_num_players(), + (longlong)(ulonglong)(byte)mp_stage_playercounts[iVar5].min <= + (longlong)scenarioid)) { + iVar4 = get_selected_num_players(); + scenarioid = iVar5 + 1; + if ((longlong)iVar4 <= + (longlong)(ulonglong)(byte)mp_stage_playercounts[iVar5].max) break; + } + iVar5 += -1; + iVar6 += -0x16; + scenarioid = DAT_80069780; + } while (iVar5 != 0); + } + else { + tab_3_highlight = TRUE; + DAT_80069780 = 0; + scenarioid = DAT_80069780; + } + } + DAT_80069780 = scenarioid; + uVar3 = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar3 == 0) { + uVar3 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar3 != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_3_highlight == FALSE) { + scenarioid = DAT_80069780 + -1; + if (((scenarioid == 5) || (scenarioid == 6)) || (scenarioid == 7)) { + reset_mp_options_for_scenario(scenarioid); + bVar1 = true; + } + else { + reset_mp_options_for_scenario(scenarioid); + tab_3_selected = TRUE; + } + } + else { + tab_3_selected = TRUE; + } + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); + menu_control_stick_tracking(); + if (bVar1) { + set_menu_to_mode(MENU_MP_TEAMS,0); + } + else { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_MP_OPTIONS,0); + } + } + return; +} + + + +void constructor_menu13_mpscenario(Gfx *param_1) + +{ + undefined4 *puVar1; + byte *pbVar2; + short sVar4; + short sVar5; + uint *DL; + int iVar3; + mp_stage_playercount *pmVar6; + int iVar7; + uint uVar8; + uint uVar9; + int iStack32; + int aiStack28 [2]; + uint uStack20; + uint auStack16 [4]; + + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar1 = insert_generic_fillrect(puVar1); + DL = (uint *)proc_7F00D5E8(puVar1); + microcode_constructor(DL); + pbVar2 = get_textptr_for_textID(0x9c57); + auStack16[0] = 0x37; + uStack20 = 0x66; + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,auStack16,&uStack20,pbVar2,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar4,(int)sVar5,0,0); + pmVar6 = mp_stage_playercounts; + iVar7 = 0; + uVar9 = 0x83; + do { + uVar8 = 0xff; + iVar3 = get_selected_num_players(); + if ((longlong)(ulonglong)(byte)pmVar6->max < (longlong)iVar3) { + uVar8 = 0x70; + } + else { + iVar3 = get_selected_num_players(); + if ((longlong)iVar3 < (longlong)(ulonglong)(byte)pmVar6->min) { + uVar8 = 0x70; + } + } + pbVar2 = get_textptr_for_textID(pmVar6->stage); + proc_7F0AE98C(aiStack28,&iStack32,pbVar2,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + auStack16[0] = 0x39; + uStack20 = uVar9; + if (iVar7 + 1 == DAT_80069780) { + DL = microcode_constructor_related_to_menus + (DL,0x37,(longlong)(int)(uVar9 - 1),(longlong)(iStack32 + 0x3c), + uVar9 + 0xe,0x32); + } + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,auStack16,&uStack20,pbVar2,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar8,(int)sVar4,(int)sVar5,0,0); + iVar7 += 1; + pmVar6 = pmVar6 + 1; + uVar9 += 0x16; + } while (iVar7 != 8); + DL = add_tab3_previous(DL); + load_draw_selected_icon_folder_select(DL); + return; +} + + + +ulonglong get_players_team_or_scenario_item_flag(int player) + +{ + return (ulonglong)(byte)player1_playerdata[player].have_token_or_goldengun; +} + + + +void set_players_team_or_scenario_item_flag(int player,char flag) + +{ + player1_playerdata[player].have_token_or_goldengun = flag; + return; +} + + + +void init_menu14_mpteamsel(void) + +{ + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + if (scenario == SCENARIO_2v1) { + teamsize = 2; + } + else { + teamsize = 3; + } + dword_8002B560 = 0; + load_walletbond(); + return; +} + + + +void update_menu14_mpteams(void) + +{ + return; +} + + + +// WARNING: Instruction at (ram,0x7f014fc4) overlaps instruction at (ram,0x7f014fc0) +// + +ulonglong interface_menu14_mpteams(void) + +{ + u32 uVar2; + int iVar3; + ulonglong uVar1; + char flag; + uint player; + + setvideo_far(60.00000000); + video_related_21((f32)menu14_aspect); + set_page_height(100.00000000,(f32)menu14_pageheight); + set_video2_settings_offset_24(0); + dword_8002B560 = (dword_8002B560 + 1) % 0x14; + uVar2 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_JPAD); + if ((uVar2 == 0) && (iVar3 = get_controller_3dstick_L_R('\0',-2,1), iVar3 < 1)) { + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (iVar3 = get_controller_3dstick_U_D('\0',-2,1), iVar3 < 1)) { + uVar2 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_JPAD); + if ((uVar2 == 0) && (iVar3 = get_controller_3dstick_L_R('\0',-2,1), -2 < iVar3)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (iVar3 = get_controller_3dstick_U_D('\0',-2,1), iVar3 < -1)) { + if (scenario == SCENARIO_2v1) { + if ((teamsize & 2) == 0) { + teamsize = 2; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if ((teamsize & 2) == 0) { + teamsize = teamsize + 2; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + } + } + else { + if (scenario == SCENARIO_2v2) { + if ((teamsize & 1) != 0) { + teamsize = 2; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if ((teamsize & 1) != 0) { + teamsize = teamsize - 1; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + } + } + else { + if (scenario == SCENARIO_2v2) { + if ((teamsize & 2) != 0) { + teamsize = 1; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if ((teamsize & 2) != 0) { + teamsize = teamsize - 2; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + } + } + else { + if (scenario == SCENARIO_2v1) { + if ((teamsize & 1) == 0) { + teamsize = 1; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if ((teamsize & 1) == 0) { + teamsize = teamsize + 1; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); + menu_control_stick_tracking(); + uVar2 = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + uVar1 = SEXT48((int)uVar2); + player = 0; + if (uVar1 != 0) { + do { + if (scenario == SCENARIO_2v2) { + if ((player == 0) || (flag = '\x01', player == teamsize)) { + flag = '\0'; + } + set_players_team_or_scenario_item_flag(player,flag); + } + else { + set_players_team_or_scenario_item_flag(player,player == teamsize); + } + player += 1; + } while (player != 4); + set_menu_to_mode(MENU_MP_OPTIONS,0); + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + return uVar1; +} + + + +void constructor_menu14_mpteams(Gfx *param_1) + +{ + bool bVar1; + undefined4 *puVar2; + u32 *DL; + uint *DL_00; + int iVar3; + int iVar4; + byte *pbVar5; + short sVar6; + short sVar7; + int iVar8; + uint uVar9; + uint uVar10; + uint *puVar11; + uint uStack76; + uint uStack72; + int iStack68; + int aiStack64 [2]; + uint uStack56; + uint uStack52; + int iStack48; + int aiStack44 [4]; + int iStack28; + uint uStack4; + + uStack4 = get_selected_num_players(); + puVar2 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar2 = insert_generic_fillrect(puVar2); + DL = (u32 *)proc_7F00D5E8(puVar2); + microcode_constructor(DL); + DL_00 = microcode_constructor_related_to_menus(DL,0x26,0xa9,0x184,0xab,0x90); + if (2 < (int)uStack4) { + DL_00 = microcode_constructor_related_to_menus(DL_00,0xd4,0x1e,0xd6,0x136,0x80); + } + uVar10 = 0; + if (0 < (int)uStack4) { + bVar1 = true; + while( true ) { + if (bVar1) { + iVar3 = 0; + } + else { + iVar3 = 0x8c; + } + if ((uVar10 & 1) == 0) { + iVar4 = 0; + } + else { + iVar4 = 0xaf; + } + iVar8 = iVar4 + 0x7d; + puVar11 = DL_00 + 2; + *DL_00 = ((int)((float)(iVar4 + 0x2c) * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | + (int)((float)(iVar3 + 0x23U) * 4.00000000) & 0xfffU; + DL_00[1] = ((int)((float)(iVar4 + 0xcf) * 4.00000000) & 0xfffU) << 0xc | + (int)((float)(iVar3 + 0xa5) * 4.00000000) & 0xfffU; + DL_00 = puVar11; + iStack28 = iVar8; + if (uVar10 == 0) { + pbVar5 = get_textptr_for_textID(0x9c58); + proc_7F0AE98C(aiStack44,&iStack48,pbVar5,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack52 = iVar8 - (iStack48 >> 1); + uStack56 = iVar3 + 0x23U; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + DL_00 = write_text_at_abs_coord + (puVar11,&uStack52,&uStack56,pbVar5,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar6,(int)sVar7,0,0); + } + if (scenario == SCENARIO_2v2) { + bVar1 = uVar10 == 0 || uVar10 == teamsize; + } + else { + bVar1 = uVar10 != teamsize; + } + if (bVar1) { + pbVar5 = get_textptr_for_textID(0x9c59); + } + else { + pbVar5 = get_textptr_for_textID(0x9c5a); + } + if (bVar1) { + uVar9 = 0xff0000ff; + } + else { + uVar9 = 0xffff; + } + proc_7F0AE98C(aiStack64,&iStack68,pbVar5,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack76 = (iVar3 - (aiStack64[0] >> 1)) + 100; + uStack72 = iStack28 - (iStack68 >> 1); + if ((uVar10 != teamsize) || ((uVar10 == teamsize && (dword_8002B560 < 10)))) { + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + DL_00 = write_text_at_abs_coord + (DL_00,&uStack72,&uStack76,pbVar5,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar9,(int)sVar6,(int)sVar7,0,0); + } + uVar10 += 1; + if (uVar10 == uStack4) break; + bVar1 = (int)uVar10 < 2; + } + } + combiner_bayer_lod_perspective(DL_00); + return; +} + + + +void set_briefing_page(WATCH_BRIEFING_PAGE page) + +{ + current_menu_briefing_page = page; + return; +} + + + +void load_briefing_text_for_stage(void) + +{ + Gfx *pGVar1; + undefined8 lnameID; + int iVar2; + undefined *puVar3; + + pGVar1 = ptr_logo_and_walletbond_DL; + ptrbriefingdata = + _load_resource_named_to_buffer + ((byte *)mission_folder_setup_entries[briefingpage].briefing_name_ptr,1, + (undefined *)(ptr_logo_and_walletbond_DL + 0x1400),0x200); + lnameID = get_textbank_number_for_stagenum(mission_folder_setup_entries[briefingpage].stage_id); + load_briefing_text_bank((int)lnameID,(undefined *)(pGVar1 + 0x1440),0x6de00); + iVar2 = 0; + puVar3 = ptrbriefingdata; + do { + iVar2 += 4; + if (*(short *)(puVar3 + 8) == 0) { + return; + } + puVar3 = puVar3 + 4; + } while (iVar2 != 0x28); + return; +} + + + +void init_menu0A_briefing(void) + +{ + tab_2_selected = FALSE; + tab_3_selected = FALSE; + final_menu_briefing_page = BRIEFING_OVERVIEW|BRIEFING_MONEYPENNY; + set_briefing_page(BRIEFING_TITLE); + load_walletbond(); + load_briefing_text_for_stage(); + return; +} + + + +void update_menu0A_briefing(void) + +{ + undefined8 uVar1; + + uVar1 = get_textbank_number_for_stagenum(mission_folder_setup_entries[briefingpage].stage_id); + blank_text_bank((int)uVar1); + if (-1 < (int)menu_update) { + proc_7F00B990(); + } + return; +} + + + +void interface_menu0A_briefing(void) + +{ + longlong lVar1; + u32 uVar2; + + setvideo_far(60.00000000); + video_related_21((f32)menu0A_aspect); + set_page_height(100.00000000,(f32)menu0A_pageheight); + set_video2_settings_offset_24(0); + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + lVar1 = isontab3(); + if (lVar1 == 0) { + lVar1 = isontab2(); + if ((lVar1 == 0) || + ((int)(final_menu_briefing_page + ~BRIEFING_TITLE) <= (int)current_menu_briefing_page)) { + lVar1 = isontab1(); + if (lVar1 == 0) { + if ((int)current_menu_briefing_page < + (int)(final_menu_briefing_page + ~BRIEFING_TITLE)) { + tab_2_highlight = TRUE; + } + else { + tab_1_highlight = TRUE; + } + } + else { + tab_1_highlight = TRUE; + } + } + else { + tab_2_highlight = TRUE; + } + } + else { + tab_3_highlight = TRUE; + } + uVar2 = get_controller_buttons_pressed('\0',START_BUTTON); + if (uVar2 == 0) { + uVar2 = get_controller_buttons_pressed('\0',Z_TRIG|A_BUTTON); + if (uVar2 == 0) { + uVar2 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar2 != 0) { + if ((int)current_menu_briefing_page < 1) { + tab_3_selected = TRUE; + } + else { + set_briefing_page(current_menu_briefing_page + ~BRIEFING_TITLE); + } + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_2_highlight == FALSE) { + if (tab_3_highlight == FALSE) { + if (tab_1_highlight != FALSE) { + tab_2_selected = TRUE; + } + } + else { + if ((int)current_menu_briefing_page < 1) { + tab_3_selected = TRUE; + } + else { + set_briefing_page(current_menu_briefing_page + ~BRIEFING_TITLE); + } + } + } + else { + set_briefing_page(current_menu_briefing_page + BRIEFING_OVERVIEW); + } + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + tab_2_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance + ((int)ptr_folder_object_instance,0xc, + (uint)(current_menu_briefing_page == BRIEFING_TITLE)); + set_item_visibility_in_objinstance + ((int)ptr_folder_object_instance, + mission_folder_setup_entries[briefingpage].mission_num + 0x16, + (uint)(current_menu_briefing_page == BRIEFING_TITLE)); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); + menu_control_stick_tracking(); + if (tab_2_selected == FALSE) { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_MISSION_SELECT,0); + set_cursor_to_stage_solo + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + } + } + else { + set_menu_to_mode(MENU_RUN_STAGE,1); + } + return; +} + + + +uint * print_objectives_and_status_to_menu(uint *param_1,int param_2,byte *param_3,int param_4) + +{ + TEXTFILESTRINGS id; + byte *text; + short sVar3; + short sVar4; + uint *puVar1; + int iVar2; + int iVar5; + uint uVar6; + int iVar7; + uint uStack24; + uint uStack20; + int iStack16; + int iStack12; + int iStack8; + int iStack4; + + iStack8 = 0; + iVar7 = 0; + iStack4 = 0; + iVar5 = 0; + do { + id = *(TEXTFILESTRINGS *)(ptrbriefingdata + iVar5 + 8); + if (id == 0) { + iStack4 += 1; + } + else { + if ((longlong)selected_difficulty < + (longlong)(ulonglong)*(ushort *)(ptrbriefingdata + iVar5 + 10)) { + iStack4 += 1; + } + else { + text = get_textptr_for_textID(id); + textpointer_load_parse_something((char *)param_3,"a.\n"); + *param_3 = *param_3 + (char)iStack8; + iStack12 = 0; + iStack16 = 0; + proc_7F0AE98C(&iStack12,&iStack16,param_3,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack20 = 0x37; + uStack24 = iStack12 * iVar7 + param_2; + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + puVar1 = write_text_at_abs_coord + (param_1,&uStack20,&uStack24,param_3,(int)ptrSecondFontTableLarge + ,(int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + uStack20 = 0x4b; + uStack24 = iStack12 * iVar7 + param_2; + if (param_4 == 0) { + find_width_word_in_string + (0x140,text,param_3,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge); + } + else { + setTextWordWrap(2); + find_width_word_in_string + (0xdc,text,param_3,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge); + setTextWordWrap(0); + } + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + param_1 = write_text_at_abs_coord + (puVar1,&uStack20,&uStack24,param_3,(int)ptrSecondFontTableLarge + ,(int)ptrFirstFontTableLarge,0xff,(int)sVar3,(int)sVar4,0,0); + if (param_4 != 0) { + iVar2 = get_status_of_objective(iStack4); + if ((iVar2 == 0) || (iVar2 != 1)) { + uVar6 = 0x780000ff; + text = get_textptr_for_textID(0x9c5c); + } + else { + uVar6 = 0xff; + text = get_textptr_for_textID(0x9c5b); + } + uStack20 = 0x136; + uStack24 = iStack12 * iVar7 + param_2; + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + param_1 = write_text_at_abs_coord + (param_1,&uStack20,&uStack24,text, + (int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge, + uVar6,(int)sVar3,(int)sVar4,0,0); + } + iVar2 = proc_7F0AC0E8((char *)param_3); + iVar7 += iVar2; + iStack8 += 1; + iStack4 += 1; + } + } + iVar5 += 4; + } while (iStack4 != 10); + return param_1; +} + + + +void constructor_menu0A_briefing(Gfx *param_1) + +{ + undefined4 *puVar1; + uint *DL; + short sVar2; + short sVar3; + undefined4 *puVar4; + undefined4 *puVar5; + undefined4 auStack3012 [750]; + uint uStack12; + uint uStack8; + byte *pbStack4; + + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar1 = insert_generic_fillrect(puVar1); + DL = (uint *)proc_7F00D5E8(puVar1); + puVar1 = (undefined4 *)array_80050C54; + puVar4 = auStack3012; + do { + puVar5 = puVar1 + 3; + *puVar4 = *puVar1; + puVar4[1] = puVar1[1]; + puVar4[2] = puVar1[2]; + puVar1 = puVar5; + puVar4 = puVar4 + 3; + } while (puVar5 != (undefined4 *)"%02d:%02d"); + microcode_constructor(DL); + DL = print_current_solo_briefing_stage_name(DL,(byte *)auStack3012); + switch(current_menu_briefing_page) { + case BRIEFING_TITLE: + pbStack4 = get_textptr_for_textID(0x9c5d); + break; + case BRIEFING_OVERVIEW: + pbStack4 = get_textptr_for_textID(0x9c5e); + break; + case BRIEFING_M: + pbStack4 = get_textptr_for_textID(0x9c5f); + break; + case BRIEFING_Q: + pbStack4 = get_textptr_for_textID(0x9c60); + break; + case BRIEFING_MONEYPENNY: + pbStack4 = get_textptr_for_textID(0x9c61); + } + uStack8 = 0x37; + uStack12 = 0x8f; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,pbStack4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + if (current_menu_briefing_page == BRIEFING_TITLE) { + DL = print_objectives_and_status_to_menu(DL,0xa7,(byte *)auStack3012,0); + } + else { + if (current_menu_briefing_page == BRIEFING_OVERVIEW) { + pbStack4 = get_textptr_for_textID(*(TEXTFILESTRINGS *)ptrbriefingdata); + } + else { + if (current_menu_briefing_page == BRIEFING_M) { + pbStack4 = get_textptr_for_textID(*(TEXTFILESTRINGS *)(ptrbriefingdata + 2)); + } + else { + if (current_menu_briefing_page == BRIEFING_Q) { + pbStack4 = get_textptr_for_textID(*(TEXTFILESTRINGS *)(ptrbriefingdata + 4)); + } + else { + if (current_menu_briefing_page == BRIEFING_MONEYPENNY) { + pbStack4 = get_textptr_for_textID(*(TEXTFILESTRINGS *)(ptrbriefingdata + 6)) + ; + } + } + } + } + uStack8 = 0x37; + uStack12 = 0xa7; + find_width_word_in_string + (0x140,pbStack4,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge); + setTextOverlapCorrection(8); + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack8,&uStack12,(byte *)auStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar2,(int)sVar3,0,0); + setTextOverlapCorrection(0xffffffff); + } + DL = add_tab1_start(DL); + DL = add_tab3_previous(DL); + if ((int)current_menu_briefing_page < 4) { + DL = add_tab2_next(DL); + } + load_draw_selected_icon_folder_select(DL); + return; +} + + + +void init_menu0B_runstage(void) + +{ + set_loaded_stage(selected_stage); + set_difficulty(selected_difficulty); + return; +} + + + +void init_menu0C_missionfailed(void) + +{ + tab_2_selected = FALSE; + tab_3_selected = FALSE; + load_walletbond(); + load_briefing_text_for_stage(); + set_cursor_pos_tab2(); + if (maybe_is_in_menu != FALSE) { + music_related_38(0x7fff); + musicTrack1Vol(0x7fff); + music1_playing = 0; + musicTrack1Play(M_FOLDERS); + maybe_is_in_menu = FALSE; + } + return; +} + + + +void update_menu0C_missionfailed(void) + +{ + return; +} + + + +void interface_menu0C_missionfailed(void) + +{ + longlong lVar1; + u32 uVar2; + + setvideo_far(60.00000000); + video_related_21((f32)menu0C_aspect); + set_page_height(100.00000000,(f32)menu0C_pageheight); + set_video2_settings_offset_24(0); + tab_2_highlight = FALSE; + tab_3_highlight = FALSE; + lVar1 = isontab3(); + if (lVar1 == 0) { + lVar1 = isontab2(); + if (lVar1 == 0) { + tab_2_highlight = TRUE; + } + else { + tab_2_highlight = TRUE; + } + } + else { + tab_3_highlight = TRUE; + } + uVar2 = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar2 == 0) { + uVar2 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar2 != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_3_highlight == FALSE) { + if (tab_2_highlight != FALSE) { + tab_2_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); + menu_control_stick_tracking(); + if (tab_2_selected == FALSE) { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_MISSION_SELECT,0); + set_cursor_to_stage_solo + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + } + } + else { + set_menu_to_mode(MENU_MISSION_COMPLETE,0); + } + return; +} + + + +undefined8 proc_7F01631C(void) + +{ + DIFFICULTY DVar1; + int iVar2; + s32 objective; + int iVar3; + + if (mission_failed_or_aborted == FALSE) { + objective = 0; + iVar3 = 0; + if (mission_kia == FALSE) { + while (((*(short *)(ptrbriefingdata + iVar3 + 8) == 0 || + (DVar1 = get_current_difficulty(), + (longlong)DVar1 < (longlong)(ulonglong)*(ushort *)(ptrbriefingdata + iVar3 + 10) + )) || (iVar2 = get_status_of_objective(objective), iVar2 == 1))) { + objective += 1; + iVar3 += 4; + if (objective == 10) { + return 1; + } + } + return 0; + } + } + return 0; +} + + + +void constructor_menu0C_missionfailed(Gfx *param_1) + +{ + undefined4 *puVar2; + uint *DL; + byte *pbVar3; + short sVar4; + short sVar5; + longlong lVar1; + int iStack3024; + int iStack3020; + uint uStack3016; + byte abStack3008 [3000]; + uint uStack8; + uint uStack4; + + puVar2 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar2 = insert_generic_fillrect(puVar2); + DL = (uint *)proc_7F00D5E8(puVar2); + microcode_constructor(DL); + DL = print_current_solo_briefing_stage_name(DL,abStack3008); + pbVar3 = get_textptr_for_textID(0x9c62); + uStack4 = 0x37; + uStack8 = 0x8f; + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbVar3,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar4,(int)sVar5,0,0); + pbVar3 = get_textptr_for_textID(0x9c63); + iStack3024 = 0; + iStack3020 = 0; + proc_7F0AE98C(&iStack3020,&iStack3024,pbVar3,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + uStack4 = 0x37; + uStack8 = 0xa7; + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbVar3,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar4,(int)sVar5,0,0); + if (mission_kia == FALSE) { + if (mission_failed_or_aborted == FALSE) { + lVar1 = proc_7F01631C(); + if (lVar1 == 0) { + pbVar3 = get_textptr_for_textID(0x9c67); + uStack3016 = 0x780000ff; + } + else { + pbVar3 = get_textptr_for_textID(0x9c66); + uStack3016 = 0xff; + } + } + else { + pbVar3 = get_textptr_for_textID(0x9c65); + uStack3016 = 0x780000ff; + } + } + else { + pbVar3 = get_textptr_for_textID(0x9c64); + uStack3016 = 0x780000ff; + } + uStack8 = 0xa7; + uStack4 = iStack3024 + 0x37; + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbVar3,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uStack3016,(int)sVar4,(int)sVar5,0,0); + DL = print_objectives_and_status_to_menu(DL,0xbf,abStack3008,1); + DL = add_tab2_next(DL); + DL = add_tab3_previous(DL); + load_draw_selected_icon_folder_select(DL); + return; +} + + + +void init_menu0D_missioncomplete(void) + +{ + tab_2_selected = FALSE; + tab_3_selected = FALSE; + load_walletbond(); + load_briefing_text_for_stage(); + if (newcheatunlocked != 0) { + play_sfx_a1(ptr_sfx_buf,0x102,NULL); + } + return; +} + + + +void update_menu0D_missioncomplete(void) + +{ + return; +} + + + +void interface_menu0D_missioncomplete(void) + +{ + longlong lVar1; + u32 uVar2; + mission_folder_setup *pmVar3; + mission_folder_setup *pmVar4; + int entry; + short sVar5; + int iVar6; + + setvideo_far(60.00000000); + video_related_21((f32)menu0D_aspect); + set_page_height(100.00000000,(f32)menu0D_pageheight); + set_video2_settings_offset_24(0); + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + lVar1 = isontab3(); + if (lVar1 == 0) { + lVar1 = isontab2(); + if (lVar1 == 0) { + tab_2_highlight = TRUE; + } + else { + tab_2_highlight = TRUE; + } + } + else { + tab_3_highlight = TRUE; + } + uVar2 = get_controller_buttons_pressed('\0',START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar2 == 0) { + uVar2 = get_controller_buttons_pressed('\0',B_BUTTON); + if (uVar2 != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_2_highlight == FALSE) { + if (tab_3_highlight != FALSE) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + tab_2_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,1,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,3,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); + menu_control_stick_tracking(); + if (tab_2_selected == FALSE) { + if (tab_3_selected != FALSE) { + set_menu_to_mode(MENU_MISSION_SELECT,0); + set_cursor_to_stage_solo + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + } + } + else { + lVar1 = proc_7F01631C(); + if ((lVar1 == 0) || (append_cheat_sp != FALSE)) { + set_menu_to_mode(MENU_BRIEFING,0); + } + else { + if (mission_folder_setup_entries[briefingpage].mission_num == 0x11) { + set_menu_to_mode(MENU_RUN_STAGE,1); + selected_stage = LEVELID_CUBA; + } + else { + entry = briefingpage + 1; + if (mission_folder_setup_entries[briefingpage].mission_num < 0x12) { + sVar5 = mission_folder_setup_entries[entry].folder_text_preset; + pmVar4 = mission_folder_setup_entries + entry; + if (sVar5 != 0) { + iVar6 = mission_folder_setup_entries[entry].stage_id; + pmVar3 = mission_folder_setup_entries + entry; + while (pmVar4 = pmVar3, iVar6 < 0) { + sVar5 = pmVar3[1].folder_text_preset; + entry += 1; + pmVar4 = pmVar3 + 1; + if (sVar5 == 0) break; + iVar6 = pmVar3[1].stage_id; + pmVar3 = pmVar4; + } + } + if (sVar5 != 0) { + selected_stage = pmVar4->stage_id; + briefingpage = entry; + } + set_menu_to_mode(MENU_BRIEFING,0); + } + else { + set_menu_to_mode(MENU_MISSION_SELECT,0); + set_cursor_to_stage_solo + ((longlong)mission_folder_setup_entries[briefingpage].mission_num); + } + } + } + } + return; +} + + + +void constructor_menu0D_missioncomplete(Gfx *param_1) + +{ + int iVar1; + undefined4 *puVar3; + int iVar4; + undefined4 uVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + uint *DL; + short sVar16; + short sVar17; + save_file *eepromfile; + ulonglong uVar2; + u8 *puVar13; + char *pcVar14; + size_t sVar15; + DIFFICULTY DVar18; + int iVar19; + int iVar20; + float fVar21; + float fVar22; + undefined4 in_f5; + int iStack3020; + int iStack3016; + byte *pbStack3012; + byte abStack3008 [3000]; + uint uStack8; + uint uStack4; + + puVar3 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar3 = insert_generic_fillrect(puVar3); + DL = (uint *)proc_7F00D5E8(puVar3); + microcode_constructor(DL); + iVar4 = getMissiontime(); + uVar5 = get_curplay_killcount(); + iVar6 = get_curplayer_shot_register(0); + iVar7 = get_curplayer_shot_register(1); + iVar8 = get_curplayer_shot_register(2); + iVar9 = get_curplayer_shot_register(3); + iVar10 = get_curplayer_shot_register(4); + iVar11 = get_curplayer_shot_register(5); + iVar12 = get_curplayer_shot_register(6); + iVar19 = iVar7 + iVar8 + iVar9 + iVar10 + iVar11; + iVar12 = iVar19 + iVar12; + if (iVar19 < 1) { + iVar19 = 1; + } + DL = print_current_solo_briefing_stage_name(DL,abStack3008); + pbStack3012 = get_textptr_for_textID(0x9c68); + uStack4 = 0x37; + uStack8 = 0x8f; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + iStack3020 = 0; + iStack3016 = 0; + proc_7F0AE98C(&iStack3016,&iStack3020,pbStack3012,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + pbStack3012 = get_textptr_for_textID(0x9c69); + uStack4 = 0x37; + uStack8 = 0xa7; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + eepromfile = getEEPROMforFoldernum(selected_folder_num); + uVar2 = get_eeprom_stage_complete_time_for_difficulty + (eepromfile,mission_folder_setup_entries[briefingpage].mission_num, + selected_difficulty); + uVar2._4_4_ = (int)uVar2; + if ((uVar2 == 0) || (0x3fe < (longlong)uVar2)) { + uVar2._4_4_ = -1; + } + DVar18 = selected_difficulty; + if (2 < selected_difficulty) { + DVar18 = DIFFICULTY_00; + } + iVar1 = iVar4 / 0x3c; + abStack3008[0] = 0; + iVar20 = (int)(&solo_target_times_ARRAY_8002b564 + [mission_folder_setup_entries[briefingpage].mission_num].agent_time)[DVar18]; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + if (false) { + trap(0x1c00); + } + if ((false) && (iVar1 == -0x80000000)) { + trap(0x1800); + } + sprintf((char *)abStack3008,"%02d:%02d",iVar1 / 0x3c,iVar1 % 0x3c); + uStack4 = 0x82; + uStack8 = 0xa7; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + if (newcheatunlocked != 0) { + abStack3008[0] = 0; + puVar13 = get_textptr_for_textID(0x9d13); + sprintf((char *)abStack3008," [%s]",puVar13); + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xa00000ff,(int)sVar16,(int)sVar17,0,0); + } + if ((iVar20 < 1) || (selected_difficulty == DIFFICULTY_007)) { + if ((-1 < uVar2._4_4_) && (uVar2._4_4_ < 0x3ff)) { + pbStack3012 = get_textptr_for_textID(0x9d11); + uStack8 = iStack3016 + 0xa9; + uStack4 = 0x37; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + abStack3008[0] = 0; + sprintf((char *)abStack3008,"%02d:%02d",uVar2._4_4_ / 0x3c,uVar2._4_4_ % 0x3c); + uStack4 = 0x82; + uStack8 = iStack3016 + 0xa9; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + } + } + else { + pbStack3012 = get_textptr_for_textID(0x9d12); + uStack8 = iStack3016 + 0xa9; + uStack4 = 0x37; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + abStack3008[0] = 0; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar20 == -0x80000000)) { + trap(0x1800); + } + sprintf((char *)abStack3008,"%02d:%02d",iVar20 / 0x3c,iVar20 % 0x3c); + uStack4 = 0x82; + uStack8 = iStack3016 + 0xa9; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + if ((-1 < uVar2._4_4_) && (uVar2._4_4_ < 0x3ff)) { + abStack3008[0] = 0; + if (uVar2._4_4_ < 0) { + sprintf((char *)abStack3008,&DAT_80051848); + } + else { + puVar13 = get_textptr_for_textID(0x9d11); + if (false) { + trap(0x1c00); + } + if ((false) && (uVar2._4_4_ == -0x80000000)) { + trap(0x1800); + } + sprintf((char *)abStack3008," (%s %02d:%02d)",puVar13,uVar2._4_4_ / 0x3c, + uVar2._4_4_ % 0x3c); + } + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + } + } + pbStack3012 = get_textptr_for_textID(0x9c6a); + uStack4 = 0x37; + uStack8 = 0xcc; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + if (iVar6 < 1) { + fVar21 = 0.00000000; + } + else { + fVar21 = ((float)iVar12 * 100.00000000) / (float)iVar6; + } + sprintf((char *)abStack3008,"%.1f%%",in_f5,SUB84((double)fVar21,0)); + uStack4 = 0x82; + uStack8 = 0xcc; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pbStack3012 = get_textptr_for_textID(0x9c6b); + uStack4 = 0x37; + uStack8 = 0xdc; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pcVar14 = (char *)getplayerfavoredweapon(0,0); + textpointer_load_parse_something((char *)abStack3008,pcVar14); + if ((0 < (int)fav_weapon_player1.right) && (fav_weapon_player1.left == fav_weapon_player1.right) + ) { + sVar15 = strlen((char *)abStack3008); + sprintf((char *)((int)&pbStack3012 + sVar15 + 3)," x 2\n"); + } + uStack4 = 0xbe; + uStack8 = 0xdc; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pbStack3012 = get_textptr_for_textID(0x9c6c); + uStack4 = 0x37; + uStack8 = 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + sprintf((char *)abStack3008,"%d",iVar6); + uStack4 = 0x82; + uStack8 = 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pbStack3012 = get_textptr_for_textID(0x9c6d); + uStack4 = 0xb4; + uStack8 = 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + fVar21 = (float)iVar19; + fVar22 = truncf(((float)iVar7 * 100.00000000) / fVar21 + 0.50000000); + sprintf((char *)abStack3008,"%d (%d%%)",iVar7,(int)fVar22); + uStack4 = 300; + uStack8 = 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pbStack3012 = get_textptr_for_textID(0x9c6e); + uStack8 = iStack3016 + 0xf4; + uStack4 = 0xb4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + fVar22 = truncf(((float)iVar8 * 100.00000000) / fVar21 + 0.50000000); + sprintf((char *)abStack3008,"%d (%d%%)",iVar8,(int)fVar22); + uStack4 = 300; + uStack8 = iStack3016 + 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pbStack3012 = get_textptr_for_textID(0x9c6f); + uStack8 = iStack3016 * 2 + 0xf4; + uStack4 = 0xb4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + fVar22 = truncf(((float)iVar9 * 100.00000000) / fVar21 + 0.50000000); + sprintf((char *)abStack3008,"%d (%d%%)",iVar9,(int)fVar22); + uStack4 = 300; + uStack8 = iStack3016 * 2 + 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pbStack3012 = get_textptr_for_textID(0x9c70); + uStack8 = iStack3016 * 3 + 0xf4; + uStack4 = 0xb4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + fVar21 = truncf(((float)(iVar11 + iVar10) * 100.00000000) / fVar21 + 0.50000000); + sprintf((char *)abStack3008,"%d (%d%%)",iVar11 + iVar10,(int)fVar21); + uStack4 = 300; + uStack8 = iStack3016 * 3 + 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + pbStack3012 = get_textptr_for_textID(0x9c71); + uStack8 = iStack3016 + 0xf4; + uStack4 = 0x37; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,pbStack3012,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + sprintf((char *)abStack3008,"%d",uVar5); + uStack4 = 0x82; + uStack8 = iStack3016 + 0xf4; + sVar16 = get_video2_settings_txtClipW(); + sVar17 = get_video2_settings_txtClipH(); + DL = write_text_at_abs_coord + (DL,&uStack4,&uStack8,abStack3008,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar16,(int)sVar17,0,0); + DL = add_tab2_next(DL); + DL = add_tab3_previous(DL); + load_draw_selected_icon_folder_select(DL); + return; +} + + + +void init_menu15_cheat(void) + +{ + int iVar1; + char *pcVar2; + + tab_1_selected = FALSE; + tab_2_selected = FALSE; + tab_3_selected = FALSE; + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + dword_8002B5DC = NULL; + pcVar2 = &cheat_available; + iVar1 = 1; + do { + if (*pcVar2 != '\0') { + (&DAT_800697f0)[(int)dword_8002B5DC] = iVar1; + dword_8002B5DC = dword_8002B5DC + 1; + } + iVar1 += 1; + pcVar2 = pcVar2 + 1; + } while (iVar1 != 0x4b); + load_walletbond(); + return; +} + + + +void update_menu15_cheat(void) + +{ + u32 uVar1; + int i; + u8 *puVar2; + BOOL appendsp; + BOOL appendmp; + + appendsp = FALSE; + appendmp = FALSE; + puVar2 = CHEATS_ACTIVE_ARRAY; + i = CHEAT_EXTRA_MP_CHARS; + do { + if (*puVar2 != '\0') { + appendsp = TRUE; + uVar1 = cheatCheckIfMPCheat(i); + if (uVar1 != 0) { + appendmp = TRUE; + } + } + i += CHEAT_EXTRA_MP_CHARS; + puVar2 = puVar2 + 1; + } while (i != 0x4b); + append_cheat_sp = appendsp; + append_cheat_mp = appendmp; + return; +} + + + +void interface_menu15_cheat(void) + +{ + undefined *puVar1; + u32 heldbuttons; + longlong istab3; + int iVar2; + undefined *puVar3; + + setvideo_far(60.00000000); + video_related_21(1.33333337); + set_page_height(100.00000000,10000.00000000); + set_video2_settings_offset_24(0); + MP_menu_selected_option = 0; + heldbuttons = get_controller_buttons_held('\0',Z_TRIG|A_BUTTON); + puVar1 = dword_8002B5E0; + if (heldbuttons == 0) { + tab_3_highlight = FALSE; + tab_2_highlight = FALSE; + tab_1_highlight = FALSE; + dword_8002B5E0 = NULL; + istab3 = isontab3(); + if (istab3 == 0) { + puVar1 = dword_8002B5E0; + if (((0xc < (int)dword_8002B5DC) && + (puVar3 = dword_8002B5DC + -0xd, 0xdb < (int)(float)cursor_h_pos)) && + (-1 < (int)puVar3)) { + iVar2 = (int)puVar3 * 0x14 + 0x35; + do { + puVar1 = puVar3 + 0xc; + if (iVar2 <= (int)(float)cursor_v_pos) break; + puVar3 = puVar3 + -1; + iVar2 += -0x14; + puVar1 = dword_8002B5E0; + } while (-1 < (int)puVar3); + } + dword_8002B5E0 = puVar1; + puVar1 = dword_8002B5E0; + if (dword_8002B5E0 == NULL) { + puVar3 = dword_8002B5DC + -1; + if (0xc < (int)dword_8002B5DC) { + puVar3 = (undefined *)((int)&PTR_entry_00000008 + 3); + } + if (-1 < (int)puVar3) { + iVar2 = (int)puVar3 * 0x14 + 0x35; + do { + puVar1 = puVar3; + if (iVar2 <= (int)(float)cursor_v_pos) break; + puVar3 = puVar3 + -1; + iVar2 += -0x14; + puVar1 = dword_8002B5E0; + } while (-1 < (int)puVar3); + } + } + } + else { + tab_3_highlight = TRUE; + puVar1 = dword_8002B5E0; + } + } + dword_8002B5E0 = puVar1; + heldbuttons = get_controller_buttons_pressed('\0',Z_TRIG|A_BUTTON); + if (heldbuttons == 0) { + heldbuttons = get_controller_buttons_pressed('\0',B_BUTTON); + if (heldbuttons != 0) { + tab_3_selected = TRUE; + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + } + else { + if (tab_3_highlight == FALSE) { + MP_menu_selected_option = 1; + } + else { + tab_3_selected = TRUE; + } + play_sfx_a1(ptr_sfx_buf,199,NULL); + } + disable_all_switches((int)ptr_folder_object_instance); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,0x2a,1); + set_item_visibility_in_objinstance((int)ptr_folder_object_instance,6,1); + menu_control_stick_tracking(); + if (tab_3_selected == FALSE) { + if (MP_menu_selected_option != 0) { + (&DAT_800696a0)[(&DAT_800697f0)[(int)dword_8002B5E0]] = + '\x01' - (&DAT_800696a0)[(&DAT_800697f0)[(int)dword_8002B5E0]]; + } + } + else { + set_menu_to_mode(MENU_MODE_SELECT,0); + set_menu_cursor_pos_to_setting(gamemode); + } + return; +} + + + +void constructor_menu15_cheat(Gfx *param_1) + +{ + undefined4 *puVar2; + u32 *DL; + longlong lVar1; + uint *puVar3; + short sVar5; + short sVar6; + byte *pbVar4; + TEXTFILESTRINGS id; + uint uVar7; + CHEAT_IDS *pCVar8; + uint uVar9; + undefined *puVar10; + int iVar11; + int iStack28; + int iStack24; + uint uStack20; + uint auStack16 [4]; + + puVar2 = set_setfillcolor((undefined4 *)param_1,0,0,0); + puVar2 = insert_generic_fillrect(puVar2); + DL = (u32 *)proc_7F00D5E8(puVar2); + lVar1 = (longlong)(int)DL; + microcode_constructor(DL); + puVar10 = NULL; + puVar2 = (undefined4 *)dword_8002B5DC; + if (0xc < (int)dword_8002B5DC) { + puVar2 = &DAT_0000000c; + } + if (0 < (int)puVar2) { + uVar9 = 0x35; + pCVar8 = &DAT_800697f0; + do { + puVar3 = (uint *)lVar1; + pbVar4 = (byte *)cheatGetMenuTextPointer(*pCVar8); + proc_7F0AE98C(&iStack24,&iStack28,pbVar4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + auStack16[0] = 0x37; + uStack20 = uVar9; + if ((puVar10 == dword_8002B5E0) && (lVar1 = isontab3(), lVar1 == 0)) { + puVar3 = microcode_constructor_related_to_menus + (puVar3,(longlong)(int)(auStack16[0] - 2), + (longlong)(int)(uStack20 - 1), + (longlong)(int)(auStack16[0] + iStack28 + 5),uStack20 + 0xe,0x32 + ); + } + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar3 = write_text_at_abs_coord + (puVar3,auStack16,&uStack20,pbVar4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar5,(int)sVar6,0,0); + id = 0x9c74; + if ((&DAT_800696a0)[*pCVar8] != '\0') { + id = 0x9c73; + } + pbVar4 = get_textptr_for_textID(id); + proc_7F0AE98C(&iStack24,&iStack28,pbVar4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + auStack16[0] = 0xb3; + uVar7 = 0xff; + if ((&DAT_800696a0)[*pCVar8] != '\0') { + uVar7 = 0xa00000ff; + } + uStack20 = uVar9; + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar3 = write_text_at_abs_coord + (puVar3,auStack16,&uStack20,pbVar4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar7,(int)sVar5,(int)sVar6,0,0); + lVar1 = (longlong)(int)puVar3; + puVar10 = puVar10 + 1; + pCVar8 = pCVar8 + 1; + uVar9 += 0x14; + puVar2 = (undefined4 *)dword_8002B5DC; + if (0xc < (int)dword_8002B5DC) { + puVar2 = &DAT_0000000c; + } + } while ((int)puVar10 < (int)puVar2); + } + puVar3 = (uint *)lVar1; + if ((0xc < (int)dword_8002B5DC) && (iVar11 = 0, 0 < (int)(dword_8002B5DC + -0xc))) { + puVar2 = &DAT_800697f0; + uVar9 = 0x35; + do { + puVar3 = (uint *)lVar1; + pbVar4 = (byte *)cheatGetMenuTextPointer(puVar2[0xc]); + proc_7F0AE98C(&iStack24,&iStack28,pbVar4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + auStack16[0] = 0xdc; + uStack20 = uVar9; + if (((undefined *)(iVar11 + 0xc) == dword_8002B5E0) && (lVar1 = isontab3(), lVar1 == 0)) + { + puVar3 = microcode_constructor_related_to_menus + (puVar3,(longlong)(int)(auStack16[0] - 2), + (longlong)(int)(uStack20 - 1), + (longlong)(int)(auStack16[0] + iStack28 + 5),uStack20 + 0xe,0x32 + ); + } + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar3 = write_text_at_abs_coord + (puVar3,auStack16,&uStack20,pbVar4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xff,(int)sVar5,(int)sVar6,0,0); + id = 0x9c74; + if ((&DAT_800696a0)[puVar2[0xc]] != '\0') { + id = 0x9c73; + } + pbVar4 = get_textptr_for_textID(id); + proc_7F0AE98C(&iStack24,&iStack28,pbVar4,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + auStack16[0] = 0x158; + uVar7 = 0xff; + if ((&DAT_800696a0)[puVar2[0xc]] != '\0') { + uVar7 = 0xa00000ff; + } + uStack20 = uVar9; + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + puVar3 = write_text_at_abs_coord + (puVar3,auStack16,&uStack20,pbVar4,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar7,(int)sVar5,(int)sVar6,0,0); + lVar1 = (longlong)(int)puVar3; + iVar11 += 1; + puVar2 = puVar2 + 1; + uVar9 += 0x14; + } while (iVar11 < (int)(dword_8002B5DC + -0xc)); + } + puVar3 = add_tab3_previous(puVar3); + load_draw_selected_icon_folder_select(puVar3); + return; +} + + + +void init_menu16_nocontroller(void) + +{ + return; +} + + + +void update_menu16_nocontrollers(void) + +{ + return; +} + + + +void interface_menu16_nocontrollers(void) + +{ + return; +} + + + +// WARNING: Instruction at (ram,0x7f0184c8) overlaps instruction at (ram,0x7f0184c4) +// + +void constructor_menu16_nocontrollers(Gfx *param_1) + +{ + ulonglong uVar1; + u32 *DL; + short sVar3; + short sVar4; + undefined4 *puVar2; + bool bVar5; + byte *pbStack20; + int iStack16; + int iStack12; + int iStack8; + int iStack4; + + uVar1 = get_num_controllers_plugged_in(); + bVar5 = (uVar1 & 8) != 0; + if ((uVar1 & 4) != 0) { + bVar5 = (bool)(bVar5 + '\x01'); + } + if ((uVar1 & 2) != 0) { + bVar5 = (bool)(bVar5 + '\x01'); + } + DL = insert_imageDL(param_1); + microcode_constructor(DL); + if ((((bVar5 == false) || (bVar5 == true)) || (bVar5 == true)) || (bVar5 == true)) { + pbStack20 = get_textptr_for_textID(0x9c76); + } + proc_7F0AE98C(&iStack4,&iStack8,pbStack20,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + iStack12 = 0xdc - (iStack8 >> 1); + iStack16 = 0x99 - (iStack4 >> 1); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + puVar2 = (undefined4 *)(int)sVar4; + en_text_write_stuff(DL,&iStack12,&iStack16,pbStack20,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xffffffff,(int)sVar3,(int)sVar4,0,0); + if (((bVar5 == false) || (bVar5 == true)) || ((bVar5 == true || (bVar5 == true)))) { + pbStack20 = get_textptr_for_textID(0x9c77); + } + proc_7F0AE98C(&iStack4,&iStack8,pbStack20,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + iStack12 = 0xdc - (iStack8 >> 1); + iStack16 = 0xb1 - (iStack4 >> 1); + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + en_text_write_stuff(puVar2,&iStack12,&iStack16,pbStack20,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xffffffff,(int)sVar3,(int)sVar4,0,0); + return; +} + + + +void do_extended_cast_display(longlong param_1) + +{ + if (param_1 != 0) { + do_not_play_intro_movie = 0; + full_actor_intro = (BOOL)param_1; + return; + } + do_not_play_intro_movie = 1; + full_actor_intro = (BOOL)param_1; + return; +} + + + +// WARNING: Could not reconcile some variable overlaps + +void init_menu18_displaycast(void) + +{ + object_header *objheader; + u32 uVar1; + int iVar2; + BOOL BVar3; + int iVar4; + PROPS PVar5; + undefined4 extraout_a2_lo; + uint uVar6; + PROPS *pPVar7; + PROPS *pPVar8; + PROPS *pPVar9; + PROPS *pPVar10; + float fVar11; + f32 scale; + f32 scale_00; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + PROPS local_8c [10]; + int rifles [6]; + undefined4 local_48; + object_header *headHeader; + u32 uStack48; + int iStack44; + int aiStack40 [4]; + xyzpoint local_18; + undefined *local_8; + Gfx *local_4; + + local_4 = ptr_logo_and_walletbond_DL; + local_18.x = dword_8002BA2C; + local_18.y = DAT_8002ba30; + local_18.z = DAT_8002ba34; + headHeader = NULL; + uVar1 = get_random_value(); + local_48 = uVar1 & 1; + if ((full_actor_intro != FALSE) && (do_not_play_intro_movie == 0)) { + musicTrack1Vol(0x7fff); + music1_playing = 0; + musicTrack1Play(M_INTRO); + } + intro_animation_count = 0; + if (-1 < (int)intro_animation_table[0].animID) { + intro_animation_count = 1; + while (-1 < (int)intro_animation_table[intro_animation_count].animID) { + intro_animation_count += 1; + } + } + uVar1 = get_random_value(); + randomly_selected_intro_animation = uVar1 % intro_animation_count; + iStack44 = intro_char_table[do_not_play_intro_movie].body; + uStack48 = intro_char_table[do_not_play_intro_movie].head; + iVar4 = intro_animation_table[randomly_selected_intro_animation].camera_preset; + if (intro_animation_count == 0) { + trap(0x1c00); + } + if (iStack44 == 0x16) { + uVar1 = get_random_value(); + if (true) { + switch(uVar1 % 5) { + case 1: + uStack48 = 0x4b; + iStack44 = 0x17; + break; + case 2: + uStack48 = 0x4b; + iStack44 = 0x18; + break; + case 3: + uStack48 = 0x4b; + iStack44 = 0x19; + break; + case 4: + uStack48 = 0x4e; + iStack44 = 5; + } + } + } + else { + if (iStack44 == 0x10) { + uVar1 = get_random_value(); + if ((uVar1 & 1) != 0) { + iStack44 = 0x4f; + } + } + else { + if ((iStack44 == 9) && (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { + iStack44 = 8; + } + } + } + if (uStack48 == 0xffffff9f) { + uStack48 = get_random_head(iStack44); + } + local_8 = &DAT_00031160; + proc_7F0D2448(((uint)(&UNK_0003119f + (int)local_4) | 0x3f) ^ 0x3f,0x1b8,0x14a); + proc_7F0CBAF4(aiStack40,(int)local_4,0x19000); + objheader = c_item_entries[iStack44].header; + local_4 = local_4 + 0x3200; + local_8 = local_8 + -0x19000; + load_object_fill_header + (objheader,(u8 *)c_item_entries[iStack44].filename,(int)local_4,(int)local_8, + (int)aiStack40); + iVar2 = get_pc_buffer_remaining_value((byte *)c_item_entries[iStack44].filename); + uVar6 = (iVar2 + 0x3fU | 0x3f) ^ 0x3f; + local_8 = local_8 + -uVar6; + local_4 = (Gfx *)((int)local_4 + uVar6); + if (-1 < (int)uStack48) { + headHeader = c_item_entries[uStack48].header; + load_object_fill_header + (headHeader,(u8 *)c_item_entries[uStack48].filename,(int)local_4,(int)local_8, + (int)aiStack40); + iVar2 = get_pc_buffer_remaining_value((byte *)c_item_entries[uStack48].filename); + uVar6 = (iVar2 + 0x3fU | 0x3f) ^ 0x3f; + local_8 = local_8 + -uVar6; + local_4 = (Gfx *)((int)local_4 + uVar6); + } + objinstance = (undefined *)setup_chr_instance(iStack44,uStack48,objheader,headHeader,0); + set_obj_instance_controller_scale((int)objinstance,scale); + if (iVar4 == 0) { + ptrobjinstance = NULL; + } + else { + if (iVar4 == 2) { + rifles[0] = random_rifles_in_intro[0]; + rifles[1] = random_rifles_in_intro[1]; + rifles[3] = random_rifles_in_intro[3]; + rifles[2] = random_rifles_in_intro[2]; + rifles[4] = random_rifles_in_intro[4]; + rifles[5] = random_rifles_in_intro[5]; + uVar1 = get_random_value(); + PVar5 = rifles[uVar1 % 6]; + } + else { + pPVar7 = random_pistols_in_intro; + pPVar9 = local_8c; + do { + pPVar8 = pPVar7 + 3; + pPVar10 = pPVar9 + 3; + *pPVar9 = *pPVar7; + pPVar9[1] = pPVar7[1]; + pPVar9[2] = pPVar7[2]; + pPVar7 = pPVar8; + pPVar9 = pPVar10; + } while (pPVar8 != random_pistols_in_intro + 9); + *pPVar10 = random_pistols_in_intro[9]; + uVar1 = get_random_value(); + PVar5 = local_8c[uVar1 % 10]; + } + if ((PVar5 == PROP_chrruger) && (uVar1 = check_cradle_completed_any_folder(), uVar1 == 0)) { + PVar5 = PROP_chrwppk; + } + if ((PVar5 == PROP_chrlaser) && + (BVar3 = check_aztec_completed_any_folder_secret_00(), BVar3 == FALSE)) { + PVar5 = PROP_chrwppk; + } + if ((PVar5 == PROP_chrgolden) && + (BVar3 = check_egypt_completed_any_folder_00(), BVar3 == FALSE)) { + PVar5 = PROP_chrwppk; + } + objheader = (object_header *)PitemZ_entries[PVar5].header; + load_object_fill_header + (objheader,(u8 *)PitemZ_entries[PVar5].filename,(int)local_4,(int)local_8, + (int)aiStack40); + get_pc_buffer_remaining_value((byte *)PitemZ_entries[PVar5].filename); + set_objuse_flag_compute_grp_nums_set_obj_loaded(objheader); + ptrobjinstance = (undefined *)get_obj_instance_controller_for_header(objheader); + set_obj_instance_controller_scale((int)ptrobjinstance,scale_00); + iVar4 = 3; + *(undefined **)(ptrobjinstance + 0x18) = objinstance; + if (local_48 != 0) { + iVar4 = 5; + } + *(undefined4 *)(ptrobjinstance + 0x1c) = + *(undefined4 *)(*(int *)(*(int *)(objinstance + 8) + 8) + iVar4 * 4); + } + proc_7F06CE84((int)objinstance,0x3dcccccd); + setsuboffset((int)objinstance,&local_18); + setsubroty((int)objinstance,extraout_f12,0,extraout_a2_lo); + proc_7F06FF18((int)objinstance,0x3f000000,extraout_f12_00); + proc_7F06FCA8((int)objinstance, + *(undefined4 *) + (animation_table_ptrs1 + + intro_animation_table[randomly_selected_intro_animation].animID * 4), + (undefined)local_48,extraout_f12_01, + intro_animation_table[randomly_selected_intro_animation].startframeoffset, + extraout_f14); + menu_timer = 0; + uVar1 = get_random_value(); + fVar11 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar11 = fVar11 + 4294967296.00000000; + } + DAT_800695a4 = fVar11 * 0.00000000 * 80.00000000 + 70.00000000; + uVar1 = get_random_value(); + fVar11 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar11 = fVar11 + 4294967296.00000000; + } + DAT_800695a8 = fVar11 * 0.00000000 * 80.00000000 + 70.00000000; + uVar1 = get_random_value(); + fVar11 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar11 = fVar11 + 4294967296.00000000; + } + DAT_800695b0 = (fVar11 * 0.00000000 - 0.50000000) * flt_80051B00; + uVar1 = get_random_value(); + fVar11 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar11 = fVar11 + 4294967296.00000000; + } + DAT_800695b4 = (fVar11 * 0.00000000 - 0.50000000) * flt_80051B04; + uVar1 = get_random_value(); + fVar11 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar11 = fVar11 + 4294967296.00000000; + } + DAT_800695bc = fVar11 * 0.00000000 * 200.00000000 + -100.00000000; + uVar1 = get_random_value(); + fVar11 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar11 = fVar11 + 4294967296.00000000; + } + DAT_800695a0 = DAT_800695a4; + dword_80069C6C = DAT_800695b0; + DAT_800695b8 = DAT_800695bc; + DAT_800695c0 = fVar11 * 0.00000000 * 200.00000000 + -100.00000000; + DAT_800695e4 = 1; + DAT_800695e8 = 0; + DAT_800695ec = 0; + DAT_800695f0 = 0; + return; +} + + + +void update_menu18_displaycast(void) + +{ + if (objinstance != NULL) { + set_aircraft_obj_inst_scale_to_zero((int *)objinstance); + } + if (ptrobjinstance != NULL) { + set_obj_instance_scale_to_zero((int *)ptrobjinstance); + } + return; +} + + + +void interface_menu18_displaycast(void) + +{ + BOOL BVar1; + u32 uVar2; + int iVar3; + + setvideo_far(46.00000000); + set_page_height(10.00000000,2000.00000000); + set_video2_settings_offset_24(1); + video_related_21((f32)flt_80051B08); + set_cur_player_screen_size(0x1b8,0x14a); + set_video2_width_height(0x1b8,0x14a); + set_cur_player_viewport_size(0,0); + set_video2_ulx_uly(0,0); + menu_timer += clock_timer; + if (menu_timer < 0xb5) { + uVar2 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if ((uVar2 != 0) && (full_actor_intro == FALSE)) { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + return; + } + iVar3 = do_not_play_intro_movie + 1; +LAB_7f01902c: + do_not_play_intro_movie = iVar3; + if (intro_char_table[do_not_play_intro_movie].flag != 0) goto code_r0x7f01904c; + iVar3 = intro_char_table[do_not_play_intro_movie].body; + goto LAB_7f019068; +code_r0x7f01904c: + iVar3 = do_not_play_intro_movie + 1; + if (full_actor_intro != FALSE) { + iVar3 = intro_char_table[do_not_play_intro_movie].body; +LAB_7f019068: + if ((iVar3 == 0x27) && + (BVar1 = check_aztec_completed_any_folder_secret_00(), BVar1 == FALSE)) { + iVar3 = do_not_play_intro_movie + 1; + goto LAB_7f01902c; + } + if ((intro_char_table[do_not_play_intro_movie].body == 0x28) && + (BVar1 = check_aztec_completed_any_folder_secret_00(), BVar1 == FALSE)) { + iVar3 = do_not_play_intro_movie + 1; + goto LAB_7f01902c; + } + if ((intro_char_table[do_not_play_intro_movie].body == 0xe) && + (BVar1 = check_aztec_completed_any_folder_secret_00(), BVar1 == FALSE)) { + uVar2 = get_random_value(); + if (false) { + trap(0x1c00); + } + if (uVar2 % 10000 != 0) { + iVar3 = do_not_play_intro_movie + 1; + goto LAB_7f01902c; + } + } + if ((intro_char_table[do_not_play_intro_movie].body == 0xd) && + (BVar1 = check_aztec_completed_any_folder_secret_00(), BVar1 == FALSE)) { + uVar2 = get_random_value(); + if (false) { + trap(0x1c00); + } + if (uVar2 % 10000 != 0) { + iVar3 = do_not_play_intro_movie + 1; + goto LAB_7f01902c; + } + } + if ((intro_char_table[do_not_play_intro_movie].body == 0xf) && + (BVar1 = check_egypt_completed_any_folder_00(), BVar1 == FALSE)) { + uVar2 = get_random_value(); + if (false) { + trap(0x1c00); + } + if (uVar2 % 10000 != 0) { + iVar3 = do_not_play_intro_movie + 1; + goto LAB_7f01902c; + } + } + if ((intro_char_table[do_not_play_intro_movie].body != 0xc) || + (BVar1 = check_egypt_completed_any_folder_00(), BVar1 != FALSE)) { +LAB_7f019268: + if (intro_char_table[do_not_play_intro_movie].body < 0) { + do_not_play_intro_movie = 0; + } + if (do_not_play_intro_movie < 1) { + if (full_actor_intro != FALSE) { + set_menu_to_mode(MENU_MISSION_SELECT,1); + set_cursor_to_stage_solo(0x11); + full_actor_intro = FALSE; + return; + } + select_ramrom_to_play(); + return; + } + set_menu_to_mode(MENU_DISPLAY_CAST,1); + return; + } + uVar2 = get_random_value(); + if (false) { + trap(0x1c00); + } + if (uVar2 % 10000 == 0) goto LAB_7f019268; + iVar3 = do_not_play_intro_movie + 1; + } + goto LAB_7f01902c; +} + + + +void constructor_menu18_displaycast(Gfx *param_1) + +{ + ushort *partdesc; + undefined4 *puVar1; + LookAt *l; + float (*paafVar2) [4] [4]; + byte *pbVar3; + short sVar4; + short sVar5; + undefined8 extraout_a0; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a2_lo_02; + undefined4 extraout_a2_lo_03; + undefined4 extraout_a2_lo_04; + undefined4 extraout_a2_lo_05; + undefined4 uVar6; + undefined4 extraout_a2_lo_06; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + undefined4 extraout_a3_lo_02; + undefined4 extraout_a3_lo_03; + undefined *extraout_a3_lo_04; + undefined *puVar7; + float (**ppaafVar8) [4] [4]; + float (**ppaafVar9) [4] [4]; + float (**ppaafVar10) [4] [4]; + float (**ppaafVar11) [4] [4]; + int iVar12; + int iVar14; + longlong lVar13; + undefined4 *puVar15; + float fVar16; + float fVar17; + uint uVar18; + float xEye; + float yEye; + byte abStack368 [72]; + float fStack296; + float fStack292; + float fStack288; + float fStack284; + float fStack280; + float fStack276; + float fStack268; + float fStack264; + int iStack256; + int iStack252; + int iStack248; + int iStack244; + float afStack240 [18]; + float (*paafStack168) [4] [4]; + undefined4 uStack164; + undefined4 uStack160; + undefined4 *puStack156; + float (*paafStack152) [4] [4]; + undefined4 uStack120; + float afStack104 [17]; + f32 fStack36; + f32 fStack32; + f32 fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fStack12 = (float)flt_8002BA78.x; + fStack8 = (float)flt_8002BA78.y; + fStack4 = (float)flt_8002BA78.z; + fStack24 = (float)dword_8002BA84.x; + fStack20 = (float)dword_8002BA84.y; + fStack16 = (float)dword_8002BA84.z; + fStack36 = dword_8002BA90.x; + fStack32 = dword_8002BA90.y; + fStack28 = dword_8002BA90.z; + ppaafVar10 = (float (**) [4] [4])&dword_8002BA9C; + ppaafVar8 = &paafStack168; + do { + ppaafVar11 = ppaafVar10 + 3; + ppaafVar9 = ppaafVar8 + 3; + *ppaafVar8 = *ppaafVar10; + ppaafVar8[1] = ppaafVar10[1]; + ppaafVar8[2] = ppaafVar10[2]; + ppaafVar10 = ppaafVar11; + ppaafVar8 = ppaafVar9; + } while (ppaafVar11 != (float (**) [4] [4])0x8002bad8); + *ppaafVar9 = paafRam8002bad8; + fStack284 = DAT_8002badc; + fStack280 = dword_8002BAE0; + fStack264 = (float)menu_timer / 180.00000000; + fStack276 = dword_8002BAE4; + if ((menu_timer < 0) || (0xb3 < menu_timer)) { + fStack268 = 0.00000000; + } + else { + if (menu_timer < 0x1e) { + fStack268 = (float)menu_timer / 30.00000000; + } + else { + if (menu_timer < 0x97) { + fStack268 = 1.00000000; + } + else { + fStack268 = (float)(0xb4 - menu_timer) / 30.00000000; + } + } + } + puVar1 = set_setfillcolor((undefined4 *)param_1,0,0,0); + paafStack152 = (float (*) [4] [4])insert_generic_fillrect(puVar1); + DAT_800695a0 = (DAT_800695a8 - DAT_800695a4) * fStack264 + DAT_800695a4; + dword_80069C6C = (DAT_800695b4 - DAT_800695b0) * fStack264 + DAT_800695b0; + DAT_800695b8 = (DAT_800695c0 - DAT_800695bc) * fStack264 + DAT_800695bc; + if (dword_80069C6C < 0.00000000) { + dword_80069C6C = dword_80069C6C + flt_80051B0C; + } + l = (LookAt *)paafStack152; + fVar16 = sinf(dword_80069C6C); + fVar17 = cosf(dword_80069C6C); + fStack8 = DAT_800695b8; + fStack12 = fVar17 * flt_80051B10 * DAT_800695a0 + DAT_800695a0 * fVar16; + fVar16 = cosf(dword_80069C6C); + fVar17 = sinf(dword_80069C6C); + fStack4 = DAT_800695a0 * fVar16 - fVar17 * flt_80051B14 * DAT_800695a0; + fVar16 = cosf(dword_80069C6C); + fStack24 = fStack24 + fVar16 * flt_80051B18 * DAT_800695a0; + fVar16 = sinf(dword_80069C6C); + fStack16 = fStack16 + -fVar16 * flt_80051B1C * DAT_800695a0; + proc_7F0BD6F8(2); + guLookAtReflect((Mtx *)abStack368,l,xEye,yEye,0.00000000,0.00000000,4000.00000000,0.00000000, + 0.00000000,0.00000000,0.00000000); + *(undefined4 *)((LookAt *)paafStack152)->l = 0xbc000002; + *(undefined4 *)(((LookAt *)paafStack152)->l + 4) = 0x80000040; + *(undefined4 *)(((LookAt *)paafStack152)->l + 8) = 0x3860010; + *(undefined4 *)(((LookAt *)paafStack152)->l + 0xc) = 0x8002a978; + *(undefined4 *)(((LookAt *)paafStack152)->l + 0x10) = 0x3880010; + *(undefined4 *)(((LookAt *)paafStack152)->l + 0x14) = 0x8002a970; + *(undefined4 *)(((LookAt *)paafStack152)->l + 0x18) = 0x3840010; + *(LookAt **)(((LookAt *)paafStack152)->l + 0x1c) = l; + *(byte **)(((LookAt *)paafStack152)[1].l + 4) = l->l + 0x10; + *(undefined4 *)((LookAt *)paafStack152)[1].l = 0x3820010; + puStack156 = (undefined4 *)(((LookAt *)paafStack152)[1].l + 8); + proc_7F070AEC((int)objinstance,clock_timer,1); + set_80036084(1); + proc_7F073FC8(0); + subcalcpos((int)objinstance,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + if ((ptrobjinstance != NULL) && (**(ushort ***)(*(int *)(ptrobjinstance + 8) + 8) != NULL)) { + paafStack152 = (float (*) [4] [4]) + extract_id_from_object_structure_microcode + ((int)ptrobjinstance, + **(ushort ***)(*(int *)(ptrobjinstance + 8) + 8)); + *(undefined2 *)((LookAt *)paafStack152)->l = 0; + } + if ((ptrobjinstance != NULL) && + (partdesc = *(ushort **)(*(int *)(*(int *)(ptrobjinstance + 8) + 8) + 8), partdesc != NULL)) + { + paafStack152 = (float (*) [4] [4]) + extract_id_from_object_structure_microcode((int)ptrobjinstance,partdesc); + *(undefined4 *)((LookAt *)paafStack152)->l = 0; + } + proc_7F0BD714((int)*(short *)(*(int *)(objinstance + 8) + 0xe) << 6); + guMtxIdentF_unrolled((float (*) [4] [4])afStack104); + paafStack168 = (float (*) [4] [4])afStack104; + subcalcmatrices((float **)&paafStack168,(uint)objinstance,extraout_a2_lo_00,extraout_a3_lo_00); + getsuboffset((int)objinstance,&fStack296,extraout_a2_lo_01,extraout_a3_lo_01); + if (DAT_800695e4 != 0) { + DAT_800695ec = fStack292; + } + fStack284 = (fStack296 - DAT_800695e8) / global_timer_delta; + fStack280 = (fStack292 - DAT_800695ec) / global_timer_delta; + fStack276 = (fStack288 - DAT_800695f0) / global_timer_delta; + if (DAT_800695e4 != 0) { + DAT_80069608 = fStack284 / flt_80051B20; + DAT_8006960c = fStack280 / flt_80051B20; + DAT_80069610 = fStack276 / flt_80051B20; + } + if (0 < clock_timer) { + iVar14 = 1; + DAT_80069608 = flt_80051B28 * DAT_80069608; + if (1 < clock_timer) { + do { + iVar14 += 1; + DAT_8006960c = fStack280 + flt_80051B28 * DAT_8006960c; + DAT_80069610 = fStack276 + flt_80051B28 * DAT_80069610; + DAT_80069608 = flt_80051B28 * (fStack284 + DAT_80069608); + } while (iVar14 < clock_timer); + } + DAT_80069608 = fStack284 + DAT_80069608; + DAT_8006960c = fStack280 + flt_80051B28 * DAT_8006960c; + DAT_80069610 = fStack276 + flt_80051B28 * DAT_80069610; + } + DAT_800695f8 = DAT_80069608 * flt_80051B24; + DAT_800695fc = DAT_8006960c * flt_80051B24; + DAT_80069600 = DAT_80069610 * flt_80051B24; + DAT_800695e8 = DAT_800695e8 + DAT_800695f8 * global_timer_delta; + DAT_800695ec = DAT_800695ec + DAT_800695fc * global_timer_delta; + DAT_800695f0 = DAT_800695f0 + DAT_80069600 * global_timer_delta; + proc_7F058474(*(float **)(objinstance + 0xc),&fStack284); + fStack284 = fStack284 - DAT_800695e8; + fStack280 = fStack280 - DAT_800695ec; + fStack276 = fStack276 - DAT_800695f0; + if (DAT_800695e4 != 0) { + DAT_800695d8 = fStack284 / flt_80051B34; + DAT_800695e4 = 0; + DAT_800695dc = fStack280 / flt_80051B34; + dword_80069CA0 = fStack276 / flt_80051B34; + } + paafVar2 = (float (*) [4] [4])&DAT_800695d8; + if (0 < clock_timer) { + iVar14 = 1; + DAT_800695d8 = flt_80051B30 * DAT_800695d8; + if (1 < clock_timer) { + do { + iVar14 += 1; + DAT_800695dc = fStack280 + flt_80051B30 * DAT_800695dc; + dword_80069CA0 = fStack276 + flt_80051B30 * dword_80069CA0; + DAT_800695d8 = flt_80051B30 * (fStack284 + DAT_800695d8); + } while (iVar14 < clock_timer); + } + DAT_800695d8 = fStack284 + DAT_800695d8; + DAT_800695dc = fStack280 + flt_80051B30 * DAT_800695dc; + dword_80069CA0 = fStack276 + flt_80051B30 * dword_80069CA0; + } + lVar13 = 0; + DAT_800695c8 = DAT_800695d8 * flt_80051B34; + DAT_800695cc = DAT_800695dc * flt_80051B34; + dword_80069C90 = dword_80069CA0 * flt_80051B34; + fStack284 = DAT_800695e8 + DAT_800695c8; + fStack280 = (DAT_800695ec + DAT_800695cc) - 10.00000000; + fStack276 = DAT_800695f0 + dword_80069C90; + fStack24 = fStack24 + fStack284; + fStack12 = fStack12 + DAT_800695e8; + fStack16 = fStack16 + fStack276; + fStack8 = fStack8 + DAT_800695ec + 52.50000000; + fStack20 = fStack20 + fStack280; + fStack4 = fStack4 + DAT_800695f0; + proc_7F059694((float *)(float (*) [4] [4])afStack104,fStack280,fStack276,fStack12,fStack8, + fStack4,fStack24,fStack20,fStack16,(float)fStack36); + paafStack168 = (float (*) [4] [4])afStack104; + proc_7F0BD714((int)*(short *)(*(int *)(objinstance + 8) + 0xe) << 6); + paafStack152 = paafVar2; + subcalcmatrices((float **)&paafStack168,(uint)objinstance,extraout_a2_lo_02,extraout_a3_lo_02); + uVar6 = extraout_a2_lo_03; + puVar7 = ptrobjinstance; + if (ptrobjinstance != NULL) { + paafVar2 = (float (*) [4] [4]) + proc_7F06C660((int)objinstance,*(ushort **)(ptrobjinstance + 0x1c),0); + paafStack168 = paafVar2; + if (*(int *)(ptrobjinstance + 0x1c) == + *(int *)(*(int *)(*(int *)(objinstance + 8) + 8) + 0x14)) { + proc_7F058688(flt_80051B38,extraout_a0,(float *)(float (*) [4] [4])afStack240); + proc_7F058068((float *)paafStack168,(float *)(float (*) [4] [4])afStack240); + iVar14 = *(int *)(ptrobjinstance + 8); + paafStack168 = (float (*) [4] [4])afStack240; + } + else { + iVar14 = *(int *)(ptrobjinstance + 8); + } + proc_7F0BD714((int)*(short *)(iVar14 + 0xe) << 6); + paafStack152 = paafVar2; + instcalcmatrices((float **)&paafStack168,(uint)ptrobjinstance,extraout_a2_lo_04, + extraout_a3_lo_03); + uVar6 = extraout_a2_lo_05; + puVar7 = extraout_a3_lo_04; + } + uStack120 = 7; + uStack164 = 1; + uStack160 = 3; + subdraw((int)&paafStack168,(uint)objinstance,uVar6,puVar7); + if (ptrobjinstance != NULL) { + subdraw((int)&paafStack168,(uint)ptrobjinstance,extraout_a2_lo_06,ptrobjinstance); + } + puVar1 = puStack156; + set_80036084(0); + iVar14 = 0; + if (0 < *(short *)(*(int *)(objinstance + 8) + 0xe)) { + iVar12 = *(int *)(objinstance + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar12 + iVar14),(float (*) [4])afStack240); + proc_7F058C9C((int)(float (*) [4])afStack240, + (uint *)(*(int *)(objinstance + 0xc) + (int)lVar13 * 0x40)); + lVar13 = (longlong)((int)lVar13 + 1); + iVar14 += 0x40; + if (*(short *)(*(int *)(objinstance + 8) + 0xe) <= lVar13) break; + iVar12 = *(int *)(objinstance + 0xc); + } + } + if (ptrobjinstance != NULL) { + lVar13 = 0; + iVar14 = 0; + if (0 < *(short *)(*(int *)(ptrobjinstance + 8) + 0xe)) { + iVar12 = *(int *)(ptrobjinstance + 0xc); + while( true ) { + proc_7F058020((float (*) [4] [4])(iVar12 + iVar14),(float (*) [4])afStack240); + proc_7F058C9C((int)(float (*) [4])afStack240, + (uint *)(*(int *)(ptrobjinstance + 0xc) + (int)lVar13 * 0x40)); + lVar13 = (longlong)((int)lVar13 + 1); + iVar14 += 0x40; + if (*(short *)(*(int *)(ptrobjinstance + 8) + 0xe) <= lVar13) break; + iVar12 = *(int *)(ptrobjinstance + 0xc); + } + } + } + *puVar1 = 0xed000000; + puVar1[1] = 0x6e0528; + puVar1[2] = 0xe7000000; + puVar1[3] = 0; + puVar1[4] = 0xba001402; + puVar1[5] = 0; + puVar1[7] = 0xc0; + puVar1[6] = 0xba000602; + puVar1[8] = 0xba001301; + puVar1[9] = 0; + puVar1[10] = 0xb9000002; + puVar1[0xb] = 0; + puVar1[0xc] = 0xba001001; + puVar1[0xd] = 0; + puVar1[0xf] = 0x2000; + puVar1[0xe] = 0xba000c02; + puVar1[0x10] = 0xba000903; + puVar1[0x11] = 0xc00; + puVar1[0x12] = 0xba000e02; + puVar1[0x13] = 0; + puVar1[0x15] = 0x504340; + puVar1[0x14] = 0xb900031d; + puVar1[0x16] = 0xfcffffff; + puVar1[0x17] = 0xfffdf6fb; + puVar1[0x18] = 0xfa000000; + fVar16 = fStack268 * 255.00000000; + puVar15 = puVar1 + 0x1e; + puVar1[0x19] = 0xffU - (int)fVar16 & 0xff; + puVar1[0x1b] = 0; + puVar1[0x1a] = 0xf66e0528; + puVar1[0x1d] = 0; + puVar1[0x1c] = 0xe7000000; + puVar1[0x1f] = 0x40; + *puVar15 = 0xba000602; + puVar1[0x21] = 0x80000; + puVar1[0x20] = 0xba001301; + puVar1[0x23] = 0x10000; + puVar1[0x22] = 0xba001001; + microcode_constructor(puVar1 + 0x24); + if (full_actor_intro == FALSE) { + pbVar3 = get_textptr_for_textID(intro_char_table[do_not_play_intro_movie].text1); + proc_7F0AE98C(&iStack256,&iStack252,pbVar3,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + iVar14 = iStack252; + if (iStack252 < 0) { + iVar14 = iStack252 + 1; + } + iStack244 = 0x13b - (iVar14 >> 1); + iStack248 = 0x6c; + puVar1 = microcode_constructor_related_to_menus + (puVar15,(longlong)iStack244,0x6c,(longlong)(iStack244 + iStack252 + 1), + iStack256 + 0x6d,0); + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + puVar15 = (undefined4 *)(int)sVar5; + if (false) { + fVar17 = ROUND(fVar16); + } + else { + fVar17 = FLOOR(fVar16); + } + uVar18 = (uint)fVar17; + if (true) { + if ((int)uVar18 < 0) goto LAB_7f01a0d0; + } + else { + if (false) { + fVar17 = ROUND(fVar16 - 2147483648.00000000); + } + else { + fVar17 = FLOOR(fVar16 - 2147483648.00000000); + } + if (false) { +LAB_7f01a0d0: + uVar18 = 0xffffffff; + } + else { + uVar18 = (int)fVar17 | 0x80000000; + } + } + en_text_write_stuff(puVar1,&iStack244,&iStack248,pbVar3,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar18 | 0xffffff00,(int)sVar4,(int)sVar5,0, + 0); + } + if (false) { + fVar17 = ROUND(fVar16); + } + else { + fVar17 = FLOOR(fVar16); + } + uVar18 = (uint)fVar17; + if (true) { + if (-1 < (int)uVar18) goto LAB_7f01a1b0; + } + else { + if (false) { + fVar16 = ROUND(fVar16 - 2147483648.00000000); + } + else { + fVar16 = FLOOR(fVar16 - 2147483648.00000000); + } + if (true) { + uVar18 = (int)fVar16 | 0x80000000; + goto LAB_7f01a1b0; + } + } + uVar18 = 0xffffffff; +LAB_7f01a1b0: + pbVar3 = get_textptr_for_textID(intro_char_table[do_not_play_intro_movie].text2); + proc_7F0AE98C(&iStack256,&iStack252,pbVar3,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + iVar14 = iStack252; + if (iStack252 < 0) { + iVar14 = iStack252 + 1; + } + iStack244 = 0x13b - (iVar14 >> 1); + iStack248 = 0x98; + puVar1 = microcode_constructor_related_to_menus + (puVar15,(longlong)iStack244,0x98,(longlong)(iStack244 + iStack252 + 1), + iStack256 + 0x99,0); + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + puVar15 = (undefined4 *)(int)sVar5; + en_text_write_stuff(puVar1,&iStack244,&iStack248,pbVar3,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar18 | 0xffffff00,(int)sVar4,(int)sVar5,0,0); + pbVar3 = get_textptr_for_textID(intro_char_table[do_not_play_intro_movie].text3); + proc_7F0AE98C(&iStack256,&iStack252,pbVar3,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + iVar14 = iStack252; + if (iStack252 < 0) { + iVar14 = iStack252 + 1; + } + iStack244 = 0x13b - (iVar14 >> 1); + iStack248 = 0xae; + puVar1 = microcode_constructor_related_to_menus + (puVar15,(longlong)iStack244,0xae,(longlong)(iStack244 + iStack252 + 1), + iStack256 + 0xaf,0); + sVar4 = get_video2_settings_txtClipW(); + sVar5 = get_video2_settings_txtClipH(); + en_text_write_stuff(puVar1,&iStack244,&iStack248,pbVar3,(int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,uVar18 | 0xffffff00,(int)sVar4,(int)sVar5,0,0); + return; +} + + + +void init_menu19_spectrum(void) + +{ + u32 uVar1; + byte bVar2; + + bVar2 = 0; + uVar1 = get_controller_buttons_held('\x02',L_CBUTTONS); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\x02',R_CBUTTONS); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\x02',U_CBUTTONS); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\x02',D_CBUTTONS); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\x02',L_JPAD); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\x02',R_JPAD); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\x02',U_JPAD); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\x02',D_JPAD); + if (uVar1 != 0) { + bVar2 = 7; + } + } + else { + bVar2 = 6; + } + } + else { + bVar2 = 5; + } + } + else { + bVar2 = 4; + } + } + else { + bVar2 = 3; + } + } + else { + bVar2 = 2; + } + } + else { + bVar2 = 1; + } + } + init_spectrum_game(bVar2); + return; +} + + + +void update_menu19_spectrum(void) + +{ + return; +} + + + +void interface_menu19_spectrum(void) + +{ + setvideo_far(60.00000000); + video_related_21((f32)menu19_aspect); + set_page_height(100.00000000,(f32)menu19_pageheight); + set_video2_settings_offset_24(0); + run_spectrum_game(); + return; +} + + + +void constructor_menu19_spectrum(Gfx *param_1) + +{ + undefined4 *puVar1; + + puVar1 = insert_imageDL(param_1); + *puVar1 = 0xba001402; + puVar1[5] = 0x204; + puVar1[4] = 0xb6000000; + puVar1[7] = 0xfffcf87c; + puVar1[2] = 0xb900031d; + puVar1[3] = 0x552048; + puVar1[6] = 0xfcffffff; + puVar1[8] = 0xba000c02; + puVar1[1] = 0; + puVar1[9] = 0; + puVar1[10] = 0xfd500000; + puVar1[0xb] = 0x8002baf0; + puVar1[0xd] = 0x7000000; + puVar1[0xc] = 0xf5000300; + puVar1[0xe] = 0xe6000000; + puVar1[0xf] = 0; + puVar1[0x10] = 0xf0000ff0; + puVar1[0x11] = 0x701cff0; + puVar1[0x12] = 0xe7000000; + puVar1[0x13] = 0; + puVar1[0x15] = 0x8000; + puVar1[0x14] = 0xba000e02; + spectrum_draw_screen(puVar1 + 0x16); + return; +} + + + +// WARNING: Instruction at (ram,0x7f01a5e8) overlaps instruction at (ram,0x7f01a5e4) +// + +void set_menu_to_mode(MENU param_1,u32 param_2) + +{ + if ((param_1 == MENU_RUN_STAGE) || (param_1 == MENU_SPECTRUM_EMU)) { + is_emulating_spectrum = TRUE; + } + if (param_2 == 0) { + maybe_prev_menu = param_1; + return; + } + menu_update = param_1; + return; +} + + + +MENU get_currentmenu(void) + +{ + return current_menu; +} + + + +void menu_init(undefined8 param_1,undefined8 param_2) + +{ + MENU MVar1; + u8 *puVar2; + int iVar3; + + if (current_menu == MENU_SWITCH_SCREENS) { + if (spectrum_related_flag == FALSE) { + if ((is_emulating_spectrum != FALSE) && + (puVar2 = get_video_settings2_frameb(), puVar2 == cfb_16_a)) { + screen_size = SCREEN_SIZE_320x240; + is_emulating_spectrum = FALSE; + } + } + else { + puVar2 = get_video_settings2_frameb(); + if (puVar2 == cfb_16_b) { + screen_size = SCREEN_SIZE_440x330; + spectrum_related_flag = FALSE; + } + } + } + if (screen_size == SCREEN_SIZE_320x240) { + video_related_21((f32)flt_80051B48); + set_video2_text_clip_size(320,0xf0); + set_video2_settings_offset_18_1A(320,0xf0); + set_cur_player_screen_size(320,0xf0); + set_video2_width_height(320,0xf0); + set_cur_player_viewport_size(0,0); + set_video2_ulx_uly(0,0); + } + else { + puVar2 = get_video_settings2_frameb(); + if (puVar2 == cfb_16_b) { + set_video_settings2_frameb(ptr_menu_videobuffer); + } + video_related_21((f32)flt_80051B44); + set_video2_text_clip_size(0x1b8,0x14a); + set_video2_settings_offset_18_1A(0x1b8,0x14a); + set_cur_player_screen_size(0x1b8,0x14a); + set_video2_width_height(0x1b8,0x14a); + set_cur_player_viewport_size(0,0); + set_video2_ulx_uly(0,0); + } + if (((-1 < (int)menu_update) || (-1 < (int)maybe_prev_menu)) && + (current_menu != MENU_SWITCH_SCREENS)) { + if (true) { + switch(current_menu) { + case MENU_LEGAL_SCREEN: + update_menu00_legalscreen(); + break; + case MENU_NINTENDO_LOGO: + update_menu01_nintendo(); + break; + case MENU_RAREWARE_LOGO: + update_menu02_rareware(); + break; + case MENU_EYE_INTRO: + update_menu_03_eyeintro(); + break; + case MENU_GOLDENEYE_LOGO: + update_menu04_goldeneyelogo(); + break; + case MENU_FILE_SELECT: + update_menu05_filesel(); + break; + case MENU_MODE_SELECT: + update_menu06_modesel(); + break; + case MENU_MISSION_SELECT: + update_menu07_missionsel(); + break; + case MENU_DIFFICULTY: + update_menu08_difficulty(); + break; + case MENU_007_OPTIONS: + update_menu09_007options(); + break; + case MENU_BRIEFING: + update_menu0A_briefing(); + break; + case MENU_MISSION_FAILED: + update_menu0C_missionfailed(); + break; + case MENU_MISSION_COMPLETE: + update_menu0D_missioncomplete(); + break; + case MENU_MP_OPTIONS: + update_menu0E_mpoptions(); + break; + case MENU_MP_CHAR_SELECT: + update_menu0F_mpcharsel(); + break; + case MENU_MP_HANDICAP: + update_menu10_mphandicap(); + break; + case MENU_MP_CONTROL_STYLE: + update_menu11_mpcontrols(); + break; + case MENU_MP_STAGE_SELECT: + update_menu12_mpstage(); + break; + case MENU_MP_SCENARIO_SELECT: + update_menu13_mpscenario(); + break; + case MENU_MP_TEAMS: + update_menu14_mpteams(); + break; + case MENU_CHEAT: + update_menu15_cheat(); + break; + case MENU_NO_CONTROLLERS: + update_menu16_nocontrollers(); + break; + case MENU_DISPLAY_CAST: + update_menu18_displaycast(); + break; + case MENU_SPECTRUM_EMU: + update_menu19_spectrum(); + } + } + if (-1 < (int)menu_update) { + current_menu = MENU_SWITCH_SCREENS; + reset_menutimer(); + } + } + MVar1 = maybe_prev_menu; + if (true) { + current_menu = maybe_prev_menu; + maybe_prev_menu = ~MENU_LEGAL_SCREEN; + if (true) { + switch(MVar1) { + case MENU_LEGAL_SCREEN: + init_menu00_legalscreen(); + break; + case MENU_NINTENDO_LOGO: + init_menu01_nintendo(); + break; + case MENU_RAREWARE_LOGO: + init_menu02_rareware(); + break; + case MENU_EYE_INTRO: + init_menu03_eyeintro(); + break; + case MENU_GOLDENEYE_LOGO: + init_menu04_goldeneyelogo(); + break; + case MENU_FILE_SELECT: + init_menu05_filesel(); + break; + case MENU_MODE_SELECT: + init_menu06_modesel(); + break; + case MENU_MISSION_SELECT: + init_menu07_missionsel(); + break; + case MENU_DIFFICULTY: + init_menu08_difficulty(); + break; + case MENU_007_OPTIONS: + init_menu09_007options(); + break; + case MENU_BRIEFING: + init_menu0A_briefing(); + break; + case MENU_RUN_STAGE: + init_menu0B_runstage(); + break; + case MENU_MISSION_FAILED: + init_menu0C_missionfailed(); + break; + case MENU_MISSION_COMPLETE: + init_menu0D_missioncomplete(); + break; + case MENU_MP_OPTIONS: + init_menu0E_mpoptions(); + break; + case MENU_MP_CHAR_SELECT: + init_menu0f_mpcharsel(); + break; + case MENU_MP_HANDICAP: + init_menu10_mphandicap(); + break; + case MENU_MP_CONTROL_STYLE: + init_menu11_mpcontrol(); + break; + case MENU_MP_STAGE_SELECT: + init_menu12_mpstage(); + break; + case MENU_MP_SCENARIO_SELECT: + init_menu13_mpscenariosel(); + break; + case MENU_MP_TEAMS: + init_menu14_mpteamsel(); + break; + case MENU_CHEAT: + init_menu15_cheat(); + break; + case MENU_NO_CONTROLLERS: + init_menu16_nocontroller(); + break; + case MENU_DISPLAY_CAST: + init_menu18_displaycast(); + break; + case MENU_SPECTRUM_EMU: + init_menu19_spectrum(); + } + } + } + switch(current_menu) { + case MENU_LEGAL_SCREEN: + interface_menu00_legalscreen(); + break; + case MENU_NINTENDO_LOGO: + interface_menu01_nintendo(); + break; + case MENU_RAREWARE_LOGO: + interface_menu02_rareware(); + break; + case MENU_EYE_INTRO: + interface_menu03_eyeintro(); + break; + case MENU_GOLDENEYE_LOGO: + interface_menu04_goldeneyelogo(); + break; + case MENU_FILE_SELECT: + interface_menu05_filesel(); + break; + case MENU_MODE_SELECT: + interface_menu06_modesel(); + break; + case MENU_MISSION_SELECT: + interface_menu07_missionsel(); + break; + case MENU_DIFFICULTY: + interface_menu08_difficulty(); + break; + case MENU_007_OPTIONS: + interface_menu09_007options(); + break; + case MENU_BRIEFING: + interface_menu0A_briefing(); + break; + case MENU_RUN_STAGE: + iVar3 = interface_menu0B_runstage(); + if (iVar3 == 0) { + if (gamemode == GAMEMODE_MULTI) { + set_menu_to_mode(MENU_MP_OPTIONS,1); + } + else { + if (selected_stage == LEVELID_CUBA) { + do_extended_cast_display(1); + set_menu_to_mode(MENU_DISPLAY_CAST,1); + } + else { + set_menu_to_mode(MENU_MISSION_FAILED,1); + } + } + } + else { + set_menu_to_mode(MENU_LEGAL_SCREEN,1); + } + break; + case MENU_MISSION_FAILED: + interface_menu0C_missionfailed(); + break; + case MENU_MISSION_COMPLETE: + interface_menu0D_missioncomplete(); + break; + case MENU_MP_OPTIONS: + interface_menu0E_mpoptions(); + break; + case MENU_MP_CHAR_SELECT: + interface_menu0F_mpcharsel(); + break; + case MENU_MP_HANDICAP: + interface_menu10_mphandicap(); + break; + case MENU_MP_CONTROL_STYLE: + interface_menu11_mpcontrols(); + break; + case MENU_MP_STAGE_SELECT: + interface_menu12_mpstage(); + break; + case MENU_MP_SCENARIO_SELECT: + interface_menu13_mpscenario(); + break; + case MENU_MP_TEAMS: + interface_menu14_mpteams(); + break; + case MENU_CHEAT: + interface_menu15_cheat(); + break; + case MENU_NO_CONTROLLERS: + interface_menu16_nocontrollers(); + break; + case MENU_SWITCH_SCREENS: + interface_menu17_switchscreens(); + break; + case MENU_DISPLAY_CAST: + interface_menu18_displaycast(); + break; + case MENU_SPECTRUM_EMU: + interface_menu19_spectrum(); + } + return; +} + + + +void menu_jump_constructor_handler(Gfx *DL) + +{ + if (true) { + switch(current_menu) { + case MENU_LEGAL_SCREEN: + constructor_menu00_legalscreen(DL); + break; + case MENU_NINTENDO_LOGO: + constructor_menu01_nintendo(DL); + break; + case MENU_RAREWARE_LOGO: + constructor_menu02_rareware(DL); + break; + case MENU_EYE_INTRO: + constructor_menu03_eyeintro(DL); + break; + case MENU_GOLDENEYE_LOGO: + constructor_menu04_goldeneyelogo(DL); + break; + case MENU_FILE_SELECT: + constructor_menu05_filesel(DL); + break; + case MENU_MODE_SELECT: + constructor_menu06_modesel(DL); + break; + case MENU_MISSION_SELECT: + constructor_menu07_missionsel(DL); + break; + case MENU_DIFFICULTY: + constructor_menu08_difficulty(DL); + break; + case MENU_007_OPTIONS: + constructor_menu09_007options(DL); + break; + case MENU_BRIEFING: + constructor_menu0A_briefing(DL); + break; + case MENU_MISSION_FAILED: + constructor_menu0C_missionfailed(DL); + break; + case MENU_MISSION_COMPLETE: + constructor_menu0D_missioncomplete(DL); + break; + case MENU_MP_OPTIONS: + constructor_menu0E_mpoptions(DL); + break; + case MENU_MP_CHAR_SELECT: + constructor_menu0F_mpcharsel(DL); + break; + case MENU_MP_HANDICAP: + constructor_menu10_mphandicap(DL); + break; + case MENU_MP_CONTROL_STYLE: + constructor_menu11_mpcontrol(DL); + break; + case MENU_MP_STAGE_SELECT: + constructor_menu12_mpstage(DL); + break; + case MENU_MP_SCENARIO_SELECT: + constructor_menu13_mpscenario(DL); + break; + case MENU_MP_TEAMS: + constructor_menu14_mpteams(DL); + break; + case MENU_CHEAT: + constructor_menu15_cheat(DL); + break; + case MENU_NO_CONTROLLERS: + constructor_menu16_nocontrollers(DL); + break; + case MENU_SWITCH_SCREENS: + constructor_menu17_switchscreens(DL); + break; + case MENU_DISPLAY_CAST: + constructor_menu18_displaycast(DL); + break; + case MENU_SPECTRUM_EMU: + constructor_menu19_spectrum(DL); + } + } + return; +} + + + +void proc_7F01B0E0(ushort *param_1,byte *param_2) + +{ + byte bVar1; + byte bVar2; + uint uVar3; + int iVar4; + ushort *puVar5; + + puVar5 = param_1 + 5; + iVar4 = (uint)*param_1 * (uint)param_1[1]; + bVar1 = *(byte *)puVar5; + while( true ) { + bVar2 = *(byte *)((int)puVar5 + 1); + puVar5 = puVar5 + 1; + uVar3 = (uint)bVar1; + iVar4 -= uVar3; + do { + uVar3 -= 1; + *param_2 = bVar2; + param_2 = param_2 + 1; + } while (0 < (int)uVar3); + if (iVar4 < 1) break; + bVar1 = *(byte *)puVar5; + } + return; +} + + + +void proc_7F01B134(ushort *param_1,ushort *param_2) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + uint uVar4; + int iVar5; + ushort *puVar6; + + iVar5 = (uint)*param_1 * (uint)param_1[1]; + bVar1 = *(byte *)(param_1 + 6); + puVar6 = param_1 + 5; + while( true ) { + bVar2 = *(byte *)((int)puVar6 + 3); + bVar3 = *(byte *)((int)puVar6 + 1); + uVar4 = (uint)*(byte *)puVar6; + iVar5 -= uVar4; + do { + uVar4 -= 1; + *param_2 = (ushort)(((int)(uint)bVar2 >> 3) << 0xb) | + (ushort)(((int)(uint)bVar1 >> 3) << 6) | + (ushort)(((int)(uint)bVar3 >> 3) << 1) | 1; + param_2 = param_2 + 1; + } while (0 < (int)uVar4); + if (iVar5 < 1) break; + bVar1 = *(byte *)(puVar6 + 3); + puVar6 = puVar6 + 2; + } + return; +} + + + +void proc_7F01B1C8(ushort *param_1,byte *param_2) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + uint uVar4; + int iVar5; + ushort *puVar6; + + puVar6 = param_1 + 5; + iVar5 = (uint)*param_1 * (uint)param_1[1]; + bVar1 = *(byte *)puVar6; + while( true ) { + bVar2 = *(byte *)((int)puVar6 + 1); + bVar3 = *(byte *)(puVar6 + 1); + uVar4 = (uint)bVar1; + iVar5 -= uVar4; + bVar1 = *(byte *)((int)puVar6 + 3); + puVar6 = puVar6 + 2; + do { + uVar4 -= 1; + *param_2 = bVar1; + param_2[1] = bVar3; + param_2[2] = bVar2; + param_2[3] = 0xff; + param_2 = param_2 + 4; + } while (0 < (int)uVar4); + if (iVar5 < 1) break; + bVar1 = *(byte *)puVar6; + } + return; +} + + + +undefined4 * +proc_7F01B240(undefined4 *param_1,int param_2,longlong param_3,int *param_4,int *param_5) + +{ + float fVar1; + float fVar2; + int iVar3; + int iVar4; + int iVar5; + float fVar6; + uint uVar7; + uint uVar8; + uint uVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + + fVar2 = flt_80051CF0; + flt_8002BB00 = (float)*param_4; + flt_8002BB04 = (float)param_4[1]; + flt_8002BB0C = (float)*param_5; + flt_8002BB10 = (float)param_5[1]; + flt_8002BB14 = (float)param_5[2]; + flt_8002BB08 = (float)param_4[2]; + fVar12 = flt_8002BB10 - flt_8002BB04; + fVar13 = flt_8002BB14 - flt_8002BB08; + fVar11 = flt_8002BB0C - flt_8002BB00; + iVar5 = 1; + iVar3 = 0; + do { + iVar4 = iVar5; + fVar10 = (float)iVar3; + *param_1 = 0xfd900000; + param_1[1] = param_2; + param_1[3] = 0x7080200; + param_1[2] = 0xf5900000; + param_1[4] = 0xe6000000; + param_1[5] = 0; + param_1[7] = 0x70db026; + param_1[6] = 0xf3000000; + param_1[9] = 0; + param_1[8] = 0xe7000000; + param_1[0xb] = 0x80200; + param_1[10] = 0xf5886e00; + param_1[0xc] = 0xf2000000; + param_1[0xd] = 0x6dc000; + fVar6 = (fVar11 * fVar10) / fVar2 + flt_8002BB00; + param_1[0xe] = 0xfa000000; + if (false) { + fVar1 = ROUND(fVar6); + } + else { + fVar1 = FLOOR(fVar6); + } + uVar7 = (uint)fVar1; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01b454; + uVar7 = (int)fVar6 | 0x80000000; + } + else { + if ((int)uVar7 < 0) { +LAB_7f01b454: + uVar7 = 0xffffffff; + } + } + fVar6 = flt_8002BB04 + (fVar12 * fVar10) / fVar2; + if (false) { + fVar1 = ROUND(fVar6); + } + else { + fVar1 = FLOOR(fVar6); + } + uVar8 = (uint)fVar1; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01b4ec; + uVar8 = (int)fVar6 | 0x80000000; + } + else { + if ((int)uVar8 < 0) { +LAB_7f01b4ec: + uVar8 = 0xffffffff; + } + } + fVar6 = flt_8002BB08 + (fVar13 * fVar10) / fVar2; + if (false) { + fVar10 = ROUND(fVar6); + } + else { + fVar10 = FLOOR(fVar6); + } + uVar9 = (uint)fVar10; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01b588; + uVar9 = (int)fVar6 | 0x80000000; + } + else { + if ((int)uVar9 < 0) { +LAB_7f01b588: + uVar9 = 0xffffffff; + } + } + param_1[0xf] = uVar7 << 0x18 | (uVar8 & 0xff) << 0x10 | (uVar9 & 0xff) << 8 | 0xff; + if (param_3 < 0) { + param_1[0x11] = (iVar3 + 0x10U & 0x3ff) << 2; + param_1[0x10] = (iVar3 + 0x11) * 4 - 1U & 0xfff | 0xe46df000; + param_1[0x13] = (uint)param_3 * -0x200000; + param_1[0x12] = 0xb4000000; + param_1[0x15] = 0x4000400; + param_1[0x14] = 0xb3000000; + } + else { + param_1[0x10] = (iVar3 + 0x11) * 4 - 1U & 0xfff | 0xe46df000; + param_1[0x11] = ((uint)param_3 & 0x3ff) << 0xe | (iVar3 + 0x10) * 4 & 0xfffU; + param_1[0x13] = 0; + param_1[0x12] = 0xb4000000; + param_1[0x15] = 0x4000400; + param_1[0x14] = 0xb3000000; + } + param_1 = param_1 + 0x16; + iVar5 = iVar4 + 1; + param_2 += 0x1b8; + iVar3 = iVar4; + if (299 < iVar5) { + return param_1; + } + } while( true ); +} + + + +undefined4 * proc_7F01B6E0(undefined4 *param_1,int param_2,int param_3) + +{ + float fVar1; + int iVar2; + int iVar3; + int iVar4; + float fVar5; + float fVar6; + uint uVar7; + uint uVar8; + uint uVar9; + + dword_8002BB18 = (float)param_3; + iVar4 = 1; + iVar2 = 0; + dword_8002BB24 = dword_8002BB18; + dword_8002BB28 = dword_8002BB18; + dword_8002BB2C = dword_8002BB18; + do { + iVar3 = iVar4; + fVar5 = (float)iVar2; + *param_1 = 0xfd100000; + param_1[1] = param_2; + param_1[3] = 0x7080200; + param_1[2] = 0xf5100000; + param_1[4] = 0xe6000000; + param_1[5] = 0; + param_1[7] = 0x713f01a; + param_1[6] = 0xf3000000; + param_1[9] = 0; + param_1[8] = 0xe7000000; + param_1[0xb] = 0x80200; + param_1[10] = 0xf510a000; + param_1[0xc] = 0xf2000000; + param_1[0xd] = 0x4fc000; + fVar6 = ((dword_8002BB18 - dword_8002BB18) * fVar5) / 217.00000000 + dword_8002BB18; + param_1[0xe] = 0xfa000000; + if (false) { + fVar1 = ROUND(fVar6); + } + else { + fVar1 = FLOOR(fVar6); + } + uVar7 = (uint)fVar1; + param_2 += 0x280; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01b8cc; + uVar7 = (int)fVar6 | 0x80000000; + } + else { + if ((int)uVar7 < 0) { +LAB_7f01b8cc: + uVar7 = 0xffffffff; + } + } + fVar6 = dword_8002BB18 + ((dword_8002BB18 - dword_8002BB18) * fVar5) / 217.00000000; + if (false) { + fVar1 = ROUND(fVar6); + } + else { + fVar1 = FLOOR(fVar6); + } + uVar8 = (uint)fVar1; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01b964; + uVar8 = (int)fVar6 | 0x80000000; + } + else { + if ((int)uVar8 < 0) { +LAB_7f01b964: + uVar8 = 0xffffffff; + } + } + fVar5 = dword_8002BB18 + ((dword_8002BB18 - dword_8002BB18) * fVar5) / 217.00000000; + if (false) { + fVar6 = ROUND(fVar5); + } + else { + fVar6 = FLOOR(fVar5); + } + uVar9 = (uint)fVar6; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f01ba00; + uVar9 = (int)fVar5 | 0x80000000; + } + else { + if ((int)uVar9 < 0) { +LAB_7f01ba00: + uVar9 = 0xffffffff; + } + } + param_1[0xf] = uVar7 << 0x18 | (uVar8 & 0xff) << 0x10 | (uVar9 & 0xff) << 8 | 0xff; + param_1[0x11] = (iVar2 + 0xcU & 0x3ff) << 2; + param_1[0x10] = (iVar2 + 0xd) * 4 - 1U & 0xfff | 0xe44ff000; + iVar4 = iVar3 + 1; + param_1[0x13] = 0; + param_1[0x12] = 0xb4000000; + param_1[0x15] = 0x4000400; + param_1[0x14] = 0xb3000000; + param_1 = param_1 + 0x16; + iVar2 = iVar3; + if (0xd9 < iVar4) { + dword_8002BB1C = dword_8002BB18; + dword_8002BB20 = dword_8002BB18; + return param_1; + } + } while( true ); +} + + + +void proc_7F01BAE0(short *param_1,int param_2) + +{ + float fVar1; + short sVar2; + short *psVar3; + int iVar4; + short sVar5; + float fVar6; + float fVar7; + undefined uVar8; + float __x; + + fVar1 = flt_80051D00; + iVar4 = 0; + if (-1 < param_2) { + do { + __x = ((float)iVar4 * fVar1) / (float)param_2; + fVar6 = sinf(__x); + fVar7 = cosf(__x); + sVar5 = (short)(int)(fVar6 * 64.00000000); + *param_1 = sVar5; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + *(undefined *)(param_1 + 6) = 0xff; + *(undefined *)((int)param_1 + 0xd) = 0xff; + *(undefined *)(param_1 + 7) = 0xff; + sVar2 = (short)(int)(fVar7 * -64.00000000); + param_1[1] = sVar2; + fVar6 = cosf(__x); + fVar6 = 143.00000000 - fVar6 * -111.00000000; + if (false) { + fVar7 = ROUND(fVar6); + } + else { + fVar7 = FLOOR(fVar6); + } + uVar8 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01bc50; + uVar8 = (undefined)(int)fVar6; + } + else { + if ((int)fVar7 < 0) { +LAB_7f01bc50: + uVar8 = 0xff; + } + } + *(undefined *)(param_1 + 6) = uVar8; + fVar6 = cosf(__x); + fVar6 = 143.00000000 - fVar6 * -111.00000000; + if (false) { + fVar7 = ROUND(fVar6); + } + else { + fVar7 = FLOOR(fVar6); + } + uVar8 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01bce8; + uVar8 = (undefined)(int)fVar6; + } + else { + if ((int)fVar7 < 0) { +LAB_7f01bce8: + uVar8 = 0xff; + } + } + *(undefined *)((int)param_1 + 0xd) = uVar8; + fVar6 = cosf(__x); + fVar6 = 143.00000000 - fVar6 * -111.00000000; + if (false) { + fVar7 = ROUND(fVar6); + } + else { + fVar7 = FLOOR(fVar6); + } + uVar8 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01bd80; + uVar8 = (undefined)(int)fVar6; + } + else { + if ((int)fVar7 < 0) { +LAB_7f01bd80: + uVar8 = 0xff; + } + } + *(undefined *)(param_1 + 7) = uVar8; + *(undefined *)((int)param_1 + 0xf) = 0; + psVar3 = param_1 + 8; + if ((iVar4 != 0) && (iVar4 < param_2)) { + *psVar3 = -sVar5; + param_1[9] = sVar2; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0; + *(undefined *)(param_1 + 0xe) = 0xff; + *(undefined *)((int)param_1 + 0x1d) = 0xff; + *(undefined *)(param_1 + 0xf) = 0xff; + fVar6 = cosf(__x); + fVar6 = 143.00000000 - fVar6 * -111.00000000; + if (false) { + fVar7 = ROUND(fVar6); + } + else { + fVar7 = FLOOR(fVar6); + } + uVar8 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01be54; + uVar8 = (undefined)(int)fVar6; + } + else { + if ((int)fVar7 < 0) { +LAB_7f01be54: + uVar8 = 0xff; + } + } + *(undefined *)(param_1 + 0xe) = uVar8; + fVar6 = cosf(__x); + fVar6 = 143.00000000 - fVar6 * -111.00000000; + if (false) { + fVar7 = ROUND(fVar6); + } + else { + fVar7 = FLOOR(fVar6); + } + uVar8 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01beec; + uVar8 = (undefined)(int)fVar6; + } + else { + if ((int)fVar7 < 0) { +LAB_7f01beec: + uVar8 = 0xff; + } + } + *(undefined *)((int)param_1 + 0x1d) = uVar8; + fVar6 = cosf(__x); + fVar6 = 143.00000000 - fVar6 * -111.00000000; + if (false) { + fVar7 = ROUND(fVar6); + } + else { + fVar7 = FLOOR(fVar6); + } + uVar8 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar6 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar6 = FLOOR(fVar6 - 2147483648.00000000); + } + if (false) goto LAB_7f01bf84; + uVar8 = (undefined)(int)fVar6; + } + else { + if ((int)fVar7 < 0) { +LAB_7f01bf84: + uVar8 = 0xff; + } + } + *(undefined *)(param_1 + 0xf) = uVar8; + *(undefined *)((int)param_1 + 0x1f) = 0; + psVar3 = param_1 + 0x10; + } + iVar4 += 2; + param_1 = psVar3; + } while (iVar4 <= param_2); + } + return; +} + + + +uint * proc_7F01BFF8(uint *param_1,uint param_2,int param_3) + +{ + bool bVar1; + int iVar2; + uint *puVar3; + uint uVar4; + + bVar1 = param_3 < 0x11; + while( true ) { + if (bVar1) { + uVar4 = SEXT14((char)param_3); + } + else { + uVar4 = 0x10; + } + param_1[1] = param_2; + *param_1 = (uVar4 - 1 & 0xf) << 0x14 | 0x4000000 | (uVar4 & 0xfff) << 4; + param_2 += 0xe0; + iVar2 = (int)((uVar4 - 3) * 0x1000000) >> 0x18; + param_1 = param_1 + 2; + do { + puVar3 = param_1; + uVar4 = iVar2 * 10; + *puVar3 = 0xbf000000; + param_1 = puVar3 + 2; + iVar2 = (iVar2 + -1) * 0x1000000 >> 0x18; + puVar3[1] = (uVar4 & 0xff) << 0x10 | (uVar4 + 10 & 0xff) << 8 | uVar4 + 0x14 & 0xff; + } while (-1 < iVar2); + param_3 += -0xe; + if (param_3 < 3) break; + bVar1 = param_3 < 0x11; + } + *param_1 = 0xb8000000; + puVar3[3] = 0; + return puVar3 + 4; +} + + + +undefined4 * insert_imageDL(Gfx *param_1) + +{ + short sVar2; + u8 *virtualAddress; + u32 uVar1; + short sVar3; + + *(undefined4 *)((int)param_1 + 4) = 0x300000; + *(undefined4 *)param_1 = 0xba001402; + sVar2 = get_video2_settings_txtClipW(); + *(uint *)(param_1 + 1) = (int)sVar2 - 1U & 0xfff | 0xff100000; + virtualAddress = get_video_settings2_frameb(); + uVar1 = osVirtualToPhysical(virtualAddress); + *(u32 *)((int)param_1 + 0xc) = uVar1; + *(undefined4 *)(param_1 + 2) = 0xf7000000; + *(undefined4 *)((int)param_1 + 0x14) = 0x10001; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + *(uint *)(param_1 + 3) = + ((int)sVar3 - 1U & 0x3ff) << 2 | 0xf6000000 | ((int)sVar2 - 1U & 0x3ff) << 0xe; + *(undefined4 *)((int)param_1 + 0x1c) = 0; + return (undefined4 *)(param_1 + 4); +} + + + +undefined4 * proc_7F01C1A4(undefined4 *param_1) + +{ + u32 uVar1; + + *param_1 = 0x1030040; + uVar1 = osVirtualToPhysical(matrix_buffer_gunbarrel_0); + param_1[1] = uVar1; + param_1[2] = 0x1020040; + uVar1 = osVirtualToPhysical((void *)(DAT_8002a7d0 * 0x40 + matrix_buffer_rarelogo_2)); + param_1[3] = uVar1; + param_1[5] = 0; + param_1[4] = 0xe7000000; + param_1[6] = 0xba001402; + param_1[7] = 0; + param_1[8] = 0xb900031d; + param_1[9] = 0x552048; + param_1[0xb] = 0x204; + param_1[10] = 0xb7000000; + return param_1 + 0xc; +} + + + +ulonglong die_blood_image_routine(void) + +{ + byte *in_v0_lo; + byte *pbVar1; + longlong in_a0; + char cStack1; + + if (in_a0 == 0) { + pPlayer->bloodcnt = -0x7ffd44d0; + } + else { + if (in_a0 == 1) { + in_v0_lo = (byte *)pPlayer->field_11AC; + if (in_v0_lo < &dword_8002C50C) { + *(byte **)&pPlayer->bloodcnt = in_v0_lo; + } + } + } + pPlayer->field_11B8 = 1 - pPlayer->field_11B8; + proc_7F0BD714(0x1e00); + *(byte **)(&pPlayer->field_11B0 + pPlayer->field_11B8) = in_v0_lo; + proc_7F0BD714(0x1e00); + pbVar1 = decrypt_bleeding_animation_data((char *)pPlayer->bloodcnt,0x50,0x60,in_v0_lo,&cStack1); + *(byte **)&pPlayer->field_11AC = pbVar1; + proc_7F01D16C(in_v0_lo,0x50,0x60,(undefined *)(&pPlayer->field_11B0)[pPlayer->field_11B8]); + proc_7F01D02C((&pPlayer->field_11B0)[pPlayer->field_11B8],0x50, + (&pPlayer->field_11B0)[pPlayer->field_11B8]); + proc_7F01CEEC((&pPlayer->field_11B0)[pPlayer->field_11B8],0x50, + (&pPlayer->field_11B0)[pPlayer->field_11B8]); + proc_7F01CC94((byte *)(&pPlayer->field_11B0)[pPlayer->field_11B8],0x1e00, + (byte *)(&pPlayer->field_11B0)[pPlayer->field_11B8]); + return (ulonglong)((undefined *)pPlayer->field_11AC < &dword_8002C50C) ^ 1; +} + + + +undefined4 * proc_7F01C400(undefined4 *param_1) + +{ + undefined4 *puVar1; + short sVar2; + short sVar3; + + *param_1 = 0xba000e02; + param_1[1] = 0; + param_1[3] = 0x2000; + param_1[2] = 0xba000c02; + puVar1 = proc_7F01C1A4(param_1 + 4); + *puVar1 = 0xbb000001; + puVar1[1] = 0x80008000; + puVar1[2] = 0xb900031d; + puVar1[3] = 0x504340; + puVar1[4] = 0xfc119623; + puVar1[5] = 0xff2fffff; + puVar1[6] = 0xba000602; + puVar1[7] = 0; + puVar1[8] = 0xfa000000; + puVar1[9] = 0x960000b4; + puVar1[10] = 0xba001301; + puVar1[0xb] = 0; + puVar1[0xc] = 0xfd900000; + puVar1[0xd] = (&pPlayer->field_11B0)[pPlayer->field_11B8] + -0x80000000; + puVar1[0xe] = 0xf5900000; + puVar1[0x10] = 0xe6000000; + puVar1[0x12] = 0xf3000000; + puVar1[0x13] = 0x777f156; + puVar1[0xf] = 0x7080200; + puVar1[0x14] = 0xe7000000; + puVar1[0x17] = 0x80200; + puVar1[0x16] = 0xf5800c00; + puVar1[0x18] = 0xf2000000; + puVar1[0x19] = 0x17c13c; + puVar1[0x15] = 0; + puVar1[0x11] = 0; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1[0x1a] = (int)sVar3 * 4 - 1U & 0xfff | 0xe4000000 | ((int)sVar2 * 4 - 1U & 0xfff) << 0xc; + puVar1[0x1b] = 0; + puVar1[0x1c] = 0xb4000000; + puVar1[0x1d] = 0; + puVar1[0x1e] = 0xb3000000; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + if (sVar3 == 0) { + trap(0x1c00); + } + if ((sVar3 == -1) && (false)) { + trap(0x1800); + } + puVar1[0x1f] = 0x14000 / (int)sVar3 & 0xffffU | 0x18000 / (int)sVar2 << 0x10; + if (sVar2 == 0) { + trap(0x1c00); + } + if ((sVar2 == -1) && (false)) { + trap(0x1800); + } + return puVar1 + 0x20; +} + + + +undefined4 * proc_7F01C670(undefined4 *param_1) + +{ + short sVar1; + short sVar2; + short sVar3; + short sVar4; + int iVar5; + + *param_1 = 0xba000e02; + param_1[1] = 0; + param_1[2] = 0xba000c02; + param_1[3] = 0x2000; + param_1[4] = 0xba001402; + param_1[5] = 0; + param_1[7] = 0x204; + param_1[6] = 0xb7000000; + param_1[8] = 0xbb000001; + param_1[9] = 0x80008000; + param_1[10] = 0xb900031d; + param_1[0xb] = 0x504340; + param_1[0xd] = 0xff2fffff; + param_1[0xc] = 0xfc119623; + param_1[0xe] = 0xba000602; + param_1[0xf] = 0; + param_1[0x10] = 0xfa000000; + param_1[0x11] = 0x960000b4; + param_1[0x12] = 0xba001301; + param_1[0x13] = 0; + param_1[0x14] = 0xfd900000; + param_1[0x15] = (&pPlayer->field_11B0)[pPlayer->field_11B8] + -0x80000000; + param_1[0x16] = 0xf5900000; + param_1[0x17] = 0x7080200; + param_1[0x18] = 0xe6000000; + param_1[0x19] = 0; + param_1[0x1a] = 0xf3000000; + param_1[0x1b] = 0x777f156; + param_1[0x1c] = 0xe7000000; + param_1[0x1d] = 0; + param_1[0x1f] = 0x80200; + param_1[0x1e] = 0xf5800c00; + param_1[0x20] = 0xf2000000; + param_1[0x21] = 0x17c13c; + sVar1 = get_video2_settings_width(); + sVar2 = get_video2_settings_ulx(); + sVar3 = get_video2_settings_uly(); + sVar4 = get_video2_settings_height(); + param_1[0x22] = + ((int)sVar4 + (int)sVar3) * 4 - 1U & 0xfff | 0xe4000000 | + (((int)sVar2 + (int)sVar1) * 4 - 1U & 0xfff) << 0xc; + sVar1 = get_video2_settings_ulx(); + sVar2 = get_video2_settings_uly(); + param_1[0x23] = ((int)sVar2 & 0x3ffU) << 2 | ((int)sVar1 & 0x3ffU) << 0xe; + param_1[0x24] = 0xb4000000; + param_1[0x25] = 0; + param_1[0x26] = 0xb3000000; + sVar1 = get_video2_settings_width(); + iVar5 = (int)sVar1; + sVar1 = get_video2_settings_height(); + if (sVar1 == 0) { + trap(0x1c00); + } + if ((sVar1 == -1) && (false)) { + trap(0x1800); + } + param_1[0x27] = 0x14000 / (int)sVar1 & 0xffffU | 0x18000 / iVar5 << 0x10; + param_1[0x28] = 0xe7000000; + param_1[0x29] = 0; + if (iVar5 == 0) { + trap(0x1c00); + } + if ((iVar5 == -1) && (false)) { + trap(0x1800); + } + param_1[0x2b] = 0x40; + param_1[0x2a] = 0xba000602; + param_1[0x2d] = 0x80000; + param_1[0x2c] = 0xba001301; + return param_1 + 0x2e; +} + + + +undefined4 * proc_7F01CA18(undefined4 *param_1) + +{ + undefined4 *puVar1; + short sVar2; + short sVar3; + + puVar1 = proc_7F01C1A4(param_1); + *puVar1 = 0xb900031d; + puVar1[1] = 0x504340; + puVar1[2] = 0xfcffffff; + puVar1[3] = 0xfffdf6fb; + puVar1[4] = 0xfa000000; + puVar1[5] = 0x960000b4; + puVar1[6] = 0xba000602; + puVar1[7] = 0; + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1[8] = ((int)sVar3 & 0x3ffU) << 2 | 0xf6000000 | ((int)sVar2 & 0x3ffU) << 0xe; + puVar1[9] = 0; + return puVar1 + 10; +} + + + +byte * decrypt_bleeding_animation_data + (char *param_1,byte param_2,uint param_3,byte *param_4,char *param_5) + +{ + char cVar1; + char cVar2; + char cVar3; + byte bVar5; + uint uVar4; + byte *pbVar6; + byte bVar7; + char cVar8; + byte bVar9; + + cVar1 = *param_1; + param_3 &= 0xff; + *param_5 = cVar1; + bVar5 = param_1[1]; + pbVar6 = (byte *)(param_1 + 1); + while( true ) { + pbVar6 = pbVar6 + 1; + bVar9 = 0xff; + if (bVar5 == 0xff) { + bVar5 = *pbVar6; + bVar7 = 0; + pbVar6 = pbVar6 + 2; + while (bVar5 != 0xff) { + bVar7 += bVar5; + while (bVar5 != 0) { + bVar5 -= 1; + *param_4 = bVar9; + param_4 = param_4 + 1; + } + bVar5 = *pbVar6; + bVar9 ^= 0xff; + pbVar6 = pbVar6 + 1; + } + while (bVar7 < param_2) { + bVar7 += 1; + *param_4 = bVar9; + param_4 = param_4 + 1; + } + param_3 -= 1; + } + else { + cVar8 = cVar1 + (bVar5 & 0x1f); + uVar4 = ((int)(uint)bVar5 >> 5) + 1; + param_3 -= uVar4; + cVar2 = cVar8; + do { + while (cVar3 = param_2 - cVar8, cVar2 != '\0') { + *param_4 = 0xff; + param_4 = param_4 + 1; + cVar2 = cVar2 + -1; + } + while (cVar3 != '\0') { + *param_4 = 0; + param_4 = param_4 + 1; + cVar3 = cVar3 + -1; + } + uVar4 = uVar4 - 1 & 0xff; + cVar2 = cVar8; + } while (uVar4 != 0); + } + param_3 &= 0xff; + if (param_3 == 0) break; + bVar5 = *pbVar6; + pbVar6 = pbVar6; + } + return pbVar6; +} + + + +void proc_7F01CC94(byte *param_1,short param_2,byte *param_3) + +{ + if (param_2 != 0) { + do { + param_2 += -1; + *param_3 = (byte)((int)(uint)param_1[1] >> 4) | *param_1 & 0xf0; + param_3 = param_3 + 1; + param_1 = param_1 + 2; + } while (param_2 != 0); + } + return; +} + + + +void proc_7F01CCEC(int param_1,uint param_2,uint param_3,int param_4,byte param_5) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + uint uVar14; + + param_3 &= 0xff; + param_2 &= 0xff; + iVar1 = 0; + if (param_3 != 0) { + do { + iVar13 = 0; + if (param_2 != 0) { + iVar4 = iVar1 - (uint)param_5; + iVar6 = param_3 - 1; + iVar7 = iVar1 + (uint)param_5; + do { + uVar2 = 0; + iVar3 = 0; + if (iVar4 < 0) { + iVar12 = 0; + } + else { + iVar12 = iVar4 * 0x10000 >> 0x10; + } + iVar8 = iVar7; + if (iVar6 < iVar7) { + iVar8 = iVar6; + } + if (iVar8 < iVar12) { + uVar14 = 0; + } + else { + iVar8 = iVar13 - (uint)param_5; + iVar10 = param_2 - 1; + iVar11 = iVar13 + (uint)param_5; + do { + if (iVar8 < 0) { + iVar9 = 0; + } + else { + iVar9 = iVar8 * 0x10000 >> 0x10; + } + iVar5 = iVar11; + if (iVar10 < iVar11) { + iVar5 = iVar10; + } + if (iVar9 <= iVar5) { + do { + iVar5 = param_1 + iVar9; + iVar9 = (iVar9 + 1) * 0x10000 >> 0x10; + uVar2 += 1; + iVar3 += (uint)*(byte *)(iVar5 + iVar12 * param_2); + iVar5 = iVar11; + if (iVar10 < iVar11) { + iVar5 = iVar10; + } + } while (iVar9 <= iVar5); + } + iVar12 = (int)(short)((short)iVar12 + 1); + iVar9 = iVar7; + if (iVar6 < iVar7) { + iVar9 = iVar6; + } + } while (iVar12 <= iVar9); + uVar14 = uVar2 >> 1; + } + iVar12 = param_4 + iVar13; + iVar13 = (iVar13 + 1) * 0x10000 >> 0x10; + if (uVar2 == 0) { + trap(0x1c00); + } + *(undefined *)(iVar12 + iVar1 * param_2) = (char)((uVar14 + iVar3) / uVar2); + } while (iVar13 < (int)param_2); + } + iVar1 = (iVar1 + 1) * 0x10000 >> 0x10; + } while (iVar1 < (int)param_3); + } + return; +} + + + +void proc_7F01CEEC(int param_1,int param_2,int param_3) + +{ + byte *pbVar1; + undefined *puVar2; + int iVar3; + byte *pbVar4; + int iVar5; + undefined *puVar6; + + pbVar4 = (byte *)(param_1 + 0x61); + puVar6 = (undefined *)(param_3 + 0x61); + iVar3 = 1; + if (1 < param_2 + -1) { + do { + *puVar6 = (char)((int)((uint)pbVar4[-0x60] + (uint)pbVar4[-1] + (uint)*pbVar4 + + (uint)pbVar4[-0x61] + 2) >> 2); + puVar6[1] = (char)((int)((uint)pbVar4[-0x5f] + (uint)*pbVar4 + (uint)pbVar4[1] + + (uint)pbVar4[-0x60] + 2) >> 2); + iVar5 = 3; + pbVar1 = pbVar4 + 2; + puVar2 = puVar6 + 2; + do { + puVar6 = puVar2; + pbVar4 = pbVar1; + *puVar6 = (char)((int)((uint)pbVar4[-0x60] + (uint)pbVar4[-1] + (uint)*pbVar4 + + (uint)pbVar4[-0x61] + 2) >> 2); + puVar6[1] = (char)((int)((uint)pbVar4[-0x5f] + (uint)*pbVar4 + (uint)pbVar4[1] + + (uint)pbVar4[-0x60] + 2) >> 2); + puVar6[2] = (char)((int)((uint)pbVar4[-0x5e] + (uint)pbVar4[1] + (uint)pbVar4[2] + + (uint)pbVar4[-0x5f] + 2) >> 2); + iVar5 += 4; + puVar6[3] = (char)((int)((uint)pbVar4[-0x5d] + (uint)pbVar4[2] + (uint)pbVar4[3] + + (uint)pbVar4[-0x5e] + 2) >> 2); + pbVar1 = pbVar4 + 4; + puVar2 = puVar6 + 4; + } while (iVar5 != 0x5f); + iVar3 += 1; + puVar6 = puVar6 + 6; + pbVar4 = pbVar4 + 6; + } while (iVar3 != param_2 + -1); + } + return; +} + + + +void proc_7F01D02C(int param_1,int param_2,int param_3) + +{ + byte *pbVar1; + undefined *puVar2; + int iVar3; + byte *pbVar4; + int iVar5; + undefined *puVar6; + + pbVar4 = (byte *)(param_1 + 0x61); + puVar6 = (undefined *)(param_3 + 0x61); + iVar3 = 1; + if (1 < param_2 + -1) { + do { + *puVar6 = (char)((int)((uint)pbVar4[0x60] + (uint)pbVar4[1] + (uint)*pbVar4 + + (uint)pbVar4[0x61] + 2) >> 2); + puVar6[1] = (char)((int)((uint)pbVar4[0x61] + (uint)pbVar4[2] + (uint)pbVar4[1] + + (uint)pbVar4[0x62] + 2) >> 2); + iVar5 = 3; + pbVar1 = pbVar4 + 2; + puVar2 = puVar6 + 2; + do { + puVar6 = puVar2; + pbVar4 = pbVar1; + *puVar6 = (char)((int)((uint)pbVar4[0x60] + (uint)pbVar4[1] + (uint)*pbVar4 + + (uint)pbVar4[0x61] + 2) >> 2); + puVar6[1] = (char)((int)((uint)pbVar4[0x61] + (uint)pbVar4[2] + (uint)pbVar4[1] + + (uint)pbVar4[0x62] + 2) >> 2); + puVar6[2] = (char)((int)((uint)pbVar4[0x62] + (uint)pbVar4[3] + (uint)pbVar4[2] + + (uint)pbVar4[99] + 2) >> 2); + iVar5 += 4; + puVar6[3] = (char)((int)((uint)pbVar4[99] + (uint)pbVar4[4] + (uint)pbVar4[3] + + (uint)pbVar4[100] + 2) >> 2); + pbVar1 = pbVar4 + 4; + puVar2 = puVar6 + 4; + } while (iVar5 != 0x5f); + iVar3 += 1; + puVar6 = puVar6 + 6; + pbVar4 = pbVar4 + 6; + } while (iVar3 != param_2 + -1); + } + return; +} + + + +void proc_7F01D16C(undefined *param_1,int param_2,int param_3,undefined *param_4) + +{ + undefined uVar1; + undefined *puVar2; + undefined *puVar3; + undefined *puVar4; + + puVar3 = param_1 + param_2; + puVar2 = param_1 + param_2 * param_3; + puVar4 = puVar3; + do { + do { + uVar1 = *param_1; + param_1 = param_1 + 1; + *param_4 = uVar1; + puVar3 = puVar3 + 1; + param_4 = param_4 + param_3; + } while (param_1 < puVar4); + param_4 = param_4 + (1 - param_2 * param_3); + puVar4 = puVar3; + } while (param_1 < puVar2); + return; +} + + + +byte * proc_7F01D1C0(byte *param_1,int param_2,int param_3,byte *param_4) + +{ + byte bVar1; + byte bVar2; + byte *pbVar3; + byte *pbVar4; + uint uVar5; + int iVar6; + int iVar7; + byte bVar9; + int iVar8; + + bVar1 = *param_1; + pbVar3 = param_1 + 1; + do { + bVar2 = *pbVar3; + pbVar4 = pbVar3 + 1; + bVar9 = 0xff; + if (bVar2 == 0xff) { + bVar2 = *pbVar4; + iVar6 = 0; + pbVar4 = pbVar3 + 2; + while (bVar2 != 0xff) { + uVar5 = (uint)bVar2; + iVar6 += uVar5; + if (bVar2 != 0) { + do { + uVar5 -= 1; + *param_4 = bVar9; + param_4 = param_4 + 1; + } while (0 < (int)uVar5); + } + bVar2 = *pbVar4; + bVar9 ^= 0xff; + pbVar4 = pbVar4 + 1; + } + while (iVar6 < param_2) { + iVar6 += 1; + *param_4 = bVar9; + param_4 = param_4 + 1; + } + param_3 += -1; + } + else { + iVar7 = ((uint)bVar2 & 0x1f) + (uint)bVar1; + iVar6 = (uint)(bVar2 >> 5) + 1; + param_3 -= iVar6; + do { + iVar8 = iVar7; + if (iVar7 != 0) { + do { + iVar8 += -1; + *param_4 = 0xff; + param_4 = param_4 + 1; + } while (0 < iVar8); + } + iVar8 = param_2 - iVar7; + while (0 < iVar8) { + iVar8 += -1; + *param_4 = 0; + param_4 = param_4 + 1; + } + iVar6 += -1; + } while (0 < iVar6); + } + pbVar3 = pbVar4; + } while (0 < param_3); + return pbVar4; +} + + + +f32 get_007_reaction_speed(void) + +{ + DIFFICULTY DVar1; + f32 fVar2; + + DVar1 = get_current_difficulty(); + fVar2 = slider_007_mode_reaction; + if (DVar1 != DIFFICULTY_007) { + fVar2 = 0.00000000; + } + return fVar2; +} + + + +f32 get_007_health_mod(void) + +{ + DIFFICULTY DVar1; + f32 fVar2; + + DVar1 = get_current_difficulty(); + fVar2 = slider_007_mode_health; + if (DVar1 != DIFFICULTY_007) { + fVar2 = 1.00000000; + } + return fVar2; +} + + + +f32 get_007_damage_mod(void) + +{ + DIFFICULTY DVar1; + f32 fVar2; + + DVar1 = get_current_difficulty(); + fVar2 = slider_007_mode_accuracy; + if (DVar1 != DIFFICULTY_007) { + fVar2 = 1.00000000; + } + return fVar2; +} + + + +f32 get_007_accuracy_mod(void) + +{ + DIFFICULTY DVar1; + f32 fVar2; + + DVar1 = get_current_difficulty(); + fVar2 = slider_007_mode_damage; + if (DVar1 != DIFFICULTY_007) { + fVar2 = 1.00000000; + } + return fVar2; +} + + + +void end_of_mission_briefing(void) + +{ + short sVar1; + int iVar3; + save_file *folder; + ulonglong uVar2; + + if (((-1 < briefingpage) && (selected_difficulty != DIFFICULTY_007)) && + (append_cheat_sp == FALSE)) { + sVar1 = (&solo_target_times_ARRAY_8002b564 + [mission_folder_setup_entries[briefingpage].mission_num].agent_time) + [selected_difficulty]; + iVar3 = getMissiontime(); + unlock_stage_in_folder_on_difficulty + (selected_folder_num, + (longlong)mission_folder_setup_entries[briefingpage].mission_num, + (longlong)selected_difficulty,iVar3 / 0x3c); + iVar3 = getMissiontime(); + if ((longlong)(iVar3 / 0x3c) <= (longlong)sVar1) { + folder = getEEPROMforFoldernum(selected_folder_num); + uVar2 = check_if_cheat_unlocked + (folder,(longlong) + mission_folder_setup_entries[briefingpage].mission_num); + if (uVar2 == 0) { + proc_7F01E760(selected_folder_num, + mission_folder_setup_entries[briefingpage].mission_num); + newcheatunlocked = 1; + return; + } + } + newcheatunlocked = 0; + } + return; +} + + + +void sub_GAME_7F01D500(void) + +{ + get_screen_ratio_settings_for_mpgame_from_folder(selected_folder_num); + return; +} + + + +void deleteCurrentSelectedFolder(void) + +{ + delete_update_eeprom_file(selected_folder_num); + return; +} + + + +void copyCurrentEEPROMtoStack(void) + +{ + copy_eeprom_to_stack_set_folder_num(selected_folder_num); + return; +} + + + +u8 getSelectedFolderBond(void) + +{ + u32 uVar1; + u8 bond; + + uVar1 = removed_would_have_returned_bond_for_folder_num(selected_folder_num); + return (u8)uVar1; +} + + + +void set_selected_folder_num(u32 foldernum) + +{ + selected_folder_num = foldernum; + return; +} + + + +void set_selected_difficulty(DIFFICULTY difficulty) + +{ + if (difficulty != DIFFICULTY_AGENT) { + if (difficulty == DIFFICULTY_SECRET) { + selected_difficulty = DIFFICULTY_SECRET; + return; + } + if (difficulty == DIFFICULTY_00) { + selected_difficulty = DIFFICULTY_00; + return; + } + if (difficulty == DIFFICULTY_007) { + selected_difficulty = DIFFICULTY_007; + return; + } + } + selected_difficulty = DIFFICULTY_AGENT; + return; +} + + + +void set_solo_and_ptr_briefing(LEVELID level) + +{ + gamemode = GAMEMODE_SOLO; + selected_stage = level; + briefingpage = pull_and_display_text_for_folder_a0(level); + return; +} + + + +void proc_7F01D61C(undefined4 *param_1) + +{ + copy_eeprom_from_to(selected_folder_num,(int)param_1); + return; +} + + + +void proc_7F01D644(undefined4 *param_1) + +{ + selected_folder_num_copy = selected_folder_num; + selected_folder_num = 100; + copy_eepromfile_a0_from_a1_to_buffer(100,(save_file *)param_1); + return; +} + + + +void store_favorite_weapon_current_player(u32 right,u32 left) + +{ + u32 uVar1; + + uVar1 = get_cur_playernum(); + (&fav_weapon_player1)[uVar1].right = right; + (&fav_weapon_player1)[uVar1].left = left; + return; +} + + + +undefined4 proc_7F01D6C0(void) + +{ + undefined4 uVar1; + + uVar1 = save_7000C6FC(); + return uVar1; +} + + + +void proc_7F01D6E0(void) + +{ + u32 *puVar1; + u32 *puVar2; + save_file *psVar3; + save_file *psVar4; + undefined auStackX0 [16]; + u32 auStack96 [24]; + + psVar3 = &dword_8002C520; + puVar1 = auStack96; + do { + psVar4 = (save_file *)&psVar3->controller_config; + *puVar1 = psVar3->checksum1; + puVar1[1] = psVar3->checksum2; + puVar1[2] = *(u32 *)&psVar3->completion_bitflags; + psVar3 = psVar4; + puVar1 = puVar1 + 3; + } while (psVar4 != &save_file_8002c580); + puVar1 = auStack96; + psVar3 = &save6; + do { + puVar2 = puVar1 + 3; + psVar3->checksum1 = *puVar1; + psVar3->checksum2 = puVar1[1]; + *(u32 *)&psVar3->completion_bitflags = puVar1[2]; + puVar1 = puVar2; + psVar3 = (save_file *)&psVar3->controller_config; + } while (puVar2 != (u32 *)register0x000000ec); + return; +} + + + +int proc_7F01D758(uint *param_1) + +{ + int iVar1; + + iVar1 = proc_7F01D6C0(); + if (iVar1 != 0) { + proc_7F09B600((byte *)(param_1 + 2),(byte *)(param_1 + 8),param_1); + iVar1 = save_7000C808(0,(u8 *)param_1,0x20); + } + return iVar1; +} + + + +void proc_7F01D7A0(uint *param_1) + +{ + int iVar1; + + if ((((uint *)0x8006991f < param_1) && (param_1 <= save_file_80069aa0.field_0x5d + 2)) && + (iVar1 = proc_7F01D6C0(), iVar1 != 0)) { + proc_7F09B600((byte *)(param_1 + 2),(byte *)(param_1 + 0x18),param_1); + save_7000C808((char)((uint)(((int)(param_1 + 0x1ffe59b8) / 0x60) * 0x60) >> 3) + 4, + (u8 *)param_1,0x60); + } + return; +} + + + +void proc_7F01D840(uint *param_1) + +{ + u32 *puVar1; + u32 *puVar2; + u32 *puVar3; + save_file *psVar4; + save_file *psVar5; + undefined auStackX0 [16]; + u32 auStack96 [24]; + + puVar2 = auStack96; + psVar4 = &save_file_8002c580; + puVar1 = puVar2; + do { + psVar5 = (save_file *)&psVar4->controller_config; + *puVar1 = psVar4->checksum1; + puVar1[1] = psVar4->checksum2; + puVar1[2] = *(u32 *)&psVar4->completion_bitflags; + psVar4 = psVar5; + puVar1 = puVar1 + 3; + puVar3 = param_1; + } while (psVar5 != &save_file_8002c5e0); + do { + puVar1 = puVar2 + 3; + *puVar3 = *puVar2; + puVar3[1] = puVar2[1]; + puVar3[2] = puVar2[2]; + puVar2 = puVar1; + puVar3 = puVar3 + 3; + } while (puVar1 != (u32 *)register0x000000ec); + proc_7F01D7A0(param_1); + return; +} + + + +u32 getEEPROMFoldernum(save_file *eeprom) + +{ + return (u32)((uint)eeprom->completion_bitflags & 7); +} + + + +void setEEPROMtoFoldernum(save_file *eeprom,byte folder) + +{ + byte bVar1; + + bVar1 = eeprom->completion_bitflags & 0xf8; + eeprom->completion_bitflags = bVar1; + eeprom->completion_bitflags = bVar1 | folder & 7; + return; +} + + + +int set_eeprom_flag_0x18(save_file *folder) + +{ + return (int)((uint)folder->completion_bitflags & 0x18) >> 3; +} + + + +void reset_eeprom_flag_0x18(save_file *folder,int value) + +{ + byte foldernum; + + foldernum = folder->completion_bitflags & 0xe7; + folder->completion_bitflags = foldernum; + folder->completion_bitflags = foldernum | (byte)(value << 3) & 0x18; + return; +} + + + +int get_selected_bond(save_file *folder) + +{ + return (int)((uint)folder->completion_bitflags & 0x60) >> 5; +} + + + +void set_selected_bond(save_file *folder,int bond) + +{ + byte bVar1; + + bVar1 = folder->completion_bitflags & 0x9f; + folder->completion_bitflags = bVar1; + folder->completion_bitflags = bVar1 | (byte)(bond << 5) & 0x60; + return; +} + + + +ulonglong check_if_eeprom_flag_set_0x80(save_file *folder) + +{ + return (ulonglong)((folder->completion_bitflags & 0x80) != 0); +} + + + +void toggle_eeprom_flag_set_0x80(save_file *folder,longlong mode) + +{ + if (mode == 0) { + folder->completion_bitflags = folder->completion_bitflags & 0x7f; + return; + } + folder->completion_bitflags = folder->completion_bitflags | 0x80; + return; +} + + + +ulonglong get_eeprom_stage_complete_time_for_difficulty + (save_file *eepromfile,STAGENUM stage,DIFFICULTY difficulty) + +{ + u32 foldernum; + BOOL BVar1; + int iVar2; + uint uVar3; + uint uVar4; + + if (-1 < (int)stage) { + if (0x13 < (int)stage) { + return 0; + } + if ((-1 < difficulty) && (difficulty < 4)) { + if (difficulty == DIFFICULTY_007) { + foldernum = getEEPROMFoldernum(eepromfile); + BVar1 = is007ModeUnlockedinFolder(foldernum); + if (BVar1 != FALSE) { + return 0x3ff; + } + return 0; + } + uVar3 = (difficulty * 0x14 + stage) * 10; + uVar4 = uVar3 & 7; + iVar2 = (int)uVar3 >> 3; + if (uVar4 == 6) { + iVar2 = (int)&eepromfile->checksum1 + iVar2; + return (ulonglong)*(byte *)(iVar2 + 0x13) | + (longlong)(int)(((uint)*(byte *)(iVar2 + 0x12) & 3) << 8); + } + if (uVar4 != 4) { + if (uVar4 == 2) { + iVar2 = (int)&eepromfile->checksum1 + iVar2; + return (longlong) + (int)((int)((uint)*(byte *)(iVar2 + 0x13) & 0xf0) >> 4 | + ((uint)*(byte *)(iVar2 + 0x12) & 0x3f) << 4); + } + if (uVar4 == 0) { + iVar2 = (int)&eepromfile->checksum1 + iVar2; + return (longlong) + (int)((int)((uint)*(byte *)(iVar2 + 0x13) & 0xc0) >> 6 | + (uint)*(byte *)(iVar2 + 0x12) << 2); + } + return 0; + } + iVar2 = (int)&eepromfile->checksum1 + iVar2; + return (longlong) + (int)((int)((uint)*(byte *)(iVar2 + 0x13) & 0xfc) >> 2 | + ((uint)*(byte *)(iVar2 + 0x12) & 0xf) << 6); + } + } + return 0; +} + + + +void proc_7F01DAE4(int param_1,longlong param_2,longlong param_3,longlong param_4) + +{ + int iVar1; + byte bVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte bVar6; + + iVar1 = (int)param_4; + if ((((-1 < param_2) && (param_2 < 0x14)) && (-1 < param_3)) && (param_3 < 3)) { + if (param_4 == 0) { + iVar1 = 0x4f; + } + else { + if (0x3ff < param_4) { + iVar1 = 0x3ff; + } + } + uVar3 = ((int)param_3 * 0x14 + (int)param_2) * 10; + uVar4 = uVar3 & 7; + iVar5 = (int)uVar3 >> 3; + if (uVar4 == 6) { + param_1 += iVar5; + bVar6 = *(byte *)(param_1 + 0x12) & 0xfc; + *(byte *)(param_1 + 0x12) = bVar6; + *(undefined *)(param_1 + 0x13) = 0; + *(byte *)(param_1 + 0x12) = bVar6 | (byte)((uint)iVar1 >> 8) & 3; + *(undefined *)(param_1 + 0x13) = (char)iVar1; + } + else { + if (uVar4 == 4) { + param_1 += iVar5; + bVar6 = *(byte *)(param_1 + 0x12) & 0xf0; + bVar2 = *(byte *)(param_1 + 0x13) & 3; + *(byte *)(param_1 + 0x12) = bVar6; + *(byte *)(param_1 + 0x13) = bVar2; + *(byte *)(param_1 + 0x12) = bVar6 | (byte)(iVar1 >> 6) & 0xf; + *(byte *)(param_1 + 0x13) = bVar2 | (byte)(iVar1 << 2); + return; + } + if (uVar4 == 2) { + param_1 += iVar5; + bVar6 = *(byte *)(param_1 + 0x12) & 0xc0; + bVar2 = *(byte *)(param_1 + 0x13) & 0xf; + *(byte *)(param_1 + 0x12) = bVar6; + *(byte *)(param_1 + 0x13) = bVar2; + *(byte *)(param_1 + 0x12) = bVar6 | (byte)(iVar1 >> 4) & 0x3f; + *(byte *)(param_1 + 0x13) = bVar2 | (byte)(iVar1 << 4); + return; + } + if (uVar4 == 0) { + param_1 += iVar5; + bVar6 = *(byte *)(param_1 + 0x13) & 0x3f; + *(undefined *)(param_1 + 0x12) = 0; + *(byte *)(param_1 + 0x13) = bVar6; + *(undefined *)(param_1 + 0x12) = (char)(iVar1 >> 2); + *(byte *)(param_1 + 0x13) = bVar6 | (byte)(iVar1 << 6); + return; + } + } + } + return; +} + + + +BOOL doesSaveHaveStageCompletedOnDifficulty(save_file *folder,STAGENUM stage,DIFFICULTY difficulty) + +{ + ulonglong uVar1; + + if (-1 < (int)stage) { + if (0x13 < (int)stage) { + return FALSE; + } + if (-1 < difficulty) { + if (3 < difficulty) { + return FALSE; + } + uVar1 = get_eeprom_stage_complete_time_for_difficulty(folder,stage,difficulty); + return (uint)(uVar1 != 0); + } + } + return FALSE; +} + + + +void proc_7F01DCB0(int param_1,longlong param_2,longlong param_3,int param_4) + +{ + ulonglong uVar1; + + if ((((-1 < param_2) && (param_2 < 0x14)) && (-1 < param_3)) && (param_3 < 4)) { + uVar1 = get_eeprom_stage_complete_time_for_difficulty + ((save_file *)param_1,(STAGENUM)param_2,(DIFFICULTY)param_3); + if ((uVar1 == 0) || ((longlong)param_4 < (longlong)uVar1)) { + proc_7F01DAE4(param_1,(longlong)(int)(STAGENUM)param_2,(longlong)(DIFFICULTY)param_3, + (longlong)param_4); + } + } + return; +} + + + +ulonglong check_if_cheat_unlocked(save_file *folder,longlong cheat) + +{ + if ((-1 < cheat) && (cheat < 0x14)) { + return (ulonglong) + (((longlong)(1 << ((uint)cheat & 0x1f)) & + ((ulonglong)folder->unlocked_cheats1 | + (longlong)(int)((uint)folder->unlocked_cheats3 << 0x18) | + (longlong)(int)((uint)folder->unlocked_cheats3 << 0x10) | + (longlong)(int)((uint)folder->unlocked_cheats2 << 8))) != 0); + } + return 0; +} + + + +void proc_7F01DD74(int param_1,longlong param_2) + +{ + uint uVar1; + int iVar2; + + if ((-1 < param_2) && (param_2 < 0x14)) { + uVar1 = 1 << ((uint)param_2 & 0x1f); + uVar1._3_1_ = (byte)uVar1; + iVar2 = 0; + while (0xff < uVar1) { + uVar1._3_1_ = (byte)(uVar1 >> 8); + iVar2 += 1; + uVar1 = uVar1 >> 8; + } + *(byte *)(param_1 + iVar2 + 0xe) = *(byte *)(param_1 + iVar2 + 0xe) | (byte)uVar1; + } + return; +} + + + +save_file * getEEPROMforFoldernum(u32 foldernum) + +{ + ulonglong uVar1; + u32 uVar2; + save_file *folder; + + folder = &save1; + while ((uVar1 = check_if_eeprom_flag_set_0x80(folder), uVar1 != 0 || + (uVar2 = getEEPROMFoldernum(folder), uVar2 != foldernum))) { + folder = folder + 1; + if (folder == &save6) { + folder = NULL; + if (foldernum == 100) { + folder = &save6; + } + return folder; + } + } + return folder; +} + + + +int proc_7F01DE50(void) + +{ + ulonglong uVar1; + int iVar2; + save_file *folder; + + folder = &save1; + iVar2 = 0; + do { + uVar1 = check_if_eeprom_flag_set_0x80(folder); + if (uVar1 != 0) { + return iVar2; } iVar2 += 1; - iVar3 += 0x10; - } while (iVar2 != 0x4b); - curplayer = SEXT48((int)curplayer + 1); - } while (curplayer != numplayers); - } - set_cur_player(playernum); - return; + folder = folder + 1; + } while (iVar2 != 5); + return -1; } -int proc_7F092774(int param_1) +void proc_7F01DEB4(int param_1) { - byte *pbVar1; - - if (*(u16 *)(&dword_8003F804 + param_1 * 0x10) == 0) { - pbVar1 = get_textptr_for_textID(0xb028); - } - else { - pbVar1 = get_textptr_for_textID(*(u16 *)(&dword_8003F804 + param_1 * 0x10)); - } - return (int)pbVar1; + int iVar1; + u32 *puVar2; + u32 *puVar3; + save_file *psVar4; + save_file *eeprom; + u32 auStack100 [24]; + u32 uStack4; + + iVar1 = proc_7F01DE50(); + if (-1 < iVar1) { + psVar4 = &save_file_8002c5e0; + puVar2 = auStack100; + do { + eeprom = (save_file *)&psVar4->controller_config; + *puVar2 = psVar4->checksum1; + puVar2[1] = psVar4->checksum2; + puVar2[2] = *(u32 *)&psVar4->completion_bitflags; + psVar4 = eeprom; + puVar2 = puVar2 + 3; + } while (eeprom != (save_file *)&DAT_8002c640); + eeprom = &save1 + iVar1; + puVar2 = auStack100; + psVar4 = eeprom; + do { + puVar3 = puVar2 + 3; + psVar4->checksum1 = *puVar2; + psVar4->checksum2 = puVar2[1]; + *(u32 *)&psVar4->completion_bitflags = puVar2[2]; + puVar2 = puVar3; + psVar4 = (save_file *)&psVar4->controller_config; + } while (puVar3 != &uStack4); + setEEPROMtoFoldernum(eeprom,(byte)param_1); + toggle_eeprom_flag_set_0x80(eeprom,0); + set_selected_bond(eeprom,param_1); + proc_7F01D7A0((uint *)eeprom); + } + return; } -uint proc_7F0927BC(int param_1) +// WARNING: Could not reconcile some variable overlaps + +void proc_7F01DF90(void) { - u32 uVar1; - - uVar1 = get_cur_playernum(); - return (int)(uint)(byte)(&DAT_80079e30)[param_1] >> (uVar1 & 0x1f) & 1; + bool bVar1; + int iVar3; + ulonglong uVar2; + uint uVar4; + uint uVar5; + u32 uVar6; + uint uVar7; + save_file *folder; + int iVar8; + save_file *psVar9; + byte *pbVar10; + u32 foldernum; + uint uStack44; + u32 uStack40; + u32 uStack36; + u32 uStack32; + undefined4 uStack28; + undefined4 uStack24; + undefined4 uStack20; + undefined4 uStack16; + undefined4 uStack12; + undefined4 uStack8; + byte abStack4 [4]; + + iVar3 = proc_7F01D6C0(); + if (iVar3 != 0) { + save_7000C7BC(0,(save_file *)&uStack36,0x20); + bVar1 = uStack28._0_1_ == 'B'; + proc_7F09B600((byte *)&uStack28,abStack4,&uStack44); + if ((uStack44 != uStack36) || (uStack40 != uStack32)) { + bVar1 = false; + } + if (!bVar1) { + uStack32 = DAT_8002c644; + uStack36 = DAT_8002c640; + uStack28 = flt_8002C648; + uStack24 = dword_8002C64C; + uStack20 = dword_8002C650; + uStack8 = dword_8002C65C; + uStack16 = dword_8002C654; + uStack12 = dword_8002C658; + proc_7F01D758((uint *)(save_file *)&uStack36); + } + save_7000C7BC(4,&save1,0x1e0); + psVar9 = &save_file_80069980; + pbVar10 = &save1.completion_bitflags; + folder = &save1; + do { + bVar1 = true; + proc_7F09B600(pbVar10,(byte *)psVar9,&uStack44); + if (uStack44 == folder->checksum1) { + if (uStack40 != folder->checksum2) { + bVar1 = false; + } + } + else { + bVar1 = false; + } + if (!bVar1) { + proc_7F01D840((uint *)folder); + } + psVar9 = psVar9 + 1; + folder = folder + 1; + pbVar10 = pbVar10 + 0x60; + } while (psVar9 != (save_file *)&end_save_files); + foldernum = 0; + do { + iVar3 = -1; + uVar4 = 0xffffffff; + folder = &save1; + iVar8 = 0; + do { + uVar2 = check_if_eeprom_flag_set_0x80(folder); + if ((uVar2 == 0) && (uVar6 = getEEPROMFoldernum(folder), uVar6 == foldernum)) { + if (iVar3 < 0) { + uVar4 = set_eeprom_flag_0x18(folder); + iVar3 = iVar8; + } + else { + uVar7 = uVar4 + 1 & 3; + if (((int)(uVar4 + 1) < 0) && (uVar7 != 0)) { + uVar7 -= 4; + } + uVar5 = set_eeprom_flag_0x18(folder); + if (uVar5 == uVar7) { + proc_7F01D840((uint *)(&save1 + iVar3)); + iVar3 = iVar8; + uVar4 = uVar5; + } + else { + proc_7F01D840((uint *)folder); + } + } + } + iVar8 += 1; + folder = folder + 1; + } while (iVar8 != 5); + if (iVar3 < 0) { + proc_7F01DEB4(foldernum); + } + foldernum += 1; + } while ((int)foldernum < 4); + foldernum = 0; + do { + folder = getEEPROMforFoldernum(foldernum); + if (folder != NULL) { + uVar6 = get_selected_bond(folder); + save1_selected_bond[foldernum] = uVar6; + } + foldernum += 1; + } while (foldernum != 4); + } + return; } -void proc_7F0927F4(longlong param_1) +BOOL check_if_valid_folder_num(int folder) { - int guardcount; - int curguard; - GUARDdata *guard; - f32 extraout_f12; - f32 extraout_f12_00; - f32 scale; - - guard = ptr_guard_data; - guardcount = get_numguards(); - curguard = 0; - scale = extraout_f12; - if (0 < guardcount) { + if ((-1 < folder) && (folder < 4)) { + return TRUE; + } + if (folder != 100) { + return FALSE; + } + return TRUE; +} + + + +s32 isStageUnlockedAtDifficulty(int foldernum,STAGENUM stageid,DIFFICULTY difficulty) + +{ + BOOL BVar1; + save_file *eeprom; + DIFFICULTY difficulty_00; + STAGENUM stage; + + BVar1 = check_if_valid_folder_num(foldernum); + if (BVar1 == FALSE) { + return 0; + } + if (-1 < (int)stageid) { + if (0x13 < (int)stageid) { + return 0; + } + if (-1 < difficulty) { + if (3 < difficulty) { + return 0; + } + eeprom = getEEPROMforFoldernum(foldernum); + if (eeprom != NULL) { + BVar1 = doesSaveHaveStageCompletedOnDifficulty(eeprom,stageid,difficulty); + if (BVar1 != FALSE) { + return 3; + } + if (((stageid == SP_STAGE_AZTEK) && (difficulty < 1)) || + ((stageid == SP_STAGE_EGYPT && (difficulty < 2)))) { + return 0; + } + difficulty_00 = difficulty; + if (difficulty < 4) { + do { + stage = SP_STAGE_DAM; + if (0 < (int)stageid) { + do { + BVar1 = doesSaveHaveStageCompletedOnDifficulty + (eeprom,stage,difficulty_00); + if (BVar1 == FALSE) break; + stage += SP_STAGE_FACILITY; + } while (stage != stageid); + } + difficulty_00 += DIFFICULTY_SECRET; + if ((int)stageid <= (int)stage) { + return 1; + } + } while (difficulty_00 != 4); + } + if (((difficulty < 3) && ((int)stageid < 0x12)) && (difficulty < 4)) { + difficulty_00 = difficulty; + do { + BVar1 = doesSaveHaveStageCompletedOnDifficulty + (eeprom,stageid + ~SP_STAGE_DAM,difficulty_00); + difficulty_00 += DIFFICULTY_SECRET; + if (BVar1 != FALSE) { + return 1; + } + } while (difficulty_00 != 4); + } + stage = SP_STAGE_DAM; + if (difficulty < 3) { + do { + BVar1 = doesSaveHaveStageCompletedOnDifficulty + (eeprom,stage,DIFFICULTY_AGENT); + if (BVar1 == FALSE) break; + stage += SP_STAGE_FACILITY; + } while ((int)stage < 0x12); + if (0x11 < (int)stage) { + difficulty_00 = DIFFICULTY_AGENT; + if (0 < difficulty) { + do { + BVar1 = doesSaveHaveStageCompletedOnDifficulty + (eeprom,stageid,difficulty_00); + if (BVar1 == FALSE) break; + difficulty_00 += DIFFICULTY_SECRET; + } while (difficulty_00 != difficulty); + } + if (difficulty <= difficulty_00) { + return 1; + } + } + } + } + if (stageid == SP_STAGE_DAM) { + return 1; + } + BVar1 = get_debug_enable_agent_levels_flag(); + if ((BVar1 != FALSE) && (difficulty == DIFFICULTY_AGENT)) { + return 1; + } + BVar1 = get_debug_enable_all_levels_flag(); + if (BVar1 == FALSE) { + return 0; + } + return 1; + } + } + return 0; +} + + + +void proc_7F01E504(uint *param_1,undefined4 *param_2) + +{ + int iVar1; + int iVar2; + save_file *folder; + u32 *puVar3; + u32 *puVar4; + uint uStack8; + + uStack8 = 0; + iVar1 = proc_7F01DE50(); + if (-1 < iVar1) { + puVar3 = param_2; + folder = &save1 + iVar1; + do { + puVar4 = puVar3 + 3; + folder->checksum1 = *puVar3; + folder->checksum2 = puVar3[1]; + *(u32 *)&folder->completion_bitflags = puVar3[2]; + puVar3 = puVar4; + folder = (save_file *)&folder->controller_config; + } while (puVar4 != param_2 + 0x18); + if (param_1 != NULL) { + iVar2 = set_eeprom_flag_0x18((save_file *)param_1); + uStack8 = iVar2 + 1U & 3; + if (((int)(iVar2 + 1U) < 0) && (uStack8 != 0)) { + uStack8 -= 4; + } + } + folder = &save1 + iVar1; + toggle_eeprom_flag_set_0x80(folder,0); + reset_eeprom_flag_0x18(folder,uStack8); + proc_7F01D7A0((uint *)folder); + if (param_1 != NULL) { + proc_7F01D840(param_1); + } + } + return; +} + + + +void unlock_stage_in_folder_on_difficulty + (int folder,longlong stagenum,longlong selecteddifficulty,int maxtime) + +{ + save_file *psVar1; + save_file *psVar2; + save_file *psVar3; + save_file *psVar4; + longlong lVar5; + save_file sStack96; + + if ((((-1 < folder) && (folder < 4)) && (-1 < stagenum)) && + (((stagenum < 0x14 && (-1 < selecteddifficulty)) && (selecteddifficulty < 4)))) { + psVar1 = &dword_8002C660; + psVar2 = &sStack96; + do { + psVar4 = (save_file *)&psVar1->controller_config; + psVar2->checksum1 = psVar1->checksum1; + psVar2->checksum2 = psVar1->checksum2; + *(undefined4 *)&psVar2->completion_bitflags = + *(undefined4 *)&psVar1->completion_bitflags; + psVar1 = psVar4; + psVar2 = (save_file *)&psVar2->controller_config; + } while (psVar4 != &dword_8002C6C0); + psVar1 = getEEPROMforFoldernum(folder); + if (psVar1 == NULL) { + setEEPROMtoFoldernum(&sStack96,(byte)folder); + } + else { + psVar2 = psVar1; + psVar4 = &sStack96; + do { + psVar3 = (save_file *)&psVar2->controller_config; + psVar4->checksum1 = psVar2->checksum1; + psVar4->checksum2 = psVar2->checksum2; + *(undefined4 *)&psVar4->completion_bitflags = + *(undefined4 *)&psVar2->completion_bitflags; + psVar2 = psVar3; + psVar4 = (save_file *)&psVar4->controller_config; + } while (psVar3 != psVar1 + 1); + } + lVar5 = selecteddifficulty; + if (-1 < selecteddifficulty) { + do { + if (lVar5 == selecteddifficulty) { + proc_7F01DCB0((int)&sStack96,stagenum,lVar5,maxtime); + } + else { + proc_7F01DCB0((int)&sStack96,stagenum,lVar5,99999999); + } + lVar5 = (longlong)((int)lVar5 + -1); + } while (-1 < lVar5); + } + proc_7F01E504((uint *)psVar1,(undefined4 *)&sStack96); + } + return; +} + + + +void proc_7F01E760(u32 folder,CHEAT_IDS cheat) + +{ + ulonglong uVar1; + save_file *psVar2; + save_file *psVar3; + save_file *psVar4; + save_file sStack100; + save_file *psStack4; + + if ((((-1 < (int)folder) && ((int)folder < 4)) && (-1 < (int)cheat)) && + (((int)cheat < 0x14 && + ((psStack4 = getEEPROMforFoldernum(folder), psStack4 == NULL || + (uVar1 = check_if_cheat_unlocked(psStack4,(longlong)(int)cheat), uVar1 == 0)))))) { + psVar3 = &dword_8002C6C0; + psVar2 = &sStack100; + do { + psVar4 = (save_file *)&psVar3->controller_config; + psVar2->checksum1 = psVar3->checksum1; + psVar2->checksum2 = psVar3->checksum2; + *(undefined4 *)&psVar2->completion_bitflags = + *(undefined4 *)&psVar3->completion_bitflags; + psVar3 = psVar4; + psVar2 = (save_file *)&psVar2->controller_config; + } while (psVar4 != &save_file_8002c720); + if (psStack4 == NULL) { + setEEPROMtoFoldernum(&sStack100,(byte)folder); + } + else { + psVar3 = psStack4; + psVar2 = &sStack100; + do { + psVar4 = (save_file *)&psVar3->controller_config; + psVar2->checksum1 = psVar3->checksum1; + psVar2->checksum2 = psVar3->checksum2; + *(undefined4 *)&psVar2->completion_bitflags = + *(undefined4 *)&psVar3->completion_bitflags; + psVar3 = psVar4; + psVar2 = (save_file *)&psVar2->controller_config; + } while (psVar4 != psStack4 + 1); + } + proc_7F01DD74((int)&sStack100,(longlong)(int)cheat); + proc_7F01E504((uint *)psStack4,(undefined4 *)&sStack100); + } + return; +} + + + +void get_highest_stage_difficulty_completed_in_folder + (int foldernum,STAGENUM *stagenum,DIFFICULTY *difficulty) + +{ + save_file *folder; + BOOL BVar1; + STAGENUM stage; + DIFFICULTY difficulty_00; + + folder = getEEPROMforFoldernum(foldernum); + if (folder != NULL) { + difficulty_00 = DIFFICULTY_007; + do { + stage = SP_STAGE_EGYPT; + do { + BVar1 = doesSaveHaveStageCompletedOnDifficulty(folder,stage,difficulty_00); + if (BVar1 != FALSE) { + *stagenum = stage; + *difficulty = difficulty_00; + return; + } + stage += ~SP_STAGE_DAM; + } while (-1 < (int)stage); + difficulty_00 += DIFFICULTY_MULTI; + } while (-1 < difficulty_00); + } + *stagenum = ~SP_STAGE_DAM; + *difficulty = DIFFICULTY_MULTI; + return; +} + + + +u32 check_egypt_completed_in_folder(int folder) + +{ + save_file *savefile; + s32 sVar1; + DIFFICULTY difficulty; + longlong stagenum; + STAGENUM stageid; + + savefile = getEEPROMforFoldernum(folder); + stagenum = 0x13; + if (savefile != NULL) { + do { + difficulty = DIFFICULTY_AGENT; + stageid = (STAGENUM)stagenum; + do { + sVar1 = isStageUnlockedAtDifficulty(folder,stageid,difficulty); + difficulty += DIFFICULTY_SECRET; + if (sVar1 != 0) { + return stageid; + } + } while (difficulty != 4); + stagenum = (longlong)(int)(stageid + ~SP_STAGE_DAM); + } while (-1 < stagenum); + } + return 0; +} + + + +u32 check_egypt_completed_any_folder(void) + +{ + u32 isfound; + int folder; + u32 isunlocked; + + isunlocked = 0; + folder = 0; do { - if (guard->MODELdata_pointer != 0) { - set_obj_instance_controller_scale(guard->MODELdata_pointer,scale); + isfound = check_egypt_completed_in_folder(folder); + folder += 1; + if ((int)isunlocked < (int)isfound) { + isunlocked = isfound; + } + } while (folder != 4); + return isunlocked; +} + + + +u32 check_cradle_completed_in_folder(u32 folder) + +{ + s32 sVar1; + uint uVar2; + + sVar1 = isStageUnlockedAtDifficulty(folder,SP_STAGE_CRADLE,DIFFICULTY_AGENT); + uVar2 = (uint)(sVar1 == 3); + if (sVar1 != 3) { + sVar1 = isStageUnlockedAtDifficulty(folder,SP_STAGE_CRADLE,DIFFICULTY_SECRET); + uVar2 = (uint)(sVar1 == 3); + if (sVar1 != 3) { + sVar1 = isStageUnlockedAtDifficulty(folder,SP_STAGE_CRADLE,DIFFICULTY_00); + uVar2 = (uint)(sVar1 == 3); + } + } + return (u32)uVar2; +} + + + +u32 check_aztec_completed_in_folder_secret_00(u32 folder) + +{ + bool bVar1; + s32 sVar2; + + sVar2 = isStageUnlockedAtDifficulty(folder,SP_STAGE_AZTEK,DIFFICULTY_SECRET); + bVar1 = sVar2 == 3; + if (!bVar1) { + sVar2 = isStageUnlockedAtDifficulty(folder,SP_STAGE_AZTEK,DIFFICULTY_00); + bVar1 = sVar2 == 3; + } + return (u32)(uint)bVar1; +} + + + +u32 check_egypt_completed_in_folder_00(int folder) + +{ + s32 sVar1; + + sVar1 = isStageUnlockedAtDifficulty(folder,SP_STAGE_EGYPT,DIFFICULTY_00); + return (u32)(uint)(sVar1 == 3); +} + + + +u32 check_cradle_completed_any_folder(void) + +{ + u32 completed; + int folder; + + folder = 0; + do { + completed = check_cradle_completed_in_folder(folder); + folder += 1; + if (completed != 0) { + return 1; + } + } while (folder != 4); + return 0; +} + + + +BOOL check_aztec_completed_any_folder_secret_00(void) + +{ + u32 uVar1; + u32 folder; + + folder = 0; + do { + uVar1 = check_aztec_completed_in_folder_secret_00(folder); + folder += 1; + if (uVar1 != 0) { + return TRUE; + } + } while (folder != 4); + return FALSE; +} + + + +BOOL check_egypt_completed_any_folder_00(void) + +{ + u32 completed; + int folder; + + folder = 0; + do { + completed = check_egypt_completed_in_folder_00(folder); + folder += 1; + if (completed != 0) { + return TRUE; + } + } while (folder != 4); + return FALSE; +} + + + +u32 removed_would_have_returned_bond_for_folder_num(u32 folder) + +{ + return 0; +} + + + +void set_selected_bond_to_folder(u32 folder,u32 bond) + +{ + if ((-1 < (int)folder) && ((int)folder < 4)) { + save1_selected_bond[folder] = 0; + } + return; +} + + + +void proc_7F01EBF4(void) + +{ + return; +} + + + +void proc_7F01EBFC(void) + +{ + return; +} + + + +void delete_eeprom_folder(int foldernum) + +{ + save_file *eeprom; + u32 *puVar1; + u32 *puVar2; + save_file *psVar3; + save_file *psVar4; + u32 auStack108 [24]; + DIFFICULTY difficulty; + STAGENUM aSStack8 [2]; + + if ((((-1 < foldernum) && (foldernum < 4)) && + (eeprom = getEEPROMforFoldernum(foldernum), eeprom != NULL)) && + ((get_highest_stage_difficulty_completed_in_folder(foldernum,aSStack8,&difficulty), + -1 < (int)aSStack8[0] && (-1 < difficulty)))) { + psVar3 = &save_file_8002c720; + puVar1 = auStack108; + do { + psVar4 = (save_file *)&psVar3->controller_config; + *puVar1 = psVar3->checksum1; + puVar1[1] = psVar3->checksum2; + puVar1[2] = *(u32 *)&psVar3->completion_bitflags; + psVar3 = psVar4; + puVar1 = puVar1 + 3; + } while (psVar4 != &save_file_8002c780); + puVar1 = auStack108; + psVar3 = eeprom; + do { + puVar2 = puVar1 + 3; + psVar3->checksum1 = *puVar1; + psVar3->checksum2 = puVar1[1]; + *(u32 *)&psVar3->completion_bitflags = puVar1[2]; + puVar1 = puVar2; + psVar3 = (save_file *)&psVar3->controller_config; + } while (puVar2 != (u32 *)&difficulty); + setEEPROMtoFoldernum(eeprom,(byte)foldernum); + toggle_eeprom_flag_set_0x80(eeprom,0); + set_selected_bond(eeprom,foldernum); + set_selected_bond_to_folder(foldernum,foldernum); + proc_7F01D7A0((uint *)eeprom); + } + return; +} + + + +void proc_7F01ED10(ulonglong param_1) + +{ + save_file *psVar1; + longlong lVar2; + longlong lVar3; + int stagenum; + + psVar1 = getEEPROMforFoldernum((u32)param_1); + lVar3 = 0; + do { + lVar2 = 0; + do { + proc_7F01DCB0((int)psVar1,lVar3,lVar2,99999999); + lVar2 = (longlong)((int)lVar2 + 1); + } while (lVar2 != 3); + stagenum = (int)lVar3; + stagenum = stagenum + 1; + lVar3 = (longlong)stagenum; + } while (lVar3 != 0x14); + return; +} + + + +void proc_7F01EDA0(ulonglong param_1) + +{ + save_file *psVar1; + save_file *psVar2; + u32 foldernum; + save_file *psVar3; + save_file *psVar4; + save_file *psVar5; + u32 foldernum_00; + save_file sStack112; + DIFFICULTY difficulty; + STAGENUM SStack8; + save_file *psStack4; + + if ((-1 < (longlong)param_1) && ((longlong)param_1 < 4)) { + foldernum = (u32)param_1; + psStack4 = getEEPROMforFoldernum(foldernum); + if (psStack4 != NULL) { + get_highest_stage_difficulty_completed_in_folder(foldernum,&SStack8,&difficulty); + if ((-1 < (int)SStack8) && (foldernum_00 = 0, -1 < difficulty)) { + while (psVar1 = getEEPROMforFoldernum(foldernum_00), psVar1 != NULL) { + get_highest_stage_difficulty_completed_in_folder + (foldernum_00,&SStack8,&difficulty); + if ((((int)SStack8 < 0) && (difficulty < 0)) || + (foldernum_00 += 1, foldernum_00 == 4)) break; + } + if ((int)foldernum_00 < 4) { + psVar1 = &save_file_8002c780; + psVar5 = &sStack112; + do { + psVar2 = (save_file *)&psVar1->controller_config; + psVar5->checksum1 = psVar1->checksum1; + psVar5->checksum2 = psVar1->checksum2; + *(undefined4 *)&psVar5->completion_bitflags = + *(undefined4 *)&psVar1->completion_bitflags; + psVar1 = psVar2; + psVar5 = (save_file *)&psVar5->controller_config; + } while (psVar2 != &save_file_8002c7e0); + psVar2 = getEEPROMforFoldernum(foldernum_00); + psVar4 = psStack4 + 1; + psVar1 = psStack4; + psVar5 = &sStack112; + do { + psVar3 = (save_file *)&psVar1->controller_config; + psVar5->checksum1 = psVar1->checksum1; + psVar5->checksum2 = psVar1->checksum2; + *(undefined4 *)&psVar5->completion_bitflags = + *(undefined4 *)&psVar1->completion_bitflags; + psVar1 = psVar3; + psVar5 = (save_file *)&psVar5->controller_config; + } while (psVar3 != psVar4); + setEEPROMtoFoldernum(&sStack112,(byte)foldernum_00); + foldernum = removed_would_have_returned_bond_for_folder_num(foldernum); + set_selected_bond_to_folder(foldernum_00,foldernum); + proc_7F01E504((uint *)psVar2,(undefined4 *)&sStack112); + } + } + } + } + return; +} + + + +void update_eeprom_to_current_solo_watch_settings(save_file *eepromsave) + +{ + u16 uVar5; + u32 uVar1; + u32 uVar2; + int iVar3; + s32 sVar4; + ushort uVar6; + ushort uVar7; + + uVar5 = proc_7F0A9358(); + iVar3 = (int)(short)uVar5; + eepromsave->music_vol = (u8)((short)uVar5 >> 7); + call_sfx_c_700091C8(); + eepromsave->sfx_vol = (u8)(iVar3 >> 7); + uVar1 = get_cur_player_look_vertical_inverted(); + uVar2 = cur_player_get_autoaim(); + uVar7 = (ushort)(uVar1 != 0); + if (uVar2 != 0) { + uVar7 = (ushort)(uVar1 != 0) | 2; + } + iVar3 = cur_player_get_aim_control(); + if (iVar3 != 0) { + uVar7 = uVar7 | 4; + } + iVar3 = cur_player_get_sight_onscreen_control(); + if (iVar3 != 0) { + uVar7 = uVar7 | 8; + } + iVar3 = cur_player_get_lookahead(); + if (iVar3 != 0) { + uVar7 = uVar7 | 0x10; + } + iVar3 = cur_player_get_ammo_onscreen_setting(); + if (iVar3 != 0) { + uVar7 = uVar7 | 0x20; + } + iVar3 = cur_player_get_screen_setting(); + uVar6 = uVar7 | 0x40; + if (iVar3 != 1) { + iVar3 = cur_player_get_screen_setting(); + uVar6 = uVar7; + if (iVar3 == 2) { + uVar6 = uVar7 | 0x800; + } + } + iVar3 = get_screen_ratio(); + if (iVar3 != 0) { + uVar6 = uVar6 | 0x80; + } + sVar4 = cur_player_get_control_type(); + *(ushort *)&eepromsave->controller_config = uVar6 | (ushort)(sVar4 << 8) & 0x700; + return; +} + + + +void get_screen_ratio_settings_for_mpgame_from_folder(int folder) + +{ + ushort uVar1; + save_file *psVar2; + s32 sVar3; + + psVar2 = getEEPROMforFoldernum(folder); + if (psVar2 != NULL) { + proc_7F0A9364((ushort)psVar2->music_vol << 7 | (ushort)((int)(uint)psVar2->music_vol >> 1)); + proc_7F0A91A0((longlong)(int)((uint)psVar2->sfx_vol << 7 | (int)(uint)psVar2->sfx_vol >> 1)) + ; + uVar1 = *(ushort *)&psVar2->controller_config; + sVar3 = get_num_players(); + if (sVar3 == 1) { + cur_player_set_control_type((int)((uint)uVar1 & 0x700) >> 8); + } + else { + cur_player_set_control_type(0); + } + set_cur_player_look_vertical_inverted((uint)((uVar1 & 1) != 0)); + cur_player_set_autoaim((uint)((uVar1 & 2) != 0)); + cur_player_set_aim_control((uint)((uVar1 & 4) != 0)); + cur_player_set_sight_onscreen_control((uint)((uVar1 & 8) != 0)); + cur_player_set_lookahead((uint)((uVar1 & 0x10) != 0)); + cur_player_set_ammo_onscreen_setting((uint)((uVar1 & 0x20) != 0)); + if ((uVar1 & 0x800) == 0) { + if ((uVar1 & 0x40) == 0) { + cur_player_set_screen_setting(0); + } + else { + cur_player_set_screen_setting(1); + } + } + else { + cur_player_set_screen_setting(2); + } + set_screen_ratio((uint)((uVar1 & 0x80) != 0)); + } + return; +} + + + +void delete_update_eeprom_file(int folder) + +{ + save_file *psVar1; + int iVar2; + save_file *psVar3; + save_file *psVar4; + save_file *psVar5; + save_file sStack196; + save_file sStack100; + save_file *psStack4; + + if ((-1 < folder) && (folder < 4)) { + psVar1 = getEEPROMforFoldernum(folder); + psStack4 = psVar1; + psVar4 = &save_file_8002c7e0; + psVar3 = &sStack100; + do { + psVar5 = (save_file *)&psVar4->controller_config; + psVar3->checksum1 = psVar4->checksum1; + psVar3->checksum2 = psVar4->checksum2; + *(undefined4 *)&psVar3->completion_bitflags = + *(undefined4 *)&psVar4->completion_bitflags; + psVar4 = psVar5; + psVar3 = (save_file *)&psVar3->controller_config; + } while (psVar5 != &save_file_8002c840); + if (psVar1 == NULL) { + setEEPROMtoFoldernum(&sStack100,(byte)folder); + } + else { + psVar4 = psVar1; + psVar3 = &sStack100; + do { + psVar5 = (save_file *)&psVar4->controller_config; + psVar3->checksum1 = psVar4->checksum1; + psVar3->checksum2 = psVar4->checksum2; + *(undefined4 *)&psVar3->completion_bitflags = + *(undefined4 *)&psVar4->completion_bitflags; + psVar4 = psVar5; + psVar3 = (save_file *)&psVar3->controller_config; + } while (psVar5 != psVar1 + 1); + } + psVar4 = &sStack100; + psVar3 = &sStack196; + do { + psVar1 = (save_file *)&psVar4->controller_config; + psVar3->checksum1 = psVar4->checksum1; + psVar3->checksum2 = psVar4->checksum2; + *(undefined4 *)&psVar3->completion_bitflags = + *(undefined4 *)&psVar4->completion_bitflags; + psVar4 = psVar1; + psVar3 = (save_file *)&psVar3->controller_config; + } while (psVar1 != (save_file *)&psStack4); + update_eeprom_to_current_solo_watch_settings(&sStack196); + iVar2 = _bcmp(&sStack196,&sStack100,0x60); + if (iVar2 != 0) { + proc_7F01E504((uint *)psStack4,(undefined4 *)&sStack196); + } + } + return; +} + + + +void copy_eeprom_to_stack_set_folder_num(int foldernum) + +{ + save_file *psVar1; + u32 uVar2; + save_file *psVar3; + save_file *psVar4; + save_file *psVar5; + save_file sStack100; + save_file *psStack4; + + if ((-1 < foldernum) && (foldernum < 4)) { + psVar1 = getEEPROMforFoldernum(foldernum); + psVar4 = &save_file_8002c840; + psVar3 = &sStack100; + psStack4 = psVar1; + do { + psVar5 = (save_file *)&psVar4->controller_config; + psVar3->checksum1 = psVar4->checksum1; + psVar3->checksum2 = psVar4->checksum2; + *(undefined4 *)&psVar3->completion_bitflags = + *(undefined4 *)&psVar4->completion_bitflags; + psVar4 = psVar5; + psVar3 = (save_file *)&psVar3->controller_config; + } while (psVar5 != &blank_eeprom); + if (psVar1 == NULL) { + setEEPROMtoFoldernum(&sStack100,(byte)foldernum); + } + else { + psVar4 = psVar1; + psVar3 = &sStack100; + do { + psVar5 = (save_file *)&psVar4->controller_config; + psVar3->checksum1 = psVar4->checksum1; + psVar3->checksum2 = psVar4->checksum2; + *(undefined4 *)&psVar3->completion_bitflags = + *(undefined4 *)&psVar4->completion_bitflags; + psVar4 = psVar5; + psVar3 = (save_file *)&psVar3->controller_config; + } while (psVar5 != psVar1 + 1); + } + uVar2 = get_selected_bond(&sStack100); + if (uVar2 != save1_selected_bond[foldernum]) { + set_selected_bond(&sStack100,save1_selected_bond[foldernum]); + proc_7F01E504((uint *)psStack4,(undefined4 *)&sStack100); + } + } + return; +} + + + +void copy_eeprom_from_to(int from,int to) + +{ + save_file *psVar1; + f32 *pfVar2; + f32 *pfVar3; + save_file *psVar4; + save_file *psVar5; + f32 afStack100 [24]; + f32 fStack4; + + psVar1 = getEEPROMforFoldernum(from); + if (psVar1 == NULL) { + psVar1 = &blank_eeprom; + pfVar2 = afStack100; + do { + psVar4 = (save_file *)&psVar1->controller_config; + *(u32 *)pfVar2 = psVar1->checksum1; + *(u32 *)(pfVar2 + 1) = psVar1->checksum2; + pfVar2[2] = *(f32 *)&psVar1->completion_bitflags; + psVar1 = psVar4; + pfVar2 = pfVar2 + 3; + } while (psVar4 != (save_file *)&animation_rate); + pfVar2 = afStack100; + do { + pfVar3 = pfVar2 + 3; + *(f32 *)to = *pfVar2; + ((f32 *)to)[1] = pfVar2[1]; + ((f32 *)to)[2] = pfVar2[2]; + pfVar2 = pfVar3; + to = (int)((f32 *)to + 3); + } while (pfVar3 != &fStack4); + } + else { + psVar4 = psVar1; + do { + psVar5 = (save_file *)&psVar4->controller_config; + *(u32 *)to = psVar4->checksum1; + ((u32 *)to)[1] = psVar4->checksum2; + ((u32 *)to)[2] = *(u32 *)&psVar4->completion_bitflags; + psVar4 = psVar5; + to = (int)((u32 *)to + 3); + } while (psVar5 != psVar1 + 1); + } + return; +} + + + +void copy_eepromfile_a0_from_a1_to_buffer(longlong param_1,save_file *param_2) + +{ + save_file *psVar1; + save_file *psVar2; + save_file *psVar3; + + if (param_1 == 100) { + psVar2 = param_2; + psVar1 = &save6; + do { + psVar3 = (save_file *)&psVar2->controller_config; + psVar1->checksum1 = psVar2->checksum1; + psVar1->checksum2 = psVar2->checksum2; + *(undefined4 *)&psVar1->completion_bitflags = + *(undefined4 *)&psVar2->completion_bitflags; + psVar2 = psVar3; + psVar1 = (save_file *)&psVar1->controller_config; + } while (psVar3 != param_2 + 1); + } + return; +} + + + +BOOL is007ModeUnlockedinFolder(u32 foldernum) + +{ + save_file *folder; + BOOL BVar1; + BOOL found; + int stagenum; + + folder = getEEPROMforFoldernum(foldernum); + if (folder == NULL) { + BVar1 = FALSE; + } + else { + stagenum = SP_STAGE_DAM; + if ((folder->bitflags & 1) == 0) { + do { + found = doesSaveHaveStageCompletedOnDifficulty(folder,stagenum,DIFFICULTY_00); + if (found == FALSE) break; + stagenum += SP_STAGE_FACILITY; + } while (stagenum != 0x14); + if (stagenum == SP_STAGE_MAX) { + BVar1 = TRUE; + } + else { + BVar1 = FALSE; + } + } + else { + BVar1 = TRUE; + } + } + return BVar1; +} + + + +undefined4 get_numguards(void) + +{ + return num_guards; +} + + + +void get_ptr_allocated_block_for_weapon_vertices(int param_1) + +{ + proc_7F0BD714(param_1 << 4); + return; +} + + + +void set_show_patrols_flag(BOOL flag) + +{ + show_patrols_flag = flag; + return; +} + + + +undefined4 get_show_patrols_flag(void) + +{ + return show_patrols_flag; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 proc_7F01F574(void) + +{ + longlong in_v0; + int in_a0_lo; + undefined4 uVar1; + float in_f12; + float in_f14; + + if (*(int *)(in_a0_lo + 0x14) == 0) { + uVar1 = 0; + } + else { + proc_7F0B20D0((int *)(in_a0_lo + 0x14),in_f12,in_f14,*(float *)(in_a0_lo + 8)); + if (in_v0 < 0) { + uVar1 = proc_7F0B2970(); + } + else { + uVar1 = 0; + } + } + return uVar1; +} + + + +void set_or_unset_GUARDdata_flag(GUARDdata *guard,int param_2) + +{ + if (param_2 == 0) { + guard->special_bitflags = guard->special_bitflags | 0x100; + return; + } + guard->special_bitflags = guard->special_bitflags & 0xfeff; + return; +} + + + +int proc_7F01F614(int param_1,int param_2,float *param_3,float *param_4,int param_5) + +{ + bool bVar1; + int iVar3; + longlong lVar2; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + f32 extraout_f12; + f32 extraout_f12_00; + f32 fVar9; + f32 extraout_f14; + f32 extraout_f14_00; + f32 extraout_f14_01; + f32 fVar10; + f32 extraout_f14_02; + f32 extraout_f14_03; + float fStack88; + float fStack80; + float afStack44 [2]; + float fStack36; + float afStack32 [2]; + float fStack24; + float fStack20; + undefined4 uStack16; + float fStack12; + u32 uStack8; + u32 uStack4; + + uStack4 = 0; + uStack8 = param_2; + proc_7F023160(*(int *)(param_1 + 0x18),&fStack20,&fStack12,&uStack16); + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + proc_7F0B1CC4(); + iVar3 = proc_7F0B0E24(&uStack8,extraout_f12,extraout_f14,(f32)*param_3); + if ((iVar3 == 0) || (lVar2 = proc_7F0B18B8(), -1 < lVar2)) { + lVar2 = proc_7F0B28B0(afStack32,afStack44); + if (lVar2 != 0) { + fVar8 = *param_4 - *param_3; + fVar7 = param_4[2] - param_3[2]; + if ((afStack32[0] == afStack44[0]) && (fStack24 == fStack36)) { + bVar1 = false; + fVar9 = extraout_f12_00; + fVar10 = extraout_f14_00; + } + else { + fVar6 = fStack36 - fStack24; + fVar4 = afStack44[0] - afStack32[0]; + fVar5 = sqrtf(fVar6 * fVar6 + fVar4 * fVar4); + fVar4 = fVar4 * (1.00000000 / fVar5); + fVar6 = fVar6 * (1.00000000 / fVar5); + fVar9 = (f32)(fVar6 * fVar7 + fVar8 * fVar4); + fStack88 = fVar4 * (float)fVar9 + *param_3; + fStack80 = fVar6 * (float)fVar9 + param_3[2]; + bVar1 = true; + fVar10 = extraout_f14_01; + uStack8 = param_2; + } + if (((bVar1) && (iVar3 = proc_7F0B0E24(&uStack8,fVar9,fVar10,(f32)*param_3), iVar3 != 0) + ) && (lVar2 = proc_7F0B18B8(), lVar2 < 0)) { + *param_4 = fStack88; + param_4[2] = fStack80; + *(undefined *)(param_1 + 9) = 2; + uStack4 = uStack8; + } + else { + if ((fStack24 - param_4[2]) * (fStack24 - param_4[2]) + + (afStack32[0] - *param_4) * (afStack32[0] - *param_4) <= fStack20 * fStack20) { + if (afStack32[0] == *param_3) { + if (fStack24 == param_3[2]) goto LAB_7f01fbdc; + fVar4 = param_3[2]; + } + else { + fVar4 = param_3[2]; + } + fVar5 = -(fStack24 - fVar4); + afStack32[0] = afStack32[0] - *param_3; + fVar4 = sqrtf(afStack32[0] * afStack32[0] + fVar5 * fVar5); + fVar5 = fVar5 * (1.00000000 / fVar4); + afStack32[0] = afStack32[0] * (1.00000000 / fVar4); + fVar4 = *param_3; + fVar8 = afStack32[0] * fVar7 + fVar8 * fVar5; + fVar7 = param_3[2]; + uStack8 = param_2; + iVar3 = proc_7F0B0E24(&uStack8,(f32)fVar8,extraout_f14_02,(f32)*param_3); + if ((iVar3 != 0) && (lVar2 = proc_7F0B18B8(), lVar2 < 0)) { + *param_4 = fVar5 * fVar8 + fVar4; + param_4[2] = afStack32[0] * fVar8 + fVar7; + *(undefined *)(param_1 + 9) = 2; + uStack4 = uStack8; + } + } + else { + if ((fStack36 - param_4[2]) * (fStack36 - param_4[2]) + + (afStack44[0] - *param_4) * (afStack44[0] - *param_4) <= fStack20 * fStack20 + ) { + if (afStack44[0] == *param_3) { + if (fStack36 == param_3[2]) goto LAB_7f01fbdc; + fVar4 = param_3[2]; + } + else { + fVar4 = param_3[2]; + } + fVar5 = -(fStack36 - fVar4); + afStack44[0] = afStack44[0] - *param_3; + fVar4 = sqrtf(afStack44[0] * afStack44[0] + fVar5 * fVar5); + fVar5 = fVar5 * (1.00000000 / fVar4); + afStack44[0] = afStack44[0] * (1.00000000 / fVar4); + fVar4 = *param_3; + fVar7 = afStack44[0] * fVar7 + fVar8 * fVar5; + fVar8 = param_3[2]; + uStack8 = param_2; + iVar3 = proc_7F0B0E24(&uStack8,(f32)fVar7,extraout_f14_03,(f32)*param_3); + if ((iVar3 != 0) && (lVar2 = proc_7F0B18B8(), lVar2 < 0)) { + *param_4 = fVar5 * fVar7 + fVar4; + param_4[2] = afStack44[0] * fVar7 + fVar8; + *(undefined *)(param_1 + 9) = 2; + uStack4 = uStack8; + } + } + } + } + } + } + else { + if (param_5 != 0) { + *(undefined *)(param_1 + 9) = 0; + *(undefined4 *)(param_1 + 0xcc) = global_timer; + } + uStack4 = uStack8; + } +LAB_7f01fbdc: + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + if (uStack4 == 0) { + *(undefined *)(param_1 + 9) = 1; + } + return (int)uStack4; +} + + + +undefined8 proc_7F01FC10(int param_1,float *param_2,float *param_3,float *param_4) + +{ + bool bVar1; + int iVar2; + bool bVar3; + float fVar4; + int iVar5; + float fVar6; + float fVar7; + float fVar8; + + iVar2 = *(int *)(param_1 + 4); + bVar1 = false; + fVar7 = 0.00000000; + if (*(int *)(*(int *)(iVar2 + 0x18) + 0x14) == 0) goto LAB_7f01ff80; + if ((*(char *)(iVar2 + 7) == '\x04') && (fVar7 = *(float *)(iVar2 + 0x38), 0.00000000 < fVar7)) + { + fVar7 = (*(float *)(param_1 + 0xa4) * global_timer_delta * + (fVar7 - *(float *)(iVar2 + 0x3c))) / fVar7; + *param_3 = *param_3 + *(float *)(iVar2 + 0x40) * fVar7; + param_3[1] = param_3[1] + *(float *)(iVar2 + 0x44) * fVar7; + param_3[2] = param_3[2] + *(float *)(iVar2 + 0x48) * fVar7; + *(float *)(iVar2 + 0x3c) = + *(float *)(iVar2 + 0x3c) + global_timer_delta * *(float *)(param_1 + 0xa4); + if (*(float *)(iVar2 + 0x38) < *(float *)(iVar2 + 0x3c)) { + *(undefined4 *)(iVar2 + 0x38) = 0; + } + } + *param_3 = *param_3 + *(float *)(iVar2 + 0xb0) * global_timer_delta; + param_3[2] = param_3[2] + *(float *)(iVar2 + 0xb8) * global_timer_delta; + iVar5 = proc_7F01F614(iVar2,*(int *)(*(int *)(iVar2 + 0x18) + 0x14),param_2,param_3,1); + bVar1 = iVar5 != 0; + if (bVar1) { + *(int *)(*(int *)(iVar2 + 0x18) + 0x14) = iVar5; + } + if ((*(uint *)(iVar2 + 0x14) & 0x1000) != 0) { + fVar7 = *(float *)(iVar2 + 0xac); + goto LAB_7f01ff80; + } + fVar7 = (float)proc_7F0B2970(); + *(float *)(iVar2 + 0xac) = fVar7; + if ((*(uint *)(iVar2 + 0x14) & 1) == 0) { + if (*(float *)(iVar2 + 0xb4) == 0.00000000) { + fVar6 = *(float *)(iVar2 + 0xac); + if (fVar6 < *(float *)(iVar2 + 0xa8)) goto LAB_7f01fe44; + bVar3 = *(float *)(iVar2 + 0xa8) <= fVar6; + } + else { +LAB_7f01fe44: + proc_7F057D44((float *)(iVar2 + 0xa8),(float *)(iVar2 + 0xb4),0.00000000); + fVar6 = *(float *)(iVar2 + 0xac); + if (*(float *)(iVar2 + 0xa8) <= fVar6) { + *(float *)(iVar2 + 0xa8) = fVar6; + fVar4 = flt_80051D14; + *(undefined4 *)(iVar2 + 0xb4) = 0; + *(float *)(iVar2 + 0xa4) = fVar6 / fVar4; + bVar3 = *(float *)(iVar2 + 0xa8) <= fVar6; + } + else { + bVar3 = *(float *)(iVar2 + 0xa8) <= fVar6; + } + } + fVar4 = flt_80051D18; + if (bVar3) { + iVar5 = 0; + if (0 < clock_timer) { + fVar8 = *(float *)(iVar2 + 0xa4); + while( true ) { + iVar5 += 1; + *(float *)(iVar2 + 0xb0) = *(float *)(iVar2 + 0xb0) * fVar4; + *(float *)(iVar2 + 0xa4) = fVar8 * fVar4 + fVar6; + *(float *)(iVar2 + 0xb8) = *(float *)(iVar2 + 0xb8) * fVar4; + if (clock_timer <= iVar5) break; + fVar8 = *(float *)(iVar2 + 0xa4); + } + } + fVar6 = flt_80051D1C; + bVar3 = flt_80051D1C <= *(float *)(iVar2 + 0xb0); + *(float *)(iVar2 + 0xa8) = *(float *)(iVar2 + 0xa4) * flt_80051D20; + if (bVar3) goto LAB_7f01ff60; + if (flt_80051D24 < *(float *)(iVar2 + 0xb0)) { + if (*(float *)(iVar2 + 0xb8) < fVar6) { + if (flt_80051D24 < *(float *)(iVar2 + 0xb8)) { + *(undefined4 *)(iVar2 + 0xb8) = 0; + *(undefined4 *)(iVar2 + 0xb0) = 0; + goto LAB_7f01ff60; + } + fVar6 = *(float *)(iVar2 + 0xa8); + } + else { + fVar6 = *(float *)(iVar2 + 0xa8); + } + } + else { + fVar6 = *(float *)(iVar2 + 0xa8); + } + } + else { + fVar6 = *(float *)(iVar2 + 0xa8); + } + } + else { + iVar5 = extract_id_from_object_structure_microcode(param_1,**(ushort ***)(param_1 + 8)); + *(uint *)(iVar2 + 0x14) = *(uint *)(iVar2 + 0x14) & 0xfffffffe; + *(float *)(iVar2 + 0xa8) = *(float *)(iVar2 + 0xac); + *(float *)(iVar2 + 0xa4) = *(float *)(iVar2 + 0xac) / flt_80051D10; + *(undefined4 *)(iVar5 + 0x38) = *(undefined4 *)(iVar5 + 0x28); +LAB_7f01ff60: + fVar6 = *(float *)(iVar2 + 0xa8); + } + param_3[1] = param_3[1] + (fVar6 - fVar7); +LAB_7f01ff80: + *param_4 = fVar7; + if (!bVar1) { + *param_3 = *param_2; + param_3[2] = param_2[2]; + } + return 1; +} + + + +int get_next_available_guardID(void) + +{ + int iVar1; + int iVar2; + GUARDdata *pGVar3; + + iVar2 = 0; + iVar1 = 0; + if (0 < num_guards) { + pGVar3 = ptr_guard_data; + do { + iVar1 += 0x1dc; + if (pGVar3->MODELdata_pointer == 0) { + iVar2 += 1; + } + pGVar3 = pGVar3 + 1; + } while (iVar1 < num_guards * 0x1dc); + } + return iVar2; +} + + + +void proc_7F020018(void) + +{ + int in_a0_lo; + float in_a1_lo; + f32 fVar1; + + fVar1 = get_007_health_mod(); + *(float *)(in_a0_lo + 0x100) = (float)fVar1 * in_a1_lo; + return; +} + + + +f32 get_guard_health(GUARDdata *param_1) + +{ + return param_1->maxdamage; +} + + + +void guard_calc_final_damage_recieved(GUARDdata *guard,u32 damage) + +{ + f32 fVar1; + + fVar1 = get_007_health_mod(); + *(float *)&guard->damage = (float)guard->damage - (float)damage * (float)fVar1; + return; +} + + + +float proc_7F020090(GUARDdata *param_1) + +{ + if (0.00000000 <= (float)param_1->damage) { + return 0.00000000; + } + return -(float)param_1->damage; +} + + + +u32 init_GUARDdata_with_set_values(u32 param_1,u32 param_2,u32 param_3,u32 param_4) + +{ + int *piVar1; + int iVar2; + GUARDdata *pGVar3; + int iVar4; + undefined4 extraout_a2_lo; + GUARDdata *guard; + f32 fVar5; + float extraout_f12; + float extraout_f12_00; + undefined4 in_stack_00000010; + int in_stack_00000014; + + guard = NULL; + iVar2 = 0; + if (0 < num_guards) { + iVar4 = 0; + pGVar3 = ptr_guard_data; + do { + piVar1 = &pGVar3->MODELdata_pointer; + iVar2 += 1; + pGVar3 = pGVar3 + 1; + if (*piVar1 == 0) { + guard = (GUARDdata *)((int)&ptr_guard_data->chrnum + iVar4); + break; + } + iVar4 += 0x1dc; + } while (iVar2 < num_guards); + } + *(undefined *)param_1 = 3; + *(GUARDdata **)(param_1 + 4) = guard; + *(undefined4 *)(param_1 + 8) = *(undefined4 *)param_3; + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_3 + 4); + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_3 + 8); + *(undefined4 *)(param_1 + 0x14) = in_stack_00000010; + proc_7F06FF5C(param_2,proc_7F01FC10); + *(undefined2 *)param_2 = 10; + *(GUARDdata **)(param_2 + 4) = guard; + setsuboffset(param_2,(xyzpoint *)param_3); + setsubroty(param_2,extraout_f12,param_4,extraout_a2_lo); + proc_7F06FF18(param_2,animation_rate,extraout_f12_00); + guard->chrnum = (u16)player1_guardID; + player1_guardID += 1; + guard->headnum = '\0'; + guard->bodynum = '\0'; + guard->POSdata_pointer = param_1; + guard->MODELdata_pointer = param_2; + guard->pertains_to_action61 = 0; + guard->numarghs = '\0'; + guard->field_C8 = 0; + guard->invalidmove = '\0'; + iVar2 = global_timer; + guard->last_bond_detection_time = 0; + guard->field_D8 = 0.00000000; + guard->field_DC = 0.00000000; + guard->field_E0 = 0.00000000; + guard->lastshooter = 0; + guard->timeshooter = 0; + guard->field_F0 = 0; + guard->numclosearghs = '\0'; + guard->field_13C = 0.00000000; + guard->damage = 0; + guard->reaction_time = 250.00000000; + guard->field_CC = iVar2; + guard->hearingscale = 1.00000000; + fVar5 = get_007_health_mod(); + *(float *)&guard->maxdamage = (float)fVar5 * 4.00000000; + proc_7F04009C(param_1,(byte *)&guard->field_F8); + guard->fadealpha = -1; + guard->ptr_SEbuffer1 = 0; + guard->ptr_SEbuffer2 = 0; + guard->ptr_SEbuffer3 = 0; + guard->ptr_SEbuffer4 = 0; + guard->field_178 = 0; + guard->field_17C = 0; + guard->guard_bitflags = 1; + guard->special_bitflags = 0; + guard->field_A4 = 0.00000000; + guard->field_A8 = 0.00000000; + guard->clipping_height = 0.00000000; + guard->field_B0 = 0.00000000; + guard->field_B4 = 0.00000000; + guard->field_B8 = 0.00000000; + guard->field_F4 = guard->field_F8; + guard->field_F5 = guard->field_F9; + guard->field_F6 = guard->field_FA; + guard->field_F7 = guard->field_FB; + (guard->prevpos).x = *(f32 *)param_3; + (guard->prevpos).y = *(f32 *)(param_3 + 4); + fVar5 = *(f32 *)(param_3 + 8); + guard->actiontype = None; + guard->sleep = '\0'; + (guard->prevpos).z = fVar5; + guard->action_block_offset = 0; + guard->action_block_return = -1; + guard->userbyte1 = '\0'; + guard->userbyte2 = '\0'; + guard->guardtype_bitflags_scientist = '\0'; + guard->randomvalue = '\0'; + guard->loopcounter = 0; + guard->preset_of_2328_object_to_interact_with = -1; + guard->FA_target = -1; + guard->FB_target = -1; + guard->FC_target = -1; + guard->field_180 = -1; + guard->field_1AC = -1; + guard->firecount_left = '\0'; + guard->firecount_right = '\0'; + guard->beligerancy = '\0'; + guard->accuracyrating = '\0'; + guard->speedrating = '\0'; + guard->field_D = '\0'; + guard->field_11 = -1; + guard->field_140 = 0.00000000; + guard->field_144 = 0.00000000; + guard->field_148 = 0.00000000; + guard->field_14C = 0.00000000; + guard->field_150 = 0; + guard->field_154 = 0; + guard->field_158 = 0; + guard->field_15C = 0; + guard->field_E = '\0'; + guard->handle_positiondata[0] = 0; + guard->handle_positiondata[1] = 0; + guard->handle_positiondata_hat = 0; + guard->chrwidth = 20.00000000; + guard->action_block_pointer = in_stack_00000014; + guard->chrheight = 0x43390000; + proc_7F01FC10(param_2,(float *)(param_1 + 8),(float *)(param_1 + 8),&guard->clipping_height); + proc_7F020D94((int)guard); + return param_1; +} + + + +int replace_GUARDdata_with_actual_values + (u32 param_1,u32 param_2,u32 param_3,undefined4 param_4,undefined4 param_5) + +{ + object_standard *poVar1; + + poVar1 = remove_last_obj_pos_data_entry(); + if (poVar1 != NULL) { + poVar1 = (object_standard *) + init_GUARDdata_with_set_values((u32)poVar1,param_1,param_2,param_3); + } + return (int)poVar1; +} + + + +void disable_sounds_attached_to_player_then_something(int param_1) + +{ + undefined2 *puVar1; + int *objinstance; + object_standard *poVar2; + int iVar3; + int iVar4; + ulonglong uVar5; + ALLink_s *pAVar6; + + puVar1 = *(undefined2 **)(param_1 + 4); + objinstance = *(int **)(puVar1 + 0xe); + if (*(ALLink_s **)(puVar1 + 0xb4) == NULL) { + pAVar6 = *(ALLink_s **)(puVar1 + 0xb6); + } + else { + uVar5 = sfxGetArg0Unk3F(*(ALLink_s **)(puVar1 + 0xb4)); + if (uVar5 == 0) { + pAVar6 = *(ALLink_s **)(puVar1 + 0xb6); + } + else { + sfxDeactivate(*(int *)(puVar1 + 0xb4)); + pAVar6 = *(ALLink_s **)(puVar1 + 0xb6); + } + } + if (pAVar6 == NULL) { + pAVar6 = *(ALLink_s **)(puVar1 + 0xb8); + } + else { + uVar5 = sfxGetArg0Unk3F(pAVar6); + if (uVar5 == 0) { + pAVar6 = *(ALLink_s **)(puVar1 + 0xb8); + } + else { + sfxDeactivate(*(int *)(puVar1 + 0xb6)); + pAVar6 = *(ALLink_s **)(puVar1 + 0xb8); + } + } + if (pAVar6 == NULL) { + pAVar6 = *(ALLink_s **)(puVar1 + 0xba); + } + else { + uVar5 = sfxGetArg0Unk3F(pAVar6); + if (uVar5 == 0) { + pAVar6 = *(ALLink_s **)(puVar1 + 0xba); + } + else { + sfxDeactivate(*(int *)(puVar1 + 0xb8)); + pAVar6 = *(ALLink_s **)(puVar1 + 0xba); + } + } + if ((pAVar6 != NULL) && (uVar5 = sfxGetArg0Unk3F(pAVar6), uVar5 != 0)) { + sfxDeactivate(*(int *)(puVar1 + 0xba)); + } + proc_7F050DE8((int)objinstance); + proc_7F03E18C(param_1); + iVar4 = *(int *)(param_1 + 0x20); + while (iVar4 != 0) { + poVar2 = *(object_standard **)(iVar4 + 4); + iVar3 = *(int *)(iVar4 + 0x24); + proc_7F04C044(iVar4); + proc_7F041024(poVar2,1); + iVar4 = iVar3; + } + set_aircraft_obj_inst_scale_to_zero(objinstance); + *(undefined4 *)(puVar1 + 0xe) = 0; + *puVar1 = 0xffff; + if (*(int *)(puVar1 + 0x10) != 0) { + proc_7F06B248(*(int *)(puVar1 + 0x10)); + } + return; +} + + + +void animation_speed_related(f32 rate) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + float extraout_f12; + + iVar4 = 0; + animation_rate = rate; + if (0 < num_guards) { + iVar3 = 0; + iVar2 = num_guards; + do { + iVar1 = *(int *)((int)&ptr_guard_data->MODELdata_pointer + iVar3); + if (iVar1 != 0) { + proc_7F06FF18(iVar1,animation_rate,(float)rate); + rate = (f32)extraout_f12; + iVar2 = num_guards; + } + iVar4 += 1; + iVar3 += 0x1dc; + } while (iVar4 < iVar2); + } + return; +} + + + +f32 get_animation_rate(void) + +{ + return animation_rate; +} + + + +void proc_7F0205F0(int param_1) + +{ + float fVar1; + float fVar2; + float fVar3; + + if (*(char *)(param_1 + 0xe) < '\x02') { + *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0x150); + *(undefined4 *)(param_1 + 0x144) = *(undefined4 *)(param_1 + 0x154); + *(undefined4 *)(param_1 + 0x148) = *(undefined4 *)(param_1 + 0x158); + *(undefined4 *)(param_1 + 0x14c) = *(undefined4 *)(param_1 + 0x15c); + return; + } + fVar2 = 1.00000000; + fVar1 = global_timer_delta / (float)(int)*(char *)(param_1 + 0xe); + if (1.00000000 < fVar1) { + fVar3 = *(float *)(param_1 + 0x140); + } + else { + fVar3 = *(float *)(param_1 + 0x140); + fVar2 = fVar1; + } + *(float *)(param_1 + 0x140) = fVar3 + (*(float *)(param_1 + 0x150) - fVar3) * fVar2; + *(float *)(param_1 + 0x144) = + *(float *)(param_1 + 0x144) + + (*(float *)(param_1 + 0x154) - *(float *)(param_1 + 0x144)) * fVar2; + *(float *)(param_1 + 0x148) = + *(float *)(param_1 + 0x148) + + (*(float *)(param_1 + 0x158) - *(float *)(param_1 + 0x148)) * fVar2; + *(float *)(param_1 + 0x14c) = + *(float *)(param_1 + 0x14c) + + (*(float *)(param_1 + 0x15c) - *(float *)(param_1 + 0x14c)) * fVar2; + *(char *)(param_1 + 0xe) = *(char *)(param_1 + 0xe) - (char)clock_timer; + return; +} + + + +void proc_7F0206D4(int param_1) + +{ + u32 uVar1; + + if (*(char *)(param_1 + 0x11) < '\0') { + *(undefined *)(param_1 + 0x11) = 1; + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfff; + uVar1 = get_random_value(); + if (uVar1 % 3 == 0) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x1000; + } + else { + if (uVar1 % 3 == 1) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x2000; + } + } + uVar1 = get_random_value(); + if (uVar1 % 3 == 0) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x4000; + } + else { + if (uVar1 % 3 == 1) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x8000; + } + } + } + return; +} + + + +float proc_7F020794(int param_1) + +{ + float fVar1; + + fVar1 = (float)(int)*(char *)(param_1 + 0x11); + if (fVar1 < 10.00000000) { + fVar1 = sinf((fVar1 * flt_80051D28 * 0.25000000) / 10.00000000); + } + else { + fVar1 = sinf(((fVar1 - 10.00000000) * flt_80051D2C * 0.25000000) / 20.00000000); + fVar1 = 1.00000000 - fVar1; + } + return fVar1; +} + + + +// WARNING: Instruction at (ram,0x7f020890) overlaps instruction at (ram,0x7f02088c) +// + +void proc_7F02083C(int param_1,float *param_2) + +{ + ushort uVar1; + bool bVar2; + uint uVar3; + float *pfVar4; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a0_03; + undefined8 extraout_a0_04; + undefined8 uVar5; + float fVar6; + float fVar7; + float afStack104 [16]; + float fStack40; + float fStack36; + float fStack32; + float fStack28; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fStack4 = 1.00000000; + uVar3 = cheatCheckIfOn(cheats_cheat_dk_mode); + if (uVar3 != 0) { + if (param_1 == 0) { + fStack4 = 4.00000000; + } + else { + if ((param_1 == 2) || (param_1 == 3)) { + fStack4 = 2.50000000; + } + } + } + if ((((param_1 != 2) && (param_1 != 3)) && (param_1 != 1)) && (param_1 != 0)) { + return; + } + fStack12 = 0.00000000; + fStack16 = 0.00000000; + if (param_1 == 3) { + fStack8 = *(float *)(end_save_files + 0x144); + } + else { + if (param_1 == 2) { + fStack8 = *(float *)(end_save_files + 0x140); + } + else { + if (param_1 == 1) { + fStack8 = *(float *)(end_save_files + 0x148); + if ((*(ushort *)(end_save_files + 0x12) & 0x400) != 0) { + if (flt_80051D30 < fStack8) { + fStack8 = fStack8 - flt_80051D30; + } + else { + if (fStack8 < flt_80051D34) { + fStack8 = fStack8 + flt_80051D38; + } + else { + fStack8 = 0.00000000; + } + } + } + fStack12 = *(float *)(end_save_files + 0x14c); + } + else { + fStack8 = 0.00000000; + if (param_1 == 0) { + if ((*(ushort *)(end_save_files + 0x12) & 0x400) == 0) { + if (*(char *)(*(int *)(end_save_files + 0x1c) + 0x24) == '\0') { + fStack8 = *(float *)(end_save_files + 0x144); + } + else { + fStack8 = *(float *)(end_save_files + 0x140); + } + } + else { + fVar7 = *(float *)(end_save_files + 0x148); + fStack8 = fVar7; + if ((((*(ushort *)(end_save_files + 0x12) & 0x400) != 0) && + (fStack8 = flt_80051D3C, fVar7 <= flt_80051D3C)) && + (fStack8 = flt_80051D40, flt_80051D40 <= fVar7)) { + fStack8 = fVar7; + } + } + } + } + } + } + if (*(char *)(end_save_files + 0x11) < '\0') { + bVar2 = fStack8 == 0.00000000; + } + else { + if ((param_1 == 3) || (param_1 == 2)) { + fVar7 = proc_7F020794(end_save_files); + fVar7 = (fVar7 * flt_80051D44 * 15.00000000) / 360.00000000; + fStack8 = fStack8 - fVar7; + if ((*(ushort *)(end_save_files + 0x12) & 0x1000) == 0) { + if ((*(ushort *)(end_save_files + 0x12) & 0x2000) == 0) { + bVar2 = fStack8 == 0.00000000; + goto code_r0x7f020b5c; + } + fStack12 = fStack12 + fVar7; + } + else { + fStack12 = fStack12 - fVar7; + } + } + else { + if (param_1 != 1) { + bVar2 = fStack8 == 0.00000000; + goto code_r0x7f020b5c; + } + fVar7 = proc_7F020794(end_save_files); + fVar7 = fVar7 * flt_80051D48; + uVar1 = *(ushort *)(end_save_files + 0x12); + fVar6 = (fVar7 * 15.00000000) / 360.00000000; + fStack8 = fStack8 + fVar6; + if ((uVar1 & 0x1000) == 0) { + if ((uVar1 & 0x2000) != 0) { + fStack12 = fStack12 - fVar6; + } + } + else { + fStack12 = fStack12 + fVar6; + } + if ((uVar1 & 0x4000) == 0) { + if ((uVar1 & 0x8000) != 0) { + fStack16 = 0.00000000 - (fVar7 * 10.00000000) / 360.00000000; + } + } + else { + fStack16 = (fVar7 * 10.00000000) / 360.00000000 + 0.00000000; + } + } + bVar2 = fStack8 == 0.00000000; + } +code_r0x7f020b5c: + if ((((!bVar2) || (fStack12 != 0.00000000)) || (fStack16 != 0.00000000)) || + (fStack4 != 1.00000000)) { + fStack40 = (float)proc_7F02C190(); + if (fStack8 < 0.00000000) { + fStack8 = -fStack8; + } + else { + fStack8 = flt_80051D4C - fStack8; + } + if (fStack12 < 0.00000000) { + fStack12 = fStack12 + flt_80051D50; + } + pfVar4 = (float *)get_BONDdata_field_10D4(); + sub_GAME_7F058098(pfVar4,param_2); + fStack36 = param_2[0xc]; + fStack32 = param_2[0xd]; + fStack28 = param_2[0xe]; + param_2[0xc] = 0.00000000; + param_2[0xd] = 0.00000000; + param_2[0xe] = 0.00000000; + if ((fStack8 == 0.00000000) && (fStack16 == 0.00000000)) { + proc_7F0585FC(fStack12,extraout_a0,afStack104); + sub_GAME_7F058098(afStack104,param_2); + uVar5 = extraout_a0_04; + } + else { + fVar7 = fStack12 - fStack40; + if (fVar7 < 0.00000000) { + fVar7 = fVar7 + flt_80051D54; + } + proc_7F0585FC(fVar7,extraout_a0,afStack104); + sub_GAME_7F058098(afStack104,param_2); + uVar5 = extraout_a0_00; + if (fStack8 != 0.00000000) { + proc_7F058570(fStack8,extraout_a0_00,afStack104); + sub_GAME_7F058098(afStack104,param_2); + uVar5 = extraout_a0_01; + } + if (fStack16 != 0.00000000) { + proc_7F058688(fStack16,uVar5,afStack104); + sub_GAME_7F058098(afStack104,param_2); + uVar5 = extraout_a0_02; + } + proc_7F0585FC(fStack40,uVar5,afStack104); + sub_GAME_7F058098(afStack104,param_2); + uVar5 = extraout_a0_03; + } + if (fStack4 != 1.00000000) { + matrix_multiply_A1_by_F12(fStack4,uVar5,param_2); + } + param_2[0xc] = fStack36; + param_2[0xd] = fStack32; + param_2[0xe] = fStack28; + pfVar4 = (float *)get_BONDdata_field_10CC(); + sub_GAME_7F058098(pfVar4,param_2); + } + return; +} + + + +void proc_7F020D94(int param_1) + +{ + float extraout_f12; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + char *pcStack4; + + pcStack4 = *(char **)(param_1 + 0x18); + fStack16 = *(float *)(pcStack4 + 8) - 50.00000000; + fStack12 = *(float *)(param_1 + 0xac) - 1.00000000; + fStack8 = *(float *)(pcStack4 + 0x10) - 50.00000000; + fStack28 = *(float *)(pcStack4 + 8) + 50.00000000; + fStack24 = *(float *)(pcStack4 + 0xc) + 100.00000000; + fStack20 = *(float *)(pcStack4 + 0x10) + 50.00000000; + proc_7F03E18C((int)pcStack4); + proc_7F03E27C(pcStack4,&fStack16,&fStack28,extraout_f12); + proc_7F03E210((int)pcStack4); + return; +} + + + +void proc_7F020E40(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + int objanim; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + + iVar1 = *(int *)(param_1 + 0x18); + objanim = *(int *)(param_1 + 0x1c); + if ((*(ushort *)(param_1 + 0x12) & 0x800) == 0) { + getsuboffset(objanim,(undefined4 *)(param_1 + 0xbc),param_3,param_4); + proc_7F070AEC(objanim,param_2,1); + subcalcpos(objanim,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + proc_7F04009C(iVar1,(byte *)(param_1 + 0xf8)); + getsuboffset(objanim,(undefined4 *)(iVar1 + 8),extraout_a2_lo_00,extraout_a3_lo_00); + proc_7F020D94(param_1); + } + else { + subcalcpos(objanim,param_2,param_3,param_4); + getsuboffset(objanim,(undefined4 *)(iVar1 + 8),extraout_a2_lo_01,extraout_a3_lo_01); + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f021344) overlaps instruction at (ram,0x7f021340) +// +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +ulonglong proc_7F020EF0(char *param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + short *psVar1; + object_standard *poVar2; + ushort *partdesc; + uint uVar4; + int *piVar5; + float *pfVar6; + undefined8 uVar3; + u32 uVar7; + undefined4 *puVar8; + int iVar9; + char cVar12; + headHat *phVar10; + int iVar11; + int iVar13; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + uint extraout_a1_lo; + uint extraout_a1_lo_00; + uint extraout_a1_lo_01; + uint extraout_a1_lo_02; + uint extraout_a1_lo_03; + uint extraout_a1_lo_04; + uint extraout_a1_lo_05; + uint extraout_a1_lo_06; + uint extraout_a1_lo_07; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + uint extraout_a1_lo_08; + undefined8 extraout_a1_01; + undefined8 extraout_a1_02; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a2_lo_02; + undefined4 extraout_a2_lo_03; + undefined4 extraout_a2_lo_04; + undefined4 extraout_a2_lo_05; + undefined4 extraout_a2_lo_06; + undefined4 extraout_a2_lo_07; + undefined4 extraout_a2_lo_08; + undefined4 extraout_a2_lo_09; + undefined4 extraout_a2_lo_10; + undefined4 extraout_a2_lo_11; + undefined4 uVar14; + undefined8 extraout_a2; + undefined8 extraout_a2_00; + undefined4 extraout_a2_lo_12; + undefined4 extraout_a2_lo_13; + undefined4 extraout_a2_lo_14; + undefined8 extraout_a2_01; + undefined8 extraout_a2_02; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + undefined4 extraout_a3_lo_02; + undefined4 extraout_a3_lo_03; + undefined4 extraout_a3_lo_04; + undefined4 extraout_a3_lo_05; + undefined4 extraout_a3_lo_06; + undefined4 extraout_a3_lo_07; + undefined4 extraout_a3_lo_08; + undefined4 extraout_a3_lo_09; + undefined4 extraout_a3_lo_10; + undefined4 extraout_a3_lo_11; + undefined4 extraout_a3_lo_12; + undefined4 uVar15; + undefined8 extraout_a3; + undefined8 extraout_a3_00; + undefined4 extraout_a3_lo_13; + undefined4 extraout_a3_lo_14; + undefined4 extraout_a3_lo_15; + undefined8 extraout_a3_01; + undefined8 extraout_a3_02; + ushort uVar16; + float **ppfVar17; + float **ppfVar18; + float **ppfVar19; + float **ppfVar20; + float fVar21; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f14; + float afStack244 [16]; + float afStack180 [16]; + f32 fStack116; + f32 fStack112; + f32 fStack108; + xyzpoint xStack104; + uint uStack92; + int iStack88; + uint uStack84; + undefined4 uStack80; + uint uStack76; + uint uStack72; + float *apfStack64 [4]; + float *pfStack48; + + ppfVar19 = (float **)&dword_8002CC6C; + ppfVar17 = apfStack64; + do { + ppfVar20 = ppfVar19 + 3; + ppfVar18 = ppfVar17 + 3; + *ppfVar17 = *ppfVar19; + ppfVar17[1] = ppfVar19[1]; + ppfVar17[2] = ppfVar19[2]; + ppfVar19 = ppfVar20; + ppfVar17 = ppfVar18; + } while (ppfVar20 != (float **)&dword_8002CCA8); + *ppfVar18 = _dword_8002CCA8; + psVar1 = *(short **)(param_1 + 4); + uStack72 = *(uint *)(psVar1 + 0xe); + uStack80 = 1; + uStack84 = clock_timer; + if (((*(uint *)(psVar1 + 10) & 0x400) == 0) || ((int)(*(uint *)(psVar1 + 10) << 0xd) < 0)) { + if (dword_8002C904 == 0) { + proc_7F0326BC((int)psVar1); + param_2 = extraout_a1_lo_00; + param_4 = extraout_a3_lo_01; + param_3 = extraout_a2_lo_00; + if (*(int *)(psVar1 + 0xe) == 0) { + return 1; + } + } + else { + if (*(int *)(animation_table_ptrs1 + dword_8002C908 * 4) != 1) { + uVar4 = proc_7F06F5AC(uStack72); + param_2 = *(uint *)(animation_table_ptrs1 + dword_8002C908 * 4); + param_3 = 0; + param_4 = extraout_a3_lo; + if (uVar4 != param_2) { + proc_7F06FCA8(uStack72,param_2,0,extraout_f12,0,extraout_f14); + param_2 = extraout_a1_lo; + param_4 = extraout_a3_lo_00; + param_3 = extraout_a2_lo; + } + } + } + if (dword_8002C90C == 0) { + uVar16 = psVar1[9]; + } + else { + uStack84 = 0; + if (dword_8002C910 == 0) { + uVar16 = psVar1[9]; + } + else { + uStack84 = 1; + uVar16 = psVar1[9]; + } + } + } + else { + uVar16 = psVar1[9]; + } + if ((uVar16 & 0x20) != 0) { + disable_sounds_attached_to_player_then_something((int)param_1); + return 1; + } + if (*(int *)(psVar1 + 0xb0) == 0) { + iVar9 = *(int *)(psVar1 + 0xb2); + } + else { + poVar2 = *(object_standard **)(*(int *)(psVar1 + 0xb0) + 4); + if ((poVar2->runtime_bitflags & 4U) == 0) { + iVar9 = *(int *)(psVar1 + 0xb2); + } + else { + proc_7F041024(poVar2,1); + iVar9 = *(int *)(psVar1 + 0xb2); + param_2 = extraout_a1_lo_01; + param_4 = extraout_a3_lo_02; + param_3 = extraout_a2_lo_01; + } + } + if (iVar9 == 0) { + uVar4 = *(uint *)(psVar1 + 10); + } + else { + if (((*(object_standard **)(iVar9 + 4))->runtime_bitflags & 4U) == 0) { + uVar4 = *(uint *)(psVar1 + 10); + } + else { + proc_7F041024(*(object_standard **)(iVar9 + 4),1); + uVar4 = *(uint *)(psVar1 + 10); + param_2 = extraout_a1_lo_02; + param_4 = extraout_a3_lo_03; + param_3 = extraout_a2_lo_02; + } + } + if ((uVar4 & 0x400) == 0) { + if (*param_1 == '\x06') { + proc_7F09B15C((int)param_1); + param_4 = extraout_a3_lo_04; + param_3 = extraout_a2_lo_03; + if (ptr_BONDdata_p1[uVar4]->unknown != 1) { + uVar4 = *(uint *)(psVar1 + 10); + param_2 = extraout_a1_lo_03; + goto LAB_7f021118; + } + } + else { +LAB_7f021118: + if (-1 < (int)(uVar4 << 8)) { + cVar12 = *(char *)((int)psVar1 + 7); + if ((cVar12 == '\x0e') || (cVar12 == '\x0f')) { + if (((cVar12 == '\x0e') && (*(char *)(psVar1 + 0x1c) == '\x06')) || + ((cVar12 == '\x0f' && (*(char *)(psVar1 + 0x2e) == '\x06')))) { + fVar21 = getinstsize(uStack72,param_2,0xe,param_4); + uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_00, + (int)fVar21); + if (uStack76 != 0) { + getsuboffset(uStack72,(undefined4 *)(psVar1 + 0x5e),extraout_a2_lo_04, + extraout_a3_lo_05); + subcalcpos(uStack72,extraout_a1_lo_04,extraout_a2_lo_05, + extraout_a3_lo_06); + proc_7F04009C((int)param_1,(byte *)(psVar1 + 0x7c)); + getsuboffset(uStack72,(undefined4 *)(param_1 + 8),extraout_a2_lo_06, + extraout_a3_lo_07); + proc_7F020D94((int)psVar1); + } + } + else { + proc_7F020E40((int)psVar1,uStack84,0xe,param_4); + fVar21 = getinstsize(uStack72,extraout_a1_lo_05,extraout_a2_lo_07, + extraout_a3_lo_08); + uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_01, + (int)fVar21); + if (uStack76 != 0) { + if (*(char *)((int)psVar1 + 7) == '\x0e') { + *(undefined4 *)(psVar1 + 0x3c) = global_timer; + } + else { + if (*(char *)((int)psVar1 + 7) == '\x0f') { + *(undefined4 *)(psVar1 + 0x4e) = global_timer; + } + } + } + } + cVar12 = *(char *)((int)psVar1 + 7); + } + else { + if ((cVar12 == '\x03') && (*(int *)(psVar1 + 0x16) == 0)) { + fVar21 = getinstsize(uStack72,param_2,0xe,param_4); + uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_02, + (int)fVar21); + if ((uStack76 == 0) || (*(int *)(psVar1 + 0x1e) != 0)) { + proc_7F070AEC(uStack72,uStack84,0); + } + else { + proc_7F020E40((int)psVar1,uStack84,extraout_a2_lo_08,extraout_a3_lo_09); + } + cVar12 = *(char *)((int)psVar1 + 7); + } + else { + if (cVar12 == '\x01') { + fVar21 = getinstsize(uStack72,param_2,0xe,param_4); + uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_03, + (int)fVar21); + if ((uStack76 == 0) && ((*(uint *)(psVar1 + 10) & 1) == 0)) { + if (*(int *)(uStack72 + 0x54) != 0) { + proc_7F070AEC(uStack72,uStack84,0); + } + } + else { + proc_7F020E40((int)psVar1,uStack84,extraout_a2_lo_09, + extraout_a3_lo_10); + } + cVar12 = *(char *)((int)psVar1 + 7); + } + else { + if ((uVar4 & 0x4000) == 0) { + proc_7F020E40((int)psVar1,uStack84,0xe,param_4); + uVar4 = extraout_a1_lo_07; + uVar14 = extraout_a2_lo_11; + uVar15 = extraout_a3_lo_12; + } + else { + proc_7F070AEC(uStack72,uStack84,0); + uVar4 = extraout_a1_lo_06; + uVar14 = extraout_a2_lo_10; + uVar15 = extraout_a3_lo_11; + } + fVar21 = getinstsize(uStack72,uVar4,uVar14,uVar15); + uStack76 = proc_7F054D6C(param_1,(float *)(param_1 + 8),extraout_f12_04, + (int)fVar21); + cVar12 = *(char *)((int)psVar1 + 7); + } + } + } + goto LAB_7f0213c8; + } + } + uStack76 = 1; + if (((*(char *)((int)psVar1 + 7) == '\x03') && (*(int *)(psVar1 + 0x16) == 0)) && + (param_3 = 0, *(int *)(psVar1 + 0x1e) != 0)) { + proc_7F070AEC(uStack72,uStack84,0); + } + else { + proc_7F020E40((int)psVar1,uStack84,param_3,param_4); + } + cVar12 = *(char *)((int)psVar1 + 7); + } + else { + uStack76 = 0; + cVar12 = *(char *)((int)psVar1 + 7); + } +LAB_7f0213c8: + if (cVar12 == '\x01') { + if (*(int *)(uStack72 + 0x54) != 0) { + uVar16 = psVar1[9]; + goto LAB_7f0213f8; + } + if (*param_1 == '\x06') goto LAB_7f0213f4; + } + else { +LAB_7f0213f4: + uVar16 = psVar1[9]; +LAB_7f0213f8: + psVar1[9] = uVar16 | 0x200; + } + proc_7F0205F0((int)psVar1); + uVar3 = extraout_a1; + extraout_a2_02 = extraout_a2; + extraout_a3_02 = extraout_a3; + if (*(int *)(psVar1 + 0x10) != 0) { + proc_7F06B248(*(int *)(psVar1 + 0x10)); + *(undefined4 *)(psVar1 + 0x10) = 0; + uVar3 = extraout_a1_00; + extraout_a2_02 = extraout_a2_00; + extraout_a3_02 = extraout_a3_00; + } + if (uStack76 == 0) { + iVar9 = *(int *)(psVar1 + 0xb0); + if (iVar9 == 0) { + iVar9 = *(int *)(psVar1 + 0xb2); + } + else { + *(byte *)(iVar9 + 1) = *(byte *)(iVar9 + 1) & 0xfd; + iVar9 = *(int *)(psVar1 + 0xb2); + } + if (iVar9 == 0) { + iVar9 = *(int *)(psVar1 + 0xec); + } + else { + *(byte *)(iVar9 + 1) = *(byte *)(iVar9 + 1) & 0xfd; + iVar9 = *(int *)(psVar1 + 0xec); + } + if (iVar9 != 0) { + *(byte *)(iVar9 + 1) = *(byte *)(iVar9 + 1) & 0xfd; + } + param_1[1] = param_1[1] & 0xfd; + *(undefined *)(psVar1 + 0x7a) = *(undefined *)(psVar1 + 0x7c); + *(undefined *)((int)psVar1 + 0xf5) = *(undefined *)((int)psVar1 + 0xf9); + *(undefined *)(psVar1 + 0x7b) = *(undefined *)(psVar1 + 0x7d); + *(undefined *)((int)psVar1 + 0xf7) = *(undefined *)((int)psVar1 + 0xfb); + goto LAB_7f021aac; + } + get_debug_chrnum_flag(); + param_1[1] = param_1[1] | 2; + *(uint *)(psVar1 + 10) = *(uint *)(psVar1 + 10) | 8; + uVar4 = cheatCheckIfOn(cheats_cheat_dk_mode); + if (uVar4 != 0) { + set_flt_80036088(0.31250000); + } + dword_80036090 = proc_7F02083C; + end_save_files = psVar1; + pfStack48 = (float *)get_BONDdata_field_10CC(); + apfStack64[0] = pfStack48; + proc_7F0BD714((int)*(short *)(*(int *)(uStack72 + 8) + 0xe) << 6); + if ((-1 < *(char *)((int)end_save_files + 0x11)) && + (*(char *)((int)end_save_files + 0x11) = + *(char *)((int)end_save_files + 0x11) + (char)clock_timer, + '\x1d' < *(char *)((int)end_save_files + 0x11))) { + *(undefined *)((int)end_save_files + 0x11) = 0xff; + } + subcalcmatrices(apfStack64,uStack72,extraout_a2_lo_12,extraout_a3_lo_13); + dword_80036090 = NULL; + set_flt_80036088(1.00000000); + proc_7F040310((byte *)(psVar1 + 0x7a),(byte *)(psVar1 + 0x7c)); + fVar21 = proc_7F06C768(uStack72,extraout_a1_lo_08,extraout_a2_lo_13,extraout_a3_lo_14); + *(float *)(param_1 + 0x18) = fVar21; + piVar5 = proc_7F06B120(NULL,uStack72); + *(int **)(psVar1 + 0x10) = piVar5; + proc_7F0523F8((int)param_1,0,(int **)(psVar1 + 0x10)); + proc_7F0523F8((int)param_1,1,(int **)(psVar1 + 0x10)); + iVar9 = *(int *)(psVar1 + 0xec); + if (iVar9 != 0) { + iStack88 = *(int *)(iVar9 + 4); + uStack92 = *(uint *)(iStack88 + 0x14); + *(byte *)(iVar9 + 1) = *(byte *)(iVar9 + 1) | 2; + pfVar6 = (float *)proc_7F06C660(uStack72,*(ushort **)(uStack92 + 0x1c),0); + apfStack64[0] = pfVar6; + proc_7F0BD714((int)*(short *)(*(int *)(uStack92 + 8) + 0xe) << 6); + pfStack48 = pfVar6; + instcalcmatrices(apfStack64,uStack92,extraout_a2_lo_14,extraout_a3_lo_15); + if ((*(char *)(psVar1 + 3) < '*') || ('E' < *(char *)(psVar1 + 3))) { +LAB_7f021998: + uVar16 = psVar1[9]; + } + else { + xStack104.x = (float)dword_8002CCAC; + xStack104.y = (float)dword_8002CCB0; + xStack104.z = (float)dword_8002CCB4; + uVar3 = get_hat_model(*(int *)(psVar1 + 0xec)); + iVar9 = (int)uVar3; + iVar13 = (int)*(char *)(psVar1 + 3) + -0x2a; + phVar10 = flt_8003E464 + iVar9 + iVar13 * 6; + uVar7 = get_debug_render_raster(); + if (uVar7 == 0) { + uVar7 = get_controller_buttons_held('\0',L_TRIG); + if (uVar7 != 0) { + uVar7 = get_controller_buttons_held('\0',A_BUTTON); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].zoffset = + (float)flt_8003E464[iVar9 + iVar13 * 6].zoffset - flt_80051D58; + } + uVar7 = get_controller_buttons_held('\0',B_BUTTON); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].zoffset = + (float)flt_8003E464[iVar9 + iVar13 * 6].zoffset + flt_80051D5C; + } + uVar7 = get_controller_buttons_held('\0',D_CBUTTONS); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].yoffset = + (float)flt_8003E464[iVar9 + iVar13 * 6].yoffset - flt_80051D60; + } + uVar7 = get_controller_buttons_held('\0',U_CBUTTONS); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].yoffset = + (float)flt_8003E464[iVar9 + iVar13 * 6].yoffset + flt_80051D64; + } + uVar7 = get_controller_buttons_held('\0',L_CBUTTONS); + if (uVar7 != 0) { + *(float *)&phVar10->xoffset = (float)phVar10->xoffset - flt_80051D68; + } + uVar7 = get_controller_buttons_held('\0',R_CBUTTONS); + if (uVar7 != 0) { + *(float *)&phVar10->xoffset = (float)phVar10->xoffset + flt_80051D6C; + } + } + uVar7 = get_controller_buttons_held('\0',R_TRIG); + if (uVar7 != 0) { + uVar7 = get_controller_buttons_held('\0',A_BUTTON); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].zsize = + (float)flt_8003E464[iVar9 + iVar13 * 6].zsize * flt_80051D70; + } + uVar7 = get_controller_buttons_held('\0',B_BUTTON); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].zsize = + (float)flt_8003E464[iVar9 + iVar13 * 6].zsize * flt_80051D74; + } + uVar7 = get_controller_buttons_held('\0',D_CBUTTONS); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].ysize = + (float)flt_8003E464[iVar9 + iVar13 * 6].ysize * flt_80051D78; + } + uVar7 = get_controller_buttons_held('\0',U_CBUTTONS); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].ysize = + (float)flt_8003E464[iVar9 + iVar13 * 6].ysize * flt_80051D7C; + } + uVar7 = get_controller_buttons_held('\0',L_CBUTTONS); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].xsize = + (float)flt_8003E464[iVar9 + iVar13 * 6].xsize * flt_80051D80; + } + uVar7 = get_controller_buttons_held('\0',R_CBUTTONS); + if (uVar7 != 0) { + *(float *)&flt_8003E464[iVar9 + iVar13 * 6].xsize = + (float)flt_8003E464[iVar9 + iVar13 * 6].xsize * flt_80051D84; + } + } + } + xStack104.x = (float)phVar10->xoffset * flt_80051D88; + xStack104.y = (float)flt_8003E464[iVar9 + iVar13 * 6].yoffset * flt_80051D88; + xStack104.z = (float)flt_8003E464[iVar9 + iVar13 * 6].zoffset * flt_80051D88; + fStack108 = flt_8003E464[iVar9 + iVar13 * 6].xsize; + fStack112 = flt_8003E464[iVar9 + iVar13 * 6].ysize; + fStack116 = flt_8003E464[iVar9 + iVar13 * 6].zsize; + init_something_copy_posdata_to_it(&xStack104,(int *)afStack180); + proc_7F0589B4((float)fStack108,extraout_a0,afStack180); + proc_7F0589E4((float)fStack112,extraout_a0_00,(int)afStack180); + proc_7F058A4C((float)fStack116,extraout_a0_01,(int)afStack180); + proc_7F05818C(*(float **)(uStack92 + 0xc),afStack180,(int)afStack244); + proc_7F058020((float (*) [4] [4])afStack244,*(float (**) [4])(uStack92 + 0xc)); + if (iVar9 == 2) { + uStack80 = 0; + goto LAB_7f021998; + } + uVar16 = psVar1[9]; + } + if (((uVar16 & 1) == 0) || ((*(uint *)(iStack88 + 100) & 0x80) == 0)) { + piVar5 = proc_7F06B120(*(int **)(psVar1 + 0x10),uStack92); + *(int **)(psVar1 + 0x10) = piVar5; + } + } + partdesc = *(ushort **)(*(int *)(*(int *)(uStack72 + 8) + 8) + 0x10); + if (partdesc != NULL) { + piVar5 = (int *)extract_id_from_object_structure_microcode(uStack72,partdesc); + if ((*piVar5 != 0) && (partdesc = *(ushort **)(*(int *)(*piVar5 + 8) + 4), partdesc != NULL) + ) { + puVar8 = (undefined4 *)extract_id_from_object_structure_microcode(uStack72,partdesc); + *puVar8 = uStack80; + } + } + proc_7F06B29C(*(int **)(psVar1 + 0x10)); + iVar9 = proc_7F06BB28(*(int *)(psVar1 + 0x10)); + *(int *)(psVar1 + 0x10) = iVar9; + uVar3 = extraout_a1_01; + extraout_a2_02 = extraout_a2_01; + extraout_a3_02 = extraout_a3_01; +LAB_7f021aac: + if ((*(uint *)(psVar1 + 10) & 0x400) == 0) { + uVar16 = psVar1[9]; + if ((uVar16 & 1) != 0) { + iVar9 = *(int *)(param_1 + 0x20); + if (iVar9 != 0) { + iVar13 = *(int *)(iVar9 + 0x24); + while (iVar11 = iVar13, + proc_7F04C130(iVar9,(uint)uVar3,(int)extraout_a2_02,(int)extraout_a3_02), + iVar11 != 0) { + uVar3 = extraout_a1_02; + extraout_a2_02 = extraout_a2_02; + extraout_a3_02 = extraout_a3_02; + iVar13 = *(int *)(iVar11 + 0x24); + iVar9 = iVar11; + } + uVar16 = psVar1[9]; + } + psVar1[9] = uVar16 & 0xfffe; + } + proc_7F02E26C(psVar1); + } + return 0; +} + + + +void proc_7F021B20(int param_1) + +{ + int iVar1; + ushort uVar2; + int iVar3; + + iVar3 = *(int *)(*(int *)(param_1 + 0x18) + 0x20); + if (iVar3 == 0) { + uVar2 = *(ushort *)(param_1 + 0x12); + } + else { + iVar1 = *(int *)(param_1 + 0x1d8); + while( true ) { + if (iVar3 == iVar1) { + iVar3 = *(int *)(iVar3 + 0x24); + } + else { + if (iVar3 == *(int *)(param_1 + 0x164)) { + iVar3 = *(int *)(iVar3 + 0x24); + } + else { + if (iVar3 == *(int *)(param_1 + 0x160)) { + iVar3 = *(int *)(iVar3 + 0x24); + } + else { + if ((*(uint *)(*(int *)(iVar3 + 4) + 8) & 0x2000) == 0) { + proc_7F04BFD0(iVar3,1); + iVar3 = *(int *)(iVar3 + 0x24); + } + else { + iVar3 = *(int *)(iVar3 + 0x24); + } + } + } + } + if (iVar3 == 0) break; + iVar1 = *(int *)(param_1 + 0x1d8); + } + uVar2 = *(ushort *)(param_1 + 0x12); + } + *(ushort *)(param_1 + 0x12) = uVar2 | 1; + return; +} + + + +void proc_7F021BB4(undefined *param_1) + +{ + byte_8002CCB8 = *param_1; + DAT_8002ccb9 = param_1[1]; + DAT_8002ccba = param_1[2]; + return; +} + + + +void proc_7F021BD8(undefined *param_1) + +{ + *param_1 = byte_8002CCB8; + param_1[1] = DAT_8002ccb9; + param_1[2] = DAT_8002ccba; + return; +} + + + +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +longlong proc_7F021BFC(char *param_1,uint *param_2,uint param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + longlong lVar5; + undefined4 extraout_a2_lo; + int iVar6; + undefined4 extraout_a3_lo; + int iVar7; + int iVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + float fVar13; + float extraout_f12; + float extraout_f14; + uint *puStackX4; + int iStack140; + uint uStack136; + uint uStack132; + uint uStack128; + uint uStack124; + float fStack120; + float fStack116; + undefined4 uStack104; + undefined4 uStack100; + undefined4 uStack96; + uint *puStack92; + undefined4 uStack56; + uint uStack52; + uint uStack48; + uint uStack36; + undefined4 uStack32; + int iStack28; + float afStack24 [3]; + float fStack12; + + iVar1 = *(int *)(param_1 + 4); + uStack36 = (uint)*(byte *)(iVar1 + 0xc); + if (-1 < *(int *)(iVar1 + 0x14) << 5) { + fVar13 = getinstsize(*(int *)(iVar1 + 0x1c),(uint)param_2,param_3,*(int *)(iVar1 + 0x1c)); + proc_7F054B80((int)param_1); + uStack36 = (uint)((float)uStack36 * fVar13); + } + if (((int)uStack36 < 0xff) || (*(int *)(iVar1 + 0x14) << 0xe < 0)) { + if (param_3 == 0) { + return (longlong)(int)param_2; + } + uStack32 = 3; + } + else { + if (param_3 == 0) { + uStack32 = 1; + } + else { + uStack32 = 2; + } + } + lVar5 = if_sky_present_convert_values((int)param_1,afStack24); + iStack28 = (int)lVar5; + puStackX4 = param_2; + if (lVar5 != 0) { + puVar11 = &dword_8002CCBC; + puVar9 = &uStack104; + if (0 < (int)uStack36) { + do { + puVar12 = puVar11 + 3; + puVar10 = puVar9 + 3; + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + puVar9[2] = puVar11[2]; + puVar11 = puVar12; + puVar9 = puVar10; + } while (puVar12 != (undefined4 *)&dword_8002CCF8); + iVar6 = 0; + *puVar10 = _dword_8002CCF8; + iStack140 = 0x50; + iVar2 = *(int *)(iVar1 + 0x160); + iVar3 = *(int *)(iVar1 + 0x164); + iVar4 = *(int *)(iVar1 + 0x1d8); + iVar7 = 0; + iVar8 = 0; + if (iVar2 != 0) { + iVar6 = *(int *)(iVar2 + 4); + } + if (iVar3 != 0) { + iVar7 = *(int *)(iVar3 + 4); + } + if (iVar4 != 0) { + iVar8 = *(int *)(iVar4 + 4); + } + lVar5 = proc_7F054A64(param_1,&fStack120); + if ((lVar5 < 1) || (*(int *)(iVar1 + 0x14) << 8 < 0)) { + puStack92 = proc_7F0B4FB4(param_2); + } + else { + puStack92 = proc_7F0B4FF4(param_2,extraout_f12,extraout_f14,fStack120,fStack116); + } + uStack100 = 1; + uStack96 = uStack32; + if ((*(uint *)(iVar1 + 0x14) & 0x2000) == 0) { + if (iStack28 == 1) { + iStack140 = (int)((1.00000000 - fStack12) * 80.00000000); + } + } + else { + iStack140 = 0; + } + proc_7F073FC8(iStack140); + uStack136 = (uint)*(byte *)(iVar1 + 0xf4); + uStack132 = (uint)*(byte *)(iVar1 + 0xf5); + uStack128 = (uint)*(byte *)(iVar1 + 0xf6); + uStack124 = (uint)*(byte *)(iVar1 + 0xf7); + proc_7F040384((int *)&uStack136,(longlong)iStack28,afStack24); + uStack52 = (uint)DAT_8002ccba << 8 | (uint)byte_8002CCB8 << 0x18 | + (uint)DAT_8002ccb9 << 0x10; + uStack48 = uStack124 | uStack136 << 0x18 | uStack132 << 0x10 | uStack128 << 8; + if ((int)uStack36 < 0xff) { + uStack56 = 8; + uStack52 |= uStack36 & 0xff; + } + else { + uStack56 = 7; + } + pPlayersPerm->drawplayercount = pPlayersPerm->drawplayercount + 1; + drawjointlist((int)&uStack104,*(uint **)(iVar1 + 0x20),extraout_a2_lo,extraout_a3_lo); + puStackX4 = puStack92; + if ((iVar6 != 0) && + (((ulonglong)*(byte *)(iVar6 + 2) & (longlong)(1 << (param_3 & 0x1f)) & 0xffU) != 0)) + { + puStackX4 = proc_7F0A1A94(puStack92,iVar2,param_3); + } + if ((iVar7 != 0) && + (((ulonglong)*(byte *)(iVar7 + 2) & (longlong)(1 << (param_3 & 0x1f)) & 0xffU) != 0)) + { + puStackX4 = proc_7F0A1A94(puStackX4,iVar3,param_3); + } + if ((iVar8 != 0) && + (((ulonglong)*(byte *)(iVar8 + 2) & (longlong)(1 << (param_3 & 0x1f)) & 0xffU) != 0)) + { + puStackX4 = proc_7F0A1A94(puStackX4,iVar4,param_3); + } + if (param_3 != 0) { + proc_7F08BD48(*(undefined4 **)(*(int *)(iVar1 + 0x1c) + 0xc), + (int)*(short *)(*(int *)(*(int *)(iVar1 + 0x1c) + 8) + 0xe)); + if ((iVar6 != 0) && ((*(uint *)(iVar6 + 100) & 0x800) == 0)) { + proc_7F08BD48(*(undefined4 **)(*(int *)(iVar6 + 0x14) + 0xc), + (int)*(short *)(*(int *)(*(int *)(iVar6 + 0x14) + 8) + 0xe)); + } + if ((iVar7 != 0) && ((*(uint *)(iVar7 + 100) & 0x800) == 0)) { + proc_7F08BD48(*(undefined4 **)(*(int *)(iVar7 + 0x14) + 0xc), + (int)*(short *)(*(int *)(*(int *)(iVar7 + 0x14) + 8) + 0xe)); + } + if (iVar8 != 0) { + proc_7F08BD48(*(undefined4 **)(*(int *)(iVar8 + 0x14) + 0xc), + (int)*(short *)(*(int *)(*(int *)(iVar8 + 0x14) + 8) + 0xe)); + } + } + } + } + if (param_3 != 0) { + proc_7F06B248(*(int *)(iVar1 + 0x20)); + *(undefined4 *)(iVar1 + 0x20) = 0; + } + return (longlong)(int)puStackX4; +} + + + +void proc_7F022078(int param_1,longlong param_2,float *param_3,undefined4 *param_4) + +{ + animation_something *paVar1; + u32 uVar2; + float *pfVar3; + longlong lVar4; + int iVar5; + int iVar6; + float fVar7; + float in_f12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float local_14; + float local_10; + float local_c; + + iVar5 = 0; + iVar6 = 0; + if (dword_8002C914.anonymous_0 != -1) { + paVar1 = &dword_8002C914; + lVar4 = (longlong)dword_8002C914.anonymous_0; + do { + iVar6 = iVar5; + if (param_2 == lVar4) break; + lVar4 = (longlong)paVar1[1].anonymous_0; + iVar5 += 1; + paVar1 = paVar1 + 1; + iVar6 = 0; + } while (lVar4 != -1); + } + if ((&dword_8002C914)[iVar6].field_10 == 0) { + iVar5 = (&dword_8002C914)[iVar6].field_4; + } + else { + uVar2 = get_random_value(); + in_f12 = extraout_f12; + if ((uVar2 & 4) == 0) { + fVar7 = sqrtf(param_3[2] * param_3[2] + *param_3 * *param_3 + param_3[1] * param_3[1]); + local_c = 42.00000000 / fVar7 + 1.00000000; + local_14 = *param_3 * local_c; + local_10 = param_3[1] * local_c; + local_c = param_3[2] * local_c; + pfVar3 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar3,&local_14); + proc_7F0A3E1C(&local_14,(&dword_8002C914)[iVar6].field_10,extraout_f12_00, + (short)(&dword_8002C914)[iVar6].field_18); + in_f12 = extraout_f12_01; + } + iVar5 = (&dword_8002C914)[iVar6].field_4; + } + if (iVar5 != 0) { + proc_7F0A3E1C(param_4,iVar5,in_f12,(short)(&dword_8002C914)[iVar6].field_C); + } + return; +} + + + +void proc_7F0221DC(int param_1,int param_2,ushort *param_3,float *param_4) + +{ + char cVar1; + int *piVar2; + u32 uVar3; + char cVar4; + int iVar5; + short *psVar6; + undefined4 *puVar7; + longlong lVar8; + int iVar9; + longlong lVar10; + ushort *puVar11; + undefined4 *puVar12; + ushort uVar13; + ushort *puVar14; + int iVar15; + int iVar16; + int *piVar17; + ushort *puVar18; + ushort *partdesc; + longlong lVar19; + longlong lVar20; + int iVar21; + float fVar22; + float fVar23; + float fVar24; + int iStack80; + + fVar22 = *param_4; + partdesc = NULL; + lVar19 = 0; + iVar9 = 0; + iVar15 = 0x7fffffff; + fVar23 = param_4[1]; + fVar24 = param_4[2]; + if (param_3 == NULL) { +LAB_7f0223c0: + if (partdesc != NULL) { + iVar15 = *(int *)(partdesc + 2); + piVar2 = (int *)extract_id_from_object_structure_microcode(param_1,partdesc); + iVar16 = 0; + piVar17 = NULL; + iStack80 = 0; + uVar3 = get_random_value(); + cVar1 = (char)(uVar3 % 0x32); + cVar4 = cVar1 + '\x14'; + if (param_2 == 8) { + cVar4 = cVar1 + 'x'; + } + if (param_2 == 0xf) { + cVar4 += '2'; + iVar5 = *(int *)(iVar15 + 0x10); + } + else { + iVar5 = *(int *)(iVar15 + 0x10); + } + iVar9 *= 0x10; + partdesc = *(ushort **)(iVar5 + iVar9 + 8); + if (partdesc != NULL) { + iVar16 = *(int *)(partdesc + 2); + piVar17 = (int *)extract_id_from_object_structure_microcode(param_1,partdesc); + iStack80 = (int)*(short *)(*(int *)(iVar15 + 0x10) + iVar9 + 0xc); + } + if ((*(int *)(iVar15 + 8) == *piVar2) && + (puVar7 = (undefined4 *)proc_7F09BE4C((longlong)*(short *)(iVar15 + 0xc),0xcccc,0,0), + puVar7 != NULL)) { + *(undefined4 **)piVar2 = puVar7; + lVar19 = 0; + iVar5 = 0; + if (0 < *(short *)(iVar15 + 0xc)) { + iVar21 = *(int *)(iVar15 + 8); + while( true ) { + lVar19 = (longlong)((int)lVar19 + 1); + puVar12 = (undefined4 *)(iVar21 + iVar5); + iVar5 += 0x10; + *puVar7 = *puVar12; + puVar7[1] = puVar12[1]; + puVar7[2] = puVar12[2]; + puVar7[3] = puVar12[3]; + if (*(short *)(iVar15 + 0xc) <= lVar19) break; + iVar21 = *(int *)(iVar15 + 8); + puVar7 = puVar7 + 4; + } + } + } + if (piVar17 == NULL) { + iVar5 = *(int *)(iVar15 + 8); + } + else { + if ((*(int *)(iVar16 + 8) == *piVar17) && + (puVar7 = (undefined4 *) + proc_7F09BE4C((longlong)*(short *)(iVar16 + 0xc),0xcccc,0,0), + puVar7 != NULL)) { + *(undefined4 **)piVar17 = puVar7; + lVar19 = 0; + iVar5 = 0; + if (0 < *(short *)(iVar16 + 0xc)) { + iVar21 = *(int *)(iVar16 + 8); + while( true ) { + lVar19 = (longlong)((int)lVar19 + 1); + puVar12 = (undefined4 *)(iVar21 + iVar5); + iVar5 += 0x10; + *puVar7 = *puVar12; + puVar7[1] = puVar12[1]; + puVar7[2] = puVar12[2]; + puVar7[3] = puVar12[3]; + if (*(short *)(iVar16 + 0xc) <= lVar19) break; + iVar21 = *(int *)(iVar16 + 8); + puVar7 = puVar7 + 4; + } + } + } + iVar5 = *(int *)(iVar15 + 8); + } + if ((iVar5 != *piVar2) && + (lVar19 = (longlong)*(short *)(*(int *)(iVar15 + 0x10) + iVar9 + 6), -1 < lVar19)) { + iVar9 = *piVar2; + while( true ) { + *(char *)(iVar9 + (int)lVar19 * 0x10 + 0xf) = cVar4; + lVar19 = (longlong)*(short *)(*(int *)(iVar15 + 0x14) + (int)lVar19 * 2); + if (lVar19 < 0) break; + iVar9 = *piVar2; + } + } + if (((piVar17 != NULL) && (*(int *)(iVar16 + 8) != *piVar17)) && + (lVar19 = (longlong)*(short *)(*(int *)(iVar16 + 0x10) + iStack80 * 0x10 + 6), + -1 < lVar19)) { + iVar9 = *piVar17; + while( true ) { + *(char *)(iVar9 + (int)lVar19 * 0x10 + 0xf) = cVar4; + lVar19 = (longlong)*(short *)(*(int *)(iVar16 + 0x14) + (int)lVar19 * 2); + if (lVar19 < 0) break; + iVar9 = *piVar17; + } + } + } + return; + } + uVar13 = *param_3; + puVar14 = param_3; + do { + uVar13 &= 0xff; + if (uVar13 == 8) { + proc_7F06E970(param_1,puVar14); + puVar11 = *(ushort **)(puVar14 + 10); + } + else { + if (uVar13 == 0x12) { + process_12_handle_switch(param_1,puVar14); + puVar11 = *(ushort **)(puVar14 + 10); + } + else { + if (uVar13 == 0x17) { + process_17_pointer_to_head(param_1,puVar14); + puVar11 = *(ushort **)(puVar14 + 10); + } + else { + puVar11 = *(ushort **)(puVar14 + 10); + if (uVar13 == 0x18) { + lVar8 = 0; + lVar10 = (longlong)*(short *)(*(int *)(puVar14 + 2) + 0xe); + if (0 < lVar10) { + psVar6 = *(short **)(*(int *)(puVar14 + 2) + 0x10); + lVar20 = lVar19; + puVar18 = partdesc; + do { + iVar9 = ((int)fVar22 - (int)*psVar6) * ((int)fVar22 - (int)*psVar6) + + ((int)fVar23 - (int)psVar6[1]) * + ((int)fVar23 - (int)psVar6[1]) + + ((int)fVar24 - (int)psVar6[2]) * + ((int)fVar24 - (int)psVar6[2]); + lVar19 = lVar8; + partdesc = puVar14; + if (iVar15 <= iVar9) { + lVar19 = lVar20; + iVar9 = iVar15; + partdesc = puVar18; + } + iVar15 = iVar9; + lVar8 = (longlong)((int)lVar8 + 1); + psVar6 = psVar6 + 8; + lVar20 = lVar19; + puVar18 = partdesc; + } while (lVar8 < lVar10); + } + } + } + } + } + iVar9 = (int)lVar19; + if ((puVar11 == NULL) || ((puVar14 != param_3 && ((uVar13 == 10 || (uVar13 == 0x11)))))) { + while (puVar11 = puVar14, puVar14 != NULL) { + if (puVar14 == param_3) { + puVar11 = NULL; + break; + } + puVar11 = *(ushort **)(puVar14 + 6); + if (*(ushort **)(puVar14 + 6) != NULL) break; + puVar14 = *(ushort **)(puVar14 + 4); + } + } + puVar14 = puVar11; + if (puVar14 == NULL) goto LAB_7f0223c0; + uVar13 = *puVar14; + } while( true ); +} + + + +// WARNING: Instruction at (ram,0x7f0227bc) overlaps instruction at (ram,0x7f0227b8) +// + +void proc_7F022648(int param_1,float *param_2,undefined4 param_3,undefined4 param_4) + +{ + bool bVar1; + longlong lVar2; + int objinst; + uint extraout_a1_lo; + uint uVar3; + undefined4 extraout_a2_lo; + int iVar4; + undefined4 extraout_a3_lo; + undefined8 extraout_a3; + undefined8 extraout_a3_00; + undefined8 uVar5; + float *pfVar6; + ulonglong uVar7; + float fVar8; + float fVar9; + float fVar10; + float extraout_f12; + float fStack124; + float fStack120; + float fStack116; + int *apiStack112 [5]; + float fStack92; + int iStack88; + ushort *puStack84; + int iStack80; + float afStack76 [12]; + int iStack28; + undefined4 *puStack24; + int aiStack20 [2]; + float fStack12; + int iStack4; + + iStack4 = *(int *)(param_1 + 4); + if (*(char *)(iStack4 + 7) != '\x05') { + objinst = *(int *)(iStack4 + 0x1c); + fStack12 = getinstsize(objinst,(uint)param_2,param_3,param_4); + if (((*(byte *)(param_1 + 1) & 2) != 0) && + (*(float *)(param_1 + 0x18) - fStack12 < param_2[0xd])) { + aiStack20[0] = 0; + puStack24 = NULL; + iStack28 = 0; + puStack84 = NULL; + iStack88 = getsubmatrix(objinst,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + fVar10 = 0.00000000; + uVar3 = 0; + uVar5 = extraout_a3; + iVar4 = iStack4; + do { + if (*(int *)(iVar4 + 0x160) != 0) { + fStack92 = fVar10; + fVar10 = getinstsize(*(int *)(*(int *)(*(int *)(iVar4 + 0x160) + 4) + 0x14), + uVar3,iVar4,(int)uVar5); + fVar10 = fVar10 * *(float *)(objinst + 0x14); + uVar5 = extraout_a3_00; + if (fVar10 <= fStack92) { + fVar10 = fStack92; + } + } + uVar3 += 4; + iVar4 += 4; + } while (uVar3 != 8); + pfVar6 = param_2 + 3; + lVar2 = proc_7F041074(param_2,pfVar6,(float *)(iStack88 + 0x30),fVar10); + bVar1 = lVar2 != 0; + if (bVar1) { + iStack28 = 1; + } + uVar7 = (ulonglong)bVar1; + if (bVar1) { + apiStack112[0] = *(int **)(iStack4 + 0x20); + objinst = proc_7F06C010(apiStack112,param_2,pfVar6,aiStack20,(ushort **)&puStack24); + while ((uVar7 = SEXT48(objinst), uVar7 == 100 || (uVar7 == 0x6e))) { + objinst = proc_7F04D9B0(aiStack20[0],(ushort *)puStack24,param_2,pfVar6, + afStack76,&iStack80,&puStack84); + if (objinst != 0) break; + objinst = probably_damage_detail_blood_effect_related + (apiStack112,param_2,pfVar6,aiStack20,(ushort **)&puStack24) + ; + } + } + if (0 < (longlong)uVar7) { + fStack124 = param_2[3]; + fStack120 = param_2[4]; + fStack116 = param_2[5]; + pfVar6 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar6,&fStack124); + objinst = proc_7F06C660(aiStack20[0],(ushort *)puStack24,0); + fVar8 = *(float *)(objinst + 0x30) - *param_2; + fVar10 = *(float *)(objinst + 0x34) - param_2[1]; + fVar9 = *(float *)(objinst + 0x38) - param_2[2]; + fVar10 = sqrtf(fVar9 * fVar9 + fVar8 * fVar8 + fVar10 * fVar10); + fVar10 = -(param_2[5] * fVar10 + param_2[2]); + if (fVar10 < param_2[0xd]) { + proc_7F03B9C0((int)param_2,param_1,extraout_f12,fVar10,(int)uVar7,puStack24, + afStack76,iStack80,puStack84,aiStack20[0],1); + } + } + if ((iStack28 != 0) && (*(float *)(param_1 + 0x18) <= param_2[0xd])) { + *(uint *)(iStack4 + 0x14) = *(uint *)(iStack4 + 0x14) | 4; + *(char *)(iStack4 + 10) = *(char *)(iStack4 + 10) + '\x01'; + } + } + } + return; +} + + + +void proc_7F022980(float *param_1,float *param_2) + +{ + char cVar1; + int iVar2; + int iVar3; + hit_header *phVar4; + longlong lVar5; + u32 uVar6; + undefined8 extraout_a2; + undefined8 extraout_a2_00; + undefined8 extraout_a2_01; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + int iVar7; + int iVar8; + float fVar9; + float *extraout_f0; + float *pfVar10; + float *pfVar11; + float extraout_f12; + float fStack136; + float fStack132; + float fStack128; + hit_header *phStack112; + float fStack96; + float fStack92; + float fStack88; + float fStack80; + float fStack76; + float fStack72; + float afStack68 [17]; + + iVar2 = *(int *)((int)param_2[1] + 4); + fStack96 = *param_1 - (*param_2 * param_1[3]) / param_1[5]; + fStack92 = param_1[1] - (*param_2 * param_1[4]) / param_1[5]; + fStack88 = param_1[2] - *param_2; + fVar9 = sqrtf(fStack88 * fStack88 + fStack96 * fStack96 + fStack92 * fStack92); + fStack72 = 1.00000000 - 42.00000000 / fVar9; + fStack80 = fStack96 * fStack72; + fStack76 = fStack92 * fStack72; + fStack72 = fStack88 * fStack72; + pfVar10 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar10,&fStack80); + proc_7F067B4C(&fStack80); + recall_joy2_hits_edit_detail_edit_flag(); + proc_7F022078((int)param_2[1],(longlong)(int)param_2[2],&fStack96,&fStack80); + lVar5 = proc_7F02727C(); + if (lVar5 != 0) { + if (param_2[2] == 0.00000000) { + iVar7 = 0; + pfVar10 = extraout_f0; + iVar8 = iVar2; + do { + iVar3 = *(int *)(iVar8 + 0x160); + if ((iVar3 != 0) && (param_2[0x12] == *(float *)(*(int *)(iVar3 + 4) + 0x14))) { + cVar1 = *(char *)(*(int *)(iVar3 + 4) + 0x80); + if (((cVar1 == '\x1a') || + (((cVar1 == 'W' || (cVar1 == 'V')) || (cVar1 == '\x1b')))) || + (((cVar1 == '!' || (cVar1 == '\x1d')) || (cVar1 == '\x1c')))) { + proc_7F04BFD0(iVar3,1); + *(ushort *)(iVar2 + 0x12) = *(ushort *)(iVar2 + 0x12) | 1; + proc_7F05DF84((int)param_1[6]); + pfVar11 = pfVar10; + get_cur_playernum(); + maybe_detonate_object + (*(object_standard **)(iVar3 + 4),extraout_f12,pfVar10, + (int)&fStack96,(int)param_1[6]); + pfVar10 = pfVar11; + } + else { + phStack112 = (hit_header *)hit_header_array[0]; + if (-1 < *(short *)((int)param_2 + 0x3a)) { + phStack112 = (hit_header *) + hit_header_array + [(uint)(byte)image_entries[*(short *)((int)param_2 + 0x3a)] + .flag1 & 0xf]; + } + uVar6 = get_random_value(); + if (phStack112->count2 == 0) { + trap(0x1c00); + } + proc_7F0A108C(param_2 + 4,param_2 + 7, + (ushort)phStack112->ptrarray2 + [uVar6 % (int)(short)phStack112->count2],1,iVar3, + SUB41(param_2[0x10],0),0); + } + } + iVar7 += 4; + iVar8 += 4; + } while (iVar7 != 8); + } + else { + if (param_2[2] == 0.00000000) { + phVar4 = (hit_header *)hit_header_array[0]; + if (-1 < *(short *)((int)param_2 + 0x3a)) { + phVar4 = (hit_header *) + hit_header_array + [(uint)(byte)image_entries[*(short *)((int)param_2 + 0x3a)].flag1 & 0xf + ]; + } + uVar6 = get_random_value(); + if (phVar4->count2 == 0) { + trap(0x1c00); + } + proc_7F0A108C(param_2 + 4,param_2 + 7, + (ushort)phVar4->ptrarray2[uVar6 % (int)(short)phVar4->count2],1, + *(int *)(iVar2 + 0x1d8),SUB41(param_2[0x10],0),0); + } + else { + pfVar10 = (float *)proc_7F06C660((int)param_2[0x12],(ushort *)param_2[3],0); + fStack136 = fStack96 + (fStack96 - pfVar10[0xc]) * 0.50000000; + fStack132 = fStack92 + (fStack92 - pfVar10[0xd]) * 0.50000000; + fStack128 = fStack88 + (fStack88 - pfVar10[0xe]) * 0.50000000; + fVar9 = getjointsize((int)param_2[0x12],(ushort *)param_2[3],extraout_a2, + extraout_a3_lo); + fStack136 = fStack136 - fVar9 * 0.50000000 * param_1[3]; + fVar9 = getjointsize((int)param_2[0x12],(ushort *)param_2[3],extraout_a2_00, + extraout_a3_lo_00); + fStack132 = fStack132 - fVar9 * 0.50000000 * param_1[4]; + fVar9 = getjointsize((int)param_2[0x12],(ushort *)param_2[3],extraout_a2_01, + extraout_a3_lo_01); + fStack128 = fStack128 - fVar9 * 0.50000000 * param_1[5]; + proc_7F059E64(pfVar10,afStack68); + proc_7F058474(afStack68,&fStack136); + proc_7F0221DC((int)param_2[0x12],(int)param_2[2],(ushort *)param_2[3],&fStack136); + } + } + } + return; +} + + + +void removed_tooklevelscale(f32 param_1) + +{ + return; +} + + + +void proc_7F022E24(undefined4 param_1) + +{ + dword_8002C904 = param_1; + return; +} + + + +void proc_7F022E30(void) + +{ + int iVar1; + + dword_8002C908 += -1; + if (dword_8002C908 < 0) { + dword_8002C908 = 0; + iVar1 = 1; + if (animation_table_ptrs1._4_4_ != 0) { + while (dword_8002C908 = iVar1, *(int *)(animation_table_ptrs1 + iVar1 * 4 + 4) != 0) { + iVar1 += 1; + } + } + } + return; +} + + + +void proc_7F022E90(void) + +{ + dword_8002C908 += 1; + if (*(int *)(animation_table_ptrs1 + dword_8002C908 * 4) == 0) { + dword_8002C908 = 0; + } + return; +} + + + +void proc_7F022EC8(void) + +{ + dword_8002C90C = (uint)(dword_8002C90C == 0); + return; +} + + + +void proc_7F022EE0(undefined4 param_1) + +{ + dword_8002C910 = param_1; + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F022EEC(void) + +{ + int iVar1; + int iVar2; + float in_f0; + float in_f12; + + iVar2 = 0; + if (0 < num_guards) { + iVar1 = 0; + do { + if ((*(int *)((int)&ptr_guard_data->MODELdata_pointer + iVar1) != 0) && + (proc_7F032DE4((int)&ptr_guard_data->chrnum + iVar1), + in_f0 < *(float *)((int)&ptr_guard_data->hearingscale + iVar1) * + in_f12 * 100.00000000)) { + proc_7F029C00((int)&ptr_guard_data->chrnum + iVar1); + } + iVar2 += 1; + iVar1 += 0x1dc; + } while (iVar2 < num_guards); + } + return; +} + + + +GUARDdata * check_if_guardnum_loaded_get_ptr_GUARDdata(short guardnum) + +{ + int iVar1; + int iVar2; + GUARDdata *pGVar3; + + iVar1 = 0; + if (0 < num_guards) { + iVar2 = 0; + pGVar3 = ptr_guard_data; + do { + iVar1 += 1; + if ((pGVar3->MODELdata_pointer != 0) && (guardnum == pGVar3->chrnum)) { + return (GUARDdata *)((int)&ptr_guard_data->chrnum + iVar2); + } + iVar2 += 0x1dc; + pGVar3 = pGVar3 + 1; + } while (iVar1 < num_guards); + } + return NULL; +} + + + +int something_with_weaponpos_of_guarddata_hand(GUARDdata *guard,int hand) + +{ + return guard->handle_positiondata[hand]; +} + + + +int is_weapon_in_guarddata_hand(GUARDdata *guard,int hand) + +{ + int iVar1; + int iVar2; + + iVar2 = guard->handle_positiondata[hand]; + if ((iVar2 != 0) && + (iVar1 = check_special_attributes((int)*(char *)(*(int *)(iVar2 + 4) + 0x80),0x200), + iVar1 == 0)) { + iVar2 = 0; + } + return iVar2; +} + + + +void proc_7F02308C(int param_1,int *param_2,undefined4 *param_3,float *param_4,float *param_5) + +{ + int iVar1; + float fVar2; + + iVar1 = *(int *)(param_1 + 4); + if (*(char *)(iVar1 + 7) == '\x04') { + *param_3 = 0; + } + else { + if (*(char *)(iVar1 + 7) == '\x05') { + *param_3 = 0; + } + else { + if ((*(uint *)(iVar1 + 0x14) & 0x10400) == 0) { + if ((*(ushort *)(iVar1 + 0x12) & 0x100) == 0) { + *param_3 = 4; + *param_2 = iVar1 + 0x11c; + fVar2 = *(float *)(iVar1 + 0x24); + *(float *)(iVar1 + 0x11c) = *(float *)(param_1 + 8) + fVar2; + *(undefined4 *)(iVar1 + 0x120) = *(undefined4 *)(param_1 + 0x10); + *(undefined4 *)(iVar1 + 0x124) = *(undefined4 *)(param_1 + 8); + *(float *)(iVar1 + 0x128) = *(float *)(param_1 + 0x10) + fVar2; + *(float *)(iVar1 + 300) = *(float *)(param_1 + 8) - fVar2; + *(undefined4 *)(iVar1 + 0x130) = *(undefined4 *)(param_1 + 0x10); + *(undefined4 *)(iVar1 + 0x134) = *(undefined4 *)(param_1 + 8); + *(float *)(iVar1 + 0x138) = *(float *)(param_1 + 0x10) - fVar2; + *param_5 = *(float *)(iVar1 + 0xac); + *param_4 = *param_5 + *(float *)(iVar1 + 0x28); + return; + } + *param_3 = 0; + } + else { + *param_3 = 0; + } + } + } + return; +} + + + +void proc_7F023160(int param_1,undefined4 *param_2,float *param_3,undefined4 *param_4) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 4); + *param_2 = *(undefined4 *)(iVar1 + 0x24); + *param_3 = *(float *)(iVar1 + 0x28) - 20.00000000; + *param_4 = 0x41a00000; + return; +} + + + +undefined4 proc_7F023188(int param_1) + +{ + return *(undefined4 *)(param_1 + 4); +} + + + +undefined8 proc_7F023194(int param_1,float *param_2,float *param_3,float *param_4) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + float fVar4; + + iVar1 = *(int *)(param_1 + 4); + if ((*(byte *)(param_1 + 1) & 2) == 0) { + uVar3 = 0; + } + else { + if (*(char *)(iVar1 + 7) == '\x04') { + uVar3 = 0; + } + else { + if (*(char *)(iVar1 + 7) == '\x05') { + uVar3 = 0; + } + else { + if ((*(uint *)(iVar1 + 0x14) & 0x800) == 0) { + iVar1 = *(int *)(iVar1 + 0x1c); + iVar2 = *(int *)(iVar1 + 0xc); + fVar4 = (*(float *)(iVar2 + 0x38) - *(float *)(iVar2 + 0x78)) * 0.25000000 + + *(float *)(iVar2 + 0x78); + param_2[2] = fVar4; + if (fVar4 < 0.00000000) { + *param_2 = (*(float *)(iVar2 + 0x30) - *(float *)(iVar2 + 0x70)) * + 0.25000000 + *(float *)(iVar2 + 0x70); + param_2[1] = (*(float *)(iVar2 + 0x34) - *(float *)(iVar2 + 0x74)) * + 0.25000000 + *(float *)(iVar2 + 0x74); + param_4[1] = 0.00000000; + *param_4 = 0.00000000; + *param_3 = 0.00000000; + param_3[1] = 0.00000000; + proc_7F03F90C(iVar1,param_3 + 1,param_3,param_4 + 1,param_4); + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + else { + uVar3 = 0; + } + } + } + } + return uVar3; +} + + + +ulonglong load_body_head_if_not_loaded(int model) + +{ + bool bVar1; + + bVar1 = (c_item_entries[model].header)->offset_obj_table == 0; + if (bVar1) { + load_object_into_memory(c_item_entries[model].header,(u8 *)c_item_entries[model].filename); + } + return (ulonglong)bVar1; +} + + + +uint maybe_load_models_for_guards + (int body,int head,object_header *bodyheader,object_header *headheader,int sunglasses + ,uint object_controller) + +{ + undefined4 *puVar1; + float fVar2; + f32 extraout_f12; + f32 extraout_f12_00; + f32 scale; + f32 extraout_f12_01; + ushort *local_c; + + fVar2 = c_item_entries[body].anonymous_2; + local_c = NULL; + cheatCheckIfOn(cheats_cheat_dk_mode); + if (bodyheader->offset_obj_table == 0) { + load_object_into_memory(bodyheader,(u8 *)c_item_entries[body].filename); + } + set_objuse_flag_compute_grp_nums_set_obj_loaded(bodyheader); + scale = extraout_f12; + if (((*(char *)((int)&c_item_entries[body].anonymous_3 + 1) == '\0') && (-1 < head)) && + (local_c = *(ushort **)(bodyheader->offset_obj_offset_block + 0x10), local_c != NULL)) { + if (headheader->offset_obj_table == 0) { + load_object_into_memory(headheader,(u8 *)c_item_entries[head].filename); + } + set_objuse_flag_compute_grp_nums_set_obj_loaded(headheader); + bodyheader->num_table_entries = + bodyheader->num_table_entries + headheader->num_table_entries; scale = extraout_f12_00; - } - curguard += 1; - guard = guard + 1; - } while (curguard != guardcount); - } - return; + } + if (object_controller == 0) { + object_controller = get_aircraft_obj_instance_controller(bodyheader); + scale = extraout_f12_01; + } + if (object_controller != 0) { + set_obj_instance_controller_scale(object_controller,scale); + proc_7F06CE84(object_controller,fVar2); + if ((headheader != NULL) && (*(char *)((int)&c_item_entries[body].anonymous_3 + 1) == '\0')) + { + bodyheader->num_table_entries = + bodyheader->num_table_entries - headheader->num_table_entries; + proc_7F06C3B4(object_controller,local_c,(ushort **)headheader); + if ((sunglasses == 0) && + ((0 < headheader->num_offset_entries && + (*(ushort **)headheader->offset_obj_offset_block != NULL)))) { + puVar1 = (undefined4 *) + extract_id_from_object_structure_microcode + (object_controller, + *(ushort **)headheader->offset_obj_offset_block); + *puVar1 = 0; + } + } + } + return object_controller; +} + + + +uint setup_chr_instance(int body,int head,object_header *body_header,object_header *head_header, + int sunglasses) + +{ + uint uVar1; + + uVar1 = maybe_load_models_for_guards(body,head,body_header,head_header,sunglasses,0); + return uVar1; +} + + + +uint retrieve_header_for_body_and_head(int body,int head,ulonglong bitflags) + +{ + object_header *body_header; + u32 uVar1; + uint sunglasses; + object_header *local_8; + + body_header = c_item_entries[body].header; + local_8 = NULL; + sunglasses = 0; + if ((bitflags & 1) == 0) { + if ((bitflags & 2) != 0) { + uVar1 = get_random_value(); + sunglasses = (uint)((uVar1 & 1) == 0); + } + } + else { + sunglasses = 1; + } + if ((-1 < head) && (*(char *)((int)&c_item_entries[body].anonymous_3 + 1) == '\0')) { + local_8 = c_item_entries[head].header; + } + sunglasses = setup_chr_instance(body,head,body_header,local_8,sunglasses); + return sunglasses; +} + + + +undefined4 get_current_random_body(void) + +{ + return list_of_bodies[current_random_body]; +} + + + +undefined4 select_psuedorandom_heads(int param_1) + +{ + undefined4 uVar1; + u32 uVar2; + int iVar3; + + if (*(char *)&c_item_entries[param_1].anonymous_3 == '\0') { + uVar1 = random_female_heads[current_random_female_head]; + } + else { + uVar2 = get_random_value(); + iVar3 = current_random_male_head + (uVar2 & 3); + if (num_male_heads == 0) { + trap(0x1c00); + } + if ((num_male_heads == -1) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + uVar1 = random_male_heads[iVar3 % num_male_heads]; + } + return uVar1; +} + + + +u32 get_random_head(int bodyID) + +{ + uint random_male; + uint random_female; + u32 head; + + if (*(char *)&c_item_entries[bodyID].anonymous_3 == '\0') { + random_female = get_random_value(); + head = random_female_heads[random_female % num_female_heads]; + if (num_female_heads == 0) { + trap(0x1c00); + } + } + else { + random_male = get_random_value(); + if (num_male_heads == 0) { + trap(0x1c00); + } + head = random_male_heads[random_male % num_male_heads]; + } + return head; +} + + + +void expand_09_characters(void) + +{ + ushort uVar1; + undefined2 *puVar2; + longlong lVar3; + uint uVar4; + undefined *puVar5; + object_standard *poVar6; + int in_a1_lo; + float fVar7; + float in_f12; + int iStack48; + uint uStack44; + undefined4 auStack24 [3]; + undefined4 uStack12; + undefined4 *puStack4; + + puStack4 = (undefined4 *) + (ptr_0xxxpresets + + ((uint)*(ushort *)(in_a1_lo + 6) * 0xc - (uint)*(ushort *)(in_a1_lo + 6)) * 4); + lVar3 = proc_7F056850(puStack4,(longlong)(int)puStack4[10],in_f12,(undefined4 *)0x41a00000, + auStack24); + if (lVar3 != 0) { + iStack48 = -1; + if (*(ushort *)(in_a1_lo + 8) == 0xffff) { + uStack44 = get_current_random_body(); + } + else { + uStack44 = (uint)*(ushort *)(in_a1_lo + 8); + } + if (*(char *)((int)&c_item_entries[uStack44].anonymous_3 + 1) == '\0') { + if (*(short *)(in_a1_lo + 0x16) < 0) { + iStack48 = select_psuedorandom_heads(uStack44); + } + else { + iStack48 = (int)*(short *)(in_a1_lo + 0x16); + } + } + uVar4 = retrieve_header_for_body_and_head + (uStack44,iStack48,(ulonglong)*(ushort *)(in_a1_lo + 0x14)); + if (uVar4 != 0) { + fVar7 = convert_angle_using_inverse((f32)puStack4[6],(f32)puStack4[8]); + puVar5 = proc_7F035398((undefined *)(uint)*(ushort *)(in_a1_lo + 10)); + poVar6 = (object_standard *) + replace_GUARDdata_with_actual_values(uVar4,auStack24,fVar7,uStack12,puVar5); + if (poVar6 != NULL) { + set_current_objposdata_plus_0x28(poVar6); + set_stateflag_0x04_for_posdata((int)poVar6); + puVar2 = *(undefined2 **)&poVar6->obj; + *puVar2 = *(undefined2 *)(in_a1_lo + 4); + fVar7 = (float)(uint)*(ushort *)(in_a1_lo + 0x10); + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + *(float *)(puVar2 + 0x76) = fVar7 / 1000.00000000; + fVar7 = (float)(uint)*(ushort *)(in_a1_lo + 0x12); + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + *(float *)(puVar2 + 0x68) = fVar7; + puVar2[0x8a] = *(undefined2 *)(in_a1_lo + 0xc); + puVar2[0x8b] = *(undefined2 *)(in_a1_lo + 0xe); + *(char *)(puVar2 + 3) = (char)iStack48; + *(undefined *)((int)puVar2 + 0xf) = (char)uStack44; + uVar1 = *(ushort *)(in_a1_lo + 0x14); + if ((uVar1 & 4) != 0) { + *(uint *)(puVar2 + 10) = *(uint *)(puVar2 + 10) | 2; + uVar1 = *(ushort *)(in_a1_lo + 0x14); + } + if ((uVar1 & 8) == 0) { + *(undefined2 **)(in_a1_lo + 0x18) = puVar2; + } + else { + *(uint *)(puVar2 + 10) = *(uint *)(puVar2 + 10) | 0x10; + *(undefined2 **)(in_a1_lo + 0x18) = puVar2; + } + } + } + } + return; +} + + + +ulonglong check_if_item_held_like_pistol(int param_1) + +{ + int iVar2; + ulonglong uVar1; + + if (param_1 == 0) { + uVar1 = 0; + } + else { + iVar2 = check_special_attributes((int)*(char *)(*(int *)(param_1 + 4) + 0x80),0x100); + uVar1 = SEXT48(iVar2); + } + return uVar1; +} + + + +void proc_7F023948(int param_1,float param_2) + +{ + int iVar2; + int iVar3; + ulonglong uVar1; + u32 uVar4; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + float extraout_f14_00; + + iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + if ((((iVar2 == 0) || (iVar3 == 0)) && ((iVar2 != 0 || (iVar3 != 0)))) && + ((uVar1 = check_if_item_held_like_pistol(iVar2), uVar1 == 0 && + (uVar1 = check_if_item_held_like_pistol(iVar3), uVar1 == 0)))) { + if ((iVar3 != 0) || (iVar2 != 0)) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x1c,iVar2 != 0, + extraout_f12,0,extraout_f14); + proc_7F06FDCC(*(int *)(param_1 + 0x1c),0,0x41800000); + proc_7F06FDE8(*(int *)(param_1 + 0x1c),extraout_f12_01); + } + } + else { + uVar4 = get_random_value(); + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8194,(byte)uVar4 & 1, + extraout_f12_00,0,extraout_f14_00); + proc_7F06FDCC(*(int *)(param_1 + 0x1c),0,0x41800000); + } + return; +} + + + +void proc_7F023A94(int param_1,float param_2) + +{ + u32 uVar1; + float in_a1_lo; + float fVar2; + float fVar3; + undefined uVar4; + + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 1; + *(undefined4 *)(param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x3c) = 2; + *(undefined4 *)(param_1 + 0x40) = 0; + uVar1 = get_random_value(); + *(int *)(param_1 + 0x44) = uVar1 % 0x78 + 0xb4; + fVar3 = *(float *)(*(int *)(param_1 + 0x1c) + 0xa4); + fVar2 = in_a1_lo; + if (fVar3 != 1.00000000) { + fVar2 = in_a1_lo / fVar3; + } + if (127.00000000 < fVar2) { + uVar4 = 0x7f; + } + else { + uVar4 = (undefined)(int)fVar2; + } + *(undefined *)(param_1 + 8) = uVar4; + proc_7F023948(param_1,in_a1_lo); + return; +} + + + +undefined4 proc_7F023B5C(void) + +{ + undefined4 in_v0_lo; + + get_007_reaction_speed(); + return in_v0_lo; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +int proc_7F023BC0(void) + +{ + char cVar1; + int iVar2; + int in_a0_lo; + int in_a1_lo; + f32 reactionspeed; + + cVar1 = *(char *)(in_a0_lo + 3); + reactionspeed = get_007_reaction_speed(); + iVar2 = (100 - ((int)((float)reactionspeed * (float)(100 - (int)cVar1)) + (int)cVar1)) * + in_a1_lo; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + return iVar2 / 100; +} + + + +undefined4 proc_7F023C54(void) + +{ + undefined4 in_v0_lo; + + get_007_reaction_speed(); + return in_v0_lo; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F023CB8(void) + +{ + u32 uVar1; + int iVar2; + int in_a0_lo; + float in_f12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f14; + float extraout_f14_00; + + if (*(char *)(in_a0_lo + 7) == '\x02') { + proc_7F02D184(in_a0_lo); + *(undefined *)(in_a0_lo + 7) = 1; + *(undefined4 *)(in_a0_lo + 0x2c) = 1; + *(undefined4 *)(in_a0_lo + 0x30) = 0; + *(undefined4 *)(in_a0_lo + 0x34) = 0; + *(undefined4 *)(in_a0_lo + 0x38) = 0; + *(undefined4 *)(in_a0_lo + 0x3c) = 2; + *(undefined4 *)(in_a0_lo + 0x40) = 0; + uVar1 = get_random_value(); + *(int *)(in_a0_lo + 0x44) = uVar1 % 0x78 + 0xb4; + *(undefined *)(in_a0_lo + 8) = 0; + iVar2 = proc_7F06F5AC(*(int *)(in_a0_lo + 0x1c)); + if (iVar2 == ptr_animation_table + 0x6c18) { + proc_7F023B5C(); + proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x6c18, + *(undefined *)(*(int *)(in_a0_lo + 0x1c) + 0x24),extraout_f12,0x42da0000, + extraout_f14); + proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_00); + } + else { + proc_7F023B5C(); + proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0xb84, + *(undefined *)(*(int *)(in_a0_lo + 0x1c) + 0x24),extraout_f12_01, + 0x42f00000,extraout_f14_00); + proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_02); + } + } + else { + proc_7F023A94(in_a0_lo,in_f12); + } + return; +} + + + +void proc_7F023E14(int param_1,float param_2) + +{ + float in_a1_lo; + + proc_7F023A94(param_1,in_a1_lo); + *(undefined4 *)(param_1 + 0x40) = 1; + return; +} + + + +void proc_7F023E48(int param_1) + +{ + proc_7F023CB8(); + *(undefined4 *)(param_1 + 0x40) = 1; + return; +} + + + +// WARNING: Instruction at (ram,0x7f023f68) overlaps instruction at (ram,0x7f023f64) +// +// WARNING: Unknown calling convention yet parameter storage is locked + +void actor_kneel(void) + +{ + int iVar2; + int iVar3; + ulonglong uVar1; + u32 uVar4; + GUARDdata *in_a0_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f14; + float extraout_f14_00; + + iVar2 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + iVar3 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + proc_7F02D184((int)in_a0_lo); + if ((((iVar2 == 0) || (iVar3 == 0)) && ((iVar2 != 0 || (iVar3 != 0)))) && + ((uVar1 = check_if_item_held_like_pistol(iVar2), uVar1 == 0 && + (uVar1 = check_if_item_held_like_pistol(iVar3), uVar1 == 0)))) { + if ((iVar3 != 0) || (iVar2 != 0)) { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0xb84,iVar2 != 0, + extraout_f12_01,0,extraout_f14_00); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_02); + } + } + else { + uVar4 = get_random_value(); + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x6c18,(byte)uVar4 & 1, + extraout_f12,0,extraout_f14); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_00); + } + in_a0_lo->actiontype = freeze; + in_a0_lo->sleep = '\0'; + return; +} + + + +void perform_animation_for_actor + (GUARDdata *guard,int param_2,int param_3,int param_4,byte param_5,int param_6) + +{ + uint uVar1; + bool bVar2; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + + proc_7F02D184((int)guard); + proc_7F06FCA8(guard->MODELdata_pointer,*(undefined4 *)(animation_table_ptrs1 + param_2 * 4), + (param_5 & 1) != 0,extraout_f12,(float)param_3,extraout_f14); + if (-1 < param_4) { + proc_7F06FDE8(guard->MODELdata_pointer,extraout_f12_00); + } + if ((param_5 & 0x20) == 0) { + uVar1 = guard->guard_bitflags; + } + else { + proc_7F06CE84(guard->MODELdata_pointer, + *(float *)(guard->MODELdata_pointer + 0xb8) * 4.00000000); + uVar1 = guard->guard_bitflags; + } + guard->guard_bitflags = uVar1 & 0xfdffffff; + bVar2 = (param_5 & 0x10) != 0; + guard->actiontype = swattingflies; + guard->bond_position = (uint)((param_5 & 2) != 0); + guard->field_30 = (uint)((param_5 & 4) != 0); + *(uint *)&guard->field_34 = (uint)((param_5 & 8) != 0); + *(uint *)&guard->field_38 = (uint)bVar2; + guard->path_target_position = (uint)((param_5 & 0x40) != 0); + if (bVar2) { + guard->sleep = (char)param_6; + } + else { + guard->sleep = '\0'; + } + return; +} + + + +void proc_7F024150(int param_1) + +{ + int iVar1; + int iVar2; + u32 uVar3; + byte bVar4; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + + iVar1 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + bVar4 = 0; + if ((iVar1 == 0) || (iVar2 != 0)) { + if (((iVar1 != 0) && (iVar2 != 0)) || ((iVar1 == 0 && (iVar2 == 0)))) { + uVar3 = get_random_value(); + bVar4 = (byte)uVar3 & 1; + } + } + else { + bVar4 = 1; + } + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 0x13; + *(undefined *)(param_1 + 8) = 0; + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x5744,bVar4,extraout_f12, + 0x42200000,extraout_f14); + proc_7F06FDE8(*(int *)(param_1 + 0x1c),extraout_f12_00); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void throw_weapon_in_guard_hand(void) + +{ + int in_a0_lo; + int iVar1; + int in_a2_lo; + int in_a3_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float fVar2; + float extraout_f14; + float extraout_f14_00; + + proc_7F02D184(in_a0_lo); + *(undefined *)(in_a0_lo + 7) = 0x14; + *(undefined *)(in_a0_lo + 8) = 0; + if (in_a3_lo == 0) { + proc_7F023B5C(); + proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x5964,in_a2_lo != 0, + extraout_f12_01,0x42a80000,extraout_f14_00); + iVar1 = *(int *)(in_a0_lo + 0x1c); + fVar2 = extraout_f12_02; + } + else { + proc_7F023B5C(); + proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x5964,in_a2_lo != 0, + extraout_f12,0,extraout_f14); + iVar1 = *(int *)(in_a0_lo + 0x1c); + fVar2 = extraout_f12_00; + } + proc_7F06FDE8(iVar1,fVar2); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F024334(void) + +{ + int iVar1; + int iVar2; + u32 uVar3; + GUARDdata *in_a0_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + byte bStack9; + + iVar1 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + iVar2 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + bStack9 = 0; + if ((iVar1 == 0) || (iVar2 != 0)) { + if (((iVar1 != 0) && (iVar2 != 0)) || ((iVar1 == 0 && (iVar2 == 0)))) { + uVar3 = get_random_value(); + bStack9 = (byte)uVar3 & 1; + } + } + else { + bStack9 = 1; + } + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x5d10,bStack9,extraout_f12, + 0x41200000,extraout_f14); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_00); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void actor_shuffle_feet(void) + +{ + longlong lVar1; + int in_a0_lo; + float in_f0; + + proc_7F032C4C(in_a0_lo); + if ((in_f0 < flt_80051DA0) || (flt_80051DA4 < in_f0)) { + proc_7F024334(); + proc_7F02D184(in_a0_lo); + *(undefined *)(in_a0_lo + 7) = 0x12; + *(undefined *)(in_a0_lo + 8) = 0; + } + else { + lVar1 = proc_7F029C5C(); + if (lVar1 == 0) { + proc_7F023CB8(); + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F0244AC(void) + +{ + u32 uVar1; + int in_a0_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + + proc_7F02D184(in_a0_lo); + *(undefined *)(in_a0_lo + 7) = 0x12; + *(undefined *)(in_a0_lo + 8) = 0; + uVar1 = get_random_value(); + proc_7F023B5C(); + proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x4384,(byte)uVar1 & 1, + extraout_f12,0,extraout_f14); + proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_00); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F024548(void) + +{ + u32 uVar1; + u32 uVar2; + int in_a0_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f14; + + uVar1 = get_random_value(); + proc_7F02D184(in_a0_lo); + *(undefined *)(in_a0_lo + 7) = 0x12; + *(undefined *)(in_a0_lo + 8) = 0; + uVar2 = get_random_value(); + proc_7F06FCA8(*(int *)(in_a0_lo + 0x1c),ptr_animation_table + 0x5ef0,(byte)uVar2 & 1, + extraout_f12,0x41880000,extraout_f14); + if (uVar1 % 3 == 0) { + proc_7F023B5C(); + proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_00); + } + else { + if (uVar1 % 3 == 1) { + proc_7F023B5C(); + proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_01); + } + else { + proc_7F023B5C(); + proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12_02); + } + } + return; +} + + + +void proc_7F024648(int param_1) + +{ + int iVar1; + int iVar2; + u32 uVar3; + ushort uVar4; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float extraout_f14_00; + + if (*(char *)(param_1 + 7) != '\x10') { + iVar1 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 0x10; + if ((iVar2 == 0) && (iVar1 == 0)) { + uVar3 = get_random_value(); + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4384,(byte)uVar3 & 1, + extraout_f12_00,0,extraout_f14_00); + proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x41f00000,0x41800000); + *(undefined *)(param_1 + 8) = 0x10; + } + else { + uVar3 = get_random_value(); + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4504,(byte)uVar3 & 1, + extraout_f12,0,extraout_f14); + proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x42200000,0x41800000); + *(undefined *)(param_1 + 8) = 0x10; + if (iVar1 != 0) { + proc_7F04BFD0(iVar1,2); + } + if (iVar2 == 0) { + uVar4 = *(ushort *)(param_1 + 0x12); + } + else { + proc_7F04BFD0(iVar2,2); + uVar4 = *(ushort *)(param_1 + 0x12); + } + *(ushort *)(param_1 + 0x12) = uVar4 | 1; + } + proc_7F021B20(param_1); + } + return; +} + + + +void proc_7F0247B8(int param_1) + +{ + if (*(char *)(param_1 + 7) != '\x05') { + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 5; + *(undefined4 *)(param_1 + 0x2c) = 0xffffffff; + *(undefined *)(param_1 + 8) = 0; + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F024800(void) + +{ + int iVar2; + int iVar3; + u32 uVar4; + ulonglong uVar1; + uint uVar5; + GUARDdata *in_a0_lo; + int in_a1_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + uint uStack12; + + iVar2 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + iVar3 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + uStack12 = 0; + if ((iVar2 == 0) || (iVar3 == 0)) { + uVar1 = check_if_item_held_like_pistol(iVar2); + uVar5 = 0; + if (uVar1 == 0) { + uVar1 = check_if_item_held_like_pistol(iVar3); + uVar5 = 0; + if ((uVar1 == 0) && ((iVar2 != 0 || (iVar3 != 0)))) { + uStack12 = (uint)(iVar2 != 0); + uVar4 = get_random_value(); + uVar5 = uVar4 & 1; + } + } + } + else { + uVar4 = get_random_value(); + uStack12 = uVar4 & 1; + uVar4 = get_random_value(); + uVar5 = uVar4 & 1; + } + proc_7F02D184((int)in_a0_lo); + in_a0_lo->actiontype = sidestep; + in_a0_lo->sleep = '\0'; + if (uVar5 == 0) { + if (in_a1_lo == 0) { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x3d9c,1,extraout_f12_01 + ,0x40a00000,extraout_f14_00); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_02); + } + else { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x3d9c,0,extraout_f12, + 0x40a00000,extraout_f14); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_00); + } + } + else { + if (((in_a1_lo == 0) || (uStack12 != 0)) && ((in_a1_lo != 0 || (uStack12 == 0)))) { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x54a0,(char)uStack12, + extraout_f12_05,0x40a00000,extraout_f14_02); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_06); + } + else { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x5554,(char)uStack12, + extraout_f12_03,0x40a00000,extraout_f14_01); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_04); + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F024A84(void) + +{ + int iVar2; + int iVar3; + ulonglong uVar1; + u32 uVar4; + GUARDdata *in_a0_lo; + int in_a1_lo; + undefined uVar5; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + uint uStack12; + + iVar2 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + iVar3 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + uStack12 = 0; + if ((iVar2 == 0) || (iVar3 != 0)) { + if (((iVar2 == 0) || (iVar3 == 0)) && ((iVar2 != 0 || (iVar3 != 0)))) { + uVar1 = check_if_item_held_like_pistol(iVar2); + if ((uVar1 == 0) && (uVar1 = check_if_item_held_like_pistol(iVar3), uVar1 == 0)) + goto LAB_7f024b24; + } + uVar4 = get_random_value(); + uStack12 = uVar4 & 1; + } + else { + uStack12 = 1; + } +LAB_7f024b24: + proc_7F02D184((int)in_a0_lo); + in_a0_lo->actiontype = sidehop; + in_a0_lo->sleep = '\0'; + uVar5 = (undefined)uStack12; + if (((in_a1_lo == 0) || (uStack12 != 0)) && ((in_a1_lo != 0 || (uStack12 == 0)))) { + uVar4 = get_random_value(); + if ((uVar4 & 1) == 0) { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x47bc,uVar5, + extraout_f12_05,0x42b60000,extraout_f14_02); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_06); + } + else { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x4a40,uVar5, + extraout_f12_03,0x41a00000,extraout_f14_01); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_04); + } + } + else { + uVar4 = get_random_value(); + if ((uVar4 & 1) == 0) { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x4a40,uVar5, + extraout_f12_01,0x43020000,extraout_f14_00); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_02); + } + else { + proc_7F023B5C(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x47bc,uVar5, + extraout_f12,0x40a00000,extraout_f14); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_00); + } + } + return; +} + + + +void proc_7F024CF8(int param_1,float *param_2) + +{ + bool bVar1; + int iVar3; + int iVar4; + u32 uVar5; + ulonglong uVar2; + bool bVar6; + float fVar7; + float fVar8; + float extraout_f12; + float extraout_f14; + + fVar7 = *(float *)(*(int *)(param_1 + 0x18) + 8) - *param_2; + fVar8 = *(float *)(*(int *)(param_1 + 0x18) + 0x10) - param_2[2]; + fVar7 = sqrtf(fVar7 * fVar7 + fVar8 * fVar8); + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + bVar1 = true; + if (((iVar3 == 0) || (iVar4 == 0)) && ((iVar3 != 0 || (iVar4 != 0)))) { + uVar2 = check_if_item_held_like_pistol(iVar3); + if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(iVar4), uVar2 == 0)) { + bVar6 = iVar3 != 0; + } + else { + bVar1 = false; + bVar6 = iVar3 != 0; + } + } + else { + bVar1 = false; + uVar5 = get_random_value(); + bVar6 = (bool)((byte)uVar5 & 1); + } + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 0xd; + *(float *)(param_1 + 0x2c) = *param_2; + *(float *)(param_1 + 0x30) = param_2[1]; + fVar8 = param_2[2]; + *(undefined *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x38) = 0x41f00000; + *(float *)(param_1 + 0x34) = fVar8; + if (bVar1) { + *(int *)(param_1 + 0x3c) = (int)(fVar7 / (dword_80030988 * 0.50000000)); + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x40d4,bVar6,extraout_f12,0, + extraout_f14); + } + else { + *(int *)(param_1 + 0x3c) = (int)(fVar7 / (dword_80030994 * 0.50000000)); + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x777c,bVar6,extraout_f12,0, + extraout_f14); + } + return; +} + + + +void proc_7F024F00(int param_1) + +{ + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 0x16; + *(undefined *)(param_1 + 8) = 0; + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x2f94,0,extraout_f12,0x41200000, + extraout_f14); + proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x41200000,0x41800000); + proc_7F06FDE8(*(int *)(param_1 + 0x1c),extraout_f12_00); + return; +} + + + +void proc_7F024F8C(int param_1) + +{ + int iVar1; + int iVar2; + float in_f12; + + iVar1 = *(int *)(param_1 + 0x1c); + iVar2 = *(int *)(param_1 + 0x2c); + if ((*(uint *)(param_1 + 0x4c) & 0x20) == 0) { + if (*(char *)(param_1 + 0x36) == '\0') { + if (0.00000000 <= *(float *)(iVar2 + 0x20)) { + proc_7F06FDE8(iVar1,in_f12); + } + else { + if (0.00000000 <= *(float *)(iVar2 + 0x14)) { + proc_7F06FDE8(iVar1,in_f12); + } + else { + proc_7F06FDE8(iVar1,in_f12); + } + } + } + else { + if (0.00000000 <= *(float *)(iVar2 + 0x20)) { + proc_7F06FDE8(iVar1,in_f12); + } + else { + proc_7F06FDE8(iVar1,in_f12); + } + } + } + else { + if ((*(float *)(iVar2 + 0x20) < 0.00000000) || + (*(float *)(iVar2 + 0x18) <= *(float *)(iVar2 + 0x20))) { + proc_7F06FDE8(iVar1,in_f12); + } + else { + proc_7F06FDE8(iVar1,in_f12); + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +float proc_7F0250BC(void) + +{ + short *in_a0_lo; + ulonglong in_a1; + undefined4 in_a2_hi; + int in_a2_lo; + undefined4 in_a3_lo; + float in_f0; + float fVar1; + undefined4 auStack8 [2]; + + if ((in_a1 & 2) == 0) { + if ((in_a1 & 0x10) == 0) { + proc_7F032C78(in_a0_lo,in_a1,CONCAT44(in_a2_hi,in_a2_lo),auStack8); + in_f0 = (float)proc_7F032BD8(); + } + else { + fVar1 = (float)in_a2_lo * flt_80051DAC; + getsubroty(*(int *)(in_a0_lo + 0xe),(uint)in_a1,in_a2_lo,in_a3_lo); + in_f0 = fVar1 / 65536.00000000 - in_f0; + if (in_f0 < 0.00000000) { + in_f0 = in_f0 + flt_80051DB0; + } + } + } + else { + in_f0 = 0.00000000; + } + return in_f0; +} + + + +void proc_7F02516C(int param_1,int param_2,int param_3,int *param_4,uint param_5,undefined4 param_6, + undefined4 param_7) + +{ + uint uVar1; + u32 uVar3; + longlong lVar2; + char cVar4; + int iVar5; + int hand; + int iVar6; + int *piVar7; + undefined uVar8; + undefined uVar9; + int iVar10; + float fVar11; + float extraout_f12; + float extraout_f14; + int aiStack56 [10]; + int *piStack16; + int iStack4; + + iStack4 = *(int *)(param_1 + 0x1c); + aiStack56[3] = dword_800309AC; + aiStack56[2] = dword_800309A8; + aiStack56[1] = dword_800309B4; + aiStack56[0] = dword_800309B0; + *(undefined *)(param_1 + 7) = 8; + uVar8 = 1; + uVar9 = 0; + fVar11 = (float)proc_7F0250BC(); + if (param_3 == 0) { + fVar11 = (fVar11 * 32.00000000) / flt_80051DB8; + } + else { + fVar11 = ((flt_80051DB4 - fVar11) * 32.00000000) / flt_80051DB4; + } + iVar10 = (int)(fVar11 + 0.50000000); + if (0x1f < iVar10) { + iVar10 = 0; + } + uVar3 = get_random_value(); + piVar7 = *(int **)(param_2 + iVar10 * 4); + uVar1 = piVar7[1]; + iVar10 = *piVar7; + if (uVar1 == 0) { + trap(0x1c00); + } + hand = 0; + iVar6 = 0; + piStack16 = (int *)(iVar10 + (uVar3 % uVar1) * 0x48); + piVar7 = param_4; + if (((*(uint *)(param_1 + 0x14) & 0x20) != 0) && + (iVar5 = uVar3 % uVar1 + 1, ptr_animation_table + 0x318 == *piStack16)) { + if (uVar1 == 0) { + trap(0x1c00); + } + if ((uVar1 == 0xffffffff) && (iVar5 == -0x80000000)) { + trap(0x1800); + } + piStack16 = (int *)((iVar5 % uVar1) * 0x48 + iVar10); + } + do { + if (*piVar7 != 0) { + iVar10 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,hand); + iVar10 = *(int *)(iVar10 + 4); + lVar2 = proc_7F05DFCC((int)*(char *)(iVar10 + 0x80)); + if (lVar2 < 0) { + *(undefined4 *)((int)aiStack56 + iVar6 + 8) = 1; + cVar4 = *(char *)(iVar10 + 0x80); + if (cVar4 == '\x16') goto LAB_7f025398; + } + else { + uVar9 = 1; + cVar4 = *(char *)(iVar10 + 0x80); +LAB_7f025398: + uVar8 = 0; + } + if ((cVar4 == '\x19') || (cVar4 == '\x18')) { + *(undefined4 *)((int)aiStack56 + iVar6) = 1; + } + } + hand += 1; + iVar6 += 4; + piVar7 = piVar7 + 1; + if (hand == 2) { + *(undefined *)(param_1 + 0x30) = 1; + *(undefined *)(param_1 + 0x31) = 0; + *(int **)(param_1 + 0x2c) = piStack16; + uVar3 = get_random_value(); + *(byte *)(param_1 + 0x32) = (byte)uVar3 & 1; + *(undefined *)(param_1 + 0x39) = (char)param_4[1]; + *(undefined *)(param_1 + 0x38) = (char)*param_4; + *(undefined *)(param_1 + 0x3b) = (char)aiStack56[3]; + *(undefined *)(param_1 + 0x3a) = (char)aiStack56[2]; + *(undefined *)(param_1 + 0x3d) = (char)aiStack56[1]; + *(undefined *)(param_1 + 0x36) = uVar8; + *(undefined *)(param_1 + 0x37) = uVar9; + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined *)(param_1 + 0x33) = 0; + *(undefined *)(param_1 + 0x3c) = (char)aiStack56[0]; + if ((aiStack56[1] == 0) && (aiStack56[0] == 0)) { + if ((param_5 & 0x80) == 0) { + uVar3 = get_random_value(); + *(char *)(param_1 + 0x34) = ((byte)uVar3 & 3) + 2; + } + else { + *(undefined *)(param_1 + 0x34) = 1; + } + if ((*param_4 != 0) && (param_4[1] != 0)) { + uVar3 = get_random_value(); + *(char *)(param_1 + 0x34) = + *(char *)(param_1 + 0x34) + ((byte)uVar3 & 3) + '\x02'; + } + } + else { + if ((aiStack56[1] == 0) || (aiStack56[0] == 0)) { + *(undefined *)(param_1 + 0x34) = 1; + } + else { + *(undefined *)(param_1 + 0x34) = 2; + } + } + *(uint *)(param_1 + 0x4c) = param_5; + *(undefined4 *)(param_1 + 0x50) = param_6; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0x54) = param_7; + proc_7F023B5C(); + proc_7F06FCA8(iStack4,*piStack16,(char)param_3,extraout_f12,piStack16[4],extraout_f14); + proc_7F024F8C(param_1); + return; + } + } while( true ); +} + + + +void proc_7F025560(int param_1,uint param_2,undefined4 param_3) + +{ + bool bVar1; + int iVar3; + int iVar4; + u32 uVar5; + ulonglong uVar2; + undefined **ppuVar6; + uint uVar7; + uint uStack24; + uint uStack20; + uint uStack12; + int iStack8; + int iStack4; + + iStack4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + uStack24 = dword_800309B8; + uStack20 = dword_800309BC; + if ((iStack4 == 0) || (iVar3 == 0)) { + iStack8 = iVar3; + uVar2 = check_if_item_held_like_pistol(iStack4); + if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(iStack8), uVar2 == 0)) { + ppuVar6 = ptr_rifle_firing_animation_groups; + bVar1 = iStack4 != 0; + uVar7 = (uint)bVar1; + uStack20 = (uint)bVar1; + uStack24 = (uint)!bVar1; + } + else { + ppuVar6 = ptr_pistol_firing_animation_groups; + bVar1 = iStack4 != 0; + uVar7 = (uint)bVar1; + uStack20 = (uint)bVar1; + uStack24 = (uint)!bVar1; + } + } + else { + iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1); + iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + bVar1 = iVar4 == 0; + ppuVar6 = ptr_pistol_firing_animation_groups; + if ((iVar3 == 0) || (iVar4 == 0)) { + uStack20 = (uint)bVar1; + uStack24 = (uint)!bVar1; + uVar7 = (uint)bVar1; + } + else { + uVar5 = get_random_value(); + uStack12 = uVar5 & 1; + uVar5 = get_random_value(); + uVar7 = uStack12; + if (uVar5 % 3 == 0) { + ppuVar6 = ptr_pistol_firing_animation_groups; + uStack20 = uStack12; + uStack24 = (uint)(uStack12 == 0); + } + else { + ppuVar6 = ptr_doubles_firing_animation_groups; + uStack20 = 1; + uStack24 = 1; + } + } + } + proc_7F02516C(param_1,(int)ppuVar6,uVar7,(int *)&uStack24,param_2,param_3,1); + return; +} + + + +void proc_7F0256F0(int param_1,uint param_2,undefined4 param_3) + +{ + bool bVar1; + int iVar3; + int iVar4; + u32 uVar5; + ulonglong uVar2; + undefined **ppuVar6; + uint uVar7; + uint uStack24; + uint uStack20; + uint uStack12; + int iStack8; + int iStack4; + + iStack4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + uStack24 = dword_800309C0; + uStack20 = dword_800309C4; + if ((iStack4 == 0) || (iVar3 == 0)) { + iStack8 = iVar3; + uVar2 = check_if_item_held_like_pistol(iStack4); + if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(iStack8), uVar2 == 0)) { + ppuVar6 = ptr_crouched_rifle_firing_animation_groups; + bVar1 = iStack4 != 0; + uVar7 = (uint)bVar1; + uStack20 = (uint)bVar1; + uStack24 = (uint)!bVar1; + } + else { + ppuVar6 = ptr_crouched_pistol_firing_animation_groups; + bVar1 = iStack4 != 0; + uVar7 = (uint)bVar1; + uStack20 = (uint)bVar1; + uStack24 = (uint)!bVar1; + } + } + else { + iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1); + iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + bVar1 = iVar4 == 0; + ppuVar6 = ptr_crouched_pistol_firing_animation_groups; + if ((iVar3 == 0) || (iVar4 == 0)) { + uStack20 = (uint)bVar1; + uStack24 = (uint)!bVar1; + uVar7 = (uint)bVar1; + } + else { + uVar5 = get_random_value(); + uStack12 = uVar5 & 1; + uVar5 = get_random_value(); + uVar7 = uStack12; + if (uVar5 % 3 == 0) { + ppuVar6 = ptr_crouched_pistol_firing_animation_groups; + uStack20 = uStack12; + uStack24 = (uint)(uStack12 == 0); + } + else { + ppuVar6 = ptr_crouched_doubles_firing_animation_groups; + uStack20 = 1; + uStack24 = 1; + } + } + } + proc_7F02516C(param_1,(int)ppuVar6,uVar7,(int *)&uStack24,param_2,param_3,0); + return; +} + + + +void proc_7F02587C(int param_1,longlong param_2) + +{ + char cVar1; + f32 fVar2; + int hand; + int iVar5; + ulonglong uVar3; + int iVar6; + longlong lVar4; + u32 uVar7; + uint uVar8; + int *piVar9; + float extraout_f12; + float extraout_f14; + int aiStack40 [9]; + weapon_firing_animation_table *pwStack4; + + hand = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar5 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + aiStack40[4] = dword_800309C8; + aiStack40[5] = dword_800309CC; + aiStack40[3] = dword_800309D4; + aiStack40[2] = dword_800309D0; + aiStack40[1] = dword_800309DC; + aiStack40[0] = dword_800309D8; + if ((hand == 0) || (iVar5 == 0)) { + uVar3 = check_if_item_held_like_pistol(hand); + if ((uVar3 == 0) && (uVar3 = check_if_item_held_like_pistol(iVar5), uVar3 == 0)) { + aiStack40[6] = (uint)(hand != 0); + if (param_2 == 0) { + pwStack4 = &stru_80030660; + } + else { + pwStack4 = &stru_800306A8; + } + if (hand != 0) { + aiStack40[5] = 1; + } + else { + aiStack40[4] = 1; + } + } + else { + aiStack40[6] = (uint)(hand != 0); + if (param_2 == 0) { + pwStack4 = &stru_800306F0; + } + else { + pwStack4 = &stru_80030738; + } + if (hand != 0) { + aiStack40[5] = 1; + } + else { + aiStack40[4] = 1; + } + } + } + else { + hand = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1); + iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + uVar8 = 0; + if ((hand == 0) || (iVar5 == 0)) { + aiStack40[6] = (uint)(iVar5 == 0); + } + else { + uVar7 = get_random_value(); + aiStack40[6] = uVar7 & 1; + uVar7 = get_random_value(); + uVar8 = uVar7 % 3; + } + if (uVar8 == 0) { + if (param_2 == 0) { + pwStack4 = &stru_800306F0; + } + else { + pwStack4 = &stru_80030738; + } + if (aiStack40[6] == 0) { + aiStack40[4] = 1; + } + else { + aiStack40[5] = 1; + } + } + else { + if (uVar8 == 1) { + if (param_2 == 0) { + pwStack4 = &stru_80030780; + } + else { + pwStack4 = &stru_800307C8; + } + aiStack40[5] = 1; + aiStack40[4] = 1; + } + else { + if (param_2 == 0) { + pwStack4 = &stru_80030810; + } + else { + pwStack4 = &stru_80030858; + } + aiStack40[5] = 1; + aiStack40[4] = 1; + } + } + } + hand = 0; + iVar5 = 0; + piVar9 = aiStack40 + 4; + do { + if (*piVar9 != 0) { + iVar6 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,hand); + iVar6 = *(int *)(iVar6 + 4); + lVar4 = proc_7F05DFCC((int)*(char *)(iVar6 + 0x80)); + if (lVar4 < 0) { + *(undefined4 *)((int)aiStack40 + iVar5 + 8) = 1; + } + cVar1 = *(char *)(iVar6 + 0x80); + if ((cVar1 == '\x19') || (cVar1 == '\x18')) { + *(undefined4 *)((int)aiStack40 + iVar5) = 1; + } + } + hand += 1; + iVar5 += 4; + piVar9 = piVar9 + 1; + } while (hand != 2); + *(undefined *)(param_1 + 7) = 9; + *(undefined4 *)(param_1 + 0x30) = 0; + uVar7 = get_random_value(); + fVar2 = ai_reaction_speed; + *(undefined4 *)(param_1 + 0x38) = 0; + *(int *)(param_1 + 0x34) = uVar7 % (int)((float)fVar2 * 400.00000000) + 0x78; + if ((int)((float)fVar2 * 400.00000000) == 0) { + trap(0x1c00); + } + *(undefined4 *)(param_1 + 0x40) = 0; + *(weapon_firing_animation_table **)(param_1 + 0x3c) = pwStack4; + uVar7 = get_random_value(); + *(uint *)(param_1 + 0x44) = uVar7 & 1; + *(undefined *)(param_1 + 0x49) = (char)aiStack40[5]; + *(undefined *)(param_1 + 0x48) = (char)aiStack40[4]; + *(undefined *)(param_1 + 0x4b) = (char)aiStack40[3]; + *(undefined *)(param_1 + 0x4a) = (char)aiStack40[2]; + *(undefined *)(param_1 + 0x4d) = (char)aiStack40[1]; + *(undefined *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0x54) = 0; + *(undefined *)(param_1 + 0x4c) = (char)aiStack40[0]; + proc_7F06FCA8(*(int *)(param_1 + 0x1c),pwStack4->anonymous_0,(char)aiStack40[6],extraout_f12, + pwStack4->anonymous_4,extraout_f14); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F025C40(void) + +{ + bool bVar1; + int iVar4; + int hand; + ulonglong uVar2; + u32 uVar5; + int iVar6; + longlong lVar3; + char cVar7; + GUARDdata *in_a0_lo; + int in_a1_lo; + uint *puVar8; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + int iStack68; + int iStack64; + undefined4 uStack60; + undefined4 uStack56; + undefined4 uStack52; + uint uStack44; + uint uStack40; + int iStack32; + int iStack24; + uint uStack20; + weapon_firing_animation_table *pwStack8; + int iStack4; + + iStack4 = in_a0_lo->MODELdata_pointer; + iVar4 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + hand = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + iStack24 = 0; + uStack44 = dword_800309E0; + uStack40 = dword_800309E4; + uStack52 = 0; + uStack60 = dword_800309E8; + uStack56 = dword_800309EC; + bVar1 = true; + iStack64 = dword_800309F4; + iStack68 = dword_800309F0; + if ((iVar4 == 0) || (hand == 0)) { + uVar2 = check_if_item_held_like_pistol(iVar4); + if ((uVar2 == 0) && (uVar2 = check_if_item_held_like_pistol(hand), uVar2 == 0)) { + uStack40 = (uint)(iVar4 != 0); + uStack44 = (uint)(iVar4 == 0); + uStack20 = uStack40; + } + else { + uStack40 = (uint)(iVar4 != 0); + iStack24 = 1; + uStack44 = (uint)(iVar4 == 0); + uStack20 = uStack40; + } + } + else { + iVar4 = is_weapon_in_guarddata_hand(in_a0_lo,1); + hand = is_weapon_in_guarddata_hand(in_a0_lo,0); + if ((iVar4 == 0) || (hand == 0)) { + uStack40 = (uint)(hand == 0); + iStack24 = 1; + uStack44 = (uint)(hand != 0); + uStack20 = uStack40; + } + else { + uVar5 = get_random_value(); + uStack20 = uVar5 & 1; + iStack24 = 1; + uVar5 = get_random_value(); + if (uVar5 % 3 == 0) { + uStack44 = (uint)(uStack20 == 0); + uStack40 = uStack20; + } + else { + uStack40 = 1; + uStack44 = 1; + } + } + } + if (((in_a1_lo == 0) || (uStack20 != 0)) && ((in_a1_lo != 0 || (uStack20 == 0)))) { + uVar5 = get_random_value(); + if ((uVar5 & 1) == 0) { + pwStack8 = &stru_80030150; + } + else { + pwStack8 = &stru_800300C0; + } + } + else { + uVar5 = get_random_value(); + if ((uVar5 & 1) == 0) { + pwStack8 = &stru_80030108; + } + else { + pwStack8 = &stru_80030078; + } + } + hand = 0; + iVar4 = 0; + puVar8 = &uStack44; + if (iStack24 != 0) { + pwStack8 = pwStack8 + 4; + } + do { + if (*puVar8 != 0) { + iVar6 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,hand); + iStack32 = *(int *)(iVar6 + 4); + lVar3 = proc_7F05DFCC((int)*(char *)(iStack32 + 0x80)); + iVar6 = iStack32; + if (lVar3 < 0) { + *(undefined4 *)((int)&iStack68 + iVar4 + 8) = 1; + cVar7 = *(char *)(iVar6 + 0x80); + if (cVar7 == '\x16') goto LAB_7f025eec; + } + else { + uStack52 = 1; + cVar7 = *(char *)(iStack32 + 0x80); +LAB_7f025eec: + bVar1 = false; + } + if ((cVar7 == '\x19') || (cVar7 == '\x18')) { + *(undefined4 *)((int)&iStack68 + iVar4) = 1; + } + } + hand += 1; + iVar4 += 4; + puVar8 = puVar8 + 1; + if (hand == 2) { + in_a0_lo->actiontype = run_roll_fire; + *(undefined *)((int)&in_a0_lo->field_30 + 1) = 0; + *(weapon_firing_animation_table **)&in_a0_lo->bond_position = pwStack8; + uVar5 = get_random_value(); + *(byte *)((int)&in_a0_lo->field_30 + 2) = (byte)uVar5 & 1; + in_a0_lo->field_39 = (char)uStack40; + in_a0_lo->field_38 = (char)uStack44; + in_a0_lo->field_3B = (char)uStack56; + in_a0_lo->field_3A = (char)uStack60; + *(undefined *)((int)&in_a0_lo->path_target_position + 1) = (char)iStack64; + *(bool *)&in_a0_lo->field_36 = bVar1; + *(char *)&in_a0_lo->path_target_position = (char)iStack68; + in_a0_lo->field_37 = (char)uStack52; + in_a0_lo->field_40 = 0; + *(undefined *)((int)&in_a0_lo->field_30 + 3) = 0; + *(undefined *)&in_a0_lo->field_30 = 1; + *(undefined *)((int)&in_a0_lo->field_34 + 1) = (char)iStack24; + if ((iStack64 == 0) && (iStack68 == 0)) { + uVar5 = get_random_value(); + *(byte *)&in_a0_lo->field_34 = ((byte)uVar5 & 3) + 2; + if ((uStack44 != 0) && (uStack40 != 0)) { + uVar5 = get_random_value(); + *(byte *)&in_a0_lo->field_34 = + *(char *)&in_a0_lo->field_34 + ((byte)uVar5 & 3) + '\x02'; + } + } + else { + if ((iStack64 == 0) || (iStack68 == 0)) { + *(undefined *)&in_a0_lo->field_34 = 1; + } + else { + *(undefined *)&in_a0_lo->field_34 = 2; + } + } + in_a0_lo->field_4C = 1; + in_a0_lo->field_50 = 0; + in_a0_lo->field_54 = 1; + *(undefined4 *)&in_a0_lo->type_of_motion = 0; + in_a0_lo->field_44 = 0; + in_a0_lo->field_48 = 0; + in_a0_lo->sleep = '\0'; + proc_7F023B5C(); + proc_7F06FCA8(iStack4,pwStack8->anonymous_0,(char)uStack20,extraout_f12, + pwStack8->anonymous_4,extraout_f14); + if (iStack24 == 0) { + if (bVar1) { + if (0.00000000 <= (float)pwStack8->anonymous_9) { + proc_7F06FDE8(iStack4,extraout_f12_00); + } + else { + proc_7F06FDE8(iStack4,extraout_f12_00); + } + } + else { + if (0.00000000 <= (float)pwStack8->anonymous_8) { + proc_7F06FDE8(iStack4,extraout_f12_00); + } + else { + if (0.00000000 <= (float)pwStack8->anonymous_5) { + proc_7F06FDE8(iStack4,extraout_f12_00); + } + } + } + } + return; + } + } while( true ); +} + + + +void proc_7F026130(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + + fVar3 = *param_1; + fVar2 = *param_4; + fVar4 = param_2[2] - param_1[2]; + fVar1 = param_4[2] * (*param_2 - fVar3) - fVar4 * fVar2; + if (fVar1 == 0.00000000) { + if (fVar2 == 0.00000000) { + if (param_4[2] == 0.00000000) { + *param_5 = *param_3; + param_5[1] = param_3[1]; + param_5[2] = param_3[2]; + return; + } + *param_5 = fVar3; + } + else { + *param_5 = fVar3; + } + param_5[1] = param_1[1]; + param_5[2] = param_1[2]; + } + else { + fVar1 = (fVar4 * (*param_3 - fVar3) + (param_1[2] - param_3[2]) * (*param_2 - fVar3)) / + fVar1; + *param_5 = fVar2 * fVar1 + *param_3; + param_5[1] = param_4[1] * fVar1 + param_3[1]; + param_5[2] = param_4[2] * fVar1 + param_3[2]; + } + return; +} + + + +void proc_7F02624C(float *param_1,float *param_2,float *param_3) + +{ + float afStack24 [3]; + float afStack12 [3]; + + proc_7F0B28B0(afStack12,afStack24); + proc_7F026130(afStack12,afStack24,param_1,param_2,param_3); + return; +} + + + +void proc_7F026298(float *param_1,float *param_2,float *param_3) + +{ + float fVar1; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + proc_7F0B28B0(&fStack12,&fStack24); + fVar1 = (*param_2 * (fStack4 - param_1[2]) - param_2[2] * (fStack12 - *param_1)) / + (param_2[2] * (fStack24 - fStack12) - (fStack16 - fStack4) * *param_2); + *param_3 = (fStack24 - fStack12) * fVar1 + fStack12; + param_3[1] = (fStack20 - fStack8) * fVar1 + fStack8; + param_3[2] = (fStack16 - fStack4) * fVar1 + fStack4; + return; +} + + + +float proc_7F026364(int param_1,float param_2,float param_3,float param_4,float param_5, + undefined4 param_6) + +{ + int iVar1; + f32 extraout_f12; + float afStack44 [2]; + float fStack36; + float fStack32; + GUARDdata *pGStack28; + u32 uStack24; + float fStack20; + float fStack16; + float fStack12; + undefined4 uStack8; + float fStack4; + + uStack24 = *(u32 *)(param_1 + 0x14); + pGStack28 = *(GUARDdata **)(param_1 + 4); + fStack12 = sinf(param_4); + uStack8 = 0; + fStack4 = cosf(param_4); + fStack16 = fStack12 * param_5 + *(float *)(param_1 + 8); + fStack20 = fStack4 * param_5 + *(float *)(param_1 + 0x10); + set_or_unset_GUARDdata_flag(pGStack28,0); + proc_7F0B1CC4(); + iVar1 = proc_7F0B0E24(&uStack24,extraout_f12,(f32)fStack20,*(f32 *)(param_1 + 8)); + if (iVar1 == 0) { + proc_7F02624C((float *)(param_1 + 8),&fStack12,afStack44); + afStack44[0] = afStack44[0] - *(float *)(param_1 + 8); + fStack36 = fStack36 - *(float *)(param_1 + 0x10); + param_5 = sqrtf(afStack44[0] * afStack44[0] + fStack36 * fStack36); + } + fStack32 = param_5; + set_or_unset_GUARDdata_flag(pGStack28,1); + return fStack32; +} + + + +undefined proc_7F0264B0(int param_1,float param_2,float param_3) + +{ + undefined in_v0_lo; + undefined4 in_a1_lo; + undefined4 in_a2_lo; + float extraout_f12; + float extraout_f14; + undefined4 uStack12; + undefined4 uStack8; + float fStack4; + + proc_7F023160(param_1,&uStack12,&fStack4,&uStack8); + proc_7F026364(param_1,extraout_f12,extraout_f14,in_a1_lo,in_a2_lo,0x1f); + return in_v0_lo; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F026508(void) + +{ + char *pcVar1; + bool bVar2; + bool bVar3; + s32 sVar4; + animation_something *paVar5; + int iVar6; + u32 uVar7; + int iVar8; + GUARDdata *in_a0_lo; + int iVar9; + float *in_a1_lo; + uint extraout_a1_lo; + float in_a2_lo; + undefined4 extraout_a2_lo; + int in_a3_lo; + undefined4 extraout_a3_lo; + struck_animation_table *psVar10; + uint uVar11; + int objinst; + float in_f0; + float fVar12; + float fVar13; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f12_09; + float extraout_f12_10; + float extraout_f12_11; + float extraout_f12_12; + float extraout_f12_13; + float extraout_f12_14; + float extraout_f12_15; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + int in_stack_00000010; + int iStack24; + + pcVar1 = (char *)in_a0_lo->POSdata_pointer; + objinst = in_a0_lo->MODELdata_pointer; + bVar3 = false; + iStack24 = 0; + if ((*pcVar1 == '\x06') && (sVar4 = get_num_players(), 1 < sVar4)) { + return; + } + iVar9 = 0; + iVar6 = iStack24; + if (dword_8002C914.anonymous_0 != -1) { + paVar5 = &dword_8002C914; + iVar8 = dword_8002C914.anonymous_0; + do { + iVar6 = iVar9; + if (in_a3_lo == iVar8) break; + iVar8 = paVar5[1].anonymous_0; + iVar9 += 1; + paVar5 = paVar5 + 1; + iVar6 = iStack24; + } while (iVar8 != -1); + } + iStack24 = iVar6; + if ((float)in_a0_lo->damage < (float)in_a0_lo->maxdamage) { + if (((in_a3_lo == 7) && (flt_80051DD4 < in_a2_lo)) && + ((in_a2_lo < flt_80051DD8 && (uVar7 = get_random_value(), uVar7 % 5 < 2)))) { + uVar7 = get_random_value(); + uVar11 = uVar7 % 5; + proc_7F02D184((int)in_a0_lo); + in_a0_lo->actiontype = gettingshot; + in_a0_lo->bond_position = 0; + iVar6 = global_timer; + in_a0_lo->sleep = '\0'; + in_a0_lo->field_30 = iVar6; + uVar7 = get_random_value(); + if ((uVar7 & 1) == 0) { + iVar6 = ptr_animation_table + 0x4f14; + uVar7 = get_random_value(); + proc_7F06FC4C(objinst,iVar6,(byte)uVar7 & 1,extraout_f12_09,0,extraout_f14_03, + 0x3f000000); + if (uVar11 < 2) { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_10); + } + else { + if (uVar11 < 4) { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_11); + } + else { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_12); + } + } + } + else { + iVar6 = ptr_animation_table + 0x4ce0; + uVar7 = get_random_value(); + proc_7F06FC4C(objinst,iVar6,(byte)uVar7 & 1,extraout_f12_05,0x41200000, + extraout_f14_02,0x3f000000); + if (uVar11 < 2) { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_06); + } + else { + if (uVar11 < 4) { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_07); + } + else { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_08); + } + } + } + bVar3 = true; + } + if (((!bVar3) && + (paVar5 = &dword_8002C914 + iStack24, (&dword_8002C914)[iStack24].field_24 != NULL)) && + (0 < (&dword_8002C914)[iStack24].field_28)) { + bVar3 = true; + iVar6 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + iVar9 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + if ((paVar5 == &animation_something_8002caa0) && (iVar6 != 0)) { + paVar5 = &animation_something_8002cacc; + } + else { + if ((paVar5 == &animation_something_8002cb24) && (iVar9 != 0)) { + paVar5 = &animation_something_8002cb50; + } + } + uVar7 = get_random_value(); + if (paVar5->field_28 == 0) { + trap(0x1c00); + } + psVar10 = paVar5->field_24 + uVar7 % paVar5->field_28; + proc_7F02D184((int)in_a0_lo); + in_a0_lo->actiontype = gettingshot; + in_a0_lo->bond_position = 0; + iVar6 = global_timer; + in_a0_lo->sleep = '\0'; + in_a0_lo->field_30 = iVar6; + proc_7F06FC4C(objinst,psVar10->anonymous_0,(char)psVar10->anonymous_1,extraout_f12_13,0, + extraout_f14_04,(int)psVar10->anonymous_3); + if (0.00000000 <= psVar10->anonymous_2) { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_14); + } + else { + proc_7F023C54(); + proc_7F06FDE8(objinst,extraout_f12_15); + } + } + bVar2 = false; + goto LAB_7f026ea0; + } + if ((in_a2_lo < flt_80051DBC) || (flt_80051DC0 < in_a2_lo)) { + uVar7 = get_random_value(); + if (uVar7 % 0x14 == 0) { + getsubroty(objinst,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + proc_7F0264B0((int)pcVar1,in_f0 + flt_80051DC8 + flt_80051DCC, + (in_f0 + flt_80051DC8) - flt_80051DD0); + fVar12 = in_f0; + proc_7F0264B0((int)pcVar1,extraout_f12,extraout_f14); + if (in_f0 < 150.00000000) { + if (fVar12 < 150.00000000) { + if (in_f0 - fVar12 < 10.00000000) { + if (-10.00000000 < in_f0 - fVar12) { + uVar7 = get_random_value(); + uVar11 = uVar7 & 1; + proc_7F02D184((int)in_a0_lo); + in_a0_lo->actiontype = dying; + in_a0_lo->bond_position = 0; + *(float *)&in_a0_lo->field_30 = (&stru_8002DEBC)[uVar11].anonymous_5; + fVar12 = (&stru_8002DEBC)[uVar11].anonymous_6; + in_a0_lo->sleep = '\0'; + *(undefined4 *)&in_a0_lo->field_38 = 0; + *(float *)&in_a0_lo->field_34 = fVar12; + proc_7F06FC4C(objinst,(&stru_8002DEBC)[uVar11].anonymous_0, + (char)(&stru_8002DEBC)[uVar11].anonymous_1,extraout_f12_00 + ,0,extraout_f14_00, + (int)(&stru_8002DEBC)[uVar11].anonymous_3); + if (0.00000000 <= (&stru_8002DEBC)[uVar11].anonymous_2) { + proc_7F06FDE8(objinst,extraout_f12_01); + } + in_a0_lo->chrwidth = 10.00000000; + bVar3 = true; + bVar2 = true; + } + else { + bVar2 = false; + } + } + else { + bVar2 = false; + } + } + else { + bVar2 = false; + } + } + else { + bVar2 = false; + } + } + else { + bVar2 = false; + } + } + else { + bVar2 = false; + } + if (((!bVar2) && ((&dword_8002C914)[iStack24].field_1C != NULL)) && + (0 < (&dword_8002C914)[iStack24].field_20)) { + bVar3 = true; + uVar7 = get_random_value(); + if ((&dword_8002C914)[iStack24].field_20 == 0) { + trap(0x1c00); + } + psVar10 = (&dword_8002C914)[iStack24].field_1C + + uVar7 % (&dword_8002C914)[iStack24].field_20; + proc_7F02D184((int)in_a0_lo); + in_a0_lo->actiontype = dying; + in_a0_lo->bond_position = 0; + fVar12 = 0.00000000; + *(float *)&in_a0_lo->field_30 = psVar10->anonymous_5; + fVar13 = psVar10->anonymous_6; + in_a0_lo->sleep = '\0'; + *(undefined4 *)&in_a0_lo->field_38 = 0; + *(float *)&in_a0_lo->field_34 = fVar13; + proc_7F06FC4C(objinst,psVar10->anonymous_0,(char)psVar10->anonymous_1,extraout_f12_02,0, + extraout_f14_01,(int)psVar10->anonymous_3); + if (ptr_animation_table + 0x2e64 == psVar10->anonymous_0) { + uVar7 = get_random_value(); + if (uVar7 % 100 == 0) { + fVar12 = psVar10->anonymous_2; + fVar13 = extraout_f12_04; + goto LAB_7f026940; + } + proc_7F06FDE8(objinst,extraout_f12_04); + } + else { + fVar12 = psVar10->anonymous_2; + fVar13 = extraout_f12_03; +LAB_7f026940: + if (0.00000000 <= fVar12) { + proc_7F06FDE8(objinst,fVar13); + } + } + proc_7F05DFA8(in_stack_00000010); + if (fVar12 <= 0.00000000) { + if ((in_a0_lo->guard_bitflags & 0x8000U) == 0) { + objinst = psVar10->anonymous_4; + } + else { + fVar12 = 6.00000000; + objinst = psVar10->anonymous_4; + } + } + else { + objinst = psVar10->anonymous_4; + } + if ((objinst != 0) && (0.00000000 < fVar12)) { + in_a0_lo->path_target_position = 0; + *(float *)&in_a0_lo->field_38 = (fVar12 * 90.00000000) / 6.00000000; + *(float *)&in_a0_lo->field_40 = *in_a1_lo * fVar12; + *(float *)&in_a0_lo->field_44 = in_a1_lo[1] * fVar12; + *(float *)&in_a0_lo->field_48 = in_a1_lo[2] * fVar12; + } + } + proc_7F021B20((int)in_a0_lo); + increment_num_kills_display_text_in_MP(); + if (in_a0_lo->guard_bitflags << 0xb < 0) { + inc_cur_civilian_casualties(); + bVar2 = true; + } + else { + bVar2 = true; + } +LAB_7f026ea0: + if ((bVar2) && (bVar3)) { + objinst = in_a0_lo->handle_positiondata[0]; + if (objinst == 0) { + objinst = in_a0_lo->handle_positiondata[1]; + } + else { + if ((*(uint *)(*(int *)(objinst + 4) + 8) & 0x2000) == 0) { + proc_7F04BFD0(objinst,1); + in_a0_lo->special_bitflags = in_a0_lo->special_bitflags | 1; + objinst = in_a0_lo->handle_positiondata[1]; + } + else { + objinst = in_a0_lo->handle_positiondata[1]; + } + } + if ((objinst != 0) && ((*(uint *)(*(int *)(objinst + 4) + 8) & 0x2000) == 0)) { + proc_7F04BFD0(objinst,1); + in_a0_lo->special_bitflags = in_a0_lo->special_bitflags | 1; + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 proc_7F026F30(void) + +{ + weapon_firing_animation_table *pwVar1; + int in_a0_lo; + int iVar2; + float *in_a1_lo; + float in_f0; + float fVar3; + float fVar4; + + if (*(char *)(in_a0_lo + 7) == '\n') { + if (*(char *)(in_a0_lo + 0x35) == '\0') { + fVar4 = *(float *)(*(int *)(in_a0_lo + 0x2c) + 4) - 8.00000000; + proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); + if (fVar4 <= in_f0) { + return 0; + } + *in_a1_lo = fVar4; + } + else { + pwVar1 = *(weapon_firing_animation_table **)(in_a0_lo + 0x2c); + if ((((pwVar1 != &stru_80030198) && (pwVar1 != &stru_800301E0)) && + (pwVar1 != &stru_80030228)) && (pwVar1 != &stru_80030270)) { + return 0; + } + fVar3 = (float)pwVar1->anonymous_1; + fVar4 = (float)pwVar1->anonymous_5; + if (fVar4 < fVar3) { + iVar2 = *(int *)(in_a0_lo + 0x1c); + } + else { + iVar2 = *(int *)(in_a0_lo + 0x1c); + fVar4 = fVar3 - 8.00000000; + } + proc_7F06F5BC(iVar2); + if (fVar4 <= fVar3) { + return 0; + } + *in_a1_lo = fVar4; + } + } + else { + if (*(char *)(in_a0_lo + 7) != '\a') { + return 0; + } + } + return 1; +} + + + +void proc_7F027060(int param_1) + +{ + int in_v0_lo; + int player; + u8 uVar1; + undefined4 *puVar2; + undefined **ppuVar3; + undefined **ppuVar4; + undefined4 *puVar5; + undefined4 *puVar6; + undefined4 uStack72; + undefined2 uStack68; + undefined4 auStack64 [14]; + int iStack8; + + player = 0; + if (**(char **)(param_1 + 0x18) == '\x06') { + iStack8 = 0; + proc_7F09B15C((int)*(char **)(param_1 + 0x18)); + player = iStack8; + if (ptr_BONDdata_p1[in_v0_lo]->bonddead != 0) { + return; + } + } + if (**(char **)(param_1 + 0x18) == '\x06') { + iStack8 = player; + player = get_num_players(); + if (player == 1) { + player = iStack8; + if (*(char *)&c_item_entries[*(char *)(param_1 + 0xf)].anonymous_3 != '\0') { + player = 1; + } + } + else { + proc_7F09B15C(*(int *)(param_1 + 0x18)); + uVar1 = get_player_mp_char_gender(player); + player = iStack8; + if (uVar1 != '\0') { + player = 1; + } + } + } + else { + if (*(char *)&c_item_entries[*(char *)(param_1 + 0xf)].anonymous_3 != '\0') { + player = 1; + } + } + if (player == 0) { + puVar2 = &uStack72; + uStack72 = female_guard_yelps[0]; + uStack68 = female_guard_yelps[1]._0_2_; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)puVar2 + female_guard_yelp_counter * 2),NULL); + female_guard_yelp_counter += 1; + if (2 < female_guard_yelp_counter) { + female_guard_yelp_counter = 0; + } + } + else { + puVar2 = auStack64; + ppuVar3 = male_guard_yelps; + puVar5 = puVar2; + do { + ppuVar4 = ppuVar3 + 3; + puVar6 = puVar5 + 3; + *(undefined **)puVar5 = *ppuVar3; + *(undefined **)(puVar5 + 1) = ppuVar3[1]; + *(undefined **)(puVar5 + 2) = ppuVar3[2]; + ppuVar3 = ppuVar4; + puVar5 = puVar6; + } while (ppuVar4 != male_guard_yelps + 0xc); + *(undefined2 *)puVar6 = male_guard_yelps[12]._0_2_; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)puVar2 + male_guard_yelp_counter * 2),NULL); + male_guard_yelp_counter += 1; + if (0x18 < male_guard_yelp_counter) { + male_guard_yelp_counter = 0; + } + } + sub_GAME_7F053A10((int)puVar2,(float *)(*(int *)(param_1 + 0x18) + 8)); + return; +} + + + +// WARNING: Instruction at (ram,0x7f02755c) overlaps instruction at (ram,0x7f027558) +// +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F02727C(void) + +{ + char cVar1; + u32 uVar3; + s32 sVar4; + PLAYER_ID playernum; + PLAYER_ID playernum_00; + longlong lVar2; + int in_a0_lo; + f32 arg2; + longlong in_a1; + s32 arg3; + f32 *in_a2_lo; + int in_a3_lo; + uint uVar5; + char *pcVar6; + float in_f0; + float fVar7; + float extraout_f12; + int iStackX4; + int in_stack_00000010; + undefined4 uStack20; + word wStack16; + undefined4 uStack8; + + iStackX4 = (int)in_a1; + uStack8 = *(undefined4 *)(in_a0_lo + 0x18); + if ((in_a1 == 0x6e) && (*(int *)(in_a0_lo + 0x1d8) != 0)) { + lVar2 = get_hat_model(*(int *)(in_a0_lo + 0x1d8)); + if (lVar2 == 5) { + iStackX4 = 8; + } + else { + if (lVar2 == 3) { + uStack20 = metal_ricochet_SFX._0_4_; + wStack16 = metal_ricochet_SFX[2]; + uVar3 = get_random_value(); + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack20 + (uVar3 % 3) * 2),NULL); + sub_GAME_7F053A10(uVar3,(float *)(*(int *)(in_a0_lo + 0x18) + 8)); + } + else { + proc_7F04BFD0(*(int *)(in_a0_lo + 0x1d8),4); + *(ushort *)(in_a0_lo + 0x12) = *(ushort *)(in_a0_lo + 0x12) | 1; + } + } + } + if (in_stack_00000010 == 0) { + uVar5 = *(uint *)(in_a0_lo + 0x14); + } + else { + if (iStackX4 == 0) { +LAB_7f0273e8: + uVar5 = *(uint *)(in_a0_lo + 0x14); + } + else { + if (iStackX4 == 7) { +LAB_7f0273d0: + inc_curplayer_hitcount_with_weapon(in_a3_lo,2); + uVar5 = *(uint *)(in_a0_lo + 0x14); + } + else { + if (iStackX4 == 8) { + inc_curplayer_hitcount_with_weapon(in_a3_lo,1); + uVar5 = *(uint *)(in_a0_lo + 0x14); + } + else { + if (iStackX4 == 0xf) goto LAB_7f0273d0; + if (iStackX4 == 100) { + inc_curplayer_hitcount_with_weapon(in_a3_lo,4); + uVar5 = *(uint *)(in_a0_lo + 0x14); + } + else { + if (iStackX4 != 0x6e) { + inc_curplayer_hitcount_with_weapon(in_a3_lo,3); + goto LAB_7f0273e8; + } + inc_curplayer_hitcount_with_weapon(in_a3_lo,5); + uVar5 = *(uint *)(in_a0_lo + 0x14); + } + } + } + } + } + *(char *)(in_a0_lo + 0xb) = *(char *)(in_a0_lo + 0xb) + '\x01'; + *(uint *)(in_a0_lo + 0x14) = uVar5 | 0x200000; + if ((uVar5 & 0x10) != 0) { + proc_7F0206D4(in_a0_lo); + return 0; + } + if (*(char *)(in_a0_lo + 7) == '\x04') { + return 1; + } + if (*(char *)(in_a0_lo + 7) == '\x05') { + return 1; + } + proc_7F05DF84(in_a3_lo); + if ((in_stack_00000010 != 0) && (sVar4 = get_num_players(), sVar4 == 1)) { + in_f0 = in_f0 * (float)ai_health_modifier; + } + fVar7 = (float)proc_7F032BD8(); + if (iStackX4 == 200) { + iStackX4 = 0xf; + in_f0 = in_f0 * 0.50000000; + } + else { + if (iStackX4 == 0xc9) { + iStackX4 = 0xf; + in_f0 = in_f0 * 0.25000000; + } + } + if (((((in_a3_lo == 1) && (cVar1 = *(char *)(in_a0_lo + 7), cVar1 != '\x01')) && + (cVar1 != '\x0e')) && ((cVar1 != '\x10' && (cVar1 != '\x03')))) && + ((cVar1 != '\x0f' || (*(char *)(in_a0_lo + 0x59) != '\0')))) { + if ((fVar7 < flt_80051DDC) || (FLOAT_80051de0 < fVar7)) { + in_f0 = in_f0 * 0.12500000; + } + else { + if ((fVar7 < flt_80051DE4) || (FLOAT_80051de8 < fVar7)) { + in_f0 = in_f0 * 0.25000000; + } + else { + in_f0 = in_f0 * 0.50000000; + } + } + } + if (iStackX4 == 8) { + in_f0 = in_f0 * 4.00000000; + pcVar6 = *(char **)(in_a0_lo + 0x18); + goto LAB_7f027664; + } + if (iStackX4 == 0xf) { + in_f0 = in_f0 + in_f0; + } + else { + if (iStackX4 == 100) { + in_f0 = 0.00000000; + pcVar6 = *(char **)(in_a0_lo + 0x18); + goto LAB_7f027664; + } + if (iStackX4 != 0x6e) { + pcVar6 = *(char **)(in_a0_lo + 0x18); + goto LAB_7f027664; + } + in_f0 = 0.00000000; + } + pcVar6 = *(char **)(in_a0_lo + 0x18); +LAB_7f027664: + if (*pcVar6 == '\x06') { + playernum = get_cur_playernum(); + playernum_00 = playernum; + proc_7F09B15C(*(int *)(in_a0_lo + 0x18)); + set_cur_player(playernum_00); + record_damage_kills((f32)(in_f0 * 0.12500000),*in_a2_lo,arg2,arg3,in_a2_lo[2]); + set_cur_player(playernum); + } + else { + *(uint *)(in_a0_lo + 0x14) = *(uint *)(in_a0_lo + 0x14) | 0x100; + *(float *)(in_a0_lo + 0xfc) = *(float *)(in_a0_lo + 0xfc) + in_f0; + if ((*(float *)(in_a0_lo + 0xfc) < 0.00000000) && (lVar2 = proc_7F026F30(), lVar2 == 0)) { + proc_7F0206D4(in_a0_lo); + return 0; + } + } + if (iStackX4 != 0x6e) { + proc_7F027060(in_a0_lo); + lVar2 = proc_7F026F30(); + if (lVar2 == 0) { + proc_7F026508(); + } + else { + if (false) { + proc_7F06FDE8(*(int *)(in_a0_lo + 0x1c),extraout_f12); + } + *(undefined *)(in_a0_lo + 7) = 7; + *(f32 *)(in_a0_lo + 0x2c) = *in_a2_lo; + *(f32 *)(in_a0_lo + 0x30) = in_a2_lo[1]; + *(f32 *)(in_a0_lo + 0x34) = in_a2_lo[2]; + *(float *)(in_a0_lo + 0x38) = fVar7; + *(int *)(in_a0_lo + 0x3c) = iStackX4; + *(undefined *)(in_a0_lo + 8) = 0; + *(int *)(in_a0_lo + 0x40) = in_a3_lo; + } + } + return 1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F027804(void) + +{ + uint uVar1; + undefined8 uVar2; + u32 uVar3; + int in_a0_lo; + int objinst; + float *in_a1_lo; + float in_a2_lo; + int in_a3_lo; + float in_f0; + float fVar4; + float fVar5; + float fVar6; + int iVar7; + float fVar8; + float extraout_f12; + float extraout_f12_00; + float fVar9; + float extraout_f14; + float fStack36; + + objinst = *(int *)(in_a0_lo + 0x1c); + iVar7 = *(int *)(in_a0_lo + 0x18); + if ((*(char *)(in_a0_lo + 7) == '\x05') || (*(char *)(in_a0_lo + 7) == '\x04')) { + uVar2 = 0; + } + else { + uVar1 = *(uint *)(in_a0_lo + 0x14); + *(uint *)(in_a0_lo + 0x14) = uVar1 | 0x200000; + if ((uVar1 & 0x10) == 0) { + *(char *)(in_a0_lo + 0xb) = *(char *)(in_a0_lo + 0xb) + '\x01'; + *(uint *)(in_a0_lo + 0x14) = uVar1 | 0x200100; + *(float *)(in_a0_lo + 0xfc) = *(float *)(in_a0_lo + 0xfc) + in_a2_lo; + if (*(float *)(in_a0_lo + 0xfc) <= 0.00000000) { + uVar2 = 0; + } + else { + *(undefined4 *)(in_a0_lo + 0xfc) = *(undefined4 *)(in_a0_lo + 0x100); + getsubroty(objinst,(uint)in_a1_lo,objinst,in_a3_lo); + fVar4 = convert_angle_using_inverse + ((f32)(*(float *)(iVar7 + 8) - *in_a1_lo), + (f32)(*(float *)(iVar7 + 0x10) - in_a1_lo[2])); + fVar6 = *(float *)(iVar7 + 8) - *in_a1_lo; + fVar8 = *(float *)(iVar7 + 0xc) - in_a1_lo[1]; + fStack36 = *(float *)(iVar7 + 0x10) - in_a1_lo[2]; + if (((fVar6 == 0.00000000) && (fVar8 == 0.00000000)) && (fStack36 == 0.00000000)) { + fStack36 = 1.00000000; + } + fVar5 = sqrtf(fStack36 * fStack36 + fVar6 * fVar6 + fVar8 * fVar8); + fVar5 = (in_a2_lo * 5.00000000) / fVar5; + fVar9 = fVar4 - in_f0; + *(float *)(in_a0_lo + 0xb0) = fVar6 * fVar5; + *(float *)(in_a0_lo + 0xb4) = fVar8 * fVar5; + *(float *)(in_a0_lo + 0xb8) = fStack36 * fVar5; + if (fVar4 < in_f0) { + fVar9 = fVar9 + flt_80051DEC; + } + iVar7 = (int)((fVar9 * 8.00000000) / flt_80051DF0 + 0.50000000); + if (7 < iVar7) { + iVar7 = 0; + } + uVar3 = get_random_value(); + if (explosion_animation_table[iVar7].count == 0) { + trap(0x1c00); + } + iVar7 = (int)*(char *)((int)explosion_animation_table[iVar7].direction + + uVar3 % explosion_animation_table[iVar7].count); + proc_7F02D184(in_a0_lo); + *(undefined *)(in_a0_lo + 7) = 4; + *(undefined4 *)(in_a0_lo + 0x2c) = 0; + *(float *)(in_a0_lo + 0x30) = (&stru_8002E648)[iVar7].anonymous_5; + *(undefined *)(in_a0_lo + 8) = 0; + *(undefined4 *)(in_a0_lo + 0x34) = 0xbf800000; + *(undefined4 *)(in_a0_lo + 0x38) = 0; + proc_7F06FCA8(objinst,(&stru_8002E648)[iVar7].anonymous_0 + ptr_animation_table, + (char)(&stru_8002E648)[iVar7].anonymous_1,extraout_f12, + (&stru_8002E648)[iVar7].anonymous_3,extraout_f14); + if (0.00000000 <= (&stru_8002E648)[iVar7].anonymous_6) { + proc_7F06FDE8(objinst,extraout_f12_00); + } + if (in_a3_lo != 0) { + proc_7F027060(in_a0_lo); + } + proc_7F021B20(in_a0_lo); + increment_num_kills_display_text_in_MP(); + if (*(int *)(in_a0_lo + 0x14) << 0xb < 0) { + inc_cur_civilian_casualties(); + objinst = *(int *)(in_a0_lo + 0x160); + } + else { + objinst = *(int *)(in_a0_lo + 0x160); + } + if (objinst == 0) { + objinst = *(int *)(in_a0_lo + 0x164); + } + else { + if ((*(uint *)(*(int *)(objinst + 4) + 8) & 0x2000) == 0) { + proc_7F04BFD0(objinst,1); + *(ushort *)(in_a0_lo + 0x12) = *(ushort *)(in_a0_lo + 0x12) | 1; + objinst = *(int *)(in_a0_lo + 0x164); + } + else { + objinst = *(int *)(in_a0_lo + 0x164); + } + } + if ((objinst != 0) && ((*(uint *)(*(int *)(objinst + 4) + 8) & 0x2000) == 0)) { + proc_7F04BFD0(objinst,1); + *(ushort *)(in_a0_lo + 0x12) = *(ushort *)(in_a0_lo + 0x12) | 1; + } + uVar2 = 1; + } + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +int * proc_7F027BF4(int param_1) + +{ + int *piVar1; + int iVar2; + + if ((ptr_setup_path_tbl != NULL) && (-1 < *(int *)ptr_setup_path_tbl)) { + iVar2 = *(int *)ptr_setup_path_tbl; + piVar1 = (int *)ptr_setup_path_tbl; + do { + if (param_1 == *(int *)(ptr_0xxxpresets + iVar2 * 0x2c + 0x28)) { + return piVar1; + } + iVar2 = piVar1[4]; + piVar1 = piVar1 + 4; + } while (-1 < iVar2); + } + return NULL; +} + + + +ulonglong proc_7F027C60(int param_1) + +{ + int *piVar1; + + piVar1 = proc_7F027BF4(param_1); + return (ulonglong)(piVar1 != NULL); +} + + + +float proc_7F027C84(float *param_1,int *param_2) + +{ + float fVar1; + float fVar2; + + fVar1 = *(float *)(ptr_0xxxpresets + *param_2 * 0x2c) - *param_1; + fVar2 = *(float *)(ptr_0xxxpresets + *param_2 * 0x2c + 2) - param_1[2]; + return fVar1 * fVar1 + fVar2 * fVar2; +} + + + +int * proc_7F027CD4(float *param_1,undefined4 param_2) + +{ + int iVar1; + int *piVar2; + int *piVar3; + int *piVar4; + float fVar5; + float fVar6; + + piVar2 = NULL; + iVar1 = proc_7F0B2718(param_2,proc_7F027C60); + if ((iVar1 != 0) && (piVar2 = proc_7F027BF4(iVar1), piVar2 != NULL)) { + fVar5 = proc_7F027C84(param_1,piVar2); + piVar3 = (int *)piVar2[1]; + iVar1 = *piVar3; + while (-1 < iVar1) { + piVar4 = (int *)(ptr_setup_path_tbl + iVar1 * 0x10); + fVar6 = proc_7F027C84(param_1,piVar4); + if (fVar6 < fVar5) { + iVar1 = piVar3[1]; + } + else { + iVar1 = piVar3[1]; + piVar4 = piVar2; + } + piVar3 = piVar3 + 1; + piVar2 = piVar4; + } + } + return piVar2; +} + + + +void proc_7F027DB0(int param_1,float *param_2,int param_3) + +{ + int iVar2; + ulonglong uVar1; + int iVar3; + int *piVar4; + float in_f12; + float in_f14; + int aiStackX8 [2]; + int aiStack80 [20]; + + iVar2 = *(int *)(param_1 + 0x18); + aiStackX8[0] = param_3; + iVar2 = proc_7F0B0D0C(*(int *)(iVar2 + 0x14),in_f12,in_f14,*(int **)(iVar2 + 8), + *(float *)(iVar2 + 0x10),(float)aiStackX8,(uint *)*param_2,(int)param_2[2] + ); + if (((0 < iVar2) && (iVar2 < 0x14)) && (iVar3 = 0, 0 < iVar2)) { + piVar4 = aiStack80; + do { + uVar1 = proc_7F0B5E50(*piVar4); + iVar3 += 1; + if (uVar1 != 0) { + return; + } + piVar4 = piVar4 + 1; + } while (iVar3 != iVar2); + } + return; +} + + + +void proc_7F027E70(int param_1,float *param_2) + +{ + proc_7F027DB0(param_1,param_2,(int)param_2[10]); + return; +} + + + +void proc_7F027E90(int param_1,undefined *param_2,float *param_3) + +{ + undefined4 extraout_a2_lo; + float fVar1; + float vector1; + float extraout_f12; + float vector2; + + vector1 = *param_3 - *(float *)(*(int *)(param_1 + 0x18) + 8); + vector2 = param_3[2] - *(float *)(*(int *)(param_1 + 0x18) + 0x10); + fVar1 = convert_angle_using_inverse((f32)vector1,(f32)vector2); + *param_2 = 6; + *(undefined4 *)(param_2 + 0x38) = 0; + vector1 = sqrtf(vector1 * vector1 + vector2 * vector2); + *(float *)(param_2 + 0x3c) = vector1; + setsubroty(*(int *)(param_1 + 0x1c),extraout_f12,fVar1,extraout_a2_lo); + return; +} + + + +void proc_7F027F20(int param_1,undefined4 *param_2,undefined4 *param_3) + +{ + int *piVar1; + undefined4 *puVar2; + + piVar1 = *(int **)(param_1 + (uint)*(byte *)(param_1 + 0x58) * 4 + 0x40); + if (piVar1 == NULL) { + *param_2 = *(undefined4 *)(param_1 + 0x2c); + param_2[1] = *(undefined4 *)(param_1 + 0x30); + param_2[2] = *(undefined4 *)(param_1 + 0x34); + *param_3 = *(undefined4 *)(param_1 + 0x38); + return; + } + puVar2 = (undefined4 *)(ptr_0xxxpresets + *piVar1 * 0x2c); + *param_2 = *puVar2; + param_2[1] = puVar2[1]; + param_2[2] = puVar2[2]; + *param_3 = puVar2[10]; + return; +} + + + +float proc_7F027FA8(int param_1) + +{ + float fVar1; + int iVar2; + float fVar3; + + fVar1 = dword_80030984; + iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)); + fVar3 = dword_8003098C; + if (((((iVar2 != ptr_animation_table + 0x4070) && + (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030988, + iVar2 != ptr_animation_table + 0x40d4)) && + (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030998, + iVar2 != ptr_animation_table + 0x77d4)) && + ((iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030994, + iVar2 != ptr_animation_table + 0x777c && + (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_80030990, + iVar2 != ptr_animation_table + 0x8204)))) && + ((iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_800309A4, + iVar2 != ptr_animation_table + 0x77d4 && + ((iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = dword_800309A0, + iVar2 != ptr_animation_table + 0x8520 && + (iVar2 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), fVar3 = fVar1, + iVar2 == ptr_animation_table + 0x84c4)))))) { + fVar3 = dword_8003099C; + } + return *(float *)(*(int *)(param_1 + 0x1c) + 0x14) * fVar3 * flt_80051DF4; +} + + + +int proc_7F028144(int param_1) + +{ + float fVar1; + float fVar2; + undefined4 uStack28; + float afStack24 [2]; + float fStack16; + float fStack8; + float fStack4; + + fVar1 = proc_7F06F618(*(int *)(param_1 + 0x1c)); + proc_7F027F20(param_1,afStack24,&uStack28); + fStack4 = afStack24[0] - *(float *)(*(int *)(param_1 + 0x18) + 8); + fStack8 = fStack16 - *(float *)(*(int *)(param_1 + 0x18) + 0x10); + if (fStack4 < 0.00000000) { + fStack4 = -fStack4; + } + if (fStack8 < 0.00000000) { + fStack8 = -fStack8; + } + fVar2 = proc_7F027FA8(param_1); + return (int)((fStack4 + fStack8) / (fVar2 * fVar1)); +} + + + +void proc_7F0281F4(int param_1) + +{ + *(undefined2 *)(param_1 + 0x5a) = 0; + return; +} + + + +void proc_7F0281FC(int param_1) + +{ + ushort uVar1; + int iVar2; + undefined2 uVar3; + + if (*(char *)(param_1 + 0x5c) != '\x06') { + uVar1 = *(ushort *)(param_1 + 0x5a); + if (uVar1 == 0) { + iVar2 = proc_7F028144(param_1); + iVar2 = iVar2 * 2 + 300; + uVar3 = (undefined2)iVar2; + if (0xffff < iVar2) { + uVar3 = 0xffff; + } + *(undefined2 *)(param_1 + 0x5a) = uVar3; + } + else { + if (clock_timer._2_2_ < uVar1) { + *(short *)(param_1 + 0x5a) = uVar1 - clock_timer._2_2_; + } + else { + proc_7F028DDC(param_1,(float *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x38), + *(char *)(param_1 + 0x59)); + } + } + } + return; +} + + + +void proc_7F02828C(int param_1) + +{ + undefined4 uStack16; + undefined4 uStack12; + undefined4 uStack8; + undefined4 uStack4; + + proc_7F027F20(param_1,&uStack12,&uStack16); + *(undefined *)(param_1 + 0x5c) = 0; + *(undefined *)(param_1 + 0x5d) = 0; + *(undefined *)(param_1 + 0x5e) = 0; + *(undefined4 *)(param_1 + 0x60) = uStack12; + *(undefined4 *)(param_1 + 100) = uStack8; + *(undefined4 *)(param_1 + 0x68) = uStack4; + proc_7F0281F4(param_1); + return; +} + + + +void proc_7F0282E0(int param_1) + +{ + byte bVar1; + int iVar2; + + bVar1 = *(byte *)(param_1 + 0x58); + if (bVar1 < 3) { + *(char *)(param_1 + 0x58) = bVar1 + 1; + } + else { + iVar2 = *(int *)(param_1 + (uint)bVar1 * 4 + 0x40); + *(undefined *)(param_1 + 0x58) = 1; + proc_7F08F4F0(iVar2,*(int *)(param_1 + 0x3c),(int *)(param_1 + 0x40),6); + } + proc_7F02828C(param_1); + return; +} + + + +int proc_7F028348(int param_1,int *param_2,int param_3) + +{ + int iVar1; + int iVar2; + ulonglong uVar3; + + iVar2 = *(int *)(param_1 + 0x30); + uVar3 = SEXT48(*param_2); + if (param_3 < 0) { + uVar3 = (ulonglong)(uVar3 == 0); + param_3 = -param_3; + } + if (param_3 < 1) { + *param_2 = (int)uVar3; + } + else { + do { + param_3 += -1; + if (uVar3 == 0) { + iVar1 = iVar2 + -1; + if (iVar2 + -1 < 0) { + if ((*(byte *)(*(int *)(param_1 + 0x2c) + 5) & 1) == 0) { + uVar3 = 1; + iVar1 = 1; + } + else { + iVar1 = (uint)*(ushort *)(*(int *)(param_1 + 0x2c) + 6) - 1; + } + } + } + else { + iVar1 = iVar2 + 1; + if (*(int *)(**(int **)(param_1 + 0x2c) + (iVar2 + 1) * 4) < 0) { + if ((*(byte *)((int)*(int **)(param_1 + 0x2c) + 5) & 1) == 0) { + uVar3 = 0; + iVar1 = iVar2 + -1; + } + else { + iVar1 = 0; + } + } + } + iVar2 = iVar1; + } while (0 < param_3); + *param_2 = (int)uVar3; + } + return iVar2; +} + + + +int proc_7F0283FC(int param_1,int param_2) + +{ + int iVar1; + int aiStack8 [2]; + + aiStack8[0] = *(int *)(param_1 + 0x34); + iVar1 = proc_7F028348(param_1,aiStack8,param_2); + return (int)(ptr_0xxxpresets + + *(int *)(ptr_setup_path_tbl + + *(int *)(**(int **)(param_1 + 0x2c) + iVar1 * 4) * 0x10) * 0x2c); +} + + + +int proc_7F028474(int param_1) + +{ + int iVar1; + + iVar1 = proc_7F0283FC(param_1,0); + return iVar1; +} + + + +void proc_7F028494(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)proc_7F028474(param_1); + *(undefined *)(param_1 + 0x38) = 0; + *(undefined *)(param_1 + 0x39) = 0; + *(undefined *)(param_1 + 0x3a) = 0; + *(undefined4 *)(param_1 + 0x3c) = *puVar1; + *(undefined4 *)(param_1 + 0x40) = puVar1[1]; + *(undefined4 *)(param_1 + 0x44) = puVar1[2]; + return; +} + + + +void proc_7F0284DC(int param_1) + +{ + int iVar1; + + iVar1 = proc_7F028348(param_1,(int *)(param_1 + 0x34),1); + *(int *)(param_1 + 0x30) = iVar1; + proc_7F028494(param_1); + return; +} + + + +undefined8 proc_7F028510(float *param_1,int param_2) + +{ + longlong lVar1; + short *psVar2; + uint uStack48; + float *apfStack44 [3]; + uint uStack32; + undefined4 uStack28; + + uStack28 = 0xffffffff; + uStack32 = (uint)*(byte *)(param_2 + 3); + proc_7F03E3FC((int *)&uStack32); + lVar1 = (longlong)*ptr_list_object_lookup_indices; + psVar2 = ptr_list_object_lookup_indices; + do { + if (lVar1 < 0) { + return 1; + } + if (pos_data_entry[(int)lVar1 * 0x34] == '\x01') { + proc_7F03CCB0(pos_data_entry + (int)lVar1 * 0x34,(int **)apfStack44,&uStack48); + if ((int)uStack48 < 1) { + lVar1 = (longlong)psVar2[1]; + } + else { + lVar1 = proc_7F03CCD8(param_1,apfStack44[0],uStack48); + if (lVar1 != 0) { + return 0; + } + lVar1 = (longlong)psVar2[1]; + } + } + else { + lVar1 = (longlong)psVar2[1]; + } + psVar2 = psVar2 + 1; + } while( true ); +} + + + +void proc_7F028600(int param_1,undefined *param_2,float param_3,float *param_4,int param_5) + +{ + byte bVar1; + longlong lVar2; + float *pfVar3; + undefined4 extraout_a2_lo; + float fVar4; + float extraout_f12; + int in_stack_00000010; + undefined4 uStack44; + float afStack40 [9]; + int iStack4; + + *(undefined *)(param_1 + 9) = 0; + *(undefined4 *)(param_1 + 0xcc) = global_timer; + fVar4 = proc_7F06F618(*(int *)(param_1 + 0x1c)); + *(float *)(param_2 + 0x38) = + *(float *)(param_2 + 0x38) + (float)param_4 * fVar4 * global_timer_delta; + if (*(float *)(param_2 + 0x3c) <= *(float *)(param_2 + 0x38)) { + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + lVar2 = proc_7F0B18B8(); + if ((lVar2 < 0) && (lVar2 = proc_7F028510((float *)param_5,in_stack_00000010), lVar2 != 0)) + { + iStack4 = *(int *)(param_1 + 0x18); + *(int *)(iStack4 + 0x14) = in_stack_00000010; + *(undefined4 *)(iStack4 + 8) = *(undefined4 *)param_5; + *(undefined4 *)(iStack4 + 0xc) = *(undefined4 *)(param_5 + 4); + *(undefined4 *)(iStack4 + 0x10) = *(undefined4 *)(param_5 + 8); + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1; + setsuboffset(*(int *)(param_1 + 0x1c),(xyzpoint *)param_5); + proc_7F01FC10(*(int *)(param_1 + 0x1c),(float *)(iStack4 + 8),(float *)(iStack4 + 8), + (float *)(param_1 + 0xac)); + proc_7F020D94(param_1); + if (*(char *)(param_1 + 7) == '\x0e') { + proc_7F0284DC(param_1); + pfVar3 = (float *)proc_7F028474(param_1); + proc_7F027E90(param_1,param_2,pfVar3); + } + else { + if (*(char *)(param_1 + 7) == '\x0f') { + bVar1 = *(byte *)(param_1 + 0x58); + if (*(int *)(param_1 + (uint)bVar1 * 4 + 0x40) == 0) { + if (bVar1 != 0) { + fVar4 = convert_angle_using_inverse + ((f32)(*(float *)(iStack4 + 8) - + *(float *)(ptr_0xxxpresets + + **(int **)(param_1 + (uint)bVar1 * 4 + + 0x3c) * 0x2c)), + (f32)(*(float *)(iStack4 + 0x10) - + *(float *)(ptr_0xxxpresets + + **(int **)(param_1 + (uint)bVar1 * 4 + + 0x3c) * 0x2c + 2))); + setsubroty(*(int *)(param_1 + 0x1c),extraout_f12,fVar4,extraout_a2_lo); + } + proc_7F023E48(param_1); + } + else { + proc_7F0282E0(param_1); + proc_7F027F20(param_1,afStack40,&uStack44); + proc_7F027E90(param_1,param_2,afStack40); + } + } + } + } + else { + *(undefined4 *)(param_2 + 0x38) = *(undefined4 *)(param_2 + 0x3c); + if (*(char *)(param_1 + 7) == '\x0e') { + *(undefined4 *)(param_1 + 0x78) = global_timer; + proc_7F028494(param_1); + } + else { + *(undefined4 *)(param_1 + 0x9c) = global_timer; + proc_7F02828C(param_1); + } + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + } + return; +} + + + +void proc_7F028894(int param_1,float *param_2) + +{ + int iVar1; + float *pfVar2; + float fVar3; + float fVar4; + undefined4 uStack24; + float fStack20; + float fStack16; + float fStack12; + + if ((*(char *)(param_1 + 7) == '\x0e') && (*(char *)(param_1 + 0x38) == '\x06')) { + pfVar2 = (float *)proc_7F028474(param_1); + if (*(float *)(param_1 + 0x74) <= *(float *)(param_1 + 0x70)) { + *param_2 = *pfVar2; + param_2[1] = pfVar2[1]; + param_2[2] = pfVar2[2]; + } + else { + fVar3 = *(float *)(param_1 + 0x70) / *(float *)(param_1 + 0x74); + fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 8); + *param_2 = (*pfVar2 - fVar4) * fVar3 + fVar4; + fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0xc); + param_2[1] = (pfVar2[1] - fVar4) * fVar3 + fVar4; + fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0x10); + param_2[2] = (pfVar2[2] - fVar4) * fVar3 + fVar4; + } + } + else { + if (*(char *)(param_1 + 7) == '\x0f') { + if (*(char *)(param_1 + 0x5c) == '\x06') { + proc_7F027F20(param_1,&fStack20,&uStack24); + if (*(float *)(param_1 + 0x94) < *(float *)(param_1 + 0x98)) { + fVar3 = *(float *)(param_1 + 0x94) / *(float *)(param_1 + 0x98); + fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 8); + *param_2 = (fStack20 - fVar4) * fVar3 + fVar4; + fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0xc); + param_2[1] = (fStack16 - fVar4) * fVar3 + fVar4; + fVar4 = *(float *)(*(int *)(param_1 + 0x18) + 0x10); + param_2[2] = (fStack12 - fVar4) * fVar3 + fVar4; + return; + } + *param_2 = fStack20; + param_2[1] = fStack16; + param_2[2] = fStack12; + return; + } + iVar1 = *(int *)(param_1 + 0x18); + } + else { + iVar1 = *(int *)(param_1 + 0x18); + } + *param_2 = *(float *)(iVar1 + 8); + param_2[1] = *(float *)(*(int *)(param_1 + 0x18) + 0xc); + param_2[2] = *(float *)(*(int *)(param_1 + 0x18) + 0x10); + } + return; +} + + + +void proc_7F028A5C(int param_1,int param_2,int param_3) + +{ + bool bVar1; + int iVar3; + int iVar4; + u32 uVar5; + ulonglong uVar2; + bool bVar6; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fVar7; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float fVar8; + + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + if (((iVar3 == 0) || (iVar4 == 0)) && ((iVar3 != 0 || (iVar4 != 0)))) { + uVar2 = check_if_item_held_like_pistol(iVar3); + fVar7 = extraout_f12_00; + fVar8 = extraout_f14_00; + if ((uVar2 == 0) && + (uVar2 = check_if_item_held_like_pistol(iVar4), fVar7 = extraout_f12_01, + fVar8 = extraout_f14_01, uVar2 == 0)) { + bVar1 = true; + bVar6 = iVar3 != 0; + } + else { + bVar1 = false; + bVar6 = iVar3 != 0; + } + } + else { + uVar5 = get_random_value(); + bVar1 = false; + bVar6 = (bool)((byte)uVar5 & 1); + fVar7 = extraout_f12; + fVar8 = extraout_f14; + } + if (bVar1) { + if (param_2 == 2) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4070,bVar6,fVar7,0,fVar8) + ; + } + else { + if (param_2 == 1) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x40d4,bVar6,fVar7,0, + fVar8); + } + else { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4018,bVar6,fVar7,0, + fVar8); + } + } + } + else { + if (param_3 == 0) { + if (param_2 == 2) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x77d4,bVar6,fVar7,0, + fVar8); + } + else { + if (param_2 == 1) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8520,bVar6,fVar7, + 0,fVar8); + } + else { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x84c4,bVar6,fVar7, + 0,fVar8); + } + } + } + else { + if (param_2 == 2) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x77d4,bVar6,fVar7,0, + fVar8); + } + else { + if (param_2 == 1) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x777c,bVar6,fVar7, + 0,fVar8); + } + else { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8204,bVar6,fVar7, + 0,fVar8); + } + } + } + } + return; +} + + + +void proc_7F028DA0(int param_1) + +{ + proc_7F028A5C(param_1,(uint)*(byte *)(param_1 + 0x59), + (uint)*(byte *)&c_item_entries[*(char *)(param_1 + 0xf)].anonymous_3); + return; +} + + + +undefined8 proc_7F028DDC(int param_1,float *param_2,undefined4 param_3,char param_4) + +{ + bool bVar1; + undefined8 uVar2; + int iVar4; + u32 uVar5; + longlong lVar3; + int iStack56; + float afStack52 [4]; + int iStack36; + undefined4 uStack32; + undefined4 uStack28; + undefined4 uStack24; + undefined4 uStack20; + undefined4 uStack16; + int *piStack12; + int *piStack8; + int iStack4; + + iStack4 = *(int *)(param_1 + 0x18); + bVar1 = *(char *)(param_1 + 7) == '\x0f'; + if (bVar1) { + bVar1 = param_4 == *(char *)(param_1 + 0x59); + } + piStack8 = proc_7F027CD4((float *)(iStack4 + 8),*(undefined4 *)(iStack4 + 0x14)); + piStack12 = proc_7F027CD4(param_2,param_3); + if (piStack8 == NULL) { + uVar2 = 0; + } + else { + if (piStack12 == NULL) { + uVar2 = 0; + } + else { + iVar4 = proc_7F08F4F0((int)piStack8,(int)piStack12,&iStack36,6); + if (iVar4 < 2) { + uVar2 = 0; + } + else { + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 0xf; + *(float *)(param_1 + 0x2c) = *param_2; + *(float *)(param_1 + 0x30) = param_2[1]; + *(float *)(param_1 + 0x34) = param_2[2]; + *(undefined4 *)(param_1 + 0x38) = param_3; + *(undefined *)(param_1 + 0x58) = 0; + *(int **)(param_1 + 0x3c) = piStack12; + *(undefined4 *)(param_1 + 0xa0) = 0; + *(char *)(param_1 + 0x59) = param_4; + uVar5 = get_random_value(); + *(uint *)(param_1 + 0x84) = uVar5 % 100; + *(undefined *)(param_1 + 0x5f) = 0; + *(undefined4 *)(param_1 + 0x9c) = 0xffffffff; + *(int *)(param_1 + 0x40) = iStack36; + *(undefined4 *)(param_1 + 0x44) = uStack32; + lVar3 = (longlong)(param_1 + 8); + *(undefined4 *)(param_1 + 0x48) = uStack28; + *(undefined4 *)(param_1 + 0x4c) = uStack24; + *(undefined4 *)(param_1 + 0x50) = uStack20; + *(undefined4 *)(param_1 + 0x54) = uStack16; + proc_7F02828C(param_1); + *(undefined *)(param_1 + 8) = 0; + if (!bVar1) { + proc_7F028DA0(param_1); + } + proc_7F027F20(param_1,afStack52,&iStack56); + if (((*(byte *)(iStack4 + 1) & 2) == 0) && + (proc_7F027DB0(param_1,afStack52,iStack56), lVar3 != 0)) { + proc_7F027E90(param_1,(undefined *)(param_1 + 0x5c),afStack52); + } + uVar2 = 1; + } + } + } + return uVar2; +} + + + +void proc_7F028FAC(int param_1) + +{ + bool bVar1; + int iVar3; + int iVar4; + u32 uVar5; + ulonglong uVar2; + bool bVar6; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fVar7; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float fVar8; + + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + iVar4 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + if (((iVar3 == 0) || (iVar4 == 0)) && ((iVar3 != 0 || (iVar4 != 0)))) { + uVar2 = check_if_item_held_like_pistol(iVar3); + fVar7 = extraout_f12_00; + fVar8 = extraout_f14_00; + if ((uVar2 == 0) && + (uVar2 = check_if_item_held_like_pistol(iVar4), fVar7 = extraout_f12_01, + fVar8 = extraout_f14_01, uVar2 == 0)) { + bVar1 = true; + bVar6 = iVar3 != 0; + } + else { + bVar1 = false; + bVar6 = iVar3 != 0; + } + } + else { + uVar5 = get_random_value(); + bVar1 = false; + bVar6 = (bool)((byte)uVar5 & 1); + fVar7 = extraout_f12; + fVar8 = extraout_f14; + } + if (bVar1) { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4018,bVar6,fVar7,0,fVar8); + } + else { + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x8204,bVar6,fVar7,0,fVar8); + } + return; +} + + + +void proc_7F0290F8(int param_1,int **param_2) + +{ + int *piVar1; + int iVar2; + u32 uVar4; + longlong lVar3; + float *pfVar5; + int iVar6; + int iVar7; + float fVar8; + float fVar9; + + piVar1 = *param_2; + iVar2 = *(int *)(param_1 + 0x18); + iVar6 = 0; + iVar7 = -1; + if (-1 < *piVar1) { + iVar7 = 0; + while( true ) { + pfVar5 = (float *)(ptr_0xxxpresets + + *(int *)(ptr_setup_path_tbl + *(int *)((int)piVar1 + iVar7) * 0x10) * + 0x2c); + if ((((pfVar5[10] != 0.00000000) && (*(float *)(iVar2 + 0x14) == pfVar5[10])) && + (fVar8 = *pfVar5 - *(float *)(iVar2 + 8), + fVar9 = pfVar5[2] - *(float *)(iVar2 + 0x10), iVar7 = iVar6, + fVar8 * fVar8 + fVar9 * fVar9 < flt_80051DF8)) || + (iVar6 += 1, iVar7 = -1, piVar1[iVar6] < 0)) break; + iVar7 = iVar6 * 4; + } + } + if (iVar7 < 0) { + iVar7 = 0; + } + proc_7F02D184(param_1); + *(undefined *)(param_1 + 7) = 0xe; + *(undefined4 *)(param_1 + 0x34) = 1; + *(int *)(param_1 + 0x30) = iVar7; + *(int ***)(param_1 + 0x2c) = param_2; + uVar4 = get_random_value(); + *(uint *)(param_1 + 0x60) = uVar4 % 100; + *(undefined *)(param_1 + 0x3b) = 0; + *(undefined4 *)(param_1 + 0x78) = 0xffffffff; + *(undefined4 *)(param_1 + 0x7c) = 0; + proc_7F028494(param_1); + *(undefined *)(param_1 + 8) = 0; + proc_7F028FAC(param_1); + pfVar5 = (float *)proc_7F028474(param_1); + lVar3 = (longlong)(int)pfVar5; + if (((*(byte *)(*(int *)(param_1 + 0x18) + 1) & 2) == 0) && + (proc_7F027E70(param_1,pfVar5), lVar3 != 0)) { + proc_7F027E90(param_1,(undefined *)(param_1 + 0x38),pfVar5); + } + return; +} + + + +void proc_7F029298(int param_1) + +{ + *(undefined4 *)(param_1 + 0xe8) = global_timer; + return; +} + + + +undefined4 proc_7F0292A8(short *param_1,undefined4 *param_2,int param_3) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f14; + f32 extraout_f14_00; + u32 uStack16; + u32 uStack12; + uint uStack8; + undefined4 uStack4; + + uStack4 = 0; + uStack8 = 1; + if (*(char *)((int)param_1 + 7) == '\b') { + uStack8 = *(uint *)(param_1 + 0x26); + } + if ((uStack8 & 2) == 0) { + uStack12 = param_3; + proc_7F032C78(param_1,(longlong)(int)uStack8,(longlong)*(int *)(param_1 + 0x28),&uStack16); + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + if ((uStack8 & 1) == 0) { + if ((uStack8 & 4) == 0) { + if ((((uStack8 & 8) != 0) && + (iVar1 = proc_7F0B0E24(&uStack12,extraout_f12,extraout_f14,(f32)*param_2), + iVar1 != 0)) && (uStack12 == uStack16)) { + uStack4 = 1; + } + } + else { + iVar1 = proc_7F0B0E24(&uStack12,extraout_f12,extraout_f14,(f32)*param_2); + if ((iVar1 != 0) && (uStack12 == uStack16)) { + uStack4 = 1; + } + } + } + else { + proc_7F08A03C(pPlayer->position_data_pointer,0); + iVar1 = get_invisible_to_guards_flag(); + if (((iVar1 != 0) && + (iVar1 = proc_7F0B0E24(&uStack12,extraout_f12_00,extraout_f14_00,(f32)*param_2), + iVar1 != 0)) && (uStack12 == uStack16)) { + proc_7F029298((int)param_1); + uStack4 = 1; + } + proc_7F08A03C(pPlayer->position_data_pointer,1); + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + } + else { + uStack4 = 1; + } + return uStack4; +} + + + +undefined4 proc_7F0294BC(int param_1) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f14; + u32 uStack16; + int iStack12; + int iStack8; + undefined4 uStack4; + + uStack4 = 0; + iVar1 = get_invisible_to_guards_flag(); + if (iVar1 != 0) { + iStack8 = *(int *)(param_1 + 0x18); + iStack12 = get_curplayer_positiondata(); + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + proc_7F08A03C(pPlayer->position_data_pointer,0); + uStack16 = *(u32 *)(iStack8 + 0x14); + iVar1 = proc_7F0B0E24(&uStack16,extraout_f12,extraout_f14,*(f32 *)(iStack8 + 8)); + if ((iVar1 != 0) && (uStack16 == *(u32 *)(iStack12 + 0x14))) { + proc_7F029298(param_1); + uStack4 = 1; + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + proc_7F08A03C(pPlayer->position_data_pointer,1); + } + return uStack4; +} + + + +undefined4 proc_7F0295D0(int param_1,undefined4 *param_2,int param_3) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f14; + undefined4 uStack16; + u32 uStack8; + int iStack4; + + iStack4 = *(int *)(param_1 + 0x18); + uStack16 = 0; + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + uStack8 = *(u32 *)(iStack4 + 0x14); + iVar1 = proc_7F0B0E24(&uStack8,extraout_f12,extraout_f14,*(f32 *)(iStack4 + 8)); + if ((iVar1 != 0) && (uStack8 == param_3)) { + uStack16 = 1; + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + return uStack16; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 proc_7F02969C(void) + +{ + undefined4 uVar1; + int in_a0_lo; + float *in_a1_lo; + int in_a2_lo; + undefined4 in_a3_lo; + float in_f0; + float fVar2; + float fVar3; + + getsubroty(*(int *)(in_a0_lo + 0x1c),(uint)in_a1_lo,in_a2_lo,in_a3_lo); + fVar2 = convert_angle_using_inverse + ((f32)(*in_a1_lo - *(float *)(*(int *)(in_a0_lo + 0x18) + 8)), + (f32)(in_a1_lo[2] - *(float *)(*(int *)(in_a0_lo + 0x18) + 0x10))); + fVar3 = fVar2 - in_f0; + if (fVar2 < in_f0) { + fVar3 = fVar3 + flt_80051DFC; + } + if ((fVar3 < flt_80051E00) || (uVar1 = 0, flt_80051E04 < fVar3)) { + uVar1 = proc_7F0295D0(in_a0_lo,in_a1_lo,in_a2_lo); + } + return uVar1; +} + + + +undefined4 proc_7F029760(int param_1) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f14; + undefined4 uStack16; + u32 uStack12; + int iStack8; + int iStack4; + + iStack4 = *(int *)(param_1 + 0x18); + iStack8 = get_curplayer_positiondata(); + uStack16 = 0; + proc_7F08A03C(pPlayer->position_data_pointer,0); + uStack12 = *(u32 *)(iStack8 + 0x14); + iVar1 = proc_7F0B0E24(&uStack12,extraout_f12,extraout_f14,*(f32 *)(iStack8 + 8)); + if ((iVar1 != 0) && (uStack12 == *(u32 *)(iStack4 + 0x14))) { + uStack16 = 1; + } + proc_7F08A03C(pPlayer->position_data_pointer,1); + return uStack16; +} + + + +undefined4 proc_7F02982C(int param_1,float *param_2,float *param_3) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f12_01; + f32 extraout_f12_02; + f32 extraout_f14; + f32 extraout_f14_00; + f32 extraout_f14_01; + f32 extraout_f14_02; + float fVar2; + float fVar3; + undefined4 uStack48; + undefined4 uStack44; + float fStack40; + undefined4 uStack36; + u32 uStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + GUARDdata *pGStack4; + + pGStack4 = *(GUARDdata **)(param_1 + 4); + uStack36 = 0; + fVar2 = *param_3 * (float)pGStack4->chrwidth * flt_80051E08; + fVar3 = param_3[2] * (float)pGStack4->chrwidth * flt_80051E08; + proc_7F023160(param_1,&uStack48,&fStack40,&uStack44); + set_or_unset_GUARDdata_flag(pGStack4,0); + fStack8 = *(float *)(param_1 + 8) + fVar3; + fStack12 = *(float *)(param_1 + 0x10) - fVar2; + fStack16 = *param_2 + fVar3 + fVar2; + fStack20 = (param_2[2] - fVar2) + fVar3; + uStack24 = *(u32 *)(param_1 + 0x14); + iVar1 = proc_7F0B0E24(&uStack24,extraout_f12,extraout_f14,*(f32 *)(param_1 + 8)); + if (iVar1 != 0) { + iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)fStack8); + if (iVar1 != 0) { + fStack8 = *(float *)(param_1 + 8) - fVar3; + fStack16 = (*param_2 - fVar3) + fVar2; + fStack12 = *(float *)(param_1 + 0x10) + fVar2; + fStack20 = param_2[2] + fVar2 + fVar3; + uStack24 = *(u32 *)(param_1 + 0x14); + iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_01,extraout_f14_01,*(f32 *)(param_1 + 8)); + if (iVar1 != 0) { + iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_02,extraout_f14_02,(f32)fStack8); + if (iVar1 != 0) { + uStack36 = 1; + } + } + } + } + set_or_unset_GUARDdata_flag(pGStack4,1); + return uStack36; +} + + + +undefined4 proc_7F029A94(int param_1,float *param_2,float param_3) + +{ + undefined4 uVar1; + float in_a2_lo; + float fStack12; + undefined4 uStack8; + float fStack4; + + fStack12 = *param_2 * in_a2_lo + *(float *)(param_1 + 8); + uStack8 = *(undefined4 *)(param_1 + 0xc); + fStack4 = param_2[2] * in_a2_lo + *(float *)(param_1 + 0x10); + uVar1 = proc_7F02982C(param_1,&fStack12,param_2); + return uVar1; +} + + + +undefined4 proc_7F029AF0(int param_1,float *param_2) + +{ + undefined4 uVar1; + float fVar2; + float fStack12; + undefined4 uStack8; + float fStack4; + + fStack12 = *param_2 - *(float *)(param_1 + 8); + uStack8 = 0; + fStack4 = param_2[2] - *(float *)(param_1 + 0x10); + if ((fStack12 == 0.00000000) && (fStack4 == 0.00000000)) { + uVar1 = 1; + } + else { + fVar2 = sqrtf(fStack4 * fStack4 + fStack12 * fStack12); + fStack12 = fStack12 * (1.00000000 / fVar2); + fStack4 = fStack4 * (1.00000000 / fVar2); + uVar1 = proc_7F02982C(param_1,param_2,&fStack12); + } + return uVar1; +} + + + +void proc_7F029BB0(int param_1) + +{ + int iVar1; + + iVar1 = get_curplayer_positiondata(); + *(undefined4 *)(param_1 + 0xd4) = global_timer; + *(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 0xdc) = *(undefined4 *)(iVar1 + 0xc); + *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(iVar1 + 0x10); + *(undefined4 *)(param_1 + 0xe4) = *(undefined4 *)(iVar1 + 0x14); + return; +} + + + +void proc_7F029C00(int param_1) + +{ + int iVar1; + + iVar1 = get_curplayer_positiondata(); + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 2; + *(undefined4 *)(param_1 + 0xf0) = global_timer; + *(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 0xdc) = *(undefined4 *)(iVar1 + 0xc); + *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(iVar1 + 0x10); + *(undefined4 *)(param_1 + 0xe4) = *(undefined4 *)(iVar1 + 0x14); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F029C5C(void) + +{ + char cVar1; + bool bVar2; + int in_a0_lo; + float in_f0; + float fVar3; + + cVar1 = *(char *)(in_a0_lo + 7); + if (((cVar1 == '\x01') && (*(int *)(in_a0_lo + 0x2c) == 0)) && (*(int *)(in_a0_lo + 0x38) == 0)) + { + return 1; + } + if (cVar1 != '\x03') { + if (cVar1 == '\x0e') { + return 1; + } + return 0; + } + if (*(int *)(in_a0_lo + 0x34) == 0) { + proc_7F06F610(*(int *)(in_a0_lo + 0x1c)); + if (0.00000000 <= in_f0) { + proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); + fVar3 = proc_7F06F5C4(*(int *)(in_a0_lo + 0x1c)); + bVar2 = fVar3 <= in_f0; + in_f0 = fVar3; + if (bVar2) { + return 1; + } + } + proc_7F06F610(*(int *)(in_a0_lo + 0x1c)); + if (0.00000000 <= in_f0) { + return 0; + } + proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); + if (0.00000000 < in_f0) { + return 0; + } + } + return 1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +ulonglong proc_7F029D70(void) + +{ + int iVar2; + longlong lVar1; + u32 uVar3; + int iVar4; + ulonglong uVar5; + int in_a0_lo; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float in_f0; + float __x; + float fVar6; + float vector1; + float fVar7; + float vector2; + + iVar4 = *(int *)(in_a0_lo + 0x18); + iVar2 = get_curplayer_positiondata(); + getsubroty(*(int *)(in_a0_lo + 0x1c),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + vector1 = *(float *)(iVar2 + 8) - *(float *)(iVar4 + 8); + fVar6 = *(float *)(iVar2 + 0xc) - *(float *)(iVar4 + 0xc); + vector2 = *(float *)(iVar2 + 0x10) - *(float *)(iVar4 + 0x10); + __x = convert_angle_using_inverse((f32)vector1,(f32)vector2); + fVar7 = __x - in_f0; + if (__x < in_f0) { + fVar7 = fVar7 + flt_80051E0C; + } + lVar1 = proc_7F032B68(in_a0_lo); + uVar5 = 0; + if (lVar1 == 0) { + __x = vector1 * vector1 + fVar6 * fVar6 + vector2 * vector2; + if (((__x < *(float *)(in_a0_lo + 0xd0) * *(float *)(in_a0_lo + 0xd0) * 100.00000000 * + 100.00000000) && ((fVar7 < flt_80051E10 || (flt_80051E14 < fVar7)))) || + ((__x < flt_80051E18 && ((fVar7 < flt_80051E1C || (flt_80051E20 < fVar7)))))) { + fVar7 = square_near_fog_value(); + uVar5 = 0; + if (__x < fVar7) { + sqrtf(__x); + iVar4 = proc_7F023BC0(); + uVar3 = get_random_value(); + uVar5 = (ulonglong)(uVar3 % (iVar4 + 1U) == 0); + if (iVar4 + 1U == 0) { + trap(0x1c00); + } + } + } + } + else { + uVar5 = 1; + } + if (uVar5 != 0) { + iVar4 = proc_7F0294BC(in_a0_lo); + uVar5 = SEXT48(iVar4); + } + if (uVar5 != 0) { + proc_7F029BB0(in_a0_lo); + uVar5 = SEXT48((int)uVar5); + } + return uVar5; +} + + + +void proc_7F02A044(int param_1,int param_2,float *param_3) + +{ + int iVar1; + int iVar2; + float fVar3; + float fVar4; + float fVar5; + + iVar1 = *(int *)(param_1 + 0x18); + iVar2 = get_curplayer_positiondata(); + fVar4 = *(float *)(iVar2 + 8) - *(float *)(iVar1 + 8); + fVar5 = *(float *)(iVar2 + 0x10) - *(float *)(iVar1 + 0x10); + fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); + if (param_2 == 0) { + param_3[2] = fVar4 / fVar3; + *param_3 = -(fVar5 / fVar3); + param_3[1] = 0.00000000; + } + else { + *param_3 = fVar5 / fVar3; + param_3[2] = -(fVar4 / fVar3); + param_3[1] = 0.00000000; + } + return; +} + + + +undefined4 proc_7F02A0EC(int param_1,int param_2,float param_3) + +{ + undefined4 uVar1; + float in_a2_lo; + float fStack28; + undefined4 uStack24; + float fStack20; + float afStack16 [2]; + float fStack8; + int iStack4; + + iStack4 = *(int *)(param_1 + 0x18); + proc_7F02A044(param_1,param_2,afStack16); + fStack28 = afStack16[0] * in_a2_lo + *(float *)(iStack4 + 8); + uStack24 = *(undefined4 *)(iStack4 + 0xc); + fStack20 = fStack8 * in_a2_lo + *(float *)(iStack4 + 0x10); + uVar1 = proc_7F02982C(iStack4,&fStack28,afStack16); + return uVar1; +} + + + +void proc_7F02A15C(int param_1,uint param_2,float *param_3,undefined4 param_4) + +{ + float in_f0; + float fVar1; + + getsubroty(*(int *)(param_1 + 0x1c),param_2,param_3,param_4); + if (param_2 == 0) { + fVar1 = cosf(in_f0); + *param_3 = -fVar1; + param_3[1] = 0.00000000; + fVar1 = sinf(in_f0); + param_3[2] = fVar1; + } + else { + fVar1 = cosf(in_f0); + *param_3 = fVar1; + param_3[1] = 0.00000000; + fVar1 = sinf(in_f0); + param_3[2] = -fVar1; + } + return; +} + + + +undefined4 proc_7F02A1E8(int param_1,uint param_2,float param_3) + +{ + undefined4 uVar1; + float in_a2_lo; + float fStack28; + undefined4 uStack24; + float fStack20; + float afStack16 [2]; + float fStack8; + int iStack4; + + iStack4 = *(int *)(param_1 + 0x18); + proc_7F02A15C(param_1,param_2,afStack16,iStack4); + fStack28 = afStack16[0] * in_a2_lo + *(float *)(iStack4 + 8); + uStack24 = *(undefined4 *)(iStack4 + 0xc); + fStack20 = fStack8 * in_a2_lo + *(float *)(iStack4 + 0x10); + uVar1 = proc_7F02982C(iStack4,&fStack28,afStack16); + return uVar1; +} + + + +undefined8 true_if_actor_is_dying_fading_limping_shot(GUARDdata *actor) + +{ + guard_action_type gVar1; + + gVar1 = actor->actiontype; + if ((((gVar1 != dying) && (gVar1 != fade_away)) && (gVar1 != limping)) && + ((gVar1 != gettingshot || ((actor->guard_bitflags & 0x200U) != 0)))) { + return 1; + } + return 0; +} + + + +s32 true_if_actor_dying_fading(GUARDdata *chr) + +{ + return (s32)(uint)(chr->actiontype == dying || chr->actiontype == fade_away); +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F02A2C8(void) + +{ + bool bVar1; + longlong lVar2; + int iVar4; + u32 uVar5; + int iVar6; + undefined8 uVar3; + GUARDdata *in_a0_lo; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float in_f0; + float fVar7; + float fVar8; + float extraout_f12; + float extraout_f12_00; + + lVar2 = true_if_actor_is_dying_fading_limping_shot(in_a0_lo); + if (lVar2 == 0) { + return 0; + } + iVar6 = in_a0_lo->POSdata_pointer; + iVar4 = get_curplayer_positiondata(); + getsubroty(in_a0_lo->MODELdata_pointer,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + fVar7 = convert_angle_using_inverse + ((f32)(*(float *)(iVar4 + 8) - *(float *)(iVar6 + 8)), + (f32)(*(float *)(iVar4 + 0x10) - *(float *)(iVar6 + 0x10))); + fVar8 = fVar7 - in_f0; + if (fVar7 < in_f0) { + fVar8 = fVar8 + flt_80051E38; + } + if ((flt_80051E3C <= fVar8) && (fVar8 <= flt_80051E40)) { + if (fVar8 <= flt_80051E44) { + return 0; + } + if (flt_80051E48 <= fVar8) { + return 0; + } + } + uVar5 = get_random_value(); + bVar1 = (uVar5 & 1) == 0; + iVar6 = proc_7F02A1E8((int)in_a0_lo,(uint)bVar1,extraout_f12); + if (iVar6 == 0) { + iVar6 = proc_7F02A1E8((int)in_a0_lo,(uint)!bVar1,extraout_f12_00); + if (iVar6 == 0) { + uVar3 = 0; + } + else { + proc_7F024800(); + uVar3 = 1; + } + } + else { + proc_7F024800(); + uVar3 = 1; + } + return uVar3; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F02A428(void) + +{ + bool bVar1; + longlong lVar2; + int iVar4; + u32 uVar5; + int iVar6; + undefined8 uVar3; + GUARDdata *in_a0_lo; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float in_f0; + float fVar7; + float fVar8; + float extraout_f12; + float extraout_f12_00; + + lVar2 = true_if_actor_is_dying_fading_limping_shot(in_a0_lo); + if (lVar2 == 0) { + return 0; + } + iVar6 = in_a0_lo->POSdata_pointer; + iVar4 = get_curplayer_positiondata(); + getsubroty(in_a0_lo->MODELdata_pointer,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + fVar7 = convert_angle_using_inverse + ((f32)(*(float *)(iVar4 + 8) - *(float *)(iVar6 + 8)), + (f32)(*(float *)(iVar4 + 0x10) - *(float *)(iVar6 + 0x10))); + fVar8 = fVar7 - in_f0; + if (fVar7 < in_f0) { + fVar8 = fVar8 + flt_80051E4C; + } + if ((flt_80051E50 <= fVar8) && (fVar8 <= flt_80051E54)) { + if (fVar8 <= flt_80051E58) { + return 0; + } + if (flt_80051E5C <= fVar8) { + return 0; + } + } + uVar5 = get_random_value(); + bVar1 = (uVar5 & 1) == 0; + iVar6 = proc_7F02A1E8((int)in_a0_lo,(uint)bVar1,extraout_f12); + if (iVar6 == 0) { + iVar6 = proc_7F02A1E8((int)in_a0_lo,(uint)!bVar1,extraout_f12_00); + if (iVar6 == 0) { + uVar3 = 0; + } + else { + proc_7F024A84(); + uVar3 = 1; + } + } + else { + proc_7F024A84(); + uVar3 = 1; + } + return uVar3; +} + + + +undefined8 proc_7F02A588(int param_1) + +{ + longlong lVar1; + u32 uVar2; + int iVar3; + int iVar4; + float fVar5; + float fStack32; + undefined4 uStack28; + float fStack24; + float afStack20 [2]; + float fStack12; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + if (global_timer - *(int *)(param_1 + 200) < 0xb5) { + return 0; + } + iVar4 = *(int *)(param_1 + 0x18); + uVar2 = get_random_value(); + fVar5 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fVar5 = fVar5 * 0.00000000 * 200.00000000 + 200.00000000; + uVar2 = get_random_value(); + proc_7F02A044(param_1,(uint)((uVar2 & 1) == 0),afStack20); + fStack32 = afStack20[0] * fVar5 + *(float *)(iVar4 + 8); + uStack28 = *(undefined4 *)(iVar4 + 0xc); + fStack24 = fStack12 * fVar5 + *(float *)(iVar4 + 0x10); + iVar3 = proc_7F02982C(iVar4,&fStack32,afStack20); + if (iVar3 != 0) { + proc_7F024CF8(param_1,&fStack32); + return 1; + } + afStack20[0] = -afStack20[0]; + fStack12 = -fStack12; + fStack32 = afStack20[0] * fVar5 + *(float *)(iVar4 + 8); + uStack28 = *(undefined4 *)(iVar4 + 0xc); + fStack24 = fStack12 * fVar5 + *(float *)(iVar4 + 0x10); + iVar4 = proc_7F02982C(iVar4,&fStack32,afStack20); + if (iVar4 != 0) { + proc_7F024CF8(param_1,&fStack32); + return 1; + } + } + return 0; +} + + + +undefined8 proc_7F02A704(int param_1) + +{ + int iVar1; + longlong lVar2; + undefined8 uVar3; + int iVar4; + int iVar5; + float fVar6; + float fVar7; + float fVar8; + + lVar2 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar2 == 0) { + uVar3 = 0; + } + else { + iVar1 = *(int *)(param_1 + 0x18); + iVar4 = get_curplayer_positiondata(); + iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + if ((iVar5 == 0) && + (iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar5 == 0)) { + return 0; + } + if (global_timer - *(int *)(param_1 + 200) < 0xb5) { + uVar3 = 0; + } + else { + fVar6 = *(float *)(iVar4 + 8) - *(float *)(iVar1 + 8); + fVar7 = *(float *)(iVar4 + 0xc) - *(float *)(iVar1 + 0xc); + fVar8 = *(float *)(iVar4 + 0x10) - *(float *)(iVar1 + 0x10); + if (flt_80051E60 <= fVar6 * fVar6 + fVar7 * fVar7 + fVar8 * fVar8) { + proc_7F02587C(param_1,0); + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + } + return uVar3; +} + + + +undefined8 proc_7F02A7F8(int param_1) + +{ + int iVar1; + longlong lVar2; + undefined8 uVar3; + int iVar4; + int iVar5; + float fVar6; + float fVar7; + float fVar8; + + lVar2 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar2 == 0) { + uVar3 = 0; + } + else { + iVar1 = *(int *)(param_1 + 0x18); + iVar4 = get_curplayer_positiondata(); + iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + if ((iVar5 == 0) && + (iVar5 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar5 == 0)) { + return 0; + } + if (global_timer - *(int *)(param_1 + 200) < 0xb5) { + uVar3 = 0; + } + else { + fVar6 = *(float *)(iVar4 + 8) - *(float *)(iVar1 + 8); + fVar7 = *(float *)(iVar4 + 0xc) - *(float *)(iVar1 + 0xc); + fVar8 = *(float *)(iVar4 + 0x10) - *(float *)(iVar1 + 0x10); + if (flt_80051E64 <= fVar6 * fVar6 + fVar7 * fVar7 + fVar8 * fVar8) { + proc_7F02587C(param_1,1); + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + } + return uVar3; +} + + + +ulonglong proc_7F02A8EC(int param_1) + +{ + bool bVar1; + longlong lVar2; + int iVar3; + int iVar4; + u32 uVar5; + int iVar6; + float fVar7; + float fVar8; + float fVar9; + float extraout_f12; + float extraout_f12_00; + + lVar2 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar2 == 0) { + return 0; + } + iVar6 = *(int *)(param_1 + 0x18); + iVar3 = get_curplayer_positiondata(); + iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + if ((iVar4 != 0) || (iVar4 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar4 != 0)) { + fVar7 = *(float *)(iVar3 + 8) - *(float *)(iVar6 + 8); + fVar8 = *(float *)(iVar3 + 0xc) - *(float *)(iVar6 + 0xc); + fVar9 = *(float *)(iVar3 + 0x10) - *(float *)(iVar6 + 0x10); + if (fVar7 * fVar7 + fVar8 * fVar8 + fVar9 * fVar9 < flt_80051E68) { + return 0; + } + uVar5 = get_random_value(); + bVar1 = (uVar5 & 1) == 0; + iVar6 = proc_7F02A0EC(param_1,(uint)bVar1,extraout_f12); + if (iVar6 != 0) { + proc_7F025C40(); + return 1; + } + iVar6 = proc_7F02A0EC(param_1,(uint)!bVar1,extraout_f12_00); + if (iVar6 != 0) { + proc_7F025C40(); + return 1; + } + } + return 0; +} + + + +undefined8 proc_7F02AA1C(int param_1,uint param_2,undefined4 param_3) + +{ + longlong lVar1; + int iVar3; + undefined8 uVar2; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + if ((iVar3 == 0) && + (iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar3 == 0)) { + uVar2 = 0; + } + else { + proc_7F025560(param_1,param_2,param_3); + uVar2 = 1; + } + } + return uVar2; +} + + + +undefined8 proc_7F02AA88(int param_1,uint param_2,undefined4 param_3) + +{ + longlong lVar1; + int iVar3; + undefined8 uVar2; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,0); + if ((iVar3 == 0) && + (iVar3 = is_weapon_in_guarddata_hand((GUARDdata *)param_1,1), iVar3 == 0)) { + uVar2 = 0; + } + else { + proc_7F0256F0(param_1,param_2,param_3); + uVar2 = 1; + } + } + return uVar2; +} + + + +undefined8 proc_7F02AAF4(int param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + + uVar1 = 0; + if ((*(char *)(param_1 + 7) == '\b') && ((*(uint *)(param_1 + 0x4c) & 0x60) != 0)) { + *(undefined4 *)(param_1 + 0x4c) = param_2; + *(undefined4 *)(param_1 + 0x50) = param_3; + proc_7F024F8C(param_1); + uVar1 = 1; + } + return uVar1; +} + + + +undefined8 proc_7F02AB44(int param_1,undefined4 param_2,undefined4 param_3) + +{ + longlong lVar1; + undefined8 uVar2; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + if (*(char *)(param_1 + 7) != '\x01') { + proc_7F023CB8(); + } + uVar2 = 1; + *(undefined4 *)(param_1 + 0x30) = param_2; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x34) = param_3; + } + return uVar2; +} + + + +undefined8 proc_7F02ABB4(int param_1,longlong param_2,char param_3) + +{ + longlong lVar1; + short sVar2; + float *pfVar3; + float extraout_f12; + float extraout_f14; + float fStack20; + float fStack16; + float fStack12; + float afStack8 [2]; + + if ((-1 < param_2) && + (lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1), lVar1 != 0)) { + if (9 < (int)setting_007_5) { + return 0; + } + sVar2 = proc_7F032F94(param_1,(short)param_2); + lVar1 = (longlong)sVar2; + if (lVar1 < 10000) { + pfVar3 = (float *)(ptr_0xxxpresets + (int)sVar2 * 0x2c); + } + else { + pfVar3 = (float *)(ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000); + } + afStack8[0] = pfVar3[10]; + if (afStack8[0] != 0.00000000) { + if (0.50000000 <= pfVar3[4]) { + lVar1 = proc_7F028DDC(param_1,pfVar3,afStack8[0],param_3); + if (lVar1 == 0) { + return 0; + } + return 1; + } + fStack20 = pfVar3[3] * *(float *)(param_1 + 0x24) * flt_80051E6C + *pfVar3; + fStack16 = pfVar3[4] * *(float *)(param_1 + 0x24) * flt_80051E6C + pfVar3[1]; + fStack12 = pfVar3[5] * *(float *)(param_1 + 0x24) * flt_80051E6C + pfVar3[2]; + proc_7F0B0BE4((int *)afStack8,extraout_f12,extraout_f14,*pfVar3,pfVar3[2]); + if (lVar1 != 0) { + lVar1 = proc_7F028DDC(param_1,&fStack20,afStack8[0],param_3); + if (lVar1 == 0) { + return 0; + } + return 1; + } + } + } + return 0; +} + + + +undefined8 proc_7F02AD54(int param_1,longlong param_2) + +{ + longlong lVar1; + + if (param_2 != 0) { + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + proc_7F0290F8(param_1,(int **)param_2); + return 1; + } + } + return 0; +} + + + +// WARNING: Instruction at (ram,0x7f02afbc) overlaps instruction at (ram,0x7f02afb8) +// +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02AD98(void) + +{ + longlong lVar1; + ulonglong uVar2; + u32 uVar3; + float *pfVar4; + float *pfVar5; + int iVar6; + int *piVar7; + GUARDdata *in_a0_lo; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + int *piVar8; + int iVar9; + int iVar10; + uint uVar11; + int iVar12; + float in_f0; + float fVar13; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float fVar14; + float extraout_f14_02; + int aiStack108 [4]; + int iStack92; + int iStack88; + int iStack84; + int iStack80; + float fStack68; + float fStack64; + float afStack60 [8]; + float afStack28 [2]; + int iStack20; + int iStack16; + + if ('\0' < in_a0_lo->sleep) { + return; + } + if (in_a0_lo->bond_position != 0) { + proc_7F06F5BC(in_a0_lo->MODELdata_pointer); + fVar13 = proc_7F06F5C4(in_a0_lo->MODELdata_pointer); + if (fVar13 <= in_f0) { + proc_7F023948((int)in_a0_lo,extraout_f12); + in_a0_lo->bond_position = 0; + } + in_a0_lo->sleep = '\0'; + return; + } + if (in_a0_lo->field_30 < 1) { + uVar3 = get_random_value(); + in_a0_lo->sleep = (char)(uVar3 % 5) + '\x0e'; + if (in_a0_lo->field_40 == 0) { + return; + } + if ((in_a0_lo->guard_bitflags & 0x80U) != 0) { + in_a0_lo->field_40 = 0; + return; + } + iVar10 = in_a0_lo->field_44 - (int)in_a0_lo->sleep; + in_a0_lo->field_44 = iVar10; + if (-1 < iVar10) { + return; + } + getsubroty(in_a0_lo->MODELdata_pointer,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + fVar13 = flt_80051E78; + fVar14 = extraout_f14_01; + pfVar4 = afStack60; + fStack64 = in_f0; + do { + fStack68 = in_f0 + flt_80051E7C; + if (fVar13 <= fStack68) { + fStack68 = fStack68 - fVar13; + iVar10 = in_a0_lo->POSdata_pointer; + } + else { + iVar10 = in_a0_lo->POSdata_pointer; + } + fVar13 = proc_7F026364(iVar10,fVar13,fVar14,fStack68,0x447a0000,0); + pfVar5 = pfVar4 + 1; + *pfVar4 = fVar13; + in_f0 = fStack68; + fVar13 = flt_80051E80; + fVar14 = extraout_f14_02; + pfVar4 = pfVar5; + } while (pfVar5 < afStack28); + iVar10 = 0; + piVar8 = aiStack108; + do { + *piVar8 = iVar10; + iVar10 += 1; + piVar8 = piVar8 + 1; + } while (iVar10 < 8); + piVar8 = aiStack108; + iVar10 = 0; + do { + iVar9 = iVar10 + 1; + if (iVar9 < 8) { + uVar11 = 8U - iVar9 & 3; + iVar6 = iVar9; + if (uVar11 != 0) { + piVar7 = aiStack108 + iVar9; + do { + iVar12 = iVar6; + if (afStack60[aiStack108[iVar10]] <= afStack60[*piVar7]) { + iVar12 = iVar10; + } + iVar10 = iVar12; + iVar6 += 1; + piVar7 = piVar7 + 1; + } while (uVar11 + iVar9 != iVar6); + if (iVar6 == 8) goto LAB_7f02b2e8; + } + piVar7 = aiStack108 + iVar6; + do { + fVar13 = afStack60[aiStack108[iVar10]]; + if (afStack60[*piVar7] < fVar13) { + fVar13 = afStack60[aiStack108[iVar6]]; + iVar12 = piVar7[1]; + iVar10 = iVar6; + } + else { + iVar12 = piVar7[1]; + } + if (afStack60[iVar12] < fVar13) { + iVar10 = iVar6 + 1; + fVar13 = afStack60[aiStack108[iVar10]]; + iVar12 = piVar7[2]; + } + else { + iVar12 = piVar7[2]; + } + if (afStack60[iVar12] < fVar13) { + iVar10 = iVar6 + 2; + fVar13 = afStack60[aiStack108[iVar10]]; + iVar12 = piVar7[3]; + } + else { + iVar12 = piVar7[3]; + } + if (afStack60[iVar12] < fVar13) { + iVar10 = iVar6 + 3; + } + iVar6 += 4; + piVar7 = piVar7 + 4; + } while (iVar6 != 8); + } +LAB_7f02b2e8: + piVar7 = aiStack108 + iVar10; + iVar10 = *piVar8; + *piVar8 = *piVar7; + piVar8 = piVar8 + 1; + *piVar7 = iVar10; + iVar10 = iVar9; + if (6 < iVar9) { + iVar10 = -1; + fVar13 = flt_80051E80; + if (afStack60[0] < 490.00000000) { + if (afStack60[iStack92] < 200.00000000) { + iVar10 = 7; + } + else { + if (((aiStack108[0] == 0) || (aiStack108[1] == 0)) || (aiStack108[2] == 0)) + { + if (((aiStack108[3] == 4) || (iStack92 == 4)) && + (uVar3 = get_random_value(), uVar3 % 3 == 0)) { + fVar13 = flt_80051E84; + if (aiStack108[3] == 4) { + iVar10 = 3; + } + else { + iVar10 = 4; + } + } + else { + uVar3 = get_random_value(); + iVar10 = uVar3 % 3 + 5; + fVar13 = flt_80051E88; + } + } + else { + if (((aiStack108[0] == 1) || (aiStack108[0] == 7)) && + ((iStack88 != 0 && ((iStack84 != 0 && (iStack80 != 0)))))) { + uVar3 = get_random_value(); + iVar10 = uVar3 % 3 + 5; + fVar13 = flt_80051E8C; + } + } + } + } + if (iVar10 < 0) { + in_a0_lo->field_40 = 0; + return; + } + fStack64 = (float)aiStack108[iVar10] * fVar13 * 0.12500000 + fStack64; + if (fVar13 <= fStack64) { + fStack64 = fStack64 - fVar13; + } + proc_7F02AB44((int)in_a0_lo,0x10,(int)((fStack64 * 65536.00000000) / fVar13)); + return; + } + } while( true ); + } + if (*(int *)&in_a0_lo->field_38 == 0) { + fVar13 = (float)proc_7F0250BC(); + if (flt_80051E70 < fVar13) { + if (fVar13 < flt_80051E74) { + iStack16 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + iStack20 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + *(undefined4 *)&in_a0_lo->field_38 = 1; + in_a0_lo->path_target_position = 1; + if (((iStack16 == 0) || (iStack20 == 0)) && + (((iStack16 != 0 || (iStack20 != 0)) && + ((uVar2 = check_if_item_held_like_pistol(iStack16), uVar2 == 0 && + (uVar2 = check_if_item_held_like_pistol(iStack20), uVar2 == 0)))))) { + if ((iStack20 != 0) || (iStack16 != 0)) { + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x4018, + iStack16 != 0,extraout_f12_01,0,extraout_f14); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_04); + } + } + else { + uVar3 = get_random_value(); + proc_7F06FCA8(in_a0_lo->MODELdata_pointer,ptr_animation_table + 0x8204, + (byte)uVar3 & 1,extraout_f12_02,0,extraout_f14_00); + proc_7F06FDE8(in_a0_lo->MODELdata_pointer,extraout_f12_03); + } + goto LAB_7f02b054; + } + uVar11 = in_a0_lo->field_30; + } + else { + uVar11 = in_a0_lo->field_30; + } + if ((uVar11 & 0x10) != 0) { + in_a0_lo->field_30 = 0; + } + } + else { + proc_7F06F5AC(in_a0_lo->MODELdata_pointer); + lVar1 = proc_7F02C2B0(); + in_a0_lo->path_target_position = (int)lVar1; + if (lVar1 != 1) { + proc_7F023948((int)in_a0_lo,extraout_f12_00); + *(undefined4 *)&in_a0_lo->field_38 = 0; + if ((in_a0_lo->field_30 & 0x10U) != 0) { + in_a0_lo->field_30 = 0; + } + } + } +LAB_7f02b054: + in_a0_lo->sleep = '\0'; + return; +} + + + +void proc_7F02B4E0(int param_1) + +{ + *(undefined *)(param_1 + 8) = 0; + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02B4E8(void) + +{ + int iVar1; + u32 uVar2; + int in_a0_lo; + uint uVar3; + char cVar4; + float in_f0; + float fVar5; + + fVar5 = in_f0; + if (*(int *)(in_a0_lo + 0x30) == 0) { + proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); + fVar5 = proc_7F06F5C4(*(int *)(in_a0_lo + 0x1c)); + if (fVar5 <= in_f0) { + fVar5 = (float)proc_7F023CB8(); + } + } + iVar1 = proc_7F06F5AC(*(int *)(in_a0_lo + 0x1c)); + if (iVar1 == ptr_animation_table + 0xb9a8) { + iVar1 = proc_7F06F5BC(*(int *)(in_a0_lo + 0x1c)); + if (42.00000000 <= fVar5) { + if (*(int *)(in_a0_lo + 0x14) << 6 < 0) { + cVar4 = *(char *)(in_a0_lo + 8); + } + else { + if ((dword_80048380 & 1) == 0) { + proc_7F032DE4(in_a0_lo); + if (fVar5 < 800.00000000) { + play_sfx_a1(ptr_sfx_buf,0x101,NULL); + sub_GAME_7F053A10(iVar1,(float *)(*(int *)(in_a0_lo + 0x18) + 8)); + uVar3 = *(uint *)(in_a0_lo + 0x14); + } + else { + uVar3 = *(uint *)(in_a0_lo + 0x14); + } + } + else { + uVar3 = *(uint *)(in_a0_lo + 0x14); + } + *(uint *)(in_a0_lo + 0x14) = uVar3 | 0x2000000; + cVar4 = *(char *)(in_a0_lo + 8); + } + } + else { + cVar4 = *(char *)(in_a0_lo + 8); + } + } + else { + cVar4 = *(char *)(in_a0_lo + 8); + } + if ((cVar4 < '\x01') && (*(int *)(in_a0_lo + 0x38) != 0)) { + uVar2 = get_random_value(); + *(char *)(in_a0_lo + 8) = (char)(uVar2 % 5) + '\x0e'; + } + return; +} + + + +void proc_7F02B638(int param_1) + +{ + int iVar1; + u32 uVar2; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float in_f0; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float fStack16; + undefined4 uStack12; + float fStack8; + int iStack4; + + if (*(char *)(param_1 + 8) < '\x01') { + iStack4 = *(int *)(param_1 + 0x1c); + *(undefined *)(param_1 + 8) = 0x10; + iVar1 = proc_7F06F5AC(iStack4); + if ((iVar1 == ptr_animation_table + 0x4504) && + (proc_7F06F5BC(iStack4), 80.00000000 <= in_f0)) { + fStack16 = dword_80030A44; + uStack12 = dword_80030A48; + fStack8 = (float)dword_80030A4C; + getsubroty(iStack4,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + fStack16 = sinf(in_f0); + fStack16 = -fStack16; + fStack8 = cosf(in_f0); + fStack8 = -fStack8; + iVar1 = proc_7F029A94(*(int *)(param_1 + 0x18),&fStack16,extraout_f12); + if (iVar1 == 0) { + uVar2 = get_random_value(); + proc_7F06FCA8(*(int *)(param_1 + 0x1c),ptr_animation_table + 0x4384,(byte)uVar2 & 1, + extraout_f12_00,0x41f00000,extraout_f14); + proc_7F06FDCC(*(int *)(param_1 + 0x1c),0x41f00000,0x41800000); + } + } + } + return; +} + + + +void proc_7F02B774(int param_1) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x2c) < 0) { + *(undefined4 *)(param_1 + 0x2c) = 0; + return; + } + iVar1 = *(int *)(param_1 + 0x2c) + clock_timer; + *(int *)(param_1 + 0x2c) = iVar1; + if (0x59 < iVar1) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x20; + return; + } + iVar1 = (0x5a - iVar1) * 0xff; + *(undefined *)(param_1 + 0xc) = (char)(iVar1 / 0x5a); + if (false) { + trap(0x1c00); + } + if ((false) && (iVar1 == -0x80000000)) { + trap(0x1800); + } + return; +} + + + +void proc_7F02B800(undefined2 *param_1,longlong param_2) + +{ + int iVar1; + int iVar2; + bool bVar3; + float fVar4; + int iVar6; + longlong lVar5; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + float fVar11; + float fVar12; + float fVar13; + + iVar10 = 0; + iVar9 = 0; + iVar6 = get_numguards(); + fVar4 = flt_80051E90; + if (*(char *)((int)param_1 + 7) == '\x06') { + iVar10 = *(int *)(param_1 + 0x16); + } + else { + if (*(char *)((int)param_1 + 7) != '\x04') { + bVar3 = 0 < iVar6; + goto LAB_7f02b870; + } + iVar10 = *(int *)(param_1 + 0x16); + } + bVar3 = iVar10 < iVar6; +LAB_7f02b870: + if (bVar3) { + iVar8 = iVar10 * 0x1dc; + do { + iVar7 = (int)&ptr_guard_data->chrnum + iVar8; + if (*(int *)(iVar7 + 0x1c) != 0) { + iVar1 = *(int *)(iVar7 + 0x18); + iVar2 = *(int *)(param_1 + 0xc); + fVar11 = *(float *)(iVar1 + 8) - *(float *)(iVar2 + 8); + fVar12 = *(float *)(iVar1 + 0xc) - *(float *)(iVar2 + 0xc); + fVar13 = *(float *)(iVar1 + 0x10) - *(float *)(iVar2 + 0x10); + if (fVar11 * fVar11 + fVar12 * fVar12 + fVar13 * fVar13 < fVar4) { + iVar9 += 1; + lVar5 = proc_7F02969C(); + if (lVar5 != 0) { + if (param_2 == 0) { + *(undefined2 *)(iVar7 + 0x118) = *param_1; + } + else { + *(undefined2 *)(iVar7 + 0x11a) = *param_1; + } + } + } + } + iVar10 += 1; + iVar8 += 0x1dc; + } while ((iVar10 < iVar6) && (iVar9 < 4)); + } + if (*(char *)((int)param_1 + 7) == '\x06') { + *(int *)(param_1 + 0x16) = iVar10; + } + else { + if (*(char *)((int)param_1 + 7) == '\x04') { + *(int *)(param_1 + 0x16) = iVar10; + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02B9A4(void) + +{ + int iVar1; + int iVar3; + longlong lVar2; + undefined2 *in_a0_lo; + float in_f0; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float fVar4; + undefined4 uStack32; + undefined4 uStack28; + undefined4 uStack24; + undefined4 uStack20; + undefined4 uStack16; + s16 sStack12; + + iVar1 = *(int *)(in_a0_lo + 0xe); + uStack32 = body_hit_SFX._0_4_; + uStack24 = body_hit_SFX._8_4_; + uStack28 = body_hit_SFX._4_4_; + uStack16 = body_hit_SFX._16_4_; + uStack20 = body_hit_SFX._12_4_; + sStack12 = body_hit_SFX[10]; + if (0.00000000 <= *(float *)(in_a0_lo + 0x18)) { + proc_7F06F5BC(iVar1); + if (*(float *)(in_a0_lo + 0x18) <= in_f0) { + iVar3 = dword_80030A68; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack32 + dword_80030A68 * 2),NULL); + sub_GAME_7F053A10(iVar3,(float *)(*(int *)(in_a0_lo + 0xc) + 8)); + dword_80030A68 += 1; + if (10 < dword_80030A68) { + dword_80030A68 = 0; + } + *(undefined4 *)(in_a0_lo + 0x18) = 0xbf800000; + fVar4 = *(float *)(in_a0_lo + 0x1a); + } + else { + fVar4 = *(float *)(in_a0_lo + 0x1a); + } + } + else { + fVar4 = *(float *)(in_a0_lo + 0x1a); + } + if ((0.00000000 <= fVar4) && (proc_7F06F5BC(iVar1), *(float *)(in_a0_lo + 0x1a) <= in_f0)) { + iVar3 = dword_80030A68; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack32 + dword_80030A68 * 2),NULL); + sub_GAME_7F053A10(iVar3,(float *)(*(int *)(in_a0_lo + 0xc) + 8)); + dword_80030A68 += 1; + if (10 < dword_80030A68) { + dword_80030A68 = 0; + } + *(undefined4 *)(in_a0_lo + 0x1a) = 0xbf800000; + } + proc_7F06F5BC(iVar1); + fVar4 = proc_7F06F5C4(iVar1); + if (fVar4 <= in_f0) { + iVar3 = proc_7F06F5AC(iVar1); + if (iVar3 == ptr_animation_table + 0x540c) { + lVar2 = proc_7F06F5B4(iVar1); + proc_7F06FCA8(iVar1,ptr_animation_table + 0x5684,lVar2 == 0,extraout_f12,0x42480000, + extraout_f14); + proc_7F06FE4C(iVar1,0x3f000000,extraout_f12_00); + return; + } + proc_7F0247B8((int)in_a0_lo); + } + proc_7F02B800(in_a0_lo,1); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02BC80(void) + +{ + int iVar1; + undefined2 *in_a0_lo; + float in_f0; + float fVar2; + float extraout_f12; + + iVar1 = *(int *)(in_a0_lo + 0xe); + proc_7F06F5BC(iVar1); + fVar2 = proc_7F06F5C4(iVar1); + if (fVar2 <= in_f0) { + proc_7F029BB0((int)in_a0_lo); + iVar1 = proc_7F06F5AC(iVar1); + if (iVar1 == ptr_animation_table + 0x540c) { + proc_7F023E14((int)in_a0_lo,extraout_f12); + } + else { + proc_7F023E48((int)in_a0_lo); + } + } + proc_7F02B800(in_a0_lo,0); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02BD20(void) + +{ + int iVar1; + int in_a0_lo; + float in_f0; + float fVar2; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(iVar1); + fVar2 = proc_7F06F5C4(iVar1); + if (fVar2 <= in_f0) { + proc_7F026508(); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02BDA4(void) + +{ + int iVar1; + int in_a0_lo; + float in_f0; + float fVar2; + float extraout_f12; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(iVar1); + fVar2 = proc_7F06F5C4(iVar1); + if (fVar2 <= in_f0) { + proc_7F029BB0(in_a0_lo); + proc_7F023E14(in_a0_lo,extraout_f12); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02BE00(void) + +{ + int iVar1; + int in_a0_lo; + float in_f0; + float fVar2; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(iVar1); + fVar2 = proc_7F06F5C4(iVar1); + if (fVar2 <= in_f0) { + proc_7F029BB0(in_a0_lo); + proc_7F023E48(in_a0_lo); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02BE58(void) + +{ + int iVar1; + int in_a0_lo; + float in_f0; + float fVar2; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(iVar1); + fVar2 = proc_7F06F5C4(iVar1); + if (fVar2 <= in_f0) { + proc_7F023CB8(); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02BEA8(void) + +{ + int iVar1; + int in_a0_lo; + float in_f0; + float fVar2; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(iVar1); + if (60.00000000 <= in_f0) { + start_alarm(); + } + proc_7F06F5BC(iVar1); + fVar2 = proc_7F06F5C4(iVar1); + if (fVar2 <= in_f0) { + proc_7F023E48(in_a0_lo); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02BF24(void) + +{ + int iVar1; + int iVar2; + int in_a0_lo; + float in_f0; + float fVar3; + float extraout_f12; + float extraout_f12_00; + + iVar2 = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(iVar2); + fVar3 = proc_7F06F5C4(iVar2); + if (fVar3 <= in_f0) { + iVar1 = proc_7F06F5AC(iVar2); + if (iVar1 == ptr_animation_table + 0x4384) { + proc_7F023E14(in_a0_lo,extraout_f12); + } + else { + iVar2 = proc_7F06F5AC(iVar2); + if (iVar2 == ptr_animation_table + 0x5d10) { + proc_7F023E14(in_a0_lo,extraout_f12_00); + } + else { + proc_7F023E48(in_a0_lo); + } + } + } + return; +} + + + +void proc_7F02BFE4(int param_1,int param_2,int param_3) + +{ + bool bVar1; + int iVar5; + ulonglong uVar2; + ulonglong uVar3; + ulonglong uVar4; + ALLink_s *pAVar6; + ALSndPlayer *data; + + iVar5 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); + iVar5 = *(int *)(iVar5 + 4); + uVar2 = proc_7F05DFF0((int)*(char *)(iVar5 + 0x80)); + uVar3 = proc_7F05E014((int)*(char *)(iVar5 + 0x80)); + bVar1 = false; + if (param_3 != 0) { + if ((byte)uVar2 == 0) { + bVar1 = true; + } + else { + if (((*(ushort *)(param_1 + 0x12) & 0x80) == 0) && + (*(int *)(param_1 + param_2 * 4 + 0x178) < global_timer)) { + bVar1 = true; + } + } + } + if (bVar1) { + iVar5 = param_1 + param_2 * 8; + if (*(ALLink_s **)(iVar5 + 0x168) == NULL) { + pAVar6 = *(ALLink_s **)(iVar5 + 0x16c); + } + else { + uVar4 = sfxGetArg0Unk3F(*(ALLink_s **)(iVar5 + 0x168)); + if (uVar4 != 0) { + sfxDeactivate(*(int *)(iVar5 + 0x168)); + } + pAVar6 = *(ALLink_s **)(iVar5 + 0x16c); + } + if ((pAVar6 != NULL) && (uVar4 = sfxGetArg0Unk3F(pAVar6), uVar4 != 0)) { + sfxDeactivate(*(int *)(iVar5 + 0x16c)); + } + if ((short)uVar3 != 0) { + data = NULL; + if (*(int *)(iVar5 + 0x168) == 0) { + data = (ALSndPlayer *)(iVar5 + 0x168); + } + else { + if (*(int *)(iVar5 + 0x16c) == 0) { + data = (ALSndPlayer *)(iVar5 + 0x16c); + } + } + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,(short)uVar3,data); + sub_GAME_7F053A10((int)(data->node).next,(float *)(*(int *)(param_1 + 0x18) + 8)); + *(int *)(param_1 + param_2 * 4 + 0x178) = global_timer + (uint)(byte)uVar2; + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x80; + } + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +float proc_7F02C190(void) + +{ + bool bVar1; + char cVar2; + uint in_a0_lo; + undefined4 in_a2_lo; + undefined4 in_a3_lo; + float in_f0; + float fVar3; + + getsubroty(*(int *)(in_a0_lo + 0x1c),in_a0_lo,in_a2_lo,in_a3_lo); + in_f0 = in_f0 + *(float *)(in_a0_lo + 0x14c); + fVar3 = 0.00000000; + if (flt_80051E98 <= in_f0) { + in_f0 = in_f0 - flt_80051E98; +LAB_7f02c1f8: + cVar2 = *(char *)(in_a0_lo + 7); + } + else { + if (in_f0 < 0.00000000) { + in_f0 = in_f0 + flt_80051E98; + goto LAB_7f02c1f8; + } + cVar2 = *(char *)(in_a0_lo + 7); + } + if ((cVar2 == '\b') || (cVar2 == '\n')) { + fVar3 = *(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc); + } + else { + if (cVar2 != '\x19') { + bVar1 = true; + goto code_r0x7f02c240; + } + if (*(int *)(in_a0_lo + 0x2c) == 0) { + bVar1 = true; + goto code_r0x7f02c240; + } + fVar3 = *(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc); + } + bVar1 = fVar3 == 0.00000000; +code_r0x7f02c240: + if (!bVar1) { + if (*(char *)(*(int *)(in_a0_lo + 0x1c) + 0x24) != '\0') { + fVar3 = flt_80051E98 - fVar3; + } + in_f0 = in_f0 + fVar3; + if (flt_80051E98 <= in_f0) { + in_f0 = in_f0 - flt_80051E98; + } + } + return in_f0; +} + + + +float proc_7F02C27C(int param_1) + +{ + float fVar1; + + fVar1 = *(float *)(param_1 + 0x144) + *(float *)(param_1 + 0x148); + if (fVar1 < 0.00000000) { + fVar1 = fVar1 + flt_80051E9C; + } + return fVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 proc_7F02C2B0(void) + +{ + int objinst; + int in_a0_lo; + longlong in_a1; + uint extraout_a1_lo; + float in_a2_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a2_lo_02; + undefined4 uVar1; + float in_a3_lo; + undefined4 extraout_a3_lo; + float in_f0; + float fVar2; + float fVar3; + float fVar4; + undefined4 uStackX4; + float in_stack_00000010; + + uStackX4 = (undefined4)in_a1; + if (in_a1 != 2) { + objinst = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(objinst); + fVar3 = in_f0; + getsubroty(objinst,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + fVar4 = flt_80051EA0 * in_a3_lo * global_timer_delta * *(float *)(objinst + 0xa4); + if (*(char *)(in_a0_lo + 7) == '\b') { + fVar2 = (float)proc_7F0250BC(); + uVar1 = extraout_a2_lo_00; + } + else { + if (*(char *)(in_a0_lo + 7) == '\x01') { + fVar2 = (float)proc_7F0250BC(); + uVar1 = extraout_a2_lo_01; + } + else { + get_curplayer_positiondata(); + fVar2 = (float)proc_7F032BD8(); + uVar1 = extraout_a2_lo_02; + } + } + fVar2 = fVar2 - in_stack_00000010; + if (fVar2 < 0.00000000) { + fVar2 = fVar2 + flt_80051EA4; + } + if ((fVar2 < fVar4) || (flt_80051EA8 - fVar4 < fVar2)) { + fVar3 = fVar3 + fVar2; + if (flt_80051EA8 <= fVar3) { + fVar3 = fVar3 - flt_80051EA8; + } + setsubroty(objinst,fVar3,fVar3,uVar1); + uStackX4 = 3; + } + else { + if (flt_80051EAC <= fVar2) { + fVar3 = fVar3 - fVar4; + if (fVar3 < 0.00000000) { + fVar3 = fVar3 + flt_80051EA8; + } + setsubroty(objinst,fVar3,fVar3,uVar1); + } + else { + fVar3 = fVar3 + fVar4; + if (flt_80051EA8 <= fVar3) { + fVar3 = fVar3 - flt_80051EA8; + } + setsubroty(objinst,fVar3,fVar3,uVar1); + } + } + if (in_a2_lo <= in_f0) { + uStackX4 = 2; + } + } + return uStackX4; +} + + + +undefined4 proc_7F02C4C0(short *param_1,int param_2,int param_3,int param_4,float param_5) + +{ + ushort **ppuVar1; + ushort *puVar2; + bool bVar3; + int objinst; + u32 uVar4; + uint *puVar5; + float *pfVar6; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 uVar7; + uint uVar8; + uint uVar9; + float fVar10; + float vector2; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f12_09; + float extraout_f12_10; + float extraout_f12_11; + float in_stack_00000010; + float fStack292; + undefined4 uStack288; + float fStack284; + float fStack280; + undefined4 uStack276; + float fStack272; + float afStack268 [2]; + float fStack260; + float afStack256 [12]; + float fStack208; + float fStack204; + float fStack200; + float fStack188; + float fStack184; + float fStack180; + float *pfStack176; + float afStack172 [18]; + float fStack100; + float fStack96; + float fStack92; + int iStack88; + float fStack80; + float fStack72; + float fStack68; + float fStack64; + undefined4 uStack60; + float fStack56; + float *pfStack52; + int iStack48; + int iStack44; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + undefined4 uStack20; + int iStack16; + uint uStack12; + float fStack8; + float fStack4; + + uStack20 = 1; + fStack4 = 0.00000000; + uVar8 = 1; + objinst = 0; + if (*(char *)((int)param_1 + 7) == '\b') { + uVar8 = *(uint *)(param_1 + 0x26); + objinst = *(int *)(param_1 + 0x28); + } + else { + if (*(char *)((int)param_1 + 7) != '\x01') { + uVar9 = 0; + goto LAB_7f02c51c; + } + uVar8 = *(uint *)(param_1 + 0x18); + objinst = *(int *)(param_1 + 0x1a); + } + uVar9 = uVar8 & 2; +LAB_7f02c51c: + fStack8 = 0.00000000; + if (uVar9 == 0) { + fStack8 = 0.00000000; + iStack16 = objinst; + uStack12 = uVar8; + objinst = get_curplayer_positiondata(); + pfStack52 = (float *)(objinst + 8); + iStack44 = *(int *)(param_1 + 0xc); + uVar8 = uStack12 & 1; + fStack24 = *(float *)(objinst + 8) - *(float *)(iStack44 + 8); + fStack28 = *(float *)(objinst + 0xc) - *(float *)(iStack44 + 0xc); + fStack32 = *(float *)(objinst + 0x10) - *(float *)(iStack44 + 0x10); + vector2 = fStack24 * fStack24 + fStack28 * fStack28 + fStack32 * fStack32; + uVar7 = extraout_a3_lo; + fStack36 = vector2; + if (uVar8 == 0) { + iStack48 = 1; + } + else { + if ((uStack12 & 0x40) == 0) { + iStack48 = proc_7F0294BC((int)param_1); + uVar7 = extraout_a3_lo_00; + } + else { + iStack48 = 1; + } + } + if (uVar8 == 0) { + getsuboffset(*(int *)(param_1 + 0xe),&fStack72,param_1,uVar7); + pfStack52 = (float *)proc_7F032C78(param_1,(longlong)(int)uStack12,(longlong)iStack16, + &uStack60); + fStack24 = *pfStack52 - fStack72; + fStack28 = pfStack52[1] - fStack68; + fStack32 = pfStack52[2] - fStack64; + param_5 = extraout_f12_08; + } + else { + fStack56 = proc_7F089780((int)pPlayer); + if ((*(uint *)(param_1 + 10) & 0x20) == 0) { + if (flt_80051ED0 < vector2) { + uVar4 = get_random_value(); + if (uVar4 % 3 == 0) { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = fStack28 + + fStack56 * + (flt_80051ED8 + + flt_80051ED4 * vector2 * 0.00000000 * in_stack_00000010); + param_5 = extraout_f12_03; + } + else { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = fStack28 - + fStack56 * + (flt_80051EE0 + + flt_80051EDC * vector2 * 0.00000000 * in_stack_00000010); + param_5 = extraout_f12_04; + } + } + else { + if (*(float *)(iStack44 + 0xc) < pfStack52[1] - fStack56) { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = fStack28 - + fStack56 * + (flt_80051EE8 + + flt_80051EE4 * vector2 * 0.00000000 * in_stack_00000010); + param_5 = extraout_f12_05; + } + else { + if (pfStack52[1] - fStack56 * 0.50000000 < *(float *)(iStack44 + 0xc)) { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = fStack28 - + fStack56 * + (flt_80051EF0 + + flt_80051EEC * vector2 * 0.00000000 * in_stack_00000010); + param_5 = extraout_f12_06; + } + else { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = (vector2 * 0.00000000 * flt_80051EF4 * in_stack_00000010 - + flt_80051EF8) * fStack56; + param_5 = extraout_f12_07; + } + } + } + } + else { + if (vector2 < flt_80051EB0) { + if (*(float *)(iStack44 + 0xc) < pfStack52[1] - (fStack56 + fStack56)) { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = fStack28 - + fStack56 * + (flt_80051EB8 + + flt_80051EB4 * vector2 * 0.00000000 * in_stack_00000010); + param_5 = extraout_f12; + } + else { + if (pfStack52[1] - fStack56 * 0.50000000 < *(float *)(iStack44 + 0xc)) { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = fStack28 - + fStack56 * + (flt_80051EC0 + + flt_80051EBC * vector2 * 0.00000000 * in_stack_00000010); + param_5 = extraout_f12_00; + } + else { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = (vector2 * 0.00000000 * flt_80051EC4 * in_stack_00000010 + + 1.00000000) * 40.00000000; + param_5 = extraout_f12_01; + } + } + } + else { + uVar4 = get_random_value(); + vector2 = (float)uVar4; + if ((int)uVar4 < 0) { + vector2 = vector2 + 4294967296.00000000; + } + fStack28 = fStack28 + + fStack56 * + (flt_80051ECC - + flt_80051EC8 * vector2 * 0.00000000 * in_stack_00000010); + param_5 = extraout_f12_02; + } + } + } + if ((uStack12 & 0x100) == 0) { + vector2 = sqrtf(fStack24 * fStack24 + fStack32 * fStack32); + fStack4 = convert_angle_using_inverse((f32)fStack28,(f32)vector2); + param_5 = extraout_f12_09; + if (flt_80051EFC <= fStack4) { + fStack4 = fStack4 - flt_80051F00; + } + } + if (iStack48 != 0) { + fStack80 = (float)proc_7F02C190(); + if (param_4 == 0) { + objinst = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,1); + } + else { + objinst = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,0); + } + if (((objinst != 0) && ((*(byte *)(objinst + 1) & 2) != 0)) && (fStack36 < flt_80051F04) + ) { + bVar3 = false; + objinst = *(int *)(*(int *)(objinst + 4) + 0x14); + ppuVar1 = *(ushort ***)(*(int *)(objinst + 8) + 8); + puVar2 = *ppuVar1; + if (puVar2 == NULL) { + puVar2 = ppuVar1[1]; + if (puVar2 != NULL) { + puVar5 = (uint *)proc_7F06C660(objinst,puVar2,0); + proc_7F058E78(puVar5,(int)afStack256); + pfVar6 = (float *)get_BONDdata_field_10EC(); + sub_GAME_7F058098(pfVar6,afStack256); + bVar3 = true; + fStack100 = fStack208; + fStack96 = fStack204; + fStack92 = fStack200; + } + } + else { + iStack88 = objinst; + puVar5 = (uint *)proc_7F06C660(objinst,puVar2,0); + pfStack176 = *(float **)(**(int **)(*(int *)(iStack88 + 8) + 8) + 4); + proc_7F058E78(puVar5,(int)afStack172); + pfVar6 = (float *)get_BONDdata_field_10EC(); + sub_GAME_7F058098(pfVar6,afStack172); + fStack188 = *pfStack176; + fStack184 = pfStack176[1]; + fStack180 = pfStack176[2]; + proc_7F058474(afStack172,&fStack188); + bVar3 = true; + fStack100 = fStack188; + fStack96 = fStack184; + fStack92 = fStack180; + } + if (bVar3) { + fStack280 = sinf(fStack80); + uStack276 = 0; + fStack272 = cosf(fStack80); + fStack292 = *(float *)(iStack44 + 8) - fStack32; + uStack288 = *(undefined4 *)(iStack44 + 0xc); + fStack284 = *(float *)(iStack44 + 0x10) + fStack24; + proc_7F026130((float *)(iStack44 + 8),&fStack292,&fStack100,&fStack280, + afStack268); + fStack24 = *pfStack52 - afStack268[0]; + fStack32 = pfStack52[2] - fStack260; + } + } + vector2 = convert_angle_using_inverse((f32)fStack24,(f32)fStack32); + fStack8 = vector2 - fStack80; + if (vector2 < fStack80) { + fStack8 = fStack8 + flt_80051F08; + } + objinst = extract_id_from_object_structure_microcode + (*(int *)(param_1 + 0xe),**(ushort ***)(*(int *)(param_1 + 0xe) + 8) + ); + if (0.00000000 < *(float *)(objinst + 0x5c)) { + fStack8 = fStack8 - *(float *)(objinst + 0x5c) * *(float *)(objinst + 0x58); + if (fStack8 < 0.00000000) { + fStack8 = fStack8 + flt_80051F0C; + } + if (flt_80051F10 <= fStack8) { + fStack8 = fStack8 - flt_80051F10; + } + } + param_5 = extraout_f12_10; + if ((uVar8 != 0) && ((uStack12 & 0x60) == 0)) { + fVar10 = sinf(((float)(((int)((float)global_timer * + *(float *)(*(int *)(param_1 + 0xe) + 0xa4)) + + (int)*param_1) % 0x3c) * flt_80051F14) / 60.00000000); + vector2 = fVar10; + proc_7F02D244(fStack36); + fStack8 = fStack8 + vector2 * 0.50000000 * fVar10; + if (fStack8 < 0.00000000) { + fStack8 = fStack8 + flt_80051F18; + } + param_5 = extraout_f12_11; + if (flt_80051F1C <= fStack8) { + fStack8 = fStack8 - flt_80051F20; + } + } + if (flt_80051F28 <= fStack8) { + fStack8 = fStack8 - flt_80051F24; + objinst = *(int *)(param_1 + 0xe); + } + else { + objinst = *(int *)(param_1 + 0xe); + } + vector2 = fStack8 + *(float *)(param_1 + 0xa6); + if (*(char *)(objinst + 0x24) == '\0') { + if (*(float *)(param_2 + 0x38) < vector2) { + uStack20 = 0; + fStack8 = *(float *)(param_2 + 0x38); + } + else { + fStack8 = vector2; + if (vector2 < *(float *)(param_2 + 0x3c)) { + uStack20 = 0; + fStack8 = *(float *)(param_2 + 0x3c); + } + } + } + else { + fStack8 = -*(float *)(param_2 + 0x38); + if (vector2 < fStack8) { + uStack20 = 0; + } + else { + fStack8 = vector2; + if (-*(float *)(param_2 + 0x3c) < vector2) { + uStack20 = 0; + fStack8 = -*(float *)(param_2 + 0x3c); + } + } + } + } + } + proc_7F02D048((int)param_1,param_2,(longlong)param_3,(longlong)param_4,param_5); + *(undefined *)(param_1 + 7) = 10; + *(float *)(param_1 + 0xae) = fStack8; + return uStack20; +} + + + +void proc_7F02D048(int param_1,int param_2,longlong param_3,longlong param_4,float param_5) + +{ + float fVar1; + float fVar2; + float in_stack_00000010; + + fVar1 = 0.00000000; + fVar2 = 0.00000000; + if (param_2 != 0) { + fVar1 = *(float *)(param_2 + 0x30); + if ((fVar1 < in_stack_00000010) || + (fVar1 = *(float *)(param_2 + 0x34), in_stack_00000010 < fVar1)) { + fVar2 = in_stack_00000010 - fVar1; + in_stack_00000010 = fVar1; + } + if (0.00000000 < in_stack_00000010) { + fVar1 = *(float *)(param_2 + 0x40) * in_stack_00000010; + } + else { + fVar1 = *(float *)(param_2 + 0x44) * in_stack_00000010; + } + } + if (param_4 == 0) { + *(float *)(param_1 + 0x154) = fVar1; + *(float *)(param_1 + 0x150) = in_stack_00000010; + } + else { + *(float *)(param_1 + 0x154) = in_stack_00000010; + if (param_3 == 0) { + *(float *)(param_1 + 0x150) = fVar1; + } + else { + *(float *)(param_1 + 0x150) = in_stack_00000010; + } + } + *(float *)(param_1 + 0x158) = fVar2; + return; +} + + + +void proc_7F02D0F8(int param_1) + +{ + *(undefined *)(param_1 + 0xe) = 10; + *(undefined4 *)(param_1 + 0x154) = 0; + *(undefined4 *)(param_1 + 0x150) = 0; + *(undefined4 *)(param_1 + 0x158) = 0; + *(undefined4 *)(param_1 + 0x15c) = 0; + return; +} + + + +void proc_7F02D118(int param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + + iVar1 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); + if (iVar1 != 0) { + proc_7F052574(iVar1,param_3); + } + return; +} + + + +longlong proc_7F02D148(int param_1,int param_2) + +{ + int iVar2; + longlong lVar1; + + iVar2 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); + if (iVar2 == 0) { + lVar1 = 0; + } + else { + lVar1 = proc_7F052604(iVar2); + } + return lVar1; +} + + + +void proc_7F02D184(int param_1) + +{ + proc_7F02D118(param_1,0,0); + proc_7F02D118(param_1,1,0); + proc_7F02D0F8(param_1); + return; +} + + + +void proc_7F02D1C4(int param_1,longlong param_2,longlong param_3) + +{ + if (param_3 == 0) { + if (param_2 == 1) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfffb; + } + else { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfff7; + } + } + else { + if (param_2 == 1) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 4; + } + else { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 8; + } + } + if (param_3 == 0) { + proc_7F02D118(param_1,(int)param_2,0); + } + return; +} + + + +undefined4 proc_7F02D244(float param_1) + +{ + undefined4 in_v0_lo; + + if (flt_80051F2C < param_1) { + return in_v0_lo; + } + if (flt_80051F34 < param_1) { + return in_v0_lo; + } + if (flt_80051F3C < param_1) { + return in_v0_lo; + } + if (param_1 <= flt_80051F44) { + return in_v0_lo; + } + return in_v0_lo; +} + + + +// WARNING: Instruction at (ram,0x7f02d5e4) overlaps instruction at (ram,0x7f02d5e0) +// + +void proc_7F02D2E4(int param_1,uint *param_2,undefined4 *param_3,int param_4) + +{ + char cVar1; + int iVar2; + int iVar5; + ulonglong uVar3; + longlong lVar4; + uint uVar6; + f32 extraout_a0_lo; + float fVar7; + float fVar8; + f32 fVar9; + float extraout_f0; + float fVar10; + float __x; + float vector2; + + iVar5 = get_curplayer_positiondata(); + iVar2 = *(int *)(param_1 + 0x18); + __x = *(float *)(iVar5 + 8) - *(float *)(iVar2 + 8); + fVar10 = *(float *)(iVar5 + 0xc) - *(float *)(iVar2 + 0xc); + vector2 = *(float *)(iVar5 + 0x10) - *(float *)(iVar2 + 0x10); + fVar7 = convert_angle_using_inverse((f32)__x,(f32)vector2); + fVar8 = (float)proc_7F02C190(); + fVar7 = fVar7 - fVar8; + __x = __x * __x + fVar10 * fVar10 + vector2 * vector2; + fVar10 = fVar8; + proc_7F02D244(__x); + if (fVar7 < 0.00000000) { + fVar7 = fVar7 + flt_80051F50; + } + uVar6 = (uint)(fVar7 < fVar10); + if (fVar7 >= fVar10) { + uVar6 = 0; + if (fVar7 <= flt_80051F54 - fVar10) { + *param_2 = 0; + goto LAB_7f02d3ec; + } + uVar6 = 1; + } + *param_2 = uVar6; +LAB_7f02d3ec: + *param_3 = 0; + uVar3 = check_if_bond_is_invincible(); + if ((uVar3 == 0) && (uVar6 != 0)) { + fVar10 = sqrtf(__x); + fVar7 = flt_80051F58 * global_timer_delta; + if (300.00000000 < fVar10) { + fVar7 = fVar7 * (300.00000000 / fVar10); + cVar1 = *(char *)(param_1 + 2); + } + else { + cVar1 = *(char *)(param_1 + 2); + } + if (cVar1 < '\x01') { + if (cVar1 < '\0') { + if (cVar1 < -99) { + fVar7 = 0.00000000; + } + else { + fVar7 = fVar7 * ((float)((int)cVar1 + 100) / 100.00000000); + } + } + } + else { + fVar7 = fVar7 * ((float)(int)cVar1 / 10.00000000 + 1.00000000); + } + fVar9 = get_007_accuracy_mod(); + if ((float)fVar9 <= 1.00000000) { + fVar10 = (float)get_007_accuracy_mod(); + } + else { + fVar9 = get_007_accuracy_mod(); + fVar10 = 9.00000000 / (flt_80051F5C - (float)fVar9); + } + fVar10 = fVar7 * fVar10 * (float)ai_accuracy_modifier; + lVar4 = proc_7F05DFCC(param_4); + if (lVar4 < 1) { + fVar10 = fVar10 + fVar10; + } + if ((param_4 == 0xf) || (param_4 == 0x10)) { + fVar10 = fVar10 + fVar10; + fVar7 = *(float *)(param_1 + 0x13c); + } + else { + fVar7 = *(float *)(param_1 + 0x13c); + } + *(float *)(param_1 + 0x13c) = fVar7 + fVar10; + if (1.00000000 <= *(float *)(param_1 + 0x13c)) { + fVar10 = extraout_f0; + proc_7F05DF84(param_4); + fVar9 = get_007_damage_mod(); + fVar9 = (f32)((float)fVar9 * fVar10 * 0.12500000 * (float)ai_damage_modifier); + if ((param_4 == 0xf) || (param_4 == 0x10)) { + fVar9 = (f32)((float)fVar9 * 3.00000000); + } + proc_7F089E4C(fVar9,fVar8,extraout_a0_lo); + *(undefined4 *)(param_1 + 0x13c) = 0; + uVar3 = check_if_bond_is_invincible(); + if (uVar3 != 0) { + *param_3 = 1; + } + } + } + return; +} + + + +undefined8 proc_7F02D630(int param_1,int param_2,float *param_3) + +{ + ushort **ppuVar1; + ushort *puVar2; + int iVar3; + float *pfVar4; + undefined8 uVar5; + undefined auStack156 [48]; + float fStack108; + float fStack104; + float fStack100; + float *pfStack92; + float afStack84 [16]; + float *pfStack20; + int iStack12; + + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); + uVar5 = 0; + if ((iVar3 != 0) && + (iStack12 = *(int *)(*(int *)(iVar3 + 4) + 0x14), (*(byte *)(iVar3 + 1) & 2) != 0)) { + ppuVar1 = *(ushort ***)(*(int *)(iStack12 + 8) + 8); + puVar2 = *ppuVar1; + if (puVar2 == NULL) { + puVar2 = ppuVar1[1]; + if (puVar2 != NULL) { + pfStack92 = (float *)proc_7F06C660(iStack12,puVar2,0); + pfVar4 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar4,pfStack92,(int)auStack156); + uVar5 = 1; + *param_3 = fStack108; + param_3[1] = fStack104; + param_3[2] = fStack100; + } + } + else { + pfStack20 = (float *)proc_7F06C660(iStack12,puVar2,0); + pfVar4 = *(float **)(**(int **)(*(int *)(iStack12 + 8) + 8) + 4); + *param_3 = *pfVar4; + param_3[1] = pfVar4[1]; + param_3[2] = pfVar4[2]; + pfVar4 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar4,pfStack20,(int)afStack84); + proc_7F058474(afStack84,param_3); + uVar5 = 1; + } + } + return uVar5; +} + + + +// WARNING: Instruction at (ram,0x7f02e084) overlaps instruction at (ram,0x7f02e080) +// + +void proc_7F02D734(short *param_1,int param_2) + +{ + char cVar1; + int iVar3; + longlong lVar2; + int iVar4; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + uint uVar5; + float fVar6; + float *pfVar7; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f12_01; + f32 fVar8; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + f32 extraout_f14; + f32 extraout_f14_00; + f32 extraout_f14_01; + f32 fVar9; + float fVar10; + float fVar11; + float afStack556 [16]; + float afStack492 [16]; + float fStack428; + float fStack424; + float fStack420; + float afStack416 [16]; + undefined4 *puStack352; + float afStack348 [16]; + float afStack284 [16]; + float fStack220; + float fStack216; + float fStack212; + float fStack204; + float fStack200; + float fStack196; + float afStack192 [16]; + undefined4 *puStack128; + float fStack124; + int iStack108; + float fStack104; + float fStack100; + float fStack96; + uint uStack92; + int iStack88; + uint uStack84; + u32 uStack80; + u32 uStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + u32 uStack52; + float fStack48; + float fStack44; + float fStack40; + int iStack36; + int iStack32; + int iStack24; + int iStack20; + int iStack16; + int iStack12; + int iStack4; + + iStack4 = *(int *)(param_1 + 0xc); + iVar3 = something_with_weaponpos_of_guarddata_hand((GUARDdata *)param_1,param_2); + if (iVar3 == 0) { + return; + } + iStack12 = 0; + iStack16 = 0; + iStack20 = *(int *)(iVar3 + 4); + iStack24 = get_curplayer_positiondata(); + if (*(char *)((int)param_1 + 7) == '\b') { + uVar5 = *(uint *)(param_1 + 0x26) & 1; + } + else { + uVar5 = 1; + } + if (((uVar5 != 0) && (*(int *)(param_1 + 0x74) < global_timer + -0x78)) && + (lVar2 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)), -1 < lVar2)) goto LAB_7f02e24c; + iStack32 = 0; + iStack36 = 0; + iVar3 = (int)param_1 + param_2; + *(char *)(iVar3 + 4) = *(char *)(iVar3 + 4) + '\x01'; + lVar2 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)); + if (lVar2 < 0) { + iStack32 = 1; + iStack36 = 1; + } + else { + lVar2 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)); + if (lVar2 == 0) { + trap(0x1c00); + } + if ((lVar2 == -1) && ((ulonglong)*(byte *)(iVar3 + 4) == 0xffffffff80000000)) { + trap(0x1800); + } + if ((int)(uint)*(byte *)(iVar3 + 4) % (int)lVar2 == 0) { + iStack32 = 1; + iVar4 = proc_7F05DFCC((int)*(char *)(iStack20 + 0x80)); + iVar4 <<= 1; + if (iVar4 == 0) { + trap(0x1c00); + } + if ((iVar4 == -1) && ((ulonglong)*(byte *)(iVar3 + 4) == 0xffffffff80000000)) { + trap(0x1800); + } + if (((int)(uint)*(byte *)(iVar3 + 4) % iVar4 == 0) || + (*(char *)(iStack20 + 0x80) == '\x16')) { + iStack36 = 1; + } + } + else { + iStack16 = 1; + } + } + if (iStack32 != 0) { + uStack52 = 0; + fStack56 = (float)proc_7F02C190(); + fStack60 = proc_7F02C27C((int)param_1); + uStack76 = *(u32 *)(iStack4 + 0x14); + iStack12 = 1; + lVar2 = proc_7F02D630((int)param_1,param_2,&fStack72); + fVar8 = extraout_f12; + fVar9 = extraout_f14; + if (lVar2 == 0) { + fStack72 = *(float *)(iStack4 + 8); + fStack68 = *(float *)(iStack4 + 0xc) + 30.00000000; + fStack64 = *(float *)(iStack4 + 0x10); + if (param_2 == 1) { + fVar6 = cosf(fStack56); + fStack72 = fStack72 + fVar6 * 10.00000000; + fVar6 = sinf(fStack56); + fStack64 = fStack64 + -fVar6 * 10.00000000; + fVar8 = extraout_f12_00; + fVar9 = extraout_f14_00; + } + else { + fVar6 = cosf(fStack56); + fStack72 = fStack72 + -fVar6 * 10.00000000; + fVar6 = sinf(fStack56); + fStack64 = fStack64 + fVar6 * 10.00000000; + fVar8 = extraout_f12_01; + fVar9 = extraout_f14_01; + } + } + iVar4 = proc_7F0B0E24(&uStack76,fVar8,fVar9,*(f32 *)(iStack4 + 8)); + if (iVar4 == 0) { + *(char *)(iVar3 + 4) = *(char *)(iVar3 + 4) + -1; + iStack12 = 0; + } + else { + uStack80 = uStack76; + } + if (iStack12 != 0) { + uStack84 = 0; + iStack88 = 0; + uStack92 = 1; + iStack108 = proc_7F0292A8(param_1,&fStack72,uStack80); + fVar6 = cosf(fStack60); + fStack104 = sinf(fStack56); + fStack104 = fStack104 * fVar6; + fStack100 = sinf(fStack60); + fVar6 = cosf(fStack60); + fStack96 = cosf(fStack56); + fStack96 = fStack96 * fVar6; + fStack48 = fStack104 * 65536.00000000 + fStack72; + fStack44 = fStack100 * 65536.00000000 + fStack68; + fStack40 = fStack96 * 65536.00000000 + fStack64; + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + proc_7F0B1CC4(); + uStack76 = uStack80; + iVar3 = proc_7F0B0E24(&uStack76,(f32)fStack68,(f32)fStack44,(f32)fStack72); + if (iVar3 == 0) { + proc_7F02624C(&fStack72,&fStack104,&fStack48); + uStack52 = uStack76; + fStack48 = fStack48 - fStack104 * 26.00000000; + fStack44 = fStack44 - fStack100 * 26.00000000; + fStack40 = fStack40 - fStack96 * 26.00000000; + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + fVar6 = fStack48 - fStack72; + fVar10 = fStack44 - fStack68; + fVar11 = fStack40 - fStack64; + fStack124 = fVar6 * fVar6 + fVar10 * fVar10 + fVar11 * fVar11; + cVar1 = *(char *)(iStack20 + 0x80); + if (cVar1 == '\x19') { + if (flt_80051F60 < fVar6 * fVar6 + fVar10 * fVar10 + fVar11 * fVar11) { + puStack128 = create_new_item_instance_of_model(0xca,0x56); + if (puStack128 != NULL) { + guMtxIdentF_unrolled((float (*) [4] [4])afStack192); + proc_7F058570(fStack60,extraout_a0,afStack284); + proc_7F0585FC(fStack56,extraout_a0_00,afStack348); + sub_GAME_7F058098(afStack348,afStack284); + fStack220 = fStack104 * flt_80051F64; + fStack216 = fStack100 * flt_80051F64; + fStack212 = fStack96 * flt_80051F64; + fStack204 = fStack220 * global_timer_delta; + fStack200 = fStack216 * global_timer_delta; + fStack196 = fStack212 * global_timer_delta; + proc_7F05EB0C((int)puStack128,&fStack72,uStack80,afStack284,&fStack204, + afStack192,iStack4); + if ((puStack128[0x19] & 0x80) != 0) { + *(uint *)puStack128[0x1b] = *(uint *)puStack128[0x1b] | 0x80; + *(undefined2 *)((int)puStack128 + 0x82) = 0xffff; + *(uint *)puStack128[0x1b] = *(uint *)puStack128[0x1b] | 0x20; + *(undefined4 *)(puStack128[0x1b] + 0xb0) = puStack128[0x17]; + *(undefined4 *)(puStack128[0x1b] + 0xb4) = + *(undefined4 *)(puStack128[0x1b] + 8); + *(float *)(puStack128[0x1b] + 0x10) = fStack220; + *(float *)(puStack128[0x1b] + 0x14) = fStack216; + *(float *)(puStack128[0x1b] + 0x18) = fStack212; + iVar3 = puStack128[0x1b]; + if (*(int *)(iVar3 + 0x98) == 0) { + play_sfx_a1(ptr_sfx_buf,1,(ALSndPlayer *)(iVar3 + 0x98)); + } + else { + if (*(int *)(iVar3 + 0x9c) == 0) { + play_sfx_a1(ptr_sfx_buf,1,(ALSndPlayer *)(iVar3 + 0x9c)); + } + } + } + } + } + else { + iStack12 = 0; + } + } + else { + if (cVar1 == '\x18') { + if (flt_80051F68 < fVar6 * fVar6 + fVar10 * fVar10 + fVar11 * fVar11) { + puStack352 = create_new_item_instance_of_model(0xcb,0x57); + if (puStack352 != NULL) { + guMtxIdentF_unrolled((float (*) [4] [4])afStack416); + fStack428 = fStack104 * flt_80051F6C; + fStack424 = fStack100 * flt_80051F6C; + fStack420 = fStack96 * flt_80051F6C; + proc_7F058570(fStack60,extraout_a0_01,afStack492); + proc_7F0585FC(fStack56,extraout_a0_02,afStack556); + sub_GAME_7F058098(afStack556,afStack492); + *(undefined2 *)((int)puStack352 + 0x82) = 0xb4; + proc_7F05EB0C((int)puStack352,&fStack72,uStack80,afStack492,&fStack428, + afStack416,iStack4); + if ((puStack352[0x19] & 0x80) != 0) { + *(float *)(puStack352[0x1b] + 0x8c) = flt_80051F70; + *(float *)(puStack352[0x1b] + 0x94) = flt_80051F74; + *(undefined4 *)(puStack352[0x1b] + 0xbc) = 0x3c; + } + } + } + else { + iStack12 = 0; + } + } + else { + if ((uVar5 == 0) || (iStack108 == 0)) { + fVar6 = extraout_f12_02; + if ((*(char *)((int)param_1 + 7) == '\b') || + (*(char *)((int)param_1 + 7) == '\n')) { + *(int *)(param_1 + 0x24) = global_timer; + } + } + else { + fVar10 = (*(float *)(iStack24 + 8) - fStack72) - fStack104 * 15.00000000; + fVar6 = (*(float *)(iStack24 + 0xc) - fStack68) - fStack100 * 15.00000000; + fVar11 = (*(float *)(iStack24 + 0x10) - fStack64) - fStack96 * 15.00000000; + if (fVar10 * fVar10 + fVar6 * fVar6 + fVar11 * fVar11 <= fStack124) { + proc_7F02D2E4((int)param_1,&uStack84,&iStack88,(int)cVar1); + uStack92 = (uint)(iStack88 == 0); + fVar6 = extraout_f12_03; + if ((uStack84 != 0) && + ((*(char *)((int)param_1 + 7) == '\b' || + (*(char *)((int)param_1 + 7) == '\n')))) { + *(int *)(param_1 + 0x24) = global_timer; + } + } + } + if (iStack88 == 0) { + if (((DAT_8007ba04 == NULL) || + ((*DAT_8007ba04 != '\x03' && (*DAT_8007ba04 != '\x06')))) && + (fStack124 < flt_80051F78)) { + uStack92 = 0; + } + } + else { + fStack48 = *(float *)(iStack24 + 8); + fStack44 = *(float *)(iStack24 + 0xc); + fStack40 = *(float *)(iStack24 + 0x10); + uStack52 = *(u32 *)(iStack24 + 0x14); + recall_joy2_hits_edit_detail_edit_flag(); + fVar6 = extraout_f12_04; + } + if (uStack92 != 0) { + if (uStack52 != 0) { + proc_7F0A3E1C(&fStack48,1,fVar6,0); + } + if (DAT_8007ba04 == NULL) { + recall_joy2_hits_edit_flag((int)*(char *)(iStack20 + 0x80),&fStack48,-1) + ; + } + else { + pfVar7 = (float *)recall_joy2_hits_edit_detail_edit_flag(); + cVar1 = *DAT_8007ba04; + if (cVar1 == '\x03') { + if ((*(uint *)(param_1 + 10) & 0x40) != 0) { + proc_7F02727C(); + } + } + else { + if ((cVar1 == '\x01') || (cVar1 == '\x04')) { + proc_7F05DF84((int)*(char *)(iStack20 + 0x80)); + get_cur_playernum(); + proc_7F04E0CC(*(int *)(DAT_8007ba04 + 4),extraout_f12_05,pfVar7, + (int)&fStack48,(int)*(char *)(iStack20 + 0x80)); + } + } + } + } + if (iStack36 != 0) { + if (true) { + switch(*(undefined *)(iStack20 + 0x80)) { + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + iStack36 = 1; + goto LAB_7f02e1e8; + } + } + iStack36 = 0; + } +LAB_7f02e1e8: + if (iStack36 != 0) { + proc_7F061948((undefined *)(param_1 + param_2 * 0x16 + 0xc0), + (int)*(char *)(iStack20 + 0x80),&fStack72,&fStack48); + } + } + } + } + } + proc_7F02BFE4((int)param_1,param_2,(uint)(iStack12 != 0 || iStack16 != 0)); +LAB_7f02e24c: + proc_7F02D118((int)param_1,param_2,iStack12); + return; +} + + + +void proc_7F02E26C(short *param_1) + +{ + ushort uVar1; + ushort uVar2; + + uVar1 = param_1[9]; + uVar2 = uVar1 & 0xff7f; + param_1[9] = uVar2; + if ((uVar1 & 8) != 0) { + proc_7F02D734(param_1,0); + uVar2 = param_1[9] & 0xfff7; + param_1[9] = uVar2; + } + if ((uVar2 & 4) != 0) { + proc_7F02D734(param_1,1); + param_1[9] = param_1[9] & 0xfffb; + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F02E2E0(void) + +{ + undefined uVar1; + int iVar2; + undefined8 uVar3; + int in_a0_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + + if ((*(weapon_firing_animation_table **)(in_a0_lo + 0x2c) == &stru_80030108) || + (*(weapon_firing_animation_table **)(in_a0_lo + 0x2c) == &stru_80030150)) { + iVar2 = *(int *)(in_a0_lo + 0x1c); + uVar1 = *(undefined *)(iVar2 + 0x24); + *(undefined *)(in_a0_lo + 0x30) = 2; + *(undefined4 *)(in_a0_lo + 0x2c) = 0x800300c0; + *(undefined *)(in_a0_lo + 8) = 0; + proc_7F023B5C(); + proc_7F06FCA8(iVar2,stru_800300C0.anonymous_0,uVar1,extraout_f12,stru_800300C0.anonymous_7, + extraout_f14); + if (0.00000000 <= (float)stru_800300C0.anonymous_5) { + proc_7F06FDE8(iVar2,extraout_f12_00); + } + uVar3 = 1; + } + else { + uVar3 = 0; + } + return uVar3; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02E3B8(void) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + int in_a0_lo; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float fVar4; + float extraout_f14; + float extraout_f14_00; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + if (0.00000000 < *(float *)(*(int *)(in_a0_lo + 0x2c) + 0x24)) { + uVar3 = proc_7F06F5AC(iVar1); + proc_7F023B5C(); + proc_7F06FCA8(iVar1,uVar3,*(undefined *)(iVar1 + 0x24),extraout_f12, + *(undefined4 *)(*(int *)(in_a0_lo + 0x2c) + 0x24),extraout_f14); + iVar2 = *(int *)(in_a0_lo + 0x2c); + fVar4 = extraout_f12_00; + } + else { + uVar3 = proc_7F06F5AC(iVar1); + proc_7F023B5C(); + proc_7F06FCA8(iVar1,uVar3,*(undefined *)(iVar1 + 0x24),extraout_f12_01, + *(undefined4 *)(*(int *)(in_a0_lo + 0x2c) + 0x1c),extraout_f14_00); + iVar2 = *(int *)(in_a0_lo + 0x2c); + fVar4 = extraout_f12_02; + } + if (0.00000000 <= *(float *)(iVar2 + 0x14)) { + proc_7F06FDE8(iVar1,fVar4); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02E4C0(void) + +{ + char cVar1; + int iVar2; + uint uVar3; + int iVar4; + undefined4 uVar5; + undefined uVar6; + short *in_a0_lo; + char cVar7; + int iVar9; + longlong lVar8; + short *psVar10; + float in_f0; + float extraout_f0; + float fVar11; + float extraout_f0_00; + float fVar12; + float extraout_f0_01; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f14; + float fVar13; + + iVar2 = *(int *)(in_a0_lo + 0xe); + proc_7F06F5BC(iVar2); + if ((((*(int *)(in_a0_lo + 0x24) < *(int *)(in_a0_lo + 0x22) + -0x1e) && + (*(int *)(iVar2 + 0x54) == 0)) && + (iVar9 = *(int *)(in_a0_lo + 0x16), *(float *)(iVar9 + 0x18) + 10.00000000 < in_f0)) && + (in_f0 < *(float *)(iVar9 + 0x1c))) { + if (0.00000000 <= *(float *)(iVar9 + 0x24)) { + if (*(float *)(iVar9 + 0x24) <= in_f0) goto LAB_7f02e638; + cVar7 = *(char *)(in_a0_lo + 0x1b); + } + else { + cVar7 = *(char *)(in_a0_lo + 0x1b); + } + if (cVar7 == '\0') { + lVar8 = proc_7F02E2E0(); + in_f0 = extraout_f0; + if (lVar8 == 0) { + uVar5 = proc_7F06F5AC(iVar2); + proc_7F023B5C(); + proc_7F06FCA8(iVar2,uVar5,*(undefined *)(iVar2 + 0x24),extraout_f12, + *(undefined4 *)(*(int *)(in_a0_lo + 0x16) + 0x1c),extraout_f14); + in_f0 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x14); + if (0.00000000 <= in_f0) { + proc_7F06FDE8(iVar2,extraout_f12_00); + } + } + cVar7 = *(char *)(in_a0_lo + 0x1a); + } + else { + in_f0 = (float)proc_7F02E3B8(); + cVar7 = *(char *)(in_a0_lo + 0x1a); + } + *(char *)((int)in_a0_lo + 0x33) = cVar7 + '\x01'; + proc_7F06F5BC(iVar2); + } +LAB_7f02e638: + fVar11 = proc_7F06F5C4(iVar2); + if (in_f0 < fVar11) { + uVar3 = *(uint *)(in_a0_lo + 0x26); + fVar12 = extraout_f12_01; + goto LAB_7f02e82c; + } + if (*(char *)((int)in_a0_lo + 0x37) == '\0') { + cVar7 = *(char *)((int)in_a0_lo + 0x33); + if (*(char *)(in_a0_lo + 0x1a) < cVar7) goto LAB_7f02e678; + if (*(char *)(in_a0_lo + 0x1a) == cVar7) { + *(char *)((int)in_a0_lo + 0x33) = cVar7 + '\x01'; + fVar11 = (float)proc_7F02E3B8(); + } + else { + if (*(char *)((int)in_a0_lo + 0x31) != '\0') { + fVar12 = 0.50000000; + if (*(char *)(in_a0_lo + 0x1b) == '\0') { + iVar9 = *(int *)(in_a0_lo + 0x16); + fVar11 = *(float *)(iVar9 + 0x20); + fVar13 = *(float *)(iVar9 + 0x18); + if (fVar11 <= 0.00000000) { + fVar11 = *(float *)(iVar9 + 0x1c); + } + } + else { + iVar9 = *(int *)(in_a0_lo + 0x16); + fVar13 = *(float *)(iVar9 + 0x20); + if (fVar13 <= 0.00000000) { + fVar13 = *(float *)(iVar9 + 0x18); + } + fVar11 = *(float *)(iVar9 + 0x24); + if (fVar11 <= 0.00000000) { + fVar11 = *(float *)(iVar9 + 0x1c); + } + } + fVar11 = fVar11 - fVar13; + if (fVar11 < 12.00000000) { + fVar12 = (fVar11 * 0.50000000) / 12.00000000; +LAB_7f02e7b8: + cVar7 = *(char *)(in_a0_lo + 0x1d); + } + else { + if (16.00000000 < fVar11) { + fVar12 = fVar11 * 0.50000000 * 0.06250000; + goto LAB_7f02e7b8; + } + cVar7 = *(char *)(in_a0_lo + 0x1d); + } + if (cVar7 == '\0') { + *(undefined *)((int)in_a0_lo + 0x31) = 0; + } + else { + if (*(char *)((int)in_a0_lo + 0x3b) == '\0') { + *(undefined *)((int)in_a0_lo + 0x31) = 0; + } + else { + fVar12 = fVar12 + fVar12; + *(undefined *)((int)in_a0_lo + 0x31) = 0; + } + } + uVar5 = proc_7F06F5AC(iVar2); + proc_7F06FCA8(iVar2,uVar5,*(undefined *)(iVar2 + 0x24),fVar12,fVar13,fVar13); + proc_7F06FDE8(iVar2,extraout_f12_02); + } + } + } + else { +LAB_7f02e678: + lVar8 = proc_7F02E2E0(); + fVar11 = extraout_f0_00; + if (lVar8 == 0) { + if ((*(uint *)(in_a0_lo + 0x26) & 1) != 0) { + proc_7F029BB0((int)in_a0_lo); + } + proc_7F023E48((int)in_a0_lo); + return; + } + } + proc_7F06F5BC(iVar2); + uVar3 = *(uint *)(in_a0_lo + 0x26); + fVar12 = extraout_f12_03; + in_f0 = fVar11; +LAB_7f02e82c: + if ((uVar3 & 0x40) == 0) { + fVar11 = *(float *)(*(int *)(in_a0_lo + 0x16) + 4); + if (((uVar3 & 0x20) != 0) && (fVar12 = proc_7F06F5C4(iVar2), fVar12 < fVar11)) { + proc_7F06F5C4(iVar2); + } + proc_7F023B5C(); + uVar6 = proc_7F02C2B0(); + *(undefined *)(in_a0_lo + 0x18) = uVar6; + iVar9 = *(int *)(in_a0_lo + 0x16); + fVar11 = extraout_f0_01; + fVar12 = extraout_f12_04; + } + else { + iVar9 = *(int *)(in_a0_lo + 0x16); + } + if ((in_f0 <= *(float *)(iVar9 + 0x28)) || (*(float *)(iVar9 + 0x2c) <= in_f0)) { + proc_7F02D0F8((int)in_a0_lo); + } + else { + proc_7F02C4C0(in_a0_lo,iVar9,(int)*(char *)((int)in_a0_lo + 0x39), + (int)*(char *)(in_a0_lo + 0x1c),fVar12); + } + lVar8 = 0; + psVar10 = in_a0_lo; + do { + iVar9 = (int)lVar8; + if (*(char *)(psVar10 + 0x1c) == '\0') { + proc_7F02D1C4((int)in_a0_lo,lVar8,0); +LAB_7f02ebc4: + lVar8 = (longlong)(iVar9 + 1); + } + else { + if (*(char *)(psVar10 + 0x1d) == '\0') { + if ((in_f0 < *(float *)(*(int *)(in_a0_lo + 0x16) + 0x18)) || + (*(float *)(*(int *)(in_a0_lo + 0x16) + 0x1c) <= in_f0)) { + proc_7F02D1C4((int)in_a0_lo,lVar8,0); + if (*(char *)((int)in_a0_lo + 7) == '\n') { + proc_7F023B5C(); + proc_7F06FE4C(iVar2,fVar11,extraout_f12_06); + lVar8 = (longlong)(iVar9 + 1); + } + else { + proc_7F023B5C(); + proc_7F06FE4C(iVar2,fVar11,extraout_f12_07); + lVar8 = (longlong)(iVar9 + 1); + } + } + else { + proc_7F02D1C4((int)in_a0_lo,lVar8,1); + *(undefined4 *)(in_a0_lo + 0x22) = global_timer; + if (*(char *)((int)in_a0_lo + 7) == '\n') { + fVar11 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x1c) - + *(float *)(*(int *)(in_a0_lo + 0x16) + 0x18); + if (fVar11 < 30.00000000) { + if (*(int *)(in_a0_lo + 0x20) < (int)fVar11 * -2 + 0x3c) { + proc_7F06FE4C(iVar2,0x3dcccccd,extraout_f12_05); + *(int *)(in_a0_lo + 0x20) = *(int *)(in_a0_lo + 0x20) + clock_timer; + goto LAB_7f02ebc4; + } + proc_7F06FE4C(iVar2,0x3f000000,extraout_f12_05); + lVar8 = (longlong)(iVar9 + 1); + } + else { + proc_7F06FE4C(iVar2,0x3f000000,extraout_f12_05); + lVar8 = (longlong)(iVar9 + 1); + } + } + else { + proc_7F06FE4C(iVar2,0x3f000000,extraout_f12_05); + lVar8 = (longlong)(iVar9 + 1); + } + } + } + else { + if (*(char *)((int)in_a0_lo + 0x31) == '\0') { + cVar7 = *(char *)(in_a0_lo + 0x19); + if ((lVar8 == (longlong)cVar7) || + (*(char *)((int)in_a0_lo + (int)cVar7 + 0x3a) == '\0')) { + iVar4 = *(int *)(in_a0_lo + 0x16); + fVar11 = *(float *)(iVar4 + 0x20); + if ((fVar11 < 0.00000000) || + ((in_f0 < fVar11 || (*(float *)(iVar4 + 0x24) < in_f0)))) { + if ((0.00000000 <= fVar11) || (in_f0 < *(float *)(iVar4 + 0x18))) + goto LAB_7f02ebac; + cVar1 = *(char *)((int)in_a0_lo + 0x33); + } + else { + cVar1 = *(char *)((int)in_a0_lo + 0x33); + } + *(undefined *)((int)in_a0_lo + 0x31) = 1; + *(char *)(in_a0_lo + 0x19) = '\x01' - cVar7; + *(char *)((int)in_a0_lo + 0x33) = cVar1 + '\x01'; + *(undefined4 *)(in_a0_lo + 0x22) = global_timer; + proc_7F02D1C4((int)in_a0_lo,lVar8,1); + lVar8 = (longlong)(iVar9 + 1); + goto LAB_7f02ebc8; + } + } +LAB_7f02ebac: + proc_7F02D1C4((int)in_a0_lo,lVar8,0); + lVar8 = (longlong)(iVar9 + 1); + } + } +LAB_7f02ebc8: + psVar10 = (short *)((int)psVar10 + 1); + if (lVar8 == 2) { + return; + } + } while( true ); +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02EBFC(void) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + short *in_a0_lo; + uint uVar4; + char cVar5; + float in_f0; + float fVar6; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f14; + float extraout_f14_00; + + iVar2 = *(int *)(in_a0_lo + 0xe); + proc_7F06F5BC(iVar2); + iVar1 = *(int *)(in_a0_lo + 0x2c); + if (iVar1 == 0) { + uVar4 = *(uint *)(in_a0_lo + 0x26); + } + else { + if (iVar1 == 1) { + fVar6 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x24); + if (fVar6 < 0.00000000) { + fVar6 = *(float *)(*(int *)(in_a0_lo + 0x16) + 0x1c); + } + uVar3 = proc_7F06F5AC(iVar2); + proc_7F023B5C(); + proc_7F06FCA8(iVar2,uVar3,*(undefined *)(iVar2 + 0x24),extraout_f12_00,fVar6, + extraout_f14); + if (0.00000000 <= *(float *)(*(int *)(in_a0_lo + 0x16) + 0x14)) { + proc_7F06FDE8(iVar2,extraout_f12_01); + } + *(undefined4 *)(in_a0_lo + 0x2c) = 2; + proc_7F02D0F8((int)in_a0_lo); + return; + } + if (iVar1 == 2) { + fVar6 = proc_7F06F5C4(iVar2); + if (in_f0 < fVar6) { + return; + } + uVar4 = *(uint *)(in_a0_lo + 0x26); + *(uint *)(in_a0_lo + 0x26) = uVar4 | 0x20; + uVar4 = uVar4 & 0xffffffbf | 0x20; + *(uint *)(in_a0_lo + 0x26) = uVar4; + if (*(int *)(in_a0_lo + 0x2a) != 0) { + proc_7F025560((int)in_a0_lo,uVar4,*(undefined4 *)(in_a0_lo + 0x28)); + return; + } + proc_7F0256F0((int)in_a0_lo,*(uint *)(in_a0_lo + 0x26),*(undefined4 *)(in_a0_lo + 0x28)) + ; + return; + } + uVar4 = *(uint *)(in_a0_lo + 0x26); + } + if ((uVar4 & 0x20) == 0) { + cVar5 = *(char *)(in_a0_lo + 0x1b); + } + else { + if ((uVar4 & 0x40) != 0) { + iVar2 = proc_7F02C4C0(in_a0_lo,*(int *)(in_a0_lo + 0x16), + (int)*(char *)((int)in_a0_lo + 0x39), + (int)*(char *)(in_a0_lo + 0x1c),extraout_f12); + if (iVar2 != 0) { + return; + } + *(undefined4 *)(in_a0_lo + 0x2c) = 1; + return; + } + fVar6 = proc_7F06F5C4(iVar2); + if (fVar6 <= in_f0) { + *(undefined *)(in_a0_lo + 0x18) = 2; + *(uint *)(in_a0_lo + 0x26) = *(uint *)(in_a0_lo + 0x26) | 0x40; + return; + } + cVar5 = *(char *)(in_a0_lo + 0x1b); + } + if ((((cVar5 == '\0') && (0.00000000 < *(float *)(*(int *)(in_a0_lo + 0x16) + 0x24))) && + (in_f0 <= *(float *)(*(int *)(in_a0_lo + 0x16) + 0x24))) && + (fVar6 = proc_7F06F5C4(iVar2), fVar6 <= in_f0)) { + uVar3 = proc_7F06F5AC(iVar2); + proc_7F023B5C(); + proc_7F06FCA8(iVar2,uVar3,*(undefined *)(iVar2 + 0x24),extraout_f12_02, + *(undefined4 *)(*(int *)(in_a0_lo + 0x16) + 0x24),extraout_f14_00); + if (*(char *)((int)in_a0_lo + 0x37) == '\0') { + proc_7F06FDE8(iVar2,extraout_f12_03); + } + else { + if (0.00000000 <= *(float *)(*(int *)(in_a0_lo + 0x16) + 0x14)) { + proc_7F06FDE8(iVar2,extraout_f12_03); + } + } + } + proc_7F02E4C0(); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02EEE0(void) + +{ + char cVar1; + weapon_firing_animation_table *pwVar2; + u32 uVar3; + int objinst; + undefined4 uVar4; + weapon_firing_animation_table *pwVar5; + int in_a0_lo; + float in_f0; + float fVar6; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f14; + float extraout_f14_00; + + if (*(char *)(in_a0_lo + 0x35) != '\0') { + objinst = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(objinst); + pwVar2 = *(weapon_firing_animation_table **)(in_a0_lo + 0x2c); + if ((((pwVar2 == &stru_80030198) || (pwVar2 == &stru_800301E0)) || + (pwVar2 == &stru_80030228)) || (pwVar2 == &stru_80030270)) { + if ((float)pwVar2->anonymous_5 <= in_f0) { + cVar1 = *(char *)(objinst + 0x24); + pwVar5 = pwVar2 + 4; + if ((*(char *)(in_a0_lo + 0x39) != '\0') && (*(char *)(in_a0_lo + 0x38) != '\0')) { + uVar3 = get_random_value(); + if ((uVar3 & 1) == 0) { + pwVar5 = pwVar2 + 8; + } + else { + pwVar5 = pwVar2 + 0xc; + } + } + if (pwVar5 == &stru_800302B8) { + fVar6 = 24.00000000; + } + else { + if (pwVar5 == &stru_80030300) { + fVar6 = 24.00000000; + } + else { + if (pwVar5 == &stru_80030348) { + fVar6 = 32.00000000; + } + else { + if (pwVar5 == &stru_80030390) { + fVar6 = 44.00000000; + } + else { + if (pwVar5 == &stru_800303D8) { + fVar6 = 24.00000000; + } + else { + if (pwVar5 == &stru_80030420) { + fVar6 = 34.00000000; + } + else { + if (pwVar5 == &stru_80030468) { + fVar6 = 32.00000000; + } + else { + if (pwVar5 == &stru_800304B0) { + fVar6 = 44.00000000; + } + else { + if (pwVar5 == &stru_800304F8) { + fVar6 = 24.00000000; + } + else { + if (pwVar5 == &stru_80030540) { + fVar6 = 34.00000000; + } + else { + if (pwVar5 == &stru_80030588) { + fVar6 = 32.00000000; + } + else { + fVar6 = 16.00000000; + if (pwVar5 == &stru_800305D0) { + fVar6 = 44.00000000; + } + } + } + } + } + } + } + } + } + } + } + } + *(undefined *)(in_a0_lo + 0x30) = 2; + *(weapon_firing_animation_table **)(in_a0_lo + 0x2c) = pwVar5; + *(undefined *)(in_a0_lo + 8) = 0; + proc_7F023B5C(); + proc_7F06FCA8(objinst,pwVar5->anonymous_0,cVar1,extraout_f12,pwVar5->anonymous_4, + extraout_f14); + if (*(char *)(in_a0_lo + 0x36) == '\0') { + if (0.00000000 <= (float)pwVar5->anonymous_8) { + proc_7F06FDE8(objinst,extraout_f12_00); + } + else { + if (0.00000000 <= (float)pwVar5->anonymous_5) { + proc_7F06FDE8(objinst,extraout_f12_00); + } + } + } + else { + if (0.00000000 <= (float)pwVar5->anonymous_9) { + proc_7F06FDE8(objinst,extraout_f12_00); + } + else { + proc_7F06FDE8(objinst,extraout_f12_00); + } + } + if (*(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc) != 0.00000000) { + objinst = extract_id_from_object_structure_microcode + (objinst,**(ushort ***)(objinst + 8)); + *(float *)(objinst + 0x5c) = fVar6; + *(float *)(objinst + 0x58) = + -*(float *)(*(int *)(in_a0_lo + 0x2c) + 0xc) / fVar6; + if (cVar1 != '\0') { + *(float *)(objinst + 0x58) = -*(float *)(objinst + 0x58); + } + } + } + } + else { + if (((((pwVar2 == &stru_800302B8) || (pwVar2 == &stru_80030300)) || + ((pwVar2 == &stru_80030348 || + ((pwVar2 == &stru_80030390 || (pwVar2 == &stru_800303D8)))))) || + ((pwVar2 == &stru_80030420 || + (((((pwVar2 == &stru_80030468 || (pwVar2 == &stru_800304B0)) || + (pwVar2 == &stru_800304F8)) || + ((pwVar2 == &stru_80030540 || (pwVar2 == &stru_80030588)))) || + (pwVar2 == &stru_800305D0)))))) && + (((*(char *)(in_a0_lo + 0x36) == '\0' && (0.00000000 < (float)pwVar2->anonymous_9)) + && ((in_f0 <= (float)pwVar2->anonymous_9 && + (fVar6 = proc_7F06F5C4(objinst), fVar6 <= in_f0)))))) { + uVar4 = proc_7F06F5AC(objinst); + proc_7F023B5C(); + proc_7F06FCA8(objinst,uVar4,*(undefined *)(objinst + 0x24),extraout_f12_01, + *(undefined4 *)(*(int *)(in_a0_lo + 0x2c) + 0x24),extraout_f14_00); + if (*(char *)(in_a0_lo + 0x37) == '\0') { + proc_7F06FDE8(objinst,extraout_f12_02); + } + else { + if (0.00000000 <= *(float *)(*(int *)(in_a0_lo + 0x2c) + 0x14)) { + proc_7F06FDE8(objinst,extraout_f12_02); + } + } + } + } + } + proc_7F02E4C0(); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02F3F8(void) + +{ + bool bVar1; + int iVar2; + int iVar3; + GUARDdata *in_a0_lo; + float in_f0; + float fVar4; + float fVar5; + + iVar2 = in_a0_lo->MODELdata_pointer; + proc_7F06F5BC(iVar2); + bVar1 = *(char *)(iVar2 + 0x24) != '\0'; + fVar4 = in_f0; + iVar3 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,(uint)bVar1); + if ((20.00000000 <= in_f0) && (iVar3 != 0)) { + *(uint *)(*(int *)(iVar3 + 4) + 100) = *(uint *)(*(int *)(iVar3 + 4) + 100) & 0xfffff7ff; + } + if ((61.00000000 <= in_f0) && (iVar3 != 0)) { + *(undefined2 *)(*(int *)(iVar3 + 4) + 0x82) = 0xb4; + } + if ((119.00000000 <= in_f0) && (iVar3 != 0)) { + proc_7F04BFD0(in_a0_lo->handle_positiondata[bVar1],3); + in_a0_lo->special_bitflags = in_a0_lo->special_bitflags | 1; + } + proc_7F06F5BC(iVar2); + fVar5 = proc_7F06F5C4(iVar2); + if (fVar5 <= fVar4) { + proc_7F023E48((int)in_a0_lo); + } + else { + if ((87.00000000 <= in_f0) && (in_f0 <= 110.00000000)) { + proc_7F023B5C(); + proc_7F02C2B0(); + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02F5A4(void) + +{ + int iVar1; + int in_a0_lo; + float in_f0; + float fVar2; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + proc_7F06F5BC(iVar1); + if ((86.00000000 <= in_f0) || (fVar2 = proc_7F06F5C4(iVar1), in_f0 < fVar2)) { + fVar2 = proc_7F06F5C4(iVar1); + if (fVar2 <= in_f0) { + proc_7F023CB8(); + } + } + else { + proc_7F06F610(iVar1); + proc_7F06FCA8(iVar1,ptr_animation_table + 0x6254,0,extraout_f12,0x42ac0000,extraout_f14); + proc_7F06FDE8(iVar1,extraout_f12_00); + } + return; +} + + + +void proc_7F02F688(void) + +{ + return; +} + + + +uint proc_7F02F690(int param_1,float *param_2,int param_3,float *param_4) + +{ + bool bVar1; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + float fVar2; + float fVar3; + float fVar4; + float extraout_f12; + float *pfStack24; + float *pfStack20; + int iStack8; + + iStack8 = *(int *)(param_1 + 0x1c); + pfStack24 = (float *)convert_angle_using_inverse + ((f32)(*param_2 - *(float *)(*(int *)(param_1 + 0x18) + 8)), + (f32)(param_2[2] - *(float *)(*(int *)(param_1 + 0x18) + 0x10))) + ; + pfStack20 = pfStack24; + getsubroty(iStack8,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + fVar3 = (float)pfStack20 - (float)pfStack24; + if ((float)pfStack20 < (float)pfStack24) { + fVar3 = fVar3 + flt_80051FD0; + } + if (flt_80051FD4 < fVar3) { + fVar3 = FLOAT_80051fd8 - fVar3; + } + fVar2 = flt_80051FE0; + fVar4 = flt_80051FDC; + if (param_3 != 2) { + if (param_3 == 1) { + fVar2 = flt_80051FF8; + fVar4 = flt_80051FE8; + if ((flt_80051FE4 <= fVar3) && (fVar4 = flt_80051FF0, flt_80051FEC <= fVar3)) { + fVar4 = flt_80051FF4; + } + } + else { + fVar2 = flt_80052010; + fVar4 = flt_80052000; + if ((flt_80051FFC <= fVar3) && (fVar4 = flt_80052008, flt_80052004 <= fVar3)) { + fVar4 = flt_8005200C; + } + } + } + proc_7F04310C((float *)&pfStack24,fVar4 * *(float *)(iStack8 + 0xa4),pfStack20,(float)pfStack20, + (float)param_4,fVar2 * *(float *)(iStack8 + 0xa4)); + bVar1 = (float)pfStack24 == (float)pfStack20; + if (bVar1) { + *param_4 = 0.00000000; + } + setsubroty(iStack8,extraout_f12,pfStack24,extraout_a2_lo_00); + return (uint)bVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02F888(void) + +{ + int iVar1; + int iVar2; + uint uVar3; + short *in_a0_lo; + int iVar4; + longlong lVar5; + short *psVar6; + int iVar7; + float in_f0; + float fVar8; + float fVar9; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + float extraout_f14_00; + + iVar4 = *(int *)(in_a0_lo + 0xe); + iVar2 = *(int *)(in_a0_lo + 0xc); + iVar1 = get_curplayer_positiondata(); + iVar7 = *(int *)(in_a0_lo + 0x18) + clock_timer; + *(int *)(in_a0_lo + 0x18) = iVar7; + *(int *)(in_a0_lo + 100) = global_timer; + if (((*(char *)((int)in_a0_lo + 9) == '\x01') || + (*(int *)(in_a0_lo + 0x66) < global_timer + -0x3c)) || (*(int *)(in_a0_lo + 0x1a) < iVar7)) + { + proc_7F06F5BC(iVar4); + iVar2 = proc_7F06F5AC(iVar4); + fVar8 = (float)(uint)*(ushort *)(iVar2 + 4); + if (false) { + fVar8 = fVar8 + 4294967296.00000000; + } + if (fVar8 * 0.50000000 < in_f0) { + proc_7F06FE90(iVar4,extraout_f12,extraout_f14); + } + else { + proc_7F06F5AC(iVar4); + proc_7F06FE90(iVar4,extraout_f12_00,extraout_f14_00); + } + proc_7F029BB0((int)in_a0_lo); + proc_7F023E48((int)in_a0_lo); + } + else { + fVar8 = *(float *)(iVar1 + 8) - *(float *)(iVar2 + 8); + fVar9 = *(float *)(iVar1 + 0x10) - *(float *)(iVar2 + 0x10); + if (((300.00000000 <= fVar8) || (fVar8 <= -300.00000000)) || + ((300.00000000 <= fVar9 || (fVar9 <= -300.00000000)))) { + uVar3 = proc_7F02F690((int)in_a0_lo,(float *)(iVar1 + 8),0,(float *)(in_a0_lo + 0x2a)); + if (uVar3 != 0) { + *(undefined4 *)(in_a0_lo + 0x1c) = 1; + } + if (*(int *)(in_a0_lo + 0x18) < 0x15) { + proc_7F02D0F8((int)in_a0_lo); + iVar4 = *(int *)(in_a0_lo + 0x1c); + } + else { + proc_7F02C4C0(in_a0_lo,*(int *)(in_a0_lo + 0x1e), + (int)*(char *)((int)in_a0_lo + 0x49),(int)*(char *)(in_a0_lo + 0x24), + extraout_f12_01); + iVar4 = *(int *)(in_a0_lo + 0x1c); + } + if ((iVar4 == 0) || (lVar5 = 0, psVar6 = in_a0_lo, *(int *)(in_a0_lo + 0x18) < 0x1f)) { + proc_7F02D1C4((int)in_a0_lo,1,0); + proc_7F02D1C4((int)in_a0_lo,0,0); + } + else { + do { + iVar4 = (int)lVar5; + if (*(char *)(psVar6 + 0x24) == '\0') { + proc_7F02D1C4((int)in_a0_lo,lVar5,0); + lVar5 = (longlong)(iVar4 + 1); + } + else { + if (*(char *)(psVar6 + 0x25) == '\0') { + proc_7F02D1C4((int)in_a0_lo,lVar5,1); + lVar5 = (longlong)(iVar4 + 1); + } + else { + iVar2 = *(int *)(in_a0_lo + 0x18); + if (*(int *)(in_a0_lo + 0x20) < iVar2) { + if ((lVar5 == (longlong)*(int *)(in_a0_lo + 0x22)) || + (*(char *)((int)in_a0_lo + *(int *)(in_a0_lo + 0x22) + 0x4a) == + '\0')) { + *(int *)(in_a0_lo + 0x20) = iVar2; + if (*(char *)((int)in_a0_lo + (0x4b - iVar4)) == '\0') { + if (*(char *)(psVar6 + 0x26) == '\0') { + *(int *)(in_a0_lo + 0x20) = + *(int *)(in_a0_lo + 0x20) + 0x28; + } + else { + *(int *)(in_a0_lo + 0x20) = + *(int *)(in_a0_lo + 0x20) + 0xb4; + } + } + else { + if (*(char *)(psVar6 + 0x26) == '\0') { + *(int *)(in_a0_lo + 0x20) = + *(int *)(in_a0_lo + 0x20) + 0x14; + } + else { + *(int *)(in_a0_lo + 0x20) = iVar2 + 0x5a; + } + } + *(int *)(in_a0_lo + 0x22) = 1 - *(int *)(in_a0_lo + 0x22); + proc_7F02D1C4((int)in_a0_lo,lVar5,1); + lVar5 = (longlong)(iVar4 + 1); + goto LAB_7f02fbf0; + } + } + proc_7F02D1C4((int)in_a0_lo,lVar5,0); + lVar5 = (longlong)(iVar4 + 1); + } + } +LAB_7f02fbf0: + psVar6 = (short *)((int)psVar6 + 1); + } while (lVar5 != 2); + } + } + else { + proc_7F029BB0((int)in_a0_lo); + proc_7F023E48((int)in_a0_lo); + } + } + return; +} + + + +undefined8 proc_7F02FC34(float *param_1,float *param_2,float *param_3,float param_4) + +{ + undefined8 uVar1; + float in_a3_lo; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + + fVar5 = *param_3 - *param_1; + fVar4 = param_3[2] - param_1[2]; + fVar2 = *param_2; + if (fVar2 == 0.00000000) { + if (param_2[2] == 0.00000000) { + if (in_a3_lo * in_a3_lo < fVar4 * fVar4 + fVar5 * fVar5) { + return 0; + } + return 1; + } + fVar3 = param_2[2]; + } + else { + fVar3 = param_2[2]; + } + uVar1 = 0; + fVar6 = fVar4 * fVar3 + fVar2 * fVar5; + if (0.00000000 < fVar6) { + if (((fVar4 * fVar4 + fVar5 * fVar5) - in_a3_lo * in_a3_lo) * + (fVar3 * fVar3 + fVar2 * fVar2) <= fVar6 * fVar6) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + } + return uVar1; +} + + + +undefined8 proc_7F02FD50(float *param_1,float *param_2,float *param_3,float param_4) + +{ + undefined8 uVar1; + float in_a3_lo; + float fVar2; + float fVar3; + float fStack12; + undefined4 uStack8; + float fStack4; + + fVar3 = *param_1; + fVar2 = *param_3 - in_a3_lo; + if ((fVar2 < fVar3) || (fVar2 < *param_2)) { + fVar2 = *param_3 + in_a3_lo; + if (fVar2 <= fVar3) { + if (fVar2 <= *param_2) { + return 0; + } + fVar2 = param_3[2]; + } + else { + fVar2 = param_3[2]; + } + if ((fVar2 - in_a3_lo < param_1[2]) || (fVar2 - in_a3_lo < param_2[2])) { + if (fVar2 + in_a3_lo <= param_1[2]) { + if (fVar2 + in_a3_lo <= param_2[2]) { + return 0; + } + fStack12 = *param_2; + } + else { + fStack12 = *param_2; + } + fStack12 = fStack12 - fVar3; + uStack8 = 0; + fStack4 = param_2[2] - param_1[2]; + uVar1 = proc_7F02FC34(param_1,&fStack12,param_3,in_a3_lo); + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F02FE78(void) + +{ + int iVar1; + longlong lVar2; + int iVar3; + int in_a0_lo; + float in_f0; + float extraout_f0; + float fVar4; + float fVar5; + float in_f12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float fVar6; + float fStack20; + + iVar1 = *(int *)(in_a0_lo + 0x1c); + *(int *)(in_a0_lo + 200) = global_timer; + if (*(char *)(in_a0_lo + 9) != '\x01') { + if (global_timer + -0x3c <= *(int *)(in_a0_lo + 0xcc)) { + lVar2 = proc_7F02FD50((float *)(in_a0_lo + 0xbc), + (float *)(*(int *)(in_a0_lo + 0x18) + 8), + (float *)(in_a0_lo + 0x2c),in_f12); + in_f0 = extraout_f0; + if (lVar2 == 0) { + proc_7F02F690(in_a0_lo,(float *)(in_a0_lo + 0x2c),1,(float *)(in_a0_lo + 0x40)); + if (0 < *(int *)(in_a0_lo + 0x3c)) { + *(int *)(in_a0_lo + 0x3c) = *(int *)(in_a0_lo + 0x3c) - clock_timer; + return; + } + fStack20 = dword_80030988; + iVar3 = proc_7F06F5AC(iVar1); + if (iVar3 == ptr_animation_table + 0x777c) { + fStack20 = dword_80030994; + } + fVar4 = proc_7F06F618(iVar1); + *(float *)(in_a0_lo + 0x38) = + *(float *)(in_a0_lo + 0x38) + fStack20 * global_timer_delta * fVar4; + return; + } + } + } + proc_7F06F5AC(iVar1); + proc_7F06F5BC(iVar1); + fVar4 = in_f0 - 0.00000000; + if (in_f0 < 0.00000000) { + iVar3 = proc_7F06F5AC(iVar1); + fVar5 = (float)(uint)*(ushort *)(iVar3 + 4); + if (false) { + fVar5 = fVar5 + 4294967296.00000000; + } + fVar4 = fVar4 + fVar5; + } + iVar3 = proc_7F06F5AC(iVar1); + fVar5 = (float)(uint)*(ushort *)(iVar3 + 4); + if (false) { + fVar5 = fVar5 + 4294967296.00000000; + } + if (fVar5 * 0.50000000 < fVar4) { + proc_7F06F5AC(iVar1); + proc_7F06FE90(iVar1,extraout_f12,extraout_f14); + } + else { + iVar3 = proc_7F06F5AC(iVar1); + fVar4 = (float)(uint)*(ushort *)(iVar3 + 4); + if (false) { + fVar4 = fVar4 + 4294967296.00000000; + } + fVar5 = extraout_f12_00; + fVar6 = extraout_f14_00; + if (fVar4 * 0.50000000 - 0.00000000 < 0.00000000) { + proc_7F06F5AC(iVar1); + fVar5 = extraout_f12_01; + fVar6 = extraout_f14_01; + } + proc_7F06FE90(iVar1,fVar5,fVar6); + } + proc_7F023E48(in_a0_lo); + return; +} + + + +undefined4 +proc_7F030128(int param_1,undefined4 *param_2,int param_3,undefined4 *param_4,int param_5, + undefined4 param_6) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f14; + undefined4 uStack20; + undefined4 uStack16; + float fStack12; + undefined4 uStack8; + u32 uStack4; + + uStack8 = 0; + uStack4 = param_3; + proc_7F023160(*(int *)(param_1 + 0x18),&uStack20,&fStack12,&uStack16); + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); + if (iVar1 != 0) { + if (param_5 == 0) { + uStack8 = 1; + } + else { + if (uStack4 == param_5) { + uStack8 = 1; + } + } + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + return uStack8; +} + + + +undefined4 +proc_7F0301FC(int param_1,float *param_2,u32 param_3,float *param_4,float param_5,float param_6) + +{ + int iVar1; + float fVar2; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f12_01; + f32 extraout_f12_02; + f32 extraout_f14; + f32 extraout_f14_00; + f32 extraout_f14_01; + f32 extraout_f14_02; + undefined4 uStack44; + undefined4 uStack40; + float fStack36; + undefined4 uStack32; + float fStack16; + undefined4 uStack12; + float fStack8; + u32 uStack4; + + uStack32 = 0; + proc_7F023160(*(int *)(param_1 + 0x18),&uStack44,&fStack36,&uStack40); + fStack16 = *param_4 - *param_2; + uStack12 = 0; + fStack8 = param_4[2] - param_2[2]; + if ((fStack16 == 0.00000000) && (fStack8 == 0.00000000)) { + uStack32 = 1; + } + else { + fVar2 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); + fStack16 = fStack16 * (1.00000000 / fVar2); + fStack8 = fStack8 * (1.00000000 / fVar2); + param_6 = fStack8 * param_6; + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + uStack4 = param_3; + iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); + if ((iVar1 != 0) && + (iVar1 = proc_7F0B0E24(&uStack4,extraout_f12_00,extraout_f14_00,(f32)(*param_2 + param_6) + ), iVar1 != 0)) { + uStack4 = param_3; + iVar1 = proc_7F0B0E24(&uStack4,extraout_f12_01,extraout_f14_01,(f32)*param_2); + if ((iVar1 != 0) && + (iVar1 = proc_7F0B0E24(&uStack4,extraout_f12_02,extraout_f14_02, + (f32)(*param_2 - param_6)), iVar1 != 0)) { + uStack32 = 1; + } + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + } + return uStack32; +} + + + +undefined4 +proc_7F0304AC(int param_1,undefined4 *param_2,int param_3,undefined4 *param_4,undefined4 *param_5, + int param_6,undefined4 param_7) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f14; + f32 extraout_f14_00; + u32 uStack24; + undefined4 uStack20; + undefined4 uStack16; + float fStack12; + undefined4 uStack8; + u32 uStack4; + + uStack8 = 0; + uStack4 = param_3; + proc_7F023160(*(int *)(param_1 + 0x18),&uStack20,&fStack12,&uStack16); + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); + if (iVar1 != 0) { + uStack24 = uStack4; + iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)*param_4); + if (iVar1 != 0) { + if (param_6 == 0) { + uStack8 = 1; + } + else { + if (uStack24 == param_6) { + uStack8 = 1; + } + } + } + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + return uStack8; +} + + + +void proc_7F0305E0(int param_1,float *param_2,u32 param_3,float *param_4,float *param_5, + float param_6,undefined4 param_7) + +{ + int iVar1; + f32 extraout_f12; + f32 extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + f32 extraout_f14; + f32 extraout_f14_00; + u32 uStack24; + undefined4 uStack20; + undefined4 uStack16; + float fStack12; + undefined4 uStack8; + u32 uStack4; + + uStack8 = 0; + uStack4 = param_3; + proc_7F023160(*(int *)(param_1 + 0x18),&uStack20,&fStack12,&uStack16); + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + iVar1 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); + if (iVar1 != 0) { + uStack24 = uStack4; + iVar1 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)*param_4); + if (iVar1 != 0) { + iVar1 = proc_7F0301FC(param_1,param_2,param_3,param_4,extraout_f12_01,param_7); + if (iVar1 != 0) { + iVar1 = proc_7F0301FC(param_1,param_4,uStack4,param_5,extraout_f12_02,param_7); + if (iVar1 != 0) { + uStack8 = 1; + } + } + } + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + return; +} + + + +void proc_7F03074C(float *param_1,float *param_2,float *param_3) + +{ + float fVar1; + float fVar2; + float fVar3; + + if ((param_2[2] - param_1[2]) * *param_3 + -param_3[2] * (*param_2 - *param_1) <= 0.00000000) { + fVar1 = *param_1; + fVar2 = param_1[1]; + fVar3 = param_1[2]; + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + *param_2 = fVar1; + param_2[1] = fVar2; + param_2[2] = fVar3; + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f030b7c) overlaps instruction at (ram,0x7f030b78) +// + +undefined4 +proc_7F03081C(int param_1,float *param_2,u32 param_3,float *param_4,float *param_5,float *param_6, + float param_7,float param_8,undefined4 param_9) + +{ + int iVar2; + longlong lVar1; + float fVar3; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f12_01; + f32 extraout_f12_02; + f32 extraout_f12_03; + f32 fVar4; + f32 extraout_f14; + f32 extraout_f14_00; + f32 extraout_f14_01; + f32 extraout_f14_02; + f32 extraout_f14_03; + f32 fVar5; + float in_stack_0000001c; + undefined4 uStack108; + undefined4 uStack104; + float fStack100; + undefined4 uStack96; + float fStack92; + float fStack88; + float fStack84; + float fStack80; + float fStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + int iStack44; + int iStack40; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + undefined4 uStack12; + float fStack8; + u32 uStack4; + + iStack40 = 0; + iStack44 = 0; + uStack96 = 0; + proc_7F023160(*(int *)(param_1 + 0x18),&uStack108,&fStack100,&uStack104); + uStack12 = 0; + fStack16 = *param_4 - *param_2; + fStack8 = param_4[2] - param_2[2]; + if ((fStack16 == 0.00000000) && (fStack8 == 0.00000000)) { + uStack96 = 1; + } + else { + fVar3 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); + fStack16 = fStack16 * (1.00000000 / fVar3); + fStack8 = fStack8 * (1.00000000 / fVar3); + fStack20 = fStack16 * in_stack_0000001c * flt_80052014; + fStack24 = fStack8 * in_stack_0000001c * flt_80052018; + fStack28 = fStack16 * in_stack_0000001c * flt_8005201C; + fStack32 = fStack8 * in_stack_0000001c * flt_80052020; + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + proc_7F0B1CC4(); + uStack4 = param_3; + iVar2 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); + if ((iVar2 == 0) || + (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,(f32)(*param_2 + fStack24), + (f32)(*param_2 + fStack24)), fVar4 = extraout_f12_00, + fVar5 = extraout_f14_00, iVar2 == 0)) { + iStack40 = 1; + proc_7F0B28B0(&fStack56,&fStack68); + proc_7F03074C(&fStack56,&fStack68,&fStack16); + fVar4 = extraout_f12_01; + fVar5 = extraout_f14_01; + } + uStack4 = param_3; + iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); + if ((iVar2 == 0) || + (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,fStack100,(f32)(*param_2 - fStack24)), + fVar4 = extraout_f12_02, fVar5 = extraout_f14_02, iVar2 == 0)) { + iStack44 = 1; + proc_7F0B28B0(&fStack80,&fStack92); + proc_7F03074C(&fStack80,&fStack92,&fStack16); + fVar4 = extraout_f12_03; + fVar5 = extraout_f14_03; + } + if ((iStack40 == 0) || (iStack44 == 0)) { + if (iStack40 == 0) { + if (iStack44 == 0) { + uStack4 = param_3; + iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); + if ((iVar2 == 0) || (lVar1 = proc_7F0B18B8(), -1 < lVar1)) { + proc_7F0B28B0(param_5,param_6); + proc_7F03074C(param_5,param_6,&fStack16); + } + else { + uStack96 = 1; + } + } + else { + *param_5 = fStack80; + param_5[1] = fStack76; + param_5[2] = fStack72; + *param_6 = fStack92; + param_6[1] = fStack88; + param_6[2] = fStack84; + } + } + else { + *param_5 = fStack56; + param_5[1] = fStack52; + param_5[2] = fStack48; + *param_6 = fStack68; + param_6[1] = fStack64; + param_6[2] = fStack60; + } + } + else { + proc_7F03074C(&fStack56,&fStack80,&fStack16); + proc_7F03074C(&fStack68,&fStack92,&fStack16); + *param_5 = fStack56; + param_5[1] = fStack52; + param_5[2] = fStack48; + *param_6 = fStack92; + param_6[1] = fStack88; + param_6[2] = fStack84; + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + } + return uStack96; +} + + + +// WARNING: Instruction at (ram,0x7f0310dc) overlaps instruction at (ram,0x7f0310d8) +// + +undefined4 +proc_7F030D70(int param_1,float *param_2,u32 param_3,float *param_4,float *param_5,float *param_6, + float param_7,float param_8,undefined4 param_9) + +{ + int iVar2; + longlong lVar1; + float fVar3; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f12_01; + f32 extraout_f12_02; + f32 extraout_f12_03; + f32 fVar4; + f32 extraout_f14; + f32 extraout_f14_00; + f32 extraout_f14_01; + f32 extraout_f14_02; + f32 extraout_f14_03; + f32 fVar5; + float in_stack_0000001c; + undefined4 uStack116; + undefined4 uStack112; + float fStack108; + float fStack104; + float fStack100; + undefined4 uStack96; + float fStack92; + float fStack88; + float fStack84; + float fStack80; + float fStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + int iStack44; + int iStack40; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + undefined4 uStack12; + float fStack8; + u32 uStack4; + + iStack40 = 0; + iStack44 = 0; + uStack96 = 0; + proc_7F023160(*(int *)(param_1 + 0x18),&uStack116,&fStack108,&uStack112); + uStack12 = 0; + fStack16 = *param_4 - *param_2; + fStack8 = param_4[2] - param_2[2]; + if ((fStack16 == 0.00000000) && (fStack8 == 0.00000000)) { + uStack96 = 1; + } + else { + fVar3 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); + fStack16 = fStack16 * (1.00000000 / fVar3); + fStack8 = fStack8 * (1.00000000 / fVar3); + fStack20 = fStack16 * in_stack_0000001c * flt_80052024; + fStack24 = fStack8 * in_stack_0000001c * flt_80052028; + fStack28 = fStack16 * in_stack_0000001c * flt_8005202C; + fStack32 = fStack8 * in_stack_0000001c * flt_80052030; + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,0); + proc_7F0B1CC4(); + uStack4 = param_3; + iVar2 = proc_7F0B0E24(&uStack4,extraout_f12,extraout_f14,(f32)*param_2); + if ((iVar2 == 0) || + (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,(f32)(*param_2 + fStack24), + (f32)(*param_2 + fStack24)), fVar4 = extraout_f12_00, + fVar5 = extraout_f14_00, iVar2 == 0)) { + iStack40 = 1; + proc_7F0B28B0(&fStack56,&fStack68); + proc_7F03074C(&fStack56,&fStack68,&fStack16); + fStack100 = DAT_8007ba00; + fVar4 = extraout_f12_01; + fVar5 = extraout_f14_01; + } + uStack4 = param_3; + iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); + if ((iVar2 == 0) || + (iVar2 = proc_7F0B0E24(&uStack4,1.00000000,fStack108,(f32)(*param_2 - fStack24)), + fVar4 = extraout_f12_02, fVar5 = extraout_f14_02, iVar2 == 0)) { + iStack44 = 1; + proc_7F0B28B0(&fStack80,&fStack92); + proc_7F03074C(&fStack80,&fStack92,&fStack16); + fStack104 = DAT_8007ba00; + fVar4 = extraout_f12_03; + fVar5 = extraout_f14_03; + } + if ((iStack40 == 0) || (iStack44 == 0)) { + if (iStack40 == 0) { + if (iStack44 == 0) { + uStack4 = param_3; + iVar2 = proc_7F0B0E24(&uStack4,fVar4,fVar5,(f32)*param_2); + if ((iVar2 == 0) || (lVar1 = proc_7F0B18B8(), -1 < lVar1)) { + proc_7F0B28B0(param_5,param_6); + proc_7F03074C(param_5,param_6,&fStack16); + } + else { + uStack96 = 1; + } + } + else { + *param_5 = fStack80; + param_5[1] = fStack76; + param_5[2] = fStack72; + *param_6 = fStack92; + param_6[1] = fStack88; + param_6[2] = fStack84; + } + } + else { + *param_5 = fStack56; + param_5[1] = fStack52; + param_5[2] = fStack48; + *param_6 = fStack68; + param_6[1] = fStack64; + param_6[2] = fStack60; + } + } + else { + if (fStack100 < fStack104) { + *param_5 = fStack56; + param_5[1] = fStack52; + param_5[2] = fStack48; + *param_6 = fStack68; + param_6[1] = fStack64; + param_6[2] = fStack60; + } + else { + *param_5 = fStack80; + param_5[1] = fStack76; + param_5[2] = fStack72; + *param_6 = fStack92; + param_6[1] = fStack88; + param_6[2] = fStack84; + } + } + set_or_unset_GUARDdata_flag((GUARDdata *)param_1,1); + } + return uStack96; +} + + + +ulonglong proc_7F03130C(int param_1,float *param_2,longlong param_3,float *param_4,float param_5, + int param_6,undefined4 *param_7,int param_8,float param_9,int param_10, + int param_11) + +{ + int iVar2; + ulonglong uVar1; + float *pfVar3; + float fVar4; + float __x; + float fVar5; + float fVar6; + float extraout_f12; + float extraout_f14; + undefined4 in_stack_00000024; + int in_stack_00000028; + float *pfStack56; + float *pfStack52; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + undefined4 uStack12; + float fStack8; + int iStack4; + + iStack4 = *(int *)(param_1 + 0x18); + pfStack56 = param_2; + pfStack52 = param_4; + if (param_3 != 0) { + pfStack56 = param_4; + pfStack52 = param_2; + } + fStack16 = *param_2 - *(float *)(iStack4 + 8); + uStack12 = 0; + fStack8 = param_2[2] - *(float *)(iStack4 + 0x10); + fVar4 = sqrtf(fStack8 * fStack8 + fStack16 * fStack16); + fVar5 = (float)param_6 * (1.00000000 / fVar4); + fStack16 = fStack16 * fVar5; + fStack8 = fStack8 * fVar5; + __x = flt_80052034; + if (fVar5 <= 1.00000000) { + __x = proc_7F05ACB0((float)param_6 * (1.00000000 / fVar4)); + } + if (((int)param_3 == 0) && (__x != 0.00000000)) { + __x = flt_80052038 - __x; + } + fVar4 = cosf(__x); + fVar5 = sinf(__x); + fVar6 = -fVar4 * fStack16; + fVar5 = fStack8 * fVar5; + fVar4 = sinf(__x); + __x = cosf(__x); + pfVar3 = (float *)(iStack4 + 8); + fStack28 = fVar5 + fVar6 + *param_2; + fStack24 = param_2[1]; + fStack20 = (-fVar4 * fStack16 - fStack8 * __x) + param_2[2]; + iVar2 = proc_7F03081C(param_1,pfVar3,*(undefined4 *)(iStack4 + 0x14),&fStack28,pfStack52, + pfStack56,extraout_f12,extraout_f14,param_11); + if (iVar2 == 0) { + uVar1 = 0; + } + else { + if ((param_7 == NULL) || + (iVar2 = proc_7F0304AC(param_1,pfVar3,*(int *)(iStack4 + 0x14),&fStack28, + (undefined4 *)param_8,0,in_stack_00000024), iVar2 != 0)) { + if (in_stack_00000028 == 0) { + *(undefined *)(param_10 + 2) = 1; + *(float *)(param_10 + 4) = fStack28; + *(float *)(param_10 + 8) = fStack24; + *(float *)(param_10 + 0xc) = fStack20; + uVar1 = 1; + } + else { + *(undefined *)(param_10 + 3) = 1; + *(float *)(param_10 + 0x2c) = fStack28; + *(float *)(param_10 + 0x30) = fStack24; + *(float *)(param_10 + 0x34) = fStack20; + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + } + return uVar1; +} + + + +void proc_7F0315A4(int param_1,float *param_2,undefined8 param_3,char *param_4) + +{ + int iVar2; + ulonglong uVar1; + char *pcVar3; + int iVar4; + char cVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float in_f12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float fVar11; + float extraout_f12_09; + float extraout_f12_10; + float in_f14; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float extraout_f14_06; + float extraout_f14_07; + float extraout_f14_08; + float extraout_f14_09; + float extraout_f14_10; + float extraout_f14_11; + float fVar12; + int iStack32; + float afStack28 [2]; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + + fVar10 = flt_80052040; + fVar9 = flt_8005203C; + iVar4 = *(int *)(param_1 + 0x18); + iStack32 = 0; + do { + cVar5 = *param_4; + if (cVar5 == '\0') { + fStack16 = *param_2; +LAB_7f03164c: + fStack12 = param_2[1]; + fStack8 = param_2[2]; + iVar2 = proc_7F03081C(param_1,(float *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0x14), + &fStack16,(float *)(param_4 + 0x10),(float *)(param_4 + 0x1c), + in_f12,in_f14,-*(float *)(param_1 + 0x24)); + in_f12 = extraout_f12; + in_f14 = extraout_f14; + if (iVar2 == 0) { + if (*param_4 == '\0') { + *param_4 = '\x01'; + param_4[1] = '\0'; + } + else { + if (*param_4 == '\x02') { + *param_4 = '\x03'; + param_4[1] = '\0'; + } + } + } + else { + param_4[2] = '\x01'; + *(float *)(param_4 + 4) = fStack16; + *(float *)(param_4 + 8) = fStack12; + *param_4 = '\x04'; + *(float *)(param_4 + 0xc) = fStack8; + } + } + else { + if (cVar5 == '\x02') { + fStack16 = *param_2; + goto LAB_7f03164c; + } + if (cVar5 == '\x01') { + fVar11 = *(float *)(param_1 + 0x24) * flt_80052044 * flt_80052048; + uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x10),1,afStack28,in_f12, + (int)fVar11,(undefined4 *)((int)&rgba + 1),(int)param_2,in_f14 + ,param_4,0); + if (uVar1 == 0) { + uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x1c),0,afStack28, + extraout_f12_00,(int)fVar11,(undefined4 *)((int)&rgba + 1) + ,(int)param_2,extraout_f14_00,param_4,0); + in_f12 = extraout_f12_01; + in_f14 = extraout_f14_01; + if (uVar1 == 0) { + param_4[1] = param_4[1] + '\x01'; + if ('\x05' < param_4[1]) { + *param_4 = '\x02'; + } + } + else { + *param_4 = '\x04'; + } + } + else { + *param_4 = '\x04'; + in_f12 = extraout_f12_00; + in_f14 = extraout_f14_00; + } + } + else { + if (cVar5 == '\x03') { + fVar11 = *(float *)(param_1 + 0x24) * flt_8005204C * flt_80052050; + uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x10),1,afStack28,in_f12, + (int)fVar11,NULL,0,in_f14,param_4,0); + if (uVar1 == 0) { + uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x1c),0,afStack28, + extraout_f12_02,(int)fVar11,NULL,0,extraout_f14_02, + param_4,0); + in_f12 = extraout_f12_03; + in_f14 = extraout_f14_03; + if (uVar1 == 0) { + param_4[1] = param_4[1] + '\x01'; + if ('\x05' < param_4[1]) { + param_4[2] = '\0'; + param_4[3] = param_4[2]; + fVar11 = *param_2; + *(float *)(param_4 + 4) = fVar11; + *(float *)(param_4 + 0x2c) = fVar11; + fVar11 = param_2[1]; + *(float *)(param_4 + 8) = fVar11; + *(float *)(param_4 + 0x30) = fVar11; + fVar11 = param_2[2]; + *param_4 = '\0'; + *(float *)(param_4 + 0xc) = fVar11; + *(float *)(param_4 + 0x34) = fVar11; + } + } + else { + *param_4 = '\x04'; + } + } + else { + *param_4 = '\x04'; + in_f12 = extraout_f12_02; + in_f14 = extraout_f14_02; + } + } + else { + if (cVar5 == '\x04') { + iVar2 = proc_7F030D70(param_1,(float *)(iVar4 + 8), + *(undefined4 *)(iVar4 + 0x14),(float *)(param_4 + 4), + (float *)(param_4 + 0x10),(float *)(param_4 + 0x1c), + in_f12,in_f14,-*(float *)(param_1 + 0x24)); + in_f12 = extraout_f12_04; + in_f14 = extraout_f14_04; + if (iVar2 == 0) { + *param_4 = '\x05'; + param_4[1] = '\0'; + } + else { + param_4[3] = '\x01'; + *param_4 = '\0'; + *(undefined4 *)(param_4 + 0x2c) = *(undefined4 *)(param_4 + 4); + *(undefined4 *)(param_4 + 0x30) = *(undefined4 *)(param_4 + 8); + *(undefined4 *)(param_4 + 0x34) = *(undefined4 *)(param_4 + 0xc); + } + } + else { + if (cVar5 == '\x05') { + fVar12 = *(float *)(param_1 + 0x24) * flt_80052054 * flt_80052058; + fVar11 = convert_angle_using_inverse + ((f32)(*(float *)(param_4 + 4) - + *(float *)(iVar4 + 8)), + (f32)(*(float *)(param_4 + 0xc) - + *(float *)(iVar4 + 0x10))); + fVar6 = convert_angle_using_inverse + ((f32)(*(float *)(param_4 + 0x10) - + *(float *)(iVar4 + 8)), + (f32)(*(float *)(param_4 + 0x18) - + *(float *)(iVar4 + 0x10))); + fVar6 = fVar11 - fVar6; + fVar7 = convert_angle_using_inverse + ((f32)(*(float *)(param_4 + 0x1c) - + *(float *)(iVar4 + 8)), + (f32)(*(float *)(param_4 + 0x24) - + *(float *)(iVar4 + 0x10))); + fVar7 = fVar11 - fVar7; + if (fVar6 < 0.00000000) { + fVar6 = fVar6 + fVar10; + } + if (fVar9 <= fVar6) { + fVar6 = fVar6 - fVar10; + } + if (fVar6 < 0.00000000) { + fVar6 = -fVar6; + } + fVar8 = fVar7; + if (fVar7 < 0.00000000) { + fVar8 = fVar7 + fVar10; + } + if (fVar9 <= fVar8) { + fVar8 = fVar8 - fVar10; + } + if (fVar8 < 0.00000000) { + fVar8 = -fVar8; + } + if (fVar6 < fVar8) { + fVar6 = fVar12 * flt_8005205C; + uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x10),1,afStack28, + fVar7,(int)fVar12,NULL,0,extraout_f14_05, + param_4,(int)fVar6); + if (uVar1 != 0) { + *param_4 = '\0'; + in_f12 = extraout_f12_05; + in_f14 = extraout_f14_06; + break; + } + fVar7 = convert_angle_using_inverse + ((f32)(*(float *)(param_4 + 0x10) - + *(float *)(iVar4 + 8)), + (f32)(*(float *)(param_4 + 0x18) - + *(float *)(iVar4 + 0x10))); + fVar7 = fVar11 - fVar7; + fVar8 = convert_angle_using_inverse + ((f32)(afStack28[0] - *(float *)(iVar4 + 8)), + (f32)(fStack20 - *(float *)(iVar4 + 0x10))); + in_f12 = fVar11 - fVar8; + if (fVar7 < 0.00000000) { + fVar7 = fVar7 + fVar10; + } + if (fVar9 <= fVar7) { + fVar7 = fVar7 - fVar10; + } + if (fVar7 < 0.00000000) { + fVar7 = -fVar7; + } + fVar11 = in_f12; + if (in_f12 < 0.00000000) { + fVar11 = in_f12 + fVar10; + } + if (fVar9 <= fVar11) { + fVar11 = fVar11 - fVar10; + } + if (fVar11 < 0.00000000) { + fVar11 = -fVar11; + } + if (fVar11 < fVar7) { + uVar1 = proc_7F03130C(param_1,afStack28,0,afStack28,in_f12, + (int)fVar12,NULL,0,extraout_f14_07,param_4 + ,(int)fVar6); + in_f12 = extraout_f12_06; + in_f14 = extraout_f14_08; + if (uVar1 != 0) { + *param_4 = '\0'; + break; + } + cVar5 = param_4[1]; + } + else { + cVar5 = param_4[1]; + in_f14 = extraout_f14_07; + } + } + else { + fVar6 = fVar12 * flt_80052060; + uVar1 = proc_7F03130C(param_1,(float *)(param_4 + 0x1c),0,afStack28, + fVar7,(int)fVar12,NULL,0,extraout_f14_05, + param_4,(int)fVar6); + if (uVar1 != 0) { + *param_4 = '\0'; + in_f12 = extraout_f12_07; + in_f14 = extraout_f14_09; + break; + } + fVar7 = convert_angle_using_inverse + ((f32)(*(float *)(param_4 + 0x1c) - + *(float *)(iVar4 + 8)), + (f32)(*(float *)(param_4 + 0x24) - + *(float *)(iVar4 + 0x10))); + fVar7 = fVar11 - fVar7; + fVar8 = convert_angle_using_inverse + ((f32)(afStack28[0] - *(float *)(iVar4 + 8)), + (f32)(fStack20 - *(float *)(iVar4 + 0x10))); + in_f12 = fVar11 - fVar8; + if (fVar7 < 0.00000000) { + fVar7 = fVar7 + fVar10; + } + if (fVar9 <= fVar7) { + fVar7 = fVar7 - fVar10; + } + if (fVar7 < 0.00000000) { + fVar7 = -fVar7; + } + fVar11 = in_f12; + if (in_f12 < 0.00000000) { + fVar11 = in_f12 + fVar10; + } + if (fVar9 <= fVar11) { + fVar11 = fVar11 - fVar10; + } + if (fVar11 < 0.00000000) { + fVar11 = -fVar11; + } + if (fVar11 < fVar7) { + uVar1 = proc_7F03130C(param_1,afStack28,1,afStack28,in_f12, + (int)fVar12,NULL,0,extraout_f14_10,param_4 + ,(int)fVar6); + in_f12 = extraout_f12_08; + in_f14 = extraout_f14_11; + if (uVar1 != 0) { + *param_4 = '\0'; + break; + } + cVar5 = param_4[1]; + } + else { + cVar5 = param_4[1]; + in_f14 = extraout_f14_10; + } + } + param_4[1] = cVar5 + '\x01'; + if ('\x05' < param_4[1]) { + param_4[3] = '\0'; + *param_4 = '\0'; + } + } + } + } + } + } + iStack32 += 1; + } while (iStack32 != 1); + if (param_4[3] == '\0') { + *(undefined4 *)(param_4 + 0x2c) = *(undefined4 *)(param_4 + 4); + *(undefined4 *)(param_4 + 0x30) = *(undefined4 *)(param_4 + 8); + *(undefined4 *)(param_4 + 0x34) = *(undefined4 *)(param_4 + 0xc); + iVar2 = *(int *)(param_4 + 0x28); + } + else { + iVar2 = *(int *)(param_4 + 0x28); + } + if (iVar2 % 10 == 0) { + pcVar3 = proc_7F0B1410(*(int *)(iVar4 + 0x14),in_f12,in_f14,*(float *)(iVar4 + 8), + *(float *)(iVar4 + 0x10),*(uint *)(param_4 + 0x2c)); + if (pcVar3 != NULL) { + if (*(int *)(*(int *)(pcVar3 + 4) + 0xc) << 2 < 0) { + pcVar3 = NULL; + } + else { + fVar9 = *(float *)(pcVar3 + 8) - *(float *)(iVar4 + 8); + fVar10 = *(float *)(pcVar3 + 0xc) - *(float *)(iVar4 + 0xc); + fVar11 = *(float *)(pcVar3 + 0x10) - *(float *)(iVar4 + 0x10); + if (fVar9 * fVar9 + fVar10 * fVar10 + fVar11 * fVar11 < flt_80052064) { + proc_7F0281F4(param_1); + proc_7F055B78(iVar4,*(int *)(pcVar3 + 4)); + proc_7F054988(*(int *)(pcVar3 + 4),1); + if ((((*(ushort *)(param_1 + 0x12) & 0x10) == 0) && + (iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), + iVar4 != ptr_animation_table + 0x8194)) && + (iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), + iVar4 != ptr_animation_table + 0x1c)) { + proc_7F023948(param_1,extraout_f12_09); + *(undefined4 *)(param_1 + 0xcc) = global_timer; + } + } + else { + pcVar3 = NULL; + } + } + } + if ((pcVar3 == NULL) || ((*(ushort *)(param_1 + 0x12) & 0x10) != 0)) { + iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)); + if ((iVar4 == ptr_animation_table + 0x8194) || + (iVar4 = proc_7F06F5AC(*(int *)(param_1 + 0x1c)), iVar4 == ptr_animation_table + 0x1c + )) { + if (*(char *)(param_1 + 7) == '\x0e') { + proc_7F028FAC(param_1); + } + else { + proc_7F028DA0(param_1); + } + } + if (pcVar3 == NULL) { + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xffef; + cVar5 = *(char *)(param_1 + 7); + } + else { + cVar5 = *(char *)(param_1 + 7); + } + } + else { + cVar5 = *(char *)(param_1 + 7); + } + } + else { + cVar5 = *(char *)(param_1 + 7); + } + if (cVar5 == '\x0e') { + proc_7F02F690(param_1,(float *)(param_4 + 0x2c),0,(float *)(param_1 + 0x7c)); + } + else { + proc_7F02F690(param_1,(float *)(param_4 + 0x2c),(uint)*(byte *)(param_1 + 0x59), + (float *)(param_1 + 0xa0)); + if (*(char *)(param_1 + 0x59) == '\x02') { + if (*(float *)(param_1 + 0xa0) == 0.00000000) { + if (*(int *)(param_1 + 0x14) << 0xc < 0) { + proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3f266666,extraout_f12_10); + } + else { + proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3f000000,extraout_f12_10); + } + } + else { + proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3e800000,extraout_f12_10); + } + } + else { + if (*(char *)(param_1 + 0x59) == '\x01') { + if (*(float *)(param_1 + 0xa0) == 0.00000000) { + proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3f000000,extraout_f12_10); + } + else { + proc_7F06FE4C(*(int *)(param_1 + 0x1c),0x3ecccccd,extraout_f12_10); + } + } + } + } + return; +} + + + +void proc_7F032088(void) + +{ + int *piVar1; + bool bVar2; + longlong in_v0; + longlong lVar3; + int iVar4; + int in_a0_lo; + uint uVar5; + float *pfVar6; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fVar7; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float *pfStack92; + int iStack52; + float afStack48 [3]; + int iStack36; + float afStack32 [3]; + int iStack20; + int iStack16; + float fStack12; + float *pfStack8; + + iStack16 = *(int *)(in_a0_lo + 0x18); + iStack20 = 0; + *(int *)(in_a0_lo + 0x84) = *(int *)(in_a0_lo + 0x84) + 1; + *(int *)(in_a0_lo + 200) = global_timer; + if (*(int *)(in_a0_lo + 0xcc) < global_timer + -0x3c) { + in_v0 = proc_7F028DDC(in_a0_lo,(float *)(in_a0_lo + 0x2c),*(undefined4 *)(in_a0_lo + 0x38), + *(char *)(in_a0_lo + 0x59)); + } + proc_7F0281FC(in_a0_lo); + fVar7 = extraout_f12; + if ((*(char *)(in_a0_lo + 0x5c) != '\x06') && (*(int *)(in_a0_lo + 0x9c) + 0xb4 < global_timer)) + { + proc_7F027F20(in_a0_lo,afStack32,&iStack36); + proc_7F027DB0(in_a0_lo,afStack32,iStack36); + fVar7 = extraout_f12_00; + if (in_v0 != 0) { + iStack20 = 1; + proc_7F027E90(in_a0_lo,(undefined *)(in_a0_lo + 0x5c),afStack32); + fVar7 = extraout_f12_01; + } + } + iVar4 = iStack16; + if (9 < (int)setting_007_5) { + proc_7F023E48(in_a0_lo); + return; + } + if (*(char *)(in_a0_lo + 0x5c) == '\x06') { + proc_7F027F20(in_a0_lo,afStack48,&iStack52); + if ((iStack20 == 0) && + (((*(byte *)(iStack16 + 1) & 2) != 0 || + (proc_7F027DB0(in_a0_lo,afStack48,iStack52), in_v0 == 0)))) { + proc_7F02828C(in_a0_lo); + *(int *)(in_a0_lo + 0x9c) = global_timer; + return; + } + pfVar6 = (float *)proc_7F027FA8(in_a0_lo); + proc_7F028600(in_a0_lo,(undefined *)(in_a0_lo + 0x5c),extraout_f12_02,pfVar6,(int)afStack48) + ; + return; + } + piVar1 = *(int **)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x40); + if (piVar1 == NULL) { + lVar3 = proc_7F02FD50((float *)(in_a0_lo + 0xbc),(float *)(iStack16 + 8), + (float *)(in_a0_lo + 0x2c),fVar7); + bVar2 = false; + if (lVar3 != 0) { + proc_7F023E48(in_a0_lo); + return; + } + } + else { + lVar3 = proc_7F02FD50((float *)(in_a0_lo + 0xbc),(float *)(iStack16 + 8), + (float *)(ptr_0xxxpresets + *piVar1 * 0x2c),fVar7); + bVar2 = false; + if (lVar3 != 0) { + bVar2 = true; + } + } + pfStack92 = (float *)(iVar4 + 8); + if (bVar2) { + proc_7F0282E0(in_a0_lo); + } + if (*(int *)(in_a0_lo + 0x84) % 10 == 5) { + iVar4 = in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4; + if (*(int *)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x40) == 0) { + iVar4 = *(int *)(in_a0_lo + 0x84); + } + else { + if (*(int *)(iVar4 + 0x44) == 0) { + iVar4 = *(int *)(in_a0_lo + 0x84); + } + else { + piVar1 = *(int **)(iVar4 + 0x48); + pfStack8 = (float *)(in_a0_lo + 0x2c); + if (piVar1 == NULL) { + fStack12 = *(float *)(in_a0_lo + 0x38); + } + else { + pfStack8 = (float *)(ptr_0xxxpresets + *piVar1 * 0x2c); + fStack12 = pfStack8[10]; + } + iVar4 = proc_7F030128(in_a0_lo,pfStack92,*(int *)(iStack16 + 0x14),pfStack8, + (int)fStack12,0x10); + if (iVar4 != 0) { + iVar4 = proc_7F0301FC(in_a0_lo,pfStack92,*(undefined4 *)(iStack16 + 0x14), + pfStack8,extraout_f12_03, + *(float *)(in_a0_lo + 0x24) * flt_80052068); + if (iVar4 == 0) { + iVar4 = *(int *)(in_a0_lo + 0x84); + goto LAB_7f0323e0; + } + proc_7F0282E0(in_a0_lo); + proc_7F0282E0(in_a0_lo); + } + iVar4 = *(int *)(in_a0_lo + 0x84); + } + } + } + else { + iVar4 = *(int *)(in_a0_lo + 0x84); + } +LAB_7f0323e0: + if (iVar4 % 10 == 0) { + if (*(int *)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x40) != 0) { + piVar1 = *(int **)(in_a0_lo + (uint)*(byte *)(in_a0_lo + 0x58) * 4 + 0x44); + pfStack8 = (float *)(in_a0_lo + 0x2c); + if (piVar1 == NULL) { + fStack12 = *(float *)(in_a0_lo + 0x38); + } + else { + pfStack8 = (float *)(ptr_0xxxpresets + *piVar1 * 0x2c); + fStack12 = pfStack8[10]; + } + iVar4 = proc_7F030128(in_a0_lo,pfStack92,*(int *)(iStack16 + 0x14),pfStack8, + (int)fStack12,0x10); + if (iVar4 != 0) { + iVar4 = proc_7F0301FC(in_a0_lo,pfStack92,*(undefined4 *)(iStack16 + 0x14),pfStack8, + extraout_f12_04,*(float *)(in_a0_lo + 0x24) * flt_8005206C); + if (iVar4 == 0) { + uVar5 = (uint)*(byte *)(in_a0_lo + 0x58); + goto LAB_7f0324d4; + } + proc_7F0282E0(in_a0_lo); + } + } + uVar5 = (uint)*(byte *)(in_a0_lo + 0x58); + } + else { + uVar5 = (uint)*(byte *)(in_a0_lo + 0x58); + } +LAB_7f0324d4: + pfStack8 = (float *)(in_a0_lo + 0x2c); + piVar1 = *(int **)(in_a0_lo + uVar5 * 4 + 0x40); + if (piVar1 == NULL) { + fVar7 = *(float *)(in_a0_lo + 0x38); + } + else { + pfStack8 = (float *)(ptr_0xxxpresets + *piVar1 * 0x2c); + fVar7 = pfStack8[10]; + } + proc_7F0315A4(in_a0_lo,pfStack8,(longlong)(int)fVar7,(char *)(in_a0_lo + 0x5c)); + return; +} + + + +// WARNING: Instruction at (ram,0x7f03261c) overlaps instruction at (ram,0x7f032618) +// + +void proc_7F032548(int param_1) + +{ + int iVar1; + bool bVar2; + longlong lVar3; + char cVar4; + float *pfVar5; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float fVar6; + + iVar1 = *(int *)(param_1 + 0x18); + pfVar5 = (float *)proc_7F028474(param_1); + lVar3 = (longlong)(int)pfVar5; + bVar2 = false; + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1; + *(int *)(param_1 + 200) = global_timer; + fVar6 = extraout_f12; + if (*(char *)(param_1 + 0x38) != '\x06') { + if (global_timer <= *(int *)(param_1 + 0x78) + 0xb4) { + cVar4 = *(char *)(param_1 + 0x38); + goto LAB_7f0325dc; + } + proc_7F027E70(param_1,pfVar5); + fVar6 = extraout_f12_00; + if (lVar3 != 0) { + bVar2 = true; + proc_7F027E90(param_1,(undefined *)(param_1 + 0x38),pfVar5); + fVar6 = extraout_f12_01; + } + } + cVar4 = *(char *)(param_1 + 0x38); +LAB_7f0325dc: + if (cVar4 == '\x06') { + if ((bVar2) || + (((*(byte *)(iVar1 + 1) & 2) == 0 && + (proc_7F027E70(param_1,pfVar5), fVar6 = extraout_f12_02, lVar3 != 0)))) { + proc_7F028600(param_1,(undefined *)(param_1 + 0x38),fVar6,dword_80030984,(int)pfVar5); + } + else { + *(int *)(param_1 + 0x78) = global_timer; + proc_7F028494(param_1); + } + } + else { + lVar3 = proc_7F02FD50((float *)(param_1 + 0xbc),(float *)(iVar1 + 8),pfVar5,fVar6); + if (lVar3 != 0) { + proc_7F0284DC(param_1); + pfVar5 = (float *)proc_7F028474(param_1); + } + proc_7F0315A4(param_1,pfVar5,(longlong)(int)pfVar5[10],(char *)(param_1 + 0x38)); + } + return; +} + + + +void proc_7F0326BC(int param_1) + +{ + char cVar1; + ushort uVar2; + char cVar3; + uint uVar4; + float in_f12; + + if (clock_timer < 1) { + return; + } + if (*(char *)(param_1 + 7) == '\0') { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1; + proc_7F023A94(param_1,in_f12); + *(undefined *)(param_1 + 8) = 0; + uVar2 = *(ushort *)(param_1 + 0x12); + } + else { + uVar2 = *(ushort *)(param_1 + 0x12); + } + cVar3 = (char)clock_timer; + if ((uVar2 & 0x40) == 0) { + cVar1 = *(char *)(param_1 + 8); + } + else { + *(int *)(param_1 + 0x110) = *(int *)(param_1 + 0x110) + clock_timer; + cVar3 = (char)clock_timer; + cVar1 = *(char *)(param_1 + 8); + } + *(char *)(param_1 + 8) = cVar1 - cVar3; + if ((-1 < *(char *)(param_1 + 8)) && (-1 < *(int *)(param_1 + 0x14) << 0xd)) { + return; + } + *(undefined *)(param_1 + 8) = 0; + parse_handle_actionblocks(); + if (false) goto switchD_7f032780_caseD_11; + switch(*(undefined *)(param_1 + 7)) { + case 1: + proc_7F02AD98(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 2: + proc_7F02B4E0(param_1); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 3: + proc_7F02B4E8(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 4: + proc_7F02B9A4(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 5: + proc_7F02B774(param_1); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 6: + proc_7F02BC80(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 7: + proc_7F02BD20(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 8: + proc_7F02EBFC(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 9: + proc_7F02F888(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 10: + proc_7F02EEE0(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0xb: + proc_7F02BDA4(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0xc: + proc_7F02BE00(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0xd: + proc_7F02FE78(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0xe: + proc_7F032548(param_1); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0xf: + proc_7F032088(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0x10: + proc_7F02B638(param_1); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0x12: + proc_7F02BF24(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0x13: + proc_7F02BEA8(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0x14: + proc_7F02F3F8(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0x16: + proc_7F02BE58(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0x17: + proc_7F02F5A4(); + uVar4 = *(uint *)(param_1 + 0x14); + break; + case 0x18: + proc_7F02F688(); + default: +switchD_7f032780_caseD_11: + uVar4 = *(uint *)(param_1 + 0x14); + } + *(uint *)(param_1 + 0x14) = uVar4 & 0xfffffffb; + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) & 0xfdfd; + *(undefined2 *)(param_1 + 0x118) = 0xffff; + *(undefined2 *)(param_1 + 0x11a) = 0xffff; + return; +} + + + +// WARNING: Instruction at (ram,0x7f032a0c) overlaps instruction at (ram,0x7f032a08) +// + +void proc_7F03291C(void) + +{ + uint uVar1; + int iVar2; + uint uVar3; + GUARDdata *pGVar4; + u16 *puVar5; + u16 *puVar6; + u16 *puVar7; + u16 *puVar8; + int iVar9; + + uVar1 = get_numguards(); + iVar2 = 0; + iVar9 = 0; + if (0 < objectiveregisters3) { + do { + proc_7F0326BC(iVar9 + objectiveregisters2); + iVar2 += 1; + iVar9 += 0x1dc; + } while (iVar2 < objectiveregisters3); + } + uVar3 = 0; + setting_007_5 = 0.00000000; + if (0 < (int)uVar1) { + pGVar4 = ptr_guard_data; + if ((uVar1 & 3) == 0) { + iVar2 = 0; + } + else { + do { + uVar3 += 1; + if (((pGVar4->MODELdata_pointer != 0) && (0 < pGVar4->last_bond_detection_time)) && + (global_timer - pGVar4->last_bond_detection_time < 0x78)) { + setting_007_5 = (f32)((int)setting_007_5 + 1); + } + pGVar4 = pGVar4 + 1; + } while ((uVar1 & 3) != uVar3); + iVar2 = uVar3 * 0x10; + if (uVar3 == uVar1) { + return; + } + } + iVar2 = iVar2 * 8 + uVar3 * -9; + iVar9 = iVar2 * 4; + puVar5 = &ptr_guard_data->chrnum + iVar2 * 2; + puVar8 = puVar5 + 0x2ca; + puVar6 = puVar5 + 0xee; + puVar7 = puVar5 + 0x1dc; + do { + iVar9 += 0x770; + if (*(int *)(puVar5 + 0xe) == 0) { + iVar2 = *(int *)(puVar6 + 0xe); + } + else { + if (*(int *)(puVar5 + 0x6a) < 1) { + iVar2 = *(int *)(puVar6 + 0xe); + } + else { + if (global_timer - *(int *)(puVar5 + 0x6a) < 0x78) { + setting_007_5 = (f32)((int)setting_007_5 + 1); + iVar2 = *(int *)(puVar6 + 0xe); + } + else { + iVar2 = *(int *)(puVar6 + 0xe); + } + } + } + puVar5 = puVar5 + 0x3b8; + if (iVar2 == 0) { +LAB_7f032ad0: + iVar2 = *(int *)(puVar7 + 0xe); + } + else { + if (*(int *)(puVar6 + 0x6a) < 1) { + iVar2 = *(int *)(puVar7 + 0xe); + } + else { + if (global_timer - *(int *)(puVar6 + 0x6a) < 0x78) { + setting_007_5 = (f32)((int)setting_007_5 + 1); + goto LAB_7f032ad0; + } + iVar2 = *(int *)(puVar7 + 0xe); + } + } + if (iVar2 == 0) { + iVar2 = *(int *)(puVar8 + 0xe); + } + else { + if (*(int *)(puVar7 + 0x6a) < 1) { + iVar2 = *(int *)(puVar8 + 0xe); + } + else { + if (global_timer - *(int *)(puVar7 + 0x6a) < 0x78) { + setting_007_5 = (f32)((int)setting_007_5 + 1); + iVar2 = *(int *)(puVar8 + 0xe); + } + else { + iVar2 = *(int *)(puVar8 + 0xe); + } + } + } + if (((iVar2 != 0) && (0 < *(int *)(puVar8 + 0x6a))) && + (global_timer - *(int *)(puVar8 + 0x6a) < 0x78)) { + setting_007_5 = (f32)((int)setting_007_5 + 1); + } + puVar8 = puVar8 + 0x3b8; + puVar6 = puVar6 + 0x3b8; + puVar7 = puVar7 + 0x3b8; + } while (iVar9 != uVar1 * 0x1dc); + } + return; +} + + + +undefined8 proc_7F032B68(int param_1) + +{ + if ((0 < *(int *)(param_1 + 0xd4)) && (global_timer - *(int *)(param_1 + 0xd4) < 600)) { + return 1; + } + return 0; +} + + + +undefined8 proc_7F032BA0(int param_1) + +{ + if ((0 < *(int *)(param_1 + 0xf0)) && (global_timer - *(int *)(param_1 + 0xf0) < 600)) { + return 1; + } + return 0; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +float proc_7F032BD8(void) + +{ + int in_a0_lo; + float *in_a1_lo; + undefined4 in_a2_lo; + undefined4 in_a3_lo; + float in_f0; + float fVar1; + float fVar2; + + getsubroty(*(int *)(in_a0_lo + 0x1c),(uint)in_a1_lo,in_a2_lo,in_a3_lo); + fVar1 = convert_angle_using_inverse + ((f32)(*in_a1_lo - *(float *)(*(int *)(in_a0_lo + 0x18) + 8)), + (f32)(in_a1_lo[2] - *(float *)(*(int *)(in_a0_lo + 0x18) + 0x10))); + fVar2 = fVar1 - in_f0; + if (fVar1 < in_f0) { + fVar2 = fVar2 + flt_800520D0; + } + return fVar2; +} + + + +void proc_7F032C4C(undefined4 param_1) + +{ + get_curplayer_positiondata(); + proc_7F032BD8(); + return; +} + + + +int proc_7F032C78(short *param_1,ulonglong param_2,longlong param_3,undefined4 *param_4) + +{ + short *psVar1; + short sVar3; + int iVar2; + undefined *puVar4; + + if ((param_2 & 4) == 0) { + if ((param_2 & 8) == 0) { + iVar2 = get_curplayer_positiondata(); + puVar4 = (undefined *)(iVar2 + 8); + *param_4 = *(undefined4 *)(iVar2 + 0x14); + } + else { + sVar3 = proc_7F032F94((int)param_1,(short)param_3); + if (sVar3 < 10000) { + puVar4 = ptr_0xxxpresets + ((int)sVar3 * 0xc - (int)sVar3) * 4; + } + else { + puVar4 = ptr_2xxxpresets + (int)sVar3 * 0x44 + -680000; + } + *param_4 = *(undefined4 *)(puVar4 + 0x28); + } + } + else { + psVar1 = (short *)proc_7F033040(param_1,param_3); + if ((psVar1 == NULL) || (*(int *)(psVar1 + 0xc) == 0)) { + iVar2 = *(int *)(param_1 + 0xc); + } + else { + iVar2 = *(int *)(param_1 + 0xc); + param_1 = psVar1; + } + *param_4 = *(undefined4 *)(iVar2 + 0x14); + puVar4 = (undefined *)(*(int *)(param_1 + 0xc) + 8); + } + return (int)puVar4; +} + + + +float proc_7F032D70(int param_1) + +{ + int iVar1; + int iVar2; + float fVar3; + float fVar4; + float fVar5; + + fVar3 = get_curplay_horizontal_rotation_in_degrees(); + iVar1 = *(int *)(param_1 + 0x18); + iVar2 = get_curplayer_positiondata(); + fVar4 = convert_angle_using_inverse + ((f32)(*(float *)(iVar1 + 8) - *(float *)(iVar2 + 8)), + (f32)(*(float *)(iVar1 + 0x10) - *(float *)(iVar2 + 0x10))); + fVar5 = fVar4 - fVar3; + if (fVar4 < fVar3) { + fVar5 = fVar5 + flt_800520D4; + } + return fVar5; +} + + + +void proc_7F032DE4(int param_1) + +{ + int iVar1; + int iVar2; + float fVar3; + float fVar4; + float fVar5; + + iVar1 = *(int *)(param_1 + 0x18); + iVar2 = get_curplayer_positiondata(); + fVar3 = *(float *)(iVar2 + 8) - *(float *)(iVar1 + 8); + fVar4 = *(float *)(iVar2 + 0xc) - *(float *)(iVar1 + 0xc); + fVar5 = *(float *)(iVar2 + 0x10) - *(float *)(iVar1 + 0x10); + sqrtf(fVar3 * fVar3 + fVar4 * fVar4 + fVar5 * fVar5); + return; +} + + + +void proc_7F032E48(int param_1,short param_2) + +{ + int iVar1; + short sVar2; + float *pfVar3; + float fVar4; + float fVar5; + float fVar6; + + iVar1 = *(int *)(param_1 + 0x18); + sVar2 = proc_7F032F94(param_1,param_2); + if (sVar2 < 10000) { + pfVar3 = (float *)(ptr_0xxxpresets + ((int)sVar2 * 0xc - (int)sVar2) * 4); + } + else { + pfVar3 = (float *)(ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000); + } + fVar4 = *pfVar3 - *(float *)(iVar1 + 8); + fVar5 = pfVar3[1] - *(float *)(iVar1 + 0xc); + fVar6 = pfVar3[2] - *(float *)(iVar1 + 0x10); + sqrtf(fVar4 * fVar4 + fVar5 * fVar5 + fVar6 * fVar6); + return; +} + + + +ulonglong proc_7F032EFC(int param_1,short param_2) + +{ + short sVar2; + ulonglong uVar1; + undefined *puVar3; + + sVar2 = proc_7F032F94(param_1,param_2); + if (sVar2 < 10000) { + puVar3 = ptr_0xxxpresets + (int)sVar2 * 0x2c; + } + else { + puVar3 = ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000; + } + uVar1 = 0; + if (*(int *)(puVar3 + 0x28) != 0) { + uVar1 = proc_7F0B2FD8(*(int *)(puVar3 + 0x28)); + uVar1 = proc_7F0B5E50((int)uVar1); + } + return uVar1; +} + + + +short proc_7F032F94(int param_1,short param_2) + +{ + if (param_2 == 9000) { + param_2 = *(short *)(param_1 + 0x114); + } + return param_2; +} + + + +longlong proc_7F032FAC(short *param_1,longlong param_2) + +{ + short *psVar1; + + if (param_2 == 0xfa) { + return (longlong)param_1[0x8c]; + } + if (param_2 == 0xfb) { + return (longlong)param_1[0x8d]; + } + if (param_2 == 0xfc) { + return (longlong)param_1[0x8b]; + } + if (param_2 != 0xfd) { + if (param_2 != 0xf9) { + if ((param_2 == 0xf8) && + (psVar1 = *(short **)(pPlayer->position_data_pointer + 4), psVar1 != NULL)) { + param_2 = (longlong)*psVar1; + } + return param_2; + } + return (longlong)((int)*param_1 + 10000); + } + return (longlong)*param_1; +} + + + +int proc_7F033040(short *param_1,longlong param_2) + +{ + short sVar1; + longlong lVar2; + GUARDdata *pGVar3; + int iVar4; + short *psVar5; + int iVar6; + + lVar2 = proc_7F032FAC(param_1,param_2); + pGVar3 = check_if_guardnum_loaded_get_ptr_GUARDdata((short)lVar2); + if ((pGVar3 == NULL) && (iVar4 = 0, 0 < objectiveregisters3)) { + iVar6 = 0; + psVar5 = objectiveregisters2; + do { + sVar1 = *psVar5; + iVar4 += 1; + psVar5 = psVar5 + 0xee; + if ((longlong)(int)lVar2 == (longlong)sVar1) { + return iVar6 + (int)objectiveregisters2; + } + iVar6 += 0x1dc; + } while (iVar4 < objectiveregisters3); + } + return (int)pGVar3; +} + + + +float proc_7F0330C4(short *param_1,longlong param_2) + +{ + int iVar1; + int iVar2; + float fVar3; + float fVar4; + float fVar5; + + iVar1 = *(int *)(param_1 + 0xc); + iVar2 = proc_7F033040(param_1,param_2); + fVar3 = 0.00000000; + if (((iVar2 != 0) && (*(int *)(iVar2 + 0x1c) != 0)) && (*(int *)(iVar2 + 0x18) != 0)) { + iVar2 = *(int *)(iVar2 + 0x18); + fVar3 = *(float *)(iVar2 + 8) - *(float *)(iVar1 + 8); + fVar4 = *(float *)(iVar2 + 0xc) - *(float *)(iVar1 + 0xc); + fVar5 = *(float *)(iVar2 + 0x10) - *(float *)(iVar1 + 0x10); + fVar3 = sqrtf(fVar3 * fVar3 + fVar4 * fVar4 + fVar5 * fVar5); + } + return fVar3; +} + + + +void proc_7F033154(int param_1,short param_2) + +{ + int iVar1; + short sVar2; + float *pfVar3; + float fVar4; + float fVar5; + float fVar6; + + iVar1 = get_curplayer_positiondata(); + sVar2 = proc_7F032F94(param_1,param_2); + if (sVar2 < 10000) { + pfVar3 = (float *)(ptr_0xxxpresets + ((int)sVar2 * 0xc - (int)sVar2) * 4); + } + else { + pfVar3 = (float *)(ptr_2xxxpresets + (int)sVar2 * 0x44 + -680000); + } + fVar4 = *pfVar3 - *(float *)(iVar1 + 8); + fVar5 = pfVar3[1] - *(float *)(iVar1 + 0xc); + fVar6 = pfVar3[2] - *(float *)(iVar1 + 0x10); + sqrtf(fVar4 * fVar4 + fVar5 * fVar5 + fVar6 * fVar6); + return; +} + + + +void proc_7F033218(int param_1,byte param_2) + +{ + *(byte *)(param_1 + 0x10e) = *(byte *)(param_1 + 0x10e) | param_2; + return; +} + + + +void proc_7F03322C(int param_1,byte param_2) + +{ + *(byte *)(param_1 + 0x10e) = *(byte *)(param_1 + 0x10e) & ~param_2; + return; +} + + + +ulonglong proc_7F033244(int param_1,byte param_2) + +{ + return (ulonglong)((*(byte *)(param_1 + 0x10e) & param_2) != 0); +} + + + +void proc_7F033260(short *param_1,longlong param_2,byte param_3) + +{ + int iVar1; + + iVar1 = proc_7F033040(param_1,param_2); + if (iVar1 != 0) { + proc_7F033218(iVar1,param_3); + } + return; +} + + + +void proc_7F033290(short *param_1,longlong param_2,byte param_3) + +{ + int iVar1; + + iVar1 = proc_7F033040(param_1,param_2); + if (iVar1 != 0) { + proc_7F03322C(iVar1,param_3); + } + return; +} + + + +ulonglong proc_7F0332C0(short *param_1,longlong param_2,byte param_3) + +{ + int iVar2; + ulonglong uVar1; + + iVar2 = proc_7F033040(param_1,param_2); + if (iVar2 == 0) { + uVar1 = 0; + } + else { + uVar1 = proc_7F033244(iVar2,param_3); + } + return uVar1; +} + + + +void proc_7F0332FC(undefined8 param_1,uint param_2) + +{ + objectiveregisters1 = objectiveregisters1 | param_2; + return; +} + + + +void proc_7F033318(undefined8 param_1,uint param_2) + +{ + objectiveregisters1 = ~param_2 & objectiveregisters1; + return; +} + + + +ulonglong proc_7F033338(undefined8 param_1,uint param_2) + +{ + return (ulonglong)((objectiveregisters1 & param_2) != 0); +} + + + +ulonglong proc_7F033354(int param_1) + +{ + return (ulonglong)((*(ushort *)(param_1 + 0x12) & 2) != 0); +} + + + +ulonglong proc_7F033364(int param_1) + +{ + longlong lVar1; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + proc_7F024648(param_1); + } + return (ulonglong)(lVar1 != 0); +} + + + +undefined8 proc_7F0333A0(int param_1) + +{ + proc_7F0247B8(param_1); + return 1; +} + + + +void proc_7F0333C4(int param_1) + +{ + *(undefined4 *)(param_1 + 0x110) = 0; + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 0x40; + return; +} + + + +float proc_7F0333D8(int param_1) + +{ + return (float)*(int *)(param_1 + 0x110) / 60.00000000; +} + + + +ulonglong proc_7F0333F8(int param_1) + +{ + int iVar3; + float *pfVar4; + longlong lVar1; + ulonglong uVar2; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + float extraout_f12; + float afStack40 [3]; + float afStack28 [3]; + float afStack16 [3]; + int iStack4; + + iVar3 = proc_7F029760(param_1); + if (iVar3 == 0) { + uVar2 = 0; + } + else { + iStack4 = *(int *)(param_1 + 0x1c); + getinstsize(iStack4,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + proc_7F068190(afStack16,afStack28); + getsuboffset(iStack4,afStack40,extraout_a2_lo_00,extraout_a3_lo_00); + pfVar4 = (float *)get_BONDdata_field_10CC(); + proc_7F058474(pfVar4,afStack40); + lVar1 = proc_7F041074(afStack16,afStack28,afStack40,extraout_f12); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +ulonglong proc_7F033490(int param_1) + +{ + return (ulonglong)((*(uint *)(param_1 + 0x14) & 4) != 0); +} + + + +undefined8 proc_7F0334A0(int param_1,char param_2) + +{ + longlong lVar1; + undefined8 uVar2; + int iVar3; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + if ((int)setting_007_5 < 10) { + iVar3 = get_curplayer_positiondata(); + lVar1 = proc_7F028DDC(param_1,(float *)(iVar3 + 8),*(undefined4 *)(iVar3 + 0x14),param_2 + ); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +undefined8 proc_7F03350C(short *param_1,int param_2,char param_3) + +{ + longlong lVar1; + undefined8 uVar2; + int iVar3; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + if ((int)setting_007_5 < 10) { + iVar3 = proc_7F033040(param_1,(longlong)param_2); + if (iVar3 == 0) { + uVar2 = 0; + } + else { + if (*(int *)(iVar3 + 0x1c) == 0) { + uVar2 = 0; + } + else { + if (*(int *)(iVar3 + 0x18) == 0) { + uVar2 = 0; + } + else { + lVar1 = proc_7F028DDC((int)param_1,(float *)(*(int *)(iVar3 + 0x18) + 8), + *(undefined4 *)(*(int *)(iVar3 + 0x18) + 0x14),param_3 + ); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + } + } + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +undefined proc_7F0335A4(int param_1) + +{ + return *(undefined *)(param_1 + 0xb); +} + + + +undefined proc_7F0335AC(int param_1) + +{ + return *(undefined *)(param_1 + 10); +} + + + +ulonglong proc_7F0335B4(int param_1) + +{ + return (ulonglong)(*(short *)(param_1 + 0x118) < 0) ^ 1; +} + + + +ulonglong proc_7F0335C4(int param_1) + +{ + return (ulonglong)(*(short *)(param_1 + 0x11a) < 0) ^ 1; +} + + + +ulonglong proc_7F0335D4(int param_1) + +{ + longlong lVar1; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + proc_7F023E48(param_1); + } + return (ulonglong)(lVar1 != 0); +} + + + +ulonglong proc_7F033610(int param_1) + +{ + longlong lVar1; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + actor_shuffle_feet(); + } + return (ulonglong)(lVar1 != 0); +} + + + +ulonglong proc_7F03364C(int param_1) + +{ + longlong lVar1; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + proc_7F0244AC(); + } + return (ulonglong)(lVar1 != 0); +} + + + +ulonglong proc_7F033688(int param_1) + +{ + longlong lVar1; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + proc_7F024548(); + } + return (ulonglong)(lVar1 != 0); +} + + + +ulonglong proc_7F0336C4(int param_1) + +{ + longlong lVar1; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + actor_kneel(); + } + return (ulonglong)(lVar1 != 0); +} + + + +ulonglong proc_7F033700(int param_1,int param_2,int param_3,int param_4,byte param_5,int param_6) + +{ + longlong lVar1; + + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 != 0) { + perform_animation_for_actor((GUARDdata *)param_1,param_2,param_3,param_4,param_5,param_6); + } + return (ulonglong)(lVar1 != 0); +} + + + +void proc_7F033760(void) + +{ + is_alarm_on(); + return; +} + + + +undefined8 proc_7F033780(int *param_1,float *param_2,float param_3) + +{ + undefined8 uVar1; + float in_a2_lo; + float fVar2; + float fVar3; + + fVar2 = convert_angle_using_inverse + ((f32)(*(float *)(ptr_0xxxpresets + *param_1 * 0x2c) - *param_2), + (f32)(*(float *)(ptr_0xxxpresets + *param_1 * 0x2c + 2) - param_2[2])); + fVar3 = in_a2_lo - fVar2; + if (in_a2_lo < fVar2) { + fVar3 = fVar3 + flt_800520DC; + } + if ((fVar3 < flt_800520E0) || (uVar1 = 0, flt_800520E4 < fVar3)) { + uVar1 = 1; + } + return uVar1; +} + + + +longlong proc_7F033834(float *param_1,undefined4 param_2,float param_3,char param_4) + +{ + int *piVar2; + longlong lVar1; + int iVar3; + int iVar4; + float extraout_f12; + float extraout_f12_00; + float fVar5; + float extraout_f12_01; + + piVar2 = proc_7F027CD4(param_1,param_2); + if (piVar2 != NULL) { + lVar1 = proc_7F033780(piVar2,param_1,extraout_f12); + if (lVar1 != 0) { + return (longlong)*piVar2; + } + iVar4 = *(int *)piVar2[1]; + iVar3 = 0; + fVar5 = extraout_f12_00; + if (iVar4 < 0) { + return 0xffffffffffffffff; + } + do { + lVar1 = proc_7F033780((int *)(ptr_setup_path_tbl + iVar4 * 0x10),param_1,fVar5); + if (lVar1 != 0) { + return (longlong)*(int *)(ptr_setup_path_tbl + iVar4 * 0x10); + } + iVar3 += 1; + iVar4 = *(int *)(piVar2[1] + iVar3 * 4); + fVar5 = extraout_f12_01; + } while (-1 < iVar4); + } + return 0xffffffffffffffff; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F033998(void) + +{ + int *piVar2; + int *piVar3; + int iVar4; + undefined4 *puVar5; + longlong lVar1; + int in_a0_lo; + uint in_a1_lo; + undefined4 in_a3_lo; + uint uVar6; + char in_f0; + float extraout_f12; + int iStack28; + undefined4 *puStack24; + int iStack8; + + uVar6 = in_a1_lo & 0xff; + if ((uVar6 != 0x10) && (uVar6 != 0x20)) { + getsubroty(*(int *)(in_a0_lo + 0x1c),in_a1_lo,uVar6,in_a3_lo); + lVar1 = proc_7F033834((float *)(*(int *)(in_a0_lo + 0x18) + 8), + *(undefined4 *)(*(int *)(in_a0_lo + 0x18) + 0x14),extraout_f12,in_f0); + if (lVar1 < 0) { + return 0; + } + *(undefined2 *)(in_a0_lo + 0x114) = (short)lVar1; + return 1; + } + iVar4 = *(int *)(in_a0_lo + 0x18); + iStack8 = get_curplayer_positiondata(); + piVar2 = proc_7F027CD4((float *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0x14)); + piVar3 = proc_7F027CD4((float *)(iStack8 + 8),*(undefined4 *)(iStack8 + 0x14)); + if ((piVar2 != NULL) && (piVar3 != NULL)) { + if (uVar6 != 0x10) { + puVar5 = (undefined4 *)proc_7F08FB90((int)piVar2,(int)piVar3); + if (puVar5 == NULL) { + return 0; + } + *(undefined2 *)(in_a0_lo + 0x114) = (short)*puVar5; + return 1; + } + iVar4 = proc_7F08F4F0((int)piVar2,(int)piVar3,&iStack28,3); + if (2 < iVar4) { + *(undefined2 *)(in_a0_lo + 0x114) = (short)*puStack24; + return 1; + } + } + return 0; +} + + + +ulonglong proc_7F033AAC(int param_1,ulonglong param_2) + +{ + ulonglong uVar1; + int iVar3; + longlong lVar2; + float fVar4; + float extraout_f12; + + if (((param_2 & 0xff) == 0x10) || ((param_2 & 0xff) == 0x20)) { + uVar1 = proc_7F033998(); + } + else { + fVar4 = get_curplay_horizontal_rotation_in_degrees(); + iVar3 = get_curplayer_positiondata(); + lVar2 = proc_7F033834((float *)(iVar3 + 8),*(undefined4 *)(iVar3 + 0x14),extraout_f12, + SUB41(fVar4,0)); + if (-1 < lVar2) { + *(undefined2 *)(param_1 + 0x114) = (short)lVar2; + } + uVar1 = (ulonglong)(-1 < lVar2); + } + return uVar1; +} + + + +undefined8 proc_7F033B38(undefined2 *param_1,float param_2) + +{ + int iVar1; + int iVar3; + s32 sVar4; + longlong lVar2; + float in_a1_lo; + ulonglong uVar5; + u16 uVar6; + GUARDdata *chr; + int iVar7; + int iVar8; + ulonglong uVar9; + float fVar10; + float fVar11; + float fVar12; + + iVar3 = get_numguards(); + iVar8 = *(int *)(param_1 + 0xc); + fVar10 = *(float *)(iVar8 + 8); + fVar11 = *(float *)(iVar8 + 0xc); + fVar12 = *(float *)(iVar8 + 0x10); + iVar7 = 0; + uVar9 = (ulonglong)*(byte *)(*(int *)(iVar8 + 0x14) + 3); + if (0 < iVar3) { + iVar8 = 0; + do { + chr = (GUARDdata *)((int)&ptr_guard_data->chrnum + iVar8); + if (((chr != (GUARDdata *)param_1) && (chr->MODELdata_pointer != 0)) && + (sVar4 = true_if_actor_dying_fading(chr), sVar4 == 0)) { + iVar1 = chr->POSdata_pointer; + if ((((fVar10 - in_a1_lo <= *(float *)(iVar1 + 8)) && + (*(float *)(iVar1 + 8) <= fVar10 + in_a1_lo)) && + ((fVar11 - in_a1_lo <= *(float *)(iVar1 + 0xc) && + ((*(float *)(iVar1 + 0xc) <= fVar11 + in_a1_lo && + (fVar12 - in_a1_lo <= *(float *)(iVar1 + 0x10))))))) && + (*(float *)(iVar1 + 0x10) <= fVar12 + in_a1_lo)) { + uVar5 = (ulonglong)*(byte *)(*(int *)(iVar1 + 0x14) + 3); + if (uVar9 == uVar5) { + uVar6 = chr->chrnum; +LAB_7f033c94: + param_1[0x8b] = uVar6; + return 1; + } + lVar2 = proc_7F0B8FD0(uVar9,uVar5); + if (lVar2 != 0) { + uVar6 = chr->chrnum; + goto LAB_7f033c94; + } + } + } + iVar7 += 1; + iVar8 += 0x1dc; + } while (iVar7 < iVar3); + } + return 0; +} + + + +void proc_7F033CF4(short *param_1,longlong param_2) + +{ + longlong lVar1; + + lVar1 = proc_7F032FAC(param_1,param_2); + param_1[0x8b] = (short)lVar1; + return; +} + + + +void proc_7F033D1C(short *param_1,longlong param_2,int param_3) + +{ + int iVar2; + longlong lVar1; + + iVar2 = proc_7F033040(param_1,param_2); + if (iVar2 != 0) { + lVar1 = proc_7F032FAC(param_1,(longlong)param_3); + *(undefined2 *)(iVar2 + 0x116) = (short)lVar1; + } + return; +} + + + +void proc_7F033D5C(int param_1,short param_2) + +{ + short sVar1; + + sVar1 = proc_7F032F94(param_1,param_2); + *(short *)(param_1 + 0x114) = sVar1; + return; +} + + + +void proc_7F033D84(short *param_1,longlong param_2,short param_3) + +{ + int iVar1; + short sVar2; + + iVar1 = proc_7F033040(param_1,param_2); + if (iVar1 != 0) { + sVar2 = proc_7F032F94((int)param_1,param_3); + *(short *)(iVar1 + 0x114) = sVar2; + } + return; +} + + + +undefined8 proc_7F033DC4(int param_1) + +{ + longlong lVar1; + undefined8 uVar2; + int iVar3; + int iVar4; + float extraout_f12; + float extraout_f14; + float afStack36 [3]; + float afStack24 [3]; + int aiStack12 [3]; + + lVar1._4_4_ = get_curplayer_positiondata(); + lVar1 = (longlong)lVar1._4_4_; + iVar4 = *(int *)(param_1 + 0x18); + aiStack12[0] = *(int *)(iVar4 + 0x14); + proc_7F0B1CC4(); + proc_7F0B0BE4(aiStack12,extraout_f12,extraout_f14,*(float *)(iVar4 + 8),*(float *)(iVar4 + 0x10) + ); + if (lVar1 == 0) { + proc_7F0B28B0(afStack24,afStack36); + iVar3 = proc_7F0304AC(param_1,(undefined4 *)(iVar4 + 8),*(int *)(iVar4 + 0x14),afStack24, + (undefined4 *)(lVar1._4_4_ + 8),*(int *)(lVar1._4_4_ + 0x14),0); + if ((iVar3 == 0) && + (iVar4 = proc_7F0304AC(param_1,(undefined4 *)(iVar4 + 8),*(int *)(iVar4 + 0x14),afStack36 + ,(undefined4 *)(lVar1._4_4_ + 8),*(int *)(lVar1._4_4_ + 0x14),0), + iVar4 == 0)) { + return 0; + } + uVar2 = 1; + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +longlong proc_7F033EAC(float *param_1,int param_2) + +{ + ulonglong uVar1; + longlong lVar2; + float extraout_f12; + float extraout_f12_00; + int aiStack20 [4]; + uint uStack4; + + uStack4 = 1; + uVar1 = proc_7F0B2FD8(param_2); + uVar1 = proc_7F0B5E50((int)uVar1); + if ((uVar1 != 0) && (lVar2 = proc_7F0BB2C8(param_1,extraout_f12), lVar2 != 0)) { + uVar1 = proc_7F0B2FD8(param_2); + lVar2 = proc_7F0B3C0C((int)uVar1,aiStack20); + if (lVar2 == 0) { + lVar2 = proc_7F078A58(param_1,extraout_f12_00); + uStack4 = (uint)(lVar2 == 0); + } + else { + lVar2 = proc_7F078BF4(param_1,extraout_f12_00,(float *)0x43480000); + uStack4 = (uint)(lVar2 == 0); + } + } + return (longlong)(int)uStack4; +} + + + +undefined8 proc_7F033F48(float *param_1,int *param_2,float param_3,longlong param_4) + +{ + float fVar1; + float fVar2; + longlong lVar3; + undefined8 uVar4; + int iVar5; + longlong in_a3; + int iVar6; + float fVar7; + f32 extraout_f12; + f32 extraout_f14; + ulonglong uVar8; + float __x; + u32 uStack16; + float fStack12; + float fStack8; + float fStack4; + + uStack16 = *param_2; + uVar8 = param_4 & 0xffffffff; + lVar3 = proc_7F0B18B8(); + if ((lVar3 < 0) && ((in_a3 != 0 || (lVar3 = proc_7F033EAC(param_1,*param_2), lVar3 != 0)))) { + uVar4 = 1; + } + else { + fVar2 = flt_800520FC; + fVar1 = flt_800520F8; + iVar6 = 0; + do { + __x = (float)uVar8; + fVar7 = sinf(__x); + fStack12 = fVar7 * 60.00000000 + *param_1; + fStack8 = param_1[1]; + fVar7 = cosf(__x); + fStack4 = fVar7 * 60.00000000 + param_1[2]; + uStack16 = *param_2; + iVar5 = proc_7F0B0E24(&uStack16,extraout_f12,extraout_f14,(f32)*param_1); + if (((iVar5 != 0) && (lVar3 = proc_7F0B18B8(), lVar3 < 0)) && + ((in_a3 != 0 || (lVar3 = proc_7F033EAC(&fStack12,uStack16), lVar3 != 0)))) { + *param_2 = uStack16; + *param_1 = fStack12; + param_1[2] = fStack4; + return 1; + } + __x = __x + fVar1; + iVar6 += 1; + if (fVar2 <= __x) { + __x = __x - fVar2; + } + uVar8 = (ulonglong)(uint)__x; + } while (iVar6 != 8); + uVar4 = 0; + } + return uVar4; +} + + + +longlong proc_7F03415C(int param_1,uint param_2,float *param_3,int param_4,float param_5,int param_6 + ,uint param_7) + +{ + int iVar2; + longlong lVar1; + uint uVar3; + float extraout_f12; + float extraout_f12_00; + float fVar4; + uint uStackX4; + int in_stack_00000018; + int aiStack24 [2]; + float fStack16; + float fStack12; + float fStack8; + int iStack4; + + iVar2 = get_next_available_guardID(); + if (2 < iVar2) { + if ((int)param_2 < 0) { + uStackX4 = select_psuedorandom_heads(param_1); + fStack16 = *param_3; + fVar4 = extraout_f12_00; + } + else { + fStack16 = *param_3; + fVar4 = extraout_f12; + uStackX4 = param_2; + } + fStack12 = param_3[1]; + fStack8 = param_3[2]; + aiStack24[0] = param_4; + lVar1 = proc_7F033F48(&fStack16,aiStack24,fVar4,(longlong)param_6); + if (((lVar1 != 0) && + (uVar3 = retrieve_header_for_body_and_head(param_1,uStackX4,(longlong)in_stack_00000018) + , uVar3 != 0)) && + (iStack4 = replace_GUARDdata_with_actual_values + (uVar3,&fStack16,param_6,aiStack24[0],param_7), iStack4 != 0)) { + proc_7F03A4F0(iStack4); + set_stateflag_0x04_for_posdata(iStack4); + iVar2 = *(int *)(iStack4 + 4); + *(undefined *)(iVar2 + 6) = (char)uStackX4; + *(undefined *)(iVar2 + 0xf) = (char)param_1; + return (longlong)iStack4; + } + } + return 0; +} + + + +void proc_7F034258(int param_1,int param_2,uint param_3,short param_4,uint param_5,uint param_6) + +{ + short sVar1; + undefined *puVar2; + float fVar3; + float extraout_f12; + + sVar1 = proc_7F032F94(param_1,param_4); + if (sVar1 < 10000) { + puVar2 = ptr_0xxxpresets + (int)sVar1 * 0x2c; + } + else { + puVar2 = ptr_2xxxpresets + (int)sVar1 * 0x44 + -680000; + } + fVar3 = convert_angle_using_inverse(*(f32 *)(puVar2 + 0x18),*(f32 *)(puVar2 + 0x20)); + proc_7F03415C(param_2,param_3,puVar2,*(int *)(puVar2 + 0x28),extraout_f12,fVar3,param_5); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F034308(void) + +{ + int iVar2; + undefined8 uVar1; + short *in_a0_lo; + int in_a1_lo; + uint extraout_a1_lo; + uint in_a2_lo; + undefined4 extraout_a2_lo; + longlong in_a3; + undefined4 extraout_a3_lo; + undefined4 in_f0; + float extraout_f12; + uint in_stack_00000010; + + iVar2 = proc_7F033040(in_a0_lo,in_a3); + if ((*(uint *)(iVar2 + 0x14) & 8) == 0) { + getsubroty(*(int *)(iVar2 + 0x1c),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + uVar1 = proc_7F03415C(in_a1_lo,in_a2_lo,*(int *)(iVar2 + 0x18) + 8, + *(int *)(*(int *)(iVar2 + 0x18) + 0x14),extraout_f12,in_f0, + in_stack_00000010); + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +undefined8 proc_7F034388(short *param_1,longlong param_2,short param_3) + +{ + int iVar2; + short sVar3; + undefined8 uVar1; + undefined *puVar4; + + iVar2 = proc_7F033040(param_1,param_2); + sVar3 = proc_7F032F94((int)param_1,param_3); + if (sVar3 < 10000) { + puVar4 = ptr_0xxxpresets + ((int)sVar3 * 0xc - (int)sVar3) * 4; + } + else { + puVar4 = ptr_2xxxpresets + (int)sVar3 * 0x44 + -680000; + } + if (*(int *)(puVar4 + 0x28) == 0) { + uVar1 = 0; + } + else { + if (iVar2 == 0) { + uVar1 = 0; + } + else { + if (*(int *)(iVar2 + 0x18) == 0) { + uVar1 = 0; + } + else { + if (*(char *)(*(int *)(*(int *)(iVar2 + 0x18) + 0x14) + 3) == + *(char *)(*(int *)(puVar4 + 0x28) + 3)) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + } + } + } + return uVar1; +} + + + +undefined8 proc_7F03444C(int param_1,short param_2) + +{ + int iVar2; + short sVar3; + undefined8 uVar1; + undefined *puVar4; + + iVar2 = get_curplayer_positiondata(); + sVar3 = proc_7F032F94(param_1,param_2); + if (sVar3 < 10000) { + puVar4 = ptr_0xxxpresets + ((int)sVar3 * 0xc - (int)sVar3) * 4; + } + else { + puVar4 = ptr_2xxxpresets + (int)sVar3 * 0x44 + -680000; + } + if (*(int *)(puVar4 + 0x28) == 0) { + uVar1 = 0; + } + else { + if (*(char *)(*(int *)(iVar2 + 0x14) + 3) == *(char *)(*(int *)(puVar4 + 0x28) + 3)) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + } + return uVar1; +} + + + +undefined8 proc_7F0344FC(void) + +{ + return 0; +} + + + +undefined8 proc_7F034508(void) + +{ + return 0; +} + + + +undefined8 proc_7F034514(int param_1,short param_2) + +{ + short sVar5; + longlong lVar1; + undefined8 uVar2; + int iVar4; + ulonglong uVar3; + + sVar5 = proc_7F032F94(param_1,param_2); + lVar1 = true_if_actor_is_dying_fading_limping_shot((GUARDdata *)param_1); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + iVar4 = scan_position_data_table_for_normal_object_at_preset(sVar5); + if (iVar4 == 0) { + uVar2 = 0; + } + else { + uVar3 = check_if_object_has_not_been_destroyed(iVar4); + if (uVar3 == 0) { + uVar2 = 0; + } + else { + proc_7F024150(param_1); + uVar2 = 1; + } + } + } + return uVar2; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F03457C(void) + +{ + u32 uVar2; + longlong lVar1; + int iVar3; + int iVar4; + undefined *puVar5; + GUARDdata *in_a0_lo; + uint uVar6; + float in_f0; + + uVar2 = get_random_value(); + if ((((ulonglong)(longlong)(int)(uVar2 % 0xff) < (ulonglong)(byte)in_a0_lo->beligerancy) && + (proc_7F032DE4((int)in_a0_lo), 10.00000000 <= in_f0)) && + (lVar1 = true_if_actor_is_dying_fading_limping_shot(in_a0_lo), lVar1 != 0)) { + iVar3 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,1); + iVar4 = something_with_weaponpos_of_guarddata_hand(in_a0_lo,0); + if ((iVar4 != 0) && (*(char *)(*(int *)(iVar4 + 4) + 0x80) == '\x1a')) { + throw_weapon_in_guard_hand(); + return 1; + } + if ((iVar3 != 0) && (*(char *)(*(int *)(iVar3 + 4) + 0x80) == '\x1a')) { + throw_weapon_in_guard_hand(); + return 1; + } + if ((iVar3 != 0) && (iVar4 != 0)) { + return 0; + } + uVar6 = 0; + if (iVar4 != 0) { + uVar6 = 0x10000000; + } + puVar5 = actor_draws_weapon_with_model((undefined2 *)in_a0_lo,0xc4,0x1a,uVar6); + if (puVar5 != NULL) { + *(uint *)(*(int *)(puVar5 + 4) + 100) = *(uint *)(*(int *)(puVar5 + 4) + 100) | 0x800; + throw_weapon_in_guard_hand(); + return 1; + } + } + return 0; +} + + + +undefined8 proc_7F0346FC(int param_1,int param_2,char param_3) + +{ + undefined4 *puVar2; + undefined8 uVar1; + f32 scale; + + puVar2 = create_new_item_instance_of_model(param_2,(int)param_3 & 0xff); + if (puVar2 == NULL) { + uVar1 = 0; + } + else { + if (puVar2[4] == 0) { + uVar1 = 0; + } + else { + set_obj_instance_controller_scale(puVar2[5],scale); + proc_7F03A5A4(puVar2[4],*(int *)(param_1 + 0x18)); + *(undefined2 *)((int)puVar2 + 0x82) = 0xb4; + proc_7F04BFD0(puVar2[4],1); + uVar1 = 1; + *(ushort *)(param_1 + 0x12) = *(ushort *)(param_1 + 0x12) | 1; + } + } + return uVar1; +} + + + +void proc_7F0347A0(int param_1) + +{ + ALLink_s *pAVar1; + int iVar2; + ulonglong uVar3; + int iVar4; + int iVar5; + + pAVar1 = (ALLink_s *)(&sfx_related)[param_1].field_0x0; + if (pAVar1 == NULL) { + (&sfx_related)[param_1].field_0x4 = 0; + return; + } + uVar3 = sfxGetArg0Unk3F(pAVar1); + uVar3._4_4_ = (undefined4)uVar3; + if (uVar3 == 0) { + (&sfx_related)[param_1].field_0x4 = 0; + return; + } + if ((float *)(&sfx_related)[param_1].field_0x10 == NULL) { + iVar4 = (&sfx_related)[param_1].field_0x14; + if (iVar4 == 0) { + iVar4 = (&sfx_related)[param_1].field_0x8; + goto LAB_7f034824; + } + if (*(int *)(iVar4 + 0x10) == 0) { + iVar4 = (&sfx_related)[param_1].field_0x8; + goto LAB_7f034824; + } + proc_7F0539E4((float *)(iVar4 + 0x58)); + (&sfx_related)[param_1].field_0xc = iVar4; + } + else { + proc_7F0539E4((float *)(&sfx_related)[param_1].field_0x10); + (&sfx_related)[param_1].field_0xc = uVar3._4_4_; + } + iVar4 = (&sfx_related)[param_1].field_0x8; +LAB_7f034824: + iVar5 = (&sfx_related)[param_1].field_0xc; + if (-1 < iVar4) { + if (clock_timer < iVar4) { + iVar2 = (iVar5 - (&sfx_related)[param_1].field_0x4) * clock_timer; + iVar5 = iVar2 / iVar4 + (&sfx_related)[param_1].field_0x4; + if (iVar4 == 0) { + trap(0x1c00); + } + if ((iVar4 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + } + (&sfx_related)[param_1].field_0x8 = iVar4 - clock_timer; + } + iVar4 = get_controls_locked_flag(); + if (iVar4 != 0) { + iVar5 = 0; + } + if (iVar5 != (&sfx_related)[param_1].field_0x4) { + music_related_36((longlong)(int)(&sfx_related)[param_1].field_0x0,8,iVar5); + (&sfx_related)[param_1].field_0x4 = iVar5; + } + return; +} + + + +void loop_set_sound_effect_all_slots(void) + +{ + int iVar1; + + iVar1 = 0; + do { + proc_7F0347A0(iVar1); + iVar1 += 1; + } while (iVar1 != 8); + return; +} + + + +int ** proc_7F034924(longlong param_1,short param_2) + +{ + ALPlayer_s *pAVar1; + int **in_v0_lo; + ulonglong uVar2; + int iVar3; + ALSndPlayer *data; + + data = NULL; + if ((-1 < param_1) && (iVar3 = (int)param_1, param_1 < 8)) { + pAVar1 = (((ALSndPlayer *)(&sfx_related + iVar3))->node).next; + if (pAVar1 != NULL) { + uVar2 = sfxGetArg0Unk3F((ALLink_s *)pAVar1); + in_v0_lo = (int **)uVar2; + data = NULL; + if (uVar2 != 0) goto LAB_7f03499c; + } + in_v0_lo = (int **)0x7fff; + (&sfx_related)[iVar3].field_0xc = 0x7fff; + (&sfx_related)[iVar3].field_0x4 = 0x7fff; + (&sfx_related)[iVar3].field_0x8 = 0xffffffff; + (&sfx_related)[iVar3].field_0x10 = 0; + (&sfx_related)[iVar3].field_0x14 = 0; + data = (ALSndPlayer *)(&sfx_related + iVar3); + } +LAB_7f03499c: + play_sfx_a1(ptr_sfx_buf,param_2,data); + return in_v0_lo; +} + + + +void proc_7F0349BC(longlong param_1) + +{ + if ((-1 < param_1) && (param_1 < 8)) { + sfxDeactivate((&sfx_related)[(int)param_1].field_0x0); + } + return; +} + + + +int get_length_of_action_block(int param_1,int param_2) + +{ + char cVar1; + int iVar2; + int iVar3; + + switch(*(undefined *)(param_1 + param_2)) { + case 0: + return 2; + case 1: + return 2; + case 2: + return 2; + case 3: + return 1; + case 4: + return 1; + case 5: + return 4; + case 6: + return 3; + case 7: + return 1; + case 8: + return 1; + case 9: + return 1; + case 10: + return 9; + case 0xb: + return 2; + case 0xc: + return 1; + case 0xd: + return 1; + case 0xe: + return 2; + case 0xf: + return 2; + case 0x10: + return 2; + case 0x11: + return 2; + case 0x12: + return 2; + case 0x13: + return 2; + case 0x14: + return 6; + case 0x15: + return 6; + case 0x16: + return 6; + case 0x17: + return 6; + case 0x18: + return 4; + case 0x19: + return 4; + case 0x1a: + return 2; + case 0x1b: + return 5; + case 0x1c: + return 3; + case 0x1d: + return 1; + case 0x1e: + return 3; + case 0x1f: + return 3; + case 0x20: + return 2; + case 0x21: + return 1; + case 0x22: + return 1; + case 0x23: + return 2; + case 0x24: + return 4; + case 0x25: + return 1; + case 0x26: + return 1; + case 0x27: + return 2; + case 0x28: + return 2; + case 0x29: + return 2; + case 0x2a: + return 2; + case 0x2b: + return 2; + case 0x2c: + return 3; + case 0x2d: + return 3; + case 0x2e: + return 3; + case 0x2f: + return 2; + case 0x30: + return 3; + case 0x31: + return 3; + case 0x32: + return 2; + case 0x33: + return 1; + case 0x34: + return 3; + case 0x35: + return 3; + case 0x36: + return 2; + case 0x37: + return 2; + case 0x38: + return 2; + case 0x39: + return 2; + case 0x3a: + return 2; + case 0x3b: + return 2; + case 0x3c: + return 2; + case 0x3d: + return 2; + case 0x3e: + return 2; + case 0x3f: + return 2; + case 0x40: + return 3; + case 0x41: + return 2; + case 0x42: + return 2; + case 0x43: + return 2; + case 0x44: + return 4; + case 0x45: + return 2; + case 0x46: + return 2; + case 0x47: + return 3; + case 0x48: + return 3; + case 0x49: + return 3; + case 0x4a: + return 3; + case 0x4b: + return 4; + case 0x4c: + return 4; + case 0x4d: + return 7; + case 0x4e: + return 7; + case 0x4f: + return 5; + case 0x50: + return 5; + case 0x51: + return 4; + case 0x52: + return 6; + case 0x53: + return 6; + case 0x54: + return 5; + case 0x55: + return 4; + case 0x56: + return 3; + case 0x57: + return 3; + case 0x58: + return 4; + case 0x59: + return 3; + case 0x5a: + return 3; + case 0x5b: + return 3; + case 0x5c: + return 3; + case 0x5d: + return 3; + case 0x5e: + return 2; + case 0x5f: + return 2; + case 0x60: + return 2; + case 0x61: + return 2; + case 0x62: + return 2; + case 99: + return 2; + case 100: + return 3; + case 0x65: + return 4; + case 0x66: + return 2; + case 0x67: + return 2; + case 0x68: + return 4; + case 0x69: + return 3; + case 0x6a: + return 3; + case 0x6b: + return 3; + case 0x6c: + return 4; + case 0x6d: + return 3; + case 0x6e: + return 3; + case 0x6f: + return 3; + case 0x70: + return 3; + case 0x71: + return 3; + case 0x72: + return 4; + case 0x73: + return 4; + case 0x74: + return 4; + case 0x75: + return 4; + case 0x76: + return 3; + case 0x77: + return 3; + case 0x78: + return 3; + case 0x79: + return 3; + case 0x7a: + return 3; + case 0x7b: + return 3; + case 0x7c: + return 4; + case 0x7d: + return 4; + case 0x7e: + return 3; + case 0x7f: + return 3; + case 0x80: + return 3; + case 0x81: + return 2; + case 0x82: + return 2; + case 0x83: + return 2; + case 0x84: + return 3; + case 0x85: + return 2; + case 0x86: + return 2; + case 0x87: + return 2; + case 0x88: + return 2; + case 0x89: + return 3; + case 0x8a: + return 2; + case 0x8b: + return 3; + case 0x8c: + return 2; + case 0x8d: + return 2; + case 0x8e: + return 2; + case 0x8f: + return 3; + case 0x90: + return 3; + case 0x91: + return 2; + case 0x92: + return 2; + case 0x93: + return 2; + case 0x94: + return 2; + case 0x95: + return 2; + case 0x96: + return 3; + case 0x97: + return 3; + case 0x98: + return 3; + case 0x99: + return 4; + case 0x9a: + return 5; + case 0x9b: + return 5; + case 0x9c: + return 6; + case 0x9d: + return 5; + case 0x9e: + return 5; + case 0x9f: + return 6; + case 0xa0: + return 6; + case 0xa1: + return 6; + case 0xa2: + return 7; + case 0xa3: + return 6; + case 0xa4: + return 6; + case 0xa5: + return 7; + case 0xa6: + return 6; + case 0xa7: + return 6; + case 0xa8: + return 7; + case 0xa9: + return 2; + case 0xaa: + return 3; + case 0xab: + return 3; + case 0xac: + return 4; + case 0xad: + break; + case 0xae: + return 1; + case 0xaf: + return 1; + case 0xb0: + return 1; + case 0xb1: + return 1; + case 0xb2: + return 2; + case 0xb3: + return 5; + case 0xb4: + return 5; + case 0xb5: + return 1; + case 0xb6: + return 1; + case 0xb7: + return 3; + case 0xb8: + return 1; + case 0xb9: + return 1; + case 0xba: + return 2; + case 0xbb: + return 4; + case 0xbc: + return 4; + case 0xbd: + return 0xc; + case 0xbe: + return 0xb; + case 0xbf: + return 9; + case 0xc0: + return 8; + case 0xc1: + return 5; + case 0xc2: + return 3; + case 0xc3: + return 3; + case 0xc4: + return 4; + case 0xc5: + return 5; + case 0xc6: + return 6; + case 199: + return 6; + case 200: + return 6; + case 0xc9: + return 2; + case 0xca: + return 5; + case 0xcb: + return 2; + case 0xcc: + return 5; + case 0xcd: + return 5; + case 0xce: + return 2; + case 0xcf: + return 2; + case 0xd0: + return 4; + case 0xd1: + return 2; + case 0xd2: + return 1; + case 0xd3: + return 1; + case 0xd4: + return 3; + case 0xd5: + return 6; + case 0xd6: + return 4; + case 0xd7: + return 2; + case 0xd8: + return 1; + case 0xd9: + return 5; + case 0xda: + return 1; + case 0xdb: + return 1; + case 0xdc: + return 2; + case 0xdd: + return 1; + case 0xde: + return 1; + case 0xdf: + return 2; + case 0xe0: + return 3; + case 0xe1: + return 3; + case 0xe2: + return 4; + case 0xe3: + return 2; + case 0xe4: + return 2; + case 0xe5: + return 3; + case 0xe6: + return 5; + case 0xe7: + return 2; + case 0xe8: + return 2; + case 0xe9: + return 1; + case 0xea: + return 1; + case 0xeb: + return 2; + case 0xec: + return 1; + case 0xed: + return 1; + case 0xee: + return 0xd; + case 0xef: + return 1; + case 0xf0: + return 2; + case 0xf1: + return 2; + case 0xf2: + return 3; + case 0xf3: + return 2; + case 0xf4: + return 4; + case 0xf5: + return 2; + case 0xf6: + return 1; + case 0xf7: + return 3; + case 0xf8: + return 3; + case 0xf9: + return 1; + case 0xfa: + return 1; + case 0xfb: + return 1; + case 0xfc: + return 2; + default: + return 1; + } + iVar3 = param_2 + 1; + if (((undefined *)(param_1 + param_2))[1] == '\0') { + iVar3 -= param_2; + } + else { + cVar1 = *(char *)(param_1 + iVar3 + 1); + iVar2 = param_1 + iVar3; + while( true ) { + iVar3 += 1; + if (cVar1 == '\0') break; + cVar1 = *(char *)(iVar2 + 2); + iVar2 = iVar2 + 1; + } + iVar3 -= param_2; + } + return iVar3 + 1; +} + + + +undefined * proc_7F035244(undefined *param_1,undefined4 *param_2) + +{ + struct_13 *psVar1; + undefined *puVar2; + int iVar3; + struct_13 *psVar4; + undefined *puVar5; + + if ((ptr_setup_actions != NULL) && (iVar3 = 0, *(int *)ptr_setup_actions != 0)) { + puVar2 = *(undefined **)ptr_setup_actions; + puVar5 = ptr_setup_actions; + do { + if (param_1 == puVar2) { + *param_2 = 0; + return *(undefined **)(ptr_setup_actions + iVar3 + 4); + } + puVar2 = *(undefined **)(puVar5 + 8); + iVar3 += 8; + puVar5 = puVar5 + 8; + } while (puVar2 != NULL); + } + psVar4 = &stru_8003744C; + puVar2 = (undefined *)stru_8003744C.anonymous_0; + if (stru_8003744C.anonymous_0 != NULL) { + do { + if (param_1 == puVar2) { + *param_2 = 1; + return (undefined *)psVar4->anonymous_1; + } + psVar1 = psVar4 + 1; + psVar4 = psVar4 + 1; + puVar2 = (undefined *)psVar1->anonymous_0; + } while ((undefined *)psVar1->anonymous_0 != NULL); + } + return (undefined *)0xffffffff; +} + + + +int proc_7F0352F0(undefined *param_1,int param_2,char param_3) + +{ + char cVar1; + int iVar2; + undefined4 auStack12 [3]; + + do { + cVar1 = param_1[param_2]; + if (cVar1 == '\x02') { + if (param_3 == (param_1 + param_2)[1]) { + return param_2; + } + } + else { + if (cVar1 == '\x04') { + proc_7F035244(param_1,auStack12); + return 0; + } + } + iVar2 = get_length_of_action_block((int)param_1,param_2); + param_2 += iVar2; + } while( true ); +} + + + +undefined * proc_7F035398(undefined *param_1) + +{ + undefined4 *puVar1; + struct_13 *psVar2; + undefined *puVar3; + + if ((int)param_1 < 0x401) { + psVar2 = &stru_8003744C; + puVar3 = (undefined *)stru_8003744C.anonymous_1; + if (stru_8003744C.anonymous_0 != NULL) { + while( true ) { + if (param_1 == puVar3) { + return (undefined *)psVar2->anonymous_0; + } + if (psVar2[1].anonymous_0 == NULL) break; + puVar3 = (undefined *)psVar2[1].anonymous_1; + psVar2 = psVar2 + 1; + } + } + } + else { + if ((ptr_setup_actions != NULL) && (*(int *)ptr_setup_actions != 0)) { + puVar3 = *(undefined **)(ptr_setup_actions + 4); + puVar1 = (undefined4 *)ptr_setup_actions; + while( true ) { + if (param_1 == puVar3) { + return (undefined *)*puVar1; + } + if (puVar1[2] == 0) break; + puVar3 = (undefined *)puVar1[3]; + puVar1 = puVar1 + 2; + } + } + } + return NULL; +} + + + +int * get_ptr_path_for_pathnum(ulonglong pathnum) + +{ + byte bVar1; + undefined *puVar2; + int iVar3; + + iVar3 = 0; + if (*(int *)ptr_setup_path_sets != 0) { + bVar1 = ptr_setup_path_sets[4]; + puVar2 = ptr_setup_path_sets; + while( true ) { + if (pathnum == (ulonglong)bVar1) { + return (int *)(ptr_setup_path_sets + iVar3 * 8); + } + iVar3 += 1; + if (*(int *)(puVar2 + 8) == 0) break; + bVar1 = puVar2[0xc]; + puVar2 = puVar2 + 8; + } + } + return NULL; +} + + +/* +Unable to decompile 'parse_handle_actionblocks' +Cause: Exception while decompiling 7f035484: process: timeout + +*/ + + +// WARNING: Instruction at (ram,0x7f03a330) overlaps instruction at (ram,0x7f03a32c) +// + +void proc_7F03A240(void) + +{ + byte bVar1; + undefined4 uVar2; + bool bVar3; + object_standard *poVar4; + int iVar5; + int *piVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + float fVar12; + float fVar13; + float fVar14; + + poVar4 = get_ptr_obj_pos_list_current_entry(); + iVar8 = 0; + if (poVar4 != NULL) { + bVar1 = *(byte *)&poVar4->field_0x1; + while( true ) { + if ((bVar1 & 6) == 6) { + *(object_standard **)(&DAT_80071620 + iVar8) = poVar4; + iVar8 += 1; + poVar4 = (object_standard *)poVar4->runtime_MATRIX3; + } + else { + poVar4 = (object_standard *)poVar4->runtime_MATRIX3; + } + if (poVar4 == NULL) break; + bVar1 = *(byte *)&poVar4->field_0x1; + } + } + DAT_80071df4 = iVar8; + (&DAT_80071620)[iVar8] = 0; + DAT_80071df0 = &DAT_80071620 + iVar8; + iVar10 = 0; + if (iVar8 < 1) { + return; + } + bVar3 = 0 < iVar8; + do { + iVar7 = -1; + if (bVar3) { + uVar9 = iVar8 - iVar10 & 3; + iVar5 = iVar10; + if (uVar9 == 0) { + iVar11 = iVar10 << 2; + fVar13 = -4294967296.00000000; + } + else { + piVar6 = &DAT_80071620 + iVar10; + fVar14 = -4294967296.00000000; + iVar11 = iVar7; + do { + fVar13 = *(float *)(*piVar6 + 0x18); + iVar7 = iVar5; + if (fVar13 <= fVar14) { + fVar13 = fVar14; + iVar7 = iVar11; + } + iVar5 += 1; + piVar6 = piVar6 + 1; + fVar14 = fVar13; + iVar11 = iVar7; + } while (uVar9 + iVar10 != iVar5); + iVar11 = iVar5 * 4; + if (iVar5 == iVar8) goto LAB_7f03a3c4; + } + piVar6 = (int *)((int)&DAT_80071620 + iVar11); + do { + fVar14 = *(float *)(*piVar6 + 0x18); + if (fVar13 < fVar14) { + iVar11 = piVar6[1]; + iVar7 = iVar5; + } + else { + iVar11 = piVar6[1]; + fVar14 = fVar13; + } + fVar12 = *(float *)(iVar11 + 0x18); + if (fVar14 < fVar12) { + iVar7 = iVar5 + 1; + iVar11 = piVar6[2]; + } + else { + iVar11 = piVar6[2]; + fVar12 = fVar14; + } + fVar13 = *(float *)(iVar11 + 0x18); + if (fVar12 < fVar13) { + iVar7 = iVar5 + 2; + iVar11 = piVar6[3]; + } + else { + iVar11 = piVar6[3]; + fVar13 = fVar12; + } + if (fVar13 < *(float *)(iVar11 + 0x18)) { + iVar7 = iVar5 + 3; + fVar13 = *(float *)(iVar11 + 0x18); + } + iVar5 += 4; + piVar6 = piVar6 + 4; + } while (iVar5 != iVar8); + } +LAB_7f03a3c4: + if (-1 < iVar7) { + uVar2 = (&DAT_80071620)[iVar10]; + (&DAT_80071620)[iVar10] = (&DAT_80071620)[iVar7]; + (&DAT_80071620)[iVar7] = uVar2; + } + iVar10 += 1; + if (iVar10 == iVar8) { + return; + } + bVar3 = iVar10 < iVar8; + } while( true ); +} + + + +void set_stateflag_0x04_for_posdata(int param_1) + +{ + *(byte *)(param_1 + 1) = *(byte *)(param_1 + 1) | 4; + return; +} + + + +void unset_stateflag_0x04_for_posdata(int param_1) + +{ + *(byte *)(param_1 + 1) = *(byte *)(param_1 + 1) & 0xfb; + return; +} + + + +object_standard * get_ptr_obj_pos_list_current_entry(void) + +{ + return (object_standard *)ptr_obj_pos_list_current_entry; +} + + + +object_standard * remove_last_obj_pos_data_entry(void) + +{ + int *piVar1; + object_standard *poVar2; + + poVar2 = ptr_obj_pos_list_final_entry; + if (ptr_obj_pos_list_final_entry == NULL) { + return NULL; + } + piVar1 = &ptr_obj_pos_list_final_entry->runtime_MATRIX3; + ptr_obj_pos_list_final_entry = (object_standard *)ptr_obj_pos_list_final_entry->runtime_MATRIX3; + *piVar1 = 0; + poVar2->runtime_MATRIX4 = 0; + poVar2->runtime_MATRIX1 = 0; + poVar2->runtime_MATRIX2 = 0; + *(undefined *)((int)&poVar2->extrascale + 1) = 0; + poVar2->runtime_ptr_obj_instance_controller = 0; + *(undefined2 *)&poVar2->hidden2 = 0; + *(undefined *)&poVar2->runtime_MATRIX5 = 0xff; + return poVar2; +} + + + +void set_last_obj_pos_data(object_standard *param_1) + +{ + param_1->runtime_MATRIX4 = 0; + param_1->runtime_ptr_obj_instance_controller = 0; + *(object_standard **)¶m_1->runtime_MATRIX3 = ptr_obj_pos_list_final_entry; + ptr_obj_pos_list_final_entry = param_1; + return; +} + + + +void set_current_objposdata_plus_0x28(object_standard *param_1) + +{ + if (ptr_obj_pos_list_current_entry != NULL) { + *(object_standard **)&ptr_obj_pos_list_current_entry->runtime_MATRIX4 = param_1; + param_1->runtime_MATRIX4 = 0; + *(object_standard **)¶m_1->runtime_MATRIX3 = ptr_obj_pos_list_current_entry; + ptr_obj_pos_list_current_entry = param_1; + return; + } + param_1->runtime_MATRIX3 = 0; + param_1->runtime_MATRIX4 = 0; + ptr_obj_pos_list_current_entry = param_1; + ptr_obj_pos_list_first_entry = param_1; + return; +} + + + +void proc_7F03A4F0(int param_1) + +{ + if (ptr_obj_pos_list_first_entry == NULL) { + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + ptr_obj_pos_list_current_entry = (object_standard *)param_1; + ptr_obj_pos_list_first_entry = (object_standard *)param_1; + return; + } + ptr_obj_pos_list_first_entry->runtime_MATRIX3 = param_1; + *(undefined4 *)(param_1 + 0x24) = 0; + *(object_standard **)(param_1 + 0x28) = ptr_obj_pos_list_first_entry; + ptr_obj_pos_list_first_entry = (object_standard *)param_1; + return; +} + + + +void proc_7F03A538(int param_1) + +{ + int iVar1; + + if ((object_standard *)param_1 == ptr_obj_pos_list_current_entry) { + ptr_obj_pos_list_current_entry = *(object_standard **)(param_1 + 0x24); + } + if ((object_standard *)param_1 == ptr_obj_pos_list_first_entry) { + ptr_obj_pos_list_first_entry = *(object_standard **)(param_1 + 0x28); + iVar1 = *(int *)(param_1 + 0x24); + } + else { + iVar1 = *(int *)(param_1 + 0x24); + } + if (iVar1 == 0) { + iVar1 = *(int *)(param_1 + 0x28); + } + else { + *(undefined4 *)(iVar1 + 0x28) = *(undefined4 *)(param_1 + 0x28); + iVar1 = *(int *)(param_1 + 0x28); + } + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x24) = 0; + } + else { + *(undefined4 *)(iVar1 + 0x24) = *(undefined4 *)(param_1 + 0x24); + *(undefined4 *)(param_1 + 0x24) = 0; + } + *(undefined4 *)(param_1 + 0x28) = 0; + return; +} + + + +void proc_7F03A5A4(int param_1,int param_2) + +{ + *(int *)(param_1 + 0x1c) = param_2; + if (*(int *)(param_2 + 0x20) == 0) { + *(undefined4 *)(param_1 + 0x24) = 0; + } + else { + *(int *)(*(int *)(param_2 + 0x20) + 0x28) = param_1; + *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_2 + 0x20); + } + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(int *)(param_2 + 0x20) = param_1; + return; +} + + + +void proc_7F03A5D0(int param_1) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x1c); + if (iVar1 != 0) { + if (param_1 == *(int *)(iVar1 + 0x20)) { + *(undefined4 *)(iVar1 + 0x20) = *(undefined4 *)(param_1 + 0x24); + iVar1 = *(int *)(param_1 + 0x24); + } + else { + iVar1 = *(int *)(param_1 + 0x24); + } + if (iVar1 == 0) { + iVar1 = *(int *)(param_1 + 0x28); + } + else { + *(undefined4 *)(iVar1 + 0x28) = *(undefined4 *)(param_1 + 0x28); + iVar1 = *(int *)(param_1 + 0x28); + } + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x1c) = 0; + } + else { + *(undefined4 *)(iVar1 + 0x24) = *(undefined4 *)(param_1 + 0x24); + *(undefined4 *)(param_1 + 0x1c) = 0; + } + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + return; +} + + + +undefined8 proc_7F03A62C(undefined8 param_1,char *param_2,longlong param_3) + +{ + char cVar1; + uint uVar2; + + uVar2 = (uint)param_3; + cVar1 = *param_2; + if (cVar1 == '\x03') { + param_1 = proc_7F021BFC(param_2,(uint *)param_1,uVar2); + } + else { + if (((cVar1 == '\x01') || (cVar1 == '\x04')) || (cVar1 == '\x02')) { + param_1 = proc_7F04B150(param_2,(uint *)param_1,uVar2); + } + else { + if (cVar1 == '\a') { + param_1 = proc_7F09D5A0(param_2,param_1,param_3); + } + else { + if (cVar1 == '\b') { + param_1 = proc_7F09F03C(param_2,param_1,param_3); + } + else { + if (cVar1 == '\x06') { + param_1 = proc_7F08BCC0(param_2,param_1,uVar2); + } + } + } + } + } + return param_1; +} + + + +longlong proc_7F03A6F4(longlong param_1,uint param_2,longlong param_3) + +{ + char *pcVar1; + uint uVar2; + bool bVar3; + int iVar5; + ulonglong uVar4; + uint *puVar6; + char **ppcVar7; + uint auStack40 [10]; + + puVar6 = (uint *)param_1; + iVar5 = get_stage_num(); + if (iVar5 == 0x36) { + if (param_3 == 0) { + return param_1; + } + if (param_3 == 2) { + param_3 = 0; + } + } + if ((param_3 == 0) || (param_3 == 2)) { + ppcVar7 = DAT_80071df0 + -1; + if ((char **)((int)&DAT_8007161c + 3) < ppcVar7) { + pcVar1 = *ppcVar7; + do { + if (pcVar1 != NULL) { + bVar3 = false; + if ((param_3 == 0) && ((pcVar1[1] & 0x21U) == 0)) { + bVar3 = true; + } + else { + if ((param_3 == 2) && ((pcVar1[1] & 0x21U) == 1)) { + bVar3 = true; + } + } + if (bVar3) { + bVar3 = false; + proc_7F03CB8C(pcVar1,auStack40); + puVar6 = auStack40; + uVar2 = auStack40[0]; + while (-1 < (int)uVar2) { + uVar4 = proc_7F0B5E50(uVar2); + if (uVar4 != 0) { + if (param_2 == *puVar6) { + bVar3 = true; + } + break; + } + uVar2 = puVar6[1]; + puVar6 = puVar6 + 1; + } + if (bVar3) { + param_1 = proc_7F03A62C(param_1,pcVar1,0); + } + } + } + puVar6 = (uint *)param_1; + ppcVar7 = ppcVar7 + -1; + if (ppcVar7 < &DAT_80071620) break; + pcVar1 = *ppcVar7; + } while( true ); + } + } + else { + ppcVar7 = (char **)&DAT_80071620; + if (&DAT_80071620 < DAT_80071df0) { + pcVar1 = DAT_80071620; + do { + bVar3 = false; + if (pcVar1 != NULL) { + proc_7F03CB8C(pcVar1,auStack40); + puVar6 = auStack40; + uVar2 = auStack40[0]; + while (-1 < (int)uVar2) { + uVar4 = proc_7F0B5E50(uVar2); + if (uVar4 != 0) { + if (param_2 == *puVar6) { + bVar3 = true; + } + break; + } + uVar2 = puVar6[1]; + puVar6 = puVar6 + 1; + } + if (bVar3) { + if ((pcVar1[1] & 0x20U) != 0) { + param_1 = proc_7F03A62C(param_1,pcVar1,0); + } + param_1 = proc_7F03A62C(param_1,pcVar1,1); + } + } + puVar6 = (uint *)param_1; + ppcVar7 = ppcVar7 + 1; + if (DAT_80071df0 <= ppcVar7) break; + pcVar1 = *ppcVar7; + } while( true ); + } + } + puVar6 = proc_7F0B4FB4(puVar6); + return (longlong)(int)puVar6; +} + + + +undefined8 proc_7F03A97C(int param_1,float *param_2,float *param_3) + +{ + longlong lVar1; + undefined8 uVar2; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + int local_4; + + if (roominformationblock[param_1].ptr_unique_collision_points == NULL) { + uVar2 = 0; + } + else { + local_18 = (int)roominformationblock[param_1].minxbounds; + local_14 = (int)roominformationblock[param_1].minybounds; + local_10 = (int)roominformationblock[param_1].minzbounds; + local_c = (int)roominformationblock[param_1].maxxbounds; + local_8 = (int)roominformationblock[param_1].maxybounds; + local_4 = (int)roominformationblock[param_1].maxzbounds; + lVar1 = proc_7F0B6CEC(param_2,param_3,&local_18,&local_c); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F03AA44(void) + +{ + char cVar1; + int iVar3; + longlong lVar2; + float *in_a1_lo; + float *in_a2_lo; + int in_a3_lo; + int iVar4; + char *pcVar5; + f32 fVar6; + f32 fVar7; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fVar6 = proc_7F0B483C(); + fVar7 = proc_7F0B4878(); + iVar4 = 1; + fStack24 = *in_a2_lo - *in_a1_lo; + fStack20 = in_a2_lo[1] - in_a1_lo[1]; + fStack4 = (float)fVar7 * (float)fVar6; + fStack16 = in_a2_lo[2] - in_a1_lo[2]; + fStack12 = *in_a1_lo * fStack4; + fStack8 = in_a1_lo[1] * fStack4; + fStack4 = in_a1_lo[2] * fStack4; + iVar3 = get_max_num_rooms(); + pcVar5 = (char *)(in_a3_lo + 1); + if (1 < iVar3) { + cVar1 = *pcVar5; + while( true ) { + if ((cVar1 == '\0') && (lVar2 = proc_7F03A97C(iVar4,&fStack12,&fStack24), lVar2 == 0)) { + *pcVar5 = '\x01'; + } + iVar4 += 1; + pcVar5 = pcVar5 + 1; + iVar3 = get_max_num_rooms(); + if (iVar3 <= iVar4) break; + cVar1 = *pcVar5; + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +uint proc_7F03AB58(void) + +{ + uint uVar1; + int iVar3; + longlong lVar2; + float *in_a0_lo; + float *in_a1_lo; + float *in_a2_lo; + float *in_a3_lo; + float *pfVar4; + float *pfVar5; + float *pfVar6; + uint *puVar7; + uint *puVar8; + f32 fVar9; + float fVar10; + float fVar11; + int in_stack_00000010; + float *in_stack_00000014; + uint in_stack_00000018; + float fStack460; + float fStack456; + float fStack452; + float afStack412 [3]; + uint auStack400 [100]; + + fVar9 = proc_7F0B4830(); + iVar3 = proc_7F0B8E98(auStack400,100); + puVar7 = auStack400; + if (iVar3 < 1) { + return in_stack_00000018; + } + puVar8 = puVar7 + iVar3; + do { + if (*(char *)(auStack400[0] + in_stack_00000010) == '\0') { + *(char *)(auStack400[0] + in_stack_00000010) = '\x01'; + lVar2 = proc_7F03A97C(*puVar7,in_a3_lo,in_a2_lo); + if ((lVar2 != 0) && + (iVar3 = proc_7F0B7A78(in_a0_lo,in_a1_lo,*puVar7,&fStack460), iVar3 != 0)) { + fStack460 = fStack460 * (float)fVar9; + fStack456 = fStack456 * (float)fVar9; + uVar1 = *puVar7; + fStack452 = fStack452 * (float)fVar9; + pfVar4 = &fStack460; + pfVar6 = in_stack_00000014; + if (0 < (int)in_stack_00000018) { + fVar10 = *in_stack_00000014; + fVar11 = *in_a0_lo; + if (((fVar10 < fVar11) || (fStack460 < fVar11)) || (fVar10 <= fStack460)) { + if (((fVar11 < fVar10) || (fVar11 < fStack460)) || (fStack460 <= fVar10)) + goto LAB_7f03adb4; + fVar10 = in_stack_00000014[1]; + } + else { + fVar10 = in_stack_00000014[1]; + } + fVar11 = in_a0_lo[1]; + if (((fVar10 < fVar11) || (fStack456 < fVar11)) || (fVar10 <= fStack456)) { + if (((fVar11 < fVar10) || (fVar11 < fStack456)) || (fStack456 <= fVar10)) + goto LAB_7f03adb4; + fVar10 = in_stack_00000014[2]; + } + else { + fVar10 = in_stack_00000014[2]; + } + fVar11 = in_a0_lo[2]; + if ((((fVar10 < fVar11) || (fStack452 < fVar11)) || (fVar10 <= fStack452)) && + (((fVar11 < fVar10 || (fVar11 < fStack452)) || (fStack452 <= fVar10)))) + goto LAB_7f03adb4; + } + do { + pfVar5 = pfVar4 + 3; + *pfVar6 = *pfVar4; + pfVar6[1] = pfVar4[1]; + pfVar6[2] = pfVar4[2]; + pfVar4 = pfVar5; + pfVar6 = pfVar6 + 3; + in_stack_00000018 = uVar1; + } while (pfVar5 != afStack412); + } + } +LAB_7f03adb4: + puVar7 = puVar7 + 1; + if (puVar8 <= puVar7) { + return in_stack_00000018; + } + auStack400[0] = *puVar7; + } while( true ); +} + + + +ulonglong proc_7F03ADF4(byte param_1,float *param_2,float *param_3,float *param_4,float *param_5, + int param_6,float *param_7) + +{ + byte bVar1; + longlong lVar2; + int iVar3; + byte *pbVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + byte *pbVar9; + int aiStack660 [101]; + byte abStack256 [256]; + + abStack256[0] = param_1; + iVar6 = 1; + iVar8 = 0; + pbVar9 = abStack256; + do { + bVar1 = *pbVar9; + if (*(char *)(param_6 + (uint)bVar1) == '\0') { + *(char *)(param_6 + (uint)bVar1) = '\x01'; + lVar2 = proc_7F03A97C((uint)bVar1,param_5,param_4); + if ((lVar2 != 0) && + (iVar3 = proc_7F0B7A78(param_2,param_3,(uint)bVar1,param_7), iVar3 != 0)) { + return (ulonglong)bVar1; + } + } + iVar7 = 0; + iVar3 = proc_7F0B8EFC((ulonglong)bVar1,aiStack660,100); + if (0 < iVar3) { + do { + iVar5 = 0; + if (0 < iVar6) { + pbVar4 = abStack256; + do { + if ((ulonglong)*pbVar4 == (longlong)aiStack660[iVar7]) break; + iVar5 += 1; + pbVar4 = pbVar4 + 1; + } while (iVar5 != iVar6); + } + if (iVar5 == iVar6) { + pbVar4 = abStack256 + iVar6; + iVar6 += 1; + *pbVar4 = (byte)aiStack660[iVar7]; + } + iVar7 += 1; + } while (iVar7 < iVar3); + } + iVar8 += 1; + pbVar9 = pbVar9 + 1; + if (iVar6 <= iVar8) { + return 0; + } + } while( true ); +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +int proc_7F03AF5C(void) + +{ + char cVar1; + int iVar3; + longlong lVar2; + float *in_a1_lo; + float *in_a2_lo; + float *in_a3_lo; + int iVar4; + char *pcVar5; + int iVar6; + f32 fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float *in_stack_00000010; + int in_stack_00000014; + float *in_stack_00000018; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + undefined2 uStack16; + short sStack14; + + fVar11 = 4294967296.00000000; + iVar6 = 0; + fVar7 = proc_7F0B4830(); + iVar4 = 1; + iVar3 = get_max_num_rooms(); + if (1 < iVar3) { + pcVar5 = (char *)(in_stack_00000014 + 1); + cVar1 = *pcVar5; + while( true ) { + if (cVar1 == '\0') { + *pcVar5 = '\x01'; + lVar2 = proc_7F03A97C(iVar4,in_stack_00000010,in_a3_lo); + if ((lVar2 != 0) && + (iVar3 = proc_7F0B7A78(in_a1_lo,in_a2_lo,iVar4,&fStack56), iVar3 != 0)) { + fVar8 = fStack56 * (float)fVar7 - *in_a1_lo; + fVar9 = fStack52 * (float)fVar7 - in_a1_lo[1]; + fVar10 = fStack48 * (float)fVar7 - in_a1_lo[2]; + fVar8 = fVar8 * fVar8 + fVar9 * fVar9 + fVar10 * fVar10; + lVar2 = check_if_imageID_is_light((longlong)sStack14); + if (lVar2 != 0) { + fVar8 = fVar8 - 4.00000000; + } + if (fVar8 < fVar11) { + *in_stack_00000018 = fStack56; + in_stack_00000018[1] = fStack52; + in_stack_00000018[2] = fStack48; + in_stack_00000018[3] = fStack44; + in_stack_00000018[4] = fStack40; + in_stack_00000018[5] = fStack36; + in_stack_00000018[6] = fStack32; + in_stack_00000018[7] = fStack28; + in_stack_00000018[8] = fStack24; + *(short *)((int)in_stack_00000018 + 0x2a) = sStack14; + in_stack_00000018[9] = fStack20; + *(undefined2 *)(in_stack_00000018 + 10) = uStack16; + fVar11 = fVar8; + iVar6 = iVar4; + } + } + } + iVar4 += 1; + pcVar5 = pcVar5 + 1; + iVar3 = get_max_num_rooms(); + if (iVar3 <= iVar4) break; + cVar1 = *pcVar5; + } + } + return iVar6; +} + + + +// WARNING: Instruction at (ram,0x7f03b764) overlaps instruction at (ram,0x7f03b760) +// +// WARNING: Could not reconcile some variable overlaps + +void proc_7F03B15C(undefined8 param_1) + +{ + object_standard *position_data_pointer; + char *pcVar1; + hit_header **pphVar2; + bool bVar3; + int iVar6; + xyzpoint *pxVar7; + uint uVar8; + char cVar10; + ulonglong uVar4; + u32 uVar9; + longlong lVar5; + int *piVar11; + undefined8 extraout_a2; + int iVar13; + undefined8 extraout_a2_00; + undefined8 extraout_a2_01; + undefined8 uVar12; + undefined8 extraout_a2_02; + undefined8 extraout_a2_03; + undefined8 extraout_a2_04; + undefined8 extraout_a3; + undefined8 extraout_a3_00; + undefined8 extraout_a3_01; + undefined8 uVar14; + undefined8 extraout_a3_02; + undefined8 extraout_a3_03; + undefined8 extraout_a3_04; + float fVar15; + byte bVar16; + float *pfVar17; + object_standard **ppoVar18; + f32 fVar19; + f32 fVar20; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + float extraout_f14_00; + char cStack1320; + undefined uStack1319; + float fStack1292; + float fStack1288; + float fStack1284; + float fStack1280; + float fStack1276; + float fStack1272; + float fStack1268; + undefined4 uStack1260; + int aiStack1004 [2]; + float fStack996; + float fStack992; + float fStack988; + float fStack984; + float fStack980; + float fStack976; + ITEM_IDS IStack972; + float fStack968; + float fStack964; + float fStack960; + float fStack956; + float fStack952; + float fStack948; + float fStack944; + char *pcStack936; + undefined4 uStack932; + undefined4 uStack928; + undefined4 uStack856; + undefined4 uStack852; + undefined4 uStack848; + float afStack836 [160]; + float afStack196 [14]; + float fStack140; + float fStack136; + float fStack132; + int aiStack128 [2]; + float fStack120; + float fStack116; + float fStack112; + float fStack108; + float fStack104; + float fStack100; + float fStack96; + float afStack92 [6]; + int iStack68; + short sStack64; + short sStack62; + int iStack56; + undefined4 uStack52; + float fStack48; + float fStack44; + float fStack40; + int iStack36; + int iStack28; + float fStack24; + float fStack20; + float fStack16; + int iStack12; + + iStack12 = 0; + iStack28 = 0; + iStack36 = 0; + uStack52 = 0; + iVar6 = get_curplayer_positiondata(); + aiStack128[0] = *(int *)(iVar6 + 0x14); + aiStack1004[0] = 0; + proc_7F0681CC(); + IStack972 = get_item_in_hand(param_1._4_4_); + pcStack936 = NULL; + uStack932 = 0; + uStack928 = 0; + uStack856 = 0; + uStack852 = 0; + uStack848 = 0; + fStack944 = 4294967296.00000000; + pfVar17 = afStack836; + do { + pfVar17 = pfVar17 + 0x50; + pfVar17[0x23] = 0.00000000; + pfVar17[0x24] = 0.00000000; + pfVar17[0x25] = 0.00000000; + pfVar17[0x37] = 0.00000000; + pfVar17[0x38] = 0.00000000; + pfVar17[0x39] = 0.00000000; + pfVar17[0x4b] = 0.00000000; + pfVar17[0x4c] = 0.00000000; + pfVar17[0x4d] = 0.00000000; + pfVar17[0xf] = 0.00000000; + pfVar17[0x10] = 0.00000000; + pfVar17[0x11] = 0.00000000; + pfVar17 = pfVar17; + } while (pfVar17 != afStack196); + fStack968 = fStack996; + fStack964 = fStack992; + fStack960 = fStack988; + pfVar17 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar17,&fStack968); + fStack956 = fStack984; + fStack952 = fStack980; + fStack948 = fStack976; + pfVar17 = (float *)get_BONDdata_field_10D4(); + lVar5 = (longlong)(int)pfVar17; + proc_7F0583D8(pfVar17,&fStack956); + fStack140 = fStack956 * 65536.00000000 + fStack968; + fStack136 = fStack952 * 65536.00000000 + fStack964; + fStack132 = fStack948 * 65536.00000000 + fStack960; + proc_7F0B0BE4(aiStack128,extraout_f12,extraout_f14,*(float *)(iVar6 + 8), + *(float *)(iVar6 + 0x10)); + uVar12 = extraout_a2; + uVar14 = extraout_a3; + if (lVar5 != 0) { + fVar19 = proc_7F0B483C(); + fVar20 = proc_7F0B4878(); + fStack1292 = (float)fVar20 * (float)fVar19; + pxVar7 = get_BONDdata_position(); + lVar5 = (longlong)(int)pxVar7; + proc_7F0B1CC4(); + proc_7F0B0BE4(aiStack128,extraout_f12_00,extraout_f14_00,fStack968,fStack960); + if (lVar5 == 0) { + proc_7F02624C(&fStack968,&fStack956,&fStack24); + iStack12 = 1; + } + else { + fStack24 = fStack140; + fStack20 = fStack136; + fStack16 = fStack132; + } + fStack1288 = fStack24 - (float)pxVar7->x; + fStack1284 = fStack20 - (float)pxVar7->y; + fStack1280 = fStack16 - (float)pxVar7->z; + fStack1276 = (float)pxVar7->x * fStack1292; + fStack1272 = (float)pxVar7->y * fStack1292; + iStack28 = aiStack128[0]; + fStack1268 = (float)pxVar7->z * fStack1292; + uVar4 = proc_7F0B2FD8(aiStack128[0]); + piVar11 = &uStack1260; + do { + piVar11 = piVar11 + 1; + *(undefined *)((int)piVar11 + 1) = 0; + *(undefined *)((int)piVar11 + 2) = 0; + *(undefined *)((int)piVar11 + 3) = 0; + *(undefined *)piVar11 = 0; + piVar11 = piVar11; + } while (piVar11 != aiStack1004); + iVar13 = (int)uVar4; + iVar6 = proc_7F0B7A78((float *)pxVar7,&fStack24,iVar13,&fStack104); + if (iVar6 != 0) { + uStack52 = iVar13; + } + *(undefined *)((int)&uStack1260 + iVar13) = 1; + if (uStack52 < 1) { + if (ptr_bgdata_portals->offset_portal == NULL) { + iVar6 = get_curplayer_positiondata(); + proc_7F0B2FD8(*(int *)(iVar6 + 0x14)); + uStack52 = proc_7F03AF5C(); + } + else { + iVar6 = get_curplayer_positiondata(); + uVar4 = proc_7F0B2FD8(*(int *)(iVar6 + 0x14)); + uVar4 = proc_7F03ADF4((byte)uVar4,(float *)pxVar7,&fStack24,&fStack1288,&fStack1276, + (int)&uStack1260,&fStack104); + uStack52 = (int)uVar4; + } + } + if (0 < uStack52) { + fVar19 = proc_7F0B4830(); + fStack104 = fStack104 * (float)fVar19; + fStack100 = fStack100 * (float)fVar19; + fStack96 = fStack96 * (float)fVar19; + } + lVar5 = proc_7F03AB58(); + uStack52 = (int)lVar5; + if (lVar5 < 1) { + uStack52 = iVar13; + iStack56 = -1; + fStack120 = fStack140; + fStack116 = fStack136; + fStack112 = fStack132; + } + else { + iStack36 = 1; + iStack56 = (int)sStack62; + fStack48 = fStack104; + fStack120 = fStack104; + fStack44 = fStack100; + fStack116 = fStack100; + fStack40 = fStack96; + fStack112 = fStack96; + } + if ((iStack12 != 0) || (uVar12 = extraout_a2_00, uVar14 = extraout_a3_00, iStack36 != 0)) { + pfVar17 = (float *)get_BONDdata_field_10CC(); + proc_7F058474(pfVar17,&fStack120); + fStack944 = -fStack112; + fStack108 = fStack944; + uVar12 = extraout_a2_01; + uVar14 = extraout_a3_01; + } + } + if ((IStack972 == ITEM_WATCHLASER) && (300.00000000 < fStack944)) { + fStack944 = 300.00000000; + } + ppoVar18 = (object_standard **)(DAT_80071df0 + -4); + if (ppoVar18 <= (object_standard **)((int)&DAT_8007161c + 3)) { +LAB_7f03b6a8: + pcVar1 = pcStack936; + pfVar17 = &fStack996; + while( true ) { + if (pcVar1 != NULL) { + cVar10 = *pcVar1; + if ((cVar10 == '\x03') || (cVar10 == '\x06')) { + proc_7F022980(&fStack996,pfVar17 + 0xe); + fVar15 = pfVar17[0x21]; + } + else { + if (((cVar10 == '\x01') || (cVar10 == '\x04')) || (cVar10 == '\x02')) { + proc_7F04EA68(&fStack996,pfVar17 + 0xe); + fVar15 = pfVar17[0x21]; + } + else { + fVar15 = pfVar17[0x21]; + } + } + if ((fVar15 != 0.00000000) && + (aiStack1004[0] = aiStack1004[0] + 1, uVar4 = proc_7F05E038(IStack972), + (longlong)uVar4 <= (longlong)aiStack1004[0])) { + iStack36 = 0; + iStack12 = 0; + } + } + if (pfVar17 + 0x14 == afStack196) break; + pcVar1 = (char *)pfVar17[0x23]; + pfVar17 = pfVar17 + 0x14; + } + if ((iStack36 != 0) || (iStack12 != 0)) { + pfVar17 = NULL; + bVar3 = true; + if ((IStack972 == ITEM_WATCHLASER) && (300.00000000 < fStack108)) { + bVar3 = false; + } + if (iStack36 == 0) { + if (iStack12 != 0) { + pfVar17 = &fStack24; + fStack24 = fStack956 * 65536.00000000 + fStack968; + fStack20 = fStack952 * 65536.00000000 + fStack964; + fStack16 = fStack948 * 65536.00000000 + fStack960; + } + } + else { + pphVar2 = hit_header_array[0]; + if (-1 < sStack62) { + pphVar2 = hit_header_array[(uint)(byte)image_entries[sStack62].flag1 & 0xf]; + } + if (bVar3) { + if ((0 < *(short *)((int)pphVar2 + 10)) && (IStack972 != ITEM_WATCHLASER)) { + uVar9 = get_random_value(); + if (*(short *)((int)pphVar2 + 10) == 0) { + trap(0x1c00); + } + proc_7F0A108C(&fStack48,afStack92, + (ushort)*(byte *)((int)&pphVar2[1]->pImageIDArray + + uVar9 % (int)*(short *)((int)pphVar2 + 10)), + uStack52._2_2_,0,-1,0); + } + lVar5 = check_if_imageID_is_light((longlong)sStack62); + if (lVar5 != 0) { + proc_7F0BBE0C((longlong)iStack68,(longlong)sStack64,(short)uStack52); + } + } + pfVar17 = &fStack48; + } + if (pfVar17 != NULL) { + if (bVar3) { + recall_joy2_hits_edit_flag(IStack972,pfVar17,iStack56); + bVar16 = image_entries[iStack56].flag1 & 0xf; + if ((bVar16 != 5) && (bVar16 != 6)) { + cStack1320 = (char)uStack52; + uStack1319 = 0xff; + uVar9 = get_cur_playernum(); + proc_7F09C250(0,pfVar17,iStack28,1,0,(char)uVar9,&cStack1320,0); + } + } + *pfVar17 = *pfVar17 - fStack956 * 26.00000000; + pfVar17[1] = pfVar17[1] - fStack952 * 26.00000000; + pfVar17[2] = pfVar17[2] - fStack948 * 26.00000000; + proc_7F067B4C(pfVar17); + if (bVar3) { + proc_7F0A3E1C(pfVar17,1,extraout_f12_01,0); + } + } + } + return; + } + position_data_pointer = *ppoVar18; + do { + extraout_a3_02._4_4_ = (undefined4)uVar14; + extraout_a2_02._4_4_ = (undefined4)uVar12; + if (position_data_pointer != NULL) { + bVar16 = *(byte *)position_data_pointer; + uVar8 = (uint)bVar16; + if (bVar16 == 3) { +code_r0x7f03b650: + proc_7F022648((int)position_data_pointer,&fStack996,extraout_a2_02._4_4_, + extraout_a3_02._4_4_); + uVar12 = extraout_a2_03; + uVar14 = extraout_a3_03; + } + else { + if (bVar16 == 6) { + if (*(int *)&position_data_pointer->pad == 0) { + cVar10 = *(char *)position_data_pointer; + } + else { + proc_7F09B15C((int)position_data_pointer); + uVar9 = get_cur_playernum(); + extraout_a3_02._4_4_ = (undefined4)extraout_a3_02; + extraout_a2_02._4_4_ = (undefined4)extraout_a2_02; + if (uVar9 != uVar8) goto code_r0x7f03b650; + cVar10 = *(char *)position_data_pointer; + uVar12 = extraout_a2_02; + uVar14 = extraout_a3_02; + } + } + else { + cVar10 = *(char *)position_data_pointer; + } + if (((cVar10 == '\x01') || (cVar10 == '\x04')) || (cVar10 == '\x02')) { + proc_7F04E9BC(position_data_pointer,&fStack996); + uVar12 = extraout_a2_04; + uVar14 = extraout_a3_04; + } + } + } + ppoVar18 = ppoVar18 + -1; + if (ppoVar18 < &DAT_80071620) goto LAB_7f03b6a8; + position_data_pointer = *ppoVar18; + } while( true ); +} + + + +void proc_7F03B9C0(int param_1,undefined4 param_2,float param_3,float param_4,undefined4 param_5, + undefined4 *param_6,undefined4 *param_7,undefined4 param_8,undefined4 param_9, + int param_10,int param_11) + +{ + int iVar2; + ulonglong uVar1; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + undefined4 *puVar7; + undefined4 *puVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + int in_stack_00000028; + + if (param_11 == 0) goto LAB_7f03bc24; + iVar5 = 0; + iVar3 = 0; + fVar9 = 0.00000000; + fVar11 = 0.00000000; + iVar4 = 0; + iVar2 = param_1; + do { + fVar10 = fVar9; + fVar12 = fVar11; + iVar6 = iVar4; + if ((*(int *)(iVar2 + 0x3c) != 0) && (*(int *)(iVar2 + 0x84) != 0)) { + iVar5 += 1; + fVar10 = *(float *)(iVar2 + 0x38); + fVar12 = fVar9; + iVar6 = iVar3; + if (*(float *)(iVar2 + 0x38) <= fVar9) { + fVar10 = fVar9; + fVar12 = fVar11; + iVar6 = iVar4; + } + } + iVar3 += 1; + iVar2 += 0x50; + fVar9 = fVar10; + fVar11 = fVar12; + iVar4 = iVar6; + } while (iVar3 < 10); + uVar1 = proc_7F05E038(*(int *)(param_1 + 0x18)); + if ((longlong)iVar5 < (longlong)uVar1) { + uVar1 = proc_7F05E038(*(int *)(param_1 + 0x18)); + if (((longlong)(iVar5 + 1) == uVar1) && (param_4 < *(float *)(param_1 + 0x34))) { + *(float *)(param_1 + 0x34) = param_4; + } + goto LAB_7f03bc24; + } + *(undefined4 *)(param_1 + iVar6 * 0x50 + 0x3c) = 0; + *(float *)(param_1 + 0x34) = fVar12; + if (fVar12 < param_4) { + *(float *)(param_1 + 0x34) = param_4; + } + iVar4 = 0xa0; + if (*(int *)(param_1 + 0x3c) == 0) { +LAB_7f03bad8: + iVar2 = *(int *)(param_1 + 0x8c); + } + else { + if (*(int *)(param_1 + 0x84) == 0) { + if (fVar12 < *(float *)(param_1 + 0x38)) { + *(undefined4 *)(param_1 + 0x3c) = 0; + goto LAB_7f03bad8; + } + iVar2 = *(int *)(param_1 + 0x8c); + } + else { + iVar2 = *(int *)(param_1 + 0x8c); + } + } + if (iVar2 == 0) { + iVar2 = param_1 + 0xa0; + } + else { + if (*(int *)(param_1 + 0xd4) == 0) { + if (fVar12 < *(float *)(param_1 + 0x88)) { + *(undefined4 *)(param_1 + 0x8c) = 0; + iVar2 = param_1 + 0xa0; + } + else { + iVar2 = param_1 + 0xa0; + } + } + else { + iVar2 = param_1 + 0xa0; + } + } + do { + iVar4 += 0x140; + if (*(int *)(iVar2 + 0x3c) == 0) { + iVar3 = *(int *)(iVar2 + 0x8c); + } + else { + if (*(int *)(iVar2 + 0x84) == 0) { + if (fVar12 < *(float *)(iVar2 + 0x38)) { + *(undefined4 *)(iVar2 + 0x3c) = 0; + iVar3 = *(int *)(iVar2 + 0x8c); + } + else { + iVar3 = *(int *)(iVar2 + 0x8c); + } + } + else { + iVar3 = *(int *)(iVar2 + 0x8c); + } + } + if (iVar3 == 0) { + iVar3 = *(int *)(iVar2 + 0xdc); + } + else { + if (*(int *)(iVar2 + 0xd4) == 0) { + if (fVar12 < *(float *)(iVar2 + 0x88)) { + *(undefined4 *)(iVar2 + 0x8c) = 0; + iVar3 = *(int *)(iVar2 + 0xdc); + } + else { + iVar3 = *(int *)(iVar2 + 0xdc); + } + } + else { + iVar3 = *(int *)(iVar2 + 0xdc); + } + } + if (iVar3 == 0) { + iVar3 = *(int *)(iVar2 + 300); + } + else { + if (*(int *)(iVar2 + 0x124) == 0) { + if (fVar12 < *(float *)(iVar2 + 0xd8)) { + *(undefined4 *)(iVar2 + 0xdc) = 0; + iVar3 = *(int *)(iVar2 + 300); + } + else { + iVar3 = *(int *)(iVar2 + 300); + } + } + else { + iVar3 = *(int *)(iVar2 + 300); + } + } + if (((iVar3 != 0) && (*(int *)(iVar2 + 0x174) == 0)) && (fVar12 < *(float *)(iVar2 + 0x128)) + ) { + *(undefined4 *)(iVar2 + 300) = 0; + } + iVar2 += 0x140; + } while (iVar4 != 800); +LAB_7f03bc24: + if (((in_stack_00000028 != 0) && (*(int *)(param_1 + 0x18) != 0x12)) && + (*(int *)(param_1 + 0x18) != 0x14)) { + if (*(int *)(param_1 + 0x3c) == 0) { + iVar4 = *(int *)(param_1 + 0x8c); + } + else { + if (param_4 < *(float *)(param_1 + 0x38)) { + *(undefined4 *)(param_1 + 0x3c) = 0; + iVar4 = *(int *)(param_1 + 0x8c); + } + else { + iVar4 = *(int *)(param_1 + 0x8c); + } + } + if ((iVar4 != 0) && (param_4 < *(float *)(param_1 + 0x88))) { + *(undefined4 *)(param_1 + 0x8c) = 0; + } + iVar2 = 0xa0; + iVar4 = param_1 + 0xa0; + do { + iVar2 += 0x140; + if (*(int *)(iVar4 + 0x3c) == 0) { + iVar3 = *(int *)(iVar4 + 0x8c); + } + else { + if (param_4 < *(float *)(iVar4 + 0x38)) { + *(undefined4 *)(iVar4 + 0x3c) = 0; + iVar3 = *(int *)(iVar4 + 0x8c); + } + else { + iVar3 = *(int *)(iVar4 + 0x8c); + } + } + if (iVar3 == 0) { + iVar3 = *(int *)(iVar4 + 0xdc); + } + else { + if (param_4 < *(float *)(iVar4 + 0x88)) { + *(undefined4 *)(iVar4 + 0x8c) = 0; + iVar3 = *(int *)(iVar4 + 0xdc); + } + else { + iVar3 = *(int *)(iVar4 + 0xdc); + } + } + if (iVar3 == 0) { + iVar3 = *(int *)(iVar4 + 300); + } + else { + if (param_4 < *(float *)(iVar4 + 0xd8)) { + *(undefined4 *)(iVar4 + 0xdc) = 0; + iVar3 = *(int *)(iVar4 + 300); + } + else { + iVar3 = *(int *)(iVar4 + 300); + } + } + if ((iVar3 != 0) && (param_4 < *(float *)(iVar4 + 0x128))) { + *(undefined4 *)(iVar4 + 300) = 0; + } + iVar4 += 0x140; + } while (iVar2 != 800); + *(float *)(param_1 + 0x34) = param_4; + } + iVar4 = 0; + do { + iVar4 += 0x50; + if (*(int *)(param_1 + 0x3c) == 0) { + *(float *)(param_1 + 0x38) = param_4; + *(undefined4 *)(param_1 + 0x3c) = param_2; + *(undefined4 *)(param_1 + 0x40) = param_5; + *(undefined4 **)(param_1 + 0x44) = param_6; + puVar7 = param_7; + iVar4 = param_1; + do { + puVar8 = puVar7 + 3; + *(undefined4 *)(iVar4 + 0x48) = *puVar7; + *(undefined4 *)(iVar4 + 0x4c) = puVar7[1]; + *(undefined4 *)(iVar4 + 0x50) = puVar7[2]; + puVar7 = puVar8; + iVar4 = iVar4 + 0xc; + } while (puVar8 != param_7 + 0xc); + *(undefined4 *)(param_1 + 0x78) = param_8; + *(undefined4 *)(param_1 + 0x7c) = param_9; + *(int *)(param_1 + 0x80) = param_10; + *(int *)(param_1 + 0x84) = param_11; + return; + } + param_1 += 0x50; + } while (iVar4 != 800); + return; +} + + + +// WARNING: Instruction at (ram,0x7f03bec8) overlaps instruction at (ram,0x7f03bec4) +// + +void proc_7F03BDEC(undefined4 param_1,longlong param_2) + +{ + byte bVar1; + byte *position_data_pointer; + int iVar4; + ulonglong uVar2; + u32 uVar5; + int iVar6; + int iVar7; + float *pfVar8; + longlong lVar3; + byte **ppbVar9; + f32 extraout_f12; + f32 extraout_f14; + float fVar10; + float afStack80 [6]; + u32 auStack56 [2]; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + float fStack32; + float afStack28 [4]; + int iStack12; + + iStack12 = 0; + iVar4 = get_curplayer_positiondata(); + proc_7F089780((int)pPlayer); + ppbVar9 = (byte **)(DAT_80071df0 + -4); + if (ppbVar9 <= (byte **)((int)&DAT_8007161c + 3)) { +LAB_7f03c094: + if ((iStack12 == 0) && (param_2 == 1)) { + play_sfx_a1(ptr_sfx_buf,0x69,NULL); + } + return; + } + position_data_pointer = *ppbVar9; + do { + if ((position_data_pointer != NULL) && + (*(float *)(position_data_pointer + 0x18) < 500.00000000)) { + bVar1 = *position_data_pointer; + uVar2 = (ulonglong)bVar1; + if (bVar1 == 3) { +code_r0x7f03becc: + fVar10 = 50.00000000; + iVar7 = *(int *)(position_data_pointer + 4); + iVar6 = getCurrentWeaponOrItem(); + if (iVar6 == 0x11) { + fVar10 = 100.00000000; + } + proc_7F03F748(*(int *)(iVar7 + 0x1c),afStack28,&fStack32,0); + if (0.00000000 <= afStack28[0]) { + if ((fStack32 <= 0.00000000) && + (proc_7F03F748(*(int *)(iVar7 + 0x1c),&fStack36,&fStack40,1), + 0.00000000 <= fStack36)) { + if ((fStack40 <= 0.00000000) && + ((proc_7F03F748(*(int *)(iVar7 + 0x1c),&fStack44,&fStack48,2), + fStack48 <= 0.00000000 && (-fVar10 <= fStack44)))) { + auStack56[0] = *(u32 *)(iVar4 + 0x14); + iVar7 = proc_7F0B0E24(auStack56,extraout_f12,extraout_f14, + *(f32 *)(iVar4 + 8)); + if ((iVar7 != 0) && + (auStack56[0] == *(u32 *)(position_data_pointer + 0x14))) { + iVar7 = proc_7F0799F0(); + if (iVar7 != 1) { + proc_7F0799F0(); + } + proc_7F0681CC(); + pfVar8 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar8,afStack80); + lVar3 = proc_7F02727C(); + if (lVar3 != 0) { + iStack12 = 1; + recall_joy2_hits_edit_detail_edit_flag(); + } + } + } + } + } + } + else { + if ((bVar1 == 6) && (*(int *)(position_data_pointer + 4) != 0)) { + proc_7F09B15C((int)position_data_pointer); + uVar5 = get_cur_playernum(); + if ((longlong)(int)uVar5 != uVar2) goto code_r0x7f03becc; + } + } + } + ppbVar9 = ppbVar9 + -1; + if (ppbVar9 < &DAT_80071620) goto LAB_7f03c094; + position_data_pointer = *ppbVar9; + } while( true ); +} + + + +void proc_7F03C0F0(undefined8 param_1) + +{ + longlong lVar1; + ITEM_IDS weapon; + int hand; + + hand = (int)param_1; + lVar1 = get_hands_firing_status(hand); + if (lVar1 != 0) { + weapon = get_item_in_hand(hand); + lVar1 = (longlong)(int)weapon; + if (lVar1 == 0x1e) { + trigger_remote_mine_detonation(); + } + else { + if ((((((lVar1 != 0x18) && (lVar1 != 0x19)) && (lVar1 != 0x1a)) && + ((lVar1 != 3 && (lVar1 != 0x1d)))) && + (((lVar1 != 0x1c && ((lVar1 != 0x1b && (lVar1 != 0x23)))) && (lVar1 != 0x24)))) && + ((((lVar1 != 0x21 && (lVar1 != 0x2f)) && (lVar1 != 0x30)) && + (((lVar1 != 0x3d && (lVar1 != 0x58)) && (lVar1 != 0x22)))))) { + if (lVar1 == 0x20) { + proc_7F05FB64(hand); + } + else { + if ((lVar1 == 1) || (lVar1 == 2)) { + proc_7F03BDEC(hand,lVar1); + } + else { + if ((lVar1 == 0xf) || (lVar1 == 0x10)) { + inc_curplayer_hitcount_with_weapon(weapon,0); + hand = 0; + do { + proc_7F03B15C(param_1); + hand += 1; + } while (hand != 5); + } + else { + if (lVar1 == 0x28) { + objectiveHandlePhotograph(); + } + else { + if (lVar1 == 0x3c) { + pPlayer->field_1270 = 0; + } + else { + inc_curplayer_hitcount_with_weapon(weapon,0); + proc_7F03B15C(param_1); + } + } + } + } + } + } + } + } + return; +} + + + +void proc_7F03C294(void) + +{ + proc_7F03C0F0(0); + proc_7F03C0F0(1); + return; +} + + + +void proc_7F03C2BC(char *param_1,longlong param_2) + +{ + uint uVar1; + int iVar2; + + if (param_2 != 1) { + if (param_2 == 2) { + proc_7F03E18C((int)param_1); + proc_7F03A538((int)param_1); + unset_stateflag_0x04_for_posdata((int)param_1); + return; + } + if (param_2 != 4) { + return; + } + proc_7F03E18C((int)param_1); + proc_7F03A538((int)param_1); + unset_stateflag_0x04_for_posdata((int)param_1); + proc_7F04C044((int)param_1); + proc_7F040CF0((int)param_1); + iVar2 = get_curplayer_positiondata(); + proc_7F03A5A4((int)param_1,iVar2); + return; + } + if (*param_1 == '\x04') { + iVar2 = *(int *)(param_1 + 4); + } + else { + if (*param_1 != '\x01') goto LAB_7f03c34c; + iVar2 = *(int *)(param_1 + 4); + } + if ((*(byte *)(iVar2 + 2) & 4) != 0) { + *(undefined2 *)(param_1 + 2) = 0x4b0; + uVar1 = *(uint *)(iVar2 + 100); + *(uint *)(iVar2 + 100) = uVar1 | 0x800; + *(uint *)(iVar2 + 100) = uVar1 & 0xfffffffb | 0x800; + *(byte *)(iVar2 + 2) = *(byte *)(iVar2 + 2) & 0x7f; + *(undefined4 *)(iVar2 + 0x70) = 0; + proc_7F03E18C((int)param_1); + unset_stateflag_0x04_for_posdata((int)param_1); + return; + } +LAB_7f03c34c: + proc_7F03E18C((int)param_1); + proc_7F03A538((int)param_1); + unset_stateflag_0x04_for_posdata((int)param_1); + set_last_obj_pos_data((object_standard *)param_1); + return; +} + + + +undefined4 proc_7F03C3FC(void) + +{ + char cVar1; + char *pcVar2; + int iVar3; + longlong lVar4; + char **ppcVar5; + + DAT_80071df8 = 0; + ppcVar5 = (char **)(DAT_80071df0 + -4); + lVar4 = 1; + if (ppcVar5 <= (char **)((int)&DAT_8007161c + 3)) { + DAT_80071df8 = 0; + return 0; + } + pcVar2 = *ppcVar5; + do { + if (pcVar2 != NULL) { + cVar1 = *pcVar2; + if (cVar1 != '\x03') { + if ((cVar1 == '\x01') || (cVar1 == '\x04')) { + lVar4 = proc_7F04EF58((int)pcVar2); + } + else { + if (cVar1 == '\x02') { + iVar3 = proc_7F055804(pcVar2); + lVar4 = (longlong)iVar3; + } + } + } + if (lVar4 == 0) { + return DAT_80071df8; + } + } + ppcVar5 = ppcVar5 + -1; + if (ppcVar5 < &DAT_80071620) { + return DAT_80071df8; + } + pcVar2 = *ppcVar5; + } while( true ); +} + + + +undefined8 proc_7F03C4F0(void) + +{ + char *pcVar2; + int iVar3; + undefined8 uVar1; + longlong lVar4; + + pcVar2 = (char *)proc_7F03C3FC(); + lVar4 = 0; + if (pcVar2 == NULL) { + uVar1 = 1; + } + else { + if (true) { + switch(*pcVar2) { + case '\x01': + case '\x04': + iVar3 = proc_7F04F170(pcVar2); + lVar4 = (longlong)iVar3; + break; + case '\x02': + lVar4 = proc_7F055C40((int)pcVar2); + } + } + proc_7F03C2BC(pcVar2,lVar4); + uVar1 = 0; + } + return uVar1; +} + + + +undefined4 proc_7F03C574(int param_1) + +{ + int iVar1; + s32 sVar2; + int iVar3; + Player **ppPVar4; + float fVar5; + float fVar6; + float fVar7; + + sVar2 = get_num_players(); + iVar3 = 0; + if (0 < sVar2) { + ppPVar4 = ptr_BONDdata_p1; + do { + iVar1 = (*ppPVar4)->position_data_pointer; + fVar5 = *(float *)(iVar1 + 8) - *(float *)(param_1 + 8); + fVar6 = *(float *)(iVar1 + 0xc) - *(float *)(param_1 + 0xc); + fVar7 = *(float *)(iVar1 + 0x10) - *(float *)(param_1 + 0x10); + fVar5 = sqrtf(fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7); + iVar3 += 1; + if (fVar5 < 400.00000000) { + return 0; + } + ppPVar4 = ppPVar4 + 1; + } while (iVar3 < sVar2); + } + return 1; +} + + + +void handle_mp_respawn_and_some_things(void) + +{ + int *piVar1; + byte bVar2; + u16 uVar3; + u16 uVar4; + short sVar5; + int iVar6; + bool bVar7; + object_standard *position_data_pointer; + object_standard *poVar8; + object_standard *poVar9; + object_standard *poVar10; + int iVar11; + int iVar12; + uint uVar13; + s32 sVar14; + longlong lVar15; + char cVar16; + f32 scale; + + proc_7F03291C(); + poVar10 = get_ptr_obj_pos_list_current_entry(); + poVar9 = poVar10; + do { + poVar8 = poVar9; + position_data_pointer = poVar10; + if (position_data_pointer == NULL) { + return; + } + poVar10 = (object_standard *)position_data_pointer->runtime_MATRIX3; + lVar15 = 0; + bVar2 = *(byte *)position_data_pointer; + uVar13 = (uint)bVar2; + if (bVar2 == 3) { + iVar6 = *(int *)&position_data_pointer->pad; + proc_7F062B00((char *)(iVar6 + 0x180)); + proc_7F062B00((char *)(iVar6 + 0x1ac)); + } + else { + if (((bVar2 == 1) || (bVar2 == 4)) || (bVar2 == 2)) { + uVar3 = position_data_pointer->obj; + iVar6 = *(int *)&position_data_pointer->pad; + bVar7 = false; + if ((short)uVar3 < 1) { +LAB_7f03c8e4: + cVar16 = *(char *)(iVar6 + 3); + } + else { + position_data_pointer->obj = uVar3 - (short)clock_timer; + if ((short)position_data_pointer->obj < 0x3c) { + if ((0x3b < (short)uVar3) && + (iVar11 = proc_7F03C574((int)position_data_pointer), iVar11 == 0)) { + position_data_pointer->obj = position_data_pointer->obj + 0x3c; + } + uVar4 = position_data_pointer->obj; + } + else { + uVar4 = position_data_pointer->obj; + } + iVar11 = (int)(short)uVar4; + if ((short)uVar4 < 1) { + position_data_pointer->obj = 0; + if ((*(byte *)(iVar6 + 2) & 0x10) == 0) { + *(uint *)(iVar6 + 100) = *(uint *)(iVar6 + 100) & 0xffffefff; + } + else { + *(uint *)(iVar6 + 100) = *(uint *)(iVar6 + 100) | 0x1000; + } + goto LAB_7f03c8e4; + } + if ((short)uVar4 < 0x3c) { + if (0x3b < (short)uVar3) { + if (*(float *)(iVar6 + 0x70) == 0.00000000) { + if ((*(byte *)(iVar6 + 2) & 0x80) != 0) { + bVar2 = *(byte *)(iVar6 + 2); + goto LAB_7f03c868; + } + if ((*(uint *)(iVar6 + 8) & 0x8000) == 0) { + iVar11 = (int)(short)uVar4; + set_stateflag_0x04_for_posdata((int)position_data_pointer); + proc_7F03E134((char *)position_data_pointer); + *(uint *)(iVar6 + 100) = *(uint *)(iVar6 + 100) & 0xfffff7ff; + goto LAB_7f03c8ac; + } + proc_7F03E18C((int)position_data_pointer); + proc_7F03A538((int)position_data_pointer); + *(uint *)(iVar6 + 100) = *(uint *)(iVar6 + 100) & 0xfffff7ff; + iVar11 = proc_7F056BA8((int)position_data_pointer); + sVar5 = *(short *)(iVar6 + 6); + iVar12 = proc_7F0BDF04(); + iVar11 = proc_7F056EA0((longlong)iVar12,iVar11 + sVar5); + if (iVar11 == 0) { + cVar16 = *(char *)(iVar6 + 3); + } + else { + if (*(int *)(iVar11 + 0x10) != 0) { + iVar12 = iVar11; + set_obj_instance_controller_scale + (*(int *)(iVar6 + 0x14),scale); + piVar1 = (int *)(iVar11 + 0x10); + iVar11 = iVar12; + proc_7F03A5A4(*(int *)(iVar6 + 0x10),*piVar1); + bVar7 = true; + goto LAB_7f03c8ac; + } + cVar16 = *(char *)(iVar6 + 3); + } + } + else { + bVar2 = *(byte *)(iVar6 + 2); +LAB_7f03c868: + if ((bVar2 & 8) == 0) { + *(uint *)(iVar6 + 8) = *(uint *)(iVar6 + 8) & 0xfffffeff; + } + else { + *(uint *)(iVar6 + 8) = *(uint *)(iVar6 + 8) | 0x100; + } + *(undefined4 *)(iVar6 + 0x70) = 0; + *(byte *)(iVar6 + 2) = *(byte *)(iVar6 + 2) & 0x7f; + proc_7F050DE8(*(int *)(iVar6 + 0x14)); +LAB_7f03c8ac: + cVar16 = *(char *)(iVar6 + 3); + } + if (cVar16 == '\x15') { + *(undefined4 *)(iVar6 + 0x84) = *(undefined4 *)(iVar6 + 0x80); + } + if (!bVar7) { + play_sfx_a1(ptr_sfx_buf,0x52,NULL); + sub_GAME_7F053A10(iVar11,(float *)&position_data_pointer->flags); + } + goto LAB_7f03c8e4; + } + cVar16 = *(char *)(iVar6 + 3); + } + else { + cVar16 = *(char *)(iVar6 + 3); + } + } + if (cVar16 == '\r') { + proc_7F062B00(*(char **)(*(int *)&position_data_pointer->pad + 0xcc)); + } + } + else { + if (bVar2 == 7) { + lVar15 = proc_7F09CEE8((char *)position_data_pointer); + } + else { + if (bVar2 == 8) { + lVar15 = proc_7F09E8AC((char *)position_data_pointer); + } + else { + if (bVar2 == 6) { + proc_7F09B15C((int)position_data_pointer); + proc_7F062B00((char *)&ptr_BONDdata_p1[uVar13]->field_A54); + proc_7F09B15C((int)position_data_pointer); + proc_7F062B00((char *)&ptr_BONDdata_p1[uVar13]->field_DFC); + if ((*(int *)&position_data_pointer->pad != 0) && + (sVar14 = get_num_players(), 1 < sVar14)) { + iVar6 = *(int *)&position_data_pointer->pad; + proc_7F062B00((char *)(iVar6 + 0x180)); + proc_7F062B00((char *)(iVar6 + 0x1ac)); + } + } + } + } + } + } + poVar9 = poVar10; + if (lVar15 != 5) { + poVar10 = (object_standard *)poVar8->runtime_MATRIX3; + poVar9 = poVar10; + if (lVar15 == 3) { + proc_7F03A538((int)position_data_pointer); + proc_7F03A4F0((int)position_data_pointer); + if (poVar10 == NULL) { + poVar10 = position_data_pointer; + poVar9 = poVar8; + } + } + else { + proc_7F03C2BC((char *)position_data_pointer,lVar15); + } + } + } while( true ); +} + + + +void determing_type_of_object_and_detection(void) + +{ + byte bVar1; + object_standard *poVar2; + object_standard *poVar3; + object_standard *poVar4; + object_standard *poVar5; + object_standard *poVar6; + object_standard *poVar8; + ulonglong uVar7; + u32 uVar9; + int iVar10; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a2_lo_02; + undefined4 extraout_a2_lo_03; + undefined4 extraout_a2_lo_04; + undefined4 uVar11; + undefined4 extraout_a2_lo_05; + undefined4 extraout_a2_lo_06; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + undefined4 extraout_a3_lo_02; + undefined4 extraout_a3_lo_03; + undefined4 extraout_a3_lo_04; + undefined4 uVar12; + undefined4 extraout_a3_lo_05; + undefined4 extraout_a3_lo_06; + + poVar8 = get_ptr_obj_pos_list_current_entry(); + poVar5 = poVar8; + poVar6 = poVar8; + uVar11 = extraout_a2_lo; + uVar12 = extraout_a3_lo; + while (poVar4 = poVar6, poVar3 = poVar5, poVar2 = poVar8, poVar2 != NULL) { + bVar1 = *(byte *)poVar2; + uVar7 = (ulonglong)bVar1; + poVar8 = (object_standard *)poVar3->runtime_MATRIX3; + if (bVar1 == 3) { + uVar7 = proc_7F020EF0((char *)poVar2,0,uVar11,uVar12); + uVar11 = extraout_a2_lo_00; + uVar12 = extraout_a3_lo_00; + } + else { + if (((bVar1 == 1) || (bVar1 == 4)) || (bVar1 == 2)) { + object_interaction((object_header *)poVar2); + uVar11 = extraout_a2_lo_01; + uVar12 = extraout_a3_lo_01; + } + else { + if (bVar1 == 7) { + uVar7 = proc_7F09D4EC((int)poVar2); + uVar11 = extraout_a2_lo_02; + uVar12 = extraout_a3_lo_02; + } + else { + if (bVar1 == 8) { + uVar7 = proc_7F09EF9C((int)poVar2); + uVar11 = extraout_a2_lo_03; + uVar12 = extraout_a3_lo_03; + } + else { + uVar7 = 0; + if (bVar1 == 6) { + iVar10 = proc_7F08B0F0((char *)poVar2); + uVar7 = SEXT48(iVar10); + uVar11 = extraout_a2_lo_04; + uVar12 = extraout_a3_lo_04; + } + } + } + } + } + poVar5 = poVar8; + poVar6 = poVar8; + if (uVar7 != 5) { + poVar8 = (object_standard *)poVar4->runtime_MATRIX3; + poVar5 = poVar8; + poVar6 = poVar8; + if (uVar7 == 3) { + proc_7F03A538((int)poVar2); + proc_7F03A4F0((int)poVar2); + uVar11 = extraout_a2_lo_05; + uVar12 = extraout_a3_lo_05; + if (poVar8 == NULL) { + poVar8 = poVar2; + poVar5 = poVar3; + poVar6 = poVar4; + } + } + else { + proc_7F03C2BC((char *)poVar2,uVar7); + uVar11 = extraout_a2_lo_06; + uVar12 = extraout_a3_lo_06; + } + } + } + uVar9 = get_cur_playernum(); + iVar10 = proc_7F09B4D8(uVar9); + if (iVar10 == 0) { + handle_alarm_gas_timer_calldamage(); + loop_set_sound_effect_all_slots(); + proc_7F03E4F0(); + } + return; +} + + + +void proc_7F03CB8C(char *param_1,uint *param_2) + +{ + char cVar1; + byte bVar2; + int iVar3; + uint *puVar4; + + if (*(int *)(param_1 + 0x14) == 0) { + *param_2 = 0xffffffff; + return; + } + if (*param_1 == '\x06') { + if (*(int *)(param_1 + 4) == 0) { + bVar2 = *(byte *)(*(int *)(param_1 + 0x14) + 3); + param_2[1] = 0xffffffff; + *param_2 = (uint)bVar2; + return; + } + cVar1 = param_1[0x2c]; + } + else { + cVar1 = param_1[0x2c]; + } + iVar3 = 0; + if (cVar1 != -1) { + bVar2 = param_1[0x2c]; + puVar4 = param_2; + do { + *puVar4 = (uint)bVar2; + bVar2 = param_1[0x2d]; + iVar3 += 1; + puVar4 = puVar4 + 1; + param_1 = param_1 + 1; + } while (bVar2 != 0xff); + } + param_2[iVar3] = 0xffffffff; + return; +} + + + +void proc_7F03CC20(char *param_1,int **param_2,undefined4 *param_3,float *param_4,float *param_5) + +{ + char cVar1; + + *param_2 = NULL; + *param_3 = 0; + cVar1 = *param_1; + if (cVar1 == '\x03') { + proc_7F02308C((int)param_1,(int *)param_2,param_3,param_4,param_5); + } + else { + if (cVar1 == '\x06') { + proc_7F08A0B0((int)param_1,param_2,param_3,param_4,param_5); + } + else { + if ((cVar1 != '\x04') && ((cVar1 == '\x01' || (cVar1 == '\x02')))) { + proc_7F04F244((int)param_1,(int *)param_2,param_3,param_4,param_5); + } + } + } + return; +} + + + +void proc_7F03CCB0(char *param_1,int **param_2,undefined4 *param_3) + +{ + float fStack8; + float fStack4; + + proc_7F03CC20(param_1,param_2,param_3,&fStack4,&fStack8); + return; +} + + + +// WARNING: Instruction at (ram,0x7f03cd9c) overlaps instruction at (ram,0x7f03cd98) +// + +undefined8 proc_7F03CCD8(float *param_1,float *param_2,uint param_3) + +{ + float *pfVar1; + float *pfVar2; + longlong lVar3; + uint uVar4; + uint uVar5; + float *pfVar6; + int iVar7; + float fVar8; + + lVar3 = -1; + if ((int)param_3 < 1) { + return 0; + } + uVar4 = 0; + if (0 < (int)param_3) { + if ((param_3 & 1) == 0) { + iVar7 = 0; + } + else { + if (param_3 == 0) { + trap(0x1c00); + } + if ((param_3 == 0xffffffff) && (false)) { + trap(0x1800); + } + uVar4 = 1; + fVar8 = ((param_2 + (1 % param_3) * 2)[1] - param_2[1]) * (*param_1 - *param_2) - + (param_1[2] - param_2[1]) * (param_2[(1 % param_3) * 2] - *param_2); + if ((fVar8 != 0.00000000) && (lVar3 = 0, 0.00000000 < fVar8)) { + lVar3 = 1; + } + iVar7 = 8; + if (param_3 == 1) { + return 1; + } + } + pfVar6 = (float *)((int)param_2 + iVar7); + do { + if (param_3 == 0) { + trap(0x1c00); + } + if ((param_3 == 0xffffffff) && (uVar4 + 1 == -0x80000000)) { + trap(0x1800); + } + uVar5 = uVar4 + 2; + fVar8 = ((param_2 + ((int)(uVar4 + 1) % param_3) * 2)[1] - pfVar6[1]) * + (*param_1 - *pfVar6) - + (param_1[2] - pfVar6[1]) * (param_2[((int)(uVar4 + 1) % param_3) * 2] - *pfVar6) + ; + if (fVar8 != 0.00000000) { + if ((uVar4 == 0) || (lVar3 < 0)) { + lVar3 = 0; + if (0.00000000 < fVar8) { + lVar3 = 1; + } + } + else { + if ((lVar3 != 0) && (fVar8 < 0.00000000)) { + return 0; + } + if ((lVar3 == 0) && (0.00000000 < fVar8)) { + return 0; + } + } + } + pfVar1 = pfVar6 + 3; + pfVar2 = pfVar6 + 2; + if (param_3 == 0) { + trap(0x1c00); + } + if ((param_3 == 0xffffffff) && (uVar5 == 0x80000000)) { + trap(0x1800); + } + pfVar6 = pfVar6 + 4; + fVar8 = ((param_2 + ((int)uVar5 % param_3) * 2)[1] - *pfVar1) * (*param_1 - *pfVar2) - + (param_1[2] - *pfVar1) * (param_2[((int)uVar5 % param_3) * 2] - *pfVar2); + if (fVar8 != 0.00000000) { + if ((uVar4 == 0xffffffff) || (lVar3 < 0)) { + lVar3 = 0; + if (0.00000000 < fVar8) { + lVar3 = 1; + } + } + else { + if ((lVar3 != 0) && (fVar8 < 0.00000000)) { + return 0; + } + if ((lVar3 == 0) && (0.00000000 < fVar8)) { + return 0; + } + } + } + uVar4 = uVar5; + } while (uVar5 != param_3); + } + return 1; +} + + + +void proc_7F03CF88(char *param_1,undefined4 *param_2,float *param_3,undefined4 *param_4) + +{ + if (*param_1 == '\x03') { + proc_7F023160((int)param_1,param_2,param_3,param_4); + } + else { + if (*param_1 == '\x06') { + proc_7F08A274((int)param_1,param_2,param_3,param_4); + } + else { + *param_2 = 0; + } + } + return; +} + + + +ulonglong proc_7F03CFE8(byte *param_1) + +{ + byte bVar1; + ulonglong uVar2; + int iVar3; + + bVar1 = *param_1; + uVar2 = (ulonglong)bVar1; + if (bVar1 == 3) { + iVar3 = proc_7F023188((int)param_1); + uVar2 = SEXT48(iVar3); + } + else { + if (bVar1 == 6) { + proc_7F09B15C((int)param_1); + proc_7F089778((int)ptr_BONDdata_p1[(int)uVar2]); + } + } + return uVar2; +} + + + +void proc_7F03D058(char *param_1,longlong param_2) + +{ + char cVar1; + + cVar1 = *param_1; + if (cVar1 == '\x03') { + set_or_unset_GUARDdata_flag(*(GUARDdata **)(param_1 + 4),(int)param_2); + } + else { + if (cVar1 == '\x06') { + proc_7F08A03C((int)param_1,(int)param_2); + } + else { + if (((cVar1 == '\x01') || (cVar1 == '\x02')) || (cVar1 == '\x04')) { + proc_7F04F218((int)param_1,param_2); + } + } + } + return; +} + + + +void proc_7F03D0D4(void) + +{ + object_standard *poVar1; + int iVar3; + longlong lVar2; + longlong lVar4; + longlong lVar5; + + iVar3 = get_intank_flag(); + if ((iVar3 == 0) && (disable_player_pickups_flag == 0)) { + lVar2._4_4_ = get_ptr_obj_pos_list_current_entry(); + lVar2 = (longlong)(int)lVar2._4_4_; + lVar5 = lVar2; + while (lVar5 != 0) { + poVar1 = (object_standard *)lVar5; + lVar4 = 0; + if (*(short *)&poVar1->hidden2 < 1) { + if (true) { + switch(*(undefined *)&poVar1->extrascale) { + case 1: + object_collectability_routine(poVar1); + lVar4 = lVar2; + break; + case 4: + redirect_object_collectability_routines(); + lVar4 = lVar2; + } + } + iVar3 = poVar1->runtime_MATRIX3; + } + else { + iVar3 = poVar1->runtime_MATRIX3; + } + lVar5 = (longlong)iVar3; + proc_7F03C2BC((char *)poVar1,lVar4); + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +float proc_7F03D188(void) + +{ + bool bVar1; + uint uVar2; + longlong lVar3; + s32 sVar4; + int iVar5; + int in_a0_lo; + float *in_a1_lo; + float *in_a2_lo; + undefined4 *in_a3_lo; + f32 fVar6; + f32 fVar7; + float fVar8; + f32 extraout_f12; + f32 extraout_f14; + float *in_stack_00000010; + u32 uStack96; + int iStack92; + float fStack88; + uint uStack84; + float fStack80; + float fStack76; + float fStack72; + float fStack68; + float fStack64; + undefined4 uStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float afStack36 [2]; + float afStack28 [2]; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fVar6 = getPlayer_c_screentop(); + fVar7 = getPlayer_c_screenheight(); + fStack64 = (float)fVar7 * flt_800529C0 + (float)fVar6; + fVar6 = getPlayer_c_screentop(); + fVar7 = getPlayer_c_screenheight(); + fStack68 = (float)fVar7 * flt_800529C4 + (float)fVar6; + fVar6 = getPlayer_c_screenleft(); + fVar7 = getPlayer_c_screenwidth(); + fStack72 = (float)fVar7 * 0.25000000 + (float)fVar6; + fVar6 = getPlayer_c_screenleft(); + fVar7 = getPlayer_c_screenwidth(); + fStack80 = -2.00000000; + fStack76 = (float)fVar7 * 0.75000000 + (float)fVar6; + proc_7F077FF4(in_a1_lo,&fStack8); + fStack20 = *in_a2_lo; + fStack16 = in_a1_lo[1]; + fStack12 = in_a1_lo[2]; + proc_7F077FF4(&fStack20,afStack28); + fStack20 = in_a2_lo[1]; + fStack16 = in_a1_lo[1]; + fStack12 = in_a1_lo[2]; + proc_7F077FF4(&fStack20,afStack36); + lVar3 = (longlong)(int)in_a1_lo; + fStack20 = *in_a1_lo; + fStack16 = (float)in_a3_lo[1]; + fStack12 = in_a1_lo[2]; + proc_7F077FF4(&fStack20,&fStack44); + fStack20 = *in_a1_lo; + fStack16 = (float)*in_a3_lo; + fStack12 = in_a1_lo[2]; + proc_7F077FF4(&fStack20,&fStack52); + if (fStack48 < fStack64) { + return fStack80; + } + if (fStack68 < fStack40) { + return fStack80; + } + uStack84 = 0; + proc_7F068008(&fStack56,&uStack60); + afStack28[0] = truncf(afStack28[0]); + afStack36[0] = proc_7F05C440(afStack36[0]); + redirect_get_BONDdata_autoaim_x(); + if (lVar3 == 0) { + if (afStack28[0] <= fStack56) { + if (fStack56 <= afStack36[0]) { + uStack84 = 1; + uVar2 = uStack84; + } + else { + uStack84 = 0; + uVar2 = uStack84; + } + } + else { + uVar2 = (uint)(afStack28[0] <= fStack56); + } + } + else { + uVar2 = uStack84; + if ((afStack28[0] <= fStack76) && (fStack72 <= afStack36[0])) { + fStack88 = (afStack36[0] - afStack28[0]) * 1.50000000; + sVar4 = get_num_players(); + if (sVar4 == 1) { + fStack88 = fStack88 * (float)difficulty; + } + fVar6 = getPlayer_c_screenwidth(); + fVar7 = getPlayer_c_screenleft(); + bVar1 = (afStack36[0] + afStack28[0]) * 0.50000000 - fStack88 <= + (float)fVar7 + (float)fVar6 * 0.50000000; + uVar2 = (uint)bVar1; + if (bVar1) { + fVar6 = getPlayer_c_screenwidth(); + fVar7 = getPlayer_c_screenleft(); + bVar1 = (float)fVar7 + (float)fVar6 * 0.50000000 <= + (afStack36[0] + afStack28[0]) * 0.50000000 + fStack88; + uVar2 = (uint)bVar1; + if (((bVar1) && (uVar2 = (uint)(fStack72 <= fStack8), fStack72 <= fStack8)) && + (uVar2 = 0, fStack8 <= fStack76)) { + uVar2 = 1; + } + } + } + } + uStack84 = uVar2; + if (uStack84 == 0) { + return fStack80; + } + iStack92 = get_curplayer_positiondata(); + uStack96 = *(u32 *)(iStack92 + 0x14); + proc_7F089780((int)pPlayer); + proc_7F08A03C(iStack92,0); + iVar5 = proc_7F0B0E24(&uStack96,extraout_f12,extraout_f14,*(f32 *)(iStack92 + 8)); + lVar3 = (longlong)iVar5; + if ((lVar3 != 0) && (uStack96 == *(u32 *)(in_a0_lo + 0x14))) { + fVar8 = fStack64; + if ((fStack64 <= fStack4) && (fVar8 = fStack68, fStack4 <= fStack68)) { + fVar8 = fStack4; + } + in_stack_00000010[1] = fVar8; + redirect_get_BONDdata_autoaim_x(); + if (lVar3 != 0) { + fVar8 = fStack72; + if ((fStack8 < fStack72) || (fVar8 = fStack76, fStack76 < fStack8)) { + *in_stack_00000010 = fVar8; + } + else { + *in_stack_00000010 = fStack8; + } + } + fVar6 = getPlayer_c_screenwidth(); + fVar7 = getPlayer_c_screenleft(); + if (afStack28[0] <= (float)fVar7 + (float)fVar6 * 0.50000000) { + fVar6 = getPlayer_c_screenwidth(); + fVar7 = getPlayer_c_screenleft(); + if ((float)fVar7 + (float)fVar6 * 0.50000000 <= afStack36[0]) { + fStack80 = 1.00000000; + goto LAB_7f03d76c; + } + } + fVar6 = getPlayer_c_screenwidth(); + fVar7 = getPlayer_c_screenleft(); + if (afStack28[0] <= (float)fVar7 + (float)fVar6 * 0.50000000) { + fVar6 = getPlayer_c_screenwidth(); + fVar7 = getPlayer_c_screenleft(); + fStack80 = 1.00000000 - + (((float)fVar7 + (float)fVar6 * 0.50000000) - afStack36[0]) / fStack88; + } + else { + fVar6 = getPlayer_c_screenleft(); + fVar7 = getPlayer_c_screenwidth(); + fStack80 = 1.00000000 - + (afStack28[0] - ((float)fVar7 * 0.50000000 + (float)fVar6)) / fStack88; + } + } +LAB_7f03d76c: + proc_7F08A03C(iStack92,1); + return fStack80; +} + + + +// WARNING: Instruction at (ram,0x7f03d884) overlaps instruction at (ram,0x7f03d880) +// +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F03D78C(void) + +{ + byte bVar1; + GUARDdata *guard; + ulonglong in_v0; + ulonglong uVar2; + u32 uVar3; + int iVar4; + byte **ppbVar5; + byte *pbVar6; + byte *position_data_pointer; + float extraout_f0; + f32 fVar7; + f32 fVar8; + float fVar9; + float fStack60; + float fStack56; + float afStack48 [2]; + float afStack40 [2]; + float afStack32 [5]; + float fStack12; + float fStack8; + + pbVar6 = NULL; + fStack12 = dword_80030AB0; + fStack8 = dword_80030AB4; + redirect_get_BONDdata_autoaim(); + position_data_pointer = pbVar6; + if (in_v0 != 0) { + fVar9 = -1.00000000; + ppbVar5 = (byte **)(DAT_80071df0 + -4); + if ((byte **)((int)&DAT_8007161c + 3) < ppbVar5) { + position_data_pointer = *ppbVar5; + do { + if (position_data_pointer != NULL) { + bVar1 = *position_data_pointer; + uVar2 = (ulonglong)bVar1; + if (bVar1 == 3) { +LAB_7f03d860: + guard = *(GUARDdata **)(position_data_pointer + 4); + iVar4 = something_with_weaponpos_of_guarddata_hand(guard,0); + if (iVar4 == 0) { + iVar4 = something_with_weaponpos_of_guarddata_hand(guard,1); + in_v0 = SEXT48(iVar4); + if (in_v0 == 0) goto LAB_7f03d8e4; + } + in_v0 = proc_7F023194((int)position_data_pointer,afStack32,afStack40, + afStack48); + if ((in_v0 != 0) && (in_v0 = proc_7F03D188(), fVar9 < extraout_f0)) { + fStack12 = fStack60; + fStack8 = fStack56; + fVar9 = extraout_f0; + pbVar6 = position_data_pointer; + if (1.00000000 <= extraout_f0) break; + } + } + else { + in_v0 = uVar2; + if ((bVar1 == 6) && (*(int *)(position_data_pointer + 4) != 0)) { + proc_7F09B15C((int)position_data_pointer); + uVar3 = get_cur_playernum(); + in_v0 = SEXT48((int)uVar3); + if (in_v0 != uVar2) goto LAB_7f03d860; + } + } + } +LAB_7f03d8e4: + ppbVar5 = ppbVar5 + -1; + position_data_pointer = pbVar6; + if (ppbVar5 < &DAT_80071620) break; + position_data_pointer = *ppbVar5; + } while( true ); + } + } + if (position_data_pointer == NULL) { + proc_7F07C5F0(0,0); + proc_7F07C6C8(0,0); + } + else { + fVar7 = getPlayer_c_screentop(); + fVar8 = getPlayer_c_screenheight(); + proc_7F07C5F0((int)position_data_pointer, + (fStack8 - (float)fVar7) / ((float)fVar8 * 0.50000000) - 1.00000000); + redirect_get_BONDdata_autoaim_x(); + if (in_v0 != 0) { + fVar7 = getPlayer_c_screenleft(); + fVar8 = getPlayer_c_screenwidth(); + proc_7F07C6C8((int)position_data_pointer, + (fStack12 - (float)fVar7) / ((float)fVar8 * 0.50000000) - 1.00000000); + } + } + return; +} + + + +ulonglong proc_7F03D9EC(int param_1) + +{ + int iVar1; + ulonglong uVar2; + + iVar1 = *(int *)(param_1 + 4); + if (*(float *)(iVar1 + 0xb4) <= 0.00000000) { + uVar2 = 0x1000; + } + else { + uVar2 = 0x4000; + if (*(float *)(iVar1 + 0x84) <= *(float *)(iVar1 + 0xb4)) { + uVar2 = 0x2000; + } + } + if (*(int *)(iVar1 + 0xc) << 2 < 0) { + uVar2 = uVar2 | 0x8000; + } + return uVar2; +} + + + +undefined4 proc_7F03DA50(char *param_1,uint param_2) + +{ + char cVar1; + uint uVar2; + ulonglong uVar3; + undefined4 uVar4; + uint uVar5; + + cVar1 = *param_1; + uVar4 = 1; + if (cVar1 == '\x02') { + if (((param_2 & 0x100) != 0) && (*(int *)(*(int *)(param_1 + 4) + 8) << 5 < 0)) { + uVar4 = 0; + } + if ((param_2 & 2) != 0) { + return uVar4; + } + uVar3 = proc_7F03D9EC((int)param_1); + if ((uVar3 & (longlong)(int)param_2) != 0) { + return uVar4; + } + } + else { + uVar5 = param_2 & 4; + if (cVar1 != '\x06') { + if (cVar1 == '\x03') { + uVar5 = param_2 & 8; + } + else { + if (((param_2 & 0x100) != 0) && (*(int *)(*(int *)(param_1 + 4) + 8) << 5 < 0)) { + uVar4 = 0; + } + uVar2 = *(uint *)(*(int *)(param_1 + 4) + 8); + if (((param_2 & 0x200) != 0) && (-1 < (int)(uVar2 << 0xe))) { + uVar4 = 0; + } + uVar5 = param_2 & 1; + if ((uVar2 & 0x800) != 0) { + uVar5 = param_2 & 0x10; + } + } + } + if (uVar5 != 0) { + return uVar4; + } + } + return 0; +} + + + +undefined8 proc_7F03DB70(int *param_1,int *param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + + iVar3 = *param_1; + if (-1 < iVar3) { + iVar1 = *param_2; + piVar2 = param_2; + do { + while (-1 < iVar1) { + if (iVar3 == iVar1) { + return 1; + } + iVar1 = piVar2[1]; + piVar2 = piVar2 + 1; + } + iVar3 = param_1[1]; + param_1 = param_1 + 1; + iVar1 = *param_2; + piVar2 = param_2; + } while (-1 < iVar3); + } + return 0; +} + + + +undefined8 proc_7F03DBCC(short param_1,int param_2) + +{ + short *psVar1; + int iVar2; + short *psVar3; + + psVar1 = (short *)(DAT_8007161c + param_2 * 0x20); + if (*psVar1 < 0) { + *psVar1 = param_1; + return 1; + } + if (psVar1[1] < 0) { + psVar1[1] = param_1; + return 1; + } + psVar3 = psVar1 + 3; + if (psVar1[2] < 0) { + psVar1[2] = param_1; + return 1; + } + iVar2 = 6; + while( true ) { + iVar2 += 8; + if (*psVar3 < 0) { + *psVar3 = param_1; + return 1; + } + if (psVar3[1] < 0) { + psVar3[1] = param_1; + return 1; + } + if (psVar3[2] < 0) { + psVar3[2] = param_1; + return 1; + } + if (psVar3[3] < 0) break; + psVar3 = psVar3 + 4; + if (iVar2 == 0x1e) { + return 0; + } + } + psVar3[3] = param_1; + return 1; +} + + + +int proc_7F03DCB8(int param_1,longlong param_2) + +{ + int iVar1; + short *psVar2; + int iVar3; + int iVar4; + + iVar3 = 0; + psVar2 = DAT_8007161c; + while (*psVar2 != -2) { + iVar3 += 1; + psVar2 = psVar2 + 0x10; + if (iVar3 == 0x100) { + return -1; + } + } + iVar4 = 0; + do { + *(undefined2 *)((int)DAT_8007161c + iVar4 + iVar3 * 0x20) = 0xffff; + *(undefined2 *)((int)DAT_8007161c + iVar4 + iVar3 * 0x20 + 2) = 0xffff; + *(undefined2 *)((int)DAT_8007161c + iVar4 + iVar3 * 0x20 + 4) = 0xffff; + iVar1 = iVar4 + iVar3 * 0x20; + iVar4 += 8; + *(undefined2 *)((int)DAT_8007161c + iVar1 + 6) = 0xffff; + } while (iVar4 != 0x20); + if (-1 < param_2) { + DAT_8007161c[(int)param_2 * 0x10 + 0xf] = (short)iVar3; + return iVar3; + } + *(short *)(ptr_room_lookup_buffer_maybe + param_1 * 2) = (short)iVar3; + return iVar3; +} + + + +void proc_7F03DD9C(int param_1,short param_2) + +{ + int iVar1; + longlong lVar2; + longlong lVar3; + + lVar2 = -1; + if (-1 < param_2) { + lVar3 = (longlong)*(short *)(ptr_room_lookup_buffer_maybe + (int)param_2 * 2); + if (-1 < lVar3) { + do { + lVar2 = lVar3; + lVar3 = proc_7F03DBCC((short)((param_1 + 0x7ff963c8) / 0x34),(int)lVar2); + if (lVar3 != 0) { + return; + } + lVar3 = (longlong)*(short *)(DAT_8007161c + (int)lVar2 * 0x20 + 0x1e); + } while (-1 < lVar3); + } + iVar1 = proc_7F03DCB8((int)param_2,lVar2); + if (-1 < iVar1) { + proc_7F03DBCC((short)((param_1 + 0x7ff963c8) / 0x34),iVar1); + } + } + return; +} + + + +void proc_7F03DE94(int param_1,short param_2) + +{ + short sVar1; + bool bVar2; + bool bVar3; + longlong lVar4; + int iVar5; + longlong lVar6; + longlong lVar7; + int iVar8; + longlong lVar9; + short *psVar10; + int iVar11; + + bVar3 = false; + if (-1 < (int)param_2) { + iVar8 = (int)param_2 * 2; + sVar1 = *(short *)(ptr_room_lookup_buffer_maybe + iVar8); + lVar4 = (longlong)sVar1; + if (-1 < lVar4) { + lVar6 = (longlong)(int)(short)((param_1 + 0x7ff963c8) / 0x34); + lVar7 = -1; + do { + psVar10 = (short *)(DAT_8007161c + (int)sVar1 * 0x20); + bVar2 = false; + iVar5 = (int)lVar4; + if (lVar6 == (longlong)*psVar10) { + *psVar10 = -1; + bVar3 = true; + psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20); +LAB_7f03df4c: + sVar1 = psVar10[1]; + } + else { + if (-1 < (longlong)*psVar10) { + bVar2 = true; + goto LAB_7f03df4c; + } + sVar1 = psVar10[1]; + } + if (lVar6 == (longlong)sVar1) { + psVar10[1] = -1; + bVar3 = true; + psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20); +LAB_7f03df80: + lVar9 = (longlong)psVar10[2]; + } + else { + if (bVar2) { + lVar9 = (longlong)psVar10[2]; + } + else { + if (-1 < (longlong)sVar1) { + bVar2 = true; + goto LAB_7f03df80; + } + lVar9 = (longlong)psVar10[2]; + } + } + if (lVar6 == lVar9) { + psVar10[2] = -1; + bVar3 = true; + } + else { + if ((!bVar2) && (-1 < lVar9)) { + bVar2 = true; + } + } + iVar11 = 6; + do { + psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); + if (lVar6 == (longlong)*psVar10) { + *psVar10 = -1; + bVar3 = true; + psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); +LAB_7f03dffc: + lVar9 = (longlong)psVar10[1]; + } + else { + if (bVar2) { + lVar9 = (longlong)psVar10[1]; + } + else { + if (-1 < (longlong)*psVar10) { + bVar2 = true; + goto LAB_7f03dffc; + } + lVar9 = (longlong)psVar10[1]; + } + } + if (lVar6 == lVar9) { + psVar10[1] = -1; + bVar3 = true; + psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); +LAB_7f03e038: + lVar9 = (longlong)psVar10[2]; + } + else { + if (bVar2) { + lVar9 = (longlong)psVar10[2]; + } + else { + if (-1 < lVar9) { + bVar2 = true; + goto LAB_7f03e038; + } + lVar9 = (longlong)psVar10[2]; + } + } + if (lVar6 == lVar9) { + psVar10[2] = -1; + bVar3 = true; + psVar10 = (short *)(DAT_8007161c + iVar5 * 0x20 + iVar11); +LAB_7f03e074: + lVar9 = (longlong)psVar10[3]; + } + else { + if (bVar2) { + lVar9 = (longlong)psVar10[3]; + } + else { + if (-1 < lVar9) { + bVar2 = true; + goto LAB_7f03e074; + } + lVar9 = (longlong)psVar10[3]; + } + } + iVar11 += 8; + if (lVar6 == lVar9) { + psVar10[3] = -1; + bVar3 = true; + } + else { + if ((!bVar2) && (-1 < lVar9)) { + bVar2 = true; + } + } + } while (iVar11 != 0x1e); + lVar9 = lVar4; + if (!bVar2) { + iVar11 = iVar5 * 0x20; + *(undefined2 *)(DAT_8007161c + iVar11) = 0xfffe; + lVar9 = lVar7; + if (lVar7 < 0) { + *(undefined2 *)(ptr_room_lookup_buffer_maybe + iVar8) = + *(undefined2 *)(DAT_8007161c + iVar11 + 0x1e); + } + else { + *(undefined2 *)(DAT_8007161c + (int)lVar7 * 0x20 + 0x1e) = + *(undefined2 *)(DAT_8007161c + iVar11 + 0x1e); + } + } + if (bVar3) { + return; + } + sVar1 = *(short *)(DAT_8007161c + iVar5 * 0x20 + 0x1e); + lVar4 = (longlong)sVar1; + lVar7 = lVar9; + } while (-1 < lVar4); + } + } + return; +} + + + +void proc_7F03E134(char *param_1) + +{ + char cVar1; + + cVar1 = *param_1; + if (cVar1 == '\x03') { + proc_7F020D94(*(int *)(param_1 + 4)); + } + else { + if ((cVar1 == '\x01') || (cVar1 == '\x04')) { + proc_7F056CA0(*(int *)(param_1 + 4)); + } + } + return; +} + + + +void proc_7F03E18C(int param_1) + +{ + byte bVar1; + int iVar2; + + bVar1 = *(byte *)(param_1 + 0x2c); + iVar2 = param_1 + 0x2c; + while (bVar1 != 0xff) { + proc_7F03DE94(param_1,(ushort)bVar1); + bVar1 = *(byte *)(iVar2 + 1); + iVar2 += 1; + } + if ((*(byte *)(param_1 + 1) & 0x10) == 0) { + *(undefined *)(param_1 + 0x2c) = 0xff; + } + return; +} + + + +void proc_7F03E210(int param_1) + +{ + byte bVar1; + int iVar2; + + bVar1 = *(byte *)(param_1 + 0x2c); + iVar2 = param_1 + 0x2c; + while (bVar1 != 0xff) { + proc_7F03DD9C(param_1,(ushort)bVar1); + bVar1 = *(byte *)(iVar2 + 1); + iVar2 += 1; + } + return; +} + + + +void proc_7F03E27C(char *param_1,float *param_2,float *param_3,float param_4) + +{ + char cVar1; + byte bVar2; + uint *puVar3; + uint *puVar4; + char *pcVar5; + float in_a3_lo; + int iVar6; + float in_f14; + int iStack40; + int iStack36; + uint auStack32 [8]; + + iVar6 = 0; + if ((param_1[1] & 8U) == 0) { + iStack36 = *(int *)(param_1 + 0x14); + iStack40 = 0; + proc_7F0B21B0(&iStack36,in_a3_lo,in_f14,*(float *)(param_1 + 8), + *(undefined4 *)(param_1 + 0x10),(undefined4 *)in_a3_lo,auStack32); + } + else { + cVar1 = *param_1; + puVar4 = (uint *)(param_1 + 0x2c); + if (((cVar1 == '\x01') || (cVar1 == '\x04')) || (cVar1 == '\x02')) { + iVar6 = *(int *)(param_1 + 4); + } + if (((iVar6 != 0) && ((*(uint *)(iVar6 + 100) & 0x80) != 0)) && + ((**(uint **)(iVar6 + 0x6c) & 8) != 0)) { + puVar4 = *(uint **)(iVar6 + 0x6c) + 0x33; + } + iStack40 = 0; + puVar3 = auStack32; + if (*(byte *)puVar4 != 0xff) { + bVar2 = *(byte *)puVar4; + do { + *puVar3 = (uint)bVar2; + bVar2 = *(byte *)((int)puVar4 + 1); + iStack40 += 1; + puVar3 = puVar3 + 1; + puVar4 = (uint *)((int)puVar4 + 1); + } while (bVar2 != 0xff); + } + } + proc_7F0BA2D4(param_2,param_3,(int *)auStack32,&iStack40,7); + iVar6 = 0; + puVar4 = auStack32; + pcVar5 = param_1; + if (0 < iStack40) { + while( true ) { + iVar6 += 1; + puVar4 = puVar4 + 1; + pcVar5[0x2c] = (char)auStack32[0]; + if (iStack40 <= iVar6) break; + auStack32[0] = *puVar4; + pcVar5 = pcVar5 + 1; + } + } + param_1[iVar6 + 0x2c] = -1; + return; +} + + + +void proc_7F03E3FC(int *param_1) + +{ + short sVar1; + short *psVar2; + longlong lVar3; + int iVar4; + int iVar5; + short *psVar6; + short sVar7; + + iVar5 = *param_1; + psVar2 = ptr_list_object_lookup_indices; + iVar4 = DAT_8007161c; + while (DAT_8007161c = iVar4, -1 < iVar5) { + lVar3 = (longlong)*(short *)(ptr_room_lookup_buffer_maybe + iVar5 * 2); + if (lVar3 < 0) { + iVar5 = param_1[1]; + } + else { + do { + iVar5 = 0; + do { + sVar1 = *(short *)(iVar4 + (int)lVar3 * 0x20 + iVar5); + iVar5 += 2; + if (-1 < sVar1) { + psVar6 = ptr_list_object_lookup_indices; + if (ptr_list_object_lookup_indices < psVar2) { + sVar7 = *ptr_list_object_lookup_indices; + while ((sVar1 != sVar7 && (psVar6 = psVar6 + 1, psVar6 < psVar2))) { + sVar7 = *psVar6; + } + } + if (psVar6 == psVar2) { + *psVar2 = sVar1; + psVar2 = psVar2 + 1; + iVar4 = DAT_8007161c; + } + } + } while (iVar5 != 0x1e); + lVar3 = (longlong)*(short *)(iVar4 + (int)lVar3 * 0x20 + 0x1e); + } while (-1 < lVar3); + iVar5 = param_1[1]; + } + param_1 = param_1 + 1; + iVar4 = DAT_8007161c; + } + *psVar2 = -1; + num_obj_position_data_entries = (int)psVar2 + (2 - (int)ptr_list_object_lookup_indices) >> 1; + return; +} + + + +// WARNING: Instruction at (ram,0x7f03e63c) overlaps instruction at (ram,0x7f03e638) +// + +void proc_7F03E4F0(void) + +{ + short sVar1; + longlong lVar2; + int iVar3; + u32 uVar4; + int iVar5; + int iVar7; + longlong lVar6; + int iVar8; + int iVar9; + short *psVar10; + short *psVar11; + + iVar3 = 0; + if (0 < (int)max_num_rooms) { + iVar5 = 0; + uVar4 = max_num_rooms; + do { + iVar3 += 1; + sVar1 = *(short *)(ptr_room_lookup_buffer_maybe + iVar5); + if (-1 < (longlong)sVar1) { + lVar2 = (longlong)sVar1; + lVar6 = (longlong)*(short *)(DAT_8007161c + (int)sVar1 * 0x20 + 0x1e); + while (-1 < lVar6) { + iVar8 = 0; + do { + iVar7 = (int)lVar6; + psVar11 = (short *)(DAT_8007161c + (int)lVar2 * 0x20 + iVar8); + iVar8 += 2; + iVar9 = 0; + psVar10 = (short *)(DAT_8007161c + iVar7 * 0x20); + if (*psVar11 < 0) { + do { + if (-1 < *psVar10) { + *psVar11 = *psVar10; + *(undefined2 *)(DAT_8007161c + iVar7 * 0x20 + iVar9) = 0xffff; + break; + } + iVar9 += 2; + psVar10 = psVar10 + 1; + } while (iVar9 != 0x1e); + if (iVar9 < 0x1e) { + psVar11 = (short *)(DAT_8007161c + iVar7 * 0x20 + iVar9); + do { + if (-1 < *psVar11) break; + iVar9 += 2; + psVar11 = psVar11 + 1; + } while (iVar9 < 0x1e); + } + if (iVar9 == 0x1e) { + iVar9 = (int)lVar2 * 0x20; + *(undefined2 *)(DAT_8007161c + iVar7 * 0x20) = 0xfffe; + *(undefined2 *)(DAT_8007161c + iVar9 + 0x1e) = + *(undefined2 *)(DAT_8007161c + iVar7 * 0x20 + 0x1e); + lVar6 = (longlong)*(short *)(DAT_8007161c + iVar9 + 0x1e); + if (lVar6 < 0) break; + } + } + } while (iVar8 < 0x1e); + uVar4 = max_num_rooms; + if (-1 < lVar6) { + lVar2 = lVar6; + lVar6 = (longlong)*(short *)(DAT_8007161c + (int)lVar6 * 0x20 + 0x1e); + } + } + } + iVar5 += 2; + } while (iVar3 < (int)uVar4); + } + return; +} + + + +void removed_debug_roomblocks_feature(void) + +{ + return; +} + + + +void proc_7F03E6A0(int param_1) + +{ + int iVar1; + int iVar2; + + if (((*(uint *)(*(int *)(param_1 + 4) + 100) & 1) != 0) && (dword_80030B00 != 0)) { + iVar2 = *(int *)(dword_80030B00 + 4); + iVar1 = dword_80030B00; + while( true ) { + if (param_1 == iVar2) { + if (*(int *)(iVar1 + 8) == 0) { + iVar1 = *(int *)(iVar1 + 0xc); + } + else { + proc_7F05599C(*(int *)(iVar1 + 8)); + iVar1 = *(int *)(iVar1 + 0xc); + } + } + else { + iVar1 = *(int *)(iVar1 + 0xc); + } + if (iVar1 == 0) break; + iVar2 = *(int *)(iVar1 + 4); + } + } + return; +} + + + +undefined8 proc_7F03E718(int param_1) + +{ + ulonglong uVar1; + int iVar2; + int iVar3; + + if (((*(uint *)(param_1 + 100) & 0x2000) != 0) && (dword_80030B04 != 0)) { + iVar3 = *(int *)(dword_80030B04 + 4); + iVar2 = dword_80030B04; + while( true ) { + if (param_1 == iVar3) { + iVar3 = *(int *)(iVar2 + 8); + if (iVar3 == 0) { + iVar2 = *(int *)(iVar2 + 0xc); + } + else { + if (*(int *)(iVar3 + 0x10) == 0) { + iVar2 = *(int *)(iVar2 + 0xc); + } + else { + uVar1 = check_if_object_has_not_been_destroyed(iVar3); + if (uVar1 != 0) { + return 0; + } + iVar2 = *(int *)(iVar2 + 0xc); + } + } + } + else { + iVar2 = *(int *)(iVar2 + 0xc); + } + if (iVar2 == 0) break; + iVar3 = *(int *)(iVar2 + 4); + } + } + return 1; +} + + + +undefined8 proc_7F03E7AC(int param_1) + +{ + int iVar1; + int iVar2; + + if (((*(uint *)(param_1 + 0xc) & 0x400) != 0) && (dword_80030B08 != 0)) { + iVar2 = *(int *)(dword_80030B08 + 4); + iVar1 = dword_80030B08; + while( true ) { + if (param_1 == iVar2) { + iVar2 = *(int *)(iVar1 + 0xc); + if (iVar2 == 0) { + iVar1 = *(int *)(iVar1 + 0x10); + } + else { + if (*(int *)(iVar2 + 0x10) == 0) { + iVar1 = *(int *)(iVar1 + 0x10); + } + else { + if (*(float *)(iVar2 + 0xb4) <= 0.50000000) { + return 0; + } + iVar1 = *(int *)(iVar1 + 0x10); + } + } + } + else { + iVar1 = *(int *)(iVar1 + 0x10); + } + if (iVar1 == 0) break; + iVar2 = *(int *)(iVar1 + 4); + } + } + return 1; +} + + + +void proc_7F03E830(int param_1) + +{ + proc_7F0B2970(); + return; +} + + + +undefined4 proc_7F03E85C(int param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +undefined4 proc_7F03E864(int param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +undefined4 proc_7F03E86C(int param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +undefined4 proc_7F03E874(int param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +float proc_7F03E87C(int param_1,float *param_2) + +{ + float fVar1; + float fVar2; + + if (0.00000000 <= *param_2) { + fVar2 = *(float *)(param_1 + 4); + } + else { + fVar2 = *(float *)(param_1 + 8); + } + if (0.00000000 <= param_2[4]) { + fVar1 = *(float *)(param_1 + 0xc); + } + else { + fVar1 = *(float *)(param_1 + 0x10); + } + fVar1 = fVar2 * *param_2 + 0.00000000 + fVar1 * param_2[4]; + fVar2 = param_2[8]; + if (fVar2 < 0.00000000) { + return fVar1 + *(float *)(param_1 + 0x18) * fVar2; + } + return fVar1 + *(float *)(param_1 + 0x14) * fVar2; +} + + + +float proc_7F03E91C(int param_1,float *param_2) + +{ + float fVar1; + float fVar2; + + if (*param_2 <= 0.00000000) { + fVar2 = *(float *)(param_1 + 4); + } + else { + fVar2 = *(float *)(param_1 + 8); + } + if (param_2[4] <= 0.00000000) { + fVar1 = *(float *)(param_1 + 0xc); + } + else { + fVar1 = *(float *)(param_1 + 0x10); + } + fVar1 = fVar2 * *param_2 + 0.00000000 + fVar1 * param_2[4]; + fVar2 = param_2[8]; + if (0.00000000 < fVar2) { + return fVar1 + *(float *)(param_1 + 0x18) * fVar2; + } + return fVar1 + *(float *)(param_1 + 0x14) * fVar2; +} + + + +float proc_7F03E9BC(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + + if (0.00000000 <= *(float *)(param_2 + 4)) { + fVar2 = *(float *)(param_1 + 4); + } + else { + fVar2 = *(float *)(param_1 + 8); + } + if (0.00000000 <= *(float *)(param_2 + 0x14)) { + fVar1 = *(float *)(param_1 + 0xc); + } + else { + fVar1 = *(float *)(param_1 + 0x10); + } + fVar1 = fVar2 * *(float *)(param_2 + 4) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x14); + fVar2 = *(float *)(param_2 + 0x24); + if (fVar2 < 0.00000000) { + return fVar1 + *(float *)(param_1 + 0x18) * fVar2; + } + return fVar1 + *(float *)(param_1 + 0x14) * fVar2; +} + + + +float proc_7F03EA5C(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + + if (*(float *)(param_2 + 4) <= 0.00000000) { + fVar2 = *(float *)(param_1 + 4); + } + else { + fVar2 = *(float *)(param_1 + 8); + } + if (*(float *)(param_2 + 0x14) <= 0.00000000) { + fVar1 = *(float *)(param_1 + 0xc); + } + else { + fVar1 = *(float *)(param_1 + 0x10); + } + fVar1 = fVar2 * *(float *)(param_2 + 4) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x14); + fVar2 = *(float *)(param_2 + 0x24); + if (0.00000000 < fVar2) { + return fVar1 + *(float *)(param_1 + 0x18) * fVar2; + } + return fVar1 + *(float *)(param_1 + 0x14) * fVar2; +} + + + +float proc_7F03EAFC(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + + if (0.00000000 <= *(float *)(param_2 + 8)) { + fVar2 = *(float *)(param_1 + 4); + } + else { + fVar2 = *(float *)(param_1 + 8); + } + if (0.00000000 <= *(float *)(param_2 + 0x18)) { + fVar1 = *(float *)(param_1 + 0xc); + } + else { + fVar1 = *(float *)(param_1 + 0x10); + } + fVar1 = fVar2 * *(float *)(param_2 + 8) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x18); + fVar2 = *(float *)(param_2 + 0x28); + if (fVar2 < 0.00000000) { + return fVar1 + *(float *)(param_1 + 0x18) * fVar2; + } + return fVar1 + *(float *)(param_1 + 0x14) * fVar2; +} + + + +float proc_7F03EB9C(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + + if (*(float *)(param_2 + 8) <= 0.00000000) { + fVar2 = *(float *)(param_1 + 4); + } + else { + fVar2 = *(float *)(param_1 + 8); + } + if (*(float *)(param_2 + 0x18) <= 0.00000000) { + fVar1 = *(float *)(param_1 + 0xc); + } + else { + fVar1 = *(float *)(param_1 + 0x10); + } + fVar1 = fVar2 * *(float *)(param_2 + 8) + 0.00000000 + fVar1 * *(float *)(param_2 + 0x18); + fVar2 = *(float *)(param_2 + 0x28); + if (0.00000000 < fVar2) { + return fVar1 + *(float *)(param_1 + 0x18) * fVar2; + } + return fVar1 + *(float *)(param_1 + 0x14) * fVar2; +} + + + +void proc_7F03EC3C(int param_1,int param_2,undefined4 *param_3) + +{ + if (*(float *)(param_2 + 8) <= 0.00000000) { + *param_3 = *(undefined4 *)(param_1 + 4); + } + else { + *param_3 = *(undefined4 *)(param_1 + 8); + } + if (*(float *)(param_2 + 0x18) <= 0.00000000) { + param_3[1] = *(undefined4 *)(param_1 + 0xc); + } + else { + param_3[1] = *(undefined4 *)(param_1 + 0x10); + } + if (0.00000000 < *(float *)(param_2 + 0x28)) { + param_3[2] = *(undefined4 *)(param_1 + 0x18); + return; + } + param_3[2] = *(undefined4 *)(param_1 + 0x14); + return; +} + + + +// WARNING: Instruction at (ram,0x7f03f418) overlaps instruction at (ram,0x7f03f414) +// + +void proc_7F03ECC0(float param_1,undefined8 param_2,undefined8 param_3,float param_4, + undefined8 param_5,float param_6,float param_7,float *param_8,float *param_9, + uint *param_10) + +{ + int *piVar1; + int iVar2; + uint uVar3; + int iVar4; + double *pdVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + double *pdVar10; + uint uVar11; + double *pdVar12; + double *pdVar13; + float *pfVar14; + float *pfVar15; + double *pdVar16; + int iVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + float fVar28; + float fVar29; + uint *in_stack_00000020; + int aiStack176 [4]; + int aiStack160 [8]; + double adStack128 [16]; + + pdVar13 = adStack128; + iVar7 = 0; + pdVar12 = adStack128; + iVar4 = 0; + pdVar10 = adStack128; + dVar18 = (double)*param_9 * (double)param_1; + dVar23 = (double)param_9[4] * (double)param_5._4_4_; + iVar8 = 0; + dVar26 = (double)param_9[8] * (double)param_7; + dVar25 = dVar18 + dVar23; + pdVar16 = adStack128; + iVar17 = 0; + adStack128[0] = dVar25 + dVar26; + pdVar5 = adStack128; + iVar2 = 1; + dVar19 = (double)param_9[2] * (double)param_1; + dVar20 = (double)param_9[6] * (double)param_5._4_4_; + dVar21 = dVar19 + dVar20; + dVar22 = (double)param_9[10] * (double)param_7; + adStack128[1] = dVar21 + dVar22; + dVar24 = (double)param_9[8] * (double)(float)param_8; + dVar27 = (double)param_9[10] * (double)(float)param_8; + adStack128[2] = dVar25 + dVar24; + dVar25 = (double)param_9[4] * (double)param_6; + adStack128[3] = dVar21 + dVar27; + dVar21 = (double)param_9[6] * (double)param_6; + dVar18 = dVar18 + dVar25; + dVar19 = dVar19 + dVar21; + adStack128[4] = dVar18 + dVar26; + adStack128[5] = dVar19 + dVar22; + adStack128[6] = dVar18 + dVar24; + adStack128[7] = dVar19 + dVar27; + dVar18 = (double)*param_9 * (double)param_4; + dVar19 = (double)param_9[2] * (double)param_4; + dVar23 = dVar18 + dVar23; + dVar20 = dVar19 + dVar20; + adStack128[8] = dVar23 + dVar26; + adStack128[9] = dVar20 + dVar22; + adStack128[10] = dVar23 + dVar24; + dVar19 = dVar19 + dVar21; + adStack128[11] = dVar20 + dVar27; + dVar18 = dVar18 + dVar25; + adStack128[12] = dVar18 + dVar26; + adStack128[13] = dVar19 + dVar22; + adStack128[15] = dVar19 + dVar27; + adStack128[14] = dVar18 + dVar24; + do { + pdVar5 = pdVar5 + 2; + if ((*pdVar5 < adStack128[0]) || ((*pdVar5 == adStack128[0] && (pdVar5[1] < pdVar13[1])))) { + pdVar13 = adStack128 + iVar2 * 2; + adStack128[0] = *pdVar13; + iVar17 = iVar2; + } + iVar2 += 1; + } while (iVar2 < 8); + iVar2 = 1; + pdVar5 = adStack128; + do { + pdVar5 = pdVar5 + 2; + if ((pdVar12[1] < pdVar5[1]) || ((pdVar5[1] == pdVar12[1] && (*pdVar5 < *pdVar12)))) { + pdVar12 = adStack128 + iVar2 * 2; + iVar7 = iVar2; + } + iVar2 += 1; + } while (iVar2 < 8); + iVar2 = 1; + pdVar5 = adStack128; + do { + pdVar5 = pdVar5 + 2; + if ((*pdVar10 < *pdVar5) || ((*pdVar5 == *pdVar10 && (pdVar10[1] < pdVar5[1])))) { + pdVar10 = adStack128 + iVar2 * 2; + iVar4 = iVar2; + } + iVar2 += 1; + } while (iVar2 < 8); + iVar2 = 1; + pdVar5 = adStack128; + do { + pdVar5 = pdVar5 + 2; + if ((pdVar5[1] < pdVar16[1]) || ((pdVar5[1] == pdVar16[1] && (*pdVar16 < *pdVar5)))) { + pdVar16 = adStack128 + iVar2 * 2; + iVar8 = iVar2; + } + iVar2 += 1; + } while (iVar2 < 8); + iVar6 = 0; + iVar2 = 0; + do { + if ((((iVar2 != iVar17) && (iVar2 != iVar4)) && (iVar2 != iVar7)) && (iVar2 != iVar8)) { + aiStack176[iVar6] = iVar2; + iVar6 += 1; + } + iVar2 += 1; + } while (iVar2 < 8); + iVar8 = 1; + piVar1 = aiStack176; + *(float *)param_10 = (float)adStack128[0]; + *(float *)(param_10 + 1) = (float)pdVar13[1]; + dVar18 = *pdVar16; + iVar17 = aiStack176[0]; + while (dVar23 = adStack128[iVar17 * 2], + (adStack128[iVar17 * 2 + 1] - pdVar16[1]) * (*pdVar13 - dVar18) <= + (dVar23 - dVar18) * (pdVar13[1] - pdVar16[1])) { + piVar1 = piVar1 + 1; + if (aiStack160 <= piVar1) goto LAB_7f03f19c; + iVar17 = *piVar1; + } + iVar8 = 2; + *(float *)(param_10 + 2) = (float)dVar23; + *(float *)(param_10 + 3) = (float)adStack128[iVar17 * 2 + 1]; + dVar18 = *pdVar16; +LAB_7f03f19c: + pfVar15 = (float *)(param_10 + iVar8 * 2); + pfVar14 = pfVar15 + 2; + *pfVar15 = (float)dVar18; + iVar7 = iVar8 + 1; + piVar1 = aiStack176; + pfVar15[1] = (float)pdVar16[1]; + dVar18 = *pdVar10; + iVar17 = aiStack176[0]; + while (dVar23 = adStack128[iVar17 * 2], + (adStack128[iVar17 * 2 + 1] - pdVar10[1]) * (*pdVar16 - dVar18) <= + (dVar23 - dVar18) * (pdVar16[1] - pdVar10[1])) { + piVar1 = piVar1 + 1; + if (aiStack160 <= piVar1) goto LAB_7f03f24c; + iVar17 = *piVar1; + } + iVar7 = iVar8 + 2; + pfVar14 = pfVar15 + 4; + pfVar15[2] = (float)dVar23; + pfVar15[3] = (float)adStack128[iVar17 * 2 + 1]; + dVar18 = *pdVar10; +LAB_7f03f24c: + iVar8 = iVar7 + 1; + pfVar15 = pfVar14 + 2; + piVar1 = aiStack176; + *pfVar14 = (float)dVar18; + pfVar14[1] = (float)pdVar10[1]; + dVar18 = *pdVar12; + iVar17 = aiStack176[0]; + while (dVar23 = adStack128[iVar17 * 2], + (adStack128[iVar17 * 2 + 1] - pdVar12[1]) * (*pdVar10 - dVar18) <= + (dVar23 - dVar18) * (pdVar10[1] - pdVar12[1])) { + piVar1 = piVar1 + 1; + if (aiStack160 <= piVar1) goto LAB_7f03f2f4; + iVar17 = *piVar1; + } + iVar8 = iVar7 + 2; + pfVar15 = pfVar14 + 4; + pfVar14[2] = (float)dVar23; + pfVar14[3] = (float)adStack128[iVar17 * 2 + 1]; + dVar18 = *pdVar12; +LAB_7f03f2f4: + uVar9 = iVar8 + 1; + piVar1 = aiStack176; + *pfVar15 = (float)dVar18; + pfVar15[1] = (float)pdVar12[1]; + while (dVar18 = adStack128[aiStack176[0] * 2], + (adStack128[aiStack176[0] * 2 + 1] - pdVar13[1]) * (*pdVar12 - *pdVar13) <= + (dVar18 - *pdVar13) * (pdVar12[1] - pdVar13[1])) { + piVar1 = piVar1 + 1; + if (aiStack160 <= piVar1) goto LAB_7f03f39c; + aiStack176[0] = *piVar1; + } + uVar9 = iVar8 + 2; + pfVar15[2] = (float)dVar18; + pfVar15[3] = (float)adStack128[aiStack176[0] * 2 + 1]; +LAB_7f03f39c: + *in_stack_00000020 = uVar9; + if (uVar9 != 0) { + uVar11 = uVar9 & 3; + if (uVar11 == 0) { + iVar17 = 0; + } + else { + uVar3 = 1; + fVar29 = (float)*param_10; + pfVar15 = (float *)param_10; + pfVar14 = (float *)param_10; + if (uVar11 != 1) { + do { + uVar3 += 1; + fVar28 = fVar29 + param_9[0xc]; + fVar29 = pfVar14[2]; + pfVar15 = pfVar14 + 2; + *pfVar14 = fVar28; + pfVar14[1] = pfVar14[1] + param_9[0xe]; + pfVar14 = pfVar15; + } while (uVar11 != uVar3); + } + *pfVar15 = fVar29 + param_9[0xc]; + pfVar15[1] = pfVar15[1] + param_9[0xe]; + iVar17 = uVar3 << 3; + if (uVar3 == uVar9) { + return; + } + } + fVar29 = *(float *)((int)param_10 + iVar17); + pfVar15 = (float *)((int)param_10 + iVar17); + while (pfVar14 = pfVar15 + 8, pfVar14 != (float *)(param_10 + uVar9 * 2)) { + *pfVar15 = fVar29 + param_9[0xc]; + fVar29 = *pfVar14; + pfVar15[1] = pfVar15[1] + param_9[0xe]; + pfVar15[2] = pfVar15[2] + param_9[0xc]; + pfVar15[3] = pfVar15[3] + param_9[0xe]; + pfVar15[4] = pfVar15[4] + param_9[0xc]; + pfVar15[5] = pfVar15[5] + param_9[0xe]; + pfVar15[6] = pfVar15[6] + param_9[0xc]; + pfVar15[7] = pfVar15[7] + param_9[0xe]; + pfVar15 = pfVar14; + } + *pfVar15 = fVar29 + param_9[0xc]; + pfVar15[1] = pfVar15[1] + param_9[0xe]; + pfVar15[2] = pfVar15[2] + param_9[0xc]; + pfVar15[3] = pfVar15[3] + param_9[0xe]; + pfVar15[4] = pfVar15[4] + param_9[0xc]; + pfVar15[5] = pfVar15[5] + param_9[0xe]; + pfVar15[6] = pfVar15[6] + param_9[0xc]; + pfVar15[7] = pfVar15[7] + param_9[0xe]; + } + return; +} + + + +void proc_7F03F540(undefined8 param_1,undefined8 param_2,float *param_3,uint *param_4) + +{ + int iVar1; + + iVar1 = (int)param_1; + proc_7F03ECC0(*(float *)(iVar1 + 4),param_1,param_2,*(float *)(iVar1 + 8), + (longlong)*(int *)(iVar1 + 0xc),*(float *)(iVar1 + 0x10), + *(undefined4 *)(iVar1 + 0x14),*(float **)(iVar1 + 0x18),(float *)param_2, + (uint *)param_3); + return; +} + + + +undefined8 proc_7F03F598(float *param_1,float param_2,float *param_3) + +{ + undefined8 uVar1; + float *in_a2_lo; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + + fVar2 = *param_1 - *in_a2_lo; + fVar3 = param_1[1] - in_a2_lo[1]; + fVar4 = param_1[2] - in_a2_lo[2]; + fVar5 = in_a2_lo[8] * fVar4 + fVar2 * in_a2_lo[6] + fVar3 * in_a2_lo[7]; + if ((in_a2_lo[0x10] + (float)param_3 < fVar5) || (fVar5 < in_a2_lo[0xf] - (float)param_3)) { + uVar1 = 0; + } + else { + fVar5 = in_a2_lo[5] * fVar4 + fVar2 * in_a2_lo[3] + fVar3 * in_a2_lo[4]; + if ((in_a2_lo[0xe] + (float)param_3 < fVar5) || (fVar5 < in_a2_lo[0xd] - (float)param_3)) { + uVar1 = 0; + } + else { + fVar2 = (in_a2_lo[3] * in_a2_lo[7] - in_a2_lo[6] * in_a2_lo[4]) * fVar4 + + fVar2 * (in_a2_lo[4] * in_a2_lo[8] - in_a2_lo[7] * in_a2_lo[5]) + + fVar3 * (in_a2_lo[5] * in_a2_lo[6] - in_a2_lo[8] * in_a2_lo[3]); + if ((in_a2_lo[0xc] + (float)param_3 < fVar2) || + (uVar1 = 1, fVar2 < in_a2_lo[0xb] - (float)param_3)) { + uVar1 = 0; + } + } + } + return uVar1; +} + + + +void proc_7F03F748(int param_1,float *param_2,float *param_3,longlong param_4) + +{ + ushort uVar1; + int iVar2; + bool bVar3; + float *pfVar4; + ushort *puVar5; + ushort *puVar6; + float fVar7; + float fVar8; + + puVar5 = **(ushort ***)(param_1 + 8); + bVar3 = true; + if (puVar5 != NULL) { + uVar1 = *puVar5; + while( true ) { + if ((uVar1 & 0xff) == 10) { + iVar2 = *(int *)(puVar5 + 2); + pfVar4 = (float *)proc_7F06C660(param_1,puVar5,0); + if (param_4 == 0) { + fVar7 = proc_7F03E91C(iVar2,pfVar4); + fVar7 = pfVar4[0xc] + fVar7; + fVar8 = proc_7F03E87C(iVar2,pfVar4); + fVar8 = pfVar4[0xc] + fVar8; + } + else { + if (param_4 == 1) { + fVar7 = proc_7F03EA5C(iVar2,(int)pfVar4); + fVar7 = pfVar4[0xd] + fVar7; + fVar8 = proc_7F03E9BC(iVar2,(int)pfVar4); + fVar8 = pfVar4[0xd] + fVar8; + } + else { + fVar7 = proc_7F03EB9C(iVar2,(int)pfVar4); + fVar7 = pfVar4[0xe] + fVar7; + fVar8 = proc_7F03EAFC(iVar2,(int)pfVar4); + fVar8 = pfVar4[0xe] + fVar8; + } + } + if ((bVar3) || (*param_2 < fVar7)) { + *param_2 = fVar7; + } + if ((bVar3) || (fVar8 < *param_3)) { + *param_3 = fVar8; + } + puVar6 = *(ushort **)(puVar5 + 10); + bVar3 = false; + } + else { + puVar6 = *(ushort **)(puVar5 + 10); + } + if ((puVar6 == NULL) && (puVar6 = puVar5, puVar5 != NULL)) { + puVar6 = *(ushort **)(puVar5 + 6); + while ((puVar6 == NULL && + (puVar5 = *(ushort **)(puVar5 + 4), puVar6 = puVar5, puVar5 != NULL))) { + puVar6 = *(ushort **)(puVar5 + 6); + } + } + if (puVar6 == NULL) break; + uVar1 = *puVar6; + puVar5 = puVar6; + } + } + return; +} + + + +void proc_7F03F90C(int param_1,float *param_2,float *param_3,float *param_4,float *param_5) + +{ + proc_7F03F748(param_1,param_2,param_3,0); + proc_7F03F748(param_1,param_4,param_5,1); + return; +} + + + +void proc_7F03F948(float *param_1,float *param_2,undefined4 *param_3,float *param_4,float *param_5) + +{ + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fStack12 = *param_2; + fStack8 = param_1[1]; + fStack4 = param_1[2]; + proc_7F077FF4(&fStack12,&fStack20); + *param_4 = fStack20; + fStack12 = param_2[1]; + fStack8 = param_1[1]; + fStack4 = param_1[2]; + proc_7F077FF4(&fStack12,&fStack20); + *param_5 = fStack20; + fStack12 = *param_1; + fStack8 = (float)param_3[1]; + fStack4 = param_1[2]; + proc_7F077FF4(&fStack12,&fStack20); + param_4[1] = fStack16; + fStack12 = *param_1; + fStack8 = (float)*param_3; + fStack4 = param_1[2]; + proc_7F077FF4(&fStack12,&fStack20); + param_5[1] = fStack16; + return; +} + + + +int scan_position_data_table_for_normal_object_at_preset(short param_1) + +{ + char cVar1; + object_standard *poVar2; + + poVar2 = get_ptr_obj_pos_list_current_entry(); + if (poVar2 != NULL) { + cVar1 = *(char *)poVar2; + while( true ) { + if (cVar1 == '\x01') { + if ((longlong)(int)param_1 == (longlong)*(short *)(*(int *)&poVar2->pad + 6)) { + return *(int *)&poVar2->pad; + } + poVar2 = (object_standard *)poVar2->runtime_MATRIX3; + } + else { + poVar2 = (object_standard *)poVar2->runtime_MATRIX3; + } + if (poVar2 == NULL) break; + cVar1 = *(char *)poVar2; + } + } + return 0; +} + + + +undefined4 proc_7F03FAB0(float *param_1,ulonglong param_2) + +{ + char cVar1; + object_standard *poVar3; + longlong lVar2; + uint uStack12; + float *apfStack8 [2]; + + poVar3 = get_ptr_obj_pos_list_current_entry(); + if (poVar3 != NULL) { + cVar1 = *(char *)poVar3; + while( true ) { + if (cVar1 == '\x01') { + if (param_2 == + (ulonglong)*(byte *)((int)poVar3->runtime_ptr_obj_instance_controller + 3)) { + proc_7F03CCB0((char *)poVar3,(int **)apfStack8,&uStack12); + lVar2 = proc_7F03CCD8(param_1,apfStack8[0],uStack12); + if (lVar2 != 0) { + return *(undefined4 *)&poVar3->pad; + } + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + else { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + } + else { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + if (poVar3 == NULL) break; + cVar1 = *(char *)poVar3; + } + } + return 0; +} + + + +void proc_7F03FB70(uint *param_1) + +{ + ulonglong uVar1; + ALLink_s *pAVar2; + uint uVar3; + + if ((*param_1 & 0x80) == 0) { + uVar3 = *param_1; + } + else { + if ((ALLink_s *)param_1[0x26] == NULL) { + pAVar2 = (ALLink_s *)param_1[0x27]; + } + else { + uVar1 = sfxGetArg0Unk3F((ALLink_s *)param_1[0x26]); + if (uVar1 == 0) { + pAVar2 = (ALLink_s *)param_1[0x27]; + } + else { + sfxDeactivate(param_1[0x26]); + pAVar2 = (ALLink_s *)param_1[0x27]; + } + } + if (pAVar2 == NULL) { + uVar3 = *param_1; + } + else { + uVar1 = sfxGetArg0Unk3F(pAVar2); + if (uVar1 == 0) { + uVar3 = *param_1; + } + else { + sfxDeactivate(param_1[0x27]); + uVar3 = *param_1; + } + } + } + *param_1 = uVar3 | 0x80000000; + return; +} + + + +void proc_7F03FBFC(undefined4 *param_1) + +{ + float fVar1; + + *param_1 = 0; + param_1[0x22] = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[0x18] = 0x3f800000; + fVar1 = flt_80052A48; + param_1[0x24] = 0; + param_1[0x28] = 0xffffffff; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0xffffffff; + param_1[0x2e] = 1; + param_1[0x2f] = 0; + param_1[0x38] = 0; + param_1[0x39] = 0; + param_1[0x3a] = 0; + param_1[0x25] = 0; + param_1[0x30] = 0x3f800000; + param_1[0x31] = 0x3f800000; + param_1[0x32] = 0x3f800000; + *(float *)(param_1 + 0x23) = fVar1; + return; +} + + + +undefined4 * proc_7F03FC80(void) + +{ + uint uVar1; + uint *puVar2; + undefined4 *puVar3; + int iVar4; + int iVar5; + + iVar5 = -1; + puVar2 = &DAT_80073dc0; + iVar4 = 0; + do { + uVar1 = *puVar2; + puVar2 = puVar2 + 0x3b; + if ((uVar1 & 0x80000000) != 0) { + proc_7F03FBFC((undefined4 *)((int)&DAT_80073dc0 + iVar4)); + return (undefined4 *)((int)&DAT_80073dc0 + iVar4); + } + iVar4 += 0xec; + } while (puVar2 < &DAT_80075030); + puVar3 = &DAT_80073dc0; + iVar4 = 0; + do { + if ((puVar3[0x39] != 0) && + ((iVar5 < 0 || ((int)puVar3[0x3a] < (int)(&DAT_80073ea8)[iVar5 * 0x3b])))) { + iVar5 = iVar4; + } + iVar4 += 1; + puVar3 = puVar3 + 0x3b; + } while (iVar4 != 0x14); + puVar3 = NULL; + if (-1 < iVar5) { + proc_7F040CF0(*(int *)((&DAT_80073ea4)[iVar5 * 0x3b] + 0x10)); + puVar3 = &DAT_80073dc0 + iVar5 * 0x3b; + *(uint *)((&DAT_80073ea4)[iVar5 * 0x3b] + 100) = + *(uint *)((&DAT_80073ea4)[iVar5 * 0x3b] + 100) | 4; + proc_7F03FBFC(puVar3); + } + return puVar3; +} + + + +void proc_7F03FDA8(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = *(int *)(param_1 + 4); + if ((*(uint *)(iVar1 + 100) & 0x40) == 0) { + if ((*(uint *)(iVar1 + 100) & 0x80) == 0) { + puVar2 = proc_7F03FC80(); + *(undefined4 **)(iVar1 + 0x6c) = puVar2; + if (puVar2 != NULL) { + *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) | 0x80; + } + } + } + else { + puVar2 = proc_7F03FC80(); + *(undefined4 **)(*(int *)(iVar1 + 0x6c) + 0x44) = puVar2; + } + return; +} + + + +void proc_7F03FE14(int param_1) + +{ + undefined uVar1; + int iVar2; + uint *puVar3; + + iVar2 = *(int *)(param_1 + 4); + puVar3 = NULL; + if ((*(uint *)(iVar2 + 100) & 0x40) == 0) { + if ((*(uint *)(iVar2 + 100) & 0x80) != 0) { + puVar3 = *(uint **)(iVar2 + 0x6c); + } + } + else { + puVar3 = *(uint **)(*(int *)(iVar2 + 0x6c) + 0x44); + } + if (puVar3 != NULL) { + *puVar3 = *puVar3 | 4; + if (*(int *)(param_1 + 0x14) != 0) { + uVar1 = *(undefined *)(*(int *)(param_1 + 0x14) + 3); + *(undefined *)((int)puVar3 + 0xcd) = 0xff; + *(undefined *)(puVar3 + 0x33) = uVar1; + return; + } + *(undefined *)(puVar3 + 0x33) = 0xff; + } + return; +} + + + +void proc_7F03FE88(uint *param_1) + +{ + *param_1 = *param_1 | 1; + return; +} + + + +int proc_7F03FE98(void) + +{ + int iVar1; + uint *puVar2; + + puVar2 = &DAT_80075030; + iVar1 = 0; + while( true ) { + if ((*puVar2 & 1) != 0) { + *puVar2 = 0; + puVar2[0x11] = 0; + return (int)&DAT_80075030 + iVar1; + } + if ((puVar2[0x12] & 1) != 0) { + puVar2[0x12] = 0; + puVar2[0x23] = 0; + return (int)&DAT_80075078 + iVar1; + } + if ((puVar2[0x24] & 1) != 0) { + puVar2[0x24] = 0; + puVar2[0x35] = 0; + return (int)&DAT_800750c0 + iVar1; + } + if ((puVar2[0x36] & 1) != 0) break; + puVar2 = puVar2 + 0x48; + iVar1 += 0x120; + if (puVar2 == &objinst) { + return 0; + } + } + puVar2[0x36] = 0; + puVar2[0x47] = 0; + return (int)&DAT_80075108 + iVar1; +} + + + +int proc_7F03FF60(int param_1) + +{ + if ((*(byte *)(param_1 + 2) & 0x80) != 0) { + return (int)(*(float *)(param_1 + 0x70) + 4.00000000); + } + return (int)((*(float *)(param_1 + 0x70) * 3.00000000) / *(float *)(param_1 + 0x74)); +} + + + +int do_something_if_object_destroyed(int param_1) + +{ + if ((*(byte *)(param_1 + 2) & 0x80) != 0) { + return ((int)*(float *)(param_1 + 0x70) >> 2) + 1; + } + return 0; +} + + + +undefined4 proc_7F03FFF8(int *param_1) + +{ + short sVar1; + short *psVar2; + short *psVar3; + + psVar3 = *(short **)(*param_1 + 0x14); + if (psVar3 != NULL) { + if (psVar3 != NULL) { + sVar1 = *psVar3; + psVar2 = psVar3; + while( true ) { + if (sVar1 == 10) { + return *(undefined4 *)(psVar2 + 2); + } + psVar2 = *(short **)(psVar2 + 6); + if (psVar2 == NULL) break; + sVar1 = *psVar2; + } + } + psVar3 = *(short **)(psVar3 + 10); + if ((psVar3 != NULL) && (psVar3 != NULL)) { + sVar1 = *psVar3; + while( true ) { + if (sVar1 == 10) { + return *(undefined4 *)(psVar3 + 2); + } + psVar3 = *(short **)(psVar3 + 6); + if (psVar3 == NULL) break; + sVar1 = *psVar3; + } + } + } + return 0; +} + + + +undefined4 proc_7F040078(int param_1) + +{ + undefined4 uVar1; + + uVar1 = proc_7F03FFF8(*(int **)(*(int *)(param_1 + 0x14) + 8)); + return uVar1; +} + + + +void proc_7F04009C(int param_1,byte *param_2) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + int iVar4; + float fVar5; + uint uVar6; + int iVar7; + ulonglong uVar8; + byte *pbVar9; + uint uVar10; + float fVar11; + byte bVar12; + + copy_tile_RGB_as_24bit + (*(int **)(param_1 + 0x14),*(int *)(param_1 + 8),*(int *)(param_1 + 0x10), + (tile_rgb *)param_2); + bVar1 = param_2[2]; + bVar2 = *param_2; + bVar3 = param_2[1]; + fVar11 = (float)(0xff - ((int)((uint)bVar1 * 0x14 + (uint)bVar1 + + ((uint)bVar2 * 0x50 - (uint)bVar2) + + ((uint)bVar3 * 0x28 - (uint)bVar3) * 4) >> 8)) * 0.75000000; + if (false) { + fVar5 = ROUND(fVar11); + } + else { + fVar5 = FLOOR(fVar11); + } + bVar12 = (byte)(int)fVar5; + if (false) { + if (false) { + fVar11 = ROUND(fVar11 - 2147483648.00000000); + } + else { + fVar11 = FLOOR(fVar11 - 2147483648.00000000); + } + if (true) { + bVar12 = (byte)(int)fVar11; + goto LAB_7f0401b8; + } + } + else { + if (-1 < (int)fVar5) goto LAB_7f0401b8; + } + bVar12 = 0xff; +LAB_7f0401b8: + param_2[3] = bVar12; + uVar10 = (uint)(bVar3 <= bVar2); + uVar6 = (uint)(bVar3 > bVar2); + pbVar9 = param_2 + uVar6; + uVar8 = (ulonglong)*pbVar9; + if (uVar8 < (ulonglong)bVar1) { + pbVar9 = param_2 + 2; + uVar8 = (ulonglong)*pbVar9; + } + else { + if ((ulonglong)param_2[uVar10] < (ulonglong)bVar1) { + uVar6 = 2; + } + else { + uVar6 = uVar10; + uVar10 = 2; + } + } + if (uVar8 != 0) { + bVar1 = param_2[uVar10]; + bVar2 = param_2[uVar6]; + param_2[uVar10] = 0; + iVar7 = (int)uVar8 - (uint)bVar1; + iVar4 = (uint)bVar2 * iVar7; + param_2[uVar6] = (byte)(iVar4 / (int)uVar8); + *pbVar9 = (byte)iVar7; + if (uVar8 == 0) { + trap(0x1c00); + } + if ((uVar8 == 0xffffffffffffffff) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + bVar3 = param_2[1]; + bVar2 = *param_2; + bVar1 = param_2[2]; + } + *param_2 = bVar2 >> 1; + param_2[1] = bVar3 >> 1; + param_2[2] = bVar1 >> 1; + return; +} + + + +void proc_7F0402B4(int param_1,byte *param_2) + +{ + if ((*(uint *)(*(int *)(param_1 + 4) + 8) & 0x400) == 0) { + proc_7F04009C(param_1,param_2); + *param_2 = *param_2 >> 1; + param_2[1] = param_2[1] >> 1; + param_2[2] = param_2[2] >> 1; + } + return; +} + + + +void proc_7F040310(byte *param_1,byte *param_2) + +{ + *param_1 = *param_1 + (char)((int)(((uint)*param_2 - (uint)*param_1) + 7) >> 3); + param_1[1] = param_1[1] + (char)((int)(((uint)param_2[1] - (uint)param_1[1]) + 7) >> 3); + param_1[2] = param_1[2] + (char)((int)(((uint)param_2[2] - (uint)param_1[2]) + 7) >> 3); + param_1[3] = param_1[3] + (char)((int)(((uint)param_2[3] - (uint)param_1[3]) + 7) >> 3); + return; +} + + + +void proc_7F040384(int *param_1,longlong param_2,float *param_3) + +{ + if (param_2 == 1) { + *param_3 = *param_3 * 255.00000000; + param_3[1] = param_3[1] * 255.00000000; + param_3[2] = param_3[2] * 255.00000000; + *param_1 = (int)(param_3[3] * (*param_3 - (float)*param_1) + (float)*param_1); + param_1[1] = (int)(param_3[3] * (param_3[1] - (float)param_1[1]) + (float)param_1[1]); + param_1[2] = (int)(param_3[3] * (param_3[2] - (float)param_1[2]) + (float)param_1[2]); + param_1[3] = (int)(param_3[3] * (255.00000000 - (float)param_1[3]) + (float)param_1[3]); + } + return; +} + + + +void proc_7F040484(int param_1) + +{ + float fVar1; + float afStack68 [16]; + int iStack4; + + if (*(int *)(param_1 + 0x68) != 0) { + iStack4 = proc_7F040078(param_1); + proc_7F058020((float (*) [4] [4])(param_1 + 0x18),(float (*) [4])afStack68); + copies_first_3_floats_from_a0_to_a1_plus_0x30((xyzpoint *)(param_1 + 0x58),(int)afStack68); + proc_7F03F540((longlong)iStack4,(longlong)(int)afStack68, + (float *)(*(uint **)(param_1 + 0x68) + 1),*(uint **)(param_1 + 0x68)); + fVar1 = proc_7F03E9BC(iStack4,(int)afStack68); + *(float *)(*(int *)(param_1 + 0x68) + 0x48) = fVar1 + *(float *)(param_1 + 0x5c); + fVar1 = proc_7F03EA5C(iStack4,(int)afStack68); + *(float *)(*(int *)(param_1 + 0x68) + 0x44) = fVar1 + *(float *)(param_1 + 0x5c); + if (*(char *)(param_1 + 3) == '(') { + *(float *)(*(int *)(param_1 + 0x68) + 0x48) = + *(float *)(*(int *)(param_1 + 0x68) + 0x48) - 200.00000000; + } + } + return; +} + + + +undefined * +init_standard_object + (object_standard *objdata,object_header *modelheader,object_standard *targetposdata, + uint controller) + +{ + uint uVar1; + f32 in_f12; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f12_01; + f32 extraout_f12_02; + + if (targetposdata == NULL) { + targetposdata = remove_last_obj_pos_data_entry(); + in_f12 = extraout_f12; + } + if (controller == 0) { + if (objdata->type == '(') { + controller = get_aircraft_obj_instance_controller(modelheader); + in_f12 = extraout_f12_00; + } + else { + controller = get_obj_instance_controller_for_header(modelheader); + in_f12 = extraout_f12_01; + } + } + if ((targetposdata == NULL) || ((int *)controller == NULL)) { + if ((int *)controller != NULL) { + if (objdata->type == '(') { + set_aircraft_obj_inst_scale_to_zero((int *)controller); + } + else { + set_obj_instance_scale_to_zero((int *)controller); + } + } + if (targetposdata != NULL) { + set_last_obj_pos_data(targetposdata); + targetposdata = NULL; + } + } + else { + objdata->runtime_ptr_obj_instance_controller = controller; + objdata->ptr_allocated_collisiondata_block = 0; + if ((objdata->flags & 0x100) == 0) { + objdata->hidden2 = objdata->hidden2 & 0xf7; + } + else { + uVar1 = mempAllocBytesInBank(0x50,'\x04'); + objdata->ptr_allocated_collisiondata_block = uVar1; + objdata->hidden2 = objdata->hidden2 | 8; + in_f12 = extraout_f12_02; + } + *(object_standard **)&objdata->runtime_ptr_obj_posdata = targetposdata; + objdata->field_6C = 0; + objdata->field_78 = '\0'; + objdata->field_79 = '\0'; + objdata->field_7A = '\0'; + objdata->field_7B = '\0'; + objdata->field_7C = '\0'; + objdata->field_7D = '\0'; + objdata->field_7E = '\0'; + objdata->field_7F = '\0'; + objdata->field_70 = 0.00000000; + *(undefined2 *)objdata->runtime_ptr_obj_instance_controller = 0xffff; + *(undefined4 *)(objdata->runtime_ptr_obj_instance_controller + 4) = 0; + set_obj_instance_controller_scale(objdata->runtime_ptr_obj_instance_controller,in_f12); + *(undefined *)&targetposdata->extrascale = 1; + *(object_standard **)&targetposdata->obj = objdata; + targetposdata->flags = 0; + objdata->runtime_x_pos = 0.00000000; + targetposdata->flags2 = 0; + objdata->runtime_y_pos = 0.00000000; + targetposdata->runtime_ptr_obj_posdata = 0; + objdata->runtime_z_pos = 0.00000000; + targetposdata->runtime_ptr_obj_instance_controller = 0; + } + return (undefined *)targetposdata; +} + + + +undefined * init_object_no_default_pos_controller(object_standard *object,object_header *header) + +{ + undefined *puVar1; + + puVar1 = init_standard_object(object,header,NULL,0); + return puVar1; +} + + + +undefined * proc_7F04071C(int param_1) + +{ + undefined *puVar1; + + puVar1 = init_object_no_default_pos_controller + ((object_standard *)param_1, + (object_header *)PitemZ_entries[*(short *)(param_1 + 4)].header); + return puVar1; +} + + + +void proc_7F040754(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 0x10); + proc_7F058020((float (*) [4] [4])param_3,(float (*) [4])(param_1 + 0x18)); + uVar2 = *param_2; + *(undefined4 *)(iVar1 + 8) = uVar2; + *(undefined4 *)(param_1 + 0x58) = uVar2; + uVar2 = param_2[1]; + *(undefined4 *)(iVar1 + 0xc) = uVar2; + *(undefined4 *)(param_1 + 0x5c) = uVar2; + uVar2 = param_2[2]; + *(undefined4 *)(iVar1 + 0x10) = uVar2; + *(undefined4 *)(param_1 + 0x60) = uVar2; + *(undefined4 *)(iVar1 + 0x14) = param_4; + proc_7F0402B4(*(int *)(param_1 + 0x10),(byte *)(param_1 + 0x7c)); + *(undefined *)(param_1 + 0x78) = *(undefined *)(param_1 + 0x7c); + *(undefined *)(param_1 + 0x79) = *(undefined *)(param_1 + 0x7d); + *(undefined *)(param_1 + 0x7a) = *(undefined *)(param_1 + 0x7e); + *(undefined *)(param_1 + 0x7b) = *(undefined *)(param_1 + 0x7f); + return; +} + + + +void proc_7F0407F4(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4) + +{ + int iVar1; + float fVar2; + + iVar1 = proc_7F03FFF8(*(int **)(*(int *)(param_1 + 0x14) + 8)); + fVar2 = (float)proc_7F0B2970(); + *(float *)(param_2 + 1) = fVar2 + 4.00000000; + fVar2 = proc_7F03E9BC(iVar1,(int)param_3); + *(float *)(param_2 + 1) = (float)param_2[1] - fVar2; + proc_7F040754(param_1,param_2,param_3,param_4); + proc_7F040484(param_1); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F04088C(void) + +{ + int iVar2; + longlong lVar1; + int in_a0_lo; + undefined8 extraout_a0; + float *in_a1_lo; + float (*in_a2_lo) [4] [4]; + int in_a3_lo; + float in_f0; + float extraout_f12; + float extraout_f12_00; + float fVar3; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float fVar4; + float *in_stack_00000010; + float fStack120; + float fStack116; + undefined4 uStack112; + int *piStack108; + float fStack104; + float afStack96 [4]; + float fStack80; + float fStack76; + float fStack72; + int iStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + int iStack8; + + iStack8 = proc_7F03FFF8(*(int **)(*(int *)(in_a0_lo + 0x14) + 8)); + proc_7F03E864(iStack8); + fStack12 = in_f0; + proc_7F03E86C(iStack8); + iStack32 = in_a3_lo; + fStack16 = in_f0; + if ((*(uint *)(in_a0_lo + 8) & 4) == 0) { + if ((*(uint *)(in_a0_lo + 8) & 8) == 0) { + fStack104 = (float)proc_7F0B2970(); + proc_7F058020(in_a2_lo,(float (*) [4])afStack96); + fStack28 = *in_stack_00000010 - fStack80 * fStack12; + fStack20 = in_stack_00000010[2] - fStack72 * fStack12; + iVar2 = proc_7F03FAB0(in_a1_lo,(ulonglong)*(byte *)(in_a3_lo + 3)); + if (iVar2 == 0) { + fStack24 = (fStack104 - fStack76 * fStack12) + 4.00000000; + fVar3 = fStack104; + fVar4 = extraout_f14_01; + } + else { + proc_7F03CC20(*(char **)(iVar2 + 0x10),&piStack108,&uStack112,&fStack116,&fStack120) + ; + fVar3 = fStack104; + fVar4 = extraout_f14_02; + if ((fStack116 <= fStack104) || + (fStack76 * (fStack16 - fStack12) + fStack104 + 4.00000000 <= fStack120)) { + fStack24 = (fStack104 - fStack76 * fStack12) + 4.00000000; + } + else { + fStack24 = fStack116 - fStack76 * fStack12; + *(uint *)(in_a0_lo + 100) = *(uint *)(in_a0_lo + 100) | 0x8000; + } + } + } + else { + proc_7F058020(in_a2_lo,(float (*) [4])afStack96); + fStack28 = *in_stack_00000010 - fStack80 * fStack12; + fStack24 = in_stack_00000010[1] - fStack76 * fStack12; + fStack20 = in_stack_00000010[2] - fStack72 * fStack12; + fVar3 = extraout_f12_00; + fVar4 = extraout_f14_00; + } + } + else { + proc_7F058688(flt_80052A4C,extraout_a0,afStack96); + proc_7F058068((float *)in_a2_lo,afStack96); + fStack28 = *in_stack_00000010 - fStack80 * fStack16; + fStack24 = in_stack_00000010[1] - fStack76 * fStack16; + fStack20 = in_stack_00000010[2] - fStack72 * fStack16; + fVar3 = extraout_f12; + fVar4 = extraout_f14; + } + lVar1 = (longlong)(int)in_a1_lo; + if (((*(uint *)(in_a0_lo + 0xc) & 1) == 0) && + (proc_7F0B0BE4(&iStack32,fVar3,fVar4,*in_a1_lo,in_a1_lo[2]), lVar1 != 0)) { + proc_7F040754(in_a0_lo,&fStack28,afStack96,iStack32); + } + else { + proc_7F040754(in_a0_lo,in_a1_lo,afStack96,in_a3_lo); + if ((*(uint *)(in_a0_lo + 0xc) & 1) == 0) { + if ((*(uint *)(in_a0_lo + 8) & 0x1000) == 0) goto LAB_7f040b84; + *(float *)(in_a0_lo + 0x58) = fStack28; + } + else { + *(float *)(in_a0_lo + 0x58) = fStack28; + } + *(float *)(in_a0_lo + 0x5c) = fStack24; + *(float *)(in_a0_lo + 0x60) = fStack20; + } +LAB_7f040b84: + proc_7F040484(in_a0_lo); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F040BA0(void) + +{ + int iVar2; + longlong lVar1; + int in_a0_lo; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + float *in_a1_lo; + float *in_a2_lo; + int in_a3_lo; + float in_f0; + float extraout_f12; + float extraout_f14; + float *in_stack_00000010; + float afStack156 [16]; + float afStack92 [8]; + float fStack60; + float fStack56; + float fStack52; + int iStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + + iVar2 = proc_7F03FFF8(*(int **)(*(int *)(in_a0_lo + 0x14) + 8)); + proc_7F03E874(iVar2); + iStack28 = in_a3_lo; + fStack12 = in_f0; + proc_7F058570(flt_80052A50,extraout_a0,afStack92); + proc_7F0585FC(flt_80052A54,extraout_a0_00,afStack156); + proc_7F058068(afStack156,afStack92); + proc_7F058068(in_a2_lo,afStack92); + fStack24 = *in_stack_00000010 - fStack60 * fStack12; + fStack20 = in_stack_00000010[1] - fStack56 * fStack12; + lVar1 = (longlong)(int)in_a1_lo; + fStack16 = in_stack_00000010[2] - fStack52 * fStack12; + if (((*(uint *)(in_a0_lo + 0xc) & 1) == 0) && + (proc_7F0B0BE4(&iStack28,extraout_f12,extraout_f14,*in_a1_lo,in_a1_lo[2]), lVar1 != 0)) { + proc_7F040754(in_a0_lo,&fStack24,afStack92,iStack28); + } + else { + proc_7F040754(in_a0_lo,in_a1_lo,afStack92,in_a3_lo); + *(float *)(in_a0_lo + 0x58) = fStack24; + *(float *)(in_a0_lo + 0x5c) = fStack20; + *(float *)(in_a0_lo + 0x60) = fStack16; + } + proc_7F040484(in_a0_lo); + return; +} + + + +void proc_7F040CF0(int param_1) + +{ + int iVar1; + uint uVar2; + uint *puVar3; + + iVar1 = *(int *)(param_1 + 4); + uVar2 = *(uint *)(iVar1 + 100); + if ((uVar2 & 0x40) == 0) { + if ((uVar2 & 0x80) != 0) { + proc_7F03FB70(*(uint **)(iVar1 + 0x6c)); + *(undefined4 *)(iVar1 + 0x6c) = 0; + *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) & 0xffffff7f; + } + } + else { + puVar3 = *(uint **)(iVar1 + 0x6c); + if (puVar3 != NULL) { + if ((uint *)puVar3[0x11] != NULL) { + proc_7F03FB70((uint *)puVar3[0x11]); + puVar3 = *(uint **)(iVar1 + 0x6c); + } + proc_7F03FE88(puVar3); + uVar2 = *(uint *)(iVar1 + 100); + } + *(undefined4 *)(iVar1 + 0x6c) = 0; + *(uint *)(iVar1 + 100) = uVar2 & 0xffffffbf; + } + return; +} + + + +void proc_7F040D98(object_standard *param_1,int param_2,longlong param_3) + +{ + char cVar1; + int iVar2; + ulonglong uVar3; + ALLink_s *pAVar4; + int iVar5; + + cVar1 = param_1->type; + if (cVar1 == '\r') { + if ((ALLink_s *)param_1[1].runtime_MATRIXB == NULL) { + pAVar4 = (ALLink_s *)param_1[1].runtime_MATRIXC; + } + else { + uVar3 = sfxGetArg0Unk3F((ALLink_s *)param_1[1].runtime_MATRIXB); + if (uVar3 == 0) { + pAVar4 = (ALLink_s *)param_1[1].runtime_MATRIXC; + } + else { + sfxDeactivate(param_1[1].runtime_MATRIXB); + pAVar4 = (ALLink_s *)param_1[1].runtime_MATRIXC; + } + } + if (pAVar4 == NULL) { + iVar5 = param_1->runtime_ptr_obj_posdata; + } + else { + uVar3 = sfxGetArg0Unk3F(pAVar4); + if (uVar3 == 0) { + iVar5 = param_1->runtime_ptr_obj_posdata; + } + else { + sfxDeactivate(param_1[1].runtime_MATRIXC); + iVar5 = param_1->runtime_ptr_obj_posdata; + } + } + goto LAB_7f040f28; + } + if (cVar1 == '\b') { + if (*(int *)¶m_1[1].obj == 0) { + iVar5 = param_1->runtime_ptr_obj_posdata; + goto LAB_7f040f28; + } + *(undefined4 *)(*(int *)¶m_1[1].obj + 0x84) = 0; + *(undefined4 *)¶m_1[1].obj = 0; + } + else { + if (cVar1 == '\x01') { + if (*(ALLink_s **)¶m_1[1].damage == NULL) { + pAVar4 = *(ALLink_s **)¶m_1[1].field_78; + } + else { + uVar3 = sfxGetArg0Unk3F(*(ALLink_s **)¶m_1[1].damage); + if (uVar3 == 0) { + pAVar4 = *(ALLink_s **)¶m_1[1].field_78; + } + else { + sfxDeactivate(*(int *)¶m_1[1].damage); + pAVar4 = *(ALLink_s **)¶m_1[1].field_78; + } + } + if (pAVar4 == NULL) { + iVar5 = param_1->runtime_ptr_obj_posdata; + } + else { + uVar3 = sfxGetArg0Unk3F(pAVar4); + if (uVar3 == 0) { + iVar5 = param_1->runtime_ptr_obj_posdata; + } + else { + sfxDeactivate(*(int *)¶m_1[1].field_78); + iVar5 = param_1->runtime_ptr_obj_posdata; + } + } + goto LAB_7f040f28; + } + if (cVar1 == '/') { + if ((int)param_1[1].flags2 < 0) { + iVar5 = param_1->runtime_ptr_obj_posdata; + } + else { + proc_7F0B9DBC(param_1[1].flags2,1); + iVar5 = param_1->runtime_ptr_obj_posdata; + } + goto LAB_7f040f28; + } + if (cVar1 == '(') { + if ((ALLink_s *)param_1[1].runtime_MATRIX6 == NULL) { + iVar5 = param_1->runtime_ptr_obj_posdata; + } + else { + uVar3 = sfxGetArg0Unk3F((ALLink_s *)param_1[1].runtime_MATRIX6); + if (uVar3 == 0) { + iVar5 = param_1->runtime_ptr_obj_posdata; + } + else { + sfxDeactivate(param_1[1].runtime_MATRIX6); + iVar5 = param_1->runtime_ptr_obj_posdata; + } + } + goto LAB_7f040f28; + } + if (cVar1 != '\'') { + iVar5 = param_1->runtime_ptr_obj_posdata; + goto LAB_7f040f28; + } + if ((ALLink_s *)param_1[1].runtime_MATRIX5 == NULL) { + iVar5 = param_1->runtime_ptr_obj_posdata; + goto LAB_7f040f28; + } + uVar3 = sfxGetArg0Unk3F((ALLink_s *)param_1[1].runtime_MATRIX5); + if (uVar3 == 0) { + iVar5 = param_1->runtime_ptr_obj_posdata; + goto LAB_7f040f28; + } + sfxDeactivate(param_1[1].runtime_MATRIX5); + } + iVar5 = param_1->runtime_ptr_obj_posdata; +LAB_7f040f28: + if (iVar5 != 0) { + proc_7F0A0CCC(iVar5,'\0'); + proc_7F0A0CCC(param_1->runtime_ptr_obj_posdata,'\x01'); + if (param_3 == 0) { + proc_7F040CF0(param_1->runtime_ptr_obj_posdata); + iVar5 = param_1->runtime_ptr_obj_posdata; + if (*(int *)(iVar5 + 0x1c) != 0) { + proc_7F04C044(iVar5); + iVar5 = param_1->runtime_ptr_obj_posdata; + } + proc_7F03E18C(iVar5); + iVar5 = *(int *)((char *)param_1->runtime_ptr_obj_posdata + 0x20); + if (iVar5 == 0) { + cVar1 = *(char *)param_1->runtime_ptr_obj_posdata; + } + else { + do { + iVar2 = *(int *)(iVar5 + 0x24); + proc_7F041024(*(object_standard **)(iVar5 + 4),1); + iVar5 = iVar2; + } while (iVar2 != 0); + cVar1 = *(char *)param_1->runtime_ptr_obj_posdata; + } + if (cVar1 == '\x02') { + cVar1 = param_1->type; + } + else { + proc_7F050DE8(param_1->runtime_ptr_obj_instance_controller); + cVar1 = param_1->type; + } + if (cVar1 == '(') { + set_aircraft_obj_inst_scale_to_zero + ((int *)param_1->runtime_ptr_obj_instance_controller); + } + else { + set_obj_instance_scale_to_zero((int *)param_1->runtime_ptr_obj_instance_controller); + } + if (param_2 == 0) { + param_1->runtime_ptr_obj_posdata = 0; + } + else { + proc_7F03A538(param_1->runtime_ptr_obj_posdata); + unset_stateflag_0x04_for_posdata(param_1->runtime_ptr_obj_posdata); + set_last_obj_pos_data((object_standard *)param_1->runtime_ptr_obj_posdata); + param_1->runtime_ptr_obj_posdata = 0; + } + } + } + return; +} + + + +void proc_7F041024(object_standard *param_1,int param_2) + +{ + proc_7F040D98(param_1,param_2,0); + return; +} + + + +undefined4 proc_7F041044(int param_1) + +{ + undefined4 in_v0_lo; + + if (*(char *)(param_1 + 3) == '\x04') { + return in_v0_lo; + } + return in_v0_lo; +} + + + +undefined8 proc_7F041074(float *param_1,float *param_2,float *param_3,float param_4) + +{ + undefined8 uVar1; + float in_a3_lo; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + + uVar1 = 0; + fVar4 = *param_3 - *param_1; + fVar6 = param_3[1] - param_1[1]; + fVar5 = param_3[2] - param_1[2]; + fVar7 = *param_2; + fVar8 = param_2[1]; + fVar3 = param_2[2]; + fVar2 = fVar5 * fVar3 + fVar7 * fVar4 + fVar8 * fVar6; + if ((0.00000000 < fVar2) && + (((fVar5 * fVar5 + fVar4 * fVar4 + fVar6 * fVar6) - in_a3_lo * in_a3_lo) * + (fVar3 * fVar3 + fVar7 * fVar7 + fVar8 * fVar8) <= fVar2 * fVar2)) { + uVar1 = 1; + } + return uVar1; +} + + + +undefined8 +proc_7F041160(int param_1,float *param_2,float *param_3,float *param_4,float *param_5,int *param_6, + ushort **param_7) + +{ + int iVar1; + longlong lVar2; + int iVar4; + undefined8 uVar3; + float *pfVar5; + float *pfVar6; + ushort *puStack68; + int iStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + ushort *apuStack12 [3]; + + iVar1 = *(int *)(param_1 + 0x14); + apuStack12[0] = NULL; + puStack68 = NULL; + if (*(char *)(param_1 + 3) == '\x01') { + lVar2 = proc_7F0747D0(param_1 + 0xd0,*(float **)(iVar1 + 0xc),param_2,param_3); + apuStack12[0] = **(ushort ***)(iVar1 + 8); + if ((0 < lVar2) && + (iVar4 = proc_7F04D9B0(iVar1,apuStack12[0],param_2,param_3,&fStack60,&iStack64,&puStack68 + ), iVar4 == 0)) { + lVar2 = 0; + } + } + else { + do { + iVar4 = proc_7F0752FC(iVar1,param_2,param_3,apuStack12); + lVar2 = (longlong)iVar4; + if ((0 < lVar2) && + (iVar4 = proc_7F04D9B0(iVar1,apuStack12[0],param_2,param_3,&fStack60,&iStack64, + &puStack68), iVar4 != 0)) break; + } while (0 < lVar2); + } + uVar3 = 0; + if (0 < lVar2) { + iVar4 = *(int *)(iVar1 + 0xc); + *param_4 = fStack60; + pfVar6 = (float *)(iVar4 + iStack64 * 0x40); + param_4[1] = fStack56; + param_4[2] = fStack52; + proc_7F058474(pfVar6,param_4); + pfVar5 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar5,param_4); + *param_5 = fStack48; + param_5[1] = fStack44; + param_5[2] = fStack40; + proc_7F0583D8(pfVar6,param_5); + if (0.00000000 < param_3[2] * param_5[2] + *param_5 * *param_3 + param_5[1] * param_3[1]) { + *param_5 = -*param_5; + param_5[1] = -param_5[1]; + param_5[2] = -param_5[2]; + } + pfVar5 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar5,param_5); + if (((*param_5 == 0.00000000) && (param_5[1] == 0.00000000)) && (param_5[2] == 0.00000000)) + { + param_5[2] = 1.00000000; + } + else { + guNormalize(param_5,param_5 + 1,param_5 + 2); + } + uVar3 = 1; + *param_6 = iVar1; + *param_7 = puStack68; + } + return uVar3; +} + + + +undefined8 +proc_7F041400(char *param_1,float *param_2,float *param_3,float *param_4,float *param_5, + float *param_6,float *param_7) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + ulonglong uVar4; + float *pfVar5; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + int iVar6; + int iVar7; + int iVar8; + float fVar9; + float fVar10; + float fStack108; + float fStack104; + float fStack100; + float fStack92; + undefined4 uStack88; + float fStack84; + float fStack80; + undefined4 uStack76; + float fStack72; + int iStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + float fStack16; + float fStack12; + int iStack8; + int *piStack4; + + fVar10 = 1.00000000; + iStack68 = -1; + proc_7F03CC20(param_1,&piStack4,&iStack8,&fStack12,&fStack16); + if (iStack8 < 1) { + uVar3 = 0; + } + else { + if ((param_2[1] <= fStack12) || (param_3[1] <= fStack12)) { + if (param_2[1] < fStack16) { + if (param_3[1] < fStack16) { + return 0; + } + fStack56 = *param_2; + } + else { + fStack56 = *param_2; + } + fStack52 = param_2[2]; + fStack64 = *param_3; + fStack60 = param_3[2]; + if (0 < iStack8) { + iVar7 = 0; + uVar3 = extraout_a1; + iVar6 = 0; + do { + iVar8 = iVar6 + 1; + iVar1 = iVar8 % iStack8; + pfVar5 = (float *)(piStack4 + iVar1 * 2); + if (iStack8 == 0) { + trap(0x1c00); + } + if ((iStack8 == -1) && (iVar8 == -0x80000000)) { + trap(0x1800); + } + uVar4 = proc_7F0B0688(*param_2,param_2[2],(longlong)(int)pfVar5,uVar3,*param_3, + param_3[2],*(float *)((int)piStack4 + iVar7), + ((float *)((int)piStack4 + iVar7))[1],*pfVar5,pfVar5[1]); + uVar3 = extraout_a1_00; + fVar9 = fVar10; + iVar2 = iStack68; + if (uVar4 != 0) { + fStack40 = *(float *)((int)piStack4 + iVar7); + fStack36 = ((float *)((int)piStack4 + iVar7))[1]; + fStack48 = (float)piStack4[iVar1 * 2]; + fStack44 = (float)(piStack4 + iVar1 * 2)[1]; + fVar9 = proc_7F0B3200(&fStack56,&fStack64,&fStack40,&fStack48); + uVar3 = extraout_a1_01; + iVar2 = iVar6; + if (fVar10 <= fVar9) { + fVar9 = fVar10; + iVar2 = iStack68; + } + } + iStack68 = iVar2; + fVar10 = fVar9; + iVar7 += 8; + iVar6 = iVar8; + } while (iVar8 < iStack8); + } + if (iStack68 < 1) { + uVar3 = 0; + } + else { + fStack80 = (float)piStack4[iStack68 * 2]; + uStack76 = 0; + fStack72 = (float)(piStack4 + iStack68 * 2)[1]; + fStack92 = (float)piStack4[((iStack68 + 1) % iStack8) * 2]; + uStack88 = 0; + fStack84 = (float)(piStack4 + ((iStack68 + 1) % iStack8) * 2)[1]; + if (iStack8 == 0) { + trap(0x1c00); + } + if ((iStack8 == -1) && (iStack68 + 1 == -0x80000000)) { + trap(0x1800); + } + proc_7F026130(&fStack80,&fStack92,param_2,param_4,&fStack108); + fVar10 = param_4[2] * (fStack100 - param_2[2]) + + (fStack108 - *param_2) * *param_4 + (fStack104 - param_2[1]) * param_4[1]; + if (*param_7 <= fVar10) { + uVar3 = 0; + } + else { + *param_7 = fVar10; + *param_5 = fStack108; + param_5[1] = fStack104; + param_5[2] = fStack100; + fVar10 = *param_4; + param_6[1] = 0.00000000; + *param_6 = -fVar10; + param_6[2] = -param_4[2]; + if ((*param_6 == 0.00000000) && (param_6[2] == 0.00000000)) { + param_6[2] = 1.00000000; + } + else { + guNormalize(param_6,param_6 + 1,param_6 + 2); + } + uVar3 = 1; + bodypartshot = 0; + objinst = 0; + DAT_80075b74 = 0; + dword_80030B0C = param_1; + } + } + } + else { + uVar3 = 0; + } + } + return uVar3; +} + + + +ulonglong proc_7F0417DC(int param_1,float *param_2,float *param_3,float *param_4,float param_5, + float *param_6,float *param_7,float *param_8,float *param_9,float *param_10, + int *param_11,ushort **param_12) + +{ + ushort *objinst; + char *pcVar1; + longlong lVar2; + undefined4 extraout_a3_lo; + float fVar3; + float fVar4; + float extraout_f12; + ushort **in_stack_0000002c; + + objinst = *(ushort **)(param_1 + 0x14); + fVar3 = getinstsize((int)objinst,(uint)param_2,param_3,param_4); + pcVar1 = *(char **)(param_1 + 0x10); + fVar4 = 0.00000000; + if (*(int *)(pcVar1 + 0x1c) == 0) { + fVar4 = param_4[2] * (*(float *)(param_1 + 0x60) - param_2[2]) + + (*(float *)(param_1 + 0x58) - *param_2) * *param_4 + + (*(float *)(param_1 + 0x5c) - param_2[1]) * param_4[1]; + } + if ((-fVar3 <= fVar4) && (fVar4 <= (float)param_6 + fVar3)) { + if ((pcVar1[1] & 2U) == 0) { + getinstsize((int)objinst,(uint)param_7,param_8,extraout_a3_lo); + lVar2 = proc_7F041074(param_2,param_4,(float *)(param_1 + 0x58),extraout_f12); + if (lVar2 != 0) { + *(float **)param_11 = param_6; + lVar2 = proc_7F041400(pcVar1,param_2,param_3,param_4,param_9,param_10, + (float *)param_11); + if (lVar2 != 0) { + *param_12 = objinst; + *in_stack_0000002c = **(ushort ***)(objinst + 4); + return 1; + } + } + } + else { + lVar2 = proc_7F041160(param_1,param_7,param_8,param_9,param_10,(int *)param_12, + in_stack_0000002c); + if (lVar2 != 0) { + fVar3 = param_4[2] * (param_9[2] - param_2[2]) + + (*param_9 - *param_2) * *param_4 + (param_9[1] - param_2[1]) * param_4[1]; + if (fVar3 < 0.00000000) { + return 0; + } + if (fVar3 <= (float)param_6) { + *(float *)param_11 = fVar3; + return 1; + } + return 0; + } + } + } + return 0; +} + + + +undefined8 +proc_7F0419E4(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,float param_5, + float *param_6,float *param_7,float *param_8,float *param_9,float *param_10) + +{ + byte bVar1; + ulonglong uVar2; + longlong lVar3; + int iVar4; + undefined8 uVar5; + float extraout_f12; + float extraout_f12_00; + float param_5_00; + float *in_stack_00000024; + undefined4 uStack36; + ushort *puStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + iVar4 = *(int *)(param_1 + 0x10); + uVar5 = 0; + uVar2 = proc_7F0417DC(param_1,(float *)param_2,(float *)param_3,(float *)param_4,param_5,param_6 + ,param_7,param_8,&fStack12,&fStack24,(int *)&fStack28,&puStack32); + if (uVar2 != 0) { + if (*in_stack_00000024 <= fStack28) { + bVar1 = *(byte *)(iVar4 + 1); + goto LAB_7f041b0c; + } + *in_stack_00000024 = fStack28; + *param_9 = fStack12; + uVar5 = 1; + param_9[1] = fStack8; + param_9[2] = fStack4; + *param_10 = fStack24; + param_10[1] = fStack20; + param_10[2] = fStack16; + dword_80030B0C = *(undefined4 *)(param_1 + 0x10); + bodypartshot = 0xffffffff; + objinst = puStack32; + DAT_80075b74 = uStack36; + } + bVar1 = *(byte *)(iVar4 + 1); +LAB_7f041b0c: + if (((bVar1 & 2) == 0) || (iVar4 = *(int *)(iVar4 + 0x20), iVar4 == 0)) { + return uVar5; + } + bVar1 = *(byte *)(iVar4 + 1); + param_5_00 = extraout_f12; + do { + if ((bVar1 & 2) == 0) { +LAB_7f041b74: + iVar4 = *(int *)(iVar4 + 0x24); + } + else { + lVar3 = proc_7F0419E4(*(int *)(iVar4 + 4),param_2,param_3,param_4,param_5_00,param_6, + param_7,param_8,param_9,param_10); + param_5_00 = extraout_f12_00; + if (lVar3 != 0) { + uVar5 = 1; + goto LAB_7f041b74; + } + iVar4 = *(int *)(iVar4 + 0x24); + } + if (iVar4 == 0) { + return uVar5; + } + bVar1 = *(byte *)(iVar4 + 1); + } while( true ); +} + + + +undefined8 +proc_7F041BB8(int param_1,float *param_2,float *param_3,float param_4,float *param_5,float *param_6, + float *param_7,float *param_8,float *param_9) + +{ + int iVar1; + int iVar2; + float fVar3; + float fVar4; + float *in_stack_00000020; + int *piStack48; + ushort *puStack44; + int iStack40; + int iStack36; + + iVar1 = *(int *)(param_1 + 0x18); + fVar3 = getinstsize(*(int *)(param_1 + 0x1c),(uint)param_2,param_3,param_1); + fVar4 = param_3[2] * (*(float *)(iVar1 + 0x10) - param_2[2]) + + (*(float *)(iVar1 + 8) - *param_2) * *param_3 + + (*(float *)(iVar1 + 0xc) - param_2[1]) * param_3[1]; + if ((-fVar3 <= fVar4) && (fVar4 <= (float)param_5 + fVar3)) { + if ((*(byte *)(iVar1 + 1) & 2) != 0) { + piStack48 = *(int **)(param_1 + 0x20); + iStack36 = proc_7F06C010(&piStack48,param_6,param_7,&iStack40,&puStack44); + if (0 < iStack36) { + iVar2 = proc_7F06C660(iStack40,puStack44,0); + fVar3 = param_7[2] * (*(float *)(iVar2 + 0x38) - param_6[2]) + + (*(float *)(iVar2 + 0x30) - *param_6) * *param_7 + + (*(float *)(iVar2 + 0x34) - param_6[1]) * param_7[1]; + if (*in_stack_00000020 <= fVar3) { + return 0; + } + *in_stack_00000020 = fVar3; + *param_8 = *param_3 * fVar3 + *param_2; + param_8[1] = param_3[1] * fVar3 + param_2[1]; + param_8[2] = param_3[2] * fVar3 + param_2[2]; + fVar3 = *param_3; + param_9[1] = 0.00000000; + *param_9 = -fVar3; + param_9[2] = -param_3[2]; + if ((*param_9 == 0.00000000) && (param_9[2] == 0.00000000)) { + param_9[2] = 1.00000000; + } + else { + guNormalize(param_9,param_9 + 1,param_9 + 2); + } + dword_80030B0C = iVar1; + bodypartshot = iStack36; + objinst = iStack40; + DAT_80075b74 = puStack44; + return 1; + } + } + } + return 0; +} + + + +// WARNING: Instruction at (ram,0x7f0420ac) overlaps instruction at (ram,0x7f0420a8) +// + +longlong proc_7F041E0C(char *param_1,undefined8 param_2,float *param_3,ulonglong param_4, + float *param_5,float *param_6,int *param_7) + +{ + byte bVar1; + byte *pbVar4; + float *pfVar5; + longlong lVar2; + uint uVar6; + ulonglong uVar3; + float *pfVar7; + int iVar8; + byte *position_data_pointer; + short *psVar9; + float *pfVar10; + float fVar11; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float fStack32; + float fStack28; + float fStack24; + int iStack20; + float *apfStack16 [3]; + int iStack4; + + iStack4 = 0; + iStack20 = 0; + pbVar4 = (byte *)get_ptr_for_players_tank(); + pfVar7 = (float *)param_2; + fStack32 = *param_3 - *pfVar7; + fStack28 = param_3[1] - pfVar7[1]; + fStack24 = param_3[2] - pfVar7[2]; + pfVar10 = (float *)sqrtf(fStack24 * fStack24 + fStack32 * fStack32 + fStack28 * fStack28); + if ((float)pfVar10 == 0.00000000) { + lVar2 = 0; + } + else { + fVar11 = 1.00000000 / (float)pfVar10; + fStack32 = fStack32 * fVar11; + fStack28 = fStack28 * fVar11; + fStack24 = fStack24 * fVar11; + fStack48 = *pfVar7; + fStack44 = pfVar7[1]; + fStack40 = pfVar7[2]; + pfVar5 = (float *)get_BONDdata_field_10CC(); + proc_7F058474(pfVar5,&fStack48); + fStack60 = fStack32; + fStack56 = fStack28; + fStack52 = fStack24; + pfVar5 = (float *)get_BONDdata_field_10CC(); + proc_7F0583D8(pfVar5,&fStack60); + if (param_4 != 0) { + apfStack16[0] = pfVar10; + proc_7F03E3FC(param_7); + lVar2 = (longlong)*ptr_list_object_lookup_indices; + iVar8 = (int)*ptr_list_object_lookup_indices; + fVar11 = extraout_f12; + psVar9 = ptr_list_object_lookup_indices; + if (-1 < lVar2) { + do { + iVar8 = (iVar8 * 0x10 + (int)lVar2 * -4 + (int)lVar2) * 4; + position_data_pointer = pos_data_entry + iVar8; + if (position_data_pointer == (byte *)param_1) { + lVar2 = (longlong)psVar9[1]; + } + else { + bVar1 = *position_data_pointer; + uVar6 = (uint)bVar1; + if (((bVar1 == 1) || (bVar1 == 4)) || (bVar1 == 2)) { + iVar8 = *(int *)(pos_data_entry + iVar8 + 4); + if ((*(uint *)(iVar8 + 100) & 8) == 0) { + if (*(int *)(iVar8 + 0xc) << 6 < 0) { + lVar2 = (longlong)psVar9[1]; + } + else { + if (bVar1 == 2) { + if (((param_4 & 2) != 0) || + (uVar3 = proc_7F03D9EC((int)position_data_pointer), + fVar11 = extraout_f12_00, (uVar3 & param_4) != 0)) { +LAB_7f04203c: + if (((position_data_pointer != pbVar4) || + ((*(byte *)(iVar8 + 2) & 0x20) == 0)) && + (lVar2 = proc_7F0419E4(iVar8,param_2, + (longlong)(int)param_3, + (longlong)(int)&fStack32, + fVar11,pfVar10,&fStack48, + &fStack60,param_5,param_6), + fVar11 = extraout_f12_01, lVar2 != 0)) { + iStack20 = 1; + } + goto LAB_7f0421b4; + } + lVar2 = (longlong)psVar9[1]; + } + else { + if ((param_4 & 1) != 0) goto LAB_7f04203c; + lVar2 = (longlong)psVar9[1]; + } + } + } + else { + lVar2 = (longlong)psVar9[1]; + } + } + else { + if ((bVar1 == 3) || + ((bVar1 == 6 && (*(int *)(pos_data_entry + iVar8 + 4) != 0)))) { + iVar8 = *(int *)(pos_data_entry + iVar8 + 4); + if (bVar1 == 6) { + proc_7F09B15C((int)position_data_pointer); + fVar11 = extraout_f12_02; + if (ptr_BONDdata_p1[uVar6]->field_AC == 0) { + lVar2 = (longlong)psVar9[1]; + } + else { + if ((param_4 & 4) != 0) goto LAB_7f04211c; + lVar2 = (longlong)psVar9[1]; + } + } + else { + if (bVar1 != 3) { +LAB_7f04211c: + lVar2 = proc_7F041BB8(iVar8,pfVar7,&fStack32,fVar11,pfVar10, + &fStack48,&fStack60,param_5,param_6); + fVar11 = extraout_f12_03; + if (lVar2 != 0) { + iStack20 = 1; + } + goto LAB_7f0421b4; + } + if ((*(ushort *)(iVar8 + 0x12) & 0x100) == 0) { + if ((param_4 & 8) != 0) goto LAB_7f04211c; + lVar2 = (longlong)psVar9[1]; + } + else { + lVar2 = (longlong)psVar9[1]; + } + } + } + else { + if (bVar1 == 6) { + proc_7F09B15C((int)position_data_pointer); + if (ptr_BONDdata_p1[uVar6]->field_AC == 0) { + lVar2 = (longlong)psVar9[1]; + fVar11 = extraout_f12_04; + } + else { + lVar2 = proc_7F041400((char *)position_data_pointer,pfVar7, + param_3,&fStack32,param_5,param_6, + (float *)apfStack16); + fVar11 = extraout_f12_05; + if (lVar2 != 0) { + iStack20 = 1; + } +LAB_7f0421b4: + lVar2 = (longlong)psVar9[1]; + } + } + else { + lVar2 = (longlong)psVar9[1]; + } + } + } + } + psVar9 = psVar9 + 1; + if (lVar2 < 0) break; + iVar8 = (int)lVar2; + } while( true ); + } + } + if (iStack20 != 0) { + iStack4 = 1; + DAT_80075b78 = fStack32; + DAT_80075b7c = fStack28; + DAT_80075b80 = fStack24; + DAT_80075b88 = fStack60; + DAT_80075b8c = fStack56; + DAT_80075b90 = fStack52; + } + lVar2 = (longlong)iStack4; + } + return lVar2; +} + + + +int handles_projectile_motion + (int param_1,float *param_2,float *param_3,float *param_4,int param_5,int param_6) + +{ + byte bVar1; + longlong lVar2; + byte *pbVar3; + float *pfVar4; + uint uVar5; + int iVar6; + uint *puVar7; + f32 fVar8; + float fVar9; + float fVar10; + float fVar11; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float fVar12; + float fVar13; + byte abStack572 [8]; + uint auStack564 [121]; + int iStack80; + int iStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + int iStack12; + int *piStack8; + char *pcStack4; + + pcStack4 = *(char **)(param_1 + 0x10); + piStack8 = *(int **)(pcStack4 + 0x14); + iStack12 = 1; + dword_80030B0C = 0; + fStack72 = *param_2; + if (((fStack72 == *(float *)(param_1 + 0x58)) && (param_2[1] == *(float *)(param_1 + 0x5c))) && + (param_2[2] == *(float *)(param_1 + 0x60))) { + dword_80030B0C = 0; + return 1; + } + fStack68 = param_2[1]; + fStack64 = param_2[2]; + if ((*(uint *)(param_1 + 100) & 0x80) == 0) { + dword_80030B0C = 0; + return 1; + } + pfVar4 = (float *)(param_1 + 0x58); + if ((**(uint **)(param_1 + 0x6c) & 4) == 0) { + dword_80030B0C = 0; + return 1; + } + iStack80 = 0; + proc_7F0B4AB4(pfVar4,&fStack72,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc),(int)abStack572, + auStack564,&iStack80,0x14); + if (iStack80 < 0x15) { + iVar6 = iStack80 << 2; + } + else { + iStack80 = 0x14; + iVar6 = 0x50; + } + iVar6 = proc_7F0B8E98((uint *)((int)auStack564 + iVar6),100); + puVar7 = auStack564; + iStack80 += iVar6; + auStack564[iStack80] = 0xffffffff; + while (-1 < (int)auStack564[0]) { + iVar6 = proc_7F0B7A78(pfVar4,&fStack72,auStack564[0],&fStack60); + if (iVar6 == 0) { + auStack564[0] = puVar7[1]; + } + else { + fVar8 = proc_7F0B4830(); + fStack60 = fStack60 * (float)fVar8; + fStack56 = fStack56 * (float)fVar8; + fStack52 = fStack52 * (float)fVar8; + fVar10 = *(float *)(param_1 + 0x58); + if (((fStack72 < fVar10) || (fStack72 < fStack60)) || (fStack60 < fVar10)) { + if (fStack72 <= fVar10) { + if (fStack72 <= fStack60) { + if (fStack60 <= fVar10) { + fVar9 = *(float *)(param_1 + 0x5c); + goto LAB_7f042460; + } + auStack564[0] = puVar7[1]; + } + else { + auStack564[0] = puVar7[1]; + } + } + else { + auStack564[0] = puVar7[1]; + } + } + else { + fVar9 = *(float *)(param_1 + 0x5c); +LAB_7f042460: + if (((fStack68 < fVar9) || (fStack68 < fStack56)) || (fStack56 < fVar9)) { + if (fStack68 <= fVar9) { + if (fStack68 <= fStack56) { + if (fStack56 <= fVar9) { + fVar11 = *(float *)(param_1 + 0x60); + goto LAB_7f0424d0; + } + auStack564[0] = puVar7[1]; + } + else { + auStack564[0] = puVar7[1]; + } + } + else { + auStack564[0] = puVar7[1]; + } + } + else { + fVar11 = *(float *)(param_1 + 0x60); +LAB_7f0424d0: + if (((fStack64 < fVar11) || (fStack64 < fStack52)) || (fStack52 < fVar11)) { + if (fStack64 <= fVar11) { + if (fStack64 <= fStack52) { + if (fStack52 <= fVar11) goto LAB_7f042540; + auStack564[0] = puVar7[1]; + } + else { + auStack564[0] = puVar7[1]; + } + } + else { + auStack564[0] = puVar7[1]; + } + } + else { +LAB_7f042540: + if (((fVar10 == fStack60) && (fVar9 == fStack56)) && (fVar11 == fStack52)) { + auStack564[0] = puVar7[1]; + } + else { + iStack12 = 0; + *param_3 = fStack60; + param_3[1] = fStack56; + param_3[2] = fStack52; + *param_4 = fStack48; + param_4[1] = fStack44; + param_4[2] = fStack40; + if (((*param_4 == 0.00000000) && (param_4[1] == 0.00000000)) && + (param_4[2] == 0.00000000)) { + param_4[2] = 1.00000000; + auStack564[0] = puVar7[1]; + } + else { + guNormalize(param_4,param_4 + 1,param_4 + 2); + auStack564[0] = puVar7[1]; + } + } + } + } + } + } + puVar7 = puVar7 + 1; + } + if (iStack12 == 0) { + fVar12 = *param_2 - *(float *)(param_1 + 0x58); + fVar11 = param_2[1] - *(float *)(param_1 + 0x5c); + fVar13 = param_2[2] - *(float *)(param_1 + 0x60); + fVar9 = sqrtf(fVar13 * fVar13 + fVar12 * fVar12 + fVar11 * fVar11); + fVar10 = 0.50000000; + if (flt_80052A58 < fVar9) { + fVar10 = flt_80052A58 / fVar9; + } + *param_3 = *param_3 - fVar10 * fVar12; + fStack72 = *param_3; + param_3[1] = param_3[1] - fVar10 * fVar11; + param_3[2] = param_3[2] - fVar10 * fVar13; + fStack68 = param_3[1]; + fStack64 = param_3[2]; + } + lVar2 = proc_7F041E0C(pcStack4,(longlong)(int)pfVar4,&fStack72,0x1f,param_3,param_4, + (int *)auStack564); + fVar10 = extraout_f12; + fVar9 = extraout_f14; + if (lVar2 == 0) { + if ((iStack12 == 0) && (param_5 != 0)) { + iStack12 = 2; + if (param_6 == 0) { + proc_7F0B4AB4(pfVar4,param_3,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc), + (int)abStack572,auStack564,&iStack80,0x14); + fVar10 = extraout_f12_00; + fVar9 = extraout_f14_00; + } + } + else { + if ((iStack12 == 1) || (param_6 == 0)) { + if (iStack12 != 1) { + proc_7F0B4AB4(pfVar4,&fStack72,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc), + (int)abStack572,auStack564,&iStack80,0x14); + fVar10 = extraout_f12_01; + fVar9 = extraout_f14_01; + } + *(float *)(param_1 + 0x58) = fStack72; + *(float *)(param_1 + 0x60) = fStack64; + *(float *)(pcStack4 + 0xc) = fStack68; + *(float *)(param_1 + 0x5c) = fStack68; + } + } + } + else { + if (param_6 == 0) { + fStack72 = *(float *)(param_1 + 0x58); + fStack64 = *(float *)(param_1 + 0x60); + proc_7F0B4AB4(pfVar4,&fStack72,(byte *)(*(int *)(param_1 + 0x6c) + 0xcc),(int)abStack572 + ,auStack564,&iStack80,0x14); + *(float *)(pcStack4 + 0xc) = fStack68; + *(float *)(param_1 + 0x5c) = fStack68; + fVar10 = extraout_f12_02; + fVar9 = extraout_f14_02; + if (param_5 == 0) { + iStack12 = 0; + } + else { + iStack12 = 2; + } + } + } + if (iStack12 == 1) { + puVar7 = *(uint **)(param_1 + 0x6c); + } + else { + if (param_6 != 0) { + return iStack12; + } + puVar7 = *(uint **)(param_1 + 0x6c); + } + iStack76 = 0; + uVar5 = *puVar7 & 8; + if (uVar5 == 0) { + lVar2 = (longlong)(int)pcStack4; + piStack8 = *(int **)(pcStack4 + 0x14); + iStack76 = 0; + proc_7F0B0BE4((int *)&piStack8,fVar10,fVar9,*(float *)(pcStack4 + 8), + *(float *)(pcStack4 + 0x10)); + if (lVar2 == 1) { + if (piStack8 != NULL) { + *(int **)(pcStack4 + 0x14) = piStack8; + *(undefined4 *)(pcStack4 + 8) = *(undefined4 *)(param_1 + 0x58); + *(undefined4 *)(pcStack4 + 0x10) = *(undefined4 *)(param_1 + 0x60); + uVar5 = **(uint **)(param_1 + 0x6c) & 8; + goto LAB_7f042938; + } + puVar7 = *(uint **)(param_1 + 0x6c); + } + else { + puVar7 = *(uint **)(param_1 + 0x6c); + } + *puVar7 = *puVar7 | 8; + pcStack4[1] = pcStack4[1] | 8; + uVar5 = **(uint **)(param_1 + 0x6c) & 8; + } +LAB_7f042938: + if (uVar5 != 0) { + piStack8 = proc_7F0AF20C(pfVar4,abStack572,NULL); + if (piStack8 != NULL) { + *(int **)(pcStack4 + 0x14) = piStack8; + *(undefined4 *)(pcStack4 + 8) = *(undefined4 *)(param_1 + 0x58); + *(undefined4 *)(pcStack4 + 0x10) = *(undefined4 *)(param_1 + 0x60); + **(uint **)(param_1 + 0x6c) = **(uint **)(param_1 + 0x6c) & 0xfffffff7; + pcStack4[1] = pcStack4[1] & 0xf7; + } + } + pbVar3 = abStack572 + iStack76; + if (abStack572[0] == 0xff) { +LAB_7f0429d8: + iVar6 = *(int *)(param_1 + 0x6c); + } + else { + bVar1 = *pbVar3; + iVar6 = *(int *)(param_1 + 0x6c); + while( true ) { + pbVar3 = pbVar3 + 1; + *(byte *)(iVar6 + iStack76 + 0xcc) = bVar1; + bVar1 = *pbVar3; + iStack76 += 1; + if (bVar1 == 0xff) break; + if (iStack76 == 7) goto LAB_7f0429d8; + iVar6 = *(int *)(param_1 + 0x6c); + } + iVar6 = *(int *)(param_1 + 0x6c); + } + *(undefined *)(iVar6 + iStack76 + 0xcc) = 0xff; + return iStack12; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 proc_7F042A0C(void) + +{ + int iVar1; + int iVar3; + longlong lVar2; + int in_a0_lo; + float *in_a1_lo; + float *in_a2_lo; + float *in_a3_lo; + float in_f0; + float fVar4; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f14; + f32 extraout_f14_00; + float fStack124; + float fStack120; + float fStack116; + float fStack112; + float fStack108; + float fStack104; + float fStack100; + undefined4 uStack96; + undefined4 uStack92; + float fStack88; + float fStack84; + float fStack80; + float afStack76 [2]; + float fStack68; + float afStack64 [2]; + float fStack56; + float fStack52; + float fStack48; + float fStack40; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + undefined4 uStack16; + float fStack12; + u32 auStack8 [2]; + + iVar1 = *(int *)(in_a0_lo + 0x10); + auStack8[0] = *(u32 *)(iVar1 + 0x14); + proc_7F041044(in_a0_lo); + uStack16 = 1; + dword_80030B0C = 0; + fStack40 = *in_a1_lo; + if (((fStack40 != *(float *)(iVar1 + 8)) || (in_a1_lo[1] != *(float *)(iVar1 + 0xc))) || + (in_a1_lo[2] != *(float *)(iVar1 + 0x10))) { + fStack36 = in_a1_lo[1]; + fStack32 = in_a1_lo[2]; + if ((*(uint *)(in_a0_lo + 100) & 0x80) != 0) { + fStack12 = in_f0; + fVar4 = (float)proc_7F0B2970(); + if ((**(uint **)(in_a0_lo + 0x6c) & 0x40) == 0) { + fStack48 = 0.00000000; + fStack52 = 1.00000000; + } + else { + fStack52 = *(float *)(iVar1 + 0xc); + if (fStack36 < fStack52) { + fStack48 = fStack52 - fVar4; + fStack52 = fStack36 - fVar4; + } + else { + fStack48 = fStack36 - fVar4; + fStack52 = fStack52 - fVar4; + } + } + proc_7F0B1CC4(); + iVar3 = proc_7F0B0E24(auStack8,extraout_f12,extraout_f14,*(f32 *)(iVar1 + 8)); + if (((iVar3 == 0) || (auStack8[0] == 0)) || (lVar2 = proc_7F0B18B8(), -1 < lVar2)) { + proc_7F0B28B0(afStack64,afStack76); + in_a3_lo[1] = 0.00000000; + *in_a3_lo = fStack68 - fStack56; + in_a3_lo[2] = afStack64[0] - afStack76[0]; + if ((*in_a3_lo == 0.00000000) && (in_a3_lo[2] == 0.00000000)) { + in_a3_lo[2] = 1.00000000; + fStack28 = *(float *)(iVar1 + 8); + } + else { + guNormalize(in_a3_lo,in_a3_lo + 1,in_a3_lo + 2); + fStack28 = *(float *)(iVar1 + 8); + } + if (((fStack40 == fStack28) && (fStack36 == *(float *)(iVar1 + 0xc))) && + (fStack32 == *(float *)(iVar1 + 0x10))) { + *in_a2_lo = fStack40; + in_a2_lo[1] = fStack36; + in_a2_lo[2] = fStack32; + } + else { + fStack28 = fStack40 - fStack28; + fStack24 = fStack36 - *(float *)(iVar1 + 0xc); + fStack20 = fStack32 - *(float *)(iVar1 + 0x10); + proc_7F02624C((float *)(iVar1 + 8),&fStack28,in_a2_lo); + fStack100 = fStack12; + uStack96 = *(undefined4 *)(iVar1 + 8); + uStack92 = *(undefined4 *)(iVar1 + 0x10); + fStack108 = afStack64[0]; + fStack104 = fStack56; + fStack116 = afStack76[0]; + fStack112 = fStack68; + fStack124 = fStack40 - *(float *)(iVar1 + 8); + fStack120 = fStack32 - *(float *)(iVar1 + 0x10); + fVar4 = proc_7F0B33DC(&fStack100,&fStack108,&fStack116,&fStack124); + auStack8[0] = *(u32 *)(iVar1 + 0x14); + fStack84 = fStack36; + fStack88 = *(float *)(iVar1 + 8) + fStack124 * fVar4 * flt_80052A5C; + fStack80 = *(float *)(iVar1 + 0x10) + fStack120 * fVar4 * flt_80052A5C; + iVar3 = proc_7F0B0E24(auStack8,extraout_f12_00,extraout_f14_00, + *(f32 *)(iVar1 + 8)); + if (((iVar3 != 0) && (auStack8[0] != 0)) && (lVar2 = proc_7F0B18B8(), lVar2 < 0) + ) { + *(float *)(in_a0_lo + 0x58) = fStack88; + *(float *)(in_a0_lo + 0x60) = fStack80; + *(u32 *)(iVar1 + 0x14) = auStack8[0]; + *(float *)(iVar1 + 8) = fStack88; + *(float *)(iVar1 + 0x10) = fStack80; + } + } + *(float *)(iVar1 + 0xc) = fStack84; + *(float *)(in_a0_lo + 0x5c) = fStack84; + uStack16 = 0; + } + else { + *(float *)(in_a0_lo + 0x58) = fStack40; + *(float *)(in_a0_lo + 0x60) = fStack32; + *(u32 *)(iVar1 + 0x14) = auStack8[0]; + *(float *)(iVar1 + 8) = fStack40; + *(float *)(iVar1 + 0x10) = fStack32; + *(float *)(iVar1 + 0xc) = fStack36; + *(float *)(in_a0_lo + 0x5c) = fStack36; + } + } + } + return uStack16; +} + + + +int proc_7F042EB4(int param_1,float *param_2,float *param_3,float *param_4,int param_5,int param_6) + +{ + int iVar1; + + if (((*(uint *)(param_1 + 100) & 0x80) == 0) || ((**(uint **)(param_1 + 0x6c) & 4) == 0)) { + iVar1 = proc_7F042A0C(); + } + else { + iVar1 = handles_projectile_motion(param_1,param_2,param_3,param_4,param_5,param_6); + } + return iVar1; +} + + + +void proc_7F042F18(float *param_1,float param_2,float *param_3,float param_4,float param_5, + float param_6) + +{ + bool bVar1; + float fVar2; + int iVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float in_stack_00000010; + float in_stack_00000014; + + fVar4 = *(float *)param_5; + iVar3 = 0; + if (clock_timer < 1) { +LAB_7f0430f0: + *(float *)param_5 = fVar4; + return; + } + fVar6 = *param_1; + do { + fVar5 = (float)param_3 - fVar6; + if (0.00000000 < fVar5) { + if ((fVar4 <= 0.00000000) || ((fVar4 * fVar4 * 0.50000000) / in_stack_00000010 < fVar5)) + { + if (fVar4 < in_stack_00000014) { + fVar7 = in_stack_00000010; + if (0.00000000 <= fVar4) { + fVar7 = param_6; + } + fVar4 = fVar4 + fVar7; + fVar7 = in_stack_00000014; + if (in_stack_00000014 < fVar4) goto LAB_7f043004; + bVar1 = fVar5 <= fVar4; + } + else { + bVar1 = fVar5 <= fVar4; + } + } + else { + fVar4 = fVar4 - in_stack_00000010; + fVar7 = in_stack_00000010; + if (fVar4 < in_stack_00000010) { +LAB_7f043004: + bVar1 = fVar5 <= fVar7; + fVar4 = fVar7; + } + else { + bVar1 = fVar5 <= fVar4; + } + } + if (bVar1) { + *(float **)param_1 = param_3; + goto LAB_7f0430f0; + } + *param_1 = fVar6 + fVar4; + } + else { + if ((0.00000000 <= fVar4) || ((fVar4 * fVar4 * 0.50000000) / in_stack_00000010 < -fVar5) + ) { + fVar7 = -in_stack_00000014; + if (fVar7 < fVar4) { + fVar2 = in_stack_00000010; + if (fVar4 <= 0.00000000) { + fVar2 = param_6; + } + fVar4 = fVar4 - fVar2; + if (fVar4 < fVar7) goto LAB_7f0430bc; + bVar1 = fVar4 <= fVar5; + } + else { + bVar1 = fVar4 <= fVar5; + } + } + else { + fVar4 = fVar4 + in_stack_00000010; + fVar7 = -in_stack_00000010; + if (fVar7 < fVar4) { +LAB_7f0430bc: + bVar1 = fVar7 <= fVar5; + fVar4 = fVar7; + } + else { + bVar1 = fVar4 <= fVar5; + } + } + if (bVar1) { + *(float **)param_1 = param_3; + goto LAB_7f0430f0; + } + *param_1 = fVar6 + fVar4; + } + iVar3 += 1; + if (clock_timer <= iVar3) goto LAB_7f0430f0; + fVar6 = *param_1; + } while( true ); +} + + + +void proc_7F04310C(float *param_1,float param_2,float *param_3,float param_4,float param_5, + float param_6) + +{ + float fVar1; + float fVar2; + + if ((float)param_3 - *param_1 < flt_80052A60) { + param_3 = (float *)((float)param_3 + flt_80052A64); + } + else { + if (flt_80052A68 <= (float)param_3 - *param_1) { + param_3 = (float *)((float)param_3 - flt_80052A6C); + } + } + proc_7F042F18(param_1,(float)param_3,param_3,param_6,param_5,param_6); + fVar1 = flt_80052A70; + fVar2 = *param_1; + if (fVar2 < 0.00000000) { + *param_1 = fVar2 + flt_80052A70; + fVar2 = *param_1; + } + if (fVar1 <= fVar2) { + *param_1 = fVar2 - fVar1; + } + return; +} + + + +void proc_7F0431E4(int param_1,float *param_2) + +{ + uint uVar1; + uint *puVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fStack204; + float fStack200; + float fStack196; + float fStack188; + float fStack184; + float fStack180; + float fStack172; + float fStack168; + float fStack164; + float fStack140; + float fStack136; + float fStack132; + undefined4 uStack128; + undefined4 uStack124; + undefined4 uStack120; + undefined4 uStack116; + undefined4 uStack112; + float fStack108; + undefined4 uStack104; + float fStack100; + undefined4 uStack96; + undefined4 uStack92; + undefined4 uStack88; + undefined4 uStack84; + undefined4 uStack80; + float fStack76; + float fStack72; + float fStack68; + float afStack12 [3]; + + uVar1 = *(uint *)(param_1 + 100); + *(uint *)(param_1 + 100) = uVar1 & 0xfffeffff; + if ((uVar1 & 0x80) == 0) { + return; + } + puVar2 = *(uint **)(param_1 + 0x6c); + if (*(char *)(param_1 + 3) == '\x01') { + proc_7F03FB70(puVar2); + *(undefined4 *)(param_1 + 0x6c) = 0; + *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) & 0xffffff7f; + return; + } + uVar1 = *puVar2; + puVar2[0x22] = 0; + *puVar2 = uVar1 & 0xfffffffe; + *puVar2 = uVar1 & 0xfffffffa; + proc_7F058860((float *)(param_1 + 0x18),afStack12); + proc_7F058714(afStack12,&fStack76); + proc_7F05B3F4(afStack12,(float *)(puVar2 + 0x1a)); + proc_7F059D38(&fStack76,&fStack140); + proc_7F0580C8(&fStack140,(float *)(param_1 + 0x18),(int)&fStack204); + fVar3 = sqrtf(fStack196 * fStack196 + fStack204 * fStack204 + fStack200 * fStack200); + *(float *)(puVar2 + 0x30) = fVar3; + fVar3 = sqrtf(fStack180 * fStack180 + fStack188 * fStack188 + fStack184 * fStack184); + *(float *)(puVar2 + 0x31) = fVar3; + fVar3 = sqrtf(fStack164 * fStack164 + fStack172 * fStack172 + fStack168 * fStack168); + *(float *)(puVar2 + 0x32) = fVar3; + fStack140 = *(float *)(param_1 + 0x18); + fVar3 = *(float *)(param_1 + 0x20); + if ((fStack140 == 0.00000000) && (fStack132 = 1.00000000, fVar3 == 0.00000000)) { + fStack140 = 0.00000000; + } + else { + fVar4 = sqrtf(fStack140 * fStack140 + fVar3 * fVar3); + fStack140 = fStack140 * (1.00000000 / fVar4); + fStack132 = fVar3 * (1.00000000 / fVar4); + } + fStack136 = 0.00000000; + uStack128 = 0; + if (0.00000000 <= *(float *)(param_1 + 0x2c)) { + fStack108 = -fStack132; + uStack120 = 0x3f800000; + fStack100 = fStack140; + } + else { + fStack100 = -fStack140; + uStack120 = 0xbf800000; + fStack108 = fStack132; + } + uStack96 = 0; + uStack104 = 0; + uStack112 = 0; + uStack116 = 0; + uStack124 = 0; + uStack92 = 0; + uStack88 = 0; + uStack84 = 0; + uStack80 = 0x3f800000; + proc_7F058860(&fStack140,afStack12); + proc_7F05B3F4(afStack12,(float *)(puVar2 + 0x1e)); + proc_7F05BE10((float *)(puVar2 + 0x1a),(float *)(puVar2 + 0x1e)); + puVar2[0x18] = 0; + fVar3 = proc_7F05ACB0(fStack68 * fStack132 + fStack140 * fStack76 + fStack136 * fStack72); + if (((fVar3 <= 0.00000000) || (*(float *)(param_1 + 0x1c) <= 0.00000000)) || + (*(float *)(param_1 + 0x1c) <= param_2[1])) { + fVar4 = *(float *)(param_1 + 0x1c); + if (0.00000000 < fVar3) { + if (fVar4 < 0.00000000) { + if (fVar4 < param_2[1]) { + *(float *)(puVar2 + 0x19) = flt_80052A80 / ((fVar3 * 4.00000000) / flt_80052A7C) + ; + goto LAB_7f0435e0; + } + fVar6 = *(float *)(param_1 + 0x20); + } + else { + fVar6 = *(float *)(param_1 + 0x20); + } + } + else { + fVar6 = *(float *)(param_1 + 0x20); + } + fVar5 = *(float *)(*(int *)(param_1 + 0x14) + 0x14); + fVar4 = proc_7F05ACB0((fVar6 * param_2[2] + + *param_2 * *(float *)(param_1 + 0x18) + param_2[1] * fVar4) / + (fVar5 * fVar5)); + if (fVar3 == 0.00000000) { + puVar2[0x19] = 0x3f800000; + } + else { + *(float *)(puVar2 + 0x19) = (fVar4 / global_timer_delta) / fVar3; + } + } + else { + *(float *)(puVar2 + 0x19) = flt_80052A78 / ((fVar3 * 4.00000000) / flt_80052A74); + } +LAB_7f0435e0: + fVar3 = (float)puVar2[0x19]; + if (fVar3 < 0.00000000) { + *(float *)(puVar2 + 0x19) = -fVar3; + fVar3 = (float)puVar2[0x19]; + } + if (fVar3 < flt_80052A84) { + *(float *)(puVar2 + 0x19) = flt_80052A84; + } + else { + if (flt_80052A88 < fVar3) { + *(float *)(puVar2 + 0x19) = flt_80052A88; + } + } + return; +} + + + +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +void proc_7F043650(int param_1) + +{ + uint uVar1; + uint *puVar2; + ALLink_s *pAVar3; + u32 uVar5; + int iVar6; + ulonglong uVar4; + int iVar7; + int iVar8; + undefined4 uStack8; + u16 uStack4; + + uVar1 = *(uint *)(param_1 + 100); + if ((uVar1 & 0x80) != 0) { + puVar2 = *(uint **)(param_1 + 0x6c); + if ((((*puVar2 & 1) == 0) || (0 < (int)puVar2[0x24])) || ((uVar1 & 0x20) == 0)) { + *(uint *)(param_1 + 100) = uVar1 & 0xffffffdf; + if ((ALLink_s *)puVar2[0x26] == NULL) { + iVar7 = *(int *)(param_1 + 0x6c); + } + else { + uVar4 = sfxGetArg0Unk3F((ALLink_s *)puVar2[0x26]); + if (uVar4 == 0) { + iVar7 = *(int *)(param_1 + 0x6c); + } + else { + sfxDeactivate(*(int *)(*(int *)(param_1 + 0x6c) + 0x98)); + iVar7 = *(int *)(param_1 + 0x6c); + } + } + if ((*(ALLink_s **)(iVar7 + 0x9c) != NULL) && + (uVar4 = sfxGetArg0Unk3F(*(ALLink_s **)(iVar7 + 0x9c)), uVar4 != 0)) { + sfxDeactivate(*(int *)(*(int *)(param_1 + 0x6c) + 0x9c)); + } + } + else { + uStack8 = _Throwing_knife_SFX_1; + uStack4 = Throwing_knife_SFX_3; + iVar7 = *(int *)(*(int *)(param_1 + 0x6c) + 0xa4); + uVar5 = get_random_value(); + if (((*(int *)(*(int *)(param_1 + 0x6c) + 0xa0) < global_timer + -6) && + (pAVar3 = *(ALLink_s **)(*(int *)(param_1 + 0x6c) + iVar7 * 4 + 0x98), + pAVar3 != NULL)) && (uVar4 = sfxGetArg0Unk3F(pAVar3), uVar4 != 0)) { + sfxDeactivate(*(int *)(*(int *)(param_1 + 0x6c) + iVar7 * 4 + 0x98)); + } + iVar8 = iVar7 * 4; + if ((*(int *)(*(int *)(param_1 + 0x6c) + iVar8 + 0x98) == 0) && + (iVar6 = get_controls_locked_flag(), iVar6 == 0)) { + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&uStack8 + (uVar5 % 3) * 2), + (ALSndPlayer *)(*(int *)(param_1 + 0x6c) + iVar8 + 0x98)); + sub_GAME_7F053A10(*(int *)(*(int *)(param_1 + 0x6c) + iVar8 + 0x98), + (float *)(*(int *)(param_1 + 0x10) + 8)); + *(int *)(*(int *)(param_1 + 0x6c) + 0xa0) = global_timer; + *(int *)(*(int *)(param_1 + 0x6c) + 0xa4) = 1 - iVar7; + } + } + } + return; +} + + + +void proc_7F043838(float *param_1,int param_2) + +{ + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + float fVar1; + float fVar2; + float fStack260; + float fStack256; + float fStack252; + float afStack248 [16]; + float afStack184 [16]; + float afStack120 [16]; + float fStack56; + float fStack52; + float fStack36; + float fStack32; + float fStack28; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fVar1 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1 + param_1[1] * param_1[1]); + fVar2 = *param_1 / fVar1; + fStack12 = param_1[1] / fVar1; + fVar1 = param_1[2] / fVar1; + if ((fVar2 == 0.00000000) && (fVar1 == 0.00000000)) { + fStack4 = 0.00000000; + fStack8 = 0.00000000; + fStack20 = 0.00000000; + fStack16 = 1.00000000; + } + else { + fStack36 = fVar1; + fStack32 = fStack12; + fStack28 = fVar2; + fVar1 = sqrtf(fVar2 * fVar2 + fVar1 * fVar1); + fStack8 = -fVar1; + fStack16 = fStack36 / fVar1; + fStack4 = fStack32 * (fStack28 / fVar1); + fStack20 = -(fStack28 / fVar1); + fStack12 = fStack32 * fStack16; + } + fStack52 = convert_angle_using_inverse((f32)fStack16,(f32)fStack20); + proc_7F0585FC(-fStack52,extraout_a0,afStack120); + fStack260 = fStack4; + fStack256 = fStack8; + fStack252 = fStack12; + proc_7F0583D8(afStack120,&fStack260); + fStack56 = convert_angle_using_inverse((f32)fStack260,(f32)fStack256); + proc_7F0585FC(flt_80052A8C + fStack52,extraout_a0_00,afStack184); + proc_7F058570(flt_80052A90 - fStack56,extraout_a0_01,afStack248); + proc_7F0580C8(afStack184,afStack248,param_2); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F0439B8(void) + +{ + int iVar1; + int in_a0_lo; + undefined8 extraout_a0; + undefined4 *in_a1_lo; + undefined4 in_a2_lo; + float *in_a3_lo; + float in_f0; + float afStack64 [16]; + + proc_7F043838(in_a3_lo,(int)afStack64); + matrix_multiply_A1_by_F12(*(float *)(*(int *)(in_a0_lo + 0x14) + 0x14),extraout_a0,afStack64); + proc_7F040754(in_a0_lo,in_a1_lo,afStack64,in_a2_lo); + iVar1 = proc_7F03FFF8(*(int **)(*(int *)(in_a0_lo + 0x14) + 8)); + proc_7F03E864(iVar1); + *(float *)(in_a0_lo + 0x58) = *(float *)(in_a0_lo + 0x58) - in_f0 * *(float *)(in_a0_lo + 0x28); + *(float *)(in_a0_lo + 0x5c) = *(float *)(in_a0_lo + 0x5c) - in_f0 * *(float *)(in_a0_lo + 0x2c); + *(float *)(in_a0_lo + 0x60) = *(float *)(in_a0_lo + 0x60) - in_f0 * *(float *)(in_a0_lo + 0x30); + proc_7F040484(in_a0_lo); + return; +} + + + +undefined8 proc_7F043A6C(int param_1,int param_2,int param_3,ushort *param_4) + +{ + int iVar1; + undefined8 uVar2; + int iVar3; + float *pfVar4; + float *pfVar5; + float afStack196 [16]; + float afStack132 [16]; + float afStack68 [17]; + + if ((*(byte *)(param_2 + 1) & 2) == 0) { + uVar2 = 0; + } + else { + iVar1 = *(int *)(param_1 + 4); + iVar3 = proc_7F03FE98(); + *(int *)(iVar1 + 0x6c) = iVar3; + if (iVar3 == 0) { + uVar2 = 0; + } + else { + pfVar4 = (float *)proc_7F06C660(param_3,param_4,0); + *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) | 0x40; + proc_7F03E18C(param_1); + proc_7F03A538(param_1); + unset_stateflag_0x04_for_posdata(param_1); + *(int *)(*(int *)(iVar1 + 0x14) + 0x18) = param_3; + *(ushort **)(*(int *)(iVar1 + 0x14) + 0x1c) = param_4; + proc_7F03A5A4(param_1,param_2); + proc_7F058020((float (*) [4] [4])(iVar1 + 0x18),(float (*) [4])afStack68); + copies_first_3_floats_from_a0_to_a1_plus_0x30 + ((xyzpoint *)(iVar1 + 0x58),(int)(float (*) [4])afStack68); + pfVar5 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar5,pfVar4,(int)afStack132); + proc_7F059FB8(afStack132,afStack196); + proc_7F05818C(afStack196,(float *)(float (*) [4])afStack68,*(int *)(iVar1 + 0x6c) + 4); + uVar2 = 1; + } + } + return uVar2; +} + + + +void generate_explosion_at_position + (object_header *object,uint param_2,undefined8 param_3,undefined4 param_4) + +{ + bool bVar1; + longlong lVar2; + int iVar3; + float *pfVar4; + int iVar5; + object_standard *poVar6; + float in_f12; + float extraout_f12; + float in_f14; + float extraout_f14; + short sStackX6; + float fStack28; + undefined4 uStack24; + undefined4 uStack20; + int iStack16; + int iStack12; + uint uStack8; + object_standard *poStack4; + + poVar6 = object->ptr_archetype; + uStack8 = (poVar6->runtime_bitflags & 0x60000U) >> 0x11; + iVar3 = object->is_loaded_in_mem; + sStackX6 = (short)param_2; + if (iVar3 == 0) { + bVar1 = (poVar6->flags & 0xe) == 0; + if (bVar1) { + bVar1 = (*(byte *)((int)&object->offset_obj_table + 1) & 8) == 0; + } + proc_7F09C250(0,(float *)&poVar6->runtime_x_pos,*(int *)&object->num_table_entries, + (int)sStackX6,(uint)bVar1,(char)uStack8,(char *)&object[1].num_offset_entries, + (uint)((*(byte *)((int)&object->offset_obj_table + 1) & 8) != 0)); + } + else { + lVar2 = (longlong)*(int *)(iVar3 + 0x1c); + if (lVar2 == 0) { + iStack16 = *(int *)(iVar3 + 0x14); + iVar5 = iVar3; + } + else { + do { + iVar5 = (int)lVar2; + lVar2 = (longlong)*(int *)(iVar5 + 0x1c); + } while (lVar2 != 0); + iStack16 = *(int *)(iVar5 + 0x14); + } + if ((*(byte *)((int)&object->offset_obj_table + 1) & 2) == 0) { + fStack28 = *(float *)(iVar5 + 8); + uStack24 = *(undefined4 *)(iVar5 + 0xc); + uStack20 = *(undefined4 *)(iVar5 + 0x10); + } + else { + iStack12 = iVar5; + poStack4 = poVar6; + iVar3 = getsubmatrix((int)poVar6->runtime_ptr_obj_instance_controller,param_2,iVar3, + param_4); + fStack28 = *(float *)(iVar3 + 0x30); + uStack24 = *(undefined4 *)(iVar3 + 0x34); + uStack20 = *(undefined4 *)(iVar3 + 0x38); + pfVar4 = (float *)get_BONDdata_field_10D4(); + lVar2 = (longlong)(int)pfVar4; + proc_7F058474(pfVar4,&fStack28); + in_f12 = extraout_f12; + in_f14 = extraout_f14; + poVar6 = poStack4; + iVar5 = iStack12; + } + if (((*(byte *)(iVar5 + 1) & 8) == 0) && + (iStack12 = iVar5, poStack4 = poVar6, + proc_7F0B0BE4(&iStack16,in_f12,in_f14,*(float *)(iVar5 + 8),*(float *)(iVar5 + 0x10)), + iVar5 = iStack12, lVar2 != 0)) { + proc_7F09C250(0,&fStack28,iStack16,(int)sStackX6,(uint)((poStack4->flags & 0xe) == 0), + (char)uStack8,(char *)(iStack12 + 0x2c),0); + } + else { + proc_7F09C250(0,&fStack28,iStack16,(int)sStackX6,0,(char)uStack8,(char *)(iVar5 + 0x2c), + 1); + } + } + return; +} + + + +void handle_thrown_explosive_detonation(object_header *param_1) + +{ + char cVar1; + object_standard *poVar2; + object_standard *objdata; + short sVar3; + u32 uVar4; + int iVar5; + uint uVar6; + undefined8 extraout_a2; + longlong lVar7; + u16 uVar8; + float fVar9; + float fVar10; + float fVar11; + + poVar2 = param_1->ptr_archetype; + uVar4 = get_cur_playernum(); + iVar5 = proc_7F09B4D8(uVar4); + if (iVar5 != 0) { + return; + } + cVar1 = *(char *)((int)&poVar2->obj + 1); + if (cVar1 == '\a') { + if (-1 < (int)(poVar2->flags << 3)) { + return; + } + generate_explosion_at_position(param_1,0xc,extraout_a2,poVar2); + poVar2->runtime_bitflags = poVar2->runtime_bitflags | 4; + return; + } + if (cVar1 != '\b') { + return; + } + objdata = param_1->ptr_archetype; + lVar7 = (longlong)(int)objdata; + cVar1 = *(char *)(objdata + 1); + sVar3 = (short)clock_timer; + if (((cVar1 == '\x1a') || (cVar1 == 'W')) && (-1 < (short)objdata[1].obj)) { + objdata[1].obj = objdata[1].obj - sVar3; + if (-1 < (short)objdata[1].obj) { + return; + } + uVar6 = 0xd; + if ((int)poVar2->flags2 < 0) { + uVar6 = 0x11; + } + generate_explosion_at_position(param_1,uVar6,lVar7,poVar2); + poVar2->runtime_bitflags = poVar2->runtime_bitflags | 4; + return; + } + if (cVar1 == 'V') { + if (objdata[1].obj != 0) { + return; + } + uVar6 = 0xd; + if ((int)poVar2->flags2 < 0) { + uVar6 = 0x11; + } + generate_explosion_at_position(param_1,uVar6,lVar7,poVar2); + poVar2->runtime_bitflags = poVar2->runtime_bitflags | 4; + return; + } + if (cVar1 == '\"') { + if (objdata[1].obj != 0) { + return; + } + generate_explosion_at_position(param_1,0x11,lVar7,poVar2); + poVar2->runtime_bitflags = poVar2->runtime_bitflags | 4; + trigger_explosions_around_player(0x78); + set_unset_clock_lock_bits(2,0); + return; + } + if (((cVar1 == '\x1b') || (cVar1 == '!')) && (-1 < (short)objdata[1].obj)) { + objdata[1].obj = objdata[1].obj - sVar3; + if (-1 < (short)objdata[1].obj) { + return; + } + uVar6 = 0xd; + if ((int)poVar2->flags2 < 0) { + uVar6 = 0x11; + } + generate_explosion_at_position(param_1,uVar6,lVar7,poVar2); + objdata[1].obj = 0xffff; + poVar2->runtime_bitflags = poVar2->runtime_bitflags | 4; + return; + } + if (cVar1 == '\x1d') { + if (D_80030AF4 == 0) { + uVar8 = objdata[1].obj; + } + else { + if ((D_80030AF4 & 1 << ((poVar2->runtime_bitflags & 0x60000U) >> 0x11)) == 0) { + uVar8 = objdata[1].obj; + } + else { + objdata[1].obj = 0; + uVar8 = objdata[1].obj; + } + } + if (1 < (short)uVar8) { + objdata[1].obj = uVar8 - (short)clock_timer; + if (1 < (short)objdata[1].obj) { + return; + } + objdata[1].obj = 1; + return; + } + if (uVar8 != 0) { + return; + } + if ((int)poVar2->flags2 < 0) { + generate_explosion_at_position(param_1,0x11,lVar7,poVar2); + } + else { + iVar5 = get_stage_num(); + if (iVar5 == 0x22) { + generate_explosion_at_position(param_1,0x13,(longlong)(int)objdata,poVar2); + } + else { + generate_explosion_at_position(param_1,0xd,(longlong)(int)objdata,poVar2); + } + } + objdata[1].obj = 0xffff; + poVar2->runtime_bitflags = poVar2->runtime_bitflags | 4; + return; + } + if (cVar1 != '\x1c') { + return; + } + uVar8 = objdata[1].obj; + if ((short)uVar8 < 2) { + if (uVar8 != 1) { + uVar8 = objdata[1].obj; + goto LAB_7f04419c; + } + iVar5 = get_curplayer_positiondata(); + fVar9 = *(float *)(iVar5 + 8) - (float)param_1->offset_obj_offset_block; + fVar10 = *(float *)(iVar5 + 0xc) - *(float *)¶m_1->num_offset_entries; + fVar11 = *(float *)(iVar5 + 0x10) - param_1->anonymous_4; + if (flt_80052A94 <= fVar9 * fVar9 + fVar10 * fVar10 + fVar11 * fVar11) { + uVar8 = objdata[1].obj; + goto LAB_7f04419c; + } + objdata[1].obj = 0; + } + else { + objdata[1].obj = uVar8 - sVar3; + if (1 < (short)objdata[1].obj) { + uVar8 = objdata[1].obj; + goto LAB_7f04419c; + } + objdata[1].obj = 1; + add_obj_to_temp_proxmine_table((undefined4 *)objdata); + } + uVar8 = objdata[1].obj; +LAB_7f04419c: + if (uVar8 == 0) { + uVar6 = 0xd; + if ((int)poVar2->flags2 < 0) { + uVar6 = 0x11; + } + generate_explosion_at_position(param_1,uVar6,(longlong)(int)objdata,poVar2); + objdata[1].obj = 0xffff; + poVar2->runtime_bitflags = poVar2->runtime_bitflags | 4; + remove_obj_from_temp_proxmine_table((undefined4 *)objdata); + } + return; +} + + + +void proc_7F044200(int param_1) + +{ + int iVar1; + int param_1_00; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + + param_1_00 = *(int *)(param_1 + 0x20); + while (param_1_00 != 0) { + iVar1 = *(int *)(param_1_00 + 0x24); + proc_7F044200(param_1_00); + proc_7F04C130(param_1_00,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + param_1_00 = iVar1; + } + return; +} + + + +void proc_7F04424C(object_header *param_1) + +{ + object_standard *poVar1; + object_standard *poVar2; + object_standard *param_1_00; + + poVar1 = (object_standard *)param_1->ptr_archetype; + if ((poVar1->runtime_bitflags & 4U) == 0) { + *(byte *)((int)¶m_1->offset_obj_table + 1) = + *(byte *)((int)¶m_1->offset_obj_table + 1) & 0xfd; + handle_thrown_explosive_detonation(param_1); + param_1_00 = (object_standard *)param_1[1].offset_obj_table; + while (param_1_00 != NULL) { + poVar2 = (object_standard *)param_1_00->runtime_MATRIX3; + proc_7F04424C((object_header *)param_1_00); + param_1_00 = poVar2; + } + } + else { + proc_7F040D98(poVar1,1,(ulonglong)(byte)poVar1->hidden2 & 4); + } + return; +} + + + +void proc_7F0442DC(object_header *param_1) + +{ + byte bVar1; + object_standard *poVar2; + int iVar3; + object_standard *poVar4; + object_standard *param_1_00; + float *pfVar5; + float *pfVar6; + + poVar2 = (object_standard *)param_1->ptr_archetype; + iVar3 = poVar2->runtime_ptr_obj_instance_controller; + if ((poVar2->runtime_bitflags & 4U) == 0) { + if (*(ushort **)(iVar3 + 0x1c) == NULL) { + bVar1 = *(byte *)((int)¶m_1->offset_obj_table + 1); + } + else { + if ((poVar2->runtime_bitflags & 0x40U) != 0) { + pfVar5 = (float *)proc_7F06C660(*(int *)(iVar3 + 0x18),*(ushort **)(iVar3 + 0x1c),0) + ; + *(byte *)((int)¶m_1->offset_obj_table + 1) = + *(byte *)((int)¶m_1->offset_obj_table + 1) | 2; + pfVar6 = pfVar5; + proc_7F0BD714((int)*(short *)(*(int *)(iVar3 + 8) + 0xe) << 6); + *(float **)(iVar3 + 0xc) = pfVar6; + proc_7F05818C(pfVar5,(float *)(poVar2->field_6C + 4),(int)pfVar6); + proc_7F06EEA4((longlong)iVar3,**(int **)(iVar3 + 8)); + handle_thrown_explosive_detonation(param_1); + param_1_00 = (object_standard *)param_1[1].offset_obj_table; + while (param_1_00 != NULL) { + poVar4 = (object_standard *)param_1_00->runtime_MATRIX3; + proc_7F0442DC((object_header *)param_1_00); + param_1_00 = poVar4; + } + return; + } + bVar1 = *(byte *)((int)¶m_1->offset_obj_table + 1); + } + *(byte *)((int)¶m_1->offset_obj_table + 1) = bVar1 & 0xfd; + handle_thrown_explosive_detonation(param_1); + param_1_00 = (object_standard *)param_1[1].offset_obj_table; + while (param_1_00 != NULL) { + poVar4 = (object_standard *)param_1_00->runtime_MATRIX3; + proc_7F04424C((object_header *)param_1_00); + param_1_00 = poVar4; + } + } + else { + proc_7F040D98(poVar2,1,(ulonglong)(byte)poVar2->hidden2 & 4); + } + return; +} + + + +undefined8 proc_7F044414(float *param_1,int param_2,float *param_3,uint param_4) + +{ + longlong lVar1; + float *pfVar2; + uint uVar3; + int iVar4; + int iVar5; + float *pfVar6; + int iVar7; + double dVar8; + double dVar9; + double dVar10; + double dVar11; + ulonglong unaff_f22; + float fStack68; + undefined4 uStack64; + float fStack60; + double dStack48; + + if (0 < param_2) { + iVar4 = 0; + pfVar6 = param_1; + do { + iVar7 = iVar4 + 1; + fStack68 = *pfVar6; + dVar10 = (double)(param_1 + (iVar7 % param_2) * 2)[1] - (double)pfVar6[1]; + if (param_2 == 0) { + trap(0x1c00); + } + if ((param_2 == -1) && (iVar7 == -0x80000000)) { + trap(0x1800); + } + iVar5 = iVar7 % param_2 + 1; + dVar11 = (double)fStack68 - (double)param_1[(iVar7 % param_2) * 2]; + if ((dVar10 == (double)(unaff_f22 & 0xffffffff00000000)) && + (dVar11 == (double)(unaff_f22 & 0xffffffff00000000))) { + uStack64 = 0; + fStack60 = pfVar6[1]; + lVar1 = proc_7F03CCD8(&fStack68,param_3,param_4); + if (lVar1 != 0) { + return 0; + } + } + else { + uVar3 = 0; + dVar9 = (double)pfVar6[1] * dVar11 + (double)fStack68 * dVar10; + if (param_2 == 0) { + trap(0x1c00); + } + if ((param_2 == -1) && (iVar5 == -0x80000000)) { + trap(0x1800); + } + while ((iVar5 %= param_2, iVar4 != iVar5 && + (dStack48 = (double)(param_1 + iVar5 * 2)[1] * dVar11 + + (double)param_1[iVar5 * 2] * dVar10, dStack48 == dVar9))) { + iVar5 += 1; + if (param_2 == 0) { + trap(0x1c00); + } + if ((param_2 == -1) && (iVar5 == -0x80000000)) { + trap(0x1800); + } + } + pfVar2 = param_3; + if (0 < (int)param_4) { + do { + dVar8 = (double)pfVar2[1] * dVar11 + (double)*pfVar2 * dVar10; + if (dStack48 == dVar9) { + dStack48 = (dVar9 - dVar8) + dVar9; + } + if (((dVar8 < dVar9) && (dStack48 < dVar9)) || + ((dVar9 < dVar8 && (dVar9 < dStack48)))) break; + uVar3 += 1; + pfVar2 = pfVar2 + 2; + } while (uVar3 != param_4); + } + if (uVar3 == param_4) { + return 1; + } + } + pfVar6 = pfVar6 + 2; + iVar4 = iVar7; + } while (iVar7 != param_2); + } + return 0; +} + + + +undefined8 proc_7F0446B8(float *param_1,uint param_2,float *param_3,uint param_4) + +{ + longlong lVar1; + undefined8 uVar2; + + lVar1 = proc_7F044414(param_1,param_2,param_3,param_4); + if (lVar1 == 0) { + lVar1 = proc_7F044414(param_3,param_4,param_1,param_2); + if (lVar1 == 0) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +undefined8 proc_7F044718(undefined8 param_1,undefined8 param_2,float *param_3,int param_4) + +{ + float fVar1; + ulonglong uVar2; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined4 extraout_a1_hi; + undefined4 extraout_a1_hi_00; + undefined4 extraout_a1_hi_01; + undefined4 extraout_a1_hi_02; + undefined4 uVar3; + undefined4 extraout_a1_lo; + undefined4 extraout_a1_lo_00; + undefined4 extraout_a1_lo_01; + undefined4 extraout_a1_lo_02; + undefined4 uVar4; + float *pfVar5; + float *pfVar6; + int iVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + + fVar1 = (float)param_2; + fVar11 = *(float *)param_1; + fVar12 = ((float *)param_1)[2]; + iVar7 = 0; + pfVar6 = param_3; + if (0 < param_4) { + do { + iVar7 += 1; + pfVar5 = param_3 + (iVar7 % param_4) * 2; + if (param_4 == 0) { + trap(0x1c00); + } + if ((param_4 == -1) && (iVar7 == -0x80000000)) { + trap(0x1800); + } + fVar8 = proc_7F0B16C4(*pfVar6,pfVar6[1],param_1,param_2,*pfVar5,pfVar5[1],fVar11,fVar12) + ; + if (fVar8 < 0.00000000) { + fVar10 = -fVar8; + fVar9 = *pfVar6; + } + else { + fVar9 = *pfVar6; + fVar10 = fVar8; + } + proc_7F0B1794(fVar9,pfVar6[1],extraout_a0,CONCAT44(extraout_a1_hi,extraout_a1_lo),fVar11 + ,fVar12); + fVar9 = fVar8; + proc_7F0B1794(*pfVar5,pfVar5[1],extraout_a0_00, + CONCAT44(extraout_a1_hi_00,extraout_a1_lo_00),fVar11,fVar12); + param_1 = extraout_a0_01; + uVar3 = extraout_a1_hi_01; + uVar4 = extraout_a1_lo_01; + if ((fVar10 < fVar1) && + (((fVar8 < fVar1 || (fVar9 < fVar1)) || + (uVar2 = proc_7F0B17E4(*pfVar6,pfVar6[1],extraout_a0_01, + CONCAT44(extraout_a1_hi_01,extraout_a1_lo_01),*pfVar5, + pfVar5[1],fVar11,fVar12), param_1 = extraout_a0_02, + uVar3 = extraout_a1_hi_02, uVar4 = extraout_a1_lo_02, uVar2 != 0)))) { + return 1; + } + param_2 = CONCAT44(uVar3,uVar4); + pfVar6 = pfVar6 + 2; + } while (iVar7 != param_4); + } + return 0; +} + + + +// WARNING: Instruction at (ram,0x7f044a9c) overlaps instruction at (ram,0x7f044a98) +// +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined8 proc_7F0448A8(void) + +{ + bool bVar1; + byte bVar2; + byte bVar3; + longlong lVar4; + byte *in_a0_lo; + byte *pbVar5; + short *psVar6; + int iVar7; + float in_f0; + float fStack96; + float fStack92; + uint uStack88; + float *apfStack84 [4]; + int iStack68; + float fStack64; + float afStack60 [2]; + uint auStack52 [8]; + float fStack20; + float fStack16; + uint uStack12; + float *apfStack8 [2]; + + proc_7F03CC20((char *)in_a0_lo,(int **)apfStack8,&uStack12,&fStack16,&fStack20); + if (0 < (int)uStack12) { + proc_7F03CB8C((char *)in_a0_lo,auStack52); + proc_7F03E3FC((int *)auStack52); + lVar4 = (longlong)*ptr_list_object_lookup_indices; + iVar7 = (int)*ptr_list_object_lookup_indices; + psVar6 = ptr_list_object_lookup_indices; + if (-1 < lVar4) { + do { + iVar7 = (iVar7 * 0x10 + (int)lVar4 * -4 + (int)lVar4) * 4; + pbVar5 = pos_data_entry + iVar7; + if (pbVar5 == in_a0_lo) { + lVar4 = (longlong)psVar6[1]; + goto LAB_7f044b04; + } + bVar2 = *pbVar5; + if ((bVar2 == 6) || (bVar2 == 3)) { + if ((*(int *)(pos_data_entry + iVar7 + 4) == 0) || + ((*(uint *)(*(int *)(pos_data_entry + iVar7 + 4) + 0x14) & 0x400) == 0)) { + proc_7F03CF88((char *)pbVar5,&iStack68,afStack60,&fStack64); + proc_7F03CFE8(pbVar5); + fStack64 = fStack64 + in_f0; + afStack60[0] = afStack60[0] + in_f0; + if (fStack64 <= fStack16) { + if (fStack20 <= afStack60[0]) { + lVar4 = proc_7F03CCD8((float *)(pos_data_entry + iVar7 + 8), + apfStack8[0],uStack12); + bVar1 = lVar4 == 0; + if ((bVar1) && + (lVar4 = proc_7F044718((longlong) + (int)(pos_data_entry + iVar7 + 8), + (longlong)iStack68,apfStack8[0],uStack12), + lVar4 != 0)) { + bVar1 = false; + } + if (!bVar1) { + if ((*pbVar5 == 3) && (*in_a0_lo == 2)) { + *(ushort *)(*(int *)(pos_data_entry + iVar7 + 4) + 0x12) = + *(ushort *) + (*(int *)(pos_data_entry + iVar7 + 4) + 0x12) | 0x10; + } + return 0; + } + lVar4 = (longlong)psVar6[1]; + goto LAB_7f044b04; + } +LAB_7f044b00: + lVar4 = (longlong)psVar6[1]; + } + else { + lVar4 = (longlong)psVar6[1]; + } + } + else { + lVar4 = (longlong)psVar6[1]; + } + } + else { + if (bVar2 == 1) { +LAB_7f044a68: + bVar3 = *in_a0_lo; + } + else { + if (bVar2 != 4) { + if (bVar2 != 2) { + lVar4 = (longlong)psVar6[1]; + goto LAB_7f044b04; + } + goto LAB_7f044a68; + } + bVar3 = *in_a0_lo; + } + if (bVar3 == 2) { + if (bVar2 == 2) { + lVar4 = (longlong)psVar6[1]; + goto LAB_7f044b04; + } + if ((*(char *)(*(int *)(pos_data_entry + iVar7 + 4) + 3) == '+') || + (*(char *)(*(int *)(pos_data_entry + iVar7 + 4) + 3) == '(')) + goto LAB_7f044b00; + } + proc_7F03CC20((char *)pbVar5,(int **)apfStack84,&uStack88,&fStack92,&fStack96); + if ((int)uStack88 < 1) { + lVar4 = (longlong)psVar6[1]; + } + else { + if (fStack96 <= fStack16) { + if (fStack20 <= fStack92) { + lVar4 = proc_7F0446B8(apfStack84[0],uStack88,apfStack8[0],uStack12); + if (lVar4 != 0) { + return 0; + } + lVar4 = (longlong)psVar6[1]; + } + else { + lVar4 = (longlong)psVar6[1]; + } + } + else { + lVar4 = (longlong)psVar6[1]; + } + } + } +LAB_7f044b04: + psVar6 = psVar6 + 1; + if (lVar4 < 0) { + return 1; + } + iVar7 = (int)lVar4; + } while( true ); + } + } + return 1; +} + + + +int proc_7F044B38(undefined8 param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + longlong lVar4; + undefined8 extraout_a0; + float *pfVar5; + float (*paafVar6) [4] [4]; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + float extraout_f0; + float extraout_f0_00; + float extraout_f0_01; + float fVar7; + float fVar8; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float fVar9; + float fVar10; + float fVar11; + float fStack228; + float fStack224; + float fStack220; + float fStack200; + float fStack196; + float fStack192; + float fStack188; + float fStack184; + float fStack180; + float fStack176; + float fStack172; + float fStack168; + float fStack164; + float fStack160; + float fStack156; + int iStack152; + int iStack148; + float afStack144 [16]; + int iStack80; + float fStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + float fStack32; + float *pfStack28; + float *pfStack24; + float *pfStack20; + float *pfStack16; + int iStack4; + + iVar3 = (int)param_1; + iStack4 = *(int *)(iVar3 + 0x14); + iVar1 = *(int *)(iVar3 + 0x10); + iVar2 = *(int *)(*(int *)(iStack4 + 8) + 8); + lVar4 = (longlong)iVar2; + pfStack16 = *(float **)(*(int *)(iVar2 + 4) + 4); + pfStack20 = *(float **)(*(int *)(iVar2 + 8) + 4); + pfStack24 = *(float **)(*(int *)(iVar2 + 0xc) + 4); + pfStack28 = *(float **)(*(int *)(iVar2 + 0x10) + 4); + iStack80 = 1; + iStack152 = *(int *)(*(int *)(iVar2 + 0x18) + 4); + proc_7F0585FC(*(float *)(iVar3 + 0xa0),param_1,afStack144); + matrix_multiply_A1_by_F12(*(float *)(iStack4 + 0x14),extraout_a0,afStack144); + copies_first_3_floats_from_a0_to_a1_plus_0x30((xyzpoint *)(iVar3 + 0x58),(int)afStack144); + proc_7F058418(afStack144,pfStack16,&fStack40); + proc_7F058418(afStack144,pfStack20,&fStack52); + proc_7F058418(afStack144,pfStack24,&fStack64); + proc_7F058418(afStack144,pfStack28,&fStack76); + iStack148 = *(int *)(iVar1 + 0x14); + proc_7F0B0BE4(&iStack148,extraout_f12,extraout_f14,*(float *)(iVar1 + 8), + *(float *)(iVar1 + 0x10)); + if (lVar4 == 0) { + iStack80 = 0; + fVar9 = extraout_f12_00; + fVar8 = extraout_f14_00; + } + else { + lVar4 = proc_7F0B2970(); + fVar9 = extraout_f12_01; + fVar8 = extraout_f14_01; + fStack36 = extraout_f0; + } + iStack148 = *(int *)(iVar1 + 0x14); + proc_7F0B0BE4(&iStack148,fVar9,fVar8,*(float *)(iVar1 + 8),*(float *)(iVar1 + 0x10)); + if (lVar4 == 0) { + iStack80 = 0; + fVar9 = extraout_f12_02; + fVar8 = extraout_f14_02; + } + else { + lVar4 = proc_7F0B2970(); + fVar9 = extraout_f12_03; + fVar8 = extraout_f14_03; + fStack48 = extraout_f0_00; + } + iStack148 = *(int *)(iVar1 + 0x14); + proc_7F0B0BE4(&iStack148,fVar9,fVar8,*(float *)(iVar1 + 8),*(float *)(iVar1 + 0x10)); + if (lVar4 == 0) { + iStack80 = 0; + fVar9 = extraout_f12_04; + fVar8 = extraout_f14_04; + } + else { + lVar4 = proc_7F0B2970(); + fVar9 = extraout_f12_05; + fVar8 = extraout_f14_05; + fStack60 = extraout_f0_01; + } + iStack148 = *(int *)(iVar1 + 0x14); + proc_7F0B0BE4(&iStack148,fVar9,fVar8,*(float *)(iVar1 + 8),*(float *)(iVar1 + 0x10)); + if (lVar4 == 0) { + iStack80 = 0; + } + else { + fStack72 = (float)proc_7F0B2970(); + } + pfVar5 = (float *)(iVar3 + 0x18); + if (iStack80 == 0) { + proc_7F0585FC(*(float *)(iVar3 + 0xa0),(longlong)(int)pfVar5,pfVar5); + matrix_multiply_A1_by_F12(*(float *)(iStack4 + 0x14),extraout_a0_01,pfVar5); + fVar8 = (float)proc_7F0B2970(); + fVar9 = fVar8; + proc_7F03E864(iStack152); + fVar8 = fVar8 - (pfStack16[1] + fVar9) * *(float *)(iStack4 + 0x14); + *(float *)(iVar1 + 0xc) = fVar8; + *(float *)(iVar3 + 0x5c) = fVar8; + } + else { + fStack164 = fStack52 - fStack40; + fStack160 = fStack48 - fStack36; + fStack156 = fStack44 - fStack32; + guNormalize(&fStack164,&fStack160,&fStack156); + fStack176 = fStack76 - fStack52; + fStack172 = fStack72 - fStack48; + fStack168 = fStack68 - fStack44; + guNormalize(&fStack176,&fStack172,&fStack168); + fStack188 = fStack64 - fStack76; + fStack184 = fStack60 - fStack72; + fStack180 = fStack56 - fStack68; + guNormalize(&fStack188,&fStack184,&fStack180); + fStack200 = fStack40 - fStack64; + fStack196 = fStack36 - fStack60; + fStack192 = fStack32 - fStack56; + guNormalize(&fStack200,&fStack196,&fStack192); + fStack224 = fStack156 * fStack176 - fStack168 * fStack164; + fVar9 = fStack168 * fStack188 - fStack180 * fStack176; + if (((fStack224 < fVar9) || (fStack224 < fStack180 * fStack200 - fStack192 * fStack188)) || + (fStack224 < fStack192 * fStack164 - fStack156 * fStack200)) { + fStack224 = fStack180 * fStack200 - fStack192 * fStack188; + fVar8 = fStack192 * fStack164 - fStack156 * fStack200; + if ((fVar9 < fStack224) || (fVar9 < fVar8)) { + if (fVar8 <= fStack224) { + fStack228 = fStack184 * fStack192 - fStack196 * fStack180; + fStack220 = fStack188 * fStack196 - fStack200 * fStack184; + } + else { + fStack228 = fStack196 * fStack156 - fStack160 * fStack192; + fStack220 = fStack200 * fStack160 - fStack164 * fStack196; + fStack224 = fVar8; + } + } + else { + fStack228 = fStack172 * fStack180 - fStack184 * fStack168; + fStack220 = fStack176 * fStack184 - fStack188 * fStack172; + fStack224 = fVar9; + } + } + else { + fStack228 = fStack160 * fStack168 - fStack172 * fStack156; + fStack220 = fStack164 * fStack172 - fStack176 * fStack160; + } + fVar9 = sinf(*(float *)(iVar3 + 0xa0)); + fVar8 = cosf(*(float *)(iVar3 + 0xa0)); + paafVar6 = (float (*) [4] [4])(iVar3 + 0x18); + guMtxIdentF_unrolled(paafVar6); + *(float *)(iVar3 + 0x28) = fStack228; + fVar11 = *(float *)(iVar3 + 0x28); + *(float *)(iVar3 + 0x2c) = fStack224; + fVar10 = *(float *)(iVar3 + 0x2c); + *(float *)(iVar3 + 0x30) = fStack220; + fVar7 = *(float *)(iVar3 + 0x30); + *(float *)(iVar3 + 0x18) = fVar10 * fVar8 - fVar7 * 0.00000000; + *(float *)(iVar3 + 0x1c) = fVar7 * fVar9 - fVar8 * fVar11; + *(float *)(iVar3 + 0x20) = fVar11 * 0.00000000 - fVar9 * fVar10; + *(float *)(iVar3 + 0x38) = + *(float *)(iVar3 + 0x1c) * fVar7 - fVar10 * *(float *)(iVar3 + 0x20); + *(float *)(iVar3 + 0x3c) = + *(float *)(iVar3 + 0x20) * fVar11 - fVar7 * *(float *)(iVar3 + 0x18); + *(float *)(iVar3 + 0x40) = + *(float *)(iVar3 + 0x18) * fVar10 - fVar11 * *(float *)(iVar3 + 0x1c); + matrix_multiply_A1_by_F12(*(float *)(iStack4 + 0x14),extraout_a0_00,(float *)paafVar6); + proc_7F058418((float *)paafVar6,pfStack16,&fStack52); + proc_7F03E864(iStack152); + fStack48 = (fStack36 - fVar7 * *(float *)(iStack4 + 0x14)) - fStack48; + *(float *)(iVar1 + 0xc) = fStack48; + *(float *)(iVar3 + 0x5c) = fStack48; + } + return iStack80; +} + + + +int proc_7F0451DC(float *param_1,float param_2,float param_3,float param_4) + +{ + int iVar1; + float in_a2_lo; + float in_a3_lo; + float fVar2; + float fVar3; + float fVar4; + + iVar1 = get_curplayer_positiondata(); + fVar2 = *param_1 - *(float *)(iVar1 + 8); + fVar3 = param_1[1] - *(float *)(iVar1 + 0xc); + fVar4 = param_1[2] - *(float *)(iVar1 + 0x10); + fVar2 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3 + fVar4 * fVar4); + if (in_a2_lo < fVar2) { + iVar1 = 0xff; + } + else { + if (fVar2 < param_4) { + iVar1 = (int)(in_a3_lo * 255.00000000); + } + else { + iVar1 = (int)((((fVar2 - param_4) * (1.00000000 - in_a3_lo)) / (in_a2_lo - param_4) + + in_a3_lo) * 255.00000000); + } + } + return iVar1; +} + + +/* +Unable to decompile 'object_interaction' +Cause: Exception while decompiling 7f0452d4: process: timeout + +*/ + + +undefined4 * proc_7F049B58(undefined4 *param_1) + +{ + byte bVar1; + int iVar2; + object_standard *position_data_pointer; + ulonglong uVar3; + undefined4 *puVar4; + u32 uVar5; + + position_data_pointer = get_ptr_obj_pos_list_current_entry(); + if (position_data_pointer == NULL) { + return param_1; + } + bVar1 = *(byte *)position_data_pointer; + do { + uVar3 = (ulonglong)bVar1; + if (bVar1 == 3) { + iVar2 = *(int *)&position_data_pointer->pad; + puVar4 = proc_7F061E18(param_1,(char *)(iVar2 + 0x180),1); + param_1 = proc_7F061E18(puVar4,(char *)(iVar2 + 0x1ac),1); +LAB_7f049c54: + position_data_pointer = (object_standard *)position_data_pointer->runtime_MATRIX3; + } + else { + if (bVar1 == 1) { + if (*(char *)(*(int *)&position_data_pointer->pad + 3) == '\r') { + param_1 = proc_7F061E18(param_1,*(char **)(*(int *)&position_data_pointer->pad + + 0xcc),1); + goto LAB_7f049c54; + } + position_data_pointer = (object_standard *)position_data_pointer->runtime_MATRIX3; + } + else { + if (bVar1 == 6) { + if (*(int *)&position_data_pointer->pad != 0) { + proc_7F09B15C((int)position_data_pointer); + uVar5 = get_cur_playernum(); + if ((longlong)(int)uVar5 != uVar3) { + iVar2 = *(int *)&position_data_pointer->pad; + puVar4 = proc_7F061E18(param_1,(char *)(iVar2 + 0x180),1); + param_1 = proc_7F061E18(puVar4,(char *)(iVar2 + 0x1ac),1); + } + goto LAB_7f049c54; + } + position_data_pointer = + (object_standard *)position_data_pointer->runtime_MATRIX3; + } + else { + position_data_pointer = + (object_standard *)position_data_pointer->runtime_MATRIX3; + } + } + } + if (position_data_pointer == NULL) { + return param_1; + } + bVar1 = *(byte *)position_data_pointer; + } while( true ); +} + + + +void set_ptr_monitor_img_to_obj_ani_slot(undefined4 *slot,undefined4 image) + +{ + *slot = image; + *(undefined2 *)(slot + 1) = 0; + return; +} + + + +void set_ptr_monitor_img_to_obj_ani_slot(undefined4 *param_1,undefined4 param_2) + +{ + undefined4 *image; + + image = &monitor_animation_microcode; + if (true) { + switch(param_2) { + case 1: + image = &DAT_80030c00; + break; + case 2: + image = &DAT_80030e24; + break; + case 3: + image = &dword_80030F44; + break; + case 4: + image = &dword_80031018; + break; + case 5: + image = &dword_80031074; + break; + case 6: + image = &dword_800310F0; + break; + case 7: + image = &dword_8003118C; + break; + case 8: + image = &dword_8003121C; + break; + case 9: + image = &dword_80031248; + break; + case 10: + image = &dword_80031274; + break; + case 0xb: + image = &DAT_800312f4; + break; + case 0xc: + image = &DAT_80031310; + break; + case 0xd: + image = &dword_80031490; + break; + case 0xe: + image = &dword_800314F8; + break; + case 0xf: + image = &DAT_80030ec8; + break; + case 0x10: + image = &DAT_80031360; + break; + case 0x11: + image = &dword_8003156C; + break; + case 0x12: + image = &DAT_800315cc; + break; + case 0x13: + image = &DAT_80031848; + break; + case 0x14: + image = &dword_80031898; + break; + case 0x15: + image = &stru_800318B8; + break; + case 0x16: + image = &stru_8003191C; + break; + case 0x17: + image = &stru_80031950; + break; + case 0x18: + image = &stru_800319D4; + break; + case 0x19: + image = &stru_800319F0; + break; + case 0x1a: + image = &stru_80031A0C; + break; + case 0x1b: + image = &stru_80031A28; + break; + case 0x1c: + image = &stru_80031A44; + break; + case 0x1d: + image = &stru_80031A60; + break; + case 0x1e: + image = &stru_80031A7C; + break; + case 0x1f: + image = &stru_80031A98; + break; + case 0x20: + image = &stru_80031AB4; + break; + case 0x21: + image = &stru_80031AD0; + break; + case 0x22: + image = &stru_80031AEC; + break; + case 0x23: + image = (undefined4 *)&stru_80031B24; + break; + case 0x24: + image = (undefined4 *)&stru_80031B38; + break; + case 0x25: + image = (undefined4 *)&stru_80031B4C; + break; + case 0x26: + image = (undefined4 *)&dword_80031B60; + break; + case 0x27: + image = &stru_80031BB4; + break; + case 0x28: + image = (undefined4 *)&stru_80031BD0; + break; + case 0x29: + image = (undefined4 *)&stru_80031BEC; + break; + case 0x2a: + image = &stru_80031C08; + break; + case 0x2b: + image = (undefined4 *)&stru_80031C80; + break; + case 0x2c: + image = (undefined4 *)&dword_80031D30; + break; + case 0x2d: + image = (undefined4 *)&dword_80031D58; + break; + case 0x2e: + image = (undefined4 *)&dword_80031DA8; + break; + case 0x2f: + image = &dword_80031DF4; + break; + case 0x30: + image = &dword_80031E40; + break; + case 0x31: + image = &dword_80031E78; + break; + case 0x32: + image = &DAT_80031eb0; + break; + case 0x33: + image = &DAT_80031ee8; + } + } + set_ptr_monitor_img_to_obj_ani_slot(param_1,image); + return; +} + + + +void save_img_index_to_obj_ani_slot(int slot,undefined4 index) + +{ + *(undefined4 *)(slot + 8) = index; + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +uint * process_monitor_animation_microcode(void) + +{ + undefined uVar1; + ushort uVar2; + int iVar3; + undefined4 uVar4; + int iVar5; + bool bVar6; + uint *puVar7; + uint *puVar8; + uint *puVar9; + undefined4 *in_v0_lo; + undefined4 *puVar10; + u32 uVar11; + undefined4 *puVar12; + int in_a0_lo; + ushort *in_a1_lo; + int *in_a2_lo; + uint *in_a3_lo; + short sVar13; + sImageTableEntry *imgcall; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + uint *puStackX12; + int in_stack_00000010; + int in_stack_00000014; + + puStackX12 = in_a3_lo; + if ((in_a1_lo != NULL) && (puStackX12 = in_a3_lo, (*in_a1_lo & 0xff) == 0x18)) { + puStackX12 = in_a3_lo; + proc_7F0BD6C4(4); + puVar7 = puStackX12; + puStackX12 = puStackX12 + 2; + iVar3 = *(int *)(in_a1_lo + 2); + puVar10 = (undefined4 *)extract_id_from_object_structure_microcode(in_a0_lo,in_a1_lo); + fVar17 = flt_80052C68; + bVar6 = false; + uVar2 = *(ushort *)(in_a2_lo + 1); + while( true ) { + puVar12 = (undefined4 *)(*in_a2_lo + (uint)uVar2 * 4); + switch(*puVar12) { + case 0: + in_a2_lo[0x10] = 0; + in_a2_lo[0x15] = 0; + *(ushort *)(in_a2_lo + 1) = uVar2 + 1; + break; + case 1: + in_a2_lo[0xf] = 0; + fVar20 = (float)puVar12[2]; + if ((int)puVar12[2] < 0) { + fVar20 = fVar20 + 4294967296.00000000; + } + in_a2_lo[0x11] = in_a2_lo[0xe]; + *(float *)(in_a2_lo + 0x10) = 1.00000000 / fVar20; + iVar5 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 3; + *(float *)(in_a2_lo + 0x12) = (float)in_a2_lo[0xe] + (float)iVar5 * 0.00097656; + break; + case 2: + in_a2_lo[0x14] = 0; + fVar20 = (float)puVar12[2]; + if ((int)puVar12[2] < 0) { + fVar20 = fVar20 + 4294967296.00000000; + } + in_a2_lo[0x16] = in_a2_lo[0x13]; + *(float *)(in_a2_lo + 0x15) = 1.00000000 / fVar20; + iVar5 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 3; + *(float *)(in_a2_lo + 0x17) = (float)in_a2_lo[0x13] + (float)iVar5 * 0.00097656; + break; + case 3: + in_a2_lo[0xf] = 0; + fVar20 = (float)puVar12[2]; + if ((int)puVar12[2] < 0) { + fVar20 = fVar20 + 4294967296.00000000; + } + in_a2_lo[0x11] = in_a2_lo[0xe]; + *(float *)(in_a2_lo + 0x10) = 1.00000000 / fVar20; + iVar5 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 3; + *(float *)(in_a2_lo + 0x12) = (float)iVar5 * 0.00097656; + break; + case 4: + in_a2_lo[0x14] = 0; + fVar20 = (float)puVar12[2]; + if ((int)puVar12[2] < 0) { + fVar20 = fVar20 + 4294967296.00000000; + } + in_a2_lo[0x16] = in_a2_lo[0x13]; + *(float *)(in_a2_lo + 0x15) = 1.00000000 / fVar20; + iVar5 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 3; + *(float *)(in_a2_lo + 0x17) = (float)iVar5 * 0.00097656; + break; + case 5: + in_a2_lo[5] = 0; + fVar20 = (float)puVar12[2]; + if ((int)puVar12[2] < 0) { + fVar20 = fVar20 + 4294967296.00000000; + } + in_a2_lo[7] = in_a2_lo[4]; + *(float *)(in_a2_lo + 6) = 1.00000000 / fVar20; + iVar5 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 3; + *(float *)(in_a2_lo + 8) = (float)iVar5 * 0.00097656; + break; + case 6: + in_a2_lo[10] = 0; + fVar20 = (float)puVar12[2]; + if ((int)puVar12[2] < 0) { + fVar20 = fVar20 + 4294967296.00000000; + } + in_a2_lo[0xc] = in_a2_lo[9]; + *(float *)(in_a2_lo + 0xb) = 1.00000000 / fVar20; + iVar5 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 3; + *(float *)(in_a2_lo + 0xd) = (float)iVar5 * 0.00097656; + break; + case 7: + save_img_index_to_obj_ani_slot((int)in_a2_lo,puVar12[1]); + *(short *)(in_a2_lo + 1) = *(short *)(in_a2_lo + 1) + 2; + break; + case 8: + if (*(short *)((int)in_a2_lo + 6) < 0) { + bVar6 = true; + *(undefined2 *)((int)in_a2_lo + 6) = (short)puVar12[1]; + } + else { + *(short *)((int)in_a2_lo + 6) = + *(short *)((int)in_a2_lo + 6) - (short)clock_timer; + if (*(short *)((int)in_a2_lo + 6) < 0) { + *(short *)(in_a2_lo + 1) = *(short *)(in_a2_lo + 1) + 2; + } + else { + bVar6 = true; + } + } + break; + case 9: + set_ptr_monitor_img_to_obj_ani_slot(in_a2_lo,puVar12[1]); + break; + case 10: + uVar11 = get_random_value(); + if (uVar11 >> 0x10 < (uint)puVar12[2]) { + set_ptr_monitor_img_to_obj_ani_slot(in_a2_lo,puVar12[1]); + } + else { + *(short *)(in_a2_lo + 1) = *(short *)(in_a2_lo + 1) + 3; + } + break; + case 0xb: + *(undefined2 *)(in_a2_lo + 1) = 0; + break; + case 0xc: + bVar6 = true; + break; + case 0xd: + in_a2_lo[0x1b] = 0; + fVar20 = (float)puVar12[2]; + if ((int)puVar12[2] < 0) { + fVar20 = fVar20 + 4294967296.00000000; + } + *(undefined *)((int)in_a2_lo + 0x61) = *(undefined *)(in_a2_lo + 0x18); + *(float *)(in_a2_lo + 0x1c) = 1.00000000 / fVar20; + uVar4 = puVar12[1]; + *(undefined *)(in_a2_lo + 0x19) = *(undefined *)((int)in_a2_lo + 99); + *(undefined *)((int)in_a2_lo + 0x62) = (char)((uint)uVar4 >> 0x18); + uVar4 = puVar12[1]; + *(undefined *)((int)in_a2_lo + 0x67) = *(undefined *)((int)in_a2_lo + 0x66); + *(undefined *)((int)in_a2_lo + 0x65) = (char)((uint)uVar4 >> 0x10); + uVar4 = puVar12[1]; + *(undefined *)((int)in_a2_lo + 0x6a) = *(undefined *)((int)in_a2_lo + 0x69); + *(char *)(in_a2_lo + 0x1a) = (char)((uint)uVar4 >> 8); + uVar4 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 3; + *(undefined *)((int)in_a2_lo + 0x6b) = (char)uVar4; + break; + case 0xe: + iVar5 = puVar12[1]; + *(ushort *)(in_a2_lo + 1) = uVar2 + 2; + *(float *)(in_a2_lo + 3) = ((float)iVar5 * fVar17) / 65536.00000000; + break; + case 0xf: + *(float *)(in_a2_lo + 3) = + (float)in_a2_lo[3] + + (global_timer_delta * (float)puVar12[1] * fVar17) / 65536.00000000; + fVar20 = (float)in_a2_lo[3]; + if (fVar17 <= fVar20) { + *(float *)(in_a2_lo + 3) = fVar20 - fVar17; + fVar20 = (float)in_a2_lo[3]; + } + if (fVar20 < 0.00000000) { + *(float *)(in_a2_lo + 3) = fVar20 + fVar17; + sVar13 = *(short *)(in_a2_lo + 1); + } + else { + sVar13 = *(short *)(in_a2_lo + 1); + } + *(short *)(in_a2_lo + 1) = sVar13 + 2; + } + if (bVar6) break; + uVar2 = *(ushort *)(in_a2_lo + 1); + } + if (0.00000000 < (float)in_a2_lo[6]) { + *(float *)(in_a2_lo + 5) = (float)in_a2_lo[5] + (float)in_a2_lo[6] * global_timer_delta; + if ((float)in_a2_lo[5] < 1.00000000) { + *(float *)(in_a2_lo + 4) = + (float)in_a2_lo[7] + + ((float)in_a2_lo[8] - (float)in_a2_lo[7]) * (float)in_a2_lo[5]; + } + else { + in_a2_lo[5] = 0x3f800000; + in_a2_lo[6] = 0; + in_a2_lo[4] = in_a2_lo[8]; + } + } + if (0.00000000 < (float)in_a2_lo[0xb]) { + *(float *)(in_a2_lo + 10) = + (float)in_a2_lo[10] + (float)in_a2_lo[0xb] * global_timer_delta; + if ((float)in_a2_lo[10] < 1.00000000) { + *(float *)(in_a2_lo + 9) = + (float)in_a2_lo[0xc] + + ((float)in_a2_lo[0xd] - (float)in_a2_lo[0xc]) * (float)in_a2_lo[10]; + } + else { + in_a2_lo[10] = 0x3f800000; + in_a2_lo[0xb] = 0; + in_a2_lo[9] = in_a2_lo[0xd]; + } + fVar17 = (float)in_a2_lo[0x10]; + } + else { + fVar17 = (float)in_a2_lo[0x10]; + } + if (0.00000000 < fVar17) { + *(float *)(in_a2_lo + 0xf) = (float)in_a2_lo[0xf] + fVar17 * global_timer_delta; + if ((float)in_a2_lo[0xf] < 1.00000000) { + *(float *)(in_a2_lo + 0xe) = + (float)in_a2_lo[0x11] + + ((float)in_a2_lo[0x12] - (float)in_a2_lo[0x11]) * (float)in_a2_lo[0xf]; + } + else { + in_a2_lo[0xf] = 0x3f800000; + in_a2_lo[0x10] = 0; + in_a2_lo[0xe] = in_a2_lo[0x12]; + } + fVar17 = (float)in_a2_lo[0x15]; + } + else { + fVar17 = (float)in_a2_lo[0x15]; + } + if (0.00000000 < fVar17) { + *(float *)(in_a2_lo + 0x14) = (float)in_a2_lo[0x14] + fVar17 * global_timer_delta; + if ((float)in_a2_lo[0x14] < 1.00000000) { + *(float *)(in_a2_lo + 0x13) = + (float)in_a2_lo[0x16] + + ((float)in_a2_lo[0x17] - (float)in_a2_lo[0x16]) * (float)in_a2_lo[0x14]; + } + else { + in_a2_lo[0x14] = 0x3f800000; + in_a2_lo[0x15] = 0; + in_a2_lo[0x13] = in_a2_lo[0x17]; + } + fVar17 = (float)in_a2_lo[0x1c]; + } + else { + fVar17 = (float)in_a2_lo[0x1c]; + } + if (0.00000000 < fVar17) { + *(float *)(in_a2_lo + 0x1b) = (float)in_a2_lo[0x1b] + fVar17 * global_timer_delta; + fVar17 = (float)in_a2_lo[0x1b]; + if (fVar17 < 1.00000000) { + *(byte *)(in_a2_lo + 0x18) = + *(byte *)((int)in_a2_lo + 0x61) + + (char)(int)((float)((uint)*(byte *)((int)in_a2_lo + 0x62) - + (uint)*(byte *)((int)in_a2_lo + 0x61)) * fVar17); + *(char *)((int)in_a2_lo + 99) = + *(byte *)(in_a2_lo + 0x19) + + (char)(int)((float)((uint)*(byte *)((int)in_a2_lo + 0x65) - + (uint)*(byte *)(in_a2_lo + 0x19)) * fVar17); + *(char *)((int)in_a2_lo + 0x66) = + *(byte *)((int)in_a2_lo + 0x67) + + (char)(int)((float)((uint)*(byte *)(in_a2_lo + 0x1a) - + (uint)*(byte *)((int)in_a2_lo + 0x67)) * fVar17); + *(char *)((int)in_a2_lo + 0x69) = + *(byte *)((int)in_a2_lo + 0x6a) + + (char)(int)((float)((uint)*(byte *)((int)in_a2_lo + 0x6b) - + (uint)*(byte *)((int)in_a2_lo + 0x6a)) * fVar17); + } + else { + in_a2_lo[0x1b] = 0x3f800000; + in_a2_lo[0x1c] = 0; + *(undefined *)(in_a2_lo + 0x18) = *(undefined *)((int)in_a2_lo + 0x62); + *(undefined *)((int)in_a2_lo + 99) = *(undefined *)((int)in_a2_lo + 0x65); + *(undefined *)((int)in_a2_lo + 0x66) = *(undefined *)(in_a2_lo + 0x1a); + *(undefined *)((int)in_a2_lo + 0x69) = *(undefined *)((int)in_a2_lo + 0x6b); + } + } + *(undefined4 **)puVar10 = in_v0_lo; + *(uint **)(puVar10 + 1) = puStackX12; + puVar10 = *(undefined4 **)(iVar3 + 8); + *in_v0_lo = *puVar10; + in_v0_lo[1] = puVar10[1]; + in_v0_lo[2] = puVar10[2]; + in_v0_lo[3] = puVar10[3]; + iVar5 = *(int *)(iVar3 + 8); + in_v0_lo[4] = *(undefined4 *)(iVar5 + 0x10); + in_v0_lo[5] = *(undefined4 *)(iVar5 + 0x14); + in_v0_lo[6] = *(undefined4 *)(iVar5 + 0x18); + in_v0_lo[7] = *(undefined4 *)(iVar5 + 0x1c); + iVar5 = *(int *)(iVar3 + 8); + in_v0_lo[8] = *(undefined4 *)(iVar5 + 0x20); + in_v0_lo[9] = *(undefined4 *)(iVar5 + 0x24); + in_v0_lo[10] = *(undefined4 *)(iVar5 + 0x28); + in_v0_lo[0xb] = *(undefined4 *)(iVar5 + 0x2c); + iVar3 = *(int *)(iVar3 + 8); + in_v0_lo[0xc] = *(undefined4 *)(iVar3 + 0x30); + in_v0_lo[0xd] = *(undefined4 *)(iVar3 + 0x34); + in_v0_lo[0xe] = *(undefined4 *)(iVar3 + 0x38); + in_v0_lo[0xf] = *(undefined4 *)(iVar3 + 0x3c); + imgcall = (sImageTableEntry *)in_a2_lo[2]; + if (imgcall < (sImageTableEntry *)&UNK_00000064) { + imgcall = monitorimages + (int)imgcall; + } + if (imgcall != NULL) { + fVar18 = (float)in_a2_lo[4] * 0.50000000; + fVar19 = (float)in_a2_lo[9] * 0.50000000; + fVar17 = fVar18; + fVar20 = fVar19; + if ((float)in_a2_lo[3] != 0.00000000) { + fVar14 = cosf((float)in_a2_lo[3]); + fVar16 = flt_80052CB0; + fVar14 = fVar14 * flt_80052CB0; + fVar15 = sinf((float)in_a2_lo[3]); + fVar17 = fVar18 * fVar14; + fVar20 = fVar19 * fVar15 * fVar16; + fVar18 = fVar18 * fVar15 * fVar16; + fVar19 = fVar19 * fVar14; + } + fVar16 = (float)(uint)imgcall->width; + if (false) { + fVar16 = fVar16 + 4294967296.00000000; + } + *(short *)(in_v0_lo + 2) = + (short)(int)(fVar16 * ((float)in_a2_lo[0xe] + fVar17) * 32.00000000); + fVar16 = (float)(uint)imgcall->height; + if (false) { + fVar16 = fVar16 + 4294967296.00000000; + } + *(undefined2 *)((int)in_v0_lo + 10) = + (short)(int)(fVar16 * ((float)in_a2_lo[0x13] + fVar20) * 32.00000000); + fVar16 = (float)(uint)imgcall->width; + if (false) { + fVar16 = fVar16 + 4294967296.00000000; + } + *(short *)(in_v0_lo + 6) = + (short)(int)(fVar16 * ((float)in_a2_lo[0xe] - fVar18) * 32.00000000); + fVar16 = (float)(uint)imgcall->height; + if (false) { + fVar16 = fVar16 + 4294967296.00000000; + } + *(undefined2 *)((int)in_v0_lo + 0x1a) = + (short)(int)(fVar16 * ((float)in_a2_lo[0x13] + fVar19) * 32.00000000); + fVar16 = (float)(uint)imgcall->width; + if (false) { + fVar16 = fVar16 + 4294967296.00000000; + } + *(short *)(in_v0_lo + 10) = + (short)(int)(fVar16 * ((float)in_a2_lo[0xe] - fVar17) * 32.00000000); + fVar17 = (float)(uint)imgcall->height; + if (false) { + fVar17 = fVar17 + 4294967296.00000000; + } + *(undefined2 *)((int)in_v0_lo + 0x2a) = + (short)(int)(fVar17 * ((float)in_a2_lo[0x13] - fVar20) * 32.00000000); + fVar17 = (float)(uint)imgcall->width; + if (false) { + fVar17 = fVar17 + 4294967296.00000000; + } + *(short *)(in_v0_lo + 0xe) = + (short)(int)(fVar17 * ((float)in_a2_lo[0xe] + fVar18) * 32.00000000); + fVar17 = (float)(uint)imgcall->height; + if (false) { + fVar17 = fVar17 + 4294967296.00000000; + } + *(undefined2 *)((int)in_v0_lo + 0x3a) = + (short)(int)(fVar17 * ((float)in_a2_lo[0x13] - fVar19) * 32.00000000); + } + uVar1 = *(undefined *)(in_a2_lo + 0x18); + *(undefined *)(in_v0_lo + 0xf) = uVar1; + *(undefined *)(in_v0_lo + 0xb) = uVar1; + *(undefined *)(in_v0_lo + 7) = uVar1; + *(undefined *)(in_v0_lo + 3) = uVar1; + uVar1 = *(undefined *)((int)in_a2_lo + 99); + *(undefined *)((int)in_v0_lo + 0x3d) = uVar1; + *(undefined *)((int)in_v0_lo + 0x2d) = uVar1; + *(undefined *)((int)in_v0_lo + 0x1d) = uVar1; + *(undefined *)((int)in_v0_lo + 0xd) = uVar1; + uVar1 = *(undefined *)((int)in_a2_lo + 0x66); + *(undefined *)((int)in_v0_lo + 0x3e) = uVar1; + *(undefined *)((int)in_v0_lo + 0x2e) = uVar1; + *(undefined *)((int)in_v0_lo + 0x1e) = uVar1; + *(undefined *)((int)in_v0_lo + 0xe) = uVar1; + uVar1 = *(undefined *)((int)in_a2_lo + 0x69); + *(undefined *)((int)in_v0_lo + 0x3f) = uVar1; + *(undefined *)((int)in_v0_lo + 0x2f) = uVar1; + *(undefined *)((int)in_v0_lo + 0x1f) = uVar1; + *(undefined *)((int)in_v0_lo + 0xf) = uVar1; + if (*(char *)((int)in_a2_lo + 0x69) != -1) { + in_stack_00000014 = 2; + } + puStackX12[1] = 0x2000; + *puStackX12 = 0xb7000000; + puStackX12 = puStackX12 + 2; + append_image_to_DL(&puStackX12,imgcall,in_stack_00000014,(longlong)in_stack_00000010,2); + puVar8 = puStackX12; + *puStackX12 = 0x1020040; + puStackX12 = puStackX12 + 2; + uVar11 = osVirtualToPhysical(*(void **)(in_a0_lo + 0xc)); + puVar9 = puStackX12; + puVar8[1] = uVar11; + *puStackX12 = 0xbc001006; + puStackX12 = puStackX12 + 2; + uVar11 = osVirtualToPhysical(in_v0_lo); + puVar9[1] = uVar11; + puStackX12[1] = 0x4000000; + *puStackX12 = 0x4300040; + puStackX12[3] = 0x2010; + puStackX12[2] = 0xb1000032; + puStackX12[5] = 0; + puStackX12[4] = 0xb8000000; + *puVar7 = 0x6010000; + *(uint **)(puVar7 + 1) = puStackX12 + 6; + puStackX12 = puStackX12 + 6; + } + return puStackX12; +} + + + +void proc_7F04AC20(int param_1,int param_2,uint param_3) + +{ + int param_1_00; + uint uVar1; + uint uVar2; + bool bVar3; + bool bVar4; + int iVar5; + ushort *puVar6; + undefined4 uVar7; + undefined4 *puVar8; + char cVar9; + uint uVar10; + uint extraout_a2_lo; + uint extraout_a2_lo_00; + uint extraout_a2_lo_01; + uint extraout_a2_lo_02; + uint extraout_a2_lo_03; + uint extraout_a2_lo_04; + uint uVar11; + undefined4 *puVar12; + + if ((*(byte *)(param_1 + 1) & 2) != 0) { + param_1_00 = *(int *)(param_1 + 4); + uVar1 = *(uint *)(param_1_00 + 0x14); + bVar3 = (*(uint *)(param_1_00 + 8) & 0x200) != 0; + uVar11 = param_3; + if (bVar3) { + iVar5 = get_BONDdata_field_10E0(); + bVar3 = iVar5 != 0; + uVar11 = extraout_a2_lo; + } + puVar12 = *(undefined4 **)(param_2 + 0xc); + cVar9 = *(char *)(param_1_00 + 3); + if (cVar9 == '\n') { + if ((*(uint *)(param_2 + 8) & 1) != 0) { + puVar12 = (undefined4 *)process_monitor_animation_microcode(); + cVar9 = *(char *)(param_1_00 + 3); + uVar11 = extraout_a2_lo_00; + } + } + else { + if ((cVar9 == '\v') && ((*(uint *)(param_2 + 8) & 1) != 0)) { + process_monitor_animation_microcode(); + process_monitor_animation_microcode(); + process_monitor_animation_microcode(); + puVar12 = (undefined4 *)process_monitor_animation_microcode(); + cVar9 = *(char *)(param_1_00 + 3); + uVar11 = extraout_a2_lo_01; + } + } + if (cVar9 == '\x01') { + iVar5 = *(int *)(param_1 + 4); + puVar12[1] = 0x3000; + *puVar12 = 0xb6000000; + puVar12 = puVar12 + 2; + if ((*(ushort *)(iVar5 + 0x98) & 8) == 0) { + *(undefined4 *)(param_2 + 0x3c) = 3; + } + else { + *(undefined4 *)(param_2 + 0x3c) = 2; + } + if (*(int *)(param_2 + 0x30) == 9) { + *(uint *)(param_2 + 0x34) = *(uint *)(param_2 + 0x34) & 0xffffff00; + } + } + else { + puVar6 = proc_7F04B478(param_1_00); + bVar4 = false; + if (((puVar6 != NULL) && (iVar5 = *(int *)(puVar6 + 2), bVar4 = false, iVar5 != 0)) && + (*(int *)(iVar5 + 8) != + *(int *)(*(int *)(*(int *)(param_1_00 + 0x14) + 0x10) + + (uint)*(ushort *)(iVar5 + 0x1a) * 4))) { + bVar4 = true; + } + iVar5 = do_something_if_object_destroyed(param_1_00); + if ((iVar5 == 0) || (!bVar4)) { + *(undefined4 *)(param_2 + 0x3c) = 3; + uVar11 = extraout_a2_lo_02; + if (*(int *)(param_2 + 0x30) == 9) { + *(uint *)(param_2 + 0x34) = *(uint *)(param_2 + 0x34) & 0xffffff00; + } + } + else { + iVar5 = do_something_if_object_destroyed(param_1_00); + *(undefined4 *)(param_2 + 0x3c) = 1; + uVar11 = extraout_a2_lo_03; + if (*(int *)(param_2 + 0x30) == 9) { + uVar10 = iVar5 * 0x32 + 100; + if ((int)uVar10 < 0x100) { + uVar2 = *(uint *)(param_2 + 0x34); + } + else { + uVar10 = 0xff; + uVar2 = *(uint *)(param_2 + 0x34); + } + *(uint *)(param_2 + 0x34) = uVar2 & 0xffffff00; + *(uint *)(param_2 + 0x34) = uVar2 & 0xffffff00 | uVar10; + } + else { + if (0 < iVar5) { + *(uint *)(param_2 + 0x34) = *(uint *)(param_2 + 0x34) | 0xff00; + } + } + } + } + puVar8 = puVar12; + if (bVar3) { + puVar8 = puVar12 + 2; + *puVar12 = 0x1030040; + uVar7 = get_BONDdata_field_10E0(); + puVar12[1] = uVar7; + uVar11 = extraout_a2_lo_04; + } + *(undefined4 **)(param_2 + 0xc) = puVar8; + subdraw(param_2,uVar1,uVar11,puVar8); + puVar12 = *(undefined4 **)(param_2 + 0xc); + puVar8 = puVar12; + if (*(char *)(param_1_00 + 3) == '\x01') { + puVar8 = puVar12 + 2; + *puVar12 = 0xb6000000; + puVar12[1] = 0x3000; + } + if (((ulonglong)*(byte *)(param_1_00 + 2) & (longlong)(1 << (param_3 & 0x1f))) != 0) { + puVar8 = proc_7F0A1A94(puVar8,param_1,param_3); + } + puVar12 = puVar8; + if (bVar3) { + puVar12 = puVar8 + 2; + *puVar8 = 0x1030040; + uVar7 = get_BONDdata_field_10D8(); + puVar8[1] = uVar7; + } + *(undefined4 **)(param_2 + 0xc) = puVar12; + param_1_00 = *(int *)(param_1 + 0x20); + while (param_1_00 != 0) { + proc_7F04AC20(param_1_00,param_2,param_3); + param_1_00 = *(int *)(param_1_00 + 0x24); + } + if (param_3 != 0) { + if (bVar3) { + proc_7F08BEEC(*(float **)(uVar1 + 0xc),(int)*(short *)(*(int *)(uVar1 + 8) + 0xe)); + } + else { + proc_7F08BD48(*(undefined4 **)(uVar1 + 0xc), + (int)*(short *)(*(int *)(uVar1 + 8) + 0xe)); + } + } + } + return; +} + + + +longlong proc_7F04B150(char *param_1,uint *param_2,uint param_3) + +{ + short sVar1; + int iVar2; + longlong lVar3; + int iVar4; + int iVar5; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + undefined4 *puVar6; + undefined4 *puVar7; + undefined4 *puVar8; + undefined4 *puVar9; + float fVar10; + float extraout_f12; + float extraout_f14; + int iStack132; + int iStack120; + int iStack116; + int iStack112; + uint uStack108; + float fStack104; + float fStack100; + undefined4 uStack88; + uint uStack84; + undefined4 uStack80; + uint *puStack76; + undefined4 uStack40; + int iStack36; + uint uStack32; + int iStack20; + float afStack16 [4]; + + iVar2 = *(int *)(param_1 + 4); + puVar8 = &DAT_80031fd0; + puVar6 = &uStack88; + do { + puVar9 = puVar8 + 3; + puVar7 = puVar6 + 3; + *puVar6 = *puVar8; + puVar6[1] = puVar8[1]; + puVar6[2] = puVar8[2]; + puVar8 = puVar9; + puVar6 = puVar7; + } while (puVar9 != (undefined4 *)0x8003200c); + *puVar7 = uRam8003200c; + iStack132 = 0xff; + lVar3 = if_sky_present_convert_values((int)param_1,afStack16); + iStack20 = (int)lVar3; + if (lVar3 == 0) { + lVar3 = (longlong)(int)param_2; + } + else { + if (*(char *)(iVar2 + 3) != '/') { + fVar10 = getinstsize(*(int *)(iVar2 + 0x14),extraout_a1_lo,extraout_a2_lo,extraout_a3_lo + ); + proc_7F054B80((int)param_1); + sVar1 = *(short *)(param_1 + 2); + if ((0 < sVar1) && (sVar1 < 0x3c)) { + fVar10 = fVar10 * ((60.00000000 - (float)(int)sVar1) / 60.00000000); + } + iStack132 = (int)(fVar10 * 255.00000000); + if (iStack132 < 1) { + return (longlong)(int)param_2; + } + } + if ((iStack132 < 0xff) || (*(int *)(iVar2 + 0xc) << 0xf < 0)) { + if (param_3 == 0) { + return (longlong)(int)param_2; + } + uStack80 = 3; + } + else { + uStack80 = 2; + if (param_3 == 0) { + uStack80 = 1; + } + } + lVar3 = proc_7F054A64(param_1,&fStack104); + if ((lVar3 < 1) || (*(int *)(iVar2 + 0xc) << 5 < 0)) { + puStack76 = proc_7F0B4FB4(param_2); + } + else { + puStack76 = proc_7F0B4FF4(param_2,extraout_f12,extraout_f14,fStack104,fStack100); + } + uStack84 = (uint)((*(uint *)(iVar2 + 0xc) & 0x10000) == 0); + if (iStack132 < 0xff) { + uStack40 = 5; + iStack36 = iStack132; + } + else { + uStack40 = 9; + if (*(char *)(iVar2 + 3) == '/') { + iStack36 = *(int *)(iVar2 + 0x88) << 8; + } + else { + if (*(char *)(iVar2 + 3) == '\x01') { + if ((*(ushort *)(iVar2 + 0x98) & 2) == 0) { + iStack36 = 0; + } + else { + iStack36 = (int)*(short *)(iVar2 + 0xbe) << 8; + } + } + else { + iStack36 = 0; + } + } + } + iVar4 = proc_7F03FF60(iVar2); + iVar5 = iVar4 * -0x15 + 0xff; + if (iVar5 < 0) { + iVar5 = 0; + } + iStack120 = (int)((uint)*(byte *)(iVar2 + 0x78) * iVar5) >> 8; + iStack116 = (int)((uint)*(byte *)(iVar2 + 0x79) * iVar5) >> 8; + iStack112 = (int)((uint)*(byte *)(iVar2 + 0x7a) * iVar5) >> 8; + uStack108 = (uint)*(byte *)(iVar2 + 0x7b) + iVar4 * 0xf; + if (0xff < (int)uStack108) { + uStack108 = 0xff; + } + proc_7F040384(&iStack120,(longlong)iStack20,afStack16); + uStack32 = uStack108 | iStack120 << 0x18 | iStack116 << 0x10 | iStack112 << 8; + proc_7F04AC20((int)param_1,(int)&uStack88,param_3); + lVar3 = (longlong)(int)puStack76; + } + return lVar3; +} + + + +ushort * proc_7F04B478(int param_1) + +{ + ushort uVar1; + ushort *puVar2; + ushort *puVar3; + + puVar2 = **(ushort ***)(*(int *)(param_1 + 0x14) + 8); + if (puVar2 != NULL) { + uVar1 = *puVar2; + while( true ) { + uVar1 &= 0xff; + if (uVar1 == 8) { + proc_7F06E970(*(int *)(param_1 + 0x14),puVar2); + puVar3 = *(ushort **)(puVar2 + 10); + } + else { + if (uVar1 == 0x12) { + process_12_handle_switch(*(int *)(param_1 + 0x14),puVar2); + puVar3 = *(ushort **)(puVar2 + 10); + } + else { + if (uVar1 == 0x17) { + process_17_pointer_to_head(*(int *)(param_1 + 0x14),puVar2); + puVar3 = *(ushort **)(puVar2 + 10); + } + else { + if (uVar1 == 0x18) { + return puVar2; + } + puVar3 = *(ushort **)(puVar2 + 10); + } + } + } + if ((puVar3 == NULL) && (puVar3 = puVar2, puVar2 != NULL)) { + puVar3 = *(ushort **)(puVar2 + 6); + while ((puVar3 == NULL && + (puVar2 = *(ushort **)(puVar2 + 4), puVar3 = puVar2, puVar2 != NULL))) { + puVar3 = *(ushort **)(puVar2 + 6); + } + } + if (puVar3 == NULL) break; + uVar1 = *puVar3; + puVar2 = puVar3; + } + } + return NULL; +} + + + +undefined8 proc_7F04B590(int param_1,int param_2) + +{ + int *piVar1; + + if ((*(item_related **)(param_1 + 4) == &prop_console_one_screen_related) && + (param_2 == **(int **)(param_1 + 8))) { + return 0; + } + if ((*(item_related **)(param_1 + 4) == &prop_console_four_screen_related) && + ((((piVar1 = *(int **)(param_1 + 8), param_2 == *piVar1 || (param_2 == piVar1[1])) || + (param_2 == piVar1[2])) || (param_2 == piVar1[3])))) { + return 0; + } + return 1; +} + + + +void proc_7F04B610(int param_1,int param_2) + +{ + bool bVar1; + short sVar2; + ushort uVar3; + int iVar4; + bool bVar5; + ushort *puVar8; + longlong lVar6; + u32 uVar9; + int iVar10; + undefined4 *puVar11; + longlong lVar7; + int iVar12; + short *psVar13; + uint uVar14; + undefined4 *puVar15; + undefined4 *puVar16; + uint uVar17; + int iVar18; + int iVar19; + uint *puVar20; + longlong lVar21; + longlong lVar22; + float fVar23; + float fVar24; + float fVar25; + int iStack88; + float fStack48; + u32 uStack32; + + iVar18 = *(int *)(param_1 + 0x14); + lVar21 = 99999; + iVar12 = -99999; + puVar8 = proc_7F04B478(param_1); + if (((puVar8 != NULL) && (iVar4 = *(int *)(puVar8 + 2), iVar4 != 0)) && + (lVar6 = proc_7F04B590(*(int *)(*(int *)(param_1 + 0x14) + 8),(int)puVar8), lVar6 != 0)) { + puVar20 = (uint *)(*(int *)(iVar18 + 0x10) + (uint)*(ushort *)(iVar4 + 0x1a) * 4); + uVar9 = get_random_value(); + if ((uVar9 & 1) == 0) { + uVar3 = *(ushort *) + ((int)object_explosion_details + + (int)*(short *)(param_1 + 4) * 0xe + param_2 * 2 + 8); + } + else { + uVar3 = *(ushort *) + ((int)object_explosion_details + + (int)*(short *)(param_1 + 4) * 0xe + param_2 * 2 + 2); + } + uStack32 = (u32)uVar3; + iStack88 = param_2 * 2; + iVar10 = get_debug_explosioninfo_flag(); + if ((iVar10 != 0) || (uVar3 == 0)) { + get_debug_explosioninfo_flag(); + uStack32 = get_random_value(); + iVar10 = get_debug_explosioninfo_flag(); + if (iVar10 != 0) { + uStack32 &= 0xffff; + } + } + proc_7F0A0D90(*(int *)(param_1 + 0x10)); + bVar1 = *(short *)(param_1 + 4) == 0x4c; + iVar10 = do_something_if_object_destroyed(param_1); + puVar11 = (undefined4 *) + proc_7F09BE4C((longlong)*(short *)(iVar4 + 0xc),0xb0b,*(int *)(iVar18 + 8),iVar10) + ; + if (puVar11 == NULL) { + if (*(uint *)(iVar4 + 8) != *puVar20) { + proc_7F09C044(*puVar20); + *puVar20 = *(uint *)(iVar4 + 8); + *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) | 4; + } + fVar23 = flt_80052CB4; + fVar24 = *(float *)(param_1 + 0x2c) * flt_80052CB4; + fVar25 = *(float *)(param_1 + 0x30) * flt_80052CB4; + *(float *)(param_1 + 0x28) = *(float *)(param_1 + 0x28) * flt_80052CB4; + *(float *)(param_1 + 0x2c) = fVar24; + *(float *)(param_1 + 0x30) = fVar25; + if (!bVar1) { + fVar24 = *(float *)(*(int *)(param_1 + 0x14) + 0x14); + iVar18 = proc_7F03FFF8(*(int **)(*(int *)(param_1 + 0x14) + 8)); + proc_7F03E864(iVar18); + *(float *)(*(int *)(param_1 + 0x10) + 0xc) = + *(float *)(*(int *)(param_1 + 0x10) + 0xc) + fVar24 * fVar23 * flt_80052CB8; + proc_7F03E864(iVar18); + *(float *)(param_1 + 0x5c) = + *(float *)(param_1 + 0x5c) + fVar24 * fVar23 * flt_80052CBC; + } + } + else { + uVar17 = *puVar20; + if (*(uint *)(iVar4 + 8) == uVar17) { + lVar6 = 0; + iVar18 = 0; + if (0 < *(short *)(iVar4 + 0xc)) { + iVar10 = *(int *)(iVar4 + 8); + puVar15 = puVar11; + while( true ) { + lVar6 = (longlong)((int)lVar6 + 1); + puVar16 = (undefined4 *)(iVar10 + iVar18); + iVar18 += 0x10; + *puVar15 = *puVar16; + puVar15[1] = puVar16[1]; + puVar15[2] = puVar16[2]; + puVar15[3] = puVar16[3]; + if (*(short *)(iVar4 + 0xc) <= lVar6) break; + iVar10 = *(int *)(iVar4 + 8); + puVar15 = puVar15 + 4; + } + } + } + else { + lVar6 = 0; + iVar18 = 0; + if (0 < *(short *)(iVar4 + 0xc)) { + uVar17 = *puVar20; + puVar15 = puVar11; + while( true ) { + lVar6 = (longlong)((int)lVar6 + 1); + puVar16 = (undefined4 *)(uVar17 + iVar18); + iVar18 += 0x10; + *puVar15 = *puVar16; + puVar15[1] = puVar16[1]; + puVar15[2] = puVar16[2]; + puVar15[3] = puVar16[3]; + if (*(short *)(iVar4 + 0xc) <= lVar6) break; + uVar17 = *puVar20; + puVar15 = puVar15 + 4; + } + uVar17 = *puVar20; + } + proc_7F09C044(uVar17); + } + *(undefined4 **)puVar20 = puVar11; + sVar2 = *(short *)(param_1 + 4); + iVar18 = 0; + if (((sVar2 == 0x26) || (sVar2 == 0x27)) || (sVar2 == 0x55)) { + bVar5 = false; + } + else { + bVar5 = true; + } + sVar2 = *(short *)(iVar4 + 0xc); + if (0 < sVar2) { + uVar17 = *puVar20; + lVar6 = -99999; + lVar22 = lVar21; + do { + lVar7 = (longlong)*(short *)(uVar17 + 2); + iVar18 += 0x10; + lVar21 = lVar7; + if (lVar22 <= lVar7) { + lVar21 = lVar22; + } + if (lVar7 <= lVar6) { + lVar7 = lVar6; + } + iVar12 = (int)lVar7; + uVar17 += 0x10; + lVar6 = lVar7; + lVar22 = lVar21; + } while (iVar18 < (int)sVar2 << 4); + } + lVar6 = 0; + iVar10 = (int)lVar21; + iVar18 = iVar10 + iVar12 >> 1; + if ((iStack88 == 6) && (0x28 < iVar18 - iVar10)) { + iVar18 = iVar10 + 0x28; + } + iVar12 -= iVar10; + if (iVar12 < 0x3d) { + fStack48 = 1.00000000; + } + else { + if (iStack88 < 6) { + fStack48 = flt_80052CC0; + } + else { + fStack48 = (float)(iVar12 + -0x3c) / (float)iVar12; + } + } + if (0 < sVar2) { + iVar19 = 0; + iVar12 = *(int *)(iVar4 + 8); + do { + psVar13 = (short *)(iVar12 + iVar19); + proc_7F09B788((longlong) + (int)((int)psVar13[2] + (int)*psVar13 + (int)psVar13[1] + uStack32 + )); + uVar17 = 0; + if (bVar5) { + if (0.00000000 <= *(float *)(param_1 + 0x2c)) { + if ((longlong)*(short *)(*puVar20 + iVar19 + 2) < (longlong)iVar18) { + if (bVar1) { + uVar17 = 0x5a; + } + else { + uVar17 = 0x14; + } + } + else { + if (bVar1) { + uVar17 = 0x14; + } + else { + uVar17 = 0x5a; + } + } + } + else { + if ((longlong)iVar18 < (longlong)*(short *)(*puVar20 + iVar19 + 2)) { + if (bVar1) { + uVar17 = 0x5a; + } + else { + uVar17 = 0x14; + } + } + else { + if (bVar1) { + uVar17 = 0x14; + } + else { + uVar17 = 0x5a; + } + } + } + } + uVar14 = proc_7F09B740(); + if (uVar14 % 100 < uVar17) { + *(undefined *)(*puVar20 + iVar19 + 0xc) = 0; + *(undefined *)(*puVar20 + iVar19 + 0xd) = 0; + *(undefined *)(*puVar20 + iVar19 + 0xe) = 0; + *(undefined *)(*puVar20 + iVar19 + 0xf) = 0xff; +LAB_7f04bbb0: + uVar17 = *puVar20; + } + else { + if (iStack88 == 2) { + *(undefined *)(*puVar20 + iVar19 + 0xf) = 0; + goto LAB_7f04bbb0; + } + uVar17 = *puVar20; + } + *(undefined2 *)(uVar17 + iVar19 + 2) = + (short)(int)((float)(*(short *)(uVar17 + iVar19 + 2) - iVar10) * fStack48 + + (float)iVar10); + uVar17 = proc_7F09B740(); + if (false) { + trap(0x1c00); + } + *(short *)(*puVar20 + iVar19) = + *(short *)(*puVar20 + iVar19) + (short)(uVar17 % 0x50) + -0x28; + uVar17 = proc_7F09B740(); + if (false) { + trap(0x1c00); + } + *(short *)(*puVar20 + iVar19 + 2) = + *(short *)(*puVar20 + iVar19 + 2) + (short)(uVar17 % 0x50) + -0x28; + uVar17 = proc_7F09B740(); + if (false) { + trap(0x1c00); + } + *(short *)(*puVar20 + iVar19 + 4) = + *(short *)(*puVar20 + iVar19 + 4) + (short)(uVar17 % 0x50) + -0x28; + if (*(short *)(*puVar20 + iVar19 + 2) < lVar21) { + *(undefined2 *)(*puVar20 + iVar19 + 2) = (short)lVar21; + sVar2 = *(short *)(iVar4 + 0xc); + } + else { + sVar2 = *(short *)(iVar4 + 0xc); + } + lVar6 = (longlong)((int)lVar6 + 1); + iVar19 += 0x10; + if (sVar2 <= lVar6) { + return; + } + iVar12 = *(int *)(iVar4 + 8); + } while( true ); + } + } + } + return; +} + + + +void proc_7F04BCDC(int param_1,float *param_2) + +{ + u32 uVar1; + float *pfVar2; + uint uVar3; + uint *puVar4; + float fVar5; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fStack24 = DAT_80032010; + fStack20 = (float)DAT_80032014; + fStack16 = (float)DAT_80032018; + puVar4 = NULL; + proc_7F03FDA8(*(int *)(param_1 + 0x10)); + if ((*(uint *)(param_1 + 100) & 0x40) == 0) { + if ((*(uint *)(param_1 + 100) & 0x80) != 0) { + puVar4 = *(uint **)(param_1 + 0x6c); + } + } + else { + puVar4 = *(uint **)(*(int *)(param_1 + 0x6c) + 0x44); + } + if (puVar4 != NULL) { + uVar1 = get_random_value(); + fVar5 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + *(float *)(puVar4 + 1) = fVar5 * 0.00000000 * flt_80052CC4 * 4.00000000 - flt_80052CC8; + uVar1 = get_random_value(); + fVar5 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fVar5 = fVar5 * 0.00000000 * flt_80052CCC; + *(float *)(puVar4 + 2) = fVar5 + fVar5 + flt_80052CD0; + uVar1 = get_random_value(); + fVar5 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + *(float *)(puVar4 + 3) = fVar5 * 0.00000000 * flt_80052CD4 * 4.00000000 - flt_80052CD8; + uVar1 = get_random_value(); + fVar5 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fStack24 = fVar5 * 0.00000000 * flt_80052CDC * 0.01562500 - flt_80052CE0; + uVar1 = get_random_value(); + fVar5 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fStack20 = fVar5 * 0.00000000 * flt_80052CE4 * 0.01562500 - flt_80052CE8; + uVar1 = get_random_value(); + fVar5 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fStack16 = fVar5 * 0.00000000 * flt_80052CEC * 0.01562500 - flt_80052CF0; + proc_7F058714(&fStack24,(float *)(puVar4 + 8)); + *puVar4 = *puVar4 | 1; + fStack12 = *param_2; + fStack8 = param_2[1]; + fStack4 = param_2[2]; + pfVar2 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar2,&fStack12); + fVar5 = flt_80052CF4; + *(float *)(puVar4 + 1) = (float)puVar4[1] + flt_80052CF4 * fStack12; + *(float *)(puVar4 + 3) = (float)puVar4[3] + fVar5 * fStack4; + uVar3 = get_curplayer_positiondata(); + puVar4[0x22] = uVar3; + puVar4[0x24] = 1; + } + return; +} + + + +void proc_7F04BFD0(int param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + + if (*(int *)(param_1 + 0x1c) != 0) { + iVar1 = *(int *)(param_1 + 4); + proc_7F03FDA8(param_1); + if (((*(uint *)(iVar1 + 100) & 0x40) == 0) || + (iVar2 = *(int *)(*(int *)(iVar1 + 0x6c) + 0x44), iVar2 == 0)) { + if ((*(uint *)(iVar1 + 100) & 0x80) != 0) { + *(undefined4 *)(*(int *)(iVar1 + 0x6c) + 0xb8) = param_2; + } + } + else { + *(undefined4 *)(iVar2 + 0xb8) = param_2; + } + } + return; +} + + + +void proc_7F04C044(int param_1) + +{ + char *pcVar1; + int iVar2; + int iVar3; + + pcVar1 = *(char **)(param_1 + 0x1c); + if (pcVar1 != NULL) { + iVar2 = *(int *)(param_1 + 4); + iVar3 = *(int *)(iVar2 + 0x14); + proc_7F03A5D0(param_1); + *(undefined4 *)(iVar3 + 0x1c) = 0; + *(uint *)(iVar2 + 100) = *(uint *)(iVar2 + 100) & 0xfff7ffff; + if (((*pcVar1 == '\x03') || (*pcVar1 == '\x06')) && + (iVar2 = *(int *)(pcVar1 + 4), iVar2 != 0)) { + if (param_1 == *(int *)(iVar2 + 0x1d8)) { + *(undefined4 *)(iVar2 + 0x1d8) = 0; + } + else { + if (param_1 == *(int *)(iVar2 + 0x160)) { + proc_7F02D118(iVar2,0,0); + *(undefined4 *)(iVar2 + 0x160) = 0; + } + else { + if (param_1 == *(int *)(iVar2 + 0x164)) { + proc_7F02D118(iVar2,1,0); + *(undefined4 *)(iVar2 + 0x164) = 0; + } + } + } + } + } + return; +} + + + +undefined8 proc_7F04C130(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + uint *puVar2; + char *pcVar3; + undefined8 uVar4; + u32 uVar6; + float *pfVar7; + float *pfVar8; + int iVar9; + longlong lVar5; + undefined8 extraout_a0; + uint extraout_a1_lo; + uint extraout_a1_lo_00; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + uint uVar10; + char *pcVar11; + float in_f0; + float __x; + float fVar12; + f32 extraout_f12; + f32 extraout_f14; + float fVar13; + float fStack152; + float fStack148; + float fStack144; + float fStack140; + float fStack136; + float fStack132; + float fStack128; + float fStack116; + float fStack112; + float fStack108; + float fStack104; + u32 auStack88 [2]; + float afStack80 [12]; + float fStack32; + float fStack28; + float fStack24; + int iStack16; + char *pcStack4; + + pcStack4 = *(char **)(param_1 + 0x1c); + iVar1 = *(int *)(param_1 + 4); + if ((*(uint *)(iVar1 + 100) & 0x40) != 0) { + uVar10 = (*(uint **)(iVar1 + 0x6c))[0x11]; + if (uVar10 != 0) { + proc_7F03FE88(*(uint **)(iVar1 + 0x6c)); + *(uint *)(iVar1 + 0x6c) = uVar10; + uVar10 = *(uint *)(iVar1 + 100) & 0xffffffbf; + *(uint *)(iVar1 + 100) = uVar10; + *(uint *)(iVar1 + 100) = uVar10 | 0x80; + param_2 = extraout_a1_lo; + param_3 = extraout_a2_lo; + param_4 = extraout_a3_lo; + } + } + pcVar11 = pcStack4; + uVar4 = 0; + if ((pcStack4 != NULL) && ((*(uint *)(iVar1 + 100) & 0x80) != 0)) { + iStack16 = *(int *)(iVar1 + 0x14); + puVar2 = *(uint **)(iVar1 + 0x6c); + uVar10 = puVar2[0x2e]; + *puVar2 = *puVar2 | 1; + *(char **)(puVar2 + 0x22) = pcStack4; + if ((uVar10 == 2) && (*pcStack4 == '\x03')) { + fStack112 = DAT_8003201c; + fStack108 = (float)DAT_80032020; + fStack104 = (float)DAT_80032024; + getsubroty(*(int *)(*(int *)(pcStack4 + 4) + 0x1c),param_2,param_3,param_4); + fStack116 = in_f0; + __x = sinf(in_f0); + *(float *)(puVar2 + 1) = __x * flt_80052CF8; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + *(float *)(puVar2 + 2) = -(__x * 0.00000000) * flt_80052CFC * 0.50000000; + __x = cosf(fStack116); + *(float *)(puVar2 + 3) = __x * flt_80052D00; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack112 = __x * 0.00000000 * flt_80052D04 * 0.00781250 - flt_80052D08; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack108 = __x * 0.00000000 * flt_80052D0C * 0.00781250 - flt_80052D10; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack104 = __x * 0.00000000 * flt_80052D14 * 0.00781250 - flt_80052D18; + proc_7F058714(&fStack112,(float *)(puVar2 + 8)); + } + else { + if ((uVar10 == 3) && (*pcStack4 == '\x03')) { + fStack136 = DAT_80032028; + fStack132 = (float)DAT_8003202c; + fStack128 = (float)DAT_80032030; + getsubroty(*(int *)(*(int *)(pcStack4 + 4) + 0x1c),param_2,param_3,param_4); + fStack140 = in_f0; + __x = sinf(in_f0); + *(float *)(puVar2 + 1) = __x * flt_80052D1C; + *(float *)(puVar2 + 2) = flt_80052D20; + __x = cosf(fStack140); + *(float *)(puVar2 + 3) = __x * flt_80052D24; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack136 = __x * 0.00000000 * flt_80052D28 * 0.00781250 - flt_80052D2C; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack132 = __x * 0.00000000 * flt_80052D30 * 0.00781250 - flt_80052D34; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack128 = __x * 0.00000000 * flt_80052D38 * 0.00781250 - flt_80052D3C; + proc_7F058714(&fStack136,(float *)(puVar2 + 8)); + *puVar2 = *puVar2 | 0x40; + } + else { + if (uVar10 == 4) { + fStack152 = DAT_80032034; + fStack148 = (float)DAT_80032038; + fStack144 = (float)DAT_8003203c; + iVar9 = get_curplayer_positiondata(); + __x = convert_angle_using_inverse + ((f32)(*(float *)(pcStack4 + 8) - *(float *)(iVar9 + 8)), + (f32)(*(float *)(pcStack4 + 0x10) - *(float *)(iVar9 + 0x10))); + uVar6 = get_random_value(); + fVar12 = sinf(__x); + fVar13 = (float)uVar6; + if ((int)uVar6 < 0) { + fVar13 = fVar13 + 4294967296.00000000; + } + fVar13 = fVar13 * 0.00000000 * flt_80052D40; + *(float *)(puVar2 + 1) = fVar12 * (fVar13 + fVar13 + flt_80052D44); + uVar6 = get_random_value(); + fVar12 = (float)uVar6; + if ((int)uVar6 < 0) { + fVar12 = fVar12 + 4294967296.00000000; + } + fVar12 = fVar12 * 0.00000000 * flt_80052D48; + *(float *)(puVar2 + 2) = fVar12 + fVar12; + uVar6 = get_random_value(); + __x = cosf(__x); + fVar12 = (float)uVar6; + if ((int)uVar6 < 0) { + fVar12 = fVar12 + 4294967296.00000000; + } + fVar12 = fVar12 * 0.00000000 * flt_80052D4C; + *(float *)(puVar2 + 3) = __x * (fVar12 + fVar12 + flt_80052D50); + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack152 = __x * 0.00000000 * flt_80052D54 * 0.03125000 - flt_80052D58; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack148 = __x * 0.00000000 * flt_80052D5C * 0.03125000 - flt_80052D60; + uVar6 = get_random_value(); + __x = (float)uVar6; + if ((int)uVar6 < 0) { + __x = __x + 4294967296.00000000; + } + fStack144 = __x * 0.00000000 * flt_80052D64 * 0.03125000 - flt_80052D68; + proc_7F058714(&fStack152,(float *)(puVar2 + 8)); + } + else { + proc_7F057C14((float *)(puVar2 + 1),(float *)(puVar2 + 8)); + } + } + } + if (*(int *)(pcStack4 + 0x1c) == 0) { + auStack88[0] = *(u32 *)(pcVar11 + 0x14); + } + else { + pcVar3 = *(char **)(pcVar11 + 0x1c); + do { + pcVar11 = pcVar3; + pcVar3 = *(char **)(pcVar11 + 0x1c); + } while (*(char **)(pcVar11 + 0x1c) != NULL); + auStack88[0] = *(u32 *)(pcVar11 + 0x14); + } + if ((*(byte *)(param_1 + 1) & 2) == 0) { + *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(pcVar11 + 0x14); + guMtxIdentF_unrolled((float (*) [4] [4])afStack80); + matrix_multiply_A1_by_F12(*(float *)(iStack16 + 0x14),extraout_a0,afStack80); + copies_first_3_floats_from_a0_to_a1_plus_0x30((xyzpoint *)(pcVar11 + 8),(int)afStack80); + } + else { + proc_7F041044(iVar1); + pfVar7 = (float *)getsubmatrix(iStack16,extraout_a1_lo_00,extraout_a2_lo_00, + extraout_a3_lo_00); + pfVar8 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar8,pfVar7,(int)afStack80); + proc_7F03D058(pcVar11,0); + iVar9 = proc_7F0B0E24(auStack88,extraout_f12,extraout_f14,*(f32 *)(pcVar11 + 8)); + if ((iVar9 == 0) || (lVar5 = proc_7F0B18B8(), -1 < lVar5)) { + *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(pcVar11 + 0x14); + fStack32 = *(float *)(pcVar11 + 8); + fStack24 = *(float *)(pcVar11 + 0x10); + } + else { + *(u32 *)(param_1 + 0x14) = auStack88[0]; + } + proc_7F03D058(pcVar11,1); + *(float *)(param_1 + 0x18) = -pfVar7[0xe]; + } + proc_7F04C044(param_1); + set_current_objposdata_plus_0x28((object_standard *)param_1); + set_stateflag_0x04_for_posdata(param_1); + *(float *)(param_1 + 8) = fStack32; + *(float *)(iVar1 + 0x58) = fStack32; + *(float *)(param_1 + 0xc) = fStack28; + *(float *)(iVar1 + 0x5c) = fStack28; + *(float *)(param_1 + 0x10) = fStack24; + *(float *)(iVar1 + 0x60) = fStack24; + fStack32 = 0.00000000; + fStack28 = 0.00000000; + fStack24 = 0.00000000; + proc_7F058020((float (*) [4] [4])afStack80,(float (*) [4])(iVar1 + 0x18)); + proc_7F0402B4(*(int *)(iVar1 + 0x10),(byte *)(iVar1 + 0x7c)); + *(undefined *)(iVar1 + 0x78) = *(undefined *)(iVar1 + 0x7c); + *(undefined *)(iVar1 + 0x79) = *(undefined *)(iVar1 + 0x7d); + *(undefined *)(iVar1 + 0x7a) = *(undefined *)(iVar1 + 0x7e); + *(undefined *)(iVar1 + 0x7b) = *(undefined *)(iVar1 + 0x7f); + proc_7F056CA0(iVar1); + uVar4 = 1; + } + return uVar4; +} + + + +void proc_7F04CA44(int param_1,undefined8 param_2) + +{ + uint uVar1; + u32 uVar2; + uint uVar3; + uint *puVar4; + float fVar5; + float fStack12; + float fStack8; + float fStack4; + + uVar1 = *(uint *)(param_1 + 100); + uVar3 = uVar1 & 0xfff9ffff; + *(uint *)(param_1 + 100) = uVar3; + *(uint *)(param_1 + 100) = uVar3 | (int)param_2 << 0x11; + if ((((*(uint *)(param_1 + 0xc) & 0x100) == 0) && ((*(uint *)(param_1 + 8) & 1) != 0)) && + ((uVar1 & 0xc0) == 0)) { + fStack12 = DAT_80032040; + fStack8 = DAT_80032044; + puVar4 = NULL; + fStack4 = DAT_80032048; + proc_7F03FDA8(*(int *)(param_1 + 0x10)); + if ((*(uint *)(param_1 + 100) & 0x80) != 0) { + puVar4 = *(uint **)(param_1 + 0x6c); + } + if (puVar4 != NULL) { + uVar2 = get_random_value(); + fVar5 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + *(float *)(puVar4 + 1) = fVar5 * 0.00000000 * flt_80052D6C - flt_80052D70; + uVar2 = get_random_value(); + fVar5 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fVar5 = fVar5 * 0.00000000 * flt_80052D74; + *(float *)(puVar4 + 2) = fVar5 + fVar5 + flt_80052D74; + uVar2 = get_random_value(); + fVar5 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + *(float *)(puVar4 + 3) = fVar5 * 0.00000000 * flt_80052D78 - flt_80052D7C; + if ((*(uint *)(param_1 + 0xc) & 0x200) == 0) { + uVar2 = get_random_value(); + fVar5 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fStack12 = (fVar5 * 0.00000000 * flt_80052D80) / 320.00000000 - flt_80052D84; + uVar2 = get_random_value(); + fVar5 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fStack8 = (fVar5 * 0.00000000 * flt_80052D88) / 320.00000000 - flt_80052D8C; + uVar2 = get_random_value(); + fVar5 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + fStack4 = (fVar5 * 0.00000000 * flt_80052D90) / 320.00000000 - flt_80052D94; + } + proc_7F058714(&fStack12,(float *)(puVar4 + 8)); + *puVar4 = *puVar4 | 1; + *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) & 0xfffffeff; + *(uint *)(param_1 + 100) = *(uint *)(param_1 + 100) & 0xffff7fff; + } + } + return; +} + + + +void proc_7F04CD04(object_header *param_1,undefined8 param_2) + +{ + char cVar1; + char cVar2; + object_standard *poVar3; + void *pvVar4; + int iVar5; + object_standard *poVar7; + longlong lVar6; + uint uStack20; + float *apfStack16 [4]; + + poVar3 = param_1->ptr_archetype; + cVar1 = *(char *)(*(int *)¶m_1->num_table_entries + 3); + proc_7F03CCB0((char *)param_1,(int **)apfStack16,&uStack20); + if (((int)uStack20 < 1) || (poVar7 = get_ptr_obj_pos_list_current_entry(), poVar7 == NULL)) { + return; + } + cVar2 = *(char *)poVar7; + do { + if (cVar2 == '\x01') { + pvVar4 = poVar7->runtime_ptr_obj_instance_controller; +LAB_7f04cd80: + if (cVar1 == *(char *)((int)pvVar4 + 3)) { + iVar5 = *(int *)&poVar7->pad; + if ((float)poVar3->runtime_y_pos < *(float *)(iVar5 + 0x5c)) { + if ((*(uint *)(iVar5 + 100) & 0x8000) == 0) { + poVar7 = (object_standard *)poVar7->runtime_MATRIX3; + } + else { + lVar6 = proc_7F03CCD8((float *)(iVar5 + 0x58),apfStack16[0],uStack20); + if (lVar6 != 0) { + proc_7F04CA44(iVar5,param_2); + } + poVar7 = (object_standard *)poVar7->runtime_MATRIX3; + } + } + else { + poVar7 = (object_standard *)poVar7->runtime_MATRIX3; + } + } + else { + poVar7 = (object_standard *)poVar7->runtime_MATRIX3; + } + } + else { + if (cVar2 == '\x04') { + pvVar4 = poVar7->runtime_ptr_obj_instance_controller; + goto LAB_7f04cd80; + } + poVar7 = (object_standard *)poVar7->runtime_MATRIX3; + } + if (poVar7 == NULL) { + return; + } + cVar2 = *(char *)poVar7; + } while( true ); +} + + + +void object_explosion_related(object_standard *param_1,float *param_2,int param_3) + +{ + byte bVar1; + u16 uVar2; + object_header *poVar3; + int iVar5; + longlong lVar4; + u32 uVar6; + uint uVar7; + u32 uVar8; + object_header *poVar9; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float extraout_f14_00; + undefined uVar10; + int iStack16; + short sStack10; + object_header *poStack4; + + if (param_1->field_70 <= *(float *)¶m_1->damage) { + iVar5 = do_something_if_object_destroyed((int)param_1); + if (iVar5 == 0) { + return; + } + uVar2 = param_1->pad; + } + else { + uVar2 = param_1->pad; + } + poStack4 = (object_header *)param_1->runtime_ptr_obj_posdata; + sStack10 = *(short *)((int)object_explosion_details + (int)(short)uVar2 * 0xe); + if (poStack4->is_loaded_in_mem == 0) { + iStack16 = *(int *)&poStack4->num_table_entries; + poVar9 = poStack4; + } + else { + poVar3 = (object_header *)poStack4->is_loaded_in_mem; + do { + poVar9 = poVar3; + poVar3 = (object_header *)poVar9->is_loaded_in_mem; + } while ((object_header *)poVar9->is_loaded_in_mem != NULL); + iStack16 = *(int *)&poVar9->num_table_entries; + } + iVar5 = do_something_if_object_destroyed((int)param_1); + uVar10 = (undefined)param_3; + if (iVar5 != 0) { + uVar7 = proc_7F03FF60((int)param_1); + if (((uVar7 & 3) == 0) && (proc_7F04B610((int)param_1,((int)uVar7 >> 2) + 1), iStack16 != 0) + ) { + lVar4 = (longlong)(int)param_2; + if ((*(byte *)((int)&poVar9->offset_obj_table + 1) & 8) == 0) { + proc_7F0B0BE4(&iStack16,extraout_f12_00,extraout_f14_00, + (float)poVar9->offset_obj_offset_block,poVar9->anonymous_4); + if (lVar4 != 0) { + proc_7F09C250((int)poStack4,param_2,iStack16,0x10, + (uint)((param_1->flags & 0xe) == 0),uVar10, + (char *)&poVar9[1].num_offset_entries,0); + goto LAB_7f04d0dc; + } + iVar5 = *(int *)&poVar9->num_table_entries; + } + else { + iVar5 = *(int *)&poVar9->num_table_entries; + } + proc_7F09C250((int)poStack4,param_2,iVar5,0x10,0,uVar10, + (char *)&poVar9[1].num_offset_entries,1); + } +LAB_7f04d0dc: + iVar5 = do_something_if_object_destroyed((int)param_1); + if ((0 < iVar5) && (bVar1 = *(byte *)¶m_1->obj, (bVar1 & 4) != 0)) { + if ((param_1->runtime_bitflags & 0x1000U) == 0) { + *(byte *)¶m_1->obj = bVar1 & 0xef; + } + else { + *(byte *)¶m_1->obj = bVar1 | 0x10; + } + *(undefined2 *)((int)&poStack4->offset_obj_table + 2) = 0x4b0; + } + if ((int)uVar7 < 0xc) { + return; + } + param_1->runtime_bitflags = param_1->runtime_bitflags | 0x1000; + param_1->flags = param_1->flags & 0xfffffeff; + return; + } + *(byte *)¶m_1->obj = *(byte *)¶m_1->obj | 0x80; + param_1->field_70 = 0.00000000; + if (iStack16 == 0) { + uVar8 = param_1->flags2; + } + else { + lVar4 = (longlong)(int)param_2; + if ((*(byte *)((int)&poVar9->offset_obj_table + 1) & 8) == 0) { + proc_7F0B0BE4(&iStack16,extraout_f12,extraout_f14,(float)poVar9->offset_obj_offset_block + ,poVar9->anonymous_4); + if (lVar4 != 0) { + proc_7F09C250((int)poStack4,param_2,iStack16,(int)sStack10, + (uint)((param_1->flags & 0xe) == 0),uVar10, + (char *)&poVar9[1].num_offset_entries,0); + uVar8 = param_1->flags2; + goto LAB_7f04cf7c; + } + iVar5 = *(int *)&poVar9->num_table_entries; + } + else { + iVar5 = *(int *)&poVar9->num_table_entries; + } + proc_7F09C250((int)poStack4,param_2,iVar5,(int)sStack10,0,uVar10, + (char *)&poVar9[1].num_offset_entries,1); + uVar8 = param_1->flags2; + } +LAB_7f04cf7c: + if ((uVar8 & 0x2000) == 0) { + proc_7F04B610((int)param_1,1); + if (poVar9 == poStack4) { + proc_7F04CD04(poStack4,(longlong)param_3); + uVar7 = param_1->runtime_bitflags; + if ((uVar7 & 0x8000) != 0) { + uVar6 = get_random_value(); + if (uVar6 % 3 != 0) { + return; + } + uVar7 = param_1->runtime_bitflags; + } + param_1->runtime_bitflags = uVar7 | 0x10000; + proc_7F04CA44((int)param_1,(longlong)param_3); + } + } + else { + param_1->runtime_bitflags = param_1->runtime_bitflags | 4; + } + return; +} + + + +undefined4 +proc_7F04D16C(float *param_1,float *param_2,float *param_3,uint *param_4,uint *param_5,int param_6, + float *param_7) + +{ + char cVar1; + short sVar2; + longlong lVar3; + uint *puVar4; + uint *puVar5; + short *psVar6; + int *piVar7; + undefined2 uVar8; + uint *puVar9; + int iVar10; + uint uVar11; + float fVar12; + float fVar13; + float fStack224; + undefined4 uStack220; + undefined4 uStack216; + int iStack200; + int iStack196; + int iStack192; + int iStack188; + int iStack184; + int iStack180; + uint uStack172; + uint uStack168; + uint uStack164; + uint auStack160 [5]; + float fStack140; + undefined4 uStack136; + undefined4 uStack132; + int iStack116; + int iStack112; + int iStack108; + int iStack104; + int iStack100; + int iStack96; + int iStack88; + int iStack84; + int iStack80; + int aiStack76 [3]; + undefined4 uStack64; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + float fStack32; + int iStack4; + + uStack64 = 0; + fVar13 = 4294967296.00000000; + puVar9 = param_4; + do { + while( true ) { + while( true ) { + while (puVar5 = param_5, cVar1 = *(char *)puVar9, cVar1 == -0x48) { + if (param_5 == NULL) { + return uStack64; + } + param_5 = NULL; + param_4 = puVar5; + puVar9 = puVar5; + } + if (cVar1 != '\x04') break; + iStack4 = param_6 + (puVar9[1] & 0xffffff) + + ((uint)*(byte *)((int)puVar9 + 1) & 0xf) * -0x10; + puVar9 = puVar9 + 2; + } + if (cVar1 == -0x41) break; + if (cVar1 == -0x4f) { + iVar10 = 0; + do { + iStack188 = dword_80032070; + iStack184 = DAT_80032074; + iStack180 = DAT_80032078; + iStack200 = DAT_8003207c; + iStack196 = DAT_80032080; + iStack192 = DAT_80032084; + if (iVar10 == 0) { + uStack172 = puVar9[1] & 0xf; + uStack168 = (uint)(*(byte *)((int)puVar9 + 7) >> 4); + uStack164 = *puVar9 & 0xf; + } + else { + if (iVar10 == 1) { + uStack172 = (uint)*(byte *)((int)puVar9 + 6) & 0xf; + uStack168 = (uint)(*(ushort *)((int)puVar9 + 6) >> 0xc); + uStack164 = (uint)(*(byte *)((int)puVar9 + 3) >> 4); + } + else { + if (iVar10 == 2) { + uStack172 = (uint)*(ushort *)(puVar9 + 1) & 0xf; + uStack168 = (uint)(*(byte *)((int)puVar9 + 5) >> 4); + uStack164 = (uint)*(byte *)((int)puVar9 + 2) & 0xf; + } + else { + uStack172 = (uint)*(byte *)(puVar9 + 1) & 0xf; + uStack168 = puVar9[1] >> 0x1c; + uStack164 = (uint)(*(ushort *)((int)puVar9 + 2) >> 0xc); + } + } + } + puVar5 = &uStack172; + uVar11 = uStack172; + while( true ) { + puVar5 = puVar5 + 1; + psVar6 = (short *)(iStack4 + uVar11 * 0x10); + lVar3 = (longlong)*psVar6; + if (lVar3 < iStack188) { + iStack188 = (int)*psVar6; + lVar3 = (longlong)*psVar6; + } + if (iStack200 < lVar3) { + iStack200 = (int)lVar3; + sVar2 = psVar6[1]; + } + else { + sVar2 = psVar6[1]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack184) { + iStack184 = (int)sVar2; + lVar3 = (longlong)psVar6[1]; + } + if (iStack196 < lVar3) { + iStack196 = (int)lVar3; + sVar2 = psVar6[2]; + } + else { + sVar2 = psVar6[2]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack180) { + iStack180 = (int)sVar2; + lVar3 = (longlong)psVar6[2]; + } + if (iStack192 < lVar3) { + iStack192 = (int)lVar3; + } + if (puVar5 == auStack160) break; + uVar11 = *puVar5; + } + lVar3 = proc_7F0B6CEC(param_1,param_3,&iStack188,&iStack200); + if (lVar3 != 0) { + fStack224 = DAT_80032088; + uStack220 = DAT_8003208c; + uStack216 = DAT_80032090; + lVar3 = proc_7F092890((short *)(iStack4 + uStack172 * 0x10), + (short *)(iStack4 + uStack168 * 0x10), + (short *)(iStack4 + uStack164 * 0x10),&fStack224, + param_1,param_2,param_3,&fStack52); + if (lVar3 != 0) { + puVar5 = puVar9; + if ((*(char *)puVar9 != -3) && (param_4 < puVar9)) { + cVar1 = *(char *)(puVar9 + -2); + puVar4 = puVar9; + while( true ) { + puVar5 = puVar4 + -2; + if ((cVar1 == -3) || (puVar5 <= param_4)) break; + cVar1 = *(char *)(puVar4 + -4); + puVar4 = puVar5; + } + } + if (puVar5 == param_4) { + uVar8 = 0xffff; + } + else { + uVar8 = *(undefined2 *)(puVar5[1] - 8 | 0x80000000); + } + fVar12 = (float)((int)fStack52 - (int)*param_1) * + (float)((int)fStack52 - (int)*param_1) + + (float)((int)fStack48 - (int)param_1[1]) * + (float)((int)fStack48 - (int)param_1[1]) + + (float)((int)fStack44 - (int)param_1[2]) * + (float)((int)fStack44 - (int)param_1[2]); + if (fVar12 < fVar13) { + *param_7 = fStack52; + param_7[1] = fStack48; + param_7[2] = fStack44; + param_7[3] = fStack40; + param_7[4] = fStack36; + param_7[5] = fStack32; + *(uint *)(param_7 + 6) = uStack172 * 0x10 + iStack4; + *(uint *)(param_7 + 7) = uStack168 * 0x10 + iStack4; + *(undefined2 *)((int)param_7 + 0x2a) = uVar8; + *(uint **)(param_7 + 9) = puVar9; + *(uint *)(param_7 + 8) = uStack164 * 0x10 + iStack4; + *(short *)(param_7 + 10) = (short)iVar10 + 1; + uStack64 = 1; + fVar13 = fVar12; + } + } + } + iVar10 += 1; + } while (iVar10 != 4); + } +LAB_7f04d970: + puVar9 = puVar9 + 2; + } + iStack104 = dword_8003204C; + iStack100 = DAT_80032050; + iStack96 = DAT_80032054; + iStack116 = DAT_80032058; + iStack112 = DAT_8003205c; + iStack108 = DAT_80032060; + piVar7 = &iStack88; + iStack88 = (int)(uint)*(byte *)((int)puVar9 + 5) / 10; + if (false) { + trap(0x1c00); + } + if ((false) && ((ulonglong)*(byte *)((int)puVar9 + 5) == 0xffffffff80000000)) { + trap(0x1800); + } + iStack84 = (int)(uint)*(byte *)((int)puVar9 + 6) / 10; + if (false) { + trap(0x1c00); + } + if ((false) && ((ulonglong)*(byte *)((int)puVar9 + 6) == 0xffffffff80000000)) { + trap(0x1800); + } + iStack80 = (int)(uint)*(byte *)((int)puVar9 + 7) / 10; + if (false) { + trap(0x1c00); + } + iVar10 = iStack88; + if ((false) && ((ulonglong)*(byte *)((int)puVar9 + 7) == 0xffffffff80000000)) { + trap(0x1800); + } + while( true ) { + piVar7 = piVar7 + 1; + psVar6 = (short *)(iStack4 + iVar10 * 0x10); + lVar3 = (longlong)*psVar6; + if (lVar3 < iStack104) { + iStack104 = (int)*psVar6; + lVar3 = (longlong)*psVar6; + } + if (iStack116 < lVar3) { + iStack116 = (int)lVar3; + sVar2 = psVar6[1]; + } + else { + sVar2 = psVar6[1]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack100) { + iStack100 = (int)sVar2; + lVar3 = (longlong)psVar6[1]; + } + if (iStack112 < lVar3) { + iStack112 = (int)lVar3; + sVar2 = psVar6[2]; + } + else { + sVar2 = psVar6[2]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack96) { + iStack96 = (int)sVar2; + lVar3 = (longlong)psVar6[2]; + } + if (iStack108 < lVar3) { + iStack108 = (int)lVar3; + } + if (piVar7 == aiStack76) break; + iVar10 = *piVar7; + } + lVar3 = proc_7F0B6CEC(param_1,param_3,&iStack104,&iStack116); + if (lVar3 == 0) goto LAB_7f04d970; + fStack140 = DAT_80032064; + uStack136 = DAT_80032068; + uStack132 = DAT_8003206c; + lVar3 = proc_7F092890((short *)(iStack4 + iStack88 * 0x10), + (short *)(iStack4 + iStack84 * 0x10), + (short *)(iStack4 + iStack80 * 0x10),&fStack140,param_1,param_2, + param_3,&fStack52); + if (lVar3 == 0) goto LAB_7f04d970; + puVar5 = puVar9; + if ((*(char *)puVar9 != -3) && (param_4 < puVar9)) { + cVar1 = *(char *)(puVar9 + -2); + puVar4 = puVar9; + while( true ) { + puVar5 = puVar4 + -2; + if ((cVar1 == -3) || (puVar5 <= param_4)) break; + cVar1 = *(char *)(puVar4 + -4); + puVar4 = puVar5; + } + } + if (puVar5 == param_4) { + uVar8 = 0xffff; + } + else { + uVar8 = *(undefined2 *)(puVar5[1] - 8 | 0x80000000); + } + fVar12 = (float)((int)fStack52 - (int)*param_1) * (float)((int)fStack52 - (int)*param_1) + + (float)((int)fStack48 - (int)param_1[1]) * (float)((int)fStack48 - (int)param_1[1]) + + (float)((int)fStack44 - (int)param_1[2]) * + (float)((int)fStack44 - (int)param_1[2]); + if (fVar13 <= fVar12) goto LAB_7f04d970; + *param_7 = fStack52; + param_7[1] = fStack48; + param_7[2] = fStack44; + param_7[3] = fStack40; + param_7[4] = fStack36; + param_7[5] = fStack32; + *(int *)(param_7 + 6) = iStack88 * 0x10 + iStack4; + *(int *)(param_7 + 7) = iStack84 * 0x10 + iStack4; + *(undefined2 *)((int)param_7 + 0x2a) = uVar8; + *(uint **)(param_7 + 9) = puVar9; + *(int *)(param_7 + 8) = iStack80 * 0x10 + iStack4; + *(undefined2 *)(param_7 + 10) = 0; + uStack64 = 1; + fVar13 = fVar12; + puVar9 = puVar9 + 2; + } while( true ); +} + + + +int proc_7F04D9B0(int param_1,ushort *param_2,float *param_3,float *param_4,float *param_5, + int *param_6,ushort **param_7) + +{ + ushort uVar1; + uint **ppuVar2; + float fVar3; + uint *puVar4; + short sVar6; + int iVar5; + ushort *partdesc; + ushort *puVar7; + float *pfVar8; + uint *puVar9; + uint *puVar10; + uint *puVar11; + uint uVar12; + float afStack148 [26]; + int iStack44; + float *pfStack40; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fVar3 = flt_80052D98; + pfStack40 = NULL; + iStack44 = 0; + uVar12 = 0; + if (param_2 == NULL) { + return 0; + } + uVar1 = *param_2; + partdesc = param_2; + do { + puVar10 = NULL; + puVar11 = NULL; + if (true) { + switch((uint)uVar1 & 0xff) { + case 4: + puVar9 = *(uint **)(partdesc + 2); + if (*puVar9 != 0) { + uVar12 = puVar9[2]; + puVar10 = (uint *)(uVar12 + (*puVar9 & 0xffffff)); + if (puVar9[1] != 0) { + puVar11 = (uint *)(uVar12 + (puVar9[1] & 0xffffff)); + } + } + break; + case 8: + proc_7F06E970(param_1,partdesc); + break; + case 0x12: + process_12_handle_switch(param_1,partdesc); + break; + case 0x17: + process_17_pointer_to_head(param_1,partdesc); + break; + case 0x18: + ppuVar2 = *(uint ***)(partdesc + 2); + puVar4 = (uint *)extract_id_from_object_structure_microcode(param_1,partdesc); + puVar9 = (uint *)puVar4[1]; + if (puVar9 != NULL) { + if (*ppuVar2 == puVar9) { + puVar9 = (uint *)((int)ppuVar2[7] + ((uint)*ppuVar2 & 0xffffff)); + } + if (ppuVar2[1] != NULL) { + puVar11 = (uint *)((int)ppuVar2[7] + ((uint)ppuVar2[1] & 0xffffff)); + } + uVar12 = *puVar4; + puVar10 = puVar9; + } + } + } + if (puVar10 != NULL) { + pfVar8 = NULL; + sVar6 = proc_7F06C570(partdesc,0); + if (-1 < sVar6) { + pfVar8 = (float *)(*(int *)(param_1 + 0xc) + (int)sVar6 * 0x40); + } + if ((pfVar8 != NULL) && (pfVar8 != pfStack40)) { + pfStack40 = pfVar8; + proc_7F059FB8(pfVar8,afStack148); + fStack12 = *param_3; + fStack8 = param_3[1]; + fStack4 = param_3[2]; + proc_7F058474(afStack148,&fStack12); + fStack36 = *param_4; + fStack32 = param_4[1]; + fStack28 = param_4[2]; + proc_7F0583D8(afStack148,&fStack36); + fStack24 = fStack36 * fVar3 + fStack12; + fStack20 = fStack32 * fVar3 + fStack8; + fStack16 = fStack28 * fVar3 + fStack4; + } + iVar5 = proc_7F04D16C(&fStack12,&fStack24,&fStack36,puVar10,puVar11,uVar12,param_5); + if (iVar5 != 0) { + *param_6 = (int)sVar6; + *param_7 = partdesc; + iStack44 = 1; + } + } + puVar7 = *(ushort **)(partdesc + 10); + if (puVar7 == NULL) { + while (puVar7 = partdesc, partdesc != NULL) { + if (partdesc == param_2) { + puVar7 = NULL; + break; + } + puVar7 = *(ushort **)(partdesc + 6); + if (puVar7 != NULL) break; + partdesc = *(ushort **)(partdesc + 4); + } + } + if (puVar7 == NULL) { + return iStack44; + } + if (iStack44 != 0) { + return iStack44; + } + uVar1 = *puVar7; + partdesc = puVar7; + } while( true ); +} + + + +void proc_7F04DCB4(object_standard *param_1) + +{ + void *pvVar1; + int iVar2; + float extraout_f12; + float extraout_f14; + + pvVar1 = param_1->runtime_ptr_obj_posdata; + iVar2 = proc_7F040078((int)param_1); + proc_7F0A0CCC((int)pvVar1,'\0'); + proc_7F0A0CCC((int)pvVar1,'\x01'); + proc_7F0A1DA0((float *)¶m_1->runtime_x_pos,(float *)¶m_1->runtime_MATRIX0, + (float *)¶m_1->runtime_MATRIX4,(float *)¶m_1->runtime_MATRIX8,extraout_f12 + ,extraout_f14,*(float *)(iVar2 + 4),*(float *)(iVar2 + 8)); + param_1->runtime_bitflags = param_1->runtime_bitflags | 4; + *(byte *)¶m_1->obj = *(byte *)¶m_1->obj | 0x80; + param_1->field_70 = 0.00000000; + return; +} + + + +void proc_7F04DD68(object_standard *param_1) + +{ + undefined4 *puVar1; + float extraout_f12; + float extraout_f14; + float afStack80 [4]; + float afStack64 [4]; + float afStack48 [4]; + float afStack32 [5]; + int iStack12; + void *pvStack8; + void *pvStack4; + + pvStack4 = param_1->runtime_ptr_obj_posdata; + pvStack8 = param_1->runtime_ptr_obj_instance_controller; + iStack12 = *(int *)(*(int *)(*(int *)(*(int *)((int)pvStack8 + 8) + 8) + 8) + 4); + proc_7F0526EC((int)param_1,afStack80); + proc_7F0A1DA0(afStack32,afStack80,afStack64,afStack48,extraout_f12,extraout_f14, + *(float *)(iStack12 + 4),*(float *)(iStack12 + 8)); + proc_7F0A0CCC((int)pvStack4,'\x01'); + puVar1 = (undefined4 *) + extract_id_from_object_structure_microcode + ((int)pvStack8,*(ushort **)(*(int *)(*(int *)((int)pvStack8 + 8) + 8) + 4)); + *puVar1 = 0; + return; +} + + + +void proc_7F04DE18(object_standard *param_1) + +{ + void *objinst; + int iVar1; + float *pfVar2; + undefined4 *puVar3; + float extraout_f12; + float extraout_f14; + float afStack84 [4]; + float afStack68 [4]; + float afStack52 [4]; + float afStack36 [4]; + float *pfStack20; + int iStack16; + void *pvStack4; + + pvStack4 = param_1->runtime_ptr_obj_posdata; + objinst = param_1->runtime_ptr_obj_instance_controller; + if ((*(byte *)((int)pvStack4 + 1) & 2) != 0) { + iVar1 = *(int *)(*(int *)((int)objinst + 8) + 8); + iStack16 = *(int *)(*(int *)(iVar1 + 8) + 4); + pfStack20 = (float *)proc_7F06C660((int)objinst,*(ushort **)(iVar1 + 4),0); + pfVar2 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar2,pfStack20,(int)afStack84); + proc_7F0A1DA0(afStack36,afStack84,afStack68,afStack52,extraout_f12,extraout_f14, + *(float *)(iStack16 + 4),*(float *)(iStack16 + 8)); + } + proc_7F0A0CCC((int)pvStack4,'\x01'); + puVar3 = (undefined4 *) + extract_id_from_object_structure_microcode + ((int)objinst,*(ushort **)(*(int *)(*(int *)((int)objinst + 8) + 8) + 0xc)); + *puVar3 = 0; + return; +} + + + +void proc_7F04DEFC(int param_1,float param_2,undefined8 param_3,undefined8 param_4,int param_5) + +{ + int param_1_00; + int iVar1; + uint uVar2; + uint uVar3; + float extraout_f12; + int in_stack_00000010; + + param_1_00 = *(int *)(param_1 + 4); + uVar3 = *(uint *)(param_1_00 + 100) & 0xfff9ffff; + uVar2 = uVar3 | in_stack_00000010 << 0x11; + *(uint *)(param_1_00 + 100) = uVar3; + *(uint *)(param_1_00 + 100) = uVar2; + if (-1 < (int)(uVar2 << 0xc)) { + param_1_00 = *(int *)(param_1 + 0x20); + while (param_1_00 != 0) { + iVar1 = *(int *)(param_1_00 + 0x24); + proc_7F04DEFC(param_1_00,param_2,(longlong)(int)param_3._4_4_,param_4,param_5); + param_1_00 = iVar1; + param_2 = extraout_f12; + } + maybe_detonate_object + (*(object_standard **)(param_1 + 4),param_2,param_3._4_4_,(int)param_4,param_5); + } + return; +} + + + +undefined8 check_if_destroyable_object_type(int param_1) + +{ + if (true) { + switch(*(undefined *)(param_1 + 3)) { + case 1: + case 3: + case 5: + case 6: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0x24: + case 0x27: + case 0x28: + case 0x29: + case 0x2a: + case 0x2b: + case 0x2d: + case 0x2f: + return 1; + } + } + return 0; +} + + + +undefined8 check_if_collectable_object(int objdata) + +{ + if (true) { + switch(*(undefined *)(objdata + 3)) { + case 4: + case 7: + case 8: + case 0x11: + case 0x14: + case 0x15: + return 1; + } + } + return 0; +} + + + +undefined8 check_if_destroyable_not_invincible(int object) + +{ + undefined8 uVar1; + longlong lVar2; + int iVar3; + + if (*(char *)(object + 3) == '\x01') { + uVar1 = 0; + } + else { + lVar2 = check_if_collectable_object(object); + if (lVar2 == 0) { + iVar3 = *(int *)(object + 8); + } + else { + if (*(char *)(object + 3) != '\x15') { + if (*(int *)(object + 8) << 0xf < 0) { + return 1; + } + return 0; + } + iVar3 = *(int *)(object + 8); + } + if (iVar3 << 0xe < 0) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + return uVar1; +} + + + +void proc_7F04E0CC(int param_1,float param_2,float *param_3,int param_4,int param_5) + +{ + if ((*(uint *)(param_1 + 0xc) & 0x4000) == 0) { + maybe_detonate_object((object_standard *)param_1,(float)param_3,param_3,param_4,param_5); + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f04e280) overlaps instruction at (ram,0x7f04e27c) +// + +void maybe_detonate_object + (object_standard *objdata,float param_2,float *param_3,int param_4,int param_5) + +{ + ushort uVar1; + object_standard *poVar2; + int iVar3; + int iVar5; + longlong lVar4; + uint uVar6; + u32 uVar7; + object_standard *object; + undefined *puVar8; + char cVar10; + int iVar9; + uint uVar11; + dword *pdVar12; + dword *pdVar13; + dword *pdVar14; + object_standard *poVar15; + dword *pdVar16; + float *pfVar17; + f32 scale; + float fVar18; + int in_stack_00000010; + dword adStack164 [30]; + dword adStack44 [3]; + object_standard *poStack32; + uint uStack28; + uint uStack24; + + uVar6 = objdata->runtime_bitflags & 0xfff9ffff; + objdata->runtime_bitflags = uVar6; + cVar10 = *(char *)((int)&objdata->obj + 1); + objdata->runtime_bitflags = uVar6 | in_stack_00000010 << 0x11; + if ((cVar10 == '$') && (iVar5 = do_something_if_object_destroyed((int)objdata), iVar5 == 1)) { + return; + } + if (param_5 == 0) { + lVar4 = check_if_collectable_object((int)objdata); + if (lVar4 == 0) { + if ((int)(objdata->flags << 7) < 0) { + return; + } + } + else { + if (-1 < (int)(objdata->flags << 8)) { + return; + } + } + } + else { + if ((int)(objdata->flags << 0xe) < 0) { + return; + } + cVar10 = *(char *)((int)&objdata->obj + 1); + if (cVar10 == '\b') { + cVar10 = *(char *)(objdata + 1); + if (((((cVar10 != '\x1a') && (cVar10 != '\x1b')) && (cVar10 != '\x1d')) && + ((cVar10 != '\x1c' && (cVar10 != 'V')))) && + ((cVar10 != 'W' && ((cVar10 != '!' && (cVar10 != '\"')))))) { + return; + } + objdata[1].obj = 0; + return; + } + if (cVar10 == '\a') { + iVar5 = *(int *)(objdata + 1); + if (((((iVar5 != 5) && (iVar5 != 6)) && (iVar5 != 7)) && + (((iVar5 != 8 && (iVar5 != 9)) && + ((iVar5 != 0xb && ((iVar5 != 0xf && (iVar5 != 0x10)))))))) && (iVar5 != 0x13)) { + return; + } + objdata->flags = objdata->flags | 0x10000000; + return; + } + lVar4 = check_if_destroyable_not_invincible((int)objdata); + if (lVar4 == 0) { + return; + } + } + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 0) { + objdata->field_70 = objdata->field_70 + (float)param_3 * 250.00000000; + } + else { + uVar6 = proc_7F03FF60((int)objdata); + uVar11 = uVar6 & 3; + if (((int)uVar6 < 0) && (uVar11 != 0)) { + uVar11 -= 4; + } + pfVar17 = (float *)(float)(4 - uVar11); + if (((float)(float *)(float)(4 - uVar11) < (float)param_3) || + (pfVar17 = (float *)0x3f800000, (float)param_3 < 1.00000000)) { + fVar18 = objdata->field_70; + } + else { + fVar18 = objdata->field_70; + pfVar17 = param_3; + } + objdata->field_70 = fVar18 + (float)pfVar17; + } + cVar10 = *(char *)((int)&objdata->obj + 1); + if ((cVar10 == '*') || (cVar10 == '/')) { + if (*(float *)&objdata->damage <= objdata->field_70) { + proc_7F04DCB4(objdata); + cVar10 = *(char *)((int)&objdata->obj + 1); + } + } + else { + proc_7F04BFD0((int)objdata->runtime_ptr_obj_posdata,1); + object_explosion_related(objdata,(float *)param_4,in_stack_00000010); + cVar10 = *(char *)((int)&objdata->obj + 1); + } + if (cVar10 == '\x14') { + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 1) { + uVar7 = get_random_value(); + uVar6 = uVar7 % 0xd; + uVar11 = uVar6; +LAB_7f04e3e8: + iVar5 = &objdata->field_0x0 + uVar6 * 4; + if (*(short *)(iVar5 + 0x82) == 0) { + iVar5 = uVar6 + 1; + } + else { + if (*(short *)(iVar5 + 0x80) == -1) { + iVar5 = uVar6 + 1; + } + else { + uStack28 = uVar6; + uStack24 = uVar11; + object = (object_standard *)proc_7F0518D0(); + uVar6 = uStack28; + if (object != NULL) { + uVar1 = *(ushort *)(iVar5 + 0x80); + pdVar14 = blank_07_object; + pdVar13 = adStack164; + do { + pdVar12 = pdVar13; + pdVar16 = pdVar14; + *pdVar12 = *pdVar16; + pdVar12[1] = pdVar16[1]; + pdVar12[2] = pdVar16[2]; + pdVar14 = pdVar16 + 3; + pdVar13 = pdVar12 + 3; + } while (pdVar16 + 3 != &DWORD_8003210c); + pdVar12[3] = DWORD_8003210c; + pdVar12[4] = pdVar16[4]; + pdVar14 = adStack164; + poVar2 = object; + do { + poVar15 = poVar2; + pdVar13 = pdVar14; + pdVar14 = pdVar13 + 3; + *(dword *)poVar15 = *pdVar13; + *(dword *)&poVar15->obj = pdVar13[1]; + poVar15->flags = pdVar13[2]; + poVar2 = (object_standard *)&poVar15->flags2; + } while (pdVar14 != adStack44); + *(dword *)(object_standard *)&poVar15->flags2 = *pdVar14; + poVar15->runtime_ptr_obj_posdata = pdVar13[4]; + object->obj = uVar1; + *(uint *)(object + 1) = uVar6 + 1; + if (uVar6 + 1 == 2) { + *(undefined4 *)(object + 1) = 1; + } + poStack32 = object; + puVar8 = init_object_no_default_pos_controller + (object,(object_header *)PitemZ_entries[uVar1].header); + if (puVar8 != NULL) { + set_obj_instance_controller_scale + (poStack32->runtime_ptr_obj_instance_controller,scale); + proc_7F03A5A4(poStack32->runtime_ptr_obj_posdata, + (int)objdata->runtime_ptr_obj_posdata); + cVar10 = *(char *)((int)&objdata->obj + 1); + goto LAB_7f04e544; + } +LAB_7f04e540: + cVar10 = *(char *)((int)&objdata->obj + 1); + goto LAB_7f04e544; + } + iVar5 = uStack28 + 1; + uVar11 = uStack24; + } + } + uVar6 = iVar5 % 0xd; + if (uVar6 == uVar11) goto LAB_7f04e540; + goto LAB_7f04e3e8; + } + cVar10 = *(char *)((int)&objdata->obj + 1); + } + else { + cVar10 = *(char *)((int)&objdata->obj + 1); + } +LAB_7f04e544: + if (cVar10 == '\r') { + objdata->flags = objdata->flags | 0x40000000; + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 1) { + objdata->flags = objdata->flags | 0x10000000; + } + } + else { + if (cVar10 == '\x06') { + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 1) { + objdata->flags = objdata->flags | 0x10000000; + } + } + else { + if (cVar10 == '\n') { + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 1) { + set_ptr_monitor_img_to_obj_ani_slot((undefined4 *)(objdata + 1),&DAT_80031ee8); + } + } + else { + if (cVar10 == '\v') { + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 1) { + set_ptr_monitor_img_to_obj_ani_slot + ((undefined4 *)(objdata + 1),&DAT_80031ee8); + set_ptr_monitor_img_to_obj_ani_slot + ((undefined4 *)&objdata[1].damage,&DAT_80031ee8); + set_ptr_monitor_img_to_obj_ani_slot + (&objdata[2].ptr_allocated_collisiondata_block,&DAT_80031ee8); + set_ptr_monitor_img_to_obj_ani_slot(&objdata[3].runtime_y_pos,&DAT_80031ee8) + ; + } + } + else { + if (cVar10 == '$') { + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 1) { + init_trigger_toxic_gas_effect(&objdata->runtime_x_pos); + } + } + else { + if (cVar10 == '\x15') { + iVar5 = do_something_if_object_destroyed((int)objdata); + if (iVar5 == 0) { + *(float *)&objdata[1].pad = + (*(float *)(objdata + 1) * + (*(float *)&objdata->damage - objdata->field_70)) / + *(float *)&objdata->damage; + } + else { + *(undefined4 *)&objdata[1].pad = 0; + } + } + } + } + } + } + } + iVar5 = do_something_if_object_destroyed((int)objdata); + if ((iVar5 == 1) && (iVar5 = *(int *)((int)objdata->runtime_ptr_obj_posdata + 0x20), iVar5 != 0) + ) { + iVar3 = *(int *)(iVar5 + 0x24); + while (iVar9 = iVar3, proc_7F04BFD0(iVar5,1), iVar9 != 0) { + iVar3 = *(int *)(iVar9 + 0x24); + iVar5 = iVar9; + } + } + return; +} + + + +void proc_7F04E720(object_standard *param_1,float *param_2) + +{ + int iVar1; + int iVar2; + object_standard *poVar3; + longlong lVar4; + int iVar5; + object_standard *param_1_00; + float extraout_f12; + ushort *apuStack96 [2]; + float fStack88; + undefined4 uStack84; + float fStack80; + int iStack76; + float fStack72; + undefined4 uStack68; + float fStack64; + undefined4 *apuStack24 [6]; + + iVar1 = *(int *)¶m_1->pad; + if (((*(uint *)(iVar1 + 100) & 0x1000) == 0) && ((*(byte *)¶m_1->field_0x1 & 2) != 0)) { + param_1_00 = (object_standard *)param_1->runtime_MATRIX2; + if ((object_standard *)param_1->runtime_MATRIX2 == NULL) { + iVar2 = *(int *)(iVar1 + 0x14); + } + else { + do { + poVar3 = (object_standard *)param_1_00->runtime_MATRIX3; + proc_7F04E720(param_1_00,param_2); + param_1_00 = poVar3; + } while (poVar3 != NULL); + iVar2 = *(int *)(iVar1 + 0x14); + } + apuStack24[0] = NULL; + if ((*(char *)(iVar1 + 3) == '\x01') && + ((((*(ushort *)(iVar1 + 0x98) & 4) != 0 || (*(short *)(iVar1 + 0x9a) == 6)) || + (*(short *)(iVar1 + 0x9a) == 7)))) { + lVar4 = proc_7F0747D0(iVar1 + 0xd0,*(float **)(iVar2 + 0xc),param_2,param_2 + 3); + apuStack24[0] = (undefined4 *)**(ushort ***)(iVar2 + 8); + if ((0 < lVar4) && + (iVar5 = proc_7F04D9B0(iVar2,(ushort *)apuStack24[0],param_2,param_2 + 3,&fStack72, + &iStack76,apuStack96), iVar5 == 0)) { + lVar4 = 0; + } + } + else { + do { + iVar5 = proc_7F0752FC(iVar2,param_2,param_2 + 3,(ushort **)apuStack24); + lVar4 = (longlong)iVar5; + if ((0 < lVar4) && + (iVar5 = proc_7F04D9B0(iVar2,(ushort *)apuStack24[0],param_2,param_2 + 3, + &fStack72,&iStack76,apuStack96), iVar5 != 0)) break; + } while (0 < lVar4); + } + if (0 < lVar4) { + fStack88 = fStack72; + uStack84 = uStack68; + fStack80 = fStack64; + proc_7F058474((float *)(*(int *)(iVar2 + 0xc) + iStack76 * 0x40),&fStack88); + if (-fStack80 <= param_2[0xd]) { + iVar5 = 1; + if ((-1 < *(int *)(iVar1 + 8) << 0xe) && + (((*(char *)(iVar1 + 3) == '*' || (*(char *)(iVar1 + 3) == '/')) || + ((iVar1 = *(int *)(*(int *)(iVar1 + 0x14) + 8), + *(item_related **)(iVar1 + 4) == &prop_door_related && + (apuStack96[0] == *(ushort **)(*(int *)(iVar1 + 8) + 0xc))))))) { + iVar5 = 0; + } + proc_7F03B9C0((int)param_2,param_1,extraout_f12,-fStack80,(int)lVar4,apuStack24[0], + &fStack72,iStack76,apuStack96[0],iVar2,iVar5); + } + } + } + return; +} + + + +void proc_7F04E9BC(object_standard *param_1,float *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + float fVar4; + + iVar1 = *(int *)¶m_1->pad; + iVar2 = *(int *)(iVar1 + 0x14); + iVar3 = proc_7F040078(iVar1); + if (((((*(byte *)¶m_1->field_0x1 & 2) != 0) && ((*(uint *)(iVar1 + 100) & 0x1000) == 0)) && + ((*(uint *)(iVar1 + 0xc) & 0x8000) == 0)) && + (fVar4 = proc_7F03EB9C(iVar3,*(int *)(iVar2 + 0xc)), + -(fVar4 + *(float *)(*(int *)(iVar2 + 0xc) + 0x38)) <= param_2[0xd])) { + proc_7F04E720(param_1,param_2); + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f04ed2c) overlaps instruction at (ram,0x7f04ed28) +// + +void proc_7F04EA68(float *param_1,float *param_2) + +{ + char cVar1; + object_standard *object; + item_related *piVar2; + bool bVar3; + float *pfVar6; + ulonglong uVar4; + u32 uVar7; + longlong lVar5; + int iVar8; + hit_header **pphVar9; + undefined uVar10; + u32 uVar11; + hit_header *phVar12; + float *pfVar13; + float fVar14; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fStack16; + float fStack12; + float fStack8; + + iVar8 = *(int *)((int)param_2[1] + 0x1c); + if (iVar8 == 0) { + fVar14 = *param_2; + } + else { + do { + iVar8 = *(int *)(iVar8 + 0x1c); + } while (iVar8 != 0); + fVar14 = *param_2; + } + object = *(object_standard **)((int)param_2[1] + 4); + pfVar13 = (float *)0x41d00000; + fStack16 = (*param_1 - (fVar14 * param_1[3]) / param_1[5]) - param_1[3] * 26.00000000; + fStack12 = (param_1[1] - (*param_2 * param_1[4]) / param_1[5]) - param_1[4] * 26.00000000; + fStack8 = (param_1[2] - *param_2) - param_1[5] * 26.00000000; + pfVar6 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar6,&fStack16); + fVar14 = extraout_f12; + if (param_2[0x13] != 0.00000000) { + proc_7F067B4C(&fStack16); + fVar14 = extraout_f12_00; + } + proc_7F0A3E1C(&fStack16,1,fVar14,0); + uVar4 = check_if_object_has_not_been_destroyed((int)object); + if (uVar4 == 0) { + fVar14 = param_2[0x13]; + } + else { + lVar5 = check_if_destroyable_not_invincible((int)object); + if (lVar5 == 0) { + fVar14 = param_2[0x13]; + } + else { + if (param_2[0x13] == 0.00000000) { + fVar14 = param_2[0x13]; + } + else { + inc_curplayer_hitcount_with_weapon((int)param_1[6],6); + fVar14 = param_2[0x13]; + } + } + } + if (fVar14 == 0.00000000) { + proc_7F064720((float *)((int)param_2[1] + 8)); + } + else { + pfVar13 = (float *)recall_joy2_hits_edit_detail_edit_flag(); + } + fVar14 = param_1[6]; + if (fVar14 != 0.00000000) { + if (param_2[0x13] == 0.00000000) { + fVar14 = param_2[1]; + piVar2 = *(item_related **) + (*(int *)((int)object->runtime_ptr_obj_instance_controller + 8) + 4); + uVar7 = get_random_value(); + proc_7F0A108C(param_2 + 4,param_2 + 7,(short)(uVar7 % 3) + 0x11,1,(int)fVar14, + SUB41(param_2[0x10],0),piVar2 == &prop_door_related); + fVar14 = param_1[6]; + } + else { + pphVar9 = hit_header_array[0]; + if (-1 < *(short *)((int)param_2 + 0x3a)) { + pphVar9 = hit_header_array + [(uint)(byte)image_entries[*(short *)((int)param_2 + 0x3a)].flag1 & 0xf]; + } + uVar7 = get_random_value(); + iVar8 = *(int *)((int)object->runtime_ptr_obj_instance_controller + 8); + uVar10 = 0; + if (*(short *)((int)pphVar9 + 10) == 0) { + trap(0x1c00); + } + if ((*(item_related **)(iVar8 + 4) == &prop_door_related) && + (param_2[0x11] == *(float *)(*(int *)(iVar8 + 8) + 0xc))) { +LAB_7f04ed50: + uVar10 = 1; + phVar12 = pphVar9[1]; + } + else { + if (*(item_related **)(iVar8 + 4) == &prop_cctv_related) { + if (param_2[0x11] == *(float *)(*(int *)(iVar8 + 8) + 4)) goto LAB_7f04ed50; + phVar12 = pphVar9[1]; + } + else { + phVar12 = pphVar9[1]; + } + } + proc_7F0A108C(param_2 + 4,param_2 + 7, + (ushort)*(byte *)((int)&phVar12->pImageIDArray + + uVar7 % (int)*(short *)((int)pphVar9 + 10)),1, + (int)param_2[1],SUB41(param_2[0x10],0),uVar10); + fVar14 = param_1[6]; + } + } + proc_7F05DF84((int)fVar14); + cVar1 = *(char *)((int)&object->obj + 1); + if (cVar1 == '\r') { + pfVar13 = (float *)((float)pfVar13 * flt_80030B24); + } + else { + if (cVar1 == '\x06') { + iVar8 = *(int *)((int)object->runtime_ptr_obj_instance_controller + 8); + if ((*(item_related **)(iVar8 + 4) == &prop_cctv_related) && + (param_2[0x11] == *(float *)(*(int *)(iVar8 + 8) + 4))) { + pfVar13 = (float *)((float)pfVar13 * 100.00000000); + proc_7F04DE18(object); + } + pfVar13 = (float *)((float)pfVar13 * flt_80030B18); + } + } + get_cur_playernum(); + proc_7F04E0CC((int)object,extraout_f12_01,pfVar13,(int)&fStack16,(int)param_1[6]); + if (((*(item_related **)(*(int *)((int)object->runtime_ptr_obj_instance_controller + 8) + 4) == + &prop_door_related) && (param_2[0x13] == 0.00000000)) && + (*(char *)((int)&object[1].runtime_MATRIX9 + 1) = + *(char *)((int)&object[1].runtime_MATRIX9 + 1) + '\x01', + '\x02' < *(char *)((int)&object[1].runtime_MATRIX9 + 1))) { + proc_7F04DD68(object); + } + proc_7F044200((int)param_2[1]); + bVar3 = false; + lVar5 = check_if_collectable_object((int)object); + if (lVar5 == 0) { + if (-1 < (int)(object->flags << 10)) { + uVar11 = object->flags2; + goto LAB_7f04eed8; + } + } + else { + if ((int)(object->flags << 9) < 0) { + uVar11 = object->flags2; + goto LAB_7f04eed8; + } + } + bVar3 = true; + uVar11 = object->flags2; +LAB_7f04eed8: + if ((uVar11 & 2) == 0) { + uVar11 = object->flags2; + } + else { + uVar4 = check_if_object_has_not_been_destroyed((int)object); + if (uVar4 == 0) { + bVar3 = true; + uVar11 = object->flags2; + } + else { + uVar11 = object->flags2; + } + } + if ((uVar11 & 0x400) != 0) { + bVar3 = false; + } + if (bVar3) { + proc_7F04BCDC((int)object,param_1 + 3); + } + return; +} + + + +ulonglong check_if_object_has_not_been_destroyed(int param_1) + +{ + int iVar1; + + iVar1 = do_something_if_object_destroyed(param_1); + return (ulonglong)(iVar1 == 0); +} + + + +undefined8 proc_7F04EF58(int param_1) + +{ + int iVar1; + ulonglong uVar2; + longlong lVar3; + byte bVar4; + float fVar5; + float vector1; + float vector2; + float fVar6; + float fVar7; + int iStack44; + float fStack40; + int iStack12; + int iStack8; + + iStack8 = *(int *)(param_1 + 4); + if (*(char *)(iStack8 + 3) == '\x05') { + bVar4 = *(byte *)(param_1 + 1); + } + else { + if (*(int *)(iStack8 + 8) << 0xc < 0) { + bVar4 = *(byte *)(param_1 + 1); + } + else { + if ((*(uint *)(iStack8 + 100) & 0x13) == 0) { + return 1; + } + bVar4 = *(byte *)(param_1 + 1); + } + } + if ((bVar4 & 2) == 0) { + return 1; + } + uVar2 = check_if_object_has_not_been_destroyed(iStack8); + iVar1 = DAT_80071df8; + if (uVar2 != 0) { + if (*(int *)(iStack8 + 8) << 6 < 0) { + return 1; + } + iStack12 = get_curplayer_positiondata(); + iStack44 = *(int *)(iStack12 + 0x14); + vector1 = *(float *)(iStack8 + 0x58) - *(float *)(iStack12 + 8); + fVar7 = *(float *)(iStack8 + 0x5c) - *(float *)(iStack12 + 0xc); + vector2 = *(float *)(iStack8 + 0x60) - *(float *)(iStack12 + 0x10); + if ((*(char *)(iStack8 + 3) == '(') && (*(int *)(iStack8 + 8) << 2 < 0)) { + fVar5 = 400.00000000; + fVar6 = flt_80052EF4; + fStack40 = flt_80052EF8; + } + else { + fVar5 = 200.00000000; + fVar6 = flt_80052EFC; + fStack40 = flt_80052F00; + } + if (fVar6 <= vector1 * vector1 + vector2 * vector2) { + return 1; + } + if (fVar5 <= fVar7) { + return 1; + } + if (fVar7 <= -fVar5) { + return 1; + } + vector2 = convert_angle_using_inverse((f32)vector1,(f32)vector2); + fVar7 = get_curplay_horizontal_rotation_in_degrees(); + fVar6 = vector2 - fVar7; + vector1 = fVar6; + if (vector2 < fVar7) { + vector1 = fVar6 + flt_80052F04; + } + if (flt_80052F08 < vector1) { + vector1 = flt_80052F0C - vector1; + } + if (fStack40 < vector1) { + return 1; + } + lVar3 = (longlong)param_1; + iVar1 = param_1; + if (((*(uint *)(iStack8 + 0xc) & 0x800) != 0) && + (proc_7F0B0BE4(&iStack44,vector2,fVar6,*(float *)(iStack12 + 8), + *(float *)(iStack12 + 0x10)), iVar1 = param_1, lVar3 == 0)) { + return 1; + } + } + DAT_80071df8 = iVar1; + return 1; +} + + + +undefined4 proc_7F04F170(char *param_1) + +{ + int iVar1; + s32 sVar3; + undefined8 uVar2; + uint uVar4; + int iVar5; + undefined4 uStack8; + + iVar1 = *(int *)(param_1 + 4); + uStack8 = 0; + if (*(char *)(iVar1 + 3) == '\x05') { + play_sfx_a1(ptr_sfx_buf,0xba,NULL); + sVar3 = is_alarm_on(); + if (sVar3 != 0) { + stop_alarm(); + iVar5 = *(int *)(iVar1 + 8); + goto LAB_7f04f1d4; + } + start_alarm(); + } + iVar5 = *(int *)(iVar1 + 8); +LAB_7f04f1d4: + if (iVar5 << 0xc < 0) { + uVar2 = collect_or_interact_object(param_1,1); + uStack8 = (undefined4)uVar2; + uVar4 = *(uint *)(iVar1 + 100); + } + else { + uVar4 = *(uint *)(iVar1 + 100); + } + *(uint *)(iVar1 + 100) = uVar4 | 0x4000; + proc_7F03E6A0((int)param_1); + return uStack8; +} + + + +void proc_7F04F218(int param_1,longlong param_2) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 4); + if (param_2 != 0) { + *(byte *)(iVar1 + 2) = *(byte *)(iVar1 + 2) & 0xdf; + return; + } + *(byte *)(iVar1 + 2) = *(byte *)(iVar1 + 2) | 0x20; + return; +} + + + +void proc_7F04F244(int param_1,int *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 4); + if (*(undefined4 **)(iVar1 + 0x68) == NULL) { + *param_3 = 0; + } + else { + if ((*(uint *)(iVar1 + 8) & 0x100) == 0) { + *param_3 = 0; + } + else { + if ((*(byte *)(iVar1 + 2) & 0x20) == 0) { + *param_3 = **(undefined4 **)(iVar1 + 0x68); + *param_2 = *(int *)(iVar1 + 0x68) + 4; + *param_5 = *(undefined4 *)(*(int *)(iVar1 + 0x68) + 0x48); + *param_4 = *(undefined4 *)(*(int *)(iVar1 + 0x68) + 0x44); + return; + } + *param_3 = 0; + } + } + return; +} + + + +void append_text_picked_up(u8 *buffer,u8 *param_2,u8 *param_3) + +{ + u8 *textfiletext; + + textfiletext = get_textptr_for_textID(0xa400); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + return; +} + + + +void append_text_ammo_amount_word(u8 *buffer,AMMOTYPES ammotype,u32 amount) + +{ + u8 *textfiletext; + + if (true) { + switch(ammotype) { + case AMMO_9MM: + case AMMO_9MM_2: + case AMMO_RIFLE: + case AMMO_PLASTIQUE: + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_SHOTGUN: + case AMMO_GRENADE: + case AMMO_ROCKETS: + case AMMO_REMOTEMINE: + case AMMO_PROXMINE: + case AMMO_TIMEDMINE: + case AMMO_KNIFE: + case AMMO_GRENADEROUND: + case AMMO_MAGNUM: + case AMMO_GGUN: + case AMMO_DARTS: + case AMMO_FLARE: + case AMMO_PITON: + case AMMO_DYNAMITE: + case AMMO_BUG: + case AMMO_MICRO_CAMERA: + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa402); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + break; + case AMMO_EXPLOSIVEPEN: + case AMMO_BOMBCASE: + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa403); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + break; + case AMMO_GEKEY: + case AMMO_TOKEN: + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa404); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + } + } + return; +} + + + +void apped_text_ammotype(u8 *buffer,AMMOTYPES ammotype,u32 amount) + +{ + u8 *textfiletext; + + if (((ammotype == AMMO_9MM) || (ammotype == AMMO_9MM_2)) || (ammotype == AMMO_RIFLE)) { + textfiletext = get_textptr_for_textID(0xa405); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + else { + if (ammotype == AMMO_KNIFE) { + textfiletext = get_textptr_for_textID(41999); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + if (amount == 1) { + textfiletext = get_textptr_for_textID(42000); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa411); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + } + else { + if (ammotype == AMMO_DYNAMITE) { + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa419); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa41a); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + textfiletext = get_textptr_for_textID(0xa418); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + else { + if (true) { + switch(ammotype) { + case AMMO_SHOTGUN: + textfiletext = get_textptr_for_textID(0xa406); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_GRENADE: + textfiletext = get_textptr_for_textID(0xa409); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_ROCKETS: + textfiletext = get_textptr_for_textID(0xa40b); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_REMOTEMINE: + textfiletext = get_textptr_for_textID(0xa40c); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_PROXMINE: + textfiletext = get_textptr_for_textID(0xa40d); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_TIMEDMINE: + textfiletext = get_textptr_for_textID(0xa40e); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_GRENADEROUND: + textfiletext = get_textptr_for_textID(0xa40a); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_MAGNUM: + textfiletext = get_textptr_for_textID(0xa407); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_GGUN: + textfiletext = get_textptr_for_textID(0xa408); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_DARTS: + textfiletext = get_textptr_for_textID(0xa413); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_EXPLOSIVEPEN: + textfiletext = get_textptr_for_textID(0xa414); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_BOMBCASE: + textfiletext = get_textptr_for_textID(0xa415); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_FLARE: + textfiletext = get_textptr_for_textID(0xa416); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_PITON: + textfiletext = get_textptr_for_textID(0xa417); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_BUG: + textfiletext = get_textptr_for_textID(0xa41b); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_MICRO_CAMERA: + textfiletext = get_textptr_for_textID(0xa41c); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_GEKEY: + textfiletext = get_textptr_for_textID(0xa41d); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_PLASTIQUE: + textfiletext = get_textptr_for_textID(0xa41f); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + break; + case AMMO_TOKEN: + textfiletext = get_textptr_for_textID(0xa41e); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + } + if (1 < (int)amount) { + textfiletext = get_textptr_for_textID(0xa412); + string_append_from_obseg_textbank((char *)buffer,(char *)textfiletext); + } + } + } + } + return; +} + + + +void set_sound_effect_for_ammo_collection(AMMOTYPES ammotype) + +{ + if (true) { + switch(ammotype) { + case AMMO_9MM: + case AMMO_9MM_2: + case AMMO_RIFLE: + case AMMO_SHOTGUN: + case AMMO_GRENADE: + case AMMO_ROCKETS: + case AMMO_GRENADEROUND: + case AMMO_MAGNUM: + case AMMO_GGUN: + case AMMO_DARTS: + case AMMO_EXPLOSIVEPEN: + case AMMO_FLARE: + case AMMO_PITON: + case AMMO_DYNAMITE: + case AMMO_GEKEY: + case AMMO_TOKEN: + play_sfx_a1(ptr_sfx_buf,0xea,NULL); + break; + case AMMO_REMOTEMINE: + case AMMO_PROXMINE: + case AMMO_TIMEDMINE: + case AMMO_BOMBCASE: + case AMMO_BUG: + case AMMO_MICRO_CAMERA: + case AMMO_PLASTIQUE: + play_sfx_a1(ptr_sfx_buf,0xeb,NULL); + break; + case AMMO_KNIFE: + play_sfx_a1(ptr_sfx_buf,0xe9,NULL); + } + } + return; +} + + + +void set_sound_effect_for_weapontype_collection(ITEM_IDS weapontype) + +{ + if ((weapontype == ITEM_KNIFE) || (weapontype == ITEM_THROWKNIFE)) { + play_sfx_a1(ptr_sfx_buf,0xe9,NULL); + } + else { + if (((((weapontype == ITEM_REMOTEMINE) || (weapontype == ITEM_PROXIMITYMINE)) || + (weapontype == ITEM_TIMEDMINE)) || + ((weapontype == ITEM_BOMBCASE || (weapontype == ITEM_BUG)))) || + ((weapontype == ITEM_MICROCAMERA || (weapontype == ITEM_PLASTIQUE)))) { + play_sfx_a1(ptr_sfx_buf,0xeb,NULL); + } + else { + if (((weapontype == ITEM_GRENADE) || (weapontype == ITEM_57)) || (weapontype == ITEM_56) + ) { + play_sfx_a1(ptr_sfx_buf,0xea,NULL); + } + else { + if (weapontype == ITEM_LASER) { + play_sfx_a1(ptr_sfx_buf,0xf2,NULL); + } + else { + play_sfx_a1(ptr_sfx_buf,0xe8,NULL); + } + } + } + } + return; +} + + + +void prepare_ammo_type_collection_text(u8 *finaltext,AMMOTYPES ammotype,u32 quantity) + +{ + s32 numplayers; + + *finaltext = '\0'; + if (j_text_trigger == 0) { + numplayers = get_num_players(); + if (numplayers < 3) { + append_text_picked_up(finaltext,(u8 *)ammotype,(u8 *)quantity); + append_text_ammo_amount_word(finaltext,ammotype,quantity); + } + apped_text_ammotype(finaltext,ammotype,quantity); + string_append_from_obseg_textbank((char *)finaltext,".\n"); + } + else { + apped_text_ammotype(finaltext,ammotype,quantity); + numplayers = get_num_players(); + if (numplayers < 3) { + append_text_picked_up(finaltext,(u8 *)ammotype,(u8 *)quantity); + } + string_append_from_obseg_textbank((char *)finaltext,"\n"); + } + return; +} + + + +void display_text_when_ammo_collected(AMMOTYPES ammotype,u32 amount) + +{ + u32 *puVar1; + u32 *puVar2; + u32 *puVar3; + u32 *puVar4; + u32 stringbuf [25]; + + puVar3 = dword_800529D8; + puVar1 = stringbuf; + do { + puVar4 = puVar3 + 3; + puVar2 = puVar1 + 3; + *puVar1 = *puVar3; + puVar1[1] = puVar3[1]; + puVar1[2] = puVar3[2]; + puVar3 = puVar4; + puVar1 = puVar2; + } while (puVar4 != dword_800529D8 + 0x18); + *puVar2 = dword_800529D8[24]; + prepare_ammo_type_collection_text((u8 *)stringbuf,ammotype,amount); + display_string_in_lower_left_corner((char *)stringbuf); + return; +} + + + +void add_ammo_to_inventory(AMMOTYPES ammotype,int amount,int doplaysound,int dodisplaytext) + +{ + int curammo; + int maxammo; + + if (0 < amount) { + curammo = check_cur_player_ammo_amount_in_inventory(ammotype); + maxammo = get_max_ammo_for_type(ammotype); + if (curammo < maxammo) { + curammo = check_cur_player_ammo_amount_in_inventory(ammotype); + give_cur_player_ammo(ammotype,curammo + amount); + if (dodisplaytext != 0) { + display_text_when_ammo_collected(ammotype,amount); + } + if (doplaysound != 0) { + set_sound_effect_for_ammo_collection(ammotype); + } + if (ammotype == AMMO_GRENADE) { + add_item_to_inventory(ITEM_GRENADE); + } + else { + if (ammotype == AMMO_REMOTEMINE) { + add_item_to_inventory(ITEM_REMOTEMINE); + add_item_to_inventory(ITEM_TRIGGER); + } + else { + if (ammotype == AMMO_PROXMINE) { + add_item_to_inventory(ITEM_PROXIMITYMINE); + } + else { + if (ammotype == AMMO_TIMEDMINE) { + add_item_to_inventory(ITEM_TIMEDMINE); + } + else { + if (ammotype == AMMO_KNIFE) { + add_item_to_inventory(ITEM_THROWKNIFE); + } + else { + if (ammotype == AMMO_BOMBCASE) { + add_item_to_inventory(ITEM_BOMBCASE); + } + else { + if (ammotype == AMMO_BUG) { + add_item_to_inventory(ITEM_BUG); + } + else { + if (ammotype == AMMO_MICRO_CAMERA) { + add_item_to_inventory(ITEM_MICROCAMERA); + } + else { + if (ammotype == AMMO_GEKEY) { + add_item_to_inventory(ITEM_GOLDENEYEKEY); + } + else { + if (ammotype == AMMO_TOKEN) { + add_item_to_inventory(ITEM_TOKEN); + } + else { + if (ammotype == AMMO_PLASTIQUE) { + add_item_to_inventory(ITEM_PLASTIQUE); + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + + +uint get_ammo_in_magazine(int objdata) + +{ + s32 sVar1; + uint uVar2; + + uVar2 = 1; + if (true) { + switch(*(undefined4 *)(objdata + 0x80)) { + case 1: + uVar2 = 10; + break; + case 2: + uVar2 = 10; + break; + case 3: + uVar2 = 10; + break; + case 4: + uVar2 = 5; + break; + case 0xc: + uVar2 = 5; + break; + case 0xd: + uVar2 = 3; + break; + case 0xe: + uVar2 = 4; + } + } + if ((1 < uVar2) && (sVar1 = get_num_players(), sVar1 == 1)) { + uVar2 = (uint)((float)uVar2 * solo_ammo_multiplier); + } + return uVar2; +} + + + +uint ammo_collected_from_weapon(void *objdata) + +{ + AMMOTYPES ammotype; + s32 sVar1; + uint uVar2; + + ammotype = get_ammo_type_for_weapon((int)*(char *)((int)objdata + 0x80)); + uVar2 = 1; + if (*(int *)((int)objdata + 8) << 1 < 0) { + uVar2 = 0; + } + else { + if (true) { + switch(ammotype) { + case AMMO_9MM: + uVar2 = 10; + break; + case AMMO_9MM_2: + uVar2 = 10; + break; + case AMMO_RIFLE: + uVar2 = 10; + break; + case AMMO_SHOTGUN: + uVar2 = 5; + break; + case AMMO_GRENADEROUND: + uVar2 = 3; + break; + case AMMO_MAGNUM: + uVar2 = 5; + break; + case AMMO_GGUN: + uVar2 = 3; + break; + case AMMO_DARTS: + uVar2 = 4; + } + } + if ((1 < uVar2) && (sVar1 = get_num_players(), sVar1 == 1)) { + uVar2 = (uint)((float)uVar2 * solo_ammo_multiplier); + } + } + return uVar2; +} + + + +void generate_language_specific_text_for_weapon(char *finalstring,ITEM_IDS itemtype) + +{ + bool morethan2players; + s32 numplayers; + AMMOTYPES ammotype; + u8 *textfiletext; + size_t strlen; + + morethan2players = false; + if (j_text_trigger == 0) { + numplayers = get_num_players(); + if (numplayers < 3) { + textfiletext = get_textptr_for_textID(0xa400); + textpointer_load_parse_something(finalstring,(char *)textfiletext); + } + } + else { + textpointer_load_parse_something(finalstring,""); + numplayers = get_num_players(); + if (2 < numplayers) { + morethan2players = true; + } + } + if (false) { +switchD_7f04fe74_caseD_17: + textfiletext = get_textptr_for_textID(0xa43b); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + } + else { + switch(itemtype) { + case ITEM_KNIFE: + textfiletext = get_textptr_for_textID(0xa420); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_THROWKNIFE: + case ITEM_GRENADE: + case ITEM_TIMEDMINE: + case ITEM_PROXIMITYMINE: + case ITEM_REMOTEMINE: + case ITEM_BOMBCASE: + case ITEM_PLASTIQUE: + case ITEM_BUG: + case ITEM_MICROCAMERA: + case ITEM_GOLDENEYEKEY: + case ITEM_56: + case ITEM_57: + case ITEM_TOKEN: + ammotype = get_ammo_type_for_weapon(itemtype); + prepare_ammo_type_collection_text((u8 *)finalstring,ammotype,1); + return; + case ITEM_WPPK: + textfiletext = get_textptr_for_textID(0xa421); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_WPPKSIL: + textfiletext = get_textptr_for_textID(0xa422); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_TT33: + textfiletext = get_textptr_for_textID(0xa423); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_SKORPION: + textfiletext = get_textptr_for_textID(0xa424); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_AK47: + textfiletext = get_textptr_for_textID(0xa425); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_UZI: + textfiletext = get_textptr_for_textID(0xa426); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_MP5K: + textfiletext = get_textptr_for_textID(0xa427); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_MP5KSIL: + textfiletext = get_textptr_for_textID(0xa428); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_SPECTRE: + textfiletext = get_textptr_for_textID(0xa429); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_M16: + textfiletext = get_textptr_for_textID(0xa42a); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_FNP90: + textfiletext = get_textptr_for_textID(0xa42b); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_SHOTGUN: + textfiletext = get_textptr_for_textID(0xa42c); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_AUTOSHOT: + textfiletext = get_textptr_for_textID(0xa42d); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_SNIPERRIFLE: + textfiletext = get_textptr_for_textID(0xa42e); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_RUGER: + textfiletext = get_textptr_for_textID(0xa431); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_GOLDENGUN: + textfiletext = get_textptr_for_textID(0xa432); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_SILVERWPPK: + textfiletext = get_textptr_for_textID(0xa436); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_GOLDWPPK: + textfiletext = get_textptr_for_textID(0xa437); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_LASER: + textfiletext = get_textptr_for_textID(0xa433); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + default: + goto switchD_7f04fe74_caseD_17; + case ITEM_GRENADELAUNCH: + textfiletext = get_textptr_for_textID(0xa42f); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_ROCKETLAUNCH: + textfiletext = get_textptr_for_textID(0xa430); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_FLAREPISTOL: + textfiletext = get_textptr_for_textID(0xa434); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_PITONGUN: + textfiletext = get_textptr_for_textID(0xa435); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_KEYCARD: + textfiletext = get_textptr_for_textID(0xa438); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_KEYYALE: + textfiletext = get_textptr_for_textID(0xa439); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + break; + case ITEM_KEYBOLT: + textfiletext = get_textptr_for_textID(0xa43a); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + } + } + if ((j_text_trigger != 0) && (!morethan2players)) { + strlen = strlen(finalstring); + if (finalstring[strlen - 1] == '\n') { + strlen = strlen(finalstring); + finalstring[strlen - 1] = '\0'; + } + textfiletext = get_textptr_for_textID(0xa400); + string_append_from_obseg_textbank(finalstring,(char *)textfiletext); + string_append_from_obseg_textbank(finalstring,"\n"); + } + return; +} + + + +void display_text_for_weapon_in_lower_left_corner(ITEM_IDS weaponid) + +{ + char acStack100 [100]; + + generate_language_specific_text_for_weapon(acStack100,weaponid); + display_string_in_lower_left_corner(acStack100); + return; +} + + + +undefined8 collect_or_interact_object(char *param_1,int param_2) + +{ + bool bVar1; + char cVar2; + object_standard *objdata; + AMMOTYPES AVar5; + ulonglong uVar3; + char *text; + AMMOTYPES ammotype; + int iVar6; + int iVar7; + s32 sVar8; + u8 *text_00; + undefined8 uVar4; + AMMOTYPES AVar9; + int iVar10; + object_standard *poVar11; + uint amount; + + objdata = *(object_standard **)(param_1 + 4); + if ((pPlayer->bonddead != 0) || (clock_timer == 0)) { + return 0; + } + if (false) { +switchD_7f0502bc_caseD_3: + play_sfx_a1(ptr_sfx_buf,0xe5,NULL); + if (param_2 == 0) { + iVar10 = 4; + } + else { + text_00 = (u8 *)proc_7F08D95C((int)objdata); + if (text_00 == NULL) { + text_00 = get_textptr_for_textID(0xa43f); + } + display_string_in_lower_left_corner((char *)text_00); + iVar10 = 4; + } + } + else { + switch(objdata->type) { + default: + goto switchD_7f0502bc_caseD_3; + case 4: + play_sfx_a1(ptr_sfx_buf,0xe5,NULL); + if (param_2 != 0) { + text_00 = (u8 *)proc_7F08D95C((int)objdata); + if (text_00 == NULL) { + text_00 = get_textptr_for_textID(0xa43c); + } + display_string_in_lower_left_corner((char *)text_00); + } + iVar10 = 4; + break; + case 7: + amount = get_ammo_in_magazine((int)objdata); + add_ammo_to_inventory(*(AMMOTYPES *)(objdata + 1),amount,1,param_2); + iVar10 = 1; + break; + case 8: + bVar1 = false; + set_sound_effect_for_weapontype_collection((int)*(char *)&objdata[1].extrascale); + if (*(char *)&objdata[1].extrascale == '\x1d') { + add_item_to_inventory(ITEM_TRIGGER); + } + else { + if (*(char *)&objdata[1].extrascale == 'X') { + draw_item_in_hand_has_more_ammo(HAND_RIGHT,ITEM_TOKEN); + } + } + if ((objdata->runtime_bitflags & 0x400U) == 0) { + uVar3 = proc_7F08C764(param_1); + bVar1 = uVar3 != 0; + if (param_2 != 0) { + text = (char *)proc_7F08D9A4((int)*(char *)&objdata[1].extrascale); + if (text == NULL) { + if (bVar1) { + display_text_for_weapon_in_lower_left_corner + ((int)*(char *)&objdata[1].extrascale); + } + } + else { + bVar1 = true; + display_string_in_lower_left_corner(text); + } + } + iVar10 = 1; + cVar2 = *(char *)&objdata[1].extrascale; + } + else { + if (*(char *)&objdata[1].extrascale < '!') { + proc_7F08C764(param_1); + } + if (param_2 != 0) { + text = (char *)proc_7F08D95C((int)objdata); + if (text == NULL) { + display_text_for_weapon_in_lower_left_corner + ((int)*(char *)&objdata[1].extrascale); + } + else { + display_string_in_lower_left_corner(text); + } + bVar1 = true; + } + iVar10 = 4; + cVar2 = *(char *)&objdata[1].extrascale; + } + ammotype = get_ammo_type_for_weapon((int)cVar2); + if ((ammotype != 0) && (amount = ammo_collected_from_weapon(objdata), 0 < (int)amount)) + { + iVar6 = check_cur_player_ammo_amount_in_inventory(ammotype); + iVar7 = get_max_ammo_for_type(ammotype); + if (iVar6 < iVar7) { + iVar6 = check_cur_player_ammo_amount_in_inventory(ammotype); + give_cur_player_ammo(ammotype,iVar6 + amount); + if ((!bVar1) && (param_2 != 0)) { + display_text_when_ammo_collected(ammotype,amount); + } + } + } + break; + case 0x14: + ammotype = AMMO_9MM; + AVar5 = 0; + poVar11 = objdata; + while( true ) { + AVar9 = ammotype; + ammotype = AVar9; + if (AVar5 == AMMO_9MM) { + ammotype = AMMO_9MM; + } + amount = (uint)*(ushort *)&poVar11[1].hidden2; + sVar8 = get_num_players(); + if (sVar8 == 1) { + amount = (uint)((float)amount * solo_ammo_multiplier); + } + add_ammo_to_inventory(ammotype,amount,0,param_2); + poVar11 = (object_standard *)&poVar11->obj; + if (AVar9 == AMMO_GGUN) break; + ammotype = AVar9 + AMMO_9MM; + AVar5 = AVar9; + } + play_sfx_a1(ptr_sfx_buf,0xea,NULL); + iVar10 = 1; + break; + case 0x15: + add_BONDdata_watch_armor(*(f32 *)&objdata[1].obj); + play_sfx_a1(ptr_sfx_buf,0x51,NULL); + if (param_2 != 0) { + text_00 = (u8 *)proc_7F08D95C((int)objdata); + if (text_00 == NULL) { + sVar8 = get_num_players(); + if (sVar8 < 3) { + text_00 = get_textptr_for_textID(0xa43d); + } + else { + text_00 = get_textptr_for_textID(0xa43e); + } + } + display_string_in_lower_left_corner((char *)text_00); + } + iVar10 = 1; + } + } + if ((iVar10 == 1) && ((objdata->runtime_bitflags & 0x10U) == 0)) { + proc_7F040D98(objdata,0,(ulonglong)(byte)objdata->hidden2 & 4); + uVar4 = 1; + } + else { + uVar4 = 0; + if (iVar10 != 0) { + proc_7F08C724((int)param_1); + uVar4 = 4; + } + } + return uVar4; +} + + + +void object_collectability_routine(object_standard *param_1) + +{ + char cVar1; + bool bVar2; + longlong lVar3; + BOOL BVar5; + AMMOTYPES AVar6; + int item; + int hand; + int iVar7; + s32 sVar8; + ulonglong uVar4; + AMMOTYPES type; + AMMOTYPES AVar9; + ulonglong uVar10; + f32 fVar11; + float fVar12; + float fVar13; + float fVar14; + f32 extraout_f14; + u32 uStack76; + int iStack72; + int iStack48; + int iStack44; + int iStack40; + AMMOTYPES AStack36; + int iStack28; + int iStack24; + int iStack20; + int iStack8; + int iStack4; + + iStack4 = *(int *)¶m_1->obj; + lVar3 = check_if_collectable_object(iStack4); + if ((lVar3 == 0) || (*(char *)(iStack4 + 3) == '\x11')) { + item = *(int *)(iStack4 + 8); + if (-1 < item << 0xd) { + return; + } + } + else { + item = *(int *)(iStack4 + 8); + if (item << 0xb < 0) { + return; + } + } + if (item << 0xc < 0) { + return; + } + if ((((*(uint *)(iStack4 + 100) & 0x80) != 0) && (0 < *(int *)(*(int *)(iStack4 + 0x6c) + 0xbc)) + ) && (*(int *)(*(int *)(iStack4 + 0x6c) + 0x90) == 0)) { + return; + } + lVar3 = proc_7F03E7AC(iStack4); + if (lVar3 == 0) { + return; + } + cVar1 = *(char *)(iStack4 + 3); + if (cVar1 == '\b') { + iStack8 = *(int *)¶m_1->obj; + cVar1 = *(char *)(iStack8 + 0x80); + if ((cVar1 == '\x1a') || (cVar1 == 'W')) { + if (-1 < *(short *)(iStack8 + 0x82)) { + return; + } + if ((*(uint *)(iStack4 + 100) & 4) != 0) { + return; + } + } + if (((cVar1 == '\x1d') || (cVar1 == '\x1c')) || + ((cVar1 == '\x1b' || + ((((cVar1 == '!' || (cVar1 == '/')) || (cVar1 == '0')) || (cVar1 == '\"')))))) { + if (-1 < *(short *)(iStack8 + 0x82)) { + return; + } + if ((*(uint *)(iStack4 + 100) & 4) != 0) { + return; + } + } + if ((cVar1 == 'V') && ((*(uint *)(iStack4 + 100) & 0x80) != 0)) { + return; + } + BVar5 = is_weapon_in_inv((int)cVar1); + if ((BVar5 != FALSE) && + (AVar6 = get_ammo_type_for_weapon((int)*(char *)(iStack8 + 0x80)), AVar6 != 0)) { + item = get_ammo_count_for_weapon((int)*(char *)(iStack8 + 0x80)); + hand = get_max_ammo_for_weapon((int)*(char *)(iStack8 + 0x80)); + if (hand <= item) { + item = *(int *)(iStack8 + 0x84); + if ((item == 0) && (*(char *)(iStack8 + 0x81) < '\0')) { + return; + } + if (item == 0) { + cVar1 = *(char *)(iStack8 + 0x81); + } + else { + cVar1 = *(char *)(item + 0x80); + } + if (*(int *)(iStack8 + 8) << 3 < 0) { + hand = (int)*(char *)(iStack8 + 0x80); + item = (int)cVar1; + } + else { + item = (int)*(char *)(iStack8 + 0x80); + hand = (int)cVar1; + } + uVar10 = is_item_for_hand_in_inventory(item,hand); + if (uVar10 != 0) { + return; + } + } + } + goto LAB_7f050af0; + } + if (cVar1 == '\a') { + iStack20 = *(int *)¶m_1->obj; + item = check_cur_player_ammo_amount_in_inventory(*(AMMOTYPES *)(iStack20 + 0x80)); + hand = get_max_ammo_for_type(*(AMMOTYPES *)(iStack20 + 0x80)); + if (hand <= item) { + return; + } + goto LAB_7f050af0; + } + if (cVar1 == '\x14') { + iStack24 = *(int *)¶m_1->obj; + iStack28 = 1; + item = do_something_if_object_destroyed(iStack4); + if (item != 0) { + return; + } + AVar6 = 0; + hand = iStack24; + do { + AVar9 = AVar6 + AMMO_9MM; + type = AVar9; + if (AVar6 == AMMO_9MM) { + type = AMMO_9MM; + } + if (*(short *)(hand + 0x82) != 0) { + AStack36 = type; + item = check_cur_player_ammo_amount_in_inventory(type); + iVar7 = get_max_ammo_for_type(AStack36); + if (item < iVar7) { + iStack28 = 0; + item = iStack28; + break; + } + } + hand += 4; + AVar6 = AVar9; + item = iStack28; + } while (AVar9 != AMMO_GGUN); + } + else { + if (cVar1 != '\x15') goto LAB_7f050af0; + iStack40 = *(int *)¶m_1->obj; + iStack44 = 0; + fVar11 = get_BONDdata_watch_armor(); + if (*(float *)(iStack40 + 0x84) <= (float)fVar11) { + iStack44 = 1; + item = iStack44; + } + else { + sVar8 = get_num_players(); + item = iStack44; + if (1 < sVar8) { + item = get_scenario(); + uVar4 = SEXT48(item); + uVar10 = uVar4; + if (uVar4 == 2) { + iStack48 = item; + uVar4 = proc_7F08CF80(); + uVar10 = SEXT48(iStack48); + if (uVar4 != 0) { + iStack44 = 1; + item = iStack44; + goto joined_r0x7f050ae0; + } + } + item = iStack44; + if ((uVar10 == 3) && (checkforgoldengun(), item = iStack44, uVar4 != 0)) { + iStack44 = 1; + item = iStack44; + } + } + } + } +joined_r0x7f050ae0: + if (item != 0) { + return; + } +LAB_7f050af0: + fVar12 = get_curplay_vertical_rotation_in_degrees(); + if ((-0.78539819 <= fVar12) || (-1 < pPlayer->field_1270)) { + item = get_curplayer_positiondata(); + fVar12 = *(float *)(iStack4 + 0x58) - *(float *)(item + 8); + fVar14 = *(float *)(iStack4 + 0x5c) - *(float *)(item + 0xc); + fVar13 = *(float *)(iStack4 + 0x60) - *(float *)(item + 0x10); + if (pPlayer->field_1270 < 0x3c) { + bVar2 = fVar12 * fVar12 + fVar13 * fVar13 <= 10000.00000000; + uVar10 = (ulonglong)bVar2; + if (((bVar2) && (uVar10 = (ulonglong)(-200.00000000 <= fVar14), -200.00000000 <= fVar14) + ) && (uVar10 = 0, fVar14 <= 200.00000000)) { + uVar10 = 1; + } + } + else { + bVar2 = fVar12 * fVar12 + fVar13 * fVar13 <= 122500.00000000; + uVar10 = (ulonglong)bVar2; + if (((bVar2) && (uVar10 = (ulonglong)(-500.00000000 <= fVar14), -500.00000000 <= fVar14) + ) && (uVar10 = 0, fVar14 <= 500.00000000)) { + uVar10 = 1; + } + } + if ((uVar10 != 0) && ((*(uint *)(iStack4 + 0xc) & 0x1000) == 0)) { + uStack76 = *(u32 *)(item + 0x14); + iStack72 = (int)uVar10; + item = proc_7F0B0E24(&uStack76,(f32)fVar14,extraout_f14,*(f32 *)(item + 8)); + uVar10 = SEXT48(iStack72); + if ((item == 0) || (uStack76 != param_1->runtime_ptr_obj_instance_controller)) { + uVar10 = 0; + } + } + if (uVar10 != 0) { + collect_or_interact_object((char *)param_1,1); + } + } + return; +} + + + +undefined8 proc_7F050D30(int param_1,undefined4 *param_2,float *param_3,float *param_4) + +{ + int iVar1; + undefined8 uVar2; + int iVar3; + + if ((*(byte *)(param_1 + 1) & 2) == 0) { + uVar2 = 0; + } + else { + iVar1 = *(int *)(param_1 + 4); + iVar3 = getsubmatrix(*(int *)(iVar1 + 0x14),(uint)param_2,param_3,param_4); + param_2[2] = *(undefined4 *)(iVar3 + 0x38); + if ((float)param_2[2] < 0.00000000) { + *param_2 = *(undefined4 *)(iVar3 + 0x30); + param_2[1] = *(undefined4 *)(iVar3 + 0x34); + *param_4 = 0.00000000; + param_4[1] = 0.00000000; + *param_3 = 0.00000000; + param_3[1] = 0.00000000; + proc_7F03F90C(*(int *)(iVar1 + 0x14),param_3 + 1,param_3,param_4 + 1,param_4); + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +void proc_7F050DE8(int param_1) + +{ + ushort **ppuVar1; + int iVar2; + uint *puVar4; + longlong lVar3; + ushort uVar5; + ushort *partdesc; + ushort *puVar6; + + ppuVar1 = *(ushort ***)(param_1 + 8); + partdesc = *ppuVar1; + if (partdesc != NULL) { + uVar5 = *partdesc; + while( true ) { + uVar5 &= 0xff; + if (uVar5 == 8) { + proc_7F06E970(param_1,partdesc); + puVar6 = *(ushort **)(partdesc + 10); + } + else { + if (uVar5 == 0x12) { + process_12_handle_switch(param_1,partdesc); + puVar6 = *(ushort **)(partdesc + 10); + } + else { + if (uVar5 == 0x17) { + process_17_pointer_to_head(param_1,partdesc); + puVar6 = *(ushort **)(partdesc + 10); + } + else { + if (uVar5 == 0x18) { + iVar2 = *(int *)(partdesc + 2); + puVar4 = (uint *)extract_id_from_object_structure_microcode + (param_1,partdesc); + if ((*(uint *)(iVar2 + 8) != *puVar4) && + (lVar3 = proc_7F04B590((int)ppuVar1,(int)partdesc), lVar3 != 0)) { + proc_7F09C044(*puVar4); + *puVar4 = *(uint *)(iVar2 + 8); + } + puVar6 = *(ushort **)(partdesc + 10); + } + else { + puVar6 = *(ushort **)(partdesc + 10); + } + } + } + } + if ((puVar6 == NULL) && (puVar6 = partdesc, partdesc != NULL)) { + puVar6 = *(ushort **)(partdesc + 6); + while ((puVar6 == NULL && + (partdesc = *(ushort **)(partdesc + 4), puVar6 = partdesc, partdesc != NULL)) + ) { + puVar6 = *(ushort **)(partdesc + 6); + } + } + if (puVar6 == NULL) break; + uVar5 = *puVar6; + partdesc = puVar6; + } + } + return; +} + + + +undefined * +proc_7F050F50(ushort *param_1,int param_2,ushort **param_3,undefined *param_4,uint param_5) + +{ + undefined *puVar1; + f32 scale; + + puVar1 = init_standard_object + ((object_standard *)param_1,(object_header *)param_3, + (object_standard *)param_4,param_5); + if ((puVar1 != NULL) && (*(int *)(param_1 + 10) != 0)) { + set_obj_instance_controller_scale(*(int *)(param_1 + 10),scale); + *(undefined4 *)(*(int *)(param_1 + 10) + 0x18) = *(undefined4 *)(param_2 + 0x1c); + *(undefined4 *)(*(int *)(param_1 + 10) + 0x1c) = + *(undefined4 *)(*(int *)(*(int *)(*(int *)(param_2 + 0x1c) + 8) + 8) + 0x18); + proc_7F03A5A4((int)puVar1,*(int *)(param_2 + 0x18)); + *(undefined **)(param_2 + 0x1d8) = puVar1; + } + return puVar1; +} + + + +void proc_7F051028(ushort *param_1,int param_2) + +{ + ushort uVar1; + + uVar1 = param_1[2]; + load_model((int)(short)uVar1); + proc_7F050F50(param_1,param_2,(ushort **)PitemZ_entries[(int)(short)uVar1].header,NULL,0); + return; +} + + + +void proc_7F051084(ushort *param_1,int param_2) + +{ + *(float *)(param_1 + 0x3a) = (float)*(int *)(param_1 + 0x3a) / 65536.00000000; + proc_7F051028(param_1,param_2); + return; +} + + + +void proc_7F0510C0(undefined2 *param_1,int item,uint param_3) + +{ + dword *pdVar1; + object_standard *poVar2; + dword *pdVar3; + dword *pdVar4; + dword *pdVar5; + int *ptrobjinstance; + dword *pdVar6; + dword adStack144 [30]; + dword adStack24 [5]; + object_header *itemheader; + + itemheader = (object_header *)PitemZ_entries[item].header; + load_model(item); + poVar2 = remove_last_obj_pos_data_entry(); + ptrobjinstance = (int *)get_obj_instance_controller_for_header(itemheader); + pdVar3 = (dword *)proc_7F0515B0((ulonglong)(poVar2 == NULL),(ulonglong)(ptrobjinstance == NULL), + (int)itemheader); + if (poVar2 == NULL) { + poVar2 = remove_last_obj_pos_data_entry(); + } + if (ptrobjinstance == NULL) { + ptrobjinstance = (int *)get_obj_instance_controller_for_header(itemheader); + } + if (((pdVar3 == NULL) || (poVar2 == NULL)) || (ptrobjinstance == NULL)) { + if (ptrobjinstance != NULL) { + set_obj_instance_scale_to_zero(ptrobjinstance); + } + if (poVar2 != NULL) { + set_last_obj_pos_data(poVar2); + } + } + else { + pdVar5 = blank_11_object; + pdVar1 = adStack144; + do { + pdVar4 = pdVar1; + pdVar6 = pdVar5; + *pdVar4 = *pdVar6; + pdVar4[1] = pdVar6[1]; + pdVar4[2] = pdVar6[2]; + pdVar5 = pdVar6 + 3; + pdVar1 = pdVar4 + 3; + } while (pdVar6 + 3 != &DWORD_8003218c); + pdVar4[3] = DWORD_8003218c; + pdVar4[4] = pdVar6[4]; + pdVar5 = adStack144; + pdVar1 = pdVar3; + do { + pdVar6 = pdVar1; + pdVar4 = pdVar5; + pdVar5 = pdVar4 + 3; + *pdVar6 = *pdVar4; + pdVar6[1] = pdVar4[1]; + pdVar6[2] = pdVar4[2]; + pdVar1 = pdVar6 + 3; + } while (pdVar5 != adStack24); + pdVar6[3] = *pdVar5; + pdVar6[4] = pdVar4[4]; + *(short *)(pdVar3 + 1) = (short)item; + pdVar3[2] = param_3 | 0x4000; + *(undefined2 *)((int)pdVar3 + 6) = *param_1; + proc_7F050F50((ushort *)pdVar3,(int)param_1,(ushort **)itemheader,(undefined *)poVar2, + (uint)ptrobjinstance); + } + return; +} + + + +int proc_7F05126C(int param_1,longlong param_2,int param_3) + +{ + int iVar1; + char cVar4; + ulonglong uVar2; + object_standard *poVar3; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iStack20; + object_standard *poStack16; + object_standard *apoStack12 [2]; + int iStack4; + + apoStack12[0] = NULL; + poStack16 = NULL; + iStack20 = -1; + iVar7 = -1; + iVar9 = -1; + iVar5 = dword_80030AF8; + do { + iVar1 = iVar5 * 0x88; + iVar8 = (&DAT_80071e90)[iVar5 * 0x22]; + if (iVar8 == 0) { + if (param_1 == 0) { + iVar8 = iVar5; + if (param_2 == 0) break; + iVar5 += 1; + } + else { + iVar5 += 1; + } + } + else { + if ((*(uint *)(&DAT_80071ee4 + iVar1) & 0x80) == 0) { + if (((&DAT_80071e82)[iVar1] & 4) == 0) { + if (*(short *)(&DAT_80071f02 + iVar1) < 1) { + if (*(int *)(iVar8 + 0x1c) != 0) { + cVar4 = (&DAT_80071f00)[iVar1]; + goto LAB_7f051324; + } +LAB_7f05136c: + iVar6 = iVar5; + if (param_2 == 0) { +LAB_7f0513a8: + if (((*(byte *)(iVar8 + 1) & 2) == 0) && (iVar7 < 0)) { + iVar7 = iVar6; + } + iVar8 = iVar6; + if (-1 < iVar9) { + iVar5 = iVar6 + 1; + goto LAB_7f0513d4; + } + } + else { + iStack4 = iVar5; + uVar2 = proc_7F06C060(*(int *)(&DAT_80071e94 + iVar1),param_3); + iVar6 = iStack4; + iVar8 = iVar9; + if (uVar2 != 0) { + iVar8 = (&DAT_80071e90)[iVar5 * 0x22]; + goto LAB_7f0513a8; + } + } + iVar5 = iVar6 + 1; + iVar9 = iVar8; + } + else { + cVar4 = (&DAT_80071f00)[iVar1]; +LAB_7f051324: + if (((cVar4 == '\x1d') || (cVar4 == '\x1c')) || (cVar4 == '\x1b')) { + if (((*(char **)(iVar8 + 0x1c) == NULL) || + (cVar4 = **(char **)(iVar8 + 0x1c), cVar4 == '\x01')) || + ((cVar4 == '\x02' || (cVar4 == '\x04')))) goto LAB_7f05136c; + iVar5 += 1; + } + else { + iVar5 += 1; + } + } + } + else { + iVar5 += 1; + } + } + else { + iVar5 += 1; + } + } +LAB_7f0513d4: + iVar5 %= 0x1e; + iVar8 = iStack20; + } while (iVar5 != dword_80030AF8); + iStack20 = iVar8; + if (iStack20 < 0) { + poVar3 = (object_standard *) + proc_7F056F08(8,(int *)apoStack12,(int *)&poStack16,(longlong)param_1,(int)param_2, + param_3); + if (poVar3 == NULL) { + if (iVar7 < 0) { + if (apoStack12[0] == NULL) { + if (iVar9 < 0) { + if (poStack16 == NULL) { + poVar3 = NULL; + } + else { + poVar3 = poStack16; + if (poStack16->runtime_ptr_obj_posdata != 0) { + proc_7F041024(poStack16,1); + poVar3 = poStack16; + } + } + } + else { + if ((&DAT_80071e90)[iVar9 * 0x22] != 0) { + proc_7F041024((object_standard *) + (&ProjectileData_start_address + iVar9 * 0x88),1); + } + dword_80030AF8 = (iVar9 + 1) % 0x1e; + poVar3 = (object_standard *)(&ProjectileData_start_address + iVar9 * 0x88); + } + } + else { + poVar3 = apoStack12[0]; + if (apoStack12[0]->runtime_ptr_obj_posdata != 0) { + proc_7F041024(apoStack12[0],1); + poVar3 = apoStack12[0]; + } + } + } + else { + if ((&DAT_80071e90)[iVar7 * 0x22] != 0) { + proc_7F041024((object_standard *)(&ProjectileData_start_address + iVar7 * 0x88), + 1); + } + dword_80030AF8 = (iVar7 + 1) % 0x1e; + poVar3 = (object_standard *)(&ProjectileData_start_address + iVar7 * 0x88); + } + } + } + else { + dword_80030AF8 = (iStack20 + 1) % 0x1e; + poVar3 = (object_standard *)(&ProjectileData_start_address + iStack20 * 0x88); + } + return (int)poVar3; +} + + + +int proc_7F051588(void) + +{ + int iVar1; + + iVar1 = proc_7F05126C(0,0,0); + return iVar1; +} + + + +int proc_7F0515B0(longlong param_1,longlong param_2,int param_3) + +{ + byte bVar1; + ulonglong uVar2; + object_standard *poVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iStack20; + object_standard *poStack16; + object_standard *apoStack12 [2]; + int iStack4; + + apoStack12[0] = NULL; + poStack16 = NULL; + iStack20 = -1; + iVar6 = -1; + iVar8 = -1; + iVar4 = dword_80030AFC; + do { + iVar5 = (&DAT_80072e80)[iVar4 * 0x20]; + if (iVar5 == 0) { + if (param_1 == 0) { + iVar5 = iVar4; + if (param_2 == 0) break; + iVar5 = iVar4 + 1; + } + else { + iVar5 = iVar4 + 1; + } + } + else { + if ((*(uint *)(&DAT_80072ed4 + iVar4 * 0x80) & 0x80) == 0) { + if (*(int *)(iVar5 + 0x1c) == 0) { + if (param_2 == 0) { + bVar1 = *(byte *)(iVar5 + 1); + iVar5 = iVar4; +LAB_7f051688: + if (((bVar1 & 2) == 0) && (iVar6 < 0)) { + iVar6 = iVar5; + } + iVar7 = iVar5; + if (-1 < iVar8) { + iVar5 += 1; + goto LAB_7f0516b0; + } + } + else { + iStack4 = iVar4; + uVar2 = proc_7F06C060(*(int *)(&DAT_80072e84 + iVar4 * 0x80),param_3); + param_1 = (longlong)(int)param_1; + iVar5 = iStack4; + iVar7 = iVar8; + if (uVar2 != 0) { + bVar1 = *(byte *)((&DAT_80072e80)[iVar4 * 0x20] + 1); + goto LAB_7f051688; + } + } + iVar5 += 1; + iVar8 = iVar7; + } + else { + iVar5 = iVar4 + 1; + } + } + else { + iVar5 = iVar4 + 1; + } + } +LAB_7f0516b0: + iVar4 = iVar5 % 10; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar5 == -0x80000000)) { + trap(0x1800); + } + iVar5 = iStack20; + } while (iVar4 != dword_80030AFC); + iStack20 = iVar5; + if (iStack20 < 0) { + poVar3 = (object_standard *) + proc_7F056F08(0x11,(int *)apoStack12,(int *)&poStack16,param_1,(int)param_2,param_3 + ); + if (poVar3 == NULL) { + if (iVar6 < 0) { + if (apoStack12[0] == NULL) { + if (iVar8 < 0) { + if (poStack16 == NULL) { + poVar3 = NULL; + } + else { + poVar3 = poStack16; + if (poStack16->runtime_ptr_obj_posdata != 0) { + proc_7F041024(poStack16,1); + poVar3 = poStack16; + } + } + } + else { + if ((&DAT_80072e80)[iVar8 * 0x20] != 0) { + proc_7F041024((object_standard *)(iVar8 * 0x80 + -0x7ff8d190),1); + } + dword_80030AFC = (iVar8 + 1) % 10; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar8 + 1 == -0x80000000)) { + trap(0x1800); + } + poVar3 = (object_standard *)(iVar8 * 0x80 + -0x7ff8d190); + } + } + else { + poVar3 = apoStack12[0]; + if (apoStack12[0]->runtime_ptr_obj_posdata != 0) { + proc_7F041024(apoStack12[0],1); + poVar3 = apoStack12[0]; + } + } + } + else { + if ((&DAT_80072e80)[iVar6 * 0x20] != 0) { + proc_7F041024((object_standard *)(iVar6 * 0x80 + -0x7ff8d190),1); + } + dword_80030AFC = (iVar6 + 1) % 10; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar6 + 1 == -0x80000000)) { + trap(0x1800); + } + poVar3 = (object_standard *)(iVar6 * 0x80 + -0x7ff8d190); + } + } + } + else { + dword_80030AFC = (iStack20 + 1) % 10; + if (false) { + trap(0x1c00); + } + if ((false) && (iStack20 + 1 == -0x80000000)) { + trap(0x1800); + } + poVar3 = (object_standard *)(iStack20 * 0x80 + -0x7ff8d190); + } + return (int)poVar3; +} + + + +int proc_7F0518A8(void) + +{ + int iVar1; + + iVar1 = proc_7F0515B0(0,0,0); + return iVar1; +} + + + +object_standard * proc_7F0518D0(void) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + object_standard *poVar4; + + puVar3 = (undefined4 *)&DAT_80073370; + iVar2 = 0; + do { + piVar1 = puVar3 + 4; + puVar3 = puVar3 + 0x21; + if (*piVar1 == 0) { + return (object_standard *)(&DAT_80073370 + iVar2); + } + iVar2 += 0x84; + } while (puVar3 < &DAT_80073dc0); + poVar4 = (object_standard *)&DAT_80073370; + iVar2 = 0; + while (((((poVar4->runtime_bitflags & 0x80U) != 0 || ((poVar4->hidden2 & 4U) != 0)) || + (*(int *)(poVar4->runtime_ptr_obj_posdata + 0x1c) != 0)) || + ((*(byte *)(poVar4->runtime_ptr_obj_posdata + 1) & 2) != 0))) { + poVar4 = (object_standard *)&poVar4[1].obj; + iVar2 += 0x84; + if ((object_standard *)&DAT_80073dc0 <= poVar4) { + poVar4 = (object_standard *)&DAT_80073370; + iVar2 = 0; + while ((((poVar4->runtime_bitflags & 0x80U) != 0 || ((poVar4->hidden2 & 4U) != 0)) || + (*(int *)(poVar4->runtime_ptr_obj_posdata + 0x1c) != 0))) { + poVar4 = (object_standard *)&poVar4[1].obj; + iVar2 += 0x84; + if (poVar4 == (object_standard *)&DAT_80073dc0) { + return NULL; + } + } + proc_7F041024(poVar4,1); + return (object_standard *)(&DAT_80073370 + iVar2); + } + } + proc_7F041024(poVar4,1); + return (object_standard *)(&DAT_80073370 + iVar2); +} + + + +void trigger_remote_mine_detonation(void) + +{ + u32 uVar1; + + uVar1 = get_cur_playernum(); + D_80030AF4 |= 1 << (uVar1 & 0x1f); + play_sfx_a1(ptr_sfx_buf,0xf3,NULL); + return; +} + + + +int check_if_entry_is_collectable(char type,char *objposdata) + +{ + char *objposdata_00; + int iVar1; + + if (*objposdata == '\x04') { + if (type == *(char *)(*(int *)(objposdata + 4) + 0x80)) { + return *(int *)(objposdata + 4); + } + objposdata_00 = *(char **)(objposdata + 0x20); + } + else { + objposdata_00 = *(char **)(objposdata + 0x20); + } + while( true ) { + if (objposdata_00 == NULL) { + return 0; + } + iVar1 = check_if_entry_is_collectable(type,objposdata_00); + if (iVar1 != 0) break; + objposdata_00 = *(char **)(objposdata_00 + 0x24); + } + return iVar1; +} + + + +int check_if_item_deposited(char item) + +{ + object_standard *objposdata; + int iVar1; + + objposdata = get_ptr_obj_pos_list_current_entry(); + while( true ) { + while( true ) { + if (objposdata == NULL) { + return 0; + } + iVar1 = check_if_entry_is_collectable(item,(char *)objposdata); + if (iVar1 != 0) break; + objposdata = (object_standard *)objposdata->runtime_MATRIX3; + } + if ((*(uint *)(iVar1 + 100) & 0x80) == 0) break; + objposdata = (object_standard *)objposdata->runtime_MATRIX3; + } + return iVar1; +} + + + +void add_obj_to_temp_proxmine_table(undefined4 *objdata) + +{ + u32 *puVar1; + float fVar2; + + puVar1 = temp_mine_table; + fVar2 = (float)temp_mine_table[0]; + while( true ) { + if (fVar2 == 0.00000000) { + *(undefined4 **)puVar1 = objdata; + return; + } + puVar1 = (u32 *)((float *)puVar1 + 1); + if ((float *)puVar1 == &gas_damage_flag) break; + fVar2 = (float)*puVar1; + } + return; +} + + + +void remove_obj_from_temp_proxmine_table(undefined4 *objdata) + +{ + u32 *puVar1; + undefined4 *puVar2; + + puVar1 = temp_mine_table; + puVar2 = (undefined4 *)temp_mine_table[0]; + while( true ) { + if (objdata == puVar2) { + *(float *)puVar1 = 0.00000000; + return; + } + puVar1 = (u32 *)((float *)puVar1 + 1); + if ((float *)puVar1 == &gas_damage_flag) break; + puVar2 = (undefined4 *)*puVar1; + } + return; +} + + + +void detonate_proxmine_within_range(xyzpoint *xyzpos) + +{ + float minetablevalue; + u32 *minetableentry; + float adjx; + float adjy; + float adjz; + f32 range; + + minetableentry = temp_mine_table; + minetablevalue = (float)temp_mine_table[0]; + while( true ) { + if (minetablevalue == 0.00000000) { + minetablevalue = ((float *)minetableentry)[1]; + } + else { + if (*(short *)((int)minetablevalue + 0x82) == 1) { + adjx = (float)xyzpos->x - *(float *)((int)minetablevalue + 0x58); + adjy = (float)xyzpos->y - *(float *)((int)minetablevalue + 0x5c); + adjz = (float)xyzpos->z - *(float *)((int)minetablevalue + 0x60); + if (adjx * adjx + adjy * adjy + adjz * adjz < 62500.00000000) { + *(undefined2 *)((int)minetablevalue + 0x82) = 0; + minetablevalue = ((float *)minetableentry)[1]; + } + else { + minetablevalue = ((float *)minetableentry)[1]; + } + } + else { + minetablevalue = ((float *)minetableentry)[1]; + } + } + minetableentry = (u32 *)((float *)minetableentry + 2); + if (((minetablevalue != 0.00000000) && (*(short *)((int)minetablevalue + 0x82) == 1)) && + (adjx = (float)xyzpos->x - *(float *)((int)minetablevalue + 0x58), + adjy = (float)xyzpos->y - *(float *)((int)minetablevalue + 0x5c), + adjz = (float)xyzpos->z - *(float *)((int)minetablevalue + 0x60), + adjx * adjx + adjy * adjy + adjz * adjz < 62500.00000000)) { + *(undefined2 *)((int)minetablevalue + 0x82) = 0; + } + if ((float *)minetableentry == &gas_damage_flag) break; + minetablevalue = (float)*minetableentry; + } + return; +} + + + +void check_guard_detonate_proxmine(void) + +{ + int numguards; + int iVar1; + int i; + float xyz [6]; + + numguards = get_numguards(); + i = 0; + if (0 < numguards) { + do { + iVar1 = (int)&ptr_guard_data->chrnum + i; + if ((*(int *)(iVar1 + 0x1c) != 0) && ((*(ushort *)(iVar1 + 0x12) & 0x200) != 0)) { + proc_7F028894(iVar1,(float *)(xyzpoint *)xyz); + detonate_proxmine_within_range((xyzpoint *)xyz); + } + i += 0x1dc; + } while (i < numguards * 0x1dc); + } + return; +} + + + +void link_objects(int *objdata1,int *objdata2) + +{ + undefined uVar1; + undefined uVar2; + + uVar1 = *(undefined *)(objdata2 + 0x20); + uVar2 = *(undefined *)(objdata1 + 0x20); + *(int **)(objdata1 + 0x21) = objdata2; + *(undefined *)((int)objdata1 + 0x81) = uVar1; + *(int **)(objdata2 + 0x21) = objdata1; + *(undefined *)((int)objdata2 + 0x81) = uVar2; + return; +} + + + +undefined * +complete_object_data_block_return_position_entry + (int *objdata,int *modelheader,int *targetposdata,int controller) + +{ + undefined *puVar1; + + puVar1 = init_standard_object + ((object_standard *)objdata,(object_header *)modelheader, + (object_standard *)targetposdata,controller); + if (puVar1 != NULL) { + *puVar1 = 4; + proc_7F052574((int)puVar1,0); + } + return puVar1; +} + + + +undefined * proc_7F051DD8(int param_1,ushort **param_2) + +{ + undefined *puVar1; + + puVar1 = init_object_no_default_pos_controller + ((object_standard *)param_1,(object_header *)param_2); + if (puVar1 != NULL) { + *puVar1 = 4; + proc_7F052574((int)puVar1,0); + } + return puVar1; +} + + + +undefined8 proc_7F051E1C(int param_1,int param_2) + +{ + bool bVar1; + int iVar2; + uint uVar3; + + bVar1 = *(int *)(param_1 + 8) << 3 < 0; + iVar2 = *(int *)(param_1 + 0x10); + if (iVar2 != 0) { + if (*(int *)(param_1 + 0x14) != 0) { + if (-1 < *(int *)(param_1 + 8) << 2) { + uVar3 = (uint)bVar1; + iVar2 = param_2 + uVar3 * 4; + if (*(int *)(iVar2 + 0x160) != 0) { + return 0; + } + *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x18) = *(undefined4 *)(param_2 + 0x1c); + if (bVar1) { + *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x1c) = + *(undefined4 *) + (*(int *)(*(int *)(*(int *)(param_2 + 0x1c) + 8) + 8) + 0x14); + } + else { + *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x1c) = + *(undefined4 *)(*(int *)(*(int *)(*(int *)(param_2 + 0x1c) + 8) + 8) + 0xc) + ; + } + *(undefined4 *)(iVar2 + 0x160) = *(undefined4 *)(param_1 + 0x10); + if ((*(int *)(param_1 + 8) < 0) && + (iVar2 = *(int *)(param_2 + uVar3 * -4 + 0x164), iVar2 != 0)) { + link_objects((int *)param_1,*(int **)(iVar2 + 4)); + } + iVar2 = *(int *)(param_1 + 0x10); + } + proc_7F03A5A4(iVar2,*(int *)(param_2 + 0x18)); + } + } + return 1; +} + + + +undefined * +proc_7F051F30(ushort *param_1,int param_2,ushort **param_3,undefined *param_4,uint param_5) + +{ + undefined *puVar1; + f32 scale; + + puVar1 = complete_object_data_block_return_position_entry + ((int *)param_1,(int *)param_3,(int *)param_4,param_5); + if ((puVar1 != NULL) && (*(int *)(param_1 + 10) != 0)) { + set_obj_instance_controller_scale(*(int *)(param_1 + 10),scale); + proc_7F051E1C((int)param_1,param_2); + } + return puVar1; +} + + + +undefined * proc_7F051FD4(ushort *param_1,int param_2) + +{ + ushort uVar1; + undefined *puVar2; + + uVar1 = param_1[2]; + load_model((int)(short)uVar1); + puVar2 = proc_7F051F30(param_1,param_2,(ushort **)PitemZ_entries[(int)(short)uVar1].header,NULL, + 0); + return puVar2; +} + + + +undefined * proc_7F052030(ushort *param_1,int param_2) + +{ + undefined *puVar1; + + *(float *)(param_1 + 0x3a) = (float)*(int *)(param_1 + 0x3a) / 65536.00000000; + puVar1 = proc_7F051FD4(param_1,param_2); + return puVar1; +} + + + +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +undefined4 * create_new_item_instance_of_model(int model,int iteminstance) + +{ + object_standard *targetposdata; + int *ptrobjinstance; + int *piVar1; + int *piVar2; + int *piVar3; + int *piVar4; + int *objdata; + object_standard *poVar5; + object_standard *poVar6; + int aiStack152 [33]; + int aiStack20 [2]; + int *local_c; + object_header *local_4; + + local_4 = (object_header *)PitemZ_entries[model].header; + load_model(model); + targetposdata = remove_last_obj_pos_data_entry(); + local_c = (int *)get_obj_instance_controller_for_header(local_4); + objdata = (int *)proc_7F05126C((uint)(targetposdata == NULL),(ulonglong)(local_c == NULL), + (int)local_4); + if (targetposdata == NULL) { + targetposdata = remove_last_obj_pos_data_entry(); + } + ptrobjinstance = local_c; + if (local_c == NULL) { + ptrobjinstance = (int *)get_obj_instance_controller_for_header(local_4); + } + if (((objdata == NULL) || (targetposdata == NULL)) || (ptrobjinstance == NULL)) { + objdata = NULL; + if (ptrobjinstance != NULL) { + set_obj_instance_scale_to_zero(ptrobjinstance); + } + if (targetposdata != NULL) { + set_last_obj_pos_data(targetposdata); + } + } + else { + poVar5 = &blank_08_object_preset_1; + piVar3 = aiStack152; + do { + poVar6 = (object_standard *)&poVar5->flags2; + piVar1 = piVar3 + 3; + *piVar3 = *(int *)poVar5; + piVar3[1] = *(int *)&poVar5->obj; + piVar3[2] = poVar5->flags; + poVar5 = poVar6; + piVar3 = piVar1; + } while (poVar6 != (object_standard *)&dword_80032218); + *piVar1 = _dword_80032218; + piVar3 = objdata; + piVar1 = aiStack152; + do { + piVar2 = piVar1 + 3; + piVar4 = piVar3 + 3; + *piVar3 = *piVar1; + piVar3[1] = piVar1[1]; + piVar3[2] = piVar1[2]; + piVar3 = piVar4; + piVar1 = piVar2; + } while (piVar2 != aiStack20); + *piVar4 = *piVar2; + *(char *)(objdata + 0x20) = (char)iteminstance; + *(short *)(objdata + 1) = (short)model; + complete_object_data_block_return_position_entry + (objdata,(int *)local_4,(int *)targetposdata,(int)ptrobjinstance); + } + return (undefined4 *)objdata; +} + + + +void set_0x4_in_runtime_flags_for_item_in_guards_hand(int *GUARDdata,int hand) + +{ + int iVar1; + + if (GUARDdata[hand + 0x58] != 0) { + iVar1 = *(int *)(GUARDdata[hand + 0x58] + 4); + *(uint *)(iVar1 + 100) = *(uint *)(iVar1 + 100) | 4; + } + return; +} + + + +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +undefined * +create_held_weapon(undefined2 *param_1,int param_2,undefined param_3,uint param_4, + undefined4 *param_5,ushort **param_6) + +{ + undefined *ret; + object_standard *poVar1; + object_standard *poVar2; + undefined4 *puVar3; + undefined4 *puVar4; + int *ptrobjinstance; + undefined4 *puVar5; + undefined4 *puVar6; + undefined4 auStack144 [33]; + undefined4 auStack12 [3]; + + if (param_6 == NULL) { + param_6 = (ushort **)PitemZ_entries[param_2].header; + load_model(param_2); + } + ret = (undefined *)remove_last_obj_pos_data_entry(); + ptrobjinstance = (int *)get_obj_instance_controller_for_header((object_header *)param_6); + if (param_5 == NULL) { + param_5 = (undefined4 *) + proc_7F05126C((uint)((object_standard *)ret == NULL), + (ulonglong)(ptrobjinstance == NULL),(int)param_6); + } + if ((object_standard *)ret == NULL) { + ret = (undefined *)remove_last_obj_pos_data_entry(); + } + if (ptrobjinstance == NULL) { + ptrobjinstance = (int *)get_obj_instance_controller_for_header((object_header *)param_6); + } + if (((param_5 == NULL) || ((object_standard *)ret == NULL)) || (ptrobjinstance == NULL)) { + if (ptrobjinstance != NULL) { + set_obj_instance_scale_to_zero(ptrobjinstance); + } + if ((object_standard *)ret != NULL) { + set_last_obj_pos_data((object_standard *)ret); + ret = NULL; + } + } + else { + poVar1 = &blank_08_object_preset_4001; + puVar5 = auStack144; + do { + poVar2 = (object_standard *)&poVar1->flags2; + puVar3 = puVar5 + 3; + *puVar5 = *(undefined4 *)poVar1; + puVar5[1] = *(undefined4 *)&poVar1->obj; + puVar5[2] = poVar1->flags; + poVar1 = poVar2; + puVar5 = puVar3; + } while (poVar2 != (object_standard *)&dword_800322A0); + *puVar3 = _dword_800322A0; + puVar5 = param_5; + puVar3 = auStack144; + do { + puVar4 = puVar3 + 3; + puVar6 = puVar5 + 3; + *puVar5 = *puVar3; + puVar5[1] = puVar3[1]; + puVar5[2] = puVar3[2]; + puVar5 = puVar6; + puVar3 = puVar4; + } while (puVar4 != auStack12); + *puVar6 = *puVar4; + *(undefined *)(param_5 + 0x20) = param_3; + *(short *)(param_5 + 1) = (short)param_2; + param_5[2] = param_4 | 0x4000; + *(undefined2 *)((int)param_5 + 6) = *param_1; + ret = proc_7F051F30((ushort *)param_5,(int)param_1,param_6,ret,(uint)ptrobjinstance); + } + return ret; +} + + + +undefined * +actor_draws_weapon_with_model(undefined2 *param_1,int param_2,undefined param_3,uint param_4) + +{ + undefined *puVar1; + + puVar1 = create_held_weapon(param_1,param_2,param_3,param_4,NULL,NULL); + return puVar1; +} + + + +void proc_7F0523F8(int param_1,int param_2,int **param_3) + +{ + int iVar1; + uint uVar2; + int objinst; + GUARDdata *pGVar3; + int iVar4; + int *piVar5; + undefined8 extraout_a0; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + float **ppfVar6; + float **ppfVar7; + byte bVar8; + float **ppfVar9; + float **ppfVar10; + float afStack152 [18]; + float *apfStack80 [4]; + float *pfStack64; + GUARDdata *pGStack4; + + pGStack4 = *(GUARDdata **)(param_1 + 4); + iVar4 = something_with_weaponpos_of_guarddata_hand(pGStack4,param_2); + pGVar3 = pGStack4; + if (iVar4 != 0) { + iVar1 = *(int *)(iVar4 + 4); + if ((*(uint *)(iVar1 + 100) & 0x800) == 0) { + if (-1 < *(int *)(iVar1 + 0xc) << 0xc) { + uVar2 = *(uint *)(iVar1 + 0x14); + ppfVar9 = (float **)&dword_800322A4; + ppfVar6 = apfStack80; + do { + ppfVar10 = ppfVar9 + 3; + ppfVar7 = ppfVar6 + 3; + *ppfVar6 = *ppfVar9; + ppfVar6[1] = ppfVar9[1]; + ppfVar6[2] = ppfVar9[2]; + ppfVar9 = ppfVar10; + ppfVar6 = ppfVar7; + } while (ppfVar10 != (float **)0x800322e0); + *ppfVar7 = pfRam800322e0; + objinst = pGVar3->MODELdata_pointer; + *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) | 2; + pfStack64 = (float *)proc_7F06C660(objinst,*(ushort **)(uVar2 + 0x1c),0); + apfStack80[0] = pfStack64; + if (param_2 == 1) { + proc_7F058688(3.14159274,extraout_a0,afStack152); + proc_7F058068(apfStack80[0],afStack152); + apfStack80[0] = afStack152; + } + proc_7F0BD714((int)*(short *)(*(int *)(uVar2 + 8) + 0xe) << 6); + instcalcmatrices(apfStack80,uVar2,extraout_a2_lo,extraout_a3_lo); + if (param_3 == NULL) { + return; + } + if ((*(uint *)(iVar1 + 100) & 0x80) != 0) { + return; + } + piVar5 = proc_7F06B120(*param_3,uVar2); + *param_3 = piVar5; + return; + } + bVar8 = *(byte *)(iVar4 + 1); + } + else { + bVar8 = *(byte *)(iVar4 + 1); + } + *(byte *)(iVar4 + 1) = bVar8 & 0xfd; + } + return; +} + + + +void redirect_object_collectability_routines(void) + +{ + object_standard *in_a0_lo; + + object_collectability_routine(in_a0_lo); + return; +} + + + +void proc_7F052574(int param_1,undefined4 param_2) + +{ + int objinst; + ushort **ppuVar1; + undefined2 *puVar2; + undefined4 *puVar3; + ushort *partdesc; + + objinst = *(int *)(*(int *)(param_1 + 4) + 0x14); + if ((objinst != 0) && (*(item_related **)(*(int *)(objinst + 8) + 4) == &prop_weapon_related)) { + ppuVar1 = *(ushort ***)(*(int *)(objinst + 8) + 8); + partdesc = *ppuVar1; + if (partdesc == NULL) { + partdesc = ppuVar1[2]; + } + else { + puVar2 = (undefined2 *)extract_id_from_object_structure_microcode(objinst,partdesc); + *puVar2 = (short)param_2; + partdesc = *(ushort **)(*(int *)(*(int *)(objinst + 8) + 8) + 8); + } + if (partdesc != NULL) { + puVar3 = (undefined4 *)extract_id_from_object_structure_microcode(objinst,partdesc); + *puVar3 = param_2; + } + } + return; +} + + + +longlong proc_7F052604(int param_1) + +{ + int objinst; + ushort **ppuVar1; + ushort *partdesc; + longlong lVar2; + short *psVar3; + int *piVar4; + + objinst = *(int *)(*(int *)(param_1 + 4) + 0x14); + if (objinst == 0) { + lVar2 = 0; + } + else { + if (*(item_related **)(*(int *)(objinst + 8) + 4) == &prop_weapon_related) { + ppuVar1 = *(ushort ***)(*(int *)(objinst + 8) + 8); + partdesc = *ppuVar1; + if (partdesc == NULL) { + partdesc = ppuVar1[2]; + if (partdesc == NULL) { + lVar2 = 0; + } + else { + piVar4 = (int *)extract_id_from_object_structure_microcode(objinst,partdesc); + lVar2 = (longlong)*piVar4; + } + } + else { + psVar3 = (short *)extract_id_from_object_structure_microcode(objinst,partdesc); + lVar2 = (longlong)*psVar3; + } + } + else { + lVar2 = 0; + } + } + return lVar2; +} + + + +undefined8 get_hat_model(int param_1) + +{ + switch(*(undefined2 *)(*(int *)(param_1 + 4) + 4)) { + case 0xd4: + case 0xd5: + case 0xd6: + return 4; + case 0xd7: + case 0xd8: + return 1; + case 0xd9: + case 0xda: + return 3; + case 0xdb: + return 5; + case 0xdc: + case 0xdd: + case 0xde: + return 0; + case 0xdf: + return 2; + default: + return 0xffffffffffffffff; + } +} + + + +void proc_7F0526EC(int param_1,float *param_2) + +{ + short sVar1; + float *pfVar2; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 uVar3; + ushort uVar4; + xyzpoint xStack116; + float fStack104; + float fStack100; + float fStack96; + xyzpoint xStack88; + xyzpoint xStack76; + float afStack64 [16]; + + sVar1 = *(short *)(param_1 + 0x9a); + if ((sVar1 == 5) || (sVar1 == 9)) { + pfVar2 = (float *)(ptr_2xxxpresets + (int)*(short *)(param_1 + 6) * 0x44); + fStack104 = pfVar2[4] * pfVar2[8] - pfVar2[7] * pfVar2[5]; + fStack100 = pfVar2[5] * pfVar2[6] - pfVar2[8] * pfVar2[3]; + fStack96 = pfVar2[3] * pfVar2[7] - pfVar2[6] * pfVar2[4]; + xStack76.x = pfVar2[3] * pfVar2[0xd] + *pfVar2; + xStack76.y = pfVar2[4] * pfVar2[0xd] + pfVar2[1]; + xStack76.z = pfVar2[5] * pfVar2[0xd] + pfVar2[2]; + if (*(short *)(param_1 + 0x9a) == 9) { + xStack76.x = xStack76.x + fStack104 * pfVar2[0xc]; + xStack76.y = xStack76.y + fStack100 * pfVar2[0xc]; + xStack76.z = xStack76.z + fStack96 * pfVar2[0xc]; + } + else { + if (*(int *)(param_1 + 8) << 2 < 0) { + xStack76.x = xStack76.x + fStack104 * pfVar2[0xc]; + xStack76.y = xStack76.y + fStack100 * pfVar2[0xc]; + xStack76.z = xStack76.z + fStack96 * pfVar2[0xc]; + } + else { + xStack76.x = xStack76.x + fStack104 * pfVar2[0xb]; + xStack76.y = xStack76.y + fStack100 * pfVar2[0xb]; + xStack76.z = xStack76.z + fStack96 * pfVar2[0xb]; + } + } + xStack88.x = *(float *)(param_1 + 0x58) - xStack76.x; + xStack88.y = *(float *)(param_1 + 0x5c) - xStack76.y; + xStack88.z = *(float *)(param_1 + 0x60) - xStack76.z; + proc_7F058020((float (*) [4] [4])(param_1 + 0x18),(float (*) [4])param_2); + init_something_copy_posdata_to_it(&xStack88,(int *)afStack64); + proc_7F058068(afStack64,param_2); + if (*(short *)(param_1 + 0x9a) == 9) { + if (*(int *)(param_1 + 8) << 2 < 0) { + proc_7F058688(flt_80053324 - + (*(float *)(param_1 + 0xb4) * flt_80053324) / 360.00000000,extraout_a0 + ,afStack64); + } + else { + proc_7F058688((*(float *)(param_1 + 0xb4) * flt_80053328) / 360.00000000,extraout_a0 + ,afStack64); + } + } + else { + if (*(int *)(param_1 + 8) << 2 < 0) { + proc_7F0585FC(flt_8005332C - + (*(float *)(param_1 + 0xb4) * flt_8005332C) / 360.00000000,extraout_a0 + ,afStack64); + } + else { + proc_7F0585FC((*(float *)(param_1 + 0xb4) * flt_80053330) / 360.00000000,extraout_a0 + ,afStack64); + } + } + proc_7F058068(afStack64,param_2); + init_something_copy_posdata_to_it(&xStack76,(int *)afStack64); + proc_7F058068(afStack64,param_2); + uVar4 = *(ushort *)(param_1 + 0x98); + uVar3 = extraout_a0_00; + } + else { + if ((sVar1 == 6) || (sVar1 == 7)) { + proc_7F058020((float (*) [4] [4])(param_1 + 0x18),(float (*) [4])param_2); + copies_first_3_floats_from_a0_to_a1_plus_0x30((xyzpoint *)(param_1 + 0x58),(int)param_2) + ; + uVar4 = *(ushort *)(param_1 + 0x98); + uVar3 = extraout_a0_01; + } + else { + xStack116.x = *(float *)(param_1 + 0xa8) * *(float *)(param_1 + 0xb4) + + *(float *)(param_1 + 0x58); + xStack116.y = *(float *)(param_1 + 0xac) * *(float *)(param_1 + 0xb4) + + *(float *)(param_1 + 0x5c); + xStack116.z = *(float *)(param_1 + 0xb0) * *(float *)(param_1 + 0xb4) + + *(float *)(param_1 + 0x60); + proc_7F058020((float (*) [4] [4])(param_1 + 0x18),(float (*) [4])param_2); + copies_first_3_floats_from_a0_to_a1_plus_0x30(&xStack116,(int)param_2); + uVar4 = *(ushort *)(param_1 + 0x98); + uVar3 = extraout_a0_02; + } + } + if ((uVar4 & 8) != 0) { + proc_7F058A4C(-1.00000000,uVar3,(int)param_2); + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f052cc8) overlaps instruction at (ram,0x7f052cc4) +// + +void proc_7F052B00(int param_1) + +{ + short sVar1; + undefined4 *puVar2; + undefined4 *puVar3; + float fVar4; + float afStack68 [13]; + float fStack16; + + puVar3 = (undefined4 *)(param_1 + 0xd0); + puVar2 = *(undefined4 **)(*(int *)(**(int **)(*(int *)(param_1 + 0x14) + 8) + 0x14) + 4); + *puVar3 = *puVar2; + *(undefined4 *)(param_1 + 0xd4) = puVar2[1]; + *(undefined4 *)(param_1 + 0xd8) = puVar2[2]; + *(undefined4 *)(param_1 + 0xdc) = puVar2[3]; + *(undefined4 *)(param_1 + 0xe0) = puVar2[4]; + *(undefined4 *)(param_1 + 0xe4) = puVar2[5]; + *(undefined4 *)(param_1 + 0xe8) = puVar2[6]; + if ((*(ushort *)(param_1 + 0x98) & 4) == 0) { + fVar4 = *(float *)(param_1 + 0xb4); + } + else { + if (*(short *)(param_1 + 0x9a) == 4) { + *(float *)(param_1 + 0xe0) = + (float)puVar2[4] + + ((float)puVar2[3] - (float)puVar2[4]) * *(float *)(param_1 + 0xb4); + } + else { + *(float *)(param_1 + 0xd4) = + (float)puVar2[1] + + ((float)puVar2[2] - (float)puVar2[1]) * *(float *)(param_1 + 0xb4); + } + fVar4 = *(float *)(param_1 + 0xb4); + } + if (*(float *)(param_1 + 0x88) <= fVar4) { + **(undefined4 **)(param_1 + 0x68) = 0; + return; + } + proc_7F0526EC(param_1,afStack68); + proc_7F03F540((longlong)(int)puVar3,(longlong)(int)afStack68, + (float *)(*(uint **)(param_1 + 0x68) + 1),*(uint **)(param_1 + 0x68)); + if (*(short *)(param_1 + 0x9a) == 4) { + fVar4 = proc_7F03E9BC((int)puVar3,(int)afStack68); + *(float *)(*(int *)(param_1 + 0x68) + 0x48) = fVar4 + *(float *)(param_1 + 0x5c); + } + else { + if (*(short *)(param_1 + 0x9a) == 8) { + *(float *)(*(int *)(param_1 + 0x68) + 0x48) = *(float *)(param_1 + 0x5c) - flt_80053334; + } + else { + fVar4 = proc_7F03E9BC((int)puVar3,(int)afStack68); + *(float *)(*(int *)(param_1 + 0x68) + 0x48) = fVar4 + fStack16; + if ((*(ushort *)(param_1 + 0x98) & 1) == 0) { + sVar1 = *(short *)(param_1 + 0x9a); + goto LAB_7f052ca0; + } + *(float *)(*(int *)(param_1 + 0x68) + 0x48) = + *(float *)(*(int *)(param_1 + 0x68) + 0x48) - 1000.00000000; + } + } + sVar1 = *(short *)(param_1 + 0x9a); +LAB_7f052ca0: + if (((sVar1 == 6) && (flt_80053338 * *(float *)(param_1 + 0x84) < *(float *)(param_1 + 0xb4))) + || ((sVar1 == 7 && (flt_8005333C * *(float *)(param_1 + 0x84) < *(float *)(param_1 + 0xb4)))) + ) { + *(float *)(*(int *)(param_1 + 0x68) + 0x44) = + *(float *)(*(int *)(param_1 + 0x68) + 0x48) + 50.00000000; + } + else { + if (sVar1 == 8) { + *(float *)(*(int *)(param_1 + 0x68) + 0x44) = *(float *)(param_1 + 0x5c) + 1000.00000000 + ; + } + else { + fVar4 = proc_7F03EA5C((int)puVar3,(int)afStack68); + *(float *)(*(int *)(param_1 + 0x68) + 0x44) = fVar4 + fStack16; + if ((*(ushort *)(param_1 + 0x98) & 1) != 0) { + *(float *)(*(int *)(param_1 + 0x68) + 0x44) = + *(float *)(*(int *)(param_1 + 0x68) + 0x44) + 1000.00000000; + } + } + } + return; +} + + + +void proc_7F052D8C(int param_1) + +{ + short sVar1; + short sVar2; + ushort *partdesc; + int iVar3; + int iVar4; + int **ppiVar5; + int **ppiVar6; + uint uVar7; + uint uVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + int iVar12; + undefined4 *puVar13; + undefined4 *puVar14; + short sVar15; + uint uVar16; + short sVar17; + undefined4 *puVar18; + undefined4 *puVar19; + uint uVar20; + uint uVar21; + int iVar22; + int iVar23; + undefined4 *puVar24; + + if ((*(ushort *)(param_1 + 0x98) & 4) != 0) { + partdesc = *(ushort **)(*(int *)(**(int **)(*(int *)(param_1 + 0x14) + 8) + 0x14) + 0x14); + iVar3 = *(int *)(partdesc + 2); + ppiVar5 = (int **)extract_id_from_object_structure_microcode + (*(int *)(param_1 + 0x14),partdesc); + if (*(short *)(param_1 + 0x9a) == 4) { + sVar15 = (short)(int)(*(float *)(param_1 + 0xe0) + 0.50000000); + } + else { + sVar15 = (short)(int)(*(float *)(param_1 + 0xd4) + 0.50000000); + } + ppiVar6 = ppiVar5; + proc_7F0BD6C4((int)*(short *)(iVar3 + 0xc)); + *(int ***)ppiVar5 = ppiVar6; + iVar23 = 0; + iVar4 = (int)*(short *)(iVar3 + 0xc); + if (*(short *)(iVar3 + 0xc) < 0) { + iVar4 += 3; + } + if (0 < iVar4 >> 2) { + do { + uVar7 = 0; + do { + iVar4 = (int)(*ppiVar5 + iVar23 * 4); + uVar20 = uVar7 + 1; + puVar14 = (undefined4 *)(iVar4 + uVar7 * 0x10); + uVar8 = uVar20 & 3; + if (((int)uVar20 < 0) && (uVar8 != 0)) { + uVar8 -= 4; + } + puVar24 = (undefined4 *)(iVar4 + uVar8 * 0x10); + uVar16 = uVar7 + 2 & 3; + if (((int)(uVar7 + 2) < 0) && (uVar16 != 0)) { + uVar16 -= 4; + } + puVar18 = (undefined4 *)(iVar4 + uVar16 * 0x10); + iVar12 = *(int *)(iVar3 + 8) + iVar23 * 0x10; + uVar21 = uVar7 + 3 & 3; + if (((int)(uVar7 + 3) < 0) && (uVar21 != 0)) { + uVar21 -= 4; + } + puVar13 = (undefined4 *)(iVar12 + uVar16 * 0x10); + puVar19 = (undefined4 *)(iVar4 + uVar21 * 0x10); + puVar9 = (undefined4 *)(iVar12 + uVar7 * 0x10); + puVar11 = (undefined4 *)(iVar12 + uVar8 * 0x10); + puVar10 = (undefined4 *)(iVar12 + uVar21 * 0x10); + if (uVar7 == 0) { + *puVar14 = *puVar9; + puVar14[1] = puVar9[1]; + puVar14[2] = puVar9[2]; + puVar14[3] = puVar9[3]; + *puVar24 = *puVar11; + puVar24[1] = puVar11[1]; + puVar24[2] = puVar11[2]; + puVar24[3] = puVar11[3]; + *puVar18 = *puVar13; + puVar18[1] = puVar13[1]; + puVar18[2] = puVar13[2]; + puVar18[3] = puVar13[3]; + *puVar19 = *puVar10; + puVar19[1] = puVar10[1]; + puVar19[2] = puVar10[2]; + puVar19[3] = puVar10[3]; + } + iVar4 = (int)sVar15; + if (*(short *)(param_1 + 0x9a) == 4) { + sVar1 = *(short *)((int)puVar9 + 2); + if (sVar15 <= sVar1) { + sVar2 = *(short *)puVar9; + if (*(short *)puVar11 == sVar2) { + if (*(short *)(puVar11 + 1) != *(short *)(puVar9 + 1)) { + sVar17 = *(short *)puVar13; + goto LAB_7f0530a4; + } + if (*(short *)((int)puVar11 + 2) == sVar1) { + sVar17 = *(short *)puVar13; + goto LAB_7f0530a4; + } + iVar4 = ((int)sVar1 - (int)sVar15) * + ((int)*(short *)(puVar11 + 2) - (int)*(short *)(puVar9 + 2)) + ; + iVar12 = (int)sVar1 - (int)*(short *)((int)puVar11 + 2); + *(short *)(puVar14 + 2) = + (short)(iVar4 / iVar12) + *(short *)(puVar9 + 2); + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + iVar4 = ((int)*(short *)((int)puVar9 + 2) - (int)sVar15) * + ((int)*(short *)((int)puVar11 + 10) - + (int)*(short *)((int)puVar9 + 10)); + iVar12 = (int)*(short *)((int)puVar9 + 2) - + (int)*(short *)((int)puVar11 + 2); + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + *(short *)((int)puVar14 + 10) = + (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); + } + else { + sVar17 = *(short *)puVar13; +LAB_7f0530a4: + iVar12 = (int)sVar1; + if (sVar17 == sVar2) { + if (*(short *)(puVar13 + 1) == *(short *)(puVar9 + 1)) { + if (*(short *)((int)puVar13 + 2) != sVar1) { + iVar22 = (iVar12 - iVar4) * + ((int)*(short *)(puVar13 + 2) - + (int)*(short *)(puVar9 + 2)); + iVar12 -= *(short *)((int)puVar13 + 2); + *(short *)(puVar14 + 2) = + (short)(iVar22 / iVar12) + *(short *)(puVar9 + 2); + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar22 == -0x80000000)) { + trap(0x1800); + } + iVar4 = ((int)*(short *)((int)puVar9 + 2) - iVar4) * + ((int)*(short *)((int)puVar13 + 10) - + (int)*(short *)((int)puVar9 + 10)); + iVar12 = (int)*(short *)((int)puVar9 + 2) - + (int)*(short *)((int)puVar13 + 2); + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + *(short *)((int)puVar14 + 10) = + (short)(iVar4 / iVar12) + + *(short *)((int)puVar9 + 10); + goto LAB_7f053268; + } + sVar17 = *(short *)puVar10; + } + else { + sVar17 = *(short *)puVar10; + } + } + else { + sVar17 = *(short *)puVar10; + } + if (((sVar17 == sVar2) && + (*(short *)(puVar10 + 1) == *(short *)(puVar9 + 1))) && + (*(short *)((int)puVar10 + 2) != sVar1)) { + iVar22 = (iVar12 - iVar4) * + ((int)*(short *)(puVar10 + 2) - + (int)*(short *)(puVar9 + 2)); + iVar12 -= *(short *)((int)puVar10 + 2); + *(short *)(puVar14 + 2) = + (short)(iVar22 / iVar12) + *(short *)(puVar9 + 2); + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar22 == -0x80000000)) { + trap(0x1800); + } + iVar4 = ((int)*(short *)((int)puVar9 + 2) - iVar4) * + ((int)*(short *)((int)puVar10 + 10) - + (int)*(short *)((int)puVar9 + 10)); + iVar12 = (int)*(short *)((int)puVar9 + 2) - + (int)*(short *)((int)puVar10 + 2); + *(short *)((int)puVar14 + 10) = + (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + } + } +LAB_7f053268: + *(short *)((int)puVar14 + 2) = sVar15; + } + } + else { + sVar1 = *(short *)puVar9; + if (sVar1 <= sVar15) { + sVar2 = *(short *)((int)puVar9 + 2); + iVar12 = (int)sVar15; + if (*(short *)((int)puVar11 + 2) == sVar2) { + if (*(short *)(puVar11 + 1) == *(short *)(puVar9 + 1)) { + if (*(short *)puVar11 != sVar1) { + iVar4 = (iVar12 - (int)sVar1) * + ((int)*(short *)(puVar11 + 2) - + (int)*(short *)(puVar9 + 2)); + iVar22 = (int)*(short *)puVar11 - (int)sVar1; + *(short *)(puVar14 + 2) = + (short)(iVar4 / iVar22) + *(short *)(puVar9 + 2); + if (iVar22 == 0) { + trap(0x1c00); + } + if ((iVar22 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + iVar4 = (iVar12 - (int)*(short *)puVar9) * + ((int)*(short *)((int)puVar11 + 10) - + (int)*(short *)((int)puVar9 + 10)); + iVar12 = (int)*(short *)puVar11 - (int)*(short *)puVar9; + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + *(short *)((int)puVar14 + 10) = + (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); + *(short *)puVar14 = sVar15; + goto LAB_7f053538; + } + sVar17 = *(short *)((int)puVar13 + 2); + } + else { + sVar17 = *(short *)((int)puVar13 + 2); + } + } + else { + sVar17 = *(short *)((int)puVar13 + 2); + } + iVar22 = (int)sVar1; + if (sVar17 == sVar2) { + if (*(short *)(puVar13 + 1) == *(short *)(puVar9 + 1)) { + if (*(short *)puVar13 != sVar1) { + iVar4 = (iVar12 - iVar22) * + ((int)*(short *)(puVar13 + 2) - + (int)*(short *)(puVar9 + 2)); + iVar22 = *(short *)puVar13 - iVar22; + *(short *)(puVar14 + 2) = + (short)(iVar4 / iVar22) + *(short *)(puVar9 + 2); + if (iVar22 == 0) { + trap(0x1c00); + } + if ((iVar22 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + iVar4 = (iVar12 - (int)*(short *)puVar9) * + ((int)*(short *)((int)puVar13 + 10) - + (int)*(short *)((int)puVar9 + 10)); + iVar12 = (int)*(short *)puVar13 - (int)*(short *)puVar9; + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + *(short *)((int)puVar14 + 10) = + (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); + *(short *)puVar14 = sVar15; + goto LAB_7f053538; + } + sVar17 = *(short *)((int)puVar10 + 2); + } + else { + sVar17 = *(short *)((int)puVar10 + 2); + } + } + else { + sVar17 = *(short *)((int)puVar10 + 2); + } + if (sVar17 == sVar2) { + if (*(short *)(puVar10 + 1) == *(short *)(puVar9 + 1)) { + if (*(short *)puVar10 == sVar1) { + *(short *)puVar14 = sVar15; + } + else { + iVar12 = (iVar4 - iVar22) * + ((int)*(short *)(puVar10 + 2) - + (int)*(short *)(puVar9 + 2)); + iVar22 = *(short *)puVar10 - iVar22; + *(short *)(puVar14 + 2) = + (short)(iVar12 / iVar22) + *(short *)(puVar9 + 2); + if (iVar22 == 0) { + trap(0x1c00); + } + if ((iVar22 == -1) && (iVar12 == -0x80000000)) { + trap(0x1800); + } + iVar4 = (iVar4 - (int)*(short *)puVar9) * + ((int)*(short *)((int)puVar10 + 10) - + (int)*(short *)((int)puVar9 + 10)); + iVar12 = (int)*(short *)puVar10 - (int)*(short *)puVar9; + *(short *)((int)puVar14 + 10) = + (short)(iVar4 / iVar12) + *(short *)((int)puVar9 + 10); + if (iVar12 == 0) { + trap(0x1c00); + } + if ((iVar12 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + *(short *)puVar14 = sVar15; + } + } + else { + *(short *)puVar14 = sVar15; + } + } + else { + *(short *)puVar14 = sVar15; + } + } + } +LAB_7f053538: + uVar7 = uVar20; + } while (uVar20 != 4); + iVar23 += 4; + iVar4 = (int)*(short *)(iVar3 + 0xc); + if (*(short *)(iVar3 + 0xc) < 0) { + iVar4 += 3; + } + } while (iVar23 < (iVar4 >> 2) << 2); + } + } + return; +} + + + +void proc_7F053598(int param_1) + +{ + if (-1 < *(int *)(param_1 + 0xf0)) { + proc_7F0B9DBC(*(int *)(param_1 + 0xf0),1); + } + return; +} + + + +void proc_7F0535C4(int param_1) + +{ + if (-1 < *(int *)(param_1 + 0xf0)) { + proc_7F0B9DBC(*(int *)(param_1 + 0xf0),0); + } + return; +} + + + +undefined * +initialize_door(int *stdobject,int *xyzpos,int matrix,int *tile,int param_5,int *runtimexyzpos) + +{ + undefined *puVar1; + uint uVar2; + undefined8 extraout_a0; + float fVar3; + int iVar4; + + puVar1 = proc_7F04071C((int)stdobject); + fVar3 = PitemZ_entries[*(short *)(stdobject + 1)].scale; + uVar2 = mempAllocBytesInBank(0x50,'\x04'); + stdobject[0x1a] = uVar2; + proc_7F058020((float (*) [4] [4])matrix,(float (*) [4])(stdobject + 6)); + matrix_multiply_A1_by_F12(fVar3,extraout_a0,(float *)(float (*) [4])(stdobject + 6)); + stdobject[0x2a] = *(int *)param_5; + stdobject[0x2b] = *(int *)(param_5 + 4); + stdobject[0x2c] = *(int *)(param_5 + 8); + if (stdobject[2] < 0) { + stdobject[0x2d] = stdobject[0x21]; + } + else { + stdobject[0x2d] = 0; + } + stdobject[0x2e] = 0; + *(undefined *)(stdobject + 0x2f) = 0; + *(undefined *)((int)stdobject + 0xbd) = 0; + stdobject[0x32] = 0; + if ((*(ushort *)(stdobject + 0x26) & 4) == 0) { + stdobject[0x33] = 0; + } + else { + uVar2 = mempAllocBytesInBank + ((int)*(short *)(*(int *)(*(int *)(*(int *)(**(int **)(stdobject[5] + 8) + + 0x14) + 0x14) + 4) + 0xc) << 4, + '\x04'); + stdobject[0x33] = uVar2; + } + stdobject[0x3c] = -1; + stdobject[0x3d] = 0; + stdobject[0x3e] = 0; + *puVar1 = 2; + *(int **)(puVar1 + 4) = stdobject; + *(int *)(puVar1 + 8) = *xyzpos; + *(int *)(puVar1 + 0xc) = xyzpos[1]; + *(int *)(puVar1 + 0x10) = xyzpos[2]; + *(int **)(puVar1 + 0x14) = tile; + stdobject[0x16] = *runtimexyzpos; + stdobject[0x17] = runtimexyzpos[1]; + iVar4 = runtimexyzpos[2]; + stdobject[2] = stdobject[2] | 0x100; + stdobject[0x18] = iVar4; + proc_7F052B00((int)stdobject); + proc_7F052D8C((int)stdobject); + proc_7F0402B4(stdobject[4],(byte *)(stdobject + 0x1f)); + *(undefined *)(stdobject + 0x1e) = *(undefined *)(stdobject + 0x1f); + *(undefined *)((int)stdobject + 0x79) = *(undefined *)((int)stdobject + 0x7d); + *(undefined *)((int)stdobject + 0x7a) = *(undefined *)((int)stdobject + 0x7e); + *(undefined *)((int)stdobject + 0x7b) = *(undefined *)((int)stdobject + 0x7f); + return puVar1; +} + + + +int proc_7F0537B8(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) + +{ + int iVar1; + float fVar2; + float fVar3; + + if (param_1 <= 200.00000000) { + iVar1 = 0x7fff; + } + else { + if (param_5 <= param_1) { + iVar1 = 0; + } + else { + if (param_2 <= param_1) { + iVar1 = (int)(((param_5 - param_1) * flt_80053340) / (param_5 - param_2)); + } + else { + fVar2 = sqrtf(param_1 - 200.00000000); + fVar3 = sqrtf(param_2 - 200.00000000); + iVar1 = 0x7fff - (int)((fVar2 * flt_80053344) / fVar3); + } + } + } + return iVar1; +} + + + +int proc_7F053894(float *param_1,float param_2,float param_3) + +{ + Player *pPVar1; + s32 sVar2; + int iVar3; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 uVar4; + undefined4 extraout_a1_hi; + undefined4 extraout_a1_hi_00; + undefined4 uVar5; + float in_a1_lo; + undefined4 extraout_a1_lo; + undefined4 extraout_a1_lo_00; + undefined4 uVar6; + float in_a2_lo; + Player **ppPVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + + sVar2 = get_num_players(); + uVar4 = extraout_a0; + uVar5 = extraout_a1_hi; + uVar6 = extraout_a1_lo; + fVar11 = in_a2_lo; + if (0 < sVar2) { + ppPVar7 = ptr_BONDdata_p1; + pPVar1 = ptr_BONDdata_p1[0]; + while( true ) { + iVar3 = pPVar1->position_data_pointer; + fVar8 = *(float *)(iVar3 + 8) - *param_1; + fVar9 = *(float *)(iVar3 + 0xc) - param_1[1]; + fVar10 = *(float *)(iVar3 + 0x10) - param_1[2]; + fVar8 = sqrtf(fVar8 * fVar8 + fVar9 * fVar9 + fVar10 * fVar10); + ppPVar7 = ppPVar7 + 1; + if (fVar11 <= fVar8) { + fVar8 = fVar11; + } + fVar11 = fVar8; + uVar4 = extraout_a0_00; + uVar5 = extraout_a1_hi_00; + uVar6 = extraout_a1_lo_00; + if (ptr_BONDdata_p1 + sVar2 <= ppPVar7) break; + pPVar1 = *ppPVar7; + } + } + iVar3 = proc_7F0537B8(fVar11,in_a1_lo,uVar4,CONCAT44(uVar5,uVar6),in_a2_lo); + return iVar3; +} + + + +void proc_7F05396C(int param_1,float *param_2,float param_3,float param_4) + +{ + int iVar1; + float in_a2_lo; + float in_a3_lo; + + iVar1 = proc_7F053894(param_2,in_a2_lo,in_a3_lo); + music_related_36((longlong)param_1,8,iVar1); + return; +} + + + +int proc_7F0539B8(float param_1,undefined8 param_2,undefined8 param_3) + +{ + int iVar1; + + iVar1 = proc_7F0537B8(param_1,flt_80053348,param_2,param_3,6000.00000000); + return iVar1; +} + + + +void proc_7F0539E4(float *param_1) + +{ + float in_f12; + float in_f14; + + proc_7F053894(param_1,in_f12,in_f14); + return; +} + + + +void sub_GAME_7F053A10(int param_1,float *param_2) + +{ + float in_f12; + float in_f14; + + proc_7F05396C(param_1,param_2,in_f12,in_f14); + return; +} + + + +void proc_7F053A3C(void) + +{ + bool bVar1; + bool bVar2; + undefined4 in_v0_lo; + ulonglong uVar3; + int iVar4; + int in_a0_lo; + undefined4 uStack12; + + bVar1 = *(ALLink_s **)(in_a0_lo + 0xf4) != NULL; + if (bVar1) { + uVar3 = sfxGetArg0Unk3F(*(ALLink_s **)(in_a0_lo + 0xf4)); + in_v0_lo = (undefined4)uVar3; + bVar1 = uVar3 != 0; + } + bVar2 = *(ALLink_s **)(in_a0_lo + 0xf8) != NULL; + if (bVar2) { + uVar3 = sfxGetArg0Unk3F(*(ALLink_s **)(in_a0_lo + 0xf8)); + in_v0_lo = (undefined4)uVar3; + bVar2 = uVar3 != 0; + } + if (bVar1) { + iVar4 = *(int *)(in_a0_lo + 0x10); + } + else { + if (!bVar2) { + return; + } + iVar4 = *(int *)(in_a0_lo + 0x10); + } + proc_7F0539E4((float *)(iVar4 + 8)); + iVar4 = get_controls_locked_flag(); + uStack12 = in_v0_lo; + if (iVar4 != 0) { + uStack12 = 0; + } + if (bVar1) { + music_related_36((longlong)*(int *)(in_a0_lo + 0xf4),8,uStack12); + } + if (bVar2) { + music_related_36((longlong)*(int *)(in_a0_lo + 0xf8),8,uStack12); + } + return; +} + + + +void proc_7F053B10(int param_1) + +{ + ulonglong uVar1; + + if ((*(ALLink_s **)(param_1 + 0xf4) != NULL) && + (uVar1 = sfxGetArg0Unk3F(*(ALLink_s **)(param_1 + 0xf4)), uVar1 != 0)) { + sfxDeactivate(*(int *)(param_1 + 0xf4)); + } + if ((*(ALLink_s **)(param_1 + 0xf8) != NULL) && + (uVar1 = sfxGetArg0Unk3F(*(ALLink_s **)(param_1 + 0xf8)), uVar1 != 0)) { + sfxDeactivate(*(int *)(param_1 + 0xf8)); + } + return; +} + + + +void play_door_opening_soundeffect_0(int param_1) + +{ + undefined4 in_v0_hi; + int in_v0_lo; + ALSndPlayer *data; + undefined4 uVar1; + int iVar2; + int iStack4; + + iStack4 = 0; + proc_7F053B10(param_1); + data = NULL; + if (*(int *)(param_1 + 0xf4) == 0) { + data = (ALSndPlayer *)(param_1 + 0xf4); + } + else { + if (*(int *)(param_1 + 0xf8) != 0) { + uVar1 = *(undefined4 *)(param_1 + 0xa4); + goto LAB_7f053bc8; + } + data = (ALSndPlayer *)(param_1 + 0xf8); + } + uVar1 = *(undefined4 *)(param_1 + 0xa4); +LAB_7f053bc8: + iVar2 = iStack4; + switch(uVar1) { + case 1: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xd3,data); + } + break; + case 2: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,7,data); + } + break; + case 3: + play_sfx_a1(ptr_sfx_buf,0xca,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xcc,data); + } + break; + case 4: + play_sfx_a1(ptr_sfx_buf,0xd6,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xd8,data); + } + break; + case 5: + play_sfx_a1(ptr_sfx_buf,0xbc,NULL); + iVar2 = in_v0_lo; + break; + case 6: + play_sfx_a1(ptr_sfx_buf,7,NULL); + iVar2 = in_v0_lo; + break; + case 7: + play_sfx_a1(ptr_sfx_buf,0xc0,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xbf,data); + } + break; + case 8: + play_sfx_a1(ptr_sfx_buf,0xbc,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,7,data); + } + break; + case 9: + iVar2 = iStack4; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xc2,data); + iVar2 = 0; + } + break; + case 10: + play_sfx_a1(ptr_sfx_buf,0xc4,NULL); + iVar2 = in_v0_lo; + break; + case 0xb: + play_sfx_a1(ptr_sfx_buf,7,NULL); + iVar2 = in_v0_lo; + break; + case 0xc: + play_sfx_a1(ptr_sfx_buf,200,NULL); + iVar2 = in_v0_lo; + break; + case 0xd: + play_sfx_a1(ptr_sfx_buf,7,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,7,data); + } + break; + case 0xe: + iVar2 = iStack4; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xda,data); + iVar2 = 0; + } + break; + case 0xf: + iVar2 = iStack4; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xe1,data); + iVar2 = 0; + } + break; + case 0x10: + play_sfx_a1(ptr_sfx_buf,0xd6,NULL); + iVar2 = in_v0_lo; + break; + case 0x11: + play_sfx_a1(ptr_sfx_buf,7,NULL); + if (CONCAT44(in_v0_hi,in_v0_lo) != 0) { + sub_GAME_7F053A10(in_v0_lo,(float *)(*(int *)(param_1 + 0x10) + 8)); + } + play_sfx_a1(ptr_sfx_buf,0xca,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xcc,data); + } + } + if (iVar2 != 0) { + sub_GAME_7F053A10(iVar2,(float *)(*(int *)(param_1 + 0x10) + 8)); + } + proc_7F053A3C(); + return; +} + + + +void play_door_opening_soundeffect_(int param_1) + +{ + undefined4 in_v0_hi; + int in_v0_lo; + ALSndPlayer *data; + undefined4 uVar1; + int iVar2; + int iStack4; + + iStack4 = 0; + proc_7F053B10(param_1); + data = NULL; + if (*(int *)(param_1 + 0xf4) == 0) { + data = (ALSndPlayer *)(param_1 + 0xf4); + } + else { + if (*(int *)(param_1 + 0xf8) != 0) { + uVar1 = *(undefined4 *)(param_1 + 0xa4); + goto LAB_7f053fb4; + } + data = (ALSndPlayer *)(param_1 + 0xf8); + } + uVar1 = *(undefined4 *)(param_1 + 0xa4); +LAB_7f053fb4: + iVar2 = iStack4; + if (true) { + iVar2 = iStack4; + switch(uVar1) { + case 1: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xd3,data); + } + break; + case 2: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,7,data); + } + break; + case 3: + play_sfx_a1(ptr_sfx_buf,0xca,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xcc,data); + } + break; + case 4: + play_sfx_a1(ptr_sfx_buf,0xd6,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xd8,data); + } + break; + case 7: + play_sfx_a1(ptr_sfx_buf,0xc0,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xbf,data); + } + break; + case 8: + play_sfx_a1(ptr_sfx_buf,0xbc,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,7,data); + } + break; + case 9: + iVar2 = iStack4; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xc2,data); + iVar2 = 0; + } + break; + case 0xd: + play_sfx_a1(ptr_sfx_buf,7,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,7,data); + } + break; + case 0xe: + iVar2 = iStack4; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xda,data); + iVar2 = 0; + } + break; + case 0xf: + iVar2 = iStack4; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xe1,data); + iVar2 = 0; + } + break; + case 0x10: + play_sfx_a1(ptr_sfx_buf,0xd6,NULL); + iVar2 = in_v0_lo; + break; + case 0x11: + play_sfx_a1(ptr_sfx_buf,7,NULL); + if (CONCAT44(in_v0_hi,in_v0_lo) != 0) { + sub_GAME_7F053A10(in_v0_lo,(float *)(*(int *)(param_1 + 0x10) + 8)); + } + play_sfx_a1(ptr_sfx_buf,0xca,NULL); + iVar2 = in_v0_lo; + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0xcc,data); + } + } + } + if (iVar2 != 0) { + sub_GAME_7F053A10(iVar2,(float *)(*(int *)(param_1 + 0x10) + 8)); + } + proc_7F053A3C(); + return; +} + + + +void play_door_closing_soundeffect_0(int param_1) + +{ + longlong in_v0; + longlong lVar1; + + proc_7F053B10(param_1); + lVar1 = 0; + if (true) { + switch(*(undefined4 *)(param_1 + 0xa4)) { + case 1: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + lVar1 = in_v0; + break; + case 2: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + lVar1 = in_v0; + break; + case 3: + play_sfx_a1(ptr_sfx_buf,0xcb,NULL); + lVar1 = in_v0; + break; + case 4: + play_sfx_a1(ptr_sfx_buf,0xd7,NULL); + lVar1 = in_v0; + break; + case 7: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + lVar1 = in_v0; + break; + case 8: + play_sfx_a1(ptr_sfx_buf,0xbb,NULL); + lVar1 = in_v0; + break; + case 9: + play_sfx_a1(ptr_sfx_buf,0xc3,NULL); + lVar1 = in_v0; + break; + case 0xd: + play_sfx_a1(ptr_sfx_buf,7,NULL); + lVar1 = in_v0; + break; + case 0xe: + play_sfx_a1(ptr_sfx_buf,0xdb,NULL); + lVar1 = in_v0; + break; + case 0xf: + play_sfx_a1(ptr_sfx_buf,0xe2,NULL); + lVar1 = in_v0; + break; + case 0x10: + play_sfx_a1(ptr_sfx_buf,0xd7,NULL); + lVar1 = in_v0; + break; + case 0x11: + play_sfx_a1(ptr_sfx_buf,0xcb,NULL); + lVar1 = in_v0; + } + } + if (lVar1 != 0) { + sub_GAME_7F053A10((int)lVar1,(float *)(*(int *)(param_1 + 0x10) + 8)); + } + proc_7F053A3C(); + return; +} + + + +void play_door_closing_soundeffect_1(int param_1) + +{ + longlong in_v0; + longlong lVar1; + + proc_7F053B10(param_1); + lVar1 = 0; + switch(*(undefined4 *)(param_1 + 0xa4)) { + case 1: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + lVar1 = in_v0; + break; + case 2: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + lVar1 = in_v0; + break; + case 3: + play_sfx_a1(ptr_sfx_buf,0xcb,NULL); + lVar1 = in_v0; + break; + case 4: + play_sfx_a1(ptr_sfx_buf,0xd7,NULL); + lVar1 = in_v0; + break; + case 5: + play_sfx_a1(ptr_sfx_buf,0xbb,NULL); + lVar1 = in_v0; + break; + case 6: + play_sfx_a1(ptr_sfx_buf,7,NULL); + lVar1 = in_v0; + break; + case 7: + play_sfx_a1(ptr_sfx_buf,0xd2,NULL); + lVar1 = in_v0; + break; + case 8: + play_sfx_a1(ptr_sfx_buf,0xbb,NULL); + lVar1 = in_v0; + break; + case 9: + play_sfx_a1(ptr_sfx_buf,0xc3,NULL); + lVar1 = in_v0; + break; + case 10: + play_sfx_a1(ptr_sfx_buf,0xc5,NULL); + lVar1 = in_v0; + break; + case 0xb: + play_sfx_a1(ptr_sfx_buf,199,NULL); + lVar1 = in_v0; + break; + case 0xc: + play_sfx_a1(ptr_sfx_buf,0xc9,NULL); + lVar1 = in_v0; + break; + case 0xd: + play_sfx_a1(ptr_sfx_buf,7,NULL); + lVar1 = in_v0; + break; + case 0xe: + play_sfx_a1(ptr_sfx_buf,0xdb,NULL); + lVar1 = in_v0; + break; + case 0xf: + play_sfx_a1(ptr_sfx_buf,0xe2,NULL); + lVar1 = in_v0; + break; + case 0x10: + play_sfx_a1(ptr_sfx_buf,0xd7,NULL); + lVar1 = in_v0; + break; + case 0x11: + play_sfx_a1(ptr_sfx_buf,0xcb,NULL); + lVar1 = in_v0; + } + if (lVar1 != 0) { + sub_GAME_7F053A10((int)lVar1,(float *)(*(int *)(param_1 + 0x10) + 8)); + } + proc_7F053A3C(); + return; +} + + + +void set_door_state(int *objdata,DOORSTATE state) + +{ + objdata[2] = objdata[2] & 0x7fffffff; + objdata[0x19] = objdata[0x19] | 0x200; + play_door_opening_soundeffect_0((int)objdata); + proc_7F053598((int)objdata); + if (*(short *)((int)objdata + 0x9a) == 8) { + objdata[2] = objdata[2] | 0x2000000; + objdata[0x22] = 0; + if ((undefined4 *)objdata[0x1a] != NULL) { + *(undefined4 *)objdata[0x1a] = 0; + } + objdata[2] = objdata[2] & 0xfffffeff; + } + return; +} + + + +void proc_7F0547DC(int param_1) + +{ + *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) & 0x7fffffff; + play_door_opening_soundeffect_(param_1); + return; +} + + + +void proc_7F05480C(int param_1) + +{ + play_door_closing_soundeffect_0(param_1); + if ((*(short *)(param_1 + 0x9a) == 8) && + (proc_7F03FDA8(*(int *)(param_1 + 0x10)), (*(uint *)(param_1 + 100) & 0x80) != 0)) { + **(uint **)(param_1 + 0x6c) = **(uint **)(param_1 + 0x6c) | 1; + guMtxIdentF_unrolled((float (*) [4] [4])(*(int *)(param_1 + 0x6c) + 0x20)); + } + return; +} + + + +void proc_7F05487C(int param_1) + +{ + play_door_closing_soundeffect_1(param_1); + proc_7F0535C4(param_1); + return; +} + + + +void proc_7F0548A4(int param_1,int param_2) + +{ + char cVar1; + undefined uVar2; + + uVar2 = (undefined)param_2; + if (param_2 == 1) { + if ((*(char *)(param_1 + 0xbc) == '\0') || (*(char *)(param_1 + 0xbc) == '\x03')) { + set_door_state((int *)param_1,OPEN); + } + *(undefined *)(param_1 + 0xbc) = uVar2; + } + else { + if (param_2 == 2) { + cVar1 = *(char *)(param_1 + 0xbc); + if ((cVar1 == '\0') && (0.00000000 < *(float *)(param_1 + 0xb4))) { + proc_7F0547DC(param_1); + cVar1 = *(char *)(param_1 + 0xbc); + } + if (((cVar1 != '\0') && (cVar1 != '\x03')) || (0.00000000 < *(float *)(param_1 + 0xb4))) + { + *(undefined *)(param_1 + 0xbc) = uVar2; + } + else { + if (cVar1 == '\x03') { + *(undefined *)(param_1 + 0xbc) = 0; + } + } + } + else { + *(undefined *)(param_1 + 0xbc) = uVar2; + } + } + return; +} + + + +void proc_7F054988(int param_1,longlong param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = (int)param_2; + iVar2 = iVar1; + if (((*(int *)(param_1 + 0xc) << 1 < 0) && (param_2 == 1)) && + (iVar2 = 2, *(char *)(param_1 + 0xbc) == '\0')) { + iVar1 = 3; + } + proc_7F0548A4(param_1,iVar1); + iVar1 = *(int *)(param_1 + 200); + while ((iVar1 != 0 && (iVar1 != param_1))) { + proc_7F0548A4(iVar1,iVar2); + iVar1 = *(int *)(iVar1 + 200); + } + return; +} + + + +ulonglong proc_7F054A20(int param_1) + +{ + char cVar1; + ulonglong uVar2; + + cVar1 = *(char *)(param_1 + 0xbc); + if (((cVar1 == '\0') || (uVar2 = (ulonglong)(cVar1 == '\x03'), cVar1 == '\x03')) && + (uVar2 = 0, *(float *)(param_1 + 0xb4) <= 0.00000000)) { + uVar2 = 1; + } + return uVar2; +} + + + +longlong proc_7F054A64(char *param_1,float *param_2) + +{ + bool bVar1; + longlong lVar2; + longlong lVar3; + uint *puVar4; + float fVar5; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + uint uStack32; + uint auStack28 [7]; + + puVar4 = &uStack32; + lVar3 = 0; + proc_7F03CB8C(param_1,puVar4); + do { + if ((int)uStack32 < 0) { + return lVar3; + } + lVar2 = proc_7F0B3C0C(uStack32,(int *)&fStack60); + bVar1 = lVar3 == 0; + if (lVar2 == 0) { +LAB_7f054b50: + uStack32 = puVar4[1]; + } + else { + lVar3 = 1; + if (bVar1) { + *param_2 = fStack60; + param_2[1] = fStack56; + param_2[2] = fStack52; + param_2[3] = fStack48; + goto LAB_7f054b50; + } + if (fStack60 < *param_2) { + *param_2 = fStack60; + } + if (fStack56 < param_2[1]) { + param_2[1] = fStack56; + fVar5 = param_2[2]; + } + else { + fVar5 = param_2[2]; + } + if (fVar5 < fStack52) { + param_2[2] = fStack52; + fVar5 = param_2[3]; + } + else { + fVar5 = param_2[3]; + } + if (fVar5 < fStack48) { + param_2[3] = fStack48; + goto LAB_7f054b50; + } + uStack32 = puVar4[1]; + } + puVar4 = puVar4 + 1; + } while( true ); +} + + + +int proc_7F054B80(int param_1) + +{ + int iVar1; + + iVar1 = return_nearfog_values(); + if ((iVar1 != 0) && (*(float *)(iVar1 + 8) < *(float *)(param_1 + 0x18))) { + getPlayer_c_lodscalez(); + } + return iVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 proc_7F054C58(void) + +{ + int iVar1; + xyzpoint *pxVar2; + float *pfVar3; + float *in_a0_lo; + float in_a1_lo; + f32 fVar4; + float fVar5; + undefined4 uStack4; + + uStack4 = 1; + iVar1 = return_nearfog_values(); + if (iVar1 != 0) { + pxVar2 = get_BONDdata_position(); + pfVar3 = (float *)get_BONDdata_field_10CC(); + fVar5 = pfVar3[2] * (in_a0_lo[2] - (float)pxVar2->z) + + (*in_a0_lo - (float)pxVar2->x) * *pfVar3 + + (in_a0_lo[1] - (float)pxVar2->y) * pfVar3[1]; + if ((*(float *)(iVar1 + 8) < fVar5) && + (fVar4 = getPlayer_c_lodscalez(), + *(float *)(iVar1 + 4) <= + (((fVar5 - *(float *)(iVar1 + 8)) * 100.00000000) / in_a1_lo + *(float *)(iVar1 + 8)) * + (float)fVar4)) { + uStack4 = 0; + } + } + return uStack4; +} + + + +// WARNING: Instruction at (ram,0x7f054ddc) overlaps instruction at (ram,0x7f054dd8) +// + +uint proc_7F054D6C(char *param_1,float *param_2,float param_3,int param_4) + +{ + ulonglong uVar1; + longlong lVar2; + xyzpoint *pxVar3; + int in_a3_lo; + uint *puVar4; + float fVar5; + float fVar6; + float extraout_f12; + float extraout_f12_00; + float fVar7; + float afStack60 [4]; + uint uStack44; + uint uStack32; + uint auStack28 [7]; + + uStack44 = 0; + proc_7F03CB8C(param_1,&uStack32); + puVar4 = &uStack32; + while( true ) { + if ((int)uStack32 < 0) { + return uStack44; + } + uVar1 = proc_7F0B5E50(uStack32); + if (uVar1 != 0) break; + uStack32 = puVar4[1]; + puVar4 = puVar4 + 1; + } + lVar2 = proc_7F0BB2C8(param_2,extraout_f12); + if (lVar2 == 0) { + return uStack44; + } + if ((in_a3_lo != 0) && (lVar2 = proc_7F054C58(), lVar2 == 0)) { + return uStack44; + } + lVar2 = proc_7F054A64(param_1,afStack60); + if (lVar2 == 0) { + lVar2 = proc_7F078A58(param_2,extraout_f12_00); + uStack44 = (uint)lVar2; + } + else { + lVar2 = proc_7F078BF4(param_2,extraout_f12_00,(float *)param_4); + uStack44 = (uint)lVar2; + } + if (lVar2 == 0) { + return uStack44; + } + pxVar3 = get_BONDdata_position(); + fVar5 = *param_2 - (float)pxVar3->x; + fVar6 = param_2[1] - (float)pxVar3->y; + fVar7 = param_2[2] - (float)pxVar3->z; + if (fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7 <= flt_8005345C) { + return uStack44; + } + return 0; +} + + + +undefined8 proc_7F054EA8(int param_1) + +{ + undefined8 uVar1; + float in_f12; + float in_f14; + + uVar1 = 0; + if (*(char *)(param_1 + 0xbc) == '\x01') { + proc_7F042F18((float *)(param_1 + 0xb4),in_f12,*(float **)(param_1 + 0x84),in_f14, + (float)(param_1 + 0xb8),*(float *)(param_1 + 0x8c)); + uVar1 = 1; + if (*(float *)(param_1 + 0x84) <= *(float *)(param_1 + 0xb4)) { + *(float *)(param_1 + 0xb4) = *(float *)(param_1 + 0x84); + } + else { + if (*(float *)(param_1 + 0xb4) <= 0.00000000) { + *(undefined4 *)(param_1 + 0xb4) = 0; + } + uVar1 = 1; + } + } + else { + if (*(char *)(param_1 + 0xbc) == '\x02') { + proc_7F042F18((float *)(param_1 + 0xb4),0.00000000,NULL,in_f14,(float)(param_1 + 0xb8), + *(float *)(param_1 + 0x8c)); + uVar1 = 1; + if (*(float *)(param_1 + 0x84) <= *(float *)(param_1 + 0xb4)) { + *(float *)(param_1 + 0xb4) = *(float *)(param_1 + 0x84); + } + else { + if (*(float *)(param_1 + 0xb4) <= 0.00000000) { + *(undefined4 *)(param_1 + 0xb4) = 0; + } + } + } + } + return uVar1; +} + + + +void proc_7F054FB4(int param_1) + +{ + ushort *partdesc; + bool bVar1; + longlong lVar2; + int *piVar3; + int iVar4; + int iVar5; + undefined4 *puVar6; + int iVar7; + undefined4 *puVar8; + int iVar9; + longlong lVar10; + undefined4 uVar11; + + bVar1 = false; + lVar10 = 1; + if (param_1 != 0) { + uVar11 = *(undefined4 *)(param_1 + 0xb4); + iVar9 = param_1; + while( true ) { + *(undefined4 *)(iVar9 + 0xfc) = uVar11; + lVar2 = proc_7F054EA8(iVar9); + if (lVar2 == 0) { + iVar9 = *(int *)(iVar9 + 200); + } + else { + bVar1 = true; + iVar9 = *(int *)(iVar9 + 200); + } + if ((iVar9 == param_1) || (iVar9 == 0)) break; + uVar11 = *(undefined4 *)(iVar9 + 0xb4); + } + } + if ((bVar1) && (iVar9 = param_1, param_1 != 0)) { + while( true ) { + proc_7F052B00(iVar9); + lVar10 = proc_7F0448A8(); + if (lVar10 == 0) break; + iVar9 = *(int *)(iVar9 + 200); + if ((iVar9 == param_1) || (iVar9 == 0)) break; + } + } + iVar9 = param_1; + if (param_1 != 0) { + do { + if (bVar1) { + if (lVar10 == 0) { + *(undefined4 *)(iVar9 + 0xb8) = 0; + *(undefined4 *)(iVar9 + 0xb4) = *(undefined4 *)(iVar9 + 0xfc); + proc_7F052B00(iVar9); + } + else { + if (*(char *)(iVar9 + 0xbc) == '\x01') { + if (*(float *)(iVar9 + 0x84) <= *(float *)(iVar9 + 0xb4)) { + *(undefined *)(iVar9 + 0xbc) = 0; + *(undefined4 *)(iVar9 + 0xb8) = 0; + *(undefined4 *)(iVar9 + 0xec) = global_timer; + proc_7F05480C(iVar9); + iVar5 = *(int *)(iVar9 + 0x10); + } + else { + iVar5 = *(int *)(iVar9 + 0x10); + } + } + else { + if (*(char *)(iVar9 + 0xbc) == '\x02') { + if (*(float *)(iVar9 + 0xb4) <= 0.00000000) { + *(undefined *)(iVar9 + 0xbc) = 0; + *(undefined4 *)(iVar9 + 0xb8) = 0; + *(undefined4 *)(iVar9 + 0xec) = 0; + proc_7F05487C(iVar9); + iVar5 = *(int *)(iVar9 + 0x10); + } + else { + iVar5 = *(int *)(iVar9 + 0x10); + } + } + else { + iVar5 = *(int *)(iVar9 + 0x10); + } + } + proc_7F0402B4(iVar5,(byte *)(iVar9 + 0x7c)); + } + proc_7F052D8C(iVar9); + } + else { + if ((*(ushort *)(iVar9 + 0x98) & 4) != 0) { + partdesc = *(ushort **) + (*(int *)(**(int **)(*(int *)(iVar9 + 0x14) + 8) + 0x14) + 0x14); + iVar5 = *(int *)(partdesc + 2); + piVar3 = (int *)extract_id_from_object_structure_microcode + (*(int *)(iVar9 + 0x14),partdesc); + iVar7 = *(int *)(iVar9 + 0xcc); + if (iVar7 == *piVar3) { + *piVar3 = iVar7; + } + else { + lVar2 = 0; + if (*(short *)(iVar5 + 0xc) < 1) { + *piVar3 = iVar7; + } + else { + iVar4 = 0; + iVar7 = *piVar3; + while( true ) { + lVar2 = (longlong)((int)lVar2 + 1); + puVar8 = (undefined4 *)(iVar7 + iVar4); + puVar6 = (undefined4 *)(*(int *)(iVar9 + 0xcc) + iVar4); + iVar4 += 0x10; + *puVar6 = *puVar8; + puVar6[1] = puVar8[1]; + puVar6[2] = puVar8[2]; + puVar6[3] = puVar8[3]; + if (*(short *)(iVar5 + 0xc) <= lVar2) break; + iVar7 = *piVar3; + } + *piVar3 = *(int *)(iVar9 + 0xcc); + } + } + } + } + *(undefined4 *)(iVar9 + 0xfc) = global_timer; + iVar9 = *(int *)(iVar9 + 200); + } while ((iVar9 != param_1) && (iVar9 != 0)); + } + return; +} + + + +void proc_7F05522C(int param_1,float *param_2,float *param_3,int param_4) + +{ + short sVar1; + int iVar2; + float *pfVar3; + float __x; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fStack44; + float fStack36; + float fStack28; + + pfVar3 = (float *)(ptr_2xxxpresets + (int)*(short *)(param_1 + 6) * 0x44); + iVar2 = get_curplayer_positiondata(); + fVar6 = (float)pPlayer->field_498 * 30.00000000 * 1.00000000 * 0.75000000 + + *(float *)(iVar2 + 8); + fVar5 = (float)pPlayer->field_4A0 * 30.00000000 * 1.00000000 * 0.75000000 + + *(float *)(iVar2 + 0x10); + if (param_4 == 0) { + fStack44 = pfVar3[0xe]; + fVar8 = pfVar3[0xd]; + fStack36 = pfVar3[3]; + fStack28 = pfVar3[5]; + } + else { + fStack44 = pfVar3[0xc]; + fVar8 = pfVar3[0xb]; + fStack36 = pfVar3[4] * pfVar3[8] - pfVar3[7] * pfVar3[5]; + fStack28 = pfVar3[3] * pfVar3[7] - pfVar3[6] * pfVar3[4]; + } + __x = convert_angle_using_inverse + ((f32)((*pfVar3 + fStack36 * fVar8) - fVar6), + (f32)((pfVar3[2] + fStack28 * fVar8) - fVar5)); + fVar4 = get_curplay_horizontal_rotation_in_degrees(); + fVar7 = __x - fVar4; + if (__x < fVar4) { + fVar7 = fVar7 + flt_80053460; + } + if (flt_80053468 < fVar7) { + fVar7 = fVar7 - flt_80053464; + sVar1 = *(short *)(param_1 + 0x9a); + } + else { + sVar1 = *(short *)(param_1 + 0x9a); + } + if (sVar1 == 5) { + __x = (*(float *)(param_1 + 0xb4) * flt_80053464) / 360.00000000; + if (*(int *)(param_1 + 8) << 2 < 0) { + __x = flt_80053464 - __x; + } + fVar4 = cosf(__x); + __x = sinf(__x); + fVar5 = convert_angle_using_inverse + ((f32)((*pfVar3 + fStack36 * fVar8 + + (fStack44 - fVar8) * (fStack36 * fVar4 + fStack28 * __x)) - fVar6), + (f32)((pfVar3[2] + fStack28 * fVar8 + + (fStack44 - fVar8) * (-fStack36 * __x + fStack28 * fVar4)) - fVar5) + ); + fVar6 = get_curplay_horizontal_rotation_in_degrees(); + fVar8 = fVar5 - fVar6; + if (fVar5 < fVar6) { + fVar8 = fVar8 + flt_8005346C; + } + if (flt_80053470 < fVar8) { + fVar8 = fVar8 - flt_80053474; + } + } + else { + fVar5 = convert_angle_using_inverse + ((f32)((*pfVar3 + fStack36 * fStack44) - fVar6), + (f32)((pfVar3[2] + fStack28 * fStack44) - fVar5)); + fVar6 = get_curplay_horizontal_rotation_in_degrees(); + fVar8 = fVar5 - fVar6; + if (fVar5 < fVar6) { + fVar8 = fVar8 + flt_80053478; + } + if (flt_8005347C < fVar8) { + fVar8 = fVar8 - flt_80053480; + } + } + if (fVar7 < fVar8) { + *param_2 = fVar7; + *param_3 = fVar8; + } + else { + *param_2 = fVar8; + *param_3 = fVar7; + } + return; +} + + + +undefined4 proc_7F0555F8(int param_1,int param_2) + +{ + int iVar1; + float fStack28; + float afStack24 [3]; + float fStack12; + float fStack8; + undefined4 uStack4; + + uStack4 = 1; + if (DAT_80071df8 == 0) { + proc_7F05522C(param_1,&fStack8,&fStack12,param_2); + if (-flt_80053484 <= fStack8) { + if (fStack8 <= flt_80053484) { + if (-flt_80053484 <= fStack12) { + if (fStack12 <= flt_80053484) { + DAT_80071df8 = *(undefined4 *)(param_1 + 0x10); + return 0; + } + iVar1 = *(int *)(param_1 + 200); + } + else { + iVar1 = *(int *)(param_1 + 200); + } + } + else { + iVar1 = *(int *)(param_1 + 200); + } + } + else { + iVar1 = *(int *)(param_1 + 200); + } + if ((iVar1 != 0) && (iVar1 != param_1)) { + while ((0.00000000 <= fStack8 || (fStack12 < 0.00000000))) { + proc_7F05522C(iVar1,afStack24,&fStack28,param_2); + if ((0.00000000 < fStack8) && (afStack24[0] < fStack8)) { + fStack8 = afStack24[0]; + } + if (fStack12 < 0.00000000) { + if (fStack12 < fStack28) { + fStack12 = fStack28; + iVar1 = *(int *)(iVar1 + 200); + } + else { + iVar1 = *(int *)(iVar1 + 200); + } + } + else { + iVar1 = *(int *)(iVar1 + 200); + } + if ((iVar1 == 0) || (iVar1 == param_1)) break; + } + } + if ((fStack12 - fStack8 < flt_80053488) && + ((fStack8 < 0.00000000 && (0.00000000 < fStack12)))) { + DAT_80071df8 = *(int *)(param_1 + 0x10); + uStack4 = 0; + } + } + return uStack4; +} + + + +int proc_7F055804(char *param_1) + +{ + int iVar1; + longlong lVar2; + float fVar3; + float fVar4; + float fVar5; + float extraout_f12; + uint auStack96 [8]; + uint auStack64 [12]; + char *pcStack16; + int iStack12; + int iStack4; + + iStack4 = 1; + iVar1 = *(int *)(param_1 + 4); + if (((-1 < *(int *)(iVar1 + 8) << 6) && (0.00000000 < *(float *)(iVar1 + 0x84))) && + ((param_1[1] & 2U) != 0)) { + iStack12 = 0; + pcStack16 = (char *)get_curplayer_positiondata(); + fVar3 = *(float *)(iVar1 + 0x58) - *(float *)(pcStack16 + 8); + fVar4 = *(float *)(iVar1 + 0x60) - *(float *)(pcStack16 + 0x10); + fVar5 = *(float *)(iVar1 + 0x5c) - *(float *)(pcStack16 + 0xc); + if (((flt_8005348C <= fVar3 * fVar3 + fVar4 * fVar4) || (200.00000000 <= fVar5)) || + (fVar5 <= -200.00000000)) { + proc_7F03CB8C(param_1,auStack64); + proc_7F03CB8C(pcStack16,auStack96); + lVar2 = proc_7F03DB70((int *)auStack64,(int *)auStack96); + if ((lVar2 != 0) && + (lVar2 = proc_7F03F598((float *)(pcStack16 + 8),extraout_f12,(float *)0x43160000), + lVar2 != 0)) { + iStack12 = 1; + } + } + else { + iStack12 = 1; + } + if (((iStack12 != 0) && (iStack4 = proc_7F0555F8(iVar1,0), iStack4 != 0)) && + (*(int *)(iVar1 + 0xc) < 0)) { + iStack4 = proc_7F0555F8(iVar1,1); + } + } + return iStack4; +} + + + +void proc_7F05599C(int param_1) + +{ + char cVar1; + int iVar2; + uint uVar3; + + iVar2 = *(int *)(param_1 + 4); + cVar1 = *(char *)(iVar2 + 0xbc); + if ((cVar1 == '\x01') || (cVar1 == '\x03')) { + proc_7F054988(iVar2,2); + uVar3 = *(uint *)(iVar2 + 100); + } + else { + if (cVar1 == '\x02') { + proc_7F054988(iVar2,1); + uVar3 = *(uint *)(iVar2 + 100); + } + else { + if (cVar1 == '\0') { + if (0.50000000 < *(float *)(iVar2 + 0xb4)) { + proc_7F054988(iVar2,2); + uVar3 = *(uint *)(iVar2 + 100); + goto LAB_7f055a3c; + } + proc_7F054988(iVar2,1); + } + uVar3 = *(uint *)(iVar2 + 100); + } + } +LAB_7f055a3c: + *(uint *)(iVar2 + 100) = uVar3 | 0x4000; + *(uint *)(iVar2 + 0xc) = *(uint *)(iVar2 + 0xc) & 0xfffffff7; + proc_7F03E6A0(param_1); + return; +} + + + +undefined8 proc_7F055A70(int param_1,int param_2) + +{ + float *pfVar2; + undefined8 uVar1; + float fVar3; + + pfVar2 = (float *)(ptr_2xxxpresets + (int)*(short *)(param_2 + 6) * 0x44); + fVar3 = (pfVar2[3] * pfVar2[7] - pfVar2[6] * pfVar2[4]) * + (*(float *)(param_1 + 0x10) - pfVar2[2]) + + (*(float *)(param_1 + 8) - *pfVar2) * (pfVar2[4] * pfVar2[8] - pfVar2[7] * pfVar2[5]) + + (*(float *)(param_1 + 0xc) - pfVar2[1]) * + (pfVar2[5] * pfVar2[6] - pfVar2[8] * pfVar2[3]); + if ((*(ushort *)(param_2 + 0x98) & 8) != 0) { + fVar3 = -fVar3; + } + if (fVar3 < 0.00000000) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (0.00000000 < fVar3) { + uVar1 = 1; + } + } + return uVar1; +} + + + +void proc_7F055B78(int param_1,int param_2) + +{ + longlong lVar1; + int iVar2; + uint uVar3; + uint uVar4; + + if (((*(int *)(param_2 + 8) << 4 < 0) && (*(char *)(param_2 + 0xbc) == '\0')) && + (*(float *)(param_2 + 0xb4) == 0.00000000)) { + lVar1 = proc_7F055A70(param_1,param_2); + uVar3 = 0; + if ((*(ushort *)(param_2 + 0x98) & 8) == 0) { + if (lVar1 == 0) { + uVar3 = 0x20000000; + } + uVar4 = *(uint *)(param_2 + 8); + } + else { + if (lVar1 == 0) { + uVar4 = *(uint *)(param_2 + 8); + } + else { + uVar3 = 0x20000000; + uVar4 = *(uint *)(param_2 + 8); + } + } + if ((int)((uVar4 ^ uVar3) << 2) < 0) { + uVar3 = *(uint *)(param_2 + 8); + iVar2 = param_2; + while( true ) { + *(uint *)(iVar2 + 8) = uVar3 ^ 0x20000000; + iVar2 = *(int *)(iVar2 + 200); + if ((iVar2 == 0) || (iVar2 == param_2)) break; + uVar3 = *(uint *)(iVar2 + 8); + } + } + } + return; +} + + + +undefined8 proc_7F055C40(int param_1) + +{ + int iVar1; + uint uVar2; + bool bVar3; + int iVar5; + longlong lVar4; + u8 *text; + uint uVar6; + + iVar1 = *(int *)(param_1 + 4); + iVar5 = get_curplayer_positiondata(); + if (*(uint *)(iVar1 + 0x9c) == 0) { + bVar3 = true; + } + else { + lVar4 = proc_7F08CE70(*(uint *)(iVar1 + 0x9c)); + if (lVar4 == 0) { + lVar4 = proc_7F055A70(iVar5,iVar1); + bVar3 = false; + if (lVar4 == 0) { + if ((-1 < *(int *)(iVar1 + 0xc) << 3) && (*(int *)(iVar1 + 0xc) << 4 < 0)) { + bVar3 = true; + } + } + else { + if ((*(int *)(iVar1 + 0xc) << 3 < 0) && (-1 < *(int *)(iVar1 + 0xc) << 4)) { + bVar3 = true; + } + } + } + else { + bVar3 = true; + } + } + lVar4 = proc_7F03E718(iVar1); + if (lVar4 == 0) { + bVar3 = false; + } + if (bVar3) { + proc_7F055B78(iVar5,iVar1); + proc_7F05599C(param_1); + } + else { + if ((*(char *)(iVar1 + 0xbc) == '\0') && (*(float *)(iVar1 + 0xb4) < 0.50000000)) { + uVar6 = *(uint *)(iVar1 + 0xc); + if ((uVar6 & 4) == 0) { + iVar5 = proc_7F08D21C(iVar1); + if ((iVar5 == 0) || (*(int *)(iVar5 + 0x1c) == 0)) { + text = get_textptr_for_textID(0xa440); + display_string_in_lower_left_corner((char *)text); + uVar6 = *(uint *)(iVar1 + 0xc); + } + else { + text = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar5 + 0x1c)); + display_string_in_lower_left_corner((char *)text); + uVar6 = *(uint *)(iVar1 + 0xc); + } + uVar2 = *(uint *)(iVar1 + 100); + } + else { + uVar2 = *(uint *)(iVar1 + 100); + } + *(uint *)(iVar1 + 0xc) = uVar6 | 8; + *(uint *)(iVar1 + 100) = uVar2 | 0x4000; + } + } + return 0; +} + + + +void start_alarm(void) + +{ + if (alarm_timer < 1) { + alarm_timer = 1; + } + return; +} + + + +void deactivate_alarm_sound_effect(void) + +{ + ulonglong uVar1; + + if ((ptr_alarm_sfx != NULL) && (uVar1 = sfxGetArg0Unk3F(ptr_alarm_sfx), uVar1 != 0)) { + sfxDeactivate((int)ptr_alarm_sfx); + } + return; +} + + + +void stop_alarm(void) + +{ + alarm_timer = 0; + deactivate_alarm_sound_effect(); + return; +} + + + +s32 is_alarm_on(void) + +{ + return (s32)(uint)(0 < alarm_timer); +} + + + +void init_trigger_toxic_gas_effect(undefined4 *param_1) + +{ + int iVar1; + + activate_gas_sound_timer = 1; + D_80030AE0 = 0; + D_80030AD0 = *param_1; + flt_80030AD4 = param_1[1]; + flt_80030AD8 = param_1[2]; + iVar1 = get_stage_num(); + if (iVar1 != 0x20) { + gas_damage_flag = 3600.00000000; + } + else { + gas_damage_flag = 120.00000000; + } + gas_cutoff_flag = (uint)(iVar1 != 0x20); + return; +} + + + +void proc_7F055EF8(void) + +{ + ulonglong uVar1; + + if ((ptr_gas_sound != NULL) && (uVar1 = sfxGetArg0Unk3F(ptr_gas_sound), uVar1 != 0)) { + sfxDeactivate((int)ptr_gas_sound); + } + return; +} + + + +u32 check_if_toxic_gas_activated(void) + +{ + return (u32)(uint)(0.00000000 < toxic_gas_sound_timer); +} + + + +void handle_gas_damage(void) + +{ + int iVar2; + ulonglong uVar1; + f32 arg2; + f32 extraout_a0_lo; + s32 arg3; + s32 extraout_a1_lo; + + if ((activate_gas_sound_timer != 0) && + (toxic_gas_sound_timer = toxic_gas_sound_timer + global_timer_delta, + gas_damage_flag <= toxic_gas_sound_timer)) { + toxic_gas_sound_timer = gas_damage_flag; + activate_gas_sound_timer = 0; + } + if (((0.00000000 < toxic_gas_sound_timer) && (disable_player_pickups_flag == 0)) && + (switch_to_solosky2(toxic_gas_sound_timer / gas_damage_flag), gas_cutoff_flag != 0)) { + if (D_80030ADC < global_timer + -0xe1) { + D_80030ADC = global_timer; + arg2 = -0.00000000; + arg3 = 0x62; + if (600.00000000 <= toxic_gas_sound_timer) { + play_sfx_a1(ptr_sfx_buf,0x62,NULL); + arg2 = extraout_a0_lo; + arg3 = extraout_a1_lo; + } + if (1800.00000000 <= toxic_gas_sound_timer) { + record_damage_kills(0.12500000,0.00000000,arg2,arg3,0.00000000); + } + } + if (D_80030AE0 < gas_damage_flag) { + D_80030AE0 = D_80030AE0 + global_timer_delta; + if ((ptr_gas_sound == NULL) && (iVar2 = get_controls_locked_flag(), iVar2 == 0)) { + play_sfx_a1(ptr_sfx_buf,0x66,(ALSndPlayer *)&ptr_gas_sound); + } + if (ptr_gas_sound != NULL) { + sub_GAME_7F053A10((int)ptr_gas_sound,(float *)&D_80030AD0); + } + } + else { + if ((ptr_gas_sound != NULL) && (uVar1 = sfxGetArg0Unk3F(ptr_gas_sound), uVar1 != 0)) { + sfxDeactivate((int)ptr_gas_sound); + } + } + } + return; +} + + + +void set_unset_clock_lock_bits(int clocklockbits,int flag) + +{ + if (flag != 0) { + clock_drawn_flag = clock_drawn_flag & ~clocklockbits; + return; + } + clock_drawn_flag = clock_drawn_flag | clocklockbits; + return; +} + + + +u32 is_clock_drawn_onscreen(void) + +{ + return (u32)(uint)(clock_drawn_flag == 0); +} + + + +void set_clock_time(f32 time) + +{ + clock_time = (float)time; + return; +} + + + +f32 get_clock_time(void) + +{ + return (f32)clock_time; +} + + + +void set_clock_enable(int enable) + +{ + clock_enable = enable; + return; +} + + + +undefined4 get_clock_enable(void) + +{ + return clock_enable; +} + + + +void if_enabled_reset_clock(void) + +{ + if (clock_enable != 0) { + clock_time = clock_time - global_timer_delta; + } + return; +} + + + +undefined4 * proc_7F056210(undefined4 *param_1) + +{ + undefined4 *in_v0_lo; + short sVar1; + short sVar2; + uint *DL; + int iVar3; + int iVar4; + float timedivtemp; + float time; + int timediv3600; + + if (clock_drawn_flag == 0) { + time = clock_time; + if (clock_time < 0.00000000) { + time = -clock_time; + } + timedivtemp = truncf(time / 3600.00000000); + timediv3600 = (int)timedivtemp; + timedivtemp = truncf(time / 60.00000000); + iVar4 = (int)timedivtemp + timediv3600 * -0x3c; + time = truncf((time * 100.00000000) / 60.00000000); + iVar3 = (int)time + timediv3600 * -6000 + iVar4 * -100; + microcode_constructor(param_1); + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = display_ammo_total_in_a1 + (in_v0_lo,(longlong)((timediv3600 % 100) / 10),0x82,2, + ((int)sVar2 + (int)sVar1) - 0x12,2,1); + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = display_ammo_total_in_a1 + (DL,(longlong)(timediv3600 % 10),0x8a,2,((int)sVar2 + (int)sVar1) - 0x12,2,1) + ; + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = proc_7F069A50(DL,(byte *)":\n",0x93,2,((int)sVar2 + (int)sVar1) - 0x12,2,1); + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = display_ammo_total_in_a1 + (DL,(longlong)((iVar4 % 0x3c) / 10),0x9c,2,((int)sVar2 + (int)sVar1) - 0x12,2 + ,1); + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = display_ammo_total_in_a1 + (DL,(longlong)(iVar4 % 10),0xa4,2,((int)sVar2 + (int)sVar1) - 0x12,2,1); + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = proc_7F069A50(DL,(byte *)":\n",0xad,2,((int)sVar2 + (int)sVar1) - 0x12,2,1); + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = display_ammo_total_in_a1 + (DL,(longlong)((iVar3 % 100) / 10),0xb6,2,((int)sVar2 + (int)sVar1) - 0x12,2, + 1); + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + DL = display_ammo_total_in_a1 + (DL,(longlong)(iVar3 % 10),0xbe,2,((int)sVar2 + (int)sVar1) - 0x12,2,1); + param_1 = combiner_bayer_lod_perspective(DL); + } + return param_1; +} + + + +void handle_alarm_gas_timer_calldamage(void) + +{ + s32 alarmon; + int iVar1; + + alarmon = is_alarm_on(); + if (alarmon != 0) { + if ((ptr_alarm_sfx == NULL) && (iVar1 = get_controls_locked_flag(), iVar1 == 0)) { + play_sfx_a1(ptr_sfx_buf,0xa3,(ALSndPlayer *)&ptr_alarm_sfx); + } + alarm_timer += clock_timer; + if (0x708 < alarm_timer) { + stop_alarm(); + } + } + handle_gas_damage(); + if_enabled_reset_clock(); + check_guard_detonate_proxmine(); + D_80030AF4 = 0; + return; +} + + + +void proc_7F056690(void) + +{ + char cVar1; + object_standard *poVar2; + int iVar3; + int iVar4; + object_standard *poVar6; + ushort *puVar7; + longlong lVar5; + + poVar6 = get_ptr_obj_pos_list_current_entry(); + if (poVar6 == NULL) { + return; + } + cVar1 = *(char *)poVar6; + do { + if (cVar1 == '\x01') { + if ((*(byte *)&poVar6->field_0x1 & 2) == 0) { + poVar2 = *(object_standard **)&poVar6->pad; + if ((poVar2->hidden2 & 0x80U) == 0) { + poVar6 = (object_standard *)poVar6->runtime_MATRIX3; + } + else { + iVar3 = poVar2->runtime_ptr_obj_instance_controller; + puVar7 = proc_7F04B478((int)poVar2); + if (puVar7 == NULL) { + return; + } + iVar4 = *(int *)(puVar7 + 2); + if (iVar4 == 0) { + return; + } + lVar5 = proc_7F04B590(*(int *)(poVar2->runtime_ptr_obj_instance_controller + 8), + (int)puVar7); + if (lVar5 == 0) { + poVar6 = (object_standard *)poVar6->runtime_MATRIX3; + } + else { + if (*(int *)(iVar4 + 8) != + *(int *)(*(int *)(iVar3 + 0x10) + (uint)*(ushort *)(iVar4 + 0x1a) * 4)) + { + proc_7F041024(poVar2,1); + return; + } + poVar6 = (object_standard *)poVar6->runtime_MATRIX3; + } + } + } + else { + poVar6 = (object_standard *)poVar6->runtime_MATRIX3; + } + } + else { + poVar6 = (object_standard *)poVar6->runtime_MATRIX3; + } + if (poVar6 == NULL) { + return; + } + cVar1 = *(char *)poVar6; + } while( true ); +} + + + +void drop_inventory(void) + +{ + int *GUARDdata; + s32 sVar1; + BOOL BVar2; + undefined *puVar3; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + ITEM_IDS item; + + GUARDdata = *(int **)(pPlayer->position_data_pointer + 4); + set_0x4_in_runtime_flags_for_item_in_guards_hand(GUARDdata,0); + set_0x4_in_runtime_flags_for_item_in_guards_hand(GUARDdata,1); + item = ITEM_FIST; + do { + sVar1 = proc_7F09B244(item); + if ((-1 < sVar1) && (BVar2 = is_weapon_in_inv(item), BVar2 != FALSE)) { + puVar3 = create_held_weapon((undefined2 *)GUARDdata,sVar1,(char)item,0x20000000,NULL, + NULL); + if (puVar3 != NULL) { + proc_7F04BFD0((int)puVar3,1); + proc_7F04C130((int)puVar3,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + } + } + item += ITEM_FIST; + } while (item != ITEM_END); + return; +} + + + +undefined8 +proc_7F056850(undefined4 *param_1,longlong param_2,float param_3,undefined4 *param_4, + undefined4 *param_5) + +{ + undefined8 uVar1; + longlong lVar2; + undefined4 *in_stack_00000010; + + *param_5 = *param_1; + param_5[1] = param_1[1]; + param_5[2] = param_1[2]; + *in_stack_00000010 = (int)param_2; + if (param_2 == 0) { + uVar1 = 0; + } + else { + if (0.00000000 < (float)param_4) { + lVar2 = proc_7F0B18B8(); + if (lVar2 < 0) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 1; + } + } + return uVar1; +} + + + +u32 get_size_of_setup_object_type(u8 *object) + +{ + if (true) { + switch(object[3]) { + case '\x01': + return 0x40; + case '\x02': + return 2; + case '\x03': + return 0x20; + case '\x04': + return 0x21; + case '\x05': + return 0x20; + case '\x06': + return 0x3b; + case '\a': + return 0x21; + case '\b': + return 0x22; + case '\t': + return 7; + case '\n': + return 0x40; + case '\v': + return 0x95; + case '\f': + return 0x20; + case '\r': + return 0x36; + case '\x0e': + return 3; + case '\x11': + return 0x20; + case '\x12': + return 3; + case '\x13': + return 4; + case '\x14': + return 0x2d; + case '\x15': + return 0x22; + case '\x16': + return 4; + case '\x17': + return 4; + case '\x18': + return 1; + case '\x19': + return 2; + case '\x1a': + return 2; + case '\x1b': + return 2; + case '\x1c': + return 2; + case '\x1d': + return 2; + case '\x1e': + return 4; + case '\x1f': + return 1; + case ' ': + return 4; + case '!': + return 5; + case '\"': + return 1; + case '#': + return 4; + case '$': + return 0x20; + case '%': + return 10; + case '&': + return 4; + case '\'': + return 0x2c; + case '(': + return 0x2d; + case '*': + return 0x20; + case '+': + return 0x20; + case ',': + return 5; + case '-': + return 0x38; + case '.': + return 7; + case '/': + return 0x25; + } + } + return 1; +} + + + +int proc_7F056A88(int param_1) + +{ + u32 uVar1; + int i; + object_standard *object; + + if (-1 < param_1) { + if (ptr_setup_objects == NULL) { + return 0; + } + i = 0; + object = ptr_setup_objects; + if (ptr_setup_objects->type == '0') { + return 0; + } + do { + if (i == param_1) { + return (int)object; + } + uVar1 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar1 * 2); + i += 1; + } while (object->type != '0'); + } + return 0; +} + + + +int proc_7F056B1C(object_standard *param_1) + +{ + u32 uVar1; + object_standard *object; + int i; + + if (ptr_setup_objects != NULL) { + i = 0; + object = ptr_setup_objects; + if (ptr_setup_objects->type == '0') { + return -1; + } + do { + if (object == param_1) { + return i; + } + uVar1 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar1 * 2); + i += 1; + } while (object->type != '0'); + } + return -1; +} + + + +int proc_7F056BA8(int param_1) + +{ + u32 uVar1; + int iVar2; + object_standard *object; + int iVar3; + + if (ptr_setup_objects == NULL) { +LAB_7f056c18: + iVar3 = -1; + } + else { + iVar3 = 0; + if (ptr_setup_objects->type == '0') { + iVar3 = -1; + } + else { + iVar2 = ptr_setup_objects->runtime_ptr_obj_posdata; + object = ptr_setup_objects; + while (param_1 != iVar2) { + uVar1 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar1 * 2); + iVar3 += 1; + if (object->type == '0') goto LAB_7f056c18; + iVar2 = object->runtime_ptr_obj_posdata; + } + } + } + return iVar3; +} + + + +u32 load_model(int modelid) + +{ + object_header *header; + bool bVar1; + + header = (object_header *)PitemZ_entries[modelid].header; + bVar1 = header->offset_obj_table == 0; + if (bVar1) { + load_object_into_memory(header,(u8 *)PitemZ_entries[modelid].filename); + set_objuse_flag_compute_grp_nums_set_obj_loaded + ((object_header *)PitemZ_entries[modelid].header); + } + return (u32)(uint)bVar1; +} + + + +void proc_7F056CA0(int param_1) + +{ + char cVar1; + char *pcVar2; + int iVar3; + float *pfVar4; + float fVar5; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + + pcVar2 = *(char **)(param_1 + 0x10); + proc_7F03E18C((int)pcVar2); + if (*(int *)(param_1 + 0xc) << 0xe < 0) { + if (*(int *)(pcVar2 + 0x14) == 0) { + pcVar2[0x2c] = -1; + } + else { + cVar1 = *(char *)(*(int *)(pcVar2 + 0x14) + 3); + pcVar2[0x2d] = -1; + pcVar2[0x2c] = cVar1; + } + } + else { + iVar3 = proc_7F040078(param_1); + if (iVar3 != 0) { + pfVar4 = (float *)(param_1 + 0x18); + fStack16 = proc_7F03E87C(iVar3,pfVar4); + fStack16 = fStack16 - 30.00000000; + fStack12 = proc_7F03E9BC(iVar3,(int)pfVar4); + fStack8 = proc_7F03EAFC(iVar3,(int)pfVar4); + fStack8 = fStack8 - 30.00000000; + fStack28 = proc_7F03E91C(iVar3,pfVar4); + fStack28 = fStack28 + 30.00000000; + fStack24 = proc_7F03EA5C(iVar3,(int)pfVar4); + fVar5 = proc_7F03EB9C(iVar3,(int)pfVar4); + fStack16 = fStack16 + *(float *)(param_1 + 0x58); + fStack12 = fStack12 + *(float *)(param_1 + 0x5c); + fStack8 = fStack8 + *(float *)(param_1 + 0x60); + fStack28 = fStack28 + *(float *)(param_1 + 0x58); + fStack24 = fStack24 + *(float *)(param_1 + 0x5c); + fStack20 = fVar5 + 30.00000000 + *(float *)(param_1 + 0x60); + proc_7F03E27C(pcVar2,&fStack16,&fStack28,fVar5 + 30.00000000); + } + } + proc_7F03E210((int)pcVar2); + return; +} + + + +int proc_7F056EA0(undefined8 param_1,int param_2) + +{ + int iVar1; + + iVar1 = proc_7F056A88(param_2); + if ((iVar1 != 0) && (true)) { + switch(*(undefined *)(iVar1 + 3)) { + case 1: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0x11: + case 0x14: + case 0x15: + case 0x24: + case 0x27: + case 0x28: + case 0x29: + case 0x2a: + case 0x2b: + case 0x2d: + case 0x2f: + break; + case 2: + case 9: + case 0xe: + case 0x12: + case 0x13: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x25: + case 0x26: + case 0x2c: + case 0x2e: + iVar1 = 0; + } + } + return iVar1; +} + + + +int proc_7F056F08(ulonglong param_1,int *param_2,int *param_3,longlong param_4,int param_5, + int param_6) + +{ + byte bVar1; + ulonglong uVar2; + u32 uVar3; + object_standard *object; + object_standard *poVar4; + object_standard *poVar5; + + poVar4 = NULL; + poVar5 = NULL; + if (ptr_setup_objects != NULL) { + bVar1 = ptr_setup_objects->type; + object = ptr_setup_objects; + while (bVar1 != 0x30) { + if ((param_1 & 0xff) == (ulonglong)bVar1) { + if (object->runtime_ptr_obj_posdata == 0) { + if ((param_4 == 0) && (param_5 == 0)) { + return (int)object; + } + } + else { + if (((((param_1 != 8) && ((object->runtime_bitflags & 0x80U) == 0)) && + ((object->hidden2 & 4U) == 0)) && + (*(int *)(object->runtime_ptr_obj_posdata + 0x1c) == 0)) && + ((param_5 == 0 || + (uVar2 = proc_7F06C060(object->runtime_ptr_obj_instance_controller,param_6), + uVar2 != 0)))) { + if ((poVar4 == NULL) && + ((*(byte *)(object->runtime_ptr_obj_posdata + 1) & 2) == 0)) { + poVar4 = object; + } + if (poVar5 == NULL) { + poVar5 = object; + } + } + } + } + uVar3 = get_size_of_setup_object_type((u8 *)object); + object = (object_standard *)(&object->extrascale + uVar3 * 2); + bVar1 = object->type; + } + } + *(object_standard **)param_2 = poVar4; + *(object_standard **)param_3 = poVar5; + return 0; +} + + + +int proc_7F057080(short param_1) + +{ + short sVar1; + undefined *puVar2; + + if (ptr_last_tag_entry_type16 != NULL) { + sVar1 = *(short *)(ptr_last_tag_entry_type16 + 4); + puVar2 = ptr_last_tag_entry_type16; + while( true ) { + if (param_1 == sVar1) { + return (int)puVar2; + } + puVar2 = *(undefined **)(puVar2 + 8); + if (puVar2 == NULL) break; + sVar1 = *(short *)(puVar2 + 4); + } + } + return 0; +} + + + +int get_handle_to_tagged_object(int object) + +{ + int iVar1; + int iVar2; + + iVar1 = proc_7F057080((short)object); + iVar2 = 0; + if (iVar1 != 0) { + iVar2 = *(int *)(iVar1 + 0xc); + } + if ((iVar2 != 0) && ((*(uint *)(iVar2 + 100) & 0x10) == 0)) { + iVar2 = 0; + } + return iVar2; +} + + + +char * get_ptr_text_for_watch_breifing_page(WATCH_BRIEFING_PAGE page) + +{ + watchMenuObjectiveText *curentry; + u8 *textptr; + WATCH_BRIEFING_PAGE menupage; + + textptr = NULL; + if (ptr_last_briefing_setup_entry_type23 != NULL) { + menupage = ptr_last_briefing_setup_entry_type23->menu; + curentry = ptr_last_briefing_setup_entry_type23; + while (page != menupage) { + curentry = curentry->nextentry; + if (curentry == NULL) goto LAB_7f057150; + menupage = curentry->menu; + } + textptr = get_textptr_for_textID(curentry->text); + } +LAB_7f057150: + if (textptr == NULL) { + if (page == BRIEFING_TITLE) { + textptr = get_textptr_for_textID("E R R O R\n"); + } + else { + if (page == BRIEFING_OVERVIEW) { + textptr = get_textptr_for_textID("no briefing for this mission\n"); + } + else { + textptr = get_textptr_for_textID("\n"); + } + } + } + return (char *)textptr; +} + + + +u32 add_objective(void) + +{ + return num_objective_ptrs[0] + 1; +} + + + +u8 * get_text_for_objective(int objective) + +{ + u8 *textptr; + + if ((objective < 10) && (objective_ptrs[objective] != NULL)) { + textptr = get_textptr_for_textID(objective_ptrs[objective]->text); + } + else { + textptr = NULL; + } + return textptr; +} + + + +DIFFICULTY get_difficulty_for_objective(int objective) + +{ + if ((objective < 10) && (objective_ptrs[objective] != NULL)) { + return (DIFFICULTY)(int)*(char *)((int)&objective_ptrs[objective]->nextentry + 3); + } + return DIFFICULTY_AGENT; +} + + + +int get_status_of_objective(s32 objective) + +{ + u8 uVar1; + longlong lVar2; + ulonglong uVar3; + int iVar4; + u32 uVar5; + BOOL BVar6; + int iVar7; + watchMenuObjectiveText *object; + int iVar8; + + iVar8 = 1; + if (objective < 10) { + object = objective_ptrs[objective]; + if (object == NULL) { + iVar8 = (&DAT_80075d58)[objective]; + } + else { + uVar1 = object->id; + while (uVar1 != '\x18') { + iVar7 = 1; + if (true) { + switch(uVar1) { + case '\x19': + iVar4 = get_handle_to_tagged_object(object->menu); + if (((iVar4 != 0) && (*(int *)(iVar4 + 0x10) != 0)) && + (uVar3 = check_if_object_has_not_been_destroyed(iVar4), uVar3 != 0)) { + iVar7 = 0; + } + break; + case '\x1a': + uVar3 = proc_7F033338(0,object->menu); + if (uVar3 == 0) { + iVar7 = 0; + } + break; + case '\x1b': + uVar3 = proc_7F033338(0,object->menu); + if (uVar3 != 0) { + iVar7 = 2; + } + break; + case '\x1c': + iVar4 = get_handle_to_tagged_object(object->menu); + if (((iVar4 == 0) || (*(int *)(iVar4 + 0x10) == 0)) || + (uVar3 = check_if_object_has_not_been_destroyed(iVar4), uVar3 == 0)) { + iVar7 = 2; + } + else { + lVar2 = proc_7F08CFE0(*(int *)(iVar4 + 0x10)); + if (lVar2 == 0) { + iVar7 = 0; + } + } + break; + case '\x1d': + iVar4 = get_handle_to_tagged_object(object->menu); + if (((iVar4 != 0) && (*(int *)(iVar4 + 0x10) != 0)) && + (lVar2 = proc_7F08CFE0(*(int *)(iVar4 + 0x10)), lVar2 != 0)) { + iVar7 = 0; + } + break; + case '\x1e': + iVar4 = get_handle_to_tagged_object(object->menu); + if (*(int *)&object->reserved == 0) { + if (((iVar4 == 0) || (*(int *)(iVar4 + 0x10) == 0)) || + (uVar3 = check_if_object_has_not_been_destroyed(iVar4), uVar3 == 0)) + { + iVar7 = 2; + } + else { + iVar7 = 0; + } + } + break; + case ' ': + if (*(int *)&object->reserved == 0) { + iVar7 = 0; + } + break; + case '!': + if (object->nextentry == NULL) { + iVar7 = 0; + } + break; + case '\"': + iVar4 = get_keyanalyzer_flag(); + if (iVar4 == 0) { + iVar7 = 0; + } + } + } + if (iVar8 == 1) { + if (iVar7 != 1) { + iVar8 = iVar7; + } + } + else { + if ((iVar8 == 0) && (iVar7 == 2)) { + iVar8 = iVar7; + } + } + uVar5 = get_size_of_setup_object_type((u8 *)object); + object = (watchMenuObjectiveText *)(&object->field_0x0 + uVar5 * 4); + uVar1 = object->id; + } + } + } + BVar6 = get_debug_all_obj_complete_flag(); + if (BVar6 != FALSE) { + iVar8 = 1; + } + return iVar8; +} + + + +u32 check_objectives_complete(void) + +{ + u32 uVar1; + DIFFICULTY objdiff; + DIFFICULTY curdiff; + int iVar2; + int objective; + + objective = 0; + uVar1 = add_objective(); + if (0 < (int)uVar1) { + do { + objdiff = get_difficulty_for_objective(objective); + curdiff = get_current_difficulty(); + if ((objdiff <= curdiff) && (iVar2 = get_status_of_objective(objective), iVar2 != 1)) { + return 0; + } + objective += 1; + uVar1 = add_objective(); + } while (objective < (int)uVar1); + } + return 1; +} + + + +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +void display_objective_status_text_on_status_change(void) + +{ + int objstatus; + DIFFICULTY DVar1; + DIFFICULTY DVar2; + u8 *textfiletext; + undefined4 *puVar3; + undefined4 *puVar4; + undefined4 *puVar5; + undefined4 *puVar6; + int objective; + int iVar7; + int *piVar8; + undefined4 auStack60 [15]; + + iVar7 = 0; + puVar5 = dword_80053610; + puVar3 = auStack60; + do { + puVar6 = puVar5 + 3; + puVar4 = puVar3 + 3; + *puVar3 = *puVar5; + puVar3[1] = puVar5[1]; + puVar3[2] = puVar5[2]; + puVar5 = puVar6; + puVar3 = puVar4; + } while (puVar6 != (undefined4 *)&dword_80053640); + *(undefined2 *)puVar4 = _dword_80053640; + piVar8 = &DAT_80075d58; + objective = 0; + if (-1 < num_objective_ptrs[0]) { + do { + objstatus = get_status_of_objective(objective); + if (objstatus != *piVar8) { + *piVar8 = objstatus; + DVar1 = get_difficulty_for_objective(objective); + DVar2 = get_current_difficulty(); + if (DVar1 <= DVar2) { + if (j_text_trigger == 0) { + textfiletext = get_textptr_for_textID("objective"); + sprintf((char *)auStack60,"%s %c: ",textfiletext,iVar7 + 0x61); + } + else { + textfiletext = get_textptr_for_textID("objective"); + sprintf((char *)auStack60,aSAC,textfiletext,iVar7 + 0x1a); + } + if (objstatus == 1) { + textfiletext = get_textptr_for_textID("completed\n"); + string_append_from_obseg_textbank((char *)auStack60,(char *)textfiletext); + } + else { + if (objstatus == 0) { + textfiletext = get_textptr_for_textID("incomplete\n"); + string_append_from_obseg_textbank + ((char *)auStack60,(char *)textfiletext); + } + else { + if (objstatus == 2) { + textfiletext = get_textptr_for_textID("failed\n"); + string_append_from_obseg_textbank + ((char *)auStack60,(char *)textfiletext); + } + } + } + display_string_in_lower_left_corner((char *)auStack60); + } + } + DVar1 = get_difficulty_for_objective(objective); + DVar2 = get_current_difficulty(); + if (DVar1 <= DVar2) { + iVar7 += 1; + } + objective += 1; + piVar8 = piVar8 + 1; + } while (objective <= num_objective_ptrs[0]); + } + return; +} + + + +void proc_7F057744(ulonglong param_1) + +{ + uint uVar1; + int iVar2; + int iVar3; + + if (ptr_last_enter_room_subobject_entry_type20 != 0) { + iVar3 = *(int *)(ptr_last_enter_room_subobject_entry_type20 + 8); + iVar2 = ptr_last_enter_room_subobject_entry_type20; + while( true ) { + if (iVar3 == 0) { + uVar1 = *(uint *)(iVar2 + 4); + if (uVar1 < 10000) { + iVar3 = *(int *)(ptr_0xxxpresets + uVar1 * 0x2c + 0x28); + } + else { + iVar3 = *(int *)(ptr_2xxxpresets + uVar1 * 0x44 + -0xa6018); + } + if (iVar3 == 0) { + iVar2 = *(int *)(iVar2 + 0xc); + } + else { + if (param_1 == (ulonglong)*(byte *)(iVar3 + 3)) { + *(undefined4 *)(iVar2 + 8) = 1; + iVar2 = *(int *)(iVar2 + 0xc); + } + else { + iVar2 = *(int *)(iVar2 + 0xc); + } + } + } + else { + iVar2 = *(int *)(iVar2 + 0xc); + } + if (iVar2 == 0) break; + iVar3 = *(int *)(iVar2 + 8); + } + } + return; +} + + + +void proc_7F0577E8(int param_1,ulonglong param_2) + +{ + uint uVar1; + int iVar2; + int iVar3; + + if (ptr_last_deposit_in_room_subobject_entry_type21 != 0) { + iVar3 = *(int *)(ptr_last_deposit_in_room_subobject_entry_type21 + 0xc); + iVar2 = ptr_last_deposit_in_room_subobject_entry_type21; + while( true ) { + if (iVar3 == 0) { + if (param_1 == *(int *)(iVar2 + 4)) { + uVar1 = *(uint *)(iVar2 + 8); + if (uVar1 < 10000) { + iVar3 = *(int *)(ptr_0xxxpresets + uVar1 * 0x2c + 0x28); + } + else { + iVar3 = *(int *)(ptr_2xxxpresets + uVar1 * 0x44 + -0xa6018); + } + if (iVar3 == 0) { + iVar2 = *(int *)(iVar2 + 0x10); + } + else { + if (param_2 == (ulonglong)*(byte *)(iVar3 + 3)) { + *(undefined4 *)(iVar2 + 0xc) = 1; + iVar2 = *(int *)(iVar2 + 0x10); + } + else { + iVar2 = *(int *)(iVar2 + 0x10); + } + } + } + else { + iVar2 = *(int *)(iVar2 + 0x10); + } + } + else { + iVar2 = *(int *)(iVar2 + 0x10); + } + if (iVar2 == 0) break; + iVar3 = *(int *)(iVar2 + 0xc); + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void objectiveHandlePhotograph(void) + +{ + int iVar1; + int iVar4; + ulonglong uVar2; + longlong lVar3; + int iVar5; + f32 fVar6; + f32 fVar7; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float afStack36 [2]; + float afStack28 [2]; + float afStack20 [5]; + + if (ptr_last_photo_obj_in_room_subobject_entry_type1E == 0) { + return; + } + iVar4 = *(int *)(ptr_last_photo_obj_in_room_subobject_entry_type1E + 8); + iVar5 = ptr_last_photo_obj_in_room_subobject_entry_type1E; + do { + if (iVar4 == 0) { + iVar4 = get_handle_to_tagged_object(*(int *)(iVar5 + 4)); + if (iVar4 == 0) { +LAB_7f057a84: + iVar5 = *(int *)(iVar5 + 0xc); + } + else { + iVar1 = *(int *)(iVar4 + 0x10); + if (iVar1 == 0) { + iVar5 = *(int *)(iVar5 + 0xc); + } + else { + if ((*(byte *)(iVar1 + 1) & 2) == 0) { + iVar5 = *(int *)(iVar5 + 0xc); + } + else { + if (0.00000000 <= *(float *)(iVar1 + 0x18)) { + uVar2 = check_if_object_has_not_been_destroyed(iVar4); + if ((uVar2 == 0) || + (lVar3 = proc_7F050D30(*(int *)(iVar4 + 0x10),afStack20,afStack28, + afStack36), lVar3 == 0)) goto LAB_7f057a84; + proc_7F03F948(afStack20,afStack28,afStack36,&fStack44,&fStack52); + fVar6 = getPlayer_c_screenleft(); + if ((float)fVar6 < fStack44) { + fVar6 = getPlayer_c_screenleft(); + fVar7 = getPlayer_c_screenwidth(); + if (fStack44 < (float)fVar7 + (float)fVar6) { + fVar6 = getPlayer_c_screenleft(); + if ((float)fVar6 < fStack52) { + fVar6 = getPlayer_c_screenleft(); + fVar7 = getPlayer_c_screenwidth(); + if (fStack52 < (float)fVar7 + (float)fVar6) { + fVar6 = getPlayer_c_screentop(); + if ((float)fVar6 < fStack40) { + fVar6 = getPlayer_c_screentop(); + fVar7 = getPlayer_c_screenheight(); + if (fStack40 < (float)fVar7 + (float)fVar6) { + fVar6 = getPlayer_c_screentop(); + if ((float)fVar6 < fStack48) { + fVar6 = getPlayer_c_screentop(); + fVar7 = getPlayer_c_screenheight(); + if (fStack48 < (float)fVar7 + (float)fVar6) + { + *(undefined4 *)(iVar5 + 8) = 1; + goto LAB_7f057a84; + } + iVar5 = *(int *)(iVar5 + 0xc); + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + } + } + } + } + else { + iVar5 = *(int *)(iVar5 + 0xc); + } + if (iVar5 == 0) { + return; + } + iVar4 = *(int *)(iVar5 + 8); + } while( true ); +} + + + +void proc_7F057AC0(float *param_1) + +{ + u32 randomval; + float tempval; + float firstrandfinal; + float secondrandfinal; + float thirdrandfinal; + + firstrandfinal = dword_80032300; + secondrandfinal = dword_80032304; + thirdrandfinal = dword_80032308; + randomval = get_random_value(); + tempval = (float)randomval; + if ((int)randomval < 0) { + tempval = tempval + 4294967296.00000000; + } + firstrandfinal = tempval * 0.00000000 * 6.28318548 * 0.03125000 - 0.09817477; + randomval = get_random_value(); + tempval = (float)randomval; + if ((int)randomval < 0) { + tempval = tempval + 4294967296.00000000; + } + secondrandfinal = tempval * 0.00000000 * 6.28318548 * 0.03125000 - 0.09817477; + randomval = get_random_value(); + tempval = (float)randomval; + if ((int)randomval < 0) { + tempval = tempval + 4294967296.00000000; + } + thirdrandfinal = tempval * 0.00000000 * 6.28318548 * 0.03125000 - 0.09817477; + proc_7F058714(&firstrandfinal,param_1); + return; +} + + + +void proc_7F057C14(float *param_1,float *param_2) + +{ + u32 uVar1; + float fVar2; + + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *param_1 = fVar2 * 0.00000000 * 1.66666663 * 4.00000000 - 3.33333325; + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + param_1[1] = fVar2 * 0.00000000 * 1.66666663 * 4.00000000; + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + param_1[2] = fVar2 * 0.00000000 * 1.66666663 * 4.00000000 - 3.33333325; + proc_7F057AC0(param_2); + return; +} + + + +void proc_7F057D44(float *param_1,float *param_2,float param_3) + +{ + float in_a2_lo; + float fVar1; + + fVar1 = *param_2 - in_a2_lo * npc_gravity_modifier; + *param_1 = *param_1 + in_a2_lo * (*param_2 + fVar1) * 0.50000000; + *param_2 = fVar1; + return; +} + + + +void proc_7F057D88(float *param_1,float *param_2,float param_3) + +{ + float in_a2_lo; + + proc_7F057D44(param_1 + 1,param_2 + 1,in_a2_lo); + *param_1 = *param_1 + in_a2_lo * *param_2; + param_1[2] = param_1[2] + in_a2_lo * param_2[2]; + return; +} + + + +void sub_GAME_7F057DF8(float *param_1,float *param_2,int param_3) + +{ + int i; + + i = 0; + if (0 < param_3) { + do { + sub_GAME_7F058098(param_2,param_1); + i += 1; + } while (i != param_3); + } + return; +} + + + +void proc_7F057E58(float *param_1,float *param_2,float *param_3,float *param_4,int param_5) + +{ + float in_f12; + + proc_7F057D88(param_1,param_2,in_f12); + sub_GAME_7F057DF8(param_3,param_4,param_5); + return; +} + + + +float cosf(float __x) + +{ + uint uVar1; + float fVar2; + float fVar3; + + __x = __x + 1.57079625; + uVar1 = (int)__x >> 0x16 & 0x1ff; + if (uVar1 < 0xff) { + if (0xe5 < uVar1) { + fVar2 = __x * __x; + __x = (((fVar2 * 0.00000261 + -0.00019810) * fVar2 + 0.00833307) * fVar2 + -0.16666660) + * fVar2 * __x + __x; + } + } + else { + if (uVar1 < 0x136) { + fVar2 = __x * 0.31830987; + fVar3 = (float)(int)(longlong)ROUND(fVar2); + __x = (__x - fVar3 * 3.14159274) - fVar3 * 0.00000003; + fVar3 = __x * __x; + __x = (((fVar3 * 0.00000261 + -0.00019810) * fVar3 + 0.00833307) * fVar3 + -0.16666660) + * fVar3 * __x + __x; + if (((longlong)ROUND(fVar2) & 1U) != 0) { + __x = -__x; + } + } + else { + __x = 0.00000000; + } + } + return __x; +} + + + +float sinf(float __x) + +{ + uint uVar1; + float fVar2; + float fVar3; + + uVar1 = (int)__x >> 0x16 & 0x1ff; + if (uVar1 < 0xff) { + if (0xe5 < uVar1) { + fVar2 = __x * __x; + __x = (((fVar2 * 0.00000261 + -0.00019810) * fVar2 + 0.00833307) * fVar2 + -0.16666660) + * fVar2 * __x + __x; + } + } + else { + if (uVar1 < 0x136) { + fVar2 = __x * 0.31830987; + fVar3 = (float)(int)(longlong)ROUND(fVar2); + __x = (__x - fVar3 * 3.14159274) - fVar3 * 0.00000003; + fVar3 = __x * __x; + __x = (((fVar3 * 0.00000261 + -0.00019810) * fVar3 + 0.00833307) * fVar3 + -0.16666660) + * fVar3 * __x + __x; + if (((longlong)ROUND(fVar2) & 1U) != 0) { + __x = -__x; + } + } + else { + __x = 0.00000000; + } + } + return __x; +} + + + +void guMtxIdentF_unrolled(float (*param_1) [4] [4]) + +{ + (*param_1)[1] = 0.00000000; + (*param_1)[2] = 0.00000000; + (*param_1)[3] = 0.00000000; + (*param_1)[4] = 0.00000000; + (*param_1)[6] = 0.00000000; + (*param_1)[7] = 0.00000000; + (*param_1)[8] = 0.00000000; + (*param_1)[9] = 0.00000000; + (*param_1)[0xb] = 0.00000000; + (*param_1)[0xc] = 0.00000000; + (*param_1)[0xd] = 0.00000000; + (*param_1)[0xe] = 0.00000000; + (*param_1)[0] = 1.00000000; + (*param_1)[5] = 1.00000000; + (*param_1)[10] = 1.00000000; + (*param_1)[0xf] = 1.00000000; + return; +} + + + +void proc_7F058020(float (*param_1) [4] [4],float (*param_2) [4]) + +{ + int iVar1; + + iVar1 = 0; + do { + iVar1 += 1; + (*param_2)[0] = (*param_1)[0]; + (*param_2)[1] = (*param_1)[1]; + (*param_2)[2] = (*param_1)[2]; + (*param_2)[3] = (*param_1)[3]; + param_1 = (float (*) [4] [4])(*param_1 + 4); + param_2 = param_2 + 1; + } while (iVar1 != 4); + return; +} + + + +void proc_7F058068(float *param_1,float *param_2) + +{ + float afStack64 [16]; + + proc_7F0580C8(param_1,param_2,(int)afStack64); + proc_7F058020((float (*) [4] [4])afStack64,(float (*) [4])param_2); + return; +} + + + +void sub_GAME_7F058098(float *param_1,float *param_2) + +{ + float afStack64 [16]; + + proc_7F05818C(param_1,param_2,(int)afStack64); + proc_7F058020((float (*) [4] [4])afStack64,(float (*) [4])param_2); + return; +} + + + +void proc_7F0580C8(float *param_1,float *param_2,int param_3) + +{ + int iVar1; + int iVar2; + float *pfVar3; + float *pfVar4; + + iVar2 = 0; + do { + iVar1 = 0; + pfVar4 = param_2; + pfVar3 = (float *)(param_3 + iVar2); + do { + iVar1 += 2; + *pfVar3 = pfVar4[3] * param_1[0xc] + + *param_1 * *pfVar4 + param_1[4] * pfVar4[1] + param_1[8] * pfVar4[2]; + pfVar3[4] = pfVar4[7] * param_1[0xc] + + *param_1 * pfVar4[4] + param_1[4] * pfVar4[5] + param_1[8] * pfVar4[6]; + pfVar4 = pfVar4 + 8; + pfVar3 = pfVar3 + 8; + } while (iVar1 != 4); + iVar2 += 4; + param_1 = param_1 + 1; + } while (iVar2 != 0x10); + return; +} + + + +void proc_7F05818C(float *param_1,float *param_2,int param_3) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + int iVar4; + int iVar5; + float *pfVar6; + float *pfVar7; + + iVar5 = 0; + do { + iVar4 = 0; + pfVar6 = (float *)(param_3 + iVar5); + pfVar7 = param_2; + do { + *pfVar6 = pfVar7[2] * param_1[8] + *param_1 * *pfVar7 + param_1[4] * pfVar7[1]; + if (iVar4 == 3) { + *pfVar6 = *pfVar6 + param_1[0xc]; + } + pfVar1 = pfVar7 + 4; + pfVar2 = pfVar7 + 5; + pfVar3 = pfVar7 + 6; + pfVar7 = pfVar7 + 8; + pfVar6[4] = *pfVar3 * param_1[8] + *param_1 * *pfVar1 + param_1[4] * *pfVar2; + if (iVar4 == 2) { + pfVar6[4] = pfVar6[4] + param_1[0xc]; + } + iVar4 += 2; + pfVar6 = pfVar6 + 8; + } while (iVar4 != 4); + iVar5 += 4; + param_1 = param_1 + 1; + } while (iVar5 != 0xc); + *(undefined4 *)(param_3 + 0xc) = 0; + *(undefined4 *)(param_3 + 0x1c) = 0; + *(undefined4 *)(param_3 + 0x2c) = 0; + *(undefined4 *)(param_3 + 0x3c) = 0x3f800000; + return; +} + + + +void proc_7F058274(float *param_1,float *param_2,float *param_3) + +{ + *param_3 = *param_2 * *param_1; + param_3[4] = param_2[4] * *param_1; + param_3[8] = param_2[8] * *param_1; + param_3[0xc] = param_2[0xc] * *param_1; + param_3[1] = param_2[1] * param_1[5]; + param_3[5] = param_2[5] * param_1[5]; + param_3[9] = param_2[9] * param_1[5]; + param_3[0xd] = param_2[0xd] * param_1[5]; + param_3[2] = param_2[2] * param_1[10]; + param_3[6] = param_2[6] * param_1[10]; + param_3[10] = param_2[10] * param_1[10]; + param_3[0xe] = param_1[0xe] + param_1[10] * param_2[0xe]; + param_3[3] = param_2[2] * param_1[0xb]; + param_3[7] = param_2[6] * param_1[0xb]; + param_3[0xb] = param_2[10] * param_1[0xb]; + param_3[0xf] = param_2[0xe] * param_1[0xb]; + return; +} + + + +void proc_7F058380(float *param_1,float *param_2,float *param_3) + +{ + float *pfVar1; + float *pfVar2; + int iVar3; + float fVar4; + + iVar3 = 0; + do { + fVar4 = *param_1; + pfVar1 = param_1 + 4; + pfVar2 = param_1 + 8; + iVar3 += 1; + param_1 = param_1 + 1; + *param_3 = param_2[2] * *pfVar2 + fVar4 * *param_2 + *pfVar1 * param_2[1]; + param_3 = param_3 + 1; + } while (iVar3 != 3); + return; +} + + + +void proc_7F0583D8(float *param_1,float *param_2) + +{ + float fStack12; + float fStack8; + float fStack4; + + proc_7F058380(param_1,param_2,&fStack12); + *param_2 = fStack12; + param_2[1] = fStack8; + param_2[2] = fStack4; + return; +} + + + +void proc_7F058418(float *param_1,float *param_2,float *param_3) + +{ + proc_7F058380(param_1,param_2,param_3); + *param_3 = *param_3 + param_1[0xc]; + param_3[1] = param_3[1] + param_1[0xd]; + param_3[2] = param_3[2] + param_1[0xe]; + return; +} + + + +void proc_7F058474(float *param_1,float *param_2) + +{ + proc_7F0583D8(param_1,param_2); + *param_2 = *param_2 + param_1[0xc]; + param_2[1] = param_2[1] + param_1[0xd]; + param_2[2] = param_2[2] + param_1[0xe]; + return; +} + + + +void proc_7F0584D0(float *param_1,float param_2,float *param_3) + +{ + float *in_a2_lo; + float fVar1; + float fVar2; + + fVar1 = cosf((float)param_3); + fVar2 = sinf((float)param_3); + in_a2_lo[8] = fVar2; + in_a2_lo[2] = -fVar2; + *in_a2_lo = fVar1; + in_a2_lo[10] = fVar1; + in_a2_lo[1] = 0.00000000; + in_a2_lo[3] = 0.00000000; + in_a2_lo[4] = 0.00000000; + in_a2_lo[6] = 0.00000000; + in_a2_lo[7] = 0.00000000; + in_a2_lo[9] = 0.00000000; + in_a2_lo[0xb] = 0.00000000; + in_a2_lo[5] = 1.00000000; + in_a2_lo[0xc] = *param_1; + in_a2_lo[0xd] = param_1[1]; + fVar1 = param_1[2]; + in_a2_lo[0xf] = 1.00000000; + in_a2_lo[0xe] = fVar1; + return; +} + + + +void proc_7F058570(float param_1,undefined8 param_2,undefined4 *param_3) + +{ + float fVar1; + float fVar2; + + fVar1 = cosf(param_1); + fVar2 = sinf(param_1); + *(float *)(param_3 + 6) = fVar2; + *(float *)(param_3 + 9) = -fVar2; + *(float *)(param_3 + 5) = fVar1; + *(float *)(param_3 + 10) = fVar1; + param_3[1] = 0; + param_3[2] = 0; + param_3[3] = 0; + param_3[4] = 0; + param_3[7] = 0; + param_3[8] = 0; + param_3[0xb] = 0; + param_3[0xc] = 0; + param_3[0xd] = 0; + param_3[0xe] = 0; + *param_3 = 0x3f800000; + param_3[0xf] = 0x3f800000; + return; +} + + + +void proc_7F0585FC(float param_1,undefined8 param_2,float *param_3) + +{ + float fVar1; + float fVar2; + + fVar1 = cosf(param_1); + fVar2 = sinf(param_1); + param_3[8] = fVar2; + param_3[2] = -fVar2; + *param_3 = fVar1; + param_3[10] = fVar1; + param_3[1] = 0.00000000; + param_3[3] = 0.00000000; + param_3[4] = 0.00000000; + param_3[6] = 0.00000000; + param_3[7] = 0.00000000; + param_3[9] = 0.00000000; + param_3[0xb] = 0.00000000; + param_3[0xc] = 0.00000000; + param_3[0xd] = 0.00000000; + param_3[0xe] = 0.00000000; + param_3[5] = 1.00000000; + param_3[0xf] = 1.00000000; + return; +} + + + +void proc_7F058688(float param_1,undefined8 param_2,float *param_3) + +{ + float fVar1; + float fVar2; + + fVar1 = cosf(param_1); + fVar2 = sinf(param_1); + param_3[1] = fVar2; + param_3[4] = -fVar2; + *param_3 = fVar1; + param_3[5] = fVar1; + param_3[2] = 0.00000000; + param_3[3] = 0.00000000; + param_3[6] = 0.00000000; + param_3[7] = 0.00000000; + param_3[8] = 0.00000000; + param_3[9] = 0.00000000; + param_3[0xb] = 0.00000000; + param_3[0xc] = 0.00000000; + param_3[0xd] = 0.00000000; + param_3[0xe] = 0.00000000; + param_3[10] = 1.00000000; + param_3[0xf] = 1.00000000; + return; +} + + + +void proc_7F058714(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + + fVar1 = cosf(*param_1); + fVar2 = sinf(*param_1); + fVar3 = cosf(param_1[1]); + fVar4 = sinf(param_1[1]); + fVar5 = cosf(param_1[2]); + fVar6 = sinf(param_1[2]); + param_2[3] = 0.00000000; + param_2[2] = -fVar4; + *param_2 = fVar3 * fVar5; + param_2[1] = fVar3 * fVar6; + param_2[4] = fVar2 * fVar5 * fVar4 - fVar1 * fVar6; + param_2[5] = fVar2 * fVar6 * fVar4 + fVar1 * fVar5; + param_2[7] = 0.00000000; + param_2[6] = fVar2 * fVar3; + param_2[8] = fVar1 * fVar5 * fVar4 + fVar2 * fVar6; + param_2[9] = fVar1 * fVar6 * fVar4 - fVar2 * fVar5; + param_2[0xb] = 0.00000000; + param_2[0xc] = 0.00000000; + param_2[0xd] = 0.00000000; + param_2[0xe] = 0.00000000; + param_2[0xf] = 1.00000000; + param_2[10] = fVar1 * fVar3; + return; +} + + + +void proc_7F058860(float *param_1,float *param_2) + +{ + float vector2; + float fVar1; + + vector2 = sqrtf(param_1[6] * param_1[6] + param_1[10] * param_1[10]); + if (0.00000191 < vector2) { + fVar1 = convert_angle_using_inverse((f32)param_1[6],(f32)param_1[10]); + *param_2 = fVar1; + vector2 = convert_angle_using_inverse((f32)-param_1[2],(f32)vector2); + param_2[1] = vector2; + vector2 = convert_angle_using_inverse((f32)param_1[1],(f32)*param_1); + param_2[2] = vector2; + } + else { + *param_2 = 0.00000000; + vector2 = convert_angle_using_inverse((f32)-param_1[2],(f32)vector2); + param_2[1] = vector2; + vector2 = convert_angle_using_inverse((f32)-param_1[4],(f32)param_1[5]); + param_2[2] = vector2; + } + return; +} + + + +void proc_7F05892C(undefined4 *param_1,float *param_2,float *param_3) + +{ + proc_7F058714(param_2,param_3); + copies_first_3_floats_from_a0_to_a1_plus_0x30((xyzpoint *)param_1,(int)param_3); + return; +} + + + +void init_something_copy_posdata_to_it(xyzpoint *posdata,int *dest) + +{ + guMtxIdentF_unrolled((float (*) [4] [4])dest); + copies_first_3_floats_from_a0_to_a1_plus_0x30(posdata,(int)dest); + return; +} + + + +void copies_first_3_floats_from_a0_to_a1_plus_0x30(xyzpoint *posdata,int dest) + +{ + *(f32 *)(dest + 0x30) = posdata->x; + *(f32 *)(dest + 0x34) = posdata->y; + *(f32 *)(dest + 0x38) = posdata->z; + return; +} + + + +void proc_7F0589B4(float param_1,undefined8 param_2,float *param_3) + +{ + *param_3 = *param_3 * param_1; + param_3[1] = param_3[1] * param_1; + param_3[2] = param_3[2] * param_1; + return; +} + + + +void proc_7F0589E4(float param_1,undefined8 param_2,int param_3) + +{ + *(float *)(param_3 + 0x10) = *(float *)(param_3 + 0x10) * param_1; + *(float *)(param_3 + 0x14) = *(float *)(param_3 + 0x14) * param_1; + *(float *)(param_3 + 0x18) = *(float *)(param_3 + 0x18) * param_1; + return; +} + + + +void proc_7F058A14(float param_1,undefined8 param_2,int param_3) + +{ + *(float *)(param_3 + 0x20) = *(float *)(param_3 + 0x20) * param_1; + *(float *)(param_3 + 0x24) = *(float *)(param_3 + 0x24) * param_1; + *(float *)(param_3 + 0x28) = *(float *)(param_3 + 0x28) * param_1; + *(float *)(param_3 + 0x2c) = *(float *)(param_3 + 0x2c) * param_1; + return; +} + + + +void proc_7F058A4C(float param_1,undefined8 param_2,int param_3) + +{ + *(float *)(param_3 + 0x20) = *(float *)(param_3 + 0x20) * param_1; + *(float *)(param_3 + 0x24) = *(float *)(param_3 + 0x24) * param_1; + *(float *)(param_3 + 0x28) = *(float *)(param_3 + 0x28) * param_1; + return; +} + + + +void matrix_multiply_A1_by_F12(float param_1,undefined8 param_2,float *param_3) + +{ + *param_3 = *param_3 * param_1; + param_3[1] = param_3[1] * param_1; + param_3[2] = param_3[2] * param_1; + param_3[3] = param_3[3] * param_1; + param_3[4] = param_3[4] * param_1; + param_3[5] = param_3[5] * param_1; + param_3[6] = param_3[6] * param_1; + param_3[7] = param_3[7] * param_1; + param_3[8] = param_3[8] * param_1; + param_3[9] = param_3[9] * param_1; + param_3[10] = param_3[10] * param_1; + param_3[0xb] = param_3[0xb] * param_1; + return; +} + + + +void proc_7F058B10(float param_1,undefined8 param_2,float *param_3) + +{ + *param_3 = *param_3 * param_1; + param_3[1] = param_3[1] * param_1; + param_3[2] = param_3[2] * param_1; + param_3[4] = param_3[4] * param_1; + param_3[5] = param_3[5] * param_1; + param_3[6] = param_3[6] * param_1; + param_3[8] = param_3[8] * param_1; + param_3[9] = param_3[9] * param_1; + param_3[10] = param_3[10] * param_1; + return; +} + + + +void proc_7F058B80(float param_1,undefined8 param_2,int param_3) + +{ + *(float *)(param_3 + 8) = *(float *)(param_3 + 8) * param_1; + *(float *)(param_3 + 0x18) = *(float *)(param_3 + 0x18) * param_1; + *(float *)(param_3 + 0x28) = *(float *)(param_3 + 0x28) * param_1; + *(float *)(param_3 + 0x38) = *(float *)(param_3 + 0x38) * param_1; + return; +} + + + +void proc_7F058BB8(float param_1,undefined8 param_2,float *param_3) + +{ + *param_3 = *param_3 * param_1; + param_3[4] = param_3[4] * param_1; + param_3[8] = param_3[8] * param_1; + param_3[0xc] = param_3[0xc] * param_1; + param_3[1] = param_3[1] * param_1; + param_3[5] = param_3[5] * param_1; + param_3[9] = param_3[9] * param_1; + param_3[0xd] = param_3[0xd] * param_1; + param_3[2] = param_3[2] * param_1; + param_3[6] = param_3[6] * param_1; + param_3[10] = param_3[10] * param_1; + param_3[0xe] = param_3[0xe] * param_1; + return; +} + + + +void proc_7F058C4C(float param_1) + +{ + flt_80032310 = param_1 * 65536.00000000; + return; +} + + + +void proc_7F058C64(void) + +{ + FLOAT_80075da0 = flt_80032310; + flt_80032310 = 65536.00000000; + return; +} + + + +void proc_7F058C88(void) + +{ + flt_80032310 = FLOAT_80075da0; + return; +} + + + +void proc_7F058C9C(int param_1,uint *param_2) + +{ + int iVar1; + uint uVar2; + int iVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + + iVar1 = 0; + do { + pfVar5 = (float *)(param_1 + iVar1 * 8); + uVar2 = iVar1 + 1; + iVar3 = iVar1 + 2; + uVar7 = (uint)(flt_80032310 * *pfVar5); + uVar4 = iVar1 + 3; + iVar1 += 4; + uVar6 = (uint)(flt_80032310 * pfVar5[1]); + *param_2 = uVar7 & 0xffff0000 | uVar6 >> 0x10; + param_2[8] = uVar7 << 0x10 | uVar6 & 0xffff; + pfVar5 = (float *)(param_1 + uVar2 * 8); + uVar6 = (uint)(flt_80032310 * *pfVar5); + uVar2 = (uint)((&flt_80032310)[uVar2 & 1] * pfVar5[1]); + param_2[1] = uVar6 & 0xffff0000 | uVar2 >> 0x10; + param_2[9] = uVar6 << 0x10 | uVar2 & 0xffff; + pfVar5 = (float *)(param_1 + iVar3 * 8); + uVar6 = (uint)(flt_80032310 * *pfVar5); + uVar2 = (uint)(flt_80032310 * pfVar5[1]); + param_2[2] = uVar6 & 0xffff0000 | uVar2 >> 0x10; + param_2[10] = uVar6 << 0x10 | uVar2 & 0xffff; + pfVar5 = (float *)(param_1 + uVar4 * 8); + uVar2 = (uint)(flt_80032310 * *pfVar5); + uVar4 = (uint)((&flt_80032310)[uVar4 & 1] * pfVar5[1]); + param_2[3] = uVar2 & 0xffff0000 | uVar4 >> 0x10; + param_2[0xb] = uVar2 << 0x10 | uVar4 & 0xffff; + param_2 = param_2 + 4; + } while (iVar1 != 8); + return; +} + + + +void proc_7F058E78(uint *param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + float *pfVar7; + float *pfVar8; + + iVar3 = 0; + do { + uVar1 = *param_1; + uVar2 = param_1[8]; + pfVar7 = (float *)(param_2 + iVar3 * 8); + uVar4 = iVar3 + 1; + pfVar8 = (float *)(param_2 + uVar4 * 8); + iVar5 = iVar3 + 2; + uVar6 = iVar3 + 3; + iVar3 += 4; + *pfVar7 = (float)(uVar1 & 0xffff0000 | uVar2 >> 0x10) / flt_80032310; + pfVar7[1] = (float)(uVar1 << 0x10 | uVar2 & 0xffff) / flt_80032310; + uVar1 = param_1[9]; + uVar2 = param_1[1]; + pfVar7 = (float *)(param_2 + iVar5 * 8); + *pfVar8 = (float)(uVar2 & 0xffff0000 | uVar1 >> 0x10) / flt_80032310; + pfVar8[1] = (float)(uVar2 << 0x10 | uVar1 & 0xffff) / (&flt_80032310)[uVar4 & 1]; + uVar1 = param_1[10]; + uVar2 = param_1[2]; + pfVar8 = (float *)(param_2 + uVar6 * 8); + *pfVar7 = (float)(uVar2 & 0xffff0000 | uVar1 >> 0x10) / flt_80032310; + pfVar7[1] = (float)(uVar2 << 0x10 | uVar1 & 0xffff) / flt_80032310; + uVar1 = param_1[0xb]; + uVar2 = param_1[3]; + *pfVar8 = (float)(uVar2 & 0xffff0000 | uVar1 >> 0x10) / flt_80032310; + pfVar8[1] = (float)(uVar2 << 0x10 | uVar1 & 0xffff) / (&flt_80032310)[uVar6 & 1]; + param_1 = param_1 + 4; + } while (iVar3 != 8); + return; +} + + + +void proc_7F059044(float *param_1,int *param_2) + +{ + int iVar1; + int *piVar2; + float *pfVar3; + float fVar4; + + iVar1 = 1; + fVar4 = *param_1 * 65536.00000000; + piVar2 = param_2; + pfVar3 = param_1; + if (true) { + do { + iVar1 += 1; + param_2 = piVar2 + 4; + param_1 = pfVar3 + 4; + *piVar2 = (int)fVar4; + piVar2[1] = (int)(pfVar3[1] * 65536.00000000); + piVar2[2] = (int)(pfVar3[2] * 65536.00000000); + piVar2[3] = (int)(pfVar3[3] * 65536.00000000); + fVar4 = *param_1 * 65536.00000000; + piVar2 = param_2; + pfVar3 = param_1; + } while (iVar1 != 4); + } + *param_2 = (int)fVar4; + param_2[1] = (int)(param_1[1] * 65536.00000000); + param_2[2] = (int)(param_1[2] * 65536.00000000); + param_2[3] = (int)(param_1[3] * 65536.00000000); + return; +} + + + +void proc_7F05914C(int *param_1,float *param_2) + +{ + int iVar1; + float *pfVar2; + int *piVar3; + int iVar4; + + iVar1 = 1; + iVar4 = *param_1; + pfVar2 = param_2; + piVar3 = param_1; + if (true) { + do { + iVar1 += 1; + param_2 = pfVar2 + 4; + param_1 = piVar3 + 4; + *pfVar2 = (float)iVar4 / 65536.00000000; + pfVar2[1] = (float)piVar3[1] / 65536.00000000; + pfVar2[2] = (float)piVar3[2] / 65536.00000000; + pfVar2[3] = (float)piVar3[3] / 65536.00000000; + iVar4 = *param_1; + pfVar2 = param_2; + piVar3 = param_1; + } while (iVar1 != 4); + } + *param_2 = (float)iVar4 / 65536.00000000; + param_2[1] = (float)param_1[1] / 65536.00000000; + param_2[2] = (float)param_1[2] / 65536.00000000; + param_2[3] = (float)param_1[3] / 65536.00000000; + return; +} + + + +void proc_7F059244(int param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint *puVar4; + + iVar3 = 0; + do { + puVar4 = (uint *)(param_1 + iVar3 * 8); + uVar1 = *puVar4; + uVar2 = puVar4[1]; + puVar4 = (uint *)(param_1 + (iVar3 + 1) * 8); + *param_2 = uVar1 & 0xffff0000 | uVar2 >> 0x10; + param_2[8] = uVar1 << 0x10 | uVar2 & 0xffff; + uVar1 = puVar4[1]; + uVar2 = *puVar4; + puVar4 = (uint *)(param_1 + (iVar3 + 2) * 8); + param_2[9] = uVar2 << 0x10 | uVar1 & 0xffff; + param_2[1] = uVar2 & 0xffff0000 | uVar1 >> 0x10; + uVar1 = puVar4[1]; + uVar2 = *puVar4; + puVar4 = (uint *)(param_1 + (iVar3 + 3) * 8); + param_2[10] = uVar2 << 0x10 | uVar1 & 0xffff; + param_2[2] = uVar2 & 0xffff0000 | uVar1 >> 0x10; + uVar1 = puVar4[1]; + uVar2 = *puVar4; + iVar3 += 4; + param_2[0xb] = uVar2 << 0x10 | uVar1 & 0xffff; + param_2[3] = uVar2 & 0xffff0000 | uVar1 >> 0x10; + param_2 = param_2 + 4; + } while (iVar3 != 8); + return; +} + + + +void proc_7F059334(uint *param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint *puVar4; + + iVar3 = 0; + do { + uVar1 = *param_1; + uVar2 = param_1[8]; + puVar4 = (uint *)(param_2 + iVar3 * 8); + *puVar4 = uVar1 & 0xffff0000 | uVar2 >> 0x10; + puVar4[1] = uVar1 << 0x10 | uVar2 & 0xffff; + uVar1 = param_1[9]; + uVar2 = param_1[1]; + puVar4 = (uint *)(param_2 + (iVar3 + 1) * 8); + puVar4[1] = uVar2 << 0x10 | uVar1 & 0xffff; + *puVar4 = uVar2 & 0xffff0000 | uVar1 >> 0x10; + uVar1 = param_1[10]; + uVar2 = param_1[2]; + puVar4 = (uint *)(param_2 + (iVar3 + 2) * 8); + puVar4[1] = uVar2 << 0x10 | uVar1 & 0xffff; + *puVar4 = uVar2 & 0xffff0000 | uVar1 >> 0x10; + uVar1 = param_1[0xb]; + uVar2 = param_1[3]; + puVar4 = (uint *)(param_2 + (iVar3 + 3) * 8); + iVar3 += 4; + puVar4[1] = uVar2 << 0x10 | uVar1 & 0xffff; + *puVar4 = uVar2 & 0xffff0000 | uVar1 >> 0x10; + param_1 = param_1 + 4; + } while (iVar3 != 8); + return; +} + + + +void proc_7F059424(float *param_1,float param_2,float param_3,float param_4,float param_5, + float param_6,float param_7,float param_8,float param_9,float param_10) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float in_stack_00000020; + float in_stack_00000024; + + fVar1 = sqrtf(param_7 * param_7 + param_8 * param_8 + param_9 * param_9); + fVar1 = -1.00000000 / fVar1; + param_7 = param_7 * fVar1; + param_8 = param_8 * fVar1; + param_9 = param_9 * fVar1; + fVar5 = in_stack_00000020 * param_9 - in_stack_00000024 * param_8; + fVar6 = in_stack_00000024 * param_7 - param_10 * param_9; + fVar7 = param_10 * param_8 - in_stack_00000020 * param_7; + fVar1 = sqrtf(fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7); + fVar1 = 1.00000000 / fVar1; + fVar5 = fVar5 * fVar1; + fVar6 = fVar6 * fVar1; + fVar7 = fVar7 * fVar1; + fVar2 = param_8 * fVar7 - param_9 * fVar6; + fVar3 = param_9 * fVar5 - param_7 * fVar7; + fVar4 = param_7 * fVar6 - param_8 * fVar5; + fVar1 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3 + fVar4 * fVar4); + fVar1 = 1.00000000 / fVar1; + *param_1 = fVar5; + param_1[4] = fVar6; + param_1[8] = fVar7; + param_1[1] = fVar2 * fVar1; + param_1[5] = fVar3 * fVar1; + param_1[0xc] = -(param_4 * fVar5 + param_5 * fVar6 + param_6 * fVar7); + param_1[9] = fVar4 * fVar1; + param_1[2] = param_7; + param_1[6] = param_8; + param_1[10] = param_9; + param_1[0xd] = -(param_4 * fVar2 * fVar1 + param_5 * fVar3 * fVar1 + param_6 * fVar4 * fVar1); + param_1[3] = 0.00000000; + param_1[7] = 0.00000000; + param_1[0xb] = 0.00000000; + param_1[0xf] = 1.00000000; + param_1[0xe] = -(param_4 * param_7 + param_5 * param_8 + param_6 * param_9); + return; +} + + + +void proc_7F059694(float *param_1,float param_2,float param_3,float param_4,float param_5, + float param_6,float param_7,float param_8,float param_9,float param_10) + +{ + proc_7F059424(param_1,param_4,param_5,param_4,param_5,param_6,param_7 - param_4, + param_8 - param_5,param_9 - param_6,param_10); + return; +} + + + +void proc_7F059708(float *param_1,float param_2,float param_3,float param_4,float param_5, + float param_6,float param_7,float param_8,float param_9,float param_10) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float in_stack_00000020; + float in_stack_00000024; + + fVar1 = sqrtf(param_7 * param_7 + param_8 * param_8 + param_9 * param_9); + fVar1 = -1.00000000 / fVar1; + param_7 = param_7 * fVar1; + param_8 = param_8 * fVar1; + param_9 = param_9 * fVar1; + fVar5 = in_stack_00000020 * param_9 - in_stack_00000024 * param_8; + fVar6 = in_stack_00000024 * param_7 - param_10 * param_9; + fVar7 = param_10 * param_8 - in_stack_00000020 * param_7; + fVar1 = sqrtf(fVar5 * fVar5 + fVar6 * fVar6 + fVar7 * fVar7); + fVar1 = 1.00000000 / fVar1; + fVar5 = fVar5 * fVar1; + fVar6 = fVar6 * fVar1; + fVar7 = fVar7 * fVar1; + fVar2 = param_8 * fVar7 - param_9 * fVar6; + fVar3 = param_9 * fVar5 - param_7 * fVar7; + fVar4 = param_7 * fVar6 - param_8 * fVar5; + fVar1 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3 + fVar4 * fVar4); + fVar1 = 1.00000000 / fVar1; + *param_1 = fVar5; + param_1[4] = fVar2 * fVar1; + param_1[8] = param_7; + param_1[1] = fVar6; + param_1[5] = fVar3 * fVar1; + param_1[9] = param_8; + param_1[0xc] = param_4; + param_1[2] = fVar7; + param_1[0xd] = param_5; + param_1[10] = param_9; + param_1[6] = fVar4 * fVar1; + param_1[3] = 0.00000000; + param_1[7] = 0.00000000; + param_1[0xb] = 0.00000000; + param_1[0xf] = 1.00000000; + param_1[0xe] = param_6; + return; +} + + + +void proc_7F059908(float *param_1,float param_2,float param_3,float param_4,float param_5, + float param_6,float param_7,float param_8,float param_9,float param_10) + +{ + proc_7F059708(param_1,param_4,param_5,param_4,param_5,param_6,param_7 - param_4, + param_8 - param_5,param_9 - param_6,param_10); + return; +} + + + +uint proc_7F05997C(float param_1,float param_2) + +{ + float fVar1; + uint uVar2; + float fVar3; + uint uVar4; + + if (param_1 + param_2 <= 2.00000000) { + return 0xffff; + } + fVar3 = 131072.00000000 / (param_1 + param_2); + if (false) { + fVar1 = ROUND(fVar3); + } + else { + fVar1 = FLOOR(fVar3); + } + uVar4 = (uint)fVar1; + if (false) { + if (false) { + fVar3 = ROUND(fVar3 - 2147483648.00000000); + } + else { + fVar3 = FLOOR(fVar3 - 2147483648.00000000); + } + if (true) { + uVar4 = (int)fVar3 | 0x80000000; + goto LAB_7f059a2c; + } + } + else { + if (-1 < (int)uVar4) goto LAB_7f059a2c; + } + uVar4 = 0xffffffff; +LAB_7f059a2c: + uVar2 = uVar4 & 0xffff; + if ((uVar4 & 0xffff) == 0) { + uVar2 = 1; + } + return uVar2; +} + + + +void proc_7F059A48(float *param_1,undefined2 *param_2,float param_3,float param_4,float param_5, + float param_6,float param_7) + +{ + uint uVar1; + float fVar2; + float fVar3; + float fVar4; + float in_stack_00000014; + float in_stack_00000018; + + fVar2 = cosf(param_5 * 0.50000000); + fVar3 = sinf(param_5 * 0.50000000); + fVar4 = in_stack_00000018 * 65536.00000000; + param_1[4] = 0.00000000; + param_1[8] = 0.00000000; + param_1[0xc] = 0.00000000; + param_1[1] = 0.00000000; + param_1[9] = 0.00000000; + param_1[0xd] = 0.00000000; + param_1[2] = 0.00000000; + param_1[6] = 0.00000000; + *param_1 = ((fVar2 / fVar3) / param_6) * fVar4; + param_1[5] = (fVar2 / fVar3) * fVar4; + param_1[10] = ((param_7 + in_stack_00000014) / (param_7 - in_stack_00000014)) * fVar4; + param_1[3] = 0.00000000; + param_1[7] = 0.00000000; + param_1[0xf] = 0.00000000; + param_1[0xb] = -fVar4; + param_1[0xe] = (((param_7 + param_7) * in_stack_00000014) / (param_7 - in_stack_00000014)) * + fVar4; + if (param_2 != NULL) { + uVar1 = proc_7F05997C(param_7,in_stack_00000014); + *param_2 = (short)uVar1; + } + return; +} + + + +void proc_7F059B58(float *param_1,float a,float x,float y,float z) + +{ + float in_a3_lo; + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fStackX8; + float fStackX12; + float in_stack_00000010; + + fStackX8 = z; + fStackX12 = in_a3_lo; + guNormalize(&fStackX8,&fStackX12,(float *)&stack0x00000010); + fVar1 = sinf(y); + fVar2 = cosf(y); + fVar3 = sqrtf(fStackX8 * fStackX8 + in_stack_00000010 * in_stack_00000010); + if (fVar3 == 0.00000000) { + guMtxIdentF_unrolled((float (*) [4] [4])param_1); + } + else { + fVar4 = 1.00000000 / fVar3; + *param_1 = (-(in_stack_00000010 * fVar2) - fStackX12 * fStackX8 * fVar1) * fVar4; + param_1[4] = fVar1 * fVar3; + param_1[0xc] = 0.00000000; + param_1[8] = (fStackX8 * fVar2 - fStackX12 * in_stack_00000010 * fVar1) * fVar4; + param_1[1] = (in_stack_00000010 * fVar1 - fStackX12 * fStackX8 * fVar2) * fVar4; + param_1[5] = fVar2 * fVar3; + param_1[0xd] = 0.00000000; + param_1[9] = (-(fStackX8 * fVar1) - fStackX12 * in_stack_00000010 * fVar2) * fVar4; + param_1[2] = -fStackX8; + param_1[6] = -fStackX12; + param_1[0xe] = 0.00000000; + param_1[3] = 0.00000000; + param_1[7] = 0.00000000; + param_1[10] = -in_stack_00000010; + param_1[0xb] = 0.00000000; + param_1[0xf] = 1.00000000; + } + return; +} + + + +// WARNING: Restarted to delay deadcode elimination for space: stack + +void proc_7F059CE8(float *param_1,float param_2,float param_3,float param_4,float param_5) + +{ + undefined4 in_a3_lo; + undefined4 unaff_retaddr; + undefined auStackX0 [12]; + undefined4 in_stack_00000010; + undefined in_stack_00000014 [28]; + undefined8 in_stack_fffffff4; + + guAlignF((float [4] [4]) + CONCAT1648(CONCAT124(CONCAT48(in_stack_00000010,in_stack_fffffff4),unaff_retaddr), + CONCAT2028(CONCAT164(CONCAT124(auStackX0,in_a3_lo),in_stack_00000010), + in_stack_00000014)),param_4 * flt_800536F0,param_5,(float)param_1 + ,param_4 * flt_800536F0); + return; +} + + + +void proc_7F059D30(void) + +{ + return; +} + + + +void proc_7F059D38(undefined4 *param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + + *param_2 = *param_1; + param_2[1] = param_1[4]; + param_2[2] = param_1[8]; + param_2[4] = param_1[1]; + param_2[5] = param_1[5]; + param_2[6] = param_1[9]; + param_2[8] = param_1[2]; + param_2[9] = param_1[6]; + uVar1 = param_1[10]; + param_2[0xc] = 0; + param_2[0xd] = 0; + param_2[0xe] = 0; + param_2[3] = 0; + param_2[7] = 0; + param_2[0xb] = 0; + param_2[0xf] = 0x3f800000; + param_2[10] = uVar1; + return; +} + + + +void proc_7F059DAC(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + + fVar2 = *param_1; + fVar1 = 1.00000000 / (param_1[8] * param_1[8] + fVar2 * fVar2 + param_1[4] * param_1[4]); + *param_2 = fVar2 * fVar1; + param_2[1] = param_1[4] * fVar1; + param_2[2] = param_1[8] * fVar1; + param_2[4] = param_1[1] * fVar1; + param_2[5] = param_1[5] * fVar1; + param_2[6] = param_1[9] * fVar1; + param_2[8] = param_1[2] * fVar1; + param_2[9] = param_1[6] * fVar1; + fVar2 = param_1[10]; + param_2[0xf] = 1.00000000; + param_2[0xc] = 0.00000000; + param_2[0xd] = 0.00000000; + param_2[0xe] = 0.00000000; + param_2[3] = 0.00000000; + param_2[7] = 0.00000000; + param_2[0xb] = 0.00000000; + param_2[10] = fVar2 * fVar1; + return; +} + + + +void proc_7F059E64(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + + fVar3 = *param_1; + fVar1 = 1.00000000 / (param_1[8] * param_1[8] + fVar3 * fVar3 + param_1[4] * param_1[4]); + *param_2 = fVar3 * fVar1; + param_2[1] = param_1[4] * fVar1; + param_2[2] = param_1[8] * fVar1; + param_2[4] = param_1[1] * fVar1; + param_2[5] = param_1[5] * fVar1; + param_2[6] = param_1[9] * fVar1; + param_2[8] = param_1[2] * fVar1; + param_2[9] = param_1[6] * fVar1; + param_2[10] = param_1[10] * fVar1; + param_2[0xc] = -(param_1[0xe] * param_2[8] + *param_2 * param_1[0xc] + param_2[4] * param_1[0xd] + ); + param_2[0xd] = -(param_1[0xe] * param_2[9] + + param_2[1] * param_1[0xc] + param_2[5] * param_1[0xd]); + fVar2 = param_1[0xc]; + fVar3 = param_1[0xd]; + fVar1 = param_1[0xe]; + param_2[0xf] = 1.00000000; + param_2[3] = 0.00000000; + param_2[7] = 0.00000000; + param_2[0xb] = 0.00000000; + param_2[0xe] = -(fVar1 * param_2[10] + param_2[2] * fVar2 + param_2[6] * fVar3); + return; +} + + + +void proc_7F059FB8(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + + fVar3 = param_1[5]; + fVar4 = param_1[10]; + fVar5 = param_1[6]; + fVar2 = param_1[9]; + fVar1 = 1.00000000 / + ((((*param_1 * fVar3 * fVar4 + param_1[1] * fVar5 * param_1[8] + + param_1[2] * param_1[4] * fVar2) - param_1[2] * fVar3 * param_1[8]) - + param_1[1] * param_1[4] * fVar4) - *param_1 * fVar5 * fVar2); + *param_2 = (fVar3 * fVar4 - fVar2 * fVar5) * fVar1; + param_2[4] = (param_1[6] * param_1[8] - param_1[10] * param_1[4]) * fVar1; + param_2[8] = (param_1[4] * param_1[9] - param_1[8] * param_1[5]) * fVar1; + param_2[1] = (param_1[2] * param_1[9] - param_1[10] * param_1[1]) * fVar1; + param_2[5] = (*param_1 * param_1[10] - param_1[8] * param_1[2]) * fVar1; + param_2[9] = (param_1[1] * param_1[8] - param_1[9] * *param_1) * fVar1; + param_2[2] = (param_1[1] * param_1[6] - param_1[5] * param_1[2]) * fVar1; + param_2[6] = (param_1[2] * param_1[4] - param_1[6] * *param_1) * fVar1; + param_2[10] = (*param_1 * param_1[5] - param_1[4] * param_1[1]) * fVar1; + param_2[0xc] = -(param_2[8] * param_1[0xe] + param_1[0xc] * *param_2 + param_1[0xd] * param_2[4] + ); + param_2[0xd] = -(param_2[9] * param_1[0xe] + + param_1[0xc] * param_2[1] + param_1[0xd] * param_2[5]); + fVar3 = param_1[0xc]; + fVar2 = param_1[0xd]; + fVar1 = param_1[0xe]; + param_2[0xf] = 1.00000000; + param_2[3] = 0.00000000; + param_2[7] = 0.00000000; + param_2[0xb] = 0.00000000; + param_2[0xe] = -(param_2[10] * fVar1 + fVar3 * param_2[2] + fVar2 * param_2[6]); + return; +} + + + +void proc_7F05A250(undefined8 param_1,undefined8 param_2) + +{ + float *pfVar1; + int iVar2; + undefined4 extraout_a1_hi; + float *pfVar3; + undefined4 extraout_a1_lo; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + + pfVar3 = (float *)param_2; + proc_7F05A310(param_1,param_2); + fVar4 = proc_7F05A774((longlong)(int)param_1,CONCAT44(extraout_a1_hi,extraout_a1_lo)); + fVar4 = 1.00000000 / fVar4; + iVar2 = 1; + fVar9 = pfVar3[1]; + fVar10 = *pfVar3 * fVar4; + fVar8 = pfVar3[2]; + fVar11 = pfVar3[3]; + pfVar1 = pfVar3; + if (true) { + do { + fVar7 = fVar9 * fVar4; + fVar9 = pfVar1[5]; + fVar6 = fVar8 * fVar4; + fVar8 = pfVar1[6]; + iVar2 += 1; + fVar5 = fVar11 * fVar4; + fVar11 = pfVar1[7]; + *pfVar1 = fVar10; + fVar10 = pfVar1[4] * fVar4; + pfVar1[1] = fVar7; + pfVar1[2] = fVar6; + pfVar3 = pfVar1 + 4; + pfVar1[3] = fVar5; + pfVar1 = pfVar3; + } while (iVar2 != 4); + } + *pfVar3 = fVar10; + pfVar3[1] = fVar9 * fVar4; + pfVar3[2] = fVar8 * fVar4; + pfVar3[3] = fVar11 * fVar4; + return; +} + + + +void proc_7F05A310(undefined8 param_1,undefined8 param_2) + +{ + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a0_03; + undefined8 extraout_a0_04; + undefined8 extraout_a0_05; + undefined8 extraout_a0_06; + undefined8 extraout_a0_07; + undefined8 extraout_a0_08; + undefined8 extraout_a0_09; + undefined8 extraout_a0_10; + undefined8 extraout_a0_11; + undefined8 extraout_a0_12; + undefined8 extraout_a0_13; + undefined8 extraout_a1; + float *pfVar1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + undefined8 extraout_a1_02; + undefined8 extraout_a1_03; + undefined8 extraout_a1_04; + undefined8 extraout_a1_05; + undefined8 extraout_a1_06; + undefined8 extraout_a1_07; + undefined8 extraout_a1_08; + undefined8 extraout_a1_09; + undefined8 extraout_a1_10; + undefined8 extraout_a1_11; + undefined8 extraout_a1_12; + undefined8 extraout_a1_13; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + + pfVar1 = (float *)param_1; + fVar5 = pfVar1[2]; + fVar18 = pfVar1[1]; + fVar17 = *pfVar1; + fVar6 = pfVar1[3]; + fVar7 = pfVar1[4]; + fVar8 = pfVar1[8]; + fVar9 = pfVar1[5]; + fVar4 = pfVar1[7]; + fVar2 = pfVar1[6]; + fVar14 = pfVar1[0xd]; + fVar10 = pfVar1[9]; + fVar12 = pfVar1[0xb]; + fVar11 = pfVar1[10]; + fVar16 = pfVar1[0xf]; + fVar15 = pfVar1[0xe]; + fVar13 = pfVar1[0xc]; + fVar3 = proc_7F05A928(fVar9,fVar10,param_1,param_2,fVar14,fVar2,fVar11,fVar15,fVar4,fVar12, + fVar16); + pfVar1 = (float *)param_2; + *pfVar1 = fVar3; + fVar3 = proc_7F05A928(fVar7,fVar8,extraout_a0,extraout_a1,fVar13,fVar2,fVar11,fVar15,fVar4, + fVar12,fVar16); + pfVar1[4] = -fVar3; + fVar3 = proc_7F05A928(fVar7,fVar8,extraout_a0_00,extraout_a1_00,fVar13,fVar9,fVar10,fVar14,fVar4 + ,fVar12,fVar16); + pfVar1[8] = fVar3; + fVar3 = proc_7F05A928(fVar7,fVar8,extraout_a0_01,extraout_a1_01,fVar13,fVar9,fVar10,fVar14,fVar2 + ,fVar11,fVar15); + pfVar1[0xc] = -fVar3; + fVar3 = proc_7F05A928(fVar18,fVar10,extraout_a0_02,extraout_a1_02,fVar14,fVar5,fVar11,fVar15, + fVar6,fVar12,fVar16); + pfVar1[1] = -fVar3; + fVar3 = proc_7F05A928(fVar17,fVar8,extraout_a0_03,extraout_a1_03,fVar13,fVar5,fVar11,fVar15, + fVar6,fVar12,fVar16); + pfVar1[5] = fVar3; + fVar3 = proc_7F05A928(fVar17,fVar8,extraout_a0_04,extraout_a1_04,fVar13,fVar18,fVar10,fVar14, + fVar6,fVar12,fVar16); + pfVar1[9] = -fVar3; + fVar3 = proc_7F05A928(fVar17,fVar8,extraout_a0_05,extraout_a1_05,fVar13,fVar18,fVar10,fVar14, + fVar5,fVar11,fVar15); + pfVar1[0xd] = fVar3; + fVar3 = proc_7F05A928(fVar18,fVar9,extraout_a0_06,extraout_a1_06,fVar14,fVar5,fVar2,fVar15,fVar6 + ,fVar4,fVar16); + pfVar1[2] = fVar3; + fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_07,extraout_a1_07,fVar13,fVar5,fVar2,fVar15,fVar6 + ,fVar4,fVar16); + pfVar1[6] = -fVar3; + fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_08,extraout_a1_08,fVar13,fVar18,fVar9,fVar14, + fVar6,fVar4,fVar16); + pfVar1[10] = fVar3; + fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_09,extraout_a1_09,fVar13,fVar18,fVar9,fVar14, + fVar5,fVar2,fVar15); + pfVar1[0xe] = -fVar3; + fVar3 = proc_7F05A928(fVar18,fVar9,extraout_a0_10,extraout_a1_10,fVar10,fVar5,fVar2,fVar11,fVar6 + ,fVar4,fVar12); + pfVar1[3] = -fVar3; + fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_11,extraout_a1_11,fVar8,fVar5,fVar2,fVar11,fVar6, + fVar4,fVar12); + pfVar1[7] = fVar3; + fVar3 = proc_7F05A928(fVar17,fVar7,extraout_a0_12,extraout_a1_12,fVar8,fVar18,fVar9,fVar10,fVar6 + ,fVar4,fVar12); + pfVar1[0xb] = -fVar3; + fVar2 = proc_7F05A928(fVar17,fVar7,extraout_a0_13,extraout_a1_13,fVar8,fVar18,fVar9,fVar10,fVar5 + ,fVar2,fVar11); + pfVar1[0xf] = fVar2; + return; +} + + + +float proc_7F05A774(undefined8 param_1,undefined8 param_2) + +{ + float *pfVar1; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + + pfVar1 = (float *)param_1; + fVar6 = *pfVar1; + fVar9 = pfVar1[1]; + fVar12 = pfVar1[2]; + fVar14 = pfVar1[3]; + fVar7 = pfVar1[6]; + fVar2 = pfVar1[5]; + fVar16 = pfVar1[4]; + fVar10 = pfVar1[10]; + fVar5 = pfVar1[7]; + fVar18 = pfVar1[9]; + fVar17 = pfVar1[8]; + fVar13 = pfVar1[0xc]; + fVar19 = pfVar1[0xb]; + fVar15 = pfVar1[0xd]; + fVar8 = pfVar1[0xe]; + fVar11 = pfVar1[0xf]; + fVar3 = proc_7F05A928(fVar16,fVar17,param_1,param_2,fVar13,fVar2,fVar18,fVar15,fVar5,fVar19, + fVar11); + fVar4 = proc_7F05A928(fVar16,fVar17,extraout_a0,extraout_a1,fVar13,fVar7,fVar10,fVar8,fVar5, + fVar19,fVar11); + fVar5 = proc_7F05A928(fVar2,fVar18,extraout_a0_00,extraout_a1_00,fVar15,fVar7,fVar10,fVar8,fVar5 + ,fVar19,fVar11); + fVar2 = proc_7F05A928(fVar16,fVar17,extraout_a0_01,extraout_a1_01,fVar13,fVar2,fVar18,fVar15, + fVar7,fVar10,fVar8); + return ((fVar6 * fVar5 - fVar9 * fVar4) + fVar12 * fVar3) - fVar2 * fVar14; +} + + + +float proc_7F05A928(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, + float param_6,float param_7,float param_8,float param_9,float param_10, + float param_11) + +{ + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + float fVar1; + float fVar2; + float fVar3; + + fVar1 = proc_7F05A9B8(param_2,param_5,param_3,param_4,param_10,param_11); + fVar2 = proc_7F05A9B8(param_7,param_8,extraout_a0,extraout_a1,param_10,param_11); + fVar3 = proc_7F05A9B8(param_2,param_5,extraout_a0_00,extraout_a1_00,param_7,param_8); + return fVar3 * param_9 + (param_1 * fVar2 - param_6 * fVar1); +} + + + +float proc_7F05A9B8(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, + float param_6) + +{ + return param_1 * param_6 - param_2 * param_5; +} + + + +void proc_7F05A9E0(float param_1) + +{ + float fVar1; + float fVar2; + + fVar1 = sinf(param_1); + fVar2 = cosf(param_1); + sqrtf(fVar1 / fVar2 + 1.00000000); + return; +} + + + +float convert_angle_using_inverse(f32 vector1,f32 vector2) + +{ + float fVar1; + + if ((float)vector1 == 0.00000000) { + fVar1 = flt_80053700; + if (0.00000000 <= (float)vector2) { + fVar1 = 0.00000000; + } + } + else { + if ((float)vector2 == 0.00000000) { + fVar1 = flt_80053704; + if ((float)vector1 <= 0.00000000) { + fVar1 = flt_80053708; + } + } + else { + fVar1 = sqrtf((float)vector1 * (float)vector1 + (float)vector2 * (float)vector2); + if ((float)vector2 < (float)vector1) { + fVar1 = proc_7F05ACB0((float)vector2 / fVar1); + if ((float)vector1 < 0.00000000) { + fVar1 = flt_8005370C - fVar1; + } + } + else { + fVar1 = proc_7F05ACB0((float)vector1 / fVar1); + fVar1 = flt_80053710 - fVar1; + if ((float)vector2 < 0.00000000) { + fVar1 = flt_80053714 - fVar1; + } + if (fVar1 < 0.00000000) { + fVar1 = fVar1 + flt_80053718; + } + } + } + } + return fVar1; +} + + + +int proc_7F05AB70(uint param_1) + +{ + uint uVar1; + int iVar2; + undefined *puVar3; + uint uVar4; + + uVar1 = 7; + if ((int)param_1 < 0x7fe0) { + uVar1 = 0x1ff; + if ((int)param_1 < 0x7800) { + iVar2 = 9; + puVar3 = &table_1; + } + else { + uVar1 = 0x1f; + iVar2 = 5; + puVar3 = &table_2; + param_1 -= 0x7800; + } + } + else { + iVar2 = 3; + puVar3 = &table_3; + param_1 -= 0x7fe0; + } + uVar4 = (uint)*(ushort *)(puVar3 + ((int)param_1 >> iVar2) * 2); + return (int)(uVar4 - ((int)((uVar4 - *(ushort *)(puVar3 + ((int)param_1 >> iVar2) * 2 + 1)) * + (param_1 & uVar1)) >> iVar2)); +} + + + +uint proc_7F05ABF0(short param_1) + +{ + uint uVar1; + + uVar1 = SEXT24(param_1); + if ((int)uVar1 < 0) { + uVar1 = -uVar1; + } + uVar1 = proc_7F05AB70(uVar1); + if (param_1 < 0) { + uVar1 = 0xffff - uVar1; + } + return uVar1 & 0xffff; +} + + + +short proc_7F05AC44(short param_1) + +{ + int iVar1; + short sVar2; + uint uVar3; + + uVar3 = SEXT24(param_1); + if ((int)uVar3 < 0) { + uVar3 = -uVar3; + } + iVar1 = proc_7F05AB70(uVar3); + if (param_1 < 0) { + sVar2 = (short)iVar1 + -0x8000; + } + else { + sVar2 = 0x7fff - (short)iVar1; + } + return sVar2; +} + + + +float proc_7F05ACB0(float param_1) + +{ + uint uVar1; + short sVar2; + float fVar3; + + if (1.00000000 <= param_1) { + sVar2 = 0x7fff; + } + else { + if (param_1 <= -1.00000000) { + sVar2 = -0x7fff; + } + else { + sVar2 = (short)(int)(param_1 * flt_80053720); + } + } + uVar1 = proc_7F05ABF0(sVar2); + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + return (fVar3 * flt_80053724) / flt_80053728; +} + + + +float proc_7F05AD5C(float param_1) + +{ + short sVar1; + + if (1.00000000 <= param_1) { + sVar1 = 0x7fff; + } + else { + if (param_1 <= -1.00000000) { + sVar1 = -0x7fff; + } + else { + sVar1 = (short)(int)(param_1 * flt_8005372C); + } + } + sVar1 = proc_7F05AC44(sVar1); + return ((float)(int)sVar1 * flt_80053730) / flt_80053734; +} + + + +void proc_7F05AE00(float *param_1,float *param_2,float param_3,float *param_4) + +{ + float *in_a3_lo; + + *in_a3_lo = (*param_2 - *param_1) * (float)param_4 + *param_1; + in_a3_lo[1] = (param_2[1] - param_1[1]) * (float)param_4 + param_1[1]; + in_a3_lo[2] = (param_2[2] - param_1[2]) * (float)param_4 + param_1[2]; + return; +} + + + +float proc_7F05AE50(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, + float param_6,float param_7) + +{ + float fVar1; + float fVar2; + + fVar1 = param_7 * param_7; + fVar2 = fVar1 * param_7; + return param_1 * (fVar1 - (param_7 + fVar2) * 0.50000000) + + param_2 * ((fVar2 * 1.50000000 - fVar1 * 2.50000000) + 1.00000000) + + param_5 * (fVar2 * -1.50000000 + fVar1 + fVar1 + param_7 * 0.50000000) + + param_6 * (fVar2 - fVar1) * 0.50000000; +} + + + +void proc_7F05AEFC(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, + float *param_6) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float *in_stack_00000014; + + fVar1 = (float)param_6 * (float)param_6; + fVar2 = fVar1 * (float)param_6; + fVar3 = (fVar2 - fVar1) * 0.50000000; + fVar4 = fVar1 - ((float)param_6 + fVar2) * 0.50000000; + fVar5 = (fVar2 * 1.50000000 - fVar1 * 2.50000000) + 1.00000000; + fVar1 = fVar2 * -1.50000000 + fVar1 + fVar1 + (float)param_6 * 0.50000000; + *in_stack_00000014 = *param_4 * fVar3 + fVar4 * *param_1 + fVar5 * *param_2 + fVar1 * *param_3; + in_stack_00000014[1] = + param_4[1] * fVar3 + fVar4 * param_1[1] + fVar5 * param_2[1] + fVar1 * param_3[1]; + in_stack_00000014[2] = + param_4[2] * fVar3 + fVar4 * param_1[2] + fVar5 * param_2[2] + fVar1 * param_3[2]; + return; +} + + + +void proc_7F05B024(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, + float param_6,float *param_7) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float in_stack_00000014; + float *in_stack_00000018; + + fVar1 = (float)param_7 * (float)param_7; + fVar2 = fVar1 * (float)param_7; + fVar3 = (fVar2 - fVar1) * in_stack_00000014; + fVar4 = ((fVar1 + fVar1) - ((float)param_7 + fVar2)) * in_stack_00000014; + fVar5 = (2.00000000 - in_stack_00000014) * fVar2 + fVar1 * (in_stack_00000014 - 3.00000000) + + 1.00000000; + fVar1 = (in_stack_00000014 - 2.00000000) * fVar2 + + fVar1 * (3.00000000 - (in_stack_00000014 + in_stack_00000014)) + + (float)param_7 * in_stack_00000014; + *in_stack_00000018 = *param_4 * fVar3 + fVar4 * *param_1 + fVar5 * *param_2 + fVar1 * *param_3; + in_stack_00000018[1] = + param_4[1] * fVar3 + fVar4 * param_1[1] + fVar5 * param_2[1] + fVar1 * param_3[1]; + in_stack_00000018[2] = + param_4[2] * fVar3 + fVar4 * param_1[2] + fVar5 * param_2[2] + fVar1 * param_3[2]; + return; +} + + + +float proc_7F05B154(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5, + float param_6,float param_7) + +{ + float fVar1; + float fVar2; + float fVar3; + + fVar1 = param_7 * param_7; + fVar2 = fVar1 * param_7; + fVar3 = ((fVar2 + fVar2) - fVar1 * 3.00000000) + 1.00000000; + return param_1 * fVar3 + param_2 * (1.00000000 - fVar3) + + param_5 * ((fVar2 - (fVar1 + fVar1)) + param_7) + param_6 * (fVar2 - fVar1); +} + + + +void proc_7F05B1D4(ushort *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + + fVar1 = flt_80053740; + fVar2 = (float)(uint)*param_1; + if (false) { + fVar2 = fVar2 + 4294967296.00000000; + } + fVar2 = cosf(fVar2 * flt_80053740 * 0.50000000); + fVar5 = (float)(uint)*param_1; + if (false) { + fVar5 = fVar5 + 4294967296.00000000; + } + fVar5 = sinf(fVar5 * fVar1 * 0.50000000); + fVar3 = (float)(uint)param_1[1]; + if (false) { + fVar3 = fVar3 + 4294967296.00000000; + } + fVar3 = cosf(fVar3 * fVar1 * 0.50000000); + fVar6 = (float)(uint)param_1[1]; + if (false) { + fVar6 = fVar6 + 4294967296.00000000; + } + fVar6 = sinf(fVar6 * fVar1 * 0.50000000); + fVar4 = (float)(uint)param_1[2]; + if (false) { + fVar4 = fVar4 + 4294967296.00000000; + } + fVar4 = cosf(fVar4 * fVar1 * 0.50000000); + fVar7 = (float)(uint)param_1[2]; + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar1 = sinf(fVar7 * fVar1 * 0.50000000); + *param_2 = fVar2 * fVar3 * fVar4 + fVar5 * fVar6 * fVar1; + param_2[1] = fVar5 * fVar3 * fVar4 - fVar2 * fVar6 * fVar1; + param_2[2] = fVar2 * fVar6 * fVar4 + fVar5 * fVar3 * fVar1; + param_2[3] = fVar2 * fVar3 * fVar1 - fVar5 * fVar6 * fVar4; + return; +} + + + +void proc_7F05B3F4(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + + fVar1 = cosf(*param_1 * 0.50000000); + fVar2 = sinf(*param_1 * 0.50000000); + fVar3 = cosf(param_1[1] * 0.50000000); + fVar4 = sinf(param_1[1] * 0.50000000); + fVar5 = cosf(param_1[2] * 0.50000000); + fVar6 = sinf(param_1[2] * 0.50000000); + *param_2 = fVar1 * fVar3 * fVar5 + fVar2 * fVar4 * fVar6; + param_2[1] = fVar2 * fVar3 * fVar5 - fVar1 * fVar4 * fVar6; + param_2[2] = fVar1 * fVar4 * fVar5 + fVar2 * fVar3 * fVar6; + param_2[3] = fVar1 * fVar3 * fVar6 - fVar2 * fVar4 * fVar5; + return; +} + + + +void proc_7F05B528(float param_1,undefined8 param_2,float *param_3) + +{ + float fVar1; + + fVar1 = cosf(param_1 * 0.50000000); + *param_3 = fVar1; + fVar1 = sinf(param_1 * 0.50000000); + param_3[1] = fVar1; + param_3[2] = 0.00000000; + param_3[3] = 0.00000000; + return; +} + + + +void proc_7F05B57C(float param_1,undefined8 param_2,float *param_3) + +{ + float fVar1; + + fVar1 = cosf(param_1 * 0.50000000); + *param_3 = fVar1; + param_3[1] = 0.00000000; + fVar1 = sinf(param_1 * 0.50000000); + param_3[2] = fVar1; + param_3[3] = 0.00000000; + return; +} + + + +void proc_7F05B5D4(float param_1,undefined8 param_2,float *param_3) + +{ + float fVar1; + + fVar1 = cosf(param_1 * 0.50000000); + *param_3 = fVar1; + param_3[1] = 0.00000000; + param_3[2] = 0.00000000; + fVar1 = sinf(param_1 * 0.50000000); + param_3[3] = fVar1; + return; +} + + + +void proc_7F05B628(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + + fVar8 = *param_1; + fVar1 = param_1[1]; + fVar2 = param_1[2]; + fVar5 = param_1[3]; + fVar4 = 2.00000000 / (fVar5 * fVar5 + fVar8 * fVar8 + fVar1 * fVar1 + fVar2 * fVar2); + fVar7 = fVar2 * fVar4; + fVar6 = fVar5 * fVar4; + fVar3 = fVar8 * fVar1 * fVar4; + fVar4 = fVar1 * fVar1 * fVar4; + *param_2 = 1.00000000 - (fVar2 * fVar7 + fVar5 * fVar6); + param_2[1] = fVar1 * fVar7 + fVar8 * fVar6; + param_2[2] = fVar1 * fVar6 - fVar8 * fVar7; + param_2[4] = fVar1 * fVar7 - fVar8 * fVar6; + param_2[6] = fVar2 * fVar6 + fVar3; + param_2[5] = 1.00000000 - (fVar4 + fVar5 * fVar6); + param_2[9] = fVar2 * fVar6 - fVar3; + param_2[8] = fVar1 * fVar6 + fVar8 * fVar7; + param_2[0xc] = 0.00000000; + param_2[0xd] = 0.00000000; + param_2[0xe] = 0.00000000; + param_2[3] = 0.00000000; + param_2[7] = 0.00000000; + param_2[0xb] = 0.00000000; + param_2[0xf] = 1.00000000; + param_2[10] = 1.00000000 - (fVar4 + fVar2 * fVar7); + return; +} + + + +void proc_7F05B798(float *param_1,float *param_2) + +{ + int iVar1; + int iVar2; + float *pfVar3; + uint uVar4; + float *pfVar5; + int *piVar6; + int iVar7; + float fVar8; + float __x; + int aiStack32 [8]; + + __x = param_1[10] + *param_1 + param_1[5] + 1.00000000; + if (0.00000000 < __x) { + __x = sqrtf(__x); + fVar8 = 0.50000000 / __x; + *param_2 = __x * 0.50000000; + param_2[1] = (param_1[6] - param_1[9]) * fVar8; + param_2[2] = (param_1[8] - param_1[2]) * fVar8; + param_2[3] = (param_1[1] - param_1[4]) * fVar8; + } + else { + aiStack32[0] = dword_80032430; + aiStack32[1] = DAT_80032434; + aiStack32[2] = DAT_80032438; + if (*param_1 < param_1[5]) { + iVar7 = 0x10; + } + else { + iVar7 = 0; + } + pfVar3 = (float *)((int)param_1 + iVar7); + uVar4 = (uint)(*param_1 < param_1[5]); + iVar7 = uVar4 * 4; + __x = pfVar3[uVar4]; + if (__x < param_1[10]) { + pfVar3 = param_1 + 8; + __x = param_1[10]; + iVar7 = 8; + piVar6 = aiStack32 + 2; + } + else { + piVar6 = aiStack32 + uVar4; + } + iVar1 = *piVar6; + iVar2 = aiStack32[iVar1]; + pfVar5 = param_1 + iVar1 * 4; + param_1 = param_1 + iVar2 * 4; + __x = sqrtf(((__x - pfVar5[iVar1]) - param_1[iVar2]) + 1.00000000); + fVar8 = 0.50000000 / __x; + *(float *)((int)param_2 + iVar7 + 4) = __x * 0.50000000; + *param_2 = (pfVar5[iVar2] - param_1[iVar1]) * fVar8; + param_2[iVar1 + 1] = (*(float *)((int)pfVar5 + iVar7) + pfVar3[iVar1]) * fVar8; + param_2[iVar2 + 1] = (*(float *)((int)param_1 + iVar7) + pfVar3[iVar2]) * fVar8; + } + return; +} + + + +void proc_7F05B9B4(float *param_1,float *param_2,float *param_3) + +{ + proc_7F05B628(param_2,param_3); + param_3[0xc] = *param_1; + param_3[0xd] = param_1[1]; + param_3[0xe] = param_1[2]; + return; +} + + + +void proc_7F05BA08(float *param_1,float *param_2,float param_3,float *param_4) + +{ + float *in_a3_lo; + float __x; + float fVar1; + float fVar2; + + fVar2 = *param_2; + __x = *param_1; + fVar1 = param_2[3] * param_1[3] + + __x * fVar2 + param_1[1] * param_2[1] + param_1[2] * param_2[2]; + if (fVar1 < flt_80053744) { + fVar1 = 1.00000000 - (float)param_4; + *in_a3_lo = fVar1 * __x - fVar2 * (float)param_4; + in_a3_lo[1] = fVar1 * param_1[1] - param_2[1] * (float)param_4; + in_a3_lo[2] = fVar1 * param_1[2] - param_2[2] * (float)param_4; + in_a3_lo[3] = fVar1 * param_1[3] - param_2[3] * (float)param_4; + } + else { + if (fVar1 <= flt_80053748) { + __x = proc_7F05ACB0(fVar1); + fVar1 = sinf(__x); + fVar2 = sinf((1.00000000 - (float)param_4) * __x); + fVar2 = fVar2 / fVar1; + __x = sinf((float)param_4 * __x); + __x = __x / fVar1; + *in_a3_lo = *param_2 * __x + fVar2 * *param_1; + in_a3_lo[1] = param_2[1] * __x + fVar2 * param_1[1]; + in_a3_lo[2] = param_2[2] * __x + fVar2 * param_1[2]; + in_a3_lo[3] = param_2[3] * __x + fVar2 * param_1[3]; + } + else { + fVar1 = 1.00000000 - (float)param_4; + *in_a3_lo = fVar2 * (float)param_4 + fVar1 * __x; + in_a3_lo[1] = param_2[1] * (float)param_4 + fVar1 * param_1[1]; + in_a3_lo[2] = param_2[2] * (float)param_4 + fVar1 * param_1[2]; + in_a3_lo[3] = param_2[3] * (float)param_4 + fVar1 * param_1[3]; + } + } + return; +} + + + +void proc_7F05BC68(float *param_1,float param_2,float *param_3) + +{ + float *in_a2_lo; + float fVar1; + float __x; + float fVar2; + float fVar3; + + fVar1 = *param_1; + fVar3 = 1.00000000; + __x = fVar1; + if (fVar1 < 0.00000000) { + fVar3 = -1.00000000; + __x = -fVar1; + } + if (__x < flt_8005374C) { + *in_a2_lo = fVar1 * (float)param_3 - (1.00000000 - (float)param_3) * fVar3; + in_a2_lo[1] = param_1[1] * (float)param_3; + in_a2_lo[2] = param_1[2] * (float)param_3; + in_a2_lo[3] = param_1[3] * (float)param_3; + } + else { + if (__x <= flt_80053750) { + __x = proc_7F05ACB0(__x); + fVar1 = sinf(__x); + fVar2 = sinf((float)param_3 * __x); + fVar2 = fVar2 / fVar1; + __x = sinf((1.00000000 - (float)param_3) * __x); + *in_a2_lo = *param_1 * fVar2 + (__x / fVar1) * fVar3; + in_a2_lo[1] = param_1[1] * fVar2; + in_a2_lo[2] = param_1[2] * fVar2; + in_a2_lo[3] = param_1[3] * fVar2; + } + else { + *in_a2_lo = fVar1 * (float)param_3 + (1.00000000 - (float)param_3) * fVar3; + in_a2_lo[1] = param_1[1] * (float)param_3; + in_a2_lo[2] = param_1[2] * (float)param_3; + in_a2_lo[3] = param_1[3] * (float)param_3; + } + } + return; +} + + + +void proc_7F05BE10(float *param_1,float *param_2) + +{ + if (param_2[3] * param_1[3] + + *param_1 * *param_2 + param_1[1] * param_2[1] + param_1[2] * param_2[2] < 0.00000000) { + *param_2 = -*param_2; + param_2[1] = -param_2[1]; + param_2[2] = -param_2[2]; + param_2[3] = -param_2[3]; + } + return; +} + + + +void proc_7F05BE88(float *param_1,float *param_2,float *param_3) + +{ + *param_3 = ((*param_1 * *param_2 - param_1[1] * param_2[1]) - param_1[2] * param_2[2]) - + param_2[3] * param_1[3]; + param_3[1] = (*param_1 * param_2[1] + *param_2 * param_1[1] + param_1[2] * param_2[3]) - + param_2[2] * param_1[3]; + param_3[2] = (*param_1 * param_2[2] + *param_2 * param_1[2] + param_1[3] * param_2[1]) - + param_2[3] * param_1[1]; + param_3[3] = (*param_1 * param_2[3] + *param_2 * param_1[3] + param_1[1] * param_2[2]) - + param_2[1] * param_1[2]; + return; +} + + + +void proc_7F05BF8C(float *param_1,float *param_2) + +{ + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + proc_7F05BE88(param_1,param_2,&fStack16); + *param_2 = fStack16; + param_2[1] = fStack12; + param_2[2] = fStack8; + param_2[3] = fStack4; + return; +} + + + +void proc_7F05BFD4(float *param_1,undefined4 *param_2) + +{ + float __x; + float fVar1; + + __x = proc_7F05ACB0(*param_1); + fVar1 = sinf(__x); + if (fVar1 == 0.00000000) { + *param_2 = 0; + param_2[1] = 0; + param_2[2] = 0; + param_2[3] = 0; + } + else { + *param_2 = 0; + __x = __x / fVar1; + *(float *)(param_2 + 1) = param_1[1] * __x; + *(float *)(param_2 + 2) = param_1[2] * __x; + *(float *)(param_2 + 3) = param_1[3] * __x; + } + return; +} + + + +void proc_7F05C068(int param_1,float *param_2) + +{ + float __x; + float fVar1; + + __x = sqrtf(*(float *)(param_1 + 0xc) * *(float *)(param_1 + 0xc) + + *(float *)(param_1 + 4) * *(float *)(param_1 + 4) + + *(float *)(param_1 + 8) * *(float *)(param_1 + 8)); + if (__x == 0.00000000) { + param_2[1] = 0.00000000; + param_2[2] = 0.00000000; + param_2[3] = 0.00000000; + *param_2 = 1.00000000; + } + else { + fVar1 = sinf(__x); + fVar1 = fVar1 / __x; + __x = cosf(__x); + *param_2 = __x; + param_2[1] = *(float *)(param_1 + 4) * fVar1; + param_2[2] = *(float *)(param_1 + 8) * fVar1; + param_2[3] = *(float *)(param_1 + 0xc) * fVar1; + } + return; +} + + + +void proc_7F05C138(float *param_1,float *param_2,float *param_3,float *param_4) + +{ + float fStack80; + float fStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float afStack48 [4]; + float afStack32 [4]; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + fStack16 = *param_2; + fStack12 = -param_2[1]; + fStack8 = -param_2[2]; + fStack4 = -param_2[3]; + proc_7F05BE88(&fStack16,param_1,afStack32); + proc_7F05BE88(&fStack16,param_3,afStack48); + proc_7F05BFD4(afStack32,&fStack64); + proc_7F05BFD4(afStack48,&fStack80); + fStack64 = -(fStack80 + fStack64) * 0.25000000; + fStack60 = -(fStack76 + fStack60) * 0.25000000; + fStack56 = -(fStack72 + fStack56) * 0.25000000; + fStack52 = -(fStack68 + fStack52) * 0.25000000; + proc_7F05C068((int)&fStack64,afStack32); + proc_7F05BE88(param_2,afStack32,param_4); + return; +} + + + +void proc_7F05C250(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, + float *param_6) + +{ + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float afStack32 [4]; + float afStack16 [4]; + + proc_7F05BE10(param_1,param_4); + proc_7F05BA08(param_1,param_4,extraout_f12,param_6); + proc_7F05BE10(param_2,param_3); + proc_7F05BA08(param_2,param_3,extraout_f12_00,param_6); + proc_7F05BE10(afStack16,afStack32); + proc_7F05BA08(afStack16,afStack32,extraout_f12_01, + (float *)(((float)param_6 + (float)param_6) * (1.00000000 - (float)param_6))); + return; +} + + + +void proc_7F05C2F0(float *param_1,float *param_2,float *param_3,float *param_4,float param_5, + float *param_6) + +{ + float extraout_f12; + float afStack32 [4]; + float afStack16 [4]; + + proc_7F05C138(param_1,param_2,param_3,afStack16); + proc_7F05C138(param_2,param_3,param_4,afStack32); + proc_7F05C250(param_2,afStack16,afStack32,param_3,extraout_f12,param_6); + return; +} + + + +float truncf(float __x) + +{ + float y; + + if (0.00000000 <= __x) { + return (float)(int)__x; + } + y = (float)(int)__x; + if (__x != y) { + return y - 1.00000000; + } + return y; +} + + + +int proc_7F05C3D8(float param_1) + +{ + int iVar1; + + if (0.00000000 <= param_1) { + return (int)param_1; + } + iVar1 = (int)param_1; + if (param_1 != (float)iVar1) { + return iVar1 + -1; + } + return iVar1; +} + + + +float proc_7F05C440(float param_1) + +{ + float fVar1; + + if (param_1 <= 0.00000000) { + return (float)(int)param_1; + } + fVar1 = (float)(int)param_1; + if (param_1 != fVar1) { + return fVar1 + 1.00000000; + } + return fVar1; +} + + + +int proc_7F05C4B8(float param_1) + +{ + int iVar1; + + if (param_1 <= 0.00000000) { + return (int)param_1; + } + iVar1 = (int)param_1; + if (param_1 != (float)iVar1) { + return iVar1 + 1; + } + return iVar1; +} + + + +void set_cartridges_eject(u32 param_1) + +{ + cartridges_eject = param_1; + return; +} + + + +undefined4 get_cartridges_eject(void) + +{ + return cartridges_eject; +} + + + +void nullsub_73(void) + +{ + return; +} + + + +void proc_7F05C540(float *param_1) + +{ + int iVar1; + int iVar2; + float fVar3; + + iVar2 = DAT_80034ca0; + iVar1 = DAT_80034ca0 * 9; + fVar3 = (float)DWORD_ARRAY_80035904[DAT_80034ca0 * 9 + 3]; + *(float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 1) = + (float)DWORD_ARRAY_80035904[DAT_80034ca0 * 9 + 1] + *param_1; + *(float *)(DWORD_ARRAY_80035904 + iVar2 * 9 + 2) = + (float)DWORD_ARRAY_80035904[iVar1 + 2] + param_1[1]; + *(float *)(DWORD_ARRAY_80035904 + iVar2 * 9 + 3) = fVar3 + param_1[2]; + return; +} + + + +void proc_7F05C594(float *param_1) + +{ + float afStack64 [16]; + + proc_7F058714((float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 4),afStack64); + proc_7F058068(param_1,afStack64); + proc_7F058860(afStack64,(float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 4)); + return; +} + + + +void proc_7F05C614(void) + +{ + if (cartridges_eject != 0) { + pPlayer->field_92C = 1; + proc_7F058714((float *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 4), + (float *)&pPlayer->field_8EC); + copies_first_3_floats_from_a0_to_a1_plus_0x30 + ((xyzpoint *)(DWORD_ARRAY_80035904 + DAT_80034ca0 * 9 + 1), + (int)&pPlayer->field_8EC); + cartridges_eject = 0; + } + return; +} + + + +void proc_7F05C6B8(void) + +{ + DAT_80034ca0 += 1; + if ((DWORD_ARRAY_80035904[DAT_80034ca0 * 9] & 1) != 0) { + DAT_80034ca0 = 0; + } + return; +} + + + +undefined8 proc_7F05C6FC(int param_1,float param_2,float *param_3,int param_4) + +{ + uint uVar1; + int iVar3; + undefined8 uVar2; + int in_a3_lo; + int iVar4; + float fVar5; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float afStack104 [4]; + float afStack88 [4]; + float afStack72 [4]; + float afStack56 [4]; + float fStack40; + float fStack36; + xyzpoint xStack24; + undefined4 uStack12; + float *pfStack8; + + iVar3 = 1; + if (*(float *)(param_1 + 0x44) <= (float)param_3) { + fVar5 = *(float *)(param_1 + 0x44); + uVar1 = *(uint *)(param_1 + 0x90); + iVar4 = param_1 + 0x24; + while( true ) { + param_3 = (float *)((float)param_3 - fVar5); + iVar3 += 1; + if (((uVar1 & 1) != 0) || (fVar5 = *(float *)(iVar4 + 0x44), (float)param_3 < fVar5)) + break; + uVar1 = *(uint *)(iVar4 + 0x90); + iVar4 = iVar4 + 0x24; + } + iVar4 = iVar3 * 8; + } + else { + iVar4 = 8; + } + param_1 += (iVar4 + iVar3) * 4; + if ((*(uint *)(param_1 + 0x48) & 1) == 0) { + pfStack8 = (float *)((float)param_3 / *(float *)(param_1 + 0x20)); + uStack12 = *(undefined4 *)(param_1 + 0x1c); + proc_7F05B3F4((float *)(param_1 + -0x14),afStack56); + proc_7F05B3F4((float *)(param_1 + 0x10),afStack72); + proc_7F05B3F4((float *)(param_1 + 0x34),afStack88); + proc_7F05B3F4((float *)(param_1 + 0x58),afStack104); + proc_7F05BE10(afStack72,afStack88); + proc_7F05BE10(afStack88,afStack104); + proc_7F05BE10(afStack72,afStack56); + proc_7F05C2F0(afStack56,afStack72,afStack88,afStack104,extraout_f12,pfStack8); + proc_7F05B024((float *)(param_1 + -0x20),(float *)(param_1 + 4),(float *)(param_1 + 0x28), + (float *)(param_1 + 0x4c),extraout_f12_00,extraout_f14,pfStack8); + if (in_a3_lo == 1) { + xStack24.x = -xStack24.x; + fStack40 = -fStack40; + fStack36 = -fStack36; + } + proc_7F05B628(&fStack40,(float *)param_4); + copies_first_3_floats_from_a0_to_a1_plus_0x30(&xStack24,param_4); + uVar2 = 1; + } + else { + proc_7F058714((float *)(param_1 + 0x10),(float *)param_4); + copies_first_3_floats_from_a0_to_a1_plus_0x30((xyzpoint *)(param_1 + 4),param_4); + uVar2 = 0; + } + return uVar2; +} + + + +weapon_stats * get_ptr_item_statistics(ITEM_IDS item) + +{ + if ((&gitem_structs)[item].no_model == 0) { + return (&gitem_structs)[item].item_weapon_stats; + } + return &default_weaponstats; +} + + + +void copy_item_in_hand(xyzpoint *param_1) + +{ + ITEM_IDS item; + weapon_stats *pwVar1; + + item = get_item_in_hand(0); + pwVar1 = get_ptr_item_statistics(item); + param_1->x = (pwVar1->position).x; + param_1->y = (pwVar1->position).y; + param_1->z = (pwVar1->position).z; + return; +} + + + +void copy_item_in_hand_to_main_list(undefined4 *param_1) + +{ + ITEM_IDS item; + weapon_stats *pwVar1; + + item = get_item_in_hand(0); + pwVar1 = get_ptr_item_statistics(item); + (pwVar1->position).x = *param_1; + (pwVar1->position).y = param_1[1]; + (pwVar1->position).z = param_1[2]; + return; +} + + + +void unknown_takes_playerhand(int hand) + +{ + ITEM_IDS item; + weapon_stats *pwVar1; + u32 uVar2; + int *piVar3; + uint uVar4; + uint *puVar5; + float fVar6; + float fVar7; + uint auStack16 [4]; + + item = get_item_in_hand(hand); + pwVar1 = get_ptr_item_statistics(item); + piVar3 = &pPlayer->unknown + hand * 0xea; + fVar7 = pwVar1->sway; + puVar5 = auStack16 + hand + 2; + uVar4 = piVar3[0x282] + 2U & 3; + if (((int)(piVar3[0x282] + 2U) < 0) && (uVar4 != 0)) { + uVar4 -= 4; + } + *puVar5 = uVar4; + uVar4 = piVar3[0x282] + 1U & 3; + if (((int)(piVar3[0x282] + 1U) < 0) && (uVar4 != 0)) { + uVar4 -= 4; + } + auStack16[hand] = uVar4; + piVar3[0x282] = uVar4; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_9A8 + hand * 0xea + *puVar5 * 3) = + (fVar6 * 0.00000000 - 0.50000000) * flt_80053C14 * fVar7; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_9AC + hand * 0xea + *puVar5 * 3) = + (fVar6 * 0.00000000 - 0.50000000) * flt_80053C18 * fVar7; + (&pPlayer->field_9B0)[hand * 0xea + *puVar5 * 3] = -0x40800000; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_9D8 + hand * 0xea + *puVar5 * 3) = + (fVar6 * 0.00000000 - 0.50000000) * flt_80053C1C * fVar7; + (&pPlayer->field_9DC)[hand * 0xea + *puVar5 * 3] = 0x3f800000; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_9E0 + hand * 0xea + *puVar5 * 3) = + (fVar6 * 0.00000000 - 0.50000000) * flt_80053C20 * fVar7; + uVar2 = get_random_value(); + fVar7 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar7 = fVar7 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_978 + hand * 0xea + *puVar5 * 3) = + fVar7 * 0.00000000 * 0.75000000 + 1.50000000; + uVar2 = get_random_value(); + fVar7 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar7 = fVar7 + 4294967296.00000000; + } + *(float *)(&pPlayer->unknown + hand * 0xea + *puVar5 * 3 + 0x25f) = + (float)(&pPlayer->unknown + hand * 0xea)[0x285] * (fVar7 * 0.00000000 + 2.00000000); + uVar2 = get_random_value(); + fVar7 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar7 = fVar7 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_980 + hand * 0xea + *puVar5 * 3) = + (fVar7 * 0.00000000 - 0.50000000) * 2.50000000; + piVar3 = &pPlayer->unknown + hand * 0xea; + if (piVar3[0x286] < 0) { + *(float *)(&pPlayer->unknown + hand * 0xea + *puVar5 * 3 + 0x25e) = + (float)(&pPlayer->unknown + hand * 0xea + *puVar5 * 3)[0x25e] * -1.00000000; + piVar3 = &pPlayer->unknown + hand * 0xea; + if (piVar3[0x286] == -2) { + piVar3[0x286] = 1; + } + else { + piVar3[0x286] = -2; + } + } + else { + if (piVar3[0x286] == 2) { + piVar3[0x286] = -1; + } + else { + piVar3[0x286] = 2; + } + } + *(float *)(&pPlayer->unknown + hand * 0xea + 0x285) = + -(float)(&pPlayer->unknown + hand * 0xea)[0x285]; + return; +} + + + +ulonglong proc_7F05CEBC(int param_1) + +{ + int *piVar1; + ulonglong uVar2; + + piVar1 = &pPlayer->unknown + param_1; + uVar2 = (ulonglong)(0 < piVar1[0x1fe]); + if ((0 >= piVar1[0x1fe]) && (uVar2 = (ulonglong)(piVar1[0x200] == 0), piVar1[0x200] == 0)) { + uVar2 = (ulonglong)(piVar1[0xa91] < 0); + } + return uVar2; +} + + + +ITEM_IDS get_itemtype_in_hand(HAND hand) + +{ + return pPlayer->hand_item[hand]; +} + + + +Gitemheader * get_ptr_itemheader_in_hand(HAND hand) + +{ + return (Gitemheader *)(pPlayer->copy_of_body_obj_header + hand * 8); +} + + + +u8 * getPlayerWeaponBufferForHand(HAND hand) + +{ + return pPlayer->ptr_hand_weapon_buffer[hand]; +} + + + +u32 getSizeBufferWeaponInHand(HAND param_1) + +{ + return size_item_buffer[param_1]; +} + + + +void remove_item_in_hand(HAND hand) + +{ + pPlayer->hand_invisible[hand] = 0; + pPlayer->hand_item[hand] = ITEM_UNARMED; + pPlayer->field_2A44[hand] = -1; + pPlayer->lock_hand_model[hand] = 1; + return; +} + + + +void place_item_in_hand_swap_and_make_visible(HAND hand,ITEM_IDS item) + +{ + Player *local_v1_lo_16; + + local_v1_lo_16 = (Player *)(&pPlayer->unknown + hand); + if (local_v1_lo_16->lock_hand_model[0] == 0) { + if (local_v1_lo_16->hand_invisible[0] < 0) { + if (item != local_v1_lo_16->hand_item[0]) { + local_v1_lo_16->field_2A44[0] = item; + return; + } + local_v1_lo_16->hand_invisible[0] = 1; + } + else { + if (item != local_v1_lo_16->hand_item[0]) { + local_v1_lo_16->hand_invisible[0] = -1; + pPlayer->field_2A44[hand] = item; + return; + } + } + } + return; +} + + + +char * get_ptr_item_text_call_line(int item) + +{ + if (item == 1) { + item = pPlayer->cur_item_weapon_getname; + } + return (&gitem_structs)[item].item_file_name; +} + + + +Gitemheader * get_ptr_weapon_model_header_line(int weapon) + +{ + if (weapon == 1) { + weapon = pPlayer->cur_item_weapon_getname; + } + return (&gitem_structs)[weapon].item_header; +} + + + +int getCurrentWeaponOrItem(void) + +{ + return pPlayer->cur_item_weapon_getname; +} + + + +void used_to_load_1st_person_model_on_demand(int param_1) + +{ + ITEM_IDS item; + u32 uVar1; + int *piVar2; + u8 *recallstring; + int targetloc; + int iVar3; + int *piVar4; + + piVar2 = &pPlayer->unknown + param_1; + targetloc = piVar2[0x1fe]; + if ((targetloc < 0) && (piVar2[0xa94] == 0)) { + if (targetloc < -2) { + item = piVar2[0xa91]; + } + else { + if (piVar2[0x200] != 0) { + piVar2[0x1fe] = targetloc + -1; + return; + } + item = piVar2[0xa91]; + } + recallstring = (u8 *)get_ptr_item_text_call_line(item); + piVar2 = (int *)get_ptr_weapon_model_header_line(item); + if ((recallstring != NULL) && (piVar2 != NULL)) { + targetloc = getPlayerWeaponBufferForHand(param_1); + iVar3 = getSizeBufferWeaponInHand(param_1); + piVar4 = &pPlayer->unknown + param_1 * 8; + piVar4[0x204] = *piVar2; + piVar4[0x205] = piVar2[1]; + piVar4[0x206] = piVar2[2]; + piVar4[0x207] = piVar2[3]; + piVar4[0x208] = piVar2[4]; + piVar4[0x209] = piVar2[5]; + piVar4[0x20a] = piVar2[6]; + piVar4[0x20b] = piVar2[7]; + if (item == ITEM_SUIT_LF_HAND) { + proc_7F0CBAF4(&pPlayer->field_850 + param_1 * 4,targetloc + 0xbd70,iVar3 + -0xbd70); + load_object_fill_header + ((object_header *)(pPlayer->copy_of_body_obj_header + param_1 * 8), + recallstring,targetloc,0xbd70,(int)(&pPlayer->field_850 + param_1 * 4)); + } + else { + if ((item == ITEM_TRIGGER) || (item == ITEM_WATCHLASER)) { + proc_7F0CBAF4(&pPlayer->field_850 + param_1 * 4,targetloc + 0xafd0, + iVar3 + -0xafd0); + load_object_fill_header + ((object_header *)(pPlayer->copy_of_body_obj_header + param_1 * 8), + recallstring,targetloc,0xafd0, + (int)(&pPlayer->field_850 + param_1 * 4)); + } + else { + uVar1 = (&dword_80032464)[param_1]; + proc_7F0CBAF4(&pPlayer->field_850 + param_1 * 4,uVar1 + targetloc,iVar3 - uVar1) + ; + load_object_fill_header + ((object_header *)(pPlayer->copy_of_body_obj_header + param_1 * 8), + recallstring,targetloc,(&dword_80032464)[param_1], + (int)(&pPlayer->field_850 + param_1 * 4)); + } + } + } + pPlayer->hand_invisible[param_1] = 1; + pPlayer->hand_item[param_1] = item; + pPlayer->field_2A44[param_1] = -1; + } + return; +} + + + +longlong proc_7F05D334(longlong param_1,int param_2) + +{ + ulonglong uVar1; + ITEM_IDS weaponid; + int iVar2; + + if (0 < param_2) { + iVar2 = (int)param_1 + 1; + while( true ) { + while( true ) { + weaponid = iVar2 % 0x21; + param_1 = (longlong)(int)weaponid; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + uVar1 = check_if_item_available(weaponid); + if (uVar1 != 0) break; + iVar2 = weaponid + ITEM_FIST; + } + param_2 += -1; + if (param_2 < 1) break; + iVar2 = weaponid + ITEM_FIST; + } + } + if (param_2 < 0) { + param_1 = (longlong)((int)param_1 + -1); + while( true ) { + while( true ) { + if (param_1 < 0) { + iVar2 = -1 - (int)param_1; + param_1 = (longlong)(0x20 - iVar2 % 0x21); + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + } + weaponid = (ITEM_IDS)param_1; + uVar1 = check_if_item_available(weaponid); + if (uVar1 != 0) break; + param_1 = (longlong)(int)(weaponid + ~ITEM_UNARMED); + } + param_2 += 1; + if (-1 < param_2) break; + param_1 = (longlong)(int)(weaponid + ~ITEM_UNARMED); + } + } + return param_1; +} + + + +ITEM_IDS get_next_weapon_in_cycle_for_hand(HAND hand,s32 direction) + +{ + ITEM_IDS item; + int *piVar1; + + piVar1 = &pPlayer->unknown + hand * 0xea; + if (piVar1[0x225] == 5) { + if (((direction < 0) && (0 < piVar1[0x22e])) || ((0 < direction && (piVar1[0x22e] < 0)))) { + item = get_item_in_hand(hand); + } + else { + item = piVar1[0x22b]; + } + } + else { + if (piVar1[0x225] == 6) { + item = piVar1[0x22b]; + } + else { + item = get_item_in_hand(hand); + } + } + return (ITEM_IDS)item; +} + + + +void likely_change_weapon_in_hand(HAND hand,int weapon,s32 direction) + +{ + s32 sVar1; + ITEM_IDS IVar2; + int *piVar3; + + piVar3 = &pPlayer->unknown + hand * 0xea; + if ((piVar3[0x225] == 5) || (piVar3[0x225] == 6)) { + piVar3[0x22c] = piVar3[0x224]; + sVar1 = get_num_players(); + if (sVar1 == 1) { + (&pPlayer->unknown + hand * 0xea)[0x22c] = + (&pPlayer->unknown + hand * 0xea)[0x22c] + 0x11; + } + else { + (&pPlayer->unknown + hand * 0xea)[0x22c] = + (&pPlayer->unknown + hand * 0xea)[0x22c] + 0xd; + } + } + IVar2 = get_next_weapon_in_cycle_for_hand(hand,0); + if (IVar2 != weapon) { + piVar3 = &pPlayer->unknown + hand * 0xea; + if ((piVar3[0x225] != 5) && (piVar3[0x225] != 6)) { + piVar3[0x226] = 5; + piVar3 = &pPlayer->unknown + hand * 0xea; + } + piVar3[0x22b] = weapon; + (&pPlayer->right_weapon_animation_trigger)[hand * 0xea] = 1; + (&pPlayer->field_8B8)[hand * 0xea] = direction; + } + return; +} + + + +void proc_7F05D610(int param_1) + +{ + ITEM_IDS IVar2; + longlong lVar1; + + IVar2 = get_next_weapon_in_cycle_for_hand(param_1,0); + lVar1 = proc_7F05D334((longlong)(int)IVar2,1); + likely_change_weapon_in_hand(param_1,(int)lVar1,0); + return; +} + + + +void proc_7F05D650(int param_1) + +{ + ITEM_IDS IVar2; + longlong lVar1; + + IVar2 = get_next_weapon_in_cycle_for_hand(param_1,0); + lVar1 = proc_7F05D334((longlong)(int)IVar2,-1); + likely_change_weapon_in_hand(param_1,(int)lVar1,0); + return; +} + + + +void proc_7F05D690(void) + +{ + draw_item_in_hand_has_more_ammo(HAND_RIGHT,pPlayer->previous_right_weapon); + draw_item_in_hand_has_more_ammo(HAND_LEFT,pPlayer->left_weapon_previous); + return; +} + + + +void advance_through_inventory(void) + +{ + ITEM_IDS nextleft; + ITEM_IDS nextright; + + nextright = get_next_weapon_in_cycle_for_hand(HAND_RIGHT,1); + nextleft = get_next_weapon_in_cycle_for_hand(HAND_LEFT,1); + if (((int)nextright < 0x21) && ((int)nextleft < 0x21)) { + proc_7F08C86C((int *)&nextright,(int *)&nextleft,0); + } + else { + nextright = pPlayer->previous_right_weapon; + nextleft = pPlayer->left_weapon_previous; + } + likely_change_weapon_in_hand(HAND_RIGHT,nextright,1); + likely_change_weapon_in_hand(HAND_LEFT,nextleft,1); + return; +} + + + +void backstep_through_inventory(void) + +{ + ITEM_IDS IStack8; + ITEM_IDS IStack4; + + IStack4 = get_next_weapon_in_cycle_for_hand(HAND_RIGHT,-1); + IStack8 = get_next_weapon_in_cycle_for_hand(HAND_LEFT,-1); + if (((int)IStack4 < 0x21) && ((int)IStack8 < 0x21)) { + proc_7F08CB10((int *)&IStack4,(int *)&IStack8,0); + } + else { + IStack4 = pPlayer->previous_right_weapon; + IStack8 = pPlayer->left_weapon_previous; + } + likely_change_weapon_in_hand(HAND_RIGHT,IStack4,-1); + likely_change_weapon_in_hand(HAND_LEFT,IStack8,-1); + return; +} + + + +void autoadvance_on_deplete_all_ammo(void) + +{ + ulonglong uVar1; + ITEM_IDS nextleft; + ITEM_IDS nextright; + ITEM_IDS dupeleft; + ITEM_IDS duperight; + + nextright = get_next_weapon_in_cycle_for_hand(HAND_RIGHT,1); + duperight = nextright; + nextleft = get_next_weapon_in_cycle_for_hand(HAND_LEFT,1); + if (((int)nextright < 0x21) && ((int)nextleft < 0x21)) { + dupeleft = nextleft; + if ((nextright == ITEM_REMOTEMINE) && + (uVar1 = check_if_item_available(ITEM_TRIGGER), uVar1 != 0)) { + nextright = ITEM_TRIGGER; + nextleft = ITEM_UNARMED; + } + else { + proc_7F08C86C((int *)&nextright,(int *)&nextleft,1); + if (((int)nextright < (int)duperight) || + ((nextright == duperight && ((int)nextleft <= (int)dupeleft)))) { + nextright = duperight; + nextleft = dupeleft; + proc_7F08CB10((int *)&nextright,(int *)&nextleft,1); + } + } + } + else { + nextright = pPlayer->previous_right_weapon; + nextleft = pPlayer->left_weapon_previous; + } + likely_change_weapon_in_hand(HAND_RIGHT,nextright,1); + likely_change_weapon_in_hand(HAND_LEFT,nextleft,1); + return; +} + + + +void draw_item_in_hand_has_more_ammo(HAND hand,ITEM_IDS item) + +{ + (&pPlayer->right_weapon_current_animation)[hand * 0xea] = 5; + (&pPlayer->right_weapon_next_weapon)[hand * 0xea] = item; + (&pPlayer->right_weapon_animation_trigger)[hand * 0xea] = 0; + return; +} + + + +void attempt_reload_item_in_hand(int hand) + +{ + ITEM_IDS weapon; + AMMOTYPES AVar1; + + weapon = get_item_in_hand(hand); + AVar1 = get_ammo_type_for_weapon(weapon); + if ((AVar1 != 0) && ((&pPlayer->unknown + hand * 0xea)[0x226] == 0)) { + (&pPlayer->unknown + hand * 0xea)[0x226] = 9; + } + return; +} + + + +ITEM_IDS get_item_in_hand(int hand) + +{ + return (ITEM_IDS)(&pPlayer->right_weapon)[hand * 0xea]; +} + + + +void draw_item_in_hand(int param_1,int param_2) + +{ + (&pPlayer->right_weapon_current_animation)[param_1 * 0xea] = 0xe; + (&pPlayer->right_weapon_next_weapon)[param_1 * 0xea] = param_2; + return; +} + + + +ITEM_IDS return_ammo_in_hand(HAND hand) + +{ + ITEM_IDS IVar1; + + IVar1 = (&pPlayer->unknown + hand * 0xea)[0x21d]; + if ((int)IVar1 < 0) { + return (ITEM_IDS)(&pPlayer->unknown + hand * 0xea)[0x21c]; + } + return IVar1; +} + + + +void proc_7F05DA8C(int param_1,int param_2) + +{ + place_item_in_hand_swap_and_make_visible(param_1,param_2); + (&pPlayer->right_weapon_attack)[param_1 * 0xea] = param_2; + return; +} + + + +void proc_7F05DAE4(int param_1) + +{ + if (-1 < (&pPlayer->unknown + param_1 * 0xea)[0x21d]) { + place_item_in_hand_swap_and_make_visible + (param_1,(&pPlayer->unknown + param_1 * 0xea)[0x21c]); + (&pPlayer->right_weapon_attack)[param_1 * 0xea] = -1; + } + return; +} + + + +void remove_hands_item(HAND param_1,int param_2) + +{ + ITEM_IDS weapon; + AMMOTYPES AVar1; + s32 sVar2; + int iVar3; + + weapon = (&pPlayer->right_weapon)[param_1 * 0xea]; + AVar1 = get_ammo_type_for_weapon(weapon); + if ((&pPlayer->unknown + param_1 * 0xea)[0x21d] < 0) { + place_item_in_hand_swap_and_make_visible(param_1,param_2); + iVar3 = (&pPlayer->right_weapon_ammo_in_magazine)[param_1 * 0xea]; + } + else { + iVar3 = (&pPlayer->unknown + param_1 * 0xea)[0x227]; + } + if (0 < iVar3) { + (&pPlayer->unknown + AVar1)[0x44c] = (&pPlayer->unknown + AVar1)[0x44c] + iVar3; + } + if ((int)weapon < 0x21) { + (&pPlayer->previous_right_weapon)[param_1 * 0xea] = weapon; + } + sVar2 = get_num_players(); + if (1 < sVar2) { + proc_7F09B368(param_1); + } + proc_7F05FB00(param_1); + (&pPlayer->right_weapon)[param_1 * 0xea] = param_2; + (&pPlayer->right_weapon_ammo_in_magazine)[param_1 * 0xea] = 0; + (&pPlayer->field_A4C)[param_1 * 0xea] = 0; + (&pPlayer->field_A50)[param_1 * 0xea] = 0; + proc_7F08D8E0(); + return; +} + + + +undefined get_hands_firing_status(int hand) + +{ + return *(undefined *)(&pPlayer->right_weapon_firing_status + hand * 0xea); +} + + + +f32 proc_7F05DCB8(int param_1) + +{ + return (f32)(&pPlayer->field_A34)[param_1 * 0xea]; +} + + + +f32 proc_7F05DCE8(longlong param_1) + +{ + ITEM_IDS item; + weapon_stats *wstats; + f32 fVar1; + + if (param_1 == 0) { + item = return_ammo_in_hand(HAND_RIGHT); + wstats = get_ptr_item_statistics(item); + fVar1 = (wstats->position).x; + } + else { + item = return_ammo_in_hand(HAND_LEFT); + wstats = get_ptr_item_statistics(item); + fVar1 = (f32)-(float)(wstats->position).x; + } + return fVar1; +} + + + +weapon_stats * proc_7F05DD38(void) + +{ + ITEM_IDS item; + weapon_stats *pwVar1; + + pwVar1 = (weapon_stats *)return_ammo_in_hand(HAND_RIGHT); + if ((pwVar1 != (weapon_stats *)&UNK_00000011) && + (pwVar1 = (weapon_stats *)return_ammo_in_hand(HAND_RIGHT), pwVar1 != (weapon_stats *)0x28)) { + item = return_ammo_in_hand(HAND_RIGHT); + pwVar1 = get_ptr_item_statistics(item); + } + return pwVar1; +} + + + +void camera_sniper_zoom(float zoom) + +{ + ITEM_IDS IVar1; + + IVar1 = return_ammo_in_hand(HAND_RIGHT); + if (IVar1 == ITEM_SNIPERRIFLE) { + pPlayer->sniper_zoom = pPlayer->sniper_zoom * (zoom * 0.10000000 + 1.00000000); + if (60.00000000 < pPlayer->sniper_zoom) { + pPlayer->sniper_zoom = 60.00000000; + } + } + else { + IVar1 = return_ammo_in_hand(HAND_RIGHT); + if ((IVar1 == ITEM_CAMERA) && + (pPlayer->camera_zoom = pPlayer->camera_zoom * (zoom * 0.10000000 + 1.00000000), + 60.00000000 < pPlayer->camera_zoom)) { + pPlayer->camera_zoom = 60.00000000; + } + } + return; +} + + + +void proc_7F05DE94(float param_1) + +{ + ITEM_IDS IVar1; + + IVar1 = return_ammo_in_hand(HAND_RIGHT); + if (IVar1 == ITEM_SNIPERRIFLE) { + pPlayer->sniper_zoom = pPlayer->sniper_zoom / (param_1 * flt_80053C2C + 1.00000000); + if (pPlayer->sniper_zoom < 7.00000000) { + pPlayer->sniper_zoom = 7.00000000; + } + } + else { + IVar1 = return_ammo_in_hand(HAND_RIGHT); + if ((IVar1 == ITEM_CAMERA) && + (pPlayer->camera_zoom = pPlayer->camera_zoom / (param_1 * flt_80053C30 + 1.00000000), + pPlayer->camera_zoom < 7.00000000)) { + pPlayer->camera_zoom = 7.00000000; + } + } + return; +} + + + +weapon_stats * proc_7F05DF84(int param_1) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(param_1); + return pwVar1; +} + + + +weapon_stats * proc_7F05DFA8(int param_1) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(param_1); + return pwVar1; +} + + + +undefined proc_7F05DFCC(int param_1) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(param_1); + return *(undefined *)&pwVar1->time_between_shots; +} + + + +ulonglong proc_7F05DFF0(int param_1) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(param_1); + return (ulonglong)(byte)pwVar1->field_25; +} + + + +ulonglong proc_7F05E014(int param_1) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(param_1); + return (ulonglong)(ushort)pwVar1->sound; +} + + + +ulonglong proc_7F05E038(int param_1) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(param_1); + return (ulonglong)(byte)pwVar1->objects_shoot_through; +} + + + +BOOL check_if_have_ammo_for_item(int item) + +{ + int iVar1; + BOOL haveammo; + AMMOTYPES AVar2; + + iVar1 = check_special_attributes(item,0x40000); + if (iVar1 == 0) { + haveammo = FALSE; + } + else { + AVar2 = get_ammo_type_for_weapon(item); + if ((AVar2 == 0) || (iVar1 = get_ammo_count_for_weapon(item), 0 < iVar1)) { + haveammo = TRUE; + } + else { + haveammo = FALSE; + } + } + return haveammo; +} + + + +uint check_special_attributes(int item,uint mask) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(item); + return (uint)((pwVar1->bitflags & mask) != 0); +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F05E0E4(void) + +{ + float fVar1; + int iVar2; + u32 uVar3; + float *pfVar4; + float in_a2_lo; + float in_a3_lo; + f32 fVar5; + float fVar6; + float fVar7; + float in_f12; + float in_f14; + undefined auStackX0 [8]; + float fStackX8; + float fStackX12; + float fStack8; + float fStack4; + + fVar7 = in_a2_lo; + if (in_a2_lo < 0.00000000) { + fVar7 = -in_a2_lo; + } + fStackX8 = in_a2_lo; + fStackX12 = in_a3_lo; + if (flt_80053C34 < in_f14) { + pPlayer->field_FC0 = 1.00000000; + } + else { + if (flt_80053C3C < in_f14) { + fVar6 = cosf(((in_f14 - flt_80053C3C) * flt_80053C40) / flt_80053C44); + pPlayer->field_FC0 = flt_80053C48 * (1.00000000 - fVar6) + flt_80053C4C; + } + else { + pPlayer->field_FC0 = flt_80053C3C; + } + } + fVar5 = get_BONDdata_bondfadefracnew(); + fVar6 = pPlayer->field_FC0; + if (fVar6 < (float)fVar5 * flt_80053C54) { + fVar5 = get_BONDdata_bondfadefracnew(); + pPlayer->field_FC0 = (float)fVar5 * flt_80053C58; + fVar6 = pPlayer->field_FC0; + } + if (fVar6 < fVar7 * 0.50000000) { + pPlayer->field_FC0 = fVar7 * 0.50000000; + } + fVar6 = flt_80053C5C; + iVar2 = 0; + if (0 < clock_timer) { + do { + iVar2 += 1; + pPlayer->field_1080 = pPlayer->field_1080 * fVar6 + pPlayer->field_FC0; + } while (iVar2 < clock_timer); + } + fVar1 = flt_80053C64; + fVar6 = flt_80053C60; + iVar2 = 0; + pPlayer->field_FC0 = pPlayer->field_1080 * flt_80053C64; + fVar7 = flt_80053C68 * fVar7; + if (fVar7 <= in_f12) { + fVar7 = in_f12; + } + if (0 < clock_timer) { + do { + iVar2 += 1; + pPlayer->field_107C = pPlayer->field_107C * fVar6 + fVar7; + } while (iVar2 < clock_timer); + } + fVar7 = pPlayer->field_107C * fVar1 * global_timer_delta; + fStack8 = (float)pPlayer->field_A0C + fVar7; + while (1.00000000 <= fStack8) { + unknown_takes_playerhand(0); + fStack8 = fStack8 - 1.00000000; + pPlayer->field_1078 = pPlayer->field_1078 + 1; + } + pPlayer->field_1074 = pPlayer->field_1074 + global_timer_delta; + if (60.00000000 < pPlayer->field_1074) { + pPlayer->field_1074 = 0.00000000; + uVar3 = get_random_value(); + fVar6 = (float)uVar3; + if ((int)uVar3 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + pPlayer->field_1070 = ((fVar6 * 0.00000000 - 0.50000000) * flt_80053C6C) / 60.00000000; + fVar6 = pPlayer->field_1070; + } + else { + fVar6 = pPlayer->field_1070; + } + if (0.00000000 < fVar6 + fVar7) { + pPlayer->field_106C = pPlayer->field_106C + fVar6; + fStack4 = pPlayer->field_106C; + } + else { + fStack4 = pPlayer->field_106C; + } + if (0.50000000 < fStack4) { + pPlayer->field_106C = 0.50000000; + fStack4 = pPlayer->field_106C; + } + else { + if (fStack4 < -0.50000000) { + pPlayer->field_106C = -0.50000000; + fStack4 = pPlayer->field_106C; + } + else { + if (flt_80053C70 <= fStack4) { + iVar2 = pPlayer->field_1078; + goto LAB_7f05e518; + } + if (fStack4 <= flt_80053C74) { + iVar2 = pPlayer->field_1078; + goto LAB_7f05e518; + } + if (0.00000000 < fStack4) { + pPlayer->field_106C = flt_80053C74; + fStack4 = pPlayer->field_106C; + } + else { + pPlayer->field_106C = flt_80053C70; + fStack4 = pPlayer->field_106C; + } + } + } + iVar2 = pPlayer->field_1078; +LAB_7f05e518: + fStack4 = fStack8 + (float)iVar2 + fStack4; + while (1.00000000 <= fStack4) { + unknown_takes_playerhand(1); + fStack4 = fStack4 - 1.00000000; + pPlayer->field_1078 = pPlayer->field_1078 + -1; + } + pfVar4 = &fStack8; + iVar2 = 0; + do { + fVar7 = *pfVar4; + pfVar4 = pfVar4 + 1; + *(float *)((int)&pPlayer->field_A0C + iVar2) = fVar7; + *(float *)((int)&pPlayer->field_A1C + iVar2) = fStackX12 * -1.75000000; + *(float *)((int)&pPlayer->field_A20 + iVar2) = fStackX8 * -2.00000000; + iVar2 = iVar2 + 0x3a8; + } while (pfVar4 != (float *)register0x000000ec); + return; +} + + + +void proc_7F05E5F0(float param_1) + +{ + float fVar1; + + fVar1 = cosf(param_1); + *(float *)&pPlayer->field_A30 = (1.00000000 - fVar1) * 5.00000000; + fVar1 = cosf(param_1); + *(float *)&pPlayer->field_DD8 = (1.00000000 - fVar1) * 5.00000000; + return; +} + + + +// WARNING: Instruction at (ram,0x7f05e690) overlaps instruction at (ram,0x7f05e68c) +// + +ITEM_IDS get_value_if_watch_is_on_hand_or_not(int hand) + +{ + ITEM_IDS item; + + item = get_item_in_hand(hand); + if (item != ITEM_TRIGGER) { + item = get_item_in_hand(hand); + } + return item; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +int * proc_7F05E6B4(void) + +{ + int *piVar1; + int in_a0_lo; + longlong in_a1; + float in_f0; + float fVar2; + + if (in_a1 == 0) { + piVar1 = &pPlayer->unknown + in_a0_lo * 0xea; + fVar2 = (float)piVar1[0x2a1]; + if (0.00000000 < fVar2) { + *(float *)(piVar1 + 0x2a1) = fVar2 - flt_80053C84 * global_timer_delta; + piVar1 = &pPlayer->unknown + in_a0_lo * 0xea; + fVar2 = (float)piVar1[0x2a1]; + } + if (fVar2 < 0.00000000) { + piVar1[0x2a1] = 0; + } + } + else { + get_value_if_watch_is_on_hand_or_not(in_a0_lo); + fVar2 = (float)(&pPlayer->unknown + in_a0_lo * 0xea)[0x2a1]; + if (fVar2 < in_f0) { + *(float *)(&pPlayer->unknown + in_a0_lo * 0xea + 0x2a1) = + fVar2 + flt_80053C80 * global_timer_delta; + } + piVar1 = (int *)get_value_if_watch_is_on_hand_or_not(in_a0_lo); + if (in_f0 < (float)(&pPlayer->field_A84)[in_a0_lo * 0xea]) { + piVar1 = (int *)get_value_if_watch_is_on_hand_or_not(in_a0_lo); + *(float *)(&pPlayer->field_A84 + in_a0_lo * 0xea) = in_f0; + } + } + return piVar1; +} + + + +void proc_7F05E808(int param_1) + +{ + (&pPlayer->field_A8C)[param_1 * 0xea] = 1; + return; +} + + + +void proc_7F05E83C(int param_1) + +{ + ITEM_IDS item; + weapon_stats *pwVar1; + int *piVar2; + float fVar3; + float fVar4; + + item = return_ammo_in_hand(param_1); + pwVar1 = get_ptr_item_statistics(item); + piVar2 = &pPlayer->unknown + param_1 * 0xea; + fVar4 = pwVar1->bolt_recoil_back; + if (piVar2[0x2a3] == 0) { + if (0 < piVar2[0x227]) { + fVar3 = (float)piVar2[0x2a2]; + if (0.00000000 < fVar3) { + *(float *)(piVar2 + 0x2a2) = fVar3 - fVar4 * flt_80053C88 * global_timer_delta; + piVar2 = &pPlayer->unknown + param_1 * 0xea; + fVar3 = (float)piVar2[0x2a2]; + } + if (fVar3 < 0.00000000) { + piVar2[0x2a2] = 0; + } + } + } + else { + fVar3 = (float)piVar2[0x2a2]; + if (fVar3 < fVar4) { + *(float *)(piVar2 + 0x2a2) = fVar3 + fVar4 * 0.25000000 * global_timer_delta; + piVar2 = &pPlayer->unknown + param_1 * 0xea; + fVar3 = (float)piVar2[0x2a2]; + } + if (fVar4 <= fVar3) { + *(float *)(piVar2 + 0x2a2) = fVar4; + (&pPlayer->field_A8C)[param_1 * 0xea] = 0; + } + } + return; +} + + + +void proc_7F05E978(int param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + int iVar2; + ushort *partdesc; + int iVar3; + short sVar4; + + iVar2 = *(int *)(param_1 + 8); + iVar3 = *(int *)(iVar2 + 8); + if (*(ushort **)(iVar3 + 0x20) == NULL) { + partdesc = *(ushort **)(iVar3 + 0x24); + } + else { + puVar1 = (undefined4 *) + extract_id_from_object_structure_microcode(param_1,*(ushort **)(iVar3 + 0x20)); + *puVar1 = param_2; + iVar2 = *(int *)(param_1 + 8); + iVar3 = *(int *)(iVar2 + 8); + partdesc = *(ushort **)(iVar3 + 0x24); + } + if (partdesc == NULL) { + partdesc = *(ushort **)(iVar3 + 0x28); + } + else { + puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar1 = param_2; + iVar2 = *(int *)(param_1 + 8); + iVar3 = *(int *)(iVar2 + 8); + partdesc = *(ushort **)(iVar3 + 0x28); + } + if (partdesc == NULL) { + partdesc = *(ushort **)(iVar3 + 0x2c); + } + else { + puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar1 = param_2; + iVar2 = *(int *)(param_1 + 8); + iVar3 = *(int *)(iVar2 + 8); + partdesc = *(ushort **)(iVar3 + 0x2c); + } + if (partdesc == NULL) { + partdesc = *(ushort **)(iVar3 + 0x30); + } + else { + puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar1 = param_2; + iVar2 = *(int *)(param_1 + 8); + iVar3 = *(int *)(iVar2 + 8); + partdesc = *(ushort **)(iVar3 + 0x30); + } + if (partdesc == NULL) { + partdesc = *(ushort **)(iVar3 + 0x34); + } + else { + puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar1 = param_2; + iVar2 = *(int *)(param_1 + 8); + partdesc = *(ushort **)(*(int *)(iVar2 + 8) + 0x34); + } + if (partdesc == NULL) { + sVar4 = *(short *)(iVar2 + 0xc); + } + else { + puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar1 = param_2; + iVar2 = *(int *)(param_1 + 8); + sVar4 = *(short *)(iVar2 + 0xc); + } + if ((0x23 < sVar4) && (partdesc = *(ushort **)(*(int *)(iVar2 + 8) + 0x8c), partdesc != NULL)) { + puVar1 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar1 = param_2; + } + return; +} + + + +void proc_7F05EA94(int param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 *puVar2; + ushort *partdesc; + + if (0xf < *(short *)(*(int *)(param_1 + 8) + 0xc)) { + iVar1 = *(int *)(*(int *)(param_1 + 8) + 8); + partdesc = *(ushort **)(iVar1 + 0x38); + if (partdesc == NULL) { + partdesc = *(ushort **)(iVar1 + 0x3c); + } + else { + puVar2 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar2 = param_2; + partdesc = *(ushort **)(*(int *)(*(int *)(param_1 + 8) + 8) + 0x3c); + } + if (partdesc != NULL) { + puVar2 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar2 = param_2; + } + } + return; +} + + + +void proc_7F05EB0C(int param_1,undefined4 *param_2,undefined4 param_3,float *param_4, + undefined4 *param_5,undefined4 *param_6,undefined4 param_7) + +{ + object_standard *poVar1; + undefined8 extraout_a0; + + poVar1 = *(object_standard **)(param_1 + 0x10); + if (poVar1 != NULL) { + set_current_objposdata_plus_0x28(poVar1); + set_stateflag_0x04_for_posdata((int)poVar1); + matrix_multiply_A1_by_F12(*(float *)(*(int *)(param_1 + 0x14) + 0x14),extraout_a0,param_4); + proc_7F040754(param_1,param_2,param_4,param_3); + proc_7F056CA0(param_1); + proc_7F040484(param_1); + proc_7F03FDA8((int)poVar1); + if ((*(uint *)(param_1 + 100) & 0x80) != 0) { + **(uint **)(param_1 + 0x6c) = **(uint **)(param_1 + 0x6c) | 0x41; + *(undefined4 *)(*(int *)(param_1 + 0x6c) + 0x88) = param_7; + proc_7F03FE14((int)poVar1); + proc_7F058020((float (*) [4] [4])param_6, + (float (*) [4])(*(int *)(param_1 + 0x6c) + 0x20)); + *(undefined4 *)(*(int *)(param_1 + 0x6c) + 4) = *param_5; + *(undefined4 *)(*(int *)(param_1 + 0x6c) + 8) = param_5[1]; + *(undefined4 *)(*(int *)(param_1 + 0x6c) + 0xc) = param_5[2]; + *(int *)(*(int *)(param_1 + 0x6c) + 0xe4) = param_1; + *(undefined4 *)(*(int *)(param_1 + 0x6c) + 0xe8) = dword_80048380; + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F05EC1C(void) + +{ + int iVar2; + int iVar3; + ulonglong uVar1; + float *pfVar4; + int in_a0_lo; + float *in_a1_lo; + float *in_a2_lo; + undefined4 *in_a3_lo; + f32 fVar5; + float fVar6; + f32 extraout_f12; + undefined4 *in_stack_00000010; + int iStack136; + uint auStack132 [21]; + byte bStack48; + undefined uStack47; + int iStack40; + float fStack36; + float fStack32; + u32 uStack20; + float fStack16; + float fStack12; + float fStack8; + + if (*(int *)(in_a0_lo + 0x10) != 0) { + iVar2 = get_curplayer_positiondata(); + fVar5 = proc_7F089778((int)pPlayer); + iStack40 = 0; + fVar6 = *(float *)(iVar2 + 0xc); + fStack36 = in_a1_lo[1]; + fStack32 = fVar6; + if (fVar6 <= fStack36) { + fStack32 = fStack36; + fStack36 = fVar6; + } + fStack36 = fStack36 - (float)fVar5; + fStack32 = fStack32 - (float)fVar5; + uStack20 = *(u32 *)(iVar2 + 0x14); + proc_7F08A03C(iVar2,0); + iVar3 = proc_7F0B0E24(&uStack20,extraout_f12,(f32)fStack32,*(f32 *)(iVar2 + 8)); + if (iVar3 == 0) { + uStack20 = *(u32 *)(iVar2 + 0x14); + fStack16 = *(float *)(iVar2 + 8); + fStack12 = *(float *)(iVar2 + 0xc); + fStack8 = *(float *)(iVar2 + 0x10); + iStack40 = 1; + } + else { + fStack16 = *in_a1_lo; + fStack12 = in_a1_lo[1]; + fStack8 = in_a1_lo[2]; + } + proc_7F08A03C(iVar2,1); + proc_7F05EB0C(in_a0_lo,&fStack16,uStack20,in_a2_lo,in_a3_lo,in_stack_00000010,iVar2); + if ((*(uint *)(in_a0_lo + 100) & 0x80) != 0) { + if (iStack40 != 0) { + **(uint **)(in_a0_lo + 0x6c) = **(uint **)(in_a0_lo + 0x6c) | 0x100; + *(float *)(*(int *)(in_a0_lo + 0x6c) + 0xd4) = *in_a1_lo; + *(float *)(*(int *)(in_a0_lo + 0x6c) + 0xd8) = in_a1_lo[1]; + *(float *)(*(int *)(in_a0_lo + 0x6c) + 0xdc) = in_a1_lo[2]; + } + uVar1 = get_cur_players_room(); + bStack48 = (byte)uVar1; + uStack47 = 0xff; + pfVar4 = (float *)get_BONDdata_position3(); + proc_7F0B4AB4(pfVar4,&fStack16,&bStack48,*(int *)(in_a0_lo + 0x6c) + 0xcc,auStack132, + &iStack136,0x14); + } + } + return; +} + + + +void proc_7F05EE24(int param_1) + +{ + uint uVar1; + uint *puVar2; + int iVar4; + ITEM_IDS iteminstance; + float *pfVar5; + int *piVar6; + undefined4 *puVar7; + u32 uVar8; + longlong lVar3; + float afStack256 [12]; + undefined4 uStack208; + undefined4 uStack204; + undefined4 uStack200; + float *pfStack192; + float fStack184; + float fStack180; + float fStack176; + float afStack160 [16]; + int iStack96; + int iStack92; + int iStack88; + float fStack80; + float fStack76; + float fStack72; + float afStack68 [17]; + + iVar4 = get_curplayer_positiondata(); + pfStack192 = (float *)proc_7F08A02C(); + iteminstance = get_item_in_hand(param_1); + proc_7F057C14(&fStack80,afStack68); + proc_7F0681CC(); + pfVar5 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar5,&fStack184); + fStack80 = fStack184 * flt_80053C8C; + fStack72 = fStack176 * flt_80053C8C; + fStack76 = fStack180 * flt_80053C8C + 5.00000000; + if (0 < clock_timer) { + fStack80 = fStack80 + (*(float *)(iVar4 + 8) - *pfStack192) / global_timer_delta; + fStack76 = fStack76 + (*(float *)(iVar4 + 0xc) - pfStack192[1]) / global_timer_delta; + fStack72 = fStack72 + (*(float *)(iVar4 + 0x10) - pfStack192[2]) / global_timer_delta; + } + piVar6 = &pPlayer->unknown + param_1 * 0xea; + iStack96 = piVar6[0x2c2]; + iStack92 = piVar6[0x2c3]; + iStack88 = piVar6[0x2c4]; + guMtxIdentF_unrolled((float (*) [4] [4])afStack160); + proc_7F058020((float (*) [4] [4])(&pPlayer->field_AD8 + param_1 * 0xea), + (float (*) [4])afStack256); + uStack208 = 0; + uStack204 = 0; + uStack200 = 0; + proc_7F058068(afStack256,afStack160); + puVar7 = create_new_item_instance_of_model(0xc4,iteminstance); + if (puVar7 != NULL) { + *(short *)((int)puVar7 + 0x82) = 0xf0 - (short)pPlayer->field_105C; + if (*(short *)((int)puVar7 + 0x82) < 0) { + *(undefined2 *)((int)puVar7 + 0x82) = 0; + uVar1 = puVar7[0x19]; + } + else { + uVar1 = puVar7[0x19]; + } + puVar7[0x19] = uVar1 & 0xfff9ffff; + uVar8 = get_cur_playernum(); + puVar7[0x19] = puVar7[0x19] | uVar8 << 0x11; + proc_7F05EC1C(); + if ((puVar7[0x19] & 0x80) != 0) { + puVar2 = (uint *)puVar7[0x1b]; + lVar3 = (longlong)(int)puVar2; + *puVar2 = *puVar2 | 2; + *(float *)(puVar7[0x1b] + 0x8c) = flt_80053C90; + *(float *)(puVar7[0x1b] + 0x94) = flt_80053C94; + *(undefined4 *)(puVar7[0x1b] + 0xbc) = 0x3c; + play_sfx_a1(ptr_sfx_buf,4,NULL); + if (lVar3 != 0) { + sub_GAME_7F053A10((int)lVar3,(float *)(puVar7 + 0x16)); + } + } + } + return; +} + + + +void proc_7F05F09C(int param_1) + +{ + int iVar1; + float *pfVar2; + int *piVar3; + u32 uVar4; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + int iVar5; + undefined4 unaff_retaddr; + float a; + float x; + float fVar6; + undefined8 in_stack_fffffee4; + undefined8 in_stack_fffffef0; + undefined4 in_stack_fffffefc; + float *pfVar7; + undefined in_stack_ffffff08 [24]; + undefined4 uStack200; + undefined4 uStack196; + undefined4 uStack192; + float fStack184; + float fStack180; + float fStack176; + float afStack160 [6]; + undefined4 uStack136; + int iStack96; + int iStack92; + int iStack88; + float fStack80; + float fStack76; + float fStack72; + float afStack68 [16]; + undefined4 *puStack4; + + iVar1 = get_curplayer_positiondata(); + pfVar7 = (float *)proc_7F08A02C(); + proc_7F057C14(&fStack80,afStack68); + proc_7F0681CC(); + pfVar2 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar2,&fStack184); + fStack80 = fStack184 * 25.00000000; + fStack72 = fStack176 * 25.00000000; + fStack76 = fStack180 * 25.00000000 + 5.00000000; + if (0 < clock_timer) { + fStack80 = fStack80 + (*(float *)(iVar1 + 8) - *pfVar7) / global_timer_delta; + fStack76 = fStack76 + (*(float *)(iVar1 + 0xc) - pfVar7[1]) / global_timer_delta; + fStack72 = fStack72 + (*(float *)(iVar1 + 0x10) - pfVar7[2]) / global_timer_delta; + } + iVar5 = param_1 * 0x3a8; + piVar3 = &pPlayer->unknown + param_1 * 0xea; + iStack96 = piVar3[0x2c2]; + iStack92 = piVar3[0x2c3]; + iStack88 = piVar3[0x2c4]; + proc_7F058688(flt_80053C98,extraout_a0,afStack160); + proc_7F058570(flt_80053C9C,extraout_a0_00,(undefined4 *)&stack0xffffff08); + proc_7F058068((float *)&stack0xffffff08,afStack160); + proc_7F058020((float (*) [4] [4])((int)&pPlayer->field_AD8 + iVar5), + (float (*) [4])&stack0xffffff08); + uStack200 = 0; + uStack196 = 0; + uStack192 = 0; + proc_7F058068((float *)&stack0xffffff08,afStack160); + uVar4 = get_random_value(); + fVar6 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + guRotateF((float [4] [4]) + CONCAT4024(CONCAT364(CONCAT324(CONCAT284(CONCAT244(CONCAT168(CONCAT124(CONCAT48( + uStack136,in_stack_fffffee4),unaff_retaddr), + in_stack_fffffef0),iVar5),in_stack_fffffefc), + pfVar7),iVar1),in_stack_ffffff08),a,x,(float)afStack68, + 360.00000000 / (fVar6 * 0.00000000 + flt_80053CA0)); + puStack4 = create_new_item_instance_of_model(0xba,3); + if (puStack4 != NULL) { + puStack4[0x19] = puStack4[0x19] & 0xfff9ffff; + uVar4 = get_cur_playernum(); + puStack4[0x19] = puStack4[0x19] | uVar4 << 0x11; + proc_7F05EC1C(); + if ((puStack4[0x19] & 0x80) != 0) { + *(uint *)puStack4[0x1b] = *(uint *)puStack4[0x1b] | 2; + *(float *)(puStack4[0x1b] + 0x8c) = flt_80053CA4; + *(undefined4 *)(puStack4[0x1b] + 0xbc) = 0x3c; + puStack4[0x19] = puStack4[0x19] | 0x20; + } + proc_7F043650((int)puStack4); + } + return; +} + + + +void generate_player_thrown_object(int param_1) + +{ + uint *puVar1; + ITEM_IDS iteminstance; + float *pfVar3; + int *piVar4; + undefined4 *puVar5; + s32 sVar6; + u32 uVar7; + longlong lVar2; + int model; + float afStack256 [12]; + undefined4 uStack208; + undefined4 uStack204; + undefined4 uStack200; + float *pfStack192; + int iStack188; + float fStack184; + float fStack180; + float fStack176; + float afStack160 [16]; + int iStack96; + int iStack92; + int iStack88; + float fStack84; + float fStack80; + float fStack76; + float fStack72; + float afStack68 [17]; + + puVar5 = NULL; + fStack84 = flt_80053CA8; + iStack188 = get_curplayer_positiondata(); + pfStack192 = (float *)proc_7F08A02C(); + iteminstance = get_item_in_hand(param_1); + if (iteminstance == ITEM_GOLDENEYEKEY) { + fStack84 = flt_80053CAC; + } + proc_7F057C14(&fStack80,afStack68); + proc_7F0681CC(); + pfVar3 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar3,&fStack184); + fStack80 = fStack184 * fStack84; + fStack72 = fStack176 * fStack84; + fStack76 = fStack180 * fStack84 + 5.00000000; + if (0 < clock_timer) { + fStack80 = fStack80 + (*(float *)(iStack188 + 8) - *pfStack192) / global_timer_delta; + fStack76 = fStack76 + (*(float *)(iStack188 + 0xc) - pfStack192[1]) / global_timer_delta; + fStack72 = fStack72 + (*(float *)(iStack188 + 0x10) - pfStack192[2]) / global_timer_delta; + } + piVar4 = &pPlayer->unknown + param_1 * 0xea; + iStack96 = piVar4[0x2c2]; + iStack92 = piVar4[0x2c3]; + iStack88 = piVar4[0x2c4]; + guMtxIdentF_unrolled((float (*) [4] [4])afStack160); + proc_7F058020((float (*) [4] [4])(&pPlayer->field_AD8 + param_1 * 0xea), + (float (*) [4])afStack256); + uStack208 = 0; + uStack204 = 0; + uStack200 = 0; + proc_7F058068(afStack256,afStack160); + if (iteminstance == ITEM_GOLDENEYEKEY) { + puVar5 = (undefined4 *)proc_7F08C570('='); + proc_7F08C61C(0x3d); + if (puVar5 != NULL) { + proc_7F04C044(puVar5[4]); + } + proc_7F05D690(); + } + if (puVar5 == NULL) { + model = 199; + if (true) { + switch(iteminstance) { + case ITEM_TIMEDMINE: + model = 0xc9; + break; + case ITEM_PROXIMITYMINE: + model = 200; + break; + case ITEM_BOMBCASE: + model = 0xe2; + break; + case ITEM_PLASTIQUE: + model = 0x111; + break; + case ITEM_BUG: + model = 0xf5; + break; + case ITEM_MICROCAMERA: + model = 0xf6; + break; + case ITEM_GOLDENEYEKEY: + model = 0xf8; + } + } + puVar5 = create_new_item_instance_of_model(model,iteminstance); + } + if (puVar5 == NULL) { + return; + } + if (false) { +switchD_7f05f5c8_caseD_1e: + *(undefined2 *)((int)puVar5 + 0x82) = 0xf0; + } + else { + switch(iteminstance) { + case ITEM_TIMEDMINE: + sVar6 = get_num_players(); + if (sVar6 == 1) { + *(undefined2 *)((int)puVar5 + 0x82) = 300; + } + else { + *(undefined2 *)((int)puVar5 + 0x82) = 0xb4; + } + break; + case ITEM_PROXIMITYMINE: + sVar6 = get_num_players(); + if (sVar6 == 1) { + *(undefined2 *)((int)puVar5 + 0x82) = 300; + } + else { + *(undefined2 *)((int)puVar5 + 0x82) = 0xb4; + } + break; + case ITEM_REMOTEMINE: + sVar6 = get_num_players(); + if (sVar6 == 1) { + *(undefined2 *)((int)puVar5 + 0x82) = 300; + } + else { + *(undefined2 *)((int)puVar5 + 0x82) = 0xb4; + } + break; + default: + goto switchD_7f05f5c8_caseD_1e; + case ITEM_BOMBCASE: + sVar6 = get_num_players(); + if (sVar6 == 1) { + *(undefined2 *)((int)puVar5 + 0x82) = 300; + } + else { + *(undefined2 *)((int)puVar5 + 0x82) = 0xb4; + } + break; + case ITEM_PLASTIQUE: + case ITEM_BUG: + case ITEM_MICROCAMERA: + case ITEM_GOLDENEYEKEY: + *(undefined2 *)((int)puVar5 + 0x82) = 1; + } + } + puVar5[0x19] = puVar5[0x19] & 0xfff9ffff; + uVar7 = get_cur_playernum(); + puVar5[0x19] = puVar5[0x19] | uVar7 << 0x11; + proc_7F05EC1C(); + if ((puVar5[0x19] & 0x80) != 0) { + puVar1 = (uint *)puVar5[0x1b]; + lVar2 = (longlong)(int)puVar1; + *puVar1 = *puVar1 | 2; + *(float *)(puVar5[0x1b] + 0x8c) = flt_80053DC8; + *(undefined4 *)(puVar5[0x1b] + 0xbc) = 0x3c; + play_sfx_a1(ptr_sfx_buf,4,NULL); + if (lVar2 != 0) { + sub_GAME_7F053A10((int)lVar2,(float *)(puVar5 + 0x16)); + } + } + return; +} + + + +void proc_7F05F73C(int param_1) + +{ + int iVar1; + float *pfVar2; + float *pfVar3; + u32 uVar4; + float local_b0; + float local_ac; + float local_a8; + float afStack152 [12]; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + float local_54; + float local_50; + float local_4c; + float afStack72 [16]; + int *local_8; + undefined4 *local_4; + + local_8 = &pPlayer->right_weapon + param_1 * 0xea; + iVar1 = get_curplayer_positiondata(); + pfVar2 = (float *)proc_7F08A02C(); + guMtxIdentF_unrolled((float (*) [4] [4])afStack72); + proc_7F0681CC(); + pfVar3 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar3,&local_b0); + local_54 = local_b0 * flt_80053DCC; + local_50 = local_ac * flt_80053DCC; + local_4c = local_a8 * flt_80053DCC; + if (0 < clock_timer) { + local_54 = local_54 + (*(float *)(iVar1 + 8) - *pfVar2) / global_timer_delta; + local_50 = local_50 + (*(float *)(iVar1 + 0xc) - pfVar2[1]) / global_timer_delta; + local_4c = local_4c + (*(float *)(iVar1 + 0x10) - pfVar2[2]) / global_timer_delta; + } + proc_7F058020((float (*) [4] [4])(&pPlayer->field_AD8 + param_1 * 0xea), + (float (*) [4])afStack152); + local_68 = 0; + local_64 = 0; + local_60 = 0; + local_4 = create_new_item_instance_of_model(0xcb,0x57); + if (local_4 != NULL) { + *(undefined2 *)((int)local_4 + 0x82) = 0x4b0; + local_4[0x19] = local_4[0x19] & 0xfff9ffff; + uVar4 = get_cur_playernum(); + local_4[0x19] = local_4[0x19] | uVar4 << 0x11; + proc_7F05EC1C(); + if ((local_4[0x19] & 0x80) != 0) { + *(float *)(local_4[0x1b] + 0x8c) = flt_80053DD0; + *(float *)(local_4[0x1b] + 0x94) = flt_80053DD4; + *(undefined4 *)(local_4[0x1b] + 0xbc) = 0x3c; + } + } + return; +} + + + +void proc_7F05F928(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + float *pfVar6; + undefined8 extraout_a0; + float afStack76 [12]; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + int *local_4; + + iVar1 = (&pPlayer->unknown + param_1 * 0xea)[0x2a4]; + local_4 = &pPlayer->unknown + param_1 * 0xea + 0x21c; + if ((iVar1 != 0) && (iVar2 = *(int *)(iVar1 + 0x10), iVar2 != 0)) { + iVar4 = get_curplayer_positiondata(); + iVar3 = *(int *)(iVar1 + 0x14); + iVar5 = iVar4; + proc_7F058020((float (*) [4] [4])(local_4 + 0x9a),(float (*) [4])afStack76); + local_1c = 0; + local_18 = 0; + local_14 = 0; + matrix_multiply_A1_by_F12 + (*(float *)(*(int *)(iVar1 + 0x14) + 0x14),extraout_a0, + (float *)(float (*) [4])afStack76); + proc_7F040754(iVar1,local_4 + 0xba,(undefined4 *)(float (*) [4])afStack76, + *(undefined4 *)(iVar4 + 0x14)); + proc_7F040484(iVar1); + proc_7F0BD714((int)*(short *)(*(int *)(iVar3 + 8) + 0xe) << 6); + *(int *)(iVar3 + 0xc) = iVar5; + proc_7F058020((float (*) [4] [4])(iVar1 + 0x18),(float (*) [4])afStack76); + copies_first_3_floats_from_a0_to_a1_plus_0x30 + ((xyzpoint *)(iVar1 + 0x58),(int)(float (*) [4])afStack76); + pfVar6 = (float *)get_BONDdata_field_10CC(); + proc_7F05818C(pfVar6,(float *)(float (*) [4])afStack76,*(int *)(iVar3 + 0xc)); + proc_7F06EEA4((longlong)iVar3,**(int **)(iVar3 + 8)); + *(byte *)(iVar2 + 1) = *(byte *)(iVar2 + 1) | 2; + *(float *)(iVar2 + 0x18) = -*(float *)(*(int *)(iVar3 + 0xc) + 0x38); + } + return; +} + + + +void proc_7F05FA7C(int param_1) + +{ + undefined4 *puVar1; + int *piVar2; + + piVar2 = &pPlayer->unknown + param_1 * 0xea; + if (((piVar2[0x2a4] == 0) && (0 < piVar2[0x227])) && + (puVar1 = create_new_item_instance_of_model(0xca,0x56), puVar1 != NULL)) { + *(undefined4 **)(piVar2 + 0x2a4) = puVar1; + piVar2[0x2a5] = 0; + *(undefined2 *)((int)puVar1 + 0x82) = 1; + } + return; +} + + + +void proc_7F05FB00(int param_1) + +{ + object_standard *poVar1; + int *piVar2; + + piVar2 = &pPlayer->unknown; + poVar1 = (object_standard *)(piVar2 + param_1 * 0xea)[0x2a4]; + if (poVar1 != NULL) { + proc_7F041024(poVar1,1); + (piVar2 + param_1 * 0xea)[0x2a4] = 0; + } + return; +} + + + +int ** proc_7F05FB64(int param_1) + +{ + int iVar1; + float *pfVar2; + u32 uVar3; + int **ppiVar4; + float local_d4; + int local_d0; + int local_cc; + ITEM_IDS local_c8; + float *local_c4; + int local_c0; + float local_bc; + float local_b8; + float local_b4; + undefined4 auStack176 [3]; + float afStack164 [12]; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + float local_64; + float local_60; + float local_5c; + float local_54; + float local_50; + float local_4c; + float afStack72 [16]; + int *local_8; + int **local_4; + + local_8 = &pPlayer->right_weapon + param_1 * 0xea; + local_c0 = get_curplayer_positiondata(); + local_c4 = (float *)proc_7F08A02C(); + local_c8 = get_item_in_hand(param_1); + guMtxIdentF_unrolled((float (*) [4] [4])afStack72); + if (local_c8 != ITEM_TANKSHELLS) { + proc_7F0681CC(); + pfVar2 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar2,&local_bc); + local_d4 = (float)local_8[0xba]; + local_d0 = local_8[0xbb]; + local_64 = local_bc * flt_80053DDC; + local_cc = local_8[0xbc]; + local_60 = local_b8 * flt_80053DDC; + local_5c = local_b4 * flt_80053DDC; + local_54 = local_64 * global_timer_delta; + local_50 = local_60 * global_timer_delta; + local_4c = local_5c * global_timer_delta; + if (0 < clock_timer) { + local_54 = local_54 + (*(float *)(local_c0 + 8) - *local_c4) / global_timer_delta; + local_50 = local_50 + (*(float *)(local_c0 + 0xc) - local_c4[1]) / global_timer_delta; + local_4c = local_4c + (*(float *)(local_c0 + 0x10) - local_c4[2]) / global_timer_delta; + } + goto LAB_7f05fe34; + } + iVar1 = get_ptr_for_players_tank(); + if ((iVar1 == 0) || ((*(byte *)(iVar1 + 1) & 2) == 0)) { + proc_7F068190(auStack176,&local_bc); + pfVar2 = (float *)get_BONDdata_field_10D4(); + proc_7F0583D8(pfVar2,&local_bc); + } + else { + proc_7F07CEB0(&local_bc); + } + local_54 = local_bc * flt_80053DD8; + local_50 = local_b8 * flt_80053DD8; + local_4c = local_b4 * flt_80053DD8; + if (0 < clock_timer) { + local_54 = local_54 + (*(float *)(local_c0 + 8) - *local_c4) / global_timer_delta; + local_50 = local_50 + (*(float *)(local_c0 + 0xc) - local_c4[1]) / global_timer_delta; + local_4c = local_4c + (*(float *)(local_c0 + 0x10) - local_c4[2]) / global_timer_delta; + } + if (iVar1 == 0) { + local_d4 = *(float *)(local_c0 + 8); +LAB_7f05fd2c: + local_d0 = *(int *)(local_c0 + 0xc); + local_cc = *(int *)(local_c0 + 0x10); + } + else { + if ((*(byte *)(iVar1 + 1) & 2) == 0) { + local_d4 = *(float *)(local_c0 + 8); + goto LAB_7f05fd2c; + } + iVar1 = *(int *)(iVar1 + 4); + local_d4 = *(float *)(*(int *)(*(int *)(iVar1 + 0x14) + 0xc) + 0x130); + local_d0 = *(int *)(*(int *)(*(int *)(iVar1 + 0x14) + 0xc) + 0x134); + local_cc = *(int *)(*(int *)(*(int *)(iVar1 + 0x14) + 0xc) + 0x138); + pfVar2 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar2,&local_d4); + } + proc_7F09C7AC(); +LAB_7f05fe34: + proc_7F058020((float (*) [4] [4])(&pPlayer->field_AD8 + param_1 * 0xea), + (float (*) [4])afStack164); + local_74 = 0; + local_70 = 0; + local_6c = 0; + ppiVar4 = (int **)local_8[0x88]; + if (ppiVar4 == NULL) { + ppiVar4 = (int **)create_new_item_instance_of_model(0xca,0x56); + } + else { + local_8[0x89] = 1; + } + if (ppiVar4 != NULL) { + *(undefined2 *)((int)ppiVar4 + 0x82) = 0xffff; + ppiVar4[0x19] = (int *)((uint)ppiVar4[0x19] & 0xfff9ffff); + local_4 = ppiVar4; + uVar3 = get_cur_playernum(); + local_4[0x19] = (int *)((uint)local_4[0x19] | uVar3 << 0x11); + ppiVar4 = (int **)proc_7F05EC1C(); + if (((uint)local_4[0x19] & 0x80) != 0) { + ppiVar4 = (int **)local_4[0x1b]; + *ppiVar4 = (int *)((uint)*ppiVar4 | 0x80); + if (local_c8 != ITEM_TANKSHELLS) { + *local_4[0x1b] = *local_4[0x1b] | 0x20; + *(int **)(local_4[0x1b] + 0x2c) = local_4[0x17]; + local_4[0x1b][0x2d] = local_4[0x1b][2]; + *(float *)(local_4[0x1b] + 4) = local_64; + *(float *)(local_4[0x1b] + 5) = local_60; + *(float *)(local_4[0x1b] + 6) = local_5c; + local_4[0x1b][0x2f] = 0x3c; + ppiVar4 = (int **)local_4[0x1b]; + if (ppiVar4[0x26] == NULL) { + play_sfx_a1(ptr_sfx_buf,1,(ALSndPlayer *)(ppiVar4 + 0x26)); + } + else { + if (ppiVar4[0x27] == NULL) { + play_sfx_a1(ptr_sfx_buf,1,(ALSndPlayer *)(ppiVar4 + 0x27)); + } + } + } + } + } + return ppiVar4; +} + + + +// WARNING: Instruction at (ram,0x7f060974) overlaps instruction at (ram,0x7f060970) +// + +void handles_firing_or_throwing_weapon_in_hand(HAND hand) + +{ + ushort *partdesc; + xyzpoint *posdata; + ITEM_IDS item; + int iVar3; + u32 uVar4; + float *pfVar5; + ulonglong uVar1; + longlong lVar2; + short sVar7; + uint *puVar6; + float (*paafVar8) [4] [4]; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a0_03; + undefined8 extraout_a0_04; + undefined8 extraout_a0_05; + undefined8 extraout_a0_06; + undefined8 extraout_a0_07; + undefined8 extraout_a0_08; + undefined4 unaff_s0_lo; + int *piVar9; + int *piVar10; + uint uVar11; + char cVar12; + undefined4 unaff_retaddr; + f32 fVar13; + f32 fVar14; + f32 fVar15; + int iVar16; + float fVar17; + int iVar18; + float fVar19; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f12_09; + float a; + float extraout_f12_10; + float a_00; + float extraout_f12_11; + float a_01; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float x; + float extraout_f14_06; + float x_00; + float x_01; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + undefined8 in_stack_fffffd80; + int *piVar24; + int *piVar25; + int *piVar26; + float (*paafVar27) [4] [4]; + int *instance; + float (*pafVar28) [4]; + xyzpoint xStack548; + xyzpoint *pxStack532; + xyzpoint *pxStack524; + float fStack520; + float fStack516; + float fStack512; + float fStack508; + float fStack504; + float fStack500; + float fStack496; + float fStack492; + float fStack488; + float fStack480; + float fStack476; + float fStack472; + float fStack468; + float fStack464; + float fStack460; + float fStack456; + float fStack452; + float fStack448; + weapon_stats *pwStack432; + ITEM_IDS IStack428; + int iStack424; + xyzpoint *pxStack416; + int *piStack412; + float afStack404 [16]; + float afStack340 [12]; + float fStack292; + float fStack288; + float fStack284; + xyzpoint xStack276; + object_header *poStack264; + float afStack260 [14]; + float fStack204; + float afStack196 [16]; + float fStack132; + float fStack128; + float fStack124; + float fStack116; + float fStack112; + float fStack108; + float fStack100; + float fStack96; + float fStack92; + float fStack84; + float fStack80; + float fStack76; + float afStack68 [16]; + float (*pafStack4) [4]; + + xStack276.x = (float)dword_80035C40; + xStack276.y = (float)dword_80035C44; + xStack276.z = (float)dword_80035C48; + piVar9 = &pPlayer->unknown + hand * 0xea; + piStack412 = NULL; + pxStack416 = NULL; + piVar10 = piVar9 + 0x21c; + IStack428 = return_ammo_in_hand(hand); + pwStack432 = get_ptr_item_statistics(IStack428); + if (hand == HAND_RIGHT) { + item = return_ammo_in_hand(HAND_LEFT); + iVar3 = check_special_attributes(item,0x800); + fVar17 = extraout_f12; + if (iVar3 == 0) { + *(float *)(piVar9 + 0x28d) = + (float)piVar9[0x28d] - (global_timer_delta + global_timer_delta) / 240.00000000; + if ((float)piVar9[0x28d] < 0.00000000) { + piVar9[0x28d] = 0; + } + } + else { + *(float *)(piVar9 + 0x28d) = + (float)piVar9[0x28d] + (global_timer_delta + global_timer_delta) / 240.00000000; + if (2.00000000 < (float)piVar9[0x28d]) { + piVar9[0x28d] = 0x40000000; + } + } + } + else { + item = return_ammo_in_hand(HAND_RIGHT); + iVar3 = check_special_attributes(item,0x800); + fVar17 = extraout_f12_00; + if (iVar3 == 0) { + *(float *)(piVar9 + 0x28d) = + (float)piVar9[0x28d] + (global_timer_delta + global_timer_delta) / 240.00000000; + if (0.00000000 < (float)piVar9[0x28d]) { + piVar9[0x28d] = 0; + } + } + else { + *(float *)(piVar9 + 0x28d) = + (float)piVar9[0x28d] - (global_timer_delta + global_timer_delta) / 240.00000000; + if ((float)piVar9[0x28d] < -2.00000000) { + piVar9[0x28d] = -0x40000000; + } + } + } + fStack456 = dword_80035C4C; + fStack452 = dword_80035C50; + fStack448 = dword_80035C54; + fStack468 = dword_80035C58; + fStack464 = dword_80035C5C; + fStack460 = flt_80035C60; + fStack480 = dword_80035C64; + fStack476 = flt_80035C68; + fStack472 = dword_80035C6C; + iVar3 = piVar9[0x282]; + uVar11 = iVar3 + 3U & 3; + if (((int)(iVar3 + 3U) < 0) && (uVar11 != 0)) { + uVar11 -= 4; + } + instance = piVar10 + uVar11 * 3; + piVar26 = piVar10 + iVar3 * 3; + uVar11 = iVar3 + 1U & 3; + if (((int)(iVar3 + 1U) < 0) && (uVar11 != 0)) { + uVar11 -= 4; + } + piVar25 = piVar10 + uVar11 * 3; + uVar11 = iVar3 + 2U & 3; + if (((int)(iVar3 + 2U) < 0) && (uVar11 != 0)) { + uVar11 -= 4; + } + piVar24 = piVar10 + uVar11 * 3; + proc_7F05AEFC((float *)(instance + 0x42),(float *)(piVar26 + 0x42),(float *)(piVar25 + 0x42), + (float *)(piVar24 + 0x42),fVar17,(float *)piVar9[0x283]); + proc_7F05AEFC((float *)(instance + 0x4e),(float *)(piVar26 + 0x4e),(float *)(piVar25 + 0x4e), + (float *)(piVar24 + 0x4e),extraout_f12_01,(float *)piVar9[0x283]); + proc_7F05AEFC((float *)(instance + 0x5a),(float *)(piVar26 + 0x5a),(float *)(piVar25 + 0x5a), + (float *)(piVar24 + 0x5a),extraout_f12_02,(float *)piVar9[0x283]); + fStack448 = fStack448 * pPlayer->field_FC0; + fStack456 = fStack456 * pPlayer->field_FC0 + (float)piVar9[0x287]; + fStack452 = fStack452 * pPlayer->field_FC0 + (float)piVar9[0x288]; + fVar13 = proc_7F05DCB8(hand); + fVar17 = flt_80053DE0; + fStack456 = fStack456 + (float)fVar13; + iVar3 = 0; + if (0 < clock_timer) { + fVar20 = (float)piVar9[0x255]; + while( true ) { + iVar3 += 1; + *(float *)(piVar9 + 0x255) = fStack456 + fVar17 * fVar20; + *(float *)(piVar9 + 0x256) = fStack452 + fVar17 * (float)piVar9[0x256]; + *(float *)(piVar9 + 599) = fStack448 + fVar17 * (float)piVar9[599]; + *(float *)(piVar9 + 600) = fStack468 + fVar17 * (float)piVar9[600]; + *(float *)(piVar9 + 0x259) = fStack464 + fVar17 * (float)piVar9[0x259]; + *(float *)(piVar9 + 0x25a) = fStack460 + fVar17 * (float)piVar9[0x25a]; + *(float *)(piVar9 + 0x25b) = fStack480 + fVar17 * (float)piVar9[0x25b]; + *(float *)(piVar9 + 0x25c) = fStack476 + fVar17 * (float)piVar9[0x25c]; + *(float *)(piVar9 + 0x25d) = fStack472 + fVar17 * (float)piVar9[0x25d]; + if (clock_timer <= iVar3) break; + fVar20 = (float)piVar9[0x255]; + } + } + fVar17 = flt_80053DE4; + fVar21 = (float)piVar9[0x256] * flt_80053DE4; + fVar20 = (float)piVar9[599] * flt_80053DE4; + *(float *)(piVar9 + 0x24c) = (float)piVar9[0x255] * flt_80053DE4; + *(float *)(piVar9 + 0x24d) = fVar21; + *(float *)(piVar9 + 0x24e) = fVar20; + *(float *)(piVar9 + 0x24f) = (float)piVar9[600] * fVar17; + *(float *)(piVar9 + 0x250) = (float)piVar9[0x259] * fVar17; + *(float *)(piVar9 + 0x251) = (float)piVar9[0x25a] * fVar17; + *(float *)(piVar9 + 0x252) = (float)piVar9[0x25b] * fVar17; + *(float *)(piVar9 + 0x253) = (float)piVar9[0x25c] * fVar17; + *(float *)(piVar9 + 0x254) = (float)piVar9[0x25d] * fVar17; + if ((longlong)(int)hand == 0) { + fVar13 = proc_7F05DCE8(0); + xStack276.x = (float)piVar9[0x28a] + (float)fVar13 + (float)piVar9[0x24c]; + } + else { + fVar13 = proc_7F05DCE8((longlong)(int)hand); + xStack276.x = ((float)fVar13 + (float)piVar9[0x24c]) - (float)piVar9[0x28a]; + } + xStack276.y = (float)piVar9[0x28b] + (float)(pwStack432->position).y + (float)piVar9[0x24d]; + xStack276.z = (float)piVar9[0x28c] + (float)(pwStack432->position).z + (float)piVar9[0x24e]; + if (((IStack428 == ITEM_ROCKETLAUNCH) || (IStack428 == ITEM_TRIGGER)) || + (IStack428 == ITEM_WATCHLASER)) { + xStack276.y = xStack276.y + (float)pPlayer->ducking_height_offset / -100.00000000; + xStack276.z = xStack276.z + + ((float)pPlayer->ducking_height_offset * 3.00000000) / -100.00000000; + if ((IStack428 == ITEM_ROCKETLAUNCH) && + (((iVar3 = cur_player_get_screen_setting(), iVar3 == 1 || + (iVar3 = cur_player_get_screen_setting(), iVar3 == 2)) || + (iVar3 = get_screen_ratio(), iVar3 == 1)))) { + xStack276.y = xStack276.y - 3.00000000; + } + } + else { + if (IStack428 == ITEM_TASER) { + xStack276.y = xStack276.y + + ((float)pPlayer->ducking_height_offset * 2.50000000) / -100.00000000; + xStack276.z = xStack276.z + + ((float)pPlayer->ducking_height_offset * 7.50000000) / -100.00000000; + } + else { + xStack276.y = xStack276.y + + ((float)pPlayer->ducking_height_offset * 5.00000000) / -100.00000000; + xStack276.z = xStack276.z + + ((float)pPlayer->ducking_height_offset * 15.00000000) / -100.00000000; + } + } + if ((*(char *)(piVar9 + 0x21f) != '\0') && + (iVar3 = check_special_attributes(IStack428,0x20), iVar3 != 0)) { + iVar3 = check_special_attributes(IStack428,0x40); + if (iVar3 != 0) { + uVar4 = get_random_value(); + fVar17 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar17 = fVar17 + 4294967296.00000000; + } + xStack276.x = xStack276.x + (flt_80053DEC - fVar17 * 0.00000000 * flt_80053DE8); + } + uVar4 = get_random_value(); + fVar17 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar17 = fVar17 + 4294967296.00000000; + } + xStack276.y = xStack276.y + (flt_80053DF4 - fVar17 * 0.00000000 * flt_80053DF0); + uVar4 = get_random_value(); + fVar17 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar17 = fVar17 + 4294967296.00000000; + } + xStack276.z = xStack276.z + (flt_80053DFC - fVar17 * 0.00000000 * flt_80053DF8); + } + fVar13 = getPlayer_c_screenwidth(); + fVar14 = getPlayer_c_screenwidth(); + fVar15 = getPlayer_c_screenleft(); + xStack276.x = xStack276.x + + (((pPlayer->field_FFC - (float)fVar15) - (float)fVar14 * 0.50000000) * + pwStack432->field_0x18) / ((float)fVar13 * 0.50000000); + fVar13 = getPlayer_c_screentop(); + fVar14 = getPlayer_c_screenheight(); + if ((float)fVar14 * 0.50000000 < pPlayer->field_1000 - (float)fVar13) { + fVar14 = getPlayer_c_screenheight(); + fVar15 = getPlayer_c_screenheight(); + fVar13 = getPlayer_c_screentop(); + xStack276.y = xStack276.y - + (((pPlayer->field_1000 - (float)fVar13) - (float)fVar15 * 0.50000000) * + pwStack432->field_0x14) / ((float)fVar14 * 0.50000000); + } + else { + fVar14 = getPlayer_c_screenheight(); + fVar15 = getPlayer_c_screenheight(); + fVar13 = getPlayer_c_screentop(); + xStack276.y = xStack276.y - + (((pPlayer->field_1000 - (float)fVar13) - (float)fVar15 * 0.50000000) * + pwStack432->field_0x10) / ((float)fVar14 * 0.50000000); + } + proc_7F05C614(); + guMtxIdentF_unrolled((float (*) [4] [4])afStack340); + if ((IStack428 == ITEM_TRIGGER) || (IStack428 == ITEM_WATCHLASER)) { + fStack496 = flt_80035C70; + fStack492 = flt_80035C74; + fStack488 = flt_80035C78; + proc_7F058714(&fStack496,afStack260); + sub_GAME_7F058098(afStack260,afStack340); + iVar3 = piVar9[0x24b]; + fVar17 = extraout_f12_04; + fVar20 = extraout_f14_00; + } + else { + if (IStack428 == ITEM_TASER) { + fStack508 = flt_80035C7C; + fStack504 = flt_80035C80; + fStack500 = flt_80035C84; + proc_7F058714(&fStack508,afStack260); + sub_GAME_7F058098(afStack260,afStack340); + iVar3 = piVar9[0x24b]; + fVar17 = extraout_f12_05; + fVar20 = extraout_f14_01; + } + else { + fVar17 = extraout_f12_03; + fVar20 = extraout_f14; + if (IStack428 == ITEM_FIST) { + if (pPlayer->cur_item_weapon_getname != 0x11) { + iVar3 = piVar9[0x24b]; + goto LAB_7f060a94; + } + fStack520 = flt_80035C88; + fStack516 = flt_80035C8C; + fStack512 = flt_80035C90; + proc_7F058714(&fStack520,afStack260); + sub_GAME_7F058098(afStack260,afStack340); + xStack276.x = xStack276.x + -2.50000000; + xStack276.y = xStack276.y + flt_80053E00; + xStack276.z = xStack276.z + 2.00000000; + fVar17 = extraout_f12_06; + fVar20 = extraout_f14_02; + } + iVar3 = piVar9[0x24b]; + } + } +LAB_7f060a94: + if (iVar3 == 0) { + piVar9[0x23a] = 0; + piVar9[0x237] = 0; + piVar9[0x238] = 0; + piVar9[0x239] = 0; + } + else { + xStack276.x = xStack276.x + (float)piVar9[0x247]; + xStack276.y = xStack276.y + (float)piVar9[0x248]; + xStack276.z = xStack276.z + (float)piVar9[0x249]; + sub_GAME_7F058098((float *)(piVar9 + 0x23b),afStack340); + fStack292 = 0.00000000; + fStack288 = 0.00000000; + fStack284 = 0.00000000; + fVar17 = extraout_f12_07; + fVar20 = extraout_f14_03; + } + fVar22 = (float)piVar9[0x250]; + fVar21 = (float)piVar9[0x251]; + fVar23 = (float)piVar9[0x252]; + iVar16 = piVar9[0x253]; + iVar18 = piVar9[0x254]; + proc_7F059908(afStack260,fVar17,fVar20,0.00000000,0.00000000,0.00000000,(float)piVar9[0x24f], + fVar22,fVar21,fVar23); + sub_GAME_7F058098(afStack260,afStack340); + proc_7F059CE8(afStack260,extraout_f12_08,extraout_f14_04,0.00000000, + xStack276.x - (float)piVar9[0x28e]); + sub_GAME_7F058098(afStack260,afStack340); + proc_7F058020((float (*) [4] [4])afStack340,(float (*) [4])afStack68); + copies_first_3_floats_from_a0_to_a1_plus_0x30(&xStack276,(int)afStack68); + pafVar28 = (float (*) [4])(piVar9 + 0x2a6); + proc_7F058020((float (*) [4] [4])afStack68,pafVar28); + paafVar27 = (float (*) [4] [4])(piVar9 + 0x2b6); + proc_7F058020(paafVar27,(float (*) [4])(piVar9 + 0x2c6)); + pfVar5 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar5,(float *)pafVar28,(int)paafVar27); + *(undefined *)((int)piVar9 + 0x87f) = 1; + iVar3 = get_ptr_weapon_model_header_line(IStack428); + if ((iVar3 == 0) || (iVar3 = check_special_attributes(IStack428,0x800), iVar3 == 0)) { +LAB_7f060c6c: + *(undefined *)((int)piVar9 + 0x87f) = 0; + } + else { + iVar3 = check_special_attributes(IStack428,0x2000); + if (iVar3 == 0) { + if (piVar9[0x225] == 6) goto LAB_7f060c6c; + if (piVar9[0x225] == 7) { + *(undefined *)((int)piVar9 + 0x87f) = 0; + } + else { + uVar1 = proc_7F05CEBC(hand); + if (uVar1 != 0) { + iVar3 = get_itemtype_in_hand(hand); + if (iVar3 != 0) { + iVar3 = piVar9[0x227]; + goto LAB_7f060c74; + } + goto LAB_7f060c6c; + } + *(undefined *)((int)piVar9 + 0x87f) = 0; + } + } + else { + *(undefined *)((int)piVar9 + 0x87f) = 0; + } + } + iVar3 = piVar9[0x227]; +LAB_7f060c74: + if (iVar3 < 1) { + iVar3 = check_special_attributes(IStack428,2); + if (iVar3 == 0) { + cVar12 = *(char *)((int)piVar9 + 0x87f); + } + else { + *(undefined *)((int)piVar9 + 0x87f) = 0; + cVar12 = *(char *)((int)piVar9 + 0x87f); + } + } + else { + cVar12 = *(char *)((int)piVar9 + 0x87f); + } + if (cVar12 != '\0') { + poStack264 = (object_header *)(&pPlayer->unknown + hand * 8 + 0x204); + lVar2 = (longlong)(int)poStack264; + iStack424 = 0; + proc_7F0BD714((int)*(short *)((int)(&pPlayer->unknown + hand * 8) + 0x81e) << 6); + pafStack4 = (float (*) [4])lVar2; + iVar3 = iStack424; + if (0 < poStack264->num_object_grps) { + do { + iStack424 = iVar3; + paafVar8 = (float (*) [4] [4])lVar2; + guMtxIdentF_unrolled(paafVar8); + lVar2 = (longlong)(int)(paafVar8 + 1); + iVar3 = iStack424 + 1; + } while ((longlong)(iStack424 + 1) < (longlong)poStack264->num_object_grps); + } + set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack264); + instance = piVar9 + 0x2da; + proc_7F075F68((int)instance,(ushort **)poStack264,piVar9 + 0x2e2); + proc_7F05E978((int)instance,1); + proc_7F05EA94((int)instance,(int)*(char *)((int)piVar9 + 0x87e)); + iVar3 = poStack264->offset_obj_offset_block; + if (*(int *)(iVar3 + 4) == 0) { + iVar3 = *(int *)(iVar3 + 0xc); + } + else { + piStack412 = piVar10 + (uint)*(ushort *)(*(int *)(*(int *)(iVar3 + 4) + 4) + 4) + 0xc6; + iVar3 = *(int *)(iVar3 + 0xc); + } + if (iVar3 != 0) { + pxStack416 = *(xyzpoint **)(iVar3 + 4); + } + *(float (**) [4])(piVar9 + 0x2dd) = pafStack4; + iVar3 = check_special_attributes(IStack428,0x400); + extraout_a0_04 = extraout_a0; + if ((iVar3 != 0) && (hand == HAND_LEFT)) { + proc_7F0589B4(-1.00000000,extraout_a0,afStack68); + extraout_a0_04 = extraout_a0_00; + } + matrix_multiply_A1_by_F12(flt_80053E04,extraout_a0_04,afStack68); + proc_7F058020((float (*) [4] [4])afStack68,pafStack4); + if (poStack264->ptr_archetype == (object_standard *)&weapon_gun_revolver) { + iVar3 = *(int *)(poStack264->offset_obj_offset_block + 0x10); + if (iVar3 == 0) { + iVar3 = *(int *)(poStack264->offset_obj_offset_block + 0x14); + } + else { + fVar17 = 0.00000000; + pxStack524 = *(xyzpoint **)(iVar3 + 4); + if (IStack428 == ITEM_RUGER) { + if (piVar9[0x225] == 1) { + fVar17 = ((float)(piVar9[0x224] + piVar9[0x227] * -6 + 0x1e) * flt_80053E08) + / 36.00000000; + } + else { + fVar17 = ((float)(6 - piVar9[0x227]) * flt_80053E0C) / 6.00000000; + } + } + else { + if ((piVar9[0x225] == 1) && (piVar9[0x224] < 6)) { + fVar17 = ((float)piVar9[0x224] * flt_80053E10) / 36.00000000; + } + } + proc_7F058688(fVar17,(longlong)(int)pxStack524,afStack260); + copies_first_3_floats_from_a0_to_a1_plus_0x30(pxStack524,(int)afStack260); + proc_7F0580C8(afStack68,afStack260,(int)(pafStack4 + 0xc)); + iVar3 = *(int *)(poStack264->offset_obj_offset_block + 0x14); + } + if (iVar3 != 0) { + posdata = *(xyzpoint **)(iVar3 + 4); + if (piVar9[0x225] == 1) { + iVar3 = piVar9[0x224]; + if (iVar3 < 3) { + fVar17 = -(float)iVar3 * flt_80053E14 + -(float)iVar3 * flt_80053E14; + } + else { + fVar17 = -(float)(6 - iVar3) * flt_80053E18; + fVar17 = fVar17 + fVar17; + } + pxStack532 = posdata; + proc_7F058570(fVar17 / 6.00000000,(longlong)(int)posdata,afStack260); + copies_first_3_floats_from_a0_to_a1_plus_0x30(pxStack532,(int)afStack260); + } + else { + init_something_copy_posdata_to_it(posdata,(int *)afStack260); + } + proc_7F0580C8(afStack68,afStack260,(int)(pafStack4 + 0x10)); + } + } + if (piStack412 != NULL) { + *piStack412 = 0; + } + if (pxStack416 == NULL) { + piVar9[0x2d6] = piVar9[0x2c2]; + *(float *)(piVar9 + 0x2d9) = -(float)piVar9[0x2b4]; + piVar9[0x2d7] = piVar9[0x2c3]; + piVar9[0x2d8] = piVar9[0x2c4]; + iVar3 = poStack264->offset_obj_offset_block; + } + else { + uVar4 = get_random_value(); + fVar17 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar17 = fVar17 + 4294967296.00000000; + } + fVar17 = fVar17 * 0.00000000 * 0.25000000 + 1.00000000; + fVar20 = pwStack432->field_0; + iVar3 = check_special_attributes(IStack428,1); + if (iVar3 == 0) { + init_something_copy_posdata_to_it(pxStack416,(int *)&fStack132); + extraout_a0_04 = extraout_a0_03; + } + else { + uVar4 = get_random_value(); + fVar19 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar19 = fVar19 + 4294967296.00000000; + } + proc_7F058688(fVar19 * 0.00000000 * flt_80053E1C,extraout_a0_01,&fStack132); + copies_first_3_floats_from_a0_to_a1_plus_0x30(pxStack416,(int)&fStack132); + extraout_a0_04 = extraout_a0_02; + } + matrix_multiply_A1_by_F12(fVar17,extraout_a0_04,&fStack132); + proc_7F058A14(fVar20,extraout_a0_04,(int)&fStack132); + proc_7F058068(afStack68,&fStack132); + proc_7F058020((float (*) [4] [4])&fStack132,pafStack4 + 4); + *(float *)(piVar9 + 0x2d6) = fStack84; + *(float *)(piVar9 + 0x2d7) = fStack80; + *(float *)(piVar9 + 0x2d8) = fStack76; + pfVar5 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar5,(float *)(piVar9 + 0x2d6)); + *(float *)(piVar9 + 0x2d9) = -fStack76; + if (*(char *)((int)piVar9 + 0x87d) != '\0') { + if (piStack412 != NULL) { + *piStack412 = 1; + } + iVar3 = *(int *)(poStack264->offset_obj_offset_block + 8); + if (iVar3 != 0) { + pfVar5 = *(float **)(iVar3 + 4); + xStack548.x = fStack84 + + *pfVar5 * fStack132 + pfVar5[1] * fStack116 + + pfVar5[2] * fStack100; + xStack548.y = fStack80 + + *pfVar5 * fStack128 + pfVar5[1] * fStack112 + pfVar5[2] * fStack96 + ; + xStack548.z = fStack76 + + *pfVar5 * fStack124 + pfVar5[1] * fStack108 + pfVar5[2] * fStack92 + ; + uVar4 = get_random_value(); + fVar19 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar19 = fVar19 + 4294967296.00000000; + } + proc_7F059CE8(afStack196,extraout_f12_09,extraout_f14_05, + fVar19 * 0.00000000 * flt_80053E20,-xStack548.x); + matrix_multiply_A1_by_F12(flt_80053E24 * fVar17,extraout_a0_05,afStack196); + proc_7F059B58(afStack404,a,x,0.00000000,xStack276.x - (float)piVar9[0x28e]); + proc_7F058068(afStack404,afStack196); + proc_7F058B80(fVar20,extraout_a0_06,(int)afStack196); + proc_7F058068(afStack340,afStack196); + copies_first_3_floats_from_a0_to_a1_plus_0x30(&xStack548,(int)afStack196); + proc_7F058020((float (*) [4] [4])afStack196,pafStack4 + 8); + } + if ((poStack264->ptr_archetype == (object_standard *)&weapon_gun_kf7) && + (iVar3 = *(int *)(poStack264->offset_obj_offset_block + 0x10), iVar3 != 0)) { + pfVar5 = *(float **)(iVar3 + 4); + paafVar27 = (float (*) [4] [4])(pafStack4 + 0xc); + xStack548.x = fStack84 + + *pfVar5 * fStack132 + pfVar5[1] * fStack116 + + pfVar5[2] * fStack100; + xStack548.y = fStack80 + + *pfVar5 * fStack128 + pfVar5[1] * fStack112 + pfVar5[2] * fStack96 + ; + piVar24 = (int *)(flt_80053E28 * fVar17); + xStack548.z = fStack76 + + *pfVar5 * fStack124 + pfVar5[1] * fStack108 + pfVar5[2] * fStack92 + ; + uVar4 = get_random_value(); + fVar17 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar17 = fVar17 + 4294967296.00000000; + } + proc_7F059CE8(afStack196,extraout_f12_10,extraout_f14_06, + fVar17 * 0.00000000 * flt_80053E2C,-xStack548.x); + matrix_multiply_A1_by_F12((float)piVar24,extraout_a0_07,afStack196); + proc_7F059B58(afStack404,a_00,x_00,0.00000000,xStack276.x - (float)piVar9[0x28e] + ); + proc_7F058068(afStack404,afStack196); + proc_7F058B80(fVar20,extraout_a0_08,(int)afStack196); + proc_7F058068(afStack340,afStack196); + copies_first_3_floats_from_a0_to_a1_plus_0x30(&xStack548,(int)afStack196); + proc_7F058020((float (*) [4] [4])afStack196,(float (*) [4])paafVar27); + } + } + iVar3 = poStack264->offset_obj_offset_block; + } + partdesc = *(ushort **)(iVar3 + 0x18); + if (partdesc != NULL) { + posdata = *(xyzpoint **)(partdesc + 2); + sVar7 = proc_7F06C570(partdesc,0); + fVar17 = (float)proc_7F05E6B4(); + if ((poStack264->num_offset_entries < 0x1d) || + (iVar3 = *(int *)(poStack264->offset_obj_offset_block + 0x70), iVar3 == 0)) { + proc_7F0584D0((float *)posdata,extraout_f12_11,(float *)piVar9[0x2a1]); + } + else { + iVar3 = *(int *)(iVar3 + 4); + get_value_if_watch_is_on_hand_or_not(hand); + guRotateF((float [4] [4]) + CONCAT604(CONCAT564(CONCAT524(CONCAT484(CONCAT444(CONCAT404(CONCAT364( + CONCAT324(CONCAT248(CONCAT204(CONCAT164(CONCAT124( + CONCAT84(CONCAT44(*(float *)(iVar3 + 8) - + *(float *)(iVar3 + 0x14),fVar22) + ,fVar21),fVar23),iVar16),iVar18), + in_stack_fffffd80),unaff_s0_lo),unaff_retaddr), + piVar24),piVar25),paafVar27),instance),fVar14), + fVar15),a_01,x_01,(float)afStack260, + ((((float)piVar9[0x2a1] + flt_80053E30) - fVar17) * 360.00000000) / + flt_80053E34); + copies_first_3_floats_from_a0_to_a1_plus_0x30(posdata,(int)afStack260); + } + proc_7F05818C(afStack68,afStack260,(int)(pafStack4 + (int)sVar7 * 4)); + } + if (0x1d < poStack264->num_offset_entries) { + seems_to_load_cuff_microcode + (instance,(Gitemheader *)poStack264,(void *)((int)&saved_s0 + 1)); + } + partdesc = *(ushort **)(poStack264->offset_obj_offset_block + 0x1c); + if (partdesc != NULL) { + posdata = *(xyzpoint **)(partdesc + 2); + sVar7 = proc_7F06C570(partdesc,0); + proc_7F05E83C(hand); + init_something_copy_posdata_to_it(posdata,(int *)afStack260); + fStack204 = fStack204 - (float)piVar9[0x2a2]; + proc_7F0580C8(afStack68,afStack260,(int)(pafStack4 + (int)sVar7 * 4)); + } + iVar3 = 0; + iVar16 = 0; + if (0x12 < poStack264->num_offset_entries) { + do { + partdesc = *(ushort **)(poStack264->offset_obj_offset_block + iVar16 + 0x48); + if ((partdesc != NULL) && + (puVar6 = (uint *)extract_id_from_object_structure_microcode + ((int)instance,partdesc), puVar6 != NULL)) { + *puVar6 = (uint)(piVar9[0x229] < 5 - iVar3) ^ 1; + } + partdesc = *(ushort **)(poStack264->offset_obj_offset_block + iVar16 + 0x5c); + if ((partdesc != NULL) && + (puVar6 = (uint *)extract_id_from_object_structure_microcode + ((int)instance,partdesc), puVar6 != NULL)) { + *puVar6 = (uint)(piVar9[0x229] < 5 - iVar3) ^ 1; + } + iVar3 += 1; + iVar16 += 4; + } while (iVar3 != 5); + } + proc_7F06EFC4((int)instance); + if ((*(char *)(piVar9 + 0x21f) != '\0') && (true)) { + switch(IStack428) { + case ITEM_WPPK: + case ITEM_WPPKSIL: + case ITEM_TT33: + case ITEM_SKORPION: + case ITEM_AK47: + case ITEM_UZI: + case ITEM_MP5K: + case ITEM_MP5KSIL: + case ITEM_SPECTRE: + case ITEM_M16: + case ITEM_FNP90: + case ITEM_SNIPERRIFLE: + case ITEM_RUGER: + case ITEM_GOLDENGUN: + case ITEM_SILVERWPPK: + case ITEM_GOLDWPPK: + proc_7F061BF4(hand); + piVar9[0x228] = piVar9[0x228] + 1; + break; + case ITEM_LASER: + case ITEM_WATCHLASER: + proc_7F061BF4(hand); + } + } + } + if (IStack428 == ITEM_ROCKETLAUNCH) { + proc_7F05F928(hand); + cVar12 = *(char *)(piVar9 + 0x21f); + } + else { + cVar12 = *(char *)(piVar9 + 0x21f); + } + if (cVar12 != '\0') { + fVar13 = proc_7F089778((int)pPlayer); + proc_7F068508(hand,fVar13); + if (IStack428 == ITEM_GRENADELAUNCH) { + proc_7F05F73C(hand); + } + else { + if (IStack428 == ITEM_GRENADE) { + proc_7F05EE24(hand); + } + else { + if (IStack428 == ITEM_ROCKETLAUNCH) { + proc_7F05FB64(hand); + } + else { + if (IStack428 == ITEM_THROWKNIFE) { + proc_7F05F09C(hand); + } + else { + if (((((IStack428 == ITEM_REMOTEMINE) || (IStack428 == ITEM_PROXIMITYMINE)) + || (IStack428 == ITEM_TIMEDMINE)) || + ((IStack428 == ITEM_BOMBCASE || (IStack428 == ITEM_BUG)))) || + ((IStack428 == ITEM_MICROCAMERA || + ((IStack428 == ITEM_GOLDENEYEKEY || (IStack428 == ITEM_PLASTIQUE)))))) { + generate_player_thrown_object(hand); + } + else { + if (IStack428 == ITEM_FLAREPISTOL) { + proc_7F05F73C(hand); + } + else { + if (IStack428 == ITEM_PITONGUN) { + proc_7F05F73C(hand); + } + } + } + } + } + } + } + } + return; +} + + + +void proc_7F061920(void) + +{ + handles_firing_or_throwing_weapon_in_hand(HAND_RIGHT); + handles_firing_or_throwing_weapon_in_hand(HAND_LEFT); + return; +} + + + +void proc_7F061948(undefined *param_1,int param_2,float *param_3,float *param_4) + +{ + bool bVar1; + float fVar2; + float fVar3; + u32 uVar4; + float fVar5; + float fVar6; + float fVar7; + + *(float *)(param_1 + 4) = *param_3; + *(float *)(param_1 + 8) = param_3[1]; + *(float *)(param_1 + 0xc) = param_3[2]; + *(float *)(param_1 + 0x10) = *param_4 - *param_3; + *(float *)(param_1 + 0x14) = param_4[1] - param_3[1]; + *(float *)(param_1 + 0x18) = param_4[2] - param_3[2]; + fVar5 = sqrtf(*(float *)(param_1 + 0x18) * *(float *)(param_1 + 0x18) + + *(float *)(param_1 + 0x10) * *(float *)(param_1 + 0x10) + + *(float *)(param_1 + 0x14) * *(float *)(param_1 + 0x14)); + fVar7 = 1.00000000 / fVar5; + *(float *)(param_1 + 0x10) = *(float *)(param_1 + 0x10) * fVar7; + *(float *)(param_1 + 0x14) = *(float *)(param_1 + 0x14) * fVar7; + *(float *)(param_1 + 0x18) = *(float *)(param_1 + 0x18) * fVar7; + if (param_2 == 0x17) { + fVar7 = 300.00000000; + if (fVar5 <= 300.00000000) goto LAB_7f061a54; + } + else { + fVar7 = flt_80053E88; + if (fVar5 <= flt_80053E88) goto LAB_7f061a54; + } + fVar5 = fVar7; +LAB_7f061a54: + fVar6 = 500.00000000; + *param_1 = 0; + param_1[1] = (char)param_2; + *(float *)(param_1 + 0x1c) = fVar5; + fVar3 = flt_80053EA0; + fVar2 = flt_80053E9C; + fVar7 = flt_80053E8C; + if (500.00000000 <= fVar5) { + fVar6 = fVar5; + } + if (param_2 == 0x16) { + *(float *)(param_1 + 0x20) = fVar6 * 0.25000000; + fVar5 = flt_80053E90 * fVar6; + *(float *)(param_1 + 0x24) = fVar5; + if (fVar7 < fVar5) { + *(float *)(param_1 + 0x24) = fVar7; + } + uVar4 = get_random_value(); + fVar5 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + *(float *)(param_1 + 0x28) = (flt_80053E98 - fVar5 * 0.00000000 * flt_80053E94) * fVar6; + } + else { + if (param_2 == 0x17) { + *(float *)(param_1 + 0x24) = fVar6; + *(float *)(param_1 + 0x20) = fVar6 + fVar6; + if (fVar2 < fVar6) { + *(float *)(param_1 + 0x24) = fVar2; + } + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + fVar6 = flt_80053EA4 * fVar6; + bVar1 = flt_80053EA0 < fVar6; + *(float *)(param_1 + 0x20) = fVar6; + *(float *)(param_1 + 0x24) = fVar6; + if (bVar1) { + *(float *)(param_1 + 0x24) = fVar3; + } + uVar4 = get_random_value(); + fVar5 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + *(float *)(param_1 + 0x28) = + ((fVar5 * 0.00000000 + fVar5 * 0.00000000) - 1.00000000) * + *(float *)(param_1 + 0x20); + } + } + if (*(float *)(param_1 + 0x1c) <= *(float *)(param_1 + 0x28)) { + *param_1 = 0xff; + } + return; +} + + + +void proc_7F061BF4(int param_1) + +{ + int iVar1; + ITEM_IDS IVar2; + s32 sVar3; + int *piVar4; + int *piVar5; + float fVar6; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + int local_14; + + piVar5 = &pPlayer->unknown + param_1 * 0xea; + iVar1 = get_BONDdata_field_10CC(); + if ((float)piVar5[0x2d9] <= + -(*(float *)(iVar1 + 0x38) + + (float)piVar5[0x303] * *(float *)(iVar1 + 8) + + (float)piVar5[0x304] * *(float *)(iVar1 + 0x18) + + (float)piVar5[0x305] * *(float *)(iVar1 + 0x28))) { + IVar2 = get_item_in_hand(param_1); + proc_7F061948((undefined *)(piVar5 + 0x295),IVar2,(float *)(piVar5 + 0x2d6), + (float *)(piVar5 + 0x303)); + if ((*(int *)(pPlayer->position_data_pointer + 4) != 0) && + (sVar3 = get_num_players(), 1 < sVar3)) { + piVar4 = &pPlayer->unknown + param_1 * 3; + local_14 = *(int *)(pPlayer->position_data_pointer + 4); + local_20 = (float)piVar5[0x303] - (float)piVar4[0xa86]; + local_1c = (float)piVar5[0x304] - (float)piVar4[0xa87]; + local_18 = (float)piVar5[0x305] - (float)piVar4[0xa88]; + guNormalize(&local_20,&local_1c,&local_18); + local_2c = (float)piVar5[0x303] - (float)piVar5[0x2d6]; + local_28 = (float)piVar5[0x304] - (float)piVar5[0x2d7]; + local_24 = (float)piVar5[0x305] - (float)piVar5[0x2d8]; + guNormalize(&local_2c,&local_28,&local_24); + fVar6 = proc_7F05ACB0(local_24 * local_18 + local_20 * local_2c + local_1c * local_28); + if (fVar6 <= flt_80053EA8) { + IVar2 = get_item_in_hand(param_1); + proc_7F061948((undefined *)(local_14 + param_1 * 0x2c + 0x180),IVar2, + (float *)(&pPlayer->field_2A18 + param_1 * 3), + (float *)(piVar5 + 0x303)); + } + } + } + return; +} + + + +// WARNING: Could not reconcile some variable overlaps + +undefined4 * proc_7F061E18(undefined4 *param_1,char *param_2,int param_3) + +{ + byte bVar1; + undefined4 *puVar2; + xyzpoint *virtualAddress; + float *pfVar3; + u32 uVar4; + char cVar5; + undefined8 extraout_a0; + undefined4 *puVar6; + float fVar7; + float extraout_f12; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + undefined4 *puStackX0; + int iStackX8; + float fStack216; + float fStack212; + float fStack208; + float fStack196; + float fStack192; + float fStack188; + float *pfStack184; + sImageTableEntry *psStack176; + float fStack172; + float fStack168; + float fStack164; + float fStack160; + float fStack156; + float fStack152; + float fStack148; + float fStack144; + float fStack140; + float fStack136; + float fStack132; + float fStack128; + float fStack124; + float fStack120; + float fStack108; + xyzpoint *pxStack104; + xyzpoint xStack100; + f32 fStack88; + f32 fStack84; + f32 fStack80; + undefined4 uStack76; + float afStack72 [16]; + xyzpoint *pxStack8; + + if (*param_2 < '\0') { + return param_1; + } + fStack88 = dword_80035C98; + fStack84 = dword_80035C9C; + uStack76 = dword_80035CA4; + fStack80 = dword_80035CA0; + puStackX0 = param_1; + iStackX8 = param_3; + pxStack104 = get_BONDdata_position(); + fStack120 = *(float *)(param_2 + 0x28); + fVar12 = *(float *)(param_2 + 0x24); + fStack156 = (float)DAT_80035ca8; + fStack148 = (float)DAT_80035cb0; + fStack152 = (float)DAT_80035cac; + fStack168 = DAT_80035cb4; + fStack164 = DAT_80035cb8; + fStack160 = DAT_80035cbc; + fStack172 = flt_80053EAC; + psStack176 = flareimage3; + pfStack184 = (float *)get_BONDdata_field_10CC(); + if (param_2[1] == '\x16') { + fStack108 = 50.00000000; + psStack176 = flareimage4; + } + else { + if (param_2[1] == '\x17') { + fStack108 = 10.00000000; + psStack176 = flareimage4; + uVar4 = get_random_value(); + uStack76 = (f32)((uint)uStack76 & 0xffffff00 | (uint)(byte)((char)(uVar4 % 0x32) + 0x96) + ); + uVar4 = get_random_value(); + if (uVar4 % 5 != 0) { + xStack100.x = *(float *)(param_2 + 4); + goto LAB_7f061fac; + } + uVar4 = get_random_value(); + cVar5 = -1 - (char)(uVar4 % 100); + uStack76 = (f32)CONCAT13(cVar5,CONCAT12(cVar5,uStack76._2_2_)); + } + else { + fStack108 = 30.00000000; + } + } + xStack100.x = *(float *)(param_2 + 4); +LAB_7f061fac: + xStack100.y = *(float *)(param_2 + 8); + xStack100.z = *(float *)(param_2 + 0xc); + if (0.00000000 < fStack120) { + xStack100.x = xStack100.x + fStack120 * *(float *)(param_2 + 0x10); + xStack100.y = xStack100.y + fStack120 * *(float *)(param_2 + 0x14); + xStack100.z = xStack100.z + fStack120 * *(float *)(param_2 + 0x18); + fVar7 = fStack120; + } + else { + fVar12 = fVar12 + fStack120; + fVar7 = 0.00000000; + } + if (*(float *)(param_2 + 0x1c) < fVar7 + fVar12) { + fVar12 = *(float *)(param_2 + 0x1c) - fVar7; + fVar7 = *(float *)(param_2 + 0x18); + } + else { + fVar7 = *(float *)(param_2 + 0x18); + } + fStack144 = *(float *)(param_2 + 0x14) * ((float)pxStack104->z - (xStack100.z + fVar12 * fVar7)) + - ((float)pxStack104->y - (*(float *)(param_2 + 0x14) * fVar12 + xStack100.y)) * + fVar7; + fStack140 = *(float *)(param_2 + 0x18) * + ((float)pxStack104->x - (xStack100.x + fVar12 * *(float *)(param_2 + 0x10))) - + ((float)pxStack104->z - (*(float *)(param_2 + 0x18) * fVar12 + xStack100.z)) * + *(float *)(param_2 + 0x10); + fStack136 = *(float *)(param_2 + 0x10) * + ((float)pxStack104->y - (xStack100.y + fVar12 * *(float *)(param_2 + 0x14))) - + ((float)pxStack104->x - (*(float *)(param_2 + 0x10) * fVar12 + xStack100.x)) * + *(float *)(param_2 + 0x14); + virtualAddress = pxStack104; + if (((fStack144 == 0.00000000) && (fStack140 == 0.00000000)) && (fStack136 == 0.00000000)) { + fStack144 = 0.00000000; + fStack136 = 0.00000000; + fStack140 = fStack108; + } + else { + guNormalize(&fStack144,&fStack140,&fStack136); + fStack144 = fStack144 * fStack108; + fStack140 = fStack140 * fStack108; + fStack136 = fStack136 * fStack108; + } + fStack132 = *(float *)(param_2 + 0x14) * fStack136 - fStack140 * *(float *)(param_2 + 0x18); + fStack128 = *(float *)(param_2 + 0x18) * fStack144 - fStack136 * *(float *)(param_2 + 0x10); + fStack124 = *(float *)(param_2 + 0x10) * fStack140 - fStack144 * *(float *)(param_2 + 0x14); + guNormalize(&fStack132,&fStack128,&fStack124); + fStack132 = fStack132 * fStack108; + fStack128 = fStack128 * fStack108; + fStack124 = fStack124 * fStack108; + if (param_2[1] == '\x16') { + proc_7F0BD6C4(8); + } + else { + proc_7F0BD6C4(4); + } + pxStack8 = virtualAddress; + proc_7F0BD6E0(); + init_something_copy_posdata_to_it(&xStack100,(int *)afStack72); + matrix_multiply_A1_by_F12(flt_80053EB0,extraout_a0,afStack72); + sub_GAME_7F058098(pfStack184,afStack72); + proc_7F058C9C((int)afStack72,(uint *)pxStack8); + virtualAddress->x = fStack88; + virtualAddress->y = fStack84; + virtualAddress->z = fStack80; + virtualAddress[1].x = uStack76; + virtualAddress[1].y = fStack88; + virtualAddress[1].z = fStack84; + virtualAddress[2].x = fStack80; + virtualAddress[2].y = uStack76; + virtualAddress[2].z = fStack88; + virtualAddress[3].x = fStack84; + virtualAddress[3].y = fStack80; + virtualAddress[3].z = uStack76; + virtualAddress[4].x = fStack88; + virtualAddress[4].y = fStack84; + virtualAddress[4].z = fStack80; + virtualAddress[5].x = uStack76; + cVar5 = param_2[1]; + if (cVar5 == '\x16') { + virtualAddress[5].y = fStack88; + virtualAddress[5].z = fStack84; + virtualAddress[6].x = fStack80; + virtualAddress[6].y = uStack76; + virtualAddress[6].z = fStack88; + virtualAddress[7].x = fStack84; + virtualAddress[7].y = fStack80; + virtualAddress[7].z = uStack76; + virtualAddress[8].x = fStack88; + virtualAddress[8].y = fStack84; + virtualAddress[8].z = fStack80; + virtualAddress[9].x = uStack76; + virtualAddress[9].y = fStack88; + virtualAddress[9].z = fStack84; + virtualAddress[10].x = fStack80; + virtualAddress[10].y = uStack76; + cVar5 = param_2[1]; + } + if (cVar5 == '\x17') { + fStack196 = *(float *)(param_2 + 0x10) * fVar12 + xStack100.x; + fStack192 = *(float *)(param_2 + 0x14) * fVar12 + xStack100.y; + fStack188 = *(float *)(param_2 + 0x18) * fVar12 + xStack100.z; + proc_7F058474(pfStack184,&fStack196); + fStack216 = fStack108 / 10.00000000; + fStack212 = fStack216; + proc_7F0780F0(&fStack216,extraout_f12,(float *)-fStack188); + if (fStack208 < 2.00000000) { + fStack208 = fStack208 * 0.50000000; + fStack196 = fStack196 * fStack208; + fStack192 = fStack192 * fStack208; + fStack188 = fStack188 * fStack208; + } + pfVar3 = (float *)get_BONDdata_field_10D4(); + proc_7F058474(pfVar3,&fStack196); + fStack196 = fStack196 - xStack100.x; + fStack192 = fStack192 - xStack100.y; + fStack156 = fStack196 * 10.00000000; + fStack188 = fStack188 - xStack100.z; + fStack152 = fStack192 * 10.00000000; + fStack148 = fStack188 * 10.00000000; + } + else { + fStack148 = fVar12 * 10.00000000; + fStack156 = *(float *)(param_2 + 0x10) * fStack148; + fStack152 = *(float *)(param_2 + 0x14) * fStack148; + fStack148 = *(float *)(param_2 + 0x18) * fStack148; + } + puVar2 = puStackX0; + *(short *)&virtualAddress->x = (short)(int)fStack144; + *(undefined2 *)((int)&virtualAddress->x + 2) = (short)(int)fStack140; + *(short *)&virtualAddress->y = (short)(int)fStack136; + bVar1 = psStack176->width; + *(undefined2 *)((int)&virtualAddress->z + 2) = 0; + *(ushort *)&virtualAddress->z = (ushort)bVar1 << 5; + *(short *)&virtualAddress[1].y = (short)(int)-fStack144; + *(undefined2 *)((int)&virtualAddress[1].y + 2) = (short)(int)-fStack140; + *(undefined2 *)&virtualAddress[2].x = 0; + *(undefined2 *)((int)&virtualAddress[2].x + 2) = 0; + *(short *)&virtualAddress[1].z = (short)(int)-fStack136; + *(short *)&virtualAddress[2].z = (short)(int)(fStack144 * flt_80053EB4 + fStack156); + *(undefined2 *)((int)&virtualAddress[2].z + 2) = + (short)(int)(fStack140 * flt_80053EB8 + fStack152); + *(short *)&virtualAddress[3].x = (short)(int)(fStack136 * flt_80053EBC + fStack148); + *(ushort *)&virtualAddress[3].y = (ushort)psStack176->width << 5; + *(short *)((int)&virtualAddress[3].y + 2) = (ushort)psStack176->height << 5; + *(short *)&virtualAddress[4].x = (short)(int)(fStack156 - fStack144 * flt_80053EC0); + *(undefined2 *)((int)&virtualAddress[4].x + 2) = + (short)(int)(fStack152 - fStack140 * flt_80053EC4); + fVar7 = flt_80053EC8; + *(undefined2 *)&virtualAddress[4].z = 0; + *(short *)&virtualAddress[4].y = (short)(int)(fStack148 - fStack136 * fVar7); + *(short *)((int)&virtualAddress[4].z + 2) = (ushort)psStack176->height << 5; + if (param_2[1] == '\x16') { + fVar7 = (float)pxStack104->x - xStack100.x; + fVar9 = (float)pxStack104->y - xStack100.y; + fVar11 = (float)pxStack104->z - xStack100.z; + fVar8 = (float)pxStack104->x - (*(float *)(param_2 + 0x10) * fVar12 + xStack100.x); + fVar10 = (float)pxStack104->y - (*(float *)(param_2 + 0x14) * fVar12 + xStack100.y); + fVar12 = (float)pxStack104->z - (*(float *)(param_2 + 0x18) * fVar12 + xStack100.z); + if (fVar8 * fVar8 + fVar10 * fVar10 + fVar12 * fVar12 < + fVar7 * fVar7 + fVar9 * fVar9 + fVar11 * fVar11) { + fStack168 = fStack156; + fStack172 = flt_80053ECC * flt_80053ED0; + fStack164 = fStack152; + fStack160 = fStack148; + } + *(short *)&virtualAddress[5].y = (short)(int)(fStack132 * fStack172 + fStack168); + *(undefined2 *)((int)&virtualAddress[5].y + 2) = + (short)(int)(fStack128 * fStack172 + fStack164); + *(short *)&virtualAddress[5].z = (short)(int)(fStack124 * fStack172 + fStack160); + *(ushort *)&virtualAddress[6].x = (ushort)flareimage5->width << 5; + *(short *)((int)&virtualAddress[6].x + 2) = (ushort)flareimage5->height << 5; + *(short *)&virtualAddress[6].z = (short)(int)(fStack168 - fStack132 * fStack172); + *(undefined2 *)((int)&virtualAddress[6].z + 2) = + (short)(int)(fStack164 - fStack128 * fStack172); + *(undefined2 *)&virtualAddress[7].y = 0; + *(undefined2 *)((int)&virtualAddress[7].y + 2) = 0; + *(short *)&virtualAddress[7].x = (short)(int)(fStack160 - fStack124 * fStack172); + *(short *)&virtualAddress[8].x = (short)(int)(fStack144 * fStack172 + fStack168); + *(undefined2 *)((int)&virtualAddress[8].x + 2) = + (short)(int)(fStack140 * fStack172 + fStack164); + *(undefined2 *)&virtualAddress[8].z = 0; + *(short *)&virtualAddress[8].y = (short)(int)(fStack136 * fStack172 + fStack160); + *(short *)((int)&virtualAddress[8].z + 2) = (ushort)flareimage5->height << 5; + *(short *)&virtualAddress[9].y = (short)(int)(fStack168 - fStack144 * fStack172); + *(undefined2 *)((int)&virtualAddress[9].y + 2) = + (short)(int)(fStack164 - fStack140 * fStack172); + *(short *)&virtualAddress[9].z = (short)(int)(fStack160 - fStack136 * fStack172); + bVar1 = flareimage5->width; + *(undefined2 *)((int)&virtualAddress[10].x + 2) = 0; + *(ushort *)&virtualAddress[10].x = (ushort)bVar1 << 5; + } + puVar6 = puStackX0 + 2; + puStackX0[1] = 0x2000; + *puStackX0 = 0xb6000000; + puStackX0 = puStackX0 + 4; + *puVar6 = 0x1020040; + uVar4 = osVirtualToPhysical(pxStack8); + puVar2[3] = uVar4; + if (param_2[1] == '\x16') { + append_image_to_DL((uint **)register0x000000ec,flareimage5,4,(longlong)iStackX8,2); + puVar2 = puStackX0; + *puStackX0 = 0x4700080; + puStackX0 = puStackX0 + 2; + uVar4 = osVirtualToPhysical(virtualAddress); + puVar2[1] = uVar4; + puStackX0[1] = 0x5454; + *puStackX0 = 0xb1000076; + puStackX0 = puStackX0 + 2; + append_image_to_DL((uint **)register0x000000ec,psStack176,4,(longlong)iStackX8,2); + puStackX0[1] = 0x3020; + *puStackX0 = 0xb1000013; + } + else { + append_image_to_DL((uint **)register0x000000ec,psStack176,4,(longlong)iStackX8,2); + puVar2 = puStackX0; + *puStackX0 = 0x4300040; + puStackX0 = puStackX0 + 2; + uVar4 = osVirtualToPhysical(virtualAddress); + puVar2[1] = uVar4; + puStackX0[1] = 0x3020; + *puStackX0 = 0xb1000013; + } + puStackX0 = puStackX0 + 2; + return puStackX0; +} + + + +void proc_7F062B00(char *param_1) + +{ + u32 uVar1; + float fVar2; + + if (-1 < *param_1) { + if (clock_timer < 3) { + *(float *)(param_1 + 0x28) = + *(float *)(param_1 + 0x28) + *(float *)(param_1 + 0x20) * global_timer_delta; + } + else { + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)(param_1 + 0x28) = + *(float *)(param_1 + 0x28) + + *(float *)(param_1 + 0x20) * (fVar2 * 0.00000000 * 0.50000000 + 2.00000000); + } + if (*(float *)(param_1 + 0x1c) <= *(float *)(param_1 + 0x28)) { + *param_1 = -1; + } + else { + *param_1 = *param_1 + '\x01'; + } + } + return; +} + + + +void proc_7F062BE4(undefined4 *param_1) + +{ + ITEM_IDS item; + undefined4 *puVar2; + undefined4 uVar3; + uint uVar4; + int iVar5; + ulonglong uVar1; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 *puVar6; + undefined4 *puVar7; + undefined4 *puVar8; + undefined4 *puVar9; + int iVar10; + HAND hand; + int iVar11; + undefined4 uStack68; + undefined4 uStack64; + undefined4 *puStack56; + undefined4 uStack20; + uint uStack16; + undefined4 uStack8; + + puVar2 = (undefined4 *)*param_1; + puVar9 = &DAT_80035cc0; + puVar6 = &uStack68; + do { + puVar8 = puVar9 + 3; + puVar7 = puVar6 + 3; + *puVar6 = *puVar9; + puVar6[1] = puVar9[1]; + puVar6[2] = puVar9[2]; + puVar9 = puVar8; + puVar6 = puVar7; + } while (puVar8 != (undefined4 *)0x80035cfc); + hand = HAND_RIGHT; + iVar11 = 0; + *puVar7 = uRam80035cfc; + do { + iVar10 = (int)&pPlayer->unknown + iVar11; + item = return_ammo_in_hand(hand); + if (*(char *)(iVar10 + 0x87f) != '\0') { + if (item != ITEM_WATCHLASER) { + puVar2 = proc_7F061E18(puVar2,(char *)(iVar10 + 0xa54),0); + } + if (((((item == ITEM_GOLDENGUN) || (item == ITEM_RUGER)) || (item == ITEM_KNIFE)) || + ((item == ITEM_THROWKNIFE || (item == ITEM_SILVERWPPK)))) || (item == ITEM_GOLDWPPK) + ) { + *puVar2 = 0xbc000002; + puVar2[1] = 0x80000040; + puVar2[2] = 0x3860010; + puVar2[3] = 0x80032448; + puVar2[4] = 0x3880010; + puVar2[5] = 0x80032440; + puVar2[6] = 0x3840010; + uVar3 = get_BONDdata_field_10E4(); + puVar2[7] = uVar3; + puVar2[8] = 0x3820010; + iVar5 = get_BONDdata_field_10E4(); + puVar2[9] = iVar5 + 0x10; + puVar2 = puVar2 + 10; + } + *puVar2 = 0xbc00000e; + puVar9 = puVar2 + 2; + uVar4 = proc_7F05997C(0.00000000,300.00000000); + puVar2[1] = uVar4; + if (0x10 < *(short *)(*(int *)(iVar10 + 0xb70) + 0xc)) { + iVar5 = *(int *)(*(int *)(iVar10 + 0xb70) + 8); + if (*(int *)(iVar5 + 0x40) != 0) { + puVar2 = (undefined4 *) + extract_id_from_object_structure_microcode + (iVar10 + 0xb68,*(ushort **)(iVar5 + 0x44)); + if (puVar2 != NULL) { + *puVar2 = 1; + } + if (item == ITEM_ROCKETLAUNCH) { + save_img_index_to_obj_ani_slot((int)&DAT_80075c10,crosshairimage); + puVar9 = (undefined4 *)process_monitor_animation_microcode(); + } + else { + puVar9 = (undefined4 *)process_monitor_animation_microcode(); + } + } + } + uStack20 = 4; + uStack16 = (uint)(byte)pPlayer->field_FDF | (uint)(byte)pPlayer->field_FDC << 0x18 | + (uint)(byte)pPlayer->field_FDD << 0x10 | (uint)(byte)pPlayer->field_FDE << 8; + uStack64 = 0; + puStack56 = puVar9; + proc_7F058C64(); + if ((item == ITEM_ROCKETLAUNCH) && (*(int *)(iVar10 + 0xa90) != 0)) { + uVar4 = *(uint *)(*(int *)(iVar10 + 0xa90) + 0x14); + subdraw((int)&uStack68,uVar4,extraout_a2_lo,extraout_a3_lo); + proc_7F08BD48(*(undefined4 **)(uVar4 + 0xc), + (int)*(short *)(*(int *)(uVar4 + 8) + 0xe)); + if (*(int *)(iVar10 + 0xa94) != 0) { + *(undefined4 *)(iVar10 + 0xa90) = 0; + } + } + iVar5 = check_special_attributes(item,0x400); + if (iVar5 != 0) { + puStack56[1] = 0x3000; + *puStack56 = 0xb6000000; + if (hand == HAND_RIGHT) { + uStack8 = 3; + puStack56 = puStack56 + 2; + } + else { + uStack8 = 2; + puStack56 = puStack56 + 2; + } + } + subdraw((int)&uStack68,iVar10 + 0xb68,extraout_a2_lo_00,extraout_a3_lo_00); + puVar9 = puStack56; + iVar5 = check_special_attributes(item,0x400); + if (iVar5 != 0) { + puVar9[1] = 0x3000; + *puVar9 = 0xb6000000; + puVar9 = puVar9 + 2; + } + proc_7F08BD48(*(undefined4 **)(iVar10 + 0xb74), + (int)*(short *)(*(int *)(iVar10 + 0xb70) + 0xe)); + proc_7F058C88(); + *puVar9 = 0xbc00000e; + puVar2 = puVar9 + 2; + uVar1 = get_80060824(); + puVar9[1] = (int)uVar1; + if (item == ITEM_WATCHLASER) { + puVar2 = proc_7F061E18(puVar2,(char *)(iVar10 + 0xa54),0); + } + } + hand += HAND_LEFT; + iVar11 += 0x3a8; + } while (hand != 2); + *(undefined4 **)param_1 = puVar2; + return; +} + + + +undefined4 * +set_enviro_fog_for_items_in_solo_watch_menu + (undefined4 *DL,longlong param_2,float *buffer,int param_4,int rgba) + +{ + ushort *partdesc; + xyzpoint *posdata; + Player *pPVar1; + ulonglong uVar2; + int iVar3; + float (*pafVar4) [4]; + short sVar6; + undefined4 uVar5; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + undefined4 uVar7; + int iVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + int weapon; + longlong lVar13; + object_header *objheader; + undefined4 *puStackX0; + float afStack292 [17]; + undefined auStack224 [128]; + undefined auStack96 [12]; + float (*pafStack84) [4]; + undefined4 uStack64; + undefined4 uStack60; + undefined4 *puStack52; + undefined4 uStack16; + int iStack12; + int iStack8; + + weapon = (int)param_2; + puVar11 = &DAT_80035d00; + puVar9 = &uStack64; + do { + puVar12 = puVar11 + 3; + puVar10 = puVar9 + 3; + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + puVar9[2] = puVar11[2]; + puVar11 = puVar12; + puVar9 = puVar10; + } while (puVar12 != (undefined4 *)0x80035d3c); + *puVar10 = uRam80035d3c; + if ((param_2 == 0x1e) || (param_2 == 0x17)) { + weapon = 0x3c; + } + proc_7F05DA8C(0,weapon); + uVar2 = proc_7F05CEBC(0); + if ((uVar2 != 0) && (iVar3 = get_itemtype_in_hand(HAND_RIGHT), pPVar1 = pPlayer, iVar3 != 0)) { + objheader = (object_header *)pPlayer->copy_of_body_obj_header; + iVar3 = get_ptr_weapon_model_header_line(weapon); + if ((iVar3 != 0) && + (pafVar4 = (float (*) [4])check_special_attributes(weapon,0x4000), pafVar4 == NULL)) { + proc_7F0BD714((int)*(short *)((int)pPVar1->copy_of_body_obj_header + 0xe) << 6); + lVar13 = 0; + iVar3 = 0; + if (0 < *(short *)((int)pPVar1->copy_of_body_obj_header + 0xe)) { + while( true ) { + guMtxIdentF_unrolled((float (*) [4] [4])((int)*pafVar4 + iVar3)); + iVar3 = (int)lVar13 + 1; + lVar13 = (longlong)iVar3; + if (*(short *)((int)pPVar1->copy_of_body_obj_header + 0xe) <= lVar13) break; + iVar3 *= 0x40; + } + } + lVar13 = 0; + pafStack84 = pafVar4; + set_objuse_flag_compute_grp_nums_set_obj_loaded(objheader); + proc_7F075F68((int)auStack96,(ushort **)objheader,auStack224); + proc_7F05E978((int)auStack96,0); + proc_7F05EA94((int)auStack96,1); + partdesc = *(ushort **)(pPVar1->copy_of_body_obj_header[2] + 4); + if ((partdesc != NULL) && + (puVar11 = (undefined4 *) + extract_id_from_object_structure_microcode((int)auStack96,partdesc), + puVar11 != NULL)) { + *puVar11 = 0; + } + proc_7F058020((float (*) [4] [4])buffer,pafVar4); + if ((item_related *)pPVar1->copy_of_body_obj_header[1] == &weapon_gun_revolver) { + iVar3 = *(int *)(pPVar1->copy_of_body_obj_header[2] + 0x10); + if (iVar3 == 0) { + iVar3 = *(int *)(pPVar1->copy_of_body_obj_header[2] + 0x14); + } + else { + init_something_copy_posdata_to_it(*(xyzpoint **)(iVar3 + 4),(int *)afStack292); + proc_7F0580C8(buffer,afStack292,(int)(pafVar4 + 0xc)); + iVar3 = *(int *)(pPVar1->copy_of_body_obj_header[2] + 0x14); + } + if (iVar3 == 0) { + iVar3 = pPVar1->copy_of_body_obj_header[2]; + } + else { + init_something_copy_posdata_to_it(*(xyzpoint **)(iVar3 + 4),(int *)afStack292); + proc_7F0580C8(buffer,afStack292,(int)(pafVar4 + 0x10)); + iVar3 = pPVar1->copy_of_body_obj_header[2]; + } + } + else { + iVar3 = pPVar1->copy_of_body_obj_header[2]; + } + partdesc = *(ushort **)(iVar3 + 0x18); + if (partdesc == NULL) { + partdesc = *(ushort **)(iVar3 + 0x1c); + } + else { + posdata = *(xyzpoint **)(partdesc + 2); + sVar6 = proc_7F06C570(partdesc,0); + init_something_copy_posdata_to_it(posdata,(int *)afStack292); + proc_7F0580C8(buffer,afStack292,(int)(pafVar4 + (int)sVar6 * 4)); + partdesc = *(ushort **)(pPVar1->copy_of_body_obj_header[2] + 0x1c); + } + if (partdesc == NULL) { + sVar6 = *(short *)(pPVar1->copy_of_body_obj_header + 3); + } + else { + posdata = *(xyzpoint **)(partdesc + 2); + sVar6 = proc_7F06C570(partdesc,0); + init_something_copy_posdata_to_it(posdata,(int *)afStack292); + proc_7F0580C8(buffer,afStack292,(int)(pafVar4 + (int)sVar6 * 4)); + sVar6 = *(short *)(pPVar1->copy_of_body_obj_header + 3); + } + iVar3 = 0; + if (0x12 < sVar6) { + iVar8 = pPVar1->copy_of_body_obj_header[2]; + while( true ) { + partdesc = *(ushort **)(iVar8 + iVar3 + 0x48); + if (partdesc == NULL) { + iVar8 = pPVar1->copy_of_body_obj_header[2]; + } + else { + puVar11 = (undefined4 *) + extract_id_from_object_structure_microcode + ((int)auStack96,partdesc); + if (puVar11 != NULL) { + *puVar11 = 1; + } + iVar8 = pPVar1->copy_of_body_obj_header[2]; + } + partdesc = *(ushort **)(iVar8 + iVar3 + 0x5c); + if ((partdesc != NULL) && + (puVar11 = (undefined4 *) + extract_id_from_object_structure_microcode + ((int)auStack96,partdesc), puVar11 != NULL)) { + *puVar11 = 1; + } + iVar3 += 4; + if (iVar3 == 0x14) break; + iVar8 = pPVar1->copy_of_body_obj_header[2]; + } + } + proc_7F06EFC4((int)auStack96); + if (((((weapon == 0x13) || (weapon == 0x12)) || (weapon == 2)) || + ((weapon == 3 || (weapon == 0x14)))) || (weapon == 0x15)) { + DL[1] = 0x80000040; + *DL = 0xbc000002; + DL[2] = 0x3860010; + DL[3] = 0x80032448; + DL[4] = 0x3880010; + DL[5] = 0x80032440; + DL[6] = 0x3840010; + uVar5 = get_BONDdata_field_10E4(); + DL[7] = uVar5; + puStackX0 = DL + 10; + DL[8] = 0x3820010; + weapon = get_BONDdata_field_10E4(); + DL[9] = weapon + 0x10; + sVar6 = *(short *)(pPVar1->copy_of_body_obj_header + 3); + uVar5 = extraout_a2_lo_00; + uVar7 = extraout_a3_lo_00; + } + else { + sVar6 = *(short *)(pPVar1->copy_of_body_obj_header + 3); + uVar5 = extraout_a2_lo; + uVar7 = extraout_a3_lo; + puStackX0 = DL; + } + if (((0x10 < sVar6) && (*(int *)(pPVar1->copy_of_body_obj_header[2] + 0x40) != 0)) && + (puVar11 = (undefined4 *) + extract_id_from_object_structure_microcode + ((int)auStack96, + *(ushort **)(pPVar1->copy_of_body_obj_header[2] + 0x44)), + uVar5 = extraout_a2_lo_01, uVar7 = extraout_a3_lo_01, puVar11 != NULL)) { + *puVar11 = 0; + } + puStack52 = puStackX0; + if (param_4 < 0xff) { + uStack16 = 5; + iStack8 = rgba; + iStack12 = param_4; + } + else { + uStack16 = 4; + iStack12 = rgba; + } + uStack60 = 0; + subdraw((int)&uStack64,(uint)auStack96,uVar5,uVar7); + DL = puStack52; + proc_7F058C64(); + weapon = 0; + if (0 < *(short *)((int)pPVar1->copy_of_body_obj_header + 0xe)) { + do { + proc_7F058020((float (*) [4] [4])((int)*pafStack84 + weapon), + (float (*) [4])afStack292); + proc_7F058C9C((int)afStack292,(uint *)(pafStack84 + (int)lVar13 * 4)); + lVar13 = (longlong)((int)lVar13 + 1); + weapon += 0x40; + } while (lVar13 < *(short *)((int)pPVar1->copy_of_body_obj_header + 0xe)); + } + proc_7F058C88(); + } + } + return DL; +} + + + +undefined4 * proc_7F0634D8(undefined4 *param_1,longlong param_2,float *param_3,int param_4) + +{ + undefined4 *puVar1; + + puVar1 = set_enviro_fog_for_items_in_solo_watch_menu(param_1,param_2,param_3,param_4,-0x100); + return puVar1; +} + + + +undefined4 * proc_7F0634FC(undefined4 *param_1,longlong param_2,float *param_3) + +{ + undefined4 *puVar1; + + puVar1 = proc_7F0634D8(param_1,param_2,param_3,0xff); + return puVar1; +} + + + +void proc_7F06351C(undefined4 *param_1,float *param_2,float *param_3,float *param_4, + undefined4 *param_5,float *param_6,float *param_7) + +{ + float afStack64 [16]; + + init_something_copy_posdata_to_it((xyzpoint *)param_1,(int *)param_7); + proc_7F058068(param_2,param_7); + proc_7F058068(param_3,param_7); + proc_7F058068(param_4,param_7); + init_something_copy_posdata_to_it((xyzpoint *)param_5,(int *)afStack64); + proc_7F058068(afStack64,param_7); + proc_7F058068(param_6,param_7); + return; +} + + + +undefined4 +proc_7F06359C(undefined4 param_1,float *param_2,longlong param_3,longlong param_4,int param_5, + char *param_6) + +{ + xyzpoint *posdata; + ushort *partdesc; + float fVar1; + ulonglong uVar2; + int iVar4; + longlong lVar3; + s32 sVar5; + u32 uVar6; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a0_03; + undefined8 extraout_a0_04; + undefined8 extraout_a0_05; + undefined8 extraout_a0_06; + undefined8 extraout_a0_07; + undefined8 extraout_a0_08; + undefined8 extraout_a0_09; + undefined8 extraout_a0_10; + undefined8 extraout_a0_11; + undefined8 extraout_a0_12; + undefined8 extraout_a0_13; + undefined8 extraout_a0_14; + undefined8 extraout_a0_15; + undefined8 extraout_a0_16; + undefined8 extraout_a0_17; + undefined8 extraout_a0_18; + undefined8 extraout_a0_19; + undefined8 extraout_a0_20; + undefined8 uVar7; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 *puVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + longlong lVar12; + float (*pafVar13) [4]; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f12_09; + float extraout_f12_10; + float extraout_f12_11; + float extraout_f12_12; + float extraout_f12_13; + float fVar14; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float extraout_f14_06; + float extraout_f14_07; + float extraout_f14_08; + float extraout_f14_09; + float extraout_f14_10; + float extraout_f14_11; + float extraout_f14_12; + float extraout_f14_13; + float fVar15; + int iStack1224; + undefined4 uStack1216; + undefined4 uStack1212; + undefined4 uStack1208; + undefined4 uStack1204; + undefined4 uStack1200; + undefined4 uStack1196; + undefined4 uStack1192; + float fStack1188; + undefined4 uStack1184; + undefined4 uStack1180; + undefined4 uStack1176; + undefined4 uStack1172; + undefined4 uStack1168; + undefined4 uStack1164; + undefined4 uStack1160; + float afStack1156 [16]; + undefined4 uStack1092; + undefined4 uStack1088; + undefined4 uStack1084; + undefined4 uStack1080; + undefined4 uStack1076; + undefined4 uStack1072; + undefined4 uStack1068; + undefined4 uStack1064; + undefined4 uStack1060; + undefined4 uStack1056; + float fStack1052; + undefined4 uStack1048; + undefined4 uStack1044; + undefined4 uStack1040; + undefined4 uStack1036; + undefined4 uStack1032; + float fStack1028; + undefined4 uStack1024; + undefined4 uStack1020; + undefined4 uStack1016; + undefined4 uStack1012; + undefined4 uStack1008; + float fStack1004; + undefined4 uStack1000; + undefined4 uStack996; + undefined4 uStack992; + undefined4 uStack988; + undefined4 uStack984; + float fStack980; + undefined4 uStack976; + undefined4 uStack972; + undefined4 uStack968; + undefined4 uStack964; + undefined4 uStack960; + float fStack956; + undefined4 uStack952; + undefined4 uStack948; + undefined4 uStack944; + undefined4 uStack940; + undefined4 uStack936; + float fStack932; + undefined4 uStack928; + undefined4 uStack924; + undefined4 uStack920; + undefined4 uStack916; + undefined4 uStack912; + undefined4 uStack908; + undefined4 uStack904; + undefined4 uStack900; + undefined4 uStack896; + undefined4 uStack892; + xyzpoint xStack888; + float afStack876 [16]; + float afStack812 [16]; + float afStack748 [16]; + float afStack684 [16]; + float afStack620 [16]; + float afStack556 [16]; + float afStack492 [16]; + float afStack428 [19]; + object_header *poStack352; + float afStack348 [16]; + float afStack284 [17]; + undefined auStack216 [120]; + undefined auStack96 [12]; + float (*pafStack84) [4]; + undefined4 uStack64; + undefined4 uStack60; + undefined4 uStack52; + undefined4 uStack16; + undefined4 uStack12; + undefined4 uStack8; + + puVar10 = &DAT_80035d40; + puVar8 = &uStack64; + do { + puVar11 = puVar10 + 3; + puVar9 = puVar8 + 3; + *puVar8 = *puVar10; + puVar8[1] = puVar10[1]; + puVar8[2] = puVar10[2]; + puVar10 = puVar11; + puVar8 = puVar9; + } while (puVar11 != (undefined4 *)0x80035d7c); + *puVar9 = uRam80035d7c; + proc_7F05DA8C(0,0x55); + uVar2 = proc_7F05CEBC(0); + if ((uVar2 != 0) && (iVar4 = get_itemtype_in_hand(HAND_RIGHT), iVar4 != 0)) { + poStack352 = (object_header *)pPlayer->copy_of_body_obj_header; + lVar3 = (longlong)(int)poStack352; + proc_7F0BD714((int)*(short *)((int)pPlayer->copy_of_body_obj_header + 0xe) << 6); + lVar12 = lVar3; + set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack352); + proc_7F075F68((int)auStack96,(ushort **)poStack352,auStack216); + pafVar13 = (float (*) [4])lVar3; + pafStack84 = pafVar13; + proc_7F058020((float (*) [4] [4])param_2,pafVar13); + iStack1224 = 4; + iVar4 = 1; + do { + posdata = *(xyzpoint **)(*(int *)(poStack352->offset_obj_offset_block + iStack1224) + 4) + ; + if (iVar4 == 2) { + sVar5 = get_cur_controller_horz_stick_pos(*param_6); + proc_7F058688((-(float)sVar5 * flt_80053ED4 * flt_80053ED8) / 360.00000000, + extraout_a0,afStack284); + sVar5 = get_cur_controller_vert_stick_pos(*param_6); + lVar12 = (longlong)sVar5; + proc_7F058570((-(float)sVar5 * flt_80053EDC * flt_80053EE0) / 360.00000000, + extraout_a0_00,afStack348); + proc_7F058068(afStack348,afStack284); + copies_first_3_floats_from_a0_to_a1_plus_0x30(posdata,(int)afStack284); + } + else { + init_something_copy_posdata_to_it(posdata,(int *)afStack284); + } + proc_7F0580C8(param_2,afStack284,(int)(pafVar13 + iVar4 * 4)); + iVar4 += 1; + iStack1224 += 4; + } while (iVar4 < 0xd); + proc_7F06EFC4((int)auStack96); + if (param_3 < 0xff) { + uStack16 = 5; + uStack12 = (undefined4)param_3; + uStack8 = 0xffffff00; + } + else { + uStack16 = 1; + } + uStack60 = 1; + uStack52 = param_1; + subdraw((int)&uStack64,(uint)auStack96,extraout_a2_lo,extraout_a3_lo); + param_1 = uStack52; + proc_7F058C64(); + puVar10 = (undefined4 *)lVar12; + lVar3 = 0; + iVar4 = 0; + if (0 < poStack352->num_object_grps) { + do { + proc_7F058020((float (*) [4] [4])((int)*pafStack84 + iVar4), + (float (*) [4])afStack284); + proc_7F058C9C((int)afStack284,(uint *)(pafStack84 + (int)lVar3 * 4)); + puVar10 = (undefined4 *)lVar12; + lVar3 = (longlong)((int)lVar3 + 1); + iVar4 += 0x40; + } while (lVar3 < poStack352->num_object_grps); + } + proc_7F058C88(); + if (param_4 != 0) { + iVar4 = 0; + partdesc = *(ushort **)(poStack352->offset_obj_offset_block + 0x34); + if (partdesc != NULL) { + puVar10 = (undefined4 *) + extract_id_from_object_structure_microcode((int)auStack96,partdesc); + *puVar10 = 0; + } + proc_7F0BD714((int)poStack352->num_object_grps << 6); + fVar1 = flt_80053EE4; + fVar14 = extraout_f12; + fVar15 = extraout_f14; + pafStack84 = (float (*) [4])puVar10; + do { + proc_7F059694(afStack812,fVar14,fVar15,-5.00000000,2000.00000000,-168.00000000, + -5.00000000,0.00000000,-168.00000000,0.00000000); + proc_7F059694((float *)(float (*) [4] [4])afStack428,extraout_f12_00,extraout_f14_00 + ,-5.00000000,2000.00000000,-168.00000000,-5.00000000,0.00000000, + -168.00000000,0.00000000); + guMtxIdentF_unrolled((float (*) [4] [4])afStack748); + guMtxIdentF_unrolled((float (*) [4] [4])afStack876); + proc_7F058020((float (*) [4] [4])afStack876,(float (*) [4])afStack620); + if (iVar4 == 2) { + xStack888.x = *(f32 *)(param_5 + 0x58); + xStack888.y = *(f32 *)(param_5 + 0x5c); + xStack888.z = *(f32 *)(param_5 + 0x60); + init_something_copy_posdata_to_it(&xStack888,(int *)afStack492); + sVar5 = get_cur_controller_horz_stick_pos(*param_6); + proc_7F058688((-(float)sVar5 * flt_80053EE8 * flt_80053EEC) / 360.00000000, + extraout_a0_01,afStack284); + sVar5 = get_cur_controller_vert_stick_pos(*param_6); + proc_7F058570((-(float)sVar5 * flt_80053EF0 * flt_80053EF4) / 360.00000000, + extraout_a0_02,afStack348); + proc_7F058068(afStack348,afStack284); + proc_7F058068(afStack492,afStack284); + proc_7F0580C8(afStack812,afStack284,(int)afStack556); + proc_7F058020((float (*) [4] [4])afStack556,(float (*) [4])(puVar10 + 0x20)); + fVar14 = extraout_f12_01; + fVar15 = extraout_f14_01; + } + else { + if (iVar4 == 0xb) { + uStack912 = DAT_80035d80; + uStack908 = DAT_80035d84; + uStack904 = DAT_80035d88; + uStack900 = *(undefined4 *)(param_5 + 0xc4); + uStack896 = *(undefined4 *)(param_5 + 200); + uStack892 = *(undefined4 *)(param_5 + 0xcc); + uVar6 = get_controller_buttons_held(*param_6,R_TRIG); + uVar7 = extraout_a0_03; + if (uVar6 != 0) { + proc_7F0585FC(flt_80053EF8,extraout_a0_03, + (float *)(float (*) [4] [4])afStack748); + uVar7 = extraout_a0_04; + } + proc_7F058570(flt_80053EFC,uVar7,afStack684); + proc_7F06351C(&uStack912,(float *)(float (*) [4] [4])afStack748,afStack684, + (float *)(float (*) [4] [4])afStack876,&uStack900,afStack812, + (float *)(float (*) [4] [4])afStack428); + proc_7F058020((float (*) [4] [4])afStack428,(float (*) [4])(puVar10 + 0xb0)) + ; + fVar14 = extraout_f12_02; + fVar15 = extraout_f14_02; + } + else { + if (iVar4 == 4) { + uStack936 = DAT_80035d8c; + fStack932 = DAT_80035d90; + uStack928 = DAT_80035d94; + uStack924 = *(undefined4 *)(param_5 + 0x70); + uStack920 = *(undefined4 *)(param_5 + 0x74); + uStack916 = *(undefined4 *)(param_5 + 0x78); + uVar6 = get_controller_buttons_held(*param_6,U_CBUTTONS); + if (uVar6 != 0) { + fStack932 = fStack932 + -10.00000000; + } + proc_7F058570(fVar1,extraout_a0_05,afStack684); + proc_7F06351C(&uStack936,(float *)(float (*) [4] [4])afStack748, + afStack684,(float *)(float (*) [4] [4])afStack876, + &uStack924,afStack812, + (float *)(float (*) [4] [4])afStack428); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0x40)); + fVar14 = extraout_f12_03; + fVar15 = extraout_f14_03; + } + else { + if (iVar4 == 5) { + uStack960 = DAT_80035d98; + fStack956 = DAT_80035d9c; + uStack952 = DAT_80035da0; + uStack948 = *(undefined4 *)(param_5 + 0x7c); + uStack944 = *(undefined4 *)(param_5 + 0x80); + uStack940 = *(undefined4 *)(param_5 + 0x84); + uVar6 = get_controller_buttons_held(*param_6,D_CBUTTONS); + if (uVar6 != 0) { + fStack956 = fStack956 + -10.00000000; + } + proc_7F058570(fVar1,extraout_a0_06,afStack684); + proc_7F06351C(&uStack960,(float *)(float (*) [4] [4])afStack748, + afStack684,(float *)(float (*) [4] [4])afStack876, + &uStack948,afStack812, + (float *)(float (*) [4] [4])afStack428); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0x50)); + fVar14 = extraout_f12_04; + fVar15 = extraout_f14_04; + } + else { + if (iVar4 == 6) { + uStack984 = DAT_80035da4; + fStack980 = DAT_80035da8; + uStack976 = DAT_80035dac; + uStack972 = *(undefined4 *)(param_5 + 0x88); + uStack968 = *(undefined4 *)(param_5 + 0x8c); + uStack964 = *(undefined4 *)(param_5 + 0x90); + uVar6 = get_controller_buttons_held(*param_6,L_CBUTTONS); + if (uVar6 != 0) { + fStack980 = fStack980 + -10.00000000; + } + proc_7F058570(fVar1,extraout_a0_07,afStack684); + proc_7F06351C(&uStack984,(float *)(float (*) [4] [4])afStack748, + afStack684,(float *)(float (*) [4] [4])afStack876, + &uStack972,afStack812, + (float *)(float (*) [4] [4])afStack428); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0x60)); + fVar14 = extraout_f12_05; + fVar15 = extraout_f14_05; + } + else { + if (iVar4 == 7) { + uStack1008 = DAT_80035db0; + fStack1004 = DAT_80035db4; + uStack1000 = DAT_80035db8; + uStack996 = *(undefined4 *)(param_5 + 0x94); + uStack992 = *(undefined4 *)(param_5 + 0x98); + uStack988 = *(undefined4 *)(param_5 + 0x9c); + uVar6 = get_controller_buttons_held(*param_6,R_CBUTTONS); + if (uVar6 != 0) { + fStack1004 = fStack1004 + -10.00000000; + } + proc_7F058570(fVar1,extraout_a0_08,afStack684); + proc_7F06351C(&uStack1008, + (float *)(float (*) [4] [4])afStack748, + afStack684, + (float *)(float (*) [4] [4])afStack876, + &uStack996,afStack812, + (float *)(float (*) [4] [4])afStack428); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0x70)); + fVar14 = extraout_f12_06; + fVar15 = extraout_f14_06; + } + else { + if (iVar4 == 9) { + uStack1032 = DAT_80035dbc; + fStack1028 = DAT_80035dc0; + uStack1024 = DAT_80035dc4; + uStack1020 = *(undefined4 *)(param_5 + 0xac); + uStack1016 = *(undefined4 *)(param_5 + 0xb0); + uStack1012 = *(undefined4 *)(param_5 + 0xb4); + uVar6 = get_controller_buttons_held(*param_6,B_BUTTON); + if (uVar6 != 0) { + fStack1028 = fStack1028 + -10.00000000; + } + proc_7F058570(fVar1,extraout_a0_09,afStack684); + proc_7F06351C(&uStack1032, + (float *)(float (*) [4] [4])afStack748, + afStack684, + (float *)(float (*) [4] [4])afStack876, + &uStack1020,afStack812, + (float *)(float (*) [4] [4])afStack428); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0x90)); + fVar14 = extraout_f12_07; + fVar15 = extraout_f14_07; + } + else { + if (iVar4 == 8) { + uStack1056 = DAT_80035dc8; + fStack1052 = DAT_80035dcc; + uStack1048 = DAT_80035dd0; + uStack1044 = *(undefined4 *)(param_5 + 0xa0); + uStack1040 = *(undefined4 *)(param_5 + 0xa4); + uStack1036 = *(undefined4 *)(param_5 + 0xa8); + uVar6 = get_controller_buttons_held + (*param_6,A_BUTTON); + if (uVar6 != 0) { + fStack1052 = fStack1052 + -10.00000000; + } + proc_7F058570(fVar1,extraout_a0_10,afStack684); + proc_7F06351C(&uStack1056, + (float *)(float (*) [4] [4])afStack748 + ,afStack684, + (float *)(float (*) [4] [4])afStack876 + ,&uStack1044,afStack812, + (float *)(float (*) [4] [4])afStack428 + ); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0x80)); + fVar14 = extraout_f12_08; + fVar15 = extraout_f14_08; + } + else { + if (iVar4 == 10) { + uStack1080 = DAT_80035dd4; + uStack1076 = DAT_80035dd8; + uStack1072 = DAT_80035ddc; + uStack1068 = *(undefined4 *)(param_5 + 0xb8); + uStack1064 = *(undefined4 *)(param_5 + 0xbc); + uStack1060 = *(undefined4 *)(param_5 + 0xc0); + uVar6 = get_controller_buttons_held + (*param_6,L_TRIG); + uVar7 = extraout_a0_11; + if (uVar6 != 0) { + proc_7F0585FC(flt_80053F00,extraout_a0_11, + (float *)(float (*) [4] [4]) + afStack748); + uVar7 = extraout_a0_12; + } + proc_7F058570(flt_80053F04,uVar7,afStack684); + proc_7F06351C(&uStack1080, + (float *)(float (*) [4] [4]) + afStack748,afStack684, + (float *)(float (*) [4] [4]) + afStack876,&uStack1068, + afStack812, + (float *)(float (*) [4] [4]) + afStack428); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0xa0)); + fVar14 = extraout_f12_09; + fVar15 = extraout_f14_09; + } + else { + if (iVar4 == 3) { + uStack1168 = DAT_80035de0; + uStack1164 = DAT_80035de4; + uStack1160 = DAT_80035de8; + uStack1092 = *(undefined4 *)(param_5 + 100); + uStack1088 = *(undefined4 *)(param_5 + 0x68) + ; + uStack1084 = *(undefined4 *)(param_5 + 0x6c) + ; + guMtxIdentF_unrolled + ((float (*) [4] [4])afStack1156); + uVar6 = get_controller_buttons_held + (*param_6,U_JPAD); + if (uVar6 == 0) { + uVar6 = get_controller_buttons_held + (*param_6,D_JPAD); + if (uVar6 != 0) { + proc_7F058570(flt_80053F0C, + extraout_a0_14, + (undefined4 *) + (float (*) [4] [4]) + afStack748); + } + extraout_a0_15._7_1_ = *param_6; + } + else { + proc_7F058570(flt_80053F08, + extraout_a0_13, + (undefined4 *) + (float (*) [4] [4]) + afStack748); + extraout_a0_15._7_1_ = *param_6; + } + uVar6 = get_controller_buttons_held + ((char)extraout_a0_15, + L_JPAD); + if (uVar6 == 0) { + uVar6 = get_controller_buttons_held + (*param_6,R_JPAD); + if (uVar6 != 0) { + proc_7F058688(flt_80053F14, + extraout_a0_16, + afStack1156); + } + } + else { + proc_7F058688(flt_80053F10, + extraout_a0_15,afStack1156 + ); + } + proc_7F058068(afStack1156, + (float *)(float (*) [4] [4]) + afStack748); + proc_7F058570(flt_80053F18,extraout_a0_17, + afStack684); + proc_7F06351C(&uStack1168, + (float *)(float (*) [4] [4]) + afStack748,afStack684 + ,(float *)(float (*) [4] [4]) + afStack876, + &uStack1092,afStack812, + (float *)(float (*) [4] [4]) + afStack428); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4]) + (puVar10 + 0x30)); + fVar14 = extraout_f12_10; + fVar15 = extraout_f14_10; + } + else { + if (iVar4 == 1) { + uStack1192 = DAT_80035dec; + fStack1188 = DAT_80035df0; + uStack1184 = DAT_80035df4; + uStack1180 = *(undefined4 *) + (param_5 + 0x4c); + uStack1176 = *(undefined4 *) + (param_5 + 0x50); + uStack1172 = *(undefined4 *) + (param_5 + 0x54); + uVar6 = get_controller_buttons_held + (*param_6,START_BUTTON + ); + if (uVar6 != 0) { + fStack1188 = fStack1188 + + -10.00000000; + } + proc_7F058570(fVar1,extraout_a0_18, + afStack684); + proc_7F06351C(&uStack1192, + (float *)(float (*) [4] [4 + ])afStack748,afStack684, + (float *)(float (*) [4] [4])afStack876,&uStack1180 + ,afStack812,(float *)(float (*) [4] [4])afStack428 + ); + proc_7F058020((float (*) [4] [4])afStack428, + (float (*) [4])(puVar10 + 0x10)); + fVar14 = extraout_f12_11; + fVar15 = extraout_f14_11; + } + else { + if (iVar4 == 0xc) { + uStack1216 = DAT_80035df8; + uStack1212 = DAT_80035dfc; + uStack1208 = DAT_80035e00; + uStack1204 = *(undefined4 *) + (param_5 + 0xd0); + uStack1200 = *(undefined4 *) + (param_5 + 0xd4); + uStack1196 = *(undefined4 *) + (param_5 + 0xd8); + uVar6 = get_controller_buttons_held + (*param_6,Z_TRIG); + uVar7 = extraout_a0_19; + if (uVar6 != 0) { + proc_7F058570(flt_80053F1C, + extraout_a0_19, + (undefined4 *) + (float (*) [4] [4]) + afStack748); + uVar7 = extraout_a0_20; + } + proc_7F058688(flt_80053F20,uVar7, + afStack684); + proc_7F06351C(&uStack1216, + (float *)(float (*) [4] [4]) + afStack748, + afStack684, + (float *)(float (*) [4] [4]) + afStack876, + &uStack1204,afStack812, + (float *)(float (*) [4] [4]) + afStack428); + proc_7F058020((float (*) [4] [4]) + afStack428, + (float (*) [4]) + (puVar10 + 0xc0)); + fVar14 = extraout_f12_12; + fVar15 = extraout_f14_12; + } + else { + proc_7F058020((float (*) [4] [4])param_2, + (float (*) [4]) + (puVar10 + iVar4 * 0x10)); + fVar14 = extraout_f12_13; + fVar15 = extraout_f14_13; + } + } + } + } + } + } + } + } + } + } + } + } + iVar4 += 1; + } while (iVar4 < 0xd); + proc_7F06EFC4((int)auStack96); + uStack52 = param_1; + subdraw((int)&uStack64,(uint)auStack96,extraout_a2_lo_00,extraout_a3_lo_00); + param_1 = uStack52; + proc_7F058C64(); + lVar12 = 0; + iVar4 = 0; + if (0 < poStack352->num_object_grps) { + do { + proc_7F058020((float (*) [4] [4])((int)pafStack84 + iVar4), + (float (*) [4])afStack284); + proc_7F058C9C((int)afStack284,(undefined4 *)pafStack84 + (int)lVar12 * 0x10); + lVar12 = (longlong)((int)lVar12 + 1); + iVar4 += 0x40; + } while (lVar12 < poStack352->num_object_grps); + } + proc_7F058C88(); + } + } + return param_1; +} + + + +undefined4 +proc_7F064364(undefined4 param_1,float *param_2,longlong param_3,int param_4,char *param_5) + +{ + undefined4 uVar1; + + uVar1 = proc_7F06359C(param_1,param_2,0xff,param_3,param_4,param_5); + return uVar1; +} + + + +undefined4 * proc_7F0643A0(void) + +{ + if (DAT_80075db8 == 0) { + return &DAT_80075db8; + } + if (DAT_80075dbc == 0) { + return &DAT_80075dbc; + } + if (DAT_80075dc0 == 0) { + return &DAT_80075dc0; + } + if (DAT_80075dc4 == 0) { + return &DAT_80075dc4; + } + return NULL; +} + + + +void recall_joy2_hits_edit_detail_edit_flag(void) + +{ + short sVar1; + hit_header **pphVar2; + ALPlayer_s *pAVar3; + undefined4 in_v0_lo; + int iVar4; + ALSndPlayer *data; + int in_a0_lo; + longlong lVar5; + char *in_a1_lo; + int in_a2_lo; + undefined4 *puVar6; + undefined4 *puVar7; + undefined **ppuVar8; + undefined **ppuVar9; + undefined *puStack68; + undefined *puStack64; + undefined2 uStack60; + undefined4 auStack56 [10]; + ALSndPlayer *pAStack16; + u32 uStack12; + u32 uStack8; + undefined4 uStack4; + + proc_7F0539E4((float *)(in_a1_lo + 8)); + uStack4 = in_v0_lo; + uStack8 = get_random_value(); + uStack12 = get_random_value(); + DAT_800483c4 = in_a2_lo; + iVar4 = get_debug_joy2hitsedit_flag(); + if (iVar4 == 0) { + get_debug_joy2detailedit_flag(); + } + if (((((in_a0_lo != 0x1d) && (in_a0_lo != 0x1c)) && (in_a0_lo != 0x1b)) && + (((in_a0_lo != 0x21 && (in_a0_lo != 0x2f)) && + ((in_a0_lo != 0x30 && ((in_a0_lo != 0x22 && (in_a0_lo != 0x17)))))))) && (in_a0_lo != 0x3c) + ) { + data = (ALSndPlayer *)proc_7F0643A0(); + if (data != NULL) { + pAStack16 = data; + if ((*in_a1_lo == '\x03') || (*in_a1_lo == '\x06')) { + if (in_a0_lo == 2) { + play_sfx_a1(ptr_sfx_buf,0x4a,data); + } + else { + if (in_a0_lo == 1) { + puStack64 = PTR_DAT_80035e2c; + uStack60 = PTR_DAT_80035e30._0_2_; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack68 + (uStack8 % 3) * 2 + 4), + data); + } + else { + puStack68 = PTR_DAT_80035e34; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack68 + (uStack8 & 1) * 2),data + ); + } + } + lVar5 = (longlong)(int)(pAStack16->node).next; + if (lVar5 != 0) { + music_related_36(lVar5,8,uStack4); + } + } + else { + if (in_a0_lo == 0x16) { + play_sfx_a1(ptr_sfx_buf,0x5b,data); + } + else { + ppuVar8 = &dword_80035E04; + puVar6 = auStack56; + do { + ppuVar9 = ppuVar8 + 3; + puVar7 = puVar6 + 3; + *(undefined **)puVar6 = *ppuVar8; + *(undefined **)(puVar6 + 1) = ppuVar8[1]; + *(undefined **)(puVar6 + 2) = ppuVar8[2]; + ppuVar8 = ppuVar9; + puVar6 = puVar7; + } while (ppuVar9 != (undefined **)0x80035e28); + *puVar7 = uRam80035e28; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)auStack56 + (uStack8 % 0x14) * 2),data); + } + lVar5 = (longlong)(int)(pAStack16->node).next; + if (lVar5 != 0) { + music_related_36(lVar5,8,uStack4); + } + } + } + pAStack16 = (ALSndPlayer *)proc_7F0643A0(); + if (((pAStack16 != NULL) && (-1 < in_a2_lo)) && + (pphVar2 = hit_header_array[*(uint *)(image_entries + in_a2_lo) >> 0x1c], pphVar2 != NULL + )) { + sVar1 = *(short *)(pphVar2 + 2); + if (0 < sVar1) { + if (sVar1 == 0) { + trap(0x1c00); + } + play_sfx_a1(ptr_sfx_buf, + *(short *)((int)&(*pphVar2)->pImageIDArray + (uStack12 % (int)sVar1) * 2 + ),pAStack16); + } + pAVar3 = (pAStack16->node).next; + if (pAVar3 != NULL) { + sub_GAME_7F053A10((int)pAVar3,(float *)(in_a1_lo + 8)); + } + } + } + return; +} + + + +void proc_7F064720(float *param_1) + +{ + ALPlayer_s *pAVar1; + ALSndPlayer *data; + + data = (ALSndPlayer *)proc_7F0643A0(); + if (data != NULL) { + play_sfx_a1(ptr_sfx_buf,0x46,data); + pAVar1 = (data->node).next; + if (pAVar1 != NULL) { + sub_GAME_7F053A10((int)pAVar1,param_1); + } + } + return; +} + + + +void recall_joy2_hits_edit_flag(int param_1,float *param_2,int param_3) + +{ + short sVar1; + ALPlayer_s *pAVar2; + hit_header **pphVar3; + ALSndPlayer *data; + undefined **ppuVar4; + undefined **ppuVar5; + undefined4 *puVar6; + undefined4 auStack88 [18]; + undefined *puStack16; + u32 uStack12; + u32 uStack8; + ALSndPlayer *pAStack4; + + uStack8 = get_random_value(); + uStack12 = get_random_value(); + DAT_800483c4 = param_3; + get_debug_joy2hitsedit_flag(); + data = (ALSndPlayer *)proc_7F0643A0(); + if (data != NULL) { + if (param_1 != 0x17) { + pAStack4 = data; + if (param_1 == 0x16) { + puStack16 = PTR_DAT_80035e38; + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack16 + (uStack8 & 1) * 2),data); + data = pAStack4; + } + else { + ppuVar4 = &PTR_DAT_80035e3c; + puVar6 = auStack88; + do { + ppuVar5 = ppuVar4 + 3; + *(undefined **)puVar6 = *ppuVar4; + *(undefined **)(puVar6 + 1) = ppuVar4[1]; + *(undefined **)(puVar6 + 2) = ppuVar4[2]; + ppuVar4 = ppuVar5; + puVar6 = puVar6 + 3; + } while (ppuVar5 != &PTR_DAT_80035e84); + play_sfx_a1(ptr_sfx_buf,*(short *)((int)auStack88 + (uStack8 % 0x24) * 2),data); + data = pAStack4; + } + } + pAVar2 = (data->node).next; + if (pAVar2 != NULL) { + sub_GAME_7F053A10((int)pAVar2,param_2); + } + } + data = (ALSndPlayer *)proc_7F0643A0(); + if ((data != NULL) && (-1 < param_3)) { + pphVar3 = hit_header_array[*(uint *)(image_entries + param_3) >> 0x1c]; + sVar1 = *(short *)(pphVar3 + 2); + if (0 < sVar1) { + if (pphVar3 != NULL) { + if (sVar1 == 0) { + trap(0x1c00); + } + pAStack4 = data; + play_sfx_a1(ptr_sfx_buf, + *(short *)((int)&(*pphVar3)->pImageIDArray + (uStack12 % (int)sVar1) * 2 + ),data); + data = pAStack4; + } + pAVar2 = (data->node).next; + if (pAVar2 != NULL) { + sub_GAME_7F053A10((int)pAVar2,param_2); + } + } + } + return; +} + + + +void proc_7F064934(longlong param_1) + +{ + u32 uVar1; + undefined *puStack12; + undefined *puStack8; + undefined2 uStack4; + + if ((param_1 != 0x16) && (param_1 != 0x17)) { + puStack12 = PTR_DAT_80035e84; + puStack8 = PTR_DAT_80035e88; + uStack4 = PTR_DAT_80035e8c._0_2_; + uVar1 = get_random_value(); + play_sfx_a1(ptr_sfx_buf,*(short *)((int)&puStack12 + (uVar1 % 5) * 2),NULL); + } + return; +} + + + +undefined4 proc_7F0649AC(longlong param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +void proc_7F0649D8(int param_1) + +{ + ITEM_IDS item; + int iVar1; + weapon_stats *pwVar2; + int iVar3; + int *piVar4; + + piVar4 = &pPlayer->unknown + param_1 * 0xea; + item = get_item_in_hand(param_1); + iVar3 = piVar4[0x227]; + iVar1 = get_ammo_in_hands_weapon(param_1); + pwVar2 = get_ptr_item_statistics(item); + iVar1 += iVar3; + if ((longlong)iVar1 < (longlong)pwVar2->mag_size) { + piVar4[0x227] = iVar1; + } + else { + piVar4[0x227] = (int)pwVar2->mag_size; + } + iVar1 = check_special_attributes(item,0x200000); + if (iVar1 == 0) { + (&pPlayer->unknown + pwVar2->ammotype)[0x44c] = + ((&pPlayer->unknown + pwVar2->ammotype)[0x44c] - piVar4[0x227]) + iVar3; + } + else { + pPlayer->ammoheldarr[pwVar2->ammotype] = 0; + } + if (item == ITEM_ROCKETLAUNCH) { + proc_7F05FA7C(param_1); + } + else { + if ((item == ITEM_SHOTGUN) || (item == ITEM_AUTOSHOT)) { + iVar3 = get_ammo_in_hands_weapon(param_1); + if (iVar3 < 5) { + piVar4[0x229] = iVar3; + } + else { + piVar4[0x229] = 5; + } + } + } + return; +} + + +/* +Unable to decompile 'handle_weapon_id_values_possibly_1st_person_animation' +Cause: Exception while decompiling 7f064b28: process: timeout + +*/ + + +void proc_7F066E64(void) + +{ + longlong lVar1; + u8 *text; + + lVar1 = proc_7F08CF0C(); + if (lVar1 == 0) { + text = get_textptr_for_textID(0x98d9); + display_string_in_lower_left_corner((char *)text); + proc_7F05D690(); + } + else { + text = get_textptr_for_textID(0x98d8); + display_string_in_lower_left_corner((char *)text); + pPlayer->copiedgoldeneye = 1; + play_sfx_a1(ptr_sfx_buf,0xf5,NULL); + draw_item_in_hand_has_more_ammo(HAND_RIGHT,ITEM_GOLDENEYEKEY); + draw_item_in_hand_has_more_ammo(HAND_LEFT,ITEM_UNARMED); + } + return; +} + + + +int get_keyanalyzer_flag(void) + +{ + return pPlayer->copiedgoldeneye; +} + + + +void proc_7F066F08(void) + +{ + int iVar1; + + add_ammo_to_inventory(AMMO_KNIFE,2,0,1); + add_ammo_to_inventory(AMMO_GRENADE,2,0,1); + add_item_to_inventory(ITEM_SNIPERRIFLE); + set_sound_effect_for_weapontype_collection(ITEM_SNIPERRIFLE); + display_text_for_weapon_in_lower_left_corner(ITEM_SNIPERRIFLE); + iVar1 = check_cur_player_ammo_amount_in_inventory(GsniperrifleZ_stats.ammotype); + give_cur_player_ammo(GsniperrifleZ_stats.ammotype,iVar1 + GsniperrifleZ_stats.mag_size); + proc_7F08C61C(0x2c); + draw_item_in_hand_has_more_ammo(HAND_RIGHT,ITEM_SNIPERRIFLE); + draw_item_in_hand_has_more_ammo(HAND_LEFT,ITEM_UNARMED); + return; +} + + + +f32 get_vertical_position_solo_watch_menu_main_page_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].watch_pos_x; +} + + + +f32 get_lateral_position_solo_watch_menu_main_page_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].watch_pos_y; +} + + + +f32 get_depth_on_solo_watch_menu_page_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].watch_pos_z; +} + + + +f32 get_zrotation_solo_watch_menu_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].x_rotation; +} + + + +f32 get_xrotation_solo_watch_menu_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].y_rotation; +} + + + +f32 get_45_degree_angle(void) + +{ + return 45.00000000; +} + + + +int get_ptr_first_title_line_item(int item) + +{ + u8 *puVar1; + + puVar1 = get_textptr_for_textID((&gitem_structs)[item].upper_watch_text); + return (int)puVar1; +} + + + +int get_ptr_second_title_line_item(int item) + +{ + u8 *puVar1; + + puVar1 = get_textptr_for_textID((&gitem_structs)[item].lower_watch_text); + return (int)puVar1; +} + + + +int get_ptr_short_watch_text_for_item(int item) + +{ + u8 *puVar1; + + puVar1 = get_textptr_for_textID((&gitem_structs)[item].watch_equipment_text); + return (int)puVar1; +} + + + +int get_ptr_long_watch_text_for_item(int item) + +{ + u8 *puVar1; + + puVar1 = get_textptr_for_textID((&gitem_structs)[item].weapon_of_choice_text); + return (int)puVar1; +} + + + +f32 get_45_degree_angle_0(void) + +{ + return 45.00000000; +} + + + +f32 get_horizontal_offset_on_solo_watch_menu_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].equip_watch_x; +} + + + +f32 get_vertical_offset_on_solo_watch_menu_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].equip_watch_y; +} + + + +f32 get_depth_offset_solo_watch_menu_inventory_page_for_item(int item) + +{ + return (f32)(&gitem_structs)[item].equip_watch_z; +} + + + +undefined4 proc_7F067174(int param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +void proc_7F0671A4(void) + +{ + ITEM_IDS item; + ITEM_IDS item_00; + weapon_stats *pwVar2; + weapon_stats *pwVar3; + longlong lVar1; + float fVar4; + float fVar5; + + item = get_item_in_hand(0); + item_00 = get_item_in_hand(1); + pwVar2 = get_ptr_item_statistics(item); + pwVar3 = get_ptr_item_statistics(item_00); + if ((item != ITEM_UNARMED) && (lVar1 = get_hands_firing_status(0), lVar1 != 0)) { + *(float *)&pPlayer->noise = (float)pPlayer->noise + pwVar2->field_0x5c; + if (pwVar2->loudness2 < (float)pPlayer->noise) { + *(float *)&pPlayer->noise = pwVar2->loudness2; + } + } + if ((item_00 != ITEM_UNARMED) && (lVar1 = get_hands_firing_status(1), lVar1 != 0)) { + *(float *)&pPlayer->field_E28 = (float)pPlayer->field_E28 + pwVar3->field_0x5c; + if (pwVar3->loudness2 < (float)pPlayer->field_E28) { + *(float *)&pPlayer->field_E28 = pwVar3->loudness2; + } + } + fVar5 = (pwVar2->field_0x5c * global_timer_delta) / (pwVar2->field_0x60 * 60.00000000); + fVar4 = (((float)pPlayer->noise - pwVar2->loudness) * global_timer_delta) / + (pwVar2->field_0x64 * 60.00000000); + if (fVar4 <= fVar5) { + fVar4 = fVar5; + } + *(float *)&pPlayer->noise = (float)pPlayer->noise - fVar4; + if ((float)pPlayer->noise < pwVar2->loudness) { + *(float *)&pPlayer->noise = pwVar2->loudness; + } + fVar5 = (pwVar3->field_0x5c * global_timer_delta) / (pwVar3->field_0x60 * 60.00000000); + fVar4 = (((float)pPlayer->field_E28 - pwVar3->loudness) * global_timer_delta) / + (pwVar3->field_0x64 * 60.00000000); + if (fVar4 <= fVar5) { + fVar4 = fVar5; + } + *(float *)&pPlayer->field_E28 = (float)pPlayer->field_E28 - fVar4; + if ((float)pPlayer->field_E28 < pwVar3->loudness) { + *(float *)&pPlayer->field_E28 = pwVar3->loudness; + } + return; +} + + + +ulonglong proc_7F0673B4(int param_1) + +{ + bool bVar1; + ITEM_IDS weapon; + AMMOTYPES AVar2; + + weapon = get_item_in_hand(param_1); + AVar2 = get_ammo_type_for_weapon(weapon); + bVar1 = AVar2 == 0; + if (!bVar1) { + bVar1 = 0 < (&pPlayer->right_weapon_ammo_in_magazine)[param_1 * 0xea]; + } + return (ulonglong)bVar1; +} + + + +void proc_7F067420(int param_1) + +{ + Player *pPVar1; + uint uVar2; + int iVar4; + ITEM_IDS IVar5; + ITEM_IDS IVar6; + ulonglong uVar3; + byte abStack24 [4]; + uint uStack20; + ITEM_IDS IStack16; + ITEM_IDS IStack12; + int aiStack8 [2]; + + aiStack8[0] = DAT_80035e9c; + aiStack8[1] = DAT_80035ea0; + pPlayer->field_FD0 = pPlayer->field_FCC; + pPlayer->field_FCC = param_1; + iVar4 = pPlayer->field_FCC; + if ((iVar4 == 0) && (pPlayer->field_FD0 != 0)) { + pPlayer->field_FC8 = 1; + iVar4 = pPlayer->field_FCC; + } + if (iVar4 == 0) { + pPlayer->field_FD4 = 0; + } + else { + IStack12 = get_item_in_hand(0); + IStack16 = get_item_in_hand(1); + pPlayer->field_FD4 = pPlayer->field_FD4 + clock_timer; + if ((IStack12 == ITEM_UNARMED) || (IStack16 == ITEM_UNARMED)) { + IVar5 = get_item_in_hand(pPlayer->field_FD8); + if ((IVar5 == ITEM_UNARMED) && + (IVar5 = get_item_in_hand(1 - pPlayer->field_FD8), IVar5 != ITEM_UNARMED)) { + pPlayer->field_FD8 = 1 - pPlayer->field_FD8; + } + aiStack8[pPlayer->field_FD8] = 1; + aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 0; + } + else { + iVar4 = check_special_attributes(IStack12,0x80); + if ((iVar4 == 0) || (iVar4 = check_special_attributes(IStack16,0x80), iVar4 == 0)) { + iVar4 = check_special_attributes(IStack12,0x80); + if ((iVar4 == 0) && (iVar4 = check_special_attributes(IStack16,0x80), iVar4 == 0)) { + if (pPlayer->field_FD4 < 0x1f) { + if ((pPlayer->field_FD0 == 0) && + ((uVar3 = proc_7F0673B4(1 - pPlayer->field_FD8), uVar3 != 0 || + (uVar3 = proc_7F0673B4(pPlayer->field_FD8), uVar3 == 0)))) { + pPlayer->field_FD8 = 1 - pPlayer->field_FD8; + } + aiStack8[pPlayer->field_FD8] = 1; + aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 0; + } + else { + aiStack8[pPlayer->field_FD8] = 1; + uVar3 = proc_7F0673B4(1 - pPlayer->field_FD8); + if ((uVar3 != 0) || + (*(int *)((int)pPlayer + pPlayer->field_FD8 * -0x3a8 + 0xc28) != 0)) { + aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 1; + } + } + } + else { + if (pPlayer->field_FD4 < 0x1f) { + iVar4 = check_special_attributes(IStack12,0x80); + uStack20 = (uint)(iVar4 == 0); + uVar3 = proc_7F0673B4((uint)(iVar4 == 0)); + uVar2 = uStack20; + if ((uVar3 == 0) && + (iVar4 = 1 - uStack20, (&pPlayer->field_880)[uStack20 * 0xea] == 0)) { + uVar3 = proc_7F0673B4(iVar4); + if ((uVar3 == 0) && + (*(int *)((int)pPlayer + uVar2 * -0x3a8 + 0xc28) == 0)) { + pPlayer->field_FD8 = 1 - pPlayer->field_FD8; + } + else { + pPlayer->field_FD8 = iVar4; + } + } + else { + pPlayer->field_FD8 = uStack20; + } + aiStack8[pPlayer->field_FD8] = 1; + aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 0; + } + else { + aiStack8[pPlayer->field_FD8] = 1; + uVar3 = proc_7F0673B4(1 - pPlayer->field_FD8); + if ((uVar3 != 0) || + (*(int *)((int)pPlayer + pPlayer->field_FD8 * -0x3a8 + 0xc28) != 0)) { + aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 1; + } + } + } + } + else { + if (pPlayer->field_FD4 < 0x15) { + if ((pPlayer->field_FD0 == 0) && + ((uVar3 = proc_7F0673B4(1 - pPlayer->field_FD8), uVar3 != 0 || + (uVar3 = proc_7F0673B4(pPlayer->field_FD8), uVar3 == 0)))) { + pPlayer->field_FD8 = 1 - pPlayer->field_FD8; + } + aiStack8[pPlayer->field_FD8] = 1; + aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 0; + } + else { + aiStack8[pPlayer->field_FD8] = 1; + uVar3 = proc_7F0673B4(1 - pPlayer->field_FD8); + if ((uVar3 != 0) || + (*(int *)((int)pPlayer + pPlayer->field_FD8 * -0x3a8 + 0xc28) != 0)) { + aiStack8[pPlayer->field_FD8 * 0x3fffffff + 1] = 1; + } + } + } + } + } + handle_weapon_id_values_possibly_1st_person_animation(0,aiStack8[0]); + handle_weapon_id_values_possibly_1st_person_animation(1,aiStack8[1]); + used_to_load_1st_person_model_on_demand(0); + used_to_load_1st_person_model_on_demand(1); + proc_7F0671A4(); + if (pPlayer->field_FE0 == 0) { + iVar4 = get_curplayer_positiondata(); + proc_7F04009C(iVar4,abStack24); + proc_7F040310((byte *)&pPlayer->field_FDC,abStack24); + } + else { + iVar4 = get_curplayer_positiondata(); + proc_7F04009C(iVar4,(byte *)&pPlayer->field_FDC); + pPlayer->field_FE0 = 0; + } + IVar5 = get_item_in_hand(0); + IVar6 = get_item_in_hand(1); + proc_7F08D9EC(IVar5,IVar6); + pPVar1 = pPlayer; + if (-1 < pPlayer->field_1270) { + pPlayer->field_1270 = pPlayer->field_1270 + clock_timer; + if (pPlayer->field_1270 < 300) { + if ((((ALLink_s *)pPVar1->field_A44 == NULL) || + (uVar3 = sfxGetArg0Unk3F((ALLink_s *)pPVar1->field_A44), uVar3 == 0)) && + (iVar4 = get_controls_locked_flag(), iVar4 == 0)) { + play_sfx_a1(ptr_sfx_buf,0xf6,(ALSndPlayer *)&pPVar1->field_A44); + } + } + else { + pPlayer->field_1270 = -1; + if (((ALLink_s *)pPVar1->field_A44 != NULL) && + (uVar3 = sfxGetArg0Unk3F((ALLink_s *)pPVar1->field_A44), uVar3 != 0)) { + sfxDeactivate(pPVar1->field_A44); + } + } + } + return; +} + + + +void proc_7F067AA4(int param_1) + +{ + pPlayer->field_FE4 = param_1; + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F067AB4(void) + +{ + float *in_a0_lo; + f32 fVar1; + + fVar1 = proc_7F05DCB8(0); + *(float *)&pPlayer->field_A38 = (float)fVar1 + *in_a0_lo; + *(float *)&pPlayer->field_A3C = in_a0_lo[1]; + *(float *)&pPlayer->field_A40 = in_a0_lo[2]; + fVar1 = proc_7F05DCB8(1); + *(float *)&pPlayer->field_DE0 = (float)fVar1 + *in_a0_lo; + *(float *)&pPlayer->field_DE4 = in_a0_lo[1]; + *(float *)&pPlayer->field_DE8 = in_a0_lo[2]; + return; +} + + + +void proc_7F067B4C(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = *param_1; + pPlayer->left_item_related1 = iVar1; + pPlayer->field_FB4 = iVar1; + iVar1 = param_1[1]; + pPlayer->left_item_related2 = iVar1; + pPlayer->field_FB8 = iVar1; + iVar1 = param_1[2]; + pPlayer->left_item_related3 = iVar1; + pPlayer->field_FBC = iVar1; + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void caclulate_gun_crosshair_position_rotation(void) + +{ + int iVar1; + float in_a2_lo; + float in_a3_lo; + f32 fVar2; + float fVar3; + float fVar4; + float in_f12; + float extraout_f12; + float in_f14; + float afStack24 [3]; + f32 fStack12; + f32 fStack8; + int iStack4; + + fStack8 = getPlayer_c_screenwidth(); + fStack12 = getPlayer_c_screenheight(); + if (in_a2_lo != (float)pPlayer->field_FF8) { + pPlayer->field_FF0 = + (pPlayer->field_FF0 * (1.00000000 - (float)pPlayer->field_FF8)) / + (1.00000000 - in_a2_lo); + pPlayer->field_FF4 = + (pPlayer->field_FF4 * (1.00000000 - (float)pPlayer->field_FF8)) / + (1.00000000 - in_a2_lo); + *(float *)&pPlayer->field_FF8 = in_a2_lo; + } + if (in_a3_lo != (float)pPlayer->field_100C) { + pPlayer->field_1004 = + (pPlayer->field_1004 * (1.00000000 - (float)pPlayer->field_100C)) / + (1.00000000 - in_a3_lo); + pPlayer->field_1008 = + (pPlayer->field_1008 * (1.00000000 - (float)pPlayer->field_100C)) / + (1.00000000 - in_a3_lo); + *(float *)&pPlayer->field_100C = in_a3_lo; + } + iVar1 = 0; + if (0 < clock_timer) { + do { + iVar1 += 1; + pPlayer->field_FF0 = pPlayer->field_FF0 * in_a2_lo + in_f12; + pPlayer->field_FF4 = pPlayer->field_FF4 * in_a2_lo + in_f14; + } while (iVar1 < clock_timer); + } + fVar4 = (float)fStack8 * 0.50000000; + pPlayer->field_FE8 = + pPlayer->field_FF0 * (1.00000000 - in_a2_lo) * (float)fStack8 * 0.50000000 + fVar4; + pPlayer->field_FEC = + pPlayer->field_FF4 * (1.00000000 - in_a2_lo) * (float)fStack12 * 0.50000000 + + (float)fStack12 * 0.50000000; + if (pPlayer->field_FE8 < 3.00000000) { + pPlayer->field_FE8 = 3.00000000; + } + else { + if (pPlayer->field_FE8 <= (float)fStack8 - 4.00000000) { + fVar3 = pPlayer->field_FEC; + goto LAB_7f067db8; + } + pPlayer->field_FE8 = (float)fStack8 - 4.00000000; + } + fVar3 = pPlayer->field_FEC; +LAB_7f067db8: + if (fVar3 < 3.00000000) { + pPlayer->field_FEC = 3.00000000; + } + else { + if ((float)fStack12 - 4.00000000 < fVar3) { + pPlayer->field_FEC = (float)fStack12 - 4.00000000; + } + } + iStack4 = 0; + fVar2 = getPlayer_c_screenleft(); + pPlayer->field_FE8 = pPlayer->field_FE8 + (float)fVar2; + fVar2 = getPlayer_c_screentop(); + pPlayer->field_FEC = pPlayer->field_FEC + (float)fVar2; + iVar1 = iStack4; + if (0 < clock_timer) { + do { + iVar1 += 1; + pPlayer->field_1004 = pPlayer->field_1004 * in_a3_lo + in_f12; + pPlayer->field_1008 = pPlayer->field_1008 * in_a3_lo + in_f14; + } while (iVar1 < clock_timer); + } + pPlayer->field_FFC = + pPlayer->field_1004 * (1.00000000 - in_a3_lo) * (float)fStack8 * 0.50000000 + fVar4; + pPlayer->field_1000 = + pPlayer->field_1008 * (1.00000000 - in_a3_lo) * (float)fStack12 * 0.50000000 + + (float)fStack12 * 0.50000000; + fVar2 = getPlayer_c_screenleft(); + pPlayer->field_FFC = pPlayer->field_FFC + (float)fVar2; + fVar2 = getPlayer_c_screentop(); + pPlayer->field_1000 = pPlayer->field_1000 + (float)fVar2; + proc_7F077EEC(&pPlayer->field_FFC,afStack24,extraout_f12); + proc_7F067AB4(); + return; +} + + + +void proc_7F067F58(undefined4 param_1,undefined4 param_2) + +{ + ITEM_IDS item; + + item = get_item_in_hand(0); + get_ptr_item_statistics(item); + caclulate_gun_crosshair_position_rotation(); + return; +} + + + +void proc_7F067FBC(undefined4 param_1,undefined4 param_2) + +{ + ITEM_IDS item; + + item = get_item_in_hand(0); + get_ptr_item_statistics(item); + caclulate_gun_crosshair_position_rotation(); + return; +} + + + +void proc_7F068008(undefined4 *param_1,undefined4 *param_2) + +{ + *(float *)param_1 = pPlayer->field_FE8; + *(float *)param_2 = pPlayer->field_FEC; + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F06802C(void) + +{ + f32 fVar1; + f32 fVar2; + float fVar3; + float extraout_f12; + float afStack12 [3]; + + fVar1 = getPlayer_c_screenleft(); + fVar2 = getPlayer_c_screenwidth(); + fVar3 = (float)fVar2 * 0.50000000 + (float)fVar1; + pPlayer->field_FE8 = fVar3; + pPlayer->field_FFC = fVar3; + fVar1 = getPlayer_c_screentop(); + fVar2 = getPlayer_c_screenheight(); + fVar3 = (float)fVar2 * 0.50000000 + (float)fVar1; + pPlayer->field_FEC = fVar3; + pPlayer->field_1000 = fVar3; + proc_7F077EEC(&pPlayer->field_FFC,afStack12,extraout_f12); + proc_7F067AB4(); + return; +} + + + +void proc_7F0680D4(float *param_1) + +{ + float fStack12; + float fStack8; + float fStack4; + + pPlayer->field_1010 = *param_1; + *(float *)&pPlayer->holds_neg_pi = param_1[1]; + pPlayer->field_1018 = param_1[2]; + proc_7F058714(param_1,(float *)&pPlayer->field_101C); + fStack12 = (float)pPlayer->field_103C * 1000.00000000; + fStack8 = (float)pPlayer->field_1040 * 1000.00000000; + fStack4 = (float)pPlayer->field_1044 * 1000.00000000; + proc_7F077FF4(&fStack12,&pPlayer->field_FE8); + pPlayer->field_FFC = pPlayer->field_FE8; + pPlayer->field_1000 = pPlayer->field_FEC; + proc_7F067AB4(); + return; +} + + + +void proc_7F068190(undefined4 *param_1,float *param_2) + +{ + float in_f12; + + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + proc_7F077EEC(&pPlayer->field_FE8,param_2,in_f12); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F0681CC(void) + +{ + ITEM_IDS item; + weapon_stats *pwVar1; + ITEM_IDS item_00; + int iVar2; + u32 uVar3; + u32 uVar4; + undefined4 *in_a0_lo; + float *in_a1_lo; + HAND in_a2_lo; + float in_f0; + f32 fVar5; + f32 fVar6; + float fVar7; + float extraout_f12; + float fVar8; + float fStack16; + float fStack8; + float fStack4; + + item = get_item_in_hand(in_a2_lo); + pwVar1 = get_ptr_item_statistics(item); + fStack16 = pwVar1->inaccuracy; + item_00 = return_ammo_in_hand(in_a2_lo); + iVar2 = check_special_attributes(item_00,0x1000); + if ((iVar2 != 0) && ((&pPlayer->field_C08)[in_a2_lo * 0xea] == 1)) { + fStack16 = fStack16 * 0.25000000; + } + video_related_23(); + in_f0 = (fStack16 * 120.00000000) / in_f0; + uVar3 = get_random_value(); + uVar4 = get_random_value(); + fVar7 = (float)uVar3; + if ((int)uVar3 < 0) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar8 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fVar5 = getPlayer_c_screenwidth(); + fVar6 = getPlayer_c_perspaspect(); + fStack8 = (fVar8 * 0.00000000 * (fVar7 * 0.00000000 - 0.50000000) * in_f0 * (float)fVar5 * + flt_800543B0) / ((float)fVar6 * 320.00000000) + pPlayer->field_FE8; + uVar3 = get_random_value(); + uVar4 = get_random_value(); + fVar7 = (float)uVar3; + if ((int)uVar3 < 0) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar8 = (float)uVar4; + if ((int)uVar4 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fVar5 = getPlayer_c_screenheight(); + fStack4 = ((float)fVar5 * fVar8 * 0.00000000 * (fVar7 * 0.00000000 - 0.50000000) * in_f0) / + 240.00000000 + pPlayer->field_FEC; + *in_a0_lo = 0; + in_a0_lo[1] = 0; + in_a0_lo[2] = 0; + proc_7F077EEC(&fStack8,in_a1_lo,extraout_f12); + return; +} + + + +undefined * proc_7F068420(undefined4 param_1,undefined4 *param_2) + +{ + undefined *puVar1; + undefined4 uVar2; + + puVar1 = &DAT_80075dc8; + if (DAT_80075e64 != 0) { + puVar1 = &DAT_80075e68; + while ((puVar1 < &DAT_80076a48 && (*(int *)(puVar1 + 0x9c) != 0))) { + puVar1 = puVar1 + 0xa0; + } + } + if (puVar1 < &DAT_80076a48) { + *(undefined4 *)(puVar1 + 0x9c) = param_1; + *(undefined4 *)(puVar1 + 4) = param_2[0xc]; + *(undefined4 *)(puVar1 + 8) = param_2[0xd]; + *(undefined4 *)(puVar1 + 0xc) = param_2[0xe]; + *(undefined4 *)(puVar1 + 0x1c) = *param_2; + *(undefined4 *)(puVar1 + 0x20) = param_2[1]; + uVar2 = param_2[2]; + *(undefined4 *)(puVar1 + 0x28) = 0; + *(undefined4 *)(puVar1 + 0x24) = uVar2; + *(undefined4 *)(puVar1 + 0x2c) = param_2[4]; + *(undefined4 *)(puVar1 + 0x30) = param_2[5]; + uVar2 = param_2[6]; + *(undefined4 *)(puVar1 + 0x38) = 0; + *(undefined4 *)(puVar1 + 0x34) = uVar2; + *(undefined4 *)(puVar1 + 0x3c) = param_2[8]; + *(undefined4 *)(puVar1 + 0x40) = param_2[9]; + uVar2 = param_2[10]; + *(undefined4 *)(puVar1 + 0x48) = 0; + *(undefined4 *)(puVar1 + 0x4c) = 0; + *(undefined4 *)(puVar1 + 0x50) = 0; + *(undefined4 *)(puVar1 + 0x54) = 0; + *(undefined4 *)(puVar1 + 0x58) = 0x3f800000; + *(undefined4 *)(puVar1 + 0x44) = uVar2; + return puVar1; + } + return NULL; +} + + + +void proc_7F068508(int param_1,undefined4 param_2) + +{ + float *pfVar1; + weapon_stats *pwVar2; + s32 sVar3; + undefined4 *puVar4; + u32 uVar5; + u32 uVar6; + float fVar7; + float fVar8; + float fVar9; + float fStack108; + float fStack104; + float fStack100; + xyzpoint xStack92; + Gitemheader *pGStack80; + ITEM_IDS IStack72; + float afStack68 [17]; + + IStack72 = get_item_in_hand(param_1); + pwVar2 = get_ptr_item_statistics(IStack72); + pGStack80 = pwVar2->ptr_cartridge_struct; + if ((pGStack80 != NULL) && (sVar3 = get_num_players(), sVar3 < 2)) { + if (*(int *)pPlayer->copy_of_body_obj_header[param_1 * 8 + 2] == 0) { + proc_7F058020((float (*) [4] [4])(&pPlayer->field_AD8 + param_1 * 0xea), + (float (*) [4])afStack68); + } + else { + pfVar1 = *(float **)(*(int *)pPlayer->copy_of_body_obj_header[param_1 * 8 + 2] + 4); + xStack92.x = *pfVar1 * flt_800543B4; + xStack92.y = pfVar1[1] * flt_800543B4; + xStack92.z = pfVar1[2] * flt_800543B4; + init_something_copy_posdata_to_it(&xStack92,(int *)afStack68); + proc_7F058068((float *)(&pPlayer->field_AD8 + param_1 * 0xea),afStack68); + } + puVar4 = (undefined4 *)proc_7F068420(pGStack80,afStack68); + if (puVar4 != NULL) { + fStack108 = DAT_80035ea4; + fStack100 = (float)DAT_80035eac; + fStack104 = (float)DAT_80035ea8; + *puVar4 = param_2; + if ((((IStack72 == ITEM_WPPK) || (IStack72 == ITEM_WPPKSIL)) || (IStack72 == ITEM_TT33)) + || ((IStack72 == ITEM_SILVERWPPK || (IStack72 == ITEM_GOLDWPPK)))) { + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(puVar4 + 4) = + -(fVar8 * 0.00000000 * flt_800543B8 * 0.06250000 + flt_800543B8); + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + puVar4[6] = 0; + *(float *)(puVar4 + 5) = fVar8 * 0.00000000 * 2.50000000 * 0.06250000 + 2.50000000; + proc_7F0583D8((float *)(&pPlayer->field_AD8 + param_1 * 0xea),(float *)(puVar4 + 4)) + ; + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fStack108 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543BC * 0.06250000 - + flt_800543C0; + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fStack104 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543C4 * 0.06250000 - + flt_800543C8; + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fStack100 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543CC * 0.06250000 - + flt_800543D0; + proc_7F058714(&fStack108,(float *)(puVar4 + 0x17)); + uVar5 = get_random_value(); + uVar6 = get_random_value(); + fVar8 = (float)puVar4[5]; + if (&UNK_00158679 + ((int)((uVar5 >> 0x18) * 0x158679) >> 10) == NULL) { + trap(0x1c00); + } + fVar9 = (float)(uVar6 % (uint)(&UNK_00158679 + + ((int)((uVar5 >> 0x18) * 0x158679) >> 10))); + if (false) { + fVar9 = fVar9 + 4294967296.00000000; + } + fVar9 = fVar9 / flt_800543D4; + fVar7 = fVar8 - fVar9 * expended_shell_initial_gravity_modifier_pistol; + *(float *)(puVar4 + 5) = fVar7; + *(float *)(puVar4 + 2) = (float)puVar4[2] + fVar9 * (fVar8 + fVar7) * 0.50000000; + *(float *)(puVar4 + 1) = (float)puVar4[1] + fVar9 * (float)puVar4[4]; + *(float *)(puVar4 + 3) = (float)puVar4[3] + fVar9 * (float)puVar4[6]; + if (0 < clock_timer) { + *(float *)(puVar4 + 4) = + (float)puVar4[4] + + ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c2] - + (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d2]) / global_timer_delta; + *(float *)(puVar4 + 5) = + (float)puVar4[5] + + ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c3] - + (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d3]) / global_timer_delta; + *(float *)(puVar4 + 6) = + (float)puVar4[6] + + ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c4] - + (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d4]) / global_timer_delta; + } + } + else { + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(puVar4 + 4) = + -(fVar8 * 0.00000000 * flt_800543DC * 0.12500000 + flt_800543DC); + uVar5 = get_random_value(); + fVar8 = flt_800543E0; + fVar9 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar9 = fVar9 + 4294967296.00000000; + } + fVar9 = fVar9 * 0.00000000 * flt_800543E0; + puVar4[6] = 0; + *(float *)(puVar4 + 5) = fVar9 * 0.12500000 + fVar8; + proc_7F0583D8((float *)(&pPlayer->field_AD8 + param_1 * 0xea),(float *)(puVar4 + 4)) + ; + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fStack108 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543E4 * 0.06250000 - + flt_800543E8; + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fStack104 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543EC * 0.06250000 - + flt_800543F0; + uVar5 = get_random_value(); + fVar8 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + fStack100 = (fVar8 * 0.00000000 + fVar8 * 0.00000000) * flt_800543F4 * 0.06250000 - + flt_800543F8; + proc_7F058714(&fStack108,(float *)(puVar4 + 0x17)); + uVar5 = get_random_value(); + uVar6 = get_random_value(); + fVar8 = (float)puVar4[5]; + if (&UNK_00158679 + ((int)((uVar5 >> 0x18) * 0x158679) >> 10) == NULL) { + trap(0x1c00); + } + fVar9 = (float)(uVar6 % (uint)(&UNK_00158679 + + ((int)((uVar5 >> 0x18) * 0x158679) >> 10))); + if (false) { + fVar9 = fVar9 + 4294967296.00000000; + } + fVar9 = fVar9 / flt_800543FC; + fVar7 = fVar8 - fVar9 * expended_shell_initial_gravity_modifier_non_pistol; + *(float *)(puVar4 + 5) = fVar7; + *(float *)(puVar4 + 2) = (float)puVar4[2] + fVar9 * (fVar8 + fVar7) * 0.50000000; + *(float *)(puVar4 + 1) = (float)puVar4[1] + fVar9 * (float)puVar4[4]; + *(float *)(puVar4 + 3) = (float)puVar4[3] + fVar9 * (float)puVar4[6]; + if (0 < clock_timer) { + *(float *)(puVar4 + 4) = + (float)puVar4[4] + + ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c2] - + (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d2]) / global_timer_delta; + *(float *)(puVar4 + 5) = + (float)puVar4[5] + + ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c3] - + (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d3]) / global_timer_delta; + *(float *)(puVar4 + 6) = + (float)puVar4[6] + + ((float)(&pPlayer->unknown + param_1 * 0xea)[0x2c4] - + (float)(&pPlayer->unknown + param_1 * 0xea)[0x2d4]) / global_timer_delta; + } + } + } + } + return; +} + + + +void proc_7F068D20(float *param_1) + +{ + float fVar1; + int iVar2; + float fVar3; + + fVar1 = global_timer_delta; + fVar3 = param_1[5] - global_timer_delta * expended_shell_initial_gravity_modifier_all; + param_1[2] = param_1[2] + global_timer_delta * 0.50000000 * (param_1[5] + fVar3); + if (param_1[2] < *param_1) { + if (((DAT_80075db0 == 0) && (pPlayer->when_detonating_mines_is_0 != 2)) && + (pPlayer->field_C3C != 2)) { + play_sfx_a1(ptr_sfx_buf,0x7a,(ALSndPlayer *)&DAT_80075db0); + } + param_1[0x27] = 0.00000000; + } + else { + param_1[5] = fVar3; + iVar2 = 0; + param_1[1] = param_1[1] + fVar1 * param_1[4]; + param_1[3] = param_1[3] + fVar1 * param_1[6]; + if (0 < clock_timer) { + do { + sub_GAME_7F058098(param_1 + 0x17,param_1 + 7); + iVar2 += 1; + } while (iVar2 < clock_timer); + } + } + return; +} + + + +void proc_7F068E6C(void) + +{ + float fVar1; + float *pfVar2; + + fVar1 = DAT_80075e64; + pfVar2 = (float *)&DAT_80075dc8; + while( true ) { + if (fVar1 != 0.00000000) { + proc_7F068D20(pfVar2); + } + if ((float *)0x80076a47 < pfVar2 + 0x28) break; + fVar1 = pfVar2[0x4f]; + pfVar2 = pfVar2 + 0x28; + } + return; +} + + + +void proc_7F068EC4(int param_1,undefined4 *param_2) + +{ + bool bVar1; + float *pfVar2; + int iVar3; + object_header *poVar4; + undefined8 extraout_a0; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + undefined4 *puVar5; + undefined4 *puVar6; + undefined4 *puVar7; + undefined4 *puVar8; + float afStack172 [16]; + undefined4 uStack108; + undefined4 uStack104; + undefined4 uStack96; + object_header *poStack92; + undefined4 uStack60; + uint uStack56; + undefined auStack44 [12]; + object_header *poStack32; + object_header *poStack12; + object_header *poStack8; + undefined4 uStack4; + + uStack4 = *param_2; + poStack12 = *(object_header **)(param_1 + 0x9c); + poStack8 = poStack12; + proc_7F0BD714((int)poStack12->num_object_grps << 6); + puVar7 = &DAT_80035eb0; + puVar5 = &uStack108; + do { + puVar8 = puVar7 + 3; + puVar6 = puVar5 + 3; + *puVar5 = *puVar7; + puVar5[1] = puVar7[1]; + puVar5[2] = puVar7[2]; + puVar7 = puVar8; + puVar5 = puVar6; + } while (puVar8 != (undefined4 *)0x80035eec); + bVar1 = true; + *puVar6 = uRam80035eec; + set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack8); + proc_7F075F68((int)auStack44,(ushort **)poStack8,0); + poStack32 = poStack12; + proc_7F058020((float (*) [4] [4])(param_1 + 0x1c),(float (*) [4])afStack172); + matrix_multiply_A1_by_F12(flt_80054408,extraout_a0,afStack172); + copies_first_3_floats_from_a0_to_a1_plus_0x30((xyzpoint *)(param_1 + 4),(int)afStack172); + pfVar2 = (float *)get_BONDdata_field_10CC(); + proc_7F05818C(pfVar2,afStack172,(int)poStack32); + iVar3 = 0; + poVar4 = poStack32; + do { + iVar3 += 4; + if (flt_80054410 < poVar4[1].anonymous_4) { + bVar1 = false; + } + else { + if (poVar4[1].anonymous_4 < flt_8005440C) { + bVar1 = false; + } + } + poVar4 = (object_header *)&poVar4->ptr_archetype; + } while (iVar3 != 0xc); + if (bVar1) { + uStack104 = 0; + uStack60 = 4; + uStack96 = uStack4; + poStack92 = poStack12; + uStack56 = (uint)(byte)pPlayer->field_FDF | (uint)(byte)pPlayer->field_FDC << 0x18 | + (uint)(byte)pPlayer->field_FDD << 0x10 | (uint)(byte)pPlayer->field_FDE << 8; + subdraw((int)&uStack108,(uint)auStack44,extraout_a2_lo,extraout_a3_lo); + *param_2 = uStack96; + proc_7F08BD48((undefined4 *)poStack12,(int)poStack8->num_object_grps); + } + return; +} + + + +void proc_7F06908C(undefined4 *param_1) + +{ + int iVar1; + undefined *puVar2; + + iVar1 = DAT_80075e64; + puVar2 = &DAT_80075dc8; + while( true ) { + if (iVar1 != 0) { + proc_7F068EC4((int)puVar2,param_1); + } + if ((undefined *)0x80076a47 < puVar2 + 0xa0) break; + iVar1 = *(int *)(puVar2 + 0x13c); + puVar2 = puVar2 + 0xa0; + } + return; +} + + + +void set_unset_ammo_on_screen_setting(int flags,int isset) + +{ + if (isset != 0) { + pPlayer->somekinda_flags = pPlayer->somekinda_flags & ~flags; + return; + } + pPlayer->somekinda_flags = pPlayer->somekinda_flags | flags; + return; +} + + + +void give_cur_player_ammo(AMMOTYPES type,int amount) + +{ + ITEM_IDS weapon; + AMMOTYPES AVar1; + int iVar2; + weapon_stats *pwVar3; + + weapon = get_item_in_hand(0); + AVar1 = get_ammo_type_for_weapon(weapon); + if ((AVar1 == type) && (iVar2 = check_special_attributes(weapon,0x200000), iVar2 != 0)) { + pPlayer->right_weapon_ammo_in_magazine = pPlayer->right_weapon_ammo_in_magazine + amount; + pwVar3 = get_ptr_item_statistics(weapon); + if ((longlong)pwVar3->mag_size < (longlong)pPlayer->right_weapon_ammo_in_magazine) { + pwVar3 = get_ptr_item_statistics(weapon); + pPlayer->right_weapon_ammo_in_magazine = (int)pwVar3->mag_size; + } + pPlayer->ammoheldarr[type] = 0; + } + else { + if ((int)(&DAT_80035ef0)[type * 3] < amount) { + pPlayer->ammoheldarr[type] = (&DAT_80035ef0)[type * 3]; + } + else { + pPlayer->ammoheldarr[type] = amount; + } + } + return; +} + + + +int check_cur_player_ammo_amount_in_inventory(AMMOTYPES type) + +{ + return pPlayer->ammoheldarr[type]; +} + + + +int check_cur_player_ammo_amount_total(int type) + +{ + int iVar1; + ITEM_IDS weapon; + AMMOTYPES AVar2; + int iVar3; + + iVar1 = check_cur_player_ammo_amount_in_inventory(type); + weapon = get_item_in_hand(0); + AVar2 = get_ammo_type_for_weapon(weapon); + if (AVar2 == type) { + iVar3 = get_ammo_in_hands_magazine(0); + iVar1 += iVar3; + } + weapon = get_item_in_hand(1); + AVar2 = get_ammo_type_for_weapon(weapon); + if (AVar2 == type) { + iVar3 = get_ammo_in_hands_magazine(1); + iVar1 += iVar3; + } + return iVar1; +} + + + +int get_max_ammo_for_type(AMMOTYPES type) + +{ + return (int)(&DAT_80035ef0)[type * 3]; +} + + + +void set_max_ammo_for_cur_player(void) + +{ + AMMOTYPES type; + int *piVar1; + + piVar1 = &DAT_80035ef0; + type = 0; + do { + give_cur_player_ammo(type,*piVar1); + type += AMMO_9MM; + piVar1 = piVar1 + 3; + } while (type != 0x1e); + return; +} + + + +int get_ammo_in_hands_magazine(int hand) + +{ + return (&pPlayer->right_weapon_ammo_in_magazine)[hand * 0xea]; +} + + + +int get_ammo_in_hands_weapon(int hand) + +{ + ITEM_IDS weapon; + int iVar1; + + weapon = get_item_in_hand(hand); + iVar1 = get_ammo_count_for_weapon(weapon); + if (((weapon == ITEM_SHOTGUN) || (weapon == ITEM_AUTOSHOT)) && + ((weapon = get_item_in_hand(1 - hand), weapon == ITEM_SHOTGUN || (weapon == ITEM_AUTOSHOT)))) + { + iVar1 -= *(int *)((int)pPlayer + hand * -0x3a8 + 0xc4c); + } + return iVar1; +} + + + +AMMOTYPES get_ammo_type_for_weapon(ITEM_IDS weapon) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(weapon); + return pwVar1->ammotype; +} + + + +int get_ammo_count_for_weapon(int weapon) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(weapon); + return pPlayer->ammoheldarr[pwVar1->ammotype]; +} + + + +void add_ammo_to_weapon(int weapon,int ammo) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(weapon); + give_cur_player_ammo(pwVar1->ammotype,ammo); + return; +} + + + +undefined4 get_max_ammo_for_weapon(int weapon) + +{ + weapon_stats *pwVar1; + + pwVar1 = get_ptr_item_statistics(weapon); + return (&DAT_80035ef0)[pwVar1->ammotype * 3]; +} + + + +undefined4 * +microcode_generation_ammo_related + (int *buffer,int *imagedeclaration,f32 hpos,f32 param_4,f32 vpos,f32 param_6,f32 voffset, + int param_8,int red,int green,int blue,int alpha) + +{ + uint uVar1; + int iVar2; + float fVar3; + f32 wdivh; + int *piStackX0; + int in_stack_00000028; + int in_stack_0000002c; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + buffer[1] = 0xc0; + *buffer = -0x45fff9fe; + buffer[3] = 0; + buffer[2] = -0x45ffecff; + buffer[5] = 0; + buffer[4] = -0x46fffffe; + buffer[7] = 0; + buffer[6] = -0x45ffefff; + buffer[9] = 0; + buffer[8] = -0x45fff3fe; + buffer[0xb] = 0xc00; + buffer[10] = -0x45fff6fd; + buffer[0xd] = 0; + buffer[0xc] = -0x45fff1fe; + uVar1 = (uint)*(byte *)(imagedeclaration + 1); + fVar3 = (float)uVar1; + if (false) { + fVar3 = fVar3 + 4294967296.00000000; + } + if (false) { + uVar1 = (uint)*(byte *)(imagedeclaration + 1) + 1; + } + fStack8 = fVar3 * 0.50000000 - (float)((int)uVar1 >> 1); + if (param_8 != 0) { + fStack8 = -fStack8; + } + fStack8 = fStack8 + (float)vpos; + if (0.00000000 <= (float)param_6) { + fVar3 = (float)(uint)*(byte *)((int)imagedeclaration + 5); + if (false) { + fVar3 = fVar3 + 4294967296.00000000; + } + fStack4 = (float)param_6 - fVar3 * 0.50000000; + } + else { + uVar1 = (uint)*(byte *)((int)imagedeclaration + 5); + fVar3 = (float)uVar1; + if (false) { + fVar3 = fVar3 + 4294967296.00000000; + } + if (false) { + uVar1 = (uint)*(byte *)((int)imagedeclaration + 5) + 1; + } + fStack4 = ((float)voffset - (fVar3 * 0.50000000 - (float)((int)uVar1 >> 1))) + (float)red; + } + iVar2 = 1; + fStack16 = (float)(uint)*(byte *)(imagedeclaration + 1); + if (false) { + fStack16 = fStack16 + 4294967296.00000000; + } + fStack16 = fStack16 * 0.50000000; + fStack12 = (float)(uint)*(byte *)((int)imagedeclaration + 5); + if (false) { + fStack12 = fStack12 + 4294967296.00000000; + } + fStack12 = fStack12 * 0.50000000; + buffer[0xf] = 0; + buffer[0xe] = -0x19000000; + buffer[0x11] = 0; + buffer[0x10] = -0x45ffebfe; + buffer[0x13] = 0x504240; + buffer[0x12] = -0x46fffce3; + buffer[0x15] = -0x20905; + buffer[0x14] = -0x3000001; + buffer[0x17] = 0; + buffer[0x16] = -0x6000000; + piStackX0 = buffer + 0x1a; + buffer[0x18] = ((int)(fStack12 + fStack4) + 1U & 0x3ff) << 2 | 0xf6000000 | + ((int)(fStack8 + fStack16) + 1U & 0x3ff) << 0xe; + buffer[0x19] = ((int)(fStack4 - fStack12) - 1U & 0x3ff) << 2 | + ((int)(fStack8 - fStack16) - 1U & 0x3ff) << 0xe; + if (green != 0) { + iVar2 = 2; + } + append_image_to_DL((uint **)register0x000000ec,(sImageTableEntry *)imagedeclaration,iVar2,0,0); + display_image_at_on_screen_coord + ((int *)register0x000000ec,(int *)&fStack8,wdivh,(int)&fStack16, + (uint)*(byte *)(imagedeclaration + 1),(uint)*(byte *)((int)imagedeclaration + 5),0,0, + 1,blue,alpha,in_stack_00000028,in_stack_0000002c, + (uint)(*(char *)((int)imagedeclaration + 6) != '\0')); + piStackX0[1] = 0; + *piStackX0 = -0x19000000; + piStackX0[3] = 0x40; + piStackX0[2] = -0x45fff9fe; + piStackX0[5] = 0x80000; + piStackX0[4] = -0x45ffecff; + piStackX0[7] = 0; + piStackX0[6] = -0x46fffffe; + piStackX0[9] = 0x10000; + piStackX0[8] = -0x45ffefff; + piStackX0[0xb] = 0x2000; + piStackX0[10] = -0x45fff3fe; + piStackX0[0xd] = 0xc00; + piStackX0[0xc] = -0x45fff6fd; + piStackX0[0xf] = 0; + piStackX0[0xe] = -0x45fff1fe; + return (undefined4 *)(piStackX0 + 0x10); +} + + + +void set_rgba_redirect_generate_microcode + (int *buffer,int *imagedeclaration,f32 param_3,f32 param_4,f32 hoffset,f32 param_6, + f32 voffset,int param_8) + +{ + int in_stack_00000018; + int in_stack_0000001c; + + microcode_generation_ammo_related + (buffer,imagedeclaration,hoffset,param_6,hoffset,param_6,voffset,param_8, + in_stack_00000018,in_stack_0000001c,0xff,0xff); + return; +} + + + +uint * proc_7F069A50(undefined4 *param_1,byte *param_2,uint param_3,int param_4,uint param_5, + int param_6,int param_7) + +{ + int iVar1; + uint *puVar2; + short sVar3; + short sVar4; + uint *puVar5; + int iStack24; + int iStack20; + uint uStack16; + uint uStack12; + uint uStack8; + uint uStack4; + + uStack4 = 0; + uStack8 = 0; + uStack12 = 0; + uStack16 = 0; + iStack24 = 0; + iStack20 = 0; + proc_7F0AE98C(&iStack20,&iStack24,param_2,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + if (param_4 == 1) { + uStack12 = param_3 + iStack24; + uStack4 = param_3; + } + else { + if (param_4 == 0) { + uStack4 = param_3 - iStack24; + uStack12 = param_3; + } + else { + if (param_4 == 2) { + iVar1 = iStack24; + if (iStack24 < 0) { + iVar1 = iStack24 + 1; + } + uStack12 = (iVar1 >> 1) + param_3; + uStack4 = uStack12 - iStack24; + } + } + } + if (param_6 == 1) { + uStack8 = param_5; + uStack16 = param_5 + iStack20; + } + else { + if (param_6 == 0) { + uStack16 = param_5; + uStack8 = param_5 - iStack20; + } + else { + if (param_6 == 2) { + iVar1 = iStack20; + if (iStack20 < 0) { + iVar1 = iStack20 + 1; + } + uStack16 = (iVar1 >> 1) + param_5; + uStack8 = uStack16 - iStack20; + } + } + } + puVar2 = draw_blackbox_to_screen(param_1,&uStack4,&uStack8,&uStack12,&uStack16); + if (param_7 == 0) { + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + puVar5 = (uint *)(int)sVar4; + en_text_write_stuff(puVar2,(int *)&uStack4,(int *)&uStack8,param_2, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar3,(int)sVar4,0,0); + } + else { + sVar3 = get_video2_settings_txtClipW(); + sVar4 = get_video2_settings_txtClipH(); + puVar5 = (uint *)(int)sVar4; + jp_text_stuff(puVar2,&uStack4,&uStack8,param_2,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xffffffff,0x646464ff,(int)sVar3,(int)sVar4,0,0); + } + return puVar5; +} + + + +uint * display_ammo_total_in_a1 + (undefined4 *param_1,undefined8 param_2,uint param_3,int param_4,uint param_5, + int param_6,int param_7) + +{ + uint *puVar1; + byte abStack12 [12]; + + sprintf((char *)abStack12,"%d\n",param_2); + puVar1 = proc_7F069A50(param_1,abStack12,param_3,param_4,param_5,param_6,param_7); + return puVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +u32 * generate_ammo_total_microcode(void) + +{ + uint uVar1; + ITEM_IDS weapon; + ITEM_IDS weapon_00; + s32 sVar2; + u32 uVar3; + int *imagedeclaration; + uint *puVar4; + short sVar7; + AMMOTYPES AVar5; + int iVar6; + short sVar8; + short sVar9; + short sVar10; + u32 *in_a0_lo; + f32 fVar11; + f32 fVar12; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f14; + uint *local_res0; + uint local_2c; + uint local_24; + int local_1c; + int local_18; + int local_14; + int local_10; + + local_res0 = in_a0_lo; + if ((pPlayer->somekinda_flags == 0) && (pPlayer->mpmenuon == 0)) { + weapon = get_item_in_hand(1); + weapon_00 = get_item_in_hand(0); + sVar2 = get_num_players(); + if (sVar2 < 3) { + local_10 = 0x3b; + local_14 = 0x3b; + } + else { + uVar3 = get_cur_playernum(); + if ((uVar3 & 1) == 0) { + local_10 = 0x3b; + local_14 = 0x6d; + } + else { + local_10 = 0x2b; + local_14 = 0x7f; + } + } + if ((((weapon_00 != ITEM_UNARMED) && + (AVar5 = get_ammo_type_for_weapon(weapon_00), AVar5 != 0)) && + (pPlayer->when_detonating_mines_is_0 != 6)) && + ((pPlayer->when_detonating_mines_is_0 != 7 && + (iVar6 = check_special_attributes(weapon_00,0x80000), iVar6 == 0)))) { + puVar4 = (uint *)(&DAT_80035ef4)[AVar5 * 3]; + local_24 = 5; + local_res0 = in_a0_lo; + if (puVar4 != NULL) { + imagedeclaration = (int *)((int)puVar4 + base_image_block_address); + fVar12 = getPlayer_c_screenleft(); + fVar11 = getPlayer_c_screenwidth(); + sVar8 = get_video2_settings_uly(); + sVar9 = get_video2_settings_height(); + puVar4 = (uint *)(int)sVar9; + set_rgba_redirect_generate_microcode + ((int *)in_a0_lo,imagedeclaration,extraout_f12,extraout_f14, + (f32)(((float)fVar11 + (float)fVar12) - (float)local_14),-1.00000000, + (f32)(float)((int)sVar9 + (int)sVar8 + -0x14),0); + local_24 = (uint)*(byte *)(imagedeclaration + 1); + local_res0 = puVar4; + } + microcode_constructor(local_res0); + iVar6 = check_special_attributes(weapon_00,0x400000); + if (iVar6 == 0) { + local_1c = pPlayer->right_weapon_ammo_in_magazine; + local_18 = pPlayer->ammoheldarr[AVar5]; + } + else { + local_1c = 0; + local_18 = pPlayer->right_weapon_ammo_in_magazine + pPlayer->ammoheldarr[AVar5]; + if (weapon == weapon_00) { + local_18 += pPlayer->left_weapon_ammo_in_magazine; + } + } + iVar6 = check_special_attributes(weapon_00,0x400000); + local_res0 = puVar4; + if (iVar6 == 0) { + sVar8 = get_video2_settings_ulx(); + sVar9 = get_video2_settings_width(); + sVar10 = get_video2_settings_uly(); + sVar7 = get_video2_settings_height(); + uVar1 = local_24; + if (false) { + uVar1 = local_24 + 1; + } + local_res0 = display_ammo_total_in_a1 + (puVar4,(longlong)local_1c, + ((((int)sVar9 + (int)sVar8) - local_14) - ((int)uVar1 >> 1)) + - 4,0,((int)sVar7 + (int)sVar10) - 0x12,2,1); + } + if ((0 < local_18) || (iVar6 = check_special_attributes(weapon_00,0x400000), iVar6 != 0) + ) { + sVar8 = get_video2_settings_ulx(); + sVar9 = get_video2_settings_width(); + sVar10 = get_video2_settings_uly(); + sVar7 = get_video2_settings_height(); + iVar6 = local_24 + 1; + if (false) { + iVar6 = local_24 + 2; + } + local_res0 = display_ammo_total_in_a1 + (local_res0,(longlong)local_18, + (((int)sVar9 + (int)sVar8) - local_14) + (iVar6 >> 1) + 3,1, + ((int)sVar7 + (int)sVar10) - 0x12,2,1); + } + local_res0 = combiner_bayer_lod_perspective(local_res0); + } + if ((((weapon != ITEM_UNARMED) && (AVar5 = get_ammo_type_for_weapon(weapon), AVar5 != 0)) && + (pPlayer->field_C3C != 6)) && + ((pPlayer->field_C3C != 7 && + (iVar6 = check_special_attributes(weapon,0x80000), iVar6 == 0)))) { + puVar4 = (uint *)(&DAT_80035ef4)[AVar5 * 3]; + local_2c = 5; + if (puVar4 != NULL) { + imagedeclaration = (int *)((int)puVar4 + base_image_block_address); + fVar12 = getPlayer_c_screenleft(); + sVar8 = get_video2_settings_uly(); + sVar9 = get_video2_settings_height(); + puVar4 = (uint *)(int)sVar9; + set_rgba_redirect_generate_microcode + ((int *)local_res0,imagedeclaration,extraout_f12_00, + (f32)(&DAT_80035ef8)[AVar5 * 3],(f32)((float)fVar12 + (float)local_10), + -1.00000000,(f32)(float)((int)sVar9 + (int)sVar8 + -0x14),1); + local_2c = (uint)*(byte *)(imagedeclaration + 1); + local_res0 = puVar4; + } + microcode_constructor(local_res0); + iVar6 = check_special_attributes(weapon,0x400000); + if (iVar6 == 0) { + local_1c = pPlayer->left_weapon_ammo_in_magazine; + local_18 = pPlayer->ammoheldarr[AVar5]; + } + else { + local_1c = 0; + local_18 = pPlayer->left_weapon_ammo_in_magazine + pPlayer->ammoheldarr[AVar5]; + if (weapon == weapon_00) { + local_18 += pPlayer->right_weapon_ammo_in_magazine; + } + } + iVar6 = check_special_attributes(weapon,0x400000); + local_res0 = puVar4; + if (iVar6 == 0) { + sVar8 = get_video2_settings_ulx(); + sVar9 = get_video2_settings_uly(); + sVar10 = get_video2_settings_height(); + uVar1 = local_2c; + if (false) { + uVar1 = local_2c + 1; + } + local_res0 = display_ammo_total_in_a1 + (puVar4,(longlong)local_1c, + sVar8 + local_10 + ((int)uVar1 >> 1) + 3,1, + ((int)sVar10 + (int)sVar9) - 0x12,2,1); + } + if ((0 < local_18) || (iVar6 = check_special_attributes(weapon,0x400000), iVar6 != 0)) { + sVar8 = get_video2_settings_ulx(); + sVar9 = get_video2_settings_uly(); + sVar10 = get_video2_settings_height(); + iVar6 = local_2c + 1; + if (false) { + iVar6 = local_2c + 2; + } + local_res0 = display_ammo_total_in_a1 + (local_res0,(longlong)local_18, + ((sVar8 + local_10) - (iVar6 >> 1)) - 4,0, + ((int)sVar10 + (int)sVar9) - 0x12,2,1); + } + local_res0 = combiner_bayer_lod_perspective(local_res0); + } + } + return local_res0; +} + + + +undefined4 * proc_7F06A334(undefined4 *param_1) + +{ + uint uVar1; + ITEM_IDS IVar2; + ITEM_IDS item; + AMMOTYPES AVar3; + int iVar4; + weapon_stats *DL; + short sVar5; + short sVar6; + int *imagedeclaration; + f32 extraout_f12; + f32 extraout_f14; + uint uStack28; + int iStack20; + int iStack16; + + IVar2 = get_item_in_hand(1); + item = get_item_in_hand(0); + if ((((item != ITEM_UNARMED) && (AVar3 = get_ammo_type_for_weapon(item), AVar3 != 0)) && + (pPlayer->when_detonating_mines_is_0 != 6)) && + ((pPlayer->when_detonating_mines_is_0 != 7 && + (iVar4 = check_special_attributes(item,0x80000), iVar4 == 0)))) { + iVar4 = (&DAT_80035ef4)[AVar3 * 3]; + uStack28 = 5; + DL = get_ptr_item_statistics(item); + if (iVar4 != 0) { + imagedeclaration = (int *)(iVar4 + base_image_block_address); + sVar5 = get_video2_settings_uly(); + sVar6 = get_video2_settings_height(); + DL = (weapon_stats *)(int)sVar6; + set_rgba_redirect_generate_microcode + (param_1,imagedeclaration,extraout_f12,extraout_f14,200.00000000,180.00000000, + (f32)(float)((int)sVar6 + (int)sVar5 + -0x14),0); + param_1 = (undefined4 *)DL; + uStack28 = (uint)*(byte *)(imagedeclaration + 1); + DL = (weapon_stats *)param_1; + } + microcode_constructor(param_1); + iVar4 = check_special_attributes(item,0x400000); + if (iVar4 == 0) { + iStack20 = pPlayer->right_weapon_ammo_in_magazine; + iStack16 = pPlayer->ammoheldarr[AVar3]; + } + else { + iStack20 = 0; + iStack16 = pPlayer->right_weapon_ammo_in_magazine + pPlayer->ammoheldarr[AVar3]; + if (IVar2 == item) { + iStack16 += pPlayer->left_weapon_ammo_in_magazine; + } + } + iVar4 = check_special_attributes(item,0x400000); + if (iVar4 == 0) { + uVar1 = uStack28; + if (false) { + uVar1 = uStack28 + 1; + } + DL = (weapon_stats *) + display_ammo_total_in_a1 + ((undefined4 *)DL,(longlong)iStack20,0xc4 - ((int)uVar1 >> 1),0,0xb1,2,0) + ; + } + if ((0 < iStack16) || (iVar4 = check_special_attributes(item,0x400000), iVar4 != 0)) { + iVar4 = uStack28 + 1; + if (false) { + iVar4 = uStack28 + 2; + } + DL = (weapon_stats *) + display_ammo_total_in_a1 + ((undefined4 *)DL,(longlong)iStack16,(iVar4 >> 1) + 0xcb,1,0xb1,2,0); + } + param_1 = combiner_bayer_lod_perspective((undefined4 *)DL); + } + return param_1; +} + + + +void set_unset_bitflags(int bitflags,int flag) + +{ + if (flag != 0) { + pPlayer->somekinda_bitflags = pPlayer->somekinda_bitflags & ~bitflags; + return; + } + pPlayer->somekinda_bitflags = pPlayer->somekinda_bitflags | bitflags; + return; +} + + + +void proc_7F06A5E4(uint **param_1) + +{ + int iVar1; + f32 wdivh; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + uint *local_4; + + if ((pPlayer->somekinda_bitflags == 0) && (pPlayer->mpmenuon == 0)) { + local_4 = *param_1; + append_image_to_DL(&local_4,crosshairimage,4,0,0); + local_c = pPlayer->field_FE8; + local_8 = pPlayer->field_FEC; + local_14 = 16.00000000; + local_10 = 0x41800000; + iVar1 = get_screen_ratio(); + if (iVar1 == 1) { + local_14 = local_14 * 0.75000000; + } + display_image_at_on_screen_coord + ((int *)&local_4,(int *)&local_c,wdivh,(int)&local_14,0x20,0x20,0,0,1,0xff,0xff, + 0xff,0x6e,(uint)(crosshairimage->level != '\0')); + *param_1 = local_4; + } + return; +} + + + +void inc_curplayer_hitcount_with_weapon(int weapon,int hitcount) + +{ + int iVar1; + + iVar1 = check_special_attributes(weapon,0x10000); + if (iVar1 != 0) { + pPlayersPerm->shotcount[hitcount] = pPlayersPerm->shotcount[hitcount] + 1; + } + return; +} + + + +int get_curplayer_shot_register(int statsregister) + +{ + return pPlayersPerm->shotcount[statsregister]; +} + + + +void inc_cur_civilian_casualties(void) + +{ + pPlayersPerm->killed_civilians = pPlayersPerm->killed_civilians + 1; + return; +} + + + +int get_civilian_casualties(void) + +{ + return pPlayersPerm->killed_civilians; +} + + + +void increment_num_kills_display_text_in_MP(void) + +{ + s32 sVar1; + int iVar2; + u8 *puVar3; + int iVar4; + int iVar5; + char acStack256 [256]; + + pPlayersPerm->killcount = pPlayersPerm->killcount + 1; + pPlayer->field_29F8 = pPlayer->field_29F8 + 1; + sVar1 = get_num_players(); + if (1 < sVar1) { + iVar2 = getMissiontime(); + puVar3 = get_textptr_for_textID(0x98da); + sprintf(acStack256,"%s: %d\n",puVar3,pPlayersPerm->killcount); + display_string_in_lower_left_corner(acStack256); + if (1 < pPlayersPerm->killcount) { + iVar4 = iVar2 - pPlayer->last_kill_time; + if (pPlayersPerm->slowest2kills < iVar4) { + pPlayersPerm->slowest2kills = iVar4; + iVar5 = pPlayersPerm->fastest2kills; + } + else { + iVar5 = pPlayersPerm->fastest2kills; + } + if (iVar4 < iVar5) { + pPlayersPerm->fastest2kills = iVar4; + } + } + iVar4 = 1; + pPlayer->field_29F0 = pPlayer->field_29EC; + pPlayer->field_29EC = pPlayer->field_29E8; + pPlayer->field_29E8 = pPlayer->last_kill_time; + pPlayer->last_kill_time = iVar2; + if ((pPlayer->field_29E8 != -1) && + (iVar2 = pPlayer->last_kill_time, iVar2 - pPlayer->field_29E8 < 0x78)) { + iVar4 = 2; + if ((pPlayer->field_29EC != -1) && (iVar2 - pPlayer->field_29EC < 0x78)) { + iVar4 = 3; + if ((pPlayer->field_29F0 != -1) && (iVar2 - pPlayer->field_29F0 < 0x78)) { + iVar4 = 4; + } + } + } + if (pPlayersPerm->most_killed_one_time < iVar4) { + pPlayersPerm->most_killed_one_time = iVar4; + } + } + return; +} + + + +int get_curplay_killcount(void) + +{ + return pPlayersPerm->killcount; +} + + + +void increment_num_times_killed_MwtGC(void) + +{ + pPlayersPerm->ggkillcount = pPlayersPerm->ggkillcount + 1; + return; +} + + + +int get_times_killed_mwtgx(void) + +{ + return pPlayersPerm->ggkillcount; +} + + + +void increment_num_deaths(void) + +{ + s32 sVar1; + u8 *__format; + u8 *puVar2; + char acStack256 [256]; + + pPlayer->deathcount = pPlayer->deathcount + 1; + sVar1 = get_num_players(); + if (1 < sVar1) { + if (pPlayer->deathcount == 1) { + __format = get_textptr_for_textID(0x98db); + sprintf(acStack256,(char *)__format); + } + else { + __format = get_textptr_for_textID(0x98dc); + puVar2 = get_textptr_for_textID(0x98dd); + sprintf(acStack256,"%s %d %s\n",__format,pPlayer->deathcount,puVar2); + } + display_string_in_lower_left_corner(acStack256); + } + return; +} + + + +int get_curplayer_numdeaths(void) + +{ + return pPlayer->deathcount; +} + + + +void increment_num_suicides_display_MP(void) + +{ + s32 sVar1; + int iVar2; + u8 *puVar3; + int iVar4; + int iVar5; + char acStack256 [256]; + + pPlayer->num_suicides = pPlayer->num_suicides + 1; + sVar1 = get_num_players(); + if (1 < sVar1) { + iVar2 = getMissiontime(); + puVar3 = get_textptr_for_textID(0x98de); + sprintf(acStack256,"%s: %d\n",puVar3,pPlayer->num_suicides); + display_string_in_lower_left_corner(acStack256); + if (1 < pPlayersPerm->killcount) { + iVar4 = iVar2 - pPlayer->last_kill_time; + if (pPlayersPerm->slowest2kills < iVar4) { + pPlayersPerm->slowest2kills = iVar4; + iVar5 = pPlayersPerm->fastest2kills; + } + else { + iVar5 = pPlayersPerm->fastest2kills; + } + if (iVar4 < iVar5) { + pPlayersPerm->fastest2kills = iVar4; + } + } + iVar4 = 1; + pPlayer->field_29F0 = pPlayer->field_29EC; + pPlayer->field_29EC = pPlayer->field_29E8; + pPlayer->field_29E8 = pPlayer->last_kill_time; + pPlayer->last_kill_time = iVar2; + if ((pPlayer->field_29E8 != -1) && + (iVar2 = pPlayer->last_kill_time, iVar2 - pPlayer->field_29E8 < 0x78)) { + iVar4 = 2; + if ((pPlayer->field_29EC != -1) && (iVar2 - pPlayer->field_29EC < 0x78)) { + iVar4 = 3; + if ((pPlayer->field_29F0 != -1) && (iVar2 - pPlayer->field_29F0 < 0x78)) { + iVar4 = 4; + } + } + } + if (pPlayersPerm->most_killed_one_time < iVar4) { + pPlayersPerm->most_killed_one_time = iVar4; + } + } + return; +} + + + +int get_curplayer_numsuicides(void) + +{ + return pPlayer->num_suicides; +} + + + +void proc_7F06ABB0(int *DL,float *xypos,float *width,int height,int rotateleft90,int fliph,int flipv + ,int red) + +{ + undefined4 *puVar1; + uint *puVar2; + uint uVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + float fVar8; + float fVar9; + uint uVar10; + uint uVar11; + float fVar12; + uint uVar13; + uint uVar14; + + if ((0.00000000 < *width) && (0.00000000 < width[1])) { + puVar1 = (undefined4 *)*DL; + *puVar1 = 0xba001301; + puVar1[1] = 0; + fVar8 = *width; + fVar9 = width[1]; + iVar4 = 0; + uVar5 = 0; + puVar2 = puVar1 + 2; + uVar14 = (uint)((*xypos - fVar8) * 4.00000000); + uVar11 = (uint)((xypos[1] - fVar9) * 4.00000000); + uVar10 = (uint)((fVar8 + *xypos) * 4.00000000); + uVar13 = (uint)((fVar9 + xypos[1]) * 4.00000000); + if ((-1 < (int)uVar10) && (-1 < (int)uVar13)) { + if ((int)uVar14 < 0) { + if (fliph == 0) { + iVar7 = uVar10 - uVar14; + iVar6 = -uVar14 * height * 0x20; + iVar4 = iVar6 / iVar7; + if (iVar7 == 0) { + trap(0x1c00); + } + if ((iVar7 == -1) && (iVar6 == -0x80000000)) { + trap(0x1800); + } + uVar14 = 0; + } + else { + iVar7 = uVar10 - uVar14; + iVar6 = -uVar14 * rotateleft90 * 0x20; + uVar5 = iVar6 / iVar7; + if (iVar7 == 0) { + trap(0x1c00); + } + if ((iVar7 == -1) && (iVar6 == -0x80000000)) { + trap(0x1800); + } + uVar14 = 0; + } + } + if ((int)uVar11 < 0) { + if (fliph == 0) { + iVar6 = uVar13 - uVar11; + iVar7 = -uVar11 * rotateleft90 * 0x20; + uVar5 += iVar7 / iVar6; + if (iVar6 == 0) { + trap(0x1c00); + } + if ((iVar6 == -1) && (iVar7 == -0x80000000)) { + trap(0x1800); + } + uVar11 = 0; + } + else { + iVar6 = uVar13 - uVar11; + iVar7 = -uVar11 * height * 0x20; + iVar4 += iVar7 / iVar6; + if (iVar6 == 0) { + trap(0x1c00); + } + if ((iVar6 == -1) && (iVar7 == -0x80000000)) { + trap(0x1800); + } + uVar11 = 0; + } + } + if (fliph == 0) { + fVar12 = (float)height / (fVar8 + fVar8); + fVar8 = (float)rotateleft90 / (fVar9 + fVar9); + } + else { + fVar12 = (float)height / (fVar9 + fVar9); + fVar8 = (float)rotateleft90 / (fVar8 + fVar8); + } + uVar3 = (uint)(fVar8 * 1024.00000000); + iVar6 = (int)(fVar12 * 1024.00000000); + if (flipv != 0) { + iVar6 = 0x10000 - iVar6; + iVar4 = (height + -1) * 0x20 - iVar4; + } + if (red != 0) { + uVar3 = 0x10000 - uVar3; + uVar5 = (rotateleft90 + -1) * 0x20 - uVar5; + } + if (fliph == 0) { + *puVar2 = (uVar10 & 0xfff) << 0xc | 0xe4000000 | uVar13 & 0xfff; + puVar1[3] = (uVar14 & 0xfff) << 0xc | uVar11 & 0xfff; + puVar1[4] = 0xb4000000; + puVar1[5] = iVar4 << 0x10 | uVar5 & 0xffff; + puVar1[6] = 0xb3000000; + puVar1[7] = iVar6 << 0x10 | uVar3 & 0xffff; + } + else { + *puVar2 = (uVar10 & 0xfff) << 0xc | 0xe5000000 | uVar13 & 0xfff; + puVar1[3] = (uVar14 & 0xfff) << 0xc | uVar11 & 0xfff; + puVar1[4] = 0xb4000000; + puVar1[5] = iVar4 << 0x10 | uVar5 & 0xffff; + puVar1[6] = 0xb3000000; + puVar1[7] = iVar6 << 0x10 | uVar3 & 0xffff; + } + puVar2 = puVar1 + 8; + } + puVar2[1] = 0x80000; + *puVar2 = 0xba001301; + *(uint **)DL = puVar2 + 2; + } + return; +} + + + +void display_image_at_on_screen_coord + (int *DL,int *xypos,f32 wdivh,int width,int height,int rotateleft90,int fliph, + int flipv,int red,int green,int blue,int alpha,int format,int param_14) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + int in_stack_00000034; + + if ((0.00000000 < *(float *)width) && (0.00000000 < *(float *)(width + 4))) { + puVar1 = (undefined4 *)*DL; + *puVar1 = 0xfb000000; + puVar1[1] = green << 0x18 | (blue & 0xffU) << 0x10 | (alpha & 0xffU) << 8 | format & 0xffU; + puVar2 = puVar1 + 2; + if (param_14 == 0) { + if (in_stack_00000034 == 0) { + *puVar2 = 0xfc129a25; + puVar1[3] = 0xff37ffff; + } + else { + puVar1[3] = 0xfffffe38; + *puVar2 = 0xfc129bff; + } + } + else { + *puVar2 = 0xfc26a005; + puVar1[3] = 0x1f1493ff; + } + *(undefined4 **)DL = puVar1 + 4; + proc_7F06ABB0(DL,(float *)xypos,(float *)width,height,rotateleft90,fliph,flipv,red); + } + return; +} + + + +int * proc_7F06B120(int *param_1,int param_2) + +{ + ushort uVar1; + ushort *puVar2; + ushort *puVar3; + int *piVar4; + int *piVar5; + int *piVar6; + + puVar2 = **(ushort ***)(param_2 + 8); + piVar4 = dword_80036060; + if ((puVar2 != NULL) && (dword_80036060 != NULL)) { + uVar1 = *puVar2; + do { + if (false) { +switchD_7f06b16c_caseD_4: + puVar3 = *(ushort **)(puVar2 + 10); + } + else { + switch((uint)uVar1 & 0xff) { + case 1: + case 2: + case 3: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x15: + *piVar4 = param_2; + *(ushort **)(piVar4 + 1) = puVar2; + piVar4 = (int *)piVar4[3]; + puVar3 = *(ushort **)(puVar2 + 10); + break; + default: + goto switchD_7f06b16c_caseD_4; + } + } + if ((puVar3 == NULL) && (puVar3 = puVar2, puVar2 != NULL)) { + puVar3 = *(ushort **)(puVar2 + 6); + while ((puVar3 == NULL && + (puVar2 = *(ushort **)(puVar2 + 4), puVar3 = puVar2, puVar2 != NULL))) { + puVar3 = *(ushort **)(puVar2 + 6); + } + } + if ((puVar3 == NULL) || (piVar4 == NULL)) break; + uVar1 = *puVar3; + puVar2 = puVar3; + } while( true ); + } + piVar6 = param_1; + if (piVar4 != dword_80036060) { + piVar6 = dword_80036060; + if (param_1 != NULL) { + if (param_1[3] == 0) { + *(int **)(param_1 + 3) = dword_80036060; + piVar5 = param_1; + } + else { + piVar6 = (int *)param_1[3]; + do { + piVar5 = piVar6; + piVar6 = (int *)piVar5[3]; + } while ((int *)piVar5[3] != NULL); + *(int **)(piVar5 + 3) = dword_80036060; + } + *(int **)(dword_80036060 + 4) = piVar5; + piVar6 = param_1; + } + dword_80036060 = piVar4; + if ((piVar4 != NULL) && (piVar4[4] != 0)) { + *(undefined4 *)(piVar4[4] + 0xc) = 0; + piVar4[4] = 0; + } + } + return piVar6; +} + + + +void proc_7F06B248(int param_1) + +{ + int iVar1; + int iVar2; + + iVar1 = dword_80036060; + if ((param_1 != 0) && (iVar1 = param_1, dword_80036060 != 0)) { + if (*(int *)(param_1 + 0xc) == 0) { + *(int *)(param_1 + 0xc) = dword_80036060; + iVar2 = param_1; + } + else { + iVar1 = *(int *)(param_1 + 0xc); + do { + iVar2 = iVar1; + iVar1 = *(int *)(iVar2 + 0xc); + } while (*(int *)(iVar2 + 0xc) != 0); + *(int *)(iVar2 + 0xc) = dword_80036060; + } + *(int *)(dword_80036060 + 0x10) = iVar2; + iVar1 = param_1; + } + dword_80036060 = iVar1; + return; +} + + + +void proc_7F06B29C(int *param_1) + +{ + ushort *puVar1; + ushort *puVar2; + float *pfVar3; + int iVar4; + int *piVar5; + int iVar6; + int iVar7; + float *pfVar8; + int iVar9; + int *piVar10; + int *piVar11; + int *piVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + int *piStack8; + + piStack8 = NULL; + if (param_1 != NULL) { + puVar1 = (ushort *)param_1[1]; + piVar12 = param_1; + while( true ) { + if (true) { + switch((uint)*puVar1 & 0xff) { + case 1: + puVar2 = *(ushort **)(*(int *)(puVar1 + 2) + 4); + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + if (puVar2 == NULL) { + *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); + } + else { + iVar7 = proc_7F06C660(*piVar12,puVar2,0); + *(float *)(piVar12 + 2) = + -(*(float *)(iVar7 + 0x38) + *(float *)(iVar6 + 0x38)) * 0.50000000; + } + break; + case 2: + puVar2 = *(ushort **)(*(int *)(puVar1 + 2) + 0x14); + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + if (puVar2 == NULL) { + *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); + } + else { + iVar7 = proc_7F06C660(*piVar12,puVar2,0); + *(float *)(piVar12 + 2) = + -(*(float *)(iVar7 + 0x38) + *(float *)(iVar6 + 0x38)) * 0.50000000; + } + break; + case 3: + puVar2 = *(ushort **)(*(int *)(puVar1 + 2) + 0x14); + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + if (puVar2 == NULL) { + *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); + } + else { + iVar7 = proc_7F06C660(*piVar12,puVar2,0); + *(float *)(piVar12 + 2) = + -(*(float *)(iVar7 + 0x38) + *(float *)(iVar6 + 0x38)) * 0.50000000; + } + break; + case 0xb: + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + pfVar3 = *(float **)(puVar1 + 2); + *(float *)(piVar12 + 2) = + -(*(float *)(iVar6 + 0x38) + + *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + + pfVar3[2] * *(float *)(iVar6 + 0x28)); + break; + case 0xc: + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + pfVar3 = *(float **)(puVar1 + 2); + *(float *)(piVar12 + 2) = + -(*(float *)(iVar6 + 0x38) + + *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + + pfVar3[2] * *(float *)(iVar6 + 0x28)); + break; + case 0xd: + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + pfVar3 = *(float **)(puVar1 + 2); + iVar7 = extract_id_from_object_structure_microcode(*piVar12,(ushort *)pfVar3[5]) + ; + *(float *)(piVar12 + 2) = + -(*(float *)(iVar6 + 0x38) + + *pfVar3 * *(float *)(iVar6 + 8) + + (*(float *)(iVar7 + 4) - *(float *)(iVar7 + 0xc)) * + *(float *)(iVar6 + 0x18) + pfVar3[1] * *(float *)(iVar6 + 0x28)); + break; + case 0xe: + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + pfVar3 = *(float **)(puVar1 + 2); + *(float *)(piVar12 + 2) = + -(*(float *)(iVar6 + 0x38) + + *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + + pfVar3[2] * *(float *)(iVar6 + 0x28)); + break; + case 0xf: + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + pfVar3 = *(float **)(puVar1 + 2); + fVar19 = -(*(float *)(iVar6 + 0x38) + + *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + + pfVar3[2] * *(float *)(iVar6 + 0x28)); + fVar13 = -(*(float *)(iVar6 + 0x38) + + pfVar3[3] * *(float *)(iVar6 + 8) + + pfVar3[4] * *(float *)(iVar6 + 0x18) + + pfVar3[5] * *(float *)(iVar6 + 0x28)); + if (fVar19 < fVar13) { + *(float *)(piVar12 + 2) = fVar19; + } + else { + *(float *)(piVar12 + 2) = fVar13; + } + break; + case 0x10: + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + pfVar3 = *(float **)(puVar1 + 2); + *(float *)(piVar12 + 2) = + -(*(float *)(iVar6 + 0x38) + + *pfVar3 * *(float *)(iVar6 + 8) + pfVar3[1] * *(float *)(iVar6 + 0x18) + + pfVar3[2] * *(float *)(iVar6 + 0x28)); + piStack8 = piVar12; + break; + case 0x15: + iVar6 = proc_7F06C660(*piVar12,puVar1,0); + *(float *)(piVar12 + 2) = -*(float *)(iVar6 + 0x38); + } + } + piVar12 = (int *)piVar12[3]; + if (piVar12 == NULL) break; + puVar1 = (ushort *)piVar12[1]; + } + } + if (piStack8 != NULL) { + iVar6 = *(int *)(*piStack8 + 0x18); + if (iVar6 != 0) { + fVar19 = (float)piStack8[2]; + pfVar3 = *(float **)((ushort *)piStack8[1] + 2); + iVar6 = *(int *)(*(int *)(iVar6 + 8) + 8); + iVar7 = *(int *)(iVar6 + (int)*(short *)((int)pfVar3 + 0xe) * 4); + iVar4 = *(int *)(iVar6 + (int)*(short *)(pfVar3 + 3) * 4); + iVar6 = *(int *)(iVar6 + (int)*(short *)(pfVar3 + 4) * 4); + pfVar8 = (float *)proc_7F06C660(*piStack8,(ushort *)piStack8[1],0); + piVar12 = NULL; + piVar10 = NULL; + piVar11 = NULL; + if (param_1 != NULL) { + iVar9 = param_1[1]; + while( true ) { + if (iVar7 == iVar9) { + piVar10 = param_1; + } + if (iVar4 == iVar9) { + piVar12 = param_1; + } + if (iVar6 == iVar9) { + piVar5 = (int *)param_1[3]; + piVar11 = param_1; + } + else { + piVar5 = (int *)param_1[3]; + } + if (piVar5 == NULL) break; + iVar9 = piVar5[1]; + param_1 = piVar5; + } + } + fVar14 = pfVar8[0xc] + *pfVar3 * *pfVar8 + pfVar3[1] * pfVar8[4] + pfVar3[2] * pfVar8[8] + ; + fVar15 = pfVar8[0xd] + + *pfVar3 * pfVar8[1] + pfVar3[1] * pfVar8[5] + pfVar3[2] * pfVar8[9]; + fVar16 = pfVar8[0xe] + + *pfVar3 * pfVar8[2] + pfVar3[1] * pfVar8[6] + pfVar3[2] * pfVar8[10]; + fVar18 = (float)piVar10[2]; + fVar17 = (float)piVar12[2]; + fVar20 = (float)piVar11[2]; + fVar13 = fVar16 * pfVar8[10] + pfVar8[8] * fVar14 + pfVar8[9] * fVar15; + fVar14 = fVar16 * pfVar8[6] + pfVar8[4] * fVar14 + pfVar8[5] * fVar15; + if (fVar13 < 0.00000000) { + if (fVar20 < fVar18) { + if (fVar20 < fVar19) { + *(float *)(piStack8 + 2) = fVar20 - 0.00003052; + } + } + else { + if (fVar18 < fVar19) { + *(float *)(piStack8 + 2) = fVar18 - 0.00003052; + } + } + } + else { + if (0.00000000 <= fVar13) { + if (fVar19 < fVar18) { + *(float *)(piVar10 + 2) = fVar19 - 0.00006104; + } + if (fVar19 < fVar20) { + if (fVar20 < fVar18) { + *(float *)(piVar11 + 2) = fVar19 - 0.00009155; + } + else { + *(float *)(piVar11 + 2) = fVar19 - 0.00003052; + } + } + } + } + if (fVar14 < 0.00000000) { + fVar19 = (float)piStack8[2]; + if (fVar17 < fVar19) { + if ((float)piVar10[2] < fVar19) { + if (fVar17 < (float)piVar10[2]) { + *(float *)(piVar10 + 2) = fVar17 - 0.00006104; + fVar19 = (float)piStack8[2]; + fVar13 = (float)piVar11[2]; + } + else { + fVar13 = (float)piVar11[2]; + } + } + else { + fVar13 = (float)piVar11[2]; + } + if ((fVar13 < fVar19) && (fVar17 < fVar13)) { + if (fVar20 < fVar18) { + *(float *)(piVar11 + 2) = fVar17 - 0.00009155; + } + else { + *(float *)(piVar11 + 2) = fVar17 - 0.00003052; + } + } + *(float *)(piStack8 + 2) = fVar17 - 0.00001526; + } + } + else { + if ((0.00000000 <= fVar14) && ((float)piStack8[2] < fVar17)) { + *(float *)(piVar12 + 2) = (float)piStack8[2] - 0.00001526; + if ((fVar17 < fVar18) && ((float)piVar10[2] < (float)piVar12[2])) { + *(float *)(piVar12 + 2) = (float)piVar10[2] - 0.00001526; + } + if ((fVar17 < fVar20) && ((float)piVar11[2] < (float)piVar12[2])) { + *(float *)(piVar12 + 2) = (float)piVar11[2] - 0.00001526; + } + } + } + } + } + return; +} + + + +int proc_7F06BB28(int param_1) + +{ + undefined *puVar1; + undefined *puVar2; + int iVar3; + int iVar4; + undefined *puVar5; + undefined *puVar6; + undefined *puVar7; + float fVar8; + float fVar9; + undefined auStack40 [20]; + undefined auStack20 [12]; + int iStack8; + + if (param_1 != 0) { + iVar4 = param_1; + if (*(int *)(param_1 + 0xc) != 0) { + iVar3 = *(int *)(param_1 + 0xc); + do { + iVar4 = iVar3; + iVar3 = *(int *)(iVar4 + 0xc); + } while (*(int *)(iVar4 + 0xc) != 0); + } + puVar6 = auStack20; + iStack8 = param_1; + *(undefined **)(param_1 + 0x10) = puVar6; + *(undefined **)(iVar4 + 0xc) = auStack40; + do { + puVar1 = *(undefined **)(puVar6 + 0xc); + puVar5 = NULL; + if (puVar1 != auStack40) { + fVar8 = -4294967296.00000000; + fVar9 = *(float *)(puVar1 + 8); + puVar7 = puVar1; + while( true ) { + if (fVar8 < fVar9) { + puVar2 = *(undefined **)(puVar7 + 0xc); + puVar5 = puVar7; + } + else { + puVar2 = *(undefined **)(puVar7 + 0xc); + fVar9 = fVar8; + } + if (puVar2 == auStack40) break; + fVar8 = fVar9; + fVar9 = *(float *)(puVar2 + 8); + puVar7 = puVar2; + } + } + if (puVar5 != NULL) { + *(undefined4 *)(*(int *)(puVar5 + 0xc) + 0x10) = *(undefined4 *)(puVar5 + 0x10); + *(undefined4 *)(*(int *)(puVar5 + 0x10) + 0xc) = *(undefined4 *)(puVar5 + 0xc); + *(undefined **)(puVar5 + 0x10) = puVar6; + *(undefined4 *)(puVar5 + 0xc) = *(undefined4 *)(puVar6 + 0xc); + *(undefined **)(*(int *)(puVar6 + 0xc) + 0x10) = puVar5; + *(undefined **)(puVar6 + 0xc) = puVar5; + puVar1 = puVar5; + } + puVar6 = puVar1; + } while (puVar6 != auStack40); + *(undefined4 *)(iStack8 + 0x10) = 0; + *(undefined4 *)(iVar4 + 0xc) = 0; + param_1 = iStack8; + } + return param_1; +} + + + +void drawjointlist(int param_1,uint *param_2,undefined4 param_3,int param_4) + +{ + ushort uVar1; + uint uVar2; + ushort *puVar3; + undefined4 *puVar4; + bool bVar5; + u32 uVar6; + uint object; + longlong lVar7; + longlong extraout_a2; + longlong extraout_a2_00; + longlong extraout_a3; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 uVar8; + longlong extraout_a3_00; + longlong extraout_a3_01; + longlong extraout_a3_02; + longlong extraout_a3_03; + ushort *puVar9; + ushort *puVar10; + int object_initialized; + int iVar11; + float fVar12; + + lVar7 = (longlong)param_4; + if (*(int *)(param_1 + 0xc) == 0) { + osSyncPrintf("drawjointlist: no gfxlist!\n",param_2,param_3); + return_null(); + lVar7 = extraout_a3; + } + if (param_2 == NULL) { + return; + } + uVar2 = *param_2; +LAB_7f06bc58: + uVar8 = (undefined4)lVar7; + lVar7 = (longlong)(int)uVar2; + puVar3 = (ushort *)param_2[1]; + if (*(int *)(uVar2 + 8) == 0) { + osSyncPrintf("drawjointlist: no object! (0x%X)\n",lVar7); + return_null(); + object_initialized = *(int *)(*(int *)(*param_2 + 8) + 0x1c); + lVar7 = extraout_a2; + uVar8 = extraout_a3_lo; + } + else { + object_initialized = *(int *)(*(int *)(uVar2 + 8) + 0x1c); + } + if (object_initialized == 0) { + osSyncPrintf("drawjointlist: object not initialised! (0x%X)\n"); + return_null(); + iVar11 = *(int *)(param_1 + 0x18); + lVar7 = extraout_a2_00; + uVar8 = extraout_a3_lo_00; + } + else { + iVar11 = *(int *)(param_1 + 0x18); + } + puVar9 = puVar3; + if (iVar11 == 0) { + puVar4 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; + *puVar4 = 0xbc000c06; + uVar6 = osVirtualToPhysical(*(void **)(*param_2 + 0xc)); + puVar4[1] = uVar6; + lVar7 = extraout_a3_01; + } + else { + fVar12 = getjointsize(*param_2,puVar3,lVar7,uVar8); + lVar7 = extraout_a3_00; + if ((float)param_2[2] < fVar12) { + puVar9 = NULL; + } + } + if (puVar9 != NULL) { + uVar1 = *puVar9; + do { + bVar5 = true; + if (false) { +switchD_7f06bd3c_caseD_4: + proc_7F074534(param_1,*param_2,puVar9); + lVar7 = extraout_a3_03; + } + else { + switch((uint)uVar1 & 0xff) { + case 1: + case 2: + case 3: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x15: + if (puVar9 == puVar3) { + proc_7F074534(param_1,*param_2,puVar9); + lVar7 = extraout_a3_02; + } + else { + bVar5 = false; + } + break; + default: + goto switchD_7f06bd3c_caseD_4; + } + } + if ((!bVar5) || (puVar10 = *(ushort **)(puVar9 + 10), puVar10 == NULL)) { + while (puVar10 = puVar9, puVar9 != NULL) { + if (puVar9 == puVar3) { + puVar10 = NULL; + break; + } + puVar10 = *(ushort **)(puVar9 + 6); + if (puVar10 != NULL) break; + puVar9 = *(ushort **)(puVar9 + 4); + } + } + if (puVar10 == NULL) goto code_r0x7f06bdd4; + uVar1 = *puVar10; + puVar9 = puVar10; + } while( true ); + } + param_2 = (uint *)param_2[3]; + goto LAB_7f06bdd8; +code_r0x7f06bdd4: + param_2 = (uint *)param_2[3]; +LAB_7f06bdd8: + if (param_2 == NULL) { + return; + } + uVar2 = *param_2; + goto LAB_7f06bc58; +} + + + +undefined4 +probably_damage_detail_blood_effect_related + (int **param_1,float *param_2,float *param_3,int *param_4,ushort **param_5) + +{ + ushort *puVar1; + bool bVar2; + ulonglong uVar3; + longlong lVar4; + ushort *puVar5; + ushort *puVar6; + int *piVar7; + + piVar7 = *param_1; + if (piVar7 == NULL) { +LAB_7f06bfdc: + *param_1 = NULL; + return 0; + } + puVar6 = *param_5; + do { + puVar1 = (ushort *)piVar7[1]; + bVar2 = true; + puVar5 = puVar1; + if (puVar6 != NULL) { + *param_5 = NULL; + puVar5 = puVar6; + } + if (puVar5 == NULL) { + piVar7 = (int *)piVar7[4]; + } + else { + do { + if ((!bVar2) || (puVar6 = *(ushort **)(puVar5 + 10), puVar6 == NULL)) { + while (puVar6 = puVar5, puVar5 != NULL) { + if (puVar5 == puVar1) { + puVar6 = NULL; + break; + } + puVar6 = *(ushort **)(puVar5 + 6); + if (puVar6 != NULL) break; + puVar5 = *(ushort **)(puVar5 + 4); + } + if (puVar6 == NULL) { + piVar7 = (int *)piVar7[4]; + goto LAB_7f06bfd4; + } + } + uVar3 = (ulonglong)*puVar6; + bVar2 = true; + if (true) { + switch((uint)*puVar6 & 0xff) { + case 1: + case 2: + case 3: + case 0x15: + bVar2 = false; + break; + case 8: + proc_7F06E970(*piVar7,puVar6); + break; + case 10: + proc_7F074C68(*piVar7,puVar6,param_2,param_3); + if (uVar3 != 0) { + *param_4 = *piVar7; + *param_5 = puVar6; + *param_1 = piVar7; + return **(undefined4 **)(puVar6 + 2); + } + bVar2 = false; + break; + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + bVar2 = false; + break; + case 0x11: + lVar4 = proc_7F074CAC(*piVar7,puVar6,param_2,param_3); + if (lVar4 != 0) { + *param_4 = *piVar7; + *param_5 = puVar6; + *param_1 = piVar7; + return **(undefined4 **)(puVar6 + 2); + } + bVar2 = false; + break; + case 0x12: + process_12_handle_switch(*piVar7,puVar6); + break; + case 0x17: + process_17_pointer_to_head(*piVar7,puVar6); + } + } + puVar5 = puVar6; + } while (puVar6 != NULL); + piVar7 = (int *)piVar7[4]; + } +LAB_7f06bfd4: + if (piVar7 == NULL) goto LAB_7f06bfdc; + puVar6 = *param_5; + } while( true ); +} + + + +undefined4 proc_7F06C010(int **param_1,float *param_2,float *param_3,int *param_4,ushort **param_5) + +{ + int *piVar1; + int *piVar2; + undefined4 uVar3; + + piVar1 = *param_1; + piVar2 = (int *)(*param_1)[3]; + while (piVar2 != NULL) { + piVar1 = piVar2; + piVar2 = (int *)piVar2[3]; + } + *param_1 = piVar1; + *param_4 = 0; + *param_5 = NULL; + uVar3 = probably_damage_detail_blood_effect_related(param_1,param_2,param_3,param_4,param_5); + return uVar3; +} + + + +ulonglong proc_7F06C060(int param_1,int param_2) + +{ + short sVar1; + bool bVar2; + ulonglong uVar3; + + sVar1 = *(short *)(param_2 + 0x14); + uVar3 = (ulonglong)(sVar1 < 1); + if ((sVar1 >= 1) && (bVar2 = *(int *)(param_1 + 0x10) != 0, uVar3 = (ulonglong)bVar2, bVar2)) { + uVar3 = (ulonglong)(*(short *)(param_1 + 2) < sVar1) ^ 1; + } + return uVar3; +} + + + +uint get_obj_instance_controller_for_header(object_header *objheader) + +{ + short sVar1; + int iVar3; + ulonglong uVar2; + int iVar4; + uint uVar5; + short sStack10; + uint uStack8; + + uVar5 = 0; + uStack8 = 0; + sStack10 = -1; + if (dword_80036078 == 0) { + iVar4 = 0; + iVar3 = 0; + if (0 < dword_80036074) { + do { + if ((*(int *)(ptr_allocation_1 + iVar3 + 8) == 0) && + (uVar2 = proc_7F06C060(iVar4 * 0x20 + ptr_allocation_1,(int)objheader), + uVar2 != 0)) { + uStack8 = *(uint *)(ptr_allocation_1 + iVar3 + 0x10); + uVar5 = iVar4 * 0x20 + ptr_allocation_1; + sStack10 = *(short *)(ptr_allocation_1 + iVar3 + 2); + break; + } + iVar4 += 1; + iVar3 += 0x20; + } while (iVar4 < dword_80036074); + } + } + else { + iVar3 = 0; + iVar4 = ptr_allocation_1; + if (0 < dword_80036074 + -0x1e) { + do { + if (*(int *)(iVar4 + 8) == 0) { + uVar5 = iVar3 * 0x20 + ptr_allocation_1; + break; + } + iVar3 += 1; + iVar4 = iVar4 + 0x20; + } while (iVar3 < dword_80036074 + -0x1e); + } + if (uVar5 == 0) { + uVar5 = mempAllocBytesInBank(0x20,'\x04'); + sVar1 = objheader->num_table_entries; + } + else { + sVar1 = objheader->num_table_entries; + } + if (0 < sVar1) { + uStack8 = mempAllocBytesInBank(((int)sVar1 * 4 + 0xfU | 0xf) ^ 0xf,'\x04'); + sStack10 = objheader->num_table_entries; + } + } + if (uVar5 != 0) { + proc_7F075F68(uVar5,(ushort **)objheader,uStack8); + *(short *)(uVar5 + 2) = sStack10; + } + return uVar5; +} + + + +void set_obj_instance_scale_to_zero(int *ptrobjinstance) + +{ + ptrobjinstance[2] = 0; + return; +} + + + +uint get_aircraft_obj_instance_controller(object_header *objheader) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + short sVar5; + uint uVar6; + uint local_8; + + uVar6 = 0; + local_8 = 0; + sVar5 = -1; + if (dword_80036078 == 0) { + iVar2 = 0; + if (0 < dword_80036070) { + iVar4 = 0; + iVar3 = ptr_allocation_0; + do { + iVar2 += 1; + if (*(int *)(iVar3 + 8) == 0) { + if (objheader->num_table_entries < 1) { + local_8 = *(uint *)(iVar3 + 0x10); + } + else { + if ((*(int *)(iVar3 + 0x10) == 0) || + (*(short *)(iVar3 + 2) < objheader->num_table_entries)) + goto LAB_7f06c374; + local_8 = *(uint *)(iVar3 + 0x10); + } + uVar6 = iVar4 + ptr_allocation_0; + sVar5 = *(short *)(iVar3 + 2); + break; + } +LAB_7f06c374: + iVar4 += 0xbc; + iVar3 += 0xbc; + } while (iVar2 < dword_80036070); + } + } + else { + iVar2 = 0; + if (0 < dword_80036070 + -10) { + iVar4 = 0; + iVar3 = ptr_allocation_0; + do { + piVar1 = (int *)(iVar3 + 8); + iVar2 += 1; + iVar3 += 0xbc; + if (*piVar1 == 0) { + uVar6 = iVar4 + ptr_allocation_0; + break; + } + iVar4 += 0xbc; + } while (iVar2 < dword_80036070 + -10); + } + if (uVar6 == 0) { + uVar6 = mempAllocBytesInBank(0xc0,'\x04'); + } + sVar5 = -1; + if (0 < objheader->num_table_entries) { + local_8 = mempAllocBytesInBank + (((int)objheader->num_table_entries * 4 + 0xfU | 0xf) ^ 0xf,'\x04'); + sVar5 = objheader->num_table_entries; + } + } + if (uVar6 != 0) { + proc_7F075FAC(uVar6,(ushort **)objheader,local_8); + *(short *)(uVar6 + 2) = sVar5; + } + return uVar6; +} + + + +void proc_7F06C3B4(int param_1,ushort *param_2,ushort **param_3) + +{ + proc_7F076030(param_1,*(int *)(param_1 + 8),param_2,param_3); + unknown_object_microcode_handler(param_1,*param_3); + return; +} + + + +void set_aircraft_obj_inst_scale_to_zero(int *objinstance) + +{ + objinstance[2] = 0; + return; +} + + + +void set_80036084(s32 param_1) + +{ + dword_80036084 = param_1; + return; +} + + + +void set_flt_80036088(f32 param_1) + +{ + flt_80036088 = param_1; + return; +} + + + +void proc_7F06C418(undefined4 *param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = 0; + do { + iVar1 += 1; + *param_2 = *param_1; + param_2[1] = param_1[1]; + param_2[2] = param_1[2]; + param_2[3] = param_1[3]; + param_1 = param_1 + 4; + param_2 = param_2 + 4; + } while (iVar1 != 4); + return; +} + + + +void set_8003608C(undefined4 param_1) + +{ + vtxallocator = param_1; + return; +} + + + +void return_null(void) + +{ + return; +} + + + +void proc_7F06C474(int param_1,float *param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + + iVar1 = getsubmatrix(param_1,(uint)param_2,param_3,param_4); + fVar3 = -*(float *)(iVar1 + 0x30); + fVar4 = -*(float *)(iVar1 + 0x34); + fVar5 = -*(float *)(iVar1 + 0x38); + fVar2 = sqrtf(fVar3 * fVar3 + fVar4 * fVar4 + fVar5 * fVar5); + if (0.00000000 < fVar2) { + fVar2 = 1.00000000 / (*(float *)(param_1 + 0x14) * fVar2); + *param_2 = fVar3 * fVar2; + param_2[1] = fVar4 * fVar2; + param_2[2] = fVar5 * fVar2; + } + else { + *param_2 = 0.00000000; + param_2[1] = 0.00000000; + param_2[2] = 1.00000000 / *(float *)(param_1 + 0x14); + } + return; +} + + + +void proc_7F06C550(int param_1,float *param_2,undefined4 param_3,undefined4 param_4) + +{ + proc_7F06C474(param_1,param_2,param_3,param_4); + return; +} + + + +undefined2 proc_7F06C570(ushort *param_1,longlong param_2) + +{ + uint uVar1; + ushort uVar2; + + if (param_1 != NULL) { + uVar2 = *param_1; + while( true ) { + uVar2 &= 0xff; + if (uVar2 == 1) { + return *(undefined2 *)(*(int *)(param_1 + 2) + 2); + } + if (uVar2 == 2) { + if (param_2 == 0x200) { + uVar1 = 2; + } + else { + uVar1 = (uint)(param_2 == 0x100); + } + return *(undefined2 *)(*(int *)(param_1 + 2) + uVar1 * 2 + 0xe); + } + if (uVar2 == 3) { + if (param_2 == 0x200) { + uVar1 = 2; + } + else { + uVar1 = (uint)(param_2 == 0x100); + } + return *(undefined2 *)(*(int *)(param_1 + 2) + uVar1 * 2 + 0xe); + } + if (uVar2 == 0x15) { + return *(undefined2 *)(*(int *)(param_1 + 2) + 0xc); + } + param_1 = *(ushort **)(param_1 + 4); + if (param_1 == NULL) break; + uVar2 = *param_1; + } + } + return 0xffff; +} + + + +int proc_7F06C660(int objinst,ushort *param_2,longlong param_3) + +{ + short sVar2; + int iVar1; + + sVar2 = proc_7F06C570(param_2,param_3); + if (sVar2 < 0) { + iVar1 = 0; + } + else { + iVar1 = *(int *)(objinst + 0xc) + (int)sVar2 * 0x40; + } + return iVar1; +} + + + +int getsubmatrix(int objinst,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + ushort **object; + int iVar1; + + if (objinst == 0) { + osSyncPrintf("getsubmatrix: no objinst!\n",param_2,param_3,param_4); + return_null(); + } + object = *(ushort ***)(objinst + 8); + if (object == NULL) { + osSyncPrintf("getsubmatrix: objinst has no object!\n"); + return_null(); + object = *(ushort ***)(objinst + 8); + } + iVar1 = proc_7F06C660(objinst,*object,0); + return iVar1; +} + + + +void proc_7F06C710(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + + iVar1 = getsubmatrix(param_1,(uint)param_2,param_3,param_4); + if (iVar1 == 0) { + *param_2 = 0; + param_2[1] = 0; + param_2[2] = 0; + } + else { + *param_2 = *(undefined4 *)(iVar1 + 0x30); + param_2[1] = *(undefined4 *)(iVar1 + 0x34); + param_2[2] = *(undefined4 *)(iVar1 + 0x38); + } + return; +} + + + +float proc_7F06C768(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + float fVar2; + + iVar1 = getsubmatrix(param_1,param_2,param_3,param_4); + if (iVar1 == 0) { + fVar2 = 0.00000000; + } + else { + fVar2 = -*(float *)(iVar1 + 0x38); + } + return fVar2; +} + + + +int extract_id_from_object_structure_microcode(int objinst,ushort *partdesc) + +{ + ushort uVar1; + ushort *partdesc_00; + int iVar2; + uint uVar3; + + uVar3 = 0; + iVar2 = *(int *)(objinst + 0x10); + if (true) { + switch((uint)*partdesc & 0xff) { + case 1: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0xc); + break; + case 7: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x1aa); + break; + case 8: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0xc); + break; + case 9: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x22); + break; + case 0xb: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x44); + break; + case 0xc: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x20); + break; + case 0x12: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 4); + break; + case 0x17: + uVar3 = (uint)**(ushort **)(partdesc + 2); + break; + case 0x18: + uVar3 = (uint)*(ushort *)(*(int *)(partdesc + 2) + 0x1a); + } + } + partdesc_00 = *(ushort **)(partdesc + 4); + if (partdesc_00 != NULL) { + uVar1 = *partdesc_00; + while ((uVar1 & 0xff) != 0x17) { + partdesc_00 = *(ushort **)(partdesc_00 + 4); + if (partdesc_00 == NULL) goto LAB_7f06c888; + uVar1 = *partdesc_00; + } + iVar2 = extract_id_from_object_structure_microcode(objinst,partdesc_00); + iVar2 = *(int *)(iVar2 + 4); + } +LAB_7f06c888: + return (int)(uVar3 * 4 + iVar2); +} + + + +void getpartoffset(longlong objinst,ushort *partdesc,undefined4 *param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + int iVar2; + ushort uVar3; + + if (objinst == 0) { + osSyncPrintf("getpartoffset: no objinst!",partdesc,param_3,param_4); + return_null(); + } + if (partdesc == NULL) { + osSyncPrintf("getpartoffset: no partdesc!"); + return_null(); + } + uVar3 = *partdesc & 0xff; + if (uVar3 == 1) { + iVar2 = extract_id_from_object_structure_microcode((int)objinst,partdesc); + *param_3 = *(undefined4 *)(iVar2 + 8); + param_3[1] = *(undefined4 *)(iVar2 + 0xc); + param_3[2] = *(undefined4 *)(iVar2 + 0x10); + } + else { + if (uVar3 == 2) { + puVar1 = *(undefined4 **)(partdesc + 2); + *param_3 = *puVar1; + param_3[1] = puVar1[1]; + param_3[2] = puVar1[2]; + } + else { + if (uVar3 == 3) { + puVar1 = *(undefined4 **)(partdesc + 2); + *param_3 = *puVar1; + param_3[1] = puVar1[1]; + param_3[2] = puVar1[2]; + } + else { + if (uVar3 == 0x15) { + puVar1 = *(undefined4 **)(partdesc + 2); + *param_3 = *puVar1; + param_3[1] = puVar1[1]; + param_3[2] = puVar1[2]; + } + else { + *param_3 = 0; + param_3[1] = 0; + param_3[2] = 0; + } + } + } + } + return; +} + + + +void setpartoffset(longlong objinst,ushort *partedesc,float *param_3,undefined4 param_4) + +{ + float *pfVar1; + int iVar2; + ushort uVar3; + float fVar4; + float fVar5; + + if (objinst == 0) { + osSyncPrintf("setpartoffset: no objinst!",partedesc,param_3,param_4); + return_null(); + } + if (partedesc == NULL) { + osSyncPrintf("setpartoffset: no partdesc!"); + return_null(); + } + uVar3 = *partedesc & 0xff; + if (uVar3 == 1) { + iVar2 = extract_id_from_object_structure_microcode((int)objinst,partedesc); + fVar4 = *param_3 - *(float *)(iVar2 + 8); + fVar5 = param_3[2] - *(float *)(iVar2 + 0x10); + *(float *)(iVar2 + 8) = *param_3; + *(float *)(iVar2 + 0xc) = param_3[1]; + *(float *)(iVar2 + 0x10) = param_3[2]; + *(float *)(iVar2 + 0x24) = *(float *)(iVar2 + 0x24) + fVar4; + *(float *)(iVar2 + 0x2c) = *(float *)(iVar2 + 0x2c) + fVar5; + *(float *)(iVar2 + 0x34) = *(float *)(iVar2 + 0x34) + fVar4; + *(float *)(iVar2 + 0x3c) = *(float *)(iVar2 + 0x3c) + fVar5; + *(float *)(iVar2 + 0x40) = *(float *)(iVar2 + 0x40) + fVar4; + *(float *)(iVar2 + 0x48) = *(float *)(iVar2 + 0x48) + fVar5; + *(float *)(iVar2 + 0x4c) = *(float *)(iVar2 + 0x4c) + fVar4; + *(float *)(iVar2 + 0x54) = *(float *)(iVar2 + 0x54) + fVar5; + } + else { + if (uVar3 == 2) { + pfVar1 = *(float **)(partedesc + 2); + *pfVar1 = *param_3; + pfVar1[1] = param_3[1]; + pfVar1[2] = param_3[2]; + } + else { + if (uVar3 == 3) { + pfVar1 = *(float **)(partedesc + 2); + *pfVar1 = *param_3; + pfVar1[1] = param_3[1]; + pfVar1[2] = param_3[2]; + } + else { + if (uVar3 == 0x15) { + pfVar1 = *(float **)(partedesc + 2); + *pfVar1 = *param_3; + pfVar1[1] = param_3[1]; + pfVar1[2] = param_3[2]; + } + } + } + } + return; +} + + + +void getsuboffset(int objinst,undefined4 *param_2,undefined4 param_3,undefined4 param_4) + +{ + ushort **object; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + + if (objinst == 0) { + osSyncPrintf("getsuboffset: no objinst!",param_2,param_3); + return_null(); + param_4 = extraout_a3_lo; + } + object = *(ushort ***)(objinst + 8); + if (object == NULL) { + osSyncPrintf("getsuboffset: objinst has no object!"); + return_null(); + object = *(ushort ***)(objinst + 8); + param_4 = extraout_a3_lo_00; + } + getpartoffset((longlong)objinst,*object,param_2,param_4); + return; +} + + + +void setsuboffset(int objinst,xyzpoint *param_2) + +{ + ushort **object; + undefined4 in_a3_lo; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + + if (objinst == 0) { + osSyncPrintf("setsuboffset: no objinst!"); + return_null(); + in_a3_lo = extraout_a3_lo; + } + object = *(ushort ***)(objinst + 8); + if (object == NULL) { + osSyncPrintf("setsuboffset: objinst has no object!"); + return_null(); + object = *(ushort ***)(objinst + 8); + in_a3_lo = extraout_a3_lo_00; + } + setpartoffset((longlong)objinst,*object,(float *)param_2,in_a3_lo); + return; +} + + + +ushort ** getsubroty(int objinst,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + ushort uVar1; + ushort *partdesc; + ushort **object; + + if (objinst == 0) { + osSyncPrintf("getsubroty: no objinst!",param_2,param_3,param_4); + return_null(); + } + object = *(ushort ***)(objinst + 8); + if (object == NULL) { + osSyncPrintf("getsubroty: objinst has no object!"); + return_null(); + object = *(ushort ***)(objinst + 8); + partdesc = *object; + } + else { + partdesc = *object; + } + if (partdesc == NULL) { + osSyncPrintf("getsubroty: objinst has no root part!"); + return_null(); + partdesc = **(ushort ***)(objinst + 8); + uVar1 = *partdesc; + } + else { + uVar1 = *partdesc; + } + if ((uVar1 & 0xff) == 1) { + object = (ushort **)extract_id_from_object_structure_microcode(objinst,partdesc); + } + return object; +} + + + +void setsubroty(int objinst,float param_2,float param_3,undefined4 param_4) + +{ + ushort uVar1; + float fVar2; + int iVar3; + float fVar4; + float fVar5; + ushort *rootpart; + + if (objinst == 0) { + osSyncPrintf("setsubroty: no objinst!",param_3,param_4); + return_null(); + } + if (*(ushort ***)(objinst + 8) == NULL) { + osSyncPrintf("setsubroty: objinst has no object!"); + return_null(); + rootpart = **(ushort ***)(objinst + 8); + } + else { + rootpart = **(ushort ***)(objinst + 8); + } + if (rootpart == NULL) { + osSyncPrintf("setsubroty: objinst has no root part!"); + return_null(); + rootpart = **(ushort ***)(objinst + 8); + uVar1 = *rootpart; + } + else { + uVar1 = *rootpart; + } + if ((uVar1 & 0xff) == 1) { + iVar3 = extract_id_from_object_structure_microcode(objinst,rootpart); + fVar2 = flt_80054B5C; + fVar4 = param_3 - *(float *)(iVar3 + 0x14); + if (fVar4 < 0.00000000) { + fVar4 = fVar4 + flt_80054B58; + fVar5 = *(float *)(iVar3 + 0x30); + } + else { + fVar5 = *(float *)(iVar3 + 0x30); + } + *(float *)(iVar3 + 0x30) = fVar5 + fVar4; + if (fVar2 <= *(float *)(iVar3 + 0x30)) { + *(float *)(iVar3 + 0x30) = *(float *)(iVar3 + 0x30) - fVar2; + fVar5 = *(float *)(iVar3 + 0x20); + } + else { + fVar5 = *(float *)(iVar3 + 0x20); + } + *(float *)(iVar3 + 0x20) = fVar5 + fVar4; + if (fVar2 <= *(float *)(iVar3 + 0x20)) { + *(float *)(iVar3 + 0x20) = *(float *)(iVar3 + 0x20) - fVar2; + } + *(float *)(iVar3 + 0x14) = param_3; + } + return; +} + + + +void set_obj_instance_controller_scale(int instancecontroller,f32 scale) + +{ + undefined4 in_a1_lo; + + *(undefined4 *)(instancecontroller + 0x14) = in_a1_lo; + return; +} + + + +void proc_7F06CE84(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0xb8) = param_2; + return; +} + + + +float getjointsize(int objinst,ushort *param_2,undefined8 param_3,undefined4 param_4) + +{ + ushort uVar1; + + if (objinst == 0) { + osSyncPrintf("getjointsize: no objinst!\n",param_2,0,param_4); + return_null(); + } + if (param_2 != NULL) { + uVar1 = *param_2; + while( true ) { + if (true) { + switch((uint)uVar1 & 0xff) { + case 1: + return *(float *)(*(int *)(param_2 + 2) + 8) * *(float *)(objinst + 0x14); + case 2: + return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(objinst + 0x14); + case 3: + return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(objinst + 0x14); + case 0xb: + return *(float *)(*(int *)(param_2 + 2) + 0x40) * *(float *)(objinst + 0x14); + case 0xc: + return *(float *)(*(int *)(param_2 + 2) + 0x1c) * *(float *)(objinst + 0x14); + case 0xd: + return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(objinst + 0x14); + case 0xe: + return *(float *)(*(int *)(param_2 + 2) + 0xc) * *(float *)(objinst + 0x14); + case 0xf: + return *(float *)(*(int *)(param_2 + 2) + 0x18) * *(float *)(objinst + 0x14); + case 0x10: + return *(float *)(*(int *)(param_2 + 2) + 0x14) * *(float *)(objinst + 0x14); + case 0x15: + return *(float *)(*(int *)(param_2 + 2) + 0x10) * *(float *)(objinst + 0x14); + } + } + param_2 = *(ushort **)(param_2 + 4); + if (param_2 == NULL) break; + uVar1 = *param_2; + } + } + return 0.00000000; +} + + + +float getinstsize(int objinst,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + int objdesc; + + if (objinst == 0) { + osSyncPrintf("getinstsize: no objinst!\n",param_2,param_3,param_4); + return_null(); + } + objdesc = *(int *)(objinst + 8); + if (objdesc == 0) { + osSyncPrintf("getinstsize: no objdesc!\n"); + return_null(); + objdesc = *(int *)(objinst + 8); + } + return *(float *)(objdesc + 0x10) * *(float *)(objinst + 0x14); +} + + + +void proc_7F06D07C(float *param_1,float *param_2,float param_3) + +{ + float in_a2_lo; + + *param_1 = *param_1 + (*param_2 - *param_1) * in_a2_lo; + param_1[1] = param_1[1] + (param_2[1] - param_1[1]) * in_a2_lo; + param_1[2] = param_1[2] + (param_2[2] - param_1[2]) * in_a2_lo; + return; +} + + + +float proc_7F06D0CC(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) + +{ + float fVar1; + + fVar1 = param_2 - param_1; + if (param_2 < param_1) { + fVar1 = fVar1 + flt_80054BB4; + } + if (fVar1 < flt_80054BBC) { + param_1 = param_1 + fVar1 * param_5; + if (flt_80054BB8 <= param_1) { + return param_1 - flt_80054BB8; + } + } + else { + param_1 = param_1 - (flt_80054BB8 - fVar1) * param_5; + if (param_1 < 0.00000000) { + param_1 = param_1 + flt_80054BB8; + } + } + return param_1; +} + + + +void proc_7F06D160(undefined8 param_1,undefined8 param_2,float param_3) + +{ + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined4 extraout_a1_hi; + undefined4 extraout_a1_hi_00; + float *pfVar1; + undefined4 extraout_a1_lo; + undefined4 extraout_a1_lo_00; + float in_a2_lo; + float fVar2; + + pfVar1 = (float *)param_2; + extraout_a0._4_4_ = (float *)param_1; + fVar2 = proc_7F06D0CC(*extraout_a0._4_4_,*pfVar1,param_1,param_2,in_a2_lo); + *extraout_a0._4_4_ = fVar2; + fVar2 = proc_7F06D0CC(extraout_a0._4_4_[1],pfVar1[1],extraout_a0, + CONCAT44(extraout_a1_hi,extraout_a1_lo),in_a2_lo); + extraout_a0._4_4_[1] = fVar2; + fVar2 = proc_7F06D0CC(extraout_a0._4_4_[2],pfVar1[2],extraout_a0_00, + CONCAT44(extraout_a1_hi_00,extraout_a1_lo_00),in_a2_lo); + extraout_a0._4_4_[2] = fVar2; + return; +} + + + +uint proc_7F06D1CC(int param_1,int param_2,int param_3) + +{ + byte bVar1; + ushort uVar2; + ushort *puVar3; + ulonglong uVar4; + byte *pbVar5; + ulonglong uVar6; + ulonglong uVar7; + uint uVar8; + + puVar3 = (ushort *)(*(int *)(param_1 + 8) + param_2 * 6); + bVar1 = *(byte *)(puVar3 + 1); + uVar4 = (ulonglong)bVar1; + uVar8 = 0; + if (bVar1 == 0) { + uVar2 = puVar3[2]; + } + else { + uVar7 = SEXT48((int)(8 - ((uint)*puVar3 + param_3 & 7))); + uVar6 = uVar7 & 0xff; + uVar6._4_4_ = (int)uVar6; + pbVar5 = (byte *)(*(int *)(param_1 + 0x10) + ((uint)*puVar3 + param_3 >> 3)); + if ((uVar7 & 0xff) <= uVar4) { + do { + uVar4 = (longlong)(int)((int)uVar4 - (uint)uVar6) & 0xff; + uVar8 |= ((uint)*pbVar5 & (1 << ((uint)uVar6 & 0x1f)) - 1U) << ((uint)uVar4 & 0x1f) + & 0xffff; + pbVar5 = pbVar5 + 1; + uVar6 = 8; + uVar6._4_4_ = 8; + } while (7 < uVar4); + } + if (uVar4 != 0) { + uVar8 |= (int)(uint)*pbVar5 >> (uVar6._4_4_ - (uint)uVar4 & 0x1f) & + (1 << ((uint)uVar4 & 0x1f)) - 1U & 0xffff; + } + if ((bVar1 < 0x10) && ((uVar8 & 1 << ((uint)bVar1 + 0x1f & 0x1f)) != 0)) { + uVar8 |= (1 << (0x10 - (uint)bVar1 & 0x1f)) + -1 << ((uint)bVar1 & 0x1f) & 0xffffU; + } + uVar2 = puVar3[2]; + } + return uVar8 + uVar2 & 0xffff; +} + + + +uint proc_7F06D2E4(int param_1,longlong param_2,int param_3,int param_4,int param_5,short *param_6) + +{ + ushort uVar1; + uint uVar2; + uint uVar3; + + param_5 = (uint)*(ushort *)(param_4 + 0xc) * param_5; + if (param_2 == 0) { + uVar1 = *(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 2); + } + else { + uVar1 = *(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 4); + } + uVar2 = proc_7F06D1CC(param_4,(uint)uVar1,param_5); + *param_6 = (short)uVar2; + uVar2 = proc_7F06D1CC(param_4,(uint)uVar1 + 1,param_5); + param_6[1] = (short)uVar2; + uVar2 = proc_7F06D1CC(param_4,(uint)uVar1 + 2,param_5); + param_6[2] = (short)uVar2; + uVar2 = proc_7F06D1CC(param_4,(uint)uVar1 + 3,param_5); + uVar3 = uVar2 & 0xffff; + if (((int)param_2 != 0) && (*param_6 = -*param_6, uVar2 != 0)) { + uVar3 = 0x10000 - uVar2 & 0xffff; + } + return uVar3; +} + + + +float proc_7F06D3F4(int param_1,longlong param_2,int param_3,int param_4,int param_5,float *param_6) + +{ + uint uVar1; + float fVar2; + short sStack8; + short sStack6; + short sStack4; + + uVar1 = proc_7F06D2E4(param_1,param_2,param_3,param_4,param_5,&sStack8); + *param_6 = (float)(int)sStack8; + fVar2 = (float)uVar1; + param_6[1] = (float)(int)sStack6; + param_6[2] = (float)(int)sStack4; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + return (fVar2 * flt_80054BC0) / 65536.00000000; +} + + + +void proc_7F06D490(int param_1,ushort *param_2) + +{ + char *pcVar2; + longlong lVar1; + undefined8 extraout_a0; + undefined8 extraout_a1; + int iVar3; + float fVar4; + float extraout_f12; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + + pcVar2 = (char *)extract_id_from_object_structure_microcode(param_1,param_2); + if (*pcVar2 == '\0') { + fStack16 = *(float *)(pcVar2 + 0x34); + fStack12 = *(float *)(pcVar2 + 0x38); + fStack8 = *(float *)(pcVar2 + 0x3c); + *(undefined4 *)(pcVar2 + 0x14) = *(undefined4 *)(pcVar2 + 0x30); + if (*(float *)(param_1 + 0x2c) == 0.00000000) { + iVar3 = *(int *)(param_1 + 0x54); + } + else { + if (pcVar2[1] == '\0') { + iVar3 = *(int *)(param_1 + 0x54); + } + else { + proc_7F06D07C(&fStack16,(float *)(pcVar2 + 0x24),extraout_f12); + fVar4 = proc_7F06D0CC(*(float *)(pcVar2 + 0x30),*(float *)(pcVar2 + 0x20), + extraout_a0,extraout_a1,*(float *)(param_1 + 0x2c)); + *(float *)(pcVar2 + 0x14) = fVar4; + iVar3 = *(int *)(param_1 + 0x54); + } + } + if (((iVar3 != 0) || (*(float *)(param_1 + 0x84) != 0.00000000)) && (pcVar2[2] != '\0')) { + fVar4 = *(float *)(pcVar2 + 0x50); + if (*(float *)(param_1 + 0x5c) != 0.00000000) { + fVar4 = fVar4 + (*(float *)(pcVar2 + 0x44) - fVar4) * *(float *)(param_1 + 0x5c); + } + fStack12 = fStack12 + (fVar4 - fStack12) * *(float *)(param_1 + 0x84); + } + fStack28 = fStack16; + fStack24 = fStack12; + fStack20 = fStack8; + if ((*(code **)(param_1 + 0xa0) == NULL) || + (lVar1 = (**(code **)(param_1 + 0xa0))(param_1,pcVar2 + 8,&fStack28,pcVar2 + 4), + lVar1 != 0)) { + fStack16 = fStack28 - fStack16; + fStack8 = fStack20 - fStack8; + *(float *)(pcVar2 + 8) = fStack28; + *(float *)(pcVar2 + 0xc) = fStack24 + *(float *)(pcVar2 + 4); + *(float *)(pcVar2 + 0x10) = fStack20; + *(float *)(pcVar2 + 0x34) = *(float *)(pcVar2 + 0x34) + fStack16; + *(float *)(pcVar2 + 0x3c) = *(float *)(pcVar2 + 0x3c) + fStack8; + if (pcVar2[1] != '\0') { + *(float *)(pcVar2 + 0x24) = *(float *)(pcVar2 + 0x24) + fStack16; + *(float *)(pcVar2 + 0x2c) = *(float *)(pcVar2 + 0x2c) + fStack8; + } + if (pcVar2[2] != '\0') { + *(float *)(pcVar2 + 0x4c) = *(float *)(pcVar2 + 0x4c) + fStack16; + *(float *)(pcVar2 + 0x54) = *(float *)(pcVar2 + 0x54) + fStack8; + *(float *)(pcVar2 + 0x40) = *(float *)(pcVar2 + 0x40) + fStack16; + *(float *)(pcVar2 + 0x48) = *(float *)(pcVar2 + 0x48) + fStack8; + } + } + } + return; +} + + + +void subcalcpos(int objanim,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + ushort *puVar1; + + if (objanim == 0) { + osSyncPrintf("subcalcpos: no objanim!\n",param_2,param_3,param_4); + return_null(); + } + if (*(ushort ***)(objanim + 8) == NULL) { + osSyncPrintf("subcalcpos: no objdesc!\n"); + return_null(); + puVar1 = **(ushort ***)(objanim + 8); + } + else { + puVar1 = **(ushort ***)(objanim + 8); + } + if ((puVar1 != NULL) && ((*puVar1 & 0xff) == 1)) { + proc_7F06D490(objanim,puVar1); + } + return; +} + + + +void process_01_group_heading(float **param_1,int objinst,ushort *partdesc) + +{ + int iVar1; + longlong extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + longlong lVar2; + longlong extraout_a1; + longlong lVar3; + float *pfVar4; + float fVar5; + float afStack96 [16]; + float *pfStack32; + float *pfStack24; + float fStack20; + float *pfStack16; + float fStack12; + int iStack8; + int iStack4; + + iStack4 = *(int *)(partdesc + 2); + iVar1 = extract_id_from_object_structure_microcode(objinst,partdesc); + lVar3 = (longlong)objinst; + pfStack16 = (float *)(iVar1 + 8); + fStack12 = *(float *)(objinst + 0x14); + fVar5 = *(float *)(iVar1 + 0x14); + pfStack32 = (float *)(*(int *)(objinst + 0xc) + (int)*(short *)(iStack4 + 2) * 0x40); + lVar2 = (longlong)(int)*(ushort **)(partdesc + 4); + if (lVar2 == 0) { + pfVar4 = *param_1; + } + else { + fStack20 = fVar5; + iStack8 = iVar1; + pfVar4 = (float *)proc_7F06C660(objinst,*(ushort **)(partdesc + 4),0); + lVar3 = extraout_a0; + lVar2 = extraout_a1; + fVar5 = fStack20; + iVar1 = iStack8; + } + if (*(float *)(iVar1 + 0x18) != 0.00000000) { + pfStack24 = pfVar4; + fVar5 = proc_7F06D0CC(fVar5,*(float *)(iVar1 + 0x1c),lVar3,lVar2,*(float *)(iVar1 + 0x18)); + pfVar4 = pfStack24; + } + if (pfVar4 == NULL) { + proc_7F0584D0(pfStack16,fVar5,(float *)fVar5); + if (fStack12 != 1.00000000) { + proc_7F058B10(fStack12,extraout_a0_01,pfStack32); + } + } + else { + pfStack24 = pfVar4; + proc_7F0584D0(pfStack16,fVar5,(float *)fVar5); + if (fStack12 != 1.00000000) { + proc_7F058B10(fStack12,extraout_a0_00,afStack96); + } + proc_7F05818C(pfStack24,afStack96,(int)pfStack32); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F06D8B0(void) + +{ + float **in_a0_lo; + longlong lVar1; + longlong extraout_a0; + longlong extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 uVar2; + int in_a1_lo; + ushort *in_a2_lo; + int iVar3; + float *in_a3_lo; + float in_f0; + float extraout_f12; + float fVar4; + float fVar5; + float *pfStack144; + float afStack140 [4]; + float afStack124 [7]; + int iStack96; + int iStack92; + int iStack88; + int iStack84; + float afStack80 [17]; + float *pfStack12; + xyzpoint *pxStack8; + uint uStack4; + + uStack4 = (uint)*in_a2_lo; + pxStack8 = *(xyzpoint **)(in_a2_lo + 2); + iStack84 = (int)*(short *)((int)&pxStack8[1].x + 2); + iStack88 = (int)*(short *)&pxStack8[1].y; + iStack92 = (int)*(short *)((int)&pxStack8[1].y + 2); + iStack96 = *(int *)(in_a1_lo + 0xc); + if (*(ushort **)(in_a2_lo + 4) == NULL) { + pfStack12 = *in_a0_lo; + } + else { + pfStack12 = (float *)proc_7F06C660(in_a1_lo,*(ushort **)(in_a2_lo + 4),0); + } + if (pfStack12 == NULL) { + proc_7F05892C((undefined4 *)pxStack8,in_a3_lo,(float *)(iStack84 * 0x40 + iStack96)); + } + else { + proc_7F05892C((undefined4 *)pxStack8,in_a3_lo,afStack80); + iVar3 = iStack84 * 0x40 + iStack96; + proc_7F05818C(pfStack12,afStack80,iVar3); + if (dword_80036090 != NULL) { + in_f0 = (float)(*dword_80036090)(iStack84,iVar3); + } + } + lVar1 = (longlong)(int)in_a3_lo; + if ((uStack4 & 0x100) != 0) { + proc_7F05B3F4(in_a3_lo,afStack124); + proc_7F05BC68(afStack124,extraout_f12,(float *)0x3f000000); + if (pfStack12 == NULL) { + proc_7F05B9B4((float *)pxStack8,afStack140,(float *)(iStack88 * 0x40 + iStack96)); + lVar1 = extraout_a0_00; + } + else { + proc_7F05B9B4((float *)pxStack8,afStack140,afStack80); + proc_7F05818C(pfStack12,afStack80,iStack88 * 0x40 + iStack96); + lVar1 = extraout_a0; + } + } + if ((uStack4 & 0x200) != 0) { + if (pfStack12 == NULL) { + pfStack144 = (float *)(iStack92 * 0x40 + iStack96); + } + else { + pfStack144 = afStack80; + } + fVar4 = in_a3_lo[1]; + if (fVar4 < flt_80054BC4) { + fVar4 = fVar4 * 0.50000000; + } + else { + fVar4 = flt_80054BCC - (flt_80054BC8 - fVar4) * 0.50000000; + } + proc_7F0585FC(fVar4,lVar1,pfStack144); + if (flt_80054BD0 <= fVar4) { + fVar4 = flt_80054BD4 - fVar4; + } + fVar5 = 1.50000000; + uVar2 = extraout_a0_01; + if (fVar4 < flt_80054BD8) { + proc_7F05A9E0(fVar4); + uVar2 = extraout_a0_02; + fVar5 = in_f0; + } + proc_7F058A4C(fVar5,uVar2,(int)pfStack144); + copies_first_3_floats_from_a0_to_a1_plus_0x30(pxStack8,(int)pfStack144); + if (pfStack12 != NULL) { + proc_7F05818C(pfStack12,pfStack144,iStack92 * 0x40 + iStack96); + } + } + return; +} + + + +void proc_7F06DB5C(float **param_1,int param_2,ushort *param_3,float *param_4) + +{ + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 uVar1; + int iVar2; + float fVar3; + float fVar4; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fVar5; + float *pfStack128; + float afStack124 [7]; + int iStack96; + int iStack92; + int iStack88; + int iStack84; + float afStack80 [17]; + float *pfStack12; + xyzpoint *pxStack8; + uint uStack4; + + uStack4 = (uint)*param_3; + pxStack8 = *(xyzpoint **)(param_3 + 2); + iStack84 = (int)*(short *)((int)&pxStack8[1].x + 2); + iStack88 = (int)*(short *)&pxStack8[1].y; + iStack92 = (int)*(short *)((int)&pxStack8[1].y + 2); + iStack96 = *(int *)(param_2 + 0xc); + if (*(ushort **)(param_3 + 4) == NULL) { + pfStack12 = *param_1; + } + else { + pfStack12 = (float *)proc_7F06C660(param_2,*(ushort **)(param_3 + 4),0); + } + if (pfStack12 == NULL) { + proc_7F05B9B4((float *)pxStack8,param_4,(float *)(iStack84 * 0x40 + iStack96)); + fVar3 = extraout_f12_01; + } + else { + proc_7F05B9B4((float *)pxStack8,param_4,afStack80); + iVar2 = iStack84 * 0x40 + iStack96; + proc_7F05818C(pfStack12,afStack80,iVar2); + fVar3 = extraout_f12; + if (dword_80036090 != NULL) { + (*dword_80036090)(iStack84,iVar2); + fVar3 = extraout_f12_00; + } + } + if ((uStack4 & 0x100) != 0) { + proc_7F05BC68(param_4,fVar3,(float *)0x3f000000); + if (pfStack12 == NULL) { + proc_7F05B9B4((float *)pxStack8,afStack124,(float *)(iStack88 * 0x40 + iStack96)); + } + else { + proc_7F05B9B4((float *)pxStack8,afStack124,afStack80); + proc_7F05818C(pfStack12,afStack80,iStack88 * 0x40 + iStack96); + } + } + if ((uStack4 & 0x200) != 0) { + if (pfStack12 == NULL) { + pfStack128 = (float *)(iStack92 * 0x40 + iStack96); + } + else { + pfStack128 = afStack80; + } + fVar3 = proc_7F05ACB0(*param_4); + fVar4 = fVar3 + fVar3; + if (fVar4 < flt_80054BDC) { + fVar4 = fVar4 * 0.50000000; + } + else { + fVar4 = flt_80054BE4 - (flt_80054BE0 - fVar4) * 0.50000000; + } + proc_7F0585FC(fVar4,extraout_a0,pfStack128); + if (flt_80054BE8 <= fVar4) { + fVar4 = flt_80054BEC - fVar4; + } + fVar5 = 1.50000000; + uVar1 = extraout_a0_00; + if (fVar4 < flt_80054BF0) { + proc_7F05A9E0(fVar4); + uVar1 = extraout_a0_01; + fVar5 = fVar3; + } + proc_7F058A4C(fVar5,uVar1,(int)pfStack128); + copies_first_3_floats_from_a0_to_a1_plus_0x30(pxStack8,(int)pfStack128); + if (pfStack12 != NULL) { + proc_7F05818C(pfStack12,pfStack128,iStack92 * 0x40 + iStack96); + } + } + return; +} + + + +uint proc_7F06DE04(int param_1,uint param_2,uint param_3) + +{ + uint uVar1; + byte *pbVar2; + uint uVar3; + uint uVar4; + uint uVar5; + + uVar4 = 8 - (param_3 & 7); + uVar5 = 0; + uVar1 = param_2 & 0xff; + pbVar2 = (byte *)(param_1 + (param_3 >> 3)); + uVar3 = uVar4 & 0xff; + if ((uVar4 & 0xff) <= (param_2 & 0xff)) { + do { + uVar4 = uVar1 - uVar3; + uVar1 = uVar4 & 0xff; + uVar5 |= ((uint)*pbVar2 & (1 << (uVar3 & 0x1f)) - 1U) << (uVar4 & 0x1f) & 0xffff; + pbVar2 = pbVar2 + 1; + uVar3 = 8; + } while (7 < uVar1); + } + if (uVar1 != 0) { + uVar5 |= (int)(uint)*pbVar2 >> (uVar3 - uVar1 & 0x1f) & (1 << (uVar1 & 0x1f)) - 1U & 0xffff; + } + return uVar5 << (0x10 - (param_2 & 0xff) & 0x1f) & 0xffff; +} + + + +void proc_7F06DEC0(int param_1,longlong param_2,int param_3,int param_4,int param_5,float *param_6) + +{ + byte bVar1; + float fVar2; + uint uVar3; + uint uVar4; + uint uVar5; + float fVar6; + + bVar1 = *(byte *)(param_4 + 6); + if (param_2 == 0) { + uVar5 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 2) * (uint)bVar1; + } + else { + uVar5 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 4) * (uint)bVar1; + } + uVar3 = proc_7F06DE04(param_5,(uint)bVar1,uVar5); + uVar5 += bVar1; + uVar4 = proc_7F06DE04(param_5,(uint)bVar1,uVar5); + uVar5 = proc_7F06DE04(param_5,(uint)bVar1,uVar5 + bVar1); + fVar2 = flt_80054BF4; + fVar6 = (float)(uVar3 & 0xffff); + if (false) { + fVar6 = fVar6 + 4294967296.00000000; + } + *param_6 = (fVar6 * flt_80054BF4) / 65536.00000000; + if ((int)param_2 == 0) { + fVar6 = (float)(uVar4 & 0xffff); + if (false) { + fVar6 = fVar6 + 4294967296.00000000; + } + param_6[1] = (fVar6 * fVar2) / 65536.00000000; + fVar6 = (float)(uVar5 & 0xffff); + if (false) { + fVar6 = fVar6 + 4294967296.00000000; + } + param_6[2] = (fVar6 * fVar2) / 65536.00000000; + } + else { + if ((short)uVar4 == 0) { + param_6[1] = 0.00000000; + } + else { + param_6[1] = ((float)(0x10000 - (uVar4 & 0xffff)) * fVar2) / 65536.00000000; + } + if ((short)uVar5 == 0) { + param_6[2] = 0.00000000; + } + else { + param_6[2] = ((float)(0x10000 - (uVar5 & 0xffff)) * fVar2) / 65536.00000000; + } + } + return; +} + + + +void process_02_position(float **param_1,int param_2,ushort *param_3) + +{ + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fStack108; + undefined4 uStack104; + undefined4 uStack100; + float afStack96 [4]; + float afStack80 [4]; + float afStack64 [4]; + float fStack48; + undefined4 uStack44; + undefined4 uStack40; + float fStack36; + undefined4 uStack32; + undefined4 uStack28; + float fStack24; + undefined4 uStack20; + undefined4 uStack16; + int iStack12; + uint uStack8; + + iStack12 = *(int *)(*(int *)(param_2 + 8) + 4); + fStack24 = dword_80036094; + uStack20 = dword_80036098; + uStack16 = dword_8003609C; + uStack8 = (uint)*(ushort *)(*(int *)(param_3 + 2) + 0xc); + proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x24),iStack12,*(int *)(param_2 + 0x20), + *(int *)(param_2 + 0x34),&fStack24); + if (*(float *)(param_2 + 0x2c) != 0.00000000) { + fStack36 = dword_800360A0; + uStack32 = dword_800360A4; + uStack28 = dword_800360A8; + proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x24),iStack12,*(int *)(param_2 + 0x20), + *(int *)(param_2 + 0x38),&fStack36); + proc_7F06D160((longlong)(int)&fStack24,(longlong)(int)&fStack36,extraout_f12); + } + if (*(float *)(param_2 + 0x84) == 0.00000000) { + proc_7F06D8B0(); + } + else { + fStack48 = dword_800360AC; + uStack44 = dword_800360B0; + uStack40 = dword_800360B4; + proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x25),iStack12,*(int *)(param_2 + 0x54), + *(int *)(param_2 + 100),&fStack48); + if (*(float *)(param_2 + 0x5c) != 0.00000000) { + fStack108 = dword_800360B8; + uStack104 = dword_800360BC; + uStack100 = dword_800360C0; + proc_7F06DEC0(uStack8,(longlong)*(char *)(param_2 + 0x25),iStack12, + *(int *)(param_2 + 0x54),*(int *)(param_2 + 0x68),&fStack108); + proc_7F06D160((longlong)(int)&fStack48,(longlong)(int)&fStack108,extraout_f12_00); + } + proc_7F05B3F4(&fStack24,afStack64); + proc_7F05B3F4(&fStack48,afStack80); + proc_7F05BE10(afStack64,afStack80); + proc_7F05BA08(afStack64,afStack80,extraout_f12_01,*(float **)(param_2 + 0x84)); + proc_7F06DB5C(param_1,param_2,param_3,afStack96); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F06E2B8(void) + +{ + short sVar1; + short sVar2; + int iVar3; + uint uVar4; + float **in_a0_lo; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a0_03; + undefined8 extraout_a0_04; + undefined8 uVar5; + int in_a1_lo; + ushort *in_a2_lo; + float *in_a3_lo; + int iVar6; + float in_f0; + float in_f12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fVar7; + float *pfStack112; + float afStack80 [17]; + float *pfStack12; + xyzpoint *pxStack8; + uint uStack4; + + uStack4 = (uint)*in_a2_lo; + pxStack8 = *(xyzpoint **)(in_a2_lo + 2); + sVar1 = *(short *)&pxStack8[1].y; + sVar2 = *(short *)((int)&pxStack8[1].x + 2); + iVar6 = (int)*(short *)((int)&pxStack8[1].y + 2); + iVar3 = *(int *)(in_a1_lo + 0xc); + if (*(ushort **)(in_a2_lo + 4) == NULL) { + pfStack12 = *in_a0_lo; + } + else { + pfStack12 = (float *)proc_7F06C660(in_a1_lo,*(ushort **)(in_a2_lo + 4),0); + in_f12 = extraout_f12; + } + if (pfStack12 == NULL) { + proc_7F0584D0((float *)pxStack8,in_f12,in_a3_lo); + uVar5 = extraout_a0_00; + fVar7 = extraout_f12_01; + } + else { + proc_7F0584D0((float *)pxStack8,in_f12,in_a3_lo); + proc_7F05818C(pfStack12,afStack80,(int)sVar2 * 0x40 + iVar3); + uVar5 = extraout_a0; + fVar7 = extraout_f12_00; + } + if (((uStack4 & 0x100) != 0) || ((uStack4 & 0x200) != 0)) { + if ((float)in_a3_lo < flt_80054BF8) { + in_a3_lo = (float *)((float)in_a3_lo * 0.50000000); + } + else { + in_a3_lo = (float *)(flt_80054C00 - (flt_80054BFC - (float)in_a3_lo) * 0.50000000); + } + } + uVar4 = uStack4 & 0x200; + if ((uStack4 & 0x100) != 0) { + if (pfStack12 == NULL) { + proc_7F0584D0((float *)pxStack8,fVar7,in_a3_lo); + uVar5 = extraout_a0_02; + } + else { + proc_7F0584D0((float *)pxStack8,fVar7,in_a3_lo); + proc_7F05818C(pfStack12,afStack80,(int)sVar1 * 0x40 + iVar3); + uVar5 = extraout_a0_01; + } + } + if (uVar4 != 0) { + if (pfStack12 == NULL) { + pfStack112 = (float *)(iVar6 * 0x40 + iVar3); + } + else { + pfStack112 = afStack80; + } + proc_7F0585FC((float)in_a3_lo,uVar5,pfStack112); + if (flt_80054C04 <= (float)in_a3_lo) { + in_a3_lo = (float *)(flt_80054C08 - (float)in_a3_lo); + } + fVar7 = 1.50000000; + uVar5 = extraout_a0_03; + if ((float)in_a3_lo < flt_80054C0C) { + proc_7F05A9E0((float)in_a3_lo); + uVar5 = extraout_a0_04; + fVar7 = in_f0; + } + proc_7F058A4C(fVar7,uVar5,(int)pfStack112); + copies_first_3_floats_from_a0_to_a1_plus_0x30(pxStack8,(int)pfStack112); + if (pfStack12 != NULL) { + proc_7F05818C(pfStack12,pfStack112,iVar6 * 0x40 + iVar3); + } + } + return; +} + + + +float proc_7F06E540(int param_1,longlong param_2,int param_3,int param_4,int param_5) + +{ + byte bVar1; + uint uVar2; + float fVar3; + + bVar1 = *(byte *)(param_4 + 6); + if (param_2 == 0) { + uVar2 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 2) * (uint)bVar1; + } + else { + uVar2 = (uint)*(ushort *)(*(int *)(param_3 + 4) + param_1 * 6 + 4) * (uint)bVar1; + } + uVar2 = proc_7F06DE04(param_5,(uint)bVar1,uVar2); + fVar3 = 0.00000000; + if ((int)param_2 == 0) { + fVar3 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + fVar3 = (fVar3 * flt_80054C14) / 65536.00000000; + } + else { + if (uVar2 != 0) { + fVar3 = ((float)(0x10000 - uVar2) * flt_80054C10) / 65536.00000000; + } + } + return fVar3; +} + + + +void process_03_unknown(undefined4 param_1,int param_2,int param_3) + +{ + ushort uVar1; + int iVar2; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + ulonglong extraout_a0_01; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + undefined8 extraout_a1_02; + undefined8 uVar3; + ulonglong uVar4; + float fVar5; + float fVar6; + float fStack24; + + uVar1 = *(ushort *)(*(int *)(param_3 + 4) + 0xc); + uVar4 = (ulonglong)uVar1; + iVar2 = *(int *)(*(int *)(param_2 + 8) + 4); + fVar5 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x24),iVar2, + *(int *)(param_2 + 0x20),*(int *)(param_2 + 0x34)); + if (*(float *)(param_2 + 0x2c) != 0.00000000) { + fVar6 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x24),iVar2, + *(int *)(param_2 + 0x20),*(int *)(param_2 + 0x38)); + fVar5 = proc_7F06D0CC(fVar5,fVar6,extraout_a0,extraout_a1,*(float *)(param_2 + 0x2c)); + } + if (*(float *)(param_2 + 0x84) != 0.00000000) { + fStack24 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x25),iVar2, + *(int *)(param_2 + 0x54),*(int *)(param_2 + 100)); + uVar3 = extraout_a1_00; + if (*(float *)(param_2 + 0x5c) != 0.00000000) { + fVar6 = proc_7F06E540((uint)uVar1,(longlong)*(char *)(param_2 + 0x25),iVar2, + *(int *)(param_2 + 0x54),*(int *)(param_2 + 0x68)); + fStack24 = proc_7F06D0CC(fStack24,fVar6,extraout_a0_00,extraout_a1_01, + *(float *)(param_2 + 0x5c)); + uVar4 = extraout_a0_01; + uVar3 = extraout_a1_02; + } + proc_7F06D0CC(fVar5,fStack24,uVar4,uVar3,*(float *)(param_2 + 0x84)); + } + proc_7F06E2B8(); + return; +} + + + +void process_15_subposition(float **param_1,int param_2,int param_3) + +{ + short sVar1; + int iVar2; + float afStack72 [16]; + float *pfStack8; + xyzpoint *pxStack4; + + pxStack4 = *(xyzpoint **)(param_3 + 4); + iVar2 = *(int *)(param_2 + 0xc); + sVar1 = *(short *)&pxStack4[1].x; + if (*(ushort **)(param_3 + 8) == NULL) { + pfStack8 = *param_1; + } + else { + pfStack8 = (float *)proc_7F06C660(param_2,*(ushort **)(param_3 + 8),0); + } + if (pfStack8 == NULL) { + init_something_copy_posdata_to_it(pxStack4,(int *)((int)sVar1 * 0x40 + iVar2)); + } + else { + init_something_copy_posdata_to_it(pxStack4,(int *)afStack72); + proc_7F05818C(pfStack8,afStack72,(int)sVar1 * 0x40 + iVar2); + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void process_08_distance_triggers(void) + +{ + float *pfVar1; + undefined4 *puVar2; + int iVar3; + int in_a0_lo; + ushort *in_a1_lo; + f32 fVar4; + float fVar5; + float fVar6; + + pfVar1 = *(float **)(in_a1_lo + 2); + puVar2 = (undefined4 *)extract_id_from_object_structure_microcode(in_a0_lo,in_a1_lo); + iVar3 = proc_7F06C660(in_a0_lo,in_a1_lo,0); + if (dword_80036084 == 0) { + fVar4 = getPlayer_c_lodscalez(); + fVar5 = (float)fVar4 * -*(float *)(iVar3 + 0x38); + if (flt_80036088 != 1.00000000) { + fVar5 = fVar5 * flt_80036088; + } + } + else { + fVar5 = 0.00000000; + } + if (fVar5 <= *pfVar1 * *(float *)(in_a0_lo + 0x14)) { + if (*pfVar1 != 0.00000000) goto LAB_7f06e954; + fVar6 = pfVar1[1]; + } + else { + fVar6 = pfVar1[1]; + } + if (fVar5 <= fVar6 * *(float *)(in_a0_lo + 0x14)) { + *puVar2 = 1; + *(float *)(in_a1_lo + 10) = pfVar1[2]; + return; + } +LAB_7f06e954: + *puVar2 = 0; + *(undefined4 *)(in_a1_lo + 10) = 0; + return; +} + + + +void proc_7F06E970(int param_1,ushort *param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = *(int *)(param_2 + 2); + piVar2 = (int *)extract_id_from_object_structure_microcode(param_1,param_2); + if (*piVar2 == 0) { + *(undefined4 *)(param_2 + 10) = 0; + } + else { + *(undefined4 *)(param_2 + 10) = *(undefined4 *)(iVar1 + 8); + } + return; +} + + + +void process_12_handle_switch(int param_1,ushort *param_2) + +{ + undefined4 *puVar1; + int *piVar2; + + puVar1 = *(undefined4 **)(param_2 + 2); + piVar2 = (int *)extract_id_from_object_structure_microcode(param_1,param_2); + if (*piVar2 == 0) { + *(undefined4 *)(param_2 + 10) = 0; + } + else { + *(undefined4 *)(param_2 + 10) = *puVar1; + } + return; +} + + + +void process_17_pointer_to_head(int param_1,ushort *param_2) + +{ + int **ppiVar1; + int iVar2; + + ppiVar1 = (int **)extract_id_from_object_structure_microcode(param_1,param_2); + if (*ppiVar1 != NULL) { + iVar2 = **ppiVar1; + *(int *)(param_2 + 10) = iVar2; + if (iVar2 != 0) { + *(ushort **)(iVar2 + 8) = param_2; + while (iVar2 = *(int *)(iVar2 + 0xc), iVar2 != 0) { + *(ushort **)(iVar2 + 8) = param_2; + } + } + } + return; +} + + + +void proc_7F06EA54(int param_1,longlong param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar4 = *(int *)(param_1 + 4); + if (param_2 == 0) { + iVar1 = *(int *)(iVar4 + 0x1c); + iVar4 = *(int *)(iVar4 + 0x18); + } + else { + iVar1 = *(int *)(iVar4 + 0x18); + iVar4 = *(int *)(iVar4 + 0x1c); + } + if (iVar1 == 0) { + *(int *)(param_1 + 0x14) = iVar4; + if (iVar4 != 0) { + *(undefined4 *)(iVar4 + 0x10) = 0; + } + } + else { + *(int *)(param_1 + 0x14) = iVar1; + *(undefined4 *)(iVar1 + 0x10) = 0; + iVar3 = iVar1; + if ((*(int *)(iVar1 + 0xc) != 0) && (iVar4 != *(int *)(iVar1 + 0xc))) { + iVar2 = *(int *)(iVar1 + 0xc); + do { + iVar3 = iVar2; + iVar2 = *(int *)(iVar3 + 0xc); + if (iVar2 == 0) break; + } while (iVar4 != iVar2); + } + *(int *)(iVar3 + 0xc) = iVar4; + if (iVar4 != 0) { + *(int *)(iVar4 + 0x10) = iVar3; + if ((*(int *)(iVar4 + 0xc) != 0) && (iVar1 != *(int *)(iVar4 + 0xc))) { + iVar3 = *(int *)(iVar4 + 0xc); + do { + iVar4 = iVar3; + iVar3 = *(int *)(iVar4 + 0xc); + if (iVar3 == 0) break; + } while (iVar1 != iVar3); + } + *(undefined4 *)(iVar4 + 0xc) = 0; + return; + } + } + return; +} + + + +void proc_7F06EB10(int param_1,ushort *param_2) + +{ + int *piVar1; + + piVar1 = (int *)extract_id_from_object_structure_microcode(param_1,param_2); + proc_7F06EA54((int)param_2,(longlong)*piVar1); + return; +} + + + +void process_09_head_hat_placement_interlink(int param_1,ushort *param_2) + +{ + short sVar1; + float *pfVar2; + float *pfVar3; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float *pfStack12; + undefined4 *puStack8; + + pfVar2 = *(float **)(param_2 + 2); + puStack8 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,param_2); + pfVar3 = (float *)proc_7F06C660(param_1,param_2,0); + sVar1 = *(short *)(pfVar2 + 8); + if (sVar1 == 0) { + fStack24 = pfVar2[3]; + fStack20 = pfVar2[4]; + fStack16 = pfVar2[5]; + pfStack12 = pfVar3; + proc_7F0583D8(pfVar3,&fStack24); + pfVar3 = pfStack12; + } + else { + if (sVar1 == 2) { + fStack24 = pfVar2[4] * pfVar3[4]; + fStack20 = pfVar2[4] * pfVar3[5]; + fStack16 = pfVar2[4] * pfVar3[6]; + } + else { + if (sVar1 == 3) { + fStack24 = pfVar2[5] * pfVar3[8]; + fStack20 = pfVar2[5] * pfVar3[9]; + fStack16 = pfVar2[5] * pfVar3[10]; + } + else { + if (sVar1 != 1) { + fStack36 = *pfVar2; + goto LAB_7f06ec68; + } + fStack24 = pfVar2[3] * *pfVar3; + fStack20 = pfVar2[3] * pfVar3[1]; + fStack16 = pfVar2[3] * pfVar3[2]; + } + } + } + fStack36 = *pfVar2; +LAB_7f06ec68: + fStack32 = pfVar2[1]; + fStack28 = pfVar2[2]; + proc_7F058474(pfVar3,&fStack36); + if (fStack28 * fStack16 + fStack24 * fStack36 + fStack20 * fStack32 < 0.00000000) { + *puStack8 = 1; + } + else { + *puStack8 = 0; + } + proc_7F06EB10(param_1,param_2); + return; +} + + + +void process_07_unknown(int param_1,ushort *param_2) + +{ + float *pfVar1; + undefined4 extraout_a2_lo; + undefined4 extraout_a3_lo; + int iVar2; + float __x; + float fVar3; + float fStack32; + float fStack28; + float fStack24; + uint *puStack8; + int iStack4; + + iStack4 = *(int *)(param_2 + 2); + puStack8 = (uint *)extract_id_from_object_structure_microcode(param_1,param_2); + pfVar1 = (float *)proc_7F06C660(param_1,param_2,0); + proc_7F06C550(param_1,&fStack32,extraout_a2_lo,extraout_a3_lo); + __x = proc_7F05ACB0(pfVar1[6] * fStack24 + fStack32 * pfVar1[4] + fStack28 * pfVar1[5]); + fVar3 = sinf(__x); + fVar3 = proc_7F05ACB0((fStack32 * pfVar1[8] + fStack28 * pfVar1[9] + fStack24 * pfVar1[10]) / + fVar3); + if ((pfVar1[2] * fStack24 + fStack32 * *pfVar1 + fStack28 * pfVar1[1] < 0.00000000) && + (0.00000000 < fVar3)) { + fVar3 = flt_80054C18 - fVar3; + } + iVar2 = (int)((__x * 64.00000000) / flt_80054C1C) * 0xc; + *puStack8 = (uint)*(byte *)(iStack4 + *(int *)(&dword_800360C4 + iVar2) + + ((int)((fVar3 * 65536.00000000) / flt_80054C1C) + + *(int *)(&DAT_800360c8 + iVar2) >> + (*(uint *)(&DAT_800360cc + iVar2) & 0x1f)) + 0x18); + return; +} + + + +void proc_7F06EEA4(undefined8 param_1,int param_2) + +{ + ushort uVar1; + bool bVar2; + ushort *puVar3; + ushort *puVar4; + + puVar3 = *(ushort **)(param_2 + 0x14); + if (puVar3 == NULL) { + return; + } + uVar1 = *puVar3; + do { + bVar2 = true; + if (true) { + switch((uint)uVar1 & 0xff) { + case 1: + case 2: + case 3: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x15: + bVar2 = false; + break; + case 7: + process_07_unknown(param_1._4_4_,puVar3); + break; + case 8: + process_08_distance_triggers(); + break; + case 9: + process_09_head_hat_placement_interlink(param_1._4_4_,puVar3); + break; + case 0x17: + process_17_pointer_to_head(param_1._4_4_,puVar3); + } + } + if (((!bVar2) || (puVar4 = *(ushort **)(puVar3 + 10), puVar4 == NULL)) && + (puVar4 = puVar3, puVar3 != NULL)) { + while (puVar3 != *(ushort **)(param_2 + 8)) { + puVar4 = *(ushort **)(puVar3 + 6); + if ((puVar4 != NULL) || + (puVar4 = *(ushort **)(puVar3 + 4), puVar3 = puVar4, puVar4 == NULL)) + goto LAB_7f06efa4; + } + puVar4 = NULL; + } +LAB_7f06efa4: + if (puVar4 == NULL) { + return; + } + uVar1 = *puVar4; + puVar3 = puVar4; + } while( true ); +} + + + +void proc_7F06EFC4(int param_1) + +{ + ushort uVar1; + ushort *puVar2; + ushort *puVar3; + + puVar2 = **(ushort ***)(param_1 + 8); + if (puVar2 == NULL) { + return; + } + uVar1 = *puVar2; + do { + if (false) { +switchD_7f06f00c_caseD_1: + puVar3 = *(ushort **)(puVar2 + 10); + } + else { + switch((uint)uVar1 & 0xff) { + default: + goto switchD_7f06f00c_caseD_1; + case 7: + process_07_unknown(param_1,puVar2); + puVar3 = *(ushort **)(puVar2 + 10); + break; + case 8: + process_08_distance_triggers(); + puVar3 = *(ushort **)(puVar2 + 10); + break; + case 9: + process_09_head_hat_placement_interlink(param_1,puVar2); + puVar3 = *(ushort **)(puVar2 + 10); + break; + case 0x12: + process_12_handle_switch(param_1,puVar2); + puVar3 = *(ushort **)(puVar2 + 10); + break; + case 0x17: + process_17_pointer_to_head(param_1,puVar2); + puVar3 = *(ushort **)(puVar2 + 10); + } + } + if ((puVar3 == NULL) && (puVar3 = puVar2, puVar2 != NULL)) { + puVar3 = *(ushort **)(puVar2 + 6); + while ((puVar3 == NULL && + (puVar2 = *(ushort **)(puVar2 + 4), puVar3 = puVar2, puVar2 != NULL))) { + puVar3 = *(ushort **)(puVar2 + 6); + } + } + if (puVar3 == NULL) { + return; + } + uVar1 = *puVar3; + puVar2 = puVar3; + } while( true ); +} + + + +void proc_7F06F0D0(float **param_1,int param_2) + +{ + ushort uVar1; + ushort *partdesc; + ushort *puVar2; + + partdesc = **(ushort ***)(param_2 + 8); + if (partdesc == NULL) { + return; + } + uVar1 = *partdesc; + do { + if (false) { +switchD_7f06f120_caseD_4: + puVar2 = *(ushort **)(partdesc + 10); + } + else { + switch((uint)uVar1 & 0xff) { + case 1: + process_01_group_heading(param_1,param_2,partdesc); + puVar2 = *(ushort **)(partdesc + 10); + break; + case 2: + process_02_position(param_1,param_2,partdesc); + puVar2 = *(ushort **)(partdesc + 10); + break; + case 3: + process_03_unknown(param_1,param_2,(int)partdesc); + puVar2 = *(ushort **)(partdesc + 10); + break; + default: + goto switchD_7f06f120_caseD_4; + case 7: + process_07_unknown(param_2,partdesc); + puVar2 = *(ushort **)(partdesc + 10); + break; + case 8: + process_08_distance_triggers(); + puVar2 = *(ushort **)(partdesc + 10); + break; + case 9: + process_09_head_hat_placement_interlink(param_2,partdesc); + puVar2 = *(ushort **)(partdesc + 10); + break; + case 0x12: + process_12_handle_switch(param_2,partdesc); + puVar2 = *(ushort **)(partdesc + 10); + break; + case 0x15: + process_15_subposition(param_1,param_2,(int)partdesc); + puVar2 = *(ushort **)(partdesc + 10); + break; + case 0x17: + process_17_pointer_to_head(param_2,partdesc); + puVar2 = *(ushort **)(partdesc + 10); + } + } + if ((puVar2 == NULL) && (puVar2 = partdesc, partdesc != NULL)) { + puVar2 = *(ushort **)(partdesc + 6); + while ((puVar2 == NULL && + (partdesc = *(ushort **)(partdesc + 4), puVar2 = partdesc, partdesc != NULL))) { + puVar2 = *(ushort **)(partdesc + 6); + } + } + if (puVar2 == NULL) { + return; + } + uVar1 = *puVar2; + partdesc = puVar2; + } while( true ); +} + + + +void instcalcmatrices(float **param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + float *mtxlist; + + if (param_2 == 0) { + osSyncPrintf("instcalcmatrices: no objinst!\n",0,param_3,param_4); + return_null(); + } + if (*param_1 == NULL) { + osSyncPrintf("instcalcmatrices: no basemtx!\n"); + return_null(); + mtxlist = param_1[4]; + } + else { + mtxlist = param_1[4]; + } + if (mtxlist == NULL) { + osSyncPrintf("instcalcmatrices: no mtxlist!\n"); + return_null(); + mtxlist = param_1[4]; + } + *(float **)(param_2 + 0xc) = mtxlist; + param_1[4] = param_1[4] + (int)*(short *)(*(int *)(param_2 + 8) + 0xe) * 0x10; + proc_7F06F0D0(param_1,param_2); + return; +} + + + +void subcalcmatrices(float **param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + short sVar1; + uint uVar2; + int *piVar3; + longlong lVar4; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a2_lo_02; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + undefined4 extraout_a3_lo_02; + int iVar5; + + if (param_2 == 0) { + osSyncPrintf("subcalcmatrices: no objanim!\n"); + return_null(); + param_3 = extraout_a2_lo; + param_4 = extraout_a3_lo; + } + if (*param_1 == NULL) { + osSyncPrintf("subcalcmatrices: no basemtx!\n"); + return_null(); + param_3 = extraout_a2_lo_00; + param_4 = extraout_a3_lo_00; + } + if (param_1[4] == NULL) { + osSyncPrintf("subcalcmatrices: no mtxlist!\n"); + return_null(); + iVar5 = *(int *)(param_2 + 0x20); + param_3 = extraout_a2_lo_01; + param_4 = extraout_a3_lo_01; + } + else { + iVar5 = *(int *)(param_2 + 0x20); + } + if (iVar5 == 0) goto LAB_7f06f590; + if (*(int *)(param_2 + 0x18) == 0) { + lVar4 = (longlong)*(short *)(param_2 + 0x30); + } + else { + if (*(int *)(param_2 + 0x1c) == 0) { + osSyncPrintf("subcalcmatrices: no attach for objinst!\n"); + return_null(); + lVar4 = (longlong)*(short *)(param_2 + 0x30); + } + else { + lVar4 = (longlong)*(short *)(param_2 + 0x30); + } + } + if ((lVar4 < 0) || ((longlong)(ulonglong)*(ushort *)(*(int *)(param_2 + 0x20) + 4) <= lVar4)) { + osSyncPrintf("subcalcmatrices: framea out of range!\n"); + return_null(); + sVar1 = *(short *)(param_2 + 0x32); + } + else { + sVar1 = *(short *)(param_2 + 0x32); + } + if (((longlong)sVar1 < 0) || + ((longlong)(ulonglong)*(ushort *)(*(int *)(param_2 + 0x20) + 4) <= (longlong)sVar1)) { + osSyncPrintf("subcalcmatrices: frameb out of range!\n"); + return_null(); + } + if ((*(float *)(param_2 + 0x84) == 0.00000000) || + ((*(float *)(param_2 + 0x84) != 0.00000000 && (*(int *)(param_2 + 0x54) != 0)))) { + iVar5 = *(int *)(param_2 + 0x54); + } + else { + osSyncPrintf("subcalcmatrices: no anim2!\n"); + return_null(); + iVar5 = *(int *)(param_2 + 0x54); + } + if ((iVar5 != 0) && + (((iVar5 == 0 || ((longlong)*(short *)(param_2 + 0x60) < 0)) || + ((longlong)(ulonglong)*(ushort *)(iVar5 + 4) <= (longlong)*(short *)(param_2 + 0x60))))) { + osSyncPrintf("subcalcmatrices: frame2a out of range!\n"); + return_null(); + iVar5 = *(int *)(param_2 + 0x54); + } + if (iVar5 == 0) { + piVar3 = *(int **)(param_2 + 0x20); +LAB_7f06f4d0: + sVar1 = *(short *)(param_2 + 0x30); + } + else { + if (((iVar5 != 0) && (-1 < (longlong)*(short *)(param_2 + 0x62))) && + ((longlong)*(short *)(param_2 + 0x62) < (longlong)(ulonglong)*(ushort *)(iVar5 + 4))) { + piVar3 = *(int **)(param_2 + 0x20); + goto LAB_7f06f4d0; + } + osSyncPrintf("subcalcmatrices: frame2b out of range!\n"); + return_null(); + piVar3 = *(int **)(param_2 + 0x20); + sVar1 = *(short *)(param_2 + 0x30); + } + uVar2 = proc_7F0754BC(piVar3,(int)sVar1); + *(uint *)(param_2 + 0x34) = uVar2; + if (*(float *)(param_2 + 0x2c) == 0.00000000) { + piVar3 = *(int **)(param_2 + 0x54); + } + else { + uVar2 = proc_7F0754BC(*(int **)(param_2 + 0x20),(int)*(short *)(param_2 + 0x32)); + *(uint *)(param_2 + 0x38) = uVar2; + piVar3 = *(int **)(param_2 + 0x54); + } + if (piVar3 != NULL) { + uVar2 = proc_7F0754BC(piVar3,(int)*(short *)(param_2 + 0x60)); + *(uint *)(param_2 + 100) = uVar2; + if (*(float *)(param_2 + 0x5c) != 0.00000000) { + uVar2 = proc_7F0754BC(*(int **)(param_2 + 0x54),(int)*(short *)(param_2 + 0x62)); + *(uint *)(param_2 + 0x68) = uVar2; + } + } + proc_7F0755B0(); + param_3 = extraout_a2_lo_02; + param_4 = extraout_a3_lo_02; +LAB_7f06f590: + instcalcmatrices(param_1,param_2,param_3,param_4); + return; +} + + + +undefined4 proc_7F06F5AC(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x20); +} + + + +undefined proc_7F06F5B4(int param_1) + +{ + return *(undefined *)(param_1 + 0x24); +} + + + +undefined4 proc_7F06F5BC(int param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +float proc_7F06F5C4(int param_1) + +{ + if (0.00000000 <= *(float *)(param_1 + 0x3c)) { + return *(float *)(param_1 + 0x3c); + } + if (*(int *)(param_1 + 0x20) == 0) { + return 0.00000000; + } + return (float)((uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4) - 1); +} + + + +undefined4 proc_7F06F610(int param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +float proc_7F06F618(int param_1) + +{ + float fVar1; + + fVar1 = *(float *)(param_1 + 0x40); + if (fVar1 < 0.00000000) { + fVar1 = -fVar1; + } + return fVar1; +} + + + +undefined4 proc_7F06F640(int param_1) + +{ + undefined4 uVar1; + + uVar1 = proc_7F06F610(param_1); + return uVar1; +} + + + +longlong proc_7F06F66C(longlong param_1,int param_2,float param_3) + +{ + ushort uVar1; + int iVar2; + longlong lVar3; + float in_a2_lo; + + if (param_1 < 0) { + if ((*(byte *)(param_2 + 7) & 1) == 0) { + lVar3 = 0; + } + else { + uVar1 = *(ushort *)(param_2 + 4); + iVar2 = -(int)param_1; + lVar3 = (longlong)(int)((uint)uVar1 - iVar2 % (uint)uVar1); + if (uVar1 == 0) { + trap(0x1c00); + } + if (((ulonglong)uVar1 == 0xffffffffffffffff) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + } + } + else { + if (0.00000000 <= in_a2_lo) { + if ((int)in_a2_lo < param_1) { + iVar2 = proc_7F05C4B8(in_a2_lo); + return (longlong)iVar2; + } + uVar1 = *(ushort *)(param_2 + 4); + } + else { + uVar1 = *(ushort *)(param_2 + 4); + } + lVar3 = param_1; + if ((longlong)(ulonglong)uVar1 <= param_1) { + if ((*(byte *)(param_2 + 7) & 1) == 0) { + lVar3 = (longlong)(int)((uint)uVar1 - 1); + } + else { + lVar3 = (longlong)((int)param_1 % (uint)uVar1); + if (uVar1 == 0) { + trap(0x1c00); + } + if (((ulonglong)uVar1 == 0xffffffffffffffff) && (param_1 == -0x80000000)) { + trap(0x1800); + } + } + } + } + return lVar3; +} + + + +void proc_7F06F780(int param_1,float param_2) + +{ + ushort uVar1; + ushort *partdesc; + int iVar2; + float in_a1_lo; + + if (0.00000000 < in_a1_lo) { + if (*(int *)(param_1 + 0x20) == 0) { + *(undefined4 *)(param_1 + 0x54) = 0; + } + else { + partdesc = **(ushort ***)(param_1 + 8); + uVar1 = *partdesc; + *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x28); + *(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(param_1 + 0x2c); + *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x20); + *(undefined *)(param_1 + 0x25) = *(undefined *)(param_1 + 0x24); + *(undefined2 *)(param_1 + 0x60) = *(undefined2 *)(param_1 + 0x30); + *(undefined2 *)(param_1 + 0x62) = *(undefined2 *)(param_1 + 0x32); + *(undefined4 *)(param_1 + 0x70) = *(undefined4 *)(param_1 + 0x40); + *(undefined4 *)(param_1 + 0x74) = *(undefined4 *)(param_1 + 0x44); + *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1 + 0x48); + *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(param_1 + 0x4c); + *(undefined4 *)(param_1 + 0x80) = *(undefined4 *)(param_1 + 0x50); + *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + 0x3c); + if ((uVar1 & 0xff) == 1) { + iVar2 = extract_id_from_object_structure_microcode(param_1,partdesc); + *(undefined *)(iVar2 + 2) = 1; + *(undefined4 *)(iVar2 + 0x4c) = *(undefined4 *)(iVar2 + 0x34); + *(undefined4 *)(iVar2 + 0x50) = *(undefined4 *)(iVar2 + 0x38); + *(undefined4 *)(iVar2 + 0x54) = *(undefined4 *)(iVar2 + 0x3c); + *(undefined4 *)(iVar2 + 0x40) = *(undefined4 *)(iVar2 + 0x24); + *(undefined4 *)(iVar2 + 0x44) = *(undefined4 *)(iVar2 + 0x28); + *(undefined4 *)(iVar2 + 0x48) = *(undefined4 *)(iVar2 + 0x2c); + } + } + } + else { + *(undefined4 *)(param_1 + 0x54) = 0; + } + return; +} + + + +void proc_7F06F878(int param_1,undefined4 param_2,undefined param_3,float param_4,float param_5, + undefined4 param_6) + +{ + int iVar1; + ushort *partdesc; + bool bVar2; + int iVar3; + undefined8 extraout_a0; + undefined8 extraout_a1; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + undefined4 in_stack_00000014; + float fStack52; + float fStack48; + float fStack44; + float fStack36; + float fStack32; + ushort *puStack16; + + iVar1 = *(int *)(param_1 + 0x20); + if (*(int *)(param_1 + 0x54) == 0) { + *(undefined4 *)(param_1 + 0x88) = 0; + *(undefined4 *)(param_1 + 0x84) = 0; + } + else { + *(undefined4 *)(param_1 + 0x88) = in_stack_00000014; + *(undefined4 *)(param_1 + 0x8c) = 0; + *(undefined4 *)(param_1 + 0x84) = 0x3f800000; + } + *(undefined4 *)(param_1 + 0x20) = param_2; + *(undefined *)(param_1 + 0x24) = param_3; + *(undefined4 *)(param_1 + 0x3c) = 0xbf800000; + *(undefined4 *)(param_1 + 0x40) = param_6; + *(undefined4 *)(param_1 + 0x4c) = 0; + proc_7F06FF64(param_1,param_5); + *(undefined *)(param_1 + 0x26) = 0; + partdesc = **(ushort ***)(param_1 + 8); + if ((*partdesc & 0xff) == 1) { + puStack16 = *(ushort **)(partdesc + 2); + iVar3 = extract_id_from_object_structure_microcode(param_1,partdesc); + fStack52 = dword_80036244; + fStack32 = *(float *)(param_1 + 0x14) * *(float *)(param_1 + 0xb8); + fStack48 = dword_80036248; + fStack44 = dword_8003624C; + fVar4 = proc_7F06D3F4((uint)*puStack16,(longlong)*(char *)(param_1 + 0x24), + *(int *)(*(int *)(param_1 + 8) + 4),*(int *)(param_1 + 0x20), + (int)*(short *)(param_1 + 0x32),&fStack52); + if (fStack32 != 1.00000000) { + fStack52 = fStack52 * fStack32; + fStack48 = fStack48 * fStack32; + fStack44 = fStack44 * fStack32; + } + fStack36 = cosf(*(float *)(iVar3 + 0x14)); + fVar5 = sinf(*(float *)(iVar3 + 0x14)); + if (*(float *)(param_1 + 0x2c) == 0.00000000) { + *(float *)(iVar3 + 0x34) = *(float *)(iVar3 + 8); + *(undefined4 *)(iVar3 + 0x3c) = *(undefined4 *)(iVar3 + 0x10); + *(float *)(iVar3 + 0x38) = *(float *)(iVar3 + 0xc) - *(float *)(iVar3 + 4); + *(undefined4 *)(iVar3 + 0x30) = *(undefined4 *)(iVar3 + 0x14); + *(float *)(iVar3 + 0x24) = + fStack44 * fVar5 + *(float *)(iVar3 + 8) + fStack52 * fStack36; + *(float *)(iVar3 + 0x28) = fStack48; + *(float *)(iVar3 + 0x2c) = + fStack44 * fStack36 + (*(float *)(iVar3 + 0x3c) - fStack52 * fVar5); + fVar5 = flt_80054D40; + if ((*(float *)(iVar3 + 0x18) == 0.00000000) && + (fVar4 = *(float *)(iVar3 + 0x30) + fVar4, bVar2 = flt_80054D40 <= fVar4, + *(float *)(iVar3 + 0x20) = fVar4, bVar2)) { + *(float *)(iVar3 + 0x20) = *(float *)(iVar3 + 0x20) - fVar5; + } + *(undefined *)(iVar3 + 1) = 1; + } + else { + fVar7 = fStack44 * fVar5 + fStack52 * fStack36; + fVar6 = fStack44 * fStack36 + -fStack52 * fVar5; + fVar5 = *(float *)(param_1 + 0x2c); + *(float *)(iVar3 + 0x24) = + *(float *)(iVar3 + 8) + fVar7 * (1.00000000 - *(float *)(param_1 + 0x2c)); + *(float *)(iVar3 + 0x28) = fStack48; + *(float *)(iVar3 + 0x2c) = *(float *)(iVar3 + 0x10) + fVar6 * (1.00000000 - fVar5); + *(float *)(iVar3 + 0x34) = *(float *)(iVar3 + 0x24) - fVar7; + fVar5 = *(float *)(iVar3 + 0xc) - *(float *)(iVar3 + 4); + *(float *)(iVar3 + 0x38) = + fVar5 - ((fStack48 - fVar5) * *(float *)(param_1 + 0x2c)) / + (1.00000000 - *(float *)(param_1 + 0x2c)); + *(float *)(iVar3 + 0x3c) = *(float *)(iVar3 + 0x2c) - fVar6; + fVar5 = *(float *)(iVar3 + 0x14) - fVar4; + if (fVar5 < 0.00000000) { + fVar5 = fVar5 + flt_80054D44; + } + fVar6 = proc_7F06D0CC(*(float *)(iVar3 + 0x14),fVar5,extraout_a0,extraout_a1, + *(float *)(param_1 + 0x2c)); + fVar5 = flt_80054D48; + *(float *)(iVar3 + 0x30) = fVar6; + if (*(float *)(iVar3 + 0x18) == 0.00000000) { + fVar4 = *(float *)(iVar3 + 0x30) + fVar4; + *(float *)(iVar3 + 0x20) = fVar4; + if (fVar5 <= fVar4) { + *(float *)(iVar3 + 0x20) = *(float *)(iVar3 + 0x20) - fVar5; + *(undefined *)(iVar3 + 1) = 1; + } + else { + *(undefined *)(iVar3 + 1) = 1; + } + } + else { + *(undefined *)(iVar3 + 1) = 1; + } + } + if (iVar1 == 0) { + *(undefined4 *)(iVar3 + 0x38) = *(undefined4 *)(iVar3 + 0x28); + } + } + return; +} + + + +void proc_7F06FC4C(int param_1,undefined4 param_2,undefined param_3,float param_4,undefined4 param_5 + ,float param_6,int param_7) + +{ + float extraout_f12; + int in_stack_00000018; + + if (in_stack_00000018 != 0) { + proc_7F06F780(param_1,param_4); + param_4 = extraout_f12; + } + proc_7F06F878(param_1,param_2,param_3,param_4,param_5,param_7); + return; +} + + + +void proc_7F06FCA8(int param_1,undefined4 param_2,undefined param_3,float param_4,undefined4 param_5 + ,float param_6) + +{ + float extraout_f12; + undefined4 in_stack_00000010; + + proc_7F06F780(param_1,param_4); + proc_7F06F878(param_1,param_2,param_3,extraout_f12,param_5,in_stack_00000010); + return; +} + + + +void proc_7F06FCFC(undefined4 *param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + + uVar1 = *param_2; + uVar2 = param_2[1]; + uVar3 = param_2[2]; + uVar4 = param_2[3]; + uVar5 = param_2[4]; + uVar6 = param_2[5]; + uVar7 = param_2[6]; + uVar8 = param_2[7]; + puVar11 = param_1; + puVar9 = param_2; + do { + puVar12 = puVar9; + puVar10 = puVar11; + puVar11 = puVar10 + 3; + *puVar12 = *puVar10; + puVar12[1] = puVar10[1]; + puVar12[2] = puVar10[2]; + puVar9 = puVar12 + 3; + } while (puVar11 != param_1 + 0x2d); + puVar12[3] = *puVar11; + puVar12[4] = puVar10[4]; + *param_2 = uVar1; + param_2[1] = uVar2; + param_2[2] = uVar3; + param_2[3] = uVar4; + param_2[4] = uVar5; + param_2[5] = uVar6; + param_2[6] = uVar7; + param_2[7] = uVar8; + return; +} + + + +void proc_7F06FDCC(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(undefined *)(param_1 + 0x26) = 1; + *(undefined4 *)(param_1 + 0x90) = param_2; + *(undefined4 *)(param_1 + 0x94) = param_3; + return; +} + + + +void proc_7F06FDE8(int param_1,float param_2) + +{ + float in_a1_lo; + + if ((*(int *)(param_1 + 0x20) != 0) && + (in_a1_lo < (float)((uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4) - 1))) { + *(float *)(param_1 + 0x3c) = in_a1_lo; + return; + } + *(undefined4 *)(param_1 + 0x3c) = 0xbf800000; + return; +} + + + +void proc_7F06FE3C(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x98) = param_2; + return; +} + + + +void proc_7F06FE44(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x9c) = param_2; + return; +} + + + +void proc_7F06FE4C(int param_1,undefined4 param_2,float param_3) + +{ + float in_a2_lo; + + if (in_a2_lo <= 0.00000000) { + *(undefined4 *)(param_1 + 0x40) = param_2; + *(undefined4 *)(param_1 + 0x4c) = 0; + return; + } + *(float *)(param_1 + 0x4c) = in_a2_lo; + *(undefined4 *)(param_1 + 0x44) = param_2; + *(undefined4 *)(param_1 + 0x50) = 0; + *(undefined4 *)(param_1 + 0x48) = *(undefined4 *)(param_1 + 0x40); + return; +} + + + +void proc_7F06FE90(int param_1,float param_2,float param_3) + +{ + float in_a1_lo; + float in_a2_lo; + float fVar1; + float fVar2; + + fVar1 = *(float *)(param_1 + 0x28); + if (fVar1 <= in_a1_lo) { + fVar1 = in_a1_lo - fVar1; + } + else { + fVar2 = (float)(uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4); + if (false) { + fVar2 = fVar2 + 4294967296.00000000; + } + fVar1 = (fVar2 - fVar1) + in_a1_lo; + } + proc_7F06FE4C(param_1,*(float *)(param_1 + 0x40) + (fVar1 + fVar1) / in_a2_lo,in_a1_lo); + return; +} + + + +void proc_7F06FF18(int param_1,undefined4 param_2,float param_3) + +{ + float in_a2_lo; + + if (in_a2_lo <= 0.00000000) { + *(undefined4 *)(param_1 + 0xa4) = param_2; + *(undefined4 *)(param_1 + 0xb0) = 0; + return; + } + *(float *)(param_1 + 0xb0) = in_a2_lo; + *(undefined4 *)(param_1 + 0xa8) = param_2; + *(undefined4 *)(param_1 + 0xb4) = 0; + *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(param_1 + 0xa4); + return; +} + + + +void proc_7F06FF5C(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0xa0) = param_2; + return; +} + + + +void proc_7F06FF64(int param_1,float param_2) + +{ + short sVar1; + bool bVar2; + int iVar4; + longlong lVar3; + float in_a1_lo; + int iVar5; + float fVar6; + float extraout_f12; + float extraout_f12_00; + + iVar4 = proc_7F05C3D8(in_a1_lo); + bVar2 = 0.00000000 <= *(float *)(param_1 + 0x40); + iVar5 = iVar4 + -1; + if (bVar2) { + iVar5 = iVar4 + 1; + } + lVar3 = proc_7F06F66C((longlong)iVar4,*(int *)(param_1 + 0x20),extraout_f12); + *(undefined2 *)(param_1 + 0x30) = (short)lVar3; + lVar3 = proc_7F06F66C((longlong)iVar5,*(int *)(param_1 + 0x20),extraout_f12_00); + *(undefined2 *)(param_1 + 0x32) = (short)lVar3; + sVar1 = *(short *)(param_1 + 0x30); + if (*(short *)(param_1 + 0x32) == sVar1) { + *(undefined4 *)(param_1 + 0x2c) = 0; + *(float *)(param_1 + 0x28) = (float)(int)sVar1; + } + else { + if (bVar2) { + *(float *)(param_1 + 0x2c) = in_a1_lo - (float)iVar4; + *(float *)(param_1 + 0x28) = (float)(int)sVar1 + (in_a1_lo - (float)iVar4); + } + else { + fVar6 = 1.00000000 - (in_a1_lo - (float)iVar5); + *(float *)(param_1 + 0x2c) = fVar6; + *(float *)(param_1 + 0x28) = + (float)(int)*(short *)(param_1 + 0x32) + (1.00000000 - fVar6); + } + } + return; +} + + + +void proc_7F070090(int param_1,float param_2,float param_3) + +{ + short sVar1; + bool bVar2; + int iVar4; + longlong lVar3; + float in_a1_lo; + float in_a2_lo; + int iVar5; + float fVar6; + float extraout_f12; + float extraout_f12_00; + + proc_7F06FF64(param_1,in_a1_lo); + if (*(int *)(param_1 + 0x54) != 0) { + iVar4 = proc_7F05C3D8(in_a2_lo); + bVar2 = 0.00000000 <= *(float *)(param_1 + 0x70); + iVar5 = iVar4 + -1; + if (bVar2) { + iVar5 = iVar4 + 1; + } + lVar3 = proc_7F06F66C((longlong)iVar4,*(int *)(param_1 + 0x54),extraout_f12); + *(undefined2 *)(param_1 + 0x60) = (short)lVar3; + lVar3 = proc_7F06F66C((longlong)iVar5,*(int *)(param_1 + 0x54),extraout_f12_00); + *(undefined2 *)(param_1 + 0x62) = (short)lVar3; + sVar1 = *(short *)(param_1 + 0x60); + if (*(short *)(param_1 + 0x62) == sVar1) { + *(undefined4 *)(param_1 + 0x5c) = 0; + *(float *)(param_1 + 0x58) = (float)(int)sVar1; + } + else { + if (bVar2) { + *(float *)(param_1 + 0x5c) = in_a2_lo - (float)iVar4; + *(float *)(param_1 + 0x58) = (float)(int)sVar1 + (in_a2_lo - (float)iVar4); + } + else { + fVar6 = 1.00000000 - (in_a2_lo - (float)iVar5); + *(float *)(param_1 + 0x5c) = fVar6; + *(float *)(param_1 + 0x58) = + (float)(int)*(short *)(param_1 + 0x62) + (1.00000000 - fVar6); + } + } + } + return; +} + + + +void proc_7F0701D4(undefined4 param_1) + +{ + dword_80036250 = param_1; + return; +} + + + +undefined4 proc_7F0701E0(void) + +{ + return dword_80036250; +} + + + +void proc_7F0701EC(int param_1,float param_2,float param_3,float param_4,float param_5) + +{ + short sVar1; + ushort *partdesc; + ushort *puVar2; + bool bVar3; + float fVar4; + char *pcVar6; + int iVar7; + longlong lVar5; + int iVar8; + float in_a3_lo; + char cVar9; + longlong lVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f14; + float fVar15; + float fVar16; + float in_stack_00000010; + float fStack96; + float fStack92; + float fStack88; + float fStack84; + float fStack76; + float fStack72; + float fStack68; + int iStack64; + float fStack48; + float fStack44; + float fStack40; + float fStack28; + int iStack24; + uint uStack20; + + partdesc = **(ushort ***)(param_1 + 8); + if ((*partdesc & 0xff) != 1) { + proc_7F070090(param_1,param_2,param_3); + return; + } + puVar2 = *(ushort **)(partdesc + 2); + pcVar6 = (char *)extract_id_from_object_structure_microcode(param_1,partdesc); + if (*pcVar6 != '\0') { + proc_7F070090(param_1,extraout_f12,extraout_f14); + return; + } + uStack20 = (uint)*puVar2; + iStack24 = *(int *)(*(int *)(param_1 + 8) + 4); + fStack28 = *(float *)(param_1 + 0x14) * *(float *)(param_1 + 0xb8); + fStack48 = DAT_80036254; + fStack44 = DAT_80036258; + fStack40 = DAT_8003625c; + fStack76 = *(float *)(pcVar6 + 0x34); + fStack72 = *(float *)(pcVar6 + 0x38); + fStack68 = *(float *)(pcVar6 + 0x3c); + fStack92 = *(float *)(pcVar6 + 0x24); + fVar15 = *(float *)(pcVar6 + 0x30); + fStack88 = *(float *)(pcVar6 + 0x28); + fStack84 = *(float *)(pcVar6 + 0x2c); + fStack96 = *(float *)(pcVar6 + 0x20); + cVar9 = pcVar6[1]; + fVar16 = *(float *)(param_1 + 0x40); + if (fVar16 < 0.00000000) { + fVar16 = -fVar16; + fVar11 = *(float *)(param_1 + 0x70); + } + else { + fVar11 = *(float *)(param_1 + 0x70); + } + if (fVar11 < 0.00000000) { + fVar11 = -fVar11; + } + bVar3 = param_4 <= param_5; + if (bVar3) { + iVar7 = proc_7F05C3D8(param_4); + iVar7 += 1; + iStack64 = proc_7F05C3D8(param_5); + fVar13 = extraout_f12_00; + } + else { + iVar7 = proc_7F05C4B8(param_4); + iVar7 += -1; + iStack64 = proc_7F05C4B8(param_5); + fVar13 = extraout_f12_01; + } + fVar4 = flt_80054D4C; + lVar10 = (longlong)iVar7; +LAB_7f070388: + if (bVar3) { + if (iStack64 < lVar10) goto LAB_7f070860; + iVar7 = *(int *)(param_1 + 0x20); + } + else { + if (lVar10 < iStack64) goto LAB_7f070860; + iVar7 = *(int *)(param_1 + 0x20); + } + lVar5 = proc_7F06F66C(lVar10,iVar7,fVar13); + *(undefined2 *)(param_1 + 0x30) = (short)lVar5; + if (cVar9 == '\0') { + fVar13 = proc_7F06D3F4(uStack20,(longlong)*(char *)(param_1 + 0x24),iStack24, + *(int *)(param_1 + 0x20),(int)lVar5,&fStack48); + if (fStack28 != 1.00000000) { + fStack48 = fStack48 * fStack28; + fStack44 = fStack44 * fStack28; + fStack40 = fStack40 * fStack28; + } + if (!bVar3) { + fStack48 = -fStack48; + fStack40 = -fStack40; + if (0.00000000 < fVar13) { + fVar13 = fVar4 - fVar13; + } + } + fVar12 = cosf(*(float *)(pcVar6 + 0x14)); + fVar14 = sinf(*(float *)(pcVar6 + 0x14)); + fStack76 = fStack76 + fStack48 * fVar12 + fStack40 * fVar14; + fStack72 = fStack44; + fStack68 = fStack68 + -fStack48 * fVar14 + fStack40 * fVar12; + fVar12 = extraout_f12_03; + fVar14 = fVar15; + if ((*(float *)(pcVar6 + 0x18) == 0.00000000) && (fVar14 = fVar15 + fVar13, fVar4 <= fVar14) + ) { + fVar14 = fVar14 - fVar4; + } + } + else { + fStack76 = fStack92; + fStack72 = fStack88; + fStack68 = fStack84; + fVar12 = extraout_f12_02; + fVar14 = fStack96; + if (*(float *)(pcVar6 + 0x18) != 0.00000000) { + fVar14 = fVar15; + } + } + fVar15 = fVar14; + if (bVar3) { + iVar7 = (int)lVar10 + 1; + } + else { + iVar7 = (int)lVar10 + -1; + } + lVar10 = (longlong)iVar7; + lVar5 = proc_7F06F66C(lVar10,*(int *)(param_1 + 0x20),fVar12); + *(undefined2 *)(param_1 + 0x32) = (short)lVar5; + fVar13 = extraout_f12_04; + if (*(short *)(param_1 + 0x30) != *(short *)(param_1 + 0x32)) { + cVar9 = 1; + fVar12 = proc_7F06D3F4(uStack20,(longlong)*(char *)(param_1 + 0x24),iStack24, + *(int *)(param_1 + 0x20),(int)lVar5,&fStack48); + if (fStack28 != 1.00000000) { + fStack48 = fStack48 * fStack28; + fStack44 = fStack44 * fStack28; + fStack40 = fStack40 * fStack28; + } + if (!bVar3) { + fStack48 = -fStack48; + fStack40 = -fStack40; + if (0.00000000 < fVar12) { + fVar12 = fVar4 - fVar12; + } + } + fVar13 = cosf(*(float *)(pcVar6 + 0x30)); + fVar14 = sinf(*(float *)(pcVar6 + 0x30)); + if ((dword_80036250 == 0) || (*(int *)(param_1 + 0x54) == 0)) { + fStack92 = fStack40 * fVar14 + fStack76 + fStack48 * fVar13; + fStack84 = fStack40 * fVar13 + (fStack68 - fStack48 * fVar14); + } + else { + fStack92 = fStack40 * fVar14 + fStack48 * fVar13; + fStack84 = fStack40 * fVar13 + -fStack48 * fVar14; + if (0.00000000 < fVar16) { + fVar14 = *(float *)(param_1 + 0x84); + fVar13 = fVar14 - *(float *)(param_1 + 0xa4) / (fVar16 * *(float *)(param_1 + 0x88)) + ; + if (fVar13 < 0.00000000) { + fVar14 = fVar14 + 0.00000000; + } + else { + fVar14 = fVar14 + fVar13; + } + fVar13 = (((*(float *)(pcVar6 + 0x40) - *(float *)(pcVar6 + 0x4c)) * fVar11) / + fVar16 - fStack92) * fVar14 * 0.50000000; + fVar14 = (((*(float *)(pcVar6 + 0x48) - *(float *)(pcVar6 + 0x54)) * fVar11) / + fVar16 - fStack84) * fVar14 * 0.50000000; + } + else { + fVar13 = (*(float *)(pcVar6 + 0x40) - *(float *)(pcVar6 + 0x4c)) * + *(float *)(param_1 + 0x84); + fVar14 = (*(float *)(pcVar6 + 0x48) - *(float *)(pcVar6 + 0x54)) * + *(float *)(param_1 + 0x84); + } + fStack84 = fStack84 + fVar14; + fStack92 = fStack92 + fVar13; + fStack92 = fStack92 + fStack76; + fStack84 = fStack84 + fStack68; + } + fStack88 = fStack44; + fVar13 = *(float *)(pcVar6 + 0x5c); + if (0.00000000 < fVar13) { + if (0.00000000 < fVar16) { + fVar14 = 1.00000000 / fVar16; + if (fVar13 < fVar14) { + *(undefined4 *)(pcVar6 + 0x5c) = 0; + } + else { + *(float *)(pcVar6 + 0x5c) = fVar13 - fVar14; + fVar13 = fVar14; + } + fVar12 = fVar12 + *(float *)(pcVar6 + 0x58) * fVar13; + if (fVar12 < 0.00000000) { + fVar12 = fVar12 + fVar4; + } + else { + if (fVar12 < fVar4) { + fVar14 = *(float *)(pcVar6 + 0x18); + goto LAB_7f070828; + } + fVar12 = fVar12 - fVar4; + } + fVar14 = *(float *)(pcVar6 + 0x18); + } + else { + fVar14 = *(float *)(pcVar6 + 0x18); + fVar13 = fStack40; + } + } + else { + fVar14 = *(float *)(pcVar6 + 0x18); + fVar13 = fStack40; + } +LAB_7f070828: + if ((fVar14 == 0.00000000) && (fStack96 = fVar15 + fVar12, fVar4 <= fStack96)) { + fStack96 = fStack96 - fVar4; + } + } + goto LAB_7f070388; +LAB_7f070860: + *(float *)(pcVar6 + 0x34) = fStack76; + *(float *)(pcVar6 + 0x38) = fStack72; + *(float *)(pcVar6 + 0x30) = fVar15; + *(float *)(pcVar6 + 0x3c) = fStack68; + *(float *)(pcVar6 + 0x24) = fStack92; + *(float *)(pcVar6 + 0x28) = fStack88; + *(float *)(pcVar6 + 0x2c) = fStack84; + *(float *)(pcVar6 + 0x20) = fStack96; + sVar1 = *(short *)(param_1 + 0x30); + if (*(short *)(param_1 + 0x32) == sVar1) { + *(undefined4 *)(param_1 + 0x2c) = 0; + *(float *)(param_1 + 0x28) = (float)(int)sVar1; + } + else { + if (bVar3) { + *(float *)(param_1 + 0x2c) = param_5 - (float)iStack64; + *(float *)(param_1 + 0x28) = (float)(int)sVar1 + (param_5 - (float)iStack64); + } + else { + *(float *)(param_1 + 0x2c) = (float)iStack64 - param_5; + *(float *)(param_1 + 0x28) = + (float)(int)*(short *)(param_1 + 0x32) + (1.00000000 - ((float)iStack64 - param_5)) + ; + } + } + if (*(int *)(param_1 + 0x54) == 0) { + pcVar6[2] = '\0'; + return; + } + iVar7 = proc_7F05C3D8(in_a3_lo); + iVar8 = proc_7F05C3D8(in_stack_00000010); + if ((bVar3) && (iVar7 < iVar8)) { + cVar9 = pcVar6[2]; + } + else { + if ((bVar3) || (iVar7 <= iVar8)) goto LAB_7f070a0c; + cVar9 = pcVar6[2]; + } + if (cVar9 == '\0') { + *(undefined4 *)(pcVar6 + 0x50) = *(undefined4 *)(pcVar6 + 0x38); + } + else { + *(undefined4 *)(pcVar6 + 0x50) = *(undefined4 *)(pcVar6 + 0x44); + } + lVar10 = proc_7F06F66C((longlong)iVar8,*(int *)(param_1 + 0x54),extraout_f12_05); + *(undefined2 *)(param_1 + 0x60) = (short)lVar10; + lVar10 = proc_7F06F66C((longlong)(iVar8 + 1),*(int *)(param_1 + 0x54),extraout_f12_06); + *(undefined2 *)(param_1 + 0x62) = (short)lVar10; + proc_7F06D3F4(uStack20,(longlong)*(char *)(param_1 + 0x25),iStack24,*(int *)(param_1 + 0x54), + (int)lVar10,&fStack48); + if (fStack28 != 1.00000000) { + fStack44 = fStack44 * fStack28; + } + pcVar6[2] = '\x01'; + *(float *)(pcVar6 + 0x44) = fStack44; +LAB_7f070a0c: + if (bVar3) { + *(float *)(param_1 + 0x5c) = in_stack_00000010 - (float)iVar8; + *(float *)(param_1 + 0x58) = + (float)(int)*(short *)(param_1 + 0x60) + (in_stack_00000010 - (float)iVar8); + } + else { + fVar15 = 1.00000000 - (in_stack_00000010 - (float)iVar8); + *(float *)(param_1 + 0x5c) = fVar15; + *(float *)(param_1 + 0x58) = (float)(int)*(short *)(param_1 + 0x62) + (1.00000000 - fVar15); + } + return; +} + + + +void proc_7F070AEC(int param_1,int param_2,int param_3) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + undefined4 uVar6; + undefined4 uVar7; + float in_f12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float in_f14; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + undefined4 uVar12; + undefined4 uVar13; + + fVar8 = *(float *)(param_1 + 0x28); + if (0 < param_2) { + if (0 < param_2) { + fVar3 = *(float *)(param_1 + 0xb0); + do { + if (0.00000000 < fVar3) { + *(float *)(param_1 + 0xb4) = *(float *)(param_1 + 0xb4) + 1.00000000; + if (*(float *)(param_1 + 0xb4) < fVar3) { + *(float *)(param_1 + 0xa4) = + *(float *)(param_1 + 0xac) + + ((*(float *)(param_1 + 0xa8) - *(float *)(param_1 + 0xac)) * + *(float *)(param_1 + 0xb4)) / fVar3; + } + else { + *(undefined4 *)(param_1 + 0xb0) = 0; + *(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)(param_1 + 0xa8); + } + fVar3 = *(float *)(param_1 + 0x88); + } + else { + fVar3 = *(float *)(param_1 + 0x88); + } + fVar4 = *(float *)(param_1 + 0xa4); + if (0.00000000 < fVar3) { + *(float *)(param_1 + 0x8c) = *(float *)(param_1 + 0x8c) + fVar4; + fVar3 = *(float *)(param_1 + 0x8c); + if (fVar3 == 0.00000000) { + fVar4 = *(float *)(param_1 + 0xa4); + *(undefined4 *)(param_1 + 0x84) = 0x3f800000; + } + else { + fVar1 = *(float *)(param_1 + 0x88); + if (fVar3 < fVar1) { + fVar4 = *(float *)(param_1 + 0xa4); + *(float *)(param_1 + 0x84) = (fVar1 - fVar3) / fVar1; + } + else { + *(undefined4 *)(param_1 + 0x88) = 0; + *(undefined4 *)(param_1 + 0x84) = 0; + *(undefined4 *)(param_1 + 0x54) = 0; + fVar4 = *(float *)(param_1 + 0xa4); + } + } + in_f12 = *(float *)(param_1 + 0x4c); + } + else { + in_f12 = *(float *)(param_1 + 0x4c); + } + if (0.00000000 < in_f12) { + *(float *)(param_1 + 0x50) = *(float *)(param_1 + 0x50) + fVar4; + in_f14 = *(float *)(param_1 + 0x50); + if (in_f14 < in_f12) { + fVar4 = *(float *)(param_1 + 0xa4); + *(float *)(param_1 + 0x40) = + *(float *)(param_1 + 0x48) + + ((*(float *)(param_1 + 0x44) - *(float *)(param_1 + 0x48)) * in_f14) / + in_f12; + } + else { + *(undefined4 *)(param_1 + 0x4c) = 0; + fVar4 = *(float *)(param_1 + 0xa4); + *(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_1 + 0x44); + } + fVar3 = *(float *)(param_1 + 0x40); + } + else { + fVar3 = *(float *)(param_1 + 0x40); + } + fVar8 = fVar8 + fVar4 * fVar3; + if ((*(int *)(param_1 + 0x54) != 0) && + (in_f12 = *(float *)(param_1 + 0x7c), 0.00000000 < in_f12)) { + *(float *)(param_1 + 0x80) = *(float *)(param_1 + 0x80) + fVar4; + in_f14 = *(float *)(param_1 + 0x80); + if (in_f14 < in_f12) { + *(float *)(param_1 + 0x70) = + *(float *)(param_1 + 0x78) + + ((*(float *)(param_1 + 0x74) - *(float *)(param_1 + 0x78)) * in_f14) / + in_f12; + } + else { + *(undefined4 *)(param_1 + 0x7c) = 0; + *(undefined4 *)(param_1 + 0x70) = *(undefined4 *)(param_1 + 0x74); + } + } + if (*(char *)(param_1 + 0x26) != '\0') { + fVar10 = *(float *)(param_1 + 0x3c); + fVar5 = *(float *)(param_1 + 0x90); + fVar2 = (float)((uint)*(ushort *)(*(int *)(param_1 + 0x20) + 4) - 1); + fVar4 = fVar10; + fVar1 = fVar5; + fVar11 = fVar5; + fVar9 = fVar2; + if (fVar3 < 0.00000000) { + fVar4 = fVar5; + fVar1 = fVar10; + fVar11 = fVar2; + fVar9 = fVar5; + } + if ((0.00000000 <= fVar10) && (fVar10 < fVar2)) { + fVar9 = fVar4; + fVar11 = fVar1; + } + if ((fVar3 < 0.00000000) || (fVar8 < fVar9)) { + if ((0.00000000 <= fVar3) || (fVar9 < fVar8)) goto LAB_7f070ec0; + uVar6 = *(undefined4 *)(param_1 + 0x4c); + } + else { + uVar6 = *(undefined4 *)(param_1 + 0x4c); + } + uVar12 = *(undefined4 *)(param_1 + 0x44); + uVar13 = *(undefined4 *)(param_1 + 0x48); + uVar7 = *(undefined4 *)(param_1 + 0x50); + if (param_3 == 0) { + proc_7F070090(param_1,in_f12,in_f14); + fVar3 = extraout_f12_00; + fVar4 = extraout_f14_00; + } + else { + proc_7F0701EC(param_1,in_f12,in_f14,*(float *)(param_1 + 0x28),fVar9); + fVar3 = extraout_f12; + fVar4 = extraout_f14; + } + proc_7F06FCA8(param_1,*(undefined4 *)(param_1 + 0x20), + *(undefined *)(param_1 + 0x24),fVar3,fVar11,fVar4); + *(undefined *)(param_1 + 0x26) = 1; + *(float *)(param_1 + 0x3c) = fVar10; + *(undefined4 *)(param_1 + 0x44) = uVar12; + *(undefined4 *)(param_1 + 0x48) = uVar13; + *(undefined4 *)(param_1 + 0x4c) = uVar6; + *(undefined4 *)(param_1 + 0x50) = uVar7; + fVar8 = (fVar11 + fVar8) - fVar9; + in_f12 = extraout_f12_01; + in_f14 = extraout_f14_01; + if (*(code **)(param_1 + 0x98) != NULL) { + (**(code **)(param_1 + 0x98))(); + in_f12 = extraout_f12_02; + in_f14 = extraout_f14_02; + } + } +LAB_7f070ec0: + param_2 += -1; + if (param_2 < 1) break; + fVar3 = *(float *)(param_1 + 0xb0); + } while( true ); + } + if (param_3 == 0) { + if (*(int *)(param_1 + 0x54) == 0) { + proc_7F070090(param_1,in_f12,in_f14); + } + else { + proc_7F070090(param_1,in_f12,in_f14); + } + } + else { + if (*(int *)(param_1 + 0x54) == 0) { + proc_7F0701EC(param_1,in_f12,in_f14,*(float *)(param_1 + 0x28),fVar8); + } + else { + proc_7F0701EC(param_1,in_f12,in_f14,*(float *)(param_1 + 0x28),fVar8); + } + } + } + return; +} + + + +void proc_7F070F80(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + puVar1[1] = 0; + *puVar1 = 0xe7000000; + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + puVar1[1] = 0; + *puVar1 = 0xba001402; + if (*(int *)(param_1 + 4) == 0) { + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + puVar1[1] = 0x552048; + *puVar1 = 0xb900031d; + } + else { + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + *puVar1 = 0xb900031d; + puVar1[1] = 0x552078; + } + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + puVar1[1] = 0xff33ffff; + *puVar1 = 0xfc121824; + return; +} + + + +void proc_7F071030(int param_1,longlong param_2) + +{ + int iVar1; + uint uVar2; + undefined4 *puVar3; + + iVar1 = *(int *)(param_1 + 0x30); + if (iVar1 == 7) { + if (param_2 != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0; + *puVar3 = 0xe7000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x100000; + *puVar3 = 0xba001402; + uVar2 = *(uint *)(param_1 + 0x38); + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xf8000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | uVar2 & 0xff; + uVar2 = *(uint *)(param_1 + 0x34); + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfb000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x5ffedbf8; + *puVar3 = 0xfc159804; + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc4112078; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc4112048; + *puVar3 = 0xb900031d; + return; + } + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc41049d8; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc41041c8; + *puVar3 = 0xb900031d; + return; + } + if (iVar1 == 8) { + if (param_2 != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0; + *puVar3 = 0xe7000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x100000; + *puVar3 = 0xba001402; + uVar2 = *(uint *)(param_1 + 0x38); + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xf8000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | uVar2 & 0xff; + uVar2 = *(uint *)(param_1 + 0x34); + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfb000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | uVar2 & 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x5ffefff8; + *puVar3 = 0xfc159a04; + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc41049d8; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc41041c8; + *puVar3 = 0xb900031d; + return; + } + } + else { + if (iVar1 == 9) { + if ((*(uint *)(param_1 + 0x34) & 0xff) != 0) { + if (param_2 == 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfa000000; + puVar3[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1fccdff8; + *puVar3 = 0xfc26c204; + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc4113078; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc4113048; + *puVar3 = 0xb900031d; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + uVar2 = *(uint *)(param_1 + 0x38); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0; + *puVar3 = 0xe7000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x100000; + *puVar3 = 0xba001402; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xf8000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | uVar2 & 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfb000000; + puVar3[1] = *(uint *)(param_1 + 0x34) & 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1ffcfbf8; + *puVar3 = 0xfc26e804; + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc4113078; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc4113048; + *puVar3 = 0xb900031d; + return; + } + if (param_2 == 0) { + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc41049d8; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc41041c8; + *puVar3 = 0xb900031d; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + uVar2 = *(uint *)(param_1 + 0x38); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0; + *puVar3 = 0xe7000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x100000; + *puVar3 = 0xba001402; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xf8000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | uVar2 & 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xffffffff; + *puVar3 = 0xfb000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfa000000; + puVar3[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1f1093fb; + *puVar3 = 0xfc26a004; + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc4112078; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc4112048; + *puVar3 = 0xb900031d; + return; + } + if (iVar1 == 4) { + if (param_2 == 0) { + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc41049d8; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc41041c8; + *puVar3 = 0xb900031d; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + uVar2 = *(uint *)(param_1 + 0x34); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0; + *puVar3 = 0xe7000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x100000; + *puVar3 = 0xba001402; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xf8000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | uVar2 & 0xff; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1f1093ff; + *puVar3 = 0xfc26a004; + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc4112078; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc4112048; + *puVar3 = 0xb900031d; + return; + } + if (iVar1 == 5) { + if (param_2 == 0) { + if ((*(uint *)(param_1 + 0x34) & 0xff) < 0xff) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1f10ffff; + *puVar3 = 0xfc269a04; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfc26a004; + puVar3[1] = 0x1f1093ff; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0; + *puVar3 = 0xe7000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x100000; + *puVar3 = 0xba001402; + uVar2 = *(uint *)(param_1 + 0x38); + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xf8000000; + puVar3[1] = uVar2 & 0xff000000 | (uVar2 >> 0x10 & 0xff) << 0x10 | + (uVar2 >> 8 & 0xff) << 8 | uVar2 & 0xff; + uVar2 = *(uint *)(param_1 + 0x34); + if ((uVar2 & 0xff) < 0xff) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfb000000; + puVar3[1] = uVar2 & 0xff | 0xffffff00; + if ((*(uint *)(param_1 + 0x34) & 0xff00) == 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xfc26ea04; + puVar3[1] = 0x1f10ffff; + } + else { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1f10cfff; + *puVar3 = 0xfc26ea04; + } + } + else { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1f1093ff; + *puVar3 = 0xfc26a004; + } + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc41049d8; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc41041c8; + *puVar3 = 0xb900031d; + return; + } + if (param_2 != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0; + *puVar3 = 0xe7000000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x100000; + *puVar3 = 0xba001402; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x1f1093ff; + *puVar3 = 0xfc26a004; + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc192078; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc192048; + *puVar3 = 0xb900031d; + return; + } + if (*(int *)(param_1 + 4) != 0) { + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb900031d; + puVar3[1] = 0xc1849d8; + return; + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0xc1841c8; + *puVar3 = 0xb900031d; + } + return; +} + + + +void proc_7F071B44(int param_1,longlong param_2) + +{ + int iVar1; + undefined4 *puVar2; + uint uVar3; + + iVar1 = *(int *)(param_1 + 0x30); + if (iVar1 == 7) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0; + *puVar2 = 0xe7000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x100000; + *puVar2 = 0xba001402; + puVar2 = *(undefined4 **)(param_1 + 0xc); + uVar3 = *(uint *)(param_1 + 0x38); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xf8000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | + uVar3 & 0xff; + uVar3 = *(uint *)(param_1 + 0x34); + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfb000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | + 0xff; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x5ffedbf8; + *puVar2 = 0xfc159804; + if (param_2 == 0) { + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc41049d8; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc41041c8; + *puVar2 = 0xb900031d; + return; + } + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc4112078; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc4112048; + *puVar2 = 0xb900031d; + return; + } + if (iVar1 == 8) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0; + *puVar2 = 0xe7000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x100000; + *puVar2 = 0xba001402; + puVar2 = *(undefined4 **)(param_1 + 0xc); + uVar3 = *(uint *)(param_1 + 0x38); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xf8000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | + uVar3 & 0xff; + puVar2 = *(undefined4 **)(param_1 + 0xc); + uVar3 = *(uint *)(param_1 + 0x34); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfb000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | + uVar3 & 0xff; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x5ffefff8; + *puVar2 = 0xfc159a04; + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc41049d8; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc41041c8; + *puVar2 = 0xb900031d; + return; + } + if (iVar1 == 9) { + if ((*(uint *)(param_1 + 0x34) & 0xff) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + uVar3 = *(uint *)(param_1 + 0x38); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0; + *puVar2 = 0xe7000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x100000; + *puVar2 = 0xba001402; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xf8000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | + (uVar3 >> 8 & 0xff) << 8 | uVar3 & 0xff; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfb000000; + puVar2[1] = *(uint *)(param_1 + 0x34) & 0xff; + if (param_2 == 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfa000000; + puVar2[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x1fccdff8; + *puVar2 = 0xfc26c204; + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc4113078; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc4113048; + *puVar2 = 0xb900031d; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x1ffcfbf8; + *puVar2 = 0xfc26e804; + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc4113078; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc4113048; + *puVar2 = 0xb900031d; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + uVar3 = *(uint *)(param_1 + 0x38); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0; + *puVar2 = 0xe7000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x100000; + *puVar2 = 0xba001402; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xf8000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | + uVar3 & 0xff; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xffffffff; + *puVar2 = 0xfb000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfa000000; + puVar2[1] = *(uint *)(param_1 + 0x34) >> 8 & 0xff; + if (param_2 == 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x1f1093fb; + *puVar2 = 0xfc26a004; + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc41049d8; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc41041c8; + *puVar2 = 0xb900031d; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfc26a004; + puVar2[1] = 0x1f1093fb; + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc4112078; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc4112048; + *puVar2 = 0xb900031d; + return; + } + if (iVar1 == 4) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + uVar3 = *(uint *)(param_1 + 0x34); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0; + *puVar2 = 0xe7000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x100000; + *puVar2 = 0xba001402; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xf8000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | + uVar3 & 0xff; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x1f1093ff; + *puVar2 = 0xfc26a004; + if (param_2 == 0) { + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc41049d8; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc41041c8; + *puVar2 = 0xb900031d; + return; + } + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc4112078; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc4112048; + *puVar2 = 0xb900031d; + return; + } + if (iVar1 == 5) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0; + *puVar2 = 0xe7000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x100000; + *puVar2 = 0xba001402; + puVar2 = *(undefined4 **)(param_1 + 0xc); + uVar3 = *(uint *)(param_1 + 0x38); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xf8000000; + puVar2[1] = uVar3 & 0xff000000 | (uVar3 >> 0x10 & 0xff) << 0x10 | (uVar3 >> 8 & 0xff) << 8 | + uVar3 & 0xff; + uVar3 = *(uint *)(param_1 + 0x34); + if ((uVar3 & 0xff) < 0xff) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfb000000; + puVar2[1] = uVar3 & 0xff | 0xffffff00; + if (param_2 == 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfc269a04; + puVar2[1] = 0x1f10ffff; + } + else { + if ((*(uint *)(param_1 + 0x34) & 0xff00) == 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x1f10ffff; + *puVar2 = 0xfc26ea04; + } + else { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfc26ea04; + puVar2[1] = 0x1f10cfff; + } + } + } + else { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x1f1093ff; + *puVar2 = 0xfc26a004; + } + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc41049d8; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc41041c8; + *puVar2 = 0xb900031d; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0; + *puVar2 = 0xe7000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x100000; + *puVar2 = 0xba001402; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xffffff00; + *puVar2 = 0xf8000000; + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xfc26a004; + puVar2[1] = 0x1f1093ff; + if (param_2 == 0) { + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc41049d8; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc41041c8; + *puVar2 = 0xb900031d; + return; + } + if (*(int *)(param_1 + 4) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xb900031d; + puVar2[1] = 0xc4112078; + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0xc4112048; + *puVar2 = 0xb900031d; + return; +} + + + +void proc_7F072644(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + puVar1[1] = 0; + *puVar1 = 0xe7000000; + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + puVar1[1] = 0x100000; + *puVar1 = 0xba001402; + if (*(int *)(param_1 + 4) == 0) { + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + *puVar1 = 0xb900031d; + puVar1[1] = 0xc192048; + } + else { + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + *puVar1 = 0xb900031d; + puVar1[1] = 0xc192078; + } + puVar1 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + puVar1[1] = 0x1f1093ff; + *puVar1 = 0xfc26a004; + return; +} + + + +void proc_7F0726F8(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = *(int *)(param_1 + 0x3c); + if (iVar1 == 1) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x3000; + *puVar2 = 0xb6000000; + return; + } + if (iVar1 != 2) { + if (iVar1 == 3) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x2000; + *puVar2 = 0xb7000000; + } + return; + } + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + puVar2[1] = 0x1000; + *puVar2 = 0xb7000000; + return; +} + + + +void proc_7F072784(int param_1,int param_2) + +{ + int *piVar1; + char cVar4; + undefined4 *puVar2; + u32 uVar3; + uint uVar5; + + piVar1 = *(int **)(param_2 + 4); + if (*(int *)(param_1 + 0x18) == 0) { + if ((*(uint *)(param_1 + 8) & 1) == 0) { + uVar5 = *(uint *)(param_1 + 8); + } + else { + if (*piVar1 == 0) { + uVar5 = *(uint *)(param_1 + 8); + } + else { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xbc001406; + uVar3 = osVirtualToPhysical((void *)piVar1[2]); + puVar2[1] = uVar3; + if (*(int *)(param_1 + 0x3c) == 0) { + cVar4 = *(char *)((int)piVar1 + 0x12); + } + else { + proc_7F0726F8(param_1); + cVar4 = *(char *)((int)piVar1 + 0x12); + } + if (cVar4 == '\x01') { + proc_7F070F80(param_1); + puVar2 = *(undefined4 **)(param_1 + 0xc); + } + else { + if (cVar4 == '\x03') { + proc_7F071030(param_1,1); + puVar2 = *(undefined4 **)(param_1 + 0xc); + } + else { + if (cVar4 == '\x04') { + proc_7F071B44(param_1,1); + puVar2 = *(undefined4 **)(param_1 + 0xc); + } + else { + if (cVar4 == '\x02') { + proc_7F072644(param_1); + puVar2 = *(undefined4 **)(param_1 + 0xc); + } + else { + puVar2 = *(undefined4 **)(param_1 + 0xc); + } + } + } + } + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0x6000000; + puVar2[1] = *piVar1; + if (*(char *)((int)piVar1 + 0x12) == '\x03') { + if (piVar1[1] == 0) { + uVar5 = *(uint *)(param_1 + 8); + } + else { + proc_7F071030(param_1,0); + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0x6000000; + puVar2[1] = piVar1[1]; + uVar5 = *(uint *)(param_1 + 8); + } + } + else { + uVar5 = *(uint *)(param_1 + 8); + } + } + } + if (((((uVar5 & 2) != 0) && (*piVar1 != 0)) && (*(char *)((int)piVar1 + 0x12) == '\x04')) && + (piVar1[1] != 0)) { + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0xbc001406; + uVar3 = osVirtualToPhysical((void *)piVar1[2]); + puVar2[1] = uVar3; + if (*(int *)(param_1 + 0x3c) != 0) { + proc_7F0726F8(param_1); + } + proc_7F071B44(param_1,0); + puVar2 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar2 + 2; + *puVar2 = 0x6000000; + puVar2[1] = piVar1[1]; + } + } + return; +} + + + +void proc_7F072984(int param_1,int param_2,ushort *param_3) + +{ + int iVar1; + void **ppvVar2; + short sVar4; + u32 uVar3; + undefined4 *puVar5; + uint uVar6; + + iVar1 = *(int *)(param_3 + 2); + if (*(int *)(param_1 + 0x18) == 0) { + if ((*(uint *)(param_1 + 8) & 1) == 0) { + uVar6 = *(uint *)(param_1 + 8); + } + else { + ppvVar2 = (void **)extract_id_from_object_structure_microcode(param_2,param_3); + if (ppvVar2[1] == NULL) { + uVar6 = *(uint *)(param_1 + 8); + } + else { + puVar5 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; + *puVar5 = 0xbc001406; + uVar3 = osVirtualToPhysical(*(void **)(iVar1 + 0x1c)); + puVar5[1] = uVar3; + if (*(int *)(param_1 + 0x3c) == 0) { + sVar4 = *(short *)(iVar1 + 0x18); + } + else { + proc_7F0726F8(param_1); + sVar4 = *(short *)(iVar1 + 0x18); + } + if (sVar4 == 1) { + proc_7F070F80(param_1); + puVar5 = *(undefined4 **)(param_1 + 0xc); + } + else { + if (sVar4 == 3) { + proc_7F071030(param_1,1); + puVar5 = *(undefined4 **)(param_1 + 0xc); + } + else { + if (sVar4 == 4) { + proc_7F071B44(param_1,1); + puVar5 = *(undefined4 **)(param_1 + 0xc); + } + else { + if (sVar4 == 2) { + proc_7F072644(param_1); + puVar5 = *(undefined4 **)(param_1 + 0xc); + } + else { + puVar5 = *(undefined4 **)(param_1 + 0xc); + } + } + } + } + *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; + *puVar5 = 0xbc001006; + uVar3 = osVirtualToPhysical(*ppvVar2); + puVar5[1] = uVar3; + puVar5 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; + *puVar5 = 0x6000000; + *(void **)(puVar5 + 1) = ppvVar2[1]; + if (*(short *)(iVar1 + 0x18) == 3) { + if (*(int *)(iVar1 + 4) == 0) { + uVar6 = *(uint *)(param_1 + 8); + } + else { + proc_7F071030(param_1,0); + puVar5 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; + *puVar5 = 0x6000000; + puVar5[1] = *(undefined4 *)(iVar1 + 4); + uVar6 = *(uint *)(param_1 + 8); + } + } + else { + uVar6 = *(uint *)(param_1 + 8); + } + } + } + if (((((uVar6 & 2) != 0) && + (ppvVar2 = (void **)extract_id_from_object_structure_microcode(param_2,param_3), + ppvVar2[1] != NULL)) && (*(short *)(iVar1 + 0x18) == 4)) && (*(int *)(iVar1 + 4) != 0)) + { + puVar5 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; + *puVar5 = 0xbc001406; + uVar3 = osVirtualToPhysical(*(void **)(iVar1 + 0x1c)); + puVar5[1] = uVar3; + if (*(int *)(param_1 + 0x3c) == 0) { + puVar5 = *(undefined4 **)(param_1 + 0xc); + } + else { + proc_7F0726F8(param_1); + puVar5 = *(undefined4 **)(param_1 + 0xc); + } + *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; + *puVar5 = 0xbc001006; + uVar3 = osVirtualToPhysical(*ppvVar2); + puVar5[1] = uVar3; + proc_7F071B44(param_1,0); + puVar5 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar5 + 2; + *puVar5 = 0x6000000; + puVar5[1] = *(undefined4 *)(iVar1 + 4); + } + } + return; +} + + + +void proc_7F072C10(void) + +{ + return; +} + + + +void dorottex(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + short sVar1; + int *piVar2; + undefined4 uVar3; + ushort x; + u32 uVar4; + short sVar6; + short sVar7; + u32 uVar5; + int iVar8; + undefined4 *puVar9; + short sVar10; + short sVar11; + uint uVar12; + undefined4 *virtualAddress; + int iVar13; + undefined4 *puVar14; + int iVar15; + int iVar16; + + if (((*(int *)(param_1 + 0x18) == 0) && ((*(uint *)(param_1 + 8) & 2) != 0)) && + (piVar2 = *(int **)(param_2 + 4), piVar2[2] != 0)) { + puVar14 = (undefined4 *)piVar2[1]; + if (vtxallocator == NULL) { + osSyncPrintf("dorottex: no vtx allocator!\n",param_2,param_3,param_4); + return_null(); + } + virtualAddress = (undefined4 *)(*vtxallocator)(*piVar2 << 2); + puVar9 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar9 + 2; + *puVar9 = 0xbc001006; + uVar4 = osVirtualToPhysical(virtualAddress); + puVar9[1] = uVar4; + puVar9 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar9 + 2; + *puVar9 = 0xbc001406; + uVar4 = osVirtualToPhysical((void *)piVar2[3]); + puVar9[1] = uVar4; + puVar9 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar9 + 2; + puVar9[1] = 0; + *puVar9 = 0xf8000000; + puVar9 = *(undefined4 **)(param_1 + 0xc); + iVar15 = 0; + *(undefined4 **)(param_1 + 0xc) = puVar9 + 2; + *puVar9 = 0x6000000; + puVar9[1] = piVar2[2]; + if (0 < *piVar2) { + do { + uVar4 = get_random_value(); + x = (ushort)(uVar4 << 10); + sVar6 = coss(x); + sVar7 = sins(x); + uVar4 = get_random_value(); + iVar13 = -((int)uVar4 >> 0x1f); + uVar5 = get_random_value(); + iVar8 = 0x10000 - (uVar5 & 0x3fff); + *virtualAddress = *puVar14; + sVar6 = (short)((int)sVar6 * 0x16a0 >> 0x12); + sVar11 = 0x200 - sVar6; + sVar7 = (short)((int)sVar7 * 0x16a0 >> 0x12); + sVar10 = 0x200 - sVar7; + virtualAddress[1] = puVar14[1]; + sVar7 += 0x200; + virtualAddress[2] = puVar14[2]; + iVar15 += 1; + virtualAddress[3] = puVar14[3]; + virtualAddress[4] = puVar14[4]; + virtualAddress[5] = puVar14[5]; + virtualAddress[6] = puVar14[6]; + virtualAddress[7] = puVar14[7]; + virtualAddress[8] = puVar14[8]; + virtualAddress[9] = puVar14[9]; + virtualAddress[10] = puVar14[10]; + virtualAddress[0xb] = puVar14[0xb]; + virtualAddress[0xc] = puVar14[0xc]; + virtualAddress[0xd] = puVar14[0xd]; + virtualAddress[0xe] = puVar14[0xe]; + uVar3 = puVar14[0xf]; + *(short *)(virtualAddress + 2) = sVar11; + *(short *)((int)virtualAddress + 10) = sVar10; + virtualAddress[0xf] = uVar3; + iVar16 = iVar13; + if ((0 < (int)uVar4 >> 0x1f) && (iVar13 != 0)) { + iVar16 = iVar13 + -4; + } + puVar9 = puVar14 + iVar16 * 4; + iVar16 = iVar13 + 1; + *(short *)virtualAddress = (short)((uint)(*(short *)puVar9 * iVar8) >> 0x10); + sVar6 += 0x200; + *(undefined2 *)((int)virtualAddress + 2) = + (short)((uint)(*(short *)((int)puVar9 + 2) * iVar8) >> 0x10); + sVar1 = *(short *)(puVar9 + 1); + *(short *)(virtualAddress + 6) = sVar7; + *(short *)((int)virtualAddress + 0x1a) = sVar11; + *(short *)(virtualAddress + 1) = (short)((uint)(sVar1 * iVar8) >> 0x10); + if ((iVar16 < 0) && (iVar16 != 0)) { + iVar16 = iVar13 + -3; + } + puVar9 = puVar14 + iVar16 * 4; + *(short *)(virtualAddress + 4) = (short)((uint)(*(short *)puVar9 * iVar8) >> 0x10); + *(undefined2 *)((int)virtualAddress + 0x12) = + (short)((uint)(*(short *)((int)puVar9 + 2) * iVar8) >> 0x10); + sVar11 = *(short *)(puVar9 + 1); + *(short *)(virtualAddress + 10) = sVar6; + *(short *)((int)virtualAddress + 0x2a) = sVar7; + *(short *)(virtualAddress + 5) = (short)((uint)(sVar11 * iVar8) >> 0x10); + uVar12 = iVar13 + 2U & 3; + if (((int)(iVar13 + 2U) < 0) && (uVar12 != 0)) { + uVar12 -= 4; + } + puVar9 = puVar14 + uVar12 * 4; + *(short *)(virtualAddress + 8) = (short)((uint)(*(short *)puVar9 * iVar8) >> 0x10); + *(undefined2 *)((int)virtualAddress + 0x22) = + (short)((uint)(*(short *)((int)puVar9 + 2) * iVar8) >> 0x10); + sVar7 = *(short *)(puVar9 + 1); + *(short *)(virtualAddress + 0xe) = sVar10; + *(short *)((int)virtualAddress + 0x3a) = sVar6; + *(short *)(virtualAddress + 9) = (short)((uint)(sVar7 * iVar8) >> 0x10); + uVar12 = iVar13 + 3U & 3; + if (((int)(iVar13 + 3U) < 0) && (uVar12 != 0)) { + uVar12 -= 4; + } + puVar9 = puVar14 + uVar12 * 4; + puVar14 = puVar14 + 0x10; + *(short *)(virtualAddress + 0xc) = (short)((uint)(*(short *)puVar9 * iVar8) >> 0x10) + ; + *(undefined2 *)((int)virtualAddress + 0x32) = + (short)((uint)(*(short *)((int)puVar9 + 2) * iVar8) >> 0x10); + *(short *)(virtualAddress + 0xd) = + (short)((uint)(*(short *)(puVar9 + 1) * iVar8) >> 0x10); + virtualAddress = virtualAddress + 0x10; + } while (iVar15 < *piVar2); + } + } + return; +} + + + +void proc_7F073038(int param_1,uint *param_2,int param_3) + +{ + append_image_to_DL((uint **)(param_1 + 0xc),(sImageTableEntry *)param_2,param_3, + (longlong)*(int *)(param_1 + 4),2); + return; +} + + + +void proc_7F07306C(void) + +{ + return; +} + + + +void dotube(int param_1,int param_2,ushort *param_3) + +{ + byte bVar1; + char cVar2; + ushort **ppuVar3; + int iVar4; + int iVar5; + ushort *puVar6; + uint *puVar7; + bool bVar8; + int iVar9; + int *piVar10; + int *piVar11; + short sVar13; + short sVar14; + u32 uVar12; + byte *pbVar15; + undefined2 *puVar16; + ushort *partdesc; + char *pcVar17; + ulonglong uVar18; + int iVar19; + undefined4 *puVar20; + int iVar21; + undefined4 *puVar22; + undefined4 *virtualAddress; + int iVar23; + char *pcVar24; + ulonglong uVar25; + int iVar26; + + ppuVar3 = *(ushort ***)(param_3 + 2); + piVar10 = (int *)extract_id_from_object_structure_microcode(param_2,param_3); + partdesc = *ppuVar3; + if (partdesc == NULL) { + partdesc = ppuVar3[1]; + } + iVar4 = *(int *)(partdesc + 2); + piVar11 = (int *)extract_id_from_object_structure_microcode(param_2,partdesc); + bVar8 = true; + if ((*(uint *)(param_1 + 8) & 1) != 0) { + sVar13 = proc_7F06C570(param_3,0); + iVar5 = *(int *)(param_2 + 0xc); + iVar23 = *piVar10; + partdesc = ppuVar3[3]; + iVar26 = *piVar11; + iVar9 = iVar23 * 4; + if (*ppuVar3 == NULL) { + sVar14 = proc_7F06C570(ppuVar3[1],0x200); + iVar21 = *(int *)(param_2 + 0xc); + iVar19 = iVar26; + } + else { + sVar14 = proc_7F06C570(param_3,0x200); + iVar21 = *(int *)(param_2 + 0xc); + iVar19 = iVar23; + iVar23 = iVar26; + } + puVar6 = ppuVar3[2]; + iVar19 = (iVar19 - iVar23) + (int)puVar6; + iVar26 = iVar19 % (int)puVar6; + if (puVar6 == NULL) { + trap(0x1c00); + } + if ((puVar6 == (ushort *)0xffffffff) && (iVar19 == -0x80000000)) { + trap(0x1800); + } + if ((iVar26 < 2) || (6 < iVar26)) { + if ((iVar26 < 10) || (0xe < iVar26)) { + if ((6 < iVar26) && (iVar26 < 10)) { + bVar8 = false; + } + virtualAddress = *(undefined4 **)(param_1 + 0xc); + } + else { + if (iVar26 < 0xd) { + iVar19 = iVar26 + -8; + if (iVar19 < 0) { + iVar19 = iVar26 + -7; + } + iVar26 = (iVar19 >> 1) + iVar23 + (int)puVar6; + iVar23 = iVar26 % (int)puVar6; + bVar8 = false; + if (puVar6 == NULL) { + trap(0x1c00); + } + if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { + trap(0x1800); + } + virtualAddress = *(undefined4 **)(param_1 + 0xc); + } + else { + iVar19 = -iVar26 + 0x10; + if (iVar19 < 0) { + iVar19 = -iVar26 + 0x11; + } + iVar26 = (iVar23 - (iVar19 >> 1)) + (int)puVar6; + iVar23 = iVar26 % (int)puVar6; + if (puVar6 == NULL) { + trap(0x1c00); + } + if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { + trap(0x1800); + } + virtualAddress = *(undefined4 **)(param_1 + 0xc); + } + } + } + else { + if (iVar26 < 4) { + if (iVar26 < 0) { + iVar26 += 1; + } + iVar26 = (iVar26 >> 1) + iVar23 + (int)puVar6; + iVar23 = iVar26 % (int)puVar6; + if (puVar6 == NULL) { + trap(0x1c00); + } + if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { + trap(0x1800); + } + virtualAddress = *(undefined4 **)(param_1 + 0xc); + } + else { + iVar19 = -iVar26 + 8; + if (iVar19 < 0) { + iVar19 = -iVar26 + 9; + } + iVar26 = (iVar23 - (iVar19 >> 1)) + (int)puVar6; + iVar23 = iVar26 % (int)puVar6; + bVar8 = false; + if (puVar6 == NULL) { + trap(0x1c00); + } + if ((puVar6 == (ushort *)0xffffffff) && (iVar26 == -0x80000000)) { + trap(0x1800); + } + virtualAddress = *(undefined4 **)(param_1 + 0xc); + } + } + pcVar24 = *(char **)(partdesc + iVar9 + 2); + *(undefined4 **)(param_1 + 0xc) = virtualAddress + 2; + *virtualAddress = 0xbc001406; + uVar12 = osVirtualToPhysical(ppuVar3[0x6b]); + virtualAddress[1] = uVar12; + bVar1 = *(byte *)(partdesc + iVar9); + uVar25 = (ulonglong)bVar1; + if (bVar1 != 0) { + cVar2 = *pcVar24; + do { + if (cVar2 == '\x01') { + if (vtxallocator == NULL) { + osSyncPrintf("dotube: no vtx allocator!\n"); + return_null(); + } + virtualAddress = (undefined4 *)(*vtxallocator)(2); + puVar22 = virtualAddress + 4; + puVar20 = (undefined4 *)(ppuVar3[4] + (uint)*(ushort *)(pcVar24 + 2) * 8); + *virtualAddress = *puVar20; + virtualAddress[1] = puVar20[1]; + virtualAddress[2] = puVar20[2]; + virtualAddress[3] = puVar20[3]; + partdesc = ppuVar3[4] + (uint)*(ushort *)(pcVar24 + 2) * 8; + *puVar22 = *(undefined4 *)(partdesc + 8); + virtualAddress[5] = *(undefined4 *)(partdesc + 10); + virtualAddress[6] = *(undefined4 *)(partdesc + 0xc); + virtualAddress[7] = *(undefined4 *)(partdesc + 0xe); + if (ppuVar3[1] == NULL) { + pbVar15 = (byte *)(*(int *)(iVar4 + 0xc) + iVar23 * 8); + bVar1 = *pbVar15; + uVar18 = (ulonglong)bVar1; + pcVar17 = *(char **)(pbVar15 + 4); + if (bVar1 == 0) { + puVar22 = *(undefined4 **)(param_1 + 0xc); + } + else { + cVar2 = *pcVar17; + while (uVar18 = SEXT48((int)uVar18 + -1), cVar2 != '\x01') { + if (cVar2 == '\x01') { + pcVar17 = pcVar17 + 4; + } + else { + if (cVar2 == '\x02') { + pcVar17 = pcVar17 + 2; + } + else { + if (cVar2 == '\x03') { + pcVar17 = pcVar17 + 4; + } + } + } + if ((longlong)uVar18 < 1) goto LAB_7f073618; + cVar2 = *pcVar17; + } + puVar16 = (undefined2 *) + (*(int *)(iVar4 + 0x10) + + (uint)*(ushort *)(pcVar17 + 2) * 0x10); + if (bVar8) { + *(undefined2 *)virtualAddress = puVar16[8]; + *(undefined2 *)((int)virtualAddress + 2) = puVar16[9]; + *(undefined2 *)(virtualAddress + 1) = puVar16[10]; + *(undefined2 *)puVar22 = *puVar16; + *(undefined2 *)((int)virtualAddress + 0x12) = puVar16[1]; + *(undefined2 *)(virtualAddress + 5) = puVar16[2]; + } + else { + *(undefined2 *)virtualAddress = *puVar16; + *(undefined2 *)((int)virtualAddress + 2) = puVar16[1]; + *(undefined2 *)(virtualAddress + 1) = puVar16[2]; + *(undefined2 *)puVar22 = puVar16[8]; + *(undefined2 *)((int)virtualAddress + 0x12) = puVar16[9]; + *(undefined2 *)(virtualAddress + 5) = puVar16[10]; + } +LAB_7f073618: + puVar22 = *(undefined4 **)(param_1 + 0xc); + } + } + else { + bVar1 = *(byte *)(ppuVar3[3] + iVar23 * 4); + uVar18 = (ulonglong)bVar1; + pcVar17 = *(char **)(ppuVar3[3] + iVar23 * 4 + 2); + if (bVar1 != 0) { + cVar2 = *pcVar17; + while (uVar18 = SEXT48((int)uVar18 + -1), cVar2 != '\x01') { + if (cVar2 == '\x01') { + pcVar17 = pcVar17 + 4; + } + else { + if (cVar2 == '\x02') { + pcVar17 = pcVar17 + 2; + } + else { + if (cVar2 == '\x03') { + pcVar17 = pcVar17 + 4; + } + } + } + if ((longlong)uVar18 < 1) { + puVar22 = *(undefined4 **)(param_1 + 0xc); + goto LAB_7f07361c; + } + cVar2 = *pcVar17; + } + partdesc = ppuVar3[4] + (uint)*(ushort *)(pcVar17 + 2) * 8; + *(ushort *)virtualAddress = *partdesc; + *(ushort *)((int)virtualAddress + 2) = partdesc[1]; + *(ushort *)(virtualAddress + 1) = partdesc[2]; + *(ushort *)puVar22 = partdesc[8]; + *(ushort *)((int)virtualAddress + 0x12) = partdesc[9]; + *(ushort *)(virtualAddress + 5) = partdesc[10]; + goto LAB_7f073618; + } + puVar22 = *(undefined4 **)(param_1 + 0xc); + } +LAB_7f07361c: + *(undefined4 **)(param_1 + 0xc) = puVar22 + 2; + *puVar22 = 0x1020040; + uVar12 = osVirtualToPhysical((void *)(iVar21 + (int)sVar14 * 0x40)); + puVar22[1] = uVar12; + puVar22 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar22 + 2; + *puVar22 = 0x4100020; + uVar12 = osVirtualToPhysical(virtualAddress); + puVar22[1] = uVar12; + virtualAddress = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = virtualAddress + 2; + *virtualAddress = 0x1020040; + uVar12 = osVirtualToPhysical((void *)(iVar5 + (int)sVar13 * 0x40)); + virtualAddress[1] = uVar12; + puVar7 = *(uint **)(param_1 + 0xc); + *(uint **)(param_1 + 0xc) = puVar7 + 2; + *puVar7 = (((uint)(byte)pcVar24[1] - 3) * 0x10 & 0xff | 2) << 0x10 | 0x4000000 | + ((uint)(byte)pcVar24[1] - 2) * 0x10 & 0xffff; + uVar12 = osVirtualToPhysical(ppuVar3[4] + + (uint)*(ushort *)(pcVar24 + 2) * 8 + 0x10); + pcVar24 = pcVar24 + 4; + puVar7[1] = uVar12; + } + else { + if (cVar2 == '\x02') { + if (pcVar24[1] == 0xff) { + proc_7F073038(param_1,NULL,1); + pcVar24 = pcVar24 + 2; + } + else { + proc_7F073038(param_1,(uint *)(ppuVar3[5] + (uint)(byte)pcVar24[1] * 6), + 1); + pcVar24 = pcVar24 + 2; + } + } + else { + if (cVar2 == '\x03') { + virtualAddress = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = virtualAddress + 2; + *virtualAddress = 0xbf000000; + virtualAddress[1] = + ((uint)(byte)pcVar24[1] * 10 & 0xff) << 0x10 | + ((uint)(byte)pcVar24[2] * 10 & 0xff) << 8 | + (uint)(byte)pcVar24[3] * 10 & 0xff; + pcVar24 = pcVar24 + 4; + } + } + } + uVar25 = SEXT48((int)uVar25 + -1); + if ((longlong)uVar25 < 1) { + return; + } + cVar2 = *pcVar24; + } while( true ); + } + } + return; +} + + + +void proc_7F0737EC(void) + +{ + return; +} + + + +void proc_7F0737FC(void) + +{ + return; +} + + + +void dogfnegx(int param_1,int param_2,ushort *param_3) + +{ + byte bVar1; + byte bVar2; + float *pfVar3; + undefined4 *puVar4; + uint *puVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + short *psVar10; + short sVar12; + u32 uVar11; + undefined4 *virtualAddress; + short sVar13; + short sVar14; + short sVar15; + float *virtualAddress_00; + ushort x; + float __x; + float __x_00; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fStack48; + float fStack44; + float fStack40; + + pfVar3 = *(float **)(param_3 + 2); + psVar10 = (short *)extract_id_from_object_structure_microcode(param_2,param_3); + uVar9 = dword_800363EC; + uVar8 = DAT_800363e8; + uVar7 = DAT_800363e4; + uVar6 = DAT_800363e0; + if (((*(uint *)(param_1 + 8) & 2) != 0) && (*psVar10 != 0)) { + sVar12 = proc_7F06C570(param_3,0); + virtualAddress_00 = (float *)(*(int *)(param_2 + 0xc) + (int)sVar12 * 0x40); + fStack48 = -(virtualAddress_00[0xc] + + *pfVar3 * *virtualAddress_00 + pfVar3[1] * virtualAddress_00[4] + + pfVar3[2] * virtualAddress_00[8]); + fStack44 = -(virtualAddress_00[0xd] + + *pfVar3 * virtualAddress_00[1] + pfVar3[1] * virtualAddress_00[5] + + pfVar3[2] * virtualAddress_00[9]); + fStack40 = -(virtualAddress_00[0xe] + + *pfVar3 * virtualAddress_00[2] + pfVar3[1] * virtualAddress_00[6] + + pfVar3[2] * virtualAddress_00[10]); + __x = sqrtf(fStack40 * fStack40 + fStack48 * fStack48 + fStack44 * fStack44); + if (0.00000000 < __x) { + __x = 1.00000000 / (*(float *)(param_2 + 0x14) * __x); + fStack48 = fStack48 * __x; + fStack44 = fStack44 * __x; + fStack40 = fStack40 * __x; + } + else { + fStack48 = 0.00000000; + fStack44 = 0.00000000; + fStack40 = 1.00000000 / *(float *)(param_2 + 0x14); + } + __x = proc_7F05ACB0(virtualAddress_00[6] * fStack40 + + fStack48 * virtualAddress_00[4] + fStack44 * virtualAddress_00[5]); + __x_00 = sinf(__x); + __x_00 = proc_7F05ACB0(-(fStack48 * virtualAddress_00[8] + fStack44 * virtualAddress_00[9] + + fStack40 * virtualAddress_00[10]) / __x_00); + if (-(virtualAddress_00[2] * fStack40 + + fStack48 * *virtualAddress_00 + fStack44 * virtualAddress_00[1]) < 0.00000000) { + __x_00 = flt_80054D50 - __x_00; + } + fVar16 = cosf(__x_00); + __x_00 = sinf(__x_00); + fVar17 = cosf(__x); + __x = sinf(__x); + uVar11 = get_random_value(); + fVar20 = (float)(uVar11 & 0x7f); + if (false) { + fVar20 = fVar20 + 4294967296.00000000; + } + fVar20 = fVar20 * 0.00390625 + 0.75000000; + fVar19 = pfVar3[3] * fVar20; + fVar21 = pfVar3[5]; + fVar24 = pfVar3[4] * fVar20 * __x * 0.50000000; + __x = *pfVar3 - fVar19 * 0.50000000; + fVar23 = pfVar3[1]; + fVar22 = pfVar3[2]; + if (vtxallocator == NULL) { + osSyncPrintf("dogfnegx: no vtx allocator!\n"); + return_null(); + } + virtualAddress = (undefined4 *)(*vtxallocator)(4); + *virtualAddress = uVar6; + virtualAddress[1] = uVar7; + virtualAddress[2] = uVar8; + virtualAddress[3] = uVar9; + virtualAddress[4] = uVar6; + virtualAddress[5] = uVar7; + virtualAddress[6] = uVar8; + virtualAddress[7] = uVar9; + virtualAddress[8] = uVar6; + virtualAddress[9] = uVar7; + virtualAddress[10] = uVar8; + virtualAddress[0xb] = uVar9; + virtualAddress[0xc] = uVar6; + virtualAddress[0xd] = uVar7; + virtualAddress[0xe] = uVar8; + virtualAddress[0xf] = uVar9; + fVar18 = -(fVar19 * fVar16 * 0.50000000); + fVar19 = -(fVar19 * fVar17 * __x_00 * 0.50000000); + *(short *)virtualAddress = (short)(int)(__x + fVar18 + fVar19); + *(undefined2 *)((int)virtualAddress + 2) = (short)(int)(fVar23 - fVar24); + __x_00 = -(fVar21 * fVar20 * __x_00 * 0.50000000); + fVar16 = -(fVar21 * fVar20 * fVar17 * fVar16 * 0.50000000); + *(short *)(virtualAddress + 1) = (short)(int)((fVar22 - __x_00) + fVar16); + *(short *)(virtualAddress + 4) = (short)(int)((__x + fVar18) - fVar19); + *(undefined2 *)((int)virtualAddress + 0x12) = (short)(int)(fVar23 + fVar24); + *(short *)(virtualAddress + 5) = (short)(int)((fVar22 - __x_00) - fVar16); + *(short *)(virtualAddress + 8) = (short)(int)((__x - fVar18) - fVar19); + *(undefined2 *)((int)virtualAddress + 0x22) = (short)(int)(fVar23 + fVar24); + *(short *)(virtualAddress + 9) = (short)(int)((fVar22 + __x_00) - fVar16); + *(short *)(virtualAddress + 0xc) = (short)(int)((__x - fVar18) + fVar19); + *(undefined2 *)((int)virtualAddress + 0x32) = (short)(int)(fVar23 - fVar24); + *(short *)(virtualAddress + 0xd) = (short)(int)(fVar22 + __x_00 + fVar16); + puVar4 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; + *puVar4 = 0xbc001406; + uVar11 = osVirtualToPhysical((void *)pfVar3[9]); + puVar4[1] = uVar11; + puVar5 = (uint *)pfVar3[6]; + if (puVar5 == NULL) { + proc_7F073038(param_1,NULL,1); + puVar4 = *(undefined4 **)(param_1 + 0xc); + } + else { + uVar11 = get_random_value(); + x = (ushort)(uVar11 << 10); + sVar13 = coss(x); + bVar1 = *(byte *)(puVar5 + 1); + sVar14 = sins(x); + bVar2 = *(byte *)(puVar5 + 1); + sVar12 = (ushort)bVar2 * 0x10; + sVar13 = (short)((int)((int)sVar13 * (uint)bVar1 * 0xb5) >> 0x12); + sVar15 = sVar12 - sVar13; + *(short *)(virtualAddress + 2) = sVar15; + *(short *)((int)virtualAddress + 0x1a) = sVar15; + sVar13 = sVar12 + sVar13; + *(short *)(virtualAddress + 10) = sVar13; + *(short *)((int)virtualAddress + 0x3a) = sVar13; + sVar13 = (short)((int)((int)sVar14 * (uint)bVar2 * 0xb5) >> 0x12); + sVar14 = sVar12 - sVar13; + sVar12 += sVar13; + *(short *)((int)virtualAddress + 10) = sVar14; + *(short *)(virtualAddress + 6) = sVar12; + *(short *)((int)virtualAddress + 0x2a) = sVar12; + *(short *)(virtualAddress + 0xe) = sVar14; + proc_7F073038(param_1,puVar5,4); + puVar4 = *(undefined4 **)(param_1 + 0xc); + } + *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; + puVar4[1] = 0x2000; + *puVar4 = 0xb7000000; + puVar4 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; + *puVar4 = 0x1020040; + uVar11 = osVirtualToPhysical(virtualAddress_00); + puVar4[1] = uVar11; + puVar4 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; + *puVar4 = 0x4300040; + uVar11 = osVirtualToPhysical(virtualAddress); + puVar4[1] = uVar11; + puVar4 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar4 + 2; + puVar4[1] = 0x3210; + *puVar4 = 0xb1000002; + } + return; +} + + + +void proc_7F073FC8(undefined4 param_1) + +{ + dword_800363F0 = param_1; + return; +} + + + +void doshadow(int param_1,int param_2,ushort *param_3) + +{ + byte bVar1; + float *pfVar2; + undefined4 *puVar3; + uint *puVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + uint uVar8; + int iVar9; + short sVar11; + undefined4 *virtualAddress; + u32 uVar10; + undefined2 uVar12; + float fVar13; + float fVar14; + float fVar15; + uint local_14; + + uVar8 = dword_80036404; + uVar7 = dword_80036400; + uVar6 = dword_800363FC; + uVar5 = dword_800363F8; + if (0 < (int)dword_800363F0) { + pfVar2 = *(float **)(param_3 + 2); + iVar9 = extract_id_from_object_structure_microcode(param_2,(ushort *)pfVar2[5]); + fVar14 = pfVar2[2]; + fVar15 = pfVar2[3]; + fVar13 = *(float *)(iVar9 + 0xc) - *(float *)(iVar9 + 4); + if ((*(uint *)(param_1 + 8) & 2) != 0) { + if ((*(int *)(param_1 + 0x30) == 3) || (*(int *)(param_1 + 0x30) == 8)) { + local_14 = uVar8 & 0xffffff00 | + ((*(uint *)(param_1 + 0x34) & 0xff) * dword_800363F0) / 0xff & 0xff; + } + else { + local_14 = uVar8 & 0xffffff00 | dword_800363F0 & 0xff; + } + sVar11 = proc_7F06C570(param_3,0); + iVar9 = *(int *)(param_2 + 0xc); + if (*(int *)(param_1 + 4) == 0) { + uVar12 = (undefined2)(int)(-fVar13 / *(float *)(param_2 + 0x14)); + } + else { + uVar12 = (undefined2)(int)((2.00000000 - fVar13) / *(float *)(param_2 + 0x14)); + } + if (fVar13 < 50.00000000) { + fVar14 = fVar14 * 1.25000000; + fVar15 = fVar15 * 1.25000000; + } + else { + if (300.00000000 < fVar13) { + fVar15 = 0.00000000; + fVar14 = 0.00000000; + } + else { + fVar13 = (300.00000000 - fVar13) / 200.00000000; + fVar14 = fVar14 * fVar13; + fVar15 = fVar15 * fVar13; + } + } + if (vtxallocator == NULL) { + osSyncPrintf("doshadow: no vtx allocator!\n"); + return_null(); + } + virtualAddress = (undefined4 *)(*vtxallocator)(4); + *virtualAddress = uVar5; + virtualAddress[1] = uVar6; + virtualAddress[2] = uVar7; + virtualAddress[3] = local_14; + virtualAddress[4] = uVar5; + virtualAddress[5] = uVar6; + virtualAddress[6] = uVar7; + virtualAddress[7] = local_14; + virtualAddress[8] = uVar5; + virtualAddress[9] = uVar6; + virtualAddress[10] = uVar7; + virtualAddress[0xb] = local_14; + virtualAddress[0xc] = uVar5; + virtualAddress[0xd] = uVar6; + virtualAddress[0xe] = uVar7; + virtualAddress[0xf] = local_14; + fVar13 = *pfVar2; + *(undefined2 *)((int)virtualAddress + 2) = uVar12; + *(short *)virtualAddress = (short)(int)(fVar13 - fVar14); + *(short *)(virtualAddress + 1) = (short)(int)(pfVar2[1] - fVar15); + fVar13 = *pfVar2; + *(undefined2 *)((int)virtualAddress + 0x12) = uVar12; + *(short *)(virtualAddress + 4) = (short)(int)(fVar13 - fVar14); + *(short *)(virtualAddress + 5) = (short)(int)(pfVar2[1] + fVar15); + fVar13 = *pfVar2; + *(undefined2 *)((int)virtualAddress + 0x22) = uVar12; + *(short *)(virtualAddress + 8) = (short)(int)(fVar13 + fVar14); + *(short *)(virtualAddress + 9) = (short)(int)(pfVar2[1] + fVar15); + fVar13 = *pfVar2; + *(undefined2 *)((int)virtualAddress + 0x32) = uVar12; + *(short *)(virtualAddress + 0xc) = (short)(int)(fVar13 + fVar14); + *(short *)(virtualAddress + 0xd) = (short)(int)(pfVar2[1] - fVar15); + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xbc001406; + uVar10 = osVirtualToPhysical((void *)pfVar2[7]); + puVar3[1] = uVar10; + puVar4 = (uint *)pfVar2[4]; + if (puVar4 == NULL) { + proc_7F073038(param_1,NULL,1); + } + else { + *(undefined2 *)(virtualAddress + 2) = 0; + *(undefined2 *)((int)virtualAddress + 10) = 0; + bVar1 = *(byte *)(puVar4 + 1); + *(undefined2 *)((int)virtualAddress + 0x1a) = 0; + *(ushort *)(virtualAddress + 6) = (ushort)bVar1 * 0x20 + -1; + *(ushort *)(virtualAddress + 10) = (ushort)*(byte *)(puVar4 + 1) * 0x20 + -1; + bVar1 = *(byte *)((int)puVar4 + 5); + *(undefined2 *)(virtualAddress + 0xe) = 0; + *(short *)((int)virtualAddress + 0x2a) = (ushort)bVar1 * 0x20 + -1; + *(short *)((int)virtualAddress + 0x3a) = + (ushort)*(byte *)((int)puVar4 + 5) * 0x20 + -1; + proc_7F073038(param_1,puVar4,4); + } + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0xb7000000; + puVar3[1] = 0x2000; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0x1020040; + uVar10 = osVirtualToPhysical((void *)(iVar9 + (int)sVar11 * 0x40)); + puVar3[1] = uVar10; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + *puVar3 = 0x4300040; + uVar10 = osVirtualToPhysical(virtualAddress); + puVar3[1] = uVar10; + puVar3 = *(undefined4 **)(param_1 + 0xc); + *(undefined4 **)(param_1 + 0xc) = puVar3 + 2; + puVar3[1] = 0x3210; + *puVar3 = 0xb1000002; + } + } + return; +} + + + +void proc_7F074514(void) + +{ + return; +} + + + +void proc_7F074524(void) + +{ + return; +} + + + +void proc_7F074534(int param_1,int param_2,ushort *param_3) + +{ + if (true) { + switch((uint)*param_3 & 0xff) { + case 4: + proc_7F072784(param_1,(int)param_3); + break; + case 5: + proc_7F07306C(); + break; + case 6: + proc_7F0737EC(); + break; + case 7: + dotube(param_1,param_2,param_3); + break; + case 8: + proc_7F06E970(param_2,param_3); + break; + case 9: + proc_7F06EB10(param_2,param_3); + break; + case 10: + proc_7F074514(); + break; + case 0xb: + proc_7F0737FC(); + break; + case 0xc: + dogfnegx(param_1,param_2,param_3); + break; + case 0xd: + doshadow(param_1,param_2,param_3); + break; + case 0x11: + proc_7F074524(); + break; + case 0x12: + process_12_handle_switch(param_2,param_3); + break; + case 0x14: + proc_7F072C10(); + break; + case 0x16: + dorottex(param_1,(uint)param_3,param_3,param_2); + break; + case 0x17: + process_17_pointer_to_head(param_2,param_3); + break; + case 0x18: + proc_7F072984(param_1,param_2,param_3); + } + } + return; +} + + + +void subdraw(int param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + ushort *puVar2; + u32 uVar3; + ushort *puVar4; + + puVar1 = *(undefined4 **)(param_2 + 8); + puVar2 = (ushort *)*puVar1; + if (*(int *)(param_1 + 0xc) == 0) { + osSyncPrintf("subdraw: no gfxlist!\n",param_2,param_3,param_4); + return_null(); + puVar1 = *(undefined4 **)(param_2 + 8); + } + if (puVar1[7] == 0) { + osSyncPrintf("subdraw: object not initialised! (0x%X)\n",puVar1); + return_null(); + puVar1 = *(undefined4 **)(param_1 + 0xc); + } + else { + puVar1 = *(undefined4 **)(param_1 + 0xc); + } + *(undefined4 **)(param_1 + 0xc) = puVar1 + 2; + *puVar1 = 0xbc000c06; + uVar3 = osVirtualToPhysical(*(void **)(param_2 + 0xc)); + puVar1[1] = uVar3; + while (puVar4 = puVar2, puVar4 != NULL) { + proc_7F074534(param_1,param_2,puVar4); + puVar2 = (ushort *)*(int *)(puVar4 + 10); + if ((*(int *)(puVar4 + 10) == 0) && (puVar2 = puVar4, puVar4 != NULL)) { + puVar2 = *(ushort **)(puVar4 + 6); + while ((puVar2 == NULL && + (puVar4 = *(ushort **)(puVar4 + 4), puVar2 = puVar4, puVar4 != NULL))) { + puVar2 = *(ushort **)(puVar4 + 6); + } + } + } + return; +} + + + +void proc_7F074790(float **param_1,uint param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + + subcalcpos(param_2,param_2,param_3,param_4); + subcalcmatrices(param_1,param_2,extraout_a2_lo,extraout_a3_lo); + subdraw((int)param_1,param_2,extraout_a2_lo_00,extraout_a3_lo_00); + return; +} + + + +undefined8 proc_7F0747D0(int param_1,float *param_2,float *param_3,float *param_4) + +{ + undefined8 uVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float local_68; + float local_64; + float local_60; + float local_5c; + float local_24; + float local_1c; + + fVar2 = *param_2; + fVar3 = param_2[1]; + fVar10 = param_2[2]; + fVar11 = -(fVar2 * fVar2 + fVar3 * fVar3 + fVar10 * fVar10); + fVar7 = param_4[2]; + fVar8 = *param_4; + fVar9 = param_4[1]; + local_1c = fVar7 * fVar10 + fVar2 * fVar8 + fVar3 * fVar9; + fVar4 = param_3[2] - param_2[0xe]; + fVar5 = *param_3 - param_2[0xc]; + fVar6 = param_3[1] - param_2[0xd]; + fVar3 = fVar4 * fVar10 + fVar2 * fVar5 + fVar3 * fVar6; + fVar2 = -(fVar3 + fVar11 * *(float *)(param_1 + 8)); + local_24 = -(fVar3 + fVar11 * *(float *)(param_1 + 4)); + if (local_1c < 0.00000000) { + local_1c = -local_1c; + local_24 = -local_24; + fVar2 = -fVar2; + } + if ((0.00000000 <= local_24) || (0.00000000 <= fVar2)) { + if (fVar2 < local_24) { + fVar10 = param_2[4]; + fVar3 = fVar2; + } + else { + fVar10 = param_2[4]; + fVar3 = local_24; + local_24 = fVar2; + } + fVar2 = param_2[5]; + fVar11 = param_2[6]; + fVar12 = -(fVar10 * fVar10 + fVar2 * fVar2 + fVar11 * fVar11); + local_68 = fVar7 * fVar11 + fVar10 * fVar8 + fVar2 * fVar9; + fVar2 = fVar4 * fVar11 + fVar10 * fVar5 + fVar2 * fVar6; + local_5c = -(fVar2 + fVar12 * *(float *)(param_1 + 0x10)); + fVar2 = -(fVar2 + fVar12 * *(float *)(param_1 + 0xc)); + if (local_68 < 0.00000000) { + local_68 = -local_68; + fVar2 = -fVar2; + local_5c = -local_5c; + } + if ((0.00000000 <= fVar2) || (0.00000000 <= local_5c)) { + local_64 = fVar2; + if (fVar2 <= local_5c) { + local_64 = local_5c; + local_5c = fVar2; + } + if (local_5c * local_1c < fVar3 * local_68) { + if (local_64 * local_1c < fVar3 * local_68) { + return 0; + } + local_60 = local_1c; + local_5c = fVar3; + } + else { + local_60 = local_68; + if (local_24 * local_68 < local_5c * local_1c) { + return 0; + } + } + if (local_24 * local_68 < local_64 * local_1c) { + local_64 = local_24; + local_68 = local_1c; + } + fVar2 = param_2[8]; + fVar3 = param_2[9]; + fVar10 = param_2[10]; + fVar11 = -(fVar2 * fVar2 + fVar3 * fVar3 + fVar10 * fVar10); + fVar7 = fVar7 * fVar10 + fVar2 * fVar8 + fVar3 * fVar9; + fVar3 = fVar4 * fVar10 + fVar2 * fVar5 + fVar3 * fVar6; + fVar2 = -(fVar3 + fVar11 * *(float *)(param_1 + 0x18)); + fVar3 = -(fVar3 + fVar11 * *(float *)(param_1 + 0x14)); + if (fVar7 < 0.00000000) { + fVar7 = -fVar7; + fVar3 = -fVar3; + fVar2 = -fVar2; + } + if ((0.00000000 <= fVar3) || (0.00000000 <= fVar2)) { + fVar4 = fVar3; + if (fVar3 <= fVar2) { + fVar4 = fVar2; + fVar2 = fVar3; + } + if (local_5c * fVar7 < fVar2 * local_60) { + if (local_64 * fVar7 < fVar2 * local_68) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + else { + if (fVar4 * local_60 < local_5c * fVar7) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +void proc_7F074C68(int param_1,ushort *param_2,float *param_3,float *param_4) + +{ + int iVar1; + float *pfVar2; + + iVar1 = *(int *)(param_2 + 2); + pfVar2 = (float *)proc_7F06C660(param_1,param_2,0); + proc_7F0747D0(iVar1,pfVar2,param_3,param_4); + return; +} + + + +undefined8 proc_7F074CAC(int param_1,ushort *param_2,float *param_3,float *param_4) + +{ + ushort uVar1; + int iVar2; + float *pfVar4; + int iVar5; + undefined8 uVar3; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fStack92; + float fStack88; + float fStack84; + float fStack32; + float fStack28; + float fStack24; + float fStack16; + float fStack12; + + iVar2 = *(int *)(param_2 + 2); + pfVar4 = (float *)proc_7F06C660(param_1,param_2,0); + fVar8 = *(float *)(iVar2 + 4); + fVar6 = *param_4; + fStack16 = param_4[1]; + fStack12 = param_4[2]; + if ((*param_2 & 0x100) == 0) { + if ((*param_2 & 0x200) == 0) { + fStack32 = pfVar4[0xc] - *param_3; + fStack28 = pfVar4[0xd] - param_3[1]; + fStack24 = pfVar4[0xe] - param_3[2]; + } + else { + if (*(ushort **)(iVar2 + 0x14) == NULL) { + fStack32 = pfVar4[0xc] - *param_3; + fStack28 = pfVar4[0xd] - param_3[1]; + fStack24 = pfVar4[0xe] - param_3[2]; + } + else { + iVar5 = proc_7F06C660(param_1,*(ushort **)(iVar2 + 0x14),0); + fStack32 = (pfVar4[0xc] + *(float *)(iVar5 + 0x30)) * 0.50000000 - *param_3; + fStack28 = (pfVar4[0xd] + *(float *)(iVar5 + 0x34)) * 0.50000000 - param_3[1]; + fStack24 = (pfVar4[0xe] + *(float *)(iVar5 + 0x38)) * 0.50000000 - param_3[2]; + } + } + } + else { + fVar9 = *(float *)(iVar2 + 8); + fVar7 = *(float *)(iVar2 + 0xc); + fVar10 = *(float *)(iVar2 + 0x10); + fStack32 = (pfVar4[0xc] - *param_3) + + fVar9 * *pfVar4 + fVar7 * pfVar4[4] + fVar10 * pfVar4[8]; + fStack28 = (pfVar4[0xd] - param_3[1]) + + fVar9 * pfVar4[1] + fVar7 * pfVar4[5] + fVar10 * pfVar4[9]; + fStack24 = (pfVar4[0xe] - param_3[2]) + + fVar9 * pfVar4[2] + fVar7 * pfVar4[6] + fVar10 * pfVar4[10]; + } + uVar1 = *param_2; + if ((uVar1 & 0x400) == 0) { + if ((((uVar1 & 0x800) != 0) || ((uVar1 & 0x1000) != 0)) || ((uVar1 & 0x2000) != 0)) { + if ((uVar1 & 0x800) == 0) { + if ((uVar1 & 0x1000) == 0) { + if ((uVar1 & 0x2000) != 0) { + fStack92 = pfVar4[8]; + fStack88 = pfVar4[9]; + fStack84 = pfVar4[10]; + } + } + else { + fStack92 = pfVar4[4]; + fStack88 = pfVar4[5]; + fStack84 = pfVar4[6]; + } + } + else { + fStack92 = *pfVar4; + fStack88 = pfVar4[1]; + fStack84 = pfVar4[2]; + } + fVar7 = (fStack84 * fStack12 + fVar6 * fStack92 + fStack16 * fStack88) * + *(float *)(iVar2 + 0x18); + fVar6 = fStack92 * fVar7 + fVar6; + fStack16 = fStack88 * fVar7 + fStack16; + fStack12 = fStack84 * fVar7 + fStack12; + fVar7 = (fStack84 * fStack24 + fStack32 * fStack92 + fStack28 * fStack88) * + *(float *)(iVar2 + 0x18); + fStack32 = fStack92 * fVar7 + fStack32; + fStack28 = fStack88 * fVar7 + fStack28; + fStack24 = fStack84 * fVar7 + fStack24; + } + } + else { + fVar7 = (pfVar4[2] * fStack12 + fVar6 * *pfVar4 + fStack16 * pfVar4[1]) * + *(float *)(iVar2 + 0x18); + fVar6 = *pfVar4 * fVar7 + fVar6; + fStack16 = pfVar4[1] * fVar7 + fStack16; + fStack12 = pfVar4[2] * fVar7 + fStack12; + fVar7 = (pfVar4[2] * fStack24 + fStack32 * *pfVar4 + fStack28 * pfVar4[1]) * + *(float *)(iVar2 + 0x18); + fStack32 = *pfVar4 * fVar7 + fStack32; + fStack28 = pfVar4[1] * fVar7 + fStack28; + fStack24 = pfVar4[2] * fVar7 + fStack24; + fVar7 = (pfVar4[6] * fStack12 + fVar6 * pfVar4[4] + fStack16 * pfVar4[5]) * + *(float *)(iVar2 + 0x1c); + fVar6 = pfVar4[4] * fVar7 + fVar6; + fStack16 = pfVar4[5] * fVar7 + fStack16; + fStack12 = pfVar4[6] * fVar7 + fStack12; + fVar7 = (pfVar4[6] * fStack24 + fStack32 * pfVar4[4] + fStack28 * pfVar4[5]) * + *(float *)(iVar2 + 0x1c); + fStack32 = pfVar4[4] * fVar7 + fStack32; + fStack28 = pfVar4[5] * fVar7 + fStack28; + fStack24 = pfVar4[6] * fVar7 + fStack24; + } + uVar3 = 0; + fVar7 = fStack24 * fStack12 + fVar6 * fStack32 + fStack16 * fStack28; + if (0.00000000 < fVar7) { + if (((fStack24 * fStack24 + fStack32 * fStack32 + fStack28 * fStack28) - fVar8) * + (fStack12 * fStack12 + fVar6 * fVar6 + fStack16 * fStack16) <= fVar7 * fVar7) { + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + return uVar3; +} + + + +undefined4 proc_7F0752FC(int param_1,float *param_2,float *param_3,ushort **param_4) + +{ + bool bVar1; + ulonglong uVar2; + longlong lVar3; + ushort *puVar4; + ushort *puVar5; + + puVar4 = *param_4; + bVar1 = true; + if (puVar4 == NULL) { + puVar4 = **(ushort ***)(param_1 + 8); + } + else { + *param_4 = NULL; + } + do { + if (puVar4 == NULL) { + return 0; + } + if ((!bVar1) || (puVar5 = *(ushort **)(puVar4 + 10), puVar5 == NULL)) { + puVar5 = puVar4; + if (puVar4 != NULL) { + puVar5 = *(ushort **)(puVar4 + 6); + while ((puVar5 == NULL && + (puVar4 = *(ushort **)(puVar4 + 4), puVar5 = puVar4, puVar4 != NULL))) { + puVar5 = *(ushort **)(puVar4 + 6); + } + } + if (puVar5 == NULL) { + return 0; + } + } + uVar2 = (ulonglong)*puVar5; + bVar1 = true; + puVar4 = puVar5; + if (true) { + switch((uint)*puVar5 & 0xff) { + case 8: + proc_7F06E970(param_1,puVar5); + break; + case 10: + proc_7F074C68(param_1,puVar5,param_2,param_3); + if (uVar2 != 0) { + *param_4 = puVar5; + return **(undefined4 **)(puVar5 + 2); + } + bVar1 = false; + break; + case 0x11: + lVar3 = proc_7F074CAC(param_1,puVar5,param_2,param_3); + if (lVar3 != 0) { + *param_4 = puVar5; + return **(undefined4 **)(puVar5 + 2); + } + bVar1 = false; + break; + case 0x12: + process_12_handle_switch(param_1,puVar5); + break; + case 0x17: + process_17_pointer_to_head(param_1,puVar5); + } + } + } while( true ); +} + + + +undefined4 proc_7F07549C(int param_1,float *param_2,float *param_3,ushort **param_4) + +{ + undefined4 uVar1; + + *param_4 = NULL; + uVar1 = proc_7F0752FC(param_1,param_2,param_3,param_4); + return uVar1; +} + + + +uint proc_7F0754BC(int *param_1,int param_2) + +{ + int iVar1; + char *dest; + uint uVar2; + char *pcVar3; + char *src; + int iVar4; + + iVar1 = *param_1; + pcVar3 = NULL; + iVar4 = (int)(uint)*(ushort *)((int)param_1 + 0xe) >> 3; + if (iVar1 < 0) { + pcVar3 = (char *)(iVar1 + param_2 * iVar4); + } + else { + if (dword_80036414 != NULL) { + src = (char *)(dword_80036414[2] + 0xfU & 0xfffffff0); + dest = (char *)(iVar1 + param_2 * iVar4); + if (((uint)dest & 1) == 0) { + uVar2 = iVar4 + 0xf; + pcVar3 = src; + } + else { + dest = dest + -1; + pcVar3 = src + 1; + uVar2 = iVar4 + 0x10; + } + romCopy(src,dest,uVar2 & 0xfffffff0); + *dword_80036414 = *dword_80036414 + 1; + *(char **)(dword_80036414 + 2) = src + (uVar2 & 0xfffffff0); + } + } + return (uint)pcVar3; +} + + + +void proc_7F0755B0(void) + +{ + if (dword_80036414 != NULL) { + dword_80036414[2] = dword_80036414[1]; + *dword_80036414 = 0; + } + return; +} + + + +void convert_obj_microcode_offset_to_rdram_addr(ushort *param_1,int param_2,int param_3) + +{ + ushort uVar1; + int *piVar2; + longlong lVar3; + int iVar4; + longlong lVar5; + int iVar6; + ushort *puVar7; + int iVar8; + int iVar9; + ushort *puVar10; + + if (param_1 == NULL) { + return; + } + uVar1 = *param_1; + do { + if (*(int *)(param_1 + 2) != 0) { + *(int *)(param_1 + 2) = *(int *)(param_1 + 2) + (param_3 - param_2); + } + if (*(int *)(param_1 + 4) != 0) { + *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + (param_3 - param_2); + } + if (*(int *)(param_1 + 6) != 0) { + *(int *)(param_1 + 6) = *(int *)(param_1 + 6) + (param_3 - param_2); + } + if (*(int *)(param_1 + 8) != 0) { + *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + (param_3 - param_2); + } + if (*(int *)(param_1 + 10) != 0) { + *(int *)(param_1 + 10) = *(int *)(param_1 + 10) + (param_3 - param_2); + } + if (false) { +switchD_7f075670_caseD_a: + puVar7 = *(ushort **)(param_1 + 10); + } + else { + switch((uint)uVar1 & 0xff) { + case 1: + iVar4 = *(int *)(*(int *)(param_1 + 2) + 4); + if (iVar4 != 0) { + *(int *)(*(int *)(param_1 + 2) + 4) = iVar4 + (param_3 - param_2); + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 2: + iVar4 = *(int *)(*(int *)(param_1 + 2) + 0x14); + if (iVar4 != 0) { + *(int *)(*(int *)(param_1 + 2) + 0x14) = iVar4 + (param_3 - param_2); + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 3: + iVar4 = *(int *)(*(int *)(param_1 + 2) + 0x14); + if (iVar4 != 0) { + *(int *)(*(int *)(param_1 + 2) + 0x14) = iVar4 + (param_3 - param_2); + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 4: + iVar4 = *(int *)(param_1 + 2); + if (*(int *)(iVar4 + 0xc) != 0) { + *(int *)(iVar4 + 0xc) = *(int *)(iVar4 + 0xc) + (param_3 - param_2); + } + *(int *)(iVar4 + 8) = param_3; + puVar7 = *(ushort **)(param_1 + 10); + break; + case 5: + piVar2 = *(int **)(param_1 + 2); + iVar4 = 0; + if (piVar2[1] != 0) { + piVar2[1] = piVar2[1] + (param_3 - param_2); + } + iVar8 = 0; + if (piVar2[2] != 0) { + piVar2[2] = piVar2[2] + (param_3 - param_2); + } + if (piVar2[3] != 0) { + piVar2[3] = piVar2[3] + (param_3 - param_2); + } + iVar6 = *piVar2; + if (iVar6 < 1) { + piVar2[0x69] = param_3; + } + else { + do { + iVar4 += 1; + iVar9 = *(int *)(piVar2[1] + iVar8 + 4); + if (iVar9 != 0) { + *(int *)(piVar2[1] + iVar8 + 4) = iVar9 + (param_3 - param_2); + iVar6 = *piVar2; + } + iVar8 += 8; + } while (iVar4 < iVar6); + piVar2[0x69] = param_3; + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 6: + *(int *)(*(int *)(param_1 + 2) + 0x14) = param_3; + puVar7 = *(ushort **)(param_1 + 10); + break; + case 7: + piVar2 = *(int **)(param_1 + 2); + iVar4 = 0; + if (*piVar2 != 0) { + *piVar2 = *piVar2 + (param_3 - param_2); + } + if (piVar2[1] != 0) { + piVar2[1] = piVar2[1] + (param_3 - param_2); + } + iVar8 = 0; + if (piVar2[3] != 0) { + piVar2[3] = piVar2[3] + (param_3 - param_2); + } + if (piVar2[4] != 0) { + piVar2[4] = piVar2[4] + (param_3 - param_2); + } + if (piVar2[5] != 0) { + piVar2[5] = piVar2[5] + (param_3 - param_2); + } + iVar6 = piVar2[2]; + if (iVar6 < 1) { + piVar2[0x6b] = param_3; + } + else { + do { + iVar4 += 1; + iVar9 = *(int *)(piVar2[3] + iVar8 + 4); + if (iVar9 != 0) { + *(int *)(piVar2[3] + iVar8 + 4) = iVar9 + (param_3 - param_2); + iVar6 = piVar2[2]; + } + iVar8 += 8; + } while (iVar4 < iVar6); + piVar2[0x6b] = param_3; + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 8: + puVar7 = *(ushort **)(*(int *)(param_1 + 2) + 8); + puVar10 = (ushort *)((int)puVar7 + (param_3 - param_2)); + if (puVar7 != NULL) { + *(ushort **)(*(int *)(param_1 + 2) + 8) = puVar10; + puVar7 = puVar10; + } + *(ushort **)(param_1 + 10) = puVar7; + break; + case 9: + iVar4 = *(int *)(param_1 + 2); + if (*(int *)(iVar4 + 0x18) != 0) { + *(int *)(iVar4 + 0x18) = *(int *)(iVar4 + 0x18) + (param_3 - param_2); + } + if (*(int *)(iVar4 + 0x1c) != 0) { + *(int *)(iVar4 + 0x1c) = *(int *)(iVar4 + 0x1c) + (param_3 - param_2); + } + puVar7 = *(ushort **)(param_1 + 10); + break; + default: + goto switchD_7f075670_caseD_a; + case 0xb: + iVar4 = *(int *)(param_1 + 2); + if (*(int *)(iVar4 + 0x3c) != 0) { + *(int *)(iVar4 + 0x3c) = *(int *)(iVar4 + 0x3c) + (param_3 - param_2); + } + *(int *)(iVar4 + 0x48) = param_3; + puVar7 = *(ushort **)(param_1 + 10); + break; + case 0xc: + iVar4 = *(int *)(param_1 + 2); + if (*(int *)(iVar4 + 0x18) != 0) { + *(int *)(iVar4 + 0x18) = *(int *)(iVar4 + 0x18) + (param_3 - param_2); + } + *(int *)(iVar4 + 0x24) = param_3; + puVar7 = *(ushort **)(param_1 + 10); + break; + case 0xd: + iVar4 = *(int *)(param_1 + 2); + if (*(int *)(iVar4 + 0x10) != 0) { + *(int *)(iVar4 + 0x10) = *(int *)(iVar4 + 0x10) + (param_3 - param_2); + } + if (*(int *)(iVar4 + 0x14) != 0) { + *(int *)(iVar4 + 0x14) = *(int *)(iVar4 + 0x14) + (param_3 - param_2); + } + *(int *)(iVar4 + 0x1c) = param_3; + puVar7 = *(ushort **)(param_1 + 10); + break; + case 0x11: + iVar4 = *(int *)(*(int *)(param_1 + 2) + 0x14); + if (iVar4 != 0) { + *(int *)(*(int *)(param_1 + 2) + 0x14) = iVar4 + (param_3 - param_2); + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 0x12: + iVar4 = **(int **)(param_1 + 2); + if (iVar4 != 0) { + **(int **)(param_1 + 2) = iVar4 + (param_3 - param_2); + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 0x14: + iVar4 = *(int *)(*(int *)(param_1 + 2) + 4); + if (iVar4 != 0) { + *(int *)(*(int *)(param_1 + 2) + 4) = iVar4 + (param_3 - param_2); + } + puVar7 = *(ushort **)(param_1 + 10); + break; + case 0x16: + iVar4 = *(int *)(param_1 + 2); + if (*(int *)(iVar4 + 4) != 0) { + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + (param_3 - param_2); + } + *(int *)(iVar4 + 0xc) = param_3; + puVar7 = *(ushort **)(param_1 + 10); + break; + case 0x18: + iVar4 = *(int *)(param_1 + 2); + lVar3 = 0; + if (*(int *)(iVar4 + 8) != 0) { + *(int *)(iVar4 + 8) = *(int *)(iVar4 + 8) + (param_3 - param_2); + } + iVar8 = 0; + if (*(int *)(iVar4 + 0x10) != 0) { + *(int *)(iVar4 + 0x10) = *(int *)(iVar4 + 0x10) + (param_3 - param_2); + } + if (*(int *)(iVar4 + 0x14) != 0) { + *(int *)(iVar4 + 0x14) = *(int *)(iVar4 + 0x14) + (param_3 - param_2); + } + lVar5 = (longlong)*(short *)(iVar4 + 0xe); + if (lVar5 < 1) { + *(int *)(iVar4 + 0x1c) = param_3; + } + else { + do { + lVar3 = (longlong)((int)lVar3 + 1); + iVar9 = *(int *)(iVar4 + 0x10) + iVar8; + iVar6 = *(int *)(iVar9 + 8); + if (iVar6 != 0) { + *(int *)(iVar9 + 8) = iVar6 + (param_3 - param_2); + lVar5 = (longlong)*(short *)(iVar4 + 0xe); + } + iVar8 += 0x10; + } while (lVar3 < lVar5); + *(int *)(iVar4 + 0x1c) = param_3; + } + puVar7 = *(ushort **)(param_1 + 10); + } + } + if ((puVar7 == NULL) && (puVar7 = param_1, param_1 != NULL)) { + puVar7 = *(ushort **)(param_1 + 6); + while ((puVar7 == NULL && + (param_1 = *(ushort **)(param_1 + 4), puVar7 = param_1, param_1 != NULL))) { + puVar7 = *(ushort **)(param_1 + 6); + } + } + if (puVar7 == NULL) { + return; + } + uVar1 = *puVar7; + param_1 = puVar7; + } while( true ); +} + + + +void proc_7F075A90(object_header *objheader,int param_2,int param_3) + +{ + int iVar1; + longlong lVar2; + int iVar3; + int *piVar4; + longlong lVar5; + + lVar5 = (longlong)objheader->num_offset_entries; + lVar2 = 0; + if (0 < lVar5) { + iVar3 = 0; + do { + lVar2 = (longlong)((int)lVar2 + 1); + piVar4 = (int *)(objheader->offset_obj_offset_block + iVar3); + iVar1 = *piVar4; + if (iVar1 != 0) { + *piVar4 = iVar1 + (param_3 - param_2); + lVar5 = (longlong)objheader->num_offset_entries; + } + iVar3 += 4; + } while (lVar2 < lVar5); + } + convert_obj_microcode_offset_to_rdram_addr + ((ushort *)objheader->offset_obj_table,param_2,param_3); + return; +} + + + +void proc_7F075B08(void) + +{ + return; +} + + + +uint set_microcode_entry_numbers(ushort *param_1) + +{ + ushort uVar1; + int iVar2; + ushort **ppuVar3; + ushort *puVar4; + ushort *puVar5; + undefined2 uVar6; + uint uVar7; + + uVar7 = 0; + if (param_1 == NULL) { + return 0; + } + uVar1 = *param_1; + puVar4 = param_1; + do { + if (false) { +switchD_7f075b60_caseD_2: + puVar5 = *(ushort **)(puVar4 + 10); + } + else { + uVar6 = (undefined2)uVar7; + switch((uint)uVar1 & 0xff) { + case 1: + *(undefined2 *)(*(int *)(puVar4 + 2) + 0xc) = uVar6; + uVar7 = uVar7 + 0x18 & 0xffff; + puVar5 = *(ushort **)(puVar4 + 10); + break; + default: + goto switchD_7f075b60_caseD_2; + case 7: + *(undefined2 *)(*(int *)(puVar4 + 2) + 0x1aa) = uVar6; + uVar7 = uVar7 + 1 & 0xffff; + puVar5 = *(ushort **)(puVar4 + 10); + break; + case 8: + iVar2 = *(int *)(puVar4 + 2); + *(undefined2 *)(iVar2 + 0xc) = uVar6; + puVar5 = *(ushort **)(iVar2 + 8); + uVar7 = uVar7 + 1 & 0xffff; + *(ushort **)(puVar4 + 10) = puVar5; + break; + case 9: + *(undefined2 *)(*(int *)(puVar4 + 2) + 0x22) = uVar6; + uVar7 = uVar7 + 1 & 0xffff; + proc_7F06EA54((int)puVar4,0); + puVar5 = *(ushort **)(puVar4 + 10); + break; + case 0xb: + *(undefined2 *)(*(int *)(puVar4 + 2) + 0x44) = uVar6; + uVar7 = uVar7 + 1 & 0xffff; + puVar5 = *(ushort **)(puVar4 + 10); + break; + case 0xc: + *(undefined2 *)(*(int *)(puVar4 + 2) + 0x20) = uVar6; + uVar7 = uVar7 + 1 & 0xffff; + puVar5 = *(ushort **)(puVar4 + 10); + break; + case 0x12: + ppuVar3 = *(ushort ***)(puVar4 + 2); + *(undefined2 *)(ppuVar3 + 1) = uVar6; + puVar5 = *ppuVar3; + uVar7 = uVar7 + 1 & 0xffff; + *(ushort **)(puVar4 + 10) = puVar5; + break; + case 0x17: + puVar5 = NULL; + **(undefined2 **)(puVar4 + 2) = uVar6; + uVar7 = uVar7 + 2 & 0xffff; + *(undefined4 *)(puVar4 + 10) = 0; + break; + case 0x18: + *(undefined2 *)(*(int *)(puVar4 + 2) + 0x1a) = uVar6; + uVar7 = uVar7 + 2 & 0xffff; + puVar5 = *(ushort **)(puVar4 + 10); + } + } + if ((puVar5 == NULL) && (puVar5 = puVar4, puVar4 != NULL)) { + while (puVar4 != *(ushort **)(param_1 + 4)) { + puVar5 = *(ushort **)(puVar4 + 6); + if ((puVar5 != NULL) || + (puVar5 = *(ushort **)(puVar4 + 4), puVar4 = puVar5, puVar5 == NULL)) + goto LAB_7f075cd4; + } + puVar5 = NULL; + } +LAB_7f075cd4: + if (puVar5 == NULL) { + return uVar7; + } + uVar1 = *puVar5; + puVar4 = puVar5; + } while( true ); +} + + + +void set_objuse_flag_compute_grp_nums_set_obj_loaded(object_header *objheader) + +{ + uint uVar1; + + objheader->is_loaded_in_mem = 1; + uVar1 = set_microcode_entry_numbers((ushort *)objheader->offset_obj_table); + objheader->num_table_entries = (short)uVar1; + return; +} + + + +void unknown_object_microcode_handler(int param_1,ushort *param_2) + +{ + ushort uVar1; + int iVar2; + ushort **ppuVar3; + undefined *puVar4; + undefined4 *puVar5; + undefined2 *puVar6; + undefined4 *puVar7; + ushort *partdesc; + ushort *puVar8; + + if (param_2 == NULL) { + return; + } + uVar1 = *param_2; + partdesc = param_2; + do { + if (false) { +switchD_7f075d80_caseD_2: + puVar8 = *(ushort **)(partdesc + 10); + } + else { + switch((uint)uVar1 & 0xff) { + case 1: + puVar4 = (undefined *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar4 = 0; + *(undefined4 *)(puVar4 + 4) = 0; + *(undefined4 *)(puVar4 + 8) = 0; + *(undefined4 *)(puVar4 + 0xc) = 0; + *(undefined4 *)(puVar4 + 0x10) = 0; + *(undefined4 *)(puVar4 + 0x14) = 0; + *(undefined4 *)(puVar4 + 0x18) = 0; + *(undefined4 *)(puVar4 + 0x1c) = 0; + puVar4[1] = 0; + *(undefined4 *)(puVar4 + 0x34) = 0; + *(undefined4 *)(puVar4 + 0x38) = 0; + *(undefined4 *)(puVar4 + 0x3c) = 0; + *(undefined4 *)(puVar4 + 0x30) = 0; + *(undefined4 *)(puVar4 + 0x24) = 0; + *(undefined4 *)(puVar4 + 0x28) = 0; + *(undefined4 *)(puVar4 + 0x2c) = 0; + *(undefined4 *)(puVar4 + 0x20) = 0; + puVar4[2] = 0; + *(undefined4 *)(puVar4 + 0x4c) = 0; + *(undefined4 *)(puVar4 + 0x50) = 0; + *(undefined4 *)(puVar4 + 0x54) = 0; + *(undefined4 *)(puVar4 + 0x40) = 0; + *(undefined4 *)(puVar4 + 0x44) = 0; + *(undefined4 *)(puVar4 + 0x48) = 0; + *(undefined4 *)(puVar4 + 0x5c) = 0; + puVar8 = *(ushort **)(partdesc + 10); + break; + default: + goto switchD_7f075d80_caseD_2; + case 7: + puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar5 = 0; + puVar8 = *(ushort **)(partdesc + 10); + break; + case 8: + iVar2 = *(int *)(partdesc + 2); + puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar5 = 0; + puVar8 = *(ushort **)(iVar2 + 8); + *(ushort **)(partdesc + 10) = puVar8; + break; + case 9: + puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar5 = 0; + proc_7F06EB10(param_1,partdesc); + puVar8 = *(ushort **)(partdesc + 10); + break; + case 0xb: + puVar6 = (undefined2 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar6 = 0; + puVar8 = *(ushort **)(partdesc + 10); + break; + case 0xc: + puVar6 = (undefined2 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar6 = 0; + puVar8 = *(ushort **)(partdesc + 10); + break; + case 0x12: + ppuVar3 = *(ushort ***)(partdesc + 2); + puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar5 = 1; + puVar8 = *ppuVar3; + *(ushort **)(partdesc + 10) = puVar8; + break; + case 0x17: + puVar5 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar5 = 0; + puVar5[1] = 0; + puVar8 = *(ushort **)(partdesc + 10); + break; + case 0x18: + puVar5 = *(undefined4 **)(partdesc + 2); + puVar7 = (undefined4 *)extract_id_from_object_structure_microcode(param_1,partdesc); + *puVar7 = puVar5[2]; + puVar7[1] = *puVar5; + puVar8 = *(ushort **)(partdesc + 10); + } + } + if ((puVar8 == NULL) && (puVar8 = partdesc, partdesc != NULL)) { + while (partdesc != *(ushort **)(param_2 + 4)) { + puVar8 = *(ushort **)(partdesc + 6); + if ((puVar8 != NULL) || + (puVar8 = *(ushort **)(partdesc + 4), partdesc = puVar8, puVar8 == NULL)) + goto LAB_7f075f44; + } + puVar8 = NULL; + } +LAB_7f075f44: + if (puVar8 == NULL) { + return; + } + uVar1 = *puVar8; + partdesc = puVar8; + } while( true ); +} + + + +void proc_7F075F68(int param_1,ushort **param_2,undefined4 param_3) + +{ + *(ushort ***)(param_1 + 8) = param_2; + *(undefined4 *)(param_1 + 0x10) = param_3; + *(undefined2 *)(param_1 + 2) = 0xffff; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x14) = 0x3f800000; + unknown_object_microcode_handler(param_1,*param_2); + return; +} + + + +void proc_7F075FAC(int param_1,ushort **param_2,undefined4 param_3) + +{ + proc_7F075F68(param_1,param_2,param_3); + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x54) = 0; + *(undefined *)(param_1 + 0x26) = 0; + *(undefined4 *)(param_1 + 0x98) = 0; + *(undefined4 *)(param_1 + 0x9c) = 0; + *(undefined4 *)(param_1 + 0xa0) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + *(undefined4 *)(param_1 + 0x5c) = 0; + *(undefined4 *)(param_1 + 0x7c) = 0; + *(undefined4 *)(param_1 + 0x84) = 0; + *(undefined4 *)(param_1 + 0x88) = 0; + *(undefined4 *)(param_1 + 0xb0) = 0; + *(undefined4 *)(param_1 + 0x40) = 0x3f800000; + *(undefined4 *)(param_1 + 0x70) = 0x3f800000; + *(undefined4 *)(param_1 + 0xa4) = 0x3f800000; + *(undefined4 *)(param_1 + 0xb8) = 0x3f800000; + *(undefined4 *)(param_1 + 0x3c) = 0xbf800000; + *(undefined4 *)(param_1 + 0x6c) = 0xbf800000; + return; +} + + + +void proc_7F076030(int param_1,int param_2,ushort *param_3,ushort **param_4) + +{ + ushort **ppuVar1; + uint uVar2; + ushort *puVar3; + + ppuVar1 = (ushort **)extract_id_from_object_structure_microcode(param_1,param_3); + *(ushort ***)ppuVar1 = param_4; + ppuVar1[1] = (ushort *)(*(int *)(param_1 + 0x10) + (int)*(short *)(param_2 + 0x14) * 4); + puVar3 = *param_4; + *(ushort **)(param_3 + 10) = puVar3; + if (puVar3 != NULL) { + *(ushort **)(puVar3 + 4) = param_3; + while (puVar3 = *(ushort **)(puVar3 + 6), puVar3 != NULL) { + *(ushort **)(puVar3 + 4) = param_3; + } + puVar3 = *(ushort **)(param_3 + 10); + } + uVar2 = set_microcode_entry_numbers(puVar3); + *(short *)(param_2 + 0x14) = *(short *)(param_2 + 0x14) + (short)uVar2; + return; +} + + + +void proc_7F0760C4(object_header *objheader,ushort **param_2,int *param_3) + +{ + ushort uVar1; + int iVar2; + ushort *puVar3; + ushort *puVar4; + int iVar5; + + puVar3 = *param_2; + iVar5 = 0; + if (puVar3 == NULL) { + puVar3 = (ushort *)objheader->offset_obj_table; + } + if (puVar3 == NULL) { + *param_3 = 0; + puVar4 = puVar3; + } + else { + uVar1 = *puVar3; + while( true ) { + if (true) { + switch((uint)uVar1 & 0xff) { + case 4: + if (puVar3 == *param_2) { + iVar2 = (*(int **)(puVar3 + 2))[1]; + if (iVar2 != *param_3) { + iVar5 = iVar2; + } + } + else { + iVar5 = **(int **)(puVar3 + 2); + } + break; + case 8: + *(undefined4 *)(puVar3 + 10) = *(undefined4 *)(*(int *)(puVar3 + 2) + 8); + break; + case 9: + proc_7F06EA54((int)puVar3,1); + break; + case 0x12: + *(undefined4 *)(puVar3 + 10) = **(undefined4 **)(puVar3 + 2); + break; + case 0x16: + if (puVar3 != *param_2) { + iVar5 = *(int *)(*(int *)(puVar3 + 2) + 8); + } + break; + case 0x18: + if (puVar3 == *param_2) { + iVar2 = (*(int **)(puVar3 + 2))[1]; + if (iVar2 != *param_3) { + iVar5 = iVar2; + } + } + else { + iVar5 = **(int **)(puVar3 + 2); + } + } + } + if (iVar5 != 0) { + *param_3 = iVar5; + puVar4 = puVar3; + goto LAB_7f07621c; + } + puVar4 = *(ushort **)(puVar3 + 10); + if ((puVar4 == NULL) && (puVar4 = puVar3, puVar3 != NULL)) { + puVar4 = *(ushort **)(puVar3 + 6); + while ((puVar4 == NULL && + (puVar3 = *(ushort **)(puVar3 + 4), puVar4 = puVar3, puVar3 != NULL))) { + puVar4 = *(ushort **)(puVar3 + 6); + } + } + if (puVar4 == NULL) break; + uVar1 = *puVar4; + puVar3 = puVar4; + } + *param_3 = 0; + } +LAB_7f07621c: + *param_2 = puVar4; + return; +} + + + +void proc_7F07623C(object_header *objheader,ushort *param_2,int param_3,int param_4) + +{ + int *piVar1; + ushort uVar2; + + uVar2 = *param_2 & 0xff; + if (uVar2 == 4) { + piVar1 = *(int **)(param_2 + 2); + if (param_3 == *piVar1) { + *piVar1 = param_4; + return; + } + if (param_3 == piVar1[1]) { + piVar1[1] = param_4; + return; + } + } + else { + if (uVar2 == 0x16) { + if (param_3 == *(int *)(*(int *)(param_2 + 2) + 8)) { + *(int *)(*(int *)(param_2 + 2) + 8) = param_4; + } + } + else { + if (uVar2 != 0x18) { + return; + } + piVar1 = *(int **)(param_2 + 2); + if (param_3 == *piVar1) { + *piVar1 = param_4; + return; + } + if (param_3 == piVar1[1]) { + piVar1[1] = param_4; + return; + } + } + } + return; +} + + + +void proc_7F0762E0(object_header *objheader,u8 *objectstring,int targetloc,uint *buffer) + +{ + u8 *ptrdata; + uint uVar1; + ushort *puVar2; + int index; + int buffer_remain; + int tempbuffer_remain; + uint *puVar3; + int iVar4; + u8 *puVar5; + uint uVar6; + uint auStack12 [2]; + ushort *puStack4; + + ptrdata = (u8 *)objheader->offset_obj_offset_block; + index = get_index_num_of_named_resource(objectstring); + buffer_remain = get_rom_remaining_buffer_for_index(index); + tempbuffer_remain = get_pc_remaining_buffer_for_index(index); + puStack4 = NULL; + proc_7F0760C4(objheader,&puStack4,(int *)auStack12); + uVar6 = auStack12[0]; + if (auStack12[0] != 0) { + iVar4 = objheader->offset_obj_offset_block + (auStack12[0] & 0xffffff); + proc_7F0CE794(iVar4,(int)(ptrdata + + (buffer_remain - (int)(ptrdata + (tempbuffer_remain - iVar4)))), + (int)(ptrdata + (tempbuffer_remain - iVar4))); + proc_7F0CBE50(objheader,buffer); + if (puStack4 == NULL) { + iVar4 = objheader->offset_obj_offset_block; + } + else { + do { + puVar2 = puStack4; + uVar1 = auStack12[0]; + proc_7F0760C4(objheader,&puStack4,(int *)auStack12); + if (auStack12[0] == 0) { + puVar5 = ptrdata + ((tempbuffer_remain - objheader->offset_obj_offset_block) - + (uVar1 & 0xffffff)); + } + else { + puVar5 = (u8 *)(auStack12[0] - uVar1); + } + proc_7F07623C(objheader,puVar2,uVar1,uVar6); + puVar3 = process_microcode_sort_display_modes_expand_image_calls + ((uint *)(ptrdata + (buffer_remain - + (int)(ptrdata + (tempbuffer_remain - iVar4))) + + ((objheader->offset_obj_offset_block + + (uVar1 & 0xffffff)) - iVar4)),(int)puVar5, + (uint *)(objheader->offset_obj_offset_block + (uVar6 & 0xffffff) + ),buffer); + uVar6 += (int)puVar3; + } while (puStack4 != NULL); + iVar4 = objheader->offset_obj_offset_block; + } + proc_7F0BD138(index,ptrdata,((iVar4 + (uVar6 & 0xffffff)) - (int)ptrdata) + 0xf & 0xfffffff0 + ,(ulonglong)(targetloc == 0)); + } + return; +} + + + +void load_object_fill_header + (object_header *objheader,u8 *recallstring,int targetloc,int sizeleft,int buffer) + +{ + u8 *puVar1; + + if (targetloc == 0) { + puVar1 = _load_resource_named_to_membank(recallstring,0,0x100,4); + } + else { + puVar1 = _load_resource_named_to_buffer(recallstring,0,(undefined *)targetloc,sizeleft); + } + *(u8 **)&objheader->offset_obj_offset_block = puVar1; + *(u8 **)&objheader->offset_img_declaration = puVar1 + (int)objheader->num_offset_entries * 4; + *(u8 **)&objheader->offset_obj_table = + puVar1 + (int)objheader->num_offset_entries * 4 + (int)objheader->num_image_entries * 0xc; + proc_7F075A90(objheader,0x5000000,(int)puVar1); + proc_7F0762E0(objheader,recallstring,targetloc,(uint *)buffer); + return; +} + + + +void load_object_into_memory(object_header *header,u8 *recallstring) + +{ + load_object_fill_header(header,recallstring,0,0,0); + return; +} + + + +void load_object_into_memory_unused_maybe + (object_header *header,int *recallstring,int targetloc,int sizeleft) + +{ + load_object_fill_header(header,(u8 *)recallstring,targetloc,sizeleft,0); + return; +} + + + +s32 is_less_than_certain_power_of_2(int number) + +{ + if (number < 2) { + return 0; + } + if (number < 3) { + return 1; + } + if (number < 5) { + return 2; + } + if (number < 9) { + return 3; + } + if (number < 0x11) { + return 4; + } + if (number < 0x21) { + return 5; + } + if (number < 0x41) { + return 6; + } + if (number < 0x81) { + return 7; + } + return 8; +} + + + +int ceil8000(int width) + +{ + int iVar1; + float fVar2; + + iVar1 = width + 0xf; + if (iVar1 < 0) { + iVar1 = width + 0x1e; + } + fVar2 = 32768.00000000 / (float)((iVar1 >> 4) << 4); + iVar1 = (int)fVar2; + return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F90); +} + + + +int ceil4000(int width) + +{ + int iVar1; + float fVar2; + + iVar1 = width + 7; + if (iVar1 < 0) { + iVar1 = width + 0xe; + } + fVar2 = 16384.00000000 / (float)((iVar1 >> 3) << 3); + iVar1 = (int)fVar2; + return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F94); +} + + + +int ceil2000(int width) + +{ + int iVar1; + float fVar2; + + iVar1 = width + 3; + if (iVar1 < 0) { + iVar1 = width + 6; + } + fVar2 = 8192.00000000 / (float)((iVar1 >> 2) << 2); + iVar1 = (int)fVar2; + return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F98); +} + + + +int ceil1000(int width) + +{ + int iVar1; + float fVar2; + + iVar1 = width + 3; + if (iVar1 < 0) { + iVar1 = width + 6; + } + fVar2 = 4096.00000000 / (float)((iVar1 >> 2) << 2); + iVar1 = (int)fVar2; + return iVar1 + (int)((fVar2 - (float)iVar1) + flt_80054F9C); +} + + + +int proc_7F0767D8(int param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = 0; + if (param_3 < 1) { + param_3 = 1; + } + iVar2 = param_1 + 0xf; + if (0 < param_3) { + while( true ) { + if (iVar2 < 0) { + iVar2 += 0xf; + } + param_3 += -1; + iVar1 += (iVar2 >> 4) * 4 * param_2; + iVar2 = param_1 >> 1; + if (param_1 < 2) { + iVar2 = param_1; + } + param_1 = iVar2; + if (1 < param_2) { + param_2 = param_2 >> 1; + } + if (param_3 < 1) break; + iVar2 = param_1 + 0xf; + } + } + return iVar1; +} + + + +int proc_7F076848(int param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = 0; + if (param_3 < 1) { + param_3 = 1; + } + iVar2 = param_1 + 7; + if (0 < param_3) { + while( true ) { + if (iVar2 < 0) { + iVar2 += 7; + } + param_3 += -1; + iVar1 += (iVar2 >> 3) * 4 * param_2; + iVar2 = param_1 >> 1; + if (param_1 < 2) { + iVar2 = param_1; + } + param_1 = iVar2; + if (1 < param_2) { + param_2 = param_2 >> 1; + } + if (param_3 < 1) break; + iVar2 = param_1 + 7; + } + } + return iVar1; +} + + + +int proc_7F0768B8(int param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = 0; + if (param_3 < 1) { + param_3 = 1; + } + iVar2 = param_1 + 3; + if (0 < param_3) { + while( true ) { + if (iVar2 < 0) { + iVar2 += 3; + } + param_3 += -1; + iVar1 += (iVar2 >> 2) * 4 * param_2; + iVar2 = param_1 >> 1; + if (param_1 < 2) { + iVar2 = param_1; + } + param_1 = iVar2; + if (1 < param_2) { + param_2 = param_2 >> 1; + } + if (param_3 < 1) break; + iVar2 = param_1 + 3; + } + } + return iVar1; +} + + + +int proc_7F076928(int param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = 0; + if (param_3 < 1) { + param_3 = 1; + } + iVar2 = param_1 + 3; + if (0 < param_3) { + while( true ) { + if (iVar2 < 0) { + iVar2 += 3; + } + param_3 += -1; + iVar1 += (iVar2 >> 2) * 4 * param_2; + iVar2 = param_1 >> 1; + if (param_1 < 2) { + iVar2 = param_1; + } + param_1 = iVar2; + if (1 < param_2) { + param_2 = param_2 >> 1; + } + if (param_3 < 1) break; + iVar2 = param_1 + 3; + } + } + return iVar1; +} + + + +void generate_microcode_for_othermode_setting + (undefined4 *DL,int param_2,longlong param_3,longlong bowtie) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + + puVar1 = (undefined4 *)*DL; + if (param_3 != 1) { + *puVar1 = 0xe7000000; + puVar1[1] = 0; + puVar1[3] = 0x100000; + puVar1[2] = 0xba001402; + puVar2 = puVar1 + 4; + if (param_2 != 1) { + if (param_2 == 2) { + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc1841c8; + } + else { + if (bowtie < 2) { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc1849d8; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc184dd8; + } + } + goto LAB_7f076d60; + } + if (param_2 == 3) { + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc193048; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc193078; + } + goto LAB_7f076d60; + } + if (param_2 == 4) { + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc184340; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc184b50; + } + goto LAB_7f076d60; + } + } + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc192048; + } + else { + if (bowtie < 2) { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc192078; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0xc192d58; + } + } + goto LAB_7f076d60; + } + *puVar1 = 0xe7000000; + puVar1[1] = 0; + puVar1[2] = 0xba001402; + puVar1[3] = 0; + puVar2 = puVar1 + 4; + if (param_2 != 1) { + if (param_2 == 2) { + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0x5041c8; + } + else { + if (bowtie < 2) { + *puVar2 = 0xb900031d; + puVar1[5] = 0x5049d8; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0x504dd8; + } + } + goto LAB_7f076d60; + } + if (param_2 == 3) { + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0x553048; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0x553078; + } + goto LAB_7f076d60; + } + if (param_2 == 4) { + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0x504340; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0x504b50; + } + goto LAB_7f076d60; + } + } + if (bowtie == 0) { + *puVar2 = 0xb900031d; + puVar1[5] = 0x552048; + } + else { + if (bowtie < 2) { + *puVar2 = 0xb900031d; + puVar1[5] = 0x552078; + } + else { + *puVar2 = 0xb900031d; + puVar1[5] = 0x552d58; + } + } +LAB_7f076d60: + *(undefined4 **)DL = puVar1 + 6; + return; +} + + + +void append_image_to_DL(uint **DLtarget,sImageTableEntry *imgcall,int param_3,longlong bowtie, + uint ul_s_t) + +{ + byte bVar1; + byte bVar2; + uint *puVar3; + uint *puVar4; + int number; + uint uVar5; + uint uVar6; + uint uVar7; + uint *puVar8; + uint uVar9; + int iVar10; + ulonglong uVar11; + ulonglong uVar12; + int number_00; + uint uVar13; + ulonglong uVar14; + uint uStack268; + uint uStack180; + uint uStack176; + uint uStack172; + byte bStack166; + uint uStack164; + uint uStack160; + uint uStack60; + uint uStack56; + uint uStack52; + uint uStack48; + uint uStack44; + uint *puStack4; + + puStack4 = *DLtarget; + uVar5 = (uint)bowtie; + if (imgcall == NULL) { + generate_microcode_for_othermode_setting(&puStack4,param_3,1,bowtie); + puVar3 = puStack4; + if (bowtie < 2) { + puStack4[1] = 0xffffffff; + *puStack4 = 0xbb000001; + } + else { + puStack4[1] = 0xffffffff; + *puStack4 = (uVar5 & 0xff) << 0x10 | 0xbb000001; + } + puStack4 = puStack4 + 2; + *puStack4 = 0xfcffffff; + puVar3[3] = 0xfffe793c; + puStack4 = puVar3 + 4; + goto LAB_7f077b80; + } + uVar9 = imgcall->index; + bVar1 = imgcall->width; + uVar12 = (ulonglong)bVar1; + bVar2 = imgcall->height; + uVar11 = (ulonglong)bVar2; + if (uVar9 < 0xbb9) { + load_image_to_buffer((uint *)imgcall,NULL); + uVar9 = imgcall->index; + } + puVar3 = proc_7F0CBB0C((uint)*(ushort *)((uVar9 | 0x80000000) - 8),NULL); + if (imgcall->level == 0) { + if (puVar3 == NULL) { + uVar11 = (ulonglong)imgcall->format; + uVar12 = (ulonglong)imgcall->depth; + } + else { + uVar11 = SEXT48((int)((puVar3[2] << 0x1b) >> 0x1d)); + uStack44 = (puVar3[3] >> 0x1e) << 0xe; + uVar12 = (longlong)(int)puVar3[2] & 3; + } + uVar9 = (uint)bVar1; + if (uVar12 == 0) { + uStack48 = 2; + number = proc_7F0767D8((uint)bVar1,(uint)bVar2,1); + uStack52 = number - 1; + uStack56 = ceil8000((uint)bVar1); + uStack60 = (int)(uVar9 + 0xf) >> 4; + } + else { + if (uVar12 == 1) { + uStack48 = 2; + number = proc_7F076848((uint)bVar1,(uint)bVar2,1); + uStack52 = number - 1; + uStack56 = ceil4000((uint)bVar1); + uStack60 = (int)(uVar9 + 7) >> 3; + } + else { + if (uVar12 == 2) { + uStack48 = 2; + number = proc_7F0768B8((uint)bVar1,(uint)bVar2,1); + uStack52 = number - 1; + uStack56 = ceil2000((uint)bVar1); + uStack60 = (int)(uVar9 + 3) >> 2; + } + else { + if (uVar12 == 3) { + uStack48 = 3; + number = proc_7F076928((uint)bVar1,(uint)bVar2,1); + uStack52 = number - 1; + uStack56 = ceil1000((uint)bVar1); + uStack60 = (int)(uVar9 + 3) >> 2; + } + } + } + } + generate_microcode_for_othermode_setting(&puStack4,param_3,1,bowtie); + puVar8 = puStack4; + if (bowtie < 2) { + puStack4[1] = 0xffffffff; + *puStack4 = 0xbb000001; + } + else { + puStack4[1] = 0xffffffff; + *puStack4 = (uVar5 & 0xff) << 0x10 | 0xbb000001; + } + puStack4 = puStack4 + 2; + puVar4 = puVar8 + 4; + puVar8[3] = 0; + *puStack4 = 0xba001001; + if (uVar11 == 0) { + *puVar4 = 0xfc121824; + puVar8[5] = 0xff33ffff; +LAB_7f077150: + puStack4 = puVar8 + 6; + puVar4 = puStack4; + } + else { + if (uVar11 == 2) { + if (uStack44 == 0x8000) { + puVar8[5] = 0xff33ffff; + *puVar4 = 0xfc121824; + } + else { + if (uStack44 != 0xc000) goto LAB_7f077154; + *puVar4 = 0xfc121824; + puVar8[5] = 0xff33ffff; + } + goto LAB_7f077150; + } + if (uVar11 == 3) { + puVar8[5] = 0xff33ffff; + *puVar4 = 0xfc121824; + goto LAB_7f077150; + } + if (uVar11 == 4) { + puVar8[5] = 0xfffff9fc; + *puVar4 = 0xfc127e24; + goto LAB_7f077150; + } + } +LAB_7f077154: + uVar7 = ((uint)uVar11 & 7) << 0x15; + uVar5 = (uStack48 & 3) << 0x13; + *puVar4 = uVar7 | 0xfd000000 | uVar5; + uVar7 |= 0xf5000000; + puVar4[1] = imgcall->index; + puVar4[2] = uVar7 | uVar5; + puVar4[3] = ((uint)imgcall->flagsT & 3) << 0x12 | 0x7000000 | + ((uint)imgcall->flagsS & 3) << 8; + puVar4[5] = 0; + puVar4[4] = 0xe6000000; + puVar4[6] = 0xf3000000; + uVar5 = 0x7ff; + if ((int)uStack52 < 0x7ff) { + uVar5 = uStack52; + } + puVar4[7] = (uVar5 & 0xfff) << 0xc | 0x7000000 | uStack56 & 0xfff; + puVar4[9] = 0; + puVar4[8] = 0xe7000000; + if (uVar11 == 2) { + uVar5 = 0x3ff - (uint)*(byte *)((int)puVar3 + 10); + if (uStack52 + 1 <= uVar5) { + uVar5 = 0; + } + puVar4[10] = 0xf5000100; + puVar4[0xb] = 0x7000000; + uVar6 = (uStack52 + 1) - uVar5; + puVar4[0xd] = 0; + puVar4[0xc] = 0xe6000000; + uVar5 = (uVar5 & 0x3ff) << 2; + puVar4[0xe] = (uVar6 & 0x3ff) << 0xe | 0xf0000000 | uVar5; + puVar4[0xf] = (*(byte *)((int)puVar3 + 10) + uVar6 & 0x3ff) << 0xe | 0x7000000 | uVar5; + puVar4[0x11] = 0; + puVar4[0x10] = 0xe7000000; + puStack4 = puVar4 + 0x14; + puVar4[0x12] = 0xba000e02; + puVar4[0x13] = uStack44; + } + else { + puStack4 = puVar4 + 0xc; + puVar4[0xb] = 0; + puVar4[10] = 0xba000e02; + } + puVar3 = puStack4; + *puStack4 = uVar7 | ((uint)uVar12 & 3) << 0x13 | (uStack60 & 0x1ff) << 9; + puStack4 = puStack4 + 2; + uVar5 = is_less_than_certain_power_of_2((uint)bVar2); + uVar7 = is_less_than_certain_power_of_2((uint)bVar1); + puVar3[1] = (uVar7 & 0xf) << 4 | ((uint)imgcall->flagsT & 3) << 0x12 | (uVar5 & 0xf) << 0xe + | ((uint)imgcall->flagsS & 3) << 8; + *puStack4 = (ul_s_t & 0xfff) << 0xc | 0xf2000000 | ul_s_t & 0xfff; + puStack4[1] = ((uVar9 - 1) * 4 + ul_s_t & 0xfff) << 0xc | + ((uint)bVar2 - 1) * 4 + ul_s_t & 0xfff; + puStack4 = puStack4 + 2; + goto LAB_7f077b80; + } + uStack160 = 0; + uStack164 = (uint)imgcall->level; + if (puVar3 == NULL) { + bStack166 = imgcall->depth; + uVar14 = (ulonglong)imgcall->format; +LAB_7f07748c: + if (bStack166 == 0) { + uStack176 = 2; + number = proc_7F0767D8((uint)bVar1,(uint)bVar2,uStack164); + uStack180 = number - 1; + } + else { + if (bStack166 == 1) { + uStack176 = 2; + number = proc_7F076848((uint)bVar1,(uint)bVar2,uStack164); + uStack180 = number - 1; + } + else { + if (bStack166 == 2) { + uStack176 = 2; + number = proc_7F0768B8((uint)bVar1,(uint)bVar2,uStack164); + uStack180 = number - 1; + } + else { + if (bStack166 == 3) { + uStack176 = 3; + number = proc_7F076928((uint)bVar1,(uint)bVar2,uStack164); + uStack180 = number - 1; + } + } + } + } + } + else { + bStack166 = (byte)puVar3[2] & 3; + uVar14 = SEXT48((int)((puVar3[2] << 0x1b) >> 0x1d)); + uStack172 = (puVar3[3] >> 0x1e) << 0xe; + if (-1 < (int)(puVar3[3] << 2)) goto LAB_7f07748c; + proc_7F0CC9D4(puVar3,&uStack176,(int *)&uStack180); + } + generate_microcode_for_othermode_setting(&puStack4,param_3,2,bowtie); + puVar8 = puStack4; + bVar1 = bStack166; + if (bowtie < 2) { + puStack4[1] = 0xffffffff; + *puStack4 = (uStack164 - 1 & 7) << 0xb | 0xbb000001; + } + else { + puStack4[1] = 0xffffffff; + *puStack4 = (uVar5 & 0xff) << 0x10 | 0xbb000000 | (uStack164 - 1 & 7) << 0xb | 1; + } + puStack4 = puStack4 + 2; + puVar4 = puVar8 + 4; + puVar8[3] = 0x10000; + *puStack4 = 0xba001001; + if (uVar14 == 0) { + *puVar4 = 0xfc26a004; + puVar8[5] = 0x1f1093ff; +LAB_7f0776ec: + puStack4 = puVar8 + 6; + puVar4 = puStack4; + } + else { + if (uVar14 == 2) { + if (uStack172 == 0x8000) { + puVar8[5] = 0xff33ffff; + *puVar4 = 0xfc121824; + } + else { + if (uStack172 != 0xc000) goto LAB_7f0776f0; + *puVar4 = 0xfc121824; + puVar8[5] = 0xff33ffff; + } + goto LAB_7f0776ec; + } + if (uVar14 == 3) { + puVar8[5] = 0x1f1093ff; + *puVar4 = 0xfc26a004; + goto LAB_7f0776ec; + } + if (uVar14 == 4) { + puVar8[5] = 0x1ffc93fc; + *puVar4 = 0xfc26a004; + goto LAB_7f0776ec; + } + } +LAB_7f0776f0: + uVar9 = ((uint)uVar14 & 7) << 0x15; + *puVar4 = uVar9 | 0xfd000000 | (uStack176 & 3) << 0x13; + uVar9 |= 0xf5000000; + puVar4[1] = imgcall->index; + puVar4[2] = uVar9 | (uStack176 & 3) << 0x13; + puVar4[3] = 0x7000000; + puVar4[5] = 0; + puVar4[4] = 0xe6000000; + puVar4[6] = 0xf3000000; + uVar5 = 0x7ff; + if ((int)uStack180 < 0x7ff) { + uVar5 = uStack180; + } + puVar4[7] = (uVar5 & 0xfff) << 0xc | 0x7000000; + puVar4[9] = 0; + puVar4[8] = 0xe7000000; + if (uVar14 == 2) { + uVar5 = 0x3ff - (uint)*(byte *)((int)puVar3 + 10); + if (uStack180 + 1 <= uVar5) { + uVar5 = 0; + } + puVar4[10] = 0xf5000100; + puVar4[0xb] = 0x7000000; + uVar7 = (uStack180 + 1) - uVar5; + puVar4[0xd] = 0; + puVar4[0xc] = 0xe6000000; + uVar5 = (uVar5 & 0x3ff) << 2; + puVar4[0xe] = (uVar7 & 0x3ff) << 0xe | 0xf0000000 | uVar5; + puVar4[0xf] = (*(byte *)((int)puVar3 + 10) + uVar7 & 0x3ff) << 0xe | 0x7000000 | uVar5; + puVar4[0x11] = 0; + puVar4[0x10] = 0xe7000000; + puStack4 = puVar4 + 0x14; + puVar4[0x13] = uStack172; + puVar4[0x12] = 0xba000e02; + } + else { + puStack4 = puVar4 + 0xc; + puVar4[0xb] = 0; + puVar4[10] = 0xba000e02; + } + uVar14 = 0; + if (0 < (int)uStack164) { + uVar9 |= ((uint)bStack166 & 3) << 0x13; + do { + if (0 < (longlong)uVar14) { + if ((puVar3 == NULL) || (-1 < (int)(puVar3[3] << 2))) { + if (1 < (longlong)uVar12) { + uVar12 = (longlong)((int)uVar12 >> 1); + } + if (1 < (longlong)uVar11) { + uVar11 = (longlong)((int)uVar11 >> 1); + } + } + else { + uVar12 = proc_7F0CC714(puVar3,uVar14); + uVar11 = proc_7F0CC7FC(puVar3,uVar14); + } + } + puVar8 = puStack4; + number_00 = (int)uVar12; + number = (int)uVar11; + if (bVar1 == 0) { + iVar10 = number_00 + 0xf; + if (iVar10 < 0) { + iVar10 = number_00 + 0x1e; + } + uStack268 = iVar10 >> 4; + iVar10 = uStack268 * number; + uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; + } + else { + if (bVar1 == 1) { + iVar10 = number_00 + 7; + if (iVar10 < 0) { + iVar10 = number_00 + 0xe; + } + uStack268 = iVar10 >> 3; + iVar10 = uStack268 * number; + uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; + } + else { + if (bVar1 == 2) { + iVar10 = number_00 + 3; + if (iVar10 < 0) { + iVar10 = number_00 + 6; + } + uStack268 = iVar10 >> 2; + iVar10 = uStack268 * number; + uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; + } + else { + if (bVar1 == 3) { + iVar10 = number_00 + 3; + if (iVar10 < 0) { + iVar10 = number_00 + 6; + } + uStack268 = iVar10 >> 2; + iVar10 = uStack268 * number; + uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; + } + else { + iVar10 = uStack268 * number; + uVar5 = uVar9 | (uStack268 & 0x1ff) << 9; + } + } + } + } + *puStack4 = uVar5 | uStack160 & 0x1ff; + puStack4 = puStack4 + 2; + uVar7 = is_less_than_certain_power_of_2(number); + uVar6 = is_less_than_certain_power_of_2(number_00); + uVar5 = (uint)uVar14; + uVar13 = (uVar5 & 7) << 0x18; + puVar8[1] = (uVar6 & 0xf) << 4 | uVar13 | ((uint)imgcall->flagsT & 3) << 0x12 | + (uVar7 & 0xf) << 0xe | (uVar5 & 0xf) << 10 | + ((uint)imgcall->flagsS & 3) << 8 | uVar5 & 0xf; + uVar14 = SEXT48((int)(uVar5 + 1)); + puVar8 = puStack4 + 2; + *puStack4 = (ul_s_t & 0xfff) << 0xc | 0xf2000000 | ul_s_t & 0xfff; + puStack4[1] = uVar13 | ((number_00 + -1) * 4 + ul_s_t & 0xfff) << 0xc | + (number + -1) * 4 + ul_s_t & 0xfff; + uStack160 += iVar10; + puStack4 = puVar8; + } while (uVar14 != (longlong)(int)uStack164); + } +LAB_7f077b80: + *DLtarget = puStack4; + return; +} + + + +void proc_7F077BB8(s32 param_1,s32 param_2,s32 param_3) + +{ + return; +} + + + +void proc_7F077BD0(void) + +{ + return; +} + + + +void set_BONDdata_screensize(float width,float height) + +{ + pPlayer->c_screenwidth = width; + pPlayer->c_screenheight = height; + pPlayer->c_halfwidth = width * 0.50000000; + pPlayer->c_halfheight = height * 0.50000000; + return; +} + + + +void set_ulx_uly(f32 ulx,f32 uly) + +{ + *(f32 *)&pPlayer->c_screenleft = ulx; + *(f32 *)&pPlayer->c_screentop = uly; + return; +} + + + +void sub_GAME_7F077C30(f32 pnear,f32 pfovy,f32 paspect) + +{ + float in_a2_lo; + + *(f32 *)&pPlayer->c_perspnear = pnear; + *(f32 *)&pPlayer->c_perspfovy = pfovy; + pPlayer->c_perspaspect = in_a2_lo; + return; +} + + + +void proc_7F077C5C(void) + +{ + float fVar1; + float fVar2; + uint uVar3; + + fVar1 = sinf((pPlayer->c_perspfovy * 3.14159274) / 360.00000000); + fVar2 = cosf((pPlayer->c_perspfovy * 3.14159274) / 360.00000000); + *(float *)&pPlayer->c_scaley = fVar1 / (fVar2 * pPlayer->c_halfheight); + *(float *)&pPlayer->c_scalex = + ((float)pPlayer->c_scaley * pPlayer->c_perspaspect * pPlayer->c_halfheight) / + pPlayer->c_halfwidth; + *(float *)&pPlayer->c_recipscalex = 1.00000000 / (float)pPlayer->c_scalex; + *(float *)&pPlayer->c_recipscaley = 1.00000000 / (float)pPlayer->c_scaley; + pPlayer->c_scalelod = pPlayer->c_scaley; + fVar1 = sinf(0.52359879); + fVar2 = cosf(0.52359879); + *(float *)&pPlayer->c_scalelod60 = fVar1 / (fVar2 * 120.00000000); + *(float *)&pPlayer->c_lodscalez = (float)pPlayer->c_scalelod / (float)pPlayer->c_scalelod60; + fVar1 = (float)pPlayer->c_lodscalez * 65536.00000000; + if (4294967296.00000000 < fVar1) { + pPlayer->c_lodscalezu32 = -1; + goto LAB_7f077e34; + } + if (false) { + fVar2 = ROUND(fVar1); + } + else { + fVar2 = FLOOR(fVar1); + } + uVar3 = (uint)fVar2; + if (false) { + if (false) { + fVar1 = ROUND(fVar1 - 2147483648.00000000); + } + else { + fVar1 = FLOOR(fVar1 - 2147483648.00000000); + } + if (false) goto LAB_7f077e10; + uVar3 = (int)fVar1 | 0x80000000; + } + else { + if ((int)uVar3 < 0) { +LAB_7f077e10: + uVar3 = 0xffffffff; + } + } + pPlayer->c_lodscalezu32 = uVar3; +LAB_7f077e34: + fVar2 = pPlayer->c_halfheight * (float)pPlayer->c_scaley; + fVar1 = sqrtf(fVar2 * fVar2 + 1.00000000); + (pPlayer->c_cameratopnorm).x = 0.00000000; + *(float *)&(pPlayer->c_cameratopnorm).y = 1.00000000 / fVar1; + *(float *)&(pPlayer->c_cameratopnorm).z = fVar2 * (1.00000000 / fVar1); + fVar2 = -pPlayer->c_halfwidth * (float)pPlayer->c_scalex; + fVar1 = sqrtf(fVar2 * fVar2 + 1.00000000); + *(float *)&(pPlayer->c_cameraleftnorm).x = -(1.00000000 / fVar1); + (pPlayer->c_cameraleftnorm).y = 0.00000000; + *(float *)&(pPlayer->c_cameraleftnorm).z = -fVar2 * (1.00000000 / fVar1); + return; +} + + + +void proc_7F077EEC(float *param_1,float *param_2,float param_3) + +{ + float in_a2_lo; + float fVar1; + float fVar2; + float fVar3; + + fVar2 = (pPlayer->c_halfheight - (param_1[1] - pPlayer->c_screentop)) * (float)pPlayer->c_scaley + ; + fVar3 = ((*param_1 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * (float)pPlayer->c_scalex; + fVar1 = sqrtf(fVar3 * fVar3 + fVar2 * fVar2 + 1.00000000); + fVar1 = in_a2_lo / fVar1; + *param_2 = fVar3 * fVar1; + param_2[1] = fVar2 * fVar1; + param_2[2] = fVar1 * -1.00000000; + return; +} + + + +void proc_7F077FB4(float *param_1,float param_2,float *param_3) + +{ + float *in_a2_lo; + + in_a2_lo[1] = param_1[1] * (float)param_3 * (float)pPlayer->c_scaley; + *in_a2_lo = *param_1 * (float)param_3 * (float)pPlayer->c_scalex; + return; +} + + + +void proc_7F077FF4(float *param_1,float *param_2) + +{ + float fVar1; + + fVar1 = param_1[2]; + param_2[1] = param_1[1] * (1.00000000 / fVar1) * (float)pPlayer->c_recipscaley + + pPlayer->c_screentop + pPlayer->c_halfheight; + *param_2 = (pPlayer->c_screenleft + pPlayer->c_halfwidth) - + *param_1 * (1.00000000 / fVar1) * (float)pPlayer->c_recipscalex; + return; +} + + + +void proc_7F078060(float *param_1,float *param_2) + +{ + float fVar1; + + fVar1 = flt_80054FAC; + if (param_1[2] != 0.00000000) { + fVar1 = 1.00000000 / param_1[2]; + } + param_2[1] = param_1[1] * fVar1 * (float)pPlayer->c_recipscaley + + pPlayer->c_screentop + pPlayer->c_halfheight; + *param_2 = (pPlayer->c_screenleft + pPlayer->c_halfwidth) - + *param_1 * fVar1 * (float)pPlayer->c_recipscalex; + return; +} + + + +void proc_7F0780F0(float *param_1,float param_2,float *param_3) + +{ + float *in_a2_lo; + + in_a2_lo[1] = param_1[1] * (1.00000000 / (float)param_3) * (float)pPlayer->c_recipscaley; + *in_a2_lo = *param_1 * (1.00000000 / (float)param_3) * (float)pPlayer->c_recipscalex; + return; +} + + + +void proc_7F078140(float *param_1,float *param_2,float param_3,float param_4,float param_5) + +{ + float in_a3_lo; + float fVar1; + float fVar2; + float __x; + float in_stack_00000010; + + __x = (in_a3_lo * flt_80054FB0) / 360.00000000; + fVar1 = sinf(__x); + __x = cosf(__x); + fVar2 = pPlayer->c_halfheight; + fVar1 = fVar1 / (__x * fVar2); + __x = (fVar2 - (param_1[1] - pPlayer->c_screentop)) * fVar1; + fVar2 = ((*param_1 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * + ((fVar1 * in_stack_00000010 * fVar2) / pPlayer->c_halfwidth); + fVar1 = sqrtf(fVar2 * fVar2 + __x * __x + 1.00000000); + param_5 = param_5 / fVar1; + *param_2 = fVar2 * param_5; + param_2[1] = __x * param_5; + param_2[2] = param_5 * -1.00000000; + return; +} + + + +void proc_7F078258(float *param_1,float *param_2,float param_3,float param_4) + +{ + float in_a2_lo; + float in_a3_lo; + float fVar1; + float fVar2; + float fVar3; + float __x; + + __x = (in_a2_lo * flt_80054FB4) / 360.00000000; + fVar1 = cosf(__x); + __x = sinf(__x); + fVar2 = pPlayer->c_halfheight; + fVar3 = pPlayer->c_halfwidth; + fVar1 = (fVar1 * fVar2) / (param_1[2] * __x); + param_2[1] = param_1[1] * fVar1 + pPlayer->c_screentop + fVar2; + *param_2 = (pPlayer->c_screenleft + pPlayer->c_halfwidth) - + *param_1 * ((fVar3 * fVar1) / (in_a3_lo * fVar2)); + return; +} + + + +void set_BONDdata_field_10C4(int param_1) + +{ + pPlayer->field_10C4 = param_1; + return; +} + + + +int get_BONDdata_field_10C4(void) + +{ + return pPlayer->field_10C4; +} + + + +void set_BONDdata_field_10C8(int param_1) + +{ + pPlayer->field_10C8 = param_1; + return; +} + + + +int get_BONDdata_field_10C8(void) + +{ + return pPlayer->field_10C8; +} + + + +void set_BONDdata_field_10D8(int param_1) + +{ + pPlayer->field_10D8 = param_1; + return; +} + + + +int get_BONDdata_field_10D8(void) + +{ + return pPlayer->field_10D8; +} + + + +void set_BONDdata_field_10E0(int param_1) + +{ + pPlayer->field_10E0 = param_1; + return; +} + + + +int get_BONDdata_field_10E0(void) + +{ + return pPlayer->field_10E0; +} + + + +void copy_BONDdata_field_10CC_to_10E8_set_10CC(int param_1) + +{ + pPlayer->field_10E8 = pPlayer->field_10CC; + pPlayer->field_10CC = param_1; + return; +} + + + +int get_BONDdata_field_10CC(void) + +{ + return pPlayer->field_10CC; +} + + + +void set_BONDdata_field_10DC(int param_1) + +{ + pPlayer->field_10DC = param_1; + return; +} + + + +int get_BONDdata_field_10DC(void) + +{ + return pPlayer->field_10DC; +} + + + +int get_BONDdata_field_10E8(void) + +{ + return pPlayer->field_10E8; +} + + + +void set_BONDdata_field_10D0(int param_1) + +{ + pPlayer->field_10D0 = param_1; + return; +} + + + +int get_BONDdata_field_10D0(void) + +{ + return pPlayer->field_10D0; +} + + + +void proc_7F078424(int param_1) + +{ + pPlayer->field_10EC = pPlayer->field_10D4; + pPlayer->field_10D4 = param_1; + return; +} + + + +int get_BONDdata_field_10D4(void) + +{ + return pPlayer->field_10D4; +} + + + +int get_BONDdata_field_10EC(void) + +{ + return pPlayer->field_10EC; +} + + + +void set_BONDdata_field_10E4(int param_1) + +{ + pPlayer->field_10E4 = param_1; + return; +} + + + +int get_BONDdata_field_10E4(void) + +{ + return pPlayer->field_10E4; +} + + + +f32 getPlayer_c_lodscalez(void) + +{ + return pPlayer->c_lodscalez; +} + + + +int getPlayer_c_lodscalezu32(void) + +{ + return pPlayer->c_lodscalezu32; +} + + + +f32 getPlayer_c_screenwidth(void) + +{ + return (f32)pPlayer->c_screenwidth; +} + + + +f32 getPlayer_c_screenheight(void) + +{ + return (f32)pPlayer->c_screenheight; +} + + + +f32 getPlayer_c_screenleft(void) + +{ + return (f32)pPlayer->c_screenleft; +} + + + +f32 getPlayer_c_screentop(void) + +{ + return (f32)pPlayer->c_screentop; +} + + + +f32 getPlayer_c_perspfovy(void) + +{ + return (f32)pPlayer->c_perspfovy; +} + + + +f32 getPlayer_c_perspaspect(void) + +{ + return (f32)pPlayer->c_perspaspect; +} + + + +void setpointtocameratopnorm(xyzpoint *param_1) + +{ + param_1->x = (pPlayer->c_cameratopnorm).x; + param_1->y = (pPlayer->c_cameratopnorm).y; + param_1->z = (pPlayer->c_cameratopnorm).z; + return; +} + + + +void setpointtocameratopnorminvertedy(xyzpoint *param_1) + +{ + param_1->x = (pPlayer->c_cameratopnorm).x; + *(float *)¶m_1->y = -(float)(pPlayer->c_cameratopnorm).y; + param_1->z = (pPlayer->c_cameratopnorm).z; + return; +} + + + +void setpointtocameraleftnorm(xyzpoint *param_1) + +{ + param_1->x = (pPlayer->c_cameraleftnorm).x; + param_1->y = (pPlayer->c_cameraleftnorm).y; + param_1->z = (pPlayer->c_cameraleftnorm).z; + return; +} + + + +void setpointtocameraleftnorminvertedx(xyzpoint *param_1) + +{ + *(float *)¶m_1->x = -(float)(pPlayer->c_cameraleftnorm).x; + param_1->y = (pPlayer->c_cameraleftnorm).y; + param_1->z = (pPlayer->c_cameraleftnorm).z; + return; +} + + + +f32 getPlayer_c_perspnear(void) + +{ + return (f32)pPlayer->c_perspnear; +} + + + +void proc_7F0785DC(void) + +{ + int iVar1; + int iVar2; + int iVar3; + float fVar4; + float fVar5; + float fVar6; + + fVar5 = pPlayer->c_halfheight * (float)pPlayer->c_scaley; + fVar4 = sqrtf(fVar5 * fVar5 + 1.00000000); + fVar5 = fVar5 * (1.00000000 / fVar4); + fVar4 = -(1.00000000 / fVar4); + fVar6 = -fVar4; + xyzpoint_80079940.x = + (f32)(*(float *)(pPlayer->field_10D4 + 0x20) * fVar5 + + fVar6 * *(float *)(pPlayer->field_10D4 + 0x10)); + xyzpoint_80079940.y = + (f32)(*(float *)(pPlayer->field_10D4 + 0x24) * fVar5 + + fVar6 * *(float *)(pPlayer->field_10D4 + 0x14)); + xyzpoint_80079940.z = + (f32)(*(float *)(pPlayer->field_10D4 + 0x28) * fVar5 + + fVar6 * *(float *)(pPlayer->field_10D4 + 0x18)); + iVar1 = pPlayer->field_10D4; + xyzpoint_8007994c.x = + (f32)(*(float *)(iVar1 + 0x38) * (float)xyzpoint_80079940.z + + (float)xyzpoint_80079940.x * *(float *)(iVar1 + 0x30) + + (float)xyzpoint_80079940.y * *(float *)(iVar1 + 0x34)); + xyzpoint_8007994c.y = + (f32)(*(float *)(pPlayer->field_10D4 + 0x20) * fVar5 + + fVar4 * *(float *)(pPlayer->field_10D4 + 0x10)); + xyzpoint_8007994c.z = + (f32)(*(float *)(pPlayer->field_10D4 + 0x24) * fVar5 + + fVar4 * *(float *)(pPlayer->field_10D4 + 0x14)); + xyzpoint_80079958.x = + (f32)(*(float *)(pPlayer->field_10D4 + 0x28) * fVar5 + + fVar4 * *(float *)(pPlayer->field_10D4 + 0x18)); + iVar1 = pPlayer->field_10D4; + xyzpoint_80079958.y = + (f32)(*(float *)(iVar1 + 0x38) * (float)xyzpoint_80079958.x + + (float)xyzpoint_8007994c.y * *(float *)(iVar1 + 0x30) + + (float)xyzpoint_8007994c.z * *(float *)(iVar1 + 0x34)); + fVar5 = -pPlayer->c_halfwidth * (float)pPlayer->c_scalex; + fVar4 = sqrtf(fVar5 * fVar5 + 1.00000000); + fVar5 = fVar5 * (1.00000000 / fVar4); + fVar4 = -(1.00000000 / fVar4); + fVar6 = -fVar4; + xyzpoint_80079958.z = + (f32)(fVar4 * *(float *)pPlayer->field_10D4 - ((float *)pPlayer->field_10D4)[8] * fVar5); + xyzpoint_80079964.x = + (f32)(fVar4 * *(float *)(pPlayer->field_10D4 + 4) - + *(float *)(pPlayer->field_10D4 + 0x24) * fVar5); + xyzpoint_80079964.y = + (f32)(fVar4 * *(float *)(pPlayer->field_10D4 + 8) - + *(float *)(pPlayer->field_10D4 + 0x28) * fVar5); + iVar1 = pPlayer->field_10D4; + DAT_80079970 = fVar6 * *(float *)pPlayer->field_10D4 - ((float *)pPlayer->field_10D4)[8] * fVar5 + ; + flt_8007A034 = fVar6 * *(float *)(pPlayer->field_10D4 + 4) - + *(float *)(pPlayer->field_10D4 + 0x24) * fVar5; + DAT_80079978 = fVar6 * *(float *)(pPlayer->field_10D4 + 8) - + *(float *)(pPlayer->field_10D4 + 0x28) * fVar5; + iVar2 = pPlayer->field_10D4; + iVar3 = pPlayer->field_10D4; + xyzpoint_80079964.z = + (f32)(*(float *)(iVar1 + 0x38) * (float)xyzpoint_80079964.y + + (float)xyzpoint_80079958.z * *(float *)(iVar1 + 0x30) + + (float)xyzpoint_80079964.x * *(float *)(iVar1 + 0x34)); + DAT_8007997c = *(float *)(iVar2 + 0x38) * DAT_80079978 + + DAT_80079970 * *(float *)(iVar2 + 0x30) + flt_8007A034 * *(float *)(iVar2 + 0x34) + ; + DAT_80079980 = *(float *)(iVar3 + 0x38) * *(float *)(iVar3 + 0x28) + + *(float *)(iVar3 + 0x20) * *(float *)(iVar3 + 0x30) + + *(float *)(iVar3 + 0x24) * *(float *)(iVar3 + 0x34); + return; +} + + + +void proc_7F078950(xyzpoint *param_1,undefined4 *param_2) + +{ + param_1->x = xyzpoint_80079940.x; + param_1->y = xyzpoint_80079940.y; + param_1->z = xyzpoint_80079940.z; + *(f32 *)param_2 = xyzpoint_8007994c.x; + return; +} + + + +void proc_7F078980(undefined4 *param_1,undefined4 *param_2) + +{ + *(f32 *)param_1 = xyzpoint_8007994c.y; + *(f32 *)(param_1 + 1) = xyzpoint_8007994c.z; + *(f32 *)(param_1 + 2) = xyzpoint_80079958.x; + *(f32 *)param_2 = xyzpoint_80079958.y; + return; +} + + + +void proc_7F0789B0(undefined4 *param_1,undefined4 *param_2) + +{ + *(f32 *)param_1 = xyzpoint_80079958.z; + *(f32 *)(param_1 + 1) = xyzpoint_80079964.x; + *(f32 *)(param_1 + 2) = xyzpoint_80079964.y; + *(f32 *)param_2 = xyzpoint_80079964.z; + return; +} + + + +void proc_7F0789E0(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = DAT_80079970; + param_1[1] = flt_8007A034; + param_1[2] = DAT_80079978; + *param_2 = DAT_8007997c; + return; +} + + + +void proc_7F078A10(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *(undefined4 *)(pPlayer->field_10D4 + 0x20); + param_1[1] = *(undefined4 *)(pPlayer->field_10D4 + 0x24); + param_1[2] = *(undefined4 *)(pPlayer->field_10D4 + 0x28); + *param_2 = DAT_80079980; + return; +} + + + +undefined8 proc_7F078A58(float *param_1,float param_2) + +{ + int iVar1; + float in_a1_lo; + float fVar2; + float fVar3; + float fVar4; + + fVar3 = *param_1; + fVar4 = param_1[1]; + iVar1 = pPlayer->field_10D4; + fVar2 = param_1[2]; + if (DAT_80079980 + in_a1_lo < + fVar2 * *(float *)(iVar1 + 0x28) + + *(float *)(iVar1 + 0x20) * fVar3 + *(float *)(iVar1 + 0x24) * fVar4) { + return 0; + } + if ((float)xyzpoint_80079964.z + in_a1_lo < + fVar2 * (float)xyzpoint_80079964.y + + (float)xyzpoint_80079958.z * fVar3 + (float)xyzpoint_80079964.x * fVar4) { + return 0; + } + if (DAT_8007997c + in_a1_lo < fVar2 * DAT_80079978 + DAT_80079970 * fVar3 + flt_8007A034 * fVar4 + ) { + return 0; + } + if (fVar2 * (float)xyzpoint_80079940.z + + (float)xyzpoint_80079940.x * fVar3 + (float)xyzpoint_80079940.y * fVar4 <= + (float)xyzpoint_8007994c.x + in_a1_lo) { + if (fVar2 * (float)xyzpoint_80079958.x + + (float)xyzpoint_8007994c.y * fVar3 + (float)xyzpoint_8007994c.z * fVar4 <= + (float)xyzpoint_80079958.y + in_a1_lo) { + return 1; + } + return 0; + } + return 0; +} + + + +undefined8 proc_7F078BF4(float *param_1,float param_2,float *param_3) + +{ + int iVar1; + undefined8 uVar2; + float *in_a2_lo; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + + iVar1 = pPlayer->field_10D4; + if (DAT_80079980 + (float)param_3 < + param_1[2] * *(float *)(iVar1 + 0x28) + + *(float *)(iVar1 + 0x20) * *param_1 + *(float *)(iVar1 + 0x24) * param_1[1]) { + uVar2 = 0; + } + else { + fVar4 = ((*in_a2_lo - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * + (float)pPlayer->c_scalex; + fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); + fVar4 = fVar4 * (1.00000000 / fVar3); + fVar6 = -(1.00000000 / fVar3); + fVar5 = fVar6 * *(float *)pPlayer->field_10D4 - ((float *)pPlayer->field_10D4)[8] * fVar4; + fVar3 = fVar6 * *(float *)(pPlayer->field_10D4 + 4) - + *(float *)(pPlayer->field_10D4 + 0x24) * fVar4; + fVar4 = fVar6 * *(float *)(pPlayer->field_10D4 + 8) - + *(float *)(pPlayer->field_10D4 + 0x28) * fVar4; + iVar1 = pPlayer->field_10D4; + if (*(float *)(iVar1 + 0x38) * fVar4 + + fVar5 * *(float *)(iVar1 + 0x30) + fVar3 * *(float *)(iVar1 + 0x34) + (float)param_3 < + param_1[2] * fVar4 + fVar5 * *param_1 + fVar3 * param_1[1]) { + uVar2 = 0; + } + else { + fVar4 = -((in_a2_lo[2] - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * + (float)pPlayer->c_scalex; + fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); + fVar4 = fVar4 * (1.00000000 / fVar3); + fVar3 = --(1.00000000 / fVar3); + fVar5 = fVar3 * *(float *)pPlayer->field_10D4 - + ((float *)pPlayer->field_10D4)[8] * fVar4; + fVar6 = fVar3 * *(float *)(pPlayer->field_10D4 + 4) - + *(float *)(pPlayer->field_10D4 + 0x24) * fVar4; + fVar3 = fVar3 * *(float *)(pPlayer->field_10D4 + 8) - + *(float *)(pPlayer->field_10D4 + 0x28) * fVar4; + iVar1 = pPlayer->field_10D4; + if (*(float *)(iVar1 + 0x38) * fVar3 + + fVar5 * *(float *)(iVar1 + 0x30) + fVar6 * *(float *)(iVar1 + 0x34) + (float)param_3 + < param_1[2] * fVar3 + fVar5 * *param_1 + fVar6 * param_1[1]) { + uVar2 = 0; + } + else { + fVar4 = (pPlayer->c_halfheight - (in_a2_lo[1] - pPlayer->c_screentop)) * + (float)pPlayer->c_scaley; + fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); + fVar4 = fVar4 * (1.00000000 / fVar3); + fVar3 = --(1.00000000 / fVar3); + fVar5 = *(float *)(pPlayer->field_10D4 + 0x20) * fVar4 + + fVar3 * *(float *)(pPlayer->field_10D4 + 0x10); + fVar6 = *(float *)(pPlayer->field_10D4 + 0x24) * fVar4 + + fVar3 * *(float *)(pPlayer->field_10D4 + 0x14); + fVar3 = *(float *)(pPlayer->field_10D4 + 0x28) * fVar4 + + fVar3 * *(float *)(pPlayer->field_10D4 + 0x18); + iVar1 = pPlayer->field_10D4; + if (*(float *)(iVar1 + 0x38) * fVar3 + + fVar5 * *(float *)(iVar1 + 0x30) + fVar6 * *(float *)(iVar1 + 0x34) + + (float)param_3 < param_1[2] * fVar3 + fVar5 * *param_1 + fVar6 * param_1[1]) { + uVar2 = 0; + } + else { + fVar4 = -(pPlayer->c_halfheight - (in_a2_lo[3] - pPlayer->c_screentop)) * + (float)pPlayer->c_scaley; + fVar3 = sqrtf(fVar4 * fVar4 + 1.00000000); + fVar4 = fVar4 * (1.00000000 / fVar3); + fVar6 = -(1.00000000 / fVar3); + fVar3 = *(float *)(pPlayer->field_10D4 + 0x20) * fVar4 + + fVar6 * *(float *)(pPlayer->field_10D4 + 0x10); + fVar5 = *(float *)(pPlayer->field_10D4 + 0x24) * fVar4 + + fVar6 * *(float *)(pPlayer->field_10D4 + 0x14); + fVar4 = *(float *)(pPlayer->field_10D4 + 0x28) * fVar4 + + fVar6 * *(float *)(pPlayer->field_10D4 + 0x18); + iVar1 = pPlayer->field_10D4; + uVar2 = 1; + if (*(float *)(iVar1 + 0x38) * fVar4 + + fVar3 * *(float *)(iVar1 + 0x30) + fVar5 * *(float *)(iVar1 + 0x34) + + (float)param_3 < param_1[2] * fVar4 + fVar3 * *param_1 + fVar5 * param_1[1]) + { + uVar2 = 0; + } + } + } + } + } + return uVar2; +} + + + +uint proc_7F0790F0(void) + +{ + int iVar1; + bool bVar2; + u32 uVar3; + u32 uVar4; + u32 uVar5; + int iVar6; + float fVar7; + float fVar8; + uint uStack20; + + uVar3 = get_cur_playernum(); + uVar4 = get_num_players(); + bVar2 = true; + iVar6 = 0; + if (0 < (int)DAT_80079c68) { + do { + iVar6 += 1; + bVar2 = false; + uVar5 = 0; + pPlayer->field_29E0 = pPlayer->field_29E0 + 1; + uStack20 = pPlayer->field_29E0 % DAT_80079c68; + if (DAT_80079c68 == 0) { + trap(0x1c00); + } + if ((DAT_80079c68 == 0xffffffff) && (pPlayer->field_29E0 == -0x80000000)) { + trap(0x1800); + } + if (0 < (int)uVar4) { + do { + if (((uVar5 != uVar3) && + (iVar1 = ptr_BONDdata_p1[uVar5]->position_data_pointer, iVar1 != 0)) && + (fVar7 = *(float *)(iVar1 + 8) - *(float *)(&DAT_80079c28)[uStack20], + fVar8 = *(float *)(iVar1 + 0x10) - ((float *)(&DAT_80079c28)[uStack20])[2], + fVar7 = sqrtf(fVar7 * fVar7 + fVar8 * fVar8), fVar7 < 1000.00000000)) { + bVar2 = true; + } + uVar5 += 1; + } while (uVar5 != uVar4); + } + } while ((bVar2) && (iVar6 < (int)DAT_80079c68)); + } + if ((bVar2) && (iVar6 < (int)DAT_80079c68)) { + do { + iVar6 += 1; + bVar2 = false; + uVar5 = 0; + pPlayer->field_29E0 = pPlayer->field_29E0 + 1; + uStack20 = pPlayer->field_29E0 % DAT_80079c68; + if (DAT_80079c68 == 0) { + trap(0x1c00); + } + if ((DAT_80079c68 == 0xffffffff) && (pPlayer->field_29E0 == -0x80000000)) { + trap(0x1800); + } + if (0 < (int)uVar4) { + do { + if (((uVar5 != uVar3) && + (iVar1 = ptr_BONDdata_p1[uVar5]->position_data_pointer, iVar1 != 0)) && + (fVar7 = *(float *)(iVar1 + 8) - *(float *)(&DAT_80079c28)[uStack20], + fVar8 = *(float *)(iVar1 + 0x10) - ((float *)(&DAT_80079c28)[uStack20])[2], + fVar7 = sqrtf(fVar7 * fVar7 + fVar8 * fVar8), fVar7 < 100.00000000)) { + bVar2 = true; + } + uVar5 += 1; + } while (uVar5 != uVar4); + } + } while ((bVar2) && (iVar6 < (int)DAT_80079c68)); + } + if (bVar2) { + uVar3 = get_random_value(); + uStack20 = uVar3 % DAT_80079c68; + if (DAT_80079c68 == 0) { + trap(0x1c00); + } + } + return uStack20; +} + + + +void init_player_BONDdata(void) + +{ + s32 sVar1; + u32 playernum; + int type; + + sVar1 = get_num_players(); + if (1 < sVar1) { + playernum = get_cur_playernum(); + type = get_player_control_style(playernum); + pPlayer->controlstyle = type; + playernum = get_cur_playernum(); + type = get_player_control_style(playernum); + cur_player_set_control_type(type); + } + pPlayer->current_model_xpos = 0.00000000; + pPlayer->current_model_ypos = 0.00000000; + pPlayer->current_model_zpos = 0.00000000; + pPlayer->previous_model_xpos = 0.00000000; + pPlayer->previous_model_ypos = 0.00000000; + pPlayer->previous_model_zpos = 0.00000000; + pPlayer->current_room_xpos = 0.00000000; + pPlayer->current_room_ypos = 0.00000000; + pPlayer->current_room_zpos = 0.00000000; + pPlayer->unknown = 0; + pPlayer->xpos = 0.00000000; + pPlayer->ypos = 0.00000000; + pPlayer->zpos = 0.00000000; + pPlayer->xpos2 = 0.00000000; + pPlayer->ypos2 = 0.00000000; + pPlayer->zpos2 = 1.00000000; + pPlayer->xoffset = 0.00000000; + pPlayer->yoffset = 1.00000000; + pPlayer->zoffset = 0.00000000; + pPlayer->xpos3 = 0.00000000; + pPlayer->ypos3 = 0.00000000; + pPlayer->zpos3 = 0.00000000; + pPlayer->room_pointer = 0; + pPlayer->field_3C4 = 0.00000000; + pPlayer->field_3C8 = 0.00000000; + pPlayer->field_3CC = 1.00000000; + pPlayer->field_84 = 0.00000000; + pPlayer->field_88 = 0.00000000; + pPlayer->field_8C = 0; + pPlayer->field_90 = 0.00000000; + pPlayer->field_94 = 0; + pPlayer->field_98 = 0.00000000; + pPlayer->field_1274 = 0.00000000; + pPlayer->field_1278 = 0.00000000; + pPlayer->field_127C = 0.00000000; + pPlayer->crouchposition = 2; + pPlayer->field_29FC = 2; + pPlayer->ducking_height_offset = 0.00000000; + pPlayer->field_A4 = 0.00000000; + pPlayer->field_AC = 1; + pPlayer->field_D0 = 0; + pPlayer->bonddead = 0; + pPlayer->bondhealth = 1.00000000; + pPlayer->bondarmour = 0.00000000; + pPlayer->oldhealth = 1.00000000; + pPlayer->oldarmour = 0.00000000; + pPlayer->apparenthealth = 1.00000000; + pPlayer->apparentarmour = 0.00000000; + pPlayer->damageshowtime = -1; + pPlayer->healthshowtime = -1; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + pPlayer->pause_animation_state = 0; + pPlayer->paused_flag = 1; + pPlayer->open_close_solo_watch_menu = 0; + pPlayer->field_1A0 = 0; + pPlayer->bondfadefracnew = 0.00000000; + pPlayer->speedtheta = 0.00000000; + pPlayer->vv_costheta = 1.00000000; + pPlayer->vv_sintheta = 0.00000000; + pPlayer->vv_verta = -4.00000000; + *(float *)&pPlayer->vv_verta360 = pPlayer->vv_verta; + if ((float)pPlayer->vv_verta360 < 0.00000000) { + *(float *)&pPlayer->vv_verta360 = (float)pPlayer->vv_verta360 + 360.00000000; + pPlayer->speedverta = 0.00000000; + } + else { + pPlayer->speedverta = 0.00000000; + } + pPlayer->vv_cosverta = 1.00000000; + pPlayer->vv_sinverta = 0.00000000; + pPlayer->speedsideways = 0.00000000; + pPlayer->speedstrafe = 0.00000000; + pPlayer->speedforwards = 0.00000000; + pPlayer->field_2A4C = 0.00000000; + pPlayer->speedboost = 1.00000000; + pPlayer->speedmaxtime60 = 0; + pPlayer->boost_factor_x = 0.00000000; + pPlayer->boost_factor_y = 0.00000000; + pPlayer->boost_factor_z = 0.00000000; + pPlayer->field_104 = 0; + pPlayer->field_108 = 0; + pPlayer->field_10C = 0; + pPlayer->movecentrerelease = 0; + pPlayer->lookaheadcentreenabled = 1; + pPlayer->automovecentreenabled = 1; + pPlayer->fastmovecentreenabled = 0; + pPlayer->automovecentre = 1; + pPlayer->insightaimmode = 0; + pPlayer->autoyaimenabled = 1; + pPlayer->autoaimy = 0.00000000; + pPlayer->autoyaimtime = 0; + pPlayer->autoyaimtime60 = -1; + pPlayer->autoxaimenabled = 1; + pPlayer->autoaimx = 0.00000000; + pPlayer->autoxaimtime = 0; + pPlayer->autoxaimtime60 = -1; + pPlayer->tint_red = 0xff; + pPlayer->tint_green = 0xff; + pPlayer->tint_blue = 0xff; + pPlayer->tint_alpha = 0.00000000; + pPlayer->field_3E0 = -1.00000000; + pPlayer->timer_for_fade = -1.00000000; + pPlayer->field_3E8 = 0xff; + pPlayer->field_3EC = 0xff; + pPlayer->field_3F0 = 0xff; + pPlayer->field_3F4 = 0xff; + pPlayer->field_3F8 = 0xff; + pPlayer->field_3FC = 0xff; + pPlayer->field_400 = 0.00000000; + pPlayer->field_404 = 0.00000000; + pPlayer->viewport_alpha = -1.00000000; + pPlayer->bondfadetime60 = -1.00000000; + pPlayer->bondfadetimemax = 0.00000000; + pPlayer->bondfadefracold = 0.00000000; + pPlayer->field_42C = 2; + pPlayer->controlstyle = 0; + pPlayer->pause_starting_angle = 0.00000000; + pPlayer->field_208 = 0.00000000; + pPlayer->pause_target_angle = 0.00000000; + pPlayer->field_210 = 0.00000000; + pPlayer->field_214 = 0.00000000; + pPlayer->field_218 = 0; + pPlayer->step_in_view_watch_animation = 0; + pPlayer->pause_animation_counter = 0.00000000; + pPlayer->pausing_flag = 0; + pPlayer->field_3B4 = 0; + pPlayer->field_3B6 = 0; + pPlayer->field_29C0 = 15.00000000; + *(undefined2 *)&pPlayer->field_2A04 = 0xffff; + pPlayer->field_2A08 = 0.00000000; + pPlayer->field_2A0C = 0.00000000; + pPlayer->field_2A6C = 0; + pPlayer->field_2A70 = 0; + return; +} + + + +void proc_7F0798B8(void) + +{ + int iVar1; + s32 sVar2; + + *(float *)&pPlayer->field_29BC = + pPlayersPerm->player_perspective_height * 185.00000000 * 1.00000000 - 10.00000000; + pPlayer->field_29F8 = 0; + iVar1 = getMissiontime(); + pPlayer->field_29F4 = iVar1; + pPlayer->healthdisplaytime = 0; + add_item_to_inventory(ITEM_FIST); + sVar2 = get_num_players(); + if (1 < sVar2) { + draw_item_in_hand_has_more_ammo(HAND_LEFT,(ITEM_IDS)flt_8007A0A4); + draw_item_in_hand_has_more_ammo(HAND_RIGHT,(ITEM_IDS)PTR_800799e0); + if (pPlayer->ptr_char_objectinstance == 0) { + solo_char_load(); + } + } + return; +} + + + +void proc_7F079988(int param_1) + +{ + *(float *)&pPlayer->field_1274 = (float)param_1 * 75.00000000; + return; +} + + + +void change_crouch_position(int position) + +{ + pPlayer->crouchposition = pPlayer->crouchposition + position; + if (pPlayer->crouchposition < 0) { + pPlayer->crouchposition = 0; + return; + } + if (2 < pPlayer->crouchposition) { + pPlayer->crouchposition = 2; + } + return; +} + + + +int proc_7F0799F0(void) + +{ + if (pPlayer->crouchposition < pPlayer->field_29FC) { + return pPlayer->crouchposition; + } + return pPlayer->field_29FC; +} + + + +int proc_7F079A1C(int param_1) + +{ + int iVar1; + int iVar2; + + iVar1 = ptr_BONDdata_p1[param_1]->crouchposition; + iVar2 = ptr_BONDdata_p1[param_1]->field_29FC; + if (iVar1 < iVar2) { + return iVar1; + } + return iVar2; +} + + + +void proc_7F079A50(int param_1) + +{ + pPlayer->unknown = param_1; + return; +} + + + +void proc_7F079A60(float *param_1,float *param_2,float *param_3,int param_4,float *param_5) + +{ + longlong lVar1; + f32 fVar2; + float in_f12; + float extraout_f12; + float in_f14; + float extraout_f14; + int iStack8; + int iStack4; + + if ((((((*param_1 != (float)pPlayer->xpos) || (param_1[1] != (float)pPlayer->ypos)) || + (param_1[2] != (float)pPlayer->zpos)) || + ((*param_2 != (float)pPlayer->xpos2 || (param_2[1] != (float)pPlayer->ypos2)))) || + ((param_2[2] != (float)pPlayer->zpos2 || + ((*param_3 != (float)pPlayer->xoffset || (param_3[1] != (float)pPlayer->yoffset)))))) || + ((param_3[2] != (float)pPlayer->zoffset || (pPlayer->room_pointer == 0)))) { + lVar1 = (longlong)(int)param_5; + iStack4 = param_4; + proc_7F0B0BE4(&iStack4,in_f12,in_f14,*param_5,param_5[2]); + if (lVar1 == 0) { + lVar1 = (longlong)(int)pPlayer; + if (pPlayer->room_pointer == 0) { + pPlayer->room_pointer = iStack4; + } + else { + iStack8 = pPlayer->room_pointer; + proc_7F0B0BE4(&iStack8,extraout_f12,extraout_f14,(float)pPlayer->xpos, + (float)pPlayer->zpos); + if (lVar1 == 0) { + pPlayer->room_pointer = iStack4; + } + else { + pPlayer->room_pointer = iStack8; + } + } + } + else { + proc_7F0B0518(iStack4,extraout_f12,extraout_f14); + pPlayer->room_pointer = iStack4; + } + *(float *)&pPlayer->xpos = *param_1; + *(float *)&pPlayer->ypos = param_1[1]; + *(float *)&pPlayer->zpos = param_1[2]; + *(float *)&pPlayer->xpos2 = *param_2; + *(float *)&pPlayer->ypos2 = param_2[1]; + *(float *)&pPlayer->zpos2 = param_2[2]; + *(float *)&pPlayer->xoffset = *param_3; + *(float *)&pPlayer->yoffset = param_3[1]; + *(float *)&pPlayer->zoffset = param_3[2]; + pPlayer->xpos3 = pPlayer->xpos; + pPlayer->zpos3 = pPlayer->zpos; + fVar2 = (f32)proc_7F0B2970(); + pPlayer->ypos3 = fVar2; + } + return; +} + + + +void solo_char_load(void) + +{ + PitemZ_header *pPVar1; + s32 sVar2; + u8 selectedbond; + u32 player; + HEADS HVar6; + BODIES BVar7; + int iVar3; + uint uVar4; + s32 sVar5; + int iVar8; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + object_header *header; + dword *pdVar9; + dword *pdVar10; + dword *pdVar11; + dword *pdVar12; + float extraout_f12; + f32 scale; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float fVar13; + float extraout_f12_03; + uint uStack224; + int iStack216; + int iStack212; + undefined *puStack208; + dword adStack196 [34]; + undefined4 *puStack60; + int iStack56; + int iStack52; + uint uStack48; + int iStack44; + int iStack40; + object_header *poStack36; + object_header *poStack32; + object_header *poStack28; + int aiStack24 [4]; + undefined2 *puStack8; + float fStack4; + + fStack4 = get_curplay_horizontal_rotation_in_degrees(); + iVar3 = *(int *)(pPlayer->position_data_pointer + 4); + if (iVar3 == 0) { + iStack40 = getPlayerWeaponBufferForHand(HAND_RIGHT); + iStack44 = getPlayerWeaponBufferForHand(HAND_LEFT); + uStack48 = 0; + iStack52 = getSizeBufferWeaponInHand(HAND_RIGHT); + iStack56 = getSizeBufferWeaponInHand(HAND_LEFT); + pdVar11 = dummy_08_pp7_obj; + pdVar9 = adStack196; + do { + pdVar12 = pdVar11 + 3; + pdVar10 = pdVar9 + 3; + *pdVar9 = *pdVar11; + pdVar9[1] = pdVar11[1]; + pdVar9[2] = pdVar11[2]; + pdVar11 = pdVar12; + pdVar9 = pdVar10; + } while (pdVar12 != &dword_80036630); + *pdVar10 = dword_80036630; + puStack208 = (undefined *)return_ammo_in_hand(HAND_RIGHT); + iStack212 = 0x17; + iStack216 = 0x4b; + uStack224 = 0; + proc_7F07DE64((int)pPlayer); + sVar2 = get_num_players(); + if (sVar2 == 1) { + selectedbond = getSelectedFolderBond(); + if (true) { + switch(pPlayer->cuff_value) { + case CUFF_TUX: + iStack212 = 5; + break; + case CUFF_JUNGLE: + iStack212 = 0x18; + break; + case CUFF_BOILER: + iStack212 = 0x16; + break; + case CUFF_SNOW: + iStack212 = 0x19; + break; + case CUFF_WHITE: + iStack212 = 5; + break; + case CUFF_TUX6: + iStack212 = 5; + break; + case CUFF_TUX7: + iStack212 = 5; + break; + case CUFF_TUX8: + if (selectedbond == '\0') { + iStack212 = 5; + } + else { + if (selectedbond == '\x01') { + iStack212 = 5; + } + else { + if (selectedbond == '\x02') { + iStack212 = 5; + } + else { + if (selectedbond == '\x03') { + iStack212 = 5; + } + } + } + } + } + } + if (selectedbond == '\0') { + if (true) { + switch(pPlayer->cuff_value) { + case CUFF_TUX: + iStack216 = 0x4e; + break; + case CUFF_JUNGLE: + iStack216 = 0x4c; + break; + case CUFF_BOILER: + iStack216 = 0x4a; + break; + case CUFF_WHITE: + iStack216 = 0x4e; + break; + case CUFF_TUX6: + iStack216 = 0x4e; + break; + case CUFF_TUX7: + iStack216 = 0x4e; + break; + case CUFF_TUX8: + iStack216 = 0x4e; + } + } + } + else { + if (selectedbond == '\x01') { + iStack216 = 0x4e; + } + else { + if (selectedbond == '\x02') { + iStack216 = 0x4e; + } + else { + if (selectedbond == '\x03') { + iStack216 = 0x4e; + } + } + } + } + } + else { + player = get_cur_playernum(); + HVar6 = get_player_mp_char_head(player); + iStack216 = (int)(short)HVar6; + player = get_cur_playernum(); + BVar7 = get_player_mp_char_body(player); + iStack212 = (int)(short)BVar7; + } + if (cameramode == SWIRL_CAM) { + puStack208 = PTR_800799e0; + } + sVar2 = get_num_players(); + if (sVar2 == 1) { + remove_item_in_hand(HAND_LEFT); + remove_item_in_hand(HAND_RIGHT); + proc_7F0CBAF4(aiStack24,iStack44,iStack56); + poStack28 = (object_header *)get_ptr_itemheader_in_hand(HAND_RIGHT); + header = c_item_entries[iStack212].header; + poStack28->offset_obj_table = header->offset_obj_table; + poStack28->ptr_archetype = header->ptr_archetype; + poStack28->offset_obj_offset_block = header->offset_obj_offset_block; + *(undefined4 *)&poStack28->num_offset_entries = + *(undefined4 *)&header->num_offset_entries; + poStack28->anonymous_4 = header->anonymous_4; + *(undefined4 *)&poStack28->num_table_entries = *(undefined4 *)&header->num_table_entries + ; + poStack28->offset_img_declaration = header->offset_img_declaration; + poStack28->is_loaded_in_mem = header->is_loaded_in_mem; + load_object_fill_header + (poStack28,(u8 *)c_item_entries[iStack212].filename,iStack40,iStack52, + (int)aiStack24); + iVar3 = get_pc_buffer_remaining_value((byte *)c_item_entries[iStack212].filename); + header = c_item_entries[iStack216].header; + uVar4 = (iVar3 + 0x3fU | 0x3f) ^ 0x3f; + poStack32 = (object_header *)(iStack40 + uVar4); + uStack48 = (uVar4 + 0x5f | 0x3f) ^ 0x3f; + poStack32->offset_obj_table = header->offset_obj_table; + poStack32->ptr_archetype = header->ptr_archetype; + poStack32->offset_obj_offset_block = header->offset_obj_offset_block; + *(undefined4 *)&poStack32->num_offset_entries = + *(undefined4 *)&header->num_offset_entries; + poStack32->anonymous_4 = header->anonymous_4; + *(undefined4 *)&poStack32->num_table_entries = *(undefined4 *)&header->num_table_entries + ; + poStack32->offset_img_declaration = header->offset_img_declaration; + poStack32->is_loaded_in_mem = header->is_loaded_in_mem; + load_object_fill_header + (poStack32,(u8 *)c_item_entries[iStack216].filename,iStack40 + uStack48, + iStack52 - uStack48,(int)aiStack24); + iVar3 = get_pc_buffer_remaining_value((byte *)c_item_entries[iStack216].filename); + uStack224 = (iVar3 + uStack48 + 0x3f | 0x3f) ^ 0x3f; + uStack48 = (uStack224 + 0xfb | 0x3f) ^ 0x3f; + uStack224 = iStack40 + uStack224; + set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack28); + set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack32); + iVar3 = (int)poStack28->num_table_entries + (int)poStack32->num_table_entries + 10; + iVar8 = iStack40 + uStack48; + uStack48 = (iVar3 * 4 + uStack48 + 0x3f | 0x3f) ^ 0x3f; + proc_7F075FAC(uStack224,(ushort **)poStack28,iVar8); + *(undefined2 *)(uStack224 + 2) = (short)iVar3; + header = poStack32; + } + else { + poStack28 = c_item_entries[iStack212].header; + if (poStack28->offset_obj_table == 0) { + load_object_into_memory(poStack28,(u8 *)c_item_entries[iStack212].filename); + } + header = c_item_entries[iStack216].header; + if (header->offset_obj_table == 0) { + poStack32 = header; + load_object_into_memory(header,(u8 *)c_item_entries[iStack216].filename); + header = poStack32; + } + else { + uStack224 = 0; + } + } + uVar4 = maybe_load_models_for_guards(iStack212,iStack216,poStack28,header,0,uStack224); + pPlayer->ptr_char_objectinstance = uVar4; + set_obj_instance_controller_scale(pPlayer->ptr_char_objectinstance,scale); + init_GUARDdata_with_set_values + (pPlayer->position_data_pointer,pPlayer->ptr_char_objectinstance, + pPlayer->position_data_pointer + 8,(u32)fStack4); + *(undefined *)pPlayer->position_data_pointer = 6; + puStack8 = *(undefined2 **)(pPlayer->position_data_pointer + 4); + *(uint *)(puStack8 + 10) = *(uint *)(puStack8 + 10) | 1; + setsuboffset(pPlayer->ptr_char_objectinstance, + (xyzpoint *)(pPlayer->position_data_pointer + 8)); + setsubroty(pPlayer->ptr_char_objectinstance,extraout_f12_00,fStack4,extraout_a2_lo); + sVar2 = proc_7F09B244((ITEM_IDS)puStack208); + fVar13 = extraout_f12_01; + if (-1 < sVar2) { + sVar5 = get_num_players(); + if (sVar5 == 1) { + puStack60 = (undefined4 *)(iStack40 + uStack48); + uStack48 = (uStack48 + 199 | 0x3f) ^ 0x3f; + poStack36 = (object_header *)get_ptr_itemheader_in_hand(HAND_LEFT); + pPVar1 = PitemZ_entries[sVar2].header; + poStack36->offset_obj_table = pPVar1->microcode_entry_num; + poStack36->ptr_archetype = (object_standard *)pPVar1->anonymous_1; + poStack36->offset_obj_offset_block = *(int *)&pPVar1->anonymous_2; + *(float *)&poStack36->num_offset_entries = pPVar1->drawdistance; + poStack36->anonymous_4 = pPVar1->anonymous_4; + *(int *)&poStack36->num_table_entries = pPVar1->anonymous_5; + poStack36->offset_img_declaration = pPVar1->anonymous_6; + poStack36->is_loaded_in_mem = pPVar1->anonymous_7; + load_object_fill_header + (poStack36,(u8 *)PitemZ_entries[sVar2].filename,iStack40 + uStack48, + iStack52 - uStack48,(int)aiStack24); + get_pc_buffer_remaining_value((byte *)PitemZ_entries[sVar2].filename); + set_objuse_flag_compute_grp_nums_set_obj_loaded(poStack36); + } + else { + puStack60 = NULL; + poStack36 = NULL; + } + create_held_weapon(puStack8,sVar2,(char)puStack208,0,puStack60,(ushort **)poStack36); + fVar13 = extraout_f12_02; + } + proc_7F023A94((int)puStack8,fVar13); + } + else { + if (*(int *)(*(int *)(iVar3 + 0x1c) + 0x20) == 0) { + *(uint *)(iVar3 + 0x14) = *(uint *)(iVar3 + 0x14) | 1; + proc_7F023A94(iVar3,extraout_f12); + setsuboffset(pPlayer->ptr_char_objectinstance, + (xyzpoint *)(pPlayer->position_data_pointer + 8)); + setsubroty(pPlayer->ptr_char_objectinstance,extraout_f12_03,fStack4,extraout_a2_lo_00); + } + } + return; +} + + + +void maybe_solo_intro_camera_handler(void) + +{ + s32 sVar1; + + if ((*(int *)(pPlayer->position_data_pointer + 4) != 0) && + (sVar1 = get_num_players(), sVar1 == 1)) { + disable_sounds_attached_to_player_then_something(pPlayer->position_data_pointer); + *(undefined4 *)(pPlayer->position_data_pointer + 4) = 0; + pPlayer->ptr_char_objectinstance = 0; + camera_80036424 = 1; + proc_7F07DE9C((int)pPlayer); + } + return; +} + + + +CAMERAMODE get_camera_mode(void) + +{ + return cameramode; +} + + + +longlong proc_7F07A534(undefined4 param_1,float *param_2,char *param_3,float *param_4,u32 param_5, + float param_6) + +{ + u32 uVar2; + int iVar3; + longlong lVar1; + longlong lVar4; + int iVar5; + float fVar6; + float fVar7; + f32 extraout_f12; + f32 extraout_f12_00; + f32 extraout_f14; + f32 extraout_f14_00; + float fVar8; + float fVar9; + float fVar10; + float in_stack_00000014; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + undefined4 uStack32; + float fStack28; + u32 uStack24; + float fStack20; + float fStack16; + int iStack8; + + lVar4 = 0; + iStack8 = 0; + fVar9 = flt_80055030; + cur_player_stat_ptr = param_1; + do { + fVar10 = (float)pPlayer->collision_radius; + iVar5 = 0; + fStack16 = flt_80055034 + fVar10; + uVar2 = get_random_value(); + fVar7 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar9 = fVar7 * 0.00000000 * fVar9; + do { + if (lVar4 != 0) break; + fStack20 = fVar9 + flt_8005503C; + if (flt_80055038 <= fStack20) { + fStack20 = fStack20 - flt_80055038; + } + fStack36 = sinf(fStack20); + uStack32 = 0; + fStack28 = cosf(fStack20); + fStack48 = fStack36 * fStack16 + *param_2; + fStack44 = param_2[1]; + fStack40 = fStack28 * fStack16 + param_2[2]; + proc_7F0B1CC4(); + uStack24 = param_5; + proc_7F03D058(param_3,0); + iVar3 = proc_7F0B0E24(&uStack24,extraout_f12,extraout_f14,(f32)*param_4); + proc_7F03D058(param_3,1); + if (iVar3 == 0) { + proc_7F026298(param_4,&fStack36,&fStack48); + fStack16 = sqrtf((fStack48 - *param_4) * (fStack48 - *param_4) + + (fStack40 - param_4[2]) * (fStack40 - param_4[2])); + } + fStack16 = fStack16 - fVar10; + if (((in_stack_00000014 <= fStack16) && (fVar9 = 1.00000000, true)) && (true)) { + fVar7 = fStack16 - in_stack_00000014; + do { + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + fVar6 = fVar6 * 0.00000000 * fVar7 * fVar9 + in_stack_00000014; + PTR_800799e8 = (undefined *)(fStack36 * fVar6 + *param_2); + DAT_800799ec = param_2[1]; + uStack24 = param_5; + ptr_BONDdata = fStack28 * fVar6 + param_2[2]; + proc_7F03D058(param_3,0); + iVar3 = proc_7F0B0E24(&uStack24,extraout_f12_00,extraout_f14_00,(f32)*param_4); + proc_7F03D058(param_3,1); + if ((iVar3 != 0) && (lVar1 = proc_7F0B18B8(), lVar1 < 0)) { + fVar6 = (float)proc_7F0B2970(); + uVar2 = get_random_value(); + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + DAT_800799ec = fVar8 * 0.00000000 * (185.00000000 - fVar10) + fVar6 + fVar10 + ; + if ((-1000.00000000 < DAT_800799ec - param_2[1]) && + (DAT_800799ec - param_2[1] < 1000.00000000)) { + lVar4 = 1; + } + } + fVar9 = fVar9 - 0.25000000; + } while ((0.00000000 < fVar9) && (lVar4 == 0)); + } + iVar5 += 1; + fVar9 = fStack20; + } while (iVar5 < 0x10); + iStack8 += 1; + if ((0x80 < iStack8) || (fVar9 = flt_80055040, lVar4 != 0)) { + return lVar4; + } + } while( true ); +} + + + +void set_camera_mode(CAMERAMODE param_1) + +{ + u32 uVar2; + int iVar3; + undefined4 uVar4; + undefined uVar6; + longlong lVar1; + s32 sVar5; + undefined8 extraout_a0; + undefined8 extraout_a1; + undefined4 extraout_a2_lo; + char *pcVar7; + Player *pPVar8; + PLAYER_ID playernum; + Player *pPVar9; + Player *pPVar10; + Player *pPVar11; + float fVar12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f14; + float extraout_f14_00; + float fStack64; + int iStack60; + int iStack56; + float fStack48; + f32 fStack44; + f32 fStack40; + char *pcStack36; + float fStack16; + + enable_move_after_cinema = 0; + cameramode = param_1; + if (param_1 == INTRO_CAM) { + if (((ptr_random06cam_entry == NULL) || (uVar2 = get_recording_ramrom_flag(), uVar2 != 0)) + || (iVar3 = get_is_ramrom_flag(), iVar3 != 0)) { + set_camera_mode(SWIRL_CAM); + } + else { + dword_800364A4 = 0; + proc_7F0807B0(0,0,0,0x3f800000); + fade_to_over_seconds(60.00000000,0.00000000); + iVar3 = get_stage_num(); + load_enviroment(iVar3,1); + pPlayer->room_pointer = 0; + } + } + else { + if (param_1 == FADESWIRL_CAM) { + proc_7F0807B0(0,0,0,0); + fade_to_over_seconds(60.00000000,1.00000000); + } + else { + if (param_1 == MP_CAM) { + DAT_80079e04 = 0; + DAT_80079e08 = 0xc2b40000; + DAT_80079e0c = 0; + DAT_80079e10 = 0x42a00000; + iVar3 = get_stage_num(); + load_enviroment(iVar3,0); + } + else { + if (param_1 == SWIRL_CAM) { + dword_8003649C = 0; + proc_7F0807B0(0,0,0,0x3f800000); + fade_to_over_seconds(60.00000000,0.00000000); + iVar3 = get_stage_num(); + load_enviroment(iVar3,0); + if (((ptr_firstcommand_rotatingcam == NULL) || + (uVar2 = get_recording_ramrom_flag(), uVar2 != 0)) || + (iVar3 = get_is_ramrom_flag(), iVar3 != 0)) { + set_camera_mode(FP_CAM); + } + else { + dword_800364A4 = 0; + dword_800364A8 = 1; + set_curplayer_fade(0.00000000,1.00000000); + solo_char_load(); + fStack16 = stage_intro_anim_table[selected_stage_intro_anim].anonymous_2; + proc_7F06FCA8(pPlayer->ptr_char_objectinstance, + stage_intro_anim_table[selected_stage_intro_anim].anonymous_0 + + ptr_animation_table,0,fStack16, + stage_intro_anim_table[selected_stage_intro_anim].anonymous_1, + extraout_f14); + if (0.00000000 < fStack16) { + proc_7F06FDE8(pPlayer->ptr_char_objectinstance,fStack16); + } + iVar3 = *(int *)(pPlayer->position_data_pointer + 4); + *(undefined *)(iVar3 + 7) = 0x17; + *(undefined *)(iVar3 + 8) = 0; + pPlayer->room_pointer = 0; + } + } + else { + if (param_1 == FP_CAM) { + iVar3 = get_stage_num(); + if (iVar3 == 0x36) { + proc_7F0807B0(0,0,0,0x3f800000); + fade_to_over_seconds(0.00000000,1.00000000); + } + else { + if (dword_8003649C != 0) { + proc_7F0807B0(0,0,0,0x3f800000); + fade_to_over_seconds(60.00000000,0.00000000); + } + } + sVar5 = get_num_players(); + if (1 < sVar5) { + iVar3 = get_stage_num(); + load_enviroment(iVar3,0); + } + if (pPlayer->pause_animation_state == 0) { + draw_item_in_hand_has_more_ammo(HAND_LEFT,(ITEM_IDS)flt_8007A0A4); + draw_item_in_hand_has_more_ammo(HAND_RIGHT,(ITEM_IDS)PTR_800799e0); + } + stop_time_flag = 0; + } + else { + if (param_1 == UNK5_CAM) { + dword_800364A4 = 0; + dword_800364A8 = 1; + proc_7F0807B0(0,0,0,0x3f800000); + fade_to_over_seconds(60.00000000,0.00000000); + if ((dword_8003648C == 0) || + (fVar12 = extraout_f12, ptr_playerstank == NULL)) { + in_tank_flag = FALSE; + pPVar8 = (Player *)&pPlayer->current_room_ypos; + pPVar11 = pPlayer; + pPVar9 = pPlayer; + do { + pPVar10 = (Player *)&pPVar9->zpos; + pPVar11->ptr_tile_printmanpos = pPVar9->field_434; + *(int *)&pPVar11->positionx = pPVar9->field_438; + pPVar11->positiony = pPVar9->field_43C; + pPVar11 = (Player *)&pPVar11->zpos; + pPVar9 = pPVar10; + } while (pPVar10 != pPVar8); + *(int *)&pPlayer->vv_theta = pPlayer->field_414; + *(int *)&pPlayer->vv_verta = pPlayer->field_418; + *(f32 *)(pPlayer->position_data_pointer + 8) = pPlayer->positionx; + *(int *)(pPlayer->position_data_pointer + 0xc) = pPlayer->positiony; + *(int *)(pPlayer->position_data_pointer + 0x10) = pPlayer->positionz + ; + *(int *)(pPlayer->position_data_pointer + 0x14) = + pPlayer->ptr_tile_printmanpos; + proc_7F081790(); + proc_7F080B34(0.00000000,0.00000000,extraout_a0,extraout_a1, + 0.00000000); + proc_7F081478(); + set_curplayer_fade(0.00000000,1.00000000); + solo_char_load(); + uVar4 = proc_7F06F5AC((int)&pPlayer->field_598); + uVar6 = proc_7F06F5B4((int)&pPlayer->field_598); + proc_7F06FCA8(pPlayer->ptr_char_objectinstance,uVar4,uVar6, + extraout_f12_00,0,extraout_f14_00); + iVar3 = *(int *)(pPlayer->position_data_pointer + 4); + *(undefined *)(iVar3 + 7) = 0x18; + *(undefined *)(iVar3 + 8) = 0; + *(uint *)(iVar3 + 0x14) = *(uint *)(iVar3 + 0x14) | 1; + setsuboffset(pPlayer->ptr_char_objectinstance, + (xyzpoint *)(pPlayer->position_data_pointer + 8)); + fVar12 = get_curplay_horizontal_rotation_in_degrees(); + setsubroty(pPlayer->ptr_char_objectinstance,extraout_f12_01,fVar12, + extraout_a2_lo); + fVar12 = extraout_f12_02; + } + if ((dword_8003648C == 0) || (ptr_playerstank == NULL)) { + pcStack36 = (char *)pPlayer->position_data_pointer; + fStack48 = pPlayer->field_3C4; + fStack44 = pPlayer->field_3C8; + fStack40 = pPlayer->field_3CC; + fStack64 = pPlayer->positionx; + iStack60 = pPlayer->positiony; + iStack56 = pPlayer->positionz; + iVar3 = pPlayer->ptr_tile_printmanpos; + pcVar7 = (char *)pPlayer->position_data_pointer; + } + else { + pcStack36 = ptr_playerstank; + fStack48 = *(f32 *)(ptr_playerstank + 8); + fStack44 = *(f32 *)(ptr_playerstank + 0xc); + fStack40 = *(f32 *)(ptr_playerstank + 0x10); + fStack64 = *(f32 *)(ptr_playerstank + 8); + iStack60 = *(int *)(ptr_playerstank + 0xc); + iStack56 = *(int *)(ptr_playerstank + 0x10); + iVar3 = *(int *)(ptr_playerstank + 0x14); + pcVar7 = ptr_playerstank; + } + lVar1 = proc_7F07A534(pcStack36,&fStack48,pcVar7,&fStack64,iVar3,fVar12) + ; + if (lVar1 == 0) { + run_title_stage(); + } + else { + if (dword_80036510 == 0) { + musicTrack1Play(M_INTROSWOOSH); + music_related_39(0.50000000); + } + if ((dword_8003648C != 0) && (ptr_playerstank != NULL)) { + uVar2 = get_cur_playernum(); + proc_7F09C250((int)ptr_playerstank, + (float *)(ptr_playerstank + 8), + *(int *)(ptr_playerstank + 0x14),0xd,0,(char)uVar2 + ,ptr_playerstank + 0x2c,0); + } + } + } + else { + if (param_1 == UNK6_CAM) { + proc_7F0807B0(0,0,0,0); + fade_to_over_seconds(60.00000000,1.00000000); + } + else { + if (param_1 == POSEND_CAM) { + solo_char_load(); + pPlayer->room_pointer = 0; + } + else { + if (param_1 == FP_NOINPUT_CAM) { + maybe_solo_intro_camera_handler(); + cameramode = FP_CAM; + } + else { + if (param_1 == UNK10_CAM) { + playernum = PLAYER1; + sVar5 = get_num_players(); + if (0 < sVar5) { + do { + set_cur_player(playernum); + proc_7F0807B0(0,0,0,0); + fade_to_over_seconds(60.00000000,1.00000000); + playernum += PLAYER2; + sVar5 = get_num_players(); + } while ((int)playernum < sVar5); + } + set_cur_player(PLAYER1); + } + } + } + } + } + } + } + } + } + } + return; +} + + + +void proc_7F07B1A4(void) + +{ + CAMERAMODE CVar1; + + CVar1 = cameramode; + cameramode = 0; + enable_move_after_cinema = 0; + if (CVar1 == INTRO_CAM) { + set_camera_mode(FADESWIRL_CAM); + } + else { + if (CVar1 == FADESWIRL_CAM) { + reset_intro_camera_message_dialogs_for_BONDdata(); + set_camera_mode(SWIRL_CAM); + } + else { + if (CVar1 != MP_CAM) { + if (CVar1 == SWIRL_CAM) { + maybe_solo_intro_camera_handler(); + set_curplayer_fade(0.00000000,1.00000000); + set_camera_mode(FP_CAM); + } + else { + if (CVar1 != FP_CAM) { + if (CVar1 == UNK5_CAM) { + set_camera_mode(UNK6_CAM); + } + else { + if ((CVar1 == UNK6_CAM) && (dword_80036510 += 1, dword_80036510 < 3)) { + set_camera_mode(UNK5_CAM); + } + } + } + } + } + } + } + return; +} + + + +void proc_7F07B2A0(int param_1,float param_2,float *param_3,float *param_4) + +{ + undefined *puVar1; + undefined *puVar2; + undefined *puVar3; + undefined *puVar4; + int iVar5; + f32 *in_a3_lo; + undefined *puVar6; + uint uVar7; + float in_f14; + undefined auStack60 [4]; + float *local_38; + float local_30 [3]; + float afStack36 [3]; + float afStack24 [3]; + float afStack12 [3]; + + local_38 = NULL; + puVar4 = auStack60; + iVar5 = -1; + puVar6 = ptr_firstcommand_rotatingcam + param_1 * 0x20; + if (0.00000000 < *(float *)(ptr_firstcommand_rotatingcam + param_1 * 0x20 + 0x18)) { + local_38 = (float *)((float)param_3 / + *(float *)(ptr_firstcommand_rotatingcam + param_1 * 0x20 + 0x18)); + } + do { + puVar3 = puVar6 + iVar5 * 0x20; + if (iVar5 < 0) { + puVar1 = puVar3; + if (puVar3 < ptr_firstcommand_rotatingcam) { + puVar1 = ptr_firstcommand_rotatingcam; + } +LAB_7f07b354: + uVar7 = *(uint *)(puVar1 + 4); + puVar2 = puVar1; + } + else { + puVar2 = puVar6; + if (puVar6 < puVar3) { + uVar7 = *(uint *)(puVar6 + 0x24); + while ((uVar7 & 1) == 0) { + puVar1 = puVar2 + 0x20; + if (puVar3 <= puVar1) goto LAB_7f07b354; + uVar7 = *(uint *)(puVar2 + 0x44); + puVar2 = puVar1; + } + uVar7 = *(uint *)(puVar2 + 4); + } + else { + uVar7 = *(uint *)(puVar6 + 4); + } + } + iVar5 += 1; + if ((uVar7 & 2) == 0) { + *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(puVar2 + 8); + *(undefined4 *)(puVar4 + 0x10) = *(undefined4 *)(puVar2 + 0xc); + *(undefined4 *)(puVar4 + 0x14) = *(undefined4 *)(puVar2 + 0x10); + } + else { + *(float *)(puVar4 + 0xc) = + (float)pPlayer->field_4A0 * *(float *)(puVar2 + 8) + + *(float *)(puVar2 + 0x10) * (float)pPlayer->field_498; + *(undefined4 *)(puVar4 + 0x10) = *(undefined4 *)(puVar2 + 0xc); + *(float *)(puVar4 + 0x14) = + *(float *)(puVar2 + 0x10) * (float)pPlayer->field_4A0 - + (float)pPlayer->field_498 * *(float *)(puVar2 + 8); + } + puVar4 = puVar4 + 0xc; + if (iVar5 == 3) { + proc_7F05B024(local_30,afStack36,afStack24,afStack12,(float)param_3,in_f14,local_38); + *param_4 = *param_4 + (float)pPlayer->field_3C4; + param_4[1] = param_4[1] + (float)pPlayer->field_3C8; + param_4[2] = param_4[2] + (float)pPlayer->field_3CC; + *in_a3_lo = pPlayer->field_3C4; + in_a3_lo[1] = pPlayer->field_3C8; + in_a3_lo[2] = pPlayer->field_3CC; + puVar4 = ptr_firstcommand_rotatingcam + param_1 * 0x20; + if ((*(uint *)(puVar4 + 4) & 4) == 0) { + if ((*(uint *)(puVar4 + 0x24) & 4) == 0) { + local_38 = (float *)0x3f800000; + } + else { + local_38 = (float *)(1.00000000 - (float)local_38); + } + } + else { + if ((*(uint *)(puVar4 + 0x24) & 4) != 0) { + local_38 = NULL; + } + } + *(float *)in_a3_lo = + (float)*in_a3_lo + (float)pPlayer->field_4C0 * 40.00000000 * (float)local_38; + *(float *)(in_a3_lo + 1) = + (float)in_a3_lo[1] + (float)pPlayer->field_4C4 * 40.00000000 * (float)local_38; + *(float *)(in_a3_lo + 2) = + (float)in_a3_lo[2] + (float)pPlayer->field_4C8 * 40.00000000 * (float)local_38; + return; + } + } while( true ); +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F07B56C(void) + +{ + int iVar2; + u32 uVar3; + undefined *puVar4; + ulonglong uVar1; + f32 *pfVar5; + undefined4 in_a0_lo; + undefined4 in_a1_lo; + float *in_a2_lo; + f32 *in_a3_lo; + uint uVar6; + float in_f0; + float fVar7; + float __x; + float *pfVar8; + float *pfVar9; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + ushort uStackX2; + ushort uStackX6; + f32 *in_stack_00000014; + f32 *in_stack_00000018; + + uStackX6 = (ushort)in_a1_lo; + uStackX2 = (ushort)in_a0_lo; + if ((cameramode == INTRO_CAM) || (cameramode == FADESWIRL_CAM)) { + if (cameramode == INTRO_CAM) { + if (((float)dword_800364A4 < 120.00000000) && + (120.00000000 <= (float)dword_800364A4 + global_timer_delta)) { + proc_7F08A3B4(ptrSecondFontTableLarge,ptrFirstFontTableLarge); + display_string_in_lower_left_corner(*(char **)(ptr_random06cam_entry + 0x1c)); + } + pfVar9 = (float *)((float)dword_800364A4 + global_timer_delta); + if (*(char **)(ptr_random06cam_entry + 0x20) == NULL) { + if (300.00000000 < (float)dword_800364A4) { + enable_move_after_cinema = 1; + } + } + else { + if (((float)dword_800364A4 < 300.00000000) && (300.00000000 <= (float)pfVar9)) { + display_string_in_lower_left_corner(*(char **)(ptr_random06cam_entry + 0x20)); + pfVar9 = (float *)((float)dword_800364A4 + global_timer_delta); + } + if (480.00000000 < (float)dword_800364A4) { + enable_move_after_cinema = 1; + } + } + dword_800364A4 = pfVar9; + iVar2 = get_controls_locked_flag(); + if ((iVar2 == 0) && ((uStackX2 & ~uStackX6 & 0xf030) != 0)) { + enable_move_after_cinema = 1; + } + } + else { + if (pPlayer->timer_for_fade < 0.00000000) { + enable_move_after_cinema = 1; + } + } + *in_a2_lo = *(float *)(ptr_random06cam_entry + 4); + in_a2_lo[1] = *(float *)(ptr_random06cam_entry + 8); + in_a2_lo[2] = *(float *)(ptr_random06cam_entry + 0xc); + fVar7 = cosf(*(float *)(ptr_random06cam_entry + 0x14)); + __x = sinf(*(float *)(ptr_random06cam_entry + 0x10)); + *(float *)in_a3_lo = __x * fVar7 + *in_a2_lo; + fVar7 = sinf(*(float *)(ptr_random06cam_entry + 0x14)); + *(float *)(in_a3_lo + 1) = fVar7 + in_a2_lo[1]; + fVar7 = cosf(*(float *)(ptr_random06cam_entry + 0x14)); + __x = cosf(*(float *)(ptr_random06cam_entry + 0x10)); + *(float *)(in_a3_lo + 2) = in_a2_lo[2] - __x * fVar7; + pfVar5 = (f32 *)(ptr_0xxxpresets + *(int *)(ptr_random06cam_entry + 0x18) * 0x2c); + *in_stack_00000014 = pfVar5[10]; + *in_stack_00000018 = *pfVar5; + in_stack_00000018[1] = pfVar5[1]; + in_stack_00000018[2] = pfVar5[2]; + } + else { + if (cameramode == MP_CAM) { + uVar3 = get_cur_playernum(); + iVar2 = proc_7F09B4D8(uVar3); + if ((iVar2 == 0) && (iVar2 = 0, 0 < clock_timer)) { + do { + iVar2 += 1; + if (DAT_80079e08 < flt_80055044) { + if (DAT_80079e08 < -20.00000000) { + DAT_80079e04 = DAT_80079e04 + flt_80055048; + } + if (110.00000000 < DAT_80079e08) { + DAT_80079e04 = DAT_80079e04 - flt_80055048; + } + DAT_80079e08 = DAT_80079e08 + DAT_80079e04; + } + else { + DAT_80079e08 = 180.00000000; + } + if (80.00000000 < DAT_80079e08) { + if (60.00000000 < DAT_80079e10) { + DAT_80079e0c = DAT_80079e0c - flt_80055048; + } + else { + DAT_80079e0c = DAT_80079e0c + flt_8005504C; + } + DAT_80079e10 = DAT_80079e10 + DAT_80079e0c; + if (DAT_80079e10 < 1.00000000) { + DAT_80079e10 = 1.00000000; + } + } + } while (iVar2 < clock_timer); + } + __x = ((DAT_80079e08 - pPlayer->vv_theta) * flt_80055050) / 180.00000000; + fVar7 = sinf(__x); + *in_a2_lo = fVar7 * DAT_80079e10 + (float)pPlayer->field_4B4; + in_a2_lo[1] = (float)pPlayer->field_4B8 + DAT_80079e10 * flt_80055054; + fVar7 = cosf(__x); + in_a2_lo[2] = fVar7 * DAT_80079e10 + (float)pPlayer->field_4BC; + *(int *)in_a3_lo = pPlayer->field_4B4; + *(int *)(in_a3_lo + 1) = pPlayer->field_4B8; + *(int *)(in_a3_lo + 2) = pPlayer->field_4BC; + *in_stack_00000014 = *(f32 *)(pPlayer->position_data_pointer + 0x14); + *(int *)in_stack_00000018 = pPlayer->field_4B4; + *(float *)(in_stack_00000018 + 1) = + (float)pPlayer->field_4B8 + DAT_80079e10 * flt_80055058; + *(int *)(in_stack_00000018 + 2) = pPlayer->field_4BC; + if (DAT_80079e10 < 5.00000000) { + enable_move_after_cinema = 1; + } + } + else { + if (cameramode == SWIRL_CAM) { + dword_800364A4 = (float *)((float)dword_800364A4 + global_timer_delta); + puVar4 = ptr_firstcommand_rotatingcam + dword_800364A8 * 0x20; + pfVar8 = *(float **)(puVar4 + 0x18); + pfVar9 = pfVar8; + if ((float)pfVar8 <= (float)dword_800364A4) { + uVar6 = *(uint *)(puVar4 + 100); + while ((uVar6 & 1) == 0) { + dword_800364A4 = (float *)((float)dword_800364A4 - (float)pfVar8); + dword_800364A8 += 1; + puVar4 = ptr_firstcommand_rotatingcam + dword_800364A8 * 0x20; + pfVar8 = *(float **)(puVar4 + 0x18); + pfVar9 = pfVar8; + if ((float)dword_800364A4 < (float)pfVar8) goto LAB_7f07bbe4; + uVar6 = *(uint *)(puVar4 + 100); + } + enable_move_after_cinema = 1; + pfVar9 = *(float **)(puVar4 + 0x18); + dword_800364A4 = pfVar8; + } +LAB_7f07bbe4: + puVar4 = ptr_firstcommand_rotatingcam + (dword_800364A8 + 1) * 0x20; + uVar6 = *(uint *)(puVar4 + 0x44); + fVar7 = ((float)pfVar9 - (float)dword_800364A4) + 0.00000000; + while ((uVar6 & 1) == 0) { + uVar6 = *(uint *)(puVar4 + 100); + pfVar9 = (float *)(puVar4 + 0x18); + puVar4 = puVar4 + 0x20; + fVar7 = fVar7 + *pfVar9; + } + __x = 30.00000000; + if ((fVar7 < 30.00000000) && + (__x = 30.00000000, 30.00000000 <= fVar7 + global_timer_delta)) { + set_curplayer_fade(30.00000000,0.00000000); + __x = extraout_f12; + } + if ((dword_8003649C != 0) && + (uVar1 = check_if_fade_to_black_complete(), __x = extraout_f12_00, uVar1 != 0)) { + enable_move_after_cinema = 1; + } + if ((((60.00000000 < fVar7) && (dword_8003649C == 0)) && + (iVar2 = get_controls_locked_flag(), __x = extraout_f12_01, iVar2 == 0)) && + ((uStackX2 & ~uStackX6 & 0xf030) != 0)) { + dword_8003649C = 1; + proc_7F0807B0(0,0,0,pPlayer->tint_alpha); + uVar1 = check_if_fade_to_black_complete(); + if (uVar1 == 0) { + fade_to_over_seconds(pPlayer->field_3E0,1.00000000); + __x = extraout_f12_03; + } + else { + fade_to_over_seconds(60.00000000,1.00000000); + __x = extraout_f12_02; + } + } + proc_7F07B2A0(dword_800364A8,__x,dword_800364A4,in_a2_lo); + if (*(int *)(ptr_firstcommand_rotatingcam + dword_800364A8 * 0x20 + 0x1c) < 0) { + *(int *)in_stack_00000014 = pPlayer->ptr_tile_printmanpos; + *in_stack_00000018 = pPlayer->positionx; + *(int *)(in_stack_00000018 + 1) = pPlayer->positiony; + *(int *)(in_stack_00000018 + 2) = pPlayer->positionz; + } + else { + pfVar5 = (f32 *)(ptr_0xxxpresets + + *(int *)(ptr_firstcommand_rotatingcam + + dword_800364A8 * 0x20 + 0x1c) * 0x2c); + *in_stack_00000014 = pfVar5[10]; + *in_stack_00000018 = *pfVar5; + in_stack_00000018[1] = pfVar5[1]; + in_stack_00000018[2] = pfVar5[2]; + } + } + else { + if ((cameramode == UNK5_CAM) || (cameramode == UNK6_CAM)) { + if (cameramode == UNK5_CAM) { + dword_800364A4 = (float *)((float)dword_800364A4 + global_timer_delta); + if (pPlayer->ptr_char_objectinstance == 0) { + if (180.00000000 <= (float)dword_800364A4) { + enable_move_after_cinema = 1; + } + } + else { + proc_7F06F5BC(pPlayer->ptr_char_objectinstance); + fVar7 = proc_7F06F5C4(pPlayer->ptr_char_objectinstance); + if (fVar7 <= in_f0) { + enable_move_after_cinema = 1; + } + } + if ((((uStackX2 & ~uStackX6 & 0xf000) != 0) && (pPlayer->bonddead != 0)) && + ((pPlayer->field_424 != 0 && (pPlayer->field_428 != 0)))) { + enable_move_after_cinema = 1; + dword_80036510 = 2; + } + } + else { + if (cameramode == UNK6_CAM) { + dword_800364A4 = (float *)((float)dword_800364A4 + global_timer_delta); + if (pPlayer->timer_for_fade < 0.00000000) { + enable_move_after_cinema = 1; + } + if (((((uStackX2 & ~uStackX6 & 0xf000) != 0) && (pPlayer->bonddead != 0) + ) && (pPlayer->field_424 != 0)) && (pPlayer->field_428 != 0)) { + dword_80036510 = 2; + } + } + } + *(undefined **)in_a2_lo = PTR_800799e8; + in_a2_lo[1] = DAT_800799ec; + in_a2_lo[2] = ptr_BONDdata; + if (cur_player_stat_ptr == pPlayer->position_data_pointer) { + *in_a3_lo = pPlayer->field_3C4; + in_a3_lo[1] = pPlayer->field_3C8; + in_a3_lo[2] = pPlayer->field_3CC; + } + else { + *in_a3_lo = *(f32 *)(cur_player_stat_ptr + 8); + in_a3_lo[1] = *(f32 *)(cur_player_stat_ptr + 0xc); + in_a3_lo[2] = *(f32 *)(cur_player_stat_ptr + 0x10); + } + *(int *)in_stack_00000014 = pPlayer->ptr_tile_printmanpos; + *in_stack_00000018 = pPlayer->positionx; + *(int *)(in_stack_00000018 + 1) = pPlayer->positiony; + *(int *)(in_stack_00000018 + 2) = pPlayer->positionz; + } + else { + if (cameramode == POSEND_CAM) { + if (player_num == NULL) { + if (random_byte == 0) { + if (dword_8007A0D4 < 10000) { + pfVar5 = (f32 *)(ptr_0xxxpresets + dword_8007A0D4 * 0x2c); + } + else { + pfVar5 = (f32 *)(ptr_2xxxpresets + + dword_8007A0D4 * 0x44 + -680000); + } + *in_stack_00000014 = pfVar5[10]; + *in_stack_00000018 = *pfVar5; + in_stack_00000018[1] = pfVar5[1]; + in_stack_00000018[2] = pfVar5[2]; + cosf(dword_8007A0C0); + *in_a3_lo = *pfVar5; + *(float *)(in_a3_lo + 1) = (float)pfVar5[1] + dword_8007A0D0; + sinf(dword_8007A0C0); + in_a3_lo[2] = pfVar5[2]; + fVar7 = sinf(dword_8007A0C0); + cosf(dword_8007A0C0); + *in_a2_lo = (float)*pfVar5 + fVar7 * dword_8007A0C8; + in_a2_lo[1] = (float)pfVar5[1] + dword_8007A0D0 + dword_8007A0CC; + __x = cosf(dword_8007A0C0); + sinf(dword_8007A0C0); + fVar7 = flt_8005505C; + in_a2_lo[2] = (float)pfVar5[2] + __x * dword_8007A0C8; + dword_8007A0C0 = + dword_8007A0C0 + dword_8007A0C4 * global_timer_delta; + while (fVar7 <= dword_8007A0C0) { + dword_8007A0C0 = dword_8007A0C0 - fVar7; + } + while (dword_8007A0C0 < 0.00000000) { + dword_8007A0C0 = dword_8007A0C0 + fVar7; + } + } + else { + iVar2 = *(int *)(random_byte + 0x18); + if (iVar2 < 10000) { + pfVar5 = (f32 *)(ptr_0xxxpresets + iVar2 * 0x2c); + } + else { + pfVar5 = (f32 *)(ptr_2xxxpresets + iVar2 * 0x44 + -680000); + } + *in_a2_lo = *(float *)(random_byte + 4); + in_a2_lo[1] = *(float *)(random_byte + 8); + in_a2_lo[2] = *(float *)(random_byte + 0xc); + *in_stack_00000014 = pfVar5[10]; + *in_stack_00000018 = *pfVar5; + in_stack_00000018[1] = pfVar5[1]; + in_stack_00000018[2] = pfVar5[2]; + if (dword_8007A0D8 == 1) { + *in_a3_lo = pPlayer->field_3C4; + in_a3_lo[1] = pPlayer->field_3C8; + in_a3_lo[2] = pPlayer->field_3CC; + } + else { + fVar7 = cosf(*(float *)(random_byte + 0x14)); + __x = sinf(*(float *)(random_byte + 0x10)); + *(float *)in_a3_lo = __x * fVar7 + *in_a2_lo; + fVar7 = sinf(*(float *)(random_byte + 0x14)); + *(float *)(in_a3_lo + 1) = fVar7 + in_a2_lo[1]; + fVar7 = cosf(*(float *)(random_byte + 0x14)); + __x = cosf(*(float *)(random_byte + 0x10)); + *(float *)(in_a3_lo + 2) = in_a2_lo[2] - __x * fVar7; + } + } + } + else { + *(f32 *)in_a2_lo = *player_num; + *(f32 *)(in_a2_lo + 1) = player_num[1]; + *(f32 *)(in_a2_lo + 2) = player_num[2]; + *in_a3_lo = pPlayer->field_3C4; + in_a3_lo[1] = pPlayer->field_3C8; + in_a3_lo[2] = pPlayer->field_3CC; + *in_stack_00000014 = player_num[10]; + *in_stack_00000018 = *player_num; + in_stack_00000018[1] = player_num[1]; + in_stack_00000018[2] = player_num[2]; + } + } + } + } + } + } + return; +} + + + +void proc_7F07C540(int param_1) + +{ + pPlayer->field_42C = param_1; + return; +} + + + +void set_BONDdata_lookahead_setting(int param_1) + +{ + pPlayer->automovecentreenabled = param_1; + return; +} + + + +int get_BONDdata_lookahead_setting(void) + +{ + return pPlayer->automovecentreenabled; +} + + + +void set_BONDdata_autoaim_y(int param_1) + +{ + pPlayer->autoyaimenabled = param_1; + return; +} + + + +ulonglong get_BONDdata_autoaim_y(void) + +{ + s32 sVar2; + ulonglong uVar1; + + sVar2 = get_num_players(); + if (sVar2 == 1) { + uVar1 = SEXT48(pPlayer->autoyaimenabled); + } + else { + uVar1 = (ulonglong)(byte)pPlayersPerm->autoaim; + } + return uVar1; +} + + + +void redirect_get_BONDdata_autoaim(void) + +{ + get_BONDdata_autoaim_y(); + return; +} + + + +int get_BONDdata_is_aiming(void) + +{ + return pPlayer->insightaimmode; +} + + + +void proc_7F07C5F0(int param_1,float param_2) + +{ + int iVar1; + + if (pPlayer->autoyaimtime60 < 0) { + iVar1 = pPlayer->autoyaimtime; + } + else { + pPlayer->autoyaimtime60 = pPlayer->autoyaimtime60 - clock_timer; + iVar1 = pPlayer->autoyaimtime; + } + if (param_1 == iVar1) { + pPlayer->autoaimy = param_2; + } + else { + if (pPlayer->autoyaimtime60 < 0) { + pPlayer->autoyaimtime60 = 0x1e; + pPlayer->autoyaimtime = param_1; + pPlayer->autoaimy = param_2; + } + } + return; +} + + + +void set_BONDdata_autoaim_x(int param_1) + +{ + pPlayer->autoxaimenabled = param_1; + return; +} + + + +ulonglong get_BONDdata_autoaim_x(void) + +{ + s32 sVar2; + ulonglong uVar1; + + sVar2 = get_num_players(); + if (sVar2 == 1) { + uVar1 = SEXT48(pPlayer->autoxaimenabled); + } + else { + uVar1 = (ulonglong)(byte)pPlayersPerm->autoaim; + } + return uVar1; +} + + + +void redirect_get_BONDdata_autoaim_x(void) + +{ + get_BONDdata_autoaim_x(); + return; +} + + + +void proc_7F07C6C8(int param_1,float param_2) + +{ + int iVar1; + + if (pPlayer->autoxaimtime60 < 0) { + iVar1 = pPlayer->autoxaimtime; + } + else { + pPlayer->autoxaimtime60 = pPlayer->autoxaimtime60 - clock_timer; + iVar1 = pPlayer->autoxaimtime; + } + if (param_1 == iVar1) { + pPlayer->autoaimx = param_2; + } + else { + if (pPlayer->autoxaimtime60 < 0) { + pPlayer->autoxaimtime60 = 0x1e; + pPlayer->autoxaimtime = param_1; + pPlayer->autoaimx = param_2; + } + } + return; +} + + + +void change_player_pos_to_target(int *target_posblock,int *src_pos,int *tile) + +{ + target_posblock[1] = *src_pos; + target_posblock[2] = src_pos[1]; + target_posblock[3] = src_pos[2]; + *(int **)target_posblock = tile; + *(int **)(target_posblock + 0x14) = tile; + target_posblock[0xf] = 0; + target_posblock[0x10] = 0; + target_posblock[0x11] = 0; + target_posblock[0x13] = 0; + target_posblock[4] = 0; + target_posblock[5] = 0; + target_posblock[0xb] = target_posblock[1]; + target_posblock[7] = target_posblock[1]; + target_posblock[0xe] = 0x3f800000; + target_posblock[0x12] = 0x3f800000; + target_posblock[6] = 0x3f800000; + target_posblock[0xc] = target_posblock[2]; + target_posblock[8] = target_posblock[2]; + target_posblock[0xd] = target_posblock[3]; + target_posblock[9] = target_posblock[3]; + target_posblock[10] = 0x41f00000; + return; +} + + + +void proc_7F07C7B4(void) + +{ + int iVar1; + float afStack76 [16]; + float *local_c; + float *local_8; + + if ((longlong)ptr_playerstank != 0) { + iVar1 = *(int *)(*(int *)(*(int *)(*(int *)(ptr_playerstank + 4) + 0x14) + 8) + 8); + local_8 = *(float **)(*(int *)(iVar1 + 8) + 4); + local_c = *(float **)(*(int *)(iVar1 + 4) + 4); + proc_7F0585FC(flt_80055060 - dword_80036474,(longlong)ptr_playerstank,afStack76); + DAT_800799a8 = *local_8; + DAT_800799ac = local_8[1]; + dword_8007A070 = local_8[2]; + proc_7F0583D8(afStack76,(float *)&DAT_800799a8); + DAT_800799a8 = DAT_800799a8 + *local_c; + DAT_800799ac = DAT_800799ac + local_c[1]; + dword_8007A070 = dword_8007A070 + local_c[2]; + } + return; +} + + + +void proc_7F07C888(float *param_1,float *param_2,float param_3) + +{ + int iVar1; + int iVar2; + float in_a2_lo; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + + iVar1 = *(int *)(ptr_playerstank + 4); + iVar2 = proc_7F040078(iVar1); + fVar7 = *(float *)(iVar2 + 4) - DAT_800799a8; + fVar9 = *(float *)(iVar2 + 8) - DAT_800799a8; + fVar8 = *(float *)(iVar2 + 0x14) - dword_8007A070; + fVar10 = *(float *)(iVar2 + 0x18) - dword_8007A070; + fVar3 = cosf(in_a2_lo); + fVar3 = fVar3 * *(float *)(*(int *)(iVar1 + 0x14) + 0x14); + fVar4 = sinf(in_a2_lo); + fVar4 = fVar4 * *(float *)(*(int *)(iVar1 + 0x14) + 0x14); + fVar5 = -fVar8 * fVar4; + fVar11 = fVar7 * fVar3; + *param_1 = *param_2 + fVar5 + fVar11; + fVar8 = fVar8 * fVar3; + fVar7 = fVar7 * fVar4; + param_1[1] = param_2[2] + fVar8 + fVar7; + fVar6 = fVar9 * fVar3; + param_1[2] = *param_2 + fVar5 + fVar6; + fVar9 = fVar9 * fVar4; + param_1[3] = param_2[2] + fVar8 + fVar9; + fVar4 = -fVar10 * fVar4; + param_1[4] = *param_2 + fVar4 + fVar6; + fVar10 = fVar10 * fVar3; + param_1[5] = param_2[2] + fVar10 + fVar9; + param_1[6] = *param_2 + fVar4 + fVar11; + param_1[7] = param_2[2] + fVar10 + fVar7; + return; +} + + + +longlong proc_7F07CA2C(undefined8 param_1,f32 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 *param_8) + +{ + int iVar1; + f32 in_f12; + f32 in_f14; + + iVar1 = proc_7F0B0E24(param_1._4_4_,in_f12,in_f14,param_2); + if (((longlong)iVar1 == 0) && (param_7 != NULL)) { + *(f32 *)param_7 = param_2; + param_7[1] = 0; + param_7[2] = param_3; + param_8[1] = 0; + *param_8 = param_4; + param_8[2] = param_5; + } + return (longlong)iVar1; +} + + + +undefined4 +proc_7F07CAC8(float *param_1,undefined4 param_2,float param_3,undefined4 *param_4, + undefined4 *param_5) + +{ + int iVar1; + float *pfVar2; + float *pfVar3; + float *pfVar4; + longlong lVar5; + float fVar6; + undefined4 *in_stack_00000010; + float afStack140 [16]; + float fStack76; + undefined4 uStack72; + float fStack68; + int iStack52; + undefined4 uStack44; + float fStack40; + undefined4 uStack36; + undefined4 uStack32; + undefined4 uStack28; + undefined4 uStack24; + undefined4 uStack20; + undefined4 uStack16; + undefined4 uStack12; + undefined4 uStack4; + + uStack44 = 0; + uStack4 = param_2; + proc_7F07C888(&fStack40,param_1,param_3); + if (ptr_playerstank != NULL) { + proc_7F03D058(ptr_playerstank,0); + } + lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,*param_1,param_1[2],fStack40,uStack36,0x213, + param_5,in_stack_00000010); + if (lVar5 != 0) { + lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,fStack40,uStack36,uStack32,uStack28,0x213, + param_5,in_stack_00000010); + if (lVar5 != 0) { + lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,uStack32,uStack28,uStack24,uStack20,0x213, + param_5,in_stack_00000010); + if (lVar5 != 0) { + lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,uStack24,uStack20,uStack16,uStack12, + 0x213,param_5,in_stack_00000010); + if ((lVar5 != 0) && + (lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,uStack16,uStack12,fStack40, + uStack36,0x213,param_5,in_stack_00000010), lVar5 != 0)) { + uStack44 = 1; + if ((longlong)(int)ptr_playerstank != 0) { + iStack52 = *(int *)(*(int *)(ptr_playerstank + 4) + 0x14); + iVar1 = *(int *)(*(int *)(iStack52 + 8) + 8); + pfVar2 = *(float **)(*(int *)(iVar1 + 0xc) + 4); + pfVar3 = *(float **)(*(int *)(iVar1 + 0x10) + 4); + pfVar4 = *(float **)(*(int *)(iVar1 + 8) + 4); + uStack72 = 0; + fStack76 = (*pfVar3 + *pfVar2) - *pfVar4; + fVar6 = (float)param_4 + dword_80036474; + fStack68 = (pfVar3[2] + pfVar2[2]) - pfVar4[2]; + if (flt_80055064 <= fVar6) { + fVar6 = fVar6 - flt_80055064; + } + if (fVar6 < 0.00000000) { + fVar6 = fVar6 + flt_80055064; + } + proc_7F0585FC(flt_80055064 - fVar6,(longlong)(int)ptr_playerstank,afStack140 + ); + proc_7F0583D8(afStack140,&fStack76); + fStack76 = fStack76 * *(float *)(iStack52 + 0x14) + *param_1; + fStack68 = fStack68 * *(float *)(iStack52 + 0x14) + param_1[2]; + uStack4 = param_2; + lVar5 = proc_7F07CA2C((longlong)(int)&uStack4,*param_1,param_1[2],fStack76, + fStack68,0x213,param_5,in_stack_00000010); + if (lVar5 == 0) { + uStack44 = 0; + } + } + } + } + } + } + if (ptr_playerstank != NULL) { + proc_7F03D058(ptr_playerstank,1); + } + return uStack44; +} + + + +void proc_7F07CDA8(float *param_1,undefined4 param_2,float param_3) + +{ + float in_a2_lo; + + proc_7F07CAC8(param_1,param_2,in_a2_lo,(undefined4 *)in_a2_lo,NULL); + return; +} + + + +undefined8 related_printmanpos(float *param_1,float param_2,undefined4 *param_3) + +{ + longlong lVar1; + u32 *in_a2_lo; + float extraout_f12; + f32 in_f14; + u32 uStack4; + + uStack4 = pPlayer->ptr_tile_printmanpos; + lVar1._4_4_ = proc_7F0B0E24(&uStack4,(f32)param_2,in_f14,pPlayer->positionx); + lVar1 = (longlong)lVar1._4_4_; + if ((lVar1 != 0) && (proc_7F07CDA8(param_1,uStack4,extraout_f12), lVar1 != 0)) { + *in_a2_lo = uStack4; + return 1; + } + return 0; +} + + + +BOOL get_intank_flag(void) + +{ + return in_tank_flag; +} + + + +undefined4 get_ptr_for_players_tank(void) + +{ + if (in_tank_flag == TRUE) { + return ptr_playerstank; + } + return 0; +} + + + +void proc_7F07CEB0(float *param_1) + +{ + float fVar1; + float fVar2; + float __x; + + __x = dword_80036464 + dword_80036474; + if (flt_80055068 <= __x) { + __x = __x - flt_80055068; + } + if (__x < 0.00000000) { + __x = __x + flt_80055068; + } + fVar1 = sinf(__x); + fVar2 = cosf(dword_8003646C); + *param_1 = fVar2 * -fVar1; + fVar1 = sinf(dword_8003646C); + param_1[1] = fVar1; + __x = cosf(__x); + fVar1 = cosf(dword_8003646C); + param_1[2] = fVar1 * __x; + return; +} + + + +undefined4 proc_7F07CF80(void) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +undefined4 proc_7F07CF8C(void) + +{ + undefined8 uVar1; + int iVar3; + longlong lVar2; + float *in_a0_lo; + char *pcVar4; + u32 *in_a1_lo; + float in_f12; + float extraout_f12; + f32 extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + f32 extraout_f14_00; + float extraout_f14_01; + undefined4 auStack92 [16]; + uint local_1c; + undefined4 local_18; + undefined4 local_14; + float local_10; + undefined4 local_c; + u32 local_8; + undefined4 local_4; + + local_4 = 0; + if ((in_tank_flag == TRUE) && (DAT_800799b8 != 0)) { + uVar1 = related_printmanpos(in_a0_lo,in_f12,dword_80036464); + return (int)uVar1; + } + local_8 = pPlayer->ptr_tile_printmanpos; + if (obj_collision_flag == FALSE) { + local_c = 0; + } + else { + local_c = 0x1f; + } + proc_7F08A274(pPlayer->position_data_pointer,&local_18,&local_10,&local_14); + if (dword_8003644C != NULL) { + proc_7F03D058(dword_8003644C,0); + } + proc_7F03D058((char *)pPlayer->position_data_pointer,0); + local_1c = proc_7F0B2314((int *)&local_8,extraout_f12,extraout_f14,*in_a0_lo, + (undefined4 *)in_a0_lo[2]); + iVar3 = proc_7F0B239C(auStack92); + if (iVar3 != 0) { + pPlayer->field_29FC = 0; + } + iVar3 = proc_7F0B0E24(&local_8,extraout_f12_00,extraout_f14_00,pPlayer->positionx); + if (((iVar3 == 0) || (lVar2 = proc_7F0B18B8(), -1 < lVar2)) || + (((float)pPlayer->ducking_height_offset != -100.00000000 && (-1 < (int)local_1c)))) { +LAB_7f07d1b4: + if (ptr_playerstank != 0) { + pcVar4 = (char *)pPlayer->position_data_pointer; + goto LAB_7f07d200; + } + if (DAT_8007ba04 == NULL) { + pcVar4 = (char *)pPlayer->position_data_pointer; + goto LAB_7f07d200; + } + if (*DAT_8007ba04 != '\x01') { + pcVar4 = (char *)pPlayer->position_data_pointer; + goto LAB_7f07d200; + } + if (*(char *)(*(int *)(DAT_8007ba04 + 4) + 3) == '-') { + dword_8003644C = DAT_8007ba04; + } + } + else { + iVar3 = proc_7F0B23A4((int)auStack92); + lVar2 = (longlong)iVar3; + if ((lVar2 == 0) && + (proc_7F0B26B8((int *)&local_8,extraout_f12_01,extraout_f14_01,*in_a0_lo,in_a0_lo[2]), + -1 < lVar2)) goto LAB_7f07d1b4; + *in_a1_lo = local_8; + local_4 = 1; + } + pcVar4 = (char *)pPlayer->position_data_pointer; +LAB_7f07d200: + proc_7F03D058(pcVar4,1); + if (dword_8003644C != NULL) { + proc_7F03D058(dword_8003644C,1); + } + return local_4; +} + + + +ulonglong proc_7F07D234(undefined4 *param_1,float *param_2,float *param_3) + +{ + longlong lVar1; + int iStack4; + + proc_7F0B1CC4(); + lVar1 = proc_7F07CF8C(); + if (lVar1 == 0) { + proc_7F0B28B0(param_2,param_3); + } + else { + pPlayer->ptr_tile_printmanpos = iStack4; + pPlayer->positionx = *param_1; + pPlayer->positionz = param_1[2]; + } + return (ulonglong)(lVar1 != 0); +} + + + +undefined8 proc_7F07D2B4(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5) + +{ + longlong lVar1; + undefined8 uVar2; + float fVar3; + float afStack80 [2]; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + f32 fStack44; + int iStack40; + float fStack36; + float fStack28; + float fStack24; + float fStack16; + undefined4 uStack12; + float fStack8; + int iStack4; + + proc_7F08A274(pPlayer->position_data_pointer,afStack80,&fStack8,&uStack12); + fStack72 = *param_1 - (float)pPlayer->positionx; + fStack48 = afStack80[0]; + fStack68 = param_1[2] - (float)pPlayer->positionz; + fStack44 = pPlayer->positionx; + iStack40 = pPlayer->positionz; + fStack56 = *param_2; + fStack52 = param_2[2]; + fStack64 = *param_3; + fStack60 = param_3[2]; + fStack36 = fStack72; + fStack28 = fStack68; + fVar3 = proc_7F0B33DC(&fStack48,&fStack56,&fStack64,&fStack72); + fStack24 = fStack36 * fVar3 * 0.25000000 + (float)pPlayer->positionx; + fStack16 = fStack28 * fVar3 * 0.25000000 + (float)pPlayer->positionz; + lVar1 = proc_7F07CF8C(); + if (lVar1 == 0) { + proc_7F0B28B0(param_4,param_5); + if ((((*param_4 != *param_2) || (param_4[1] != param_2[1])) || (param_4[2] != param_2[2])) + || (((*param_5 != *param_3 || (param_5[1] != param_3[1])) || + (uVar2 = 0xffffffffffffffff, param_5[2] != param_3[2])))) { + uVar2 = 0; + } + } + else { + uVar2 = 1; + pPlayer->ptr_tile_printmanpos = iStack4; + *(float *)&pPlayer->positionx = fStack24; + *(float *)&pPlayer->positionz = fStack16; + } + return uVar2; +} + + + +undefined8 proc_7F07D4C0(float *param_1,float *param_2,float *param_3) + +{ + longlong lVar1; + undefined8 uVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + int local_2c; + + fVar4 = *param_1; + fVar7 = (float)pPlayer->positionx; + fVar6 = param_1[2]; + fVar8 = (float)pPlayer->positionz; + if ((*param_2 != *param_3) || (uVar2 = 0xffffffffffffffff, param_2[2] != param_3[2])) { + fVar5 = *param_3 - *param_2; + fVar9 = param_3[2] - param_2[2]; + fVar3 = sqrtf(fVar9 * fVar9 + fVar5 * fVar5); + fVar5 = fVar5 * (1.00000000 / fVar3); + fVar9 = fVar9 * (1.00000000 / fVar3); + fVar3 = (float)pPlayer->positionx; + fVar7 = fVar9 * (fVar6 - fVar8) + (fVar4 - fVar7) * fVar5; + fVar4 = (float)pPlayer->positionz; + lVar1 = proc_7F07CF8C(); + if (lVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 1; + pPlayer->ptr_tile_printmanpos = local_2c; + *(float *)&pPlayer->positionx = fVar5 * fVar7 + fVar3; + *(float *)&pPlayer->positionz = fVar9 * fVar7 + fVar4; + } + } + return uVar2; +} + + + +undefined8 proc_7F07D61C(float *param_1,float *param_2,float *param_3) + +{ + longlong lVar1; + float fVar2; + float fStack56; + int iStack52; + undefined4 uStack44; + float fStack40; + float fStack36; + float fStack28; + float fStack24; + float fStack16; + float fStack12; + float fStack4; + + proc_7F08A274(pPlayer->position_data_pointer,&fStack56,&fStack40,&uStack44); + fStack12 = *param_1 - (float)pPlayer->positionx; + fStack4 = param_1[2] - (float)pPlayer->positionz; + if ((param_2[2] - param_1[2]) * (param_2[2] - param_1[2]) + + (*param_2 - *param_1) * (*param_2 - *param_1) <= fStack56 * fStack56) { + if (*param_2 == (float)pPlayer->positionx) { + if (param_2[2] == (float)pPlayer->positionz) { + return 0; + } + fVar2 = param_2[2]; + } + else { + fVar2 = param_2[2]; + } + fStack24 = -(fVar2 - (float)pPlayer->positionz); + fStack16 = *param_2 - (float)pPlayer->positionx; + fVar2 = sqrtf(fStack16 * fStack16 + fStack24 * fStack24); + fStack24 = fStack24 * (1.00000000 / fVar2); + fStack16 = fStack16 * (1.00000000 / fVar2); + fVar2 = fStack16 * fStack4 + fStack12 * fStack24; + fStack24 = fStack24 * fVar2; + fStack16 = fStack16 * fVar2; + fStack36 = fStack24 + (float)pPlayer->positionx; + fStack28 = fStack16 + (float)pPlayer->positionz; + lVar1 = proc_7F07CF8C(); + if (lVar1 != 0) { + pPlayer->ptr_tile_printmanpos = iStack52; + *(float *)&pPlayer->positionx = fStack36; + *(float *)&pPlayer->positionz = fStack28; + return 1; + } + } + else { + if ((param_3[2] - param_1[2]) * (param_3[2] - param_1[2]) + + (*param_3 - *param_1) * (*param_3 - *param_1) <= fStack56 * fStack56) { + if (*param_3 == (float)pPlayer->positionx) { + if (param_3[2] == (float)pPlayer->positionz) { + return 0; + } + fVar2 = param_3[2]; + } + else { + fVar2 = param_3[2]; + } + fStack24 = -(fVar2 - (float)pPlayer->positionz); + fStack16 = *param_3 - (float)pPlayer->positionx; + fVar2 = sqrtf(fStack16 * fStack16 + fStack24 * fStack24); + fStack24 = fStack24 * (1.00000000 / fVar2); + fStack16 = fStack16 * (1.00000000 / fVar2); + fVar2 = fStack16 * fStack4 + fStack12 * fStack24; + fStack24 = fStack24 * fVar2; + fStack16 = fStack16 * fVar2; + fStack36 = fStack24 + (float)pPlayer->positionx; + fStack28 = fStack16 + (float)pPlayer->positionz; + lVar1 = proc_7F07CF8C(); + if (lVar1 != 0) { + pPlayer->ptr_tile_printmanpos = iStack52; + *(float *)&pPlayer->positionx = fStack36; + *(float *)&pPlayer->positionz = fStack28; + return 1; + } + } + } + return 0; +} + + + +undefined4 proc_7F07D954(undefined4 param_1) + +{ + undefined4 in_v0_lo; + + return in_v0_lo; +} + + + +void proc_7F07D960(float *param_1,int param_2) + +{ + short sVar1; + longlong lVar2; + ulonglong uVar3; + int iVar4; + u32 uVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + int iVar10; + uint uVar11; + float fVar12; + float fVar13; + float fVar14; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float extraout_f14_06; + float extraout_f14_07; + float extraout_f14_08; + float afStack116 [3]; + float afStack104 [4]; + float afStack88 [3]; + float afStack76 [3]; + float local_40; + int local_3c; + uint local_2c; + float *local_28; + float afStack36 [3]; + float afStack24 [3]; + float local_c [2]; + float local_4; + + *(f32 *)&pPlayer->field_408 = pPlayer->positionx; + pPlayer->field_40C = pPlayer->positiony; + pPlayer->field_410 = pPlayer->positionz; + local_c[0] = *param_1 + (float)pPlayer->positionx; + dword_80036480 = 0; + local_4 = param_1[2] + (float)pPlayer->positionz; + pPlayer->field_29FC = 2; + if (dword_8003644C == NULL) goto LAB_7f07dbf0; + proc_7F03CCB0(dword_8003644C,(int **)&local_28,&local_2c); + if (((in_tank_flag != TRUE) && + (lVar2 = proc_7F03CCD8((float *)&pPlayer->positionx,local_28,local_2c), lVar2 == 0)) && + (lVar2 = proc_7F044718((longlong)(int)&pPlayer->positionx,(longlong)pPlayer->collision_radius + ,local_28,local_2c), lVar2 == 0)) { + if (ptr_playerstank != NULL) { + dword_8003644C = NULL; + ptr_playerstank = NULL; + dword_80036454 = 0.00000000; + } + goto LAB_7f07dbf0; + } + iVar10 = *(int *)(dword_8003644C + 4); + iVar9 = *(int *)(*(int *)(*(int *)(iVar10 + 0x14) + 8) + 8); + iVar4 = *(int *)(*(int *)(iVar9 + 0x14) + 4); + iVar9 = *(int *)(*(int *)(iVar9 + 0x18) + 4); + ptr_playerstank = dword_8003644C; + fVar12 = *(float *)(*(int *)(iVar10 + 0x14) + 0x14); + fVar13 = (*(float *)(iVar4 + 0x10) - *(float *)(iVar4 + 0xc)) * fVar12; + if (in_tank_flag == TRUE) { + fVar14 = *(float *)(iVar9 + 0x10); +LAB_7f07dad8: + dword_80036480 = 1; + fVar13 = fVar13 + (fVar14 - *(float *)(iVar9 + 0xc)) * fVar12; + } + else { + local_40 = fVar13; + local_3c = iVar9; + lVar2 = proc_7F03CCD8((float *)&pPlayer->positionx,(float *)(iVar10 + 0x84), + *(uint *)(iVar10 + 0x80)); + fVar13 = local_40; + if (lVar2 != 0) { + fVar12 = *(float *)(*(int *)(iVar10 + 0x14) + 0x14); + fVar14 = *(float *)(local_3c + 0x10); + iVar9 = local_3c; + goto LAB_7f07dad8; + } + } + if (((in_tank_flag == FALSE) && (dword_80036454 < fVar13)) && + (dword_80036454 = dword_80036454 + global_timer_delta * 20.00000000, dword_80036454 <= fVar13 + )) { + return; + } + dword_80036454 = fVar13; + if (in_tank_flag == TRUE) { + if (DAT_800799b8 == 0) { + dword_80036454 = fVar13 + (1.00000000 - (float)f32_800799c0) * -37.00000000; + } + else { + dword_80036454 = fVar13 + -37.00000000; + } + } +LAB_7f07dbf0: + uVar3 = proc_7F07D234(local_c,afStack24,afStack36); + fVar13 = extraout_f12; + fVar12 = extraout_f14; + if (uVar3 == 0) { + lVar2 = proc_7F07D2B4(local_c,afStack24,afStack36,afStack76,afStack88); + fVar13 = extraout_f12_00; + fVar12 = extraout_f14_00; + if ((lVar2 < 1) && (-1 < lVar2)) { + if (lVar2 == 0) { + proc_7F07D2B4(local_c,afStack76,afStack88,afStack104,afStack116); + fVar13 = extraout_f12_03; + fVar12 = extraout_f14_03; + if ((((param_2 != 0) && + (lVar2 = proc_7F07D4C0(local_c,afStack76,afStack88), fVar13 = extraout_f12_04, + fVar12 = extraout_f14_04, lVar2 < 1)) && + (lVar2 = proc_7F07D4C0(local_c,afStack24,afStack36), fVar13 = extraout_f12_05, + fVar12 = extraout_f14_05, lVar2 < 1)) && + (lVar2 = proc_7F07D61C(local_c,afStack76,afStack88), fVar13 = extraout_f12_06, + fVar12 = extraout_f14_06, lVar2 == 0)) { + proc_7F07D61C(local_c,afStack24,afStack36); + fVar13 = extraout_f12_07; + fVar12 = extraout_f14_07; + } + } + } + else { + if ((param_2 != 0) && + (lVar2 = proc_7F07D4C0(local_c,afStack24,afStack36), fVar13 = extraout_f12_01, + fVar12 = extraout_f14_01, lVar2 < 1)) { + proc_7F07D61C(local_c,afStack24,afStack36); + fVar13 = extraout_f12_02; + fVar12 = extraout_f14_02; + } + } + } + lVar2 = proc_7F0B0518(pPlayer->ptr_tile_printmanpos,fVar13,fVar12); + if (lVar2 != 0) { +LAB_7f07de28: + proc_7F07DE9C((int)pPlayer); + if (pPlayer->ptr_tile_printmanpos != 0) { + proc_7F057744((ulonglong)*(byte *)(pPlayer->ptr_tile_printmanpos + 3)); + } + return; + } + iVar9 = 0; + iVar10 = pPlayer->ptr_tile_printmanpos; + sVar1 = *(short *)(iVar10 + 6); + do { + uVar7 = 0; + uVar11 = (int)sVar1 >> 0xc & 0xf; + if (uVar11 != 0) { + iVar6 = 0; + iVar4 = iVar10; + do { + iVar6 += 8; + if ((int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 != 0) { + uVar7 += 1; + } + iVar4 += 8; + } while (iVar6 < (int)(uVar11 << 3)); + } + uVar5 = get_random_value(); + iVar4 = 0; + uVar11 = (int)*(short *)(iVar10 + 6) >> 0xc & 0xf; + if (uVar7 == 0) { + trap(0x1c00); + } + uVar8 = 0; + iVar6 = iVar10; + if (uVar11 != 0) { + do { + iVar4 += 1; + if ((int)(uint)*(ushort *)(iVar6 + 0xe) >> 4 != 0) { + if (uVar8 == uVar5 % uVar7) { + iVar10 = (uint)*(ushort *)(iVar6 + 0xe) * 8 + base_ptr_connection_vals; + break; + } + uVar8 += 1; + } + iVar6 = iVar6 + 8; + } while (iVar4 < (int)uVar11); + } + lVar2 = proc_7F0B0518(iVar10,extraout_f12_08,extraout_f14_08); + if (lVar2 != 0) { + pPlayer->ptr_tile_printmanpos = iVar10; + goto LAB_7f07de28; + } + iVar9 += 1; + if (iVar9 == 5) goto LAB_7f07de28; + sVar1 = *(short *)(iVar10 + 6); + } while( true ); +} + + + +void proc_7F07DE64(int param_1) + +{ + proc_7F03DE94(*(int *)(param_1 + 0xa8),*(short *)(param_1 + 0x2a04)); + *(undefined2 *)(param_1 + 0x2a04) = 0xffff; + return; +} + + + +void proc_7F07DE9C(int param_1) + +{ + int iVar1; + + proc_7F07DE64(param_1); + iVar1 = *(int *)(*(int *)(param_1 + 0xa8) + 4); + if (iVar1 == 0) { + if (*(int *)(param_1 + 0x488) != 0) { + *(ushort *)(param_1 + 0x2a04) = (ushort)*(byte *)(*(int *)(param_1 + 0x488) + 3); + proc_7F03DD9C(*(int *)(param_1 + 0xa8),*(short *)(param_1 + 0x2a04)); + } + } + else { + proc_7F020D94(iVar1); + } + return; +} + + + +void proc_7F07DEFC(void) + +{ + *(float *)&pPlayer->pause_starting_angle = pPlayer->vv_verta; + pPlayer->field_210 = 0.00000000; + pPlayer->field_218 = 0; + return; +} + + + +float proc_7F07DF28(longlong param_1) + +{ + float fVar1; + + if (param_1 == 0) { + pPlayer->field_208 = pPlayer->pause_starting_angle; + *(float *)&pPlayer->pause_target_angle = pPlayer->vv_verta; + } + else { + *(float *)&pPlayer->field_208 = pPlayer->vv_verta; + pPlayer->pause_target_angle = -40.00000000; + } + fVar1 = (float)pPlayer->field_208 - (float)pPlayer->pause_target_angle; + if (fVar1 < 0.00000000) { + fVar1 = -fVar1; + } + if (60.00000000 <= fVar1) { + return ((fVar1 - 60.00000000) * 60.00000000 * 0.50000000) / 60.00000000 + 60.00000000; + } + if (fVar1 <= 0.00000000) { + return 0.00000000; + } + return (fVar1 * 60.00000000) / 60.00000000; +} + + + +void proc_7F07E010(undefined4 param_1) + +{ + f32 in_f12; + + pPlayer->field_210 = 0.00000000; + pPlayer->field_214 = in_f12; + pPlayer->field_218 = 1; + return; +} + + + +void proc_7F07E03C(undefined4 param_1) + +{ + f32 in_f12; + + pPlayer->field_210 = 0.00000000; + pPlayer->field_214 = in_f12; + pPlayer->field_218 = 2; + return; +} + + + +ulonglong proc_7F07E068(void) + +{ + return (ulonglong)(pPlayer->field_218 != 0 && pPlayer->field_218 != 3); +} + + + +void proc_7F07E090(void) + +{ + float fVar1; + float fVar2; + + fVar2 = pPlayer->vv_verta; + if (pPlayer->field_218 == 1) { + *(float *)&pPlayer->field_210 = + (float)pPlayer->field_210 + global_timer_delta * watch_transition_time; + if ((float)pPlayer->field_210 < (float)pPlayer->field_214) { + fVar1 = cosf(((float)pPlayer->field_210 / (float)pPlayer->field_214) * flt_8005506C * + 0.50000000); + pPlayer->vv_verta = + (float)pPlayer->field_208 + + ((float)pPlayer->pause_target_angle - (float)pPlayer->field_208) * + (1.00000000 - fVar1) * 0.50000000; + } + else { + *(f32 *)&pPlayer->vv_verta = pPlayer->pause_target_angle; + pPlayer->field_218 = 3; + } + fVar1 = pPlayer->vv_verta; + } + else { + fVar1 = fVar2; + if (pPlayer->field_218 == 2) { + *(float *)&pPlayer->field_210 = + (float)pPlayer->field_210 + global_timer_delta * watch_transition_time; + if ((float)pPlayer->field_210 < (float)pPlayer->field_214) { + fVar1 = cosf(((float)pPlayer->field_210 / (float)pPlayer->field_214) * flt_80055070 + * 0.50000000); + pPlayer->vv_verta = + (float)pPlayer->pause_target_angle + + ((float)pPlayer->field_208 - (float)pPlayer->pause_target_angle) * + (1.00000000 - fVar1) * 0.50000000; + fVar1 = pPlayer->vv_verta; + } + else { + *(f32 *)&pPlayer->vv_verta = pPlayer->field_208; + pPlayer->field_218 = 0; + fVar1 = pPlayer->vv_verta; + } + } + } + if (fVar1 < -180.00000000) { + pPlayer->vv_verta = fVar1 + 360.00000000; + } + else { + if (180.00000000 <= fVar1) { + pPlayer->vv_verta = fVar1 - 360.00000000; + } + } + if (0 < clock_timer) { + pPlayer->speedverta = pPlayer->vv_verta - fVar2; + fVar2 = pPlayer->speedverta; + if (fVar2 < 0.00000000) { + pPlayer->speedverta = fVar2 + 360.00000000; + fVar2 = pPlayer->speedverta; + } + if (180.00000000 < fVar2) { + pPlayer->speedverta = fVar2 - 360.00000000; + fVar2 = pPlayer->speedverta; + } + fVar1 = flt_80055074; + pPlayer->speedverta = fVar2 / (global_timer_delta + global_timer_delta); + if (pPlayer->speedverta < fVar1) { + pPlayer->speedverta = fVar1; + } + else { + if (flt_80055078 < pPlayer->speedverta) { + pPlayer->speedverta = flt_80055078; + } + } + } + return; +} + + + +float proc_7F07E388(void) + +{ + int iVar1; + + iVar1 = pPlayer->field_218; + if (iVar1 == 1) { + return (float)pPlayer->field_210 / (float)pPlayer->field_214; + } + if (iVar1 != 2) { + if (iVar1 == 3) { + return 1.00000000; + } + return 0.00000000; + } + return 1.00000000 - (float)pPlayer->field_210 / (float)pPlayer->field_214; +} + + + +void trigger_watch_zoom(f32 final,f32 time) + +{ + pPlayer->zoomintime = 0.00000000; + pPlayer->zoomintimemax = time; + pPlayer->zoominfovyold = pPlayer->zoominfovy; + pPlayer->zoominfovynew = final; + return; +} + + + +Player * proc_7F07E438(void) + +{ + if ((float)pPlayer->zoomintimemax <= (float)pPlayer->zoomintime) { + return pPlayer; + } + return pPlayer; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F07E46C(void) + +{ + float in_f0; + float fVar1; + float in_f12; + + proc_7F07E438(); + if (in_f0 != in_f12) { + fVar1 = (float)pPlayer->zoominfovy; + if (in_f12 < fVar1) { + trigger_watch_zoom((f32)in_f12,(f32)(((fVar1 - in_f12) * 15.00000000) / 30.00000000)); + } + else { + trigger_watch_zoom((f32)in_f12,(f32)(((in_f12 - fVar1) * 15.00000000) / 30.00000000)); + } + } + return; +} + + + +void proc_7F07E504(void) + +{ + proc_7F07E46C(); + return; +} + + + +void zoom_to_watch_on_open(void) + +{ + f32 time; + + time = (f32)(((final - (float)pPlayer->zoominfovy) * 45.00000000) / flt_80055080); + if ((float)time < 0.00000000) { + time = (f32)-(float)time; + } + trigger_watch_zoom((f32)final,time); + return; +} + + + +void zoom_from_watch_on_exit(void) + +{ + f32 time; + + time = (f32)(((60.00000000 - (float)pPlayer->zoominfovy) * 45.00000000) / flt_80055084); + if ((float)time < 0.00000000) { + time = (f32)-(float)time; + } + trigger_watch_zoom(60.00000000,time); + return; +} + + + +ulonglong check_watch_page_transistion_running(void) + +{ + return (ulonglong)((float)pPlayer->zoomintime < (float)pPlayer->zoomintimemax); +} + + + +void proc_7F07E62C(void) + +{ + float fVar1; + float fVar2; + float fVar3; + + fVar1 = (float)pPlayer->zoomintime; + if (fVar1 < (float)pPlayer->zoomintimemax) { + if ((pPlayer->pause_animation_state == 5) || (pPlayer->pause_animation_state == 0xc)) { + *(float *)&pPlayer->zoomintime = fVar1 + (float)speedgraphframes; + } + else { + *(float *)&pPlayer->zoomintime = fVar1 + (float)speedgraphframes * watch_transition_time + ; + } + fVar1 = (float)pPlayer->zoomintimemax; + fVar3 = (float)pPlayer->zoomintime; + if (fVar1 < fVar3) { + *(float *)&pPlayer->zoomintime = fVar1; + fVar3 = (float)pPlayer->zoomintime; + fVar1 = (float)pPlayer->zoomintimemax; + fVar2 = (float)pPlayer->zoominfovyold; + } + else { + fVar2 = (float)pPlayer->zoominfovyold; + } + *(float *)&pPlayer->zoominfovy = + fVar2 + (fVar3 * ((float)pPlayer->zoominfovynew - fVar2)) / fVar1; + } + else { + pPlayer->zoomintime = pPlayer->zoomintimemax; + pPlayer->zoominfovy = pPlayer->zoominfovynew; + } + set_cur_player_fovy(pPlayer->zoominfovy); + setvideo_far(pPlayer->zoominfovy); + return; +} + + + +// WARNING: Instruction at (ram,0x7f07e7ac) overlaps instruction at (ram,0x7f07e7a8) +// + +float proc_7F07E740(void) + +{ + int iVar1; + + iVar1 = pPlayer->pause_animation_state; + if (iVar1 == 4) { + return ((45.00000000 - (float)pPlayer->zoomintimemax) + (float)pPlayer->zoomintime) / + 45.00000000; + } + if (iVar1 == 6) { + return ((float)pPlayer->zoomintimemax - (float)pPlayer->zoomintime) / 45.00000000; + } + if ((iVar1 != 5) && (iVar1 != 0xc)) { + return 0.00000000; + } + return 1.00000000; +} + + + +void proc_7F07E7CC(void) + +{ + object_header *objheader; + f32 scale; + float extraout_f12; + float extraout_f14; + + objheader = (object_header *)get_ptr_itemheader_in_hand(HAND_LEFT); + set_objuse_flag_compute_grp_nums_set_obj_loaded(objheader); + if (0x32 < objheader->num_table_entries) { + return_null(); + } + proc_7F075FAC((int)&pPlayer->something_with_watch_object_instance,(ushort **)objheader, + &pPlayer->field_2EC); + set_obj_instance_controller_scale((int)&pPlayer->something_with_watch_object_instance,scale); + proc_7F06FCA8((int)&pPlayer->something_with_watch_object_instance,ptr_animation_table + 0x42c8,0 + ,extraout_f12,0,extraout_f14); + pPlayer->step_in_view_watch_animation = 0; + return; +} + + + +void proc_7F07E8B0(float param_1) + +{ + if (pPlayer->step_in_view_watch_animation == 0) { + *(float *)&pPlayer->field_22C = 20.00000000 / param_1; + } + else { + *(float *)&pPlayer->field_22C = (20.00000000 - (float)pPlayer->field_258) / param_1; + } + pPlayer->step_in_view_watch_animation = 1; + *(float *)&pPlayer->field_228 = param_1; + return; +} + + + +void proc_7F07E910(float param_1) + +{ + if (pPlayer->step_in_view_watch_animation == 3) { + *(float *)&pPlayer->field_22C = 20.00000000 / param_1; + } + else { + *(float *)&pPlayer->field_22C = (float)pPlayer->field_258 / param_1; + } + pPlayer->step_in_view_watch_animation = 2; + *(float *)&pPlayer->field_228 = param_1; + return; +} + + + +void proc_7F07E964(void) + +{ + int iVar1; + float in_f12; + float in_f14; + + iVar1 = pPlayer->step_in_view_watch_animation; + if ((iVar1 != 0) && (iVar1 != 3)) { + if (iVar1 == 1) { + *(float *)&pPlayer->pause_animation_counter = + (float)pPlayer->pause_animation_counter + + global_timer_delta * watch_transition_time * (float)pPlayer->field_22C; + if (20.00000000 < (float)pPlayer->pause_animation_counter) { + pPlayer->pause_animation_counter = 20.00000000; + pPlayer->step_in_view_watch_animation = 3; + } + } + else { + if ((iVar1 == 2) && + (*(float *)&pPlayer->pause_animation_counter = + (float)pPlayer->pause_animation_counter - + global_timer_delta * watch_transition_time * (float)pPlayer->field_22C, + (float)pPlayer->pause_animation_counter < 0.00000000)) { + pPlayer->pause_animation_counter = 0.00000000; + pPlayer->step_in_view_watch_animation = 0; + } + } + proc_7F070090((int)&pPlayer->something_with_watch_object_instance,in_f12,in_f14); + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f07ea94) overlaps instruction at (ram,0x7f07ea90) +// + +float proc_7F07EA78(void) + +{ + int iVar1; + + iVar1 = pPlayer->step_in_view_watch_animation; + if ((iVar1 != 1) && (iVar1 != 2)) { + if (iVar1 != 3) { + return 0.00000000; + } + return 1.00000000; + } + return (float)pPlayer->pause_animation_counter / 20.00000000; +} + + + +void set_BONDdata_paused_flag(int ispaused) + +{ + pPlayer->paused_flag = ispaused; + return; +} + + + +int get_BONDdata_paused_flag(void) + +{ + return pPlayer->paused_flag; +} + + + +void proc_7F07EAF0(void) + +{ + char cVar1; + object_standard *poVar3; + ulonglong uVar2; + ALLink_s *pAVar4; + int iVar5; + ALLink_s **ppAVar6; + int iVar7; + + deactivate_alarm_sound_effect(); + proc_7F055EF8(); + iVar7 = 0; + do { + iVar5 = (int)&pPlayer->unknown + iVar7; + pAVar4 = *(ALLink_s **)(iVar5 + 0xa44); + if ((pAVar4 != NULL) && (uVar2 = sfxGetArg0Unk3F(pAVar4), uVar2 != 0)) { + sfxDeactivate(*(int *)(iVar5 + 0xa44)); + } + iVar7 += 0x3a8; + } while (iVar7 < 0x750); + ppAVar6 = (ALLink_s **)&dword_80036458; + pAVar4 = dword_80036458; + while( true ) { + if ((pAVar4 != NULL) && (uVar2 = sfxGetArg0Unk3F(pAVar4), uVar2 != 0)) { + sfxDeactivate((int)*ppAVar6); + } + ppAVar6 = ppAVar6 + 1; + if (ppAVar6 == (ALLink_s **)&dword_80036460) break; + pAVar4 = *ppAVar6; + } + poVar3 = get_ptr_obj_pos_list_current_entry(); + if (poVar3 == NULL) { + return; + } + cVar1 = *(char *)poVar3; + do { + if (cVar1 == '\x02') { +LAB_7f07ec34: + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + else { + if (cVar1 == '\x01') { + iVar7 = *(int *)&poVar3->pad; + if (*(char *)(iVar7 + 3) == '\'') { + if (*(ALLink_s **)(iVar7 + 0xac) == NULL) { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + else { + uVar2 = sfxGetArg0Unk3F(*(ALLink_s **)(iVar7 + 0xac)); + if (uVar2 == 0) { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + else { + sfxDeactivate(*(int *)(iVar7 + 0xac)); + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + } + } + else { + if (*(char *)(iVar7 + 3) == '(') { + if (*(ALLink_s **)(iVar7 + 0xb0) == NULL) { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + else { + uVar2 = sfxGetArg0Unk3F(*(ALLink_s **)(iVar7 + 0xb0)); + if (uVar2 != 0) { + sfxDeactivate(*(int *)(iVar7 + 0xb0)); + goto LAB_7f07ec34; + } + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + } + else { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + } + } + else { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + } + if (poVar3 == NULL) { + return; + } + cVar1 = *(char *)poVar3; + } while( true ); +} + + + +// WARNING: Instruction at (ram,0x7f07f738) overlaps instruction at (ram,0x7f07f734) +// + +void probably_look_at_watch(void) + +{ + bool bVar1; + ITEM_IDS IVar3; + ITEM_IDS IVar4; + ulonglong uVar2; + int iVar5; + undefined4 extraout_a0_lo; + undefined4 extraout_a0_lo_00; + undefined4 extraout_a0_lo_01; + undefined4 extraout_a0_lo_02; + float fVar6; + float fVar7; + float local_14; + + iVar5 = pPlayer->pause_animation_state; + if (iVar5 == 0) goto LAB_7f07f80c; + IVar3 = get_item_in_hand(0); + bVar1 = IVar3 == ITEM_TRIGGER; + if (!bVar1) { + IVar3 = get_item_in_hand(0); + bVar1 = IVar3 == ITEM_WATCHLASER; + } + iVar5 = 0x11; + if (bVar1) { + iVar5 = 0x23; + } + pPlayer->field_1C4 = pPlayer->field_1C4 + clock_timer; + pPlayer->field_1C0 = pPlayer->field_1C0 + 1; + pPlayer->pausing_flag = 0; + if (pPlayer->pause_animation_state == 1) { + pPlayer->pausing_flag = 0; + if (pPlayer->field_1C0 == 1) { + draw_item_in_hand(1,0x54); + } + else { + if (pPlayer->field_1C0 == 2) { + if (bVar1) { + draw_item_in_hand(0,0); + } + } + else { + IVar4 = return_ammo_in_hand(HAND_LEFT); + if ((((IVar4 == ITEM_SUIT_LF_HAND) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) && + ((!bVar1 || + ((IVar4 = return_ammo_in_hand(HAND_RIGHT), IVar4 == ITEM_UNARMED && + (uVar2 = proc_7F05CEBC(0), uVar2 != 0)))))) && (iVar5 <= pPlayer->field_1C4)) + { + pPlayer->pause_animation_state = 2; + pPlayer->field_1C0 = 1; + pPlayer->field_1C4 = 0; + } + } + } + } + if (pPlayer->pause_animation_state == 2) { + pPlayer->pausing_flag = 0; + if (pPlayer->field_1C0 == 1) { + set_unset_bitflags(8,0); + set_unset_ammo_on_screen_setting(4,0); + set_flags_in_BONDdata_stationary_intro_cam(1); + proc_7F08A944(1); + set_unset_clock_lock_bits(4,0); + iVar5 = pPlayer->field_218; + if (((iVar5 == 0) || (iVar5 == 2)) || (iVar5 == 3)) { + proc_7F07DF28(1); + proc_7F07E010(extraout_a0_lo); + fVar7 = (float)pPlayer->field_214; + } + else { + fVar7 = (float)pPlayer->field_214; + } + } + else { + fVar7 = (float)pPlayer->field_214; + } + if (fVar7 - (float)pPlayer->field_210 < 30.00000000) { + pPlayer->pause_animation_state = 3; + pPlayer->field_1C0 = 1; + pPlayer->field_1C4 = 0; + proc_7F07E7CC(); + iVar5 = pPlayer->pause_animation_state; + } + else { + iVar5 = pPlayer->pause_animation_state; + } + } + else { + iVar5 = pPlayer->pause_animation_state; + } + if (iVar5 == 3) { + if (pPlayer->field_1C0 == 1) { + iVar5 = pPlayer->field_218; + fVar7 = 40.00000000; + if ((pPlayer->step_in_view_watch_animation != 0) && + (fVar7 = 40.00000000, pPlayer->step_in_view_watch_animation != 3)) { + fVar7 = ((20.00000000 - (float)pPlayer->field_258) * 40.00000000) / 20.00000000; + } + if (((iVar5 == 0) || (iVar5 == 2)) || (local_14 = fVar7, iVar5 == 3)) { + fVar6 = proc_7F07DF28(1); + local_14 = fVar7 - 10.00000000; + if (local_14 <= fVar6) { + local_14 = fVar6; + } + proc_7F07E010(extraout_a0_lo_00); + local_14 = local_14 + 10.00000000; + if (local_14 <= fVar7) { + local_14 = fVar7; + } + } + proc_7F07E8B0(local_14); + iVar5 = pPlayer->step_in_view_watch_animation; + } + else { + iVar5 = pPlayer->step_in_view_watch_animation; + } + if (((iVar5 == 0) || (iVar5 == 3)) && (uVar2 = proc_7F07E068(), uVar2 == 0)) { + pPlayer->pause_animation_state = 4; + pPlayer->field_1C0 = 1; + pPlayer->field_1C4 = 0; + iVar5 = pPlayer->pause_animation_state; + } + else { + pPlayer->pausing_flag = 1; + iVar5 = pPlayer->pause_animation_state; + } + } + if (iVar5 == 4) { + if ((pPlayer->field_1C0 == 1) && (pPlayer->field_21C != 0)) { + play_sfx_a1(ptr_sfx_buf,0xed,NULL); + pPlayer->field_21C = 0; + } + zoom_to_watch_on_open(); + uVar2 = check_watch_page_transistion_running(); + if (uVar2 == 0) { + pPlayer->pause_animation_state = 5; + pPlayer->field_1C0 = 1; + pPlayer->field_1C4 = 0; + pPlayer->field_21C = 1; + iVar5 = pPlayer->pause_animation_state; + } + else { + pPlayer->pausing_flag = 1; + iVar5 = pPlayer->pause_animation_state; + } + } + if (iVar5 == 5) { + if (pPlayer->field_1C0 == 1) { + proc_7F0C1310(); + } + pPlayer->pausing_flag = 1; + iVar5 = pPlayer->pause_animation_state; + } + if (iVar5 == 0xc) { + pPlayer->pausing_flag = 1; + if (2 < pPlayer->field_1C0) { + pPlayer->pause_animation_state = 6; + pPlayer->field_1C0 = 1; + pPlayer->field_1C4 = 0; + play_sfx_a1(ptr_sfx_buf,0xee,NULL); + goto LAB_7f07f1d8; + } + iVar5 = pPlayer->pause_animation_state; + } + else { +LAB_7f07f1d8: + iVar5 = pPlayer->pause_animation_state; + } + if (iVar5 == 6) { + if (pPlayer->field_1C0 == 1) { + zoom_from_watch_on_exit(); + if (bVar1) { + draw_item_in_hand(0,0); + } + else { + proc_7F05DAE4(0); + } + } + uVar2 = check_watch_page_transistion_running(); + if (uVar2 == 0) { + pPlayer->pause_animation_state = 7; + pPlayer->field_1C0 = 1; + pPlayer->field_1C4 = 0; + pPlayer->field_21C = 1; + iVar5 = pPlayer->pause_animation_state; + } + else { + pPlayer->pausing_flag = 1; + iVar5 = pPlayer->pause_animation_state; + } + } + if (iVar5 == 7) { + if (pPlayer->field_1C0 == 1) { + proc_7F07DF28(0); + fVar7 = 40.00000000; + if ((pPlayer->step_in_view_watch_animation != 0) && + (pPlayer->step_in_view_watch_animation != 3)) { + fVar7 = ((float)pPlayer->field_258 * 40.00000000) / 20.00000000; + } + proc_7F07E03C(extraout_a0_lo_01); + proc_7F07E910(fVar7); + } + if ((pPlayer->step_in_view_watch_animation == 0) || + (pPlayer->step_in_view_watch_animation == 3)) { + pPlayer->pause_animation_state = 8; + pPlayer->field_1C0 = 1; + pPlayer->field_1C4 = 0; + iVar5 = pPlayer->pause_animation_state; + } + else { + pPlayer->pausing_flag = 1; + iVar5 = pPlayer->pause_animation_state; + } + } + if (iVar5 == 8) { + pPlayer->pausing_flag = 0; + if (pPlayer->field_1C0 == 1) { + IVar4 = return_ammo_in_hand(HAND_LEFT); + IVar3 = get_item_in_hand(1); + if ((IVar3 != IVar4) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { + IVar3 = get_item_in_hand(1); + draw_item_in_hand(1,IVar3); + } + if (bVar1) { + IVar4 = return_ammo_in_hand(HAND_RIGHT); + IVar3 = get_item_in_hand(0); + if ((IVar3 != IVar4) && (uVar2 = proc_7F05CEBC(0), uVar2 != 0)) { + IVar3 = get_item_in_hand(0); + draw_item_in_hand(0,IVar3); + } + } + } + else { + uVar2 = proc_7F07E068(); + if (uVar2 == 0) { + IVar4 = return_ammo_in_hand(HAND_LEFT); + IVar3 = get_item_in_hand(1); + if ((IVar3 == IVar4) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { + if (bVar1) { + IVar4 = return_ammo_in_hand(HAND_RIGHT); + IVar3 = get_item_in_hand(0); + if ((IVar3 != IVar4) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) + goto LAB_7f07f548; + } + proc_7F05DAE4(1); + if (bVar1) { + proc_7F05DAE4(0); + } + set_unset_bitflags(8,1); + set_unset_ammo_on_screen_setting(4,1); + proc_7F08A380(1); + proc_7F08A928(1); + set_unset_clock_lock_bits(4,1); + pPlayer->pause_animation_state = 0; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + } + } + } +LAB_7f07f548: + if (pPlayer->pause_animation_state == 9) { + pPlayer->pausing_flag = 0; + IVar3 = get_item_in_hand(1); + IVar4 = return_ammo_in_hand(HAND_LEFT); + if ((IVar4 != IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { + if (bVar1) { + IVar3 = get_item_in_hand(0); + IVar4 = return_ammo_in_hand(HAND_RIGHT); + if ((IVar4 == IVar3) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) goto LAB_7f07f5ec; + } + pPlayer->pause_animation_state = 8; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + } +LAB_7f07f5ec: + if (pPlayer->pause_animation_state == 10) { + pPlayer->pausing_flag = 0; + if (pPlayer->field_1C0 == 1) { + proc_7F07DF28(0); + proc_7F07E03C(extraout_a0_lo_02); + } + IVar3 = get_item_in_hand(1); + IVar4 = return_ammo_in_hand(HAND_LEFT); + if ((IVar4 != IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { + if (bVar1) { + IVar3 = get_item_in_hand(0); + IVar4 = return_ammo_in_hand(HAND_RIGHT); + if ((IVar4 == IVar3) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) goto LAB_7f07f6b8; + } + pPlayer->pause_animation_state = 8; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + } +LAB_7f07f6b8: + if (pPlayer->pause_animation_state == 0xb) { + pPlayer->pausing_flag = 0; + IVar3 = get_item_in_hand(1); + IVar4 = return_ammo_in_hand(HAND_LEFT); + if ((IVar4 == IVar3) && (uVar2 = proc_7F05CEBC(1), uVar2 != 0)) { + if (bVar1) { + IVar3 = get_item_in_hand(0); + IVar4 = return_ammo_in_hand(HAND_RIGHT); + if ((IVar4 != IVar3) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) goto LAB_7f07f760; + } + pPlayer->pause_animation_state = 1; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + } +LAB_7f07f760: + if (pPlayer->pause_animation_state == 0xd) { + pPlayer->pausing_flag = 0; + uVar2 = proc_7F05CEBC(1); + if (((((uVar2 != 0) && (uVar2 = proc_7F05CEBC(0), uVar2 != 0)) && + (iVar5 = pPlayer->field_C3C, iVar5 != 5)) && ((iVar5 != 6 && (iVar5 != 7)))) && + (iVar5 != 8)) { + pPlayer->pause_animation_state = 1; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + } + proc_7F07E090(); + proc_7F07E964(); + proc_7F07E62C(); + iVar5 = pPlayer->pause_animation_state; +LAB_7f07f80c: + if (iVar5 == 5) { + set_controls_locked_flag(1); + proc_7F0A6A80(); + } + else { + if (iVar5 == 0xc) { + set_controls_locked_flag(1); + } + else { + set_controls_locked_flag(0); + } + } + return; +} + + + +void set_open_close_solo_watch_menu_to_1(void) + +{ + pPlayer->open_close_solo_watch_menu = 1; + return; +} + + + +void trigger_solo_watch_menu(longlong param_1) + +{ + Player *pPVar1; + ulonglong uVar2; + int *piVar3; + int *piVar4; + undefined4 *puVar5; + int iVar6; + int *piVar7; + float extraout_f12; + float extraout_f12_00; + + iVar6 = pPlayer->pause_animation_state; + if (iVar6 == 0) { + if (param_1 == 0) { + watch_transition_time = watch_transition_time * flt_80055090; + if (flt_8005508C < watch_transition_time) { + watch_transition_time = flt_8005508C; + } + uVar2 = proc_7F05CEBC(1); + if ((((uVar2 == 0) || (uVar2 = proc_7F05CEBC(0), uVar2 == 0)) || + (iVar6 = pPlayer->field_C3C, iVar6 == 5)) || + (((iVar6 == 6 || (iVar6 == 7)) || (iVar6 == 8)))) { + pPlayer->pause_animation_state = 0xd; + } + else { + pPlayer->pause_animation_state = 1; + } + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + proc_7F07DEFC(); + proc_7F07E504(); + get_BONDdata_watch_armor(); + proc_7F0A2F30((short *)&pPlayer->healthdamagetype,0x2e,1,extraout_f12); + proc_7F0A3330(&pPlayer->field_19F8,(int)&pPlayer[-0x30303].field_1238,0x2e); + get_BONDdata_watch_health(); + proc_7F0A2F30((short *)&pPlayer->related_to_health_display,0x2e,-1,extraout_f12_00); + proc_7F0A3330(&pPlayer->field_2128,(int)&pPlayer[-0x30303].field_1518,0x2e); + proc_7F0A69A8(); + iVar6 = 0; + piVar4 = &pPlayer->buffer_for_watch_greenbackdrop_DL; + piVar7 = &pPlayer->buffer_for_watch_greenbackdrop_vertices; + do { + piVar3 = (int *)proc_7F0A3AB8((short *)piVar7,(short)iVar6,0,100,0x14,-299,0x136); + piVar4 = proc_7F0A3B40(piVar4,piVar7 + -0x20000000); + iVar6 += 0x7d; + piVar7 = piVar3; + } while (iVar6 != 0x271); + *piVar4 = -0x48000000; + piVar4[1] = 0; + pPVar1 = pPlayer; + piVar7 = &pPlayer->field_2998; + proc_7F0A3AB8((short *)&pPlayer->field_19B8,0,0,0x398,0x14,-0x1cc,0); + puVar5 = proc_7F0A3B40(piVar7,&pPVar1[-0x30303].field_1938); + *puVar5 = 0xb8000000; + puVar5[1] = 0; + } + } + else { + if (iVar6 == 1) { + pPlayer->pause_animation_state = 9; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + else { + if (iVar6 == 2) { + pPlayer->pause_animation_state = 10; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + else { + if (iVar6 == 3) { + pPlayer->pause_animation_state = 7; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + else { + if (iVar6 == 4) { + pPlayer->pause_animation_state = 6; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + else { + if (iVar6 == 5) { + deleteCurrentSelectedFolder(); + proc_7F0C1340(); + pPlayer->pause_animation_state = 0xc; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + pPlayer->open_close_solo_watch_menu = 0; + } + else { + if (iVar6 != 0xc) { + if (iVar6 == 6) { + if (param_1 == 0) { + pPlayer->pause_animation_state = 4; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + proc_7F0A69A8(); + } + } + else { + if (iVar6 == 7) { + if (param_1 == 0) { + pPlayer->pause_animation_state = 3; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + proc_7F0A69A8(); + } + } + else { + if (iVar6 == 8) { + if (param_1 == 0) { + pPlayer->pause_animation_state = 0xb; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + proc_7F0A69A8(); + } + } + else { + if (iVar6 == 9) { + if (param_1 == 0) { + pPlayer->pause_animation_state = 1; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + } + else { + if (iVar6 == 10) { + if (param_1 == 0) { + pPlayer->pause_animation_state = 1; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + } + else { + if (iVar6 == 0xb) { + pPlayer->pause_animation_state = 8; + pPlayer->field_1C0 = 0; + pPlayer->field_1C4 = 0; + } + else { + if (iVar6 == 0xd) { + pPlayer->pause_animation_state = 0; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + + +void proc_7F07FCC4(longlong param_1) + +{ + float fVar1; + + if (param_1 == -1) { + pPlayer->speedstrafe = pPlayer->speedstrafe - global_timer_delta; + fVar1 = pPlayer->speedstrafe; + if (fVar1 < -1.00000000) { + pPlayer->speedstrafe = -1.00000000; + fVar1 = pPlayer->speedstrafe; + } + } + else { + if (param_1 == 1) { + pPlayer->speedstrafe = pPlayer->speedstrafe + global_timer_delta; + fVar1 = pPlayer->speedstrafe; + if (1.00000000 < fVar1) { + pPlayer->speedstrafe = 1.00000000; + fVar1 = pPlayer->speedstrafe; + } + } + else { + fVar1 = pPlayer->speedstrafe; + if (0.00000000 < fVar1) { + pPlayer->speedstrafe = fVar1 - global_timer_delta; + fVar1 = pPlayer->speedstrafe; + if (fVar1 < 0.00000000) { + pPlayer->speedstrafe = 0.00000000; + fVar1 = pPlayer->speedstrafe; + } + } + else { + pPlayer->speedstrafe = fVar1 + global_timer_delta; + fVar1 = pPlayer->speedstrafe; + if (0.00000000 < fVar1) { + pPlayer->speedstrafe = 0.00000000; + fVar1 = pPlayer->speedstrafe; + } + } + } + } + pPlayer->speedsideways = fVar1; + return; +} + + + +void proc_7F07FE1C(longlong param_1) + +{ + f32 fVar1; + float fVar2; + + if (param_1 == 1) { + *(float *)&pPlayer->field_2A4C = (float)pPlayer->field_2A4C + global_timer_delta; + fVar1 = pPlayer->field_2A4C; + if (1.00000000 < (float)fVar1) { + pPlayer->field_2A4C = 1.00000000; + fVar1 = pPlayer->field_2A4C; + } + } + else { + if (param_1 == -1) { + *(float *)&pPlayer->field_2A4C = (float)pPlayer->field_2A4C - global_timer_delta; + fVar1 = pPlayer->field_2A4C; + if ((float)fVar1 < -1.00000000) { + pPlayer->field_2A4C = -1.00000000; + fVar1 = pPlayer->field_2A4C; + } + } + else { + fVar2 = (float)pPlayer->field_2A4C; + if (0.00000000 < fVar2) { + *(float *)&pPlayer->field_2A4C = fVar2 - global_timer_delta; + fVar1 = pPlayer->field_2A4C; + if ((float)fVar1 < 0.00000000) { + pPlayer->field_2A4C = 0.00000000; + fVar1 = pPlayer->field_2A4C; + } + } + else { + *(float *)&pPlayer->field_2A4C = fVar2 + global_timer_delta; + fVar1 = pPlayer->field_2A4C; + if (0.00000000 < (float)fVar1) { + pPlayer->field_2A4C = 0.00000000; + fVar1 = pPlayer->field_2A4C; + } + } + } + } + *(f32 *)&pPlayer->speedforwards = fVar1; + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +float proc_7F07FF74(void) + +{ + float in_f0; + float fVar1; + float in_f12; + + if (0.00000000 < in_f12) { + video_related_23(); + fVar1 = (in_f0 * in_f12 * flt_80055094) / 60.00000000; + } + else { + if (in_f12 < 0.00000000) { + video_related_23(); + fVar1 = (in_f0 * -in_f12 * flt_80055098) / 60.00000000; + } + else { + fVar1 = 0.00000000; + } + } + return fVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F080010(void) + +{ + float in_f0; + float fVar1; + float fVar2; + float in_f12; + + video_related_23(); + in_f0 = in_f0 / 60.00000000; + fVar1 = (float)proc_7F07FF74(); + if (0.00000000 < in_f12) { + fVar2 = pPlayer->speedverta; + if (0.00000000 < fVar2) { + pPlayer->speedverta = fVar2 - flt_8005509C * global_timer_delta * in_f0; + } + else { + pPlayer->speedverta = fVar2 - flt_800550A0 * global_timer_delta * in_f0; + } + if (pPlayer->speedverta < fVar1) { + pPlayer->speedverta = fVar1; + } + } + else { + if (in_f12 < 0.00000000) { + fVar2 = pPlayer->speedverta; + if (fVar2 < 0.00000000) { + pPlayer->speedverta = fVar2 + flt_800550A4 * global_timer_delta * in_f0; + } + else { + pPlayer->speedverta = fVar2 + flt_800550A8 * global_timer_delta * in_f0; + } + if (fVar1 < pPlayer->speedverta) { + pPlayer->speedverta = fVar1; + } + } + else { + fVar2 = pPlayer->speedverta; + if (fVar1 < fVar2) { + pPlayer->speedverta = fVar2 - flt_800550AC * global_timer_delta * in_f0; + if (pPlayer->speedverta < fVar1) { + pPlayer->speedverta = fVar1; + } + } + else { + pPlayer->speedverta = fVar2 + flt_800550B0 * global_timer_delta * in_f0; + if (fVar1 < pPlayer->speedverta) { + pPlayer->speedverta = fVar1; + } + } + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +float proc_7F080228(void) + +{ + float in_f0; + float fVar1; + float in_f12; + + if (0.00000000 < in_f12) { + video_related_23(); + fVar1 = (in_f0 * in_f12 * flt_800550B4) / 60.00000000; + } + else { + if (in_f12 < 0.00000000) { + video_related_23(); + fVar1 = (in_f0 * -in_f12 * flt_800550B8) / 60.00000000; + } + else { + fVar1 = 0.00000000; + } + } + return fVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F0802C4(void) + +{ + float in_f0; + float fVar1; + float fVar2; + float in_f12; + + video_related_23(); + in_f0 = in_f0 / 60.00000000; + fVar1 = (float)proc_7F080228(); + if (0.00000000 < in_f12) { + fVar2 = pPlayer->speedtheta; + if (0.00000000 < fVar2) { + pPlayer->speedtheta = fVar2 - flt_800550BC * global_timer_delta * in_f0; + } + else { + pPlayer->speedtheta = fVar2 - flt_800550C0 * global_timer_delta * in_f0; + } + if (pPlayer->speedtheta < fVar1) { + pPlayer->speedtheta = fVar1; + } + } + else { + if (in_f12 < 0.00000000) { + fVar2 = pPlayer->speedtheta; + if (fVar2 < 0.00000000) { + pPlayer->speedtheta = fVar2 + flt_800550C4 * global_timer_delta * in_f0; + } + else { + pPlayer->speedtheta = fVar2 + flt_800550C8 * global_timer_delta * in_f0; + } + if (fVar1 < pPlayer->speedtheta) { + pPlayer->speedtheta = fVar1; + } + } + else { + fVar2 = pPlayer->speedtheta; + if (fVar1 < fVar2) { + pPlayer->speedtheta = fVar2 - flt_800550CC * global_timer_delta * in_f0; + if (pPlayer->speedtheta < fVar1) { + pPlayer->speedtheta = fVar1; + } + } + else { + pPlayer->speedtheta = fVar2 + flt_800550D0 * global_timer_delta * in_f0; + if (fVar1 < pPlayer->speedtheta) { + pPlayer->speedtheta = fVar1; + } + } + } + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f080520) overlaps instruction at (ram,0x7f08051c) +// + +undefined4 * proc_7F0804E0(undefined4 *param_1) + +{ + short sVar1; + short sVar2; + short sVar3; + short sVar4; + u32 uVar5; + u32 uVar6; + u32 uVar7; + float fVar8; + + fVar8 = pPlayer->tint_alpha; + uVar5 = pPlayer->tint_red; + uVar6 = pPlayer->tint_green; + uVar7 = pPlayer->tint_blue; + if ((camera_80036430 != 0) || (camera_80036434 != 0)) { + fVar8 = 1.00000000; + uVar7 = 0; + uVar6 = 0; + uVar5 = 0; + } + if (0.00000000 < fVar8) { + *param_1 = 0xe7000000; + param_1[1] = 0; + param_1[3] = 0; + param_1[2] = 0xba001402; + param_1[5] = 0xc0; + param_1[4] = 0xba000602; + param_1[6] = 0xba001301; + param_1[7] = 0; + param_1[8] = 0xb9000002; + param_1[9] = 0; + param_1[10] = 0xba001001; + param_1[0xb] = 0; + param_1[0xd] = 0x2000; + param_1[0xc] = 0xba000c02; + param_1[0xf] = 0xc00; + param_1[0xe] = 0xba000903; + param_1[0x10] = 0xba000e02; + param_1[0x11] = 0; + param_1[0x12] = 0xb900031d; + param_1[0x13] = 0x504340; + param_1[0x15] = 0xfffdf6fb; + param_1[0x14] = 0xfcffffff; + param_1[0x16] = 0xfa000000; + param_1[0x17] = + uVar5 << 0x18 | (uVar6 & 0xff) << 0x10 | (uVar7 & 0xff) << 8 | + (int)(fVar8 * 255.00000000) & 0xffU; + sVar1 = get_video2_settings_width(); + sVar2 = get_video2_settings_ulx(); + sVar3 = get_video2_settings_uly(); + sVar4 = get_video2_settings_height(); + param_1[0x18] = + ((int)sVar4 + (int)sVar3 & 0x3ffU) << 2 | 0xf6000000 | + ((int)sVar2 + (int)sVar1 & 0x3ffU) << 0xe; + sVar1 = get_video2_settings_ulx(); + sVar2 = get_video2_settings_uly(); + param_1[0x19] = ((int)sVar2 & 0x3ffU) << 2 | ((int)sVar1 & 0x3ffU) << 0xe; + param_1[0x1a] = 0xe7000000; + param_1[0x1b] = 0; + param_1[0x1d] = 0x40; + param_1[0x1c] = 0xba000602; + param_1[0x1f] = 0x80000; + param_1[0x1e] = 0xba001301; + param_1[0x21] = 0x10000; + param_1[0x20] = 0xba001001; + param_1 = param_1 + 0x22; + } + return param_1; +} + + + +void proc_7F0807B0(u32 param_1,u32 param_2,u32 param_3,float param_4) + +{ + pPlayer->tint_red = param_1; + pPlayer->tint_green = param_2; + pPlayer->tint_blue = param_3; + pPlayer->tint_alpha = param_4; + return; +} + + + +void proc_7F0807E0(undefined4 param_1,undefined8 param_2,int param_3,int param_4,f32 param_5, + undefined param_6,undefined param_7,undefined param_8,undefined param_9, + undefined param_10,undefined4 param_11) + +{ + float in_f12; + + pPlayer->field_3E0 = 0.00000000; + pPlayer->timer_for_fade = in_f12; + pPlayer->field_3E8 = pPlayer->tint_red; + pPlayer->field_3EC = param_2._4_4_; + pPlayer->field_3F0 = pPlayer->tint_green; + pPlayer->field_3F4 = param_3; + pPlayer->field_3F8 = pPlayer->tint_blue; + pPlayer->field_3FC = param_4; + *(float *)&pPlayer->field_400 = pPlayer->tint_alpha; + pPlayer->field_404 = param_5; + return; +} + + + +void fade_to_over_seconds(f32 seconds,f32 fadeto) + +{ + undefined4 in_a0_lo; + undefined unaff_retaddr; + undefined in_stack_00000003; + undefined in_stack_00000007; + undefined4 in_stack_00000008; + undefined in_stack_fffffff7; + undefined in_stack_fffffffb; + + proc_7F0807E0(in_a0_lo,(longlong)(int)pPlayer->tint_red,pPlayer->tint_green,pPlayer->tint_blue, + fadeto,in_stack_fffffff7,in_stack_fffffffb,unaff_retaddr,in_stack_00000003, + in_stack_00000007,in_stack_00000008); + return; +} + + + +ulonglong check_if_fade_to_black_complete(void) + +{ + return (ulonglong)(pPlayer->timer_for_fade < 0.00000000); +} + + + +void proc_7F0808BC(void) + +{ + float fVar1; + + if (0.00000000 <= pPlayer->timer_for_fade) { + *(float *)&pPlayer->field_3E0 = (float)pPlayer->field_3E0 + global_timer_delta; + if ((float)pPlayer->field_3E0 < pPlayer->timer_for_fade) { + fVar1 = (float)pPlayer->field_3E0 / pPlayer->timer_for_fade; + pPlayer->tint_alpha = + (float)pPlayer->field_400 + + ((float)pPlayer->field_404 - (float)pPlayer->field_400) * fVar1; + pPlayer->tint_red = + pPlayer->field_3E8 + + (int)((float)(pPlayer->field_3EC - pPlayer->field_3E8) * fVar1); + pPlayer->tint_green = + pPlayer->field_3F0 + + (int)((float)(pPlayer->field_3F4 - pPlayer->field_3F0) * fVar1); + pPlayer->tint_blue = + pPlayer->field_3F8 + + (int)((float)(pPlayer->field_3FC - pPlayer->field_3F8) * fVar1); + return; + } + *(f32 *)&pPlayer->tint_alpha = pPlayer->field_404; + pPlayer->tint_red = pPlayer->field_3EC; + pPlayer->tint_green = pPlayer->field_3F4; + pPlayer->tint_blue = pPlayer->field_3FC; + pPlayer->timer_for_fade = -1.00000000; + } + return; +} + + + +void set_curplayer_fade(f32 timer,f32 finalamount) + +{ + int iVar1; + float fVar2; + + iVar1 = *(int *)(pPlayer->position_data_pointer + 4); + if (iVar1 != 0) { + pPlayer->viewport_alpha = 0.00000000; + pPlayer->bondfadetime60 = timer; + fVar2 = (float)(uint)*(byte *)(iVar1 + 0xc); + if (false) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)&pPlayer->bondfadetimemax = fVar2 / 255.00000000; + pPlayer->bondfadefracold = finalamount; + } + return; +} + + + +void proc_7F080A80(void) + +{ + int iVar1; + float fVar2; + + if (0.00000000 <= (float)pPlayer->bondfadetime60) { + iVar1 = *(int *)(pPlayer->position_data_pointer + 4); + *(float *)&pPlayer->viewport_alpha = (float)pPlayer->viewport_alpha + global_timer_delta; + if ((float)pPlayer->viewport_alpha < (float)pPlayer->bondfadetime60) { + fVar2 = (float)pPlayer->bondfadetimemax + + (((float)pPlayer->bondfadefracold - (float)pPlayer->bondfadetimemax) * + (float)pPlayer->viewport_alpha) / (float)pPlayer->bondfadetime60; + } + else { + fVar2 = (float)pPlayer->bondfadefracold; + pPlayer->bondfadetime60 = -1.00000000; + } + if (iVar1 != 0) { + *(undefined *)(iVar1 + 0xc) = (char)(int)(fVar2 * 255.00000000); + } + } + return; +} + + + +void proc_7F080B34(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) + +{ + u32 uVar1; + u32 uVar2; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float extraout_f14_00; + float fStackX8; + float afStack132 [16]; + float afStack68 [4]; + int iStack52; + int iStack48; + int iStack44; + int iStack36; + int iStack32; + int iStack28; + float fStack4; + + fStack4 = 0.00000000; + if (pPlayer->bonddead == 0) { + proc_7F08E8BC(param_1); + fStackX8 = param_5; + if (param_1 != 0.00000000) { + fStack4 = param_2 / param_1; + } + } + else { + if (pPlayer->field_420 != 0) { + uVar1 = get_random_value(); + uVar2 = get_random_value(); + if (total_player_death_anim == 0) { + trap(0x1c00); + } + proc_7F08EA48(player_death_ani_list[uVar1 % total_player_death_anim] + + ptr_animation_table,(byte)uVar2 & 1,extraout_f12,extraout_f14); + pPlayer->field_420 = 0; + } + proc_7F08EAB8(0.50000000); + fStackX8 = 0.00000000; + } + proc_7F08E240(fStack4,fStackX8); + proc_7F058570((360.00000000 - (float)pPlayer->vv_verta360) * + firstperson_weapon_movement_restrictor,extraout_a0,afStack68); + proc_7F059908(afStack132,extraout_f12_00,extraout_f14_00,0.00000000,0.00000000,0.00000000, + -(float)pPlayer->field_508,-(float)pPlayer->field_50C,-(float)pPlayer->field_510, + (float)pPlayer->field_514); + proc_7F058068(afStack132,afStack68); + proc_7F0585FC((360.00000000 - pPlayer->vv_theta) * flt_800550D8,extraout_a0_00,afStack132); + proc_7F058068(afStack132,afStack68); + pPlayer->field_4C0 = iStack36; + pPlayer->field_4C4 = iStack32; + pPlayer->field_4C8 = iStack28; + pPlayer->field_4CC = iStack52; + pPlayer->field_4D0 = iStack48; + pPlayer->field_4D4 = iStack44; + return; +} + + + +float proc_7F080D60(undefined8 param_1,undefined4 param_2,undefined4 param_3) + +{ + float fVar1; + + if (ptr_playerstank == 0) { + if (pPlayer->field_2A6C == 0) { + fVar1 = (float)proc_7F0B2970(); + } + else { + fVar1 = (float)proc_7F0B2970(); + } + } + else { + fVar1 = (float)proc_7F0B2970(); + fVar1 = fVar1 + dword_80036454; + } + return fVar1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F080DF8(void) + +{ + bool bVar1; + longlong in_v0; + BOOL BVar2; + int iVar3; + longlong in_a0; + float in_a1_lo; + float fVar4; + float fVar5; + float fVar6; + float extraout_f12; + float extraout_f14; + float fVar7; + float local_30; + undefined4 uStack28; + float fStack24; + undefined4 local_14; + int local_10; + float local_c; + int local_4; + + if (in_tank_flag == TRUE) { + fVar4 = proc_7F080D60((longlong)pPlayer->ptr_tile_printmanpos,pPlayer->positionx, + pPlayer->positionz); + fVar5 = flt_800550DC; + *(float *)&pPlayer->clipping_height = fVar4; + iVar3 = 0; + *(float *)&pPlayer->field_6C = (float)pPlayer->field_70 / fVar5; + fVar4 = flt_800550E0; + if (0 < clock_timer) { + do { + iVar3 += 1; + *(float *)&pPlayer->field_6C = + (float)pPlayer->field_6C * fVar4 + (float)pPlayer->clipping_height; + } while (iVar3 < clock_timer); + } + local_4 = 0; + *(float *)&pPlayer->field_70 = (float)pPlayer->field_6C * fVar5; + goto LAB_7f08139c; + } + if (in_a0 == 0) { + local_10 = pPlayer->ptr_tile_printmanpos; + proc_7F08A274(pPlayer->position_data_pointer,&local_14,&fStack24,&uStack28); + local_c = proc_7F080D60((longlong)pPlayer->ptr_tile_printmanpos,pPlayer->positionx, + pPlayer->positionz); + proc_7F089780((int)pPlayer); + proc_7F0B26B8(&local_10,extraout_f12,extraout_f14,(float)pPlayer->positionx, + (float)pPlayer->positionz); + fVar5 = local_c; + if ((-1 < in_v0) && (fVar5 = (float)pPlayer->clipping_height, fVar5 <= local_c)) { + fVar5 = local_c; + } + *(float *)&pPlayer->clipping_height = fVar5; +LAB_7f080fdc: + iVar3 = pPlayer->field_2A6C; + } + else { + *(float *)&pPlayer->clipping_height = (float)pPlayer->clipping_height + in_a1_lo; + fVar5 = proc_7F080D60((longlong)pPlayer->ptr_tile_printmanpos,pPlayer->positionx, + pPlayer->positionz); + if ((float)pPlayer->clipping_height < fVar5) { + *(float *)&pPlayer->clipping_height = fVar5; + goto LAB_7f080fdc; + } + iVar3 = pPlayer->field_2A6C; + } + if (iVar3 == 0) { + fVar5 = (float)pPlayer->field_7C; + } + else { + if ((float)pPlayer->field_70 < (float)pPlayer->clipping_height) { + pPlayer->field_2A6C = 0; + pPlayer->ptr_tile_printmanpos = pPlayer->field_2A70; + pPlayer->field_2A70 = 0; + fVar5 = (float)pPlayer->field_7C; + } + else { + fVar5 = (float)pPlayer->field_7C; + } + } + fVar4 = flt_800550E4; + fVar7 = (float)pPlayer->field_70; + if ((0.00000000 <= fVar5) || (fVar5 = (float)pPlayer->clipping_height, fVar7 < fVar5)) { + iVar3 = 0; + *(float *)&pPlayer->field_6C = fVar7 / flt_800550E4; + fVar5 = flt_800550E8; + if (0 < clock_timer) { + do { + iVar3 += 1; + *(float *)&pPlayer->field_6C = + (float)pPlayer->field_6C * fVar5 + (float)pPlayer->clipping_height; + } while (iVar3 < clock_timer); + } + fVar7 = (float)pPlayer->field_70; + if (fVar7 < (float)pPlayer->clipping_height) { + *(float *)&pPlayer->field_70 = (float)pPlayer->field_6C * fVar4; + fVar7 = (float)pPlayer->field_70; + fVar5 = (float)pPlayer->clipping_height; + goto LAB_7f0810d8; + } + bVar1 = (float)pPlayer->clipping_height < fVar7; + } + else { +LAB_7f0810d8: + bVar1 = fVar5 < fVar7; + } + local_4 = 0; + fVar5 = (float)pPlayer->field_7C; + if (bVar1) { + local_4 = 0; + BVar2 = get_debug_fast_bond_flag(); + if (((BVar2 == FALSE) || (DAT_80079990 != 0.00000000)) || (DAT_80079998 != 0.00000000)) { + local_30 = player_gravity_modifier; + } + else { + local_30 = flt_800550EC; + } + fVar4 = (float)pPlayer->clipping_height; + fVar6 = fVar5 - global_timer_delta * local_30; + fVar7 = fVar7 + global_timer_delta * (fVar5 + fVar6) * 0.50000000; + if (fVar7 < fVar4) { + fVar5 = (float)pPlayer->field_70 - fVar4; + fVar6 = sqrtf((float)pPlayer->field_7C * (float)pPlayer->field_7C + + (((fVar5 + fVar5) * player_view_gravity_modifier) / 60.00000000) * + 60.00000000); + fVar6 = -fVar6; + fVar7 = fVar4; + if (pPlayer->field_2A6C != 0) { + pPlayer->field_2A6C = 0; + pPlayer->ptr_tile_printmanpos = pPlayer->field_2A70; + pPlayer->field_2A70 = 0; + } + } + *(float *)&pPlayer->field_70 = fVar7; + *(float *)&pPlayer->field_7C = fVar6; + fVar5 = (float)pPlayer->field_7C; + } + if (fVar5 < 0.00000000) { + if ((float)pPlayer->field_70 <= (float)pPlayer->clipping_height) { + if (fVar5 < flt_800550F8) { + pPlayer->field_8C = 0xf; + pPlayer->field_90 = -90.00000000; +LAB_7f08130c: + pPlayer->field_7C = 0.00000000; + } + else { + if (fVar5 < -5.00000000) { + pPlayer->field_8C = 0xf; + *(float *)&pPlayer->field_90 = + ((-5.00000000 - (float)pPlayer->field_7C) * -90.00000000) / flt_800550FC; + goto LAB_7f08130c; + } + pPlayer->field_7C = 0.00000000; + } + iVar3 = pPlayer->field_2A6C; + } + else { + iVar3 = pPlayer->field_2A6C; + } + } + else { + iVar3 = pPlayer->field_2A6C; + } + if (iVar3 != 0) { + fVar5 = proc_7F089780((int)pPlayer); + fVar4 = (float)proc_7F0B2970(); + if ((float)pPlayer->field_70 + fVar5 < fVar4) { + pPlayer->field_2A6C = 0; + pPlayer->ptr_tile_printmanpos = pPlayer->field_2A70; + pPlayer->field_2A70 = 0; + } + } +LAB_7f08139c: + fVar5 = flt_80055100; + if (0 < clock_timer) { + do { + if (pPlayer->field_8C < 1) { + fVar4 = (float)pPlayer->field_90; + if (fVar4 < 0.00000000) { + *(float *)&pPlayer->field_90 = fVar4 - -4.50000000; + fVar4 = (float)pPlayer->field_90; + if (0.00000000 <= fVar4) { + pPlayer->field_90 = 0.00000000; + fVar4 = (float)pPlayer->field_90; + fVar7 = (float)pPlayer->field_84; + } + else { + fVar7 = (float)pPlayer->field_84; + } + } + else { + fVar7 = (float)pPlayer->field_84; + } + *(float *)&pPlayer->field_84 = fVar7 * fVar5 + fVar4; + } + else { + *(float *)&pPlayer->field_84 = + (float)pPlayer->field_84 * fVar5 + (float)pPlayer->field_90; + pPlayer->field_8C = pPlayer->field_8C + -1; + } + local_4 += 1; + } while (local_4 < clock_timer); + } + *(float *)&pPlayer->field_88 = (float)pPlayer->field_84 * flt_80055104; + return; +} + + + +void proc_7F081478(void) + +{ + undefined4 uVar1; + int iVar2; + float fVar3; + float fVar4; + float in_f12; + float in_f14; + float fVar5; + int local_c [3]; + + fVar4 = 30.00000000; + *(float *)&pPlayer->field_29BC = + (float)pPlayer->field_500 * pPlayersPerm->player_perspective_height + 7.00000000; + fVar3 = (float)pPlayer->field_29BC + + ((float)pPlayer->field_88 + (float)pPlayer->ducking_height_offset) * + pPlayersPerm->player_perspective_height; + if (fVar3 < 30.00000000) { + fVar5 = (float)pPlayer->field_70; + } + else { + fVar5 = (float)pPlayer->field_70; + fVar4 = fVar3; + } + *(float *)&pPlayer->positiony = fVar5 + fVar4; + if ((((cameramode == UNK5_CAM) || (cameramode == UNK6_CAM)) || (cameramode == POSEND_CAM)) && + (pPlayer->ptr_char_objectinstance != 0)) { + iVar2 = pPlayer->bonddead; + } + else { + *(f32 *)&pPlayer->field_4B4 = pPlayer->positionx; + pPlayer->field_4B8 = pPlayer->positiony; + pPlayer->field_4BC = pPlayer->positionz; + iVar2 = pPlayer->bonddead; + } + if (((iVar2 != 0) && (0.00000000 < (float)pPlayer->field_29C0)) && + (*(float *)&pPlayer->field_29C0 = (float)pPlayer->field_29C0 - 0.25000000, + (float)pPlayer->field_29C0 < 0.00000000)) { + pPlayer->field_29C0 = 0.00000000; + } + if (pPlayer->vv_verta < 0.00000000) { + *(float *)&pPlayer->field_4B8 = + (float)pPlayer->field_4B8 + + -(1.00000000 - (float)pPlayer->vv_cosverta) * (float)pPlayer->field_29C0; + local_c[0] = pPlayer->ptr_tile_printmanpos; + } + else { + local_c[0] = pPlayer->ptr_tile_printmanpos; + } + uVar1 = do_stanlinelog; + do_stanlinelog = 0; + proc_7F0B0BE4(local_c,in_f12,in_f14,(float)pPlayer->positionx,(float)pPlayer->positionz); + do_stanlinelog = uVar1; + pPlayer->room_tile_ptr = local_c[0]; + pPlayer->field_4A4 = pPlayer->field_4B4; + pPlayer->field_4AC = pPlayer->field_4BC; + fVar4 = proc_7F080D60((longlong)pPlayer->room_tile_ptr,pPlayer->field_4B4,pPlayer->field_4BC); + *(float *)&pPlayer->field_4A8 = fVar4; + iVar2 = 0; + *(int *)(pPlayer->position_data_pointer + 0x14) = pPlayer->ptr_tile_printmanpos; + *(f32 *)(pPlayer->position_data_pointer + 8) = pPlayer->positionx; + *(int *)(pPlayer->position_data_pointer + 0xc) = pPlayer->positiony; + *(int *)(pPlayer->position_data_pointer + 0x10) = pPlayer->positionz; + fVar4 = flt_80055108; + if (0 < clock_timer) { + do { + iVar2 += 1; + *(float *)&pPlayer->field_3B8 = + (float)pPlayer->field_4B4 + fVar4 * (float)pPlayer->field_3B8; + *(float *)&pPlayer->field_3BC = + (float)pPlayer->field_4B8 + fVar4 * (float)pPlayer->field_3BC; + *(float *)&pPlayer->field_3C0 = + (float)pPlayer->field_4BC + fVar4 * (float)pPlayer->field_3C0; + } while (iVar2 < clock_timer); + } + fVar4 = flt_8005510C; + *(float *)&pPlayer->field_3C4 = (float)pPlayer->field_3B8 * flt_8005510C; + *(float *)&pPlayer->field_3C8 = (float)pPlayer->field_3BC * fVar4; + *(float *)&pPlayer->field_3CC = (float)pPlayer->field_3C0 * fVar4; + return; +} + + + +void proc_7F081790(void) + +{ + float fVar1; + + fVar1 = pPlayer->vv_verta; + while (fVar1 < -180.00000000) { + pPlayer->vv_verta = fVar1 + 360.00000000; + fVar1 = pPlayer->vv_verta; + } + while (180.00000000 <= fVar1) { + pPlayer->vv_verta = fVar1 - 360.00000000; + fVar1 = pPlayer->vv_verta; + } + if (90.00000000 < fVar1) { + pPlayer->vv_verta = 90.00000000; + } + else { + if (fVar1 < -90.00000000) { + pPlayer->vv_verta = -90.00000000; + } + } + fVar1 = cosf(pPlayer->vv_theta * flt_80055110); + *(float *)&pPlayer->vv_costheta = fVar1; + fVar1 = sinf(pPlayer->vv_theta * flt_80055114); + *(float *)&pPlayer->vv_sintheta = fVar1; + *(float *)&pPlayer->vv_verta360 = pPlayer->vv_verta; + fVar1 = (float)pPlayer->vv_verta360; + if (fVar1 < 0.00000000) { + *(float *)&pPlayer->vv_verta360 = fVar1 + 360.00000000; + fVar1 = (float)pPlayer->vv_verta360; + } + fVar1 = cosf(fVar1 * flt_80055118); + *(float *)&pPlayer->vv_cosverta = fVar1; + fVar1 = sinf((float)pPlayer->vv_verta360 * flt_8005511C); + *(float *)&pPlayer->vv_sinverta = fVar1; + *(float *)&pPlayer->field_498 = -(float)pPlayer->vv_sintheta; + pPlayer->field_49C = 0; + *(f32 *)&pPlayer->field_4A0 = pPlayer->vv_costheta; + return; +} + + + +// WARNING: Instruction at (ram,0x7f0837d8) overlaps instruction at (ram,0x7f0837d4) +// +// WARNING: Unknown calling convention yet parameter storage is locked + +void controller_gameplay_interaction(void) + +{ + bool bVar1; + bool bVar2; + bool bVar3; + bool bVar4; + ushort uVar5; + ushort uVar6; + ushort uVar7; + ushort uVar8; + ushort uVar9; + uint uVar10; + u32 uVar11; + undefined4 uVar12; + ITEM_IDS item; + int iVar13; + ulonglong invincible; + s32 numplayers; + int invisibletoguards; + longlong firing; + ushort uVar14; + char in_a0_lo; + undefined4 extraout_a0_lo; + undefined4 extraout_a0_lo_00; + undefined4 extraout_a0_lo_01; + undefined4 extraout_a0_lo_02; + undefined4 extraout_a0_lo_03; + undefined4 extraout_a0_lo_04; + char in_a1_lo; + undefined4 extraout_a1_lo; + undefined4 extraout_a1_lo_00; + undefined4 extraout_a1_lo_01; + undefined4 extraout_a1_lo_02; + undefined4 extraout_a1_lo_03; + undefined4 uVar15; + undefined4 extraout_a1_lo_04; + ushort in_a2_lo; + ushort in_a3_lo; + ushort uVar16; + uint uVar17; + float extraout_f0; + float extraout_f0_00; + float fVar18; + float vector1; + f32 extraout_f12; + float fVar19; + f32 extraout_f14; + uint uStack380; + undefined4 uStack288; + undefined4 uStack284; + float fStack280; + float fStack276; + float fStack272; + float fStack268; + float fStack260; + u32 uStack256; + float fStack252; + float fStack220; + int iStack212; + int iStack204; + ushort uStack198; + ushort uStack196; + ushort uStack194; + uint uStack192; + uint uStack188; + uint uStack184; + uint uStack180; + int iStack176; + int iStack172; + ushort uStack166; + ushort uStack164; + char cStack162; + char cStack161; + int iStack160; + int iStack156; + int iStack152; + int iStack148; + int iStack144; + int iStack140; + int iStack128; + uint uStack124; + uint uStack120; + int iStack116; + uint uStack112; + uint uStack108; + uint uStack104; + uint uStack100; + float fStack96; + float zoom; + int iStack88; + int iStack84; + uint uStack80; + uint uStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + uint uStack48; + uint uStack44; + uint uStack40; + uint uStack36; + uint uStack32; + uint uStack28; + uint uStack24; + uint uStack20; + uint uStack16; + uint uStack12; + int iStack8; + uint uStack4; + + uStack4 = 0; + iStack8 = 0; + uStack12 = 0; + uStack16 = 0; + uStack20 = 0; + uStack24 = 0; + uStack28 = 0; + uStack32 = 0; + uStack36 = 0; + uStack40 = 0; + uStack44 = 0; + uStack48 = 0; + uStack76 = 0; + uStack80 = 0; + iStack84 = 0; + iStack88 = 0; + uStack100 = 0; + uStack104 = 0; + uStack108 = 0; + uStack112 = 0; + iStack116 = 0; + uStack120 = 0; + fStack52 = 0.00000000; + fStack56 = 0.00000000; + fStack60 = 0.00000000; + fStack64 = 0.00000000; + fStack68 = 0.00000000; + fStack72 = 0.00000000; + zoom = 0.00000000; + fStack96 = 0.00000000; + uVar11 = get_cur_player_look_vertical_inverted(); + uStack124 = (uint)(uVar11 == 0); + iStack128 = 0; + if (in_a0_lo < -5) { + iStack156 = (int)in_a0_lo + 5; + } + else { + iStack156 = 0; + if ('\x05' < in_a0_lo) { + iStack156 = (int)in_a0_lo + -5; + } + } + if (in_a1_lo < -5) { + iStack160 = (int)in_a1_lo + 5; + } + else { + iStack160 = 0; + if ('\x05' < in_a1_lo) { + iStack160 = (int)in_a1_lo + -5; + } + } + iStack140 = (int)in_a0_lo; + iStack144 = (int)in_a1_lo; + iStack152 = iStack160; + iStack148 = iStack156; + if (((pPlayer->bonddead == 0) && (camera_80036424 < 1)) && + ((((pPlayer->pause_animation_state != 5 && ((in_a2_lo & ~in_a3_lo & 0x1000) != 0)) || + ((pPlayer->pause_animation_state == 5 && (pPlayer->open_close_solo_watch_menu != 0)))) && + (numplayers = get_num_players(), numplayers == 1)))) { + trigger_solo_watch_menu(0); + } + if (((pPlayer->pause_animation_state == 0) && (pPlayer->bonddead == 0)) && + ((numplayers = get_num_players(), numplayers == 1 || + ((stop_play_flag == 0 && (is_gameover_flag == 0)))))) { + numplayers = cur_player_get_control_type(); + if ((numplayers == 6) || + (((numplayers = cur_player_get_control_type(), numplayers == 7 || + (numplayers = cur_player_get_control_type(), numplayers == 5)) || + (numplayers = cur_player_get_control_type(), numplayers == 4)))) { + uVar16 = in_a2_lo & ~in_a3_lo; + uVar11 = get_cur_playernum(); + numplayers = get_num_players(); + numplayers = get_cur_controller_horz_stick_pos + ((char)((numplayers + uVar11) * 0x1000000 >> 0x18)); + cStack161 = (char)numplayers; + uVar11 = get_cur_playernum(); + numplayers = get_num_players(); + numplayers = get_cur_controller_vert_stick_pos + ((char)((numplayers + uVar11) * 0x1000000 >> 0x18)); + cStack162 = (char)numplayers; + uVar11 = get_cur_playernum(); + numplayers = get_num_players(); + uVar11 = get_controller_buttons_held + ((char)((numplayers + uVar11) * 0x1000000 >> 0x18), + R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + uStack164 = (ushort)uVar11; + uStack166 = pPlayer->field_3B6; + if (cStack161 < -5) { + iStack172 = (int)cStack161 + 5; + } + else { + iStack172 = 0; + if ('\x05' < cStack161) { + iStack172 = (int)cStack161 + -5; + } + } + iStack176 = (int)cStack162 + 5; + if ((-6 < cStack162) && (iStack176 = (int)cStack162 + -5, cStack162 < '\x06')) { + iStack176 = 0; + } + numplayers = cur_player_get_control_type(); + if ((numplayers == 4) || (numplayers = cur_player_get_control_type(), numplayers == 6)) + { + iStack156 = iStack172; + iStack152 = iStack176; + } + else { + if (in_tank_flag == TRUE) { + if (pPlayer->insightaimmode == 0) { + iStack148 = iStack172; + } + else { + iStack156 = iStack172; + } + } + else { + iStack156 = iStack172; + } + iStack160 = iStack176; + } + numplayers = cur_player_get_control_type(); + if ((numplayers == 4) || (numplayers = cur_player_get_control_type(), numplayers == 5)) + { + uVar5 = uStack164 & 0x2000; + uVar14 = uStack164 & ~uStack166; + uVar6 = in_a2_lo & 0x2000; + uVar7 = uVar14; + uVar8 = uVar16; + } + else { + uVar5 = in_a2_lo & 0x2000; + uVar14 = uStack164 & ~uStack166; + uVar6 = uStack164 & 0x2000; + uVar7 = uVar16; + uVar8 = uVar14; + } + uVar9 = uStack164; + uStack180 = (uint)(uVar6 != 0); + uStack184 = (uint)((uVar8 & 0x2000) != 0); + uStack188 = (uint)(uVar5 != 0); + uStack192 = (uint)((uVar7 & 0x2000) != 0); + invisibletoguards = get_controls_locked_flag(); + if ((invisibletoguards == 0) && (firing = proc_7F0C24BC(), firing != 0)) { + invisibletoguards = cur_player_get_aim_control(); + if (invisibletoguards == 0) { + pPlayer->insightaimmode = uStack188; + } + else { + if (uStack192 != 0) { + pPlayer->insightaimmode = (uint)(pPlayer->insightaimmode == 0); + } + } + iStack88 = pPlayer->insightaimmode; + bVar4 = (uVar16 & 0x4000) != 0; + uStack120 = (uint)(iStack88 == 0); + bVar1 = bVar4; + if (!bVar4) { + bVar1 = (uVar14 & 0x4000) != 0; + } + uStack16 = (uint)bVar1; + uStack32 = (uint)(iStack88 == 0); + uStack24 = 1; + if (((iStack88 != 0) && ('<' < in_a1_lo)) && + (fStack60 = (float)((int)in_a1_lo + -0x3c) / 10.00000000, 1.00000000 < fStack60)) + { + fStack60 = 1.00000000; + } + if (((iStack88 != 0) && (in_a1_lo < -0x3c)) && + (fStack64 = (float)(-0x3c - (int)in_a1_lo) / 10.00000000, 1.00000000 < fStack64)) + { + fStack64 = 1.00000000; + } + if (((iStack88 != 0) && (in_a0_lo < -0x3c)) && + (fStack68 = (float)(-0x3c - (int)in_a0_lo) / 10.00000000, 1.00000000 < fStack68)) + { + fStack68 = 1.00000000; + } + if (((iStack88 != 0) && ('<' < in_a0_lo)) && + (fStack72 = (float)((int)in_a0_lo + -0x3c) / 10.00000000, 1.00000000 < fStack72)) + { + fStack72 = 1.00000000; + } + bVar1 = (in_a2_lo & 0x8000) != 0; + if ((bVar1) || (bVar2 = (uVar9 & 0x8000) != 0, bVar2)) { + bVar2 = uStack184 != 0; + } + uStack76 = (uint)bVar2; + bVar2 = (uVar16 & 0x8000) != 0; + if ((bVar2) || (bVar3 = (uVar14 & 0x8000) != 0, bVar3)) { + bVar3 = uStack180 == 0; + } + uStack80 = (uint)bVar3; + iStack84 = iStack88; + uStack28 = uStack32; + uStack20 = uStack32; + iStack8 = iStack88; + uStack4 = uStack120; + item = get_item_in_hand(0); + invisibletoguards = check_special_attributes(item,0x8000); + if ((invisibletoguards != 0) && (pPlayer->insightaimmode != 0)) { + if (iStack176 < 0) { + zoom = (float)-iStack176 / 70.00000000; + if (1.00000000 < zoom) { + zoom = 2.00000000; + } + else { + zoom = zoom + zoom; + } + } + if (0 < iStack176) { + fStack96 = (float)iStack176 / 70.00000000; + if (1.00000000 < fStack96) { + fStack96 = 2.00000000; + } + else { + fStack96 = fStack96 + fStack96; + } + } + } + item = get_item_in_hand(0); + invisibletoguards = check_special_attributes(item,0x8000); + uStack100 = (uint)(invisibletoguards == 0); + if ((invisibletoguards == 0) && + (bVar3 = pPlayer->insightaimmode != 0, uStack100 = (uint)bVar3, bVar3)) { + uStack100 = (uint)(cStack162 < -0x1e); + } + item = get_item_in_hand(0); + invisibletoguards = check_special_attributes(item,0x8000); + uStack104 = (uint)(invisibletoguards == 0); + if ((invisibletoguards == 0) && + (bVar3 = pPlayer->insightaimmode != 0, uStack104 = (uint)bVar3, bVar3)) { + uStack104 = (uint)(cStack162 < '\x1f') ^ 1; + } + if ((((((bVar1) && (bVar4)) || (((in_a2_lo & 0x4000) != 0 && (bVar2)))) || + (((uVar9 & 0x8000) != 0 && ((uVar14 & 0x4000) != 0)))) || + (((uVar9 & 0x4000) != 0 && ((uVar14 & 0x8000) != 0)))) && + (item = get_item_in_hand(0), item == ITEM_REMOTEMINE)) { + iStack116 = 1; + uStack76 = 0; + uStack80 = 0; + uStack16 = 0; + } + if ((in_tank_flag == TRUE) && (pPlayer->insightaimmode != 0)) { + item = get_item_in_hand(0); + if (item == ITEM_TANKSHELLS) { + iStack140 = 0; + if (iStack156 == 0) { + iStack156 = iStack148; + } + } + else { + if (iStack156 == 0) { + if (0.00000000 < fStack68) { + fStack52 = fStack68; + } + if (0.00000000 < fStack72) { + fStack56 = fStack72; + } + } + } + fStack68 = 0.00000000; + fStack72 = 0.00000000; + } + } + uStack12 = (uint)(uStack180 != 0); + if (uStack180 != 0) { + bVar4 = pPlayer->pause_animation_state == 0; + if (bVar4) { + bVar4 = (in_a2_lo & 0x8000) == 0; + uStack12 = (uint)bVar4; + if (!bVar4) goto LAB_7f0822a8; + bVar4 = (uVar9 & 0x8000) == 0; + } + uStack12 = (uint)bVar4; + } +LAB_7f0822a8: + iStack128 = 1; + pPlayer->field_3B6 = uStack164; + } + else { + numplayers = cur_player_get_control_type(); + if ((numplayers == 2) || (numplayers = cur_player_get_control_type(), numplayers == 3)) + { + uStack194 = 0x8000; + uStack196 = 0x2000; + uStack198 = 0x30; + } + else { + uStack194 = 0x2000; + uStack196 = 0x30; + uStack198 = 0x8000; + } + invisibletoguards = get_controls_locked_flag(); + if ((invisibletoguards == 0) && (firing = proc_7F0C24BC(), firing != 0)) { + uVar16 = in_a2_lo & ~in_a3_lo; + invisibletoguards = cur_player_get_aim_control(); + if (invisibletoguards == 0) { + pPlayer->insightaimmode = (uint)((in_a2_lo & uStack196) != 0); + } + else { + if ((uVar16 & uStack196) != 0) { + pPlayer->insightaimmode = (uint)(pPlayer->insightaimmode == 0); + } + } + iStack8 = pPlayer->insightaimmode; + bVar4 = (uVar16 & 0x4000) != 0; + uStack120 = (uint)(iStack8 == 0); + uStack16 = (uint)bVar4; + uStack4 = uStack120; + numplayers = cur_player_get_control_type(); + if ((numplayers == 1) || + (numplayers = cur_player_get_control_type(), numplayers == 3)) { + bVar1 = (in_a2_lo & 0x202) != 0; + uVar17 = (uint)bVar1; + if (bVar1) { + if (pPlayer->insightaimmode == 0) { + if (in_tank_flag == TRUE) { + fStack68 = 1.00000000; + } + else { + uStack44 = 1; + } + } + else { + fStack52 = 1.00000000; + } + } + bVar2 = (in_a2_lo & 0x101) != 0; + uStack380 = (uint)bVar2; + iStack88 = pPlayer->insightaimmode; + if (bVar2) { + if (iStack88 == 0) { + if (in_tank_flag == TRUE) { + fStack72 = 1.00000000; + } + else { + uStack48 = 1; + } + } + else { + fStack56 = 1.00000000; + } + } + bVar2 = iStack88 == 0; + bVar3 = bVar2; + if (bVar2) { + bVar3 = (in_a2_lo & 0x808) != 0; + } + uStack36 = (uint)bVar3; + bVar3 = bVar2; + if (bVar2) { + bVar3 = (in_a2_lo & 0x404) != 0; + } + uStack40 = (uint)bVar3; + uStack32 = (uint)bVar2; + uVar10 = uStack32; + if (in_tank_flag != TRUE) { + uStack28 = (uint)bVar2; + uVar17 = (uint)bVar1; + uVar10 = uStack24; + } + } + else { + bVar1 = (in_a2_lo & 0x202) != 0; + uVar17 = (uint)bVar1; + if (bVar1) { + fStack52 = 1.00000000; + } + bVar2 = (in_a2_lo & 0x101) != 0; + if (bVar2) { + fStack56 = 1.00000000; + } + iStack88 = pPlayer->insightaimmode; + bVar3 = iStack88 == 0; + uStack44 = (uint)(bVar3 && bVar1); + uStack380 = (uint)bVar2; + uStack48 = (uint)(bVar3 && bVar2); + uStack20 = (uint)bVar3; + if ((iStack88 == 0) && ((in_a2_lo & 0x808) != 0)) { + fStack60 = 1.00000000; + } + if ((iStack88 == 0) && ((in_a2_lo & 0x404) != 0)) { + fStack64 = 1.00000000; + } + uStack28 = (uint)bVar3; + uVar10 = uStack24; + } + uStack24 = uVar10; + if ((iStack88 == 0) || (in_a1_lo < '=')) { + if ((iStack88 != 0) && + ((in_a1_lo < -0x3c && + (fStack64 = (float)(-0x3c - (int)in_a1_lo) / 10.00000000, + 1.00000000 < fStack64)))) { + fStack64 = 1.00000000; + } + } + else { + fStack60 = (float)((int)in_a1_lo + -0x3c) / 10.00000000; + if (1.00000000 < fStack60) { + fStack60 = 1.00000000; + } + } + if (((iStack88 != 0) && (in_a0_lo < -0x3c)) && + (fStack68 = (float)(-0x3c - (int)in_a0_lo) / 10.00000000, 1.00000000 < fStack68)) + { + fStack68 = 1.00000000; + } + if (((iStack88 != 0) && ('<' < in_a0_lo)) && + (fStack72 = (float)((int)in_a0_lo + -0x3c) / 10.00000000, 1.00000000 < fStack72)) + { + fStack72 = 1.00000000; + } + bVar1 = (in_a2_lo & uStack198) != 0; + bVar2 = bVar1; + if (bVar1) { + bVar2 = (uVar16 & uStack194) != 0; + } + uStack76 = (uint)bVar2; + bVar3 = (uVar16 & uStack198) != 0; + bVar2 = bVar3; + if (bVar3) { + bVar2 = (in_a2_lo & uStack194) == 0; + } + uStack80 = (uint)bVar2; + iStack84 = iStack88; + item = get_item_in_hand(0); + invisibletoguards = check_special_attributes(item,0x8000); + if (invisibletoguards != 0) { + if (pPlayer->insightaimmode != 0) { + if ((in_a2_lo & 0x404) != 0) { + zoom = 1.00000000; + } + if ((in_a2_lo & 0x808) != 0) { + fStack96 = 1.00000000; + } + } + } + item = get_item_in_hand(0); + invisibletoguards = check_special_attributes(item,0x8000); + uStack100 = (uint)(invisibletoguards == 0); + if ((invisibletoguards == 0) && + (bVar2 = pPlayer->insightaimmode != 0, uStack100 = (uint)bVar2, bVar2)) { + uStack100 = (uint)((in_a2_lo & 0x404) != 0); + } + item = get_item_in_hand(0); + invisibletoguards = check_special_attributes(item,0x8000); + uStack104 = (uint)(invisibletoguards == 0); + if ((invisibletoguards == 0) && + (bVar2 = pPlayer->insightaimmode != 0, uStack104 = (uint)bVar2, bVar2)) { + uStack104 = (uint)((~in_a2_lo & 0x808) != 0); + } + bVar2 = pPlayer->insightaimmode != 0; + uStack112 = (uint)bVar2; + uStack108 = uStack112; + if (bVar2) { + uStack112 = uStack380; + uStack108 = uVar17; + } + if ((((bVar1) && (bVar4)) || (((in_a2_lo & 0x4000) != 0 && (bVar3)))) && + (item = get_item_in_hand(0), item == ITEM_REMOTEMINE)) { + iStack116 = 1; + uStack76 = 0; + uStack80 = 0; + uStack16 = 0; + } + if ((in_tank_flag == TRUE) && (pPlayer->insightaimmode != 0)) { + item = get_item_in_hand(0); + if (item == ITEM_TANKSHELLS) { + iStack140 = 0; + uStack24 = 1; + } + else { + if ((fStack52 == 0.00000000) && (fStack56 == 0.00000000)) { + if (0.00000000 < fStack68) { + fStack52 = fStack68; + } + if (0.00000000 < fStack72) { + fStack56 = fStack72; + } + } + } + fStack68 = 0.00000000; + fStack72 = 0.00000000; + } + } + bVar4 = (in_a2_lo & uStack194) != 0; + uStack12 = (uint)bVar4; + if ((bVar4) && + (bVar4 = pPlayer->pause_animation_state == 0, uStack12 = (uint)bVar4, bVar4)) { + uStack12 = (uint)((in_a2_lo & uStack198) == 0); + } + numplayers = cur_player_get_control_type(); + if ((numplayers == 1) || (numplayers = cur_player_get_control_type(), numplayers == 3)) + { + iStack128 = 1; + } + } + } + pPlayer->field_D0 = 0; + if (uStack16 != 0) { + if (in_tank_flag == TRUE) { + iStack204 = *(int *)(ptr_playerstank + 4); + uVar12 = get_ammo_count_for_weapon(0x20); + *(undefined4 *)(iStack204 + 0xd8) = uVar12; + add_ammo_to_weapon(0x20,0); + proc_7F08C61C(0x20); + item = get_item_in_hand(0); + if (item == ITEM_TANKSHELLS) { + invisibletoguards = get_ammo_in_hands_magazine(0); + *(int *)(iStack204 + 0xd8) = *(int *)(iStack204 + 0xd8) + invisibletoguards; + autoadvance_on_deplete_all_ammo(); + } + *(undefined4 *)(iStack204 + 0xc4) = 0; + in_tank_flag = FALSE; + pPlayer->speedsideways = 0.00000000; + pPlayer->speedforwards = 0.00000000; + pPlayer->speedtheta = 0.00000000; + invisibletoguards = 0; + do { + iVar13 = invisibletoguards + 4; + *(undefined4 *)((int)&pPlayer->boost_factor_x + invisibletoguards) = 0; + invisibletoguards = iVar13; + } while (iVar13 != 0xc); + pPlayer->crouchposition = 2; + } + else { + if ((((ptr_playerstank == NULL) || (*ptr_playerstank != '\x01')) || + (*(char *)(*(int *)(ptr_playerstank + 4) + 3) != '-')) || (dword_80036480 == 0)) { + pPlayer->field_D0 = 1; + } + else { + iStack212 = *(int *)(ptr_playerstank + 4); + add_item_to_inventory(ITEM_TANKSHELLS); + add_ammo_to_weapon(0x20,*(int *)(iStack212 + 0xd8)); + dword_8003646C = *(float *)(iStack212 + 200); + *(undefined4 *)(iStack212 + 0xd8) = 0; + dword_80036470 = dword_8003646C / flt_80055120; + dword_80036484 = *(undefined4 *)(iStack212 + 0xcc); + dword_80036474 = *(float *)(iStack212 + 0xcc); + dword_80036478 = dword_80036474 / flt_80055124; + dword_8003647C = 0; + dword_80036464 = *(undefined4 *)(iStack212 + 0xdc); + dword_80036460 = 0.00000000; + in_tank_flag = TRUE; + DAT_800799b8 = 0; + pPlayer->speedsideways = 0.00000000; + pPlayer->speedforwards = 0.00000000; + pPlayer->speedtheta = 0.00000000; + pPlayer->crouchposition = 1; + DAT_800799bc = 0; + f32_800799c0 = 1.00000000; + copy_bond_azimuth = pPlayer->vv_theta; + copy_bond_inclination_angle1 = pPlayer->vv_verta; + copy_bond_posx = pPlayer->positionx; + copy_bond_posy = pPlayer->positiony; + copy_bond_posz = pPlayer->positionz; + dword_80036490 = 0; + proc_7F07C7B4(); + } + } + } + fVar19 = fStack64; + if (uStack124 == 0) { + iStack144 = -(int)in_a1_lo; + iStack152 = -iStack152; + fStack64 = fStack60; + fStack60 = fVar19; + } + invincible = check_if_bond_is_invincible(); + if ((invincible != 0) && (numplayers = get_num_players(), numplayers == 1)) { + uStack12 = 0; + } + proc_7F067420(uStack12); + invisibletoguards = get_invisible_to_guards_flag(); + if ((invisibletoguards != 0) && + ((firing = get_hands_firing_status(0), firing != 0 || + (firing = get_hands_firing_status(1), firing != 0)))) { + fStack220 = 0.00000000; + firing = get_hands_firing_status(0); + if ((firing != 0) && (fVar19 = extraout_f0, proc_7F067174(0), 0.00000000 < fVar19)) { + proc_7F067174(0); + fStack220 = fVar19; + } + firing = get_hands_firing_status(1); + if ((firing != 0) && (fVar19 = extraout_f0_00, proc_7F067174(1), fStack220 < fVar19)) { + proc_7F067174(1); + fStack220 = fVar19; + } + proc_7F022EEC(); + } + set_unset_bitflags(2,iStack84); + if (0.00000000 < zoom) { + camera_sniper_zoom(zoom); + } + if (0.00000000 < fStack96) { + proc_7F05DE94(fStack96); + } + if (pPlayer->pause_animation_state == 0) { + if (iStack88 != 0) { + proc_7F05DD38(); + } + proc_7F07E46C(); + proc_7F07E62C(); + } + if (in_tank_flag == TRUE) { + dword_80036488 = 0.00000000; + if (DAT_800799b8 == 2) { + if (0.00000000 < fStack56) { + dword_80036488 = global_timer_delta * fStack56 * flt_80055128 + 0.00000000; + } + else { + if (0.00000000 < fStack52) { + dword_80036488 = 0.00000000 - global_timer_delta * fStack52 * flt_8005512C; + } + else { + if (uStack24 != 0) { + fVar19 = 1.00000000; + if ((float)iStack156 / 70.00000000 <= 1.00000000) { + fVar19 = (float)iStack156 / 70.00000000; + } + fVar18 = -1.00000000; + if (-1.00000000 <= fVar19) { + fVar18 = fVar19; + } + dword_80036488 = flt_80055130 * fVar18 * global_timer_delta + 0.00000000; + } + } + } + fVar19 = 1.00000000; + if (pPlayer->insightaimmode == 0) { + if (uStack20 == 0) { + fVar18 = fVar19; + if ((uStack36 == 0) && (fVar18 = 0.00000000, uStack40 != 0)) { + fVar18 = -1.00000000; + } + } + else { + fVar18 = (float)iStack160 / 70.00000000; + } + if (1.00000000 < fVar18) { + vector1 = 1.00000000; + } + else { + vector1 = -1.00000000; + if (-1.00000000 <= fVar18) { + vector1 = fVar18; + } + } + vector1 = vector1 * 15.00000000; + if (0 < dword_80036490) { + fVar19 = 4.00000000; + dword_80036490 -= clock_timer; + vector1 = vector1 * 0.50000000; + } + fVar18 = pPlayer->speedforwards; + if (vector1 != fVar18) { + if (fVar18 < vector1) { + pPlayer->speedforwards = + fVar18 + (((((vector1 - fVar18) * 0.25000000) / 15.00000000 + + 0.50000000) * fVar19 * 10.00000000) / 60.00000000) * + global_timer_delta; + if (vector1 < pPlayer->speedforwards) { + pPlayer->speedforwards = vector1; + } + } + else { + if ((vector1 < fVar18) && + (pPlayer->speedforwards = + fVar18 + (((((fVar18 - vector1) * 0.25000000) / 15.00000000 + + 0.50000000) * fVar19 * -10.00000000) / 60.00000000) * + global_timer_delta, pPlayer->speedforwards < vector1)) { + pPlayer->speedforwards = vector1; + } + } + } + } + } + } + else { + if (uStack44 == 0) { + if (uStack48 == 0) { + proc_7F07FCC4(0); + } + else { + proc_7F07FCC4(1); + } + } + else { + proc_7F07FCC4(-1); + } + if (uStack24 != 0) { + pPlayer->speedsideways = (float)iStack156 / 70.00000000; + } + if (uStack36 == 0) { + if (uStack40 == 0) { + proc_7F07FE1C(0); + } + else { + proc_7F07FE1C(-1); + } + } + else { + proc_7F07FE1C(1); + pPlayer->speedmaxtime60 = pPlayer->speedmaxtime60 + clock_timer; + } + if (uStack20 != 0) { + pPlayer->speedforwards = (float)iStack160 / 70.00000000; + if (iStack160 < 0x3d) { + pPlayer->speedmaxtime60 = 0; + } + else { + pPlayer->speedmaxtime60 = pPlayer->speedmaxtime60 + clock_timer; + } + } + fVar19 = pPlayer->speedforwards; + if (1.00000000 < fVar19) { + pPlayer->speedforwards = 1.00000000; + fVar19 = pPlayer->speedforwards; + } + if (fVar19 < -1.00000000) { + pPlayer->speedforwards = -1.00000000; + } + fVar19 = pPlayer->speedsideways; + if (1.00000000 < fVar19) { + pPlayer->speedsideways = 1.00000000; + fVar19 = pPlayer->speedsideways; + } + if (fVar19 < -1.00000000) { + pPlayer->speedsideways = -1.00000000; + } + pPlayer->speedforwards = pPlayer->speedforwards * flt_80055134; + pPlayer->speedforwards = pPlayer->speedforwards * (float)pPlayer->speedboost; + if ((uStack20 == 0) && (uStack36 == 0)) { + pPlayer->speedmaxtime60 = 0; + } + if (uStack108 == 0) { + if (uStack112 == 0) { + proc_7F079988(0); + } + else { + proc_7F079988(1); + } + } + else { + proc_7F079988(-1); + } + if (uStack100 == 0) { + if (uStack104 != 0) { + change_crouch_position(2); + } + } + else { + change_crouch_position(-2); + } + } + if (pPlayer->speedmaxtime60 < 0xb4) { + fVar19 = (float)pPlayer->speedboost; + if (1.00000000 < fVar19) { + *(float *)&pPlayer->speedboost = fVar19 - FLOAT_8005513c * global_timer_delta; + fVar19 = (float)pPlayer->speedboost; + } + if (fVar19 < 1.00000000) { + pPlayer->speedboost = 1.00000000; + goto LAB_7f083468; + } + invisibletoguards = pPlayer->pause_animation_state; + } + else { + fVar19 = (float)pPlayer->speedboost; + if (fVar19 < 1.25000000) { + *(float *)&pPlayer->speedboost = fVar19 + flt_80055138 * global_timer_delta; + fVar19 = (float)pPlayer->speedboost; + } + if (1.25000000 < fVar19) { + pPlayer->speedboost = 1.25000000; +LAB_7f083468: + invisibletoguards = pPlayer->pause_animation_state; + } + else { + invisibletoguards = pPlayer->pause_animation_state; + } + } + if (invisibletoguards != 0) goto LAB_7f083b40; + fVar18 = -4.00000000; + if (pPlayer->lookaheadcentreenabled != 0) { + uStack256 = pPlayer->ptr_tile_printmanpos; + fStack260 = 300.00000000; + fStack252 = -4.00000000; + proc_7F08A274(pPlayer->position_data_pointer,&uStack288,&fStack280,&uStack284); + fStack276 = (float)pPlayer->field_498 * 300.00000000 + (float)pPlayer->positionx; + fStack272 = (float)pPlayer->positiony; + fStack268 = (float)pPlayer->field_4A0 * 300.00000000 + (float)pPlayer->positionz; + proc_7F0B1CC4(); + invisibletoguards = proc_7F0B0E24(&uStack256,extraout_f12,extraout_f14,pPlayer->positionx); + if (invisibletoguards == 0) { + proc_7F026298((float *)&pPlayer->positionx,(float *)&pPlayer->field_498,&fStack276); + fVar19 = fStack276 - (float)pPlayer->positionx; + fVar18 = fStack268 - (float)pPlayer->positionz; + fStack260 = sqrtf(fVar19 * fVar19 + fVar18 * fVar18); + fVar19 = proc_7F080D60((longlong)(int)uStack256,fStack276,fStack268); + } + else { + fVar19 = proc_7F080D60((longlong)(int)uStack256,fStack276,fStack268); + } + fVar18 = fStack252; + fStack272 = fVar19; + if (((0.00000000 < fStack260) && + (vector1 = fVar19 - (float)pPlayer->clipping_height, -300.00000000 < vector1)) && + (vector1 < 500.00000000)) { + fVar19 = convert_angle_using_inverse((f32)vector1,(f32)fStack260); + fVar18 = (fVar19 * 360.00000000) / flt_80055140 + -4.00000000; + if (180.00000000 <= fVar18) { + fVar18 = fVar18 - 360.00000000; + } + if (0.00000000 < fVar18) { + fVar18 = fVar18 * flt_80055144; + } + } + } + if (((pPlayer->movecentrerelease != 0) && (iStack160 < 0x28)) && (-0x28 < iStack160)) { + pPlayer->movecentrerelease = 0; + } + if (in_tank_flag == FALSE) { + if (fStack60 <= 0.00000000) { + if (0.00000000 < fStack64) { + pPlayer->field_104 = 0; + goto LAB_7f0836e8; + } + if (iStack128 != 0) { + pPlayer->automovecentre = 0; + goto LAB_7f083830; + } + if (pPlayer->automovecentreenabled == 0) { + if (pPlayer->fastmovecentreenabled == 0) { + pPlayer->field_10C = 0; + } + else { + if ((uStack20 != 0) && ((0x3c < iStack160 || (iStack160 < -0x3c)))) { + fVar19 = pPlayer->vv_verta; + if (fVar19 <= fVar18 + 5.00000000) { + if (fVar18 + -10.00000000 <= fVar19) { + pPlayer->field_10C = 0; + goto LAB_7f083838; + } + invisibletoguards = pPlayer->movecentrerelease; + } + else { + invisibletoguards = pPlayer->movecentrerelease; + } + if (invisibletoguards != 0) { + pPlayer->field_10C = 0; + goto LAB_7f083838; + } + pPlayer->field_104 = 1; + } +LAB_7f083830: + pPlayer->field_10C = 0; + } + } + else { + if (uStack20 == 0) { +LAB_7f08374c: + invisibletoguards = pPlayer->automovecentre; + } + else { + if ((0x3c < iStack160) || (iStack160 < -0x3c)) { + pPlayer->automovecentre = 1; + goto LAB_7f08374c; + } + invisibletoguards = pPlayer->automovecentre; + } + if (invisibletoguards == 0) { + pPlayer->field_10C = 0; + } + else { + fVar19 = pPlayer->vv_verta; + if (fVar19 <= fVar18 + 5.00000000) { + if (fVar18 + -10.00000000 <= fVar19) { + pPlayer->field_10C = 0; + goto LAB_7f083838; + } + invisibletoguards = pPlayer->movecentrerelease; + } + else { + invisibletoguards = pPlayer->movecentrerelease; + } + if (invisibletoguards == 0) { + pPlayer->field_104 = 1; + goto LAB_7f083830; + } + pPlayer->field_10C = 0; + } + } + } + else { + pPlayer->field_104 = 0; +LAB_7f0836e8: + pPlayer->field_10C = 1; + pPlayer->automovecentre = 0; + } +LAB_7f083838: + invisibletoguards = pPlayer->field_104; + } + else { + invisibletoguards = pPlayer->field_104; + } + if (invisibletoguards == 0) { + if (uStack32 == 0) { + if (fStack60 <= 0.00000000) { + if (0.00000000 < fStack64) { + fVar19 = (float)proc_7F080010(); + if ((uStack20 != 0) && ((0x3c < iStack160 || (iStack160 < 0x3c)))) { + pPlayer->movecentrerelease = 1; + } + } + else { + fVar19 = (float)proc_7F080010(); + } + } + else { + fVar19 = (float)proc_7F080010(); + if ((uStack20 != 0) && ((0x3c < iStack160 || (iStack160 < 0x3c)))) { + pPlayer->movecentrerelease = 1; + } + } + } + else { + video_related_23(); + fVar18 = (float)iStack152 / 70.00000000; + if (1.00000000 < fVar18) { + fVar18 = 1.00000000; + bVar4 = true; + } + else { + if (fVar18 < -1.00000000) { + fVar18 = -1.00000000; + bVar4 = false; + } + else { + bVar4 = 0.00000000 <= fVar18; + } + } + vector1 = fVar18; + if (!bVar4) { + vector1 = -fVar18; + } + pPlayer->speedverta = -(fVar18 * vector1) * (fVar19 / 60.00000000); + } + pPlayer->vv_verta = + pPlayer->vv_verta + pPlayer->speedverta * global_timer_delta * 3.50000000; + if (((in_tank_flag == TRUE) && (DAT_800799b8 == 2)) && + (fVar19 = -20.00000000, pPlayer->vv_verta < -20.00000000)) { + pPlayer->vv_verta = -20.00000000; + } + } + else { + if (in_tank_flag == FALSE) { + fVar19 = (pPlayer->speedverta * pPlayer->speedverta * 0.50000000) / flt_80055148; + fStack252 = fVar18; + if (fVar18 + fVar19 < pPlayer->vv_verta) { + proc_7F080010(); + } + else { + if (pPlayer->vv_verta < fVar18 - fVar19) { + proc_7F080010(); + } + else { + proc_7F080010(); + } + } + fVar19 = pPlayer->vv_verta; + fVar18 = pPlayer->speedverta * global_timer_delta; + fVar18 = fVar19 + fVar18 + fVar18; + if ((fVar19 <= fStack252) || (fVar18 <= fStack252)) { + if (fVar19 < fStack252) { + if (fVar18 < fStack252) { + pPlayer->vv_verta = fVar18; + goto LAB_7f083b40; + } + pPlayer->vv_verta = fStack252; + } + else { + pPlayer->vv_verta = fStack252; + } + pPlayer->speedverta = 0.00000000; + if (pPlayer->field_10C == 0) { + pPlayer->field_104 = 0; + } + } + else { + pPlayer->vv_verta = fVar18; + } + } + } +LAB_7f083b40: + if (uStack28 == 0) { + if (0.00000000 < fStack68) { + proc_7F0802C4(); + } + else { + if (0.00000000 < fStack72) { + proc_7F0802C4(); + } + else { + proc_7F0802C4(); + } + } + } + else { + video_related_23(); + fVar18 = (float)iStack148 / 70.00000000; + if (1.00000000 < fVar18) { + vector1 = 1.00000000; + } + else { + vector1 = -1.00000000; + if (-1.00000000 <= fVar18) { + vector1 = fVar18; + } + } + fVar18 = vector1; + if (vector1 < 0.00000000) { + fVar18 = -vector1; + } + pPlayer->speedtheta = vector1 * fVar18 * (fVar19 / 60.00000000); + } + if (in_tank_flag == TRUE) { + if (DAT_800799b8 == 2) { + fVar19 = 0.00000000; + if (uStack28 == 0) { + if (0.00000000 < fStack68) { + fVar19 = (float)proc_7F080228(); + fVar19 = fVar19 * flt_80055150; + } + else { + if (0.00000000 < fStack72) { + fVar19 = (float)proc_7F080228(); + fVar19 = fVar19 * flt_80055154; + } + } + } + else { + fVar19 = pPlayer->speedtheta * flt_8005514C; + } + if (0 < clock_timer) { + invisibletoguards = 1; + dword_80036460 = flt_80055158 * dword_80036460; + if (1 < clock_timer) { + do { + invisibletoguards += 1; + dword_80036460 = flt_80055158 * (dword_80036460 + fVar19); + } while (invisibletoguards < clock_timer); + } + dword_80036460 = dword_80036460 + fVar19; + } + pPlayer->speedtheta = dword_80036460 * flt_8005515C; + } + else { + pPlayer->speedtheta = 0.00000000; + } + } + if (iStack116 != 0) { + pPlayer->when_detonating_mines_is_0 = 0; + pPlayer->right_weapon_current_animation = 0; + trigger_remote_mine_detonation(); + } + numplayers = get_num_players(); + if (numplayers < 2) { + bVar4 = true; + } + else { + invisibletoguards = get_scenario(); + if (invisibletoguards == 2) { + invincible = proc_7F08CF80(); + if (invincible == 0) { + bVar4 = true; + } + else { + bVar4 = false; + } + } + else { + bVar4 = true; + } + } + if (bVar4) { + if (uStack76 != 0) { + backstep_through_inventory(); + } + if (uStack80 != 0) { + advance_through_inventory(); + } + } + if (uStack4 == 0) { + if (iStack8 != 0) { + pPlayer->controlstyle = 2; + } + } + else { + pPlayer->controlstyle = 0; + } + firing = (longlong)pPlayer->controlstyle; + if (firing == 0) { + proc_7F067AA4(0); + uVar12 = extraout_a0_lo; + uVar15 = extraout_a1_lo; + if (((uStack120 != 0) && + (redirect_get_BONDdata_autoaim_x(), uVar12 = extraout_a0_lo_00, + uVar15 = extraout_a1_lo_00, firing != 0)) && (pPlayer->autoxaimtime != 0)) { + item = get_item_in_hand(0); + invisibletoguards = check_special_attributes(item,8); + firing = (longlong)invisibletoguards; + uVar12 = extraout_a0_lo_01; + uVar15 = extraout_a1_lo_01; + } + if (((uStack120 != 0) && + (redirect_get_BONDdata_autoaim(), uVar12 = extraout_a0_lo_02, uVar15 = extraout_a1_lo_02 + , firing != 0)) && (pPlayer->autoyaimtime != 0)) { + item = get_item_in_hand(0); + check_special_attributes(item,8); + uVar12 = extraout_a0_lo_03; + uVar15 = extraout_a1_lo_03; + } + proc_7F067F58(uVar12,uVar15); + } + else { + if (firing == 2) { + proc_7F067AA4(0); + proc_7F067FBC(extraout_a0_lo_04,extraout_a1_lo_04); + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +void proc_7F083FC8(void) + +{ + u32 uVar1; + u32 uVar2; + int iVar3; + int iVar4; + int iVar5; + float fVar6; + f32 fVar7; + + if (pPlayer->damageshowtime < 0) { + iVar4 = pPlayer->healthshowtime; + goto LAB_7f084204; + } + if (pPlayer->damageshowtime == 0) { + set_unset_ammo_on_screen_setting(8,0); + set_unset_bitflags(0x10,0); + set_flags_in_BONDdata_stationary_intro_cam(4); + proc_7F08A944(4); + set_unset_clock_lock_bits(8,0); + fVar7 = get_BONDdata_watch_health(); + pPlayer->damagetype = (int)((float)fVar7 * 8.00000000); + if (7 < pPlayer->damagetype) { + pPlayer->damagetype = 7; + goto LAB_7f08406c; + } + iVar4 = pPlayer->damagetype; + } + else { +LAB_7f08406c: + iVar4 = pPlayer->damagetype; + } + iVar3 = pPlayer->damageshowtime; + if ((int)dword_80036634[iVar4].u32_0x8 < iVar3) { + if (iVar3 <= (int)dword_80036634[iVar4].u32_0x18) { + iVar5 = pPlayer->bonddead; + goto LAB_7f0840c0; + } + pPlayer->damageshowtime = -1; + proc_7F0807B0(0xff,0xff,0xff,0); + if (pPlayer->bonddead != 0) { + iVar4 = pPlayer->healthshowtime; + goto LAB_7f084204; + } + set_unset_ammo_on_screen_setting(8,1); + set_unset_bitflags(0x10,1); + proc_7F08A380(4); + proc_7F08A928(4); + set_unset_clock_lock_bits(8,1); + } + else { + iVar5 = pPlayer->bonddead; +LAB_7f0840c0: + if (iVar5 == 0) { + uVar1 = dword_80036634[iVar4].u32_0x10; + if (iVar3 < (int)uVar1) { + iVar4 = pPlayer->pause_animation_state; + } + else { + if ((int)dword_80036634[iVar4].u32_0x18 < iVar3) { + iVar4 = pPlayer->pause_animation_state; + } + else { + uVar2 = dword_80036634[iVar4].u32_0x14; + iVar3 -= uVar1; + iVar5 = dword_80036634[iVar4].u32_0x18 - uVar1; + if (iVar3 < (int)uVar2) { + fVar6 = ((float)dword_80036634[iVar4].f32_0x1c * (float)iVar3) / + (float)uVar2; + } + else { + fVar6 = ((float)dword_80036634[iVar4].f32_0x1c * (float)(iVar5 - iVar3)) / + (float)(iVar5 - uVar2); + } + proc_7F0807B0(dword_80036634[iVar4].u32_0x20,dword_80036634[iVar4].u32_0x24, + dword_80036634[iVar4].u32_0x28,fVar6); + iVar3 = pPlayer->damageshowtime; + iVar4 = pPlayer->pause_animation_state; + } + } + } + else { + iVar4 = pPlayer->pause_animation_state; + } + if (iVar4 == 0) { + pPlayer->damageshowtime = iVar3 + clock_timer; + } + else { + pPlayer->damageshowtime = iVar3 + speedgraphframes; + } + } + iVar4 = pPlayer->healthshowtime; +LAB_7f084204: + if (-1 < iVar4) { + if (iVar4 == 0) { + fVar7 = get_BONDdata_watch_health(); + pPlayer->field_29B8 = (int)((float)fVar7 * 8.00000000); + if (pPlayer->field_29B8 < 8) { + iVar4 = pPlayer->bonddead; + } + else { + pPlayer->field_29B8 = 7; + iVar4 = pPlayer->bonddead; + } + } + else { + iVar4 = pPlayer->bonddead; + } + if (iVar4 == 0) { + iVar4 = pPlayer->field_29B8; + iVar3 = pPlayer->healthshowtime; + if ((iVar3 < (int)(&dword_80036794)[iVar4 * 3]) || + ((int)(&DAT_80036798)[iVar4 * 3] < iVar3)) { + if ((iVar3 < (int)(&dword_80036794)[iVar4 * 3]) || + ((int)null_ARRAY_8003679c[iVar4 * 3] < iVar3)) { + pPlayer->healthshowtime = -1; + } + else { + pPlayer->apparenthealth = pPlayer->bondhealth; + pPlayer->apparentarmour = pPlayer->bondarmour; + pPlayer->healthshowtime = pPlayer->healthshowtime + clock_timer; + } + } + else { + pPlayer->apparenthealth = pPlayer->oldhealth; + pPlayer->apparentarmour = pPlayer->oldarmour; + pPlayer->healthshowtime = pPlayer->healthshowtime + clock_timer; + } + } + else { + pPlayer->healthshowtime = -1; + } + } + return; +} + + + +void proc_7F084360(void) + +{ + u32 uVar1; + uint uVar2; + float fVar3; + float local_c; + float local_8; + float local_4; + + DAT_800799a0 += 1; + if (((dword_80036444 != 0) && (disable_player_pickups_flag == 0)) && + (DAT_8007999c < global_timer)) { + local_c = *(float *)(pPlayer->position_data_pointer + 8); + local_8 = *(float *)(pPlayer->position_data_pointer + 0xc); + local_4 = *(float *)(pPlayer->position_data_pointer + 0x10); + uVar2 = DAT_800799a0 & 3; + if (((int)DAT_800799a0 < 0) && (uVar2 != 0)) { + uVar2 -= 4; + } + if (uVar2 == 0) { + uVar1 = get_random_value(); + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + local_c = local_c + fVar3 * 0.00000000 * 150.00000000 + 250.00000000; + } + else { + if (uVar2 == 1) { + uVar1 = get_random_value(); + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + local_c = local_c - (fVar3 * 0.00000000 * 150.00000000 + 250.00000000); + } + else { + if (uVar2 == 2) { + uVar1 = get_random_value(); + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + local_4 = local_4 + fVar3 * 0.00000000 * 150.00000000 + 250.00000000; + } + else { + if (uVar2 == 3) { + uVar1 = get_random_value(); + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + local_4 = local_4 - (fVar3 * 0.00000000 * 150.00000000 + 250.00000000); + } + } + } + } + uVar1 = get_random_value(); + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + local_8 = local_8 + (fVar3 * 0.00000000 * 200.00000000 - 100.00000000); + proc_7F09C250(0,&local_c,*(int *)(pPlayer->position_data_pointer + 0x14),0x12,0,0, + (char *)(pPlayer->position_data_pointer + 0x2c),0); + uVar1 = get_random_value(); + DAT_8007999c = uVar1 % 0xf + global_timer + 0xf; + } + return; +} + + + +void MoveBond(char param_1,char param_2,ushort param_3,ushort param_4) + +{ + short sVar1; + bool bVar2; + ITEM_IDS IVar5; + longlong lVar3; + ulonglong uVar4; + int iVar6; + BOOL BVar7; + longlong lVar8; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + longlong extraout_a0_02; + undefined8 extraout_a0_03; + longlong extraout_a0_04; + longlong extraout_a0_05; + longlong extraout_a0_06; + longlong extraout_a0_07; + undefined8 extraout_a0_08; + float *pfVar9; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + undefined8 extraout_a1_02; + longlong extraout_a1_03; + longlong extraout_a1_04; + longlong extraout_a1_05; + undefined8 extraout_a1_06; + undefined8 extraout_a1_07; + undefined8 extraout_a1_08; + undefined8 extraout_a1_09; + undefined8 extraout_a1_10; + undefined8 uVar10; + char *pcVar11; + int iVar12; + float fVar13; + float __x; + float ducking_offset; + float fVar14; + float z; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f12_09; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float extraout_f14_06; + tile_rgb tStack860; + uint uStack856; + float *apfStack852 [2]; + int iStack844; + undefined4 uStack840; + undefined4 uStack836; + undefined4 uStack832; + int iStack828; + int iStack824; + undefined4 uStack820; + float fStack816; + short *psStack812; + uint auStack804 [8]; + float afStack772 [12]; + float fStack724; + float fStack720; + float fStack716; + float afStack712 [16]; + int iStack648; + int iStack640; + float fStack628; + float fStack592; + float fStack588; + int iStack584; + int aiStack580 [3]; + float fStack568; + float fStack564; + float fStack560; + float fStack556; + float fStack552; + float fStack544; + float fStack540; + float fStack536; + float fStack532; + float fStack528; + float fStack520; + undefined auStack516 [76]; + int iStack440; + undefined4 *puStack436; + float fStack432; + float fStack416; + float fStack412; + float fStack408; + float fStack372; + float fStack356; + float fStack352; + float fStack348; + float fStack344; + float fStack340; + float afStack336 [17]; + float *pfStack268; + float afStack260 [16]; + float fStack196; + undefined4 uStack192; + float fStack188; + int iStack184; + float fStack180; + float fStack176; + float fStack172; + float fStack156; + float fStack152; + float fStack148; + float fStack132; + float fStack128; + float afStack124 [2]; + float fStack116; + float afStack112 [2]; + float fStack104; + float fStack100; + float fStack96; + undefined4 *puStack92; + float fStack80; + float fStack72; + float afStack68 [2]; + float fStack60; + float fStack48; + float fStack44; + float fStack40; + undefined4 uStack36; + float fStack32; + float fStack24; + float fStack12; + undefined4 uStack8; + float fStack4; + + fStack12 = dword_800367F4; + fStack4 = dword_800367FC; + uStack8 = dword_800367F8; + uStack36 = 0; + fStack32 = 0.00000000; + fStack40 = 0.00000000; + if (('c' < param_1) || (param_1 < -99)) { + return_null(); + } + if (('c' < param_2) || (param_2 < -99)) { + return_null(); + } + iVar12 = camera_80036424 + 1; + if ((0 < camera_80036424) && (camera_80036424 = iVar12, 3 < iVar12)) { + camera_80036424 = 0; + pPlayer->lock_hand_model[1] = 0; + pPlayer->lock_hand_model[0] = 0; + IVar5 = get_item_in_hand(1); + remove_hands_item(HAND_LEFT,IVar5); + IVar5 = get_item_in_hand(0); + remove_hands_item(HAND_RIGHT,IVar5); + } + proc_7F079A50(0); + proc_7F083FC8(); + proc_7F084360(); + controller_gameplay_interaction(); + iVar12 = get_controls_locked_flag(); + if (iVar12 != 0) { + proc_7F07EAF0(); + } + if (pPlayer->pause_animation_state != 0) { + probably_look_at_watch(); + } + if (in_tank_flag == FALSE) { + iVar12 = proc_7F0799F0(); + if (iVar12 == 0) { + pPlayer->speedforwards = pPlayer->speedforwards * 0.50000000; + pPlayer->speedsideways = pPlayer->speedsideways * 0.50000000; + } + __x = (float)pPlayer->boost_factor_x; + if (__x == 0.00000000) { + if ((float)pPlayer->boost_factor_z == 0.00000000) goto LAB_7f08497c; + fVar13 = (float)pPlayer->boost_factor_z; + } + else { + fVar13 = (float)pPlayer->boost_factor_z; + } + fStack44 = fVar13 * (float)pPlayer->vv_costheta + -__x * (float)pPlayer->vv_sintheta; + fStack48 = -__x * (float)pPlayer->vv_costheta - fVar13 * (float)pPlayer->vv_sintheta; + fVar13 = sqrtf(fVar13 * fVar13 + __x * __x); + iVar12 = 0; + pPlayer->speedforwards = pPlayer->speedforwards + fStack44; + pPlayer->speedsideways = pPlayer->speedsideways + fStack48; + __x = flt_8005516C; + do { + iVar6 = (int)&pPlayer->unknown + iVar12; + fVar14 = *(float *)(iVar6 + 0x180); + if (fVar14 != 0.00000000) { + if (0.00000000 < fVar14) { + *(float *)(iVar6 + 0x180) = + fVar14 - (__x * global_timer_delta * fVar14) / fVar13; + iVar6 = (int)&pPlayer->unknown + iVar12; + if (*(float *)(iVar6 + 0x180) < 0.00000000) { + *(undefined4 *)(iVar6 + 0x180) = 0; + } + } + else { + if (fVar14 < 0.00000000) { + *(float *)(iVar6 + 0x180) = + fVar14 - (__x * global_timer_delta * fVar14) / fVar13; + iVar6 = (int)&pPlayer->unknown + iVar12; + if (0.00000000 < *(float *)(iVar6 + 0x180)) { + *(undefined4 *)(iVar6 + 0x180) = 0; + } + } + } + } + iVar12 += 4; + } while (iVar12 != 0xc); + } +LAB_7f08497c: + if (in_tank_flag == TRUE) { + fStack96 = pPlayer->speedtheta * global_timer_delta * flt_80055174 * 3.50000000; + puStack92 = (undefined4 *)((float)dword_80036464 + fStack96); + if ((float)flt_80055170 <= (float)puStack92) { + puStack92 = (undefined4 *)((float)puStack92 - (float)flt_80055170); + } + if ((float)puStack92 < 0.00000000) { + puStack92 = (undefined4 *)((float)puStack92 + (float)flt_80055170); + iVar12 = pPlayer->ptr_tile_printmanpos; + } + else { + iVar12 = pPlayer->ptr_tile_printmanpos; + } + iVar12 = proc_7F07CAC8((float *)&pPlayer->positionx,iVar12,(float)flt_80055170,puStack92, + afStack68); + if (iVar12 == 0) { + fStack156 = -1.00000000; + fStack180 = -1.00000000; + proc_7F0B28B0(afStack112,afStack124); + fStack128 = afStack124[0] - afStack112[0]; + fStack132 = fStack116 - fStack104; + __x = sqrtf(fStack128 * fStack128 + fStack132 * fStack132); + fStack148 = fStack132 * (1.00000000 / __x); + fStack152 = -(fStack128 * (1.00000000 / __x)); + __x = ((float)pPlayer->positionz - fStack72) * fStack152 + + ((float)pPlayer->positionx - fStack80) * fStack148; + if (__x < 0.00000000) { + fStack148 = -fStack148; + fStack152 = -fStack152; + __x = -__x; + } + fVar13 = ((float)pPlayer->positionz - fStack104) * fStack152 + + ((float)pPlayer->positionx - afStack112[0]) * fStack148; + if (fVar13 < __x) { + fStack156 = __x - fVar13; + } + fStack128 = fStack80 - afStack68[0]; + fStack132 = fStack72 - fStack60; + __x = sqrtf(fStack128 * fStack128 + fStack132 * fStack132); + fStack172 = fStack132 * (1.00000000 / __x); + fStack176 = -(fStack128 * (1.00000000 / __x)); + z = (float)pPlayer->positionz; + __x = (float)pPlayer->positionx; + fVar13 = (z - fStack72) * fStack176 + (__x - fStack80) * fStack172; + if (fVar13 < 0.00000000) { + fStack172 = -fStack172; + fStack176 = -fStack176; + fVar13 = -fVar13; + } + fVar14 = (z - fStack104) * fStack176 + (__x - afStack112[0]) * fStack172; + __x = (z - fStack116) * fStack176 + (__x - afStack124[0]) * fStack172; + if (fVar14 <= __x) { + __x = fVar14; + } + if (__x < fVar13) { + fStack180 = fVar13 - __x; + } + if ((0.00000000 <= fStack180) && ((fStack180 < fStack156 || (fStack156 < 0.00000000)))) + { + fStack148 = fStack172; + fStack152 = fStack176; + fStack156 = fStack180; + } + if (0.00000000 <= fStack156) { + fStack12 = fStack156 * fStack148 * flt_80055178; + fStack4 = fStack156 * fStack152 * flt_8005517C; + proc_7F07D960(&fStack12,1); + fStack12 = 0.00000000; + fStack4 = 0.00000000; + iVar12 = proc_7F07CAC8((float *)&pPlayer->positionx,pPlayer->ptr_tile_printmanpos, + extraout_f12,puStack92,afStack68); + if (iVar12 == 0) { + fStack96 = 0.00000000; + } + else { + dword_80036464 = puStack92; + } + } + else { + fStack96 = 0.00000000; + } + } + else { + dword_80036464 = puStack92; + } + fStack100 = dword_80036474; + dword_80036484 = dword_80036484 + dword_80036488; + if (flt_80055180 <= dword_80036484) { + dword_80036484 = dword_80036484 - flt_80055180; + } + if (dword_80036484 < 0.00000000) { + dword_80036484 = dword_80036484 + flt_80055180; + __x = pPlayer->speedtheta; + } + else { + __x = pPlayer->speedtheta; + } + __x = __x * 3.50000000 * flt_80055184 * 4.00000000 + dword_80036484; + if (__x < 0.00000000) { + __x = __x + flt_80055180; + } + if (flt_80055180 <= __x) { + __x = __x - flt_80055180; + } + if (flt_80055188 <= __x - dword_80036474) { + __x = __x - flt_8005518C; + } + else { + if (__x - dword_80036474 < flt_80055190) { + __x = __x + flt_80055194; + } + } + lVar8 = (longlong)clock_timer; + lVar3 = 0; + if (0 < lVar8) { + lVar3 = 1; + dword_80036478 = flt_80055198 * dword_80036478; + if (1 < lVar8) { + do { + lVar3 = (longlong)((int)lVar3 + 1); + dword_80036478 = flt_80055198 * (dword_80036478 + __x); + } while (lVar3 < lVar8); + } + dword_80036478 = dword_80036478 + __x; + } + dword_80036474 = dword_80036478 * flt_8005519C; + if (flt_800551A0 <= dword_80036474) { + dword_80036474 = dword_80036474 - flt_800551A0; + dword_80036478 = dword_80036474 / flt_8005519C; + } + __x = dword_80036474; + if (dword_80036474 < 0.00000000) { + dword_80036474 = dword_80036474 + flt_800551A0; + dword_80036478 = dword_80036474 / flt_8005519C; + iVar12 = pPlayer->ptr_tile_printmanpos; + } + else { + iVar12 = pPlayer->ptr_tile_printmanpos; + } + proc_7F07CDA8((float *)&pPlayer->positionx,iVar12,__x); + if (lVar3 == 0) { + dword_80036474 = fStack100; + dword_80036484 = fStack100; + dword_80036478 = fStack100 / flt_800551AC; + } + __x = flt_800551A8; + if (ptr_playerstank != 0) { + iStack184 = *(int *)(ptr_playerstank + 4); + uStack192 = 0; + fStack196 = DAT_800799a8; + fStack188 = dword_8007A070; + proc_7F0585FC(fStack96,extraout_a0,afStack260); + proc_7F0583D8(afStack260,&fStack196); + proc_7F07C7B4(); + fStack196 = DAT_800799a8 - fStack196; + uStack192 = 0; + fStack188 = dword_8007A070 - fStack188; + proc_7F0585FC(flt_800551BC - (float)dword_80036464,extraout_a0_00,afStack260); + matrix_multiply_A1_by_F12 + (*(float *)(*(int *)(iStack184 + 0x14) + 0x14),extraout_a0_01,afStack260); + proc_7F0583D8(afStack260,&fStack196); + proc_7F07D960(&fStack196,1); + __x = flt_800551CC; + } + if ((0 < clock_timer) && (0 < clock_timer)) { + iVar12 = 1; + dword_8003647C = __x * dword_8003647C; + if (1 < clock_timer) { + do { + iVar12 += 1; + dword_8003647C = __x * (dword_8003647C + dword_80036488 / global_timer_delta); + } while (iVar12 < clock_timer); + } + dword_8003647C = dword_8003647C + dword_80036488 / global_timer_delta; + } + pPlayer->vv_theta = + (((float)dword_80036464 + dword_80036474 + + pPlayer->speedtheta * 3.50000000 * flt_800551D4 * 4.00000000 + + dword_8003647C * flt_800551D0 * 4.00000000) * 360.00000000) / flt_800551D8; + __x = pPlayer->vv_theta; + while (__x < 0.00000000) { + pPlayer->vv_theta = __x + 360.00000000; + __x = pPlayer->vv_theta; + } + while (360.00000000 <= __x) { + pPlayer->vv_theta = __x - 360.00000000; + __x = pPlayer->vv_theta; + } + } + else { + __x = pPlayer->vv_theta + pPlayer->speedtheta * global_timer_delta * 3.50000000; + while (__x < 0.00000000) { + __x = __x + 360.00000000; + } + if (360.00000000 <= __x) { + do { + __x = __x - 360.00000000; + } while (360.00000000 <= __x); + pPlayer->vv_theta = __x; + } + else { + pPlayer->vv_theta = __x; + } + } + proc_7F081790(); + pfStack268 = NULL; + iVar12 = proc_7F0799F0(); + if (iVar12 == 0) { + pfStack268 = (float *)0xc2c80000; + uVar10 = extraout_a1; + __x = extraout_f12_00; + fVar13 = extraout_f14; + } + else { + iVar12 = proc_7F0799F0(); + if (iVar12 == 1) { + pfStack268 = (float *)0xc2700000; + uVar10 = extraout_a1_00; + __x = extraout_f12_01; + fVar13 = extraout_f14_00; + } + else { + proc_7F0799F0(); + uVar10 = extraout_a1_01; + __x = extraout_f12_02; + fVar13 = extraout_f14_01; + } + } + ducking_offset = (float)pPlayer->ducking_height_offset; + lVar3 = (longlong)(int)&pPlayer->ducking_height_offset; + if ((float)pfStack268 != ducking_offset) { + proc_7F042F18((float *)&pPlayer->ducking_height_offset,__x,pfStack268,fVar13, + (float)&pPlayer->field_A4,0.50000000); + ducking_offset = (float)pPlayer->ducking_height_offset; + lVar3 = extraout_a0_02; + uVar10 = extraout_a1_02; + } + if ((float)pfStack268 == ducking_offset) { + pPlayer->field_A4 = 0.00000000; + } + if (in_tank_flag == TRUE) { + if (DAT_800799b8 == 0) { + lVar8 = (longlong)(int)afStack336; + if (ptr_playerstank != 0) { + iVar12 = *(int *)(ptr_playerstank + 4); + proc_7F0585FC(flt_800551DC - (float)dword_80036464,lVar3,afStack336); + matrix_multiply_A1_by_F12 + (*(float *)(*(int *)(iVar12 + 0x14) + 0x14),extraout_a0_03,afStack336); + fStack348 = DAT_800799a8; + fStack344 = DAT_800799ac; + fStack340 = dword_8007A070; + proc_7F0583D8(afStack336,&fStack348); + fStack356 = -20.00000000; + fStack348 = fStack348 + *(float *)(iVar12 + 0x58); + fStack344 = fStack344 + *(float *)(iVar12 + 0x5c); + fStack340 = fStack340 + *(float *)(iVar12 + 0x60); + fStack352 = (((float)dword_80036464 + dword_80036474) * 360.00000000) / flt_800551E0 + ; + if (-20.00000000 <= pPlayer->vv_verta) { + fStack356 = pPlayer->vv_verta; + } + DAT_800799bc = DAT_800799bc + global_timer_delta / 45.00000000; + if (1.00000000 <= DAT_800799bc) { + DAT_800799bc = 1.00000000; + } + __x = cosf(DAT_800799bc * flt_800551E4 * 0.50000000); + f32_800799c0 = (f32)((__x + 1.00000000) * 0.50000000); + pPlayer->vv_verta = + (float)f32_800799c0 * copy_bond_inclination_angle1 + + (1.00000000 - (float)f32_800799c0) * fStack356; + __x = fStack352; + if (180.00000000 < fStack352 - copy_bond_azimuth) { + __x = fStack352 - 360.00000000; + } + if (fStack352 - copy_bond_azimuth < -180.00000000) { + __x = __x + 360.00000000; + } + pPlayer->vv_theta = + (float)f32_800799c0 * copy_bond_azimuth + + (1.00000000 - (float)f32_800799c0) * __x; + __x = pPlayer->vv_theta; + if (360.00000000 <= __x) { + pPlayer->vv_theta = __x - 360.00000000; + __x = pPlayer->vv_theta; + } + if (__x < 0.00000000) { + pPlayer->vv_theta = __x + 360.00000000; + } + uStack8 = 0; + fStack12 = ((float)f32_800799c0 * copy_bond_posx + + (1.00000000 - (float)f32_800799c0) * fStack348) - + (float)pPlayer->positionx; + fStack4 = ((float)f32_800799c0 * copy_bond_posz + + (1.00000000 - (float)f32_800799c0) * fStack340) - + (float)pPlayer->positionz; + lVar3 = extraout_a0_04; + lVar8 = extraout_a1_03; + } + if (1.00000000 <= DAT_800799bc) { + DAT_800799b8 = 1; + } + } + else { + if (DAT_800799b8 == 1) { + DAT_800799b8 = 2; + if ((dword_80036458 == NULL) && (iVar12 = get_controls_locked_flag(), iVar12 == 0)) + { + play_sfx_a1(ptr_sfx_buf,0x42,(ALSndPlayer *)&dword_80036458); + } + music_related_36((longlong)(int)dword_80036458,8,25000); + DAT_800799b4 = 25000; + lVar3 = extraout_a0_05; + lVar8 = extraout_a1_04; + } + else { + fVar13 = pPlayer->speedforwards / 15.00000000; + __x = pPlayer->speedtheta / flt_800551E8; + if (fVar13 < 0.00000000) { + fVar13 = -fVar13; + } + if (__x < 0.00000000) { + __x = -__x; + } + if (__x <= fVar13) { + __x = fVar13; + } + if (0.00000000 < __x) { + fVar13 = 1.00000000; + if (__x <= 1.00000000) { + fVar13 = __x; + } + if ((dword_8003645C == NULL) && + (fStack372 = fVar13, iVar12 = get_controls_locked_flag(), fVar13 = fStack372, + iVar12 == 0)) { + play_sfx_a1(ptr_sfx_buf,0x3e,(ALSndPlayer *)&dword_8003645C); + fVar13 = fStack372; + } + __x = fVar13; + if ((longlong)(int)dword_8003645C != 0) { + iVar12 = 0x7fff; + if (fVar13 < flt_800551EC) { + iVar12 = (int)((fVar13 * flt_800551F0) / flt_800551EC); + } + else { + if (fVar13 < flt_800551F4) { + iVar12 = (int)(((fVar13 - flt_800551EC) * flt_800551F8) / 0.75000000 + + flt_800551FC); + } + } + fStack372 = fVar13; + music_related_36((longlong)(int)dword_8003645C,8,iVar12); + __x = fStack372; + } + } + else { + if ((dword_8003645C != NULL) && + (fStack372 = __x, uVar4 = sfxGetArg0Unk3F(dword_8003645C), __x = fStack372, + uVar4 != 0)) { + sfxDeactivate((int)dword_8003645C); + __x = fStack372; + } + } + if ((dword_80036458 == NULL) && + (fStack372 = __x, iVar12 = get_controls_locked_flag(), __x = fStack372, + iVar12 == 0)) { + play_sfx_a1(ptr_sfx_buf,0x41,(ALSndPlayer *)&dword_80036458); + __x = fStack372; + } + if ((longlong)(int)dword_80036458 != 0) { + DAT_800799b4 = 0x7fff; + if (__x < flt_80055200) { + DAT_800799b4 = (int)((__x * flt_80055204) / flt_80055208 + flt_8005520C); + } + music_related_36((longlong)(int)dword_80036458,8,DAT_800799b4); + } + IVar5 = get_item_in_hand(0); + if (IVar5 == ITEM_TANKSHELLS) { + dword_8003646C = (float)pPlayer->field_2A08 + flt_80055210; + } + __x = flt_80055214; + if (dword_8003646C <= flt_80055214) { + __x = dword_8003646C; + } + fVar13 = flt_80055218; + if (flt_80055218 <= __x) { + fVar13 = __x; + } + lVar3 = (longlong)clock_timer; + if (0 < lVar3) { + lVar8 = 1; + dword_80036470 = flt_8005521C * dword_80036470; + if (1 < lVar3) { + do { + lVar8 = (longlong)((int)lVar8 + 1); + dword_80036470 = flt_8005521C * (dword_80036470 + fVar13); + } while (lVar8 < lVar3); + } + dword_80036470 = dword_80036470 + fVar13; + } + dword_8003646C = dword_80036470 * flt_80055220; + lVar8 = extraout_a1_05; + } + } + *(float *)&pPlayer->bondfadefracnew = + (float)pPlayer->bondfadefracnew - (global_timer_delta * 0.75000000) / flt_80055224; + if ((float)pPlayer->bondfadefracnew < 0.00000000) { + pPlayer->bondfadefracnew = 0.00000000; + } + proc_7F080B34(0.00000000,0.00000000,lVar3,lVar8,0.00000000); + __x = sinf(flt_80055228 - (float)dword_80036464); + fStack12 = fStack12 + pPlayer->speedforwards * __x * global_timer_delta; + __x = cosf(flt_8005522C - (float)dword_80036464); + fStack4 = fStack4 + pPlayer->speedforwards * __x * global_timer_delta; + proc_7F07D960(&fStack12,1); + if ((DAT_800799b8 == 2) && (0 < clock_timer)) { + __x = ((float)pPlayer->positionx - (float)pPlayer->field_408) / global_timer_delta; + fVar13 = ((float)pPlayer->positionz - (float)pPlayer->field_410) / global_timer_delta; + __x = sqrtf(__x * __x + fVar13 * fVar13); + if (pPlayer->speedforwards < 0.00000000) { + __x = -__x; + } + pPlayer->speedforwards = __x; + } + goto LAB_7f0863ac; + } + if (dword_80036458 == NULL) { + lVar3 = (longlong)(int)dword_8003645C; + } + else { + uVar4 = sfxGetArg0Unk3F(dword_80036458); + uVar10 = extraout_a1_06; + if (uVar4 != 0) { + DAT_800799b4 += clock_timer * -1000; + if (0 < DAT_800799b4) { + music_related_36((longlong)(int)dword_80036458,8,DAT_800799b4); + lVar3 = (longlong)(int)dword_8003645C; + uVar10 = extraout_a1_07; + goto LAB_7f085bb4; + } + sfxDeactivate((int)dword_80036458); + uVar10 = extraout_a1_08; + } + lVar3 = (longlong)(int)dword_8003645C; + } +LAB_7f085bb4: + if ((lVar3 != 0) && + (uVar4 = sfxGetArg0Unk3F((ALLink_s *)lVar3), lVar3 = extraout_a0_06, uVar10 = extraout_a1_09, + uVar4 != 0)) { + sfxDeactivate((int)dword_8003645C); + lVar3 = extraout_a0_07; + uVar10 = extraout_a1_10; + } + fStack24 = pPlayer->speedsideways * DAT_80036af4 * 0.50000000 * global_timer_delta; + fStack408 = (float)pPlayer->field_4A0 * -(float)pPlayer->field_1274 - (float)pPlayer->field_1278 + ; + fStack412 = (float)pPlayer->field_498 * (float)pPlayer->field_1274 - (float)pPlayer->field_127C; + fStack416 = fStack408 * fStack408 + fStack412 * fStack412; + if (100.00000000 <= fStack416) { + fStack408 = fStack408 * flt_80055230; + fStack412 = fStack412 * flt_80055230; + } + fVar13 = pPlayer->speedforwards; + fStack32 = pPlayer->speedsideways * flt_80055234; + __x = pPlayer->speedtheta * flt_80055234; + if (fStack32 < 0.00000000) { + fStack32 = -fStack32; + } + if (fVar13 < 0.00000000) { + fVar13 = -fVar13; + } + if (__x < 0.00000000) { + __x = -__x; + } + if (fStack32 <= fVar13) { + fStack32 = fVar13; + } + if (__x <= fStack32) { + __x = fStack32; + } + fStack32 = __x; + if ((flt_80055238 <= fStack416) && (fStack32 < flt_80055234)) { + fStack32 = flt_80055234; + } + if (0.75000000 <= fStack32) { + *(float *)&pPlayer->bondfadefracnew = + (float)pPlayer->bondfadefracnew + + ((fStack32 - 0.75000000) * global_timer_delta) / 900.00000000; + } + else { + *(float *)&pPlayer->bondfadefracnew = + (float)pPlayer->bondfadefracnew - + ((0.75000000 - fStack32) * global_timer_delta) / flt_8005523C; + } + if ((float)pPlayer->bondfadefracnew < 0.00000000) { + pPlayer->bondfadefracnew = 0.00000000; + } + else { + if (1.00000000 < (float)pPlayer->bondfadefracnew) { + pPlayer->bondfadefracnew = 1.00000000; + } + } + proc_7F080B34(fStack32,pPlayer->speedforwards,lVar3,uVar10,fStack24); + fStack12 = fStack12 + + ((float)pPlayer->field_504 * (float)pPlayer->field_498 - + (float)pPlayer->scaled_velocity * (float)pPlayer->field_4A0) * global_timer_delta + + fStack408; + fStack4 = fStack4 + ((float)pPlayer->field_504 * (float)pPlayer->field_4A0 + + (float)pPlayer->scaled_velocity * (float)pPlayer->field_498) * + global_timer_delta + fStack412; + fStack432 = (float)pPlayer->positionx; + puStack436 = (undefined4 *)pPlayer->positionz; + iStack440 = pPlayer->ptr_tile_printmanpos; + BVar7 = get_debug_fast_bond_flag(); + if (BVar7 != FALSE) { + fStack12 = fStack12 + + ((float)pPlayer->field_498 * pPlayer->speedforwards - + (float)pPlayer->field_4A0 * pPlayer->speedsideways) * global_timer_delta * + 10.00000000; + fStack4 = fStack4 + ((float)pPlayer->field_4A0 * pPlayer->speedforwards + + (float)pPlayer->field_498 * pPlayer->speedsideways) * global_timer_delta + * 10.00000000; + } + proc_7F07D960(&fStack12,(uint)((float)pPlayer->field_1274 == 0.00000000)); + proc_7F0B2314(&iStack440,extraout_f12_03,extraout_f14_02,fStack432,puStack436); + iVar12 = proc_7F0B23A4((int)auStack516); + if (iVar12 != 0) { + uStack36 = 1; + } + proc_7F0B2314(&pPlayer->ptr_tile_printmanpos,extraout_f12_04,extraout_f14_03, + (float)pPlayer->positionx,(undefined4 *)pPlayer->positionz); + iVar12 = proc_7F0B23A4((int)auStack516); + if (iVar12 != 0) { + uStack36 = 1; + } + proc_7F0B2314(&pPlayer->ptr_tile_printmanpos,extraout_f12_05,extraout_f14_04, + (float)pPlayer->positionx,(undefined4 *)pPlayer->positionz); + iVar12 = proc_7F0B23A4((int)auStack516); + if (iVar12 == 0) { + proc_7F0B2314(&iStack440,extraout_f12_06,extraout_f14_05,fStack432,puStack436); + } + iVar12 = proc_7F0B23A4((int)auStack516); + if (iVar12 != 0) { + uStack36 = 1; + proc_7F0B2420(aiStack580,&iStack584,(int)&fStack564); + if ((float)pPlayer->clipping_height <= fStack536) { + fStack588 = fStack544 - fStack556; + fStack592 = fStack564 - fStack552; + __x = sqrtf(fStack588 * fStack588 + fStack592 * fStack592); + fVar13 = ((float)puStack436 - fStack556) * (fStack592 / __x) + + (fStack432 - fStack564) * (fStack588 / __x); + __x = (((float)puStack436 + fStack4) - fStack556) * (fStack592 / __x) + + ((fStack432 + fStack12) - fStack564) * (fStack588 / __x); + if (fVar13 * __x <= 0.00000000) { + fStack568 = 0.00000000; + } + else { + if (__x < 0.00000000) { + __x = -__x; + fVar13 = -fVar13; + bVar2 = fVar13 <= __x; + } + else { + bVar2 = fVar13 <= __x; + } + if (bVar2) { + fStack568 = 0.00000000; + } + else { + fVar14 = (float)pPlayer->collision_radius; + if (fVar14 < __x) { + fStack568 = 0.00000000; + } + else { + if (fVar13 < fVar14) { + fStack568 = 0.00000000; + } + else { + fStack568 = (fVar13 - fVar14) / (fVar13 - __x); + } + } + } + } + fVar13 = sqrtf(fStack4 * fStack4 + fStack12 * fStack12); + __x = fStack568; + if (0.00000000 < fVar13) { + fVar14 = (1.00000000 - fStack568) * fVar13; + fStack40 = fVar14 * 0.25000000; + if (fStack536 <= (float)pPlayer->clipping_height + fStack40) { + fStack40 = fStack536 - (float)pPlayer->clipping_height; + __x = fStack568 + (fVar14 - fStack40 / 0.25000000) / fVar13; + } + } + fStack540 = fStack540 - fStack564; + fStack532 = fStack532 - fStack556; + fStack528 = fStack528 - fStack564; + fStack520 = fStack520 - fStack556; + if (fStack540 * fStack540 + fStack532 * fStack532 <= + fStack528 * fStack528 + fStack520 * fStack520) { + fStack528 = fStack540; + fStack520 = fStack532; + } + fVar13 = fStack40 / (fStack536 - fStack560); + fStack12 = fVar13 * fStack528 + fStack12 * __x; + fStack4 = fVar13 * fStack520 + fStack4 * __x; + *(float *)&pPlayer->positionx = fStack432; + *(undefined4 **)&pPlayer->positionz = puStack436; + pPlayer->ptr_tile_printmanpos = iStack440; + proc_7F07D960(&fStack12,(uint)((float)pPlayer->field_1274 == 0.00000000)); + } + } + fVar13 = (float)pPlayer->positionx - fStack432; + fVar14 = (float)pPlayer->positionz - (float)puStack436; + __x = fStack4 * fStack4 + fStack12 * fStack12; + if (__x != 0.00000000) { + __x = (fVar13 * fVar13 + fVar14 * fVar14) / __x; + } + __x = sqrtf(__x); + *(float *)&pPlayer->field_1278 = (float)pPlayer->field_1278 + __x * fStack408; + *(float *)&pPlayer->field_127C = (float)pPlayer->field_127C + __x * fStack412; +LAB_7f0863ac: + fStack628 = pPlayer->speedverta / flt_8005524C + (float)pPlayer->field_A4 / 5.00000000; + proc_7F08EAF8(); + proc_7F05E0E4(); + proc_7F05E5F0((float)pPlayer->vv_verta360 * flt_80055254); + if (((ptr_playerstank != 0) && (in_tank_flag == TRUE)) && (DAT_800799b8 == 2)) { + iVar12 = *(int *)(ptr_playerstank + 4); + iStack648 = *(int *)(*(int *)(*(int *)(*(int *)(*(int *)(iVar12 + 0x14) + 8) + 8) + 0x14) + + 4); + iStack640 = iVar12; + IVar5 = get_item_in_hand(0); + bVar2 = IVar5 == ITEM_TANKSHELLS; + if (bVar2) { + lVar3 = get_hands_firing_status(0); + bVar2 = lVar3 != 0; + *(uint *)(iVar12 + 0xc4) = (uint)bVar2; + } + else { + *(uint *)(iVar12 + 0xc4) = (uint)bVar2; + } + *(float *)(iVar12 + 200) = dword_8003646C; + *(float *)(iVar12 + 0xcc) = dword_80036474; + *(undefined4 **)(iVar12 + 0xdc) = dword_80036464; + proc_7F0585FC(flt_80055258 - (float)dword_80036464,(ulonglong)bVar2,afStack712); + matrix_multiply_A1_by_F12 + (*(float *)(*(int *)(iStack640 + 0x14) + 0x14),extraout_a0_08,afStack712); + fStack724 = -DAT_800799a8; + fStack720 = -DAT_800799ac; + fStack716 = -dword_8007A070; + proc_7F0583D8(afStack712,&fStack724); + fStack724 = fStack724 + (float)pPlayer->positionx; + fStack716 = fStack716 + (float)pPlayer->positionz; + *(int *)(*(int *)(iStack640 + 0x10) + 0x14) = pPlayer->ptr_tile_printmanpos; + proc_7F0B0BE4((int *)(*(int *)(iStack640 + 0x10) + 0x14),extraout_f12_07,extraout_f14_06, + (float)pPlayer->positionx,(float)pPlayer->positionz); + fVar13 = (float)proc_7F0B2970(); + *(float *)(iVar12 + 0xd4) = fVar13; + __x = flt_8005525C; + iVar6 = 0; + if (0 < clock_timer) { + fVar13 = *(float *)(iVar12 + 0xd0); + while( true ) { + iVar6 += 1; + *(float *)(iVar12 + 0xd0) = fVar13 * __x + *(float *)(iVar12 + 0xd4); + fVar13 = __x; + if (clock_timer <= iVar6) break; + fVar13 = *(float *)(iVar12 + 0xd0); + } + } + __x = *(float *)(iVar12 + 0xd0) * flt_80055260; + proc_7F03E864(iStack648); + fStack720 = (__x - fVar13 * *(float *)(*(int *)(iStack640 + 0x14) + 0x14)) + 4.00000000; + proc_7F058020((float (*) [4] [4])afStack712,(float (*) [4])(iStack640 + 0x18)); + *(float *)(*(int *)(iStack640 + 0x10) + 8) = fStack724; + *(float *)(iStack640 + 0x58) = fStack724; + *(float *)(*(int *)(iStack640 + 0x10) + 0xc) = fStack720; + *(float *)(iStack640 + 0x5c) = fStack720; + *(float *)(*(int *)(iStack640 + 0x10) + 0x10) = fStack716; + *(float *)(iStack640 + 0x60) = fStack716; + proc_7F056CA0(iStack640); + proc_7F040484(iStack640); + proc_7F07C888(afStack772,(float *)&pPlayer->positionx,extraout_f12_08); + proc_7F03CB8C(*(char **)(iStack640 + 0x10),auStack804); + proc_7F03E3FC((int *)auStack804); + sVar1 = *ptr_list_object_lookup_indices; + psStack812 = ptr_list_object_lookup_indices; + while (-1 < sVar1) { + iVar12 = (int)sVar1 * 0x34; + pcVar11 = pos_data_entry + iVar12; + if (pcVar11 != *(char **)(iStack640 + 0x10)) { + if (*pcVar11 == '\x03') { + iStack828 = 1; + iStack844 = *(int *)(pos_data_entry + iVar12 + 4); + proc_7F03CF88(pcVar11,&iStack824,&fStack816,&uStack820); + pfVar9 = (float *)(pos_data_entry + iVar12 + 8); + lVar3 = proc_7F03CCD8(pfVar9,afStack772,4); + if (((lVar3 != 0) && (iStack828 = 0, *(char *)(iStack844 + 7) == '\x04')) && + (-1 < (int)(*(uint *)(iStack844 + 0x14) << 7))) { + *(uint *)(iStack844 + 0x14) = *(uint *)(iStack844 + 0x14) | 0x1000000; + iVar6 = dword_80048380 % 3; + if (iVar6 < 2) { + play_sfx_a1(ptr_sfx_buf,0xb7,NULL); + sub_GAME_7F053A10(iVar6,pfVar9); + iVar6 = dword_80048380 % 3; + } + if (0 < iVar6) { + play_sfx_a1(ptr_sfx_buf,0xd5,NULL); + sub_GAME_7F053A10(iVar6,pfVar9); + } + } + if ((iStack828 != 0) && + (lVar3 = proc_7F044718((longlong)(int)pfVar9,(longlong)iStack824,afStack772,4 + ), lVar3 != 0)) { + iStack828 = 0; + } + if (iStack828 == 0) { + uStack840 = *(undefined4 *)(iStack640 + 0x58); + uStack836 = *(undefined4 *)(pos_data_entry + iVar12 + 0xc); + uStack832 = *(undefined4 *)(iStack640 + 0x60); + proc_7F027804(); + } + } + else { + if (*pcVar11 == '\x01') { + proc_7F03CCB0(pcVar11,(int **)apfStack852,&uStack856); + if ((0 < (int)uStack856) && + (lVar3 = proc_7F0446B8(apfStack852[0],uStack856,afStack772,4), lVar3 != 0 + )) { + get_cur_playernum(); + proc_7F04DEFC((int)pcVar11,extraout_f12_09,0x461c4000, + (longlong)(*(int *)(pos_data_entry + iVar12 + 4) + 0x58), + 0x20); + dword_80036490 = 0x5a; + } + } + } + } + psStack812 = psStack812 + 1; + sVar1 = *psStack812; + } + } + proc_7F080DF8(); + proc_7F081478(); + proc_7F08A19C(); + BVar7 = get_debug_man_pos_flag(); + if (BVar7 != FALSE) { + copy_tile_RGB_as_24bit + ((int *)pPlayer->ptr_tile_printmanpos,(int)pPlayer->positionx,pPlayer->positionz, + &tStack860); + } + return; +} + + + +void proc_7F086990(undefined8 param_1,undefined8 param_2,ushort param_3,ushort param_4) + +{ + undefined8 extraout_a0; + undefined8 extraout_a1; + undefined auStack64 [12]; + int iStack52; + float fStack48; + undefined4 uStack44; + float fStack40; + float fStack36; + undefined4 uStack32; + undefined4 uStack28; + float fStack24; + undefined4 uStack20; + undefined4 uStack16; + float fStack12; + undefined4 uStack8; + undefined4 uStack4; + + fStack12 = dword_80036800; + uStack8 = dword_80036804; + uStack4 = dword_80036808; + fStack24 = dword_8003680C; + uStack20 = dword_80036810; + uStack16 = dword_80036814; + fStack36 = dword_80036818; + uStack32 = dword_8003681C; + uStack28 = dword_80036820; + fStack48 = dword_80036824; + uStack44 = dword_80036828; + fStack40 = dword_8003682C; + proc_7F083FC8(); + proc_7F084360(); + controller_gameplay_interaction(); + proc_7F081790(); + proc_7F080B34(0.00000000,0.00000000,extraout_a0,extraout_a1,0.00000000); + if ((DAT_80079990 != 0.00000000) || (DAT_80079998 != 0.00000000)) { + fStack48 = fStack48 + DAT_80079990 * global_timer_delta; + fStack40 = fStack40 + DAT_80079998 * global_timer_delta; + } + fStack48 = fStack48 + + ((float)pPlayer->field_504 * (float)pPlayer->field_498 - + (float)pPlayer->scaled_velocity * (float)pPlayer->field_4A0) * global_timer_delta; + fStack40 = fStack40 + + ((float)pPlayer->field_504 * (float)pPlayer->field_4A0 + + (float)pPlayer->scaled_velocity * (float)pPlayer->field_498) * global_timer_delta; + proc_7F07D960(&fStack48,1); + proc_7F080DF8(); + proc_7F081478(); + if (((cameramode == FP_NOINPUT_CAM) || (cameramode == FP_CAM)) || (cameramode == UNK10_CAM)) { + proc_7F079A50(0); + } + else { + proc_7F07B56C(); + proc_7F079A50(1); + proc_7F079A60(&fStack12,&fStack24,&fStack36,iStack52,auStack64); + } + return; +} + + + +int getWidth320or440(void) + +{ + if (camera_8003642C != 0) { + return 0x1b8; + } + return 0x140; +} + + + +int getHeight330or240(void) + +{ + if (camera_8003642C != 0) { + return 0x14a; + } + return 0xf0; +} + + + +s32 get_curplayer_viewport_width(void) + +{ + s32 ret; + int iVar1; + + ret = get_num_players(); + if (ret < 3) { + if (camera_8003642C == 0) { + iVar1 = cur_player_get_screen_setting(); + if (iVar1 == 1) { + ret = 0x140; + } + else { + iVar1 = cur_player_get_screen_setting(); + if (iVar1 == 2) { + ret = 0x140; + } + else { + ret = 0x140; + } + } + } + else { + ret = 0x1b8; + } + } + else { + ret = 0x9f; + } + return ret; +} + + + +undefined8 get_curplayer_viewport_ulx(void) + +{ + s32 sVar2; + undefined8 uVar1; + u32 uVar3; + + sVar2 = get_num_players(); + if (sVar2 < 3) { + uVar1 = 0; + } + else { + uVar3 = get_cur_playernum(); + if ((uVar3 == 1) || (uVar3 = get_cur_playernum(), uVar3 == 3)) { + uVar1 = 0xa1; + } + else { + uVar1 = 0; + } + } + return uVar1; +} + + + +int get_curplayer_viewport_height(void) + +{ + s32 sVar1; + int iVar2; + float fVar3; + + sVar1 = get_num_players(); + if (sVar1 < 2) { + if (camera_8003642C == 0) { + iVar2 = cur_player_get_screen_setting(); + if (iVar2 == 1) { + fVar3 = proc_7F07EA78(); + iVar2 = ((int)(fVar3 * 40.00000000) + 0xb4) * 0x10000 >> 0x10; + } + else { + iVar2 = cur_player_get_screen_setting(); + if (iVar2 == 2) { + fVar3 = proc_7F07EA78(); + iVar2 = ((int)(fVar3 * 84.00000000) + 0x88) * 0x10000 >> 0x10; + } + else { + iVar2 = 0xdc; + } + } + } + else { + iVar2 = cur_player_get_screen_setting(); + if (iVar2 == 1) { + iVar2 = 0xf8; + } + else { + iVar2 = cur_player_get_screen_setting(); + if (iVar2 == 2) { + iVar2 = 0xbe; + } + else { + iVar2 = 0x130; + } + } + } + } + else { + iVar2 = 0x6d; + } + return iVar2; +} + + + +int get_curplayer_viewport_uly(void) + +{ + s32 sVar1; + u32 uVar2; + int iVar3; + float fVar4; + + sVar1 = get_num_players(); + if (sVar1 == 2) { + uVar2 = get_cur_playernum(); + if (uVar2 == 0) { + iVar3 = 10; + } + else { + iVar3 = 0x79; + } + } + else { + sVar1 = get_num_players(); + if (sVar1 < 3) { + if (camera_8003642C == 0) { + iVar3 = cur_player_get_screen_setting(); + if (iVar3 == 1) { + fVar4 = proc_7F07EA78(); + iVar3 = ((int)(fVar4 * -20.00000000) + 0x1e) * 0x10000 >> 0x10; + } + else { + iVar3 = cur_player_get_screen_setting(); + if (iVar3 == 2) { + fVar4 = proc_7F07EA78(); + iVar3 = ((int)(fVar4 * -42.00000000) + 0x34) * 0x10000 >> 0x10; + } + else { + iVar3 = 10; + } + } + } + else { + iVar3 = cur_player_get_screen_setting(); + if (iVar3 == 1) { + iVar3 = 0x29; + } + else { + iVar3 = cur_player_get_screen_setting(); + if (iVar3 == 2) { + iVar3 = 0x46; + } + else { + iVar3 = 0xd; + } + } + } + } + else { + uVar2 = get_cur_playernum(); + if ((int)uVar2 < 2) { + iVar3 = 10; + } + else { + iVar3 = 0x79; + } + } + } + return iVar3; +} + + + +// WARNING: Instruction at (ram,0x7f08735c) overlaps instruction at (ram,0x7f087358) +// + +void possibly_reset_viewport_options_for_player(char param_1,char param_2,ushort param_3) + +{ + u8 *puVar2; + int isset; + s32 sVar3; + undefined8 uVar1; + int iVar4; + u32 uVar5; + undefined4 uVar6; + uint flag; + ulonglong uVar7; + + set_cur_player_fovy(60.00000000); + setvideo_far(60.00000000); + if (camera_80036430 == 0) { + if (camera_80036434 != 0) { + if ((camera_80036434 < 4) || (puVar2 = get_video_settings2_frameb(), puVar2 != cfb_16_a) + ) { + camera_80036434 += 1; + } + else { + camera_8003642C = 0; + camera_80036434 = 0; + } + } + } + else { + if (((camera_80036430 < 4) || (resolution == NULL)) || + (puVar2 = get_video_settings2_frameb(), puVar2 != cfb_16_b)) { + camera_80036430 += 1; + } + else { + camera_8003642C = 1; + camera_80036430 = 0; + } + } + if ((camera_8003642C != 0) && (puVar2 = get_video_settings2_frameb(), puVar2 == cfb_16_b)) { + set_video_settings2_frameb(resolution); + } + isset = get_screen_ratio(); + if (isset == 1) { + sVar3 = get_curplayer_viewport_width(); + isset = get_curplayer_viewport_height(); + set_cur_player_aspect + ((f32)(((float)(int)(short)sVar3 / (float)isset) * 0.75000000 * flt_80055264)); + sVar3 = get_curplayer_viewport_width(); + isset = get_curplayer_viewport_height(); + video_related_21((f32)(((float)(int)(short)sVar3 / (float)isset) * 0.75000000 * flt_80055268 + )); + } + else { + sVar3 = get_curplayer_viewport_width(); + isset = get_curplayer_viewport_height(); + set_cur_player_aspect((f32)((float)(int)(short)sVar3 / (float)isset)); + sVar3 = get_curplayer_viewport_width(); + isset = get_curplayer_viewport_height(); + video_related_21((f32)((float)(int)(short)sVar3 / (float)isset)); + } + sVar3 = get_curplayer_viewport_width(); + isset = get_curplayer_viewport_height(); + set_cur_player_screen_size((short)sVar3,(short)isset); + uVar1 = get_curplayer_viewport_ulx(); + isset = get_curplayer_viewport_uly(); + set_cur_player_viewport_size((short)uVar1,(short)isset); + isset = getWidth320or440(); + iVar4 = getHeight330or240(); + set_video2_text_clip_size((short)isset,(short)iVar4); + isset = getWidth320or440(); + iVar4 = getHeight330or240(); + set_video2_settings_offset_18_1A((short)isset,(short)iVar4); + sVar3 = get_curplayer_viewport_width(); + isset = get_curplayer_viewport_height(); + set_video2_width_height((short)sVar3,(short)isset); + uVar1 = get_curplayer_viewport_ulx(); + isset = get_curplayer_viewport_uly(); + set_video2_ulx_uly((short)uVar1,(short)isset); + proc_7F0808BC(); + proc_7F080A80(); + uVar5 = cur_player_get_autoaim(); + set_BONDdata_autoaim_y(uVar5); + uVar5 = cur_player_get_autoaim(); + set_BONDdata_autoaim_x(uVar5); + uVar6 = cur_player_get_lookahead(); + set_BONDdata_lookahead_setting(uVar6); + isset = cur_player_get_ammo_onscreen_setting(); + set_unset_ammo_on_screen_setting(1,isset); + sVar3 = get_num_players(); + if (sVar3 == 1) { + isset = cur_player_get_sight_onscreen_control(); + flag = (uint)(isset != 0); + if (isset != 0) goto LAB_7f087330; + } + sVar3 = get_num_players(); + uVar7 = (ulonglong)(sVar3 < 2) ^ 1; + flag = (uint)uVar7; + if (uVar7 != 0) { + flag = (uint)(pPlayersPerm->sight != '\0'); + } +LAB_7f087330: + set_unset_bitflags(1,flag); + if (((cameramode == 0) || ((cameramode == FP_CAM && (dword_800364B0 != 0)))) || + (cameramode == UNK10_CAM)) { + uVar5 = get_cur_playernum(); + if (uVar5 == 0) { + missiontime += clock_timer; + } + MoveBond(param_1,param_2,param_3,pPlayer->field_3B4); + } + else { + proc_7F086990((longlong)param_1,(longlong)param_2,param_3,pPlayer->field_3B4); + } + watch_time += speedgraphframes; + if (stop_time_flag != 0) { + isset = get_controls_locked_flag(); + if ((isset == 0) && ((param_3 & ~pPlayer->field_3B4 & 0xf030) != 0)) { + stop_time_flag = 2; + uVar7 = check_if_fade_to_black_complete(); + if (uVar7 == 0) { + if ((float)pPlayer->field_404 == 0.00000000) { + fade_to_over_seconds(pPlayer->field_3E0,1.00000000); + } + } + else { + if (pPlayer->tint_alpha == 0.00000000) { + proc_7F0807B0(0,0,0,0); + fade_to_over_seconds(60.00000000,1.00000000); + } + } + } + if (((stop_time_flag == 2) && (uVar7 = check_if_fade_to_black_complete(), uVar7 != 0)) && + (pPlayer->tint_alpha == 1.00000000)) { + return_to_title_from_level_end(); + } + } + if (enable_move_after_cinema != 0) { + proc_7F07B1A4(); + } + if (pPlayer->bonddead != 0) { + isset = pPlayer->field_424; + if (isset == 0) { + draw_item_in_hand_has_more_ammo(HAND_LEFT,ITEM_UNARMED); + draw_item_in_hand_has_more_ammo(HAND_RIGHT,ITEM_UNARMED); + isset = pPlayer->field_424; + } + if (((isset != 0) && (pPlayer->field_428 != 0)) && (2 < dword_80036510)) { + run_title_stage(); + } + } + if ((cameramode == UNK10_CAM) && (uVar7 = check_if_fade_to_black_complete(), uVar7 != 0)) { + run_title_stage(); + } + pPlayer->field_3B4 = param_3; + return; +} + + + +void proc_7F0875E4(s32 roomindex) + +{ + f32 fVar1; + + proc_7F0BCA34(roomindex,(float *)&pPlayer->current_model_xpos); + fVar1 = proc_7F0B483C(); + *(float *)&pPlayer->current_room_xpos = (float)fVar1 * (float)pPlayer->current_model_xpos; + fVar1 = proc_7F0B483C(); + *(float *)&pPlayer->current_room_ypos = (float)fVar1 * (float)pPlayer->current_model_ypos; + fVar1 = proc_7F0B483C(); + *(float *)&pPlayer->current_room_zpos = (float)fVar1 * (float)pPlayer->current_model_zpos; + proc_7F0BC624(roomindex); + return; +} + + + +void store_BONDdata_curpos_to_previous(void) + +{ + float *pfVar1; + + pPlayer->previous_model_xpos = pPlayer->current_model_xpos; + pPlayer->previous_model_ypos = pPlayer->current_model_ypos; + pPlayer->previous_model_zpos = pPlayer->current_model_zpos; + pfVar1 = (float *)get_BONDdata_field_10CC(); + proc_7F0583D8(pfVar1,(float *)&pPlayer->previous_model_xpos); + return; +} + + + +void proc_7F0876C4(float *param_1,float *param_2,float *param_3) + +{ + ulonglong uVar1; + float *pfVar2; + float *pfVar3; + int iVar4; + undefined8 extraout_a0; + float *pfVar5; + undefined4 unaff_s0_lo; + undefined4 unaff_s1_lo; + undefined4 unaff_s2_lo; + undefined4 unaff_retaddr; + f32 fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float extraout_f12; + float xEye; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + float yEye; + float extraout_f14_00; + float extraout_f14_01; + float fVar12; + float fVar13; + undefined in_stack_fffffee4 [12]; + undefined8 in_stack_ffffff00; + float afStack232 [16]; + float afStack168 [3]; + float fStack156; + float fStack152; + float fStack148; + float fStack144; + float fStack140; + float fStack136; + float afStack132 [16]; + LookAt *pLStack68; + byte abStack64 [64]; + + uVar1 = get_cur_players_room(); + pLStack68 = (LookAt *)uVar1; + proc_7F0875E4((s32)pLStack68); + proc_7F0BD6E0(); + *(LookAt **)&pPlayer->field_5C = pLStack68; + proc_7F0BD6E0(); + *(LookAt **)&pPlayer->field_60 = pLStack68; + proc_7F0BD6E0(); + *(LookAt **)&pPlayer->field_64 = pLStack68; + proc_7F0BD6E0(); + *(LookAt **)&pPlayer->field_68 = pLStack68; + proc_7F0BD6F8(2); + fStack156 = (*param_1 - (float)pPlayer->current_model_xpos) * flt_800364CC; + fStack152 = (param_1[1] - (float)pPlayer->current_model_ypos) * flt_800364CC; + fStack148 = (param_1[2] - (float)pPlayer->current_model_zpos) * flt_800364CC; + fStack144 = *param_2 + fStack156; + fStack140 = param_2[1] + fStack152; + fStack136 = param_2[2] + fStack148; + proc_7F059424(afStack132,extraout_f12,extraout_f14,fStack156,fStack152,fStack148,*param_2, + param_2[1],param_2[2],*param_3); + fVar9 = param_3[2]; + guLookAtReflect((Mtx *)abStack64,pLStack68,xEye,yEye,fStack156,fStack152,fStack148,fStack144, + fStack140,fStack136,*param_3); + pfVar2 = param_1; + proc_7F059424((float *)pPlayer->field_64,extraout_f12_00,extraout_f14_00,*param_1,param_1[1], + param_1[2],*param_2,param_2[1],param_2[2],*param_3); + fVar12 = *param_2; + fVar13 = param_2[1]; + fVar11 = param_2[2]; + fVar8 = *param_3; + fVar7 = param_3[1]; + fVar10 = param_3[2]; + proc_7F059708((float *)pPlayer->field_68,extraout_f12_01,extraout_f14_01,*param_1,param_1[1], + param_1[2],fVar12,fVar13,fVar11,fVar8); + proc_7F0BD6E0(); + pfVar5 = (float *)get_BONDdata_field_10DC(); + proc_7F0580C8(pfVar5,afStack132,(int)(Mtx *)afStack232); + pfVar5 = afStack232; + do { + iVar4 = 0; + pfVar3 = pfVar5; + do { + iVar4 += 4; + if (32000.00000000 < *pfVar3) { + *pfVar3 = 32000.00000000; + } + else { + if (*pfVar3 < -32000.00000000) { + *pfVar3 = -32000.00000000; + } + } + pfVar3 = pfVar3 + 1; + } while (iVar4 != 0x10); + pfVar5 = pfVar5 + 4; + } while (pfVar5 != afStack168); + guMtxF2L((float [4] [4]) + CONCAT568(CONCAT524(CONCAT484(CONCAT444(CONCAT404(CONCAT2812(CONCAT244(CONCAT204( + CONCAT164(CONCAT124(CONCAT84(CONCAT44(fVar12, + fVar13),fVar11),fVar8),fVar7),fVar10),fVar9), + in_stack_fffffee4),unaff_s0_lo),unaff_s1_lo), + unaff_s2_lo),unaff_retaddr),in_stack_ffffff00), + (Mtx *)afStack232); + set_BONDdata_field_10E0(pfVar2); + fVar6 = proc_7F0B4878(); + matrix_multiply_A1_by_F12((float)fVar6,extraout_a0,afStack132); + guMtxF2L((float [4] [4]) + CONCAT568(CONCAT524(CONCAT484(CONCAT444(CONCAT404(CONCAT2812(CONCAT244(CONCAT204( + CONCAT164(CONCAT124(CONCAT84(CONCAT44(fVar12, + fVar13),fVar11),fVar8),fVar7),fVar10),fVar9), + in_stack_fffffee4),unaff_s0_lo),unaff_s1_lo), + unaff_s2_lo),unaff_retaddr),in_stack_ffffff00), + (Mtx *)afStack132); + proc_7F059334((uint *)pPlayer->field_5C,pPlayer->field_60); + set_BONDdata_field_10C8(pPlayer->field_5C); + set_BONDdata_field_10C4(pPlayer->field_60); + copy_BONDdata_field_10CC_to_10E8_set_10CC(pPlayer->field_64); + proc_7F078424(pPlayer->field_68); + set_BONDdata_field_10E4(pLStack68); + proc_7F0785DC(); + store_BONDdata_curpos_to_previous(); + return; +} + + + +undefined4 proc_7F087A08(undefined4 param_1) + +{ + float vector2; + float fVar1; + undefined4 auStack76 [3]; + float local_40; + f32 local_3c; + float local_38; + float local_34; + undefined4 local_30; + undefined4 local_2c; + int *local_28; + float local_24; + f32 local_20; + f32 local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + f32 local_8; + f32 local_4; + + if (pPlayer->unknown == 1) { + local_c = pPlayer->xpos; + local_8 = pPlayer->ypos; + local_4 = pPlayer->zpos; + local_18 = (float)pPlayer->xpos2 - (float)pPlayer->xpos; + local_14 = (float)pPlayer->ypos2 - (float)pPlayer->ypos; + local_10 = (float)pPlayer->zpos2 - (float)pPlayer->zpos; + local_24 = pPlayer->xoffset; + local_20 = pPlayer->yoffset; + local_1c = pPlayer->zoffset; + } + else { + local_28 = &pPlayer->ptr_tile_printmanpos; + local_34 = dword_80036830; + local_30 = dword_80036834; + local_2c = dword_80036838; + if (pPlayer->bonddead == 0) { + proc_7F09C7C4((float *)&pPlayer->field_4B4,(float *)&pPlayer->field_4C0,&local_34); + } + else { + video_related_9(0.00000000); + } + local_c = (f32)local_28[0xb]; + local_8 = (f32)local_28[0xc]; + local_4 = (f32)local_28[0xd]; + local_18 = (float)local_28[0xe]; + local_14 = (float)local_28[0xf]; + local_10 = (float)local_28[0x10]; + local_24 = (f32)local_28[0x11]; + local_20 = (f32)local_28[0x12]; + local_1c = (f32)local_28[0x13]; + } + proc_7F0876C4(&local_c,&local_18,&local_24); + proc_7F068190(auStack76,&local_40); + vector2 = sqrtf(local_38 * local_38 + local_40 * local_40); + fVar1 = get_curplay_vertical_rotation_in_degrees(); + vector2 = convert_angle_using_inverse(local_3c,(f32)vector2); + vector2 = vector2 + fVar1; + if (flt_8005526C <= vector2) { + vector2 = vector2 - flt_80055270; + } + *(float *)&pPlayer->field_2A08 = vector2; + vector2 = convert_angle_using_inverse((f32)-local_40,(f32)-local_38); + if (flt_80055274 <= vector2) { + vector2 = vector2 - flt_80055278; + } + *(float *)&pPlayer->field_2A0C = vector2; + return param_1; +} + + + +void seems_to_load_cuff_microcode(void *instance,Gitemheader *header,void *param_3) + +{ + CUFF_TYPES cufftype; + u8 selectedbond; + uint *puVar1; + ushort **ppuVar2; + int iVar3; + int iVar4; + ushort *puVar5; + + selectedbond = getSelectedFolderBond(); + iVar3 = header->offset_objblock; + iVar4 = (int)param_3 * 4; + ppuVar2 = (ushort **)(iVar3 + iVar4); + if (*ppuVar2 == NULL) { + puVar5 = ppuVar2[1]; + } + else { + puVar1 = (uint *)extract_id_from_object_structure_microcode((int)instance,*ppuVar2); + *puVar1 = (uint)(pPlayer->cuff_value == CUFF_BOILER); + iVar3 = header->offset_objblock; + ppuVar2 = (ushort **)(iVar3 + iVar4); + puVar5 = ppuVar2[1]; + } + if (puVar5 != NULL) { + puVar1 = (uint *)extract_id_from_object_structure_microcode + ((int)instance,*(ushort **)(iVar3 + ((int)param_3 + 1) * 4)); + cufftype = pPlayer->cuff_value; + if (cufftype == CUFF_TUX) { + *puVar1 = (uint)(cufftype == CUFF_TUX); + } + else { + if (cufftype == CUFF_TUX6) { + *puVar1 = (uint)(cufftype == CUFF_TUX6); + } + else { + if (cufftype == CUFF_TUX7) { + *puVar1 = (uint)(cufftype == CUFF_TUX7); + } + else { + if (cufftype == CUFF_TUX8) { + *puVar1 = (uint)(selectedbond != '\x01'); + } + else { + *puVar1 = (uint)(cufftype == CUFF_TUX8); + } + } + } + } + iVar3 = header->offset_objblock; + ppuVar2 = (ushort **)(iVar3 + iVar4); + } + if (ppuVar2[2] != NULL) { + puVar1 = (uint *)extract_id_from_object_structure_microcode + ((int)instance,*(ushort **)(iVar3 + ((int)param_3 + 2) * 4)); + cufftype = pPlayer->cuff_value; + if (cufftype == CUFF_WHITE) { + *puVar1 = (uint)(cufftype == CUFF_WHITE); + } + else { + if (cufftype == CUFF_TUX8) { + *puVar1 = (uint)(selectedbond == '\x01'); + } + else { + *puVar1 = (uint)(cufftype == CUFF_TUX8); + } + } + iVar3 = header->offset_objblock; + ppuVar2 = (ushort **)(iVar3 + iVar4); + } + if (ppuVar2[3] != NULL) { + puVar1 = (uint *)extract_id_from_object_structure_microcode + ((int)instance,*(ushort **)(iVar3 + ((int)param_3 + 3) * 4)); + *puVar1 = (uint)(pPlayer->cuff_value == CUFF_BLUE); + iVar3 = header->offset_objblock; + ppuVar2 = (ushort **)(iVar3 + iVar4); + } + if (ppuVar2[4] != NULL) { + puVar1 = (uint *)extract_id_from_object_structure_microcode + ((int)instance,*(ushort **)(iVar3 + ((int)param_3 + 4) * 4)); + *puVar1 = (uint)(pPlayer->cuff_value == CUFF_JUNGLE); + iVar3 = header->offset_objblock; + ppuVar2 = (ushort **)(iVar3 + iVar4); + } + if (ppuVar2[5] != NULL) { + puVar1 = (uint *)extract_id_from_object_structure_microcode + ((int)instance,*(ushort **)(iVar3 + ((int)param_3 + 5) * 4)); + *puVar1 = (uint)(pPlayer->cuff_value == CUFF_SNOW); + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f088514) overlaps instruction at (ram,0x7f088510) +// + +undefined4 * proc_7F087E74(undefined4 *param_1) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + Player *pPVar5; + longlong lVar4; + undefined8 extraout_a0; + undefined4 extraout_a2_lo; + float *pfVar6; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + float **ppfVar7; + float **ppfVar8; + float **ppfVar9; + float **ppfVar10; + float *pfVar11; + float fVar12; + float fovy; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float aspect; + undefined4 *local_res0; + float afStack428 [16]; + xyzpoint *local_16c; + int local_168; + float *local_160; + float local_15c; + xyzpoint local_144; + float afStack312 [4]; + float afStack296 [4]; + float afStack280 [4]; + float afStack264 [3]; + float afStack252 [3]; + float afStack240 [18]; + u16 local_a6; + Mtx *local_a4; + Mtx *local_a0; + Gitemheader *local_98; + float *local_94; + float *local_90; + float local_8c; + float local_88; + float local_84; + float afStack128 [16]; + float *local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 *local_34; + float *local_30; + undefined4 local_10; + uint local_c; + + local_res0 = param_1; + if (pPlayer->pause_animation_state != 0) { + ppfVar9 = (float **)&dword_8003683C; + ppfVar7 = &local_40; + if (pPlayer->pausing_flag != 0) { + do { + ppfVar10 = ppfVar9 + 3; + ppfVar8 = ppfVar7 + 3; + *ppfVar7 = *ppfVar9; + ppfVar7[1] = ppfVar9[1]; + ppfVar7[2] = ppfVar9[2]; + ppfVar9 = ppfVar10; + ppfVar7 = ppfVar8; + } while (ppfVar10 != (float **)0x80036878); + *ppfVar8 = pfRam80036878; + local_8c = DAT_8003687c; + local_88 = (float)DAT_80036880; + local_84 = (float)DAT_80036884; + local_98 = get_ptr_itemheader_in_hand(HAND_LEFT); + local_a4 = (Mtx *)extract_id_from_object_structure_microcode + ((int)&pPlayer->something_with_watch_object_instance, + *(ushort **)(local_98->offset_objblock + 0xc)); + local_a0 = local_a4; + proc_7F0BD6E0(); + guPerspective(local_a4,&local_a6,fovy,aspect,(float)pPlayer->zoominfovy,1.45454550, + 10.00000000); + *param_1 = 0x1030040; + *(Mtx **)(param_1 + 1) = local_a4 + -0x2000000; + param_1[2] = 0xbc00000e; + param_1[3] = (uint)local_a6; + local_34 = param_1 + 4; + *(int *)*local_a0 = pPlayer->paused_flag; + local_8c = (float)pPlayer->field_498 * ((float)pPlayer->field_54C + -12.00000000) + + (float)pPlayer->positionx + + (float)pPlayer->field_544 * -(float)pPlayer->field_4A0; + local_88 = (float)pPlayer->field_548 + (float)pPlayer->positiony; + local_84 = (float)pPlayer->field_4A0 * ((float)pPlayer->field_54C + -12.00000000) + + (float)pPlayer->positionz + + (float)pPlayer->field_544 * (float)pPlayer->field_498; + proc_7F0584D0(&local_8c,extraout_f12, + (float *)((360.00000000 - pPlayer->vv_theta) * flt_8005527C)); + local_94 = (float *)get_BONDdata_field_10CC(); + sub_GAME_7F058098(local_94,afStack128); + proc_7F0BD714((int)local_98->num_objgroups << 6); + seems_to_load_cuff_microcode(&pPlayer->something_with_watch_object_instance,local_98,&i) + ; + local_40 = afStack128; + local_30 = local_94; + subcalcmatrices(&local_40,(uint)&pPlayer->something_with_watch_object_instance, + extraout_a2_lo,extraout_a3_lo); + local_90 = (float *)0x3f800000; + pfVar11 = *(float **)(*(int *)local_98->offset_objblock + 4); + local_168 = watch_time; + pfVar6 = (float *)((float)pPlayer->field_258 / 20.00000000); + if (1.00000000 < (float)pfVar6) { + fVar12 = *pfVar11; + } + else { + fVar12 = *pfVar11; + local_90 = pfVar6; + } + local_144.x = (((float)pPlayer->field_1D4 - + fVar12 * (float)pPlayer->watch_scale_destination) - local_94[0xc]) * + (float)local_90 + local_94[0xc]; + local_144.y = (((float)pPlayer->field_1D8 + + pfVar11[2] * (float)pPlayer->watch_scale_destination) - local_94[0xd]) * + (float)local_90 + local_94[0xd]; + fVar12 = local_94[0xe]; + local_144.z = (((float)pPlayer->pause_watch_position - + pfVar11[1] * (float)pPlayer->watch_scale_destination) - fVar12) * + (float)local_90 + fVar12; + proc_7F059908(afStack240,fVar12,(float)local_90,0.00000000,0.00000000,0.00000000, + (float)pPlayer->field_1E0,(float)pPlayer->field_1E4, + (float)pPlayer->field_1E8,(float)pPlayer->field_1EC); + proc_7F058860(local_94,afStack252); + proc_7F058860(afStack240,afStack264); + proc_7F05B3F4(afStack252,afStack280); + proc_7F05B3F4(afStack264,afStack296); + proc_7F05BE10(afStack280,afStack296); + proc_7F05BA08(afStack280,afStack296,extraout_f12_00,local_90); + proc_7F05B628(afStack312,local_94); + copies_first_3_floats_from_a0_to_a1_plus_0x30(&local_144,(int)local_94); + matrix_multiply_A1_by_F12((float)pPlayer->watch_scale_destination,extraout_a0,local_94); + iVar2 = local_168 / 0x3c; + if (false) { + trap(0x1c00); + } + if ((false) && (local_168 == -0x80000000)) { + trap(0x1800); + } + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + local_15c = (-((float)(iVar2 % 0x3c) + (float)(local_168 % 0x3c) / 60.00000000) * + flt_80055280) / 60.00000000; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 / 0x3c == -0x80000000)) { + trap(0x1800); + } + local_160 = (float *)((-(float)((iVar2 / 0x3c) % 0x3c) * flt_80055280) / 60.00000000 + + local_15c / 60.00000000); + pfVar11 = (float *)((-(float)((iVar2 / 0xe10) % 0xc) * flt_80055280) / 12.00000000 + + (float)local_160 / 12.00000000 + local_15c / 720.00000000); + while (local_15c < 0.00000000) { + local_15c = local_15c + flt_80055280; + } + while ((float)local_160 < 0.00000000) { + local_160 = (float *)((float)local_160 + flt_80055280); + } + if ((float)pfVar11 < 0.00000000) { + do { + pfVar11 = (float *)((float)pfVar11 + flt_80055280); + } while ((float)pfVar11 < 0.00000000); + piVar1 = (int *)local_98->offset_objblock; + } + else { + piVar1 = (int *)local_98->offset_objblock; + } + pfVar6 = local_94 + 0x10; + proc_7F0584D0(*(float **)(*piVar1 + 4),local_15c,pfVar11); + proc_7F058068(local_94,pfVar6); + pfVar11 = local_94 + 0x20; + proc_7F0584D0(*(float **)(*(int *)(local_98->offset_objblock + 4) + 4),extraout_f12_01, + local_160); + proc_7F058068(local_94,pfVar11); + pfVar11 = local_94 + 0x30; + proc_7F0584D0(*(float **)(*(int *)(local_98->offset_objblock + 8) + 4),local_15c, + (float *)local_15c); + proc_7F058068(local_94,pfVar11); + local_38 = 3; + local_3c = 0; + local_10 = 4; + if ((pPlayer->pause_animation_state == 5) || (pPlayer->pause_animation_state == 0xc)) { + local_c = 0xcd; + } + else { + local_c = (uint)(byte)pPlayer->field_FDF | (uint)(byte)pPlayer->field_FDC << 0x18 | + (uint)(byte)pPlayer->field_FDD << 0x10 | + (uint)(byte)pPlayer->field_FDE << 8; + } + pPVar5 = pPlayer; + subdraw((int)&local_40,(uint)&pPlayer->something_with_watch_object_instance, + extraout_a2_lo_00,extraout_a3_lo_00); + puVar3 = local_34; + local_16c = *(xyzpoint **)(*(int *)(local_98->offset_objblock + 8) + 4); + proc_7F0BD6E0(); + init_something_copy_posdata_to_it(local_16c,(int *)afStack428); + proc_7F058068(local_94,afStack428); + proc_7F058C64(); + proc_7F058C9C((int)afStack428,(uint *)pPVar5); + proc_7F058C88(); + lVar4 = proc_7F0ACA28((longlong)(int)puVar3,(int)pPVar5, + (uint)(pPlayer->pause_animation_state == 5 || + pPlayer->pause_animation_state == 0xc)); + local_res0 = (undefined4 *)lVar4; + proc_7F058C64(); + proc_7F08BD48((undefined4 *)pPlayer->field_23C,(int)local_98->num_objgroups); + proc_7F058C88(); + } + } + return local_res0; +} + + + +undefined4 * proc_7F088618(undefined4 *param_1) + +{ + u32 uVar1; + void *virtualAddress; + float in_f12; + float extraout_f12; + float l; + float extraout_f12_00; + float r; + float extraout_f14; + float afStack72 [16]; + Mtx *pabStack8; + Mtx *pabStack4; + + proc_7F0A2F30((short *)&pPlayer->healthdamagetype,0x2e,1,in_f12); + proc_7F0A3330(&pPlayer->field_19F8,(int)&pPlayer[-0x30303].field_1238,0x2e); + proc_7F0A2F30((short *)&pPlayer->related_to_health_display,0x2e,-1,extraout_f12); + pabStack8 = (Mtx *)proc_7F0A3330(&pPlayer->field_2128,(int)&pPlayer[-0x30303].field_1518,0x2e); + proc_7F0BD6E0(); + pabStack4 = pabStack8; + proc_7F0BD6E0(); + guOrtho(pabStack8,l,r,flt_800364CC * -800.00000000,flt_800364CC * 800.00000000, + flt_800364CC * -600.00000000,flt_800364CC * 600.00000000,-100.00000000); + *param_1 = 0x1030040; + uVar1 = osVirtualToPhysical(pabStack8); + param_1[1] = uVar1; + proc_7F059694(afStack72,extraout_f12_00,extraout_f14,0.00000000,500.00000000,0.00000000, + 0.00000000,0.00000000,0.00000000,0.00000000); + proc_7F058C9C((int)afStack72,(uint *)pabStack4); + param_1[2] = 0x1020040; + uVar1 = osVirtualToPhysical(pabStack4); + param_1[3] = uVar1; + param_1[4] = 0xe7000000; + param_1[5] = 0; + param_1[6] = 0xba001402; + param_1[7] = 0; + param_1[8] = 0xb900031d; + param_1[9] = 0x5041c8; + param_1[10] = 0xb9000002; + param_1[0xb] = 0; + param_1[0xc] = 0xfcffffff; + param_1[0xd] = 0xfffe793c; + param_1[0xe] = 0xfa000000; + param_1[0xf] = 0xe6e6e600; + param_1[0x10] = 0xb6000000; + param_1[0x11] = 0x3000; + param_1[0x12] = 0x6000000; + *(int **)(param_1 + 0x13) = &pPlayer[-0x30303].field_1978; + param_1[0x14] = 0x6000000; + *(int **)(param_1 + 0x15) = &pPlayer[-0x30303].field_20A8; + param_1[0x16] = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10D8(); + uVar1 = osVirtualToPhysical(virtualAddress); + param_1[0x17] = uVar1; + return param_1 + 0x18; +} + + + +void proc_7F0888E8(void) + +{ + int *tile; + s32 sVar1; + uint uVar2; + u32 uVar3; + int iVar4; + int iVar5; + uint *puVar6; + float fVar7; + float __x; + int iStack12; + float fStack8; + int iStack4; + + puVar6 = (uint *)ptr_setup_intro; + iStack12 = DAT_8003688c; + fStack8 = (float)DAT_80036890; + iStack4 = DAT_80036894; + init_player_BONDdata(); + proc_7F0798B8(); + pPlayer->bonddead = 0; + pPlayer->field_428 = 0; + pPlayer->field_424 = 0; + pPlayer->field_420 = 1; + pPlayer->field_29B8 = 7; + pPlayer->damagetype = 7; + pPlayer->somekinda_flags = 0; + pPlayer->somekinda_bitflags = 2; + proc_7F08A380(0xffffffff); + proc_7F08A928(0xffffffff); + sVar1 = get_num_players(); + if (sVar1 < 2) { + uVar2 = 0; + } + else { + if (DAT_80079c68 < 1) { + uVar2 = 0; + } + else { + uVar2 = proc_7F0790F0(); + } + } + tile = (int *)(&DAT_80079c28)[uVar2]; + iStack12 = *tile; + iStack4 = tile[2]; + tile = (int *)tile[10]; + fVar7 = proc_7F080D60((longlong)(int)tile,iStack12,iStack4); + fStack8 = (float)pPlayer->field_29BC + fVar7; + *(float *)&pPlayer->field_70 = fVar7; + uVar3 = get_random_value(); + __x = (float)uVar3; + if ((int)uVar3 < 0) { + __x = __x + 4294967296.00000000; + } + __x = __x * 0.00000000 * flt_80055284; + pPlayer->vv_theta = (__x * 360.00000000) / flt_80055284; + *(float *)&pPlayer->clipping_height = fVar7; + *(float *)&pPlayer->field_6C = fVar7 / flt_80055288; + change_player_pos_to_target(&pPlayer->ptr_tile_printmanpos,&iStack12,tile); + fVar7 = sinf(__x); + *(float *)&pPlayer->field_498 = -fVar7; + pPlayer->field_49C = 0; + __x = cosf(__x); + fVar7 = flt_8005528C; + *(float *)&pPlayer->field_4A0 = __x; + pPlayer->field_408 = iStack12; + *(int *)(pPlayer->position_data_pointer + 8) = iStack12; + *(float *)&pPlayer->field_40C = fStack8; + *(float *)(pPlayer->position_data_pointer + 0xc) = fStack8; + pPlayer->field_410 = iStack4; + *(int *)(pPlayer->position_data_pointer + 0x10) = iStack4; + *(int **)(pPlayer->position_data_pointer + 0x14) = tile; + *(float *)&pPlayer->field_3B8 = (float)pPlayer->field_4B4 / fVar7; + *(float *)&pPlayer->field_3BC = (float)pPlayer->field_4B8 / fVar7; + *(float *)&pPlayer->field_3C0 = (float)pPlayer->field_4BC / fVar7; + reinit_BONDdata_inventory(); + pPlayer->ammoheldarr[0] = 0; + pPlayer->ammoheldarr[1] = 0; + iVar4 = 8; + do { + *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4) = 0; + *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4 + 4) = 0; + *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4 + 8) = 0; + iVar5 = iVar4 + 0x10; + *(undefined4 *)((int)pPlayer->ammoheldarr + iVar4 + 0xc) = 0; + iVar4 = iVar5; + } while (iVar5 != 0x78); + if (puVar6 != NULL) { + uVar2 = *puVar6; + while (uVar2 != 9) { + if (uVar2 < 7) { + // WARNING: Could not recover jumptable at 0x7f088be0. Too many branches + // WARNING: Treating indirect jump as call + (*(code *)(&jpt_700BCB10)[uVar2])(); + return; + } + puVar6 = puVar6 + 1; + uVar2 = *puVar6; + } + } + pPlayer->field_78 = 0.00000000; + *(float *)&pPlayer->field_7C = flt_800552AC; + pPlayer->field_80 = 0.00000000; + set_curplayer_fade(120.00000000,1.00000000); + return; +} + + + +undefined4 * proc_7F088CD8(undefined4 *param_1) + +{ + TEXTFILESTRINGS TVar1; + short *psVar2; + short sVar3; + int iVar4; + int iVar6; + ulonglong uVar5; + short sVar8; + TEXTFILESTRINGS id; + byte *pbVar7; + short sVar9; + short sVar10; + undefined4 *DL; + longlong lVar11; + longlong lVar12; + TEXTFILESTRINGS *pTVar13; + int iVar14; + int iVar15; + longlong lVar16; + longlong lVar17; + int iStack40; + int iStack32; + int aiStack28 [3]; + int iStack16; + int aiStack12 [2]; + int iStack4; + + iVar6 = get_stage_num(); + if ((iVar6 == 0x36) && (dword_8003643C == 1)) { + uVar5 = ZEXT48(&camera_80036438); + lVar16 = 0xdc; + if (dword_80036440 != NULL) { + lVar17 = 0xdc; + sVar9 = 0; + camera_80036438 += 1; + sVar3 = 0; + iStack4 = camera_80036438; + microcode_constructor(param_1); + DL = (undefined4 *)uVar5; + sVar8 = get_video2_settings_height(); + iVar6 = iStack4 - sVar8; + if (iVar6 < 0) { + iVar6 += 0xf; + } + iVar6 >>= 4; + iVar4 = iStack4; + if (iStack4 < 0) { + iVar4 = iStack4 + 0xf; + } + iStack40 = (iVar4 >> 4) + 1; + if (iVar6 < 0) { + iVar6 = 0; + } + iVar4 = 0; + lVar11 = lVar16; + lVar12 = lVar17; + psVar2 = dword_80036440; + sVar8 = sVar9; + if (0 < iVar6) { + do { + lVar11 = lVar16; + lVar12 = lVar17; + sVar8 = sVar9; + if ((*psVar2 == 0) && (psVar2[1] == 0)) { + dword_8003643C = 2; + iVar6 = iVar4; + iStack40 = iVar4; + break; + } + if (*psVar2 != 0x5011) { + lVar11 = (longlong)psVar2[2]; + if (lVar11 < 0) { + sVar8 = psVar2[3]; + lVar11 = lVar16; + } + else { + sVar8 = psVar2[3]; + } + if (sVar8 < 0) { + sVar8 = sVar9; + } + } + iVar4 += 1; + if (psVar2[1] != 0x5011) { + lVar12 = (longlong)psVar2[4]; + if (lVar12 < 0) { + sVar9 = psVar2[5]; + lVar12 = lVar17; + } + else { + sVar9 = psVar2[5]; + } + if (-1 < sVar9) { + sVar3 = sVar9; + } + } + lVar16 = lVar11; + lVar17 = lVar12; + psVar2 = psVar2 + 6; + sVar9 = sVar8; + } while (iVar4 != iVar6); + } + if (iVar6 < iStack40) { + iVar4 = iVar6 * 0xc; + pTVar13 = (TEXTFILESTRINGS *)(dword_80036440 + iVar6 * 6); + id = *pTVar13; + lVar16 = lVar11; + lVar17 = lVar12; + if (id != 0) goto LAB_7f088e98; + TVar1 = dword_80036440[iVar6 * 6 + 1]; + while (lVar16 = lVar11, lVar17 = lVar12, TVar1 != 0) { +LAB_7f088e98: + do { + lVar11 = lVar16; + if (id != 0x5011) { + pbVar7 = get_textptr_for_textID(id); + iVar14 = (int)dword_80036440 + iVar4; + lVar11 = (longlong)*(short *)(iVar14 + 4); + if (lVar11 < 0) { + sVar9 = *(short *)(iVar14 + 6); + lVar11 = lVar16; + } + else { + sVar9 = *(short *)(iVar14 + 6); + } + iVar14 = (int)lVar11; + if (-1 < sVar9) { + sVar8 = sVar9; + } + sVar9 = get_video2_settings_height(); + sVar10 = get_video2_settings_uly(); + iStack16 = (((int)sVar10 + iVar6 * 0x10) - iStack4) + (int)sVar9; + aiStack28[0] = 0; + iStack32 = 0; + proc_7F0AE98C(aiStack28,&iStack32,pbVar7,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + if (sVar8 == 1) { + lVar16 = (longlong)(iVar14 - iStack32); + } + else { + if (sVar8 == 2) { + iVar15 = iVar14 - (iStack32 >> 1); + iVar14 = iVar15 + iStack32; + lVar16 = (longlong)iVar15; + } + else { + iVar14 += iStack32; + lVar16 = lVar11; + } + } + aiStack12[0] = (int)lVar16; + DL = microcode_constructor_related_to_menus + ((undefined4 *)uVar5,lVar16,(longlong)(iStack16 + -1), + (longlong)(iVar14 + 1),iStack16 + aiStack28[0] + 1,0); + sVar9 = get_video2_settings_txtClipW(); + sVar10 = get_video2_settings_txtClipH(); + uVar5 = SEXT28(sVar10); + en_text_write_stuff(DL,aiStack12,&iStack16,pbVar7, + (int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xffffffff,(int)sVar9, + (int)sVar10,0,0); + pTVar13 = (TEXTFILESTRINGS *)((int)dword_80036440 + iVar4); + } + lVar12 = lVar17; + if (pTVar13[1] != 0x5011) { + pbVar7 = get_textptr_for_textID(pTVar13[1]); + iVar14 = (int)dword_80036440 + iVar4; + lVar12 = (longlong)*(short *)(iVar14 + 8); + if (lVar12 < 0) { + sVar9 = *(short *)(iVar14 + 10); + lVar12 = lVar17; + } + else { + sVar9 = *(short *)(iVar14 + 10); + } + iVar14 = (int)lVar12; + if (-1 < sVar9) { + sVar3 = sVar9; + } + sVar9 = get_video2_settings_height(); + sVar10 = get_video2_settings_uly(); + iStack16 = (((int)sVar10 + iVar6 * 0x10) - iStack4) + (int)sVar9; + aiStack28[0] = 0; + iStack32 = 0; + proc_7F0AE98C(aiStack28,&iStack32,pbVar7,(int)ptrSecondFontTableLarge, + (int *)ptrFirstFontTableLarge,0); + if (sVar3 == 1) { + lVar16 = (longlong)(iVar14 - iStack32); + } + else { + if (sVar3 == 2) { + iVar15 = iVar14 - (iStack32 >> 1); + iVar14 = iVar15 + iStack32; + lVar16 = (longlong)iVar15; + } + else { + iVar14 += iStack32; + lVar16 = lVar12; + } + } + aiStack12[0] = (int)lVar16; + DL = microcode_constructor_related_to_menus + ((undefined4 *)uVar5,lVar16,(longlong)(iStack16 + -1), + (longlong)(iVar14 + 1),iStack16 + aiStack28[0] + 1,0); + sVar9 = get_video2_settings_txtClipW(); + sVar10 = get_video2_settings_txtClipH(); + uVar5 = SEXT28(sVar10); + en_text_write_stuff(DL,aiStack12,&iStack16,pbVar7, + (int)ptrSecondFontTableLarge, + (int)ptrFirstFontTableLarge,0xffffffff,(int)sVar9, + (int)sVar10,0,0); + } + DL = (undefined4 *)uVar5; + iVar6 += 1; + iVar4 += 0xc; + if (iStack40 <= iVar6) goto LAB_7f0891c8; + pTVar13 = (TEXTFILESTRINGS *)((int)dword_80036440 + iVar4); + id = *pTVar13; + lVar16 = lVar11; + lVar17 = lVar12; + } while (id != 0); + TVar1 = pTVar13[1]; + } + } +LAB_7f0891c8: + param_1 = combiner_bayer_lod_perspective(DL); + } + } + return param_1; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +undefined4 * maybe_mp_interface(void) + +{ + int *piVar1; + undefined4 *puVar4; + short sVar9; + short sVar10; + short sVar11; + short sVar12; + short sVar13; + short sVar14; + ulonglong uVar2; + s32 sVar5; + s16 sVar15; + longlong lVar3; + int iVar6; + u32 uVar7; + int *piVar8; + int iVar16; + undefined4 *in_a0_lo; + undefined4 extraout_a0_lo; + int iVar17; + undefined unaff_retaddr; + float local_34; + float extraout_f0; + float fVar18; + u32 *local_res0; + undefined in_stack_ffffffbf; + undefined in_stack_ffffffc3; + undefined in_stack_ffffffcb; + undefined4 in_stack_ffffffd0; + + local_res0 = in_a0_lo; + if (pPlayer->unknown == 1) { + proc_7F08A4E4(); + local_res0 = proc_7F08A5FC(local_res0); + proc_7F08A9F8(); + local_res0 = (u32 *)print_player_xyz_info(); + local_res0 = proc_7F056210(local_res0); + local_res0 = proc_7F0804E0(local_res0); + puVar4 = proc_7F088CD8(local_res0); + } + else { + proc_7F061920(); + proc_7F06908C((undefined4 *)register0x000000ec); + proc_7F062BE4((undefined4 *)register0x000000ec); + local_res0 = proc_7F087E74(local_res0); + if (pPlayer->mpmenuon != 0) { + sVar9 = get_video2_settings_ulx(); + sVar10 = get_video2_settings_uly(); + sVar11 = get_video2_settings_ulx(); + sVar12 = get_video2_settings_width(); + sVar13 = get_video2_settings_uly(); + sVar14 = get_video2_settings_height(); + puVar4 = (undefined4 *)(int)sVar14; + microcode_constructor(local_res0); + in_stack_ffffffbf = 0xa0; + local_res0 = puVar4; + local_res0 = microcode_constructor_related_to_menus + (puVar4,(longlong)(int)sVar9,(longlong)(int)sVar10, + (longlong)((int)sVar12 + (int)sVar11),(int)sVar14 + (int)sVar13, + 0xa0); + } + uVar2 = check_if_healthbar_timer_greater_than_0(); + if ((uVar2 == 0) || (pPlayer->pause_animation_state != 0)) { + uVar2 = proc_7F0C6048(); + if (uVar2 != 0) { + local_res0 = proc_7F088618(local_res0); + iVar6 = pPlayer->healthdisplaytime; + if (0 < iVar6) { + pPlayer->healthdisplaytime = iVar6 - clock_timer; + iVar6 = pPlayer->healthdisplaytime; + } + if (iVar6 < 0) { + pPlayer->healthdisplaytime = 0; + } + } + } + else { + local_res0 = proc_7F088618(local_res0); + } + sVar5 = get_num_players(); + if (sVar5 == 1) { + display_objective_status_text_on_status_change(); + } + if (pPlayer->bonddead != 0) { + if (pPlayer->field_428 == 0) { + if (pPlayer->bonddead == 1) { + pPlayer->bonddead = 2; + local_34 = (float)die_blood_image_routine(); + sVar5 = get_num_players(); + sVar15 = (s16)sVar5; + if (sVar5 == 1) { + reset_music_in_slot(0xffffffff); + set_missionstate(0); + proc_7F0C0BF0(); + musicTrack1Vol(sVar15); + music1_playing = 0; + musicTrack2Vol(0); + music2_playing = FALSE; + musicTrack1Play(M_DEATHSOLO); + } + else { + set_missionstate(6); + } + } + else { + if (pPlayer->field_424 == 0) { + lVar3 = die_blood_image_routine(); + if (lVar3 != 0) { + pPlayer->field_424 = 1; + } + local_34 = extraout_f0; + local_res0 = proc_7F01C670(local_res0); + } + else { + proc_7F0807B0(0x96,0,0,0x3f34b4b5); + } + } + } + proc_7F06F5BC((int)&pPlayer->field_598); + fVar18 = proc_7F06F5C4((int)&pPlayer->field_598); + if ((fVar18 <= local_34) && (pPlayer->field_424 != 0)) { + if (pPlayer->field_428 == 0) { + pPlayer->field_428 = 1; + proc_7F0807E0(extraout_a0_lo,0,0,0,0x3f800000,in_stack_ffffffbf, + in_stack_ffffffc3,unaff_retaddr,in_stack_ffffffcb, + SUB41(local_34,0),in_stack_ffffffd0); + set_curplayer_fade(120.00000000,0.00000000); + } + uVar2 = check_if_fade_to_black_complete(); + if (uVar2 != 0) { + sVar5 = get_num_players(); + if (sVar5 == 1) { + set_camera_mode(UNK5_CAM); + } + else { + iVar6 = get_scenario(); + uVar7 = get_cur_playernum(); + sVar5 = get_num_players(); + iVar17 = 0; + iVar16 = 0; + if (0 < sVar5) { + piVar8 = player1_playerdata[0].shotcount + uVar7; + do { + piVar1 = piVar8 + 9; + iVar16 += 1; + piVar8 = piVar8 + 0x1c; + iVar17 += *piVar1; + } while (iVar16 < sVar5); + } + if ((iVar6 != 1) || (iVar17 < 2)) { + uVar7 = get_cur_playernum(); + uVar7 = get_controller_buttons_held + ((char)uVar7,START_BUTTON|Z_TRIG|A_BUTTON); + if (uVar7 != 0) { + proc_7F0888E8(); + } + } + } + } + } + } + proc_7F08A4E4(); + local_res0 = proc_7F08A5FC(local_res0); + proc_7F08A9F8(); + local_res0 = (u32 *)print_player_xyz_info(); + proc_7F06A5E4((uint **)register0x000000ec); + local_res0 = (u32 *)generate_ammo_total_microcode(); + local_res0 = proc_7F056210(local_res0); + local_res0 = display_red_blue_on_radar(local_res0); + puVar4 = proc_7F0804E0(local_res0); + } + return puVar4; +} + + + +undefined8 write_stan_tiles_in_yellow(undefined8 param_1) + +{ + if (DAT_80079da0 != 0) { + param_1 = proc_7F0B3024(param_1); + } + if (DAT_80079da4 != 0) { + param_1 = proc_7F0B3024(param_1); + } + return param_1; +} + + + +void proc_7F089718(float param_1) + +{ + float *pfVar1; + Player *pPVar2; + + pPVar2 = pPlayer; + pfVar1 = (float *)&pPlayer->positionz; + *(float *)&pPlayer->positionx = (float)pPlayer->positionx * (flt_800364D0 / param_1); + *(float *)&pPVar2->positionz = *pfVar1 * (flt_800364D0 / param_1); + flt_800364D0 = param_1; + flt_800364D4 = 1.00000000 / param_1; + return; +} + + + +void proc_7F08976C(undefined4 param_1) + +{ + undefined4 in_f12; + + flt_800364CC = in_f12; + return; +} + + + +f32 proc_7F089778(int param_1) + +{ + return *(f32 *)(param_1 + 0x74); +} + + + +float proc_7F089780(int param_1) + +{ + return *(float *)(param_1 + 0x29bc) + *(float *)(param_1 + 0x88) + *(float *)(param_1 + 0xa0); +} + + + +int get_curplayer_positiondata(void) + +{ + return pPlayer->position_data_pointer; +} + + + +void kill_current_player(void) + +{ + int iVar1; + Player *pPVar2; + Player *pPVar3; + Player *pPVar4; + Player *pPVar5; + + if ((pPlayer->bondinvincible == '\0') && (pPlayer->bonddead == 0)) { + if (pPlayer->pause_animation_state != 0) { + trigger_solo_watch_menu(1); + } + mission_kia = TRUE; + pPlayer->bonddead = 1; + pPVar2 = (Player *)&pPlayer->current_room_ypos; + pPVar5 = pPlayer; + pPVar3 = pPlayer; + do { + pPVar4 = (Player *)&pPVar3->zpos; + pPVar5->field_434 = pPVar3->ptr_tile_printmanpos; + *(f32 *)&pPVar5->field_438 = pPVar3->positionx; + pPVar5->field_43C = pPVar3->positiony; + pPVar5 = (Player *)&pPVar5->zpos; + pPVar3 = pPVar4; + } while (pPVar4 != pPVar2); + *(float *)&pPlayer->field_414 = pPlayer->vv_theta; + *(float *)&pPlayer->field_418 = pPlayer->vv_verta; + if (ptr_playerstank != 0) { + dword_8003648C = 1; + } + draw_item_in_hand_has_more_ammo(HAND_LEFT,ITEM_UNARMED); + draw_item_in_hand_has_more_ammo(HAND_RIGHT,ITEM_UNARMED); + iVar1 = getMissiontime(); + if (iVar1 - pPlayer->field_29F4 < pPlayersPerm->shortestlife) { + iVar1 = getMissiontime(); + pPlayersPerm->shortestlife = iVar1 - pPlayer->field_29F4; + } + iVar1 = getMissiontime(); + pPlayer->field_29F4 = iVar1; + } + return; +} + + + +int proc_7F0898E8(void) + +{ + s32 sVar1; + + sVar1 = get_cur_controller_vert_stick_pos('\0'); + return (sVar1 * 8 + 0x280) / 0xa0; +} + + + +// WARNING: Instruction at (ram,0x7f0899cc) overlaps instruction at (ram,0x7f0899c8) +// + +void record_damage_kills(f32 arg0,f32 arg1,f32 arg2,s32 arg3,f32 arg4) + +{ + bool bVar1; + s32 sVar3; + u32 uVar4; + int iVar5; + PLAYER_ID playernum; + longlong lVar2; + PLAYER_ID in_a3_lo; + float fVar6; + float extraout_f12; + float extraout_f12_00; + int in_stack_00000010; + float fStack4; + + fStack4 = pPlayersPerm->handicap * (float)arg0; + if (pPlayer->pause_animation_state != 0) { + get_BONDdata_watch_armor(); + proc_7F0A2F30((short *)&pPlayer->healthdamagetype,0x2e,1,extraout_f12); + get_BONDdata_watch_health(); + proc_7F0A2F30((short *)&pPlayer->related_to_health_display,0x2e,-1,extraout_f12_00); + } + sVar3 = get_num_players(); + if (1 < sVar3) { + if (stop_play_flag != 0) { + return; + } + if (is_gameover_flag != 0) { + return; + } + } + if (in_tank_flag == TRUE) { + fStack4 = fStack4 * 0.25000000; + } + if ((pPlayer->bonddead == 0) && (pPlayer->bondinvincible == '\0')) { + uVar4 = get_cur_playernum(); + controller_7000C854(uVar4,0x3e800000); + sVar3 = cur_player_get_control_type(); + if (3 < sVar3) { + uVar4 = get_cur_playernum(); + sVar3 = get_num_players(); + controller_7000C854(sVar3 + uVar4,0x3e800000); + } + } + sVar3 = get_num_players(); + if ((1 < sVar3) && (iVar5 = get_scenario(), iVar5 == 4)) { + fStack4 = (float)pPlayer->bondhealth * (float)pPlayer->actual_health + + (float)pPlayer->bondarmour * (float)pPlayer->actual_armor; + } + if (pPlayer->bondinvincible != '\0') { + return; + } + if (pPlayer->bonddead != 0) { + return; + } + if (disable_player_pickups_flag != 0) { + return; + } + if (pPlayer->damageshowtime < 0) { + iVar5 = pPlayer->pause_animation_state; + } + else { + sVar3 = get_num_players(); + if (sVar3 < 2) { + return; + } + if (pPlayer->damageshowtime != 0) { + return; + } + iVar5 = pPlayer->pause_animation_state; + } + if (iVar5 == 5) { + return; + } + if (iVar5 == 0xc) { + return; + } + pPlayer->oldhealth = pPlayer->bondhealth; + pPlayer->oldarmour = pPlayer->bondarmour; + sVar3 = get_num_players(); + if (1 < sVar3) { + uVar4 = get_cur_playernum(); + fVar6 = convert_angle_using_inverse(arg1,arg4); + fVar6 = ptr_BONDdata_p1[uVar4]->vv_theta - + (360.00000000 - (fVar6 * 180.00000000) / 3.14159274); + if (fVar6 < 0.00000000) { + fVar6 = -fVar6; + } + if (90.00000000 <= fVar6) { + if (fVar6 <= 270.00000000) goto LAB_7f089c1c; + iVar5 = player1_playerdata[in_a3_lo].backshotcount; + } + else { + iVar5 = player1_playerdata[in_a3_lo].backshotcount; + } + player1_playerdata[in_a3_lo].backshotcount = iVar5 + 1; + } +LAB_7f089c1c: + if (in_stack_00000010 == 0) { +LAB_7f089c68: + if (in_stack_00000010 != 0) { + fStack4 = fStack4 - (float)pPlayer->bondarmour / (float)pPlayer->actual_armor; + pPlayer->bondarmour = 0.00000000; + pPlayer->actual_armor = 1.00000000; + } + *(float *)&pPlayer->bondhealth = + (float)pPlayer->bondhealth - fStack4 / (float)pPlayer->actual_health; + if (0.00000000 < (float)pPlayer->bondhealth) { + iVar5 = pPlayer->damageshowtime; + goto LAB_7f089ddc; + } + sVar3 = get_num_players(); + if (1 < sVar3) { + playernum = get_cur_playernum(); + bVar1 = false; + iVar5 = get_scenario(); + lVar2 = (longlong)iVar5; + if (lVar2 == 3) { + checkforgoldengun(); + bVar1 = lVar2 != 0; + } + if (playernum != in_a3_lo) { + drop_inventory(); + increment_num_deaths(); + } + set_cur_player(in_a3_lo); + if (playernum == in_a3_lo) { + increment_num_suicides_display_MP(); + } + else { + increment_num_kills_display_text_in_MP(); + if (bVar1) { + increment_num_times_killed_MwtGC(); + } + } + set_cur_player(playernum); + player1_playerdata[in_a3_lo].kills[playernum] = + player1_playerdata[in_a3_lo].kills[playernum] + 1; + } + kill_current_player(); + } + else { + if ((float)pPlayer->bondarmour * (float)pPlayer->actual_armor < fStack4) goto LAB_7f089c68; + *(float *)&pPlayer->bondarmour = + (float)pPlayer->bondarmour - fStack4 / (float)pPlayer->actual_armor; + } + iVar5 = pPlayer->damageshowtime; +LAB_7f089ddc: + if (iVar5 < 0) { + *(float *)&pPlayer->boost_factor_x = + (float)pPlayer->boost_factor_x + (float)arg1 + (float)arg1; + *(float *)&pPlayer->boost_factor_z = + (float)pPlayer->boost_factor_z + (float)arg4 + (float)arg4; + } + pPlayer->damageshowtime = 0; + pPlayer->healthshowtime = 0; + play_sfx_a1(ptr_sfx_buf,0x44,NULL); + return; +} + + + +void proc_7F089E4C(f32 param_1,float param_2,f32 param_3) + +{ + f32 arg2; + s32 arg3; + float arg1; + float arg4; + + arg1 = sinf(param_2); + arg4 = cosf(param_2); + record_damage_kills(param_1,(f32)arg1,arg2,arg3,(f32)arg4); + return; +} + + + +ulonglong check_if_bond_is_invincible(void) + +{ + return (ulonglong)(pPlayer->damageshowtime < 0) ^ 1; +} + + + +ulonglong check_if_healthbar_timer_greater_than_0(void) + +{ + return (ulonglong)(0 < pPlayer->healthshowtime); +} + + + +f32 get_BONDdata_bondfadefracnew(void) + +{ + return pPlayer->bondfadefracnew; +} + + + +float get_curplay_horizontal_rotation_in_degrees(void) + +{ + return ((360.00000000 - pPlayer->vv_theta) * 6.28318548) / 360.00000000; +} + + + +float get_curplay_vertical_rotation_in_degrees(void) + +{ + return (pPlayer->vv_verta * 6.28318548) / 360.00000000; +} + + + +int proc_7F089F38(void) + +{ + return pPlayer->field_D0; +} + + + +void set_bondata_invincible_flag(char flag) + +{ + pPlayer->bondinvincible = flag; + return; +} + + + +ulonglong get_bondata_invincible_flag(void) + +{ + return (ulonglong)(byte)pPlayer->bondinvincible; +} + + + +void set_invisible_to_guards_flag(BOOL param_1) + +{ + visible_to_guards_flag = param_1; + return; +} + + + +BOOL get_invisible_to_guards_flag(void) + +{ + return visible_to_guards_flag; +} + + + +void set_obj_collision_flag(int flag) + +{ + obj_collision_flag = flag; + return; +} + + + +BOOL get_obj_collision_flag(void) + +{ + return obj_collision_flag; +} + + + +ulonglong get_cur_players_room(void) + +{ + int iVar1; + + if (pPlayer->unknown == 1) { + if (pPlayer->room_pointer != 0) { + return (ulonglong)*(byte *)(pPlayer->room_pointer + 3); + } + iVar1 = pPlayer->room_tile_ptr; + } + else { + iVar1 = pPlayer->room_tile_ptr; + } + return (ulonglong)*(byte *)(iVar1 + 3); +} + + + +xyzpoint * get_BONDdata_position(void) + +{ + if (pPlayer->unknown == 1) { + return (xyzpoint *)&pPlayer->xpos; + } + return (xyzpoint *)&pPlayer->field_4B4; +} + + + +int * get_BONDdata_position3(void) + +{ + if (pPlayer->unknown == 1) { + return (int *)&pPlayer->xpos3; + } + return &pPlayer->field_4A4; +} + + + +int proc_7F08A02C(void) + +{ + return (int)&pPlayer->field_408; +} + + + +void proc_7F08A03C(int param_1,int param_2) + +{ + int in_v0_lo; + + proc_7F09B15C(param_1); + if (*(GUARDdata **)(param_1 + 4) != NULL) { + set_or_unset_GUARDdata_flag(*(GUARDdata **)(param_1 + 4),param_2); + } + if (ptr_playerstank != 0) { + proc_7F04F218(ptr_playerstank,(longlong)param_2); + } + ptr_BONDdata_p1[in_v0_lo]->field_AC = param_2; + return; +} + + + +// WARNING: Instruction at (ram,0x7f08a118) overlaps instruction at (ram,0x7f08a114) +// + +void proc_7F08A0B0(int param_1,int **param_2,undefined4 *param_3,float *param_4,float *param_5) + +{ + int in_v0_lo; + s32 sVar1; + Player **ppPVar2; + float fVar3; + + proc_7F09B15C(param_1); + if ((ptr_BONDdata_p1[in_v0_lo]->field_AC == 0) || + (((sVar1 = get_num_players(), sVar1 != 1 && (ptr_BONDdata_p1[in_v0_lo]->bonddead != 0)) || + (ppPVar2 = ptr_BONDdata_p1 + in_v0_lo, (*ppPVar2)->unknown == 1)))) { + *param_3 = 0; + } + else { + *param_3 = 4; + *param_2 = &(*ppPVar2)->field_B0; + *(f32 *)param_5 = (*ppPVar2)->field_70; + fVar3 = proc_7F089780((int)*ppPVar2); + *param_4 = fVar3 + *param_5 + 10.00000000; + } + return; +} + + + +void proc_7F08A19C(void) + +{ + float in_f12; + + if (in_tank_flag == TRUE) { + proc_7F07C888((float *)&pPlayer->field_B0,(float *)&pPlayer->positionx,in_f12); + } + else { + *(float *)&pPlayer->field_B0 = (float)pPlayer->positionx + (float)pPlayer->collision_radius; + pPlayer->zpos_0 = pPlayer->positionz; + *(f32 *)&pPlayer->xpos_0 = pPlayer->positionx; + *(float *)&pPlayer->field_BC = (float)pPlayer->positionz + (float)pPlayer->collision_radius; + *(float *)&pPlayer->field_C0 = (float)pPlayer->positionx - (float)pPlayer->collision_radius; + pPlayer->zpos_1 = pPlayer->positionz; + *(f32 *)&pPlayer->xpos_1 = pPlayer->positionx; + *(float *)&pPlayer->field_CC = (float)pPlayer->positionz - (float)pPlayer->collision_radius; + } + return; +} + + + +void proc_7F08A274(int param_1,undefined4 *param_2,float *param_3,undefined4 *param_4) + +{ + int in_v0_lo; + float fVar1; + + proc_7F09B15C(param_1); + *param_2 = ptr_BONDdata_p1[in_v0_lo]->collision_radius; + fVar1 = proc_7F089780((int)ptr_BONDdata_p1[in_v0_lo]); + *param_3 = (fVar1 + 10.00000000) - 30.00000000; + *param_4 = 0x41f00000; + return; +} + + + +f32 get_BONDdata_watch_health(void) + +{ + return pPlayer->bondhealth; +} + + + +f32 get_BONDdata_watch_armor(void) + +{ + return pPlayer->bondarmour; +} + + + +void add_BONDdata_watch_armor(f32 amount) + +{ + pPlayersPerm->armourcount = pPlayersPerm->armourcount + (float)amount; + pPlayer->bondarmour = amount; + return; +} + + + +void reset_intro_camera_message_dialogs_for_BONDdata(void) + +{ + pPlayer->hudmessoff = 0; + pPlayer->bondmesscnt = -1; + status_bar_text_buffer_index = 0; + display_statusbar = FALSE; + copy_1stfonttable = ptrFirstFontTableSmall; + copy_2ndfonttable = ptrSecondFontTableSmall; + return; +} + + + +void proc_7F08A380(uint param_1) + +{ + pPlayer->hudmessoff = pPlayer->hudmessoff & ~param_1; + return; +} + + + +void set_flags_in_BONDdata_stationary_intro_cam(uint param_1) + +{ + pPlayer->hudmessoff = pPlayer->hudmessoff | param_1; + return; +} + + + +void proc_7F08A3B4(undefined4 param_1,undefined4 param_2) + +{ + copy_1stfonttable = param_2; + copy_2ndfonttable = param_1; + return; +} + + + +void display_string_in_lower_left_corner(char *text,...) + +{ + int iVar1; + Player *player; + s32 numplayers; + u32 uVar2; + + numplayers = get_num_players(); + if (numplayers == 1) { + if ((int)display_statusbar < 5) { + iVar1 = ((int)(status_bar_text_buffer_index + display_statusbar) % 5) * 0x65; + something_with_strings(stringbuffer_lowerleft + iVar1,text,100); + display_statusbar += TRUE; + scorch_impact_text_array_80079a8c[iVar1] = 0; + } + } + else { + uVar2 = get_cur_playernum(); + something_with_strings(stringbuffer_lowerleft + uVar2 * 0x65,text,100); + player = pPlayer; + scorch_impact_text_array_80079a8c[uVar2 * 0x65] = 0; + player->bondmesscnt = 0x78; + } + return; +} + + + +void proc_7F08A4E4(void) + +{ + s32 sVar1; + + if ((pPlayer->hudmessoff == 0) && (pPlayer->mpmenuon == 0)) { + if (-1 < pPlayer->bondmesscnt) { + pPlayer->bondmesscnt = pPlayer->bondmesscnt - clock_timer; + sVar1 = get_num_players(); + if (sVar1 == 1) { + if (pPlayer->bondmesscnt < 0) { + status_bar_text_buffer_index = (status_bar_text_buffer_index + 1) % 5; + display_statusbar += ~FALSE; + } + else { + if ((1 < (int)display_statusbar) && (0x1e < pPlayer->bondmesscnt)) { + pPlayer->bondmesscnt = 0x1e; + } + } + } + } + sVar1 = get_num_players(); + if (((sVar1 == 1) && (pPlayer->bondmesscnt < 0)) && (0 < (int)display_statusbar)) { + if ((int)display_statusbar < 2) { + pPlayer->bondmesscnt = 0x78; + } + else { + pPlayer->bondmesscnt = 0x1e; + } + } + } + return; +} + + + +undefined4 * proc_7F08A5FC(undefined4 *param_1) + +{ + undefined4 *DL; + s32 sVar1; + short sVar5; + ITEM_IDS weapon; + AMMOTYPES AVar2; + u32 uVar3; + short sVar6; + uint *puVar4; + int iVar7; + undefined4 *local_res0; + int local_1c; + int local_18; + uint local_14; + uint local_10; + uint local_c; + uint local_8; + int local_4; + + local_res0 = param_1; + if (((pPlayer->hudmessoff == 0) && (-1 < pPlayer->bondmesscnt)) && (pPlayer->mpmenuon == 0)) { + local_4 = 0; + DL = (undefined4 *)get_num_players(); + iVar7 = local_4; + if (DL == (undefined4 *)((int)&rgba + 1U)) { + if (stringbuffer_lowerleft[(int)status_bar_text_buffer_index * 0x65] != '\0') { + iVar7 = 1; + } + } + else { + if (-1 < pPlayer->bondmesscnt) { + DL = (undefined4 *)get_cur_playernum(); + iVar7 = 1; + status_bar_text_buffer_index = DL; + } + } + if (iVar7 != 0) { + microcode_constructor(param_1); + local_1c = 0; + local_18 = 0; + proc_7F0AE98C(&local_18,&local_1c, + stringbuffer_lowerleft + (int)status_bar_text_buffer_index * 0x65, + copy_2ndfonttable,copy_1stfonttable,0); + sVar1 = get_num_players(); + if (sVar1 < 3) { + sVar5 = get_video2_settings_ulx(); + local_8 = (int)sVar5 + 0x1e; + } + else { + uVar3 = get_cur_playernum(); + if ((uVar3 & 1) == 0) { + sVar5 = get_video2_settings_ulx(); + local_8 = (int)sVar5 + 0x1e; + } + else { + sVar5 = get_video2_settings_ulx(); + local_8 = (int)sVar5 + 10; + } + } + local_10 = local_8 + local_1c; + sVar1 = get_num_players(); + if (sVar1 < 3) { + weapon = get_item_in_hand(1); + AVar2 = get_ammo_type_for_weapon(weapon); + if ((AVar2 == 0) && (uVar3 = is_clock_drawn_onscreen(), uVar3 == 0)) { + sVar5 = get_video2_settings_uly(); + sVar6 = get_video2_settings_height(); + local_14 = ((int)sVar6 + (int)sVar5) - 0xc; + } + else { + sVar5 = get_video2_settings_uly(); + sVar6 = get_video2_settings_height(); + local_14 = ((int)sVar6 + (int)sVar5) - 0x28; + } + uVar3 = get_cur_playernum(); + if (uVar3 == 1) { + local_14 -= 8; + } + } + else { + sVar5 = get_video2_settings_uly(); + local_14 = (int)sVar5 + 0x10; + } + local_c = local_14 - local_18; + puVar4 = draw_blackbox_to_screen(DL,&local_8,&local_c,&local_10,&local_14); + sVar5 = get_video2_settings_txtClipW(); + sVar6 = get_video2_settings_txtClipH(); + DL = (undefined4 *)(int)sVar6; + jp_text_stuff(puVar4,&local_8,&local_c, + stringbuffer_lowerleft + (int)status_bar_text_buffer_index * 0x65, + copy_2ndfonttable,(int)copy_1stfonttable,0xffffffff,0x646464ff,(int)sVar5, + (int)sVar6,0,0); + local_res0 = combiner_bayer_lod_perspective(DL); + } + } + return local_res0; +} + + + +void proc_7F08A900(void) + +{ + upper_text_buffer_index = 0; + display_upper_text_window = 0; + upper_text_window_timer = 0xffffffff; + DAT_800368b4 = 0; + return; +} + + + +void proc_7F08A928(uint param_1) + +{ + DAT_800368b4 = DAT_800368b4 & ~param_1; + return; +} + + + +void proc_7F08A944(uint param_1) + +{ + DAT_800368b4 = DAT_800368b4 | param_1; + return; +} + + + +void display_string_at_top_of_screen(char *text) + +{ + uint uVar1; + + if (display_upper_text_window < 2) { + uVar1 = upper_text_buffer_index + display_upper_text_window & 1; + if ((upper_text_buffer_index + display_upper_text_window < 0) && (uVar1 != 0)) { + uVar1 -= 2; + } + something_with_strings(ARRAY_80079c70 + uVar1 * 0x97,text,0x96); + display_upper_text_window += 1; + *(undefined *)(uVar1 * 0x97 + -0x7ff862fa) = 0; + } + return; +} + + + +void proc_7F08A9F8(void) + +{ + uint uVar1; + + if ((DAT_800368b4 == 0) && (pPlayer->mpmenuon == 0)) { + if (-1 < upper_text_window_timer) { + upper_text_window_timer -= clock_timer; + if (upper_text_window_timer < 0) { + uVar1 = upper_text_buffer_index + 1; + upper_text_buffer_index = uVar1 & 1; + if (((int)uVar1 < 0) && (upper_text_buffer_index != 0)) { + upper_text_buffer_index -= 2; + } + display_upper_text_window += -1; + } + else { + if ((1 < display_upper_text_window) && (0x3c < upper_text_window_timer)) { + upper_text_window_timer = 0x3c; + } + } + } + if ((upper_text_window_timer < 0) && (0 < display_upper_text_window)) { + if (1 < display_upper_text_window) { + upper_text_window_timer = 0x3c; + return; + } + upper_text_window_timer = 0xf0; + } + } + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +u32 * print_player_xyz_info(void) + +{ + uint uVar1; + uint *puVar2; + undefined4 *in_v0_lo; + short sVar6; + undefined4 *puVar3; + short sVar7; + undefined4 *DL; + BOOL BVar4; + char *pcVar5; + u32 *in_a0_lo; + float fVar8; + undefined4 in_f5; + undefined4 in_f9; + undefined4 in_f17; + undefined *local_9c; + undefined4 local_98; + undefined *local_94; + undefined4 local_90; + uint local_8c; + undefined *local_88; + undefined auStack130 [2]; + int local_80; + int local_74; + int local_6c; + int local_68; + byte abStack100 [16]; + byte abStack84 [16]; + byte abStack68 [16]; + byte abStack52 [16]; + byte abStack36 [16]; + int local_14; + int local_10; + uint local_c; + int local_8; + int local_4; + + if ((((DAT_800368b4 == 0) && (-1 < upper_text_window_timer)) && + (ARRAY_80079c70[upper_text_buffer_index * 0x97] != '\0')) && (pPlayer->mpmenuon == 0)) { + microcode_constructor(in_a0_lo); + local_14 = 0; + local_10 = 0; + proc_7F0AE98C(&local_10,&local_14,ARRAY_80079c70 + upper_text_buffer_index * 0x97, + (int)ptrSecondFontTableLarge,(int *)ptrFirstFontTableLarge,0); + if (camera_8003642C == 0) { + sVar6 = get_video2_settings_ulx(); + local_4 = (int)sVar6 + 0x1e; + sVar6 = get_video2_settings_uly(); + local_8 = (int)sVar6 + 0xd; + } + else { + sVar6 = get_video2_settings_ulx(); + local_4 = (int)sVar6 + 0x46; + sVar6 = get_video2_settings_uly(); + if (false) { + trap(0x1c00); + } + if ((false) && ((int)sVar6 + 0x20 == -0x80000000)) { + trap(0x1800); + } + local_8 = (((int)sVar6 + 0x20) / 0xb) * 0xb + -2; + } + local_c = local_8 + local_10; + sVar6 = get_video2_settings_txtClipW(); + puVar3 = microcode_constructor_related_to_menus + (in_v0_lo,0,(longlong)(local_8 + -2),(longlong)sVar6,local_c,100); + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + DL = (undefined4 *)(int)sVar7; + en_text_write_stuff(puVar3,&local_4,&local_8,ARRAY_80079c70 + upper_text_buffer_index * 0x97 + ,(int)ptrSecondFontTableLarge,(int)ptrFirstFontTableLarge,0xffffffff, + (int)sVar6,(int)sVar7,0,0); + in_a0_lo = combiner_bayer_lod_perspective(DL); + } + else { + BVar4 = get_debug_testingmanpos_flag(); + if (BVar4 != FALSE) { + fVar8 = convert_angle_using_inverse + ((f32)-(float)pPlayer->field_498,(f32)pPlayer->field_4A0); + local_80 = (int)((fVar8 * 180.00000000) / flt_800552BC); + local_9c = dword_800368B8; + local_98 = DAT_800368bc; + local_94 = PTR_DAT_800368c0; + local_90 = DAT_800368c4; + local_8c = DAT_800368c8; + local_88 = PTR_DAT_800368cc; + uVar1 = (uint)auStack130 & 3; + puVar2 = (uint *)(auStack130 + -uVar1); + *puVar2 = *puVar2 & 0xffffffffU >> (uVar1 + 1) * 8 | + (DAT_800368c8 & 0xff000000 | DAT_800368d0 >> 8) << (3 - uVar1) * 8; + pcVar5 = printroom((ulonglong)*(byte *)(pPlayer->ptr_tile_printmanpos + 3)); + sprintf((char *)abStack36,"%8s",pcVar5); + sprintf((char *)abStack52,"x %4.0f",in_f5,SUB84((double)(float)pPlayer->positionx,0)); + sprintf((char *)abStack68,"y %4.0f",in_f9,SUB84((double)(float)pPlayer->positiony,0)); + sprintf((char *)abStack84,"z %4.0f",in_f17,SUB84((double)(float)pPlayer->positionz,0)); + sprintf((char *)abStack100,"%s %3d", + (undefined **)((int)&local_9c + ((local_80 + 0x16) / 0x2d) * 3)); + sVar6 = get_video2_settings_ulx(); + local_68 = (int)sVar6 + 0x11; + sVar6 = get_video2_settings_uly(); + puVar3 = (undefined4 *)(int)sVar6; + local_6c = (int)sVar6 + 0x11; + local_74 = (int)sVar6 + 0x1b; + microcode_constructor(in_a0_lo); + sVar6 = get_video2_settings_txtClipW(); + puVar3 = microcode_constructor_related_to_menus + (puVar3,0,(longlong)local_6c,(longlong)sVar6,local_74 + 1,100); + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + DL = (undefined4 *)(int)sVar7; + en_text_write_stuff(puVar3,&local_68,&local_6c,abStack36,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xffffffff,(int)sVar6,(int)sVar7,0,0); + sVar6 = get_video2_settings_ulx(); + local_68 = (int)sVar6 + 0x57; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + puVar3 = (undefined4 *)(int)sVar7; + en_text_write_stuff(DL,&local_68,&local_6c,abStack52,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xffffffff,(int)sVar6,(int)sVar7,0,0); + sVar6 = get_video2_settings_ulx(); + local_68 = (int)sVar6 + 0x8d; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + DL = (undefined4 *)(int)sVar7; + en_text_write_stuff(puVar3,&local_68,&local_6c,abStack68,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xffffffff,(int)sVar6,(int)sVar7,0,0); + sVar6 = get_video2_settings_ulx(); + local_68 = (int)sVar6 + 0xc3; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + puVar3 = (undefined4 *)(int)sVar7; + en_text_write_stuff(DL,&local_68,&local_6c,abStack84,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xffffffff,(int)sVar6,(int)sVar7,0,0); + sVar6 = get_video2_settings_ulx(); + local_68 = (int)sVar6 + 0xf9; + sVar6 = get_video2_settings_txtClipW(); + sVar7 = get_video2_settings_txtClipH(); + DL = (undefined4 *)(int)sVar7; + en_text_write_stuff(puVar3,&local_68,&local_6c,abStack100,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xffffffff,(int)sVar6,(int)sVar7,0,0); + in_a0_lo = combiner_bayer_lod_perspective(DL); + } + } + return in_a0_lo; +} + + + +undefined4 proc_7F08B0F0(char *param_1) + +{ + float *pfVar1; + bool bVar2; + u32 in_v0_lo; + u32 uVar5; + int iVar6; + float *pfVar7; + s32 sVar8; + int iVar9; + int iVar10; + int iVar11; + u32 *puVar12; + ulonglong uVar3; + longlong lVar4; + uint extraout_a1_lo; + uint extraout_a1_lo_00; + undefined4 extraout_a2_lo; + int extraout_a2_lo_00; + int extraout_a2_lo_01; + undefined4 extraout_a2_lo_02; + undefined4 extraout_a2_lo_03; + undefined4 extraout_a3_lo; + uint extraout_a3_lo_00; + uint extraout_a3_lo_01; + uint extraout_a3_lo_02; + uint extraout_a3_lo_03; + uint extraout_a3_lo_04; + uint extraout_a3_lo_05; + uint extraout_a3_lo_06; + uint extraout_a3_lo_07; + uint extraout_a3_lo_08; + uint uVar13; + undefined4 extraout_a3_lo_09; + int iVar14; + Player *pPVar15; + Player **ppPVar16; + float fVar17; + float fVar18; + float fVar19; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + xyzpoint xStack136; + int *piStack124; + f32 fStack112; + f32 fStack108; + f32 fStack104; + float fStack100; + f32 fStack96; + int iStack92; + undefined4 uStack88; + undefined auStack84 [16]; + float fStack68; + float fStack64; + float fStack60; + float fStack36; + float fStack32; + float fStack28; + undefined4 uStack16; + GUARDdata *pGStack8; + u32 uStack4; + + proc_7F09B15C((int)param_1); + pGStack8 = *(GUARDdata **)(param_1 + 4); + uStack4 = in_v0_lo; + if (pGStack8 != NULL) { + uVar5 = get_cur_playernum(); + iVar6 = proc_7F09B4D8(uVar5); + if (iVar6 == 0) { + pGStack8->special_bitflags = pGStack8->special_bitflags & 0xf7ff; + } + } + if ((pGStack8 != NULL) && + (ppPVar16 = ptr_BONDdata_p1 + uStack4, (*ppPVar16)->ptr_char_objectinstance != 0)) { + uVar5 = get_debug_render_raster(); + if (uVar5 == 0) { + pPVar15 = *ppPVar16; +LAB_7f08b198: + pPVar15->field_AC = 0; + uVar3 = proc_7F020EF0(param_1,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + uStack16 = (undefined4)uVar3; + (*ppPVar16)->field_AC = 1; + (*ppPVar16)->positionx = *(f32 *)((*ppPVar16)->position_data_pointer + 8); + (*ppPVar16)->positiony = *(int *)((*ppPVar16)->position_data_pointer + 0xc); + (*ppPVar16)->positionz = *(int *)((*ppPVar16)->position_data_pointer + 0x10); + (*ppPVar16)->ptr_tile_printmanpos = *(int *)((*ppPVar16)->position_data_pointer + 0x14); + proc_7F07DE9C((int)*ppPVar16); + if ((param_1[1] & 2U) == 0) { + return uStack16; + } + pfVar1 = *(float **)((*ppPVar16)->ptr_char_objectinstance + 0xc); + pfVar7 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar7,pfVar1,(int)auStack84); + *(float *)&(*ppPVar16)->field_4B4 = fStack68 * 7.00000000 + fStack36; + *(float *)&(*ppPVar16)->field_4B8 = fStack64 * 7.00000000 + fStack32; + *(float *)&(*ppPVar16)->field_4BC = fStack60 * 7.00000000 + fStack28; + return uStack16; + } + if ((*ppPVar16)->unknown == 1) { + pPVar15 = *ppPVar16; + goto LAB_7f08b198; + } + } + if ((((pGStack8 == NULL) || + (ppPVar16 = ptr_BONDdata_p1 + uStack4, (*ppPVar16)->ptr_char_objectinstance == 0)) || + (sVar8 = get_num_players(), sVar8 < 2)) || (uVar5 = get_cur_playernum(), uVar5 == uStack4)) + { + param_1[1] = param_1[1] & 0xfd; + return 0; + } + iStack92 = 0; + piStack124 = NULL; + fStack104 = -1.00000000; + fStack100 = -1.00000000; + iVar9 = something_with_weaponpos_of_guarddata_hand(pGStack8,1); + iVar10 = something_with_weaponpos_of_guarddata_hand(pGStack8,0); + iVar6 = 0; + iVar14 = 0; + if (iVar9 != 0) { + iVar6 = *(int *)(iVar9 + 4); + } + if (iVar10 != 0) { + iVar14 = *(int *)(iVar10 + 4); + } + uVar5 = get_cur_playernum(); + iVar11 = proc_7F09B4D8(uVar5); + if (iVar11 == 0) { + DAT_800368d4 += 1; + } + if (DAT_800368d4 < 2) { + pPVar15 = *ppPVar16; + iVar6 = extraout_a2_lo_00; + uVar13 = extraout_a3_lo_00; + goto LAB_7f08ba78; + } + pPVar15 = *ppPVar16; + fStack108 = pPVar15->field_2A08; + fStack112 = pPVar15->field_2A0C; + if (pPVar15->bonddead == 0) { + if ((iVar9 == 0) || (iVar10 == 0)) { + if ((iVar9 == 0) && (iVar10 == 0)) { + iVar6 = 2; + } + else { + if ((iVar6 == 0) || + (iVar9 = check_special_attributes((int)*(char *)(iVar6 + 0x80),0x200), iVar9 != 0 + )) { + if ((iVar14 == 0) || + (iVar9 = check_special_attributes((int)*(char *)(iVar14 + 0x80),0x200), + iVar9 != 0)) { + if ((iVar6 == 0) || + (iVar6 = check_special_attributes((int)*(char *)(iVar6 + 0x80),0x100), + iVar6 == 0)) { + if (iVar14 == 0) { + iVar6 = 1; + } + else { + iVar6 = check_special_attributes + ((int)*(char *)(iVar14 + 0x80),0x100); + if (iVar6 == 0) { + iVar6 = 1; + } + else { + iVar6 = 0; + } + } + } + else { + iVar6 = 0; + } + } + else { + iVar6 = 2; + } + } + else { + iVar6 = 2; + } + } + } + else { + iVar6 = 3; + } + iVar14 = proc_7F079A1C(uStack4); + uVar13 = extraout_a3_lo_02; + if ((iVar14 == 1) || + (iVar14 = proc_7F079A1C(uStack4), uVar13 = extraout_a3_lo_03, iVar14 == 0)) { + fVar19 = 1.00000000; + pPVar15 = *ppPVar16; + iVar14 = 5; + } + else { + pPVar15 = *ppPVar16; + fVar19 = pPVar15->speedsideways; + if ((0.00000000 <= fVar19) || (firing_animation_groups[iVar6 * 6 + 4].pointer == NULL)) + { + if (0.00000000 < fVar19) { + if (firing_animation_groups[iVar6 * 6 + 3].pointer != NULL) { + iVar14 = 3; + if (-90.00000000 < (float)pPVar15->field_1280) { + *(float *)&pPVar15->field_1280 = + (float)pPVar15->field_1280 - 15.00000000; + pPVar15 = *ppPVar16; + iVar14 = 3; + } + goto LAB_7f08b7fc; + } + fVar19 = pPVar15->speedtheta; + } + else { + fVar19 = pPVar15->speedtheta; + } + if (fVar19 < 0.00000000) { + fVar19 = -fVar19; + fVar17 = pPVar15->speedforwards; + } + else { + fVar17 = pPVar15->speedforwards; + } + if (fVar17 < flt_800552C0) { + if (fVar17 < -fVar19) { + iVar14 = pPVar15->field_4E8; + fVar19 = fVar17; + } + else { + iVar14 = pPVar15->field_4E8; + fVar19 = -fVar19; + } + if ((iVar14 == 0) || (iVar14 = 2, flt_800552C4 < fVar17)) { + fVar19 = fVar19 + fVar19; + iVar14 = 1; + if (-1.00000000 <= fVar19) { + fVar17 = (float)pPVar15->field_1280; + goto LAB_7f08b7a8; + } + fVar19 = -1.00000000; + iVar14 = 1; + } +LAB_7f08b7a4: + fVar17 = (float)pPVar15->field_1280; + } + else { + if ((fVar17 <= flt_800552C8) && (fVar19 <= flt_800552C8)) { + fVar19 = 1.00000000; + iVar14 = 0; + goto LAB_7f08b7a4; + } + if (fVar19 < fVar17) { + iVar14 = pPVar15->field_4E8; + fVar19 = fVar17; + } + else { + iVar14 = pPVar15->field_4E8; + } + if ((iVar14 != 0) && (iVar14 = 2, flt_800552CC <= fVar17)) goto LAB_7f08b7a4; + fVar18 = fVar19 + fVar19; + iVar14 = 1; + fVar19 = 1.00000000; + if (1.00000000 < fVar18) { + fVar17 = (float)pPVar15->field_1280; + } + else { + fVar17 = (float)pPVar15->field_1280; + fVar19 = fVar18; + } + } +LAB_7f08b7a8: + if (0.00000000 < fVar17) { + *(float *)&pPVar15->field_1280 = fVar17 - 15.00000000; + pPVar15 = *ppPVar16; + fVar17 = (float)pPVar15->field_1280; + } + if (fVar17 < 0.00000000) { + *(float *)&pPVar15->field_1280 = fVar17 + 15.00000000; + pPVar15 = *ppPVar16; + } + } + else { + fVar19 = -fVar19; + iVar14 = 4; + if ((float)pPVar15->field_1280 < 90.00000000) { + *(float *)&pPVar15->field_1280 = (float)pPVar15->field_1280 + 15.00000000; + pPVar15 = *ppPVar16; + iVar14 = 4; + } + } + } +LAB_7f08b7fc: + piStack124 = (int *)firing_animation_groups[iVar14 + iVar6 * 6].pointer; + if (firing_animation_groups[iVar14 + iVar6 * 6].anim != 0) { + iStack92 = firing_animation_groups[iVar14 + iVar6 * 6].anim + ptr_animation_table; + } + fStack104 = firing_animation_groups[iVar14 + iVar6 * 6].z; + fVar17 = (float)firing_animation_groups[iVar14 + iVar6 * 6].y; + fVar19 = fVar19 * (float)firing_animation_groups[iVar14 + iVar6 * 6].x; + iVar6 = pPVar15->players_cur_animation; + } + else { + bVar2 = false; + if (0 < (int)total_player_death_anim) { + puVar12 = player_death_ani_list; + uVar5 = player_death_ani_list[0]; + while( true ) { + puVar12 = puVar12 + 1; + if (pPVar15->players_cur_animation == uVar5 + ptr_animation_table) { + bVar2 = true; + } + if (player_death_ani_list + total_player_death_anim <= puVar12) break; + uVar5 = *puVar12; + } + } + if (bVar2) { + iVar6 = pPVar15->players_cur_animation; + uVar13 = total_player_death_anim; + iStack92 = iVar6; + } + else { + uVar5 = get_random_value(); + pPVar15 = *ppPVar16; + iStack92 = player_death_ani_list[uVar5 % total_player_death_anim] + ptr_animation_table; + if (total_player_death_anim == 0) { + trap(0x1c00); + } + iVar6 = pPVar15->players_cur_animation; + uVar13 = extraout_a3_lo_01; + } + fVar19 = 0.50000000; + fStack108 = 0.00000000; + fStack112 = 0.00000000; + fVar17 = fStack100; + } + if ((piStack124 != NULL) && (iStack92 == 0)) { + iStack92 = *piStack124; + } + bVar2 = iStack92 != iVar6; + if ((0.00000000 <= fVar17) && + ((*(char *)(pPVar15->ptr_char_objectinstance + 0x26) == '\0' || + (fVar17 != *(float *)(pPVar15->ptr_char_objectinstance + 0x90))))) { + bVar2 = true; + } + if ((fVar17 < 0.00000000) && (*(char *)(pPVar15->ptr_char_objectinstance + 0x26) != '\0')) { + bVar2 = true; + } + if (bVar2) { + if (*(int *)(pPVar15->ptr_char_objectinstance + 0x54) == 0) { + fVar18 = fVar17; + if (fVar17 < 0.00000000) { + fVar18 = 0.00000000; + } + fStack100 = fVar17; + fStack96 = (f32)fVar19; + proc_7F06FCA8(pPVar15->ptr_char_objectinstance,iStack92,0,fVar19,fVar18,0.00000000); + (*ppPVar16)->players_cur_animation = iStack92; + (*ppPVar16)->field_1288 = fStack96; + fVar19 = (float)fStack96; + uVar13 = extraout_a3_lo_04; + if (0.00000000 <= fStack100) { + proc_7F06FDCC((*ppPVar16)->ptr_char_objectinstance,fStack100,0x41800000); + fVar19 = extraout_f12; + uVar13 = extraout_a3_lo_05; + } + if (0.00000000 <= (float)fStack104) { + proc_7F06FDE8((*ppPVar16)->ptr_char_objectinstance,fVar19); + pPVar15 = *ppPVar16; + fVar19 = extraout_f12_00; + uVar13 = extraout_a3_lo_06; + } + else { + pPVar15 = *ppPVar16; + } + } + else { + pPVar15 = *ppPVar16; + } + iVar6 = pPVar15->players_cur_animation; + } + else { + if (fVar19 != (float)pPVar15->field_1288) { + fStack96 = (f32)fVar19; + proc_7F06FE4C(pPVar15->ptr_char_objectinstance,fVar19,fVar19); + (*ppPVar16)->field_1288 = fStack96; + iVar6 = (*ppPVar16)->players_cur_animation; + fVar19 = (float)fStack96; + uVar13 = extraout_a3_lo_07; + } + } + if (iStack92 == iVar6) { + if (piStack124 == NULL) { + pGStack8->field_154 = 0; + pGStack8->field_150 = 0; + pGStack8->special_bitflags = pGStack8->special_bitflags | 0x400; + *(f32 *)&pGStack8->field_158 = fStack108; + } + else { + pGStack8->special_bitflags = pGStack8->special_bitflags & 0xfbff; + proc_7F02D048((int)pGStack8,(int)piStack124,0,1,fVar19); + iVar6 = extraout_a2_lo_01; + uVar13 = extraout_a3_lo_08; + } + } + pGStack8->field_E = '\n'; + *(f32 *)&pGStack8->field_15C = fStack112; + pPVar15 = *ppPVar16; +LAB_7f08ba78: + iVar9 = 0; + *(f32 *)(param_1 + 8) = pPVar15->positionx; + *(int *)(param_1 + 0xc) = (*ppPVar16)->positiony; + *(int *)(param_1 + 0x10) = (*ppPVar16)->positionz; + *(int *)(param_1 + 0x14) = (*ppPVar16)->ptr_tile_printmanpos; + getsuboffset(pGStack8->MODELdata_pointer,(undefined4 *)&xStack136,iVar6,uVar13); + xStack136.x = *(f32 *)(param_1 + 8); + xStack136.z = *(f32 *)(param_1 + 0x10); + setsuboffset(pGStack8->MODELdata_pointer,&xStack136); + setsubroty(pGStack8->MODELdata_pointer,extraout_f12_01, + (((float)(*ppPVar16)->field_1280 + (360.00000000 - (*ppPVar16)->vv_theta)) * + flt_800552D0) / 360.00000000,extraout_a2_lo_02); + pGStack8->actiontype = 0x19; + pGStack8->guard_bitflags = pGStack8->guard_bitflags | 1; + *(int **)&pGStack8->bond_position = piStack124; + proc_7F02D118((int)pGStack8,0,(int)*(char *)((int)&(*ppPVar16)->right_weapon_firing_status + 1)) + ; + proc_7F02D118((int)pGStack8,1,(int)*(char *)((int)&(*ppPVar16)->left_weapon_firing_status + 1)); + uVar3 = proc_7F020EF0(param_1,extraout_a1_lo_00,extraout_a2_lo_03,extraout_a3_lo_09); + uStack88 = (undefined4)uVar3; + iVar14 = 0; + iVar6 = 0; + do { + lVar4 = proc_7F02D630((int)pGStack8,iVar9,(float *)((int)&(*ppPVar16)->field_2A18 + iVar6)); + if (lVar4 == 0) { + pPVar15 = *ppPVar16; + if (*(int *)((int)&pPVar15->field_2A30 + iVar14) < dword_80048380 + -1) { + *(int *)((int)&pPVar15->field_2A18 + iVar6) = (&pPVar15->field_B58)[iVar9 * 0xea]; + *(int *)((int)&(*ppPVar16)->field_2A1C + iVar6) = + (&(*ppPVar16)->field_B5C)[iVar9 * 0xea]; + *(int *)((int)&(*ppPVar16)->field_2A20 + iVar6) = + (&(*ppPVar16)->field_B60)[iVar9 * 0xea]; + } + } + else { + *(int *)((int)&(*ppPVar16)->field_2A30 + iVar14) = dword_80048380; + } + iVar9 += 1; + iVar14 += 4; + iVar6 += 0xc; + } while (iVar9 != 2); + pGStack8->special_bitflags = pGStack8->special_bitflags | 0x800; + *(f32 *)(param_1 + 8) = (*ppPVar16)->positionx; + *(int *)(param_1 + 0xc) = (*ppPVar16)->positiony; + *(int *)(param_1 + 0x10) = (*ppPVar16)->positionz; + *(int *)(param_1 + 0x14) = (*ppPVar16)->ptr_tile_printmanpos; + return uStack88; +} + + + +undefined8 proc_7F08BCB8(undefined8 param_1) + +{ + return param_1; +} + + + +undefined8 proc_7F08BCC0(char *param_1,undefined8 param_2,uint param_3) + +{ + if (*(int *)(param_1 + 4) != 0) { + param_2 = proc_7F021BFC(param_1,(uint *)param_2,param_3); + } + return param_2; +} + + + +undefined4 * proc_7F08BCF4(undefined4 *param_1) + +{ + *param_1 = 0x1020040; + param_1[1] = pPlayer->field_5C; + return param_1 + 2; +} + + + +void proc_7F08BD18(uint *param_1) + +{ + float afStack64 [16]; + + proc_7F058020((float (*) [4] [4])param_1,(float (*) [4])afStack64); + proc_7F058C9C((int)afStack64,param_1); + return; +} + + + +void proc_7F08BD48(undefined4 *param_1,int param_2) + +{ + int iVar1; + float (*paafVar2) [4] [4]; + float afStack64 [16]; + + iVar1 = 0; + if (0 < param_2) { + paafVar2 = (float (*) [4] [4])param_1; + do { + proc_7F058020(paafVar2,(float (*) [4])afStack64); + proc_7F058C9C((int)(float (*) [4])afStack64,param_1 + iVar1 * 0x10); + iVar1 += 1; + paafVar2 = paafVar2 + 1; + } while (iVar1 != param_2); + } + return; +} + + + +void proc_7F08BDC4(uint *param_1) + +{ + float afStack64 [12]; + float fStack16; + float fStack12; + float fStack8; + + proc_7F058020((float (*) [4] [4])param_1,(float (*) [4])afStack64); + fStack16 = fStack16 - (float)pPlayer->previous_model_xpos; + fStack12 = fStack12 - (float)pPlayer->previous_model_ypos; + fStack8 = fStack8 - (float)pPlayer->previous_model_zpos; + proc_7F058C9C((int)afStack64,param_1); + return; +} + + + +void proc_7F08BE2C(undefined4 *param_1,int param_2) + +{ + int iVar1; + float (*paafVar2) [4] [4]; + float afStack64 [12]; + float fStack16; + float fStack12; + float fStack8; + + iVar1 = 0; + if (0 < param_2) { + paafVar2 = (float (*) [4] [4])param_1; + do { + proc_7F058020(paafVar2,(float (*) [4])afStack64); + fStack16 = fStack16 - (float)pPlayer->previous_model_xpos; + fStack12 = fStack12 - (float)pPlayer->previous_model_ypos; + fStack8 = fStack8 - (float)pPlayer->previous_model_zpos; + proc_7F058C9C((int)(float (*) [4])afStack64,param_1 + iVar1 * 0x10); + iVar1 += 1; + paafVar2 = paafVar2 + 1; + } while (iVar1 != param_2); + } + return; +} + + + +void proc_7F08BEEC(float *param_1,int param_2) + +{ + float *pfVar1; + float *pfVar2; + int iVar3; + undefined auStack64 [48]; + float fStack16; + float fStack12; + float fStack8; + + iVar3 = 0; + if (0 < param_2) { + pfVar2 = param_1; + do { + pfVar1 = (float *)get_BONDdata_field_10D4(); + proc_7F05818C(pfVar1,pfVar2,(int)auStack64); + fStack16 = fStack16 - (float)pPlayer->current_model_xpos; + fStack12 = fStack12 - (float)pPlayer->current_model_ypos; + fStack8 = fStack8 - (float)pPlayer->current_model_zpos; + proc_7F058C9C((int)auStack64,(uint *)(param_1 + iVar3 * 0x10)); + iVar3 += 1; + pfVar2 = pfVar2 + 0x10; + } while (iVar3 != param_2); + } + return; +} + + + +int getMissiontime(void) + +{ + return missiontime; +} + + + +void trigger_explosions_around_player(int delay) + +{ + dword_80036444 = 1; + DAT_8007999c = delay + global_timer; + DAT_800799a0 = 0; + return; +} + + + +void reinit_BONDdata_inventory(void) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar1 = 0; + iVar2 = 0; + if (pPlayer->equipmaxitems < 1) { + pPlayer->ptr_inventory_first_in_cycle = 0; + } + else { + iVar3 = pPlayer->p_itemcur; + while( true ) { + iVar1 += 1; + *(undefined4 *)(iVar3 + iVar2) = 0xffffffff; + iVar2 += 0x14; + if (pPlayer->equipmaxitems <= iVar1) break; + iVar3 = pPlayer->p_itemcur; + } + pPlayer->ptr_inventory_first_in_cycle = 0; + } + pPlayer->field_11F4 = 0; + pPlayer->field_11F0 = 0; + return; +} + + + +void proc_7F08C054(int *param_1) + +{ + int iVar1; + bool bVar2; + int iVar3; + int iVar4; + int *piVar5; + int iVar6; + int *piVar7; + int iVar8; + + iVar1 = *param_1; + iVar3 = -1; + iVar4 = -1; + if (iVar1 == 1) { + iVar3 = param_1[1]; + } + else { + if (iVar1 == 3) { + iVar3 = param_1[1]; + iVar4 = param_1[2]; + } + else { + if (iVar1 == 2) { + iVar3 = 2000; + } + } + } + piVar5 = (int *)param_1[3]; + if (piVar5 != (int *)pPlayer->ptr_inventory_first_in_cycle) { + do { + iVar1 = *piVar5; + iVar6 = -1; + iVar8 = -1; + if (iVar1 == 1) { + iVar6 = piVar5[1]; +LAB_7f08c104: + bVar2 = iVar6 < iVar3; + } + else { + if (iVar1 == 3) { + iVar6 = piVar5[1]; + iVar8 = piVar5[2]; + goto LAB_7f08c104; + } + if (iVar1 == 2) { + iVar6 = 1000; + goto LAB_7f08c104; + } + bVar2 = -1 < iVar3; + } + if (bVar2) { + piVar7 = (int *)piVar5[3]; + } + else { + if (iVar3 != iVar6) { + return; + } + if (iVar4 <= iVar8) { + return; + } + piVar7 = (int *)piVar5[3]; + } + if (param_1 == piVar7) { + *(int **)&pPlayer->ptr_inventory_first_in_cycle = piVar5; + piVar7 = (int *)pPlayer->ptr_inventory_first_in_cycle; +LAB_7f08c17c: + piVar5 = (int *)param_1[3]; + } + else { + *(int **)(param_1 + 3) = piVar7; + piVar5[4] = param_1[4]; + *(int **)(param_1 + 4) = piVar5; + *(int **)(piVar5 + 3) = param_1; + *(int **)(param_1[3] + 0x10) = param_1; + *(int **)(piVar5[4] + 0xc) = piVar5; + piVar7 = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (param_1 == piVar7) { + *(int **)&pPlayer->ptr_inventory_first_in_cycle = piVar5; + piVar7 = (int *)pPlayer->ptr_inventory_first_in_cycle; + goto LAB_7f08c17c; + } + piVar5 = (int *)param_1[3]; + } + } while (piVar5 != piVar7); + } + return; +} + + + +void add_additional_weapon_slot_to_player_inventory_documentation_guess(int *param_1) + +{ + int iVar1; + + iVar1 = pPlayer->ptr_inventory_first_in_cycle; + if (iVar1 == 0) { + *(int **)(param_1 + 3) = param_1; + *(int **)(param_1 + 4) = param_1; + } + else { + param_1[3] = iVar1; + param_1[4] = *(int *)(pPlayer->ptr_inventory_first_in_cycle + 0x10); + *(int **)(iVar1 + 0x10) = param_1; + *(int **)(param_1[4] + 0xc) = param_1; + } + *(int **)&pPlayer->ptr_inventory_first_in_cycle = param_1; + proc_7F08C054(param_1); + return; +} + + + +void reorder_inventory_ptrs_based_on_id_code(undefined4 *param_1) + +{ + undefined4 *puVar1; + int iVar2; + + puVar1 = (undefined4 *)param_1[3]; + iVar2 = param_1[4]; + if (param_1 == (undefined4 *)pPlayer->ptr_inventory_first_in_cycle) { + if (param_1 == puVar1) { + pPlayer->ptr_inventory_first_in_cycle = 0; + } + else { + *(undefined4 **)&pPlayer->ptr_inventory_first_in_cycle = puVar1; + } + puVar1[4] = iVar2; + } + else { + puVar1[4] = iVar2; + } + *(undefined4 **)(iVar2 + 0xc) = puVar1; + *param_1 = 0xffffffff; + return; +} + + + +int get_ptr_next_available_weapon(void) + +{ + int ptr_curitem; + int itemcount; + int ptroffset; + int *curitem; + + itemcount = 0; + if (0 < pPlayer->equipmaxitems) { + ptroffset = 0; + curitem = (int *)pPlayer->p_itemcur; + do { + ptr_curitem = *curitem; + itemcount += 1; + curitem = curitem + 5; + if (ptr_curitem == -1) { + return (int)(int *)pPlayer->p_itemcur + ptroffset; + } + ptroffset += 0x14; + } while (itemcount < pPlayer->equipmaxitems); + } + return 0; +} + + + +void set_BONDdata_allguns_flag(int param_1) + +{ + pPlayer->equipallguns = param_1; + return; +} + + + +int get_BONDdata_allguns_flag(void) + +{ + return pPlayer->equipallguns; +} + + + +int * get_ptr_inventory_item(ITEM_IDS item) + +{ + int *firstitem; + int *curitem; + int p_curitem; + + firstitem = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (firstitem != NULL) { + p_curitem = *firstitem; + curitem = firstitem; + while( true ) { + if (p_curitem == 1) { + if (item == curitem[1]) { + return curitem; + } + curitem = (int *)curitem[3]; + } + else { + curitem = (int *)curitem[3]; + } + if ((curitem == firstitem) || (curitem == NULL)) break; + p_curitem = *curitem; + } + } + return NULL; +} + + + +BOOL is_weapon_in_inv(ITEM_IDS item) + +{ + int *piVar1; + + piVar1 = get_ptr_inventory_item(item); + return (BOOL)(uint)(piVar1 != NULL); +} + + + +int * get_ptr_inventory_for_item_in_hand(int item,int hand) + +{ + int *piVar1; + int *piVar2; + int iVar3; + + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (piVar1 != NULL) { + iVar3 = *piVar1; + piVar2 = piVar1; + while( true ) { + if (iVar3 == 3) { + if (item == piVar2[1]) { + if (hand == piVar2[2]) { + return piVar2; + } + piVar2 = (int *)piVar2[3]; + } + else { + piVar2 = (int *)piVar2[3]; + } + } + else { + piVar2 = (int *)piVar2[3]; + } + if ((piVar2 == piVar1) || (piVar2 == NULL)) break; + iVar3 = *piVar2; + } + } + return NULL; +} + + + +ulonglong is_item_for_hand_in_inventory(int item,int hand) + +{ + int *piVar1; + + piVar1 = get_ptr_inventory_for_item_in_hand(item,hand); + return (ulonglong)(piVar1 != NULL); +} + + + +ulonglong check_if_item_available(ITEM_IDS weaponid) + +{ + ulonglong uVar1; + BOOL BVar2; + + if (((pPlayer->equipallguns == 0) || (weaponid == ITEM_UNARMED)) || (0x20 < (int)weaponid)) { + BVar2 = is_weapon_in_inv(weaponid); + uVar1 = SEXT48((int)BVar2); + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +ulonglong check_if_item_for_hand_available(ITEM_IDS item,int hand) + +{ + s32 sVar2; + int iVar3; + ulonglong uVar1; + + if ((((pPlayer->equipallguns != 0) && ((int)item < 0x21)) && (item == hand)) && + ((sVar2 = get_num_players(), sVar2 == 1 && + (iVar3 = check_special_attributes(item,0x100000), iVar3 != 0)))) { + return 1; + } + uVar1 = is_item_for_hand_in_inventory(item,hand); + return uVar1; +} + + + +BOOL add_item_to_inventory(ITEM_IDS item) + +{ + BOOL added; + int *ptritemslot; + + added = is_weapon_in_inv(item); + if (added == FALSE) { + ptritemslot = (int *)get_ptr_next_available_weapon(); + if (ptritemslot != NULL) { + *ptritemslot = 1; + ptritemslot[1] = item; + add_additional_weapon_slot_to_player_inventory_documentation_guess(ptritemslot); + } + if ((pPlayer->equipallguns == 0) || (0x20 < (int)item)) { + added = TRUE; + } + else { + added = FALSE; + } + } + else { + added = FALSE; + } + return added; +} + + + +undefined8 add_doubles_item_to_inventory(int right,int left) + +{ + ulonglong uVar1; + undefined8 uVar2; + int *piVar3; + + uVar1 = is_item_for_hand_in_inventory(right,left); + if (uVar1 == 0) { + piVar3 = (int *)get_ptr_next_available_weapon(); + if (piVar3 != NULL) { + *piVar3 = 3; + piVar3[1] = right; + piVar3[2] = left; + add_additional_weapon_slot_to_player_inventory_documentation_guess(piVar3); + } + uVar2 = 1; + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +int proc_7F08C570(char param_1) + +{ + int *piVar1; + int iVar2; + int *piVar3; + + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (piVar1 != NULL) { + piVar3 = (int *)piVar1[3]; + do { + if ((((*piVar3 == 2) && (*(char *)piVar3[1] == '\x04')) && + (iVar2 = *(int *)((char *)piVar3[1] + 4), *(char *)(iVar2 + 3) == '\b')) && + (param_1 == *(char *)(iVar2 + 0x80))) { + reorder_inventory_ptrs_based_on_id_code(piVar3); + return iVar2; + } + if (piVar3 == piVar1) { + return 0; + } + piVar3 = (int *)piVar3[3]; + } while (piVar1 != NULL); + } + return 0; +} + + + +void proc_7F08C61C(longlong param_1) + +{ + int *piVar1; + int iVar2; + int *piVar3; + int *piVar4; + + piVar3 = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (piVar3 != NULL) { + piVar4 = (int *)piVar3[3]; + do { + piVar1 = (int *)piVar4[3]; + if (*piVar4 == 2) { + if (((*(char *)piVar4[1] == '\x04') && + (iVar2 = *(int *)((char *)piVar4[1] + 4), *(char *)(iVar2 + 3) == '\b')) && + (param_1 == (longlong)*(char *)(iVar2 + 0x80))) { + reorder_inventory_ptrs_based_on_id_code(piVar4); + piVar3 = (int *)pPlayer->ptr_inventory_first_in_cycle; + } + } + else { + if ((*piVar4 == 1) && (param_1 == (longlong)piVar4[1])) { + reorder_inventory_ptrs_based_on_id_code(piVar4); + piVar3 = (int *)pPlayer->ptr_inventory_first_in_cycle; + } + } + } while ((piVar4 != piVar3) && (piVar4 = piVar1, piVar3 != NULL)); + } + return; +} + + + +undefined8 proc_7F08C724(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)get_ptr_next_available_weapon(); + if (piVar1 != NULL) { + *piVar1 = 2; + piVar1[1] = param_1; + add_additional_weapon_slot_to_player_inventory_documentation_guess(piVar1); + } + return 1; +} + + + +ulonglong proc_7F08C764(char *param_1) + +{ + char cVar1; + char cVar2; + int iVar3; + int iVar4; + BOOL BVar5; + ulonglong uVar6; + + uVar6 = 0; + if ((*param_1 == '\x04') && (iVar3 = *(int *)(param_1 + 4), *(char *)(iVar3 + 3) == '\b')) { + cVar1 = *(char *)(iVar3 + 0x80); + BVar5 = add_item_to_inventory((int)cVar1); + uVar6 = SEXT48((int)BVar5); + iVar4 = *(int *)(iVar3 + 0x84); + if (iVar4 == 0) { + cVar2 = *(char *)(iVar3 + 0x81); + if (-1 < cVar2) { + if (*(int *)(iVar3 + 8) << 3 < 0) { + uVar6 = add_doubles_item_to_inventory((int)cVar2,(int)cVar1); + } + else { + uVar6 = add_doubles_item_to_inventory((int)cVar1,(int)cVar2); + } + } + } + else { + if (*(int *)(iVar3 + 8) << 3 < 0) { + uVar6 = is_item_for_hand_in_inventory((int)*(char *)(iVar4 + 0x80),(int)cVar1); + } + else { + uVar6 = is_item_for_hand_in_inventory((int)cVar1,(int)*(char *)(iVar4 + 0x80)); + } + uVar6 = (ulonglong)(uVar6 == 0); + *(char *)(*(int *)(iVar3 + 0x84) + 0x81) = cVar1; + *(undefined4 *)(*(int *)(iVar3 + 0x84) + 0x84) = 0; + *(undefined4 *)(iVar3 + 0x84) = 0; + } + } + return uVar6; +} + + + +// WARNING: Instruction at (ram,0x7f08c954) overlaps instruction at (ram,0x7f08c950) +// + +void proc_7F08C86C(int *nextright,int *nextleft,s32 direction) + +{ + BOOL BVar1; + s32 sVar2; + int item; + int iVar3; + int *piVar4; + int item_00; + int iVar5; + int iVar6; + + piVar4 = (int *)pPlayer->ptr_inventory_first_in_cycle; + iVar5 = *nextright; + iVar6 = *nextleft; + if (piVar4 != NULL) { + item_00 = *piVar4; + do { + if (item_00 == 1) { + item_00 = piVar4[1]; + if ((item_00 < 0x21) && (iVar5 < item_00)) { + if (direction != 0) { + BVar1 = check_if_have_ammo_for_item(item_00); + if (BVar1 == FALSE) goto LAB_7f08c968; + item_00 = piVar4[1]; + } + iVar5 = item_00; + iVar6 = 0; + break; + } + } + else { + if (((item_00 == 3) && + ((item_00 = piVar4[1], iVar5 < item_00 || + ((iVar5 == item_00 && (iVar6 < piVar4[2])))))) && + ((direction == 0 || + ((BVar1 = check_if_have_ammo_for_item(item_00), BVar1 != FALSE || + (BVar1 = check_if_have_ammo_for_item(piVar4[2]), BVar1 != FALSE)))))) { + iVar5 = piVar4[1]; + iVar6 = piVar4[2]; + break; + } + } +LAB_7f08c968: + piVar4 = (int *)piVar4[3]; + if (piVar4 == (int *)pPlayer->ptr_inventory_first_in_cycle) { + if (direction != 0) { + item_00 = pPlayer->equipallguns; + goto LAB_7f08c99c; + } + iVar5 = -1; + iVar6 = -1; + } + if (piVar4 == NULL) break; + item_00 = *piVar4; + } while( true ); + } + item_00 = pPlayer->equipallguns; +LAB_7f08c99c: + item = iVar5; + iVar3 = iVar6; + if (item_00 == 0) goto LAB_7f08cae8; + item_00 = *nextright; + sVar2 = get_num_players(); + if (((sVar2 == 1) && (item = check_special_attributes(*nextright,0x100000), item != 0)) && + (item = *nextright, *nextleft < item)) { + if (direction != 0) { + BVar1 = check_if_have_ammo_for_item(item); + if (BVar1 == FALSE) goto LAB_7f08ca30; + item = *nextright; + } + iVar3 = item; + if ((iVar5 != item) || (item < iVar6)) goto LAB_7f08cae8; + } +LAB_7f08ca30: + if ((iVar5 != *nextright) || (item = iVar5, iVar3 = iVar6, iVar6 == *nextleft)) { + do { + item = item_00 + 1; + item_00 = item % 0x21; + iVar3 = item_00 + 1; + if (false) { + trap(0x1c00); + } + if ((false) && (item == -0x80000000)) { + trap(0x1800); + } + if (item_00 == 0) { + item_00 = iVar3 % 0x21; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + } + if ((direction == 0) || (BVar1 = check_if_have_ammo_for_item(item_00), BVar1 != FALSE)) + { + item = item_00; + iVar3 = 0; + break; + } + item = iVar5; + iVar3 = iVar6; + } while (item_00 != iVar5); + } +LAB_7f08cae8: + *nextright = item; + *nextleft = iVar3; + return; +} + + + +// WARNING: Instruction at (ram,0x7f08cc18) overlaps instruction at (ram,0x7f08cc14) +// + +void proc_7F08CB10(int *param_1,int *param_2,longlong param_3) + +{ + int *piVar1; + BOOL BVar2; + s32 sVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int item; + int iVar8; + + iVar5 = *param_1; + iVar8 = *param_2; + if (pPlayer->ptr_inventory_first_in_cycle != 0) { + piVar1 = *(int **)(pPlayer->ptr_inventory_first_in_cycle + 0x10); + do { + if (*piVar1 == 1) { + item = piVar1[1]; + if ((item < 0x21) && ((item < iVar5 || ((iVar5 == item && (0 < iVar8)))))) { + if (param_3 != 0) { + BVar2 = check_if_have_ammo_for_item(item); + if (BVar2 == FALSE) goto LAB_7f08cc2c; + item = piVar1[1]; + } + iVar5 = item; + iVar8 = 0; + break; + } + } + else { + if (((*piVar1 == 3) && + ((item = piVar1[1], item < iVar5 || ((iVar5 == item && (piVar1[2] < iVar8)))))) + && ((param_3 == 0 || + ((BVar2 = check_if_have_ammo_for_item(item), BVar2 != FALSE || + (BVar2 = check_if_have_ammo_for_item(piVar1[2]), BVar2 != FALSE)))))) + goto code_r0x7f08cc1c; + } +LAB_7f08cc2c: + if (piVar1 == (int *)pPlayer->ptr_inventory_first_in_cycle) { + if (param_3 != 0) { + item = pPlayer->equipallguns; + goto LAB_7f08cc5c; + } + iVar5 = 1000; + iVar8 = 1000; + } + piVar1 = (int *)piVar1[4]; + } while( true ); + } +LAB_7f08cc58: + item = pPlayer->equipallguns; +LAB_7f08cc5c: + if (item != 0) { + item = *param_1; + if (*param_2 == 0) { + iVar6 = item + 0x20; + item = iVar6 % 0x21; + iVar7 = item + 0x20; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar6 == -0x80000000)) { + trap(0x1800); + } + if (item == 0) { + item = iVar7 % 0x21; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar7 == -0x80000000)) { + trap(0x1800); + } + } + } + while (iVar6 = item, iVar7 = item, item != iVar5) { + if ((param_3 == 0) || (BVar2 = check_if_have_ammo_for_item(item), BVar2 != FALSE)) { + sVar3 = get_num_players(); + if (((sVar3 != 1) || (iVar5 = check_special_attributes(item,0x100000), iVar5 == 0)) + || ((item == *param_1 && (*param_2 <= item)))) { + iVar7 = 0; + } + goto LAB_7f08ce44; + } + iVar6 = item + 0x20; + item = iVar6 % 0x21; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar6 == -0x80000000)) { + trap(0x1800); + } + if (item == 0) { + item = 0x20; + if (false) { + trap(0x1c00); + } + if ((false) && (false)) { + trap(0x1800); + } + } + } + sVar3 = get_num_players(); + iVar6 = iVar5; + iVar7 = iVar8; + if ((sVar3 != 1) || + (((iVar4 = check_special_attributes(item,0x100000), iVar4 != 0 && + ((param_3 == 0 || (BVar2 = check_if_have_ammo_for_item(item), BVar2 != FALSE)))) && + (((item == *param_1 && (*param_2 <= item)) || (iVar6 = item, iVar7 = item, iVar8 < item) + ))))) { +LAB_7f08ce44: + iVar5 = iVar6; + iVar8 = iVar7; + } + } + *param_1 = iVar5; + *param_2 = iVar8; + return; +code_r0x7f08cc1c: + iVar5 = piVar1[1]; + iVar8 = piVar1[2]; + goto LAB_7f08cc58; +} + + + +undefined8 proc_7F08CE70(uint param_1) + +{ + int *piVar1; + uint uVar2; + int *piVar3; + int iVar4; + + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + uVar2 = 0; + if (piVar1 != NULL) { + iVar4 = *piVar1; + piVar3 = piVar1; + while( true ) { + if (iVar4 == 2) { + if (*(char *)piVar3[1] == '\x01') { + iVar4 = *(int *)((char *)piVar3[1] + 4); + if (*(char *)(iVar4 + 3) == '\x04') { + uVar2 |= *(uint *)(iVar4 + 0x80); + if (param_1 == (param_1 & uVar2)) { + return 1; + } + piVar3 = (int *)piVar3[3]; + } + else { + piVar3 = (int *)piVar3[3]; + } + } + else { + piVar3 = (int *)piVar3[3]; + } + } + else { + piVar3 = (int *)piVar3[3]; + } + if (piVar3 == piVar1) { + return 0; + } + if (piVar3 == NULL) break; + iVar4 = *piVar3; + } + } + return 0; +} + + + +undefined8 proc_7F08CF0C(void) + +{ + int *piVar1; + int *piVar2; + int iVar3; + + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (piVar1 != NULL) { + iVar3 = *piVar1; + piVar2 = piVar1; + while( true ) { + if (iVar3 == 2) { + if (*(char *)piVar2[1] == '\x04') { + if (*(short *)(*(int *)((char *)piVar2[1] + 4) + 4) == 0xf8) { + return 1; + } + piVar2 = (int *)piVar2[3]; + } + else { + piVar2 = (int *)piVar2[3]; + } + } + else { + piVar2 = (int *)piVar2[3]; + } + if ((piVar2 == piVar1) || (piVar2 == NULL)) break; + iVar3 = *piVar2; + } + } + return 0; +} + + + +ulonglong proc_7F08CF80(void) + +{ + ulonglong uVar1; + BOOL BVar2; + + uVar1 = 0; + if (pPlayer->bonddead == 0) { + BVar2 = is_weapon_in_inv(ITEM_TOKEN); + uVar1 = SEXT48((int)BVar2); + } + return uVar1; +} + + + +void checkforgoldengun(void) + +{ + is_weapon_in_inv(ITEM_GOLDENGUN); + return; +} + + + +undefined8 proc_7F08CFE0(int param_1) + +{ + int *piVar1; + int *piVar2; + int iVar3; + + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (piVar1 != NULL) { + iVar3 = *piVar1; + piVar2 = piVar1; + while( true ) { + if (iVar3 == 2) { + if (param_1 == piVar2[1]) { + return 1; + } + piVar2 = (int *)piVar2[3]; + } + else { + piVar2 = (int *)piVar2[3]; + } + if ((piVar2 == piVar1) || (piVar2 == NULL)) break; + iVar3 = *piVar2; + } + } + return 0; +} + + + +int proc_7F08D038(void) + +{ + int *piVar1; + int iVar2; + char *pcVar3; + int iVar4; + int *piVar5; + + iVar4 = 0; + if (pPlayer->equipallguns != 0) { + iVar4 = 0x20; + } + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + if (piVar1 == NULL) { + return iVar4; + } + iVar2 = *piVar1; + piVar5 = piVar1; + do { + if (iVar2 == 2) { + pcVar3 = (char *)piVar5[1]; + if (*pcVar3 == '\x04') { + if ((*(uint *)(*(int *)(pcVar3 + 4) + 100) & 0x400) == 0) { + piVar5 = (int *)piVar5[3]; + } + else { +LAB_7f08d0ec: + iVar4 += 1; + piVar5 = (int *)piVar5[3]; + } + } + else { + if (*pcVar3 == '\x01') { + if ((*(uint *)(*(int *)(pcVar3 + 4) + 0xc) & 0x40000) == 0) goto LAB_7f08d0ec; + piVar5 = (int *)piVar5[3]; + } + else { + piVar5 = (int *)piVar5[3]; + } + } + } + else { + if (iVar2 == 1) { + if ((pPlayer->equipallguns == 0) || (0x20 < piVar5[1])) goto LAB_7f08d0ec; + piVar5 = (int *)piVar5[3]; + } + else { + piVar5 = (int *)piVar5[3]; + } + } + if (piVar5 == piVar1) { + return iVar4; + } + if (piVar5 == NULL) { + return iVar4; + } + iVar2 = *piVar5; + } while( true ); +} + + + +int * proc_7F08D108(int param_1) + +{ + int *piVar1; + int iVar2; + char *pcVar3; + bool bVar4; + int *piVar5; + + bVar4 = param_1 < 0x20; + if (pPlayer->equipallguns == 0) { + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + } + else { + param_1 += -0x20; + if (bVar4) { + return NULL; + } + piVar1 = (int *)pPlayer->ptr_inventory_first_in_cycle; + } + if (piVar1 == NULL) { + return NULL; + } + iVar2 = *piVar1; + piVar5 = piVar1; + do { + if (iVar2 == 2) { + pcVar3 = (char *)piVar5[1]; + if (*pcVar3 == '\x04') { + if ((*(uint *)(*(int *)(pcVar3 + 4) + 100) & 0x400) == 0) { + piVar5 = (int *)piVar5[3]; + } + else { + if (param_1 == 0) { + return piVar5; + } +LAB_7f08d1fc: + param_1 += -1; + piVar5 = (int *)piVar5[3]; + } + } + else { + if (*pcVar3 == '\x01') { + if ((*(uint *)(*(int *)(pcVar3 + 4) + 0xc) & 0x40000) == 0) { + if (param_1 == 0) { + return piVar5; + } + goto LAB_7f08d1fc; + } + piVar5 = (int *)piVar5[3]; + } + else { + piVar5 = (int *)piVar5[3]; + } + } + } + else { + if (iVar2 == 1) { + if ((pPlayer->equipallguns == 0) || (0x20 < piVar5[1])) { + if (param_1 == 0) { + return piVar5; + } + goto LAB_7f08d1fc; + } + piVar5 = (int *)piVar5[3]; + } + else { + piVar5 = (int *)piVar5[3]; + } + } + if (piVar5 == piVar1) { + return NULL; + } + if (piVar5 == NULL) { + return NULL; + } + iVar2 = *piVar5; + } while( true ); +} + + + +int proc_7F08D21C(int param_1) + +{ + int iVar1; + int iVar2; + + iVar1 = pPlayer->field_11F4; + if (iVar1 != 0) { + iVar2 = *(int *)(iVar1 + 0x24); + while( true ) { + if (param_1 == iVar2) { + return iVar1; + } + iVar1 = *(int *)(iVar1 + 0x20); + if (iVar1 == 0) break; + iVar2 = *(int *)(iVar1 + 0x24); + } + } + return 0; +} + + + +int proc_7F08D25C(int param_1) + +{ + int iVar1; + int iVar2; + + iVar1 = pPlayer->field_11F4; + if (iVar1 != 0) { + iVar2 = *(int *)(iVar1 + 4); + while( true ) { + if (iVar2 == 0) { + if (param_1 == *(int *)(iVar1 + 8)) { + return iVar1; + } + iVar1 = *(int *)(iVar1 + 0x20); + } + else { + iVar1 = *(int *)(iVar1 + 0x20); + } + if (iVar1 == 0) break; + iVar2 = *(int *)(iVar1 + 4); + } + } + return 0; +} + + + +int proc_7F08D2A8(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = proc_7F08D108(param_1); + if (piVar1 == NULL) { + if (pPlayer->equipallguns == 0) { + param_1 = 0; + } + else { + if (param_1 < 0x20) { + param_1 += 1; + } + else { + param_1 = 0; + } + } + } + else { + if (*piVar1 == 2) { + iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); + if (iVar2 == 0) { + param_1 = 0; + } + else { + param_1 = *(int *)(iVar2 + 8); + } + } + else { + if (*piVar1 == 1) { + param_1 = piVar1[1]; + } + else { + param_1 = 0; + } + } + } + return param_1; +} + + + +int proc_7F08D340(int param_1) + +{ + int *piVar1; + int iVar2; + u8 *puVar3; + int item; + + piVar1 = proc_7F08D108(param_1); + item = 0; + if (piVar1 == NULL) { + if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { + item = get_ptr_short_watch_text_for_item(param_1 + 1); + return item; + } + } + else { + if (*piVar1 == 2) { + iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); + item = 0; + if (iVar2 != 0) { + if (*(int *)(iVar2 + 0x14) != 0) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0x14)); + return (int)puVar3; + } + item = *(int *)(iVar2 + 8); + } + } + else { + if (*piVar1 == 1) { + item = piVar1[1]; + iVar2 = proc_7F08D25C(item); + if ((iVar2 != 0) && (*(int *)(iVar2 + 0x14) != 0)) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0x14)); + return (int)puVar3; + } + } + } + } + item = get_ptr_short_watch_text_for_item(item); + return item; +} + + + +int proc_7F08D434(int param_1) + +{ + int *piVar1; + int iVar2; + u8 *puVar3; + int item; + + piVar1 = proc_7F08D108(param_1); + item = 0; + if (piVar1 == NULL) { + if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { + item = get_ptr_long_watch_text_for_item(param_1 + 1); + return item; + } + } + else { + if (*piVar1 == 2) { + iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); + item = 0; + if (iVar2 != 0) { + if (*(int *)(iVar2 + 0x18) != 0) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0x18)); + return (int)puVar3; + } + item = *(int *)(iVar2 + 8); + } + } + else { + if (*piVar1 == 1) { + item = piVar1[1]; + iVar2 = proc_7F08D25C(item); + if ((iVar2 != 0) && (*(int *)(iVar2 + 0x18) != 0)) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0x18)); + return (int)puVar3; + } + } + } + } + item = get_ptr_long_watch_text_for_item(item); + return item; +} + + + +int proc_7F08D528(int param_1) + +{ + int iVar1; + + iVar1 = proc_7F08D2A8(param_1); + get_45_degree_angle_0(); + return iVar1; +} + + + +int proc_7F08D550(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_horizontal_offset_on_solo_watch_menu_for_item(item); + return item; +} + + + +int proc_7F08D578(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_vertical_offset_on_solo_watch_menu_for_item(item); + return item; +} + + + +int proc_7F08D5A0(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_depth_offset_solo_watch_menu_inventory_page_for_item(item); + return item; +} + + + +int proc_7F08D5C8(int param_1) + +{ + int *piVar1; + int iVar2; + u8 *puVar3; + int item; + + piVar1 = proc_7F08D108(param_1); + item = 0; + if (piVar1 == NULL) { + if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { + item = get_ptr_first_title_line_item(param_1 + 1); + return item; + } + } + else { + if (*piVar1 == 2) { + iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); + item = 0; + if (iVar2 != 0) { + if (*(int *)(iVar2 + 0xc) != 0) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0xc)); + return (int)puVar3; + } + item = *(int *)(iVar2 + 8); + } + } + else { + if (*piVar1 == 1) { + item = piVar1[1]; + iVar2 = proc_7F08D25C(item); + if ((iVar2 != 0) && (*(int *)(iVar2 + 0xc) != 0)) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0xc)); + return (int)puVar3; + } + } + } + } + item = get_ptr_first_title_line_item(item); + return item; +} + + + +int proc_7F08D6BC(int param_1) + +{ + int *piVar1; + int iVar2; + u8 *puVar3; + int item; + + piVar1 = proc_7F08D108(param_1); + item = 0; + if (piVar1 == NULL) { + if ((pPlayer->equipallguns != 0) && (param_1 < 0x20)) { + item = get_ptr_second_title_line_item(param_1 + 1); + return item; + } + } + else { + if (*piVar1 == 2) { + iVar2 = proc_7F08D21C(*(int *)(piVar1[1] + 4)); + item = 0; + if (iVar2 != 0) { + if (*(int *)(iVar2 + 0x10) != 0) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0x10)); + return (int)puVar3; + } + item = *(int *)(iVar2 + 8); + } + } + else { + if (*piVar1 == 1) { + item = piVar1[1]; + iVar2 = proc_7F08D25C(item); + if ((iVar2 != 0) && (*(int *)(iVar2 + 0x10) != 0)) { + puVar3 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar2 + 0x10)); + return (int)puVar3; + } + } + } + } + item = get_ptr_second_title_line_item(item); + return item; +} + + + +int proc_7F08D7B0(int param_1) + +{ + int iVar1; + + iVar1 = proc_7F08D2A8(param_1); + get_45_degree_angle(); + return iVar1; +} + + + +int proc_7F08D7D8(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_vertical_position_solo_watch_menu_main_page_for_item(item); + return item; +} + + + +int proc_7F08D800(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_lateral_position_solo_watch_menu_main_page_for_item(item); + return item; +} + + + +int proc_7F08D828(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_depth_on_solo_watch_menu_page_for_item(item); + return item; +} + + + +int proc_7F08D850(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_zrotation_solo_watch_menu_for_item(item); + return item; +} + + + +int proc_7F08D878(int param_1) + +{ + int item; + + item = proc_7F08D2A8(param_1); + get_xrotation_solo_watch_menu_for_item(item); + return item; +} + + + +void proc_7F08D8A0(int param_1) + +{ + *(int *)(param_1 + 0x20) = pPlayer->field_11F4; + pPlayer->field_11F4 = param_1; + return; +} + + + +int proc_7F08D8C0(void) + +{ + return pPlayer->field_11F0; +} + + + +void proc_7F08D8D0(int param_1) + +{ + pPlayer->field_11F0 = param_1; + return; +} + + + +void proc_7F08D8E0(void) + +{ + ITEM_IDS IVar1; + int iVar2; + ITEM_IDS IVar3; + int iVar4; + + IVar1 = get_item_in_hand(0); + iVar4 = 0; + pPlayer->field_11F0 = 0; + iVar2 = proc_7F08D038(); + if (0 < iVar2) { + do { + IVar3 = proc_7F08D2A8(iVar4); + if (IVar3 == IVar1) { + pPlayer->field_11F0 = iVar4; + return; + } + iVar4 += 1; + iVar2 = proc_7F08D038(); + } while (iVar4 < iVar2); + } + return; +} + + + +int proc_7F08D95C(int param_1) + +{ + int iVar1; + u8 *puVar2; + + iVar1 = proc_7F08D21C(param_1); + if ((iVar1 == 0) || (*(int *)(iVar1 + 0x1c) == 0)) { + puVar2 = NULL; + } + else { + puVar2 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar1 + 0x1c)); + } + return (int)puVar2; +} + + + +int proc_7F08D9A4(int param_1) + +{ + int iVar1; + u8 *puVar2; + + iVar1 = proc_7F08D25C(param_1); + if ((iVar1 == 0) || (*(int *)(iVar1 + 0x1c) == 0)) { + puVar2 = NULL; + } + else { + puVar2 = get_textptr_for_textID((TEXTFILESTRINGS)*(undefined4 *)(iVar1 + 0x1c)); + } + return (int)puVar2; +} + + + +void proc_7F08D9EC(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + Player *pPVar4; + int iVar5; + int iVar6; + + iVar2 = check_special_attributes(param_1,0x20000); + if (iVar2 != 0) { + iVar3 = check_special_attributes(param_2,0x20000); + iVar2 = 0x7fffffff; + iVar6 = 0; + if (iVar3 == 0) { + param_2 = 0; + } + iVar3 = 0; + pPVar4 = pPlayer; + do { + iVar5 = pPVar4->field_1200; + if (iVar5 < 0) { + iVar5 = 10; + iVar6 = iVar3; + break; + } + if ((param_1 == pPVar4->index_time_spent_using_item) && (param_2 == pPVar4->field_11FC)) + { + pPVar4->field_1200 = iVar5 + clock_timer; + iVar5 = iVar3; + break; + } + iVar1 = iVar3; + if (iVar2 <= iVar5) { + iVar5 = iVar2; + iVar1 = iVar6; + } + iVar6 = iVar1; + iVar2 = iVar5; + iVar3 += 1; + pPVar4 = (Player *)&pPVar4->zpos; + iVar5 = iVar3; + } while (iVar3 < 10); + if (iVar5 == 10) { + (&pPlayer->field_1200)[iVar6 * 3] = clock_timer; + (&pPlayer->index_time_spent_using_item)[iVar6 * 3] = param_1; + (&pPlayer->field_11FC)[iVar6 * 3] = param_2; + } + } + return; +} + + + +void proc_7F08DB08(undefined4 *param_1,undefined4 *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + *param_1 = 0; + iVar2 = -1; + *param_2 = 0; + iVar4 = 0; + do { + iVar3 = (int)&pPlayer->unknown + iVar4; + iVar1 = *(int *)(iVar3 + 0x1200); + if (iVar1 < 0) { +LAB_7f08db64: + iVar1 = *(int *)(iVar3 + 0x120c); + } + else { + if (iVar2 < iVar1) { + *param_1 = *(undefined4 *)(iVar3 + 0x11f8); + *param_2 = *(undefined4 *)((int)&pPlayer->field_11FC + iVar4); + iVar3 = (int)&pPlayer->unknown + iVar4; + iVar2 = iVar1; + goto LAB_7f08db64; + } + iVar1 = *(int *)(iVar3 + 0x120c); + } + if ((-1 < iVar1) && (iVar2 < iVar1)) { + *param_1 = *(undefined4 *)(iVar3 + 0x1204); + *param_2 = *(undefined4 *)((int)&pPlayer->field_1208 + iVar4); + iVar2 = iVar1; + } + iVar4 += 0x18; + if (iVar4 == 0x78) { + return; + } + } while( true ); +} + + + +void proc_7F08DBB0(void) + +{ + *(bool *)&pPlayer->field_5BC = *(char *)&pPlayer->field_5BC == '\0'; + return; +} + + + +void proc_7F08DBC8(void) + +{ + u32 uVar1; + float fVar2; + + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_564 + pPlayer->field_594 * 3) = + (fVar2 * 0.00000000 - 0.50000000) * flt_800552E0; + (&pPlayer->field_56C)[pPlayer->field_594 * 3] = 1.00000000; + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_57C + pPlayer->field_594 * 3) = + (fVar2 * 0.00000000 - 0.50000000) * flt_800552E4; + (&pPlayer->field_580)[pPlayer->field_594 * 3] = 1.00000000; + if (pPlayer->field_594 == 0) { + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_568 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552F0 + ; + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_584 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552F4 + ; + } + else { + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_568 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552E8 + ; + uVar1 = get_random_value(); + fVar2 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar2 = fVar2 + 4294967296.00000000; + } + *(float *)(&pPlayer->field_584 + pPlayer->field_594 * 3) = fVar2 * 0.00000000 * flt_800552EC + ; + } + pPlayer->field_594 = 1 - pPlayer->field_594; + return; +} + + + +void proc_7F08DE48(float *param_1) + +{ + float fVar1; + float fVar2; + int iVar3; + + fVar1 = flt_800552F8; + if (pPlayer->field_4DC != 0) { + pPlayer->velocity = 0.00000000; + *(float *)&pPlayer->field_524 = param_1[1] / fVar1; + pPlayer->field_528 = 0.00000000; + pPlayer->field_4DC = 0; + } + fVar2 = flt_80055300; + fVar1 = master_player_perspective; + iVar3 = 0; + if (0 < clock_timer) { + do { + iVar3 += 1; + *(float *)&pPlayer->velocity = *param_1 + fVar2 * (float)pPlayer->velocity; + *(float *)&pPlayer->field_524 = param_1[1] + fVar2 * (float)pPlayer->field_524; + *(float *)&pPlayer->field_528 = param_1[2] + fVar2 * (float)pPlayer->field_528; + } while (iVar3 < clock_timer); + } + *(float *)&pPlayer->scaled_velocity = (float)pPlayer->velocity * fVar1; + *(float *)&pPlayer->field_500 = (float)pPlayer->field_524 * fVar1; + *(float *)&pPlayer->field_504 = (float)pPlayer->field_528 * fVar1; + return; +} + + + +void proc_7F08DF44(float *param_1,float *param_2) + +{ + int iVar1; + + if (pPlayer->field_4E0 != 0) { + *(float *)&pPlayer->field_52C = *param_1 / (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_530 = param_1[1] / (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_534 = param_1[2] / (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_538 = *param_2 / (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_53C = param_2[1] / (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_540 = param_2[2] / (1.00000000 - (float)pPlayer->field_4EC); + pPlayer->field_4E0 = 0; + } + iVar1 = 0; + if (0 < clock_timer) { + do { + iVar1 += 1; + *(float *)&pPlayer->field_52C = + *param_1 + (float)pPlayer->field_4EC * (float)pPlayer->field_52C; + *(float *)&pPlayer->field_530 = + param_1[1] + (float)pPlayer->field_4EC * (float)pPlayer->field_530; + *(float *)&pPlayer->field_534 = + param_1[2] + (float)pPlayer->field_4EC * (float)pPlayer->field_534; + *(float *)&pPlayer->field_538 = + *param_2 + (float)pPlayer->field_4EC * (float)pPlayer->field_538; + *(float *)&pPlayer->field_53C = + param_2[1] + (float)pPlayer->field_4EC * (float)pPlayer->field_53C; + *(float *)&pPlayer->field_540 = + param_2[2] + (float)pPlayer->field_4EC * (float)pPlayer->field_540; + } while (iVar1 < clock_timer); + } + *(float *)&pPlayer->field_508 = + (float)pPlayer->field_52C * (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_50C = + (float)pPlayer->field_530 * (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_510 = + (float)pPlayer->field_534 * (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_514 = + (float)pPlayer->field_538 * (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_518 = + (float)pPlayer->field_53C * (1.00000000 - (float)pPlayer->field_4EC); + *(float *)&pPlayer->field_51C = + (float)pPlayer->field_540 * (1.00000000 - (float)pPlayer->field_4EC); + return; +} + + + +void proc_7F08E164(float param_1) + +{ + float fVar1; + + if (param_1 != (float)pPlayer->field_4EC) { + fVar1 = 1.00000000 - param_1; + *(float *)&pPlayer->field_52C = + ((float)pPlayer->field_52C * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; + *(float *)&pPlayer->field_530 = + ((float)pPlayer->field_530 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; + *(float *)&pPlayer->field_534 = + ((float)pPlayer->field_534 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; + *(float *)&pPlayer->field_538 = + ((float)pPlayer->field_538 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; + *(float *)&pPlayer->field_53C = + ((float)pPlayer->field_53C * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; + *(float *)&pPlayer->field_540 = + ((float)pPlayer->field_540 * (1.00000000 - (float)pPlayer->field_4EC)) / fVar1; + *(float *)&pPlayer->field_4EC = param_1; + } + return; +} + + + +// WARNING: Globals starting with '_' overlap smaller symbols at the same address + +void proc_7F08E240(float param_1,float param_2) + +{ + undefined4 uVar1; + int iVar2; + uint extraout_a1_lo; + undefined4 extraout_a2_lo; + undefined4 extraout_a2_lo_00; + undefined4 extraout_a2_lo_01; + undefined4 extraout_a3_lo; + undefined4 extraout_a3_lo_00; + undefined4 extraout_a3_lo_01; + float **ppfVar3; + float **ppfVar4; + float **ppfVar5; + float **ppfVar6; + f32 fVar7; + float *pfVar8; + float extraout_f12; + float extraout_f12_00; + float fVar9; + float extraout_f12_01; + xyzpoint xStack180; + float afStack168 [16]; + float *apfStack104 [4]; + int *piStack88; + float fStack40; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + f32 fStack8; + float fStack4; + + fStack12 = dword_80036B00; + fStack8 = (f32)dword_80036B04; + fStack4 = (float)dword_80036B08; + fStack24 = dword_80036B0C; + fStack20 = dword_80036B10; + fStack16 = flt_80036B14; + fStack36 = dword_80036B18; + fStack32 = flt_80036B1C; + fStack28 = dword_80036B20; + fStack40 = proc_7F06F618((int)&pPlayer->field_598); + ppfVar3 = (float **)&dword_80036B24; + ppfVar5 = apfStack104; + if (pPlayer->field_4E8 == 0) { + if (flt_80055304 < fStack40) { + pPlayer->field_4F4 = 1.00000000; + } + else { + if (flt_80055308 < fStack40) { + *(float *)&pPlayer->field_4F4 = + ((fStack40 - flt_80055308) * flt_8005530C) / flt_80055310 + flt_80055314; + } + else { + *(float *)&pPlayer->field_4F4 = flt_80055318; + } + } + pPlayer->field_4F8 = pPlayer->field_4F4; + ppfVar3 = (float **)&dword_80036B24; + } + else { + if (pPlayer->field_4E8 == 1) { + *(float *)&pPlayer->field_4F4 = flt_8005531C; + pPlayer->field_4F8 = 0.50000000; + } + else { + pPlayer->field_4F4 = 1.00000000; + pPlayer->field_4F8 = pPlayer->field_4F4; + } + } + do { + ppfVar4 = ppfVar3 + 3; + ppfVar6 = ppfVar5 + 3; + *ppfVar5 = *ppfVar3; + ppfVar5[1] = ppfVar3[1]; + ppfVar5[2] = ppfVar3[2]; + ppfVar3 = ppfVar4; + ppfVar5 = ppfVar6; + } while (ppfVar4 != (float **)&dword_80036B60); + *ppfVar6 = _dword_80036B60; + xStack180.x = dword_80036B64; + xStack180.y = dword_80036B68; + xStack180.z = dword_80036B6C; + uVar1 = proc_7F0701E0(); + pPlayer->field_4E4 = 0; + proc_7F0701D4(0); + proc_7F070AEC((int)&pPlayer->field_598,clock_timer,1); + proc_7F0701D4(uVar1); + subcalcpos((int)&pPlayer->field_598,extraout_a1_lo,extraout_a2_lo,extraout_a3_lo); + guMtxIdentF_unrolled((float (*) [4] [4])afStack168); + apfStack104[0] = afStack168; + piStack88 = &pPlayer->field_6D0; + subcalcmatrices(apfStack104,(uint)&pPlayer->field_598,extraout_a2_lo_00,extraout_a3_lo_00); + pPlayer->field_544 = pPlayer->field_554; + pPlayer->field_548 = pPlayer->field_558; + pPlayer->field_54C = pPlayer->field_55C; + getsuboffset((int)&pPlayer->field_598,(undefined4 *)&xStack180,extraout_a2_lo_01, + extraout_a3_lo_01); + xStack180.x = xStack180.x - (float)pPlayer->field_700; + xStack180.z = xStack180.z - (float)pPlayer->field_708; + setsuboffset((int)&pPlayer->field_598,&xStack180); + if (0.00000000 < fStack40) { + *(float *)&pPlayer->field_700 = (float)pPlayer->field_700 + param_2; + *(float *)&pPlayer->field_708 = (float)pPlayer->field_708 * param_1; + if (0 < clock_timer) { + *(float *)&pPlayer->field_700 = (float)pPlayer->field_700 / global_timer_delta; + *(float *)&pPlayer->field_708 = (float)pPlayer->field_708 / global_timer_delta; + } + fStack12 = (float)pPlayer->field_700 * (float)pPlayer->field_4F4; + fStack8 = (f32)(((float)pPlayer->field_704 - (float)pPlayer->stationary_ground_offset) * + (float)pPlayer->field_4F4 + (float)pPlayer->stationary_ground_offset); + fStack4 = (float)pPlayer->field_708 * (float)pPlayer->field_4F4; + if (pPlayer->field_4E8 < 0) { + fStack24 = (float)pPlayer->field_6F0; + fStack20 = (float)pPlayer->field_6F4; + fStack16 = (float)pPlayer->field_6F8; + fStack36 = (float)pPlayer->field_6E0; + fStack32 = (float)pPlayer->field_6E4; + fStack28 = (float)pPlayer->field_6E8; + proc_7F08E164(flt_80055328); + } + else { + fStack24 = (float)pPlayer->field_6F0 * (float)pPlayer->field_4F8; + fStack20 = (float)pPlayer->field_6F4 * (float)pPlayer->field_4F4; + fStack16 = ((float)pPlayer->field_6F8 - 1.00000000) * (float)pPlayer->field_4F4 + + 1.00000000; + fStack36 = (float)pPlayer->field_6E0 * (float)pPlayer->field_4F4; + fStack32 = ((float)pPlayer->field_6E4 - 1.00000000) * (float)pPlayer->field_4F4 + + 1.00000000; + fStack28 = (float)pPlayer->field_6E8 * (float)pPlayer->field_4F4; + pPlayer->field_4F0 = pPlayer->field_4F0 + clock_timer; + if (pPlayer->field_4F0 < 0x3d) { + proc_7F08E164(flt_80055324); + } + else { + proc_7F08E164(flt_80055320); + } + } + } + else { + pPlayer->field_544 = pPlayer->field_554; + pPlayer->field_548 = pPlayer->field_558; + pPlayer->field_54C = pPlayer->field_55C; + fStack12 = 0.00000000; + fStack8 = pPlayer->stationary_ground_offset; + fStack4 = 0.00000000; + pPlayer->field_4F0 = 0; + proc_7F08E164(flt_8005532C); + fVar7 = get_BONDdata_bondfadefracnew(); + *(float *)&pPlayer->field_560 = + (float)pPlayer->field_560 + + (flt_80055330 + flt_80055334 * (float)fVar7) * global_timer_delta; + pfVar8 = (float *)pPlayer->field_560; + if (1.00000000 <= (float)pfVar8) { + proc_7F08DBC8(); + *(float *)&pPlayer->field_560 = (float)pPlayer->field_560 - 1.00000000; + pfVar8 = (float *)pPlayer->field_560; + iVar2 = pPlayer->field_594; + fVar9 = extraout_f12_00; + } + else { + iVar2 = pPlayer->field_594; + fVar9 = extraout_f12; + } + proc_7F05AE00((float *)(&pPlayer->field_564 + iVar2 * 3), + (float *)((int)pPlayer + iVar2 * -0xc + 0x570),fVar9,pfVar8); + fVar7 = get_BONDdata_bondfadefracnew(); + fStack24 = fStack24 * ((float)fVar7 * 5.00000000 + 1.00000000); + fVar7 = get_BONDdata_bondfadefracnew(); + fStack20 = fStack20 * ((float)fVar7 * 5.00000000 + 1.00000000); + proc_7F05AE00((float *)(&pPlayer->field_57C + pPlayer->field_594 * 3), + (float *)((int)pPlayer + pPlayer->field_594 * -0xc + 0x588),extraout_f12_01, + (float *)pPlayer->field_560); + fVar7 = get_BONDdata_bondfadefracnew(); + fStack36 = fStack36 * ((float)fVar7 * 5.00000000 + 1.00000000); + fVar7 = get_BONDdata_bondfadefracnew(); + fStack28 = fStack28 * ((float)fVar7 * 5.00000000 + 1.00000000); + } + proc_7F08DE48(&fStack12); + proc_7F08DF44(&fStack24,&fStack36); + return; +} + + + +void proc_7F08E8BC(float param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + float extraout_f12; + float fVar4; + + param_1 = param_1 * DAT_80036af4; + piVar3 = &dword_80036AD0; + iVar2 = 0; + do { + fVar4 = (float)piVar3[3]; + if (param_1 <= fVar4 * (float)piVar3[5]) { + iVar1 = pPlayer->field_4E8; + if (iVar2 != iVar1) { + fVar4 = 0.00000000; + if (-1 < iVar1) { + fVar4 = ((float)piVar3[2] - (float)piVar3[1]) * + (((float)pPlayer->field_5C0 - (&FLOAT_80036ad4)[iVar1 * 6]) / + ((&FLOAT_80036ad8)[iVar1 * 6] - (&FLOAT_80036ad4)[iVar1 * 6])) + + (float)piVar3[1]; + } + proc_7F06FCA8((int)&pPlayer->field_598,*piVar3 + ptr_animation_table, + *(undefined *)&pPlayer->field_5BC,param_1,fVar4,fVar4); + proc_7F06FDCC((int)&pPlayer->field_598,piVar3[1],0); + proc_7F06FDE8((int)&pPlayer->field_598,extraout_f12); + proc_7F06FE3C((int)&pPlayer->field_598,proc_7F08DBB0); + pPlayer->field_4E8 = iVar2; + fVar4 = (float)piVar3[3]; + } + proc_7F06FE4C((int)&pPlayer->field_598,(param_1 / fVar4) * 0.50000000,param_1 / fVar4); + return; + } + iVar2 += 1; + piVar3 = piVar3 + 6; + } while (iVar2 != 2); + return; +} + + + +void proc_7F08EA48(undefined4 param_1,undefined param_2,float param_3,float param_4) + +{ + float in_a2_lo; + float in_a3_lo; + + proc_7F06FCA8((int)&pPlayer->field_598,param_1,param_2,in_a2_lo,in_a2_lo,in_a3_lo); + pPlayer->field_4E8 = -1; + return; +} + + + +void proc_7F08EAB8(float param_1) + +{ + proc_7F06FE4C((int)&pPlayer->field_598,param_1 * 0.50000000,param_1); + return; +} + + + +// WARNING: Unknown calling convention yet parameter storage is locked + +float proc_7F08EAF8(void) + +{ + f32 fVar1; + float fVar2; + float fVar3; + + if (pPlayer->field_4E8 < 0) { + fVar3 = 0.00000000; + } + else { + fVar1 = get_BONDdata_bondfadefracnew(); + fVar3 = (float)fVar1 * flt_80055338 + flt_8005533C; + fVar2 = proc_7F06F618((int)&pPlayer->field_598); + if ((0.00000000 < fVar2) && + (fVar2 = fVar2 / ((&FLOAT_80036ad8)[pPlayer->field_4E8 * 6] - + (&FLOAT_80036ad4)[pPlayer->field_4E8 * 6]), fVar3 <= fVar2)) { + fVar3 = fVar2; + } + } + return fVar3; +} + + + +int * proc_7F08EBD0(float *param_1) + +{ + int *piVar1; + int *piVar2; + int iVar3; + float fVar4; + float fVar5; + float fVar6; + + piVar1 = NULL; + if ((ptr_setup_path_tbl != NULL) && (fVar4 = -1.00000000, -1 < *(int *)ptr_setup_path_tbl)) { + iVar3 = *(int *)ptr_setup_path_tbl; + piVar2 = (int *)ptr_setup_path_tbl; + do { + fVar5 = param_1[2] - *(float *)(ptr_0xxxpresets + iVar3 * 0x2c + 2); + fVar6 = *param_1 - *(float *)(ptr_0xxxpresets + iVar3 * 0x2c); + fVar5 = fVar5 * fVar5 + fVar6 * fVar6; + if ((fVar4 < 0.00000000) || (fVar5 < fVar4)) { + iVar3 = piVar2[4]; + fVar4 = fVar5; + piVar1 = piVar2; + } + else { + iVar3 = piVar2[4]; + } + piVar2 = piVar2 + 4; + } while (-1 < iVar3); + } + return piVar1; +} + + + +int * proc_7F08EC8C(float *param_1,undefined8 param_2,int *param_3) + +{ + int iVar1; + int *piVar2; + int *piVar3; + float fVar4; + float fVar5; + float fVar6; + + piVar2 = (int *)param_3[1]; + if (piVar2 != NULL) { + iVar1 = *piVar2; + fVar4 = param_1[2] - *(float *)(ptr_0xxxpresets + *param_3 * 0x2c + 2); + fVar5 = *param_1 - *(float *)(ptr_0xxxpresets + *param_3 * 0x2c); + fVar4 = fVar4 * fVar4 + fVar5 * fVar5; + while (-1 < iVar1) { + piVar3 = (int *)(ptr_setup_path_tbl + iVar1 * 0x10); + fVar5 = param_1[2] - *(float *)(ptr_0xxxpresets + *piVar3 * 0x2c + 2); + fVar6 = *param_1 - *(float *)(ptr_0xxxpresets + *piVar3 * 0x2c); + fVar5 = fVar5 * fVar5 + fVar6 * fVar6; + if (fVar4 <= fVar5) { + fVar5 = fVar4; + piVar3 = param_3; + } + iVar1 = piVar2[1]; + piVar2 = piVar2 + 1; + fVar4 = fVar5; + param_3 = piVar3; + } + } + return param_3; +} + + + +int proc_7F08ED60(int *param_1,int param_2) + +{ + int iVar1; + + iVar1 = *param_1; + while( true ) { + if (iVar1 < 0) { + return 0; + } + if (param_2 == *(int *)(ptr_setup_path_link + iVar1 * 0xc + 8)) break; + iVar1 = param_1[1]; + param_1 = param_1 + 1; + } + return (int)(ptr_setup_path_link + iVar1 * 0xc); +} + + + +void proc_7F08EDB4(int *param_1,undefined4 param_2) + +{ + undefined *puVar1; + int iVar2; + + puVar1 = ptr_setup_path_link; + iVar2 = *param_1; + while (-1 < iVar2) { + if (*(int *)(puVar1 + iVar2 * 0xc + 8) < 0) { + *(undefined4 *)(puVar1 + iVar2 * 0xc + 8) = param_2; + iVar2 = param_1[1]; + } + else { + iVar2 = param_1[1]; + } + param_1 = param_1 + 1; + } + return; +} + + + +undefined8 proc_7F08EE00(int **param_1,int *param_2) + +{ + int *piVar1; + int *piVar2; + undefined8 uVar3; + + piVar1 = *param_1; + uVar3 = 0; + if (piVar1 != NULL) { + piVar2 = param_1[2]; + while( true ) { + if (param_2 == piVar2) { + uVar3 = 1; + proc_7F08EDB4(piVar1,(int)param_2 + 1); + piVar1 = param_1[3]; + } + else { + piVar1 = param_1[3]; + } + if (piVar1 == NULL) break; + piVar2 = param_1[5]; + param_1 = param_1 + 3; + } + } + return uVar3; +} + + + +// WARNING: Instruction at (ram,0x7f08eed0) overlaps instruction at (ram,0x7f08eecc) +// + +longlong proc_7F08EE70(int param_1,int param_2,int **param_3,longlong param_4) + +{ + int **ppiVar1; + longlong lVar2; + int *piVar3; + + lVar2 = 1; + if (*param_3 != NULL) { + piVar3 = param_3[3]; + ppiVar1 = param_3; + while( true ) { + ppiVar1[2] = (int *)0xffffffff; + if (piVar3 == NULL) break; + piVar3 = ppiVar1[6]; + ppiVar1 = ppiVar1 + 3; + } + } + *(undefined4 *)(param_1 + 8) = 0; + piVar3 = NULL; + if ((param_4 != 0) || (*(int *)(param_2 + 8) < 0)) { + do { + lVar2 = proc_7F08EE00(param_3,piVar3); + piVar3 = (int *)((int)piVar3 + 1); + if ((param_4 == 0) && (-1 < *(int *)(param_2 + 8))) { + return lVar2; + } + } while (lVar2 != 0); + } + return lVar2; +} + + + +undefined4 proc_7F08EF1C(int param_1,int **param_2,int **param_3) + +{ + longlong lVar1; + int iVar2; + int *piVar3; + + lVar1 = proc_7F08EE70(param_1,(int)param_2,param_3,0); + if (lVar1 != 0) { + iVar2 = (int)param_2[2] + -1; + if (iVar2 < 0) { + piVar3 = param_2[2]; + } + else { + do { + param_2[2] = param_2[2] + 0x9c4; + param_2 = (int **)proc_7F08ED60(*param_2,iVar2); + iVar2 += -1; + } while (-1 < iVar2); + piVar3 = param_2[2]; + } + param_2[2] = piVar3 + 0x9c4; + } + return (int)lVar1; +} + + + +int proc_7F08EFA0(int **param_1,int **param_2,int **param_3,longlong param_4) + +{ + int iVar1; + int **ppiVar2; + int *piVar3; + int **ppiVar4; + int iVar5; + + ppiVar4 = param_3; + if (1 < param_4) { + if (ptr_setup_path_link == NULL) { + *param_3 = NULL; + goto LAB_7f08f05c; + } + iVar1 = proc_7F08EF1C((int)param_1,param_2,(int **)ptr_setup_path_link); + if (iVar1 != 0) { + iVar5 = (int)param_4 + 9999; + *(int ***)param_3 = param_1; + iVar1 = 0x2711; + ppiVar4 = param_3 + 1; + if (10000 < (int)param_2[2]) { + if (iVar5 < 0x2712) { + *ppiVar4 = NULL; + goto LAB_7f08f05c; + } + piVar3 = *param_1; + while( true ) { + ppiVar2 = (int **)proc_7F08ED60(piVar3,iVar1); + *(int ***)ppiVar4 = ppiVar2; + iVar1 += 1; + ppiVar4 = ppiVar4 + 1; + if (((int)param_2[2] < iVar1) || (iVar5 <= iVar1)) break; + piVar3 = *ppiVar2; + } + } + } + } + *ppiVar4 = NULL; +LAB_7f08f05c: + return (int)ppiVar4 + (4 - (int)param_3) >> 2; +} + + + +int proc_7F08F090(int *param_1,int param_2,int param_3) + +{ + int iVar1; + undefined *puVar2; + + iVar1 = *param_1; + do { + if (iVar1 < 0) { + return 0; + } + puVar2 = ptr_setup_path_tbl + iVar1 * 0x10; + if (param_3 == *(int *)(puVar2 + 8)) { + if (param_2 == *(int *)(puVar2 + 0xc)) { + return (int)puVar2; + } + iVar1 = param_1[1]; + } + else { + iVar1 = param_1[1]; + } + param_1 = param_1 + 1; + } while( true ); +} + + + +void proc_7F08F0E8(int *param_1,undefined4 param_2,int param_3) + +{ + undefined *puVar1; + int iVar2; + undefined *puVar3; + + puVar1 = ptr_setup_path_tbl; + iVar2 = *param_1; + while (-1 < iVar2) { + puVar3 = puVar1 + iVar2 * 0x10; + if (param_3 == *(int *)(puVar3 + 8)) { + if (*(int *)(puVar3 + 0xc) < 0) { + *(undefined4 *)(puVar3 + 0xc) = param_2; + iVar2 = param_1[1]; + } + else { + iVar2 = param_1[1]; + } + } + else { + iVar2 = param_1[1]; + } + param_1 = param_1 + 1; + } + return; +} + + + +undefined8 proc_7F08F138(int *param_1,int param_2,int param_3) + +{ + int *piVar1; + undefined *puVar2; + int iVar3; + undefined8 uVar4; + + puVar2 = ptr_setup_path_tbl; + iVar3 = *param_1; + uVar4 = 0; + while (-1 < iVar3) { + if (param_2 == *(int *)(puVar2 + iVar3 * 0x10 + 0xc)) { + piVar1 = *(int **)(puVar2 + iVar3 * 0x10 + 4); + if (piVar1 == NULL) { + iVar3 = param_1[1]; + } + else { + uVar4 = 1; + proc_7F08F0E8(piVar1,param_2 + 1,param_3); + iVar3 = param_1[1]; + } + } + else { + iVar3 = param_1[1]; + } + param_1 = param_1 + 1; + } + return uVar4; +} + + + +void proc_7F08F1D8(int param_1,int param_2,longlong param_3) + +{ + undefined *puVar1; + undefined *puVar2; + longlong lVar3; + int *piVar4; + int iVar5; + int iVar6; + + puVar2 = ptr_setup_path_link; + puVar1 = ptr_setup_path_tbl; + iVar6 = 0; + piVar4 = *(int **)(ptr_setup_path_link + *(int *)(param_1 + 8) * 0xc + 4); + iVar5 = *piVar4; + while (-1 < iVar5) { + *(undefined4 *)(puVar1 + iVar5 * 0x10 + 0xc) = 0xffffffff; + iVar5 = piVar4[1]; + piVar4 = piVar4 + 1; + } + *(undefined4 *)(param_1 + 0xc) = 0; + if ((param_3 != 0) || (*(int *)(param_2 + 0xc) < 0)) { + iVar5 = *(int *)(param_1 + 8); + while( true ) { + lVar3 = proc_7F08F138(*(int **)(puVar2 + iVar5 * 0xc + 4),iVar6,iVar5); + iVar6 += 1; + if (((param_3 == 0) && (-1 < *(int *)(param_2 + 0xc))) || (lVar3 == 0)) break; + iVar5 = *(int *)(param_1 + 8); + } + } + return; +} + + + +void proc_7F08F2CC(int param_1,int param_2) + +{ + int iVar1; + + proc_7F08F1D8(param_1,param_2,0); + iVar1 = *(int *)(param_2 + 0xc) + -1; + if (iVar1 < 0) { + iVar1 = *(int *)(param_2 + 0xc); + } + else { + do { + *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 10000; + param_2 = proc_7F08F090(*(int **)(param_2 + 4),iVar1,*(int *)(param_1 + 8)); + iVar1 += -1; + } while (-1 < iVar1); + iVar1 = *(int *)(param_2 + 0xc); + } + *(int *)(param_2 + 0xc) = iVar1 + 10000; + return; +} + + + +int proc_7F08F350(int param_1,int param_2,int *param_3,longlong param_4) + +{ + int iVar1; + int *piVar2; + int iVar3; + int *piVar4; + int iVar5; + + piVar4 = param_3; + if (1 < param_4) { + proc_7F08F2CC(param_1,param_2); + iVar5 = (int)param_4 + 9999; + *param_3 = param_1; + iVar3 = 0x2711; + piVar4 = param_3 + 1; + if (10000 < *(int *)(param_2 + 0xc)) { + if (iVar5 < 0x2712) { + *piVar4 = 0; + goto LAB_7f08f400; + } + piVar2 = *(int **)(param_1 + 4); + while( true ) { + iVar1 = proc_7F08F090(piVar2,iVar3,*(int *)(param_1 + 8)); + *piVar4 = iVar1; + iVar3 += 1; + piVar4 = piVar4 + 1; + if ((*(int *)(param_2 + 0xc) < iVar3) || (iVar5 <= iVar3)) break; + piVar2 = *(int **)(iVar1 + 4); + } + } + } + *piVar4 = 0; +LAB_7f08f400: + return (int)piVar4 + (4 - (int)param_3) >> 2; +} + + + +void proc_7F08F438(int param_1,int param_2,int *param_3,int *param_4) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined *puVar4; + int *piVar5; + + piVar5 = *(int **)(param_1 + 4); + iVar1 = *piVar5; + do { + if (iVar1 < 0) { + *param_4 = 0; + *param_3 = 0; + return; + } + piVar3 = *(int **)(ptr_setup_path_tbl + iVar1 * 0x10 + 4); + iVar2 = *piVar3; + while (-1 < iVar2) { + puVar4 = ptr_setup_path_tbl + iVar2 * 0x10; + if ((undefined *)param_2 == ptr_setup_path_link + *(int *)(puVar4 + 8) * 0xc) { + *(undefined **)param_3 = ptr_setup_path_tbl + iVar1 * 0x10; + *(undefined **)param_4 = puVar4; + return; + } + iVar2 = piVar3[1]; + piVar3 = piVar3 + 1; + } + iVar1 = piVar5[1]; + piVar5 = piVar5 + 1; + } while( true ); +} + + + +int proc_7F08F4F0(int param_1,int param_2,int *param_3,longlong param_4) + +{ + int iVar1; + int **ppiVar2; + int iVar3; + int *piVar4; + int **ppiVar5; + int *piVar6; + int **ppiVar7; + int iStack44; + int aiStack40 [10]; + + piVar6 = param_3; + if (ptr_setup_path_link != NULL) { + ppiVar5 = (int **)(ptr_setup_path_link + *(int *)(param_1 + 8) * 0xc); + ppiVar7 = (int **)(ptr_setup_path_link + *(int *)(param_2 + 8) * 0xc); + iVar1 = proc_7F08EF1C((int)ppiVar5,ppiVar7,(int **)ptr_setup_path_link); + if (iVar1 == 0) { + *param_3 = 0; + goto LAB_7f08f638; + } + iVar1 = (int)ppiVar5[2] + 1; + if ((iVar1 <= (int)ppiVar7[2]) && (1 < param_4)) { + piVar4 = *ppiVar5; + while( true ) { + ppiVar2 = (int **)proc_7F08ED60(piVar4,iVar1); + proc_7F08F438((int)ppiVar5,(int)ppiVar2,aiStack40,&iStack44); + iVar3 = proc_7F08F350(param_1,aiStack40[0],piVar6,param_4); + iVar1 += 1; + param_4 = (longlong)(((int)param_4 - iVar3) + 1); + piVar6 = piVar6 + iVar3 + -1; + param_1 = iStack44; + if (((int)ppiVar7[2] < iVar1) || (param_4 < 2)) break; + piVar4 = *ppiVar2; + ppiVar5 = ppiVar2; + } + } + iVar1 = proc_7F08F350(param_1,param_2,piVar6,param_4); + piVar6 = piVar6 + iVar1 + -1; + } + *piVar6 = 0; +LAB_7f08f638: + return (int)piVar6 + (4 - (int)param_3) >> 2; +} + + + +void proc_7F08F67C(void) + +{ + undefined *puVar1; + int iVar2; + + if (-1 < *(int *)ptr_setup_path_tbl) { + iVar2 = *(int *)(ptr_setup_path_tbl + 0x10); + puVar1 = ptr_setup_path_tbl; + while( true ) { + *(undefined4 *)(puVar1 + 0xc) = 0xffffffff; + if (iVar2 < 0) break; + iVar2 = *(int *)(puVar1 + 0x20); + puVar1 = puVar1 + 0x10; + } + } + return; +} + + + +// WARNING: Instruction at (ram,0x7f08f860) overlaps instruction at (ram,0x7f08f85c) +// + +int proc_7F08F6B0(int *param_1,int param_2) + +{ + uint uVar1; + int *piVar2; + u32 uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + int iVar7; + + uVar5 = 0; + if (-1 < *param_1) { + iVar7 = param_1[1]; + piVar2 = param_1; + while( true ) { + uVar5 += 1; + if (iVar7 < 0) break; + iVar7 = piVar2[2]; + piVar2 = piVar2 + 1; + } + } + uVar3 = get_random_value(); + uVar1 = uVar3 % uVar5; + if (uVar5 == 0) { + trap(0x1c00); + } + if ((int)uVar1 < (int)uVar5) { + uVar6 = uVar5 - uVar1 & 3; + uVar4 = uVar1; + if (uVar6 == 0) { + iVar7 = uVar1 << 2; + } + else { + piVar2 = param_1 + uVar1; + do { + uVar4 += 1; + if (param_2 == *(int *)(ptr_setup_path_tbl + *piVar2 * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + *piVar2 * 0x10); + } + piVar2 = piVar2 + 1; + } while (uVar6 + uVar1 != uVar4); + iVar7 = uVar4 * 4; + if (uVar4 == uVar5) goto LAB_7f08f80c; + } + piVar2 = (int *)((int)param_1 + iVar7); + do { + uVar4 += 4; + if (param_2 == *(int *)(ptr_setup_path_tbl + *piVar2 * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + *piVar2 * 0x10); + } + if (param_2 == *(int *)(ptr_setup_path_tbl + piVar2[1] * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + piVar2[1] * 0x10); + } + if (param_2 == *(int *)(ptr_setup_path_tbl + piVar2[2] * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + piVar2[2] * 0x10); + } + if (param_2 == *(int *)(ptr_setup_path_tbl + piVar2[3] * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + piVar2[3] * 0x10); + } + piVar2 = piVar2 + 4; + } while (uVar4 != uVar5); + } +LAB_7f08f80c: + uVar5 = 0; + if (0 < (int)uVar1) { + piVar2 = param_1; + if ((uVar1 & 3) == 0) { + iVar7 = 0; + } + else { + do { + uVar5 += 1; + if (param_2 == *(int *)(ptr_setup_path_tbl + *piVar2 * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + *piVar2 * 0x10); + } + piVar2 = piVar2 + 1; + } while ((uVar1 & 3) != uVar5); + iVar7 = uVar5 * 4; + if (uVar5 == uVar1) { + return 0; + } + } + param_1 = (int *)((int)param_1 + iVar7); + do { + uVar5 += 4; + if (param_2 == *(int *)(ptr_setup_path_tbl + *param_1 * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + *param_1 * 0x10); + } + if (param_2 == *(int *)(ptr_setup_path_tbl + param_1[1] * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + param_1[1] * 0x10); + } + if (param_2 == *(int *)(ptr_setup_path_tbl + param_1[2] * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + param_1[2] * 0x10); + } + if (param_2 == *(int *)(ptr_setup_path_tbl + param_1[3] * 0x10 + 0xc)) { + return (int)(ptr_setup_path_tbl + param_1[3] * 0x10); + } + param_1 = param_1 + 4; + } while (uVar5 != uVar1); + } + return 0; +} + + + +// WARNING: Instruction at (ram,0x7f08fadc) overlaps instruction at (ram,0x7f08fad8) +// + +int proc_7F08F908(int *param_1,int param_2) + +{ + uint uVar1; + int *piVar2; + u32 uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + int iVar7; + + uVar5 = 0; + if (-1 < *param_1) { + iVar7 = param_1[1]; + piVar2 = param_1; + while( true ) { + uVar5 += 1; + if (iVar7 < 0) break; + iVar7 = piVar2[2]; + piVar2 = piVar2 + 1; + } + } + uVar3 = get_random_value(); + uVar1 = uVar3 % uVar5; + if (uVar5 == 0) { + trap(0x1c00); + } + if ((int)uVar1 < (int)uVar5) { + uVar6 = uVar5 - uVar1 & 3; + uVar4 = uVar1; + if (uVar6 == 0) { + iVar7 = uVar1 << 2; + } + else { + piVar2 = param_1 + uVar1; + do { + uVar4 += 1; + if (param_2 == *(int *)(ptr_setup_path_link + *piVar2 * 0xc + 8)) { + return (int)(ptr_setup_path_link + *piVar2 * 0xc); + } + piVar2 = piVar2 + 1; + } while (uVar6 + uVar1 != uVar4); + iVar7 = uVar4 * 4; + if (uVar4 == uVar5) goto LAB_7f08fa80; + } + piVar2 = (int *)((int)param_1 + iVar7); + do { + uVar4 += 4; + if (param_2 == *(int *)(ptr_setup_path_link + *piVar2 * 0xc + 8)) { + return (int)(ptr_setup_path_link + *piVar2 * 0xc); + } + if (param_2 == *(int *)(ptr_setup_path_link + piVar2[1] * 0xc + 8)) { + return (int)(ptr_setup_path_link + piVar2[1] * 0xc); + } + if (param_2 == *(int *)(ptr_setup_path_link + piVar2[2] * 0xc + 8)) { + return (int)(ptr_setup_path_link + piVar2[2] * 0xc); + } + if (param_2 == *(int *)(ptr_setup_path_link + piVar2[3] * 0xc + 8)) { + return (int)(ptr_setup_path_link + piVar2[3] * 0xc); + } + piVar2 = piVar2 + 4; + } while (uVar4 != uVar5); + } +LAB_7f08fa80: + uVar5 = 0; + if (0 < (int)uVar1) { + piVar2 = param_1; + if ((uVar1 & 3) == 0) { + iVar7 = 0; + } + else { + do { + uVar5 += 1; + if (param_2 == *(int *)(ptr_setup_path_link + *piVar2 * 0xc + 8)) { + return (int)(ptr_setup_path_link + *piVar2 * 0xc); + } + piVar2 = piVar2 + 1; + } while ((uVar1 & 3) != uVar5); + iVar7 = uVar5 * 4; + if (uVar5 == uVar1) { + return 0; + } + } + param_1 = (int *)((int)param_1 + iVar7); + do { + uVar5 += 4; + if (param_2 == *(int *)(ptr_setup_path_link + *param_1 * 0xc + 8)) { + return (int)(ptr_setup_path_link + *param_1 * 0xc); + } + if (param_2 == *(int *)(ptr_setup_path_link + param_1[1] * 0xc + 8)) { + return (int)(ptr_setup_path_link + param_1[1] * 0xc); + } + if (param_2 == *(int *)(ptr_setup_path_link + param_1[2] * 0xc + 8)) { + return (int)(ptr_setup_path_link + param_1[2] * 0xc); + } + if (param_2 == *(int *)(ptr_setup_path_link + param_1[3] * 0xc + 8)) { + return (int)(ptr_setup_path_link + param_1[3] * 0xc); + } + param_1 = param_1 + 4; + } while (uVar5 != uVar1); + } + return 0; +} + + + +int proc_7F08FB90(int param_1,int param_2) + +{ + int iVar1; + int **ppiVar2; + int iStack52; + int local_30 [2]; + int iStack40; + int local_24; + int local_1c; + int local_18 [6]; + + if (ptr_setup_path_link != NULL) { + ppiVar2 = (int **)(ptr_setup_path_link + *(int *)(param_1 + 8) * 0xc); + if (ppiVar2 == (int **)(ptr_setup_path_link + *(int *)(param_2 + 8) * 0xc)) { + proc_7F08F67C(); + proc_7F08F1D8(param_2,param_1,1); + iVar1 = proc_7F08F6B0(*(int **)(param_1 + 4),-1); + if (iVar1 != 0) { + return iVar1; + } + iVar1 = proc_7F08F6B0(*(int **)(param_1 + 4),*(int *)(param_1 + 0xc) + 1); + if (iVar1 != 0) { + return iVar1; + } + return 0; + } + proc_7F08EE70((int)(ptr_setup_path_link + *(int *)(param_2 + 8) * 0xc),(int)ppiVar2, + (int **)ptr_setup_path_link,0); + if ((int)ppiVar2[2] < 0) { + return 0; + } + iVar1 = proc_7F08F908(*ppiVar2,-1); + if (iVar1 != 0) { + proc_7F08F438((int)ppiVar2,iVar1,local_18,&local_1c); + if (local_18[0] == param_1) { + return local_1c; + } + iVar1 = proc_7F08F350(param_1,local_18[0],&iStack40,3); + if (2 < iVar1) { + return local_24; + } + return 0; + } + iVar1 = proc_7F08ED60(*ppiVar2,(int)ppiVar2[2] + -1); + if (iVar1 != 0) { + proc_7F08F438((int)ppiVar2,iVar1,local_30,&iStack52); + proc_7F08F1D8(local_30[0],param_1,1); + iVar1 = proc_7F08F090(*(int **)(param_1 + 4),*(int *)(param_1 + 0xc) + 1, + *(int *)(param_1 + 8)); + if (iVar1 != 0) { + return iVar1; + } + return 0; + } + } + return 0; +} + + + +void proc_7F08FD1C(void) + +{ + undefined *puVar1; + u32 uVar2; + int iVar3; + int *piVar4; + int local_dc; + int local_d8; + int local_d4 [49]; + undefined *local_10; + uint local_8; + undefined *local_4; + + if (ptr_setup_path_tbl != NULL) { + local_8 = 0; + if (*(int *)ptr_setup_path_tbl < 0) { + local_8 = 0; + } + else { + iVar3 = *(int *)(ptr_setup_path_tbl + 0x10); + puVar1 = ptr_setup_path_tbl; + while( true ) { + local_8 += 1; + if (iVar3 < 0) break; + iVar3 = *(int *)(puVar1 + 0x20); + puVar1 = puVar1 + 0x10; + } + } + local_4 = ptr_setup_path_tbl; + uVar2 = get_random_value(); + if (local_8 == 0) { + trap(0x1c00); + } + local_10 = local_4 + (uVar2 % local_8) * 0x10; + uVar2 = get_random_value(); + if (local_8 == 0) { + trap(0x1c00); + } + iVar3 = proc_7F08F4F0((int)local_10,(int)(local_4 + (uVar2 % local_8) * 0x10),&local_dc,0x32 + ); + if ((iVar3 != 0) && (piVar4 = &local_dc, local_dc != 0)) { + while (local_d8 != 0) { + local_d8 = piVar4[2]; + piVar4 = piVar4 + 1; + } + } + } + return; +} + + + +void nullsub_32(void) + +{ + return; +} + + + +void proc_7F08FE08(undefined4 param_1) + +{ + num_mcm_something = param_1; + return; +} + + + +void init_debug_menu_values(char *strings,mcm_layout *positions,u32 *columns) + +{ + u32 *puVar1; + u32 uVar2; + int iVar3; + + number_groups = 0; + if ((int)*columns < 0) { + iVar3 = 0; + } + else { + uVar2 = columns[1]; + puVar1 = columns; + while( true ) { + number_groups += 1; + if ((int)uVar2 < 0) break; + uVar2 = puVar1[2]; + puVar1 = puVar1 + 1; + } + iVar3 = number_groups * 4; + } + ptr_last_debuggrp_cutoff = *(undefined **)((int)columns + iVar3 + -4); + ptr_textptrs = strings; + ptr_positions = positions; + ptr_groupings = columns; + return; +} + + + +undefined4 print_debug_mcm_to_stdout(undefined4 counter) + +{ + byte bVar1; + byte bVar2; + int iVar3; + int *piVar4; + int xpos; + int ypos; + u32 uVar5; + int iVar6; + int iVar7; + + bVar1 = x_offset_multiplier[num_mcm_something]; + bVar2 = y_offset_multiplier[num_mcm_something]; + uVar5 = 0; + if (0 < (int)ptr_last_debuggrp_cutoff) { + iVar6 = 0; + iVar7 = 0; + do { + nullsub_32(); + if (uVar5 == highlighted_debug_option) { + set_debug_text_color(0xc0,0,0,0xc0); + } + else { + set_debug_text_color(0xc0,0xc0,0xc0,0xc0); + } + piVar4 = (int *)((int)&ptr_positions->xpos + iVar6); + iVar3 = *piVar4 * (uint)bVar1; + xpos = iVar3 + -0x14; + if (xpos < 0) { + xpos = iVar3 + -0x11; + } + ypos = piVar4[1] * (uint)bVar2 + -8; + if (false) { + trap(0x1c00); + } + if ((false) && (ypos == -0x80000000)) { + trap(0x1800); + } + set_final_debug_text_positions(xpos >> 2,ypos / 7); + write_string_stdout(*(u8 **)(ptr_textptrs + iVar7)); + uVar5 += 1; + iVar6 += 8; + iVar7 += 4; + } while ((int)uVar5 < (int)ptr_last_debuggrp_cutoff); + } + return counter; +} + + + +void proc_7F09000C(void) + +{ + byte bVar1; + byte bVar2; + int iVar3; + int *piVar4; + int xpos; + int ypos; + int checkedoption; + int iVar5; + int iVar6; + + bVar1 = x_offset_multiplier[num_mcm_something]; + bVar2 = y_offset_multiplier[num_mcm_something]; + checkedoption = 0; + if (0 < (int)ptr_last_debuggrp_cutoff) { + iVar5 = 0; + iVar6 = 0; + do { + nullsub_32(); + if (checkedoption == highlighted_debug_option) { + set_debug_text_color(0xc0,0,0,0xc0); + } + else { + set_debug_text_color(0xc0,0xc0,0xc0,0xc0); + } + piVar4 = (int *)((int)&ptr_positions->xpos + iVar5); + iVar3 = *piVar4 * (uint)bVar1; + xpos = iVar3 + -0x14; + if (xpos < 0) { + xpos = iVar3 + -0x11; + } + ypos = piVar4[1] * (uint)bVar2 + -8; + if (false) { + trap(0x1c00); + } + if ((false) && (ypos == -0x80000000)) { + trap(0x1800); + } + set_final_debug_text_positions(xpos >> 2,ypos / 7); + write_string_stdout(*(u8 **)(ptr_textptrs + iVar6)); + osSyncPrintf("menu.c: ERROR! Tried to call font_makegt\n"); + checkedoption += 1; + iVar5 += 8; + iVar6 += 4; + } while (checkedoption < (int)ptr_last_debuggrp_cutoff); + } + return; +} + + + +u32 get_highlighted_debug_option(void) + +{ + return highlighted_debug_option; +} + + + +void set_highlighted_debug_option(u32 option) + +{ + highlighted_debug_option = option; + return; +} + + + +void gotoAboveDebugOption(void) + +{ + u32 *puVar1; + int iVar2; + + if ((int)(highlighted_debug_option - 1) < 0) { + highlighted_debug_option = *ptr_groupings - 1; + return; + } + iVar2 = 0; + puVar1 = ptr_groupings; + if (0 < (int)number_groups) { + do { + iVar2 += 1; + if (highlighted_debug_option == *puVar1) { + highlighted_debug_option = puVar1[1] - 1; + return; + } + puVar1 = puVar1 + 1; + } while (iVar2 < (int)number_groups); + } + highlighted_debug_option = highlighted_debug_option - 1; + return; +} + + + +void gotoBelowDebugOption(void) + +{ + int iVar1; + u32 *puVar2; + + highlighted_debug_option += 1; + if (highlighted_debug_option == *ptr_groupings) { + highlighted_debug_option = 0; + return; + } + iVar1 = 0; + puVar2 = ptr_groupings; + if (0 < (int)number_groups) { + do { + iVar1 += 1; + if (highlighted_debug_option == *puVar2) { + highlighted_debug_option = puVar2[-1]; + return; + } + puVar2 = puVar2 + 1; + } while (iVar1 < (int)number_groups); + } + return; +} + + + +void gotoRightDebugOption(void) + +{ + int iVar1; + u32 *puVar2; + u32 uVar3; + + uVar3 = highlighted_debug_option + *ptr_groupings; + if ((int)highlighted_debug_option < (int)*ptr_groupings) { + highlighted_debug_option = uVar3; + if ((int)ptr_groupings[1] <= (int)uVar3) { + highlighted_debug_option = ptr_groupings[1] - 1; + return; + } + } + else { + iVar1 = 0; + puVar2 = ptr_groupings; + if (0 < (int)number_groups) { + do { + iVar1 += 1; + if ((int)highlighted_debug_option < (int)*puVar2) { + highlighted_debug_option = (highlighted_debug_option + *puVar2) - puVar2[-1]; + uVar3 = puVar2[1]; + if ((int)uVar3 < 0) { + if ((int)(highlighted_debug_option - *puVar2) < (int)*ptr_groupings) { + highlighted_debug_option = highlighted_debug_option - *puVar2; + return; + } + highlighted_debug_option = *ptr_groupings - 1; + return; + } + if ((int)highlighted_debug_option < (int)uVar3) { + return; + } + highlighted_debug_option = uVar3 - 1; + return; + } + puVar2 = puVar2 + 1; + } while (iVar1 < (int)number_groups); + } + } + return; +} + + + +void gotoLeftDebugOption(void) + +{ + u32 *puVar1; + int iVar2; + u32 uVar3; + + if ((int)highlighted_debug_option < (int)*ptr_groupings) { + if ((int)(number_groups - 1) < 1) { + iVar2 = 0; + } + else { + iVar2 = 1; + while (iVar2 < (int)(number_groups - 1)) { + iVar2 += 1; + } + iVar2 <<= 2; + } + highlighted_debug_option += ((int *)((int)ptr_groupings + iVar2))[-1]; + iVar2 = *(int *)((int)ptr_groupings + iVar2); + if (iVar2 <= (int)highlighted_debug_option) { + highlighted_debug_option = iVar2 - 1; + return; + } + } + else { + iVar2 = 0; + if ((int)*ptr_groupings <= (int)highlighted_debug_option) { + uVar3 = ptr_groupings[1]; + puVar1 = ptr_groupings; + while( true ) { + iVar2 += 1; + if ((int)highlighted_debug_option < (int)uVar3) break; + uVar3 = puVar1[2]; + puVar1 = puVar1 + 1; + } + } + puVar1 = ptr_groupings + iVar2; + highlighted_debug_option -= puVar1[-1]; + if (-1 < iVar2 + -2) { + highlighted_debug_option += puVar1[-2]; + } + if ((int)puVar1[-1] <= (int)highlighted_debug_option) { + highlighted_debug_option = puVar1[-1] - 1; + } + } + return; +} + + + +void display_debug_menu_text_onscreen(void) + +{ + init_debug_menu_values((char *)mcm_strings,mcm_onscreen_positions,mcm_column_groupings); + return; +} + + + +void handle_debug_stanview(void) + +{ + stanStoreBondCoord(); + debug_render_raster = get_highlighted_debug_option(); + debug_freeze_processing = debug_render_raster; + debug_controlmode = debug_render_raster; + return; +} + + + +void handle_debug_bondview(void) + +{ + maybe_solo_intro_camera_handler(); + debug_render_raster = get_highlighted_debug_option(); + debug_freeze_processing = debug_render_raster; + debug_controlmode = debug_render_raster; + return; +} + + + +void handle_debug_case_2(void) + +{ + maybe_solo_intro_camera_handler(); + debug_render_raster = get_highlighted_debug_option(); + debug_freeze_processing = debug_render_raster; + debug_controlmode = debug_render_raster; + return; +} + + + +void removed_do_debug_profile_flag_false(void) + +{ + return; +} + + + +void removed_do_debug_profile_flag_true(void) + +{ + return; +} + + + +// WARNING: Switch with 1 destination removed at 0x7f090ea8 : 5 cases all go to same destination + +void debug_menu_processor + (u32 stick_h,u32 stick_v,controller_buttons button_held, + controller_buttons button_pressed) + +{ + bool bVar1; + undefined4 uVar3; + PLAYER_ID playernum; + s32 sVar4; + ulonglong uVar2; + int iVar5; + astruct_2 *position; + u32 uVar6; + float tempx; + float tempy; + float tempz; + PLAYER_ID PStack8; + PLAYER_ID PStack4; + + if ((grab_rgb_screenshot_flag != 0) && + (uVar6 = grab_rgb_screenshot_flag + 1, bVar1 = grab_rgb_screenshot_flag == 3, + grab_rgb_screenshot_flag = uVar6, bVar1)) { + indy_grab_rgb_32bit(); + grab_rgb_screenshot_flag = 0; + set_coloroutputmode_16bit(); + osViBlack(0); + } + if ((grab_jpeg_screenshot_flag != 0) && + (uVar6 = grab_jpeg_screenshot_flag + 1, bVar1 = grab_jpeg_screenshot_flag == 3, + grab_jpeg_screenshot_flag = uVar6, bVar1)) { + indy_grab_jpg_32bit(); + grab_jpeg_screenshot_flag = 0; + set_coloroutputmode_16bit(); + osViBlack(0); + } + if (show_debug_menu_flag == 0) { + bVar1 = (button_held & U_CBUTTONS) != NONE; + if (bVar1) { + bVar1 = (button_held & D_CBUTTONS) != NONE; + } + show_debug_menu_flag = (uint)bVar1; + if (bVar1 != false) { + stop_recording_ramrom(); + } + } + else { + if (debug_limit_controller_input != -2) { + debug_controlmode = debug_limit_controller_input; + debug_limit_controller_input = -2; + } + if ((button_pressed & L_JPAD) != NONE) { + gotoLeftDebugOption(); + debug_limit_controller_input = -2; + } + if ((button_pressed & R_JPAD) != NONE) { + gotoRightDebugOption(); + debug_limit_controller_input = -2; + } + if ((button_pressed & U_JPAD) != NONE) { + gotoAboveDebugOption(); + debug_limit_controller_input = -2; + } + if ((button_pressed & D_JPAD) != NONE) { + gotoBelowDebugOption(); + debug_limit_controller_input = -2; + } + if (((button_pressed & (START_BUTTON|A_BUTTON)) != NONE) && + (uVar3 = get_highlighted_debug_option(), true)) { + switch(uVar3) { + case 0: + handle_debug_stanview(); + break; + case 1: + handle_debug_bondview(); + break; + case 2: + handle_debug_case_2(); + break; + case 3: + debug_controlmode = get_highlighted_debug_option(); + break; + case 4: + debug_controlmode = get_highlighted_debug_option(); + break; + case 5: + debug_controlmode = get_highlighted_debug_option(); + break; + case 6: + set_loaded_stage(LEVELID_TITLE); + break; + case 7: + kill_current_player(); + break; + case 8: + debug_controlmode = get_highlighted_debug_option(); + break; + case 9: + debug_controlmode = get_highlighted_debug_option(); + break; + case 10: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0xb: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0xc: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0xd: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0xe: + uVar2 = get_bondata_invincible_flag(); + set_bondata_invincible_flag(uVar2 == 0); + break; + case 0xf: + iVar5 = get_invisible_to_guards_flag(); + set_invisible_to_guards_flag((uint)(iVar5 == 0)); + break; + case 0x10: + iVar5 = get_obj_collision_flag(); + set_obj_collision_flag((uint)(iVar5 == 0)); + break; + case 0x11: + PStack4 = PLAYER1; + sVar4 = get_num_players(); + if (0 < sVar4) { + do { + set_cur_player(PStack4); + iVar5 = get_BONDdata_allguns_flag(); + set_BONDdata_allguns_flag((uint)(iVar5 == 0)); + PStack4 += PLAYER2; + sVar4 = get_num_players(); + } while ((int)PStack4 < sVar4); + } + break; + case 0x12: + playernum = get_cur_playernum(); + PStack8 = PLAYER1; + sVar4 = get_num_players(); + if (0 < sVar4) { + do { + set_cur_player(PStack8); + set_max_ammo_for_cur_player(); + PStack8 += PLAYER2; + sVar4 = get_num_players(); + } while ((int)PStack8 < sVar4); + } + set_cur_player(playernum); + break; + case 0x13: + memusage_display_flag ^= 1; + if (memusage_display_flag == FALSE) { + blank_debug_buffer_chars(); + } + break; + case 0x14: + debug_do_draw_bg ^= 1; + break; + case 0x15: + debug_do_draw_obj ^= 1; + break; + case 0x16: + debug_stanhit_flag ^= 1; + break; + case 0x17: + debug_stanregion_flag ^= 1; + break; + case 0x18: + turbo_mode ^= 1; + break; + case 0x19: + debug_man_pos_flag ^= 1; + break; + case 0x1a: + case 0x1b: + case 0x1c: + debug_portal_flag ^= 1; + break; + case 0x1d: + debug_prroomloads_flag ^= 1; + break; + case 0x1e: + enable_show_mem_use_flag(); + break; + case 0x1f: + mem_bars_flag_toggle(); + break; + case 0x20: + grab_rgb_screenshot_flag = 1; + osViBlack(1); + set_coloroutputmode_32bit(); + break; + case 0x21: + grab_jpeg_screenshot_flag = 1; + osViBlack(1); + set_coloroutputmode_32bit(); + break; + case 0x22: + debug_enable_taskgrab_flag ^= 1; + break; + case 0x24: + record_next_movie_to_slot(0); + break; + case 0x25: + record_next_movie_to_slot(1); + break; + case 0x26: + record_next_movie_to_slot(2); + break; + case 0x27: + record_next_movie_to_slot(3); + break; + case 0x28: + replay_recorded_ramrom_from_indy(); + break; + case 0x29: + save_ramrom_to_devtool(); + break; + case 0x2a: + load_ramrom_from_devtool(); + break; + case 0x2b: + uVar2 = get_BONDdata_autoaim_y(); + set_BONDdata_autoaim_y((uint)(uVar2 == 0)); + break; + case 0x2c: + uVar2 = get_BONDdata_autoaim_x(); + set_BONDdata_autoaim_x((uint)(uVar2 == 0)); + break; + case 0x2d: + debug_007_unlock_flag ^= 1; + break; + case 0x2e: + debug_enable_agent_levels ^= 1; + break; + case 0x2f: + debug_enable_all_levels ^= 1; + break; + case 0x30: + debug_fast_bond ^= 1; + break; + case 0x31: + debug_all_obj_complete ^= 1; + break; + case 0x37: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0x38: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0x39: + iVar5 = get_show_patrols_flag(); + set_show_patrols_flag((uint)(iVar5 == 0)); + break; + case 0x3a: + set_camera_mode(SWIRL_CAM); + break; + case 0x3b: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0x3c: + if (debug_render_raster == 0) { + handle_debug_intropos(); + } + break; + case 0x3d: + if (debug_render_raster == 0) { + handle_debug_worldpos(); + } + else { + position = (astruct_2 *)get_curplayer_positiondata(); + if (position != NULL) { + tempx = position->x - (float)player_pos_copy.x; + tempy = position->y - (float)player_pos_copy.y; + tempz = position->z - (float)player_pos_copy.z; + sqrtf(tempx * tempx + tempy * tempy + tempz * tempz); + player_pos_copy.x = (f32)position->x; + player_pos_copy.y = (f32)position->y; + player_pos_copy.z = (f32)position->z; + } + } + break; + case 0x3e: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0x3f: + linemode_flag ^= 1; + break; + case 0x40: + debug_chrnum_flag ^= 1; + break; + case 0x41: + removed_debug_roomblocks_feature(); + break; + case 0x42: + debug_profile_flag ^= 1; + if (debug_profile_flag == FALSE) { + removed_do_debug_profile_flag_true(); + } + else { + removed_do_debug_profile_flag_false(); + } + break; + case 0x43: + debug_object_load_all_models(); + break; + case 0x44: + debug_weapon_load_table(); + break; + case 0x45: + debug_joy2skyedit_flag ^= 1; + break; + case 0x46: + debug_joy2hitsedit_flag ^= 1; + break; + case 0x47: + debug_joy2detailedit_flag ^= 1; + break; + case 0x48: + debug_explosioninfo_flag ^= 1; + break; + case 0x49: + debug_controlmode = get_highlighted_debug_option(); + break; + case 0x4a: + debug_gunwatchpos_flag ^= 1; + break; + case 0x4b: + debug_testingmanpos_flag ^= 1; + break; + case 0x4c: + debug_controlmode = get_highlighted_debug_option(); + } + } + if ((button_pressed & (R_CBUTTONS|L_CBUTTONS)) != NONE) { + get_highlighted_debug_option(); + } + if ((button_pressed & START_BUTTON) != NONE) { + if (show_debug_menu_flag == 1) { + blank_debug_buffer_chars(); + } + show_debug_menu_flag = 0; + } + } + return; +} + + + +u32 get_debug_render_raster(void) + +{ + return debug_render_raster; +} + + + +u32 get_debug_freeze_processing(void) + +{ + return debug_freeze_processing; +} + + + +u32 get_debug_limit_controller_input(void) + +{ + return (u32)debug_limit_controller_input; +} + + + +void set_debug_limit_controller_input(void) + +{ + debug_limit_controller_input = debug_controlmode; + return; +} + + + +BOOL get_memusage_display_flag(void) + +{ + return memusage_display_flag; +} + + + +BOOL get_debug_do_draw_bg(void) + +{ + return debug_do_draw_bg; +} + + + +BOOL get_debug_do_draw_obj(void) + +{ + return debug_do_draw_obj; +} + + + +BOOL get_debug_stanhit_flag(void) + +{ + return debug_stanhit_flag; +} + + + +BOOL get_debug_stanregion_flag(void) + +{ + return debug_stanregion_flag; +} + + + +BOOL get_turbo_mode_flag(void) + +{ + return turbo_mode; +} + + + +BOOL get_debug_man_pos_flag(void) + +{ + return debug_man_pos_flag; +} + + + +BOOL get_debug_testingmanpos_flag(void) + +{ + return debug_testingmanpos_flag; +} + + + +void set_debug_testingmanpos_flag(BOOL flag) + +{ + debug_testingmanpos_flag = flag; + return; +} + + + +BOOL get_debug_joy2skyedit_flag(void) + +{ + return debug_joy2skyedit_flag; +} + + + +BOOL get_debug_joy2hitsedit_flag(void) + +{ + return debug_joy2hitsedit_flag; +} + + + +BOOL get_debug_joy2detailedit_flag(void) + +{ + return debug_joy2detailedit_flag; +} + + + +BOOL get_debug_explosioninfo_flag(void) + +{ + return debug_explosioninfo_flag; +} + + + +BOOL get_debug_prroomloads_flag(void) + +{ + return debug_prroomloads_flag; +} + + + +BOOL get_linemode_flag(void) + +{ + return linemode_flag; +} + + + +void set_linemode_flag(BOOL param_1) + +{ + linemode_flag = param_1; + return; +} + + + +BOOL get_debug_007_unlock_flag(void) + +{ + return debug_007_unlock_flag; +} + + + +BOOL get_debug_enable_agent_levels_flag(void) + +{ + return debug_enable_agent_levels; +} + + + +BOOL get_debug_enable_all_levels_flag(void) + +{ + return debug_enable_all_levels; +} + + + +BOOL get_debug_fast_bond_flag(void) + +{ + return debug_fast_bond; +} + + + +void set_debug_fast_bond_flag(BOOL param_1) + +{ + debug_fast_bond = param_1; + return; +} + + + +BOOL get_debug_all_obj_complete_flag(void) + +{ + return debug_all_obj_complete; +} + + + +BOOL getdebug_portal_flag(void) + +{ + return debug_portal_flag; +} + + + +BOOL get_debug_chrnum_flag(void) + +{ + return debug_chrnum_flag; +} + + + +BOOL get_debug_gunwatchpos_flag(void) + +{ + return debug_gunwatchpos_flag; +} + + + +BOOL get_debug_profile_flag(void) + +{ + return debug_profile_flag; +} + + + +BOOL get_debug_taskgrab_val(void) + +{ + return debug_enable_taskgrab_flag; +} + + + +void proc_7F091080(char param_1,char param_2,ushort param_3) + +{ + int iVar1; + float fVar2; + char cStackX3; + + fVar2 = 1.00000000; + iVar1 = (int)param_2; + if (param_1 < -3) { + cStackX3 = param_1 + '\x03'; + } + else { + cStackX3 = param_1 + -3; + if (param_1 < '\x04') { + cStackX3 = '\0'; + } + } + if (iVar1 < -3) { + iVar1 = (iVar1 + 3) * 0x1000000 >> 0x18; + } + else { + if (iVar1 < 4) { + iVar1 = 0; + } + else { + iVar1 = (iVar1 + -3) * 0x1000000 >> 0x18; + } + } + if ((param_3 & 0x30) == 0) { + if ((param_3 & 0x2000) != 0) { + fVar2 = 0.19999999; + } + if ((param_3 & ~dword_80037054 & 0x8000) != 0) { + flt_80037050 = flt_80037050 + flt_80037050; + } + if ((param_3 & ~dword_80037054 & 0x4000) != 0) { + flt_80037050 = flt_80037050 * 0.50000000; + } + stanbondx = stanbondx + (float)iVar1 * dword_80037040 * fVar2 * flt_80037050; + stanbondz = stanbondz + -(float)iVar1 * flt_8003703C * fVar2 * flt_80037050; + if ((param_3 & 0x202) != 0) { + stanbondx = stanbondx - flt_8003703C * 20.00000000 * fVar2 * flt_80037050; + stanbondz = stanbondz - dword_80037040 * 20.00000000 * fVar2 * flt_80037050; + } + if ((param_3 & 0x101) != 0) { + stanbondx = stanbondx + flt_8003703C * 20.00000000 * fVar2 * flt_80037050; + stanbondz = stanbondz + dword_80037040 * 20.00000000 * fVar2 * flt_80037050; + } + dword_80037038 = dword_80037038 + (float)(int)cStackX3 * fVar2 * 0.12500000; + if ((param_3 & 0x800) != 0) { + dword_80037044 = dword_80037044 - (fVar2 + fVar2); + } + if ((param_3 & 0x400) != 0) { + dword_80037044 = dword_80037044 + fVar2 + fVar2; + } + if ((param_3 & 8) != 0) { + stanbondy = stanbondy + fVar2 * 20.00000000 * flt_80037050; + } + if ((param_3 & 4) != 0) { + stanbondy = stanbondy - fVar2 * 20.00000000 * flt_80037050; + } + } + while (dword_80037038 < 0.00000000) { + dword_80037038 = dword_80037038 + 360.00000000; + } + while (360.00000000 <= dword_80037038) { + dword_80037038 = dword_80037038 - 360.00000000; + } + while (dword_80037044 < 0.00000000) { + dword_80037044 = dword_80037044 + 360.00000000; + } + while (360.00000000 <= dword_80037044) { + dword_80037044 = dword_80037044 - 360.00000000; + } + flt_8003703C = cosf(dword_80037038 * flt_80055850); + dword_80037040 = sinf(dword_80037038 * flt_80055854); + flt_80037048 = cosf(dword_80037044 * flt_80055858); + dword_80037024 = sinf(dword_80037044 * flt_8005585C); + dword_80037020 = flt_80037048 * dword_80037040; + flt_80037030 = flt_80037048; + flt_80037028 = -flt_80037048 * flt_8003703C; + dword_8003702C = -dword_80037024 * dword_80037040; + dword_80037034 = dword_80037024 * flt_8003703C; + dword_8003704C = dword_80037024; + dword_80037054 = param_3; + set_cur_player_fovy(60.00000000); + dword_8007A4E0 += 1; + if (dword_8007A4E0 == 1) { + remove_item_in_hand(HAND_RIGHT); + remove_item_in_hand(HAND_LEFT); + } + else { + if (dword_8007A4E0 == 4) { + solo_char_load(); + } + } + return; +} + + + +undefined4 proc_7F091580(undefined4 param_1) + +{ + proc_7F0876C4((float *)&stanbondx,(float *)&dword_80037020,(float *)&dword_8003702C); + return param_1; +} + + + +void proc_7F0915BC(float param_1) + +{ + flt_80037058 = flt_80037058 / param_1; + stanbondx = stanbondx * flt_80037058; + stanbondy = stanbondy * flt_80037058; + stanbondz = stanbondz * flt_80037058; + flt_80037058 = param_1; + flt_8003705C = 1.00000000 / param_1; + return; +} + + + +void handle_debug_intropos(void) + +{ + float __x; + + get_BONDdata_position(); + __x = get_curplay_horizontal_rotation_in_degrees(); + __x = flt_80055860 - __x; + cosf(__x); + sinf(__x); + cosf(__x); + sinf(__x); + return; +} + + + +void handle_debug_worldpos(void) + +{ + sqrtf((stanbondx - dword_80037060) * (stanbondx - dword_80037060) + + (stanbondy - dword_80037064) * (stanbondy - dword_80037064) + + (stanbondz - dword_80037068) * (stanbondz - dword_80037068)); + dword_80037060 = stanbondx; + dword_80037064 = stanbondy; + dword_80037068 = stanbondz; + return; +} + + + +void stanStoreBondCoord(void) + +{ + xyzpoint *pos; + + pos = get_BONDdata_position(); + stanbondx = pos->x; + stanbondy = pos->y; + stanbondz = pos->z; + dword_8007A4E0 = 0; + return; +} + + + +int cheatButton_7F091740(controller_buttons *param_1) + +{ + int iVar1; + uint uVar2; + + uVar2 = (uint)param_1 & 0xffff; + iVar1 = 0; + while (uVar2 != 0) { + if ((uVar2 & 1) != 0) { + iVar1 += 1; + } + uVar2 >>= 1; + } + return iVar1; +} + + + +void cheatButton_7F09177C(void) + +{ + byte bVar1; + int iVar2; + s32 sVar3; + int iVar4; + uint uVar5; + short *psVar6; + ulonglong uVar7; + ulonglong uVar8; + char cVar9; + struct_15 *psVar10; + uint uVar11; + + psVar10 = stru_8003F80C; + iVar2 = proc_7F0BDF04(); + if (iVar2 == 0x5a) { + uVar11 = 1; + } + else { + sVar3 = get_num_players(); + uVar11 = 4; + if (sVar3 == 1) { + uVar11 = 2; + } + } + bVar1 = stru_8003F80C[0].field_1; + if (stru_8003F80C[0].anonymous_0 == '\0') { + return; + } + do { + uVar8 = (ulonglong)bVar1; + if (bVar1 == 0) { + cVar9 = psVar10[1].anonymous_0; + } + else { + if ((byte)pPlayer->can_display_cheat_text < uVar8) { + cVar9 = psVar10[1].anonymous_0; + } + else { + if ((psVar10->anonymous_3 & uVar11) == 0) { + cVar9 = psVar10[1].anonymous_0; + } + else { + uVar7 = 0; + iVar2 = ((uint)(byte)pPlayer->something_with_cheat_text - (uint)bVar1) + 0x14; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + if (bVar1 != 0) { + psVar6 = (short *)psVar10->anonymous_1; + do { + iVar4 = iVar2 % 0x14; + iVar2 = iVar4 + 1; + if (*(short *)((int)&pPlayer->field_128C + iVar4 * 2) != *psVar6) break; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + uVar7 = SEXT48((int)uVar7 + 1); + psVar6 = psVar6 + 1; + } while ((longlong)uVar7 < (longlong)uVar8); + } + if (uVar7 == uVar8) { + pPlayer->can_display_cheat_text = '\0'; + uVar5 = cheatCheckIfOn((uint)(byte)psVar10->anonymous_0); + if ((uVar5 == 0) || ((psVar10->anonymous_3 & 0x10U) != 0)) { + handle_cheats_turned_on((uint)(byte)psVar10->anonymous_0); + cVar9 = psVar10[1].anonymous_0; + } + else { + cheatDisplayMessageActivateCheat((uint)(byte)psVar10->anonymous_0); + cVar9 = psVar10[1].anonymous_0; + } + } + else { + cVar9 = psVar10[1].anonymous_0; + } + } + } + } + if (cVar9 == '\0') { + return; + } + if (false) { + return; + } + bVar1 = psVar10[1].field_1; + psVar10 = psVar10 + 1; + } while( true ); +} + + + +void cheat_buttons_mp_related(void) + +{ + ushort uVar1; + u32 uVar2; + u32 uVar3; + int iVar4; + ulonglong uVar5; + + uVar2 = get_cur_playernum(); + uVar2 = get_controller_buttons_held + ((char)uVar2, + R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2|DUMMY_1| + R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON|A_BUTTON); + uVar3 = get_cur_playernum(); + uVar3 = get_controller_buttons_pressed + ((char)uVar3, + R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2|DUMMY_1| + R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON|A_BUTTON); + uVar5 = (ulonglong)(ushort)uVar2 & 0x30; + uVar1 = (ushort)uVar5; + uVar5 = (longlong)(int)uVar3 & ~uVar5; + if ((uVar5 & 0xffff) != 0) { + iVar4 = cheatButton_7F091740((controller_buttons *)((uint)uVar5 & 0xffff)); + if (iVar4 == 1) { + iVar4 = cheatButton_7F091740 + ((controller_buttons *)(uint)(ushort)((ushort)uVar2 & ~uVar1)); + if (iVar4 == 1) { + *(ushort *) + ((int)&pPlayer->field_128C + (uint)(byte)pPlayer->something_with_cheat_text * 2) = + (ushort)uVar5 | uVar1; + pPlayer->something_with_cheat_text = + (char)((int)((uint)(byte)pPlayer->something_with_cheat_text + 1) % 0x14); + if ((byte)pPlayer->can_display_cheat_text < 0x14) { + pPlayer->can_display_cheat_text = pPlayer->can_display_cheat_text + 1; + } + goto LAB_7f091a44; + } + } + pPlayer->can_display_cheat_text = '\0'; + } +LAB_7f091a44: + cheatButton_7F09177C(); + return; +} + + + +u32 is_cheat_index_equal_to_1C(u32 cheatindex) + +{ + if (cheatindex == 0x1c) { + return 1; + } + return 0; +} + + + +u32 cheatCheckIfMPCheat(CHEAT_IDS cheat) + +{ + if (((&D_8003F808)[cheat * 4] & 4) == 4) { + return 1; + } + return 0; +} + + + +void turn_on_cheat_for_players(u32 cheatindex) + +{ + uint uVar1; + PLAYER_ID playernum; + PLAYER_ID numplayers; + PLAYER_ID i; + + uVar1 = (&D_8003F808)[cheatindex * 4]; + playernum = get_cur_playernum(); + numplayers = get_num_players(); + if (numplayers == PLAYER2) { + handle_cheats_turned_on(cheatindex); + } + else { + if ((uVar1 & 4) != 0) { + if ((uVar1 & 0x20) == 0) { + i = PLAYER1; + if (0 < (int)numplayers) { + do { + set_cur_player(i); + handle_cheats_turned_on(cheatindex); + i += PLAYER2; + } while (i != numplayers); + } + set_cur_player(playernum); + } + else { + handle_cheats_turned_on(cheatindex); + } + } + } + return; +} + + + +void handle_cheats_turned_on(CHEAT_IDS cheat) + +{ + uint uVar1; + bool bVar2; + PLAYER_ID playernum; + PLAYER_ID PVar4; + ulonglong uVar3; + BOOL BVar5; + BOOL BVar6; + BOOL BVar7; + BOOL BVar8; + BOOL BVar9; + u8 *text; + s32 sVar10; + int amount; + STAGENUM stageid; + STAGENUM SVar11; + f32 fVar12; + f32 scale; + PLAYER_ID local_10; + + uVar1 = (&D_8003F808)[cheat * 4]; + playernum = get_cur_playernum(); + PVar4 = get_num_players(); + if ((uVar1 & 0x10) == 0) { + if ((uVar1 & 0x20) == 0) { + cheatl_ARRAY_80079e30[cheat] = + cheatl_ARRAY_80079e30[cheat] | (byte)(1 << (playernum & 0x1f)); + } + else { + cheatl_ARRAY_80079e30[cheat] = (char)(1 << (PVar4 & 0x1f)) + -1; + } + } + if (true) { + switch(cheat) { + case CHEAT_EXTRA_MP_CHARS: + unlock_mp_chars(); + break; + case CHEAT_INVINCIBILITY: + uVar3 = get_bondata_invincible_flag(); + if (uVar3 == 0) { + text = get_textptr_for_textID(0xb00f); + display_string_in_lower_left_corner((char *)text); + set_bondata_invincible_flag(1); + } + break; + case CHEAT_ALLGUNS: + amount = get_BONDdata_allguns_flag(); + if (amount == 0) { + text = get_textptr_for_textID(0xb010); + display_string_in_lower_left_corner((char *)text); + set_BONDdata_allguns_flag(1); + } + break; + case CHEAT_MAXAMMO: + text = get_textptr_for_textID(0xb011); + display_string_in_lower_left_corner((char *)text); + set_max_ammo_for_cur_player(); + break; + case CHEAT_REMOVE_INVINCIBILITY: + bVar2 = false; + if (1 < (int)PVar4) { + local_10 = PLAYER1; + if (0 < (int)PVar4) { + do { + if (local_10 != playernum) { + set_cur_player(local_10); + uVar3 = get_bondata_invincible_flag(); + if (uVar3 != 0) { + bVar2 = true; + set_bondata_invincible_flag(0); + } + } + set_cur_player(playernum); + local_10 += PLAYER2; + } while (local_10 != PVar4); + } + if (bVar2) { + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + } + } + break; + case CHEAT_LINEMODE: + set_linemode_flag(1); + break; + case cheats_cheat_2x_health: + if (((float)pPlayer->actual_health == 1.00000000) || + ((float)pPlayer->bondhealth < 1.00000000)) { + text = get_textptr_for_textID(0xb012); + display_string_in_lower_left_corner((char *)text); + pPlayer->bondhealth = 1.00000000; + pPlayer->actual_health = 2.00000000; + } + break; + case cheats_cheat_2x_armor: + if (((float)pPlayer->actual_armor == 1.00000000) || + ((float)pPlayer->bondarmour < 1.00000000)) { + text = get_textptr_for_textID(0xb013); + display_string_in_lower_left_corner((char *)text); + pPlayer->bondarmour = 1.00000000; + pPlayer->actual_armor = 2.00000000; + } + break; + case cheats_cheat_invisibility: + amount = get_invisible_to_guards_flag(); + if (amount != 0) { + text = get_textptr_for_textID(0xb014); + display_string_in_lower_left_corner((char *)text); + set_invisible_to_guards_flag(0); + } + break; + case cheats_cheat_infinite_ammo: + text = get_textptr_for_textID(0xb016); + display_string_in_lower_left_corner((char *)text); + break; + case cheats_cheat_dk_mode: + text = get_textptr_for_textID(0xb017); + display_string_in_lower_left_corner((char *)text); + set_DKMode(1); + break; + case cheats_cheat_extra_weapons: + if (PVar4 == PLAYER2) { + BVar9 = add_item_to_inventory(ITEM_RUGER); + BVar5 = add_item_to_inventory(ITEM_LASER); + BVar6 = add_item_to_inventory(ITEM_GOLDENGUN); + BVar7 = add_item_to_inventory(ITEM_SILVERWPPK); + BVar8 = add_item_to_inventory(ITEM_GOLDWPPK); + amount = get_max_ammo_for_type(AMMO_MAGNUM); + give_cur_player_ammo(AMMO_MAGNUM,amount); + amount = get_max_ammo_for_type(AMMO_GGUN); + give_cur_player_ammo(AMMO_GGUN,amount); + amount = get_max_ammo_for_type(AMMO_9MM); + give_cur_player_ammo(AMMO_9MM,amount); + if (0 < (int)(BVar9 + BVar5 + BVar6 + BVar7 + BVar8)) { + text = get_textptr_for_textID(0xb018); + display_string_in_lower_left_corner((char *)text); + } + } + break; + case cheats_cheat_tiny_bond: + if ((PVar4 == PLAYER2) && (pPlayersPerm->player_perspective_height == 1.00000000)) { + text = get_textptr_for_textID(0xb019); + display_string_in_lower_left_corner((char *)text); + pPlayersPerm->player_perspective_height = 0.50000000; + if (pPlayer->ptr_char_objectinstance != 0) { + set_obj_instance_controller_scale(pPlayer->ptr_char_objectinstance,scale); + } + } + break; + case cheats_cheat_paintball: + text = get_textptr_for_textID(0xb01a); + display_string_in_lower_left_corner((char *)text); + break; + case cheats_cheat_10x_health: + if (((float)pPlayer->actual_health == 1.00000000) || + ((float)pPlayer->bondhealth < 1.00000000)) { + text = get_textptr_for_textID(0xb01b); + display_string_in_lower_left_corner((char *)text); + pPlayer->bondhealth = 1.00000000; + pPlayer->actual_health = 10.00000000; + } + break; + case cheats_cheat_magnum: + if (PVar4 == PLAYER2) { + add_item_to_inventory(ITEM_RUGER); + amount = get_max_ammo_for_type(AMMO_MAGNUM); + give_cur_player_ammo(AMMO_MAGNUM,amount); + } + break; + case cheats_cheat_laser: + if (PVar4 == PLAYER2) { + add_item_to_inventory(ITEM_LASER); + } + break; + case cheats_cheat_goldengun: + if (PVar4 == PLAYER2) { + add_item_to_inventory(ITEM_GOLDENGUN); + amount = get_max_ammo_for_type(AMMO_GGUN); + give_cur_player_ammo(AMMO_GGUN,amount); + } + break; + case cheats_cheat_silverpp7: + if (PVar4 == PLAYER2) { + add_item_to_inventory(ITEM_SILVERWPPK); + amount = get_max_ammo_for_type(AMMO_9MM); + give_cur_player_ammo(AMMO_9MM,amount); + } + break; + case cheats_cheat_goldpp7: + if (PVar4 == PLAYER2) { + add_item_to_inventory(ITEM_GOLDWPPK); + amount = get_max_ammo_for_type(AMMO_9MM); + give_cur_player_ammo(AMMO_9MM,amount); + } + break; + case cheats_cheat_invisibility_mp: + set_curplayer_fade(300.00000000,flt_800573D8); + break; + case cheats_cheat_fast: + BVar9 = get_debug_fast_bond_flag(); + if (BVar9 == FALSE) { + text = get_textptr_for_textID(0xb01d); + display_string_in_lower_left_corner((char *)text); + set_debug_fast_bond_flag(TRUE); + } + break; + case cheats_debug_pos: + BVar9 = get_debug_testingmanpos_flag(); + if (BVar9 == FALSE) { + set_debug_testingmanpos_flag(TRUE); + } + break; + case cheats_debug_fast_ani: + fVar12 = get_animation_rate(); + if ((float)fVar12 < 4.00000000) { + text = get_textptr_for_textID(0xb034); + display_string_in_lower_left_corner((char *)text); + animation_speed_related(4.00000000); + } + break; + case cheats_debug_slow_ani: + fVar12 = get_animation_rate(); + if (0.25000000 < (float)fVar12) { + text = get_textptr_for_textID(0xb032); + display_string_in_lower_left_corner((char *)text); + animation_speed_related(0.25000000); + } + break; + case cheats_debug_2x_rockets: + if (PVar4 == PLAYER2) { + add_doubles_item_to_inventory(0x19,0x19); + amount = get_max_ammo_for_type(AMMO_ROCKETS); + give_cur_player_ammo(AMMO_ROCKETS,amount); + } + break; + case cheats_debug_2x_grenade_launch: + if (PVar4 == PLAYER2) { + add_doubles_item_to_inventory(0x18,0x18); + amount = get_max_ammo_for_type(AMMO_GRENADEROUND); + give_cur_player_ammo(AMMO_GRENADEROUND,amount); + } + break; + case cheats_debug_2x_rcp90: + if (PVar4 == PLAYER2) { + add_doubles_item_to_inventory(0xe,0xe); + amount = get_max_ammo_for_type(AMMO_9MM); + give_cur_player_ammo(AMMO_9MM,amount); + } + break; + case cheats_debug_2x_throwing_knife: + if (PVar4 == PLAYER2) { + add_doubles_item_to_inventory(3,3); + amount = get_max_ammo_for_type(AMMO_KNIFE); + give_cur_player_ammo(AMMO_KNIFE,amount); + } + break; + case cheats_debug_2x_hunting_knife: + if (PVar4 == PLAYER2) { + add_doubles_item_to_inventory(2,2); + } + break; + case cheats_debug_2x_laser: + if (PVar4 == PLAYER2) { + add_doubles_item_to_inventory(0x16,0x16); + } + break; + case UNUSED_23: + case UNUSED_24: + case UNUSED_25: + case UNUSED_26: + case UNUSED_27: + case UNUSED_28: + case UNUSED_29: + case UNUSED_2A: + case UNUSED_2B: + case UNUSED_2C: + case UNUSED_2D: + case UNUSED_2E: + case UNUSED_2F: + case UNUSED_30: + case UNUSED_31: + case UNUSED_32: + case UNUSED_33: + case UNUSED_34: + case UNUSED_35: + case UNLOCK_CHEATS: + if ((-1 < (int)selected_folder_num) && ((int)selected_folder_num < 4)) { + proc_7F01E760(selected_folder_num,cheat + ~cheats_debug_2x_laser); + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + } + break; + case UNUSED_37: + case UNUSED_38: + case UNUSED_39: + case UNUSED_3A: + case UNUSED_3B: + case UNUSED_3C: + case UNUSED_3D: + case UNUSED_3E: + case UNUSED_3F: + case UNUSED_40: + case UNUSED_41: + case UNUSED_42: + case UNUSED_43: + case UNUSED_44: + case UNUSED_45: + case UNUSED_46: + case UNUSED_47: + case UNUSED_48: + case UNUSED_49: + case UNLOCK_STAGES: + SVar11 = cheat + ~UNLOCK_CHEATS; + if ((-1 < (int)selected_folder_num) && (amount = 0, (int)selected_folder_num < 4)) { + stageid = SP_STAGE_DAM; + if (0 < (int)SVar11) { + do { + sVar10 = isStageUnlockedAtDifficulty + (selected_folder_num,stageid,DIFFICULTY_AGENT); + if (sVar10 == 3) { + amount += 1; + } + stageid += SP_STAGE_FACILITY; + } while (stageid != SVar11); + } + if (SVar11 == amount + SP_STAGE_FACILITY) { + unlock_stage_in_folder_on_difficulty + (selected_folder_num,(longlong)(int)(cheat + ~UNUSED_37),0,99999999); + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + } + } + } + } + return; +} + + + +void cheatDisplayMessageActivateCheat(CHEAT_IDS cheat) + +{ + uint uVar1; + u32 uVar3; + s32 players; + ulonglong uVar2; + int iVar4; + u8 *text; + BOOL BVar5; + f32 scale; + + uVar1 = (&D_8003F808)[cheat * 4]; + uVar3 = get_cur_playernum(); + players = get_num_players(); + if ((uVar1 & 0x10) == 0) { + if ((uVar1 & 0x20) == 0) { + cheatl_ARRAY_80079e30[cheat] = + cheatl_ARRAY_80079e30[cheat] & ~(byte)(1 << (uVar3 & 0x1f)); + } + else { + cheatl_ARRAY_80079e30[cheat] = 0; + } + } + if (true) { + switch(cheat) { + case CHEAT_INVINCIBILITY: + uVar2 = get_bondata_invincible_flag(); + if (uVar2 != 0) { + text = get_textptr_for_textID(0xb01e); + display_string_in_lower_left_corner((char *)text); + set_bondata_invincible_flag(0); + } + break; + case CHEAT_ALLGUNS: + iVar4 = get_BONDdata_allguns_flag(); + if (iVar4 != 0) { + text = get_textptr_for_textID(0xb01f); + display_string_in_lower_left_corner((char *)text); + set_BONDdata_allguns_flag(0); + } + break; + case CHEAT_LINEMODE: + set_linemode_flag(0); + break; + case cheats_cheat_invisibility: + iVar4 = get_invisible_to_guards_flag(); + if (iVar4 == 0) { + text = get_textptr_for_textID(0xb020); + display_string_in_lower_left_corner((char *)text); + set_invisible_to_guards_flag(1); + } + break; + case cheats_cheat_infinite_ammo: + text = get_textptr_for_textID(0xb022); + display_string_in_lower_left_corner((char *)text); + break; + case cheats_cheat_dk_mode: + text = get_textptr_for_textID(0xb023); + display_string_in_lower_left_corner((char *)text); + set_DKMode(0); + break; + case cheats_cheat_tiny_bond: + if ((players == 1) && (pPlayersPerm->player_perspective_height != 1.00000000)) { + text = get_textptr_for_textID(0xb024); + display_string_in_lower_left_corner((char *)text); + pPlayersPerm->player_perspective_height = 1.00000000; + if (pPlayer->ptr_char_objectinstance != 0) { + set_obj_instance_controller_scale(pPlayer->ptr_char_objectinstance,scale); + } + } + break; + case cheats_cheat_paintball: + text = get_textptr_for_textID(0xb025); + display_string_in_lower_left_corner((char *)text); + break; + case cheats_cheat_invisibility_mp: + set_curplayer_fade(300.00000000,1.00000000); + break; + case cheats_cheat_fast: + BVar5 = get_debug_fast_bond_flag(); + if (BVar5 != FALSE) { + text = get_textptr_for_textID(0xb027); + display_string_in_lower_left_corner((char *)text); + set_debug_fast_bond_flag(FALSE); + } + break; + case cheats_debug_pos: + BVar5 = get_debug_testingmanpos_flag(); + if (BVar5 != FALSE) { + set_debug_testingmanpos_flag(FALSE); + } + } + } + return; +} + + + +void cheatDisableAllCheats(void) + +{ + u32 numplayers; + PLAYER_ID playernum; + uint uVar1; + CHEAT_IDS cheat; + int iVar2; + ulonglong curplayer; + + numplayers = get_num_players(); + playernum = get_cur_playernum(); + curplayer = 0; + if (0 < (longlong)(int)numplayers) { + do { + set_cur_player((PLAYER_ID)curplayer); + iVar2 = -0x7ffc07e4; + cheat = CHEAT_EXTRA_MP_CHARS; + do { + if (((*(uint *)(iVar2 + -4) & 0x40) != 0) && + (uVar1 = cheatCheckIfOn(cheat), uVar1 != 0)) { + cheatDisplayMessageActivateCheat(cheat); + } + cheat += CHEAT_EXTRA_MP_CHARS; + iVar2 += 0x10; + } while (cheat != 0x4b); + curplayer = SEXT48((int)((PLAYER_ID)curplayer + PLAYER2)); + } while (curplayer != (longlong)(int)numplayers); + } + set_cur_player(playernum); + return; +} + + + +int cheatGetMenuTextPointer(CHEAT_IDS cheat) + +{ + u8 *textptr; + + if (*(TEXTFILESTRINGS *)(&D_8003F804 + cheat * 4) == 0) { + textptr = get_textptr_for_textID(0xb028); + } + else { + textptr = get_textptr_for_textID(*(TEXTFILESTRINGS *)(&D_8003F804 + cheat * 4)); + } + return (int)textptr; +} + + + +uint cheatCheckIfOn(CHEAT_IDS cheat) + +{ + u32 uVar1; + + uVar1 = get_cur_playernum(); + return (int)(uint)(byte)cheatl_ARRAY_80079e30[cheat] >> (uVar1 & 0x1f) & 1; +} + + + +void set_DKMode(s32 param_1) + +{ + int guardcount; + int curguard; + GUARDdata *guard; + f32 extraout_f12; + f32 extraout_f12_00; + f32 scale; + + guard = ptr_guard_data; + guardcount = get_numguards(); + curguard = 0; + scale = extraout_f12; + if (0 < guardcount) { + do { + if (guard->MODELdata_pointer != 0) { + set_obj_instance_controller_scale(guard->MODELdata_pointer,scale); + scale = extraout_f12_00; + } + curguard += 1; + guard = guard + 1; + } while (curguard != guardcount); + } + return; } @@ -107230,109 +106184,110 @@ proc_7F092890(short *param_1,short *param_2,short *param_3,float *param_4,float float *param_6,float *param_7,float *param_8) { - undefined8 uVar1; - double dVar2; - double dVar3; - double dVar4; - double dVar5; - double dVar6; - double dVar7; - double dVar8; - uint uVar9; - double dVar10; - double dVar11; - double dVar12; - double dVar13; - double dVar14; - double dVar15; - double dVar16; - double dVar17; - double dVar18; - double dVar19; - double dVar20; - double dVar21; - double dVar22; - double dVar23; - - dVar3 = (double)*param_7; - dVar6 = (double)param_7[1]; - dVar2 = (double)param_7[2]; - dVar10 = (double)((int)*param_2 - (int)*param_1); - dVar7 = (double)((int)param_2[1] - (int)param_1[1]); - dVar8 = (double)((int)param_2[2] - (int)param_1[2]); - dVar18 = dVar7 * (double)((int)param_3[2] - (int)param_2[2]); - dVar19 = dVar8 * (double)((int)param_3[1] - (int)param_2[1]); - dVar20 = dVar8 * (double)((int)*param_3 - (int)*param_2); - dVar21 = dVar10 * (double)((int)param_3[2] - (int)param_2[2]); - dVar14 = dVar18 - dVar19; - dVar22 = dVar10 * (double)((int)param_3[1] - (int)param_2[1]); - dVar23 = dVar7 * (double)((int)*param_3 - (int)*param_2); - dVar15 = dVar20 - dVar21; - dVar16 = dVar22 - dVar23; - if (dVar2 * dVar16 + dVar14 * dVar3 + dVar15 * dVar6 == - (double)((ulonglong)(dVar14 * dVar3) & 0xffffffff00000000)) { - uVar1 = 0; - } - else { - dVar23 = dVar23 - dVar22; - uVar1 = 0; - dVar17 = (double)((ulonglong)dVar16 & 0xffffffff00000000); - dVar22 = ((((((double)param_4[2] + (double)(int)param_1[2]) * dVar16 + - dVar14 * ((double)(int)*param_1 + (double)*param_4) + - dVar15 * ((double)(int)param_1[1] + (double)param_4[1])) - dVar14 * (double)*param_6 - ) - dVar15 * (double)param_6[1]) - (double)param_6[2] * dVar16) / - (dVar2 * dVar16 + dVar14 * dVar3 + dVar15 * dVar6); - dVar4 = dVar3 * dVar22 + (double)*param_6; - dVar11 = dVar6 * dVar22 + (double)param_6[1]; - dVar22 = dVar2 * dVar22 + (double)param_6[2]; - dVar12 = dVar4 - ((double)*param_4 + (double)(int)*param_1); - dVar13 = dVar11 - ((double)param_4[1] + (double)(int)param_1[1]); - dVar5 = dVar22 - ((double)param_4[2] + (double)(int)param_1[2]); - if (dVar23 == (double)((ulonglong)(double)(int)param_1[2] & 0xffffffff00000000)) { - dVar19 = dVar19 - dVar18; - if (dVar19 == (double)((ulonglong)dVar13 & 0xffffffff00000000)) { - dVar19 = (dVar5 * dVar10 - dVar8 * dVar12) / (dVar21 - dVar20); - } - else { - dVar19 = (dVar13 * dVar8 - dVar7 * dVar5) / dVar19; - } - } - else { - dVar19 = (dVar12 * dVar7 - dVar10 * dVar13) / dVar23; - } - if (dVar17 == dVar10) { - uVar9 = (uint)((ulonglong)(double)((int)param_3[1] - (int)param_1[1]) >> 0x20); - if (dVar17 == dVar7) { - uVar9 = (uint)((ulonglong)dVar5 >> 0x20); - dVar8 = (dVar5 - dVar19 * (double)((int)param_3[2] - (int)param_1[2])) / dVar8; - } - else { - dVar8 = (dVar13 - dVar19 * (double)((int)param_3[1] - (int)param_1[1])) / dVar7; - } - } - else { - uVar9 = (uint)((ulonglong)dVar12 >> 0x20); - dVar8 = (dVar12 - dVar19 * (double)((int)*param_3 - (int)*param_1)) / dVar10; - } - if (((dVar17 <= dVar8) && (dVar17 <= dVar19)) && - (dVar8 + dVar19 <= (double)((ulonglong)uVar9 << 0x20))) { - if (dVar17 <= (dVar22 - (double)param_5[2]) * dVar2 + - dVar3 * (dVar4 - (double)*param_5) + dVar6 * (dVar11 - (double)param_5[1])) { - uVar1 = 1; - *param_8 = (float)dVar4; - param_8[1] = (float)dVar11; - param_8[2] = (float)dVar22; - param_8[3] = (float)dVar14; - param_8[4] = (float)dVar15; - *(undefined2 *)((int)param_8 + 0x2a) = 0; - param_8[5] = (float)dVar16; - } - else { + undefined8 uVar1; + double dVar2; + double dVar3; + double dVar4; + double dVar5; + double dVar6; + double dVar7; + double dVar8; + uint uVar9; + double dVar10; + double dVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + + dVar3 = (double)*param_7; + dVar6 = (double)param_7[1]; + dVar2 = (double)param_7[2]; + dVar10 = (double)((int)*param_2 - (int)*param_1); + dVar7 = (double)((int)param_2[1] - (int)param_1[1]); + dVar8 = (double)((int)param_2[2] - (int)param_1[2]); + dVar18 = dVar7 * (double)((int)param_3[2] - (int)param_2[2]); + dVar19 = dVar8 * (double)((int)param_3[1] - (int)param_2[1]); + dVar20 = dVar8 * (double)((int)*param_3 - (int)*param_2); + dVar21 = dVar10 * (double)((int)param_3[2] - (int)param_2[2]); + dVar14 = dVar18 - dVar19; + dVar22 = dVar10 * (double)((int)param_3[1] - (int)param_2[1]); + dVar23 = dVar7 * (double)((int)*param_3 - (int)*param_2); + dVar15 = dVar20 - dVar21; + dVar16 = dVar22 - dVar23; + if (dVar2 * dVar16 + dVar14 * dVar3 + dVar15 * dVar6 == + (double)((ulonglong)(dVar14 * dVar3) & 0xffffffff00000000)) { uVar1 = 0; - } } - } - return uVar1; + else { + dVar23 = dVar23 - dVar22; + uVar1 = 0; + dVar17 = (double)((ulonglong)dVar16 & 0xffffffff00000000); + dVar22 = ((((((double)param_4[2] + (double)(int)param_1[2]) * dVar16 + + dVar14 * ((double)(int)*param_1 + (double)*param_4) + + dVar15 * ((double)(int)param_1[1] + (double)param_4[1])) - + dVar14 * (double)*param_6) - dVar15 * (double)param_6[1]) - + (double)param_6[2] * dVar16) / (dVar2 * dVar16 + dVar14 * dVar3 + dVar15 * dVar6); + dVar4 = dVar3 * dVar22 + (double)*param_6; + dVar11 = dVar6 * dVar22 + (double)param_6[1]; + dVar22 = dVar2 * dVar22 + (double)param_6[2]; + dVar12 = dVar4 - ((double)*param_4 + (double)(int)*param_1); + dVar13 = dVar11 - ((double)param_4[1] + (double)(int)param_1[1]); + dVar5 = dVar22 - ((double)param_4[2] + (double)(int)param_1[2]); + if (dVar23 == (double)((ulonglong)(double)(int)param_1[2] & 0xffffffff00000000)) { + dVar19 = dVar19 - dVar18; + if (dVar19 == (double)((ulonglong)dVar13 & 0xffffffff00000000)) { + dVar19 = (dVar5 * dVar10 - dVar8 * dVar12) / (dVar21 - dVar20); + } + else { + dVar19 = (dVar13 * dVar8 - dVar7 * dVar5) / dVar19; + } + } + else { + dVar19 = (dVar12 * dVar7 - dVar10 * dVar13) / dVar23; + } + if (dVar17 == dVar10) { + uVar9 = (uint)((ulonglong)(double)((int)param_3[1] - (int)param_1[1]) >> 0x20); + if (dVar17 == dVar7) { + uVar9 = (uint)((ulonglong)dVar5 >> 0x20); + dVar8 = (dVar5 - dVar19 * (double)((int)param_3[2] - (int)param_1[2])) / dVar8; + } + else { + dVar8 = (dVar13 - dVar19 * (double)((int)param_3[1] - (int)param_1[1])) / dVar7; + } + } + else { + uVar9 = (uint)((ulonglong)dVar12 >> 0x20); + dVar8 = (dVar12 - dVar19 * (double)((int)*param_3 - (int)*param_1)) / dVar10; + } + if (((dVar17 <= dVar8) && (dVar17 <= dVar19)) && + (dVar8 + dVar19 <= (double)((ulonglong)uVar9 << 0x20))) { + if (dVar17 <= (dVar22 - (double)param_5[2]) * dVar2 + + dVar3 * (dVar4 - (double)*param_5) + dVar6 * (dVar11 - (double)param_5[1]) + ) { + uVar1 = 1; + *param_8 = (float)dVar4; + param_8[1] = (float)dVar11; + param_8[2] = (float)dVar22; + param_8[3] = (float)dVar14; + param_8[4] = (float)dVar15; + *(undefined2 *)((int)param_8 + 0x2a) = 0; + param_8[5] = (float)dVar16; + } + else { + uVar1 = 0; + } + } + } + return uVar1; } @@ -107340,200 +106295,200 @@ proc_7F092890(short *param_1,short *param_2,short *param_3,float *param_4,float void proc_7F092E50(void) { - float fVar1; - ushort uVar2; - uint uVar3; - uint uVar4; - float fVar5; - - fVar5 = (float)clock_timer; - FLOAT_80079e80 = FLOAT_80079e80 + fVar5 * 0.25000000; - if (256.00000000 <= FLOAT_80079e80) { - FLOAT_80079e80 = FLOAT_80079e80 - 256.00000000; - } - if (FLOAT_80079e80 < 0.00000000) { - FLOAT_80079e80 = FLOAT_80079e80 + 256.00000000; - } - FLOAT_80079e84 = FLOAT_80079e84 + fVar5 * flt_80057510; - if (256.00000000 <= FLOAT_80079e84) { - FLOAT_80079e84 = FLOAT_80079e84 - 256.00000000; - } - if (FLOAT_80079e84 < 0.00000000) { - FLOAT_80079e84 = FLOAT_80079e84 + 256.00000000; - } - FLOAT_80079e88 = FLOAT_80079e88 + fVar5 * flt_80057518; - if (flt_80057514 <= FLOAT_80079e88) { - FLOAT_80079e88 = FLOAT_80079e88 - flt_80057514; - } - if (FLOAT_80079e88 < 0.00000000) { - FLOAT_80079e88 = FLOAT_80079e88 + flt_80057514; - } - if (false) { - fVar5 = ROUND(FLOAT_80079e80); - } - else { - fVar5 = FLOOR(FLOAT_80079e80); - } - uVar3 = (uint)fVar5; - if (false) { + float fVar1; + ushort uVar2; + uint uVar3; + uint uVar4; + float fVar5; + + fVar5 = (float)clock_timer; + FLOAT_80079e80 = FLOAT_80079e80 + fVar5 * 0.25000000; + if (256.00000000 <= FLOAT_80079e80) { + FLOAT_80079e80 = FLOAT_80079e80 - 256.00000000; + } + if (FLOAT_80079e80 < 0.00000000) { + FLOAT_80079e80 = FLOAT_80079e80 + 256.00000000; + } + FLOAT_80079e84 = FLOAT_80079e84 + fVar5 * flt_80057510; + if (256.00000000 <= FLOAT_80079e84) { + FLOAT_80079e84 = FLOAT_80079e84 - 256.00000000; + } + if (FLOAT_80079e84 < 0.00000000) { + FLOAT_80079e84 = FLOAT_80079e84 + 256.00000000; + } + FLOAT_80079e88 = FLOAT_80079e88 + fVar5 * flt_80057518; + if (flt_80057514 <= FLOAT_80079e88) { + FLOAT_80079e88 = FLOAT_80079e88 - flt_80057514; + } + if (FLOAT_80079e88 < 0.00000000) { + FLOAT_80079e88 = FLOAT_80079e88 + flt_80057514; + } if (false) { - fVar5 = ROUND(FLOAT_80079e80 - 2147483648.00000000); + fVar5 = ROUND(FLOAT_80079e80); } else { - fVar5 = FLOOR(FLOAT_80079e80 - 2147483648.00000000); + fVar5 = FLOOR(FLOAT_80079e80); } - if (false) goto LAB_7f093000; - uVar3 = (int)fVar5 | 0x80000000; - } - else { - if ((int)uVar3 < 0) { + uVar3 = (uint)fVar5; + if (false) { + if (false) { + fVar5 = ROUND(FLOAT_80079e80 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(FLOAT_80079e80 - 2147483648.00000000); + } + if (false) goto LAB_7f093000; + uVar3 = (int)fVar5 | 0x80000000; + } + else { + if ((int)uVar3 < 0) { LAB_7f093000: - uVar3 = 0xffffffff; + uVar3 = 0xffffffff; + } } - } - if (false) { - fVar5 = ROUND(FLOAT_80079e84); - } - else { - fVar5 = FLOOR(FLOAT_80079e84); - } - QWORD_8003fcd0._0_4_ = ((uVar3 ^ QWORD_8003fcd0._0_4_ >> 0xc) << 0x14) >> 8 ^ QWORD_8003fcd0._0_4_ - ; - if (false) { if (false) { - fVar5 = ROUND(FLOAT_80079e84 - 2147483648.00000000); + fVar5 = ROUND(FLOAT_80079e84); } else { - fVar5 = FLOOR(FLOAT_80079e84 - 2147483648.00000000); + fVar5 = FLOOR(FLOAT_80079e84); } - if (false) goto LAB_7f093098; - uVar2 = (ushort)(int)fVar5; - } - else { - uVar2 = (ushort)(int)fVar5; - if ((int)fVar5 < 0) { + QWORD_8003fcd0._0_4_ = + ((uVar3 ^ QWORD_8003fcd0._0_4_ >> 0xc) << 0x14) >> 8 ^ QWORD_8003fcd0._0_4_; + if (false) { + if (false) { + fVar5 = ROUND(FLOAT_80079e84 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(FLOAT_80079e84 - 2147483648.00000000); + } + if (false) goto LAB_7f093098; + uVar2 = (ushort)(int)fVar5; + } + else { + uVar2 = (ushort)(int)fVar5; + if ((int)fVar5 < 0) { LAB_7f093098: - uVar2 = 0xffff; + uVar2 = 0xffff; + } } - } - QWORD_8003fcd0._0_4_ = - QWORD_8003fcd0._0_4_ & 0xffff0000 | (uint)(uVar2 & 0xfff | QWORD_8003fcd0._2_2_ & 0xf000); - dword_8003FCD8._0_4_ = - (((int)FLOAT_80079e80 + 0x5aU & 0xff ^ dword_8003FCD8._0_4_ >> 0xc) << 0x14) >> 8 ^ - dword_8003FCD8._0_4_; - dword_8003FCD8._0_4_ = - dword_8003FCD8._0_4_ & 0xffff0000 | - (uint)((short)(int)FLOAT_80079e84 + 0x96U & 0xff | dword_8003FCD8._2_2_ & 0xf000); - fVar5 = sinf(FLOAT_80079e88); - fVar5 = fVar5 * 127.00000000 + 128.00000000; - if (false) { - fVar1 = ROUND(fVar5); - } - else { - fVar1 = FLOOR(fVar5); - } - uVar3 = (uint)fVar1; - if (false) { + QWORD_8003fcd0._0_4_ = + QWORD_8003fcd0._0_4_ & 0xffff0000 | (uint)(uVar2 & 0xfff | QWORD_8003fcd0._2_2_ & 0xf000); + dword_8003FCD8._0_4_ = + (((int)FLOAT_80079e80 + 0x5aU & 0xff ^ dword_8003FCD8._0_4_ >> 0xc) << 0x14) >> 8 ^ + dword_8003FCD8._0_4_; + dword_8003FCD8._0_4_ = + dword_8003FCD8._0_4_ & 0xffff0000 | + (uint)((short)(int)FLOAT_80079e84 + 0x96U & 0xff | dword_8003FCD8._2_2_ & 0xf000); + fVar5 = sinf(FLOAT_80079e88); + fVar5 = fVar5 * 127.00000000 + 128.00000000; if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); + fVar1 = ROUND(fVar5); } else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); + fVar1 = FLOOR(fVar5); } - if (false) goto LAB_7f0931bc; - uVar3 = (int)fVar5 | 0x80000000; - } - else { - if ((int)uVar3 < 0) { + uVar3 = (uint)fVar1; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0931bc; + uVar3 = (int)fVar5 | 0x80000000; + } + else { + if ((int)uVar3 < 0) { LAB_7f0931bc: - uVar3 = 0xffffffff; + uVar3 = 0xffffffff; + } } - } - if (false) { - fVar5 = ROUND(FLOAT_80079e80); - } - else { - fVar5 = FLOOR(FLOAT_80079e80); - } - uVar4 = (uint)fVar5; - QWORD_8003fce0._0_4_ = uVar3 | QWORD_8003fce0._0_4_ & 0xffffff00; - if (false) { if (false) { - fVar5 = ROUND(FLOAT_80079e80 - 2147483648.00000000); + fVar5 = ROUND(FLOAT_80079e80); } else { - fVar5 = FLOOR(FLOAT_80079e80 - 2147483648.00000000); + fVar5 = FLOOR(FLOAT_80079e80); } - if (false) goto LAB_7f093254; - uVar4 = (int)fVar5 | 0x80000000; - } - else { - if ((int)uVar4 < 0) { + uVar4 = (uint)fVar5; + QWORD_8003fce0._0_4_ = uVar3 | QWORD_8003fce0._0_4_ & 0xffffff00; + if (false) { + if (false) { + fVar5 = ROUND(FLOAT_80079e80 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(FLOAT_80079e80 - 2147483648.00000000); + } + if (false) goto LAB_7f093254; + uVar4 = (int)fVar5 | 0x80000000; + } + else { + if ((int)uVar4 < 0) { LAB_7f093254: - uVar4 = 0xffffffff; + uVar4 = 0xffffffff; + } } - } - if (false) { - fVar5 = ROUND(FLOAT_80079e84); - } - else { - fVar5 = FLOOR(FLOAT_80079e84); - } - QWORD_8003fd38._0_4_ = ((uVar4 ^ QWORD_8003fd38._0_4_ >> 0xc) << 0x14) >> 8 ^ QWORD_8003fd38._0_4_ - ; - if (false) { if (false) { - fVar5 = ROUND(FLOAT_80079e84 - 2147483648.00000000); + fVar5 = ROUND(FLOAT_80079e84); } else { - fVar5 = FLOOR(FLOAT_80079e84 - 2147483648.00000000); + fVar5 = FLOOR(FLOAT_80079e84); } - if (false) goto LAB_7f0932ec; - uVar2 = (ushort)(int)fVar5; - } - else { - uVar2 = (ushort)(int)fVar5; - if ((int)fVar5 < 0) { + QWORD_8003fd38._0_4_ = + ((uVar4 ^ QWORD_8003fd38._0_4_ >> 0xc) << 0x14) >> 8 ^ QWORD_8003fd38._0_4_; + if (false) { + if (false) { + fVar5 = ROUND(FLOAT_80079e84 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(FLOAT_80079e84 - 2147483648.00000000); + } + if (false) goto LAB_7f0932ec; + uVar2 = (ushort)(int)fVar5; + } + else { + uVar2 = (ushort)(int)fVar5; + if ((int)fVar5 < 0) { LAB_7f0932ec: - uVar2 = 0xffff; + uVar2 = 0xffff; + } } - } - QWORD_8003fd38._0_4_ = - QWORD_8003fd38._0_4_ & 0xffff0000 | (uint)(uVar2 & 0xfff | QWORD_8003fd38._2_2_ & 0xf000); - dword_8003FD40._0_4_ = - (((int)FLOAT_80079e80 + 0x5aU & 0xff ^ dword_8003FD40._0_4_ >> 0xc) << 0x14) >> 8 ^ - dword_8003FD40._0_4_; - dword_8003FD40._0_4_ = - dword_8003FD40._0_4_ & 0xffff0000 | - (uint)((short)(int)FLOAT_80079e84 + 0x96U & 0xff | dword_8003FD40._2_2_ & 0xf000); - fVar5 = sinf(FLOAT_80079e88); - fVar5 = fVar5 * 127.00000000 + 128.00000000; - if (false) { - fVar1 = ROUND(fVar5); - } - else { - fVar1 = FLOOR(fVar5); - } - uVar3 = (uint)fVar1; - if (false) { + QWORD_8003fd38._0_4_ = + QWORD_8003fd38._0_4_ & 0xffff0000 | (uint)(uVar2 & 0xfff | QWORD_8003fd38._2_2_ & 0xf000); + dword_8003FD40._0_4_ = + (((int)FLOAT_80079e80 + 0x5aU & 0xff ^ dword_8003FD40._0_4_ >> 0xc) << 0x14) >> 8 ^ + dword_8003FD40._0_4_; + dword_8003FD40._0_4_ = + dword_8003FD40._0_4_ & 0xffff0000 | + (uint)((short)(int)FLOAT_80079e84 + 0x96U & 0xff | dword_8003FD40._2_2_ & 0xf000); + fVar5 = sinf(FLOAT_80079e88); + fVar5 = fVar5 * 127.00000000 + 128.00000000; if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); + fVar1 = ROUND(fVar5); } else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); + fVar1 = FLOOR(fVar5); } - if (true) { - uVar3 = (int)fVar5 | 0x80000000; - goto LAB_7f093418; + uVar3 = (uint)fVar1; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (true) { + uVar3 = (int)fVar5 | 0x80000000; + goto LAB_7f093418; + } } - } - else { - if (-1 < (int)uVar3) goto LAB_7f093418; - } - uVar3 = 0xffffffff; + else { + if (-1 < (int)uVar3) goto LAB_7f093418; + } + uVar3 = 0xffffffff; LAB_7f093418: - QWORD_8003fd48._0_4_ = uVar3 | QWORD_8003fce0._0_4_ & 0xffffff00; - return; + QWORD_8003fd48._0_4_ = uVar3 | QWORD_8003fce0._0_4_ & 0xffffff00; + return; } @@ -107541,66 +106496,66 @@ LAB_7f093418: undefined4 * proc_7F09343C(undefined4 *param_1,longlong param_2) { - float fVar1; - float fVar2; - uint uVar3; - - if (param_2 != 0) { - *param_1 = 0x6000000; - param_1[1] = 0x8003fcc0; - return param_1 + 2; - } - param_1[1] = 82000; - *param_1 = 0xf5100800; - param_1[3] = 0x1014050; - param_1[2] = 0xf5100800; - param_1[4] = 0xf2000000; - param_1[5] = 0; - param_1[7] = 0x1000000; - param_1[6] = 0xf205a096; - fVar2 = sinf(FLOAT_80079e88); - fVar2 = fVar2 * 127.00000000 + 128.00000000; - if (false) { - fVar1 = ROUND(fVar2); - } - else { - fVar1 = FLOOR(fVar2); - } - uVar3 = (uint)fVar1; - if (true) { - if (-1 < (int)uVar3) goto LAB_7f0935a8; - } - else { + float fVar1; + float fVar2; + uint uVar3; + + if (param_2 != 0) { + *param_1 = 0x6000000; + param_1[1] = 0x8003fcc0; + return param_1 + 2; + } + param_1[1] = 82000; + *param_1 = 0xf5100800; + param_1[3] = 0x1014050; + param_1[2] = 0xf5100800; + param_1[4] = 0xf2000000; + param_1[5] = 0; + param_1[7] = 0x1000000; + param_1[6] = 0xf205a096; + fVar2 = sinf(FLOAT_80079e88); + fVar2 = fVar2 * 127.00000000 + 128.00000000; if (false) { - fVar2 = ROUND(fVar2 - 2147483648.00000000); + fVar1 = ROUND(fVar2); } else { - fVar2 = FLOOR(fVar2 - 2147483648.00000000); + fVar1 = FLOOR(fVar2); } + uVar3 = (uint)fVar1; if (true) { - uVar3 = (int)fVar2 | 0x80000000; - goto LAB_7f0935a8; + if (-1 < (int)uVar3) goto LAB_7f0935a8; } - } - uVar3 = 0xffffffff; + else { + if (false) { + fVar2 = ROUND(fVar2 - 2147483648.00000000); + } + else { + fVar2 = FLOOR(fVar2 - 2147483648.00000000); + } + if (true) { + uVar3 = (int)fVar2 | 0x80000000; + goto LAB_7f0935a8; + } + } + uVar3 = 0xffffffff; LAB_7f0935a8: - param_1[8] = uVar3 & 0xff | 0xfa000000; - param_1[9] = 0xffffffff; - param_1[0xb] = 0; - param_1[10] = 0xba001102; - param_1[0xd] = 0x2000; - param_1[0xc] = 0xba000c02; - param_1[0xf] = 0x1f1093ff; - param_1[0xe] = 0xfc272c04; - param_1[0x11] = 0xc192078; - param_1[0x10] = 0xb900031d; - param_1[0x12] = 0xba001001; - param_1[0x13] = 0; - param_1[0x15] = 0x100000; - param_1[0x14] = 0xba001402; - param_1[0x16] = 0xb7000000; - param_1[0x17] = 0x2000; - return param_1 + 0x18; + param_1[8] = uVar3 & 0xff | 0xfa000000; + param_1[9] = 0xffffffff; + param_1[0xb] = 0; + param_1[10] = 0xba001102; + param_1[0xd] = 0x2000; + param_1[0xc] = 0xba000c02; + param_1[0xf] = 0x1f1093ff; + param_1[0xe] = 0xfc272c04; + param_1[0x11] = 0xc192078; + param_1[0x10] = 0xb900031d; + param_1[0x12] = 0xba001001; + param_1[0x13] = 0; + param_1[0x15] = 0x100000; + param_1[0x14] = 0xba001402; + param_1[0x16] = 0xb7000000; + param_1[0x17] = 0x2000; + return param_1 + 0x18; } @@ -107608,66 +106563,66 @@ LAB_7f0935a8: undefined4 * proc_7F09365C(undefined4 *param_1,longlong param_2) { - float fVar1; - float fVar2; - uint uVar3; - - if (param_2 != 0) { - *param_1 = 0x6000000; - param_1[1] = 0x8003fd28; - return param_1 + 2; - } - param_1[1] = 82000; - *param_1 = 0xf5480400; - param_1[3] = 0x1014050; - param_1[2] = 0xf5480400; - param_1[4] = 0xf2000000; - param_1[5] = 0; - param_1[7] = 0x1000000; - param_1[6] = 0xf205a096; - fVar2 = sinf(FLOAT_80079e88); - fVar2 = fVar2 * 127.00000000 + 128.00000000; - if (false) { - fVar1 = ROUND(fVar2); - } - else { - fVar1 = FLOOR(fVar2); - } - uVar3 = (uint)fVar1; - if (true) { - if (-1 < (int)uVar3) goto LAB_7f0937c8; - } - else { + float fVar1; + float fVar2; + uint uVar3; + + if (param_2 != 0) { + *param_1 = 0x6000000; + param_1[1] = 0x8003fd28; + return param_1 + 2; + } + param_1[1] = 82000; + *param_1 = 0xf5480400; + param_1[3] = 0x1014050; + param_1[2] = 0xf5480400; + param_1[4] = 0xf2000000; + param_1[5] = 0; + param_1[7] = 0x1000000; + param_1[6] = 0xf205a096; + fVar2 = sinf(FLOAT_80079e88); + fVar2 = fVar2 * 127.00000000 + 128.00000000; if (false) { - fVar2 = ROUND(fVar2 - 2147483648.00000000); + fVar1 = ROUND(fVar2); } else { - fVar2 = FLOOR(fVar2 - 2147483648.00000000); + fVar1 = FLOOR(fVar2); } + uVar3 = (uint)fVar1; if (true) { - uVar3 = (int)fVar2 | 0x80000000; - goto LAB_7f0937c8; + if (-1 < (int)uVar3) goto LAB_7f0937c8; } - } - uVar3 = 0xffffffff; + else { + if (false) { + fVar2 = ROUND(fVar2 - 2147483648.00000000); + } + else { + fVar2 = FLOOR(fVar2 - 2147483648.00000000); + } + if (true) { + uVar3 = (int)fVar2 | 0x80000000; + goto LAB_7f0937c8; + } + } + uVar3 = 0xffffffff; LAB_7f0937c8: - param_1[8] = uVar3 & 0xff | 0xfa000000; - param_1[9] = 0xffffffff; - param_1[0xb] = 0; - param_1[10] = 0xba001102; - param_1[0xd] = 0x2000; - param_1[0xc] = 0xba000c02; - param_1[0xf] = 0x1f1093ff; - param_1[0xe] = 0xfc272c04; - param_1[0x11] = 0xc192078; - param_1[0x10] = 0xb900031d; - param_1[0x12] = 0xba001001; - param_1[0x13] = 0; - param_1[0x15] = 0x100000; - param_1[0x14] = 0xba001402; - param_1[0x16] = 0xb7000000; - param_1[0x17] = 0x2000; - return param_1 + 0x18; + param_1[8] = uVar3 & 0xff | 0xfa000000; + param_1[9] = 0xffffffff; + param_1[0xb] = 0; + param_1[10] = 0xba001102; + param_1[0xd] = 0x2000; + param_1[0xc] = 0xba000c02; + param_1[0xf] = 0x1f1093ff; + param_1[0xe] = 0xfc272c04; + param_1[0x11] = 0xc192078; + param_1[0x10] = 0xb900031d; + param_1[0x12] = 0xba001001; + param_1[0x13] = 0; + param_1[0x15] = 0x100000; + param_1[0x14] = 0xba001402; + param_1[0x16] = 0xb7000000; + param_1[0x17] = 0x2000; + return param_1 + 0x18; } @@ -107677,25 +106632,25 @@ LAB_7f0937c8: void proc_7F093880(void) { - undefined4 *puVar1; - float *in_a2_lo; - f32 fVar2; - float in_f12; - float extraout_f12; - float in_f14; - float fStack12; - float fStack8; - float *pfStack4; - - pfStack4 = (float *)proc_7F078444(); - fVar2 = getPlayer_c_screenleft(); - fStack12 = (float)fVar2 + in_f12; - fVar2 = getPlayer_c_screentop(); - puVar1 = get_ptr_currentdata(); - fStack8 = (float)puVar1[0xe] + in_f14 + (float)fVar2; - proc_7F077EEC(&fStack12,in_a2_lo,extraout_f12); - proc_7F0583D8(pfStack4,in_a2_lo); - return; + undefined4 *puVar1; + float *in_a2_lo; + f32 fVar2; + float in_f12; + float extraout_f12; + float in_f14; + float fStack12; + float fStack8; + float *pfStack4; + + pfStack4 = (float *)get_BONDdata_field_10D4(); + fVar2 = getPlayer_c_screenleft(); + fStack12 = (float)fVar2 + in_f12; + fVar2 = getPlayer_c_screentop(); + puVar1 = get_ptr_currentdata(); + fStack8 = (float)puVar1[0xe] + in_f14 + (float)fVar2; + proc_7F077EEC(&fStack12,in_a2_lo,extraout_f12); + proc_7F0583D8(pfStack4,in_a2_lo); + return; } @@ -107703,43 +106658,43 @@ void proc_7F093880(void) undefined8 proc_7F0938FC(float *param_1,float *param_2,float *param_3) { - xyzpoint *pxVar2; - undefined8 uVar1; - undefined4 *puVar3; - float fVar4; - float fVar5; - float fVar6; - - pxVar2 = get_BONDdata_position(); - fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1 + flt_80057520); - fVar6 = 1.00000000; - uVar1 = 0; - fVar4 = (param_1[1] + param_1[1]) / fVar4; - if (fVar4 <= 1.00000000) { - fVar6 = fVar4; - } - *param_3 = 1.00000000 - fVar6; - fVar6 = flt_80057524; - if (param_1[1] != 0.00000000) { - fVar6 = param_1[1]; - } - if (0.00000000 < fVar6) { - puVar3 = get_ptr_currentdata(); - fVar5 = ((float)puVar3[3] - pxVar2->y) / fVar6; - fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1); - if (flt_80057528 < fVar4 * fVar5) { - fVar5 = fVar5 * (flt_80057528 / (fVar4 * fVar5)); - fVar4 = *param_1; + xyzpoint *pxVar2; + undefined8 uVar1; + undefined4 *puVar3; + float fVar4; + float fVar5; + float fVar6; + + pxVar2 = get_BONDdata_position(); + fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1 + flt_80057520); + fVar6 = 1.00000000; + uVar1 = 0; + fVar4 = (param_1[1] + param_1[1]) / fVar4; + if (fVar4 <= 1.00000000) { + fVar6 = fVar4; } - else { - fVar4 = *param_1; + *param_3 = 1.00000000 - fVar6; + fVar6 = flt_80057524; + if (param_1[1] != 0.00000000) { + fVar6 = param_1[1]; } - uVar1 = 1; - *param_2 = fVar4 * fVar5 + pxVar2->x; - param_2[1] = pxVar2->y + fVar5 * fVar6; - param_2[2] = param_1[2] * fVar5 + pxVar2->z; - } - return uVar1; + if (0.00000000 < fVar6) { + puVar3 = get_ptr_currentdata(); + fVar5 = ((float)puVar3[3] - (float)pxVar2->y) / fVar6; + fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1); + if (flt_80057528 < fVar4 * fVar5) { + fVar5 = fVar5 * (flt_80057528 / (fVar4 * fVar5)); + fVar4 = *param_1; + } + else { + fVar4 = *param_1; + } + uVar1 = 1; + *param_2 = fVar4 * fVar5 + (float)pxVar2->x; + param_2[1] = (float)pxVar2->y + fVar5 * fVar6; + param_2[2] = param_1[2] * fVar5 + (float)pxVar2->z; + } + return uVar1; } @@ -107747,43 +106702,43 @@ undefined8 proc_7F0938FC(float *param_1,float *param_2,float *param_3) undefined8 proc_7F093A78(float *param_1,float *param_2,float *param_3) { - xyzpoint *pxVar2; - undefined8 uVar1; - undefined4 *puVar3; - float fVar4; - float fVar5; - float fVar6; - - pxVar2 = get_BONDdata_position(); - fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1 + flt_8005752C); - fVar6 = 1.00000000; - uVar1 = 0; - fVar4 = (param_1[1] * -2.00000000) / fVar4; - if (fVar4 <= 1.00000000) { - fVar6 = fVar4; - } - *param_3 = 1.00000000 - fVar6; - fVar6 = flt_80057530; - if (param_1[1] != 0.00000000) { - fVar6 = param_1[1]; - } - if (fVar6 < 0.00000000) { - puVar3 = get_ptr_currentdata(); - fVar5 = ((float)puVar3[9] - pxVar2->y) / fVar6; - fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1); - if (flt_80057534 < fVar4 * fVar5) { - fVar5 = fVar5 * (flt_80057534 / (fVar4 * fVar5)); - fVar4 = *param_1; + xyzpoint *pxVar2; + undefined8 uVar1; + undefined4 *puVar3; + float fVar4; + float fVar5; + float fVar6; + + pxVar2 = get_BONDdata_position(); + fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1 + flt_8005752C); + fVar6 = 1.00000000; + uVar1 = 0; + fVar4 = (param_1[1] * -2.00000000) / fVar4; + if (fVar4 <= 1.00000000) { + fVar6 = fVar4; } - else { - fVar4 = *param_1; + *param_3 = 1.00000000 - fVar6; + fVar6 = flt_80057530; + if (param_1[1] != 0.00000000) { + fVar6 = param_1[1]; } - uVar1 = 1; - *param_2 = fVar4 * fVar5 + pxVar2->x; - param_2[1] = pxVar2->y + fVar5 * fVar6; - param_2[2] = param_1[2] * fVar5 + pxVar2->z; - } - return uVar1; + if (fVar6 < 0.00000000) { + puVar3 = get_ptr_currentdata(); + fVar5 = ((float)puVar3[9] - (float)pxVar2->y) / fVar6; + fVar4 = sqrtf(param_1[2] * param_1[2] + *param_1 * *param_1); + if (flt_80057534 < fVar4 * fVar5) { + fVar5 = fVar5 * (flt_80057534 / (fVar4 * fVar5)); + fVar4 = *param_1; + } + else { + fVar4 = *param_1; + } + uVar1 = 1; + *param_2 = fVar4 * fVar5 + (float)pxVar2->x; + param_2[1] = (float)pxVar2->y + fVar5 * fVar6; + param_2[2] = param_1[2] * fVar5 + (float)pxVar2->z; + } + return uVar1; } @@ -107791,20 +106746,20 @@ undefined8 proc_7F093A78(float *param_1,float *param_2,float *param_3) void proc_7F093BFC(float *param_1,float *param_2,float *param_3) { - float fVar1; - float fVar2; - float fVar3; - float fVar4; - - fVar1 = param_1[1]; - fVar2 = param_2[1]; - fVar4 = *param_1; - fVar3 = *param_2; - param_3[1] = 0.00000000; - fVar1 = fVar1 / (fVar1 - fVar2); - *param_3 = (fVar3 - fVar4) * fVar1 + fVar4; - param_3[2] = (param_2[2] - param_1[2]) * fVar1 + param_1[2]; - return; + float fVar1; + float fVar2; + float fVar3; + float fVar4; + + fVar1 = param_1[1]; + fVar2 = param_2[1]; + fVar4 = *param_1; + fVar3 = *param_2; + param_3[1] = 0.00000000; + fVar1 = fVar1 / (fVar1 - fVar2); + *param_3 = (fVar3 - fVar4) * fVar1 + fVar4; + param_3[2] = (param_2[2] - param_1[2]) * fVar1 + param_1[2]; + return; } @@ -107812,21 +106767,21 @@ void proc_7F093BFC(float *param_1,float *param_2,float *param_3) float proc_7F093C48(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) { - if (param_1 < param_2) { - return param_2; - } - if (param_1 <= param_5) { - return param_1; - } - return param_5; + if (param_1 < param_2) { + return param_2; + } + if (param_1 <= param_5) { + return param_1; + } + return param_5; } -float proc_7F093C88(float param_1) +float addpoint5tofloat(float param_1) { - return (float)(int)(param_1 + 0.50000000); + return (float)(int)(param_1 + 0.50000000); } @@ -107834,116 +106789,116 @@ float proc_7F093C88(float param_1) void proc_7F093CB0(int param_1,float param_2) { - float fVar1; - undefined4 *puVar2; - float in_a1_lo; - undefined uVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - - puVar2 = get_ptr_currentdata(); - fVar5 = (float)(uint)*(byte *)(puVar2 + 2); - if (false) { - fVar5 = fVar5 + 4294967296.00000000; - } - puVar2 = get_ptr_currentdata(); - fVar7 = (float)(uint)*(byte *)((int)puVar2 + 9); - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - puVar2 = get_ptr_currentdata(); - fVar6 = (float)(uint)*(byte *)((int)puVar2 + 10); - if (false) { - fVar6 = fVar6 + 4294967296.00000000; - } - puVar2 = get_ptr_currentdata(); - fVar4 = 1.00000000 - in_a1_lo; - fVar5 = (float)puVar2[5] * (1.00000000 - fVar5 / 255.00000000) * fVar4 + fVar5; - if (false) { - fVar1 = ROUND(fVar5); - } - else { - fVar1 = FLOOR(fVar5); - } - uVar3 = (undefined)(int)fVar1; - if (true) { - if ((int)fVar1 < 0) goto LAB_7f093de0; - } - else { + float fVar1; + undefined4 *puVar2; + float in_a1_lo; + undefined uVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + + puVar2 = get_ptr_currentdata(); + fVar5 = (float)(uint)*(byte *)(puVar2 + 2); if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); + fVar5 = fVar5 + 4294967296.00000000; + } + puVar2 = get_ptr_currentdata(); + fVar7 = (float)(uint)*(byte *)((int)puVar2 + 9); + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + puVar2 = get_ptr_currentdata(); + fVar6 = (float)(uint)*(byte *)((int)puVar2 + 10); + if (false) { + fVar6 = fVar6 + 4294967296.00000000; + } + puVar2 = get_ptr_currentdata(); + fVar4 = 1.00000000 - in_a1_lo; + fVar5 = (float)puVar2[5] * (1.00000000 - fVar5 / 255.00000000) * fVar4 + fVar5; + if (false) { + fVar1 = ROUND(fVar5); } else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); + fVar1 = FLOOR(fVar5); } - if (false) { + uVar3 = (undefined)(int)fVar1; + if (true) { + if ((int)fVar1 < 0) goto LAB_7f093de0; + } + else { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) { LAB_7f093de0: - uVar3 = 0xff; + uVar3 = 0xff; + } + else { + uVar3 = (undefined)(int)fVar5; + } } - else { - uVar3 = (undefined)(int)fVar5; - } - } - *(undefined *)(param_1 + 0x14) = uVar3; - puVar2 = get_ptr_currentdata(); - fVar7 = (float)puVar2[6] * (1.00000000 - fVar7 / 255.00000000) * fVar4 + fVar7; - if (false) { - fVar5 = ROUND(fVar7); - } - else { - fVar5 = FLOOR(fVar7); - } - uVar3 = (undefined)(int)fVar5; - if (true) { - if ((int)fVar5 < 0) goto LAB_7f093ea8; - } - else { + *(undefined *)(param_1 + 0x14) = uVar3; + puVar2 = get_ptr_currentdata(); + fVar7 = (float)puVar2[6] * (1.00000000 - fVar7 / 255.00000000) * fVar4 + fVar7; if (false) { - fVar5 = ROUND(fVar7 - 2147483648.00000000); + fVar5 = ROUND(fVar7); } else { - fVar5 = FLOOR(fVar7 - 2147483648.00000000); + fVar5 = FLOOR(fVar7); } - if (false) { -LAB_7f093ea8: - uVar3 = 0xff; - } - else { - uVar3 = (undefined)(int)fVar5; - } - } - *(undefined *)(param_1 + 0x15) = uVar3; - puVar2 = get_ptr_currentdata(); - fVar6 = (float)puVar2[7] * (1.00000000 - fVar6 / 255.00000000) * fVar4 + fVar6; - if (false) { - fVar5 = ROUND(fVar6); - } - else { - fVar5 = FLOOR(fVar6); - } - if (true) { uVar3 = (undefined)(int)fVar5; - if (-1 < (int)fVar5) goto LAB_7f093f88; - } - else { - if (false) { - fVar5 = ROUND(fVar6 - 2147483648.00000000); + if (true) { + if ((int)fVar5 < 0) goto LAB_7f093ea8; } else { - fVar5 = FLOOR(fVar6 - 2147483648.00000000); + if (false) { + fVar5 = ROUND(fVar7 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar7 - 2147483648.00000000); + } + if (false) { +LAB_7f093ea8: + uVar3 = 0xff; + } + else { + uVar3 = (undefined)(int)fVar5; + } + } + *(undefined *)(param_1 + 0x15) = uVar3; + puVar2 = get_ptr_currentdata(); + fVar6 = (float)puVar2[7] * (1.00000000 - fVar6 / 255.00000000) * fVar4 + fVar6; + if (false) { + fVar5 = ROUND(fVar6); + } + else { + fVar5 = FLOOR(fVar6); } if (true) { - uVar3 = (undefined)(int)fVar5; - goto LAB_7f093f88; + uVar3 = (undefined)(int)fVar5; + if (-1 < (int)fVar5) goto LAB_7f093f88; } - } - uVar3 = 0xff; + else { + if (false) { + fVar5 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar6 - 2147483648.00000000); + } + if (true) { + uVar3 = (undefined)(int)fVar5; + goto LAB_7f093f88; + } + } + uVar3 = 0xff; LAB_7f093f88: - *(undefined *)(param_1 + 0x16) = uVar3; - *(undefined *)(param_1 + 0x17) = 0xff; - return; + *(undefined *)(param_1 + 0x16) = uVar3; + *(undefined *)(param_1 + 0x17) = 0xff; + return; } @@ -107951,116 +106906,116 @@ LAB_7f093f88: void proc_7F093FA4(int param_1,float param_2) { - float fVar1; - undefined4 *puVar2; - float in_a1_lo; - undefined uVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - - puVar2 = get_ptr_currentdata(); - fVar5 = (float)(uint)*(byte *)(puVar2 + 2); - if (false) { - fVar5 = fVar5 + 4294967296.00000000; - } - puVar2 = get_ptr_currentdata(); - fVar7 = (float)(uint)*(byte *)((int)puVar2 + 9); - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - puVar2 = get_ptr_currentdata(); - fVar6 = (float)(uint)*(byte *)((int)puVar2 + 10); - if (false) { - fVar6 = fVar6 + 4294967296.00000000; - } - puVar2 = get_ptr_currentdata(); - fVar4 = 1.00000000 - in_a1_lo; - fVar5 = (float)puVar2[0xb] * (1.00000000 - fVar5 / 255.00000000) * fVar4 + fVar5; - if (false) { - fVar1 = ROUND(fVar5); - } - else { - fVar1 = FLOOR(fVar5); - } - uVar3 = (undefined)(int)fVar1; - if (true) { - if ((int)fVar1 < 0) goto LAB_7f0940d4; - } - else { + float fVar1; + undefined4 *puVar2; + float in_a1_lo; + undefined uVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + + puVar2 = get_ptr_currentdata(); + fVar5 = (float)(uint)*(byte *)(puVar2 + 2); if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); + fVar5 = fVar5 + 4294967296.00000000; + } + puVar2 = get_ptr_currentdata(); + fVar7 = (float)(uint)*(byte *)((int)puVar2 + 9); + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + puVar2 = get_ptr_currentdata(); + fVar6 = (float)(uint)*(byte *)((int)puVar2 + 10); + if (false) { + fVar6 = fVar6 + 4294967296.00000000; + } + puVar2 = get_ptr_currentdata(); + fVar4 = 1.00000000 - in_a1_lo; + fVar5 = (float)puVar2[0xb] * (1.00000000 - fVar5 / 255.00000000) * fVar4 + fVar5; + if (false) { + fVar1 = ROUND(fVar5); } else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); + fVar1 = FLOOR(fVar5); } - if (false) { + uVar3 = (undefined)(int)fVar1; + if (true) { + if ((int)fVar1 < 0) goto LAB_7f0940d4; + } + else { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) { LAB_7f0940d4: - uVar3 = 0xff; + uVar3 = 0xff; + } + else { + uVar3 = (undefined)(int)fVar5; + } } - else { - uVar3 = (undefined)(int)fVar5; - } - } - *(undefined *)(param_1 + 0x14) = uVar3; - puVar2 = get_ptr_currentdata(); - fVar7 = (float)puVar2[0xc] * (1.00000000 - fVar7 / 255.00000000) * fVar4 + fVar7; - if (false) { - fVar5 = ROUND(fVar7); - } - else { - fVar5 = FLOOR(fVar7); - } - uVar3 = (undefined)(int)fVar5; - if (true) { - if ((int)fVar5 < 0) goto LAB_7f09419c; - } - else { + *(undefined *)(param_1 + 0x14) = uVar3; + puVar2 = get_ptr_currentdata(); + fVar7 = (float)puVar2[0xc] * (1.00000000 - fVar7 / 255.00000000) * fVar4 + fVar7; if (false) { - fVar5 = ROUND(fVar7 - 2147483648.00000000); + fVar5 = ROUND(fVar7); } else { - fVar5 = FLOOR(fVar7 - 2147483648.00000000); + fVar5 = FLOOR(fVar7); } - if (false) { -LAB_7f09419c: - uVar3 = 0xff; - } - else { - uVar3 = (undefined)(int)fVar5; - } - } - *(undefined *)(param_1 + 0x15) = uVar3; - puVar2 = get_ptr_currentdata(); - fVar6 = (float)puVar2[0xd] * (1.00000000 - fVar6 / 255.00000000) * fVar4 + fVar6; - if (false) { - fVar5 = ROUND(fVar6); - } - else { - fVar5 = FLOOR(fVar6); - } - if (true) { uVar3 = (undefined)(int)fVar5; - if (-1 < (int)fVar5) goto LAB_7f09427c; - } - else { - if (false) { - fVar5 = ROUND(fVar6 - 2147483648.00000000); + if (true) { + if ((int)fVar5 < 0) goto LAB_7f09419c; } else { - fVar5 = FLOOR(fVar6 - 2147483648.00000000); + if (false) { + fVar5 = ROUND(fVar7 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar7 - 2147483648.00000000); + } + if (false) { +LAB_7f09419c: + uVar3 = 0xff; + } + else { + uVar3 = (undefined)(int)fVar5; + } + } + *(undefined *)(param_1 + 0x15) = uVar3; + puVar2 = get_ptr_currentdata(); + fVar6 = (float)puVar2[0xd] * (1.00000000 - fVar6 / 255.00000000) * fVar4 + fVar6; + if (false) { + fVar5 = ROUND(fVar6); + } + else { + fVar5 = FLOOR(fVar6); } if (true) { - uVar3 = (undefined)(int)fVar5; - goto LAB_7f09427c; + uVar3 = (undefined)(int)fVar5; + if (-1 < (int)fVar5) goto LAB_7f09427c; } - } - uVar3 = 0xff; + else { + if (false) { + fVar5 = ROUND(fVar6 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar6 - 2147483648.00000000); + } + if (true) { + uVar3 = (undefined)(int)fVar5; + goto LAB_7f09427c; + } + } + uVar3 = 0xff; LAB_7f09427c: - *(undefined *)(param_1 + 0x16) = uVar3; - *(undefined *)(param_1 + 0x17) = 0xff; - return; + *(undefined *)(param_1 + 0x16) = uVar3; + *(undefined *)(param_1 + 0x17) = 0xff; + return; } @@ -108068,76 +107023,76 @@ LAB_7f09427c: uint proc_7F094298(float param_1) { - float fVar1; - float fVar2; - - fVar1 = flt_80057538; - if (param_1 <= flt_80057538) { - fVar1 = param_1; - } - fVar2 = flt_8005753C; - if (flt_8005753C <= fVar1) { - fVar2 = fVar1; - } - if (fVar2 < 0.00000000) { - fVar2 = fVar2 * -65536.00000000; + float fVar1; + float fVar2; + + fVar1 = flt_80057538; + if (param_1 <= flt_80057538) { + fVar1 = param_1; + } + fVar2 = flt_8005753C; + if (flt_8005753C <= fVar1) { + fVar2 = fVar1; + } + if (fVar2 < 0.00000000) { + fVar2 = fVar2 * -65536.00000000; + if (false) { + fVar1 = ROUND(fVar2); + } + else { + fVar1 = FLOOR(fVar2); + } + if (false) { + if (false) { + fVar1 = ROUND(fVar2 - 2147483648.00000000); + } + else { + fVar1 = FLOOR(fVar2 - 2147483648.00000000); + } + if (true) { + return -((int)fVar1 | 0x80000000U); + } + } + else { + if (-1 < (int)fVar1) { + return (uint)-(int)fVar1; + } + } + return 1; + } + fVar2 = fVar2 * 65536.00000000; if (false) { - fVar1 = ROUND(fVar2); + fVar1 = ROUND(fVar2); } else { - fVar1 = FLOOR(fVar2); + fVar1 = FLOOR(fVar2); } if (false) { - if (false) { - fVar1 = ROUND(fVar2 - 2147483648.00000000); - } - else { - fVar1 = FLOOR(fVar2 - 2147483648.00000000); - } - if (true) { - return -((int)fVar1 | 0x80000000U); - } + if (false) { + fVar1 = ROUND(fVar2 - 2147483648.00000000); + } + else { + fVar1 = FLOOR(fVar2 - 2147483648.00000000); + } + if (true) { + return (int)fVar1 | 0x80000000; + } } else { - if (-1 < (int)fVar1) { - return (uint)-(int)fVar1; - } + if (-1 < (int)fVar1) { + return (int)fVar1; + } } - return 1; - } - fVar2 = fVar2 * 65536.00000000; - if (false) { - fVar1 = ROUND(fVar2); - } - else { - fVar1 = FLOOR(fVar2); - } - if (false) { - if (false) { - fVar1 = ROUND(fVar2 - 2147483648.00000000); - } - else { - fVar1 = FLOOR(fVar2 - 2147483648.00000000); - } - if (true) { - return (int)fVar1 | 0x80000000; - } - } - else { - if (-1 < (int)fVar1) { - return (int)fVar1; - } - } - return 0xffffffff; + return 0xffffffff; } -void proc_7F09442C(undefined4 param_1) +void store_stagenum_to_copyof_stagenum(STAGENUM stagenum) { - copyof_stagenum = param_1; - return; + copyof_stagenum = stagenum; + return; } @@ -108145,11 +107100,11 @@ void proc_7F09442C(undefined4 param_1) void proc_7F094438(void) { - DAT_8003fd94 = DAT_8003fd94 + (float)clock_timer; - if (4096.00000000 < DAT_8003fd94) { - DAT_8003fd94 = DAT_8003fd94 - 4096.00000000; - } - return; + D_8003FD94[0] = D_8003FD94[0] + (float)clock_timer; + if (4096.00000000 < D_8003FD94[0]) { + D_8003FD94[0] = D_8003FD94[0] - 4096.00000000; + } + return; } @@ -108161,1462 +107116,1458 @@ void proc_7F094438(void) uint * proc_7F094488(void) { - undefined4 *puVar3; - undefined4 *DL; - ulonglong uVar1; - uint *puVar4; - short sVar8; - short sVar9; - short sVar10; - short sVar11; - undefined8 uVar2; - float *pfVar5; - float *pfVar6; - undefined4 *puVar7; - int iVar12; - undefined4 *in_a0_lo; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - int iVar13; - undefined *puVar14; - uint uVar15; - uint uVar16; - f32 fVar17; - f32 fVar18; - f32 fVar19; - float fVar20; - float fVar21; - float fVar22; - float fVar23; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float extraout_f12_07; - float extraout_f12_08; - float extraout_f12_09; - float extraout_f12_10; - float extraout_f12_11; - float extraout_f12_12; - float extraout_f12_13; - float extraout_f12_14; - float extraout_f12_15; - float extraout_f12_16; - float extraout_f12_17; - float extraout_f12_18; - float extraout_f12_19; - float extraout_f12_20; - float extraout_f12_21; - float extraout_f12_22; - float extraout_f12_23; - float extraout_f12_24; - float extraout_f12_25; - float extraout_f12_26; - float extraout_f12_27; - float extraout_f12_28; - float extraout_f12_29; - float extraout_f12_30; - float extraout_f12_31; - float extraout_f12_32; - float extraout_f12_33; - float extraout_f12_34; - float extraout_f12_35; - float extraout_f12_36; - float extraout_f12_37; - float mf_4__4_; - float extraout_f12_38; - float extraout_f12_39; - float extraout_f12_40; - float fVar24; - float extraout_f12_41; - float extraout_f12_42; - float extraout_f12_43; - float extraout_f12_44; - float extraout_f12_45; - float extraout_f12_46; - float extraout_f12_47; - float extraout_f12_48; - float extraout_f12_49; - float extraout_f12_50; - float extraout_f12_51; - float extraout_f12_52; - float extraout_f12_53; - float extraout_f12_54; - float extraout_f12_55; - float extraout_f12_56; - float extraout_f12_57; - float extraout_f12_58; - float extraout_f12_59; - float extraout_f12_60; - float extraout_f12_61; - float extraout_f12_62; - float extraout_f12_63; - float extraout_f12_64; - float extraout_f12_65; - float extraout_f12_66; - float extraout_f12_67; - float extraout_f12_68; - float extraout_f12_69; - float extraout_f12_70; - float extraout_f12_71; - float extraout_f12_72; - float extraout_f12_73; - float extraout_f12_74; - float extraout_f12_75; - float extraout_f12_76; - float extraout_f12_77; - float extraout_f12_78; - float extraout_f12_79; - float extraout_f12_80; - float extraout_f12_81; - float extraout_f12_82; - float extraout_f12_83; - float mf_4__4__00; - float extraout_f12_84; - float extraout_f12_85; - float extraout_f12_86; - float extraout_f12_87; - float extraout_f12_88; - float extraout_f12_89; - float extraout_f12_90; - float x; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float fVar25; - float fVar26; - float x_00; - float extraout_f14_02; - float fVar27; - float extraout_f14_03; - float fVar28; - float fVar29; - uint *puStackX0; - float *pfStack1624; - int iStack1576; - undefined auStack1572 [40]; - float fStack1532; - float fStack1528; - undefined auStack1516 [40]; - float fStack1476; - float fStack1472; - undefined auStack1460 [40]; - float fStack1420; - float fStack1416; - undefined auStack1404 [40]; - float fStack1364; - float fStack1360; - undefined auStack1348 [56]; - float afStack1292 [16]; - float afStack1228 [17]; - undefined4 *puStack1160; - uint uStack1088; - undefined auStack1084 [40]; - float afStack1044 [4]; - undefined auStack1028 [44]; - float fStack984; - undefined auStack972 [44]; - float fStack928; - undefined auStack916 [44]; - float fStack872; - undefined auStack860 [56]; - float afStack804 [16]; - float afStack740 [25]; - int iStack640; - float fStack628; - float fStack624; - float fStack620; - float fStack616; - float fStack612; - float fStack604; - float fStack600; - float fStack596; - float fStack592; - float fStack588; - float fStack580; - float fStack576; - float fStack572; - float fStack568; - float fStack564; - float fStack556; - float fStack552; - float fStack548; - float fStack544; - float fStack540; - float fStack532; - float fStack528; - float fStack524; - float fStack520; - float fStack516; - float fStack508; - float fStack504; - float fStack500; - float fStack496; - float fStack492; - float fStack484; - float fStack480; - float fStack476; - float fStack472; - float fStack468; - float fStack460; - float fStack456; - float fStack452; - float fStack448; - float fStack444; - float fStack436; - float fStack432; - float fStack428; - float fStack424; - float fStack420; - float fStack412; - float fStack408; - float fStack404; - float fStack400; - float fStack396; - uint uStack388; - uint uStack384; - uint uStack380; - uint uStack376; - float fStack360; - float fStack356; - float fStack352; - float fStack348; - float fStack344; - float fStack340; - float fStack336; - float fStack332; - float fStack328; - float fStack324; - float fStack320; - float fStack316; - float fStack312; - float fStack308; - float fStack304; - float fStack300; - float fStack296; - float fStack292; - float fStack288; - float fStack284; - float fStack280; - float fStack276; - float fStack272; - float fStack268; - float fStack264; - float fStack260; - float fStack256; - float fStack252; - float fStack248; - float fStack244; - float fStack240; - float fStack236; - float fStack232; - float fStack228; - float fStack224; - float fStack220; - float fStack216; - float fStack212; - float fStack208; - float fStack204; - float fStack200; - float fStack196; - float fStack192; - float fStack188; - float fStack184; - float fStack180; - float fStack176; - float fStack172; - float fStack168; - float fStack164; - float fStack160; - float fStack156; - float fStack152; - float fStack148; - float fStack144; - float fStack140; - float fStack136; - float fStack132; - float fStack128; - float fStack124; - float fStack120; - float fStack116; - float fStack112; - float fStack108; - float fStack104; - float fStack100; - float afStack96 [3]; - float afStack84 [3]; - float afStack72 [3]; - float afStack60 [3]; - float fStack48; - float fStack44; - float fStack36; - float fStack32; - float fStack24; - float fStack20; - float fStack12; - float fStack8; - - puStackX0 = in_a0_lo; - fVar17 = proc_7F0B483C(); - iStack640 = 0; - fVar29 = (float)fVar17 / 30.00000000; - puVar3 = get_ptr_currentdata(); - DL = get_ptr_currentdata(); - if (*(char *)((int)DL + 0xb) == '\0') { - uVar1 = get_num_players(); - if (uVar1 == 1) { - DL = puStackX0 + 2; - puStackX0[1] = 0x300000; - *puStackX0 = 0xba001402; - puStackX0 = DL; - puVar4 = set_setfillcolor(DL,(uint)*(byte *)(puVar3 + 2),(uint)*(byte *)((int)puVar3 + 9), - (uint)*(byte *)((int)puVar3 + 10)); - puStackX0 = puVar4 + 2; - sVar8 = get_video2_settings_width(); - sVar9 = get_video2_settings_ulx(); - sVar10 = get_video2_settings_uly(); - sVar11 = get_video2_settings_height(); - *puVar4 = (((int)sVar11 + (int)sVar10) - 1U & 0x3ff) << 2 | 0xf6000000 | - (((int)sVar9 + (int)sVar8) - 1U & 0x3ff) << 0xe; - sVar8 = get_video2_settings_ulx(); - sVar9 = get_video2_settings_uly(); - puVar4[1] = ((int)sVar9 & 0x3ffU) << 2 | ((int)sVar8 & 0x3ffU) << 0xe; - puStackX0[1] = 0; - *puStackX0 = 0xe7000000; - return puStackX0 + 2; + undefined4 *puVar2; + undefined4 *DL; + s32 sVar3; + uint *puVar4; + short sVar8; + short sVar9; + short sVar10; + short sVar11; + undefined8 uVar1; + float *pfVar5; + float *pfVar6; + undefined4 *puVar7; + int iVar12; + undefined4 *in_a0_lo; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + undefined8 extraout_a1_02; + int iVar13; + undefined *puVar14; + uint uVar15; + uint uVar16; + f32 fVar17; + f32 fVar18; + f32 fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float extraout_f12_07; + float extraout_f12_08; + float extraout_f12_09; + float extraout_f12_10; + float extraout_f12_11; + float extraout_f12_12; + float extraout_f12_13; + float extraout_f12_14; + float extraout_f12_15; + float extraout_f12_16; + float extraout_f12_17; + float extraout_f12_18; + float extraout_f12_19; + float extraout_f12_20; + float extraout_f12_21; + float extraout_f12_22; + float extraout_f12_23; + float extraout_f12_24; + float extraout_f12_25; + float extraout_f12_26; + float extraout_f12_27; + float extraout_f12_28; + float extraout_f12_29; + float extraout_f12_30; + float extraout_f12_31; + float extraout_f12_32; + float extraout_f12_33; + float extraout_f12_34; + float extraout_f12_35; + float extraout_f12_36; + float extraout_f12_37; + float mf_4__4_; + float extraout_f12_38; + float extraout_f12_39; + float extraout_f12_40; + float fVar24; + float extraout_f12_41; + float extraout_f12_42; + float extraout_f12_43; + float extraout_f12_44; + float extraout_f12_45; + float extraout_f12_46; + float extraout_f12_47; + float extraout_f12_48; + float extraout_f12_49; + float extraout_f12_50; + float extraout_f12_51; + float extraout_f12_52; + float extraout_f12_53; + float extraout_f12_54; + float extraout_f12_55; + float extraout_f12_56; + float extraout_f12_57; + float extraout_f12_58; + float extraout_f12_59; + float extraout_f12_60; + float extraout_f12_61; + float extraout_f12_62; + float extraout_f12_63; + float extraout_f12_64; + float extraout_f12_65; + float extraout_f12_66; + float extraout_f12_67; + float extraout_f12_68; + float extraout_f12_69; + float extraout_f12_70; + float extraout_f12_71; + float extraout_f12_72; + float extraout_f12_73; + float extraout_f12_74; + float extraout_f12_75; + float extraout_f12_76; + float extraout_f12_77; + float extraout_f12_78; + float extraout_f12_79; + float extraout_f12_80; + float extraout_f12_81; + float extraout_f12_82; + float extraout_f12_83; + float mf_4__4__00; + float extraout_f12_84; + float extraout_f12_85; + float extraout_f12_86; + float extraout_f12_87; + float extraout_f12_88; + float extraout_f12_89; + float extraout_f12_90; + float x; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float fVar25; + float fVar26; + float x_00; + float extraout_f14_02; + float fVar27; + float extraout_f14_03; + float fVar28; + float fVar29; + uint *puStackX0; + float *pfStack1624; + int iStack1576; + undefined auStack1572 [40]; + float fStack1532; + float fStack1528; + undefined auStack1516 [40]; + float fStack1476; + float fStack1472; + undefined auStack1460 [40]; + float fStack1420; + float fStack1416; + undefined auStack1404 [40]; + float fStack1364; + float fStack1360; + undefined auStack1348 [56]; + float afStack1292 [16]; + float afStack1228 [17]; + undefined4 *puStack1160; + uint uStack1088; + undefined auStack1084 [40]; + float afStack1044 [4]; + undefined auStack1028 [44]; + float fStack984; + undefined auStack972 [44]; + float fStack928; + undefined auStack916 [44]; + float fStack872; + undefined auStack860 [56]; + float afStack804 [16]; + float afStack740 [25]; + int iStack640; + float fStack628; + float fStack624; + float fStack620; + float fStack616; + float fStack612; + float fStack604; + float fStack600; + float fStack596; + float fStack592; + float fStack588; + float fStack580; + float fStack576; + float fStack572; + float fStack568; + float fStack564; + float fStack556; + float fStack552; + float fStack548; + float fStack544; + float fStack540; + float fStack532; + float fStack528; + float fStack524; + float fStack520; + float fStack516; + float fStack508; + float fStack504; + float fStack500; + float fStack496; + float fStack492; + float fStack484; + float fStack480; + float fStack476; + float fStack472; + float fStack468; + float fStack460; + float fStack456; + float fStack452; + float fStack448; + float fStack444; + float fStack436; + float fStack432; + float fStack428; + float fStack424; + float fStack420; + float fStack412; + float fStack408; + float fStack404; + float fStack400; + float fStack396; + uint uStack388; + uint uStack384; + uint uStack380; + uint uStack376; + float fStack360; + float fStack356; + float fStack352; + float fStack348; + float fStack344; + float fStack340; + float fStack336; + float fStack332; + float fStack328; + float fStack324; + float fStack320; + float fStack316; + float fStack312; + float fStack308; + float fStack304; + float fStack300; + float fStack296; + float fStack292; + float fStack288; + float fStack284; + float fStack280; + float fStack276; + float fStack272; + float fStack268; + float fStack264; + float fStack260; + float fStack256; + float fStack252; + float fStack248; + float fStack244; + float fStack240; + float fStack236; + float fStack232; + float fStack228; + float fStack224; + float fStack220; + float fStack216; + float fStack212; + float fStack208; + float fStack204; + float fStack200; + float fStack196; + float fStack192; + float fStack188; + float fStack184; + float fStack180; + float fStack176; + float fStack172; + float fStack168; + float fStack164; + float fStack160; + float fStack156; + float fStack152; + float fStack148; + float fStack144; + float fStack140; + float fStack136; + float fStack132; + float fStack128; + float fStack124; + float fStack120; + float fStack116; + float fStack112; + float fStack108; + float fStack104; + float fStack100; + float afStack96 [3]; + float afStack84 [3]; + float afStack72 [3]; + float afStack60 [3]; + float fStack48; + float fStack44; + float fStack36; + float fStack32; + float fStack24; + float fStack20; + float fStack12; + float fStack8; + + puStackX0 = in_a0_lo; + fVar17 = proc_7F0B483C(); + iStack640 = 0; + fVar29 = (float)fVar17 / 30.00000000; + puVar2 = get_ptr_currentdata(); + DL = get_ptr_currentdata(); + if (*(char *)((int)DL + 0xb) == '\0') { + sVar3 = get_num_players(); + if (sVar3 == 1) { + DL = puStackX0 + 2; + puStackX0[1] = 0x300000; + *puStackX0 = 0xba001402; + puStackX0 = DL; + puVar4 = set_setfillcolor(DL,(uint)*(byte *)(puVar2 + 2), + (uint)*(byte *)((int)puVar2 + 9), + (uint)*(byte *)((int)puVar2 + 10)); + puStackX0 = puVar4 + 2; + sVar8 = get_video2_settings_width(); + sVar9 = get_video2_settings_ulx(); + sVar10 = get_video2_settings_uly(); + sVar11 = get_video2_settings_height(); + *puVar4 = (((int)sVar11 + (int)sVar10) - 1U & 0x3ff) << 2 | 0xf6000000 | + (((int)sVar9 + (int)sVar8) - 1U & 0x3ff) << 0xe; + sVar8 = get_video2_settings_ulx(); + sVar9 = get_video2_settings_uly(); + puVar4[1] = ((int)sVar9 & 0x3ffU) << 2 | ((int)sVar8 & 0x3ffU) << 0xe; + puStackX0[1] = 0; + *puStackX0 = 0xe7000000; + return puStackX0 + 2; + } + puStackX0[1] = 0; + *puStackX0 = 0xe7000000; + puStackX0[3] = 0x300000; + puStackX0[2] = 0xba001402; + puStackX0[5] = 0; + puStackX0[4] = 0xb900031d; + puStackX0[6] = (((int)pPlayer->viewleft + (int)pPlayer->viewx) - 1U & 0x3ff) << 0xe | + 0xf6000000 | + (((int)pPlayer->viewtop + (int)pPlayer->viewy) - 1U & 0x3ff) << 2; + puStackX0[7] = ((int)pPlayer->viewleft & 0x3ffU) << 0xe | + ((int)pPlayer->viewtop & 0x3ffU) << 2; + puStackX0[9] = 0; + puStackX0[8] = 0xe7000000; + return puStackX0 + 10; } - puStackX0[1] = 0; - *puStackX0 = 0xe7000000; - puStackX0[3] = 0x300000; - puStackX0[2] = 0xba001402; - puStackX0[5] = 0; - puStackX0[4] = 0xb900031d; - puStackX0[6] = (((int)pPlayer->viewleft + (int)pPlayer->viewx) - 1U & 0x3ff) << 0xe | 0xf6000000 - | (((int)pPlayer->viewtop + (int)pPlayer->viewy) - 1U & 0x3ff) << 2; - puStackX0[7] = ((int)pPlayer->viewleft & 0x3ffU) << 0xe | ((int)pPlayer->viewtop & 0x3ffU) << 2; - puStackX0[9] = 0; - puStackX0[8] = 0xe7000000; - return puStackX0 + 10; - } - puStackX0 = set_setfillcolor(puStackX0,(uint)*(byte *)(puVar3 + 2), - (uint)*(byte *)((int)puVar3 + 9),(uint)*(byte *)((int)puVar3 + 10)); - proc_7F093880(); - getPlayer_c_screenwidth(); - fVar27 = flt_80057540; - proc_7F093880(); - getPlayer_c_screenheight(); - proc_7F093880(); - getPlayer_c_screenwidth(); - getPlayer_c_screenheight(); - proc_7F093880(); - uVar2 = proc_7F0938FC(&fStack12,&fStack108,&fStack292); - uStack376 = (uint)uVar2; - uVar2 = proc_7F0938FC(&fStack24,&fStack120,&fStack296); - uStack380 = (uint)uVar2; - uVar2 = proc_7F0938FC(&fStack36,&fStack132,&fStack300); - uStack384 = (uint)uVar2; - uVar2 = proc_7F0938FC(&fStack48,&fStack144,&fStack304); - uStack388 = (uint)uVar2; - proc_7F093A78(&fStack12,&fStack204,&fStack324); - proc_7F093A78(&fStack24,&fStack216,&fStack328); - proc_7F093A78(&fStack36,&fStack228,&fStack332); - proc_7F093A78(&fStack48,&fStack240,&fStack336); - if (uStack376 == uStack384) { - fStack356 = 0.00000000; - } - else { - fVar17 = getPlayer_c_screentop(); - fVar18 = getPlayer_c_screenheight(); - fStack356 = (fStack8 / (fStack8 - fStack32)) * (float)fVar18 + (float)fVar17; + puStackX0 = set_setfillcolor(puStackX0,(uint)*(byte *)(puVar2 + 2), + (uint)*(byte *)((int)puVar2 + 9),(uint)*(byte *)((int)puVar2 + 10)) + ; proc_7F093880(); - proc_7F093BFC(&fStack12,&fStack36,afStack84); - proc_7F0938FC(afStack84,&fStack180,&fStack316); - proc_7F093A78(afStack84,&fStack276,&fStack348); - } - if (uStack380 == uStack388) { - fStack360 = 0.00000000; - } - else { - fVar17 = getPlayer_c_screentop(); - fVar18 = getPlayer_c_screenheight(); - fStack360 = (fStack20 / (fStack20 - fStack44)) * (float)fVar18 + (float)fVar17; getPlayer_c_screenwidth(); + fVar27 = flt_80057540; proc_7F093880(); - proc_7F093BFC(&fStack24,&fStack48,afStack96); - proc_7F0938FC(afStack96,&fStack192,&fStack320); - proc_7F093A78(afStack96,&fStack288,&fStack352); - } - if (uStack376 != uStack380) { - getPlayer_c_screenleft(); - getPlayer_c_screenwidth(); + getPlayer_c_screenheight(); proc_7F093880(); - proc_7F093BFC(&fStack12,&fStack24,afStack60); - proc_7F0938FC(afStack60,&fStack156,&fStack308); - proc_7F093A78(afStack60,&fStack252,&fStack340); - } - if (uStack384 != uStack388) { - getPlayer_c_screenleft(); getPlayer_c_screenwidth(); getPlayer_c_screenheight(); proc_7F093880(); - proc_7F093BFC(&fStack36,&fStack48,afStack72); - proc_7F0938FC(afStack72,&fStack168,&fStack312); - proc_7F093A78(afStack72,&fStack264,&fStack344); - } - uVar16 = uStack376 << 3 | uStack380 << 2 | uStack384 << 1 | uStack388; - if (false) { - return puStackX0; - } - switch(uVar16) { - case 0: - fStack628 = fStack204 * fVar29; - fStack624 = fStack200 * fVar29; - fStack620 = fStack196 * fVar29; - fStack604 = fStack216 * fVar29; - fStack600 = fStack212 * fVar29; - fStack596 = fStack208 * fVar29; - fStack580 = fStack228 * fVar29; - fStack576 = fStack224 * fVar29; - fStack572 = fStack220 * fVar29; - fStack556 = fStack240 * fVar29; - uVar15 = 4; - fStack552 = fStack236 * fVar29; - fStack588 = fStack208 + DAT_8003fd94; - fStack548 = fStack232 * fVar29; - fStack612 = fStack196 + DAT_8003fd94; - fStack564 = fStack220 + DAT_8003fd94; - fStack540 = fStack232 + DAT_8003fd94; - fStack616 = fStack204; - fStack592 = fStack216; - fStack568 = fStack228; - fStack544 = fStack240; - proc_7F093FA4((int)&fStack628,fStack196); - proc_7F093FA4((int)&fStack604,extraout_f12); - proc_7F093FA4((int)&fStack580,extraout_f12_00); - proc_7F093FA4((int)&fStack556,extraout_f12_01); - break; - case 1: - fStack628 = fStack228 * fVar29; - fStack624 = fStack224 * fVar29; - fStack620 = fStack220 * fVar29; - fStack604 = fStack204 * fVar29; - fStack600 = fStack200 * fVar29; - fStack596 = fStack196 * fVar29; - fStack580 = fStack216 * fVar29; - fStack576 = fStack212 * fVar29; - fStack572 = fStack208 * fVar29; - fStack556 = fStack288 * fVar29; - uVar15 = 5; - fStack552 = fStack284 * fVar29; - fStack548 = fStack280 * fVar29; - fStack532 = fStack264 * fVar29; - fStack528 = fStack260 * fVar29; - fStack612 = fStack220 + DAT_8003fd94; - fStack616 = fStack228; - fStack524 = fStack256 * fVar29; - fStack564 = fStack208 + DAT_8003fd94; - fStack588 = fStack196 + DAT_8003fd94; - fStack540 = fStack280 + DAT_8003fd94; - fStack592 = fStack204; - fStack516 = fStack256 + DAT_8003fd94; - fStack568 = fStack216; - fStack544 = fStack288; - fStack520 = fStack264; - proc_7F093FA4((int)&fStack628,fStack196); - proc_7F093FA4((int)&fStack604,extraout_f12_22); - proc_7F093FA4((int)&fStack580,extraout_f12_23); - proc_7F093FA4((int)&fStack556,extraout_f12_24); - proc_7F093FA4((int)&fStack532,extraout_f12_25); - break; - case 2: - fStack628 = fStack204 * fVar29; - fStack620 = fStack196 * fVar29; - fStack604 = fStack216 * fVar29; - fStack624 = fStack200 * fVar29; - fStack600 = fStack212 * fVar29; - fStack596 = fStack208 * fVar29; - fStack576 = fStack236 * fVar29; - fStack556 = fStack264 * fVar29; - uVar15 = 5; - fStack580 = fStack240 * fVar29; - fStack548 = fStack256 * fVar29; - fStack528 = fStack272 * fVar29; - fStack564 = fStack232 + DAT_8003fd94; - fStack572 = fStack232 * fVar29; - fStack516 = fStack268 + DAT_8003fd94; - fStack552 = fStack260 * fVar29; - fStack588 = fStack208 + DAT_8003fd94; - fStack524 = fStack268 * fVar29; - fStack532 = fStack276 * fVar29; - fStack612 = fStack196 + DAT_8003fd94; - fStack540 = fStack256 + DAT_8003fd94; - fStack616 = fStack204; - fStack592 = fStack216; - fStack568 = fStack240; - fStack544 = fStack264; - fStack520 = fStack276; - proc_7F093FA4((int)&fStack628,fStack564); - proc_7F093FA4((int)&fStack604,extraout_f12_26); - proc_7F093FA4((int)&fStack580,extraout_f12_27); - proc_7F093FA4((int)&fStack556,extraout_f12_28); - proc_7F093FA4((int)&fStack532,extraout_f12_29); - break; - case 3: - fStack628 = fStack204 * fVar29; - fStack624 = fStack200 * fVar29; - fStack620 = fStack196 * fVar29; - fStack604 = fStack216 * fVar29; - fStack600 = fStack212 * fVar29; - fStack596 = fStack208 * fVar29; - fStack580 = fStack276 * fVar29; - fStack576 = fStack272 * fVar29; - fStack572 = fStack268 * fVar29; - fStack556 = fStack288 * fVar29; - uVar15 = 4; - fStack552 = fStack284 * fVar29; - fStack588 = fStack208 + DAT_8003fd94; - fStack548 = fStack280 * fVar29; - fStack612 = fStack196 + DAT_8003fd94; - fStack564 = fStack268 + DAT_8003fd94; - fStack540 = fStack280 + DAT_8003fd94; - fStack616 = fStack204; - fStack592 = fStack216; - fStack568 = fStack276; - fStack544 = fStack288; - proc_7F093FA4((int)&fStack628,fStack196); - proc_7F093FA4((int)&fStack604,extraout_f12_02); - proc_7F093FA4((int)&fStack580,extraout_f12_03); - proc_7F093FA4((int)&fStack556,extraout_f12_04); - break; - case 4: - fStack628 = fStack240 * fVar29; - fStack624 = fStack236 * fVar29; - fStack620 = fStack232 * fVar29; - fStack604 = fStack228 * fVar29; - fStack600 = fStack224 * fVar29; - fStack596 = fStack220 * fVar29; - fStack580 = fStack204 * fVar29; - fStack576 = fStack200 * fVar29; - fStack572 = fStack196 * fVar29; - fStack556 = fStack252 * fVar29; - uVar15 = 5; - fStack552 = fStack248 * fVar29; - fStack548 = fStack244 * fVar29; - fStack532 = fStack288 * fVar29; - fStack528 = fStack284 * fVar29; - fStack612 = fStack232 + DAT_8003fd94; - fStack616 = fStack240; - fStack524 = fStack280 * fVar29; - fStack564 = fStack196 + DAT_8003fd94; - fStack588 = fStack220 + DAT_8003fd94; - fStack540 = fStack244 + DAT_8003fd94; - fStack592 = fStack228; - fStack516 = fStack280 + DAT_8003fd94; - fStack568 = fStack204; - fStack544 = fStack252; - fStack520 = fStack288; - proc_7F093FA4((int)&fStack628,fStack196); - proc_7F093FA4((int)&fStack604,extraout_f12_30); - proc_7F093FA4((int)&fStack580,extraout_f12_31); - proc_7F093FA4((int)&fStack556,extraout_f12_32); - proc_7F093FA4((int)&fStack532,extraout_f12_33); - break; - case 5: - fStack628 = fStack228 * fVar29; - fStack624 = fStack224 * fVar29; - fStack620 = fStack220 * fVar29; - fStack604 = fStack204 * fVar29; - fStack600 = fStack200 * fVar29; - fStack596 = fStack196 * fVar29; - fStack580 = fStack264 * fVar29; - fStack576 = fStack260 * fVar29; - fStack572 = fStack256 * fVar29; - fStack556 = fStack252 * fVar29; - uVar15 = 4; - fStack552 = fStack248 * fVar29; - fStack588 = fStack196 + DAT_8003fd94; - fStack548 = fStack244 * fVar29; - fStack612 = fStack220 + DAT_8003fd94; - fStack564 = fStack256 + DAT_8003fd94; - fStack540 = fStack244 + DAT_8003fd94; - fStack616 = fStack228; - fStack592 = fStack204; - fStack568 = fStack264; - fStack544 = fStack252; - proc_7F093FA4((int)&fStack628,fStack196); - proc_7F093FA4((int)&fStack604,extraout_f12_11); - proc_7F093FA4((int)&fStack580,extraout_f12_12); - proc_7F093FA4((int)&fStack556,extraout_f12_13); - break; - default: - return puStackX0; - case 7: - fStack628 = fStack204 * fVar29; - fStack624 = fStack200 * fVar29; - fStack620 = fStack196 * fVar29; - fStack604 = fStack252 * fVar29; - fStack600 = fStack248 * fVar29; - fStack596 = fStack244 * fVar29; - fStack580 = fStack276 * fVar29; - uVar15 = 3; - fStack576 = fStack272 * fVar29; - fStack588 = fStack244 + DAT_8003fd94; - fStack572 = fStack268 * fVar29; - fStack612 = fStack196 + DAT_8003fd94; - fStack564 = fStack268 + DAT_8003fd94; - fStack616 = fStack204; - fStack592 = fStack252; - fStack568 = fStack276; - proc_7F093FA4((int)&fStack628,fStack196); - proc_7F093FA4((int)&fStack604,extraout_f12_20); - proc_7F093FA4((int)&fStack580,extraout_f12_21); - break; - case 8: - fStack628 = fStack216 * fVar29; - fStack624 = fStack212 * fVar29; - fStack620 = fStack208 * fVar29; - fStack604 = fStack240 * fVar29; - fStack600 = fStack236 * fVar29; - fStack596 = fStack232 * fVar29; - fStack580 = fStack228 * fVar29; - fStack576 = fStack224 * fVar29; - fStack572 = fStack220 * fVar29; - fStack556 = fStack276 * fVar29; - uVar15 = 5; - fStack552 = fStack272 * fVar29; - fStack548 = fStack268 * fVar29; - fStack532 = fStack252 * fVar29; - fStack528 = fStack248 * fVar29; - fStack612 = fStack208 + DAT_8003fd94; - fStack616 = fStack216; - fStack524 = fStack244 * fVar29; - fStack564 = fStack220 + DAT_8003fd94; - fStack588 = fStack232 + DAT_8003fd94; - fStack540 = fStack268 + DAT_8003fd94; - fStack592 = fStack240; - fStack516 = fStack244 + DAT_8003fd94; - fStack568 = fStack228; - fStack544 = fStack276; - fStack520 = fStack252; - proc_7F093FA4((int)&fStack628,fStack268); - proc_7F093FA4((int)&fStack604,extraout_f12_34); - proc_7F093FA4((int)&fStack580,extraout_f12_35); - proc_7F093FA4((int)&fStack556,extraout_f12_36); - proc_7F093FA4((int)&fStack532,extraout_f12_37); - break; - case 10: - fStack628 = fStack216 * fVar29; - fStack624 = fStack212 * fVar29; - fStack620 = fStack208 * fVar29; - fStack604 = fStack240 * fVar29; - fStack600 = fStack236 * fVar29; - fStack596 = fStack232 * fVar29; - fStack580 = fStack252 * fVar29; - fStack576 = fStack248 * fVar29; - fStack572 = fStack244 * fVar29; - fStack556 = fStack264 * fVar29; - uVar15 = 4; - fStack552 = fStack260 * fVar29; - fStack588 = fStack232 + DAT_8003fd94; - fStack548 = fStack256 * fVar29; - fStack612 = fStack208 + DAT_8003fd94; - fStack564 = fStack244 + DAT_8003fd94; - fStack540 = fStack256 + DAT_8003fd94; - fStack616 = fStack216; - fStack592 = fStack240; - fStack568 = fStack252; - fStack544 = fStack264; - proc_7F093FA4((int)&fStack628,fStack244); - proc_7F093FA4((int)&fStack604,extraout_f12_08); - proc_7F093FA4((int)&fStack580,extraout_f12_09); - proc_7F093FA4((int)&fStack556,extraout_f12_10); - break; - case 0xb: - fStack628 = fStack216 * fVar29; - fStack624 = fStack212 * fVar29; - fStack620 = fStack208 * fVar29; - fStack604 = fStack288 * fVar29; - fStack600 = fStack284 * fVar29; - fStack596 = fStack280 * fVar29; - fStack580 = fStack252 * fVar29; - uVar15 = 3; - fStack576 = fStack248 * fVar29; - fStack588 = fStack280 + DAT_8003fd94; - fStack572 = fStack244 * fVar29; - fStack612 = fStack208 + DAT_8003fd94; - fStack564 = fStack244 + DAT_8003fd94; - fStack616 = fStack216; - fStack592 = fStack288; - fStack568 = fStack252; - proc_7F093FA4((int)&fStack628,fStack244); - proc_7F093FA4((int)&fStack604,extraout_f12_18); - proc_7F093FA4((int)&fStack580,extraout_f12_19); - break; - case 0xc: - fStack628 = fStack240 * fVar29; - fStack624 = fStack236 * fVar29; - fStack620 = fStack232 * fVar29; - fStack604 = fStack228 * fVar29; - fStack600 = fStack224 * fVar29; - fStack596 = fStack220 * fVar29; - fStack580 = fStack288 * fVar29; - fStack576 = fStack284 * fVar29; - fStack572 = fStack280 * fVar29; - fStack556 = fStack276 * fVar29; - fStack552 = fStack272 * fVar29; - fStack588 = fStack220 + DAT_8003fd94; - fStack548 = fStack268 * fVar29; - fStack612 = fStack232 + DAT_8003fd94; - uVar15 = 4; - fStack564 = fStack280 + DAT_8003fd94; - iStack640 = 1; - fStack540 = fStack268 + DAT_8003fd94; - fStack616 = fStack240; - fStack592 = fStack228; - fStack568 = fStack288; - fStack544 = fStack276; - proc_7F093FA4((int)&fStack628,fStack268); - proc_7F093FA4((int)&fStack604,extraout_f12_05); - proc_7F093FA4((int)&fStack580,extraout_f12_06); - proc_7F093FA4((int)&fStack556,extraout_f12_07); - break; - case 0xd: - fStack628 = fStack228 * fVar29; - fStack624 = fStack224 * fVar29; - fStack620 = fStack220 * fVar29; - fStack604 = fStack276 * fVar29; - fStack600 = fStack272 * fVar29; - fStack596 = fStack268 * fVar29; - fStack580 = fStack264 * fVar29; - uVar15 = 3; - fStack576 = fStack260 * fVar29; - fStack588 = fStack268 + DAT_8003fd94; - fStack572 = fStack256 * fVar29; - fStack612 = fStack220 + DAT_8003fd94; - fStack564 = fStack256 + DAT_8003fd94; - fStack616 = fStack228; - fStack592 = fStack276; - fStack568 = fStack264; - proc_7F093FA4((int)&fStack628,fStack268); - proc_7F093FA4((int)&fStack604,extraout_f12_16); - proc_7F093FA4((int)&fStack580,extraout_f12_17); - break; - case 0xe: - fStack628 = fStack240 * fVar29; - fStack624 = fStack236 * fVar29; - fStack620 = fStack232 * fVar29; - fStack604 = fStack264 * fVar29; - fStack600 = fStack260 * fVar29; - fStack596 = fStack256 * fVar29; - fStack580 = fStack288 * fVar29; - uVar15 = 3; - fStack576 = fStack284 * fVar29; - fStack588 = fStack256 + DAT_8003fd94; - fStack572 = fStack280 * fVar29; - fStack612 = fStack232 + DAT_8003fd94; - fStack564 = fStack280 + DAT_8003fd94; - fStack616 = fStack240; - fStack592 = fStack264; - fStack568 = fStack288; - proc_7F093FA4((int)&fStack628,fStack280); - proc_7F093FA4((int)&fStack604,extraout_f12_14); - proc_7F093FA4((int)&fStack580,extraout_f12_15); - break; - case 0xf: - uVar15 = 0; - } - if (uVar15 != 0) { - pfVar5 = (float *)proc_7F0783E4(); - pfVar6 = (float *)proc_7F0783C4(); - proc_7F0580C8(pfVar5,pfVar6,(int)afStack740); - guScaleF(mf_4__4_,x,(float)&DAT_80079e98,1.00000000 / fVar29); - proc_7F0580C8(afStack740,(float *)&DAT_80079e98,(int)afStack804); - uStack1088 = 0; + uVar1 = proc_7F0938FC(&fStack12,&fStack108,&fStack292); + uStack376 = (uint)uVar1; + uVar1 = proc_7F0938FC(&fStack24,&fStack120,&fStack296); + uStack380 = (uint)uVar1; + uVar1 = proc_7F0938FC(&fStack36,&fStack132,&fStack300); + uStack384 = (uint)uVar1; + uVar1 = proc_7F0938FC(&fStack48,&fStack144,&fStack304); + uStack388 = (uint)uVar1; + proc_7F093A78(&fStack12,&fStack204,&fStack324); + proc_7F093A78(&fStack24,&fStack216,&fStack328); + proc_7F093A78(&fStack36,&fStack228,&fStack332); + proc_7F093A78(&fStack48,&fStack240,&fStack336); + if (uStack376 == uStack384) { + fStack356 = 0.00000000; + } + else { + fVar17 = getPlayer_c_screentop(); + fVar18 = getPlayer_c_screenheight(); + fStack356 = (fStack8 / (fStack8 - fStack32)) * (float)fVar18 + (float)fVar17; + proc_7F093880(); + proc_7F093BFC(&fStack12,&fStack36,afStack84); + proc_7F0938FC(afStack84,&fStack180,&fStack316); + proc_7F093A78(afStack84,&fStack276,&fStack348); + } + if (uStack380 == uStack388) { + fStack360 = 0.00000000; + } + else { + fVar17 = getPlayer_c_screentop(); + fVar18 = getPlayer_c_screenheight(); + fStack360 = (fStack20 / (fStack20 - fStack44)) * (float)fVar18 + (float)fVar17; + getPlayer_c_screenwidth(); + proc_7F093880(); + proc_7F093BFC(&fStack24,&fStack48,afStack96); + proc_7F0938FC(afStack96,&fStack192,&fStack320); + proc_7F093A78(afStack96,&fStack288,&fStack352); + } + if (uStack376 != uStack380) { + getPlayer_c_screenleft(); + getPlayer_c_screenwidth(); + proc_7F093880(); + proc_7F093BFC(&fStack12,&fStack24,afStack60); + proc_7F0938FC(afStack60,&fStack156,&fStack308); + proc_7F093A78(afStack60,&fStack252,&fStack340); + } + if (uStack384 != uStack388) { + getPlayer_c_screenleft(); + getPlayer_c_screenwidth(); + getPlayer_c_screenheight(); + proc_7F093880(); + proc_7F093BFC(&fStack36,&fStack48,afStack72); + proc_7F0938FC(afStack72,&fStack168,&fStack312); + proc_7F093A78(afStack72,&fStack264,&fStack344); + } + uVar16 = uStack376 << 3 | uStack380 << 2 | uStack384 << 1 | uStack388; + if (false) { + return puStackX0; + } + switch(uVar16) { + case 0: + fStack628 = fStack204 * fVar29; + fStack624 = fStack200 * fVar29; + fStack620 = fStack196 * fVar29; + fStack604 = fStack216 * fVar29; + fStack600 = fStack212 * fVar29; + fStack596 = fStack208 * fVar29; + fStack580 = fStack228 * fVar29; + fStack576 = fStack224 * fVar29; + fStack572 = fStack220 * fVar29; + fStack556 = fStack240 * fVar29; + uVar15 = 4; + fStack552 = fStack236 * fVar29; + fStack588 = fStack208 + D_8003FD94[0]; + fStack548 = fStack232 * fVar29; + fStack612 = fStack196 + D_8003FD94[0]; + fStack564 = fStack220 + D_8003FD94[0]; + fStack540 = fStack232 + D_8003FD94[0]; + fStack616 = fStack204; + fStack592 = fStack216; + fStack568 = fStack228; + fStack544 = fStack240; + proc_7F093FA4((int)&fStack628,fStack196); + proc_7F093FA4((int)&fStack604,extraout_f12); + proc_7F093FA4((int)&fStack580,extraout_f12_00); + proc_7F093FA4((int)&fStack556,extraout_f12_01); + break; + case 1: + fStack628 = fStack228 * fVar29; + fStack624 = fStack224 * fVar29; + fStack620 = fStack220 * fVar29; + fStack604 = fStack204 * fVar29; + fStack600 = fStack200 * fVar29; + fStack596 = fStack196 * fVar29; + fStack580 = fStack216 * fVar29; + fStack576 = fStack212 * fVar29; + fStack572 = fStack208 * fVar29; + fStack556 = fStack288 * fVar29; + uVar15 = 5; + fStack552 = fStack284 * fVar29; + fStack548 = fStack280 * fVar29; + fStack532 = fStack264 * fVar29; + fStack528 = fStack260 * fVar29; + fStack612 = fStack220 + D_8003FD94[0]; + fStack616 = fStack228; + fStack524 = fStack256 * fVar29; + fStack564 = fStack208 + D_8003FD94[0]; + fStack588 = fStack196 + D_8003FD94[0]; + fStack540 = fStack280 + D_8003FD94[0]; + fStack592 = fStack204; + fStack516 = fStack256 + D_8003FD94[0]; + fStack568 = fStack216; + fStack544 = fStack288; + fStack520 = fStack264; + proc_7F093FA4((int)&fStack628,fStack196); + proc_7F093FA4((int)&fStack604,extraout_f12_22); + proc_7F093FA4((int)&fStack580,extraout_f12_23); + proc_7F093FA4((int)&fStack556,extraout_f12_24); + proc_7F093FA4((int)&fStack532,extraout_f12_25); + break; + case 2: + fStack628 = fStack204 * fVar29; + fStack620 = fStack196 * fVar29; + fStack604 = fStack216 * fVar29; + fStack624 = fStack200 * fVar29; + fStack600 = fStack212 * fVar29; + fStack596 = fStack208 * fVar29; + fStack576 = fStack236 * fVar29; + fStack556 = fStack264 * fVar29; + uVar15 = 5; + fStack580 = fStack240 * fVar29; + fStack548 = fStack256 * fVar29; + fStack528 = fStack272 * fVar29; + fStack564 = fStack232 + D_8003FD94[0]; + fStack572 = fStack232 * fVar29; + fStack516 = fStack268 + D_8003FD94[0]; + fStack552 = fStack260 * fVar29; + fStack588 = fStack208 + D_8003FD94[0]; + fStack524 = fStack268 * fVar29; + fStack532 = fStack276 * fVar29; + fStack612 = fStack196 + D_8003FD94[0]; + fStack540 = fStack256 + D_8003FD94[0]; + fStack616 = fStack204; + fStack592 = fStack216; + fStack568 = fStack240; + fStack544 = fStack264; + fStack520 = fStack276; + proc_7F093FA4((int)&fStack628,fStack564); + proc_7F093FA4((int)&fStack604,extraout_f12_26); + proc_7F093FA4((int)&fStack580,extraout_f12_27); + proc_7F093FA4((int)&fStack556,extraout_f12_28); + proc_7F093FA4((int)&fStack532,extraout_f12_29); + break; + case 3: + fStack628 = fStack204 * fVar29; + fStack624 = fStack200 * fVar29; + fStack620 = fStack196 * fVar29; + fStack604 = fStack216 * fVar29; + fStack600 = fStack212 * fVar29; + fStack596 = fStack208 * fVar29; + fStack580 = fStack276 * fVar29; + fStack576 = fStack272 * fVar29; + fStack572 = fStack268 * fVar29; + fStack556 = fStack288 * fVar29; + uVar15 = 4; + fStack552 = fStack284 * fVar29; + fStack588 = fStack208 + D_8003FD94[0]; + fStack548 = fStack280 * fVar29; + fStack612 = fStack196 + D_8003FD94[0]; + fStack564 = fStack268 + D_8003FD94[0]; + fStack540 = fStack280 + D_8003FD94[0]; + fStack616 = fStack204; + fStack592 = fStack216; + fStack568 = fStack276; + fStack544 = fStack288; + proc_7F093FA4((int)&fStack628,fStack196); + proc_7F093FA4((int)&fStack604,extraout_f12_02); + proc_7F093FA4((int)&fStack580,extraout_f12_03); + proc_7F093FA4((int)&fStack556,extraout_f12_04); + break; + case 4: + fStack628 = fStack240 * fVar29; + fStack624 = fStack236 * fVar29; + fStack620 = fStack232 * fVar29; + fStack604 = fStack228 * fVar29; + fStack600 = fStack224 * fVar29; + fStack596 = fStack220 * fVar29; + fStack580 = fStack204 * fVar29; + fStack576 = fStack200 * fVar29; + fStack572 = fStack196 * fVar29; + fStack556 = fStack252 * fVar29; + uVar15 = 5; + fStack552 = fStack248 * fVar29; + fStack548 = fStack244 * fVar29; + fStack532 = fStack288 * fVar29; + fStack528 = fStack284 * fVar29; + fStack612 = fStack232 + D_8003FD94[0]; + fStack616 = fStack240; + fStack524 = fStack280 * fVar29; + fStack564 = fStack196 + D_8003FD94[0]; + fStack588 = fStack220 + D_8003FD94[0]; + fStack540 = fStack244 + D_8003FD94[0]; + fStack592 = fStack228; + fStack516 = fStack280 + D_8003FD94[0]; + fStack568 = fStack204; + fStack544 = fStack252; + fStack520 = fStack288; + proc_7F093FA4((int)&fStack628,fStack196); + proc_7F093FA4((int)&fStack604,extraout_f12_30); + proc_7F093FA4((int)&fStack580,extraout_f12_31); + proc_7F093FA4((int)&fStack556,extraout_f12_32); + proc_7F093FA4((int)&fStack532,extraout_f12_33); + break; + case 5: + fStack628 = fStack228 * fVar29; + fStack624 = fStack224 * fVar29; + fStack620 = fStack220 * fVar29; + fStack604 = fStack204 * fVar29; + fStack600 = fStack200 * fVar29; + fStack596 = fStack196 * fVar29; + fStack580 = fStack264 * fVar29; + fStack576 = fStack260 * fVar29; + fStack572 = fStack256 * fVar29; + fStack556 = fStack252 * fVar29; + uVar15 = 4; + fStack552 = fStack248 * fVar29; + fStack588 = fStack196 + D_8003FD94[0]; + fStack548 = fStack244 * fVar29; + fStack612 = fStack220 + D_8003FD94[0]; + fStack564 = fStack256 + D_8003FD94[0]; + fStack540 = fStack244 + D_8003FD94[0]; + fStack616 = fStack228; + fStack592 = fStack204; + fStack568 = fStack264; + fStack544 = fStack252; + proc_7F093FA4((int)&fStack628,fStack196); + proc_7F093FA4((int)&fStack604,extraout_f12_11); + proc_7F093FA4((int)&fStack580,extraout_f12_12); + proc_7F093FA4((int)&fStack556,extraout_f12_13); + break; + default: + return puStackX0; + case 7: + fStack628 = fStack204 * fVar29; + fStack624 = fStack200 * fVar29; + fStack620 = fStack196 * fVar29; + fStack604 = fStack252 * fVar29; + fStack600 = fStack248 * fVar29; + fStack596 = fStack244 * fVar29; + fStack580 = fStack276 * fVar29; + uVar15 = 3; + fStack576 = fStack272 * fVar29; + fStack588 = fStack244 + D_8003FD94[0]; + fStack572 = fStack268 * fVar29; + fStack612 = fStack196 + D_8003FD94[0]; + fStack564 = fStack268 + D_8003FD94[0]; + fStack616 = fStack204; + fStack592 = fStack252; + fStack568 = fStack276; + proc_7F093FA4((int)&fStack628,fStack196); + proc_7F093FA4((int)&fStack604,extraout_f12_20); + proc_7F093FA4((int)&fStack580,extraout_f12_21); + break; + case 8: + fStack628 = fStack216 * fVar29; + fStack624 = fStack212 * fVar29; + fStack620 = fStack208 * fVar29; + fStack604 = fStack240 * fVar29; + fStack600 = fStack236 * fVar29; + fStack596 = fStack232 * fVar29; + fStack580 = fStack228 * fVar29; + fStack576 = fStack224 * fVar29; + fStack572 = fStack220 * fVar29; + fStack556 = fStack276 * fVar29; + uVar15 = 5; + fStack552 = fStack272 * fVar29; + fStack548 = fStack268 * fVar29; + fStack532 = fStack252 * fVar29; + fStack528 = fStack248 * fVar29; + fStack612 = fStack208 + D_8003FD94[0]; + fStack616 = fStack216; + fStack524 = fStack244 * fVar29; + fStack564 = fStack220 + D_8003FD94[0]; + fStack588 = fStack232 + D_8003FD94[0]; + fStack540 = fStack268 + D_8003FD94[0]; + fStack592 = fStack240; + fStack516 = fStack244 + D_8003FD94[0]; + fStack568 = fStack228; + fStack544 = fStack276; + fStack520 = fStack252; + proc_7F093FA4((int)&fStack628,fStack268); + proc_7F093FA4((int)&fStack604,extraout_f12_34); + proc_7F093FA4((int)&fStack580,extraout_f12_35); + proc_7F093FA4((int)&fStack556,extraout_f12_36); + proc_7F093FA4((int)&fStack532,extraout_f12_37); + break; + case 10: + fStack628 = fStack216 * fVar29; + fStack624 = fStack212 * fVar29; + fStack620 = fStack208 * fVar29; + fStack604 = fStack240 * fVar29; + fStack600 = fStack236 * fVar29; + fStack596 = fStack232 * fVar29; + fStack580 = fStack252 * fVar29; + fStack576 = fStack248 * fVar29; + fStack572 = fStack244 * fVar29; + fStack556 = fStack264 * fVar29; + uVar15 = 4; + fStack552 = fStack260 * fVar29; + fStack588 = fStack232 + D_8003FD94[0]; + fStack548 = fStack256 * fVar29; + fStack612 = fStack208 + D_8003FD94[0]; + fStack564 = fStack244 + D_8003FD94[0]; + fStack540 = fStack256 + D_8003FD94[0]; + fStack616 = fStack216; + fStack592 = fStack240; + fStack568 = fStack252; + fStack544 = fStack264; + proc_7F093FA4((int)&fStack628,fStack244); + proc_7F093FA4((int)&fStack604,extraout_f12_08); + proc_7F093FA4((int)&fStack580,extraout_f12_09); + proc_7F093FA4((int)&fStack556,extraout_f12_10); + break; + case 0xb: + fStack628 = fStack216 * fVar29; + fStack624 = fStack212 * fVar29; + fStack620 = fStack208 * fVar29; + fStack604 = fStack288 * fVar29; + fStack600 = fStack284 * fVar29; + fStack596 = fStack280 * fVar29; + fStack580 = fStack252 * fVar29; + uVar15 = 3; + fStack576 = fStack248 * fVar29; + fStack588 = fStack280 + D_8003FD94[0]; + fStack572 = fStack244 * fVar29; + fStack612 = fStack208 + D_8003FD94[0]; + fStack564 = fStack244 + D_8003FD94[0]; + fStack616 = fStack216; + fStack592 = fStack288; + fStack568 = fStack252; + proc_7F093FA4((int)&fStack628,fStack244); + proc_7F093FA4((int)&fStack604,extraout_f12_18); + proc_7F093FA4((int)&fStack580,extraout_f12_19); + break; + case 0xc: + fStack628 = fStack240 * fVar29; + fStack624 = fStack236 * fVar29; + fStack620 = fStack232 * fVar29; + fStack604 = fStack228 * fVar29; + fStack600 = fStack224 * fVar29; + fStack596 = fStack220 * fVar29; + fStack580 = fStack288 * fVar29; + fStack576 = fStack284 * fVar29; + fStack572 = fStack280 * fVar29; + fStack556 = fStack276 * fVar29; + fStack552 = fStack272 * fVar29; + fStack588 = fStack220 + D_8003FD94[0]; + fStack548 = fStack268 * fVar29; + fStack612 = fStack232 + D_8003FD94[0]; + uVar15 = 4; + fStack564 = fStack280 + D_8003FD94[0]; + iStack640 = 1; + fStack540 = fStack268 + D_8003FD94[0]; + fStack616 = fStack240; + fStack592 = fStack228; + fStack568 = fStack288; + fStack544 = fStack276; + proc_7F093FA4((int)&fStack628,fStack268); + proc_7F093FA4((int)&fStack604,extraout_f12_05); + proc_7F093FA4((int)&fStack580,extraout_f12_06); + proc_7F093FA4((int)&fStack556,extraout_f12_07); + break; + case 0xd: + fStack628 = fStack228 * fVar29; + fStack624 = fStack224 * fVar29; + fStack620 = fStack220 * fVar29; + fStack604 = fStack276 * fVar29; + fStack600 = fStack272 * fVar29; + fStack596 = fStack268 * fVar29; + fStack580 = fStack264 * fVar29; + uVar15 = 3; + fStack576 = fStack260 * fVar29; + fStack588 = fStack268 + D_8003FD94[0]; + fStack572 = fStack256 * fVar29; + fStack612 = fStack220 + D_8003FD94[0]; + fStack564 = fStack256 + D_8003FD94[0]; + fStack616 = fStack228; + fStack592 = fStack276; + fStack568 = fStack264; + proc_7F093FA4((int)&fStack628,fStack268); + proc_7F093FA4((int)&fStack604,extraout_f12_16); + proc_7F093FA4((int)&fStack580,extraout_f12_17); + break; + case 0xe: + fStack628 = fStack240 * fVar29; + fStack624 = fStack236 * fVar29; + fStack620 = fStack232 * fVar29; + fStack604 = fStack264 * fVar29; + fStack600 = fStack260 * fVar29; + fStack596 = fStack256 * fVar29; + fStack580 = fStack288 * fVar29; + uVar15 = 3; + fStack576 = fStack284 * fVar29; + fStack588 = fStack256 + D_8003FD94[0]; + fStack572 = fStack280 * fVar29; + fStack612 = fStack232 + D_8003FD94[0]; + fStack564 = fStack280 + D_8003FD94[0]; + fStack616 = fStack240; + fStack592 = fStack264; + fStack568 = fStack288; + proc_7F093FA4((int)&fStack628,fStack280); + proc_7F093FA4((int)&fStack604,extraout_f12_14); + proc_7F093FA4((int)&fStack580,extraout_f12_15); + break; + case 0xf: + uVar15 = 0; + } if (uVar15 != 0) { - pfStack1624 = &fStack628; - puVar14 = auStack1084; - fVar20 = extraout_f12_38; - fVar24 = extraout_f14; - do { - proc_7F097388(pfStack1624,afStack804,0x82,fVar20,fVar24,(float *)flt_80057584); - fVar17 = getPlayer_c_screenleft(); - fVar18 = getPlayer_c_screenleft(); - fVar19 = getPlayer_c_screenwidth(); - fVar20 = proc_7F093C48(*(float *)(puVar14 + 0x28),(float)fVar17 * 4.00000000,extraout_a0, - extraout_a1,((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000 - ); - *(float *)(puVar14 + 0x28) = fVar20; - fVar17 = getPlayer_c_screentop(); - fVar18 = getPlayer_c_screentop(); - fVar19 = getPlayer_c_screenheight(); - fVar20 = proc_7F093C48(*(float *)(puVar14 + 0x2c),(float)fVar17 * 4.00000000,extraout_a0_00, - extraout_a1_00, - ((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000); - *(float *)(puVar14 + 0x2c) = fVar20; - fVar17 = getPlayer_c_screentop(); - fVar20 = extraout_f12_39; - fVar24 = extraout_f14_00; - if ((float)fVar17 * 4.00000000 + 4.00000000 < *(float *)(puVar14 + 0x2c)) { - fVar17 = getPlayer_c_screentop(); - fVar18 = getPlayer_c_screenheight(); - fVar20 = extraout_f12_40; - fVar24 = extraout_f14_01; - if (*(float *)(puVar14 + 0x2c) < ((float)fVar18 + (float)fVar17) * 4.00000000 - 4.00000000 - ) { - *(float *)(puVar14 + 0x2c) = *(float *)(puVar14 + 0x2c) - 4.00000000; - fVar20 = extraout_f12_40; - fVar24 = extraout_f14_01; - } + pfVar5 = (float *)get_BONDdata_field_10DC(); + pfVar6 = (float *)get_BONDdata_field_10CC(); + proc_7F0580C8(pfVar5,pfVar6,(int)afStack740); + guScaleF(mf_4__4_,x,(float)&DAT_80079e98,1.00000000 / fVar29); + proc_7F0580C8(afStack740,(float *)&DAT_80079e98,(int)afStack804); + uStack1088 = 0; + if (uVar15 != 0) { + pfStack1624 = &fStack628; + puVar14 = auStack1084; + fVar20 = extraout_f12_38; + fVar24 = extraout_f14; + do { + proc_7F097388(pfStack1624,afStack804,0x82,fVar20,fVar24,(float *)flt_80057584); + fVar17 = getPlayer_c_screenleft(); + fVar18 = getPlayer_c_screenleft(); + fVar19 = getPlayer_c_screenwidth(); + fVar20 = proc_7F093C48(*(float *)(puVar14 + 0x28),(float)fVar17 * 4.00000000, + extraout_a0,extraout_a1, + ((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000); + *(float *)(puVar14 + 0x28) = fVar20; + fVar17 = getPlayer_c_screentop(); + fVar18 = getPlayer_c_screentop(); + fVar19 = getPlayer_c_screenheight(); + fVar20 = proc_7F093C48(*(float *)(puVar14 + 0x2c),(float)fVar17 * 4.00000000, + extraout_a0_00,extraout_a1_00, + ((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000); + *(float *)(puVar14 + 0x2c) = fVar20; + fVar17 = getPlayer_c_screentop(); + fVar20 = extraout_f12_39; + fVar24 = extraout_f14_00; + if ((float)fVar17 * 4.00000000 + 4.00000000 < *(float *)(puVar14 + 0x2c)) { + fVar17 = getPlayer_c_screentop(); + fVar18 = getPlayer_c_screenheight(); + fVar20 = extraout_f12_40; + fVar24 = extraout_f14_01; + if (*(float *)(puVar14 + 0x2c) < + ((float)fVar18 + (float)fVar17) * 4.00000000 - 4.00000000) { + *(float *)(puVar14 + 0x2c) = *(float *)(puVar14 + 0x2c) - 4.00000000; + } + } + puVar14 = puVar14 + 0x38; + pfStack1624 = pfStack1624 + 6; + uStack1088 += 1; + } while (uStack1088 != uVar15); } - puVar14 = puVar14 + 0x38; - pfStack1624 = pfStack1624 + 6; - uStack1088 += 1; - } while (uStack1088 != uVar15); - } - puVar3 = get_ptr_currentdata(); - if (*(char *)(puVar3 + 8) == '\0') { - fVar28 = 0.00000000; - iVar12 = 0; - fVar24 = 0.00000000; - fVar20 = flt_80057588; - fVar26 = flt_8005758C; - if (uVar15 != 0) { - if ((uVar15 & 1) == 0) { - iVar13 = 0; - fVar20 = flt_80057588; - fVar26 = flt_8005758C; - } - else { - iVar12 = 1; - fVar20 = afStack1044[0]; - if (flt_80057588 <= afStack1044[0]) { + puVar2 = get_ptr_currentdata(); + if (*(char *)(puVar2 + 8) == '\0') { + fVar28 = 0.00000000; + iVar12 = 0; + fVar24 = 0.00000000; fVar20 = flt_80057588; - } - if (afStack1044[0] <= 0.00000000) { - afStack1044[0] = fVar24; - } - fVar24 = afStack1044[0]; - fVar26 = afStack1044[1]; - if (flt_8005758C <= afStack1044[1]) { fVar26 = flt_8005758C; - } - fVar21 = afStack1044[1]; - if (afStack1044[1] <= 0.00000000) { - fVar21 = fVar28; - } - fVar28 = fVar21; - iVar13 = 8; - if (uVar15 == 1) goto LAB_7f095adc; - } - fVar21 = afStack1044[(iVar13 - iVar12) * 2]; - puVar14 = auStack1084 + (iVar13 - iVar12) * 8; - while( true ) { - fVar23 = fVar21; - if (fVar20 <= fVar21) { - fVar23 = fVar20; - } - if (fVar24 < fVar21) { - fVar22 = *(float *)(puVar14 + 0x2c); - } - else { - fVar22 = *(float *)(puVar14 + 0x2c); - fVar21 = fVar24; - } - fVar25 = fVar22; - if (fVar26 <= fVar22) { - fVar25 = fVar26; - } - if (fVar28 < fVar22) { - fVar24 = *(float *)(puVar14 + 0x60); - } - else { - fVar24 = *(float *)(puVar14 + 0x60); - fVar22 = fVar28; - } - fVar20 = fVar24; - if (fVar23 <= fVar24) { - fVar20 = fVar23; - } - if (fVar21 < fVar24) { - fVar28 = *(float *)(puVar14 + 100); - } - else { - fVar28 = *(float *)(puVar14 + 100); - fVar24 = fVar21; - } - fVar26 = fVar28; - if (fVar25 <= fVar28) { - fVar26 = fVar25; - } - if (fVar28 <= fVar22) { - fVar28 = fVar22; - } - if (puVar14 + 0x70 == auStack1084 + uVar15 * 0x38) break; - fVar21 = *(float *)(puVar14 + 0x98); - puVar14 = puVar14 + 0x70; - } - } + if (uVar15 != 0) { + if ((uVar15 & 1) == 0) { + iVar13 = 0; + } + else { + iVar12 = 1; + fVar20 = afStack1044[0]; + if (flt_80057588 <= afStack1044[0]) { + fVar20 = flt_80057588; + } + if (afStack1044[0] <= 0.00000000) { + afStack1044[0] = fVar24; + } + fVar24 = afStack1044[0]; + fVar26 = afStack1044[1]; + if (flt_8005758C <= afStack1044[1]) { + fVar26 = flt_8005758C; + } + fVar21 = afStack1044[1]; + if (afStack1044[1] <= 0.00000000) { + fVar21 = fVar28; + } + fVar28 = fVar21; + iVar13 = 8; + if (uVar15 == 1) goto LAB_7f095adc; + } + fVar21 = afStack1044[(iVar13 - iVar12) * 2]; + puVar14 = auStack1084 + (iVar13 - iVar12) * 8; + while( true ) { + fVar23 = fVar21; + if (fVar20 <= fVar21) { + fVar23 = fVar20; + } + if (fVar24 < fVar21) { + fVar22 = *(float *)(puVar14 + 0x2c); + } + else { + fVar22 = *(float *)(puVar14 + 0x2c); + fVar21 = fVar24; + } + fVar25 = fVar22; + if (fVar26 <= fVar22) { + fVar25 = fVar26; + } + if (fVar28 < fVar22) { + fVar24 = *(float *)(puVar14 + 0x60); + } + else { + fVar24 = *(float *)(puVar14 + 0x60); + fVar22 = fVar28; + } + fVar20 = fVar24; + if (fVar23 <= fVar24) { + fVar20 = fVar23; + } + if (fVar21 < fVar24) { + fVar28 = *(float *)(puVar14 + 100); + } + else { + fVar28 = *(float *)(puVar14 + 100); + fVar24 = fVar21; + } + fVar26 = fVar28; + if (fVar25 <= fVar28) { + fVar26 = fVar25; + } + if (fVar28 <= fVar22) { + fVar28 = fVar22; + } + if (puVar14 + 0x70 == auStack1084 + uVar15 * 0x38) break; + fVar21 = *(float *)(puVar14 + 0x98); + puVar14 = puVar14 + 0x70; + } + } LAB_7f095adc: - puStackX0[1] = 0; - *puStackX0 = 0xe7000000; - puStackX0[3] = 0x300000; - puStackX0[2] = 0xba001402; - puStackX0[4] = 0xb900031d; - puStackX0[5] = 0; - puStackX0[6] = 0xba001301; - puStackX0[7] = 0; - puStackX0[8] = ((int)(fVar24 * 0.25000000) & 0x3ffU) << 0xe | 0xf6000000 | - ((int)(fVar28 * 0.25000000) & 0x3ffU) << 2; - puStackX0[9] = ((int)(fVar20 * 0.25000000) & 0x3ffU) << 0xe | - ((int)(fVar26 * 0.25000000) & 0x3ffU) << 2; - puStackX0[0xb] = 0; - puStackX0[10] = 0xe7000000; - puStackX0[0xd] = 0x80000; - puStackX0[0xc] = 0xba001301; - puStackX0 = puStackX0 + 0xe; - } - else { - puStackX0[1] = 0; - *puStackX0 = 0xe7000000; - puStackX0 = puStackX0 + 2; - puVar3 = get_ptr_currentdata(); - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec, - (uint *)((int)*(short *)(puVar3 + 10) * 0xc + DAT_8008d124),1,0,2); - puVar3 = proc_7F09343C(puStackX0,0); - puStackX0 = puVar3 + 2; - puVar3[1] = 0xf0a4000; - *puVar3 = 0xb900031d; - if (uVar15 == 4) { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack1028,(int)auStack916, - extraout_f12_41,0x43020000); - if (iStack640 != 0) { - fStack984 = fStack984 + 1.00000000; - afStack1044[1] = afStack1044[1] + 1.00000000; - fStack928 = fStack928 + 1.00000000; - fStack872 = fStack872 + 1.00000000; - } - puStackX0 = proc_7F097818(puStackX0,(int)auStack916,(int)auStack972,(int)auStack1084, - extraout_f12_42,0x43020000); - } - else { - if (uVar15 == 5) { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack1028,(int)auStack972, - extraout_f12_41,0x43020000); - puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack972,(int)auStack916, - extraout_f12_43,0x43020000); - puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack916,(int)auStack860, - extraout_f12_44,0x43020000); + puStackX0[1] = 0; + *puStackX0 = 0xe7000000; + puStackX0[3] = 0x300000; + puStackX0[2] = 0xba001402; + puStackX0[4] = 0xb900031d; + puStackX0[5] = 0; + puStackX0[6] = 0xba001301; + puStackX0[7] = 0; + puStackX0[8] = ((int)(fVar24 * 0.25000000) & 0x3ffU) << 0xe | 0xf6000000 | + ((int)(fVar28 * 0.25000000) & 0x3ffU) << 2; + puStackX0[9] = ((int)(fVar20 * 0.25000000) & 0x3ffU) << 0xe | + ((int)(fVar26 * 0.25000000) & 0x3ffU) << 2; + puStackX0[0xb] = 0; + puStackX0[10] = 0xe7000000; + puStackX0[0xd] = 0x80000; + puStackX0[0xc] = 0xba001301; + puStackX0 = puStackX0 + 0xe; } else { - if (uVar15 == 3) { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack1028,(int)auStack972, - extraout_f12_41,0x43020000); - } + puStackX0[1] = 0; + *puStackX0 = 0xe7000000; + puStackX0 = puStackX0 + 2; + puVar2 = get_ptr_currentdata(); + append_image_to_DL((uint **)register0x000000ec,skywaterimages + *(short *)(puVar2 + 10), + 1,0,2); + puVar2 = proc_7F09343C(puStackX0,0); + puStackX0 = puVar2 + 2; + puVar2[1] = 0xf0a4000; + *puVar2 = 0xb900031d; + if (uVar15 == 4) { + puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack1028, + (int)auStack916,extraout_f12_41,0x43020000); + if (iStack640 != 0) { + fStack984 = fStack984 + 1.00000000; + afStack1044[1] = afStack1044[1] + 1.00000000; + fStack928 = fStack928 + 1.00000000; + fStack872 = fStack872 + 1.00000000; + } + puStackX0 = proc_7F097818(puStackX0,(int)auStack916,(int)auStack972,(int)auStack1084 + ,extraout_f12_42,0x43020000); + } + else { + if (uVar15 == 5) { + puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack1028, + (int)auStack972,extraout_f12_41,0x43020000); + puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack972, + (int)auStack916,extraout_f12_43,0x43020000); + puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack916, + (int)auStack860,extraout_f12_44,0x43020000); + } + else { + if (uVar15 == 3) { + puStackX0 = proc_7F097818(puStackX0,(int)auStack1084,(int)auStack1028, + (int)auStack972,extraout_f12_41,0x43020000); + } + } + } } - } } - } - if (false) { - return puStackX0; - } - switch(uVar16) { - case 0: - return puStackX0; - case 1: - fStack508 = fStack144 * fVar29; - fStack504 = fStack140 * fVar29; - fStack500 = fStack136 * fVar29; - fStack484 = fStack168 * fVar29; - fStack480 = fStack164 * fVar29; - fStack476 = fStack160 * fVar29; - fStack460 = fStack192 * fVar29; - fStack456 = fStack188 * fVar29; - iVar12 = 3; - fStack452 = fStack184 * fVar29; - fStack496 = fStack144 * fVar27; - fStack472 = fStack168 * fVar27; - fStack492 = fStack136 * fVar27 + DAT_8003fd94; - fStack448 = fStack192 * fVar27; - fStack468 = fStack160 * fVar27 + DAT_8003fd94; - fStack444 = fStack184 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack184); - proc_7F093CB0((int)&fStack484,extraout_f12_60); - proc_7F093CB0((int)&fStack460,extraout_f12_61); - break; - case 2: - fStack508 = fStack132 * fVar29; - fStack504 = fStack128 * fVar29; - fStack500 = fStack124 * fVar29; - fStack484 = fStack180 * fVar29; - fStack480 = fStack176 * fVar29; - fStack476 = fStack172 * fVar29; - fStack460 = fStack168 * fVar29; - fStack456 = fStack164 * fVar29; - iVar12 = 3; - fStack452 = fStack160 * fVar29; - fStack496 = fStack132 * fVar27; - fStack472 = fStack180 * fVar27; - fStack492 = fStack124 * fVar27 + DAT_8003fd94; - fStack448 = fStack168 * fVar27; - fStack468 = fStack172 * fVar27 + DAT_8003fd94; - fStack444 = fStack160 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack180); - proc_7F093CB0((int)&fStack484,extraout_f12_62); - proc_7F093CB0((int)&fStack460,extraout_f12_63); - break; - case 3: - fStack508 = fStack144 * fVar29; - fStack504 = fStack140 * fVar29; - fStack500 = fStack136 * fVar29; - fStack484 = fStack132 * fVar29; - fStack480 = fStack128 * fVar29; - fStack476 = fStack124 * fVar29; - fStack460 = fStack192 * fVar29; - fStack456 = fStack188 * fVar29; - fStack452 = fStack184 * fVar29; - iVar12 = 4; - fStack436 = fStack180 * fVar29; - fStack432 = fStack176 * fVar29; - fStack428 = fStack172 * fVar29; - fStack496 = fStack144 * fVar27; - fStack472 = fStack132 * fVar27; - fStack492 = fStack136 * fVar27 + DAT_8003fd94; - fStack448 = fStack192 * fVar27; - fStack468 = fStack124 * fVar27 + DAT_8003fd94; - fStack424 = fStack180 * fVar27; - fStack444 = fStack184 * fVar27 + DAT_8003fd94; - fStack420 = fStack172 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack180); - proc_7F093CB0((int)&fStack484,extraout_f12_51); - proc_7F093CB0((int)&fStack460,extraout_f12_52); - proc_7F093CB0((int)&fStack436,extraout_f12_53); - break; - case 4: - fStack508 = fStack120 * fVar29; - fStack504 = fStack116 * fVar29; - fStack500 = fStack112 * fVar29; - fStack484 = fStack192 * fVar29; - fStack480 = fStack188 * fVar29; - fStack476 = fStack184 * fVar29; - fStack460 = fStack156 * fVar29; - fStack456 = fStack152 * fVar29; - iVar12 = 3; - fStack452 = fStack148 * fVar29; - fStack496 = fStack120 * fVar27; - fStack472 = fStack192 * fVar27; - fStack492 = fStack112 * fVar27 + DAT_8003fd94; - fStack448 = fStack156 * fVar27; - fStack468 = fStack184 * fVar27 + DAT_8003fd94; - fStack444 = fStack148 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack184); - proc_7F093CB0((int)&fStack484,extraout_f12_64); - proc_7F093CB0((int)&fStack460,extraout_f12_65); - break; - case 5: - fStack508 = fStack120 * fVar29; - fStack504 = fStack116 * fVar29; - fStack500 = fStack112 * fVar29; - fStack484 = fStack144 * fVar29; - fStack480 = fStack140 * fVar29; - fStack476 = fStack136 * fVar29; - fStack460 = fStack156 * fVar29; - fStack456 = fStack152 * fVar29; - fStack452 = fStack148 * fVar29; - iVar12 = 4; - fStack436 = fStack168 * fVar29; - fStack432 = fStack164 * fVar29; - fStack428 = fStack160 * fVar29; - fStack496 = fStack120 * fVar27; - fStack472 = fStack144 * fVar27; - fStack492 = fStack112 * fVar27 + DAT_8003fd94; - fStack448 = fStack156 * fVar27; - fStack468 = fStack136 * fVar27 + DAT_8003fd94; - fStack424 = fStack168 * fVar27; - fStack444 = fStack148 * fVar27 + DAT_8003fd94; - fStack420 = fStack160 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack168); - proc_7F093CB0((int)&fStack484,extraout_f12_54); - proc_7F093CB0((int)&fStack460,extraout_f12_55); - proc_7F093CB0((int)&fStack436,extraout_f12_56); - break; - default: - goto LAB_7f097360; - case 7: - fStack508 = fStack120 * fVar29; - fStack504 = fStack116 * fVar29; - fStack500 = fStack112 * fVar29; - fStack484 = fStack144 * fVar29; - fStack480 = fStack140 * fVar29; - fStack476 = fStack136 * fVar29; - fStack460 = fStack132 * fVar29; - fStack456 = fStack128 * fVar29; - fStack452 = fStack124 * fVar29; - fStack436 = fStack180 * fVar29; - iVar12 = 5; - fStack432 = fStack176 * fVar29; - fStack428 = fStack172 * fVar29; - fStack412 = fStack156 * fVar29; - fStack408 = fStack152 * fVar29; - fStack404 = fStack148 * fVar29; - fStack496 = fStack120 * fVar27; - fStack472 = fStack144 * fVar27; - fStack492 = fStack112 * fVar27 + DAT_8003fd94; - fStack448 = fStack132 * fVar27; - fStack468 = fStack136 * fVar27 + DAT_8003fd94; - fStack424 = fStack180 * fVar27; - fStack444 = fStack124 * fVar27 + DAT_8003fd94; - fStack400 = fStack156 * fVar27; - fStack420 = fStack172 * fVar27 + DAT_8003fd94; - fStack396 = fStack148 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack180); - proc_7F093CB0((int)&fStack484,extraout_f12_80); - proc_7F093CB0((int)&fStack460,extraout_f12_81); - proc_7F093CB0((int)&fStack436,extraout_f12_82); - proc_7F093CB0((int)&fStack412,extraout_f12_83); - break; - case 8: - fStack508 = fStack108 * fVar29; - fStack504 = fStack104 * fVar29; - fStack500 = fStack100 * fVar29; - fStack484 = fStack156 * fVar29; - fStack480 = fStack152 * fVar29; - fStack476 = fStack148 * fVar29; - fStack460 = fStack180 * fVar29; - fStack456 = fStack176 * fVar29; - iVar12 = 3; - fStack452 = fStack172 * fVar29; - fStack496 = fStack108 * fVar27; - fStack472 = fStack156 * fVar27; - fStack492 = fStack100 * fVar27 + DAT_8003fd94; - fStack448 = fStack180 * fVar27; - fStack468 = fStack148 * fVar27 + DAT_8003fd94; - fStack444 = fStack172 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack100); - proc_7F093CB0((int)&fStack484,extraout_f12_66); - proc_7F093CB0((int)&fStack460,extraout_f12_67); - break; - case 10: - fStack508 = fStack132 * fVar29; - fStack504 = fStack128 * fVar29; - fStack500 = fStack124 * fVar29; - fStack484 = fStack108 * fVar29; - fStack480 = fStack104 * fVar29; - fStack476 = fStack100 * fVar29; - fStack460 = fStack168 * fVar29; - fStack456 = fStack164 * fVar29; - fStack452 = fStack160 * fVar29; - iVar12 = 4; - fStack436 = fStack156 * fVar29; - fStack432 = fStack152 * fVar29; - fStack428 = fStack148 * fVar29; - fStack496 = fStack132 * fVar27; - fStack472 = fStack108 * fVar27; - fStack492 = fStack124 * fVar27 + DAT_8003fd94; - fStack448 = fStack168 * fVar27; - fStack468 = fStack100 * fVar27 + DAT_8003fd94; - fStack424 = fStack156 * fVar27; - fStack444 = fStack160 * fVar27 + DAT_8003fd94; - fStack420 = fStack148 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack100); - proc_7F093CB0((int)&fStack484,extraout_f12_57); - proc_7F093CB0((int)&fStack460,extraout_f12_58); - proc_7F093CB0((int)&fStack436,extraout_f12_59); - break; - case 0xb: - fStack508 = fStack144 * fVar29; - fStack504 = fStack140 * fVar29; - fStack500 = fStack136 * fVar29; - fStack484 = fStack132 * fVar29; - fStack480 = fStack128 * fVar29; - fStack476 = fStack124 * fVar29; - iVar12 = 5; - fStack460 = fStack108 * fVar29; - fStack456 = fStack104 * fVar29; - fStack452 = fStack100 * fVar29; - fStack436 = fStack156 * fVar29; - fStack432 = fStack152 * fVar29; - fStack428 = fStack148 * fVar29; - fStack412 = fStack192 * fVar29; - fStack408 = fStack188 * fVar29; - fStack404 = fStack184 * fVar29; - fStack496 = fStack144 * fVar27; - fStack472 = fStack132 * fVar27; - fStack492 = fStack136 * fVar27 + DAT_8003fd94; - fStack448 = fStack108 * fVar27; - fStack468 = fStack124 * fVar27 + DAT_8003fd94; - fStack424 = fStack156 * fVar27; - fStack444 = fStack100 * fVar27 + DAT_8003fd94; - fStack400 = fStack192 * fVar27; - fStack420 = fStack148 * fVar27 + DAT_8003fd94; - fStack396 = fStack184 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack100); - proc_7F093CB0((int)&fStack484,extraout_f12_76); - proc_7F093CB0((int)&fStack460,extraout_f12_77); - proc_7F093CB0((int)&fStack436,extraout_f12_78); - proc_7F093CB0((int)&fStack412,extraout_f12_79); - break; - case 0xc: - fStack508 = fStack108 * fVar29; - fStack504 = fStack104 * fVar29; - fStack500 = fStack100 * fVar29; - fStack484 = fStack120 * fVar29; - fStack480 = fStack116 * fVar29; - fStack476 = fStack112 * fVar29; - fStack460 = fStack180 * fVar29; - fStack456 = fStack176 * fVar29; - fStack452 = fStack172 * fVar29; - fStack436 = fStack192 * fVar29; - iVar12 = 4; - fStack432 = fStack188 * fVar29; - fStack428 = fStack184 * fVar29; - fStack496 = fStack108 * fVar27; - fStack472 = fStack120 * fVar27; - fStack492 = fStack100 * fVar27 + DAT_8003fd94; - fStack448 = fStack180 * fVar27; - fStack468 = fStack112 * fVar27 + DAT_8003fd94; - fStack424 = fStack192 * fVar27; - fStack444 = fStack172 * fVar27 + DAT_8003fd94; - fStack420 = fStack184 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack100); - proc_7F093CB0((int)&fStack484,extraout_f12_48); - proc_7F093CB0((int)&fStack460,extraout_f12_49); - proc_7F093CB0((int)&fStack436,extraout_f12_50); - break; - case 0xd: - fStack508 = fStack108 * fVar29; - fStack504 = fStack104 * fVar29; - fStack500 = fStack100 * fVar29; - fStack484 = fStack120 * fVar29; - fStack480 = fStack116 * fVar29; - fStack476 = fStack112 * fVar29; - fStack460 = fStack144 * fVar29; - fStack456 = fStack140 * fVar29; - fStack452 = fStack136 * fVar29; - fStack436 = fStack168 * fVar29; - iVar12 = 5; - fStack432 = fStack164 * fVar29; - fStack428 = fStack160 * fVar29; - fStack412 = fStack180 * fVar29; - fStack408 = fStack176 * fVar29; - fStack404 = fStack172 * fVar29; - fStack496 = fStack108 * fVar27; - fStack472 = fStack120 * fVar27; - fStack492 = fStack100 * fVar27 + DAT_8003fd94; - fStack448 = fStack144 * fVar27; - fStack468 = fStack112 * fVar27 + DAT_8003fd94; - fStack444 = fStack136 * fVar27 + DAT_8003fd94; - fStack424 = fStack168 * fVar27; - fStack400 = fStack180 * fVar27; - fStack420 = fStack160 * fVar27 + DAT_8003fd94; - fStack396 = fStack172 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack100); - proc_7F093CB0((int)&fStack484,extraout_f12_72); - proc_7F093CB0((int)&fStack460,extraout_f12_73); - proc_7F093CB0((int)&fStack436,extraout_f12_74); - proc_7F093CB0((int)&fStack412,extraout_f12_75); - break; - case 0xe: - fStack508 = fStack132 * fVar29; - fStack504 = fStack128 * fVar29; - fStack500 = fStack124 * fVar29; - fStack484 = fStack108 * fVar29; - fStack480 = fStack104 * fVar29; - fStack476 = fStack100 * fVar29; - fStack460 = fStack120 * fVar29; - fStack456 = fStack116 * fVar29; - fStack452 = fStack112 * fVar29; - fStack436 = fStack192 * fVar29; - iVar12 = 5; - fStack432 = fStack188 * fVar29; - fStack428 = fStack184 * fVar29; - fStack412 = fStack168 * fVar29; - fStack408 = fStack164 * fVar29; - fStack404 = fStack160 * fVar29; - fStack496 = fStack132 * fVar27; - fStack472 = fStack108 * fVar27; - fStack492 = fStack124 * fVar27 + DAT_8003fd94; - fStack448 = fStack120 * fVar27; - fStack468 = fStack100 * fVar27 + DAT_8003fd94; - fStack424 = fStack192 * fVar27; - fStack444 = fStack112 * fVar27 + DAT_8003fd94; - fStack400 = fStack168 * fVar27; - fStack420 = fStack184 * fVar27 + DAT_8003fd94; - fStack396 = fStack160 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack100); - proc_7F093CB0((int)&fStack484,extraout_f12_68); - proc_7F093CB0((int)&fStack460,extraout_f12_69); - proc_7F093CB0((int)&fStack436,extraout_f12_70); - proc_7F093CB0((int)&fStack412,extraout_f12_71); - break; - case 0xf: - fStack508 = fStack108 * fVar29; - fStack504 = fStack104 * fVar29; - fStack500 = fStack100 * fVar29; - fStack484 = fStack120 * fVar29; - fStack480 = fStack116 * fVar29; - fStack476 = fStack112 * fVar29; - fStack460 = fStack132 * fVar29; - fStack456 = fStack128 * fVar29; - fStack452 = fStack124 * fVar29; - fStack436 = fStack144 * fVar29; - iVar12 = 4; - fStack432 = fStack140 * fVar29; - fStack428 = fStack136 * fVar29; - fStack496 = fStack108 * fVar27; - fStack472 = fStack120 * fVar27; - fStack492 = fStack100 * fVar27 + DAT_8003fd94; - fStack448 = fStack132 * fVar27; - fStack468 = fStack112 * fVar27 + DAT_8003fd94; - fStack424 = fStack144 * fVar27; - fStack444 = fStack124 * fVar27 + DAT_8003fd94; - fStack420 = fStack136 * fVar27 + DAT_8003fd94; - proc_7F093CB0((int)&fStack508,fStack100); - proc_7F093CB0((int)&fStack484,extraout_f12_45); - proc_7F093CB0((int)&fStack460,extraout_f12_46); - proc_7F093CB0((int)&fStack436,extraout_f12_47); - } - pfStack1624 = (float *)(1.00000000 / fVar29); - puStackX0[1] = 0; - *puStackX0 = 0xe7000000; - puStackX0 = puStackX0 + 2; - puVar3 = get_ptr_currentdata(); - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,(uint *)((int)*(short *)(puVar3 + 4) * 0xc + DAT_8008d124), - 1,0,2); - *puStackX0 = 0xfb000000; - puStack1160 = puStackX0; - puStackX0 = puStackX0 + 2; - puVar3 = get_ptr_currentdata(); - DL = get_ptr_currentdata(); - puVar7 = get_ptr_currentdata(); - puStack1160[1] = - (uint)*(byte *)((int)puVar7 + 10) << 8 | (uint)*(byte *)(DL + 2) << 0x18 | - (uint)*(byte *)((int)puVar3 + 9) << 0x10 | 0xff; - puStackX0[1] = 0x55fef97c; - *puStackX0 = 0xfc40fe81; - puStackX0 = puStackX0 + 2; - pfVar5 = (float *)proc_7F0783E4(); - pfVar6 = (float *)proc_7F0783C4(); - proc_7F0580C8(pfVar5,pfVar6,(int)afStack1228); - guScaleF(mf_4__4__00,x_00,(float)&DAT_80079e98,(float)pfStack1624); - proc_7F0580C8(afStack1228,(float *)&DAT_80079e98,(int)afStack1292); - iStack1576 = 0; - fVar29 = extraout_f12_84; - if (iVar12 != 0) { - pfStack1624 = &fStack508; - puVar14 = auStack1572; + if (false) { + return puStackX0; + } + switch(uVar16) { + case 0: + return puStackX0; + case 1: + fStack508 = fStack144 * fVar29; + fStack504 = fStack140 * fVar29; + fStack500 = fStack136 * fVar29; + fStack484 = fStack168 * fVar29; + fStack480 = fStack164 * fVar29; + fStack476 = fStack160 * fVar29; + fStack460 = fStack192 * fVar29; + fStack456 = fStack188 * fVar29; + iVar12 = 3; + fStack452 = fStack184 * fVar29; + fStack496 = fStack144 * fVar27; + fStack472 = fStack168 * fVar27; + fStack492 = fStack136 * fVar27 + D_8003FD94[0]; + fStack448 = fStack192 * fVar27; + fStack468 = fStack160 * fVar27 + D_8003FD94[0]; + fStack444 = fStack184 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack184); + proc_7F093CB0((int)&fStack484,extraout_f12_60); + proc_7F093CB0((int)&fStack460,extraout_f12_61); + break; + case 2: + fStack508 = fStack132 * fVar29; + fStack504 = fStack128 * fVar29; + fStack500 = fStack124 * fVar29; + fStack484 = fStack180 * fVar29; + fStack480 = fStack176 * fVar29; + fStack476 = fStack172 * fVar29; + fStack460 = fStack168 * fVar29; + fStack456 = fStack164 * fVar29; + iVar12 = 3; + fStack452 = fStack160 * fVar29; + fStack496 = fStack132 * fVar27; + fStack472 = fStack180 * fVar27; + fStack492 = fStack124 * fVar27 + D_8003FD94[0]; + fStack448 = fStack168 * fVar27; + fStack468 = fStack172 * fVar27 + D_8003FD94[0]; + fStack444 = fStack160 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack180); + proc_7F093CB0((int)&fStack484,extraout_f12_62); + proc_7F093CB0((int)&fStack460,extraout_f12_63); + break; + case 3: + fStack508 = fStack144 * fVar29; + fStack504 = fStack140 * fVar29; + fStack500 = fStack136 * fVar29; + fStack484 = fStack132 * fVar29; + fStack480 = fStack128 * fVar29; + fStack476 = fStack124 * fVar29; + fStack460 = fStack192 * fVar29; + fStack456 = fStack188 * fVar29; + fStack452 = fStack184 * fVar29; + iVar12 = 4; + fStack436 = fStack180 * fVar29; + fStack432 = fStack176 * fVar29; + fStack428 = fStack172 * fVar29; + fStack496 = fStack144 * fVar27; + fStack472 = fStack132 * fVar27; + fStack492 = fStack136 * fVar27 + D_8003FD94[0]; + fStack448 = fStack192 * fVar27; + fStack468 = fStack124 * fVar27 + D_8003FD94[0]; + fStack424 = fStack180 * fVar27; + fStack444 = fStack184 * fVar27 + D_8003FD94[0]; + fStack420 = fStack172 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack180); + proc_7F093CB0((int)&fStack484,extraout_f12_51); + proc_7F093CB0((int)&fStack460,extraout_f12_52); + proc_7F093CB0((int)&fStack436,extraout_f12_53); + break; + case 4: + fStack508 = fStack120 * fVar29; + fStack504 = fStack116 * fVar29; + fStack500 = fStack112 * fVar29; + fStack484 = fStack192 * fVar29; + fStack480 = fStack188 * fVar29; + fStack476 = fStack184 * fVar29; + fStack460 = fStack156 * fVar29; + fStack456 = fStack152 * fVar29; + iVar12 = 3; + fStack452 = fStack148 * fVar29; + fStack496 = fStack120 * fVar27; + fStack472 = fStack192 * fVar27; + fStack492 = fStack112 * fVar27 + D_8003FD94[0]; + fStack448 = fStack156 * fVar27; + fStack468 = fStack184 * fVar27 + D_8003FD94[0]; + fStack444 = fStack148 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack184); + proc_7F093CB0((int)&fStack484,extraout_f12_64); + proc_7F093CB0((int)&fStack460,extraout_f12_65); + break; + case 5: + fStack508 = fStack120 * fVar29; + fStack504 = fStack116 * fVar29; + fStack500 = fStack112 * fVar29; + fStack484 = fStack144 * fVar29; + fStack480 = fStack140 * fVar29; + fStack476 = fStack136 * fVar29; + fStack460 = fStack156 * fVar29; + fStack456 = fStack152 * fVar29; + fStack452 = fStack148 * fVar29; + iVar12 = 4; + fStack436 = fStack168 * fVar29; + fStack432 = fStack164 * fVar29; + fStack428 = fStack160 * fVar29; + fStack496 = fStack120 * fVar27; + fStack472 = fStack144 * fVar27; + fStack492 = fStack112 * fVar27 + D_8003FD94[0]; + fStack448 = fStack156 * fVar27; + fStack468 = fStack136 * fVar27 + D_8003FD94[0]; + fStack424 = fStack168 * fVar27; + fStack444 = fStack148 * fVar27 + D_8003FD94[0]; + fStack420 = fStack160 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack168); + proc_7F093CB0((int)&fStack484,extraout_f12_54); + proc_7F093CB0((int)&fStack460,extraout_f12_55); + proc_7F093CB0((int)&fStack436,extraout_f12_56); + break; + default: + goto LAB_7f097360; + case 7: + fStack508 = fStack120 * fVar29; + fStack504 = fStack116 * fVar29; + fStack500 = fStack112 * fVar29; + fStack484 = fStack144 * fVar29; + fStack480 = fStack140 * fVar29; + fStack476 = fStack136 * fVar29; + fStack460 = fStack132 * fVar29; + fStack456 = fStack128 * fVar29; + fStack452 = fStack124 * fVar29; + fStack436 = fStack180 * fVar29; + iVar12 = 5; + fStack432 = fStack176 * fVar29; + fStack428 = fStack172 * fVar29; + fStack412 = fStack156 * fVar29; + fStack408 = fStack152 * fVar29; + fStack404 = fStack148 * fVar29; + fStack496 = fStack120 * fVar27; + fStack472 = fStack144 * fVar27; + fStack492 = fStack112 * fVar27 + D_8003FD94[0]; + fStack448 = fStack132 * fVar27; + fStack468 = fStack136 * fVar27 + D_8003FD94[0]; + fStack424 = fStack180 * fVar27; + fStack444 = fStack124 * fVar27 + D_8003FD94[0]; + fStack400 = fStack156 * fVar27; + fStack420 = fStack172 * fVar27 + D_8003FD94[0]; + fStack396 = fStack148 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack180); + proc_7F093CB0((int)&fStack484,extraout_f12_80); + proc_7F093CB0((int)&fStack460,extraout_f12_81); + proc_7F093CB0((int)&fStack436,extraout_f12_82); + proc_7F093CB0((int)&fStack412,extraout_f12_83); + break; + case 8: + fStack508 = fStack108 * fVar29; + fStack504 = fStack104 * fVar29; + fStack500 = fStack100 * fVar29; + fStack484 = fStack156 * fVar29; + fStack480 = fStack152 * fVar29; + fStack476 = fStack148 * fVar29; + fStack460 = fStack180 * fVar29; + fStack456 = fStack176 * fVar29; + iVar12 = 3; + fStack452 = fStack172 * fVar29; + fStack496 = fStack108 * fVar27; + fStack472 = fStack156 * fVar27; + fStack492 = fStack100 * fVar27 + D_8003FD94[0]; + fStack448 = fStack180 * fVar27; + fStack468 = fStack148 * fVar27 + D_8003FD94[0]; + fStack444 = fStack172 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack100); + proc_7F093CB0((int)&fStack484,extraout_f12_66); + proc_7F093CB0((int)&fStack460,extraout_f12_67); + break; + case 10: + fStack508 = fStack132 * fVar29; + fStack504 = fStack128 * fVar29; + fStack500 = fStack124 * fVar29; + fStack484 = fStack108 * fVar29; + fStack480 = fStack104 * fVar29; + fStack476 = fStack100 * fVar29; + fStack460 = fStack168 * fVar29; + fStack456 = fStack164 * fVar29; + fStack452 = fStack160 * fVar29; + iVar12 = 4; + fStack436 = fStack156 * fVar29; + fStack432 = fStack152 * fVar29; + fStack428 = fStack148 * fVar29; + fStack496 = fStack132 * fVar27; + fStack472 = fStack108 * fVar27; + fStack492 = fStack124 * fVar27 + D_8003FD94[0]; + fStack448 = fStack168 * fVar27; + fStack468 = fStack100 * fVar27 + D_8003FD94[0]; + fStack424 = fStack156 * fVar27; + fStack444 = fStack160 * fVar27 + D_8003FD94[0]; + fStack420 = fStack148 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack100); + proc_7F093CB0((int)&fStack484,extraout_f12_57); + proc_7F093CB0((int)&fStack460,extraout_f12_58); + proc_7F093CB0((int)&fStack436,extraout_f12_59); + break; + case 0xb: + fStack508 = fStack144 * fVar29; + fStack504 = fStack140 * fVar29; + fStack500 = fStack136 * fVar29; + fStack484 = fStack132 * fVar29; + fStack480 = fStack128 * fVar29; + fStack476 = fStack124 * fVar29; + iVar12 = 5; + fStack460 = fStack108 * fVar29; + fStack456 = fStack104 * fVar29; + fStack452 = fStack100 * fVar29; + fStack436 = fStack156 * fVar29; + fStack432 = fStack152 * fVar29; + fStack428 = fStack148 * fVar29; + fStack412 = fStack192 * fVar29; + fStack408 = fStack188 * fVar29; + fStack404 = fStack184 * fVar29; + fStack496 = fStack144 * fVar27; + fStack472 = fStack132 * fVar27; + fStack492 = fStack136 * fVar27 + D_8003FD94[0]; + fStack448 = fStack108 * fVar27; + fStack468 = fStack124 * fVar27 + D_8003FD94[0]; + fStack424 = fStack156 * fVar27; + fStack444 = fStack100 * fVar27 + D_8003FD94[0]; + fStack400 = fStack192 * fVar27; + fStack420 = fStack148 * fVar27 + D_8003FD94[0]; + fStack396 = fStack184 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack100); + proc_7F093CB0((int)&fStack484,extraout_f12_76); + proc_7F093CB0((int)&fStack460,extraout_f12_77); + proc_7F093CB0((int)&fStack436,extraout_f12_78); + proc_7F093CB0((int)&fStack412,extraout_f12_79); + break; + case 0xc: + fStack508 = fStack108 * fVar29; + fStack504 = fStack104 * fVar29; + fStack500 = fStack100 * fVar29; + fStack484 = fStack120 * fVar29; + fStack480 = fStack116 * fVar29; + fStack476 = fStack112 * fVar29; + fStack460 = fStack180 * fVar29; + fStack456 = fStack176 * fVar29; + fStack452 = fStack172 * fVar29; + fStack436 = fStack192 * fVar29; + iVar12 = 4; + fStack432 = fStack188 * fVar29; + fStack428 = fStack184 * fVar29; + fStack496 = fStack108 * fVar27; + fStack472 = fStack120 * fVar27; + fStack492 = fStack100 * fVar27 + D_8003FD94[0]; + fStack448 = fStack180 * fVar27; + fStack468 = fStack112 * fVar27 + D_8003FD94[0]; + fStack424 = fStack192 * fVar27; + fStack444 = fStack172 * fVar27 + D_8003FD94[0]; + fStack420 = fStack184 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack100); + proc_7F093CB0((int)&fStack484,extraout_f12_48); + proc_7F093CB0((int)&fStack460,extraout_f12_49); + proc_7F093CB0((int)&fStack436,extraout_f12_50); + break; + case 0xd: + fStack508 = fStack108 * fVar29; + fStack504 = fStack104 * fVar29; + fStack500 = fStack100 * fVar29; + fStack484 = fStack120 * fVar29; + fStack480 = fStack116 * fVar29; + fStack476 = fStack112 * fVar29; + fStack460 = fStack144 * fVar29; + fStack456 = fStack140 * fVar29; + fStack452 = fStack136 * fVar29; + fStack436 = fStack168 * fVar29; + iVar12 = 5; + fStack432 = fStack164 * fVar29; + fStack428 = fStack160 * fVar29; + fStack412 = fStack180 * fVar29; + fStack408 = fStack176 * fVar29; + fStack404 = fStack172 * fVar29; + fStack496 = fStack108 * fVar27; + fStack472 = fStack120 * fVar27; + fStack492 = fStack100 * fVar27 + D_8003FD94[0]; + fStack448 = fStack144 * fVar27; + fStack468 = fStack112 * fVar27 + D_8003FD94[0]; + fStack444 = fStack136 * fVar27 + D_8003FD94[0]; + fStack424 = fStack168 * fVar27; + fStack400 = fStack180 * fVar27; + fStack420 = fStack160 * fVar27 + D_8003FD94[0]; + fStack396 = fStack172 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack100); + proc_7F093CB0((int)&fStack484,extraout_f12_72); + proc_7F093CB0((int)&fStack460,extraout_f12_73); + proc_7F093CB0((int)&fStack436,extraout_f12_74); + proc_7F093CB0((int)&fStack412,extraout_f12_75); + break; + case 0xe: + fStack508 = fStack132 * fVar29; + fStack504 = fStack128 * fVar29; + fStack500 = fStack124 * fVar29; + fStack484 = fStack108 * fVar29; + fStack480 = fStack104 * fVar29; + fStack476 = fStack100 * fVar29; + fStack460 = fStack120 * fVar29; + fStack456 = fStack116 * fVar29; + fStack452 = fStack112 * fVar29; + fStack436 = fStack192 * fVar29; + iVar12 = 5; + fStack432 = fStack188 * fVar29; + fStack428 = fStack184 * fVar29; + fStack412 = fStack168 * fVar29; + fStack408 = fStack164 * fVar29; + fStack404 = fStack160 * fVar29; + fStack496 = fStack132 * fVar27; + fStack472 = fStack108 * fVar27; + fStack492 = fStack124 * fVar27 + D_8003FD94[0]; + fStack448 = fStack120 * fVar27; + fStack468 = fStack100 * fVar27 + D_8003FD94[0]; + fStack424 = fStack192 * fVar27; + fStack444 = fStack112 * fVar27 + D_8003FD94[0]; + fStack400 = fStack168 * fVar27; + fStack420 = fStack184 * fVar27 + D_8003FD94[0]; + fStack396 = fStack160 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack100); + proc_7F093CB0((int)&fStack484,extraout_f12_68); + proc_7F093CB0((int)&fStack460,extraout_f12_69); + proc_7F093CB0((int)&fStack436,extraout_f12_70); + proc_7F093CB0((int)&fStack412,extraout_f12_71); + break; + case 0xf: + fStack508 = fStack108 * fVar29; + fStack504 = fStack104 * fVar29; + fStack500 = fStack100 * fVar29; + fStack484 = fStack120 * fVar29; + fStack480 = fStack116 * fVar29; + fStack476 = fStack112 * fVar29; + fStack460 = fStack132 * fVar29; + fStack456 = fStack128 * fVar29; + fStack452 = fStack124 * fVar29; + fStack436 = fStack144 * fVar29; + iVar12 = 4; + fStack432 = fStack140 * fVar29; + fStack428 = fStack136 * fVar29; + fStack496 = fStack108 * fVar27; + fStack472 = fStack120 * fVar27; + fStack492 = fStack100 * fVar27 + D_8003FD94[0]; + fStack448 = fStack132 * fVar27; + fStack468 = fStack112 * fVar27 + D_8003FD94[0]; + fStack424 = fStack144 * fVar27; + fStack444 = fStack124 * fVar27 + D_8003FD94[0]; + fStack420 = fStack136 * fVar27 + D_8003FD94[0]; + proc_7F093CB0((int)&fStack508,fStack100); + proc_7F093CB0((int)&fStack484,extraout_f12_45); + proc_7F093CB0((int)&fStack460,extraout_f12_46); + proc_7F093CB0((int)&fStack436,extraout_f12_47); + } + pfStack1624 = (float *)(1.00000000 / fVar29); + puStackX0[1] = 0; + *puStackX0 = 0xe7000000; + puStackX0 = puStackX0 + 2; + puVar2 = get_ptr_currentdata(); + append_image_to_DL((uint **)register0x000000ec,skywaterimages + *(short *)(puVar2 + 4),1,0,2); + *puStackX0 = 0xfb000000; + puStack1160 = puStackX0; + puStackX0 = puStackX0 + 2; + puVar2 = get_ptr_currentdata(); + DL = get_ptr_currentdata(); + puVar7 = get_ptr_currentdata(); + puStack1160[1] = + (uint)*(byte *)((int)puVar7 + 10) << 8 | (uint)*(byte *)(DL + 2) << 0x18 | + (uint)*(byte *)((int)puVar2 + 9) << 0x10 | 0xff; + puStackX0[1] = 0x55fef97c; + *puStackX0 = 0xfc40fe81; + puStackX0 = puStackX0 + 2; + pfVar5 = (float *)get_BONDdata_field_10DC(); + pfVar6 = (float *)get_BONDdata_field_10CC(); + proc_7F0580C8(pfVar5,pfVar6,(int)afStack1228); + guScaleF(mf_4__4__00,x_00,(float)&DAT_80079e98,(float)pfStack1624); + proc_7F0580C8(afStack1228,(float *)&DAT_80079e98,(int)afStack1292); + iStack1576 = 0; fVar29 = extraout_f12_84; - fVar27 = extraout_f14_02; - do { - proc_7F097388(pfStack1624,afStack1292,0x82,fVar29,fVar27,(float *)flt_800575D0); - fVar17 = getPlayer_c_screenleft(); - fVar18 = getPlayer_c_screenleft(); - fVar19 = getPlayer_c_screenwidth(); - fVar29 = proc_7F093C48(*(float *)(puVar14 + 0x28),(float)fVar17 * 4.00000000,extraout_a0_01, - extraout_a1_01, - ((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000); - *(float *)(puVar14 + 0x28) = fVar29; - fVar17 = getPlayer_c_screentop(); - fVar18 = getPlayer_c_screentop(); - fVar19 = getPlayer_c_screenheight(); - fVar29 = proc_7F093C48(*(float *)(puVar14 + 0x2c),(float)fVar17 * 4.00000000,extraout_a0_02, - extraout_a1_02, - ((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000); - *(float *)(puVar14 + 0x2c) = fVar29; - iStack1576 += 1; - pfStack1624 = pfStack1624 + 6; - puVar14 = puVar14 + 0x38; - fVar29 = extraout_f12_85; - fVar27 = extraout_f14_03; - } while (iStack1576 != iVar12); - } - if (iVar12 == 4) { - if (uVar16 == 0xc) { - if (fStack360 < fStack356) { - if (fStack1472 + 4.00000000 <= fStack1360) { - fVar17 = getPlayer_c_screenleft(); - fStack1532 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screentop(); - fStack1528 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screenleft(); - fVar18 = getPlayer_c_screenwidth(); - fStack1476 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; - fVar17 = getPlayer_c_screentop(); - fStack1472 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screenleft(); - fStack1420 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screenleft(); - fVar18 = getPlayer_c_screenwidth(); - fStack1364 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; - puStackX0 = proc_7F098A2C(puStackX0,(int)auStack1572,(int)auStack1516,(int)auStack1460, - (int)auStack1404,extraout_f12_86); + if (iVar12 != 0) { + pfStack1624 = &fStack508; + puVar14 = auStack1572; + fVar27 = extraout_f14_02; + do { + proc_7F097388(pfStack1624,afStack1292,0x82,fVar29,fVar27,(float *)flt_800575D0); + fVar17 = getPlayer_c_screenleft(); + fVar18 = getPlayer_c_screenleft(); + fVar19 = getPlayer_c_screenwidth(); + fVar29 = proc_7F093C48(*(float *)(puVar14 + 0x28),(float)fVar17 * 4.00000000, + extraout_a0_01,extraout_a1_01, + ((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000); + *(float *)(puVar14 + 0x28) = fVar29; + fVar17 = getPlayer_c_screentop(); + fVar18 = getPlayer_c_screentop(); + fVar19 = getPlayer_c_screenheight(); + fVar29 = proc_7F093C48(*(float *)(puVar14 + 0x2c),(float)fVar17 * 4.00000000, + extraout_a0_02,extraout_a1_02, + ((float)fVar19 + (float)fVar18) * 4.00000000 - 1.00000000); + *(float *)(puVar14 + 0x2c) = fVar29; + iStack1576 += 1; + pfStack1624 = pfStack1624 + 6; + puVar14 = puVar14 + 0x38; + fVar29 = extraout_f12_85; + fVar27 = extraout_f14_03; + } while (iStack1576 != iVar12); + } + if (iVar12 == 4) { + if (uVar16 == 0xc) { + if (fStack360 < fStack356) { + if (fStack1472 + 4.00000000 <= fStack1360) { + fVar17 = getPlayer_c_screenleft(); + fStack1532 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screentop(); + fStack1528 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screenleft(); + fVar18 = getPlayer_c_screenwidth(); + fStack1476 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; + fVar17 = getPlayer_c_screentop(); + fStack1472 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screenleft(); + fStack1420 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screenleft(); + fVar18 = getPlayer_c_screenwidth(); + fStack1364 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; + puStackX0 = proc_7F098A2C(puStackX0,(int)auStack1572,(int)auStack1516, + (int)auStack1460,(int)auStack1404,extraout_f12_86); + } + else { + puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516, + (int)auStack1460,fVar29,0x43020000); + } + } + else { + if (fStack1528 + 4.00000000 <= fStack1416) { + fVar17 = getPlayer_c_screenleft(); + fStack1532 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screentop(); + fStack1528 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screenleft(); + fVar18 = getPlayer_c_screenwidth(); + fStack1476 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; + fVar17 = getPlayer_c_screentop(); + fStack1472 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screenleft(); + fStack1420 = (float)fVar17 * 4.00000000; + fVar17 = getPlayer_c_screenleft(); + fVar18 = getPlayer_c_screenwidth(); + fStack1364 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; + puStackX0 = proc_7F098A2C(puStackX0,(int)auStack1516,(int)auStack1572, + (int)auStack1404,(int)auStack1460,extraout_f12_87); + } + else { + puStackX0 = proc_7F097818(puStackX0,(int)auStack1516,(int)auStack1572, + (int)auStack1404,fVar29,0x43020000); + } + } } else { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516,(int)auStack1460, - fVar29,0x43020000); + puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516,(int)auStack1404, + fVar29,0x43020000); + puStackX0 = proc_7F097818(puStackX0,(int)auStack1404,(int)auStack1460,(int)auStack1572, + extraout_f12_88,0x43020000); } - } - else { - if (fStack1528 + 4.00000000 <= fStack1416) { - fVar17 = getPlayer_c_screenleft(); - fStack1532 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screentop(); - fStack1528 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screenleft(); - fVar18 = getPlayer_c_screenwidth(); - fStack1476 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; - fVar17 = getPlayer_c_screentop(); - fStack1472 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screenleft(); - fStack1420 = (float)fVar17 * 4.00000000; - fVar17 = getPlayer_c_screenleft(); - fVar18 = getPlayer_c_screenwidth(); - fStack1364 = ((float)fVar18 + (float)fVar17) * 4.00000000 - 1.00000000; - puStackX0 = proc_7F098A2C(puStackX0,(int)auStack1516,(int)auStack1572,(int)auStack1404, - (int)auStack1460,extraout_f12_87); + } + else { + if (iVar12 == 5) { + puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516,(int)auStack1460, + fVar29,0x43020000); + puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1460,(int)auStack1404, + extraout_f12_89,0x43020000); + puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1404,(int)auStack1348, + extraout_f12_90,0x43020000); } else { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1516,(int)auStack1572,(int)auStack1404, - fVar29,0x43020000); + if (iVar12 == 3) { + puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516, + (int)auStack1460,fVar29,0x43020000); + } } - } } - else { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516,(int)auStack1404,fVar29, - 0x43020000); - puStackX0 = proc_7F097818(puStackX0,(int)auStack1404,(int)auStack1460,(int)auStack1572, - extraout_f12_88,0x43020000); - } - } - else { - if (iVar12 == 5) { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516,(int)auStack1460,fVar29, - 0x43020000); - puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1460,(int)auStack1404, - extraout_f12_89,0x43020000); - puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1404,(int)auStack1348, - extraout_f12_90,0x43020000); - } - else { - if (iVar12 == 3) { - puStackX0 = proc_7F097818(puStackX0,(int)auStack1572,(int)auStack1516,(int)auStack1460, - fVar29,0x43020000); - } - } - } LAB_7f097360: - return puStackX0; + return puStackX0; } @@ -109625,105 +108576,106 @@ void proc_7F097388(float *param_1,float *param_2,uint param_3,float param_4,floa float *param_6) { - undefined4 *puVar1; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - float fVar2; - f32 fVar3; - f32 fVar4; - f32 fVar5; - f32 fVar6; - f32 fVar7; - f32 fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - float in_stack_00000010; - float *in_stack_00000014; - - fVar11 = (float)(param_3 & 0xffff); - if (false) { - fVar11 = fVar11 + 4294967296.00000000; - } - fVar11 = fVar11 / 65536.00000000; - fVar12 = param_2[0xc] + *param_1 * *param_2 + param_1[1] * param_2[4] + param_1[2] * param_2[8]; - fVar13 = param_2[0xd] + *param_1 * param_2[1] + param_1[1] * param_2[5] + param_1[2] * param_2[9]; - fVar14 = param_2[0xe] + *param_1 * param_2[2] + param_1[1] * param_2[6] + param_1[2] * param_2[10] - ; - fVar15 = param_2[0xf] + - *param_1 * param_2[3] + param_1[1] * param_2[7] + param_1[2] * param_2[0xb]; - fVar17 = param_1[3]; - fVar16 = param_1[4]; - fVar19 = flt_800575D4; - if (fVar15 != 0.00000000) { - fVar19 = 1.00000000 / (fVar15 * fVar11); - } - fVar2 = flt_800575D8; - if (0.00000000 <= fVar19) { - fVar2 = fVar19; - } - fVar3 = getPlayer_c_screenwidth(); - fVar4 = getPlayer_c_screenwidth(); - fVar5 = getPlayer_c_screenleft(); - fVar6 = getPlayer_c_screenheight(); - fVar7 = getPlayer_c_screenheight(); - fVar8 = getPlayer_c_screentop(); - fVar18 = fVar14 * fVar2 * fVar11 * flt_800575DC + flt_800575DC; - fVar9 = proc_7F093C48((float)fVar5 * 4.00000000 + (float)fVar4 * 2.00000000 + - fVar12 * fVar2 * fVar11 * (float)fVar3 * 2.00000000,flt_800575E0,extraout_a0 - ,extraout_a1,4090.00000000); - fVar10 = proc_7F093C48((float)fVar8 * 4.00000000 + (float)fVar7 * 2.00000000 + - -(fVar13 * fVar2 * fVar11) * (float)fVar6 * 2.00000000,flt_800575E4, - extraout_a0_00,extraout_a1_00,4090.00000000); - fVar18 = proc_7F093C48(fVar18,0.00000000,extraout_a0_01,extraout_a1_01,32767.00000000); - proc_7F093C48(fVar15 * fVar2 * fVar11 * 0.00000000,0.00000000,extraout_a0_02,extraout_a1_02, - 32767.00000000); - *in_stack_00000014 = fVar12; - in_stack_00000014[1] = fVar13; - in_stack_00000014[2] = fVar14; - in_stack_00000014[3] = fVar15; - in_stack_00000014[8] = fVar17 * ((float)param_6 / 65536.00000000); - in_stack_00000014[9] = fVar16 * (in_stack_00000010 / 65536.00000000); - in_stack_00000014[10] = fVar9; - puVar1 = get_ptr_currentdata(); - in_stack_00000014[0xb] = fVar10 - (float)puVar1[0xe] * 4.00000000; - in_stack_00000014[0xd] = fVar19; - in_stack_00000014[0xc] = fVar18; - fVar11 = (float)(uint)*(byte *)(param_1 + 5); - if (false) { - fVar11 = fVar11 + 4294967296.00000000; - } - in_stack_00000014[4] = fVar11; - fVar11 = (float)(uint)*(byte *)((int)param_1 + 0x15); - if (false) { - fVar11 = fVar11 + 4294967296.00000000; - } - in_stack_00000014[5] = fVar11; - fVar11 = (float)(uint)*(byte *)((int)param_1 + 0x16); - if (false) { - fVar11 = fVar11 + 4294967296.00000000; - } - in_stack_00000014[6] = fVar11; - fVar11 = (float)(uint)*(byte *)((int)param_1 + 0x17); - if (false) { - fVar11 = fVar11 + 4294967296.00000000; - } - in_stack_00000014[7] = fVar11; - return; + undefined4 *puVar1; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + undefined8 extraout_a1_02; + float fVar2; + f32 fVar3; + f32 fVar4; + f32 fVar5; + f32 fVar6; + f32 fVar7; + f32 fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float in_stack_00000010; + float *in_stack_00000014; + + fVar11 = (float)(param_3 & 0xffff); + if (false) { + fVar11 = fVar11 + 4294967296.00000000; + } + fVar11 = fVar11 / 65536.00000000; + fVar12 = param_2[0xc] + *param_1 * *param_2 + param_1[1] * param_2[4] + param_1[2] * param_2[8]; + fVar13 = param_2[0xd] + + *param_1 * param_2[1] + param_1[1] * param_2[5] + param_1[2] * param_2[9]; + fVar14 = param_2[0xe] + + *param_1 * param_2[2] + param_1[1] * param_2[6] + param_1[2] * param_2[10]; + fVar15 = param_2[0xf] + + *param_1 * param_2[3] + param_1[1] * param_2[7] + param_1[2] * param_2[0xb]; + fVar17 = param_1[3]; + fVar16 = param_1[4]; + fVar19 = flt_800575D4; + if (fVar15 != 0.00000000) { + fVar19 = 1.00000000 / (fVar15 * fVar11); + } + fVar2 = flt_800575D8; + if (0.00000000 <= fVar19) { + fVar2 = fVar19; + } + fVar3 = getPlayer_c_screenwidth(); + fVar4 = getPlayer_c_screenwidth(); + fVar5 = getPlayer_c_screenleft(); + fVar6 = getPlayer_c_screenheight(); + fVar7 = getPlayer_c_screenheight(); + fVar8 = getPlayer_c_screentop(); + fVar18 = fVar14 * fVar2 * fVar11 * flt_800575DC + flt_800575DC; + fVar9 = proc_7F093C48((float)fVar5 * 4.00000000 + (float)fVar4 * 2.00000000 + + fVar12 * fVar2 * fVar11 * (float)fVar3 * 2.00000000,flt_800575E0, + extraout_a0,extraout_a1,4090.00000000); + fVar10 = proc_7F093C48((float)fVar8 * 4.00000000 + (float)fVar7 * 2.00000000 + + -(fVar13 * fVar2 * fVar11) * (float)fVar6 * 2.00000000,flt_800575E4, + extraout_a0_00,extraout_a1_00,4090.00000000); + fVar18 = proc_7F093C48(fVar18,0.00000000,extraout_a0_01,extraout_a1_01,32767.00000000); + proc_7F093C48(fVar15 * fVar2 * fVar11 * 0.00000000,0.00000000,extraout_a0_02,extraout_a1_02, + 32767.00000000); + *in_stack_00000014 = fVar12; + in_stack_00000014[1] = fVar13; + in_stack_00000014[2] = fVar14; + in_stack_00000014[3] = fVar15; + in_stack_00000014[8] = fVar17 * ((float)param_6 / 65536.00000000); + in_stack_00000014[9] = fVar16 * (in_stack_00000010 / 65536.00000000); + in_stack_00000014[10] = fVar9; + puVar1 = get_ptr_currentdata(); + in_stack_00000014[0xb] = fVar10 - (float)puVar1[0xe] * 4.00000000; + in_stack_00000014[0xd] = fVar19; + in_stack_00000014[0xc] = fVar18; + fVar11 = (float)(uint)*(byte *)(param_1 + 5); + if (false) { + fVar11 = fVar11 + 4294967296.00000000; + } + in_stack_00000014[4] = fVar11; + fVar11 = (float)(uint)*(byte *)((int)param_1 + 0x15); + if (false) { + fVar11 = fVar11 + 4294967296.00000000; + } + in_stack_00000014[5] = fVar11; + fVar11 = (float)(uint)*(byte *)((int)param_1 + 0x16); + if (false) { + fVar11 = fVar11 + 4294967296.00000000; + } + in_stack_00000014[6] = fVar11; + fVar11 = (float)(uint)*(byte *)((int)param_1 + 0x17); + if (false) { + fVar11 = fVar11 + 4294967296.00000000; + } + in_stack_00000014[7] = fVar11; + return; } @@ -109731,13 +108683,13 @@ void proc_7F097388(float *param_1,float *param_2,uint param_3,float param_4,floa ulonglong proc_7F0977B4(int param_1,int param_2) { - float fVar1; - float fVar2; - - fVar1 = *(float *)(param_1 + 0x28) - *(float *)(param_2 + 0x28); - fVar2 = *(float *)(param_1 + 0x2c) - *(float *)(param_2 + 0x2c); - fVar1 = sqrtf(fVar1 * fVar1 + fVar2 * fVar2); - return (ulonglong)(fVar1 < 1.00000000); + float fVar1; + float fVar2; + + fVar1 = *(float *)(param_1 + 0x28) - *(float *)(param_2 + 0x28); + fVar2 = *(float *)(param_1 + 0x2c) - *(float *)(param_2 + 0x2c); + fVar1 = sqrtf(fVar1 * fVar1 + fVar2 * fVar2); + return (ulonglong)(fVar1 < 1.00000000); } @@ -109746,588 +108698,573 @@ undefined4 * proc_7F097818(undefined4 *param_1,int param_2,int param_3,int param_4,float param_5,int param_6) { - ulonglong uVar1; - uint uVar2; - float *pfVar3; - uint uVar4; - uint uVar5; - uint uVar6; - uint uVar7; - uint uVar8; - uint uVar9; - uint uVar10; - uint uVar11; - uint uVar12; - uint uVar13; - uint uVar14; - uint uVar15; - uint uVar16; - uint uVar17; - uint uVar18; - undefined4 *puVar19; - float *pfVar20; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - float *pfVar21; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - float *pfVar22; - float *pfVar23; - float *pfVar24; - float *pfVar25; - int iVar26; - float *pfVar27; - float fVar28; - float fVar29; - float fVar30; - int in_stack_00000014; - float afStack728 [4]; - float fStack712; - float fStack708; - float fStack704; - float afStack696 [4]; - float fStack680; - float fStack676; - float fStack672; - float fStack648; - float fStack644; - float fStack640; - float fStack632; - float fStack628; - float fStack624; - float fStack620; - float fStack616; - float fStack612; - float fStack608; - float fStack600; - float fStack596; - float fStack592; - float fStack588; - float fStack584; - float fStack580; - float fStack576; - float afStack568 [8]; - float afStack536 [8]; - float fStack504; - float fStack500; - float fStack496; - float fStack492; - float fStack488; - float fStack484; - float fStack480; - float fStack472; - float fStack468; - float fStack464; - float fStack460; - float fStack456; - float fStack452; - float fStack448; - float fStack440; - float fStack436; - float fStack432; - float fStack428; - float fStack424; - float fStack420; - float fStack416; - undefined4 uStack412; - float fStack408; - float fStack404; - float fStack400; - float fStack396; - float fStack392; - float fStack388; - float fStack384; - undefined4 uStack380; - float fStack376; - float fStack372; - float fStack368; - float fStack364; - float fStack360; - float fStack356; - float fStack352; - undefined4 uStack348; - float fStack344; - float fStack340; - float fStack336; - float fStack332; - float fStack328; - float fStack324; - float fStack320; - float fStack316; - float fStack312; - float fStack308; - float fStack304; - float fStack300; - float fStack296; - float fStack292; - float fStack288; - float fStack284; - float fStack280; - float fStack276; - float fStack272; - float fStack268; - undefined4 uStack264; - float fStack260; - undefined4 uStack256; - float fStack252; - undefined4 uStack248; - float fStack244; - undefined4 uStack240; - undefined4 uStack236; - undefined4 uStack232; - float fStack228; - undefined4 uStack224; - float fStack220; - undefined4 uStack216; - float fStack212; - undefined4 uStack208; - undefined4 uStack204; - float fStack200; - float fStack196; - float fStack192; - float fStack188; - float fStack184; - float fStack180; - undefined4 uStack176; - undefined4 uStack172; - float fStack168; - float fStack164; - float fStack160; - float fStack156; - float fStack152; - float fStack148; - undefined4 uStack144; - undefined4 uStack140; - float fStack128; - float fStack120; - float fStack104; - undefined4 uStack100; - float fStack96; - undefined4 uStack92; - float fStack88; - undefined4 uStack84; - undefined4 uStack80; - undefined4 uStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float fStack28; - float fStack20; - int iStack12; - int iStack8; - int iStack4; - - uVar1 = proc_7F0977B4(param_2,param_3); - puVar19 = param_1; - if (((uVar1 == 0) && (uVar1 = proc_7F0977B4(param_3,param_4), puVar19 = param_1, uVar1 == 0)) && - (uVar1 = proc_7F0977B4(param_4,param_2), puVar19 = param_1, uVar1 == 0)) { - fStack272 = (float)param_6 / 65536.00000000; - fVar30 = *(float *)(param_2 + 0x2c); - fStack68 = ((*(float *)(param_4 + 0x28) - *(float *)(param_2 + 0x28)) * - (*(float *)(param_3 + 0x2c) - fVar30) - - (*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * - (*(float *)(param_4 + 0x2c) - fVar30)) / 65536.00000000; + ulonglong uVar1; + uint uVar2; + float *pfVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + undefined4 *puVar19; + float *pfVar20; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + float *pfVar21; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + float *pfVar22; + float *pfVar23; + float *pfVar24; + float *pfVar25; + int iVar26; + float *pfVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + int in_stack_00000014; + float afStack728 [8]; + float afStack696 [4]; + float fStack680; + float fStack676; + float fStack672; + float fStack648; + float fStack644; + float fStack640; + float afStack632 [8]; + float afStack600 [4]; + float fStack584; + float fStack580; + float fStack576; + float afStack568 [8]; + float afStack536 [8]; + float afStack504 [4]; + float fStack488; + float fStack484; + float fStack480; + float afStack472 [4]; + float fStack456; + float fStack452; + float fStack448; + float afStack440 [8]; + float afStack408 [4]; + float fStack392; + float fStack388; + float fStack384; + undefined4 uStack380; + float afStack376 [4]; + float fStack360; + float fStack356; + float fStack352; + undefined4 uStack348; + float fStack344; + float fStack340; + float fStack336; + float fStack332; + float fStack328; + float fStack324; + float fStack320; + float fStack316; + float fStack312; + float fStack308; + float fStack304; + float fStack300; + float fStack296; + float fStack292; + float fStack288; + float fStack284; + float fStack280; + float fStack276; + float fStack272; + float fStack268; + undefined4 uStack264; + float fStack260; + undefined4 uStack256; + float fStack252; + undefined4 uStack248; + float fStack244; + undefined4 uStack240; + undefined4 uStack236; + undefined4 uStack232; + float fStack228; + undefined4 uStack224; + float fStack220; + undefined4 uStack216; + float fStack212; + undefined4 uStack208; + undefined4 uStack204; + float fStack200; + float fStack196; + float fStack192; + float fStack188; + float fStack184; + float fStack180; + undefined4 uStack176; + undefined4 uStack172; + float fStack168; + float fStack164; + float fStack160; + float fStack156; + float fStack152; + float fStack148; + undefined4 uStack144; + undefined4 uStack140; + float fStack128; + float fStack120; + float fStack104; + undefined4 uStack100; + float fStack96; + undefined4 uStack92; + float fStack88; + undefined4 uStack84; + undefined4 uStack80; + undefined4 uStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + float fStack28; + float fStack20; + int iStack12; + int iStack8; + int iStack4; + + uVar1 = proc_7F0977B4(param_2,param_3); puVar19 = param_1; - if (fStack68 != 0.00000000) { - fStack72 = 1.00000000 / fStack68; - iVar26 = param_3; - if (*(float *)(param_3 + 0x2c) < fVar30) { - fStack68 = fStack68 * -1.00000000; - fStack72 = fStack72 * -1.00000000; - iVar26 = param_2; - param_2 = param_3; - } - fVar30 = *(float *)(iVar26 + 0x2c); - iStack8 = iVar26; - if (*(float *)(param_4 + 0x2c) < fVar30) { - fStack68 = fStack68 * -1.00000000; - fStack72 = fStack72 * -1.00000000; - fVar30 = *(float *)(param_4 + 0x2c); - iStack8 = param_4; - param_4 = iVar26; - } - iStack4 = param_2; - if (fVar30 < *(float *)(param_2 + 0x2c)) { - fStack68 = fStack68 * -1.00000000; - fStack72 = fStack72 * -1.00000000; - iStack4 = iStack8; - iStack8 = param_2; - } - uStack100 = 0; - fStack104 = *(float *)(iStack8 + 0x28) * 0.25000000; - uStack92 = 0; - fStack96 = *(float *)(iStack4 + 0x28) * 0.25000000; - uStack84 = 0; - uStack76 = 0; - fStack88 = *(float *)(iStack4 + 0x28) * 0.25000000; - uStack80 = 0; - fStack64 = *(float *)(param_4 + 0x28); - fStack60 = *(float *)(param_4 + 0x2c); - fStack56 = *(float *)(iStack8 + 0x28); - fStack52 = *(float *)(iStack8 + 0x2c); - fStack48 = *(float *)(iStack4 + 0x28); - fStack44 = *(float *)(iStack4 + 0x2c); - fStack20 = fStack56 - fStack48; - fStack252 = fStack52 - fStack44; - uStack140 = 0; - fStack244 = fStack60 - fStack44; - uStack144 = 0; - fStack28 = fStack64 - fStack48; - uStack172 = 0; - uStack176 = 0; - fStack36 = fStack64 - fStack56; - uStack232 = 0; - fStack168 = fStack36 * 0.25000000; - fStack40 = fStack60 - fStack52; - uStack224 = 0; - fStack164 = fStack40 * 0.25000000; - fStack160 = fStack20 * 0.25000000; - uStack216 = 0; - uStack204 = 0; - uStack208 = 0; - fStack156 = fStack252 * 0.25000000; - uStack264 = 0; - fStack152 = fStack28 * 0.25000000; - uStack256 = 0; - uStack248 = 0; - uStack236 = 0; - fStack148 = fStack244 * 0.25000000; - fStack200 = fStack36 * 4.00000000; - uStack240 = 0; - fStack196 = fStack40 * 4.00000000; - fStack192 = fStack20 * 4.00000000; - fStack188 = fStack252 * 4.00000000; - fStack184 = fStack28 * 4.00000000; - fStack180 = fStack244 * 4.00000000; - fStack228 = 4.00000000 / fStack40; - fStack220 = 4.00000000 / fStack252; - fStack212 = 4.00000000 / fStack244; - fStack260 = fStack36 / fStack40; - fStack244 = fStack28 / fStack244; - fStack252 = fStack20 / fStack252; - iStack12 = param_4; - fStack260 = proc_7F093C48(fStack260,flt_800575E8,extraout_a0,extraout_a1,1877.00000000); - fStack252 = proc_7F093C48(fStack252,flt_800575EC,extraout_a0_00,extraout_a1_00,1877.00000000); - fStack244 = proc_7F093C48(fStack244,flt_800575F0,extraout_a0_01,extraout_a1_01,1877.00000000); - fStack268 = *(float *)(iStack4 + 0x2c) * 0.25000000; - fStack268 = fStack268 - (float)(int)fStack268; - fVar30 = proc_7F093C88(fStack252 * 8192.00000000); - fStack128 = fStack96 - fVar30 * 0.00012207 * fStack268; - fVar30 = proc_7F093C88(fStack244 * 8192.00000000); - uVar4 = 0xc8000000; - uVar2 = 0; - fStack120 = fStack88 - fVar30 * 0.00012207 * fStack268; - *param_1 = 0xb4000000; - if (in_stack_00000014 != 0) { - uVar4 = 0xce000000; - } - if (fStack68 < 0.00000000) { - uVar2 = 0x800000; - } - param_1[1] = uVar2 | uVar4 | (int)*(float *)(iStack12 + 0x2c); - param_1[2] = 0xb2000000; - param_1[3] = (int)*(float *)(iStack8 + 0x2c) << 0x10 | (int)*(float *)(iStack4 + 0x2c); - param_1[4] = 0xb4000000; - uVar2 = proc_7F094298(*(float *)(iStack8 + 0x28) * 0.25000000); - param_1[5] = uVar2; - param_1[6] = 0xb2000000; - uVar2 = proc_7F094298(fStack260); - param_1[7] = uVar2; - param_1[8] = 0xb4000000; - uVar2 = proc_7F094298(fStack120); - param_1[9] = uVar2; - param_1[10] = 0xb2000000; - uVar2 = proc_7F094298(fStack244); - param_1[0xb] = uVar2; - param_1[0xc] = 0xb4000000; - uVar2 = proc_7F094298(fStack128); - param_1[0xd] = uVar2; - param_1[0xe] = 0xb2000000; - uVar2 = proc_7F094298(fStack252); - param_1[0xf] = uVar2; - puVar19 = param_1 + 0x10; - if (in_stack_00000014 != 0) { - fStack284 = *(float *)(iStack4 + 0xc) * fStack272; - fStack280 = *(float *)(iStack8 + 0xc) * fStack272; - fStack276 = *(float *)(iStack12 + 0xc) * fStack272; - fVar30 = fStack280; - if (fStack284 <= fStack280) { - fVar30 = fStack284; + if (((uVar1 == 0) && (uVar1 = proc_7F0977B4(param_3,param_4), uVar1 == 0)) && + (uVar1 = proc_7F0977B4(param_4,param_2), uVar1 == 0)) { + fStack272 = (float)param_6 / 65536.00000000; + fVar31 = *(float *)(param_2 + 0x2c); + fStack68 = ((*(float *)(param_4 + 0x28) - *(float *)(param_2 + 0x28)) * + (*(float *)(param_3 + 0x2c) - fVar31) - + (*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * + (*(float *)(param_4 + 0x2c) - fVar31)) / 65536.00000000; + if (fStack68 != 0.00000000) { + fStack72 = 1.00000000 / fStack68; + iVar26 = param_3; + if (*(float *)(param_3 + 0x2c) < fVar31) { + fStack68 = fStack68 * -1.00000000; + fStack72 = fStack72 * -1.00000000; + iVar26 = param_2; + param_2 = param_3; + } + fVar31 = *(float *)(iVar26 + 0x2c); + iStack8 = iVar26; + if (*(float *)(param_4 + 0x2c) < fVar31) { + fStack68 = fStack68 * -1.00000000; + fStack72 = fStack72 * -1.00000000; + fVar31 = *(float *)(param_4 + 0x2c); + iStack8 = param_4; + param_4 = iVar26; + } + iStack4 = param_2; + if (fVar31 < *(float *)(param_2 + 0x2c)) { + fStack68 = fStack68 * -1.00000000; + fStack72 = fStack72 * -1.00000000; + iStack4 = iStack8; + iStack8 = param_2; + } + uStack100 = 0; + fStack104 = *(float *)(iStack8 + 0x28) * 0.25000000; + uStack92 = 0; + fStack96 = *(float *)(iStack4 + 0x28) * 0.25000000; + uStack84 = 0; + uStack76 = 0; + fStack88 = *(float *)(iStack4 + 0x28) * 0.25000000; + uStack80 = 0; + fStack64 = *(float *)(param_4 + 0x28); + fStack60 = *(float *)(param_4 + 0x2c); + fStack56 = *(float *)(iStack8 + 0x28); + fStack52 = *(float *)(iStack8 + 0x2c); + fStack48 = *(float *)(iStack4 + 0x28); + fStack44 = *(float *)(iStack4 + 0x2c); + fStack20 = fStack56 - fStack48; + fStack252 = fStack52 - fStack44; + uStack140 = 0; + fStack244 = fStack60 - fStack44; + uStack144 = 0; + fStack28 = fStack64 - fStack48; + uStack172 = 0; + uStack176 = 0; + fStack36 = fStack64 - fStack56; + uStack232 = 0; + fStack168 = fStack36 * 0.25000000; + fStack40 = fStack60 - fStack52; + uStack224 = 0; + fStack164 = fStack40 * 0.25000000; + fStack160 = fStack20 * 0.25000000; + uStack216 = 0; + uStack204 = 0; + uStack208 = 0; + fStack156 = fStack252 * 0.25000000; + uStack264 = 0; + fStack152 = fStack28 * 0.25000000; + uStack256 = 0; + uStack248 = 0; + uStack236 = 0; + fStack148 = fStack244 * 0.25000000; + fStack200 = fStack36 * 4.00000000; + uStack240 = 0; + fStack196 = fStack40 * 4.00000000; + fStack192 = fStack20 * 4.00000000; + fStack188 = fStack252 * 4.00000000; + fStack184 = fStack28 * 4.00000000; + fStack180 = fStack244 * 4.00000000; + fStack228 = 4.00000000 / fStack40; + fStack220 = 4.00000000 / fStack252; + fStack212 = 4.00000000 / fStack244; + fStack260 = fStack36 / fStack40; + fStack244 = fStack28 / fStack244; + fStack252 = fStack20 / fStack252; + iStack12 = param_4; + fStack260 = proc_7F093C48(fStack260,flt_800575E8,extraout_a0,extraout_a1,1877.00000000); + fStack252 = proc_7F093C48(fStack252,flt_800575EC,extraout_a0_00,extraout_a1_00, + 1877.00000000); + fStack244 = proc_7F093C48(fStack244,flt_800575F0,extraout_a0_01,extraout_a1_01, + 1877.00000000); + fStack268 = *(float *)(iStack4 + 0x2c) * 0.25000000; + fStack268 = fStack268 - (float)(int)fStack268; + fVar31 = addpoint5tofloat(fStack252 * 8192.00000000); + fStack128 = fStack96 - fVar31 * 0.00012207 * fStack268; + fVar31 = addpoint5tofloat(fStack244 * 8192.00000000); + uVar4 = 0xc8000000; + uVar2 = 0; + fStack120 = fStack88 - fVar31 * 0.00012207 * fStack268; + *param_1 = 0xb4000000; + if (in_stack_00000014 != 0) { + uVar4 = 0xce000000; + } + if (fStack68 < 0.00000000) { + uVar2 = 0x800000; + } + param_1[1] = uVar2 | uVar4 | (int)*(float *)(iStack12 + 0x2c); + param_1[2] = 0xb2000000; + param_1[3] = (int)*(float *)(iStack8 + 0x2c) << 0x10 | (int)*(float *)(iStack4 + 0x2c); + param_1[4] = 0xb4000000; + uVar2 = proc_7F094298(*(float *)(iStack8 + 0x28) * 0.25000000); + param_1[5] = uVar2; + param_1[6] = 0xb2000000; + uVar2 = proc_7F094298(fStack260); + param_1[7] = uVar2; + param_1[8] = 0xb4000000; + uVar2 = proc_7F094298(fStack120); + param_1[9] = uVar2; + param_1[10] = 0xb2000000; + uVar2 = proc_7F094298(fStack244); + param_1[0xb] = uVar2; + param_1[0xc] = 0xb4000000; + uVar2 = proc_7F094298(fStack128); + param_1[0xd] = uVar2; + param_1[0xe] = 0xb2000000; + uVar2 = proc_7F094298(fStack252); + param_1[0xf] = uVar2; + puVar19 = param_1 + 0x10; + if (in_stack_00000014 != 0) { + fStack284 = *(float *)(iStack4 + 0xc) * fStack272; + fVar31 = *(float *)(iStack8 + 0xc) * fStack272; + fStack280 = fVar31; + fStack288 = *(float *)(iStack12 + 0xc) * fStack272; + fStack276 = fStack288; + if (fStack284 <= fVar31) { + fVar31 = fStack284; + } + if (fVar31 <= fStack288) { + fStack288 = fVar31; + } + fStack288 = fStack288 * 0.50000000; + fStack300 = *(float *)(iStack4 + 0x34) * fStack288; + fStack296 = *(float *)(iStack8 + 0x34) * fStack288; + fStack292 = *(float *)(iStack12 + 0x34) * fStack288; + fStack336 = fStack300 * *(float *)(iStack4 + 0x20); + fStack332 = fStack300 * *(float *)(iStack4 + 0x24); + fStack328 = fStack300 * flt_800575F4; + fStack324 = fStack296 * *(float *)(iStack8 + 0x20); + fStack320 = fStack296 * *(float *)(iStack8 + 0x24); + fStack316 = fStack296 * flt_800575F4; + fStack312 = fStack292 * *(float *)(iStack12 + 0x20); + fStack308 = fStack292 * *(float *)(iStack12 + 0x24); + fStack304 = fStack292 * flt_800575F4; + fStack344 = fStack336; + if (fStack336 < 0.00000000) { + fStack344 = -fStack336; + } + fStack340 = fStack332; + if (fStack332 < 0.00000000) { + fStack340 = -fStack332; + } + fVar31 = fStack324; + if (fStack324 < 0.00000000) { + fVar31 = -fStack324; + } + if ((fStack344 < fVar31) && (fStack344 = fStack324, fStack324 < 0.00000000)) { + fStack344 = -fStack324; + } + fVar31 = fStack320; + if (fStack320 < 0.00000000) { + fVar31 = -fStack320; + } + if (fStack340 < fVar31) { + if (0.00000000 <= fStack320) { + fStack340 = fStack320; + } + else { + fStack340 = -fStack320; + } + } + fVar31 = fStack312; + if (fStack312 < 0.00000000) { + fVar31 = -fStack312; + } + if (fStack344 < fVar31) { + if (0.00000000 <= fStack312) { + fStack344 = fStack312; + } + else { + fStack344 = -fStack312; + } + } + fVar31 = fStack308; + if (fStack308 < 0.00000000) { + fVar31 = -fStack308; + } + if (fStack340 < fVar31) { + if (0.00000000 <= fStack308) { + fStack340 = fStack308; + } + else { + fStack340 = -fStack308; + } + fVar31 = *(float *)(iStack4 + 0x10); + } + else { + fVar31 = *(float *)(iStack4 + 0x10); + } + pfVar23 = afStack408; + pfVar3 = afStack376; + pfVar22 = afStack440; + afStack376[0] = fVar31 + 0.50000000; + afStack376[1] = *(float *)(iStack4 + 0x14) + 0.50000000; + afStack376[2] = *(float *)(iStack4 + 0x18) + 0.50000000; + afStack376[3] = *(float *)(iStack4 + 0x1c) + 0.50000000; + afStack408[0] = *(float *)(iStack8 + 0x10) + 0.50000000; + afStack408[1] = *(float *)(iStack8 + 0x14) + 0.50000000; + afStack408[2] = *(float *)(iStack8 + 0x18) + 0.50000000; + afStack408[3] = *(float *)(iStack8 + 0x1c) + 0.50000000; + afStack440[0] = *(float *)(iStack12 + 0x10) + 0.50000000; + afStack440[1] = *(float *)(iStack12 + 0x14) + 0.50000000; + afStack440[2] = *(float *)(iStack12 + 0x18) + 0.50000000; + fStack360 = fStack336; + fStack356 = fStack332; + afStack440[3] = *(float *)(iStack12 + 0x1c) + 0.50000000; + fStack352 = fStack300 * flt_800575F4; + fStack388 = fStack320; + fStack392 = fStack324; + fStack384 = fStack296 * flt_800575F4; + afStack440[5] = fStack308; + afStack440[6] = fStack292 * flt_800575F4; + afStack440[4] = fStack312; + uStack348 = *(undefined4 *)(iStack4 + 0x30); + uStack380 = *(undefined4 *)(iStack8 + 0x30); + afStack440[7] = *(undefined4 *)(iStack12 + 0x30); + pfVar21 = afStack472; + pfVar20 = afStack504; + do { + fVar31 = *pfVar3; + fVar29 = *pfVar23; + fVar28 = *pfVar22; + pfVar22 = pfVar22 + 1; + pfVar23 = pfVar23 + 1; + pfVar3 = pfVar3 + 1; + *pfVar21 = fVar29 - fVar31; + *pfVar20 = fVar28 - fVar31; + fVar31 = fStack192; + pfVar21 = pfVar21 + 1; + pfVar20 = pfVar20 + 1; + } while (pfVar22 < afStack408); + pfVar21 = afStack568; + pfVar20 = afStack536; + pfVar3 = afStack504; + pfVar22 = afStack376; + pfVar23 = afStack472; + pfVar27 = afStack600; + pfVar24 = afStack632; + do { + fVar28 = *pfVar3; + fVar29 = *pfVar23; + pfVar25 = pfVar24 + 1; + fVar30 = (fVar28 * fStack188 - fStack180 * fVar29) / 65536.00000000; + *pfVar21 = fVar30; + *pfVar20 = (fVar29 * fStack184 - fVar31 * fVar28) / 65536.00000000; + fVar28 = *pfVar20; + *pfVar3 = fVar30 * fStack72; + fVar29 = *pfVar3; + fVar28 = fVar28 * fStack72; + fVar30 = *pfVar22; + *pfVar23 = fVar28; + fVar28 = fStack244 * fVar29 + fVar28; + *pfVar27 = fVar28; + *pfVar24 = fVar30 - fVar28 * fStack268; + pfVar21 = pfVar21 + 1; + pfVar20 = pfVar20 + 1; + pfVar3 = pfVar3 + 1; + pfVar22 = pfVar22 + 1; + pfVar23 = pfVar23 + 1; + pfVar27 = pfVar27 + 1; + pfVar24 = pfVar25; + } while (pfVar25 < afStack600); + uVar2 = proc_7F094298(afStack632[0]); + uVar4 = proc_7F094298(afStack632[1]); + uVar5 = proc_7F094298(afStack632[2]); + uVar6 = proc_7F094298(afStack632[3]); + uVar7 = proc_7F094298(afStack504[0]); + uVar8 = proc_7F094298(afStack504[1]); + uVar9 = proc_7F094298(afStack504[2]); + uVar10 = proc_7F094298(afStack504[3]); + uVar11 = proc_7F094298(afStack472[0]); + uVar12 = proc_7F094298(afStack472[1]); + uVar13 = proc_7F094298(afStack472[2]); + uVar14 = proc_7F094298(afStack472[3]); + uVar15 = proc_7F094298(afStack600[0]); + uVar16 = proc_7F094298(afStack600[1]); + uVar17 = proc_7F094298(afStack600[2]); + uVar18 = proc_7F094298(afStack600[3]); + param_1[0x10] = 0xb4000000; + param_1[0x11] = uVar2 & 0xffff0000 | uVar4 >> 0x10; + param_1[0x12] = 0xb2000000; + param_1[0x13] = uVar5 & 0xffff0000 | uVar6 >> 0x10; + param_1[0x14] = 0xb4000000; + param_1[0x15] = uVar7 & 0xffff0000 | uVar8 >> 0x10; + param_1[0x16] = 0xb2000000; + param_1[0x17] = uVar9 & 0xffff0000 | uVar10 >> 0x10; + param_1[0x18] = 0xb4000000; + param_1[0x19] = uVar2 << 0x10 | uVar4 & 0xffff; + param_1[0x1a] = 0xb2000000; + param_1[0x1b] = uVar5 << 0x10 | uVar6 & 0xffff; + param_1[0x1c] = 0xb4000000; + param_1[0x1d] = uVar7 << 0x10 | uVar8 & 0xffff; + param_1[0x1e] = 0xb2000000; + param_1[0x1f] = uVar9 << 0x10 | uVar10 & 0xffff; + param_1[0x20] = 0xb4000000; + param_1[0x21] = uVar15 & 0xffff0000 | uVar16 >> 0x10; + param_1[0x23] = uVar17 & 0xffff0000 | uVar18 >> 0x10; + param_1[0x22] = 0xb2000000; + param_1[0x24] = 0xb4000000; + param_1[0x25] = uVar11 & 0xffff0000 | uVar12 >> 0x10; + param_1[0x26] = 0xb2000000; + param_1[0x27] = uVar13 & 0xffff0000 | uVar14 >> 0x10; + param_1[0x29] = uVar15 << 0x10 | uVar16 & 0xffff; + param_1[0x28] = 0xb4000000; + param_1[0x2a] = 0xb2000000; + param_1[0x2b] = uVar17 << 0x10 | uVar18 & 0xffff; + param_1[0x2c] = 0xb4000000; + param_1[0x2d] = uVar11 << 0x10 | uVar12 & 0xffff; + param_1[0x2e] = 0xb2000000; + param_1[0x2f] = uVar13 << 0x10 | uVar14 & 0xffff; + fStack648 = fStack344 * 0.03125000; + fStack644 = fStack340 * 0.03125000; + pfVar22 = afStack696; + fStack640 = fStack288 * 0.03125000; + pfVar3 = afStack472; + pfVar20 = afStack504; + pfVar21 = afStack728; + do { + fVar31 = *pfVar20; + if (fVar31 < 0.00000000) { + fVar31 = -fVar31; + } + fVar28 = *pfVar3; + *pfVar22 = fVar31 * 0.03125000; + if (fVar28 < 0.00000000) { + fVar28 = -fVar28; + } + pfVar23 = pfVar21 + 1; + pfVar3 = pfVar3 + 1; + pfVar20 = pfVar20 + 1; + pfVar22 = pfVar22 + 1; + *pfVar21 = fVar28 * 0.03125000; + pfVar21 = pfVar23; + } while (pfVar23 != afStack696); + fVar31 = 1.00000000; + afStack728[4] = afStack728[4] + fStack648 + fStack680 * 2.00000000; + afStack728[5] = afStack728[5] + fStack644 + fStack676 * 2.00000000; + afStack728[6] = afStack728[6] + fStack640 + fStack672 * 2.00000000; + if (afStack728[5] <= afStack728[4]) { + afStack728[5] = afStack728[4]; + } + if (afStack728[6] <= afStack728[5]) { + afStack728[6] = afStack728[5]; + } + if (1.00000000 < afStack728[6] * 0.00097656) { + fVar31 = 1.00000000 / (afStack728[6] * 0.00097656); + } + uVar2 = proc_7F094298(fVar31 * afStack632[4]); + uVar4 = proc_7F094298(fVar31 * afStack632[5]); + uVar5 = proc_7F094298(fVar31 * afStack632[6]); + uVar6 = proc_7F094298(fVar31 * fStack488); + uVar7 = proc_7F094298(fVar31 * fStack484); + uVar8 = proc_7F094298(fVar31 * fStack480); + uVar9 = proc_7F094298(fVar31 * fStack456); + uVar10 = proc_7F094298(fVar31 * fStack452); + uVar11 = proc_7F094298(fVar31 * fStack448); + uVar12 = proc_7F094298(fVar31 * fStack584); + uVar13 = proc_7F094298(fVar31 * fStack580); + uVar14 = proc_7F094298(fVar31 * fStack576); + param_1[0x30] = 0xb4000000; + param_1[0x31] = uVar2 & 0xffff0000 | uVar4 >> 0x10; + param_1[0x33] = uVar5 & 0xffff0000; + param_1[0x32] = 0xb2000000; + param_1[0x34] = 0xb4000000; + param_1[0x35] = uVar6 & 0xffff0000 | uVar7 >> 0x10; + param_1[0x36] = 0xb2000000; + param_1[0x37] = uVar8 & 0xffff0000; + param_1[0x38] = 0xb4000000; + param_1[0x39] = uVar2 << 0x10 | uVar4 & 0xffff; + param_1[0x3b] = uVar5 << 0x10; + param_1[0x3a] = 0xb2000000; + param_1[0x3c] = 0xb4000000; + param_1[0x3d] = uVar6 << 0x10 | uVar7 & 0xffff; + param_1[0x3f] = uVar8 << 0x10; + param_1[0x3e] = 0xb2000000; + param_1[0x40] = 0xb4000000; + param_1[0x41] = uVar12 & 0xffff0000 | uVar13 >> 0x10; + param_1[0x42] = 0xb2000000; + param_1[0x43] = uVar14 & 0xffff0000; + param_1[0x44] = 0xb4000000; + param_1[0x45] = uVar9 & 0xffff0000 | uVar10 >> 0x10; + param_1[0x47] = uVar11 & 0xffff0000; + param_1[0x46] = 0xb2000000; + param_1[0x48] = 0xb4000000; + param_1[0x49] = uVar12 << 0x10 | uVar13 & 0xffff; + param_1[0x4b] = uVar14 << 0x10; + param_1[0x4a] = 0xb2000000; + param_1[0x4c] = 0xb4000000; + param_1[0x4d] = uVar9 << 0x10 | uVar10 & 0xffff; + param_1[0x4f] = uVar11 << 0x10; + param_1[0x4e] = 0xb3000000; + puVar19 = param_1 + 0x50; + } } - fStack288 = fStack276; - if (fVar30 <= fStack276) { - fStack288 = fVar30; - } - fStack288 = fStack288 * 0.50000000; - fStack300 = *(float *)(iStack4 + 0x34) * fStack288; - fStack296 = *(float *)(iStack8 + 0x34) * fStack288; - fStack292 = *(float *)(iStack12 + 0x34) * fStack288; - fStack360 = fStack300 * *(float *)(iStack4 + 0x20); - fStack356 = fStack300 * *(float *)(iStack4 + 0x24); - fStack352 = fStack300 * flt_800575F4; - fStack392 = fStack296 * *(float *)(iStack8 + 0x20); - fStack388 = fStack296 * *(float *)(iStack8 + 0x24); - fStack384 = fStack296 * flt_800575F4; - fStack424 = fStack292 * *(float *)(iStack12 + 0x20); - fStack420 = fStack292 * *(float *)(iStack12 + 0x24); - fStack416 = fStack292 * flt_800575F4; - fStack344 = fStack360; - if (fStack360 < 0.00000000) { - fStack344 = -fStack360; - } - fStack340 = fStack356; - if (fStack356 < 0.00000000) { - fStack340 = -fStack356; - } - fVar30 = fStack392; - if (fStack392 < 0.00000000) { - fVar30 = -fStack392; - } - if ((fStack344 < fVar30) && (fStack344 = fStack392, fStack392 < 0.00000000)) { - fStack344 = -fStack392; - } - fVar30 = fStack388; - if (fStack388 < 0.00000000) { - fVar30 = -fStack388; - } - if ((fStack340 < fVar30) && (fStack340 = fStack388, fStack388 < 0.00000000)) { - fStack340 = -fStack388; - } - fVar30 = fStack424; - if (fStack424 < 0.00000000) { - fVar30 = -fStack424; - } - if ((fStack344 < fVar30) && (fStack344 = fStack424, fStack424 < 0.00000000)) { - fStack344 = -fStack424; - } - fVar30 = fStack420; - if (fStack420 < 0.00000000) { - fVar30 = -fStack420; - } - if (fStack340 < fVar30) { - fStack340 = fStack420; - if (fStack420 < 0.00000000) { - fStack340 = -fStack420; - } - fStack376 = *(float *)(iStack4 + 0x10); - } - else { - fStack376 = *(float *)(iStack4 + 0x10); - } - pfVar23 = &fStack408; - fStack376 = fStack376 + 0.50000000; - pfVar3 = &fStack376; - pfVar22 = &fStack440; - fStack372 = *(float *)(iStack4 + 0x14) + 0.50000000; - fStack368 = *(float *)(iStack4 + 0x18) + 0.50000000; - fStack364 = *(float *)(iStack4 + 0x1c) + 0.50000000; - fStack408 = *(float *)(iStack8 + 0x10) + 0.50000000; - fStack404 = *(float *)(iStack8 + 0x14) + 0.50000000; - fStack400 = *(float *)(iStack8 + 0x18) + 0.50000000; - fStack396 = *(float *)(iStack8 + 0x1c) + 0.50000000; - fStack440 = *(float *)(iStack12 + 0x10) + 0.50000000; - fStack436 = *(float *)(iStack12 + 0x14) + 0.50000000; - fStack432 = *(float *)(iStack12 + 0x18) + 0.50000000; - fStack428 = *(float *)(iStack12 + 0x1c) + 0.50000000; - uStack348 = *(undefined4 *)(iStack4 + 0x30); - uStack380 = *(undefined4 *)(iStack8 + 0x30); - uStack412 = *(undefined4 *)(iStack12 + 0x30); - pfVar21 = &fStack472; - pfVar20 = &fStack504; - do { - fVar30 = *pfVar3; - fVar29 = *pfVar23; - fVar28 = *pfVar22; - pfVar22 = pfVar22 + 1; - pfVar23 = pfVar23 + 1; - pfVar3 = pfVar3 + 1; - *pfVar21 = fVar29 - fVar30; - *pfVar20 = fVar28 - fVar30; - pfVar21 = pfVar21 + 1; - pfVar20 = pfVar20 + 1; - } while (pfVar22 < &fStack408); - pfVar21 = afStack568; - pfVar20 = afStack536; - pfVar3 = &fStack504; - pfVar22 = &fStack376; - pfVar23 = &fStack472; - pfVar27 = &fStack600; - pfVar24 = &fStack632; - do { - fVar30 = *pfVar3; - fVar28 = *pfVar23; - pfVar25 = pfVar24 + 1; - fVar29 = (fVar30 * fStack188 - fStack180 * fVar28) / 65536.00000000; - *pfVar21 = fVar29; - *pfVar20 = (fVar28 * fStack184 - fStack192 * fVar30) / 65536.00000000; - fVar30 = *pfVar20; - *pfVar3 = fVar29 * fStack72; - fVar28 = *pfVar3; - fVar29 = *pfVar22; - *pfVar23 = fVar30 * fStack72; - fVar30 = fStack244 * fVar28 + fVar30 * fStack72; - *pfVar27 = fVar30; - *pfVar24 = fVar29 - fVar30 * fStack268; - pfVar21 = pfVar21 + 1; - pfVar20 = pfVar20 + 1; - pfVar3 = pfVar3 + 1; - pfVar22 = pfVar22 + 1; - pfVar23 = pfVar23 + 1; - pfVar27 = pfVar27 + 1; - pfVar24 = pfVar25; - } while (pfVar25 < &fStack600); - fStack336 = fStack360; - fStack332 = fStack356; - fStack328 = fStack352; - fStack324 = fStack392; - fStack320 = fStack388; - fStack316 = fStack384; - fStack312 = fStack424; - fStack308 = fStack420; - fStack304 = fStack416; - uVar2 = proc_7F094298(fStack632); - uVar4 = proc_7F094298(fStack628); - uVar5 = proc_7F094298(fStack624); - uVar6 = proc_7F094298(fStack620); - uVar7 = proc_7F094298(fStack504); - uVar8 = proc_7F094298(fStack500); - uVar9 = proc_7F094298(fStack496); - uVar10 = proc_7F094298(fStack492); - uVar11 = proc_7F094298(fStack472); - uVar12 = proc_7F094298(fStack468); - uVar13 = proc_7F094298(fStack464); - uVar14 = proc_7F094298(fStack460); - uVar15 = proc_7F094298(fStack600); - uVar16 = proc_7F094298(fStack596); - uVar17 = proc_7F094298(fStack592); - uVar18 = proc_7F094298(fStack588); - param_1[0x10] = 0xb4000000; - param_1[0x11] = uVar2 & 0xffff0000 | uVar4 >> 0x10; - param_1[0x12] = 0xb2000000; - param_1[0x13] = uVar5 & 0xffff0000 | uVar6 >> 0x10; - param_1[0x14] = 0xb4000000; - param_1[0x15] = uVar7 & 0xffff0000 | uVar8 >> 0x10; - param_1[0x16] = 0xb2000000; - param_1[0x17] = uVar9 & 0xffff0000 | uVar10 >> 0x10; - param_1[0x18] = 0xb4000000; - param_1[0x19] = uVar2 << 0x10 | uVar4 & 0xffff; - param_1[0x1a] = 0xb2000000; - param_1[0x1b] = uVar5 << 0x10 | uVar6 & 0xffff; - param_1[0x1c] = 0xb4000000; - param_1[0x1d] = uVar7 << 0x10 | uVar8 & 0xffff; - param_1[0x1e] = 0xb2000000; - param_1[0x1f] = uVar9 << 0x10 | uVar10 & 0xffff; - param_1[0x20] = 0xb4000000; - param_1[0x21] = uVar15 & 0xffff0000 | uVar16 >> 0x10; - param_1[0x23] = uVar17 & 0xffff0000 | uVar18 >> 0x10; - param_1[0x22] = 0xb2000000; - param_1[0x24] = 0xb4000000; - param_1[0x25] = uVar11 & 0xffff0000 | uVar12 >> 0x10; - param_1[0x26] = 0xb2000000; - param_1[0x27] = uVar13 & 0xffff0000 | uVar14 >> 0x10; - param_1[0x29] = uVar15 << 0x10 | uVar16 & 0xffff; - param_1[0x28] = 0xb4000000; - param_1[0x2a] = 0xb2000000; - param_1[0x2b] = uVar17 << 0x10 | uVar18 & 0xffff; - param_1[0x2c] = 0xb4000000; - param_1[0x2d] = uVar11 << 0x10 | uVar12 & 0xffff; - param_1[0x2e] = 0xb2000000; - param_1[0x2f] = uVar13 << 0x10 | uVar14 & 0xffff; - fStack648 = fStack344 * 0.03125000; - fStack644 = fStack340 * 0.03125000; - pfVar22 = afStack696; - fStack640 = fStack288 * 0.03125000; - pfVar3 = &fStack472; - pfVar20 = &fStack504; - pfVar21 = afStack728; - do { - fVar30 = *pfVar20; - if (fVar30 < 0.00000000) { - fVar30 = -fVar30; - } - fVar28 = *pfVar3; - *pfVar22 = fVar30 * 0.03125000; - if (fVar28 < 0.00000000) { - fVar28 = -fVar28; - } - pfVar23 = pfVar21 + 1; - pfVar3 = pfVar3 + 1; - pfVar20 = pfVar20 + 1; - pfVar22 = pfVar22 + 1; - *pfVar21 = fVar28 * 0.03125000; - pfVar21 = pfVar23; - } while (pfVar23 != afStack696); - fVar30 = 1.00000000; - fStack712 = fStack712 + fStack648 + fStack680 * 2.00000000; - fStack708 = fStack708 + fStack644 + fStack676 * 2.00000000; - fStack704 = fStack704 + fStack640 + fStack672 * 2.00000000; - if (fStack708 <= fStack712) { - fStack708 = fStack712; - } - if (fStack704 <= fStack708) { - fStack704 = fStack708; - } - if (1.00000000 < fStack704 * 0.00097656) { - fVar30 = 1.00000000 / (fStack704 * 0.00097656); - } - uVar2 = proc_7F094298(fVar30 * fStack616); - uVar4 = proc_7F094298(fVar30 * fStack612); - uVar5 = proc_7F094298(fVar30 * fStack608); - uVar6 = proc_7F094298(fVar30 * fStack488); - uVar7 = proc_7F094298(fVar30 * fStack484); - uVar8 = proc_7F094298(fVar30 * fStack480); - uVar9 = proc_7F094298(fVar30 * fStack456); - uVar10 = proc_7F094298(fVar30 * fStack452); - uVar11 = proc_7F094298(fVar30 * fStack448); - uVar12 = proc_7F094298(fVar30 * fStack584); - uVar13 = proc_7F094298(fVar30 * fStack580); - uVar14 = proc_7F094298(fVar30 * fStack576); - param_1[0x30] = 0xb4000000; - param_1[0x31] = uVar2 & 0xffff0000 | uVar4 >> 0x10; - param_1[0x33] = uVar5 & 0xffff0000; - param_1[0x32] = 0xb2000000; - param_1[0x34] = 0xb4000000; - param_1[0x35] = uVar6 & 0xffff0000 | uVar7 >> 0x10; - param_1[0x36] = 0xb2000000; - param_1[0x37] = uVar8 & 0xffff0000; - param_1[0x38] = 0xb4000000; - param_1[0x39] = uVar2 << 0x10 | uVar4 & 0xffff; - param_1[0x3b] = uVar5 << 0x10; - param_1[0x3a] = 0xb2000000; - param_1[0x3c] = 0xb4000000; - param_1[0x3d] = uVar6 << 0x10 | uVar7 & 0xffff; - param_1[0x3f] = uVar8 << 0x10; - param_1[0x3e] = 0xb2000000; - param_1[0x40] = 0xb4000000; - param_1[0x41] = uVar12 & 0xffff0000 | uVar13 >> 0x10; - param_1[0x42] = 0xb2000000; - param_1[0x43] = uVar14 & 0xffff0000; - param_1[0x44] = 0xb4000000; - param_1[0x45] = uVar9 & 0xffff0000 | uVar10 >> 0x10; - param_1[0x47] = uVar11 & 0xffff0000; - param_1[0x46] = 0xb2000000; - param_1[0x48] = 0xb4000000; - param_1[0x49] = uVar12 << 0x10 | uVar13 & 0xffff; - param_1[0x4b] = uVar14 << 0x10; - param_1[0x4a] = 0xb2000000; - param_1[0x4c] = 0xb4000000; - param_1[0x4d] = uVar9 << 0x10 | uVar10 & 0xffff; - param_1[0x4f] = uVar11 << 0x10; - param_1[0x4e] = 0xb3000000; - puVar19 = param_1 + 0x50; - } } - } - return puVar19; + return puVar19; } @@ -110336,758 +109273,755 @@ undefined4 * proc_7F098A2C(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5,float param_6) { - float fVar1; - int iVar2; - ulonglong uVar3; - uint uVar4; - float *pfVar5; - uint uVar6; - uint uVar7; - uint uVar8; - uint uVar9; - uint uVar10; - uint uVar11; - uint uVar12; - uint uVar13; - uint uVar14; - uint uVar15; - uint uVar16; - uint uVar17; - longlong lVar18; - float *pfVar19; - float *pfVar20; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - float *pfVar21; - longlong lVar22; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - float *pfVar23; - float *pfVar24; - float *pfVar25; - int iVar26; - float *pfVar27; - float fVar28; - f32 fVar29; - f32 fVar30; - float fVar31; - float fVar32; - uint uVar33; - float fVar34; - float fVar35; - uint uVar36; - float fVar37; - float fVar38; - float fVar39; - float fVar40; - uint uVar41; - float fVar42; - float fVar43; - float fVar44; - float in_stack_00000014; - float fStack788; - float fStack732; - float fStack728; - float fStack724; - float afStack716 [4]; - float fStack700; - float fStack696; - float fStack692; - float fStack668; - float fStack664; - float fStack660; - float fStack636; - float fStack632; - float fStack628; - float fStack624; - float afStack620 [4]; - float fStack604; - float fStack600; - float fStack596; - float fStack592; - float afStack572 [8]; - float afStack540 [8]; - float fStack508; - float fStack504; - float fStack500; - float fStack496; - float fStack476; - float fStack472; - float fStack468; - float fStack464; - float fStack444; - float fStack440; - float fStack436; - undefined4 uStack432; - float afStack428 [4]; - float fStack412; - float fStack408; - float fStack404; - undefined4 uStack400; - float fStack380; - float fStack376; - float fStack372; - undefined4 uStack368; - float fStack364; - float fStack360; - float fStack356; - float fStack352; - float fStack348; - float fStack344; - float fStack340; - float fStack336; - float fStack332; - float fStack328; - float fStack324; - float fStack320; - float fStack316; - float fStack312; - float fStack308; - float fStack304; - float fStack300; - float fStack296; - float fStack292; - float fStack288; - float fStack284; - float fStack280; - float fStack276; - float fStack272; - undefined4 uStack268; - float fStack264; - undefined4 uStack260; - float fStack256; - undefined4 uStack252; - float fStack248; - undefined4 uStack244; - undefined4 uStack240; - undefined4 uStack236; - float fStack232; - undefined4 uStack228; - float fStack224; - undefined4 uStack220; - float fStack216; - undefined4 uStack212; - undefined4 uStack208; - float fStack204; - float fStack200; - float fStack196; - float fStack192; - float fStack188; - float fStack184; - undefined4 uStack180; - undefined4 uStack176; - float fStack172; - float fStack168; - float fStack164; - float fStack160; - float fStack156; - float fStack152; - undefined4 uStack148; - undefined4 uStack144; - float fStack132; - float fStack124; - float fStack108; - undefined4 uStack104; - float fStack100; - undefined4 uStack96; - float fStack92; - undefined4 uStack88; - undefined4 uStack84; - undefined4 uStack80; - float fStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack32; - int iStack12; - int iStack8; - int iStack4; - - uVar3 = proc_7F0977B4(param_2,param_3); - if (uVar3 != 0) { - return param_1; - } - uVar3 = proc_7F0977B4(param_3,param_4); - if (uVar3 != 0) { - return param_1; - } - uVar3 = proc_7F0977B4(param_4,param_2); - if (uVar3 != 0) { - return param_1; - } - uVar3 = proc_7F0977B4(param_5,param_2); - if (uVar3 != 0) { - return param_1; - } - uVar3 = proc_7F0977B4(param_5,param_3); - if (uVar3 != 0) { - return param_1; - } - uVar3 = proc_7F0977B4(param_5,param_4); - if (uVar3 != 0) { - return param_1; - } - lVar18 = (longlong)param_2; - fStack272 = in_stack_00000014 / 65536.00000000; - fVar28 = *(float *)(param_2 + 0x2c); - fStack72 = ((*(float *)(param_4 + 0x28) - *(float *)(param_2 + 0x28)) * - (*(float *)(param_3 + 0x2c) - fVar28) - - (*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * - (*(float *)(param_4 + 0x2c) - fVar28)) / 65536.00000000; - fStack76 = 1.00000000 / fStack72; - lVar22 = (longlong)param_3; - if (*(float *)(param_3 + 0x2c) < fVar28) { - fStack72 = fStack72 * -1.00000000; - fStack76 = fStack76 * -1.00000000; - lVar22 = lVar18; - lVar18 = (longlong)param_3; - } - iVar26 = (int)lVar18; - iVar2 = (int)lVar22; - fVar28 = *(float *)(iVar2 + 0x2c); - iStack12 = param_4; - if (*(float *)(param_4 + 0x2c) < fVar28) { - fStack76 = fStack76 * -1.00000000; - fVar28 = *(float *)(param_4 + 0x2c); - lVar22 = (longlong)param_4; - iStack12 = iVar2; - } - iStack4 = (int)lVar22; - if (fVar28 < *(float *)(iVar26 + 0x2c)) { - fStack76 = fStack76 * -1.00000000; - fStack108 = *(float *)(iVar26 + 0x28); - } - else { - fStack108 = *(float *)(iStack4 + 0x28); - lVar18 = lVar22; - iStack4 = iVar26; - } - fStack108 = fStack108 * 0.25000000; - uStack104 = 0; - uStack96 = 0; - fStack100 = *(float *)(iStack4 + 0x28) * 0.25000000; - uStack88 = 0; - uStack80 = 0; - fStack92 = *(float *)(iStack4 + 0x28) * 0.25000000; - uStack84 = 0; - fStack68 = *(float *)(iStack12 + 0x28); - fStack64 = *(float *)(iStack12 + 0x2c); - iStack8 = (int)lVar18; - fStack60 = *(float *)(iStack8 + 0x28); - fStack56 = *(float *)(iStack8 + 0x2c); - fStack52 = *(float *)(iStack4 + 0x28); - fStack48 = *(float *)(iStack4 + 0x2c); - fVar28 = fStack56 - fStack48; - fStack256 = fStack60 - fStack52; - fStack248 = fStack64 - fStack48; - fStack32 = fStack68 - fStack52; - uStack144 = 0; - uStack148 = 0; - fStack40 = fStack68 - fStack60; - fStack44 = fStack64 - fStack56; - fStack172 = fStack40 * 0.25000000; - fStack168 = fStack44 * 0.25000000; - uStack176 = 0; - uStack180 = 0; - uStack236 = 0; - uStack228 = 0; - fStack164 = fStack256 * 0.25000000; - uStack220 = 0; - uStack208 = 0; - fStack160 = fVar28 * 0.25000000; - uStack212 = 0; - uStack268 = 0; - uStack260 = 0; - fStack156 = fStack32 * 0.25000000; - uStack252 = 0; - fStack152 = fStack248 * 0.25000000; - uStack240 = 0; - fStack204 = fStack40 * 4.00000000; - uStack244 = 0; - fStack200 = fStack44 * 4.00000000; - fStack196 = fStack256 * 4.00000000; - fStack192 = fVar28 * 4.00000000; - fStack188 = fStack32 * 4.00000000; - fStack184 = fStack248 * 4.00000000; - fStack232 = 4.00000000 / fStack44; - fStack224 = 4.00000000 / fVar28; - fStack216 = 4.00000000 / fStack248; - fStack264 = fStack40 / fStack44; - fStack256 = fStack256 / fVar28; - fStack248 = fStack32 / fStack248; - fStack264 = proc_7F093C48(fStack264,flt_800575F8,(longlong)param_4,lVar18,1877.00000000); - fStack256 = proc_7F093C48(fStack256,flt_800575FC,extraout_a0,extraout_a1,1877.00000000); - fStack248 = proc_7F093C48(fStack248,flt_80057600,extraout_a0_00,extraout_a1_00,1877.00000000); - fStack132 = fStack100; - fStack124 = fStack92; - if (*(float *)(param_2 + 0x28) < *(float *)(param_3 + 0x28)) { - if (*(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c) < 1.00000000) { - fStack788 = flt_80057604; + float fVar1; + int iVar2; + ulonglong uVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + longlong lVar18; + float *pfVar19; + float *pfVar20; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + float *pfVar21; + longlong lVar22; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + float *pfVar23; + float *pfVar24; + float *pfVar25; + int iVar26; + float *pfVar27; + float fVar28; + f32 fVar29; + f32 fVar30; + float fVar31; + float fVar32; + uint uVar33; + float fVar34; + uint uVar35; + float fVar36; + float fVar37; + float fVar38; + float fVar39; + uint uVar40; + float fVar41; + float fVar42; + float fVar43; + float fVar44; + float in_stack_00000014; + float fStack788; + float afStack732 [4]; + float afStack716 [4]; + float afStack700 [8]; + float fStack668; + float fStack664; + float fStack660; + float afStack636 [4]; + float afStack620 [4]; + float afStack604 [8]; + float afStack572 [8]; + float afStack540 [8]; + float afStack508 [8]; + float afStack476 [8]; + float afStack444 [4]; + float afStack428 [4]; + float afStack412 [8]; + float afStack380 [4]; + float fStack364; + float fStack360; + float fStack356; + float fStack352; + float fStack348; + float fStack344; + float fStack340; + float fStack336; + float fStack332; + float fStack328; + float fStack324; + float fStack320; + float fStack316; + float fStack312; + float fStack308; + float fStack304; + float fStack300; + float fStack296; + float fStack292; + float fStack288; + float fStack284; + float fStack280; + float fStack276; + float fStack272; + undefined4 uStack268; + float fStack264; + undefined4 uStack260; + float fStack256; + undefined4 uStack252; + float fStack248; + undefined4 uStack244; + undefined4 uStack240; + undefined4 uStack236; + float fStack232; + undefined4 uStack228; + float fStack224; + undefined4 uStack220; + float fStack216; + undefined4 uStack212; + undefined4 uStack208; + float fStack204; + float fStack200; + float fStack196; + float fStack192; + float fStack188; + float fStack184; + undefined4 uStack180; + undefined4 uStack176; + float fStack172; + float fStack168; + float fStack164; + float fStack160; + float fStack156; + float fStack152; + undefined4 uStack148; + undefined4 uStack144; + float fStack132; + float fStack124; + float fStack108; + undefined4 uStack104; + float fStack100; + undefined4 uStack96; + float fStack92; + undefined4 uStack88; + undefined4 uStack84; + undefined4 uStack80; + float fStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float fStack32; + int iStack12; + int iStack8; + int iStack4; + + uVar3 = proc_7F0977B4(param_2,param_3); + if (uVar3 != 0) { + return param_1; + } + uVar3 = proc_7F0977B4(param_3,param_4); + if (uVar3 != 0) { + return param_1; + } + uVar3 = proc_7F0977B4(param_4,param_2); + if (uVar3 != 0) { + return param_1; + } + uVar3 = proc_7F0977B4(param_5,param_2); + if (uVar3 != 0) { + return param_1; + } + uVar3 = proc_7F0977B4(param_5,param_3); + if (uVar3 != 0) { + return param_1; + } + uVar3 = proc_7F0977B4(param_5,param_4); + if (uVar3 != 0) { + return param_1; + } + lVar18 = (longlong)param_2; + fStack272 = in_stack_00000014 / 65536.00000000; + fVar28 = *(float *)(param_2 + 0x2c); + fStack72 = ((*(float *)(param_4 + 0x28) - *(float *)(param_2 + 0x28)) * + (*(float *)(param_3 + 0x2c) - fVar28) - + (*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * + (*(float *)(param_4 + 0x2c) - fVar28)) / 65536.00000000; + fStack76 = 1.00000000 / fStack72; + lVar22 = (longlong)param_3; + if (*(float *)(param_3 + 0x2c) < fVar28) { + fStack72 = fStack72 * -1.00000000; + fStack76 = fStack76 * -1.00000000; + lVar22 = lVar18; + lVar18 = (longlong)param_3; + } + iVar26 = (int)lVar18; + iVar2 = (int)lVar22; + fVar28 = *(float *)(iVar2 + 0x2c); + iStack12 = param_4; + if (*(float *)(param_4 + 0x2c) < fVar28) { + fStack76 = fStack76 * -1.00000000; + fVar28 = *(float *)(param_4 + 0x2c); + lVar22 = (longlong)param_4; + iStack12 = iVar2; + } + iStack4 = (int)lVar22; + if (fVar28 < *(float *)(iVar26 + 0x2c)) { + fStack76 = fStack76 * -1.00000000; + fStack108 = *(float *)(iVar26 + 0x28); } else { - fVar29 = getPlayer_c_screenwidth(); - fStack788 = -((float)fVar29 - 0.25000000) / - ((*(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c)) * 0.25000000); + fStack108 = *(float *)(iStack4 + 0x28); + lVar18 = lVar22; + iStack4 = iVar26; } - *param_1 = 0xb4000000; - param_1[1] = (int)*(float *)(param_4 + 0x2c) | 0xce800000; - param_1[2] = 0xb2000000; - param_1[3] = (int)*(float *)(param_5 + 0x2c) << 0x10 | (int)*(float *)(param_2 + 0x2c); - param_1[4] = 0xb4000000; - fVar29 = getPlayer_c_screenleft(); - fVar30 = getPlayer_c_screenwidth(); - uVar4 = proc_7F094298(((float)fVar30 + (float)fVar29) - 0.25000000); - param_1[5] = uVar4; - param_1[6] = 0xb2000000; - uVar4 = proc_7F094298(fStack788); - param_1[7] = uVar4; - param_1[8] = 0xb4000000; - fVar29 = getPlayer_c_screenleft(); - uVar4 = proc_7F094298((float)fVar29); - param_1[9] = uVar4; - param_1[10] = 0xb2000000; - uVar4 = proc_7F094298(0.00000000); - param_1[0xb] = uVar4; - param_1[0xc] = 0xb4000000; - fVar29 = getPlayer_c_screenleft(); - fVar30 = getPlayer_c_screenwidth(); - uVar4 = proc_7F094298(((float)fVar30 + (float)fVar29) - 0.25000000); - param_1[0xd] = uVar4; - param_1[0xe] = 0xb2000000; - uVar4 = proc_7F094298(0.00000000); - param_1[0xf] = uVar4; - } - else { - fVar28 = flt_80057608; - if (1.00000000 <= *(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c)) { - fVar29 = getPlayer_c_screenwidth(); - fVar28 = ((float)fVar29 - 0.25000000) / - ((*(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c)) * 0.25000000); + fStack108 = fStack108 * 0.25000000; + uStack104 = 0; + uStack96 = 0; + fStack100 = *(float *)(iStack4 + 0x28) * 0.25000000; + uStack88 = 0; + uStack80 = 0; + fStack92 = *(float *)(iStack4 + 0x28) * 0.25000000; + uStack84 = 0; + fStack68 = *(float *)(iStack12 + 0x28); + fStack64 = *(float *)(iStack12 + 0x2c); + iStack8 = (int)lVar18; + fStack60 = *(float *)(iStack8 + 0x28); + fStack56 = *(float *)(iStack8 + 0x2c); + fStack52 = *(float *)(iStack4 + 0x28); + fStack48 = *(float *)(iStack4 + 0x2c); + fVar28 = fStack56 - fStack48; + fStack256 = fStack60 - fStack52; + fStack248 = fStack64 - fStack48; + fStack32 = fStack68 - fStack52; + uStack144 = 0; + uStack148 = 0; + fStack40 = fStack68 - fStack60; + fStack44 = fStack64 - fStack56; + fStack172 = fStack40 * 0.25000000; + fStack168 = fStack44 * 0.25000000; + uStack176 = 0; + uStack180 = 0; + uStack236 = 0; + uStack228 = 0; + fStack164 = fStack256 * 0.25000000; + uStack220 = 0; + uStack208 = 0; + fStack160 = fVar28 * 0.25000000; + uStack212 = 0; + uStack268 = 0; + uStack260 = 0; + fStack156 = fStack32 * 0.25000000; + uStack252 = 0; + fStack152 = fStack248 * 0.25000000; + uStack240 = 0; + fStack204 = fStack40 * 4.00000000; + uStack244 = 0; + fStack200 = fStack44 * 4.00000000; + fStack196 = fStack256 * 4.00000000; + fStack192 = fVar28 * 4.00000000; + fStack188 = fStack32 * 4.00000000; + fStack184 = fStack248 * 4.00000000; + fStack232 = 4.00000000 / fStack44; + fStack224 = 4.00000000 / fVar28; + fStack216 = 4.00000000 / fStack248; + fStack264 = fStack40 / fStack44; + fStack256 = fStack256 / fVar28; + fStack248 = fStack32 / fStack248; + fStack264 = proc_7F093C48(fStack264,flt_800575F8,(longlong)param_4,lVar18,1877.00000000); + fStack256 = proc_7F093C48(fStack256,flt_800575FC,extraout_a0,extraout_a1,1877.00000000); + fStack248 = proc_7F093C48(fStack248,flt_80057600,extraout_a0_00,extraout_a1_00,1877.00000000); + fStack132 = fStack100; + fStack124 = fStack92; + if (*(float *)(param_2 + 0x28) < *(float *)(param_3 + 0x28)) { + if (*(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c) < 1.00000000) { + fStack788 = flt_80057604; + } + else { + fVar29 = getPlayer_c_screenwidth(); + fStack788 = -((float)fVar29 - 0.25000000) / + ((*(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c)) * 0.25000000); + } + *param_1 = 0xb4000000; + param_1[1] = (int)*(float *)(param_4 + 0x2c) | 0xce800000; + param_1[2] = 0xb2000000; + param_1[3] = (int)*(float *)(param_5 + 0x2c) << 0x10 | (int)*(float *)(param_2 + 0x2c); + param_1[4] = 0xb4000000; + fVar29 = getPlayer_c_screenleft(); + fVar30 = getPlayer_c_screenwidth(); + uVar4 = proc_7F094298(((float)fVar30 + (float)fVar29) - 0.25000000); + param_1[5] = uVar4; + param_1[6] = 0xb2000000; + uVar4 = proc_7F094298(fStack788); + param_1[7] = uVar4; + param_1[8] = 0xb4000000; + fVar29 = getPlayer_c_screenleft(); + uVar4 = proc_7F094298((float)fVar29); + param_1[9] = uVar4; + param_1[10] = 0xb2000000; + uVar4 = proc_7F094298(0.00000000); + param_1[0xb] = uVar4; + param_1[0xc] = 0xb4000000; + fVar29 = getPlayer_c_screenleft(); + fVar30 = getPlayer_c_screenwidth(); + uVar4 = proc_7F094298(((float)fVar30 + (float)fVar29) - 0.25000000); + param_1[0xd] = uVar4; + param_1[0xe] = 0xb2000000; + uVar4 = proc_7F094298(0.00000000); + param_1[0xf] = uVar4; } - *param_1 = 0xb4000000; - param_1[1] = (int)*(float *)(param_4 + 0x2c) | 0xce000000; - param_1[2] = 0xb2000000; - param_1[3] = (int)*(float *)(param_5 + 0x2c) << 0x10 | (int)*(float *)(param_2 + 0x2c); - param_1[4] = 0xb4000000; - fVar29 = getPlayer_c_screenleft(); - uVar4 = proc_7F094298((float)fVar29); - param_1[5] = uVar4; - param_1[6] = 0xb2000000; - uVar4 = proc_7F094298(fVar28); - param_1[7] = uVar4; - param_1[8] = 0xb4000000; - fVar29 = getPlayer_c_screenleft(); - fVar30 = getPlayer_c_screenwidth(); - uVar4 = proc_7F094298(((float)fVar30 + (float)fVar29) - 0.25000000); - param_1[9] = uVar4; - param_1[10] = 0xb2000000; - uVar4 = proc_7F094298(0.00000000); - param_1[0xb] = uVar4; - param_1[0xc] = 0xb4000000; - fVar29 = getPlayer_c_screenleft(); - uVar4 = proc_7F094298((float)fVar29); - param_1[0xd] = uVar4; - param_1[0xe] = 0xb2000000; - uVar4 = proc_7F094298(0.00000000); - param_1[0xf] = uVar4; - } - fStack288 = *(float *)(iStack4 + 0xc) * fStack272; - fStack284 = *(float *)(iStack8 + 0xc) * fStack272; - fStack280 = *(float *)(iStack12 + 0xc) * fStack272; - fStack276 = *(float *)(param_5 + 0xc) * fStack272; - fVar28 = fStack284; - if (fStack288 <= fStack284) { - fVar28 = fStack288; - } - fVar31 = fStack280; - if (fVar28 <= fStack280) { - fVar31 = fVar28; - } - fStack292 = fStack276; - if (fVar31 <= fStack276) { - fStack292 = fVar31; - } - fStack292 = fStack292 * 0.50000000; - fStack308 = *(float *)(iStack4 + 0x34) * fStack292; - fStack304 = *(float *)(iStack8 + 0x34) * fStack292; - fStack300 = *(float *)(iStack12 + 0x34) * fStack292; - fStack296 = *(float *)(param_5 + 0x34) * fStack292; - fStack380 = fStack308 * *(float *)(iStack4 + 0x20); - fStack376 = fStack308 * *(float *)(iStack4 + 0x24); - fStack372 = fStack308 * flt_8005760C; - fStack412 = fStack304 * *(float *)(iStack8 + 0x20); - fStack408 = fStack304 * *(float *)(iStack8 + 0x24); - fStack404 = fStack304 * flt_8005760C; - fStack444 = fStack300 * *(float *)(iStack12 + 0x20); - fStack440 = fStack300 * *(float *)(iStack12 + 0x24); - fStack436 = fStack300 * flt_8005760C; - fStack320 = fStack296 * *(float *)(param_5 + 0x20); - fStack316 = fStack296 * *(float *)(param_5 + 0x24); - fStack312 = fStack296 * flt_8005760C; - fStack364 = fStack380; - if (fStack380 < 0.00000000) { - fStack364 = -fStack380; - } - fStack360 = fStack376; - if (fStack376 < 0.00000000) { - fStack360 = -fStack376; - } - fVar28 = fStack412; - if (fStack412 < 0.00000000) { - fVar28 = -fStack412; - } - if ((fStack364 < fVar28) && (fStack364 = fStack412, fStack412 < 0.00000000)) { - fStack364 = -fStack412; - } - fVar28 = fStack408; - if (fStack408 < 0.00000000) { - fVar28 = -fStack408; - } - if ((fStack360 < fVar28) && (fStack360 = fStack408, fStack408 < 0.00000000)) { - fStack360 = -fStack408; - } - fVar28 = fStack444; - if (fStack444 < 0.00000000) { - fVar28 = -fStack444; - } - if ((fStack364 < fVar28) && (fStack364 = fStack444, fStack444 < 0.00000000)) { - fStack364 = -fStack444; - } - fVar28 = fStack440; - if (fStack440 < 0.00000000) { - fVar28 = -fStack440; - } - if ((fStack360 < fVar28) && (fStack360 = fStack440, fStack440 < 0.00000000)) { - fStack360 = -fStack440; - } - fVar28 = fStack320; - if (fStack320 < 0.00000000) { - fVar28 = -fStack320; - } - if ((fStack364 < fVar28) && (fStack364 = fStack320, fStack320 < 0.00000000)) { - fStack364 = -fStack320; - } - fVar28 = fStack316; - if (fStack316 < 0.00000000) { - fVar28 = -fStack316; - } - if ((fStack360 < fVar28) && (fStack360 = fStack316, fStack316 < 0.00000000)) { - fStack360 = -fStack316; - } - uStack368 = *(undefined4 *)(iStack4 + 0x30); - pfVar24 = &fStack412; - uStack400 = *(undefined4 *)(iStack8 + 0x30); - pfVar5 = &fStack380; - uStack432 = *(undefined4 *)(iStack12 + 0x30); - pfVar23 = &fStack444; - pfVar19 = &fStack476; - pfVar21 = &fStack508; - do { - fVar28 = *pfVar5; - fVar31 = *pfVar24; - fVar39 = *pfVar23; - pfVar23 = pfVar23 + 1; - pfVar24 = pfVar24 + 1; - pfVar5 = pfVar5 + 1; - *pfVar19 = fVar31 - fVar28; - *pfVar21 = fVar39 - fVar28; - pfVar19 = pfVar19 + 1; - pfVar21 = pfVar21 + 1; - } while (pfVar23 < afStack428); - pfVar19 = afStack572; - pfVar21 = afStack540; - pfVar5 = &fStack380; - pfVar23 = &fStack508; - pfVar24 = &fStack636; - pfVar20 = &fStack476; - pfVar27 = &fStack604; - do { - fVar28 = *pfVar23; - fVar31 = *pfVar20; - pfVar25 = pfVar24 + 1; - fVar39 = (fVar28 * fStack192 - fStack184 * fVar31) / 65536.00000000; - *pfVar19 = fVar39; - *pfVar21 = (fVar31 * fStack188 - fStack196 * fVar28) / 65536.00000000; - fVar28 = *pfVar21; - fVar31 = *pfVar5; - *pfVar23 = fVar39 * fStack76; - *pfVar24 = fVar31; - *pfVar20 = fVar28 * fStack76; - *pfVar27 = fVar28 * fStack76; - pfVar19 = pfVar19 + 1; - pfVar21 = pfVar21 + 1; - pfVar5 = pfVar5 + 1; - pfVar23 = pfVar23 + 1; - pfVar24 = pfVar25; - pfVar20 = pfVar20 + 1; - pfVar27 = pfVar27 + 1; - } while (pfVar25 < afStack620); - fVar42 = *(float *)(param_2 + 0x10); - fVar28 = *(float *)(param_5 + 0x2c) / *(float *)(param_4 + 0x2c); - fVar40 = *(float *)(param_4 + 0x14); - fVar31 = *(float *)(param_2 + 0x14); - fVar37 = *(float *)(param_5 + 0x14); - fVar38 = *(float *)(param_4 + 0x18); - fVar43 = *(float *)(param_2 + 0x18); - fVar39 = *(float *)(param_5 + 0x18); - fVar32 = *(float *)(param_4 + 0x1c); - fVar44 = *(float *)(param_2 + 0x1c); - fVar34 = *(float *)(param_5 + 0x1c); - fVar35 = fVar42 * 65536.00000000; - if (false) { - fVar1 = ROUND(fVar35); - } - else { - fVar1 = FLOOR(fVar35); - } - uVar4 = (uint)fVar1; - if (true) { - if ((int)uVar4 < 0) goto LAB_7f0997c0; - } - else { + else { + fVar28 = flt_80057608; + if (1.00000000 <= *(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c)) { + fVar29 = getPlayer_c_screenwidth(); + fVar28 = ((float)fVar29 - 0.25000000) / + ((*(float *)(param_4 + 0x2c) - *(float *)(param_5 + 0x2c)) * 0.25000000); + } + *param_1 = 0xb4000000; + param_1[1] = (int)*(float *)(param_4 + 0x2c) | 0xce000000; + param_1[2] = 0xb2000000; + param_1[3] = (int)*(float *)(param_5 + 0x2c) << 0x10 | (int)*(float *)(param_2 + 0x2c); + param_1[4] = 0xb4000000; + fVar29 = getPlayer_c_screenleft(); + uVar4 = proc_7F094298((float)fVar29); + param_1[5] = uVar4; + param_1[6] = 0xb2000000; + uVar4 = proc_7F094298(fVar28); + param_1[7] = uVar4; + param_1[8] = 0xb4000000; + fVar29 = getPlayer_c_screenleft(); + fVar30 = getPlayer_c_screenwidth(); + uVar4 = proc_7F094298(((float)fVar30 + (float)fVar29) - 0.25000000); + param_1[9] = uVar4; + param_1[10] = 0xb2000000; + uVar4 = proc_7F094298(0.00000000); + param_1[0xb] = uVar4; + param_1[0xc] = 0xb4000000; + fVar29 = getPlayer_c_screenleft(); + uVar4 = proc_7F094298((float)fVar29); + param_1[0xd] = uVar4; + param_1[0xe] = 0xb2000000; + uVar4 = proc_7F094298(0.00000000); + param_1[0xf] = uVar4; + } + fStack288 = *(float *)(iStack4 + 0xc) * fStack272; + fVar32 = *(float *)(iStack8 + 0xc) * fStack272; + fStack284 = fVar32; + fVar28 = *(float *)(iStack12 + 0xc) * fStack272; + fStack280 = fVar28; + fStack292 = *(float *)(param_5 + 0xc) * fStack272; + fStack276 = fStack292; + if (fStack288 <= fVar32) { + fVar32 = fStack288; + } + if (fVar32 <= fVar28) { + fVar28 = fVar32; + } + if (fVar28 <= fStack292) { + fStack292 = fVar28; + } + fStack292 = fStack292 * 0.50000000; + fStack308 = *(float *)(iStack4 + 0x34) * fStack292; + fStack304 = *(float *)(iStack8 + 0x34) * fStack292; + fStack300 = *(float *)(iStack12 + 0x34) * fStack292; + fStack296 = *(float *)(param_5 + 0x34) * fStack292; + fStack356 = fStack308 * *(float *)(iStack4 + 0x20); + fStack352 = fStack308 * *(float *)(iStack4 + 0x24); + fStack348 = fStack308 * flt_8005760C; + fStack344 = fStack304 * *(float *)(iStack8 + 0x20); + fStack340 = fStack304 * *(float *)(iStack8 + 0x24); + fStack336 = fStack304 * flt_8005760C; + fStack332 = fStack300 * *(float *)(iStack12 + 0x20); + fStack328 = fStack300 * *(float *)(iStack12 + 0x24); + fStack324 = fStack300 * flt_8005760C; + fStack320 = fStack296 * *(float *)(param_5 + 0x20); + fStack316 = fStack296 * *(float *)(param_5 + 0x24); + fStack312 = fStack296 * flt_8005760C; + fStack364 = fStack356; + if (fStack356 < 0.00000000) { + fStack364 = -fStack356; + } + fStack360 = fStack352; + if (fStack352 < 0.00000000) { + fStack360 = -fStack352; + } + fVar28 = fStack344; + if (fStack344 < 0.00000000) { + fVar28 = -fStack344; + } + if ((fStack364 < fVar28) && (fStack364 = fStack344, fStack344 < 0.00000000)) { + fStack364 = -fStack344; + } + fVar28 = fStack340; + if (fStack340 < 0.00000000) { + fVar28 = -fStack340; + } + if (fStack360 < fVar28) { + if (0.00000000 <= fStack340) { + fStack360 = fStack340; + } + else { + fStack360 = -fStack340; + } + } + fVar28 = fStack332; + if (fStack332 < 0.00000000) { + fVar28 = -fStack332; + } + if ((fStack364 < fVar28) && (fStack364 = fStack332, fStack332 < 0.00000000)) { + fStack364 = -fStack332; + } + fVar28 = fStack328; + if (fStack328 < 0.00000000) { + fVar28 = -fStack328; + } + if ((fStack360 < fVar28) && (fStack360 = fStack328, fStack328 < 0.00000000)) { + fStack360 = -fStack328; + } + fVar28 = fStack320; + if (fStack320 < 0.00000000) { + fVar28 = -fStack320; + } + if (fStack364 < fVar28) { + if (0.00000000 <= fStack320) { + fStack364 = fStack320; + } + else { + fStack364 = -fStack320; + } + } + fVar28 = fStack316; + if (fStack316 < 0.00000000) { + fVar28 = -fStack316; + } + if (fStack360 < fVar28) { + if (0.00000000 <= fStack316) { + fStack360 = fStack316; + } + else { + fStack360 = -fStack316; + } + } + afStack380[0] = fStack356; + afStack380[1] = fStack352; + afStack380[2] = fStack308 * flt_8005760C; + afStack412[1] = fStack340; + afStack412[0] = fStack344; + afStack412[2] = fStack304 * flt_8005760C; + afStack444[1] = fStack328; + afStack444[2] = fStack300 * flt_8005760C; + afStack444[0] = fStack332; + pfVar24 = afStack412; + afStack380[3] = *(undefined4 *)(iStack4 + 0x30); + pfVar5 = afStack380; + afStack412[3] = *(undefined4 *)(iStack8 + 0x30); + pfVar23 = afStack444; + afStack444[3] = *(undefined4 *)(iStack12 + 0x30); + pfVar19 = afStack476; + pfVar21 = afStack508; + do { + fVar28 = *pfVar5; + fVar32 = *pfVar24; + fVar38 = *pfVar23; + pfVar23 = pfVar23 + 1; + pfVar24 = pfVar24 + 1; + pfVar5 = pfVar5 + 1; + *pfVar19 = fVar32 - fVar28; + *pfVar21 = fVar38 - fVar28; + fVar32 = fStack192; + fVar28 = fStack196; + pfVar19 = pfVar19 + 1; + pfVar21 = pfVar21 + 1; + } while (pfVar23 < afStack428); + pfVar19 = afStack572; + pfVar21 = afStack540; + pfVar5 = afStack380; + pfVar23 = afStack508; + pfVar24 = afStack636; + pfVar20 = afStack476; + pfVar27 = afStack604; + do { + fVar38 = *pfVar23; + fVar31 = *pfVar20; + pfVar25 = pfVar24 + 1; + fVar41 = (fVar38 * fVar32 - fStack184 * fVar31) / 65536.00000000; + *pfVar19 = fVar41; + *pfVar21 = (fVar31 * fStack188 - fVar28 * fVar38) / 65536.00000000; + fVar38 = *pfVar21; + fVar31 = *pfVar5; + *pfVar23 = fVar41 * fStack76; + *pfVar24 = fVar31; + fVar38 = fVar38 * fStack76; + *pfVar20 = fVar38; + *pfVar27 = fVar38; + pfVar19 = pfVar19 + 1; + pfVar21 = pfVar21 + 1; + pfVar5 = pfVar5 + 1; + pfVar23 = pfVar23 + 1; + pfVar24 = pfVar25; + pfVar20 = pfVar20 + 1; + pfVar27 = pfVar27 + 1; + } while (pfVar25 < afStack620); + fVar42 = *(float *)(param_2 + 0x10); + fVar28 = *(float *)(param_5 + 0x2c) / *(float *)(param_4 + 0x2c); + fVar39 = *(float *)(param_4 + 0x14); + fVar32 = *(float *)(param_2 + 0x14); + fVar36 = *(float *)(param_5 + 0x14); + fVar37 = *(float *)(param_4 + 0x18); + fVar43 = *(float *)(param_2 + 0x18); + fVar38 = *(float *)(param_5 + 0x18); + fVar31 = *(float *)(param_4 + 0x1c); + fVar44 = *(float *)(param_2 + 0x1c); + fVar41 = *(float *)(param_5 + 0x1c); + fVar34 = fVar42 * 65536.00000000; if (false) { - fVar35 = ROUND(fVar35 - 2147483648.00000000); + fVar1 = ROUND(fVar34); } else { - fVar35 = FLOOR(fVar35 - 2147483648.00000000); - } - if (false) { -LAB_7f0997c0: - uVar4 = 0xffffffff; - } - else { - uVar4 = (int)fVar35 | 0x80000000; - } - } - fVar35 = fVar31 * 65536.00000000; - if (false) { - fVar1 = ROUND(fVar35); - } - else { - fVar1 = FLOOR(fVar35); - } - uVar36 = (uint)fVar1; - if (true) { - if ((int)uVar36 < 0) goto LAB_7f099850; - } - else { - if (false) { - fVar35 = ROUND(fVar35 - 2147483648.00000000); - } - else { - fVar35 = FLOOR(fVar35 - 2147483648.00000000); - } - if (false) { -LAB_7f099850: - uVar36 = 0xffffffff; - } - else { - uVar36 = (int)fVar35 | 0x80000000; - } - } - fVar35 = fVar43 * 65536.00000000; - if (false) { - fVar1 = ROUND(fVar35); - } - else { - fVar1 = FLOOR(fVar35); - } - uVar41 = (uint)fVar1; - if (true) { - if ((int)uVar41 < 0) goto LAB_7f0998e0; - } - else { - if (false) { - fVar35 = ROUND(fVar35 - 2147483648.00000000); - } - else { - fVar35 = FLOOR(fVar35 - 2147483648.00000000); - } - if (false) { -LAB_7f0998e0: - uVar41 = 0xffffffff; - } - else { - uVar41 = (int)fVar35 | 0x80000000; - } - } - fVar35 = fVar44 * 65536.00000000; - if (false) { - fVar1 = ROUND(fVar35); - } - else { - fVar1 = FLOOR(fVar35); - } - uVar33 = (uint)fVar1; - if (true) { - if (-1 < (int)uVar33) goto LAB_7f099988; - } - else { - if (false) { - fVar35 = ROUND(fVar35 - 2147483648.00000000); - } - else { - fVar35 = FLOOR(fVar35 - 2147483648.00000000); + fVar1 = FLOOR(fVar34); } + uVar4 = (uint)fVar1; if (true) { - uVar33 = (int)fVar35 | 0x80000000; - goto LAB_7f099988; + if ((int)uVar4 < 0) goto LAB_7f0997c0; } - } - uVar33 = 0xffffffff; + else { + if (false) { + fVar34 = ROUND(fVar34 - 2147483648.00000000); + } + else { + fVar34 = FLOOR(fVar34 - 2147483648.00000000); + } + if (false) { +LAB_7f0997c0: + uVar4 = 0xffffffff; + } + else { + uVar4 = (int)fVar34 | 0x80000000; + } + } + fVar34 = fVar32 * 65536.00000000; + if (false) { + fVar1 = ROUND(fVar34); + } + else { + fVar1 = FLOOR(fVar34); + } + uVar35 = (uint)fVar1; + if (true) { + if ((int)uVar35 < 0) goto LAB_7f099850; + } + else { + if (false) { + fVar34 = ROUND(fVar34 - 2147483648.00000000); + } + else { + fVar34 = FLOOR(fVar34 - 2147483648.00000000); + } + if (false) { +LAB_7f099850: + uVar35 = 0xffffffff; + } + else { + uVar35 = (int)fVar34 | 0x80000000; + } + } + fVar34 = fVar43 * 65536.00000000; + if (false) { + fVar1 = ROUND(fVar34); + } + else { + fVar1 = FLOOR(fVar34); + } + uVar40 = (uint)fVar1; + if (true) { + if ((int)uVar40 < 0) goto LAB_7f0998e0; + } + else { + if (false) { + fVar34 = ROUND(fVar34 - 2147483648.00000000); + } + else { + fVar34 = FLOOR(fVar34 - 2147483648.00000000); + } + if (false) { +LAB_7f0998e0: + uVar40 = 0xffffffff; + } + else { + uVar40 = (int)fVar34 | 0x80000000; + } + } + fVar34 = fVar44 * 65536.00000000; + if (false) { + fVar1 = ROUND(fVar34); + } + else { + fVar1 = FLOOR(fVar34); + } + uVar33 = (uint)fVar1; + if (true) { + if (-1 < (int)uVar33) goto LAB_7f099988; + } + else { + if (false) { + fVar34 = ROUND(fVar34 - 2147483648.00000000); + } + else { + fVar34 = FLOOR(fVar34 - 2147483648.00000000); + } + if (true) { + uVar33 = (int)fVar34 | 0x80000000; + goto LAB_7f099988; + } + } + uVar33 = 0xffffffff; LAB_7f099988: - fStack356 = fStack380; - fStack352 = fStack376; - fStack348 = fStack372; - fStack344 = fStack412; - fStack340 = fStack408; - fStack336 = fStack404; - fStack332 = fStack444; - fStack328 = fStack440; - fStack324 = fStack436; - uVar6 = proc_7F094298(((*(float *)(param_5 + 0x10) + - (fVar42 - *(float *)(param_4 + 0x10)) * fVar28) - fVar42) / - ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); - uVar7 = proc_7F094298(((fVar37 + (fVar31 - fVar40) * fVar28) - *(float *)(param_2 + 0x14)) / - ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); - uVar8 = proc_7F094298(((fVar39 + (fVar43 - fVar38) * fVar28) - *(float *)(param_2 + 0x18)) / - ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); - uVar9 = proc_7F094298(((fVar34 + (fVar44 - fVar32) * fVar28) - *(float *)(param_2 + 0x1c)) / - ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); - uVar10 = proc_7F094298((*(float *)(param_4 + 0x10) - *(float *)(param_2 + 0x10)) / - ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)); - uVar11 = proc_7F094298((*(float *)(param_4 + 0x14) - *(float *)(param_2 + 0x14)) / - ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)); - uVar12 = proc_7F094298((*(float *)(param_4 + 0x18) - *(float *)(param_2 + 0x18)) / - ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)); - uVar13 = proc_7F094298((*(float *)(param_4 + 0x1c) - *(float *)(param_2 + 0x1c)) / - ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)); - param_1[0x11] = uVar4 & 0xffff0000 | uVar36 >> 0x10; - param_1[0x10] = 0xb4000000; - param_1[0x12] = 0xb2000000; - param_1[0x13] = uVar41 & 0xffff0000 | uVar33 >> 0x10; - param_1[0x14] = 0xb4000000; - param_1[0x15] = uVar6 & 0xffff0000 | uVar7 >> 0x10; - param_1[0x16] = 0xb2000000; - param_1[0x17] = uVar8 & 0xffff0000 | uVar9 >> 0x10; - param_1[0x19] = uVar4 << 0x10 | uVar36 & 0xffff; - param_1[0x18] = 0xb4000000; - param_1[0x1a] = 0xb2000000; - param_1[0x1b] = uVar41 << 0x10 | uVar33 & 0xffff; - param_1[0x1c] = 0xb4000000; - param_1[0x1d] = uVar6 << 0x10 | uVar7 & 0xffff; - param_1[0x1e] = 0xb2000000; - param_1[0x1f] = uVar8 << 0x10 | uVar9 & 0xffff; - param_1[0x21] = uVar10 & 0xffff0000 | uVar11 >> 0x10; - param_1[0x20] = 0xb4000000; - param_1[0x22] = 0xb2000000; - param_1[0x23] = uVar12 & 0xffff0000 | uVar13 >> 0x10; - param_1[0x24] = 0xb4000000; - param_1[0x25] = uVar10 & 0xffff0000 | uVar11 >> 0x10; - param_1[0x26] = 0xb2000000; - param_1[0x27] = uVar12 & 0xffff0000 | uVar13 >> 0x10; - param_1[0x29] = uVar10 << 0x10 | uVar11 & 0xffff; - param_1[0x28] = 0xb4000000; - param_1[0x2a] = 0xb2000000; - param_1[0x2b] = uVar12 << 0x10 | uVar13 & 0xffff; - param_1[0x2c] = 0xb4000000; - param_1[0x2d] = uVar10 << 0x10 | uVar11 & 0xffff; - param_1[0x2f] = uVar12 << 0x10 | uVar13 & 0xffff; - param_1[0x2e] = 0xb2000000; - fStack668 = fStack364 * 0.03125000; - fStack664 = fStack360 * 0.03125000; - pfVar5 = &fStack508; - fStack660 = fStack292 * 0.03125000; - pfVar23 = &fStack700; - pfVar21 = &fStack476; - pfVar19 = &fStack732; - do { - fVar28 = *pfVar5; - if (fVar28 < 0.00000000) { - fVar28 = -fVar28; + uVar6 = proc_7F094298(((*(float *)(param_5 + 0x10) + + (fVar42 - *(float *)(param_4 + 0x10)) * fVar28) - fVar42) / + ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); + uVar7 = proc_7F094298(((fVar36 + (fVar32 - fVar39) * fVar28) - *(float *)(param_2 + 0x14)) / + ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); + uVar8 = proc_7F094298(((fVar38 + (fVar43 - fVar37) * fVar28) - *(float *)(param_2 + 0x18)) / + ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); + uVar9 = proc_7F094298(((fVar41 + (fVar44 - fVar31) * fVar28) - *(float *)(param_2 + 0x1c)) / + ((*(float *)(param_3 + 0x28) - *(float *)(param_2 + 0x28)) * 0.25000000)); + uVar10 = proc_7F094298((*(float *)(param_4 + 0x10) - *(float *)(param_2 + 0x10)) / + ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)) + ; + uVar11 = proc_7F094298((*(float *)(param_4 + 0x14) - *(float *)(param_2 + 0x14)) / + ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)) + ; + uVar12 = proc_7F094298((*(float *)(param_4 + 0x18) - *(float *)(param_2 + 0x18)) / + ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)) + ; + uVar13 = proc_7F094298((*(float *)(param_4 + 0x1c) - *(float *)(param_2 + 0x1c)) / + ((*(float *)(param_4 + 0x2c) - *(float *)(param_2 + 0x2c)) * 0.25000000)) + ; + param_1[0x11] = uVar4 & 0xffff0000 | uVar35 >> 0x10; + param_1[0x10] = 0xb4000000; + param_1[0x12] = 0xb2000000; + param_1[0x13] = uVar40 & 0xffff0000 | uVar33 >> 0x10; + param_1[0x14] = 0xb4000000; + param_1[0x15] = uVar6 & 0xffff0000 | uVar7 >> 0x10; + param_1[0x16] = 0xb2000000; + param_1[0x17] = uVar8 & 0xffff0000 | uVar9 >> 0x10; + param_1[0x19] = uVar4 << 0x10 | uVar35 & 0xffff; + param_1[0x18] = 0xb4000000; + param_1[0x1a] = 0xb2000000; + param_1[0x1b] = uVar40 << 0x10 | uVar33 & 0xffff; + param_1[0x1c] = 0xb4000000; + param_1[0x1d] = uVar6 << 0x10 | uVar7 & 0xffff; + param_1[0x1e] = 0xb2000000; + param_1[0x1f] = uVar8 << 0x10 | uVar9 & 0xffff; + param_1[0x21] = uVar10 & 0xffff0000 | uVar11 >> 0x10; + param_1[0x20] = 0xb4000000; + param_1[0x22] = 0xb2000000; + param_1[0x23] = uVar12 & 0xffff0000 | uVar13 >> 0x10; + param_1[0x24] = 0xb4000000; + param_1[0x25] = uVar10 & 0xffff0000 | uVar11 >> 0x10; + param_1[0x26] = 0xb2000000; + param_1[0x27] = uVar12 & 0xffff0000 | uVar13 >> 0x10; + param_1[0x29] = uVar10 << 0x10 | uVar11 & 0xffff; + param_1[0x28] = 0xb4000000; + param_1[0x2a] = 0xb2000000; + param_1[0x2b] = uVar12 << 0x10 | uVar13 & 0xffff; + param_1[0x2c] = 0xb4000000; + param_1[0x2d] = uVar10 << 0x10 | uVar11 & 0xffff; + param_1[0x2f] = uVar12 << 0x10 | uVar13 & 0xffff; + param_1[0x2e] = 0xb2000000; + fStack668 = fStack364 * 0.03125000; + fStack664 = fStack360 * 0.03125000; + pfVar5 = afStack508; + fStack660 = fStack292 * 0.03125000; + pfVar23 = afStack700; + pfVar21 = afStack476; + pfVar19 = afStack732; + do { + fVar28 = *pfVar5; + if (fVar28 < 0.00000000) { + fVar28 = -fVar28; + } + fVar32 = *pfVar21; + *pfVar23 = fVar28 * 0.03125000; + if (fVar32 < 0.00000000) { + fVar32 = -fVar32; + } + pfVar24 = pfVar19 + 1; + pfVar21 = pfVar21 + 1; + pfVar5 = pfVar5 + 1; + pfVar23 = pfVar23 + 1; + *pfVar19 = fVar32 * 0.03125000; + pfVar19 = pfVar24; + } while (pfVar24 != afStack716); + afStack732[0] = afStack732[0] + fStack668 + afStack700[0] * 2.00000000; + afStack732[1] = afStack732[1] + fStack664 + afStack700[1] * 2.00000000; + afStack732[2] = afStack732[2] + fStack660 + afStack700[2] * 2.00000000; + if (afStack732[1] <= afStack732[0]) { + afStack732[1] = afStack732[0]; } - fVar31 = *pfVar21; - *pfVar23 = fVar28 * 0.03125000; - if (fVar31 < 0.00000000) { - fVar31 = -fVar31; + if (afStack732[2] <= afStack732[1]) { + afStack732[2] = afStack732[1]; } - pfVar24 = pfVar19 + 1; - pfVar21 = pfVar21 + 1; - pfVar5 = pfVar5 + 1; - pfVar23 = pfVar23 + 1; - *pfVar19 = fVar31 * 0.03125000; - pfVar19 = pfVar24; - } while (pfVar24 != afStack716); - fStack732 = fStack732 + fStack668 + fStack700 * 2.00000000; - fStack728 = fStack728 + fStack664 + fStack696 * 2.00000000; - fStack724 = fStack724 + fStack660 + fStack692 * 2.00000000; - if (fStack728 <= fStack732) { - fStack728 = fStack732; - } - if (fStack724 <= fStack728) { - fStack724 = fStack728; - } - if (1.00000000 < fStack724 * 0.00097656) { - fVar28 = 1.00000000 / (fStack724 * 0.00097656); - } - else { - fVar28 = 1.00000000; - } - uVar4 = proc_7F094298(fVar28 * fStack636); - uVar36 = proc_7F094298(fVar28 * fStack632); - uVar41 = proc_7F094298(fVar28 * fStack628); - uVar33 = proc_7F094298(fVar28 * fStack624); - uVar6 = proc_7F094298(fVar28 * fStack508); - uVar7 = proc_7F094298(fVar28 * fStack504); - uVar8 = proc_7F094298(fVar28 * fStack500); - uVar9 = proc_7F094298(fVar28 * fStack496); - uVar10 = proc_7F094298(fVar28 * fStack476); - uVar11 = proc_7F094298(fVar28 * fStack472); - uVar12 = proc_7F094298(fVar28 * fStack468); - uVar13 = proc_7F094298(fVar28 * fStack464); - uVar14 = proc_7F094298(fVar28 * fStack604); - uVar15 = proc_7F094298(fVar28 * fStack600); - uVar16 = proc_7F094298(fVar28 * fStack596); - uVar17 = proc_7F094298(fVar28 * fStack592); - param_1[0x30] = 0xb4000000; - param_1[0x31] = uVar4 & 0xffff0000 | uVar36 >> 0x10; - param_1[0x32] = 0xb2000000; - param_1[0x33] = uVar41 & 0xffff0000 | uVar33 >> 0x10; - param_1[0x34] = 0xb4000000; - param_1[0x35] = uVar6 & 0xffff0000 | uVar7 >> 0x10; - param_1[0x36] = 0xb2000000; - param_1[0x37] = uVar8 & 0xffff0000 | uVar9 >> 0x10; - param_1[0x38] = 0xb4000000; - param_1[0x39] = uVar4 << 0x10 | uVar36 & 0xffff; - param_1[0x3a] = 0xb2000000; - param_1[0x3b] = uVar41 << 0x10 | uVar33 & 0xffff; - param_1[0x3c] = 0xb4000000; - param_1[0x3d] = uVar6 << 0x10 | uVar7 & 0xffff; - param_1[0x3e] = 0xb2000000; - param_1[0x3f] = uVar8 << 0x10 | uVar9 & 0xffff; - param_1[0x40] = 0xb4000000; - param_1[0x41] = uVar14 & 0xffff0000 | uVar15 >> 0x10; - param_1[0x43] = uVar16 & 0xffff0000 | uVar17 >> 0x10; - param_1[0x42] = 0xb2000000; - param_1[0x44] = 0xb4000000; - param_1[0x45] = uVar10 & 0xffff0000 | uVar11 >> 0x10; - param_1[0x46] = 0xb2000000; - param_1[0x47] = uVar12 & 0xffff0000 | uVar13 >> 0x10; - param_1[0x48] = 0xb4000000; - param_1[0x49] = uVar14 << 0x10 | uVar15 & 0xffff; - param_1[0x4a] = 0xb2000000; - param_1[0x4b] = uVar16 << 0x10 | uVar17 & 0xffff; - param_1[0x4c] = 0xb4000000; - param_1[0x4d] = uVar10 << 0x10 | uVar11 & 0xffff; - param_1[0x4e] = 0xb3000000; - param_1[0x4f] = uVar12 << 0x10 | uVar13 & 0xffff; - return param_1 + 0x50; + if (1.00000000 < afStack732[2] * 0.00097656) { + fVar28 = 1.00000000 / (afStack732[2] * 0.00097656); + } + else { + fVar28 = 1.00000000; + } + uVar4 = proc_7F094298(fVar28 * afStack636[0]); + uVar35 = proc_7F094298(fVar28 * afStack636[1]); + uVar40 = proc_7F094298(fVar28 * afStack636[2]); + uVar33 = proc_7F094298(fVar28 * afStack636[3]); + uVar6 = proc_7F094298(fVar28 * afStack508[0]); + uVar7 = proc_7F094298(fVar28 * afStack508[1]); + uVar8 = proc_7F094298(fVar28 * afStack508[2]); + uVar9 = proc_7F094298(fVar28 * afStack508[3]); + uVar10 = proc_7F094298(fVar28 * afStack476[0]); + uVar11 = proc_7F094298(fVar28 * afStack476[1]); + uVar12 = proc_7F094298(fVar28 * afStack476[2]); + uVar13 = proc_7F094298(fVar28 * afStack476[3]); + uVar14 = proc_7F094298(fVar28 * afStack604[0]); + uVar15 = proc_7F094298(fVar28 * afStack604[1]); + uVar16 = proc_7F094298(fVar28 * afStack604[2]); + uVar17 = proc_7F094298(fVar28 * afStack604[3]); + param_1[0x30] = 0xb4000000; + param_1[0x31] = uVar4 & 0xffff0000 | uVar35 >> 0x10; + param_1[0x32] = 0xb2000000; + param_1[0x33] = uVar40 & 0xffff0000 | uVar33 >> 0x10; + param_1[0x34] = 0xb4000000; + param_1[0x35] = uVar6 & 0xffff0000 | uVar7 >> 0x10; + param_1[0x36] = 0xb2000000; + param_1[0x37] = uVar8 & 0xffff0000 | uVar9 >> 0x10; + param_1[0x38] = 0xb4000000; + param_1[0x39] = uVar4 << 0x10 | uVar35 & 0xffff; + param_1[0x3a] = 0xb2000000; + param_1[0x3b] = uVar40 << 0x10 | uVar33 & 0xffff; + param_1[0x3c] = 0xb4000000; + param_1[0x3d] = uVar6 << 0x10 | uVar7 & 0xffff; + param_1[0x3e] = 0xb2000000; + param_1[0x3f] = uVar8 << 0x10 | uVar9 & 0xffff; + param_1[0x40] = 0xb4000000; + param_1[0x41] = uVar14 & 0xffff0000 | uVar15 >> 0x10; + param_1[0x43] = uVar16 & 0xffff0000 | uVar17 >> 0x10; + param_1[0x42] = 0xb2000000; + param_1[0x44] = 0xb4000000; + param_1[0x45] = uVar10 & 0xffff0000 | uVar11 >> 0x10; + param_1[0x46] = 0xb2000000; + param_1[0x47] = uVar12 & 0xffff0000 | uVar13 >> 0x10; + param_1[0x48] = 0xb4000000; + param_1[0x49] = uVar14 << 0x10 | uVar15 & 0xffff; + param_1[0x4a] = 0xb2000000; + param_1[0x4b] = uVar16 << 0x10 | uVar17 & 0xffff; + param_1[0x4c] = 0xb4000000; + param_1[0x4d] = uVar10 << 0x10 | uVar11 & 0xffff; + param_1[0x4e] = 0xb3000000; + param_1[0x4f] = uVar12 << 0x10 | uVar13 & 0xffff; + return param_1 + 0x50; } @@ -111095,15 +110029,15 @@ LAB_7f099988: void default_player_perspective_and_height(void) { - player1_playerdata.handicap = 1.00000000; - player1_playerdata.player_perspective_height = 1.00000000; - player2_player_data.handicap = 1.00000000; - player2_player_data.player_perspective_height = 1.00000000; - player3_player_data.handicap = 1.00000000; - player3_player_data.player_perspective_height = 1.00000000; - player4_player_data.handicap = 1.00000000; - player4_player_data.player_perspective_height = 1.00000000; - return; + player1_playerdata[0].handicap = 1.00000000; + player1_playerdata[0].player_perspective_height = 1.00000000; + player1_playerdata[1].handicap = 1.00000000; + player1_playerdata[1].player_perspective_height = 1.00000000; + player1_playerdata[2].handicap = 1.00000000; + player1_playerdata[2].player_perspective_height = 1.00000000; + player1_playerdata[3].handicap = 1.00000000; + player1_playerdata[3].player_perspective_height = 1.00000000; + return; } @@ -111111,19 +110045,19 @@ void default_player_perspective_and_height(void) void reset_play_data_ptrs(void) { - ptr_BONDdata_p1 = NULL; - ptr_BONDdata_p2 = NULL; - ptr_BONDdata_p3 = NULL; - ptr_BONDdata_p4 = NULL; - pPlayer = NULL; - pplayersperm = NULL; - player_num = 0; - random_byte = 0; - DAT_8007a0c0 = 0; - DAT_8007a0c4 = 1; - DAT_8007a0c8 = 2; - DAT_8007a0cc = 3; - return; + ptr_BONDdata_p1[0] = NULL; + ptr_BONDdata_p1[1] = NULL; + ptr_BONDdata_p1[2] = NULL; + ptr_BONDdata_p1[3] = NULL; + pPlayer = NULL; + pPlayersPerm = NULL; + player_num = 0; + random_byte = 0; + dword_CODE_bss_8007A0C0 = 0; + dword_CODE_bss_8007A0C4 = 1; + dword_CODE_bss_8007A0C8 = 2; + dword_CODE_bss_8007A0CC = 3; + return; } @@ -111131,464 +110065,462 @@ void reset_play_data_ptrs(void) void init_player_data_ptrs_construct_viewports(int playercount) { - u32 uVar1; - short width; - short height; - int player; - - ptr_BONDdata_p1 = NULL; - ptr_BONDdata_p2 = NULL; - ptr_BONDdata_p3 = NULL; - ptr_BONDdata_p4 = NULL; - uVar1 = get_random_value(); - random_byte = uVar1 & 0xff; - if (playercount < 1) { - initBONDdataforPlayer(0); - set_cur_player(0); - width = get_video2_settings_width(); - height = get_video2_settings_height(); - set_cur_player_screen_size(width,height); - width = get_video2_settings_ulx(); - height = get_video2_settings_uly(); - set_cur_player_viewport_size(width,height); - } - else { - player = 0; - if (0 < playercount) { - do { - initBONDdataforPlayer(player); - player += 1; - } while (player != playercount); + u32 uVar1; + short width; + short height; + PLAYER_ID player; + + ptr_BONDdata_p1[0] = NULL; + ptr_BONDdata_p1[1] = NULL; + ptr_BONDdata_p1[2] = NULL; + ptr_BONDdata_p1[3] = NULL; + uVar1 = get_random_value(); + random_byte = uVar1 & 0xff; + if (playercount < 1) { + initBONDdataforPlayer(PLAYER1); + set_cur_player(PLAYER1); + width = get_video2_settings_width(); + height = get_video2_settings_height(); + set_cur_player_screen_size(width,height); + width = get_video2_settings_ulx(); + height = get_video2_settings_uly(); + set_cur_player_viewport_size(width,height); } - set_cur_player(0); - } - return; + else { + player = PLAYER1; + if (0 < playercount) { + do { + initBONDdataforPlayer(player); + player += PLAYER2; + } while (player != playercount); + } + set_cur_player(PLAYER1); + } + return; } -ulonglong get_num_players(void) +s32 get_num_players(void) { - ulonglong uVar1; - - uVar1 = (ulonglong)(ptr_BONDdata_p1 != NULL); - if (ptr_BONDdata_p2 != NULL) { - uVar1 = SEXT48((int)((uint)(ptr_BONDdata_p1 != NULL) + 1)); - } - if (ptr_BONDdata_p3 != NULL) { - uVar1 = SEXT48((int)uVar1 + 1); - } - if (ptr_BONDdata_p4 != NULL) { - uVar1 = SEXT48((int)uVar1 + 1); - } - return uVar1; + uint uVar1; + + uVar1 = (uint)(ptr_BONDdata_p1[0] != NULL); + if (ptr_BONDdata_p1[1] != NULL) { + uVar1 = (uint)(ptr_BONDdata_p1[0] != NULL) + 1; + } + if (ptr_BONDdata_p1[2] != NULL) { + uVar1 += 1; + } + if (ptr_BONDdata_p1[3] != NULL) { + uVar1 += 1; + } + return (s32)uVar1; } -void initBONDdataforPlayer(int player) +void initBONDdataforPlayer(PLAYER_ID player) { - int iVar1; - int iVar2; - Player **ppPVar3; - int *piVar4; - int *piVar5; - int *piVar6; - Player *pPVar7; - int aiStack940 [234]; - int iStack4; - f32 temp_3f36e15f8e; - - piVar5 = &DAT_8003fda0; - piVar4 = aiStack940; - do { - piVar6 = piVar5 + 3; - *piVar4 = *piVar5; - piVar4[1] = piVar5[1]; - piVar4[2] = piVar5[2]; - piVar5 = piVar6; - piVar4 = piVar4 + 3; - } while (piVar6 != (int *)0x80040148); - pPVar7 = (Player *)allocate_bytes_in_bank(0x2a80,4); - ppPVar3 = &ptr_BONDdata_p1 + player; - *ppPVar3 = pPVar7; - pPVar7->unknown = 0; - (*ppPVar3)->xpos = 0.00000000; - (*ppPVar3)->ypos = 0.00000000; - (*ppPVar3)->zpos = 0.00000000; - (*ppPVar3)->xpos2 = 0.00000000; - (*ppPVar3)->ypos2 = 0.00000000; - (*ppPVar3)->zpos2 = 1.00000000; - (*ppPVar3)->xoffset = 0.00000000; - (*ppPVar3)->yoffset = 1.00000000; - (*ppPVar3)->zoffset = 0.00000000; - (*ppPVar3)->xpos3 = 0.00000000; - (*ppPVar3)->ypos3 = 0.00000000; - (*ppPVar3)->zpos3 = 0.00000000; - (*ppPVar3)->room_pointer = 0; - (*ppPVar3)->current_model_xpos = 0.00000000; - (*ppPVar3)->current_model_ypos = 0.00000000; - (*ppPVar3)->current_model_zpos = 0.00000000; - (*ppPVar3)->previous_model_xpos = 0.00000000; - (*ppPVar3)->previous_model_ypos = 0.00000000; - (*ppPVar3)->previous_model_zpos = 0.00000000; - (*ppPVar3)->current_room_xpos = 0.00000000; - (*ppPVar3)->current_room_ypos = 0.00000000; - (*ppPVar3)->current_room_zpos = 0.00000000; - (*ppPVar3)->field_6C = 0.00000000; - (*ppPVar3)->field_70 = 0.00000000; - (*ppPVar3)->clipping_height = 0.00000000; - (*ppPVar3)->field_78 = 0.00000000; - (*ppPVar3)->field_7C = 0.00000000; - (*ppPVar3)->field_80 = 0.00000000; - (*ppPVar3)->field_84 = 0.00000000; - (*ppPVar3)->field_88 = 0.00000000; - (*ppPVar3)->field_8C = 0; - (*ppPVar3)->field_90 = 0.00000000; - (*ppPVar3)->field_94 = 0; - (*ppPVar3)->field_98 = 0.00000000; - (*ppPVar3)->field_1274 = 0.00000000; - (*ppPVar3)->field_1278 = 0.00000000; - (*ppPVar3)->field_127C = 0.00000000; - (*ppPVar3)->crouchposition = 2; - (*ppPVar3)->field_29FC = 2; - (*ppPVar3)->ducking_height_offset = 0.00000000; - (*ppPVar3)->field_A4 = 0.00000000; - (*ppPVar3)->position_data_pointer = 0; - (*ppPVar3)->field_AC = 1; - (*ppPVar3)->field_D0 = 0; - (*ppPVar3)->ptr_char_objectinstance = 0; - (*ppPVar3)->bonddead = 0; - (*ppPVar3)->bondhealth = 1.00000000; - (*ppPVar3)->bondarmour = 0.00000000; - (*ppPVar3)->oldhealth = 1.00000000; - (*ppPVar3)->oldarmour = 0.00000000; - (*ppPVar3)->apparenthealth = 1.00000000; - (*ppPVar3)->apparentarmour = 0.00000000; - (*ppPVar3)->damageshowtime = -1; - (*ppPVar3)->healthshowtime = -1; - (*ppPVar3)->field_104 = 0; - (*ppPVar3)->field_108 = 0; - (*ppPVar3)->field_10C = 0; - (*ppPVar3)->movecentrerelease = 0; - (*ppPVar3)->lookaheadcentreenabled = 1; - (*ppPVar3)->automovecentreenabled = 1; - (*ppPVar3)->fastmovecentreenabled = 0; - (*ppPVar3)->automovecentre = 1; - (*ppPVar3)->insightaimmode = 0; - (*ppPVar3)->autoyaimenabled = 1; - (*ppPVar3)->autoaimy = 0.00000000; - (*ppPVar3)->autoyaimtime = 0; - (*ppPVar3)->autoyaimtime60 = -1; - (*ppPVar3)->autoxaimenabled = 1; - (*ppPVar3)->autoaimx = 0.00000000; - (*ppPVar3)->autoxaimtime = 0; - (*ppPVar3)->autoxaimtime60 = -1; - (*ppPVar3)->vv_theta = 0.00000000; - (*ppPVar3)->speedtheta = 0.00000000; - (*ppPVar3)->vv_costheta = 1.00000000; - (*ppPVar3)->vv_sintheta = 0.00000000; - (*ppPVar3)->vv_verta = -4.00000000; - (*ppPVar3)->vv_verta360 = f32_80057610; - (*ppPVar3)->speedverta = 0.00000000; - (*ppPVar3)->vv_cosverta = 1.00000000; - (*ppPVar3)->vv_sinverta = 0.00000000; - (*ppPVar3)->speedsideways = 0.00000000; - (*ppPVar3)->speedstrafe = 0.00000000; - (*ppPVar3)->speedforwards = 0.00000000; - (*ppPVar3)->field_2A4C = 0.00000000; - (*ppPVar3)->speedboost = 1.00000000; - (*ppPVar3)->boost_factor_x = 0.00000000; - (*ppPVar3)->boost_factor_y = 0.00000000; - (*ppPVar3)->boost_factor_z = 0.00000000; - (*ppPVar3)->viewport_alpha = -1.00000000; - (*ppPVar3)->bondfadetime60 = -1.00000000; - (*ppPVar3)->bondfadetimemax = 0.00000000; - (*ppPVar3)->bondfadefracold = 0.00000000; - (*ppPVar3)->bondfadefracnew = 0.00000000; - (*ppPVar3)->field_1A0 = 0; - (*ppPVar3)->field_1C0 = 0; - (*ppPVar3)->field_1C4 = 0; - (*ppPVar3)->pause_animation_state = 0; - (*ppPVar3)->paused_flag = 1; - (*ppPVar3)->open_close_solo_watch_menu = 0; - (*ppPVar3)->field_1D4 = 0.00000000; - (*ppPVar3)->field_1D8 = 0.00000000; - (*ppPVar3)->pause_watch_position = -25.00000000; - (*ppPVar3)->field_1E0 = 0.00000000; - (*ppPVar3)->field_1E4 = 1.00000000; - (*ppPVar3)->field_1E8 = 0.00000000; - (*ppPVar3)->field_1EC = 0.00000000; - (*ppPVar3)->field_1F0 = 0.00000000; - (*ppPVar3)->field_1F4 = 1.00000000; - (*ppPVar3)->pausing_flag = 0; - (*ppPVar3)->pause_starting_angle = 0.00000000; - (*ppPVar3)->field_208 = 0.00000000; - (*ppPVar3)->pause_target_angle = 0.00000000; - (*ppPVar3)->field_210 = 0.00000000; - (*ppPVar3)->field_214 = 0.00000000; - (*ppPVar3)->field_218 = 0; - (*ppPVar3)->field_21C = 1; - (*ppPVar3)->step_in_view_watch_animation = 0; - (*ppPVar3)->pause_animation_counter = 0.00000000; - (*ppPVar3)->field_3B4 = 0; - (*ppPVar3)->field_3B6 = 0; - (*ppPVar3)->field_3B8 = 0.00000000; - (*ppPVar3)->field_3BC = 0.00000000; - *(float *)&(*ppPVar3)->field_3C0 = flt_80057614; - (*ppPVar3)->field_3C4 = 0.00000000; - (*ppPVar3)->field_3C8 = 0.00000000; - (*ppPVar3)->field_3CC = 1.00000000; - *(undefined4 *)&(*ppPVar3)->field_3D0 = 0xff; - *(undefined4 *)&(*ppPVar3)->field_3D4 = 0xff; - *(undefined4 *)&(*ppPVar3)->field_3D8 = 0xff; - (*ppPVar3)->tint_alpha = 0.00000000; - (*ppPVar3)->field_3E0 = -1.00000000; - (*ppPVar3)->timer_for_fade = -1.00000000; - (*ppPVar3)->field_3E8 = 0xff; - (*ppPVar3)->field_3EC = 0xff; - (*ppPVar3)->field_3F0 = 0xff; - (*ppPVar3)->field_3F4 = 0xff; - (*ppPVar3)->field_3F8 = 0xff; - (*ppPVar3)->field_3FC = 0xff; - (*ppPVar3)->field_400 = 0.00000000; - (*ppPVar3)->field_404 = 0.00000000; - (*ppPVar3)->cuff_value = 0; - (*ppPVar3)->field_420 = 1; - (*ppPVar3)->field_424 = 0; - (*ppPVar3)->field_428 = 0; - (*ppPVar3)->field_42C = 2; - (*ppPVar3)->controlstyle = 0; - (*ppPVar3)->field_4DC = 1; - (*ppPVar3)->field_4E0 = 1; - (*ppPVar3)->field_4E4 = 1; - (*ppPVar3)->field_4E8 = 0; - (*ppPVar3)->field_4EC = flt_80057618; - (*ppPVar3)->field_4F0 = 0; - (*ppPVar3)->field_4F4 = 1.00000000; - (*ppPVar3)->field_4F8 = 1.00000000; - (*ppPVar3)->scaled_velocity = 0.00000000; - (*ppPVar3)->field_500 = 0.00000000; - (*ppPVar3)->field_504 = 0.00000000; - temp_3f36e15f8e = flt_8005761C; - (*ppPVar3)->field_508 = 0.00000000; - (*ppPVar3)->field_50C = 0.00000000; - (*ppPVar3)->field_510 = 1.00000000; - (*ppPVar3)->field_514 = 0.00000000; - (*ppPVar3)->field_518 = 1.00000000; - (*ppPVar3)->field_51C = 0.00000000; - (*ppPVar3)->velocity = 0.00000000; - (*ppPVar3)->field_524 = 0.00000000; - (*ppPVar3)->field_528 = 0.00000000; - (*ppPVar3)->field_52C = 0.00000000; - (*ppPVar3)->field_530 = 0.00000000; - *(f32 *)&(*ppPVar3)->field_534 = temp_3f36e15f8e; - (*ppPVar3)->field_538 = 0; - (*ppPVar3)->field_53C = temp_3f36e15f8e; - (*ppPVar3)->field_540 = 0.00000000; - (*ppPVar3)->field_544 = 0.00000000; - (*ppPVar3)->field_548 = 0.00000000; - (*ppPVar3)->field_54C = 0.00000000; - (*ppPVar3)->stationary_ground_offset = 0.00000000; - (*ppPVar3)->field_554 = 0.00000000; - (*ppPVar3)->field_558 = 0.00000000; - (*ppPVar3)->field_55C = 0.00000000; - (*ppPVar3)->field_560 = 0.00000000; - (*ppPVar3)->field_564 = 0.00000000; - (*ppPVar3)->field_568 = 0.00000000; - (*ppPVar3)->field_56C = 1.00000000; - (*ppPVar3)->field_570 = 0.00000000; - (*ppPVar3)->field_574 = 0.00000000; - (*ppPVar3)->field_578 = 1.00000000; - (*ppPVar3)->field_57C = 0.00000000; - (*ppPVar3)->field_580 = 1.00000000; - (*ppPVar3)->field_584 = 0.00000000; - (*ppPVar3)->field_588 = 0.00000000; - (*ppPVar3)->field_58C = 1.00000000; - (*ppPVar3)->field_590 = 0.00000000; - (*ppPVar3)->field_594 = 0; - iVar1 = 0; - do { - *(undefined2 *)((int)&(*ppPVar3)->field_7D0 + iVar1) = 0x280; - *(undefined2 *)((int)&(*ppPVar3)->field_7D0 + iVar1 + 2) = 0x1e0; - *(undefined2 *)((int)&(*ppPVar3)->field_7D4 + iVar1) = 0x1ff; - *(undefined2 *)((int)&(*ppPVar3)->field_7D4 + iVar1 + 2) = 0; - *(undefined2 *)((int)&(*ppPVar3)->field_7D8 + iVar1) = 0x280; - *(undefined2 *)((int)&(*ppPVar3)->field_7D8 + iVar1 + 2) = 0x1e0; - *(undefined2 *)((int)&(*ppPVar3)->field_7DC + iVar1) = 0x1ff; - iVar2 = iVar1 + 0x10; - *(undefined2 *)((int)&(*ppPVar3)->field_7DC + iVar1 + 2) = 0; - iVar1 = iVar2; - } while (iVar2 != 0x20); - (*ppPVar3)->viewx = 100; - (*ppPVar3)->viewy = 100; - (*ppPVar3)->viewleft = 0; - (*ppPVar3)->viewtop = 0; - (*ppPVar3)->hand_invisible[0] = 0; - (*ppPVar3)->hand_invisible[1] = 0; - (*ppPVar3)->hand_item[0] = 0; - (*ppPVar3)->hand_item[1] = 0; - (*ppPVar3)->field_2A44[0] = -1; - (*ppPVar3)->field_2A44[1] = -1; - (*ppPVar3)->lock_hand_model[0] = 0; - (*ppPVar3)->lock_hand_model[1] = 0; - (*ppPVar3)->ptr_hand_weapon_buffer[0] = NULL; - (*ppPVar3)->ptr_hand_weapon_buffer[1] = NULL; - pPVar7 = *ppPVar3; - piVar5 = aiStack940; - do { - piVar4 = piVar5 + 3; - pPVar7->right_weapon = *piVar5; - pPVar7->right_weapon_attack = piVar5[1]; - pPVar7->previous_right_weapon = piVar5[2]; - pPVar7 = (Player *)&pPVar7->zpos; - piVar5 = piVar4; - } while (piVar4 != &iStack4); - piVar5 = aiStack940; - pPVar7 = *ppPVar3; - do { - piVar4 = piVar5 + 3; - pPVar7->left_weapon = *piVar5; - pPVar7->left_weapon_attack = piVar5[1]; - pPVar7->left_weapon_previous = piVar5[2]; - piVar5 = piVar4; - pPVar7 = (Player *)&pPVar7->zpos; - } while (piVar4 != &iStack4); - (*ppPVar3)->field_FC0 = 1.00000000; - (*ppPVar3)->field_FC4 = 1.00000000; - (*ppPVar3)->field_FC8 = 0; - (*ppPVar3)->field_FCC = 0; - temp_3f36e15f8e = flt_80057620; - (*ppPVar3)->field_FD0 = 0; - (*ppPVar3)->field_FD4 = 0; - (*ppPVar3)->field_FD8 = 0; - (*ppPVar3)->field_FDC = -1; - (*ppPVar3)->field_FDD = -1; - (*ppPVar3)->field_FDE = -1; - (*ppPVar3)->field_FDF = '\0'; - (*ppPVar3)->field_FE0 = 1; - (*ppPVar3)->field_FE4 = 0; - (*ppPVar3)->field_FE8 = 0.00000000; - (*ppPVar3)->field_FEC = 0.00000000; - (*ppPVar3)->field_FF0 = 0.00000000; - (*ppPVar3)->field_FF4 = 0.00000000; - (*ppPVar3)->field_FF8 = temp_3f36e15f8e; - (*ppPVar3)->field_FFC = 0.00000000; - (*ppPVar3)->field_1000 = 0.00000000; - (*ppPVar3)->field_1004 = 0.00000000; - (*ppPVar3)->field_1008 = 0.00000000; - (*ppPVar3)->field_100C = temp_3f36e15f8e; - (*ppPVar3)->field_1010 = 0.00000000; - (*ppPVar3)->holds_neg_pi = flt_80057624; - (*ppPVar3)->field_1018 = 0.00000000; - (*ppPVar3)->field_105C = 0; - (*ppPVar3)->copiedgoldeneye = 0; - (*ppPVar3)->somekinda_flags = 0; - (*ppPVar3)->field_106C = 0.00000000; - (*ppPVar3)->field_1070 = 0.00000000; - (*ppPVar3)->field_1074 = 0.00000000; - (*ppPVar3)->field_1078 = 0; - (*ppPVar3)->field_107C = 0.00000000; - (*ppPVar3)->field_1080 = 0.00000000; - (*ppPVar3)->sniper_zoom = 60.00000000; - (*ppPVar3)->camera_zoom = 60.00000000; - (*ppPVar3)->field_108C = -1; - (*ppPVar3)->c_screenwidth = 320.00000000; - (*ppPVar3)->c_screenheight = 240.00000000; - (*ppPVar3)->c_screenleft = 0.00000000; - (*ppPVar3)->c_screentop = 0.00000000; - (*ppPVar3)->c_perspnear = 10.00000000; - (*ppPVar3)->c_perspfovy = 46.00000000; - (*ppPVar3)->c_perspaspect = 1.00000000; - (*ppPVar3)->c_halfwidth = 160.00000000; - (*ppPVar3)->c_halfheight = 120.00000000; - (*ppPVar3)->c_scalex = 1.00000000; - (*ppPVar3)->c_scaley = 1.00000000; - (*ppPVar3)->c_recipscalex = 1.00000000; - (*ppPVar3)->c_recipscaley = 1.00000000; - (*ppPVar3)->field_10C4 = 0; - (*ppPVar3)->field_10C8 = 0; - (*ppPVar3)->field_10CC = 0; - (*ppPVar3)->field_10D0 = 0; - (*ppPVar3)->field_10D4 = 0; - (*ppPVar3)->field_10D8 = 0; - (*ppPVar3)->field_10DC = 0; - (*ppPVar3)->field_10E0 = 0; - (*ppPVar3)->field_10E4 = 0; - (*ppPVar3)->field_10E8 = 0; - (*ppPVar3)->field_10EC = 0; - (*ppPVar3)->c_scalelod60 = 1.00000000; - (*ppPVar3)->c_scalelod = 1.00000000; - (*ppPVar3)->c_lodscalez = 1.00000000; - (*ppPVar3)->c_lodscalezu32 = 0x10000; - (*ppPVar3)->screenxminf = 0.00000000; - (*ppPVar3)->screenyminf = 0.00000000; - (*ppPVar3)->screenxmaxf = 320.00000000; - (*ppPVar3)->screenymaxf = 240.00000000; - (*ppPVar3)->somekinda_bitflags = 0; - (*ppPVar3)->field_11B0 = 0; - (*ppPVar3)->field_11B4 = 0; - (*ppPVar3)->field_11B8 = 0; - (*ppPVar3)->zoomintime = 0.00000000; - (*ppPVar3)->zoomintimemax = 0.00000000; - (*ppPVar3)->zoominfovy = 60.00000000; - (*ppPVar3)->zoominfovyold = 60.00000000; - (*ppPVar3)->zoominfovynew = 60.00000000; - (*ppPVar3)->fovy = 60.00000000; - (*ppPVar3)->aspect = f32_80057628; - (*ppPVar3)->hudmessoff = 0; - (*ppPVar3)->bondmesscnt = -1; - (*ppPVar3)->ptr_inventory_first_in_cycle = 0; - (*ppPVar3)->p_itemcur = 0; - (*ppPVar3)->equipmaxitems = 0; - (*ppPVar3)->equipallguns = 0; - (*ppPVar3)->field_11F0 = 0; - (*ppPVar3)->field_11F4 = 0; - (*ppPVar3)->field_1280 = 0; - (*ppPVar3)->players_cur_animation = 0; - (*ppPVar3)->field_1288 = 0.00000000; - (*ppPVar3)->bondinvincible = '\0'; - (*ppPVar3)->field_29B8 = 7; - (*ppPVar3)->field_29BC = 1.00000000; - (*ppPVar3)->field_29C0 = 0.00000000; - (*ppPVar3)->mpmenuon = 0; - (*ppPVar3)->damagetype = 7; - (*ppPVar3)->deathcount = 0; - (*ppPVar3)->field_29E0 = random_byte; - random_byte += 1; - (*ppPVar3)->field_29E4 = -1; - (*ppPVar3)->field_29E8 = -1; - (*ppPVar3)->field_29EC = -1; - (*ppPVar3)->field_29F0 = -1; - (*ppPVar3)->healthdisplaytime = 0; - (*ppPVar3)->field_2A30 = 0; - (*ppPVar3)->field_2A34 = 0; - (*ppPVar3)->field_2A38 = 1; - (*ppPVar3)->actual_health = 1.00000000; - (*ppPVar3)->actual_armor = 1.00000000; - (*ppPVar3)->cur_player_control_type_0 = 0; - (*ppPVar3)->cur_player_control_type_1 = 0; - (*ppPVar3)->cur_player_control_type_2 = 0.00000000; - (*ppPVar3)->neg_vspacing_for_control_type_entry = 0; - (*ppPVar3)->has_set_control_type_data = 1; - (*ppPVar3)->field_2A6C = 0; - (*ppPVar3)->field_2A70 = 0; - visible_to_guards_flag = TRUE; - obj_collision_flag = TRUE; - return; + int iVar1; + int iVar2; + Player **ppPVar3; + int *dest; + int *src; + int *src_next; + Player *pPVar4; + int array234undefined4 [234]; + int iStack4; + f32 temp_3f36e15f8e; + + src = init_BONDdata_related_8003fda0; + dest = array234undefined4; + do { + src_next = src + 3; + *dest = *src; + dest[1] = src[1]; + dest[2] = src[2]; + src = src_next; + dest = dest + 3; + } while (src_next != (int *)0x80040148); + pPVar4 = (Player *)mempAllocBytesInBank(0x2a80,'\x04'); + ppPVar3 = ptr_BONDdata_p1 + player; + *ppPVar3 = pPVar4; + pPVar4->unknown = 0; + (*ppPVar3)->xpos = 0.00000000; + (*ppPVar3)->ypos = 0.00000000; + (*ppPVar3)->zpos = 0.00000000; + (*ppPVar3)->xpos2 = 0.00000000; + (*ppPVar3)->ypos2 = 0.00000000; + (*ppPVar3)->zpos2 = 1.00000000; + (*ppPVar3)->xoffset = 0.00000000; + (*ppPVar3)->yoffset = 1.00000000; + (*ppPVar3)->zoffset = 0.00000000; + (*ppPVar3)->xpos3 = 0.00000000; + (*ppPVar3)->ypos3 = 0.00000000; + (*ppPVar3)->zpos3 = 0.00000000; + (*ppPVar3)->room_pointer = 0; + (*ppPVar3)->current_model_xpos = 0.00000000; + (*ppPVar3)->current_model_ypos = 0.00000000; + (*ppPVar3)->current_model_zpos = 0.00000000; + (*ppPVar3)->previous_model_xpos = 0.00000000; + (*ppPVar3)->previous_model_ypos = 0.00000000; + (*ppPVar3)->previous_model_zpos = 0.00000000; + (*ppPVar3)->current_room_xpos = 0.00000000; + (*ppPVar3)->current_room_ypos = 0.00000000; + (*ppPVar3)->current_room_zpos = 0.00000000; + (*ppPVar3)->field_6C = 0.00000000; + (*ppPVar3)->field_70 = 0.00000000; + (*ppPVar3)->clipping_height = 0.00000000; + (*ppPVar3)->field_78 = 0.00000000; + (*ppPVar3)->field_7C = 0.00000000; + (*ppPVar3)->field_80 = 0.00000000; + (*ppPVar3)->field_84 = 0.00000000; + (*ppPVar3)->field_88 = 0.00000000; + (*ppPVar3)->field_8C = 0; + (*ppPVar3)->field_90 = 0.00000000; + (*ppPVar3)->field_94 = 0; + (*ppPVar3)->field_98 = 0.00000000; + (*ppPVar3)->field_1274 = 0.00000000; + (*ppPVar3)->field_1278 = 0.00000000; + (*ppPVar3)->field_127C = 0.00000000; + (*ppPVar3)->crouchposition = 2; + (*ppPVar3)->field_29FC = 2; + (*ppPVar3)->ducking_height_offset = 0.00000000; + (*ppPVar3)->field_A4 = 0.00000000; + (*ppPVar3)->position_data_pointer = 0; + (*ppPVar3)->field_AC = 1; + (*ppPVar3)->field_D0 = 0; + (*ppPVar3)->ptr_char_objectinstance = 0; + (*ppPVar3)->bonddead = 0; + (*ppPVar3)->bondhealth = 1.00000000; + (*ppPVar3)->bondarmour = 0.00000000; + (*ppPVar3)->oldhealth = 1.00000000; + (*ppPVar3)->oldarmour = 0.00000000; + (*ppPVar3)->apparenthealth = 1.00000000; + (*ppPVar3)->apparentarmour = 0.00000000; + (*ppPVar3)->damageshowtime = -1; + (*ppPVar3)->healthshowtime = -1; + (*ppPVar3)->field_104 = 0; + (*ppPVar3)->field_108 = 0; + (*ppPVar3)->field_10C = 0; + (*ppPVar3)->movecentrerelease = 0; + (*ppPVar3)->lookaheadcentreenabled = 1; + (*ppPVar3)->automovecentreenabled = 1; + (*ppPVar3)->fastmovecentreenabled = 0; + (*ppPVar3)->automovecentre = 1; + (*ppPVar3)->insightaimmode = 0; + (*ppPVar3)->autoyaimenabled = 1; + (*ppPVar3)->autoaimy = 0.00000000; + (*ppPVar3)->autoyaimtime = 0; + (*ppPVar3)->autoyaimtime60 = -1; + (*ppPVar3)->autoxaimenabled = 1; + (*ppPVar3)->autoaimx = 0.00000000; + (*ppPVar3)->autoxaimtime = 0; + (*ppPVar3)->autoxaimtime60 = -1; + (*ppPVar3)->vv_theta = 0.00000000; + (*ppPVar3)->speedtheta = 0.00000000; + (*ppPVar3)->vv_costheta = 1.00000000; + (*ppPVar3)->vv_sintheta = 0.00000000; + (*ppPVar3)->vv_verta = -4.00000000; + (*ppPVar3)->vv_verta360 = -229.18310547; + (*ppPVar3)->speedverta = 0.00000000; + (*ppPVar3)->vv_cosverta = 1.00000000; + (*ppPVar3)->vv_sinverta = 0.00000000; + (*ppPVar3)->speedsideways = 0.00000000; + (*ppPVar3)->speedstrafe = 0.00000000; + (*ppPVar3)->speedforwards = 0.00000000; + (*ppPVar3)->field_2A4C = 0.00000000; + (*ppPVar3)->speedboost = 1.00000000; + (*ppPVar3)->boost_factor_x = 0.00000000; + (*ppPVar3)->boost_factor_y = 0.00000000; + (*ppPVar3)->boost_factor_z = 0.00000000; + (*ppPVar3)->viewport_alpha = -1.00000000; + (*ppPVar3)->bondfadetime60 = -1.00000000; + (*ppPVar3)->bondfadetimemax = 0.00000000; + (*ppPVar3)->bondfadefracold = 0.00000000; + (*ppPVar3)->bondfadefracnew = 0.00000000; + (*ppPVar3)->field_1A0 = 0; + (*ppPVar3)->field_1C0 = 0; + (*ppPVar3)->field_1C4 = 0; + (*ppPVar3)->pause_animation_state = 0; + (*ppPVar3)->paused_flag = 1; + (*ppPVar3)->open_close_solo_watch_menu = 0; + (*ppPVar3)->field_1D4 = 0.00000000; + (*ppPVar3)->field_1D8 = 0.00000000; + (*ppPVar3)->pause_watch_position = -25.00000000; + (*ppPVar3)->field_1E0 = 0.00000000; + (*ppPVar3)->field_1E4 = 1.00000000; + (*ppPVar3)->field_1E8 = 0.00000000; + (*ppPVar3)->field_1EC = 0.00000000; + (*ppPVar3)->field_1F0 = 0.00000000; + (*ppPVar3)->field_1F4 = 1.00000000; + (*ppPVar3)->pausing_flag = 0; + (*ppPVar3)->pause_starting_angle = 0.00000000; + (*ppPVar3)->field_208 = 0.00000000; + (*ppPVar3)->pause_target_angle = 0.00000000; + (*ppPVar3)->field_210 = 0.00000000; + (*ppPVar3)->field_214 = 0.00000000; + (*ppPVar3)->field_218 = 0; + (*ppPVar3)->field_21C = 1; + (*ppPVar3)->step_in_view_watch_animation = 0; + (*ppPVar3)->pause_animation_counter = 0.00000000; + (*ppPVar3)->field_3B4 = 0; + (*ppPVar3)->field_3B6 = 0; + (*ppPVar3)->field_3B8 = 0.00000000; + (*ppPVar3)->field_3BC = 0.00000000; + *(float *)&(*ppPVar3)->field_3C0 = 9.99999809; + (*ppPVar3)->field_3C4 = 0.00000000; + (*ppPVar3)->field_3C8 = 0.00000000; + (*ppPVar3)->field_3CC = 1.00000000; + (*ppPVar3)->tint_red = 0xff; + (*ppPVar3)->tint_green = 0xff; + (*ppPVar3)->tint_blue = 0xff; + (*ppPVar3)->tint_alpha = 0.00000000; + (*ppPVar3)->field_3E0 = -1.00000000; + (*ppPVar3)->timer_for_fade = -1.00000000; + (*ppPVar3)->field_3E8 = 0xff; + (*ppPVar3)->field_3EC = 0xff; + (*ppPVar3)->field_3F0 = 0xff; + (*ppPVar3)->field_3F4 = 0xff; + (*ppPVar3)->field_3F8 = 0xff; + (*ppPVar3)->field_3FC = 0xff; + (*ppPVar3)->field_400 = 0.00000000; + (*ppPVar3)->field_404 = 0.00000000; + (*ppPVar3)->cuff_value = CUFF_BLUE; + (*ppPVar3)->field_420 = 1; + (*ppPVar3)->field_424 = 0; + (*ppPVar3)->field_428 = 0; + (*ppPVar3)->field_42C = 2; + (*ppPVar3)->controlstyle = 0; + (*ppPVar3)->field_4DC = 1; + (*ppPVar3)->field_4E0 = 1; + (*ppPVar3)->field_4E4 = 1; + (*ppPVar3)->field_4E8 = 0; + (*ppPVar3)->field_4EC = 0.93000001; + (*ppPVar3)->field_4F0 = 0; + (*ppPVar3)->field_4F4 = 1.00000000; + (*ppPVar3)->field_4F8 = 1.00000000; + (*ppPVar3)->scaled_velocity = 0.00000000; + (*ppPVar3)->field_500 = 0.00000000; + (*ppPVar3)->field_504 = 0.00000000; + (*ppPVar3)->field_508 = 0.00000000; + (*ppPVar3)->field_50C = 0.00000000; + (*ppPVar3)->field_510 = 1.00000000; + (*ppPVar3)->field_514 = 0.00000000; + (*ppPVar3)->field_518 = 1.00000000; + (*ppPVar3)->field_51C = 0.00000000; + (*ppPVar3)->velocity = 0.00000000; + (*ppPVar3)->field_524 = 0.00000000; + (*ppPVar3)->field_528 = 0.00000000; + (*ppPVar3)->field_52C = 0.00000000; + (*ppPVar3)->field_530 = 0.00000000; + *(f32 *)&(*ppPVar3)->field_534 = 14.28571606; + (*ppPVar3)->field_538 = 0; + (*ppPVar3)->field_53C = 14.28571606; + (*ppPVar3)->field_540 = 0.00000000; + (*ppPVar3)->field_544 = 0.00000000; + (*ppPVar3)->field_548 = 0.00000000; + (*ppPVar3)->field_54C = 0.00000000; + (*ppPVar3)->stationary_ground_offset = 0.00000000; + (*ppPVar3)->field_554 = 0.00000000; + (*ppPVar3)->field_558 = 0.00000000; + (*ppPVar3)->field_55C = 0.00000000; + (*ppPVar3)->field_560 = 0.00000000; + (*ppPVar3)->field_564 = 0.00000000; + (*ppPVar3)->field_568 = 0.00000000; + (*ppPVar3)->field_56C = 1.00000000; + (*ppPVar3)->field_570 = 0.00000000; + (*ppPVar3)->field_574 = 0.00000000; + (*ppPVar3)->field_578 = 1.00000000; + (*ppPVar3)->field_57C = 0.00000000; + (*ppPVar3)->field_580 = 1.00000000; + (*ppPVar3)->field_584 = 0.00000000; + (*ppPVar3)->field_588 = 0.00000000; + (*ppPVar3)->field_58C = 1.00000000; + (*ppPVar3)->field_590 = 0.00000000; + (*ppPVar3)->field_594 = 0; + iVar1 = 0; + do { + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D0 + iVar1) = 0x280; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D2 + iVar1) = 0x1e0; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D4 + iVar1) = 0x1ff; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D6 + iVar1) = 0; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D8 + iVar1) = 0x280; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7DA + iVar1) = 0x1e0; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7DC + iVar1) = 0x1ff; + iVar2 = iVar1 + 0x10; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7DE + iVar1) = 0; + iVar1 = iVar2; + } while (iVar2 != 0x20); + (*ppPVar3)->viewx = 100; + (*ppPVar3)->viewy = 100; + (*ppPVar3)->viewleft = 0; + (*ppPVar3)->viewtop = 0; + (*ppPVar3)->hand_invisible[0] = 0; + (*ppPVar3)->hand_invisible[1] = 0; + (*ppPVar3)->hand_item[0] = ITEM_UNARMED; + (*ppPVar3)->hand_item[1] = ITEM_UNARMED; + (*ppPVar3)->field_2A44[0] = -1; + (*ppPVar3)->field_2A44[1] = -1; + (*ppPVar3)->lock_hand_model[0] = 0; + (*ppPVar3)->lock_hand_model[1] = 0; + (*ppPVar3)->ptr_hand_weapon_buffer[0] = NULL; + (*ppPVar3)->ptr_hand_weapon_buffer[1] = NULL; + pPVar4 = *ppPVar3; + src = array234undefined4; + do { + dest = src + 3; + pPVar4->right_weapon = *src; + pPVar4->right_weapon_attack = src[1]; + pPVar4->previous_right_weapon = src[2]; + pPVar4 = (Player *)&pPVar4->zpos; + src = dest; + } while (dest != &iStack4); + src = array234undefined4; + pPVar4 = *ppPVar3; + do { + dest = src + 3; + pPVar4->left_weapon = *src; + pPVar4->left_weapon_attack = src[1]; + pPVar4->left_weapon_previous = src[2]; + src = dest; + pPVar4 = (Player *)&pPVar4->zpos; + } while (dest != &iStack4); + (*ppPVar3)->field_FC0 = 1.00000000; + (*ppPVar3)->field_FC4 = 1.00000000; + (*ppPVar3)->field_FC8 = 0; + (*ppPVar3)->field_FCC = 0; + (*ppPVar3)->field_FD0 = 0; + (*ppPVar3)->field_FD4 = 0; + (*ppPVar3)->field_FD8 = 0; + (*ppPVar3)->field_FDC = -1; + (*ppPVar3)->field_FDD = -1; + (*ppPVar3)->field_FDE = -1; + (*ppPVar3)->field_FDF = '\0'; + (*ppPVar3)->field_FE0 = 1; + (*ppPVar3)->field_FE4 = 0; + (*ppPVar3)->field_FE8 = 0.00000000; + (*ppPVar3)->field_FEC = 0.00000000; + (*ppPVar3)->field_FF0 = 0.00000000; + (*ppPVar3)->field_FF4 = 0.00000000; + (*ppPVar3)->field_FF8 = 0.89999998; + (*ppPVar3)->field_FFC = 0.00000000; + (*ppPVar3)->field_1000 = 0.00000000; + (*ppPVar3)->field_1004 = 0.00000000; + (*ppPVar3)->field_1008 = 0.00000000; + (*ppPVar3)->field_100C = 0.89999998; + (*ppPVar3)->field_1010 = 0.00000000; + (*ppPVar3)->holds_neg_pi = -3.14159274; + (*ppPVar3)->field_1018 = 0.00000000; + (*ppPVar3)->field_105C = 0; + (*ppPVar3)->copiedgoldeneye = 0; + (*ppPVar3)->somekinda_flags = 0; + (*ppPVar3)->field_106C = 0.00000000; + (*ppPVar3)->field_1070 = 0.00000000; + (*ppPVar3)->field_1074 = 0.00000000; + (*ppPVar3)->field_1078 = 0; + (*ppPVar3)->field_107C = 0.00000000; + (*ppPVar3)->field_1080 = 0.00000000; + (*ppPVar3)->sniper_zoom = 60.00000000; + (*ppPVar3)->camera_zoom = 60.00000000; + (*ppPVar3)->field_108C = -1; + (*ppPVar3)->c_screenwidth = 320.00000000; + (*ppPVar3)->c_screenheight = 240.00000000; + (*ppPVar3)->c_screenleft = 0.00000000; + (*ppPVar3)->c_screentop = 0.00000000; + (*ppPVar3)->c_perspnear = 10.00000000; + (*ppPVar3)->c_perspfovy = 46.00000000; + (*ppPVar3)->c_perspaspect = 1.00000000; + (*ppPVar3)->c_halfwidth = 160.00000000; + (*ppPVar3)->c_halfheight = 120.00000000; + (*ppPVar3)->c_scalex = 1.00000000; + (*ppPVar3)->c_scaley = 1.00000000; + (*ppPVar3)->c_recipscalex = 1.00000000; + (*ppPVar3)->c_recipscaley = 1.00000000; + (*ppPVar3)->field_10C4 = 0; + (*ppPVar3)->field_10C8 = 0; + (*ppPVar3)->field_10CC = 0; + (*ppPVar3)->field_10D0 = 0; + (*ppPVar3)->field_10D4 = 0; + (*ppPVar3)->field_10D8 = 0; + (*ppPVar3)->field_10DC = 0; + (*ppPVar3)->field_10E0 = 0; + (*ppPVar3)->field_10E4 = 0; + (*ppPVar3)->field_10E8 = 0; + (*ppPVar3)->field_10EC = 0; + (*ppPVar3)->c_scalelod60 = 1.00000000; + (*ppPVar3)->c_scalelod = 1.00000000; + (*ppPVar3)->c_lodscalez = 1.00000000; + (*ppPVar3)->c_lodscalezu32 = 0x10000; + (*ppPVar3)->screenxminf = 0.00000000; + (*ppPVar3)->screenyminf = 0.00000000; + (*ppPVar3)->screenxmaxf = 320.00000000; + (*ppPVar3)->screenymaxf = 240.00000000; + (*ppPVar3)->somekinda_bitflags = 0; + (*ppPVar3)->field_11B0 = 0; + (*ppPVar3)->field_11B4 = 0; + (*ppPVar3)->field_11B8 = 0; + (*ppPVar3)->zoomintime = 0.00000000; + (*ppPVar3)->zoomintimemax = 0.00000000; + (*ppPVar3)->zoominfovy = 60.00000000; + (*ppPVar3)->zoominfovyold = 60.00000000; + (*ppPVar3)->zoominfovynew = 60.00000000; + (*ppPVar3)->fovy = 60.00000000; + (*ppPVar3)->aspect = 1.33333337; + (*ppPVar3)->hudmessoff = 0; + (*ppPVar3)->bondmesscnt = -1; + (*ppPVar3)->ptr_inventory_first_in_cycle = 0; + (*ppPVar3)->p_itemcur = 0; + (*ppPVar3)->equipmaxitems = 0; + (*ppPVar3)->equipallguns = 0; + (*ppPVar3)->field_11F0 = 0; + (*ppPVar3)->field_11F4 = 0; + (*ppPVar3)->field_1280 = 0; + (*ppPVar3)->players_cur_animation = 0; + (*ppPVar3)->field_1288 = 0.00000000; + (*ppPVar3)->bondinvincible = '\0'; + (*ppPVar3)->field_29B8 = 7; + (*ppPVar3)->field_29BC = 1.00000000; + (*ppPVar3)->field_29C0 = 0.00000000; + (*ppPVar3)->mpmenuon = 0; + (*ppPVar3)->damagetype = 7; + (*ppPVar3)->deathcount = 0; + (*ppPVar3)->field_29E0 = random_byte; + random_byte += 1; + (*ppPVar3)->last_kill_time = -1; + (*ppPVar3)->field_29E8 = -1; + (*ppPVar3)->field_29EC = -1; + (*ppPVar3)->field_29F0 = -1; + (*ppPVar3)->healthdisplaytime = 0; + (*ppPVar3)->field_2A30 = 0; + (*ppPVar3)->field_2A34 = 0; + (*ppPVar3)->cur_item_weapon_getname = 1; + (*ppPVar3)->actual_health = 1.00000000; + (*ppPVar3)->actual_armor = 1.00000000; + (*ppPVar3)->cur_player_control_type_0 = 0; + (*ppPVar3)->cur_player_control_type_1 = 0; + (*ppPVar3)->cur_player_control_type_2 = 0.00000000; + (*ppPVar3)->neg_vspacing_for_control_type_entry = 0; + (*ppPVar3)->has_set_control_type_data = 1; + (*ppPVar3)->field_2A6C = 0; + (*ppPVar3)->field_2A70 = 0; + visible_to_guards_flag = TRUE; + obj_collision_flag = TRUE; + return; } -void set_cur_player(int playernum) +void set_cur_player(PLAYER_ID playernum) { - pPlayer = (&ptr_BONDdata_p1)[playernum]; - pplayersperm = &player1_playerdata + playernum; - player_num = playernum; - return; + pPlayer = ptr_BONDdata_p1[playernum]; + pPlayersPerm = player1_playerdata + playernum; + player_num = playernum; + return; } @@ -111596,36 +110528,34 @@ void set_cur_player(int playernum) u32 get_cur_playernum(void) { - return player_num; + return player_num; } -longlong proc_7F09B15C(int param_1) +void proc_7F09B15C(int position_data_pointer) { - Player *pPVar1; - ulonglong uVar2; - Player **ppPVar3; - longlong lVar4; - - lVar4 = 0; - uVar2 = get_num_players(); - if ((longlong)uVar2 < 1) { -LAB_7f09b1c0: - lVar4 = -1; - } - else { - ppPVar3 = &ptr_BONDdata_p1; - pPVar1 = ptr_BONDdata_p1; - while (ppPVar3 = ppPVar3 + 1, param_1 != pPVar1->position_data_pointer) { - lVar4 = (longlong)((int)lVar4 + 1); - uVar2 = get_num_players(); - if ((longlong)uVar2 <= lVar4) goto LAB_7f09b1c0; - pPVar1 = *ppPVar3; + Player *pPVar1; + s32 numplayers; + Player **ppPVar2; + int i; + + i = 0; + numplayers = get_num_players(); + if (0 < numplayers) { + ppPVar2 = ptr_BONDdata_p1; + pPVar1 = ptr_BONDdata_p1[0]; + while (ppPVar2 = ppPVar2 + 1, position_data_pointer != pPVar1->position_data_pointer) { + i += 1; + numplayers = get_num_players(); + if (numplayers <= i) { + return; + } + pPVar1 = *ppPVar2; + } } - } - return lVar4; + return; } @@ -111633,9 +110563,9 @@ LAB_7f09b1c0: void set_cur_player_screen_size(short width,short height) { - pPlayer->viewx = width; - pPlayer->viewy = height; - return; + pPlayer->viewx = width; + pPlayer->viewy = height; + return; } @@ -111643,62 +110573,60 @@ void set_cur_player_screen_size(short width,short height) void set_cur_player_viewport_size(short ulx,short uly) { - pPlayer->viewleft = ulx; - pPlayer->viewtop = uly; - return; + pPlayer->viewleft = ulx; + pPlayer->viewtop = uly; + return; } -void set_watch_menu_current_size_unused_maybe(f32 size) +void set_cur_player_fovy(f32 fovy) { - pPlayer->fovy = size; - return; + pPlayer->fovy = fovy; + return; } -void proc_7F09B224(undefined4 param_1) +void set_cur_player_aspect(f32 aspect) { - f32 in_f12; - - pPlayer->aspect = in_f12; - return; + pPlayer->aspect = aspect; + return; } -f32 get_watch_menu_current_size_unused_maybe(void) +f32 get_cur_player_fovy(void) { - return pPlayer->fovy; + return pPlayer->fovy; } -undefined8 proc_7F09B244(ulonglong param_1) +s32 proc_7F09B244(ITEM_IDS param_1) { - undefined8 uVar1; - - uVar1 = 0xffffffffffffffff; - if ((longlong)param_1 < 0x20) { - if (param_1 < 0x20) { + s32 sVar1; + + sVar1 = -1; + if ((int)param_1 < 0x20) { + if (param_1 < ITEM_TANKSHELLS) { // WARNING: Could not recover jumptable at 0x7f09b27c. Too many branches // WARNING: Treating indirect jump as call - uVar1 = (*(code *)(&jpt_700CF1AC)[(int)param_1])(); - return uVar1; + sVar1 = (*(code *)jpt_700CF1AC[param_1])(); + return sVar1; + } } - } - else { - if (param_1 != 0x58) { - return 0xffffffffffffffff; + else { + if (param_1 != ITEM_TOKEN) { + return -1; + } + sVar1 = 0x14d; } - uVar1 = 0x14d; - } - return uVar1; + return sVar1; } @@ -111706,9 +110634,9 @@ undefined8 proc_7F09B244(ulonglong param_1) void proc_7F09B368(int param_1) { - set_0x4_in_runtime_flags_for_item_in_guards_hand - (*(int **)(pPlayer->position_data_pointer + 4),param_1); - return; + set_0x4_in_runtime_flags_for_item_in_guards_hand + (*(int **)(pPlayer->position_data_pointer + 4),param_1); + return; } @@ -111716,29 +110644,31 @@ void proc_7F09B368(int param_1) longlong proc_7F09B398(uint param_1) { - undefined2 *puVar1; - longlong lVar2; - ITEM_IDS IVar3; - undefined *puVar4; - uint uVar5; - - puVar1 = *(undefined2 **)(pPlayer->position_data_pointer + 4); - lVar2 = (longlong)(int)puVar1; - if (*(int *)(puVar1 + param_1 * 2 + 0xb0) == 0) { - IVar3 = get_item_in_hand(param_1); - lVar2 = proc_7F09B244((longlong)(int)IVar3); - if (-1 < lVar2) { - if ((param_1 & 0x3fffffff) == 0) { - uVar5 = 0; - } - else { - uVar5 = 0x10000000; - } - puVar4 = create_held_weapon(puVar1,(int)lVar2,(char)IVar3,uVar5,NULL,NULL); - lVar2 = (longlong)(int)puVar4; + undefined2 *puVar1; + longlong lVar2; + ITEM_IDS IVar3; + s32 sVar4; + undefined *puVar5; + uint uVar6; + + puVar1 = *(undefined2 **)(pPlayer->position_data_pointer + 4); + lVar2 = (longlong)(int)puVar1; + if (*(int *)(puVar1 + param_1 * 2 + 0xb0) == 0) { + IVar3 = get_item_in_hand(param_1); + sVar4 = proc_7F09B244(IVar3); + lVar2 = (longlong)sVar4; + if (-1 < lVar2) { + if ((param_1 & 0x3fffffff) == 0) { + uVar6 = 0; + } + else { + uVar6 = 0x10000000; + } + puVar5 = create_held_weapon(puVar1,sVar4,(char)IVar3,uVar6,NULL,NULL); + lVar2 = (longlong)(int)puVar5; + } } - } - return lVar2; + return lVar2; } @@ -111746,40 +110676,40 @@ longlong proc_7F09B398(uint param_1) void proc_7F09B41C(void) { - undefined4 uVar1; - u32 uVar2; - undefined4 *puVar3; - uint uVar4; - int iVar5; - int *piVar6; - undefined4 *puVar7; - undefined4 *puVar8; - - piVar6 = &DAT_8007a0c0; - iVar5 = 0; - do { - *piVar6 = iVar5; - iVar5 += 1; - piVar6 = piVar6 + 1; - } while (iVar5 < 4); - puVar8 = &DAT_8007a0c0; - iVar5 = 0; - puVar7 = puVar8; - do { - uVar2 = get_random_value(); - uVar4 = 4 - iVar5; - puVar3 = puVar8 + uVar2 % uVar4; - uVar1 = *puVar7; - iVar5 += 1; - if (uVar4 == 0) { - trap(0x1c00); - } - *puVar7 = *puVar3; - puVar8 = puVar8 + 1; - puVar7 = puVar7 + 1; - *puVar3 = uVar1; - } while (iVar5 != 3); - return; + undefined4 uVar1; + u32 uVar2; + undefined4 *puVar3; + uint uVar4; + int iVar5; + int *piVar6; + undefined4 *puVar7; + undefined4 *puVar8; + + piVar6 = &dword_CODE_bss_8007A0C0; + iVar5 = 0; + do { + *piVar6 = iVar5; + iVar5 += 1; + piVar6 = piVar6 + 1; + } while (iVar5 < 4); + puVar8 = &dword_CODE_bss_8007A0C0; + iVar5 = 0; + puVar7 = puVar8; + do { + uVar2 = get_random_value(); + uVar4 = 4 - iVar5; + puVar3 = puVar8 + uVar2 % uVar4; + uVar1 = *puVar7; + iVar5 += 1; + if (uVar4 == 0) { + trap(0x1c00); + } + *puVar7 = *puVar3; + puVar8 = puVar8 + 1; + puVar7 = puVar7 + 1; + *puVar3 = uVar1; + } while (iVar5 != 3); + return; } @@ -111787,25 +110717,25 @@ void proc_7F09B41C(void) int proc_7F09B4D8(int param_1) { - int iVar1; - int iVar2; - int *piVar3; - - iVar2 = 0; - piVar3 = &DAT_8007a0c0; - iVar1 = DAT_8007a0c0; - while( true ) { - piVar3 = piVar3 + 1; - if (param_1 == iVar1) { - return iVar2; + int iVar1; + int iVar2; + int *piVar3; + + iVar2 = 0; + piVar3 = &dword_CODE_bss_8007A0C0; + iVar1 = dword_CODE_bss_8007A0C0; + while( true ) { + piVar3 = piVar3 + 1; + if (param_1 == iVar1) { + return iVar2; + } + if (ptr_BONDdata_p1[iVar1] != NULL) { + iVar2 += 1; + } + if (piVar3 == &DAT_8007a0d0) break; + iVar1 = *piVar3; } - if ((&ptr_BONDdata_p1)[iVar1] != NULL) { - iVar2 += 1; - } - if (piVar3 == &DAT_8007a0d0) break; - iVar1 = *piVar3; - } - return iVar2; + return iVar2; } @@ -111813,28 +110743,28 @@ int proc_7F09B4D8(int param_1) int proc_7F09B528(int param_1) { - if ((&ptr_BONDdata_p1)[DAT_8007a0c0] != NULL) { - if (param_1 == 0) { - return DAT_8007a0c0; + if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C0] != NULL) { + if (param_1 == 0) { + return dword_CODE_bss_8007A0C0; + } + param_1 += -1; } - param_1 += -1; - } - if ((&ptr_BONDdata_p1)[DAT_8007a0c4] != NULL) { - if (param_1 == 0) { - return DAT_8007a0c4; + if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C4] != NULL) { + if (param_1 == 0) { + return dword_CODE_bss_8007A0C4; + } + param_1 += -1; } - param_1 += -1; - } - if ((&ptr_BONDdata_p1)[DAT_8007a0c8] != NULL) { - if (param_1 == 0) { - return DAT_8007a0c8; + if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C8] != NULL) { + if (param_1 == 0) { + return dword_CODE_bss_8007A0C8; + } + param_1 += -1; } - param_1 += -1; - } - if (((&ptr_BONDdata_p1)[DAT_8007a0cc] != NULL) && (param_1 == 0)) { - return DAT_8007a0cc; - } - return 0; + if ((ptr_BONDdata_p1[dword_CODE_bss_8007A0CC] != NULL) && (param_1 == 0)) { + return dword_CODE_bss_8007A0CC; + } + return 0; } @@ -111842,50 +110772,50 @@ int proc_7F09B528(int param_1) void proc_7F09B600(byte *param_1,byte *param_2,uint *param_3) { - u32 uVar1; - int iVar2; - uint uVar3; - byte *pbVar4; - uint uVar5; - uint uVar6; - uint uVar7; - int iStack16; - uint uStack12; - - uVar5 = 0; - iStack16 = -0x707f60b9; - uStack12 = 0x3108b3c1; - uVar6 = 0; - uVar7 = 0; - if (param_1 < param_2) { - pbVar4 = param_1; - do { - iVar2 = (uint)*pbVar4 << (uVar5 & 0xf); - uVar3 = iVar2 + uStack12; - iStack16 = (uint)(uVar3 < uStack12) + (iVar2 >> 0x1f) + iStack16; - uStack12 = uVar3; - uVar1 = lotsa_shifting_random_related((ulonglong *)&iStack16); - pbVar4 = pbVar4 + 1; - uVar5 += 7; - uVar6 ^= uVar1; - } while (pbVar4 != param_2); - } - param_2 = param_2 + -1; - if (param_1 <= param_2) { - do { - iVar2 = (uint)*param_2 << (uVar5 & 0xf); - uVar3 = iVar2 + uStack12; - iStack16 = (uint)(uVar3 < uStack12) + (iVar2 >> 0x1f) + iStack16; - uStack12 = uVar3; - uVar1 = lotsa_shifting_random_related((ulonglong *)&iStack16); - param_2 = param_2 + -1; - uVar5 += 3; - uVar7 ^= uVar1; - } while (param_2 != param_1 + -1); - } - *param_3 = uVar6; - param_3[1] = uVar7; - return; + u32 uVar1; + int iVar2; + uint uVar3; + byte *pbVar4; + uint uVar5; + uint uVar6; + uint uVar7; + int iStack16; + uint uStack12; + + uVar5 = 0; + iStack16 = -0x707f60b9; + uStack12 = 0x3108b3c1; + uVar6 = 0; + uVar7 = 0; + if (param_1 < param_2) { + pbVar4 = param_1; + do { + iVar2 = (uint)*pbVar4 << (uVar5 & 0xf); + uVar3 = iVar2 + uStack12; + iStack16 = (uint)(uVar3 < uStack12) + (iVar2 >> 0x1f) + iStack16; + uStack12 = uVar3; + uVar1 = lotsa_shifting_random_related((ulonglong *)&iStack16); + pbVar4 = pbVar4 + 1; + uVar5 += 7; + uVar6 ^= uVar1; + } while (pbVar4 != param_2); + } + param_2 = param_2 + -1; + if (param_1 <= param_2) { + do { + iVar2 = (uint)*param_2 << (uVar5 & 0xf); + uVar3 = iVar2 + uStack12; + iStack16 = (uint)(uVar3 < uStack12) + (iVar2 >> 0x1f) + iStack16; + uStack12 = uVar3; + uVar1 = lotsa_shifting_random_related((ulonglong *)&iStack16); + param_2 = param_2 + -1; + uVar5 += 3; + uVar7 ^= uVar1; + } while (param_2 != param_1 + -1); + } + *param_3 = uVar6; + param_3[1] = uVar7; + return; } @@ -111893,21 +110823,21 @@ void proc_7F09B600(byte *param_1,byte *param_2,uint *param_3) undefined4 proc_7F09B740(void) { - ulonglong uVar1; - - uVar1 = ((randomseed << 0x3f) >> 0x1f | (randomseed << 0x1f) >> 0x20) ^ - (randomseed << 0x2c) >> 0x20; - randomseed = uVar1 >> 0x14 & 0xfff ^ uVar1; - return (int)randomseed; + ulonglong uVar1; + + uVar1 = ((randomseed << 0x3f) >> 0x1f | (randomseed << 0x1f) >> 0x20) ^ + (randomseed << 0x2c) >> 0x20; + randomseed = uVar1 >> 0x14 & 0xfff ^ uVar1; + return (int)randomseed; } -void proc_7F09B788(longlong param_1) +void proc_7F09B788(u64 param_1) { - randomseed = param_1 + 1; - return; + randomseed = param_1 + 1; + return; } @@ -111915,7 +110845,7 @@ void proc_7F09B788(longlong param_1) void removed_7f09b7a0(void) { - return; + return; } @@ -111923,15 +110853,15 @@ void removed_7f09b7a0(void) void proc_7F09B7A8(void) { - int iVar1; - - iVar1 = 0; - if (0 < DAT_8007a0d4) { - do { - iVar1 += 0x14; - } while (iVar1 < DAT_8007a0d4 * 0x14); - } - return; + int iVar1; + + iVar1 = 0; + if (0 < DAT_8007a0d4) { + do { + iVar1 += 0x14; + } while (iVar1 < DAT_8007a0d4 * 0x14); + } + return; } @@ -111939,15 +110869,15 @@ void proc_7F09B7A8(void) void proc_7F09B7E4(void) { - int iVar1; - - iVar1 = 0; - if (0 < DAT_8007a0dc) { - do { - iVar1 += 0x14; - } while (iVar1 < DAT_8007a0dc * 0x14); - } - return; + int iVar1; + + iVar1 = 0; + if (0 < DAT_8007a0dc) { + do { + iVar1 += 0x14; + } while (iVar1 < DAT_8007a0dc * 0x14); + } + return; } @@ -111955,67 +110885,67 @@ void proc_7F09B7E4(void) void proc_7F09B820(void) { - ulonglong uVar1; - int iVar2; - int iVar3; - - uVar1 = get_num_players(); - if ((longlong)uVar1 < 2) { - iVar2 = proc_7F0BDF04(); - if ((iVar2 == 0x1e) || (iVar2 == 0x1d)) { - DAT_8007a0d0 = 500; - DAT_8007a0d4 = 0x14; - DAT_8007a0d8 = 500; - DAT_8007a0dc = 0x14; + s32 sVar1; + int iVar2; + int iVar3; + + sVar1 = get_num_players(); + if (sVar1 < 2) { + iVar2 = proc_7F0BDF04(); + if ((iVar2 == 0x1e) || (iVar2 == 0x1d)) { + DAT_8007a0d0 = 500; + DAT_8007a0d4 = 0x14; + DAT_8007a0d8 = 500; + DAT_8007a0dc = 0x14; + } + else { + DAT_8007a0d0 = 500; + DAT_8007a0d4 = 0x14; + DAT_8007a0d8 = 0x5dc; + DAT_8007a0dc = 0x28; + } } else { - DAT_8007a0d0 = 500; - DAT_8007a0d4 = 0x14; - DAT_8007a0d8 = 0x5dc; - DAT_8007a0dc = 0x28; + DAT_8007a0d0 = 3000; + DAT_8007a0d4 = 0x50; + DAT_8007a0d8 = 500; + DAT_8007a0dc = 0x14; } - } - else { - DAT_8007a0d0 = 3000; - DAT_8007a0d4 = 0x50; - DAT_8007a0d8 = 500; - DAT_8007a0dc = 0x14; - } - DAT_8007a0e8 = (uint *)allocate_bytes_in_bank(DAT_8007a0d4 * 0x14,4); - DAT_8007a0e0 = allocate_bytes_in_bank(DAT_8007a0d0 << 4,4); - DAT_8007a0ec = (uint *)allocate_bytes_in_bank(DAT_8007a0dc * 0x14,4); - DAT_8007a0e4 = allocate_bytes_in_bank(DAT_8007a0d8 << 4,4); - DAT_8007a0f0 = (undefined2)DAT_8007a0d0; - *DAT_8007a0e8 = DAT_8007a0e0; - *(short *)(DAT_8007a0e8 + 3) = (short)DAT_8007a0d0; - *(undefined2 *)((int)DAT_8007a0e8 + 0xe) = 0; - iVar2 = 0x14; - *(undefined2 *)(DAT_8007a0e8 + 4) = 0xffff; - iVar3 = 1; - *(undefined2 *)((int)DAT_8007a0e8 + 0x12) = 0xffff; - if (1 < DAT_8007a0d4) { - do { - iVar3 += 1; - *(undefined2 *)((int)DAT_8007a0e8 + iVar2 + 0xe) = 0xffff; - iVar2 += 0x14; - } while (iVar3 < DAT_8007a0d4); - } - iVar3 = 1; - DAT_8007a0f2 = (undefined2)DAT_8007a0d8; - iVar2 = 0x14; - *DAT_8007a0ec = DAT_8007a0e4; - *(short *)(DAT_8007a0ec + 3) = (short)DAT_8007a0d8; - *(undefined2 *)((int)DAT_8007a0ec + 0xe) = 0; - *(undefined2 *)(DAT_8007a0ec + 4) = 0xffff; - *(undefined2 *)((int)DAT_8007a0ec + 0x12) = 0xffff; - if (1 < DAT_8007a0dc) { - do { - iVar3 += 1; - *(undefined2 *)((int)DAT_8007a0ec + iVar2 + 0xe) = 0xffff; - iVar2 += 0x14; - } while (iVar3 < DAT_8007a0dc); - } - return; + DAT_8007a0e8 = (uint *)mempAllocBytesInBank(DAT_8007a0d4 * 0x14,'\x04'); + DAT_8007a0e0 = mempAllocBytesInBank(DAT_8007a0d0 << 4,'\x04'); + DAT_8007a0ec = (uint *)mempAllocBytesInBank(DAT_8007a0dc * 0x14,'\x04'); + DAT_8007a0e4 = mempAllocBytesInBank(DAT_8007a0d8 << 4,'\x04'); + DAT_8007a0f0 = (undefined2)DAT_8007a0d0; + *DAT_8007a0e8 = DAT_8007a0e0; + *(short *)(DAT_8007a0e8 + 3) = (short)DAT_8007a0d0; + *(undefined2 *)((int)DAT_8007a0e8 + 0xe) = 0; + iVar2 = 0x14; + *(undefined2 *)(DAT_8007a0e8 + 4) = 0xffff; + iVar3 = 1; + *(undefined2 *)((int)DAT_8007a0e8 + 0x12) = 0xffff; + if (1 < DAT_8007a0d4) { + do { + iVar3 += 1; + *(undefined2 *)((int)DAT_8007a0e8 + iVar2 + 0xe) = 0xffff; + iVar2 += 0x14; + } while (iVar3 < DAT_8007a0d4); + } + iVar3 = 1; + DAT_8007a0f2 = (undefined2)DAT_8007a0d8; + iVar2 = 0x14; + *DAT_8007a0ec = DAT_8007a0e4; + *(short *)(DAT_8007a0ec + 3) = (short)DAT_8007a0d8; + *(undefined2 *)((int)DAT_8007a0ec + 0xe) = 0; + *(undefined2 *)(DAT_8007a0ec + 4) = 0xffff; + *(undefined2 *)((int)DAT_8007a0ec + 0x12) = 0xffff; + if (1 < DAT_8007a0dc) { + do { + iVar3 += 1; + *(undefined2 *)((int)DAT_8007a0ec + iVar2 + 0xe) = 0xffff; + iVar2 += 0x14; + } while (iVar3 < DAT_8007a0dc); + } + return; } @@ -112023,59 +110953,61 @@ void proc_7F09B820(void) void proc_7F09BAC4(int param_1,int param_2) { - char cVar1; - ushort uVar2; - int *piVar3; - ushort *partdesc; - ushort *puVar4; - char *pcVar5; - - pcVar5 = (char *)get_ptr_obj_pos_list_current_entry(); - if (pcVar5 == NULL) { - return; - } - cVar1 = *pcVar5; - do { - if (cVar1 == '\x01') { - partdesc = **(ushort ***)(*(int *)(*(int *)(pcVar5 + 4) + 0x14) + 8); - if (partdesc == NULL) { - pcVar5 = *(char **)(pcVar5 + 0x24); - } - else { - uVar2 = *partdesc; - while ((uVar2 & 0xff) != 0x18) { - puVar4 = *(ushort **)(partdesc + 10); - if ((puVar4 == NULL) && (puVar4 = partdesc, partdesc != NULL)) { - puVar4 = *(ushort **)(partdesc + 6); - while ((puVar4 == NULL && - (partdesc = *(ushort **)(partdesc + 4), puVar4 = partdesc, partdesc != NULL))) { - puVar4 = *(ushort **)(partdesc + 6); + char cVar1; + ushort uVar2; + int objinst; + object_standard *poVar3; + int *piVar4; + ushort *partdesc; + ushort *puVar5; + + poVar3 = get_ptr_obj_pos_list_current_entry(); + if (poVar3 == NULL) { + return; + } + cVar1 = *(char *)poVar3; + do { + if (cVar1 == '\x01') { + objinst = *(int *)(*(int *)&poVar3->pad + 0x14); + partdesc = **(ushort ***)(objinst + 8); + if (partdesc == NULL) { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; } - } - if (puVar4 == NULL) goto LAB_7f09bb90; - uVar2 = *puVar4; - partdesc = puVar4; - } - piVar3 = (int *)extract_id_from_object_structure_microcode - (*(int *)(*(int *)(pcVar5 + 4) + 0x14),partdesc); - if (param_1 == *piVar3) { - *piVar3 = param_2; + else { + uVar2 = *partdesc; + while ((uVar2 & 0xff) != 0x18) { + puVar5 = *(ushort **)(partdesc + 10); + if ((puVar5 == NULL) && (puVar5 = partdesc, partdesc != NULL)) { + puVar5 = *(ushort **)(partdesc + 6); + while ((puVar5 == NULL && + (partdesc = *(ushort **)(partdesc + 4), puVar5 = partdesc, + partdesc != NULL))) { + puVar5 = *(ushort **)(partdesc + 6); + } + } + if (puVar5 == NULL) goto LAB_7f09bb90; + uVar2 = *puVar5; + partdesc = puVar5; + } + piVar4 = (int *)extract_id_from_object_structure_microcode(objinst,partdesc); + if (param_1 == *piVar4) { + *piVar4 = param_2; LAB_7f09bb90: - pcVar5 = *(char **)(pcVar5 + 0x24); + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + else { + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; + } + } } else { - pcVar5 = *(char **)(pcVar5 + 0x24); + poVar3 = (object_standard *)poVar3->runtime_MATRIX3; } - } - } - else { - pcVar5 = *(char **)(pcVar5 + 0x24); - } - if (pcVar5 == NULL) { - return; - } - cVar1 = *pcVar5; - } while( true ); + if (poVar3 == NULL) { + return; + } + cVar1 = *(char *)poVar3; + } while( true ); } @@ -112083,84 +111015,86 @@ LAB_7f09bb90: void proc_7F09BBBC(void) { - short sVar1; - int iVar2; - bool bVar3; - int *piVar4; - int iVar5; - int iVar6; - int iVar7; - int *piVar8; - int iVar9; - int iVar10; - - bVar3 = false; - if ((longlong)DAT_8007a0f2 < (longlong)(DAT_8007a0d8 >> 2)) { - iVar10 = 0; - iVar5 = DAT_8007a0dc + -1; - iVar7 = DAT_8007a0dc; - iVar9 = DAT_8007a0ec; - if (0 < iVar5) { - do { - iVar2 = iVar10 * 0x14; - iVar6 = (iVar10 + 1) * 0x10000 >> 0x10; - if ((0 < *(short *)(iVar9 + iVar2 + 0xe)) && ((iVar10 + 1) * 0x10000 >> 0x10 < iVar7)) { - do { - iVar5 = iVar6 * 0x14; - piVar8 = (int *)(iVar9 + iVar2); - piVar4 = (int *)(iVar9 + iVar5); - if ((0 < *(short *)((int)piVar4 + 0xe)) && - ((piVar8[1] == piVar4[1] && (piVar8[2] == piVar4[2])))) { - bVar3 = true; - proc_7F09BAC4(*piVar4,*piVar8); - *(short *)(DAT_8007a0ec + iVar2 + 0xe) = - *(short *)(DAT_8007a0ec + iVar2 + 0xe) + *(short *)(DAT_8007a0ec + iVar5 + 0xe); - *(undefined2 *)(DAT_8007a0ec + iVar5 + 0xe) = 0; - DAT_8007a0f2 += *(short *)(DAT_8007a0ec + iVar5 + 0xc); - iVar7 = DAT_8007a0dc; - iVar9 = DAT_8007a0ec; - } - iVar6 = (int)(short)((short)iVar6 + 1); - } while (iVar6 < iVar7); - iVar5 = iVar7 + -1; - } - iVar10 = (int)(short)((short)iVar10 + 1); - } while (iVar10 < iVar5); - } - } - if (bVar3) { + short sVar1; + int iVar2; + bool bVar3; + int *piVar4; + int iVar5; + int iVar6; + int iVar7; + int *piVar8; + int iVar9; + int iVar10; + bVar3 = false; - iVar7 = 0; - do { - iVar9 = DAT_8007a0ec + iVar7 * 0x14; - sVar1 = *(short *)(iVar9 + 0x10); - if (sVar1 < 0) { - bVar3 = true; - } - else { - if (*(short *)(iVar9 + 0xe) == 0) { - iVar5 = (int)sVar1 * 0x14; - if (*(short *)(DAT_8007a0ec + iVar5 + 0xe) == 0) { - *(short *)(iVar9 + 0xc) = - *(short *)(iVar9 + 0xc) + *(short *)(DAT_8007a0ec + iVar5 + 0xc); - *(undefined2 *)(DAT_8007a0ec + iVar5 + 0xe) = 0xffff; - sVar1 = *(short *)(DAT_8007a0ec + iVar5 + 0x10); - *(short *)(DAT_8007a0ec + iVar7 * 0x14 + 0x10) = sVar1; - if (-1 < sVar1) { - *(undefined2 *)(DAT_8007a0ec + (int)sVar1 * 0x14 + 0x12) = (short)iVar7; - } - goto LAB_7f09bdf0; - } + if ((longlong)DAT_8007a0f2 < (longlong)(DAT_8007a0d8 >> 2)) { + iVar10 = 0; + iVar5 = DAT_8007a0dc + -1; + iVar7 = DAT_8007a0dc; + iVar9 = DAT_8007a0ec; + if (0 < iVar5) { + do { + iVar2 = iVar10 * 0x14; + iVar6 = (iVar10 + 1) * 0x10000 >> 0x10; + if ((0 < *(short *)(iVar9 + iVar2 + 0xe)) && + ((iVar10 + 1) * 0x10000 >> 0x10 < iVar7)) { + do { + iVar5 = iVar6 * 0x14; + piVar8 = (int *)(iVar9 + iVar2); + piVar4 = (int *)(iVar9 + iVar5); + if ((0 < *(short *)((int)piVar4 + 0xe)) && + ((piVar8[1] == piVar4[1] && (piVar8[2] == piVar4[2])))) { + bVar3 = true; + proc_7F09BAC4(*piVar4,*piVar8); + *(short *)(DAT_8007a0ec + iVar2 + 0xe) = + *(short *)(DAT_8007a0ec + iVar2 + 0xe) + + *(short *)(DAT_8007a0ec + iVar5 + 0xe); + *(undefined2 *)(DAT_8007a0ec + iVar5 + 0xe) = 0; + DAT_8007a0f2 += *(short *)(DAT_8007a0ec + iVar5 + 0xc); + iVar7 = DAT_8007a0dc; + iVar9 = DAT_8007a0ec; + } + iVar6 = (int)(short)((short)iVar6 + 1); + } while (iVar6 < iVar7); + iVar5 = iVar7 + -1; + } + iVar10 = (int)(short)((short)iVar10 + 1); + } while (iVar10 < iVar5); } - iVar7 = (int)sVar1; - } + } + if (bVar3) { + bVar3 = false; + iVar7 = 0; + do { + iVar9 = DAT_8007a0ec + iVar7 * 0x14; + sVar1 = *(short *)(iVar9 + 0x10); + if (sVar1 < 0) { + bVar3 = true; + } + else { + if (*(short *)(iVar9 + 0xe) == 0) { + iVar5 = (int)sVar1 * 0x14; + if (*(short *)(DAT_8007a0ec + iVar5 + 0xe) == 0) { + *(short *)(iVar9 + 0xc) = + *(short *)(iVar9 + 0xc) + *(short *)(DAT_8007a0ec + iVar5 + 0xc); + *(undefined2 *)(DAT_8007a0ec + iVar5 + 0xe) = 0xffff; + sVar1 = *(short *)(DAT_8007a0ec + iVar5 + 0x10); + *(short *)(DAT_8007a0ec + iVar7 * 0x14 + 0x10) = sVar1; + if (-1 < sVar1) { + *(undefined2 *)(DAT_8007a0ec + (int)sVar1 * 0x14 + 0x12) = (short)iVar7; + } + goto LAB_7f09bdf0; + } + } + iVar7 = (int)sVar1; + } LAB_7f09bdf0: - } while (!bVar3); - } - if ((longlong)DAT_8007a0f2 < (longlong)(DAT_8007a0d8 >> 2)) { - proc_7F056690(); - } - return; + } while (!bVar3); + } + if ((longlong)DAT_8007a0f2 < (longlong)(DAT_8007a0d8 >> 2)) { + proc_7F056690(); + } + return; } @@ -112168,101 +111102,101 @@ LAB_7f09bdf0: int proc_7F09BE4C(longlong param_1,longlong param_2,int param_3,int param_4) { - short sVar1; - int *piVar2; - bool bVar3; - longlong lVar4; - int *piVar5; - int iVar6; - int *piVar7; - longlong lVar8; - longlong lVar9; - short *psVar10; - short sVar11; - int iVar12; - - if (param_2 == 0xb0b) { - psVar10 = &DAT_8007a0f2; - sVar1 = DAT_8007a0dc._2_2_; - piVar2 = DAT_8007a0ec; - } - else { - if (param_2 != 0xcccc) { - return 0; - } - psVar10 = &DAT_8007a0f0; - sVar1 = DAT_8007a0d4._2_2_; - piVar2 = DAT_8007a0e8; - } - lVar9 = (longlong)sVar1; - iVar12 = 0; - lVar4 = 0; - lVar8 = 0; - do { - piVar7 = piVar2 + (int)lVar8 * 5; - if (*(short *)((int)piVar7 + 0xe) == 0) { - if ((longlong)*(short *)(piVar7 + 3) < param_1) { - sVar1 = *(short *)(piVar7 + 4); - goto LAB_7f09befc; - } - iVar12 = 1; + short sVar1; + int *piVar2; + bool bVar3; + longlong lVar4; + int *piVar5; + int iVar6; + int *piVar7; + longlong lVar8; + longlong lVar9; + short *psVar10; + short sVar11; + int iVar12; + + if (param_2 == 0xb0b) { + psVar10 = &DAT_8007a0f2; + sVar1 = DAT_8007a0dc._2_2_; + piVar2 = DAT_8007a0ec; } else { - sVar1 = *(short *)(piVar7 + 4); -LAB_7f09befc: - lVar8 = (longlong)sVar1; - lVar4 = (longlong)((int)lVar4 + 1); - if ((lVar8 == -1) || (lVar9 < lVar4)) { - iVar12 = -1; - } + if (param_2 != 0xcccc) { + return 0; + } + psVar10 = &DAT_8007a0f0; + sVar1 = DAT_8007a0d4._2_2_; + piVar2 = DAT_8007a0e8; } - } while (iVar12 == 0); - if (lVar9 < lVar4) { - proc_7F09B7A8(); - proc_7F09B7E4(); - iVar6 = 0; - } - else { - iVar6 = 0; - if (iVar12 == 1) { - bVar3 = false; - piVar7 = piVar2 + (int)lVar8 * 5; - sVar1 = *(short *)(piVar7 + 3); - piVar7[1] = param_3; - *(short *)((int)piVar7 + 0xe) = *(short *)((int)piVar7 + 0xe) + 1; - piVar7[2] = param_4; - sVar11 = (short)param_1; - if (((longlong)sVar1 != param_1) && (lVar4 = 0, piVar5 = piVar2, 0 < lVar9)) { - do { - if (*(short *)((int)piVar5 + 0xe) == -1) { - *(short *)(piVar7 + 3) = sVar11; - *piVar5 = *piVar7 + (int)param_1 * 0x10; - *(short *)(piVar5 + 3) = sVar1 - sVar11; - *(undefined2 *)((int)piVar5 + 0xe) = 0; - *(undefined2 *)((int)piVar5 + 0x12) = (short)lVar8; - bVar3 = true; - *(undefined2 *)(piVar5 + 4) = *(undefined2 *)(piVar7 + 4); - if (-1 < *(short *)(piVar7 + 4)) { - *(undefined2 *)((int)piVar2 + (int)*(short *)(piVar7 + 4) * 0x14 + 0x12) = - (short)lVar4; + lVar9 = (longlong)sVar1; + iVar12 = 0; + lVar4 = 0; + lVar8 = 0; + do { + piVar7 = piVar2 + (int)lVar8 * 5; + if (*(short *)((int)piVar7 + 0xe) == 0) { + if (*(short *)(piVar7 + 3) < param_1) { + sVar1 = *(short *)(piVar7 + 4); + goto LAB_7f09befc; } - *(short *)(piVar7 + 4) = (short)lVar4; - break; - } - lVar4 = (longlong)((int)lVar4 + 1); - piVar5 = piVar5 + 5; - } while (lVar4 != lVar9); - } - if (bVar3) { - *psVar10 = *psVar10 - sVar11; - } - else { - *psVar10 = *psVar10 - sVar1; - } - iVar6 = *piVar7; + iVar12 = 1; + } + else { + sVar1 = *(short *)(piVar7 + 4); +LAB_7f09befc: + lVar8 = (longlong)sVar1; + lVar4 = (longlong)((int)lVar4 + 1); + if ((lVar8 == -1) || (lVar9 < lVar4)) { + iVar12 = -1; + } + } + } while (iVar12 == 0); + if (lVar9 < lVar4) { + proc_7F09B7A8(); + proc_7F09B7E4(); + iVar6 = 0; } - } - return iVar6; + else { + iVar6 = 0; + if (iVar12 == 1) { + bVar3 = false; + piVar7 = piVar2 + (int)lVar8 * 5; + sVar1 = *(short *)(piVar7 + 3); + piVar7[1] = param_3; + *(short *)((int)piVar7 + 0xe) = *(short *)((int)piVar7 + 0xe) + 1; + piVar7[2] = param_4; + sVar11 = (short)param_1; + if (((longlong)sVar1 != param_1) && (lVar4 = 0, piVar5 = piVar2, 0 < lVar9)) { + do { + if (*(short *)((int)piVar5 + 0xe) == -1) { + *(short *)(piVar7 + 3) = sVar11; + *piVar5 = *piVar7 + (int)param_1 * 0x10; + *(short *)(piVar5 + 3) = sVar1 - sVar11; + *(undefined2 *)((int)piVar5 + 0xe) = 0; + *(undefined2 *)((int)piVar5 + 0x12) = (short)lVar8; + bVar3 = true; + *(undefined2 *)(piVar5 + 4) = *(undefined2 *)(piVar7 + 4); + if (-1 < *(short *)(piVar7 + 4)) { + *(undefined2 *)((int)piVar2 + (int)*(short *)(piVar7 + 4) * 0x14 + 0x12) + = (short)lVar4; + } + *(short *)(piVar7 + 4) = (short)lVar4; + break; + } + lVar4 = (longlong)((int)lVar4 + 1); + piVar5 = piVar5 + 5; + } while (lVar4 != lVar9); + } + if (bVar3) { + *psVar10 = *psVar10 - sVar11; + } + else { + *psVar10 = *psVar10 - sVar1; + } + iVar6 = *piVar7; + } + } + return iVar6; } @@ -112270,81 +111204,84 @@ LAB_7f09befc: void proc_7F09C044(uint param_1) { - short sVar1; - bool bVar2; - int iVar3; - longlong lVar4; - uint *puVar5; - longlong lVar6; - int iVar7; - short *psVar8; - short sVar9; - - if (((param_1 < DAT_8007a0e0) || - (psVar8 = &DAT_8007a0f0, iVar7 = DAT_8007a0e8, - (DAT_8007a0d0 + -1) * 0x10 + DAT_8007a0e0 < param_1)) && - ((param_1 < DAT_8007a0e4 || - (psVar8 = &DAT_8007a0f2, iVar7 = DAT_8007a0ec, - (DAT_8007a0d8 + -1) * 0x10 + DAT_8007a0e4 < param_1)))) { - proc_7F09B7A8(); - proc_7F09B7E4(); - } - else { - lVar6 = 0; - bVar2 = false; - do { - puVar5 = (uint *)(iVar7 + (int)lVar6 * 0x14); - if (param_1 == *puVar5) { - bVar2 = true; - *(short *)((int)puVar5 + 0xe) = *(short *)((int)puVar5 + 0xe) + -1; - if (*(short *)((int)puVar5 + 0xe) == 0) { - *psVar8 = *psVar8 + *(short *)(puVar5 + 3); - if (*(short *)(puVar5 + 4) < 0) { - lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); - } - else { - iVar3 = iVar7 + (int)*(short *)(puVar5 + 4) * 0x14; - if (*(short *)(iVar3 + 0xe) == 0) { - *(short *)(puVar5 + 3) = *(short *)(puVar5 + 3) + *(short *)(iVar3 + 0xc); - *(undefined2 *)(puVar5 + 4) = *(undefined2 *)(iVar3 + 0x10); - *(undefined2 *)(iVar3 + 0xe) = 0xffff; - if (*(short *)(puVar5 + 4) < 0) { - lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); - } - else { - *(undefined2 *)(iVar7 + (int)*(short *)(puVar5 + 4) * 0x14 + 0x12) = (short)lVar6; - lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); - } + short sVar1; + bool bVar2; + int iVar3; + longlong lVar4; + uint *puVar5; + longlong lVar6; + int iVar7; + short *psVar8; + short sVar9; + + if (((param_1 < DAT_8007a0e0) || + (psVar8 = &DAT_8007a0f0, iVar7 = DAT_8007a0e8, + (DAT_8007a0d0 + -1) * 0x10 + DAT_8007a0e0 < param_1)) && + ((param_1 < DAT_8007a0e4 || + (psVar8 = &DAT_8007a0f2, iVar7 = DAT_8007a0ec, + (DAT_8007a0d8 + -1) * 0x10 + DAT_8007a0e4 < param_1)))) { + proc_7F09B7A8(); + proc_7F09B7E4(); + } + else { + lVar6 = 0; + bVar2 = false; + do { + puVar5 = (uint *)(iVar7 + (int)lVar6 * 0x14); + if (param_1 == *puVar5) { + bVar2 = true; + *(short *)((int)puVar5 + 0xe) = *(short *)((int)puVar5 + 0xe) + -1; + if (*(short *)((int)puVar5 + 0xe) == 0) { + *psVar8 = *psVar8 + *(short *)(puVar5 + 3); + if (*(short *)(puVar5 + 4) < 0) { + lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); + } + else { + iVar3 = iVar7 + (int)*(short *)(puVar5 + 4) * 0x14; + if (*(short *)(iVar3 + 0xe) == 0) { + *(short *)(puVar5 + 3) = + *(short *)(puVar5 + 3) + *(short *)(iVar3 + 0xc); + *(undefined2 *)(puVar5 + 4) = *(undefined2 *)(iVar3 + 0x10); + *(undefined2 *)(iVar3 + 0xe) = 0xffff; + if (*(short *)(puVar5 + 4) < 0) { + lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); + } + else { + *(undefined2 *)(iVar7 + (int)*(short *)(puVar5 + 4) * 0x14 + 0x12) = + (short)lVar6; + lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); + } + } + else { + lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); + } + } + if (-1 < lVar4) { + iVar3 = iVar7 + (int)lVar4 * 0x14; + sVar9 = (short)lVar4; + if (*(short *)(iVar3 + 0xe) == 0) { + lVar6 = (longlong)(int)sVar9; + *(short *)(iVar3 + 0xc) = + *(short *)(iVar3 + 0xc) + *(short *)(puVar5 + 3); + *(undefined2 *)(iVar3 + 0x10) = *(undefined2 *)(puVar5 + 4); + *(undefined2 *)((int)puVar5 + 0xe) = 0xffff; + sVar1 = *(short *)(iVar7 + (int)sVar9 * 0x14 + 0x10); + if (-1 < sVar1) { + *(short *)(iVar7 + (int)sVar1 * 0x14 + 0x12) = sVar9; + } + } + } + } } else { - lVar4 = (longlong)*(short *)((int)puVar5 + 0x12); + lVar6 = (longlong)*(short *)(puVar5 + 4); + if (lVar6 == -1) { + bVar2 = true; + } } - } - if (-1 < lVar4) { - iVar3 = iVar7 + (int)lVar4 * 0x14; - sVar9 = (short)lVar4; - if (*(short *)(iVar3 + 0xe) == 0) { - lVar6 = (longlong)(int)sVar9; - *(short *)(iVar3 + 0xc) = *(short *)(iVar3 + 0xc) + *(short *)(puVar5 + 3); - *(undefined2 *)(iVar3 + 0x10) = *(undefined2 *)(puVar5 + 4); - *(undefined2 *)((int)puVar5 + 0xe) = 0xffff; - sVar1 = *(short *)(iVar7 + (int)sVar9 * 0x14 + 0x10); - if (-1 < sVar1) { - *(short *)(iVar7 + (int)sVar1 * 0x14 + 0x12) = sVar9; - } - } - } - } - } - else { - lVar6 = (longlong)*(short *)(puVar5 + 4); - if (lVar6 == -1) { - bVar2 = true; - } - } - } while (!bVar2); - } - return; + } while (!bVar2); + } + return; } @@ -112353,231 +111290,235 @@ void proc_7F09C250(int param_1,float *param_2,int param_3,undefined4 param_4,int undefined param_6,char *param_7,int param_8) { - char *pcVar1; - byte bVar2; - short sVar3; - object_standard *poVar5; - int **ppiVar6; - ulonglong uVar4; - u32 uVar7; - int *piVar8; - object_standard *poVar9; - object_standard *poVar10; - int iVar11; - longlong lVar12; - int iVar13; - float fVar14; - float __x; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float extraout_f14_00; - float fVar15; - - iVar11 = (int)(short)param_4; - iVar13 = iVar11 * 0x40; - poVar10 = NULL; - if ((iVar11 != 0x10) && (iVar11 != 1)) { - DAT_80040170 = 6; - } - iVar11 = 0; - piVar8 = DAT_8007a144; - do { - if (*piVar8 == 0) { - poVar10 = (object_standard *)(iVar11 + (int)DAT_8007a144); - break; + char *pcVar1; + byte bVar2; + short sVar3; + object_standard *poVar5; + object_standard *poVar6; + ulonglong uVar4; + u32 uVar7; + s32 sVar8; + int *piVar9; + object_standard *poVar10; + int iVar11; + longlong lVar12; + int iVar13; + float fVar14; + float __x; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float extraout_f14_00; + float fVar15; + + iVar11 = (int)(short)param_4; + iVar13 = iVar11 * 0x40; + poVar10 = NULL; + if ((iVar11 != 0x10) && (iVar11 != 1)) { + DAT_80040170 = 6; } - iVar11 += 0x3e0; - piVar8 = piVar8 + 0xf8; - } while (iVar11 < 0x1740); - if (poVar10 == NULL) { - return; - } - poVar5 = remove_last_obj_pos_data_entry(); - if ((&DAT_800402bd)[iVar13] != 0) { - ppiVar6 = play_sfx_a1(ptr_sfx_buf,(ushort)(byte)(&DAT_800402bd)[iVar13],NULL); - proc_7F053A10((int)ppiVar6,param_2); - } - if (poVar5 == NULL) { - return; - } - bVar2 = *(byte *)((int)&poVar5->extrascale + 1); - *(undefined *)&poVar5->extrascale = 7; - *(byte *)((int)&poVar5->extrascale + 1) = bVar2 | 2; - *(object_standard **)&poVar5->obj = poVar10; - iVar11 = 0; - poVar5->runtime_ptr_obj_instance_controller = param_3; - *(float *)&poVar5->flags = *param_2; - *(float *)&poVar5->flags2 = param_2[1]; - *(float *)&poVar5->runtime_ptr_obj_posdata = param_2[2]; - if (*param_7 != -1) { - *(char *)&poVar5->runtime_MATRIX5 = *param_7; - poVar9 = poVar5; - while( true ) { - pcVar1 = param_7 + 1; - iVar11 += 1; - param_7 = param_7 + 1; - if ((*pcVar1 == -1) || (iVar11 == 7)) break; - *(char *)((int)&poVar9->runtime_MATRIX5 + 1) = *pcVar1; - poVar9 = (object_standard *)((int)&poVar9->extrascale + 1); + iVar11 = 0; + piVar9 = DAT_8007a144; + do { + if (*piVar9 == 0) { + poVar10 = (object_standard *)(iVar11 + (int)DAT_8007a144); + break; + } + iVar11 += 0x3e0; + piVar9 = piVar9 + 0xf8; + } while (iVar11 < 0x1740); + if (poVar10 == NULL) { + return; } - } - *(undefined *)((int)&poVar5->runtime_MATRIX5 + iVar11) = 0xff; - lVar12 = 0; - if (param_8 != 0) { - *(byte *)((int)&poVar5->extrascale + 1) = *(byte *)((int)&poVar5->extrascale + 1) | 8; - } - proc_7F03A4F0((int)poVar5); - set_stateflag_0x04_for_posdata((int)poVar5); - *(undefined2 *)&poVar10[7].runtime_MATRIXC = 0; - *(undefined2 *)((int)&poVar10[7].runtime_MATRIXC + 2) = 0xffff; - *(undefined *)((int)&poVar10[7].runtime_MATRIXD + 1) = (char)param_5; - *(object_standard **)poVar10 = poVar5; - *(int *)&poVar10->obj = param_1; - *(char *)&poVar10[7].runtime_MATRIXD = (char)param_4; - *(undefined *)((int)&poVar10[7].runtime_MATRIXD + 2) = param_6; - if (param_5 == 0) { - *(float *)&poVar10[7].runtime_MATRIXE = flt_800576B0; - } - else { - if (param_1 == 0) { - fVar14 = *param_2; + poVar5 = remove_last_obj_pos_data_entry(); + if ((&DAT_800402bd)[iVar13] != 0) { + poVar6 = poVar5; + play_sfx_a1(ptr_sfx_buf,(ushort)(byte)(&DAT_800402bd)[iVar13],NULL); + sub_GAME_7F053A10((int)poVar6,param_2); + } + if (poVar5 == NULL) { + return; + } + bVar2 = *(byte *)((int)&poVar5->extrascale + 1); + *(undefined *)&poVar5->extrascale = 7; + *(byte *)((int)&poVar5->extrascale + 1) = bVar2 | 2; + *(object_standard **)&poVar5->obj = poVar10; + iVar11 = 0; + poVar5->runtime_ptr_obj_instance_controller = param_3; + *(float *)&poVar5->flags = *param_2; + *(float *)&poVar5->flags2 = param_2[1]; + *(float *)&poVar5->runtime_ptr_obj_posdata = param_2[2]; + if (*param_7 != -1) { + *(char *)&poVar5->runtime_MATRIX5 = *param_7; + poVar6 = poVar5; + while( true ) { + pcVar1 = param_7 + 1; + iVar11 += 1; + param_7 = param_7 + 1; + if ((*pcVar1 == -1) || (iVar11 == 7)) break; + *(char *)((int)&poVar6->runtime_MATRIX5 + 1) = *pcVar1; + poVar6 = (object_standard *)((int)&poVar6->extrascale + 1); + } + } + *(undefined *)((int)&poVar5->runtime_MATRIX5 + iVar11) = 0xff; + lVar12 = 0; + if (param_8 != 0) { + *(byte *)((int)&poVar5->extrascale + 1) = *(byte *)((int)&poVar5->extrascale + 1) | 8; + } + proc_7F03A4F0((int)poVar5); + set_stateflag_0x04_for_posdata((int)poVar5); + *(undefined2 *)&poVar10[7].runtime_MATRIXC = 0; + *(undefined2 *)((int)&poVar10[7].runtime_MATRIXC + 2) = 0xffff; + *(undefined *)((int)&poVar10[7].runtime_MATRIXD + 1) = (char)param_5; + *(object_standard **)poVar10 = poVar5; + *(int *)&poVar10->obj = param_1; + *(char *)&poVar10[7].runtime_MATRIXD = (char)param_4; + *(undefined *)((int)&poVar10[7].runtime_MATRIXD + 2) = param_6; + if (param_5 == 0) { + *(float *)&poVar10[7].runtime_MATRIXE = flt_800576B0; } else { - if (*(int *)(param_1 + 0x14) != 0) { - poVar10[7].runtime_MATRIXE = *(int *)(param_1 + 8); + if (param_1 == 0) { + fVar14 = *param_2; + } + else { + if (*(int *)(param_1 + 0x14) != 0) { + poVar10[7].runtime_MATRIXE = *(int *)(param_1 + 8); + fVar14 = (float)proc_7F0B2970(); + *(float *)&poVar10[7].runtime_MATRIXF = fVar14 + 4.00000000; + poVar10[7].runtime_x_pos = *(float *)(param_1 + 0x10); + uVar4 = proc_7F0B2FD8(*(int *)(param_1 + 0x14)); + *(short *)&poVar10[7].runtime_y_pos = (short)uVar4; + goto LAB_7f09c500; + } + fVar14 = *param_2; + } + *(float *)&poVar10[7].runtime_MATRIXE = fVar14; fVar14 = (float)proc_7F0B2970(); *(float *)&poVar10[7].runtime_MATRIXF = fVar14 + 4.00000000; - poVar10[7].runtime_x_pos = *(float *)(param_1 + 0x10); - uVar4 = proc_7F0B2FD8(*(int *)(param_1 + 0x14)); + poVar10[7].runtime_x_pos = param_2[2]; + uVar4 = proc_7F0B2FD8(param_3); *(short *)&poVar10[7].runtime_y_pos = (short)uVar4; - goto LAB_7f09c500; - } - fVar14 = *param_2; } - *(float *)&poVar10[7].runtime_MATRIXE = fVar14; - fVar14 = (float)proc_7F0B2970(); - *(float *)&poVar10[7].runtime_MATRIXF = fVar14 + 4.00000000; - poVar10[7].runtime_x_pos = param_2[2]; - uVar4 = proc_7F0B2FD8(param_3); - *(short *)&poVar10[7].runtime_y_pos = (short)uVar4; - } LAB_7f09c500: - uVar7 = get_random_value(); - fVar14 = (float)uVar7; - if ((int)uVar7 < 0) { - fVar14 = fVar14 + 4294967296.00000000; - } - fVar15 = (fVar14 * 0.00000000 * 0.50000000 + 1.00000000) * *(float *)(&DAT_80040294 + iVar13); - uVar7 = get_random_value(); - fVar14 = (float)uVar7; - if ((int)uVar7 < 0) { - fVar14 = fVar14 + 4294967296.00000000; - } - __x = fVar14 * 0.00000000 * flt_800576B4; - fVar14 = cosf(__x); - *(float *)&poVar10->runtime_ptr_obj_instance_controller = fVar14 * fVar15; - fVar14 = sinf(__x); - *(undefined2 *)&poVar10->runtime_MATRIX1 = 1; - *(float *)&poVar10->runtime_MATRIX0 = fVar14 * fVar15; - *(float *)&poVar10->flags = *param_2; - *(float *)&poVar10->flags2 = param_2[1]; - *(float *)&poVar10->runtime_ptr_obj_posdata = param_2[2]; - fVar14 = extraout_f12; - fVar15 = extraout_f14; - if (0 < *(short *)(&DAT_800402a8 + iVar13)) { - do { - proc_7F09F254(param_2,fVar14,fVar15,*(float *)(&DAT_800402b0 + iVar13), - *(float *)(&DAT_800402b4 + iVar13)); - lVar12 = (longlong)((int)lVar12 + 1); - fVar14 = extraout_f12_00; - fVar15 = extraout_f14_00; - } while (lVar12 < (longlong)*(short *)(&DAT_800402a8 + iVar13)); - } - uVar4 = get_num_players(); - iVar11 = 0; - if (1 < (longlong)uVar4) { - do { - piVar8 = (int *)(DAT_8007a140 + iVar11); - iVar13 = iVar11 + DAT_8007a140; - if (*piVar8 == 0) { - iVar13 = piVar8[0x66]; - } - else { - if (*(short *)(iVar13 + 6) == 7) { - iVar13 = piVar8[0x66]; - } - else { - if (*(short *)(iVar13 + 6) == 8) { - iVar13 = piVar8[0x66]; - } - else { - if (*(short *)(iVar13 + 6) == 9) { - iVar13 = piVar8[0x66]; + uVar7 = get_random_value(); + fVar14 = (float)uVar7; + if ((int)uVar7 < 0) { + fVar14 = fVar14 + 4294967296.00000000; + } + fVar15 = (fVar14 * 0.00000000 * 0.50000000 + 1.00000000) * *(float *)(&DAT_80040294 + iVar13); + uVar7 = get_random_value(); + fVar14 = (float)uVar7; + if ((int)uVar7 < 0) { + fVar14 = fVar14 + 4294967296.00000000; + } + __x = fVar14 * 0.00000000 * flt_800576B4; + fVar14 = cosf(__x); + *(float *)&poVar10->runtime_ptr_obj_instance_controller = fVar14 * fVar15; + fVar14 = sinf(__x); + *(undefined2 *)&poVar10->runtime_MATRIX1 = 1; + *(float *)&poVar10->runtime_MATRIX0 = fVar14 * fVar15; + *(float *)&poVar10->flags = *param_2; + *(float *)&poVar10->flags2 = param_2[1]; + *(float *)&poVar10->runtime_ptr_obj_posdata = param_2[2]; + fVar14 = extraout_f12; + fVar15 = extraout_f14; + if (0 < *(short *)(&DAT_800402a8 + iVar13)) { + do { + proc_7F09F254(param_2,fVar14,fVar15,*(float *)(&DAT_800402b0 + iVar13), + *(float *)(&DAT_800402b4 + iVar13)); + lVar12 = (longlong)((int)lVar12 + 1); + fVar14 = extraout_f12_00; + fVar15 = extraout_f14_00; + } while (lVar12 < *(short *)(&DAT_800402a8 + iVar13)); + } + sVar8 = get_num_players(); + iVar11 = 0; + if (1 < sVar8) { + do { + piVar9 = (int *)(DAT_8007a140 + iVar11); + iVar13 = iVar11 + DAT_8007a140; + if (*piVar9 == 0) { + iVar13 = piVar9[0x66]; } else { - *(word *)(iVar13 + 4) = (&WORD_8004017c)[(int)*(short *)(iVar13 + 6) * 0xc]; - piVar8 = (int *)(DAT_8007a140 + iVar11); - iVar13 = piVar8[0x66]; + if (*(short *)(iVar13 + 6) == 7) { + iVar13 = piVar9[0x66]; + } + else { + if (*(short *)(iVar13 + 6) == 8) { + iVar13 = piVar9[0x66]; + } + else { + if (*(short *)(iVar13 + 6) == 9) { + iVar13 = piVar9[0x66]; + } + else { + *(word *)(iVar13 + 4) = + (&WORD_8004017c)[(int)*(short *)(iVar13 + 6) * 0xc]; + piVar9 = (int *)(DAT_8007a140 + iVar11); + iVar13 = piVar9[0x66]; + } + } + } } - } - } - } - if (iVar13 == 0) { - iVar13 = piVar8[0xcc]; - } - else { - sVar3 = *(short *)(iVar11 + DAT_8007a140 + 0x19e); - if (sVar3 == 7) { - iVar13 = piVar8[0xcc]; - } - else { - if (sVar3 == 8) { - iVar13 = piVar8[0xcc]; - } - else { - if (sVar3 == 9) { - iVar13 = piVar8[0xcc]; + if (iVar13 == 0) { + iVar13 = piVar9[0xcc]; } else { - *(word *)(iVar11 + DAT_8007a140 + 0x19c) = (&WORD_8004017c)[(int)sVar3 * 0xc]; - piVar8 = (int *)(DAT_8007a140 + iVar11); - iVar13 = piVar8[0xcc]; + sVar3 = *(short *)(iVar11 + DAT_8007a140 + 0x19e); + if (sVar3 == 7) { + iVar13 = piVar9[0xcc]; + } + else { + if (sVar3 == 8) { + iVar13 = piVar9[0xcc]; + } + else { + if (sVar3 == 9) { + iVar13 = piVar9[0xcc]; + } + else { + *(word *)(iVar11 + DAT_8007a140 + 0x19c) = + (&WORD_8004017c)[(int)sVar3 * 0xc]; + piVar9 = (int *)(DAT_8007a140 + iVar11); + iVar13 = piVar9[0xcc]; + } + } + } } - } - } - } - if (iVar13 == 0) { - iVar13 = piVar8[0x132]; - } - else { - sVar3 = *(short *)(iVar11 + DAT_8007a140 + 0x336); - if (sVar3 == 7) { - iVar13 = piVar8[0x132]; - } - else { - if (sVar3 == 8) { - iVar13 = piVar8[0x132]; - } - else { - if (sVar3 == 9) { - iVar13 = piVar8[0x132]; + if (iVar13 == 0) { + iVar13 = piVar9[0x132]; } else { - *(word *)(iVar11 + DAT_8007a140 + 0x334) = (&WORD_8004017c)[(int)sVar3 * 0xc]; - iVar13 = *(int *)(DAT_8007a140 + iVar11 + 0x4c8); + sVar3 = *(short *)(iVar11 + DAT_8007a140 + 0x336); + if (sVar3 == 7) { + iVar13 = piVar9[0x132]; + } + else { + if (sVar3 == 8) { + iVar13 = piVar9[0x132]; + } + else { + if (sVar3 == 9) { + iVar13 = piVar9[0x132]; + } + else { + *(word *)(iVar11 + DAT_8007a140 + 0x334) = + (&WORD_8004017c)[(int)sVar3 * 0xc]; + iVar13 = *(int *)(DAT_8007a140 + iVar11 + 0x4c8); + } + } + } } - } - } - } - if ((((iVar13 != 0) && (sVar3 = *(short *)(iVar11 + DAT_8007a140 + 0x4ce), sVar3 != 7)) && - (sVar3 != 8)) && (sVar3 != 9)) { - *(word *)(iVar11 + DAT_8007a140 + 0x4cc) = (&WORD_8004017c)[(int)sVar3 * 0xc]; - } - iVar11 += 0x660; - } while (iVar11 != 0x1fe0); - } - return; + if ((((iVar13 != 0) && (sVar3 = *(short *)(iVar11 + DAT_8007a140 + 0x4ce), sVar3 != 7)) + && (sVar3 != 8)) && (sVar3 != 9)) { + *(word *)(iVar11 + DAT_8007a140 + 0x4cc) = (&WORD_8004017c)[(int)sVar3 * 0xc]; + } + iVar11 += 0x660; + } while (iVar11 != 0x1fe0); + } + return; } @@ -112585,9 +111526,9 @@ LAB_7f09c500: void proc_7F09C7AC(void) { - DAT_80040170 = 6; - DAT_80040174 = 6; - return; + DAT_80040170 = 6; + DAT_80040174 = 6; + return; } @@ -112595,69 +111536,68 @@ void proc_7F09C7AC(void) void proc_7F09C7C4(float *param_1,float *param_2,float *param_3) { - int iVar1; - int *piVar2; - int iVar3; - float fVar4; - float fVar5; - float fVar6; - float __x; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - - __x = flt_800576B8; - if (DAT_80040170 == 0) { - video_related_9(0.00000000); - } - else { - fVar4 = cosf(flt_800576B8); - fVar5 = sinf(__x); - fVar9 = *param_2; - fVar10 = param_2[2]; - fVar6 = sinf(__x); - __x = cosf(__x); - fVar13 = param_2[2]; - fVar11 = *param_2; - fVar14 = 0.00000000; - iVar3 = 0; - piVar2 = DAT_8007a144; - do { - iVar1 = *piVar2; - if (iVar1 != 0) { - fVar7 = *(float *)(iVar1 + 8) - *param_1; - fVar8 = *(float *)(iVar1 + 0xc) - param_1[1]; - fVar12 = *(float *)(iVar1 + 0x10) - param_1[2]; - fVar7 = sqrtf(fVar7 * fVar7 + fVar8 * fVar8 + fVar12 * fVar12); - piVar2 = (int *)((int)DAT_8007a144 + iVar3); - fVar14 = fVar14 + (*(float *)(&DAT_80040294 + (int)*(char *)(piVar2 + 0xf3) * 0x40) / fVar7) - * 15.00000000; - } - iVar3 += 0x3e0; - piVar2 = piVar2 + 0xf8; - } while (iVar3 != 0x1740); - if (0 < DAT_80040174) { - DAT_80040174 += -1; - fVar14 = fVar14 + 1.00000000; - } - DAT_80040170 -= 1; - if ((DAT_80040170 & 2) == 0) { - param_3[1] = -fVar14; + int iVar1; + int *piVar2; + int iVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + + if (DAT_80040170 == 0) { + video_related_9(0.00000000); } else { - param_3[1] = fVar14; - fVar14 = -fVar14; + fVar4 = cosf(0.80000001); + fVar5 = sinf(0.80000001); + fVar10 = *param_2; + fVar11 = param_2[2]; + fVar6 = sinf(0.80000001); + fVar7 = cosf(0.80000001); + fVar14 = param_2[2]; + fVar12 = *param_2; + fVar15 = 0.00000000; + iVar3 = 0; + piVar2 = DAT_8007a144; + do { + iVar1 = *piVar2; + if (iVar1 != 0) { + fVar8 = *(float *)(iVar1 + 8) - *param_1; + fVar9 = *(float *)(iVar1 + 0xc) - param_1[1]; + fVar13 = *(float *)(iVar1 + 0x10) - param_1[2]; + fVar8 = sqrtf(fVar8 * fVar8 + fVar9 * fVar9 + fVar13 * fVar13); + piVar2 = (int *)((int)DAT_8007a144 + iVar3); + fVar15 = fVar15 + (*(float *)(&DAT_80040294 + (int)*(char *)(piVar2 + 0xf3) * 0x40) + / fVar8) * 15.00000000; + } + iVar3 += 0x3e0; + piVar2 = piVar2 + 0xf8; + } while (iVar3 != 0x1740); + if (0 < DAT_80040174) { + DAT_80040174 += -1; + fVar15 = fVar15 + 1.00000000; + } + DAT_80040170 -= 1; + if ((DAT_80040170 & 2) == 0) { + param_3[1] = -fVar15; + } + else { + param_3[1] = fVar15; + fVar15 = -fVar15; + } + *param_3 = fVar15 * (fVar4 * fVar10 - fVar11 * fVar5); + param_3[2] = fVar15 * (fVar14 * fVar7 + fVar6 * fVar12); + video_related_9((float)DAT_80040170 * fVar15); } - *param_3 = fVar14 * (fVar4 * fVar9 - fVar10 * fVar5); - param_3[2] = fVar14 * (fVar13 * __x + fVar6 * fVar11); - video_related_9((float)DAT_80040170 * fVar14); - } - return; + return; } @@ -112665,171 +111605,224 @@ void proc_7F09C7C4(float *param_1,float *param_2,float *param_3) void proc_7F09C9D8(char *param_1,float param_2,float param_3) { - char cVar1; - short sVar2; - int iVar3; - uint uVar4; - longlong lVar5; - u32 playernum; - float in_a1_lo; - float in_a2_lo; - int iVar6; - int iVar7; - char *pcVar8; - short *psVar9; - float extraout_f12; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - uint auStack32 [8]; - - iVar3 = *(int *)(param_1 + 4); - iVar7 = (int)*(char *)(iVar3 + 0x3cc) * 0x40; - if (*(short *)(iVar3 + 0x3c8) < *(short *)(iVar3 + 0x3ca)) { - return; - } - proc_7F03CB8C(param_1,auStack32); - proc_7F03E3FC((int *)auStack32); - lVar5 = (longlong)*ptr_list_object_lookup_indices; - if (-1 < lVar5) { - iVar6 = (int)*ptr_list_object_lookup_indices; - psVar9 = ptr_list_object_lookup_indices; - do { - iVar6 = (iVar6 * 0x10 + (int)lVar5 * -4 + (int)lVar5) * 4; - pcVar8 = pos_data_entry + iVar6; - if (pcVar8 == *(char **)(iVar3 + 4)) { - lVar5 = (longlong)psVar9[1]; - } - else { - if (*(short *)(pos_data_entry + iVar6 + 2) == 0) { - cVar1 = *pcVar8; - if (cVar1 == '\x01') { - iVar6 = *(int *)(pos_data_entry + iVar6 + 4); - } - else { - if ((cVar1 != '\x04') && (cVar1 != '\x02')) { - if ((cVar1 == '\x03') || (cVar1 == '\x06')) { - fVar11 = *(float *)(pos_data_entry + iVar6 + 8) - *(float *)(param_1 + 8); - fVar12 = *(float *)(pos_data_entry + iVar6 + 0x10) - *(float *)(param_1 + 0x10); - if (fVar11 <= in_a1_lo) { - if (-in_a1_lo <= fVar11) { - if (*(float *)(pos_data_entry + iVar6 + 0xc) - *(float *)(param_1 + 0xc) <= - in_a2_lo) { - if (-in_a2_lo <= - *(float *)(pos_data_entry + iVar6 + 0xc) - *(float *)(param_1 + 0xc)) { - if (fVar12 <= in_a1_lo) { - if (-in_a1_lo <= fVar12) { - if (cVar1 == '\x03') { - proc_7F027804(); - lVar5 = (longlong)psVar9[1]; - } - else { - if ((fVar11 != 0.00000000) || (fVar12 != 0.00000000)) { - sqrtf(fVar11 * fVar11 + fVar12 * fVar12); - } - playernum = get_cur_playernum(); - lVar5 = proc_7F09B15C((int)pcVar8); - set_cur_player((int)lVar5); - get_num_players(); - get_intank_flag(); - record_damage_kills(); - set_cur_player(playernum); - lVar5 = (longlong)psVar9[1]; - } - } - else { - lVar5 = (longlong)psVar9[1]; - } - } - else { - lVar5 = (longlong)psVar9[1]; - } - } - else { - lVar5 = (longlong)psVar9[1]; - } - } - else { - lVar5 = (longlong)psVar9[1]; - } - } - else { - lVar5 = (longlong)psVar9[1]; - } - } - else { - lVar5 = (longlong)psVar9[1]; - } - } - else { - lVar5 = (longlong)psVar9[1]; - } - goto LAB_7f09ce88; - } - iVar6 = *(int *)(pos_data_entry + iVar6 + 4); - } - fVar10 = *(float *)(iVar6 + 0x58) - *(float *)(param_1 + 8); - fVar11 = *(float *)(iVar6 + 0x5c) - *(float *)(param_1 + 0xc); - fVar12 = *(float *)(iVar6 + 0x60) - *(float *)(param_1 + 0x10); - if (((((fVar10 <= in_a1_lo) && (-in_a1_lo <= fVar10)) && (fVar11 <= in_a2_lo)) && - ((-in_a2_lo <= fVar11 && (fVar12 <= in_a1_lo)))) && (-in_a1_lo <= fVar12)) { - fVar10 = fVar10 / in_a1_lo; - fVar13 = *(float *)(&DAT_800402c0 + iVar7); - fVar11 = fVar11 / in_a2_lo; - fVar12 = fVar12 / in_a1_lo; - if (fVar10 < 0.00000000) { - fVar10 = -fVar10; - } - if (fVar11 < 0.00000000) { - fVar11 = -fVar11; - } - fVar11 = 1.00000000 - fVar11; - if (fVar12 < 0.00000000) { - fVar12 = -fVar12; - } - fVar12 = 1.00000000 - fVar12; - if (1.00000000 - fVar10 <= fVar11) { - fVar11 = 1.00000000 - fVar10; - } - if (fVar12 < fVar11) { - uVar4 = *(uint *)(iVar6 + 100); + char cVar1; + short sVar2; + int iVar3; + uint uVar4; + longlong lVar5; + u32 uVar6; + PLAYER_ID playernum; + PLAYER_ID playernum_00; + s32 sVar7; + f32 arg2; + float in_a1_lo; + s32 arg3; + float in_a2_lo; + int iVar8; + int iVar9; + char *position_data_pointer; + short *psVar10; + float extraout_f12; + float fVar11; + float fVar12; + f32 arg0; + float fVar13; + f32 arg1; + f32 arg4; + float fVar14; + uint auStack32 [8]; + + iVar3 = *(int *)(param_1 + 4); + iVar9 = (int)*(char *)(iVar3 + 0x3cc) * 0x40; + if (*(short *)(iVar3 + 0x3c8) < *(short *)(iVar3 + 0x3ca)) { + return; + } + proc_7F03CB8C(param_1,auStack32); + proc_7F03E3FC((int *)auStack32); + lVar5 = (longlong)*ptr_list_object_lookup_indices; + if (-1 < lVar5) { + iVar8 = (int)*ptr_list_object_lookup_indices; + psVar10 = ptr_list_object_lookup_indices; + do { + iVar8 = (iVar8 * 0x10 + (int)lVar5 * -4 + (int)lVar5) * 4; + position_data_pointer = pos_data_entry + iVar8; + if (position_data_pointer == *(char **)(iVar3 + 4)) { + lVar5 = (longlong)psVar10[1]; } else { - uVar4 = *(uint *)(iVar6 + 100); - fVar12 = fVar11; + if (*(short *)(pos_data_entry + iVar8 + 2) == 0) { + cVar1 = *position_data_pointer; + if (cVar1 == '\x01') { + iVar8 = *(int *)(pos_data_entry + iVar8 + 4); + } + else { + if ((cVar1 != '\x04') && (cVar1 != '\x02')) { + if ((cVar1 == '\x03') || (cVar1 == '\x06')) { + arg1 = (f32)(*(float *)(pos_data_entry + iVar8 + 8) - + *(float *)(param_1 + 8)); + fVar12 = *(float *)(pos_data_entry + iVar8 + 0xc) - + *(float *)(param_1 + 0xc); + arg4 = (f32)(*(float *)(pos_data_entry + iVar8 + 0x10) - + *(float *)(param_1 + 0x10)); + if ((float)arg1 <= in_a1_lo) { + if (-in_a1_lo <= (float)arg1) { + if (fVar12 <= in_a2_lo) { + if (-in_a2_lo <= fVar12) { + if ((float)arg4 <= in_a1_lo) { + if (-in_a1_lo <= (float)arg4) { + fVar11 = (float)arg1 / in_a1_lo; + fVar12 = fVar12 / in_a2_lo; + fVar13 = (float)arg4 / in_a1_lo; + if (fVar11 < 0.00000000) { + fVar11 = -fVar11; + } + if (fVar12 < 0.00000000) { + fVar12 = -fVar12; + } + fVar12 = 1.00000000 - fVar12; + if (fVar13 < 0.00000000) { + fVar13 = -fVar13; + } + fVar13 = 1.00000000 - fVar13; + if (1.00000000 - fVar11 <= fVar12) { + fVar12 = 1.00000000 - fVar11; + } + if (fVar12 <= fVar13) { + fVar13 = fVar12; + } + arg0 = (f32)(fVar13 * fVar13 * + *(float *)(&DAT_800402c0 + iVar9 + )); + if (cVar1 == '\x03') { + proc_7F027804(); + lVar5 = (longlong)psVar10[1]; + } + else { + if (((float)arg1 != 0.00000000) || + ((float)arg4 != 0.00000000)) { + fVar12 = sqrtf((float)arg1 * + (float)arg1 + + (float)arg4 * + (float)arg4); + arg1 = (f32)((float)arg1 * + (1.00000000 / fVar12)); + arg4 = (f32)((float)arg4 * + (1.00000000 / fVar12)); + } + playernum = get_cur_playernum(); + playernum_00 = playernum; + proc_7F09B15C((int)position_data_pointer + ); + set_cur_player(playernum_00); + sVar7 = get_num_players(); + if (sVar7 == 1) { + arg0 = (f32)((float)arg0 * + (float)dword_80040178); + } + iVar8 = get_intank_flag(); + if (iVar8 == 1) { + arg0 = (f32)((float)arg0 + + (float)arg0); + } + record_damage_kills(arg0,arg1,arg2,arg3, + arg4); + set_cur_player(playernum); + lVar5 = (longlong)psVar10[1]; + } + } + else { + lVar5 = (longlong)psVar10[1]; + } + } + else { + lVar5 = (longlong)psVar10[1]; + } + } + else { + lVar5 = (longlong)psVar10[1]; + } + } + else { + lVar5 = (longlong)psVar10[1]; + } + } + else { + lVar5 = (longlong)psVar10[1]; + } + } + else { + lVar5 = (longlong)psVar10[1]; + } + } + else { + lVar5 = (longlong)psVar10[1]; + } + goto LAB_7f09ce88; + } + iVar8 = *(int *)(pos_data_entry + iVar8 + 4); + } + fVar11 = *(float *)(iVar8 + 0x58) - *(float *)(param_1 + 8); + fVar12 = *(float *)(iVar8 + 0x5c) - *(float *)(param_1 + 0xc); + fVar13 = *(float *)(iVar8 + 0x60) - *(float *)(param_1 + 0x10); + if (((((fVar11 <= in_a1_lo) && (-in_a1_lo <= fVar11)) && (fVar12 <= in_a2_lo)) + && ((-in_a2_lo <= fVar12 && (fVar13 <= in_a1_lo)))) && (-in_a1_lo <= fVar13) + ) { + fVar11 = fVar11 / in_a1_lo; + fVar14 = *(float *)(&DAT_800402c0 + iVar9); + fVar12 = fVar12 / in_a2_lo; + fVar13 = fVar13 / in_a1_lo; + if (fVar11 < 0.00000000) { + fVar11 = -fVar11; + } + if (fVar12 < 0.00000000) { + fVar12 = -fVar12; + } + fVar12 = 1.00000000 - fVar12; + if (fVar13 < 0.00000000) { + fVar13 = -fVar13; + } + fVar13 = 1.00000000 - fVar13; + if (1.00000000 - fVar11 <= fVar12) { + fVar12 = 1.00000000 - fVar11; + } + if (fVar13 < fVar12) { + uVar4 = *(uint *)(iVar8 + 100); + } + else { + uVar4 = *(uint *)(iVar8 + 100); + fVar13 = fVar12; + } + if (((uVar4 & 0x1000) == 0) && ((*(uint *)(iVar8 + 0xc) & 0x200400) == 0)) { + uVar6 = get_random_value(); + fVar12 = (float)uVar6; + if ((int)uVar6 < 0) { + fVar12 = fVar12 + 4294967296.00000000; + } + proc_7F04DEFC((int)position_data_pointer,extraout_f12, + (longlong) + (int)((fVar12 * 0.00000000 * 0.50000000 + 1.00000000) * + fVar13 * fVar14),(longlong)(iVar8 + 0x58),0x1d); + } + } + lVar5 = (longlong)psVar10[1]; + } + else { + lVar5 = (longlong)psVar10[1]; + } } - if (((uVar4 & 0x1000) == 0) && ((*(uint *)(iVar6 + 0xc) & 0x200400) == 0)) { - playernum = get_random_value(); - fVar11 = (float)playernum; - if ((int)playernum < 0) { - fVar11 = fVar11 + 4294967296.00000000; - } - proc_7F04DEFC((int)pcVar8,extraout_f12, - (longlong) - (int)((fVar11 * 0.00000000 * 0.50000000 + 1.00000000) * fVar12 * fVar13) - ,(longlong)(iVar6 + 0x58),0x1d); - } - } - lVar5 = (longlong)psVar9[1]; - } - else { - lVar5 = (longlong)psVar9[1]; - } - } LAB_7f09ce88: - psVar9 = psVar9 + 1; - if (lVar5 < 0) goto code_r0x7f09ce94; - iVar6 = (int)lVar5; - } while( true ); - } - sVar2 = *(short *)(&DAT_800402a0 + iVar7); + psVar10 = psVar10 + 1; + if (lVar5 < 0) goto code_r0x7f09ce94; + iVar8 = (int)lVar5; + } while( true ); + } + sVar2 = *(short *)(&DAT_800402a0 + iVar9); LAB_7f09ce98: - *(short *)(iVar3 + 0x3ca) = *(short *)(iVar3 + 0x3c8) + (sVar2 >> 2); - return; + *(short *)(iVar3 + 0x3ca) = *(short *)(iVar3 + 0x3c8) + (sVar2 >> 2); + return; code_r0x7f09ce94: - sVar2 = *(short *)(&DAT_800402a0 + iVar7); - goto LAB_7f09ce98; + sVar2 = *(short *)(&DAT_800402a0 + iVar9); + goto LAB_7f09ce98; } @@ -112837,242 +111830,248 @@ code_r0x7f09ce94: undefined8 proc_7F09CEE8(char *param_1) { - byte bVar1; - short sVar2; - short sVar3; - undefined4 *puVar4; - char *pcVar5; - undefined8 uVar6; - u32 uVar7; - int iVar8; - longlong lVar9; - undefined4 uVar10; - longlong lVar11; - int iVar12; - undefined4 *puVar13; - int iVar14; - float fVar15; - int iVar16; - float in_f12; - float __x; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f14; - float fVar17; - float fVar18; - float fVar19; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack48; - int iStack44; - float fStack40; - - puVar4 = *(undefined4 **)(param_1 + 4); - iVar12 = (int)*(char *)(puVar4 + 0xf3) * 0x40; - if (clock_timer == 0) { - uVar6 = 0; - } - else { - if (clock_timer < 0xf) { - fStack40 = (float)clock_timer; + byte bVar1; + short sVar2; + short sVar3; + undefined4 *puVar4; + char *pcVar5; + undefined8 uVar6; + u32 uVar7; + int iVar8; + longlong lVar9; + undefined4 uVar10; + longlong lVar11; + int iVar12; + undefined4 *puVar13; + int iVar14; + float fVar15; + int iVar16; + float in_f12; + float __x; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f14; + float fVar17; + float fVar18; + float fVar19; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack48; + int iStack44; + float fStack40; + + puVar4 = *(undefined4 **)(param_1 + 4); + iVar12 = (int)*(char *)(puVar4 + 0xf3) * 0x40; + if (clock_timer == 0) { + uVar6 = 0; } else { - fStack40 = 15.00000000; - } - lVar9 = (longlong)*(short *)(puVar4 + 0xf2); - if (7 < lVar9) { - sVar2 = *(short *)(&DAT_800402a0 + iVar12); - iVar14 = (int)sVar2; - if (lVar9 < (longlong)sVar2) { - fVar15 = (float)(int)*(short *)(puVar4 + 0xf2); - fVar18 = *(float *)(&DAT_80040284 + iVar12) + *(float *)(&DAT_8004028c + iVar12) * fVar15; - fVar19 = *(float *)(&DAT_80040288 + iVar12) + *(float *)(&DAT_80040290 + iVar12) * fVar15; - if (*(char *)(puVar4 + 0xf3) == '\x0e') { - if (lVar9 < 0x20) { - *(float *)(param_1 + 0xc) = *(float *)(param_1 + 0xc) + fStack40 * 10.00000000; - lVar9 = (longlong)*(short *)(puVar4 + 0xf2); - sVar2 = *(short *)(&DAT_800402a0 + iVar12); - fVar15 = (float)(int)*(short *)(puVar4 + 0xf2); - } - iVar14 = (int)sVar2; - if (0x20 < lVar9) { - fVar19 = 20.00000000; - fVar18 = fVar15 * 3.00000000 + 40.00000000; - if (300.00000000 < fVar18) { - fVar18 = 300.00000000; - } - } - } - iVar16 = 0; - iStack44 = (int)(((float)(int)*(short *)(&DAT_800402a2 + iVar12) * fVar15) / (float)iVar14) - + 1; - if (0 < iStack44) { - do { - iVar14 = 0; - puVar13 = puVar4; - do { - iVar14 += 0x18; - if (*(short *)(puVar13 + 7) == 0) { - *(undefined2 *)(puVar13 + 7) = 1; - uVar7 = get_random_value(); - fVar15 = (float)uVar7; - if ((int)uVar7 < 0) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(float *)(puVar13 + 2) = - (fVar15 * 0.00000000 - 0.50000000) * fVar18 + *(float *)(param_1 + 8); - uVar7 = get_random_value(); - fVar15 = (float)uVar7; - if ((int)uVar7 < 0) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(float *)(puVar13 + 3) = - (fVar15 * 0.00000000 - 0.50000000) * fVar19 + *(float *)(param_1 + 0xc); - uVar7 = get_random_value(); - fVar15 = (float)uVar7; - if ((int)uVar7 < 0) { - fVar15 = fVar15 + 4294967296.00000000; - } - *(float *)(puVar13 + 4) = - (fVar15 * 0.00000000 - 0.50000000) * fVar18 + *(float *)(param_1 + 0x10); - uVar7 = get_random_value(); - fVar15 = (float)uVar7; - if ((int)uVar7 < 0) { - fVar15 = fVar15 + 4294967296.00000000; - } - fVar17 = (fVar15 * 0.00000000 * 0.50000000 + 1.00000000) * - *(float *)(&DAT_80040294 + iVar12); - uVar7 = get_random_value(); - fVar15 = (float)uVar7; - if ((int)uVar7 < 0) { - fVar15 = fVar15 + 4294967296.00000000; - } - __x = fVar15 * 0.00000000 * flt_800576BC; - fVar15 = cosf(__x); - *(float *)(puVar13 + 5) = fVar15 * fVar17; - fVar15 = sinf(__x); - *(float *)(puVar13 + 6) = fVar15 * fVar17; - in_f12 = extraout_f12; - break; - } - puVar13 = puVar13 + 6; - } while (iVar14 != 0x3c0); - iVar16 += 1; - } while (iVar16 != iStack44); - } - fStack60 = fVar18 * 0.50000000 + *(float *)(&DAT_80040294 + iVar12) * 1.50000000; - fStack56 = *(float *)(param_1 + 8) - fStack60; - fStack64 = fVar19 * 0.50000000 + *(float *)(&DAT_80040294 + iVar12) * 1.50000000; - fStack52 = *(float *)(param_1 + 0xc) - fStack64; - fStack48 = *(float *)(param_1 + 0x10) - fStack60; - fStack68 = *(float *)(param_1 + 8) + fStack60; - fStack64 = *(float *)(param_1 + 0xc) + fStack64; - fStack60 = *(float *)(param_1 + 0x10) + fStack60; - proc_7F03E27C(param_1,&fStack56,&fStack68,in_f12); - proc_7F09C9D8(param_1,extraout_f12_00,extraout_f14); - lVar9 = (longlong)*(short *)(puVar4 + 0xf2); - in_f12 = extraout_f12_01; - } - } - iVar16 = (int)fStack40; - iVar14 = 0; - if (0 < iVar16) { - uVar10 = (undefined4)lVar9; - do { - *(short *)(puVar4 + 0xf2) = (short)uVar10 + 1; - iVar8 = 0; - puVar13 = puVar4; - do { - iVar8 += 0x18; - if (0 < *(short *)(puVar13 + 7)) { - *(short *)(puVar13 + 7) = *(short *)(puVar13 + 7) + 1; - } - puVar13 = puVar13 + 6; - } while (iVar8 != 0x3c0); - lVar9 = (longlong)*(short *)(puVar4 + 0xf2); - if (lVar9 == 0xf) { - if (*(char *)(puVar4 + 0xf3) != '\x0e') { - sVar2 = *(short *)(&DAT_800402a0 + iVar12); - goto LAB_7f09d360; - } - pcVar5 = (char *)puVar4[1]; -LAB_7f09d37c: - if (pcVar5 == NULL) { - bVar1 = param_1[1]; -LAB_7f09d400: - proc_7F09E700((undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 0x14), - (ushort)(byte)(&DAT_800402bc)[iVar12],param_1 + 0x2c, - (uint)((bVar1 & 8) != 0)); - sVar2 = *(short *)(puVar4 + 0xf2); - sVar3 = *(short *)(&DAT_800402a0 + iVar12); - in_f12 = extraout_f12_04; - } - else { - iVar8 = *(int *)(pcVar5 + 0x14); - if (iVar8 == 0) { - bVar1 = param_1[1]; - goto LAB_7f09d400; - } - if (*pcVar5 == '\x01') { - proc_7F09E700((undefined4 *)(*(int *)(pcVar5 + 4) + 0x58),iVar8, - (ushort)(byte)(&DAT_800402bc)[iVar12],pcVar5 + 0x2c, - (uint)((param_1[1] & 8U) != 0)); - sVar2 = *(short *)(puVar4 + 0xf2); - in_f12 = extraout_f12_02; - } - else { - proc_7F09E700((undefined4 *)(pcVar5 + 8),iVar8,(ushort)(byte)(&DAT_800402bc)[iVar12], - pcVar5 + 0x2c,(uint)((param_1[1] & 8U) != 0)); - sVar2 = *(short *)(puVar4 + 0xf2); - in_f12 = extraout_f12_03; - } - sVar3 = *(short *)(&DAT_800402a0 + iVar12); - } - lVar9 = (longlong)sVar2; - lVar11 = (longlong)((int)sVar3 >> 1); + if (clock_timer < 0xf) { + fStack40 = (float)clock_timer; } else { - sVar2 = *(short *)(&DAT_800402a0 + iVar12); -LAB_7f09d360: - if ((longlong)sVar2 == (longlong)((int)*(short *)(puVar4 + 0xf2) + 0x14)) { - if (*(char *)(puVar4 + 0xf3) != '\x0e') { - pcVar5 = (char *)puVar4[1]; - goto LAB_7f09d37c; + fStack40 = 15.00000000; + } + lVar9 = (longlong)*(short *)(puVar4 + 0xf2); + if (7 < lVar9) { + sVar2 = *(short *)(&DAT_800402a0 + iVar12); + iVar14 = (int)sVar2; + if (lVar9 < sVar2) { + fVar15 = (float)(int)*(short *)(puVar4 + 0xf2); + fVar18 = *(float *)(&DAT_80040284 + iVar12) + + *(float *)(&DAT_8004028c + iVar12) * fVar15; + fVar19 = *(float *)(&DAT_80040288 + iVar12) + + *(float *)(&DAT_80040290 + iVar12) * fVar15; + if (*(char *)(puVar4 + 0xf3) == '\x0e') { + if (lVar9 < 0x20) { + *(float *)(param_1 + 0xc) = + *(float *)(param_1 + 0xc) + fStack40 * 10.00000000; + lVar9 = (longlong)*(short *)(puVar4 + 0xf2); + sVar2 = *(short *)(&DAT_800402a0 + iVar12); + fVar15 = (float)(int)*(short *)(puVar4 + 0xf2); + } + iVar14 = (int)sVar2; + if (0x20 < lVar9) { + fVar19 = 20.00000000; + fVar18 = fVar15 * 3.00000000 + 40.00000000; + if (300.00000000 < fVar18) { + fVar18 = 300.00000000; + } + } + } + iVar16 = 0; + iStack44 = (int)(((float)(int)*(short *)(&DAT_800402a2 + iVar12) * fVar15) / + (float)iVar14) + 1; + if (0 < iStack44) { + do { + iVar14 = 0; + puVar13 = puVar4; + do { + iVar14 += 0x18; + if (*(short *)(puVar13 + 7) == 0) { + *(undefined2 *)(puVar13 + 7) = 1; + uVar7 = get_random_value(); + fVar15 = (float)uVar7; + if ((int)uVar7 < 0) { + fVar15 = fVar15 + 4294967296.00000000; + } + *(float *)(puVar13 + 2) = + (fVar15 * 0.00000000 - 0.50000000) * fVar18 + + *(float *)(param_1 + 8); + uVar7 = get_random_value(); + fVar15 = (float)uVar7; + if ((int)uVar7 < 0) { + fVar15 = fVar15 + 4294967296.00000000; + } + *(float *)(puVar13 + 3) = + (fVar15 * 0.00000000 - 0.50000000) * fVar19 + + *(float *)(param_1 + 0xc); + uVar7 = get_random_value(); + fVar15 = (float)uVar7; + if ((int)uVar7 < 0) { + fVar15 = fVar15 + 4294967296.00000000; + } + *(float *)(puVar13 + 4) = + (fVar15 * 0.00000000 - 0.50000000) * fVar18 + + *(float *)(param_1 + 0x10); + uVar7 = get_random_value(); + fVar15 = (float)uVar7; + if ((int)uVar7 < 0) { + fVar15 = fVar15 + 4294967296.00000000; + } + fVar17 = (fVar15 * 0.00000000 * 0.50000000 + 1.00000000) * + *(float *)(&DAT_80040294 + iVar12); + uVar7 = get_random_value(); + fVar15 = (float)uVar7; + if ((int)uVar7 < 0) { + fVar15 = fVar15 + 4294967296.00000000; + } + __x = fVar15 * 0.00000000 * flt_800576BC; + fVar15 = cosf(__x); + *(float *)(puVar13 + 5) = fVar15 * fVar17; + fVar15 = sinf(__x); + *(float *)(puVar13 + 6) = fVar15 * fVar17; + in_f12 = extraout_f12; + break; + } + puVar13 = puVar13 + 6; + } while (iVar14 != 0x3c0); + iVar16 += 1; + } while (iVar16 != iStack44); + } + fStack60 = fVar18 * 0.50000000 + *(float *)(&DAT_80040294 + iVar12) * 1.50000000; + fStack56 = *(float *)(param_1 + 8) - fStack60; + fStack64 = fVar19 * 0.50000000 + *(float *)(&DAT_80040294 + iVar12) * 1.50000000; + fStack52 = *(float *)(param_1 + 0xc) - fStack64; + fStack48 = *(float *)(param_1 + 0x10) - fStack60; + fStack68 = *(float *)(param_1 + 8) + fStack60; + fStack64 = *(float *)(param_1 + 0xc) + fStack64; + fStack60 = *(float *)(param_1 + 0x10) + fStack60; + proc_7F03E27C(param_1,&fStack56,&fStack68,in_f12); + proc_7F09C9D8(param_1,extraout_f12_00,extraout_f14); + lVar9 = (longlong)*(short *)(puVar4 + 0xf2); + in_f12 = extraout_f12_01; } - lVar11 = (longlong)((int)sVar2 >> 1); - } - else { - lVar11 = (longlong)((int)sVar2 >> 1); - } } - if ((lVar11 == lVar9) && (*(char *)((int)puVar4 + 0x3cd) != '\0')) { - proc_7F0A027C((float *)(puVar4 + 0xf4),in_f12, - SUB42(*(float *)(&DAT_80040294 + iVar12) * 4.00000000,0)); - lVar9 = (longlong)*(short *)(puVar4 + 0xf2); - in_f12 = extraout_f12_05; + iVar16 = (int)fStack40; + iVar14 = 0; + if (0 < iVar16) { + uVar10 = (undefined4)lVar9; + do { + *(short *)(puVar4 + 0xf2) = (short)uVar10 + 1; + iVar8 = 0; + puVar13 = puVar4; + do { + iVar8 += 0x18; + if (0 < *(short *)(puVar13 + 7)) { + *(short *)(puVar13 + 7) = *(short *)(puVar13 + 7) + 1; + } + puVar13 = puVar13 + 6; + } while (iVar8 != 0x3c0); + lVar9 = (longlong)*(short *)(puVar4 + 0xf2); + if (lVar9 == 0xf) { + if (*(char *)(puVar4 + 0xf3) != '\x0e') { + sVar2 = *(short *)(&DAT_800402a0 + iVar12); + goto LAB_7f09d360; + } + pcVar5 = (char *)puVar4[1]; +LAB_7f09d37c: + if (pcVar5 == NULL) { + bVar1 = param_1[1]; +LAB_7f09d400: + proc_7F09E700((undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 0x14), + (ushort)(byte)(&DAT_800402bc)[iVar12],param_1 + 0x2c, + (uint)((bVar1 & 8) != 0)); + sVar2 = *(short *)(puVar4 + 0xf2); + sVar3 = *(short *)(&DAT_800402a0 + iVar12); + in_f12 = extraout_f12_04; + } + else { + iVar8 = *(int *)(pcVar5 + 0x14); + if (iVar8 == 0) { + bVar1 = param_1[1]; + goto LAB_7f09d400; + } + if (*pcVar5 == '\x01') { + proc_7F09E700((undefined4 *)(*(int *)(pcVar5 + 4) + 0x58),iVar8, + (ushort)(byte)(&DAT_800402bc)[iVar12],pcVar5 + 0x2c, + (uint)((param_1[1] & 8U) != 0)); + sVar2 = *(short *)(puVar4 + 0xf2); + in_f12 = extraout_f12_02; + } + else { + proc_7F09E700((undefined4 *)(pcVar5 + 8),iVar8, + (ushort)(byte)(&DAT_800402bc)[iVar12],pcVar5 + 0x2c, + (uint)((param_1[1] & 8U) != 0)); + sVar2 = *(short *)(puVar4 + 0xf2); + in_f12 = extraout_f12_03; + } + sVar3 = *(short *)(&DAT_800402a0 + iVar12); + } + lVar9 = (longlong)sVar2; + lVar11 = (longlong)((int)sVar3 >> 1); + } + else { + sVar2 = *(short *)(&DAT_800402a0 + iVar12); +LAB_7f09d360: + if ((longlong)sVar2 == (longlong)((int)*(short *)(puVar4 + 0xf2) + 0x14)) { + if (*(char *)(puVar4 + 0xf3) != '\x0e') { + pcVar5 = (char *)puVar4[1]; + goto LAB_7f09d37c; + } + lVar11 = (longlong)((int)sVar2 >> 1); + } + else { + lVar11 = (longlong)((int)sVar2 >> 1); + } + } + if ((lVar11 == lVar9) && (*(char *)((int)puVar4 + 0x3cd) != '\0')) { + proc_7F0A027C((float *)(puVar4 + 0xf4),in_f12, + SUB42(*(float *)(&DAT_80040294 + iVar12) * 4.00000000,0)); + lVar9 = (longlong)*(short *)(puVar4 + 0xf2); + in_f12 = extraout_f12_05; + } + iVar14 += 1; + if (iVar14 == iVar16) break; + uVar10 = (undefined4)lVar9; + } while( true ); + } + uVar6 = 0; + if ((int)*(short *)(&DAT_800402a0 + iVar12) + + (int)(*(float *)(&DAT_800402a4 + iVar12) * 16.00000000) <= lVar9) { + *puVar4 = 0; + uVar6 = 1; } - iVar14 += 1; - if (iVar14 == iVar16) break; - uVar10 = (undefined4)lVar9; - } while( true ); } - uVar6 = 0; - if ((longlong) - ((int)*(short *)(&DAT_800402a0 + iVar12) + - (int)(*(float *)(&DAT_800402a4 + iVar12) * 16.00000000)) <= lVar9) { - *puVar4 = 0; - uVar6 = 1; - } - } - return uVar6; + return uVar6; } @@ -113080,23 +112079,23 @@ LAB_7f09d360: undefined8 proc_7F09D4EC(int param_1) { - int iVar1; - float fVar2; - - iVar1 = proc_7F0783C4(); - *(float *)(param_1 + 0x18) = - -(*(float *)(iVar1 + 0x38) + - *(float *)(iVar1 + 8) * *(float *)(param_1 + 8) + - *(float *)(iVar1 + 0x18) * *(float *)(param_1 + 0xc) + - *(float *)(iVar1 + 0x28) * *(float *)(param_1 + 0x10)); - fVar2 = *(float *)(param_1 + 0x18); - if (fVar2 < 100.00000000) { - *(float *)(param_1 + 0x18) = fVar2 * 0.50000000; - } - else { - *(float *)(param_1 + 0x18) = fVar2 - 100.00000000; - } - return 0; + int iVar1; + float fVar2; + + iVar1 = get_BONDdata_field_10CC(); + *(float *)(param_1 + 0x18) = + -(*(float *)(iVar1 + 0x38) + + *(float *)(iVar1 + 8) * *(float *)(param_1 + 8) + + *(float *)(iVar1 + 0x18) * *(float *)(param_1 + 0xc) + + *(float *)(iVar1 + 0x28) * *(float *)(param_1 + 0x10)); + fVar2 = *(float *)(param_1 + 0x18); + if (fVar2 < 100.00000000) { + *(float *)(param_1 + 0x18) = fVar2 * 0.50000000; + } + else { + *(float *)(param_1 + 0x18) = fVar2 - 100.00000000; + } + return 0; } @@ -113104,104 +112103,106 @@ undefined8 proc_7F09D4EC(int param_1) longlong proc_7F09D5A0(char *param_1,longlong param_2,longlong param_3) { - byte bVar1; - short sVar2; - float *pfVar4; - longlong lVar3; - uint *puVar5; - void *virtualAddress; - u32 uVar6; - undefined4 *puVar7; - undefined4 *puVar8; - int iVar9; - int iVar10; - int iVar11; - int iVar12; - float extraout_f12; - float extraout_f14; - float fStack32; - float fStack28; - - bVar1 = param_1[0x2c]; - iVar10 = *(int *)(param_1 + 4); - pfVar4 = (float *)proc_7F0BCA14((uint)bVar1); - if (param_3 != 0) { - lVar3 = proc_7F054A64(param_1,&fStack32); - if (lVar3 < 1) { - puVar5 = proc_7F0B4FB4((uint *)param_2); - } - else { - puVar5 = proc_7F0B4FF4((uint *)param_2,extraout_f12,extraout_f14,fStack32,fStack28); - } - *puVar5 = 0xb6000000; - puVar5[1] = 0x13000; - puVar5[2] = 0x1030040; - virtualAddress = (void *)proc_7F078394(); - uVar6 = osVirtualToPhysical(virtualAddress); - puVar5[3] = uVar6; - puVar7 = proc_7F0BC9C4(puVar5 + 4,(uint)bVar1); - *puVar7 = 0xbc000806; - puVar8 = puVar7 + 2; - uVar6 = osVirtualToPhysical(ptr_explosionDL); - puVar7[1] = uVar6; - puVar7 = &DAT_800407fc; - iVar12 = 0xe; - do { - *puVar8 = 0x6000000; - iVar11 = 0; - puVar8[1] = *puVar7; - puVar8 = puVar8 + 2; - iVar9 = iVar10; - do { - if ((0 < *(short *)(iVar9 + 0x1c)) && - (iVar12 == (int)((float)((int)*(short *)(iVar9 + 0x1c) + -1) / - *(float *)(&DAT_800402a4 + (int)*(char *)(iVar10 + 0x3cc) * 0x40)))) { - puVar8 = proc_7F09D82C((float *)(iVar9 + 8),puVar8,pfVar4); + byte bVar1; + short sVar2; + float *pfVar4; + longlong lVar3; + uint *puVar5; + void *virtualAddress; + u32 uVar6; + undefined4 *puVar7; + undefined4 *puVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + float extraout_f12; + float extraout_f14; + float fStack32; + float fStack28; + + bVar1 = param_1[0x2c]; + iVar10 = *(int *)(param_1 + 4); + pfVar4 = (float *)proc_7F0BCA14((uint)bVar1); + if (param_3 != 0) { + lVar3 = proc_7F054A64(param_1,&fStack32); + if (lVar3 < 1) { + puVar5 = proc_7F0B4FB4((uint *)param_2); } - iVar11 += 0x18; - iVar9 += 0x18; - } while (iVar11 < 0x3c0); - iVar12 += -1; - puVar7 = puVar7 + -1; - } while (-1 < iVar12); - *puVar8 = 0x1030040; - param_2 = (longlong)(int)(puVar8 + 2); - virtualAddress = (void *)proc_7F078374(); - uVar6 = osVirtualToPhysical(virtualAddress); - puVar8[1] = uVar6; - iVar12 = 0; - lVar3 = (longlong) - (int)(*(float *)(&DAT_800402a4 + (int)*(char *)(iVar10 + 0x3cc) * 0x40) * 15.00000000); - do { - iVar12 += 0x60; - if (lVar3 < (longlong)*(short *)(iVar10 + 0x1c)) { - *(undefined2 *)(iVar10 + 0x1c) = 0; - sVar2 = *(short *)(iVar10 + 0x34); - } - else { - sVar2 = *(short *)(iVar10 + 0x34); - } - if (lVar3 < (longlong)sVar2) { - *(undefined2 *)(iVar10 + 0x34) = 0; - sVar2 = *(short *)(iVar10 + 0x4c); - } - else { - sVar2 = *(short *)(iVar10 + 0x4c); - } - if (lVar3 < (longlong)sVar2) { - *(undefined2 *)(iVar10 + 0x4c) = 0; - sVar2 = *(short *)(iVar10 + 100); - } - else { - sVar2 = *(short *)(iVar10 + 100); - } - if (lVar3 < (longlong)sVar2) { - *(undefined2 *)(iVar10 + 100) = 0; - } - iVar10 += 0x60; - } while (iVar12 != 0x3c0); - } - return param_2; + else { + puVar5 = proc_7F0B4FF4((uint *)param_2,extraout_f12,extraout_f14,fStack32,fStack28); + } + *puVar5 = 0xb6000000; + puVar5[1] = 0x13000; + puVar5[2] = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10E0(); + uVar6 = osVirtualToPhysical(virtualAddress); + puVar5[3] = uVar6; + puVar7 = proc_7F0BC9C4(puVar5 + 4,(uint)bVar1); + *puVar7 = 0xbc000806; + puVar8 = puVar7 + 2; + uVar6 = osVirtualToPhysical(pGlobalimagetable); + puVar7[1] = uVar6; + puVar7 = &DAT_800407fc; + iVar12 = 0xe; + do { + *puVar8 = 0x6000000; + iVar11 = 0; + puVar8[1] = *puVar7; + puVar8 = puVar8 + 2; + iVar9 = iVar10; + do { + if ((0 < *(short *)(iVar9 + 0x1c)) && + (iVar12 == (int)((float)((int)*(short *)(iVar9 + 0x1c) + -1) / + *(float *)(&DAT_800402a4 + (int)*(char *)(iVar10 + 0x3cc) * 0x40) + ))) { + puVar8 = proc_7F09D82C((float *)(iVar9 + 8),puVar8,pfVar4); + } + iVar11 += 0x18; + iVar9 += 0x18; + } while (iVar11 < 0x3c0); + iVar12 += -1; + puVar7 = puVar7 + -1; + } while (-1 < iVar12); + *puVar8 = 0x1030040; + param_2 = (longlong)(int)(puVar8 + 2); + virtualAddress = (void *)get_BONDdata_field_10D8(); + uVar6 = osVirtualToPhysical(virtualAddress); + puVar8[1] = uVar6; + iVar12 = 0; + lVar3 = (longlong) + (int)(*(float *)(&DAT_800402a4 + (int)*(char *)(iVar10 + 0x3cc) * 0x40) * + 15.00000000); + do { + iVar12 += 0x60; + if (lVar3 < *(short *)(iVar10 + 0x1c)) { + *(undefined2 *)(iVar10 + 0x1c) = 0; + sVar2 = *(short *)(iVar10 + 0x34); + } + else { + sVar2 = *(short *)(iVar10 + 0x34); + } + if (lVar3 < sVar2) { + *(undefined2 *)(iVar10 + 0x34) = 0; + sVar2 = *(short *)(iVar10 + 0x4c); + } + else { + sVar2 = *(short *)(iVar10 + 0x4c); + } + if (lVar3 < sVar2) { + *(undefined2 *)(iVar10 + 0x4c) = 0; + sVar2 = *(short *)(iVar10 + 100); + } + else { + sVar2 = *(short *)(iVar10 + 100); + } + if (lVar3 < sVar2) { + *(undefined2 *)(iVar10 + 100) = 0; + } + iVar10 += 0x60; + } while (iVar12 != 0x3c0); + } + return param_2; } @@ -113209,145 +112210,148 @@ longlong proc_7F09D5A0(char *param_1,longlong param_2,longlong param_3) undefined4 * proc_7F09D82C(float *param_1,undefined4 *param_2,float *param_3) { - float *pfVar1; - xyzpoint *pxVar2; - xyzpoint *virtualAddress; - u32 uVar3; - float fVar4; - f32 fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - float fVar20; - float fVar21; - float fVar22; - - fVar8 = dword_8004090C; - fVar7 = DAT_80040908; - fVar6 = DAT_80040904; - fVar10 = DAT_80040900; - pfVar1 = (float *)proc_7F078444(); - pxVar2 = get_BONDdata_position(); - fVar20 = *param_1 - pxVar2->x; - fVar21 = param_1[1] - pxVar2->y; - fVar22 = param_1[2] - pxVar2->z; - virtualAddress = pxVar2; - fVar4 = sqrtf(fVar20 * fVar20 + fVar21 * fVar21 + fVar22 * fVar22); - fVar11 = 100.00000000; - if (fVar4 * 0.50000000 <= 100.00000000) { - fVar11 = fVar4 * 0.50000000; - } - if (fVar4 == 0.00000000) { - fVar4 = 0.00000000; - fVar11 = param_1[3]; - } - else { - fVar4 = (fVar4 - fVar11) / fVar4; - fVar11 = param_1[3]; - } - fVar11 = fVar11 * fVar4; - fVar19 = param_1[4] * fVar4; - fVar12 = pxVar2->x + fVar20 * fVar4; - fVar20 = pxVar2->y + fVar21 * fVar4; - fVar4 = pxVar2->z + fVar22 * fVar4; - proc_7F0BD6C4(4); - virtualAddress->x = fVar10; - virtualAddress->y = fVar6; - virtualAddress->z = fVar7; - virtualAddress[1].x = fVar8; - virtualAddress[1].y = fVar10; - virtualAddress[1].z = fVar6; - virtualAddress[2].x = fVar7; - virtualAddress[2].y = fVar8; - virtualAddress[2].z = fVar10; - virtualAddress[3].x = fVar6; - virtualAddress[3].y = fVar7; - virtualAddress[3].z = fVar8; - virtualAddress[4].x = fVar10; - virtualAddress[4].y = fVar6; - virtualAddress[4].z = fVar7; - virtualAddress[5].x = fVar8; - virtualAddress[5].y = fVar10; - virtualAddress[5].z = fVar6; - virtualAddress[6].x = fVar7; - virtualAddress[6].y = fVar8; - fVar6 = *pfVar1; - fVar13 = pfVar1[1]; - fVar7 = pfVar1[2]; - fVar14 = *pfVar1; - fVar8 = pfVar1[1]; - fVar15 = pfVar1[2]; - fVar21 = pfVar1[4]; - fVar16 = pfVar1[5]; - fVar22 = pfVar1[6]; - fVar17 = pfVar1[4]; - fVar9 = pfVar1[5]; - fVar18 = pfVar1[6]; - fVar5 = proc_7F0B483C(); - *(short *)&virtualAddress->x = - (short)(int)(((fVar12 - fVar6 * fVar11) - fVar17 * fVar19) * (float)fVar5 - *param_3); - fVar5 = proc_7F0B483C(); - *(undefined2 *)((int)&virtualAddress->x + 2) = - (short)(int)(((fVar20 - fVar13 * fVar11) - fVar9 * fVar19) * (float)fVar5 - param_3[1]); - fVar5 = proc_7F0B483C(); - fVar10 = param_3[2]; - *(undefined2 *)&virtualAddress->z = 0x6e0; - *(undefined2 *)((int)&virtualAddress->z + 2) = 0; - *(short *)&virtualAddress->y = - (short)(int)(((fVar4 - fVar7 * fVar11) - fVar18 * fVar19) * (float)fVar5 - fVar10); - fVar5 = proc_7F0B483C(); - *(short *)&virtualAddress[1].y = - (short)(int)(((fVar12 + fVar14 * fVar19) - fVar21 * fVar11) * (float)fVar5 - *param_3); - fVar5 = proc_7F0B483C(); - *(undefined2 *)((int)&virtualAddress[1].y + 2) = - (short)(int)(((fVar20 + fVar8 * fVar19) - fVar16 * fVar11) * (float)fVar5 - param_3[1]); - fVar5 = proc_7F0B483C(); - fVar10 = param_3[2]; - *(undefined2 *)&virtualAddress[2].x = 0; - *(undefined2 *)((int)&virtualAddress[2].x + 2) = 0; - *(short *)&virtualAddress[1].z = - (short)(int)(((fVar4 + fVar15 * fVar19) - fVar22 * fVar11) * (float)fVar5 - fVar10); - fVar5 = proc_7F0B483C(); - *(short *)&virtualAddress[2].z = - (short)(int)((fVar12 + fVar6 * fVar11 + fVar17 * fVar19) * (float)fVar5 - *param_3); - fVar5 = proc_7F0B483C(); - *(undefined2 *)((int)&virtualAddress[2].z + 2) = - (short)(int)((fVar20 + fVar13 * fVar11 + fVar9 * fVar19) * (float)fVar5 - param_3[1]); - fVar5 = proc_7F0B483C(); - fVar10 = param_3[2]; - *(undefined2 *)&virtualAddress[3].y = 0; - *(undefined2 *)((int)&virtualAddress[3].y + 2) = 0x6e0; - *(short *)&virtualAddress[3].x = - (short)(int)((fVar4 + fVar7 * fVar11 + fVar18 * fVar19) * (float)fVar5 - fVar10); - fVar5 = proc_7F0B483C(); - *(short *)&virtualAddress[4].x = - (short)(int)(((fVar12 - fVar14 * fVar19) + fVar21 * fVar11) * (float)fVar5 - *param_3); - fVar5 = proc_7F0B483C(); - *(undefined2 *)((int)&virtualAddress[4].x + 2) = - (short)(int)(((fVar20 - fVar8 * fVar19) + fVar16 * fVar11) * (float)fVar5 - param_3[1]); - fVar5 = proc_7F0B483C(); - fVar10 = param_3[2]; - *(undefined2 *)&virtualAddress[4].z = 0x6e0; - *(undefined2 *)((int)&virtualAddress[4].z + 2) = 0x6e0; - *(short *)&virtualAddress[4].y = - (short)(int)(((fVar4 - fVar15 * fVar19) + fVar22 * fVar11) * (float)fVar5 - fVar10); - *param_2 = 0x4300040; - uVar3 = osVirtualToPhysical(virtualAddress); - param_2[1] = uVar3; - param_2[3] = 0x2010; - param_2[2] = 0xb1000032; - return param_2 + 4; + f32 fVar1; + f32 fVar2; + f32 fVar3; + float *pfVar4; + xyzpoint *pxVar5; + xyzpoint *virtualAddress; + u32 uVar6; + float fVar7; + f32 fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + + fVar3 = dword_8004090C; + fVar2 = DAT_80040908; + fVar1 = DAT_80040904; + fVar8 = DAT_80040900; + pfVar4 = (float *)get_BONDdata_field_10D4(); + pxVar5 = get_BONDdata_position(); + fVar23 = *param_1 - (float)pxVar5->x; + fVar24 = param_1[1] - (float)pxVar5->y; + fVar25 = param_1[2] - (float)pxVar5->z; + virtualAddress = pxVar5; + fVar7 = sqrtf(fVar23 * fVar23 + fVar24 * fVar24 + fVar25 * fVar25); + fVar14 = 100.00000000; + if (fVar7 * 0.50000000 <= 100.00000000) { + fVar14 = fVar7 * 0.50000000; + } + if (fVar7 == 0.00000000) { + fVar7 = 0.00000000; + fVar14 = param_1[3]; + } + else { + fVar7 = (fVar7 - fVar14) / fVar7; + fVar14 = param_1[3]; + } + fVar14 = fVar14 * fVar7; + fVar22 = param_1[4] * fVar7; + fVar15 = (float)pxVar5->x + fVar23 * fVar7; + fVar24 = (float)pxVar5->y + fVar24 * fVar7; + fVar7 = (float)pxVar5->z + fVar25 * fVar7; + proc_7F0BD6C4(4); + virtualAddress->x = fVar8; + virtualAddress->y = fVar1; + virtualAddress->z = fVar2; + virtualAddress[1].x = fVar3; + virtualAddress[1].y = fVar8; + virtualAddress[1].z = fVar1; + virtualAddress[2].x = fVar2; + virtualAddress[2].y = fVar3; + virtualAddress[2].z = fVar8; + virtualAddress[3].x = fVar1; + virtualAddress[3].y = fVar2; + virtualAddress[3].z = fVar3; + virtualAddress[4].x = fVar8; + virtualAddress[4].y = fVar1; + virtualAddress[4].z = fVar2; + virtualAddress[5].x = fVar3; + virtualAddress[5].y = fVar8; + virtualAddress[5].z = fVar1; + virtualAddress[6].x = fVar2; + virtualAddress[6].y = fVar3; + fVar25 = *pfVar4; + fVar16 = pfVar4[1]; + fVar9 = pfVar4[2]; + fVar17 = *pfVar4; + fVar10 = pfVar4[1]; + fVar18 = pfVar4[2]; + fVar11 = pfVar4[4]; + fVar19 = pfVar4[5]; + fVar12 = pfVar4[6]; + fVar20 = pfVar4[4]; + fVar13 = pfVar4[5]; + fVar21 = pfVar4[6]; + fVar8 = proc_7F0B483C(); + *(short *)&virtualAddress->x = + (short)(int)(((fVar15 - fVar25 * fVar14) - fVar20 * fVar22) * (float)fVar8 - *param_3); + fVar8 = proc_7F0B483C(); + *(undefined2 *)((int)&virtualAddress->x + 2) = + (short)(int)(((fVar24 - fVar16 * fVar14) - fVar13 * fVar22) * (float)fVar8 - param_3[1]); + fVar8 = proc_7F0B483C(); + fVar23 = param_3[2]; + *(undefined2 *)&virtualAddress->z = 0x6e0; + *(undefined2 *)((int)&virtualAddress->z + 2) = 0; + *(short *)&virtualAddress->y = + (short)(int)(((fVar7 - fVar9 * fVar14) - fVar21 * fVar22) * (float)fVar8 - fVar23); + fVar8 = proc_7F0B483C(); + *(short *)&virtualAddress[1].y = + (short)(int)(((fVar15 + fVar17 * fVar22) - fVar11 * fVar14) * (float)fVar8 - *param_3); + fVar8 = proc_7F0B483C(); + *(undefined2 *)((int)&virtualAddress[1].y + 2) = + (short)(int)(((fVar24 + fVar10 * fVar22) - fVar19 * fVar14) * (float)fVar8 - param_3[1]); + fVar8 = proc_7F0B483C(); + fVar23 = param_3[2]; + *(undefined2 *)&virtualAddress[2].x = 0; + *(undefined2 *)((int)&virtualAddress[2].x + 2) = 0; + *(short *)&virtualAddress[1].z = + (short)(int)(((fVar7 + fVar18 * fVar22) - fVar12 * fVar14) * (float)fVar8 - fVar23); + fVar8 = proc_7F0B483C(); + *(short *)&virtualAddress[2].z = + (short)(int)((fVar15 + fVar25 * fVar14 + fVar20 * fVar22) * (float)fVar8 - *param_3); + fVar8 = proc_7F0B483C(); + *(undefined2 *)((int)&virtualAddress[2].z + 2) = + (short)(int)((fVar24 + fVar16 * fVar14 + fVar13 * fVar22) * (float)fVar8 - param_3[1]); + fVar8 = proc_7F0B483C(); + fVar23 = param_3[2]; + *(undefined2 *)&virtualAddress[3].y = 0; + *(undefined2 *)((int)&virtualAddress[3].y + 2) = 0x6e0; + *(short *)&virtualAddress[3].x = + (short)(int)((fVar7 + fVar9 * fVar14 + fVar21 * fVar22) * (float)fVar8 - fVar23); + fVar8 = proc_7F0B483C(); + *(short *)&virtualAddress[4].x = + (short)(int)(((fVar15 - fVar17 * fVar22) + fVar11 * fVar14) * (float)fVar8 - *param_3); + fVar8 = proc_7F0B483C(); + *(undefined2 *)((int)&virtualAddress[4].x + 2) = + (short)(int)(((fVar24 - fVar10 * fVar22) + fVar19 * fVar14) * (float)fVar8 - param_3[1]); + fVar8 = proc_7F0B483C(); + fVar23 = param_3[2]; + *(undefined2 *)&virtualAddress[4].z = 0x6e0; + *(undefined2 *)((int)&virtualAddress[4].z + 2) = 0x6e0; + *(short *)&virtualAddress[4].y = + (short)(int)(((fVar7 - fVar18 * fVar22) + fVar12 * fVar14) * (float)fVar8 - fVar23); + *param_2 = 0x4300040; + uVar6 = osVirtualToPhysical(virtualAddress); + param_2[1] = uVar6; + param_2[3] = 0x2010; + param_2[2] = 0xb1000032; + return param_2 + 4; } @@ -113355,245 +112359,249 @@ undefined4 * proc_7F09D82C(float *param_1,undefined4 *param_2,float *param_3) undefined4 * proc_7F09DDA4(int param_1,float *param_2,undefined4 *param_3,float *param_4) { - float *pfVar1; - xyzpoint *pxVar2; - xyzpoint *virtualAddress; - u32 uVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - f32 fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - float fVar20; - float fVar21; - float fVar22; - float fVar23; - float fVar24; - undefined uStack97; - - fVar7 = dword_8004091C; - fVar6 = dword_80040918; - fVar5 = dword_80040914; - fVar4 = dword_80040910; - pfVar1 = (float *)proc_7F078444(); - pxVar2 = get_BONDdata_position(); - if ((short)(&WORD_8004017e)[(int)*(short *)(param_1 + 6) * 0xc] < *(short *)(param_2 + 9)) { - fVar17 = param_2[8]; - if (false) { - fVar14 = ROUND(fVar17); + f32 fVar1; + f32 fVar2; + f32 fVar3; + float *pfVar4; + xyzpoint *pxVar5; + xyzpoint *virtualAddress; + u32 uVar6; + float fVar7; + float fVar8; + float fVar9; + f32 fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + undefined uStack97; + + fVar3 = dword_8004091C; + fVar2 = dword_80040918; + fVar1 = dword_80040914; + fVar10 = dword_80040910; + pfVar4 = (float *)get_BONDdata_field_10D4(); + pxVar5 = get_BONDdata_position(); + if ((short)(&WORD_8004017e)[(int)*(short *)(param_1 + 6) * 0xc] < *(short *)(param_2 + 9)) { + fVar20 = param_2[8]; + if (false) { + fVar7 = ROUND(fVar20); + } + else { + fVar7 = FLOOR(fVar20); + } + uStack97 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar20 = ROUND(fVar20 - 2147483648.00000000); + } + else { + fVar20 = FLOOR(fVar20 - 2147483648.00000000); + } + if (true) { + uStack97 = (undefined)(int)fVar20; + goto LAB_7f09df7c; + } + } + else { + if (-1 < (int)fVar7) goto LAB_7f09df7c; + } + uStack97 = 0xff; } else { - fVar14 = FLOOR(fVar17); + fVar20 = (param_2[8] / + (float)(int)(short)(&WORD_8004017e)[(int)*(short *)(param_1 + 6) * 0xc]) * + (float)(int)*(short *)(param_2 + 9); + if (false) { + fVar7 = ROUND(fVar20); + } + else { + fVar7 = FLOOR(fVar20); + } + uStack97 = (undefined)(int)fVar7; + if (false) { + if (false) { + fVar20 = ROUND(fVar20 - 2147483648.00000000); + } + else { + fVar20 = FLOOR(fVar20 - 2147483648.00000000); + } + if (true) { + uStack97 = (undefined)(int)fVar20; + goto LAB_7f09df7c; + } + } + else { + if (-1 < (int)fVar7) goto LAB_7f09df7c; + } + uStack97 = 0xff; } - uStack97 = (undefined)(int)fVar14; - if (false) { - if (false) { - fVar17 = ROUND(fVar17 - 2147483648.00000000); - } - else { - fVar17 = FLOOR(fVar17 - 2147483648.00000000); - } - if (true) { - uStack97 = (undefined)(int)fVar17; - goto LAB_7f09df7c; - } - } - else { - if (-1 < (int)fVar14) goto LAB_7f09df7c; - } - uStack97 = 0xff; - } - else { - fVar17 = (param_2[8] / (float)(int)(short)(&WORD_8004017e)[(int)*(short *)(param_1 + 6) * 0xc]) - * (float)(int)*(short *)(param_2 + 9); - if (false) { - fVar14 = ROUND(fVar17); - } - else { - fVar14 = FLOOR(fVar17); - } - uStack97 = (undefined)(int)fVar14; - if (false) { - if (false) { - fVar17 = ROUND(fVar17 - 2147483648.00000000); - } - else { - fVar17 = FLOOR(fVar17 - 2147483648.00000000); - } - if (true) { - uStack97 = (undefined)(int)fVar17; - goto LAB_7f09df7c; - } - } - else { - if (-1 < (int)fVar14) goto LAB_7f09df7c; - } - uStack97 = 0xff; - } LAB_7f09df7c: - virtualAddress = pxVar2; - proc_7F0BD6C4(4); - virtualAddress->x = fVar4; - virtualAddress->y = fVar5; - virtualAddress->z = fVar6; - virtualAddress[1].x = fVar7; - virtualAddress[1].y = fVar4; - virtualAddress[1].z = fVar5; - virtualAddress[2].x = fVar6; - virtualAddress[2].y = fVar7; - virtualAddress[2].z = fVar4; - virtualAddress[3].x = fVar5; - virtualAddress[3].y = fVar6; - virtualAddress[3].z = fVar7; - virtualAddress[4].x = fVar4; - virtualAddress[4].y = fVar5; - virtualAddress[4].z = fVar6; - virtualAddress[5].x = fVar7; - fVar4 = cosf(param_2[4]); - fVar14 = param_2[3]; - fVar5 = sinf(param_2[4]); - fVar17 = param_2[3]; - fVar6 = sinf(param_2[6]); - fVar15 = *param_2; - fVar18 = param_2[1]; - fVar7 = sinf(param_2[7]); - fVar15 = (fVar6 * 7.00000000 + fVar15) - pxVar2->x; - fVar18 = fVar18 - pxVar2->y; - fVar7 = (fVar7 * 7.00000000 + param_2[2]) - pxVar2->z; - fVar6 = sqrtf(fVar15 * fVar15 + fVar18 * fVar18 + fVar7 * fVar7); - if (fVar6 <= flt_800576C0) { - fVar9 = 100.00000000; - if (fVar6 * 0.50000000 <= 100.00000000) { - fVar9 = fVar6 * 0.50000000; + virtualAddress = pxVar5; + proc_7F0BD6C4(4); + virtualAddress->x = fVar10; + virtualAddress->y = fVar1; + virtualAddress->z = fVar2; + virtualAddress[1].x = fVar3; + virtualAddress[1].y = fVar10; + virtualAddress[1].z = fVar1; + virtualAddress[2].x = fVar2; + virtualAddress[2].y = fVar3; + virtualAddress[2].z = fVar10; + virtualAddress[3].x = fVar1; + virtualAddress[3].y = fVar2; + virtualAddress[3].z = fVar3; + virtualAddress[4].x = fVar10; + virtualAddress[4].y = fVar1; + virtualAddress[4].z = fVar2; + virtualAddress[5].x = fVar3; + fVar20 = cosf(param_2[4]); + fVar17 = param_2[3]; + fVar7 = sinf(param_2[4]); + fVar11 = param_2[3]; + fVar8 = sinf(param_2[6]); + fVar18 = *param_2; + fVar21 = param_2[1]; + fVar9 = sinf(param_2[7]); + fVar18 = (fVar8 * 7.00000000 + fVar18) - (float)pxVar5->x; + fVar21 = fVar21 - (float)pxVar5->y; + fVar9 = (fVar9 * 7.00000000 + param_2[2]) - (float)pxVar5->z; + fVar8 = sqrtf(fVar18 * fVar18 + fVar21 * fVar21 + fVar9 * fVar9); + if (fVar8 <= flt_800576C0) { + fVar12 = 100.00000000; + if (fVar8 * 0.50000000 <= 100.00000000) { + fVar12 = fVar8 * 0.50000000; + } + if (fVar8 == 0.00000000) { + fVar8 = 0.00000000; + } + else { + fVar8 = (fVar8 - fVar12) / fVar8; + } + fVar25 = fVar20 * fVar17 * fVar8; + fVar27 = fVar7 * fVar11 * fVar8; + fVar19 = (float)pxVar5->x + fVar18 * fVar8; + fVar22 = (float)pxVar5->y + fVar21 * fVar8; + fVar23 = (float)pxVar5->z + fVar9 * fVar8; + fVar21 = *pfVar4; + fVar7 = pfVar4[1]; + fVar12 = pfVar4[2]; + fVar8 = *pfVar4; + fVar13 = pfVar4[1]; + fVar9 = pfVar4[2]; + fVar14 = pfVar4[4]; + fVar11 = pfVar4[5]; + fVar15 = pfVar4[6]; + fVar17 = pfVar4[4]; + fVar16 = pfVar4[5]; + fVar18 = pfVar4[6]; + fVar10 = proc_7F0B483C(); + fVar20 = (((fVar19 - fVar21 * fVar25) - fVar17 * fVar27) * (float)fVar10 - *param_4) * + 10.00000000; + fVar10 = proc_7F0B483C(); + fVar24 = (((fVar22 - fVar7 * fVar25) - fVar16 * fVar27) * (float)fVar10 - param_4[1]) * + 10.00000000; + fVar10 = proc_7F0B483C(); + fVar26 = (((fVar23 - fVar12 * fVar25) - fVar18 * fVar27) * (float)fVar10 - param_4[2]) * + 10.00000000; + if ((((fVar20 <= flt_800576C4) && (flt_800576C8 <= fVar20)) && (fVar24 <= flt_800576C4)) && + (((flt_800576C8 <= fVar24 && (fVar26 <= flt_800576C4)) && (flt_800576C8 <= fVar26)))) { + *(undefined2 *)&virtualAddress->z = 0x6e0; + *(undefined2 *)((int)&virtualAddress->z + 2) = 0; + *(short *)&virtualAddress->x = (short)(int)fVar20; + *(undefined2 *)((int)&virtualAddress->x + 2) = (short)(int)fVar24; + *(short *)&virtualAddress->y = (short)(int)fVar26; + *(byte *)&virtualAddress[1].x = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[1].x + 1) = + (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[1].x + 2) = + (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; + *(undefined *)((int)&virtualAddress[1].x + 3) = uStack97; + fVar10 = proc_7F0B483C(); + *(short *)&virtualAddress[1].y = + (short)(int)((((fVar19 + fVar8 * fVar27) - fVar14 * fVar25) * (float)fVar10 - + *param_4) * 10.00000000); + fVar10 = proc_7F0B483C(); + *(undefined2 *)((int)&virtualAddress[1].y + 2) = + (short)(int)((((fVar22 + fVar13 * fVar27) - fVar11 * fVar25) * (float)fVar10 - + param_4[1]) * 10.00000000); + fVar10 = proc_7F0B483C(); + fVar20 = param_4[2]; + *(undefined2 *)&virtualAddress[2].x = 0; + *(undefined2 *)((int)&virtualAddress[2].x + 2) = 0; + *(short *)&virtualAddress[1].z = + (short)(int)((((fVar23 + fVar9 * fVar27) - fVar15 * fVar25) * (float)fVar10 - + fVar20) * 10.00000000); + *(byte *)&virtualAddress[2].y = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[2].y + 1) = + (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[2].y + 2) = + (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; + *(undefined *)((int)&virtualAddress[2].y + 3) = uStack97; + fVar10 = proc_7F0B483C(); + *(short *)&virtualAddress[2].z = + (short)(int)(((fVar19 + fVar21 * fVar25 + fVar17 * fVar27) * (float)fVar10 - + *param_4) * 10.00000000); + fVar10 = proc_7F0B483C(); + *(undefined2 *)((int)&virtualAddress[2].z + 2) = + (short)(int)(((fVar22 + fVar7 * fVar25 + fVar16 * fVar27) * (float)fVar10 - + param_4[1]) * 10.00000000); + fVar10 = proc_7F0B483C(); + fVar20 = param_4[2]; + *(undefined2 *)&virtualAddress[3].y = 0; + *(undefined2 *)((int)&virtualAddress[3].y + 2) = 0x6e0; + *(short *)&virtualAddress[3].x = + (short)(int)(((fVar23 + fVar12 * fVar25 + fVar18 * fVar27) * (float)fVar10 - fVar20 + ) * 10.00000000); + *(byte *)&virtualAddress[3].z = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[3].z + 1) = + (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[3].z + 2) = + (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; + *(undefined *)((int)&virtualAddress[3].z + 3) = uStack97; + fVar10 = proc_7F0B483C(); + *(short *)&virtualAddress[4].x = + (short)(int)((((fVar19 - fVar8 * fVar27) + fVar14 * fVar25) * (float)fVar10 - + *param_4) * 10.00000000); + fVar10 = proc_7F0B483C(); + *(undefined2 *)((int)&virtualAddress[4].x + 2) = + (short)(int)((((fVar22 - fVar13 * fVar27) + fVar11 * fVar25) * (float)fVar10 - + param_4[1]) * 10.00000000); + fVar10 = proc_7F0B483C(); + fVar20 = param_4[2]; + *(undefined2 *)&virtualAddress[4].z = 0x6e0; + *(undefined2 *)((int)&virtualAddress[4].z + 2) = 0x6e0; + *(short *)&virtualAddress[4].y = + (short)(int)((((fVar23 - fVar9 * fVar27) + fVar15 * fVar25) * (float)fVar10 - + fVar20) * 10.00000000); + *(byte *)&virtualAddress[5].x = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[5].x + 1) = + (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; + *(byte *)((int)&virtualAddress[5].x + 2) = + (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; + *(undefined *)((int)&virtualAddress[5].x + 3) = uStack97; + *param_3 = 0x4300040; + uVar6 = osVirtualToPhysical(virtualAddress); + param_3[1] = uVar6; + param_3[3] = 0x2010; + param_3[2] = 0xb1000032; + param_3 = param_3 + 4; + } } - if (fVar6 == 0.00000000) { - fVar6 = 0.00000000; - } - else { - fVar6 = (fVar6 - fVar9) / fVar6; - } - fVar22 = fVar4 * fVar14 * fVar6; - fVar24 = fVar5 * fVar17 * fVar6; - fVar16 = pxVar2->x + fVar15 * fVar6; - fVar19 = pxVar2->y + fVar18 * fVar6; - fVar20 = pxVar2->z + fVar7 * fVar6; - fVar18 = *pfVar1; - fVar5 = pfVar1[1]; - fVar9 = pfVar1[2]; - fVar6 = *pfVar1; - fVar10 = pfVar1[1]; - fVar7 = pfVar1[2]; - fVar11 = pfVar1[4]; - fVar17 = pfVar1[5]; - fVar12 = pfVar1[6]; - fVar14 = pfVar1[4]; - fVar13 = pfVar1[5]; - fVar15 = pfVar1[6]; - fVar8 = proc_7F0B483C(); - fVar4 = (((fVar16 - fVar18 * fVar22) - fVar14 * fVar24) * (float)fVar8 - *param_4) * 10.00000000 - ; - fVar8 = proc_7F0B483C(); - fVar21 = (((fVar19 - fVar5 * fVar22) - fVar13 * fVar24) * (float)fVar8 - param_4[1]) * - 10.00000000; - fVar8 = proc_7F0B483C(); - fVar23 = (((fVar20 - fVar9 * fVar22) - fVar15 * fVar24) * (float)fVar8 - param_4[2]) * - 10.00000000; - if ((((fVar4 <= flt_800576C4) && (flt_800576C8 <= fVar4)) && (fVar21 <= flt_800576C4)) && - (((flt_800576C8 <= fVar21 && (fVar23 <= flt_800576C4)) && (flt_800576C8 <= fVar23)))) { - *(undefined2 *)&virtualAddress->z = 0x6e0; - *(undefined2 *)((int)&virtualAddress->z + 2) = 0; - *(short *)&virtualAddress->x = (short)(int)fVar4; - *(undefined2 *)((int)&virtualAddress->x + 2) = (short)(int)fVar21; - *(short *)&virtualAddress->y = (short)(int)fVar23; - *(byte *)&virtualAddress[1].x = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[1].x + 1) = - (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[1].x + 2) = - (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; - *(undefined *)((int)&virtualAddress[1].x + 3) = uStack97; - fVar8 = proc_7F0B483C(); - *(short *)&virtualAddress[1].y = - (short)(int)((((fVar16 + fVar6 * fVar24) - fVar11 * fVar22) * (float)fVar8 - *param_4) * - 10.00000000); - fVar8 = proc_7F0B483C(); - *(undefined2 *)((int)&virtualAddress[1].y + 2) = - (short)(int)((((fVar19 + fVar10 * fVar24) - fVar17 * fVar22) * (float)fVar8 - param_4[1]) - * 10.00000000); - fVar8 = proc_7F0B483C(); - fVar4 = param_4[2]; - *(undefined2 *)&virtualAddress[2].x = 0; - *(undefined2 *)((int)&virtualAddress[2].x + 2) = 0; - *(short *)&virtualAddress[1].z = - (short)(int)((((fVar20 + fVar7 * fVar24) - fVar12 * fVar22) * (float)fVar8 - fVar4) * - 10.00000000); - *(byte *)&virtualAddress[2].y = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[2].y + 1) = - (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[2].y + 2) = - (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; - *(undefined *)((int)&virtualAddress[2].y + 3) = uStack97; - fVar8 = proc_7F0B483C(); - *(short *)&virtualAddress[2].z = - (short)(int)(((fVar16 + fVar18 * fVar22 + fVar14 * fVar24) * (float)fVar8 - *param_4) * - 10.00000000); - fVar8 = proc_7F0B483C(); - *(undefined2 *)((int)&virtualAddress[2].z + 2) = - (short)(int)(((fVar19 + fVar5 * fVar22 + fVar13 * fVar24) * (float)fVar8 - param_4[1]) * - 10.00000000); - fVar8 = proc_7F0B483C(); - fVar4 = param_4[2]; - *(undefined2 *)&virtualAddress[3].y = 0; - *(undefined2 *)((int)&virtualAddress[3].y + 2) = 0x6e0; - *(short *)&virtualAddress[3].x = - (short)(int)(((fVar20 + fVar9 * fVar22 + fVar15 * fVar24) * (float)fVar8 - fVar4) * - 10.00000000); - *(byte *)&virtualAddress[3].z = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[3].z + 1) = - (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[3].z + 2) = - (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; - *(undefined *)((int)&virtualAddress[3].z + 3) = uStack97; - fVar8 = proc_7F0B483C(); - *(short *)&virtualAddress[4].x = - (short)(int)((((fVar16 - fVar6 * fVar24) + fVar11 * fVar22) * (float)fVar8 - *param_4) * - 10.00000000); - fVar8 = proc_7F0B483C(); - *(undefined2 *)((int)&virtualAddress[4].x + 2) = - (short)(int)((((fVar19 - fVar10 * fVar24) + fVar17 * fVar22) * (float)fVar8 - param_4[1]) - * 10.00000000); - fVar8 = proc_7F0B483C(); - fVar4 = param_4[2]; - *(undefined2 *)&virtualAddress[4].z = 0x6e0; - *(undefined2 *)((int)&virtualAddress[4].z + 2) = 0x6e0; - *(short *)&virtualAddress[4].y = - (short)(int)((((fVar20 - fVar7 * fVar24) + fVar12 * fVar22) * (float)fVar8 - fVar4) * - 10.00000000); - *(byte *)&virtualAddress[5].x = (&dword_80040188)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[5].x + 1) = - (&BYTE_80040189)[(int)*(short *)(param_1 + 6) * 0x18]; - *(byte *)((int)&virtualAddress[5].x + 2) = - (&BYTE_8004018a)[(int)*(short *)(param_1 + 6) * 0x18]; - *(undefined *)((int)&virtualAddress[5].x + 3) = uStack97; - *param_3 = 0x4300040; - uVar3 = osVirtualToPhysical(virtualAddress); - param_3[1] = uVar3; - param_3[3] = 0x2010; - param_3[2] = 0xb1000032; - param_3 = param_3 + 4; - } - } - return param_3; + return param_3; } @@ -113601,64 +112609,64 @@ LAB_7f09df7c: void proc_7F09E700(undefined4 *param_1,int param_2,short param_3,char *param_4,int param_5) { - char *pcVar1; - byte bVar2; - short sVar3; - ulonglong uVar4; - object_standard *poVar5; - object_standard *poVar6; - int iVar7; - int iVar8; - object_standard *poVar9; - - uVar4 = get_num_players(); - poVar9 = NULL; - iVar8 = 0; - do { - iVar7 = iVar8 + DAT_8007a140; - if (*(int *)(DAT_8007a140 + iVar8) == 0) { - poVar9 = (object_standard *)(iVar8 + DAT_8007a140); - break; - } - iVar8 += 0x198; - if ((((1 < (longlong)uVar4) && (sVar3 = *(short *)(iVar7 + 6), sVar3 != 7)) && (sVar3 != 8)) && - (sVar3 != 9)) { - *(word *)(iVar7 + 4) = (&WORD_8004017c)[(int)sVar3 * 0xc]; - } - } while (iVar8 < 0x1fe0); - if ((poVar9 != NULL) && (poVar5 = remove_last_obj_pos_data_entry(), poVar5 != NULL)) { - bVar2 = *(byte *)((int)&poVar5->extrascale + 1); - *(undefined *)&poVar5->extrascale = 8; - *(byte *)((int)&poVar5->extrascale + 1) = bVar2 | 2; - *(object_standard **)&poVar5->obj = poVar9; + char *pcVar1; + byte bVar2; + short sVar3; + s32 sVar4; + object_standard *poVar5; + object_standard *poVar6; + int iVar7; + int iVar8; + object_standard *poVar9; + + sVar4 = get_num_players(); + poVar9 = NULL; iVar8 = 0; - poVar5->runtime_ptr_obj_instance_controller = param_2; - poVar5->flags = *param_1; - poVar5->flags2 = param_1[1]; - poVar5->runtime_ptr_obj_posdata = param_1[2]; - if (*param_4 != -1) { - *(char *)&poVar5->runtime_MATRIX5 = *param_4; - poVar6 = poVar5; - while( true ) { - pcVar1 = param_4 + 1; - iVar8 += 1; - param_4 = param_4 + 1; - if ((*pcVar1 == -1) || (iVar8 == 7)) break; - *(char *)((int)&poVar6->runtime_MATRIX5 + 1) = *pcVar1; - poVar6 = (object_standard *)((int)&poVar6->extrascale + 1); - } + do { + iVar7 = iVar8 + DAT_8007a140; + if (*(int *)(DAT_8007a140 + iVar8) == 0) { + poVar9 = (object_standard *)(iVar8 + DAT_8007a140); + break; + } + iVar8 += 0x198; + if ((((1 < sVar4) && (sVar3 = *(short *)(iVar7 + 6), sVar3 != 7)) && (sVar3 != 8)) && + (sVar3 != 9)) { + *(word *)(iVar7 + 4) = (&WORD_8004017c)[(int)sVar3 * 0xc]; + } + } while (iVar8 < 0x1fe0); + if ((poVar9 != NULL) && (poVar5 = remove_last_obj_pos_data_entry(), poVar5 != NULL)) { + bVar2 = *(byte *)((int)&poVar5->extrascale + 1); + *(undefined *)&poVar5->extrascale = 8; + *(byte *)((int)&poVar5->extrascale + 1) = bVar2 | 2; + *(object_standard **)&poVar5->obj = poVar9; + iVar8 = 0; + poVar5->runtime_ptr_obj_instance_controller = param_2; + poVar5->flags = *param_1; + poVar5->flags2 = param_1[1]; + poVar5->runtime_ptr_obj_posdata = param_1[2]; + if (*param_4 != -1) { + *(char *)&poVar5->runtime_MATRIX5 = *param_4; + poVar6 = poVar5; + while( true ) { + pcVar1 = param_4 + 1; + iVar8 += 1; + param_4 = param_4 + 1; + if ((*pcVar1 == -1) || (iVar8 == 7)) break; + *(char *)((int)&poVar6->runtime_MATRIX5 + 1) = *pcVar1; + poVar6 = (object_standard *)((int)&poVar6->extrascale + 1); + } + } + *(undefined *)((int)&poVar5->runtime_MATRIX5 + iVar8) = 0xff; + if (param_5 != 0) { + *(byte *)((int)&poVar5->extrascale + 1) = *(byte *)((int)&poVar5->extrascale + 1) | 8; + } + proc_7F03A4F0((int)poVar5); + set_stateflag_0x04_for_posdata((int)poVar5); + poVar9->obj = 0; + *(object_standard **)poVar9 = poVar5; + poVar9->pad = param_3; } - *(undefined *)((int)&poVar5->runtime_MATRIX5 + iVar8) = 0xff; - if (param_5 != 0) { - *(byte *)((int)&poVar5->extrascale + 1) = *(byte *)((int)&poVar5->extrascale + 1) | 8; - } - proc_7F03A4F0((int)poVar5); - set_stateflag_0x04_for_posdata((int)poVar5); - poVar9->obj = 0; - *(object_standard **)poVar9 = poVar5; - poVar9->pad = param_3; - } - return; + return; } @@ -113666,216 +112674,220 @@ void proc_7F09E700(undefined4 *param_1,int param_2,short param_3,char *param_4,i undefined8 proc_7F09E8AC(char *param_1) { - short sVar1; - word wVar2; - undefined4 *puVar3; - bool bVar4; - float fVar5; - float fVar6; - float fVar7; - undefined8 uVar8; - u32 uVar9; - float *pfVar10; - float *pfVar11; - undefined4 *puVar12; - undefined4 *puVar13; - int iVar14; - int iVar15; - float fVar16; - float fVar17; - float fVar18; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - - fVar7 = flt_800576D8; - fVar6 = flt_800576D4; - fVar5 = flt_800576D0; - fVar17 = flt_800576CC; - puVar3 = *(undefined4 **)(param_1 + 4); - if (clock_timer == 0) { - uVar8 = 0; - } - else { - if (clock_timer < 0xf) { - fVar16 = (float)clock_timer; + short sVar1; + word wVar2; + undefined4 *puVar3; + bool bVar4; + float fVar5; + float fVar6; + float fVar7; + undefined8 uVar8; + u32 uVar9; + float *pfVar10; + float *pfVar11; + undefined4 *puVar12; + undefined4 *puVar13; + int iVar14; + int iVar15; + float fVar16; + float fVar17; + float fVar18; + float afStack52 [13]; + + fVar7 = flt_800576D8; + fVar6 = flt_800576D4; + fVar5 = flt_800576D0; + fVar17 = flt_800576CC; + puVar3 = *(undefined4 **)(param_1 + 4); + if (clock_timer == 0) { + uVar8 = 0; } else { - fVar16 = 15.00000000; - } - iVar15 = 0; - if (0 < (int)fVar16) { - sVar1 = *(short *)(puVar3 + 1); - do { - iVar14 = 0; - *(short *)(puVar3 + 1) = sVar1 + 1; + if (clock_timer < 0xf) { + fVar16 = (float)clock_timer; + } + else { + fVar16 = 15.00000000; + } + iVar15 = 0; + if (0 < (int)fVar16) { + sVar1 = *(short *)(puVar3 + 1); + do { + iVar14 = 0; + *(short *)(puVar3 + 1) = sVar1 + 1; + puVar13 = puVar3; + do { + if ((float)puVar13[5] != 0.00000000) { + *(float *)(puVar13 + 3) = (float)puVar13[3] + fVar5; + *(float *)(puVar13 + 5) = (float)puVar13[5] + fVar17; + fVar18 = (&FLOAT_8004018c)[(int)*(short *)((int)puVar3 + 6) * 6]; + *(short *)(puVar13 + 0xb) = *(short *)(puVar13 + 0xb) + 1; + *(float *)(puVar13 + 6) = (float)puVar13[6] + (float)puVar13[7]; + *(float *)(puVar13 + 10) = (float)puVar13[10] - fVar18; + uVar9 = get_random_value(); + fVar18 = (float)uVar9; + if ((int)uVar9 < 0) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(float *)(puVar13 + 8) = + (float)puVar13[8] + fVar7 + fVar18 * 0.00000000 * fVar6; + uVar9 = get_random_value(); + fVar18 = (float)uVar9; + if ((int)uVar9 < 0) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(float *)(puVar13 + 9) = + (float)puVar13[9] + fVar7 + fVar18 * 0.00000000 * fVar6; + if ((float)puVar13[10] < 4.00000000) { + puVar13[5] = 0; + } + } + iVar14 += 0x28; + puVar13 = puVar13 + 10; + } while (iVar14 < 400); + sVar1 = *(short *)(puVar3 + 1); + if ((longlong)sVar1 < + (longlong)(short)(&WORD_8004017c)[(int)*(short *)((int)puVar3 + 6) * 0xc]) { + wVar2 = (&WORD_80040180)[(int)*(short *)((int)puVar3 + 6) * 0xc]; + iVar14 = 0; + if (wVar2 == 0) { + trap(0x1c00); + } + if ((wVar2 == 0xffff) && ((longlong)sVar1 == -0x80000000)) { + trap(0x1800); + } + puVar13 = puVar3; + if ((int)sVar1 % (int)(short)wVar2 == 1) { + do { + iVar14 += 0x28; + if ((float)puVar13[5] == 0.00000000) { + uVar9 = get_random_value(); + fVar18 = (float)uVar9; + if ((int)uVar9 < 0) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(float *)(puVar13 + 5) = + (fVar18 * 0.00000000 * 0.50000000 + 1.00000000) * + (float)(int)(short)(&WORD_80040182) + [(int)*(short *)((int)puVar3 + 6) * 0xc]; + uVar9 = get_random_value(); + fVar18 = (float)(uVar9 % 0x46); + if (false) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(undefined2 *)(puVar13 + 0xb) = 0; + *(float *)(puVar13 + 10) = fVar18 + 110.00000000; + uVar9 = get_random_value(); + fVar18 = (float)uVar9; + if ((int)uVar9 < 0) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(float *)(puVar13 + 6) = fVar18 * 0.00000000 * flt_800576DC; + uVar9 = get_random_value(); + fVar18 = (float)uVar9; + if ((int)uVar9 < 0) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(float *)(puVar13 + 7) = + (float)(&DWORD_80040184)[(int)*(short *)((int)puVar3 + 6) * 6] + * (0.50000000 - fVar18 * 0.00000000); + puVar13[2] = *(undefined4 *)(param_1 + 8); + puVar13[3] = *(undefined4 *)(param_1 + 0xc); + puVar13[4] = *(undefined4 *)(param_1 + 0x10); + uVar9 = get_random_value(); + fVar18 = (float)uVar9; + if ((int)uVar9 < 0) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(float *)(puVar13 + 8) = fVar18 * 0.00000000 * 0.50000000; + uVar9 = get_random_value(); + fVar18 = (float)uVar9; + if ((int)uVar9 < 0) { + fVar18 = fVar18 + 4294967296.00000000; + } + *(float *)(puVar13 + 9) = fVar18 * 0.00000000 * 0.50000000; + if ((longlong) + ((int)(short)(&WORD_8004017c) + [(int)*(short *)((int)puVar3 + 6) * 0xc] - + (int)(short)(&WORD_80040190) + [(int)*(short *)((int)puVar3 + 6) * 0xc]) < + (longlong)*(short *)(puVar3 + 1)) { + *(float *)(puVar13 + 10) = + (float)puVar13[10] * + ((float)((int)(short)(&WORD_8004017c) + [(int)*(short *)((int)puVar3 + 6) * + 0xc] - (int)*(short *)(puVar3 + 1)) / + (float)(int)(short)(&WORD_80040190) + [(int)*(short *)((int)puVar3 + 6) * 0xc] + ); + } + break; + } + puVar13 = puVar13 + 10; + } while (iVar14 != 400); + } + } + iVar15 += 1; + if (iVar15 == (int)fVar16) break; + sVar1 = *(short *)(puVar3 + 1); + } while( true ); + } + afStack52[3] = *(float *)(param_1 + 8) - 1.00000000; + iVar15 = 0; + afStack52[4] = *(float *)(param_1 + 0xc) - 1.00000000; + afStack52[5] = *(float *)(param_1 + 0x10) - 1.00000000; + afStack52[0] = *(float *)(param_1 + 8) + 1.00000000; + afStack52[1] = *(float *)(param_1 + 0xc) + 1.00000000; + afStack52[2] = *(float *)(param_1 + 0x10) + 1.00000000; puVar13 = puVar3; do { - if ((float)puVar13[5] != 0.00000000) { - *(float *)(puVar13 + 3) = (float)puVar13[3] + fVar5; - *(float *)(puVar13 + 5) = (float)puVar13[5] + fVar17; - fVar18 = (&FLOAT_8004018c)[(int)*(short *)((int)puVar3 + 6) * 6]; - *(short *)(puVar13 + 0xb) = *(short *)(puVar13 + 0xb) + 1; - *(float *)(puVar13 + 6) = (float)puVar13[6] + (float)puVar13[7]; - *(float *)(puVar13 + 10) = (float)puVar13[10] - fVar18; - uVar9 = get_random_value(); - fVar18 = (float)uVar9; - if ((int)uVar9 < 0) { - fVar18 = fVar18 + 4294967296.00000000; + iVar15 += 0x28; + iVar14 = 0; + pfVar10 = afStack52 + 3; + puVar12 = puVar13; + if ((float)puVar13[5] != 0.00000000) { + do { + pfVar11 = (float *)(puVar12 + 2); + puVar12 = puVar12 + 1; + fVar17 = *pfVar11 - (float)puVar13[5]; + pfVar11 = (float *)((int)afStack52 + iVar14); + if (fVar17 < *pfVar10) { + *pfVar10 = fVar17; + } + else { + if (*pfVar11 < fVar17) { + *pfVar11 = fVar17; + } + } + pfVar10 = pfVar10 + 1; + iVar14 += 4; + } while (pfVar10 != afStack52 + 6); } - *(float *)(puVar13 + 8) = (float)puVar13[8] + fVar7 + fVar18 * 0.00000000 * fVar6; - uVar9 = get_random_value(); - fVar18 = (float)uVar9; - if ((int)uVar9 < 0) { - fVar18 = fVar18 + 4294967296.00000000; - } - *(float *)(puVar13 + 9) = (float)puVar13[9] + fVar7 + fVar18 * 0.00000000 * fVar6; - if ((float)puVar13[10] < 4.00000000) { - puVar13[5] = 0; - } - } - iVar14 += 0x28; - puVar13 = puVar13 + 10; - } while (iVar14 < 400); - sVar1 = *(short *)(puVar3 + 1); - if ((longlong)sVar1 < - (longlong)(short)(&WORD_8004017c)[(int)*(short *)((int)puVar3 + 6) * 0xc]) { - wVar2 = (&WORD_80040180)[(int)*(short *)((int)puVar3 + 6) * 0xc]; - iVar14 = 0; - if (wVar2 == 0) { - trap(0x1c00); - } - if ((wVar2 == 0xffff) && ((longlong)sVar1 == -0x80000000)) { - trap(0x1800); - } - puVar13 = puVar3; - if ((int)sVar1 % (int)(short)wVar2 == 1) { + puVar13 = puVar13 + 10; + } while (iVar15 < 400); + proc_7F03E27C(param_1,afStack52 + 3,afStack52,afStack52[0] - *(float *)(param_1 + 8)); + iVar15 = 0; + bVar4 = false; + if ((short)(&WORD_80040180)[(int)*(short *)((int)puVar3 + 6) * 0xc] < *(short *)(puVar3 + 1) + ) { + bVar4 = true; + puVar13 = puVar3; do { - iVar14 += 0x28; - if ((float)puVar13[5] == 0.00000000) { - uVar9 = get_random_value(); - fVar18 = (float)uVar9; - if ((int)uVar9 < 0) { - fVar18 = fVar18 + 4294967296.00000000; + iVar15 += 0x28; + if (0.00000000 < (float)puVar13[5]) { + bVar4 = false; + break; } - *(float *)(puVar13 + 5) = - (fVar18 * 0.00000000 * 0.50000000 + 1.00000000) * - (float)(int)(short)(&WORD_80040182)[(int)*(short *)((int)puVar3 + 6) * 0xc]; - uVar9 = get_random_value(); - fVar18 = (float)(uVar9 % 0x46); - if (false) { - fVar18 = fVar18 + 4294967296.00000000; - } - *(undefined2 *)(puVar13 + 0xb) = 0; - *(float *)(puVar13 + 10) = fVar18 + 110.00000000; - uVar9 = get_random_value(); - fVar18 = (float)uVar9; - if ((int)uVar9 < 0) { - fVar18 = fVar18 + 4294967296.00000000; - } - *(float *)(puVar13 + 6) = fVar18 * 0.00000000 * flt_800576DC; - uVar9 = get_random_value(); - fVar18 = (float)uVar9; - if ((int)uVar9 < 0) { - fVar18 = fVar18 + 4294967296.00000000; - } - *(float *)(puVar13 + 7) = - (float)(&DWORD_80040184)[(int)*(short *)((int)puVar3 + 6) * 6] * - (0.50000000 - fVar18 * 0.00000000); - puVar13[2] = *(undefined4 *)(param_1 + 8); - puVar13[3] = *(undefined4 *)(param_1 + 0xc); - puVar13[4] = *(undefined4 *)(param_1 + 0x10); - uVar9 = get_random_value(); - fVar18 = (float)uVar9; - if ((int)uVar9 < 0) { - fVar18 = fVar18 + 4294967296.00000000; - } - *(float *)(puVar13 + 8) = fVar18 * 0.00000000 * 0.50000000; - uVar9 = get_random_value(); - fVar18 = (float)uVar9; - if ((int)uVar9 < 0) { - fVar18 = fVar18 + 4294967296.00000000; - } - *(float *)(puVar13 + 9) = fVar18 * 0.00000000 * 0.50000000; - if ((longlong) - ((int)(short)(&WORD_8004017c)[(int)*(short *)((int)puVar3 + 6) * 0xc] - - (int)(short)(&WORD_80040190)[(int)*(short *)((int)puVar3 + 6) * 0xc]) < - (longlong)*(short *)(puVar3 + 1)) { - *(float *)(puVar13 + 10) = - (float)puVar13[10] * - ((float)((int)(short)(&WORD_8004017c)[(int)*(short *)((int)puVar3 + 6) * 0xc] - - (int)*(short *)(puVar3 + 1)) / - (float)(int)(short)(&WORD_80040190)[(int)*(short *)((int)puVar3 + 6) * 0xc]); - } - break; - } - puVar13 = puVar13 + 10; - } while (iVar14 != 400); - } + puVar13 = puVar13 + 10; + } while (iVar15 != 400); } - iVar15 += 1; - if (iVar15 == (int)fVar16) break; - sVar1 = *(short *)(puVar3 + 1); - } while( true ); - } - fStack40 = *(float *)(param_1 + 8) - 1.00000000; - iVar15 = 0; - fStack36 = *(float *)(param_1 + 0xc) - 1.00000000; - fStack32 = *(float *)(param_1 + 0x10) - 1.00000000; - fStack52 = *(float *)(param_1 + 8) + 1.00000000; - fStack48 = *(float *)(param_1 + 0xc) + 1.00000000; - fStack44 = *(float *)(param_1 + 0x10) + 1.00000000; - puVar13 = puVar3; - do { - iVar15 += 0x28; - iVar14 = 0; - pfVar10 = &fStack52 + 3; - puVar12 = puVar13; - if ((float)puVar13[5] != 0.00000000) { - do { - pfVar11 = (float *)(puVar12 + 2); - puVar12 = puVar12 + 1; - fVar17 = *pfVar11 - (float)puVar13[5]; - pfVar11 = (float *)((int)&fStack52 + iVar14); - if (fVar17 < *pfVar10) { - *pfVar10 = fVar17; - } - else { - if (*pfVar11 < fVar17) { - *pfVar11 = fVar17; - } - } - pfVar10 = pfVar10 + 1; - iVar14 += 4; - } while (pfVar10 != &fStack52 + 6); - } - puVar13 = puVar13 + 10; - } while (iVar15 < 400); - proc_7F03E27C(param_1,&fStack52 + 3,&fStack52,fStack52 - *(float *)(param_1 + 8)); - iVar15 = 0; - bVar4 = false; - if ((short)(&WORD_80040180)[(int)*(short *)((int)puVar3 + 6) * 0xc] < *(short *)(puVar3 + 1)) { - bVar4 = true; - puVar13 = puVar3; - do { - iVar15 += 0x28; - if (0.00000000 < (float)puVar13[5]) { - bVar4 = false; - break; + uVar8 = 0; + if (bVar4) { + *puVar3 = 0; + uVar8 = 1; } - puVar13 = puVar13 + 10; - } while (iVar15 != 400); } - uVar8 = 0; - if (bVar4) { - *puVar3 = 0; - uVar8 = 1; - } - } - return uVar8; + return uVar8; } @@ -113883,23 +112895,23 @@ undefined8 proc_7F09E8AC(char *param_1) undefined8 proc_7F09EF9C(int param_1) { - int iVar1; - float fVar2; - - iVar1 = proc_7F0783C4(); - *(float *)(param_1 + 0x18) = - -(*(float *)(iVar1 + 0x38) + - *(float *)(iVar1 + 8) * *(float *)(param_1 + 8) + - *(float *)(iVar1 + 0x18) * *(float *)(param_1 + 0xc) + - *(float *)(iVar1 + 0x28) * *(float *)(param_1 + 0x10)); - fVar2 = *(float *)(param_1 + 0x18); - if (fVar2 < 100.00000000) { - *(float *)(param_1 + 0x18) = fVar2 * 0.50000000; - } - else { - *(float *)(param_1 + 0x18) = fVar2 - 100.00000000; - } - return 0; + int iVar1; + float fVar2; + + iVar1 = get_BONDdata_field_10CC(); + *(float *)(param_1 + 0x18) = + -(*(float *)(iVar1 + 0x38) + + *(float *)(iVar1 + 8) * *(float *)(param_1 + 8) + + *(float *)(iVar1 + 0x18) * *(float *)(param_1 + 0xc) + + *(float *)(iVar1 + 0x28) * *(float *)(param_1 + 0x10)); + fVar2 = *(float *)(param_1 + 0x18); + if (fVar2 < 100.00000000) { + *(float *)(param_1 + 0x18) = fVar2 * 0.50000000; + } + else { + *(float *)(param_1 + 0x18) = fVar2 - 100.00000000; + } + return 0; } @@ -113907,71 +112919,71 @@ undefined8 proc_7F09EF9C(int param_1) longlong proc_7F09F03C(char *param_1,longlong param_2,longlong param_3) { - byte bVar1; - int iVar2; - float *pfVar4; - longlong lVar3; - uint *puVar5; - void *virtualAddress; - u32 uVar6; - undefined4 *puVar7; - int iVar8; - int iVar9; - float extraout_f12; - float extraout_f14; - float fStack24; - float fStack20; - - bVar1 = param_1[0x2c]; - iVar2 = *(int *)(param_1 + 4); - pfVar4 = (float *)proc_7F0BCA14((uint)bVar1); - if (param_3 != 0) { - lVar3 = proc_7F054A64(param_1,&fStack24); - if (lVar3 < 1) { - puVar5 = proc_7F0B4FB4((uint *)param_2); + byte bVar1; + int iVar2; + float *pfVar4; + longlong lVar3; + uint *puVar5; + void *virtualAddress; + u32 uVar6; + undefined4 *puVar7; + int iVar8; + int iVar9; + float extraout_f12; + float extraout_f14; + float fStack24; + float fStack20; + + bVar1 = param_1[0x2c]; + iVar2 = *(int *)(param_1 + 4); + pfVar4 = (float *)proc_7F0BCA14((uint)bVar1); + if (param_3 != 0) { + lVar3 = proc_7F054A64(param_1,&fStack24); + if (lVar3 < 1) { + puVar5 = proc_7F0B4FB4((uint *)param_2); + } + else { + puVar5 = proc_7F0B4FF4((uint *)param_2,extraout_f12,extraout_f14,fStack24,fStack20); + } + *puVar5 = 0xb6000000; + puVar5[1] = 0x13000; + puVar5[2] = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10E0(); + uVar6 = osVirtualToPhysical(virtualAddress); + puVar5[3] = uVar6; + puVar7 = proc_7F0BC9C4(puVar5 + 4,(uint)bVar1); + *puVar7 = 0x1000040; + uVar6 = osVirtualToPhysical(&DAT_8007a100); + puVar7[1] = uVar6; + puVar7[2] = 0xbc000806; + uVar6 = osVirtualToPhysical(pGlobalimagetable); + puVar7[3] = uVar6; + puVar7[4] = 0x6000000; + puVar7[5] = 0x2000000; + puVar7[7] = 0x80; + puVar7[6] = 0xba000602; + puVar7 = puVar7 + 8; + iVar9 = 0; + iVar8 = iVar2; + do { + if (0.00000000 < *(float *)(iVar8 + 0x14)) { + puVar7 = proc_7F09DDA4(iVar2,(float *)(iVar8 + 8),puVar7,pfVar4); + } + else { + *(undefined4 *)(iVar8 + 0x14) = 0; + } + iVar9 += 0x28; + iVar8 += 0x28; + } while (iVar9 != 400); + puVar7[1] = 0x40; + *puVar7 = 0xba000602; + puVar7[2] = 0x1030040; + param_2 = (longlong)(int)(puVar7 + 4); + virtualAddress = (void *)get_BONDdata_field_10D8(); + uVar6 = osVirtualToPhysical(virtualAddress); + puVar7[3] = uVar6; } - else { - puVar5 = proc_7F0B4FF4((uint *)param_2,extraout_f12,extraout_f14,fStack24,fStack20); - } - *puVar5 = 0xb6000000; - puVar5[1] = 0x13000; - puVar5[2] = 0x1030040; - virtualAddress = (void *)proc_7F078394(); - uVar6 = osVirtualToPhysical(virtualAddress); - puVar5[3] = uVar6; - puVar7 = proc_7F0BC9C4(puVar5 + 4,(uint)bVar1); - *puVar7 = 0x1000040; - uVar6 = osVirtualToPhysical(&DAT_8007a100); - puVar7[1] = uVar6; - puVar7[2] = 0xbc000806; - uVar6 = osVirtualToPhysical(ptr_explosionDL); - puVar7[3] = uVar6; - puVar7[4] = 0x6000000; - puVar7[5] = 0x2000000; - puVar7[7] = 0x80; - puVar7[6] = 0xba000602; - puVar7 = puVar7 + 8; - iVar9 = 0; - iVar8 = iVar2; - do { - if (0.00000000 < *(float *)(iVar8 + 0x14)) { - puVar7 = proc_7F09DDA4(iVar2,(float *)(iVar8 + 8),puVar7,pfVar4); - } - else { - *(undefined4 *)(iVar8 + 0x14) = 0; - } - iVar9 += 0x28; - iVar8 += 0x28; - } while (iVar9 != 400); - puVar7[1] = 0x40; - *puVar7 = 0xba000602; - puVar7[2] = 0x1030040; - param_2 = (longlong)(int)(puVar7 + 4); - virtualAddress = (void *)proc_7F078374(); - uVar6 = osVirtualToPhysical(virtualAddress); - puVar7[3] = uVar6; - } - return param_2; + return param_2; } @@ -113979,207 +112991,207 @@ longlong proc_7F09F03C(char *param_1,longlong param_2,longlong param_3) void proc_7F09F254(float *param_1,float param_2,float param_3,float param_4,float param_5) { - short sVar1; - u32 uVar2; - char cVar3; - byte bVar4; - float in_a3_lo; - short sVar5; - float fVar6; - float fVar7; - float fVar8; - float in_stack_00000010; - - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar8 = (fVar6 * 0.00000000 + fVar6 * 0.00000000) - 1.00000000; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar6 = fVar6 * 0.00000000 * flt_800576E0 - flt_800576E4; - uVar2 = get_random_value(); - *(undefined4 *)(DAT_8007a14c + DAT_80040800 * 0x78) = 1; - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 4) = *param_1 + param_4 * fVar8; - fVar7 = (float)uVar2; - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 8) = param_1[1] + param_4 * fVar6; - if ((int)uVar2 < 0) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar7 = (fVar7 * 0.00000000 + fVar7 * 0.00000000) - 1.00000000; - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0xc) = param_1[2] + param_4 * fVar7; - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x1c) = fVar8 * param_5; - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x20) = fVar6 * in_a3_lo; - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x24) = fVar7 * param_5; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x38) = - (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x3a) = 0; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x3c) = - (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x48) = - (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x4a) = 0; - uVar2 = get_random_value(); - fVar6 = -in_stack_00000010; - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x4c) = - (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x58) = - (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x5a) = 0; - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x5c) = - (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x68) = - (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x6a) = 0; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x6c) = - (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); - uVar2 = get_random_value(); - sVar5 = (short)((uVar2 & 3) << 8); - uVar2 = get_random_value(); - sVar1 = (short)((uVar2 & 3) << 8); - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x40) = sVar5 + 0xe0; - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x42) = sVar1 + 0xe0; - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x50) = sVar5 + 0xe0; - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x52) = sVar1; - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x60) = sVar5; - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x62) = sVar1; - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x70) = sVar5; - *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x72) = sVar1 + 0xe0; - uVar2 = get_random_value(); - if ((uVar2 & 1) == 0) { + short sVar1; + u32 uVar2; + char cVar3; + byte bVar4; + float in_a3_lo; + short sVar5; + float fVar6; + float fVar7; + float fVar8; + float in_stack_00000010; + uVar2 = get_random_value(); - bVar4 = (byte)uVar2 & 0x3f; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x46) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x45) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x44) = bVar4; + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + fVar8 = (fVar6 * 0.00000000 + fVar6 * 0.00000000) - 1.00000000; uVar2 = get_random_value(); - bVar4 = (byte)uVar2 & 0x3f; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x56) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x55) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x54) = bVar4; + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + fVar6 = fVar6 * 0.00000000 * flt_800576E0 - flt_800576E4; uVar2 = get_random_value(); - bVar4 = (byte)uVar2 & 0x3f; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x66) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x65) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 100) = bVar4; + *(undefined4 *)(DAT_8007a14c + DAT_80040800 * 0x78) = 1; + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 4) = *param_1 + param_4 * fVar8; + fVar7 = (float)uVar2; + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 8) = param_1[1] + param_4 * fVar6; + if ((int)uVar2 < 0) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar7 = (fVar7 * 0.00000000 + fVar7 * 0.00000000) - 1.00000000; + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0xc) = param_1[2] + param_4 * fVar7; + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x1c) = fVar8 * param_5; + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x20) = fVar6 * in_a3_lo; + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x24) = fVar7 * param_5; uVar2 = get_random_value(); - bVar4 = (byte)uVar2 & 0x3f; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x76) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x75) = bVar4; - *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x74) = bVar4; - } - else { + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x38) = + (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x3a) = 0; uVar2 = get_random_value(); - cVar3 = -1 - ((byte)uVar2 & 0x3f); - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x46) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x45) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x44) = cVar3; + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x3c) = + (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); uVar2 = get_random_value(); - cVar3 = -1 - ((byte)uVar2 & 0x3f); - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x56) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x55) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x54) = cVar3; + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x48) = + (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x4a) = 0; uVar2 = get_random_value(); - cVar3 = -1 - ((byte)uVar2 & 0x3f); - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x66) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x65) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 100) = cVar3; + fVar6 = -in_stack_00000010; + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x4c) = + (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); uVar2 = get_random_value(); - cVar3 = -1 - ((byte)uVar2 & 0x3f); - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x76) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x75) = cVar3; - *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x74) = cVar3; - } - *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x47) = 0xdc; - *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x57) = 0xdc; - *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x67) = 0xdc; - *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x77) = 0xdc; - uVar2 = get_random_value(); - fVar6 = flt_800576E8; - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x10) = fVar8 * 0.00000000 * flt_800576E8; - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x14) = fVar8 * 0.00000000 * fVar6; - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x18) = fVar8 * 0.00000000 * fVar6; - uVar2 = get_random_value(); - fVar6 = flt_800576EC; - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x28) = fVar8 * 0.00000000 * flt_800576EC; - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x2c) = fVar8 * 0.00000000 * fVar6; - uVar2 = get_random_value(); - fVar8 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar8 = fVar8 + 4294967296.00000000; - } - *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x30) = fVar8 * 0.00000000 * fVar6; - DAT_80040800 += 1; - if (DAT_8007a148 <= DAT_80040800) { - DAT_80040800 = 0; - } - return; + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x58) = + (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x5a) = 0; + uVar2 = get_random_value(); + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x5c) = + (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); + uVar2 = get_random_value(); + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x68) = + (short)(int)((fVar8 * 0.00000000 * 0.75000000 + 0.75000000) * fVar6); + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x6a) = 0; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x6c) = + (short)(int)((fVar6 * 0.00000000 * 0.75000000 + 0.75000000) * in_stack_00000010); + uVar2 = get_random_value(); + sVar5 = (short)((uVar2 & 3) << 8); + uVar2 = get_random_value(); + sVar1 = (short)((uVar2 & 3) << 8); + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x40) = sVar5 + 0xe0; + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x42) = sVar1 + 0xe0; + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x50) = sVar5 + 0xe0; + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x52) = sVar1; + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x60) = sVar5; + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x62) = sVar1; + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x70) = sVar5; + *(short *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x72) = sVar1 + 0xe0; + uVar2 = get_random_value(); + if ((uVar2 & 1) == 0) { + uVar2 = get_random_value(); + bVar4 = (byte)uVar2 & 0x3f; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x46) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x45) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x44) = bVar4; + uVar2 = get_random_value(); + bVar4 = (byte)uVar2 & 0x3f; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x56) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x55) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x54) = bVar4; + uVar2 = get_random_value(); + bVar4 = (byte)uVar2 & 0x3f; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x66) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x65) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 100) = bVar4; + uVar2 = get_random_value(); + bVar4 = (byte)uVar2 & 0x3f; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x76) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x75) = bVar4; + *(byte *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x74) = bVar4; + } + else { + uVar2 = get_random_value(); + cVar3 = -1 - ((byte)uVar2 & 0x3f); + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x46) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x45) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x44) = cVar3; + uVar2 = get_random_value(); + cVar3 = -1 - ((byte)uVar2 & 0x3f); + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x56) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x55) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x54) = cVar3; + uVar2 = get_random_value(); + cVar3 = -1 - ((byte)uVar2 & 0x3f); + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x66) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x65) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 100) = cVar3; + uVar2 = get_random_value(); + cVar3 = -1 - ((byte)uVar2 & 0x3f); + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x76) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x75) = cVar3; + *(char *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x74) = cVar3; + } + *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x47) = 0xdc; + *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x57) = 0xdc; + *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x67) = 0xdc; + *(undefined *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x77) = 0xdc; + uVar2 = get_random_value(); + fVar6 = flt_800576E8; + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x10) = fVar8 * 0.00000000 * flt_800576E8; + uVar2 = get_random_value(); + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x14) = fVar8 * 0.00000000 * fVar6; + uVar2 = get_random_value(); + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x18) = fVar8 * 0.00000000 * fVar6; + uVar2 = get_random_value(); + fVar6 = flt_800576EC; + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x28) = fVar8 * 0.00000000 * flt_800576EC; + uVar2 = get_random_value(); + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x2c) = fVar8 * 0.00000000 * fVar6; + uVar2 = get_random_value(); + fVar8 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar8 = fVar8 + 4294967296.00000000; + } + *(float *)(DAT_8007a14c + DAT_80040800 * 0x78 + 0x30) = fVar8 * 0.00000000 * fVar6; + DAT_80040800 += 1; + if (DAT_8007a148 <= DAT_80040800) { + DAT_80040800 = 0; + } + return; } @@ -114187,111 +113199,116 @@ void proc_7F09F254(float *param_1,float param_2,float param_3,float param_4,floa void proc_7F09FD3C(void) { - float fVar1; - float fVar2; - float fVar3; - int iVar4; - u32 uVar5; - int *piVar6; - uint uVar7; - int iVar8; - int iVar9; - float fVar10; - float fVar11; - uint uVar12; - float fVar13; - - fVar3 = flt_800576F8; - fVar2 = flt_800576F4; - fVar1 = flt_800576F0; - if (clock_timer < 0xf) { - fVar13 = (float)clock_timer; - } - else { - fVar13 = 15.00000000; - } - iVar9 = 0; - iVar8 = 0; - if (0 < DAT_8007a148) { - do { - iVar4 = *(int *)(DAT_8007a14c + iVar8); - if (0 < iVar4) { - uVar12 = (uint)fVar13; - uVar7 = 0; - *(int *)(DAT_8007a14c + iVar8) = iVar4 + uVar12; - iVar4 = DAT_8007a14c + iVar8; - *(float *)(iVar4 + 0x10) = *(float *)(iVar4 + 0x10) + *(float *)(iVar4 + 0x28) * fVar13; - iVar4 = DAT_8007a14c + iVar8; - *(float *)(iVar4 + 0x14) = *(float *)(iVar4 + 0x14) + *(float *)(iVar4 + 0x2c) * fVar13; - iVar4 = DAT_8007a14c + iVar8; - *(float *)(iVar4 + 0x18) = *(float *)(iVar4 + 0x18) + *(float *)(iVar4 + 0x30) * fVar13; - iVar4 = DAT_8007a14c + iVar8; - *(float *)(iVar4 + 4) = *(float *)(iVar4 + 4) + *(float *)(iVar4 + 0x1c) * fVar13; - iVar4 = DAT_8007a14c + iVar8; - *(float *)(iVar4 + 0xc) = *(float *)(iVar4 + 0xc) + *(float *)(iVar4 + 0x24) * fVar13; - if (0 < (int)uVar12) { - if ((uVar12 & 1) != 0) { - uVar7 = 1; - iVar4 = DAT_8007a14c + iVar8; - *(float *)(iVar4 + 8) = *(float *)(iVar4 + 8) + *(float *)(iVar4 + 0x20); - fVar10 = *(float *)(DAT_8007a14c + iVar8 + 0x20); - if (-3.75000000 < fVar10) { - *(float *)(DAT_8007a14c + iVar8 + 0x20) = fVar10 - fVar3; - } - if (uVar12 == 1) goto LAB_7f09ff70; - } - do { - uVar7 += 2; - iVar4 = DAT_8007a14c + iVar8; - *(float *)(iVar4 + 8) = *(float *)(iVar4 + 8) + *(float *)(iVar4 + 0x20); - iVar4 = DAT_8007a14c + iVar8; - fVar10 = *(float *)(iVar4 + 0x20); - if (-3.75000000 < fVar10) { - *(float *)(iVar4 + 0x20) = fVar10 - fVar3; - iVar4 = DAT_8007a14c + iVar8; - fVar10 = *(float *)(iVar4 + 0x20); - fVar11 = *(float *)(iVar4 + 8); - } - else { - fVar11 = *(float *)(iVar4 + 8); - } - *(float *)(iVar4 + 8) = fVar11 + fVar10; - fVar10 = *(float *)(DAT_8007a14c + iVar8 + 0x20); - if (-3.75000000 < fVar10) { - *(float *)(DAT_8007a14c + iVar8 + 0x20) = fVar10 - fVar3; - } - } while (uVar7 != uVar12); - } + float fVar1; + float fVar2; + float fVar3; + int iVar4; + u32 uVar5; + int *piVar6; + uint uVar7; + int iVar8; + int iVar9; + float fVar10; + float fVar11; + uint uVar12; + float fVar13; + + fVar3 = flt_800576F8; + fVar2 = flt_800576F4; + fVar1 = flt_800576F0; + if (clock_timer < 0xf) { + fVar13 = (float)clock_timer; + } + else { + fVar13 = 15.00000000; + } + iVar9 = 0; + iVar8 = 0; + if (0 < DAT_8007a148) { + do { + iVar4 = *(int *)(DAT_8007a14c + iVar8); + if (0 < iVar4) { + uVar12 = (uint)fVar13; + uVar7 = 0; + *(int *)(DAT_8007a14c + iVar8) = iVar4 + uVar12; + iVar4 = DAT_8007a14c + iVar8; + *(float *)(iVar4 + 0x10) = + *(float *)(iVar4 + 0x10) + *(float *)(iVar4 + 0x28) * fVar13; + iVar4 = DAT_8007a14c + iVar8; + *(float *)(iVar4 + 0x14) = + *(float *)(iVar4 + 0x14) + *(float *)(iVar4 + 0x2c) * fVar13; + iVar4 = DAT_8007a14c + iVar8; + *(float *)(iVar4 + 0x18) = + *(float *)(iVar4 + 0x18) + *(float *)(iVar4 + 0x30) * fVar13; + iVar4 = DAT_8007a14c + iVar8; + *(float *)(iVar4 + 4) = *(float *)(iVar4 + 4) + *(float *)(iVar4 + 0x1c) * fVar13; + iVar4 = DAT_8007a14c + iVar8; + *(float *)(iVar4 + 0xc) = + *(float *)(iVar4 + 0xc) + *(float *)(iVar4 + 0x24) * fVar13; + if (0 < (int)uVar12) { + if ((uVar12 & 1) != 0) { + uVar7 = 1; + iVar4 = DAT_8007a14c + iVar8; + *(float *)(iVar4 + 8) = *(float *)(iVar4 + 8) + *(float *)(iVar4 + 0x20); + fVar10 = *(float *)(DAT_8007a14c + iVar8 + 0x20); + if (-3.75000000 < fVar10) { + *(float *)(DAT_8007a14c + iVar8 + 0x20) = fVar10 - fVar3; + } + if (uVar12 == 1) goto LAB_7f09ff70; + } + do { + uVar7 += 2; + iVar4 = DAT_8007a14c + iVar8; + *(float *)(iVar4 + 8) = *(float *)(iVar4 + 8) + *(float *)(iVar4 + 0x20); + iVar4 = DAT_8007a14c + iVar8; + fVar10 = *(float *)(iVar4 + 0x20); + if (-3.75000000 < fVar10) { + *(float *)(iVar4 + 0x20) = fVar10 - fVar3; + iVar4 = DAT_8007a14c + iVar8; + fVar10 = *(float *)(iVar4 + 0x20); + fVar11 = *(float *)(iVar4 + 8); + } + else { + fVar11 = *(float *)(iVar4 + 8); + } + *(float *)(iVar4 + 8) = fVar11 + fVar10; + fVar10 = *(float *)(DAT_8007a14c + iVar8 + 0x20); + if (-3.75000000 < fVar10) { + *(float *)(DAT_8007a14c + iVar8 + 0x20) = fVar10 - fVar3; + } + } while (uVar7 != uVar12); + } LAB_7f09ff70: - piVar6 = (int *)(DAT_8007a14c + iVar8); - if (*piVar6 < 0x65) { - fVar10 = (float)piVar6[2]; - } - else { - uVar5 = get_random_value(); - if (((uVar5 & 0x1f) == 0) || (piVar6 = (int *)(DAT_8007a14c + iVar8), *piVar6 == 300)) { - *(undefined4 *)(DAT_8007a14c + iVar8) = 0; - piVar6 = (int *)(DAT_8007a14c + iVar8); - fVar10 = (float)piVar6[2]; - } - else { - fVar10 = (float)piVar6[2]; - } - } - if (fVar2 <= fVar10) { - if (fVar1 < fVar10) { - *piVar6 = 0; - } - } - else { - *piVar6 = 0; - } - } - iVar9 += 1; - iVar8 += 0x78; - } while (iVar9 < DAT_8007a148); - } - return; + piVar6 = (int *)(DAT_8007a14c + iVar8); + if (*piVar6 < 0x65) { + fVar10 = (float)piVar6[2]; + } + else { + uVar5 = get_random_value(); + if (((uVar5 & 0x1f) == 0) || + (piVar6 = (int *)(DAT_8007a14c + iVar8), *piVar6 == 300)) { + *(undefined4 *)(DAT_8007a14c + iVar8) = 0; + piVar6 = (int *)(DAT_8007a14c + iVar8); + fVar10 = (float)piVar6[2]; + } + else { + fVar10 = (float)piVar6[2]; + } + } + if (fVar2 <= fVar10) { + if (fVar1 < fVar10) { + *piVar6 = 0; + } + } + else { + *piVar6 = 0; + } + } + iVar9 += 1; + iVar8 += 0x78; + } while (iVar9 < DAT_8007a148); + } + return; } @@ -114299,59 +113316,59 @@ LAB_7f09ff70: undefined4 * proc_7F0A0034(undefined4 *param_1) { - float fVar1; - float fVar2; - u32 uVar3; - int *piVar4; - float *virtualAddress; - int iVar5; - int iVar6; - float afStack64 [12]; - float fStack16; - float fStack12; - float fStack8; - - param_1[1] = 0x3000; - *param_1 = 0xb6000000; - param_1[2] = 0xbc000806; - uVar3 = osVirtualToPhysical(ptr_explosionDL); - param_1[3] = uVar3; - param_1[4] = 0x6000000; - param_1[5] = 0x2000a50; - param_1[6] = 0xb900031d; - param_1[7] = 0x5049d8; - fVar2 = flt_80057700; - fVar1 = flt_800576FC; - param_1 = param_1 + 8; - iVar6 = 0; - iVar5 = 0; - if (0 < DAT_8007a148) { - do { - piVar4 = (int *)(DAT_8007a14c + iVar5); - if (0 < *piVar4) { - proc_7F05892C(piVar4 + 1,(float *)(piVar4 + 4),afStack64); - virtualAddress = (float *)proc_7F0783C4(); - proc_7F058098(virtualAddress,afStack64); - if ((((fStack16 < fVar2) && (fVar1 < fStack16)) && (fStack12 < fVar2)) && - (((fVar1 < fStack12 && (fStack8 < fVar2)) && (fVar1 < fStack8)))) { - proc_7F0BD6E0(); - proc_7F058C9C((int)afStack64,(uint *)virtualAddress); - *param_1 = 0x1020040; - uVar3 = osVirtualToPhysical(virtualAddress); - param_1[1] = uVar3; - param_1[2] = 0x4300040; - uVar3 = osVirtualToPhysical((void *)(DAT_8007a14c + iVar5 + 0x38)); - param_1[3] = uVar3; - param_1[5] = 0x2010; - param_1[4] = 0xb1000032; - param_1 = param_1 + 6; - } - } - iVar6 += 1; - iVar5 += 0x78; - } while (iVar6 < DAT_8007a148); - } - return param_1; + float fVar1; + float fVar2; + u32 uVar3; + int *piVar4; + float *virtualAddress; + int iVar5; + int iVar6; + float afStack64 [12]; + float fStack16; + float fStack12; + float fStack8; + + param_1[1] = 0x3000; + *param_1 = 0xb6000000; + param_1[2] = 0xbc000806; + uVar3 = osVirtualToPhysical(pGlobalimagetable); + param_1[3] = uVar3; + param_1[4] = 0x6000000; + param_1[5] = 0x2000a50; + param_1[6] = 0xb900031d; + param_1[7] = 0x5049d8; + fVar2 = flt_80057700; + fVar1 = flt_800576FC; + param_1 = param_1 + 8; + iVar6 = 0; + iVar5 = 0; + if (0 < DAT_8007a148) { + do { + piVar4 = (int *)(DAT_8007a14c + iVar5); + if (0 < *piVar4) { + proc_7F05892C(piVar4 + 1,(float *)(piVar4 + 4),afStack64); + virtualAddress = (float *)get_BONDdata_field_10CC(); + sub_GAME_7F058098(virtualAddress,afStack64); + if ((((fStack16 < fVar2) && (fVar1 < fStack16)) && (fStack12 < fVar2)) && + (((fVar1 < fStack12 && (fStack8 < fVar2)) && (fVar1 < fStack8)))) { + proc_7F0BD6E0(); + proc_7F058C9C((int)afStack64,(uint *)virtualAddress); + *param_1 = 0x1020040; + uVar3 = osVirtualToPhysical(virtualAddress); + param_1[1] = uVar3; + param_1[2] = 0x4300040; + uVar3 = osVirtualToPhysical((void *)(DAT_8007a14c + iVar5 + 0x38)); + param_1[3] = uVar3; + param_1[5] = 0x2010; + param_1[4] = 0xb1000032; + param_1 = param_1 + 6; + } + } + iVar6 += 1; + iVar5 += 0x78; + } while (iVar6 < DAT_8007a148); + } + return param_1; } @@ -114359,138 +113376,142 @@ undefined4 * proc_7F0A0034(undefined4 *param_1) void proc_7F0A027C(float *param_1,float param_2,short param_3) { - undefined4 uVar1; - undefined4 uVar2; - undefined4 uVar3; - undefined4 uVar4; - u32 uVar6; - float *pfVar7; - ulonglong uVar5; - short in_a2_lo; - char cVar8; - int iVar9; - undefined uVar10; - f32 fVar11; - float fVar12; - float __x; - float fVar13; - - uVar4 = dword_8004092C; - uVar3 = dword_80040928; - uVar2 = dword_80040924; - uVar1 = dword_80040920; - fVar12 = (float)(int)param_3; - uVar6 = get_random_value(); - __x = (float)uVar6; - if ((int)uVar6 < 0) { - __x = __x + 4294967296.00000000; - } - __x = __x * 0.00000000 * flt_80057704; - uVar6 = get_random_value(); - cVar8 = -1 - (char)(uVar6 % 0x50); - pfVar7 = (float *)proc_7F0BCA14((int)in_a2_lo); - uVar5 = get_num_players(); - if ((longlong)uVar5 < 2) { - if (200.00000000 < fVar12) { - fVar12 = 200.00000000; + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + u32 uVar5; + float *pfVar6; + s32 sVar7; + short in_a2_lo; + char cVar8; + int iVar9; + undefined uVar10; + f32 fVar11; + float fVar12; + float __x; + float fVar13; + + uVar4 = dword_8004092C; + uVar3 = dword_80040928; + uVar2 = dword_80040924; + uVar1 = dword_80040920; + fVar12 = (float)(int)param_3; + uVar5 = get_random_value(); + __x = (float)uVar5; + if ((int)uVar5 < 0) { + __x = __x + 4294967296.00000000; } - uVar6 = get_random_value(); - fVar13 = (float)uVar6; - if ((int)uVar6 < 0) { - fVar13 = fVar13 + 4294967296.00000000; + __x = __x * 0.00000000 * flt_80057704; + uVar5 = get_random_value(); + cVar8 = -1 - (char)(uVar5 % 0x50); + pfVar6 = (float *)proc_7F0BCA14((int)in_a2_lo); + sVar7 = get_num_players(); + if (sVar7 < 2) { + if (200.00000000 < fVar12) { + fVar12 = 200.00000000; + } + uVar5 = get_random_value(); + fVar13 = (float)uVar5; + if ((int)uVar5 < 0) { + fVar13 = fVar13 + 4294967296.00000000; + } + fVar13 = flt_8005770C + flt_80057708 * fVar13 * 0.00000000; + fVar11 = proc_7F0B483C(); + *param_1 = *param_1 * (float)fVar11 - *pfVar6; + fVar11 = proc_7F0B483C(); + param_1[1] = param_1[1] * (float)fVar11 - pfVar6[1]; + fVar11 = proc_7F0B483C(); + param_1[2] = param_1[2] * (float)fVar11 - pfVar6[2]; + fVar11 = proc_7F0B483C(); + fVar13 = fVar12 * fVar13 * (float)fVar11; + fVar12 = cosf(__x); + fVar12 = fVar12 * fVar13; + __x = sinf(__x); + __x = __x * fVar13; + *(short *)(DAT_8007a150 + DAT_80040804 * 0x58) = in_a2_lo; + *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 4) = *param_1; + *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 8) = param_1[1]; + *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0xc) = param_1[2]; + *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x10) = fVar13; + iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; + *(undefined4 *)(iVar9 + 0x18) = uVar1; + *(undefined4 *)(iVar9 + 0x1c) = uVar2; + *(undefined4 *)(iVar9 + 0x20) = uVar3; + *(undefined4 *)(iVar9 + 0x24) = uVar4; + iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; + *(undefined4 *)(iVar9 + 0x28) = uVar1; + *(undefined4 *)(iVar9 + 0x2c) = uVar2; + *(undefined4 *)(iVar9 + 0x30) = uVar3; + *(undefined4 *)(iVar9 + 0x34) = uVar4; + iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; + *(undefined4 *)(iVar9 + 0x38) = uVar1; + *(undefined4 *)(iVar9 + 0x3c) = uVar2; + *(undefined4 *)(iVar9 + 0x40) = uVar3; + *(undefined4 *)(iVar9 + 0x44) = uVar4; + iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; + *(undefined4 *)(iVar9 + 0x48) = uVar1; + *(undefined4 *)(iVar9 + 0x4c) = uVar2; + *(undefined4 *)(iVar9 + 0x50) = uVar3; + *(undefined4 *)(iVar9 + 0x54) = uVar4; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x18) = (short)(int)(*param_1 + fVar12) + ; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x1a) = + (short)(int)(param_1[1] + 0.50000000); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x1c) = (short)(int)(param_1[2] + __x); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x20) = 0; + *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x22) = (ushort)genericimage->width << 5; + uVar5 = get_random_value(); + uVar10 = (undefined)(uVar5 % 0x32); + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x26) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x25) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x24) = uVar10; + *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x27) = cVar8; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x28) = (short)(int)(*param_1 + __x); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x2a) = + (short)(int)(param_1[1] + 0.50000000); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x2c) = + (short)(int)(param_1[2] - fVar12); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x30) = 0; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x32) = 0; + uVar5 = get_random_value(); + uVar10 = (undefined)(uVar5 % 0x32); + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x36) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x35) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x34) = uVar10; + *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x37) = cVar8; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x38) = (short)(int)(*param_1 - fVar12) + ; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x3a) = + (short)(int)(param_1[1] + 0.50000000); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x3c) = (short)(int)(param_1[2] - __x); + *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x40) = (ushort)genericimage->height << 5; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x42) = 0; + uVar5 = get_random_value(); + uVar10 = (undefined)(uVar5 % 0x32); + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x46) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x45) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x44) = uVar10; + *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x47) = cVar8; + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x48) = (short)(int)(*param_1 - __x); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x4a) = + (short)(int)(param_1[1] + 0.50000000); + *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x4c) = + (short)(int)(param_1[2] + fVar12); + *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x50) = (ushort)genericimage->width << 5; + *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x52) = (ushort)genericimage->height << 5; + uVar5 = get_random_value(); + uVar10 = (undefined)(uVar5 % 0x32); + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x56) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x55) = uVar10; + *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x54) = uVar10; + *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x57) = cVar8; + DAT_80040804 += 1; + if (0x13 < DAT_80040804) { + DAT_80040804 = 0; + } } - fVar13 = flt_8005770C + flt_80057708 * fVar13 * 0.00000000; - fVar11 = proc_7F0B483C(); - *param_1 = *param_1 * (float)fVar11 - *pfVar7; - fVar11 = proc_7F0B483C(); - param_1[1] = param_1[1] * (float)fVar11 - pfVar7[1]; - fVar11 = proc_7F0B483C(); - param_1[2] = param_1[2] * (float)fVar11 - pfVar7[2]; - fVar11 = proc_7F0B483C(); - fVar13 = fVar12 * fVar13 * (float)fVar11; - fVar12 = cosf(__x); - fVar12 = fVar12 * fVar13; - __x = sinf(__x); - __x = __x * fVar13; - *(short *)(DAT_8007a150 + DAT_80040804 * 0x58) = in_a2_lo; - *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 4) = *param_1; - *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 8) = param_1[1]; - *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0xc) = param_1[2]; - *(float *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x10) = fVar13; - iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; - *(undefined4 *)(iVar9 + 0x18) = uVar1; - *(undefined4 *)(iVar9 + 0x1c) = uVar2; - *(undefined4 *)(iVar9 + 0x20) = uVar3; - *(undefined4 *)(iVar9 + 0x24) = uVar4; - iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; - *(undefined4 *)(iVar9 + 0x28) = uVar1; - *(undefined4 *)(iVar9 + 0x2c) = uVar2; - *(undefined4 *)(iVar9 + 0x30) = uVar3; - *(undefined4 *)(iVar9 + 0x34) = uVar4; - iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; - *(undefined4 *)(iVar9 + 0x38) = uVar1; - *(undefined4 *)(iVar9 + 0x3c) = uVar2; - *(undefined4 *)(iVar9 + 0x40) = uVar3; - *(undefined4 *)(iVar9 + 0x44) = uVar4; - iVar9 = DAT_8007a150 + DAT_80040804 * 0x58; - *(undefined4 *)(iVar9 + 0x48) = uVar1; - *(undefined4 *)(iVar9 + 0x4c) = uVar2; - *(undefined4 *)(iVar9 + 0x50) = uVar3; - *(undefined4 *)(iVar9 + 0x54) = uVar4; - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x18) = (short)(int)(*param_1 + fVar12); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x1a) = - (short)(int)(param_1[1] + 0.50000000); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x1c) = (short)(int)(param_1[2] + __x); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x20) = 0; - *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x22) = (ushort)*(byte *)(image + 4) << 5; - uVar6 = get_random_value(); - uVar10 = (undefined)(uVar6 % 0x32); - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x26) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x25) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x24) = uVar10; - *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x27) = cVar8; - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x28) = (short)(int)(*param_1 + __x); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x2a) = - (short)(int)(param_1[1] + 0.50000000); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x2c) = (short)(int)(param_1[2] - fVar12); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x30) = 0; - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x32) = 0; - uVar6 = get_random_value(); - uVar10 = (undefined)(uVar6 % 0x32); - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x36) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x35) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x34) = uVar10; - *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x37) = cVar8; - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x38) = (short)(int)(*param_1 - fVar12); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x3a) = - (short)(int)(param_1[1] + 0.50000000); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x3c) = (short)(int)(param_1[2] - __x); - *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x40) = (ushort)*(byte *)(image + 5) << 5; - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x42) = 0; - uVar6 = get_random_value(); - uVar10 = (undefined)(uVar6 % 0x32); - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x46) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x45) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x44) = uVar10; - *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x47) = cVar8; - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x48) = (short)(int)(*param_1 - __x); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x4a) = - (short)(int)(param_1[1] + 0.50000000); - *(undefined2 *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x4c) = (short)(int)(param_1[2] + fVar12); - *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x50) = (ushort)*(byte *)(image + 4) << 5; - *(short *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x52) = (ushort)*(byte *)(image + 5) << 5; - uVar6 = get_random_value(); - uVar10 = (undefined)(uVar6 % 0x32); - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x56) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x55) = uVar10; - *(undefined *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x54) = uVar10; - *(char *)(DAT_8007a150 + DAT_80040804 * 0x58 + 0x57) = cVar8; - DAT_80040804 += 1; - if (0x13 < DAT_80040804) { - DAT_80040804 = 0; - } - } - return; + return; } @@ -114498,51 +113519,52 @@ void proc_7F0A027C(float *param_1,float param_2,short param_3) undefined4 * proc_7F0A0AB4(undefined4 *param_1) { - short sVar1; - ulonglong uVar2; - undefined4 *puVar3; - u32 uVar4; - int iVar5; - short sVar6; - undefined4 *puStackX0; - - sVar6 = -1; - puStackX0 = param_1; - uVar2 = get_num_players(); - if ((longlong)uVar2 < 2) { - puStackX0[1] = 0x2000; - *puStackX0 = 0xb7000000; - puStackX0[2] = 0xb6000000; - puStackX0[3] = 0x11000; - puStackX0[5] = 0x80; - puStackX0[4] = 0xba000602; - puStackX0 = puStackX0 + 6; - likely_generate_DL_for_image_declaration((uint **)register0x000000ec,image,4,1,2); - iVar5 = 0; - do { - if ((-1 < *(short *)(DAT_8007a150 + iVar5)) && - (uVar2 = proc_7F0B5E50((int)*(short *)(DAT_8007a150 + iVar5)), uVar2 != 0)) { - sVar1 = *(short *)(DAT_8007a150 + iVar5); - puVar3 = puStackX0; - if (sVar6 != sVar1) { - puVar3 = proc_7F0BC9C4(puStackX0,(int)sVar1); - sVar6 = sVar1; - } - puStackX0 = puVar3 + 2; - *puVar3 = 0x4300040; - uVar4 = osVirtualToPhysical((void *)(DAT_8007a150 + iVar5 + 0x18)); - puVar3[1] = uVar4; - puStackX0[1] = 0x2010; - *puStackX0 = 0xb1000032; + short sVar1; + s32 sVar3; + ulonglong uVar2; + undefined4 *puVar4; + u32 uVar5; + int iVar6; + short sVar7; + undefined4 *puStackX0; + + sVar7 = -1; + puStackX0 = param_1; + sVar3 = get_num_players(); + if (sVar3 < 2) { + puStackX0[1] = 0x2000; + *puStackX0 = 0xb7000000; + puStackX0[2] = 0xb6000000; + puStackX0[3] = 0x11000; + puStackX0[5] = 0x80; + puStackX0[4] = 0xba000602; + puStackX0 = puStackX0 + 6; + append_image_to_DL((uint **)register0x000000ec,genericimage,4,1,2); + iVar6 = 0; + do { + if ((-1 < *(short *)(DAT_8007a150 + iVar6)) && + (uVar2 = proc_7F0B5E50((int)*(short *)(DAT_8007a150 + iVar6)), uVar2 != 0)) { + sVar1 = *(short *)(DAT_8007a150 + iVar6); + puVar4 = puStackX0; + if (sVar7 != sVar1) { + puVar4 = proc_7F0BC9C4(puStackX0,(int)sVar1); + sVar7 = sVar1; + } + puStackX0 = puVar4 + 2; + *puVar4 = 0x4300040; + uVar5 = osVirtualToPhysical((void *)(DAT_8007a150 + iVar6 + 0x18)); + puVar4[1] = uVar5; + puStackX0[1] = 0x2010; + *puStackX0 = 0xb1000032; + puStackX0 = puStackX0 + 2; + } + iVar6 += 0x58; + } while (iVar6 != 0x6e0); + puStackX0[1] = 0x40; + *puStackX0 = 0xba000602; puStackX0 = puStackX0 + 2; - } - iVar5 += 0x58; - } while (iVar5 != 0x6e0); - puStackX0[1] = 0x40; - *puStackX0 = 0xba000602; - puStackX0 = puStackX0 + 2; - } - return puStackX0; + } + return puStackX0; } @@ -114550,10 +113572,10 @@ undefined4 * proc_7F0A0AB4(undefined4 *param_1) int proc_7F0A0C74(float param_1) { - if (param_1 < 0.00000000) { - return (int)(param_1 - 0.50000000); - } - return (int)(param_1 + 0.50000000); + if (param_1 < 0.00000000) { + return (int)(param_1 - 0.50000000); + } + return (int)(param_1 + 0.50000000); } @@ -114561,60 +113583,60 @@ int proc_7F0A0C74(float param_1) void proc_7F0A0CCC(int param_1,char param_2) { - undefined2 *puVar1; - int iVar2; - longlong lVar3; - int iVar4; - - lVar3 = (longlong)(int)param_2; - iVar2 = 0; - do { - puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - if (param_1 == *(int *)(puVar1 + 0x24)) { - if (lVar3 == (longlong)*(char *)((int)puVar1 + 0x4d)) { - *puVar1 = 0xffff; + undefined2 *puVar1; + int iVar2; + longlong lVar3; + int iVar4; + + lVar3 = (longlong)(int)param_2; + iVar2 = 0; + do { puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - iVar4 = *(int *)(puVar1 + 0x4c); - } - else { - iVar4 = *(int *)(puVar1 + 0x4c); - } - } - else { - iVar4 = *(int *)(puVar1 + 0x4c); - } - if (param_1 == iVar4) { - if (lVar3 == (longlong)*(char *)((int)puVar1 + 0x9d)) { - puVar1[0x28] = 0xffff; - puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - iVar4 = *(int *)(puVar1 + 0x74); - } - else { - iVar4 = *(int *)(puVar1 + 0x74); - } - } - else { - iVar4 = *(int *)(puVar1 + 0x74); - } - if (param_1 == iVar4) { - if (lVar3 == (longlong)*(char *)((int)puVar1 + 0xed)) { - puVar1[0x50] = 0xffff; - puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - iVar4 = *(int *)(puVar1 + 0x9c); - } - else { - iVar4 = *(int *)(puVar1 + 0x9c); - } - } - else { - iVar4 = *(int *)(puVar1 + 0x9c); - } - iVar2 += 0x140; - if ((param_1 == iVar4) && (lVar3 == (longlong)*(char *)((int)puVar1 + 0x13d))) { - puVar1[0x78] = 0xffff; - } - } while (iVar2 != 8000); - return; + if (param_1 == *(int *)(puVar1 + 0x24)) { + if (lVar3 == (longlong)*(char *)((int)puVar1 + 0x4d)) { + *puVar1 = 0xffff; + puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); + iVar4 = *(int *)(puVar1 + 0x4c); + } + else { + iVar4 = *(int *)(puVar1 + 0x4c); + } + } + else { + iVar4 = *(int *)(puVar1 + 0x4c); + } + if (param_1 == iVar4) { + if (lVar3 == (longlong)*(char *)((int)puVar1 + 0x9d)) { + puVar1[0x28] = 0xffff; + puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); + iVar4 = *(int *)(puVar1 + 0x74); + } + else { + iVar4 = *(int *)(puVar1 + 0x74); + } + } + else { + iVar4 = *(int *)(puVar1 + 0x74); + } + if (param_1 == iVar4) { + if (lVar3 == (longlong)*(char *)((int)puVar1 + 0xed)) { + puVar1[0x50] = 0xffff; + puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); + iVar4 = *(int *)(puVar1 + 0x9c); + } + else { + iVar4 = *(int *)(puVar1 + 0x9c); + } + } + else { + iVar4 = *(int *)(puVar1 + 0x9c); + } + iVar2 += 0x140; + if ((param_1 == iVar4) && (lVar3 == (longlong)*(char *)((int)puVar1 + 0x13d))) { + puVar1[0x78] = 0xffff; + } + } while (iVar2 != 8000); + return; } @@ -114622,58 +113644,58 @@ void proc_7F0A0CCC(int param_1,char param_2) void proc_7F0A0D90(int param_1) { - undefined2 *puVar1; - int iVar2; - int iVar3; - - iVar2 = 0; - do { - puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - if (param_1 == *(int *)(puVar1 + 0x24)) { - if ((&DAT_80040815)[(int)(short)puVar1[1] * 0xc] == '\x02') { - *puVar1 = 0xffff; + undefined2 *puVar1; + int iVar2; + int iVar3; + + iVar2 = 0; + do { puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - iVar3 = *(int *)(puVar1 + 0x4c); - } - else { - iVar3 = *(int *)(puVar1 + 0x4c); - } - } - else { - iVar3 = *(int *)(puVar1 + 0x4c); - } - if (param_1 == iVar3) { - if ((&DAT_80040815)[(int)(short)puVar1[0x29] * 0xc] == '\x02') { - puVar1[0x28] = 0xffff; - puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - iVar3 = *(int *)(puVar1 + 0x74); - } - else { - iVar3 = *(int *)(puVar1 + 0x74); - } - } - else { - iVar3 = *(int *)(puVar1 + 0x74); - } - if (param_1 == iVar3) { - if ((&DAT_80040815)[(int)(short)puVar1[0x51] * 0xc] == '\x02') { - puVar1[0x50] = 0xffff; - puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); - iVar3 = *(int *)(puVar1 + 0x9c); - } - else { - iVar3 = *(int *)(puVar1 + 0x9c); - } - } - else { - iVar3 = *(int *)(puVar1 + 0x9c); - } - iVar2 += 0x140; - if ((param_1 == iVar3) && ((&DAT_80040815)[(int)(short)puVar1[0x79] * 0xc] == '\x02')) { - puVar1[0x78] = 0xffff; - } - } while (iVar2 != 8000); - return; + if (param_1 == *(int *)(puVar1 + 0x24)) { + if ((&DAT_80040815)[(int)(short)puVar1[1] * 0xc] == '\x02') { + *puVar1 = 0xffff; + puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); + iVar3 = *(int *)(puVar1 + 0x4c); + } + else { + iVar3 = *(int *)(puVar1 + 0x4c); + } + } + else { + iVar3 = *(int *)(puVar1 + 0x4c); + } + if (param_1 == iVar3) { + if ((&DAT_80040815)[(int)(short)puVar1[0x29] * 0xc] == '\x02') { + puVar1[0x28] = 0xffff; + puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); + iVar3 = *(int *)(puVar1 + 0x74); + } + else { + iVar3 = *(int *)(puVar1 + 0x74); + } + } + else { + iVar3 = *(int *)(puVar1 + 0x74); + } + if (param_1 == iVar3) { + if ((&DAT_80040815)[(int)(short)puVar1[0x51] * 0xc] == '\x02') { + puVar1[0x50] = 0xffff; + puVar1 = (undefined2 *)(DAT_8007a154 + iVar2); + iVar3 = *(int *)(puVar1 + 0x9c); + } + else { + iVar3 = *(int *)(puVar1 + 0x9c); + } + } + else { + iVar3 = *(int *)(puVar1 + 0x9c); + } + iVar2 += 0x140; + if ((param_1 == iVar3) && ((&DAT_80040815)[(int)(short)puVar1[0x79] * 0xc] == '\x02')) { + puVar1[0x78] = 0xffff; + } + } while (iVar2 != 8000); + return; } @@ -114681,88 +113703,88 @@ void proc_7F0A0D90(int param_1) void proc_7F0A0E98(int param_1) { - float fVar1; - int iVar2; - int iVar3; - int iVar4; - float fVar5; - undefined uVar6; - - iVar2 = 0; - do { - iVar3 = param_1 * 0x50; - fVar5 = ((float)iVar2 / 10.00000000) * 255.00000000; - if (false) { - fVar1 = ROUND(fVar5); - } - else { - fVar1 = FLOOR(fVar5); - } - uVar6 = (undefined)(int)fVar1; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a0f3c; - uVar6 = (undefined)(int)fVar5; - } - else { - if ((int)fVar1 < 0) { + float fVar1; + int iVar2; + int iVar3; + int iVar4; + float fVar5; + undefined uVar6; + + iVar2 = 0; + do { + iVar3 = param_1 * 0x50; + fVar5 = ((float)iVar2 / 10.00000000) * 255.00000000; + if (false) { + fVar1 = ROUND(fVar5); + } + else { + fVar1 = FLOOR(fVar5); + } + uVar6 = (undefined)(int)fVar1; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a0f3c; + uVar6 = (undefined)(int)fVar5; + } + else { + if ((int)fVar1 < 0) { LAB_7f0a0f3c: - uVar6 = 0xff; - } - } - iVar4 = iVar2 + 1; - *(undefined *)(DAT_8007a154 + iVar3 + 0x47) = uVar6; - param_1 += 1; - *(undefined *)(DAT_8007a154 + iVar3 + 0x37) = uVar6; - *(undefined *)(DAT_8007a154 + iVar3 + 0x27) = uVar6; - iVar2 += 2; - *(undefined *)(DAT_8007a154 + iVar3 + 0x17) = uVar6; - iVar3 += 0x50; - if (99 < param_1) { - param_1 = 0; - iVar3 = 0; - } - fVar5 = ((float)iVar4 / 10.00000000) * 255.00000000; - if (false) { - fVar1 = ROUND(fVar5); - } - else { - fVar1 = FLOOR(fVar5); - } - uVar6 = (undefined)(int)fVar1; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a1020; - uVar6 = (undefined)(int)fVar5; - } - else { - if ((int)fVar1 < 0) { + uVar6 = 0xff; + } + } + iVar4 = iVar2 + 1; + *(undefined *)(DAT_8007a154 + iVar3 + 0x47) = uVar6; + param_1 += 1; + *(undefined *)(DAT_8007a154 + iVar3 + 0x37) = uVar6; + *(undefined *)(DAT_8007a154 + iVar3 + 0x27) = uVar6; + iVar2 += 2; + *(undefined *)(DAT_8007a154 + iVar3 + 0x17) = uVar6; + iVar3 += 0x50; + if (99 < param_1) { + param_1 = 0; + iVar3 = 0; + } + fVar5 = ((float)iVar4 / 10.00000000) * 255.00000000; + if (false) { + fVar1 = ROUND(fVar5); + } + else { + fVar1 = FLOOR(fVar5); + } + uVar6 = (undefined)(int)fVar1; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a1020; + uVar6 = (undefined)(int)fVar5; + } + else { + if ((int)fVar1 < 0) { LAB_7f0a1020: - uVar6 = 0xff; - } - } - param_1 += 1; - *(undefined *)(DAT_8007a154 + iVar3 + 0x47) = uVar6; - *(undefined *)(DAT_8007a154 + iVar3 + 0x37) = uVar6; - *(undefined *)(DAT_8007a154 + iVar3 + 0x27) = uVar6; - *(undefined *)(DAT_8007a154 + iVar3 + 0x17) = uVar6; - if (99 < param_1) { - param_1 = 0; - } - if (iVar2 == 10) { - return; - } - } while( true ); + uVar6 = 0xff; + } + } + param_1 += 1; + *(undefined *)(DAT_8007a154 + iVar3 + 0x47) = uVar6; + *(undefined *)(DAT_8007a154 + iVar3 + 0x37) = uVar6; + *(undefined *)(DAT_8007a154 + iVar3 + 0x27) = uVar6; + *(undefined *)(DAT_8007a154 + iVar3 + 0x17) = uVar6; + if (99 < param_1) { + param_1 = 0; + } + if (iVar2 == 10) { + return; + } + } while( true ); } @@ -114771,260 +113793,258 @@ void proc_7F0A108C(float *param_1,float *param_2,short param_3,short param_4,int char param_6,undefined param_7) { - char cVar1; - uint uVar2; - float *pfVar3; - u32 uVar4; - ulonglong uVar5; - ulonglong uVar6; - int iVar7; - byte bVar8; - undefined uVar9; - int iVar10; - int iVar11; - f32 fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - short sStackX10; - byte bStack143; - byte bStack142; - float fStack132; - float fStack128; - float fStack124; - float fStack120; - float fStack116; - float fStack112; - float fStack104; - float fStack88; - float fStack84; - float fStack80; - float fStack76; - float fStack72; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - float fStack44; - float fStack28; - float fStack24; - float fStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack16 = dword_80040930; - uStack12 = dword_80040934; - uStack8 = dword_80040938; - uStack4 = dword_8004093C; - uVar2 = proc_7F0927BC(0xf); - sStackX10 = param_3; - if (uVar2 != 0) { - sStackX10 = 0x10; - } - fStack80 = *param_1; - fStack76 = param_1[1]; - fStack72 = param_1[2]; - iVar11 = (int)sStackX10 * 0xc; - fStack84 = *(float *)(&dword_8004080C + iVar11); - fStack88 = *(float *)(iVar11 + -0x7ffbf7f0); - fVar17 = *param_2; - if ((fVar17 == 0.00000000) && (param_2[2] == 0.00000000)) { - fStack56 = 0.00000000; - fStack60 = 0.00000000; - fStack52 = 0.00000000; - fStack64 = 1.00000000; - fStack44 = 1.00000000; - } - else { - fStack24 = sqrtf(param_2[2] * param_2[2] + fVar17 * fVar17 + param_2[1] * param_2[1]); - fStack20 = *param_2 / fStack24; - fStack28 = param_2[2] / fStack24; - fStack24 = param_2[1] / fStack24; - fVar17 = sqrtf(fStack20 * fStack20 + fStack28 * fStack28); - fStack60 = -fVar17; - fStack44 = fStack28 / fVar17; - fStack56 = fStack24 * (fStack20 / fVar17); - fStack52 = -(fStack20 / fVar17); - fStack64 = fStack24 * fStack44; - } - if (param_5 == 0) { - pfVar3 = (float *)proc_7F0BCA14((int)param_4); - fVar12 = proc_7F0B483C(); - fStack80 = fStack80 * (float)fVar12 - *pfVar3; - fVar12 = proc_7F0B483C(); - fStack76 = fStack76 * (float)fVar12 - pfVar3[1]; - fVar12 = proc_7F0B483C(); - fStack72 = fStack72 * (float)fVar12 - pfVar3[2]; - fVar12 = proc_7F0B483C(); - fStack84 = fStack84 * (float)fVar12; - fVar12 = proc_7F0B483C(); - fStack88 = fStack88 * (float)fVar12; - } - else { - iVar7 = *(int *)(param_5 + 4); - fStack120 = fStack44; - pfVar3 = (float *)(*(int *)(*(int *)(iVar7 + 0x14) + 0xc) + (int)param_6 * 0x40); - fStack116 = 0.00000000; - fStack112 = fStack52; - fStack132 = fStack56; - fStack128 = fStack60; - fStack124 = fStack64; - proc_7F0583D8(pfVar3,&fStack120); - proc_7F0583D8(pfVar3,&fStack132); - fStack104 = sqrtf(fStack112 * fStack112 + fStack120 * fStack120 + fStack116 * fStack116); - fVar17 = sqrtf(fStack124 * fStack124 + fStack132 * fStack132 + fStack128 * fStack128); - fStack84 = fStack84 / fStack104; - fStack88 = fStack88 / fVar17; - if ((byte)(&DAT_80040816)[iVar11] < 2) { - if ((&DAT_80040815)[iVar11] == '\x02') { - *(byte *)(iVar7 + 2) = *(byte *)(iVar7 + 2) | 2; - goto LAB_7f0a13b0; - } - bVar8 = *(byte *)(iVar7 + 2); + char cVar1; + uint uVar2; + float *pfVar3; + u32 uVar4; + ulonglong uVar5; + ulonglong uVar6; + int iVar7; + byte bVar8; + undefined uVar9; + int iVar10; + int iVar11; + int iVar12; + f32 fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + short sStackX10; + byte bStack143; + byte bStack142; + float fStack132; + float fStack128; + float fStack124; + float fStack120; + float fStack116; + float fStack112; + float fStack104; + float fStack88; + float fStack84; + float fStack80; + float fStack76; + float fStack72; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + float fStack44; + float fStack28; + float fStack24; + float fStack20; + undefined4 uStack16; + undefined4 uStack12; + undefined4 uStack8; + undefined4 uStack4; + + uStack16 = dword_80040930; + uStack12 = dword_80040934; + uStack8 = dword_80040938; + uStack4 = dword_8004093C; + uVar2 = cheatCheckIfOn(cheats_cheat_paintball); + sStackX10 = param_3; + if (uVar2 != 0) { + sStackX10 = 0x10; + } + fStack80 = *param_1; + fStack76 = param_1[1]; + iVar12 = (int)sStackX10; + fStack72 = param_1[2]; + iVar11 = iVar12 * 0xc; + fStack84 = *(float *)(&dword_8004080C + iVar11); + fStack88 = *(float *)(iVar11 + -0x7ffbf7f0); + fVar18 = *param_2; + if ((fVar18 == 0.00000000) && (param_2[2] == 0.00000000)) { + fStack56 = 0.00000000; + fStack60 = 0.00000000; + fStack52 = 0.00000000; + fStack64 = 1.00000000; + fStack44 = 1.00000000; } else { - bVar8 = *(byte *)(iVar7 + 2); + fStack24 = sqrtf(param_2[2] * param_2[2] + fVar18 * fVar18 + param_2[1] * param_2[1]); + fStack20 = *param_2 / fStack24; + fStack28 = param_2[2] / fStack24; + fStack24 = param_2[1] / fStack24; + fVar18 = sqrtf(fStack20 * fStack20 + fStack28 * fStack28); + fStack60 = -fVar18; + fStack44 = fStack28 / fVar18; + fStack56 = fStack24 * (fStack20 / fVar18); + fStack52 = -(fStack20 / fVar18); + fStack64 = fStack24 * fStack44; } - *(byte *)(iVar7 + 2) = bVar8 | 1; - } -LAB_7f0a13b0: - *(int *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x48) = param_5; - *(char *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x4c) = param_6; - *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x4d) = param_7; - *(short *)(DAT_8007a154 + DAT_80040808 * 0x50) = param_4; - *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 2) = sStackX10; - iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; - *(undefined4 *)(iVar7 + 8) = uStack16; - *(undefined4 *)(iVar7 + 0xc) = uStack12; - *(undefined4 *)(iVar7 + 0x10) = uStack8; - *(undefined4 *)(iVar7 + 0x14) = uStack4; - iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; - *(undefined4 *)(iVar7 + 0x18) = uStack16; - *(undefined4 *)(iVar7 + 0x1c) = uStack12; - *(undefined4 *)(iVar7 + 0x20) = uStack8; - *(undefined4 *)(iVar7 + 0x24) = uStack4; - iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; - *(undefined4 *)(iVar7 + 0x28) = uStack16; - *(undefined4 *)(iVar7 + 0x2c) = uStack12; - *(undefined4 *)(iVar7 + 0x30) = uStack8; - *(undefined4 *)(iVar7 + 0x34) = uStack4; - iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; - *(undefined4 *)(iVar7 + 0x38) = uStack16; - *(undefined4 *)(iVar7 + 0x3c) = uStack12; - *(undefined4 *)(iVar7 + 0x40) = uStack8; - *(undefined4 *)(iVar7 + 0x44) = uStack4; - fVar17 = fStack84 * fStack44; - fVar15 = fStack88 * fStack56; - iVar7 = proc_7F0A0C74((fStack80 - fVar17) - fVar15); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 8) = (short)iVar7; - fVar13 = fStack88 * fStack60; - iVar7 = proc_7F0A0C74((fStack76 - 0.00000000) - fVar13); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 10) = (short)iVar7; - fVar14 = fStack84 * fStack52; - fVar16 = fStack88 * fStack64; - iVar7 = proc_7F0A0C74((fStack72 - fVar14) - fVar16); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0xc) = (short)iVar7; - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x10) = 0; - *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x12) = - (ushort)*(byte *)(DAT_8008d0bc + iVar11 + 5) << 5; - iVar7 = proc_7F0A0C74((fStack80 - fVar17) + fVar15); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x18) = (short)iVar7; - iVar7 = proc_7F0A0C74((fStack76 - 0.00000000) + fVar13); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x1a) = (short)iVar7; - iVar7 = proc_7F0A0C74((fStack72 - fVar14) + fVar16); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x1c) = (short)iVar7; - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x20) = 0; - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x22) = 0; - iVar7 = proc_7F0A0C74(fStack80 + fVar17 + fVar15); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x28) = (short)iVar7; - iVar7 = proc_7F0A0C74(fStack76 + 0.00000000 + fVar13); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x2a) = (short)iVar7; - iVar7 = proc_7F0A0C74(fStack72 + fVar14 + fVar16); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x2c) = (short)iVar7; - *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x30) = - (ushort)*(byte *)(DAT_8008d0bc + iVar11 + 4) << 5; - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x32) = 0; - iVar7 = proc_7F0A0C74((fStack80 + fVar17) - fVar15); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x38) = (short)iVar7; - iVar7 = proc_7F0A0C74((fStack76 + 0.00000000) - fVar13); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x3a) = (short)iVar7; - iVar7 = proc_7F0A0C74((fStack72 + fVar14) - fVar16); - iVar10 = 0; - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x3c) = (short)iVar7; - *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x40) = - (ushort)*(byte *)(DAT_8008d0bc + iVar11 + 4) << 5; - *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x42) = - (ushort)*(byte *)(DAT_8008d0bc + iVar11 + 5) << 5; - uVar5 = (ulonglong)bStack143; - uVar6 = (ulonglong)bStack142; - do { - cVar1 = *(char *)(iVar11 + -0x7ffbf7ec); - if (cVar1 == '\0') { - uVar4 = get_random_value(); - uVar5 = SEXT48((int)(uVar4 % 0x28)); - uVar9 = (undefined)(uVar4 % 0x28); - uVar6 = uVar5; - if (false) { - trap(0x1c00); - uVar6 = uVar5; - } + if (param_5 == 0) { + pfVar3 = (float *)proc_7F0BCA14((int)param_4); + fVar13 = proc_7F0B483C(); + fStack80 = fStack80 * (float)fVar13 - *pfVar3; + fVar13 = proc_7F0B483C(); + fStack76 = fStack76 * (float)fVar13 - pfVar3[1]; + fVar13 = proc_7F0B483C(); + fStack72 = fStack72 * (float)fVar13 - pfVar3[2]; + fVar13 = proc_7F0B483C(); + fStack84 = fStack84 * (float)fVar13; + fVar13 = proc_7F0B483C(); + fStack88 = fStack88 * (float)fVar13; } else { - if (cVar1 == '\x01') { - uVar4 = get_random_value(); - iVar7 = 0xff - uVar4 % 0x28; - if (false) { - trap(0x1c00); - } - uVar5 = (longlong)iVar7 & 0xff; - uVar9 = (undefined)iVar7; - uVar6 = (longlong)iVar7 & 0xff; - } - else { - if (cVar1 == '\x02') { - uVar4 = get_random_value(); - uVar9 = 0; - if ((uVar4 & 1) != 0) { - uVar9 = 0xff; - } - uVar4 = get_random_value(); - bVar8 = 0; - if ((uVar4 & 1) != 0) { - bVar8 = 0xff; - } - uVar4 = get_random_value(); - if ((uVar4 & 1) == 0) { - uVar5 = 0; - uVar6 = (ulonglong)bVar8; - } - else { - uVar5 = 0xff; - uVar6 = (ulonglong)bVar8; - } + iVar7 = *(int *)(param_5 + 4); + fStack120 = fStack44; + pfVar3 = (float *)(*(int *)(*(int *)(iVar7 + 0x14) + 0xc) + (int)param_6 * 0x40); + fStack116 = 0.00000000; + fStack112 = fStack52; + fStack132 = fStack56; + fStack128 = fStack60; + fStack124 = fStack64; + proc_7F0583D8(pfVar3,&fStack120); + proc_7F0583D8(pfVar3,&fStack132); + fStack104 = sqrtf(fStack112 * fStack112 + fStack120 * fStack120 + fStack116 * fStack116); + fVar18 = sqrtf(fStack124 * fStack124 + fStack132 * fStack132 + fStack128 * fStack128); + fStack84 = fStack84 / fStack104; + fStack88 = fStack88 / fVar18; + if ((byte)(&DAT_80040816)[iVar11] < 2) { + if ((&DAT_80040815)[iVar11] == '\x02') { + *(byte *)(iVar7 + 2) = *(byte *)(iVar7 + 2) | 2; + goto LAB_7f0a13b0; + } + bVar8 = *(byte *)(iVar7 + 2); } else { - uVar9 = 0; + bVar8 = *(byte *)(iVar7 + 2); } - } + *(byte *)(iVar7 + 2) = bVar8 | 1; } - *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + iVar10 + 0x14) = uVar9; - *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + iVar10 + 0x15) = (char)uVar6; - *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + iVar10 + 0x16) = (char)uVar5; - iVar7 = DAT_8007a154 + DAT_80040808 * 0x50 + iVar10; - iVar10 += 0x10; - *(undefined *)(iVar7 + 0x17) = 0xff; - } while (iVar10 != 0x40); - DAT_80040808 += 1; - if (99 < DAT_80040808) { - DAT_80040808 = 0; - } - proc_7F0A0E98(DAT_80040808); - *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50) = 0xffff; - return; +LAB_7f0a13b0: + *(int *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x48) = param_5; + *(char *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x4c) = param_6; + *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x4d) = param_7; + *(short *)(DAT_8007a154 + DAT_80040808 * 0x50) = param_4; + *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 2) = sStackX10; + iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; + *(undefined4 *)(iVar7 + 8) = uStack16; + *(undefined4 *)(iVar7 + 0xc) = uStack12; + *(undefined4 *)(iVar7 + 0x10) = uStack8; + *(undefined4 *)(iVar7 + 0x14) = uStack4; + iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; + *(undefined4 *)(iVar7 + 0x18) = uStack16; + *(undefined4 *)(iVar7 + 0x1c) = uStack12; + *(undefined4 *)(iVar7 + 0x20) = uStack8; + *(undefined4 *)(iVar7 + 0x24) = uStack4; + iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; + *(undefined4 *)(iVar7 + 0x28) = uStack16; + *(undefined4 *)(iVar7 + 0x2c) = uStack12; + *(undefined4 *)(iVar7 + 0x30) = uStack8; + *(undefined4 *)(iVar7 + 0x34) = uStack4; + iVar7 = DAT_8007a154 + DAT_80040808 * 0x50; + *(undefined4 *)(iVar7 + 0x38) = uStack16; + *(undefined4 *)(iVar7 + 0x3c) = uStack12; + *(undefined4 *)(iVar7 + 0x40) = uStack8; + *(undefined4 *)(iVar7 + 0x44) = uStack4; + fVar18 = fStack84 * fStack44; + fVar16 = fStack88 * fStack56; + iVar7 = proc_7F0A0C74((fStack80 - fVar18) - fVar16); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 8) = (short)iVar7; + fVar14 = fStack88 * fStack60; + iVar7 = proc_7F0A0C74((fStack76 - 0.00000000) - fVar14); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 10) = (short)iVar7; + fVar15 = fStack84 * fStack52; + fVar17 = fStack88 * fStack64; + iVar7 = proc_7F0A0C74((fStack72 - fVar15) - fVar17); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0xc) = (short)iVar7; + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x10) = 0; + *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x12) = (ushort)impactimages[iVar12].height << 5 + ; + iVar7 = proc_7F0A0C74((fStack80 - fVar18) + fVar16); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x18) = (short)iVar7; + iVar7 = proc_7F0A0C74((fStack76 - 0.00000000) + fVar14); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x1a) = (short)iVar7; + iVar7 = proc_7F0A0C74((fStack72 - fVar15) + fVar17); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x1c) = (short)iVar7; + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x20) = 0; + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x22) = 0; + iVar7 = proc_7F0A0C74(fStack80 + fVar18 + fVar16); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x28) = (short)iVar7; + iVar7 = proc_7F0A0C74(fStack76 + 0.00000000 + fVar14); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x2a) = (short)iVar7; + iVar7 = proc_7F0A0C74(fStack72 + fVar15 + fVar17); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x2c) = (short)iVar7; + *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x30) = (ushort)impactimages[iVar12].width << 5; + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x32) = 0; + iVar7 = proc_7F0A0C74((fStack80 + fVar18) - fVar16); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x38) = (short)iVar7; + iVar7 = proc_7F0A0C74((fStack76 + 0.00000000) - fVar14); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x3a) = (short)iVar7; + iVar7 = proc_7F0A0C74((fStack72 + fVar15) - fVar17); + iVar10 = 0; + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x3c) = (short)iVar7; + *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x40) = (ushort)impactimages[iVar12].width << 5; + *(short *)(DAT_8007a154 + DAT_80040808 * 0x50 + 0x42) = (ushort)impactimages[iVar12].height << 5 + ; + uVar5 = (ulonglong)bStack143; + uVar6 = (ulonglong)bStack142; + do { + cVar1 = *(char *)(iVar11 + -0x7ffbf7ec); + if (cVar1 == '\0') { + uVar4 = get_random_value(); + uVar5 = SEXT48((int)(uVar4 % 0x28)); + uVar9 = (undefined)(uVar4 % 0x28); + uVar6 = uVar5; + if (false) { + trap(0x1c00); + } + } + else { + if (cVar1 == '\x01') { + uVar4 = get_random_value(); + iVar12 = 0xff - uVar4 % 0x28; + if (false) { + trap(0x1c00); + } + uVar5 = (longlong)iVar12 & 0xff; + uVar9 = (undefined)iVar12; + uVar6 = (longlong)iVar12 & 0xff; + } + else { + if (cVar1 == '\x02') { + uVar4 = get_random_value(); + uVar9 = 0; + if ((uVar4 & 1) != 0) { + uVar9 = 0xff; + } + uVar4 = get_random_value(); + bVar8 = 0; + if ((uVar4 & 1) != 0) { + bVar8 = 0xff; + } + uVar4 = get_random_value(); + uVar6 = (ulonglong)bVar8; + if ((uVar4 & 1) == 0) { + uVar5 = 0; + } + else { + uVar5 = 0xff; + } + } + else { + uVar9 = 0; + } + } + } + *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + iVar10 + 0x14) = uVar9; + *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + iVar10 + 0x15) = (char)uVar6; + *(undefined *)(DAT_8007a154 + DAT_80040808 * 0x50 + iVar10 + 0x16) = (char)uVar5; + iVar12 = DAT_8007a154 + DAT_80040808 * 0x50 + iVar10; + iVar10 += 0x10; + *(undefined *)(iVar12 + 0x17) = 0xff; + } while (iVar10 != 0x40); + DAT_80040808 += 1; + if (99 < DAT_80040808) { + DAT_80040808 = 0; + } + proc_7F0A0E98(DAT_80040808); + *(undefined2 *)(DAT_8007a154 + DAT_80040808 * 0x50) = 0xffff; + return; } @@ -115032,123 +114052,121 @@ LAB_7f0a13b0: undefined4 * proc_7F0A1A94(undefined4 *param_1,int param_2,uint param_3) { - char cVar1; - short sVar2; - short sVar3; - int iVar4; - bool bVar5; - bool bVar6; - undefined4 *puVar7; - ulonglong uVar8; - u32 uVar9; - short *psVar10; - undefined *puVar11; - int iVar12; - int iVar13; - longlong lVar14; - undefined4 *puStackX0; - uint uStackX8; - int iStack24; - int iStack20; - - lVar14 = -1; - bVar6 = false; - iStack20 = 0; - iStack24 = -1; - if (param_2 != 0) { - iStack20 = *(int *)(param_2 + 4); - } - param_1[1] = 0x3000; - *param_1 = 0xb6000000; - puStackX0 = param_1 + 4; - iVar13 = 0; - param_1[3] = 0x80; - param_1[2] = 0xba000602; - uStackX8 = param_3; - do { - psVar10 = (short *)(DAT_8007a154 + iVar13); - if ((param_2 == *(int *)(psVar10 + 0x24)) && (-1 < *psVar10)) { - if (param_2 == 0) { - uVar8 = proc_7F0B5E50((int)*psVar10); - if (uVar8 == 0) goto LAB_7f0a1cec; + char cVar1; + short sVar2; + short sVar3; + int iVar4; + bool bVar5; + bool bVar6; + undefined4 *puVar7; + ulonglong uVar8; + u32 uVar9; + short *psVar10; + undefined *puVar11; + int iVar12; + int iVar13; + longlong lVar14; + undefined4 *puStackX0; + uint uStackX8; + int iStack24; + int iStack20; + + lVar14 = -1; + bVar6 = false; + iStack20 = 0; + iStack24 = -1; + if (param_2 != 0) { + iStack20 = *(int *)(param_2 + 4); + } + param_1[1] = 0x3000; + *param_1 = 0xb6000000; + puStackX0 = param_1 + 4; + iVar13 = 0; + param_1[3] = 0x80; + param_1[2] = 0xba000602; + uStackX8 = param_3; + do { psVar10 = (short *)(DAT_8007a154 + iVar13); - } - puVar7 = puStackX0; - sVar2 = psVar10[1]; - if (uStackX8 == 0) { - iVar12 = (int)sVar2 * 0xc; - puVar11 = &dword_8004080C + iVar12; - bVar5 = 1 < (byte)(&DAT_80040816)[iVar12]; - if (!bVar5) { - bVar5 = (&DAT_80040815)[iVar12] != '\x02'; + if ((param_2 == *(int *)(psVar10 + 0x24)) && (-1 < *psVar10)) { + if (param_2 == 0) { + uVar8 = proc_7F0B5E50((int)*psVar10); + if (uVar8 == 0) goto LAB_7f0a1cec; + psVar10 = (short *)(DAT_8007a154 + iVar13); + } + puVar7 = puStackX0; + sVar2 = psVar10[1]; + if (uStackX8 == 0) { + iVar12 = (int)sVar2 * 0xc; + puVar11 = &dword_8004080C + iVar12; + bVar5 = 1 < (byte)(&DAT_80040816)[iVar12]; + if (!bVar5) { + bVar5 = (&DAT_80040815)[iVar12] != '\x02'; + } + } + else { + iVar12 = (int)sVar2 * 0xc; + puVar11 = &dword_8004080C + iVar12; + bVar5 = (byte)(&DAT_80040816)[iVar12] < 2; + if (bVar5) { + bVar5 = (&DAT_80040815)[iVar12] == '\x02'; + } + } + if (bVar5) { + bVar6 = true; + if (param_2 == 0) { + sVar3 = *psVar10; + if (lVar14 != (longlong)sVar3) { + lVar14 = (longlong)(int)sVar3; + puStackX0 = proc_7F0BC9C4(puStackX0,(int)sVar3); + } + } + else { + cVar1 = *(char *)(psVar10 + 0x26); + if (lVar14 != (longlong)cVar1) { + iVar4 = *(int *)(*(int *)(iStack20 + 0x14) + 0xc); + lVar14 = (longlong)(int)(short)cVar1; + *puStackX0 = 0x1020040; + puStackX0 = puStackX0 + 2; + uVar9 = osVirtualToPhysical((void *)((int)cVar1 * 0x40 + iVar4)); + puVar7[1] = uVar9; + } + } + if ((longlong)iStack24 != (longlong)sVar2) { + append_image_to_DL((uint **)register0x000000ec, + (sImageTableEntry *)((int)&impactimages->index + iVar12), + (uint)(byte)puVar11[9],(ulonglong)(byte)puVar11[10],2); + iStack24 = (int)sVar2; + } + puVar7 = puStackX0; + *puStackX0 = 0x4300040; + puStackX0 = puStackX0 + 2; + uVar9 = osVirtualToPhysical((void *)(DAT_8007a154 + iVar13 + 8)); + puVar7[1] = uVar9; + puStackX0[1] = 0x2010; + *puStackX0 = 0xb1000032; + puStackX0 = puStackX0 + 2; + } } - } - else { - iVar12 = (int)sVar2 * 0xc; - puVar11 = &dword_8004080C + iVar12; - bVar5 = (byte)(&DAT_80040816)[iVar12] < 2; - if (bVar5) { - bVar5 = (&DAT_80040815)[iVar12] == '\x02'; - } - } - if (bVar5) { - bVar6 = true; - if (param_2 == 0) { - sVar3 = *psVar10; - if (lVar14 != (longlong)sVar3) { - lVar14 = (longlong)(int)sVar3; - puStackX0 = proc_7F0BC9C4(puStackX0,(int)sVar3); - } - } - else { - cVar1 = *(char *)(psVar10 + 0x26); - if (lVar14 != (longlong)cVar1) { - iVar4 = *(int *)(*(int *)(iStack20 + 0x14) + 0xc); - lVar14 = (longlong)(int)(short)cVar1; - *puStackX0 = 0x1020040; - puStackX0 = puStackX0 + 2; - uVar9 = osVirtualToPhysical((void *)((int)cVar1 * 0x40 + iVar4)); - puVar7[1] = uVar9; - } - } - if ((longlong)iStack24 != (longlong)sVar2) { - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,(uint *)(iVar12 + DAT_8008d0bc), - (uint)(byte)puVar11[9],(ulonglong)(byte)puVar11[10],2); - iStack24 = (int)sVar2; - } - puVar7 = puStackX0; - *puStackX0 = 0x4300040; - puStackX0 = puStackX0 + 2; - uVar9 = osVirtualToPhysical((void *)(DAT_8007a154 + iVar13 + 8)); - puVar7[1] = uVar9; - puStackX0[1] = 0x2010; - *puStackX0 = 0xb1000032; - puStackX0 = puStackX0 + 2; - } - } LAB_7f0a1cec: - iVar13 += 0x50; - if (iVar13 == 8000) { - if ((param_2 != 0) && (!bVar6)) { - *(byte *)(iStack20 + 2) = *(byte *)(iStack20 + 2) & ~(byte)(1 << (uStackX8 & 0x1f)); - } - puStackX0[1] = 0x40; - *puStackX0 = 0xba000602; - return puStackX0 + 2; - } - } while( true ); + iVar13 += 0x50; + if (iVar13 == 8000) { + if ((param_2 != 0) && (!bVar6)) { + *(byte *)(iStack20 + 2) = *(byte *)(iStack20 + 2) & ~(byte)(1 << (uStackX8 & 0x1f)); + } + puStackX0[1] = 0x40; + *puStackX0 = 0xba000602; + return puStackX0 + 2; + } + } while( true ); } -undefined4 * proc_7F0A1D78(undefined4 *param_1) +void proc_7F0A1D78(undefined4 *param_1) { - undefined4 *puVar1; - - puVar1 = proc_7F0A1A94(param_1,0,0); - return puVar1; + proc_7F0A1A94(param_1,0,0); + return; } @@ -115157,89 +114175,89 @@ void proc_7F0A1DA0(float *param_1,float *param_2,float *param_3,float *param_4,f float param_6,float param_7,float param_8) { - int iVar1; - int **ppiVar2; - int iVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - int iVar11; - float fVar12; - int iVar13; - float extraout_f12; - float fVar14; - int iVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - float fVar20; - float fVar21; - float fVar22; - float in_stack_00000018; - float in_stack_0000001c; - float fStack32; - float fStack28; - float fStack24; - - fVar8 = *param_2; - fVar10 = param_2[1]; - fVar12 = param_2[2]; - fVar4 = sqrtf(fVar12 * fVar12 + fVar8 * fVar8 + fVar10 * fVar10); - fVar19 = 1.00000000 / fVar4; - fVar16 = *param_3; - fVar14 = param_3[1]; - fVar9 = param_3[2]; - fVar5 = sqrtf(fVar9 * fVar9 + fVar16 * fVar16 + fVar14 * fVar14); - fVar20 = 1.00000000 / fVar5; - fVar6 = convert_angle_using_inverse((f32)*param_4,(f32)param_4[2]); - fVar21 = param_8 * fVar4 - param_7 * fVar4; - fVar22 = in_stack_0000001c * fVar5 - in_stack_00000018 * fVar5; - iVar1 = DAT_8007a160; - if (DAT_8007a160 < 0) { - iVar1 = DAT_8007a160 + 1; - } - fVar7 = sqrtf((fVar21 * fVar22) / (float)(iVar1 >> 1)); - iVar11 = (int)fVar7; - fVar17 = *param_1; - fVar7 = param_7 * fVar4 + (float)(iVar11 >> 1); - fVar4 = in_stack_00000018 * fVar5 + (float)(iVar11 >> 1); - fVar5 = param_1[1]; - fVar18 = param_1[2]; - ppiVar2 = play_sfx_a1(ptr_sfx_buf,0x47,NULL); - proc_7F053A10((int)ppiVar2,param_1); - iVar1 = 0; - iVar13 = (int)(fVar21 / (float)iVar11); - iVar15 = (int)(fVar22 / (float)iVar11); - if (0 < iVar15) { - do { - iVar3 = 0; - if (0 < iVar13) { - fVar21 = (float)iVar1 * (float)iVar11; + int iVar1; + int iVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + int iVar10; + float fVar11; + int iVar12; + float extraout_f12; + float fVar13; + int iVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float in_stack_00000018; + float in_stack_0000001c; + float fStack32; + float fStack28; + float fStack24; + + fVar7 = *param_2; + fVar9 = param_2[1]; + fVar11 = param_2[2]; + fVar3 = sqrtf(fVar11 * fVar11 + fVar7 * fVar7 + fVar9 * fVar9); + fVar18 = 1.00000000 / fVar3; + fVar15 = *param_3; + fVar13 = param_3[1]; + fVar8 = param_3[2]; + fVar4 = sqrtf(fVar8 * fVar8 + fVar15 * fVar15 + fVar13 * fVar13); + fVar19 = 1.00000000 / fVar4; + fVar5 = convert_angle_using_inverse((f32)*param_4,(f32)param_4[2]); + fVar20 = param_8 * fVar3 - param_7 * fVar3; + fVar21 = in_stack_0000001c * fVar4 - in_stack_00000018 * fVar4; + iVar1 = DAT_8007a160; + if (DAT_8007a160 < 0) { + iVar1 = DAT_8007a160 + 1; + } + fVar6 = sqrtf((fVar20 * fVar21) / (float)(iVar1 >> 1)); + iVar10 = (int)fVar6; + fVar16 = *param_1; + fVar6 = param_7 * fVar3 + (float)(iVar10 >> 1); + fVar3 = in_stack_00000018 * fVar4 + (float)(iVar10 >> 1); + fVar4 = param_1[1]; + fVar17 = param_1[2]; + iVar1 = iVar10; + play_sfx_a1(ptr_sfx_buf,0x47,NULL); + sub_GAME_7F053A10(iVar1,param_1); + iVar1 = 0; + iVar12 = (int)(fVar20 / (float)iVar10); + iVar14 = (int)(fVar21 / (float)iVar10); + if (0 < iVar14) { do { - fVar22 = (float)iVar3 * (float)iVar11; - fStack32 = fVar16 * fVar20 * fVar21 + - fVar16 * fVar20 * fVar4 + fVar17 + fVar7 * fVar8 * fVar19 + - fVar22 * fVar8 * fVar19; - fStack28 = fVar14 * fVar20 * fVar21 + - fVar14 * fVar20 * fVar4 + fVar5 + fVar7 * fVar10 * fVar19 + - fVar22 * fVar10 * fVar19; - fStack24 = fVar9 * fVar20 * fVar21 + - fVar9 * fVar20 * fVar4 + fVar18 + fVar7 * fVar12 * fVar19 + - fVar22 * fVar12 * fVar19; - get_random_value(); - proc_7F0A2160(&fStack32,fVar6,extraout_f12); - iVar3 += 1; - } while (iVar3 != iVar13); - } - iVar1 += 1; - } while (iVar1 < iVar15); - } - return; + iVar2 = 0; + if (0 < iVar12) { + fVar20 = (float)iVar1 * (float)iVar10; + do { + fVar21 = (float)iVar2 * (float)iVar10; + fStack32 = fVar15 * fVar19 * fVar20 + + fVar15 * fVar19 * fVar3 + fVar16 + fVar6 * fVar7 * fVar18 + + fVar21 * fVar7 * fVar18; + fStack28 = fVar13 * fVar19 * fVar20 + + fVar13 * fVar19 * fVar3 + fVar4 + fVar6 * fVar9 * fVar18 + + fVar21 * fVar9 * fVar18; + fStack24 = fVar8 * fVar19 * fVar20 + + fVar8 * fVar19 * fVar3 + fVar17 + fVar6 * fVar11 * fVar18 + + fVar21 * fVar11 * fVar18; + get_random_value(); + proc_7F0A2160(&fStack32,fVar5,extraout_f12); + iVar2 += 1; + } while (iVar2 != iVar12); + } + iVar1 += 1; + } while (iVar1 < iVar14); + } + return; } @@ -115247,137 +114265,137 @@ void proc_7F0A1DA0(float *param_1,float *param_2,float *param_3,float *param_4,f void proc_7F0A2160(undefined4 *param_1,undefined4 param_2,float param_3) { - undefined uVar1; - u32 uVar2; - int iVar3; - float in_a2_lo; - float fVar4; - float fVar5; - float fVar6; - - uVar2 = get_random_value(); - fVar4 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar4 = fVar4 + 4294967296.00000000; - } - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - fVar6 = fVar6 * 0.00000000 * flt_80057718 - flt_8005771C; - uVar2 = get_random_value(); - *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68) = 1; - *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 4) = *param_1; - *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 8) = param_1[1]; - *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0xc) = param_1[2]; - fVar5 = (float)uVar2; - *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x1c) = - ((fVar4 * 0.00000000 + fVar4 * 0.00000000) - 1.00000000) * 1.50000000; - *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x20) = fVar6 * 3.00000000; - if ((int)uVar2 < 0) { - fVar5 = fVar5 + 4294967296.00000000; - } - *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x24) = - ((fVar5 * 0.00000000 + fVar5 * 0.00000000) - 1.00000000) * 1.50000000; - uVar2 = get_random_value(); - fVar4 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar4 = fVar4 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x38) = - (short)(int)((fVar4 * 0.00000000 * 0.50000000 + 1.00000000) * in_a2_lo); - uVar2 = get_random_value(); - fVar4 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar4 = fVar4 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x3a) = - (short)(int)((fVar4 * 0.00000000 * 0.50000000 + 1.00000000) * in_a2_lo); - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x3c) = 0; - uVar2 = get_random_value(); - fVar4 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar4 = fVar4 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x48) = - (short)(int)((fVar4 * 0.00000000 * 0.50000000 + 1.00000000) * in_a2_lo); - uVar2 = get_random_value(); - fVar4 = -in_a2_lo; - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x4a) = - (short)(int)((fVar6 * 0.00000000 * 0.50000000 + 1.00000000) * fVar4); - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x4c) = 0; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x58) = - (short)(int)((fVar6 * 0.00000000 * 0.50000000 + 1.00000000) * fVar4); - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x5a) = - (short)(int)((fVar6 * 0.00000000 * 0.50000000 + 1.00000000) * fVar4); - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x5c) = 0; - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x40) = 0; - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x42) = 0; - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x50) = 0; - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x52) = 0; - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x60) = 0; - *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x62) = 0; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x44) = 5; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x45) = 5; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x46) = 0x7e; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x54) = 5; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x55) = 0xfb; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x56) = 0x7e; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 100) = 0xfb; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x65) = 0xfb; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x66) = 0x7e; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x67) = 0xff; - iVar3 = DAT_8007a164 + dword_80040940 * 0x68; - uVar1 = *(undefined *)(iVar3 + 0x67); - *(undefined *)(iVar3 + 0x57) = uVar1; - *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x47) = uVar1; - *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x10) = param_2; - *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x14) = 0; - uVar2 = get_random_value(); - fVar4 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar4 = fVar4 + 4294967296.00000000; - } - *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x18) = fVar4 * 0.00000000 * flt_80057720; - uVar2 = get_random_value(); - fVar4 = flt_80057724; - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x28) = fVar6 * 0.00000000 * flt_80057724; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x2c) = fVar6 * 0.00000000 * fVar4; - uVar2 = get_random_value(); - fVar6 = (float)uVar2; - if ((int)uVar2 < 0) { - fVar6 = fVar6 + 4294967296.00000000; - } - *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x30) = fVar6 * 0.00000000 * fVar4; - dword_80040940 += 1; - if (DAT_8007a160 <= dword_80040940) { - dword_80040940 = 0; - } - return; + undefined uVar1; + u32 uVar2; + int iVar3; + float in_a2_lo; + float fVar4; + float fVar5; + float fVar6; + + uVar2 = get_random_value(); + fVar4 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar4 = fVar4 + 4294967296.00000000; + } + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + fVar6 = fVar6 * 0.00000000 * flt_80057718 - flt_8005771C; + uVar2 = get_random_value(); + *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68) = 1; + *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 4) = *param_1; + *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 8) = param_1[1]; + *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0xc) = param_1[2]; + fVar5 = (float)uVar2; + *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x1c) = + ((fVar4 * 0.00000000 + fVar4 * 0.00000000) - 1.00000000) * 1.50000000; + *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x20) = fVar6 * 3.00000000; + if ((int)uVar2 < 0) { + fVar5 = fVar5 + 4294967296.00000000; + } + *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x24) = + ((fVar5 * 0.00000000 + fVar5 * 0.00000000) - 1.00000000) * 1.50000000; + uVar2 = get_random_value(); + fVar4 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar4 = fVar4 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x38) = + (short)(int)((fVar4 * 0.00000000 * 0.50000000 + 1.00000000) * in_a2_lo); + uVar2 = get_random_value(); + fVar4 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar4 = fVar4 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x3a) = + (short)(int)((fVar4 * 0.00000000 * 0.50000000 + 1.00000000) * in_a2_lo); + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x3c) = 0; + uVar2 = get_random_value(); + fVar4 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar4 = fVar4 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x48) = + (short)(int)((fVar4 * 0.00000000 * 0.50000000 + 1.00000000) * in_a2_lo); + uVar2 = get_random_value(); + fVar4 = -in_a2_lo; + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x4a) = + (short)(int)((fVar6 * 0.00000000 * 0.50000000 + 1.00000000) * fVar4); + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x4c) = 0; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x58) = + (short)(int)((fVar6 * 0.00000000 * 0.50000000 + 1.00000000) * fVar4); + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x5a) = + (short)(int)((fVar6 * 0.00000000 * 0.50000000 + 1.00000000) * fVar4); + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x5c) = 0; + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x40) = 0; + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x42) = 0; + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x50) = 0; + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x52) = 0; + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x60) = 0; + *(undefined2 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x62) = 0; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x44) = 5; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x45) = 5; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x46) = 0x7e; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x54) = 5; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x55) = 0xfb; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x56) = 0x7e; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 100) = 0xfb; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x65) = 0xfb; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x66) = 0x7e; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x67) = 0xff; + iVar3 = DAT_8007a164 + dword_80040940 * 0x68; + uVar1 = *(undefined *)(iVar3 + 0x67); + *(undefined *)(iVar3 + 0x57) = uVar1; + *(undefined *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x47) = uVar1; + *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x10) = param_2; + *(undefined4 *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x14) = 0; + uVar2 = get_random_value(); + fVar4 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar4 = fVar4 + 4294967296.00000000; + } + *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x18) = fVar4 * 0.00000000 * flt_80057720; + uVar2 = get_random_value(); + fVar4 = flt_80057724; + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x28) = fVar6 * 0.00000000 * flt_80057724; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x2c) = fVar6 * 0.00000000 * fVar4; + uVar2 = get_random_value(); + fVar6 = (float)uVar2; + if ((int)uVar2 < 0) { + fVar6 = fVar6 + 4294967296.00000000; + } + *(float *)(DAT_8007a164 + dword_80040940 * 0x68 + 0x30) = fVar6 * 0.00000000 * fVar4; + dword_80040940 += 1; + if (DAT_8007a160 <= dword_80040940) { + dword_80040940 = 0; + } + return; } @@ -115388,125 +114406,134 @@ void proc_7F0A2160(undefined4 *param_1,undefined4 param_2,float param_3) void proc_7F0A28D4(void) { - float fVar1; - float fVar2; - float fVar3; - int iVar4; - int iVar5; - int iVar6; - int *piVar7; - uint uVar8; - uint uVar9; - float fVar10; - float fVar11; - uint uVar12; - - fVar3 = flt_80057730; - fVar2 = flt_8005772C; - fVar1 = flt_80057728; - iVar5 = 0; - if (clock_timer < 0xf) { - fVar10 = (float)clock_timer; - } - else { - fVar10 = 15.00000000; - } - iVar4 = 0; - if (0 < DAT_8007a160) { - do { - iVar6 = *(int *)(DAT_8007a164 + iVar5); - if (0 < iVar6) { - uVar12 = (uint)fVar10; - *(int *)(DAT_8007a164 + iVar5) = iVar6 + uVar12; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 0x10) = *(float *)(iVar6 + 0x10) + *(float *)(iVar6 + 0x28) * fVar10; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 0x14) = *(float *)(iVar6 + 0x14) + *(float *)(iVar6 + 0x2c) * fVar10; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 0x18) = *(float *)(iVar6 + 0x18) + *(float *)(iVar6 + 0x30) * fVar10; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 4) = *(float *)(iVar6 + 4) + *(float *)(iVar6 + 0x1c) * fVar10; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 0xc) = *(float *)(iVar6 + 0xc) + *(float *)(iVar6 + 0x24) * fVar10; - if (0 < (int)uVar12) { - uVar9 = uVar12 & 3; - if (uVar9 == 0) { - uVar9 = 4; - } - else { - uVar8 = 1; - if (uVar9 != 1) { - do { + float fVar1; + float fVar2; + float fVar3; + int iVar4; + int iVar5; + int iVar6; + int *piVar7; + uint uVar8; + uint uVar9; + float fVar10; + float fVar11; + uint uVar12; + + fVar3 = flt_80057730; + fVar2 = flt_8005772C; + fVar1 = flt_80057728; + iVar5 = 0; + if (clock_timer < 0xf) { + fVar10 = (float)clock_timer; + } + else { + fVar10 = 15.00000000; + } + iVar4 = 0; + if (0 < DAT_8007a160) { + do { + iVar6 = *(int *)(DAT_8007a164 + iVar5); + if (0 < iVar6) { + uVar12 = (uint)fVar10; + *(int *)(DAT_8007a164 + iVar5) = iVar6 + uVar12; iVar6 = DAT_8007a164 + iVar5; - uVar8 += 1; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = - *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - } while (uVar9 != uVar8); - } - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = - *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - uVar9 = uVar8 + 4; - if (uVar8 == uVar12) goto LAB_7f0a2bd8; - } - while (uVar9 != uVar12) { - iVar6 = DAT_8007a164 + iVar5; - uVar9 += 4; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = - *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = - *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = - *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = - *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - } - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - iVar6 = DAT_8007a164 + iVar5; - *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); - *(float *)(DAT_8007a164 + iVar5 + 0x20) = *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; - } + *(float *)(iVar6 + 0x10) = + *(float *)(iVar6 + 0x10) + *(float *)(iVar6 + 0x28) * fVar10; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 0x14) = + *(float *)(iVar6 + 0x14) + *(float *)(iVar6 + 0x2c) * fVar10; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 0x18) = + *(float *)(iVar6 + 0x18) + *(float *)(iVar6 + 0x30) * fVar10; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 4) = *(float *)(iVar6 + 4) + *(float *)(iVar6 + 0x1c) * fVar10; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 0xc) = + *(float *)(iVar6 + 0xc) + *(float *)(iVar6 + 0x24) * fVar10; + if (0 < (int)uVar12) { + uVar9 = uVar12 & 3; + if (uVar9 == 0) { + uVar9 = 4; + } + else { + uVar8 = 1; + if (uVar9 != 1) { + do { + iVar6 = DAT_8007a164 + iVar5; + uVar8 += 1; + *(float *)(iVar6 + 8) = + *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + } while (uVar9 != uVar8); + } + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + uVar9 = uVar8 + 4; + if (uVar8 == uVar12) goto LAB_7f0a2bd8; + } + while (uVar9 != uVar12) { + iVar6 = DAT_8007a164 + iVar5; + uVar9 += 4; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + } + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + iVar6 = DAT_8007a164 + iVar5; + *(float *)(iVar6 + 8) = *(float *)(iVar6 + 8) + *(float *)(iVar6 + 0x20); + *(float *)(DAT_8007a164 + iVar5 + 0x20) = + *(float *)(DAT_8007a164 + iVar5 + 0x20) - fVar3; + } LAB_7f0a2bd8: - piVar7 = (int *)(DAT_8007a164 + iVar5); - if (*piVar7 < 0x96) { - fVar11 = (float)piVar7[2]; - } - else { - *piVar7 = 0; - piVar7 = (int *)(DAT_8007a164 + iVar5); - fVar11 = (float)piVar7[2]; - } - if (fVar2 <= fVar11) { - if (fVar1 < fVar11) { - *piVar7 = 0; - } - } - else { - *piVar7 = 0; - } - } - iVar4 += 1; - iVar5 += 0x68; - } while (iVar4 < DAT_8007a160); - } - return; + piVar7 = (int *)(DAT_8007a164 + iVar5); + if (*piVar7 < 0x96) { + fVar11 = (float)piVar7[2]; + } + else { + *piVar7 = 0; + piVar7 = (int *)(DAT_8007a164 + iVar5); + fVar11 = (float)piVar7[2]; + } + if (fVar2 <= fVar11) { + if (fVar1 < fVar11) { + *piVar7 = 0; + } + } + else { + *piVar7 = 0; + } + } + iVar4 += 1; + iVar5 += 0x68; + } while (iVar4 < DAT_8007a160); + } + return; } @@ -115514,89 +114541,89 @@ LAB_7f0a2bd8: undefined4 * proc_7F0A2C44(undefined4 *param_1) { - undefined4 *puVar1; - void *virtualAddress; - uint *virtualAddress_00; - u32 uVar2; - undefined4 uVar3; - int iVar4; - int iVar5; - int iVar6; - undefined4 *puVar7; - undefined4 *puStackX0; - float afStack64 [12]; - float fStack16; - float fStack12; - float fStack8; - - puStackX0 = param_1; - likely_generate_DL_for_image_declaration - ((uint **)register0x000000ec,(uint *)(DAT_8008d11c + 0xc),2,1,2); - puVar1 = puStackX0; - *puStackX0 = 0xbb001001; - puStackX0[1] = 0xd800d80; - puStackX0[3] = 0x100000; - puStackX0[2] = 0xba001402; - puStackX0[5] = 0x10000; - puStackX0[4] = 0xba001001; - puStackX0[7] = 0x3000; - puStackX0[6] = 0xb6000000; - puStackX0[9] = 0x2000; - puStackX0[8] = 0xba000c02; - puVar7 = puStackX0 + 0xc; - puStackX0[0xb] = 0x60000; - puStackX0[10] = 0xb7000000; - puStackX0 = puStackX0 + 0xe; - *puVar7 = 0x1030040; - virtualAddress = (void *)proc_7F078394(); - virtualAddress_00 = (uint *)osVirtualToPhysical(virtualAddress); - *(uint **)(puVar1 + 0xd) = virtualAddress_00; - iVar5 = 0; - iVar6 = 0; - if (0 < DAT_8007a160) { - iVar4 = DAT_8007a160; - do { - if (0 < *(int *)(DAT_8007a164 + iVar5)) { - proc_7F0BD6E0(); - proc_7F05892C((undefined4 *)(DAT_8007a164 + iVar5 + 4), - (float *)(DAT_8007a164 + iVar5 + 0x10),afStack64); - fStack16 = fStack16 - (float)pPlayer->current_model_xpos; - fStack12 = fStack12 - (float)pPlayer->current_model_ypos; - fStack8 = fStack8 - (float)pPlayer->current_model_zpos; - proc_7F058C9C((int)afStack64,virtualAddress_00); - puVar1 = puStackX0; - *puStackX0 = 0x1020040; - puStackX0 = puStackX0 + 2; - uVar2 = osVirtualToPhysical(virtualAddress_00); - puVar7 = puStackX0; - puVar1[1] = uVar2; - *puStackX0 = 0x4200030; - puStackX0 = puStackX0 + 2; - virtualAddress_00 = (uint *)osVirtualToPhysical((void *)(DAT_8007a164 + iVar5 + 0x38)); - *(uint **)(puVar7 + 1) = virtualAddress_00; - puStackX0[1] = 0xa14; - *puStackX0 = 0xbf000000; + undefined4 *puVar1; + void *virtualAddress; + uint *virtualAddress_00; + u32 uVar2; + undefined4 uVar3; + int iVar4; + int iVar5; + int iVar6; + undefined4 *puVar7; + undefined4 *puStackX0; + float afStack64 [12]; + float fStack16; + float fStack12; + float fStack8; + + puStackX0 = param_1; + append_image_to_DL((uint **)register0x000000ec,glassoverlayimage + 1,2,1,2); + puVar1 = puStackX0; + *puStackX0 = 0xbb001001; + puStackX0[1] = 0xd800d80; + puStackX0[3] = 0x100000; + puStackX0[2] = 0xba001402; + puStackX0[5] = 0x10000; + puStackX0[4] = 0xba001001; + puStackX0[7] = 0x3000; + puStackX0[6] = 0xb6000000; + puStackX0[9] = 0x2000; + puStackX0[8] = 0xba000c02; + puVar7 = puStackX0 + 0xc; + puStackX0[0xb] = 0x60000; + puStackX0[10] = 0xb7000000; + puStackX0 = puStackX0 + 0xe; + *puVar7 = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10E0(); + virtualAddress_00 = (uint *)osVirtualToPhysical(virtualAddress); + *(uint **)(puVar1 + 0xd) = virtualAddress_00; + iVar5 = 0; + iVar6 = 0; + if (0 < DAT_8007a160) { iVar4 = DAT_8007a160; - puStackX0 = puStackX0 + 2; - } - iVar6 += 1; - iVar5 += 0x68; - } while (iVar6 < iVar4); - } - puVar1 = puStackX0; - puVar7 = puStackX0 + 2; - puStackX0[1] = 0x60000; - *puStackX0 = 0xb6000000; - puStackX0 = puStackX0 + 4; - *puVar7 = 0x1030040; - uVar3 = proc_7F078374(); - puVar7 = puStackX0; - puVar1[3] = uVar3; - *puStackX0 = 0x1020040; - puStackX0 = puStackX0 + 2; - uVar3 = proc_7F078354(); - puVar7[1] = uVar3; - return puStackX0; + do { + if (0 < *(int *)(DAT_8007a164 + iVar5)) { + proc_7F0BD6E0(); + proc_7F05892C((undefined4 *)(DAT_8007a164 + iVar5 + 4), + (float *)(DAT_8007a164 + iVar5 + 0x10),afStack64); + fStack16 = fStack16 - (float)pPlayer->current_model_xpos; + fStack12 = fStack12 - (float)pPlayer->current_model_ypos; + fStack8 = fStack8 - (float)pPlayer->current_model_zpos; + proc_7F058C9C((int)afStack64,virtualAddress_00); + puVar1 = puStackX0; + *puStackX0 = 0x1020040; + puStackX0 = puStackX0 + 2; + uVar2 = osVirtualToPhysical(virtualAddress_00); + puVar7 = puStackX0; + puVar1[1] = uVar2; + *puStackX0 = 0x4200030; + puStackX0 = puStackX0 + 2; + virtualAddress_00 = + (uint *)osVirtualToPhysical((void *)(DAT_8007a164 + iVar5 + 0x38)); + *(uint **)(puVar7 + 1) = virtualAddress_00; + puStackX0[1] = 0xa14; + *puStackX0 = 0xbf000000; + iVar4 = DAT_8007a160; + puStackX0 = puStackX0 + 2; + } + iVar6 += 1; + iVar5 += 0x68; + } while (iVar6 < iVar4); + } + puVar1 = puStackX0; + puVar7 = puStackX0 + 2; + puStackX0[1] = 0x60000; + *puStackX0 = 0xb6000000; + puStackX0 = puStackX0 + 4; + *puVar7 = 0x1030040; + uVar3 = get_BONDdata_field_10D8(); + puVar7 = puStackX0; + puVar1[3] = uVar3; + *puStackX0 = 0x1020040; + puStackX0 = puStackX0 + 2; + uVar3 = get_BONDdata_field_10C8(); + puVar7[1] = uVar3; + return puStackX0; } @@ -115604,96 +114631,98 @@ undefined4 * proc_7F0A2C44(undefined4 *param_1) void proc_7F0A2F30(short *param_1,undefined8 param_2,longlong param_3,float param_4) { - int iVar1; - float in_a3_lo; - int iVar2; - int iVar3; - float fVar4; - float fVar5; - float fVar6; - float __x; - int iStack24; - - fVar6 = in_a3_lo * 8.00000000; - iVar2 = 0; - iStack24 = 0; - do { - iVar3 = 0; - __x = ((float)(int)(dbl_80057740 - (double)iStack24) * flt_80057748 * 2.00000000) / 360.00000000 - ; + int iVar1; + float in_a3_lo; + int iVar2; + int iVar3; + float fVar4; + float fVar5; + float fVar6; + float __x; + int iStack24; + + fVar6 = in_a3_lo * 8.00000000; + iVar2 = 0; + iStack24 = 0; do { - fVar4 = sinf(__x); - fVar5 = cosf(__x); - *param_1 = (short)(int)(((fVar4 * 4.00000000 * 130.00000000 * (float)(6 - iVar3)) / 5.00000000 - ) * (float)(int)param_3) + 1; - param_1[1] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[5] = 0; - *(undefined *)(param_1 + 6) = 0xff; - *(undefined *)((int)param_1 + 0xd) = 0xff; - *(undefined *)(param_1 + 7) = 0xff; - param_1[2] = -(short)(int)((fVar5 * 4.00000000 * 130.00000000 * (float)(6 - iVar3)) / - 5.00000000); - if (param_3 < 1) { - if (param_3 < 0) { - fVar4 = cosf(__x); - *(undefined *)((int)param_1 + 0xd) = (char)(int)(127.00000000 - fVar4 * 127.00000000); - fVar4 = cosf(__x); - *(char *)(param_1 + 7) = (char)(int)(32.00000000 - fVar4 * 32.00000000); - } - } - else { - fVar4 = cosf(__x); - *(char *)(param_1 + 6) = (char)(int)(96.00000000 - fVar4 * 96.00000000); - fVar4 = cosf(__x); - *(undefined *)(param_1 + 7) = 0xff; - *(undefined *)((int)param_1 + 0xd) = (char)(int)(127.00000000 - fVar4 * 127.00000000); - } - iVar3 += 1; - if (iVar2 < 10) { - iVar1 = (int)fVar6 * 2 + -1; - if (iVar1 < iVar2) { - if ((iVar2 < (int)(fVar6 + fVar6)) && (iVar1 < iVar2)) { - *(char *)((int)param_1 + 0xf) = - (char)(int)((fVar6 - (float)(int)fVar6) * 207.00000000) + '0'; - } - else { - *(undefined *)((int)param_1 + 0xf) = 0x30; - } - } - else { - *(undefined *)((int)param_1 + 0xf) = 0xff; - } - } - else { - if (9 < iVar2) { - fVar4 = (fVar6 - 5.00000000) * 4.00000000; - if ((float)iVar2 <= fVar4 + 9.00000000) { - *(undefined *)((int)param_1 + 0xf) = 0xff; - } - else { - if ((int)(fVar4 + 0.50000000) + 9 < iVar2) { - *(undefined *)((int)param_1 + 0xf) = 0x30; + iVar3 = 0; + __x = ((float)(int)(dbl_80057740 - (double)iStack24) * flt_80057748 * 2.00000000) / + 360.00000000; + do { + fVar4 = sinf(__x); + fVar5 = cosf(__x); + *param_1 = (short)(int)(((fVar4 * 4.00000000 * 130.00000000 * (float)(6 - iVar3)) / + 5.00000000) * (float)(int)param_3) + 1; + param_1[1] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + *(undefined *)(param_1 + 6) = 0xff; + *(undefined *)((int)param_1 + 0xd) = 0xff; + *(undefined *)(param_1 + 7) = 0xff; + param_1[2] = -(short)(int)((fVar5 * 4.00000000 * 130.00000000 * (float)(6 - iVar3)) / + 5.00000000); + if (param_3 < 1) { + if (param_3 < 0) { + fVar4 = cosf(__x); + *(undefined *)((int)param_1 + 0xd) = + (char)(int)(127.00000000 - fVar4 * 127.00000000); + fVar4 = cosf(__x); + *(char *)(param_1 + 7) = (char)(int)(32.00000000 - fVar4 * 32.00000000); + } } else { - if ((int)(fVar6 - 5.00000000) * 2 + 8 < iVar2) { - *(char *)((int)param_1 + 0xf) = - (char)(int)((fVar6 - (float)(int)fVar6) * 207.00000000) + '0'; - } - else { - *(undefined *)((int)param_1 + 0xf) = 0x30; - } + fVar4 = cosf(__x); + *(char *)(param_1 + 6) = (char)(int)(96.00000000 - fVar4 * 96.00000000); + fVar4 = cosf(__x); + *(undefined *)(param_1 + 7) = 0xff; + *(undefined *)((int)param_1 + 0xd) = + (char)(int)(127.00000000 - fVar4 * 127.00000000); } - } - } - } - param_1 = param_1 + 8; - } while (iVar3 != 2); - iVar2 += 1; - iStack24 += 5; - } while (iVar2 != 0x17); - return; + iVar3 += 1; + if (iVar2 < 10) { + iVar1 = (int)fVar6 * 2 + -1; + if (iVar1 < iVar2) { + if ((iVar2 < (int)(fVar6 + fVar6)) && (iVar1 < iVar2)) { + *(char *)((int)param_1 + 0xf) = + (char)(int)((fVar6 - (float)(int)fVar6) * 207.00000000) + '0'; + } + else { + *(undefined *)((int)param_1 + 0xf) = 0x30; + } + } + else { + *(undefined *)((int)param_1 + 0xf) = 0xff; + } + } + else { + if (9 < iVar2) { + fVar4 = (fVar6 - 5.00000000) * 4.00000000; + if ((float)iVar2 <= fVar4 + 9.00000000) { + *(undefined *)((int)param_1 + 0xf) = 0xff; + } + else { + if ((int)(fVar4 + 0.50000000) + 9 < iVar2) { + *(undefined *)((int)param_1 + 0xf) = 0x30; + } + else { + if ((int)(fVar6 - 5.00000000) * 2 + 8 < iVar2) { + *(char *)((int)param_1 + 0xf) = + (char)(int)((fVar6 - (float)(int)fVar6) * 207.00000000) + '0'; + } + else { + *(undefined *)((int)param_1 + 0xf) = 0x30; + } + } + } + } + } + param_1 = param_1 + 8; + } while (iVar3 != 2); + iVar2 += 1; + iStack24 += 5; + } while (iVar2 != 0x17); + return; } @@ -115701,52 +114730,51 @@ void proc_7F0A2F30(short *param_1,undefined8 param_2,longlong param_3,float para undefined4 * proc_7F0A3330(undefined4 *param_1,int param_2,longlong param_3) { - int iVar1; - uint uVar2; - undefined4 *puVar3; - undefined4 *puVar4; - uint uVar5; - - uVar2 = 0; - iVar1 = (int)param_3; - if (param_3 < 0) { - iVar1 += 1; - } - iVar1 = (iVar1 >> 1) + -2; - puVar3 = param_1; - if (-1 < iVar1) { - do { - *puVar3 = 0x4300040; - puVar3[1] = param_2; - puVar4 = puVar3 + 2; - if ((int)uVar2 < 9) { - param_1 = puVar4; - if (((int)uVar2 < 9) && (param_1 = puVar4, (uVar2 & 1) == 0)) { - param_1 = puVar3 + 4; - *puVar4 = 0xb1000032; - puVar3[3] = 0x2110; - } - } - else { - uVar5 = uVar2 + 3 & 3; - if (((int)(uVar2 + 3) < 0) && (uVar5 != 0)) { - uVar5 -= 4; - } - param_1 = puVar4; - if (uVar5 != 0) { - *puVar4 = 0xb1000032; - puVar3[3] = 0x2110; - param_1 = puVar3 + 4; - } - } - uVar2 = (int)((uVar2 + 1) * 0x1000000) >> 0x18; - param_2 += 0x20; - puVar3 = param_1; - } while ((int)uVar2 <= iVar1); - } - *param_1 = 0xb8000000; - param_1[1] = 0; - return param_1 + 2; + int iVar1; + uint uVar2; + undefined4 *puVar3; + undefined4 *puVar4; + uint uVar5; + + uVar2 = 0; + iVar1 = (int)param_3; + if (param_3 < 0) { + iVar1 += 1; + } + iVar1 = (iVar1 >> 1) + -2; + puVar3 = param_1; + if (-1 < iVar1) { + do { + *puVar3 = 0x4300040; + puVar3[1] = param_2; + puVar4 = puVar3 + 2; + param_1 = puVar4; + if ((int)uVar2 < 9) { + if (((int)uVar2 < 9) && ((uVar2 & 1) == 0)) { + param_1 = puVar3 + 4; + *puVar4 = 0xb1000032; + puVar3[3] = 0x2110; + } + } + else { + uVar5 = uVar2 + 3 & 3; + if (((int)(uVar2 + 3) < 0) && (uVar5 != 0)) { + uVar5 -= 4; + } + if (uVar5 != 0) { + *puVar4 = 0xb1000032; + puVar3[3] = 0x2110; + param_1 = puVar3 + 4; + } + } + uVar2 = (int)((uVar2 + 1) * 0x1000000) >> 0x18; + param_2 += 0x20; + puVar3 = param_1; + } while ((int)uVar2 <= iVar1); + } + *param_1 = 0xb8000000; + param_1[1] = 0; + return param_1 + 2; } @@ -115754,219 +114782,219 @@ undefined4 * proc_7F0A3330(undefined4 *param_1,int param_2,longlong param_3) void proc_7F0A33F8(short *param_1,int param_2,float param_3,longlong param_4) { - short sVar1; - short sVar2; - longlong in_a3; - short *psVar3; - int iVar4; - float fVar5; - float fVar6; - undefined uVar7; - float __x; - - if (in_a3 != 0) { - *param_1 = 1; - param_1[1] = 0; - param_1[2] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[5] = 0; - *(undefined *)(param_1 + 6) = 0; - *(undefined *)((int)param_1 + 0xd) = 0x2c; - *(undefined *)(param_1 + 7) = 0; - *(undefined *)((int)param_1 + 0xf) = 0xb0; - param_1 = param_1 + 8; - } - iVar4 = 7; - if (6 < param_2 + -7) { - do { - __x = ((float)iVar4 * flt_8005774C) / (float)param_2; - fVar5 = sinf(__x); - fVar6 = cosf(__x); - sVar1 = (short)(int)(fVar5 * 520.00000000 * (float)param_4); - *param_1 = sVar1 + 1; - param_1[1] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[5] = 0; - sVar2 = (short)(int)(fVar6 * 520.00000000 * (float)param_4); - param_1[2] = -sVar2; - fVar5 = cosf(__x); - fVar5 = 0.00000000 - fVar5 * 0.00000000; - if (false) { - fVar6 = ROUND(fVar5); - } - else { - fVar6 = FLOOR(fVar5); - } - uVar7 = (undefined)(int)fVar6; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a35c0; - uVar7 = (undefined)(int)fVar5; - } - else { - if ((int)fVar6 < 0) { + short sVar1; + short sVar2; + longlong in_a3; + short *psVar3; + int iVar4; + float fVar5; + float fVar6; + undefined uVar7; + float __x; + + if (in_a3 != 0) { + *param_1 = 1; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + *(undefined *)(param_1 + 6) = 0; + *(undefined *)((int)param_1 + 0xd) = 0x2c; + *(undefined *)(param_1 + 7) = 0; + *(undefined *)((int)param_1 + 0xf) = 0xb0; + param_1 = param_1 + 8; + } + iVar4 = 7; + if (6 < param_2 + -7) { + do { + __x = ((float)iVar4 * flt_8005774C) / (float)param_2; + fVar5 = sinf(__x); + fVar6 = cosf(__x); + sVar1 = (short)(int)(fVar5 * 520.00000000 * (float)param_4); + *param_1 = sVar1 + 1; + param_1[1] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + sVar2 = (short)(int)(fVar6 * 520.00000000 * (float)param_4); + param_1[2] = -sVar2; + fVar5 = cosf(__x); + fVar5 = 0.00000000 - fVar5 * 0.00000000; + if (false) { + fVar6 = ROUND(fVar5); + } + else { + fVar6 = FLOOR(fVar5); + } + uVar7 = (undefined)(int)fVar6; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a35c0; + uVar7 = (undefined)(int)fVar5; + } + else { + if ((int)fVar6 < 0) { LAB_7f0a35c0: - uVar7 = 0xff; - } - } - *(undefined *)(param_1 + 6) = uVar7; - fVar5 = cosf(__x); - fVar5 = 44.00000000 - fVar5 * 20.00000000; - if (false) { - fVar6 = ROUND(fVar5); - } - else { - fVar6 = FLOOR(fVar5); - } - uVar7 = (undefined)(int)fVar6; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a3658; - uVar7 = (undefined)(int)fVar5; - } - else { - if ((int)fVar6 < 0) { + uVar7 = 0xff; + } + } + *(undefined *)(param_1 + 6) = uVar7; + fVar5 = cosf(__x); + fVar5 = 44.00000000 - fVar5 * 20.00000000; + if (false) { + fVar6 = ROUND(fVar5); + } + else { + fVar6 = FLOOR(fVar5); + } + uVar7 = (undefined)(int)fVar6; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a3658; + uVar7 = (undefined)(int)fVar5; + } + else { + if ((int)fVar6 < 0) { LAB_7f0a3658: - uVar7 = 0xff; - } - } - *(undefined *)((int)param_1 + 0xd) = uVar7; - fVar5 = cosf(__x); - fVar5 = 0.00000000 - fVar5 * 0.00000000; - if (false) { - fVar6 = ROUND(fVar5); - } - else { - fVar6 = FLOOR(fVar5); - } - uVar7 = (undefined)(int)fVar6; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a36f0; - uVar7 = (undefined)(int)fVar5; - } - else { - if ((int)fVar6 < 0) { + uVar7 = 0xff; + } + } + *(undefined *)((int)param_1 + 0xd) = uVar7; + fVar5 = cosf(__x); + fVar5 = 0.00000000 - fVar5 * 0.00000000; + if (false) { + fVar6 = ROUND(fVar5); + } + else { + fVar6 = FLOOR(fVar5); + } + uVar7 = (undefined)(int)fVar6; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a36f0; + uVar7 = (undefined)(int)fVar5; + } + else { + if ((int)fVar6 < 0) { LAB_7f0a36f0: - uVar7 = 0xff; - } - } - *(undefined *)(param_1 + 7) = uVar7; - *(undefined *)((int)param_1 + 0xf) = 0xb0; - psVar3 = param_1 + 8; - if ((iVar4 != 0) && (iVar4 < param_2)) { - *psVar3 = 1 - sVar1; - param_1[9] = 0; - param_1[10] = -sVar2; - param_1[0xb] = 0; - param_1[0xc] = 0; - param_1[0xd] = 0; - *(undefined *)(param_1 + 0xe) = 0xff; - *(undefined *)((int)param_1 + 0x1d) = 0xff; - *(undefined *)(param_1 + 0xf) = 0xff; - fVar5 = cosf(__x); - fVar5 = 0.00000000 - fVar5 * 0.00000000; - if (false) { - fVar6 = ROUND(fVar5); - } - else { - fVar6 = FLOOR(fVar5); - } - uVar7 = (undefined)(int)fVar6; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a37cc; - uVar7 = (undefined)(int)fVar5; - } - else { - if ((int)fVar6 < 0) { + uVar7 = 0xff; + } + } + *(undefined *)(param_1 + 7) = uVar7; + *(undefined *)((int)param_1 + 0xf) = 0xb0; + psVar3 = param_1 + 8; + if ((iVar4 != 0) && (iVar4 < param_2)) { + *psVar3 = 1 - sVar1; + param_1[9] = 0; + param_1[10] = -sVar2; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0; + *(undefined *)(param_1 + 0xe) = 0xff; + *(undefined *)((int)param_1 + 0x1d) = 0xff; + *(undefined *)(param_1 + 0xf) = 0xff; + fVar5 = cosf(__x); + fVar5 = 0.00000000 - fVar5 * 0.00000000; + if (false) { + fVar6 = ROUND(fVar5); + } + else { + fVar6 = FLOOR(fVar5); + } + uVar7 = (undefined)(int)fVar6; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a37cc; + uVar7 = (undefined)(int)fVar5; + } + else { + if ((int)fVar6 < 0) { LAB_7f0a37cc: - uVar7 = 0xff; - } - } - *(undefined *)(param_1 + 0xe) = uVar7; - fVar5 = cosf(__x); - fVar5 = 44.00000000 - fVar5 * 20.00000000; - if (false) { - fVar6 = ROUND(fVar5); - } - else { - fVar6 = FLOOR(fVar5); - } - uVar7 = (undefined)(int)fVar6; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a3864; - uVar7 = (undefined)(int)fVar5; - } - else { - if ((int)fVar6 < 0) { + uVar7 = 0xff; + } + } + *(undefined *)(param_1 + 0xe) = uVar7; + fVar5 = cosf(__x); + fVar5 = 44.00000000 - fVar5 * 20.00000000; + if (false) { + fVar6 = ROUND(fVar5); + } + else { + fVar6 = FLOOR(fVar5); + } + uVar7 = (undefined)(int)fVar6; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a3864; + uVar7 = (undefined)(int)fVar5; + } + else { + if ((int)fVar6 < 0) { LAB_7f0a3864: - uVar7 = 0xff; - } - } - *(undefined *)((int)param_1 + 0x1d) = uVar7; - fVar5 = cosf(__x); - fVar5 = 0.00000000 - fVar5 * 0.00000000; - if (false) { - fVar6 = ROUND(fVar5); - } - else { - fVar6 = FLOOR(fVar5); - } - uVar7 = (undefined)(int)fVar6; - if (false) { - if (false) { - fVar5 = ROUND(fVar5 - 2147483648.00000000); - } - else { - fVar5 = FLOOR(fVar5 - 2147483648.00000000); - } - if (false) goto LAB_7f0a38fc; - uVar7 = (undefined)(int)fVar5; - } - else { - if ((int)fVar6 < 0) { + uVar7 = 0xff; + } + } + *(undefined *)((int)param_1 + 0x1d) = uVar7; + fVar5 = cosf(__x); + fVar5 = 0.00000000 - fVar5 * 0.00000000; + if (false) { + fVar6 = ROUND(fVar5); + } + else { + fVar6 = FLOOR(fVar5); + } + uVar7 = (undefined)(int)fVar6; + if (false) { + if (false) { + fVar5 = ROUND(fVar5 - 2147483648.00000000); + } + else { + fVar5 = FLOOR(fVar5 - 2147483648.00000000); + } + if (false) goto LAB_7f0a38fc; + uVar7 = (undefined)(int)fVar5; + } + else { + if ((int)fVar6 < 0) { LAB_7f0a38fc: - uVar7 = 0xff; - } - } - *(undefined *)(param_1 + 0xf) = uVar7; - *(undefined *)((int)param_1 + 0x1f) = 0xb0; - psVar3 = param_1 + 0x10; - } - iVar4 += 2; - param_1 = psVar3; - } while (iVar4 <= param_2 + -7); - } - return; + uVar7 = 0xff; + } + } + *(undefined *)(param_1 + 0xf) = uVar7; + *(undefined *)((int)param_1 + 0x1f) = 0xb0; + psVar3 = param_1 + 0x10; + } + iVar4 += 2; + param_1 = psVar3; + } while (iVar4 <= param_2 + -7); + } + return; } @@ -115974,48 +115002,48 @@ LAB_7f0a38fc: undefined4 * proc_7F0A3978(undefined4 *param_1,int param_2,undefined8 param_3,longlong param_4) { - undefined4 *puVar1; - int iVar2; - - if (param_4 == 0) { - iVar2 = 0; - do { - iVar2 = (iVar2 + 1) * 0x1000000 >> 0x18; - param_1[1] = param_2; - *param_1 = 0x4300040; - param_1[3] = 0x2110; - param_1[2] = 0xb1000032; - param_1 = param_1 + 4; - param_2 += 0x20; - } while (iVar2 < 8); - } - else { - param_1[1] = param_2 + 0xf0; - *param_1 = 0x4300040; - param_1[2] = 0x4040010; - param_1[3] = param_2; - iVar2 = 7; - param_1[5] = 0x42; - param_1[4] = 0xb1000003; - puVar1 = param_1 + 6; - do { - param_1 = puVar1; - param_1[1] = iVar2 * 0x20 + param_2 + 0x10; - *param_1 = 0x4300040; - iVar2 = (iVar2 + -1) * 0x1000000 >> 0x18; - param_1[3] = param_2; - param_1[2] = 0x4040010; - param_1[5] = 0x3140; - param_1[4] = 0xb1000042; - puVar1 = param_1 + 6; - } while (-1 < iVar2); - param_1[7] = 0x10; - param_1[6] = 0xb1000004; - param_1 = param_1 + 8; - } - *param_1 = 0xb8000000; - param_1[1] = 0; - return param_1 + 2; + undefined4 *puVar1; + int iVar2; + + if (param_4 == 0) { + iVar2 = 0; + do { + iVar2 = (iVar2 + 1) * 0x1000000 >> 0x18; + param_1[1] = param_2; + *param_1 = 0x4300040; + param_1[3] = 0x2110; + param_1[2] = 0xb1000032; + param_1 = param_1 + 4; + param_2 += 0x20; + } while (iVar2 < 8); + } + else { + param_1[1] = param_2 + 0xf0; + *param_1 = 0x4300040; + param_1[2] = 0x4040010; + param_1[3] = param_2; + iVar2 = 7; + param_1[5] = 0x42; + param_1[4] = 0xb1000003; + puVar1 = param_1 + 6; + do { + param_1 = puVar1; + param_1[1] = iVar2 * 0x20 + param_2 + 0x10; + *param_1 = 0x4300040; + iVar2 = (iVar2 + -1) * 0x1000000 >> 0x18; + param_1[3] = param_2; + param_1[2] = 0x4040010; + param_1[5] = 0x3140; + param_1[4] = 0xb1000042; + puVar1 = param_1 + 6; + } while (-1 < iVar2); + param_1[7] = 0x10; + param_1[6] = 0xb1000004; + param_1 = param_1 + 8; + } + *param_1 = 0xb8000000; + param_1[1] = 0; + return param_1 + 2; } @@ -116024,34 +115052,34 @@ short * proc_7F0A3AB8(short *param_1,short param_2,short param_3,short param_4,s short param_6,short param_7) { - int iVar1; - int iVar2; - short sVar3; - - param_2 += param_6; - iVar1 = 0; - do { - iVar2 = 0; - sVar3 = param_3 + param_7; + int iVar1; + int iVar2; + short sVar3; + + param_2 += param_6; + iVar1 = 0; do { - iVar2 += 1; - param_1[2] = sVar3; - sVar3 += param_5; - *param_1 = param_2; - param_1[1] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[5] = 0; - *(undefined *)(param_1 + 6) = 0x20; - *(undefined *)((int)param_1 + 0xd) = 0x70; - *(undefined *)(param_1 + 7) = 0x20; - *(undefined *)((int)param_1 + 0xf) = 0xf0; - param_1 = param_1 + 8; - } while (iVar2 != 2); - iVar1 += 1; - param_2 += param_4; - } while (iVar1 != 2); - return param_1; + iVar2 = 0; + sVar3 = param_3 + param_7; + do { + iVar2 += 1; + param_1[2] = sVar3; + sVar3 += param_5; + *param_1 = param_2; + param_1[1] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + *(undefined *)(param_1 + 6) = 0x20; + *(undefined *)((int)param_1 + 0xd) = 0x70; + *(undefined *)(param_1 + 7) = 0x20; + *(undefined *)((int)param_1 + 0xf) = 0xf0; + param_1 = param_1 + 8; + } while (iVar2 != 2); + iVar1 += 1; + param_2 += param_4; + } while (iVar1 != 2); + return param_1; } @@ -116059,11 +115087,11 @@ short * proc_7F0A3AB8(short *param_1,short param_2,short param_3,short param_4,s undefined4 * proc_7F0A3B40(undefined4 *param_1,undefined4 param_2) { - *param_1 = 0x4300040; - param_1[1] = param_2; - param_1[3] = 0x2110; - param_1[2] = 0xb1000032; - return param_1 + 4; + *param_1 = 0x4300040; + param_1[1] = param_2; + param_1[3] = 0x2110; + param_1[2] = 0xb1000032; + return param_1 + 4; } @@ -116071,14 +115099,14 @@ undefined4 * proc_7F0A3B40(undefined4 *param_1,undefined4 param_2) void proc_7F0A3B70(int param_1,undefined *param_2) { - int iVar1; - - iVar1 = param_1 * 4; - *param_2 = *(undefined *)(&dword_80040960 + param_1); - param_2[1] = *(undefined *)((int)&dword_80040960 + iVar1 + 1); - param_2[2] = *(undefined *)((int)&dword_80040960 + iVar1 + 2); - param_2[3] = *(undefined *)((int)&dword_80040960 + iVar1 + 3); - return; + int iVar1; + + iVar1 = param_1 * 4; + *param_2 = *(undefined *)(&dword_80040960 + param_1); + param_2[1] = *(undefined *)((int)&dword_80040960 + iVar1 + 1); + param_2[2] = *(undefined *)((int)&dword_80040960 + iVar1 + 2); + param_2[3] = *(undefined *)((int)&dword_80040960 + iVar1 + 3); + return; } @@ -116086,14 +115114,14 @@ void proc_7F0A3B70(int param_1,undefined *param_2) void proc_7F0A3BA4(int param_1,undefined *param_2) { - int iVar1; - - iVar1 = param_1 * 4; - *(undefined *)(&dword_80040960 + param_1) = *param_2; - *(undefined *)((int)&dword_80040960 + iVar1 + 1) = param_2[1]; - *(undefined *)((int)&dword_80040960 + iVar1 + 2) = param_2[2]; - *(undefined *)((int)&dword_80040960 + iVar1 + 3) = param_2[3]; - return; + int iVar1; + + iVar1 = param_1 * 4; + *(undefined *)(&dword_80040960 + param_1) = *param_2; + *(undefined *)((int)&dword_80040960 + iVar1 + 1) = param_2[1]; + *(undefined *)((int)&dword_80040960 + iVar1 + 2) = param_2[2]; + *(undefined *)((int)&dword_80040960 + iVar1 + 3) = param_2[3]; + return; } @@ -116101,17 +115129,17 @@ void proc_7F0A3BA4(int param_1,undefined *param_2) void proc_7F0A3BD8(void) { - undefined4 *puVar1; - - puVar1 = (undefined4 *)null_ARRAY_8007a170; - do { - puVar1 = puVar1 + 0xb; - puVar1[3] = 0; - *(undefined2 *)(puVar1 + 1) = 0; - *puVar1 = 0; - puVar1 = puVar1; - } while (puVar1 < null_ARRAY_8007a4e0); - return; + undefined4 *puVar1; + + puVar1 = (undefined4 *)null_ARRAY_8007a170; + do { + puVar1 = puVar1 + 0xb; + puVar1[3] = 0; + *(undefined2 *)(puVar1 + 1) = 0; + *puVar1 = 0; + puVar1 = puVar1; + } while (puVar1 < null_ARRAY_8007a4e0); + return; } @@ -116119,72 +115147,72 @@ void proc_7F0A3BD8(void) void proc_7F0A3C08(undefined4 *param_1,undefined4 *param_2,int param_3,float param_4,short param_5) { - u32 uVar1; - int iVar2; - float __x; - float fVar3; - float fVar4; - undefined2 in_stack_00000012; - - uVar1 = get_random_value(); - __x = (float)uVar1; - if ((int)uVar1 < 0) { - __x = __x + 4294967296.00000000; - } - __x = __x * 0.00000000 * flt_80057750; - *param_1 = 0; - *(undefined2 *)((int)param_1 + 6) = in_stack_00000012; - if (param_3 == 4) { - *(undefined2 *)(param_1 + 1) = 1; - param_1[2] = 0x3f800000; - param_1[3] = DAT_8008d0cc; - } - else { - if (param_3 == 1) { - *(undefined2 *)(param_1 + 1) = 0xb; - param_1[2] = 0x3f000000; - param_1[3] = DAT_8008d0c0; + u32 uVar1; + int iVar2; + float __x; + float fVar3; + float fVar4; + undefined2 in_stack_00000012; + + uVar1 = get_random_value(); + __x = (float)uVar1; + if ((int)uVar1 < 0) { + __x = __x + 4294967296.00000000; + } + __x = __x * 0.00000000 * flt_80057750; + *param_1 = 0; + *(undefined2 *)((int)param_1 + 6) = in_stack_00000012; + if (param_3 == 4) { + *(undefined2 *)(param_1 + 1) = 1; + param_1[2] = 0x3f800000; + *(sImageTableEntry **)(param_1 + 3) = flareimage2; } else { - if (param_3 == 3) { - *(undefined2 *)(param_1 + 1) = 9; - param_1[2] = 0x3f000000; - param_1[3] = DAT_8008d0c4; - } - else { - if (param_3 == 6) { - *(undefined2 *)(param_1 + 1) = 100; - param_1[2] = 0; - param_1[3] = DAT_8008d0cc; + if (param_3 == 1) { + *(undefined2 *)(param_1 + 1) = 0xb; + param_1[2] = 0x3f000000; + *(sImageTableEntry **)(param_1 + 3) = explosion_smokeimages; } else { - *(undefined2 *)(param_1 + 1) = 0xb; - param_1[2] = 0x3f000000; - param_1[3] = DAT_8008d0c0; + if (param_3 == 3) { + *(undefined2 *)(param_1 + 1) = 9; + param_1[2] = 0x3f000000; + *(sImageTableEntry **)(param_1 + 3) = scattered_explosions; + } + else { + if (param_3 == 6) { + *(undefined2 *)(param_1 + 1) = 100; + param_1[2] = 0; + *(sImageTableEntry **)(param_1 + 3) = flareimage2; + } + else { + *(undefined2 *)(param_1 + 1) = 0xb; + param_1[2] = 0x3f000000; + *(sImageTableEntry **)(param_1 + 3) = explosion_smokeimages; + } + } } - } } - } - iVar2 = param_3 * 4; - *(undefined *)(param_1 + 10) = *(undefined *)(&dword_80040960 + param_3); - *(undefined *)((int)param_1 + 0x29) = *(undefined *)((int)&dword_80040960 + iVar2 + 1); - *(undefined *)((int)param_1 + 0x2a) = *(undefined *)((int)&dword_80040960 + iVar2 + 2); - *(undefined *)((int)param_1 + 0x2b) = *(undefined *)((int)&dword_80040960 + iVar2 + 3); - param_1[4] = *param_2; - param_1[5] = param_2[1]; - param_1[6] = param_2[2]; - uVar1 = get_random_value(); - fVar3 = (float)uVar1; - if ((int)uVar1 < 0) { - fVar3 = fVar3 + 4294967296.00000000; - } - fVar4 = (float)(int)param_5 * (fVar3 * 0.00000000 * 0.25000000 + 1.00000000) * flt_80057754; - *(float *)(param_1 + 9) = fVar4; - fVar3 = cosf(__x); - *(float *)(param_1 + 7) = fVar3 * fVar4; - __x = sinf(__x); - *(float *)(param_1 + 8) = __x * fVar4; - return; + iVar2 = param_3 * 4; + *(undefined *)(param_1 + 10) = *(undefined *)(&dword_80040960 + param_3); + *(undefined *)((int)param_1 + 0x29) = *(undefined *)((int)&dword_80040960 + iVar2 + 1); + *(undefined *)((int)param_1 + 0x2a) = *(undefined *)((int)&dword_80040960 + iVar2 + 2); + *(undefined *)((int)param_1 + 0x2b) = *(undefined *)((int)&dword_80040960 + iVar2 + 3); + param_1[4] = *param_2; + param_1[5] = param_2[1]; + param_1[6] = param_2[2]; + uVar1 = get_random_value(); + fVar3 = (float)uVar1; + if ((int)uVar1 < 0) { + fVar3 = fVar3 + 4294967296.00000000; + } + fVar4 = (float)(int)param_5 * (fVar3 * 0.00000000 * 0.25000000 + 1.00000000) * flt_80057754; + *(float *)(param_1 + 9) = fVar4; + fVar3 = cosf(__x); + *(float *)(param_1 + 7) = fVar3 * fVar4; + __x = sinf(__x); + *(float *)(param_1 + 8) = __x * fVar4; + return; } @@ -116192,21 +115220,21 @@ void proc_7F0A3C08(undefined4 *param_1,undefined4 *param_2,int param_3,float par undefined4 * proc_7F0A3E1C(undefined4 *param_1,int param_2,float param_3,short param_4) { - short sVar1; - undefined4 *puVar2; - - sVar1 = null_ARRAY_8007a170._4_2_; - puVar2 = (undefined4 *)null_ARRAY_8007a170; - while( true ) { - if (sVar1 == 0) { - proc_7F0A3C08(puVar2,param_1,param_2,(float)(int)param_4,param_4); - return puVar2; + short sVar1; + undefined4 *puVar2; + + sVar1 = null_ARRAY_8007a170._4_2_; + puVar2 = (undefined4 *)null_ARRAY_8007a170; + while( true ) { + if (sVar1 == 0) { + proc_7F0A3C08(puVar2,param_1,param_2,(float)(int)param_4,param_4); + return puVar2; + } + if (null_ARRAY_8007a170 + 0x36f < puVar2 + 0xb) break; + sVar1 = *(short *)(puVar2 + 0xc); + puVar2 = puVar2 + 0xb; } - if (null_ARRAY_8007a170 + 0x36f < puVar2 + 0xb) break; - sVar1 = *(short *)(puVar2 + 0xc); - puVar2 = puVar2 + 0xb; - } - return NULL; + return NULL; } @@ -116214,25 +115242,25 @@ undefined4 * proc_7F0A3E1C(undefined4 *param_1,int param_2,float param_3,short p void proc_7F0A3EA0(void) { - int *piVar1; - short sVar2; - int iVar3; - - sVar2 = null_ARRAY_8007a170._4_2_; - piVar1 = (int *)null_ARRAY_8007a170; - while( true ) { - if (0 < sVar2) { - iVar3 = *piVar1 + clock_timer; - *piVar1 = iVar3; - if ((-1 < (longlong)iVar3) && ((longlong)*(short *)(piVar1 + 1) <= (longlong)iVar3)) { - *(undefined2 *)(piVar1 + 1) = 0; - } + int *piVar1; + short sVar2; + int iVar3; + + sVar2 = null_ARRAY_8007a170._4_2_; + piVar1 = (int *)null_ARRAY_8007a170; + while( true ) { + if (0 < sVar2) { + iVar3 = *piVar1 + clock_timer; + *piVar1 = iVar3; + if ((-1 < (longlong)iVar3) && ((longlong)*(short *)(piVar1 + 1) <= (longlong)iVar3)) { + *(undefined2 *)(piVar1 + 1) = 0; + } + } + if (null_ARRAY_8007a170 + 0x36f < piVar1 + 0xb) break; + sVar2 = *(short *)(piVar1 + 0xc); + piVar1 = piVar1 + 0xb; } - if (null_ARRAY_8007a170 + 0x36f < piVar1 + 0xb) break; - sVar2 = *(short *)(piVar1 + 0xc); - piVar1 = piVar1 + 0xb; - } - return; + return; } @@ -116242,191 +115270,196 @@ void proc_7F0A3EA0(void) void proc_7F0A3F04(void) { - byte bVar1; - short sVar2; - longlong lVar3; - float *virtualAddress; - float *pfVar4; - void *virtualAddress_00; - u32 uVar5; - int *in_a0_lo; - uint **in_a1_lo; - int in_a2_lo; - uint *puVar6; - uint *puVar7; - int iVar8; - f32 fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - float fVar17; - float fVar18; - float fVar19; - float fVar20; - float fVar21; - float fVar22; - float fVar23; - float fVar24; - float fVar25; - float fVar26; - float fVar27; - float fVar28; - float fVar29; - float in_f12; - float fVar30; - float fVar31; - float fVar32; - float fVar33; - float fVar34; - float fVar35; - float fVar36; - float fVar37; - uint *puStack24; - float *pfStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - if (((0 < *(short *)(in_a0_lo + 1)) && (-1 < *in_a0_lo)) && - (lVar3 = proc_7F078A58((float *)(in_a0_lo + 4),in_f12), lVar3 != 0)) { - fStack16 = DAT_80040980; - fStack12 = DAT_80040984; - fStack4 = (float)DAT_8004098c; - fStack8 = DAT_80040988; - virtualAddress = (float *)proc_7F078444(); - puStack24 = *in_a1_lo; - pfStack20 = virtualAddress; - proc_7F0BD6C4(4); - sVar2 = *(short *)((int)in_a0_lo + 6); - pfVar4 = (float *)proc_7F0BCA14((int)sVar2); - fStack4 = (float)in_a0_lo[10]; - iVar8 = *in_a0_lo; - fVar37 = (float)in_a0_lo[2]; - fVar30 = (float)in_a0_lo[4]; - fVar10 = (float)in_a0_lo[5]; - fVar16 = (float)in_a0_lo[6]; - fVar24 = (float)in_a0_lo[7]; - fVar17 = *pfStack20; - fVar23 = (float)in_a0_lo[7]; - fVar31 = pfStack20[1]; - fVar25 = (float)in_a0_lo[7]; - fVar18 = pfStack20[2]; - fVar11 = (float)in_a0_lo[8]; - fVar32 = *pfStack20; - fVar26 = (float)in_a0_lo[8]; - fVar19 = pfStack20[1]; - fVar12 = (float)in_a0_lo[8]; - fVar33 = pfStack20[2]; - fVar27 = (float)in_a0_lo[7]; - fVar20 = pfStack20[4]; - fVar13 = (float)in_a0_lo[7]; - fVar34 = pfStack20[5]; - fVar28 = (float)in_a0_lo[7]; - fVar21 = pfStack20[6]; - fVar14 = (float)in_a0_lo[8]; - fVar35 = pfStack20[4]; - fVar29 = (float)in_a0_lo[8]; - fVar22 = pfStack20[5]; - fVar15 = (float)in_a0_lo[8]; - fVar36 = pfStack20[6]; - *virtualAddress = fStack16; - virtualAddress[1] = fStack12; - virtualAddress[2] = fStack8; - virtualAddress[3] = fStack4; - virtualAddress[4] = fStack16; - virtualAddress[5] = fStack12; - virtualAddress[6] = fStack8; - virtualAddress[7] = fStack4; - virtualAddress[8] = fStack16; - virtualAddress[9] = fStack12; - virtualAddress[10] = fStack8; - virtualAddress[0xb] = fStack4; - virtualAddress[0xc] = fStack16; - virtualAddress[0xd] = fStack12; - virtualAddress[0xe] = fStack8; - virtualAddress[0xf] = fStack4; - fVar9 = proc_7F0B483C(); - *(short *)virtualAddress = - (short)(int)(((fVar30 - fVar17 * fVar24) - fVar35 * fVar14) * (float)fVar9 - *pfVar4); - fVar9 = proc_7F0B483C(); - *(undefined2 *)((int)virtualAddress + 2) = - (short)(int)(((fVar10 - fVar31 * fVar23) - fVar22 * fVar29) * (float)fVar9 - pfVar4[1]); - fVar9 = proc_7F0B483C(); - *(short *)(virtualAddress + 1) = - (short)(int)(((fVar16 - fVar18 * fVar25) - fVar36 * fVar15) * (float)fVar9 - pfVar4[2]); - iVar8 = (int)((float)iVar8 * fVar37) * 0xc; - bVar1 = *(byte *)(in_a0_lo[3] + iVar8 + 4); - *(undefined2 *)((int)virtualAddress + 10) = 0; - *(ushort *)(virtualAddress + 2) = (ushort)bVar1 << 5; - fVar9 = proc_7F0B483C(); - *(short *)(virtualAddress + 4) = - (short)(int)(((fVar30 + fVar32 * fVar11) - fVar20 * fVar27) * (float)fVar9 - *pfVar4); - fVar9 = proc_7F0B483C(); - *(undefined2 *)((int)virtualAddress + 0x12) = - (short)(int)(((fVar10 + fVar19 * fVar26) - fVar34 * fVar13) * (float)fVar9 - pfVar4[1]); - fVar9 = proc_7F0B483C(); - fVar37 = pfVar4[2]; - *(undefined2 *)(virtualAddress + 6) = 0; - *(undefined2 *)((int)virtualAddress + 0x1a) = 0; - *(short *)(virtualAddress + 5) = - (short)(int)(((fVar16 + fVar33 * fVar12) - fVar21 * fVar28) * (float)fVar9 - fVar37); - fVar9 = proc_7F0B483C(); - *(short *)(virtualAddress + 8) = - (short)(int)((fVar30 + fVar17 * fVar24 + fVar35 * fVar14) * (float)fVar9 - *pfVar4); - fVar9 = proc_7F0B483C(); - *(undefined2 *)((int)virtualAddress + 0x22) = - (short)(int)((fVar10 + fVar31 * fVar23 + fVar22 * fVar29) * (float)fVar9 - pfVar4[1]); - fVar9 = proc_7F0B483C(); - fVar23 = pfVar4[2]; - *(undefined2 *)(virtualAddress + 10) = 0; - *(short *)(virtualAddress + 9) = - (short)(int)((fVar16 + fVar18 * fVar25 + fVar36 * fVar15) * (float)fVar9 - fVar23); - *(short *)((int)virtualAddress + 0x2a) = (ushort)*(byte *)(in_a0_lo[3] + iVar8 + 5) << 5; - fVar9 = proc_7F0B483C(); - *(short *)(virtualAddress + 0xc) = - (short)(int)(((fVar30 - fVar32 * fVar11) + fVar20 * fVar27) * (float)fVar9 - *pfVar4); - fVar9 = proc_7F0B483C(); - *(undefined2 *)((int)virtualAddress + 0x32) = - (short)(int)(((fVar10 - fVar19 * fVar26) + fVar34 * fVar13) * (float)fVar9 - pfVar4[1]); - fVar9 = proc_7F0B483C(); - puVar6 = puStack24; - *(short *)(virtualAddress + 0xd) = - (short)(int)(((fVar16 - fVar33 * fVar12) + fVar21 * fVar28) * (float)fVar9 - pfVar4[2]); - *(ushort *)(virtualAddress + 0xe) = (ushort)*(byte *)(in_a0_lo[3] + iVar8 + 4) << 5; - *(short *)((int)virtualAddress + 0x3a) = (ushort)*(byte *)(in_a0_lo[3] + iVar8 + 5) << 5; - puVar7 = puStack24 + 2; - puStack24[1] = 0x2000; - *puStack24 = 0xb7000000; - puStack24 = puStack24 + 4; - *puVar7 = 0x1030040; - virtualAddress_00 = (void *)proc_7F078394(); - uVar5 = osVirtualToPhysical(virtualAddress_00); - puVar6[3] = uVar5; - puStack24 = proc_7F0BC9C4(puStack24,(int)sVar2); - likely_generate_DL_for_image_declaration - (&puStack24,(uint *)(in_a0_lo[3] + iVar8),4,(longlong)in_a2_lo,2); - puVar6 = puStack24; - *puStack24 = 0x4300040; - puStack24 = puStack24 + 2; - uVar5 = osVirtualToPhysical(virtualAddress); - puVar7 = puStack24; - puVar6[1] = uVar5; - puVar6 = puStack24 + 2; - puStack24[1] = 0x2010; - *puStack24 = 0xb1000032; - puStack24 = puStack24 + 4; - *puVar6 = 0x1030040; - virtualAddress_00 = (void *)proc_7F078374(); - uVar5 = osVirtualToPhysical(virtualAddress_00); - puVar7[3] = uVar5; - *in_a1_lo = puStack24; - } - return; + byte bVar1; + short sVar2; + longlong lVar3; + float *virtualAddress; + float *pfVar4; + void *virtualAddress_00; + u32 uVar5; + int *in_a0_lo; + uint **in_a1_lo; + int in_a2_lo; + uint *puVar6; + uint *puVar7; + int iVar8; + f32 fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float in_f12; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + uint *puStack24; + float *pfStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + if (((0 < *(short *)(in_a0_lo + 1)) && (-1 < *in_a0_lo)) && + (lVar3 = proc_7F078A58((float *)(in_a0_lo + 4),in_f12), lVar3 != 0)) { + fStack16 = DAT_80040980; + fStack12 = DAT_80040984; + fStack4 = (float)DAT_8004098c; + fStack8 = DAT_80040988; + virtualAddress = (float *)get_BONDdata_field_10D4(); + puStack24 = *in_a1_lo; + pfStack20 = virtualAddress; + proc_7F0BD6C4(4); + sVar2 = *(short *)((int)in_a0_lo + 6); + pfVar4 = (float *)proc_7F0BCA14((int)sVar2); + fStack4 = (float)in_a0_lo[10]; + iVar8 = *in_a0_lo; + fVar37 = (float)in_a0_lo[2]; + fVar30 = (float)in_a0_lo[4]; + fVar10 = (float)in_a0_lo[5]; + fVar16 = (float)in_a0_lo[6]; + fVar24 = (float)in_a0_lo[7]; + fVar17 = *pfStack20; + fVar23 = (float)in_a0_lo[7]; + fVar31 = pfStack20[1]; + fVar25 = (float)in_a0_lo[7]; + fVar18 = pfStack20[2]; + fVar11 = (float)in_a0_lo[8]; + fVar32 = *pfStack20; + fVar26 = (float)in_a0_lo[8]; + fVar19 = pfStack20[1]; + fVar12 = (float)in_a0_lo[8]; + fVar33 = pfStack20[2]; + fVar27 = (float)in_a0_lo[7]; + fVar20 = pfStack20[4]; + fVar13 = (float)in_a0_lo[7]; + fVar34 = pfStack20[5]; + fVar28 = (float)in_a0_lo[7]; + fVar21 = pfStack20[6]; + fVar14 = (float)in_a0_lo[8]; + fVar35 = pfStack20[4]; + fVar29 = (float)in_a0_lo[8]; + fVar22 = pfStack20[5]; + fVar15 = (float)in_a0_lo[8]; + fVar36 = pfStack20[6]; + *virtualAddress = fStack16; + virtualAddress[1] = fStack12; + virtualAddress[2] = fStack8; + virtualAddress[3] = fStack4; + virtualAddress[4] = fStack16; + virtualAddress[5] = fStack12; + virtualAddress[6] = fStack8; + virtualAddress[7] = fStack4; + virtualAddress[8] = fStack16; + virtualAddress[9] = fStack12; + virtualAddress[10] = fStack8; + virtualAddress[0xb] = fStack4; + virtualAddress[0xc] = fStack16; + virtualAddress[0xd] = fStack12; + virtualAddress[0xe] = fStack8; + virtualAddress[0xf] = fStack4; + fVar9 = proc_7F0B483C(); + *(short *)virtualAddress = + (short)(int)(((fVar30 - fVar17 * fVar24) - fVar35 * fVar14) * (float)fVar9 - *pfVar4); + fVar9 = proc_7F0B483C(); + *(undefined2 *)((int)virtualAddress + 2) = + (short)(int)(((fVar10 - fVar31 * fVar23) - fVar22 * fVar29) * (float)fVar9 - pfVar4[1]) + ; + fVar9 = proc_7F0B483C(); + *(short *)(virtualAddress + 1) = + (short)(int)(((fVar16 - fVar18 * fVar25) - fVar36 * fVar15) * (float)fVar9 - pfVar4[2]) + ; + iVar8 = (int)((float)iVar8 * fVar37) * 0xc; + bVar1 = *(byte *)(in_a0_lo[3] + iVar8 + 4); + *(undefined2 *)((int)virtualAddress + 10) = 0; + *(ushort *)(virtualAddress + 2) = (ushort)bVar1 << 5; + fVar9 = proc_7F0B483C(); + *(short *)(virtualAddress + 4) = + (short)(int)(((fVar30 + fVar32 * fVar11) - fVar20 * fVar27) * (float)fVar9 - *pfVar4); + fVar9 = proc_7F0B483C(); + *(undefined2 *)((int)virtualAddress + 0x12) = + (short)(int)(((fVar10 + fVar19 * fVar26) - fVar34 * fVar13) * (float)fVar9 - pfVar4[1]) + ; + fVar9 = proc_7F0B483C(); + fVar37 = pfVar4[2]; + *(undefined2 *)(virtualAddress + 6) = 0; + *(undefined2 *)((int)virtualAddress + 0x1a) = 0; + *(short *)(virtualAddress + 5) = + (short)(int)(((fVar16 + fVar33 * fVar12) - fVar21 * fVar28) * (float)fVar9 - fVar37); + fVar9 = proc_7F0B483C(); + *(short *)(virtualAddress + 8) = + (short)(int)((fVar30 + fVar17 * fVar24 + fVar35 * fVar14) * (float)fVar9 - *pfVar4); + fVar9 = proc_7F0B483C(); + *(undefined2 *)((int)virtualAddress + 0x22) = + (short)(int)((fVar10 + fVar31 * fVar23 + fVar22 * fVar29) * (float)fVar9 - pfVar4[1]); + fVar9 = proc_7F0B483C(); + fVar23 = pfVar4[2]; + *(undefined2 *)(virtualAddress + 10) = 0; + *(short *)(virtualAddress + 9) = + (short)(int)((fVar16 + fVar18 * fVar25 + fVar36 * fVar15) * (float)fVar9 - fVar23); + *(short *)((int)virtualAddress + 0x2a) = (ushort)*(byte *)(in_a0_lo[3] + iVar8 + 5) << 5; + fVar9 = proc_7F0B483C(); + *(short *)(virtualAddress + 0xc) = + (short)(int)(((fVar30 - fVar32 * fVar11) + fVar20 * fVar27) * (float)fVar9 - *pfVar4); + fVar9 = proc_7F0B483C(); + *(undefined2 *)((int)virtualAddress + 0x32) = + (short)(int)(((fVar10 - fVar19 * fVar26) + fVar34 * fVar13) * (float)fVar9 - pfVar4[1]) + ; + fVar9 = proc_7F0B483C(); + puVar6 = puStack24; + *(short *)(virtualAddress + 0xd) = + (short)(int)(((fVar16 - fVar33 * fVar12) + fVar21 * fVar28) * (float)fVar9 - pfVar4[2]) + ; + *(ushort *)(virtualAddress + 0xe) = (ushort)*(byte *)(in_a0_lo[3] + iVar8 + 4) << 5; + *(short *)((int)virtualAddress + 0x3a) = (ushort)*(byte *)(in_a0_lo[3] + iVar8 + 5) << 5; + puVar7 = puStack24 + 2; + puStack24[1] = 0x2000; + *puStack24 = 0xb7000000; + puStack24 = puStack24 + 4; + *puVar7 = 0x1030040; + virtualAddress_00 = (void *)get_BONDdata_field_10E0(); + uVar5 = osVirtualToPhysical(virtualAddress_00); + puVar6[3] = uVar5; + puStack24 = proc_7F0BC9C4(puStack24,(int)sVar2); + append_image_to_DL(&puStack24,(sImageTableEntry *)(in_a0_lo[3] + iVar8),4,(longlong)in_a2_lo + ,2); + puVar6 = puStack24; + *puStack24 = 0x4300040; + puStack24 = puStack24 + 2; + uVar5 = osVirtualToPhysical(virtualAddress); + puVar7 = puStack24; + puVar6[1] = uVar5; + puVar6 = puStack24 + 2; + puStack24[1] = 0x2010; + *puStack24 = 0xb1000032; + puStack24 = puStack24 + 4; + *puVar6 = 0x1030040; + virtualAddress_00 = (void *)get_BONDdata_field_10D8(); + uVar5 = osVirtualToPhysical(virtualAddress_00); + puVar7[3] = uVar5; + *in_a1_lo = puStack24; + } + return; } @@ -116434,14 +115467,14 @@ void proc_7F0A3F04(void) void proc_7F0A4528(undefined8 param_1,undefined8 param_2) { - undefined1 *puVar1; - - puVar1 = null_ARRAY_8007a170; - do { - proc_7F0A3F04(); - puVar1 = (undefined1 *)((undefined4 *)puVar1 + 0xb); - } while (puVar1 < null_ARRAY_8007a4e0); - return; + undefined1 *puVar1; + + puVar1 = null_ARRAY_8007a170; + do { + proc_7F0A3F04(); + puVar1 = (undefined1 *)((undefined4 *)puVar1 + 0xb); + } while (puVar1 < null_ARRAY_8007a4e0); + return; } @@ -116449,17 +115482,17 @@ void proc_7F0A4528(undefined8 param_1,undefined8 param_2) float proc_7F0A4594(int param_1) { - float *pfVar1; - float fStack12; - undefined4 uStack8; - float fStack4; - - fStack12 = *(float *)(param_1 + 0x10); - uStack8 = *(undefined4 *)(param_1 + 0x14); - fStack4 = *(float *)(param_1 + 0x18); - pfVar1 = (float *)proc_7F0783C4(); - proc_7F058474(pfVar1,&fStack12); - return -fStack4; + float *pfVar1; + float fStack12; + undefined4 uStack8; + float fStack4; + + fStack12 = *(float *)(param_1 + 0x10); + uStack8 = *(undefined4 *)(param_1 + 0x14); + fStack4 = *(float *)(param_1 + 0x18); + pfVar1 = (float *)get_BONDdata_field_10CC(); + proc_7F058474(pfVar1,&fStack12); + return -fStack4; } @@ -116467,15 +115500,15 @@ float proc_7F0A4594(int param_1) void proc_7F0A45D8(void) { - undefined4 *puVar1; - - puVar1 = null_ARRAY_8007a4e0; - do { - puVar1 = puVar1 + 0xf; - *(undefined2 *)(puVar1 + 1) = 0; - puVar1 = puVar1; - } while (puVar1 < (undefined4 *)0x8007b098); - return; + undefined4 *puVar1; + + puVar1 = null_ARRAY_8007a4e0; + do { + puVar1 = puVar1 + 0xf; + *(undefined2 *)(puVar1 + 1) = 0; + puVar1 = puVar1; + } while (puVar1 < (undefined4 *)0x8007b098); + return; } @@ -116485,26 +115518,26 @@ proc_7F0A4600(undefined4 *param_1,undefined4 *param_2,int param_3,float param_4, undefined2 param_6) { - short sVar1; - undefined4 *puVar2; - undefined4 in_stack_00000010; - - sVar1 = null_ARRAY_8007a4e0[1]._0_2_; - puVar2 = null_ARRAY_8007a4e0; - while( true ) { - if (sVar1 == 0) { - proc_7F0A3C08(puVar2,param_1,param_3,param_5,SUB42(param_5,0)); - puVar2[0xb] = *param_2; - puVar2[0xc] = param_2[1]; - puVar2[0xd] = param_2[2]; - puVar2[0xe] = in_stack_00000010; - return puVar2; + short sVar1; + undefined4 *puVar2; + undefined4 in_stack_00000010; + + sVar1 = null_ARRAY_8007a4e0[1]._0_2_; + puVar2 = null_ARRAY_8007a4e0; + while( true ) { + if (sVar1 == 0) { + proc_7F0A3C08(puVar2,param_1,param_3,param_5,SUB42(param_5,0)); + puVar2[0xb] = *param_2; + puVar2[0xc] = param_2[1]; + puVar2[0xd] = param_2[2]; + puVar2[0xe] = in_stack_00000010; + return puVar2; + } + if ((undefined4 *)((int)null_ARRAY_8007a4e0 + 2999U) < puVar2 + 0xf) break; + sVar1 = *(short *)(puVar2 + 0x10); + puVar2 = puVar2 + 0xf; } - if ((undefined4 *)((int)null_ARRAY_8007a4e0 + 2999U) < puVar2 + 0xf) break; - sVar1 = *(short *)(puVar2 + 0x10); - puVar2 = puVar2 + 0xf; - } - return NULL; + return NULL; } @@ -116512,37 +115545,36 @@ proc_7F0A4600(undefined4 *param_1,undefined4 *param_2,int param_3,float param_4, void proc_7F0A46A0(void) { - short sVar1; - int *piVar2; - int iVar3; - float in_f12; - float extraout_f12; - - sVar1 = null_ARRAY_8007a4e0[1]._0_2_; - piVar2 = null_ARRAY_8007a4e0; - while( true ) { - if (0 < sVar1) { - iVar3 = *piVar2 + clock_timer; - *piVar2 = iVar3; - if (-1 < (longlong)iVar3) { - if ((longlong)iVar3 < (longlong)*(short *)(piVar2 + 1)) { - proc_7F057D88((float *)(piVar2 + 4),(float *)(piVar2 + 0xb),in_f12); - in_f12 = extraout_f12; - if ((float)piVar2[5] < (float)piVar2[0xe]) { - *(undefined2 *)(piVar2 + 1) = 0; - in_f12 = extraout_f12; - } + short sVar1; + int *piVar2; + int iVar3; + float in_f12; + float extraout_f12; + + sVar1 = null_ARRAY_8007a4e0[1]._0_2_; + piVar2 = null_ARRAY_8007a4e0; + while( true ) { + if (0 < sVar1) { + iVar3 = *piVar2 + clock_timer; + *piVar2 = iVar3; + if (-1 < (longlong)iVar3) { + if ((longlong)iVar3 < (longlong)*(short *)(piVar2 + 1)) { + proc_7F057D88((float *)(piVar2 + 4),(float *)(piVar2 + 0xb),in_f12); + in_f12 = extraout_f12; + if ((float)piVar2[5] < (float)piVar2[0xe]) { + *(undefined2 *)(piVar2 + 1) = 0; + } + } + else { + *(undefined2 *)(piVar2 + 1) = 0; + } + } } - else { - *(undefined2 *)(piVar2 + 1) = 0; - } - } + if ((int *)((int)null_ARRAY_8007a4e0 + 2999) < piVar2 + 0xf) break; + sVar1 = *(short *)(piVar2 + 0x10); + piVar2 = piVar2 + 0xf; } - if ((int *)((int)null_ARRAY_8007a4e0 + 2999) < piVar2 + 0xf) break; - sVar1 = *(short *)(piVar2 + 0x10); - piVar2 = piVar2 + 0xf; - } - return; + return; } @@ -116550,14 +115582,14 @@ void proc_7F0A46A0(void) void proc_7F0A4768(undefined8 param_1,undefined8 param_2) { - undefined4 *puVar1; - - puVar1 = null_ARRAY_8007a4e0; - do { - proc_7F0A3F04(); - puVar1 = puVar1 + 0xf; - } while (puVar1 < (undefined4 *)0x8007b098); - return; + undefined4 *puVar1; + + puVar1 = null_ARRAY_8007a4e0; + do { + proc_7F0A3F04(); + puVar1 = puVar1 + 0xf; + } while (puVar1 < (undefined4 *)0x8007b098); + return; } @@ -116565,9 +115597,9 @@ void proc_7F0A4768(undefined8 param_1,undefined8 param_2) void proc_7F0A47D4(void) { - proc_7F0A3BD8(); - proc_7F0A45D8(); - return; + proc_7F0A3BD8(); + proc_7F0A45D8(); + return; } @@ -116575,9 +115607,9 @@ void proc_7F0A47D4(void) void proc_7F0A47FC(void) { - proc_7F0A3EA0(); - proc_7F0A46A0(); - return; + proc_7F0A3EA0(); + proc_7F0A46A0(); + return; } @@ -116585,9 +115617,9 @@ void proc_7F0A47FC(void) void proc_7F0A4824(undefined8 param_1,undefined8 param_2) { - proc_7F0A4528(param_1,param_2); - proc_7F0A4768((longlong)(int)param_1,(longlong)(int)param_2); - return; + proc_7F0A4528(param_1,param_2); + proc_7F0A4768((longlong)(int)param_1,(longlong)(int)param_2); + return; } @@ -116595,7 +115627,7 @@ void proc_7F0A4824(undefined8 param_1,undefined8 param_2) void proc_7F0A4860(void) { - return; + return; } @@ -116603,63 +115635,63 @@ void proc_7F0A4860(void) void init_watch_at_start_of_stage(void) { - DAT_80040994 = 0; - DAT_80040998 = 0; - DAT_8004099c = 0; - dword_800409A0 = 4; - dword_800409A4 = 0; - dword_800409A8 = 0; - dword_800409AC = 0; - dword_800409B0 = 0; - dword_800409B4 = 0; - dword_800409B8 = 0; - dword_800409BC = 0; - dword_800409C0 = 0; - dword_800409C4 = 0; - dword_800409C8 = 0; - dword_800409CC = 0; - dword_800409D0 = 0xffffffff; - DAT_800409d4 = 0; - pPlayer->neg_vspacing_for_control_type_entry = 0; - pPlayer->cur_player_control_type_1 = 0; - pPlayer->cur_player_control_type_0 = 0; - pPlayer->cur_player_control_type_2 = 0.00000000; - pPlayer->has_set_control_type_data = 1; - dword_800409D8 = 8; - controlstick_lr_enabled = 0; - dword_80040AE0 = 0; - dword_80040AE4 = 0; - flt_80040AE8 = 0.00000000; - flt_80040AEC = 0.00000000; - dword_80040AF0 = 45.00000000; - dword_80040AF4 = 0xff00a0; - dword_80040AF8 = 10; - dword_80040AFC = 0xff; - dword_80040B00 = 10; - dword_80040B04 = 0xe0; - dword_80040B08 = 0; - dword_80040B0C = 0xffa0; - dword_80040B10 = 0xf800; - dword_80040B14 = 0; - dword_80040B18 = 0; - dword_80040B1C = 2.50000000; - dword_80040B20 = 0.00000000; - dword_80040B24 = 0.00000000; - dword_80040B28 = 0.00000000; - dword_80040B2C = 0; - dword_80040B30 = 0.00000000; - dword_80040B34 = 0.00000000; - dword_80040B38 = 0.00000000; - dword_80040B3C = 0; - dword_80040B40 = 0; - dword_80040B44 = 1; - dword_80040B48 = 0x32; - dword_80040B4C = 0x32; - dword_80040B50 = 0x32; - dword_80040B54 = 0x32; - proc_7F01D500(); - mission_failed_or_aborted = FALSE; - return; + D_80040994 = 0; + D_80040998 = 0; + D_8004099c = 0; + dword_800409A0 = 4; + D_800409A4 = 0; + watch_soundrelated_maybe = 0; + dword_800409AC = 0; + dword_800409B0 = 0; + dword_800409B4 = 0; + dword_800409B8 = 0; + dword_800409BC = 0.00000000; + dword_800409C0 = 0; + dword_800409C4 = 0; + dword_800409C8 = 0.00000000; + dword_800409CC = 0.00000000; + dword_800409D0 = 0xffffffff; + f32_800409d4 = 0.00000000; + pPlayer->neg_vspacing_for_control_type_entry = 0; + pPlayer->cur_player_control_type_1 = 0; + pPlayer->cur_player_control_type_0 = 0; + pPlayer->cur_player_control_type_2 = 0.00000000; + pPlayer->has_set_control_type_data = 1; + D_800409D8 = 8; + controlstick_lr_enabled = 0; + D_80040AE0 = 0; + dword_80040AE4 = 0; + flt_80040AE8 = 0.00000000; + flt_80040AEC = 0.00000000; + dword_80040AF0 = 45.00000000; + dword_80040AF4 = 0xff00a0; + dword_80040AF8 = 10; + dword_80040AFC = 0xff; + dword_80040B00 = 10; + D_80040B04 = 0xe0; + dword_80040B08 = 0; + dword_80040B0C = 0xffa0; + dword_80040B10 = 0xf800; + dword_80040B14 = 0.00000000; + dword_80040B18 = 0.00000000; + dword_80040B1C = 2.50000000; + dword_80040B20 = 0.00000000; + dword_80040B24 = 0.00000000; + dword_80040B28 = 0.00000000; + dword_80040B2C = 0; + dword_80040B30 = 0.00000000; + dword_80040B34 = 0.00000000; + dword_80040B38 = 0.00000000; + dword_80040B3C = 0; + dword_80040B40 = 0; + dword_80040B44 = 1; + D_80040B48 = 0x32; + D_80040B4C = 0x32; + D_80040B50 = 0x32; + D_80040B54 = 0x32; + sub_GAME_7F01D500(); + mission_failed_or_aborted = FALSE; + return; } @@ -116667,126 +115699,125 @@ void init_watch_at_start_of_stage(void) void controller_deadzone_related(void) { - longlong lVar1; - - lVar1 = get_cur_controller_horz_stick_pos('\0'); - if (10 < lVar1) { - dword_80040B50 += 1; - } - lVar1 = get_cur_controller_horz_stick_pos('\0'); - if (lVar1 < -10) { - dword_80040B50 += -1; - } - lVar1 = get_cur_controller_vert_stick_pos('\0'); - if (10 < lVar1) { - dword_80040B54 += -1; - } - lVar1 = get_cur_controller_vert_stick_pos('\0'); - if (lVar1 < -10) { - dword_80040B54 += 1; - } - return; + s32 sVar1; + + sVar1 = get_cur_controller_horz_stick_pos('\0'); + if (10 < sVar1) { + D_80040B50 += 1; + } + sVar1 = get_cur_controller_horz_stick_pos('\0'); + if (sVar1 < -10) { + D_80040B50 += -1; + } + sVar1 = get_cur_controller_vert_stick_pos('\0'); + if (10 < sVar1) { + D_80040B54 += -1; + } + sVar1 = get_cur_controller_vert_stick_pos('\0'); + if (sVar1 < -10) { + D_80040B54 += 1; + } + return; } -uint * proc_7F0A4B40(undefined4 *param_1) +void proc_7F0A4B40(undefined4 *param_1) { - longlong lVar1; - undefined4 *puVar2; - uint *puVar3; - int iStack52; - int iStack48; - int iStack44; - int *piStack40; - byte abStack36 [36]; - - lVar1 = get_cur_controller_horz_stick_pos('\0'); - if (10 < lVar1) { - dword_80040B48 += 1; - } - lVar1 = get_cur_controller_horz_stick_pos('\0'); - if (lVar1 < -10) { - dword_80040B48 -= 1; - } - lVar1 = get_cur_controller_vert_stick_pos('\0'); - if (10 < lVar1) { - dword_80040B4C -= 1; - } - lVar1 = get_cur_controller_vert_stick_pos('\0'); - if (lVar1 < -10) { - dword_80040B4C += 1; - } - *param_1 = 0xb900031d; - param_1[1] = 0x504240; - param_1[2] = 0xfcffffff; - param_1[3] = 0xfffdf6fb; - param_1[4] = 0xfa000000; - param_1[5] = 0xff0000ff; - param_1[6] = (dword_80040B48 + 1 & 0x3ff) << 0xe | 0xf6000000 | (dword_80040B4C + 1 & 0x3ff) << 2; - param_1[7] = (dword_80040B48 & 0x3ff) << 0xe | (dword_80040B4C & 0x3ff) << 2; - piStack40 = D_80040EAC; - iStack44 = D_80040EB0; - sprintf((char *)abStack36,"%d, %d\n",dword_80040B48,dword_80040B4C); - puVar2 = microcode_constructor(param_1 + 8); - proc_7F0AE98C(&iStack52,&iStack48,abStack36,iStack44,piStack40,0); - puVar3 = en_text_write_stuff(puVar2,&dword_80040B48,&dword_80040B4C,abStack36,iStack44, - (int)piStack40,0xff0000ff,iStack48,iStack52,0,0); - dword_80040B4C = (dword_80040B4C - *(int *)(iStack44 + 0x890)) + 1; - return puVar3; + s32 sVar1; + undefined4 *puVar2; + int iStack52; + int iStack48; + u8 *puStack44; + int *piStack40; + byte abStack36 [36]; + + sVar1 = get_cur_controller_horz_stick_pos('\0'); + if (10 < sVar1) { + D_80040B48 += 1; + } + sVar1 = get_cur_controller_horz_stick_pos('\0'); + if (sVar1 < -10) { + D_80040B48 -= 1; + } + sVar1 = get_cur_controller_vert_stick_pos('\0'); + if (10 < sVar1) { + D_80040B4C -= 1; + } + sVar1 = get_cur_controller_vert_stick_pos('\0'); + if (sVar1 < -10) { + D_80040B4C += 1; + } + *param_1 = 0xb900031d; + param_1[1] = 0x504240; + param_1[2] = 0xfcffffff; + param_1[3] = 0xfffdf6fb; + param_1[4] = 0xfa000000; + param_1[5] = 0xff0000ff; + param_1[6] = (D_80040B48 + 1 & 0x3ff) << 0xe | 0xf6000000 | (D_80040B4C + 1 & 0x3ff) << 2; + param_1[7] = (D_80040B48 & 0x3ff) << 0xe | (D_80040B4C & 0x3ff) << 2; + piStack40 = (int *)ptrFirstFontTableSmall; + puStack44 = ptrSecondFontTableSmall; + puVar2 = (undefined4 *)sprintf((char *)abStack36,"%d, %d\n",D_80040B48,D_80040B4C); + microcode_constructor(param_1 + 8); + proc_7F0AE98C(&iStack52,&iStack48,abStack36,(int)puStack44,piStack40,0); + en_text_write_stuff(puVar2,&D_80040B48,&D_80040B4C,abStack36,(int)puStack44,(int)piStack40, + 0xff0000ff,iStack48,iStack52,0,0); + D_80040B4C = (D_80040B4C - *(int *)(puStack44 + 0x890)) + 1; + return; } -undefined8 proc_7F0A4D74(void) +u32 controllerCheckControllerTypesAllowed(void) { - longlong controllercount; - undefined8 uVar1; - int controllertype; - - controllercount = get_attached_controller_count(); - if (controllercount < 2) { - uVar1 = 0; - } - else { - controllertype = cur_player_get_control_type(); - if (controllertype < 4) { - uVar1 = 0; + longlong controllercount; + u32 allowed; + int controllertype; + + controllercount = get_attached_controller_count(); + if (controllercount < 2) { + allowed = 0; } else { - uVar1 = 1; + controllertype = cur_player_get_control_type(); + if (controllertype < 4) { + allowed = 0; + } + else { + allowed = 1; + } } - } - return uVar1; + return allowed; } -int cur_player_get_control_type(void) +s32 cur_player_get_control_type(void) { - return pPlayer->cur_player_control_type_0; + return (s32)pPlayer->cur_player_control_type_0; } -void cur_player_set_control_type(int param_1) +void cur_player_set_control_type(int type) { - int iVar1; - - pPlayer->cur_player_control_type_0 = param_1; - iVar1 = 10; - pPlayer->cur_player_control_type_1 = param_1; - pPlayer->cur_player_control_type_2 = (float)param_1; - if (j_text_trigger != 0) { - iVar1 = 0xe; - } - pPlayer->neg_vspacing_for_control_type_entry = -(iVar1 * param_1); - pPlayer->has_set_control_type_data = 1; - return; + int langsize; + + pPlayer->cur_player_control_type_0 = type; + langsize = 10; + pPlayer->cur_player_control_type_1 = type; + pPlayer->cur_player_control_type_2 = (float)type; + if (j_text_trigger != 0) { + langsize = 0xe; + } + pPlayer->neg_vspacing_for_control_type_entry = -(langsize * type); + pPlayer->has_set_control_type_data = 1; + return; } @@ -116794,7 +115825,7 @@ void cur_player_set_control_type(int param_1) u32 get_cur_player_look_vertical_inverted(void) { - return cur_player_look_vertical_inverted; + return cur_player_look_vertical_inverted; } @@ -116802,8 +115833,8 @@ u32 get_cur_player_look_vertical_inverted(void) void set_cur_player_look_vertical_inverted(u32 param_1) { - cur_player_look_vertical_inverted = param_1; - return; + cur_player_look_vertical_inverted = param_1; + return; } @@ -116811,7 +115842,7 @@ void set_cur_player_look_vertical_inverted(u32 param_1) u32 cur_player_get_autoaim(void) { - return cur_player_autoaim_setting; + return cur_player_autoaim_setting; } @@ -116819,8 +115850,8 @@ u32 cur_player_get_autoaim(void) void cur_player_set_autoaim(u32 param_1) { - cur_player_autoaim_setting = param_1; - return; + cur_player_autoaim_setting = param_1; + return; } @@ -116828,7 +115859,7 @@ void cur_player_set_autoaim(u32 param_1) undefined4 cur_player_get_lookahead(void) { - return cur_player_lookahead_setting; + return cur_player_lookahead_setting; } @@ -116836,8 +115867,8 @@ undefined4 cur_player_get_lookahead(void) void cur_player_set_lookahead(undefined4 param_1) { - cur_player_lookahead_setting = param_1; - return; + cur_player_lookahead_setting = param_1; + return; } @@ -116845,7 +115876,7 @@ void cur_player_set_lookahead(undefined4 param_1) undefined4 cur_player_get_aim_control(void) { - return cur_player_aim_control; + return cur_player_aim_control; } @@ -116853,8 +115884,8 @@ undefined4 cur_player_get_aim_control(void) void cur_player_set_aim_control(undefined4 param_1) { - cur_player_aim_control = param_1; - return; + cur_player_aim_control = param_1; + return; } @@ -116862,7 +115893,7 @@ void cur_player_set_aim_control(undefined4 param_1) undefined4 cur_player_get_sight_onscreen_control(void) { - return cur_player_sight_onscreen; + return cur_player_sight_onscreen; } @@ -116870,8 +115901,8 @@ undefined4 cur_player_get_sight_onscreen_control(void) void cur_player_set_sight_onscreen_control(undefined4 param_1) { - cur_player_sight_onscreen = param_1; - return; + cur_player_sight_onscreen = param_1; + return; } @@ -116879,7 +115910,7 @@ void cur_player_set_sight_onscreen_control(undefined4 param_1) undefined4 cur_player_get_ammo_onscreen_setting(void) { - return cur_player_ammo_onscreen_setting; + return cur_player_ammo_onscreen_setting; } @@ -116887,8 +115918,8 @@ undefined4 cur_player_get_ammo_onscreen_setting(void) void cur_player_set_ammo_onscreen_setting(undefined4 param_1) { - cur_player_ammo_onscreen_setting = param_1; - return; + cur_player_ammo_onscreen_setting = param_1; + return; } @@ -116896,7 +115927,7 @@ void cur_player_set_ammo_onscreen_setting(undefined4 param_1) undefined4 cur_player_get_screen_setting(void) { - return cur_player_screen_setting; + return cur_player_screen_setting; } @@ -116904,8 +115935,8 @@ undefined4 cur_player_get_screen_setting(void) void cur_player_set_screen_setting(undefined4 param_1) { - cur_player_screen_setting = param_1; - return; + cur_player_screen_setting = param_1; + return; } @@ -116913,7 +115944,7 @@ void cur_player_set_screen_setting(undefined4 param_1) undefined4 get_screen_ratio(void) { - return screen_ratio; + return screen_ratio; } @@ -116921,8 +115952,8 @@ undefined4 get_screen_ratio(void) void set_screen_ratio(undefined4 param_1) { - screen_ratio = param_1; - return; + screen_ratio = param_1; + return; } @@ -116930,56 +115961,57 @@ void set_screen_ratio(undefined4 param_1) int ** proc_7F0A4EF8(void) { - int **ppiVar1; - - ppiVar1 = (int **)&dword_800409A8; - if (dword_800409A8 == 1) { - dword_800409A8 = 0; - } - else { - dword_800409A8 = 1; - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0x9f,NULL); - } - return ppiVar1; + int **ppiVar1; + + ppiVar1 = (int **)&watch_soundrelated_maybe; + if (watch_soundrelated_maybe == 1) { + watch_soundrelated_maybe = 0; + } + else { + watch_soundrelated_maybe = 1; + ppiVar1 = (int **)&watch_soundrelated_maybe; + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + } + return ppiVar1; } -void proc_7F0A4F44(void) +void sub_GAME_7F0A4F44(void) { - dword_800409A8 = 0; - return; + watch_soundrelated_maybe = 0; + return; } -ulonglong is_holding_greater_than_2E_left_on_stick(void) +u32 is_holding_greater_than_2E_left_on_stick(void) { - longlong lVar1; - - lVar1 = get_cur_controller_horz_stick_pos('\0'); - return (ulonglong)(lVar1 < -0x2d); + s32 sVar1; + + sVar1 = get_cur_controller_horz_stick_pos('\0'); + return (u32)(uint)(sVar1 < -0x2d); } -ulonglong is_holding_greater_than_2E_right_on_stick(void) +u32 is_holding_greater_than_2E_right_on_stick(void) { - longlong lVar1; - - lVar1 = get_cur_controller_horz_stick_pos('\0'); - return (ulonglong)(lVar1 < 0x2e) ^ 1; + s32 sVar1; + + sVar1 = get_cur_controller_horz_stick_pos('\0'); + return (u32)((uint)(sVar1 < 0x2e) ^ 1); } -undefined4 get_controlstick_lr_enabled(void) +u32 get_controlstick_lr_enabled(void) { - return controlstick_lr_enabled; + return controlstick_lr_enabled; } @@ -116987,158 +116019,156 @@ undefined4 get_controlstick_lr_enabled(void) void set_controlstick_lr_disabled(void) { - controlstick_lr_enabled = 0; - return; + controlstick_lr_enabled = 0; + return; } -bool proc_7F0A4FB0(void) +bool sub_GAME_7F0A4FB0(void) { - ulonglong uVar1; - int iVar2; - bool ret; - - uVar1 = is_holding_greater_than_2E_left_on_stick(); - ret = uVar1 != 0; - if (ret) { - iVar2 = get_controlstick_lr_enabled(); - ret = iVar2 != 0; - } - return ret; + u32 uVar1; + bool ret; + + uVar1 = is_holding_greater_than_2E_left_on_stick(); + ret = uVar1 != 0; + if (ret) { + uVar1 = get_controlstick_lr_enabled(); + ret = uVar1 != 0; + } + return ret; } -ulonglong proc_7F0A4FEC(void) +bool proc_7F0A4FEC(void) { - bool bVar1; - ulonglong uVar2; - int iVar3; - - uVar2 = is_holding_greater_than_2E_right_on_stick(); - bVar1 = uVar2 != 0; - if (bVar1) { - iVar3 = get_controlstick_lr_enabled(); - bVar1 = iVar3 != 0; - } - return (ulonglong)bVar1; + u32 uVar1; + bool bVar2; + + uVar1 = is_holding_greater_than_2E_right_on_stick(); + bVar2 = uVar1 != 0; + if (bVar2) { + uVar1 = get_controlstick_lr_enabled(); + bVar2 = uVar1 != 0; + } + return bVar2; } -ulonglong proc_7F0A5028(void) +ulonglong is_holding_greater_than_2E_up_on_stick(void) { - longlong lVar1; - - lVar1 = get_cur_controller_vert_stick_pos('\0'); - return (ulonglong)(lVar1 < 0x2e) ^ 1; + s32 sVar1; + + sVar1 = get_cur_controller_vert_stick_pos('\0'); + return (ulonglong)(sVar1 < 0x2e) ^ 1; } -ulonglong proc_7F0A504C(void) +ulonglong is_holding_greater_than_2E_down_on_stick(void) { - longlong lVar1; - - lVar1 = get_cur_controller_vert_stick_pos('\0'); - return (ulonglong)(lVar1 < -0x2d); + s32 sVar1; + + sVar1 = get_cur_controller_vert_stick_pos('\0'); + return (ulonglong)(sVar1 < -0x2d); } -undefined4 proc_7F0A5070(void) +undefined4 get_D_80040AE0(void) { - return dword_80040AE0; + return D_80040AE0; } -void proc_7F0A507C(void) +void set_D_80040AE0_0(void) { - dword_80040AE0 = 0; - return; + D_80040AE0 = 0; + return; } -ulonglong proc_7F0A5088(void) +ulonglong sub_GAME_7F0A5088(void) { - bool bVar1; - ulonglong uVar2; - int iVar3; - - uVar2 = proc_7F0A5028(); - bVar1 = uVar2 != 0; - if (bVar1) { - iVar3 = proc_7F0A5070(); - bVar1 = iVar3 != 0; - } - return (ulonglong)bVar1; + bool bVar1; + ulonglong uVar2; + int iVar3; + + uVar2 = is_holding_greater_than_2E_up_on_stick(); + bVar1 = uVar2 != 0; + if (bVar1) { + iVar3 = get_D_80040AE0(); + bVar1 = iVar3 != 0; + } + return (ulonglong)bVar1; } -ulonglong proc_7F0A50C4(void) +ulonglong sub_GAME_7F0A50C4(void) { - bool bVar1; - ulonglong uVar2; - int iVar3; - - uVar2 = proc_7F0A504C(); - bVar1 = uVar2 != 0; - if (bVar1) { - iVar3 = proc_7F0A5070(); - bVar1 = iVar3 != 0; - } - return (ulonglong)bVar1; + bool bVar1; + ulonglong uVar2; + int iVar3; + + uVar2 = is_holding_greater_than_2E_down_on_stick(); + bVar1 = uVar2 != 0; + if (bVar1) { + iVar3 = get_D_80040AE0(); + bVar1 = iVar3 != 0; + } + return (ulonglong)bVar1; } -ulonglong proc_7F0A5100(void) +ulonglong is_holding_less_than_10_up_on_stick(void) { - longlong lVar1; - - lVar1 = get_cur_controller_vert_stick_pos('\0'); - return (ulonglong)(lVar1 < 0x10) ^ 1; + s32 sVar1; + + sVar1 = get_cur_controller_vert_stick_pos('\0'); + return (ulonglong)(sVar1 < 0x10) ^ 1; } -ulonglong proc_7F0A5124(void) +ulonglong is_holding_less_than_10_down_on_stick(void) { - longlong lVar1; - - lVar1 = get_cur_controller_vert_stick_pos('\0'); - return (ulonglong)(lVar1 < -0xf); + s32 sVar1; + + sVar1 = get_cur_controller_vert_stick_pos('\0'); + return (ulonglong)(sVar1 < -0xf); } -undefined4 proc_7F0A5148(void) +undefined4 get_D_80040AE4(void) { - return dword_80040AE4; + return dword_80040AE4; } -void proc_7F0A5154(void) +void set_D_80040AE4_0(void) { - dword_80040AE4 = 0; - return; + dword_80040AE4 = 0; + return; } @@ -117146,17 +116176,17 @@ void proc_7F0A5154(void) ulonglong proc_7F0A5160(void) { - bool bVar1; - ulonglong uVar2; - int iVar3; - - uVar2 = proc_7F0A5100(); - bVar1 = uVar2 != 0; - if (bVar1) { - iVar3 = proc_7F0A5148(); - bVar1 = iVar3 == 0; - } - return (ulonglong)bVar1; + bool bVar1; + ulonglong uVar2; + int iVar3; + + uVar2 = is_holding_less_than_10_up_on_stick(); + bVar1 = uVar2 != 0; + if (bVar1) { + iVar3 = get_D_80040AE4(); + bVar1 = iVar3 == 0; + } + return (ulonglong)bVar1; } @@ -117164,45 +116194,43 @@ ulonglong proc_7F0A5160(void) ulonglong proc_7F0A519C(void) { - bool bVar1; - ulonglong uVar2; - int iVar3; - - uVar2 = proc_7F0A5124(); - bVar1 = uVar2 != 0; - if (bVar1) { - iVar3 = proc_7F0A5148(); - bVar1 = iVar3 == 0; - } - return (ulonglong)bVar1; + bool bVar1; + ulonglong uVar2; + int iVar3; + + uVar2 = is_holding_less_than_10_down_on_stick(); + bVar1 = uVar2 != 0; + if (bVar1) { + iVar3 = get_D_80040AE4(); + bVar1 = iVar3 == 0; + } + return (ulonglong)bVar1; } -int ** proc_7F0A51D8(void) +void sub_GAME_7F0A51D8(void) { - int **ppiVar1; - - dword_80040B04 = 0x80; - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0xec,NULL); - return ppiVar1; + D_80040B04 = 0x80; + play_sfx_a1(ptr_sfx_buf,0xec,NULL); + return; } -int ** proc_7F0A5210(void) +void proc_7F0A5210(void) { - int **ppiVar1; - - set_controlstick_lr_disabled(); - play_sfx_a1(ptr_sfx_buf,0x9f,NULL); - ppiVar1 = (int **)get_random_value(); - if ((int **)(dword_80040B10 << 0x10) < ppiVar1) { - ppiVar1 = proc_7F0A51D8(); - } - return ppiVar1; + u32 uVar1; + + set_controlstick_lr_disabled(); + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + uVar1 = get_random_value(); + if ((uint)(dword_80040B10 << 0x10) < uVar1) { + sub_GAME_7F0A51D8(); + } + return; } @@ -117210,54 +116238,54 @@ int ** proc_7F0A5210(void) void proc_7F0A526C(void) { - bool bVar1; - bool bVar2; - int iVar4; - ulonglong uVar3; - bool bVar5; - - if (dword_800409A8 == 0) { - bVar1 = false; - bVar2 = false; - iVar4 = get_debug_gunwatchpos_flag(); - if (iVar4 == 0) { - uVar3 = get_controller_buttons_pressed('\0',0x22); - bVar1 = uVar3 != 0; - uVar3 = get_controller_buttons_pressed('\0',0x11); - if (uVar3 != 0) { - bVar2 = true; - } + bool bVar1; + bool bVar2; + int iVar3; + u32 uVar4; + bool bVar5; + + if (watch_soundrelated_maybe == 0) { + bVar1 = false; + bVar2 = false; + iVar3 = get_debug_gunwatchpos_flag(); + if (iVar3 == 0) { + uVar4 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG); + bVar1 = uVar4 != 0; + uVar4 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG); + if (uVar4 != 0) { + bVar2 = true; + } + } + uVar4 = get_controller_buttons_pressed('\0',L_JPAD); + if ((uVar4 != 0) || (bVar5 = sub_GAME_7F0A4FB0(), bVar5 != false)) { + bVar1 = true; + } + uVar4 = get_controller_buttons_pressed('\0',R_JPAD); + if ((uVar4 != 0) || (bVar5 = proc_7F0A4FEC(), bVar5 != false)) { + bVar2 = true; + } + if (bVar1) { + D_80040994 = 4; + proc_7F0A5210(); + trigger_watch_zoom((f32)4.59999990,15.00000000); + } + if (bVar2) { + D_80040994 = 1; + proc_7F0A5210(); + trigger_watch_zoom((f32)4.59999990,15.00000000); + } } - uVar3 = get_controller_buttons_pressed('\0',0x200); - if ((uVar3 != 0) || (bVar5 = proc_7F0A4FB0(), bVar5 != false)) { - bVar1 = true; + else { + if ((D_800409A4 != 0) && + (uVar4 = get_controller_buttons_pressed('\0',Z_TRIG|A_BUTTON), uVar4 != 0)) { + D_800409A4 = 0; + set_missionstate(0); + run_title_stage(); + mission_failed_or_aborted = TRUE; + deleteCurrentSelectedFolder(); + } } - uVar3 = get_controller_buttons_pressed('\0',0x100); - if ((uVar3 != 0) || (uVar3 = proc_7F0A4FEC(), uVar3 != 0)) { - bVar2 = true; - } - if (bVar1) { - DAT_80040994 = 4; - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_80058458,15.00000000); - } - if (bVar2) { - DAT_80040994 = 1; - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_8005845C,15.00000000); - } - } - else { - if ((dword_800409A4 != 0) && (uVar3 = get_controller_buttons_pressed('\0',0xa000), uVar3 != 0)) - { - dword_800409A4 = 0; - set_missionstate(0); - run_title_stage(); - mission_failed_or_aborted = TRUE; - deleteCurrentSelectedFolder(); - } - } - return; + return; } @@ -117265,46 +116293,46 @@ void proc_7F0A526C(void) void proc_7F0A53D8(void) { - bool bVar1; - bool bVar2; - int iVar4; - ulonglong uVar3; - bool bVar5; - - if (dword_800409A8 == 0) { - bVar1 = false; - bVar2 = false; - iVar4 = get_debug_gunwatchpos_flag(); - if (iVar4 == 0) { - uVar3 = get_controller_buttons_pressed('\0',0x22); - bVar1 = uVar3 != 0; - uVar3 = get_controller_buttons_pressed('\0',0x11); - if (uVar3 != 0) { - bVar2 = true; - } + bool bVar1; + bool bVar2; + int iVar3; + u32 uVar4; + bool bVar5; + + if (watch_soundrelated_maybe == 0) { + bVar1 = false; + bVar2 = false; + iVar3 = get_debug_gunwatchpos_flag(); + if (iVar3 == 0) { + uVar4 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG); + bVar1 = uVar4 != 0; + uVar4 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG); + if (uVar4 != 0) { + bVar2 = true; + } + } + uVar4 = get_controller_buttons_pressed('\0',L_JPAD); + if ((uVar4 != 0) || (bVar5 = sub_GAME_7F0A4FB0(), bVar5 != false)) { + bVar1 = true; + } + uVar4 = get_controller_buttons_pressed('\0',R_JPAD); + if ((uVar4 != 0) || (bVar5 = proc_7F0A4FEC(), bVar5 != false)) { + bVar2 = true; + } + if (bVar1) { + D_80040994 = 0; + zero_D_800409A4(); + proc_7F0A5210(); + trigger_watch_zoom((f32)flt_80058460,15.00000000); + } + if (bVar2) { + D_80040994 = 2; + set_controlstick_lr_disabled(); + proc_7F0A5210(); + trigger_watch_zoom((f32)flt_80058464,15.00000000); + } } - uVar3 = get_controller_buttons_pressed('\0',0x200); - if ((uVar3 != 0) || (bVar5 = proc_7F0A4FB0(), bVar5 != false)) { - bVar1 = true; - } - uVar3 = get_controller_buttons_pressed('\0',0x100); - if ((uVar3 != 0) || (uVar3 = proc_7F0A4FEC(), uVar3 != 0)) { - bVar2 = true; - } - if (bVar1) { - DAT_80040994 = 0; - proc_7F0AB4A4(); - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_80058460,15.00000000); - } - if (bVar2) { - DAT_80040994 = 2; - set_controlstick_lr_disabled(); - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_80058464,15.00000000); - } - } - return; + return; } @@ -117315,24 +116343,26 @@ void proc_7F0A53D8(void) void proc_7F0A5504(void) { - ulonglong uVar1; - bool bVar2; - - uVar1 = get_controller_buttons_pressed('\0',0x222); - if (((uVar1 == 0) && (bVar2 = proc_7F0A4FB0(), bVar2 == false)) || (dword_800409A8 != 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x111); - if (((uVar1 != 0) || (uVar1 = proc_7F0A4FEC(), uVar1 != 0)) && (dword_800409A8 == 0)) { - DAT_80040994 = 2; - proc_7F0AB48C(); - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_80058468,15.00000000); + u32 uVar1; + bool bVar2; + + uVar1 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG|L_JPAD); + if (((uVar1 == 0) && (bVar2 = sub_GAME_7F0A4FB0(), bVar2 == false)) || + (watch_soundrelated_maybe != 0)) { + uVar1 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG|R_JPAD); + if (((uVar1 != 0) || (bVar2 = proc_7F0A4FEC(), bVar2 != false)) && + (watch_soundrelated_maybe == 0)) { + D_80040994 = 2; + zero_D_80040998(); + proc_7F0A5210(); + trigger_watch_zoom((f32)flt_80058468,15.00000000); + } } - } - else { - DAT_80040994 = 1; - set_controlstick_lr_disabled(); - } - return; + else { + D_80040994 = 1; + set_controlstick_lr_disabled(); + } + return; } @@ -117340,26 +116370,28 @@ void proc_7F0A5504(void) void proc_7F0A55C4(void) { - ulonglong uVar1; - bool bVar2; - - uVar1 = get_controller_buttons_pressed('\0',0x222); - if ((((uVar1 == 0) && (bVar2 = proc_7F0A4FB0(), bVar2 == false)) || - (uVar1 = get_controller_buttons_held('\0',0x2000), uVar1 != 0)) || (dword_800409A8 != 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x111); - if (((uVar1 != 0) || (uVar1 = proc_7F0A4FEC(), uVar1 != 0)) && - ((uVar1 = get_controller_buttons_held('\0',0x2000), uVar1 == 0 && (dword_800409A8 == 0)))) { - DAT_80040994 = 3; - proc_7F0AB498(); - set_controlstick_lr_disabled(); + u32 uVar1; + bool bVar2; + + uVar1 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG|L_JPAD); + if ((((uVar1 == 0) && (bVar2 = sub_GAME_7F0A4FB0(), bVar2 == false)) || + (uVar1 = get_controller_buttons_held('\0',Z_TRIG), uVar1 != 0)) || + (watch_soundrelated_maybe != 0)) { + uVar1 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG|R_JPAD); + if (((uVar1 != 0) || (bVar2 = proc_7F0A4FEC(), bVar2 != false)) && + ((uVar1 = get_controller_buttons_held('\0',Z_TRIG), uVar1 == 0 && + (watch_soundrelated_maybe == 0)))) { + D_80040994 = 3; + zero_D_8004099C(); + set_controlstick_lr_disabled(); + } } - } - else { - DAT_80040994 = 1; - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_8005846C,15.00000000); - } - return; + else { + D_80040994 = 1; + proc_7F0A5210(); + trigger_watch_zoom((f32)flt_8005846C,15.00000000); + } + return; } @@ -117367,26 +116399,28 @@ void proc_7F0A55C4(void) void proc_7F0A56A4(void) { - ulonglong uVar1; - bool bVar2; - - uVar1 = get_controller_buttons_pressed('\0',0x222); - if ((((uVar1 == 0) && (bVar2 = proc_7F0A4FB0(), bVar2 == false)) || - (uVar1 = get_controller_buttons_held('\0',0x2000), uVar1 != 0)) || (dword_800409A8 != 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x111); - if (((uVar1 != 0) || (uVar1 = proc_7F0A4FEC(), uVar1 != 0)) && - ((uVar1 = get_controller_buttons_held('\0',0x2000), uVar1 == 0 && (dword_800409A8 == 0)))) { - DAT_80040994 = 4; - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_80058470,15.00000000); + u32 uVar1; + bool bVar2; + + uVar1 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG|L_JPAD); + if ((((uVar1 == 0) && (bVar2 = sub_GAME_7F0A4FB0(), bVar2 == false)) || + (uVar1 = get_controller_buttons_held('\0',Z_TRIG), uVar1 != 0)) || + (watch_soundrelated_maybe != 0)) { + uVar1 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG|R_JPAD); + if (((uVar1 != 0) || (bVar2 = proc_7F0A4FEC(), bVar2 != false)) && + ((uVar1 = get_controller_buttons_held('\0',Z_TRIG), uVar1 == 0 && + (watch_soundrelated_maybe == 0)))) { + D_80040994 = 4; + proc_7F0A5210(); + trigger_watch_zoom((f32)flt_80058470,15.00000000); + } } - } - else { - DAT_80040994 = 2; - proc_7F0AB48C(); - set_controlstick_lr_disabled(); - } - return; + else { + D_80040994 = 2; + zero_D_80040998(); + set_controlstick_lr_disabled(); + } + return; } @@ -117397,26 +116431,28 @@ void proc_7F0A56A4(void) void proc_7F0A5784(void) { - ulonglong uVar1; - bool bVar2; - - uVar1 = get_controller_buttons_pressed('\0',0x222); - if (((uVar1 == 0) && (bVar2 = proc_7F0A4FB0(), bVar2 == false)) || (dword_800409A8 != 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x111); - if (((uVar1 != 0) || (uVar1 = proc_7F0A4FEC(), uVar1 != 0)) && (dword_800409A8 == 0)) { - DAT_80040994 = 0; - proc_7F0AB4A4(); - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_80058478,15.00000000); + u32 uVar1; + bool bVar2; + + uVar1 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG|L_JPAD); + if (((uVar1 == 0) && (bVar2 = sub_GAME_7F0A4FB0(), bVar2 == false)) || + (watch_soundrelated_maybe != 0)) { + uVar1 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG|R_JPAD); + if (((uVar1 != 0) || (bVar2 = proc_7F0A4FEC(), bVar2 != false)) && + (watch_soundrelated_maybe == 0)) { + D_80040994 = 0; + zero_D_800409A4(); + proc_7F0A5210(); + trigger_watch_zoom((f32)flt_80058478,15.00000000); + } } - } - else { - DAT_80040994 = 3; - proc_7F0AB498(); - proc_7F0A5210(); - trigger_watch_zoom((f32)flt_80058474,15.00000000); - } - return; + else { + D_80040994 = 3; + zero_D_8004099C(); + proc_7F0A5210(); + trigger_watch_zoom((f32)flt_80058474,15.00000000); + } + return; } @@ -117424,24 +116460,27 @@ void proc_7F0A5784(void) // WARNING: Instruction at (ram,0x7f0a58d0) overlaps instruction at (ram,0x7f0a58cc) // -void proc_7F0A5860(void) +void sub_GAME_7F0A5860(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if (((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) || (dword_800409A8 != 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if (((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) && (dword_800409A8 == 0)) { - DAT_80040998 = 1; - proc_7F0A507C(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if (((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) || + (watch_soundrelated_maybe != 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if (((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) && + (watch_soundrelated_maybe == 0)) { + D_80040998 = 1; + set_D_80040AE0_0(); + } } - } - else { - DAT_80040998 = 1; - proc_7F0A507C(); - } - return; + else { + D_80040998 = 1; + set_D_80040AE0_0(); + } + return; } @@ -117452,21 +116491,24 @@ void proc_7F0A5860(void) void proc_7F0A5900(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if (((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) || (dword_800409A8 != 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if (((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) && (dword_800409A8 == 0)) { - DAT_80040998 = 0; - proc_7F0A507C(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if (((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) || + (watch_soundrelated_maybe != 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if (((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) && + (watch_soundrelated_maybe == 0)) { + D_80040998 = 0; + set_D_80040AE0_0(); + } } - } - else { - DAT_80040998 = 0; - proc_7F0A507C(); - } - return; + else { + D_80040998 = 0; + set_D_80040AE0_0(); + } + return; } @@ -117477,79 +116519,82 @@ void proc_7F0A5900(void) void proc_7F0A5998(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - DAT_8004099c += 1; - proc_7F0A507C(); - proc_7F0A4F44(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + D_8004099c += 1; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } } - } - else { - DAT_8004099c += -1; - proc_7F0A507C(); - proc_7F0A4F44(); - } - if (DAT_8004099c < 10) { - if (DAT_8004099c < 0) { - DAT_8004099c = 9; + else { + D_8004099c += -1; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); } - } - else { - DAT_8004099c = 0; - } - return; + if (D_8004099c < 10) { + if (D_8004099c < 0) { + D_8004099c = 9; + } + } + else { + D_8004099c = 0; + } + return; } -void proc_7F0A5A64(void) +void sub_GAME_7F0A5A64(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - DAT_8004099c = 1; - proc_7F0A507C(); - proc_7F0A4F44(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + D_8004099c = 1; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } } - } - else { - DAT_8004099c = 9; - proc_7F0A507C(); - proc_7F0A4F44(); - } - return; + else { + D_8004099c = 9; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } -void proc_7F0A5AF4(void) +void sub_GAME_7F0A5AF4(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - DAT_8004099c = 2; - proc_7F0A507C(); - proc_7F0A4F44(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + D_8004099c = 2; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } } - } - else { - DAT_8004099c = 0; - proc_7F0A507C(); - proc_7F0A4F44(); - } - return; + else { + D_8004099c = 0; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } @@ -117560,241 +116605,257 @@ void proc_7F0A5AF4(void) void proc_7F0A5B80(void) { - float fVar1; - int iVar4; - int iVar5; - ulonglong uVar2; - longlong lVar3; - - iVar4 = proc_7F08D038(); - iVar5 = get_debug_gunwatchpos_flag(); - if (iVar5 == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x808); - if ((uVar2 == 0) && (lVar3 = get_cur_controller_vert_stick_pos('\0'), lVar3 < 0x47)) { - uVar2 = get_controller_buttons_pressed('\0',0x404); - if ((((uVar2 != 0) || (lVar3 = get_cur_controller_vert_stick_pos('\0'), lVar3 < -0x46)) && - ((int)dword_800409BC < iVar4 + -1)) && (dword_800409A8 == 0)) { - dword_800409BC = dword_800409BC + 1.00000000; - } + f32 fVar1; + int iVar3; + int iVar4; + u32 uVar5; + s32 sVar6; + ulonglong uVar2; + + iVar3 = proc_7F08D038(); + iVar4 = get_debug_gunwatchpos_flag(); + if (iVar4 == 0) { + uVar5 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar5 == 0) && (sVar6 = get_cur_controller_vert_stick_pos('\0'), sVar6 < 0x47)) { + uVar5 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((((uVar5 != 0) || (sVar6 = get_cur_controller_vert_stick_pos('\0'), sVar6 < -0x46)) + && ((int)(float)dword_800409BC < iVar3 + -1)) && (watch_soundrelated_maybe == 0)) { + dword_800409BC = (f32)((float)dword_800409BC + 1.00000000); + } + } + else { + if ((0 < (int)(float)dword_800409BC) && (watch_soundrelated_maybe == 0)) { + dword_800409BC = (f32)((float)dword_800409BC - 1.00000000); + } + } + uVar5 = get_controller_buttons_held('\0',U_CBUTTONS|U_JPAD); + if (uVar5 == 0) { + uVar5 = get_controller_buttons_held('\0',D_CBUTTONS|D_JPAD); + if (((uVar5 != 0) && ((int)(float)dword_800409BC < iVar3 + -1)) && + (watch_soundrelated_maybe == 0)) { + dword_800409BC = (f32)((float)dword_800409BC + flt_80058480); + } + } + else { + if ((0 < (int)(float)dword_800409BC) && (watch_soundrelated_maybe == 0)) { + dword_800409BC = (f32)((float)dword_800409BC - flt_8005847C); + } + } + } + sVar6 = get_cur_controller_vert_stick_pos('\0'); + if ((((sVar6 < 0x1f) || (sVar6 = get_cur_controller_vert_stick_pos('\0'), 0x45 < sVar6)) || + (dword_800409B8 < 1)) || (watch_soundrelated_maybe != 0)) { + sVar6 = get_cur_controller_vert_stick_pos('\0'); + if (((sVar6 < -0x1e) && (sVar6 = get_cur_controller_vert_stick_pos('\0'), -0x46 < sVar6)) && + (((int)(float)dword_800409BC < iVar3 + -1 && (watch_soundrelated_maybe == 0)))) { + sVar6 = get_cur_controller_vert_stick_pos('\0'); + dword_800409BC = (f32)((float)dword_800409BC - (float)sVar6 / 300.00000000); + } } else { - if ((0 < (int)dword_800409BC) && (dword_800409A8 == 0)) { - dword_800409BC = dword_800409BC - 1.00000000; - } + sVar6 = get_cur_controller_vert_stick_pos('\0'); + dword_800409BC = (f32)((float)dword_800409BC - (float)sVar6 / 300.00000000); } - uVar2 = get_controller_buttons_held('\0',0x808); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held('\0',0x404); - if (((uVar2 != 0) && ((int)dword_800409BC < iVar4 + -1)) && (dword_800409A8 == 0)) { - dword_800409BC = dword_800409BC + flt_80058480; - } + uVar2 = proc_7F0A5160(); + if (((uVar2 == 0) || (dword_800409B8 < 1)) || (watch_soundrelated_maybe != 0)) { + uVar2 = proc_7F0A519C(); + if (((uVar2 != 0) && (dword_800409B8 < iVar3 + -1)) && (watch_soundrelated_maybe == 0)) { + dword_800409BC = (f32)((float)dword_800409BC + 1.00000000); + } } else { - if ((0 < (int)dword_800409BC) && (dword_800409A8 == 0)) { - dword_800409BC = dword_800409BC - flt_8005847C; - } + dword_800409BC = (f32)((float)dword_800409BC - 1.00000000); } - } - lVar3 = get_cur_controller_vert_stick_pos('\0'); - if ((((lVar3 < 0x1f) || (lVar3 = get_cur_controller_vert_stick_pos('\0'), 0x45 < lVar3)) || - (dword_800409B8 < 1)) || (dword_800409A8 != 0)) { - lVar3 = get_cur_controller_vert_stick_pos('\0'); - if (((lVar3 < -0x1e) && (lVar3 = get_cur_controller_vert_stick_pos('\0'), -0x46 < lVar3)) && - (((int)dword_800409BC < iVar4 + -1 && (dword_800409A8 == 0)))) { - iVar5 = get_cur_controller_vert_stick_pos('\0'); - dword_800409BC = dword_800409BC - (float)iVar5 / 300.00000000; - } - } - else { - iVar5 = get_cur_controller_vert_stick_pos('\0'); - dword_800409BC = dword_800409BC - (float)iVar5 / 300.00000000; - } - uVar2 = proc_7F0A5160(); - if (((uVar2 == 0) || (dword_800409B8 < 1)) || (dword_800409A8 != 0)) { - uVar2 = proc_7F0A519C(); - if (((uVar2 != 0) && (dword_800409B8 < iVar4 + -1)) && (dword_800409A8 == 0)) { - dword_800409BC = dword_800409BC + 1.00000000; - } - } - else { - dword_800409BC = dword_800409BC - 1.00000000; - } - uVar2 = proc_7F0A5100(); - if ((uVar2 == 0) && (uVar2 = proc_7F0A5124(), uVar2 == 0)) { - dword_80040AE4 = 0; - } - else { - dword_80040AE4 = 1; - } - fVar1 = (float)iVar4 - 0.50000000; - if (dword_800409BC <= (float)iVar4 - 0.50000000) { - fVar1 = dword_800409BC; - } - dword_800409BC = fVar1; - if (dword_800409BC < -0.50000000) { - dword_800409BC = -0.50000000; - } - dword_800409B8 = (int)dword_800409BC; - if (j_text_trigger == 0) { - iVar4 = 0xc; - iVar5 = 0xc; - } - else { - iVar4 = 0xe; - iVar5 = 0xe; - } - dword_800409B4 = iVar5 * 2 + -dword_800409B8 * iVar4; - if (dword_800409B4 < dword_800409B0) { - dword_800409B0 = (dword_800409B0 - (dword_800409B0 - dword_800409B4) / 3) + -1; - dword_800409C0 = 0; - } - else { - if (dword_800409B0 < dword_800409B4) { - dword_800409B0 = dword_800409B0 + (dword_800409B4 - dword_800409B0) / 3 + 1; - dword_800409C0 = 0; + uVar2 = is_holding_less_than_10_up_on_stick(); + if ((uVar2 == 0) && (uVar2 = is_holding_less_than_10_down_on_stick(), uVar2 == 0)) { + dword_80040AE4 = 0; } else { - dword_800409C0 = 1; + dword_80040AE4 = 1; } - } - if ((dword_800409BC <= (float)dword_800409B8 + flt_80058484) || - (uVar2 = get_controller_buttons_held('\0',0xffff), uVar2 != 0)) { - if ((dword_800409BC <= (float)dword_800409B8 + flt_8005848C) && - (uVar2 = get_controller_buttons_held('\0',0xffff), uVar2 == 0)) { - dword_800409BC = dword_800409BC + flt_80058490; + fVar1 = (f32)((float)iVar3 - 0.50000000); + if ((float)dword_800409BC <= (float)iVar3 - 0.50000000) { + fVar1 = dword_800409BC; } - } - else { - dword_800409BC = dword_800409BC - flt_80058488; - } - return; + dword_800409BC = fVar1; + if ((float)dword_800409BC < -0.50000000) { + dword_800409BC = -0.50000000; + } + dword_800409B8 = (int)(float)dword_800409BC; + if (j_text_trigger == 0) { + iVar3 = 0xc; + iVar4 = 0xc; + } + else { + iVar3 = 0xe; + iVar4 = 0xe; + } + dword_800409B4 = iVar4 * 2 + -dword_800409B8 * iVar3; + if (dword_800409B4 < dword_800409B0) { + dword_800409B0 = (dword_800409B0 - (dword_800409B0 - dword_800409B4) / 3) + -1; + dword_800409C0 = 0; + } + else { + if (dword_800409B0 < dword_800409B4) { + dword_800409B0 = dword_800409B0 + (dword_800409B4 - dword_800409B0) / 3 + 1; + dword_800409C0 = 0; + } + else { + dword_800409C0 = 1; + } + } + if (((float)dword_800409BC <= (float)dword_800409B8 + flt_80058484) || + (uVar5 = get_controller_buttons_held + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON), uVar5 != 0)) { + if (((float)dword_800409BC <= (float)dword_800409B8 + flt_8005848C) && + (uVar5 = get_controller_buttons_held + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG| + DUMMY_2|DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG| + B_BUTTON|A_BUTTON), uVar5 == 0)) { + dword_800409BC = (f32)((float)dword_800409BC + flt_80058490); + } + } + else { + dword_800409BC = (f32)((float)dword_800409BC - flt_80058488); + } + return; } -void proc_7F0A611C(float *param_1,int *param_2,int param_3,int *param_4,int *param_5, - undefined4 *param_6,int param_7,int param_8,int param_9) +void proc_7F0A611C(float *controltype_2,int *controltype_0,int param_3,int *negvspacing, + int *controltype_1,undefined4 *controltype_set,int param_7,int param_8,int param_9 + ) { - int iVar3; - ulonglong uVar1; - longlong lVar2; - int iVar4; - float fVar5; - - iVar3 = get_debug_gunwatchpos_flag(); - if (iVar3 != 0) goto LAB_7f0a6298; - uVar1 = get_controller_buttons_pressed('\0',0x808); - if (uVar1 == 0) { - lVar2 = get_cur_controller_vert_stick_pos('\0'); - if (0x46 < lVar2) { - fVar5 = *param_1; - goto LAB_7f0a616c; - } - uVar1 = get_controller_buttons_pressed('\0',0x404); - if (uVar1 == 0) { - lVar2 = get_cur_controller_vert_stick_pos('\0'); - if (lVar2 < -0x46) { - fVar5 = *param_1; - goto LAB_7f0a61c8; - } - } - else { - fVar5 = *param_1; + int iVar2; + u32 uVar3; + s32 sVar4; + ulonglong uVar1; + int iVar5; + float fVar6; + + iVar2 = get_debug_gunwatchpos_flag(); + if (iVar2 != 0) goto LAB_7f0a6298; + uVar3 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if (uVar3 == 0) { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + if (0x46 < sVar4) { + fVar6 = *controltype_2; + goto LAB_7f0a616c; + } + uVar3 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if (uVar3 == 0) { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + if (sVar4 < -0x46) { + fVar6 = *controltype_2; + goto LAB_7f0a61c8; + } + } + else { + fVar6 = *controltype_2; LAB_7f0a61c8: - if (((int)fVar5 < param_3 + -1) && (param_8 != 0)) { - *param_1 = fVar5 + 1.00000000; - } - } - } - else { - fVar5 = *param_1; -LAB_7f0a616c: - if ((0 < (int)fVar5) && (param_8 != 0)) { - *param_1 = fVar5 - 1.00000000; - } - } - uVar1 = get_controller_buttons_held('\0',0x808); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\0',0x404); - if (((uVar1 != 0) && ((int)*param_1 < param_3 + -1)) && (param_8 != 0)) { - *param_1 = *param_1 + flt_80058498; - } - } - else { - if ((0 < (int)*param_1) && (param_8 != 0)) { - *param_1 = *param_1 - flt_80058494; - } - } -LAB_7f0a6298: - lVar2 = get_cur_controller_vert_stick_pos('\0'); - if (((lVar2 < 0x1f) || (lVar2 = get_cur_controller_vert_stick_pos('\0'), 0x45 < lVar2)) || - ((*param_2 < 1 || (param_8 == 0)))) { - lVar2 = get_cur_controller_vert_stick_pos('\0'); - if ((((lVar2 < -0x1e) && (lVar2 = get_cur_controller_vert_stick_pos('\0'), -0x46 < lVar2)) && - ((int)*param_1 < param_3 + -1)) && (param_8 != 0)) { - iVar3 = get_cur_controller_vert_stick_pos('\0'); - *param_1 = *param_1 - (float)iVar3 / 300.00000000; - } - } - else { - iVar3 = get_cur_controller_vert_stick_pos('\0'); - *param_1 = *param_1 - (float)iVar3 / 300.00000000; - } - uVar1 = proc_7F0A5160(); - if (((uVar1 == 0) || (*param_2 < 1)) || (param_8 == 0)) { - uVar1 = proc_7F0A519C(); - if (((uVar1 != 0) && (*param_2 < param_3 + -1)) && (param_8 != 0)) { - *param_1 = *param_1 + 1.00000000; - } - } - else { - *param_1 = *param_1 - 1.00000000; - } - uVar1 = proc_7F0A5100(); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5124(), uVar1 == 0)) { - dword_80040AE4 = 0; - } - else { - dword_80040AE4 = 1; - } - fVar5 = *param_1; - if ((float)param_3 - 0.50000000 < fVar5) { - *param_1 = (float)param_3 - 0.50000000; - fVar5 = *param_1; - } - if (fVar5 < -0.50000000) { - *param_1 = -0.50000000; - fVar5 = *param_1; - } - *param_2 = (int)fVar5; - iVar4 = -(int)fVar5 * param_9 + param_7 * param_9; - *param_5 = iVar4; - iVar3 = *param_4; - if (iVar4 < iVar3) { - *param_4 = (iVar3 - (iVar3 - iVar4) / 3) + -1; - *param_6 = 0; - } - else { - if (iVar3 < iVar4) { - *param_4 = iVar3 + (iVar4 - iVar3) / 3 + 1; - *param_6 = 0; + if (((int)fVar6 < param_3 + -1) && (param_8 != 0)) { + *controltype_2 = fVar6 + 1.00000000; + } + } } else { - *param_6 = 1; + fVar6 = *controltype_2; +LAB_7f0a616c: + if ((0 < (int)fVar6) && (param_8 != 0)) { + *controltype_2 = fVar6 - 1.00000000; + } } - } - if ((*param_1 <= (float)*param_2 + flt_8005849C) || - (uVar1 = get_controller_buttons_held('\0',0xffff), uVar1 != 0)) { - if ((*param_1 <= (float)*param_2 + flt_800584A4) && - (uVar1 = get_controller_buttons_held('\0',0xffff), uVar1 == 0)) { - *param_1 = *param_1 + flt_800584A8; + uVar3 = get_controller_buttons_held('\0',U_CBUTTONS|U_JPAD); + if (uVar3 == 0) { + uVar3 = get_controller_buttons_held('\0',D_CBUTTONS|D_JPAD); + if (((uVar3 != 0) && ((int)*controltype_2 < param_3 + -1)) && (param_8 != 0)) { + *controltype_2 = *controltype_2 + flt_80058498; + } } - } - else { - *param_1 = *param_1 - flt_800584A0; - } - return; + else { + if ((0 < (int)*controltype_2) && (param_8 != 0)) { + *controltype_2 = *controltype_2 - flt_80058494; + } + } +LAB_7f0a6298: + sVar4 = get_cur_controller_vert_stick_pos('\0'); + if (((sVar4 < 0x1f) || (sVar4 = get_cur_controller_vert_stick_pos('\0'), 0x45 < sVar4)) || + ((*controltype_0 < 1 || (param_8 == 0)))) { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + if ((((sVar4 < -0x1e) && (sVar4 = get_cur_controller_vert_stick_pos('\0'), -0x46 < sVar4)) + && ((int)*controltype_2 < param_3 + -1)) && (param_8 != 0)) { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + *controltype_2 = *controltype_2 - (float)sVar4 / 300.00000000; + } + } + else { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + *controltype_2 = *controltype_2 - (float)sVar4 / 300.00000000; + } + uVar1 = proc_7F0A5160(); + if (((uVar1 == 0) || (*controltype_0 < 1)) || (param_8 == 0)) { + uVar1 = proc_7F0A519C(); + if (((uVar1 != 0) && (*controltype_0 < param_3 + -1)) && (param_8 != 0)) { + *controltype_2 = *controltype_2 + 1.00000000; + } + } + else { + *controltype_2 = *controltype_2 - 1.00000000; + } + uVar1 = is_holding_less_than_10_up_on_stick(); + if ((uVar1 == 0) && (uVar1 = is_holding_less_than_10_down_on_stick(), uVar1 == 0)) { + dword_80040AE4 = 0; + } + else { + dword_80040AE4 = 1; + } + fVar6 = *controltype_2; + if ((float)param_3 - 0.50000000 < fVar6) { + *controltype_2 = (float)param_3 - 0.50000000; + fVar6 = *controltype_2; + } + if (fVar6 < -0.50000000) { + *controltype_2 = -0.50000000; + fVar6 = *controltype_2; + } + *controltype_0 = (int)fVar6; + iVar5 = -(int)fVar6 * param_9 + param_7 * param_9; + *controltype_1 = iVar5; + iVar2 = *negvspacing; + if (iVar5 < iVar2) { + *negvspacing = (iVar2 - (iVar2 - iVar5) / 3) + -1; + *controltype_set = 0; + } + else { + if (iVar2 < iVar5) { + *negvspacing = iVar2 + (iVar5 - iVar2) / 3 + 1; + *controltype_set = 0; + } + else { + *controltype_set = 1; + } + } + if ((*controltype_2 <= (float)*controltype_0 + flt_8005849C) || + (uVar3 = get_controller_buttons_held + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON), uVar3 != 0)) { + if ((*controltype_2 <= (float)*controltype_0 + flt_800584A4) && + (uVar3 = get_controller_buttons_held + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG| + DUMMY_2|DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG| + B_BUTTON|A_BUTTON), uVar3 == 0)) { + *controltype_2 = *controltype_2 + flt_800584A8; + } + } + else { + *controltype_2 = *controltype_2 - flt_800584A0; + } + return; } @@ -117802,21 +116863,22 @@ LAB_7f0a6298: void proc_7F0A6618(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 != 0) || (uVar1 = proc_7F0A5088(), uVar1 != 0)) { - dword_800409A0 = 4; - proc_7F0A507C(); - proc_7F0A4F44(); - } - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - dword_800409A0 = 1; - proc_7F0A507C(); - proc_7F0A4F44(); - } - return; + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A5088(), uVar1 != 0)) { + dword_800409A0 = 4; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + dword_800409A0 = 1; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } @@ -117824,23 +116886,24 @@ void proc_7F0A6618(void) void proc_7F0A66A0(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - dword_800409A0 = 2; - proc_7F0A507C(); - proc_7F0A4F44(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + dword_800409A0 = 2; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } } - } - else { - dword_800409A0 = 0; - proc_7F0A507C(); - proc_7F0A4F44(); - } - return; + else { + dword_800409A0 = 0; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } @@ -117848,23 +116911,24 @@ void proc_7F0A66A0(void) void proc_7F0A672C(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - dword_800409A0 = 3; - proc_7F0A507C(); - proc_7F0A4F44(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + dword_800409A0 = 3; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } } - } - else { - dword_800409A0 = 1; - proc_7F0A507C(); - proc_7F0A4F44(); - } - return; + else { + dword_800409A0 = 1; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } @@ -117872,23 +116936,24 @@ void proc_7F0A672C(void) void proc_7F0A67BC(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - dword_800409A0 = 4; - proc_7F0A507C(); - proc_7F0A4F44(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + dword_800409A0 = 4; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } } - } - else { - dword_800409A0 = 2; - proc_7F0A507C(); - proc_7F0A4F44(); - } - return; + else { + dword_800409A0 = 2; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } @@ -117899,23 +116964,24 @@ void proc_7F0A67BC(void) void proc_7F0A684C(void) { - ulonglong uVar1; - - uVar1 = get_controller_buttons_pressed('\0',0x808); - if ((uVar1 == 0) && (uVar1 = proc_7F0A5088(), uVar1 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x404); - if ((uVar1 != 0) || (uVar1 = proc_7F0A50C4(), uVar1 != 0)) { - dword_800409A0 = 0; - proc_7F0A507C(); - proc_7F0A4F44(); + u32 uVar2; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD); + if ((uVar2 == 0) && (uVar1 = sub_GAME_7F0A5088(), uVar1 == 0)) { + uVar2 = get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD); + if ((uVar2 != 0) || (uVar1 = sub_GAME_7F0A50C4(), uVar1 != 0)) { + dword_800409A0 = 0; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } } - } - else { - dword_800409A0 = 3; - proc_7F0A507C(); - proc_7F0A4F44(); - } - return; + else { + dword_800409A0 = 3; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } @@ -117923,40 +116989,39 @@ void proc_7F0A684C(void) void proc_7F0A68D8(short *param_1) { - short sVar1; - int iVar2; - int iVar3; - int iVar4; - short *psVar5; - float fVar6; - - fVar6 = sqrtf(flt_800584AC - (float)(dword_80040B40 * dword_80040B40)); - iVar4 = 0; - iVar3 = -1; - while( true ) { - do { - sVar1 = (short)iVar3; - param_1[1] = 0; - iVar3 += 2; - psVar5 = param_1 + 8; - *param_1 = (short)(int)fVar6 * sVar1; - iVar2 = dword_80040B40; - param_1[3] = 0; - param_1[4] = 0; - param_1[2] = (short)iVar4 + (short)iVar2; - param_1[5] = 0; - *(undefined *)(param_1 + 6) = 0; - *(undefined *)((int)param_1 + 0xd) = 0xa0; - *(undefined *)(param_1 + 7) = 0; - *(undefined *)((int)param_1 + 0xf) = (char)dword_80040B08; - param_1 = psVar5; - } while (iVar3 != 3); - iVar4 += 4; - if (iVar4 == 8) break; + short sVar1; + int iVar2; + int iVar3; + int iVar4; + short *psVar5; + float fVar6; + + fVar6 = sqrtf(flt_800584AC - (float)(dword_80040B40 * dword_80040B40)); + iVar4 = 0; iVar3 = -1; - param_1 = psVar5; - } - return; + while( true ) { + do { + sVar1 = (short)iVar3; + param_1[1] = 0; + iVar3 += 2; + psVar5 = param_1 + 8; + *param_1 = (short)(int)fVar6 * sVar1; + iVar2 = dword_80040B40; + param_1[3] = 0; + param_1[4] = 0; + param_1[2] = (short)iVar4 + (short)iVar2; + param_1[5] = 0; + *(undefined *)(param_1 + 6) = 0; + *(undefined *)((int)param_1 + 0xd) = 0xa0; + *(undefined *)(param_1 + 7) = 0; + *(undefined *)((int)param_1 + 0xf) = (char)dword_80040B08; + param_1 = psVar5; + } while (iVar3 != 3); + iVar4 += 4; + if (iVar4 == 8) break; + iVar3 = -1; + } + return; } @@ -117964,22 +117029,22 @@ void proc_7F0A68D8(short *param_1) void proc_7F0A69A8(void) { - longlong lVar1; - - lVar1 = get_attached_controller_count(); - if (lVar1 < 2) { - dword_800409D8 = 4; - } - else { - dword_800409D8 = 8; - } - proc_7F0A4F44(); - DAT_80040994 = 0; - dword_800409A0 = 4; - dword_800409C8 = flt_800584B0; - dword_800409CC = flt_800584B4; - proc_7F08D8E0(); - return; + u64 uVar1; + + uVar1 = get_attached_controller_count(); + if ((longlong)uVar1 < 2) { + D_800409D8 = 4; + } + else { + D_800409D8 = 8; + } + sub_GAME_7F0A4F44(); + D_80040994 = 0; + dword_800409A0 = 4; + dword_800409C8 = (f32)0.99900001; + dword_800409CC = (f32)0.99989998; + proc_7F08D8E0(); + return; } @@ -117987,13 +117052,13 @@ void proc_7F0A69A8(void) float proc_7F0A6A2C(float param_1) { - if (flt_800584B8 < param_1) { - return param_1 - flt_800584BC; - } - if (param_1 < flt_800584C0) { - param_1 = param_1 + flt_800584C4; - } - return param_1; + if (flt_800584B8 < param_1) { + return param_1 - flt_800584BC; + } + if (param_1 < flt_800584C0) { + param_1 = param_1 + flt_800584C4; + } + return param_1; } @@ -118001,136 +117066,136 @@ float proc_7F0A6A2C(float param_1) void proc_7F0A6A80(void) { - bool bVar1; - ulonglong uVar2; - longlong lVar3; - u32 uVar4; - uint uVar5; - - uVar2 = get_controller_buttons_pressed('\0',0x1000); - if (uVar2 != 0) { - set_open_close_solo_watch_menu_to_1(); - } - if (controlstick_lr_enabled == 0) { - lVar3 = get_cur_controller_horz_stick_pos('\0'); - if ((lVar3 < -10) || (lVar3 = get_cur_controller_horz_stick_pos('\0'), 10 < lVar3)) { - lVar3 = get_cur_controller_horz_stick_pos('\0'); - if ((lVar3 < 0xb) && (lVar3 = controller_7000C174('\0'), 10 < lVar3)) { - controlstick_lr_enabled = 1; - } - else { - lVar3 = get_cur_controller_horz_stick_pos('\0'); - if ((-0xb < lVar3) && (lVar3 = controller_7000C174('\0'), lVar3 < -10)) { - controlstick_lr_enabled = 1; + bool bVar1; + u32 uVar3; + s32 sVar4; + longlong lVar2; + uint uVar5; + + uVar3 = get_controller_buttons_pressed('\0',START_BUTTON); + if (uVar3 != 0) { + set_open_close_solo_watch_menu_to_1(); + } + if (controlstick_lr_enabled == 0) { + sVar4 = get_cur_controller_horz_stick_pos('\0'); + if ((sVar4 < -10) || (sVar4 = get_cur_controller_horz_stick_pos('\0'), 10 < sVar4)) { + sVar4 = get_cur_controller_horz_stick_pos('\0'); + if ((sVar4 < 0xb) && (lVar2 = controller_7000C174('\0'), 10 < lVar2)) { + controlstick_lr_enabled = 1; + } + else { + sVar4 = get_cur_controller_horz_stick_pos('\0'); + if ((-0xb < sVar4) && (lVar2 = controller_7000C174('\0'), lVar2 < -10)) { + controlstick_lr_enabled = 1; + } + } } - } - } - else { - controlstick_lr_enabled = 1; - } - } - if (dword_80040AE0 == 0) { - lVar3 = get_cur_controller_vert_stick_pos('\0'); - if ((lVar3 < -10) || (lVar3 = get_cur_controller_vert_stick_pos('\0'), 10 < lVar3)) { - lVar3 = get_cur_controller_vert_stick_pos('\0'); - if ((lVar3 < 0xb) && (lVar3 = controller_7000C284('\0'), 10 < lVar3)) { - dword_80040AE0 = 1; - } - else { - lVar3 = get_cur_controller_vert_stick_pos('\0'); - if ((-0xb < lVar3) && (lVar3 = controller_7000C284('\0'), lVar3 < -10)) { - dword_80040AE0 = 1; + else { + controlstick_lr_enabled = 1; } - } } - else { - dword_80040AE0 = 1; + if (D_80040AE0 == 0) { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + if ((sVar4 < -10) || (sVar4 = get_cur_controller_vert_stick_pos('\0'), 10 < sVar4)) { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + if ((sVar4 < 0xb) && (lVar2 = controller_7000C284('\0'), 10 < lVar2)) { + D_80040AE0 = 1; + } + else { + sVar4 = get_cur_controller_vert_stick_pos('\0'); + if ((-0xb < sVar4) && (lVar2 = controller_7000C284('\0'), lVar2 < -10)) { + D_80040AE0 = 1; + } + } + } + else { + D_80040AE0 = 1; + } } - } - bVar1 = dword_80040AF8 < 0; - dword_80040AF8 += -1; - if (bVar1) { - dword_80040AF4 = dword_80040AF4 + -0x100000; - } - if (dword_80040AF4 < &UNK_005f00a1) { - dword_80040AF4 = (undefined *)0xff00a0; - dword_80040AF8 = 0xf; - } - if (dword_80040B00 < 0) { - dword_80040AFC -= 0x10; - } - dword_80040B00 += -1; - if (dword_80040AFC < 0x60) { - dword_80040AFC = 0xff; - dword_80040B00 = 0xf; - } - dword_80040B14 = - dword_80040B14 + - ((float)dword_80040B1C * (float)dword_80048498 * flt_800584C8) / 360.00000000; - dword_80040B14 = proc_7F0A6A2C(dword_80040B14); - uVar5 = dword_80040B0C << 0x10; - uVar4 = get_random_value(); - if (uVar5 < uVar4) { - proc_7F0A51D8(); - } - if (dword_80040B04 < 0xe0) { - uVar4 = get_random_value(); - dword_80040B04 += uVar4 >> 0x1e; - } - if (0xe0 < dword_80040B04) { - dword_80040B04 = 0xe0; - } - dword_80040B08 = dword_80040B04 * -4 + 0x380; - dword_80040B40 += -4; - if (0x156 < dword_80040B40) { - dword_80040B40 = -0x156; - } - if (dword_80040B40 < -0x156) { - dword_80040B40 = 0x156; - } - dword_80040B44 = dword_80040B44 + 1 & 1; - switch(DAT_80040994) { - case 0: - proc_7F0A526C(); - break; - case 1: - proc_7F0A53D8(); - break; - case 2: - if (DAT_80040998 == 0) { - proc_7F0A5860(); + bVar1 = dword_80040AF8 < 0; + dword_80040AF8 += -1; + if (bVar1) { + dword_80040AF4 = dword_80040AF4 + -0x100000; } - else { - if (DAT_80040998 == 1) { - proc_7F0A5900(); - } + if (dword_80040AF4 < &UNK_005f00a1) { + dword_80040AF4 = (undefined *)0xff00a0; + dword_80040AF8 = 0xf; } - proc_7F0A55C4(); - break; - case 3: - switch(DAT_8004099c) { + if (dword_80040B00 < 0) { + dword_80040AFC -= 0x10; + } + dword_80040B00 += -1; + if (dword_80040AFC < 0x60) { + dword_80040AFC = 0xff; + dword_80040B00 = 0xf; + } + dword_80040B14 = + (f32)((float)dword_80040B14 + + ((float)dword_80040B1C * (float)speedgraphframes * flt_800584C8) / 360.00000000); + dword_80040B14 = (f32)proc_7F0A6A2C((float)dword_80040B14); + uVar5 = dword_80040B0C << 0x10; + uVar3 = get_random_value(); + if (uVar5 < uVar3) { + sub_GAME_7F0A51D8(); + } + if (D_80040B04 < 0xe0) { + uVar3 = get_random_value(); + D_80040B04 += uVar3 >> 0x1e; + } + if (0xe0 < D_80040B04) { + D_80040B04 = 0xe0; + } + dword_80040B08 = D_80040B04 * -4 + 0x380; + dword_80040B40 += -4; + if (0x156 < dword_80040B40) { + dword_80040B40 = -0x156; + } + if (dword_80040B40 < -0x156) { + dword_80040B40 = 0x156; + } + dword_80040B44 = dword_80040B44 + 1 & 1; + switch(D_80040994) { case 0: - proc_7F0A5A64(); - break; + proc_7F0A526C(); + break; case 1: - proc_7F0A5AF4(); - break; + proc_7F0A53D8(); + break; case 2: + if (D_80040998 == 0) { + sub_GAME_7F0A5860(); + } + else { + if (D_80040998 == 1) { + proc_7F0A5900(); + } + } + proc_7F0A55C4(); + break; case 3: + switch(D_8004099c) { + case 0: + sub_GAME_7F0A5A64(); + break; + case 1: + sub_GAME_7F0A5AF4(); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + proc_7F0A5998(); + } + proc_7F0A56A4(); + break; case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - proc_7F0A5998(); + proc_7F0A5784(); } - proc_7F0A56A4(); - break; - case 4: - proc_7F0A5784(); - } - return; + return; } @@ -118138,43 +117203,43 @@ void proc_7F0A6A80(void) undefined4 * proc_7F0A6EE8(undefined4 *param_1) { - short sVar1; - short sVar2; - - param_1[1] = 0x2000; - *param_1 = 0xb7000000; - param_1[2] = 0xba001402; - param_1[3] = 0; - param_1[5] = 0x800000; - param_1[4] = 0xba001701; - param_1[6] = 0xed000000; - sVar1 = get_video2_settings_txtClipW(); - sVar2 = get_video2_settings_txtClipH(); - param_1[7] = (int)((float)(int)sVar2 * 4.00000000) & 0xfffU | - ((int)((float)(int)sVar1 * 4.00000000) & 0xfffU) << 0xc; - param_1[8] = 0xba001001; - param_1[9] = 0; - param_1[0xb] = 0; - param_1[10] = 0xba000e02; - param_1[0xd] = 0; - param_1[0xc] = 0xba001102; - param_1[0xf] = 0x80000; - param_1[0xe] = 0xba001301; - param_1[0x11] = 0x2000; - param_1[0x10] = 0xba000c02; - param_1[0x13] = 0xc00; - param_1[0x12] = 0xba000903; - param_1[0x15] = 0xfffe793c; - param_1[0x14] = 0xfcffffff; - param_1[0x16] = 0xba000801; - param_1[0x17] = 0; - param_1[0x18] = 0xb9000002; - param_1[0x19] = 0; - param_1[0x1b] = 0xf0a4000; - param_1[0x1a] = 0xb900031d; - param_1[0x1c] = 0xba000602; - param_1[0x1d] = 0; - return param_1 + 0x1e; + short sVar1; + short sVar2; + + param_1[1] = 0x2000; + *param_1 = 0xb7000000; + param_1[2] = 0xba001402; + param_1[3] = 0; + param_1[5] = 0x800000; + param_1[4] = 0xba001701; + param_1[6] = 0xed000000; + sVar1 = get_video2_settings_txtClipW(); + sVar2 = get_video2_settings_txtClipH(); + param_1[7] = (int)((float)(int)sVar2 * 4.00000000) & 0xfffU | + ((int)((float)(int)sVar1 * 4.00000000) & 0xfffU) << 0xc; + param_1[8] = 0xba001001; + param_1[9] = 0; + param_1[0xb] = 0; + param_1[10] = 0xba000e02; + param_1[0xd] = 0; + param_1[0xc] = 0xba001102; + param_1[0xf] = 0x80000; + param_1[0xe] = 0xba001301; + param_1[0x11] = 0x2000; + param_1[0x10] = 0xba000c02; + param_1[0x13] = 0xc00; + param_1[0x12] = 0xba000903; + param_1[0x15] = 0xfffe793c; + param_1[0x14] = 0xfcffffff; + param_1[0x16] = 0xba000801; + param_1[0x17] = 0; + param_1[0x18] = 0xb9000002; + param_1[0x19] = 0; + param_1[0x1b] = 0xf0a4000; + param_1[0x1a] = 0xb900031d; + param_1[0x1c] = 0xba000602; + param_1[0x1d] = 0; + return param_1 + 0x1e; } @@ -118182,183 +117247,182 @@ undefined4 * proc_7F0A6EE8(undefined4 *param_1) void proc_7F0A70AC(int param_1,int param_2) { - int iVar1; - uint uVar2; - int iVar3; - - iVar1 = 0; - iVar3 = param_2; - do { - iVar1 += 1; - *(undefined *)(iVar3 + 0xc) = 0x20; - *(undefined *)(iVar3 + 0xd) = 0x70; - *(undefined *)(iVar3 + 0xe) = 0x20; - iVar3 = iVar3 + 0x10; - } while (iVar1 < 0x14); - iVar3 = param_1 * 4 + 3; - if (param_1 * 4 <= iVar3) { - uVar2 = param_2 + param_1 * 0x40; - *(undefined *)(uVar2 + 0xc) = 0x50; - while( true ) { - *(undefined *)(uVar2 + 0xd) = 0xf0; - *(undefined *)(uVar2 + 0xe) = 0x50; - if (dword_800409A8 != 0) { - *(undefined *)(uVar2 + 0xc) = 0x30; - *(undefined *)(uVar2 + 0xd) = 0xa0; - *(undefined *)(uVar2 + 0xe) = 0x30; - } - if ((uint)(iVar3 * 0x10 + param_2) < uVar2 + 0x10) break; - *(undefined *)(uVar2 + 0x1c) = 0x50; - uVar2 = uVar2 + 0x10; + int iVar1; + uint uVar2; + int iVar3; + + iVar1 = 0; + iVar3 = param_2; + do { + iVar1 += 1; + *(undefined *)(iVar3 + 0xc) = 0x20; + *(undefined *)(iVar3 + 0xd) = 0x70; + *(undefined *)(iVar3 + 0xe) = 0x20; + iVar3 = iVar3 + 0x10; + } while (iVar1 < 0x14); + iVar3 = param_1 * 4 + 3; + if (param_1 * 4 <= iVar3) { + uVar2 = param_2 + param_1 * 0x40; + *(undefined *)(uVar2 + 0xc) = 0x50; + while( true ) { + *(undefined *)(uVar2 + 0xd) = 0xf0; + *(undefined *)(uVar2 + 0xe) = 0x50; + if (watch_soundrelated_maybe != 0) { + *(undefined *)(uVar2 + 0xc) = 0x30; + *(undefined *)(uVar2 + 0xd) = 0xa0; + *(undefined *)(uVar2 + 0xe) = 0x30; + } + if ((uint)(iVar3 * 0x10 + param_2) < uVar2 + 0x10) break; + *(undefined *)(uVar2 + 0x1c) = 0x50; + uVar2 = uVar2 + 0x10; + } } - } - return; + return; } -undefined4 * proc_7F0A714C(u32 param_1,u32 param_2,u32 param_3) +u32 * proc_7F0A714C(u32 *DL,u32 param_2,u32 param_3) { - undefined4 *in_v0_lo; - undefined4 *puVar1; - undefined4 *puVar2; - undefined4 *puVar3; - int iVar4; - undefined4 *puVar5; - undefined4 *puVar6; - float extraout_f12; - float x; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f14; - float extraout_f14_00; - float y; - float y_00; - - proc_7F0BD6C4(0x1e); - puVar1 = in_v0_lo; - proc_7F0BD6C4(0x1e); - puVar3 = puVar1; - proc_7F0BD714(0xf8); - puVar2 = puVar3; - proc_7F0BD714(0xf8); - *(undefined4 *)param_1 = 0xe7000000; - *(undefined4 *)(param_1 + 4) = 0; - *(undefined4 *)(param_1 + 8) = 0xba001402; - *(undefined4 *)(param_1 + 0xc) = 0; - *(undefined4 *)(param_1 + 0x10) = 0xb900031d; - *(undefined4 *)(param_1 + 0x14) = 0x5041c8; - *(undefined4 *)(param_1 + 0x18) = 0xfcffffff; - *(undefined4 *)(param_1 + 0x1c) = 0xfffe793c; - *(undefined4 *)(param_1 + 0x20) = 0xfa000000; - *(undefined4 *)(param_1 + 0x24) = 0xe6e6e600; - *(undefined4 *)(param_1 + 0x28) = 0x1020040; - *(u32 *)(param_1 + 0x2c) = param_2; - check_watch_page_transistion_running(); - x = 1.00000000; - y = extraout_f14; - if (param_3 == 1) { - dword_80040B04 = 0xe0; - if ((pPlayer->pause_animation_state == 4) || - (y = extraout_f14, pPlayer->pause_animation_state == 6)) { - proc_7F07E740(); - x = extraout_f12; - y = extraout_f14_00; + undefined4 *in_v0_lo; + undefined4 *puVar1; + undefined4 *puVar2; + undefined4 *puVar3; + int iVar4; + u32 *puVar5; + u32 *puVar6; + float extraout_f12; + float x; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f14; + float extraout_f14_00; + float y; + float y_00; + + proc_7F0BD6C4(0x1e); + puVar1 = in_v0_lo; + proc_7F0BD6C4(0x1e); + puVar3 = puVar1; + proc_7F0BD714(0xf8); + puVar2 = puVar3; + proc_7F0BD714(0xf8); + *DL = 0xe7000000; + DL[1] = 0; + DL[2] = 0xba001402; + DL[3] = 0; + DL[4] = 0xb900031d; + DL[5] = 0x5041c8; + DL[6] = 0xfcffffff; + DL[7] = 0xfffe793c; + DL[8] = 0xfa000000; + DL[9] = 0xe6e6e600; + DL[10] = 0x1020040; + DL[0xb] = param_2; + check_watch_page_transistion_running(); + x = 1.00000000; + y = extraout_f14; + if (param_3 == 1) { + D_80040B04 = 0xe0; + if ((pPlayer->pause_animation_state == 4) || (pPlayer->pause_animation_state == 6)) { + proc_7F07E740(); + x = extraout_f12; + y = extraout_f14_00; + } } - } - guScale((Mtx *)&DAT_8007b0a0,x,y,0.25000000); - *(undefined4 *)(param_1 + 0x30) = 0x1000040; - *(undefined4 *)(param_1 + 0x34) = 0x8007b0a0; - puVar5 = (undefined4 *)(param_1 + 0x38); - if (param_3 == 0) { - *(undefined4 *)(param_1 + 0x3c) = 0x3000; - *puVar5 = 0xb6000000; - *(undefined4 *)(param_1 + 0x40) = 0x6000000; - *(int **)(param_1 + 0x44) = &pPlayer[0x30303].field_1A78; - *(undefined4 *)(param_1 + 0x48) = 0x6000000; - *(int **)(param_1 + 0x4c) = &pPlayer[0x30303].field_21A8; - puVar5 = (undefined4 *)(param_1 + 0x50); - } - guScale((Mtx *)&DAT_8007b0e0,1.00000000,y_00,1.00000000); - *puVar5 = 0x1000040; - puVar5[1] = 0x8007b0e0; - puVar6 = puVar5 + 2; - if (param_3 == 1) { - puVar5[3] = 0x3000; - *puVar6 = 0xb6000000; - puVar5[4] = 0x6000000; - *(int **)(puVar5 + 5) = &pPlayer[0x30303].field_1A78; - puVar5[6] = 0x6000000; - *(int **)(puVar5 + 7) = &pPlayer[0x30303].field_21A8; - puVar6 = puVar5 + 8; - } - proc_7F0A33F8((short *)puVar1,0x1e,extraout_f12_00,0x3f6b851f); - proc_7F0A3978(puVar2,(int)(puVar1 + -0x20000000),0x1e,0); - *puVar6 = 0xe7000000; - puVar6[1] = 0; - puVar6[2] = 0xb900031d; - puVar6[3] = 0x504240; - puVar6[4] = 0xfcffffff; - puVar6[5] = 0xfffdf6fb; - puVar6[7] = 0xff0000; - puVar6[6] = 0xfa000000; - puVar6[8] = 0x6000000; - *(undefined4 **)(puVar6 + 9) = puVar2 + -0x20000000; - puVar6[10] = 0xe7000000; - puVar6[0xb] = 0; - if (dword_80040B04 < 0xe0) { - proc_7F0A33F8((short *)in_v0_lo,0x1e,extraout_f12_01,0x3f666666); - proc_7F0A3978(puVar3,(int)(in_v0_lo + -0x20000000),0x1e,0); - puVar6[0xc] = 0xb900031d; - puVar6[0xd] = 0x50004b; - } - else { - proc_7F0A33F8((short *)in_v0_lo,0x1e,extraout_f12_01,0x3f666666); - proc_7F0A3978(puVar3,(int)(in_v0_lo + -0x20000000),0x1e,1); - puVar6[0xc] = 0xb900031d; - puVar6[0xd] = 0x5041c8; - } - puVar6[0xe] = 0xfcffffff; - puVar6[0xf] = 0xfffe793c; - puVar6[0x10] = 0x6000000; - *(undefined4 **)(puVar6 + 0x11) = puVar3 + -0x20000000; - puVar6[0x12] = 0xb900031d; - puVar6[0x13] = 0x504240; - puVar6[0x14] = 0xfcffffff; - puVar6[0x15] = 0xfffe793c; - puVar6[0x16] = 0x6000000; - puVar5 = puVar6 + 0x18; - *(int **)(puVar6 + 0x17) = &pPlayer[0x30303].field_28D8; - iVar4 = 2; - *(undefined *)((int)in_v0_lo + 0xf) = (char)dword_80040B04; - *(undefined *)((int)puVar1 + 0xf) = (char)dword_80040B04; - *(undefined *)((int)in_v0_lo + 0x1f) = (char)dword_80040B04; - *(undefined *)((int)puVar1 + 0x1f) = (char)dword_80040B04; - puVar2 = in_v0_lo + 8; - puVar3 = puVar1 + 8; - do { - iVar4 += 4; - *(undefined *)((int)puVar2 + 0xf) = (char)dword_80040B04; - *(undefined *)((int)puVar3 + 0xf) = (char)dword_80040B04; - *(undefined *)((int)puVar2 + 0x1f) = (char)dword_80040B04; - *(undefined *)((int)puVar3 + 0x1f) = (char)dword_80040B04; - *(undefined *)((int)puVar2 + 0x2f) = (char)dword_80040B04; - *(undefined *)((int)puVar3 + 0x2f) = (char)dword_80040B04; - *(undefined *)((int)puVar2 + 0x3f) = (char)dword_80040B04; - *(undefined *)((int)puVar3 + 0x3f) = (char)dword_80040B04; - puVar2 = puVar2 + 0x10; - puVar3 = puVar3 + 0x10; - } while (iVar4 != 0x1e); - if (dword_80040B04 < 0xe0) { - proc_7F0A68D8((short *)&pPlayer->field_19B8); - *puVar5 = 0xb900031d; - puVar6[0x19] = 0x5041c8; - puVar6[0x1a] = 0x6000000; - *(int **)(puVar6 + 0x1b) = &pPlayer[0x30303].field_2A18; - puVar5 = puVar6 + 0x1c; - } - return puVar5; + guScale((Mtx *)&DAT_8007b0a0,x,y,0.25000000); + DL[0xc] = 0x1000040; + DL[0xd] = 0x8007b0a0; + puVar5 = DL + 0xe; + if (param_3 == 0) { + DL[0xf] = 0x3000; + *puVar5 = 0xb6000000; + DL[0x10] = 0x6000000; + *(int **)(DL + 0x11) = &pPlayer[-0x30303].field_1978; + DL[0x12] = 0x6000000; + *(int **)(DL + 0x13) = &pPlayer[-0x30303].field_20A8; + puVar5 = DL + 0x14; + } + guScale((Mtx *)&DAT_8007b0e0,1.00000000,y_00,1.00000000); + *puVar5 = 0x1000040; + puVar5[1] = 0x8007b0e0; + puVar6 = puVar5 + 2; + if (param_3 == 1) { + puVar5[3] = 0x3000; + *puVar6 = 0xb6000000; + puVar5[4] = 0x6000000; + *(int **)(puVar5 + 5) = &pPlayer[-0x30303].field_1978; + puVar5[6] = 0x6000000; + *(int **)(puVar5 + 7) = &pPlayer[-0x30303].field_20A8; + puVar6 = puVar5 + 8; + } + proc_7F0A33F8((short *)puVar1,0x1e,extraout_f12_00,0x3f6b851f); + proc_7F0A3978(puVar2,(int)(puVar1 + -0x20000000),0x1e,0); + *puVar6 = 0xe7000000; + puVar6[1] = 0; + puVar6[2] = 0xb900031d; + puVar6[3] = 0x504240; + puVar6[4] = 0xfcffffff; + puVar6[5] = 0xfffdf6fb; + puVar6[7] = 0xff0000; + puVar6[6] = 0xfa000000; + puVar6[8] = 0x6000000; + *(undefined4 **)(puVar6 + 9) = puVar2 + -0x20000000; + puVar6[10] = 0xe7000000; + puVar6[0xb] = 0; + if (D_80040B04 < 0xe0) { + proc_7F0A33F8((short *)in_v0_lo,0x1e,extraout_f12_01,0x3f666666); + proc_7F0A3978(puVar3,(int)(in_v0_lo + -0x20000000),0x1e,0); + puVar6[0xc] = 0xb900031d; + puVar6[0xd] = 0x50004b; + } + else { + proc_7F0A33F8((short *)in_v0_lo,0x1e,extraout_f12_01,0x3f666666); + proc_7F0A3978(puVar3,(int)(in_v0_lo + -0x20000000),0x1e,1); + puVar6[0xc] = 0xb900031d; + puVar6[0xd] = 0x5041c8; + } + puVar6[0xe] = 0xfcffffff; + puVar6[0xf] = 0xfffe793c; + puVar6[0x10] = 0x6000000; + *(undefined4 **)(puVar6 + 0x11) = puVar3 + -0x20000000; + puVar6[0x12] = 0xb900031d; + puVar6[0x13] = 0x504240; + puVar6[0x14] = 0xfcffffff; + puVar6[0x15] = 0xfffe793c; + puVar6[0x16] = 0x6000000; + puVar5 = puVar6 + 0x18; + *(int **)(puVar6 + 0x17) = &pPlayer[-0x30303].field_27D8; + iVar4 = 2; + *(undefined *)((int)in_v0_lo + 0xf) = (char)D_80040B04; + *(undefined *)((int)puVar1 + 0xf) = (char)D_80040B04; + *(undefined *)((int)in_v0_lo + 0x1f) = (char)D_80040B04; + *(undefined *)((int)puVar1 + 0x1f) = (char)D_80040B04; + puVar2 = in_v0_lo + 8; + puVar3 = puVar1 + 8; + do { + iVar4 += 4; + *(undefined *)((int)puVar2 + 0xf) = (char)D_80040B04; + *(undefined *)((int)puVar3 + 0xf) = (char)D_80040B04; + *(undefined *)((int)puVar2 + 0x1f) = (char)D_80040B04; + *(undefined *)((int)puVar3 + 0x1f) = (char)D_80040B04; + *(undefined *)((int)puVar2 + 0x2f) = (char)D_80040B04; + *(undefined *)((int)puVar3 + 0x2f) = (char)D_80040B04; + *(undefined *)((int)puVar2 + 0x3f) = (char)D_80040B04; + *(undefined *)((int)puVar3 + 0x3f) = (char)D_80040B04; + puVar2 = puVar2 + 0x10; + puVar3 = puVar3 + 0x10; + } while (iVar4 != 0x1e); + if (D_80040B04 < 0xe0) { + proc_7F0A68D8((short *)&pPlayer->field_19B8); + *puVar5 = 0xb900031d; + puVar6[0x19] = 0x5041c8; + puVar6[0x1a] = 0x6000000; + *(int **)(puVar6 + 0x1b) = &pPlayer[-0x30303].field_2918; + puVar5 = puVar6 + 0x1c; + } + return puVar5; } @@ -118366,8 +117430,8 @@ undefined4 * proc_7F0A714C(u32 param_1,u32 param_2,u32 param_3) void proc_7F0A77A8(undefined8 param_1,undefined8 param_2) { - proc_7F0A714C(param_1._4_4_,param_2._4_4_,1); - return; + proc_7F0A714C(param_1._4_4_,param_2._4_4_,1); + return; } @@ -118375,178 +117439,181 @@ void proc_7F0A77A8(undefined8 param_1,undefined8 param_2) // WARNING: Instruction at (ram,0x7f0a78b0) overlaps instruction at (ram,0x7f0a78ac) // -uint * proc_7F0A77C8(undefined4 *param_1) +void proc_7F0A77C8(undefined4 *param_1) { - int *piVar1; - int iVar2; - byte *pbVar5; - byte *pbVar6; - byte *pbVar7; - int iVar8; - longlong lVar3; - ulonglong uVar4; - uint *puVar9; - short sVar10; - short sVar11; - int iStack32; - int iStack28; - uint uStack24; - uint uStack20; - uint uStack16; - uint uStack12; - uint uStack8; - int iStack4; - - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - pbVar5 = get_textptr_for_textID(0xac24); - pbVar6 = get_textptr_for_textID(0xac25); - pbVar7 = get_textptr_for_textID(0xac26); - iStack4 = 0x51; - if (j_text_trigger == 0) { - iVar8 = 0; - } - else { - iVar8 = 0xf; - } - uStack8 = iVar8 + 0xbd; - if (j_text_trigger == 0) { - iVar8 = 0; - } - else { - iVar8 = 10; - } - uStack12 = iVar8 + 0x88; - if (j_text_trigger == 0) { - iVar8 = 0; - } - else { - iVar8 = 3; - } - uStack24 = iVar8 + 0x4c; - uStack20 = uStack24; - uStack16 = uStack24; - if (dword_800409A8 != 0) { - if (dword_800409A4 == 0) { - uStack20 = uStack24; - uStack16 = uStack24; - lVar3 = get_cur_controller_horz_stick_pos('\0'); - if ((0x2d < lVar3) || (uVar4 = get_controller_buttons_held('\0',0x111), uVar4 != 0)) { - dword_800409A4 = 1; - } + u8 *puVar1; + u8 *puVar2; + byte *pbVar3; + byte *pbVar4; + byte *pbVar5; + int iVar6; + short sVar10; + short sVar11; + undefined4 *puVar7; + uint *puVar8; + uint *puVar9; + int iStack32; + int iStack28; + uint *puStack24; + uint *puStack20; + uint *puStack16; + uint uStack12; + uint uStack8; + int iStack4; + + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + pbVar3 = get_textptr_for_textID(0xac24); + pbVar4 = get_textptr_for_textID(0xac25); + pbVar5 = get_textptr_for_textID(0xac26); + iStack4 = 0x51; + if (j_text_trigger == 0) { + iVar6 = 0; } else { - uStack20 = uStack24; - uStack16 = uStack24; - if ((dword_800409A4 != 0) && - ((uStack20 = uStack24, uStack16 = uStack24, lVar3 = get_cur_controller_horz_stick_pos('\0') - , lVar3 < -0x2d || (uVar4 = get_controller_buttons_held('\0',0x222), uVar4 != 0)))) { - dword_800409A4 = 0; - } + iVar6 = 0xf; } - } - if (dword_800409A8 == 0) { - proc_7F0AE98C(&iStack32,&iStack28,pbVar5,iVar2,piVar1,0); - puVar9 = en_text_write_stuff(param_1,&iStack4,(int *)&uStack16,pbVar5,iVar2,(int)piVar1, - (uint)&DAT_00800080,iStack28,iStack32,0,0); - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar9 = en_text_write_stuff(puVar9,(int *)&uStack8,(int *)&uStack20,pbVar6,iVar2,(int)piVar1, - (uint)&DAT_00800080,(int)sVar10,(int)sVar11,0,0); - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar9 = en_text_write_stuff(puVar9,(int *)&uStack12,(int *)&uStack24,pbVar7,iVar2,(int)piVar1, - (uint)&DAT_00800080,(int)sVar10,(int)sVar11,0,0); - } - else { - proc_7F0AE98C(&iStack32,&iStack28,pbVar5,iVar2,piVar1,0); - puVar9 = en_text_write_stuff(param_1,&iStack4,(int *)&uStack16,pbVar5,iVar2,(int)piVar1, - 0xa0ffa0f0,iStack28,iStack32,0,0); - if (dword_800409A4 == 0) { - if (true) { - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar9 = en_text_write_stuff(puVar9,(int *)&uStack8,(int *)&uStack20,pbVar6,iVar2, - (int)piVar1,0xff00b0,(int)sVar10,(int)sVar11,0,0); - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar9 = jp_text_stuff(puVar9,&uStack12,&uStack24,pbVar7,iVar2,(int)piVar1,0xffffffff, - (uint)&DAT_007000a0,(int)sVar10,(int)sVar11,0,0); - } + uStack8 = iVar6 + 0xbd; + if (j_text_trigger == 0) { + iVar6 = 0; } else { - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar9 = jp_text_stuff(puVar9,&uStack8,&uStack20,pbVar6,iVar2,(int)piVar1,0xffffffff, - (uint)&DAT_007000a0,(int)sVar10,(int)sVar11,0,0); - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar9 = en_text_write_stuff(puVar9,(int *)&uStack12,(int *)&uStack24,pbVar7,iVar2,(int)piVar1 - ,0xff00b0,(int)sVar10,(int)sVar11,0,0); + iVar6 = 10; } - } - return puVar9; + uStack12 = iVar6 + 0x88; + if (j_text_trigger == 0) { + puVar9 = NULL; + } + else { + puVar9 = (uint *)((int)&rgba + 3); + } + puStack24 = puVar9 + 0x13; + puStack20 = puStack24; + puStack16 = puStack24; + if (watch_soundrelated_maybe != 0) { + if (D_800409A4 == 0) { + puVar9 = (uint *)get_cur_controller_horz_stick_pos('\0'); + if ((0x2d < (int)puVar9) || + (puVar9 = (uint *)get_controller_buttons_held('\0',R_CBUTTONS|R_TRIG|R_JPAD), + puVar9 != NULL)) { + D_800409A4 = 1; + } + } + else { + if ((D_800409A4 != 0) && + ((puVar9 = (uint *)get_cur_controller_horz_stick_pos('\0'), (int)puVar9 < -0x2d || + (puVar9 = (uint *)get_controller_buttons_held('\0',L_CBUTTONS|L_TRIG|L_JPAD), + puVar9 != NULL)))) { + D_800409A4 = 0; + } + } + } + if (watch_soundrelated_maybe == 0) { + proc_7F0AE98C(&iStack32,&iStack28,pbVar3,(int)puVar2,(int *)puVar1,0); + en_text_write_stuff(param_1,&iStack4,(int *)&puStack16,pbVar3,(int)puVar2,(int)puVar1, + (uint)&DAT_00800080,iStack28,iStack32,0,0); + sVar10 = get_video2_settings_txtClipW(); + sVar11 = get_video2_settings_txtClipH(); + puVar7 = (undefined4 *)(int)sVar11; + en_text_write_stuff(puVar9,(int *)&uStack8,(int *)&puStack20,pbVar4,(int)puVar2,(int)puVar1, + (uint)&DAT_00800080,(int)sVar10,(int)sVar11,0,0); + sVar10 = get_video2_settings_txtClipW(); + sVar11 = get_video2_settings_txtClipH(); + en_text_write_stuff(puVar7,(int *)&uStack12,(int *)&puStack24,pbVar5,(int)puVar2,(int)puVar1 + ,(uint)&DAT_00800080,(int)sVar10,(int)sVar11,0,0); + } + else { + proc_7F0AE98C(&iStack32,&iStack28,pbVar3,(int)puVar2,(int *)puVar1,0); + en_text_write_stuff(param_1,&iStack4,(int *)&puStack16,pbVar3,(int)puVar2,(int)puVar1, + 0xa0ffa0f0,iStack28,iStack32,0,0); + if (D_800409A4 == 0) { + if (true) { + sVar10 = get_video2_settings_txtClipW(); + sVar11 = get_video2_settings_txtClipH(); + puVar8 = (uint *)(int)sVar11; + en_text_write_stuff(puVar9,(int *)&uStack8,(int *)&puStack20,pbVar4,(int)puVar2, + (int)puVar1,0xff00b0,(int)sVar10,(int)sVar11,0,0); + sVar10 = get_video2_settings_txtClipW(); + sVar11 = get_video2_settings_txtClipH(); + jp_text_stuff(puVar8,&uStack12,(uint *)&puStack24,pbVar5,(int)puVar2,(int)puVar1, + 0xffffffff,(uint)&DAT_007000a0,(int)sVar10,(int)sVar11,0,0); + } + } + else { + sVar10 = get_video2_settings_txtClipW(); + sVar11 = get_video2_settings_txtClipH(); + puVar7 = (undefined4 *)(int)sVar11; + jp_text_stuff(puVar9,&uStack8,(uint *)&puStack20,pbVar4,(int)puVar2,(int)puVar1, + 0xffffffff,(uint)&DAT_007000a0,(int)sVar10,(int)sVar11,0,0); + sVar10 = get_video2_settings_txtClipW(); + sVar11 = get_video2_settings_txtClipH(); + en_text_write_stuff(puVar7,(int *)&uStack12,(int *)&puStack24,pbVar5,(int)puVar2, + (int)puVar1,0xff00b0,(int)sVar10,(int)sVar11,0,0); + } + } + return; } -uint * proc_7F0A7C18(undefined4 *param_1) +void proc_7F0A7C18(undefined4 *param_1) { - int *piVar1; - int iVar2; - longlong lVar3; - undefined4 *puVar4; - uint *puVar5; - int iVar6; - uint uStack36; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - byte *pbStack8; - byte *pbStack4; - - pbStack4 = get_textptr_for_textID(0xac27); - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - lVar3 = check_objectives_complete(); - if (lVar3 == 0) { - uStack36 = dword_80040AF4; - pbStack8 = get_textptr_for_textID(0xac29); - } - else { - uStack36 = 0xff00b0; - pbStack8 = get_textptr_for_textID(0xac28); - } - puVar4 = microcode_constructor(param_1); - proc_7F0AE98C(&iStack20,&iStack24,pbStack4,iVar2,piVar1,0); - iStack12 = 0x51; - iStack16 = 0x41; - puVar5 = en_text_write_stuff(puVar4,&iStack12,&iStack16,pbStack4,iVar2,(int)piVar1,0xff00b0, - iStack24,iStack20,0,0); - if (j_text_trigger == 0) { - iVar6 = 0; - } - else { - iVar6 = 0x22; - } - iStack12 = iStack12 + iStack24 + iVar6 + 4; - iStack16 -= iStack20; - proc_7F0AE98C(&iStack20,&iStack24,pbStack8,iVar2,piVar1,0); - puVar5 = en_text_write_stuff(puVar5,&iStack12,&iStack16,pbStack8,iVar2,(int)piVar1,uStack36, - iStack24,iStack20,0,0); - puVar5 = proc_7F0A77C8(puVar5); - return puVar5; + u8 *puVar1; + u8 *puVar2; + u32 uVar3; + undefined4 *puVar4; + undefined4 *puVar5; + uint uStack36; + int iStack24; + int iStack20; + int iStack16; + int iStack12; + undefined4 *txtID2; + byte *txtID1; + + txtID1 = get_textptr_for_textID(0xac27); + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + uVar3 = check_objectives_complete(); + if (uVar3 == 0) { + uStack36 = dword_80040AF4; + puVar4 = (undefined4 *)get_textptr_for_textID(0xac29); + } + else { + uStack36 = 0xff00b0; + puVar4 = (undefined4 *)get_textptr_for_textID(0xac28); + } + txtID2 = puVar4; + microcode_constructor(param_1); + puVar5 = puVar4; + proc_7F0AE98C(&iStack20,&iStack24,txtID1,(int)puVar2,(int *)puVar1,0); + iStack12 = 0x51; + iStack16 = 0x41; + en_text_write_stuff(puVar4,&iStack12,&iStack16,txtID1,(int)puVar2,(int)puVar1,0xff00b0,iStack24, + iStack20,0,0); + if (j_text_trigger == 0) { + puVar4 = NULL; + } + else { + puVar4 = (undefined4 *)0x22; + } + iStack12 = (int)puVar4 + iStack12 + iStack24 + 4; + iStack16 -= iStack20; + proc_7F0AE98C(&iStack20,&iStack24,(byte *)txtID2,(int)puVar2,(int *)puVar1,0); + en_text_write_stuff(puVar5,&iStack12,&iStack16,(byte *)txtID2,(int)puVar2,(int)puVar1,uStack36, + iStack24,iStack20,0,0); + proc_7F0A77C8(puVar4); + return; } -undefined8 proc_7F0A7DBC(undefined8 param_1) +u32 stub_return_param_7F0A7DBC(u32 param_1) { - return param_1; + return param_1; } @@ -118554,190 +117621,189 @@ undefined8 proc_7F0A7DBC(undefined8 param_1) uint * proc_7F0A7DC4(undefined4 *param_1) { - int *piVar1; - int iVar2; - undefined4 *puVar3; - uint *puVar4; - int iStack20; - int iStack16; - int iStack12; - int iStack8; - byte *pbStack4; - - pbStack4 = get_textptr_for_textID(0xac2b); - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - if (j_text_trigger == 0) { - iStack8 = 0; - } - else { - iStack8 = -5; - } - iStack8 += 0x65; - iStack12 = 0x31; - iStack16 = 0; - iStack20 = 0; - puVar3 = microcode_constructor(param_1); - proc_7F0AE98C(&iStack16,&iStack20,pbStack4,iVar2,piVar1,0); - puVar4 = en_text_write_stuff(puVar3,&iStack8,&iStack12,pbStack4,iVar2,(int)piVar1,0xff00b0, - iStack20,iStack16,0,0); - return puVar4; + u8 *puVar1; + u8 *puVar2; + uint *puVar3; + uint *puVar4; + int iStack20; + int iStack16; + int iStack12; + int iStack8; + byte *pbStack4; + + pbStack4 = get_textptr_for_textID(0xac2b); + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + if (j_text_trigger == 0) { + puVar3 = NULL; + } + else { + puVar3 = (uint *)0xfffffffb; + } + iStack8 = (int)puVar3 + 0x65; + iStack12 = 0x31; + iStack16 = 0; + iStack20 = 0; + microcode_constructor(param_1); + puVar4 = puVar3; + proc_7F0AE98C(&iStack16,&iStack20,pbStack4,(int)puVar2,(int *)puVar1,0); + en_text_write_stuff(puVar3,&iStack8,&iStack12,pbStack4,(int)puVar2,(int)puVar1,0xff00b0,iStack20 + ,iStack16,0,0); + return puVar4; } // WARNING: Unknown calling convention yet parameter storage is locked -uint * debug_gun_watch_move_related(void) +void debug_gun_watch_move_related(void) { - int *piVar1; - int iVar2; - Mtx *in_v0_lo; - int iVar4; - int iVar5; - byte *pbVar6; - byte *pbVar7; - ITEM_IDS IVar8; - ulonglong uVar3; - u32 uVar9; - undefined4 *DL; - uint *puVar10; - undefined4 *in_a0_lo; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - float in_f0; - float fVar11; - float fVar12; - float near; - float fVar13; - float fVar14; - float extraout_f12; - float extraout_f12_00; - float fovy; - float extraout_f14; - float extraout_f14_00; - float aspect; - float extraout_f14_01; - int iStack152; - int iStack148; - int iStack144; - int iStack140; - float afStack136 [16]; - float afStack72 [16]; - u16 uStack6; - Mtx *pabStack4; - - proc_7F0BD6E0(); - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - iStack148 = 0; - iStack152 = 0; - pabStack4 = in_v0_lo; - iVar4 = proc_7F08D8C0(); - iVar5 = proc_7F08D2A8(iVar4); - proc_7F08D7D8(iVar4); - fVar11 = in_f0; - proc_7F08D800(iVar4); - fVar12 = fVar11; - proc_7F08D828(iVar4); - near = fVar12; - proc_7F08D7B0(iVar4); - fVar13 = near; - proc_7F08D850(iVar4); - fVar14 = fVar13; - proc_7F08D878(iVar4); - pbVar6 = (byte *)proc_7F08D5C8(iVar4); - pbVar7 = (byte *)proc_7F08D6BC(iVar4); - iVar4 = get_debug_gunwatchpos_flag(); - fovy = extraout_f12; - aspect = extraout_f14; - if (iVar4 != 0) { - IVar8 = get_item_in_hand(0); - uVar3 = get_controller_buttons_held('\0',2); - if (uVar3 != 0) { - (&gitem_structs)[IVar8].watch_pos_y = (&gitem_structs)[IVar8].watch_pos_y - 2.00000000; + u8 *puVar1; + u8 *puVar2; + Mtx *in_v0_lo; + int iVar3; + int iVar4; + byte *pbVar5; + byte *pbVar6; + ITEM_IDS IVar7; + u32 uVar8; + undefined4 *DL; + u32 *DL_00; + u32 *puVar9; + undefined4 *in_a0_lo; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + float in_f0; + float fVar10; + float fVar11; + float near; + float fVar12; + float fVar13; + float extraout_f12; + float extraout_f12_00; + float fovy; + float extraout_f14; + float extraout_f14_00; + float aspect; + float extraout_f14_01; + int iStack152; + int iStack148; + int iStack144; + int iStack140; + float afStack136 [16]; + float afStack72 [16]; + u16 uStack6; + Mtx *pabStack4; + + proc_7F0BD6E0(); + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + iStack148 = 0; + iStack152 = 0; + pabStack4 = in_v0_lo; + iVar3 = proc_7F08D8C0(); + iVar4 = proc_7F08D2A8(iVar3); + proc_7F08D7D8(iVar3); + fVar10 = in_f0; + proc_7F08D800(iVar3); + fVar11 = fVar10; + proc_7F08D828(iVar3); + near = fVar11; + proc_7F08D7B0(iVar3); + fVar12 = near; + proc_7F08D850(iVar3); + fVar13 = fVar12; + proc_7F08D878(iVar3); + pbVar5 = (byte *)proc_7F08D5C8(iVar3); + pbVar6 = (byte *)proc_7F08D6BC(iVar3); + iVar3 = get_debug_gunwatchpos_flag(); + fovy = extraout_f12; + aspect = extraout_f14; + if (iVar3 != 0) { + IVar7 = get_item_in_hand(0); + uVar8 = get_controller_buttons_held('\0',L_CBUTTONS); + if (uVar8 != 0) { + (&gitem_structs)[IVar7].watch_pos_y = (&gitem_structs)[IVar7].watch_pos_y - 2.00000000; + } + uVar8 = get_controller_buttons_held('\0',R_CBUTTONS); + if (uVar8 != 0) { + (&gitem_structs)[IVar7].watch_pos_y = (&gitem_structs)[IVar7].watch_pos_y + 2.00000000; + } + uVar8 = get_controller_buttons_held('\0',D_CBUTTONS); + if (uVar8 != 0) { + (&gitem_structs)[IVar7].watch_pos_x = (&gitem_structs)[IVar7].watch_pos_x + 2.00000000; + } + uVar8 = get_controller_buttons_held('\0',U_CBUTTONS); + if (uVar8 != 0) { + (&gitem_structs)[IVar7].watch_pos_x = (&gitem_structs)[IVar7].watch_pos_x - 2.00000000; + } + uVar8 = get_controller_buttons_held('\0',L_TRIG); + if (uVar8 != 0) { + (&gitem_structs)[IVar7].watch_pos_z = (&gitem_structs)[IVar7].watch_pos_z * 0.98000002; + } + uVar8 = get_controller_buttons_held('\0',R_TRIG); + fovy = extraout_f12_00; + aspect = extraout_f14_00; + if (uVar8 != 0) { + (&gitem_structs)[IVar7].watch_pos_z = (&gitem_structs)[IVar7].watch_pos_z * 1.02040815; + } } - uVar3 = get_controller_buttons_held('\0',1); - if (uVar3 != 0) { - (&gitem_structs)[IVar8].watch_pos_y = (&gitem_structs)[IVar8].watch_pos_y + 2.00000000; + guPerspective(pabStack4,&uStack6,fovy,aspect,near,1.33333337,10.00000000); + *in_a0_lo = 0x1030040; + uVar8 = osVirtualToPhysical(pabStack4); + in_a0_lo[1] = uVar8; + proc_7F0585FC((fVar13 * 6.28318548) / 360.00000000,extraout_a0,afStack72); + proc_7F058688(6.28318548 - (fVar12 * 6.28318548) / 360.00000000,extraout_a0_00,afStack136); + proc_7F058068(afStack136,afStack72); + proc_7F059694(afStack136,in_f0,extraout_f14_01,fVar11,in_f0,fVar10,0.00000000,in_f0,fVar10, + 0.00000000); + proc_7F058068(afStack136,afStack72); + DL = proc_7F0A6EE8(in_a0_lo + 2); + if (D_80040B04 < 0xe0) { + DL = set_enviro_fog_for_items_in_solo_watch_menu + (DL,(longlong)iVar4,afStack72,D_80040B04 + 1,0x64dc6428); } - uVar3 = get_controller_buttons_held('\0',4); - if (uVar3 != 0) { - (&gitem_structs)[IVar8].watch_pos_x = (&gitem_structs)[IVar8].watch_pos_x + 2.00000000; + else { + DL = set_enviro_fog_for_items_in_solo_watch_menu + (DL,(longlong)iVar4,afStack72,0xff,0x64dc6428); } - uVar3 = get_controller_buttons_held('\0',8); - if (uVar3 != 0) { - (&gitem_structs)[IVar8].watch_pos_x = (&gitem_structs)[IVar8].watch_pos_x - 2.00000000; - } - uVar3 = get_controller_buttons_held('\0',0x20); - if (uVar3 != 0) { - (&gitem_structs)[IVar8].watch_pos_z = (&gitem_structs)[IVar8].watch_pos_z * flt_8005850C; - } - uVar3 = get_controller_buttons_held('\0',0x10); - fovy = extraout_f12_00; - aspect = extraout_f14_00; - if (uVar3 != 0) { - (&gitem_structs)[IVar8].watch_pos_z = (&gitem_structs)[IVar8].watch_pos_z * flt_80058510; - fovy = extraout_f12_00; - aspect = extraout_f14_00; - } - } - guPerspective(pabStack4,&uStack6,fovy,aspect,near,1.33333337,10.00000000); - *in_a0_lo = 0x1030040; - uVar9 = osVirtualToPhysical(pabStack4); - in_a0_lo[1] = uVar9; - proc_7F0585FC((fVar14 * flt_80058518) / 360.00000000,extraout_a0,afStack72); - proc_7F058688(flt_8005851C - (fVar13 * flt_8005851C) / 360.00000000,extraout_a0_00,afStack136); - proc_7F058068(afStack136,afStack72); - proc_7F059694(afStack136,in_f0,extraout_f14_01,fVar12,in_f0,fVar11,0.00000000,in_f0,fVar11, - 0.00000000); - proc_7F058068(afStack136,afStack72); - DL = proc_7F0A6EE8(in_a0_lo + 2); - if (dword_80040B04 < 0xe0) { - DL = set_enviro_fog_for_items_in_solo_watch_menu - (DL,(longlong)iVar5,afStack72,dword_80040B04 + 1,0x64dc6428); - } - else { - DL = set_enviro_fog_for_items_in_solo_watch_menu(DL,(longlong)iVar5,afStack72,0xff,0x64dc6428); - } - DL = proc_7F06A334(DL); - DL = microcode_constructor(DL); - iStack140 = 0x60; - iStack144 = 0xa0; - proc_7F0AE98C(&iStack148,&iStack152,pbVar6,iVar2,piVar1,0); - puVar10 = en_text_write_stuff(DL,&iStack140,&iStack144,pbVar6,iVar2,(int)piVar1,0xff00b0,iStack152 - ,iStack148,0,0); - iStack144 = 0xaa; - proc_7F0AE98C(&iStack148,&iStack152,pbVar7,iVar2,piVar1,0); - puVar10 = en_text_write_stuff(puVar10,&iStack140,&iStack144,pbVar7,iVar2,(int)piVar1,0xff00b0, - iStack152,iStack148,0,0); - return puVar10; + DL_00 = proc_7F06A334(DL); + microcode_constructor(DL_00); + iStack140 = 0x60; + iStack144 = 0xa0; + puVar9 = DL_00; + proc_7F0AE98C(&iStack148,&iStack152,pbVar5,(int)puVar2,(int *)puVar1,0); + en_text_write_stuff(DL_00,&iStack140,&iStack144,pbVar5,(int)puVar2,(int)puVar1,0xff00b0, + iStack152,iStack148,0,0); + iStack144 = 0xaa; + proc_7F0AE98C(&iStack148,&iStack152,pbVar6,(int)puVar2,(int *)puVar1,0); + en_text_write_stuff(puVar9,&iStack140,&iStack144,pbVar6,(int)puVar2,(int)puVar1,0xff00b0, + iStack152,iStack148,0,0); + return; } -longlong proc_7F0A830C(undefined8 param_1,undefined8 param_2) +void proc_7F0A830C(undefined8 param_1,undefined8 param_2) { - undefined4 *puVar3; - ulonglong uVar1; - uint *puVar4; - longlong lVar2; - - puVar3 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); - lVar2 = (longlong)(int)puVar3; - uVar1 = check_watch_page_transistion_running(); - if (uVar1 == 1) { - check_watch_page_transistion_running(); - } - else { - puVar4 = proc_7F0A7DC4(puVar3); - puVar4 = proc_7F0A7C18(puVar4); - proc_7F0A7DBC((longlong)(int)puVar4); - lVar2 = debug_gun_watch_move_related(); - } - return lVar2; + u32 *puVar2; + ulonglong uVar1; + uint *puVar3; + + puVar2 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); + uVar1 = check_watch_page_transistion_running(); + if (uVar1 == 1) { + check_watch_page_transistion_running(); + } + else { + puVar3 = proc_7F0A7DC4(puVar2); + proc_7F0A7C18(puVar3); + stub_return_param_7F0A7DBC((u32)puVar3); + debug_gun_watch_move_related(); + } + return; } @@ -118748,30 +117814,29 @@ longlong proc_7F0A830C(undefined8 param_1,undefined8 param_2) int ** proc_7F0A8378(void) { - ulonglong uVar1; - int **ppiVar2; - int iVar3; - int **ppiVar4; - - uVar1 = get_controller_buttons_pressed('\0',0xa000); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_pressed('\0',0x1000); + u32 uVar1; + int **ppiVar2; + int **ppiVar3; + + uVar1 = get_controller_buttons_pressed('\0',Z_TRIG|A_BUTTON); if (uVar1 == 0) { - return (int **)uVar1; + uVar1 = get_controller_buttons_pressed('\0',START_BUTTON); + if (uVar1 == 0) { + return NULL; + } + ppiVar3 = (int **)get_item_in_hand(0); + ppiVar2 = (int **)proc_7F08D2A8(dword_800409B8); + if (ppiVar2 == ppiVar3) { + return ppiVar2; + } } - ppiVar4 = (int **)get_item_in_hand(0); - ppiVar2 = (int **)proc_7F08D2A8(dword_800409B8); - if (ppiVar2 == ppiVar4) { - return ppiVar2; - } - } - iVar3 = proc_7F08D2A8(dword_800409B8); - remove_hands_item(0,iVar3); - remove_hands_item(1,0); - proc_7F08D8D0(dword_800409B8); - dword_800409C4 = 10; - ppiVar4 = play_sfx_a1(ptr_sfx_buf,0x9f,NULL); - return ppiVar4; + ppiVar3 = (int **)proc_7F08D2A8(dword_800409B8); + remove_hands_item(HAND_RIGHT,(int)ppiVar3); + remove_hands_item(HAND_LEFT,0); + proc_7F08D8D0(dword_800409B8); + dword_800409C4 = 10; + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + return ppiVar3; } @@ -118779,234 +117844,240 @@ int ** proc_7F0A8378(void) uint * debug_gun_watch_move_related2(undefined8 param_1,undefined8 param_2) { - int *piVar1; - ulonglong uVar2; - int iVar3; - ITEM_IDS IVar4; - u32 uVar5; - undefined4 *DL; - char *pcVar6; - int iVar7; - uint *puVar8; - byte *pbVar9; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - int iVar10; - float in_f0; - float fovy; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float extraout_f14_00; - float aspect; - uint *puStackX0; - int iStack2264; - int iStack2260; - int iStack2256; - byte abStack2248 [36]; - byte abStack2212 [2000]; - int iStack212; - int *piStack208; - int iStack204; - int aiStack200 [3]; - uint uStack188; - uint auStack184 [3]; - float fStack172; - float fStack168; - int iStack164; - float fStack160; - float fStack156; - float fStack152; - float fStack148; - float fStack140; - float afStack136 [16]; - float afStack72 [16]; - u16 uStack6; - Mtx *pabStack4; - - puStackX0 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); - uVar2 = check_watch_page_transistion_running(); - pabStack4 = (Mtx *)uVar2; - if (uVar2 != 1) { - proc_7F0BD6E0(); - proc_7F08D528(dword_800409B8); - fStack148 = in_f0; - proc_7F08D550(dword_800409B8); - fStack152 = in_f0; - proc_7F08D578(dword_800409B8); - fStack156 = in_f0; - proc_7F08D5A0(dword_800409B8); - fStack160 = in_f0; - iStack164 = proc_7F08D2A8(dword_800409B8); - proc_7F08D850(dword_800409B8); - fStack168 = in_f0; - proc_7F08D878(dword_800409B8); - fStack172 = in_f0; - iVar3 = get_debug_gunwatchpos_flag(); - fovy = extraout_f12; - aspect = extraout_f14; - if (iVar3 != 0) { - IVar4 = get_item_in_hand(0); - uVar2 = get_controller_buttons_held('\0',2); - if (uVar2 != 0) { - (&gitem_structs)[IVar4].equip_watch_x = (&gitem_structs)[IVar4].equip_watch_x - 2.00000000; - } - uVar2 = get_controller_buttons_held('\0',1); - if (uVar2 != 0) { - (&gitem_structs)[IVar4].equip_watch_x = (&gitem_structs)[IVar4].equip_watch_x + 2.00000000; - } - uVar2 = get_controller_buttons_held('\0',4); - if (uVar2 != 0) { - (&gitem_structs)[IVar4].equip_watch_y = (&gitem_structs)[IVar4].equip_watch_y + 2.00000000; - } - uVar2 = get_controller_buttons_held('\0',8); - if (uVar2 != 0) { - (&gitem_structs)[IVar4].equip_watch_y = (&gitem_structs)[IVar4].equip_watch_y - 2.00000000; - } - uVar2 = get_controller_buttons_held('\0',0x20); - if (uVar2 != 0) { - (&gitem_structs)[IVar4].equip_watch_z = (&gitem_structs)[IVar4].equip_watch_z * flt_80058520 - ; - } - uVar2 = get_controller_buttons_held('\0',0x10); - fovy = extraout_f12_00; - aspect = extraout_f14_00; - if (uVar2 != 0) { - (&gitem_structs)[IVar4].equip_watch_z = (&gitem_structs)[IVar4].equip_watch_z * flt_80058524 - ; - fovy = extraout_f12_00; - aspect = extraout_f14_00; - } - } - guPerspective(pabStack4,&uStack6,fovy,aspect,fStack148,1.33333337,10.00000000); - *puStackX0 = 0x1030040; - uVar5 = osVirtualToPhysical(pabStack4); - puStackX0[1] = uVar5; - proc_7F0585FC((fStack172 * flt_8005852C) / 360.00000000,extraout_a0,afStack72); - proc_7F058688(flt_80058530 - (fStack168 * flt_80058530) / 360.00000000,extraout_a0_00,afStack136 - ); - proc_7F058068(afStack136,afStack72); - fStack140 = cosf(dword_80040B14); - fStack140 = fStack140 * fStack160; - fovy = sinf(dword_80040B14); - proc_7F059694(afStack136,fStack156,fStack152,fStack140,fStack156,fovy * fStack160 + fStack152, - 0.00000000,fStack156,fStack152,0.00000000); - proc_7F058068(afStack136,afStack72); - DL = proc_7F0A6EE8(puStackX0 + 2); - DL = set_enviro_fog_for_items_in_solo_watch_menu - (DL,(longlong)iStack164,afStack72,0x40,-0x5f005fc4); - aiStack200[0] = 0; - iStack204 = 0; - abStack2212[0] = 0; - iVar10 = 0; - piStack208 = D_80040EAC; - iStack212 = D_80040EB0; - iVar3 = proc_7F08D038(); - if (0 < iVar3) { - do { - pcVar6 = (char *)proc_7F08D340(iVar10); - string_load_parse_something((char *)abStack2212,pcVar6); - iVar10 += 1; + u8 *puVar1; + ulonglong uVar2; + int iVar3; + ITEM_IDS IVar4; + u32 uVar5; + undefined4 *DL; + u32 *DL_00; + char *textfiletext; + undefined4 *puVar6; + byte *pbVar7; + uint *puVar8; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + int iVar9; + float in_f0; + float fovy; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float extraout_f14_00; + float aspect; + uint *puStackX0; + int iStack2264; + int iStack2260; + u8 *puStack2256; + byte abStack2248 [36]; + byte abStack2212 [2000]; + u8 *puStack212; + int *piStack208; + int iStack204; + int aiStack200 [3]; + uint uStack188; + uint auStack184 [3]; + float fStack172; + float fStack168; + int iStack164; + float fStack160; + float fStack156; + float fStack152; + float fStack148; + float fStack140; + float afStack136 [16]; + float afStack72 [16]; + u16 uStack6; + Mtx *pabStack4; + + puStackX0 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); + uVar2 = check_watch_page_transistion_running(); + pabStack4 = (Mtx *)uVar2; + if (uVar2 != 1) { + proc_7F0BD6E0(); + proc_7F08D528(dword_800409B8); + fStack148 = in_f0; + proc_7F08D550(dword_800409B8); + fStack152 = in_f0; + proc_7F08D578(dword_800409B8); + fStack156 = in_f0; + proc_7F08D5A0(dword_800409B8); + fStack160 = in_f0; + iStack164 = proc_7F08D2A8(dword_800409B8); + proc_7F08D850(dword_800409B8); + fStack168 = in_f0; + proc_7F08D878(dword_800409B8); + fStack172 = in_f0; + iVar3 = get_debug_gunwatchpos_flag(); + fovy = extraout_f12; + aspect = extraout_f14; + if (iVar3 != 0) { + IVar4 = get_item_in_hand(0); + uVar5 = get_controller_buttons_held('\0',L_CBUTTONS); + if (uVar5 != 0) { + (&gitem_structs)[IVar4].equip_watch_x = + (&gitem_structs)[IVar4].equip_watch_x - 2.00000000; + } + uVar5 = get_controller_buttons_held('\0',R_CBUTTONS); + if (uVar5 != 0) { + (&gitem_structs)[IVar4].equip_watch_x = + (&gitem_structs)[IVar4].equip_watch_x + 2.00000000; + } + uVar5 = get_controller_buttons_held('\0',D_CBUTTONS); + if (uVar5 != 0) { + (&gitem_structs)[IVar4].equip_watch_y = + (&gitem_structs)[IVar4].equip_watch_y + 2.00000000; + } + uVar5 = get_controller_buttons_held('\0',U_CBUTTONS); + if (uVar5 != 0) { + (&gitem_structs)[IVar4].equip_watch_y = + (&gitem_structs)[IVar4].equip_watch_y - 2.00000000; + } + uVar5 = get_controller_buttons_held('\0',L_TRIG); + if (uVar5 != 0) { + (&gitem_structs)[IVar4].equip_watch_z = + (&gitem_structs)[IVar4].equip_watch_z * 0.98000002; + } + uVar5 = get_controller_buttons_held('\0',R_TRIG); + fovy = extraout_f12_00; + aspect = extraout_f14_00; + if (uVar5 != 0) { + (&gitem_structs)[IVar4].equip_watch_z = + (&gitem_structs)[IVar4].equip_watch_z * 1.02040815; + } + } + guPerspective(pabStack4,&uStack6,fovy,aspect,fStack148,1.33333337,10.00000000); + *puStackX0 = 0x1030040; + uVar5 = osVirtualToPhysical(pabStack4); + puStackX0[1] = uVar5; + proc_7F0585FC((fStack172 * 6.28318548) / 360.00000000,extraout_a0,afStack72); + proc_7F058688(6.28318548 - (fStack168 * 6.28318548) / 360.00000000,extraout_a0_00,afStack136 + ); + proc_7F058068(afStack136,afStack72); + fStack140 = cosf((float)dword_80040B14); + fStack140 = fStack140 * fStack160; + fovy = sinf((float)dword_80040B14); + proc_7F059694(afStack136,fStack156,fStack152,fStack140,fStack156, + fovy * fStack160 + fStack152,0.00000000,fStack156,fStack152,0.00000000); + proc_7F058068(afStack136,afStack72); + DL = proc_7F0A6EE8(puStackX0 + 2); + DL_00 = set_enviro_fog_for_items_in_solo_watch_menu + (DL,(longlong)iStack164,afStack72,0x40,-0x5f005fc4); + aiStack200[0] = 0; + iStack204 = 0; + abStack2212[0] = 0; + iVar9 = 0; + piStack208 = (int *)ptrFirstFontTableSmall; + puStack212 = ptrSecondFontTableSmall; iVar3 = proc_7F08D038(); - } while (iVar10 < iVar3); - } - if (0 < dword_800409C4) { - dword_800409C4 = dword_800409C4 + -1; - } - proc_7F0A5B80(); - auStack184[0] = 0x4e; - uStack188 = 0x8c; - if (j_text_trigger == 0) { - iVar3 = 0xc; - } - else { - iVar3 = 0xe; - } - iVar3 = iVar3 * 2 + 0x8d; - DL = microcode_constructor(DL); - if (j_text_trigger == 0) { - iVar10 = 0xc; - } - else { - iVar10 = 0xe; - } - proc_7F0AE98C(aiStack200,&iStack204,abStack2212,iStack212,piStack208,iVar10); - if (j_text_trigger == 0) { - iVar10 = 0xc; - } - else { - iVar10 = 0xe; - } - DL = microcode_constructor_related_to_menus - (DL,0x4e,0x8c,(longlong)(iStack204 + 0x4e),iVar10 * 5 + 0x8c,0); - if (j_text_trigger == 0) { - iVar10 = 0xc; - } - else { - iVar10 = 0xe; - } - if (j_text_trigger == 0) { - iVar7 = 0xc; - } - else { - iVar7 = 0xe; - } - puVar8 = en_text_write_stuff(DL,(int *)auStack184,(int *)&uStack188,abStack2212,iStack212, - (int)piStack208,(uint)&DAT_00aa00b0,iStack204 + 1,iVar10 * 5, - dword_800409B0,iVar7); - if (j_text_trigger == 0) { - iVar10 = 0xc; - } - else { - iVar10 = 0xe; - } - DL = microcode_constructor_related_to_menus - (puVar8,0x4b,(longlong)iVar3,(longlong)(iStack204 + 0x52),(iVar10 + iVar3) - 2, - (uint)&DAT_00800050); - piVar1 = D_80040EAC; - iStack2256 = D_80040EB0; - pbVar9 = (byte *)proc_7F08D340(dword_800409B8); - sprintf((char *)abStack2248,"%d, %d\n%d %f\n",dword_800409B0,dword_800409B4,dword_800409B8); - puStackX0 = microcode_constructor(DL); - proc_7F0AE98C(&iStack2264,&iStack2260,abStack2248,iStack2256,piVar1,0); - if (dword_800409C0 != 0) { - iVar3 = 0xc; - if (j_text_trigger != 0) { - iVar3 = 0xe; - } - proc_7F0AE98C(&iStack2264,&iStack2260,pbVar9,iStack2256,piVar1,iVar3); - auStack184[0] = 0x4e; - if (j_text_trigger == 0) { - iVar3 = 0xc; - } - else { - iVar3 = 0xe; - } - uStack188 = iVar3 * 2 + 0x8c; - if (dword_800409C4 == 0) { + if (0 < iVar3) { + do { + textfiletext = (char *)proc_7F08D340(iVar9); + string_append_from_obseg_textbank((char *)abStack2212,textfiletext); + iVar9 += 1; + iVar3 = proc_7F08D038(); + } while (iVar9 < iVar3); + } + if (0 < dword_800409C4) { + dword_800409C4 = dword_800409C4 + -1; + } + proc_7F0A5B80(); + auStack184[0] = 0x4e; + uStack188 = 0x8c; if (j_text_trigger == 0) { - iVar3 = 0xc; + DL = &DAT_0000000c; } else { - iVar3 = 0xe; + DL = (undefined4 *)((int)&DAT_0000000c + 2); } - puStackX0 = en_text_write_stuff(puStackX0,(int *)auStack184,(int *)&uStack188,pbVar9, - iStack2256,(int)piVar1,0xa0ffa0f0,iStack2260,100,0,iVar3); - } - else { + iVar3 = (int)DL * 2 + 0x8d; + microcode_constructor(DL_00); if (j_text_trigger == 0) { - iVar3 = 0xc; + iVar9 = 0xc; } else { - iVar3 = 0xe; + iVar9 = 0xe; + } + proc_7F0AE98C(aiStack200,&iStack204,abStack2212,(int)puStack212,piStack208,iVar9); + if (j_text_trigger == 0) { + iVar9 = 0xc; + } + else { + iVar9 = 0xe; + } + DL = microcode_constructor_related_to_menus + (DL,0x4e,0x8c,(longlong)(iStack204 + 0x4e),iVar9 * 5 + 0x8c,0); + if (j_text_trigger == 0) { + iVar9 = 0xc; + } + else { + iVar9 = 0xe; + } + if (j_text_trigger == 0) { + puVar6 = &DAT_0000000c; + } + else { + puVar6 = (undefined4 *)((int)&DAT_0000000c + 2); + } + en_text_write_stuff(DL,(int *)auStack184,(int *)&uStack188,abStack2212,(int)puStack212, + (int)piStack208,(uint)&DAT_00aa00b0,iStack204 + 1,iVar9 * 5, + dword_800409B0,(int)puVar6); + if (j_text_trigger == 0) { + iVar9 = 0xc; + } + else { + iVar9 = 0xe; + } + DL_00 = microcode_constructor_related_to_menus + (puVar6,0x4b,(longlong)iVar3,(longlong)(iStack204 + 0x52), + (iVar9 + iVar3) - 2,(uint)&DAT_00800050); + puVar1 = ptrFirstFontTableSmall; + puStack2256 = ptrSecondFontTableSmall; + pbVar7 = (byte *)proc_7F08D340(dword_800409B8); + puVar8 = (uint *)sprintf((char *)abStack2248,"%d, %d\n%d %f\n",dword_800409B0,dword_800409B4 + ,dword_800409B8); + microcode_constructor(DL_00); + proc_7F0AE98C(&iStack2264,&iStack2260,abStack2248,(int)puStack2256,(int *)puVar1,0); + puStackX0 = puVar8; + if (dword_800409C0 != 0) { + iVar3 = 0xc; + if (j_text_trigger != 0) { + iVar3 = 0xe; + } + proc_7F0AE98C(&iStack2264,&iStack2260,pbVar7,(int)puStack2256,(int *)puVar1,iVar3); + auStack184[0] = 0x4e; + if (j_text_trigger == 0) { + iVar3 = 0xc; + } + else { + iVar3 = 0xe; + } + uStack188 = iVar3 * 2 + 0x8c; + if (dword_800409C4 == 0) { + if (j_text_trigger == 0) { + puStackX0 = &DAT_0000000c; + } + else { + puStackX0 = (uint *)((int)&DAT_0000000c + 2); + } + en_text_write_stuff(puVar8,(int *)auStack184,(int *)&uStack188,pbVar7, + (int)puStack2256,(int)puVar1,0xa0ffa0f0,iStack2260,100,0, + (int)puStackX0); + } + else { + if (j_text_trigger == 0) { + puStackX0 = &DAT_0000000c; + } + else { + puStackX0 = (uint *)((int)&DAT_0000000c + 2); + } + jp_text_stuff(puVar8,auStack184,&uStack188,pbVar7,(int)puStack2256,(int)puVar1, + 0xffffffff,(uint)&DAT_007000a0,iStack2260 + 1,100,0,(int)puStackX0); + } + proc_7F0A8378(); } - puStackX0 = jp_text_stuff(puStackX0,auStack184,&uStack188,pbVar9,iStack2256,(int)piVar1, - 0xffffffff,(uint)&DAT_007000a0,iStack2260 + 1,100,0,iVar3); - } - proc_7F0A8378(); } - } - return puStackX0; + return puStackX0; } @@ -119014,60 +118085,63 @@ uint * debug_gun_watch_move_related2(undefined8 param_1,undefined8 param_2) uint * proc_7F0A8B10(undefined8 param_1,u32 param_2) { - int *piVar1; - int iVar2; - byte *pbVar4; - uint *DL; - ulonglong uVar3; - undefined4 *puVar5; - int iVar6; - int iStack36; - int iStack32; - uint uStack28; - int iStack24; - uint uStack12; - uint auStack8 [2]; - - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - iStack32 = 0; - iStack36 = 0; - pbVar4 = (byte *)proc_7F08D434(dword_800409B8); - DL = proc_7F0A714C(param_1._4_4_,param_2,0); - uVar3 = check_watch_page_transistion_running(); - if (uVar3 != 1) { - if (0 < dword_800409C4) { - dword_800409C4 = dword_800409C4 + -1; + u8 *puVar1; + u8 *puVar2; + byte *pbVar4; + ulonglong uVar3; + undefined4 *puVar5; + int **ppiVar6; + int **DL; + int iVar7; + int iStack36; + int iStack32; + uint uStack28; + int iStack24; + uint uStack12; + uint auStack8 [2]; + + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + iStack32 = 0; + iStack36 = 0; + pbVar4 = (byte *)proc_7F08D434(dword_800409B8); + DL = (int **)proc_7F0A714C(param_1._4_4_,param_2,0); + uVar3 = check_watch_page_transistion_running(); + puVar5 = dword_800409C4; + if (uVar3 != 1) { + if (0 < (int)dword_800409C4) { + dword_800409C4 = (undefined4 *)((int)dword_800409C4 + -1); + } + proc_7F0A5B80(); + microcode_constructor((u32 *)DL); + proc_7F0AE98C(&iStack32,&iStack36,pbVar4,(int)puVar2,(int *)puVar1,0); + iVar7 = -iStack36 + 0xaa; + if (iVar7 < 0) { + iVar7 = -iStack36 + 0xab; + } + auStack8[0] = (iVar7 >> 1) + 0x4b; + uStack12 = 0x1e; + ppiVar6 = (int **)microcode_constructor_related_to_menus + (puVar5,(longlong)(int)auStack8[0],0x1e,(longlong)iStack24, + uStack28,(uint)&DAT_00800050); + if (dword_800409C0 == 0) { + DL = ppiVar6; + en_text_write_stuff(ppiVar6,(int *)auStack8,(int *)&uStack12,pbVar4,(int)puVar2, + (int)puVar1,(uint)&DAT_00aa00b0,iStack36,100,0,0); + } + else { + DL = proc_7F0A8378(); + if (dword_800409C4 == NULL) { + en_text_write_stuff(ppiVar6,(int *)auStack8,(int *)&uStack12,pbVar4,(int)puVar2, + (int)puVar1,0xa0ffa0f0,iStack36,100,0,0); + } + else { + jp_text_stuff((uint *)ppiVar6,auStack8,&uStack12,pbVar4,(int)puVar2,(int)puVar1, + 0xffffffff,(uint)&DAT_007000a0,iStack36 + 1,100,0,0); + } + } } - proc_7F0A5B80(); - puVar5 = microcode_constructor(DL); - proc_7F0AE98C(&iStack32,&iStack36,pbVar4,iVar2,piVar1,0); - iVar6 = -iStack36 + 0xaa; - if (iVar6 < 0) { - iVar6 = -iStack36 + 0xab; - } - auStack8[0] = (iVar6 >> 1) + 0x4b; - uStack12 = 0x1e; - DL = microcode_constructor_related_to_menus - (puVar5,(longlong)(int)auStack8[0],0x1e,(longlong)iStack24,uStack28, - (uint)&DAT_00800050); - if (dword_800409C0 == 0) { - DL = en_text_write_stuff(DL,(int *)auStack8,(int *)&uStack12,pbVar4,iVar2,(int)piVar1, - (uint)&DAT_00aa00b0,iStack36,100,0,0); - } - else { - proc_7F0A8378(); - if (dword_800409C4 == 0) { - DL = en_text_write_stuff(DL,(int *)auStack8,(int *)&uStack12,pbVar4,iVar2,(int)piVar1, - 0xa0ffa0f0,iStack36,100,0,0); - } - else { - DL = jp_text_stuff(DL,auStack8,&uStack12,pbVar4,iVar2,(int)piVar1,0xffffffff, - (uint)&DAT_007000a0,iStack36 + 1,100,0,0); - } - } - } - return DL; + return (uint *)DL; } @@ -119075,59 +118149,59 @@ uint * proc_7F0A8B10(undefined8 param_1,u32 param_2) void proc_7F0A8D40(undefined2 *param_1,float param_2,int param_3) { - short sVar1; - short sVar2; - char cVar3; - int iVar4; - int in_a2_lo; - undefined2 *puVar5; - short *psVar6; - int iVar7; - - sVar1 = param_1[0x10]; - sVar2 = param_1[0x20]; - iVar4 = 0; - iVar7 = (int)((float)in_a2_lo * (flt_80058534 - (float)param_3)); - puVar5 = param_1; - do { - iVar4 += 1; - *(undefined *)(puVar5 + 6) = 0x20; - *(undefined *)((int)puVar5 + 0xd) = 0x40; - *(undefined *)(puVar5 + 7) = 0x20; - *(undefined *)((int)puVar5 + 0xf) = 0xe0; - puVar5 = puVar5 + 8; - } while (iVar4 < 4); - iVar4 = 4; - psVar6 = param_1 + 0x20; - do { - if (iVar4 < 10) { - cVar3 = (char)(int)((float)param_3 * 48.00000000) + '@'; - *(char *)(psVar6 + 6) = cVar3; - *(char *)((int)psVar6 + 0xd) = (char)(int)((float)param_3 * 96.00000000) + -0x80; - *(char *)(psVar6 + 7) = cVar3; - if (5 < iVar4) { - *psVar6 = (short)(int)(((float)(int)(short)param_1[0x20] + - ((float)((int)sVar1 - (int)sVar2) + (float)iVar7) * (float)param_3) - - (float)iVar7); - if (*psVar6 < (short)param_1[0x20]) { - *psVar6 = param_1[0x20]; + short sVar1; + short sVar2; + char cVar3; + int iVar4; + int in_a2_lo; + undefined2 *puVar5; + short *psVar6; + int iVar7; + + sVar1 = param_1[0x10]; + sVar2 = param_1[0x20]; + iVar4 = 0; + iVar7 = (int)((float)in_a2_lo * (1.20000005 - (float)param_3)); + puVar5 = param_1; + do { + iVar4 += 1; + *(undefined *)(puVar5 + 6) = 0x20; + *(undefined *)((int)puVar5 + 0xd) = 0x40; + *(undefined *)(puVar5 + 7) = 0x20; + *(undefined *)((int)puVar5 + 0xf) = 0xe0; + puVar5 = puVar5 + 8; + } while (iVar4 < 4); + iVar4 = 4; + psVar6 = param_1 + 0x20; + do { + if (iVar4 < 10) { + cVar3 = (char)(int)((float)param_3 * 48.00000000) + '@'; + *(char *)(psVar6 + 6) = cVar3; + *(char *)((int)psVar6 + 0xd) = (char)(int)((float)param_3 * 96.00000000) + -0x80; + *(char *)(psVar6 + 7) = cVar3; + if (5 < iVar4) { + *psVar6 = (short)(int)(((float)(int)(short)param_1[0x20] + + ((float)((int)sVar1 - (int)sVar2) + (float)iVar7) * + (float)param_3) - (float)iVar7); + if (*psVar6 < (short)param_1[0x20]) { + *psVar6 = param_1[0x20]; + } + } } - } - } - else { - *psVar6 = (short)(int)((float)(int)(short)param_1[0x20] + - (float)(((int)sVar1 - (int)sVar2) + iVar7) * (float)param_3 + - (float)iVar7); - if ((short)param_1[0x10] < *psVar6) { - *psVar6 = param_1[0x10]; - } - } - iVar4 += 1; - psVar6 = psVar6 + 8; - } while (iVar4 != 0xc); - param_1[8] = param_1[0x50]; - *param_1 = param_1[0x50]; - return; + else { + *psVar6 = (short)(int)((float)(int)(short)param_1[0x20] + + (float)(((int)sVar1 - (int)sVar2) + iVar7) * (float)param_3 + + (float)iVar7); + if ((short)param_1[0x10] < *psVar6) { + *psVar6 = param_1[0x10]; + } + } + iVar4 += 1; + psVar6 = psVar6 + 8; + } while (iVar4 != 0xc); + param_1[8] = param_1[0x50]; + *param_1 = param_1[0x50]; + return; } @@ -119135,50 +118209,50 @@ void proc_7F0A8D40(undefined2 *param_1,float param_2,int param_3) void proc_7F0A8ED0(ushort *param_1) { - int iVar2; - ulonglong uVar1; - uint uVar3; - - iVar2 = get_cur_controller_horz_stick_pos('\0'); - uVar3 = (uint)*param_1; - uVar1 = get_controller_buttons_held('\0',0x111); - if (uVar1 == 0) { - uVar1 = get_controller_buttons_held('\0',0x222); - if (uVar1 != 0) { - uVar3 -= 0x400; - } - } - else { - uVar3 += 0x400; - } - if (iVar2 < 0x47) { - if (iVar2 < -0x46) { - iVar2 = -0x46; - } - } - else { - iVar2 = 0x46; - } - if (iVar2 < 8) { - if (iVar2 < -7) { - uVar3 += (iVar2 * 0x800 + 0x3800) / 0x46; - } - } - else { - uVar3 += (iVar2 * 0x800 + -0x3800) / 0x46; - } - if ((int)uVar3 < 0x8000) { - if ((int)uVar3 < 0) { - *param_1 = 0; + s32 stickhpos; + u32 uVar1; + uint uVar2; + + stickhpos = get_cur_controller_horz_stick_pos('\0'); + uVar2 = (uint)*param_1; + uVar1 = get_controller_buttons_held('\0',R_CBUTTONS|R_TRIG|R_JPAD); + if (uVar1 == 0) { + uVar1 = get_controller_buttons_held('\0',L_CBUTTONS|L_TRIG|L_JPAD); + if (uVar1 != 0) { + uVar2 -= 0x400; + } } else { - *param_1 = (ushort)uVar3; + uVar2 += 0x400; } - } - else { - *param_1 = 0x7fff; - } - return; + if (stickhpos < 0x47) { + if (stickhpos < -0x46) { + stickhpos = -0x46; + } + } + else { + stickhpos = 0x46; + } + if (stickhpos < 8) { + if (stickhpos < -7) { + uVar2 += (stickhpos * 0x800 + 0x3800) / 0x46; + } + } + else { + uVar2 += (stickhpos * 0x800 + -0x3800) / 0x46; + } + if ((int)uVar2 < 0x8000) { + if ((int)uVar2 < 0) { + *param_1 = 0; + } + else { + *param_1 = (ushort)uVar2; + } + } + else { + *param_1 = 0x7fff; + } + return; } @@ -119188,56 +118262,55 @@ void proc_7F0A8ED0(ushort *param_1) undefined4 * proc_7F0A8FEC(void) { - short *in_v0_lo; - u32 uVar1; - undefined4 *puVar2; - short *psVar3; - undefined4 *in_a0_lo; - ulonglong uVar4; - float fVar5; - float extraout_f12; - ushort uStack2; - - proc_7F0BD6C4(0xc); - uVar1 = music_related_37(); - uStack2 = (ushort)uVar1; - if (dword_800409A8 == 0) { - uVar4 = (ulonglong)uStack2; - } - else { - if (DAT_8004099c == 1) { - proc_7F0A8ED0(&uStack2); - uVar4 = (ulonglong)uStack2; + short *in_v0_lo; + u32 uVar1; + undefined4 *puVar2; + short *psVar3; + undefined4 *in_a0_lo; + ulonglong uVar4; + float fVar5; + float extraout_f12; + ushort uStack2; + + proc_7F0BD6C4(0xc); + uVar1 = sfx_c_700091C8(); + uStack2 = (ushort)uVar1; + if (watch_soundrelated_maybe == 0) { + uVar4 = (ulonglong)uStack2; } else { - uVar4 = (ulonglong)uStack2; + if (D_8004099c == 1) { + proc_7F0A8ED0(&uStack2); + uVar4 = (ulonglong)uStack2; + } + else { + uVar4 = (ulonglong)uStack2; + } } - } - fVar5 = (float)(int)uVar4; - if (false) { - fVar5 = fVar5 + 4294967296.00000000; - } - fVar5 = fVar5 / flt_80058538; - music_related_38(uVar4); - *in_a0_lo = 0xb900031d; - in_a0_lo[1] = 0x504240; - puVar2 = proc_7F0A3B40(in_a0_lo + 2,in_v0_lo + -0x40000000); - psVar3 = proc_7F0A3AB8(in_v0_lo,0,0,600,0x14,-299,-0xcd); - puVar2 = proc_7F0A3B40(puVar2,psVar3 + -0x40000000); - psVar3 = proc_7F0A3AB8(psVar3,0,0,600,0x14,-299,-0xcd); - puVar2 = proc_7F0A3B40(puVar2,psVar3 + -0x40000000); - proc_7F0A3AB8(psVar3,0,0,600,0x14,-299,-0xcd); - proc_7F0A8D40(in_v0_lo,extraout_f12,(int)fVar5); - return puVar2; + fVar5 = (float)(int)uVar4; + if (false) { + fVar5 = fVar5 + 4294967296.00000000; + } + music_related_38(uVar4); + *in_a0_lo = 0xb900031d; + in_a0_lo[1] = 0x504240; + puVar2 = proc_7F0A3B40(in_a0_lo + 2,in_v0_lo + -0x40000000); + psVar3 = proc_7F0A3AB8(in_v0_lo,0,0,600,0x14,-299,-0xcd); + puVar2 = proc_7F0A3B40(puVar2,psVar3 + -0x40000000); + psVar3 = proc_7F0A3AB8(psVar3,0,0,600,0x14,-299,-0xcd); + puVar2 = proc_7F0A3B40(puVar2,psVar3 + -0x40000000); + proc_7F0A3AB8(psVar3,0,0,600,0x14,-299,-0xcd); + proc_7F0A8D40(in_v0_lo,extraout_f12,(int)(fVar5 / 32767.00000000)); + return puVar2; } -void proc_7F0A9180(void) +void call_sfx_c_700091C8(void) { - music_related_37(); - return; + sfx_c_700091C8(); + return; } @@ -119245,8 +118318,8 @@ void proc_7F0A9180(void) void proc_7F0A91A0(ulonglong param_1) { - music_related_38(param_1 & 0xffff); - return; + music_related_38(param_1 & 0xffff); + return; } @@ -119256,45 +118329,44 @@ void proc_7F0A91A0(ulonglong param_1) undefined4 * proc_7F0A91C8(void) { - short *in_v0_lo; - undefined4 *puVar1; - short *psVar2; - undefined4 *in_a0_lo; - uint uVar3; - float fVar4; - float extraout_f12; - u16 uStack2; - - proc_7F0BD6C4(0xc); - uStack2 = proc_7F0A9358(); - if (dword_800409A8 == 0) { - uVar3 = (uint)uStack2; - } - else { - if (DAT_8004099c == 0) { - proc_7F0A8ED0(&uStack2); - uVar3 = (uint)uStack2; + short *in_v0_lo; + undefined4 *puVar1; + short *psVar2; + undefined4 *in_a0_lo; + uint uVar3; + float fVar4; + float extraout_f12; + ushort uStack2; + + proc_7F0BD6C4(0xc); + uStack2 = proc_7F0A9358(); + if (watch_soundrelated_maybe == 0) { + uVar3 = (uint)uStack2; } else { - uVar3 = (uint)uStack2; + if (D_8004099c == 0) { + proc_7F0A8ED0(&uStack2); + uVar3 = (uint)uStack2; + } + else { + uVar3 = (uint)uStack2; + } } - } - fVar4 = (float)uVar3; - if (false) { - fVar4 = fVar4 + 4294967296.00000000; - } - fVar4 = fVar4 / flt_8005853C; - proc_7F0A9364((ushort)uVar3); - *in_a0_lo = 0xb900031d; - in_a0_lo[1] = 0x504240; - puVar1 = proc_7F0A3B40(in_a0_lo + 2,in_v0_lo + -0x40000000); - psVar2 = proc_7F0A3AB8(in_v0_lo,0,0,600,0x14,-299,-0x113); - puVar1 = proc_7F0A3B40(puVar1,psVar2 + -0x40000000); - psVar2 = proc_7F0A3AB8(psVar2,0,0,600,0x14,-299,-0x113); - puVar1 = proc_7F0A3B40(puVar1,psVar2 + -0x40000000); - proc_7F0A3AB8(psVar2,0,0,600,0x14,-299,-0x113); - proc_7F0A8D40(in_v0_lo,extraout_f12,(int)fVar4); - return puVar1; + fVar4 = (float)uVar3; + if (false) { + fVar4 = fVar4 + 4294967296.00000000; + } + proc_7F0A9364((ushort)uVar3); + *in_a0_lo = 0xb900031d; + in_a0_lo[1] = 0x504240; + puVar1 = proc_7F0A3B40(in_a0_lo + 2,in_v0_lo + -0x40000000); + psVar2 = proc_7F0A3AB8(in_v0_lo,0,0,600,0x14,-299,-0x113); + puVar1 = proc_7F0A3B40(puVar1,psVar2 + -0x40000000); + psVar2 = proc_7F0A3AB8(psVar2,0,0,600,0x14,-299,-0x113); + puVar1 = proc_7F0A3B40(puVar1,psVar2 + -0x40000000); + proc_7F0A3AB8(psVar2,0,0,600,0x14,-299,-0x113); + proc_7F0A8D40(in_v0_lo,extraout_f12,(int)(fVar4 / 32767.00000000)); + return puVar1; } @@ -119302,7 +118374,7 @@ undefined4 * proc_7F0A91C8(void) u16 proc_7F0A9358(void) { - return dword_80040B58; + return (u16)mTrack2Vol; } @@ -119310,88 +118382,92 @@ u16 proc_7F0A9358(void) void proc_7F0A9364(ushort param_1) { - dword_80040B58 = param_1; - musicTrack2Vol((longlong)(short)param_1 & 0xffff); - return; + mTrack2Vol = param_1; + musicTrack2Vol(param_1); + return; } -uint * proc_7F0A9398(undefined4 *param_1,uint param_2,uint param_3,byte *param_4,uint param_5, - int param_6,uint param_7,int param_8,int param_9,uint param_10,int param_11) +void proc_7F0A9398(undefined4 *param_1,uint param_2,uint param_3,byte *param_4,uint param_5, + int param_6,uint param_7,int param_8,int param_9,uint param_10,int param_11) { - int *piVar1; - int iVar2; - int iVar3; - uint *puVar4; - uint uStackX8; - byte *pbStackX12; - int iStack20; - int aiStack16 [3]; - uint uStack4; - - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - uStackX8 = param_3; - pbStackX12 = param_4; - proc_7F0AE98C(&iStack20,aiStack16,param_4,D_80040EB0,D_80040EAC,10); - if (param_8 == 0) { - if (param_11 != 0) { - param_2 -= aiStack16[0]; + u8 *puVar1; + u8 *puVar2; + int iVar3; + uint *puVar4; + uint *puVar5; + uint uStackX8; + byte *pbStackX12; + int iStack20; + int aiStack16 [3]; + uint uStack4; + + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + uStackX8 = param_3; + pbStackX12 = param_4; + proc_7F0AE98C(&iStack20,aiStack16,param_4,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,10); + if (param_8 == 0) { + if (param_11 != 0) { + param_2 -= aiStack16[0]; + } } - } - else { - iVar3 = aiStack16[0]; - if (aiStack16[0] < 0) { - iVar3 = aiStack16[0] + 1; + else { + iVar3 = aiStack16[0]; + if (aiStack16[0] < 0) { + iVar3 = aiStack16[0] + 1; + } + param_2 -= iVar3 >> 1; } - param_2 -= iVar3 >> 1; - } - if (dword_80040B04 < 0xe0) { - *param_1 = 0xb900031d; - param_1[1] = 0x50004b; - } - else { - *param_1 = 0xb900031d; - param_1[1] = 0x5041c8; - } - param_1 = param_1 + 2; - uStack4 = param_2; - if (param_9 != 0) { + if (D_80040B04 < 0xe0) { + *param_1 = 0xb900031d; + param_1[1] = 0x50004b; + } + else { + *param_1 = 0xb900031d; + param_1[1] = 0x5041c8; + } + puVar4 = param_1 + 2; uStack4 = param_2; - param_1 = microcode_constructor_related_to_menus - (param_1,(longlong)(int)(param_2 - 1), - (longlong)(int)(uStackX8 + param_6 + 1), - (longlong)(int)(param_2 + aiStack16[0] + 1),uStackX8 + iStack20 + 1, - param_10); - } - *param_1 = 0xb900031d; - param_1[1] = 0x5041c8; - puVar4 = param_1 + 2; - if (param_6 == 0) { - puVar4 = en_text_write_stuff(puVar4,(int *)&uStack4,(int *)&uStackX8,pbStackX12,iVar2, - (int)piVar1,param_5,aiStack16[0],iStack20,0,10); - } - if (param_6 != 0) { - puVar4 = jp_text_stuff(puVar4,&uStack4,&uStackX8,pbStackX12,iVar2,(int)piVar1,param_5,param_7, - aiStack16[0] + 1,iStack20,0,10); - } - return puVar4; + if (param_9 != 0) { + puVar4 = microcode_constructor_related_to_menus + (puVar4,(longlong)(int)(param_2 - 1), + (longlong)(int)(uStackX8 + param_6 + 1), + (longlong)(int)(param_2 + aiStack16[0] + 1),uStackX8 + iStack20 + 1, + param_10); + } + *puVar4 = 0xb900031d; + puVar4[1] = 0x5041c8; + puVar5 = puVar4 + 2; + if (param_6 == 0) { + en_text_write_stuff(puVar5,(int *)&uStack4,(int *)&uStackX8,pbStackX12,(int)puVar2, + (int)puVar1,param_5,aiStack16[0],iStack20,0,10); + puVar5 = puVar4; + } + if (param_6 != 0) { + jp_text_stuff(puVar5,&uStack4,&uStackX8,pbStackX12,(int)puVar2,(int)puVar1,param_5,param_7, + aiStack16[0] + 1,iStack20,0,10); + } + return; } -float proc_7F0A95C4(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5) +float sub_GAME_7F0A95C4(float param_1,float param_2,float param_3) { - if (param_1 < param_2) { - return param_1 + (param_2 - param_1) / param_5; - } - if (param_2 < param_1) { - param_1 = param_1 - (param_1 - param_2) / param_5; - } - return param_1; + float in_a2_lo; + + if (param_1 < param_2) { + return param_1 + (param_2 - param_1) / in_a2_lo; + } + if (param_2 < param_1) { + param_1 = param_1 - (param_1 - param_2) / in_a2_lo; + } + return param_1; } @@ -119399,11 +118475,11 @@ float proc_7F0A95C4(float param_1,float param_2,undefined8 param_3,undefined8 pa undefined8 proc_7F0A9610(void) { - if ((((dword_80040B24 < flt_80058540) && (flt_80058544 < dword_80040B24)) && - (dword_80040B20 < flt_80058540)) && (flt_80058544 < dword_80040B20)) { - return 1; - } - return 0; + if ((((dword_80040B24 < 0.10000000) && (-0.10000000 < dword_80040B24)) && + (dword_80040B20 < 0.10000000)) && (-0.10000000 < dword_80040B20)) { + return 1; + } + return 0; } @@ -119411,51 +118487,50 @@ undefined8 proc_7F0A9610(void) void proc_7F0A9684(char param_1,int *param_2,float *param_3,float *param_4) { - longlong lVar1; - int iVar2; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 uVar3; - undefined8 extraout_a0_01; - undefined8 extraout_a1; - float fVar4; - - lVar1 = get_cur_controller_horz_stick_pos(param_1); - uVar3 = extraout_a0; - if ((lVar1 < 10) && - (lVar1 = get_cur_controller_horz_stick_pos(param_1), uVar3 = extraout_a0_00, -10 < lVar1)) { + s32 sVar1; + int iVar2; + float extraout_a0_lo; + float extraout_a0_lo_00; + float extraout_a0_lo_01; + float fVar3; + + sVar1 = get_cur_controller_horz_stick_pos(param_1); + fVar3 = extraout_a0_lo; + if ((sVar1 < 10) && + (sVar1 = get_cur_controller_horz_stick_pos(param_1), fVar3 = extraout_a0_lo_00, -10 < sVar1)) + { LAB_7f0a96f0: - iVar2 = *param_2; - } - else { - if (dword_800409A8 != 0) { - iVar2 = 0; - if (DAT_80040998 == 1) { - *param_2 = 0; - goto LAB_7f0a9710; - } - goto LAB_7f0a96f0; + iVar2 = *param_2; + } + else { + if (watch_soundrelated_maybe != 0) { + iVar2 = 0; + if (D_80040998 == 1) { + *param_2 = 0; + goto LAB_7f0a9710; + } + goto LAB_7f0a96f0; + } + iVar2 = *param_2; + } + if (iVar2 < 100) { + *param_2 = iVar2 + 1; + iVar2 = iVar2 + 1; } - iVar2 = *param_2; - } - if (iVar2 < 100) { - *param_2 = iVar2 + 1; - iVar2 = iVar2 + 1; - } LAB_7f0a9710: - if (iVar2 < 100) { - if ((dword_800409A8 != 0) && (DAT_80040998 == 1)) { - iVar2 = get_cur_controller_horz_stick_pos(param_1); - fVar4 = proc_7F0A95C4(*param_3,(-(float)iVar2 * flt_80058548 * flt_8005854C) / 360.00000000, - extraout_a0_01,extraout_a1,4.00000000); - *param_3 = fVar4; + if (iVar2 < 100) { + if ((watch_soundrelated_maybe != 0) && (D_80040998 == 1)) { + sVar1 = get_cur_controller_horz_stick_pos(param_1); + fVar3 = sub_GAME_7F0A95C4(*param_3,(-(float)sVar1 * 0.20000000 * 6.28318548) / + 360.00000000,extraout_a0_lo_01); + *param_3 = fVar3; + } } - } - else { - fVar4 = proc_7F0A95C4(*param_3,-*param_4 / 10.00000000,uVar3,(longlong)(int)param_2,4.00000000); - *param_3 = fVar4; - } - return; + else { + fVar3 = sub_GAME_7F0A95C4(*param_3,-*param_4 / 10.00000000,fVar3); + *param_3 = fVar3; + } + return; } @@ -119463,90 +118538,95 @@ LAB_7f0a9710: uint * proc_7F0A97D0(undefined4 *param_1) { - int *piVar1; - int iVar2; - byte *pbVar3; - int iVar4; - int iVar5; - u16 *puVar6; - uint *puStackX0; - int iStack2036; - int aiStack2032 [3]; - int iStack2020; - int iStack2016; - byte abStack2012 [2012]; - - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - aiStack2032[0] = 0; - iStack2036 = 0; - abStack2012[0] = 0; - iVar5 = 0; - if (0 < dword_800409D8) { - puVar6 = &word_800409DC; - do { - pbVar3 = get_textptr_for_textID(*puVar6); - string_load_parse_something((char *)abStack2012,(char *)pbVar3); - iVar5 += 1; - puVar6 = puVar6 + 10; - } while (iVar5 < dword_800409D8); - } - if ((dword_800409A8 != 0) && (DAT_80040998 == 0)) { - iVar5 = 10; - if (j_text_trigger != 0) { - iVar5 = 0xe; + undefined **ppuVar1; + u8 *puVar2; + u8 *puVar3; + u8 *textfiletext; + byte *pbVar4; + uint *puVar5; + int iVar6; + TEXTFILESTRINGS *pTVar7; + uint *puStackX0; + int iStack2036; + int aiStack2032 [3]; + int iStack2020; + int iStack2016; + byte abStack2012 [2012]; + + puVar3 = ptrSecondFontTableSmall; + puVar2 = ptrFirstFontTableSmall; + aiStack2032[0] = 0; + iStack2036 = 0; + abStack2012[0] = 0; + iVar6 = 0; + if (0 < D_800409D8) { + pTVar7 = &D_800409DC; + do { + textfiletext = get_textptr_for_textID(*pTVar7); + string_append_from_obseg_textbank((char *)abStack2012,(char *)textfiletext); + iVar6 += 1; + pTVar7 = pTVar7 + 10; + } while (iVar6 < D_800409D8); } - proc_7F0A611C(&pPlayer->cur_player_control_type_2,&pPlayer->cur_player_control_type_0, - dword_800409D8,&pPlayer->neg_vspacing_for_control_type_entry, - &pPlayer->cur_player_control_type_1,&pPlayer->has_set_control_type_data,0,1,iVar5) - ; - } - iStack2016 = 0xaa; - iStack2020 = 0x1a; - if (j_text_trigger == 0) { - iVar5 = 10; - } - else { - iVar5 = 0xe; - } - proc_7F0AE98C(aiStack2032,&iStack2036,abStack2012,iVar2,piVar1,iVar5); - if (j_text_trigger == 0) { - iVar5 = 10; - } - else { - iVar5 = 0xe; - } - if (j_text_trigger == 0) { - iVar4 = 10; - } - else { - iVar4 = 0xe; - } - puStackX0 = en_text_write_stuff(param_1,&iStack2016,&iStack2020,abStack2012,iVar2,(int)piVar1, - (uint)&DAT_00aa00b0,iStack2036,iVar5, - pPlayer->neg_vspacing_for_control_type_entry,iVar4); - if (pPlayer->has_set_control_type_data != 0) { - pbVar3 = get_textptr_for_textID((&word_800409DC)[pPlayer->cur_player_control_type_0 * 10]); - if (j_text_trigger == 0) { - iVar5 = 10; + if ((watch_soundrelated_maybe != 0) && (D_80040998 == 0)) { + iVar6 = 10; + if (j_text_trigger != 0) { + iVar6 = 0xe; + } + proc_7F0A611C(&pPlayer->cur_player_control_type_2,&pPlayer->cur_player_control_type_0, + D_800409D8,&pPlayer->neg_vspacing_for_control_type_entry, + &pPlayer->cur_player_control_type_1,&pPlayer->has_set_control_type_data,0,1, + iVar6); } - else { - iVar5 = 0xe; - } - proc_7F0AE98C(aiStack2032,&iStack2036,pbVar3,iVar2,piVar1,iVar5); iStack2016 = 0xaa; iStack2020 = 0x1a; - pbVar3 = get_textptr_for_textID((&word_800409DC)[pPlayer->cur_player_control_type_0 * 10]); if (j_text_trigger == 0) { - iVar5 = 10; + iVar6 = 10; } else { - iVar5 = 0xe; + iVar6 = 0xe; } - puStackX0 = en_text_write_stuff(puStackX0,&iStack2016,&iStack2020,pbVar3,iVar2,(int)piVar1, - 0xa0ffa0f0,iStack2036,100,0,iVar5); - } - return puStackX0; + proc_7F0AE98C(aiStack2032,&iStack2036,abStack2012,(int)puVar3,(int *)puVar2,iVar6); + if (j_text_trigger == 0) { + iVar6 = 10; + } + else { + iVar6 = 0xe; + } + if (j_text_trigger == 0) { + ppuVar1 = &PTR_entry_00000008; + } + else { + ppuVar1 = (undefined **)&DAT_0000000c; + } + puStackX0 = (uint *)((int)ppuVar1 + 2); + en_text_write_stuff(param_1,&iStack2016,&iStack2020,abStack2012,(int)puVar3,(int)puVar2, + (uint)&DAT_00aa00b0,iStack2036,iVar6, + pPlayer->neg_vspacing_for_control_type_entry,(int)puStackX0); + if (pPlayer->has_set_control_type_data != 0) { + pbVar4 = get_textptr_for_textID((&D_800409DC)[pPlayer->cur_player_control_type_0 * 10]); + if (j_text_trigger == 0) { + iVar6 = 10; + } + else { + iVar6 = 0xe; + } + proc_7F0AE98C(aiStack2032,&iStack2036,pbVar4,(int)puVar3,(int *)puVar2,iVar6); + iStack2016 = 0xaa; + iStack2020 = 0x1a; + pbVar4 = get_textptr_for_textID((&D_800409DC)[pPlayer->cur_player_control_type_0 * 10]); + if (j_text_trigger == 0) { + ppuVar1 = &PTR_entry_00000008; + } + else { + ppuVar1 = (undefined **)&DAT_0000000c; + } + puVar5 = (uint *)((int)ppuVar1 + 2); + en_text_write_stuff(puStackX0,&iStack2016,&iStack2020,pbVar4,(int)puVar3,(int)puVar2, + 0xa0ffa0f0,iStack2036,100,0,(int)puVar5); + puStackX0 = puVar5; + } + return puStackX0; } @@ -119554,625 +118634,629 @@ uint * proc_7F0A97D0(undefined4 *param_1) uint * proc_7F0A9AB8(undefined4 *param_1) { - bool bVar1; - undefined4 *puVar3; - ulonglong uVar2; - byte *pbVar4; - uint *puVar5; - byte *local_58; - byte *local_54; - byte *local_8; - byte *local_4; - - if (cur_player_look_vertical_inverted == 1) { - local_4 = get_textptr_for_textID(0xac2d); - local_8 = get_textptr_for_textID(0xac2c); - } - else { - local_4 = get_textptr_for_textID(0xac2c); - local_8 = get_textptr_for_textID(0xac2d); - } - bVar1 = false; - puVar3 = microcode_constructor(param_1); - uVar2 = get_controller_buttons_held('\0',0x20); - if (uVar2 == 0) { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e4 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar3,0x32,0x52,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e4 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar3,0x32,0x52,pbVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,0); - if (*(short *)(&DAT_800409e4 + pPlayer->cur_player_control_type_0 * 0x14) == -0x53ff) { - bVar1 = true; - } - } - if (((DAT_80040998 == 1) && (dword_800409A8 != 0)) && - (uVar2 = get_controller_buttons_held('\0',0xf00), uVar2 != 0)) { - uVar2 = get_controller_buttons_held('\0',0x800); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held('\0',0x400); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held('\0',0x200); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held('\0',0x100); - if (uVar2 != 0) { - local_58 = get_textptr_for_textID(0xac2e); - } - } - else { - local_58 = get_textptr_for_textID(0xac2f); - } - } - else { - local_58 = local_8; - if (*(short *)(&DAT_800409ea + pPlayer->cur_player_control_type_0 * 0x14) == -0x53fb) { - local_58 = get_textptr_for_textID(0xac31); - } - } + bool bVar1; + undefined4 *puVar2; + u32 uVar3; + undefined4 *puVar4; + undefined4 *puVar5; + uint *puVar6; + undefined4 *local_58; + undefined4 *local_54; + undefined4 *local_4; + + if (cur_player_look_vertical_inverted == 1) { + local_4 = (undefined4 *)get_textptr_for_textID(0xac2d); + puVar2 = (undefined4 *)get_textptr_for_textID(0xac2c); } else { - local_58 = local_4; - if (*(short *)(&DAT_800409ea + pPlayer->cur_player_control_type_0 * 0x14) == -0x53fb) { - local_58 = get_textptr_for_textID(0xac30); - } + local_4 = (undefined4 *)get_textptr_for_textID(0xac2c); + puVar2 = (undefined4 *)get_textptr_for_textID(0xac2d); } - puVar5 = proc_7F0A9398(puVar5,0x32,0x6b,local_58,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,0); - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409ea + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar5,0x32,0x6b,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - } - pbVar4 = get_textptr_for_textID(*(u16 *)(pPlayer->cur_player_control_type_0 * 0x14 + -0x7ffbf614)) - ; - puVar5 = proc_7F0A9398(puVar5,0x32,0x84,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - uVar2 = get_controller_buttons_held('\0',0x2000); - if (uVar2 == 0) { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e2 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar5,0x32,0x9d,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e2 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar5,0x32,0x9d,pbVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,0); - if (*(short *)(&DAT_800409e2 + pPlayer->cur_player_control_type_0 * 0x14) == -0x53ff) { - bVar1 = true; + bVar1 = false; + puVar5 = puVar2; + microcode_constructor(param_1); + uVar3 = get_controller_buttons_held('\0',L_TRIG); + if (uVar3 == 0) { + puVar4 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e4)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0x32,0x52,(byte *)puVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); } - } - uVar2 = get_controller_buttons_held('\0',0x10); - if (uVar2 == 0) { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e6 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x52,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e6 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x52,pbVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); - if (*(short *)(&DAT_800409e6 + pPlayer->cur_player_control_type_0 * 0x14) == -0x53ff) { - bVar1 = true; + else { + puVar4 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e4)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0x32,0x52,(byte *)puVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,0); + if ((&WORD_800409e4)[pPlayer->cur_player_control_type_0 * 10] == 0xac01) { + bVar1 = true; + } } - } - if (((DAT_80040998 == 1) && (dword_800409A8 != 0)) && - (uVar2 = get_controller_buttons_held('\0',0xf), uVar2 != 0)) { - uVar2 = get_controller_buttons_held('\0',0xf); - if ((uVar2 & (longlong)((int)uVar2 + -1)) == 0) { - uVar2 = get_controller_buttons_held('\0',8); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held('\0',4); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held('\0',2); - if (uVar2 == 0) { - uVar2 = get_controller_buttons_held('\0',1); - if (uVar2 != 0) { - local_54 = get_textptr_for_textID(0xac2e); + if (((D_80040998 == 1) && (watch_soundrelated_maybe != 0)) && + (uVar3 = get_controller_buttons_held('\0',R_JPAD|L_JPAD|D_JPAD|U_JPAD), uVar3 != 0)) { + puVar5 = (undefined4 *)get_controller_buttons_held('\0',U_JPAD); + if (puVar5 == NULL) { + puVar5 = (undefined4 *)get_controller_buttons_held('\0',D_JPAD); + if (puVar5 == NULL) { + uVar3 = get_controller_buttons_held('\0',L_JPAD); + if (uVar3 == 0) { + puVar5 = (undefined4 *)get_controller_buttons_held('\0',R_JPAD); + if (puVar5 != NULL) { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac2e); + local_58 = puVar5; + } + } + else { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac2f); + local_58 = puVar5; + } + } + else { + local_58 = puVar2; + if ((&WORD_800409ea)[pPlayer->cur_player_control_type_0 * 10] == 0xac05) { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac31); + local_58 = puVar5; + } } - } - else { - local_54 = get_textptr_for_textID(0xac2f); - } } else { - local_54 = local_8; - if (*(short *)(&DAT_800409e8 + pPlayer->cur_player_control_type_0 * 0x14) == -0x53fb) { - local_54 = get_textptr_for_textID(0xac31); - } + local_58 = local_4; + if ((&WORD_800409ea)[pPlayer->cur_player_control_type_0 * 10] == 0xac05) { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac30); + local_58 = puVar5; + } } - } - else { - local_54 = local_4; - if (*(short *)(&DAT_800409e8 + pPlayer->cur_player_control_type_0 * 0x14) == -0x53fb) { - local_54 = get_textptr_for_textID(0xac30); - } - } - puVar5 = proc_7F0A9398(puVar5,0x10e,0x6b,local_54,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); + proc_7F0A9398(puVar4,0x32,0x6b,(byte *)local_58,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,0); } else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e8 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x6b,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); + puVar5 = (undefined4 *) + get_textptr_for_textID((&WORD_800409ea)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar4,0x32,0x6b,(byte *)puVar5,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); } - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(&DAT_800409e8 + pPlayer->cur_player_control_type_0 * 0x14)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x6b,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - uVar2 = get_controller_buttons_held('\0',0x4000); - if (uVar2 == 0) { - pbVar4 = get_textptr_for_textID - (*(u16 *)(pPlayer->cur_player_control_type_0 * 0x14 + -0x7ffbf620)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x84,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(pPlayer->cur_player_control_type_0 * 0x14 + -0x7ffbf620)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x84,pbVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); - } - uVar2 = get_controller_buttons_held('\0',0x8000); - if (uVar2 == 0) { - pbVar4 = get_textptr_for_textID - (*(u16 *)(pPlayer->cur_player_control_type_0 * 0x14 + -0x7ffbf622)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x9d,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(pPlayer->cur_player_control_type_0 * 0x14 + -0x7ffbf622)); - puVar5 = proc_7F0A9398(puVar5,0x10e,0x9d,pbVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); - } - if (bVar1) { - pbVar4 = get_textptr_for_textID(0xac08); - puVar5 = proc_7F0A9398(puVar5,0xfa,0xc3,pbVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); - } - else { - pbVar4 = get_textptr_for_textID - (*(u16 *)(pPlayer->cur_player_control_type_0 * 0x14 + -0x7ffbf612)); - puVar5 = proc_7F0A9398(puVar5,0xfa,0xc3,pbVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - return puVar5; + puVar4 = (undefined4 *) + get_textptr_for_textID((&WORD_800409ec)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0x32,0x84,(byte *)puVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + uVar3 = get_controller_buttons_held('\0',Z_TRIG); + if (uVar3 == 0) { + puVar5 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e2)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar4,0x32,0x9d,(byte *)puVar5,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + } + else { + puVar5 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e2)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar4,0x32,0x9d,(byte *)puVar5,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,0); + if ((&WORD_800409e2)[pPlayer->cur_player_control_type_0 * 10] == 0xac01) { + bVar1 = true; + } + } + uVar3 = get_controller_buttons_held('\0',R_TRIG); + if (uVar3 == 0) { + puVar4 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e6)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0x10e,0x52,(byte *)puVar4,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + else { + puVar4 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e6)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0x10e,0x52,(byte *)puVar4,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + if ((&WORD_800409e6)[pPlayer->cur_player_control_type_0 * 10] == 0xac01) { + bVar1 = true; + } + } + if (((D_80040998 == 1) && (watch_soundrelated_maybe != 0)) && + (uVar3 = get_controller_buttons_held('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS), + uVar3 != 0)) { + uVar3 = get_controller_buttons_held('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS); + if ((uVar3 & uVar3 - 1) == 0) { + puVar5 = (undefined4 *)get_controller_buttons_held('\0',U_CBUTTONS); + if (puVar5 == NULL) { + puVar5 = (undefined4 *)get_controller_buttons_held('\0',D_CBUTTONS); + if (puVar5 == NULL) { + uVar3 = get_controller_buttons_held('\0',L_CBUTTONS); + if (uVar3 == 0) { + puVar5 = (undefined4 *)get_controller_buttons_held('\0',R_CBUTTONS); + if (puVar5 != NULL) { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac2e); + local_54 = puVar5; + } + } + else { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac2f); + local_54 = puVar5; + } + } + else { + local_54 = puVar2; + if ((&WORD_800409e8)[pPlayer->cur_player_control_type_0 * 10] == 0xac05) { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac31); + local_54 = puVar5; + } + } + } + else { + local_54 = local_4; + if ((&WORD_800409e8)[pPlayer->cur_player_control_type_0 * 10] == 0xac05) { + puVar5 = (undefined4 *)get_textptr_for_textID(0xac30); + local_54 = puVar5; + } + } + proc_7F0A9398(puVar4,0x10e,0x6b,(byte *)local_54,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + } + else { + puVar5 = (undefined4 *) + get_textptr_for_textID + ((&WORD_800409e8)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar4,0x10e,0x6b,(byte *)puVar5,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + } + else { + puVar5 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e8)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar4,0x10e,0x6b,(byte *)puVar5,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + uVar3 = get_controller_buttons_held('\0',B_BUTTON); + if (uVar3 == 0) { + puVar2 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e0)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0x10e,0x84,(byte *)puVar2,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + else { + puVar2 = (undefined4 *) + get_textptr_for_textID((&WORD_800409e0)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0x10e,0x84,(byte *)puVar2,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + } + uVar3 = get_controller_buttons_held('\0',A_BUTTON); + if (uVar3 == 0) { + puVar5 = (undefined4 *) + get_textptr_for_textID((&WORD_800409de)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar2,0x10e,0x9d,(byte *)puVar5,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + else { + puVar5 = (undefined4 *) + get_textptr_for_textID((&WORD_800409de)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar2,0x10e,0x9d,(byte *)puVar5,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + } + if (bVar1) { + puVar6 = (uint *)get_textptr_for_textID(0xac08); + proc_7F0A9398(puVar5,0xfa,0xc3,(byte *)puVar6,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + } + else { + puVar6 = (uint *)get_textptr_for_textID + ((&WORD_800409ee)[pPlayer->cur_player_control_type_0 * 10]); + proc_7F0A9398(puVar5,0xfa,0xc3,(byte *)puVar6,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + return puVar6; } -uint * proc_7F0AA7C8(undefined4 *param_1) +void sub_GAME_7F0AA7C8(u32 *DisplayList) { - undefined4 *puVar2; - ulonglong uVar1; - byte *pbVar3; - uint *puVar4; - - puVar2 = microcode_constructor(param_1); - uVar1 = get_controller_buttons_held('\0',0x8000); - if (uVar1 == 0) { - pbVar3 = get_textptr_for_textID(0xac03); - puVar4 = proc_7F0A9398(puVar2,0x5a,0xa7,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - } - else { - pbVar3 = get_textptr_for_textID(0xac03); - puVar4 = proc_7F0A9398(puVar2,0x5a,0xa7,pbVar3,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,0); - } - uVar1 = get_controller_buttons_held('\0',0x4000); - if (uVar1 == 0) { - pbVar3 = get_textptr_for_textID(0xac02); - puVar4 = proc_7F0A9398(puVar4,0x5a,0x95,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - } - else { - pbVar3 = get_textptr_for_textID(0xac02); - puVar4 = proc_7F0A9398(puVar4,0x5a,0x95,pbVar3,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,0); - } - if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 5)) { - pbVar3 = get_textptr_for_textID(0xac00); - } - else { - pbVar3 = get_textptr_for_textID(0xac01); - } - uVar1 = get_controller_buttons_held('\0',0x2000); - if (uVar1 == 0) { - puVar4 = proc_7F0A9398(puVar4,0x5a,0xb9,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - } - else { - puVar4 = proc_7F0A9398(puVar4,0x5a,0xb9,pbVar3,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,0); - } - if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 6)) { - pbVar3 = get_textptr_for_textID(0xac05); - } - else { - pbVar3 = get_textptr_for_textID(0xac06); - } - puVar4 = proc_7F0A9398(puVar4,0x5a,0xcb,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - uVar1 = get_controller_buttons_held('\x01',0x8000); - if (uVar1 == 0) { - pbVar3 = get_textptr_for_textID(0xac03); - puVar4 = proc_7F0A9398(puVar4,0xe6,0xa7,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - else { - pbVar3 = get_textptr_for_textID(0xac03); - puVar4 = proc_7F0A9398(puVar4,0xe6,0xa7,pbVar3,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); - } - uVar1 = get_controller_buttons_held('\x01',0x4000); - if (uVar1 == 0) { - pbVar3 = get_textptr_for_textID(0xac02); - puVar4 = proc_7F0A9398(puVar4,0xe6,0x95,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - else { - pbVar3 = get_textptr_for_textID(0xac02); - puVar4 = proc_7F0A9398(puVar4,0xe6,0x95,pbVar3,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); - } - if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 5)) { - pbVar3 = get_textptr_for_textID(0xac01); - } - else { - pbVar3 = get_textptr_for_textID(0xac00); - } - uVar1 = get_controller_buttons_held('\x01',0x2000); - if (uVar1 == 0) { - puVar4 = proc_7F0A9398(puVar4,0xe6,0xb9,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - } - else { - puVar4 = proc_7F0A9398(puVar4,0xe6,0xb9,pbVar3,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,1); - } - if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 6)) { - pbVar3 = get_textptr_for_textID(0xac06); - } - else { - pbVar3 = get_textptr_for_textID(0xac05); - } - puVar4 = proc_7F0A9398(puVar4,0xe6,0xcb,pbVar3,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,1); - return puVar4; + undefined4 *DL; + u32 uVar1; + byte *pbVar2; + undefined4 *txtptr2; + undefined4 *txtptr; + + microcode_constructor(DisplayList); + uVar1 = get_controller_buttons_held('\0',A_BUTTON); + if (uVar1 == 0) { + txtptr = (undefined4 *)get_textptr_for_textID(0xac03); + proc_7F0A9398(DL,0x5a,0xa7,(byte *)txtptr,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + } + else { + txtptr = (undefined4 *)get_textptr_for_textID(0xac03); + proc_7F0A9398(DL,0x5a,0xa7,(byte *)txtptr,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,0); + } + uVar1 = get_controller_buttons_held('\0',B_BUTTON); + if (uVar1 == 0) { + txtptr2 = (undefined4 *)get_textptr_for_textID(0xac02); + proc_7F0A9398(txtptr,0x5a,0x95,(byte *)txtptr2,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + } + else { + txtptr2 = (undefined4 *)get_textptr_for_textID(0xac02); + proc_7F0A9398(txtptr,0x5a,0x95,(byte *)txtptr2,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,0); + } + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 5)) { + pbVar2 = get_textptr_for_textID(0xac00); + } + else { + pbVar2 = get_textptr_for_textID(0xac01); + } + txtptr = (undefined4 *)get_controller_buttons_held('\0',Z_TRIG); + if (txtptr == NULL) { + proc_7F0A9398(txtptr2,0x5a,0xb9,pbVar2,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + } + else { + proc_7F0A9398(txtptr2,0x5a,0xb9,pbVar2,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,0); + } + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 6)) { + txtptr2 = (undefined4 *)get_textptr_for_textID(0xac05); + } + else { + txtptr2 = (undefined4 *)get_textptr_for_textID(0xac06); + } + proc_7F0A9398(txtptr,0x5a,0xcb,(byte *)txtptr2,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + uVar1 = get_controller_buttons_held('\x01',A_BUTTON); + if (uVar1 == 0) { + txtptr = (undefined4 *)get_textptr_for_textID(0xac03); + proc_7F0A9398(txtptr2,0xe6,0xa7,(byte *)txtptr,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + else { + txtptr = (undefined4 *)get_textptr_for_textID(0xac03); + proc_7F0A9398(txtptr2,0xe6,0xa7,(byte *)txtptr,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + } + uVar1 = get_controller_buttons_held('\x01',B_BUTTON); + if (uVar1 == 0) { + txtptr2 = (undefined4 *)get_textptr_for_textID(0xac02); + proc_7F0A9398(txtptr,0xe6,0x95,(byte *)txtptr2,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + else { + txtptr2 = (undefined4 *)get_textptr_for_textID(0xac02); + proc_7F0A9398(txtptr,0xe6,0x95,(byte *)txtptr2,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + } + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 5)) { + pbVar2 = get_textptr_for_textID(0xac01); + } + else { + pbVar2 = get_textptr_for_textID(0xac00); + } + txtptr = (undefined4 *)get_controller_buttons_held('\x01',Z_TRIG); + if (txtptr == NULL) { + proc_7F0A9398(txtptr2,0xe6,0xb9,pbVar2,(uint)&DAT_00aa00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,1); + } + else { + proc_7F0A9398(txtptr2,0xe6,0xb9,pbVar2,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,1); + } + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 6)) { + pbVar2 = get_textptr_for_textID(0xac06); + } + else { + pbVar2 = get_textptr_for_textID(0xac05); + } + proc_7F0A9398(txtptr,0xe6,0xcb,pbVar2,(uint)&DAT_00aa00b0,0,0xffffffff,0,0,(uint)&DAT_003000b0,1 + ); + return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address -// WARNING: Unknown calling convention yet parameter storage is locked -uint * proc_7F0AADC0(void) +void proc_7F0AADC0(u32 *DL) { - Mtx *in_v0_lo; - int iVar2; - longlong lVar1; - u32 uVar3; - undefined4 *puVar4; - uint *puVar5; - undefined4 *in_a0_lo; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a0_02; - undefined8 extraout_a0_03; - undefined8 extraout_a0_04; - undefined8 extraout_a0_05; - undefined8 extraout_a0_06; - undefined8 extraout_a0_07; - undefined8 extraout_a0_08; - undefined8 uVar6; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - undefined4 *puVar7; - undefined4 *puVar8; - undefined4 *puVar9; - float extraout_f12; - float fovy; - float extraout_f12_00; - float fovy_00; - float extraout_f14; - float aspect; - float extraout_f14_00; - float aspect_00; - undefined4 auStack1268 [55]; - undefined4 auStack1048 [55]; - undefined4 auStack828 [55]; - char cStack606; - char acStack605 [5]; - undefined4 *puStack600; - float afStack596 [16]; - float afStack532 [16]; - u16 uStack466; - int iStack464; - undefined4 uStack460; - undefined4 uStack456; - float afStack452 [16]; - float afStack388 [16]; - float afStack324 [16]; - float afStack260 [16]; - float afStack196 [16]; - float afStack132 [16]; - float afStack68 [16]; - Mtx *pabStack4; - - proc_7F0BD6E0(); - iStack464 = dword_80040B5C; - uStack460 = dword_80040B60; - uStack456 = dword_80040B64; - acStack605[0] = '\0'; - cStack606 = '\x01'; - puVar4 = &dword_80040B68; - puVar7 = auStack828; - do { - puVar9 = puVar4 + 3; - puVar8 = puVar7 + 3; - *puVar7 = *puVar4; - puVar7[1] = puVar4[1]; - puVar7[2] = puVar4[2]; - puVar4 = puVar9; - puVar7 = puVar8; - } while (puVar9 != (undefined4 *)0x80040c40); - *puVar8 = uRam80040c40; - puVar4 = &DAT_80040c44; - puVar7 = auStack1048; - do { - puVar8 = puVar4 + 3; - puVar9 = puVar7 + 3; - *puVar7 = *puVar4; - puVar7[1] = puVar4[1]; - puVar7[2] = puVar4[2]; - puVar4 = puVar8; - puVar7 = puVar9; - } while (puVar8 != (undefined4 *)&dword_80040D1C); - *puVar9 = _dword_80040D1C; - puVar4 = &dword_80040D20; - puVar7 = auStack1268; - do { - puVar8 = puVar4 + 3; - puVar9 = puVar7 + 3; - *puVar7 = *puVar4; - puVar7[1] = puVar4[1]; - puVar7[2] = puVar4[2]; - puVar4 = puVar8; - puVar7 = puVar9; - } while (puVar8 != (undefined4 *)&dword_80040DF8); - *puVar9 = _dword_80040DF8; - pabStack4 = in_v0_lo; - proc_7F0A9684('\0',&dword_80040B2C,(float *)&dword_80040B28,&dword_80040B24); - proc_7F057FD0(afStack68); - dword_80040B24 = dword_80040B24 + (float)dword_80040B28 * (float)dword_80048498 * 0.50000000; - dword_80040B24 = proc_7F0A6A2C(dword_80040B24); - proc_7F058688(dword_80040B24,extraout_a0,afStack132); - if ((dword_800409A8 == 0) || (DAT_80040998 != 1)) { - dword_80040B20 = proc_7F0A95C4(dword_80040B20,0.00000000,extraout_a0_00,extraout_a1,4.00000000); - uVar6 = extraout_a0_03; - } - else { - iVar2 = get_cur_controller_vert_stick_pos('\0'); - dword_80040B20 = - proc_7F0A95C4(dword_80040B20,((float)iVar2 * flt_80058550) / 360.00000000,extraout_a0_01, - extraout_a1_00,4.00000000); - uVar6 = extraout_a0_02; - } - proc_7F058570(-dword_80040B20 - flt_80058554,uVar6,afStack196); - proc_7F0580C8(afStack68,afStack132,(int)afStack260); - proc_7F0580C8(afStack260,afStack196,(int)afStack324); - init_something_copy_posdata_to_it(&iStack464,(int *)afStack260); - proc_7F0580C8(afStack260,afStack324,(int)afStack388); - lVar1 = proc_7F0A4D74(); - if (lVar1 == 0) { - puStack600 = auStack828; - proc_7F059694(afStack532,extraout_f12,extraout_f14,-5.00000000,2000.00000000,-168.00000000, - -5.00000000,0.00000000,-168.00000000,0.00000000); - } - else { - puStack600 = auStack1048; - proc_7F059694(afStack532,32.00000000,extraout_f14,flt_80058558,2500.00000000,32.00000000, - flt_80058558,0.00000000,32.00000000,0.00000000); - } - proc_7F0580C8(afStack532,afStack388,(int)afStack452); - guPerspective(pabStack4,&uStack466,fovy,aspect,50.50000000,1.33333337,1000.00000000); - *in_a0_lo = 0x1030040; - uVar3 = osVirtualToPhysical(pabStack4); - in_a0_lo[1] = uVar3; - puVar4 = proc_7F0A6EE8(in_a0_lo + 2); - if (dword_80040B04 < 0xe0) { - puVar4 = (undefined4 *) - proc_7F06359C(puVar4,afStack452,(longlong)(dword_80040B04 + -6),1,(int)puStack600, - acStack605); - } - else { - puVar4 = (undefined4 *)proc_7F064364(puVar4,afStack452,1,(int)puStack600,acStack605); - } - lVar1 = proc_7F0A4D74(); - if (lVar1 != 0) { - proc_7F0A9684('\x01',&dword_80040B3C,(float *)&dword_80040B38,(float *)&dword_80040B34); - proc_7F057FD0(afStack68); - dword_80040B34 = - (f32)((float)dword_80040B34 + (float)dword_80040B38 * (float)dword_80048498 * 0.50000000); - dword_80040B34 = (f32)proc_7F0A6A2C((float)dword_80040B34); - proc_7F058688((float)dword_80040B34,extraout_a0_04,afStack132); - if ((dword_800409A8 == 0) || (DAT_80040998 != 1)) { - dword_80040B30 = - (f32)proc_7F0A95C4((float)dword_80040B30,0.00000000,extraout_a0_05,extraout_a1_01, - 4.00000000); - uVar6 = extraout_a0_08; + Mtx *in_v0_lo; + s32 sVar1; + u32 uVar2; + undefined4 *puVar3; + undefined8 extraout_a0; + float extraout_a0_lo; + float extraout_a0_lo_00; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a0_02; + float extraout_a0_lo_01; + float extraout_a0_lo_02; + undefined8 extraout_a0_03; + undefined8 extraout_a0_04; + undefined8 uVar4; + undefined4 *puVar5; + undefined4 *puVar6; + undefined4 *puVar7; + u32 *DisplayList; + float extraout_f12; + float fovy; + float extraout_f12_00; + float fovy_00; + float extraout_f14; + float aspect; + float extraout_f14_00; + float aspect_00; + undefined4 auStack1268 [55]; + undefined4 auStack1048 [55]; + undefined4 auStack828 [55]; + char cStack606; + char acStack605 [5]; + undefined4 *puStack600; + float afStack596 [16]; + float afStack532 [16]; + u16 uStack466; + xyzpoint xStack464; + float afStack452 [16]; + float afStack388 [16]; + float afStack324 [16]; + float afStack260 [16]; + float afStack196 [16]; + float afStack132 [16]; + float afStack68 [16]; + Mtx *pabStack4; + + proc_7F0BD6E0(); + xStack464.x = dword_80040B5C; + xStack464.y = dword_80040B60; + xStack464.z = dword_80040B64; + acStack605[0] = '\0'; + cStack606 = '\x01'; + puVar3 = &dword_80040B68; + puVar5 = auStack828; + pabStack4 = in_v0_lo; + do { + puVar7 = puVar3 + 3; + puVar6 = puVar5 + 3; + *puVar5 = *puVar3; + puVar5[1] = puVar3[1]; + puVar5[2] = puVar3[2]; + puVar3 = puVar7; + puVar5 = puVar6; + } while (puVar7 != (undefined4 *)0x80040c40); + *puVar6 = uRam80040c40; + puVar3 = &DAT_80040c44; + puVar5 = auStack1048; + do { + puVar6 = puVar3 + 3; + puVar7 = puVar5 + 3; + *puVar5 = *puVar3; + puVar5[1] = puVar3[1]; + puVar5[2] = puVar3[2]; + puVar3 = puVar6; + puVar5 = puVar7; + } while (puVar6 != (undefined4 *)&dword_80040D1C); + *puVar7 = _dword_80040D1C; + puVar3 = &dword_80040D20; + puVar5 = auStack1268; + do { + puVar6 = puVar3 + 3; + puVar7 = puVar5 + 3; + *puVar5 = *puVar3; + puVar5[1] = puVar3[1]; + puVar5[2] = puVar3[2]; + puVar3 = puVar6; + puVar5 = puVar7; + } while (puVar6 != (undefined4 *)&dword_80040DF8); + *puVar7 = _dword_80040DF8; + proc_7F0A9684('\0',&dword_80040B2C,(float *)&dword_80040B28,&dword_80040B24); + guMtxIdentF_unrolled((float (*) [4] [4])afStack68); + dword_80040B24 = dword_80040B24 + (float)dword_80040B28 * (float)speedgraphframes * 0.50000000; + dword_80040B24 = proc_7F0A6A2C(dword_80040B24); + proc_7F058688(dword_80040B24,extraout_a0,afStack132); + if ((watch_soundrelated_maybe == 0) || (D_80040998 != 1)) { + dword_80040B20 = sub_GAME_7F0A95C4(dword_80040B20,0.00000000,extraout_a0_lo); + uVar4 = extraout_a0_01; } else { - iVar2 = get_cur_controller_vert_stick_pos('\x01'); - dword_80040B30 = - (f32)proc_7F0A95C4((float)dword_80040B30,((float)iVar2 * flt_80058560) / 360.00000000, - extraout_a0_06,extraout_a1_02,4.00000000); - uVar6 = extraout_a0_07; + sVar1 = get_cur_controller_vert_stick_pos('\0'); + dword_80040B20 = + sub_GAME_7F0A95C4(dword_80040B20,((float)sVar1 * 6.28318548) / 360.00000000, + extraout_a0_lo_00); + uVar4 = extraout_a0_00; } - proc_7F058570(-(float)dword_80040B30 - flt_80058564,uVar6,afStack196); + proc_7F058570(-dword_80040B20 - 0.78539819,uVar4,afStack196); proc_7F0580C8(afStack68,afStack132,(int)afStack260); proc_7F0580C8(afStack260,afStack196,(int)afStack324); - init_something_copy_posdata_to_it(&iStack464,(int *)afStack260); + init_something_copy_posdata_to_it(&xStack464,(int *)afStack260); proc_7F0580C8(afStack260,afStack324,(int)afStack388); - proc_7F059694(afStack596,extraout_f12_00,extraout_f14_00,flt_80058568,2500.00000000,32.00000000, - flt_80058568,0.00000000,32.00000000,0.00000000); - proc_7F0580C8(afStack596,afStack388,(int)afStack452); - guPerspective(pabStack4,&uStack466,fovy_00,aspect_00,50.50000000,1.33333337,1000.00000000); - *puVar4 = 0x1030040; - uVar3 = osVirtualToPhysical(pabStack4); - puVar4[1] = uVar3; - puVar4 = proc_7F0A6EE8(puVar4 + 2); - if (dword_80040B04 < 0xe0) { - puVar4 = (undefined4 *) - proc_7F06359C(puVar4,afStack452,(longlong)(dword_80040B04 + -6),1,(int)auStack1268, - &cStack606); + uVar2 = controllerCheckControllerTypesAllowed(); + if (uVar2 == 0) { + puStack600 = auStack828; + proc_7F059694(afStack532,extraout_f12,extraout_f14,-5.00000000,2000.00000000,-168.00000000, + -5.00000000,0.00000000,-168.00000000,0.00000000); } else { - puVar4 = (undefined4 *)proc_7F064364(puVar4,afStack452,1,(int)auStack1268,&cStack606); + puStack600 = auStack1048; + proc_7F059694(afStack532,32.00000000,extraout_f14,495.00000000,2500.00000000,32.00000000, + 495.00000000,0.00000000,32.00000000,0.00000000); } - } - lVar1 = proc_7F0A4D74(); - if (lVar1 == 0) { - puVar5 = proc_7F0A9AB8(puVar4); - } - else { - puVar5 = proc_7F0AA7C8(puVar4); - } - return puVar5; -} - - - -void proc_7F0AB48C(void) - -{ - DAT_80040998 = 0; - return; -} - - - -void proc_7F0AB498(void) - -{ - DAT_8004099c = 0; - return; -} - - - -void proc_7F0AB4A4(void) - -{ - dword_800409A4 = 0; - return; -} - - - -undefined8 proc_7F0AB4B0(undefined8 param_1) - -{ - return param_1; -} - - - -uint * proc_7F0AB4B8(undefined8 param_1,undefined8 param_2) - -{ - int *piVar1; - int iVar2; - uint *puVar5; - ulonglong uVar3; - undefined4 *DL; - byte *pbVar6; - longlong lVar4; - uint uVar7; - int iStack24; - int iStack20; - uint uStack16; - uint auStack12 [3]; - - puVar5 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); - uVar3 = check_watch_page_transistion_running(); - if (uVar3 != 1) { - DL = (undefined4 *)proc_7F0AADC0(); - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - puVar5 = microcode_constructor(DL); - pbVar6 = get_textptr_for_textID(0xac32); - auStack12[0] = 0x40; - uStack16 = 0x1a; - uVar7 = 0xff00b0; - if ((DAT_80040998 == 0) && (uVar7 = 0xa0ffa0f0, dword_800409A8 != 0)) { - uVar7 = 0xffffffff; - } - proc_7F0AE98C(&iStack24,&iStack20,pbVar6,iVar2,piVar1,0); - if ((dword_800409A8 == 0) || (DAT_80040998 != 0)) { - puVar5 = en_text_write_stuff(puVar5,(int *)auStack12,(int *)&uStack16,pbVar6,iVar2,(int)piVar1 - ,uVar7,iStack20,iStack24,0,0); + proc_7F0580C8(afStack532,afStack388,(int)afStack452); + guPerspective(pabStack4,&uStack466,fovy,aspect,50.50000000,1.33333337,1000.00000000); + *DL = 0x1030040; + uVar2 = osVirtualToPhysical(pabStack4); + DL[1] = uVar2; + puVar3 = proc_7F0A6EE8(DL + 2); + if (D_80040B04 < 0xe0) { + DisplayList = (u32 *)proc_7F06359C(puVar3,afStack452,(longlong)(D_80040B04 + -6),1, + (int)puStack600,acStack605); } else { - puVar5 = jp_text_stuff(puVar5,auStack12,&uStack16,pbVar6,iVar2,(int)piVar1,uVar7, - (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); + DisplayList = (u32 *)proc_7F064364(puVar3,afStack452,1,(int)puStack600,acStack605); } - uVar7 = 0xff00b0; - puVar5 = proc_7F0A97D0(puVar5); - pbVar6 = get_textptr_for_textID(0xac33); - lVar4 = proc_7F0A4D74(); - if (lVar4 != 0) { - pbVar6 = get_textptr_for_textID(0xac34); + uVar2 = controllerCheckControllerTypesAllowed(); + if (uVar2 != 0) { + proc_7F0A9684('\x01',&dword_80040B3C,(float *)&dword_80040B38,(float *)&dword_80040B34); + guMtxIdentF_unrolled((float (*) [4] [4])afStack68); + dword_80040B34 = + (f32)((float)dword_80040B34 + + (float)dword_80040B38 * (float)speedgraphframes * 0.50000000); + dword_80040B34 = (f32)proc_7F0A6A2C((float)dword_80040B34); + proc_7F058688((float)dword_80040B34,extraout_a0_02,afStack132); + if ((watch_soundrelated_maybe == 0) || (D_80040998 != 1)) { + dword_80040B30 = + (f32)sub_GAME_7F0A95C4((float)dword_80040B30,0.00000000,extraout_a0_lo_01); + uVar4 = extraout_a0_04; + } + else { + sVar1 = get_cur_controller_vert_stick_pos('\x01'); + dword_80040B30 = + (f32)sub_GAME_7F0A95C4((float)dword_80040B30, + ((float)sVar1 * 6.28318548) / 360.00000000,extraout_a0_lo_02 + ); + uVar4 = extraout_a0_03; + } + proc_7F058570(-(float)dword_80040B30 - 0.78539819,uVar4,afStack196); + proc_7F0580C8(afStack68,afStack132,(int)afStack260); + proc_7F0580C8(afStack260,afStack196,(int)afStack324); + init_something_copy_posdata_to_it(&xStack464,(int *)afStack260); + proc_7F0580C8(afStack260,afStack324,(int)afStack388); + proc_7F059694(afStack596,extraout_f12_00,extraout_f14_00,-505.00000000,2500.00000000, + 32.00000000,-505.00000000,0.00000000,32.00000000,0.00000000); + proc_7F0580C8(afStack596,afStack388,(int)afStack452); + guPerspective(pabStack4,&uStack466,fovy_00,aspect_00,50.50000000,1.33333337,1000.00000000); + *DisplayList = 0x1030040; + uVar2 = osVirtualToPhysical(pabStack4); + DisplayList[1] = uVar2; + puVar3 = proc_7F0A6EE8(DisplayList + 2); + if (D_80040B04 < 0xe0) { + DisplayList = (u32 *)proc_7F06359C(puVar3,afStack452,(longlong)(D_80040B04 + -6),1, + (int)auStack1268,&cStack606); + } + else { + DisplayList = (u32 *)proc_7F064364(puVar3,afStack452,1,(int)auStack1268,&cStack606); + } } - auStack12[0] = 0x40; - uStack16 = 0x2b; - if ((DAT_80040998 == 1) && (uVar7 = 0xa0ffa0f0, dword_800409A8 != 0)) { - uVar7 = 0xffffffff; - } - proc_7F0AE98C(&iStack24,&iStack20,pbVar6,iVar2,piVar1,0); - if ((dword_800409A8 == 0) || (DAT_80040998 != 1)) { - puVar5 = en_text_write_stuff(puVar5,(int *)auStack12,(int *)&uStack16,pbVar6,iVar2,(int)piVar1 - ,uVar7,iStack20,iStack24,0,0); + uVar2 = controllerCheckControllerTypesAllowed(); + if (uVar2 == 0) { + proc_7F0A9AB8(DisplayList); } else { - puVar5 = jp_text_stuff(puVar5,auStack12,&uStack16,pbVar6,iVar2,(int)piVar1,uVar7, - (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); + sub_GAME_7F0AA7C8(DisplayList); } - } - return puVar5; + return; } -int ** proc_7F0AB7A4(undefined4 *param_1,undefined4 param_2) +void zero_D_80040998(void) { - int **ppiVar1; - - *param_1 = param_2; - set_controlstick_lr_disabled(); - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0x2b,NULL); - return ppiVar1; + D_80040998 = 0; + return; +} + + + +void zero_D_8004099C(void) + +{ + D_8004099c = 0; + return; +} + + + +void zero_D_800409A4(void) + +{ + D_800409A4 = 0; + return; +} + + + +u32 return_arg0_7F0AB4B0(u32 param_1) + +{ + return param_1; +} + + + +void proc_7F0AB4B8(u32 *DL,u32 param_2) + +{ + u8 *puVar1; + u8 *puVar2; + u32 *DL_00; + ulonglong uVar3; + undefined4 *puVar4; + uint *DL_01; + byte *pbVar5; + u32 uVar6; + undefined4 *puVar7; + uint uVar8; + int iStack24; + int iStack20; + uint uStack16; + uint auStack12 [3]; + + DL_00 = proc_7F0A714C(DL,param_2,0); + uVar3 = check_watch_page_transistion_running(); + DL_01 = (uint *)uVar3; + if (uVar3 != 1) { + proc_7F0AADC0(DL_00); + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + microcode_constructor(DL_01); + puVar4 = (undefined4 *)get_textptr_for_textID(0xac32); + auStack12[0] = 0x40; + uStack16 = 0x1a; + uVar8 = 0xff00b0; + if ((D_80040998 == 0) && (uVar8 = 0xa0ffa0f0, watch_soundrelated_maybe != 0)) { + uVar8 = 0xffffffff; + } + puVar7 = puVar4; + proc_7F0AE98C(&iStack24,&iStack20,(byte *)puVar4,(int)puVar2,(int *)puVar1,0); + if ((watch_soundrelated_maybe == 0) || (D_80040998 != 0)) { + en_text_write_stuff(DL_01,(int *)auStack12,(int *)&uStack16,(byte *)puVar4,(int)puVar2, + (int)puVar1,uVar8,iStack20,iStack24,0,0); + } + else { + jp_text_stuff(DL_01,auStack12,&uStack16,(byte *)puVar4,(int)puVar2,(int)puVar1,uVar8, + (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); + } + uVar8 = 0xff00b0; + DL_01 = proc_7F0A97D0(puVar7); + pbVar5 = get_textptr_for_textID(0xac33); + uVar6 = controllerCheckControllerTypesAllowed(); + if (uVar6 != 0) { + pbVar5 = get_textptr_for_textID(0xac34); + } + auStack12[0] = 0x40; + uStack16 = 0x2b; + if ((D_80040998 == 1) && (uVar8 = 0xa0ffa0f0, watch_soundrelated_maybe != 0)) { + uVar8 = 0xffffffff; + } + proc_7F0AE98C(&iStack24,&iStack20,pbVar5,(int)puVar2,(int *)puVar1,0); + if ((watch_soundrelated_maybe == 0) || (D_80040998 != 1)) { + en_text_write_stuff(DL_01,(int *)auStack12,(int *)&uStack16,pbVar5,(int)puVar2, + (int)puVar1,uVar8,iStack20,iStack24,0,0); + } + else { + jp_text_stuff(DL_01,auStack12,&uStack16,pbVar5,(int)puVar2,(int)puVar1,uVar8, + (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); + } + } + return; +} + + + +void set_pparam1toparam2_disablejoylr_playsfx(u32 *param_1,u32 param_2) + +{ + *param_1 = param_2; + set_controlstick_lr_disabled(); + play_sfx_a1(ptr_sfx_buf,0x2b,NULL); + return; } @@ -120183,42 +119267,51 @@ int ** proc_7F0AB7A4(undefined4 *param_1,undefined4 param_2) ulonglong proc_7F0AB7D8(int param_1) { - ulonglong uVar1; - bool bVar3; - int **ppiVar2; - - uVar1 = get_controller_buttons_pressed('\0',0x222); - if (((uVar1 == 0) && (bVar3 = proc_7F0A4FB0(), bVar3 == false)) || (dword_800409A8 == 0)) { - uVar1 = get_controller_buttons_pressed('\0',0x111); - if (((uVar1 != 0) || (uVar1 = proc_7F0A4FEC(), uVar1 != 0)) && (dword_800409A8 != 0)) { - uVar1 = SEXT48((int)(&word_80040A7C + param_1 * 6)); - if ((&cur_player_look_vertical_inverted)[param_1 * 3] == 0) { - ppiVar2 = proc_7F0AB7A4(&cur_player_look_vertical_inverted + param_1 * 3,1); - uVar1 = SEXT48((int)ppiVar2); - } - else { - if (((&cur_player_look_vertical_inverted)[param_1 * 3] == 1) && - (*(short *)(&DAT_80040a82 + param_1 * 0xc) != 0)) { - ppiVar2 = proc_7F0AB7A4(&cur_player_look_vertical_inverted + param_1 * 3,2); - uVar1 = SEXT48((int)ppiVar2); + u32 uVar2; + bool bVar3; + ulonglong uVar1; + + uVar2 = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG|L_JPAD); + if (((uVar2 == 0) && (bVar3 = sub_GAME_7F0A4FB0(), bVar3 == false)) || + (watch_soundrelated_maybe == 0)) { + uVar2 = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG|R_JPAD); + uVar1 = SEXT48((int)uVar2); + if (uVar1 == 0) { + bVar3 = proc_7F0A4FEC(); + uVar1 = SEXT18(bVar3); + if (uVar1 == 0) { + return 0; + } + } + if (watch_soundrelated_maybe != 0) { + uVar1 = SEXT48((int)(&word_80040A7C + param_1 * 6)); + if ((&cur_player_look_vertical_inverted)[param_1 * 3] == 0) { + set_pparam1toparam2_disablejoylr_playsfx + (&cur_player_look_vertical_inverted + param_1 * 3,1); + } + else { + if (((&cur_player_look_vertical_inverted)[param_1 * 3] == 1) && + (*(short *)(&DAT_80040a82 + param_1 * 0xc) != 0)) { + set_pparam1toparam2_disablejoylr_playsfx + (&cur_player_look_vertical_inverted + param_1 * 3,2); + } + } } - } - } - } - else { - uVar1 = SEXT48((int)(&word_80040A7C + param_1 * 6)); - if ((&cur_player_look_vertical_inverted)[param_1 * 3] == 1) { - ppiVar2 = proc_7F0AB7A4(&cur_player_look_vertical_inverted + param_1 * 3,0); - uVar1 = SEXT48((int)ppiVar2); } else { - if ((&cur_player_look_vertical_inverted)[param_1 * 3] == 2) { - ppiVar2 = proc_7F0AB7A4(&cur_player_look_vertical_inverted + param_1 * 3,1); - uVar1 = SEXT48((int)ppiVar2); - } + uVar1 = SEXT48((int)(&word_80040A7C + param_1 * 6)); + if ((&cur_player_look_vertical_inverted)[param_1 * 3] == 1) { + set_pparam1toparam2_disablejoylr_playsfx + (&cur_player_look_vertical_inverted + param_1 * 3,0); + } + else { + if ((&cur_player_look_vertical_inverted)[param_1 * 3] == 2) { + set_pparam1toparam2_disablejoylr_playsfx + (&cur_player_look_vertical_inverted + param_1 * 3,1); + } + } } - } - return uVar1; + return uVar1; } @@ -120226,112 +119319,113 @@ ulonglong proc_7F0AB7D8(int param_1) uint * proc_7F0AB908(undefined4 *param_1,uint param_2,int param_3,longlong param_4) { - u32 uVar1; - byte *pbVar2; - uint *puVar3; - uint uVar4; - undefined2 *puVar5; - undefined *puVar6; - undefined *puVar7; - uint *local_res0; - uint local_14; - undefined *local_c; - - puVar7 = &DAT_00800080; - puVar6 = &DAT_00800080; - local_c = &DAT_00800080; - if (j_text_trigger == 0) { - uVar4 = 0xb4; - local_14 = 0xe1; - } - else { - uVar4 = 0xaa; - local_14 = 0xdc; - } - if (param_4 == 0) { - puVar5 = &word_80040A7C + param_3 * 6; - uVar1 = (&cur_player_look_vertical_inverted)[param_3 * 3]; - if (uVar1 == 0) { - puVar6 = (undefined *)0xff00b0; + u32 uVar1; + undefined4 *puVar2; + uint *puVar3; + uint uVar4; + undefined2 *puVar5; + undefined *puVar6; + undefined *puVar7; + uint *local_res0; + uint local_14; + undefined *local_c; + + puVar7 = &DAT_00800080; + puVar6 = &DAT_00800080; + local_c = &DAT_00800080; + if (j_text_trigger == 0) { + uVar4 = 0xb4; + local_14 = 0xe1; } else { - if (uVar1 == 1) { - puVar7 = (undefined *)0xff00b0; - } - else { - if (uVar1 == 2) { - local_c = (undefined *)0xff00b0; - } - } + uVar4 = 0xaa; + local_14 = 0xdc; } - } - else { - if (param_4 == 1) { - puVar5 = &word_80040A7C + param_3 * 6; - uVar1 = (&cur_player_look_vertical_inverted)[param_3 * 3]; - if (uVar1 == 0) { - puVar6 = (undefined *)0xff00b0; - } - else { - if (uVar1 == 1) { - puVar7 = (undefined *)0xff00b0; - } - else { - if (uVar1 == 2) { - local_c = (undefined *)0xff00b0; - } - } - } - } - else { - if (param_4 == 2) { - proc_7F0AB7D8(param_3); + if (param_4 == 0) { puVar5 = &word_80040A7C + param_3 * 6; uVar1 = (&cur_player_look_vertical_inverted)[param_3 * 3]; - puVar6 = &DAT_00800080; - puVar7 = &DAT_00800080; if (uVar1 == 0) { - puVar6 = (undefined *)0xa0ffa0f0; + puVar6 = (undefined *)0xff00b0; } else { - if (uVar1 == 1) { - puVar7 = (undefined *)0xa0ffa0f0; - } - else { - if (uVar1 == 2) { - local_c = (undefined *)0xa0ffa0f0; + if (uVar1 == 1) { + puVar7 = (undefined *)0xff00b0; + } + else { + if (uVar1 == 2) { + local_c = (undefined *)0xff00b0; + } } - } } - } - else { - puVar5 = &word_80040A7C + param_3 * 6; - puVar6 = puVar7; - } - } - } - if (puVar5[3] == 0) { - uVar4 = 200; - if (j_text_trigger == 0) { - local_14 = 0xfa; } else { - uVar4 = 0xbe; - local_14 = 0xfa; + if (param_4 == 1) { + puVar5 = &word_80040A7C + param_3 * 6; + uVar1 = (&cur_player_look_vertical_inverted)[param_3 * 3]; + if (uVar1 == 0) { + puVar6 = (undefined *)0xff00b0; + } + else { + if (uVar1 == 1) { + puVar7 = (undefined *)0xff00b0; + } + else { + if (uVar1 == 2) { + local_c = (undefined *)0xff00b0; + } + } + } + } + else { + if (param_4 == 2) { + proc_7F0AB7D8(param_3); + puVar5 = &word_80040A7C + param_3 * 6; + uVar1 = (&cur_player_look_vertical_inverted)[param_3 * 3]; + puVar6 = &DAT_00800080; + puVar7 = &DAT_00800080; + if (uVar1 == 0) { + puVar6 = (undefined *)0xa0ffa0f0; + } + else { + if (uVar1 == 1) { + puVar7 = (undefined *)0xa0ffa0f0; + } + else { + if (uVar1 == 2) { + local_c = (undefined *)0xa0ffa0f0; + } + } + } + } + else { + puVar5 = &word_80040A7C + param_3 * 6; + puVar6 = puVar7; + } + } } - } - pbVar2 = get_textptr_for_textID(puVar5[1]); - puVar3 = proc_7F0A9398(param_1,uVar4,param_2,pbVar2,(uint)puVar6,0,0xffffffff,1,0, - (uint)&DAT_003000b0,0); - pbVar2 = get_textptr_for_textID(puVar5[2]); - local_res0 = proc_7F0A9398(puVar3,local_14,param_2,pbVar2,(uint)puVar7,0,0xffffffff,1,0, - (uint)&DAT_003000b0,0); - if (puVar5[3] != 0) { - pbVar2 = get_textptr_for_textID(puVar5[3]); - local_res0 = proc_7F0A9398(local_res0,0x10e,param_2,pbVar2,(uint)local_c,0,0xffffffff,1,0, - (uint)&DAT_003000b0,0); - } - return local_res0; + if (puVar5[3] == 0) { + uVar4 = 200; + if (j_text_trigger == 0) { + local_14 = 0xfa; + } + else { + uVar4 = 0xbe; + local_14 = 0xfa; + } + } + puVar2 = (undefined4 *)get_textptr_for_textID(puVar5[1]); + proc_7F0A9398(param_1,uVar4,param_2,(byte *)puVar2,(uint)puVar6,0,0xffffffff,1,0, + (uint)&DAT_003000b0,0); + local_res0 = (uint *)get_textptr_for_textID(puVar5[2]); + proc_7F0A9398(puVar2,local_14,param_2,(byte *)local_res0,(uint)puVar7,0,0xffffffff,1,0, + (uint)&DAT_003000b0,0); + if (puVar5[3] != 0) { + puVar3 = (uint *)get_textptr_for_textID(puVar5[3]); + proc_7F0A9398(local_res0,0x10e,param_2,(byte *)puVar3,(uint)local_c,0,0xffffffff,1,0, + (uint)&DAT_003000b0,0); + local_res0 = puVar3; + } + return local_res0; } @@ -120339,42 +119433,48 @@ uint * proc_7F0AB908(undefined4 *param_1,uint param_2,int param_3,longlong param uint * proc_7F0ABC1C(undefined4 *param_1) { - uint *puVar1; - byte *pbVar2; - uint uVar3; - int iVar4; - u16 *puVar5; - - puVar1 = microcode_constructor(param_1); - puVar5 = &word_80040A7C; - iVar4 = 0; - uVar3 = 0x50; - do { - if (iVar4 + 2 == DAT_8004099c) { - if (dword_800409A8 == 0) { - pbVar2 = get_textptr_for_textID(*puVar5); - puVar1 = proc_7F0A9398(puVar1,0x40,uVar3,pbVar2,0xa0ffa0f0,0,0xffffffff,0,0, - (uint)&DAT_003000b0,0); - puVar1 = proc_7F0AB908(puVar1,uVar3,iVar4,1); - } - else { - pbVar2 = get_textptr_for_textID(*puVar5); - puVar1 = proc_7F0A9398(puVar1,0x40,uVar3,pbVar2,0xffffffff,1,(uint)&DAT_007000a0,0,0, - (uint)&DAT_003000b0,0); - puVar1 = proc_7F0AB908(puVar1,uVar3,iVar4,2); - } - } - else { - pbVar2 = get_textptr_for_textID(*puVar5); - puVar1 = proc_7F0A9398(puVar1,0x40,uVar3,pbVar2,0xff00b0,0,0xffffffff,0,0,(uint)&DAT_003000b0, - 0); - puVar1 = proc_7F0AB908(puVar1,uVar3,iVar4,0); - } - iVar4 += 1; - puVar5 = puVar5 + 6; - uVar3 += 0xf; - } while (iVar4 != 8); - return puVar1; + longlong in_v0; + undefined4 *puVar1; + uint *puVar2; + undefined4 *puVar3; + uint uVar4; + int iVar5; + TEXTFILESTRINGS *pTVar6; + + microcode_constructor(param_1); + pTVar6 = &word_80040A7C; + iVar5 = 0; + uVar4 = 0x50; + do { + puVar3 = (undefined4 *)in_v0; + if (iVar5 + 2 == D_8004099c) { + if (watch_soundrelated_maybe == 0) { + puVar1 = (undefined4 *)get_textptr_for_textID(*pTVar6); + proc_7F0A9398(puVar3,0x40,uVar4,(byte *)puVar1,0xa0ffa0f0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + puVar2 = proc_7F0AB908(puVar1,uVar4,iVar5,1); + in_v0 = (longlong)(int)puVar2; + } + else { + puVar1 = (undefined4 *)get_textptr_for_textID(*pTVar6); + proc_7F0A9398(puVar3,0x40,uVar4,(byte *)puVar1,0xffffffff,1,(uint)&DAT_007000a0,0,0, + (uint)&DAT_003000b0,0); + puVar2 = proc_7F0AB908(puVar1,uVar4,iVar5,2); + in_v0 = (longlong)(int)puVar2; + } + } + else { + puVar1 = (undefined4 *)get_textptr_for_textID(*pTVar6); + proc_7F0A9398(puVar3,0x40,uVar4,(byte *)puVar1,0xff00b0,0,0xffffffff,0,0, + (uint)&DAT_003000b0,0); + puVar2 = proc_7F0AB908(puVar1,uVar4,iVar5,0); + in_v0 = (longlong)(int)puVar2; + } + iVar5 += 1; + pTVar6 = pTVar6 + 6; + uVar4 += 0xf; + } while (iVar5 != 8); + return (uint *)in_v0; } @@ -120382,67 +119482,71 @@ uint * proc_7F0ABC1C(undefined4 *param_1) uint * proc_7F0ABDFC(undefined8 param_1,undefined8 param_2) { - int *piVar1; - int iVar2; - uint uVar3; - uint *puVar5; - ulonglong uVar4; - undefined4 *DL; - int iStack24; - int iStack20; - uint uStack16; - uint uStack12; - byte *pbStack8; - uint uStack4; - - puVar5 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); - uVar4 = check_watch_page_transistion_running(); - if (uVar4 == 1) { - return puVar5; - } - proc_7F0A91C8(); - DL = (undefined4 *)proc_7F0A8FEC(); - iVar2 = D_80040EB0; - piVar1 = D_80040EAC; - puVar5 = microcode_constructor(DL); - pbStack8 = get_textptr_for_textID(0xac35); - uStack12 = 0x40; - uStack16 = 0x25; - uStack4 = 0xff00b0; - if ((DAT_8004099c == 0) && (uStack4 = 0xa0ffa0f0, dword_800409A8 != 0)) { - uStack4 = 0xffffffff; - } - proc_7F0AE98C(&iStack24,&iStack20,pbStack8,iVar2,piVar1,0); - uVar3 = uStack4; - if (dword_800409A8 != 0) { - if (DAT_8004099c == 0) { - uStack4 = 0xff00b0; - puVar5 = jp_text_stuff(puVar5,&uStack12,&uStack16,pbStack8,iVar2,(int)piVar1,uVar3, - (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); - goto LAB_7f0abf9c; + u8 *puVar1; + u8 *puVar2; + uint uVar3; + u32 *puVar5; + ulonglong uVar4; + uint *DL; + uint *puVar6; + undefined4 *puVar7; + int iStack24; + int iStack20; + uint uStack16; + uint uStack12; + uint *puStack8; + uint uStack4; + + puVar5 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); + uVar4 = check_watch_page_transistion_running(); + if (uVar4 == 1) { + return puVar5; } - } - uStack4 = 0xff00b0; - puVar5 = en_text_write_stuff(puVar5,(int *)&uStack12,(int *)&uStack16,pbStack8,iVar2,(int)piVar1, - uVar3,iStack20,iStack24,0,0); + proc_7F0A91C8(); + DL = (uint *)proc_7F0A8FEC(); + puVar2 = ptrSecondFontTableSmall; + puVar1 = ptrFirstFontTableSmall; + microcode_constructor(DL); + puVar6 = (uint *)get_textptr_for_textID(0xac35); + uStack12 = 0x40; + uStack16 = 0x25; + uStack4 = 0xff00b0; + if ((D_8004099c == 0) && (uStack4 = 0xa0ffa0f0, watch_soundrelated_maybe != 0)) { + uStack4 = 0xffffffff; + } + puStack8 = puVar6; + proc_7F0AE98C(&iStack24,&iStack20,(byte *)puVar6,(int)puVar2,(int *)puVar1,0); + uVar3 = uStack4; + if (watch_soundrelated_maybe != 0) { + if (D_8004099c == 0) { + uStack4 = 0xff00b0; + jp_text_stuff(DL,&uStack12,&uStack16,(byte *)puStack8,(int)puVar2,(int)puVar1,uVar3, + (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); + goto LAB_7f0abf9c; + } + } + uStack4 = 0xff00b0; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)puStack8,(int)puVar2, + (int)puVar1,uVar3,iStack20,iStack24,0,0); LAB_7f0abf9c: - pbStack8 = get_textptr_for_textID(0xac36); - uStack12 = 0x40; - uStack16 = 0x3b; - if ((DAT_8004099c == 1) && (uStack4 = 0xa0ffa0f0, dword_800409A8 != 0)) { - uStack4 = 0xffffffff; - } - proc_7F0AE98C(&iStack24,&iStack20,pbStack8,iVar2,piVar1,0); - if ((dword_800409A8 == 0) || (DAT_8004099c != 1)) { - puVar5 = en_text_write_stuff(puVar5,(int *)&uStack12,(int *)&uStack16,pbStack8,iVar2,(int)piVar1 - ,uStack4,iStack20,iStack24,0,0); - } - else { - puVar5 = jp_text_stuff(puVar5,&uStack12,&uStack16,pbStack8,iVar2,(int)piVar1,uStack4, - (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); - } - puVar5 = proc_7F0ABC1C(puVar5); - return puVar5; + puVar7 = (undefined4 *)get_textptr_for_textID(0xac36); + uStack12 = 0x40; + uStack16 = 0x3b; + if ((D_8004099c == 1) && (uStack4 = 0xa0ffa0f0, watch_soundrelated_maybe != 0)) { + uStack4 = 0xffffffff; + } + puStack8 = puVar7; + proc_7F0AE98C(&iStack24,&iStack20,(byte *)puVar7,(int)puVar2,(int *)puVar1,0); + if ((watch_soundrelated_maybe == 0) || (D_8004099c != 1)) { + en_text_write_stuff(puVar6,(int *)&uStack12,(int *)&uStack16,(byte *)puStack8,(int)puVar2, + (int)puVar1,uStack4,iStack20,iStack24,0,0); + } + else { + jp_text_stuff(puVar6,&uStack12,&uStack16,(byte *)puStack8,(int)puVar2,(int)puVar1,uStack4, + (uint)&DAT_007000a0,iStack20 + 1,iStack24,0,0); + } + DL = proc_7F0ABC1C(puVar7); + return DL; } @@ -120450,22 +119554,22 @@ LAB_7f0abf9c: int proc_7F0AC0E8(char *param_1) { - char cVar1; - int iVar2; - - cVar1 = *param_1; - iVar2 = 0; - while (cVar1 != '\0') { - if (cVar1 == '\n') { - iVar2 += 1; - cVar1 = param_1[1]; + char cVar1; + int count; + + cVar1 = *param_1; + count = 0; + while (cVar1 != '\0') { + if (cVar1 == '\n') { + count += 1; + cVar1 = param_1[1]; + } + else { + cVar1 = param_1[1]; + } + param_1 = param_1 + 1; } - else { - cVar1 = param_1[1]; - } - param_1 = param_1 + 1; - } - return iVar2; + return count; } @@ -120473,30 +119577,30 @@ int proc_7F0AC0E8(char *param_1) char * proc_7F0AC120(char *param_1) { - char cVar1; - char *pcVar2; - char *pcVar3; - - cVar1 = *param_1; - pcVar2 = param_1; - while (cVar1 != '\0') { - if (cVar1 == '\n') { - pcVar3 = param_1 + 1; - if (param_1[1] == '\0') { - cVar1 = param_1[2]; - } - else { - cVar1 = param_1[2]; - pcVar2 = pcVar3; - } + char cVar1; + char *pcVar2; + char *pcVar3; + + cVar1 = *param_1; + pcVar2 = param_1; + while (cVar1 != '\0') { + if (cVar1 == '\n') { + pcVar3 = param_1 + 1; + if (param_1[1] == '\0') { + cVar1 = param_1[2]; + } + else { + cVar1 = param_1[2]; + pcVar2 = pcVar3; + } + } + else { + cVar1 = param_1[1]; + pcVar3 = param_1; + } + param_1 = pcVar3 + 1; } - else { - cVar1 = param_1[1]; - pcVar3 = param_1; - } - param_1 = pcVar3 + 1; - } - return pcVar2; + return pcVar2; } @@ -120504,287 +119608,297 @@ char * proc_7F0AC120(char *param_1) uint * proc_7F0AC168(undefined8 param_1,undefined8 param_2) { - ulonglong uVar1; - undefined4 *puVar2; - byte *__format; - int objective; - DIFFICULTY DVar3; - DIFFICULTY DVar4; - char *pcVar5; - size_t sVar6; - int iVar7; - uint *puVar8; - short sVar9; - short sVar10; - int iVar11; - undefined4 uVar12; - char *__s; - undefined4 *puVar13; - undefined4 *puVar14; - undefined4 *puVar15; - int iVar16; - int iVar17; - longlong objective_00; - uint *puStackX0; - int iStack3444; - uint uStack3428; - undefined uStack3424; - int iStack3224; - int aiStack3220 [4]; - byte *pbStack3204; - byte *pbStack3200; - byte *pbStack3196; - byte abStack3192 [32]; - undefined4 auStack3160 [750]; - int iStack160; - int *piStack156; - int iStack152; - int iStack148; - uint uStack144; - uint uStack140; - uint uStack136; - uint uStack132; - undefined4 auStack128 [15]; - undefined4 uStack68; - undefined4 uStack64; - undefined4 auStack60 [15]; - - puStackX0 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); - uVar1 = check_watch_page_transistion_running(); - if (uVar1 != 1) { - puVar2 = &dword_80040DFC; - puVar14 = auStack60; - do { - puVar15 = puVar2 + 3; - *puVar14 = *puVar2; - puVar14[1] = puVar2[1]; - puVar14[2] = puVar2[2]; - puVar2 = puVar15; - puVar14 = puVar14 + 3; - } while (puVar15 != &dword_80040E38); - uStack68 = dword_80040E38; - uStack64 = dword_80040E3C; - puVar2 = &dword_80040E40; - puVar14 = auStack128; - do { - puVar15 = puVar2 + 3; - *puVar14 = *puVar2; - puVar14[1] = puVar2[1]; - puVar14[2] = puVar2[2]; - puVar2 = puVar15; - puVar14 = puVar14 + 3; - } while (puVar15 != (undefined4 *)&dword_80040E7C); - iStack148 = 0; - iStack152 = 0; - piStack156 = D_80040EAC; - iStack160 = D_80040EB0; - puVar2 = (undefined4 *)"\n"; - puVar14 = auStack3160; - do { - puVar15 = puVar2 + 3; - *puVar14 = *puVar2; - puVar14[1] = puVar2[1]; - puVar14[2] = puVar2[2]; - puVar2 = puVar15; - puVar14 = puVar14 + 3; - } while (puVar15 != null_ARRAY_80058378); - pbStack3196 = get_textptr_for_textID(0xac28); - pbStack3200 = get_textptr_for_textID(0xac29); - pbStack3204 = get_textptr_for_textID(0xac37); - __format = (byte *)get_ptr_text_for_watch_breifing_page(BRIEFING_TITLE); - puVar2 = microcode_constructor(puStackX0); - proc_7F0AE98C(&iStack148,&iStack152,__format,iStack160,piStack156,0); - iVar11 = -iStack152 + 0xaa; - if (iVar11 < 0) { - iVar11 = -iStack152 + 0xab; - } - uStack132 = (iVar11 >> 1) + 0x4b; - uStack140 = uStack132 + iStack152; - uStack144 = iStack148 + 0x1e; - uStack136 = 0x1e; - puVar2 = draw_blackbox_to_screen(puVar2,&uStack132,&uStack136,&uStack140,&uStack144); - puStackX0 = en_text_write_stuff(puVar2,(int *)&uStack132,(int *)&uStack136,__format,iStack160, - (int)piStack156,0xa0ffa0f0,iStack152,iStack148,0,0); - uStack132 = 0x41; - switch(dword_800409A0) { - case 0: - __format = get_textptr_for_textID(0xac38); - sprintf((char *)abStack3192,(char *)__format); - __format = (byte *)get_ptr_text_for_watch_breifing_page(BRIEFING_OVERVIEW); - proc_7F0AEB64(0xd2,__format,(byte *)auStack3160,iStack160,piStack156); - proc_7F0A6618(); - break; - case 1: - __format = get_textptr_for_textID(0xac39); - sprintf((char *)abStack3192,(char *)__format); - __format = (byte *)get_ptr_text_for_watch_breifing_page(BRIEFING_M); - proc_7F0AEB64(0xd2,__format,(byte *)auStack3160,iStack160,piStack156); - proc_7F0A66A0(); - break; - case 2: - __format = get_textptr_for_textID(0xac3a); - sprintf((char *)abStack3192,(char *)__format); - __format = (byte *)get_ptr_text_for_watch_breifing_page(BRIEFING_Q); - proc_7F0AEB64(0xd2,__format,(byte *)auStack3160,iStack160,piStack156); - proc_7F0A672C(); - break; - case 3: - __format = get_textptr_for_textID(0xac3b); - sprintf((char *)abStack3192,(char *)__format); - __format = (byte *)get_ptr_text_for_watch_breifing_page(BRIEFING_MONEYPENNY); - proc_7F0AEB64(0xd2,__format,(byte *)auStack3160,iStack160,piStack156); - proc_7F0A67BC(); - break; - case 4: - puVar2 = null_ARRAY_80058378; - puVar14 = &uStack3424; - do { - puVar13 = puVar14; - puVar15 = puVar2; - *puVar13 = *puVar15; - puVar13[1] = puVar15[1]; - puVar13[2] = puVar15[2]; - puVar2 = puVar15 + 3; - puVar14 = puVar13 + 3; - } while (puVar15 + 3 != (undefined4 *)0x80058438); - iVar11 = 1; - puVar13[3] = uRam80058438; - iVar17 = 0; - uVar12 = 5; - puVar13[4] = puVar15[4]; - iStack3444 = 0; - if (j_text_trigger != 0) { - uVar12 = 1; - } - proc_7F0ACBA0(uVar12); - __format = get_textptr_for_textID(0xac3c); - sprintf((char *)abStack3192,(char *)__format); - objective_00 = 0; - objective = add_objective(); - if (0 < objective) { + ulonglong uVar1; + u8 *__format; + DIFFICULTY DVar2; + DIFFICULTY DVar3; + size_t sVar4; + int iVar5; + byte *pbVar6; + short sVar7; + short sVar8; + int iVar9; + undefined4 uVar10; + char *__s; + undefined4 *puVar11; + undefined4 *puVar12; + undefined4 *text; + undefined4 *puVar13; + int iVar14; + int iVar15; + int objective; + u32 *puStackX0; + int iStack3444; + uint uStack3428; + undefined uStack3424; + int iStack3224; + int aiStack3220 [4]; + u8 *puStack3204; + u8 *puStack3200; + u8 *puStack3196; + byte abStack3192 [32]; + undefined4 auStack3160 [750]; + u8 *puStack160; + int *piStack156; + int iStack152; + int iStack148; + uint uStack144; + uint uStack140; + uint uStack136; + uint uStack132; + undefined4 auStack128 [15]; + undefined4 uStack68; + undefined4 uStack64; + undefined4 auStack60 [15]; + + puStackX0 = proc_7F0A714C(param_1._4_4_,param_2._4_4_,0); + uVar1 = check_watch_page_transistion_running(); + if (uVar1 != 1) { + text = &dword_80040DFC; + puVar12 = auStack60; do { - objective = (int)objective_00; - DVar3 = get_difficulty_for_objective(objective); - DVar4 = get_current_difficulty(); - if (DVar3 <= DVar4) { - iVar16 = 0; - pcVar5 = (char *)get_text_for_objective(objective); - uStack3424 = 0; - if (0 < iVar11) { - do { - string_load_parse_something((char *)&uStack3424," \n"); - iVar16 += 1; - } while (iVar16 != iVar11); - } - iVar16 = 0; - if (0 < iVar17) { - do { - string_load_parse_something((char *)&uStack3424," \n\n"); - iVar16 += 1; - } while (iVar16 != iVar17); - } - iVar16 = 0; - sVar6 = strlen((char *)&uStack3424); - __s = (char *)(sVar6 + (int)&uStack3424); - sprintf(__s,"%c: ",iStack3444 + 0x61); - string_load_parse_something((char *)&uStack3424,pcVar5); - aiStack3220[0] = 5; + puVar13 = text + 3; + *puVar12 = *text; + puVar12[1] = text[1]; + puVar12[2] = text[2]; + text = puVar13; + puVar12 = puVar12 + 3; + } while (puVar13 != &dword_80040E38); + uStack68 = dword_80040E38; + uStack64 = dword_80040E3C; + text = &dword_80040E40; + puVar12 = auStack128; + do { + puVar13 = text + 3; + *puVar12 = *text; + puVar12[1] = text[1]; + puVar12[2] = text[2]; + text = puVar13; + puVar12 = puVar12 + 3; + } while (puVar13 != (undefined4 *)&dword_80040E7C); + iStack148 = 0; + iStack152 = 0; + piStack156 = (int *)ptrFirstFontTableSmall; + puStack160 = ptrSecondFontTableSmall; + text = (undefined4 *)"\n"; + puVar12 = auStack3160; + do { + puVar13 = text + 3; + *puVar12 = *text; + puVar12[1] = text[1]; + puVar12[2] = text[2]; + text = puVar13; + puVar12 = puVar12 + 3; + } while (puVar13 != null_ARRAY_80058378); + puStack3196 = get_textptr_for_textID(0xac28); + puStack3200 = get_textptr_for_textID(0xac29); + puStack3204 = get_textptr_for_textID(0xac37); + puVar12 = (undefined4 *)get_ptr_text_for_watch_breifing_page(BRIEFING_TITLE); + text = puVar12; + microcode_constructor(puStackX0); + proc_7F0AE98C(&iStack148,&iStack152,(byte *)puVar12,(int)puStack160,piStack156,0); + iVar9 = -iStack152 + 0xaa; + if (iVar9 < 0) { + iVar9 = -iStack152 + 0xab; + } + uStack132 = (iVar9 >> 1) + 0x4b; + uStack140 = uStack132 + iStack152; + uStack144 = iStack148 + 0x1e; + uStack136 = 0x1e; + puStackX0 = draw_blackbox_to_screen(text,&uStack132,&uStack136,&uStack140,&uStack144); + en_text_write_stuff(puStackX0,(int *)&uStack132,(int *)&uStack136,(byte *)puVar12, + (int)puStack160,(int)piStack156,0xa0ffa0f0,iStack152,iStack148,0,0); + uStack132 = 0x41; + text = puStackX0; + switch(dword_800409A0) { + case 0: + __format = get_textptr_for_textID(0xac38); + sprintf((char *)abStack3192,(char *)__format); + text = (undefined4 *)get_ptr_text_for_watch_breifing_page(BRIEFING_OVERVIEW); + find_width_word_in_string + (0xd2,(byte *)text,(byte *)auStack3160,(int)puStack160,piStack156); + proc_7F0A6618(); + break; + case 1: + __format = get_textptr_for_textID(0xac39); + sprintf((char *)abStack3192,(char *)__format); + text = (undefined4 *)get_ptr_text_for_watch_breifing_page(BRIEFING_M); + find_width_word_in_string + (0xd2,(byte *)text,(byte *)auStack3160,(int)puStack160,piStack156); + proc_7F0A66A0(); + break; + case 2: + __format = get_textptr_for_textID(0xac3a); + sprintf((char *)abStack3192,(char *)__format); + text = (undefined4 *)get_ptr_text_for_watch_breifing_page(BRIEFING_Q); + find_width_word_in_string + (0xd2,(byte *)text,(byte *)auStack3160,(int)puStack160,piStack156); + proc_7F0A672C(); + break; + case 3: + __format = get_textptr_for_textID(0xac3b); + sprintf((char *)abStack3192,(char *)__format); + text = (undefined4 *)get_ptr_text_for_watch_breifing_page(BRIEFING_MONEYPENNY); + find_width_word_in_string + (0xd2,(byte *)text,(byte *)auStack3160,(int)puStack160,piStack156); + proc_7F0A67BC(); + break; + case 4: + text = null_ARRAY_80058378; + puVar12 = &uStack3424; + do { + puVar11 = puVar12; + puVar13 = text; + *puVar11 = *puVar13; + puVar11[1] = puVar13[1]; + puVar11[2] = puVar13[2]; + text = puVar13 + 3; + puVar12 = puVar11 + 3; + } while (puVar13 + 3 != (undefined4 *)0x80058438); + iVar9 = 1; + puVar11[3] = uRam80058438; + iVar15 = 0; + uVar10 = 5; + puVar11[4] = puVar13[4]; + iStack3444 = 0; if (j_text_trigger != 0) { - aiStack3220[0] = 1; + uVar10 = 1; } - aiStack3220[0] += uStack136; - iStack3224 = 0x3c; - sVar9 = get_video2_settings_txtClipW(); - sVar10 = get_video2_settings_txtClipH(); - puVar8 = en_text_write_stuff(puStackX0,&iStack3224,aiStack3220,(byte *)&uStack3424, - iStack160,(int)piStack156,0xff00b0,(int)sVar9,(int)sVar10,0 - ,10); - iVar7 = proc_7F0AC0E8(__s); - iVar11 += iVar7; - __format = (byte *)proc_7F0AC120(__s); - proc_7F0AE98C(&iStack148,&iStack152,__format,iStack160,piStack156,10); - sVar9 = get_video2_settings_txtClipW(); - iVar7 = (int)sVar9; - if (sVar9 < 0) { - iVar7 += 1; + setTextOverlapCorrection(uVar10); + __format = get_textptr_for_textID(0xac3c); + sprintf((char *)abStack3192,(char *)__format); + objective = 0; + text = (undefined4 *)add_objective(); + if (0 < (int)text) { + do { + DVar2 = get_difficulty_for_objective(objective); + DVar3 = get_current_difficulty(); + if (DVar2 <= DVar3) { + iVar14 = 0; + __format = get_text_for_objective(objective); + uStack3424 = 0; + if (0 < iVar9) { + do { + string_append_from_obseg_textbank((char *)&uStack3424," \n"); + iVar14 += 1; + } while (iVar14 != iVar9); + } + iVar14 = 0; + if (0 < iVar15) { + do { + string_append_from_obseg_textbank((char *)&uStack3424," \n\n"); + iVar14 += 1; + } while (iVar14 != iVar15); + } + iVar14 = 0; + sVar4 = strlen((char *)&uStack3424); + __s = (char *)(sVar4 + (int)&uStack3424); + sprintf(__s,"%c: ",iStack3444 + 0x61); + string_append_from_obseg_textbank((char *)&uStack3424,(char *)__format); + aiStack3220[0] = 5; + if (j_text_trigger != 0) { + aiStack3220[0] = 1; + } + aiStack3220[0] += uStack136; + iStack3224 = 0x3c; + sVar7 = get_video2_settings_txtClipW(); + sVar8 = get_video2_settings_txtClipH(); + text = (undefined4 *)(int)sVar8; + en_text_write_stuff(puStackX0,&iStack3224,aiStack3220,(byte *)&uStack3424, + (int)puStack160,(int)piStack156,0xff00b0,(int)sVar7, + (int)sVar8,0,10); + iVar5 = proc_7F0AC0E8(__s); + iVar9 += iVar5; + pbVar6 = (byte *)proc_7F0AC120(__s); + proc_7F0AE98C(&iStack148,&iStack152,pbVar6,(int)puStack160,piStack156,10); + sVar7 = get_video2_settings_txtClipW(); + iVar5 = (int)sVar7; + if (sVar7 < 0) { + iVar5 += 1; + } + if (iStack152 + 0x3c < iVar5 >> 1) { + iVar9 += -1; + } + uStack3424 = 0; + if (0 < iVar9) { + do { + string_append_from_obseg_textbank((char *)&uStack3424," \n"); + iVar14 += 1; + } while (iVar14 != iVar9); + } + iVar14 = 0; + if (0 < iVar15) { + do { + string_append_from_obseg_textbank((char *)&uStack3424," \n\n"); + iVar14 += 1; + } while (iVar14 != iVar15); + } + iVar14 = get_status_of_objective(objective); + if (iVar14 == 0) { + string_append_from_obseg_textbank + ((char *)&uStack3424,(char *)puStack3200); + uStack3428 = dword_80040AFC << 0x10 | 0x400040ff; + } + else { + if (iVar14 == 1) { + uStack3428 = 0xa0ffa0f0; + string_append_from_obseg_textbank + ((char *)&uStack3424,(char *)puStack3196); + } + else { + if (iVar14 == 2) { + string_append_from_obseg_textbank + ((char *)&uStack3424,(char *)puStack3204); + if (j_text_trigger == 0) { + uStack3428 = 0xff00b0; + } + else { + uStack3428 = 0xa0ffa0f0; + } + } + } + } + proc_7F0AE98C(&iStack148,&iStack152,(byte *)&uStack3424,(int)puStack160, + piStack156,10); + aiStack3220[0] = 5; + if (j_text_trigger != 0) { + aiStack3220[0] = 1; + } + aiStack3220[0] += uStack136; + if (j_text_trigger == 0) { + iStack3224 = 0xaf; + } + else { + iStack3224 = 0xf5 - iStack152; + } + sVar7 = get_video2_settings_txtClipH(); + puStackX0 = (u32 *)(int)sVar7; + en_text_write_stuff(text,&iStack3224,aiStack3220,(byte *)&uStack3424, + (int)puStack160,(int)piStack156,uStack3428,0xd2, + (int)sVar7,0,10); + iVar15 += 1; + iStack3444 += 1; + } + objective += 1; + text = (undefined4 *)add_objective(); + } while (objective < (int)text); } - if (iStack152 + 0x3c < iVar7 >> 1) { - iVar11 += -1; - } - uStack3424 = 0; - if (0 < iVar11) { - do { - string_load_parse_something((char *)&uStack3424," \n"); - iVar16 += 1; - } while (iVar16 != iVar11); - } - iVar16 = 0; - if (0 < iVar17) { - do { - string_load_parse_something((char *)&uStack3424," \n\n"); - iVar16 += 1; - } while (iVar16 != iVar17); - } - iVar16 = get_status_of_objective(objective_00); - if (iVar16 == 0) { - string_load_parse_something((char *)&uStack3424,(char *)pbStack3200); - uStack3428 = dword_80040AFC << 0x10 | 0x400040ff; - } - else { - if (iVar16 == 1) { - uStack3428 = 0xa0ffa0f0; - string_load_parse_something((char *)&uStack3424,(char *)pbStack3196); - } - else { - if (iVar16 == 2) { - string_load_parse_something((char *)&uStack3424,(char *)pbStack3204); - if (j_text_trigger == 0) { - uStack3428 = 0xff00b0; - } - else { - uStack3428 = 0xa0ffa0f0; - } - } - } - } - proc_7F0AE98C(&iStack148,&iStack152,(byte *)&uStack3424,iStack160,piStack156,10); - aiStack3220[0] = 5; - if (j_text_trigger != 0) { - aiStack3220[0] = 1; - } - aiStack3220[0] += uStack136; - if (j_text_trigger == 0) { - iStack3224 = 0xaf; - } - else { - iStack3224 = 0xf5 - iStack152; - } - sVar9 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puVar8,&iStack3224,aiStack3220,(byte *)&uStack3424, - iStack160,(int)piStack156,uStack3428,0xd2,(int)sVar9,0, - 10); - iVar17 += 1; - iStack3444 += 1; - } - objective_00 = (longlong)(objective + 1); - objective = add_objective(); - } while (objective_00 < (longlong)objective); - } - proc_7F0ACBA0(0xffffffff); - proc_7F0A684C(); + setTextOverlapCorrection(0xffffffff); + proc_7F0A684C(); + } + proc_7F0AE98C(&iStack148,&iStack152,abStack3192,(int)puStack160,piStack156,10); + en_text_write_stuff(puStackX0,(int *)&uStack132,(int *)&uStack136,abStack3192, + (int)puStack160,(int)piStack156,0xa0ffa0f0,0xd2,0x82,0,10); + uStack136 += 5; + uStack132 = 0x3c; + proc_7F0AE98C(&iStack148,&iStack152,(byte *)auStack3160,(int)puStack160,piStack156,10); + sVar7 = get_video2_settings_txtClipW(); + sVar8 = get_video2_settings_txtClipH(); + puStackX0 = (u32 *)(int)sVar8; + en_text_write_stuff(text,(int *)&uStack132,(int *)&uStack136,(byte *)auStack3160, + (int)puStack160,(int)piStack156,0xff00b0,(int)sVar7,(int)sVar8,0,10); } - proc_7F0AE98C(&iStack148,&iStack152,abStack3192,iStack160,piStack156,10); - puVar8 = en_text_write_stuff(puStackX0,(int *)&uStack132,(int *)&uStack136,abStack3192,iStack160 - ,(int)piStack156,0xa0ffa0f0,0xd2,0x82,0,10); - uStack136 += 5; - uStack132 = 0x3c; - proc_7F0AE98C(&iStack148,&iStack152,(byte *)auStack3160,iStack160,piStack156,10); - sVar9 = get_video2_settings_txtClipW(); - sVar10 = get_video2_settings_txtClipH(); - puStackX0 = en_text_write_stuff(puVar8,(int *)&uStack132,(int *)&uStack136,(byte *)auStack3160, - iStack160,(int)piStack156,0xff00b0,(int)sVar9,(int)sVar10,0,10); - } - return puStackX0; + return (uint *)puStackX0; } @@ -120792,176 +119906,184 @@ uint * proc_7F0AC168(undefined8 param_1,undefined8 param_2) longlong proc_7F0ACA28(longlong param_1,int param_2,int param_3) { - longlong lVar1; - ulonglong uVar2; - uint *puVar3; - - proc_7F0A70AC(DAT_80040994,(int)&pPlayer->buffer_for_watch_greenbackdrop_vertices); - lVar1 = (longlong)param_3; - if (lVar1 == 1) { - set_BONDdata_paused_flag(0); - proc_7F0BD8FC(0); - if ((DAT_80040994 != 1) && (uVar2 = get_controller_buttons_pressed('\0',0xa000), uVar2 != 0)) { - proc_7F0A4EF8(); + longlong lVar1; + u32 uVar2; + int **ppiVar3; + uint *puVar4; + + proc_7F0A70AC(D_80040994,(int)&pPlayer->buffer_for_watch_greenbackdrop_vertices); + lVar1 = (longlong)param_3; + if (lVar1 == 1) { + set_BONDdata_paused_flag(0); + proc_7F0BD8FC(0); + if (D_80040994 != 1) { + uVar2 = get_controller_buttons_pressed('\0',Z_TRIG|A_BUTTON); + lVar1 = (longlong)(int)uVar2; + if (lVar1 != 0) { + ppiVar3 = proc_7F0A4EF8(); + lVar1 = (longlong)(int)ppiVar3; + } + } + switch(D_80040994) { + case 0: + proc_7F0A830C(param_1,(longlong)param_2); + param_1 = lVar1; + break; + case 1: + puVar4 = debug_gun_watch_move_related2(param_1,(longlong)param_2); + param_1 = (longlong)(int)puVar4; + break; + case 2: + proc_7F0AB4B8((u32 *)param_1,param_2); + param_1 = lVar1; + break; + case 3: + puVar4 = proc_7F0ABDFC(param_1,(longlong)param_2); + param_1 = (longlong)(int)puVar4; + break; + case 4: + puVar4 = proc_7F0AC168(param_1,(longlong)param_2); + param_1 = (longlong)(int)puVar4; + } } - switch(DAT_80040994) { - case 0: - param_1 = proc_7F0A830C(param_1,(longlong)param_2); - break; - case 1: - puVar3 = debug_gun_watch_move_related2(param_1,(longlong)param_2); - param_1 = (longlong)(int)puVar3; - break; - case 2: - puVar3 = proc_7F0AB4B8(param_1,(longlong)param_2); - param_1 = (longlong)(int)puVar3; - break; - case 3: - puVar3 = proc_7F0ABDFC(param_1,(longlong)param_2); - param_1 = (longlong)(int)puVar3; - break; - case 4: - puVar3 = proc_7F0AC168(param_1,(longlong)param_2); - param_1 = (longlong)(int)puVar3; + else { + if (lVar1 == 0) { + proc_7F0BD8FC(1); + set_BONDdata_paused_flag(1); + proc_7F0A77A8(param_1,(longlong)param_2); + param_1 = lVar1; + } } - } - else { - if (lVar1 == 0) { - proc_7F0BD8FC(1); - set_BONDdata_paused_flag(1); - proc_7F0A77A8(param_1,(longlong)param_2); - param_1 = lVar1; + return param_1; +} + + + +void null_init_main_7f0acb70(void) + +{ + return; +} + + + +void setTextSpacingInverted(int spacing) + +{ + text_spacing = -spacing; + return; +} + + + +void setTextOrientation(s32 param_1) + +{ + text_orientation = param_1; + return; +} + + + +void setTextWordWrap(s32 param_1) + +{ + text_wordwrap = param_1; + return; +} + + + +void setTextOverlapCorrection(s32 param_1) + +{ + overlap_correction = param_1; + return; +} + + + +void load_font_tables(void) + +{ + u8 *secondFontLarge; + int i; + + text_spacing = 0; + text_orientation = 0; + text_wordwrap = 0; + overlap_correction = -1; + text_bilevel_filter = 0; + text_x = 0; + text_y = 0; + text_s = 0; + text_t = 0; + ptrFirstFontTableSmall = (u8 *)mempAllocBytesInBank(0x24b0,'\x04'); + ptrSecondFontTableSmall = ptrFirstFontTableSmall + 0x2a4; + romCopy((char *)ptrFirstFontTableSmall,font_first_font_table_controller_small,0x24b0); + i = 0; + do { + secondFontLarge = ptrSecondFontTableSmall + i; + i += 0x18; + *(u8 **)(secondFontLarge + 0x14) = ptrFirstFontTableSmall + *(int *)(secondFontLarge + 0x14) + ; + } while (i < 0x8d0); + ptrFirstFontTableLarge = (u8 *)mempAllocBytesInBank(0x3540,'\x04'); + ptrSecondFontTableLarge = ptrFirstFontTableLarge + 0x2a4; + romCopy((char *)ptrFirstFontTableLarge,(char *)&font_first_font_table_controller_large,0x3540); + i = 0x30; + *(u8 **)(ptrSecondFontTableLarge + 0x14) = + ptrFirstFontTableLarge + *(int *)(ptrSecondFontTableLarge + 0x14); + *(u8 **)(ptrSecondFontTableLarge + 0x2c) = + ptrFirstFontTableLarge + *(int *)(ptrSecondFontTableLarge + 0x2c); + do { + *(u8 **)(ptrSecondFontTableLarge + i + 0x14) = + ptrFirstFontTableLarge + *(int *)(ptrSecondFontTableLarge + i + 0x14); + *(u8 **)(ptrSecondFontTableLarge + i + 0x2c) = + ptrFirstFontTableLarge + *(int *)(ptrSecondFontTableLarge + i + 0x2c); + *(u8 **)(ptrSecondFontTableLarge + i + 0x44) = + ptrFirstFontTableLarge + *(int *)(ptrSecondFontTableLarge + i + 0x44); + secondFontLarge = ptrSecondFontTableLarge + i; + i += 0x60; + *(u8 **)(secondFontLarge + 0x5c) = ptrFirstFontTableLarge + *(int *)(secondFontLarge + 0x5c) + ; + } while (i != 0x8d0); + return; +} + + + +void microcode_constructor(u32 *DL) + +{ + *DL = 0xe7000000; + DL[1] = 0; + DL[2] = 0xba001402; + DL[3] = 0; + DL[5] = 0xc0; + DL[4] = 0xba000602; + DL[6] = 0xb900031d; + DL[7] = 0x5041c8; + DL[8] = 0xfcff97ff; + DL[9] = 0xff2dfeff; + DL[10] = 0xba001301; + DL[0xb] = 0; + DL[0xc] = 0xb9000002; + DL[0xd] = 0; + DL[0xe] = 0xba001001; + DL[0xf] = 0; + DL[0x11] = 0xc00; + DL[0x10] = 0xba000903; + DL[0x12] = 0xba000e02; + DL[0x13] = 0; + if (text_bilevel_filter != 0) { + DL[0x15] = 0x3000; + DL[0x14] = 0xba000c02; + return; } - } - return param_1; -} - - - -void removed_7f0acb70(void) - -{ - return; -} - - - -void proc_7F0ACB78(int param_1) - -{ - dword_80040E84 = -param_1; - return; -} - - - -void proc_7F0ACB88(undefined4 param_1) - -{ - dword_80040E88 = param_1; - return; -} - - - -void proc_7F0ACB94(undefined4 param_1) - -{ - dword_80040E8C = param_1; - return; -} - - - -void proc_7F0ACBA0(undefined4 param_1) - -{ - dword_80040E90 = param_1; - return; -} - - - -void load_font_table_controllers(void) - -{ - char *pcVar1; - undefined *puVar2; - int iVar3; - - dword_80040E84 = 0; - dword_80040E88 = 0; - dword_80040E8C = 0; - dword_80040E90 = 0xffffffff; - dword_80040E94 = 0; - dword_80040E98 = 0; - dword_80040E9C = 0; - dword_80040EA0 = 0; - dword_80040EA4 = 0; - D_80040EAC = (char *)allocate_bytes_in_bank(0x24b0,4); - D_80040EB0 = D_80040EAC + 0x2a4; - romCopy(D_80040EAC,"",0x24b0); - iVar3 = 0; - do { - pcVar1 = D_80040EB0 + iVar3; - iVar3 += 0x18; - *(char **)(pcVar1 + 0x14) = D_80040EAC + *(int *)(pcVar1 + 0x14); - } while (iVar3 < 0x8d0); - ptrFirstFontTable = (undefined *)allocate_bytes_in_bank(0x3540,4); - ptrSecondFontTable = ptrFirstFontTable + 0x2a4; - romCopy(ptrFirstFontTable,"",0x3540); - iVar3 = 0x30; - *(undefined **)(ptrSecondFontTable + 0x14) = - ptrFirstFontTable + *(int *)(ptrSecondFontTable + 0x14); - *(undefined **)(ptrSecondFontTable + 0x2c) = - ptrFirstFontTable + *(int *)(ptrSecondFontTable + 0x2c); - do { - *(undefined **)(ptrSecondFontTable + iVar3 + 0x14) = - ptrFirstFontTable + *(int *)(ptrSecondFontTable + iVar3 + 0x14); - *(undefined **)(ptrSecondFontTable + iVar3 + 0x2c) = - ptrFirstFontTable + *(int *)(ptrSecondFontTable + iVar3 + 0x2c); - *(undefined **)(ptrSecondFontTable + iVar3 + 0x44) = - ptrFirstFontTable + *(int *)(ptrSecondFontTable + iVar3 + 0x44); - puVar2 = ptrSecondFontTable + iVar3; - iVar3 += 0x60; - *(undefined **)(puVar2 + 0x5c) = ptrFirstFontTable + *(int *)(puVar2 + 0x5c); - } while (iVar3 != 0x8d0); - return; -} - - - -undefined4 * microcode_constructor(undefined4 *DL) - -{ - *DL = 0xe7000000; - DL[1] = 0; - DL[2] = 0xba001402; - DL[3] = 0; - DL[5] = 0xc0; - DL[4] = 0xba000602; - DL[6] = 0xb900031d; - DL[7] = 0x5041c8; - DL[8] = 0xfcff97ff; - DL[9] = 0xff2dfeff; - DL[10] = 0xba001301; - DL[0xb] = 0; - DL[0xc] = 0xb9000002; - DL[0xd] = 0; - DL[0xe] = 0xba001001; - DL[0xf] = 0; - DL[0x11] = 0xc00; - DL[0x10] = 0xba000903; - DL[0x12] = 0xba000e02; - DL[0x13] = 0; - if (dword_80040E94 != 0) { - DL[0x15] = 0x3000; + DL[0x15] = 0x2000; DL[0x14] = 0xba000c02; - return DL + 0x16; - } - DL[0x15] = 0x2000; - DL[0x14] = 0xba000c02; - return DL + 0x16; + return; } @@ -120969,15 +120091,15 @@ undefined4 * microcode_constructor(undefined4 *DL) undefined4 * combiner_bayer_lod_perspective(undefined4 *DL) { - *DL = 0xe7000000; - DL[1] = 0; - DL[3] = 0x40; - DL[2] = 0xba000602; - DL[5] = 0x80000; - DL[4] = 0xba001301; - DL[7] = 0x10000; - DL[6] = 0xba001001; - return DL + 8; + *DL = 0xe7000000; + DL[1] = 0; + DL[3] = 0x40; + DL[2] = 0xba000602; + DL[5] = 0x80000; + DL[4] = 0xba001301; + DL[7] = 0x10000; + DL[6] = 0xba001001; + return DL + 8; } @@ -120986,19 +120108,19 @@ undefined4 * draw_blackbox_to_screen(undefined4 *param_1,uint *param_2,uint *param_3,uint *param_4,uint *param_5) { - *param_1 = 0xb900031d; - param_1[1] = 0x504240; - param_1[2] = 0xfcffffff; - param_1[3] = 0xfffdf6fb; - param_1[4] = 0xfa000000; - param_1[5] = 0; - param_1[6] = (*param_5 & 0x3ff) << 2 | 0xf6000000 | (*param_4 & 0x3ff) << 0xe; - param_1[7] = (*param_3 & 0x3ff) << 2 | (*param_2 & 0x3ff) << 0xe; - param_1[9] = 0x504240; - param_1[8] = 0xb900031d; - param_1[10] = 0xfcff97ff; - param_1[0xb] = 0xff2dfeff; - return param_1 + 0xc; + *param_1 = 0xb900031d; + param_1[1] = 0x504240; + param_1[2] = 0xfcffffff; + param_1[3] = 0xfffdf6fb; + param_1[4] = 0xfa000000; + param_1[5] = 0; + param_1[6] = (*param_5 & 0x3ff) << 2 | 0xf6000000 | (*param_4 & 0x3ff) << 0xe; + param_1[7] = (*param_3 & 0x3ff) << 2 | (*param_2 & 0x3ff) << 0xe; + param_1[9] = 0x504240; + param_1[8] = 0xb900031d; + param_1[10] = 0xfcff97ff; + param_1[0xb] = 0xff2dfeff; + return param_1 + 0xc; } @@ -121009,319 +120131,336 @@ microcode_constructor_related_to_menus ,uint param_6) { - *param_1 = 0xb900031d; - param_1[1] = 0x504240; - param_1[2] = 0xfcffffff; - param_1[3] = 0xfffdf6fb; - param_1[4] = 0xfa000000; - param_1[5] = param_6 & 0xff000000 | (param_6 >> 0x10 & 0xff) << 0x10 | (param_6 >> 8 & 0xff) << 8 - | param_6 & 0xff; - param_1[7] = ((uint)param_2 & 0x3ff) << 0xe | ((uint)param_3 & 0x3ff) << 2; - param_1[6] = ((uint)param_4 & 0x3ff) << 0xe | 0xf6000000 | (param_5 & 0x3ff) << 2; - param_1[9] = 0xff2dfeff; - param_1[8] = 0xfcff97ff; - return param_1 + 10; + *param_1 = 0xb900031d; + param_1[1] = 0x504240; + param_1[2] = 0xfcffffff; + param_1[3] = 0xfffdf6fb; + param_1[4] = 0xfa000000; + param_1[5] = param_6 & 0xff000000 | (param_6 >> 0x10 & 0xff) << 0x10 | + (param_6 >> 8 & 0xff) << 8 | param_6 & 0xff; + param_1[7] = ((uint)param_2 & 0x3ff) << 0xe | ((uint)param_3 & 0x3ff) << 2; + param_1[6] = ((uint)param_4 & 0x3ff) << 0xe | 0xf6000000 | (param_5 & 0x3ff) << 2; + param_1[9] = 0xff2dfeff; + param_1[8] = 0xfcff97ff; + return param_1 + 10; } -uint * proc_7F0AD0F8(uint *param_1,int *param_2,int *param_3,uint *param_4,int param_5,int param_6, - int param_7,int param_8,int param_9,int param_10,int param_11) +uint * construct_fontchar_microcode + (void *DL,int xpos,int ypos,void *ptr_tbl2entry,void *ptr_unk,void *ptr_tbl1, + int ulx,int uly,int lrx,int lry,int unk) { - uint uVar1; - short sVar5; - uint uVar2; - int iVar3; - u32 uVar4; - uint uVar6; - int iVar7; - uint *puVar8; - - param_11 = *param_3 + param_11; - iVar7 = (*param_2 - - (*(int *)(param_6 + *(int *)(param_5 + 0x10) * 0x34 + param_4[4] * 4) + dword_80040E84)) + - 1; - *param_2 = iVar7; - if ((dword_80040E88 != 0) || - (((puVar8 = param_1, 0 < iVar7 && - (sVar5 = get_video2_settings_txtClipW(), puVar8 = param_1, - (longlong)*param_2 <= (longlong)sVar5)) && - (sVar5 = get_video2_settings_txtClipH(), puVar8 = param_1, - (longlong)(int)(param_11 + param_4[1]) <= (longlong)sVar5)))) { - puVar8 = param_1; - if (*param_2 <= param_7 + param_9) { - param_10 = param_8 + param_10; - puVar8 = param_1; - if ((((int)(param_4[1] + param_11) <= param_10) && (puVar8 = param_1, param_7 <= *param_2)) && - (puVar8 = param_1, param_8 <= (int)(param_4[1] + param_11 + param_4[2]))) { - if ((int)*param_4 < 0x80) { - *param_1 = 0xba000e02; - param_1[1] = 0; - param_1[2] = 0xfd900000; - param_1[3] = param_4[5]; - param_1[5] = 0x7000000; - param_1[4] = 0xf5900000; - param_1[6] = 0xe6000000; - param_1[7] = 0; - param_1[8] = 0xf3000000; - uVar1 = param_4[3] + 7 & 0xf8; - uVar2 = ((int)(uVar1 * param_4[2] + 1) >> 1) - 1; - uVar6 = 0x7ff; - if ((int)uVar2 < 0x7ff) { - uVar6 = uVar2; - } - if (false) { - uVar1 += 7; - } - iVar3 = (int)uVar1 >> 3; - iVar7 = iVar3; - if (iVar3 == 0) { - iVar7 = 1; - } - if (iVar3 == 0) { - iVar3 = 1; - } - if (iVar3 == 0) { - trap(0x1c00); - } - if ((iVar3 == -1) && (iVar7 + 0x7ff == -0x80000000)) { - trap(0x1800); - } - param_1[9] = (iVar7 + 0x7ff) / iVar3 & 0xfffU | 0x7000000 | (uVar6 & 0xfff) << 0xc; - param_1[10] = 0xe7000000; - param_1[0xb] = 0; - param_1[0xc] = ((int)((param_4[3] + 7 & 0xf8) + 7) >> 3) << 9 | 0xf5880000; - param_1[0xd] = 0; - param_1[0xe] = 0xf2000000; - puVar8 = param_1 + 0x10; - param_1[0xf] = ((param_4[3] + 7 & 0xf8) - 1 & 0x3ff) << 0xe | (param_4[2] - 1) * 4 & 0xfff - ; - } - else { - *param_1 = 0xe7000000; - param_1[1] = 0; - param_1[3] = 0xc000; - param_1[2] = 0xba000e02; - puVar8 = param_1 + 4; - if (dword_80040EA8 != 0) { - dword_80040EA8 = 0; - *puVar8 = 0xfd100000; - uVar4 = osVirtualToPhysical(&dword_80040EBC); - param_1[5] = uVar4; - param_1[6] = 0xe8000000; - param_1[7] = 0; - param_1[8] = 0xf5000100; - param_1[9] = 0x7000000; - param_1[10] = 0xe6000000; - param_1[0xb] = 0; - param_1[0xc] = 0xf0000000; - param_1[0xd] = 0x703c000; - param_1[0xe] = 0xe7000000; - param_1[0xf] = 0; - param_1[0x10] = 0xfd100000; - uVar4 = osVirtualToPhysical(&DWORD_80040edc); - param_1[0x11] = uVar4; - param_1[0x12] = 0xe8000000; - param_1[0x13] = 0; - param_1[0x15] = 0x7000000; - param_1[0x14] = 0xf5000110; - param_1[0x16] = 0xe6000000; - param_1[0x17] = 0; - param_1[0x18] = 0xf0000000; - param_1[0x19] = 0x703c000; - param_1[0x1a] = 0xe7000000; - param_1[0x1b] = 0; - puVar8 = param_1 + 0x1c; - } - *puVar8 = 0xfd500000; - uVar4 = osVirtualToPhysical((void *)param_4[5]); - puVar8[1] = uVar4; - puVar8[2] = 0xf5500000; - puVar8[3] = 0x7000000; - puVar8[4] = 0xe6000000; - puVar8[5] = 0; - puVar8[6] = 0xf3000000; - uVar1 = param_4[2] * 4 - 1; - if (0x7fe < (int)uVar1) { - uVar1 = 0x7ff; - } - puVar8[7] = (uVar1 & 0xfff) << 0xc | 0x7000800; - puVar8[8] = 0xe7000000; - puVar8[9] = 0; - puVar8[10] = 0xf5400200; - puVar8[0xb] = (*param_4 & 1) << 0x14 | 0x80200; - puVar8[0xc] = 0xf2000000; - puVar8[0xd] = (param_4[2] - 1) * 4 & 0xfff | 0x3c000; - puVar8 = puVar8 + 0xe; - } - iVar7 = *param_2 + param_4[3]; - if (iVar7 <= param_7 + param_9) { - iVar3 = param_4[1] + param_11; - if (iVar3 < param_8) { - if (param_8 <= (int)(iVar3 + param_4[2])) { - *puVar8 = (iVar7 * 4 + dword_80040E98 & 0xfffU) << 0xc | 0xe4000000 | - (iVar3 + param_4[2]) * 4 + dword_80040E9C & 0xfff; - puVar8[1] = (*param_2 * 4 + dword_80040E98 & 0xfffU) << 0xc | - param_8 * 4 + dword_80040E9C & 0xfffU; - puVar8[2] = 0xb4000000; - puVar8[3] = dword_80040EA0 << 0x10 | - ((param_8 - param_11) - param_4[1]) * 0x20 + dword_80040EA4 & 0xffff; - puVar8[4] = 0xb3000000; - puVar8[5] = 0x4000400; - puVar8 = puVar8 + 6; + uint uVar1; + short sVar6; + uint uVar2; + int iVar3; + u32 uVar4; + int iVar5; + uint uVar7; + int iVar8; + undefined4 *puVar9; + uint *puVar10; + + unk = *(int *)ypos + unk; + iVar8 = (*(int *)xpos - + (*(int *)((int)ptr_tbl1 + + *(int *)((int)ptr_tbl2entry + 0x10) * 4 + *(int *)((int)ptr_unk + 0x10) * 0x34) + + text_spacing)) + 1; + *(int *)xpos = iVar8; + puVar10 = (uint *)DL; + if ((text_orientation != 0) || + (((0 < iVar8 && + (sVar6 = get_video2_settings_txtClipW(), (longlong)*(int *)xpos <= (longlong)sVar6)) && + (sVar6 = get_video2_settings_txtClipH(), + (longlong)(unk + *(int *)((int)ptr_tbl2entry + 4)) <= (longlong)sVar6)))) { + if (*(int *)xpos <= ulx + lrx) { + lry = uly + lry; + iVar8 = *(int *)((int)ptr_tbl2entry + 4) + unk; + if (((iVar8 <= lry) && (ulx <= *(int *)xpos)) && + (uly <= iVar8 + *(int *)((int)ptr_tbl2entry + 8))) { + if (*(int *)ptr_tbl2entry < 0x80) { + *(undefined4 *)DL = 0xba000e02; + *(undefined4 *)((int)DL + 4) = 0; + *(undefined4 *)((int)DL + 8) = 0xfd900000; + *(undefined4 *)((int)DL + 0xc) = *(undefined4 *)((int)ptr_tbl2entry + 0x14); + *(undefined4 *)((int)DL + 0x14) = 0x7000000; + *(undefined4 *)((int)DL + 0x10) = 0xf5900000; + *(undefined4 *)((int)DL + 0x18) = 0xe6000000; + *(undefined4 *)((int)DL + 0x1c) = 0; + *(undefined4 *)((int)DL + 0x20) = 0xf3000000; + uVar1 = *(int *)((int)ptr_tbl2entry + 0xc) + 7U & 0xf8; + uVar2 = ((int)(uVar1 * *(int *)((int)ptr_tbl2entry + 8) + 1) >> 1) - 1; + uVar7 = 0x7ff; + if ((int)uVar2 < 0x7ff) { + uVar7 = uVar2; + } + if (false) { + uVar1 += 7; + } + iVar3 = (int)uVar1 >> 3; + iVar8 = iVar3; + if (iVar3 == 0) { + iVar8 = 1; + } + if (iVar3 == 0) { + iVar3 = 1; + } + if (iVar3 == 0) { + trap(0x1c00); + } + if ((iVar3 == -1) && (iVar8 + 0x7ff == -0x80000000)) { + trap(0x1800); + } + *(uint *)((int)DL + 0x24) = + (iVar8 + 0x7ff) / iVar3 & 0xfffU | 0x7000000 | (uVar7 & 0xfff) << 0xc; + *(undefined4 *)((int)DL + 0x28) = 0xe7000000; + *(undefined4 *)((int)DL + 0x2c) = 0; + *(uint *)((int)DL + 0x30) = + ((int)((*(int *)((int)ptr_tbl2entry + 0xc) + 7U & 0xf8) + 7) >> 3) << 9 | + 0xf5880000; + *(undefined4 *)((int)DL + 0x34) = 0; + *(undefined4 *)((int)DL + 0x38) = 0xf2000000; + puVar10 = (uint *)((int)DL + 0x40); + *(uint *)((int)DL + 0x3c) = + ((*(int *)((int)ptr_tbl2entry + 0xc) + 7U & 0xf8) - 1 & 0x3ff) << 0xe | + (*(int *)((int)ptr_tbl2entry + 8) + -1) * 4 & 0xfffU; + } + else { + *(undefined4 *)DL = 0xe7000000; + *(undefined4 *)((int)DL + 4) = 0; + *(undefined4 *)((int)DL + 0xc) = 0xc000; + *(undefined4 *)((int)DL + 8) = 0xba000e02; + puVar9 = (undefined4 *)((int)DL + 0x10); + if (dword_80040EA8 != 0) { + dword_80040EA8 = 0; + *puVar9 = 0xfd100000; + uVar4 = osVirtualToPhysical(&dword_80040EBC); + *(u32 *)((int)DL + 0x14) = uVar4; + *(undefined4 *)((int)DL + 0x18) = 0xe8000000; + *(undefined4 *)((int)DL + 0x1c) = 0; + *(undefined4 *)((int)DL + 0x20) = 0xf5000100; + *(undefined4 *)((int)DL + 0x24) = 0x7000000; + *(undefined4 *)((int)DL + 0x28) = 0xe6000000; + *(undefined4 *)((int)DL + 0x2c) = 0; + *(undefined4 *)((int)DL + 0x30) = 0xf0000000; + *(undefined4 *)((int)DL + 0x34) = 0x703c000; + *(undefined4 *)((int)DL + 0x38) = 0xe7000000; + *(undefined4 *)((int)DL + 0x3c) = 0; + *(undefined4 *)((int)DL + 0x40) = 0xfd100000; + uVar4 = osVirtualToPhysical(&DWORD_80040edc); + *(u32 *)((int)DL + 0x44) = uVar4; + *(undefined4 *)((int)DL + 0x48) = 0xe8000000; + *(undefined4 *)((int)DL + 0x4c) = 0; + *(undefined4 *)((int)DL + 0x54) = 0x7000000; + *(undefined4 *)((int)DL + 0x50) = 0xf5000110; + *(undefined4 *)((int)DL + 0x58) = 0xe6000000; + *(undefined4 *)((int)DL + 0x5c) = 0; + *(undefined4 *)((int)DL + 0x60) = 0xf0000000; + *(undefined4 *)((int)DL + 100) = 0x703c000; + *(undefined4 *)((int)DL + 0x68) = 0xe7000000; + *(undefined4 *)((int)DL + 0x6c) = 0; + puVar9 = (undefined4 *)((int)DL + 0x70); + } + *puVar9 = 0xfd500000; + uVar4 = osVirtualToPhysical(*(void **)((int)ptr_tbl2entry + 0x14)); + puVar9[1] = uVar4; + puVar9[2] = 0xf5500000; + puVar9[3] = 0x7000000; + puVar9[4] = 0xe6000000; + puVar9[5] = 0; + puVar9[6] = 0xf3000000; + uVar1 = *(int *)((int)ptr_tbl2entry + 8) * 4 - 1; + if (0x7fe < (int)uVar1) { + uVar1 = 0x7ff; + } + puVar9[7] = (uVar1 & 0xfff) << 0xc | 0x7000800; + puVar9[8] = 0xe7000000; + puVar9[9] = 0; + puVar9[10] = 0xf5400200; + puVar9[0xb] = (*(uint *)ptr_tbl2entry & 1) << 0x14 | 0x80200; + puVar9[0xc] = 0xf2000000; + puVar9[0xd] = (*(int *)((int)ptr_tbl2entry + 8) + -1) * 4 & 0xfffU | 0x3c000; + puVar10 = puVar9 + 0xe; + } + iVar8 = *(int *)xpos + *(int *)((int)ptr_tbl2entry + 0xc); + if (iVar8 <= ulx + lrx) { + iVar3 = *(int *)((int)ptr_tbl2entry + 4) + unk; + if (iVar3 < uly) { + iVar3 += *(int *)((int)ptr_tbl2entry + 8); + if (uly <= iVar3) { + *puVar10 = (iVar8 * 4 + text_x & 0xfffU) << 0xc | 0xe4000000 | + iVar3 * 4 + text_y & 0xfffU; + puVar10[1] = (*(int *)xpos * 4 + text_x & 0xfffU) << 0xc | + uly * 4 + text_y & 0xfffU; + puVar10[2] = 0xb4000000; + puVar10[3] = text_s << 0x10 | + ((uly - unk) - *(int *)((int)ptr_tbl2entry + 4)) * 0x20 + + text_t & 0xffff; + puVar10[4] = 0xb3000000; + puVar10[5] = 0x4000400; + puVar10 = puVar10 + 6; + } + } + else { + iVar5 = iVar3 + *(int *)((int)ptr_tbl2entry + 8); + if (lry < iVar5) { + if (iVar3 <= lry) { + *puVar10 = (iVar8 * 4 + text_x & 0xfffU) << 0xc | 0xe4000000 | + lry + text_y & 0xfffU; + puVar10[1] = (*(int *)xpos * 4 + text_x & 0xfffU) << 0xc | + (unk + *(int *)((int)ptr_tbl2entry + 4)) * 4 + text_y & + 0xfffU; + puVar10[2] = 0xb4000000; + puVar10[3] = text_s << 0x10 | text_t & 0xffff; + puVar10[4] = 0xb3000000; + puVar10[5] = 0x4000400; + puVar10 = puVar10 + 6; + } + } + else { + if (text_orientation == 0) { + *puVar10 = (iVar8 * 4 + text_x & 0xfffU) << 0xc | 0xe4000000 | + iVar5 * 4 + text_y & 0xfffU; + puVar10[1] = (*(int *)xpos * 4 + text_x & 0xfffU) << 0xc | + (unk + *(int *)((int)ptr_tbl2entry + 4)) * 4 + text_y & + 0xfffU; + puVar10[2] = 0xb4000000; + puVar10[3] = text_s << 0x10 | text_t & 0xffff; + puVar10[4] = 0xb3000000; + puVar10[5] = 0x4000400; + puVar10 = puVar10 + 6; + } + else { + *puVar10 = iVar8 * 4 + text_x & 0xfffU | 0xe5000000 | + ((unk - *(int *)((int)ptr_tbl2entry + 4)) * 4 + text_y & + 0xfffU) << 0xc; + puVar10[1] = *(int *)xpos * 4 + text_x & 0xfffU | + (((unk - *(int *)((int)ptr_tbl2entry + 4)) - + *(int *)((int)ptr_tbl2entry + 8)) * 4 + text_y & + 0xfffU) << 0xc; + puVar10[2] = 0xb4000000; + puVar10[3] = text_t << 0x10 | + (*(int *)((int)ptr_tbl2entry + 8) + -1) * 0x20 + text_s + & 0xffffU; + puVar10[4] = 0xb3000000; + puVar10[5] = 0x400fc00; + puVar10 = puVar10 + 6; + } + } + } + } } - } - else { - if (param_10 < (int)(iVar3 + param_4[2])) { - if (iVar3 <= param_10) { - *puVar8 = (iVar7 * 4 + dword_80040E98 & 0xfffU) << 0xc | 0xe4000000 | - param_10 + dword_80040E9C & 0xfffU; - puVar8[1] = (*param_2 * 4 + dword_80040E98 & 0xfffU) << 0xc | - (param_11 + param_4[1]) * 4 + dword_80040E9C & 0xfff; - puVar8[2] = 0xb4000000; - puVar8[3] = dword_80040EA0 << 0x10 | dword_80040EA4 & 0xffff; - puVar8[4] = 0xb3000000; - puVar8[5] = 0x4000400; - puVar8 = puVar8 + 6; - } - } - else { - if (dword_80040E88 == 0) { - *puVar8 = (iVar7 * 4 + dword_80040E98 & 0xfffU) << 0xc | 0xe4000000 | - (iVar3 + param_4[2]) * 4 + dword_80040E9C & 0xfff; - puVar8[1] = (*param_2 * 4 + dword_80040E98 & 0xfffU) << 0xc | - (param_11 + param_4[1]) * 4 + dword_80040E9C & 0xfff; - puVar8[2] = 0xb4000000; - puVar8[3] = dword_80040EA0 << 0x10 | dword_80040EA4 & 0xffff; - puVar8[4] = 0xb3000000; - puVar8[5] = 0x4000400; - puVar8 = puVar8 + 6; - } - else { - *puVar8 = iVar7 * 4 + dword_80040E98 & 0xfffU | 0xe5000000 | - ((param_11 - param_4[1]) * 4 + dword_80040E9C & 0xfff) << 0xc; - puVar8[1] = *param_2 * 4 + dword_80040E98 & 0xfffU | - (((param_11 - param_4[1]) - param_4[2]) * 4 + dword_80040E9C & 0xfff) << - 0xc; - puVar8[2] = 0xb4000000; - puVar8[3] = dword_80040EA4 << 0x10 | - (param_4[2] - 1) * 0x20 + dword_80040EA0 & 0xffff; - puVar8[4] = 0xb3000000; - puVar8[5] = 0x400fc00; - puVar8 = puVar8 + 6; - } - } - } } - } } - } - *param_2 = *param_2 + param_4[3]; - return puVar8; + *(int *)xpos = *(int *)xpos + *(int *)((int)ptr_tbl2entry + 0xc); + return puVar10; } -uint * en_text_write_stuff(undefined4 *param_1,int *param_2,int *param_3,byte *param_4,int param_5, - int param_6,uint param_7,int param_8,int param_9,int param_10,int param_11 - ) +void en_text_write_stuff(undefined4 *param_1,int *param_2,int *param_3,byte *param_4,int param_5, + int param_6,uint param_7,int param_8,int param_9,int param_10,int param_11) { - byte bVar1; - int iVar2; - uint *puVar3; - uint uVar4; - uint uVar5; - ulonglong uVar6; - int iVar7; - uint uStack60; - undefined4 uStack56; - undefined4 uStack52; - undefined4 uStack48; - undefined4 uStack44; - int iStack40; - int iStack8; - - dword_80040EA8 = 1; - iStack8 = *param_3; - iVar2 = *param_2; - uVar6 = 0x48; - if (param_11 == 0) { - param_11 = *(int *)(param_5 + 0x88c) + *(int *)(param_5 + 0x890); - } - if ((j_text_trigger != 0) && (param_11 < 0xe)) { - param_11 = 0xe; - } - *param_1 = 0xfa000000; - param_1[1] = param_7 & 0xff000000 | (param_7 >> 0x10 & 0xff) << 0x10 | (param_7 >> 8 & 0xff) << 8 - | param_7 & 0xff; - bVar1 = *param_4; - puVar3 = param_1 + 2; - if (bVar1 != 0) { - do { - if (bVar1 == 0x20) { - uVar6 = 0x48; - param_4 = param_4 + 1; - *param_2 = *param_2 + 5; - } - else { - if (bVar1 == 10) { - uVar6 = 0x48; - param_4 = param_4 + 1; - if (dword_80040E90 < 0) { - iVar7 = *param_3; -LAB_7f0adc14: - *param_3 = iVar7 + param_11; - } - else { - if (iVar2 != *param_2) { - iVar7 = *param_3; - goto LAB_7f0adc14; - } - *param_3 = *param_3 + dword_80040E90; - } - *param_2 = iVar2; - } - else { - if (bVar1 < 0x80) { - puVar3 = proc_7F0AD0F8(puVar3,param_2,param_3, - (uint *)((uint)bVar1 * 0x18 + param_5 + -0x318), - (int)uVar6 * 0x18 + param_5 + -0x318,param_6,iVar2,iStack8, - param_8,param_9,param_10); - uVar6 = (ulonglong)*param_4; - param_4 = param_4 + 1; - } - else { - uVar5 = ((uint)bVar1 & 0x7f) << 7; - uStack56 = DAT_80040f00; - uVar4 = (uint)((ulonglong)param_4[1] & 0x7f) | uVar5; - uStack52 = dword_80040F04; - uStack48 = dword_80040F08; - uStack44 = dword_80040F0C; - iStack40 = dword_80040F10; - if (((longlong)(int)uVar5 & 0x2000U) != 0) { - uStack48 = 0xf; - uStack52 = 0x10; - } - if (((ulonglong)param_4[1] & 0x7f | (longlong)(int)uVar5 & 0x1fffU) < 0x3c7) { - uStack60 = uVar4 + 0x80; + byte bVar1; + int ulx; + uint *DL; + uint uVar2; + uint uVar3; + ulonglong uVar4; + int iVar5; + int iStack60; + undefined4 uStack56; + undefined4 uStack52; + undefined4 uStack48; + undefined4 uStack44; + int iStack40; + int iStack8; + + dword_80040EA8 = 1; + iStack8 = *param_3; + ulx = *param_2; + uVar4 = 0x48; + if (param_11 == 0) { + param_11 = *(int *)(param_5 + 0x88c) + *(int *)(param_5 + 0x890); + } + if ((j_text_trigger != 0) && (param_11 < 0xe)) { + param_11 = 0xe; + } + *param_1 = 0xfa000000; + param_1[1] = param_7 & 0xff000000 | (param_7 >> 0x10 & 0xff) << 0x10 | + (param_7 >> 8 & 0xff) << 8 | param_7 & 0xff; + bVar1 = *param_4; + DL = param_1 + 2; + if (bVar1 != 0) { + do { + if (bVar1 == 0x20) { + uVar4 = 0x48; + param_4 = param_4 + 1; + *param_2 = *param_2 + 5; } else { - uVar4 = 2; - uStack60 = 0x82; + if (bVar1 == 10) { + uVar4 = 0x48; + param_4 = param_4 + 1; + if (overlap_correction < 0) { + iVar5 = *param_3; +LAB_7f0adc14: + *param_3 = iVar5 + param_11; + } + else { + if (ulx != *param_2) { + iVar5 = *param_3; + goto LAB_7f0adc14; + } + *param_3 = *param_3 + overlap_correction; + } + *param_2 = ulx; + } + else { + if (bVar1 < 0x80) { + DL = construct_fontchar_microcode + (DL,(int)param_2,(int)param_3, + (void *)((uint)bVar1 * 0x18 + param_5 + -0x318), + (void *)((int)uVar4 * 0x18 + param_5 + -0x318), + (void *)param_6,ulx,iStack8,param_8,param_9,param_10); + uVar4 = (ulonglong)*param_4; + param_4 = param_4 + 1; + } + else { + uVar3 = ((uint)bVar1 & 0x7f) << 7; + uStack56 = DAT_80040f00; + uVar2 = (uint)((ulonglong)param_4[1] & 0x7f) | uVar3; + uStack52 = dword_80040F04; + uStack48 = dword_80040F08; + uStack44 = dword_80040F0C; + iStack40 = dword_80040F10; + if (((longlong)(int)uVar3 & 0x2000U) != 0) { + uStack48 = 0xf; + uStack52 = 0x10; + } + if (((ulonglong)param_4[1] & 0x7f | (longlong)(int)uVar3 & 0x1fffU) < 0x3c7) + { + iStack60 = uVar2 + 0x80; + } + else { + uVar2 = 2; + iStack60 = 0x82; + } + iStack40 = something_with_LnameX(uVar2); + DL = construct_fontchar_microcode + (DL,(int)param_2,(int)param_3,&iStack60,&iStack60, + (void *)param_6,ulx,iStack8,param_8,param_9,param_10); + param_4 = param_4 + 2; + } + } } - iStack40 = something_with_LnameX(uVar4); - puVar3 = proc_7F0AD0F8(puVar3,param_2,param_3,&uStack60,(int)&uStack60,param_6,iVar2, - iStack8,param_8,param_9,param_10); - param_4 = param_4 + 2; - } - } - } - bVar1 = *param_4; - } while (bVar1 != 0); - } - return puVar3; + bVar1 = *param_4; + } while (bVar1 != 0); + } + return; } @@ -121331,155 +120470,156 @@ uint * proc_7F0ADDAC(uint *param_1,uint *param_2,int *param_3,uint *param_4,int int param_13) { - uint uVar1; - short sVar6; - uint uVar2; - int iVar3; - u32 uVar4; - uint *puVar5; - int iVar7; - uint uVar8; - - param_13 = *param_3 + param_13; - *param_2 = (*param_2 - - (*(int *)(param_6 + *(int *)(param_5 + 0x10) * 0x34 + param_4[4] * 4) + dword_80040E84) - ) + 1; - if ((0 < (int)*param_2) && - (sVar6 = get_video2_settings_txtClipW(), (longlong)(int)*param_2 <= (longlong)sVar6)) { - sVar6 = get_video2_settings_txtClipH(); - iVar7 = param_13 + param_4[1]; - if (((longlong)iVar7 <= (longlong)sVar6) && - (((((int)*param_2 <= param_7 + param_11 && - ((longlong)iVar7 <= (longlong)(int)(param_8 + param_12))) && (param_7 <= (int)*param_2)) - && ((int)param_8 <= (int)(iVar7 + param_4[2]))))) { - if ((int)*param_4 < 0x80) { - *param_1 = 0xba000e02; - param_1[1] = 0; - param_1[2] = 0xfd900000; - param_1[3] = param_4[5]; - param_1[4] = 0xf5900000; - param_1[5] = 0x7000000; - param_1[6] = 0xe6000000; - param_1[7] = 0; - param_1[8] = 0xf3000000; - uVar1 = param_4[3] + 7 & 0xf8; - uVar2 = ((int)(uVar1 * param_4[2] + 1) >> 1) - 1; - uVar8 = 0x7ff; - if ((int)uVar2 < 0x7ff) { - uVar8 = uVar2; - } - if (false) { - uVar1 += 7; - } - iVar3 = (int)uVar1 >> 3; - iVar7 = iVar3; - if (iVar3 == 0) { - iVar7 = 1; - } - if (iVar3 == 0) { - iVar3 = 1; - } - param_1[9] = (iVar7 + 0x7ff) / iVar3 & 0xfffU | 0x7000000 | (uVar8 & 0xfff) << 0xc; - param_1[10] = 0xe7000000; - param_1[0xb] = 0; - if (iVar3 == 0) { - trap(0x1c00); - } - if ((iVar3 == -1) && (iVar7 + 0x7ff == -0x80000000)) { - trap(0x1800); - } - param_1[0xc] = ((int)((param_4[3] + 7 & 0xf8) + 7) >> 3) << 9 | 0xf5880000; - param_1[0xd] = 0; - param_1[0xe] = 0xf2000000; - puVar5 = param_1 + 0x10; - param_1[0xf] = ((param_4[3] + 7 & 0xf8) - 1 & 0x3ff) << 0xe | (param_4[2] - 1) * 4 & 0xfff; - } - else { - *param_1 = 0xe7000000; - param_1[1] = 0; - param_1[3] = 0xc000; - param_1[2] = 0xba000e02; - puVar5 = param_1 + 4; - if (dword_80040EA8 != 0) { - dword_80040EA8 = 0; - *puVar5 = 0xfd100000; - uVar4 = osVirtualToPhysical(&dword_80040EBC); - param_1[5] = uVar4; - param_1[6] = 0xe8000000; - param_1[7] = 0; - param_1[9] = 0x7000000; - param_1[8] = 0xf5000100; - param_1[10] = 0xe6000000; - param_1[0xb] = 0; - param_1[0xc] = 0xf0000000; - param_1[0xd] = 0x703c000; - param_1[0xf] = 0; - param_1[0xe] = 0xe7000000; - param_1[0x10] = 0xfd100000; - uVar4 = osVirtualToPhysical(&DWORD_80040edc); - param_1[0x11] = uVar4; - param_1[0x12] = 0xe8000000; - param_1[0x13] = 0; - param_1[0x14] = 0xf5000110; - param_1[0x15] = 0x7000000; - param_1[0x16] = 0xe6000000; - param_1[0x17] = 0; - param_1[0x18] = 0xf0000000; - param_1[0x19] = 0x703c000; - param_1[0x1b] = 0; - param_1[0x1a] = 0xe7000000; - puVar5 = param_1 + 0x1c; - } - *puVar5 = 0xfd500000; - uVar4 = osVirtualToPhysical((void *)param_4[5]); - puVar5[1] = uVar4; - puVar5[2] = 0xf5500000; - puVar5[3] = 0x7000000; - puVar5[4] = 0xe6000000; - puVar5[5] = 0; - puVar5[6] = 0xf3000000; - uVar1 = param_4[2] * 4 - 1; - if (0x7fe < (int)uVar1) { - uVar1 = 0x7ff; - } - puVar5[7] = (uVar1 & 0xfff) << 0xc | 0x7000800; - puVar5[9] = 0; - puVar5[8] = 0xe7000000; - puVar5[10] = 0xf5400200; - puVar5[0xb] = (*param_4 & 1) << 0x14 | 0x80200; - puVar5[0xc] = 0xf2000000; - puVar5[0xd] = (param_4[2] - 1) * 4 & 0xfff | 0x3c000; - puVar5 = puVar5 + 0xe; - } - *puVar5 = 0xfa000000; - puVar5[1] = param_10 & 0xff000000 | (param_10 >> 0x10 & 0xff) << 0x10 | - (param_10 >> 8 & 0xff) << 8 | param_10 & 0xff; - puVar5 = puVar5 + 2; - iVar3 = -1; - uVar1 = *param_2; - iVar7 = -1; - while( true ) { - do { - if ((iVar3 != 0) || (iVar7 != 0)) { - puVar5 = proc_7F0AE45C(puVar5,uVar1 + iVar3,param_13 + iVar7,(int)param_4,param_7, - param_8,param_11,param_12); + uint uVar1; + short sVar6; + uint uVar2; + int iVar3; + u32 uVar4; + uint *puVar5; + int iVar7; + uint uVar8; + + param_13 = *param_3 + param_13; + *param_2 = (*param_2 - + (*(int *)(param_6 + *(int *)(param_5 + 0x10) * 0x34 + param_4[4] * 4) + text_spacing) + ) + 1; + if ((0 < (int)*param_2) && + (sVar6 = get_video2_settings_txtClipW(), (longlong)(int)*param_2 <= (longlong)sVar6)) { + sVar6 = get_video2_settings_txtClipH(); + iVar7 = param_13 + param_4[1]; + if (((longlong)iVar7 <= (longlong)sVar6) && + (((((int)*param_2 <= param_7 + param_11 && + ((longlong)iVar7 <= (longlong)(int)(param_8 + param_12))) && + (param_7 <= (int)*param_2)) && ((int)param_8 <= (int)(iVar7 + param_4[2]))))) { + if ((int)*param_4 < 0x80) { + *param_1 = 0xba000e02; + param_1[1] = 0; + param_1[2] = 0xfd900000; + param_1[3] = param_4[5]; + param_1[4] = 0xf5900000; + param_1[5] = 0x7000000; + param_1[6] = 0xe6000000; + param_1[7] = 0; + param_1[8] = 0xf3000000; + uVar1 = param_4[3] + 7 & 0xf8; + uVar2 = ((int)(uVar1 * param_4[2] + 1) >> 1) - 1; + uVar8 = 0x7ff; + if ((int)uVar2 < 0x7ff) { + uVar8 = uVar2; + } + if (false) { + uVar1 += 7; + } + iVar3 = (int)uVar1 >> 3; + iVar7 = iVar3; + if (iVar3 == 0) { + iVar7 = 1; + } + if (iVar3 == 0) { + iVar3 = 1; + } + param_1[9] = (iVar7 + 0x7ff) / iVar3 & 0xfffU | 0x7000000 | (uVar8 & 0xfff) << 0xc; + param_1[10] = 0xe7000000; + param_1[0xb] = 0; + if (iVar3 == 0) { + trap(0x1c00); + } + if ((iVar3 == -1) && (iVar7 + 0x7ff == -0x80000000)) { + trap(0x1800); + } + param_1[0xc] = ((int)((param_4[3] + 7 & 0xf8) + 7) >> 3) << 9 | 0xf5880000; + param_1[0xd] = 0; + param_1[0xe] = 0xf2000000; + puVar5 = param_1 + 0x10; + param_1[0xf] = ((param_4[3] + 7 & 0xf8) - 1 & 0x3ff) << 0xe | + (param_4[2] - 1) * 4 & 0xfff; + } + else { + *param_1 = 0xe7000000; + param_1[1] = 0; + param_1[3] = 0xc000; + param_1[2] = 0xba000e02; + puVar5 = param_1 + 4; + if (dword_80040EA8 != 0) { + dword_80040EA8 = 0; + *puVar5 = 0xfd100000; + uVar4 = osVirtualToPhysical(&dword_80040EBC); + param_1[5] = uVar4; + param_1[6] = 0xe8000000; + param_1[7] = 0; + param_1[9] = 0x7000000; + param_1[8] = 0xf5000100; + param_1[10] = 0xe6000000; + param_1[0xb] = 0; + param_1[0xc] = 0xf0000000; + param_1[0xd] = 0x703c000; + param_1[0xf] = 0; + param_1[0xe] = 0xe7000000; + param_1[0x10] = 0xfd100000; + uVar4 = osVirtualToPhysical(&DWORD_80040edc); + param_1[0x11] = uVar4; + param_1[0x12] = 0xe8000000; + param_1[0x13] = 0; + param_1[0x14] = 0xf5000110; + param_1[0x15] = 0x7000000; + param_1[0x16] = 0xe6000000; + param_1[0x17] = 0; + param_1[0x18] = 0xf0000000; + param_1[0x19] = 0x703c000; + param_1[0x1b] = 0; + param_1[0x1a] = 0xe7000000; + puVar5 = param_1 + 0x1c; + } + *puVar5 = 0xfd500000; + uVar4 = osVirtualToPhysical((void *)param_4[5]); + puVar5[1] = uVar4; + puVar5[2] = 0xf5500000; + puVar5[3] = 0x7000000; + puVar5[4] = 0xe6000000; + puVar5[5] = 0; + puVar5[6] = 0xf3000000; + uVar1 = param_4[2] * 4 - 1; + if (0x7fe < (int)uVar1) { + uVar1 = 0x7ff; + } + puVar5[7] = (uVar1 & 0xfff) << 0xc | 0x7000800; + puVar5[9] = 0; + puVar5[8] = 0xe7000000; + puVar5[10] = 0xf5400200; + puVar5[0xb] = (*param_4 & 1) << 0x14 | 0x80200; + puVar5[0xc] = 0xf2000000; + puVar5[0xd] = (param_4[2] - 1) * 4 & 0xfff | 0x3c000; + puVar5 = puVar5 + 0xe; + } + *puVar5 = 0xfa000000; + puVar5[1] = param_10 & 0xff000000 | (param_10 >> 0x10 & 0xff) << 0x10 | + (param_10 >> 8 & 0xff) << 8 | param_10 & 0xff; + puVar5 = puVar5 + 2; + iVar3 = -1; uVar1 = *param_2; - } - iVar7 += 1; - } while (iVar7 != 2); - iVar3 += 1; - if (iVar3 == 2) break; - iVar7 = -1; - } - *puVar5 = 0xfa000000; - puVar5[1] = param_9 & 0xff000000 | (param_9 >> 0x10 & 0xff) << 0x10 | - (param_9 >> 8 & 0xff) << 8 | param_9 & 0xff; - param_1 = proc_7F0AE45C(puVar5 + 2,uVar1,param_13,(int)param_4,param_7,param_8,param_11, - param_12); + iVar7 = -1; + while( true ) { + do { + if ((iVar3 != 0) || (iVar7 != 0)) { + puVar5 = proc_7F0AE45C(puVar5,uVar1 + iVar3,param_13 + iVar7,(int)param_4, + param_7,param_8,param_11,param_12); + uVar1 = *param_2; + } + iVar7 += 1; + } while (iVar7 != 2); + iVar3 += 1; + if (iVar3 == 2) break; + iVar7 = -1; + } + *puVar5 = 0xfa000000; + puVar5[1] = param_9 & 0xff000000 | (param_9 >> 0x10 & 0xff) << 0x10 | + (param_9 >> 8 & 0xff) << 8 | param_9 & 0xff; + param_1 = proc_7F0AE45C(puVar5 + 2,uVar1,param_13,(int)param_4,param_7,param_8,param_11, + param_12); + } } - } - *param_2 = *param_2 + param_4[3]; - return param_1; + *param_2 = *param_2 + param_4[3]; + return param_1; } @@ -121488,143 +120628,146 @@ uint * proc_7F0AE45C(uint *param_1,uint param_2,int param_3,int param_4,int para int param_7,int param_8) { - uint uVar1; - int iVar2; - int iVar3; - - uVar1 = *(int *)(param_4 + 0xc) + param_2; - if ((int)uVar1 <= param_5 + param_7) { - iVar2 = *(int *)(param_4 + 4) + param_3; - if (iVar2 < (int)param_6) { - iVar2 += *(int *)(param_4 + 8); - if ((int)param_6 <= iVar2) { - *param_1 = (uVar1 & 0x3ff) << 0xe | 0xe4000000 | iVar2 * 4 & 0xfffU; - param_1[1] = (param_2 & 0x3ff) << 0xe | (param_6 & 0x3ff) << 2; - param_1[2] = 0xb4000000; - param_1[3] = ((param_6 - *(int *)(param_4 + 4)) - param_3 & 0x7ff) << 5; - param_1[4] = 0xb3000000; - param_1[5] = 0x4000400; - param_1 = param_1 + 6; - } - } - else { - param_8 = param_6 + param_8; - iVar3 = iVar2 + *(int *)(param_4 + 8); - if (iVar3 <= param_8) { - if (dword_80040E88 != 0) { - *param_1 = (param_3 - *(int *)(param_4 + 4) & 0x3ffU) << 0xe | 0xe5000000 | - uVar1 * 4 & 0xfff; - param_1[1] = ((param_3 - *(int *)(param_4 + 4)) - *(int *)(param_4 + 8) & 0x3ffU) << 0xe | - (param_2 & 0x3ff) << 2; - param_1[2] = 0xb4000000; - param_1[3] = (*(int *)(param_4 + 8) - 1U & 0x7ff) << 5; - param_1[4] = 0xb3000000; - param_1[5] = 0x400fc00; - return param_1 + 6; + uint uVar1; + int iVar2; + int iVar3; + + uVar1 = *(int *)(param_4 + 0xc) + param_2; + if ((int)uVar1 <= param_5 + param_7) { + iVar2 = *(int *)(param_4 + 4) + param_3; + if (iVar2 < (int)param_6) { + iVar2 += *(int *)(param_4 + 8); + if ((int)param_6 <= iVar2) { + *param_1 = (uVar1 & 0x3ff) << 0xe | 0xe4000000 | iVar2 * 4 & 0xfffU; + param_1[1] = (param_2 & 0x3ff) << 0xe | (param_6 & 0x3ff) << 2; + param_1[2] = 0xb4000000; + param_1[3] = ((param_6 - *(int *)(param_4 + 4)) - param_3 & 0x7ff) << 5; + param_1[4] = 0xb3000000; + param_1[5] = 0x4000400; + param_1 = param_1 + 6; + } + } + else { + param_8 = param_6 + param_8; + iVar3 = iVar2 + *(int *)(param_4 + 8); + if (iVar3 <= param_8) { + if (text_orientation != 0) { + *param_1 = (param_3 - *(int *)(param_4 + 4) & 0x3ffU) << 0xe | 0xe5000000 | + uVar1 * 4 & 0xfff; + param_1[1] = ((param_3 - *(int *)(param_4 + 4)) - *(int *)(param_4 + 8) & 0x3ffU + ) << 0xe | (param_2 & 0x3ff) << 2; + param_1[2] = 0xb4000000; + param_1[3] = (*(int *)(param_4 + 8) - 1U & 0x7ff) << 5; + param_1[4] = 0xb3000000; + param_1[5] = 0x400fc00; + return param_1 + 6; + } + *param_1 = (uVar1 & 0x3ff) << 0xe | 0xe4000000 | iVar3 * 4 & 0xfffU; + param_1[1] = (param_2 & 0x3ff) << 0xe | + (param_3 + *(int *)(param_4 + 4)) * 4 & 0xfffU; + param_1[2] = 0xb4000000; + param_1[3] = 0; + param_1[4] = 0xb3000000; + param_1[5] = 0x4000400; + return param_1 + 6; + } + if (iVar2 <= param_8) { + *param_1 = (uVar1 & 0x3ff) << 0xe | 0xe4000000 | param_8 * 4 & 0xfffU; + param_1[1] = (param_2 & 0x3ff) << 0xe | + (param_3 + *(int *)(param_4 + 4)) * 4 & 0xfffU; + param_1[2] = 0xb4000000; + param_1[3] = 0; + param_1[4] = 0xb3000000; + param_1[5] = 0x4000400; + return param_1 + 6; + } } - *param_1 = (uVar1 & 0x3ff) << 0xe | 0xe4000000 | iVar3 * 4 & 0xfffU; - param_1[1] = (param_2 & 0x3ff) << 0xe | (param_3 + *(int *)(param_4 + 4)) * 4 & 0xfffU; - param_1[2] = 0xb4000000; - param_1[3] = 0; - param_1[4] = 0xb3000000; - param_1[5] = 0x4000400; - return param_1 + 6; - } - if (iVar2 <= param_8) { - *param_1 = (uVar1 & 0x3ff) << 0xe | 0xe4000000 | param_8 * 4 & 0xfffU; - param_1[1] = (param_2 & 0x3ff) << 0xe | (param_3 + *(int *)(param_4 + 4)) * 4 & 0xfffU; - param_1[2] = 0xb4000000; - param_1[3] = 0; - param_1[4] = 0xb3000000; - param_1[5] = 0x4000400; - return param_1 + 6; - } } - } - return param_1; + return param_1; } -uint * jp_text_stuff(uint *param_1,uint *param_2,uint *param_3,byte *param_4,int param_5,int param_6 - ,uint param_7,uint param_8,int param_9,int param_10,int param_11,int param_12) +void jp_text_stuff(uint *param_1,uint *param_2,uint *param_3,byte *param_4,int param_5,int param_6, + uint param_7,uint param_8,int param_9,int param_10,int param_11,int param_12) { - byte bVar1; - uint uVar2; - uint uVar3; - uint uVar4; - ulonglong uVar5; - uint uStack36; - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - int iStack16; - uint uStack8; - - dword_80040EA8 = 1; - uStack8 = *param_3; - uVar2 = *param_2; - uVar5 = 0x48; - if (param_12 == 0) { - param_12 = *(int *)(param_5 + 0x88c) + *(int *)(param_5 + 0x890); - } - if ((j_text_trigger != 0) && (param_12 < 0xe)) { - param_12 = 0xe; - } - bVar1 = *param_4; - while (bVar1 != 0) { - if (bVar1 == 0x20) { - uVar5 = 0x48; - param_4 = param_4 + 1; - *param_2 = *param_2 + 5; + byte bVar1; + uint uVar2; + uint uVar3; + uint uVar4; + ulonglong uVar5; + uint uStack36; + undefined4 uStack32; + undefined4 uStack28; + undefined4 uStack24; + undefined4 uStack20; + int iStack16; + uint uStack8; + + dword_80040EA8 = 1; + uStack8 = *param_3; + uVar2 = *param_2; + uVar5 = 0x48; + if (param_12 == 0) { + param_12 = *(int *)(param_5 + 0x88c) + *(int *)(param_5 + 0x890); } - else { - if (bVar1 == 10) { - *param_2 = uVar2; - uVar5 = 0x48; - param_4 = param_4 + 1; - *param_3 = *param_3 + param_12; - } - else { - if (bVar1 < 0x80) { - param_1 = proc_7F0ADDAC(param_1,param_2,(int *)param_3, - (uint *)((uint)bVar1 * 0x18 + param_5 + -0x318), - (int)uVar5 * 0x18 + param_5 + -0x318,param_6,uVar2,uStack8,param_7 - ,param_8,param_9,param_10,param_11); - uVar5 = (ulonglong)*param_4; - param_4 = param_4 + 1; - } - else { - uVar4 = ((uint)bVar1 & 0x7f) << 7; - uVar3 = (uint)((ulonglong)param_4[1] & 0x7f) | uVar4; - uStack28 = dword_80040F1C; - uStack24 = dword_80040F20; - if (((longlong)(int)uVar4 & 0x2000U) != 0) { - uStack24 = 0xf; - uStack28 = 0x10; - } - if (((ulonglong)param_4[1] & 0x7f | (longlong)(int)uVar4 & 0x1fffU) < 0x3c7) { - uStack36 = uVar3 + 0x80; - } - else { - uVar3 = 2; - uStack36 = 0x82; - } - uStack32 = dword_80040F18; - uStack20 = dword_80040F24; - iStack16 = dword_80040F28; - iStack16 = something_with_LnameX(uVar3); - param_1 = proc_7F0ADDAC(param_1,param_2,(int *)param_3,&uStack36,(int)&uStack36,param_6, - uVar2,uStack8,param_7,param_8,param_9,param_10,param_11); - param_4 = param_4 + 2; - } - } + if ((j_text_trigger != 0) && (param_12 < 0xe)) { + param_12 = 0xe; } bVar1 = *param_4; - } - return param_1; + while (bVar1 != 0) { + if (bVar1 == 0x20) { + uVar5 = 0x48; + param_4 = param_4 + 1; + *param_2 = *param_2 + 5; + } + else { + if (bVar1 == 10) { + *param_2 = uVar2; + uVar5 = 0x48; + param_4 = param_4 + 1; + *param_3 = *param_3 + param_12; + } + else { + if (bVar1 < 0x80) { + param_1 = proc_7F0ADDAC(param_1,param_2,(int *)param_3, + (uint *)((uint)bVar1 * 0x18 + param_5 + -0x318), + (int)uVar5 * 0x18 + param_5 + -0x318,param_6,uVar2, + uStack8,param_7,param_8,param_9,param_10,param_11); + uVar5 = (ulonglong)*param_4; + param_4 = param_4 + 1; + } + else { + uVar4 = ((uint)bVar1 & 0x7f) << 7; + uVar3 = (uint)((ulonglong)param_4[1] & 0x7f) | uVar4; + uStack28 = dword_80040F1C; + uStack24 = dword_80040F20; + if (((longlong)(int)uVar4 & 0x2000U) != 0) { + uStack24 = 0xf; + uStack28 = 0x10; + } + if (((ulonglong)param_4[1] & 0x7f | (longlong)(int)uVar4 & 0x1fffU) < 0x3c7) { + uStack36 = uVar3 + 0x80; + } + else { + uVar3 = 2; + uStack36 = 0x82; + } + uStack32 = dword_80040F18; + uStack20 = dword_80040F24; + iStack16 = dword_80040F28; + iStack16 = something_with_LnameX(uVar3); + param_1 = proc_7F0ADDAC(param_1,param_2,(int *)param_3,&uStack36,(int)&uStack36, + param_6,uVar2,uStack8,param_7,param_8,param_9,param_10, + param_11); + param_4 = param_4 + 2; + } + } + } + bVar1 = *param_4; + } + return; } @@ -121632,79 +120775,79 @@ uint * jp_text_stuff(uint *param_1,uint *param_2,uint *param_3,byte *param_4,int void proc_7F0AE98C(int *param_1,int *param_2,byte *param_3,int param_4,int *param_5,int param_6) { - byte bVar1; - ulonglong uVar2; - byte *pbVar3; - int iVar4; - int iVar5; - - *param_1 = 0; - uVar2 = 0x48; - iVar4 = 0; - *param_2 = 0; - if (param_6 == 0) { - param_6 = *(int *)(param_4 + 0x890) + *(int *)(param_4 + 0x88c); - } - if (j_text_trigger != 0) { - if (0xd < param_6) { - bVar1 = *param_3; - goto joined_r0x7f0ae9f4; + byte bVar1; + ulonglong uVar2; + byte *pbVar3; + int iVar4; + int iVar5; + + *param_1 = 0; + uVar2 = 0x48; + iVar4 = 0; + *param_2 = 0; + if (param_6 == 0) { + param_6 = *(int *)(param_4 + 0x890) + *(int *)(param_4 + 0x88c); } - param_6 = 0xe; - } - bVar1 = *param_3; + if (j_text_trigger != 0) { + if (0xd < param_6) { + bVar1 = *param_3; + goto joined_r0x7f0ae9f4; + } + param_6 = 0xe; + } + bVar1 = *param_3; joined_r0x7f0ae9f4: - while (bVar1 != 0) { - if (bVar1 == 0x20) { - uVar2 = 0x48; - if (param_3[1] != 10) { - *param_2 = *param_2 + 5; - } - pbVar3 = param_3 + 1; - } - else { - if (bVar1 == 10) { - iVar5 = *param_2; - if (iVar4 < iVar5) { - *param_2 = 0; + while (bVar1 != 0) { + if (bVar1 == 0x20) { + uVar2 = 0x48; + if (param_3[1] != 10) { + *param_2 = *param_2 + 5; + } + pbVar3 = param_3 + 1; } else { - *param_2 = 0; - iVar5 = iVar4; + if (bVar1 == 10) { + iVar5 = *param_2; + if (iVar4 < iVar5) { + *param_2 = 0; + } + else { + *param_2 = 0; + iVar5 = iVar4; + } + pbVar3 = param_3 + 1; + *param_1 = *param_1 + param_6; + iVar4 = iVar5; + } + else { + if (bVar1 < 0x80) { + pbVar3 = param_3 + 1; + iVar5 = param_4 + (uint)bVar1 * 0x18; + *param_2 = (*param_2 + *(int *)(iVar5 + -0x30c)) - + (param_5[*(int *)(iVar5 + -0x308) + + *(int *)(param_4 + (int)uVar2 * 0x18 + -0x308) * 0xd] + + text_spacing + -1); + uVar2 = (ulonglong)*param_3; + } + else { + if (bVar1 < 0xc0) { + pbVar3 = param_3 + 2; + *param_2 = (*param_2 - (*param_5 + text_spacing + -1)) + 0xb; + } + else { + pbVar3 = param_3 + 2; + *param_2 = (*param_2 - (*param_5 + text_spacing + -1)) + 0xf; + } + } + } } - pbVar3 = param_3 + 1; - *param_1 = *param_1 + param_6; - iVar4 = iVar5; - } - else { - if (bVar1 < 0x80) { - pbVar3 = param_3 + 1; - iVar5 = param_4 + (uint)bVar1 * 0x18; - *param_2 = (*param_2 + *(int *)(iVar5 + -0x30c)) - - (param_5[*(int *)(iVar5 + -0x308) + - *(int *)(param_4 + (int)uVar2 * 0x18 + -0x308) * 0xd] + dword_80040E84 - + -1); - uVar2 = (ulonglong)*param_3; - } - else { - if (bVar1 < 0xc0) { - pbVar3 = param_3 + 2; - *param_2 = (*param_2 - (*param_5 + dword_80040E84 + -1)) + 0xb; - } - else { - pbVar3 = param_3 + 2; - *param_2 = (*param_2 - (*param_5 + dword_80040E84 + -1)) + 0xf; - } - } - } + bVar1 = *pbVar3; + param_3 = pbVar3; } - bVar1 = *pbVar3; - param_3 = pbVar3; - } - if (*param_2 < iVar4) { - *param_2 = iVar4; - } - return; + if (*param_2 < iVar4) { + *param_2 = iVar4; + } + return; } @@ -121712,206 +120855,206 @@ joined_r0x7f0ae9f4: // WARNING: Instruction at (ram,0x7f0aedec) overlaps instruction at (ram,0x7f0aede8) // -void proc_7F0AEB64(int param_1,byte *param_2,byte *param_3,int param_4,int *param_5) +void find_width_word_in_string + (int max_width,byte *text,byte *textbuffer,int secondfonttable,int *firstfonttable) { - byte bVar1; - bool bVar2; - byte *pbVar3; - byte *pbVar4; - int iVar5; - uint uVar6; - byte *pbVar7; - uint uVar8; - byte abStack68 [44]; - int iStack24; - int iStack20; - int aiStack16 [3]; - int iStack4; - - iStack4 = 0; - iStack20 = 0; - iStack24 = 1; - do { - aiStack16[0] = 0; - bVar1 = *param_2; - uVar8 = 0; - if (0x20 < bVar1) { - pbVar3 = abStack68; - uVar6 = uVar8; - while( true ) { - uVar8 = uVar6 + 1; - pbVar7 = pbVar3 + 1; - pbVar4 = param_2 + 1; - if (0x7f < *pbVar3) { - uVar8 = uVar6 + 2; - pbVar3[1] = param_2[1]; - pbVar7 = pbVar3 + 2; - pbVar4 = param_2 + 2; - } - param_2 = pbVar4; - pbVar3 = pbVar7; - abStack68[0] = bVar1; - if (*param_2 < 0x21) break; - *pbVar3 = *param_2; - uVar6 = uVar8; - } - } - abStack68[uVar8] = 0; - proc_7F0AE98C(&iStack20,aiStack16,abStack68,param_4,param_5,0); - iStack4 += aiStack16[0]; - bVar2 = param_1 < iStack4; - bVar1 = *param_2; - if (bVar1 == 10) { - iVar5 = 0; - if (bVar2) { - *param_3 = 10; - param_3 = param_3 + 1; - if (0 < dword_80040E8C) { - *param_3 = 0x20; - while( true ) { - iVar5 += 1; - param_3 = param_3 + 1; - if (dword_80040E8C <= iVar5) break; - *param_3 = 0x20; - } - } - } - uVar6 = 0; - iStack4 = 0; - if (0 < (int)uVar8) { - pbVar3 = abStack68; - pbVar7 = param_3; - if ((uVar8 & 3) != 0) { - do { - uVar6 += 1; - param_3 = pbVar7 + 1; - *pbVar7 = *pbVar3; - pbVar3 = pbVar3 + 1; - pbVar7 = param_3; - } while ((uVar8 & 3) != uVar6); - if (uVar6 == uVar8) goto LAB_7f0aed54; - } - pbVar3 = abStack68 + uVar6; - pbVar7 = param_3; - do { - pbVar4 = pbVar3 + 4; - param_3 = pbVar7 + 4; - *pbVar7 = *pbVar3; - pbVar7[1] = pbVar3[1]; - pbVar7[2] = pbVar3[2]; - pbVar7[3] = pbVar3[3]; - pbVar3 = pbVar4; - pbVar7 = param_3; - } while (pbVar4 != abStack68 + uVar8); - } -LAB_7f0aed54: - *param_3 = 10; - param_3 = param_3 + 1; - } - else { - if (bVar1 == 0x20) { - iVar5 = 0; - if (bVar2) { - *param_3 = 10; - param_3 = param_3 + 1; - if (0 < dword_80040E8C) { - *param_3 = 0x20; - while( true ) { - iVar5 += 1; - param_3 = param_3 + 1; - if (dword_80040E8C <= iVar5) break; - *param_3 = 0x20; - } - } - iStack4 = dword_80040E8C * 5 + aiStack16[0]; - } - uVar6 = 0; - iStack4 += 5; - if (0 < (int)uVar8) { - pbVar3 = abStack68; - pbVar7 = param_3; - if ((uVar8 & 3) != 0) { - do { - uVar6 += 1; - param_3 = pbVar7 + 1; - *pbVar7 = *pbVar3; - pbVar3 = pbVar3 + 1; - pbVar7 = param_3; - } while ((uVar8 & 3) != uVar6); - if (uVar6 == uVar8) goto LAB_7f0aee24; - } - pbVar3 = abStack68 + uVar6; - pbVar7 = param_3; - do { - pbVar4 = pbVar3 + 4; - param_3 = pbVar7 + 4; - *pbVar7 = *pbVar3; - pbVar7[1] = pbVar3[1]; - pbVar7[2] = pbVar3[2]; - pbVar7[3] = pbVar3[3]; - pbVar3 = pbVar4; - pbVar7 = param_3; - } while (pbVar4 != abStack68 + uVar8); - } -LAB_7f0aee24: - *param_3 = 0x20; - param_3 = param_3 + 1; - } - else { - iVar5 = 0; - if (bVar1 == 0) { - iStack24 = 0; - if (bVar2) { - *param_3 = 10; - param_3 = param_3 + 1; - if (0 < dword_80040E8C) { - *param_3 = 0x20; - while( true ) { - iVar5 += 1; - param_3 = param_3 + 1; - if (dword_80040E8C <= iVar5) break; - *param_3 = 0x20; - } - } - } - uVar6 = 0; - if (0 < (int)uVar8) { + byte bVar1; + bool bVar2; + byte *pbVar3; + byte *pbVar4; + int iVar5; + uint uVar6; + byte *pbVar7; + uint uVar8; + byte abStack68 [44]; + int iStack24; + int iStack20; + int aiStack16 [3]; + int iStack4; + + iStack4 = 0; + iStack20 = 0; + iStack24 = 1; + do { + aiStack16[0] = 0; + uVar8 = 0; + if (0x20 < *text) { pbVar3 = abStack68; - pbVar7 = param_3; - if ((uVar8 & 3) != 0) { - do { - uVar6 += 1; - param_3 = pbVar7 + 1; - *pbVar7 = *pbVar3; - pbVar3 = pbVar3 + 1; - pbVar7 = param_3; - } while ((uVar8 & 3) != uVar6); - if (uVar6 == uVar8) goto LAB_7f0aeedc; + abStack68[0] = *text; + uVar6 = uVar8; + while( true ) { + uVar8 = uVar6 + 1; + pbVar7 = pbVar3 + 1; + pbVar4 = text + 1; + if (0x7f < *pbVar3) { + uVar8 = uVar6 + 2; + pbVar3[1] = text[1]; + pbVar7 = pbVar3 + 2; + pbVar4 = text + 2; + } + text = pbVar4; + pbVar3 = pbVar7; + if (*text < 0x21) break; + *pbVar3 = *text; + uVar6 = uVar8; } - pbVar3 = abStack68 + uVar6; - pbVar7 = param_3; - do { - pbVar4 = pbVar3 + 4; - param_3 = pbVar7 + 4; - *pbVar7 = *pbVar3; - pbVar7[1] = pbVar3[1]; - pbVar7[2] = pbVar3[2]; - pbVar7[3] = pbVar3[3]; - pbVar3 = pbVar4; - pbVar7 = param_3; - } while (pbVar4 != abStack68 + uVar8); - } -LAB_7f0aeedc: - *param_3 = 0; } - } - } - param_2 = param_2 + 1; - if (iStack24 != 1) { - return; - } - } while( true ); + abStack68[uVar8] = 0; + proc_7F0AE98C(&iStack20,aiStack16,abStack68,secondfonttable,firstfonttable,0); + iStack4 += aiStack16[0]; + bVar2 = max_width < iStack4; + bVar1 = *text; + if (bVar1 == 10) { + iVar5 = 0; + if (bVar2) { + *textbuffer = 10; + textbuffer = textbuffer + 1; + if (0 < text_wordwrap) { + *textbuffer = 0x20; + while( true ) { + iVar5 += 1; + textbuffer = textbuffer + 1; + if (text_wordwrap <= iVar5) break; + *textbuffer = 0x20; + } + } + } + uVar6 = 0; + iStack4 = 0; + if (0 < (int)uVar8) { + pbVar3 = abStack68; + pbVar7 = textbuffer; + if ((uVar8 & 3) != 0) { + do { + uVar6 += 1; + textbuffer = pbVar7 + 1; + *pbVar7 = *pbVar3; + pbVar3 = pbVar3 + 1; + pbVar7 = textbuffer; + } while ((uVar8 & 3) != uVar6); + if (uVar6 == uVar8) goto LAB_7f0aed54; + } + pbVar3 = abStack68 + uVar6; + pbVar7 = textbuffer; + do { + pbVar4 = pbVar3 + 4; + textbuffer = pbVar7 + 4; + *pbVar7 = *pbVar3; + pbVar7[1] = pbVar3[1]; + pbVar7[2] = pbVar3[2]; + pbVar7[3] = pbVar3[3]; + pbVar3 = pbVar4; + pbVar7 = textbuffer; + } while (pbVar4 != abStack68 + uVar8); + } +LAB_7f0aed54: + *textbuffer = 10; + textbuffer = textbuffer + 1; + } + else { + if (bVar1 == 0x20) { + iVar5 = 0; + if (bVar2) { + *textbuffer = 10; + textbuffer = textbuffer + 1; + if (0 < text_wordwrap) { + *textbuffer = 0x20; + while( true ) { + iVar5 += 1; + textbuffer = textbuffer + 1; + if (text_wordwrap <= iVar5) break; + *textbuffer = 0x20; + } + } + iStack4 = text_wordwrap * 5 + aiStack16[0]; + } + uVar6 = 0; + iStack4 += 5; + if (0 < (int)uVar8) { + pbVar3 = abStack68; + pbVar7 = textbuffer; + if ((uVar8 & 3) != 0) { + do { + uVar6 += 1; + textbuffer = pbVar7 + 1; + *pbVar7 = *pbVar3; + pbVar3 = pbVar3 + 1; + pbVar7 = textbuffer; + } while ((uVar8 & 3) != uVar6); + if (uVar6 == uVar8) goto LAB_7f0aee24; + } + pbVar3 = abStack68 + uVar6; + pbVar7 = textbuffer; + do { + pbVar4 = pbVar3 + 4; + textbuffer = pbVar7 + 4; + *pbVar7 = *pbVar3; + pbVar7[1] = pbVar3[1]; + pbVar7[2] = pbVar3[2]; + pbVar7[3] = pbVar3[3]; + pbVar3 = pbVar4; + pbVar7 = textbuffer; + } while (pbVar4 != abStack68 + uVar8); + } +LAB_7f0aee24: + *textbuffer = 0x20; + textbuffer = textbuffer + 1; + } + else { + iVar5 = 0; + if (bVar1 == 0) { + iStack24 = 0; + if (bVar2) { + *textbuffer = 10; + textbuffer = textbuffer + 1; + if (0 < text_wordwrap) { + *textbuffer = 0x20; + while( true ) { + iVar5 += 1; + textbuffer = textbuffer + 1; + if (text_wordwrap <= iVar5) break; + *textbuffer = 0x20; + } + } + } + uVar6 = 0; + if (0 < (int)uVar8) { + pbVar3 = abStack68; + pbVar7 = textbuffer; + if ((uVar8 & 3) != 0) { + do { + uVar6 += 1; + textbuffer = pbVar7 + 1; + *pbVar7 = *pbVar3; + pbVar3 = pbVar3 + 1; + pbVar7 = textbuffer; + } while ((uVar8 & 3) != uVar6); + if (uVar6 == uVar8) goto LAB_7f0aeedc; + } + pbVar3 = abStack68 + uVar6; + pbVar7 = textbuffer; + do { + pbVar4 = pbVar3 + 4; + textbuffer = pbVar7 + 4; + *pbVar7 = *pbVar3; + pbVar7[1] = pbVar3[1]; + pbVar7[2] = pbVar3[2]; + pbVar7[3] = pbVar3[3]; + pbVar3 = pbVar4; + pbVar7 = textbuffer; + } while (pbVar4 != abStack68 + uVar8); + } +LAB_7f0aeedc: + *textbuffer = 0; + } + } + } + text = text + 1; + if (iStack24 != 1) { + return; + } + } while( true ); } @@ -121919,7 +121062,7 @@ LAB_7f0aeedc: void proc_7F0AEF0C(u32 param_1,u32 param_2,u32 param_3,u32 param_4) { - return; + return; } @@ -121927,7 +121070,7 @@ void proc_7F0AEF0C(u32 param_1,u32 param_2,u32 param_3,u32 param_4) u32 sub_GAME_7F0AEF20(u32 param_1,u32 param_2) { - return param_1; + return param_1; } @@ -121935,9 +121078,9 @@ u32 sub_GAME_7F0AEF20(u32 param_1,u32 param_2) f32 proc_7F0AEF30(f32 param_1) { - f32 in_f0; - - return in_f0; + f32 in_f0; + + return in_f0; } @@ -121945,22 +121088,22 @@ f32 proc_7F0AEF30(f32 param_1) char * proc_7F0AEF3C(ushort *param_1) { - byte bVar1; - int iVar2; - int iVar3; - - iVar2 = dword_80040FAC * 9; - bVar1 = *(byte *)(param_1 + 1); - dword_80040FAC = dword_80040FAC + 1 & 7; - if ((bVar1 & 7) == 0) { - iVar3 = 0; - } - else { - iVar3 = ((uint)bVar1 & 7) + 0x30; - } - sprintf(&dword_80040F64 + iVar2,"%c%d%c%c",((int)(uint)*param_1 >> 0xf) + 0x70, - (ulonglong)*param_1 & 0x7fff,((int)(uint)bVar1 >> 3) + 0x61,iVar3); - return (char *)(&dword_80040F64 + iVar2); + byte bVar1; + int iVar2; + int iVar3; + + iVar2 = dword_80040FAC * 9; + bVar1 = *(byte *)(param_1 + 1); + dword_80040FAC = dword_80040FAC + 1 & 7; + if ((bVar1 & 7) == 0) { + iVar3 = 0; + } + else { + iVar3 = ((uint)bVar1 & 7) + 0x30; + } + sprintf(&dword_80040F64 + iVar2,"%c%d%c%c",((int)(uint)*param_1 >> 0xf) + 0x70, + (ulonglong)*param_1 & 0x7fff,((int)(uint)bVar1 >> 3) + 0x61,iVar3); + return (char *)(&dword_80040F64 + iVar2); } @@ -121968,10 +121111,10 @@ char * proc_7F0AEF3C(ushort *param_1) char * proc_7F0AEFE0(ushort *param_1) { - char *pcVar1; - - pcVar1 = proc_7F0AEF3C(param_1); - return pcVar1; + char *pcVar1; + + pcVar1 = proc_7F0AEF3C(param_1); + return pcVar1; } @@ -121979,7 +121122,7 @@ char * proc_7F0AEFE0(ushort *param_1) undefined8 proc_7F0AF000(void) { - return 0; + return 0; } @@ -121987,8 +121130,8 @@ undefined8 proc_7F0AF000(void) void something_stan_c_debug_related(void) { - get_ptr_debug_notice_list_entry(&stan_c_debug_notice_list_entry,"stan_c_debug"); - return; + get_ptr_debug_notice_list_entry(&stan_c_debug_notice_list_entry,"stan_c_debug"); + return; } @@ -121996,97 +121139,97 @@ void something_stan_c_debug_related(void) void proc_7F0AF038(void) { - byte bVar1; - undefined4 *puVar2; - int iVar3; - int *piVar4; - ulonglong uVar5; - ulonglong uVar6; - ulonglong uVar7; - uint uVar8; - short sVar9; - int *piVar10; - int iVar11; - int *piVar12; - short *psVar13; - short sVar14; - - DAT_8007b9dc = 0; - DAT_8007b128 = 0; - DAT_8007b12c = 0; - uVar6 = 0xff; - DAT_8007b130 = 0; - puVar2 = &DAT_8007b134; - do { - puVar2 = puVar2 + 4; - *puVar2 = 0; - puVar2[1] = 0; - puVar2[2] = 0; - puVar2[3] = 0; - puVar2 = puVar2; - } while (puVar2 != (undefined4 *)&DAT_8007b354); - piVar4 = *(int **)(clippingfile + 4); - if (*piVar4 != 0) { - bVar1 = *(byte *)((int)piVar4 + 3); - uVar5 = 0xff; - while( true ) { - uVar7 = (ulonglong)bVar1; - iVar3 = 0; - if (uVar5 == uVar7) { - sVar9 = *(short *)((int)piVar4 + 6); - uVar7 = uVar5; - } - else { - if ((longlong)DAT_8007b9dc <= (longlong)uVar7) { - DAT_8007b9dc = (uint)bVar1 + 1; - } - uVar8 = (uint)bVar1; - *(int **)(&DAT_8007b128 + (uint)bVar1) = piVar4; - (&DAT_8007b35c)[uVar8 * 6] = 0x7fff; - (&DAT_8007b362)[uVar8 * 6] = 0x8000; - (&DAT_8007b35a)[uVar8 * 6] = (&DAT_8007b35c)[uVar8 * 6]; - (&DAT_8007b358)[uVar8 * 6] = (&DAT_8007b35c)[uVar8 * 6]; - (&DAT_8007b360)[uVar8 * 6] = (&DAT_8007b362)[uVar8 * 6]; - (&DAT_8007b35e)[uVar8 * 6] = (&DAT_8007b362)[uVar8 * 6]; - sVar9 = *(short *)((int)piVar4 + 6); - uVar6 = uVar7; - } - uVar8 = (int)sVar9 >> 0xc & 0xf; - if (uVar8 != 0) { - piVar10 = piVar4; - do { - iVar11 = 0; - psVar13 = &DAT_8007b358 + (int)uVar6 * 6; - piVar12 = piVar10; - do { - sVar9 = *(short *)(piVar12 + 2); - iVar11 += 2; - if (sVar9 < *psVar13) { - *psVar13 = sVar9; - sVar9 = *(short *)(piVar12 + 2); - sVar14 = psVar13[3]; + byte bVar1; + undefined4 *puVar2; + int iVar3; + int *piVar4; + ulonglong uVar5; + ulonglong uVar6; + ulonglong uVar7; + uint uVar8; + short sVar9; + int *piVar10; + int iVar11; + int *piVar12; + short *psVar13; + short sVar14; + + DAT_8007b9dc = 0; + DAT_8007b128 = 0; + DAT_8007b12c = 0; + uVar6 = 0xff; + DAT_8007b130 = 0; + puVar2 = &DAT_8007b134; + do { + puVar2 = puVar2 + 4; + *puVar2 = 0; + puVar2[1] = 0; + puVar2[2] = 0; + puVar2[3] = 0; + puVar2 = puVar2; + } while (puVar2 != (undefined4 *)&DAT_8007b354); + piVar4 = *(int **)(clippingfile + 4); + if (*piVar4 != 0) { + bVar1 = *(byte *)((int)piVar4 + 3); + uVar5 = 0xff; + while( true ) { + uVar7 = (ulonglong)bVar1; + iVar3 = 0; + if (uVar5 == uVar7) { + sVar9 = *(short *)((int)piVar4 + 6); + uVar7 = uVar5; } else { - sVar14 = psVar13[3]; + if ((longlong)DAT_8007b9dc <= (longlong)uVar7) { + DAT_8007b9dc = (uint)bVar1 + 1; + } + uVar8 = (uint)bVar1; + *(int **)(&DAT_8007b128 + bVar1) = piVar4; + (&DAT_8007b35c)[uVar8 * 6] = 0x7fff; + (&DAT_8007b362)[uVar8 * 6] = 0x8000; + (&DAT_8007b35a)[uVar8 * 6] = (&DAT_8007b35c)[uVar8 * 6]; + (&DAT_8007b358)[uVar8 * 6] = (&DAT_8007b35c)[uVar8 * 6]; + (&DAT_8007b360)[uVar8 * 6] = (&DAT_8007b362)[uVar8 * 6]; + (&DAT_8007b35e)[uVar8 * 6] = (&DAT_8007b362)[uVar8 * 6]; + sVar9 = *(short *)((int)piVar4 + 6); + uVar6 = uVar7; } - piVar12 = (int *)((int)piVar12 + 2); - if (sVar14 < sVar9) { - psVar13[3] = sVar9; + uVar8 = (int)sVar9 >> 0xc & 0xf; + if (uVar8 != 0) { + piVar10 = piVar4; + do { + iVar11 = 0; + psVar13 = &DAT_8007b358 + (int)uVar6 * 6; + piVar12 = piVar10; + do { + sVar9 = *(short *)(piVar12 + 2); + iVar11 += 2; + if (sVar9 < *psVar13) { + *psVar13 = sVar9; + sVar9 = *(short *)(piVar12 + 2); + sVar14 = psVar13[3]; + } + else { + sVar14 = psVar13[3]; + } + piVar12 = (int *)((int)piVar12 + 2); + if (sVar14 < sVar9) { + psVar13[3] = sVar9; + } + psVar13 = psVar13 + 1; + } while (iVar11 != 6); + iVar3 += 1; + piVar10 = piVar10 + 2; + uVar8 = (int)*(short *)((int)piVar4 + 6) >> 0xc & 0xf; + } while (iVar3 < (int)uVar8); } - psVar13 = psVar13 + 1; - } while (iVar11 != 6); - iVar3 += 1; - piVar10 = piVar10 + 2; - uVar8 = (int)*(short *)((int)piVar4 + 6) >> 0xc & 0xf; - } while (iVar3 < (int)uVar8); - } - piVar4 = (int *)((uint)(byte)list_of_tilesizes[uVar8] + (int)piVar4); - if (*piVar4 == 0) break; - bVar1 = *(byte *)((int)piVar4 + 3); - uVar5 = uVar7; + piVar4 = (int *)((uint)(byte)list_of_tilesizes[uVar8] + (int)piVar4); + if (*piVar4 == 0) break; + bVar1 = *(byte *)((int)piVar4 + 3); + uVar5 = uVar7; + } } - } - return; + return; } @@ -122097,169 +121240,162 @@ void proc_7F0AF038(void) int * proc_7F0AF20C(float *param_1,byte *param_2,float *param_3) { - byte bVar1; - int *piVar2; - byte *pbVar4; - ulonglong uVar3; - longlong lVar5; - int iVar6; - int *piVar7; - ulonglong uVar8; - int iVar9; - float fVar10; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float in_f14; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float fVar11; - float fVar12; - int **ppiStack88; - float afStack76 [2]; - float fStack68; - int iStack64; - int *piStack44; - int *apiStack40 [3]; - short sStack28; - short sStack26; - short sStack24; - float fStack16; - float fStack12; - float fStack8; - - piStack44 = NULL; - fStack16 = *param_1 * flt_80040F44; - fStack12 = param_1[1] * flt_80040F44; - fStack8 = param_1[2] * flt_80040F44; - if (flt_800585CC < fStack12) { - fStack12 = flt_800585CC; - } - uVar8 = 0; - fVar10 = flt_800585D4; - if (flt_800585D4 <= fStack12) { - fVar10 = fStack12; - } - lVar5 = (longlong)DAT_8007b9dc; - sStack24 = (short)(int)fStack8; - sStack26 = (short)(int)fVar10; - sStack28 = (short)(int)fStack16; - fVar12 = flt_800585D0; - if (0 < lVar5) { - ppiStack88 = (int **)&DAT_8007b128; + byte bVar1; + int *piVar2; + byte *pbVar4; + ulonglong uVar3; + longlong lVar5; + int iVar6; + int *piVar7; + ulonglong uVar8; + int iVar9; + float fVar10; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float fVar11; + float in_f14; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float fVar12; + int **ppiStack88; + float afStack76 [2]; + float fStack68; + int iStack64; + int *piStack44; + int *apiStack40 [3]; + short sStack28; + short sStack26; + short sStack24; + float fStack16; + float fStack12; + float fStack8; + + piStack44 = NULL; + fStack16 = *param_1 * flt_80040F44; + fStack12 = param_1[1] * flt_80040F44; + fStack8 = param_1[2] * flt_80040F44; + if (flt_800585CC < fStack12) { + fStack12 = flt_800585CC; + } + uVar8 = 0; + fVar11 = flt_800585D4; + if (flt_800585D4 <= fStack12) { + fVar11 = fStack12; + } + lVar5 = (longlong)DAT_8007b9dc; + sStack24 = (short)(int)fStack8; + sStack26 = (short)(int)fVar11; + sStack28 = (short)(int)fStack16; fVar12 = flt_800585D0; - fStack12 = fVar10; - do { - iVar9 = (int)uVar8; - piVar7 = *ppiStack88; - if (((((piVar7 != NULL) && ((short)(&DAT_8007b358)[iVar9 * 6] <= sStack28)) && - (sStack28 <= (short)(&DAT_8007b35e)[iVar9 * 6])) && - (((short)(&DAT_8007b35c)[iVar9 * 6] <= sStack24 && - (sStack24 <= (short)(&DAT_8007b362)[iVar9 * 6])))) && - ((short)(&DAT_8007b35a)[iVar9 * 6] <= sStack26)) { - if (param_2 == NULL) { - iVar6 = *piVar7; + if (0 < lVar5) { + ppiStack88 = (int **)&DAT_8007b128; + fStack12 = fVar11; + do { + iVar9 = (int)uVar8; + piVar7 = *ppiStack88; + if (((((piVar7 != NULL) && ((short)(&DAT_8007b358)[iVar9 * 6] <= sStack28)) && + (sStack28 <= (short)(&DAT_8007b35e)[iVar9 * 6])) && + (((short)(&DAT_8007b35c)[iVar9 * 6] <= sStack24 && + (sStack24 <= (short)(&DAT_8007b362)[iVar9 * 6])))) && + ((short)(&DAT_8007b35a)[iVar9 * 6] <= sStack26)) { + if (param_2 == NULL) { + iVar6 = *piVar7; LAB_7f0af41c: - if (iVar6 != 0) { - bVar1 = *(byte *)((int)piVar7 + 3); - while (uVar8 == (ulonglong)bVar1) { - lVar5 = 0; - do { - fVar10 = proc_7F0AFE70((int)piVar7,lVar5,fVar10,in_f14); - lVar5 = (longlong)((int)lVar5 + 1); - if (fVar10 < -2.00000000) { - iVar6 = (int)*(short *)((int)piVar7 + 6); - fVar10 = extraout_f12; - in_f14 = extraout_f14; - goto LAB_7f0af508; - } - if (fVar10 < 2.00000000) { - iStack64 = 1; - } - fVar10 = extraout_f12; - in_f14 = extraout_f14; - } while (lVar5 != 3); - uVar3 = proc_7F0AF760((int)piVar7); - if (uVar3 == 0) { - if (iStack64 == 0) { + if (iVar6 != 0) { + bVar1 = *(byte *)((int)piVar7 + 3); + while (uVar8 == (ulonglong)bVar1) { + lVar5 = 0; + do { + fVar10 = proc_7F0AFE70((int)piVar7,lVar5,fVar11,in_f14); + lVar5 = (longlong)((int)lVar5 + 1); + fVar11 = extraout_f12; + in_f14 = extraout_f14; + if (fVar10 < -2.00000000) { + iVar6 = (int)*(short *)((int)piVar7 + 6); + goto LAB_7f0af508; + } + if (fVar10 < 2.00000000) { + iStack64 = 1; + } + } while (lVar5 != 3); + uVar3 = proc_7F0AF760((int)piVar7); + if (uVar3 == 0) { + if (iStack64 == 0) { code_r0x7f0af4cc: - fVar11 = (float)proc_7F0B2970(); - if (param_1[1] < fVar11) { - iVar6 = (int)*(short *)((int)piVar7 + 6); - fVar10 = extraout_f12_03; - in_f14 = extraout_f14_03; - } - else { - fVar10 = extraout_f12_03; - in_f14 = extraout_f14_03; - piVar2 = piVar7; - if (fVar12 < fVar11) goto LAB_7f0af504; - iVar6 = (int)*(short *)((int)piVar7 + 6); - fVar10 = extraout_f12_03; - in_f14 = extraout_f14_03; - } + fVar10 = (float)proc_7F0B2970(); + fVar11 = extraout_f12_03; + in_f14 = extraout_f14_03; + if (param_1[1] < fVar10) { + iVar6 = (int)*(short *)((int)piVar7 + 6); + } + else { + piVar2 = piVar7; + if (fVar12 < fVar10) goto LAB_7f0af504; + iVar6 = (int)*(short *)((int)piVar7 + 6); + } + } + else { + proc_7F0AF924((int)piVar7,afStack76); + apiStack40[0] = piVar7; + proc_7F0B0BE4((int *)apiStack40,extraout_f12_01,extraout_f14_01, + afStack76[0],fStack68); + fVar11 = extraout_f12_02; + in_f14 = extraout_f14_02; + fVar10 = fVar12; + piVar2 = piStack44; + if ((uVar3 != 0) && (apiStack40[0] == piVar7)) + goto code_r0x7f0af4cc; +LAB_7f0af504: + piStack44 = piVar2; + iVar6 = (int)*(short *)((int)piVar7 + 6); + fVar12 = fVar10; + } + } + else { + iVar6 = (int)*(short *)((int)piVar7 + 6); + fVar11 = extraout_f12_00; + in_f14 = extraout_f14_00; + } +LAB_7f0af508: + piVar7 = (int *)((uint)(byte)list_of_tilesizes[iVar6 >> 0xc & 0xf] + + (int)piVar7); + if (*piVar7 == 0) break; + bVar1 = *(byte *)((int)piVar7 + 3); + } + } + lVar5 = (longlong)DAT_8007b9dc; } else { - proc_7F0AF924((int)piVar7,afStack76); - apiStack40[0] = piVar7; - proc_7F0B0BE4((int *)apiStack40,extraout_f12_01,extraout_f14_01,afStack76[0], - fStack68); - fVar10 = extraout_f12_02; - in_f14 = extraout_f14_02; - fVar11 = fVar12; - piVar2 = piStack44; - if ((uVar3 != 0) && - (fVar10 = extraout_f12_02, in_f14 = extraout_f14_02, fVar11 = fVar12, - piVar2 = piStack44, apiStack40[0] == piVar7)) goto code_r0x7f0af4cc; -LAB_7f0af504: - piStack44 = piVar2; - iVar6 = (int)*(short *)((int)piVar7 + 6); - fVar12 = fVar11; + iVar6 = 0; + if (*param_2 != 0xff) { + bVar1 = *param_2; + pbVar4 = param_2; + do { + if (uVar8 == (ulonglong)bVar1) { + iVar6 = *piVar7; + goto LAB_7f0af41c; + } + bVar1 = pbVar4[1]; + iVar6 += 1; + pbVar4 = pbVar4 + 1; + } while ((bVar1 != 0xff) && (iVar6 != 4)); + } } - } - else { - iVar6 = (int)*(short *)((int)piVar7 + 6); - fVar10 = extraout_f12_00; - in_f14 = extraout_f14_00; - } -LAB_7f0af508: - piVar7 = (int *)((uint)(byte)list_of_tilesizes[iVar6 >> 0xc & 0xf] + (int)piVar7); - if (*piVar7 == 0) break; - bVar1 = *(byte *)((int)piVar7 + 3); } - } - lVar5 = (longlong)DAT_8007b9dc; - } - else { - iVar6 = 0; - if (*param_2 != 0xff) { - bVar1 = *param_2; - pbVar4 = param_2; - do { - if (uVar8 == (ulonglong)bVar1) { - iVar6 = *piVar7; - goto LAB_7f0af41c; - } - bVar1 = pbVar4[1]; - iVar6 += 1; - pbVar4 = pbVar4 + 1; - } while ((bVar1 != 0xff) && (iVar6 != 4)); - } - } - } - uVar8 = SEXT48(iVar9 + 1); - ppiStack88 = ppiStack88 + 1; - } while ((longlong)uVar8 < lVar5); - } - if ((piStack44 != NULL) && (param_3 != NULL)) { - *param_3 = fVar12; - } - return piStack44; + uVar8 = SEXT48(iVar9 + 1); + ppiStack88 = ppiStack88 + 1; + } while ((longlong)uVar8 < lVar5); + } + if ((piStack44 != NULL) && (param_3 != NULL)) { + *param_3 = fVar12; + } + return piStack44; } @@ -122267,18 +121403,18 @@ LAB_7f0af508: void proc_7F0AF5B8(int param_1) { - byte *pbVar1; - - dword_80040FB0 = 1; - base_ptr_connection_vals = *(int *)(param_1 + 4) + -0x80; - clippingfile = param_1; - pbVar1 = check_token(1,(byte *)"-stanlinelog"); - if (pbVar1 != NULL) { - do_stanlinelog = 1; - } - proc_7F0AF038(); - proc_7F0B2950(1.00000000); - return; + byte *pbVar1; + + dword_80040FB0 = 1; + base_ptr_connection_vals = *(int *)(param_1 + 4) + -0x80; + clippingfile = param_1; + pbVar1 = check_token(1,(byte *)"-stanlinelog"); + if (pbVar1 != NULL) { + do_stanlinelog = 1; + } + proc_7F0AF038(); + proc_7F0B2950(1.00000000); + return; } @@ -122286,7 +121422,7 @@ void proc_7F0AF5B8(int param_1) void removed_7F0AF630(int param_1) { - return; + return; } @@ -122294,61 +121430,61 @@ void removed_7F0AF630(int param_1) int proc_7F0AF638(ushort *param_1,uint param_2,ushort **param_3) { - ushort *puVar1; - bool bVar2; - ulonglong uVar3; - ushort *puVar4; - ushort *puVar5; - uint uVar6; - int iVar7; - int iVar8; - ushort **ppuVar9; - int iVar10; - - iVar10 = 0; - *param_3 = param_1; - iVar8 = 1; - ppuVar9 = param_3 + 1; - puVar1 = *param_3; - while( true ) { - iVar8 += -1; - ppuVar9 = ppuVar9 + -1; - iVar7 = 0; - if ((param_2 & 0xff) != (int)(uint)*puVar1 >> 0xf) { - *puVar1 = *puVar1 ^ 0x8000; - uVar3 = proc_7F0AF760((int)puVar1); - if (uVar3 == 0) { - iVar10 += 1; - } - uVar6 = (int)(short)puVar1[3] >> 0xc & 0xf; - puVar5 = puVar1; - if (uVar6 != 0) { - do { - iVar7 += 1; - if ((int)(uint)puVar5[7] >> 4 == 0) { - bVar2 = iVar7 < (int)uVar6; - } - else { - puVar4 = (ushort *)((uint)puVar5[7] * 8 + base_ptr_connection_vals); - if ((param_2 & 0xff) == (int)(uint)*puVar4 >> 0xf) { - bVar2 = iVar7 < (int)uVar6; + ushort *puVar1; + bool bVar2; + ulonglong uVar3; + ushort *puVar4; + ushort *puVar5; + uint uVar6; + int iVar7; + int iVar8; + ushort **ppuVar9; + int iVar10; + + iVar10 = 0; + *param_3 = param_1; + iVar8 = 1; + ppuVar9 = param_3 + 1; + puVar1 = *param_3; + while( true ) { + iVar8 += -1; + ppuVar9 = ppuVar9 + -1; + iVar7 = 0; + if ((param_2 & 0xff) != (int)(uint)*puVar1 >> 0xf) { + *puVar1 = *puVar1 ^ 0x8000; + uVar3 = proc_7F0AF760((int)puVar1); + if (uVar3 == 0) { + iVar10 += 1; } - else { - *ppuVar9 = puVar4; - iVar8 += 1; - ppuVar9 = ppuVar9 + 1; - uVar6 = (int)(short)puVar1[3] >> 0xc & 0xf; - bVar2 = iVar7 < (int)uVar6; + uVar6 = (int)(short)puVar1[3] >> 0xc & 0xf; + puVar5 = puVar1; + if (uVar6 != 0) { + do { + iVar7 += 1; + if ((int)(uint)puVar5[7] >> 4 == 0) { + bVar2 = iVar7 < (int)uVar6; + } + else { + puVar4 = (ushort *)((uint)puVar5[7] * 8 + base_ptr_connection_vals); + if ((param_2 & 0xff) == (int)(uint)*puVar4 >> 0xf) { + bVar2 = iVar7 < (int)uVar6; + } + else { + *ppuVar9 = puVar4; + iVar8 += 1; + ppuVar9 = ppuVar9 + 1; + uVar6 = (int)(short)puVar1[3] >> 0xc & 0xf; + bVar2 = iVar7 < (int)uVar6; + } + } + puVar5 = puVar5 + 4; + } while (bVar2); } - } - puVar5 = puVar5 + 4; - } while (bVar2); - } + } + if (iVar8 == 0) break; + puVar1 = ppuVar9[-1]; } - if (iVar8 == 0) break; - puVar1 = ppuVar9[-1]; - } - return iVar10; + return iVar10; } @@ -122356,19 +121492,19 @@ int proc_7F0AF638(ushort *param_1,uint param_2,ushort **param_3) ulonglong proc_7F0AF760(int param_1) { - short sVar1; - int iVar2; - int iVar3; - - sVar1 = *(short *)(param_1 + 6); - iVar3 = param_1 + ((int)sVar1 >> 8 & 0xfU) * 8; - iVar2 = param_1 + ((int)sVar1 >> 4 & 0xfU) * 8; - param_1 += ((int)sVar1 & 0xfU) * 8; - return (ulonglong) - (((int)*(short *)(iVar2 + 0xc) - (int)*(short *)(iVar3 + 0xc)) * - ((int)*(short *)(param_1 + 8) - (int)*(short *)(iVar3 + 8)) - - ((int)*(short *)(param_1 + 0xc) - (int)*(short *)(iVar3 + 0xc)) * - ((int)*(short *)(iVar2 + 8) - (int)*(short *)(iVar3 + 8)) == 0); + short sVar1; + int iVar2; + int iVar3; + + sVar1 = *(short *)(param_1 + 6); + iVar3 = param_1 + ((int)sVar1 >> 8 & 0xfU) * 8; + iVar2 = param_1 + ((int)sVar1 >> 4 & 0xfU) * 8; + param_1 += ((int)sVar1 & 0xfU) * 8; + return (ulonglong) + (((int)*(short *)(iVar2 + 0xc) - (int)*(short *)(iVar3 + 0xc)) * + ((int)*(short *)(param_1 + 8) - (int)*(short *)(iVar3 + 8)) - + ((int)*(short *)(param_1 + 0xc) - (int)*(short *)(iVar3 + 0xc)) * + ((int)*(short *)(iVar2 + 8) - (int)*(short *)(iVar3 + 8)) == 0); } @@ -122377,54 +121513,54 @@ int * proc_7F0AF808(float param_1,float param_2,undefined8 param_3,undefined8 pa float param_6) { - ulonglong uVar1; - int iVar3; - longlong lVar2; - int *piVar4; - float fVar5; - f32 extraout_f12; - float extraout_f12_00; - f32 extraout_f14; - float extraout_f14_00; - int *apiStack8 [2]; - - piVar4 = *(int **)(clippingfile + 4); - if (*piVar4 != 0) { - do { - apiStack8[0] = piVar4; - uVar1 = proc_7F0AF760((int)piVar4); - if (uVar1 == 0) { - lVar2._4_4_ = proc_7F0B036C((u32)piVar4,extraout_f12,extraout_f14); - lVar2 = (longlong)(int)lVar2._4_4_; - if (lVar2 == 0) { - iVar3 = (int)*(short *)((int)piVar4 + 6); - } - else { - proc_7F0B20D0((int *)apiStack8,extraout_f12_00,extraout_f14_00,param_1); - if (lVar2 == 0) { - iVar3 = (int)*(short *)((int)piVar4 + 6); - } - else { - if (piVar4 == apiStack8[0]) { - fVar5 = (float)proc_7F0B2970(); - if (fVar5 < param_2) { - return piVar4; - } - iVar3 = (int)*(short *)((int)piVar4 + 6); + ulonglong uVar1; + int iVar3; + longlong lVar2; + int *piVar4; + float fVar5; + f32 extraout_f12; + float extraout_f12_00; + f32 extraout_f14; + float extraout_f14_00; + int *apiStack8 [2]; + + piVar4 = *(int **)(clippingfile + 4); + if (*piVar4 != 0) { + do { + apiStack8[0] = piVar4; + uVar1 = proc_7F0AF760((int)piVar4); + if (uVar1 == 0) { + lVar2._4_4_ = proc_7F0B036C((u32)piVar4,extraout_f12,extraout_f14); + lVar2 = (longlong)(int)lVar2._4_4_; + if (lVar2 == 0) { + iVar3 = (int)*(short *)((int)piVar4 + 6); + } + else { + proc_7F0B20D0((int *)apiStack8,extraout_f12_00,extraout_f14_00,param_1); + if (lVar2 == 0) { + iVar3 = (int)*(short *)((int)piVar4 + 6); + } + else { + if (piVar4 == apiStack8[0]) { + fVar5 = (float)proc_7F0B2970(); + if (fVar5 < param_2) { + return piVar4; + } + iVar3 = (int)*(short *)((int)piVar4 + 6); + } + else { + iVar3 = (int)*(short *)((int)piVar4 + 6); + } + } + } } else { - iVar3 = (int)*(short *)((int)piVar4 + 6); + iVar3 = (int)*(short *)((int)piVar4 + 6); } - } - } - } - else { - iVar3 = (int)*(short *)((int)piVar4 + 6); - } - piVar4 = (int *)((uint)(byte)list_of_tilesizes[iVar3 >> 0xc & 0xf] + (int)piVar4); - } while (*piVar4 != 0); - } - return NULL; + piVar4 = (int *)((uint)(byte)list_of_tilesizes[iVar3 >> 0xc & 0xf] + (int)piVar4); + } while (*piVar4 != 0); + } + return NULL; } @@ -122432,24 +121568,24 @@ int * proc_7F0AF808(float param_1,float param_2,undefined8 param_3,undefined8 pa void proc_7F0AF924(int param_1,float *param_2) { - short sVar1; - int iVar2; - int iVar3; - - sVar1 = *(short *)(param_1 + 6); - iVar3 = param_1 + ((int)sVar1 >> 4 & 0xfU) * 8; - iVar2 = param_1 + ((int)sVar1 >> 8 & 0xfU) * 8; - param_1 += ((int)sVar1 & 0xfU) * 8; - *param_2 = (((float)(int)*(short *)(param_1 + 8) + - (float)(int)*(short *)(iVar2 + 8) + (float)(int)*(short *)(iVar3 + 8)) / 3.00000000) * - flt_80040F48; - param_2[1] = (((float)(int)*(short *)(param_1 + 10) + - (float)(int)*(short *)(iVar2 + 10) + (float)(int)*(short *)(iVar3 + 10)) / - 3.00000000) * flt_80040F48; - param_2[2] = (((float)(int)*(short *)(param_1 + 0xc) + - (float)(int)*(short *)(iVar2 + 0xc) + (float)(int)*(short *)(iVar3 + 0xc)) / - 3.00000000) * flt_80040F48; - return; + short sVar1; + int iVar2; + int iVar3; + + sVar1 = *(short *)(param_1 + 6); + iVar3 = param_1 + ((int)sVar1 >> 4 & 0xfU) * 8; + iVar2 = param_1 + ((int)sVar1 >> 8 & 0xfU) * 8; + param_1 += ((int)sVar1 & 0xfU) * 8; + *param_2 = (((float)(int)*(short *)(param_1 + 8) + + (float)(int)*(short *)(iVar2 + 8) + (float)(int)*(short *)(iVar3 + 8)) / 3.00000000) + * flt_80040F48; + param_2[1] = (((float)(int)*(short *)(param_1 + 10) + + (float)(int)*(short *)(iVar2 + 10) + (float)(int)*(short *)(iVar3 + 10)) / + 3.00000000) * flt_80040F48; + param_2[2] = (((float)(int)*(short *)(param_1 + 0xc) + + (float)(int)*(short *)(iVar2 + 0xc) + (float)(int)*(short *)(iVar3 + 0xc)) / + 3.00000000) * flt_80040F48; + return; } @@ -122457,24 +121593,24 @@ void proc_7F0AF924(int param_1,float *param_2) void proc_7F0AFA1C(int param_1,undefined8 param_2,float *param_3) { - float fVar1; - float fVar2; - int iVar3; - float fStack12; - float fStack8; - float fStack4; - - iVar3 = param_1 + ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; - *param_3 = (float)(int)*(short *)(iVar3 + 8) * flt_80040F48; - param_3[1] = (float)(int)*(short *)(iVar3 + 10) * flt_80040F48; - param_3[2] = (float)(int)*(short *)(iVar3 + 0xc) * flt_80040F48; - proc_7F0AF924(param_1,&fStack12); - fVar2 = flt_800585DC; - fVar1 = flt_800585D8; - *param_3 = fStack12 * flt_800585D8 + flt_800585DC * *param_3; - param_3[1] = fStack8 * fVar1 + fVar2 * param_3[1]; - param_3[2] = fStack4 * fVar1 + fVar2 * param_3[2]; - return; + float fVar1; + float fVar2; + int iVar3; + float fStack12; + float fStack8; + float fStack4; + + iVar3 = param_1 + ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; + *param_3 = (float)(int)*(short *)(iVar3 + 8) * flt_80040F48; + param_3[1] = (float)(int)*(short *)(iVar3 + 10) * flt_80040F48; + param_3[2] = (float)(int)*(short *)(iVar3 + 0xc) * flt_80040F48; + proc_7F0AF924(param_1,&fStack12); + fVar2 = flt_800585DC; + fVar1 = flt_800585D8; + *param_3 = fStack12 * flt_800585D8 + flt_800585DC * *param_3; + param_3[1] = fStack8 * fVar1 + fVar2 * param_3[1]; + param_3[2] = fStack4 * fVar1 + fVar2 * param_3[2]; + return; } @@ -122482,9 +121618,9 @@ void proc_7F0AFA1C(int param_1,undefined8 param_2,float *param_3) float proc_7F0AFB1C(float *param_1,float *param_2) { - return (param_2[2] - param_1[2]) * (param_2[2] - param_1[2]) + - (*param_2 - *param_1) * (*param_2 - *param_1) + - (param_2[1] - param_1[1]) * (param_2[1] - param_1[1]); + return (param_2[2] - param_1[2]) * (param_2[2] - param_1[2]) + + (*param_2 - *param_1) * (*param_2 - *param_1) + + (param_2[1] - param_1[1]) * (param_2[1] - param_1[1]); } @@ -122492,74 +121628,75 @@ float proc_7F0AFB1C(float *param_1,float *param_2) int * proc_7F0AFB78(float *param_1,undefined4 *param_2,float *param_3,float param_4) { - ushort uVar1; - ulonglong uVar2; - longlong lVar3; - int *piVar4; - float fVar5; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float extraout_f14_00; - float fVar6; - float fVar7; - float fStack48; - undefined4 uStack44; - float fStack40; - float fStack36; - undefined4 uStack32; - float fStack28; - int *piStack16; - int *apiStack12 [3]; - - piStack16 = NULL; - fStack36 = *param_1; - uStack32 = *param_2; - fStack28 = *param_3; - fVar7 = 4294967296.00000000; - piVar4 = *(int **)(clippingfile + 4); - if (*piVar4 != 0) { - uVar1 = *(ushort *)piVar4; - while( true ) { - if ((int)(uint)uVar1 >> 0xf == 1) { - uVar1 = *(ushort *)((int)piVar4 + 6); - } - else { - uVar2 = proc_7F0AF760((int)piVar4); - lVar3 = 0; - if (uVar2 == 0) { - do { - if (lVar3 == 3) { - proc_7F0AF924((int)piVar4,&fStack48); - fVar5 = extraout_f12; - fVar6 = extraout_f14; + ushort uVar1; + ulonglong uVar2; + longlong lVar3; + int *piVar4; + float fVar5; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float extraout_f14_00; + float fVar6; + float fVar7; + float fStack48; + undefined4 uStack44; + float fStack40; + float fStack36; + undefined4 uStack32; + float fStack28; + int *piStack16; + int *apiStack12 [3]; + + piStack16 = NULL; + fStack36 = *param_1; + uStack32 = *param_2; + fStack28 = *param_3; + fVar7 = 4294967296.00000000; + piVar4 = *(int **)(clippingfile + 4); + if (*piVar4 != 0) { + uVar1 = *(ushort *)piVar4; + while( true ) { + if ((int)(uint)uVar1 >> 0xf == 1) { + uVar1 = *(ushort *)((int)piVar4 + 6); } else { - proc_7F0AFA1C((int)piVar4,lVar3,&fStack48); - fVar5 = extraout_f12_00; - fVar6 = extraout_f14_00; + uVar2 = proc_7F0AF760((int)piVar4); + lVar3 = 0; + if (uVar2 == 0) { + do { + if (lVar3 == 3) { + proc_7F0AF924((int)piVar4,&fStack48); + fVar5 = extraout_f12; + fVar6 = extraout_f14; + } + else { + proc_7F0AFA1C((int)piVar4,lVar3,&fStack48); + fVar5 = extraout_f12_00; + fVar6 = extraout_f14_00; + } + apiStack12[0] = piVar4; + proc_7F0B20D0((int *)apiStack12,fVar5,fVar6,fStack48); + if (((longlong)uVar2 < 0) && + (fVar5 = proc_7F0AFB1C(&fStack48,&fStack36), fVar5 < fVar7)) { + *param_1 = fStack48; + *param_2 = uStack44; + *param_3 = fStack40; + fVar7 = fVar5; + piStack16 = piVar4; + } + lVar3 = (longlong)((int)lVar3 + 1); + } while (lVar3 != 4); + } + uVar1 = *(ushort *)((int)piVar4 + 6); } - apiStack12[0] = piVar4; - proc_7F0B20D0((int *)apiStack12,fVar5,fVar6,fStack48); - if (((longlong)uVar2 < 0) && (fVar5 = proc_7F0AFB1C(&fStack48,&fStack36), fVar5 < fVar7) - ) { - *param_1 = fStack48; - *param_2 = uStack44; - *param_3 = fStack40; - fVar7 = fVar5; - piStack16 = piVar4; - } - lVar3 = (longlong)((int)lVar3 + 1); - } while (lVar3 != 4); + piVar4 = (int *)((uint)(byte)list_of_tilesizes[(int)(short)uVar1 >> 0xc & 0xf] + + (int)piVar4); + if (*piVar4 == 0) break; + uVar1 = *(ushort *)piVar4; } - uVar1 = *(ushort *)((int)piVar4 + 6); - } - piVar4 = (int *)((uint)(byte)list_of_tilesizes[(int)(short)uVar1 >> 0xc & 0xf] + (int)piVar4); - if (*piVar4 == 0) break; - uVar1 = *(ushort *)piVar4; } - } - return piStack16; + return piStack16; } @@ -122567,36 +121704,36 @@ int * proc_7F0AFB78(float *param_1,undefined4 *param_2,float *param_3,float para float proc_7F0AFD1C(int param_1,int param_2,float param_3,float param_4) { - int iVar1; - float in_a2_lo; - float in_a3_lo; - uint uVar2; - float fVar3; - float fVar4; - float fVar5; - - uVar2 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; - iVar1 = param_1 + ((param_2 + 1) % uVar2) * 8; - param_1 += param_2 * 8; - fVar4 = (float)((int)*(short *)(iVar1 + 8) - (int)*(short *)(param_1 + 8)); - if (uVar2 == 0) { - trap(0x1c00); - } - if ((uVar2 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { - trap(0x1800); - } - fVar5 = (float)((int)*(short *)(iVar1 + 0xc) - (int)*(short *)(param_1 + 0xc)); - fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); - if (fVar3 == 0.00000000) { - fVar4 = in_a2_lo - (float)(int)*(short *)(iVar1 + 8); - fVar3 = in_a3_lo - (float)(int)*(short *)(iVar1 + 0xc); - fVar3 = sqrtf(fVar4 * fVar4 + fVar3 * fVar3); - } - else { - fVar3 = ((in_a3_lo - (float)(int)*(short *)(param_1 + 0xc)) * -fVar4 + - fVar5 * (in_a2_lo - (float)(int)*(short *)(param_1 + 8))) / fVar3; - } - return fVar3; + int iVar1; + float in_a2_lo; + float in_a3_lo; + uint uVar2; + float fVar3; + float fVar4; + float fVar5; + + uVar2 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; + iVar1 = param_1 + ((param_2 + 1) % uVar2) * 8; + param_1 += param_2 * 8; + fVar4 = (float)((int)*(short *)(iVar1 + 8) - (int)*(short *)(param_1 + 8)); + if (uVar2 == 0) { + trap(0x1c00); + } + if ((uVar2 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { + trap(0x1800); + } + fVar5 = (float)((int)*(short *)(iVar1 + 0xc) - (int)*(short *)(param_1 + 0xc)); + fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); + if (fVar3 == 0.00000000) { + fVar4 = in_a2_lo - (float)(int)*(short *)(iVar1 + 8); + fVar3 = in_a3_lo - (float)(int)*(short *)(iVar1 + 0xc); + fVar3 = sqrtf(fVar4 * fVar4 + fVar3 * fVar3); + } + else { + fVar3 = ((in_a3_lo - (float)(int)*(short *)(param_1 + 0xc)) * -fVar4 + + fVar5 * (in_a2_lo - (float)(int)*(short *)(param_1 + 8))) / fVar3; + } + return fVar3; } @@ -122604,35 +121741,35 @@ float proc_7F0AFD1C(int param_1,int param_2,float param_3,float param_4) float proc_7F0AFE70(int param_1,longlong param_2,float param_3,float param_4) { - int iVar1; - float in_a2_lo; - int iVar2; - float in_a3_lo; - float fVar3; - float fVar4; - float fVar5; - - if (param_2 == 2) { - iVar1 = 0; - } - else { - iVar1 = (int)param_2 + 1; - } - iVar2 = param_1 + ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; - param_1 += ((int)*(short *)(param_1 + 6) >> (iVar1 * -4 + 8U & 0x1f) & 0xfU) * 8; - fVar4 = (float)((int)*(short *)(param_1 + 8) - (int)*(short *)(iVar2 + 8)); - fVar5 = (float)((int)*(short *)(param_1 + 0xc) - (int)*(short *)(iVar2 + 0xc)); - fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); - if (fVar3 == 0.00000000) { - fVar3 = in_a2_lo - (float)(int)*(short *)(param_1 + 8); - fVar4 = in_a3_lo - (float)(int)*(short *)(param_1 + 0xc); - fVar3 = sqrtf(fVar3 * fVar3 + fVar4 * fVar4); - } - else { - fVar3 = ((in_a3_lo - (float)(int)*(short *)(iVar2 + 0xc)) * -fVar4 + - fVar5 * (in_a2_lo - (float)(int)*(short *)(iVar2 + 8))) / fVar3; - } - return fVar3; + int iVar1; + float in_a2_lo; + int iVar2; + float in_a3_lo; + float fVar3; + float fVar4; + float fVar5; + + if (param_2 == 2) { + iVar1 = 0; + } + else { + iVar1 = (int)param_2 + 1; + } + iVar2 = param_1 + ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; + param_1 += ((int)*(short *)(param_1 + 6) >> (iVar1 * -4 + 8U & 0x1f) & 0xfU) * 8; + fVar4 = (float)((int)*(short *)(param_1 + 8) - (int)*(short *)(iVar2 + 8)); + fVar5 = (float)((int)*(short *)(param_1 + 0xc) - (int)*(short *)(iVar2 + 0xc)); + fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); + if (fVar3 == 0.00000000) { + fVar3 = in_a2_lo - (float)(int)*(short *)(param_1 + 8); + fVar4 = in_a3_lo - (float)(int)*(short *)(param_1 + 0xc); + fVar3 = sqrtf(fVar3 * fVar3 + fVar4 * fVar4); + } + else { + fVar3 = ((in_a3_lo - (float)(int)*(short *)(iVar2 + 0xc)) * -fVar4 + + fVar5 * (in_a2_lo - (float)(int)*(short *)(iVar2 + 8))) / fVar3; + } + return fVar3; } @@ -122640,12 +121777,12 @@ float proc_7F0AFE70(int param_1,longlong param_2,float param_3,float param_4) undefined proc_7F0AFFCC(int param_1,int param_2,float param_3,float param_4) { - undefined in_v0_lo; - float in_a2_lo; - float in_a3_lo; - - proc_7F0AFD1C(param_1,param_2,in_a2_lo,in_a3_lo); - return in_v0_lo; + undefined in_v0_lo; + float in_a2_lo; + float in_a3_lo; + + proc_7F0AFD1C(param_1,param_2,in_a2_lo,in_a3_lo); + return in_v0_lo; } @@ -122653,12 +121790,12 @@ undefined proc_7F0AFFCC(int param_1,int param_2,float param_3,float param_4) undefined proc_7F0B0018(int param_1,longlong param_2,float param_3,float param_4) { - undefined in_v0_lo; - float in_a2_lo; - float in_a3_lo; - - proc_7F0AFE70(param_1,param_2,in_a2_lo,in_a3_lo); - return in_v0_lo; + undefined in_v0_lo; + float in_a2_lo; + float in_a3_lo; + + proc_7F0AFE70(param_1,param_2,in_a2_lo,in_a3_lo); + return in_v0_lo; } @@ -122666,16 +121803,16 @@ undefined proc_7F0B0018(int param_1,longlong param_2,float param_3,float param_4 void proc_7F0B0064(int param_1,int param_2,float param_3,float param_4) { - float in_a2_lo; - float in_a3_lo; - float fVar1; - float fVar2; - - param_1 += param_2 * 8; - fVar2 = in_a3_lo - (float)(int)*(short *)(param_1 + 0xc); - fVar1 = in_a2_lo - (float)(int)*(short *)(param_1 + 8); - sqrtf(fVar1 * fVar1 + fVar2 * fVar2); - return; + float in_a2_lo; + float in_a3_lo; + float fVar1; + float fVar2; + + param_1 += param_2 * 8; + fVar2 = in_a3_lo - (float)(int)*(short *)(param_1 + 0xc); + fVar1 = in_a2_lo - (float)(int)*(short *)(param_1 + 8); + sqrtf(fVar1 * fVar1 + fVar2 * fVar2); + return; } @@ -122683,16 +121820,16 @@ void proc_7F0B0064(int param_1,int param_2,float param_3,float param_4) float proc_7F0B00C4(int param_1,int param_2,float param_3,float param_4) { - float in_a2_lo; - float in_a3_lo; - float fVar1; - float fVar2; - - param_1 += param_2 * 8; - fVar1 = in_a2_lo * flt_80040F44 - (float)(int)*(short *)(param_1 + 8); - fVar2 = in_a3_lo * flt_80040F44 - (float)(int)*(short *)(param_1 + 0xc); - fVar1 = sqrtf(fVar1 * fVar1 + fVar2 * fVar2); - return fVar1 * flt_80040F48; + float in_a2_lo; + float in_a3_lo; + float fVar1; + float fVar2; + + param_1 += param_2 * 8; + fVar1 = in_a2_lo * flt_80040F44 - (float)(int)*(short *)(param_1 + 8); + fVar2 = in_a3_lo * flt_80040F44 - (float)(int)*(short *)(param_1 + 0xc); + fVar1 = sqrtf(fVar1 * fVar1 + fVar2 * fVar2); + return fVar1 * flt_80040F48; } @@ -122700,12 +121837,12 @@ float proc_7F0B00C4(int param_1,int param_2,float param_3,float param_4) float proc_7F0B0140(int param_1,int param_2,float param_3,float param_4) { - float in_a2_lo; - float in_a3_lo; - - param_1 += param_2 * 8; - return ((float)(int)*(short *)(param_1 + 0xc) * in_a3_lo * flt_80040F44 + - in_a2_lo * flt_80040F44 * (float)(int)*(short *)(param_1 + 8)) * flt_80040F48; + float in_a2_lo; + float in_a3_lo; + + param_1 += param_2 * 8; + return ((float)(int)*(short *)(param_1 + 0xc) * in_a3_lo * flt_80040F44 + + in_a2_lo * flt_80040F44 * (float)(int)*(short *)(param_1 + 8)) * flt_80040F48; } @@ -122713,38 +121850,38 @@ float proc_7F0B0140(int param_1,int param_2,float param_3,float param_4) ulonglong proc_7F0B0198(int param_1,int param_2,float param_3,float param_4) { - int iVar2; - ulonglong uVar1; - float in_a2_lo; - float in_a3_lo; - uint uVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - - uVar3 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; - iVar2 = param_1 + param_2 * 8; - param_1 += ((param_2 + 1) % uVar3) * 8; - fVar4 = (float)(int)*(short *)(iVar2 + 8); - fVar5 = (float)(int)*(short *)(iVar2 + 0xc); - if (uVar3 == 0) { - trap(0x1c00); - } - if ((uVar3 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { - trap(0x1800); - } - fVar7 = (float)(int)*(short *)(param_1 + 8) - fVar4; - fVar8 = (float)(int)*(short *)(param_1 + 0xc) - fVar5; - fVar6 = fVar7 * fVar7 + fVar8 * fVar8; - fVar4 = (in_a2_lo - fVar4) * fVar7 + (in_a3_lo - fVar5) * fVar8; - if ((((fVar4 <= fVar6) || (uVar1 = (ulonglong)(fVar4 < 0.00000000), fVar4 >= 0.00000000)) && - (uVar1 = (ulonglong)(0.00000000 < fVar4), 0.00000000 < fVar4)) && (uVar1 = 0, fVar4 < fVar6)) - { - uVar1 = 1; - } - return uVar1; + int iVar2; + ulonglong uVar1; + float in_a2_lo; + float in_a3_lo; + uint uVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + + uVar3 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; + iVar2 = param_1 + param_2 * 8; + param_1 += ((param_2 + 1) % uVar3) * 8; + fVar4 = (float)(int)*(short *)(iVar2 + 8); + fVar5 = (float)(int)*(short *)(iVar2 + 0xc); + if (uVar3 == 0) { + trap(0x1c00); + } + if ((uVar3 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { + trap(0x1800); + } + fVar7 = (float)(int)*(short *)(param_1 + 8) - fVar4; + fVar8 = (float)(int)*(short *)(param_1 + 0xc) - fVar5; + fVar6 = fVar7 * fVar7 + fVar8 * fVar8; + fVar4 = (in_a2_lo - fVar4) * fVar7 + (in_a3_lo - fVar5) * fVar8; + if ((((fVar4 <= fVar6) || (uVar1 = (ulonglong)(fVar4 < 0.00000000), fVar4 >= 0.00000000)) && + (uVar1 = (ulonglong)(0.00000000 < fVar4), 0.00000000 < fVar4)) && (uVar1 = 0, fVar4 < fVar6) + ) { + uVar1 = 1; + } + return uVar1; } @@ -122752,25 +121889,25 @@ ulonglong proc_7F0B0198(int param_1,int param_2,float param_3,float param_4) undefined8 proc_7F0B02D8(void) { - int in_a0_lo; - longlong lVar1; - float fVar2; - float in_f12; - float extraout_f12; - float in_f14; - float extraout_f14; - - lVar1 = 0; - do { - fVar2 = proc_7F0AFE70(in_a0_lo,lVar1,in_f12,in_f14); - lVar1 = (longlong)((int)lVar1 + 1); - if (fVar2 < 0.00000000) { - return 0; - } - in_f12 = extraout_f12; - in_f14 = extraout_f14; - } while (lVar1 != 3); - return 1; + int in_a0_lo; + longlong lVar1; + float fVar2; + float in_f12; + float extraout_f12; + float in_f14; + float extraout_f14; + + lVar1 = 0; + do { + fVar2 = proc_7F0AFE70(in_a0_lo,lVar1,in_f12,in_f14); + lVar1 = (longlong)((int)lVar1 + 1); + if (fVar2 < 0.00000000) { + return 0; + } + in_f12 = extraout_f12; + in_f14 = extraout_f14; + } while (lVar1 != 3); + return 1; } @@ -122778,22 +121915,22 @@ undefined8 proc_7F0B02D8(void) u32 proc_7F0B036C(u32 param_1,f32 param_2,f32 param_3) { - longlong lVar1; - float in_f0; - float extraout_f12; - float extraout_f14; - - lVar1 = 0; - do { - proc_7F0B0018(param_1,lVar1,(float)param_2,(float)param_3); - lVar1 = (longlong)((int)lVar1 + 1); - if (in_f0 < 0.00000000) { - return 0; - } - param_2 = (f32)extraout_f12; - param_3 = (f32)extraout_f14; - } while (lVar1 != 3); - return 1; + longlong lVar1; + float in_f0; + float extraout_f12; + float extraout_f14; + + lVar1 = 0; + do { + proc_7F0B0018(param_1,lVar1,(float)param_2,(float)param_3); + lVar1 = (longlong)((int)lVar1 + 1); + if (in_f0 < 0.00000000) { + return 0; + } + param_2 = (f32)extraout_f12; + param_3 = (f32)extraout_f14; + } while (lVar1 != 3); + return 1; } @@ -122801,33 +121938,33 @@ u32 proc_7F0B036C(u32 param_1,f32 param_2,f32 param_3) float proc_7F0B0400(int param_1,longlong param_2,float param_3,float param_4) { - int iVar1; - float in_a2_lo; - int iVar2; - float in_a3_lo; - float fVar3; - float fVar4; - float fVar5; - - if (param_2 == 2) { - iVar1 = 0; - } - else { - iVar1 = (int)param_2 + 1; - } - iVar2 = param_1 + ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; - param_1 += ((int)*(short *)(param_1 + 6) >> (iVar1 * -4 + 8U & 0x1f) & 0xfU) * 8; - fVar4 = (float)((int)*(short *)(param_1 + 8) - (int)*(short *)(iVar2 + 8)); - fVar5 = (float)((int)*(short *)(param_1 + 0xc) - (int)*(short *)(iVar2 + 0xc)); - fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); - if (fVar3 == 0.00000000) { - fVar3 = 0.00000000; - } - else { - fVar3 = ((in_a3_lo - (float)(int)*(short *)(iVar2 + 0xc)) * -fVar4 + - fVar5 * (in_a2_lo - (float)(int)*(short *)(iVar2 + 8))) / fVar3; - } - return fVar3; + int iVar1; + float in_a2_lo; + int iVar2; + float in_a3_lo; + float fVar3; + float fVar4; + float fVar5; + + if (param_2 == 2) { + iVar1 = 0; + } + else { + iVar1 = (int)param_2 + 1; + } + iVar2 = param_1 + ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; + param_1 += ((int)*(short *)(param_1 + 6) >> (iVar1 * -4 + 8U & 0x1f) & 0xfU) * 8; + fVar4 = (float)((int)*(short *)(param_1 + 8) - (int)*(short *)(iVar2 + 8)); + fVar5 = (float)((int)*(short *)(param_1 + 0xc) - (int)*(short *)(iVar2 + 0xc)); + fVar3 = sqrtf(fVar4 * fVar4 + fVar5 * fVar5); + if (fVar3 == 0.00000000) { + fVar3 = 0.00000000; + } + else { + fVar3 = ((in_a3_lo - (float)(int)*(short *)(iVar2 + 0xc)) * -fVar4 + + fVar5 * (in_a2_lo - (float)(int)*(short *)(iVar2 + 8))) / fVar3; + } + return fVar3; } @@ -122835,22 +121972,22 @@ float proc_7F0B0400(int param_1,longlong param_2,float param_3,float param_4) undefined8 proc_7F0B0518(int param_1,float param_2,float param_3) { - longlong lVar1; - float fVar2; - float extraout_f12; - float extraout_f14; - - lVar1 = 0; - do { - fVar2 = proc_7F0B0400(param_1,lVar1,param_2,param_3); - lVar1 = (longlong)((int)lVar1 + 1); - if (fVar2 < -2.00000000) { - return 0; - } - param_2 = extraout_f12; - param_3 = extraout_f14; - } while (lVar1 != 3); - return 1; + longlong lVar1; + float fVar2; + float extraout_f12; + float extraout_f14; + + lVar1 = 0; + do { + fVar2 = proc_7F0B0400(param_1,lVar1,param_2,param_3); + lVar1 = (longlong)((int)lVar1 + 1); + if (fVar2 < -2.00000000) { + return 0; + } + param_2 = extraout_f12; + param_3 = extraout_f14; + } while (lVar1 != 3); + return 1; } @@ -122860,19 +121997,19 @@ proc_7F0B05C0(float param_1,float param_2,undefined8 param_3,undefined8 param_4, float param_6) { - if (param_2 * param_5 < param_1 * param_6) { - return 1; - } - if (param_1 * param_6 < param_2 * param_5) { - return 0xffffffffffffffff; - } - if ((0.00000000 <= param_1 * param_5) && (0.00000000 <= param_2 * param_6)) { - if (param_1 * param_1 + param_2 * param_2 < param_5 * param_5 + param_6 * param_6) { - return 1; + if (param_2 * param_5 < param_1 * param_6) { + return 1; } - return 0; - } - return 0xffffffffffffffff; + if (param_1 * param_6 < param_2 * param_5) { + return 0xffffffffffffffff; + } + if ((0.00000000 <= param_1 * param_5) && (0.00000000 <= param_2 * param_6)) { + if (param_1 * param_1 + param_2 * param_2 < param_5 * param_5 + param_6 * param_6) { + return 1; + } + return 0; + } + return 0xffffffffffffffff; } @@ -122882,29 +122019,29 @@ ulonglong proc_7F0B0688(float param_1,float param_2,undefined8 param_3,undefined float param_10) { - bool bVar1; - undefined8 uVar2; - undefined8 uVar3; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - - uVar2 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,param_3,param_4,-(param_1 - param_7), - -(param_2 - param_8)); - uVar3 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,extraout_a0,extraout_a1, - param_9 - param_1,param_10 - param_2); - bVar1 = (int)uVar3 * (int)uVar2 < 1; - if (bVar1) { - uVar2 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_00,extraout_a1_00, - param_1 - param_7,param_2 - param_8); - uVar3 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_01,extraout_a1_01, - param_5 - param_7,param_6 - param_8); + bool bVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + + uVar2 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,param_3,param_4,-(param_1 - param_7), + -(param_2 - param_8)); + uVar3 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,extraout_a0,extraout_a1, + param_9 - param_1,param_10 - param_2); bVar1 = (int)uVar3 * (int)uVar2 < 1; - } - return (ulonglong)bVar1; + if (bVar1) { + uVar2 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_00,extraout_a1_00, + param_1 - param_7,param_2 - param_8); + uVar3 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_01,extraout_a1_01, + param_5 - param_7,param_6 - param_8); + bVar1 = (int)uVar3 * (int)uVar2 < 1; + } + return (ulonglong)bVar1; } @@ -122914,31 +122051,31 @@ uint proc_7F0B07BC(float param_1,float param_2,undefined8 param_3,undefined8 par int param_11) { - undefined8 uVar1; - undefined8 uVar2; - undefined8 uVar3; - undefined8 uVar4; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - uint uStack36; - - uVar1 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,param_3,param_4,-(param_1 - param_7), - -(param_2 - param_8)); - uVar2 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,extraout_a0,extraout_a1, - param_9 - param_1,param_10 - param_2); - uVar3 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_00,extraout_a1_00, - param_1 - param_7,param_2 - param_8); - uVar4 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_01,extraout_a1_01, - param_5 - param_7,param_6 - param_8); - uStack36 = (uint)((int)uVar2 * (int)uVar1 < param_11); - if (param_11 <= (int)uVar4 * (int)uVar3) { - uStack36 = 0; - } - return uStack36; + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + uint uStack36; + + uVar1 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,param_3,param_4,-(param_1 - param_7), + -(param_2 - param_8)); + uVar2 = proc_7F0B05C0(param_5 - param_1,param_6 - param_2,extraout_a0,extraout_a1, + param_9 - param_1,param_10 - param_2); + uVar3 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_00,extraout_a1_00, + param_1 - param_7,param_2 - param_8); + uVar4 = proc_7F0B05C0(param_9 - param_7,param_10 - param_8,extraout_a0_01,extraout_a1_01, + param_5 - param_7,param_6 - param_8); + uStack36 = (uint)((int)uVar2 * (int)uVar1 < param_11); + if (param_11 <= (int)uVar4 * (int)uVar3) { + uStack36 = 0; + } + return uStack36; } @@ -122948,109 +122085,108 @@ proc_7F0B0914(int *param_1,float param_2,float param_3,float param_4,float param undefined *param_6,float param_7) { - short sVar1; - bool bVar2; - uint uVar3; - int iVar4; - longlong lVar5; - longlong lVar6; - int iVar7; - int iVar8; - int iVar9; - int iVar10; - int iVar11; - ulonglong uVar12; - longlong lVar13; - float fVar14; - code *in_stack_00000014; - undefined4 in_stack_00000018; - int iStack44; - int iStack32; - - param_4 = param_4 * flt_80040F44; - param_5 = param_5 * flt_80040F44; - fVar14 = (float)param_6 * flt_80040F44; - param_7 = param_7 * flt_80040F44; - iVar8 = *param_1; - iVar9 = 0; - iStack44 = 0; - lVar13 = (longlong)iStack32; - iVar7 = iVar8; - iVar11 = iVar8; - do { - iVar10 = iVar7; + short sVar1; + bool bVar2; + uint uVar3; + int iVar4; + longlong lVar5; + longlong lVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + ulonglong uVar12; + longlong lVar13; + float fVar14; + code *in_stack_00000014; + undefined4 in_stack_00000018; + int iStack44; + int iStack32; + + param_4 = param_4 * flt_80040F44; + param_5 = param_5 * flt_80040F44; + fVar14 = (float)param_6 * flt_80040F44; + param_7 = param_7 * flt_80040F44; + iVar8 = *param_1; + iVar9 = 0; + iStack44 = 0; + lVar13 = (longlong)iStack32; iVar7 = iVar8; - iVar8 = 0; - if (in_stack_00000014 == NULL) { - sVar1 = *(short *)(iVar7 + 6); - } - else { - (*in_stack_00000014)(iVar7,iVar10,in_stack_00000018); - sVar1 = *(short *)(iVar7 + 6); - } - uVar12 = (longlong)((int)sVar1 >> 0xc) & 0xf; - lVar5 = 0; - iVar4 = iVar7; - if (uVar12 != 0) { - do { - lVar6._4_4_ = (int)lVar5 + 1; - lVar6 = (longlong)lVar6._4_4_; - lVar6._4_4_ = iVar7 + (lVar6._4_4_ % (int)uVar12) * 8; - sVar1 = *(short *)(lVar6._4_4_ + 0xc); - lVar6._4_4_ = (int)*(short *)(lVar6._4_4_ + 8); - if (uVar12 == 0) { - trap(0x1c00); - } - if ((uVar12 == 0xffffffffffffffff) && (lVar6 == -0x80000000)) { - trap(0x1800); - } - if ((float)((int)sVar1 - (int)*(short *)(iVar4 + 0xc)) * (fVar14 - param_4) + - -(param_7 - param_5) * (float)(lVar6._4_4_ - (int)*(short *)(iVar4 + 8)) <= 0.00000000) - { - uVar3 = proc_7F0B07BC(param_4,param_5,uVar12,(longlong)sVar1,fVar14,param_7, - (float)(int)*(short *)(iVar4 + 8), - (float)(int)*(short *)(iVar4 + 0xc),(float)lVar6._4_4_, - (float)(int)sVar1, - (uint)((int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 != 0)); - if (uVar3 != 0) { - iVar8 += 1; - lVar6._4_4_ = (uint)*(ushort *)(iVar4 + 0xe) * 8 + base_ptr_connection_vals; - if (((iVar10 != lVar6._4_4_) && (iVar11 != lVar6._4_4_)) && - (lVar13 = lVar5, iVar9 = lVar6._4_4_, (int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 == 0)) - { - lVar13 = lVar5; - iVar9 = 0; - } - goto LAB_7f0b0b0c; - } - sVar1 = *(short *)(iVar7 + 6); + iVar11 = iVar8; + do { + iVar10 = iVar7; + iVar7 = iVar8; + iVar8 = 0; + if (in_stack_00000014 == NULL) { + sVar1 = *(short *)(iVar7 + 6); } else { -LAB_7f0b0b0c: - sVar1 = *(short *)(iVar7 + 6); + (*in_stack_00000014)(iVar7,iVar10,in_stack_00000018); + sVar1 = *(short *)(iVar7 + 6); } - iVar4 += 8; uVar12 = (longlong)((int)sVar1 >> 0xc) & 0xf; - lVar5 = lVar6; - } while (lVar6 < (longlong)uVar12); - } - if (iVar7 == iVar9) { - iVar8 = 0; - } - if (iVar8 == 0) { - return 1; - } - bVar2 = 500 < iStack44; - iStack44 += 1; - if (((bVar2) || (iVar9 == 0)) || (iVar8 == 0)) { - DAT_8007b9e4 = iVar7; - DAT_8007b9e8 = (int)lVar13; - return 0; - } - *param_1 = iVar9; - iVar8 = iVar9; - iVar11 = iVar10; - } while( true ); + lVar5 = 0; + iVar4 = iVar7; + if (uVar12 != 0) { + do { + lVar6._4_4_ = (int)lVar5 + 1; + lVar6 = (longlong)lVar6._4_4_; + lVar6._4_4_ = iVar7 + (lVar6._4_4_ % (int)uVar12) * 8; + sVar1 = *(short *)(lVar6._4_4_ + 0xc); + lVar6._4_4_ = (int)*(short *)(lVar6._4_4_ + 8); + if (uVar12 == 0) { + trap(0x1c00); + } + if ((uVar12 == 0xffffffffffffffff) && (lVar6 == -0x80000000)) { + trap(0x1800); + } + if ((float)((int)sVar1 - (int)*(short *)(iVar4 + 0xc)) * (fVar14 - param_4) + + -(param_7 - param_5) * (float)(lVar6._4_4_ - (int)*(short *)(iVar4 + 8)) <= + 0.00000000) { + uVar3 = proc_7F0B07BC(param_4,param_5,uVar12,(longlong)sVar1,fVar14,param_7, + (float)(int)*(short *)(iVar4 + 8), + (float)(int)*(short *)(iVar4 + 0xc),(float)lVar6._4_4_, + (float)(int)sVar1, + (uint)((int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 != 0)); + if (uVar3 != 0) { + iVar8 += 1; + lVar6._4_4_ = (uint)*(ushort *)(iVar4 + 0xe) * 8 + base_ptr_connection_vals; + if (((iVar10 != lVar6._4_4_) && (iVar11 != lVar6._4_4_)) && + (lVar13 = lVar5, iVar9 = lVar6._4_4_, + (int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 == 0)) { + iVar9 = 0; + } + goto LAB_7f0b0b0c; + } + sVar1 = *(short *)(iVar7 + 6); + } + else { +LAB_7f0b0b0c: + sVar1 = *(short *)(iVar7 + 6); + } + iVar4 += 8; + uVar12 = (longlong)((int)sVar1 >> 0xc) & 0xf; + lVar5 = lVar6; + } while (lVar6 < (longlong)uVar12); + } + if (iVar7 == iVar9) { + iVar8 = 0; + } + if (iVar8 == 0) { + return 1; + } + bVar2 = 500 < iStack44; + iStack44 += 1; + if (((bVar2) || (iVar9 == 0)) || (iVar8 == 0)) { + DAT_8007b9e4 = iVar7; + DAT_8007b9e8 = (int)lVar13; + return 0; + } + *param_1 = iVar9; + iVar8 = iVar9; + iVar11 = iVar10; + } while( true ); } @@ -123058,11 +122194,11 @@ LAB_7f0b0b0c: void proc_7F0B0BE4(int *param_1,float param_2,float param_3,float param_4,float param_5) { - undefined *in_a3_lo; - undefined4 in_stack_00000010; - - proc_7F0B0914(param_1,param_4,param_5,param_4,param_5,in_a3_lo,in_stack_00000010); - return; + undefined *in_a3_lo; + undefined4 in_stack_00000010; + + proc_7F0B0914(param_1,param_4,param_5,param_4,param_5,in_a3_lo,in_stack_00000010); + return; } @@ -123071,11 +122207,11 @@ void proc_7F0B0C24(int *param_1,float param_2,float param_3,float param_4,float undefined *param_6,undefined4 *param_7,undefined4 param_8) { - undefined4 *in_stack_00000018; - - proc_7F0B0914(param_1,param_4,param_5,param_4,param_5,param_6,param_7); - *in_stack_00000018 = 0; - return; + undefined4 *in_stack_00000018; + + proc_7F0B0914(param_1,param_4,param_5,param_4,param_5,param_6,param_7); + *in_stack_00000018 = 0; + return; } @@ -123083,16 +122219,16 @@ void proc_7F0B0C24(int *param_1,float param_2,float param_3,float param_4,float void proc_7F0B0C98(int param_1,undefined8 param_2,uint **param_3) { - byte bVar1; - - bVar1 = *(byte *)(param_1 + 3); - if (((longlong)(int)param_3[3] != (ulonglong)bVar1) && ((int)param_3[1] < (int)param_3[2])) { - *(uint **)*param_3 = (uint *)(uint)bVar1; - param_3[3] = (uint *)(uint)bVar1; - *param_3 = *param_3 + 1; - param_3[1] = (uint *)((int)param_3[1] + 1); - } - return; + byte bVar1; + + bVar1 = *(byte *)(param_1 + 3); + if (((longlong)(int)param_3[3] != (ulonglong)bVar1) && ((int)param_3[1] < (int)param_3[2])) { + *(uint **)*param_3 = (uint *)(uint)bVar1; + param_3[3] = (uint *)(uint)bVar1; + *param_3 = *param_3 + 1; + param_3[1] = (uint *)((int)param_3[1] + 1); + } + return; } @@ -123100,8 +122236,8 @@ void proc_7F0B0C98(int param_1,undefined8 param_2,uint **param_3) void proc_7F0B0CEC(int param_1,undefined8 param_2,uint **param_3) { - proc_7F0B0C98(param_1,param_2,param_3); - return; + proc_7F0B0C98(param_1,param_2,param_3); + return; } @@ -123110,59 +122246,58 @@ int proc_7F0B0D0C(int param_1,float param_2,float param_3,int *param_4,float par uint *param_7,int param_8) { - byte bVar1; - longlong lVar2; - int iVar3; - ulonglong uVar4; - float extraout_f12; - float extraout_f14; - uint *in_stack_00000018; - int in_stack_0000001c; - int iStack8; - int iStack4; - - iStack8 = 0; - lVar2 = (longlong)*(int *)param_6; - iStack4 = param_1; - if (lVar2 != 0) { - bVar1 = *(byte *)(param_1 + 3); - uVar4 = (ulonglong)*(byte *)(*(int *)param_6 + 3); - if ((ulonglong)bVar1 == uVar4) { - *in_stack_00000018 = (uint)bVar1; - return 1; - } - iStack4 = param_1; - lVar2 = proc_7F0B8FD0((ulonglong)bVar1,uVar4); - param_2 = extraout_f12; - param_3 = extraout_f14; - if (lVar2 != 0) { - *in_stack_00000018 = (uint)*(byte *)(param_1 + 3); - in_stack_00000018[1] = (uint)*(byte *)(*(int *)param_6 + 3); - return 2; - } - } - proc_7F0B0C24(&iStack4,param_2,param_3,(float)param_4,param_5,param_7,(undefined4 *)param_8, - in_stack_00000018); - if (lVar2 == 0) { + byte bVar1; + longlong lVar2; + int iVar3; + ulonglong uVar4; + float extraout_f12; + float extraout_f14; + uint *in_stack_00000018; + int in_stack_0000001c; + int iStack8; + int iStack4; + iStack8 = 0; - } - else { - if (in_stack_0000001c < 0) { - iStack8 = in_stack_0000001c; - iVar3 = *(int *)param_6; + lVar2 = (longlong)*(int *)param_6; + iStack4 = param_1; + if (lVar2 != 0) { + bVar1 = *(byte *)(param_1 + 3); + uVar4 = (ulonglong)*(byte *)(*(int *)param_6 + 3); + if ((ulonglong)bVar1 == uVar4) { + *in_stack_00000018 = (uint)bVar1; + return 1; + } + lVar2 = proc_7F0B8FD0((ulonglong)bVar1,uVar4); + param_2 = extraout_f12; + param_3 = extraout_f14; + if (lVar2 != 0) { + *in_stack_00000018 = (uint)*(byte *)(param_1 + 3); + in_stack_00000018[1] = (uint)*(byte *)(*(int *)param_6 + 3); + return 2; + } + } + proc_7F0B0C24(&iStack4,param_2,param_3,(float)param_4,param_5,param_7,(undefined4 *)param_8, + in_stack_00000018); + if (lVar2 == 0) { + iStack8 = 0; } else { - iVar3 = *(int *)param_6; + if (in_stack_0000001c < 0) { + iStack8 = in_stack_0000001c; + iVar3 = *(int *)param_6; + } + else { + iVar3 = *(int *)param_6; + } + if (iVar3 == 0) { + *(int *)param_6 = iStack4; + iVar3 = iStack4; + } + if (iStack4 != iVar3) { + iStack8 = 0; + } } - if (iVar3 == 0) { - *(int *)param_6 = iStack4; - iVar3 = iStack4; - } - if (iStack4 != iVar3) { - iStack8 = 0; - } - } - return iStack8; + return iStack8; } @@ -123170,214 +122305,212 @@ int proc_7F0B0D0C(int param_1,float param_2,float param_3,int *param_4,float par undefined4 proc_7F0B0E24(u32 *param_1,f32 param_2,f32 param_3,f32 param_4) { - bool bVar1; - bool bVar2; - longlong in_v0; - longlong lVar3; - ulonglong uVar4; - float *pfVar5; - float in_a2_lo; - float in_a3_lo; - int iVar6; - int iVar7; - longlong lVar8; - char *pcVar9; - uint uVar10; - float fVar11; - float fVar12; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f12_06; - float fVar13; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float extraout_f14_06; - float fVar14; - undefined4 *in_stack_00000010; - uint in_stack_00000014; - float in_stack_00000018; - float in_stack_0000001c; - float in_stack_00000020; - float in_stack_00000024; - float fStack192; - float afStack188 [3]; - int iStack176; - int *piStack172; - short *psStack168; - float fStack160; - float fStack156; - uint uStack148; - int aiStack144 [21]; - int iStack60; - float fStack52; - float fStack48; - float fStack44; - float fStack40; - float afStack28 [2]; - f32 afStack20 [2]; - u32 uStack12; - undefined4 uStack8; - - fVar11 = 1.00000000; - iStack60 = 0; - uStack148 = (uint)(in_stack_0000001c <= in_stack_00000018); - uStack12 = *param_1; - bVar1 = false; - afStack20[0] = param_4; - proc_7F0B0C24((int *)&uStack12,(float)param_4,in_a2_lo,(float)param_4,in_a2_lo,in_a3_lo, - in_stack_00000010,aiStack144); - uStack8 = (undefined4)in_v0; - if (0x14 < iStack60) { - iStack60 = 0x14; - } - fVar13 = extraout_f12; - fVar14 = extraout_f14; - if (in_v0 == 0) { - uVar10 = (int)*(short *)(DAT_8007b9e4 + 6) >> 0xc & 0xf; - iVar6 = DAT_8007b9e4 + DAT_8007b9e8 * 8; - if (uVar10 == 0) { - trap(0x1c00); - } - if ((uVar10 == 0xffffffff) && (DAT_8007b9e8 + 1 == -0x80000000)) { - trap(0x1800); - } - dword_800413BC = 1; - iVar7 = DAT_8007b9e4 + ((DAT_8007b9e8 + 1) % uVar10) * 8; - DAT_8007b9f0 = (float)(int)*(short *)(iVar6 + 8) * flt_80040F48; - DAT_8007b9f4 = (float)(int)*(short *)(iVar6 + 0xc) * flt_80040F48; - DAT_8007b9f8 = (float)(int)*(short *)(iVar7 + 8) * flt_80040F48; - DAT_8007b9fc = (float)(int)*(short *)(iVar7 + 0xc) * flt_80040F48; - fVar11 = proc_7F0B3200((float *)afStack20,afStack28,(float *)&DAT_8007b9f0, - (float *)&DAT_8007b9f8); - fVar13 = extraout_f12_00; - fVar14 = extraout_f14_00; - } - DAT_8007ba04 = NULL; - if (in_stack_00000014 != 0) { - aiStack144[iStack60] = -1; - proc_7F03E3FC(aiStack144); - lVar3 = (longlong)*ptr_list_object_lookup_indices; - fVar13 = extraout_f12_01; - fVar14 = extraout_f14_01; - if (-1 < lVar3) { - psStack168 = ptr_list_object_lookup_indices; - do { - pcVar9 = pos_data_entry + (int)lVar3 * 0x34; - iVar6 = proc_7F03DA50(pcVar9,in_stack_00000014); - fVar13 = extraout_f12_02; - fVar14 = extraout_f14_02; - if (((iVar6 != 0) && - (proc_7F03CC20(pcVar9,&piStack172,&iStack176,afStack188,&fStack192), - fVar13 = extraout_f12_03, fVar14 = extraout_f14_03, 0 < iStack176)) && - (fVar13 = extraout_f12_03, fVar14 = extraout_f14_03, 0 < iStack176)) { - iVar6 = 0; - lVar3 = 0; - do { - iVar7 = (int)lVar3 + 1; - lVar8 = (longlong)iVar7; - iVar7 %= iStack176; - pfVar5 = (float *)(piStack172 + iVar7 * 2); - if (iStack176 == 0) { - trap(0x1c00); - } - if ((iStack176 == -1) && (lVar8 == -0x80000000)) { - trap(0x1800); - } - uVar4 = proc_7F0B0688((float)param_4,in_a2_lo,(longlong)(int)pfVar5,lVar3,in_a3_lo, - (float)in_stack_00000010,*(float *)((int)piStack172 + iVar6), - ((float *)((int)piStack172 + iVar6))[1],*pfVar5,pfVar5[1]); - fVar13 = extraout_f12_04; - fVar14 = extraout_f14_04; - if (uVar4 != 0) { - fStack44 = *(float *)((int)piStack172 + iVar6); - fStack40 = ((float *)((int)piStack172 + iVar6))[1]; - fStack52 = (float)piStack172[iVar7 * 2]; - fStack48 = (float)(piStack172 + iVar7 * 2)[1]; - fVar12 = proc_7F0B3200((float *)afStack20,afStack28,&fStack44,&fStack52); - fVar13 = extraout_f12_05; - fVar14 = extraout_f14_05; - if (fVar12 < fVar11) { - bVar2 = true; - fVar13 = extraout_f12_05; - fVar14 = extraout_f14_05; - if (uStack148 != 0) { - fVar13 = extraout_f12_05; - fVar14 = extraout_f14_05; - if (!bVar1) { - bVar1 = true; - if (in_stack_00000024 <= in_stack_00000020) { - fStack156 = in_stack_00000020 - in_stack_00000018; - fStack160 = in_stack_00000024 - in_stack_0000001c; - fVar13 = extraout_f12_05; - fVar14 = extraout_f14_05; - } - else { - if (fVar11 < 1.00000000) { - in_a3_lo = (float)param_4 + (in_a3_lo - (float)param_4) * fVar11; - in_stack_00000010 = - (undefined4 *) - (in_a2_lo + ((float)in_stack_00000010 - in_a2_lo) * fVar11); - } - fVar13 = (float)proc_7F0B2970(); - in_stack_00000018 = in_stack_00000018 + fVar13; - in_stack_0000001c = in_stack_0000001c + fVar13; - fVar14 = (float)proc_7F0B2970(); - fStack160 = (fVar14 - fVar13) / fVar11; - fVar13 = extraout_f12_06; - fVar14 = extraout_f14_06; - fStack156 = fStack160; - } - } - if (fStack160 * fVar12 + in_stack_0000001c < afStack188[0]) { - if (fStack156 * fVar12 + in_stack_00000018 <= fStack192) { - bVar2 = false; - } - } - else { - bVar2 = false; - } - } - if (bVar2) { - uStack8 = 0; - dword_800413BC = 1; - DAT_8007b9f0 = fStack44; - DAT_8007b9f4 = fStack40; - DAT_8007b9f8 = fStack52; - DAT_8007b9fc = fStack48; - DAT_8007b9e4 = 0; - DAT_8007b9e8 = 0; - uStack12 = 0; - fVar11 = fVar12; - DAT_8007ba04 = pcVar9; - } - } - } - iVar6 += 8; - lVar3 = lVar8; - } while (lVar8 < (longlong)iStack176); - } - lVar3 = (longlong)psStack168[1]; - psStack168 = psStack168 + 1; - } while (-1 < lVar3); - } - } - if (uStack12 == 0) { + bool bVar1; + bool bVar2; + longlong in_v0; + longlong lVar3; + ulonglong uVar4; + float *pfVar5; + float in_a2_lo; + float in_a3_lo; + int iVar6; + int iVar7; + longlong lVar8; + char *pcVar9; + uint uVar10; + float fVar11; + float fVar12; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f12_06; + float fVar13; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float extraout_f14_06; + float fVar14; + undefined4 *in_stack_00000010; + uint in_stack_00000014; + float in_stack_00000018; + float in_stack_0000001c; + float in_stack_00000020; + float in_stack_00000024; + float fStack192; + float afStack188 [3]; + int iStack176; + int *piStack172; + short *psStack168; + float fStack160; + float fStack156; + uint uStack148; + int aiStack144 [21]; + int iStack60; + float fStack52; + float fStack48; + float fStack44; + float fStack40; + float afStack28 [2]; + float afStack20 [2]; + u32 uStack12; + undefined4 uStack8; + + fVar11 = 1.00000000; + iStack60 = 0; + uStack148 = (uint)(in_stack_0000001c <= in_stack_00000018); uStack12 = *param_1; - proc_7F0B0BE4((int *)&uStack12,fVar13,fVar14,(float)param_4,in_a2_lo); - } - *param_1 = uStack12; - DAT_8007ba00 = fVar11; - return uStack8; + bVar1 = false; + afStack20[0] = param_4; + proc_7F0B0C24((int *)&uStack12,(float)param_4,in_a2_lo,(float)param_4,in_a2_lo,in_a3_lo, + in_stack_00000010,aiStack144); + uStack8 = (undefined4)in_v0; + if (0x14 < iStack60) { + iStack60 = 0x14; + } + fVar13 = extraout_f12; + fVar14 = extraout_f14; + if (in_v0 == 0) { + uVar10 = (int)*(short *)(DAT_8007b9e4 + 6) >> 0xc & 0xf; + iVar6 = DAT_8007b9e4 + DAT_8007b9e8 * 8; + if (uVar10 == 0) { + trap(0x1c00); + } + if ((uVar10 == 0xffffffff) && (DAT_8007b9e8 + 1 == -0x80000000)) { + trap(0x1800); + } + dword_800413BC = 1; + iVar7 = DAT_8007b9e4 + ((DAT_8007b9e8 + 1) % uVar10) * 8; + DAT_8007b9f0 = (float)(int)*(short *)(iVar6 + 8) * flt_80040F48; + DAT_8007b9f4 = (float)(int)*(short *)(iVar6 + 0xc) * flt_80040F48; + DAT_8007b9f8 = (float)(int)*(short *)(iVar7 + 8) * flt_80040F48; + DAT_8007b9fc = (float)(int)*(short *)(iVar7 + 0xc) * flt_80040F48; + fVar11 = proc_7F0B3200(afStack20,afStack28,(float *)&DAT_8007b9f0,(float *)&DAT_8007b9f8); + fVar13 = extraout_f12_00; + fVar14 = extraout_f14_00; + } + DAT_8007ba04 = NULL; + if (in_stack_00000014 != 0) { + aiStack144[iStack60] = -1; + proc_7F03E3FC(aiStack144); + lVar3 = (longlong)*ptr_list_object_lookup_indices; + fVar13 = extraout_f12_01; + fVar14 = extraout_f14_01; + if (-1 < lVar3) { + psStack168 = ptr_list_object_lookup_indices; + do { + pcVar9 = pos_data_entry + (int)lVar3 * 0x34; + iVar6 = proc_7F03DA50(pcVar9,in_stack_00000014); + fVar13 = extraout_f12_02; + fVar14 = extraout_f14_02; + if (((iVar6 != 0) && + (proc_7F03CC20(pcVar9,&piStack172,&iStack176,afStack188,&fStack192), + fVar13 = extraout_f12_03, fVar14 = extraout_f14_03, 0 < iStack176)) && + (0 < iStack176)) { + iVar6 = 0; + lVar3 = 0; + do { + iVar7 = (int)lVar3 + 1; + lVar8 = (longlong)iVar7; + iVar7 %= iStack176; + pfVar5 = (float *)(piStack172 + iVar7 * 2); + if (iStack176 == 0) { + trap(0x1c00); + } + if ((iStack176 == -1) && (lVar8 == -0x80000000)) { + trap(0x1800); + } + uVar4 = proc_7F0B0688((float)param_4,in_a2_lo,(longlong)(int)pfVar5,lVar3, + in_a3_lo,(float)in_stack_00000010, + *(float *)((int)piStack172 + iVar6), + ((float *)((int)piStack172 + iVar6))[1],*pfVar5, + pfVar5[1]); + fVar13 = extraout_f12_04; + fVar14 = extraout_f14_04; + if (uVar4 != 0) { + fStack44 = *(float *)((int)piStack172 + iVar6); + fStack40 = ((float *)((int)piStack172 + iVar6))[1]; + fStack52 = (float)piStack172[iVar7 * 2]; + fStack48 = (float)(piStack172 + iVar7 * 2)[1]; + fVar12 = proc_7F0B3200(afStack20,afStack28,&fStack44,&fStack52); + fVar13 = extraout_f12_05; + fVar14 = extraout_f14_05; + if (fVar12 < fVar11) { + bVar2 = true; + if (uStack148 != 0) { + if (!bVar1) { + bVar1 = true; + if (in_stack_00000024 <= in_stack_00000020) { + fStack156 = in_stack_00000020 - in_stack_00000018; + fStack160 = in_stack_00000024 - in_stack_0000001c; + } + else { + if (fVar11 < 1.00000000) { + in_a3_lo = (float)param_4 + + (in_a3_lo - (float)param_4) * fVar11; + in_stack_00000010 = + (undefined4 *) + (in_a2_lo + + ((float)in_stack_00000010 - in_a2_lo) * fVar11) + ; + } + fVar13 = (float)proc_7F0B2970(); + in_stack_00000018 = in_stack_00000018 + fVar13; + in_stack_0000001c = in_stack_0000001c + fVar13; + fVar14 = (float)proc_7F0B2970(); + fStack160 = (fVar14 - fVar13) / fVar11; + fVar13 = extraout_f12_06; + fVar14 = extraout_f14_06; + fStack156 = fStack160; + } + } + if (fStack160 * fVar12 + in_stack_0000001c < afStack188[0]) { + if (fStack156 * fVar12 + in_stack_00000018 <= fStack192) { + bVar2 = false; + } + } + else { + bVar2 = false; + } + } + if (bVar2) { + uStack8 = 0; + dword_800413BC = 1; + DAT_8007b9f0 = fStack44; + DAT_8007b9f4 = fStack40; + DAT_8007b9f8 = fStack52; + DAT_8007b9fc = fStack48; + DAT_8007b9e4 = 0; + DAT_8007b9e8 = 0; + uStack12 = 0; + fVar11 = fVar12; + DAT_8007ba04 = pcVar9; + } + } + } + iVar6 += 8; + lVar3 = lVar8; + } while (lVar8 < iStack176); + } + lVar3 = (longlong)psStack168[1]; + psStack168 = psStack168 + 1; + } while (-1 < lVar3); + } + } + if (uStack12 == 0) { + uStack12 = *param_1; + proc_7F0B0BE4((int *)&uStack12,fVar13,fVar14,(float)param_4,in_a2_lo); + } + *param_1 = uStack12; + DAT_8007ba00 = fVar11; + return uStack8; } @@ -123386,101 +122519,103 @@ char * proc_7F0B1410(int param_1,float param_2,float param_3,float param_4,float uint param_6) { - short sVar1; - longlong lVar2; - int iVar5; - ulonglong uVar3; - longlong lVar4; - float *pfVar6; - longlong lVar7; - char *pcVar8; - char *pcVar9; - float fVar10; - float fVar11; - undefined4 *in_stack_00000010; - uint in_stack_00000014; - int iStack156; - int *piStack152; - short *psStack148; - int aiStack144 [21]; - int iStack60; - int aiStack56 [2]; - float fStack48; - float fStack44; - float fStack40; - float fStack36; - float afStack24 [2]; - float fStack16; - float fStack12; - - fVar11 = 1.00000000; - pcVar9 = NULL; - iStack60 = 0; - aiStack56[0] = param_1; - proc_7F0B0C24(aiStack56,param_2,param_3,param_4,param_5,param_6,in_stack_00000010,aiStack144); - if (0x14 < iStack60) { - iStack60 = 0x14; - } - if (in_stack_00000014 != 0) { - aiStack144[iStack60] = -1; - afStack24[0] = (float)param_6; - fStack16 = param_4; - fStack12 = param_5; - proc_7F03E3FC(aiStack144); - sVar1 = *ptr_list_object_lookup_indices; - lVar2 = (longlong)sVar1; - if (-1 < lVar2) { - psStack148 = ptr_list_object_lookup_indices; - do { - pcVar8 = pos_data_entry + ((int)sVar1 * 0x10 + (int)lVar2 * -4 + (int)lVar2) * 4; - iVar5 = proc_7F03DA50(pcVar8,in_stack_00000014); - if (((iVar5 != 0) && (proc_7F03CCB0(pcVar8,&piStack152,&iStack156), 0 < iStack156)) && - (0 < iStack156)) { - iVar5 = 0; - lVar2 = 0; - do { - lVar7._4_4_ = (int)lVar2 + 1; - lVar7 = (longlong)lVar7._4_4_; - lVar7._4_4_ %= iStack156; - pfVar6 = (float *)(piStack152 + lVar7._4_4_ * 2); - if (iStack156 == 0) { - trap(0x1c00); - } - if ((iStack156 == -1) && (lVar7 == -0x80000000)) { - trap(0x1800); - } - uVar3 = proc_7F0B0688(param_4,param_5,(longlong)(int)pfVar6,lVar2,(float)param_6, - (float)in_stack_00000010,*(float *)((int)piStack152 + iVar5), - ((float *)((int)piStack152 + iVar5))[1],*pfVar6,pfVar6[1]); - if (uVar3 == 0) { - lVar4 = (longlong)iStack156; - } - else { - fStack40 = *(float *)((int)piStack152 + iVar5); - fStack36 = ((float *)((int)piStack152 + iVar5))[1]; - fStack48 = (float)piStack152[lVar7._4_4_ * 2]; - fStack44 = (float)(piStack152 + lVar7._4_4_ * 2)[1]; - fVar10 = proc_7F0B3200(&fStack16,afStack24,&fStack40,&fStack48); - if (fVar10 < fVar11) { - lVar4 = (longlong)iStack156; - fVar11 = fVar10; - pcVar9 = pcVar8; - } - else { - lVar4 = (longlong)iStack156; - } - } - iVar5 += 8; - lVar2 = lVar7; - } while (lVar7 < lVar4); - } - sVar1 = psStack148[1]; - lVar2 = (longlong)sVar1; - psStack148 = psStack148 + 1; - } while (-1 < lVar2); + short sVar1; + longlong lVar2; + int iVar5; + ulonglong uVar3; + longlong lVar4; + float *pfVar6; + longlong lVar7; + char *pcVar8; + char *pcVar9; + float fVar10; + float fVar11; + undefined4 *in_stack_00000010; + uint in_stack_00000014; + int iStack156; + int *piStack152; + short *psStack148; + int aiStack144 [21]; + int iStack60; + int aiStack56 [2]; + float fStack48; + float fStack44; + float fStack40; + float fStack36; + float afStack24 [2]; + float fStack16; + float fStack12; + + fVar11 = 1.00000000; + pcVar9 = NULL; + iStack60 = 0; + aiStack56[0] = param_1; + proc_7F0B0C24(aiStack56,param_2,param_3,param_4,param_5,param_6,in_stack_00000010,aiStack144); + if (0x14 < iStack60) { + iStack60 = 0x14; } - } - return pcVar9; + if (in_stack_00000014 != 0) { + afStack24[0] = (float)param_6; + fStack16 = param_4; + fStack12 = param_5; + aiStack144[iStack60] = -1; + proc_7F03E3FC(aiStack144); + sVar1 = *ptr_list_object_lookup_indices; + lVar2 = (longlong)sVar1; + if (-1 < lVar2) { + psStack148 = ptr_list_object_lookup_indices; + do { + pcVar8 = pos_data_entry + ((int)sVar1 * 0x10 + (int)lVar2 * -4 + (int)lVar2) * 4; + iVar5 = proc_7F03DA50(pcVar8,in_stack_00000014); + if (((iVar5 != 0) && (proc_7F03CCB0(pcVar8,&piStack152,&iStack156), 0 < iStack156)) + && (0 < iStack156)) { + iVar5 = 0; + lVar2 = 0; + do { + lVar7._4_4_ = (int)lVar2 + 1; + lVar7 = (longlong)lVar7._4_4_; + lVar7._4_4_ %= iStack156; + pfVar6 = (float *)(piStack152 + lVar7._4_4_ * 2); + if (iStack156 == 0) { + trap(0x1c00); + } + if ((iStack156 == -1) && (lVar7 == -0x80000000)) { + trap(0x1800); + } + uVar3 = proc_7F0B0688(param_4,param_5,(longlong)(int)pfVar6,lVar2, + (float)param_6,(float)in_stack_00000010, + *(float *)((int)piStack152 + iVar5), + ((float *)((int)piStack152 + iVar5))[1],*pfVar6, + pfVar6[1]); + if (uVar3 == 0) { + lVar4 = (longlong)iStack156; + } + else { + fStack40 = *(float *)((int)piStack152 + iVar5); + fStack36 = ((float *)((int)piStack152 + iVar5))[1]; + fStack48 = (float)piStack152[lVar7._4_4_ * 2]; + fStack44 = (float)(piStack152 + lVar7._4_4_ * 2)[1]; + fVar10 = proc_7F0B3200(&fStack16,afStack24,&fStack40,&fStack48); + if (fVar10 < fVar11) { + lVar4 = (longlong)iStack156; + fVar11 = fVar10; + pcVar9 = pcVar8; + } + else { + lVar4 = (longlong)iStack156; + } + } + iVar5 += 8; + lVar2 = lVar7; + } while (lVar7 < lVar4); + } + sVar1 = psStack148[1]; + lVar2 = (longlong)sVar1; + psStack148 = psStack148 + 1; + } while (-1 < lVar2); + } + } + return pcVar9; } @@ -123489,21 +122624,21 @@ float proc_7F0B16C4(float param_1,float param_2,undefined8 param_3,undefined8 pa float param_6,float param_7,float param_8) { - float fVar1; - float fVar2; - float fVar3; - - fVar2 = param_5 - param_1; - fVar3 = param_6 - param_2; - fVar1 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3); - if (fVar1 == 0.00000000) { - fVar1 = sqrtf((param_7 - param_5) * (param_7 - param_5) + - (param_8 - param_6) * (param_8 - param_6)); - } - else { - fVar1 = (fVar3 * (param_7 - param_1) + -fVar2 * (param_8 - param_2)) / fVar1; - } - return fVar1; + float fVar1; + float fVar2; + float fVar3; + + fVar2 = param_5 - param_1; + fVar3 = param_6 - param_2; + fVar1 = sqrtf(fVar2 * fVar2 + fVar3 * fVar3); + if (fVar1 == 0.00000000) { + fVar1 = sqrtf((param_7 - param_5) * (param_7 - param_5) + + (param_8 - param_6) * (param_8 - param_6)); + } + else { + fVar1 = (fVar3 * (param_7 - param_1) + -fVar2 * (param_8 - param_2)) / fVar1; + } + return fVar1; } @@ -123512,8 +122647,8 @@ void proc_7F0B1794(float param_1,float param_2,undefined8 param_3,undefined8 par float param_6) { - sqrtf((param_5 - param_1) * (param_5 - param_1) + (param_6 - param_2) * (param_6 - param_2)); - return; + sqrtf((param_5 - param_1) * (param_5 - param_1) + (param_6 - param_2) * (param_6 - param_2)); + return; } @@ -123522,20 +122657,20 @@ ulonglong proc_7F0B17E4(float param_1,float param_2,undefined8 param_3,undefined float param_5,float param_6,float param_7,float param_8) { - ulonglong uVar1; - float fVar2; - float fVar3; - - param_5 = param_5 - param_1; - param_6 = param_6 - param_2; - fVar3 = param_5 * param_5 + param_6 * param_6; - fVar2 = (param_7 - param_1) * param_5 + (param_8 - param_2) * param_6; - if ((((fVar2 <= fVar3) || (uVar1 = (ulonglong)(fVar2 < 0.00000000), fVar2 >= 0.00000000)) && - (uVar1 = (ulonglong)(0.00000000 < fVar2), 0.00000000 < fVar2)) && (uVar1 = 0, fVar2 < fVar3)) - { - uVar1 = 1; - } - return uVar1; + ulonglong uVar1; + float fVar2; + float fVar3; + + param_5 = param_5 - param_1; + param_6 = param_6 - param_2; + fVar3 = param_5 * param_5 + param_6 * param_6; + fVar2 = (param_7 - param_1) * param_5 + (param_8 - param_2) * param_6; + if ((((fVar2 <= fVar3) || (uVar1 = (ulonglong)(fVar2 < 0.00000000), fVar2 >= 0.00000000)) && + (uVar1 = (ulonglong)(0.00000000 < fVar2), 0.00000000 < fVar2)) && (uVar1 = 0, fVar2 < fVar3) + ) { + uVar1 = 1; + } + return uVar1; } @@ -123543,129 +122678,136 @@ ulonglong proc_7F0B17E4(float param_1,float param_2,undefined8 param_3,undefined longlong proc_7F0B18B8(void) { - short sVar1; - longlong lVar2; - int iVar4; - ulonglong uVar3; - int *in_a0_lo; - float *pfVar5; - undefined8 extraout_a0; - undefined8 extraout_a0_00; - undefined8 extraout_a0_01; - float in_a1_lo; - int iVar6; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - float in_a2_lo; - undefined4 *in_a3_lo; - char *pcVar7; - float fVar8; - float fVar9; - float in_f12; - float in_f14; - float fVar10; - float fVar11; - uint in_stack_00000010; - float in_stack_00000014; - float in_stack_00000018; - float fStack144; - float afStack140 [3]; - int iStack128; - int *piStack124; - int aiStack120 [21]; - int iStack36; - short *psStack32; - uint uStack24; - - uStack24 = (uint)(in_stack_00000018 <= in_stack_00000014); - iStack36 = 0; - lVar2 = proc_7F0B21B0(in_a0_lo,in_f12,in_f14,in_a1_lo,in_a2_lo,in_a3_lo,aiStack120); - if (lVar2 < 0) { - if (0x14 < iStack36) { - iStack36 = 0x14; - } - DAT_8007ba04 = NULL; - if (in_stack_00000010 == 0) { - lVar2 = -2; - } - else { - if (in_stack_00000018 <= in_stack_00000014) { - fVar11 = (float)proc_7F0B2970(); - in_stack_00000014 = in_stack_00000014 + fVar11; - in_stack_00000018 = in_stack_00000018 + fVar11; - } - aiStack120[iStack36] = -1; - proc_7F03E3FC(aiStack120); - sVar1 = *ptr_list_object_lookup_indices; - lVar2 = (longlong)sVar1; - if (-1 < lVar2) { - psStack32 = ptr_list_object_lookup_indices; - do { - pcVar7 = pos_data_entry + ((int)sVar1 * 0x10 + (int)lVar2 * -4 + (int)lVar2) * 4; - iVar4 = proc_7F03DA50(pcVar7,in_stack_00000010); - if (((iVar4 != 0) && - (proc_7F03CC20(pcVar7,&piStack124,&iStack128,afStack140,&fStack144), 0 < iStack128)) - && ((uStack24 == 0 || - ((fStack144 <= in_stack_00000014 && (in_stack_00000018 <= afStack140[0])))))) { - fVar11 = -1.00000000; - lVar2 = 0; - do { - iVar6 = (int)lVar2; - iVar4 = (iVar6 + 1) % iStack128; - pfVar5 = (float *)(piStack124 + iVar4 * 2); - if (iStack128 == 0) { - trap(0x1c00); - } - if ((iStack128 == -1) && (iVar6 + 1 == -0x80000000)) { - trap(0x1800); - } - fVar8 = proc_7F0B16C4((float)piStack124[iVar6 * 2],(float)(piStack124 + iVar6 * 2)[1], - (longlong)(int)pfVar5,lVar2,*pfVar5,pfVar5[1],in_a1_lo,in_a2_lo) - ; - fVar10 = fVar8; - if (fVar8 < 0.00000000) { - fVar10 = -fVar8; - } - if (fVar11 < fVar10) { - proc_7F0B1794((float)piStack124[iVar6 * 2],(float)(piStack124 + iVar6 * 2)[1], - extraout_a0,extraout_a1,in_a1_lo,in_a2_lo); - fVar9 = fVar8; - proc_7F0B1794((float)piStack124[iVar4 * 2],(float)(piStack124 + iVar4 * 2)[1], - extraout_a0_00,extraout_a1_00,in_a1_lo,in_a2_lo); - if ((fVar10 < (float)in_a3_lo) && - (((fVar8 < (float)in_a3_lo || (fVar9 < (float)in_a3_lo)) || - (uVar3 = proc_7F0B17E4((float)piStack124[iVar6 * 2], - (float)(piStack124 + iVar6 * 2)[1],extraout_a0_01, - extraout_a1_01,(float)piStack124[iVar4 * 2], - (float)(piStack124 + iVar4 * 2)[1],in_a1_lo,in_a2_lo), - uVar3 != 0)))) { - dword_800413BC = 1; - DAT_8007b9f0 = piStack124[iVar6 * 2]; - DAT_8007b9f4 = (piStack124 + iVar6 * 2)[1]; - DAT_8007b9f8 = piStack124[iVar4 * 2]; - DAT_8007b9fc = (piStack124 + iVar4 * 2)[1]; - DAT_8007b9e4 = 0; - DAT_8007b9e8 = 0; - fVar11 = fVar10; - DAT_8007ba04 = pcVar7; - } - } - lVar2 = (longlong)iVar4; - } while ((longlong)iVar4 != 0); - if (-1.00000000 < fVar11) { - return 2; + short sVar1; + longlong lVar2; + int iVar4; + ulonglong uVar3; + int *in_a0_lo; + float *pfVar5; + undefined8 extraout_a0; + undefined8 extraout_a0_00; + undefined8 extraout_a0_01; + float in_a1_lo; + int iVar6; + undefined8 extraout_a1; + undefined8 extraout_a1_00; + undefined8 extraout_a1_01; + float in_a2_lo; + undefined4 *in_a3_lo; + char *pcVar7; + float fVar8; + float fVar9; + float in_f12; + float in_f14; + float fVar10; + float fVar11; + uint in_stack_00000010; + float in_stack_00000014; + float in_stack_00000018; + float fStack144; + float afStack140 [3]; + int iStack128; + int *piStack124; + int aiStack120 [21]; + int iStack36; + short *psStack32; + uint uStack24; + + uStack24 = (uint)(in_stack_00000018 <= in_stack_00000014); + iStack36 = 0; + lVar2 = proc_7F0B21B0(in_a0_lo,in_f12,in_f14,in_a1_lo,in_a2_lo,in_a3_lo,aiStack120); + if (lVar2 < 0) { + if (0x14 < iStack36) { + iStack36 = 0x14; + } + DAT_8007ba04 = NULL; + if (in_stack_00000010 == 0) { + lVar2 = -2; + } + else { + if (in_stack_00000018 <= in_stack_00000014) { + fVar11 = (float)proc_7F0B2970(); + in_stack_00000014 = in_stack_00000014 + fVar11; + in_stack_00000018 = in_stack_00000018 + fVar11; } - } - sVar1 = psStack32[1]; - lVar2 = (longlong)sVar1; - psStack32 = psStack32 + 1; - } while (-1 < lVar2); - } - lVar2 = -2; + aiStack120[iStack36] = -1; + proc_7F03E3FC(aiStack120); + sVar1 = *ptr_list_object_lookup_indices; + lVar2 = (longlong)sVar1; + if (-1 < lVar2) { + psStack32 = ptr_list_object_lookup_indices; + do { + pcVar7 = pos_data_entry + ((int)sVar1 * 0x10 + (int)lVar2 * -4 + (int)lVar2) * 4 + ; + iVar4 = proc_7F03DA50(pcVar7,in_stack_00000010); + if (((iVar4 != 0) && + (proc_7F03CC20(pcVar7,&piStack124,&iStack128,afStack140,&fStack144), + 0 < iStack128)) && + ((uStack24 == 0 || + ((fStack144 <= in_stack_00000014 && (in_stack_00000018 <= afStack140[0]))))) + ) { + fVar11 = -1.00000000; + lVar2 = 0; + do { + iVar6 = (int)lVar2; + iVar4 = (iVar6 + 1) % iStack128; + pfVar5 = (float *)(piStack124 + iVar4 * 2); + if (iStack128 == 0) { + trap(0x1c00); + } + if ((iStack128 == -1) && (iVar6 + 1 == -0x80000000)) { + trap(0x1800); + } + fVar8 = proc_7F0B16C4((float)piStack124[iVar6 * 2], + (float)(piStack124 + iVar6 * 2)[1], + (longlong)(int)pfVar5,lVar2,*pfVar5,pfVar5[1], + in_a1_lo,in_a2_lo); + fVar10 = fVar8; + if (fVar8 < 0.00000000) { + fVar10 = -fVar8; + } + if (fVar11 < fVar10) { + proc_7F0B1794((float)piStack124[iVar6 * 2], + (float)(piStack124 + iVar6 * 2)[1],extraout_a0, + extraout_a1,in_a1_lo,in_a2_lo); + fVar9 = fVar8; + proc_7F0B1794((float)piStack124[iVar4 * 2], + (float)(piStack124 + iVar4 * 2)[1],extraout_a0_00, + extraout_a1_00,in_a1_lo,in_a2_lo); + if ((fVar10 < (float)in_a3_lo) && + (((fVar8 < (float)in_a3_lo || (fVar9 < (float)in_a3_lo)) || + (uVar3 = proc_7F0B17E4((float)piStack124[iVar6 * 2], + (float)(piStack124 + iVar6 * 2)[1], + extraout_a0_01,extraout_a1_01, + (float)piStack124[iVar4 * 2], + (float)(piStack124 + iVar4 * 2)[1], + in_a1_lo,in_a2_lo), uVar3 != 0)))) { + dword_800413BC = 1; + DAT_8007b9f0 = piStack124[iVar6 * 2]; + DAT_8007b9f4 = (piStack124 + iVar6 * 2)[1]; + DAT_8007b9f8 = piStack124[iVar4 * 2]; + DAT_8007b9fc = (piStack124 + iVar4 * 2)[1]; + DAT_8007b9e4 = 0; + DAT_8007b9e8 = 0; + fVar11 = fVar10; + DAT_8007ba04 = pcVar7; + } + } + lVar2 = (longlong)iVar4; + } while ((longlong)iVar4 != 0); + if (-1.00000000 < fVar11) { + return 2; + } + } + sVar1 = psStack32[1]; + lVar2 = (longlong)sVar1; + psStack32 = psStack32 + 1; + } while (-1 < lVar2); + } + lVar2 = -2; + } } - } - return lVar2; + return lVar2; } @@ -123673,10 +122815,10 @@ longlong proc_7F0B18B8(void) void proc_7F0B1CC4(void) { - dword_800413BC = 0; - DAT_8007b9e4 = 0; - DAT_8007b9e8 = 0; - return; + dword_800413BC = 0; + DAT_8007b9e4 = 0; + DAT_8007b9e8 = 0; + return; } @@ -123684,7 +122826,7 @@ void proc_7F0B1CC4(void) undefined4 proc_7F0B1CE0(void) { - return DAT_8007b9e4; + return DAT_8007b9e4; } @@ -123692,7 +122834,7 @@ undefined4 proc_7F0B1CE0(void) undefined4 proc_7F0B1CEC(void) { - return DAT_8007b9e8; + return DAT_8007b9e8; } @@ -123700,27 +122842,27 @@ undefined4 proc_7F0B1CEC(void) void proc_7F0B1CF8(int param_1,int param_2,float *param_3,float *param_4) { - float fVar1; - int iVar2; - uint uVar3; - - fVar1 = flt_80040F48; - iVar2 = param_1 + param_2 * 8; - *param_3 = (float)(int)*(short *)(iVar2 + 8) * flt_80040F48; - param_3[1] = (float)(int)*(short *)(iVar2 + 10) * fVar1; - param_3[2] = (float)(int)*(short *)(iVar2 + 0xc) * fVar1; - uVar3 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; - param_1 += ((param_2 + 1) % uVar3) * 8; - if (uVar3 == 0) { - trap(0x1c00); - } - if ((uVar3 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { - trap(0x1800); - } - *param_4 = (float)(int)*(short *)(param_1 + 8) * fVar1; - param_4[1] = (float)(int)*(short *)(param_1 + 10) * fVar1; - param_4[2] = (float)(int)*(short *)(param_1 + 0xc) * fVar1; - return; + float fVar1; + int iVar2; + uint uVar3; + + fVar1 = flt_80040F48; + iVar2 = param_1 + param_2 * 8; + *param_3 = (float)(int)*(short *)(iVar2 + 8) * flt_80040F48; + param_3[1] = (float)(int)*(short *)(iVar2 + 10) * fVar1; + param_3[2] = (float)(int)*(short *)(iVar2 + 0xc) * fVar1; + uVar3 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; + param_1 += ((param_2 + 1) % uVar3) * 8; + if (uVar3 == 0) { + trap(0x1c00); + } + if ((uVar3 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { + trap(0x1800); + } + *param_4 = (float)(int)*(short *)(param_1 + 8) * fVar1; + param_4[1] = (float)(int)*(short *)(param_1 + 10) * fVar1; + param_4[2] = (float)(int)*(short *)(param_1 + 0xc) * fVar1; + return; } @@ -123733,139 +122875,134 @@ proc_7F0B1DDC(int *param_1,float param_2,float param_3,float param_4,undefined * undefined *param_6,undefined *param_7,code *param_8) { - int iVar1; - ulonglong uVar2; - longlong lVar3; - int *piVar4; - int iVar5; - uint uVar6; - int iVar7; - int *piVar8; - uint uVar9; - int iVar10; - float fVar11; - float fVar12; - float fVar13; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f12_05; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - float extraout_f14_05; - float fVar14; - code *in_stack_00000018; - undefined4 in_stack_0000001c; - int iStack172; - int aiStack160 [40]; - - iStack172 = 0; - aiStack160[0] = *param_1; - piVar8 = aiStack160; - fVar14 = (float)param_6 * flt_80040F44; - uVar9 = 1; - do { - iVar1 = *piVar8; - piVar8 = piVar8 + 1; - iStack172 += 1; - if (param_7 != NULL) { - (*(code *)param_7)(iVar1,in_stack_0000001c); - param_2 = extraout_f12; - param_3 = extraout_f14; - } - uVar6 = (int)*(short *)(iVar1 + 6) >> 0xc & 0xf; - iVar5 = 0; - if (uVar6 != 0) { - do { - iVar10 = iVar5 + 1; - if (uVar6 == 0) { - trap(0x1c00); + int iVar1; + ulonglong uVar2; + longlong lVar3; + int *piVar4; + int iVar5; + uint uVar6; + int iVar7; + int *piVar8; + uint uVar9; + int iVar10; + float fVar11; + float fVar12; + float fVar13; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f12_05; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + float extraout_f14_05; + float fVar14; + code *in_stack_00000018; + undefined4 in_stack_0000001c; + int iStack172; + int aiStack160 [40]; + + iStack172 = 0; + aiStack160[0] = *param_1; + piVar8 = aiStack160; + fVar14 = (float)param_6 * flt_80040F44; + uVar9 = 1; + do { + iVar1 = *piVar8; + piVar8 = piVar8 + 1; + iStack172 += 1; + if (param_7 != NULL) { + (*(code *)param_7)(iVar1,in_stack_0000001c); + param_2 = extraout_f12; + param_3 = extraout_f14; } - if ((uVar6 == 0xffffffff) && (iVar10 == -0x80000000)) { - trap(0x1800); - } - fVar11 = proc_7F0AFD1C(iVar1,iVar5,param_2,param_3); - fVar12 = fVar11; - proc_7F0B0064(iVar1,iVar5,extraout_f12_00,extraout_f14_00); - fVar13 = fVar12; - proc_7F0B0064(iVar1,iVar10 % uVar6,extraout_f12_01,extraout_f14_01); - if (fVar11 < fVar14) { - param_2 = extraout_f12_02; - param_3 = extraout_f14_02; - if (((fVar12 < fVar14) || - (param_2 = extraout_f12_02, param_3 = extraout_f14_02, fVar13 < fVar14)) || - (uVar2 = proc_7F0B0198(iVar1,iVar5,extraout_f12_02,extraout_f14_02), - param_2 = extraout_f12_03, param_3 = extraout_f14_03, uVar2 != 0)) { - if ((param_8 == NULL) || - (lVar3 = (*param_8)(iVar1,iVar5,fVar11,fVar12,fVar13), param_2 = extraout_f12_04, - param_3 = extraout_f14_04, lVar3 == 0)) { - uVar6 = (uint)*(ushort *)(iVar1 + iVar5 * 8 + 0xe); - if ((int)uVar6 >> 4 != 0) { - iVar5 = uVar6 * 8 + base_ptr_connection_vals; - if ((int)(uVar9 - 1) < 0) { + uVar6 = (int)*(short *)(iVar1 + 6) >> 0xc & 0xf; + iVar5 = 0; + if (uVar6 != 0) { + do { + iVar10 = iVar5 + 1; + if (uVar6 == 0) { + trap(0x1c00); + } + if ((uVar6 == 0xffffffff) && (iVar10 == -0x80000000)) { + trap(0x1800); + } + fVar11 = proc_7F0AFD1C(iVar1,iVar5,param_2,param_3); + fVar12 = fVar11; + proc_7F0B0064(iVar1,iVar5,extraout_f12_00,extraout_f14_00); + fVar13 = fVar12; + proc_7F0B0064(iVar1,iVar10 % uVar6,extraout_f12_01,extraout_f14_01); + param_2 = extraout_f12_02; + param_3 = extraout_f14_02; + if (fVar11 < fVar14) { + if (((fVar12 < fVar14) || (fVar13 < fVar14)) || + (uVar2 = proc_7F0B0198(iVar1,iVar5,extraout_f12_02,extraout_f14_02), + param_2 = extraout_f12_03, param_3 = extraout_f14_03, uVar2 != 0)) { + if ((param_8 == NULL) || + (lVar3 = (*param_8)(iVar1,iVar5,fVar11,fVar12,fVar13), + param_2 = extraout_f12_04, param_3 = extraout_f14_04, lVar3 == 0)) { + uVar6 = (uint)*(ushort *)(iVar1 + iVar5 * 8 + 0xe); + if ((int)uVar6 >> 4 != 0) { + iVar5 = uVar6 * 8 + base_ptr_connection_vals; + if ((int)(uVar9 - 1) < 0) { LAB_7f0b1fe8: - aiStack160[uVar9] = iVar5; - uVar9 += 1; - iVar5 = (int)*(short *)(iVar1 + 6); + aiStack160[uVar9] = iVar5; + uVar9 += 1; + iVar5 = (int)*(short *)(iVar1 + 6); + } + else { + piVar4 = aiStack160 + (uVar9 - 1); + iVar7 = *piVar4; + while( true ) { + piVar4 = piVar4 + -1; + if (iVar5 == iVar7) break; + if (piVar4 < aiStack160) goto LAB_7f0b1fe8; + iVar7 = *piVar4; + } + iVar5 = (int)*(short *)(iVar1 + 6); + } + goto LAB_7f0b2038; + } + } + DAT_8007b9e4 = iVar1; + DAT_8007b9e8 = iVar5; + if ((in_stack_00000018 == NULL) || + (lVar3 = (*in_stack_00000018)(aiStack160,uVar9,in_stack_0000001c), + lVar3 != 1)) { + return 2; + } + iVar5 = (int)*(short *)(iVar1 + 6); + param_2 = extraout_f12_05; + param_3 = extraout_f14_05; + } + else { + iVar5 = (int)*(short *)(iVar1 + 6); + } } else { - piVar4 = aiStack160 + (uVar9 - 1); - iVar7 = *piVar4; - while( true ) { - piVar4 = piVar4 + -1; - if (iVar5 == iVar7) break; - if (piVar4 < aiStack160) goto LAB_7f0b1fe8; - iVar7 = *piVar4; - } - iVar5 = (int)*(short *)(iVar1 + 6); + iVar5 = (int)*(short *)(iVar1 + 6); } - goto LAB_7f0b2038; - } - } - DAT_8007b9e4 = iVar1; - DAT_8007b9e8 = iVar5; - if ((in_stack_00000018 == NULL) || - (DAT_8007b9e4 = iVar1, DAT_8007b9e8 = iVar5, - lVar3 = (*in_stack_00000018)(aiStack160,uVar9,in_stack_0000001c), lVar3 != 1)) { - return 2; - } - iVar5 = (int)*(short *)(iVar1 + 6); - param_2 = extraout_f12_05; - param_3 = extraout_f14_05; - } - else { - iVar5 = (int)*(short *)(iVar1 + 6); - param_2 = extraout_f12_03; - param_3 = extraout_f14_03; - } - } - else { - iVar5 = (int)*(short *)(iVar1 + 6); - param_2 = extraout_f12_02; - param_3 = extraout_f14_02; - } LAB_7f0b2038: - uVar6 = iVar5 >> 0xc & 0xf; - iVar5 = iVar10; - } while (iVar10 < (int)uVar6); - } - if (0x28 < uVar9) { - return 5; - } - if ((int)uVar9 <= iStack172) { - if (in_stack_00000018 != NULL) { - (*in_stack_00000018)(aiStack160,uVar9,in_stack_0000001c); - } - return 0xfffffffffffffffe; - } - } while( true ); + uVar6 = iVar5 >> 0xc & 0xf; + iVar5 = iVar10; + } while (iVar10 < (int)uVar6); + } + if (0x28 < uVar9) { + return 5; + } + if ((int)uVar9 <= iStack172) { + if (in_stack_00000018 != NULL) { + (*in_stack_00000018)(aiStack160,uVar9,in_stack_0000001c); + } + return 0xfffffffffffffffe; + } + } while( true ); } @@ -123873,11 +123010,11 @@ LAB_7f0b2038: void proc_7F0B20D0(int *param_1,float param_2,float param_3,float param_4) { - float in_a2_lo; - undefined *in_a3_lo; - - proc_7F0B1DDC(param_1,param_4,in_a2_lo,param_4,(undefined *)in_a2_lo,in_a3_lo,NULL,0); - return; + float in_a2_lo; + undefined *in_a3_lo; + + proc_7F0B1DDC(param_1,param_4,in_a2_lo,param_4,(undefined *)in_a2_lo,in_a3_lo,NULL,0); + return; } @@ -123885,35 +123022,35 @@ void proc_7F0B20D0(int *param_1,float param_2,float param_3,float param_4) undefined8 proc_7F0B2110(int param_1,int **param_2) { - int *piVar1; - int iVar2; - int iVar3; - int *piVar4; - - piVar1 = param_2[1]; - iVar3 = 0; - if ((int)piVar1 < 1) { - piVar4 = param_2[2]; - } - else { - piVar4 = *param_2; - iVar2 = *piVar4; - while( true ) { - if ((ulonglong)*(byte *)(param_1 + 3) == (longlong)iVar2) { - return 0; - } - iVar3 += 1; - piVar4 = piVar4 + 1; - if ((int)param_2[1] <= iVar3) break; - iVar2 = *piVar4; + int *piVar1; + int iVar2; + int iVar3; + int *piVar4; + + piVar1 = param_2[1]; + iVar3 = 0; + if ((int)piVar1 < 1) { + piVar4 = param_2[2]; } - piVar4 = param_2[2]; - } - if ((int)piVar1 < (int)piVar4) { - (*param_2)[(int)piVar1] = (uint)*(byte *)(param_1 + 3); - param_2[1] = (int *)((int)param_2[1] + 1); - } - return 0; + else { + piVar4 = *param_2; + iVar2 = *piVar4; + while( true ) { + if ((ulonglong)*(byte *)(param_1 + 3) == (longlong)iVar2) { + return 0; + } + iVar3 += 1; + piVar4 = piVar4 + 1; + if ((int)param_2[1] <= iVar3) break; + iVar2 = *piVar4; + } + piVar4 = param_2[2]; + } + if ((int)piVar1 < (int)piVar4) { + (*param_2)[(int)piVar1] = (uint)*(byte *)(param_1 + 3); + param_2[1] = (int *)((int)param_2[1] + 1); + } + return 0; } @@ -123921,8 +123058,8 @@ undefined8 proc_7F0B2110(int param_1,int **param_2) undefined8 proc_7F0B2194(undefined8 param_1,undefined8 param_2,int param_3) { - *(int *)(param_3 + 0xc) = *(int *)(param_3 + 0xc) + 1; - return 1; + *(int *)(param_3 + 0xc) = *(int *)(param_3 + 0xc) + 1; + return 1; } @@ -123932,16 +123069,16 @@ proc_7F0B21B0(int *param_1,float param_2,float param_3,float param_4,float param undefined4 *param_6,undefined4 param_7) { - undefined8 uVar1; - undefined4 *in_stack_00000014; - - uVar1 = proc_7F0B1DDC(param_1,param_4,param_5,param_4,(undefined *)param_5,(undefined *)param_6, - proc_7F0B2110,0); - *in_stack_00000014 = 0; - if (false) { - uVar1 = 2; - } - return uVar1; + undefined8 uVar1; + undefined4 *in_stack_00000014; + + uVar1 = proc_7F0B1DDC(param_1,param_4,param_5,param_4,(undefined *)param_5,(undefined *)param_6, + proc_7F0B2110,0); + *in_stack_00000014 = 0; + if (false) { + uVar1 = 2; + } + return uVar1; } @@ -123949,10 +123086,10 @@ proc_7F0B21B0(int *param_1,float param_2,float param_3,float param_4,float param undefined8 proc_7F0B2244(int param_1,undefined4 *param_2) { - if ((*(byte *)((int)&dword_80040F30 + ((int)*(short *)(param_1 + 4) >> 0xc)) & 2) != 0) { - *param_2 = 1; - } - return 0; + if ((*(byte *)((int)&dword_80040F30 + ((int)*(short *)(param_1 + 4) >> 0xc)) & 2) != 0) { + *param_2 = 1; + } + return 0; } @@ -123962,25 +123099,25 @@ proc_7F0B2274(int param_1,int param_2,undefined param_3,undefined param_4,undefi undefined4 *param_6) { - uint uVar1; - int iVar2; - int iVar3; - - uVar1 = (uint)*(ushort *)(param_1 + param_2 * 8 + 0xe); - if ((int)uVar1 >> 4 != 0) { - iVar2 = uVar1 * 8 + base_ptr_connection_vals; - iVar3 = (int)*(short *)(iVar2 + 4) >> 0xc; - if ((*(byte *)((int)&dword_80040F30 + iVar3) & 2) != 0) { - *param_6 = 1; - return 1; + uint uVar1; + int iVar2; + int iVar3; + + uVar1 = (uint)*(ushort *)(param_1 + param_2 * 8 + 0xe); + if ((int)uVar1 >> 4 != 0) { + iVar2 = uVar1 * 8 + base_ptr_connection_vals; + iVar3 = (int)*(short *)(iVar2 + 4) >> 0xc; + if ((*(byte *)((int)&dword_80040F30 + iVar3) & 2) != 0) { + *param_6 = 1; + return 1; + } + if ((*(byte *)((int)&dword_80040F30 + iVar3) & 0x40) != 0) { + DAT_8007ba0c = iVar2; + param_6[1] = 1; + return 0; + } } - if ((*(byte *)((int)&dword_80040F30 + iVar3) & 0x40) != 0) { - DAT_8007ba0c = iVar2; - param_6[1] = 1; - return 0; - } - } - return 0; + return 0; } @@ -123988,23 +123125,23 @@ proc_7F0B2274(int param_1,int param_2,undefined param_3,undefined param_4,undefi uint proc_7F0B2314(int *param_1,float param_2,float param_3,float param_4,undefined4 *param_5) { - undefined8 uVar1; - int iVar2; - undefined *in_a3_lo; - undefined4 *in_stack_00000010; - - iVar2 = 0; - do { - iVar2 += 4; - *in_stack_00000010 = 0; - in_stack_00000010[1] = 0; - in_stack_00000010[2] = 0; - in_stack_00000010[3] = 0; - in_stack_00000010 = in_stack_00000010 + 4; - } while (iVar2 != 0x10); - uVar1 = proc_7F0B1DDC(param_1,param_4,(float)param_5,param_4,(undefined *)param_5,in_a3_lo, - proc_7F0B2244,proc_7F0B2274); - return (uint)uVar1; + undefined8 uVar1; + int iVar2; + undefined *in_a3_lo; + undefined4 *in_stack_00000010; + + iVar2 = 0; + do { + iVar2 += 4; + *in_stack_00000010 = 0; + in_stack_00000010[1] = 0; + in_stack_00000010[2] = 0; + in_stack_00000010[3] = 0; + in_stack_00000010 = in_stack_00000010 + 4; + } while (iVar2 != 0x10); + uVar1 = proc_7F0B1DDC(param_1,param_4,(float)param_5,param_4,(undefined *)param_5,in_a3_lo, + proc_7F0B2244,proc_7F0B2274); + return (uint)uVar1; } @@ -124012,7 +123149,7 @@ uint proc_7F0B2314(int *param_1,float param_2,float param_3,float param_4,undefi undefined4 proc_7F0B239C(undefined4 *param_1) { - return *param_1; + return *param_1; } @@ -124020,7 +123157,7 @@ undefined4 proc_7F0B239C(undefined4 *param_1) undefined4 proc_7F0B23A4(int param_1) { - return *(undefined4 *)(param_1 + 4); + return *(undefined4 *)(param_1 + 4); } @@ -124028,14 +123165,14 @@ undefined4 proc_7F0B23A4(int param_1) void proc_7F0B23AC(int param_1,undefined8 param_2,float *param_3) { - float fVar1; - - fVar1 = flt_80040F48; - param_1 += ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; - *param_3 = (float)(int)*(short *)(param_1 + 8) * flt_80040F48; - param_3[1] = (float)(int)*(short *)(param_1 + 10) * fVar1; - param_3[2] = (float)(int)*(short *)(param_1 + 0xc) * fVar1; - return; + float fVar1; + + fVar1 = flt_80040F48; + param_1 += ((int)*(short *)(param_1 + 6) >> ((int)param_2 * -4 + 8U & 0x1f) & 0xfU) * 8; + *param_3 = (float)(int)*(short *)(param_1 + 8) * flt_80040F48; + param_3[1] = (float)(int)*(short *)(param_1 + 10) * fVar1; + param_3[2] = (float)(int)*(short *)(param_1 + 0xc) * fVar1; + return; } @@ -124043,59 +123180,59 @@ void proc_7F0B23AC(int param_1,undefined8 param_2,float *param_3) void proc_7F0B2420(int *param_1,int *param_2,int param_3) { - int iVar1; - int iVar2; - int iVar3; - int iVar4; - uint uVar5; - int iVar6; - uint uVar7; - - iVar1 = DAT_8007ba0c; - uVar7 = (int)*(short *)(DAT_8007ba0c + 6) >> 0xc & 0xf; - iVar2 = 0; - iVar4 = DAT_8007ba0c; - if (uVar7 == 0) { + int iVar1; + int iVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + uint uVar7; + + iVar1 = DAT_8007ba0c; + uVar7 = (int)*(short *)(DAT_8007ba0c + 6) >> 0xc & 0xf; + iVar2 = 0; + iVar4 = DAT_8007ba0c; + if (uVar7 == 0) { + return; + } + while ((iVar6 = (uint)*(ushort *)(iVar4 + 0xe) * 8 + base_ptr_connection_vals, + (int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 == 0 || + ((*(byte *)((int)&dword_80040F30 + ((int)*(short *)(iVar6 + 4) >> 0xc)) & 0x40) == 0))) { + iVar2 += 1; + iVar4 = iVar4 + 8; + if ((int)uVar7 <= iVar2) { + return; + } + } + *param_1 = DAT_8007ba0c; + *param_2 = iVar6; + uVar7 = 0; + while( true ) { + iVar4 = 0; + uVar5 = uVar7; + do { + iVar3 = ((int)uVar7 >> 2) + iVar4; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar3 == -0x80000000)) { + trap(0x1800); + } + proc_7F0B23AC(iVar6,(longlong)(iVar3 % 3),(float *)(param_3 + (uVar5 & 3) * 0xc)); + iVar4 += 1; + uVar5 += 1; + } while (iVar4 != 3); + proc_7F0B23AC(iVar1,(longlong)((iVar2 + 2) % 3),(float *)(param_3 + (uVar7 + 3 & 3) * 0xc)); + uVar7 += 1; + if (uVar7 == 0xc) break; + if ((((*(float *)(param_3 + 4) <= *(float *)(param_3 + 0x1c)) && + (*(float *)(param_3 + 0x10) <= *(float *)(param_3 + 0x1c))) && + (*(float *)(param_3 + 4) <= *(float *)(param_3 + 0x28))) && + (*(float *)(param_3 + 0x10) <= *(float *)(param_3 + 0x28))) { + return; + } + } return; - } - while ((iVar6 = (uint)*(ushort *)(iVar4 + 0xe) * 8 + base_ptr_connection_vals, - (int)(uint)*(ushort *)(iVar4 + 0xe) >> 4 == 0 || - ((*(byte *)((int)&dword_80040F30 + ((int)*(short *)(iVar6 + 4) >> 0xc)) & 0x40) == 0))) { - iVar2 += 1; - iVar4 = iVar4 + 8; - if ((int)uVar7 <= iVar2) { - return; - } - } - *param_1 = DAT_8007ba0c; - *param_2 = iVar6; - uVar7 = 0; - while( true ) { - iVar4 = 0; - uVar5 = uVar7; - do { - iVar3 = ((int)uVar7 >> 2) + iVar4; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - proc_7F0B23AC(iVar6,(longlong)(iVar3 % 3),(float *)(param_3 + (uVar5 & 3) * 0xc)); - iVar4 += 1; - uVar5 += 1; - } while (iVar4 != 3); - proc_7F0B23AC(iVar1,(longlong)((iVar2 + 2) % 3),(float *)(param_3 + (uVar7 + 3 & 3) * 0xc)); - uVar7 += 1; - if (uVar7 == 0xc) break; - if ((((*(float *)(param_3 + 4) <= *(float *)(param_3 + 0x1c)) && - (*(float *)(param_3 + 0x10) <= *(float *)(param_3 + 0x1c))) && - (*(float *)(param_3 + 4) <= *(float *)(param_3 + 0x28))) && - (*(float *)(param_3 + 0x10) <= *(float *)(param_3 + 0x28))) { - return; - } - } - return; } @@ -124105,21 +123242,21 @@ proc_7F0B260C(int param_1,int param_2,undefined param_3,undefined param_4,undefi float *param_6) { - uint uVar1; - - if (*param_6 < (float)(int)*(short *)(param_1 + param_2 * 8 + 10)) { - uVar1 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; - if (uVar1 == 0) { - trap(0x1c00); + uint uVar1; + + if (*param_6 < (float)(int)*(short *)(param_1 + param_2 * 8 + 10)) { + uVar1 = (int)*(short *)(param_1 + 6) >> 0xc & 0xf; + if (uVar1 == 0) { + trap(0x1c00); + } + if ((uVar1 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { + trap(0x1800); + } + if (*param_6 < (float)(int)*(short *)(param_1 + ((param_2 + 1) % uVar1) * 8 + 10)) { + return 1; + } } - if ((uVar1 == 0xffffffff) && (param_2 + 1 == -0x80000000)) { - trap(0x1800); - } - if (*param_6 < (float)(int)*(short *)(param_1 + ((param_2 + 1) % uVar1) * 8 + 10)) { - return 1; - } - } - return 0; + return 0; } @@ -124127,10 +123264,10 @@ proc_7F0B260C(int param_1,int param_2,undefined param_3,undefined param_4,undefi void proc_7F0B26B8(int *param_1,float param_2,float param_3,float param_4,float param_5) { - undefined *in_a3_lo; - - proc_7F0B1DDC(param_1,param_4,param_5,param_4,(undefined *)param_5,in_a3_lo,NULL,proc_7F0B260C); - return; + undefined *in_a3_lo; + + proc_7F0B1DDC(param_1,param_4,param_5,param_4,(undefined *)param_5,in_a3_lo,NULL,proc_7F0B260C); + return; } @@ -124138,74 +123275,73 @@ void proc_7F0B26B8(int *param_1,float param_2,float param_3,float param_4,float int proc_7F0B2718(int param_1,undefined *param_2) { - int iVar1; - bool bVar2; - longlong lVar3; - uint uVar4; - int *piVar5; - uint uVar6; - int iVar7; - uint uVar8; - int iVar9; - int iVar10; - int iVar11; - int *piStack28; - uint uStack8; - - lVar3 = (*(code *)param_2)(); - if (lVar3 == 0) { - uStack8 = 1; - DAT_8007ba10 = param_1; - do { - iVar11 = 0; - uVar8 = uStack8; - if (0 < (int)uStack8) { - piStack28 = &DAT_8007ba10; - uVar8 = uStack8; + int iVar1; + bool bVar2; + longlong lVar3; + uint uVar4; + int *piVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + int iVar10; + int iVar11; + int *piStack28; + uint uStack8; + + lVar3 = (*(code *)param_2)(); + if (lVar3 == 0) { + uStack8 = 1; + DAT_8007ba10 = param_1; do { - iVar9 = 0; - iVar1 = *piStack28; - uVar6 = (int)*(short *)(iVar1 + 6) >> 0xc & 0xf; - iVar10 = iVar1; - if (uVar6 != 0) { - do { - iVar7 = (uint)*(ushort *)(iVar10 + 0xe) * 8 + base_ptr_connection_vals; - if ((int)(uint)*(ushort *)(iVar10 + 0xe) >> 4 != 0) { - uVar4 = 0; - if (0 < (int)uVar8) { - piVar5 = &DAT_8007ba10; - do { - uVar4 += 1; - if (iVar7 == *piVar5) goto LAB_7f0b283c; - piVar5 = piVar5 + 1; - } while (uVar4 != uVar8); - } - lVar3 = (*(code *)param_2)(iVar7); - if (lVar3 != 0) { - return iVar7; - } - (&DAT_8007ba10)[uVar8] = iVar7; - if (0x15e < uVar8 + 1) { - return 0; - } - uVar6 = (int)*(short *)(iVar1 + 6) >> 0xc & 0xf; - uVar8 = uVar8 + 1; - } + iVar11 = 0; + uVar8 = uStack8; + if (0 < (int)uStack8) { + piStack28 = &DAT_8007ba10; + do { + iVar9 = 0; + iVar1 = *piStack28; + uVar6 = (int)*(short *)(iVar1 + 6) >> 0xc & 0xf; + iVar10 = iVar1; + if (uVar6 != 0) { + do { + iVar7 = (uint)*(ushort *)(iVar10 + 0xe) * 8 + base_ptr_connection_vals; + if ((int)(uint)*(ushort *)(iVar10 + 0xe) >> 4 != 0) { + uVar4 = 0; + if (0 < (int)uVar8) { + piVar5 = &DAT_8007ba10; + do { + uVar4 += 1; + if (iVar7 == *piVar5) goto LAB_7f0b283c; + piVar5 = piVar5 + 1; + } while (uVar4 != uVar8); + } + lVar3 = (*(code *)param_2)(iVar7); + if (lVar3 != 0) { + return iVar7; + } + (&DAT_8007ba10)[uVar8] = iVar7; + if (0x15e < uVar8 + 1) { + return 0; + } + uVar6 = (int)*(short *)(iVar1 + 6) >> 0xc & 0xf; + uVar8 = uVar8 + 1; + } LAB_7f0b283c: - iVar9 += 1; - iVar10 += 8; - } while (iVar9 < (int)uVar6); - } - iVar11 += 1; - piStack28 = piStack28 + 1; - } while (iVar11 < (int)uStack8); - } - bVar2 = uVar8 != uStack8; - uStack8 = uVar8; - } while (bVar2); - param_1 = 0; - } - return param_1; + iVar9 += 1; + iVar10 += 8; + } while (iVar9 < (int)uVar6); + } + iVar11 += 1; + piStack28 = piStack28 + 1; + } while (iVar11 < (int)uStack8); + } + bVar2 = uVar8 != uStack8; + uStack8 = uVar8; + } while (bVar2); + param_1 = 0; + } + return param_1; } @@ -124213,30 +123349,30 @@ LAB_7f0b283c: undefined8 proc_7F0B28B0(float *param_1,float *param_2) { - float fVar1; - undefined8 uVar2; - - fVar1 = DAT_8007b9f0; - if (DAT_8007b9e4 == 0) { - if (dword_800413BC == 0) { - uVar2 = 0; + float fVar1; + undefined8 uVar2; + + fVar1 = DAT_8007b9f0; + if (DAT_8007b9e4 == 0) { + if (dword_800413BC == 0) { + uVar2 = 0; + } + else { + param_1[1] = 0.00000000; + *param_1 = fVar1; + uVar2 = 1; + param_1[2] = DAT_8007b9f4; + fVar1 = DAT_8007b9f8; + param_2[1] = 0.00000000; + *param_2 = fVar1; + param_2[2] = DAT_8007b9fc; + } } else { - param_1[1] = 0.00000000; - *param_1 = fVar1; - uVar2 = 1; - param_1[2] = DAT_8007b9f4; - fVar1 = DAT_8007b9f8; - param_2[1] = 0.00000000; - *param_2 = fVar1; - param_2[2] = DAT_8007b9fc; + proc_7F0B1CF8(DAT_8007b9e4,DAT_8007b9e8,param_1,param_2); + uVar2 = 1; } - } - else { - proc_7F0B1CF8(DAT_8007b9e4,DAT_8007b9e8,param_1,param_2); - uVar2 = 1; - } - return uVar2; + return uVar2; } @@ -124244,9 +123380,9 @@ undefined8 proc_7F0B28B0(float *param_1,float *param_2) void proc_7F0B2950(float param_1) { - flt_80040F44 = param_1; - flt_80040F48 = 1.00000000 / param_1; - return; + flt_80040F44 = param_1; + flt_80040F48 = 1.00000000 / param_1; + return; } @@ -124256,84 +123392,85 @@ void proc_7F0B2950(float param_1) ulonglong proc_7F0B2970(void) { - short sVar1; - longlong lVar2; - longlong lVar3; - longlong lVar4; - longlong lVar5; - longlong lVar6; - uint left_l; - uint left_l_00; - uint left_l_01; - uint uVar7; - uint uVar8; - uint uVar9; - int in_a0_lo; - float in_a1_lo; - float in_a2_lo; - int left_u; - uint uVar10; - int iVar11; - undefined4 uVar12; - undefined8 in_f0; - ulonglong uVar13; - double dVar14; - double dVar15; - double dVar16; - double dVar17; - float fVar18; - float fVar19; - float fVar20; - float fVar21; - float fVar22; - float fVar23; - float fVar24; - float fVar25; - - uVar12 = (undefined4)((ulonglong)in_f0 >> 0x20); - fVar24 = in_a1_lo * flt_80040F44; - fVar19 = in_a2_lo * flt_80040F44; - sVar1 = *(short *)(in_a0_lo + 6); - iVar11 = in_a0_lo + ((int)sVar1 >> 8 & 0xfU) * 8; - left_l = in_a0_lo + ((int)sVar1 >> 4 & 0xfU) * 8; - left_u = in_a0_lo + ((int)sVar1 & 0xfU) * 8; - fVar21 = (float)((int)*(short *)(left_l + 8) - (int)*(short *)(iVar11 + 8)); - fVar25 = (float)((int)*(short *)(left_l + 10) - (int)*(short *)(iVar11 + 10)); - fVar20 = (float)((int)*(short *)(left_l + 0xc) - (int)*(short *)(iVar11 + 0xc)); - fVar22 = (float)((int)*(short *)(left_u + 8) - (int)*(short *)(iVar11 + 8)); - fVar18 = (float)((int)*(short *)(left_u + 10) - (int)*(short *)(iVar11 + 10)); - fVar23 = (float)((int)*(short *)(left_u + 0xc) - (int)*(short *)(iVar11 + 0xc)); - lVar2 = __f_to_ll(fVar25 * fVar23 - fVar18 * fVar20); - left_l_00 = left_l; - lVar3 = __f_to_ll(fVar20 * fVar22 - fVar23 * fVar21); - left_u = (int)lVar3; - left_l_01 = left_l_00; - lVar3 = __f_to_ll(fVar21 * fVar18 - fVar22 * fVar25); - uVar7 = left_l_01; - lVar4 = __ll_mul(left_u,left_l_00,(int)*(short *)(iVar11 + 10) >> 0x1f, - (int)*(short *)(iVar11 + 10)); - uVar8 = uVar7; - lVar5 = __ll_mul((int)lVar2,left_l,(int)*(short *)(iVar11 + 8) >> 0x1f,(int)*(short *)(iVar11 + 8) - ); - uVar9 = uVar8; - lVar6 = __ll_mul((int)lVar3,left_l_01,(int)*(short *)(iVar11 + 0xc) >> 0x1f, - (int)*(short *)(iVar11 + 0xc)); - uVar10 = uVar9 + uVar8 + uVar7; - if ((left_u == 0) && (left_l_00 == 0)) { - uVar13 = CONCAT44(uVar12,(float)(int)*(short *)(iVar11 + 10) * flt_80040F48); - } - else { - dVar14 = __ll_to_d((int)lVar3,left_l_01); - dVar15 = __ll_to_d((int)lVar2,left_l); - dVar16 = __ll_to_d((uint)(uVar10 < uVar7) + - (uint)(uVar9 + uVar8 < uVar8) + (int)lVar6 + (int)lVar5 + (int)lVar4,uVar10); - dVar17 = __ll_to_d(left_u,left_l_00); - uVar13 = (ulonglong)dVar17 & 0xffffffff00000000 | - (ulonglong) - (uint)((float)(((dVar16 - (double)fVar24 * dVar15) - (double)fVar19 * dVar14) / dVar17) - * flt_80040F48); - } - return uVar13; + short sVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + longlong lVar5; + longlong lVar6; + uint left_l; + uint left_l_00; + uint left_l_01; + uint uVar7; + uint uVar8; + uint uVar9; + int in_a0_lo; + float in_a1_lo; + float in_a2_lo; + int left_u; + uint uVar10; + int iVar11; + undefined4 uVar12; + undefined8 in_f0; + ulonglong uVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + + uVar12 = (undefined4)((ulonglong)in_f0 >> 0x20); + fVar24 = in_a1_lo * flt_80040F44; + fVar19 = in_a2_lo * flt_80040F44; + sVar1 = *(short *)(in_a0_lo + 6); + iVar11 = in_a0_lo + ((int)sVar1 >> 8 & 0xfU) * 8; + left_l = in_a0_lo + ((int)sVar1 >> 4 & 0xfU) * 8; + left_u = in_a0_lo + ((int)sVar1 & 0xfU) * 8; + fVar21 = (float)((int)*(short *)(left_l + 8) - (int)*(short *)(iVar11 + 8)); + fVar25 = (float)((int)*(short *)(left_l + 10) - (int)*(short *)(iVar11 + 10)); + fVar20 = (float)((int)*(short *)(left_l + 0xc) - (int)*(short *)(iVar11 + 0xc)); + fVar22 = (float)((int)*(short *)(left_u + 8) - (int)*(short *)(iVar11 + 8)); + fVar18 = (float)((int)*(short *)(left_u + 10) - (int)*(short *)(iVar11 + 10)); + fVar23 = (float)((int)*(short *)(left_u + 0xc) - (int)*(short *)(iVar11 + 0xc)); + lVar2 = __f_to_ll(fVar25 * fVar23 - fVar18 * fVar20); + left_l_00 = left_l; + lVar3 = __f_to_ll(fVar20 * fVar22 - fVar23 * fVar21); + left_u = (int)lVar3; + left_l_01 = left_l_00; + lVar3 = __f_to_ll(fVar21 * fVar18 - fVar22 * fVar25); + uVar7 = left_l_01; + lVar4 = __ll_mul(left_u,left_l_00,(int)*(short *)(iVar11 + 10) >> 0x1f, + (int)*(short *)(iVar11 + 10)); + uVar8 = uVar7; + lVar5 = __ll_mul((int)lVar2,left_l,(int)*(short *)(iVar11 + 8) >> 0x1f, + (int)*(short *)(iVar11 + 8)); + uVar9 = uVar8; + lVar6 = __ll_mul((int)lVar3,left_l_01,(int)*(short *)(iVar11 + 0xc) >> 0x1f, + (int)*(short *)(iVar11 + 0xc)); + uVar10 = uVar9 + uVar8 + uVar7; + if ((left_u == 0) && (left_l_00 == 0)) { + uVar13 = CONCAT44(uVar12,(float)(int)*(short *)(iVar11 + 10) * flt_80040F48); + } + else { + dVar14 = __ll_to_d((int)lVar3,left_l_01); + dVar15 = __ll_to_d((int)lVar2,left_l); + dVar16 = __ll_to_d((uint)(uVar10 < uVar7) + + (uint)(uVar9 + uVar8 < uVar8) + (int)lVar6 + (int)lVar5 + (int)lVar4, + uVar10); + dVar17 = __ll_to_d(left_u,left_l_00); + uVar13 = (ulonglong)dVar17 & 0xffffffff00000000 | + (ulonglong) + (uint)((float)(((dVar16 - (double)fVar24 * dVar15) - (double)fVar19 * dVar14) / + dVar17) * flt_80040F48); + } + return uVar13; } @@ -124341,17 +123478,17 @@ ulonglong proc_7F0B2970(void) void copy_tile_RGB_as_24bit(int *tile,int posx,int posz,tile_rgb *target) { - short sVar1; - uint uVar2; - uint uVar3; - - sVar1 = *(short *)(tile + 1); - uVar2 = (int)sVar1 >> 8 & 0xf; - uVar3 = (int)sVar1 >> 4 & 0xf; - target->red = (byte)(uVar2 << 4) | (byte)uVar2; - target->green = (byte)(uVar3 << 4) | (byte)uVar3; - target->blue = (byte)((int)((longlong)sVar1 & 0xfU) << 4) | (byte)((longlong)sVar1 & 0xfU); - return; + short sVar1; + uint uVar2; + uint uVar3; + + sVar1 = *(short *)(tile + 1); + uVar2 = (int)sVar1 >> 8 & 0xf; + uVar3 = (int)sVar1 >> 4 & 0xf; + target->red = (byte)(uVar2 << 4) | (byte)uVar2; + target->green = (byte)(uVar3 << 4) | (byte)uVar3; + target->blue = (byte)((int)((longlong)sVar1 & 0xfU) << 4) | (byte)((longlong)sVar1 & 0xfU); + return; } @@ -124359,12 +123496,12 @@ void copy_tile_RGB_as_24bit(int *tile,int posx,int posz,tile_rgb *target) void proc_7F0B2C74(int param_1,float *param_2) { - float fVar1; - - fVar1 = (float)(int)*(short *)(param_1 + ((int)*(short *)(param_1 + 6) >> 8 & 0xfU) * 8 + 10); - *param_2 = fVar1 * flt_80040F48; - param_2[1] = fVar1 * flt_80040F48; - return; + float fVar1; + + fVar1 = (float)(int)*(short *)(param_1 + ((int)*(short *)(param_1 + 6) >> 8 & 0xfU) * 8 + 10); + *param_2 = fVar1 * flt_80040F48; + param_2[1] = fVar1 * flt_80040F48; + return; } @@ -124372,10 +123509,10 @@ void proc_7F0B2C74(int param_1,float *param_2) float proc_7F0B2D14(int param_1) { - float afStack8 [2]; - - proc_7F0B2C74(param_1,afStack8); - return afStack8[0]; + float afStack8 [2]; + + proc_7F0B2C74(param_1,afStack8); + return afStack8[0]; } @@ -124383,7 +123520,7 @@ float proc_7F0B2D14(int param_1) void removed_7F0B2D38(u32 param_1,u32 param_2,u32 param_3) { - return; + return; } @@ -124391,7 +123528,7 @@ void removed_7F0B2D38(u32 param_1,u32 param_2,u32 param_3) undefined8 proc_7F0B2D48(undefined8 param_1) { - return param_1; + return param_1; } @@ -124399,36 +123536,36 @@ undefined8 proc_7F0B2D48(undefined8 param_1) void proc_7F0B2D50(byte *param_1,ushort *param_2,byte *param_3) { - byte bVar1; - uint uVar2; - int iVar3; - int iVar4; - ulonglong uVar5; - byte *apbStack8 [2]; - - iVar3 = (uint)*param_1 - 0x70; - if ((-1 < iVar3) && (iVar3 < 2)) { - uVar2 = strtol((char *)(param_1 + 1),(char **)apbStack8,10); - if ((apbStack8[0] != param_1 + 1) && (uVar2 < 0x8000)) { - iVar4 = (uint)*apbStack8[0] - 0x61; - if ((-1 < iVar4) && (iVar4 < 0x1a)) { - bVar1 = apbStack8[0][1]; - uVar5 = (ulonglong)bVar1; - if ((bVar1 != 0) && (bVar1 != 0x30)) { - uVar5 = SEXT48((int)((uint)bVar1 - 0x30)); + byte bVar1; + uint uVar2; + int iVar3; + int iVar4; + ulonglong uVar5; + byte *apbStack8 [2]; + + iVar3 = (uint)*param_1 - 0x70; + if ((-1 < iVar3) && (iVar3 < 2)) { + uVar2 = strtol((char *)(param_1 + 1),(char **)apbStack8,10); + if ((apbStack8[0] != param_1 + 1) && (uVar2 < 0x8000)) { + iVar4 = (uint)*apbStack8[0] - 0x61; + if ((-1 < iVar4) && (iVar4 < 0x1a)) { + bVar1 = apbStack8[0][1]; + uVar5 = (ulonglong)bVar1; + if ((bVar1 != 0) && (bVar1 != 0x30)) { + uVar5 = SEXT48((int)((uint)bVar1 - 0x30)); + } + if (((-1 < (longlong)uVar5) && ((longlong)uVar5 < 8)) && + ((bVar1 == 0 || (apbStack8[0][2] == 0)))) { + *param_2 = (short)iVar3 * -0x8000 | (ushort)uVar2; + *param_3 = (char)iVar4 * '\b' | (byte)uVar5; + return; + } + } } - if (((-1 < (longlong)uVar5) && ((longlong)uVar5 < 8)) && - ((bVar1 == 0 || (apbStack8[0][2] == 0)))) { - *param_2 = (short)iVar3 * -0x8000 | (ushort)uVar2; - *param_3 = (char)iVar4 * '\b' | (byte)uVar5; - return; - } - } } - } - *param_2 = 0xffff; - *param_3 = 0xff; - return; + *param_2 = 0xffff; + *param_3 = 0xff; + return; } @@ -124436,34 +123573,35 @@ void proc_7F0B2D50(byte *param_1,ushort *param_2,byte *param_3) int * stanMatchTileName(byte *param_1) { - short sVar1; - ushort uVar2; - int *piVar3; - byte bStack7; - ushort auStack6 [3]; - - if (*param_1 != 0) { - proc_7F0B2D50(param_1,auStack6,&bStack7); - piVar3 = *(int **)(clippingfile + 4); - if (*piVar3 != 0) { - uVar2 = *(ushort *)piVar3; - while( true ) { - if (auStack6[0] == uVar2) { - if (bStack7 == *(byte *)((int)piVar3 + 2)) { - return piVar3; - } - sVar1 = *(short *)((int)piVar3 + 6); + short sVar1; + ushort uVar2; + int *piVar3; + byte bStack7; + ushort auStack6 [3]; + + if (*param_1 != 0) { + proc_7F0B2D50(param_1,auStack6,&bStack7); + piVar3 = *(int **)(clippingfile + 4); + if (*piVar3 != 0) { + uVar2 = *(ushort *)piVar3; + while( true ) { + if (auStack6[0] == uVar2) { + if (bStack7 == *(byte *)((int)piVar3 + 2)) { + return piVar3; + } + sVar1 = *(short *)((int)piVar3 + 6); + } + else { + sVar1 = *(short *)((int)piVar3 + 6); + } + piVar3 = (int *)((uint)(byte)list_of_tilesizes[(int)sVar1 >> 0xc & 0xf] + + (int)piVar3); + if (*piVar3 == 0) break; + uVar2 = *(ushort *)piVar3; + } } - else { - sVar1 = *(short *)((int)piVar3 + 6); - } - piVar3 = (int *)((uint)(byte)list_of_tilesizes[(int)sVar1 >> 0xc & 0xf] + (int)piVar3); - if (*piVar3 == 0) break; - uVar2 = *(ushort *)piVar3; - } } - } - return NULL; + return NULL; } @@ -124471,11 +123609,11 @@ int * stanMatchTileName(byte *param_1) void proc_7F0B2F00(int **param_1) { - int *piVar1; - - piVar1 = stanMatchTileName((byte *)*param_1); - *param_1 = piVar1; - return; + int *piVar1; + + piVar1 = stanMatchTileName((byte *)*param_1); + *param_1 = piVar1; + return; } @@ -124483,35 +123621,35 @@ void proc_7F0B2F00(int **param_1) void load_stan(int param_1,int param_2,int param_3) { - int iVar1; - int *piVar2; - int *piVar3; - int iVar4; - - param_3 -= param_2; - base_ptr_connection_vals = *(int *)(param_1 + 4) + param_3 + -0x80; - ptr_firstroom_0 = *(int *)(param_1 + 4) + param_3; - piVar3 = (int *)(param_1 + 4); - if (*(int *)(param_1 + 4) != 0) { - iVar1 = *piVar3; - do { - iVar4 = iVar1 + param_3; - iVar1 = piVar3[1]; - *piVar3 = iVar4; - piVar3 = piVar3 + 1; - } while (iVar1 != 0); - } - iVar1 = piVar3[1]; - piVar3 = piVar3 + 1; - while (piVar2 = piVar3, iVar1 != 0) { - iVar1 = *(int *)((uint)(byte)list_of_tilesizes[(int)*(short *)((int)piVar2 + 6) >> 0xc & 0xf] + - (int)piVar2); - piVar3 = (int *)((uint)(byte)list_of_tilesizes[(int)*(short *)((int)piVar2 + 6) >> 0xc & 0xf] + - (int)piVar2); - DAT_80040f60 = piVar2; - } - clippingfile = param_1; - return; + int iVar1; + int *piVar2; + int *piVar3; + int iVar4; + + param_3 -= param_2; + base_ptr_connection_vals = *(int *)(param_1 + 4) + param_3 + -0x80; + ptr_firstroom_0 = *(int *)(param_1 + 4) + param_3; + piVar3 = (int *)(param_1 + 4); + if (*(int *)(param_1 + 4) != 0) { + iVar1 = *piVar3; + do { + iVar4 = iVar1 + param_3; + iVar1 = piVar3[1]; + *piVar3 = iVar4; + piVar3 = piVar3 + 1; + } while (iVar1 != 0); + } + iVar1 = piVar3[1]; + piVar3 = piVar3 + 1; + while (piVar2 = piVar3, iVar1 != 0) { + iVar1 = *(int *)((uint)(byte)list_of_tilesizes + [(int)*(short *)((int)piVar2 + 6) >> 0xc & 0xf] + (int)piVar2); + piVar3 = (int *)((uint)(byte)list_of_tilesizes + [(int)*(short *)((int)piVar2 + 6) >> 0xc & 0xf] + (int)piVar2); + DAT_80040f60 = piVar2; + } + clippingfile = param_1; + return; } @@ -124519,7 +123657,7 @@ void load_stan(int param_1,int param_2,int param_3) ulonglong proc_7F0B2FD8(int param_1) { - return (ulonglong)*(byte *)(param_1 + 3); + return (ulonglong)*(byte *)(param_1 + 3); } @@ -124527,11 +123665,11 @@ ulonglong proc_7F0B2FD8(int param_1) uint proc_7F0B2FE0(int param_1) { - uint uVar1; - - uVar1 = (uint)*(byte *)(param_1 + 3); - proc_7F0B4F9C((uint)*(byte *)(param_1 + 3)); - return uVar1; + uint uVar1; + + uVar1 = (uint)*(byte *)(param_1 + 3); + proc_7F0B4F9C((uint)*(byte *)(param_1 + 3)); + return uVar1; } @@ -124539,8 +123677,8 @@ uint proc_7F0B2FE0(int param_1) void proc_7F0B3004(int param_1) { - proc_7F0B2D14(param_1); - return; + proc_7F0B2D14(param_1); + return; } @@ -124548,7 +123686,7 @@ void proc_7F0B3004(int param_1) undefined8 proc_7F0B3024(undefined8 param_1) { - return param_1; + return param_1; } @@ -124556,7 +123694,7 @@ undefined8 proc_7F0B3024(undefined8 param_1) undefined8 proc_7F0B3034(undefined8 param_1) { - return param_1; + return param_1; } @@ -124564,7 +123702,7 @@ undefined8 proc_7F0B3034(undefined8 param_1) undefined8 stan_problems_removed(undefined8 param_1) { - return param_1; + return param_1; } @@ -124575,24 +123713,24 @@ undefined8 stan_problems_removed(undefined8 param_1) undefined4 proc_7F0B3044(int param_1) { - int iVar1; - undefined4 uStack4; - - uStack4 = 0; - iVar1 = num_microcode_cmds_that_fit(param_1); - if (((iVar1 < 0x1000) || (iVar1 = proc_7F0BD7A4(), iVar1 < 0x1000)) && (dword_800413D0 == 0)) { - flt_800413C0 = 0.00000000; - flt_800413C4 = 0.00000000; - dword_800413C8 = dword_800413CC; - dword_800413D0 = 1; - } - if ((dword_800413D0 == 0) && - (flt_800413C0 = flt_800413C0 + flt_800413C4, 1.00000000 < flt_800413C0)) { - flt_800413C0 = flt_800413C0 - 1.00000000; - uStack4 = 1; - } - dword_800413CC = dword_800413CC + 1; - return uStack4; + int iVar1; + undefined4 uStack4; + + uStack4 = 0; + iVar1 = num_microcode_cmds_that_fit(param_1); + if (((iVar1 < 0x1000) || (iVar1 = proc_7F0BD7A4(), iVar1 < 0x1000)) && (dword_800413D0 == 0)) { + flt_800413C0 = 0.00000000; + flt_800413C4 = 0.00000000; + dword_800413C8 = dword_800413CC; + dword_800413D0 = 1; + } + if ((dword_800413D0 == 0) && + (flt_800413C0 = flt_800413C0 + flt_800413C4, 1.00000000 < flt_800413C0)) { + flt_800413C0 = flt_800413C0 - 1.00000000; + uStack4 = 1; + } + dword_800413CC = dword_800413CC + 1; + return uStack4; } @@ -124600,7 +123738,7 @@ undefined4 proc_7F0B3044(int param_1) undefined8 stan_region_removed(undefined8 param_1) { - return param_1; + return param_1; } @@ -124609,8 +123747,8 @@ void proc_7F0B3138(undefined8 param_1,undefined8 param_2,f32 param_3,f32 param_4 undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9) { - proc_7F0B0E24(param_2._4_4_,param_3,param_4,param_3); - return; + proc_7F0B0E24(param_2._4_4_,param_3,param_4,param_3); + return; } @@ -124619,8 +123757,8 @@ void proc_7F0B31A4(undefined8 param_1,undefined8 param_2,undefined4 param_3,unde undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) { - proc_7F0B18B8(); - return; + proc_7F0B18B8(); + return; } @@ -124628,23 +123766,23 @@ void proc_7F0B31A4(undefined8 param_1,undefined8 param_2,undefined4 param_3,unde float proc_7F0B3200(float *param_1,float *param_2,float *param_3,float *param_4) { - float fVar1; - float fVar2; - float fVar3; - - fVar3 = *param_4 - *param_3; - fVar1 = param_3[1] - param_4[1]; - fVar2 = (*param_2 - *param_1) * fVar1 + (param_2[1] - param_1[1]) * fVar3; - if (fVar2 == 0.00000000) { - fVar2 = 1.00000000; - } - else { - fVar2 = ((*param_3 - *param_1) * fVar1 + (param_3[1] - param_1[1]) * fVar3) / fVar2; - if ((fVar2 < 0.00000000) || (1.00000000 < fVar2)) { - fVar2 = 1.00000000; + float fVar1; + float fVar2; + float fVar3; + + fVar3 = *param_4 - *param_3; + fVar1 = param_3[1] - param_4[1]; + fVar2 = (*param_2 - *param_1) * fVar1 + (param_2[1] - param_1[1]) * fVar3; + if (fVar2 == 0.00000000) { + fVar2 = 1.00000000; } - } - return fVar2; + else { + fVar2 = ((*param_3 - *param_1) * fVar1 + (param_3[1] - param_1[1]) * fVar3) / fVar2; + if ((fVar2 < 0.00000000) || (1.00000000 < fVar2)) { + fVar2 = 1.00000000; + } + } + return fVar2; } @@ -124652,35 +123790,35 @@ float proc_7F0B3200(float *param_1,float *param_2,float *param_3,float *param_4) float proc_7F0B32D8(float *param_1,float *param_2,float *param_3) { - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float __x; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - - fVar5 = param_1[2]; - fVar4 = param_3[1]; - fVar3 = param_1[1]; - fVar2 = *param_3; - fVar6 = *param_2; - fVar7 = param_2[1]; - fVar8 = fVar6 * (fVar4 - fVar5) - (fVar2 - fVar3) * fVar7; - __x = (*param_1 - fVar8) * (*param_1 + fVar8); - fVar1 = flt_800585E0; - if (0.00000000 <= __x) { - fVar1 = sqrtf(__x); - fVar1 = (fVar6 * (fVar2 - fVar3) + (fVar4 - fVar5) * fVar7) - fVar1; - if ((fVar1 < 0.00000000) && - (fVar2 = fVar1 * fVar1, fVar1 = flt_800585E4, fVar2 + fVar8 * fVar8 <= *param_1 * *param_1)) - { - fVar1 = 0.00000000; + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float __x; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + + fVar5 = param_1[2]; + fVar4 = param_3[1]; + fVar3 = param_1[1]; + fVar2 = *param_3; + fVar6 = *param_2; + fVar7 = param_2[1]; + fVar8 = fVar6 * (fVar4 - fVar5) - (fVar2 - fVar3) * fVar7; + __x = (*param_1 - fVar8) * (*param_1 + fVar8); + fVar1 = flt_800585E0; + if (0.00000000 <= __x) { + fVar1 = sqrtf(__x); + fVar1 = (fVar6 * (fVar2 - fVar3) + (fVar4 - fVar5) * fVar7) - fVar1; + if ((fVar1 < 0.00000000) && + (fVar2 = fVar1 * fVar1, fVar1 = flt_800585E4, + fVar2 + fVar8 * fVar8 <= *param_1 * *param_1)) { + fVar1 = 0.00000000; + } } - } - return fVar1; + return fVar1; } @@ -124688,101 +123826,102 @@ float proc_7F0B32D8(float *param_1,float *param_2,float *param_3) float proc_7F0B33DC(float *param_1,float *param_2,float *param_3,float *param_4) { - float *pfVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float *pfStackX8; - float fStack40; - float fStack36; - float fStack16; - float fStack12; - float fStack4; - - fStack4 = sqrtf(*param_4 * *param_4 + param_4[1] * param_4[1]); - if (fStack4 == 0.00000000) { - return 1.00000000; - } - fVar10 = 1.00000000 / fStack4; - fStack16 = *param_4 * fVar10; - fStack12 = param_4[1] * fVar10; - fVar2 = *param_3 - *param_2; - fStack40 = param_3[1] - param_2[1]; - fVar3 = sqrtf(fVar2 * fVar2 + fStack40 * fStack40); - pfStackX8 = param_3; - if (fVar3 == 0.00000000) { + float *pfVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float *pfStackX8; + float fStack40; + float fStack36; + float fStack16; + float fStack12; + float fStack4; + + fStack4 = sqrtf(*param_4 * *param_4 + param_4[1] * param_4[1]); + if (fStack4 == 0.00000000) { + return 1.00000000; + } + fVar10 = 1.00000000 / fStack4; + fStack16 = *param_4 * fVar10; + fStack12 = param_4[1] * fVar10; + fVar2 = *param_3 - *param_2; + fStack40 = param_3[1] - param_2[1]; + fVar3 = sqrtf(fVar2 * fVar2 + fStack40 * fStack40); + pfStackX8 = param_3; + if (fVar3 == 0.00000000) { LAB_7f0b369c: - fVar2 = proc_7F0B32D8(param_1,&fStack16,pfStackX8); - } - else { - fStack40 = fStack40 * (1.00000000 / fVar3); - fStack36 = -fVar2 * (1.00000000 / fVar3); - fVar2 = *param_1; - fVar3 = param_1[1]; - fVar8 = fVar2 * fStack40; - fVar5 = param_1[2]; - fVar11 = fVar2 * fStack36; - if ((fVar3 - *param_2) * fVar8 + fVar11 * (fVar5 - param_2[1]) < 0.00000000) { - fVar8 = -fVar8; - fVar11 = -fVar11; - } - fVar6 = param_4[1]; - fVar4 = *param_4; - fVar7 = fVar6 * (*param_2 + fVar8) - (param_2[1] + fVar11) * fVar4; - fVar9 = fVar3 * fVar6 - fVar5 * fVar4; - fVar12 = fVar6 * (*param_3 + fVar8) - (param_3[1] + fVar11) * fVar4; - fVar8 = fVar7; - fVar11 = fVar12; - pfVar1 = param_2; - if (fVar12 < fVar7) { - fStack40 = -fStack40; - fStack36 = -fStack36; - fVar8 = fVar12; - fVar11 = fVar7; - pfVar1 = param_3; - param_3 = param_2; - } - if (fVar12 == fVar7) { - fVar3 = proc_7F0B32D8(param_1,&fStack16,pfVar1); - fVar2 = proc_7F0B32D8(param_1,&fStack16,param_3); - if (fVar3 <= fVar2) goto LAB_7f0b375c; + fVar2 = proc_7F0B32D8(param_1,&fStack16,pfStackX8); } else { - pfStackX8 = param_3; - if (fVar11 < fVar9) goto LAB_7f0b369c; - if (fVar9 < fVar8) { - fVar2 = proc_7F0B32D8(param_1,&fStack16,pfVar1); - } - else { - fVar8 = (fVar3 - *pfVar1) * fStack40 + fStack36 * (fVar5 - pfVar1[1]); - fVar3 = ((fVar3 + fVar4) - *pfVar1) * fStack40 + fStack36 * ((fVar5 + fVar6) - pfVar1[1]); - if (fVar8 == fVar3) { - return 1.00000000; + fStack40 = fStack40 * (1.00000000 / fVar3); + fStack36 = -fVar2 * (1.00000000 / fVar3); + fVar2 = *param_1; + fVar3 = param_1[1]; + fVar8 = fVar2 * fStack40; + fVar5 = param_1[2]; + fVar11 = fVar2 * fStack36; + if ((fVar3 - *param_2) * fVar8 + fVar11 * (fVar5 - param_2[1]) < 0.00000000) { + fVar8 = -fVar8; + fVar11 = -fVar11; + } + fVar6 = param_4[1]; + fVar4 = *param_4; + fVar7 = fVar6 * (*param_2 + fVar8) - (param_2[1] + fVar11) * fVar4; + fVar9 = fVar3 * fVar6 - fVar5 * fVar4; + fVar12 = fVar6 * (*param_3 + fVar8) - (param_3[1] + fVar11) * fVar4; + fVar8 = fVar7; + fVar11 = fVar12; + pfVar1 = param_2; + if (fVar12 < fVar7) { + fStack40 = -fStack40; + fStack36 = -fStack36; + fVar8 = fVar12; + fVar11 = fVar7; + pfVar1 = param_3; + param_3 = param_2; + } + if (fVar12 == fVar7) { + fVar3 = proc_7F0B32D8(param_1,&fStack16,pfVar1); + fVar2 = proc_7F0B32D8(param_1,&fStack16,param_3); + if (fVar3 <= fVar2) goto LAB_7f0b375c; + } + else { + pfStackX8 = param_3; + if (fVar11 < fVar9) goto LAB_7f0b369c; + if (fVar9 < fVar8) { + fVar2 = proc_7F0B32D8(param_1,&fStack16,pfVar1); + } + else { + fVar8 = (fVar3 - *pfVar1) * fStack40 + fStack36 * (fVar5 - pfVar1[1]); + fVar3 = ((fVar3 + fVar4) - *pfVar1) * fStack40 + + fStack36 * ((fVar5 + fVar6) - pfVar1[1]); + if (fVar8 == fVar3) { + return 1.00000000; + } + fVar2 = ((fVar8 - fVar2) * fStack4) / (fVar8 - fVar3); + } } - fVar2 = ((fVar8 - fVar2) * fStack4) / (fVar8 - fVar3); - } } - } - fVar3 = fVar2; + fVar3 = fVar2; LAB_7f0b375c: - fVar2 = 1.00000000; - if (fVar3 <= fStack4) { - if (fVar3 < 0.00000000) { - fVar2 = 0.00000000; + fVar2 = 1.00000000; + if (fVar3 <= fStack4) { + if (fVar3 < 0.00000000) { + fVar2 = 0.00000000; + } + else { + fVar2 = fVar3 * fVar10; + } } - else { - fVar2 = fVar3 * fVar10; - } - } - return fVar2; + return fVar2; } @@ -124790,8 +123929,8 @@ LAB_7f0b375c: void something_with_bg_c_debug(void) { - get_ptr_debug_notice_list_entry(&bg_c_debug_notice_list_entry,"bg_c_debug"); - return; + get_ptr_debug_notice_list_entry(&bg_c_debug_notice_list_entry,"bg_c_debug"); + return; } @@ -124799,48 +123938,48 @@ void something_with_bg_c_debug(void) void proc_7F0B37EC(void) { - byte bVar1; - byte bVar2; - undefined4 *puVar3; - byte *pbVar4; - ulonglong uVar5; - int iVar6; - - puVar3 = (undefined4 *)&dword_80044824; - do { - pbVar4 = (byte *)((int)puVar3 + 1); - if ((longlong)(int)levelentry_index == (ulonglong)*(byte *)puVar3) { - bVar1 = *pbVar4; - bVar2 = *(byte *)((int)puVar3 + 2); - while( true ) { - uVar5 = (ulonglong)bVar1; - if ((ulonglong)bVar2 < uVar5) { - bVar1 = pbVar4[2]; + byte bVar1; + byte bVar2; + undefined4 *puVar3; + byte *pbVar4; + ulonglong uVar5; + int iVar6; + + puVar3 = (undefined4 *)&dword_80044824; + do { + pbVar4 = (byte *)((int)puVar3 + 1); + if ((longlong)(int)levelentry_index == (ulonglong)*(byte *)puVar3) { + bVar1 = *pbVar4; + bVar2 = *(byte *)((int)puVar3 + 2); + while( true ) { + uVar5 = (ulonglong)bVar1; + if (bVar2 < uVar5) { + bVar1 = pbVar4[2]; + } + else { + do { + iVar6 = (int)uVar5; + uVar5 = (longlong)(iVar6 + 1) & 0xff; + *(byte *)&ptr_bgdata_portals[iVar6].controlbytes = + *(byte *)&ptr_bgdata_portals[iVar6].controlbytes | 2; + } while (uVar5 <= pbVar4[1]); + bVar1 = pbVar4[2]; + } + if (bVar1 == 0xff) break; + bVar2 = pbVar4[3]; + pbVar4 = pbVar4 + 2; + } } else { - do { - iVar6 = (int)uVar5; - uVar5 = (longlong)(iVar6 + 1) & 0xff; - *(byte *)&ptr_bgdata_portals[iVar6].controlbytes = - *(byte *)&ptr_bgdata_portals[iVar6].controlbytes | 2; - } while (uVar5 <= (ulonglong)pbVar4[1]); - bVar1 = pbVar4[2]; + bVar1 = *(byte *)((int)puVar3 + 3); + while (bVar1 != 0xff) { + bVar1 = pbVar4[4]; + pbVar4 = pbVar4 + 2; + } } - if (bVar1 == 0xff) break; - bVar2 = pbVar4[3]; - pbVar4 = pbVar4 + 2; - } - } - else { - bVar1 = *(byte *)((int)puVar3 + 3); - while (bVar1 != 0xff) { - bVar1 = pbVar4[4]; - pbVar4 = pbVar4 + 2; - } - } - puVar3 = (undefined4 *)(pbVar4 + 3); - } while (puVar3 < ¤t_room_maybe); - return; + puVar3 = (undefined4 *)(pbVar4 + 3); + } while (puVar3 < ¤t_room_maybe); + return; } @@ -124848,53 +123987,53 @@ void proc_7F0B37EC(void) void proc_7F0B38B4(byte param_1,byte *param_2) { - byte bVar2; - longlong lVar1; - byte *pbVar3; - byte *pbVar4; - - bVar2 = *param_2; - pbVar4 = param_2; - do { - do { - pbVar3 = pbVar4; - if (param_1 == bVar2) { - bVar2 = *param_2; - do { - pbVar4 = param_2; - lVar1 = proc_7F0B5208((uint)bVar2,&pPlayer->screenxminf); - if (lVar1 != 0) { - proc_7F0B39BC((uint)*pbVar4,0,&pPlayer->screenxminf,1); - } - bVar2 = pbVar4[1]; - param_2 = pbVar4 + 1; - } while (bVar2 != 0); - pbVar4 = pbVar4 + 2; - bVar2 = *pbVar4; - do { - lVar1 = proc_7F0B5208((uint)bVar2,&pPlayer->screenxminf); - if (lVar1 != 0) { - proc_7F0B39BC((uint)*pbVar4,0,&pPlayer->screenxminf,1); - } - bVar2 = pbVar4[1]; - pbVar4 = pbVar4 + 1; - } while (bVar2 != 0); - return; - } - bVar2 = pbVar3[1]; - pbVar4 = pbVar3 + 1; - } while (bVar2 != 0); - bVar2 = pbVar3[2]; - param_2 = pbVar3 + 1; - while (bVar2 != 0) { - bVar2 = param_2[2]; - param_2 = param_2 + 1; - } - param_2 = param_2 + 2; + byte bVar2; + longlong lVar1; + byte *pbVar3; + byte *pbVar4; + bVar2 = *param_2; pbVar4 = param_2; - } while (bVar2 != 0); - return; + do { + do { + pbVar3 = pbVar4; + if (param_1 == bVar2) { + bVar2 = *param_2; + do { + pbVar4 = param_2; + lVar1 = proc_7F0B5208((uint)bVar2,&pPlayer->screenxminf); + if (lVar1 != 0) { + proc_7F0B39BC((uint)*pbVar4,0,&pPlayer->screenxminf,1); + } + bVar2 = pbVar4[1]; + param_2 = pbVar4 + 1; + } while (bVar2 != 0); + pbVar4 = pbVar4 + 2; + bVar2 = *pbVar4; + do { + lVar1 = proc_7F0B5208((uint)bVar2,&pPlayer->screenxminf); + if (lVar1 != 0) { + proc_7F0B39BC((uint)*pbVar4,0,&pPlayer->screenxminf,1); + } + bVar2 = pbVar4[1]; + pbVar4 = pbVar4 + 1; + } while (bVar2 != 0); + return; + } + bVar2 = pbVar3[1]; + pbVar4 = pbVar3 + 1; + } while (bVar2 != 0); + bVar2 = pbVar3[2]; + param_2 = pbVar3 + 1; + while (bVar2 != 0) { + bVar2 = param_2[2]; + param_2 = param_2 + 1; + } + param_2 = param_2 + 2; + bVar2 = *param_2; + pbVar4 = param_2; + } while (bVar2 != 0); + return; } @@ -124902,49 +124041,51 @@ void proc_7F0B38B4(byte param_1,byte *param_2) uint proc_7F0B39BC(int param_1,int param_2,float *param_3,uint param_4) { - uint uVar1; - s32 sVar2; - int iVar3; - int *piVar4; - float fVar5; - - (&roominformationblock)[param_1 * 0x50] = 1; - sVar2 = NumberOfRoomsDrawn; - if ((&DAT_80041448)[param_1 * 0x50] == '\0') { - iVar3 = 0; - if (0 < NumberOfRoomsDrawn) { - piVar4 = &DAT_8007ffa0; - do { - iVar3 += 1; - if (param_1 == *piVar4) { - if (piVar4[1] < param_2) { - piVar4[1] = param_2; - } - proc_7F0B5CC0(param_3,(float *)(piVar4 + 2)); - uVar1 = piVar4[6]; - *(float *)(piVar4 + 2) = *param_3; - *(float *)(piVar4 + 3) = param_3[1]; - *(float *)(piVar4 + 4) = param_3[2]; - fVar5 = param_3[3]; - piVar4[6] = uVar1 | param_4; - *(float *)(piVar4 + 5) = fVar5; - return uVar1; + char cVar1; + uint uVar2; + s32 sVar3; + int iVar4; + struct_8007ffa0_entry *psVar5; + f32 fVar6; + + cVar1 = roominformationblock[param_1].room_loaded_mask; + *(undefined *)&roominformationblock[param_1].bitflags = 1; + sVar3 = NumberOfRoomsDrawn; + if (cVar1 == '\0') { + iVar4 = 0; + if (0 < NumberOfRoomsDrawn) { + psVar5 = &struct_8007ffa0_entry_8007ffa0; + do { + iVar4 += 1; + if (param_1 == psVar5->index) { + if (psVar5->field_0x4 < param_2) { + psVar5->field_0x4 = param_2; + } + proc_7F0B5CC0(param_3,(float *)&psVar5->field_0x8); + uVar2 = psVar5->field_0x18; + *(float *)&psVar5->field_0x8 = *param_3; + *(float *)&psVar5->field_0xc = param_3[1]; + *(float *)&psVar5->field_0x10 = param_3[2]; + fVar6 = (f32)param_3[3]; + psVar5->field_0x18 = uVar2 | param_4; + psVar5->field_0x14 = fVar6; + return uVar2; + } + psVar5 = psVar5 + 1; + } while (iVar4 < NumberOfRoomsDrawn); } - piVar4 = piVar4 + 7; - } while (iVar3 < NumberOfRoomsDrawn); + (&struct_8007ffa0_entry_8007ffa0)[NumberOfRoomsDrawn].index = param_1; + (&struct_8007ffa0_entry_8007ffa0)[NumberOfRoomsDrawn].field_0x4 = param_2; + *(float *)&(&struct_8007ffa0_entry_8007ffa0)[NumberOfRoomsDrawn].field_0x8 = *param_3; + *(float *)&(&struct_8007ffa0_entry_8007ffa0)[NumberOfRoomsDrawn].field_0xc = param_3[1]; + *(float *)&(&struct_8007ffa0_entry_8007ffa0)[NumberOfRoomsDrawn].field_0x10 = param_3[2]; + fVar6 = (f32)param_3[3]; + psVar5 = &struct_8007ffa0_entry_8007ffa0 + NumberOfRoomsDrawn; + NumberOfRoomsDrawn = NumberOfRoomsDrawn + 1; + psVar5->field_0x18 = param_4; + (&struct_8007ffa0_entry_8007ffa0)[sVar3].field_0x14 = fVar6; } - (&DAT_8007ffa0)[NumberOfRoomsDrawn * 7] = param_1; - (&DAT_8007ffa4)[NumberOfRoomsDrawn * 7] = param_2; - *(float *)(&DAT_8007ffa8 + NumberOfRoomsDrawn * 7) = *param_3; - *(float *)(&DAT_8007ffac + NumberOfRoomsDrawn * 7) = param_3[1]; - *(float *)(&DAT_8007ffb0 + NumberOfRoomsDrawn * 7) = param_3[2]; - fVar5 = param_3[3]; - iVar3 = NumberOfRoomsDrawn * 7; - NumberOfRoomsDrawn = NumberOfRoomsDrawn + 1; - (&DAT_8007ffb8)[iVar3] = param_4; - *(float *)(&DAT_8007ffb4 + sVar2 * 7) = fVar5; - } - return 0; + return 0; } @@ -124952,8 +124093,8 @@ uint proc_7F0B39BC(int param_1,int param_2,float *param_3,uint param_4) void proc_7F0B3B04(int param_1) { - (&DAT_80041417)[param_1 * 0x50] = 0; - return; + roominformationblock[param_1].bitflags2 = '\0'; + return; } @@ -124961,35 +124102,35 @@ void proc_7F0B3B04(int param_1) int proc_7F0B3B20(void) { - undefined *puVar1; - int iVar2; - - if (DAT_80041417 != '\0') { - return 0; - } - puVar1 = &DAT_800414b4; - iVar2 = 2; - if (DAT_80041467 != '\0') { - return 1; - } - while( true ) { - if (puVar1[3] != '\0') { - return iVar2; + int iVar1; + int iVar2; + + if (roominformationblock[0].bitflags2 != '\0') { + return 0; } - if (puVar1[0x53] != '\0') { - return iVar2 + 1; + iVar1 = -0x7ffbeb4c; + iVar2 = 2; + if (roominformationblock[1].bitflags2 != '\0') { + return 1; } - if (puVar1[0xa3] != '\0') { - return iVar2 + 2; + while( true ) { + if (*(char *)(iVar1 + 3) != '\0') { + return iVar2; + } + if (*(char *)(iVar1 + 0x53) != '\0') { + return iVar2 + 1; + } + if (*(char *)(iVar1 + 0xa3) != '\0') { + return iVar2 + 2; + } + if (*(char *)(iVar1 + 0xf3) != '\0') break; + iVar2 += 4; + iVar1 += 0x140; + if (iVar2 == 0x96) { + return -1; + } } - if (puVar1[0xf3] != '\0') break; - iVar2 += 4; - puVar1 = puVar1 + 0x140; - if (iVar2 == 0x96) { - return -1; - } - } - return iVar2 + 3; + return iVar2 + 3; } @@ -124997,21 +124138,21 @@ int proc_7F0B3B20(void) void proc_7F0B3BC4(void) { - u32 *puVar1; - - NumberOfRoomsDrawn = 0; - DAT_80041417 = 0; - DAT_80041467 = 0; - puVar1 = (u32 *)&DAT_800414b4; - do { - puVar1 = puVar1 + 0x50; - *(undefined *)((int)puVar1 + 3) = 0; - *(undefined *)((int)puVar1 + 0x53) = 0; - *(undefined *)((int)puVar1 + 0xa3) = 0; - *(undefined *)((int)puVar1 + 0xf3) = 0; - puVar1 = puVar1; - } while (puVar1 != &max_num_rooms); - return; + u32 *puVar1; + + NumberOfRoomsDrawn = 0; + roominformationblock[0].bitflags2 = '\0'; + roominformationblock[1].bitflags2 = '\0'; + puVar1 = (u32 *)0x800414b4; + do { + puVar1 = puVar1 + 0x50; + *(undefined *)((int)puVar1 + 3) = 0; + *(undefined *)((int)puVar1 + 0x53) = 0; + *(undefined *)((int)puVar1 + 0xa3) = 0; + *(undefined *)((int)puVar1 + 0xf3) = 0; + puVar1 = puVar1; + } while (puVar1 != &max_num_rooms); + return; } @@ -125019,29 +124160,29 @@ void proc_7F0B3BC4(void) undefined8 proc_7F0B3C0C(int param_1,int *param_2) { - int iVar1; - int *piVar2; - - iVar1 = 0; - if (0 < NumberOfRoomsDrawn) { - piVar2 = &DAT_8007ffa0; - do { - iVar1 += 1; - if (param_1 == *piVar2) { - *param_2 = piVar2[2]; - param_2[1] = piVar2[3]; - param_2[2] = piVar2[4]; - param_2[3] = piVar2[5]; - return 1; - } - piVar2 = piVar2 + 7; - } while (iVar1 < NumberOfRoomsDrawn); - } - *param_2 = 0; - param_2[1] = 0; - param_2[2] = 0; - param_2[3] = 0; - return 0; + int iVar1; + struct_8007ffa0_entry *psVar2; + + iVar1 = 0; + if (0 < NumberOfRoomsDrawn) { + psVar2 = &struct_8007ffa0_entry_8007ffa0; + do { + iVar1 += 1; + if (param_1 == psVar2->index) { + *(f32 *)param_2 = psVar2->field_0x8; + *(f32 *)(param_2 + 1) = psVar2->field_0xc; + *(f32 *)(param_2 + 2) = psVar2->field_0x10; + *(f32 *)(param_2 + 3) = psVar2->field_0x14; + return 1; + } + psVar2 = psVar2 + 1; + } while (iVar1 < NumberOfRoomsDrawn); + } + *param_2 = 0; + param_2[1] = 0; + param_2[2] = 0; + param_2[3] = 0; + return 0; } @@ -125049,156 +124190,154 @@ undefined8 proc_7F0B3C0C(int param_1,int *param_2) longlong proc_7F0B3C8C(longlong param_1) { - s32 sVar1; - void *virtualAddress; - uint *puVar2; - uint *puVar3; - u32 uVar4; - undefined4 *puVar5; - BOOL BVar6; - int iVar7; - longlong lVar8; - undefined4 *puVar9; - int iVar10; - uint uVar11; - uint uVar12; - uint uVar13; - uint uVar14; - float extraout_f12; - float extraout_f12_00; - float extraout_f14; - float extraout_f14_00; - - puVar5 = (undefined4 *)param_1; - uVar14 = 99999999; - uVar12 = 0; - if (0 < NumberOfRoomsDrawn) { - uVar13 = uVar12; - uVar11 = DAT_8007ffa4; - puVar9 = &DAT_8007ffa0; - while( true ) { - uVar12 = uVar11; - if ((int)uVar11 <= (int)uVar13) { - uVar12 = uVar13; - } - if ((int)uVar14 <= (int)uVar11) { - uVar11 = uVar14; - } - uVar14 = uVar11; - if (&DAT_8007ffa0 + NumberOfRoomsDrawn * 7 <= puVar9 + 7) break; - uVar11 = puVar9[8]; - uVar13 = uVar12; - puVar9 = puVar9 + 7; + s32 sVar1; + void *virtualAddress; + int iVar2; + uint *puVar3; + u32 uVar4; + undefined4 *puVar5; + BOOL BVar6; + longlong lVar7; + struct_8007ffa0_entry *psVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + float extraout_f12; + float extraout_f12_00; + float extraout_f14; + float extraout_f14_00; + + puVar5 = (undefined4 *)param_1; + iVar12 = 99999999; + iVar11 = 0; + if (0 < NumberOfRoomsDrawn) { + iVar9 = iVar11; + iVar10 = struct_8007ffa0_entry_8007ffa0.field_0x4; + psVar8 = &struct_8007ffa0_entry_8007ffa0; + while( true ) { + iVar11 = iVar10; + if (iVar10 <= iVar9) { + iVar11 = iVar9; + } + if (iVar12 <= iVar10) { + iVar10 = iVar12; + } + iVar12 = iVar10; + if (&struct_8007ffa0_entry_8007ffa0 + NumberOfRoomsDrawn <= psVar8 + 1) break; + iVar10 = psVar8[1].field_0x4; + iVar9 = iVar11; + psVar8 = psVar8 + 1; + } } - } - if ((int)uVar14 <= (int)uVar12) { - sVar1 = NumberOfRoomsDrawn; - uVar11 = uVar14; - do { - iVar10 = 0; - if (0 < sVar1) { - puVar2 = &DAT_8007ffa0; + if (iVar12 <= iVar11) { + sVar1 = NumberOfRoomsDrawn; + iVar10 = iVar12; do { - if (uVar11 == puVar2[1]) { + iVar9 = 0; + if (0 < sVar1) { + psVar8 = &struct_8007ffa0_entry_8007ffa0; + do { + if (iVar10 == psVar8->field_0x4) { + puVar5 = (undefined4 *)param_1; + *puVar5 = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10D8(); + uVar4 = osVirtualToPhysical(virtualAddress); + puVar5[1] = uVar4; + puVar5 = proc_7F0BB298(puVar5 + 2); + BVar6 = get_debug_do_draw_obj(); + if ((BVar6 != FALSE) && (iVar2 = proc_7F0BD8F0(), iVar2 != 0)) { + lVar7 = proc_7F03A6F4((longlong)(int)puVar5,psVar8->index,0); + puVar5 = (undefined4 *)lVar7; + } + *puVar5 = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10E0(); + uVar4 = osVirtualToPhysical(virtualAddress); + puVar5[1] = uVar4; + puVar3 = proc_7F0B4FF4(puVar5 + 2,extraout_f12,extraout_f14, + (float)psVar8->field_0x8,(float)psVar8->field_0xc); + puVar5 = proc_7F0BB070(puVar3,0); + BVar6 = get_debug_do_draw_bg(); + if ((BVar6 != FALSE) && (iVar2 = proc_7F0BD8F0(), iVar2 != 0)) { + puVar5 = proc_7F0B677C(puVar5,psVar8->index); + } + *puVar5 = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10D8(); + uVar4 = osVirtualToPhysical(virtualAddress); + puVar5[1] = uVar4; + puVar5 = proc_7F0BB298(puVar5 + 2); + param_1 = (longlong)(int)puVar5; + BVar6 = get_debug_do_draw_obj(); + sVar1 = NumberOfRoomsDrawn; + if ((BVar6 != FALSE) && + (iVar2 = proc_7F0BD8F0(), sVar1 = NumberOfRoomsDrawn, iVar2 != 0)) { + param_1 = proc_7F03A6F4(param_1,psVar8->index,2); + sVar1 = NumberOfRoomsDrawn; + } + } + iVar9 += 1; + psVar8 = psVar8 + 1; + } while (iVar9 < sVar1); + } puVar5 = (undefined4 *)param_1; - *puVar5 = 0x1030040; - virtualAddress = (void *)proc_7F078374(); - uVar4 = osVirtualToPhysical(virtualAddress); - puVar5[1] = uVar4; - puVar5 = proc_7F0BB298(puVar5 + 2); - BVar6 = get_debug_do_draw_obj(); - if ((BVar6 != FALSE) && (iVar7 = proc_7F0BD8F0(), iVar7 != 0)) { - lVar8 = proc_7F03A6F4((longlong)(int)puVar5,*puVar2,0); - puVar5 = (undefined4 *)lVar8; - } - *puVar5 = 0x1030040; - virtualAddress = (void *)proc_7F078394(); - uVar4 = osVirtualToPhysical(virtualAddress); - puVar5[1] = uVar4; - puVar3 = proc_7F0B4FF4(puVar5 + 2,extraout_f12,extraout_f14,(float)puVar2[2], - (float)puVar2[3]); - puVar5 = proc_7F0BB070(puVar3,0); - BVar6 = get_debug_do_draw_bg(); - if ((BVar6 != FALSE) && (iVar7 = proc_7F0BD8F0(), iVar7 != 0)) { - puVar5 = proc_7F0B677C(puVar5,*puVar2); - } - *puVar5 = 0x1030040; - virtualAddress = (void *)proc_7F078374(); - uVar4 = osVirtualToPhysical(virtualAddress); - puVar5[1] = uVar4; - puVar5 = proc_7F0BB298(puVar5 + 2); - param_1 = (longlong)(int)puVar5; - BVar6 = get_debug_do_draw_obj(); - sVar1 = NumberOfRoomsDrawn; - if ((BVar6 != FALSE) && - (iVar7 = proc_7F0BD8F0(), sVar1 = NumberOfRoomsDrawn, iVar7 != 0)) { - param_1 = proc_7F03A6F4(param_1,*puVar2,2); - sVar1 = NumberOfRoomsDrawn; - } - } - iVar10 += 1; - puVar2 = puVar2 + 7; - } while (iVar10 < sVar1); - } - puVar5 = (undefined4 *)param_1; - uVar11 += 1; - } while (uVar12 + 1 != uVar11); - } - puVar2 = proc_7F0BB298(puVar5); - puVar3 = proc_7F0B4FB4(puVar2); - puVar2 = puVar3 + 2; - *puVar3 = 0x1030040; - virtualAddress = (void *)proc_7F078394(); - uVar4 = osVirtualToPhysical(virtualAddress); - puVar3[1] = uVar4; - iVar10 = proc_7F0BD8F0(); - if (iVar10 != 0) { - puVar5 = proc_7F0A0AB4(puVar2); - puVar2 = proc_7F0A1D78(puVar5); - } - lVar8 = (longlong)(int)puVar2; - if ((int)uVar14 <= (int)uVar12) { - sVar1 = NumberOfRoomsDrawn; - do { - iVar10 = 0; - if (0 < sVar1) { - puVar2 = &DAT_8007ffa0; + iVar10 += 1; + } while (iVar11 + 1 != iVar10); + } + puVar3 = proc_7F0BB298(puVar5); + puVar3 = proc_7F0B4FB4(puVar3); + lVar7 = (longlong)(int)(puVar3 + 2); + *puVar3 = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10E0(); + uVar4 = osVirtualToPhysical(virtualAddress); + puVar3[1] = uVar4; + iVar10 = proc_7F0BD8F0(); + if (iVar10 != 0) { + puVar5 = proc_7F0A0AB4(puVar3 + 2); + lVar7 = (longlong)(int)puVar5; + proc_7F0A1D78(puVar5); + } + if (iVar12 <= iVar11) { + sVar1 = NumberOfRoomsDrawn; do { - if (uVar12 == puVar2[1]) { - puVar5 = (undefined4 *)lVar8; - *puVar5 = 0x1030040; - virtualAddress = (void *)proc_7F078394(); - uVar4 = osVirtualToPhysical(virtualAddress); - puVar5[1] = uVar4; - puVar3 = proc_7F0B4FF4(puVar5 + 2,extraout_f12_00,extraout_f14_00,(float)puVar2[2], - (float)puVar2[3]); - puVar5 = proc_7F0BB070(puVar3,1); - BVar6 = get_debug_do_draw_bg(); - if ((BVar6 != FALSE) && (iVar7 = proc_7F0BD8F0(), iVar7 != 0)) { - puVar5 = proc_7F0B6898(puVar5,*puVar2); + iVar10 = 0; + if (0 < sVar1) { + psVar8 = &struct_8007ffa0_entry_8007ffa0; + do { + if (iVar11 == psVar8->field_0x4) { + puVar5 = (undefined4 *)lVar7; + *puVar5 = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10E0(); + uVar4 = osVirtualToPhysical(virtualAddress); + puVar5[1] = uVar4; + puVar3 = proc_7F0B4FF4(puVar5 + 2,extraout_f12_00,extraout_f14_00, + (float)psVar8->field_0x8,(float)psVar8->field_0xc); + puVar5 = proc_7F0BB070(puVar3,1); + BVar6 = get_debug_do_draw_bg(); + if ((BVar6 != FALSE) && (iVar9 = proc_7F0BD8F0(), iVar9 != 0)) { + puVar5 = proc_7F0B6898(puVar5,psVar8->index); + } + *puVar5 = 0x1030040; + virtualAddress = (void *)get_BONDdata_field_10D8(); + uVar4 = osVirtualToPhysical(virtualAddress); + puVar5[1] = uVar4; + puVar5 = proc_7F0BB298(puVar5 + 2); + lVar7 = (longlong)(int)puVar5; + BVar6 = get_debug_do_draw_obj(); + sVar1 = NumberOfRoomsDrawn; + if ((BVar6 != FALSE) && + (iVar9 = proc_7F0BD8F0(), sVar1 = NumberOfRoomsDrawn, iVar9 != 0)) { + lVar7 = proc_7F03A6F4(lVar7,psVar8->index,1); + sVar1 = NumberOfRoomsDrawn; + } + } + iVar10 += 1; + psVar8 = psVar8 + 1; + } while (iVar10 < sVar1); } - *puVar5 = 0x1030040; - virtualAddress = (void *)proc_7F078374(); - uVar4 = osVirtualToPhysical(virtualAddress); - puVar5[1] = uVar4; - puVar5 = proc_7F0BB298(puVar5 + 2); - lVar8 = (longlong)(int)puVar5; - BVar6 = get_debug_do_draw_obj(); - sVar1 = NumberOfRoomsDrawn; - if ((BVar6 != FALSE) && - (iVar7 = proc_7F0BD8F0(), sVar1 = NumberOfRoomsDrawn, iVar7 != 0)) { - lVar8 = proc_7F03A6F4(lVar8,*puVar2,1); - sVar1 = NumberOfRoomsDrawn; - } - } - iVar10 += 1; - puVar2 = puVar2 + 7; - } while (iVar10 < sVar1); - } - uVar12 -= 1; - } while (uVar12 != uVar14 - 1); - } - return lVar8; + iVar11 += -1; + } while (iVar11 != iVar12 + -1); + } + return lVar7; } @@ -125206,20 +124345,20 @@ longlong proc_7F0B3C8C(longlong param_1) int proc_7F0B4034(int param_1) { - bg_room_data *pbVar1; - f32 fVar2; - - if (ptr_bgdata_room_fileposition_list[param_1].ypos == 0.00000000) { - fVar2 = (ptr_bgdata_room_fileposition_list + param_1)[1].ypos; - pbVar1 = ptr_bgdata_room_fileposition_list + param_1; - while( true ) { - param_1 += 1; - if (fVar2 != 0.00000000) break; - fVar2 = pbVar1[2].ypos; - pbVar1 = pbVar1 + 1; + bg_room_data *pbVar1; + f32 fVar2; + + if (ptr_bgdata_room_fileposition_list[param_1].ypos == 0.00000000) { + fVar2 = (ptr_bgdata_room_fileposition_list + param_1)[1].ypos; + pbVar1 = ptr_bgdata_room_fileposition_list + param_1; + while( true ) { + param_1 += 1; + if (fVar2 != 0.00000000) break; + fVar2 = pbVar1[2].ypos; + pbVar1 = pbVar1 + 1; + } } - } - return param_1; + return param_1; } @@ -125227,20 +124366,20 @@ int proc_7F0B4034(int param_1) int proc_7F0B4084(int param_1) { - bg_room_data *pbVar1; - f32 fVar2; - - if (ptr_bgdata_room_fileposition_list[param_1].zpos == 0.00000000) { - fVar2 = (ptr_bgdata_room_fileposition_list + param_1)[1].zpos; - pbVar1 = ptr_bgdata_room_fileposition_list + param_1; - while( true ) { - param_1 += 1; - if (fVar2 != 0.00000000) break; - fVar2 = pbVar1[2].zpos; - pbVar1 = pbVar1 + 1; + bg_room_data *pbVar1; + f32 fVar2; + + if (ptr_bgdata_room_fileposition_list[param_1].zpos == 0.00000000) { + fVar2 = (ptr_bgdata_room_fileposition_list + param_1)[1].zpos; + pbVar1 = ptr_bgdata_room_fileposition_list + param_1; + while( true ) { + param_1 += 1; + if (fVar2 != 0.00000000) break; + fVar2 = pbVar1[2].zpos; + pbVar1 = pbVar1 + 1; + } } - } - return param_1; + return param_1; } @@ -125248,273 +124387,286 @@ int proc_7F0B4084(int param_1) int proc_7F0B40D4(int param_1) { - bg_room_data *pbVar1; - f32 fVar2; - - if (ptr_bgdata_room_fileposition_list[param_1].xpos == 0.00000000) { - fVar2 = (ptr_bgdata_room_fileposition_list + param_1)[1].xpos; - pbVar1 = ptr_bgdata_room_fileposition_list + param_1; - while( true ) { - param_1 += 1; - if (fVar2 != 0.00000000) break; - fVar2 = pbVar1[2].xpos; - pbVar1 = pbVar1 + 1; + bg_room_data *pbVar1; + f32 fVar2; + + if (ptr_bgdata_room_fileposition_list[param_1].xpos == 0.00000000) { + fVar2 = (ptr_bgdata_room_fileposition_list + param_1)[1].xpos; + pbVar1 = ptr_bgdata_room_fileposition_list + param_1; + while( true ) { + param_1 += 1; + if (fVar2 != 0.00000000) break; + fVar2 = pbVar1[2].xpos; + pbVar1 = pbVar1 + 1; + } } - } - return param_1; + return param_1; } -void proc_7F0B4124(int param_1) +void load_bg_file(STAGENUM stagenum) { - char cVar1; - byte bVar2; - bg_room_data *pbVar3; - LEVEL_INDEX LVar4; - levelentry *plVar6; - bg_data_header *pbVar7; - int iVar8; - int iVar9; - ulonglong uVar5; - bg_portal_entry *pbVar10; - bg_portal_data_entry *pbVar11; - char *pcVar12; - undefined1 *puVar13; - undefined4 extraout_a0_lo; - bg_room_data *pbVar14; - u32 uVar15; - int *piVar16; - u32 *puVar17; - int iVar18; - LEVEL_INDEX LVar19; - int iVar20; - bg_data_header abStack72 [4]; - - levelentry_index = LEVEL_INDEX_SEVBUNKER; - puVar17 = (u32 *)&roominformationblock; - do { - puVar17 = puVar17 + 0x14; - puVar17[0xb] = 0; - puVar17 = puVar17; - } while (puVar17 < &max_num_rooms); - plVar6 = levelinfostruct; - LVar19 = LEVEL_INDEX_SEVBUNKER; - do { - LVar4 = LVar19; - if (param_1 != plVar6->levelID) { - LVar4 = levelentry_index; - } - levelentry_index = LVar4; - LVar19 += LEVEL_INDEX_SILO; - plVar6 = plVar6 + 1; - } while ((int)LVar19 < 0x26); - init_lightfixture_tables(); - ptr_bg_data = abStack72; - load_bg_bytes_at_offset_to_membank - ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,(int)ptr_bg_data,0,0x40); - DAT_8007ff84 = ptr_bg_data; - iVar18 = (int)&ptr_bg_data->RESERVED + (int)&ptr_bg_data->pRoomDataTable->xpos; - ptr_bgdata_room_fileposition_list = (bg_room_data *)(iVar18 + -0xf000000); - iVar18 = ((*(uint *)(iVar18 + -0xeffffe8) & 0xffffff) - 1 | 0xf) + 1; - pbVar7 = (bg_data_header *)allocate_bytes_in_bank(iVar18,4); - ptr_bg_data = pbVar7; - load_bg_bytes_at_offset_to_membank - ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,(int)pbVar7,0,iVar18); - _load_resource_named_to_membank((byte *)levelinfostruct[levelentry_index].bg_stan_filename,2,0,4); - DAT_8007bf94 = pbVar7; - load_stan((int)pbVar7,0,(int)pbVar7); - proc_7F0AF5B8((int)DAT_8007bf94); - proc_7F0B4810((float)levelinfostruct[levelentry_index].levelscale); - proc_7F0B2950((float)levelinfostruct[levelentry_index].levelscale); - proc_7F0915BC((float)levelinfostruct[levelentry_index].levelscale); - removed_tooklevelscale(levelinfostruct[levelentry_index].levelscale); - room_data_float3 = levelinfostruct[levelentry_index].visibility; - proc_7F08976C(extraout_a0_lo); - proc_7F058C4C(room_data_float3); - DAT_8007bf98 = ptr_bg_data->RESERVED; - DAT_8007ff88 = 1; - if (DAT_8007bf98 == 0) { - DAT_8007ff88 = 2; - iVar18 = (int)&ptr_bg_data->RESERVED + (int)&ptr_bg_data->pRoomDataTable->xpos; - ptr_bgdata_room_fileposition_list = (bg_room_data *)(iVar18 + -0xf000000); - max_num_rooms = 0; - if (*(int *)(iVar18 + -0xeffffe4) != 0) { - max_num_rooms = 0; - iVar18 = iVar18 + -0xeffffe8; - do { - max_num_rooms += 1; - piVar16 = (int *)(iVar18 + 0x1c); - iVar18 = iVar18 + 0x18; - } while (*piVar16 != 0); - } - pbVar11 = (bg_portal_data_entry *) - ((int)ptr_bg_data->pPortalDataTable + (int)ptr_bg_data + -0xf000000); - if (ptr_bg_data->pGlobalVisCmds == NULL) { - DAT_8007ff90 = NULL; - } - else { - DAT_8007ff90 = (char *)((int)ptr_bg_data->pGlobalVisCmds + (int)ptr_bg_data + -0xf000000); - if (ptr_bg_data[1].RESERVED == 0) { - DAT_8007ff94 = 0; - } - else { - DAT_8007ff94 = (int)&ptr_bg_data[-0xf00000].RESERVED + ptr_bg_data[1].RESERVED; - } - } - pbVar10 = pbVar11->offset_portal; - ptr_bgdata_portals = pbVar11; - iVar18 = 0; + char cVar1; + byte bVar2; + bg_room_data *pbVar3; + LEVEL_INDEX LVar4; + levelentry *plVar6; + int iVar7; + int iVar8; + ulonglong uVar5; + bg_portal_entry *pbVar9; + bg_portal_data_entry *pbVar10; + char *pcVar11; + undefined1 *puVar12; + undefined4 extraout_a0_lo; + bg_room_data *pbVar13; + int *piVar14; + room_index *prVar15; + u32 bytes; + LEVEL_INDEX LVar16; + int iVar17; + int iVar18; + int iVar19; + bg_data_header abStack72 [4]; + + levelentry_index = LEVEL_INDEX_SEVBUNKER; + prVar15 = roominformationblock; + do { + prVar15 = prVar15 + 1; + prVar15->ptr_unique_collision_points = NULL; + prVar15 = prVar15; + } while (prVar15 < &max_num_rooms); + plVar6 = levelinfostruct; + LVar16 = LEVEL_INDEX_SEVBUNKER; + do { + LVar4 = LVar16; + if (stagenum != plVar6->levelID) { + LVar4 = levelentry_index; + } + levelentry_index = LVar4; + LVar16 += LEVEL_INDEX_SILO; + plVar6 = plVar6 + 1; + } while ((int)LVar16 < 0x26); + init_lightfixture_tables(); + ptr_bg_data = abStack72; + load_bg_bytes_at_offset_to_membank + ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,(char *)ptr_bg_data,0,0x40) + ; DAT_8007ff84 = ptr_bg_data; - while (pbVar10 != NULL) { - pbVar11->offset_portal = - (bg_portal_entry *)((int)&ptr_bg_data[-0xf00000].RESERVED + (int)pbVar10); - pbVar11 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals[1].offset_portal + iVar18); - pbVar10 = pbVar11->offset_portal; - iVar18 = iVar18 + 8; - } - if (DAT_8007ff90 != NULL) { - cVar1 = *DAT_8007ff90; - iVar18 = 0; - pcVar12 = DAT_8007ff90; - while (cVar1 != '\0') { - if (cVar1 == 'd') { - iVar20 = proc_7F0B5E88((int)&ptr_bg_data[-0xf00000].RESERVED + *(int *)(pcVar12 + 4)); - *(int *)(DAT_8007ff90 + iVar18 + 4) = iVar20; - pcVar12 = DAT_8007ff90 + iVar18; - cVar1 = pcVar12[8]; + iVar17 = (int)&ptr_bg_data->RESERVED + (int)&ptr_bg_data->pRoomDataTable->xpos; + ptr_bgdata_room_fileposition_list = (bg_room_data *)(iVar17 + -0xf000000); + bytes = ((*(uint *)(iVar17 + -0xeffffe8) & 0xffffff) - 1 | 0xf) + 1; + ptr_bg_data = (bg_data_header *)mempAllocBytesInBank(bytes,'\x04'); + load_bg_bytes_at_offset_to_membank + ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,(char *)ptr_bg_data,0,bytes + ); + DAT_8007bf94 = _load_resource_named_to_membank + ((byte *)levelinfostruct[levelentry_index].bg_stan_filename,2,0,4); + load_stan((int)DAT_8007bf94,0,(int)DAT_8007bf94); + proc_7F0AF5B8((int)DAT_8007bf94); + proc_7F0B4810((float)levelinfostruct[levelentry_index].levelscale); + proc_7F0B2950((float)levelinfostruct[levelentry_index].levelscale); + proc_7F0915BC((float)levelinfostruct[levelentry_index].levelscale); + removed_tooklevelscale(levelinfostruct[levelentry_index].levelscale); + room_data_float3 = levelinfostruct[levelentry_index].visibility; + proc_7F08976C(extraout_a0_lo); + proc_7F058C4C(room_data_float3); + DAT_8007bf98 = ptr_bg_data->RESERVED; + DAT_8007ff88 = 1; + if (DAT_8007bf98 == 0) { + DAT_8007ff88 = 2; + iVar17 = (int)&ptr_bg_data->RESERVED + (int)&ptr_bg_data->pRoomDataTable->xpos; + ptr_bgdata_room_fileposition_list = (bg_room_data *)(iVar17 + -0xf000000); + max_num_rooms = 0; + if (*(int *)(iVar17 + -0xeffffe4) != 0) { + max_num_rooms = 0; + iVar17 = iVar17 + -0xeffffe8; + do { + max_num_rooms += 1; + piVar14 = (int *)(iVar17 + 0x1c); + iVar17 = iVar17 + 0x18; + } while (*piVar14 != 0); + } + pbVar10 = (bg_portal_data_entry *) + ((int)ptr_bg_data->pPortalDataTable + (int)ptr_bg_data + -0xf000000); + if (ptr_bg_data->pGlobalVisCmds == NULL) { + DAT_8007ff90 = NULL; } else { - cVar1 = pcVar12[8]; + DAT_8007ff90 = (char *)((int)ptr_bg_data->pGlobalVisCmds + (int)ptr_bg_data + -0xf000000 + ); + if (ptr_bg_data[1].RESERVED == 0) { + DAT_8007ff94 = 0; + } + else { + DAT_8007ff94 = (int)&ptr_bg_data[-0xf00000].RESERVED + ptr_bg_data[1].RESERVED; + } } - iVar18 += 8; - pcVar12 = pcVar12 + 8; - } - } - iVar18 = 1; - if (1 < (int)max_num_rooms) { - iVar20 = 0x18; - puVar13 = &DAT_80041464; - pbVar3 = ptr_bgdata_room_fileposition_list; - do { - pbVar14 = pbVar3 + 1; - puVar13[2] = 0; - puVar13[0x35] = 0; - if (pbVar3[1].ypos == 0.00000000) { - *(undefined4 *)(puVar13 + 0x14) = 0; + pbVar9 = pbVar10->offset_portal; + ptr_bgdata_portals = pbVar10; + iVar17 = 0; + DAT_8007ff84 = ptr_bg_data; + while (pbVar9 != NULL) { + pbVar10->offset_portal = + (bg_portal_entry *)((int)&ptr_bg_data[-0xf00000].RESERVED + (int)pbVar9); + pbVar10 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals[1].offset_portal + iVar17); + pbVar9 = pbVar10->offset_portal; + iVar17 = iVar17 + 8; + } + if (DAT_8007ff90 != NULL) { + cVar1 = *DAT_8007ff90; + iVar17 = 0; + pcVar11 = DAT_8007ff90; + while (cVar1 != '\0') { + if (cVar1 == 'd') { + iVar18 = proc_7F0B5E88((int)&ptr_bg_data[-0xf00000].RESERVED + + *(int *)(pcVar11 + 4)); + *(int *)(DAT_8007ff90 + iVar17 + 4) = iVar18; + pcVar11 = DAT_8007ff90 + iVar17; + cVar1 = pcVar11[8]; + } + else { + cVar1 = pcVar11[8]; + } + iVar17 += 8; + pcVar11 = pcVar11 + 8; + } + } + iVar17 = 1; + if (1 < (int)max_num_rooms) { + iVar19 = 0x18; + iVar18 = -0x7ffbeb9c; + pbVar3 = ptr_bgdata_room_fileposition_list; + do { + pbVar13 = pbVar3 + 1; + *(undefined *)(iVar18 + 2) = 0; + *(undefined *)(iVar18 + 0x35) = 0; + if (pbVar3[1].ypos == 0.00000000) { + *(undefined4 *)(iVar18 + 0x14) = 0; + } + else { + iVar8 = proc_7F0B4034(iVar17 + 1); + iVar7 = proc_7F0B4084(iVar17); + if (iVar7 < iVar8) { + pbVar13 = (bg_room_data *) + ((int)&ptr_bgdata_room_fileposition_list->xpos + iVar19); + *(int *)(iVar18 + 0x14) = + (int)ptr_bgdata_room_fileposition_list[iVar7].zpos - (int)pbVar13->ypos + ; + } + else { + pbVar13 = (bg_room_data *) + ((int)&ptr_bgdata_room_fileposition_list->xpos + iVar19); + *(int *)(iVar18 + 0x14) = + (int)ptr_bgdata_room_fileposition_list[iVar8].ypos - (int)pbVar13->ypos + ; + } + } + iVar17 += 1; + if (pbVar13->zpos == 0.00000000) { + *(undefined4 *)(iVar18 + 0x18) = 0; + } + else { + iVar8 = proc_7F0B4034(iVar17); + iVar7 = proc_7F0B4084(iVar17); + if (iVar7 < iVar8) { + pbVar13 = (bg_room_data *) + ((int)&ptr_bgdata_room_fileposition_list->xpos + iVar19); + *(int *)(iVar18 + 0x18) = + (int)ptr_bgdata_room_fileposition_list[iVar7].zpos - (int)pbVar13->zpos + ; + } + else { + pbVar13 = (bg_room_data *) + ((int)&ptr_bgdata_room_fileposition_list->xpos + iVar19); + *(int *)(iVar18 + 0x18) = + (int)ptr_bgdata_room_fileposition_list[iVar8].ypos - (int)pbVar13->zpos + ; + } + } + if (pbVar13->xpos == 0.00000000) { + *(undefined4 *)(iVar18 + 0x10) = 0; + bytes = max_num_rooms; + } + else { + iVar8 = proc_7F0B40D4(iVar17); + bytes = max_num_rooms; + pbVar13 = (bg_room_data *) + ((int)&ptr_bgdata_room_fileposition_list->xpos + iVar19); + *(int *)(iVar18 + 0x10) = + (int)ptr_bgdata_room_fileposition_list[iVar8].xpos - (int)pbVar13->xpos; + } + iVar19 += 0x18; + *(undefined4 *)(iVar18 + 0x28) = 0xffffffff; + iVar18 = iVar18 + 0x50; + pbVar3 = pbVar13; + } while (iVar17 < (int)bytes); + } + iVar17 = 1; + proc_7F0BC530(); + if (1 < (int)max_num_rooms) { + do { + proc_7F0B9338(iVar17); + iVar17 += 1; + } while (iVar17 < (int)max_num_rooms); + } + puVar12 = &dword_800443C4; + pbVar9 = ptr_bgdata_portals->offset_portal; + iVar18 = 0; + iVar17 = 0; + pbVar10 = ptr_bgdata_portals; + if (pbVar9 != NULL) { + do { + uVar5 = proc_7F0B993C(iVar18); + pbVar10 = ptr_bgdata_portals; + piVar14 = (int *)((int)&ptr_bgdata_portals[1].offset_portal + iVar17); + *puVar12 = (char)uVar5; + iVar18 += 1; + puVar12 = puVar12 + 1; + iVar17 = iVar17 + 8; + } while (*piVar14 != 0); + pbVar9 = pbVar10->offset_portal; + } + iVar18 = 0; + iVar17 = 0; + while (pbVar9 != NULL) { + proc_7F0B9B94(iVar18); + iVar18 += 1; + pbVar9 = *(bg_portal_entry **)((int)&ptr_bgdata_portals[1].offset_portal + iVar17); + iVar17 = iVar17 + 8; + pbVar10 = ptr_bgdata_portals; + } + uVar5 = 0; + if ((int)max_num_rooms < 1) { + pbVar9 = pbVar10->offset_portal; } else { - iVar9 = proc_7F0B4034(iVar18 + 1); - iVar8 = proc_7F0B4084(iVar18); - if (iVar8 < iVar9) { - pbVar14 = (bg_room_data *)((int)&ptr_bgdata_room_fileposition_list->xpos + iVar20); - *(int *)(puVar13 + 0x14) = - (int)ptr_bgdata_room_fileposition_list[iVar8].zpos - (int)pbVar14->ypos; - } - else { - pbVar14 = (bg_room_data *)((int)&ptr_bgdata_room_fileposition_list->xpos + iVar20); - *(int *)(puVar13 + 0x14) = - (int)ptr_bgdata_room_fileposition_list[iVar9].ypos - (int)pbVar14->ypos; - } + do { + proc_7F0B95D8(uVar5); + uVar5 = SEXT48((int)uVar5 + 1); + } while ((longlong)uVar5 < (longlong)(int)max_num_rooms); + pbVar9 = ptr_bgdata_portals->offset_portal; + pbVar10 = ptr_bgdata_portals; } - iVar18 += 1; - if (pbVar14->zpos == 0.00000000) { - *(undefined4 *)(puVar13 + 0x18) = 0; + if (pbVar9 != NULL) { + bVar2 = *(byte *)&pbVar10->controlbytes; + iVar17 = 0; + while( true ) { + *(byte *)&pbVar10->controlbytes = bVar2 & 0xfe; + pbVar10 = (bg_portal_data_entry *) + ((int)&ptr_bgdata_portals[1].offset_portal + iVar17); + if (pbVar10->offset_portal == NULL) break; + bVar2 = *(byte *)&pbVar10->controlbytes; + iVar17 = iVar17 + 8; + } } - else { - iVar9 = proc_7F0B4034(iVar18); - iVar8 = proc_7F0B4084(iVar18); - if (iVar8 < iVar9) { - pbVar14 = (bg_room_data *)((int)&ptr_bgdata_room_fileposition_list->xpos + iVar20); - *(int *)(puVar13 + 0x18) = - (int)ptr_bgdata_room_fileposition_list[iVar8].zpos - (int)pbVar14->zpos; - } - else { - pbVar14 = (bg_room_data *)((int)&ptr_bgdata_room_fileposition_list->xpos + iVar20); - *(int *)(puVar13 + 0x18) = - (int)ptr_bgdata_room_fileposition_list[iVar9].ypos - (int)pbVar14->zpos; - } - } - if (pbVar14->xpos == 0.00000000) { - *(undefined4 *)(puVar13 + 0x10) = 0; - uVar15 = max_num_rooms; - } - else { - iVar9 = proc_7F0B40D4(iVar18); - uVar15 = max_num_rooms; - pbVar14 = (bg_room_data *)((int)&ptr_bgdata_room_fileposition_list->xpos + iVar20); - *(int *)(puVar13 + 0x10) = - (int)ptr_bgdata_room_fileposition_list[iVar9].xpos - (int)pbVar14->xpos; - } - iVar20 += 0x18; - *(undefined4 *)(puVar13 + 0x28) = 0xffffffff; - puVar13 = puVar13 + 0x50; - pbVar3 = pbVar14; - } while (iVar18 < (int)uVar15); + proc_7F0B37EC(); } - iVar18 = 1; - proc_7F0BC530(); - if (1 < (int)max_num_rooms) { - do { - proc_7F0B9338(iVar18); - iVar18 += 1; - } while (iVar18 < (int)max_num_rooms); - } - puVar13 = &dword_800443C4; - pbVar10 = ptr_bgdata_portals->offset_portal; - iVar20 = 0; - iVar18 = 0; - pbVar11 = ptr_bgdata_portals; - if (pbVar10 != NULL) { - do { - uVar5 = proc_7F0B993C(iVar20); - pbVar11 = ptr_bgdata_portals; - piVar16 = (int *)((int)&ptr_bgdata_portals[1].offset_portal + iVar18); - *puVar13 = (char)uVar5; - iVar20 += 1; - puVar13 = puVar13 + 1; - iVar18 = iVar18 + 8; - } while (*piVar16 != 0); - pbVar10 = pbVar11->offset_portal; - } - iVar20 = 0; - iVar18 = 0; - while (pbVar10 != NULL) { - proc_7F0B9B94(iVar20); - iVar20 += 1; - pbVar10 = *(bg_portal_entry **)((int)&ptr_bgdata_portals[1].offset_portal + iVar18); - iVar18 = iVar18 + 8; - pbVar11 = ptr_bgdata_portals; - } - uVar5 = 0; - if ((int)max_num_rooms < 1) { - pbVar10 = pbVar11->offset_portal; - } - else { - do { - proc_7F0B95D8(uVar5); - uVar5 = SEXT48((int)uVar5 + 1); - } while ((longlong)uVar5 < (longlong)(int)max_num_rooms); - pbVar10 = ptr_bgdata_portals->offset_portal; - pbVar11 = ptr_bgdata_portals; - } - if (pbVar10 != NULL) { - bVar2 = *(byte *)&pbVar11->controlbytes; - iVar18 = 0; - while( true ) { - *(byte *)&pbVar11->controlbytes = bVar2 & 0xfe; - pbVar11 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals[1].offset_portal + iVar18); - if (pbVar11->offset_portal == NULL) break; - bVar2 = *(byte *)&pbVar11->controlbytes; - iVar18 = iVar18 + 8; - } - } - proc_7F0B37EC(); - } - proc_7F0BAA5C(); - dword_800442F8 = 200; - return; + proc_7F0BAA5C(); + dword_800442F8 = 200; + return; } @@ -125522,9 +124674,9 @@ void proc_7F0B4124(int param_1) void proc_7F0B47E0(void) { - unload_rooms(); - proc_7F058C4C(1.00000000); - return; + unload_rooms(); + proc_7F058C4C(1.00000000); + return; } @@ -125532,9 +124684,9 @@ void proc_7F0B47E0(void) void proc_7F0B4810(float param_1) { - room_data_float1 = param_1; - room_data_float2 = 1.00000000 / param_1; - return; + room_data_float1 = param_1; + room_data_float2 = 1.00000000 / param_1; + return; } @@ -125542,7 +124694,7 @@ void proc_7F0B4810(float param_1) f32 proc_7F0B4830(void) { - return (f32)room_data_float2; + return (f32)room_data_float2; } @@ -125550,7 +124702,7 @@ f32 proc_7F0B4830(void) f32 proc_7F0B483C(void) { - return (f32)room_data_float1; + return (f32)room_data_float1; } @@ -125558,8 +124710,8 @@ f32 proc_7F0B483C(void) float proc_7F0B4848(void) { - return levelinfostruct[levelentry_index].unknownfloat / - (float)levelinfostruct[levelentry_index].levelscale; + return levelinfostruct[levelentry_index].unknownfloat / + (float)levelinfostruct[levelentry_index].levelscale; } @@ -125567,7 +124719,7 @@ float proc_7F0B4848(void) f32 proc_7F0B4878(void) { - return (f32)room_data_float3; + return (f32)room_data_float3; } @@ -125575,88 +124727,89 @@ f32 proc_7F0B4878(void) void proc_7F0B4884(void) { - u32 uVar3; - int iVar4; - undefined4 uVar5; - ulonglong uVar1; - xyzpoint *pxVar6; - float *pfVar7; - longlong lVar2; - bg_portal_data_entry *pbVar8; - bg_portal_data_entry *pbVar9; - int iVar10; - int iVar11; - char *pcVar12; - int iVar13; - bg_portal_entry *pbVar14; - - iVar13 = -1; - num_visible_rooms_in_cur_global_vis_packet = 0; - uVar3 = get_cur_playernum(); - iVar4 = proc_7F09B4D8(uVar3); - if (iVar4 == 0) { - proc_7F0B66E8(); - } - uVar5 = get_camera_mode(); - dword_800442F8 = 3; - if (true) { - switch(uVar5) { - default: - dword_800442F8 = 200; + u32 uVar3; + int iVar4; + undefined4 uVar5; + ulonglong uVar1; + xyzpoint *pxVar6; + float *pfVar7; + longlong lVar2; + bg_portal_data_entry *pbVar8; + bg_portal_data_entry *pbVar9; + int iVar10; + int iVar11; + char *pcVar12; + int iVar13; + bg_portal_entry *pbVar14; + + iVar13 = -1; + num_visible_rooms_in_cur_global_vis_packet = 0; + uVar3 = get_cur_playernum(); + iVar4 = proc_7F09B4D8(uVar3); + if (iVar4 == 0) { + proc_7F0B66E8(); } - } - uVar1 = get_cur_players_room(); - current_room_maybe = (undefined4)uVar1; - pxVar6 = get_BONDdata_position(); - pfVar7 = (float *)get_BONDdata_position3(); - iVar4 = 0; - pbVar14 = ptr_bgdata_portals->offset_portal; - pbVar8 = ptr_bgdata_portals; - do { - pcVar12 = &dword_800443C4; - iVar10 = 0; - pbVar9 = pbVar8; - if (pbVar14 != NULL) { - iVar11 = 0; - pbVar9 = pbVar8; - do { - if (*pcVar12 == '\0') { - if (iVar10 == iVar13) { - pbVar14 = pbVar8[1].offset_portal; - } - else { - if (((uVar1 == (ulonglong)pbVar8->connectedRoom1) || - (uVar1 == (ulonglong)pbVar8->connectedRoom2)) && - (lVar2 = proc_7F0B9F14(iVar10,(float *)pxVar6,pfVar7), lVar2 != 0)) { - iVar11 = (int)&ptr_bgdata_portals->offset_portal + iVar11; - uVar1 = (ulonglong)*(byte *)(iVar11 + 5) ^ uVar1 ^ (ulonglong)*(byte *)(iVar11 + 4); - iVar13 = iVar10; - pbVar9 = ptr_bgdata_portals; - break; - } - pbVar8 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals->offset_portal + iVar11); - pbVar14 = pbVar8[1].offset_portal; - pbVar9 = ptr_bgdata_portals; - } + uVar5 = get_camera_mode(); + dword_800442F8 = 3; + if (true) { + switch(uVar5) { + default: + dword_800442F8 = 200; } - else { - pbVar14 = pbVar8[1].offset_portal; + } + uVar1 = get_cur_players_room(); + current_room_maybe = (undefined4)uVar1; + pxVar6 = get_BONDdata_position(); + pfVar7 = (float *)get_BONDdata_position3(); + iVar4 = 0; + pbVar14 = ptr_bgdata_portals->offset_portal; + pbVar8 = ptr_bgdata_portals; + do { + pcVar12 = &dword_800443C4; + iVar10 = 0; + pbVar9 = pbVar8; + if (pbVar14 != NULL) { + iVar11 = 0; + do { + if (*pcVar12 == '\0') { + if (iVar10 == iVar13) { + pbVar14 = pbVar8[1].offset_portal; + } + else { + if (((uVar1 == (ulonglong)pbVar8->connectedRoom1) || + (uVar1 == (ulonglong)pbVar8->connectedRoom2)) && + (lVar2 = proc_7F0B9F14(iVar10,(float *)pxVar6,pfVar7), lVar2 != 0)) { + iVar11 = (int)&ptr_bgdata_portals->offset_portal + iVar11; + uVar1 = (ulonglong)*(byte *)(iVar11 + 5) ^ uVar1 ^ *(byte *)(iVar11 + 4) + ; + iVar13 = iVar10; + pbVar9 = ptr_bgdata_portals; + break; + } + pbVar8 = (bg_portal_data_entry *) + ((int)&ptr_bgdata_portals->offset_portal + iVar11); + pbVar14 = pbVar8[1].offset_portal; + pbVar9 = ptr_bgdata_portals; + } + } + else { + pbVar14 = pbVar8[1].offset_portal; + } + iVar10 += 1; + pcVar12 = pcVar12 + 1; + iVar11 += 8; + pbVar8 = pbVar8 + 1; + } while (pbVar14 != NULL); } - iVar10 += 1; - pcVar12 = pcVar12 + 1; - iVar11 += 8; - pbVar8 = pbVar8 + 1; - } while (pbVar14 != NULL); - } - pbVar8 = pbVar9; - iVar4 += 1; - if ((pbVar8[iVar10].offset_portal == NULL) || (iVar4 == 0xb)) { - current_room_maybe = (undefined4)uVar1; - proc_7F0B8A6C(); - return; - } - pbVar14 = pbVar8->offset_portal; - } while( true ); + pbVar8 = pbVar9; + iVar4 += 1; + if ((pbVar8[iVar10].offset_portal == NULL) || (iVar4 == 0xb)) { + current_room_maybe = (undefined4)uVar1; + proc_7F0B8A6C(); + return; + } + pbVar14 = pbVar8->offset_portal; + } while( true ); } @@ -125664,27 +124817,27 @@ void proc_7F0B4884(void) void proc_7F0B4A50(char *param_1,char param_2) { - char cVar1; - int iVar2; - char *pcVar3; - - iVar2 = 0; - if (*param_1 != -1) { - cVar1 = *param_1; - pcVar3 = param_1; - do { - iVar2 += 1; - if (param_2 == cVar1) { - return; - } - pcVar3 = pcVar3 + 1; - } while ((iVar2 < 0x10) && (cVar1 = *pcVar3, cVar1 != -1)); - } - if (iVar2 < 0xf) { - param_1[iVar2] = param_2; - (param_1 + iVar2)[1] = -1; - } - return; + char cVar1; + int iVar2; + char *pcVar3; + + iVar2 = 0; + if (*param_1 != -1) { + cVar1 = *param_1; + pcVar3 = param_1; + do { + iVar2 += 1; + if (param_2 == cVar1) { + return; + } + pcVar3 = pcVar3 + 1; + } while ((iVar2 < 0x10) && (cVar1 = *pcVar3, cVar1 != -1)); + } + if (iVar2 < 0xf) { + param_1[iVar2] = param_2; + (param_1 + iVar2)[1] = -1; + } + return; } @@ -125693,171 +124846,182 @@ void proc_7F0B4AB4(float *param_1,float *param_2,byte *param_3,int param_4,uint int *param_6,int param_7) { - undefined8 uVar1; - char cVar2; - byte *pbVar3; - bg_portal_data_entry *pbVar4; - byte *pbVar5; - byte *pbVar6; - bg_portal_data_entry *pbVar7; - byte bVar8; - char *pcVar9; - int iVar10; - int *piVar11; - undefined auStackX0 [12]; - int iStackX12; - char acStack260 [200]; - int iStack60; - int iStack52; - byte abStack48 [8]; - byte abStack40 [8]; - byte bStack32; - byte bStack31; - byte abStack16 [8]; - byte abStack8 [8]; - - iStackX12 = param_4; - if (ptr_bgdata_portals->offset_portal != NULL) { - pcVar9 = acStack260; - iStack52 = 0; - iVar10 = 0; + byte bVar1; + undefined8 uVar2; + char cVar4; + byte *pbVar3; + byte *pbVar5; + bg_portal_data_entry *pbVar6; + byte *pbVar7; + char *pcVar8; + bg_portal_data_entry *pbVar9; + u8 uVar10; + u8 *puVar11; + char *pcVar12; + int iVar13; + int *piVar14; + undefined auStackX0 [12]; + int iStackX12; + char acStack260 [200]; + int iStack60; + int iStack52; + byte abStack48 [8]; + byte abStack40 [8]; + char acStack32 [32]; + iStackX12 = param_4; - do { - uVar1 = proc_7F0B9F14(iStack52,param_1,param_2); - *pcVar9 = (char)uVar1; - iStack52 += 1; - piVar11 = (int *)((int)&ptr_bgdata_portals[1].offset_portal + iVar10); - pcVar9 = pcVar9 + 1; - iVar10 = iVar10 + 8; - } while (*piVar11 != 0); - } - pbVar7 = ptr_bgdata_portals; - pbVar5 = abStack16; - pbVar6 = param_3; - do { - bVar8 = *pbVar6; - pbVar3 = pbVar5 + 1; - pbVar6 = pbVar6 + 1; - *pbVar5 = bVar8; - pbVar5 = pbVar3; - } while (pbVar3 < abStack8); - pbVar5 = abStack48; - do { - bVar8 = *param_3; - pbVar6 = pbVar5 + 1; - param_3 = param_3 + 1; - *pbVar5 = bVar8; - pbVar5 = pbVar6; - } while (pbVar6 < abStack40); - if (abStack16[0] != 0xff) { - pbVar5 = abStack16; - while ((abStack16[1] != 0xff && (pbVar5 + 1 != (byte *)register0x000000ec))) { - abStack16[1] = pbVar5[2]; - pbVar5 = pbVar5 + 1; + if (ptr_bgdata_portals->offset_portal != NULL) { + pcVar12 = acStack260; + iStack52 = 0; + iVar13 = 0; + do { + uVar2 = proc_7F0B9F14(iStack52,param_1,param_2); + *pcVar12 = (char)uVar2; + iStack52 = iStack52 + 1; + piVar14 = (int *)((int)&ptr_bgdata_portals[1].offset_portal + iVar13); + pcVar12 = pcVar12 + 1; + iVar13 = iVar13 + 8; + } while (*piVar14 != 0); } - } - do { + pbVar3 = (byte *)(acStack32 + 0x10); + pbVar7 = param_3; + do { + bVar1 = *pbVar7; + pbVar5 = pbVar3 + 1; + pbVar7 = pbVar7 + 1; + *pbVar3 = bVar1; + pbVar3 = pbVar5; + } while (pbVar5 < acStack32 + 0x18); + pbVar3 = abStack48; + do { + bVar1 = *param_3; + pbVar7 = pbVar3 + 1; + param_3 = param_3 + 1; + *pbVar3 = bVar1; + pbVar3 = pbVar7; + } while (pbVar7 < abStack40); iStack60 = 0; - bStack32 = 0xff; - iStack52 = 0; - iVar10 = 0; - pbVar4 = pbVar7; - if (pbVar7->offset_portal == NULL) { - bStack32 = 0xff; + if (acStack32[16] == -1) { +LAB_7f0b4bc8: + iStack60 = 0; } else { - do { - pcVar9 = acStack260 + iStack52; - if (abStack16[0] != 0xff) { - pbVar5 = abStack16; - cVar2 = *pcVar9; - while( true ) { - if ((cVar2 == '\x01') && (pbVar4->connectedRoom1 == *pbVar5)) { - proc_7F0B4A50((char *)&bStack32,pbVar4->connectedRoom2); - proc_7F0B4A50((char *)abStack48,(&ptr_bgdata_portals->connectedRoom2)[iVar10]); - pbVar7 = ptr_bgdata_portals; - *pcVar9 = '\0'; - cVar2 = '\0'; - pbVar4 = (bg_portal_data_entry *)((int)&pbVar7->offset_portal + iVar10); - } - if (cVar2 == '\x02') { - if (pbVar4->connectedRoom2 == *pbVar5) { - proc_7F0B4A50((char *)&bStack32,pbVar4->connectedRoom1); - proc_7F0B4A50((char *)abStack48,(&ptr_bgdata_portals->connectedRoom1)[iVar10]); - pbVar7 = ptr_bgdata_portals; - *pcVar9 = '\0'; - pbVar4 = (bg_portal_data_entry *)((int)&pbVar7->offset_portal + iVar10); - bVar8 = pbVar5[1]; - } - else { - bVar8 = pbVar5[1]; - } - } - else { - bVar8 = pbVar5[1]; - } - pbVar5 = pbVar5 + 1; - if ((bVar8 == 0xff) || (pbVar5 == (byte *)register0x000000ec)) break; - cVar2 = *pcVar9; - } + pcVar12 = acStack32 + 0x10; + while (acStack32[17] != -1) { + if (pcVar12 + 1 == (char *)register0x000000ec) goto LAB_7f0b4bc8; + acStack32[17] = pcVar12[2]; + pcVar12 = pcVar12 + 1; } - iVar10 += 8; - pbVar4 = pbVar4 + 1; - iStack52 += 1; - } while (pbVar4->offset_portal != NULL); + iStack60 = 0; } - pbVar6 = &bStack32; - pbVar5 = abStack16; - if (bStack32 == 0xff) break; + pbVar9 = ptr_bgdata_portals; do { - bVar8 = *pbVar6; - pbVar6 = pbVar6 + 1; - *pbVar5 = bVar8; - pbVar5 = pbVar5 + 1; - } while (pbVar6 < abStack16); - bVar8 = bStack31; - pbVar5 = &bStack32; - if (bStack32 != 0xff) { - while( true ) { - if ((bVar8 == 0xff) || (pbVar5 + 1 == abStack16)) break; - bVar8 = pbVar5[2]; - pbVar5 = pbVar5 + 1; - } + iStack60 = 0; + acStack32[0] = -1; + iStack52 = 0; + iVar13 = 0; + pbVar6 = pbVar9; + if (pbVar9->offset_portal == NULL) { + acStack32[0] = -1; + } + else { + do { + pcVar12 = acStack260 + iStack52; + if (acStack32[16] != -1) { + puVar11 = (u8 *)(acStack32 + 0x10); + cVar4 = *pcVar12; + while( true ) { + if ((cVar4 == '\x01') && (pbVar6->connectedRoom1 == *puVar11)) { + proc_7F0B4A50(acStack32,pbVar6->connectedRoom2); + proc_7F0B4A50((char *)abStack48, + (&ptr_bgdata_portals->connectedRoom2)[iVar13]); + *pcVar12 = '\0'; + cVar4 = '\0'; + pbVar6 = (bg_portal_data_entry *) + ((int)&ptr_bgdata_portals->offset_portal + iVar13); + pbVar9 = ptr_bgdata_portals; + } + if (cVar4 == '\x02') { + if (pbVar6->connectedRoom2 == *puVar11) { + proc_7F0B4A50(acStack32,pbVar6->connectedRoom1); + proc_7F0B4A50((char *)abStack48, + (&ptr_bgdata_portals->connectedRoom1)[iVar13]); + *pcVar12 = '\0'; + pbVar6 = (bg_portal_data_entry *) + ((int)&ptr_bgdata_portals->offset_portal + iVar13); + uVar10 = puVar11[1]; + pbVar9 = ptr_bgdata_portals; + } + else { + uVar10 = puVar11[1]; + } + } + else { + uVar10 = puVar11[1]; + } + puVar11 = puVar11 + 1; + if ((uVar10 == -1) || (puVar11 == (u8 *)register0x000000ec)) break; + cVar4 = *pcVar12; + } + } + iVar13 += 8; + pbVar6 = pbVar6 + 1; + iStack52 = iStack52 + 1; + } while (pbVar6->offset_portal != NULL); + } + pcVar8 = acStack32; + pcVar12 = acStack32 + 0x10; + if (acStack32[0] == -1) break; + do { + cVar4 = *pcVar8; + pcVar8 = pcVar8 + 1; + *pcVar12 = cVar4; + pcVar12 = pcVar12 + 1; + } while (pcVar8 < acStack32 + 0x10); + iStack60 = 0; + cVar4 = acStack32[1]; + pcVar12 = acStack32; + if (acStack32[0] != -1) { + while( true ) { + if ((cVar4 == -1) || (pcVar12 + 1 == acStack32 + 0x10)) break; + cVar4 = pcVar12[2]; + pcVar12 = pcVar12 + 1; + } + } + iStack60 = 0; + } while (acStack32[0] != -1); + if (acStack32[16] != -1) { + pcVar12 = acStack32 + iStack60 + 0x10; + pcVar8 = (char *)(iStackX12 + iStack60); + *pcVar8 = *pcVar12; + while( true ) { + pcVar12 = pcVar12 + 1; + pcVar8 = pcVar8 + 1; + iStack60 += 1; + if ((6 < iStack60) || (*pcVar12 == -1)) break; + *pcVar8 = *pcVar12; + } } + *(undefined *)(iStackX12 + iStack60) = 0xff; iStack60 = 0; - } while (bStack32 != 0xff); - if (abStack16[0] != 0xff) { - pbVar5 = abStack16 + iStack60; - pbVar6 = (byte *)(iStackX12 + iStack60); - *pbVar6 = *pbVar5; - while( true ) { - pbVar5 = pbVar5 + 1; - pbVar6 = pbVar6 + 1; - iStack60 += 1; - if ((6 < iStack60) || (*pbVar5 == 0xff)) break; - *pbVar6 = *pbVar5; + if (0 < param_7) { + pbVar3 = abStack48; + if (abStack48[0] == 0xff) { + iStack60 = 0; + } + else { + *param_5 = (uint)abStack48[0]; + while( true ) { + pbVar3 = pbVar3 + 1; + param_5 = param_5 + 1; + iStack60 += 1; + if ((param_7 <= iStack60) || (*pbVar3 == 0xff)) break; + *param_5 = (uint)*pbVar3; + } + } } - } - *(undefined *)(iStackX12 + iStack60) = 0xff; - iStack60 = 0; - if (0 < param_7) { - pbVar5 = abStack48; - if (abStack48[0] == 0xff) { - iStack60 = 0; - } - else { - *param_5 = (uint)abStack48[0]; - while( true ) { - pbVar5 = pbVar5 + 1; - param_5 = param_5 + 1; - iStack60 += 1; - if ((param_7 <= iStack60) || (*pbVar5 == 0xff)) break; - *param_5 = (uint)*pbVar5; - } - } - } - *param_6 = iStack60; - return; + *param_6 = iStack60; + return; } @@ -125865,40 +125029,40 @@ void proc_7F0B4AB4(float *param_1,float *param_2,byte *param_3,int param_4,uint undefined4 * proc_7F0B4E40(undefined4 *param_1) { - undefined4 uVar1; - int iVar2; - uint *puVar3; - undefined4 *puVar4; - - *param_1 = 0xbc000002; - param_1[1] = 0x80000040; - param_1[2] = 0x3860010; - param_1[3] = 0x80044848; - param_1[4] = 0x3880010; - param_1[5] = 0x80044840; - param_1[6] = 0x3840010; - uVar1 = proc_7F078474(); - param_1[7] = uVar1; - param_1[8] = 0x3820010; - iVar2 = proc_7F078474(); - param_1[9] = iVar2 + 0x10; - param_1[10] = 0xbc003c06; - *(bg_data_header **)(param_1 + 0xb) = ptr_bg_data; - if (DAT_8007ff88 == 1) { - param_1[0xc] = 0x6000000; - puVar4 = param_1 + 0xe; - param_1[0xd] = DAT_8007bf98; - } - else { - puVar4 = proc_7F0BB070(param_1 + 0xc,0); - puVar3 = proc_7F0B8D78((longlong)(int)puVar4); - puVar3 = proc_7F0B4FB4(puVar3); - puVar4 = proc_7F0BB298(puVar3); - } - *puVar4 = 0x1030040; - puVar4[1] = DAT_80060820; - puVar4 = proc_7F08BCF4(puVar4 + 2); - return puVar4; + undefined4 uVar1; + int iVar2; + uint *puVar3; + undefined4 *puVar4; + + *param_1 = 0xbc000002; + param_1[1] = 0x80000040; + param_1[2] = 0x3860010; + param_1[3] = 0x80044848; + param_1[4] = 0x3880010; + param_1[5] = 0x80044840; + param_1[6] = 0x3840010; + uVar1 = get_BONDdata_field_10E4(); + param_1[7] = uVar1; + param_1[8] = 0x3820010; + iVar2 = get_BONDdata_field_10E4(); + param_1[9] = iVar2 + 0x10; + param_1[10] = 0xbc003c06; + *(bg_data_header **)(param_1 + 0xb) = ptr_bg_data; + if (DAT_8007ff88 == 1) { + param_1[0xc] = 0x6000000; + puVar4 = param_1 + 0xe; + param_1[0xd] = DAT_8007bf98; + } + else { + puVar4 = proc_7F0BB070(param_1 + 0xc,0); + puVar3 = proc_7F0B8D78((longlong)(int)puVar4); + puVar3 = proc_7F0B4FB4(puVar3); + puVar4 = proc_7F0BB298(puVar3); + } + *puVar4 = 0x1030040; + puVar4[1] = DAT_80060820; + puVar4 = proc_7F08BCF4(puVar4 + 2); + return puVar4; } @@ -125906,7 +125070,7 @@ undefined4 * proc_7F0B4E40(undefined4 *param_1) f32 proc_7F0B4F9C(int param_1) { - return *(f32 *)(DAT_8007ff94 + param_1 * 4 + 4); + return *(f32 *)(DAT_8007ff94 + param_1 * 4 + 4); } @@ -125914,12 +125078,12 @@ f32 proc_7F0B4F9C(int param_1) uint * proc_7F0B4FB4(uint *param_1) { - uint *puVar1; - - puVar1 = proc_7F0B5058(param_1,(longlong)pPlayer->viewleft,(longlong)pPlayer->viewtop, - (int)pPlayer->viewleft + (int)pPlayer->viewx, - (int)pPlayer->viewtop + (int)pPlayer->viewy); - return puVar1; + uint *puVar1; + + puVar1 = proc_7F0B5058(param_1,(longlong)pPlayer->viewleft,(longlong)pPlayer->viewtop, + (int)pPlayer->viewleft + (int)pPlayer->viewx, + (int)pPlayer->viewtop + (int)pPlayer->viewy); + return puVar1; } @@ -125927,16 +125091,16 @@ uint * proc_7F0B4FB4(uint *param_1) uint * proc_7F0B4FF4(uint *param_1,float param_2,float param_3,float param_4,float param_5) { - int iVar1; - int iVar2; - uint *puVar3; - float in_a3_lo; - float in_stack_00000010; - - iVar1 = proc_7F05C4B8(in_a3_lo); - iVar2 = proc_7F05C4B8(in_stack_00000010); - puVar3 = proc_7F0B5058(param_1,(longlong)(int)param_4,(longlong)(int)param_5,iVar1,iVar2); - return puVar3; + int iVar1; + int iVar2; + uint *puVar3; + float in_a3_lo; + float in_stack_00000010; + + iVar1 = proc_7F05C4B8(in_a3_lo); + iVar2 = proc_7F05C4B8(in_stack_00000010); + puVar3 = proc_7F0B5058(param_1,(longlong)(int)param_4,(longlong)(int)param_5,iVar1,iVar2); + return puVar3; } @@ -125944,40 +125108,40 @@ uint * proc_7F0B4FF4(uint *param_1,float param_2,float param_3,float param_4,flo uint * proc_7F0B5058(uint *param_1,longlong param_2,longlong param_3,int param_4,int param_5) { - short sVar1; - short sVar2; - int iVar3; - int iVar4; - int iVar5; - int local_resc; - - iVar3 = (int)param_2; - sVar1 = pPlayer->viewleft; - if (param_2 < (longlong)sVar1) { - iVar3 = (int)sVar1; - sVar2 = pPlayer->viewtop; - } - else { - sVar2 = pPlayer->viewtop; - } - iVar4 = (int)param_3; - if (param_3 < (longlong)sVar2) { - iVar4 = (int)sVar2; - } - iVar5 = (int)sVar1 + (int)pPlayer->viewx; - local_resc = param_4; - if (iVar5 < param_4) { - local_resc = iVar5; - } - iVar5 = (int)sVar2 + (int)pPlayer->viewy; - if (param_5 <= iVar5) { - iVar5 = param_5; - } - *param_1 = ((int)((float)iVar3 * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | - (int)((float)iVar4 * 4.00000000) & 0xfffU; - param_1[1] = ((int)((float)local_resc * 4.00000000) & 0xfffU) << 0xc | - (int)((float)iVar5 * 4.00000000) & 0xfffU; - return param_1 + 2; + short left; + short top; + int iVar1; + int iVar2; + int iVar3; + int local_resc; + + iVar1 = (int)param_2; + left = pPlayer->viewleft; + if (param_2 < left) { + iVar1 = (int)left; + top = pPlayer->viewtop; + } + else { + top = pPlayer->viewtop; + } + iVar2 = (int)param_3; + if (param_3 < top) { + iVar2 = (int)top; + } + iVar3 = (int)left + (int)pPlayer->viewx; + local_resc = param_4; + if (iVar3 < param_4) { + local_resc = iVar3; + } + iVar3 = (int)top + (int)pPlayer->viewy; + if (param_5 <= iVar3) { + iVar3 = param_5; + } + *param_1 = ((int)((float)iVar1 * 4.00000000) & 0xfffU) << 0xc | 0xed000000 | + (int)((float)iVar2 * 4.00000000) & 0xfffU; + param_1[1] = ((int)((float)local_resc * 4.00000000) & 0xfffU) << 0xc | + (int)((float)iVar3 * 4.00000000) & 0xfffU; + return param_1 + 2; } @@ -125985,18 +125149,18 @@ uint * proc_7F0B5058(uint *param_1,longlong param_2,longlong param_3,int param_4 void proc_7F0B5168(void) { - undefined4 *puVar1; - - puVar1 = &DAT_80081618; - do { - puVar1 = puVar1 + 0x14; - puVar1[5] = 0xffffffff; - puVar1[10] = 0xffffffff; - puVar1[0xf] = 0xffffffff; - *puVar1 = 0xffffffff; - puVar1 = puVar1; - } while (puVar1 != (undefined4 *)0x800825b8); - return; + portal_table_entry *ppVar1; + + ppVar1 = portal_table_entry_ARRAY_80081618; + do { + ppVar1 = ppVar1 + 4; + ppVar1[1].id = -1; + ppVar1[2].id = -1; + ppVar1[3].id = -1; + ppVar1->id = -1; + ppVar1 = ppVar1; + } while (ppVar1 != (portal_table_entry *)0x800825b8); + return; } @@ -126004,11 +125168,11 @@ void proc_7F0B5168(void) undefined8 proc_7F0B519C(float *param_1,float *param_2) { - if ((((*param_2 <= *param_1) && (*param_1 <= param_2[2])) && (param_2[1] <= param_1[1])) && - (param_1[1] <= param_2[3])) { - return 1; - } - return 0; + if ((((*param_2 <= *param_1) && (*param_1 <= param_2[2])) && (param_2[1] <= param_1[1])) && + (param_1[1] <= param_2[3])) { + return 1; + } + return 0; } @@ -126016,130 +125180,129 @@ undefined8 proc_7F0B519C(float *param_1,float *param_2) undefined8 proc_7F0B5208(int param_1,float *param_2) { - ulonglong uVar1; - undefined8 uVar2; - int iVar3; - int iVar4; - int iVar5; - int iVar6; - int iVar7; - int iVar8; - uint uVar9; - float fVar10; - undefined4 uStack60; - float fStack56; - float fStack28; - undefined4 uStack24; - undefined4 uStack20; - float fStack16; - float fStack12; - float fStack8; - uint uStack4; - - iVar3 = 0; - iVar8 = 0; - iVar4 = 0; - iVar5 = 0; - iVar6 = 0; - iVar7 = 0; - video_related_27(&uStack60); - fStack56 = fStack56 / room_data_float3; - param_1 *= 0x50; - uStack4 = 0; - uVar9 = 0; - do { - if (uVar9 == 0) { - fStack28 = *(float *)(&DAT_80041458 + param_1); - } - else { - fStack28 = *(float *)(&DAT_8004144c + param_1); - } - if ((uStack4 & 2) == 0) { - uStack24 = *(undefined4 *)(&DAT_8004145c + param_1); - } - else { - uStack24 = *(undefined4 *)(&DAT_80041450 + param_1); - } - if ((uStack4 & 4) == 0) { - uStack20 = *(undefined4 *)(&DAT_80041460 + param_1); - } - else { - uStack20 = *(undefined4 *)(&DAT_80041454 + param_1); - } - uVar1 = proc_7F0B5488(&fStack28,&fStack16); - if (uVar1 == 0) { - if (fStack56 <= -fStack8) { - iVar3 += 1; - fVar10 = *param_2; - } - else { - fVar10 = *param_2; - } - if (fVar10 <= fStack16) { - iVar4 += 1; - fVar10 = param_2[2]; - } - else { - fVar10 = param_2[2]; - } - if (fStack16 <= fVar10) { - iVar5 += 1; - fVar10 = param_2[1]; - } - else { - fVar10 = param_2[1]; - } - if (fVar10 <= fStack12) { - iVar6 += 1; - fVar10 = param_2[3]; - } - else { - fVar10 = param_2[3]; - } - if (fStack12 <= fVar10) { - iVar7 += 1; - } - iVar8 += 1; - } - else { - if (fStack56 <= -fStack8) { - iVar3 += 1; - fVar10 = *param_2; - } - else { - fVar10 = *param_2; - } - if (fStack16 <= fVar10) { - iVar4 += 1; + ulonglong uVar1; + undefined8 uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + float fVar10; + undefined4 uStack60; + float fStack56; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + uint uStack4; + + iVar3 = 0; + iVar8 = 0; + iVar4 = 0; + iVar5 = 0; + iVar6 = 0; + iVar7 = 0; + video_related_27(&uStack60); + fStack56 = fStack56 / room_data_float3; + uStack4 = 0; + uVar9 = 0; + do { + if (uVar9 == 0) { + fStack28 = roominformationblock[param_1].maxxbounds; + } + else { + fStack28 = roominformationblock[param_1].minxbounds; + } + if ((uStack4 & 2) == 0) { + fStack24 = roominformationblock[param_1].maxybounds; + } + else { + fStack24 = roominformationblock[param_1].minybounds; + } + if ((uStack4 & 4) == 0) { + fStack20 = roominformationblock[param_1].maxzbounds; + } + else { + fStack20 = roominformationblock[param_1].minzbounds; + } + uVar1 = proc_7F0B5488(&fStack28,&fStack16); + if (uVar1 == 0) { + if (fStack56 <= -fStack8) { + iVar3 += 1; + fVar10 = *param_2; + } + else { + fVar10 = *param_2; + } + if (fVar10 <= fStack16) { + iVar4 += 1; + fVar10 = param_2[2]; + } + else { + fVar10 = param_2[2]; + } + if (fStack16 <= fVar10) { + iVar5 += 1; + fVar10 = param_2[1]; + } + else { + fVar10 = param_2[1]; + } + if (fVar10 <= fStack12) { + iVar6 += 1; + fVar10 = param_2[3]; + } + else { + fVar10 = param_2[3]; + } + if (fStack12 <= fVar10) { + iVar7 += 1; + } + iVar8 += 1; + } + else { + if (fStack56 <= -fStack8) { + iVar3 += 1; + fVar10 = *param_2; + } + else { + fVar10 = *param_2; + } + if (fStack16 <= fVar10) { + iVar4 += 1; LAB_7f0b53ec: - fVar10 = param_2[1]; - } - else { - if (param_2[2] <= fStack16) { - iVar5 += 1; - goto LAB_7f0b53ec; + fVar10 = param_2[1]; + } + else { + if (param_2[2] <= fStack16) { + iVar5 += 1; + goto LAB_7f0b53ec; + } + fVar10 = param_2[1]; + } + if (fStack12 <= fVar10) { + iVar6 += 1; + } + else { + if (param_2[3] <= fStack12) { + iVar7 += 1; + } + } } - fVar10 = param_2[1]; - } - if (fStack12 <= fVar10) { - iVar6 += 1; - } - else { - if (param_2[3] <= fStack12) { - iVar7 += 1; + uStack4 += 1; + if (uStack4 == 8) { + if ((((iVar8 == 8) || (iVar3 == 8)) || (iVar4 == 8)) || + (((iVar5 == 8 || (iVar6 == 8)) || (uVar2 = 1, iVar7 == 8)))) { + uVar2 = 0; + } + return uVar2; } - } - } - uStack4 += 1; - if (uStack4 == 8) { - if ((((iVar8 == 8) || (iVar3 == 8)) || (iVar4 == 8)) || - (((iVar5 == 8 || (iVar6 == 8)) || (uVar2 = 1, iVar7 == 8)))) { - uVar2 = 0; - } - return uVar2; - } - uVar9 = uStack4 & 1; - } while( true ); + uVar9 = uStack4 & 1; + } while( true ); } @@ -126147,15 +125310,15 @@ LAB_7f0b53ec: ulonglong proc_7F0B5488(float *param_1,float *param_2) { - float *pfVar1; - - pfVar1 = (float *)proc_7F0783C4(); - *param_2 = *param_1 * room_data_float2; - param_2[1] = param_1[1] * room_data_float2; - param_2[2] = param_1[2] * room_data_float2; - proc_7F058474(pfVar1,param_2); - proc_7F078060(param_2,param_2); - return (ulonglong)(param_2[2] <= 0.00000000); + float *pfVar1; + + pfVar1 = (float *)get_BONDdata_field_10CC(); + *param_2 = *param_1 * room_data_float2; + param_2[1] = param_1[1] * room_data_float2; + param_2[2] = param_1[2] * room_data_float2; + proc_7F058474(pfVar1,param_2); + proc_7F078060(param_2,param_2); + return (ulonglong)(param_2[2] <= 0.00000000); } @@ -126163,226 +125326,224 @@ ulonglong proc_7F0B5488(float *param_1,float *param_2) ulonglong proc_7F0B5528(int param_1,float param_2,float *param_3) { - bool bVar1; - float *pfVar2; - float *pfVar3; - ulonglong uVar4; - ulonglong uVar5; - int iVar6; - float *in_a2_lo; - float *pfVar7; - longlong lVar8; - bg_portal_entry *pbVar9; - float fVar10; - float fVar11; - float fVar12; - float fStack48; - float fStack44; - float fStack40; - undefined4 uStack24; - float fStack20; - float *pfStack4; - - pfStack4 = (float *)proc_7F0783C4(); - bVar1 = true; - video_related_27(&uStack24); - fVar12 = flt_80058C7C; - fStack20 = fStack20 / room_data_float3; - lVar8 = 0; - pbVar9 = ptr_bgdata_portals[param_1].offset_portal; - uVar4 = (ulonglong)pbVar9->numPoints; - if (pbVar9->numPoints != 0) { - iVar6 = 0; - pfVar7 = in_a2_lo; - while( true ) { - *pfVar7 = (pbVar9->point).x; - pfVar7[1] = *(float *)((int)&((ptr_bgdata_portals[param_1].offset_portal)->point).y + iVar6); - pfVar7[2] = *(float *)((int)&((ptr_bgdata_portals[param_1].offset_portal)->point).z + iVar6); - if ((float)param_3 != 0.00000000) { - proc_7F0B96CC(param_1,&fStack48); - *pfVar7 = *pfVar7 + fStack48 * (float)param_3; - pfVar7[1] = pfVar7[1] + fStack44 * (float)param_3; - pfVar7[2] = pfVar7[2] + fStack40 * (float)param_3; - } - *pfVar7 = *pfVar7 * room_data_float2; - pfVar7[1] = pfVar7[1] * room_data_float2; - pfVar7[2] = pfVar7[2] * room_data_float2; - proc_7F058474(pfStack4,pfVar7); - if (-fStack20 * fVar12 < pfVar7[2]) { - bVar1 = false; - } - lVar8 = (longlong)((int)lVar8 + 1); - pfVar7 = pfVar7 + 3; - uVar4 = (ulonglong)(ptr_bgdata_portals[param_1].offset_portal)->numPoints; - if ((longlong)uVar4 <= lVar8) break; - pbVar9 = (bg_portal_entry *) - ((int)&((ptr_bgdata_portals[param_1].offset_portal)->point).z + iVar6); - iVar6 = iVar6 + 0xc; - } - } - if (bVar1) { - uVar4 = 0; - } - else { + bool bVar1; + float *pfVar2; + float *pfVar3; + ulonglong uVar4; + ulonglong uVar5; + int iVar6; + float *in_a2_lo; + float *pfVar7; + longlong lVar8; + bg_portal_entry *pbVar9; + float fVar10; + float fVar11; + float fVar12; + float fStack48; + float fStack44; + float fStack40; + undefined4 uStack24; + float fStack20; + float *pfStack4; + + pfStack4 = (float *)get_BONDdata_field_10CC(); + bVar1 = true; + video_related_27(&uStack24); + fVar12 = flt_80058C7C; + fStack20 = fStack20 / room_data_float3; lVar8 = 0; - uVar5 = uVar4; - pfVar7 = in_a2_lo; - if (uVar4 != 0) { - do { - iVar6 = (int)lVar8 + 1; - lVar8 = (longlong)iVar6; - iVar6 %= (int)uVar5; - fVar12 = pfVar7[2]; - if (uVar5 == 0) { - trap(0x1c00); + pbVar9 = ptr_bgdata_portals[param_1].offset_portal; + uVar4 = (ulonglong)pbVar9->numPoints; + if (pbVar9->numPoints != 0) { + iVar6 = 0; + pfVar7 = in_a2_lo; + while( true ) { + *(f32 *)pfVar7 = (pbVar9->point).x; + pfVar7[1] = *(float *)((int)&((ptr_bgdata_portals[param_1].offset_portal)->point).y + + iVar6); + pfVar7[2] = *(float *)((int)&((ptr_bgdata_portals[param_1].offset_portal)->point).z + + iVar6); + if ((float)param_3 != 0.00000000) { + proc_7F0B96CC(param_1,&fStack48); + *pfVar7 = *pfVar7 + fStack48 * (float)param_3; + pfVar7[1] = pfVar7[1] + fStack44 * (float)param_3; + pfVar7[2] = pfVar7[2] + fStack40 * (float)param_3; + } + *pfVar7 = *pfVar7 * room_data_float2; + pfVar7[1] = pfVar7[1] * room_data_float2; + pfVar7[2] = pfVar7[2] * room_data_float2; + proc_7F058474(pfStack4,pfVar7); + if (-fStack20 * fVar12 < pfVar7[2]) { + bVar1 = false; + } + lVar8 = (longlong)((int)lVar8 + 1); + pfVar7 = pfVar7 + 3; + uVar4 = (ulonglong)(ptr_bgdata_portals[param_1].offset_portal)->numPoints; + if ((longlong)uVar4 <= lVar8) break; + pbVar9 = (bg_portal_entry *) + ((int)&((ptr_bgdata_portals[param_1].offset_portal)->point).z + iVar6); + iVar6 = iVar6 + 0xc; } - if ((uVar5 == 0xffffffffffffffff) && (lVar8 == -0x80000000)) { - trap(0x1800); - } - if (0.00000000 < fVar12) { - pfVar2 = in_a2_lo + iVar6 * 3; - fVar11 = pfVar2[2]; - if (0.00000000 < fVar11) goto code_r0x7f0b5788; -LAB_7f0b57b4: - iVar6 = (int)uVar4; - fVar10 = -fVar12 / (fVar11 - fVar12); - uVar4 = SEXT48(iVar6 + 1); - pfVar3 = in_a2_lo + iVar6 * 3; - *pfVar3 = (*pfVar2 - *pfVar7) * fVar10 + *pfVar7; - fVar11 = pfVar2[1]; - fVar12 = pfVar7[1]; - pfVar3[2] = 0.00000000; - pfVar3[1] = (fVar11 - fVar12) * fVar10 + fVar12; - uVar5 = (ulonglong)(ptr_bgdata_portals[param_1].offset_portal)->numPoints; - bVar1 = lVar8 < (longlong)uVar5; - } - else { -code_r0x7f0b5788: - if (fVar12 <= 0.00000000) { - pfVar2 = in_a2_lo + iVar6 * 3; - fVar11 = pfVar2[2]; - if (0.00000000 < fVar11) goto LAB_7f0b57b4; - bVar1 = lVar8 < (longlong)uVar5; - } - else { - bVar1 = lVar8 < (longlong)uVar5; - } - } - pfVar7 = pfVar7 + 3; - } while (bVar1); } - } - return uVar4; + if (bVar1) { + uVar4 = 0; + } + else { + lVar8 = 0; + uVar5 = uVar4; + pfVar7 = in_a2_lo; + if (uVar4 != 0) { + do { + iVar6 = (int)lVar8 + 1; + lVar8 = (longlong)iVar6; + iVar6 %= (int)uVar5; + fVar12 = pfVar7[2]; + if (uVar5 == 0) { + trap(0x1c00); + } + if ((uVar5 == 0xffffffffffffffff) && (lVar8 == -0x80000000)) { + trap(0x1800); + } + if (0.00000000 < fVar12) { + pfVar2 = in_a2_lo + iVar6 * 3; + fVar11 = pfVar2[2]; + if (0.00000000 < fVar11) goto code_r0x7f0b5788; +LAB_7f0b57b4: + iVar6 = (int)uVar4; + fVar10 = -fVar12 / (fVar11 - fVar12); + uVar4 = SEXT48(iVar6 + 1); + pfVar3 = in_a2_lo + iVar6 * 3; + *pfVar3 = (*pfVar2 - *pfVar7) * fVar10 + *pfVar7; + fVar11 = pfVar2[1]; + fVar12 = pfVar7[1]; + pfVar3[2] = 0.00000000; + pfVar3[1] = (fVar11 - fVar12) * fVar10 + fVar12; + uVar5 = (ulonglong)(ptr_bgdata_portals[param_1].offset_portal)->numPoints; + bVar1 = lVar8 < (longlong)uVar5; + } + else { +code_r0x7f0b5788: + if (fVar12 <= 0.00000000) { + pfVar2 = in_a2_lo + iVar6 * 3; + fVar11 = pfVar2[2]; + if (0.00000000 < fVar11) goto LAB_7f0b57b4; + bVar1 = lVar8 < (longlong)uVar5; + } + else { + bVar1 = lVar8 < (longlong)uVar5; + } + } + pfVar7 = pfVar7 + 3; + } while (bVar1); + } + } + return uVar4; } -int proc_7F0B5864(void) +s32 proc_7F0B5864(void) { - int iVar1; - float fVar2; - ulonglong uVar3; - int iVar4; - int in_a0_lo; - float *in_a1_lo; - float *pfVar5; - ulonglong uVar6; - int *piVar7; - float fVar8; - float extraout_f12; - float extraout_f12_00; - float fVar9; - float fStack264; - float fStack260; - float fStack256; - float fStack252; - float fStack248; - float fStack244; - float afStack240 [60]; - - iVar1 = in_a0_lo * 0x14; - piVar7 = &DAT_80081618 + in_a0_lo * 5; - if (*piVar7 < 0) { - pfVar5 = (float *)proc_7F0B9990(in_a0_lo); - uVar3 = proc_7F0B5528(in_a0_lo,extraout_f12,pfVar5); - if (0.00000000 < (float)pfVar5) { - uVar6 = proc_7F0B5528(in_a0_lo,extraout_f12_00,(float *)-(float)pfVar5); - uVar3 = SEXT48((int)uVar3 + (int)uVar6); - } - iVar4 = 0; - uVar6 = 0; - if (0 < (longlong)uVar3) { - pfVar5 = afStack240; - do { - if (pfVar5[2] <= 0.00000000) { - proc_7F078060(pfVar5,&fStack248); - fVar8 = fStack244; - fVar9 = fStack248; - fVar2 = fStack248; - if (iVar4 == 0) { -LAB_7f0b59f4: - fStack264 = fVar2; - fStack252 = fStack244; - } - else { - fVar8 = fStack248; - if (fStack264 <= fStack248) { - fVar8 = fStack264; - } - fStack264 = fVar8; - fVar9 = fStack248; - if (fStack248 <= fStack256) { - fVar9 = fStack256; - } - fVar8 = fStack244; - if (fStack260 <= fStack244) { - fVar8 = fStack260; - } - fVar2 = fStack264; - if (fStack252 < fStack244) goto LAB_7f0b59f4; - } - iVar4 += 1; - fStack260 = fVar8; - fStack256 = fVar9; + float fVar1; + ulonglong uVar2; + s32 sVar3; + int in_a0_lo; + float *in_a1_lo; + float *pfVar4; + ulonglong uVar5; + portal_table_entry *ppVar6; + float fVar7; + float extraout_f12; + float extraout_f12_00; + float fVar8; + float fStack264; + float fStack260; + float fStack256; + float fStack252; + float fStack248; + float fStack244; + float afStack240 [60]; + + ppVar6 = portal_table_entry_ARRAY_80081618 + in_a0_lo; + if (ppVar6->id < 0) { + pfVar4 = (float *)proc_7F0B9990(in_a0_lo); + uVar2 = proc_7F0B5528(in_a0_lo,extraout_f12,pfVar4); + if (0.00000000 < (float)pfVar4) { + uVar5 = proc_7F0B5528(in_a0_lo,extraout_f12_00,(float *)-(float)pfVar4); + uVar2 = SEXT48((int)uVar2 + (int)uVar5); } - uVar6 = SEXT48((int)uVar6 + 1); - pfVar5 = pfVar5 + 3; - } while (uVar6 != uVar3); - } - if (iVar4 == 0) { - fStack252 = 0.00000000; - fStack260 = 0.00000000; - fStack256 = 0.00000000; - fStack264 = 0.00000000; + sVar3 = 0; + uVar5 = 0; + if (0 < (longlong)uVar2) { + pfVar4 = afStack240; + do { + if (pfVar4[2] <= 0.00000000) { + proc_7F078060(pfVar4,&fStack248); + fVar7 = fStack244; + fVar8 = fStack248; + fVar1 = fStack248; + if (sVar3 == 0) { +LAB_7f0b59f4: + fStack264 = fVar1; + fStack252 = fStack244; + } + else { + fVar1 = fStack248; + if (fStack264 <= fStack248) { + fVar1 = fStack264; + } + fStack264 = fVar1; + if (fStack248 <= fStack256) { + fVar8 = fStack256; + } + if (fStack260 <= fStack244) { + fVar7 = fStack260; + } + fVar1 = fStack264; + if (fStack252 < fStack244) goto LAB_7f0b59f4; + } + sVar3 += 1; + fStack260 = fVar7; + fStack256 = fVar8; + } + uVar5 = SEXT48((int)uVar5 + 1); + pfVar4 = pfVar4 + 3; + } while (uVar5 != uVar2); + } + if (sVar3 == 0) { + fStack252 = 0.00000000; + fStack260 = 0.00000000; + fStack256 = 0.00000000; + fStack264 = 0.00000000; + } + else { + if ((fStack256 <= fStack264) || (fStack252 <= fStack260)) { + fStack264 = pPlayer->screenxminf; + fStack260 = pPlayer->screenyminf; + fStack256 = pPlayer->screenxmaxf; + fStack252 = pPlayer->screenymaxf; + } + } + *in_a1_lo = fStack264; + in_a1_lo[1] = fStack260; + in_a1_lo[2] = fStack256; + in_a1_lo[3] = fStack252; + *(float *)&portal_table_entry_ARRAY_80081618[in_a0_lo].x_min = *in_a1_lo; + *(float *)&portal_table_entry_ARRAY_80081618[in_a0_lo].y_min = in_a1_lo[1]; + *(float *)&portal_table_entry_ARRAY_80081618[in_a0_lo].x_max = in_a1_lo[2]; + fVar7 = in_a1_lo[3]; + ppVar6->id = sVar3; + *(float *)&portal_table_entry_ARRAY_80081618[in_a0_lo].y_max = fVar7; } else { - if ((fStack256 <= fStack264) || (fStack252 <= fStack260)) { - fStack264 = pPlayer->screenxminf; - fStack260 = pPlayer->screenyminf; - fStack256 = pPlayer->screenxmaxf; - fStack252 = pPlayer->screenymaxf; - } + *(s32 *)in_a1_lo = portal_table_entry_ARRAY_80081618[in_a0_lo].x_min; + *(s32 *)(in_a1_lo + 1) = portal_table_entry_ARRAY_80081618[in_a0_lo].y_min; + *(s32 *)(in_a1_lo + 2) = portal_table_entry_ARRAY_80081618[in_a0_lo].x_max; + *(s32 *)(in_a1_lo + 3) = portal_table_entry_ARRAY_80081618[in_a0_lo].y_max; + sVar3 = ppVar6->id; } - *in_a1_lo = fStack264; - in_a1_lo[1] = fStack260; - in_a1_lo[2] = fStack256; - in_a1_lo[3] = fStack252; - *(float *)(&DAT_8008161c + iVar1) = *in_a1_lo; - *(float *)(&DAT_80081620 + iVar1) = in_a1_lo[1]; - *(float *)(&DAT_80081624 + iVar1) = in_a1_lo[2]; - fVar8 = in_a1_lo[3]; - *piVar7 = iVar4; - *(float *)(&DAT_80081628 + iVar1) = fVar8; - } - else { - *in_a1_lo = *(float *)(&DAT_8008161c + iVar1); - in_a1_lo[1] = *(float *)(&DAT_80081620 + iVar1); - in_a1_lo[2] = *(float *)(&DAT_80081624 + iVar1); - in_a1_lo[3] = *(float *)(&DAT_80081628 + iVar1); - iVar4 = *piVar7; - } - return iVar4; + return sVar3; } @@ -126390,9 +125551,9 @@ LAB_7f0b59f4: uint * proc_7F0B5B14(uint *param_1,undefined8 param_2,undefined8 param_3,int param_4,int param_5) { - param_1[1] = ((uint)param_2 & 0x3ff) << 0xe | ((uint)param_3 & 0x3ff) << 2; - *param_1 = (param_4 + 1U & 0x3ff) << 0xe | 0xf6000000 | (param_5 + 1U & 0x3ff) << 2; - return param_1 + 2; + param_1[1] = ((uint)param_2 & 0x3ff) << 0xe | ((uint)param_3 & 0x3ff) << 2; + *param_1 = (param_4 + 1U & 0x3ff) << 0xe | 0xf6000000 | (param_5 + 1U & 0x3ff) << 2; + return param_1 + 2; } @@ -126400,17 +125561,17 @@ uint * proc_7F0B5B14(uint *param_1,undefined8 param_2,undefined8 param_3,int par uint * proc_7F0B5B60(uint *param_1,undefined8 param_2,undefined8 param_3,int param_4,int param_5) { - uint *puVar1; - int iVar2; - int iVar3; - - iVar2 = (int)param_2; - iVar3 = (int)param_3; - puVar1 = proc_7F0B5B14(param_1,param_2,param_3,param_4,iVar3); - puVar1 = proc_7F0B5B14(puVar1,(longlong)param_4,(longlong)iVar3,param_4,param_5); - puVar1 = proc_7F0B5B14(puVar1,(longlong)iVar2,(longlong)param_5,param_4,param_5); - puVar1 = proc_7F0B5B14(puVar1,(longlong)iVar2,(longlong)iVar3,iVar2,param_5); - return puVar1; + uint *puVar1; + int iVar2; + int iVar3; + + iVar2 = (int)param_2; + iVar3 = (int)param_3; + puVar1 = proc_7F0B5B14(param_1,param_2,param_3,param_4,iVar3); + puVar1 = proc_7F0B5B14(puVar1,(longlong)param_4,(longlong)iVar3,param_4,param_5); + puVar1 = proc_7F0B5B14(puVar1,(longlong)iVar2,(longlong)param_5,param_4,param_5); + puVar1 = proc_7F0B5B14(puVar1,(longlong)iVar2,(longlong)iVar3,iVar2,param_5); + return puVar1; } @@ -126418,39 +125579,39 @@ uint * proc_7F0B5B60(uint *param_1,undefined8 param_2,undefined8 param_3,int par undefined8 vis_is_inline_of_sight(float *param_1,float *param_2) { - if (*param_2 < *param_1) { - *param_1 = *param_1; - } - else { - *param_1 = *param_2; - } - if (param_2[1] < param_1[1]) { - param_1[1] = param_1[1]; - } - else { - param_1[1] = param_2[1]; - } - if (param_1[2] < param_2[2]) { - param_1[2] = param_1[2]; - } - else { - param_1[2] = param_2[2]; - } - if (param_1[3] < param_2[3]) { - param_1[3] = param_1[3]; - } - else { - param_1[3] = param_2[3]; - } - if (*param_1 < param_1[2]) { - if (param_1[1] < param_1[3]) { - return 1; + if (*param_2 < *param_1) { + *param_1 = *param_1; } - param_1[1] = param_1[3]; + else { + *param_1 = *param_2; + } + if (param_2[1] < param_1[1]) { + param_1[1] = param_1[1]; + } + else { + param_1[1] = param_2[1]; + } + if (param_1[2] < param_2[2]) { + param_1[2] = param_1[2]; + } + else { + param_1[2] = param_2[2]; + } + if (param_1[3] < param_2[3]) { + param_1[3] = param_1[3]; + } + else { + param_1[3] = param_2[3]; + } + if (*param_1 < param_1[2]) { + if (param_1[1] < param_1[3]) { + return 1; + } + param_1[1] = param_1[3]; + return 0; + } + *param_1 = param_1[2]; return 0; - } - *param_1 = param_1[2]; - return 0; } @@ -126458,30 +125619,30 @@ undefined8 vis_is_inline_of_sight(float *param_1,float *param_2) void proc_7F0B5CC0(float *param_1,float *param_2) { - if (*param_1 < *param_2) { - *param_1 = *param_1; - } - else { - *param_1 = *param_2; - } - if (param_1[1] < param_2[1]) { - param_1[1] = param_1[1]; - } - else { - param_1[1] = param_2[1]; - } - if (param_2[2] < param_1[2]) { - param_1[2] = param_1[2]; - } - else { - param_1[2] = param_2[2]; - } - if (param_1[3] <= param_2[3]) { - param_1[3] = param_2[3]; + if (*param_1 < *param_2) { + *param_1 = *param_1; + } + else { + *param_1 = *param_2; + } + if (param_1[1] < param_2[1]) { + param_1[1] = param_1[1]; + } + else { + param_1[1] = param_2[1]; + } + if (param_2[2] < param_1[2]) { + param_1[2] = param_1[2]; + } + else { + param_1[2] = param_2[2]; + } + if (param_1[3] <= param_2[3]) { + param_1[3] = param_2[3]; + return; + } + param_1[3] = param_1[3]; return; - } - param_1[3] = param_1[3]; - return; } @@ -126489,11 +125650,11 @@ void proc_7F0B5CC0(float *param_1,float *param_2) void proc_7F0B5D58(undefined4 *param_1,undefined4 *param_2) { - *param_1 = *param_2; - param_1[1] = param_2[1]; - param_1[2] = param_2[2]; - param_1[3] = param_2[3]; - return; + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + param_1[3] = param_2[3]; + return; } @@ -126501,12 +125662,12 @@ void proc_7F0B5D58(undefined4 *param_1,undefined4 *param_2) char * print_port(undefined8 param_1) { - char *__s; - - DAT_80044860 = (DAT_80044860 + 1) % 10; - __s = (char *)(DAT_80044860 * 9 + -0x7ff83fc0); - sprintf(__s,"PORT%d",param_1); - return __s; + char *__s; + + DAT_80044860 = (DAT_80044860 + 1) % 10; + __s = (char *)(DAT_80044860 * 9 + -0x7ff83fc0); + sprintf(__s,"PORT%d",param_1); + return __s; } @@ -126514,12 +125675,12 @@ char * print_port(undefined8 param_1) char * printroom(undefined8 param_1) { - char *__s; - - DAT_80044864 = (DAT_80044864 + 1) % 10; - __s = (char *)(DAT_80044864 * 9 + -0x7ff83f60); - sprintf(__s,"ROOM%d",param_1); - return __s; + char *__s; + + DAT_80044864 = (DAT_80044864 + 1) % 10; + __s = (char *)(DAT_80044864 * 9 + -0x7ff83f60); + sprintf(__s,"ROOM%d",param_1); + return __s; } @@ -126527,7 +125688,7 @@ char * printroom(undefined8 param_1) u32 get_max_num_rooms(void) { - return max_num_rooms; + return max_num_rooms; } @@ -126535,7 +125696,7 @@ u32 get_max_num_rooms(void) ulonglong proc_7F0B5E50(int param_1) { - return (ulonglong)(byte)(&roominformationblock)[param_1 * 0x50]; + return (ulonglong)*(byte *)&roominformationblock[param_1].bitflags; } @@ -126543,7 +125704,7 @@ ulonglong proc_7F0B5E50(int param_1) ulonglong proc_7F0B5E6C(int param_1) { - return (ulonglong)(byte)(&DAT_80041415)[param_1 * 0x50]; + return (ulonglong)*(byte *)((int)&roominformationblock[param_1].bitflags + 1); } @@ -126551,24 +125712,24 @@ ulonglong proc_7F0B5E6C(int param_1) int proc_7F0B5E88(int param_1) { - int iVar1; - bg_portal_data_entry *pbVar2; - bg_portal_entry *pbVar3; - - iVar1 = 0; - if (ptr_bgdata_portals->offset_portal != NULL) { - pbVar3 = ptr_bgdata_portals->offset_portal; - pbVar2 = ptr_bgdata_portals; - do { - if ((bg_portal_entry *)param_1 == pbVar3) { - return iVar1; - } - pbVar3 = pbVar2[1].offset_portal; - iVar1 += 1; - pbVar2 = pbVar2 + 1; - } while (pbVar3 != NULL); - } - return 0; + int iVar1; + bg_portal_data_entry *pbVar2; + bg_portal_entry *pbVar3; + + iVar1 = 0; + if (ptr_bgdata_portals->offset_portal != NULL) { + pbVar3 = ptr_bgdata_portals->offset_portal; + pbVar2 = ptr_bgdata_portals; + do { + if ((bg_portal_entry *)param_1 == pbVar3) { + return iVar1; + } + pbVar3 = pbVar2[1].offset_portal; + iVar1 += 1; + pbVar2 = pbVar2 + 1; + } while (pbVar3 != NULL); + } + return 0; } @@ -126576,81 +125737,77 @@ int proc_7F0B5E88(int param_1) void generate_room_load_string(void) { - char *pcVar1; - u32 uVar2; - int iVar3; - char *pcVar4; - undefined1 *puVar5; - char acStack152 [152]; - - iVar3 = get_debug_prroomloads_flag(); - uVar2 = max_num_rooms; - if (iVar3 != 0) { - puVar5 = &DAT_80041464; - iVar3 = 1; - if (1 < (int)max_num_rooms) { - pcVar4 = acStack152; - do { - pcVar4 = pcVar4 + 1; - pcVar1 = puVar5 + 2; - puVar5 = puVar5 + 0x50; - if (*pcVar1 == '\0') { - *pcVar4 = '.'; + char *pcVar1; + int iVar2; + char *pcVar3; + int iVar4; + char acStack152 [152]; + + iVar2 = get_debug_prroomloads_flag(); + if (iVar2 != 0) { + iVar2 = -0x7ffbeb9c; + iVar4 = 1; + if (1 < (int)max_num_rooms) { + pcVar3 = acStack152; + do { + pcVar3 = pcVar3 + 1; + pcVar1 = (char *)(iVar2 + 2); + iVar2 += 0x50; + if (*pcVar1 == '\0') { + *pcVar3 = '.'; + } + else { + if (false) { + trap(0x1c00); + } + if ((false) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + *pcVar3 = (char)(iVar4 % 10) + '0'; + } + iVar4 += 1; + } while (iVar4 < (int)max_num_rooms); } - else { - if (false) { - trap(0x1c00); - } - if ((false) && (iVar3 == -0x80000000)) { - trap(0x1800); - } - *pcVar4 = (char)(iVar3 % 10) + '0'; - } - iVar3 += 1; - } while (iVar3 < (int)uVar2); + acStack152[iVar4] = '\0'; } - acStack152[iVar3] = '\0'; - } - return; + return; } -undefined4 decompressdata_with_8448buffer(int source,int target) +u8 * decompressdata_with_8448buffer(int source,u8 *target) { - undefined4 uVar1; - undefined buffer [8448]; - - uVar1 = decompressdata(source,target,(int)buffer); - return uVar1; + u8 *puVar1; + u8 buffer [8448]; + + puVar1 = decompressdata((u8 *)source,target,buffer); + return puVar1; } -undefined4 proc_7F0B5FAC(int param_1,int param_2,int param_3) +int proc_7F0B5FAC(int param_1,int param_2,int param_3) { - int iVar1; - undefined4 uVar2; - int source; - uint uVar3; - - iVar1 = param_1 * 0x50; - uVar3 = *(int *)(&room_information + iVar1) + 0xfU & 0xfffffff0; - if (param_3 < (int)(uVar3 + 0x20)) { - uVar2 = 0xffffffff; - } - else { - source = (param_3 - uVar3) + param_2; - load_bg_bytes_at_offset_to_membank - ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,source, - (int)ptr_bgdata_room_fileposition_list[param_1].xpos + -0xf000000,uVar3); - uVar2 = decompressdata_with_8448buffer(source,param_2); - *(undefined4 *)(&DAT_80041430 + iVar1) = uVar2; - *(int *)(&dword_80041418 + iVar1) = param_2; - } - return uVar2; + int iVar1; + char *src; + uint len; + + len = roominformationblock[param_1].csize_point_index_binary + 0xfU & 0xfffffff0; + if (param_3 < (int)(len + 0x20)) { + iVar1 = -1; + } + else { + src = (char *)((param_3 - len) + param_2); + load_bg_bytes_at_offset_to_membank + ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,src, + (int)ptr_bgdata_room_fileposition_list[param_1].xpos + -0xf000000,len); + iVar1 = decompressdata_with_8448buffer((int)src,param_2); + roominformationblock[param_1].usize_point_index_binary = iVar1; + *(int *)&roominformationblock[param_1].ptr_point_index = param_2; + } + return iVar1; } @@ -126658,35 +125815,33 @@ undefined4 proc_7F0B5FAC(int param_1,int param_2,int param_3) uint * proc_7F0B609C(int param_1,uint *param_2,int param_3) { - int iVar1; - uint *puVar2; - int source; - uint *puVar3; - uint uVar4; - - iVar1 = param_1 * 0x50; - uVar4 = *(int *)(&DAT_80041428 + iVar1) + 0xfU & 0xfffffff0; - if (param_3 < (int)(uVar4 + 0x20)) { - puVar3 = (uint *)0xffffffff; - } - else { - source = (param_3 - uVar4) + (int)param_2; - load_bg_bytes_at_offset_to_membank - ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,source, - (int)ptr_bgdata_room_fileposition_list[param_1].ypos + -0xf000000,uVar4); - puVar3 = (uint *)decompressdata_with_8448buffer(source,param_2); - puVar2 = (uint *)((param_3 - (int)puVar3) + (int)param_2); - proc_7F0CE794((int)param_2,(int)puVar2,(int)puVar3); - proc_7F0BC4C4((short)param_1); - puVar2 = process_microcode_sort_display_modes_expand_image_calls - (puVar2,(int)puVar3,param_2,NULL); - if ((int)puVar3 < (int)puVar2) { - puVar3 = puVar2; + uint *puVar1; + char *src; + uint *puVar2; + uint len; + + len = roominformationblock[param_1].csize_primary_DL_binary + 0xfU & 0xfffffff0; + if (param_3 < (int)(len + 0x20)) { + puVar2 = (uint *)0xffffffff; } - *(uint **)(&DAT_8004141c + iVar1) = param_2; - *(uint **)(iVar1 + -0x7ffbebcc) = puVar3; - } - return puVar3; + else { + src = (char *)((param_3 - len) + (int)param_2); + load_bg_bytes_at_offset_to_membank + ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,src, + (int)ptr_bgdata_room_fileposition_list[param_1].ypos + -0xf000000,len); + puVar2 = (uint *)decompressdata_with_8448buffer((int)src,param_2); + puVar1 = (uint *)((param_3 - (int)puVar2) + (int)param_2); + proc_7F0CE794((int)param_2,(int)puVar1,(int)puVar2); + proc_7F0BC4C4((short)param_1); + puVar1 = process_microcode_sort_display_modes_expand_image_calls + (puVar1,(int)puVar2,param_2,NULL); + if ((int)puVar2 < (int)puVar1) { + puVar2 = puVar1; + } + *(uint **)&roominformationblock[param_1].ptr_expanded_mapping_info = param_2; + *(uint **)&roominformationblock[param_1].usize_primary_DL_binary = puVar2; + } + return puVar2; } @@ -126694,34 +125849,32 @@ uint * proc_7F0B609C(int param_1,uint *param_2,int param_3) uint * proc_7F0B61DC(int param_1,uint *param_2,int param_3) { - int iVar1; - uint *puVar2; - int source; - uint *puVar3; - uint uVar4; - - iVar1 = param_1 * 0x50; - uVar4 = *(int *)(&DAT_8004142c + iVar1) + 0xfU & 0xfffffff0; - if (param_3 < (int)(uVar4 + 0x20)) { - puVar3 = (uint *)0xffffffff; - } - else { - source = (param_3 - uVar4) + (int)param_2; - load_bg_bytes_at_offset_to_membank - ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,source, - (int)ptr_bgdata_room_fileposition_list[param_1].zpos + -0xf000000,uVar4); - puVar3 = (uint *)decompressdata_with_8448buffer(source,param_2); - puVar2 = (uint *)((param_3 - (int)puVar3) + (int)param_2); - proc_7F0CE794((int)param_2,(int)puVar2,(int)puVar3); - puVar2 = process_microcode_sort_display_modes_expand_image_calls - (puVar2,(int)puVar3,param_2,NULL); - if ((int)puVar3 < (int)puVar2) { - puVar3 = puVar2; + uint *puVar1; + char *src; + uint *puVar2; + uint len; + + len = roominformationblock[param_1].csize_secondary_DL_binary + 0xfU & 0xfffffff0; + if (param_3 < (int)(len + 0x20)) { + puVar2 = (uint *)0xffffffff; } - *(uint **)(&DAT_80041420 + iVar1) = param_2; - *(uint **)(iVar1 + -0x7ffbebc8) = puVar3; - } - return puVar3; + else { + src = (char *)((param_3 - len) + (int)param_2); + load_bg_bytes_at_offset_to_membank + ((byte *)levelinfostruct[levelentry_index].bg_seg_filename,src, + (int)ptr_bgdata_room_fileposition_list[param_1].zpos + -0xf000000,len); + puVar2 = (uint *)decompressdata_with_8448buffer((int)src,param_2); + puVar1 = (uint *)((param_3 - (int)puVar2) + (int)param_2); + proc_7F0CE794((int)param_2,(int)puVar1,(int)puVar2); + puVar1 = process_microcode_sort_display_modes_expand_image_calls + (puVar1,(int)puVar2,param_2,NULL); + if ((int)puVar2 < (int)puVar1) { + puVar2 = puVar1; + } + *(uint **)&roominformationblock[param_1].ptr_secondary_expanded_mapping_info = param_2; + *(uint **)&roominformationblock[param_1].usize_secondary_DL_binary = puVar2; + } + return puVar2; } @@ -126729,14 +125882,14 @@ uint * proc_7F0B61DC(int param_1,uint *param_2,int param_3) ulonglong proc_7F0B6314(int param_1) { - char cVar1; - - cVar1 = (&DAT_80041416)[param_1 * 0x50]; - (&DAT_80041449)[param_1 * 0x50] = 1; - if (cVar1 == '\0') { - proc_7F0B6368(param_1); - } - return (ulonglong)(cVar1 == '\0'); + bool bVar1; + + bVar1 = roominformationblock[param_1].model_bin_loaded == '\0'; + roominformationblock[param_1].field_35 = '\x01'; + if (bVar1) { + proc_7F0B6368(param_1); + } + return (ulonglong)bVar1; } @@ -126744,84 +125897,88 @@ ulonglong proc_7F0B6314(int param_1) void proc_7F0B6368(int param_1) { - int *piVar1; - int iVar2; - int iVar3; - int iVar4; - uint *puVar5; - int iVar6; - ulonglong uVar7; - uint local_4; - - if ((param_1 < (int)max_num_rooms) && (iVar2 = param_1 * 0x50, (&DAT_80041416)[iVar2] == '\0')) { - local_4 = *(uint *)(&DAT_8004143c + iVar2); - if ((int)local_4 < 1) { - local_4 = mem_related_0(); + int *piVar1; + int addr; + int iVar2; + uint *puVar3; + int iVar4; + uint maxsize; + uint local_4; + + if ((param_1 < (int)max_num_rooms) && (roominformationblock[param_1].model_bin_loaded == '\0')) + { + local_4 = roominformationblock[param_1].cur_room_totalsize; + if ((int)local_4 < 1) { + local_4 = mem_related_0(); + } + else { + iVar4 = get_debug_joy2detailedit_flag(); + if (iVar4 != 0) { + local_4 += 0x400; + } + } + addr = mem_related_something_find_first(local_4); + iVar4 = 0; + if (addr != 0) { + if (roominformationblock[param_1].csize_point_index_binary == 0) { + roominformationblock[param_1].ptr_point_index = NULL; + roominformationblock[param_1].usize_point_index_binary = 0; + } + else { + iVar2 = proc_7F0B5FAC(param_1,addr,local_4); + iVar4 = 0; + if (-1 < iVar2) { + proc_7F0BB978((longlong)param_1); + iVar4 = iVar2; + } + } + if ((roominformationblock[param_1].csize_primary_DL_binary != 0) && + (puVar3 = proc_7F0B609C(param_1,(uint *)(addr + iVar4),local_4 - iVar4), + -1 < (int)puVar3)) { + iVar4 += (int)puVar3; + } + if (roominformationblock[param_1].csize_secondary_DL_binary == 0) { + roominformationblock[param_1].ptr_secondary_expanded_mapping_info = NULL; + } + else { + puVar3 = proc_7F0B61DC(param_1,(uint *)(addr + iVar4),local_4 - iVar4); + if (0 < (int)puVar3) { + iVar4 += (int)puVar3; + } + } + maxsize = iVar4 + 0x20U & 0xfffffff0; + roominformationblock[param_1].cur_room_totalsize = maxsize; + roominformationblock[param_1].model_bin_loaded = '\x01'; + if (local_4 != maxsize) { + mem_related_1(addr,local_4,maxsize); + } + if (sky_enabled == 0) { + proc_7F0BA640((int *)roominformationblock[param_1].ptr_expanded_mapping_info, + (int *)(roominformationblock[param_1].usize_primary_DL_binary + + (int)roominformationblock[param_1].ptr_expanded_mapping_info),6 + ); + piVar1 = (int *)roominformationblock[param_1].ptr_secondary_expanded_mapping_info; + if (piVar1 != NULL) { + proc_7F0BA640(piVar1,(int *)(roominformationblock[param_1]. + usize_secondary_DL_binary + (int)piVar1),7); + } + } + else { + proc_7F0BA640((int *)roominformationblock[param_1].ptr_expanded_mapping_info, + (int *)(roominformationblock[param_1].usize_primary_DL_binary + + (int)roominformationblock[param_1].ptr_expanded_mapping_info),1 + ); + piVar1 = (int *)roominformationblock[param_1].ptr_secondary_expanded_mapping_info; + if (piVar1 != NULL) { + proc_7F0BA640(piVar1,(int *)(roominformationblock[param_1]. + usize_secondary_DL_binary + (int)piVar1),5); + } + } + proc_7F0B6994(param_1); + generate_room_load_string(); + } } - else { - iVar6 = get_debug_joy2detailedit_flag(); - if (iVar6 != 0) { - local_4 += 0x400; - } - } - iVar3 = mem_related_something_find_first(local_4); - iVar6 = 0; - if (iVar3 != 0) { - if (*(int *)(&room_information + iVar2) == 0) { - *(undefined4 *)(&dword_80041418 + iVar2) = 0; - *(undefined4 *)(&DAT_80041430 + iVar2) = 0; - } - else { - iVar4 = proc_7F0B5FAC(param_1,iVar3,local_4); - iVar6 = 0; - if (-1 < iVar4) { - proc_7F0BB978((longlong)param_1); - iVar6 = iVar4; - } - } - if ((*(int *)(&DAT_80041428 + iVar2) != 0) && - (puVar5 = proc_7F0B609C(param_1,(uint *)(iVar3 + iVar6),local_4 - iVar6), -1 < (int)puVar5) - ) { - iVar6 += (int)puVar5; - } - if (*(int *)(&DAT_8004142c + iVar2) == 0) { - *(undefined4 *)(&DAT_80041420 + iVar2) = 0; - } - else { - puVar5 = proc_7F0B61DC(param_1,(uint *)(iVar3 + iVar6),local_4 - iVar6); - if (0 < (int)puVar5) { - iVar6 += (int)puVar5; - } - } - uVar7 = (longlong)(iVar6 + 0x20) & 0xfffffffffffffff0; - *(int *)(&DAT_8004143c + iVar2) = (int)uVar7; - (&DAT_80041416)[iVar2] = 1; - if ((longlong)(int)local_4 != uVar7) { - mem_related_1(iVar3,(longlong)(int)local_4,uVar7); - } - if (sky_enabled == 0) { - proc_7F0BA640(*(int **)(&DAT_8004141c + iVar2), - (int *)(*(int *)(iVar2 + -0x7ffbebcc) + (int)*(int **)(&DAT_8004141c + iVar2)) - ,6); - piVar1 = *(int **)(&DAT_80041420 + iVar2); - if (piVar1 != NULL) { - proc_7F0BA640(piVar1,(int *)(*(int *)(iVar2 + -0x7ffbebc8) + (int)piVar1),7); - } - } - else { - proc_7F0BA640(*(int **)(&DAT_8004141c + iVar2), - (int *)(*(int *)(iVar2 + -0x7ffbebcc) + (int)*(int **)(&DAT_8004141c + iVar2)) - ,1); - piVar1 = *(int **)(&DAT_80041420 + iVar2); - if (piVar1 != NULL) { - proc_7F0BA640(piVar1,(int *)(*(int *)(iVar2 + -0x7ffbebc8) + (int)piVar1),5); - } - } - proc_7F0B6994(param_1); - generate_room_load_string(); - } - } - return; + return; } @@ -126829,35 +125986,36 @@ void proc_7F0B6368(int param_1) void proc_7F0B65C4(int param_1) { - uint uVar1; - int iVar2; - - iVar2 = param_1 * 0x50; - if ((&DAT_80041440)[param_1 * 0x14] == 0) { - uVar1 = *(uint *)(&DAT_8004143c + iVar2); - } - else { - mem_related_model_room_buffers_0 - ((&DAT_80041440)[param_1 * 0x14], - (int)*(short *)(&DAT_80041444 + iVar2) * 0x1c + 0xfU & 0xfffffff0); - (&DAT_80041440)[param_1 * 0x14] = 0; - uVar1 = *(uint *)(&DAT_8004143c + iVar2); - } - if (0 < (int)uVar1) { - if (*(uint *)(&dword_80041418 + iVar2) == 0) { - mem_related_model_room_buffers_0(*(uint *)(&DAT_8004141c + iVar2),uVar1); - *(undefined4 *)(&dword_80041418 + iVar2) = 0; + u32 size; + + if (roominformationblock[param_1].ptr_unique_collision_points == NULL) { + size = roominformationblock[param_1].cur_room_totalsize; } else { - mem_related_model_room_buffers_0(*(uint *)(&dword_80041418 + iVar2),uVar1); - *(undefined4 *)(&dword_80041418 + iVar2) = 0; + mem_related_model_room_buffers_0 + ((u32)roominformationblock[param_1].ptr_unique_collision_points, + (int)*(short *)&roominformationblock[param_1].bitflags3 * 0x1c + 0xfU & + 0xfffffff0); + roominformationblock[param_1].ptr_unique_collision_points = NULL; + size = roominformationblock[param_1].cur_room_totalsize; } - *(undefined4 *)(&DAT_8004141c + iVar2) = 0; - *(undefined4 *)(&DAT_80041420 + iVar2) = 0; - } - (&DAT_80041416)[iVar2] = 0; - generate_room_load_string(); - return; + if (0 < (int)size) { + if (roominformationblock[param_1].ptr_point_index == NULL) { + mem_related_model_room_buffers_0 + ((u32)roominformationblock[param_1].ptr_expanded_mapping_info,size); + roominformationblock[param_1].ptr_point_index = NULL; + } + else { + mem_related_model_room_buffers_0 + ((u32)roominformationblock[param_1].ptr_point_index,size); + roominformationblock[param_1].ptr_point_index = NULL; + } + roominformationblock[param_1].ptr_expanded_mapping_info = NULL; + roominformationblock[param_1].ptr_secondary_expanded_mapping_info = NULL; + } + roominformationblock[param_1].model_bin_loaded = '\0'; + generate_room_load_string(); + return; } @@ -126865,24 +126023,24 @@ void proc_7F0B65C4(int param_1) void unload_rooms(void) { - u32 uVar1; - undefined1 *puVar2; - int iVar3; - - iVar3 = 1; - if (1 < (int)max_num_rooms) { - puVar2 = &DAT_80041464; - uVar1 = max_num_rooms; - do { - if (puVar2[2] != '\0') { - proc_7F0B65C4(iVar3); + u32 uVar1; + int iVar2; + int iVar3; + + iVar3 = 1; + if (1 < (int)max_num_rooms) { + iVar2 = -0x7ffbeb9c; uVar1 = max_num_rooms; - } - iVar3 += 1; - puVar2 = puVar2 + 0x50; - } while (iVar3 < (int)uVar1); - } - return; + do { + if (*(char *)(iVar2 + 2) != '\0') { + proc_7F0B65C4(iVar3); + uVar1 = max_num_rooms; + } + iVar3 += 1; + iVar2 += 0x50; + } while (iVar3 < (int)uVar1); + } + return; } @@ -126890,33 +126048,33 @@ void unload_rooms(void) void proc_7F0B66E8(void) { - char cVar1; - u32 maxrooms; - undefined1 *puVar2; - int room; - - room = 1; - if (1 < (int)max_num_rooms) { - puVar2 = &DAT_80041464; - maxrooms = max_num_rooms; - do { - if (puVar2[0x35] == '\0') { - cVar1 = puVar2[2]; - if (cVar1 == '\x04') { - proc_7F0B65C4(room); - maxrooms = max_num_rooms; - } - else { - if (cVar1 != '\0') { - puVar2[2] = cVar1 + '\x01'; - } - } - } - room += 1; - puVar2 = puVar2 + 0x50; - } while (room < (int)maxrooms); - } - return; + char cVar1; + u32 maxrooms; + int iVar2; + int room; + + room = 1; + if (1 < (int)max_num_rooms) { + iVar2 = -0x7ffbeb9c; + maxrooms = max_num_rooms; + do { + if (*(char *)(iVar2 + 0x35) == '\0') { + cVar1 = *(char *)(iVar2 + 2); + if (cVar1 == '\x04') { + proc_7F0B65C4(room); + maxrooms = max_num_rooms; + } + else { + if (cVar1 != '\0') { + *(char *)(iVar2 + 2) = cVar1 + '\x01'; + } + } + } + room += 1; + iVar2 += 0x50; + } while (room < (int)maxrooms); + } + return; } @@ -126927,29 +126085,28 @@ void proc_7F0B66E8(void) undefined4 * proc_7F0B677C(undefined4 *param_1,int param_2) { - int iVar1; - char cVar3; - undefined4 *puVar2; - - if ((param_2 < (int)max_num_rooms) && ((dword_8004485C != 0 || (DAT_80044858 == param_2 % 10)))) { - iVar1 = param_2 * 0x50; - cVar3 = (&DAT_80041416)[iVar1]; - if ((cVar3 == '\0') && (0 < dword_800442F8)) { - dword_800442F8 = dword_800442F8 + -1; - proc_7F0B6368(param_2); - cVar3 = (&DAT_80041416)[iVar1]; + char cVar2; + undefined4 *puVar1; + + if ((param_2 < (int)max_num_rooms) && ((dword_8004485C != 0 || (DAT_80044858 == param_2 % 10)))) + { + cVar2 = roominformationblock[param_2].model_bin_loaded; + if ((cVar2 == '\0') && (0 < dword_800442F8)) { + dword_800442F8 = dword_800442F8 + -1; + proc_7F0B6368(param_2); + cVar2 = roominformationblock[param_2].model_bin_loaded; + } + if (cVar2 != '\0') { + puVar1 = proc_7F0BC9C4(param_1,param_2); + *puVar1 = 0xbc003806; + puVar1[1] = (int)roominformationblock[param_2].ptr_point_index + -0x80000000; + puVar1[2] = 0x6000000; + param_1 = puVar1 + 4; + puVar1[3] = (int)roominformationblock[param_2].ptr_expanded_mapping_info + -0x80000000; + roominformationblock[param_2].model_bin_loaded = '\x01'; + } } - if (cVar3 != '\0') { - puVar2 = proc_7F0BC9C4(param_1,param_2); - *puVar2 = 0xbc003806; - puVar2[1] = *(int *)(&dword_80041418 + iVar1) + -0x80000000; - puVar2[2] = 0x6000000; - param_1 = puVar2 + 4; - puVar2[3] = *(int *)(&DAT_8004141c + iVar1) + -0x80000000; - (&DAT_80041416)[iVar1] = 1; - } - } - return param_1; + return param_1; } @@ -126957,35 +126114,35 @@ undefined4 * proc_7F0B677C(undefined4 *param_1,int param_2) undefined4 * proc_7F0B6898(undefined4 *param_1,int param_2) { - char cVar1; - int iVar2; - undefined4 *puVar3; - - if ((param_2 < (int)max_num_rooms) && - (iVar2 = param_2 * 0x50, *(int *)(&DAT_80041420 + iVar2) != 0)) { - if (dword_8004485C == 0) { - if (DAT_80044858 != param_2 % 10) { - return param_1; - } - cVar1 = (&DAT_80041416)[iVar2]; + char cVar1; + undefined4 *puVar2; + + if ((param_2 < (int)max_num_rooms) && + (roominformationblock[param_2].ptr_secondary_expanded_mapping_info != NULL)) { + if (dword_8004485C == 0) { + if (DAT_80044858 != param_2 % 10) { + return param_1; + } + cVar1 = roominformationblock[param_2].model_bin_loaded; + } + else { + cVar1 = roominformationblock[param_2].model_bin_loaded; + } + if (cVar1 == '\0') { + proc_7F0B6368(param_2); + } + else { + puVar2 = proc_7F0BC9C4(param_1,param_2); + *puVar2 = 0xbc003806; + puVar2[1] = (int)roominformationblock[param_2].ptr_point_index + -0x80000000; + puVar2[2] = 0x6000000; + param_1 = puVar2 + 4; + puVar2[3] = (int)roominformationblock[param_2].ptr_secondary_expanded_mapping_info + + -0x80000000; + roominformationblock[param_2].model_bin_loaded = '\x01'; + } } - else { - cVar1 = (&DAT_80041416)[iVar2]; - } - if (cVar1 == '\0') { - proc_7F0B6368(param_2); - } - else { - puVar3 = proc_7F0BC9C4(param_1,param_2); - *puVar3 = 0xbc003806; - puVar3[1] = *(int *)(&dword_80041418 + iVar2) + -0x80000000; - puVar3[2] = 0x6000000; - param_1 = puVar3 + 4; - puVar3[3] = *(int *)(&DAT_80041420 + iVar2) + -0x80000000; - (&DAT_80041416)[iVar2] = 1; - } - } - return param_1; + return param_1; } @@ -126993,151 +126150,151 @@ undefined4 * proc_7F0B6898(undefined4 *param_1,int param_2) void proc_7F0B6994(int param_1) { - byte bVar1; - short sVar2; - int iVar3; - int iVar4; - char cVar6; - undefined4 *puVar5; - short *psVar7; - short *psVar8; - int iVar9; - char *pcVar10; - char *pcVar11; - int iVar12; - short sVar13; - - iVar12 = param_1 * 0x50; - if ((&DAT_80041440)[param_1 * 0x14] == 0) { - iVar3 = *(int *)(&dword_80041418 + iVar12); - pcVar11 = *(char **)(&DAT_8004141c + iVar12); - iVar9 = 0; - if (*pcVar11 != -0x48) { - cVar6 = *pcVar11; - pcVar10 = pcVar11; - do { - if (cVar6 == '\x04') { - iVar9 += 1; - cVar6 = pcVar10[8]; - } - else { - cVar6 = pcVar10[8]; - } - pcVar10 = pcVar10 + 8; - } while (cVar6 != -0x48); - } - iVar4 = mem_related_something_find_first(iVar9 * 0x1c + 0xfU & 0xfffffff0); - if (iVar4 != 0) { - (&DAT_80041440)[param_1 * 0x14] = iVar4; - *(short *)(&DAT_80041444 + iVar12) = (short)iVar9; - iVar12 = 0; - sVar13 = 0; - if (*pcVar11 != -0x48) { - cVar6 = *pcVar11; - do { - if (cVar6 == '\x04') { - psVar7 = (short *)(iVar4 + iVar12 * 0x1c); - *psVar7 = sVar13; - iVar9 = 0; - puVar5 = (undefined4 *)(iVar4 + iVar12 * 0x1c); + byte bVar1; + short sVar2; + void *pvVar3; + void *pvVar4; + char cVar6; + undefined4 *puVar5; + short *psVar7; + short *psVar8; + int iVar9; + char *pcVar10; + char *pcVar11; + int iVar12; + short sVar13; + + if (roominformationblock[param_1].ptr_unique_collision_points == NULL) { + pvVar3 = roominformationblock[param_1].ptr_point_index; + pcVar11 = (char *)roominformationblock[param_1].ptr_expanded_mapping_info; + iVar12 = 0; + if (*pcVar11 != -0x48) { + cVar6 = *pcVar11; + pcVar10 = pcVar11; do { - iVar9 += 1; - puVar5[1] = 0x7fff; - puVar5[4] = 0xffff8000; - puVar5 = puVar5 + 1; - } while (iVar9 < 3); - bVar1 = pcVar11[1]; - iVar9 = 0; - psVar8 = (short *)((*(uint *)(pcVar11 + 4) & 0xffffff) + iVar3); - if ((uint)(bVar1 >> 4) != 0xffffffff) { - do { - iVar9 += 1; - if ((longlong)*psVar8 < (longlong)*(int *)(psVar7 + 2)) { - *(int *)(psVar7 + 2) = (int)*psVar8; - sVar2 = psVar8[1]; + if (cVar6 == '\x04') { + iVar12 += 1; + cVar6 = pcVar10[8]; } else { - sVar2 = psVar8[1]; + cVar6 = pcVar10[8]; } - if ((longlong)sVar2 < (longlong)*(int *)(psVar7 + 4)) { - *(int *)(psVar7 + 4) = (int)sVar2; - sVar2 = psVar8[2]; - } - else { - sVar2 = psVar8[2]; - } - if ((longlong)sVar2 < (longlong)*(int *)(psVar7 + 6)) { - *(int *)(psVar7 + 6) = (int)sVar2; - sVar2 = *psVar8; - } - else { - sVar2 = *psVar8; - } - if ((longlong)*(int *)(psVar7 + 8) < (longlong)sVar2) { - *(int *)(psVar7 + 8) = (int)sVar2; - sVar2 = psVar8[1]; - } - else { - sVar2 = psVar8[1]; - } - if ((longlong)*(int *)(psVar7 + 10) < (longlong)sVar2) { - *(int *)(psVar7 + 10) = (int)sVar2; - sVar2 = psVar8[2]; - } - else { - sVar2 = psVar8[2]; - } - if ((longlong)*(int *)(psVar7 + 0xc) < (longlong)sVar2) { - *(int *)(psVar7 + 0xc) = (int)sVar2; - } - psVar8 = psVar8 + 8; - } while (iVar9 != (uint)(bVar1 >> 4) + 1); + pcVar10 = pcVar10 + 8; + } while (cVar6 != -0x48); + } + pvVar4 = (void *)mem_related_something_find_first(iVar12 * 0x1c + 0xfU & 0xfffffff0); + if (pvVar4 != NULL) { + roominformationblock[param_1].ptr_unique_collision_points = pvVar4; + *(short *)&roominformationblock[param_1].bitflags3 = (short)iVar12; + iVar12 = 0; + sVar13 = 0; + if (*pcVar11 != -0x48) { + cVar6 = *pcVar11; + do { + if (cVar6 == '\x04') { + psVar7 = (short *)((int)pvVar4 + iVar12 * 0x1c); + *psVar7 = sVar13; + iVar9 = 0; + puVar5 = (undefined4 *)((int)pvVar4 + iVar12 * 0x1c); + do { + iVar9 += 1; + puVar5[1] = 0x7fff; + puVar5[4] = 0xffff8000; + puVar5 = puVar5 + 1; + } while (iVar9 < 3); + bVar1 = pcVar11[1]; + iVar9 = 0; + psVar8 = (short *)((*(uint *)(pcVar11 + 4) & 0xffffff) + (int)pvVar3); + if ((uint)(bVar1 >> 4) != 0xffffffff) { + do { + iVar9 += 1; + if ((longlong)*psVar8 < (longlong)*(int *)(psVar7 + 2)) { + *(int *)(psVar7 + 2) = (int)*psVar8; + sVar2 = psVar8[1]; + } + else { + sVar2 = psVar8[1]; + } + if ((longlong)sVar2 < (longlong)*(int *)(psVar7 + 4)) { + *(int *)(psVar7 + 4) = (int)sVar2; + sVar2 = psVar8[2]; + } + else { + sVar2 = psVar8[2]; + } + if ((longlong)sVar2 < (longlong)*(int *)(psVar7 + 6)) { + *(int *)(psVar7 + 6) = (int)sVar2; + sVar2 = *psVar8; + } + else { + sVar2 = *psVar8; + } + if ((longlong)*(int *)(psVar7 + 8) < (longlong)sVar2) { + *(int *)(psVar7 + 8) = (int)sVar2; + sVar2 = psVar8[1]; + } + else { + sVar2 = psVar8[1]; + } + if ((longlong)*(int *)(psVar7 + 10) < (longlong)sVar2) { + *(int *)(psVar7 + 10) = (int)sVar2; + sVar2 = psVar8[2]; + } + else { + sVar2 = psVar8[2]; + } + if ((longlong)*(int *)(psVar7 + 0xc) < (longlong)sVar2) { + *(int *)(psVar7 + 0xc) = (int)sVar2; + } + psVar8 = psVar8 + 8; + } while (iVar9 != (uint)(bVar1 >> 4) + 1); + } + if (*(int *)(psVar7 + 2) == *(int *)(psVar7 + 8)) { + *(int *)(psVar7 + 8) = *(int *)(psVar7 + 8) + 1; + iVar9 = *(int *)(psVar7 + 10); + } + else { + iVar9 = *(int *)(psVar7 + 10); + } + if (*(int *)(psVar7 + 4) == iVar9) { + *(int *)(psVar7 + 10) = iVar9 + 1; + iVar9 = *(int *)(psVar7 + 6); + } + else { + iVar9 = *(int *)(psVar7 + 6); + } + if (iVar9 == *(int *)(psVar7 + 0xc)) { + *(int *)(psVar7 + 0xc) = *(int *)(psVar7 + 0xc) + 1; + iVar9 = *(int *)(psVar7 + 6); + } + iVar12 += 1; + *(int *)(psVar7 + 2) = + *(int *)(psVar7 + 2) + + (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPointTableBin; + *(int *)(psVar7 + 4) = + *(int *)(psVar7 + 4) + + (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPriMappingBin; + *(int *)(psVar7 + 6) = + iVar9 + (int)(float)ptr_bgdata_room_fileposition_list[param_1]. + pSecMappingBin; + *(int *)(psVar7 + 8) = + *(int *)(psVar7 + 8) + + (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPointTableBin; + *(int *)(psVar7 + 10) = + *(int *)(psVar7 + 10) + + (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPriMappingBin; + *(int *)(psVar7 + 0xc) = + *(int *)(psVar7 + 0xc) + + (int)(float)ptr_bgdata_room_fileposition_list[param_1].pSecMappingBin; + } + cVar6 = pcVar11[8]; + sVar13 += 1; + pcVar11 = pcVar11 + 8; + } while (cVar6 != -0x48); } - if (*(int *)(psVar7 + 2) == *(int *)(psVar7 + 8)) { - *(int *)(psVar7 + 8) = *(int *)(psVar7 + 8) + 1; - iVar9 = *(int *)(psVar7 + 10); - } - else { - iVar9 = *(int *)(psVar7 + 10); - } - if (*(int *)(psVar7 + 4) == iVar9) { - *(int *)(psVar7 + 10) = iVar9 + 1; - iVar9 = *(int *)(psVar7 + 6); - } - else { - iVar9 = *(int *)(psVar7 + 6); - } - if (iVar9 == *(int *)(psVar7 + 0xc)) { - *(int *)(psVar7 + 0xc) = *(int *)(psVar7 + 0xc) + 1; - iVar9 = *(int *)(psVar7 + 6); - } - iVar12 += 1; - *(int *)(psVar7 + 2) = - *(int *)(psVar7 + 2) + - (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPointTableBin; - *(int *)(psVar7 + 4) = - *(int *)(psVar7 + 4) + - (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPriMappingBin; - *(int *)(psVar7 + 6) = - iVar9 + (int)(float)ptr_bgdata_room_fileposition_list[param_1].pSecMappingBin; - *(int *)(psVar7 + 8) = - *(int *)(psVar7 + 8) + - (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPointTableBin; - *(int *)(psVar7 + 10) = - *(int *)(psVar7 + 10) + - (int)(float)ptr_bgdata_room_fileposition_list[param_1].pPriMappingBin; - *(int *)(psVar7 + 0xc) = - *(int *)(psVar7 + 0xc) + - (int)(float)ptr_bgdata_room_fileposition_list[param_1].pSecMappingBin; - } - cVar6 = pcVar11[8]; - sVar13 += 1; - pcVar11 = pcVar11 + 8; - } while (cVar6 != -0x48); - } + } } - } - return; + return; } @@ -127145,110 +126302,110 @@ void proc_7F0B6994(int param_1) undefined8 proc_7F0B6CEC(float *param_1,float *param_2,int *param_3,int *param_4) { - undefined8 uVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float local_74; - float local_48; - float local_44; - - fVar6 = *param_2; - fVar5 = (float)*param_4 - *param_1; - fVar4 = (float)*param_3 - *param_1; - if (fVar6 < 0.00000000) { - fVar6 = -fVar6; - fVar4 = -fVar4; - fVar5 = -fVar5; - } - if ((0.00000000 <= fVar4) || (0.00000000 <= fVar5)) { - if (fVar5 < fVar4) { - fVar2 = param_1[1]; - fVar7 = fVar5; - } - else { - fVar2 = param_1[1]; - fVar7 = fVar4; - fVar4 = fVar5; - } - fVar3 = param_2[1]; - fVar5 = (float)param_4[1] - fVar2; - fVar2 = (float)param_3[1] - fVar2; - if (fVar3 < 0.00000000) { - fVar3 = -fVar3; - fVar2 = -fVar2; - fVar5 = -fVar5; - } - if ((0.00000000 <= fVar2) || (0.00000000 <= fVar5)) { - local_44 = fVar5; - if (fVar2 <= fVar5) { - local_44 = fVar2; - fVar2 = fVar5; - } - if (local_44 * fVar6 < fVar7 * fVar3) { - local_48 = fVar6; - local_44 = fVar7; - if (fVar2 * fVar6 < fVar7 * fVar3) { - return 0; - } - } - else { - local_48 = fVar3; - if (fVar4 * fVar3 < local_44 * fVar6) { - return 0; - } - } - local_74 = fVar4 * fVar3; - if (fVar2 * fVar6 <= local_74) { - fVar4 = fVar2; - fVar6 = fVar3; - } - fVar2 = param_2[2]; - fVar7 = (float)param_3[2] - param_1[2]; - fVar5 = (float)param_4[2] - param_1[2]; - if (fVar2 < 0.00000000) { - fVar2 = -fVar2; - fVar7 = -fVar7; + undefined8 uVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float local_74; + float local_48; + float local_44; + + fVar6 = *param_2; + fVar5 = (float)*param_4 - *param_1; + fVar4 = (float)*param_3 - *param_1; + if (fVar6 < 0.00000000) { + fVar6 = -fVar6; + fVar4 = -fVar4; fVar5 = -fVar5; - } - if ((0.00000000 <= fVar7) || (0.00000000 <= fVar5)) { - fVar3 = fVar7; - if (fVar7 <= fVar5) { - fVar3 = fVar5; - fVar5 = fVar7; - } - if (local_44 * fVar2 < fVar5 * local_48) { - if (fVar4 * fVar2 < fVar5 * fVar6) { - uVar1 = 0; - } - else { - uVar1 = 1; - } + } + if ((0.00000000 <= fVar4) || (0.00000000 <= fVar5)) { + if (fVar5 < fVar4) { + fVar2 = param_1[1]; + fVar7 = fVar5; } else { - if (fVar3 * local_48 < local_44 * fVar2) { - uVar1 = 0; - } - else { - uVar1 = 1; - } + fVar2 = param_1[1]; + fVar7 = fVar4; + fVar4 = fVar5; + } + fVar3 = param_2[1]; + fVar5 = (float)param_4[1] - fVar2; + fVar2 = (float)param_3[1] - fVar2; + if (fVar3 < 0.00000000) { + fVar3 = -fVar3; + fVar2 = -fVar2; + fVar5 = -fVar5; + } + if ((0.00000000 <= fVar2) || (0.00000000 <= fVar5)) { + local_44 = fVar5; + if (fVar2 <= fVar5) { + local_44 = fVar2; + fVar2 = fVar5; + } + if (local_44 * fVar6 < fVar7 * fVar3) { + local_48 = fVar6; + local_44 = fVar7; + if (fVar2 * fVar6 < fVar7 * fVar3) { + return 0; + } + } + else { + local_48 = fVar3; + if (fVar4 * fVar3 < local_44 * fVar6) { + return 0; + } + } + local_74 = fVar4 * fVar3; + if (fVar2 * fVar6 <= local_74) { + fVar4 = fVar2; + fVar6 = fVar3; + } + fVar2 = param_2[2]; + fVar7 = (float)param_3[2] - param_1[2]; + fVar5 = (float)param_4[2] - param_1[2]; + if (fVar2 < 0.00000000) { + fVar2 = -fVar2; + fVar7 = -fVar7; + fVar5 = -fVar5; + } + if ((0.00000000 <= fVar7) || (0.00000000 <= fVar5)) { + fVar3 = fVar7; + if (fVar7 <= fVar5) { + fVar3 = fVar5; + fVar5 = fVar7; + } + if (local_44 * fVar2 < fVar5 * local_48) { + if (fVar4 * fVar2 < fVar5 * fVar6) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + else { + if (fVar3 * local_48 < local_44 * fVar2) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } @@ -127258,364 +126415,358 @@ proc_7F0B7010(float *param_1,float *param_2,float *param_3,short *param_4,int pa ) { - char cVar1; - short sVar2; - int iVar3; - longlong lVar4; - bg_room_data *pbVar5; - uint *puVar6; - uint *puVar7; - short *psVar8; - int *piVar9; - ulonglong imageID; - int iVar10; - int iVar11; - int iVar12; - uint *puVar13; - uint *puVar14; - uint uVar15; - int iStack192; - int iStack188; - int iStack184; - int iStack180; - int iStack176; - int iStack172; - int iStack164; - int iStack160; - int iStack156; - int aiStack152 [8]; - int iStack120; - int iStack116; - int iStack112; - int iStack108; - int iStack104; - int iStack100; - int iStack92; - int iStack88; - int iStack84; - int aiStack80 [2]; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - undefined4 uStack20; - - iVar3 = param_5 * 0x50; - puVar13 = (uint *)((int)*param_4 * 8 + *(int *)(&DAT_8004141c + iVar3)); - aiStack80[0] = 0x7fffffff; - uStack20 = 0; - cVar1 = *(char *)(puVar13 + 2); - uVar15 = (uint)*(byte *)((int)puVar13 + 1) & 0xf; - iVar10 = (puVar13[1] & 0xffffff) + *(int *)(&dword_80041418 + iVar3); + char cVar1; + short sVar2; + longlong lVar3; + bg_room_data *pbVar4; + uint *puVar5; + uint *puVar6; + short *psVar7; + int *piVar8; + ulonglong imageID; + int iVar9; + int iVar10; + int iVar11; + uint *puVar12; + uint *puVar13; + uint uVar14; + int iStack192; + int iStack188; + int iStack184; + int iStack180; + int iStack176; + int iStack172; + int iStack164; + int iStack160; + int iStack156; + int aiStack152 [8]; + int iStack120; + int iStack116; + int iStack112; + int iStack108; + int iStack104; + int iStack100; + int iStack92; + int iStack88; + int iStack84; + int aiStack80 [2]; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + undefined4 uStack20; + + puVar12 = (uint *)((int)*param_4 * 8 + + (int)roominformationblock[param_5].ptr_expanded_mapping_info); + aiStack80[0] = 0x7fffffff; + uStack20 = 0; + cVar1 = *(char *)(puVar12 + 2); + uVar14 = (uint)*(byte *)((int)puVar12 + 1) & 0xf; + iVar9 = (puVar12[1] & 0xffffff) + (int)roominformationblock[param_5].ptr_point_index; joined_r0x7f0b70b0: - do { - if ((cVar1 == '\x04') || (cVar1 == -0x48)) { - return uStack20; - } - puVar14 = puVar13 + 2; - if (cVar1 == -0x41) { - piVar9 = &iStack92; - iStack92 = (int)(uint)*(byte *)((int)puVar13 + 0xd) / 10 - uVar15; - if (false) { - trap(0x1c00); - } - if ((false) && ((ulonglong)*(byte *)((int)puVar13 + 0xd) == 0xffffffff80000000)) { - trap(0x1800); - } - iStack88 = (int)(uint)*(byte *)((int)puVar13 + 0xe) / 10 - uVar15; - if (false) { - trap(0x1c00); - } - if ((false) && ((ulonglong)*(byte *)((int)puVar13 + 0xe) == 0xffffffff80000000)) { - trap(0x1800); - } - iStack84 = (int)(uint)*(byte *)((int)puVar13 + 0xf) / 10 - uVar15; - if (false) { - trap(0x1c00); - } - iVar11 = iStack92; - iStack120 = DAT_80044874; - iStack116 = DAT_80044878; - iStack112 = DAT_8004487c; - iStack108 = dword_80044868; - iStack104 = DAT_8004486c; - iStack100 = DAT_80044870; - if ((false) && - (iVar11 = iStack92, iStack120 = DAT_80044874, iStack116 = DAT_80044878, - iStack112 = DAT_8004487c, iStack108 = dword_80044868, iStack104 = DAT_8004486c, - iStack100 = DAT_80044870, (ulonglong)*(byte *)((int)puVar13 + 0xf) == 0xffffffff80000000)) - { - trap(0x1800); - iVar11 = iStack92; - iStack120 = DAT_80044874; - iStack116 = DAT_80044878; - iStack112 = DAT_8004487c; - iStack108 = dword_80044868; - iStack104 = DAT_8004486c; - iStack100 = DAT_80044870; - } - while( true ) { - piVar9 = piVar9 + 1; - psVar8 = (short *)(iVar10 + iVar11 * 0x10); - lVar4 = (longlong)*psVar8; - if (lVar4 < (longlong)iStack108) { - iStack108 = (int)*psVar8; - lVar4 = (longlong)*psVar8; + do { + if ((cVar1 == '\x04') || (cVar1 == -0x48)) { + return uStack20; } - if ((longlong)iStack120 < lVar4) { - iStack120 = (int)lVar4; - sVar2 = psVar8[1]; - } - else { - sVar2 = psVar8[1]; - } - lVar4 = (longlong)sVar2; - if (lVar4 < (longlong)iStack104) { - iStack104 = (int)sVar2; - lVar4 = (longlong)psVar8[1]; - } - if ((longlong)iStack116 < lVar4) { - iStack116 = (int)lVar4; - sVar2 = psVar8[2]; - } - else { - sVar2 = psVar8[2]; - } - lVar4 = (longlong)sVar2; - if (lVar4 < (longlong)iStack100) { - iStack100 = (int)sVar2; - lVar4 = (longlong)psVar8[2]; - } - if ((longlong)iStack112 < lVar4) { - iStack112 = (int)lVar4; - } - if (piVar9 == aiStack80) break; - iVar11 = *piVar9; - } - pbVar5 = ptr_bgdata_room_fileposition_list + param_5; - iStack108 += (int)(float)pbVar5->pPointTableBin; - iStack104 += (int)(float)pbVar5->pPriMappingBin; - iStack100 += (int)(float)pbVar5->pSecMappingBin; - iStack120 += (int)(float)pbVar5->pPointTableBin; - iStack116 += (int)(float)pbVar5->pPriMappingBin; - iStack112 += (int)(float)pbVar5->pSecMappingBin; - lVar4 = proc_7F0B6CEC(param_1,param_3,&iStack108,&iStack120); - if ((lVar4 != 0) && - (lVar4 = proc_7F092890((short *)(iVar10 + iStack92 * 0x10), - (short *)(iVar10 + iStack88 * 0x10), - (short *)(iVar10 + iStack84 * 0x10), - (float *)&ptr_bgdata_room_fileposition_list[param_5].pPointTableBin, - param_1,param_2,param_3,&fStack72), lVar4 != 0)) { - uStack20 = 1; - iVar11 = ((int)fStack72 - (int)*param_1) * ((int)fStack72 - (int)*param_1) + - ((int)fStack68 - (int)param_1[1]) * ((int)fStack68 - (int)param_1[1]) + - ((int)fStack64 - (int)param_1[2]) * ((int)fStack64 - (int)param_1[2]); - puVar7 = puVar14; - if (*(char *)puVar14 == -3) { -LAB_7f0b748c: - puVar6 = *(uint **)(&DAT_8004141c + iVar3); - } - else { - if (*(uint **)(&DAT_8004141c + iVar3) < puVar14) { - cVar1 = *(char *)puVar13; - puVar6 = puVar14; + puVar13 = puVar12 + 2; + if (cVar1 == -0x41) { + piVar8 = &iStack92; + iStack92 = (int)(uint)*(byte *)((int)puVar12 + 0xd) / 10 - uVar14; + if (false) { + trap(0x1c00); + } + if ((false) && ((ulonglong)*(byte *)((int)puVar12 + 0xd) == 0xffffffff80000000)) { + trap(0x1800); + } + iStack88 = (int)(uint)*(byte *)((int)puVar12 + 0xe) / 10 - uVar14; + if (false) { + trap(0x1c00); + } + if ((false) && ((ulonglong)*(byte *)((int)puVar12 + 0xe) == 0xffffffff80000000)) { + trap(0x1800); + } + iStack84 = (int)(uint)*(byte *)((int)puVar12 + 0xf) / 10 - uVar14; + if (false) { + trap(0x1c00); + } + iVar10 = iStack92; + iStack120 = DAT_80044874; + iStack116 = DAT_80044878; + iStack112 = DAT_8004487c; + iStack108 = dword_80044868; + iStack104 = DAT_8004486c; + iStack100 = DAT_80044870; + if ((false) && ((ulonglong)*(byte *)((int)puVar12 + 0xf) == 0xffffffff80000000)) { + trap(0x1800); + } while( true ) { - puVar7 = puVar6 + -2; - if (cVar1 == -3) break; - if (puVar7 <= *(uint **)(&DAT_8004141c + iVar3)) goto LAB_7f0b748c; - cVar1 = *(char *)(puVar6 + -4); - puVar6 = puVar7; + piVar8 = piVar8 + 1; + psVar7 = (short *)(iVar9 + iVar10 * 0x10); + lVar3 = (longlong)*psVar7; + if (lVar3 < iStack108) { + iStack108 = (int)*psVar7; + lVar3 = (longlong)*psVar7; + } + if (iStack120 < lVar3) { + iStack120 = (int)lVar3; + sVar2 = psVar7[1]; + } + else { + sVar2 = psVar7[1]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack104) { + iStack104 = (int)sVar2; + lVar3 = (longlong)psVar7[1]; + } + if (iStack116 < lVar3) { + iStack116 = (int)lVar3; + sVar2 = psVar7[2]; + } + else { + sVar2 = psVar7[2]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack100) { + iStack100 = (int)sVar2; + lVar3 = (longlong)psVar7[2]; + } + if (iStack112 < lVar3) { + iStack112 = (int)lVar3; + } + if (piVar8 == aiStack80) break; + iVar10 = *piVar8; + } + pbVar4 = ptr_bgdata_room_fileposition_list + param_5; + iStack108 += (int)(float)pbVar4->pPointTableBin; + iStack104 += (int)(float)pbVar4->pPriMappingBin; + iStack100 += (int)(float)pbVar4->pSecMappingBin; + iStack120 += (int)(float)pbVar4->pPointTableBin; + iStack116 += (int)(float)pbVar4->pPriMappingBin; + iStack112 += (int)(float)pbVar4->pSecMappingBin; + lVar3 = proc_7F0B6CEC(param_1,param_3,&iStack108,&iStack120); + if ((lVar3 != 0) && + (lVar3 = proc_7F092890((short *)(iVar9 + iStack92 * 0x10), + (short *)(iVar9 + iStack88 * 0x10), + (short *)(iVar9 + iStack84 * 0x10), + (float *)&ptr_bgdata_room_fileposition_list[param_5]. + pPointTableBin,param_1,param_2,param_3,&fStack72), + lVar3 != 0)) { + uStack20 = 1; + iVar10 = ((int)fStack72 - (int)*param_1) * ((int)fStack72 - (int)*param_1) + + ((int)fStack68 - (int)param_1[1]) * ((int)fStack68 - (int)param_1[1]) + + ((int)fStack64 - (int)param_1[2]) * ((int)fStack64 - (int)param_1[2]); + puVar6 = puVar13; + if (*(char *)puVar13 == -3) { +LAB_7f0b748c: + puVar5 = (uint *)roominformationblock[param_5].ptr_expanded_mapping_info; + } + else { + if (roominformationblock[param_5].ptr_expanded_mapping_info < puVar13) { + cVar1 = *(char *)puVar12; + puVar5 = puVar13; + while( true ) { + puVar6 = puVar5 + -2; + if (cVar1 == -3) break; + if (puVar6 <= roominformationblock[param_5].ptr_expanded_mapping_info) + goto LAB_7f0b748c; + cVar1 = *(char *)(puVar5 + -4); + puVar5 = puVar6; + } + puVar5 = (uint *)roominformationblock[param_5].ptr_expanded_mapping_info; + } + else { + puVar5 = (uint *)roominformationblock[param_5].ptr_expanded_mapping_info; + } + } + if (puVar6 == puVar5) { + imageID = 0xffffffffffffffff; + } + else { + imageID = (ulonglong)*(ushort *)(puVar6[1] - 8 | 0x80000000); + } + lVar3 = check_if_imageID_is_light(imageID); + if (lVar3 != 0) { + iVar10 += -4; + } + if (iVar10 < aiStack80[0]) { + if (imageID == 0x4fd) { + cVar1 = *(char *)(puVar12 + 4); + puVar12 = puVar13; + goto joined_r0x7f0b70b0; + } + *param_6 = fStack72; + param_6[1] = fStack68; + param_6[2] = fStack64; + param_6[3] = fStack60; + param_6[4] = fStack56; + param_6[5] = fStack52; + *(int *)(param_6 + 6) = iStack92 * 0x10 + iVar9; + *(int *)(param_6 + 7) = iStack88 * 0x10 + iVar9; + *(undefined2 *)((int)param_6 + 0x2a) = (short)imageID; + *(uint **)(param_6 + 9) = puVar13; + *(int *)(param_6 + 8) = iStack84 * 0x10 + iVar9; + *(undefined2 *)(param_6 + 10) = 0; + aiStack80[0] = iVar10; + } } - puVar6 = *(uint **)(&DAT_8004141c + iVar3); - } - else { - puVar6 = *(uint **)(&DAT_8004141c + iVar3); - puVar7 = puVar14; - } - } - if (puVar7 == puVar6) { - imageID = 0xffffffffffffffff; } else { - imageID = (ulonglong)*(ushort *)(puVar7[1] - 8 | 0x80000000); - } - lVar4 = check_if_imageID_is_light(imageID); - if (lVar4 != 0) { - iVar11 += -4; - } - if (iVar11 < aiStack80[0]) { - if (imageID == 0x4fd) { - cVar1 = *(char *)(puVar13 + 4); - puVar13 = puVar14; - goto joined_r0x7f0b70b0; - } - *param_6 = fStack72; - param_6[1] = fStack68; - param_6[2] = fStack64; - param_6[3] = fStack60; - param_6[4] = fStack56; - param_6[5] = fStack52; - *(int *)(param_6 + 6) = iStack92 * 0x10 + iVar10; - *(int *)(param_6 + 7) = iStack88 * 0x10 + iVar10; - *(undefined2 *)((int)param_6 + 0x2a) = (short)imageID; - *(uint **)(param_6 + 9) = puVar14; - *(int *)(param_6 + 8) = iStack84 * 0x10 + iVar10; - *(undefined2 *)(param_6 + 10) = 0; - aiStack80[0] = iVar11; - } - } - } - else { - if (cVar1 == -0x4f) { - iVar11 = 0; - do { - iStack180 = DAT_80044880; - iStack176 = DAT_80044884; - iStack172 = DAT_80044888; - iStack192 = DAT_8004488c; - iStack188 = DAT_80044890; - iStack184 = DAT_80044894; - if (iVar11 == 0) { - iStack164 = (puVar13[3] & 0xf) - uVar15; - iStack160 = (uint)(*(byte *)((int)puVar13 + 0xf) >> 4) - uVar15; - iStack156 = (*puVar14 & 0xf) - uVar15; - } - else { - if (iVar11 == 1) { - iStack164 = ((uint)*(byte *)((int)puVar13 + 0xe) & 0xf) - uVar15; - iStack160 = (uint)(*(ushort *)((int)puVar13 + 0xe) >> 0xc) - uVar15; - iStack156 = (uint)(*(byte *)((int)puVar13 + 0xb) >> 4) - uVar15; - } - else { - if (iVar11 == 2) { - iStack164 = ((uint)*(ushort *)(puVar13 + 3) & 0xf) - uVar15; - iStack160 = (uint)(*(byte *)((int)puVar13 + 0xd) >> 4) - uVar15; - iStack156 = ((uint)*(byte *)((int)puVar13 + 10) & 0xf) - uVar15; - } - else { - iStack164 = ((uint)*(byte *)(puVar13 + 3) & 0xf) - uVar15; - iStack160 = (puVar13[3] >> 0x1c) - uVar15; - iStack156 = (uint)(*(ushort *)((int)puVar13 + 10) >> 0xc) - uVar15; - } - } - } - piVar9 = &iStack164; - iVar12 = iStack164; - while( true ) { - piVar9 = piVar9 + 1; - psVar8 = (short *)(iVar10 + iVar12 * 0x10); - lVar4 = (longlong)*psVar8; - if (lVar4 < (longlong)iStack180) { - iStack180 = (int)*psVar8; - lVar4 = (longlong)*psVar8; - } - if ((longlong)iStack192 < lVar4) { - iStack192 = (int)lVar4; - sVar2 = psVar8[1]; - } - else { - sVar2 = psVar8[1]; - } - lVar4 = (longlong)sVar2; - if (lVar4 < (longlong)iStack176) { - iStack176 = (int)sVar2; - lVar4 = (longlong)psVar8[1]; - } - if ((longlong)iStack188 < lVar4) { - iStack188 = (int)lVar4; - sVar2 = psVar8[2]; - } - else { - sVar2 = psVar8[2]; - } - lVar4 = (longlong)sVar2; - if (lVar4 < (longlong)iStack172) { - iStack172 = (int)sVar2; - lVar4 = (longlong)psVar8[2]; - } - if ((longlong)iStack184 < lVar4) { - iStack184 = (int)lVar4; - } - if (piVar9 == aiStack152) break; - iVar12 = *piVar9; - } - pbVar5 = ptr_bgdata_room_fileposition_list + param_5; - iStack180 += (int)(float)pbVar5->pPointTableBin; - iStack176 += (int)(float)pbVar5->pPriMappingBin; - iStack172 += (int)(float)pbVar5->pSecMappingBin; - iStack192 += (int)(float)pbVar5->pPointTableBin; - iStack188 += (int)(float)pbVar5->pPriMappingBin; - iStack184 += (int)(float)pbVar5->pSecMappingBin; - lVar4 = proc_7F0B6CEC(param_1,param_3,&iStack180,&iStack192); - if ((lVar4 != 0) && - (lVar4 = proc_7F092890((short *)(iVar10 + iStack164 * 0x10), - (short *)(iVar10 + iStack160 * 0x10), - (short *)(iVar10 + iStack156 * 0x10), - (float *)&ptr_bgdata_room_fileposition_list[param_5]. - pPointTableBin,param_1,param_2,param_3,&fStack72), - lVar4 != 0)) { - uStack20 = 1; - iVar12 = ((int)fStack72 - (int)*param_1) * ((int)fStack72 - (int)*param_1) + - ((int)fStack68 - (int)param_1[1]) * ((int)fStack68 - (int)param_1[1]) + - ((int)fStack64 - (int)param_1[2]) * ((int)fStack64 - (int)param_1[2]); - puVar7 = puVar14; - if (*(char *)puVar14 == -3) { + if (cVar1 == -0x4f) { + iVar10 = 0; + do { + iStack180 = DAT_80044880; + iStack176 = DAT_80044884; + iStack172 = DAT_80044888; + iStack192 = DAT_8004488c; + iStack188 = DAT_80044890; + iStack184 = DAT_80044894; + if (iVar10 == 0) { + iStack164 = (puVar12[3] & 0xf) - uVar14; + iStack160 = (*(byte *)((int)puVar12 + 0xf) >> 4) - uVar14; + iStack156 = (*puVar13 & 0xf) - uVar14; + } + else { + if (iVar10 == 1) { + iStack164 = ((uint)*(byte *)((int)puVar12 + 0xe) & 0xf) - uVar14; + iStack160 = (*(ushort *)((int)puVar12 + 0xe) >> 0xc) - uVar14; + iStack156 = (*(byte *)((int)puVar12 + 0xb) >> 4) - uVar14; + } + else { + if (iVar10 == 2) { + iStack164 = ((uint)*(ushort *)(puVar12 + 3) & 0xf) - uVar14; + iStack160 = (*(byte *)((int)puVar12 + 0xd) >> 4) - uVar14; + iStack156 = ((uint)*(byte *)((int)puVar12 + 10) & 0xf) - uVar14; + } + else { + iStack164 = ((uint)*(byte *)(puVar12 + 3) & 0xf) - uVar14; + iStack160 = (puVar12[3] >> 0x1c) - uVar14; + iStack156 = (*(ushort *)((int)puVar12 + 10) >> 0xc) - uVar14; + } + } + } + piVar8 = &iStack164; + iVar11 = iStack164; + while( true ) { + piVar8 = piVar8 + 1; + psVar7 = (short *)(iVar9 + iVar11 * 0x10); + lVar3 = (longlong)*psVar7; + if (lVar3 < iStack180) { + iStack180 = (int)*psVar7; + lVar3 = (longlong)*psVar7; + } + if (iStack192 < lVar3) { + iStack192 = (int)lVar3; + sVar2 = psVar7[1]; + } + else { + sVar2 = psVar7[1]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack176) { + iStack176 = (int)sVar2; + lVar3 = (longlong)psVar7[1]; + } + if (iStack188 < lVar3) { + iStack188 = (int)lVar3; + sVar2 = psVar7[2]; + } + else { + sVar2 = psVar7[2]; + } + lVar3 = (longlong)sVar2; + if (lVar3 < iStack172) { + iStack172 = (int)sVar2; + lVar3 = (longlong)psVar7[2]; + } + if (iStack184 < lVar3) { + iStack184 = (int)lVar3; + } + if (piVar8 == aiStack152) break; + iVar11 = *piVar8; + } + pbVar4 = ptr_bgdata_room_fileposition_list + param_5; + iStack180 += (int)(float)pbVar4->pPointTableBin; + iStack176 += (int)(float)pbVar4->pPriMappingBin; + iStack172 += (int)(float)pbVar4->pSecMappingBin; + iStack192 += (int)(float)pbVar4->pPointTableBin; + iStack188 += (int)(float)pbVar4->pPriMappingBin; + iStack184 += (int)(float)pbVar4->pSecMappingBin; + lVar3 = proc_7F0B6CEC(param_1,param_3,&iStack180,&iStack192); + if ((lVar3 != 0) && + (lVar3 = proc_7F092890((short *)(iVar9 + iStack164 * 0x10), + (short *)(iVar9 + iStack160 * 0x10), + (short *)(iVar9 + iStack156 * 0x10), + (float *)&ptr_bgdata_room_fileposition_list[param_5]. + pPointTableBin,param_1,param_2,param_3, + &fStack72), lVar3 != 0)) { + uStack20 = 1; + iVar11 = ((int)fStack72 - (int)*param_1) * ((int)fStack72 - (int)*param_1) + + ((int)fStack68 - (int)param_1[1]) * + ((int)fStack68 - (int)param_1[1]) + + ((int)fStack64 - (int)param_1[2]) * + ((int)fStack64 - (int)param_1[2]); + puVar6 = puVar13; + if (*(char *)puVar13 == -3) { LAB_7f0b7950: - puVar6 = *(uint **)(&DAT_8004141c + iVar3); + puVar5 = (uint *)roominformationblock[param_5].ptr_expanded_mapping_info + ; + } + else { + if (roominformationblock[param_5].ptr_expanded_mapping_info < puVar13) { + cVar1 = *(char *)puVar12; + puVar5 = puVar13; + while( true ) { + puVar6 = puVar5 + -2; + if (cVar1 == -3) break; + if (puVar6 <= roominformationblock[param_5]. + ptr_expanded_mapping_info) goto LAB_7f0b7950; + cVar1 = *(char *)(puVar5 + -4); + puVar5 = puVar6; + } + puVar5 = (uint *)roominformationblock[param_5]. + ptr_expanded_mapping_info; + } + else { + puVar5 = (uint *)roominformationblock[param_5]. + ptr_expanded_mapping_info; + } + } + if (puVar6 == puVar5) { + imageID = 0xffffffffffffffff; + } + else { + imageID = (ulonglong)*(ushort *)(puVar6[1] - 8 | 0x80000000); + } + lVar3 = check_if_imageID_is_light(imageID); + if (lVar3 != 0) { + iVar11 += -4; + } + if ((iVar11 < aiStack80[0]) && (imageID != 0x4fd)) { + *param_6 = fStack72; + param_6[1] = fStack68; + param_6[2] = fStack64; + param_6[3] = fStack60; + param_6[4] = fStack56; + param_6[5] = fStack52; + *(int *)(param_6 + 6) = iStack164 * 0x10 + iVar9; + *(int *)(param_6 + 7) = iStack160 * 0x10 + iVar9; + *(undefined2 *)((int)param_6 + 0x2a) = (short)imageID; + *(uint **)(param_6 + 9) = puVar13; + *(int *)(param_6 + 8) = iStack156 * 0x10 + iVar9; + *(short *)(param_6 + 10) = (short)iVar10 + 1; + aiStack80[0] = iVar11; + } + } + iVar10 += 1; + } while (iVar10 != 4); } - else { - if (*(uint **)(&DAT_8004141c + iVar3) < puVar14) { - cVar1 = *(char *)puVar13; - puVar6 = puVar14; - while( true ) { - puVar7 = puVar6 + -2; - if (cVar1 == -3) break; - if (puVar7 <= *(uint **)(&DAT_8004141c + iVar3)) goto LAB_7f0b7950; - cVar1 = *(char *)(puVar6 + -4); - puVar6 = puVar7; - } - puVar6 = *(uint **)(&DAT_8004141c + iVar3); - } - else { - puVar6 = *(uint **)(&DAT_8004141c + iVar3); - puVar7 = puVar14; - } - } - if (puVar7 == puVar6) { - imageID = 0xffffffffffffffff; - } - else { - imageID = (ulonglong)*(ushort *)(puVar7[1] - 8 | 0x80000000); - } - lVar4 = check_if_imageID_is_light(imageID); - if (lVar4 != 0) { - iVar12 += -4; - } - if ((iVar12 < aiStack80[0]) && (imageID != 0x4fd)) { - *param_6 = fStack72; - param_6[1] = fStack68; - param_6[2] = fStack64; - param_6[3] = fStack60; - param_6[4] = fStack56; - param_6[5] = fStack52; - *(int *)(param_6 + 6) = iStack164 * 0x10 + iVar10; - *(int *)(param_6 + 7) = iStack160 * 0x10 + iVar10; - *(undefined2 *)((int)param_6 + 0x2a) = (short)imageID; - *(uint **)(param_6 + 9) = puVar14; - *(int *)(param_6 + 8) = iStack156 * 0x10 + iVar10; - *(short *)(param_6 + 10) = (short)iVar11 + 1; - aiStack80[0] = iVar12; - } - } - iVar11 += 1; - } while (iVar11 != 4); - } - } - cVar1 = *(char *)(puVar13 + 4); - puVar13 = puVar14; - } while( true ); + } + cVar1 = *(char *)(puVar12 + 4); + puVar12 = puVar13; + } while( true ); } @@ -127623,133 +126774,131 @@ LAB_7f0b7950: int proc_7F0B7A78(float *param_1,float *param_2,int param_3,float *param_4) { - char cVar1; - int iVar2; - longlong lVar3; - int iVar4; - short *psVar5; - longlong lVar6; - int *piVar7; - int *piVar8; - int iStack108; - int iStack100; - float fStack92; - float fStack88; - float fStack84; - float fStack80; - float fStack76; - float fStack72; - float fStack68; - float fStack64; - float fStack60; - float fStack56; - undefined2 uStack52; - short sStack50; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - short sStack6; - - iStack108 = 0; - iStack100 = 0x7fffffff; - fStack20 = *param_1 * room_data_float1; - iVar2 = param_3 * 0x50; - psVar5 = (short *)(&DAT_80041440)[param_3 * 0x14]; - fStack16 = param_1[1] * room_data_float1; - fStack12 = param_1[2] * room_data_float1; - fStack32 = *param_2 * room_data_float1; - fStack28 = param_2[1] * room_data_float1; - fStack44 = fStack32 - fStack20; - fStack24 = param_2[2] * room_data_float1; - fStack40 = fStack28 - fStack16; - fStack36 = fStack24 - fStack12; - if (psVar5 == NULL) { + char cVar1; + longlong lVar2; + int iVar3; + short *psVar4; + longlong lVar5; + int *piVar6; + int *piVar7; + int iStack108; + int iStack100; + float fStack92; + float fStack88; + float fStack84; + float fStack80; + float fStack76; + float fStack72; + float fStack68; + float fStack64; + float fStack60; + float fStack56; + undefined2 uStack52; + short sStack50; + float fStack44; + float fStack40; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + short sStack6; + iStack108 = 0; - } - else { - sStack6 = *(short *)(&DAT_80041444 + iVar2); - lVar6 = 0; - piVar7 = (int *)(psVar5 + 2); - if (0 < sStack6) { - piVar8 = (int *)(psVar5 + 8); - do { - lVar3 = proc_7F0B6CEC(&fStack20,&fStack44,piVar7,piVar8); - if ((lVar3 != 0) && - (iVar4 = proc_7F0B7010(&fStack20,&fStack32,&fStack44,psVar5,param_3,&fStack92), - iVar4 != 0)) { - iStack108 = 1; - iVar4 = (int)(fStack92 - fStack20) * (int)(fStack92 - fStack20) + - (int)(fStack88 - fStack16) * (int)(fStack88 - fStack16) + - (int)(fStack84 - fStack12) * (int)(fStack84 - fStack12); - lVar3 = check_if_imageID_is_light((longlong)sStack50); - if (lVar3 != 0) { - iVar4 += -4; - } - if (iVar4 < iStack100) { - *param_4 = fStack92; - param_4[1] = fStack88; - param_4[2] = fStack84; - param_4[3] = fStack80; - param_4[4] = fStack76; - param_4[5] = fStack72; - param_4[6] = fStack68; - param_4[7] = fStack64; - param_4[8] = fStack60; - *(short *)((int)param_4 + 0x2a) = sStack50; - param_4[9] = fStack56; - *(undefined2 *)(param_4 + 10) = uStack52; - iStack100 = iVar4; - } - } - lVar6 = (longlong)((int)lVar6 + 1); - psVar5 = psVar5 + 0xe; - piVar7 = piVar7 + 7; - piVar8 = piVar8 + 7; - } while (lVar6 != (longlong)sStack6); + iStack100 = 0x7fffffff; + fStack20 = *param_1 * room_data_float1; + psVar4 = (short *)roominformationblock[param_3].ptr_unique_collision_points; + fStack16 = param_1[1] * room_data_float1; + fStack12 = param_1[2] * room_data_float1; + fStack32 = *param_2 * room_data_float1; + fStack28 = param_2[1] * room_data_float1; + fStack44 = fStack32 - fStack20; + fStack24 = param_2[2] * room_data_float1; + fStack40 = fStack28 - fStack16; + fStack36 = fStack24 - fStack12; + if (psVar4 == NULL) { + iStack108 = 0; } - if (iStack108 != 0) { - piVar7 = (int *)param_4[9]; - if (*(char *)piVar7 == -0xb) { - piVar8 = *(int **)(&DAT_8004141c + iVar2); - } - else { - if (*(int **)(&DAT_8004141c + iVar2) < piVar7) { - cVar1 = *(char *)(piVar7 + -2); - piVar8 = piVar7; - while( true ) { - piVar7 = piVar8 + -2; - if (cVar1 == -0xb) break; - if (piVar7 <= *(int **)(&DAT_8004141c + iVar2)) { - piVar8 = *(int **)(&DAT_8004141c + iVar2); - goto LAB_7f0b7d2c; + else { + sStack6 = *(short *)&roominformationblock[param_3].bitflags3; + lVar5 = 0; + piVar6 = (int *)(psVar4 + 2); + if (0 < sStack6) { + piVar7 = (int *)(psVar4 + 8); + do { + lVar2 = proc_7F0B6CEC(&fStack20,&fStack44,piVar6,piVar7); + if ((lVar2 != 0) && + (iVar3 = proc_7F0B7010(&fStack20,&fStack32,&fStack44,psVar4,param_3,&fStack92), + iVar3 != 0)) { + iStack108 = 1; + iVar3 = (int)(fStack92 - fStack20) * (int)(fStack92 - fStack20) + + (int)(fStack88 - fStack16) * (int)(fStack88 - fStack16) + + (int)(fStack84 - fStack12) * (int)(fStack84 - fStack12); + lVar2 = check_if_imageID_is_light((longlong)sStack50); + if (lVar2 != 0) { + iVar3 += -4; + } + if (iVar3 < iStack100) { + *param_4 = fStack92; + param_4[1] = fStack88; + param_4[2] = fStack84; + param_4[3] = fStack80; + param_4[4] = fStack76; + param_4[5] = fStack72; + param_4[6] = fStack68; + param_4[7] = fStack64; + param_4[8] = fStack60; + *(short *)((int)param_4 + 0x2a) = sStack50; + param_4[9] = fStack56; + *(undefined2 *)(param_4 + 10) = uStack52; + iStack100 = iVar3; + } + } + lVar5 = (longlong)((int)lVar5 + 1); + psVar4 = psVar4 + 0xe; + piVar6 = piVar6 + 7; + piVar7 = piVar7 + 7; + } while (lVar5 != (longlong)sStack6); + } + if (iStack108 != 0) { + piVar6 = (int *)param_4[9]; + if (*(char *)piVar6 == -0xb) { + piVar7 = (int *)roominformationblock[param_3].ptr_expanded_mapping_info; + } + else { + if (roominformationblock[param_3].ptr_expanded_mapping_info < piVar6) { + cVar1 = *(char *)(piVar6 + -2); + piVar7 = piVar6; + while( true ) { + piVar6 = piVar7 + -2; + if (cVar1 == -0xb) break; + if (piVar6 <= roominformationblock[param_3].ptr_expanded_mapping_info) { + piVar7 = (int *)roominformationblock[param_3].ptr_expanded_mapping_info; + goto LAB_7f0b7d2c; + } + cVar1 = *(char *)(piVar7 + -4); + piVar7 = piVar6; + } + piVar7 = (int *)roominformationblock[param_3].ptr_expanded_mapping_info; + } + else { + piVar7 = (int *)roominformationblock[param_3].ptr_expanded_mapping_info; + } } - cVar1 = *(char *)(piVar8 + -4); - piVar8 = piVar7; - } - piVar8 = *(int **)(&DAT_8004141c + iVar2); - } - else { - piVar8 = *(int **)(&DAT_8004141c + iVar2); - } - } LAB_7f0b7d2c: - if (piVar7 == piVar8) { - *(undefined2 *)(param_4 + 0xb) = 0xffff; - *(undefined2 *)((int)param_4 + 0x2e) = 0xffff; - } - else { - *(ushort *)(param_4 + 0xb) = (ushort)(*(byte *)((int)piVar7 + 1) >> 5); - *(ushort *)((int)param_4 + 0x2e) = (ushort)((uint)(*piVar7 << 0xb) >> 0x1e); - } + if (piVar6 == piVar7) { + *(undefined2 *)(param_4 + 0xb) = 0xffff; + *(undefined2 *)((int)param_4 + 0x2e) = 0xffff; + } + else { + *(ushort *)(param_4 + 0xb) = (ushort)(*(byte *)((int)piVar6 + 1) >> 5); + *(ushort *)((int)param_4 + 0x2e) = (ushort)((uint)(*piVar6 << 0xb) >> 0x1e); + } + } } - } - return iStack108; + return iStack108; } @@ -127757,9 +126906,9 @@ LAB_7f0b7d2c: void proc_7F0B7D94(void) { - DAT_800448a0 = 0; - DAT_800448a4 = 0; - return; + DAT_800448a0 = 0; + DAT_800448a4 = 0; + return; } @@ -127767,14 +126916,14 @@ void proc_7F0B7D94(void) ulonglong proc_7F0B7DA8(int param_1) { - byte bVar1; - - bVar1 = (&DAT_80041417)[param_1 * 0x50]; - if (bVar1 != 0xff) { - bVar1 += 1; - (&DAT_80041417)[param_1 * 0x50] = bVar1; - } - return (ulonglong)bVar1; + byte bVar1; + + bVar1 = roominformationblock[param_1].bitflags2; + if (bVar1 != 0xff) { + bVar1 += 1; + roominformationblock[param_1].bitflags2 = bVar1; + } + return (ulonglong)bVar1; } @@ -127782,34 +126931,34 @@ ulonglong proc_7F0B7DA8(int param_1) void proc_7F0B7DE4(undefined4 param_1,uint param_2,int param_3,int param_4,undefined4 *param_5) { - int iVar1; - ulonglong uVar2; - int iVar3; - - iVar3 = DAT_800448a0 * 0x20; - if ((param_4 < 2) || - (uVar2 = proc_7F0B7DA8((uint)(ptr_bgdata_portals[param_3].connectedRoom1 ^ - ptr_bgdata_portals[param_3].connectedRoom2) ^ param_2), - iVar1 = DAT_800448a0, (longlong)uVar2 < 9)) { - *(undefined4 *)(&DAT_8007c100 + iVar3) = param_1; - *(uint *)(&DAT_8007c104 + iVar3) = param_2; - *(int *)(&DAT_8007c10c + iVar3) = param_4; - *(int *)(&DAT_8007c108 + iVar3) = param_3; - *(undefined4 *)(&DAT_8007c110 + iVar3) = *param_5; - *(undefined4 *)(&DAT_8007c114 + iVar3) = param_5[1]; - *(undefined4 *)(&DAT_8007c118 + iVar3) = param_5[2]; - *(undefined4 *)(&DAT_8007c11c + iVar3) = param_5[3]; - DAT_800448a0 += 1; - if (DAT_800448a0 == 500) { - DAT_800448a0 = 0; + int iVar1; + ulonglong uVar2; + int iVar3; + + iVar3 = DAT_800448a0 * 0x20; + if ((param_4 < 2) || + (uVar2 = proc_7F0B7DA8((ptr_bgdata_portals[param_3].connectedRoom1 ^ + ptr_bgdata_portals[param_3].connectedRoom2) ^ param_2), + iVar1 = DAT_800448a0, (longlong)uVar2 < 9)) { + *(undefined4 *)(&DAT_8007c100 + iVar3) = param_1; + *(uint *)(&DAT_8007c104 + iVar3) = param_2; + *(int *)(&DAT_8007c10c + iVar3) = param_4; + *(int *)(&DAT_8007c108 + iVar3) = param_3; + *(undefined4 *)(&DAT_8007c110 + iVar3) = *param_5; + *(undefined4 *)(&DAT_8007c114 + iVar3) = param_5[1]; + *(undefined4 *)(&DAT_8007c118 + iVar3) = param_5[2]; + *(undefined4 *)(&DAT_8007c11c + iVar3) = param_5[3]; + DAT_800448a0 += 1; + if (DAT_800448a0 == 500) { + DAT_800448a0 = 0; + } + iVar1 = DAT_800448a0 + -1; + if (DAT_800448a4 != DAT_800448a0) { + return; + } } - iVar1 = DAT_800448a0 + -1; - if (DAT_800448a4 != DAT_800448a0) { - return; - } - } - DAT_800448a0 = iVar1; - return; + DAT_800448a0 = iVar1; + return; } @@ -127817,26 +126966,26 @@ void proc_7F0B7DE4(undefined4 param_1,uint param_2,int param_3,int param_4,undef undefined8 proc_7F0B7EE4(int *param_1) { - undefined8 uVar1; - undefined8 uVar2; - int iVar3; - - iVar3 = DAT_800448a4 * 0x20; - if (DAT_800448a0 == DAT_800448a4) { - uVar1 = 0; - } - else { - uVar2 = proc_7F0B7F84((longlong)*param_1,*(int *)(&DAT_8007c104 + iVar3), - *(int *)(&DAT_8007c108 + iVar3),*(int *)(&DAT_8007c10c + iVar3), - (float *)(&DAT_8007c110 + iVar3)); - DAT_800448a4 += 1; - if (DAT_800448a4 == 500) { - DAT_800448a4 = 0; + undefined8 uVar1; + undefined8 uVar2; + int iVar3; + + iVar3 = DAT_800448a4 * 0x20; + if (DAT_800448a0 == DAT_800448a4) { + uVar1 = 0; } - uVar1 = 1; - *param_1 = (int)uVar2; - } - return uVar1; + else { + uVar2 = proc_7F0B7F84((longlong)*param_1,*(int *)(&DAT_8007c104 + iVar3), + *(int *)(&DAT_8007c108 + iVar3),*(int *)(&DAT_8007c10c + iVar3), + (float *)(&DAT_8007c110 + iVar3)); + DAT_800448a4 += 1; + if (DAT_800448a4 == 500) { + DAT_800448a4 = 0; + } + uVar1 = 1; + *param_1 = (int)uVar2; + } + return uVar1; } @@ -127847,130 +126996,132 @@ undefined8 proc_7F0B7EE4(int *param_1) undefined8 proc_7F0B7F84(undefined8 param_1,int param_2,int param_3,int param_4,float *param_5) { - byte bVar1; - xyzpoint *pxVar3; - longlong lVar2; - uint uVar4; - bg_portal_data_entry *pbVar5; - ulonglong uVar6; - int iVar7; - bg_portal_entry *pbVar8; - int iVar9; - float fVar10; - float fVar11; - float fStack44; - float fStack40; - float fStack36; - float fStack32; - float fStack28; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - DAT_80044898 += 1; - if (100 < param_4) { - return param_1; - } - if (dword_8004489C < param_4) { - return param_1; - } - if (0xf < param_4) { - return param_1; - } - if ((*(byte *)&ptr_bgdata_portals[param_3].controlbytes & 1) != 0) { - return param_1; - } - pxVar3 = get_BONDdata_position(); - proc_7F0B96CC(param_3,&fStack44); - fVar11 = (pxVar3->z * fStack36 + fStack44 * pxVar3->x + fStack40 * pxVar3->y) * room_data_float1; - fVar10 = proc_7F0B9990(param_3); - pbVar5 = ptr_bgdata_portals + param_3; - uVar6 = (ulonglong)pbVar5->connectedRoom1; - if ((longlong)param_2 == uVar6) { - uVar6 = (ulonglong)pbVar5->connectedRoom2; - if (fStack28 <= fVar11 - fVar10) { - return param_1; + byte bVar1; + xyzpoint *pxVar3; + longlong lVar2; + uint uVar4; + bg_portal_data_entry *pbVar5; + ulonglong uVar6; + int iVar7; + bg_portal_entry *pbVar8; + int iVar9; + float fVar10; + float fVar11; + float fStack44; + float fStack40; + float fStack36; + float fStack32; + float fStack28; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + DAT_80044898 += 1; + if (100 < param_4) { + return param_1; } - } - else { - if (fVar11 + fVar10 <= fStack32) { - return param_1; + if (dword_8004489C < param_4) { + return param_1; } - } - if (fStack32 - fVar10 < fVar11) { - if (fVar11 < fStack28 + fVar10) { - fStack16 = pPlayer->screenxminf; - fStack12 = pPlayer->screenyminf; - fStack8 = pPlayer->screenxmaxf; - fStack4 = pPlayer->screenymaxf; - goto LAB_7f0b8264; + if (0xf < param_4) { + return param_1; } - bVar1 = *(byte *)&pbVar5->controlbytes; - } - else { - bVar1 = *(byte *)&pbVar5->controlbytes; - } - if ((bVar1 & 2) == 0) { - lVar2 = proc_7F0B5864(); - if (lVar2 == 0) { - return param_1; + if ((*(byte *)&ptr_bgdata_portals[param_3].controlbytes & 1) != 0) { + return param_1; } - vis_is_inline_of_sight(&fStack16,param_5); - vis_is_inline_of_sight(&fStack16,&pPlayer->screenxminf); - } - else { - lVar2 = proc_7F0B5864(); - if (lVar2 == 0) { - return param_1; + pxVar3 = get_BONDdata_position(); + proc_7F0B96CC(param_3,&fStack44); + fVar11 = ((float)pxVar3->z * fStack36 + + fStack44 * (float)pxVar3->x + fStack40 * (float)pxVar3->y) * room_data_float1; + fVar10 = proc_7F0B9990(param_3); + pbVar5 = ptr_bgdata_portals + param_3; + uVar6 = (ulonglong)pbVar5->connectedRoom1; + if ((longlong)param_2 == uVar6) { + uVar6 = (ulonglong)pbVar5->connectedRoom2; + if (fStack28 <= fVar11 - fVar10) { + return param_1; + } } - uVar6 = (ulonglong) - (ptr_bgdata_portals[param_3].connectedRoom2 ^ ptr_bgdata_portals[param_3].connectedRoom1 - ) ^ (longlong)param_2; - lVar2 = proc_7F0B5208((int)uVar6,&fStack16); - if (lVar2 == 0) { - return param_1; + else { + if (fVar11 + fVar10 <= fStack32) { + return param_1; + } + } + if (fStack32 - fVar10 < fVar11) { + if (fVar11 < fStack28 + fVar10) { + fStack16 = pPlayer->screenxminf; + fStack12 = pPlayer->screenyminf; + fStack8 = pPlayer->screenxmaxf; + fStack4 = pPlayer->screenymaxf; + goto LAB_7f0b8264; + } + bVar1 = *(byte *)&pbVar5->controlbytes; + } + else { + bVar1 = *(byte *)&pbVar5->controlbytes; + } + if ((bVar1 & 2) == 0) { + lVar2 = proc_7F0B5864(); + if (lVar2 == 0) { + return param_1; + } + vis_is_inline_of_sight(&fStack16,param_5); + vis_is_inline_of_sight(&fStack16,&pPlayer->screenxminf); + } + else { + lVar2 = proc_7F0B5864(); + if (lVar2 == 0) { + return param_1; + } + uVar6 = (ulonglong) + (ptr_bgdata_portals[param_3].connectedRoom2 ^ + ptr_bgdata_portals[param_3].connectedRoom1) ^ (longlong)param_2; + lVar2 = proc_7F0B5208((int)uVar6,&fStack16); + if (lVar2 == 0) { + return param_1; + } + fStack16 = pPlayer->screenxminf; + fStack12 = pPlayer->screenyminf; + fStack8 = pPlayer->screenxmaxf; + fStack4 = pPlayer->screenymaxf; + } + if (fStack8 <= fStack16) { + return param_1; + } + if (fStack4 <= fStack12) { + return param_1; } - fStack16 = pPlayer->screenxminf; - fStack12 = pPlayer->screenyminf; - fStack8 = pPlayer->screenxmaxf; - fStack4 = pPlayer->screenymaxf; - } - if (fStack8 <= fStack16) { - return param_1; - } - if (fStack4 <= fStack12) { - return param_1; - } LAB_7f0b8264: - (&dword_800442FC)[param_3] = (char)param_4; - if ((fStack16 < fStack8) && (fStack12 < fStack4)) { - uVar4 = proc_7F0B39BC((uint)uVar6,param_4,&fStack16, - (uint)*(byte *)&ptr_bgdata_portals[param_3].controlbytes & 2); - if (uVar4 == 0) { - iVar9 = 0; - iVar7 = 0; - pbVar8 = ptr_bgdata_portals->offset_portal; - pbVar5 = ptr_bgdata_portals; - while (pbVar8 != NULL) { - if (iVar9 == param_3) { - pbVar8 = pbVar5[1].offset_portal; + (&dword_800442FC)[param_3] = (char)param_4; + if ((fStack16 < fStack8) && (fStack12 < fStack4)) { + uVar4 = proc_7F0B39BC((uint)uVar6,param_4,&fStack16, + (uint)*(byte *)&ptr_bgdata_portals[param_3].controlbytes & 2); + if (uVar4 == 0) { + iVar9 = 0; + iVar7 = 0; + pbVar8 = ptr_bgdata_portals->offset_portal; + pbVar5 = ptr_bgdata_portals; + while (pbVar8 != NULL) { + if (iVar9 == param_3) { + pbVar8 = pbVar5[1].offset_portal; + } + else { + if ((uVar6 == (ulonglong)pbVar5->connectedRoom1) || + (uVar6 == (ulonglong)pbVar5->connectedRoom2)) { + proc_7F0B7DE4((int)param_1,(uint)uVar6,iVar9,param_4 + 1,&fStack16); + pbVar5 = (bg_portal_data_entry *) + ((int)&ptr_bgdata_portals->offset_portal + iVar7); + } + pbVar8 = pbVar5[1].offset_portal; + } + iVar9 += 1; + iVar7 += 8; + pbVar5 = pbVar5 + 1; + } } - else { - if ((uVar6 == (ulonglong)pbVar5->connectedRoom1) || - (uVar6 == (ulonglong)pbVar5->connectedRoom2)) { - proc_7F0B7DE4((int)param_1,(uint)uVar6,iVar9,param_4 + 1,&fStack16); - pbVar5 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals->offset_portal + iVar7); - } - pbVar8 = pbVar5[1].offset_portal; - } - iVar9 += 1; - iVar7 += 8; - pbVar5 = pbVar5 + 1; - } } - } - return param_1; + return param_1; } @@ -127978,9 +127129,9 @@ LAB_7f0b8264: undefined8 push_arg_to_table(undefined8 param_1) { - *(int *)(&DAT_800448a8 + DAT_800448f8 * 4) = (int)param_1; - DAT_800448f8 = (DAT_800448f8 + 1) % 0x14; - return param_1; + *(int *)(&DAT_800448a8 + DAT_800448f8 * 4) = (int)param_1; + DAT_800448f8 = (DAT_800448f8 + 1) % 0x14; + return param_1; } @@ -127988,8 +127139,8 @@ undefined8 push_arg_to_table(undefined8 param_1) undefined4 pull_arg_from_stack(void) { - DAT_800448f8 = (DAT_800448f8 + 0x13) % 0x14; - return *(undefined4 *)(&DAT_800448a8 + DAT_800448f8 * 4); + DAT_800448f8 = (DAT_800448f8 + 0x13) % 0x14; + return *(undefined4 *)(&DAT_800448a8 + DAT_800448f8 * 4); } @@ -127997,344 +127148,346 @@ undefined4 pull_arg_from_stack(void) undefined4 proc_7F0B83E4(int param_1) { - return *(undefined4 *)(&DAT_800448a8 + (((DAT_800448f8 - param_1) + 0x13) % 0x14) * 4); + return *(undefined4 *)(&DAT_800448a8 + (((DAT_800448f8 - param_1) + 0x13) % 0x14) * 4); } -byte * parse_global_vis_command_list(byte *cmd,uint mode) +byte * parse_global_vis_command_list(vis_command *cmd,uint mode) { - byte bVar1; - bool bVar2; - bool bVar3; - uint uVar6; - uint uVar7; - longlong lVar4; - int iVar8; - ulonglong uVar5; - undefined1 *puVar9; - int iVar10; - float afStack40 [4]; - float afStack24 [6]; - - bVar2 = true; - DAT_80081610 = 0; - if (cmd == NULL) { + byte bVar1; + bool bVar2; + bool bVar3; + uint uVar6; + uint uVar7; + longlong lVar4; + int iVar8; + ulonglong uVar5; + byte *pbVar9; + room_index *prVar10; + int iVar11; + float afStack40 [4]; + float afStack24 [6]; + + bVar2 = true; + DAT_80081610 = 0; + if (cmd == NULL) { LAB_7f0b89f4: - return cmd; - } + return (byte *)cmd; + } LAB_7f0b8480: - do { - bVar1 = *cmd; - while (0x27 < bVar1) { - if (false) { - return cmd; - } - switch((uint)bVar1) { - case 0x50: - cmd = parse_global_vis_command_list(cmd + (uint)cmd[1] * 8,mode); - cmd = cmd + (uint)cmd[1] * 8; - goto LAB_7f0b8480; - case 0x51: - bVar3 = mode != 0; - mode = 0; - cmd = cmd + (uint)cmd[1] * 8; - if (bVar3) { - DAT_80081610 = 1; + do { + bVar1 = cmd->type; + while (0x27 < bVar1) { + if (false) { + return (byte *)cmd; + } + switch((uint)bVar1) { + case 0x50: + pbVar9 = parse_global_vis_command_list(cmd + cmd->size,mode); + cmd = (vis_command *)(pbVar9 + (uint)pbVar9[1] * 8); + goto LAB_7f0b8480; + case 0x51: + bVar3 = mode != 0; + mode = 0; + cmd = cmd + cmd->size; + if (bVar3) { + DAT_80081610 = 1; + } + goto LAB_7f0b8480; + case 0x52: + DAT_80081610 = 0; + return (byte *)(cmd + cmd->size); + default: + return (byte *)cmd; + case 0x5a: + uVar6 = pull_arg_from_stack(); + cmd = (vis_command *)parse_global_vis_command_list(cmd + cmd->size,uVar6 & mode); + if (DAT_80081610 != 0) { + mode = 0; + goto LAB_7f0b8480; + } + bVar1 = cmd->type; + break; + case 0x5b: + mode ^= 1; + cmd = cmd + cmd->size; + goto LAB_7f0b8480; + case 0x5c: + return (byte *)(cmd + cmd->size); + } } - goto LAB_7f0b8480; - case 0x52: - DAT_80081610 = 0; - return cmd + (uint)cmd[1] * 8; - default: - return cmd; - case 0x5a: - uVar6 = pull_arg_from_stack(); - cmd = parse_global_vis_command_list(cmd + (uint)cmd[1] * 8,uVar6 & mode); - if (DAT_80081610 != 0) { - mode = 0; - goto LAB_7f0b8480; + if (false) { + return (byte *)cmd; } - bVar1 = *cmd; - break; - case 0x5b: - mode ^= 1; - cmd = cmd + (uint)cmd[1] * 8; - goto LAB_7f0b8480; - case 0x5c: - return cmd + (uint)cmd[1] * 8; - } - } - if (false) { - return cmd; - } - switch(bVar1) { - case 0: - return cmd; - case 1: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - push_arg_to_table((longlong)*(int *)(cmd + 4)); - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 2: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - pull_arg_from_stack(); - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 3: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - uVar6 = pull_arg_from_stack(); - uVar7 = pull_arg_from_stack(); - push_arg_to_table((longlong)(int)(uVar7 & uVar6)); - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 4: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - uVar6 = pull_arg_from_stack(); - uVar7 = pull_arg_from_stack(); - push_arg_to_table((longlong)(int)(uVar7 | uVar6)); - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 5: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - iVar8 = pull_arg_from_stack(); - push_arg_to_table((ulonglong)(iVar8 == 0)); - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 6: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - uVar6 = pull_arg_from_stack(); - uVar7 = pull_arg_from_stack(); - push_arg_to_table((longlong)(int)(uVar7 ^ uVar6)); - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - default: - goto LAB_7f0b89f4; - case 0x14: - if (mode != 0) { - uVar5 = (ulonglong)(current_room_maybe < *(int *)(cmd + 0xc)) ^ 1; - if (uVar5 != 0) { - uVar5 = (ulonglong)(*(int *)(cmd + 0x14) < current_room_maybe) ^ 1; - } - push_arg_to_table(uVar5); - } - cmd = cmd + (uint)cmd[1] * 8; - break; - case 0x1e: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - DAT_80081600 = pPlayer->screenxminf; - DAT_80081604 = pPlayer->screenyminf; - DAT_80081608 = pPlayer->screenxmaxf; - DAT_8008160c = pPlayer->screenymaxf; - current_visibility = 0; - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 0x1f: - if (mode != 0) { - lVar4 = proc_7F0B5864(); - if (lVar4 == 0) { - current_visibility = 1; - } - else { - lVar4 = vis_is_inline_of_sight((float *)&DAT_80081600,&pPlayer->screenxminf); - if (lVar4 == 0) { - current_visibility = 1; - } - else { - current_visibility = 0; - } - } - } - cmd = cmd + (uint)cmd[1] * 8; - break; - case 0x20: - if (mode == 0) { - uVar6 = (uint)cmd[1]; - } - else { - if (current_visibility == 0) { - lVar4 = proc_7F0B5208(*(int *)(cmd + 0xc),(float *)&DAT_80081600); - if (lVar4 != 0) { - proc_7F0B39BC(*(int *)(cmd + 0xc),0,(float *)&DAT_80081600,0); - (&list_visible_rooms_in_cur_global_vis_packet) - [num_visible_rooms_in_cur_global_vis_packet] = (char)*(undefined4 *)(cmd + 0xc); - num_visible_rooms_in_cur_global_vis_packet += 1; - } - uVar6 = (uint)cmd[1]; - } - else { - uVar6 = (uint)cmd[1]; - } - } - cmd = cmd + uVar6 * 8; - break; - case 0x21: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - current_visibility = 1; - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 0x22: - if (mode == 0) { -LAB_7f0b8704: - uVar6 = (uint)cmd[1]; - } - else { - lVar4 = proc_7F0B5864(); - if (lVar4 == 0) { - uVar6 = (uint)cmd[1]; - } - else { - lVar4 = vis_is_inline_of_sight(afStack24,&pPlayer->screenxminf); - if (lVar4 != 0) { - if (current_visibility == 0) { - proc_7F0B5CC0((float *)&DAT_80081600,afStack24); + switch(bVar1) { + case 0: + return (byte *)cmd; + case 1: + if (mode == 0) { + bVar1 = cmd->size; } else { - proc_7F0B5D58(&DAT_80081600,afStack24); - current_visibility = 0; + push_arg_to_table((longlong)cmd->room); + bVar1 = cmd->size; } - goto LAB_7f0b8704; - } - uVar6 = (uint)cmd[1]; - } - } - cmd = cmd + uVar6 * 8; - break; - case 0x23: - if (mode == 0) { - uVar6 = (uint)cmd[1]; - } - else { - if (current_visibility == 0) { - lVar4 = proc_7F0B5864(); - if (((lVar4 == 0) || - (lVar4 = vis_is_inline_of_sight(afStack40,&pPlayer->screenxminf), lVar4 == 0)) || - (lVar4 = vis_is_inline_of_sight((float *)&DAT_80081600,afStack40), lVar4 == 0)) { - current_visibility = 1; - uVar6 = (uint)cmd[1]; - } - else { - uVar6 = (uint)cmd[1]; - } - } - else { - uVar6 = (uint)cmd[1]; - } - } - cmd = cmd + uVar6 * 8; - break; - case 0x24: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - (&DAT_80041448)[*(int *)(cmd + 0xc) * 0x50] = 1; - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 0x25: - if (mode == 0) { - bVar1 = cmd[1]; - } - else { - iVar8 = *(int *)(cmd + 0xc); - if (iVar8 <= *(int *)(cmd + 0x14)) { - (&DAT_80041448)[iVar8 * 0x50] = 1; - puVar9 = &roominformationblock + iVar8 * 0x50; - while( true ) { - iVar8 += 1; - if (*(int *)(cmd + 0x14) < iVar8) break; - puVar9[0x84] = 1; - puVar9 = puVar9 + 0x50; - } - } - bVar1 = cmd[1]; - } - cmd = cmd + (uint)bVar1 * 8; - break; - case 0x26: - if (mode == 0) { - uVar6 = (uint)cmd[1]; - } - else { - if (bVar2) { - uVar5 = proc_7F0B6314(*(int *)(cmd + 0xc)); - bVar2 = uVar5 == 0; - uVar6 = (uint)cmd[1]; - } - else { - uVar6 = (uint)cmd[1]; - } - } - cmd = cmd + uVar6 * 8; - break; - case 0x27: - if (mode == 0) { - uVar6 = (uint)cmd[1]; - } - else { - iVar8 = *(int *)(cmd + 0xc); - iVar10 = *(int *)(cmd + 0x14); - if (iVar10 < iVar8) { - uVar6 = (uint)cmd[1]; - } - else { - do { - if (bVar2) { - uVar5 = proc_7F0B6314(iVar8); - bVar2 = uVar5 == 0; - iVar10 = *(int *)(cmd + 0x14); + cmd = cmd + bVar1; + break; + case 2: + if (mode == 0) { + bVar1 = cmd->size; } - iVar8 += 1; - } while (iVar8 <= iVar10); - uVar6 = (uint)cmd[1]; + else { + pull_arg_from_stack(); + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 3: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + uVar6 = pull_arg_from_stack(); + uVar7 = pull_arg_from_stack(); + push_arg_to_table((longlong)(int)(uVar7 & uVar6)); + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 4: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + uVar6 = pull_arg_from_stack(); + uVar7 = pull_arg_from_stack(); + push_arg_to_table((longlong)(int)(uVar7 | uVar6)); + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 5: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + iVar8 = pull_arg_from_stack(); + push_arg_to_table((ulonglong)(iVar8 == 0)); + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 6: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + uVar6 = pull_arg_from_stack(); + uVar7 = pull_arg_from_stack(); + push_arg_to_table((longlong)(int)(uVar7 ^ uVar6)); + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + default: + goto LAB_7f0b89f4; + case 0x14: + if (mode != 0) { + uVar5 = (ulonglong)(current_room_maybe < cmd[1].room) ^ 1; + if (uVar5 != 0) { + uVar5 = (ulonglong)(cmd[2].room < current_room_maybe) ^ 1; + } + push_arg_to_table(uVar5); + } + cmd = cmd + cmd->size; + break; + case 0x1e: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + DAT_80081600 = pPlayer->screenxminf; + DAT_80081604 = pPlayer->screenyminf; + DAT_80081608 = pPlayer->screenxmaxf; + DAT_8008160c = pPlayer->screenymaxf; + current_visibility = 0; + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 0x1f: + if (mode != 0) { + lVar4 = proc_7F0B5864(); + if (lVar4 == 0) { + current_visibility = 1; + } + else { + lVar4 = vis_is_inline_of_sight((float *)&DAT_80081600,&pPlayer->screenxminf); + if (lVar4 == 0) { + current_visibility = 1; + } + else { + current_visibility = 0; + } + } + } + cmd = cmd + cmd->size; + break; + case 0x20: + if (mode == 0) { + uVar6 = (uint)cmd->size; + } + else { + if (current_visibility == 0) { + lVar4 = proc_7F0B5208(cmd[1].room,(float *)&DAT_80081600); + if (lVar4 != 0) { + proc_7F0B39BC(cmd[1].room,0,(float *)&DAT_80081600,0); + (&list_visible_rooms_in_cur_global_vis_packet) + [num_visible_rooms_in_cur_global_vis_packet] = (char)cmd[1].room; + num_visible_rooms_in_cur_global_vis_packet += 1; + } + uVar6 = (uint)cmd->size; + } + else { + uVar6 = (uint)cmd->size; + } + } + cmd = cmd + uVar6; + break; + case 0x21: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + current_visibility = 1; + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 0x22: + if (mode == 0) { +LAB_7f0b8704: + uVar6 = (uint)cmd->size; + } + else { + lVar4 = proc_7F0B5864(); + if (lVar4 == 0) { + uVar6 = (uint)cmd->size; + } + else { + lVar4 = vis_is_inline_of_sight(afStack24,&pPlayer->screenxminf); + if (lVar4 != 0) { + if (current_visibility == 0) { + proc_7F0B5CC0((float *)&DAT_80081600,afStack24); + } + else { + proc_7F0B5D58(&DAT_80081600,afStack24); + current_visibility = 0; + } + goto LAB_7f0b8704; + } + uVar6 = (uint)cmd->size; + } + } + cmd = cmd + uVar6; + break; + case 0x23: + if (mode == 0) { + uVar6 = (uint)cmd->size; + } + else { + if (current_visibility == 0) { + lVar4 = proc_7F0B5864(); + if (((lVar4 == 0) || + (lVar4 = vis_is_inline_of_sight(afStack40,&pPlayer->screenxminf), lVar4 == 0 + )) || (lVar4 = vis_is_inline_of_sight((float *)&DAT_80081600,afStack40), + lVar4 == 0)) { + current_visibility = 1; + uVar6 = (uint)cmd->size; + } + else { + uVar6 = (uint)cmd->size; + } + } + else { + uVar6 = (uint)cmd->size; + } + } + cmd = cmd + uVar6; + break; + case 0x24: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + roominformationblock[cmd[1].room].room_loaded_mask = '\x01'; + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 0x25: + if (mode == 0) { + bVar1 = cmd->size; + } + else { + iVar8 = cmd[1].room; + if (iVar8 <= cmd[2].room) { + roominformationblock[iVar8].room_loaded_mask = '\x01'; + prVar10 = roominformationblock + iVar8; + while( true ) { + iVar8 += 1; + if (cmd[2].room < iVar8) break; + prVar10[1].room_loaded_mask = '\x01'; + prVar10 = prVar10 + 1; + } + } + bVar1 = cmd->size; + } + cmd = cmd + bVar1; + break; + case 0x26: + if (mode == 0) { + uVar6 = (uint)cmd->size; + } + else { + if (bVar2) { + uVar5 = proc_7F0B6314(cmd[1].room); + bVar2 = uVar5 == 0; + uVar6 = (uint)cmd->size; + } + else { + uVar6 = (uint)cmd->size; + } + } + cmd = cmd + uVar6; + break; + case 0x27: + if (mode == 0) { + uVar6 = (uint)cmd->size; + } + else { + iVar8 = cmd[1].room; + iVar11 = cmd[2].room; + if (iVar11 < iVar8) { + uVar6 = (uint)cmd->size; + } + else { + do { + if (bVar2) { + uVar5 = proc_7F0B6314(iVar8); + bVar2 = uVar5 == 0; + iVar11 = cmd[2].room; + } + iVar8 += 1; + } while (iVar8 <= iVar11); + uVar6 = (uint)cmd->size; + } + } + cmd = cmd + uVar6; } - } - cmd = cmd + uVar6 * 8; - } - } while( true ); + } while( true ); } @@ -128342,12 +127495,12 @@ LAB_7f0b8704: byte * proc_7F0B8A24(byte *param_1) { - current_visibility = 0; - if (param_1 != NULL) { - proc_7F0B83E4(0); - param_1 = parse_global_vis_command_list(param_1,1); - } - return param_1; + current_visibility = 0; + if (param_1 != NULL) { + proc_7F0B83E4(0); + param_1 = parse_global_vis_command_list((vis_command *)param_1,1); + } + return param_1; } @@ -128358,122 +127511,124 @@ byte * proc_7F0B8A24(byte *param_1) void proc_7F0B8A6C(void) { - byte bVar1; - u32 *puVar3; - undefined *puVar4; - longlong lVar2; - bg_portal_data_entry *pbVar5; - bg_portal_entry *pbVar6; - int iVar7; - int iVar8; - int aiStack28 [3]; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - proc_7F0B908C(); - fStack16 = pPlayer->screenxminf; - fStack12 = pPlayer->screenyminf; - fStack8 = pPlayer->screenxmaxf; - fStack4 = pPlayer->screenymaxf; - proc_7F0B3BC4(); - puVar3 = (u32 *)&roominformationblock; - do { - puVar3 = puVar3 + 0x14; - *(undefined *)puVar3 = 0; - *(undefined *)((int)puVar3 + 1) = 0; - *(undefined *)(puVar3 + 0xd) = 0; - puVar3 = puVar3; - } while (puVar3 < &max_num_rooms); - puVar4 = &dword_800442FC; - do { - puVar4 = puVar4 + 4; - puVar4[1] = 0; - puVar4[2] = 0; - puVar4[3] = 0; - *puVar4 = 0; - puVar4 = puVar4; - } while (puVar4 != &dword_800443C4); - DAT_80044858 = (DAT_80044858 + 1) % 10; - DAT_8007ff98 = 0; - DAT_80044898 = 0; - proc_7F0B7D94(); - proc_7F0B5168(); - proc_7F0B8A24(DAT_8007ff90); - if ((levelentry_index == LEVEL_INDEX_CRAD) || (ptr_bgdata_portals->offset_portal == NULL)) { - if (levelentry_index == LEVEL_INDEX_CRAD) { - proc_7F0B39BC(9,0,&pPlayer->screenxminf,1); - } - iVar7 = 1; - if (1 < (int)max_num_rooms) { - do { - lVar2 = proc_7F0B5208(iVar7,&pPlayer->screenxminf); - if (lVar2 != 0) { - proc_7F0B39BC(iVar7,0,&pPlayer->screenxminf,1); + byte bVar1; + byte bVar2; + room_index *prVar4; + undefined *puVar5; + longlong lVar3; + bg_portal_data_entry *pbVar6; + bg_portal_entry *pbVar7; + int iVar8; + int iVar9; + int aiStack28 [3]; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + proc_7F0B908C(); + fStack16 = pPlayer->screenxminf; + fStack12 = pPlayer->screenyminf; + fStack8 = pPlayer->screenxmaxf; + fStack4 = pPlayer->screenymaxf; + proc_7F0B3BC4(); + prVar4 = roominformationblock; + do { + prVar4 = prVar4 + 1; + *(undefined *)&prVar4->bitflags = 0; + *(undefined *)((int)&prVar4->bitflags + 1) = 0; + prVar4->room_loaded_mask = '\0'; + prVar4 = prVar4; + } while (prVar4 < &max_num_rooms); + puVar5 = &dword_800442FC; + do { + puVar5 = puVar5 + 4; + puVar5[1] = 0; + puVar5[2] = 0; + puVar5[3] = 0; + *puVar5 = 0; + puVar5 = puVar5; + } while (puVar5 != &dword_800443C4); + DAT_80044858 = (DAT_80044858 + 1) % 10; + DAT_8007ff98 = 0; + DAT_80044898 = 0; + proc_7F0B7D94(); + proc_7F0B5168(); + proc_7F0B8A24(DAT_8007ff90); + if ((levelentry_index == LEVEL_INDEX_CRAD) || (ptr_bgdata_portals->offset_portal == NULL)) { + if (levelentry_index == LEVEL_INDEX_CRAD) { + proc_7F0B39BC(9,0,&pPlayer->screenxminf,1); } - iVar7 += 1; - } while (iVar7 < (int)max_num_rooms); - } - pbVar6 = ptr_bgdata_portals->offset_portal; - } - else { - if (levelentry_index == LEVEL_INDEX_CRAD) { - proc_7F0B39BC(9,0,&pPlayer->screenxminf,1); - } - proc_7F0B39BC(current_room_maybe,0,&pPlayer->screenxminf,1); - iVar8 = 0; - iVar7 = 0; - pbVar6 = ptr_bgdata_portals->offset_portal; - pbVar5 = ptr_bgdata_portals; - while (pbVar6 != NULL) { - if (((longlong)(int)current_room_maybe == (ulonglong)pbVar5->connectedRoom1) || - ((longlong)(int)current_room_maybe == (ulonglong)pbVar5->connectedRoom2)) { - proc_7F0B7DE4(0,current_room_maybe,iVar8,1,&fStack16); - pbVar5 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals->offset_portal + iVar7); - } - pbVar6 = pbVar5[1].offset_portal; - iVar8 += 1; - iVar7 += 8; - pbVar5 = pbVar5 + 1; - } - aiStack28[0] = 0; - lVar2 = proc_7F0B7EE4(aiStack28); - while (lVar2 != 0) { - lVar2 = proc_7F0B7EE4(aiStack28); - } - pbVar6 = ptr_bgdata_portals->offset_portal; - } - if (pbVar6 == NULL) { - return; - } - bVar1 = ptr_bgdata_portals->connectedRoom1; - pbVar5 = ptr_bgdata_portals; - do { - if (((&roominformationblock)[(uint)bVar1 * 0x50] == '\0') || - (iVar7 = (uint)pbVar5->connectedRoom2 * 0x50, (&roominformationblock)[iVar7] != '\0')) { - if ((&roominformationblock)[(uint)pbVar5->connectedRoom2 * 0x50] == '\0') { - pbVar6 = pbVar5[1].offset_portal; - } - else { - if ((&roominformationblock)[(uint)bVar1 * 0x50] == '\0') { - (&DAT_80041415)[(uint)bVar1 * 0x50] = 1; - goto LAB_7f0b8d54; + iVar8 = 1; + if (1 < (int)max_num_rooms) { + do { + lVar3 = proc_7F0B5208(iVar8,&pPlayer->screenxminf); + if (lVar3 != 0) { + proc_7F0B39BC(iVar8,0,&pPlayer->screenxminf,1); + } + iVar8 += 1; + } while (iVar8 < (int)max_num_rooms); } - pbVar6 = pbVar5[1].offset_portal; - } + pbVar7 = ptr_bgdata_portals->offset_portal; } else { - (&DAT_80041415)[iVar7] = 1; + if (levelentry_index == LEVEL_INDEX_CRAD) { + proc_7F0B39BC(9,0,&pPlayer->screenxminf,1); + } + proc_7F0B39BC(current_room_maybe,0,&pPlayer->screenxminf,1); + iVar9 = 0; + iVar8 = 0; + pbVar7 = ptr_bgdata_portals->offset_portal; + pbVar6 = ptr_bgdata_portals; + while (pbVar7 != NULL) { + if (((longlong)(int)current_room_maybe == (ulonglong)pbVar6->connectedRoom1) || + ((longlong)(int)current_room_maybe == (ulonglong)pbVar6->connectedRoom2)) { + proc_7F0B7DE4(0,current_room_maybe,iVar9,1,&fStack16); + pbVar6 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals->offset_portal + iVar8); + } + pbVar7 = pbVar6[1].offset_portal; + iVar9 += 1; + iVar8 += 8; + pbVar6 = pbVar6 + 1; + } + aiStack28[0] = 0; + lVar3 = proc_7F0B7EE4(aiStack28); + while (lVar3 != 0) { + lVar3 = proc_7F0B7EE4(aiStack28); + } + pbVar7 = ptr_bgdata_portals->offset_portal; + } + if (pbVar7 == NULL) { + return; + } + bVar1 = ptr_bgdata_portals->connectedRoom1; + pbVar6 = ptr_bgdata_portals; + do { + bVar2 = pbVar6->connectedRoom2; + if ((*(char *)&roominformationblock[bVar1].bitflags == '\0') || + (*(char *)&roominformationblock[bVar2].bitflags != '\0')) { + if (*(char *)&roominformationblock[bVar2].bitflags == '\0') { + pbVar7 = pbVar6[1].offset_portal; + } + else { + if (*(char *)&roominformationblock[bVar1].bitflags == '\0') { + *(undefined *)((int)&roominformationblock[bVar1].bitflags + 1) = 1; + goto LAB_7f0b8d54; + } + pbVar7 = pbVar6[1].offset_portal; + } + } + else { + *(undefined *)((int)&roominformationblock[bVar2].bitflags + 1) = 1; LAB_7f0b8d54: - pbVar6 = pbVar5[1].offset_portal; - } - if (pbVar6 == NULL) { - return; - } - bVar1 = pbVar5[1].connectedRoom1; - pbVar5 = pbVar5 + 1; - } while( true ); + pbVar7 = pbVar6[1].offset_portal; + } + if (pbVar7 == NULL) { + return; + } + bVar1 = pbVar6[1].connectedRoom1; + pbVar6 = pbVar6 + 1; + } while( true ); } @@ -128481,28 +127636,28 @@ LAB_7f0b8d54: uint * proc_7F0B8D78(longlong param_1) { - int *piVar2; - longlong lVar1; - uint *puVar3; - int iVar4; - - if (levelentry_index == LEVEL_INDEX_DAM) { - piVar2 = &DAT_8007ffa0; - iVar4 = 0; - if (0 < NumberOfRoomsDrawn) { - do { - iVar4 += 1; - if (*piVar2 == 0x23) { - piVar2[1] = 0; - break; + struct_8007ffa0_entry *psVar2; + longlong lVar1; + uint *puVar3; + int iVar4; + + if (levelentry_index == LEVEL_INDEX_DAM) { + psVar2 = &struct_8007ffa0_entry_8007ffa0; + iVar4 = 0; + if (0 < NumberOfRoomsDrawn) { + do { + iVar4 += 1; + if (psVar2->index == 0x23) { + psVar2->field_0x4 = 0; + break; + } + psVar2 = psVar2 + 1; + } while (iVar4 < NumberOfRoomsDrawn); } - piVar2 = piVar2 + 7; - } while (iVar4 < NumberOfRoomsDrawn); } - } - lVar1 = proc_7F0B3C8C(param_1); - puVar3 = proc_7F0B4FB4((uint *)lVar1); - return puVar3; + lVar1 = proc_7F0B3C8C(param_1); + puVar3 = proc_7F0B4FB4((uint *)lVar1); + return puVar3; } @@ -128510,45 +127665,45 @@ uint * proc_7F0B8D78(longlong param_1) int proc_7F0B8DF4(ulonglong param_1,int param_2,int param_3) { - byte bVar1; - int iVar2; - int iVar3; - int iVar4; - bg_portal_data_entry *pbVar5; - int *piVar6; - - iVar3 = 0; - iVar2 = 0; - if (ptr_bgdata_portals->offset_portal == NULL) { - return 0; - } - bVar1 = ptr_bgdata_portals->connectedRoom1; - iVar4 = 0; - pbVar5 = ptr_bgdata_portals; - do { - piVar6 = (int *)(param_2 + iVar3 * 4); - if (param_1 == (ulonglong)bVar1) { - *piVar6 = iVar2; + byte bVar1; + int iVar2; + int iVar3; + int iVar4; + bg_portal_data_entry *pbVar5; + int *piVar6; + + iVar3 = 0; + iVar2 = 0; + if (ptr_bgdata_portals->offset_portal == NULL) { + return 0; + } + bVar1 = ptr_bgdata_portals->connectedRoom1; + iVar4 = 0; + pbVar5 = ptr_bgdata_portals; + do { + piVar6 = (int *)(param_2 + iVar3 * 4); + if (param_1 == (ulonglong)bVar1) { + *piVar6 = iVar2; LAB_7f0b8e50: - iVar3 += 1; - } - else { - if (param_1 == (ulonglong)pbVar5->connectedRoom2) { - *piVar6 = iVar2; - goto LAB_7f0b8e50; - } - } - if (param_3 <= iVar3) { - return iVar3; - } - iVar2 += 1; - pbVar5 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals[1].offset_portal + iVar4); - if (pbVar5->offset_portal == NULL) { - return iVar3; - } - bVar1 = pbVar5->connectedRoom1; - iVar4 = iVar4 + 8; - } while( true ); + iVar3 += 1; + } + else { + if (param_1 == (ulonglong)pbVar5->connectedRoom2) { + *piVar6 = iVar2; + goto LAB_7f0b8e50; + } + } + if (param_3 <= iVar3) { + return iVar3; + } + iVar2 += 1; + pbVar5 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals[1].offset_portal + iVar4); + if (pbVar5->offset_portal == NULL) { + return iVar3; + } + bVar1 = pbVar5->connectedRoom1; + iVar4 = iVar4 + 8; + } while( true ); } @@ -128556,24 +127711,24 @@ LAB_7f0b8e50: int proc_7F0B8E98(uint *param_1,int param_2) { - byte bVar1; - int iVar2; - byte *pbVar3; - - iVar2 = 0; - if ((0 < num_visible_rooms_in_cur_global_vis_packet) && (0 < param_2)) { - pbVar3 = &list_visible_rooms_in_cur_global_vis_packet; - bVar1 = list_visible_rooms_in_cur_global_vis_packet; - while( true ) { - iVar2 += 1; - *param_1 = (uint)bVar1; - pbVar3 = pbVar3 + 1; - if ((num_visible_rooms_in_cur_global_vis_packet <= iVar2) || (param_2 <= iVar2)) break; - bVar1 = *pbVar3; - param_1 = param_1 + 1; + byte bVar1; + int iVar2; + byte *pbVar3; + + iVar2 = 0; + if ((0 < num_visible_rooms_in_cur_global_vis_packet) && (0 < param_2)) { + pbVar3 = &list_visible_rooms_in_cur_global_vis_packet; + bVar1 = list_visible_rooms_in_cur_global_vis_packet; + while( true ) { + iVar2 += 1; + *param_1 = (uint)bVar1; + pbVar3 = pbVar3 + 1; + if ((num_visible_rooms_in_cur_global_vis_packet <= iVar2) || (param_2 <= iVar2)) break; + bVar1 = *pbVar3; + param_1 = param_1 + 1; + } } - } - return iVar2; + return iVar2; } @@ -128581,65 +127736,65 @@ int proc_7F0B8E98(uint *param_1,int param_2) int proc_7F0B8EFC(ulonglong param_1,int *param_2,int param_3) { - byte bVar1; - ulonglong uVar2; - int iVar3; - int iVar4; - bg_portal_data_entry *pbVar5; - ulonglong uVar6; - int iVar7; - int *piVar8; - bg_portal_entry *pbVar9; - - if (ptr_bgdata_portals->offset_portal == NULL) { - return 0; - } - iVar4 = 0; - bVar1 = ptr_bgdata_portals->connectedRoom1; - iVar3 = 0; - pbVar5 = ptr_bgdata_portals; - do { - uVar2 = (ulonglong)bVar1; - uVar6 = (ulonglong)pbVar5->connectedRoom2; - if ((ulonglong)bVar1 == param_1) { - uVar2 = (ulonglong)pbVar5->connectedRoom2; - uVar6 = param_1; - } - if (uVar6 == param_1) { - iVar7 = 0; - piVar8 = param_2; - if (0 < iVar3) { - do { - iVar7 += 1; - if (uVar2 == (longlong)*piVar8) { - pbVar9 = pbVar5[1].offset_portal; - iVar7 = iVar3; - goto LAB_7f0b8fa8; - } - piVar8 = piVar8 + 1; - } while (iVar7 != iVar3); - } - iVar7 = iVar3 + 1; - param_2[iVar3] = (int)uVar2; - if (param_3 <= iVar7) { - return iVar7; - } - pbVar5 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals->offset_portal + iVar4); - pbVar9 = pbVar5[1].offset_portal; - } - else { - pbVar9 = pbVar5[1].offset_portal; - iVar7 = iVar3; + byte bVar1; + ulonglong uVar2; + int iVar3; + int iVar4; + int iVar5; + bg_portal_data_entry *pbVar6; + ulonglong uVar7; + int iVar8; + int *piVar9; + bg_portal_entry *pbVar10; + + if (ptr_bgdata_portals->offset_portal == NULL) { + return 0; } + iVar5 = 0; + bVar1 = ptr_bgdata_portals->connectedRoom1; + iVar3 = 0; + pbVar6 = ptr_bgdata_portals; + do { + uVar2 = (ulonglong)bVar1; + uVar7 = (ulonglong)pbVar6->connectedRoom2; + if ((ulonglong)bVar1 == param_1) { + uVar2 = (ulonglong)pbVar6->connectedRoom2; + uVar7 = param_1; + } + iVar4 = iVar3; + if (uVar7 == param_1) { + iVar8 = 0; + piVar9 = param_2; + if (0 < iVar3) { + do { + iVar8 += 1; + if (uVar2 == (longlong)*piVar9) { + pbVar10 = pbVar6[1].offset_portal; + goto LAB_7f0b8fa8; + } + piVar9 = piVar9 + 1; + } while (iVar8 != iVar3); + } + iVar4 = iVar3 + 1; + param_2[iVar3] = (int)uVar2; + if (param_3 <= iVar4) { + return iVar4; + } + pbVar6 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals->offset_portal + iVar5); + pbVar10 = pbVar6[1].offset_portal; + } + else { + pbVar10 = pbVar6[1].offset_portal; + } LAB_7f0b8fa8: - iVar4 += 8; - if (pbVar9 == NULL) { - return iVar7; - } - bVar1 = pbVar5[1].connectedRoom1; - iVar3 = iVar7; - pbVar5 = pbVar5 + 1; - } while( true ); + iVar5 += 8; + if (pbVar10 == NULL) { + return iVar4; + } + bVar1 = pbVar6[1].connectedRoom1; + iVar3 = iVar4; + pbVar6 = pbVar6 + 1; + } while( true ); } @@ -128647,32 +127802,32 @@ LAB_7f0b8fa8: undefined8 proc_7F0B8FD0(ulonglong param_1,ulonglong param_2) { - byte bVar1; - bg_portal_data_entry *pbVar2; - bg_portal_entry *pbVar3; - - if (ptr_bgdata_portals->offset_portal != NULL) { - bVar1 = ptr_bgdata_portals->connectedRoom1; - pbVar2 = ptr_bgdata_portals; - while( true ) { - if (((ulonglong)bVar1 == param_1) && ((ulonglong)pbVar2->connectedRoom2 == param_2)) { - return 1; - } - if ((ulonglong)pbVar2->connectedRoom2 == param_1) { - if ((ulonglong)bVar1 == param_2) { - return 1; + byte bVar1; + bg_portal_data_entry *pbVar2; + bg_portal_entry *pbVar3; + + if (ptr_bgdata_portals->offset_portal != NULL) { + bVar1 = ptr_bgdata_portals->connectedRoom1; + pbVar2 = ptr_bgdata_portals; + while( true ) { + if (((ulonglong)bVar1 == param_1) && ((ulonglong)pbVar2->connectedRoom2 == param_2)) { + return 1; + } + if ((ulonglong)pbVar2->connectedRoom2 == param_1) { + if ((ulonglong)bVar1 == param_2) { + return 1; + } + pbVar3 = pbVar2[1].offset_portal; + } + else { + pbVar3 = pbVar2[1].offset_portal; + } + if (pbVar3 == NULL) break; + bVar1 = pbVar2[1].connectedRoom1; + pbVar2 = pbVar2 + 1; } - pbVar3 = pbVar2[1].offset_portal; - } - else { - pbVar3 = pbVar2[1].offset_portal; - } - if (pbVar3 == NULL) break; - bVar1 = pbVar2[1].connectedRoom1; - pbVar2 = pbVar2 + 1; } - } - return 0; + return 0; } @@ -128680,13 +127835,13 @@ undefined8 proc_7F0B8FD0(ulonglong param_1,ulonglong param_2) float proc_7F0B9040(int param_1,float param_2,float param_3) { - float in_a1_lo; - float in_a2_lo; - int iVar1; - - iVar1 = (int)((float)(&dword_80041404)[param_1] * in_a1_lo + in_a2_lo); - (&dword_80041404)[param_1] = iVar1; - return (float)iVar1; + float in_a1_lo; + float in_a2_lo; + int iVar1; + + iVar1 = (int)((float)(&dword_80041404)[param_1] * in_a1_lo + in_a2_lo); + (&dword_80041404)[param_1] = iVar1; + return (float)iVar1; } @@ -128694,63 +127849,63 @@ float proc_7F0B9040(int param_1,float param_2,float param_3) void proc_7F0B908C(void) { - short sVar1; - short sVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - - fVar4 = (float)dword_80041404; - fVar7 = (float)dword_80041408; - sVar1 = get_video2_settings_txtClipW(); - fVar6 = (float)dword_8004140C + (float)(int)sVar1; - sVar1 = get_video2_settings_txtClipH(); - fVar5 = (float)dword_80041410 + (float)(int)sVar1; - sVar1 = get_video2_settings_ulx(); - pPlayer->screenxminf = (float)(int)sVar1; - fVar3 = pPlayer->screenxminf; - if (fVar3 < fVar4) { - pPlayer->screenxminf = fVar4; + short sVar1; + short sVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + + fVar4 = (float)dword_80041404; + fVar7 = (float)dword_80041408; + sVar1 = get_video2_settings_txtClipW(); + fVar6 = (float)dword_8004140C + (float)(int)sVar1; + sVar1 = get_video2_settings_txtClipH(); + fVar5 = (float)dword_80041410 + (float)(int)sVar1; + sVar1 = get_video2_settings_ulx(); + pPlayer->screenxminf = (float)(int)sVar1; fVar3 = pPlayer->screenxminf; - } - if (fVar6 < fVar3) { - pPlayer->screenxminf = fVar6; - } - sVar1 = get_video2_settings_uly(); - pPlayer->screenyminf = (float)(int)sVar1; - fVar3 = pPlayer->screenyminf; - if (fVar3 < fVar7) { - pPlayer->screenyminf = fVar7; + if (fVar3 < fVar4) { + pPlayer->screenxminf = fVar4; + fVar3 = pPlayer->screenxminf; + } + if (fVar6 < fVar3) { + pPlayer->screenxminf = fVar6; + } + sVar1 = get_video2_settings_uly(); + pPlayer->screenyminf = (float)(int)sVar1; fVar3 = pPlayer->screenyminf; - } - if (fVar5 < fVar3) { - pPlayer->screenyminf = fVar5; - } - sVar1 = get_video2_settings_ulx(); - sVar2 = get_video2_settings_width(); - pPlayer->screenxmaxf = (float)((int)sVar2 + (int)sVar1); - fVar3 = pPlayer->screenxmaxf; - if (fVar3 < fVar4) { - pPlayer->screenxmaxf = fVar4; + if (fVar3 < fVar7) { + pPlayer->screenyminf = fVar7; + fVar3 = pPlayer->screenyminf; + } + if (fVar5 < fVar3) { + pPlayer->screenyminf = fVar5; + } + sVar1 = get_video2_settings_ulx(); + sVar2 = get_video2_settings_width(); + pPlayer->screenxmaxf = (float)((int)sVar2 + (int)sVar1); fVar3 = pPlayer->screenxmaxf; - } - if (fVar6 < fVar3) { - pPlayer->screenxmaxf = fVar6; - } - sVar1 = get_video2_settings_uly(); - sVar2 = get_video2_settings_height(); - pPlayer->screenymaxf = (float)((int)sVar2 + (int)sVar1); - fVar3 = pPlayer->screenymaxf; - if (fVar3 < fVar7) { - pPlayer->screenymaxf = fVar7; + if (fVar3 < fVar4) { + pPlayer->screenxmaxf = fVar4; + fVar3 = pPlayer->screenxmaxf; + } + if (fVar6 < fVar3) { + pPlayer->screenxmaxf = fVar6; + } + sVar1 = get_video2_settings_uly(); + sVar2 = get_video2_settings_height(); + pPlayer->screenymaxf = (float)((int)sVar2 + (int)sVar1); fVar3 = pPlayer->screenymaxf; - } - if (fVar5 < fVar3) { - pPlayer->screenymaxf = fVar5; - } - return; + if (fVar3 < fVar7) { + pPlayer->screenymaxf = fVar7; + fVar3 = pPlayer->screenymaxf; + } + if (fVar5 < fVar3) { + pPlayer->screenymaxf = fVar5; + } + return; } @@ -128758,27 +127913,27 @@ void proc_7F0B908C(void) void proc_7F0B92B4(int param_1,float *param_2) { - int iVar1; - undefined1 *puVar2; - float fVar3; - - param_1 *= 0x50; - iVar1 = 1; - fVar3 = (*(float *)(&DAT_80041458 + param_1) + *(float *)(&DAT_8004144c + param_1)) * 0.50000000; - if (true) { - *param_2 = fVar3; - puVar2 = &roominformationblock + param_1; - while( true ) { - iVar1 += 1; - param_2 = param_2 + 1; - fVar3 = (*(float *)(puVar2 + 0x48) + *(float *)(puVar2 + 0x3c)) * 0.50000000; - if (iVar1 == 3) break; - *param_2 = fVar3; - puVar2 = puVar2 + 4; + int iVar1; + room_index *local_a2_lo_76; + float fVar2; + + iVar1 = 1; + fVar2 = (roominformationblock[param_1].maxxbounds + roominformationblock[param_1].minxbounds) * + 0.50000000; + if (true) { + *param_2 = fVar2; + local_a2_lo_76 = roominformationblock + param_1; + while( true ) { + iVar1 += 1; + param_2 = param_2 + 1; + fVar2 = (local_a2_lo_76->maxybounds + local_a2_lo_76->minybounds) * 0.50000000; + if (iVar1 == 3) break; + *param_2 = fVar2; + local_a2_lo_76 = (room_index *)&local_a2_lo_76->ptr_point_index; + } } - } - *param_2 = fVar3; - return; + *param_2 = fVar2; + return; } @@ -128786,100 +127941,101 @@ void proc_7F0B92B4(int param_1,float *param_2) void proc_7F0B9338(int param_1) { - char cVar1; - short sVar2; - short *psVar3; - int iVar4; - int iVar5; - short *psVar6; - undefined1 *puVar7; - short *psVar8; - short *psVar9; - bg_room_data *pbVar10; - short sVar11; - int iVar12; - short local_18; - undefined2 local_16; - undefined2 local_14; - short local_12; - undefined2 local_10; - undefined2 local_e; - - pbVar10 = ptr_bgdata_room_fileposition_list + param_1; - if (pbVar10->xpos == 0.00000000) { - if ((param_1 < DAT_8007b9dc) && ((&DAT_8007b128)[param_1] != 0)) { - psVar8 = &DAT_8007b358 + param_1 * 6; - iVar4 = 0; - puVar7 = &roominformationblock + param_1 * 0x50; - do { - pbVar10 = ptr_bgdata_room_fileposition_list; - sVar2 = psVar8[3]; - iVar12 = (int)sVar2 + (int)*psVar8; - iVar5 = iVar4 + 4; - *(float *)(puVar7 + 0x38) = (float)(int)*psVar8; - psVar8 = psVar8 + 1; - *(float *)(puVar7 + 0x44) = (float)(int)sVar2; - if (iVar12 < 0) { - iVar12 += 1; + char cVar1; + short sVar2; + short *psVar3; + int iVar4; + int iVar5; + short *psVar6; + room_index *prVar7; + short *psVar8; + short *psVar9; + bg_room_data *pbVar10; + short sVar11; + int iVar12; + short local_18 [3]; + short local_12 [9]; + + pbVar10 = ptr_bgdata_room_fileposition_list + param_1; + if (pbVar10->xpos == 0.00000000) { + if ((param_1 < DAT_8007b9dc) && ((&DAT_8007b128)[param_1] != 0)) { + psVar8 = &DAT_8007b358 + param_1 * 6; + iVar4 = 0; + prVar7 = roominformationblock + param_1; + do { + pbVar10 = ptr_bgdata_room_fileposition_list; + sVar2 = psVar8[3]; + iVar12 = (int)sVar2 + (int)*psVar8; + iVar5 = iVar4 + 4; + prVar7->minxbounds = (float)(int)*psVar8; + psVar8 = psVar8 + 1; + prVar7->maxxbounds = (float)(int)sVar2; + if (iVar12 < 0) { + iVar12 += 1; + } + *(float *)((int)&pbVar10[param_1].pPointTableBin + iVar4) = (float)(iVar12 >> 1); + iVar4 = iVar5; + prVar7 = (room_index *)&prVar7->ptr_point_index; + } while (iVar5 != 0xc); } - *(float *)((int)&pbVar10[param_1].pPointTableBin + iVar4) = (float)(iVar12 >> 1); - iVar4 = iVar5; - puVar7 = puVar7 + 4; - } while (iVar5 != 0xc); - } - } - else { - iVar4 = param_1 * 0x50; - cVar1 = (&DAT_80041416)[iVar4]; - if (cVar1 == '\0') { - proc_7F0B6368(param_1); - pbVar10 = ptr_bgdata_room_fileposition_list + param_1; - psVar8 = *(short **)(&dword_80041418 + iVar4); } else { - psVar8 = *(short **)(&dword_80041418 + iVar4); + cVar1 = roominformationblock[param_1].model_bin_loaded; + if (cVar1 == '\0') { + proc_7F0B6368(param_1); + pbVar10 = ptr_bgdata_room_fileposition_list + param_1; + psVar8 = (short *)roominformationblock[param_1].ptr_point_index; + } + else { + psVar8 = (short *)roominformationblock[param_1].ptr_point_index; + } + psVar9 = (short *)(roominformationblock[param_1].usize_point_index_binary + (int)psVar8); + local_18[0] = 0x7fff; + local_18[1] = 0x7fff; + local_18[2] = 0x7fff; + local_12[0] = -0x7fff; + local_12[1] = -0x7fff; + local_12[2] = -0x7fff; + if (psVar8 < psVar9) { + do { + psVar3 = local_18; + psVar6 = psVar8; + do { + sVar2 = *psVar6; + if (sVar2 < *psVar3) { + *psVar3 = sVar2; + sVar2 = *psVar6; + sVar11 = psVar3[3]; + } + else { + sVar11 = psVar3[3]; + } + if (sVar11 < sVar2) { + psVar3[3] = sVar2; + } + psVar3 = psVar3 + 1; + psVar6 = psVar6 + 1; + } while (psVar3 != local_12); + psVar8 = psVar8 + 8; + } while (psVar8 < psVar9); + } + roominformationblock[param_1].minxbounds = + (float)pbVar10->pPointTableBin + (float)(int)local_18[0]; + roominformationblock[param_1].minybounds = + (float)pbVar10->pPriMappingBin + (float)(int)local_18[1]; + roominformationblock[param_1].minzbounds = + (float)pbVar10->pSecMappingBin + (float)(int)local_18[2]; + roominformationblock[param_1].maxxbounds = + (float)pbVar10->pPointTableBin + (float)(int)local_12[0]; + roominformationblock[param_1].maxybounds = + (float)pbVar10->pPriMappingBin + (float)(int)local_12[1]; + roominformationblock[param_1].maxzbounds = + (float)pbVar10->pSecMappingBin + (float)(int)local_12[2]; + if (cVar1 == '\0') { + proc_7F0B65C4(param_1); + } } - psVar9 = (short *)(*(int *)(&DAT_80041430 + iVar4) + (int)psVar8); - local_18 = 0x7fff; - local_16 = 0x7fff; - local_14 = 0x7fff; - local_12 = -0x7fff; - local_10 = 0x8001; - local_e = 0x8001; - if (psVar8 < psVar9) { - do { - psVar3 = &local_18; - psVar6 = psVar8; - do { - sVar2 = *psVar6; - if (sVar2 < *psVar3) { - *psVar3 = sVar2; - sVar2 = *psVar6; - sVar11 = psVar3[3]; - } - else { - sVar11 = psVar3[3]; - } - if (sVar11 < sVar2) { - psVar3[3] = sVar2; - } - psVar3 = psVar3 + 1; - psVar6 = psVar6 + 1; - } while (psVar3 != &local_12); - psVar8 = psVar8 + 8; - } while (psVar8 < psVar9); - } - *(float *)(&DAT_8004144c + iVar4) = (float)pbVar10->pPointTableBin + 32767.00000000; - *(float *)(&DAT_80041450 + iVar4) = (float)pbVar10->pPriMappingBin + 32767.00000000; - *(float *)(&DAT_80041454 + iVar4) = (float)pbVar10->pSecMappingBin + 32767.00000000; - *(float *)(&DAT_80041458 + iVar4) = (float)pbVar10->pPointTableBin + -32767.00000000; - *(float *)(&DAT_8004145c + iVar4) = (float)pbVar10->pPriMappingBin + -32767.00000000; - *(float *)(&DAT_80041460 + iVar4) = (float)pbVar10->pSecMappingBin + -32767.00000000; - if (cVar1 == '\0') { - proc_7F0B65C4(param_1); - } - } - return; + return; } @@ -128887,67 +128043,67 @@ void proc_7F0B9338(int param_1) int proc_7F0B95D8(ulonglong param_1) { - byte bVar1; - int iVar2; - bg_portal_data_entry *pbVar3; - longlong lVar4; - int iVar5; - undefined1 *puVar6; - bg_portal_entry *pbVar7; - float fVar8; - float fVar9; - - iVar2 = 0; - if (ptr_bgdata_portals->offset_portal == NULL) { - return 0; - } - bVar1 = ptr_bgdata_portals->connectedRoom1; - pbVar3 = ptr_bgdata_portals; - do { - if (param_1 == (ulonglong)bVar1) { - pbVar7 = pbVar3->offset_portal; -LAB_7f0b9614: - lVar4 = 0; - if (pbVar7->numPoints != '\0') { - do { - iVar5 = 0; - puVar6 = &roominformationblock + (int)param_1 * 0x50; - do { - fVar8 = *(float *)((int)&(&pbVar7->point)[(int)lVar4].x + iVar5); - iVar5 += 4; - if (fVar8 < *(float *)(puVar6 + 0x38)) { - *(float *)(puVar6 + 0x38) = fVar8; - iVar2 += 1; - fVar9 = *(float *)(puVar6 + 0x44); - } - else { - fVar9 = *(float *)(puVar6 + 0x44); - } - if (fVar9 < fVar8) { - *(float *)(puVar6 + 0x44) = fVar8; - iVar2 += 1; - } - puVar6 = puVar6 + 4; + byte bVar1; + int iVar2; + bg_portal_data_entry *pbVar3; + longlong lVar4; + int iVar5; + room_index *prVar6; + bg_portal_entry *pbVar7; + float fVar8; + float fVar9; + + iVar2 = 0; + if (ptr_bgdata_portals->offset_portal == NULL) { + return 0; + } + bVar1 = ptr_bgdata_portals->connectedRoom1; + pbVar3 = ptr_bgdata_portals; + do { + if (param_1 == (ulonglong)bVar1) { pbVar7 = pbVar3->offset_portal; - } while (iVar5 != 0xc); - lVar4 = (longlong)((int)lVar4 + 1); - } while (lVar4 < (longlong)(ulonglong)pbVar7->numPoints); - } - pbVar7 = pbVar3[1].offset_portal; - } - else { - if (param_1 == (ulonglong)pbVar3->connectedRoom2) { - pbVar7 = pbVar3->offset_portal; - goto LAB_7f0b9614; - } - pbVar7 = pbVar3[1].offset_portal; - } - if (pbVar7 == NULL) { - return iVar2; - } - bVar1 = pbVar3[1].connectedRoom1; - pbVar3 = pbVar3 + 1; - } while( true ); +LAB_7f0b9614: + lVar4 = 0; + if (pbVar7->numPoints != '\0') { + do { + iVar5 = 0; + prVar6 = roominformationblock + (int)param_1; + do { + fVar8 = *(float *)((int)&(&pbVar7->point)[(int)lVar4].x + iVar5); + iVar5 += 4; + if (fVar8 < prVar6->minxbounds) { + prVar6->minxbounds = fVar8; + iVar2 += 1; + fVar9 = prVar6->maxxbounds; + } + else { + fVar9 = prVar6->maxxbounds; + } + if (fVar9 < fVar8) { + prVar6->maxxbounds = fVar8; + iVar2 += 1; + } + prVar6 = (room_index *)&prVar6->ptr_point_index; + pbVar7 = pbVar3->offset_portal; + } while (iVar5 != 0xc); + lVar4 = (longlong)((int)lVar4 + 1); + } while (lVar4 < (longlong)(ulonglong)pbVar7->numPoints); + } + pbVar7 = pbVar3[1].offset_portal; + } + else { + if (param_1 == (ulonglong)pbVar3->connectedRoom2) { + pbVar7 = pbVar3->offset_portal; + goto LAB_7f0b9614; + } + pbVar7 = pbVar3[1].offset_portal; + } + if (pbVar7 == NULL) { + return iVar2; + } + bVar1 = pbVar3[1].connectedRoom1; + pbVar3 = pbVar3 + 1; + } while( true ); } @@ -128955,90 +128111,90 @@ LAB_7f0b9614: void proc_7F0B96CC(int param_1,float *param_2) { - float *pfVar1; - byte *pbVar2; - int iVar3; - bg_portal_entry *pbVar4; - u8 *puVar5; - bg_portal_data_entry *pbVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - undefined auStackX0 [16]; - float fStack24; - float fStack20; - float fStack16; - float fStack12; - float fStack8; - float fStack4; - - iVar3 = 0; - pbVar6 = ptr_bgdata_portals + param_1; - pbVar4 = pbVar6->offset_portal; - pfVar1 = &fStack8; - while (pfVar1 < register0x000000ec) { - puVar5 = &pbVar4->numPoints + iVar3; - iVar3 += 4; - pfVar1[-1] = *(float *)(puVar5 + 4) - *(float *)(puVar5 + 0x10); + float *pfVar1; + byte *pbVar2; + int iVar3; + bg_portal_entry *pbVar4; + u8 *puVar5; + bg_portal_data_entry *pbVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + undefined auStackX0 [16]; + float fStack24; + float fStack20; + float fStack16; + float fStack12; + float fStack8; + float fStack4; + + iVar3 = 0; + pbVar6 = ptr_bgdata_portals + param_1; pbVar4 = pbVar6->offset_portal; - pfVar1 = pfVar1 + 1; - } - pfVar1[-1] = *(float *)(&pbVar4->numPoints + iVar3 + 4) - - *(float *)(&pbVar4->numPoints + iVar3 + 0x10); - iVar3 = 0; - pbVar4 = pbVar6->offset_portal; - pfVar1 = &fStack20; - while (pfVar1 < &fStack12) { - puVar5 = &pbVar4->numPoints + iVar3; - iVar3 += 4; - pfVar1[-1] = *(float *)(puVar5 + 0x1c) - *(float *)(puVar5 + 0x10); + pfVar1 = &fStack8; + while (pfVar1 < register0x000000ec) { + puVar5 = &pbVar4->numPoints + iVar3; + iVar3 += 4; + pfVar1[-1] = *(float *)(puVar5 + 4) - *(float *)(puVar5 + 0x10); + pbVar4 = pbVar6->offset_portal; + pfVar1 = pfVar1 + 1; + } + pfVar1[-1] = *(float *)(&pbVar4->numPoints + iVar3 + 4) - + *(float *)(&pbVar4->numPoints + iVar3 + 0x10); + iVar3 = 0; pbVar4 = pbVar6->offset_portal; - pfVar1 = pfVar1 + 1; - } - pfVar1[-1] = *(float *)(&pbVar4->numPoints + iVar3 + 0x1c) - - *(float *)(&pbVar4->numPoints + iVar3 + 0x10); - *param_2 = fStack8 * fStack16 - fStack20 * fStack4; - param_2[1] = fStack4 * fStack24 - fStack16 * fStack12; - param_2[2] = fStack12 * fStack20 - fStack24 * fStack8; - fVar7 = sqrtf(param_2[2] * param_2[2] + *param_2 * *param_2 + param_2[1] * param_2[1]); - iVar3 = 0; - if (fVar7 == 0.00000000) { - fVar9 = *param_2; - } - else { - fVar7 = 1.00000000 / fVar7; - fVar9 = *param_2; - } - *param_2 = fVar9 * fVar7; - param_2[1] = param_2[1] * fVar7; - param_2[2] = param_2[2] * fVar7; - pbVar4 = ptr_bgdata_portals[param_1].offset_portal; - pbVar2 = &pbVar4->numPoints; - fVar7 = flt_80058D54; - fVar9 = flt_80058D58; - if (*pbVar2 != 0) { - fVar8 = flt_80058D54; - fVar10 = flt_80058D58; - do { - iVar3 += 0xc; - fVar9 = param_2[2] * (pbVar4->point).z + - (pbVar4->point).x * *param_2 + (pbVar4->point).y * param_2[1]; - fVar7 = fVar9; - if (fVar8 <= fVar9) { - fVar7 = fVar8; - } - if (fVar9 <= fVar10) { - fVar9 = fVar10; - } - pbVar4 = (bg_portal_entry *)&(pbVar4->point).z; - fVar8 = fVar7; - fVar10 = fVar9; - } while (iVar3 < (int)((uint)*pbVar2 * 0xc)); - } - param_2[3] = fVar7; - param_2[4] = fVar9; - return; + pfVar1 = &fStack20; + while (pfVar1 < &fStack12) { + puVar5 = &pbVar4->numPoints + iVar3; + iVar3 += 4; + pfVar1[-1] = *(float *)(puVar5 + 0x1c) - *(float *)(puVar5 + 0x10); + pbVar4 = pbVar6->offset_portal; + pfVar1 = pfVar1 + 1; + } + pfVar1[-1] = *(float *)(&pbVar4->numPoints + iVar3 + 0x1c) - + *(float *)(&pbVar4->numPoints + iVar3 + 0x10); + *param_2 = fStack8 * fStack16 - fStack20 * fStack4; + param_2[1] = fStack4 * fStack24 - fStack16 * fStack12; + param_2[2] = fStack12 * fStack20 - fStack24 * fStack8; + fVar7 = sqrtf(param_2[2] * param_2[2] + *param_2 * *param_2 + param_2[1] * param_2[1]); + iVar3 = 0; + if (fVar7 == 0.00000000) { + fVar9 = *param_2; + } + else { + fVar7 = 1.00000000 / fVar7; + fVar9 = *param_2; + } + *param_2 = fVar9 * fVar7; + param_2[1] = param_2[1] * fVar7; + param_2[2] = param_2[2] * fVar7; + pbVar4 = ptr_bgdata_portals[param_1].offset_portal; + pbVar2 = &pbVar4->numPoints; + fVar7 = flt_80058D54; + fVar9 = flt_80058D58; + if (*pbVar2 != 0) { + fVar8 = flt_80058D54; + fVar10 = flt_80058D58; + do { + iVar3 += 0xc; + fVar9 = param_2[2] * (float)(pbVar4->point).z + + (float)(pbVar4->point).x * *param_2 + (float)(pbVar4->point).y * param_2[1]; + fVar7 = fVar9; + if (fVar8 <= fVar9) { + fVar7 = fVar8; + } + if (fVar9 <= fVar10) { + fVar9 = fVar10; + } + pbVar4 = (bg_portal_entry *)&(pbVar4->point).z; + fVar8 = fVar7; + fVar10 = fVar9; + } while (iVar3 < (int)((uint)*pbVar2 * 0xc)); + } + param_2[3] = fVar7; + param_2[4] = fVar9; + return; } @@ -129046,11 +128202,11 @@ void proc_7F0B96CC(int param_1,float *param_2) ulonglong proc_7F0B993C(int param_1) { - float afStack20 [2]; - float fStack12; - - proc_7F0B96CC(param_1,afStack20); - return (ulonglong)(flt_80058D5C <= fStack12 * fStack12 + afStack20[0] * afStack20[0]); + float afStack20 [2]; + float fStack12; + + proc_7F0B96CC(param_1,afStack20); + return (ulonglong)(flt_80058D5C <= fStack12 * fStack12 + afStack20[0] * afStack20[0]); } @@ -129058,33 +128214,33 @@ ulonglong proc_7F0B993C(int param_1) float proc_7F0B9990(int param_1) { - byte bVar1; - uint uVar2; - uint uVar3; - float fVar4; - - bVar1 = *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); - uVar3 = (int)(uint)bVar1 >> 4; - fVar4 = (float)((uint)bVar1 & 0xf) * 0.25000000; - if (uVar3 != 0) { - uVar2 = -(uVar3 & 3) + uVar3; - if (-(uVar3 & 3) != 0) { - do { - uVar3 -= 1; - fVar4 = fVar4 + fVar4; - } while (uVar2 != uVar3); - if (uVar3 == 0) { - return fVar4; - } + byte bVar1; + uint uVar2; + uint uVar3; + float fVar4; + + bVar1 = *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); + uVar3 = (int)(uint)bVar1 >> 4; + fVar4 = (float)((uint)bVar1 & 0xf) * 0.25000000; + if (uVar3 != 0) { + uVar2 = -(uVar3 & 3) + uVar3; + if (-(uVar3 & 3) != 0) { + do { + uVar3 -= 1; + fVar4 = fVar4 + fVar4; + } while (uVar2 != uVar3); + if (uVar3 == 0) { + return fVar4; + } + } + do { + uVar3 -= 4; + fVar4 = fVar4 + fVar4 + fVar4 + fVar4; + fVar4 = fVar4 + fVar4; + fVar4 = fVar4 + fVar4; + } while (uVar3 != 0); } - do { - uVar3 -= 4; - fVar4 = fVar4 + fVar4 + fVar4 + fVar4; - fVar4 = fVar4 + fVar4; - fVar4 = fVar4 + fVar4; - } while (uVar3 != 0); - } - return fVar4; + return fVar4; } @@ -129092,7 +128248,7 @@ float proc_7F0B9990(int param_1) ulonglong proc_7F0B9A14(int param_1) { - return (ulonglong)*(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); + return (ulonglong)*(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); } @@ -129100,21 +128256,21 @@ ulonglong proc_7F0B9A14(int param_1) void proc_7F0B9A2C(int param_1) { - char cVar1; - byte bVar2; - - cVar1 = *(char *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); - bVar2 = cVar1 + 1; - if (cVar1 == -1) { - bVar2 = 0xff; - } - else { - if ((int)(uint)bVar2 >> 4 != 0) { - bVar2 |= 8; + char cVar1; + byte bVar2; + + cVar1 = *(char *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); + bVar2 = cVar1 + 1; + if (cVar1 == -1) { + bVar2 = 0xff; } - } - *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1) = bVar2; - return; + else { + if ((int)(uint)bVar2 >> 4 != 0) { + bVar2 |= 8; + } + } + *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1) = bVar2; + return; } @@ -129122,24 +128278,24 @@ void proc_7F0B9A2C(int param_1) void proc_7F0B9A7C(int param_1) { - uint uVar1; - byte bVar2; - - bVar2 = *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); - if ((int)(uint)bVar2 >> 4 == 0) { - if (bVar2 != 0) { - bVar2 -= 1; + uint uVar1; + byte bVar2; + + bVar2 = *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1); + if ((int)(uint)bVar2 >> 4 == 0) { + if (bVar2 != 0) { + bVar2 -= 1; + } } - } - else { - uVar1 = (uint)bVar2 - 1; - bVar2 = (byte)uVar1; - if ((uVar1 & 0xf) < 8) { - bVar2 -= 8; + else { + uVar1 = (uint)bVar2 - 1; + bVar2 = (byte)uVar1; + if ((uVar1 & 0xf) < 8) { + bVar2 -= 8; + } } - } - *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1) = bVar2; - return; + *(byte *)((int)&ptr_bgdata_portals[param_1].controlbytes + 1) = bVar2; + return; } @@ -129147,7 +128303,7 @@ void proc_7F0B9A7C(int param_1) ulonglong proc_7F0B9AE4(int param_1) { - return (ulonglong)*(byte *)&ptr_bgdata_portals[param_1].controlbytes & 1; + return (ulonglong)*(byte *)&ptr_bgdata_portals[param_1].controlbytes & 1; } @@ -129155,7 +128311,7 @@ ulonglong proc_7F0B9AE4(int param_1) ulonglong proc_7F0B9B04(int param_1) { - return (ulonglong)*(byte *)&ptr_bgdata_portals[param_1].controlbytes & 2; + return (ulonglong)*(byte *)&ptr_bgdata_portals[param_1].controlbytes & 2; } @@ -129163,9 +128319,9 @@ ulonglong proc_7F0B9B04(int param_1) void proc_7F0B9B24(int param_1) { - *(byte *)&ptr_bgdata_portals[param_1].controlbytes = - *(byte *)&ptr_bgdata_portals[param_1].controlbytes | 2; - return; + *(byte *)&ptr_bgdata_portals[param_1].controlbytes = + *(byte *)&ptr_bgdata_portals[param_1].controlbytes | 2; + return; } @@ -129173,9 +128329,9 @@ void proc_7F0B9B24(int param_1) void proc_7F0B9B44(int param_1) { - *(byte *)&ptr_bgdata_portals[param_1].controlbytes = - *(byte *)&ptr_bgdata_portals[param_1].controlbytes & 0xfd; - return; + *(byte *)&ptr_bgdata_portals[param_1].controlbytes = + *(byte *)&ptr_bgdata_portals[param_1].controlbytes & 0xfd; + return; } @@ -129183,14 +128339,14 @@ void proc_7F0B9B44(int param_1) void proc_7F0B9B64(int param_1) { - u8 uVar1; - bg_portal_data_entry *pbVar2; - - pbVar2 = ptr_bgdata_portals + param_1; - uVar1 = pbVar2->connectedRoom1; - pbVar2->connectedRoom1 = pbVar2->connectedRoom2; - ptr_bgdata_portals[param_1].connectedRoom2 = uVar1; - return; + u8 uVar1; + bg_portal_data_entry *pbVar2; + + pbVar2 = ptr_bgdata_portals + param_1; + uVar1 = pbVar2->connectedRoom1; + pbVar2->connectedRoom1 = pbVar2->connectedRoom2; + ptr_bgdata_portals[param_1].connectedRoom2 = uVar1; + return; } @@ -129198,39 +128354,39 @@ void proc_7F0B9B64(int param_1) void proc_7F0B9B94(int param_1) { - byte bVar1; - bool bVar2; - float fVar3; - float local_2c; - float local_28; - float local_24; - float local_20; - float local_1c; - float local_18; - float local_14; - float local_10; - float local_c; - float local_8; - float local_4; - - bVar1 = ptr_bgdata_portals[param_1].connectedRoom2; - proc_7F0B92B4((uint)ptr_bgdata_portals[param_1].connectedRoom1,&local_c); - proc_7F0B92B4((uint)bVar1,&local_18); - proc_7F0B96CC(param_1,&local_2c); - bVar2 = local_1c < local_4 * local_24 + local_2c * local_c + local_28 * local_8; - if (bVar2) { - proc_7F0B9B64(param_1); - fVar3 = -local_1c; - local_1c = -local_20; - local_28 = -local_28; - local_24 = -local_24; - local_2c = -local_2c; - local_20 = fVar3; - } - if ((local_10 * local_24 + local_2c * local_18 + local_28 * local_14 <= local_20) && (bVar2)) { - proc_7F0B9B64(param_1); - } - return; + byte bVar1; + bool bVar2; + float fVar3; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + float local_4; + + bVar1 = ptr_bgdata_portals[param_1].connectedRoom2; + proc_7F0B92B4((uint)ptr_bgdata_portals[param_1].connectedRoom1,&local_c); + proc_7F0B92B4((uint)bVar1,&local_18); + proc_7F0B96CC(param_1,&local_2c); + bVar2 = local_1c < local_4 * local_24 + local_2c * local_c + local_28 * local_8; + if (bVar2) { + proc_7F0B9B64(param_1); + fVar3 = -local_1c; + local_1c = -local_20; + local_28 = -local_28; + local_24 = -local_24; + local_2c = -local_2c; + local_20 = fVar3; + } + if ((local_10 * local_24 + local_2c * local_18 + local_28 * local_14 <= local_20) && (bVar2)) { + proc_7F0B9B64(param_1); + } + return; } @@ -129238,37 +128394,37 @@ void proc_7F0B9B94(int param_1) int proc_7F0B9CC8(ulonglong param_1,ulonglong param_2,float *param_3,float *param_4) { - byte bVar1; - bg_portal_data_entry *pbVar3; - longlong lVar2; - int iVar4; - int iVar5; - int iVar6; - int iVar7; - - iVar7 = -1; - iVar4 = 0; - if (ptr_bgdata_portals->offset_portal != NULL) { - bVar1 = ptr_bgdata_portals->connectedRoom1; - iVar6 = iVar7; - iVar5 = 0; - pbVar3 = ptr_bgdata_portals; - while( true ) { - if ((((param_1 == (ulonglong)bVar1) && (param_2 == (ulonglong)pbVar3->connectedRoom2)) || - ((iVar7 = iVar6, param_2 == (ulonglong)bVar1 && - (iVar7 = iVar6, param_1 == (ulonglong)pbVar3->connectedRoom2)))) && - (lVar2 = proc_7F0B9F14(iVar4,param_3,param_4), iVar7 = iVar4, lVar2 == 0)) { - iVar7 = iVar6; - } - iVar4 += 1; - pbVar3 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals[1].offset_portal + iVar5); - if (pbVar3->offset_portal == NULL) break; - bVar1 = pbVar3->connectedRoom1; - iVar6 = iVar7; - iVar5 = iVar5 + 8; + byte bVar1; + bg_portal_data_entry *pbVar3; + longlong lVar2; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + + iVar7 = -1; + iVar4 = 0; + if (ptr_bgdata_portals->offset_portal != NULL) { + bVar1 = ptr_bgdata_portals->connectedRoom1; + iVar6 = iVar7; + iVar5 = 0; + pbVar3 = ptr_bgdata_portals; + while( true ) { + iVar7 = iVar6; + if ((((param_1 == (ulonglong)bVar1) && (param_2 == (ulonglong)pbVar3->connectedRoom2)) + || ((param_2 == (ulonglong)bVar1 && (param_1 == (ulonglong)pbVar3->connectedRoom2))) + ) && (lVar2 = proc_7F0B9F14(iVar4,param_3,param_4), iVar7 = iVar4, lVar2 == 0)) { + iVar7 = iVar6; + } + iVar4 += 1; + pbVar3 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals[1].offset_portal + iVar5); + if (pbVar3->offset_portal == NULL) break; + bVar1 = pbVar3->connectedRoom1; + iVar6 = iVar7; + iVar5 = iVar5 + 8; + } } - } - return iVar7; + return iVar7; } @@ -129276,9 +128432,9 @@ int proc_7F0B9CC8(ulonglong param_1,ulonglong param_2,float *param_3,float *para void proc_7F0B9DBC(int param_1,longlong param_2) { - *(byte *)&ptr_bgdata_portals[param_1].controlbytes = - (*(byte *)&ptr_bgdata_portals[param_1].controlbytes | 1) ^ param_2 != 0; - return; + *(byte *)&ptr_bgdata_portals[param_1].controlbytes = + (*(byte *)&ptr_bgdata_portals[param_1].controlbytes | 1) ^ param_2 != 0; + return; } @@ -129286,7 +128442,7 @@ void proc_7F0B9DBC(int param_1,longlong param_2) undefined8 proc_7F0B9DE4(undefined8 param_1) { - return param_1; + return param_1; } @@ -129294,7 +128450,7 @@ undefined8 proc_7F0B9DE4(undefined8 param_1) void proc_7F0B9DF4(void) { - return; + return; } @@ -129302,7 +128458,7 @@ void proc_7F0B9DF4(void) void proc_7F0B9DFC(void) { - return; + return; } @@ -129310,44 +128466,44 @@ void proc_7F0B9DFC(void) int proc_7F0B9E04(float *param_1,float *param_2) { - longlong lVar1; - int iVar2; - int iVar3; - int iVar4; - int iVar5; - int *piVar6; - float fVar7; - float fVar8; - - iVar5 = -1; - iVar2 = 0; - if (ptr_bgdata_portals->offset_portal != NULL) { - fVar8 = flt_80058D60; - iVar4 = iVar5; - iVar3 = 0; - do { - lVar1 = proc_7F0B9F14(iVar2,param_1,param_2); - fVar7 = fVar8; - iVar5 = iVar4; - if (lVar1 != 0) { - fVar7 = DAT_80044900; - if (DAT_80044900 < 0.00000000) { - fVar7 = -DAT_80044900; - } - iVar5 = iVar2; - if (fVar8 <= fVar7) { - fVar7 = fVar8; - iVar5 = iVar4; - } - } - fVar8 = fVar7; - iVar2 += 1; - piVar6 = (int *)((int)&ptr_bgdata_portals[1].offset_portal + iVar3); - iVar4 = iVar5; - iVar3 = iVar3 + 8; - } while (*piVar6 != 0); - } - return iVar5; + longlong lVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int *piVar6; + float fVar7; + float fVar8; + + iVar5 = -1; + iVar2 = 0; + if (ptr_bgdata_portals->offset_portal != NULL) { + fVar8 = flt_80058D60; + iVar4 = iVar5; + iVar3 = 0; + do { + lVar1 = proc_7F0B9F14(iVar2,param_1,param_2); + fVar7 = fVar8; + iVar5 = iVar4; + if (lVar1 != 0) { + fVar7 = DAT_80044900; + if (DAT_80044900 < 0.00000000) { + fVar7 = -DAT_80044900; + } + iVar5 = iVar2; + if (fVar8 <= fVar7) { + fVar7 = fVar8; + iVar5 = iVar4; + } + } + fVar8 = fVar7; + iVar2 += 1; + piVar6 = (int *)((int)&ptr_bgdata_portals[1].offset_portal + iVar3); + iVar4 = iVar5; + iVar3 = iVar3 + 8; + } while (*piVar6 != 0); + } + return iVar5; } @@ -129355,90 +128511,94 @@ int proc_7F0B9E04(float *param_1,float *param_2) undefined8 proc_7F0B9F14(int param_1,float *param_2,float *param_3) { - int iVar1; - bool bVar2; - bool bVar3; - bg_portal_entry *pbVar4; - u8 *puVar5; - undefined8 uVar6; - int iVar7; - ulonglong uVar8; - bg_portal_data_entry *pbVar9; - int iVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fStack64; - float fStack60; - float fStack56; - float fStack52; - - proc_7F0B96CC(param_1,&fStack64); - bVar3 = false; - bVar2 = false; - fVar13 = (fStack56 * param_2[2] + *param_2 * fStack64 + param_2[1] * fStack60) * room_data_float1; - fVar11 = (fStack56 * param_3[2] + *param_3 * fStack64 + param_3[1] * fStack60) * room_data_float1; - if (((fVar13 < fStack52) && (fVar11 < fStack52)) || ((fStack52 < fVar13 && (fStack52 < fVar11)))) - { - uVar6 = 0; - } - else { - pbVar9 = ptr_bgdata_portals + param_1; - DAT_80044900 = (fVar13 + fVar11) * 0.50000000 - fStack52; - iVar7 = 0; - pbVar4 = pbVar9->offset_portal; - uVar8 = (ulonglong)pbVar4->numPoints; - if (pbVar4->numPoints != 0) { - iVar10 = 1; - while( true ) { - iVar1 = iVar10 % (int)uVar8; - if (uVar8 == 0) { - trap(0x1c00); - } - if ((uVar8 == 0xffffffffffffffff) && ((longlong)iVar10 == -0x80000000)) { - trap(0x1800); - } - fVar14 = (&pbVar4->point)[iVar1].x - *(float *)((int)&(pbVar4->point).x + iVar7); - fVar11 = (&pbVar9->offset_portal->point)[iVar1].y - - *(float *)((int)&(pbVar9->offset_portal->point).y + iVar7); - fVar15 = (&pbVar9->offset_portal->point)[iVar1].z - - *(float *)((int)&(pbVar9->offset_portal->point).z + iVar7); - fVar12 = fVar11 * (param_3[2] - param_2[2]) - (param_3[1] - param_2[1]) * fVar15; - fVar15 = fVar15 * (*param_3 - *param_2) - (param_3[2] - param_2[2]) * fVar14; - fVar11 = fVar14 * (param_3[1] - param_2[1]) - (*param_3 - *param_2) * fVar11; - if (fVar11 * fVar11 + fVar12 * fVar12 + fVar15 * fVar15 == 0.00000000) { - return 0; - } - puVar5 = &pbVar9->offset_portal->numPoints + iVar7; - if ((param_2[2] * fVar11 + fVar12 * *param_2 + fVar15 * param_2[1]) * room_data_float1 < - *(float *)(puVar5 + 0xc) * fVar11 + - fVar12 * *(float *)(puVar5 + 4) + fVar15 * *(float *)(puVar5 + 8)) { - if (bVar2) { - return 0; - } - bVar3 = true; - } - else { - bVar2 = true; - if (bVar3) { - return 0; - } - } + int iVar1; + bool bVar2; + bool bVar3; + bg_portal_entry *pbVar4; + u8 *puVar5; + undefined8 uVar6; + int iVar7; + ulonglong uVar8; + bg_portal_data_entry *pbVar9; + int iVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fStack64; + float fStack60; + float fStack56; + float fStack52; + + proc_7F0B96CC(param_1,&fStack64); + bVar3 = false; + bVar2 = false; + fVar13 = (fStack56 * param_2[2] + *param_2 * fStack64 + param_2[1] * fStack60) * + room_data_float1; + fVar11 = (fStack56 * param_3[2] + *param_3 * fStack64 + param_3[1] * fStack60) * + room_data_float1; + if (((fVar13 < fStack52) && (fVar11 < fStack52)) || ((fStack52 < fVar13 && (fStack52 < fVar11))) + ) { + uVar6 = 0; + } + else { + pbVar9 = ptr_bgdata_portals + param_1; + DAT_80044900 = (fVar13 + fVar11) * 0.50000000 - fStack52; + iVar7 = 0; pbVar4 = pbVar9->offset_portal; - iVar7 += 0xc; uVar8 = (ulonglong)pbVar4->numPoints; - if ((longlong)uVar8 <= (longlong)iVar10) break; - iVar10 += 1; - } + if (pbVar4->numPoints != 0) { + iVar10 = 1; + while( true ) { + iVar1 = iVar10 % (int)uVar8; + if (uVar8 == 0) { + trap(0x1c00); + } + if ((uVar8 == 0xffffffffffffffff) && ((longlong)iVar10 == -0x80000000)) { + trap(0x1800); + } + fVar14 = (float)(&pbVar4->point)[iVar1].x - + *(float *)((int)&(pbVar4->point).x + iVar7); + fVar11 = (float)(&pbVar9->offset_portal->point)[iVar1].y - + *(float *)((int)&(pbVar9->offset_portal->point).y + iVar7); + fVar15 = (float)(&pbVar9->offset_portal->point)[iVar1].z - + *(float *)((int)&(pbVar9->offset_portal->point).z + iVar7); + fVar12 = fVar11 * (param_3[2] - param_2[2]) - (param_3[1] - param_2[1]) * fVar15; + fVar15 = fVar15 * (*param_3 - *param_2) - (param_3[2] - param_2[2]) * fVar14; + fVar11 = fVar14 * (param_3[1] - param_2[1]) - (*param_3 - *param_2) * fVar11; + if (fVar11 * fVar11 + fVar12 * fVar12 + fVar15 * fVar15 == 0.00000000) { + return 0; + } + puVar5 = &pbVar9->offset_portal->numPoints + iVar7; + if ((param_2[2] * fVar11 + fVar12 * *param_2 + fVar15 * param_2[1]) * + room_data_float1 < + *(float *)(puVar5 + 0xc) * fVar11 + + fVar12 * *(float *)(puVar5 + 4) + fVar15 * *(float *)(puVar5 + 8)) { + if (bVar2) { + return 0; + } + bVar3 = true; + } + else { + bVar2 = true; + if (bVar3) { + return 0; + } + } + pbVar4 = pbVar9->offset_portal; + iVar7 += 0xc; + uVar8 = (ulonglong)pbVar4->numPoints; + if ((longlong)uVar8 <= (longlong)iVar10) break; + iVar10 += 1; + } + } + uVar6 = 2; + if (fVar13 < fStack52) { + uVar6 = 1; + } } - uVar6 = 2; - if (fVar13 < fStack52) { - uVar6 = 1; - } - } - return uVar6; + return uVar6; } @@ -129446,25 +128606,25 @@ undefined8 proc_7F0B9F14(int param_1,float *param_2,float *param_3) undefined8 proc_7F0BA26C(int param_1,float *param_2,float *param_3,int param_4) { - int iVar1; - float *pfVar2; - float *pfVar3; - float fVar4; - - iVar1 = 0; - while( true ) { - fVar4 = *param_2; - pfVar2 = (float *)(param_4 + iVar1); - pfVar3 = (float *)(param_1 + iVar1); - iVar1 += 4; - param_2 = param_2 + 1; - if ((fVar4 < *param_3) || (*pfVar2 < *pfVar3)) break; - param_3 = param_3 + 1; - if (iVar1 == 0xc) { - return 1; + int iVar1; + float *pfVar2; + float *pfVar3; + float fVar4; + + iVar1 = 0; + while( true ) { + fVar4 = *param_2; + pfVar2 = (float *)(param_4 + iVar1); + pfVar3 = (float *)(param_1 + iVar1); + iVar1 += 4; + param_2 = param_2 + 1; + if ((fVar4 < *param_3) || (*pfVar2 < *pfVar3)) break; + param_3 = param_3 + 1; + if (iVar1 == 0xc) { + return 1; + } } - } - return 0; + return 0; } @@ -129472,148 +128632,148 @@ undefined8 proc_7F0BA26C(int param_1,float *param_2,float *param_3,int param_4) void proc_7F0BA2D4(float *param_1,float *param_2,int *param_3,int *param_4,int param_5) { - byte bVar1; - bg_portal_data_entry *pbVar3; - float *pfVar4; - ulonglong uVar2; - int *piVar5; - float *pfVar6; - int iVar7; - longlong lVar8; - bg_portal_data_entry *pbVar9; - int iVar10; - bg_portal_entry *pbVar11; - int iVar12; - int iVar13; - ulonglong uVar14; - float fVar15; - float fVar16; - int *piStack92; - float fStack84; - undefined4 uStack80; - undefined4 uStack76; - float fStack72; - undefined4 uStack68; - undefined4 uStack64; - int iStack60; - int iStack44; - float fStack36; - float fStack32; - float fStack28; - float fStack24; - float fStack20; - float fStack16; - - iVar12 = *param_4; - fStack24 = *param_1 * room_data_float1; - iStack44 = 0; - fStack20 = param_1[1] * room_data_float1; - fStack16 = param_1[2] * room_data_float1; - fStack36 = *param_2 * room_data_float1; - fStack32 = param_2[1] * room_data_float1; - fStack28 = param_2[2] * room_data_float1; - do { + byte bVar1; + bg_portal_data_entry *pbVar3; + float *pfVar4; + ulonglong uVar2; + int *piVar5; + float *pfVar6; + int iVar7; + longlong lVar8; + bg_portal_data_entry *pbVar9; + int iVar10; + bg_portal_entry *pbVar11; + int iVar12; + int iVar13; + ulonglong uVar14; + float fVar15; + float fVar16; + int *piStack92; + float afStack84 [3]; + float afStack72 [3]; + int iStack60; + int iStack44; + float fStack36; + float fStack32; + float fStack28; + float fStack24; + float fStack20; + float fStack16; + + iVar12 = *param_4; + iStack44 = 0; + fStack24 = *param_1 * room_data_float1; + fStack20 = param_1[1] * room_data_float1; + fStack16 = param_1[2] * room_data_float1; + fStack36 = *param_2 * room_data_float1; + fStack32 = param_2[1] * room_data_float1; iStack60 = iVar12; - if (iStack44 < iVar12) { - piStack92 = param_3 + iStack44; - pbVar3 = ptr_bgdata_portals; - iStack60 = iVar12; - do { - iVar13 = 0; - uVar14 = SEXT48(*piStack92); - if (pbVar3->offset_portal != NULL) { - bVar1 = *(byte *)&pbVar3->controlbytes; - pbVar9 = pbVar3; - do { - if ((bVar1 & 1) == 0) { - if ((uVar14 == (ulonglong)pbVar9->connectedRoom1) || - (uVar14 == (ulonglong)pbVar9->connectedRoom2)) { - fStack72 = dword_80044904; - uStack68 = DAT_80044908; - uStack64 = DAT_8004490c; - lVar8 = 0; - fStack84 = DAT_80044910; - uStack80 = DAT_80044914; - uStack76 = DAT_80044918; - pbVar11 = pbVar9->offset_portal; - if (pbVar11->numPoints != '\0') { - do { - iVar7 = 0; - pfVar6 = &fStack72; - pfVar4 = &fStack84; + fStack28 = param_2[2] * room_data_float1; + do { + iStack60 = iVar12; + if (iStack44 < iVar12) { + piStack92 = param_3 + iStack44; + pbVar3 = ptr_bgdata_portals; + do { + iVar13 = 0; + uVar14 = SEXT48(*piStack92); + if (pbVar3->offset_portal != NULL) { + bVar1 = *(byte *)&pbVar3->controlbytes; + pbVar9 = pbVar3; do { - fVar15 = *(float *)((int)&(&pbVar11->point)[(int)lVar8].x + iVar7); - iVar7 += 4; - if (fVar15 < *pfVar6) { - *pfVar6 = fVar15; - fVar16 = *pfVar4; - } - else { - fVar16 = *pfVar4; - } - pfVar6 = pfVar6 + 1; - if (fVar16 < fVar15) { - *pfVar4 = fVar15; - } - pfVar4 = pfVar4 + 1; - pbVar11 = pbVar9->offset_portal; - } while (pfVar4 != &fStack72); - lVar8 = (longlong)((int)lVar8 + 1); - } while (lVar8 < (longlong)(ulonglong)pbVar11->numPoints); + if ((bVar1 & 1) == 0) { + if ((uVar14 == (ulonglong)pbVar9->connectedRoom1) || + (uVar14 == (ulonglong)pbVar9->connectedRoom2)) { + afStack72[0] = dword_80044904; + afStack72[1] = DAT_80044908; + afStack72[2] = DAT_8004490c; + lVar8 = 0; + afStack84[0] = DAT_80044910; + afStack84[1] = DAT_80044914; + afStack84[2] = DAT_80044918; + pbVar11 = pbVar9->offset_portal; + if (pbVar11->numPoints != '\0') { + do { + iVar7 = 0; + pfVar6 = afStack72; + pfVar4 = afStack84; + do { + fVar15 = *(float *)((int)&(&pbVar11->point)[(int)lVar8]. + x + iVar7); + iVar7 += 4; + if (fVar15 < *pfVar6) { + *pfVar6 = fVar15; + fVar16 = *pfVar4; + } + else { + fVar16 = *pfVar4; + } + pfVar6 = pfVar6 + 1; + if (fVar16 < fVar15) { + *pfVar4 = fVar15; + } + pfVar4 = pfVar4 + 1; + pbVar11 = pbVar9->offset_portal; + } while (pfVar4 != afStack72); + lVar8 = (longlong)((int)lVar8 + 1); + } while (lVar8 < (longlong)(ulonglong)pbVar11->numPoints); + } + lVar8 = proc_7F0BA26C((int)afStack72,afStack84,&fStack24, + (int)&fStack36); + if (lVar8 != 0) { + iVar10 = 0; + iVar7 = (int)&ptr_bgdata_portals->offset_portal + iVar13; + uVar2 = (ulonglong)*(byte *)(iVar7 + 4); + if (uVar14 == uVar2) { + uVar2 = (ulonglong)*(byte *)(iVar7 + 5); + } + piVar5 = param_3; + if (0 < iVar12) { + do { + if (uVar2 == (longlong)*piVar5) break; + iVar10 += 1; + piVar5 = piVar5 + 1; + } while (iVar10 != iVar12); + } + if (iVar10 == iVar12) { + if (iVar12 < param_5) { + param_3[iVar12] = (int)uVar2; + iVar12 += 1; + } + if (param_5 <= iVar12) { + *param_4 = iVar12; + return; + } + } + } + pbVar9 = (bg_portal_data_entry *) + ((int)&ptr_bgdata_portals->offset_portal + iVar13); + pbVar11 = pbVar9[1].offset_portal; + pbVar3 = ptr_bgdata_portals; + } + else { + pbVar11 = pbVar9[1].offset_portal; + } + } + else { + pbVar11 = pbVar9[1].offset_portal; + } + iVar13 += 8; + if (pbVar11 == NULL) break; + bVar1 = *(byte *)&pbVar9[1].controlbytes; + pbVar9 = pbVar9 + 1; + } while( true ); } - lVar8 = proc_7F0BA26C((int)&fStack72,&fStack84,&fStack24,(int)&fStack36); - if (lVar8 != 0) { - iVar10 = 0; - iVar7 = (int)&ptr_bgdata_portals->offset_portal + iVar13; - uVar2 = (ulonglong)*(byte *)(iVar7 + 4); - if (uVar14 == uVar2) { - uVar2 = (ulonglong)*(byte *)(iVar7 + 5); - } - piVar5 = param_3; - if (0 < iVar12) { - do { - if (uVar2 == (longlong)*piVar5) break; - iVar10 += 1; - piVar5 = piVar5 + 1; - } while (iVar10 != iVar12); - } - if (iVar10 == iVar12) { - if (iVar12 < param_5) { - param_3[iVar12] = (int)uVar2; - iVar12 += 1; - } - if (param_5 <= iVar12) { - *param_4 = iVar12; - return; - } - } - } - pbVar9 = (bg_portal_data_entry *)((int)&ptr_bgdata_portals->offset_portal + iVar13); - pbVar11 = pbVar9[1].offset_portal; - pbVar3 = ptr_bgdata_portals; - } - else { - pbVar11 = pbVar9[1].offset_portal; - } - } - else { - pbVar11 = pbVar9[1].offset_portal; - } - iVar13 += 8; - if (pbVar11 == NULL) break; - bVar1 = *(byte *)&pbVar9[1].controlbytes; - pbVar9 = pbVar9 + 1; - } while( true ); + iStack44 += 1; + piStack92 = piStack92 + 1; + } while (iStack44 < iStack60); } - iStack44 += 1; - piStack92 = piStack92 + 1; - } while (iStack44 < iStack60); - } - if (iVar12 == iStack60) { - *param_4 = iVar12; - return; - } - } while( true ); + if (iVar12 == iStack60) { + *param_4 = iVar12; + return; + } + iStack60 = iVar12; + } while( true ); } @@ -129621,39 +128781,39 @@ void proc_7F0BA2D4(float *param_1,float *param_2,int *param_3,int *param_4,int p void proc_7F0BA5C0(int *param_1,int *param_2) { - u64 *puVar1; - int iVar2; - int iVar3; - - if (param_1 < param_2) { - do { - if (dword_80044940[0]._0_4_ != 0) { - iVar3 = *param_1; - iVar2 = dword_80044940[0]._0_4_; - puVar1 = dword_80044940; - while( true ) { - if (iVar3 == iVar2) { - if (param_1[1] == *(int *)((int)puVar1 + 4)) { - *param_1 = *(int *)(puVar1 + 1); - param_1[1] = *(int *)((int)puVar1 + 0xc); - iVar2 = *(int *)(puVar1 + 2); + u64 *puVar1; + int iVar2; + int iVar3; + + if (param_1 < param_2) { + do { + if (dword_80044940[0]._0_4_ != 0) { + iVar3 = *param_1; + iVar2 = dword_80044940[0]._0_4_; + puVar1 = dword_80044940; + while( true ) { + if (iVar3 == iVar2) { + if (param_1[1] == *(int *)((int)puVar1 + 4)) { + *param_1 = *(int *)(puVar1 + 1); + param_1[1] = *(int *)((int)puVar1 + 0xc); + iVar2 = *(int *)(puVar1 + 2); + } + else { + iVar2 = *(int *)(puVar1 + 2); + } + } + else { + iVar2 = *(int *)(puVar1 + 2); + } + puVar1 = puVar1 + 2; + if (iVar2 == 0) break; + iVar3 = *param_1; + } } - else { - iVar2 = *(int *)(puVar1 + 2); - } - } - else { - iVar2 = *(int *)(puVar1 + 2); - } - puVar1 = puVar1 + 2; - if (iVar2 == 0) break; - iVar3 = *param_1; - } - } - param_1 = param_1 + 2; - } while (param_1 < param_2); - } - return; + param_1 = param_1 + 2; + } while (param_1 < param_2); + } + return; } @@ -129664,50 +128824,50 @@ void proc_7F0BA5C0(int *param_1,int *param_2) void proc_7F0BA640(int *param_1,int *param_2,int param_3) { - char cVar1; - int *piVar2; - int iVar3; - int iVar4; - - if ((param_2 != NULL) && (param_1 < param_2)) goto code_r0x7f0ba66c; - if (param_2 == NULL) { - cVar1 = *(char *)param_1; - while (cVar1 != -0x48) { + char cVar1; + int *piVar2; + int iVar3; + int iVar4; + + if ((param_2 != NULL) && (param_1 < param_2)) goto code_r0x7f0ba66c; + if (param_2 == NULL) { + cVar1 = *(char *)param_1; + while (cVar1 != -0x48) { code_r0x7f0ba66c: - do { - piVar2 = (int *)(&off_80044D88)[param_3]; - iVar3 = *piVar2; - if (iVar3 != 0) { - iVar4 = *param_1; - while( true ) { - if (iVar4 == iVar3) { - if (param_1[1] == piVar2[1]) { - dword_80044DB0 += 1; - *param_1 = piVar2[2]; - param_1[1] = piVar2[3]; - iVar3 = piVar2[4]; - } - else { - iVar3 = piVar2[4]; - } + do { + piVar2 = (int *)(&off_80044D88)[param_3]; + iVar3 = *piVar2; + if (iVar3 != 0) { + iVar4 = *param_1; + while( true ) { + if (iVar4 == iVar3) { + if (param_1[1] == piVar2[1]) { + dword_80044DB0 += 1; + *param_1 = piVar2[2]; + param_1[1] = piVar2[3]; + iVar3 = piVar2[4]; + } + else { + iVar3 = piVar2[4]; + } + } + else { + iVar3 = piVar2[4]; + } + piVar2 = piVar2 + 4; + if (iVar3 == 0) break; + iVar4 = *param_1; + } + } + param_1 = param_1 + 2; + } while ((param_2 != NULL) && (param_1 < param_2)); + if (param_2 != NULL) { + return; } - else { - iVar3 = piVar2[4]; - } - piVar2 = piVar2 + 4; - if (iVar3 == 0) break; - iVar4 = *param_1; - } + cVar1 = *(char *)param_1; } - param_1 = param_1 + 2; - } while ((param_2 != NULL) && (param_1 < param_2)); - if (param_2 != NULL) { - return; - } - cVar1 = *(char *)param_1; } - } - return; + return; } @@ -129715,7 +128875,7 @@ code_r0x7f0ba66c: void proc_7F0BA720(void) { - return; + return; } @@ -129723,7 +128883,7 @@ void proc_7F0BA720(void) undefined4 * get_ptr_currentdata(void) { - return &ptr_current_data; + return &ptr_current_data; } @@ -129731,7 +128891,7 @@ undefined4 * get_ptr_currentdata(void) f32 get_near_fog_value(void) { - return (f32)near_fog_value; + return (f32)near_fog_value; } @@ -129739,7 +128899,7 @@ f32 get_near_fog_value(void) float square_near_fog_value(void) { - return near_fog_value * near_fog_value; + return near_fog_value * near_fog_value; } @@ -129747,54 +128907,54 @@ float square_near_fog_value(void) void copy_table1_env_to_current(void) { - f32 in_a0_lo; - f32 fVar1; - float fVar2; - float fVar3; - float fStack8; - float fStack4; - - set_page_height(*(f32 *)((int)in_a0_lo + 4),*(f32 *)((int)in_a0_lo + 8),in_a0_lo); - video_related_27(&fStack8); - fVar1 = proc_7F0B4878(); - fStack8 = fStack8 / (float)fVar1; - bg_dif_light = (float)*(int *)((int)in_a0_lo + 0x20) / 1000.00000000; - ptr_nearfog_enviroment_values = (int)in_a0_lo + 0xc; - buffer_far_ambiant = (float)*(int *)((int)in_a0_lo + 0x24) / 1000.00000000; - fVar3 = fStack4 / (float)fVar1 - fStack8; - buffer_far_pervasiveness = *(float *)((int)in_a0_lo + 4) / (float)fVar1; - far_fog = *(float *)((int)in_a0_lo + 8) / (float)fVar1; - fVar2 = 128.00000000 / (buffer_far_ambiant - bg_dif_light); - if (*(float *)((int)in_a0_lo + 0xc) == 0.00000000) { - ptr_nearfog_enviroment_values = 0; - } - near_fog_value = fStack8 + fVar3 * buffer_far_ambiant; - near_fog_times_intensity = fStack8 + fVar3 * bg_dif_light; - ptr_current_data = *(undefined4 *)((int)in_a0_lo + 0x20); - DAT_80044dd0 = *(undefined4 *)((int)in_a0_lo + 0x24); - DAT_80044dd4 = *(undefined *)((int)in_a0_lo + 0x28); - DAT_80044dd5 = *(undefined *)((int)in_a0_lo + 0x29); - DAT_80044dd6 = *(undefined *)((int)in_a0_lo + 0x2a); - DAT_80044dd7 = *(undefined *)((int)in_a0_lo + 0x2b); - DAT_80044dd8 = *(undefined4 *)((int)in_a0_lo + 0x2c); - DAT_80044ddc = *(undefined2 *)((int)in_a0_lo + 0x30); - DAT_80044de0 = *(undefined4 *)((int)in_a0_lo + 0x34); - DAT_80044de4 = *(undefined4 *)((int)in_a0_lo + 0x38); - DAT_80044de8 = *(undefined4 *)((int)in_a0_lo + 0x3c); - DAT_80044dec = *(undefined *)((int)in_a0_lo + 0x40); - DAT_80044df0 = *(undefined4 *)((int)in_a0_lo + 0x44); - DAT_80044df4 = *(undefined2 *)((int)in_a0_lo + 0x48); - DAT_80044df8 = *(undefined4 *)((int)in_a0_lo + 0x4c); - DAT_80044dfc = *(undefined4 *)((int)in_a0_lo + 0x50); - DAT_80044e00 = *(undefined4 *)((int)in_a0_lo + 0x54); - DAT_80044e04 = *(undefined4 *)((int)in_a0_lo + 0x58); - sky_enabled = 1; - DAT_800825d8 = ((-fVar2 * far_fog * (buffer_far_pervasiveness + 1.00000000)) / - (far_fog - buffer_far_pervasiveness)) / 255.00000000; - DAT_800825dc = (((far_fog + 1.00000000) * fVar2) / (far_fog - buffer_far_pervasiveness) + - ((0.50000000 - bg_dif_light) * 256.00000000) / (buffer_far_ambiant - bg_dif_light)) - / 255.00000000; - return; + int in_a0_lo; + f32 fVar1; + float fVar2; + float fVar3; + float fStack8; + float fStack4; + + set_page_height(*(f32 *)(in_a0_lo + 4),*(f32 *)(in_a0_lo + 8)); + video_related_27(&fStack8); + fVar1 = proc_7F0B4878(); + fStack8 = fStack8 / (float)fVar1; + bg_dif_light = (float)*(int *)(in_a0_lo + 0x20) / 1000.00000000; + ptr_nearfog_enviroment_values = in_a0_lo + 0xc; + buffer_far_ambiant = (float)*(int *)(in_a0_lo + 0x24) / 1000.00000000; + fVar3 = fStack4 / (float)fVar1 - fStack8; + buffer_far_pervasiveness = *(float *)(in_a0_lo + 4) / (float)fVar1; + far_fog = *(float *)(in_a0_lo + 8) / (float)fVar1; + fVar2 = 128.00000000 / (buffer_far_ambiant - bg_dif_light); + if (*(float *)(in_a0_lo + 0xc) == 0.00000000) { + ptr_nearfog_enviroment_values = 0; + } + near_fog_value = fStack8 + fVar3 * buffer_far_ambiant; + near_fog_times_intensity = fStack8 + fVar3 * bg_dif_light; + ptr_current_data = *(undefined4 *)(in_a0_lo + 0x20); + DAT_80044dd0 = *(undefined4 *)(in_a0_lo + 0x24); + DAT_80044dd4 = *(undefined *)(in_a0_lo + 0x28); + DAT_80044dd5 = *(undefined *)(in_a0_lo + 0x29); + DAT_80044dd6 = *(undefined *)(in_a0_lo + 0x2a); + DAT_80044dd7 = *(undefined *)(in_a0_lo + 0x2b); + DAT_80044dd8 = *(undefined4 *)(in_a0_lo + 0x2c); + DAT_80044ddc = *(undefined2 *)(in_a0_lo + 0x30); + DAT_80044de0 = *(undefined4 *)(in_a0_lo + 0x34); + DAT_80044de4 = *(undefined4 *)(in_a0_lo + 0x38); + DAT_80044de8 = *(undefined4 *)(in_a0_lo + 0x3c); + DAT_80044dec = *(undefined *)(in_a0_lo + 0x40); + DAT_80044df0 = *(undefined4 *)(in_a0_lo + 0x44); + DAT_80044df4 = *(undefined2 *)(in_a0_lo + 0x48); + DAT_80044df8 = *(undefined4 *)(in_a0_lo + 0x4c); + DAT_80044dfc = *(undefined4 *)(in_a0_lo + 0x50); + DAT_80044e00 = *(undefined4 *)(in_a0_lo + 0x54); + DAT_80044e04 = *(undefined4 *)(in_a0_lo + 0x58); + sky_enabled = 1; + DAT_800825d8 = ((-fVar2 * far_fog * (buffer_far_pervasiveness + 1.00000000)) / + (far_fog - buffer_far_pervasiveness)) / 255.00000000; + DAT_800825dc = (((far_fog + 1.00000000) * fVar2) / (far_fog - buffer_far_pervasiveness) + + ((0.50000000 - bg_dif_light) * 256.00000000) / + (buffer_far_ambiant - bg_dif_light)) / 255.00000000; + return; } @@ -129802,23 +128962,23 @@ void copy_table1_env_to_current(void) void copy_table2_env_to_current(int param_1) { - DAT_80044dd4 = *(undefined *)(param_1 + 4); - DAT_80044dd5 = *(undefined *)(param_1 + 5); - DAT_80044dd6 = *(undefined *)(param_1 + 6); - DAT_80044dd7 = *(undefined *)(param_1 + 7); - DAT_80044dd8 = *(undefined4 *)(param_1 + 8); - DAT_80044ddc = *(undefined2 *)(param_1 + 0xc); - DAT_80044de0 = *(undefined4 *)(param_1 + 0x10); - DAT_80044de4 = *(undefined4 *)(param_1 + 0x14); - DAT_80044de8 = *(undefined4 *)(param_1 + 0x18); - DAT_80044dec = *(undefined *)(param_1 + 0x1c); - DAT_80044df0 = *(undefined4 *)(param_1 + 0x20); - DAT_80044df4 = *(undefined2 *)(param_1 + 0x24); - DAT_80044df8 = *(undefined4 *)(param_1 + 0x28); - DAT_80044dfc = *(undefined4 *)(param_1 + 0x2c); - DAT_80044e00 = *(undefined4 *)(param_1 + 0x30); - DAT_80044e04 = *(undefined4 *)(param_1 + 0x34); - return; + DAT_80044dd4 = *(undefined *)(param_1 + 4); + DAT_80044dd5 = *(undefined *)(param_1 + 5); + DAT_80044dd6 = *(undefined *)(param_1 + 6); + DAT_80044dd7 = *(undefined *)(param_1 + 7); + DAT_80044dd8 = *(undefined4 *)(param_1 + 8); + DAT_80044ddc = *(undefined2 *)(param_1 + 0xc); + DAT_80044de0 = *(undefined4 *)(param_1 + 0x10); + DAT_80044de4 = *(undefined4 *)(param_1 + 0x14); + DAT_80044de8 = *(undefined4 *)(param_1 + 0x18); + DAT_80044dec = *(undefined *)(param_1 + 0x1c); + DAT_80044df0 = *(undefined4 *)(param_1 + 0x20); + DAT_80044df4 = *(undefined2 *)(param_1 + 0x24); + DAT_80044df8 = *(undefined4 *)(param_1 + 0x28); + DAT_80044dfc = *(undefined4 *)(param_1 + 0x2c); + DAT_80044e00 = *(undefined4 *)(param_1 + 0x30); + DAT_80044e04 = *(undefined4 *)(param_1 + 0x34); + return; } @@ -129826,7 +128986,7 @@ void copy_table2_env_to_current(int param_1) void proc_7F0BAA5C(void) { - return; + return; } @@ -129834,92 +128994,85 @@ void proc_7F0BAA5C(void) void load_enviroment(int param_1,int param_2) { - ulonglong uVar1; - f32 fVar2; - u32 uVar3; - fog_element *pfVar4; - fog_element *pfVar5; - fog_element2 *pfVar6; - f32 extraout_a0_lo; - f32 fVar7; - fog_element2 *pfVar8; - - uVar1 = get_num_players(); - if (uVar1 == 1) { - uVar1 = 0; - } - near_fog_value = default_near_fog; - near_fog_times_intensity = 0.00000000; - fVar7 = extraout_a0_lo; - if (param_2 != 0) { - pfVar5 = fog_tables; - fVar7 = (f32)(param_1 + 900); - fVar2 = (f32)fog_tables[0].stageID; - while (fVar2 != 0.00000000) { - if (fVar7 == fVar2) { - env_table_match_end = pfVar5 + 1; - env_table_hit = pfVar5; - env_table_match_start = pfVar5; - copy_table1_env_to_current(); - return; - } - fVar2 = (f32)pfVar5[1].stageID; - pfVar5 = pfVar5 + 1; + s32 sVar1; + u32 uVar2; + fog_element *pfVar3; + fog_element *pfVar4; + fog_element2 *pfVar5; + fog_element2 *pfVar6; + + sVar1 = get_num_players(); + if (sVar1 == 1) { + sVar1 = 0; } - } - pfVar5 = fog_tables; - if (fog_tables[0].stageID != 0) { - fVar7 = (f32)(param_1 + (int)uVar1 * 100); - pfVar4 = pfVar5; - fVar2 = (f32)fog_tables[0].stageID; - do { - if (fVar7 == fVar2) { - env_table_match_end = pfVar4 + 1; - env_table_hit = pfVar4; - env_table_match_start = pfVar4; - copy_table1_env_to_current(); - return; - } - fVar2 = (f32)pfVar4[1].stageID; - pfVar4 = pfVar4 + 1; - } while (fVar2 != 0.00000000); - } - if ((1 < (longlong)uVar1) && (fog_tables[0].stageID != 0)) { - fVar7 = (f32)((int)uVar1 * 100); - fVar2 = (f32)fog_tables[0].stageID; - do { - if (fVar7 == fVar2) { - env_table_match_end = pfVar5 + 1; - env_table_hit = pfVar5; - env_table_match_start = pfVar5; - copy_table1_env_to_current(); - return; - } - fVar2 = (f32)pfVar5[1].stageID; - pfVar5 = pfVar5 + 1; - } while (fVar2 != 0.00000000); - } - set_page_height(15.00000000,(f32)flt_80058D74,fVar7); - sky_enabled = 0; - pfVar8 = NULL; - pfVar6 = fog_tables2; - uVar3 = fog_tables2[0].stageID; - while (uVar3 != 0) { - if (param_1 == uVar3) { - uVar3 = pfVar6[1].stageID; - pfVar8 = pfVar6; + near_fog_value = default_near_fog; + near_fog_times_intensity = 0.00000000; + if (param_2 != 0) { + pfVar3 = fog_tables; + uVar2 = fog_tables[0].stageID; + while (uVar2 != 0) { + if (param_1 + 900U == uVar2) { + env_table_match_end = pfVar3 + 1; + env_table_hit = pfVar3; + env_table_match_start = pfVar3; + copy_table1_env_to_current(); + return; + } + uVar2 = pfVar3[1].stageID; + pfVar3 = pfVar3 + 1; + } } - else { - uVar3 = pfVar6[1].stageID; + pfVar3 = fog_tables; + if (fog_tables[0].stageID != 0) { + uVar2 = fog_tables[0].stageID; + pfVar4 = pfVar3; + do { + if (param_1 + sVar1 * 100 == uVar2) { + env_table_match_end = pfVar4 + 1; + env_table_hit = pfVar4; + env_table_match_start = pfVar4; + copy_table1_env_to_current(); + return; + } + uVar2 = pfVar4[1].stageID; + pfVar4 = pfVar4 + 1; + } while (uVar2 != 0); } - pfVar6 = pfVar6 + 1; - } - if (pfVar8 == NULL) { - pfVar8 = fog_tables2; - } - copy_table2_env_to_current((int)pfVar8); - env_table_hit = NULL; - return; + if ((1 < sVar1) && (fog_tables[0].stageID != 0)) { + uVar2 = fog_tables[0].stageID; + do { + if (sVar1 * 100 == uVar2) { + env_table_match_end = pfVar3 + 1; + env_table_hit = pfVar3; + env_table_match_start = pfVar3; + copy_table1_env_to_current(); + return; + } + uVar2 = pfVar3[1].stageID; + pfVar3 = pfVar3 + 1; + } while (uVar2 != 0); + } + set_page_height(15.00000000,(f32)flt_80058D74); + sky_enabled = 0; + pfVar6 = NULL; + pfVar5 = fog_tables2; + uVar2 = fog_tables2[0].stageID; + while (uVar2 != 0) { + if (param_1 == uVar2) { + uVar2 = pfVar5[1].stageID; + pfVar6 = pfVar5; + } + else { + uVar2 = pfVar5[1].stageID; + } + pfVar5 = pfVar5 + 1; + } + if (pfVar6 == NULL) { + pfVar6 = fog_tables2; + } + copy_table2_env_to_current((int)pfVar6); + env_table_hit = NULL; + return; } @@ -129927,140 +129080,140 @@ void load_enviroment(int param_1,int param_2) void switch_to_solosky2(float param_1) { - undefined4 *puVar1; - undefined4 *puVar2; - undefined4 *puVar3; - undefined4 *puVar4; - undefined4 *puVar5; - undefined4 *puVar6; - float fVar7; - float fVar8; - - puVar1 = env_table_match_start; - puVar4 = env_table_match_start + 0x15; - puVar2 = &DAT_800825f8; - puVar6 = env_table_match_start; - do { - puVar5 = puVar6; - puVar3 = puVar2; - puVar6 = puVar5 + 3; - *puVar3 = *puVar5; - puVar3[1] = puVar5[1]; - puVar3[2] = puVar5[2]; - puVar2 = puVar3 + 3; - } while (puVar6 != puVar4); - puVar3[3] = *puVar6; - puVar3[4] = puVar5[4]; - DAT_800825fc = (float)puVar1[1] + - param_1 * (*(float *)(env_table_match_end + 4) - (float)puVar1[1]); - DAT_80082600 = (float)puVar1[2] + - param_1 * (*(float *)(env_table_match_end + 8) - (float)puVar1[2]); - DAT_80082618 = (int)((float)puVar1[8] + - param_1 * ((float)*(int *)(env_table_match_end + 0x20) - (float)puVar1[8])); - DAT_8008261c = (int)((float)puVar1[9] + - param_1 * ((float)*(int *)(env_table_match_end + 0x24) - (float)puVar1[9])); - fVar8 = (float)(uint)*(byte *)(puVar1 + 10); - if (false) { - fVar8 = fVar8 + 4294967296.00000000; - } - fVar7 = (float)(uint)*(byte *)(env_table_match_end + 0x28); - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar8 = fVar8 + param_1 * (fVar7 - fVar8); - if (false) { - fVar7 = ROUND(fVar8); - } - else { - fVar7 = FLOOR(fVar8); - } - DAT_80082620 = (byte)(int)fVar7; - if (false) { + undefined4 *puVar1; + undefined4 *puVar2; + undefined4 *puVar3; + undefined4 *puVar4; + undefined4 *puVar5; + undefined4 *puVar6; + float fVar7; + float fVar8; + + puVar1 = env_table_match_start; + puVar4 = env_table_match_start + 0x15; + puVar2 = &DAT_800825f8; + puVar6 = env_table_match_start; + do { + puVar5 = puVar6; + puVar3 = puVar2; + puVar6 = puVar5 + 3; + *puVar3 = *puVar5; + puVar3[1] = puVar5[1]; + puVar3[2] = puVar5[2]; + puVar2 = puVar3 + 3; + } while (puVar6 != puVar4); + puVar3[3] = *puVar6; + puVar3[4] = puVar5[4]; + DAT_800825fc = (float)puVar1[1] + + param_1 * (*(float *)(env_table_match_end + 4) - (float)puVar1[1]); + DAT_80082600 = (float)puVar1[2] + + param_1 * (*(float *)(env_table_match_end + 8) - (float)puVar1[2]); + DAT_80082618 = (int)((float)puVar1[8] + + param_1 * ((float)*(int *)(env_table_match_end + 0x20) - (float)puVar1[8])); + DAT_8008261c = (int)((float)puVar1[9] + + param_1 * ((float)*(int *)(env_table_match_end + 0x24) - (float)puVar1[9])); + fVar8 = (float)(uint)*(byte *)(puVar1 + 10); if (false) { - fVar8 = ROUND(fVar8 - 2147483648.00000000); + fVar8 = fVar8 + 4294967296.00000000; + } + fVar7 = (float)(uint)*(byte *)(env_table_match_end + 0x28); + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar8 = fVar8 + param_1 * (fVar7 - fVar8); + if (false) { + fVar7 = ROUND(fVar8); } else { - fVar8 = FLOOR(fVar8 - 2147483648.00000000); + fVar7 = FLOOR(fVar8); } - if (false) goto LAB_7f0bae60; - DAT_80082620 = (byte)(int)fVar8; - } - else { - if ((int)fVar7 < 0) { + DAT_80082620 = (byte)(int)fVar7; + if (false) { + if (false) { + fVar8 = ROUND(fVar8 - 2147483648.00000000); + } + else { + fVar8 = FLOOR(fVar8 - 2147483648.00000000); + } + if (false) goto LAB_7f0bae60; + DAT_80082620 = (byte)(int)fVar8; + } + else { + if ((int)fVar7 < 0) { LAB_7f0bae60: - DAT_80082620 = 0xff; + DAT_80082620 = 0xff; + } } - } - fVar8 = (float)(uint)*(byte *)((int)puVar1 + 0x29); - if (false) { - fVar8 = fVar8 + 4294967296.00000000; - } - DAT_80082620 &= 0xf8; - fVar7 = (float)(uint)*(byte *)(env_table_match_end + 0x29); - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar8 = fVar8 + param_1 * (fVar7 - fVar8); - if (false) { - fVar7 = ROUND(fVar8); - } - else { - fVar7 = FLOOR(fVar8); - } - DAT_80082621 = (byte)(int)fVar7; - if (false) { + fVar8 = (float)(uint)*(byte *)((int)puVar1 + 0x29); if (false) { - fVar8 = ROUND(fVar8 - 2147483648.00000000); + fVar8 = fVar8 + 4294967296.00000000; + } + DAT_80082620 &= 0xf8; + fVar7 = (float)(uint)*(byte *)(env_table_match_end + 0x29); + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar8 = fVar8 + param_1 * (fVar7 - fVar8); + if (false) { + fVar7 = ROUND(fVar8); } else { - fVar8 = FLOOR(fVar8 - 2147483648.00000000); + fVar7 = FLOOR(fVar8); } - if (false) goto LAB_7f0baf44; - DAT_80082621 = (byte)(int)fVar8; - } - else { - if ((int)fVar7 < 0) { + DAT_80082621 = (byte)(int)fVar7; + if (false) { + if (false) { + fVar8 = ROUND(fVar8 - 2147483648.00000000); + } + else { + fVar8 = FLOOR(fVar8 - 2147483648.00000000); + } + if (false) goto LAB_7f0baf44; + DAT_80082621 = (byte)(int)fVar8; + } + else { + if ((int)fVar7 < 0) { LAB_7f0baf44: - DAT_80082621 = 0xff; + DAT_80082621 = 0xff; + } } - } - DAT_80082621 &= 0xf8; - fVar8 = (float)(uint)*(byte *)((int)puVar1 + 0x2a); - if (false) { - fVar8 = fVar8 + 4294967296.00000000; - } - fVar7 = (float)(uint)*(byte *)(env_table_match_end + 0x2a); - if (false) { - fVar7 = fVar7 + 4294967296.00000000; - } - fVar8 = fVar8 + param_1 * (fVar7 - fVar8); - if (false) { - fVar7 = ROUND(fVar8); - } - else { - fVar7 = FLOOR(fVar8); - } - DAT_80082622 = (byte)(int)fVar7; - if (false) { + DAT_80082621 &= 0xf8; + fVar8 = (float)(uint)*(byte *)((int)puVar1 + 0x2a); if (false) { - fVar8 = ROUND(fVar8 - 2147483648.00000000); + fVar8 = fVar8 + 4294967296.00000000; + } + fVar7 = (float)(uint)*(byte *)(env_table_match_end + 0x2a); + if (false) { + fVar7 = fVar7 + 4294967296.00000000; + } + fVar8 = fVar8 + param_1 * (fVar7 - fVar8); + if (false) { + fVar7 = ROUND(fVar8); } else { - fVar8 = FLOOR(fVar8 - 2147483648.00000000); + fVar7 = FLOOR(fVar8); } - if (true) { - DAT_80082622 = (byte)(int)fVar8; - goto LAB_7f0bb040; + DAT_80082622 = (byte)(int)fVar7; + if (false) { + if (false) { + fVar8 = ROUND(fVar8 - 2147483648.00000000); + } + else { + fVar8 = FLOOR(fVar8 - 2147483648.00000000); + } + if (true) { + DAT_80082622 = (byte)(int)fVar8; + goto LAB_7f0bb040; + } } - } - else { - if (-1 < (int)fVar7) goto LAB_7f0bb040; - } - DAT_80082622 = 0xff; + else { + if (-1 < (int)fVar7) goto LAB_7f0bb040; + } + DAT_80082622 = 0xff; LAB_7f0bb040: - DAT_80082622 &= 0xf8; - copy_table1_env_to_current(); - return; + DAT_80082622 &= 0xf8; + copy_table1_env_to_current(); + return; } @@ -130068,59 +129221,59 @@ LAB_7f0bb040: undefined4 * proc_7F0BB070(undefined4 *param_1,longlong param_2) { - int iVar1; - int iVar2; - - if (sky_enabled != 0) { - if (param_2 == 0) { - *param_1 = 0xf8000000; - param_1[1] = (uint)DAT_80044dd4 << 0x18 | (uint)DAT_80044dd5 << 0x10 | (uint)DAT_80044dd6 << 8 - | 0xff; - param_1[2] = 0xbc000008; - iVar1 = DAT_80044dd0 - ptr_current_data; - iVar2 = ptr_current_data * -0x100 + 0x1f400; - param_1[3] = 0x1f400 / iVar1 << 0x10 | iVar2 / iVar1 & 0xffffU; - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (false)) { - trap(0x1800); - } - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (iVar2 == -0x80000000)) { - trap(0x1800); - } + int iVar1; + int iVar2; + + if (sky_enabled != 0) { + if (param_2 == 0) { + *param_1 = 0xf8000000; + param_1[1] = (uint)DAT_80044dd4 << 0x18 | (uint)DAT_80044dd5 << 0x10 | + (uint)DAT_80044dd6 << 8 | 0xff; + param_1[2] = 0xbc000008; + iVar1 = DAT_80044dd0 - ptr_current_data; + iVar2 = ptr_current_data * -0x100 + 0x1f400; + param_1[3] = 0x1f400 / iVar1 << 0x10 | iVar2 / iVar1 & 0xffffU; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (false)) { + trap(0x1800); + } + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + } + else { + *param_1 = 0xf8000000; + param_1[1] = (uint)DAT_80044dd4 << 0x18 | (uint)DAT_80044dd5 << 0x10 | + (uint)DAT_80044dd6 << 8 | 0xff; + param_1[2] = 0xbc000008; + iVar1 = DAT_80044dd0 - ptr_current_data; + iVar2 = ptr_current_data * -0x100 + 0x1f400; + param_1[3] = 0x1f400 / iVar1 << 0x10 | iVar2 / iVar1 & 0xffffU; + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (false)) { + trap(0x1800); + } + if (iVar1 == 0) { + trap(0x1c00); + } + if ((iVar1 == -1) && (iVar2 == -0x80000000)) { + trap(0x1800); + } + } + param_1[5] = 0x10000; + param_1[4] = 0xb7000000; + param_1[7] = 0x20; + param_1[6] = 0xba000402; + return param_1 + 8; } - else { - *param_1 = 0xf8000000; - param_1[1] = (uint)DAT_80044dd4 << 0x18 | (uint)DAT_80044dd5 << 0x10 | (uint)DAT_80044dd6 << 8 - | 0xff; - param_1[2] = 0xbc000008; - iVar1 = DAT_80044dd0 - ptr_current_data; - iVar2 = ptr_current_data * -0x100 + 0x1f400; - param_1[3] = 0x1f400 / iVar1 << 0x10 | iVar2 / iVar1 & 0xffffU; - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (false)) { - trap(0x1800); - } - if (iVar1 == 0) { - trap(0x1c00); - } - if ((iVar1 == -1) && (iVar2 == -0x80000000)) { - trap(0x1800); - } - } - param_1[5] = 0x10000; - param_1[4] = 0xb7000000; - param_1[7] = 0x20; - param_1[6] = 0xba000402; - return param_1 + 8; - } - return param_1; + return param_1; } @@ -130128,12 +129281,12 @@ undefined4 * proc_7F0BB070(undefined4 *param_1,longlong param_2) undefined4 * proc_7F0BB298(undefined4 *param_1) { - if (sky_enabled == 0) { - return param_1; - } - *param_1 = 0xb6000000; - param_1[1] = 0x10000; - return param_1 + 2; + if (sky_enabled == 0) { + return param_1; + } + *param_1 = 0xb6000000; + param_1[1] = 0x10000; + return param_1 + 2; } @@ -130141,25 +129294,25 @@ undefined4 * proc_7F0BB298(undefined4 *param_1) undefined8 proc_7F0BB2C8(float *param_1,float param_2) { - undefined8 uVar1; - xyzpoint *pxVar2; - float *pfVar3; - float in_a1_lo; - - if (sky_enabled == 0) { - uVar1 = 1; - } - else { - pxVar2 = get_BONDdata_position(); - pfVar3 = (float *)proc_7F0783C4(); - uVar1 = 1; - if (near_fog_value + in_a1_lo < - pfVar3[2] * (param_1[2] - pxVar2->z) + - (*param_1 - pxVar2->x) * *pfVar3 + (param_1[1] - pxVar2->y) * pfVar3[1]) { - uVar1 = 0; + undefined8 uVar1; + xyzpoint *pxVar2; + float *pfVar3; + float in_a1_lo; + + if (sky_enabled == 0) { + uVar1 = 1; } - } - return uVar1; + else { + pxVar2 = get_BONDdata_position(); + pfVar3 = (float *)get_BONDdata_field_10CC(); + uVar1 = 1; + if (near_fog_value + in_a1_lo < + pfVar3[2] * (param_1[2] - (float)pxVar2->z) + + (*param_1 - (float)pxVar2->x) * *pfVar3 + (param_1[1] - (float)pxVar2->y) * pfVar3[1]) { + uVar1 = 0; + } + } + return uVar1; } @@ -130167,7 +129320,7 @@ undefined8 proc_7F0BB2C8(float *param_1,float param_2) undefined4 return_nearfog_values(void) { - return ptr_nearfog_enviroment_values; + return ptr_nearfog_enviroment_values; } @@ -130175,37 +129328,37 @@ undefined4 return_nearfog_values(void) undefined8 if_sky_present_convert_values(int param_1,float *param_2) { - float fVar1; - - if (sky_enabled == 0) { - return 2; - } - if (0.00000000 <= *(float *)(param_1 + 0x18)) { - fVar1 = (float)(uint)DAT_80044dd4; - if (false) { - fVar1 = fVar1 + 4294967296.00000000; + float fVar1; + + if (sky_enabled == 0) { + return 2; } - *param_2 = fVar1 / 255.00000000; - fVar1 = (float)(uint)DAT_80044dd5; - if (false) { - fVar1 = fVar1 + 4294967296.00000000; - } - param_2[1] = fVar1 / 255.00000000; - fVar1 = (float)(uint)DAT_80044dd6; - if (false) { - fVar1 = fVar1 + 4294967296.00000000; - } - param_2[2] = fVar1 / 255.00000000; - param_2[3] = DAT_800825d8 / *(float *)(param_1 + 0x18) + DAT_800825dc; - if (0.00000000 <= param_2[3]) { - if (param_2[3] <= 1.00000000) { - return 1; - } - return 0; + if (0.00000000 <= *(float *)(param_1 + 0x18)) { + fVar1 = (float)(uint)DAT_80044dd4; + if (false) { + fVar1 = fVar1 + 4294967296.00000000; + } + *param_2 = fVar1 / 255.00000000; + fVar1 = (float)(uint)DAT_80044dd5; + if (false) { + fVar1 = fVar1 + 4294967296.00000000; + } + param_2[1] = fVar1 / 255.00000000; + fVar1 = (float)(uint)DAT_80044dd6; + if (false) { + fVar1 = fVar1 + 4294967296.00000000; + } + param_2[2] = fVar1 / 255.00000000; + param_2[3] = DAT_800825d8 / *(float *)(param_1 + 0x18) + DAT_800825dc; + if (0.00000000 <= param_2[3]) { + if (param_2[3] <= 1.00000000) { + return 1; + } + return 0; + } + return 2; } return 2; - } - return 2; } @@ -130213,25 +129366,26 @@ undefined8 if_sky_present_convert_values(int param_1,float *param_2) void init_lightfixture_tables(void) { - undefined2 *puVar1; - - puVar1 = &light_fixture_table; - do { - puVar1 = puVar1 + 6; - *puVar1 = 0; - puVar1 = puVar1; - } while (puVar1 < &cur_entry_lightfixture_table); - puVar1 = &DAT_80082b18; - do { - puVar1 = puVar1 + 8; - puVar1[2] = 0; - puVar1[4] = 0; - puVar1[6] = 0; - *puVar1 = 0; - puVar1 = puVar1; - } while (puVar1 != (undefined2 *)&DAT_80083318); - dword_80046030 = 0; - return; + lightfixture *plVar1; + undefined2 *puVar2; + + plVar1 = light_fixture_table; + do { + plVar1 = plVar1 + 1; + plVar1->index = 0; + plVar1 = plVar1; + } while (plVar1 < (lightfixture *)&cur_entry_lightfixture_table); + puVar2 = &DAT_80082b18; + do { + puVar2 = puVar2 + 8; + puVar2[2] = 0; + puVar2[4] = 0; + puVar2[6] = 0; + *puVar2 = 0; + puVar2 = puVar2; + } while (puVar2 != (undefined2 *)&DAT_80083318); + dword_80046030 = 0; + return; } @@ -130239,57 +129393,57 @@ void init_lightfixture_tables(void) int get_index_of_current_entry_in_init_lightfixture_table(void) { - short *psVar1; - int iVar2; - - psVar1 = &light_fixture_table; - iVar2 = 0; - while( true ) { - if (*psVar1 == 0) { - return iVar2; + lightfixture *plVar1; + int iVar2; + + plVar1 = light_fixture_table; + iVar2 = 0; + while( true ) { + if (plVar1->index == 0) { + return iVar2; + } + if (plVar1[1].index == 0) { + return iVar2 + 1; + } + if (plVar1[2].index == 0) { + return iVar2 + 2; + } + if (plVar1[3].index == 0) break; + iVar2 += 4; + plVar1 = plVar1 + 4; + if (iVar2 == 100) { + return 100; + } } - if (psVar1[6] == 0) { - return iVar2 + 1; - } - if (psVar1[0xc] == 0) { - return iVar2 + 2; - } - if (psVar1[0x12] == 0) break; - iVar2 += 4; - psVar1 = psVar1 + 0x18; - if (iVar2 == 100) { - return 100; - } - } - return iVar2 + 3; + return iVar2 + 3; } -void add_entry_to_init_lightfixture_table(undefined4 param_1) +void add_entry_to_init_lightfixture_table(Gfx *DL) { - int iVar1; - - iVar1 = get_index_of_current_entry_in_init_lightfixture_table(); - cur_entry_lightfixture_table = (short)iVar1; - iVar1 = (int)cur_entry_lightfixture_table; - if (cur_entry_lightfixture_table != 100) { - (&light_fixture_table)[iVar1 * 6] = index_of_cur_entry_lightfixture_table; - (&DAT_80082664)[iVar1 * 3] = param_1; - } - return; + int iVar1; + + iVar1 = get_index_of_current_entry_in_init_lightfixture_table(); + cur_entry_lightfixture_table = (short)iVar1; + iVar1 = (int)cur_entry_lightfixture_table; + if (cur_entry_lightfixture_table != 100) { + light_fixture_table[iVar1].index = index_of_cur_entry_lightfixture_table; + light_fixture_table[iVar1].ptr_start_pertinent_DL = DL; + } + return; } -void save_ptrDL_enpoint_to_current_init_lightfixture_table(undefined4 param_1) +void save_ptrDL_enpoint_to_current_init_lightfixture_table(int param_1) { - if (cur_entry_lightfixture_table != 100) { - (&DAT_80082668)[(int)cur_entry_lightfixture_table * 3] = param_1; - } - return; + if (cur_entry_lightfixture_table != 100) { + light_fixture_table[cur_entry_lightfixture_table].ptr_end_pertinent_DL = param_1; + } + return; } @@ -130297,13 +129451,13 @@ void save_ptrDL_enpoint_to_current_init_lightfixture_table(undefined4 param_1) undefined8 check_if_imageID_is_light(longlong imageID) { - if ((((((imageID != 0xc9) && (imageID != 0xcb)) && (imageID != 0xcd)) && - ((imageID != 0xfc && (imageID != 0xfe)))) && - ((imageID != 0xff && ((imageID != 0x100 && (imageID != 0x1ac)))))) && - ((imageID != 0x3d6 && (imageID != 0x567)))) { - return 0; - } - return 1; + if ((((((imageID != 0xc9) && (imageID != 0xcb)) && (imageID != 0xcd)) && + ((imageID != 0xfc && (imageID != 0xfe)))) && + ((imageID != 0xff && ((imageID != 0x100 && (imageID != 0x1ac)))))) && + ((imageID != 0x3d6 && (imageID != 0x567)))) { + return 0; + } + return 1; } @@ -130311,23 +129465,23 @@ undefined8 check_if_imageID_is_light(longlong imageID) uint return_ptr_vertex_of_entry_room(char *entry,int room) { - uint uVar1; - char *pcVar2; - char cVar3; - - if (*entry != '\x04') { - cVar3 = entry[-8]; - pcVar2 = entry; - while (entry = pcVar2 + -8, cVar3 != '\x04') { - cVar3 = pcVar2[-0x10]; - pcVar2 = entry; + uint uVar1; + char *pcVar2; + char cVar3; + + if (*entry != '\x04') { + cVar3 = entry[-8]; + pcVar2 = entry; + while (entry = pcVar2 + -8, cVar3 != '\x04') { + cVar3 = pcVar2[-0x10]; + pcVar2 = entry; + } } - } - uVar1 = *(uint *)(entry + 4); - if ((uVar1 & 0xff000000) == 0xe000000) { - uVar1 = *(int *)(&dword_80041418 + room * 0x50) + (uVar1 & 0xffffff); - } - return uVar1; + uVar1 = *(uint *)(entry + 4); + if ((uVar1 & 0xff000000) == 0xe000000) { + uVar1 = (int)roominformationblock[room].ptr_point_index + (uVar1 & 0xffffff); + } + return uVar1; } @@ -130335,13 +129489,13 @@ uint return_ptr_vertex_of_entry_room(char *entry,int room) void proc_7F0BB6F4(undefined8 param_1,ulonglong param_2) { - if (param_2 < 5) { + if (param_2 < 5) { // WARNING: Could not recover jumptable at 0x7f0bb70c. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700EF63C)[(int)param_2])(); + (*(code *)(&jpt_700EF63C)[(int)param_2])(); + return; + } return; - } - return; } @@ -130350,23 +129504,23 @@ void proc_7F0BB874(undefined8 param_1,ulonglong param_2,int param_3,undefined2 * undefined2 *param_5,undefined2 *param_6) { - uint uVar1; - int iStack12; - int iStack8; - int iStack4; - - proc_7F0BB6F4(param_1,param_2); - uVar1 = return_ptr_vertex_of_entry_room((char *)param_1,param_3); - *param_4 = *(undefined2 *)(uVar1 + iStack4 * 0x10); - param_4[1] = *(undefined2 *)(uVar1 + iStack4 * 0x10 + 2); - param_4[2] = *(undefined2 *)(uVar1 + iStack4 * 0x10 + 4); - *param_5 = *(undefined2 *)(uVar1 + iStack8 * 0x10); - param_5[1] = *(undefined2 *)(uVar1 + iStack8 * 0x10 + 2); - param_5[2] = *(undefined2 *)(uVar1 + iStack8 * 0x10 + 4); - *param_6 = *(undefined2 *)(uVar1 + iStack12 * 0x10); - param_6[1] = *(undefined2 *)(uVar1 + iStack12 * 0x10 + 2); - param_6[2] = *(undefined2 *)(uVar1 + iStack12 * 0x10 + 4); - return; + uint uVar1; + int iStack12; + int iStack8; + int iStack4; + + proc_7F0BB6F4(param_1,param_2); + uVar1 = return_ptr_vertex_of_entry_room((char *)param_1,param_3); + *param_4 = *(undefined2 *)(uVar1 + iStack4 * 0x10); + param_4[1] = *(undefined2 *)(uVar1 + iStack4 * 0x10 + 2); + param_4[2] = *(undefined2 *)(uVar1 + iStack4 * 0x10 + 4); + *param_5 = *(undefined2 *)(uVar1 + iStack8 * 0x10); + param_5[1] = *(undefined2 *)(uVar1 + iStack8 * 0x10 + 2); + param_5[2] = *(undefined2 *)(uVar1 + iStack8 * 0x10 + 4); + *param_6 = *(undefined2 *)(uVar1 + iStack12 * 0x10); + param_6[1] = *(undefined2 *)(uVar1 + iStack12 * 0x10 + 2); + param_6[2] = *(undefined2 *)(uVar1 + iStack12 * 0x10 + 4); + return; } @@ -130374,30 +129528,30 @@ void proc_7F0BB874(undefined8 param_1,ulonglong param_2,int param_3,undefined2 * void proc_7F0BB978(ulonglong param_1) { - ushort uVar1; - int iVar2; - int iVar3; - ushort *puVar4; - - iVar2 = *(int *)(&dword_80041418 + (int)param_1 * 0x50); - puVar4 = &DAT_80082b18; - uVar1 = DAT_80082b18; - while( true ) { - if (param_1 == (ulonglong)uVar1) { - iVar3 = iVar2 + (uint)puVar4[1] * 0x10; - *(byte *)(iVar3 + 0xc) = *(byte *)(iVar3 + 0xc) >> 2; - iVar3 = iVar2 + (uint)puVar4[1] * 0x10; - *(byte *)(iVar3 + 0xd) = *(byte *)(iVar3 + 0xd) >> 2; - iVar3 = iVar2 + (uint)puVar4[1] * 0x10; - *(byte *)(iVar3 + 0xe) = *(byte *)(iVar3 + 0xe) >> 2; - iVar3 = iVar2 + (uint)puVar4[1] * 0x10; - *(byte *)(iVar3 + 0xf) = *(byte *)(iVar3 + 0xf) >> 2; + ushort uVar1; + void *pvVar2; + void *pvVar3; + ushort *puVar4; + + pvVar2 = roominformationblock[(int)param_1].ptr_point_index; + puVar4 = &DAT_80082b18; + uVar1 = DAT_80082b18; + while( true ) { + if (param_1 == (ulonglong)uVar1) { + pvVar3 = (void *)((int)pvVar2 + (uint)puVar4[1] * 0x10); + *(byte *)((int)pvVar3 + 0xc) = *(byte *)((int)pvVar3 + 0xc) >> 2; + pvVar3 = (void *)((int)pvVar2 + (uint)puVar4[1] * 0x10); + *(byte *)((int)pvVar3 + 0xd) = *(byte *)((int)pvVar3 + 0xd) >> 2; + pvVar3 = (void *)((int)pvVar2 + (uint)puVar4[1] * 0x10); + *(byte *)((int)pvVar3 + 0xe) = *(byte *)((int)pvVar3 + 0xe) >> 2; + pvVar3 = (void *)((int)pvVar2 + (uint)puVar4[1] * 0x10); + *(byte *)((int)pvVar3 + 0xf) = *(byte *)((int)pvVar3 + 0xf) >> 2; + } + puVar4 = puVar4 + 2; + if (puVar4 == (ushort *)&DAT_80083318) break; + uVar1 = *puVar4; } - puVar4 = puVar4 + 2; - if (puVar4 == (ushort *)&DAT_80083318) break; - uVar1 = *puVar4; - } - return; + return; } @@ -130405,26 +129559,26 @@ void proc_7F0BB978(ulonglong param_1) void proc_7F0BBA20(int param_1,ulonglong param_2) { - int iVar1; - int iVar2; - longlong lVar3; - - lVar3 = proc_7F0BBADC(param_1,param_2); - iVar2 = dword_80046030; - if (lVar3 == 0) { - iVar1 = *(int *)(&dword_80041418 + (int)param_2 * 0x50); - (&DAT_80082b18)[dword_80046030 * 2] = (short)param_2; - (&DAT_80082b1a)[iVar2 * 2] = (short)((uint)(param_1 - iVar1) >> 4); - *(byte *)(param_1 + 0xc) = *(byte *)(param_1 + 0xc) >> 2; - *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) >> 2; - *(byte *)(param_1 + 0xe) = *(byte *)(param_1 + 0xe) >> 2; - *(byte *)(param_1 + 0xf) = *(byte *)(param_1 + 0xf) >> 2; - dword_80046030 += 1; - if (0x1ff < dword_80046030) { - dword_80046030 = 0; + void *pvVar1; + int iVar2; + longlong lVar3; + + lVar3 = proc_7F0BBADC(param_1,param_2); + iVar2 = dword_80046030; + if (lVar3 == 0) { + pvVar1 = roominformationblock[(int)param_2].ptr_point_index; + (&DAT_80082b18)[dword_80046030 * 2] = (short)param_2; + (&DAT_80082b1a)[iVar2 * 2] = (short)((uint)(param_1 - (int)pvVar1) >> 4); + *(byte *)(param_1 + 0xc) = *(byte *)(param_1 + 0xc) >> 2; + *(byte *)(param_1 + 0xd) = *(byte *)(param_1 + 0xd) >> 2; + *(byte *)(param_1 + 0xe) = *(byte *)(param_1 + 0xe) >> 2; + *(byte *)(param_1 + 0xf) = *(byte *)(param_1 + 0xf) >> 2; + dword_80046030 += 1; + if (0x1ff < dword_80046030) { + dword_80046030 = 0; + } } - } - return; + return; } @@ -130432,49 +129586,50 @@ void proc_7F0BBA20(int param_1,ulonglong param_2) undefined8 proc_7F0BBADC(int param_1,ulonglong param_2) { - ushort uVar1; - ushort *puVar2; - ulonglong uVar3; - - uVar3 = SEXT48((int)((uint)(param_1 - *(int *)(&dword_80041418 + (int)param_2 * 0x50)) >> 4)); - puVar2 = &DAT_80082b18; - uVar1 = DAT_80082b18; - while( true ) { - if (param_2 == (ulonglong)uVar1) { - if (uVar3 == (ulonglong)puVar2[1]) { - return 1; - } - uVar1 = puVar2[2]; + ushort uVar1; + ushort *puVar2; + ulonglong uVar3; + + uVar3 = SEXT48((int)((uint)(param_1 - (int)roominformationblock[(int)param_2].ptr_point_index) + >> 4)); + puVar2 = &DAT_80082b18; + uVar1 = DAT_80082b18; + while( true ) { + if (param_2 == (ulonglong)uVar1) { + if (uVar3 == (ulonglong)puVar2[1]) { + return 1; + } + uVar1 = puVar2[2]; + } + else { + uVar1 = puVar2[2]; + } + if (param_2 == (ulonglong)uVar1) { + if (uVar3 == (ulonglong)puVar2[3]) { + return 1; + } + uVar1 = puVar2[4]; + } + else { + uVar1 = puVar2[4]; + } + if (param_2 == (ulonglong)uVar1) { + if (uVar3 == (ulonglong)puVar2[5]) { + return 1; + } + uVar1 = puVar2[6]; + } + else { + uVar1 = puVar2[6]; + } + if ((param_2 == (ulonglong)uVar1) && (uVar3 == (ulonglong)puVar2[7])) break; + puVar2 = puVar2 + 8; + if (puVar2 == (ushort *)&DAT_80083318) { + return 0; + } + uVar1 = *puVar2; } - else { - uVar1 = puVar2[2]; - } - if (param_2 == (ulonglong)uVar1) { - if (uVar3 == (ulonglong)puVar2[3]) { - return 1; - } - uVar1 = puVar2[4]; - } - else { - uVar1 = puVar2[4]; - } - if (param_2 == (ulonglong)uVar1) { - if (uVar3 == (ulonglong)puVar2[5]) { - return 1; - } - uVar1 = puVar2[6]; - } - else { - uVar1 = puVar2[6]; - } - if ((param_2 == (ulonglong)uVar1) && (uVar3 == (ulonglong)puVar2[7])) break; - puVar2 = puVar2 + 8; - if (puVar2 == (ushort *)&DAT_80083318) { - return 0; - } - uVar1 = *puVar2; - } - return 1; + return 1; } @@ -130482,17 +129637,17 @@ undefined8 proc_7F0BBADC(int param_1,ulonglong param_2) void proc_7F0BBBA8(undefined8 param_1,ulonglong param_2,int param_3) { - uint uVar1; - int iStack16; - int iStack12; - int iStack8; - - proc_7F0BB6F4(param_1,param_2); - uVar1 = return_ptr_vertex_of_entry_room((char *)param_1,param_3); - proc_7F0BBA20(iStack8 * 0x10 + uVar1,(longlong)param_3); - proc_7F0BBA20(iStack12 * 0x10 + uVar1,(longlong)param_3); - proc_7F0BBA20(iStack16 * 0x10 + uVar1,(longlong)param_3); - return; + uint uVar1; + int iStack16; + int iStack12; + int iStack8; + + proc_7F0BB6F4(param_1,param_2); + uVar1 = return_ptr_vertex_of_entry_room((char *)param_1,param_3); + proc_7F0BBA20(iStack8 * 0x10 + uVar1,(longlong)param_3); + proc_7F0BBA20(iStack12 * 0x10 + uVar1,(longlong)param_3); + proc_7F0BBA20(iStack16 * 0x10 + uVar1,(longlong)param_3); + return; } @@ -130500,20 +129655,20 @@ void proc_7F0BBBA8(undefined8 param_1,ulonglong param_2,int param_3) int proc_7F0BBC30(undefined8 param_1,ulonglong param_2,int param_3) { - uint uVar4; - undefined8 uVar1; - undefined8 uVar2; - undefined8 uVar3; - int iStack16; - int iStack12; - int iStack8; - - proc_7F0BB6F4(param_1,param_2); - uVar4 = return_ptr_vertex_of_entry_room((char *)param_1,param_3); - uVar1 = proc_7F0BBADC(iStack12 * 0x10 + uVar4,(longlong)param_3); - uVar2 = proc_7F0BBADC(iStack8 * 0x10 + uVar4,(longlong)param_3); - uVar3 = proc_7F0BBADC(iStack16 * 0x10 + uVar4,(longlong)param_3); - return (int)uVar3 + (int)uVar2 + (int)uVar1; + uint uVar4; + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + int iStack16; + int iStack12; + int iStack8; + + proc_7F0BB6F4(param_1,param_2); + uVar4 = return_ptr_vertex_of_entry_room((char *)param_1,param_3); + uVar1 = proc_7F0BBADC(iStack12 * 0x10 + uVar4,(longlong)param_3); + uVar2 = proc_7F0BBADC(iStack8 * 0x10 + uVar4,(longlong)param_3); + uVar3 = proc_7F0BBADC(iStack16 * 0x10 + uVar4,(longlong)param_3); + return (int)uVar3 + (int)uVar2 + (int)uVar1; } @@ -130523,44 +129678,45 @@ int proc_7F0BBC30(undefined8 param_1,ulonglong param_2,int param_3) undefined8 proc_7F0BBCCC(void) { - ushort uVar1; - short *psVar2; - short *in_a0_lo; - ulonglong in_a1; - int iVar3; - int iVar4; - int iVar5; - ushort *puVar6; - f32 fVar7; - - puVar6 = &DAT_80082b18; - uVar1 = DAT_80082b18; - do { - if (in_a1 == (ulonglong)uVar1) { - psVar2 = (short *)((uint)puVar6[1] * 0x10 + *(int *)(&dword_80041418 + (int)in_a1 * 0x50)); - iVar3 = (int)*psVar2 - (int)*in_a0_lo; - iVar4 = (int)psVar2[1] - (int)in_a0_lo[1]; - iVar5 = (int)psVar2[2] - (int)in_a0_lo[2]; - if (iVar3 < 0) { - iVar3 = -iVar3; - } - if (iVar4 < 0) { - iVar4 = -iVar4; - } - if (iVar5 < 0) { - iVar5 = -iVar5; - } - fVar7 = proc_7F0B483C(); - if (iVar3 + iVar4 + iVar5 < (int)((float)fVar7 * 100.00000000)) { - return 1; - } - } - puVar6 = puVar6 + 2; - if (puVar6 == (ushort *)&DAT_80083318) { - return 0; - } - uVar1 = *puVar6; - } while( true ); + ushort uVar1; + short *psVar2; + short *in_a0_lo; + ulonglong in_a1; + int iVar3; + int iVar4; + int iVar5; + ushort *puVar6; + f32 fVar7; + + puVar6 = &DAT_80082b18; + uVar1 = DAT_80082b18; + do { + if (in_a1 == (ulonglong)uVar1) { + psVar2 = (short *)((uint)puVar6[1] * 0x10 + + (int)roominformationblock[(int)in_a1].ptr_point_index); + iVar3 = (int)*psVar2 - (int)*in_a0_lo; + iVar4 = (int)psVar2[1] - (int)in_a0_lo[1]; + iVar5 = (int)psVar2[2] - (int)in_a0_lo[2]; + if (iVar3 < 0) { + iVar3 = -iVar3; + } + if (iVar4 < 0) { + iVar4 = -iVar4; + } + if (iVar5 < 0) { + iVar5 = -iVar5; + } + fVar7 = proc_7F0B483C(); + if (iVar3 + iVar4 + iVar5 < (int)((float)fVar7 * 100.00000000)) { + return 1; + } + } + puVar6 = puVar6 + 2; + if (puVar6 == (ushort *)&DAT_80083318) { + return 0; + } + uVar1 = *puVar6; + } while( true ); } @@ -130568,197 +129724,209 @@ undefined8 proc_7F0BBCCC(void) void proc_7F0BBE0C(ulonglong param_1,ulonglong param_2,short param_3) { - short sVar1; - bool bVar2; - int iVar5; - char cVar6; - longlong lVar3; - ulonglong uVar4; - ulonglong uVar7; - int iVar8; - short *psVar9; - int iVar11; - ulonglong uVar10; - char *pcVar12; - int iVar13; - int iVar14; - int iVar15; - int iVar16; - float fVar17; - f32 fVar18; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float fStack112; - float fStack108; - float fStack104; - float fStack100; - float fStack96; - float fStack92; - float fStack88; - float fStack84; - float fStack80; - short sStack74; - short sStack68; - undefined2 auStack48 [4]; - undefined2 auStack40 [4]; - undefined2 auStack32 [4]; - short sStack24; - short sStack22; - short sStack20; - short sStack16; - short sStack14; - short sStack12; - short sStack8; - short sStack6; - short sStack4; - - psVar9 = &light_fixture_table; - sVar1 = light_fixture_table; - while (((param_3 != sVar1 || (param_1 < (ulonglong)(longlong)*(int *)(psVar9 + 2))) || - ((ulonglong)(longlong)*(int *)(psVar9 + 4) <= param_1))) { - psVar9 = psVar9 + 6; - if (psVar9 == &cur_entry_lightfixture_table) { - return; + short sVar1; + Gfx *pGVar2; + bool bVar3; + int iVar6; + char cVar7; + longlong lVar4; + ulonglong uVar5; + ulonglong uVar8; + int iVar9; + lightfixture *plVar10; + int iVar12; + ulonglong uVar11; + char *pcVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + float fVar18; + f32 fVar19; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float fStack112; + float fStack108; + float fStack104; + float fStack100; + float fStack96; + float fStack92; + float fStack88; + float fStack84; + float fStack80; + short sStack74; + short sStack68; + undefined2 auStack48 [4]; + undefined2 auStack40 [4]; + undefined2 auStack32 [4]; + short sStack24; + short sStack22; + short sStack20; + short sStack16; + short sStack14; + short sStack12; + short sStack8; + short sStack6; + short sStack4; + + plVar10 = light_fixture_table; + sVar1 = light_fixture_table[0].index; + while (((param_3 != sVar1 || + (param_1 < (ulonglong)(longlong)(int)plVar10->ptr_start_pertinent_DL)) || + ((ulonglong)(longlong)plVar10->ptr_end_pertinent_DL <= param_1))) { + plVar10 = plVar10 + 1; + if (plVar10 == (lightfixture *)&cur_entry_lightfixture_table) { + return; + } + sVar1 = plVar10->index; } - sVar1 = *psVar9; - } - iVar5 = proc_7F0BBC30(param_1,param_2,(int)sVar1); - if (iVar5 == 0) { - proc_7F0BBBA8(param_1,param_2,(int)*psVar9); - proc_7F0BB874(param_1,param_2,(int)*psVar9,&sStack8,&sStack16,&sStack24); - iVar5 = ((int)sStack8 - (int)sStack16) * 0x10000 >> 0x10; - iVar13 = ((int)sStack8 - (int)sStack24) * 0x10000 >> 0x10; - iVar8 = ((int)sStack6 - (int)sStack14) * 0x10000 >> 0x10; - sStack68 = sStack14 - sStack22; - iVar16 = ((int)sStack16 - (int)sStack24) * 0x10000 >> 0x10; - iVar11 = ((int)sStack4 - (int)sStack12) * 0x10000 >> 0x10; - iVar15 = ((int)sStack4 - (int)sStack20) * 0x10000 >> 0x10; - iVar14 = ((int)sStack6 - (int)sStack22) * 0x10000 >> 0x10; - sStack74 = sStack12 - sStack20; - fVar17 = sqrtf((float)(iVar5 * iVar5 + iVar8 * iVar8 + iVar11 * iVar11)); - fVar18 = proc_7F0B4830(); - fStack80 = 10.00000000 / ((float)fVar18 * fVar17); - fVar17 = sqrtf((float)(iVar13 * iVar13 + iVar14 * iVar14 + iVar15 * iVar15)); - fVar18 = proc_7F0B4830(); - fStack84 = 10.00000000 / ((float)fVar18 * fVar17); - fVar17 = sqrtf((float)(iVar16 * iVar16 + (int)sStack68 * (int)sStack68 + - (int)sStack74 * (int)sStack74)); - fVar18 = proc_7F0B4830(); - fStack88 = 10.00000000 / ((float)fVar18 * fVar17); - proc_7F0BCA34((int)*psVar9,&fStack100); - fVar17 = 0.00000000; - if (true) { - do { - fVar18 = proc_7F0B4830(); - fStack112 = fStack100 + ((float)(int)sStack16 + (float)iVar5 * fVar17) * (float)fVar18; - fVar18 = proc_7F0B4830(); - fStack108 = fStack96 + ((float)(int)sStack14 + (float)iVar8 * fVar17) * (float)fVar18; - fVar18 = proc_7F0B4830(); - fStack104 = fStack92 + ((float)(int)sStack12 + (float)iVar11 * fVar17) * (float)fVar18; - proc_7F0A2160(&fStack112,0,extraout_f12); - fVar17 = fVar17 + fStack80; - } while (fVar17 < 1.00000000); - } - fVar17 = 0.00000000; - if (true) { - do { - fVar18 = proc_7F0B4830(); - fStack112 = fStack100 + ((float)(int)sStack24 + (float)iVar13 * fVar17) * (float)fVar18; - fVar18 = proc_7F0B4830(); - fStack108 = fStack96 + ((float)(int)sStack22 + (float)iVar14 * fVar17) * (float)fVar18; - fVar18 = proc_7F0B4830(); - fStack104 = fStack92 + ((float)(int)sStack20 + (float)iVar15 * fVar17) * (float)fVar18; - proc_7F0A2160(&fStack112,0,extraout_f12_00); - fVar17 = fVar17 + fStack84; - } while (fVar17 < 1.00000000); - } - fVar17 = 0.00000000; - if (true) { - iVar5 = (int)sStack68; - iVar8 = (int)sStack74; - do { - fVar18 = proc_7F0B4830(); - fStack112 = fStack100 + ((float)(int)sStack24 + (float)iVar16 * fVar17) * (float)fVar18; - fVar18 = proc_7F0B4830(); - fStack108 = fStack96 + ((float)(int)sStack22 + (float)iVar5 * fVar17) * (float)fVar18; - fVar18 = proc_7F0B4830(); - fStack104 = fStack92 + ((float)(int)sStack20 + (float)iVar8 * fVar17) * (float)fVar18; - proc_7F0A2160(&fStack112,0,extraout_f12_01); - fVar17 = fVar17 + fStack88; - } while (fVar17 < 1.00000000); - pcVar12 = *(char **)(psVar9 + 2); - } - else { - pcVar12 = *(char **)(psVar9 + 2); - } - uVar10 = SEXT48((int)pcVar12); - uVar7 = SEXT48(*(int *)(psVar9 + 4)); - if (uVar10 < uVar7) { - cVar6 = *pcVar12; - while( true ) { - bVar2 = false; - if (cVar6 == -0x41) { - proc_7F0BB874(uVar10,0,(int)*psVar9,auStack32,auStack40,auStack48); - lVar3 = proc_7F0BBCCC(); - if (lVar3 == 0) { - lVar3 = proc_7F0BBCCC(); - if (lVar3 == 0) { - lVar3 = proc_7F0BBCCC(); - if (lVar3 != 0) { - bVar2 = true; - } - } - else { - bVar2 = true; - } - } - else { - bVar2 = true; - } - if (bVar2) { - proc_7F0BBBA8(uVar10,0,(int)*psVar9); - } - uVar7 = SEXT48(*(int *)(psVar9 + 4)); + iVar6 = proc_7F0BBC30(param_1,param_2,(int)sVar1); + if (iVar6 == 0) { + proc_7F0BBBA8(param_1,param_2,(int)plVar10->index); + proc_7F0BB874(param_1,param_2,(int)plVar10->index,&sStack8,&sStack16,&sStack24); + iVar6 = ((int)sStack8 - (int)sStack16) * 0x10000 >> 0x10; + iVar14 = ((int)sStack8 - (int)sStack24) * 0x10000 >> 0x10; + iVar9 = ((int)sStack6 - (int)sStack14) * 0x10000 >> 0x10; + sStack68 = sStack14 - sStack22; + iVar17 = ((int)sStack16 - (int)sStack24) * 0x10000 >> 0x10; + iVar12 = ((int)sStack4 - (int)sStack12) * 0x10000 >> 0x10; + iVar16 = ((int)sStack4 - (int)sStack20) * 0x10000 >> 0x10; + iVar15 = ((int)sStack6 - (int)sStack22) * 0x10000 >> 0x10; + sStack74 = sStack12 - sStack20; + fVar18 = sqrtf((float)(iVar6 * iVar6 + iVar9 * iVar9 + iVar12 * iVar12)); + fVar19 = proc_7F0B4830(); + fStack80 = 10.00000000 / ((float)fVar19 * fVar18); + fVar18 = sqrtf((float)(iVar14 * iVar14 + iVar15 * iVar15 + iVar16 * iVar16)); + fVar19 = proc_7F0B4830(); + fStack84 = 10.00000000 / ((float)fVar19 * fVar18); + fVar18 = sqrtf((float)(iVar17 * iVar17 + (int)sStack68 * (int)sStack68 + + (int)sStack74 * (int)sStack74)); + fVar19 = proc_7F0B4830(); + fStack88 = 10.00000000 / ((float)fVar19 * fVar18); + proc_7F0BCA34((int)plVar10->index,&fStack100); + fVar18 = 0.00000000; + if (true) { + do { + fVar19 = proc_7F0B4830(); + fStack112 = fStack100 + + ((float)(int)sStack16 + (float)iVar6 * fVar18) * (float)fVar19; + fVar19 = proc_7F0B4830(); + fStack108 = fStack96 + + ((float)(int)sStack14 + (float)iVar9 * fVar18) * (float)fVar19; + fVar19 = proc_7F0B4830(); + fStack104 = fStack92 + + ((float)(int)sStack12 + (float)iVar12 * fVar18) * (float)fVar19; + proc_7F0A2160(&fStack112,0,extraout_f12); + fVar18 = fVar18 + fStack80; + } while (fVar18 < 1.00000000); + } + fVar18 = 0.00000000; + if (true) { + do { + fVar19 = proc_7F0B4830(); + fStack112 = fStack100 + + ((float)(int)sStack24 + (float)iVar14 * fVar18) * (float)fVar19; + fVar19 = proc_7F0B4830(); + fStack108 = fStack96 + + ((float)(int)sStack22 + (float)iVar15 * fVar18) * (float)fVar19; + fVar19 = proc_7F0B4830(); + fStack104 = fStack92 + + ((float)(int)sStack20 + (float)iVar16 * fVar18) * (float)fVar19; + proc_7F0A2160(&fStack112,0,extraout_f12_00); + fVar18 = fVar18 + fStack84; + } while (fVar18 < 1.00000000); + } + fVar18 = 0.00000000; + if (true) { + iVar6 = (int)sStack68; + iVar9 = (int)sStack74; + do { + fVar19 = proc_7F0B4830(); + fStack112 = fStack100 + + ((float)(int)sStack24 + (float)iVar17 * fVar18) * (float)fVar19; + fVar19 = proc_7F0B4830(); + fStack108 = fStack96 + + ((float)(int)sStack22 + (float)iVar6 * fVar18) * (float)fVar19; + fVar19 = proc_7F0B4830(); + fStack104 = fStack92 + + ((float)(int)sStack20 + (float)iVar9 * fVar18) * (float)fVar19; + proc_7F0A2160(&fStack112,0,extraout_f12_01); + fVar18 = fVar18 + fStack88; + } while (fVar18 < 1.00000000); + pGVar2 = plVar10->ptr_start_pertinent_DL; } else { - uVar4 = 0; - if (cVar6 == -0x4f) { - do { - uVar4 = SEXT48((int)uVar4 + 1); - bVar2 = false; - proc_7F0BB874(uVar10,uVar4,(int)*psVar9,auStack32,auStack40,auStack48); - lVar3 = proc_7F0BBCCC(); - if (lVar3 == 0) { - lVar3 = proc_7F0BBCCC(); - if (lVar3 == 0) { - lVar3 = proc_7F0BBCCC(); - if (lVar3 != 0) { - bVar2 = true; - } + pGVar2 = plVar10->ptr_start_pertinent_DL; + } + uVar11 = SEXT48((int)pGVar2); + uVar8 = SEXT48(plVar10->ptr_end_pertinent_DL); + if (uVar11 < uVar8) { + cVar7 = *(char *)pGVar2; + while( true ) { + bVar3 = false; + if (cVar7 == -0x41) { + proc_7F0BB874(uVar11,0,(int)plVar10->index,auStack32,auStack40,auStack48); + lVar4 = proc_7F0BBCCC(); + if (lVar4 == 0) { + lVar4 = proc_7F0BBCCC(); + if (lVar4 == 0) { + lVar4 = proc_7F0BBCCC(); + if (lVar4 != 0) { + bVar3 = true; + } + } + else { + bVar3 = true; + } + } + else { + bVar3 = true; + } + if (bVar3) { + proc_7F0BBBA8(uVar11,0,(int)plVar10->index); + } + uVar8 = SEXT48(plVar10->ptr_end_pertinent_DL); } else { - bVar2 = true; + uVar5 = 0; + if (cVar7 == -0x4f) { + do { + uVar5 = SEXT48((int)uVar5 + 1); + bVar3 = false; + proc_7F0BB874(uVar11,uVar5,(int)plVar10->index,auStack32,auStack40, + auStack48); + lVar4 = proc_7F0BBCCC(); + if (lVar4 == 0) { + lVar4 = proc_7F0BBCCC(); + if (lVar4 == 0) { + lVar4 = proc_7F0BBCCC(); + if (lVar4 != 0) { + bVar3 = true; + } + } + else { + bVar3 = true; + } + } + else { + bVar3 = true; + } + if (bVar3) { + proc_7F0BBBA8(uVar11,uVar5,(int)plVar10->index); + } + } while (uVar5 != 4); + uVar8 = SEXT48(plVar10->ptr_end_pertinent_DL); + } } - } - else { - bVar2 = true; - } - if (bVar2) { - proc_7F0BBBA8(uVar10,uVar4,(int)*psVar9); - } - } while (uVar4 != 4); - uVar7 = SEXT48(*(int *)(psVar9 + 4)); - } + pcVar13 = (char *)((int)uVar11 + 8); + uVar11 = SEXT48((int)pcVar13); + if (uVar8 <= uVar11) break; + cVar7 = *pcVar13; + } } - pcVar12 = (char *)((int)uVar10 + 8); - uVar10 = SEXT48((int)pcVar12); - if (uVar7 <= uVar10) break; - cVar6 = *pcVar12; - } } - } - return; + return; } @@ -130766,42 +129934,42 @@ void proc_7F0BBE0C(ulonglong param_1,ulonglong param_2,short param_3) void proc_7F0BC4C4(short param_1) { - short *psVar1; - short sVar2; - - psVar1 = &light_fixture_table; - sVar2 = light_fixture_table; - while( true ) { - if (param_1 == sVar2) { - *psVar1 = 0; - sVar2 = psVar1[6]; + lightfixture *plVar1; + short sVar2; + + plVar1 = light_fixture_table; + sVar2 = light_fixture_table[0].index; + while( true ) { + if (param_1 == sVar2) { + plVar1->index = 0; + sVar2 = plVar1[1].index; + } + else { + sVar2 = plVar1[1].index; + } + if (param_1 == sVar2) { + plVar1[1].index = 0; + sVar2 = plVar1[2].index; + } + else { + sVar2 = plVar1[2].index; + } + if (param_1 == sVar2) { + plVar1[2].index = 0; + sVar2 = plVar1[3].index; + } + else { + sVar2 = plVar1[3].index; + } + if (param_1 == sVar2) { + plVar1[3].index = 0; + } + plVar1 = plVar1 + 4; + if (plVar1 == (lightfixture *)&cur_entry_lightfixture_table) break; + sVar2 = plVar1->index; } - else { - sVar2 = psVar1[6]; - } - if (param_1 == sVar2) { - psVar1[6] = 0; - sVar2 = psVar1[0xc]; - } - else { - sVar2 = psVar1[0xc]; - } - if (param_1 == sVar2) { - psVar1[0xc] = 0; - sVar2 = psVar1[0x12]; - } - else { - sVar2 = psVar1[0x12]; - } - if (param_1 == sVar2) { - psVar1[0x12] = 0; - } - psVar1 = psVar1 + 0x18; - if (psVar1 == &cur_entry_lightfixture_table) break; - sVar2 = *psVar1; - } - index_of_cur_entry_lightfixture_table = param_1; - return; + index_of_cur_entry_lightfixture_table = param_1; + return; } @@ -130809,55 +129977,55 @@ void proc_7F0BC4C4(short param_1) void proc_7F0BC530(void) { - Player *pPVar1; - ulonglong uVar2; - undefined4 *puVar3; - int iVar4; - int iVar5; - undefined4 *puVar6; - undefined1 *puVar7; - longlong lVar8; - Player **ppPVar9; - - lVar8 = 0; - uVar2 = get_num_players(); - if (0 < (longlong)uVar2) { - ppPVar9 = &ptr_BONDdata_p1; - pPVar1 = ptr_BONDdata_p1; - while( true ) { - lVar8 = (longlong)((int)lVar8 + 1); - ppPVar9 = ppPVar9 + 1; - pPVar1->field_108C = -1; - uVar2 = get_num_players(); - if ((longlong)uVar2 <= lVar8) break; - pPVar1 = *ppPVar9; + Player *pPVar1; + s32 sVar2; + undefined4 *puVar3; + int iVar4; + undefined4 *puVar5; + undefined1 *puVar6; + int iVar7; + Player **ppPVar8; + room_index *prVar9; + + iVar7 = 0; + sVar2 = get_num_players(); + if (0 < sVar2) { + ppPVar8 = ptr_BONDdata_p1; + pPVar1 = ptr_BONDdata_p1[0]; + while( true ) { + iVar7 += 1; + ppPVar8 = ppPVar8 + 1; + pPVar1->field_108C = -1; + sVar2 = get_num_players(); + if (sVar2 <= iVar7) break; + pPVar1 = *ppPVar8; + } } - } - puVar6 = &DAT_80083450; - puVar7 = &DAT_80083320; - puVar3 = &DAT_80083900; - do { - puVar3 = puVar3 + 1; - *puVar6 = 0xffffffff; - *puVar7 = 2; - *puVar3 = 0xffffffff; - puVar6 = puVar6 + 1; - puVar7 = puVar7 + 1; - puVar3 = puVar3; - } while (puVar3 < &DAT_80083db0); - iVar4 = get_max_num_rooms(); - if (0 < iVar4) { - iVar4 = 1; - puVar7 = &roominformationblock; - while( true ) { - *(undefined2 *)(puVar7 + 0x36) = 0xffff; - iVar5 = get_max_num_rooms(); - if (iVar5 <= iVar4) break; - iVar4 += 1; - puVar7 = puVar7 + 0x50; + puVar5 = &DAT_80083450; + puVar6 = &DAT_80083320; + puVar3 = &DAT_80083900; + do { + puVar3 = puVar3 + 1; + *puVar5 = 0xffffffff; + *puVar6 = 2; + *puVar3 = 0xffffffff; + puVar5 = puVar5 + 1; + puVar6 = puVar6 + 1; + puVar3 = puVar3; + } while (puVar3 < &DAT_80083db0); + iVar7 = get_max_num_rooms(); + if (0 < iVar7) { + iVar7 = 1; + prVar9 = roominformationblock; + while( true ) { + prVar9->field_36 = -1; + iVar4 = get_max_num_rooms(); + if (iVar4 <= iVar7) break; + iVar7 += 1; + prVar9 = prVar9 + 1; + } } - } - return; + return; } @@ -130865,8 +130033,8 @@ void proc_7F0BC530(void) void proc_7F0BC624(int param_1) { - pPlayer->field_108C = param_1; - return; + pPlayer->field_108C = param_1; + return; } @@ -130874,9 +130042,9 @@ void proc_7F0BC624(int param_1) void proc_7F0BC634(int param_1,int param_2) { - (&DAT_8004144a)[param_2 * 0x28] = (short)param_1; - (&DAT_80083450)[param_1] = param_2; - return; + roominformationblock[param_2].field_36 = (short)param_1; + (&DAT_80083450)[param_1] = param_2; + return; } @@ -130884,9 +130052,9 @@ void proc_7F0BC634(int param_1,int param_2) void proc_7F0BC660(int param_1,int param_2) { - (&DAT_8004144a)[param_2 * 0x28] = 0xffff; - (&DAT_80083450)[param_1] = 0xffffffff; - return; + roominformationblock[param_2].field_36 = -1; + (&DAT_80083450)[param_1] = 0xffffffff; + return; } @@ -130894,12 +130062,12 @@ void proc_7F0BC660(int param_1,int param_2) void proc_7F0BC690(int param_1) { - if ((&DAT_80083450)[param_1] != -1) { - proc_7F0BC660(param_1,(&DAT_80083450)[param_1]); - } - (&DAT_80083320)[param_1] = 2; - (&DAT_80083900)[param_1] = 0xffffffff; - return; + if ((&DAT_80083450)[param_1] != -1) { + proc_7F0BC660(param_1,(&DAT_80083450)[param_1]); + } + (&DAT_80083320)[param_1] = 2; + (&DAT_80083900)[param_1] = 0xffffffff; + return; } @@ -130907,48 +130075,48 @@ void proc_7F0BC690(int param_1) int proc_7F0BC6F0(void) { - byte bVar1; - byte *pbVar2; - int iVar3; - - pbVar2 = &DAT_80083320; - iVar3 = 0; - while( true ) { - if (*pbVar2 < 2) { - bVar1 = pbVar2[1]; + byte bVar1; + byte *pbVar2; + int iVar3; + + pbVar2 = &DAT_80083320; + iVar3 = 0; + while( true ) { + if (*pbVar2 < 2) { + bVar1 = pbVar2[1]; + } + else { + if ((&DAT_80083900)[iVar3] == -1) { + return iVar3; + } + bVar1 = pbVar2[1]; + } + if (bVar1 < 2) { + bVar1 = pbVar2[2]; + } + else { + if ((&DAT_80083904)[iVar3] == -1) { + return iVar3 + 1; + } + bVar1 = pbVar2[2]; + } + if (bVar1 < 2) { + bVar1 = pbVar2[3]; + } + else { + if ((&DAT_80083908)[iVar3] == -1) { + return iVar3 + 2; + } + bVar1 = pbVar2[3]; + } + if ((1 < bVar1) && ((&DAT_8008390c)[iVar3] == -1)) break; + iVar3 += 4; + pbVar2 = pbVar2 + 4; + if (iVar3 == 300) { + return 0; + } } - else { - if ((&DAT_80083900)[iVar3] == -1) { - return iVar3; - } - bVar1 = pbVar2[1]; - } - if (bVar1 < 2) { - bVar1 = pbVar2[2]; - } - else { - if ((&DAT_80083904)[iVar3] == -1) { - return iVar3 + 1; - } - bVar1 = pbVar2[2]; - } - if (bVar1 < 2) { - bVar1 = pbVar2[3]; - } - else { - if ((&DAT_80083908)[iVar3] == -1) { - return iVar3 + 2; - } - bVar1 = pbVar2[3]; - } - if ((1 < bVar1) && ((&DAT_8008390c)[iVar3] == -1)) break; - iVar3 += 4; - pbVar2 = pbVar2 + 4; - if (iVar3 == 300) { - return 0; - } - } - return iVar3 + 3; + return iVar3 + 3; } @@ -130956,21 +130124,21 @@ int proc_7F0BC6F0(void) void proc_7F0BC7D4(void) { - int iVar1; - int *piVar2; - byte bVar3; - - piVar2 = &DAT_80083900; - iVar1 = 0; - do { - if ((-1 < *piVar2) && - (bVar3 = (&DAT_80083320)[iVar1] + 1, (&DAT_80083320)[iVar1] = bVar3, 1 < bVar3)) { - proc_7F0BC690(iVar1); - } - iVar1 += 1; - piVar2 = piVar2 + 1; - } while (iVar1 != 300); - return; + int iVar1; + int *piVar2; + byte bVar3; + + piVar2 = &DAT_80083900; + iVar1 = 0; + do { + if ((-1 < *piVar2) && + (bVar3 = (&DAT_80083320)[iVar1] + 1, (&DAT_80083320)[iVar1] = bVar3, 1 < bVar3)) { + proc_7F0BC690(iVar1); + } + iVar1 += 1; + piVar2 = piVar2 + 1; + } while (iVar1 != 300); + return; } @@ -130978,45 +130146,45 @@ void proc_7F0BC7D4(void) longlong proc_7F0BC85C(int param_1) { - short sVar1; - int iVar2; - bg_room_data *pbVar3; - longlong lVar4; - float afStack68 [5]; - float fStack48; - float fStack28; - float fStack20; - float fStack16; - float fStack12; - - sVar1 = (&DAT_8004144a)[param_1 * 0x28]; - lVar4 = (longlong)sVar1; - if ((lVar4 == -1) || (pPlayer->field_108C != (&DAT_80083900)[(int)sVar1])) { - if (lVar4 != -1) { - proc_7F0BC660((int)sVar1,param_1); + short sVar1; + int iVar2; + bg_room_data *pbVar3; + longlong lVar4; + float afStack68 [5]; + float fStack48; + float fStack28; + float fStack20; + float fStack16; + float fStack12; + + sVar1 = roominformationblock[param_1].field_36; + lVar4 = (longlong)sVar1; + if ((lVar4 == -1) || (pPlayer->field_108C != (&DAT_80083900)[sVar1])) { + if (lVar4 != -1) { + proc_7F0BC660((int)sVar1,param_1); + } + iVar2 = proc_7F0BC6F0(); + lVar4 = (longlong)iVar2; + proc_7F0BC634(iVar2,param_1); + (&DAT_80083320)[iVar2] = 0; + (&DAT_80083900)[iVar2] = pPlayer->field_108C; + guMtxIdentF_unrolled((float (*) [4] [4])afStack68); + afStack68[0] = room_data_float2; + fStack48 = room_data_float2; + fStack28 = room_data_float2; + pbVar3 = ptr_bgdata_room_fileposition_list + param_1; + fStack20 = (float)pbVar3->pPointTableBin * room_data_float2 - + (float)pPlayer->current_model_xpos; + fStack16 = (float)pbVar3->pPriMappingBin * room_data_float2 - + (float)pPlayer->current_model_ypos; + fStack12 = (float)pbVar3->pSecMappingBin * room_data_float2 - + (float)pPlayer->current_model_zpos; + proc_7F058C9C((int)afStack68,(uint *)(&DAT_80083db0 + iVar2 * 0x40)); } - iVar2 = proc_7F0BC6F0(); - lVar4 = (longlong)iVar2; - proc_7F0BC634(iVar2,param_1); - (&DAT_80083320)[iVar2] = 0; - (&DAT_80083900)[iVar2] = pPlayer->field_108C; - proc_7F057FD0(afStack68); - afStack68[0] = room_data_float2; - fStack48 = room_data_float2; - fStack28 = room_data_float2; - pbVar3 = ptr_bgdata_room_fileposition_list + param_1; - fStack20 = (float)pbVar3->pPointTableBin * room_data_float2 - (float)pPlayer->current_model_xpos - ; - fStack16 = (float)pbVar3->pPriMappingBin * room_data_float2 - (float)pPlayer->current_model_ypos - ; - fStack12 = (float)pbVar3->pSecMappingBin * room_data_float2 - (float)pPlayer->current_model_zpos - ; - proc_7F058C9C((int)afStack68,(uint *)(&DAT_80083db0 + iVar2 * 0x40)); - } - else { - (&DAT_80083320)[(int)sVar1] = 0; - } - return lVar4; + else { + (&DAT_80083320)[sVar1] = 0; + } + return lVar4; } @@ -131024,12 +130192,12 @@ longlong proc_7F0BC85C(int param_1) undefined4 * proc_7F0BC9C4(undefined4 *param_1,int param_2) { - longlong lVar1; - - lVar1 = proc_7F0BC85C(param_2); - *param_1 = 0x1020040; - *(undefined **)(param_1 + 1) = &DAT_80083db0 + (int)lVar1 * 0x40; - return param_1 + 2; + longlong lVar1; + + lVar1 = proc_7F0BC85C(param_2); + *param_1 = 0x1020040; + *(undefined **)(param_1 + 1) = &DAT_80083db0 + (int)lVar1 * 0x40; + return param_1 + 2; } @@ -131037,79 +130205,78 @@ undefined4 * proc_7F0BC9C4(undefined4 *param_1,int param_2) int proc_7F0BCA14(int param_1) { - return (int)&ptr_bgdata_room_fileposition_list[param_1].pPointTableBin; + return (int)&ptr_bgdata_room_fileposition_list[param_1].pPointTableBin; } -void proc_7F0BCA34(int param_1,float *param_2) +void proc_7F0BCA34(int index,float *param_2) { - *param_2 = (float)ptr_bgdata_room_fileposition_list[param_1].pPointTableBin * room_data_float2; - param_2[1] = (float)ptr_bgdata_room_fileposition_list[param_1].pPriMappingBin * room_data_float2; - param_2[2] = (float)ptr_bgdata_room_fileposition_list[param_1].pSecMappingBin * room_data_float2; - return; + *param_2 = (float)ptr_bgdata_room_fileposition_list[index].pPointTableBin * room_data_float2; + param_2[1] = (float)ptr_bgdata_room_fileposition_list[index].pPriMappingBin * room_data_float2; + param_2[2] = (float)ptr_bgdata_room_fileposition_list[index].pSecMappingBin * room_data_float2; + return; } -void load_resource(ulonglong param_1,longlong param_2,int param_3,int *param_4) +void load_resource(u8 *ptrdata,u32 bytes,fileentry *srcfile,resource_lookup_data_entry *lookupdata) { - int iVar1; - char *src; - undefined auStack8452 [8448]; - char *pcStack4; - - src = (char *)param_1; - if (param_2 == 0) { - romCopy(src,*(char **)(param_3 + 8),*param_4); - } - else { - pcStack4 = src + ((int)param_2 - (*param_4 + 7U & 0xfffffff8)); - if ((char *)((int)&i + 3U) < pcStack4 + -(int)src) { - romCopy(pcStack4,*(char **)(param_3 + 8),*param_4); - iVar1 = decompressdata((int)pcStack4,(int)src,(int)auStack8452); - param_4[1] = iVar1; + u8 *puVar1; + u8 buffer [8448]; + u8 *source; + + if (bytes == 0) { + romCopy((char *)ptrdata,(char *)srcfile->hw_address,lookupdata->rom_size); } else { - param_4[1] = 0; + source = ptrdata + (bytes - (lookupdata->rom_size + 7 & 0xfffffff8)); + if ((u8 *)((int)&i + 3U) < source + -(int)ptrdata) { + romCopy((char *)source,(char *)srcfile->hw_address,lookupdata->rom_size); + puVar1 = decompressdata(source,ptrdata,buffer); + *(u8 **)&lookupdata->pc_remaining = puVar1; + } + else { + lookupdata->pc_remaining = 0; + } } - } - return; + return; } -void load_resource_from_indy(undefined *param_1,int param_2,int param_3,int param_4) +void load_resource_from_indy + (u8 *ptrdata,u32 bytes,fileentry *srcfile,resource_lookup_data_entry *lookupdata) { - undefined4 uVar1; - undefined auStack8452 [8448]; - char *pcStack4; - - if (param_2 == 0) { - indy_load_resource(*(char **)(param_3 + 4),param_1); - } - else { - check_file_found_on_indy(*(char **)(param_3 + 4),(undefined4 *)(param_4 + 8)); - pcStack4 = param_1 + (param_2 - (*(int *)(param_4 + 8) + 7U & 0xfffffff8)); - if ((char *)((int)&i + 3) < pcStack4 + -(int)param_1) { - indy_load_resource(*(char **)(param_3 + 4),pcStack4); - if ((*pcStack4 == rz_header_1[0]._0_1_) && (pcStack4[1] == rz_header_1[1]._1_1_)) { - uVar1 = decompressdata((int)pcStack4,(int)param_1,(int)auStack8452); - } - else { - _bcopy(pcStack4,param_1,*(size_t *)(param_4 + 8)); - uVar1 = *(undefined4 *)(param_4 + 8); - } - *(undefined4 *)(param_4 + 4) = uVar1; + u8 *size; + u8 buffer [8448]; + u8 *pPayload; + + if (bytes == 0) { + indy_load_resource(srcfile->filename,ptrdata); } else { - *(undefined4 *)(param_4 + 4) = 0; + check_file_found_on_indy(srcfile->filename,&lookupdata->pc_size); + pPayload = ptrdata + (bytes - (lookupdata->pc_size + 7 & 0xfffffff8)); + if ((u8 *)((int)&i + 3U) < pPayload + -(int)ptrdata) { + indy_load_resource(srcfile->filename,pPayload); + if ((*pPayload == rz_header_1[0][0]) && (pPayload[1] == rz_header_1[1][1])) { + size = decompressdata(pPayload,ptrdata,buffer); + } + else { + _bcopy(pPayload,ptrdata,lookupdata->pc_size); + size = (u8 *)lookupdata->pc_size; + } + *(u8 **)&lookupdata->pc_remaining = size; + } + else { + lookupdata->pc_remaining = 0; + } } - } - return; + return; } @@ -131117,243 +130284,230 @@ void load_resource_from_indy(undefined *param_1,int param_2,int param_3,int para void ob_c_debug_setup(void) { - int *piVar1; - int *piVar2; - undefined **ppuVar3; - undefined **ppuVar4; - int iVar5; - int iVar6; - - get_ptr_debug_notice_list_entry(&ob_c_debug_notice_list_entry,"ob_c_debug"); - iVar6 = -0x7ffb9fa0; - iVar5 = file_entry_max + -1; - if (1 < iVar5) { - ppuVar3 = &ptr_res_data_next; - do { - piVar1 = (int *)(iVar6 + 0x14); - piVar2 = (int *)(iVar6 + 8); - ppuVar4 = ppuVar3 + 5; - iVar6 += 0xc; - *ppuVar3 = (undefined *)(*piVar1 - *piVar2); - ppuVar3[1] = NULL; - ppuVar3[2] = NULL; - ppuVar3[3] = NULL; - ppuVar3 = ppuVar4; - } while (ppuVar4 < &DAT_800888b0 + iVar5 * 0x14); - } - return; + resource_lookup_data_entry *lookupentry; + resource_lookup_data_entry *nextlookup; + int file_count; + fileentry *filetable_entry; + + get_ptr_debug_notice_list_entry(&ob_c_debug_notice_list_entry,"ob_c_debug"); + filetable_entry = file_resource_table; + file_count = file_entry_max + -1; + if (1 < file_count) { + lookupentry = resource_lookup_data_array + 1; + do { + filetable_entry = filetable_entry + 1; + nextlookup = lookupentry + 1; + lookupentry->rom_size = filetable_entry[1].hw_address - filetable_entry->hw_address; + lookupentry->pc_remaining = 0; + lookupentry->pc_size = 0; + lookupentry->buffer_remaining = 0; + lookupentry = nextlookup; + } while (nextlookup < resource_lookup_data_array + file_count); + } + return; } -void _load_rom_index_to_membank(int param_1,longlong param_2,int param_3,byte param_4) +void _load_rom_index_to_membank(int index,longlong param_2,int size,byte bank) { - load_rom_resource_index_to_membank(param_1,param_2,param_3,param_4); - return; + load_rom_resource_index_to_membank(index,param_2,size,bank); + return; } -undefined * -_load_resource_index_to_membank(int param_1,longlong param_2,undefined *param_3,int param_4) +undefined * _load_resource_index_to_membank(int fileid,longlong param_2,undefined *param_3,int bank) { - undefined *puVar1; - - puVar1 = load_resource_index_to_buffer(param_1,param_2,param_3,param_4); - return puVar1; + undefined *in_v0_lo; + + load_resource_index_to_buffer(fileid,param_2,param_3,bank); + return in_v0_lo; } -void _load_resource_named_to_membank(byte *param_1,int param_2,int param_3,byte param_4) +u8 * _load_resource_named_to_membank(byte *filename,int param_2,int size,byte bank) { - int iVar1; - - iVar1 = get_index_num_of_named_resource(param_1); - load_rom_resource_index_to_membank(iVar1,(longlong)param_2,param_3,param_4); - return; + int index; + u8 *puVar1; + + index = get_index_num_of_named_resource(filename); + puVar1 = load_rom_resource_index_to_membank(index,(longlong)param_2,size,bank); + return puVar1; } -undefined * _load_resource_named_to_buffer(byte *param_1,int param_2,undefined *param_3,int param_4) +u8 * _load_resource_named_to_buffer(byte *filename,int param_2,undefined *param_3,int param_4) { - int iVar1; - undefined *puVar2; - - iVar1 = get_index_num_of_named_resource(param_1); - puVar2 = load_resource_index_to_buffer(iVar1,(longlong)param_2,param_3,param_4); - return puVar2; + u8 *index; + + index = (u8 *)get_index_num_of_named_resource(filename); + load_resource_index_to_buffer((int)index,(longlong)param_2,param_3,param_4); + return index; } -void load_bg_bytes_at_offset_to_membank(byte *param_1,int param_2,int param_3,int param_4) +void load_bg_bytes_at_offset_to_membank(byte *bgname,char *src,int offset,int len) { - int index; - - index = get_index_num_of_named_resource(param_1); - if (*(int *)(&DAT_800888b0 + index * 0x14) != 0) { - if (*(int *)(&DAT_800888b0 + index * 0x14) + 0xfU < (uint)(param_3 + param_4)) { - do { + int index; + + index = get_index_num_of_named_resource(bgname); + if (resource_lookup_data_array[index].rom_size != 0) { + if (resource_lookup_data_array[index].rom_size + 0xf < (uint)(offset + len)) { + do { // WARNING: Do nothing block with infinite loop - } while( true ); + } while( true ); + } + romCopy(src,(char *)(file_resource_table[index].hw_address + offset),len); } - romCopy((char *)param_2,(char *)(file_resource_table[index].hw_address + param_3),param_4); - } - return; + return; } -ulonglong load_rom_resource_index_to_membank(int param_1,longlong param_2,int param_3,byte param_4) +u8 * load_rom_resource_index_to_membank(int index,longlong param_2,int size,byte bank) { - int iVar1; - int iVar2; - undefined *ptrdata; - uint uVar3; - ulonglong uVar4; - int *piVar5; - - uVar3 = SEXT14((char)param_4); - if (((param_2 == 0) || (param_2 == 1)) || (param_2 == 2)) { - iVar1 = param_1 * 0x14; - iVar2 = *(int *)(&DAT_800888b4 + iVar1); - if (iVar2 == 0) { - iVar2 = memp_related_3(uVar3 & 0xff); - *(int *)(&DAT_800888b4 + iVar1) = iVar2; - } - ptrdata = (undefined *)allocate_bytes_in_bank(iVar2,uVar3 & 0xff); - iVar2 = *(int *)(&DAT_800888b4 + iVar1); - *(int *)(&DAT_800888bc + iVar1) = iVar2; - if (file_resource_table[param_1].hw_address == 0) { - load_resource_from_indy - (ptrdata,iVar2,(int)(file_resource_table + param_1),(int)(&DAT_800888b0 + iVar1)); + u32 bytes; + u8 *ptrdata; + resource_lookup_data_entry *lookupdata; + + if (((param_2 == 0) || (param_2 == 1)) || (param_2 == 2)) { + bytes = resource_lookup_data_array[index].pc_remaining; + if (bytes == 0) { + bytes = memGetBankSizeLeft(bank); + resource_lookup_data_array[index].pc_remaining = bytes; + } + ptrdata = (u8 *)mempAllocBytesInBank(bytes,bank); + bytes = resource_lookup_data_array[index].pc_remaining; + resource_lookup_data_array[index].buffer_remaining = bytes; + if (file_resource_table[index].hw_address == 0) { + load_resource_from_indy + (ptrdata,bytes,file_resource_table + index,resource_lookup_data_array + index) + ; + } + else { + load_resource(ptrdata,bytes,file_resource_table + index, + resource_lookup_data_array + index); + } + if ((int)param_2 != 0) { + memAddEntryOfSizeToBank + (ptrdata,resource_lookup_data_array[index].pc_remaining,(uint)bank); + } } else { - load_resource((longlong)(int)ptrdata,(longlong)iVar2,(int)(file_resource_table + param_1), - (int *)(&DAT_800888b0 + iVar1)); + lookupdata = resource_lookup_data_array + index; + bytes = resource_lookup_data_array[index].pc_remaining; + if (bytes == 0) { + bytes = lookupdata->rom_size; + if (bytes == 0) { + bytes = resource_lookup_data_array[index].pc_size; + resource_lookup_data_array[index].pc_remaining = bytes; + } + else { + resource_lookup_data_array[index].pc_remaining = bytes; + } + } + ptrdata = (u8 *)mempAllocBytesInBank(bytes,bank); + resource_lookup_data_array[index].buffer_remaining = + resource_lookup_data_array[index].pc_remaining; + if (file_resource_table[index].hw_address == 0) { + load_resource_from_indy(ptrdata,0,file_resource_table + index,lookupdata); + } + else { + load_resource(ptrdata,0,file_resource_table + index,lookupdata); + } + if (size == 0) { + resource_lookup_data_array[index].loaded_bank = bank; + } } - uVar4 = SEXT48((int)ptrdata); - if ((int)param_2 != 0) { - memp_related_1(ptrdata,*(int *)(&DAT_800888b4 + iVar1),(uint)param_4); + return ptrdata; +} + + + +void load_resource_index_to_buffer(int index,longlong param_2,u8 *ptrdata,int bytes) + +{ + resource_lookup_data_entry *lookupdata; + + lookupdata = resource_lookup_data_array + index; + if (resource_lookup_data_array[index].pc_remaining == 0) { + if (lookupdata->rom_size == 0) { + resource_lookup_data_array[index].pc_remaining = + resource_lookup_data_array[index].pc_size; + } + else { + resource_lookup_data_array[index].pc_remaining = lookupdata->rom_size; + } } - } - else { - iVar1 = param_1 * 0x14; - piVar5 = (int *)(&DAT_800888b0 + iVar1); - iVar2 = *(int *)(&DAT_800888b4 + iVar1); - if (iVar2 == 0) { - iVar2 = *piVar5; - if (iVar2 == 0) { - iVar2 = *(int *)(&DAT_800888b8 + iVar1); - *(int *)(&DAT_800888b4 + iVar1) = iVar2; - } - else { - *(int *)(&DAT_800888b4 + iVar1) = iVar2; - } - } - ptrdata = (undefined *)allocate_bytes_in_bank(iVar2,uVar3 & 0xff); - uVar4 = SEXT48((int)ptrdata); - *(undefined4 *)(&DAT_800888bc + iVar1) = *(undefined4 *)(&DAT_800888b4 + iVar1); - if (file_resource_table[param_1].hw_address == 0) { - load_resource_from_indy(ptrdata,0,(int)(file_resource_table + param_1),(int)piVar5); + if (((param_2 == 0) || (param_2 == 1)) || (param_2 == 2)) { + if (file_resource_table[index].hw_address == 0) { + resource_lookup_data_array[index].buffer_remaining = bytes; + load_resource_from_indy(ptrdata,bytes,file_resource_table + index,lookupdata); + } + else { + resource_lookup_data_array[index].buffer_remaining = bytes; + load_resource(ptrdata,bytes,file_resource_table + index,lookupdata); + } } else { - load_resource(uVar4,0,(int)(file_resource_table + param_1),piVar5); + if (file_resource_table[index].hw_address == 0) { + load_resource_from_indy(ptrdata,0,file_resource_table + index,lookupdata); + } + else { + load_resource(ptrdata,0,file_resource_table + index,lookupdata); + } } - if (param_3 == 0) { - (&DAT_800888c0)[iVar1] = param_4; - } - } - return uVar4; + return; } -undefined * -load_resource_index_to_buffer(int param_1,longlong param_2,undefined *param_3,int param_4) +s32 get_pc_remaining_buffer_for_index(int index) { - int iVar1; - int *piVar2; - - iVar1 = param_1 * 0x14; - piVar2 = (int *)(&DAT_800888b0 + iVar1); - if (*(int *)(&DAT_800888b4 + iVar1) == 0) { - if (*piVar2 == 0) { - *(undefined4 *)(&DAT_800888b4 + iVar1) = *(undefined4 *)(&DAT_800888b8 + iVar1); - } - else { - *(int *)(&DAT_800888b4 + iVar1) = *piVar2; - } - } - if (((param_2 == 0) || (param_2 == 1)) || (param_2 == 2)) { - if (file_resource_table[param_1].hw_address == 0) { - *(int *)(&DAT_800888bc + iVar1) = param_4; - load_resource_from_indy(param_3,param_4,(int)(file_resource_table + param_1),(int)piVar2); - } - else { - *(int *)(&DAT_800888bc + iVar1) = param_4; - load_resource((longlong)(int)param_3,(longlong)param_4,(int)(file_resource_table + param_1), - piVar2); - } - } - else { - if (file_resource_table[param_1].hw_address == 0) { - load_resource_from_indy(param_3,0,(int)(file_resource_table + param_1),(int)piVar2); - } - else { - load_resource((longlong)(int)param_3,0,(int)(file_resource_table + param_1),piVar2); - } - } - return param_3; + return resource_lookup_data_array[index].pc_remaining; } -undefined4 get_temp_remaining_buffer_for_index(int param_1) +u32 get_rom_remaining_buffer_for_index(int param_1) { - return *(undefined4 *)(&DAT_800888b4 + param_1 * 0x14); + return resource_lookup_data_array[param_1].buffer_remaining; } -undefined4 get_remaining_buffer_for_index(int param_1) +void proc_7F0BD138(int index,u8 *ptrdata,int size,longlong param_4) { - return *(undefined4 *)(&DAT_800888bc + param_1 * 0x14); + resource_lookup_data_array[index].pc_remaining = size; + resource_lookup_data_array[index].buffer_remaining = size; + if (param_4 != 0) { + memAddEntryOfSizeToBank(ptrdata,size,4); + } + return; } -void proc_7F0BD138(int param_1,int param_2,int param_3,longlong param_4) +s32 get_pc_buffer_remaining_value(byte *name) { - *(int *)(&DAT_800888b4 + param_1 * 0x14) = param_3; - *(int *)(&DAT_800888bc + param_1 * 0x14) = param_3; - if (param_4 != 0) { - memp_related_1((void *)param_2,param_3,4); - } - return; -} - - - -undefined4 get_temp_buffer_remaining_value(byte *name) - -{ - int index; - - index = get_index_num_of_named_resource(name); - return *(undefined4 *)(&DAT_800888b4 + index * 0x14); + int index; + + index = get_index_num_of_named_resource(name); + return resource_lookup_data_array[index].pc_remaining; } @@ -131361,27 +130515,28 @@ undefined4 get_temp_buffer_remaining_value(byte *name) void something_mem_bank_a0(byte param_1) { - byte bVar1; - undefined **nextres; - int tablesize; - - if (1 < file_entry_max) { - tablesize = file_entry_max * 0x14; - bVar1 = u8_800888d4; - nextres = &ptr_res_data_next; - while( true ) { - if (bVar1 <= param_1) { - *(undefined *)(nextres + 4) = 0; - } - if (param_1 == 4) { - nextres[1] = NULL; - } - if (&DAT_800888b0 + tablesize <= nextres + 5) break; - bVar1 = *(byte *)(nextres + 9); - nextres = nextres + 5; + byte bVar1; + resource_lookup_data_entry *nextres; + resource_lookup_data_entry *prVar2; + int tablesize; + + if (1 < file_entry_max) { + prVar2 = resource_lookup_data_array + file_entry_max; + bVar1 = resource_lookup_data_array[1].loaded_bank; + nextres = resource_lookup_data_array + 1; + while( true ) { + if (bVar1 <= param_1) { + nextres->loaded_bank = '\0'; + } + if (param_1 == 4) { + nextres->pc_remaining = 0; + } + if (prVar2 <= nextres + 1) break; + bVar1 = nextres[1].loaded_bank; + nextres = nextres + 1; + } } - } - return; + return; } @@ -131389,59 +130544,59 @@ void something_mem_bank_a0(byte param_1) void proc_7F0BD234(void) { - something_mem_bank_a0(5); - return; + something_mem_bank_a0(5); + return; } -int get_index_num_of_named_resource(byte *param_1) +int get_index_num_of_named_resource(byte *filename) { - longlong lVar1; - int iVar2; - char *pcVar3; - int iVar4; - int aiStack12 [3]; - - iVar4 = 1; - if (1 < file_entry_max) { - pcVar3 = file_resource_table[1].ptr_name; - iVar2 = -0x7ffb9fa0; - while( true ) { - if ((pcVar3 != NULL) && (lVar1 = something_with_strings_0(param_1,pcVar3), lVar1 == 0)) { - return iVar4; - } - iVar4 += 1; - if (file_entry_max <= iVar4) break; - pcVar3 = *(char **)(iVar2 + 0x10); - iVar2 = iVar2 + 0xc; + longlong lVar1; + int iVar2; + char *pcVar3; + int iVar4; + int aiStack12 [3]; + + iVar4 = 1; + if (1 < file_entry_max) { + pcVar3 = file_resource_table[1].filename; + iVar2 = -0x7ffb9fa0; + while( true ) { + if ((pcVar3 != NULL) && (lVar1 = something_with_strings_0(filename,pcVar3), lVar1 == 0)) + { + return iVar4; + } + iVar4 += 1; + if (file_entry_max <= iVar4) break; + pcVar3 = *(char **)(iVar2 + 0x10); + iVar2 = iVar2 + 0xc; + } } - } - iVar4 = file_entry_max; - if (file_entry_max < 0x2e0) { - file_entry_max += 1; - iVar2 = check_file_found_on_indy((char *)param_1,aiStack12); - if (iVar2 == 0) { - iVar4 = 0; + iVar4 = file_entry_max; + if (file_entry_max < 0x2e0) { + file_entry_max += 1; + iVar2 = check_file_found_on_indy((char *)filename,aiStack12); + if (iVar2 == 0) { + iVar4 = 0; + } + else { + file_resource_table[iVar4].index = iVar4; + *(byte **)&file_resource_table[iVar4].filename = filename; + resource_lookup_data_array[iVar4].unk_11 = '\0'; + file_resource_table[iVar4].hw_address = 0; + resource_lookup_data_array[iVar4].rom_size = 0; + resource_lookup_data_array[iVar4].pc_remaining = 0; + resource_lookup_data_array[iVar4].buffer_remaining = 0; + resource_lookup_data_array[iVar4].loaded_bank = '\0'; + resource_lookup_data_array[iVar4].pc_size = (aiStack12[0] + 0xfU | 0xf) ^ 0xf; + } } else { - iVar2 = iVar4 * 0x14; - file_resource_table[iVar4].index = iVar4; - *(byte **)&file_resource_table[iVar4].ptr_name = param_1; - (&DAT_800888c1)[iVar2] = 0; - file_resource_table[iVar4].hw_address = 0; - *(undefined4 *)(&DAT_800888b0 + iVar2) = 0; - *(undefined4 *)(&DAT_800888b4 + iVar2) = 0; - *(undefined4 *)(&DAT_800888bc + iVar2) = 0; - (&DAT_800888c0)[iVar2] = 0; - *(uint *)(&DAT_800888b8 + iVar2) = (aiStack12[0] + 0xfU | 0xf) ^ 0xf; + iVar4 = 0; } - } - else { - iVar4 = 0; - } - return iVar4; + return iVar4; } @@ -131449,7 +130604,7 @@ int get_index_num_of_named_resource(byte *param_1) void removed_handle_filetable_entry(int param_1) { - return; + return; } @@ -131457,16 +130612,16 @@ void removed_handle_filetable_entry(int param_1) void removed_loop_handle_filetable_entries(void) { - int iVar1; - - iVar1 = 1; - if (1 < file_entry_max) { - do { - removed_handle_filetable_entry(iVar1); - iVar1 += 1; - } while (iVar1 < file_entry_max); - } - return; + int index; + + index = 1; + if (1 < file_entry_max) { + do { + removed_handle_filetable_entry(index); + index += 1; + } while (index < file_entry_max); + } + return; } @@ -131474,15 +130629,15 @@ void removed_loop_handle_filetable_entries(void) void removed_loop_filetableentries(void) { - int entry; - - entry = 2; - if (1 < file_entry_max) { - while (entry < file_entry_max) { - entry += 1; + int entry; + + entry = 2; + if (1 < file_entry_max) { + while (entry < file_entry_max) { + entry += 1; + } } - } - return; + return; } @@ -131490,15 +130645,15 @@ void removed_loop_filetableentries(void) void proc_7F0BD410(void) { - undefined4 *puVar1; - - if (1 < file_entry_max) { - puVar1 = &DAT_800888d8; - while (puVar1 < &DAT_800888b0 + file_entry_max * 0x14) { - puVar1 = puVar1 + 5; + resource_lookup_data_entry *prVar1; + + if (1 < file_entry_max) { + prVar1 = (resource_lookup_data_entry *)0x800888d8; + while (prVar1 < resource_lookup_data_array + file_entry_max) { + prVar1 = prVar1 + 1; + } } - } - return; + return; } @@ -131506,8 +130661,8 @@ void proc_7F0BD410(void) void something_with_dyn_c_debug(void) { - get_ptr_debug_notice_list_entry(&dyn_c_debug_notice_list_entry,"dyn_c_debug"); - return; + get_ptr_debug_notice_list_entry(&dyn_c_debug_notice_list_entry,"dyn_c_debug"); + return; } @@ -131515,51 +130670,51 @@ void something_with_dyn_c_debug(void) void set_vtx_gfx_mem_alloc(void) { - byte *__nptr; - ulonglong uVar1; - long lVar2; - - __nptr = check_token(1,(byte *)"-mgfx"); - if (__nptr != NULL) { - uVar1 = get_num_players(); + byte *__nptr; + s32 sVar1; + long lVar2; + __nptr = check_token(1,(byte *)"-mgfx"); - lVar2 = strtol((char *)__nptr,NULL,0); - (&dyn_c_debug_notice_list_entry)[(int)uVar1] = (undefined *)(lVar2 << 10); - } - __nptr = check_token(1,(byte *)"-mvtx"); - if (__nptr != NULL) { - uVar1 = get_num_players(); + if (__nptr != NULL) { + sVar1 = get_num_players(); + __nptr = check_token(1,(byte *)"-mgfx"); + lVar2 = strtol((char *)__nptr,NULL,0); + (&dyn_c_debug_notice_list_entry)[sVar1] = (undefined *)(lVar2 << 10); + } __nptr = check_token(1,(byte *)"-mvtx"); - lVar2 = strtol((char *)__nptr,NULL,0); - (&dword_800482F0)[(int)uVar1] = (undefined *)(lVar2 << 10); - } - uVar1 = get_num_players(); - ptr_mgfx0_alloc_start = - allocate_bytes_in_bank((int)(&dyn_c_debug_notice_list_entry)[(int)uVar1] << 1,4); - uVar1 = get_num_players(); - ptr_mgfx1_alloc_start = (&dyn_c_debug_notice_list_entry)[(int)uVar1] + ptr_mgfx0_alloc_start; - uVar1 = get_num_players(); - ptr_mgfx_end = (&dyn_c_debug_notice_list_entry)[(int)uVar1] + (int)ptr_mgfx1_alloc_start; - uVar1 = get_num_players(); - ptr_mvtx0_alloc_start = - (undefined *)allocate_bytes_in_bank((int)(&dword_800482F0)[(int)uVar1] << 1,4); - uVar1 = get_num_players(); - ptr_mvtx1_alloc_start = ptr_mvtx0_alloc_start + (int)(&dword_800482F0)[(int)uVar1]; - uVar1 = get_num_players(); - ptr_mvtx_end = (&dword_800482F0)[(int)uVar1] + (int)ptr_mvtx1_alloc_start; - ptr_mvtx_cur_pos = ptr_mvtx0_alloc_start; - bank_in_mgfx_alloc_table = 0; - DAT_8008c254 = 0; - return; + if (__nptr != NULL) { + sVar1 = get_num_players(); + __nptr = check_token(1,(byte *)"-mvtx"); + lVar2 = strtol((char *)__nptr,NULL,0); + (&dword_800482F0)[sVar1] = (undefined *)(lVar2 << 10); + } + sVar1 = get_num_players(); + ptr_mgfx0_alloc_start = + mempAllocBytesInBank((int)(&dyn_c_debug_notice_list_entry)[sVar1] << 1,'\x04'); + sVar1 = get_num_players(); + ptr_mgfx1_alloc_start = (&dyn_c_debug_notice_list_entry)[sVar1] + ptr_mgfx0_alloc_start; + sVar1 = get_num_players(); + ptr_mgfx_end = (&dyn_c_debug_notice_list_entry)[sVar1] + (int)ptr_mgfx1_alloc_start; + sVar1 = get_num_players(); + ptr_mvtx0_alloc_start = + (undefined *)mempAllocBytesInBank((int)(&dword_800482F0)[sVar1] << 1,'\x04'); + sVar1 = get_num_players(); + ptr_mvtx1_alloc_start = ptr_mvtx0_alloc_start + (int)(&dword_800482F0)[sVar1]; + sVar1 = get_num_players(); + ptr_mvtx_end = (&dword_800482F0)[sVar1] + (int)ptr_mvtx1_alloc_start; + ptr_mvtx_cur_pos = ptr_mvtx0_alloc_start; + bank_in_mgfx_alloc_table = 0; + DAT_8008c254 = 0; + return; } -undefined4 get_ptr_displaylist(void) +Gfx * get_ptr_displaylist(void) { - DAT_8008c254 = 1; - return (&ptr_mgfx0_alloc_start)[(uint)bank_in_mgfx_alloc_table]; + DAT_8008c254 = 1; + return (Gfx *)(&ptr_mgfx0_alloc_start)[bank_in_mgfx_alloc_table]; } @@ -131567,7 +130722,7 @@ undefined4 get_ptr_displaylist(void) int allocate_something_in_mgfx(int param_1) { - return (&ptr_mgfx1_alloc_start)[(uint)bank_in_mgfx_alloc_table] - param_1 >> 3; + return (&ptr_mgfx1_alloc_start)[bank_in_mgfx_alloc_table] - param_1 >> 3; } @@ -131575,8 +130730,8 @@ int allocate_something_in_mgfx(int param_1) void proc_7F0BD6C4(int param_1) { - ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + param_1 * 0x10; - return; + ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + param_1 * 0x10; + return; } @@ -131584,8 +130739,8 @@ void proc_7F0BD6C4(int param_1) void proc_7F0BD6E0(void) { - ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + 0x40; - return; + ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + 0x40; + return; } @@ -131593,8 +130748,8 @@ void proc_7F0BD6E0(void) void proc_7F0BD6F8(int param_1) { - ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + param_1 * 0x10; - return; + ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + param_1 * 0x10; + return; } @@ -131602,8 +130757,8 @@ void proc_7F0BD6F8(int param_1) void proc_7F0BD714(int param_1) { - ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + ((param_1 + 0xfU | 0xf) ^ 0xf); - return; + ptr_mvtx_cur_pos = ptr_mvtx_cur_pos + ((param_1 + 0xfU | 0xf) ^ 0xf); + return; } @@ -131611,10 +130766,10 @@ void proc_7F0BD714(int param_1) void allocate_something_in_mvtx(void) { - ptr_mvtx_cur_pos = (undefined *)(&ptr_mvtx0_alloc_start)[(uint)(bank_in_mgfx_alloc_table ^ 1)]; - bank_in_mgfx_alloc_table = bank_in_mgfx_alloc_table ^ 1; - DAT_8008c254 = 0; - return; + ptr_mvtx_cur_pos = (undefined *)(&ptr_mvtx0_alloc_start)[bank_in_mgfx_alloc_table ^ 1]; + bank_in_mgfx_alloc_table = bank_in_mgfx_alloc_table ^ 1; + DAT_8008c254 = 0; + return; } @@ -131622,7 +130777,7 @@ void allocate_something_in_mvtx(void) void removed_debug_routine(int param_1) { - return; + return; } @@ -131630,7 +130785,7 @@ void removed_debug_routine(int param_1) int num_microcode_cmds_that_fit(int ptr_DLtarget) { - return (&ptr_mgfx1_alloc_start)[(uint)bank_in_mgfx_alloc_table] - ptr_DLtarget >> 3; + return (&ptr_mgfx1_alloc_start)[bank_in_mgfx_alloc_table] - ptr_DLtarget >> 3; } @@ -131638,7 +130793,7 @@ int num_microcode_cmds_that_fit(int ptr_DLtarget) int proc_7F0BD7A4(void) { - return (&ptr_mvtx1_alloc_start)[(uint)bank_in_mgfx_alloc_table] - (int)ptr_mvtx_cur_pos; + return (&ptr_mvtx1_alloc_start)[bank_in_mgfx_alloc_table] - (int)ptr_mvtx_cur_pos; } @@ -131646,10 +130801,10 @@ int proc_7F0BD7A4(void) char * compute_membar_display_string(char *string,int commandsused,int commandsavailable) { - char *pcVar1; - - pcVar1 = (char *)strlen(string); - return pcVar1; + char *pcVar1; + + pcVar1 = (char *)strlen(string); + return pcVar1; } @@ -131657,21 +130812,21 @@ char * compute_membar_display_string(char *string,int commandsused,int commandsa char * draw_membars(void) { - char *pcVar1; - int in_a0_lo; - - compute_membar_display_string - ("=========================", - (int)(float)((&ptr_mgfx1_alloc_start)[(uint)bank_in_mgfx_alloc_table] - in_a0_lo >> 3), - (int)(float)((int)((&ptr_mgfx1_alloc_start)[(uint)bank_in_mgfx_alloc_table] - - (&ptr_mgfx0_alloc_start)[(uint)bank_in_mgfx_alloc_table]) >> 3)); - pcVar1 = compute_membar_display_string - ("=========================", - (int)(float)((&ptr_mvtx1_alloc_start)[(uint)bank_in_mgfx_alloc_table] - - (int)ptr_mvtx_cur_pos), - (int)(float)((&ptr_mvtx1_alloc_start)[(uint)bank_in_mgfx_alloc_table] - - (&ptr_mvtx0_alloc_start)[(uint)bank_in_mgfx_alloc_table])); - return pcVar1; + char *pcVar1; + int in_a0_lo; + + compute_membar_display_string + ("=========================", + (int)(float)((&ptr_mgfx1_alloc_start)[bank_in_mgfx_alloc_table] - in_a0_lo >> 3), + (int)(float)((int)((&ptr_mgfx1_alloc_start)[bank_in_mgfx_alloc_table] - + (&ptr_mgfx0_alloc_start)[bank_in_mgfx_alloc_table]) >> 3)); + pcVar1 = compute_membar_display_string + ("=========================", + (int)(float)((&ptr_mvtx1_alloc_start)[bank_in_mgfx_alloc_table] - + (int)ptr_mvtx_cur_pos), + (int)(float)((&ptr_mvtx1_alloc_start)[bank_in_mgfx_alloc_table] - + (&ptr_mvtx0_alloc_start)[bank_in_mgfx_alloc_table])); + return pcVar1; } @@ -131679,7 +130834,7 @@ char * draw_membars(void) undefined4 proc_7F0BD8F0(void) { - return dword_800483C0; + return dword_800483C0; } @@ -131687,8 +130842,8 @@ undefined4 proc_7F0BD8F0(void) void proc_7F0BD8FC(undefined4 param_1) { - dword_800483C0 = param_1; - return; + dword_800483C0 = param_1; + return; } @@ -131696,11 +130851,11 @@ void proc_7F0BD8FC(undefined4 param_1) void something_with_lvl_c_debug(void) { - get_ptr_debug_notice_list_entry(&lvl_c_debug_notice_list,"lv_c_debug"); - lvl_c_debug_notice_list = 1; - ptr_jfont_DL = (void *)allocate_bytes_in_bank(0xc0,6); - romCopy((char *)ptr_jfont_DL,unknown,0xc0); - return; + get_ptr_debug_notice_list_entry(&lvl_c_debug_notice_list,"lv_c_debug"); + lvl_c_debug_notice_list = 1; + ptr_jfont_DL = (void *)mempAllocBytesInBank(0xc0,'\x06'); + romCopy((char *)ptr_jfont_DL,unknown,0xc0); + return; } @@ -131708,12 +130863,12 @@ void something_with_lvl_c_debug(void) void playrandommusictrack1(void) { - u32 uVar1; - - uVar1 = get_random_value(); - musictrack1_playing = uVar1 % 0x3d + M_INTRO; - musicTrack1Play(musictrack1_playing); - return; + u32 uVar1; + + uVar1 = get_random_value(); + musictrack1_playing = uVar1 % 0x3d + M_INTRO; + musicTrack1Play(musictrack1_playing); + return; } @@ -131721,9 +130876,9 @@ void playrandommusictrack1(void) void playmusictrack1(MUSIC_TRACKS track) { - musictrack1_playing = track; - musicTrack1Play(track); - return; + musictrack1_playing = track; + musicTrack1Play(track); + return; } @@ -131731,12 +130886,12 @@ void playmusictrack1(MUSIC_TRACKS track) void music_append_play_solo_death_short(void) { - musictrack1_playing = (int)(musictrack1_playing + M_SHORT_SOLO_DEATH) % 0x3f; - if (musictrack1_playing == M_NONE) { - musictrack1_playing = M_SHORT_SOLO_DEATH; - } - musicTrack1Play(musictrack1_playing); - return; + musictrack1_playing = (int)(musictrack1_playing + M_SHORT_SOLO_DEATH) % 0x3f; + if (musictrack1_playing == M_NONE) { + musictrack1_playing = M_SHORT_SOLO_DEATH; + } + musicTrack1Play(musictrack1_playing); + return; } @@ -131744,12 +130899,12 @@ void music_append_play_solo_death_short(void) void music_append_play_endtheme(void) { - musictrack1_playing = (int)(musictrack1_playing + M_END_SOMETHING) % 0x3f; - if (musictrack1_playing == M_NONE) { - musictrack1_playing = M_END_SOMETHING; - } - musicTrack1Play(musictrack1_playing); - return; + musictrack1_playing = (int)(musictrack1_playing + M_END_SOMETHING) % 0x3f; + if (musictrack1_playing == M_NONE) { + musictrack1_playing = M_END_SOMETHING; + } + musicTrack1Play(musictrack1_playing); + return; } @@ -131757,11 +130912,11 @@ void music_append_play_endtheme(void) void proc_7F0BDA84(void) { - MUSIC_TRACKS track; - - track = getmusictrack_or_randomtrack(stagenum); - playmusictrack1(track); - return; + MUSIC_TRACKS track; + + track = getmusictrack_or_randomtrack(stagenum); + playmusictrack1(track); + return; } @@ -131769,182 +130924,174 @@ void proc_7F0BDA84(void) void stage_load(LEVELID stagenum) { - longlong lVar1; - int iVar3; - undefined4 time; - ulonglong uVar2; - int player; - longlong lVar4; - undefined1 *puVar5; - playerperm *ppVar6; - playerperm *ppVar7; - playerperm *ppVar8; - f32 fVar9; - - dword_800483C0 = 1; - controls_locked_flag = 0; - clock_timer = 1; - global_timer_delta = 0x3f800000; - dword_80048380 = 0; - global_timer = 0; - dword_80048388 = 0; - dword_8004838C = 0; - dword_80048390 = 0; - dword_80048394 = 0; - cur_mp_sec = 0.00000000; - dword_800483B0 = 0; - stage_time_sec = 0.00000000; - dword_800483A0 = 0; - stagenum = stagenum; - music_related_39(1.00000000); - musicTrack1Vol(0x7fff); - musicTrack2Vol(0x7fff); - music_related_3rd_block_1(0x7fff); - proc_7F0C1364(); - proc_7F005534(1); - set_mt_tex_alloc(); - proc_7F0A47D4(); - load_prepare_global_image_bank(); - load_font_table_controllers(); - if (stagenum == LEVELID_TITLE) { - init_menus_or_reset(); - } - else { - newcheatunlocked = 0; - if (((stagenum != LEVELID_TITLE) && (dword_80048394 == 0)) && (0 < clock_timer)) { - puVar5 = CHEAT_AVAILABLE_EXTRA_CHARS; - lVar4 = 1; - if (append_cheat_sp != FALSE) { + u32 uVar1; + int iVar2; + undefined4 time; + s32 sVar3; + u32 cheatindex; + int player; + PLAYER_ID playernum; + u8 *pcheat; + playerperm *ppVar4; + playerperm *ppVar5; + playerperm *ppVar6; + f32 fVar7; + + dword_800483C0 = 1; + controls_locked_flag = 0; + clock_timer = 1; + global_timer_delta = 1.00000000; + dword_80048380 = 0; + global_timer = 0; + dword_80048388 = 0; + dword_8004838C = 0; + dword_80048390 = 0; + dword_80048394 = 0; + cur_mp_sec = 0.00000000; + dword_800483B0 = 0; + stage_time_sec = 0.00000000; + dword_800483A0 = 0; + stagenum = stagenum; + music_related_39(1.00000000); + musicTrack1Vol(0x7fff); + musicTrack2Vol(0x7fff); + musicTrack3Vol(0x7fff); + proc_7F0C1364(); + proc_7F005534(1); + set_mt_tex_alloc(); + proc_7F0A47D4(); + load_prepare_global_image_bank(); + load_font_tables(); + if (stagenum == LEVELID_TITLE) { + init_menus_or_reset(); + } + else { + newcheatunlocked = 0; + if (((stagenum != 0x5a) && (dword_80048394 == 0)) && (0 < clock_timer)) { + pcheat = CHEATS_ACTIVE_ARRAY; + cheatindex = 1; + if (append_cheat_sp != FALSE) { + do { + if ((*pcheat != '\0') && + (uVar1 = is_cheat_index_equal_to_1C(cheatindex), uVar1 != 0)) { + turn_on_cheat_for_players(cheatindex); + } + cheatindex += 1; + pcheat = pcheat + 1; + } while (cheatindex != 0x4b); + } + } + load_bg_file(stagenum); + store_stagenum_to_copyof_stagenum(stagenum); + init_watch_at_start_of_stage(); + sub_GAME_7F0C11FC((s16)stagenum); + ppVar5 = player1_playerdata; + ppVar6 = ppVar5; do { - player = (int)lVar4; - if (*puVar5 == '\0') { - lVar4 = (longlong)(player + 1); - } - else { - lVar1 = proc_7F091A5C(lVar4); - if (lVar1 == 0) { - lVar4 = (longlong)(player + 1); + sVar3 = get_num_players(); + player = 0; + if (sVar3 == 1) { + ppVar5->autoaim = '\0'; + ppVar5->sight = '\0'; + ppVar5->handicap = 1.00000000; + ppVar5->player_perspective_height = 1.00000000; } else { - proc_7F091AAC(lVar4); - lVar4 = (longlong)(player + 1); + ppVar4 = player1_playerdata; + do { + iVar2 = get_scenario(); + if (iVar2 == 4) { + ppVar4->handicap = 200.00000000; + } + else { + fVar7 = get_player_mp_handicap(player); + *(f32 *)&ppVar4->handicap = fVar7; + } + fVar7 = get_player_mp_char_height(player); + player += 1; + *(f32 *)&ppVar4->player_perspective_height = fVar7; + ppVar4 = ppVar4 + 1; + } while (player != 4); + time = get_mp_timelimit(); + set_mp_time(time); + time = get_mp_pointlimit(); + set_mp_point(time); + copy_aim_settings_to_playerdata(); } - } - puVar5 = puVar5 + 1; - } while (lVar4 != 0x4b); - } + ppVar5->drawplayercount = 0; + ppVar5->backshotcount = 0; + ppVar5->fastest2kills = 0x7fffffff; + ppVar5->slowest2kills = 0; + ppVar5->most_killed_one_life = 0; + ppVar5->most_killed_one_time = 0; + ppVar5->longestlife = 0; + ppVar5->shortestlife = 0x7fffffff; + ppVar5->order_out_in_yolt = '\0'; + ppVar5->flag_counter = 0; + ppVar5->distance = 0.00000000; + ppVar5->armourcount = 0.00000000; + ppVar4 = ppVar6 + 1; + ppVar5 = ppVar5 + 1; + ppVar6->kills[3] = 0; + ppVar6->kills[2] = 0; + ppVar6->kills[1] = 0; + ppVar6->kills[0] = 0; + ppVar6 = ppVar4; + } while (ppVar4 != (playerperm *)&pPlayer); } - proc_7F0B4124(stagenum); - proc_7F09442C(stagenum); - init_watch_at_start_of_stage(); - proc_7F0C11FC(stagenum); - ppVar8 = &player1_playerdata; - ppVar7 = ppVar8; - do { - uVar2 = get_num_players(); - player = 0; - if (uVar2 == 1) { - ppVar8->autoaim = '\0'; - ppVar8->sight = '\0'; - ppVar8->handicap = 1.00000000; - ppVar8->player_perspective_height = 1.00000000; - } - else { - ppVar6 = &player1_playerdata; - do { - iVar3 = get_scenario(); - if (iVar3 == 4) { - ppVar6->handicap = 200.00000000; - } - else { - fVar9 = get_player_mp_handicap(player); - *(f32 *)&ppVar6->handicap = fVar9; - } - fVar9 = get_player_mp_char_height(player); - player += 1; - *(f32 *)&ppVar6->player_perspective_height = fVar9; - ppVar6 = ppVar6 + 1; - } while (player != 4); - time = get_mp_timelimit(); - set_mp_time(time); - time = get_mp_pointlimit(); - set_mp_point(time); - copy_aim_settings_to_playerdata(); - } - ppVar8->drawplayercount = 0; - ppVar8->backshotcount = 0; - ppVar8->fastest2kills = 0x7fffffff; - ppVar8->slowest2kills = 0; - ppVar8->most_killed_one_life = 0; - ppVar8->most_killed_one_time = 0; - ppVar8->longestlife = 0; - ppVar8->shortestlife = 0x7fffffff; - ppVar8->order_out_in_yolt = '\0'; - ppVar8->flag_counter = 0; - ppVar8->distance = 0.00000000; - ppVar8->armourcount = 0.00000000; - ppVar6 = ppVar7 + 1; - ppVar8 = ppVar8 + 1; - ppVar7->kills[3] = 0; - ppVar7->kills[2] = 0; - ppVar7->kills[1] = 0; - ppVar7->kills[0] = 0; - ppVar7 = ppVar6; - } while (ppVar6 != (playerperm *)&pPlayer); - } - something_with_stage_objectives(); - unpause_game(); - proc_7F09B820(); - proc_7F005450(); - proc_7F005520(); - init_load_objpos_table(); - reinit_between_menus(); - init_sound_effects_registers(); - initguards(); - set_new_rand_head_bodies(); - proplvreset2((longlong)stagenum); - alloc_explosion_smoke_casing_scorch_impact_buffers(); - proc_7F007180(); - proc_7F007290(); - proc_7F0072B0(); - if (stagenum == LEVELID_TITLE) { - disable_onscreen_cheat_text(); - } - else { - init_path_table_links(); - something_with_ejected_cartridges(); - lVar4 = 0; - uVar2 = get_num_players(); - if (0 < (longlong)uVar2) { - do { - set_cur_player((int)lVar4); - proc_7F0061F0(); - init_player_BONDdata_stats(); - init_player_BONDdata(); - load_camera_intro_type_values(); - proc_7F0798B8(); - sets_a_bunch_of_BONDdata_values_to_default(); + something_with_stage_objectives(); + unpause_game(); + proc_7F09B820(); + proc_7F005450(); + proc_7F005520(); + init_load_objpos_table(); + reinit_between_menus(); + init_sound_effects_registers(); + initguards(); + set_new_rand_head_bodies(); + proplvreset2((longlong)stagenum); + alloc_explosion_smoke_casing_scorch_impact_buffers(); + proc_7F007180(); + proc_7F007290(); + proc_7F0072B0(); + if (stagenum == 0x5a) { disable_onscreen_cheat_text(); - lVar4 = (longlong)((int)lVar4 + 1); - uVar2 = get_num_players(); - } while (lVar4 < (longlong)uVar2); } - set_cur_player(0); - } - proc_7F005534(0); - remove_viewport_buffer(); - setVideoWidthHeightToMode(1); - flt_80048368 = 1.00000000; - set_controls_locked_flag(0); - return; + else { + init_path_table_links(); + something_with_ejected_cartridges(); + playernum = PLAYER1; + sVar3 = get_num_players(); + if (0 < sVar3) { + do { + set_cur_player(playernum); + proc_7F0061F0(); + init_player_BONDdata_stats(); + init_player_BONDdata(); + load_camera_intro_type_values(); + proc_7F0798B8(); + sets_a_bunch_of_BONDdata_values_to_default(); + disable_onscreen_cheat_text(); + playernum += PLAYER2; + sVar3 = get_num_players(); + } while ((int)playernum < sVar3); + } + set_cur_player(PLAYER1); + } + proc_7F005534(0); + remove_viewport_buffer(); + setVideoWidthHeightToMode('\x01'); + flt_80048368 = 1.00000000; + set_controls_locked_flag(0); + return; } -undefined4 proc_7F0BDF04(void) +STAGENUM proc_7F0BDF04(void) { - return stagenum; + return stagenum; } @@ -131952,283 +131099,287 @@ undefined4 proc_7F0BDF04(void) undefined4 proc_7F0BDF10(longlong param_1) { - undefined8 uVar1; - ulonglong uVar2; - ulonglong uVar3; - - if (param_1 != 0) { - uVar1 = proc_7F0B9DE4(param_1); - DAT_800483d0 = DAT_800483d4; - DAT_800483d4 = DAT_800483d8; - DAT_800483d8 = DAT_800483dc; - DAT_800483dc = DAT_800483e0; - uVar2 = get_controller_buttons_held('\0',0x8000); - uVar3 = get_controller_buttons_held('\x01',0x8000); - uVar3 |= uVar2 & 0xffff; - if ((longlong)DAT_800483dc != uVar3) { - dword_800483C0 ^= 1; + undefined8 uVar1; + u32 uVar3; + u32 uVar4; + ulonglong uVar2; + + if (param_1 != 0) { + uVar1 = proc_7F0B9DE4(param_1); + DAT_800483d0 = DAT_800483d4; + DAT_800483d4 = DAT_800483d8; + DAT_800483d8 = DAT_800483dc; + DAT_800483dc = DAT_800483e0; + uVar3 = get_controller_buttons_held('\0',A_BUTTON); + uVar4 = get_controller_buttons_held('\x01',A_BUTTON); + DAT_800483e0 = uVar4 | uVar3 & 0xffff; + if (DAT_800483dc != DAT_800483e0) { + dword_800483C0 ^= 1; + } + if (DAT_800483d0 != DAT_800483d4) { + dword_800483C0 ^= 1; + } + proc_7F0B9DF4(); + return (int)uVar1; } - if (DAT_800483d0 != DAT_800483d4) { - dword_800483C0 ^= 1; + uVar3 = get_controller_buttons_pressed('\0',L_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',L_JPAD); + if (((uVar4 | uVar3 & 0xffff) != 0) && (DAT_800483cc += -1, DAT_800483cc < 0)) { + DAT_800483cc = 0; } - DAT_800483e0 = (int)uVar3; - proc_7F0B9DF4(); - return (int)uVar1; - } - uVar2 = get_controller_buttons_pressed('\0',0x200); - uVar3 = get_controller_buttons_pressed('\x01',0x200); - if (((uVar3 | uVar2 & 0xffff) != 0) && (DAT_800483cc += -1, DAT_800483cc < 0)) { - DAT_800483cc = 0; - } - uVar2 = get_controller_buttons_pressed('\0',0x100); - uVar3 = get_controller_buttons_pressed('\x01',0x100); - if ((uVar3 | uVar2 & 0xffff) != 0) { - DAT_800483cc += 1; - } - uVar2 = get_controller_buttons_held('\0',0x10); - uVar3 = get_controller_buttons_held('\x01',0x10); - if ((uVar3 | uVar2 & 0xffff) != 0) { - uVar2 = get_controller_buttons_held('\0',0x20); - uVar3 = get_controller_buttons_held('\x01',0x20); - if ((uVar3 | uVar2 & 0xffff) != 0) { - uVar2 = get_controller_buttons_pressed('\0',0x400); - if (uVar2 == 0) { - return 0; - } - proc_7F0B9B64(DAT_800483cc); - return 0; + uVar3 = get_controller_buttons_pressed('\0',R_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',R_JPAD); + if ((uVar4 | uVar3 & 0xffff) != 0) { + DAT_800483cc += 1; } - } - uVar2 = get_controller_buttons_held('\0',0x10); - uVar3 = get_controller_buttons_held('\x01',0x10); - if ((uVar3 | uVar2 & 0xffff) == 0) { - uVar2 = get_controller_buttons_held('\0',0x20); - uVar3 = get_controller_buttons_held('\x01',0x20); - if ((uVar3 | uVar2 & 0xffff) == 0) { - uVar2 = get_controller_buttons_pressed('\0',0x400); - uVar3 = get_controller_buttons_pressed('\x01',0x400); - if ((uVar3 | uVar2 & 0xffff) != 0) { - proc_7F0B9A7C(DAT_800483cc); - } - uVar2 = get_controller_buttons_pressed('\0',0x800); - uVar3 = get_controller_buttons_pressed('\x01',0x800); - if ((uVar3 | uVar2 & 0xffff) != 0) { - proc_7F0B9A2C(DAT_800483cc); - } + uVar3 = get_controller_buttons_held('\0',R_TRIG); + uVar4 = get_controller_buttons_held('\x01',R_TRIG); + if ((uVar4 | uVar3 & 0xffff) != 0) { + uVar3 = get_controller_buttons_held('\0',L_TRIG); + uVar4 = get_controller_buttons_held('\x01',L_TRIG); + if ((uVar4 | uVar3 & 0xffff) != 0) { + uVar3 = get_controller_buttons_pressed('\0',D_JPAD); + if (uVar3 == 0) { + return 0; + } + proc_7F0B9B64(DAT_800483cc); + return 0; + } + } + uVar3 = get_controller_buttons_held('\0',R_TRIG); + uVar4 = get_controller_buttons_held('\x01',R_TRIG); + if ((uVar4 | uVar3 & 0xffff) == 0) { + uVar3 = get_controller_buttons_held('\0',L_TRIG); + uVar4 = get_controller_buttons_held('\x01',L_TRIG); + if ((uVar4 | uVar3 & 0xffff) == 0) { + uVar3 = get_controller_buttons_pressed('\0',D_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',D_JPAD); + if ((uVar4 | uVar3 & 0xffff) != 0) { + proc_7F0B9A7C(DAT_800483cc); + } + uVar3 = get_controller_buttons_pressed('\0',U_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',U_JPAD); + if ((uVar4 | uVar3 & 0xffff) != 0) { + proc_7F0B9A2C(DAT_800483cc); + } + } + else { + uVar3 = get_controller_buttons_pressed('\0',D_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',D_JPAD); + if (((uVar4 | uVar3 & 0xffff) != 0) && (uVar2 = proc_7F0B9B04(DAT_800483cc), uVar2 != 0) + ) { + proc_7F0B9B44(DAT_800483cc); + } + uVar3 = get_controller_buttons_pressed('\0',U_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',U_JPAD); + if (((uVar4 | uVar3 & 0xffff) != 0) && (uVar2 = proc_7F0B9B04(DAT_800483cc), uVar2 == 0) + ) { + proc_7F0B9B24(DAT_800483cc); + return 0; + } + } } else { - uVar2 = get_controller_buttons_pressed('\0',0x400); - uVar3 = get_controller_buttons_pressed('\x01',0x400); - if (((uVar3 | uVar2 & 0xffff) != 0) && (uVar2 = proc_7F0B9B04(DAT_800483cc), uVar2 != 0)) { - proc_7F0B9B44(DAT_800483cc); - } - uVar2 = get_controller_buttons_pressed('\0',0x800); - uVar3 = get_controller_buttons_pressed('\x01',0x800); - if (((uVar3 | uVar2 & 0xffff) != 0) && (uVar2 = proc_7F0B9B04(DAT_800483cc), uVar2 == 0)) { - proc_7F0B9B24(DAT_800483cc); - return 0; - } + uVar3 = get_controller_buttons_pressed('\0',D_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',D_JPAD); + if (((uVar4 | uVar3 & 0xffff) != 0) && (uVar2 = proc_7F0B9AE4(DAT_800483cc), uVar2 == 0)) { + proc_7F0B9DBC(DAT_800483cc,0); + } + uVar3 = get_controller_buttons_pressed('\0',U_JPAD); + uVar4 = get_controller_buttons_pressed('\x01',U_JPAD); + if (((uVar4 | uVar3 & 0xffff) != 0) && (uVar2 = proc_7F0B9AE4(DAT_800483cc), uVar2 != 0)) { + proc_7F0B9DBC(DAT_800483cc,1); + return 0; + } } - } - else { - uVar2 = get_controller_buttons_pressed('\0',0x400); - uVar3 = get_controller_buttons_pressed('\x01',0x400); - if (((uVar3 | uVar2 & 0xffff) != 0) && (uVar2 = proc_7F0B9AE4(DAT_800483cc), uVar2 == 0)) { - proc_7F0B9DBC(DAT_800483cc,0); - } - uVar2 = get_controller_buttons_pressed('\0',0x800); - uVar3 = get_controller_buttons_pressed('\x01',0x800); - if (((uVar3 | uVar2 & 0xffff) != 0) && (uVar2 = proc_7F0B9AE4(DAT_800483cc), uVar2 != 0)) { - proc_7F0B9DBC(DAT_800483cc,1); - return 0; - } - } - return 0; + return 0; } -uint * proc_7F0BE30C(undefined4 *param_1) +uint * proc_7F0BE30C(Gfx *param_1) { - u32 uVar4; - uint *puVar5; - short sVar10; - short sVar11; - ulonglong uVar1; - int playernum; - undefined8 uVar2; - longlong lVar3; - BOOL BVar6; - byte *pbVar7; - int *piVar8; - uint uVar9; - u32 *puVar12; - undefined4 *puVar13; - int iVar14; - u32 *puStackX0; - - *param_1 = 0xbc000006; - param_1[1] = 0; - puStackX0 = param_1 + 4; - param_1[2] = 0xbc000406; - uVar4 = osVirtualToPhysical(ptr_jfont_DL); - param_1[3] = uVar4; - puStackX0[1] = 0x1000040; - *puStackX0 = 0x6000000; - puVar13 = puStackX0 + 4; - puStackX0[3] = 0x1000020; - puStackX0[2] = 0x6000000; - if (stagenum == 0x5a) { - puStackX0 = puVar13; - puStackX0 = proc_70003EB4(puVar13); - puVar5 = proc_70003C58(puStackX0); - puStackX0 = puVar5 + 2; - *puVar5 = 0xed000000; - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar5[1] = (int)((float)(int)sVar11 * 4.00000000) & 0xfffU | - ((int)((float)(int)sVar10 * 4.00000000) & 0xfffU) << 0xc; - puStackX0 = menu_jump_constructor_handler(puStackX0); - } - else { - puStackX0 = puVar13; - uVar1 = get_num_players(); - *puStackX0 = 0xbc000404; - puStackX0[1] = 2; - puStackX0[3] = 2; - puStackX0[2] = 0xbc000c04; - puStackX0[4] = 0xbc001404; - puStackX0[5] = 0xfffe; - puVar12 = puStackX0 + 8; - iVar14 = 0; - puStackX0[7] = 0xfffe; - puStackX0[6] = 0xbc001c04; - puStackX0 = puVar12; - if (0 < (longlong)uVar1) { - do { - playernum = proc_7F09B528(iVar14); - set_cur_player(playernum); - set_video2_width_height(pPlayer->viewx,pPlayer->viewy); - set_video2_ulx_uly(pPlayer->viewleft,pPlayer->viewtop); - video_related_1F(pPlayer->fovy); - video_related_21(pPlayer->aspect); - puStackX0 = proc_70003EB4(puStackX0); - puStackX0 = proc_70003C58(puStackX0); - uVar4 = get_debug_render_raster(); - if (uVar4 == 0) { - puStackX0 = (u32 *)proc_7F091580(puStackX0); - } - uVar4 = get_debug_render_raster(); - if (uVar4 == 1) { - uVar2 = proc_7F0B2D48((longlong)(int)puStackX0); - puStackX0 = (u32 *)uVar2; - } - uVar4 = get_debug_render_raster(); - if (uVar4 == 2) { - puStackX0 = (u32 *)proc_7F087A08(puStackX0); - } - puStackX0 = setupscreensfornumplayers(puStackX0); - puStackX0 = (u32 *)proc_7F094488(); - proc_7F0B4884(); - determing_type_of_object_and_detection(); - proc_7F03A240(); - proc_7F03D78C(); - proc_7F03C294(); - playernum = proc_7F089F38(); - if ((playernum != 0) && (lVar3 = proc_7F03C4F0(), lVar3 != 0)) { - attempt_reload_item_in_hand(0); - attempt_reload_item_in_hand(1); - } - proc_7F03D0D4(); - puStackX0 = proc_7F0B4E40(puStackX0); - BVar6 = getdebug_portal_flag(); - if (BVar6 != FALSE) { - puStackX0 = (u32 *)proc_7F0BDF10((longlong)(int)puStackX0); - } - BVar6 = get_turbo_mode_flag(); - if (BVar6 != FALSE) { - uVar2 = stan_problems_removed((longlong)(int)puStackX0); - puStackX0 = (u32 *)uVar2; - } - BVar6 = get_debug_stanhit_flag(); - if (BVar6 != FALSE) { - uVar2 = proc_7F0B3034((longlong)(int)puStackX0); - puStackX0 = (u32 *)(int)uVar2; - uVar2 = write_stan_tiles_in_yellow(uVar2); - puStackX0 = (u32 *)uVar2; - } - BVar6 = get_debug_stanregion_flag(); - if (BVar6 != FALSE) { - uVar2 = proc_7F0B3034((longlong)(int)puStackX0); - puStackX0 = (u32 *)(int)uVar2; - uVar2 = stan_region_removed(uVar2); - puStackX0 = (u32 *)uVar2; - } - pbVar7 = check_token(1,(byte *)"-stanshow_"); - if (pbVar7 != NULL) { - pbVar7 = check_token(1,(byte *)"-stanshow_"); - piVar8 = stanMatchTileName(pbVar7); - if (piVar8 != NULL) { - uVar2 = proc_7F0B3034((longlong)(int)puStackX0); - puStackX0 = (u32 *)(int)uVar2; - uVar2 = proc_7F0B3024(uVar2); - puStackX0 = (u32 *)uVar2; - } - } - pbVar7 = check_token(2,(byte *)"-stanshow_"); - if (pbVar7 != NULL) { - pbVar7 = check_token(2,(byte *)"-stanshow_"); - piVar8 = stanMatchTileName(pbVar7); - if (piVar8 != NULL) { - uVar2 = proc_7F0B3034((longlong)(int)puStackX0); - puStackX0 = (u32 *)(int)uVar2; - uVar2 = proc_7F0B3024(uVar2); - puStackX0 = (u32 *)uVar2; - } - } - pbVar7 = check_token(3,(byte *)"-stanshow_"); - if (pbVar7 != NULL) { - pbVar7 = check_token(3,(byte *)"-stanshow_"); - piVar8 = stanMatchTileName(pbVar7); - if (piVar8 != NULL) { - uVar2 = proc_7F0B3034((longlong)(int)puStackX0); - puStackX0 = (u32 *)(int)uVar2; - uVar2 = proc_7F0B3024(uVar2); - puStackX0 = (u32 *)uVar2; - } - } - uVar4 = get_debug_limit_controller_input(); - proc_7F022E24((uint)(uVar4 == 8)); - puStackX0 = proc_7F049B58(puStackX0); - proc_7F0A4824((longlong)(int)register0x000000ec,1); - puStackX0 = proc_7F0A2C44(puStackX0); - puStackX0 = proc_7F0A0034(puStackX0); - uVar9 = proc_7F0927BC(0xb); - if (uVar9 != 0) { - set_max_ammo_for_cur_player(); - } - uVar4 = get_debug_render_raster(); - if (uVar4 == 2) { - puStackX0 = (u32 *)maybe_mp_interface(); - } - else { - uVar2 = proc_7F08BCB8((longlong)(int)puStackX0); - puStackX0 = (u32 *)uVar2; - } - puStackX0 = mp_watch_menu_display(puStackX0); - iVar14 += 1; - } while (iVar14 < (int)uVar1); + u32 uVar3; + uint *puVar4; + short sVar12; + short sVar13; + Gfx *pGVar5; + s32 sVar6; + PLAYER_ID playernum; + undefined8 uVar1; + int iVar7; + longlong lVar2; + BOOL BVar8; + byte *pbVar9; + int *piVar10; + uint uVar11; + int iVar14; + Gfx *pGStackX0; + + *(undefined4 *)param_1 = 0xbc000006; + *(undefined4 *)((int)param_1 + 4) = 0; + pGStackX0 = param_1 + 2; + *(undefined4 *)(param_1 + 1) = 0xbc000406; + uVar3 = osVirtualToPhysical(ptr_jfont_DL); + *(u32 *)((int)param_1 + 0xc) = uVar3; + *(undefined4 *)((int)pGStackX0 + 4) = 0x1000040; + *(undefined4 *)pGStackX0 = 0x6000000; + pGVar5 = pGStackX0 + 2; + *(undefined4 *)((int)pGStackX0 + 0xc) = 0x1000020; + *(undefined4 *)(pGStackX0 + 1) = 0x6000000; + pGStackX0 = pGVar5; + if (stagenum == 0x5a) { + pGStackX0 = (Gfx *)proc_70003EB4((undefined4 *)pGVar5); + puVar4 = proc_70003C58((uint *)pGStackX0); + pGStackX0 = (Gfx *)(puVar4 + 2); + *puVar4 = 0xed000000; + sVar12 = get_video2_settings_txtClipW(); + sVar13 = get_video2_settings_txtClipH(); + pGVar5 = (Gfx *)(int)sVar13; + puVar4[1] = (int)((float)(int)sVar13 * 4.00000000) & 0xfffU | + ((int)((float)(int)sVar12 * 4.00000000) & 0xfffU) << 0xc; + menu_jump_constructor_handler(pGStackX0); + pGStackX0 = pGVar5; } - } - puVar12 = puStackX0; - *puStackX0 = 0xed000000; - puStackX0 = puStackX0 + 2; - sVar10 = get_video2_settings_txtClipW(); - sVar11 = get_video2_settings_txtClipH(); - puVar12[1] = (int)((float)(int)sVar11 * 4.00000000) & 0xfffU | - ((int)((float)(int)sVar10 * 4.00000000) & 0xfffU) << 0xc; - return (uint *)puStackX0; + else { + sVar6 = get_num_players(); + *(undefined4 *)pGStackX0 = 0xbc000404; + *(undefined4 *)((int)pGStackX0 + 4) = 2; + *(undefined4 *)((int)pGStackX0 + 0xc) = 2; + *(undefined4 *)(pGStackX0 + 1) = 0xbc000c04; + *(undefined4 *)(pGStackX0 + 2) = 0xbc001404; + *(undefined4 *)((int)pGStackX0 + 0x14) = 0xfffe; + pGVar5 = pGStackX0 + 4; + iVar14 = 0; + *(undefined4 *)((int)pGStackX0 + 0x1c) = 0xfffe; + *(undefined4 *)(pGStackX0 + 3) = 0xbc001c04; + pGStackX0 = pGVar5; + if (0 < sVar6) { + do { + playernum = proc_7F09B528(iVar14); + set_cur_player(playernum); + set_video2_width_height(pPlayer->viewx,pPlayer->viewy); + set_video2_ulx_uly(pPlayer->viewleft,pPlayer->viewtop); + setvideo_far(pPlayer->fovy); + video_related_21(pPlayer->aspect); + pGStackX0 = (Gfx *)proc_70003EB4((undefined4 *)pGStackX0); + pGStackX0 = (Gfx *)proc_70003C58((uint *)pGStackX0); + uVar3 = get_debug_render_raster(); + if (uVar3 == 0) { + pGStackX0 = (Gfx *)proc_7F091580(pGStackX0); + } + uVar3 = get_debug_render_raster(); + if (uVar3 == 1) { + uVar1 = proc_7F0B2D48((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(uint *)uVar1; + } + uVar3 = get_debug_render_raster(); + if (uVar3 == 2) { + pGStackX0 = (Gfx *)proc_7F087A08(pGStackX0); + } + pGStackX0 = (Gfx *)setupscreensfornumplayers((undefined4 *)pGStackX0); + pGStackX0 = (Gfx *)proc_7F094488(); + proc_7F0B4884(); + determing_type_of_object_and_detection(); + proc_7F03A240(); + proc_7F03D78C(); + proc_7F03C294(); + iVar7 = proc_7F089F38(); + if ((iVar7 != 0) && (lVar2 = proc_7F03C4F0(), lVar2 != 0)) { + attempt_reload_item_in_hand(0); + attempt_reload_item_in_hand(1); + } + proc_7F03D0D4(); + pGStackX0 = (Gfx *)proc_7F0B4E40((undefined4 *)pGStackX0); + BVar8 = getdebug_portal_flag(); + if (BVar8 != FALSE) { + pGStackX0 = (Gfx *)proc_7F0BDF10((longlong)(int)pGStackX0); + } + BVar8 = get_turbo_mode_flag(); + if (BVar8 != FALSE) { + uVar1 = stan_problems_removed((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(undefined4 *)uVar1; + } + BVar8 = get_debug_stanhit_flag(); + if (BVar8 != FALSE) { + uVar1 = proc_7F0B3034((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(int)uVar1; + uVar1 = write_stan_tiles_in_yellow(uVar1); + pGStackX0 = (Gfx *)(undefined4 *)uVar1; + } + BVar8 = get_debug_stanregion_flag(); + if (BVar8 != FALSE) { + uVar1 = proc_7F0B3034((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(int)uVar1; + uVar1 = stan_region_removed(uVar1); + pGStackX0 = (Gfx *)(undefined4 *)uVar1; + } + pbVar9 = check_token(1,(byte *)"-stanshow_"); + if (pbVar9 != NULL) { + pbVar9 = check_token(1,(byte *)"-stanshow_"); + piVar10 = stanMatchTileName(pbVar9); + if (piVar10 != NULL) { + uVar1 = proc_7F0B3034((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(int)uVar1; + uVar1 = proc_7F0B3024(uVar1); + pGStackX0 = (Gfx *)(undefined4 *)uVar1; + } + } + pbVar9 = check_token(2,(byte *)"-stanshow_"); + if (pbVar9 != NULL) { + pbVar9 = check_token(2,(byte *)"-stanshow_"); + piVar10 = stanMatchTileName(pbVar9); + if (piVar10 != NULL) { + uVar1 = proc_7F0B3034((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(int)uVar1; + uVar1 = proc_7F0B3024(uVar1); + pGStackX0 = (Gfx *)(undefined4 *)uVar1; + } + } + pbVar9 = check_token(3,(byte *)"-stanshow_"); + if (pbVar9 != NULL) { + pbVar9 = check_token(3,(byte *)"-stanshow_"); + piVar10 = stanMatchTileName(pbVar9); + if (piVar10 != NULL) { + uVar1 = proc_7F0B3034((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(int)uVar1; + uVar1 = proc_7F0B3024(uVar1); + pGStackX0 = (Gfx *)(undefined4 *)uVar1; + } + } + uVar3 = get_debug_limit_controller_input(); + proc_7F022E24((uint)(uVar3 == 8)); + pGStackX0 = (Gfx *)proc_7F049B58((undefined4 *)pGStackX0); + proc_7F0A4824((longlong)(int)register0x000000ec,1); + pGStackX0 = (Gfx *)proc_7F0A2C44((undefined4 *)pGStackX0); + pGStackX0 = (Gfx *)proc_7F0A0034((undefined4 *)pGStackX0); + uVar11 = cheatCheckIfOn(cheats_cheat_infinite_ammo); + if (uVar11 != 0) { + set_max_ammo_for_cur_player(); + } + uVar3 = get_debug_render_raster(); + if (uVar3 == 2) { + pGStackX0 = (Gfx *)maybe_mp_interface(); + } + else { + uVar1 = proc_7F08BCB8((longlong)(int)pGStackX0); + pGStackX0 = (Gfx *)(uint *)uVar1; + } + pGStackX0 = (Gfx *)mp_watch_menu_display((uint *)pGStackX0); + iVar14 += 1; + } while (iVar14 < sVar6); + } + } + pGVar5 = pGStackX0; + *(uint *)pGStackX0 = 0xed000000; + pGStackX0 = pGStackX0 + 1; + sVar12 = get_video2_settings_txtClipW(); + sVar13 = get_video2_settings_txtClipH(); + *(uint *)((int)pGVar5 + 4) = + (int)((float)(int)sVar13 * 4.00000000) & 0xfffU | + ((int)((float)(int)sVar12 * 4.00000000) & 0xfffU) << 0xc; + return (uint *)pGStackX0; } @@ -132238,86 +131389,86 @@ uint * proc_7F0BE30C(undefined4 *param_1) void proc_7F0BE8D0(void) { - f32 fVar1; - f32 fVar2; - float fVar3; - float fVar4; - - if (difficulty_0 == 0) { - fVar1 = get_BONDdata_watch_health(); - fVar2 = get_BONDdata_watch_armor(); - fVar3 = 1.00000000; - fVar4 = (float)fVar2 + (float)fVar1; - if (fVar4 <= 0.12500000) { - fVar3 = 0.50000000; - } - else { - if (fVar4 <= flt_8005B73C) { - fVar3 = ((fVar4 - 0.12500000) * 0.50000000) / flt_8005B740 + 0.50000000; - } - } - flt_80030B14 = 2.00000000; - ai_damage_modifier = (f32)(fVar3 * 0.50000000); - flt_80030B18 = 2.00000000; - flt_80030B24 = 2.00000000; - ai_accuracy_modifier = (f32)flt_8005B744; - ai_health_modifier = 2.00000000; - dword_80040178 = (f32)(fVar3 * 0.25000000); - difficulty = 1.50000000; - solo_ammo_multiplier = 2.00000000; - ai_reaction_speed = (f32)flt_8005B748; - flt_80030B1C = (float)ai_damage_modifier; - flt_80030B20 = (float)ai_damage_modifier; - } - else { - if (difficulty_0 == 1) { - flt_80030B14 = 1.00000000; - flt_80030B18 = 1.00000000; - flt_80030B1C = 0.75000000; - flt_80030B20 = 0.75000000; - flt_80030B24 = 1.00000000; - ai_accuracy_modifier = 0.75000000; - ai_damage_modifier = 0.75000000; - ai_health_modifier = 1.00000000; - dword_80040178 = 0.75000000; - difficulty = 0.75000000; - solo_ammo_multiplier = 1.50000000; - ai_reaction_speed = 0.50000000; - } - else { - if (difficulty_0 == 2) { - flt_80030B14 = 1.00000000; - flt_80030B18 = 1.00000000; - flt_80030B1C = 1.00000000; - flt_80030B20 = 1.00000000; - flt_80030B24 = 1.00000000; - ai_accuracy_modifier = 1.00000000; - ai_damage_modifier = 1.00000000; - ai_health_modifier = 1.00000000; - dword_80040178 = 1.00000000; - difficulty = flt_8005B74C; - solo_ammo_multiplier = 1.00000000; - ai_reaction_speed = 1.00000000; - } - else { - if (difficulty_0 == 3) { - flt_80030B14 = 1.00000000; - flt_80030B18 = 1.00000000; - flt_80030B1C = 1.00000000; - flt_80030B20 = 1.00000000; - flt_80030B24 = 1.00000000; - ai_accuracy_modifier = 1.00000000; - ai_damage_modifier = 1.00000000; - ai_health_modifier = 1.00000000; - dword_80040178 = 1.00000000; - difficulty = 1.00000000; - solo_ammo_multiplier = 1.00000000; - ai_reaction_speed = 1.00000000; + f32 fVar1; + f32 fVar2; + float fVar3; + float fVar4; + + if (difficulty_0 == 0) { + fVar1 = get_BONDdata_watch_health(); + fVar2 = get_BONDdata_watch_armor(); + fVar3 = 1.00000000; + fVar4 = (float)fVar2 + (float)fVar1; + if (fVar4 <= 0.12500000) { + fVar3 = 0.50000000; } - } + else { + if (fVar4 <= flt_8005B73C) { + fVar3 = ((fVar4 - 0.12500000) * 0.50000000) / flt_8005B740 + 0.50000000; + } + } + flt_80030B14 = 2.00000000; + ai_damage_modifier = (f32)(fVar3 * 0.50000000); + flt_80030B18 = 2.00000000; + flt_80030B24 = 2.00000000; + ai_accuracy_modifier = (f32)flt_8005B744; + ai_health_modifier = 2.00000000; + dword_80040178 = (f32)(fVar3 * 0.25000000); + difficulty = 1.50000000; + solo_ammo_multiplier = 2.00000000; + ai_reaction_speed = (f32)flt_8005B748; + flt_80030B1C = (float)ai_damage_modifier; + flt_80030B20 = (float)ai_damage_modifier; } - } - return; + else { + if (difficulty_0 == 1) { + flt_80030B14 = 1.00000000; + flt_80030B18 = 1.00000000; + flt_80030B1C = 0.75000000; + flt_80030B20 = 0.75000000; + flt_80030B24 = 1.00000000; + ai_accuracy_modifier = 0.75000000; + ai_damage_modifier = 0.75000000; + ai_health_modifier = 1.00000000; + dword_80040178 = 0.75000000; + difficulty = 0.75000000; + solo_ammo_multiplier = 1.50000000; + ai_reaction_speed = 0.50000000; + } + else { + if (difficulty_0 == 2) { + flt_80030B14 = 1.00000000; + flt_80030B18 = 1.00000000; + flt_80030B1C = 1.00000000; + flt_80030B20 = 1.00000000; + flt_80030B24 = 1.00000000; + ai_accuracy_modifier = 1.00000000; + ai_damage_modifier = 1.00000000; + ai_health_modifier = 1.00000000; + dword_80040178 = 1.00000000; + difficulty = (f32)flt_8005B74C; + solo_ammo_multiplier = 1.00000000; + ai_reaction_speed = 1.00000000; + } + else { + if (difficulty_0 == 3) { + flt_80030B14 = 1.00000000; + flt_80030B18 = 1.00000000; + flt_80030B1C = 1.00000000; + flt_80030B20 = 1.00000000; + flt_80030B24 = 1.00000000; + ai_accuracy_modifier = 1.00000000; + ai_damage_modifier = 1.00000000; + ai_health_modifier = 1.00000000; + dword_80040178 = 1.00000000; + difficulty = 1.00000000; + solo_ammo_multiplier = 1.00000000; + ai_reaction_speed = 1.00000000; + } + } + } + } + return; } @@ -132328,432 +131479,421 @@ void proc_7F0BE8D0(void) void manage_mp_game(void) { - int *piVar1; - int *piVar2; - int *piVar3; - Player *pPVar4; - longlong lVar5; - ulonglong uVar6; - int iVar7; - int iVar8; - BOOL BVar9; - u32 uVar10; - undefined1 *puVar11; - Player **ppPVar12; - longlong lVar13; - int *piVar14; - undefined8 extraout_a0; - undefined8 extraout_a1; - char cVar15; - char cVar16; - ulonglong uVar17; - int iVar18; - int iVar19; - int iVar20; - int iVar21; - int iStack364; - int iStack360; - int iStack28; - - mp_tlb_related(); - if (controls_locked_flag == 0) { - iVar7 = get_ispaused(); - if (iVar7 == 0) { - clock_timer = dword_80048498; - dword_80048380 += 1; - } - else { - clock_timer = 0; - } - } - else { - clock_timer = 0; - } - global_timer_delta = (float)clock_timer; - global_timer += clock_timer; - if (((stagenum != 0x5a) && (dword_80048394 == 0)) && (0 < clock_timer)) { - puVar11 = CHEAT_AVAILABLE_EXTRA_CHARS; - lVar13 = 1; - if (append_cheat_sp != FALSE) { - do { - if (*puVar11 != '\0') { - lVar5 = proc_7F091A5C(lVar13); - if (lVar5 == 0) { - proc_7F091AAC((longlong)(int)lVar13); - } - } - lVar13 = (longlong)((int)lVar13 + 1); - puVar11 = puVar11 + 1; - } while (lVar13 != 0x4b); - } - } - uVar6 = get_num_players(); - if ((1 < (longlong)uVar6) && (stagenum != 0x5a)) { - iVar7 = get_mission_state(); - if (iVar7 == 6) { - uVar6 = get_num_players(); - lVar13 = 0; - iVar7 = 0; - iVar20 = 0; - if (0 < (longlong)uVar6) { - ppPVar12 = &ptr_BONDdata_p1; - do { - pPVar4 = *ppPVar12; - ppPVar12 = ppPVar12 + 1; - if ((pPVar4->bonddead != 0) && (iVar7 += 1, pPVar4->field_424 != 0)) { - iVar20 += 1; - } - uVar6 = get_num_players(); - lVar13 = (longlong)((int)lVar13 + 1); - } while (lVar13 < (longlong)uVar6); - } - if ((0 < iVar7) && (iVar7 == iVar20)) { - set_missionstate(1); - } - } - iVar7 = dword_80048394; - if (0 < mp_time) { - iVar20 = clock_timer + dword_80048394; - if ((dword_80048394 < mp_time + -0xe10) && (mp_time + -0xe10 <= iVar20)) { - iStack28 = 0; - uVar6 = get_num_players(); - if (0 < (longlong)uVar6) { - do { - set_cur_player(iStack28); - display_string_in_lower_left_corner("One minute left"); - iStack28 += 1; - uVar6 = get_num_players(); - } while ((longlong)iStack28 < (longlong)uVar6); - } - } - if (((mp_time + -600 <= iVar20) && (dword_800483A0 == 0)) && - (iVar8 = get_controls_locked_flag(), iVar8 == 0)) { - play_sfx_a1(ptr_sfx_buf,0xa1,(sfxdata *)&dword_800483A0); - } - iVar8 = get_controls_locked_flag(); - if (((iVar8 != 0) && (dword_800483A0 != 0)) && - (uVar6 = music_related_26(dword_800483A0), uVar6 != 0)) { - music_related_28(dword_800483A0); - } - if ((iVar7 < mp_time) && (mp_time <= iVar20)) { - proc_7F0C2530(0); - } - } - if ((0 < mp_point) && (clock_timer != 0)) { - uVar6 = get_num_players(); - iVar7 = 0; - iVar20 = 0; - lVar13 = 0; - if (0 < (longlong)uVar6) { - ppPVar12 = &ptr_BONDdata_p1; - do { - pPVar4 = *ppPVar12; - if ((pPVar4->bonddead != 0) && - (((pPVar4->field_424 == 0 || (pPVar4->field_428 == 0)) || - (0.00000000 <= pPVar4->timer_for_fade)))) { - iVar7 += 1; - } - iVar8 = get_points_for_mp_player((uint)lVar13); - uVar6 = SEXT48((int)uVar6); - if (mp_point <= iVar8) { - iVar20 += 1; - } - lVar13 = (longlong)(int)((uint)lVar13 + 1); - ppPVar12 = ppPVar12 + 1; - } while (lVar13 < (longlong)uVar6); - } - if (0 < iVar20) { - if (iVar7 == 0) { - proc_7F0C2530(0); + int *piVar1; + int *piVar2; + int *piVar3; + Player *pPVar4; + u32 uVar6; + s32 sVar7; + int iVar8; + int iVar9; + ulonglong uVar5; + BOOL BVar10; + u8 *puVar11; + u32 cheatindex; + Player **ppPVar12; + uint uVar13; + int *piVar14; + undefined8 extraout_a0; + int iVar15; + undefined8 extraout_a1; + char cVar16; + char cVar17; + uint uVar18; + int iVar19; + int iVar20; + int iStack364; + int iStack360; + PLAYER_ID PStack28; + + mp_tlb_related(); + if (controls_locked_flag == 0) { + iVar8 = get_ispaused(); + if (iVar8 == 0) { + clock_timer = speedgraphframes; + dword_80048380 += 1; } else { - set_stopplay_flag(); + clock_timer = 0; } - } } - iVar7 = get_scenario(); - if ((iVar7 == 1) && (clock_timer != 0)) { - uVar6 = get_num_players(); - iVar7 = 0; - iVar20 = 0; - lVar13 = 0; - if (0 < (longlong)uVar6) { - do { - iVar8 = 0; - cVar16 = '\0'; - cVar15 = '\0'; - uVar17 = 0; - iVar18 = 0; - iVar19 = (int)lVar13; - if (0 < (longlong)uVar6) { - if ((uVar6 & 3) != 0) { - ppPVar12 = &ptr_BONDdata_p1; - piVar14 = player1_playerdata.shotcount + iVar19; - cVar15 = cVar16; - do { - pPVar4 = *ppPVar12; - iVar18 = (int)uVar17 + 1; - uVar17 = SEXT48(iVar18); - ppPVar12 = ppPVar12 + 1; - if (pPVar4->bonddead == 0) { - cVar15 += '\x01'; - iVar21 = piVar14[9]; + else { + clock_timer = 0; + } + global_timer_delta = (float)clock_timer; + global_timer += clock_timer; + if (((stagenum != 0x5a) && (dword_80048394 == 0)) && (0 < clock_timer)) { + puVar11 = CHEATS_ACTIVE_ARRAY; + cheatindex = 1; + if (append_cheat_sp != FALSE) { + do { + if ((*puVar11 != '\0') && + (uVar6 = is_cheat_index_equal_to_1C(cheatindex), uVar6 == 0)) { + turn_on_cheat_for_players(cheatindex); + } + cheatindex += 1; + puVar11 = puVar11 + 1; + } while (cheatindex != 0x4b); + } + } + sVar7 = get_num_players(); + if ((1 < sVar7) && (stagenum != 0x5a)) { + iVar8 = get_mission_state(); + if (iVar8 == 6) { + sVar7 = get_num_players(); + iVar8 = 0; + iVar19 = 0; + iVar9 = 0; + if (0 < sVar7) { + ppPVar12 = ptr_BONDdata_p1; + do { + pPVar4 = *ppPVar12; + iVar8 += 1; + ppPVar12 = ppPVar12 + 1; + if ((pPVar4->bonddead != 0) && (iVar19 += 1, pPVar4->field_424 != 0)) { + iVar9 += 1; + } + sVar7 = get_num_players(); + } while (iVar8 < sVar7); + } + if ((0 < iVar19) && (iVar19 == iVar9)) { + set_missionstate(1); + } + } + iVar8 = dword_80048394; + if (0 < mp_time) { + iVar19 = clock_timer + dword_80048394; + if ((dword_80048394 < mp_time + -0xe10) && (mp_time + -0xe10 <= iVar19)) { + PStack28 = PLAYER1; + sVar7 = get_num_players(); + if (0 < sVar7) { + do { + set_cur_player(PStack28); + display_string_in_lower_left_corner("One minute left"); + PStack28 += PLAYER2; + sVar7 = get_num_players(); + } while ((int)PStack28 < sVar7); + } + } + if (((mp_time + -600 <= iVar19) && (dword_800483A0 == NULL)) && + (iVar9 = get_controls_locked_flag(), iVar9 == 0)) { + play_sfx_a1(ptr_sfx_buf,0xa1,(ALSndPlayer *)&dword_800483A0); + } + iVar9 = get_controls_locked_flag(); + if (((iVar9 != 0) && (dword_800483A0 != NULL)) && + (uVar5 = sfxGetArg0Unk3F(dword_800483A0), uVar5 != 0)) { + sfxDeactivate((int)dword_800483A0); + } + if ((iVar8 < mp_time) && (mp_time <= iVar19)) { + proc_7F0C2530(0); + } + } + if ((0 < mp_point) && (clock_timer != 0)) { + sVar7 = get_num_players(); + iVar8 = 0; + iVar19 = 0; + uVar13 = 0; + if (0 < sVar7) { + ppPVar12 = ptr_BONDdata_p1; + do { + pPVar4 = *ppPVar12; + if ((pPVar4->bonddead != 0) && + (((pPVar4->field_424 == 0 || (pPVar4->field_428 == 0)) || + (0.00000000 <= pPVar4->timer_for_fade)))) { + iVar8 += 1; + } + iVar9 = get_points_for_mp_player(uVar13); + if (mp_point <= iVar9) { + iVar19 += 1; + } + uVar13 += 1; + ppPVar12 = ppPVar12 + 1; + } while ((int)uVar13 < sVar7); + } + if (0 < iVar19) { + if (iVar8 == 0) { + proc_7F0C2530(0); } else { - iVar21 = piVar14[9]; + set_stopplay_flag(); } - piVar14 = piVar14 + 0x1c; - iVar8 += iVar21; - } while ((uVar6 & 3) != uVar17); - cVar16 = cVar15; - if (uVar17 == uVar6) goto LAB_7f0bf124; } - ppPVar12 = &ptr_BONDdata_p1 + iVar18; - piVar14 = (&player1_playerdata)[iVar18].shotcount + iVar19; - cVar15 = cVar16; - do { - if ((*ppPVar12)->bonddead == 0) { - cVar15 += '\x01'; - pPVar4 = ppPVar12[1]; - } - else { - pPVar4 = ppPVar12[1]; - } - piVar1 = piVar14 + 9; - if (pPVar4->bonddead == 0) { - cVar15 += '\x01'; - pPVar4 = ppPVar12[2]; - } - else { - pPVar4 = ppPVar12[2]; - } - piVar2 = piVar14 + 0x25; - if (pPVar4->bonddead == 0) { - cVar15 += '\x01'; - pPVar4 = ppPVar12[3]; - } - else { - pPVar4 = ppPVar12[3]; - } - piVar3 = piVar14 + 0x41; - ppPVar12 = ppPVar12 + 4; - if (pPVar4->bonddead == 0) { - cVar15 += '\x01'; - iVar18 = piVar14[0x5d]; - } - else { - iVar18 = piVar14[0x5d]; - } - piVar14 = piVar14 + 0x70; - iVar8 = iVar8 + *piVar1 + *piVar2 + *piVar3 + iVar18; - } while (ppPVar12 != &ptr_BONDdata_p1 + (int)uVar6); - } + } + iVar8 = get_scenario(); + if ((iVar8 == 1) && (clock_timer != 0)) { + uVar13 = get_num_players(); + iVar19 = 0; + iVar9 = 0; + iVar8 = 0; + if (0 < (int)uVar13) { + do { + iVar15 = 0; + cVar17 = '\0'; + cVar16 = '\0'; + uVar18 = 0; + if (0 < (int)uVar13) { + if ((uVar13 & 3) != 0) { + ppPVar12 = ptr_BONDdata_p1; + piVar14 = player1_playerdata[0].shotcount + iVar8; + cVar16 = cVar17; + do { + pPVar4 = *ppPVar12; + uVar18 += 1; + ppPVar12 = ppPVar12 + 1; + if (pPVar4->bonddead == 0) { + cVar16 += '\x01'; + iVar20 = piVar14[9]; + } + else { + iVar20 = piVar14[9]; + } + piVar14 = piVar14 + 0x1c; + iVar15 += iVar20; + } while ((uVar13 & 3) != uVar18); + cVar17 = cVar16; + if (uVar18 == uVar13) goto LAB_7f0bf124; + } + ppPVar12 = ptr_BONDdata_p1 + uVar18; + piVar14 = player1_playerdata[uVar18].shotcount + iVar8; + cVar16 = cVar17; + do { + if ((*ppPVar12)->bonddead == 0) { + cVar16 += '\x01'; + pPVar4 = ppPVar12[1]; + } + else { + pPVar4 = ppPVar12[1]; + } + piVar1 = piVar14 + 9; + if (pPVar4->bonddead == 0) { + cVar16 += '\x01'; + pPVar4 = ppPVar12[2]; + } + else { + pPVar4 = ppPVar12[2]; + } + piVar2 = piVar14 + 0x25; + if (pPVar4->bonddead == 0) { + cVar16 += '\x01'; + pPVar4 = ppPVar12[3]; + } + else { + pPVar4 = ppPVar12[3]; + } + piVar3 = piVar14 + 0x41; + ppPVar12 = ppPVar12 + 4; + if (pPVar4->bonddead == 0) { + cVar16 += '\x01'; + iVar20 = piVar14[0x5d]; + } + else { + iVar20 = piVar14[0x5d]; + } + piVar14 = piVar14 + 0x70; + iVar15 = iVar15 + *piVar1 + *piVar2 + *piVar3 + iVar20; + } while (ppPVar12 != ptr_BONDdata_p1 + uVar13); + } LAB_7f0bf124: - if (iVar8 < 2) { -LAB_7f0bf19c: - lVar13 = (longlong)(iVar19 + 1); - } - else { - if ((&player1_playerdata)[iVar19].order_out_in_yolt == '\0') { - (&player1_playerdata)[iVar19].order_out_in_yolt = cVar15 + '\x01'; + if (1 < iVar15) { + if (player1_playerdata[iVar8].order_out_in_yolt == '\0') { + player1_playerdata[iVar8].order_out_in_yolt = cVar16 + '\x01'; + } + pPVar4 = ptr_BONDdata_p1[iVar8]; + iVar19 += 1; + if (((pPVar4->field_424 != 0) && (pPVar4->field_428 != 0)) && + (pPVar4->timer_for_fade < 0.00000000)) { + iVar9 += 1; + } + } + iVar8 += 1; + } while (iVar8 < (int)uVar13); } - pPVar4 = (&ptr_BONDdata_p1)[iVar19]; - iVar7 += 1; - if (pPVar4->field_424 == 0) { - lVar13 = (longlong)(iVar19 + 1); + if (iVar9 < (int)(uVar13 - 1)) { + if ((int)(uVar13 - 1) <= iVar19) { + set_stopplay_flag(); + } } else { - if (pPVar4->field_428 == 0) { - lVar13 = (longlong)(iVar19 + 1); - } - else { - if (pPVar4->timer_for_fade < 0.00000000) { - iVar20 += 1; - goto LAB_7f0bf19c; - } - lVar13 = (longlong)(iVar19 + 1); - } + proc_7F0C2530(0); } - } - } while (lVar13 < (longlong)uVar6); - } - iVar8 = (int)uVar6 + -1; - if (iVar20 < iVar8) { - if (iVar8 <= iVar7) { - set_stopplay_flag(); } - } - else { - proc_7F0C2530(0); - } } - } - dword_80048394 += clock_timer; - cur_mp_sec = (float)dword_80048394 / 60.00000000; - dword_800483A8 += clock_timer; - cur_mp_min = (f32)((float)dword_800483A8 / 60.00000000); - uVar6 = get_controller_buttons_pressed('\0',0xffff); - if (uVar6 == 0) { - dword_80048390 += clock_timer; - if (0x707 < dword_80048390) { - dword_80048388 = 1; - } - } - else { - dword_80048388 = 0; - dword_80048390 = 0; - } - if (dword_80048388 == 0) { - dword_800483B0 += clock_timer; - stage_time_sec = (f32)((float)dword_800483B0 / 60.00000000); - dword_800483B8 += clock_timer; - poweron_time_sec = (f32)((float)dword_800483B8 / 60.00000000); - } - else { - dword_8004838C += clock_timer; - } - set_video2_settings_offset_24(1); - if (stagenum == 0x5a) { - proc_7F09193C(); - menu_init(extraout_a0,extraout_a1); - something_with_LnameJ(); - } - else { - proc_7F09BBBC(); - proc_7F0BE8D0(); - proc_7F0BC7D4(); - proc_7F092E50(); - proc_7F094438(); - proc_7F0A47FC(); - proc_7F068E6C(); - proc_7F0A28D4(); - proc_7F09FD3C(); - handle_mp_respawn_and_some_things(); - reset_all_music_slots(); - something_with_LnameJ(); - iVar7 = get_debug_joy2detailedit_flag(); - if (((iVar7 != 0) && (DAT_800483c8 == 0)) && - (DAT_800483c8 = allocate_bytes_in_bank(0x3000,4), DAT_800483c8 != 0)) { - iVar7 = 0; - do { - *(undefined *)(DAT_800483c8 + iVar7) = 0xff; - *(byte *)(DAT_800483c8 + iVar7 + 1) = *(byte *)(DAT_800483c8 + iVar7 + 1) & 0x1f | 0x20; - *(byte *)(DAT_800483c8 + iVar7 + 1) = *(byte *)(DAT_800483c8 + iVar7 + 1) & 0xe3 | 4; - *(undefined *)(DAT_800483c8 + iVar7 + 4) = 0xff; - *(byte *)(DAT_800483c8 + iVar7 + 5) = *(byte *)(DAT_800483c8 + iVar7 + 5) & 0x1f | 0x20; - *(byte *)(DAT_800483c8 + iVar7 + 5) = *(byte *)(DAT_800483c8 + iVar7 + 5) & 0xe3 | 4; - *(undefined *)(DAT_800483c8 + iVar7 + 8) = 0xff; - *(byte *)(DAT_800483c8 + iVar7 + 9) = *(byte *)(DAT_800483c8 + iVar7 + 9) & 0x1f | 0x20; - *(byte *)(DAT_800483c8 + iVar7 + 9) = *(byte *)(DAT_800483c8 + iVar7 + 9) & 0xe3 | 4; - *(undefined *)(DAT_800483c8 + iVar7 + 0xc) = 0xff; - *(byte *)(DAT_800483c8 + iVar7 + 0xd) = *(byte *)(DAT_800483c8 + iVar7 + 0xd) & 0x1f | 0x20; - iVar20 = DAT_800483c8 + iVar7; - iVar7 += 0x10; - *(byte *)(iVar20 + 0xd) = *(byte *)(iVar20 + 0xd) & 0xe3 | 4; - } while (iVar7 != 12000); - } - BVar9 = getdebug_portal_flag(); - if (BVar9 != FALSE) { - proc_7F0BDF10(0); - } - uVar10 = get_debug_limit_controller_input(); - if (uVar10 == 4) { - uVar6 = get_controller_buttons_pressed('\0',2); - if (uVar6 != 0) { - removed_7F0AF630(-1); - removed_7F0B2D38(0,0,0); - } - uVar6 = get_controller_buttons_pressed('\0',1); - if (uVar6 != 0) { - removed_7F0AF630(1); - removed_7F0B2D38(0,0,0); - } + dword_80048394 += clock_timer; + cur_mp_sec = (float)dword_80048394 / 60.00000000; + dword_800483A8 += clock_timer; + cur_mp_min = (f32)((float)dword_800483A8 / 60.00000000); + cheatindex = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if (cheatindex == 0) { + dword_80048390 += clock_timer; + if (0x707 < dword_80048390) { + dword_80048388 = 1; + } } else { - if (uVar10 == 8) { - uVar6 = get_controller_buttons_pressed('\0',2); - if (uVar6 != 0) { - proc_7F022E30(); - } - uVar6 = get_controller_buttons_pressed('\0',1); - if (uVar6 != 0) { - proc_7F022E90(); - } - uVar6 = get_controller_buttons_pressed('\0',0x20); - if (uVar6 != 0) { - proc_7F022EC8(); - } - uVar6 = get_controller_buttons_held('\0',0x10); - proc_7F022EE0((uint)(uVar6 != 0)); - } + dword_80048388 = 0; + dword_80048390 = 0; } - } - uVar10 = get_debug_limit_controller_input(); - if (uVar10 == 0xc) { - uVar6 = get_controller_buttons_pressed('\0',0x202); - if (uVar6 != 0) { - music_append_play_endtheme(); - } - uVar6 = get_controller_buttons_pressed('\0',0x101); - if (uVar6 != 0) { - music_append_play_solo_death_short(); - } - uVar6 = get_controller_buttons_pressed('\0',0x400); - if (uVar6 != 0) { - musicTrack1Stop(); - } - uVar6 = get_controller_buttons_pressed('\0',0x4000); - if (uVar6 != 0) { - music_related_0(); - } - } - else { - if (uVar10 == 0xd) { - uVar6 = get_controller_buttons_pressed('\0',0x622); - if (uVar6 != 0) { - DAT_800483e4 += -1; - play_sfx_a1(ptr_sfx_buf,DAT_800483e4,NULL); - } - uVar6 = get_controller_buttons_pressed('\0',0x911); - if (uVar6 != 0) { - DAT_800483e4 += 1; - play_sfx_a1(ptr_sfx_buf,DAT_800483e4,NULL); - } - uVar6 = get_controller_buttons_pressed('\0',4); - if (uVar6 != 0) { - music_related_30(); - } - uVar6 = get_controller_buttons_pressed('\0',8); - if (uVar6 != 0) { - play_sfx_a1(ptr_sfx_buf,DAT_800483e4,NULL); - } + if (dword_80048388 == 0) { + dword_800483B0 += clock_timer; + stage_time_sec = (f32)((float)dword_800483B0 / 60.00000000); + dword_800483B8 += clock_timer; + poweron_time_sec = (f32)((float)dword_800483B8 / 60.00000000); } else { - if (uVar10 == 0x38) { - iStack360 = get_video_mp_related_8002329C(); - iStack364 = get_video_mp_related_800232A0(); - uVar6 = get_controller_buttons_held('\0',4); - if (uVar6 != 0) { - iStack364 += 1; - } - uVar6 = get_controller_buttons_held('\0',8); - if (uVar6 != 0) { - iStack364 += -1; - } - uVar6 = get_controller_buttons_held('\0',1); - if (uVar6 != 0) { - iStack360 += 1; - } - uVar6 = get_controller_buttons_held('\0',2); - if (uVar6 != 0) { - iStack360 += -1; - } - set_video_mp_related_8002329C(iStack360); - set_video_mp_related_800232A0(iStack364); - } + dword_8004838C += clock_timer; } - } - return; + set_video2_settings_offset_24(1); + if (stagenum == 0x5a) { + cheat_buttons_mp_related(); + menu_init(extraout_a0,extraout_a1); + something_with_LnameJ(); + } + else { + proc_7F09BBBC(); + proc_7F0BE8D0(); + proc_7F0BC7D4(); + proc_7F092E50(); + proc_7F094438(); + proc_7F0A47FC(); + proc_7F068E6C(); + proc_7F0A28D4(); + proc_7F09FD3C(); + handle_mp_respawn_and_some_things(); + reset_all_music_slots(); + something_with_LnameJ(); + iVar8 = get_debug_joy2detailedit_flag(); + if (((iVar8 != 0) && (DAT_800483c8 == 0)) && + (DAT_800483c8 = mempAllocBytesInBank(0x3000,'\x04'), DAT_800483c8 != 0)) { + iVar8 = 0; + do { + *(undefined *)(DAT_800483c8 + iVar8) = 0xff; + *(byte *)(DAT_800483c8 + iVar8 + 1) = + *(byte *)(DAT_800483c8 + iVar8 + 1) & 0x1f | 0x20; + *(byte *)(DAT_800483c8 + iVar8 + 1) = *(byte *)(DAT_800483c8 + iVar8 + 1) & 0xe3 | 4 + ; + *(undefined *)(DAT_800483c8 + iVar8 + 4) = 0xff; + *(byte *)(DAT_800483c8 + iVar8 + 5) = + *(byte *)(DAT_800483c8 + iVar8 + 5) & 0x1f | 0x20; + *(byte *)(DAT_800483c8 + iVar8 + 5) = *(byte *)(DAT_800483c8 + iVar8 + 5) & 0xe3 | 4 + ; + *(undefined *)(DAT_800483c8 + iVar8 + 8) = 0xff; + *(byte *)(DAT_800483c8 + iVar8 + 9) = + *(byte *)(DAT_800483c8 + iVar8 + 9) & 0x1f | 0x20; + *(byte *)(DAT_800483c8 + iVar8 + 9) = *(byte *)(DAT_800483c8 + iVar8 + 9) & 0xe3 | 4 + ; + *(undefined *)(DAT_800483c8 + iVar8 + 0xc) = 0xff; + *(byte *)(DAT_800483c8 + iVar8 + 0xd) = + *(byte *)(DAT_800483c8 + iVar8 + 0xd) & 0x1f | 0x20; + iVar19 = DAT_800483c8 + iVar8; + iVar8 += 0x10; + *(byte *)(iVar19 + 0xd) = *(byte *)(iVar19 + 0xd) & 0xe3 | 4; + } while (iVar8 != 12000); + } + BVar10 = getdebug_portal_flag(); + if (BVar10 != FALSE) { + proc_7F0BDF10(0); + } + cheatindex = get_debug_limit_controller_input(); + if (cheatindex == 4) { + cheatindex = get_controller_buttons_pressed('\0',L_CBUTTONS); + if (cheatindex != 0) { + removed_7F0AF630(-1); + removed_7F0B2D38(0,0,0); + } + cheatindex = get_controller_buttons_pressed('\0',R_CBUTTONS); + if (cheatindex != 0) { + removed_7F0AF630(1); + removed_7F0B2D38(0,0,0); + } + } + else { + if (cheatindex == 8) { + cheatindex = get_controller_buttons_pressed('\0',L_CBUTTONS); + if (cheatindex != 0) { + proc_7F022E30(); + } + cheatindex = get_controller_buttons_pressed('\0',R_CBUTTONS); + if (cheatindex != 0) { + proc_7F022E90(); + } + cheatindex = get_controller_buttons_pressed('\0',L_TRIG); + if (cheatindex != 0) { + proc_7F022EC8(); + } + cheatindex = get_controller_buttons_held('\0',R_TRIG); + proc_7F022EE0((uint)(cheatindex != 0)); + } + } + } + cheatindex = get_debug_limit_controller_input(); + if (cheatindex == 0xc) { + cheatindex = get_controller_buttons_pressed('\0',L_CBUTTONS|L_JPAD); + if (cheatindex != 0) { + music_append_play_endtheme(); + } + cheatindex = get_controller_buttons_pressed('\0',R_CBUTTONS|R_JPAD); + if (cheatindex != 0) { + music_append_play_solo_death_short(); + } + cheatindex = get_controller_buttons_pressed('\0',D_JPAD); + if (cheatindex != 0) { + musicTrack1Stop(); + } + cheatindex = get_controller_buttons_pressed('\0',B_BUTTON); + if (cheatindex != 0) { + music_related_0(); + } + } + else { + if (cheatindex == 0xd) { + cheatindex = get_controller_buttons_pressed('\0',L_CBUTTONS|L_TRIG|L_JPAD|D_JPAD); + if (cheatindex != 0) { + DAT_800483e4 += -1; + play_sfx_a1(ptr_sfx_buf,DAT_800483e4,NULL); + } + cheatindex = get_controller_buttons_pressed('\0',R_CBUTTONS|R_TRIG|R_JPAD|U_JPAD); + if (cheatindex != 0) { + DAT_800483e4 += 1; + play_sfx_a1(ptr_sfx_buf,DAT_800483e4,NULL); + } + cheatindex = get_controller_buttons_pressed('\0',D_CBUTTONS); + if (cheatindex != 0) { + music_related_30(); + } + cheatindex = get_controller_buttons_pressed('\0',U_CBUTTONS); + if (cheatindex != 0) { + play_sfx_a1(ptr_sfx_buf,DAT_800483e4,NULL); + } + } + else { + if (cheatindex == 0x38) { + iStack360 = get_video_mp_related_8002329C(); + iStack364 = get_video_mp_related_800232A0(); + cheatindex = get_controller_buttons_held('\0',D_CBUTTONS); + if (cheatindex != 0) { + iStack364 += 1; + } + cheatindex = get_controller_buttons_held('\0',U_CBUTTONS); + if (cheatindex != 0) { + iStack364 += -1; + } + cheatindex = get_controller_buttons_held('\0',R_CBUTTONS); + if (cheatindex != 0) { + iStack360 += 1; + } + cheatindex = get_controller_buttons_held('\0',L_CBUTTONS); + if (cheatindex != 0) { + iStack360 += -1; + } + set_video_mp_related_8002329C(iStack360); + set_video_mp_related_800232A0(iStack364); + } + } + } + return; } @@ -132761,104 +131901,114 @@ LAB_7f0bf19c: void proc_7F0BF800(void) { - u32 uVar3; - char cVar5; - char cVar6; - char cVar7; - int iVar4; - ulonglong uVar1; - ITEM_IDS itemheld; - longlong lVar2; - float fVar8; - float fVar9; - - uVar3 = get_cur_playernum(); - cVar7 = (char)uVar3; - proc_7F09193C(); - uVar3 = get_debug_freeze_processing(); - if (uVar3 == 0) { - uVar3 = get_debug_limit_controller_input(); - if ((uVar3 == 0) || - ((uVar3 = get_debug_limit_controller_input(), uVar3 == 0x3b && (DAT_80036abc < 0)))) { - cVar5 = get_cur_controller_horz_stick_pos(cVar7); - cVar6 = get_cur_controller_vert_stick_pos(cVar7); - uVar1 = get_controller_buttons_held(cVar7,0xffff); - proc_7F091080(cVar5,cVar6,(ushort)uVar1); - } - else { - cVar5 = get_cur_controller_horz_stick_pos(cVar7); - cVar7 = get_cur_controller_vert_stick_pos(cVar7); - proc_7F091080(cVar5,cVar7,0); - } - } - else { - if (uVar3 == 1) { - uVar3 = get_debug_limit_controller_input(); - if (uVar3 == 1) { - cVar5 = get_cur_controller_horz_stick_pos(cVar7); - cVar6 = get_cur_controller_vert_stick_pos(cVar7); - uVar1 = get_controller_buttons_held(cVar7,0xffff); - removed_7F0B2D38((int)cVar5,(int)cVar6,(uint)uVar1 & 0xffff); - } - else { - cVar5 = get_cur_controller_horz_stick_pos(cVar7); - cVar7 = get_cur_controller_vert_stick_pos(cVar7); - removed_7F0B2D38((int)cVar5,(int)cVar7,0); - } - } - else { - if (uVar3 == 2) { + u32 uVar3; + char cVar7; + s32 sVar4; + s32 sVar5; + int iVar6; + ulonglong uVar1; + ITEM_IDS itemheld; + longlong lVar2; + float fVar8; + float fVar9; + + uVar3 = get_cur_playernum(); + cVar7 = (char)uVar3; + cheat_buttons_mp_related(); + uVar3 = get_debug_freeze_processing(); + if (uVar3 == 0) { uVar3 = get_debug_limit_controller_input(); - if (uVar3 == 2) { - cVar5 = get_cur_controller_horz_stick_pos(cVar7); - cVar6 = get_cur_controller_vert_stick_pos(cVar7); - uVar1 = get_controller_buttons_held(cVar7,0xffff); - possibly_reset_viewport_options_for_player(cVar5,cVar6,(ushort)uVar1); + if ((uVar3 == 0) || + ((uVar3 = get_debug_limit_controller_input(), uVar3 == 0x3b && (DAT_80036abc < 0)))) { + sVar4 = get_cur_controller_horz_stick_pos(cVar7); + sVar5 = get_cur_controller_vert_stick_pos(cVar7); + uVar3 = get_controller_buttons_held + (cVar7,R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG| + DUMMY_2|DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG + |B_BUTTON|A_BUTTON); + proc_7F091080((char)sVar4,(char)sVar5,(ushort)uVar3); } else { - cVar5 = get_cur_controller_horz_stick_pos(cVar7); - cVar7 = get_cur_controller_vert_stick_pos(cVar7); - possibly_reset_viewport_options_for_player(cVar5,cVar7,0); + sVar4 = get_cur_controller_horz_stick_pos(cVar7); + sVar5 = get_cur_controller_vert_stick_pos(cVar7); + proc_7F091080((char)sVar4,(char)sVar5,0); } - proc_7F0C2E80(); - } - } - } - fVar8 = *(float *)(pPlayer->position_data_pointer + 8) - (float)pPlayer->field_408; - fVar9 = *(float *)(pPlayer->position_data_pointer + 0x10) - (float)pPlayer->field_410; - fVar8 = sqrtf(fVar8 * fVar8 + fVar9 * fVar9); - pplayersperm->distance = pplayersperm->distance + fVar8; - iVar4 = get_scenario(); - if (iVar4 == 2) { - uVar1 = proc_7F08CF80(); - if (uVar1 == 0) { - pplayersperm->have_token_or_goldengun = '\0'; } else { - itemheld = get_item_in_hand(0); - if ((itemheld != ITEM_TOKEN) && - (draw_item_in_hand_has_more_ammo(0,ITEM_TOKEN), pPlayer->when_detonating_mines_is_0 == 2)) - { - pPlayer->when_detonating_mines_is_0 = 5; - } - pplayersperm->flag_counter = pplayersperm->flag_counter + clock_timer; - pplayersperm->have_token_or_goldengun = '\x01'; + if (uVar3 == 1) { + uVar3 = get_debug_limit_controller_input(); + if (uVar3 == 1) { + sVar4 = get_cur_controller_horz_stick_pos(cVar7); + sVar5 = get_cur_controller_vert_stick_pos(cVar7); + uVar3 = get_controller_buttons_held + (cVar7,R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG| + DUMMY_2|DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON| + Z_TRIG|B_BUTTON|A_BUTTON); + removed_7F0B2D38((int)(char)sVar4,(int)(char)sVar5,uVar3 & 0xffff); + } + else { + sVar4 = get_cur_controller_horz_stick_pos(cVar7); + sVar5 = get_cur_controller_vert_stick_pos(cVar7); + removed_7F0B2D38((int)(char)sVar4,(int)(char)sVar5,0); + } + } + else { + if (uVar3 == 2) { + uVar3 = get_debug_limit_controller_input(); + if (uVar3 == 2) { + sVar4 = get_cur_controller_horz_stick_pos(cVar7); + sVar5 = get_cur_controller_vert_stick_pos(cVar7); + uVar3 = get_controller_buttons_held + (cVar7,R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG| + L_TRIG|DUMMY_2|DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD| + START_BUTTON|Z_TRIG|B_BUTTON|A_BUTTON); + possibly_reset_viewport_options_for_player + ((char)sVar4,(char)sVar5,(ushort)uVar3); + } + else { + sVar4 = get_cur_controller_horz_stick_pos(cVar7); + sVar5 = get_cur_controller_vert_stick_pos(cVar7); + possibly_reset_viewport_options_for_player((char)sVar4,(char)sVar5,0); + } + proc_7F0C2E80(); + } + } } - } - else { - iVar4 = get_scenario(); - lVar2 = (longlong)iVar4; - if (lVar2 == 3) { - checkforgoldengun(); - if (lVar2 == 0) { - pplayersperm->have_token_or_goldengun = '\0'; - } - else { - pplayersperm->have_token_or_goldengun = '\x01'; - } + fVar8 = *(float *)(pPlayer->position_data_pointer + 8) - (float)pPlayer->field_408; + fVar9 = *(float *)(pPlayer->position_data_pointer + 0x10) - (float)pPlayer->field_410; + fVar8 = sqrtf(fVar8 * fVar8 + fVar9 * fVar9); + pPlayersPerm->distance = pPlayersPerm->distance + fVar8; + iVar6 = get_scenario(); + if (iVar6 == 2) { + uVar1 = proc_7F08CF80(); + if (uVar1 == 0) { + pPlayersPerm->have_token_or_goldengun = '\0'; + } + else { + itemheld = get_item_in_hand(0); + if ((itemheld != ITEM_TOKEN) && + (draw_item_in_hand_has_more_ammo(HAND_RIGHT,ITEM_TOKEN), + pPlayer->when_detonating_mines_is_0 == 2)) { + pPlayer->when_detonating_mines_is_0 = 5; + } + pPlayersPerm->flag_counter = pPlayersPerm->flag_counter + clock_timer; + pPlayersPerm->have_token_or_goldengun = '\x01'; + } } - } - return; + else { + iVar6 = get_scenario(); + lVar2 = (longlong)iVar6; + if (lVar2 == 3) { + checkforgoldengun(); + if (lVar2 == 0) { + pPlayersPerm->have_token_or_goldengun = '\0'; + } + else { + pPlayersPerm->have_token_or_goldengun = '\x01'; + } + } + } + return; } @@ -132866,31 +132016,31 @@ void proc_7F0BF800(void) void unload_stage_text_data(void) { - ulonglong uVar1; - undefined8 uVar2; - - if ((dword_800483A0 != 0) && (uVar1 = music_related_26(dword_800483A0), uVar1 != 0)) { - music_related_28(dword_800483A0); - } - if (stagenum != LEVELID_TITLE) { - uVar2 = get_textbank_number_for_stagenum(stagenum); - blank_text_bank((int)uVar2); - proc_7F007770(); - } - unload_loop_all_players(); - unload_loop_all_guards(); - unload_loop_all_sfx(); - unload_loop_all_objects(); - unload_something_7f007920(); - unload_removed_7f007970(); - unload_alarms_something(); - cleanupObjects(); - cleanupObjectives(); - unload_music_related(); - unload_music_related_7F007980(); - setmissionstate_to_zero(); - proc_7F0B47E0(); - return; + ulonglong uVar1; + undefined8 uVar2; + + if ((dword_800483A0 != NULL) && (uVar1 = sfxGetArg0Unk3F(dword_800483A0), uVar1 != 0)) { + sfxDeactivate((int)dword_800483A0); + } + if (stagenum != 0x5a) { + uVar2 = get_textbank_number_for_stagenum(stagenum); + blank_text_bank((int)uVar2); + proc_7F007770(); + } + cheatDisableAllCheats(); + unload_loop_all_guards(); + unload_loop_all_sfx(); + unload_loop_all_objects(); + unload_something_7f007920(); + unload_removed_7f007970(); + unload_alarms_something(); + cleanupObjects(); + cleanupObjectives(); + unload_music_related(); + unload_music_related_7F007980(); + setmissionstate_to_zero(); + proc_7F0B47E0(); + return; } @@ -132898,8 +132048,8 @@ void unload_stage_text_data(void) void set_controls_locked_flag(undefined4 flag) { - controls_locked_flag = flag; - return; + controls_locked_flag = flag; + return; } @@ -132907,7 +132057,7 @@ void set_controls_locked_flag(undefined4 flag) undefined4 get_controls_locked_flag(void) { - return controls_locked_flag; + return controls_locked_flag; } @@ -132915,7 +132065,7 @@ undefined4 get_controls_locked_flag(void) DIFFICULTY get_current_difficulty(void) { - return difficulty_0; + return difficulty_0; } @@ -132923,8 +132073,8 @@ DIFFICULTY get_current_difficulty(void) void set_difficulty(undefined4 param_1) { - difficulty_0 = param_1; - return; + difficulty_0 = param_1; + return; } @@ -132932,8 +132082,8 @@ void set_difficulty(undefined4 param_1) void set_mp_time(undefined4 time) { - mp_time = time; - return; + mp_time = time; + return; } @@ -132941,8 +132091,8 @@ void set_mp_time(undefined4 time) void set_mp_point(undefined4 point) { - mp_point = point; - return; + mp_point = point; + return; } @@ -132950,7 +132100,7 @@ void set_mp_point(undefined4 point) f32 get_cur_mp_sec(void) { - return (f32)cur_mp_sec; + return (f32)cur_mp_sec; } @@ -132958,7 +132108,7 @@ f32 get_cur_mp_sec(void) f32 get_cur_mp_min(void) { - return cur_mp_min; + return cur_mp_min; } @@ -132966,7 +132116,7 @@ f32 get_cur_mp_min(void) f32 get_stage_time_sec(void) { - return stage_time_sec; + return stage_time_sec; } @@ -132974,7 +132124,7 @@ f32 get_stage_time_sec(void) f32 get_poweron_time_sec(void) { - return poweron_time_sec; + return poweron_time_sec; } @@ -132982,10 +132132,10 @@ f32 get_poweron_time_sec(void) void clear_ramrom_block_buffer_heading_ptrs(void) { - ptr_active_demofile = 0; - ramrom_demo_related_0 = 0; - ramrom_demo_related_1 = 0; - return; + ptr_active_demofile = 0; + ramrom_demo_related_0 = 0; + ramrom_demo_related_1 = 0; + return; } @@ -132993,7 +132143,7 @@ void clear_ramrom_block_buffer_heading_ptrs(void) undefined4 get_is_ramrom_flag(void) { - return is_ramrom_flag; + return is_ramrom_flag; } @@ -133001,7 +132151,7 @@ undefined4 get_is_ramrom_flag(void) u32 get_recording_ramrom_flag(void) { - return recording_ramrom_flag; + return recording_ramrom_flag; } @@ -133009,7 +132159,7 @@ u32 get_recording_ramrom_flag(void) undefined4 interface_menu0B_runstage(void) { - return ramrom_demo_related_4; + return ramrom_demo_related_4; } @@ -133017,19 +132167,19 @@ undefined4 interface_menu0B_runstage(void) void finalize_ramrom_on_hw(void) { - undefined *source; - undefined auStack25 [25]; - - source = (undefined *)(((uint)auStack25 | 0xf) ^ 0xf); - *source = 0; - source[1] = 0; - romWrite(source,address_demo_loaded,0x10); - address_demo_loaded = (void *)((int)address_demo_loaded + 4); - ptr_active_demofile = (void *)romCopyAligned(&ramrom_data_target,(void *)0xf00000,0xf0); - *(int *)((int)ptr_active_demofile + 0x7c) = global_timer - clock_timer; - *(int *)((int)ptr_active_demofile + 0x80) = (int)address_demo_loaded + -0xf00000; - romWrite(ptr_active_demofile,(void *)0xf00000,0xf0); - return; + undefined *source; + undefined auStack25 [25]; + + source = (undefined *)(((uint)auStack25 | 0xf) ^ 0xf); + *source = 0; + source[1] = 0; + romWrite(source,address_demo_loaded,0x10); + address_demo_loaded = (void *)((int)address_demo_loaded + 4); + ptr_active_demofile = (void *)romCopyAligned(&ramrom_data_target,(void *)0xf00000,0xf0); + *(int *)((int)ptr_active_demofile + 0x7c) = global_timer - clock_timer; + *(int *)((int)ptr_active_demofile + 0x80) = (int)address_demo_loaded + -0xf00000; + romWrite(ptr_active_demofile,(void *)0xf00000,0xf0); + return; } @@ -133037,21 +132187,21 @@ void finalize_ramrom_on_hw(void) void save_ramrom_to_devtool(void) { - int iVar1; - int iVar2; - undefined4 uStack264; - char acStack260 [260]; - - iVar2 = 1; - while( true ) { + int iVar1; + int iVar2; + undefined4 uStack264; + char acStack260 [260]; + + iVar2 = 1; + while( true ) { + sprintf(acStack260,"replay/demo.%d",iVar2); + iVar1 = check_file_found_on_indy(acStack260,&uStack264); + if (iVar1 == 0) break; + iVar2 += 1; + } sprintf(acStack260,"replay/demo.%d",iVar2); - iVar1 = check_file_found_on_indy(acStack260,&uStack264); - if (iVar1 == 0) break; - iVar2 += 1; - } - sprintf(acStack260,"replay/demo.%d",iVar2); - check_file_exported(acStack260,0xf00000,*(undefined4 *)(ptr_active_demofile + 0x80)); - return; + check_file_exported(acStack260,0xf00000,*(undefined4 *)(ptr_active_demofile + 0x80)); + return; } @@ -133059,15 +132209,15 @@ void save_ramrom_to_devtool(void) void load_ramrom_from_devtool(void) { - int iVar1; - undefined4 uStack4; - - iVar1 = check_file_found_on_indy("replay/demo.load",&uStack4); - if (iVar1 != 0) { - indy_load_ramrom_file("replay/demo.load",0xf00000,uStack4); - ptr_active_demofile = romCopyAligned(&ramrom_data_target,(void *)0xf00000,0xe8); - } - return; + int iVar1; + s32 size; + + iVar1 = check_file_found_on_indy("replay/demo.load",&size); + if (iVar1 != 0) { + indy_load_ramrom_file("replay/demo.load",(u8 *)0xf00000,size); + ptr_active_demofile = romCopyAligned(&ramrom_data_target,(void *)0xf00000,0xe8); + } + return; } @@ -133075,63 +132225,63 @@ void load_ramrom_from_devtool(void) void record_player_input_as_packet(int param_1,int param_2,int param_3) { - int iVar1; - char *pcVar2; - ushort *puVar3; - int iVar4; - int iVar5; - char cVar6; - int iVar7; - - iVar1 = *(int *)(ptr_active_demofile + 0x18); - iVar7 = 0; - cVar6 = '\0'; - ramrom_demo_related_0 = &DAT_8008c470; - ramrom_demo_related_1 = &DAT_8008c474; - if (param_2 != param_3) { - iVar5 = (param_2 + 1) % 0x14; - if (false) { - trap(0x1c00); + int iVar1; + char *pcVar2; + ushort *puVar3; + int iVar4; + int iVar5; + char cVar6; + int iVar7; + + iVar1 = *(int *)(ptr_active_demofile + 0x18); + iVar7 = 0; + cVar6 = '\0'; + ramrom_demo_related_0 = &DAT_8008c470; + ramrom_demo_related_1 = &DAT_8008c474; + if (param_2 != param_3) { + iVar5 = (param_2 + 1) % 0x14; + if (false) { + trap(0x1c00); + } + if ((false) && (param_2 + 1 == -0x80000000)) { + trap(0x1800); + } + while( true ) { + iVar4 = 0; + if (0 < iVar1) { + puVar3 = (ushort *)(param_1 + iVar5 * 0x18); + do { + pcVar2 = ramrom_demo_related_1 + iVar4 * 4 + iVar7 * iVar1 * 4; + *pcVar2 = *(char *)(puVar3 + 1); + iVar4 += 1; + pcVar2[1] = *(char *)((int)puVar3 + 3); + pcVar2[2] = (char)*puVar3; + pcVar2[3] = (char)((uint)*puVar3 >> 8); + cVar6 += *pcVar2 + pcVar2[1] + pcVar2[2] + pcVar2[3]; + puVar3 = puVar3 + 3; + } while (iVar4 != iVar1); + } + iVar7 += 1; + if (iVar5 == param_3) break; + iVar4 = iVar5 + 1; + iVar5 = iVar4 % 0x14; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + } } - if ((false) && (param_2 + 1 == -0x80000000)) { - trap(0x1800); - } - while( true ) { - iVar4 = 0; - if (0 < iVar1) { - puVar3 = (ushort *)(param_1 + iVar5 * 0x18); - do { - pcVar2 = ramrom_demo_related_1 + iVar4 * 4 + iVar7 * iVar1 * 4; - *pcVar2 = *(char *)(puVar3 + 1); - iVar4 += 1; - pcVar2[1] = *(char *)((int)puVar3 + 3); - pcVar2[2] = (char)*puVar3; - pcVar2[3] = (char)((uint)*puVar3 >> 8); - cVar6 += *pcVar2 + pcVar2[1] + pcVar2[2] + pcVar2[3]; - puVar3 = puVar3 + 3; - } while (iVar4 != iVar1); - } - iVar7 += 1; - if (iVar5 == param_3) break; - iVar4 = iVar5 + 1; - iVar5 = iVar4 % 0x14; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - } - } - ramrom_demo_related_0[1] = (char)iVar7; - *ramrom_demo_related_0 = (char)dword_80048498; - ramrom_demo_related_0[2] = (char)randseed._4_4_; - iVar7 = iVar1 * 4 * iVar7; - ramrom_demo_related_0[3] = - cVar6 + *ramrom_demo_related_0 + ramrom_demo_related_0[1] + ramrom_demo_related_0[2]; - romWrite(ramrom_demo_related_0,address_demo_loaded,(iVar7 + 0x13U | 0xf) ^ 0xf); - address_demo_loaded = (void *)((int)address_demo_loaded + ((iVar7 + 5U | 1) ^ 1)); - return; + ramrom_demo_related_0[1] = (char)iVar7; + *ramrom_demo_related_0 = (char)speedgraphframes; + ramrom_demo_related_0[2] = (char)randseed._4_4_; + iVar7 = iVar1 * 4 * iVar7; + ramrom_demo_related_0[3] = + cVar6 + *ramrom_demo_related_0 + ramrom_demo_related_0[1] + ramrom_demo_related_0[2]; + romWrite(ramrom_demo_related_0,address_demo_loaded,(iVar7 + 0x13U | 0xf) ^ 0xf); + address_demo_loaded = (void *)((int)address_demo_loaded + ((iVar7 + 5U | 1) ^ 1)); + return; } @@ -133139,72 +132289,76 @@ void record_player_input_as_packet(int param_1,int param_2,int param_3) int ramrom_replay_handler(int param_1,int param_2) { - byte bVar1; - char cVar2; - int iVar3; - char *pcVar4; - undefined2 *puVar5; - ulonglong uVar6; - char cVar7; - int iVar8; - - bVar1 = ramrom_demo_related_0[1]; - cVar7 = '\0'; - uVar6 = 0; - iVar3 = *(int *)(ptr_active_demofile + 0x18); - if (bVar1 != 0) { - iVar8 = param_2 + 1; - while( true ) { - param_2 = iVar8 % 0x14; - if (false) { - trap(0x1c00); - } - if ((false) && (iVar8 == -0x80000000)) { - trap(0x1800); - } - puVar5 = (undefined2 *)(param_1 + param_2 * 0x18); - iVar8 = 0; - do { - if (iVar8 < iVar3) { - pcVar4 = (char *)((int)uVar6 * iVar3 * 4 + ramrom_demo_related_1 + iVar8 * 4); - *(char *)(puVar5 + 1) = *pcVar4; - *(char *)((int)puVar5 + 3) = pcVar4[1]; - *puVar5 = CONCAT11(pcVar4[3],pcVar4[2]); - cVar7 += *pcVar4 + pcVar4[1] + pcVar4[2] + pcVar4[3]; + byte bVar1; + char cVar2; + int iVar3; + char *pcVar4; + u32 uVar5; + undefined2 *puVar6; + ulonglong uVar7; + char cVar8; + int iVar9; + + bVar1 = ramrom_demo_related_0[1]; + cVar8 = '\0'; + uVar7 = 0; + iVar3 = *(int *)(ptr_active_demofile + 0x18); + if (bVar1 != 0) { + iVar9 = param_2 + 1; + while( true ) { + param_2 = iVar9 % 0x14; + if (false) { + trap(0x1c00); + } + if ((false) && (iVar9 == -0x80000000)) { + trap(0x1800); + } + puVar6 = (undefined2 *)(param_1 + param_2 * 0x18); + iVar9 = 0; + do { + if (iVar9 < iVar3) { + pcVar4 = (char *)((int)uVar7 * iVar3 * 4 + ramrom_demo_related_1 + iVar9 * 4); + *(char *)(puVar6 + 1) = *pcVar4; + *(char *)((int)puVar6 + 3) = pcVar4[1]; + *puVar6 = CONCAT11(pcVar4[3],pcVar4[2]); + cVar8 += *pcVar4 + pcVar4[1] + pcVar4[2] + pcVar4[3]; + } + else { + *(undefined *)(puVar6 + 1) = 0; + *(undefined *)((int)puVar6 + 3) = 0; + *puVar6 = 0; + } + iVar9 += 1; + puVar6 = puVar6 + 3; + } while (iVar9 != 4); + uVar7 = SEXT48((int)uVar7 + 1); + if (uVar7 == (ulonglong)bVar1) break; + iVar9 = param_2 + 1; } - else { - *(undefined *)(puVar5 + 1) = 0; - *(undefined *)((int)puVar5 + 3) = 0; - *puVar5 = 0; - } - iVar8 += 1; - puVar5 = puVar5 + 3; - } while (iVar8 != 4); - uVar6 = SEXT48((int)uVar6 + 1); - if (uVar6 == (ulonglong)bVar1) break; - iVar8 = param_2 + 1; } - } - bVar1 = ramrom_demo_related_0[2]; - if (((longlong)randseed._4_4_ & 0xffU) == (ulonglong)bVar1) { - cVar2 = *ramrom_demo_related_0; - } - else { - check_set_cameramode_to_A(); bVar1 = ramrom_demo_related_0[2]; - cVar2 = *ramrom_demo_related_0; - } - if ((byte)(cVar7 + cVar2 + ramrom_demo_related_0[1] + bVar1) != ramrom_demo_related_0[3]) { - check_set_cameramode_to_A(); - } - controller_7000C930(0); - uVar6 = get_controller_buttons_pressed('\0',0xffff); - if (uVar6 != 0) { - check_set_cameramode_to_A(); - prev_keypresses = 1; - } - controller_7000C930(1); - return param_2; + if (((longlong)randseed._4_4_ & 0xffU) == (ulonglong)bVar1) { + cVar2 = *ramrom_demo_related_0; + } + else { + check_set_cameramode_to_A(); + bVar1 = ramrom_demo_related_0[2]; + cVar2 = *ramrom_demo_related_0; + } + if ((byte)(cVar8 + cVar2 + ramrom_demo_related_0[1] + bVar1) != ramrom_demo_related_0[3]) { + check_set_cameramode_to_A(); + } + controller_7000C930(0); + uVar5 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if (uVar5 != 0) { + check_set_cameramode_to_A(); + prev_keypresses = 1; + } + controller_7000C930(1); + return param_2; } @@ -133212,31 +132366,31 @@ int ramrom_replay_handler(int param_1,int param_2) void iterate_ramrom_entries_handle_camera_out(void) { - byte bVar1; - int iVar2; - - ramrom_demo_related_0 = (byte *)romCopyAligned(&DAT_8008c468,address_demo_loaded,4); - bVar1 = ramrom_demo_related_0[1]; - if (bVar1 != 0) { - ramrom_demo_related_1 = - romCopyAligned(&DAT_8008c48e,(void *)((int)address_demo_loaded + 4), - *(int *)(ptr_active_demofile + 0x18) * 4 * (uint)bVar1); + byte bVar1; + int iVar2; + + ramrom_demo_related_0 = (byte *)romCopyAligned(&DAT_8008c468,address_demo_loaded,4); bVar1 = ramrom_demo_related_0[1]; - } - if ((bVar1 == 0) && (*ramrom_demo_related_0 == 0)) { - check_set_cameramode_to_A(); - } - else { - address_demo_loaded = - (void *)((int)address_demo_loaded + - ((*(int *)(ptr_active_demofile + 0x18) * 4 * (uint)bVar1 + 5 | 1) ^ 1)); - } - proc_7F0C0AA0((uint)*ramrom_demo_related_0); - iVar2 = *(int *)(ptr_active_demofile + 0x7c) + -0x3c; - if ((iVar2 <= global_timer) && (global_timer - clock_timer < iVar2)) { - check_set_cameramode_to_A(); - } - return; + if (bVar1 != 0) { + ramrom_demo_related_1 = + romCopyAligned(&DAT_8008c48e,(void *)((int)address_demo_loaded + 4), + *(int *)(ptr_active_demofile + 0x18) * 4 * (uint)bVar1); + bVar1 = ramrom_demo_related_0[1]; + } + if ((bVar1 == 0) && (*ramrom_demo_related_0 == 0)) { + check_set_cameramode_to_A(); + } + else { + address_demo_loaded = + (void *)((int)address_demo_loaded + + ((*(int *)(ptr_active_demofile + 0x18) * 4 * (uint)bVar1 + 5 | 1) ^ 1)); + } + proc_7F0C0AA0((uint)*ramrom_demo_related_0); + iVar2 = *(int *)(ptr_active_demofile + 0x7c) + -0x3c; + if ((iVar2 <= global_timer) && (global_timer - clock_timer < iVar2)) { + check_set_cameramode_to_A(); + } + return; } @@ -133244,45 +132398,45 @@ void iterate_ramrom_entries_handle_camera_out(void) void copy_current_ingame_registers_before_ramrom_playback(ramromfilestructure *param_1) { - undefined4 uVar1; - u32 uVar3; - ulonglong uVar2; - - uVar1 = randseed._0_4_; - *(undefined4 *)((int)¶m_1->randomseed + 4) = randseed._4_4_; - *(undefined4 *)¶m_1->randomseed = uVar1; - uVar1 = randomseed._0_4_; - *(undefined4 *)((int)¶m_1->randomizer + 4) = randomseed._4_4_; - *(undefined4 *)¶m_1->randomizer = uVar1; - param_1->mode = gamemode; - param_1->numplayers = selected_num_players; - param_1->scenario = scenario; - param_1->mpstage_sel = MP_stage_selected; - param_1->gamelength = game_length; - uVar3 = get_mp_weapon_set(); - param_1->mp_weapon_set = uVar3; - param_1->p1_mp_char = player_1_char; - param_1->p2_mp_char = player_2_char; - param_1->p3_mp_char = player_3_char; - param_1->p4_mp_char = player_4_char; - param_1->p1_handi = handicap_player1; - param_1->p2_handi = handicap_player2; - param_1->p3_handi = handicap_player3; - param_1->p4_handi = handicap_player4; - param_1->p1_contstyle = controlstyle_player[0]; - param_1->p2_contstyle = controlstyle_player[1]; - param_1->p3_contstyle = controlstyle_player[2]; - param_1->p4_contstyle = controlstyle_player[3]; - param_1->aim_option = aim_sight_adjustment; - uVar2 = get_players_team_or_scenario_item_flag(0); - param_1->p1_flags = (u32)uVar2; - uVar2 = get_players_team_or_scenario_item_flag(1); - param_1->p2_flags = (u32)uVar2; - uVar2 = get_players_team_or_scenario_item_flag(2); - param_1->p3_flags = (u32)uVar2; - uVar2 = get_players_team_or_scenario_item_flag(3); - param_1->p4_flags = (u32)uVar2; - return; + undefined4 uVar1; + u32 uVar3; + ulonglong uVar2; + + uVar1 = randseed._0_4_; + *(undefined4 *)((int)¶m_1->randomseed + 4) = randseed._4_4_; + *(undefined4 *)¶m_1->randomseed = uVar1; + uVar1 = randomseed._0_4_; + *(undefined4 *)((int)¶m_1->randomizer + 4) = randomseed._4_4_; + *(undefined4 *)¶m_1->randomizer = uVar1; + param_1->mode = gamemode; + param_1->numplayers = selected_num_players; + param_1->scenario = scenario; + param_1->mpstage_sel = MP_stage_selected; + param_1->gamelength = game_length; + uVar3 = get_mp_weapon_set(); + param_1->mp_weapon_set = uVar3; + *(s32 **)¶m_1->p1_mp_char = player_1_char[0]; + *(s32 **)¶m_1->p2_mp_char = player_1_char[1]; + *(s32 **)¶m_1->p3_mp_char = player_1_char[2]; + *(s32 **)¶m_1->p4_mp_char = player_1_char[3]; + param_1->p1_handi = handicap_player1[0]; + param_1->p2_handi = handicap_player1[1]; + param_1->p3_handi = handicap_player1[2]; + param_1->p4_handi = handicap_player1[3]; + param_1->p1_contstyle = controlstyle_player[0]; + param_1->p2_contstyle = controlstyle_player[1]; + param_1->p3_contstyle = controlstyle_player[2]; + param_1->p4_contstyle = controlstyle_player[3]; + param_1->aim_option = aim_sight_adjustment; + uVar2 = get_players_team_or_scenario_item_flag(0); + param_1->p1_flags = (u32)uVar2; + uVar2 = get_players_team_or_scenario_item_flag(1); + param_1->p2_flags = (u32)uVar2; + uVar2 = get_players_team_or_scenario_item_flag(2); + param_1->p3_flags = (u32)uVar2; + uVar2 = get_players_team_or_scenario_item_flag(3); + param_1->p4_flags = (u32)uVar2; + return; } @@ -133290,34 +132444,34 @@ void copy_current_ingame_registers_before_ramrom_playback(ramromfilestructure *p void copy_recorded_ramrom_registers_to_proper_place_ingame(ramromfilestructure *demo) { - randseed._0_4_ = *(undefined4 *)&demo->randomseed; - randseed._4_4_ = *(undefined4 *)((int)&demo->randomseed + 4); - randomseed._0_4_ = *(undefined4 *)&demo->randomizer; - randomseed._4_4_ = *(undefined4 *)((int)&demo->randomizer + 4); - gamemode = demo->mode; - selected_num_players = demo->numplayers; - scenario = demo->scenario; - MP_stage_selected = demo->mpstage_sel; - game_length = demo->gamelength; - set_mp_weapon_set(demo->mp_weapon_set); - player_1_char = demo->p1_mp_char; - player_2_char = demo->p2_mp_char; - player_3_char = demo->p3_mp_char; - player_4_char = demo->p4_mp_char; - handicap_player1 = demo->p1_handi; - handicap_player2 = demo->p2_handi; - handicap_player3 = demo->p3_handi; - handicap_player4 = demo->p4_handi; - controlstyle_player[0] = demo->p1_contstyle; - controlstyle_player[1] = demo->p2_contstyle; - controlstyle_player[2] = demo->p3_contstyle; - controlstyle_player[3] = demo->p4_contstyle; - aim_sight_adjustment = demo->aim_option; - set_players_team_or_scenario_item_flag(0,(char)demo->p1_flags); - set_players_team_or_scenario_item_flag(1,(char)demo->p2_flags); - set_players_team_or_scenario_item_flag(2,(char)demo->p3_flags); - set_players_team_or_scenario_item_flag(3,(char)demo->p4_flags); - return; + randseed._0_4_ = *(undefined4 *)&demo->randomseed; + randseed._4_4_ = *(undefined4 *)((int)&demo->randomseed + 4); + randomseed._0_4_ = *(undefined4 *)&demo->randomizer; + randomseed._4_4_ = *(undefined4 *)((int)&demo->randomizer + 4); + gamemode = demo->mode; + selected_num_players = demo->numplayers; + scenario = demo->scenario; + MP_stage_selected = demo->mpstage_sel; + game_length = demo->gamelength; + set_mp_weapon_set(demo->mp_weapon_set); + player_1_char[0] = (s32 *)demo->p1_mp_char; + player_1_char[1] = (s32 *)demo->p2_mp_char; + player_1_char[2] = (s32 *)demo->p3_mp_char; + player_1_char[3] = (s32 *)demo->p4_mp_char; + handicap_player1[0] = demo->p1_handi; + handicap_player1[1] = demo->p2_handi; + handicap_player1[2] = demo->p3_handi; + handicap_player1[3] = demo->p4_handi; + controlstyle_player[0] = demo->p1_contstyle; + controlstyle_player[1] = demo->p2_contstyle; + controlstyle_player[2] = demo->p3_contstyle; + controlstyle_player[3] = demo->p4_contstyle; + aim_sight_adjustment = demo->aim_option; + set_players_team_or_scenario_item_flag(0,(char)demo->p1_flags); + set_players_team_or_scenario_item_flag(1,(char)demo->p2_flags); + set_players_team_or_scenario_item_flag(2,(char)demo->p3_flags); + set_players_team_or_scenario_item_flag(3,(char)demo->p4_flags); + return; } @@ -133325,42 +132479,43 @@ void copy_recorded_ramrom_registers_to_proper_place_ingame(ramromfilestructure * void test_if_replaying_or_recording_demos_this_stage_load(LEVELID param_1,DIFFICULTY param_2) { - u32 uVar1; - - if (flag_to_record_ramrom == 0) { - if (ramrom_demo_related_4 != 0) { - DAT_8008c5f8 = 0; - set_selected_difficulty(ptr_active_demofile->difficulty); - set_solo_and_ptr_briefing((undefined *)ptr_active_demofile->stagenum); - proc_7F01D644((undefined4 *)&ptr_active_demofile->savefile); - copy_current_ingame_registers_before_ramrom_playback(&ramromsettingsbackup); - copy_recorded_ramrom_registers_to_proper_place_ingame(ptr_active_demofile); - is_ramrom_flag = 1; - ramrom_demo_related_3 = 1; - set_disable_all_rumble_and_something(ramrom_replay_handler,ptr_active_demofile->size_cmds); - controller_7000C930(1); - ramrom_demo_related_4 = 0; + u64 uVar1; + + if (flag_to_record_ramrom == 0) { + if (ramrom_demo_related_4 != 0) { + DAT_8008c5f8 = 0; + set_selected_difficulty(ptr_active_demofile->difficulty); + set_solo_and_ptr_briefing(ptr_active_demofile->stagenum); + proc_7F01D644((undefined4 *)&ptr_active_demofile->savefile); + copy_current_ingame_registers_before_ramrom_playback(&ramromsettingsbackup); + copy_recorded_ramrom_registers_to_proper_place_ingame(ptr_active_demofile); + is_ramrom_flag = 1; + ramrom_demo_related_3 = 1; + set_disable_all_rumble_and_something + (ramrom_replay_handler,ptr_active_demofile->size_cmds); + controller_7000C930(1); + ramrom_demo_related_4 = 0; + } } - } - else { - ptr_active_demofile = &ramrom_data_target; - DAT_8008c5f8 = 0; - ramrom_data_target.stagenum = param_1; - ramrom_data_target.difficulty = param_2; - uVar1 = get_attached_controller_count(); - ptr_active_demofile->size_cmds = uVar1; - ptr_active_demofile->slotnum = record_slot_num; - proc_7F01D61C((undefined4 *)&ptr_active_demofile->savefile); - copy_current_ingame_registers_before_ramrom_playback(ptr_active_demofile); - recording_ramrom_flag = 1; - ramrom_demo_related_6 = 1; - set_ptr_tlb_ramrom_record(record_player_input_as_packet); - address_demo_loaded = 0xf00000; - romWrite(ptr_active_demofile,(void *)0xf00000,0xf0); - address_demo_loaded += 0xe8; - flag_to_record_ramrom = 0; - } - return; + else { + ptr_active_demofile = &ramrom_data_target; + DAT_8008c5f8 = 0; + ramrom_data_target.stagenum = param_1; + ramrom_data_target.difficulty = param_2; + uVar1 = get_attached_controller_count(); + ptr_active_demofile->size_cmds = (u32)uVar1; + ptr_active_demofile->slotnum = record_slot_num; + proc_7F01D61C((undefined4 *)&ptr_active_demofile->savefile); + copy_current_ingame_registers_before_ramrom_playback(ptr_active_demofile); + recording_ramrom_flag = 1; + ramrom_demo_related_6 = 1; + set_ptr_tlb_ramrom_record(record_player_input_as_packet); + address_demo_loaded = 0xf00000; + romWrite(ptr_active_demofile,(void *)0xf00000,0xf0); + address_demo_loaded += 0xe8; + flag_to_record_ramrom = 0; + } + return; } @@ -133368,9 +132523,9 @@ void test_if_replaying_or_recording_demos_this_stage_load(LEVELID param_1,DIFFIC void record_next_movie_to_slot(undefined4 slotnum) { - flag_to_record_ramrom = 1; - record_slot_num = slotnum; - return; + flag_to_record_ramrom = 1; + record_slot_num = slotnum; + return; } @@ -133378,13 +132533,13 @@ void record_next_movie_to_slot(undefined4 slotnum) void stop_recording_ramrom(void) { - if (ramrom_demo_related_6 != 0) { - finalize_ramrom_on_hw(); - set_ptr_tlb_ramrom_record(0); - ramrom_demo_related_6 = 0; - recording_ramrom_flag = 0; - } - return; + if (ramrom_demo_related_6 != 0) { + finalize_ramrom_on_hw(); + set_ptr_tlb_ramrom_record(0); + ramrom_demo_related_6 = 0; + recording_ramrom_flag = 0; + } + return; } @@ -133392,14 +132547,14 @@ void stop_recording_ramrom(void) void replay_recorded_ramrom_at_address(uint param_1) { - address_demo_loaded = param_1; - ptr_active_demofile = romCopyAligned(&ramrom_data_target,(void *)param_1,0xe8); - address_demo_loaded += 0xe8; - ramrom_demo_related_4 = 1; - set_solo_and_ptr_briefing(*(undefined **)(ptr_active_demofile + 0x10)); - set_selected_difficulty(*(DIFFICULTY *)(ptr_active_demofile + 0x14)); - set_menu_to_mode(0xb,1); - return; + address_demo_loaded = param_1; + ptr_active_demofile = romCopyAligned(&ramrom_data_target,(void *)param_1,0xe8); + address_demo_loaded += 0xe8; + ramrom_demo_related_4 = 1; + set_solo_and_ptr_briefing(*(LEVELID *)(ptr_active_demofile + 0x10)); + set_selected_difficulty(*(DIFFICULTY *)(ptr_active_demofile + 0x14)); + set_menu_to_mode(MENU_RUN_STAGE,1); + return; } @@ -133407,8 +132562,8 @@ void replay_recorded_ramrom_at_address(uint param_1) void replay_recorded_ramrom_from_indy(void) { - replay_recorded_ramrom_at_address(0xf00000); - return; + replay_recorded_ramrom_at_address(0xf00000); + return; } @@ -133416,13 +132571,13 @@ void replay_recorded_ramrom_from_indy(void) void check_set_cameramode_to_A(void) { - int iVar1; - - iVar1 = get_camera_mode(); - if (iVar1 != 10) { - set_camera_mode(10); - } - return; + int iVar1; + + iVar1 = get_camera_mode(); + if (iVar1 != 10) { + set_camera_mode(UNK10_CAM); + } + return; } @@ -133430,19 +132585,19 @@ void check_set_cameramode_to_A(void) void stop_demo_playback(void) { - if (ramrom_demo_related_6 == 0) { - if (ramrom_demo_related_3 != 0) { - copy_recorded_ramrom_registers_to_proper_place_ingame(&ramromsettingsbackup); - set_disable_all_rumble_and_something(0,0xffffffff); - controller_7000C930(0); - ramrom_demo_related_3 = 0; - is_ramrom_flag = 0; + if (ramrom_demo_related_6 == 0) { + if (ramrom_demo_related_3 != 0) { + copy_recorded_ramrom_registers_to_proper_place_ingame(&ramromsettingsbackup); + set_disable_all_rumble_and_something(0,0xffffffff); + controller_7000C930(0); + ramrom_demo_related_3 = 0; + is_ramrom_flag = 0; + } } - } - else { - stop_recording_ramrom(); - } - return; + else { + stop_recording_ramrom(); + } + return; } @@ -133450,29 +132605,29 @@ void stop_demo_playback(void) void select_ramrom_to_play(void) { - u32 uVar1; - ramrom_struct *prVar2; - uint uVar3; - int iVar4; - - uVar1 = check_egypt_completed_any_folder(); - uVar3 = 0; - if ((ramrom_table.dam1.ROMaddress != 0) && (ramrom_table.dam1.is_locked <= (int)uVar1)) { - iVar4 = ramrom_table.dam2.ROMaddress; - prVar2 = &ramrom_table; - while( true ) { - uVar3 += 1; - if ((iVar4 == 0) || ((int)uVar1 < (prVar2->dam2).is_locked)) break; - iVar4 = (prVar2->facility1).ROMaddress; - prVar2 = (ramrom_struct *)&prVar2->dam2; + u32 uVar1; + ramrom_struct *prVar2; + uint uVar3; + int iVar4; + + uVar1 = check_egypt_completed_any_folder(); + uVar3 = 0; + if ((ramrom_table.dam1.ROMaddress != 0) && (ramrom_table.dam1.is_locked <= (int)uVar1)) { + iVar4 = ramrom_table.dam2.ROMaddress; + prVar2 = &ramrom_table; + while( true ) { + uVar3 += 1; + if ((iVar4 == 0) || ((int)uVar1 < (prVar2->dam2).is_locked)) break; + iVar4 = (prVar2->facility1).ROMaddress; + prVar2 = (ramrom_struct *)&prVar2->dam2; + } } - } - uVar1 = get_random_value(); - if (uVar3 == 0) { - trap(0x1c00); - } - replay_recorded_ramrom_at_address((&ramrom_table.dam1)[uVar1 % uVar3].ROMaddress); - return; + uVar1 = get_random_value(); + if (uVar3 == 0) { + trap(0x1c00); + } + replay_recorded_ramrom_at_address((&ramrom_table.dam1)[uVar1 % uVar3].ROMaddress); + return; } @@ -133483,18 +132638,18 @@ void select_ramrom_to_play(void) undefined4 check_ramrom_flags(void) { - int iVar1; - u32 uVar2; - undefined4 uVar3; - - iVar1 = get_is_ramrom_flag(); - if ((iVar1 == 0) && (uVar2 = get_recording_ramrom_flag(), uVar2 == 0)) { - uVar3 = 0; - } - else { - uVar3 = *(undefined4 *)(ptr_active_demofile + 0x88); - } - return uVar3; + int iVar1; + u32 uVar2; + undefined4 uVar3; + + iVar1 = get_is_ramrom_flag(); + if ((iVar1 == 0) && (uVar2 = get_recording_ramrom_flag(), uVar2 == 0)) { + uVar3 = 0; + } + else { + uVar3 = *(undefined4 *)(ptr_active_demofile + 0x88); + } + return uVar3; } @@ -133502,9 +132657,9 @@ undefined4 check_ramrom_flags(void) void store_osgetcount(void) { - copy_of_osgetcount_value_0 = osGetCount(); - copy_of_osgetcount_value_1 = copy_of_osgetcount_value_0; - return; + copy_of_osgetcount_value_0 = osGetCount(); + copy_of_osgetcount_value_1 = copy_of_osgetcount_value_0; + return; } @@ -133512,24 +132667,24 @@ void store_osgetcount(void) void proc_7F0C0AA0(int param_1) { - uint uVar1; - uint uVar2; - - copy_of_osgetcount_value_0 = copy_of_osgetcount_value_1; - copy_of_osgetcount_value_1 = osGetCount(); - uVar2 = DAT_80048494 + param_1; - uVar1 = uVar2; - if ((int)uVar2 < 0) { - uVar1 = uVar2 + 1; - } - DAT_800484a8 = ((int)uVar1 >> 1) - DAT_800484a0; - dword_80048490 = DAT_80048494; - DAT_80048494 = uVar2; - dword_80048498 = param_1; - DAT_8004849c = DAT_800484a0; - DAT_800484a0 = (int)uVar1 >> 1; - DAT_800484a4 = uVar2 & 1; - return; + uint uVar1; + uint uVar2; + + copy_of_osgetcount_value_0 = copy_of_osgetcount_value_1; + copy_of_osgetcount_value_1 = osGetCount(); + uVar2 = DAT_80048494 + param_1; + uVar1 = uVar2; + if ((int)uVar2 < 0) { + uVar1 = uVar2 + 1; + } + DAT_800484a8 = ((int)uVar1 >> 1) - DAT_800484a0; + dword_80048490 = DAT_80048494; + DAT_80048494 = uVar2; + speedgraphframes = param_1; + DAT_8004849c = DAT_800484a0; + DAT_800484a0 = (int)uVar1 >> 1; + DAT_800484a4 = uVar2 & 1; + return; } @@ -133537,19 +132692,19 @@ void proc_7F0C0AA0(int param_1) void proc_7F0C0B4C(void) { - uint uVar1; - u32 uVar2; - - do { - uVar2 = osGetCount(); - uVar1 = ((uVar2 - copy_of_osgetcount_value_1) + 0x5eb61) / 0xbd6c3; - if (false) { - trap(0x1c00); - } - } while (uVar1 < dword_800484B4); - dword_800484B4 = 1; - proc_7F0C0AA0(uVar1); - return; + uint uVar1; + u32 uVar2; + + do { + uVar2 = osGetCount(); + uVar1 = ((uVar2 - copy_of_osgetcount_value_1) + 0x5eb61) / 0xbd6c3; + if (false) { + trap(0x1c00); + } + } while (uVar1 < dword_800484B4); + dword_800484B4 = 1; + proc_7F0C0AA0(uVar1); + return; } @@ -133557,8 +132712,8 @@ void proc_7F0C0B4C(void) void proc_7F0C0BE4(undefined4 param_1) { - dword_800484B4 = param_1; - return; + dword_800484B4 = param_1; + return; } @@ -133566,8 +132721,8 @@ void proc_7F0C0BE4(undefined4 param_1) void proc_7F0C0BF0(void) { - proc_7F0A9358(); - return; + proc_7F0A9358(); + return; } @@ -133575,8 +132730,8 @@ void proc_7F0C0BF0(void) void proc_7F0C0C10(void) { - proc_7F0A9180(); - return; + call_sfx_c_700091C8(); + return; } @@ -133584,7 +132739,7 @@ void proc_7F0C0C10(void) undefined4 get_mission_state(void) { - return mission_state; + return mission_state; } @@ -133592,93 +132747,93 @@ undefined4 get_mission_state(void) void set_missionstate(ulonglong param_1) { - int iVar1; - - iVar1 = (int)param_1; - switch(mission_state) { - case 0: - if (param_1 < 7) { - mission_state = iVar1; + int iVar1; + + iVar1 = (int)param_1; + switch(mission_state) { + case 0: + if (param_1 < 7) { + mission_state = iVar1; // WARNING: Could not recover jumptable at 0x7f0c0c8c. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700F4BBC)[iVar1])(); - return; - } - case 1: - if (param_1 < 7) { - mission_state = iVar1; + (*(code *)(&jpt_700F4BBC)[iVar1])(); + return; + } + case 1: + if (param_1 < 7) { + mission_state = iVar1; // WARNING: Could not recover jumptable at 0x7f0c0d40. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700F4C70)[iVar1])(); - return; - } - case 2: - if (param_1 < 7) { - mission_state = iVar1; + (*(code *)(&jpt_700F4C70)[iVar1])(); + return; + } + case 2: + if (param_1 < 7) { + mission_state = iVar1; // WARNING: Could not recover jumptable at 0x7f0c0e30. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700F4D60)[iVar1])(); - return; - } - case 3: - if (param_1 < 7) { - mission_state = iVar1; + (*(code *)(&jpt_700F4D60)[iVar1])(); + return; + } + case 3: + if (param_1 < 7) { + mission_state = iVar1; // WARNING: Could not recover jumptable at 0x7f0c0ec8. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700F4DF8)[iVar1])(); - return; - } - case 4: - if (param_1 < 7) { - mission_state = iVar1; + (*(code *)(&jpt_700F4DF8)[iVar1])(); + return; + } + case 4: + if (param_1 < 7) { + mission_state = iVar1; // WARNING: Could not recover jumptable at 0x7f0c1000. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700F4F30)[iVar1])(); - return; - } - case 5: - if (param_1 < 7) { - mission_state = iVar1; + (*(code *)(&jpt_700F4F30)[iVar1])(); + return; + } + case 5: + if (param_1 < 7) { + mission_state = iVar1; // WARNING: Could not recover jumptable at 0x7f0c10cc. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700F4FFC)[iVar1])(); - return; - } - case 6: - if (param_1 < 7) { - mission_state = iVar1; + (*(code *)(&jpt_700F4FFC)[iVar1])(); + return; + } + case 6: + if (param_1 < 7) { + mission_state = iVar1; // WARNING: Could not recover jumptable at 0x7f0c1174. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_700F50A4)[iVar1])(); - return; - } - default: - do { + (*(code *)(&jpt_700F50A4)[iVar1])(); + return; + } + default: + do { // WARNING: Do nothing block with infinite loop - } while( true ); - } + } while( true ); + } } -void proc_7F0C11FC(undefined4 param_1) +void sub_GAME_7F0C11FC(s16 param_1) { - short sVar1; - - musicTrack1Stop(); - music_related_2nd_block_0(); - music_related_3rd_block_0(); - mission_state = 0; - DAT_8008c600 = param_1; - sVar1 = proc_7F0D2848((short)param_1); - if (sVar1 < 0) { - set_missionstate(1); - } - else { - set_missionstate(4); - } - return; + short sVar1; + + musicTrack1Stop(); + musicTrack2Stop(); + musicTrack3Stop(); + mission_state = 0; + dword_CODE_bss_8008C600 = (int)param_1; + sVar1 = sub_GAME_7F0D2848(param_1); + if (sVar1 < 0) { + set_missionstate(1); + } + else { + set_missionstate(4); + } + return; } @@ -133686,8 +132841,8 @@ void proc_7F0C11FC(undefined4 param_1) void setmissionstate_to_zero(void) { - set_missionstate(0); - return; + set_missionstate(0); + return; } @@ -133695,16 +132850,16 @@ void setmissionstate_to_zero(void) void proc_7F0C1288(void) { - short sVar1; - - sVar1 = proc_7F0D2848((short)DAT_8008c600); - if (sVar1 < 0) { - set_missionstate(2); - } - else { - set_missionstate(5); - } - return; + short sVar1; + + sVar1 = sub_GAME_7F0D2848((short)dword_CODE_bss_8008C600); + if (sVar1 < 0) { + set_missionstate(2); + } + else { + set_missionstate(5); + } + return; } @@ -133712,16 +132867,16 @@ void proc_7F0C1288(void) void proc_7F0C12CC(void) { - short sVar1; - - sVar1 = proc_7F0D2848((short)DAT_8008c600); - if (sVar1 < 0) { - set_missionstate(1); - } - else { - set_missionstate(4); - } - return; + short sVar1; + + sVar1 = sub_GAME_7F0D2848((short)dword_CODE_bss_8008C600); + if (sVar1 < 0) { + set_missionstate(1); + } + else { + set_missionstate(4); + } + return; } @@ -133729,9 +132884,9 @@ void proc_7F0C12CC(void) void proc_7F0C1310(void) { - DAT_8008c604 = mission_state; - set_missionstate(3); - return; + DAT_8008c604 = mission_state; + set_missionstate(3); + return; } @@ -133739,8 +132894,8 @@ void proc_7F0C1310(void) void proc_7F0C1340(void) { - set_missionstate((longlong)DAT_8008c604); - return; + set_missionstate((longlong)DAT_8008c604); + return; } @@ -133748,19 +132903,19 @@ void proc_7F0C1340(void) void proc_7F0C1364(void) { - null_ARRAY_8008c608[0] = 0; - null_ARRAY_8008c608[1] = 0; - null_ARRAY_8008c608[2] = 0; - null_ARRAY_8008c608[3] = 0; - null_ARRAY_8008c618[0] = 0; - null_ARRAY_8008c618[1] = 0; - null_ARRAY_8008c618[2] = 0; - null_ARRAY_8008c618[3] = 0; - null_ARRAY_8008c628[0] = 0; - null_ARRAY_8008c628[1] = 0; - null_ARRAY_8008c628[2] = 0; - null_ARRAY_8008c628[3] = 0; - return; + music_slot_active[0] = 0; + music_slot_active[1] = 0; + music_slot_active[2] = 0; + music_slot_active[3] = 0; + music_slot_minutes[0] = 0; + music_slot_minutes[1] = 0; + music_slot_minutes[2] = 0; + music_slot_minutes[3] = 0; + music_slot_seconds[0] = 0; + music_slot_seconds[1] = 0; + music_slot_seconds[2] = 0; + music_slot_seconds[3] = 0; + return; } @@ -133768,76 +132923,76 @@ void proc_7F0C1364(void) void reset_all_music_slots(void) { - int iVar1; - bool bVar2; - int iVar3; - int iVar4; - int *piVar5; - undefined4 *puVar6; - undefined4 *puVar7; - int iVar8; - - iVar4 = clock_timer; - bVar2 = false; - puVar6 = null_ARRAY_8008c618; - puVar7 = null_ARRAY_8008c608; - iVar8 = 0; - do { - iVar1 = *puVar7; - if (iVar1 == 0) { - if (0 < (int)*puVar6) { - iVar3 = *puVar6; - goto LAB_7f0c1414; - } - } - else { - iVar3 = *puVar6; + int iVar1; + bool bVar2; + int iVar3; + int iVar4; + int *piVar5; + undefined4 *puVar6; + undefined4 *puVar7; + int iVar8; + + iVar4 = clock_timer; + bVar2 = false; + puVar6 = music_slot_minutes; + puVar7 = music_slot_active; + iVar8 = 0; + do { + iVar1 = *puVar7; + if (iVar1 == 0) { + if (0 < (int)*puVar6) { + iVar3 = *puVar6; + goto LAB_7f0c1414; + } + } + else { + iVar3 = *puVar6; LAB_7f0c1414: - piVar5 = (int *)((int)null_ARRAY_8008c628 + iVar8); - if (iVar3 < iVar4) { - *puVar6 = 0; - } - else { - *puVar6 = iVar3 - iVar4; - } - iVar3 = *piVar5; - if (iVar3 != 0) { - if (iVar3 < iVar4) { - *piVar5 = 0; + piVar5 = (int *)((int)music_slot_seconds + iVar8); + if (iVar3 < iVar4) { + *puVar6 = 0; + } + else { + *puVar6 = iVar3 - iVar4; + } + iVar3 = *piVar5; + if (iVar3 != 0) { + if (iVar3 < iVar4) { + *piVar5 = 0; + } + else { + *piVar5 = iVar3 - iVar4; + } + if (*piVar5 == 0) { + *puVar7 = 0; + } + else { + if ((iVar1 != 0) || (*puVar6 != 0)) { + bVar2 = true; + } + } + } } - else { - *piVar5 = iVar3 - iVar4; + puVar6 = puVar6 + 1; + iVar8 += 4; + puVar7 = puVar7 + 1; + if (puVar6 == music_slot_seconds) { + if (iVar4 != 0) { + iVar4 = get_mission_state(); + if ((iVar4 == 2) || (iVar4 = get_mission_state(), iVar4 == 5)) { + if (!bVar2) { + proc_7F0C12CC(); + } + } + else { + if (bVar2) { + proc_7F0C1288(); + } + } + } + return; } - if (*piVar5 == 0) { - *puVar7 = 0; - } - else { - if ((iVar1 != 0) || (*puVar6 != 0)) { - bVar2 = true; - } - } - } - } - puVar6 = puVar6 + 1; - iVar8 += 4; - puVar7 = puVar7 + 1; - if (puVar6 == null_ARRAY_8008c628) { - if (iVar4 != 0) { - iVar4 = get_mission_state(); - if ((iVar4 == 2) || (iVar4 = get_mission_state(), iVar4 == 5)) { - if (!bVar2) { - proc_7F0C12CC(); - } - } - else { - if (bVar2) { - proc_7F0C1288(); - } - } - } - return; - } - } while( true ); + } while( true ); } @@ -133845,12 +133000,12 @@ LAB_7f0c1414: void set_musicslot_time(int slot,int min,int sec) { - if (null_ARRAY_8008c608[slot] == 0) { - null_ARRAY_8008c608[slot] = 1; - null_ARRAY_8008c618[slot] = min * 0x3c; - null_ARRAY_8008c628[slot] = sec * 0x3c; - } - return; + if (music_slot_active[slot] == 0) { + music_slot_active[slot] = 1; + music_slot_minutes[slot] = min * 0x3c; + music_slot_seconds[slot] = sec * 0x3c; + } + return; } @@ -133858,23 +133013,23 @@ void set_musicslot_time(int slot,int min,int sec) void reset_music_in_slot(u32 param_1) { - if (-1 < (int)param_1) { - null_ARRAY_8008c608[param_1] = 0; + if (-1 < (int)param_1) { + music_slot_active[param_1] = 0; + return; + } + music_slot_active[0] = 0; + music_slot_active[1] = 0; + music_slot_active[2] = 0; + music_slot_active[3] = 0; + music_slot_minutes[0] = 0; + music_slot_minutes[1] = 0; + music_slot_minutes[2] = 0; + music_slot_minutes[3] = 0; + music_slot_seconds[0] = 0; + music_slot_seconds[1] = 0; + music_slot_seconds[2] = 0; + music_slot_seconds[3] = 0; return; - } - null_ARRAY_8008c608[0] = 0; - null_ARRAY_8008c608[1] = 0; - null_ARRAY_8008c608[2] = 0; - null_ARRAY_8008c608[3] = 0; - null_ARRAY_8008c618[0] = 0; - null_ARRAY_8008c618[1] = 0; - null_ARRAY_8008c618[2] = 0; - null_ARRAY_8008c618[3] = 0; - null_ARRAY_8008c628[0] = 0; - null_ARRAY_8008c628[1] = 0; - null_ARRAY_8008c628[2] = 0; - null_ARRAY_8008c628[3] = 0; - return; } @@ -133882,67 +133037,67 @@ void reset_music_in_slot(u32 param_1) undefined8 get_textbank_number_for_stagenum(LEVELID param_1) { - if (true) { - switch(param_1) { - case LEVELID_BUNKER1: - return 0x1e; - case LEVELID_SILO: - return 0x22; - case LEVELID_STATUE: - return 0x23; - case LEVELID_CONTROL: - return 8; - case LEVELID_ARCHIVES: - return 2; - case LEVELID_TRAIN: - return 0x24; - case LEVELID_FRIGATE: - return 0xd; - case LEVELID_BUNKER2: - return 0x1d; - case LEVELID_AZTEC: - return 5; - case LEVELID_STREETS: - return 0x19; - case LEVELID_DEPOT: - return 0xc; - case LEVELID_COMPLEX: - return 0x1a; - case LEVELID_EGYPT: - return 10; - case LEVELID_DAM: - return 0xb; - case LEVELID_FACILITY: - return 3; - case LEVELID_RUNWAY: - return 0x1c; - case LEVELID_SURFACE: - return 0x1f; - case LEVELID_JUNGLE: - return 0x12; - case LEVELID_TEMPLE: - return 0xe; - case LEVELID_CAVERNS: - return 7; - case LEVELID_CRADLE: - return 9; - case LEVELID_SURFACE2: - return 0x20; - case LEVELID_BASEMENT: - return 0x11; - case LEVELID_STACK: - return 4; - case LEVELID_LIBRARY: - return 1; - case LEVELID_CAVES: - return 0x17; - case LEVELID_CUBA: - return 0x14; + if (true) { + switch(param_1) { + case LEVELID_BUNKER1: + return 0x1e; + case LEVELID_SILO: + return 0x22; + case LEVELID_STATUE: + return 0x23; + case LEVELID_CONTROL: + return 8; + case LEVELID_ARCHIVES: + return 2; + case LEVELID_TRAIN: + return 0x24; + case LEVELID_FRIGATE: + return 0xd; + case LEVELID_BUNKER2: + return 0x1d; + case LEVELID_AZTEC: + return 5; + case LEVELID_STREETS: + return 0x19; + case LEVELID_DEPOT: + return 0xc; + case LEVELID_COMPLEX: + return 0x1a; + case LEVELID_EGYPT: + return 10; + case LEVELID_DAM: + return 0xb; + case LEVELID_FACILITY: + return 3; + case LEVELID_RUNWAY: + return 0x1c; + case LEVELID_SURFACE: + return 0x1f; + case LEVELID_JUNGLE: + return 0x12; + case LEVELID_TEMPLE: + return 0xe; + case LEVELID_CAVERNS: + return 7; + case LEVELID_CRADLE: + return 9; + case LEVELID_SURFACE2: + return 0x20; + case LEVELID_BASEMENT: + return 0x11; + case LEVELID_STACK: + return 4; + case LEVELID_LIBRARY: + return 1; + case LEVELID_CAVES: + return 0x17; + case LEVELID_CUBA: + return 0x14; + } } - } - do { + do { // WARNING: Do nothing block with infinite loop - } while( true ); + } while( true ); } @@ -133950,56 +133105,55 @@ undefined8 get_textbank_number_for_stagenum(LEVELID param_1) void init_LnameX(void) { - undefined *puVar1; - undefined **ppuVar2; - undefined **ppuVar3; - int iVar4; - - if (j_text_trigger != 0) { - ptr_char_data_buf = (undefined *)allocate_bytes_in_bank(0x2e80,6); - ptr_char_registry = (undefined *)allocate_bytes_in_bank(0x100,6); - iVar4 = 0; + undefined *puVar1; + undefined **ppuVar2; + int iVar3; + + if (j_text_trigger != 0) { + ptr_char_data_buf = (undefined *)mempAllocBytesInBank(0x2e80,'\x06'); + ptr_char_registry = (undefined *)mempAllocBytesInBank(0x100,'\x06'); + iVar3 = 0; + do { + ptr_char_registry[iVar3] = ptr_char_registry[iVar3] & 0x3f; + *(ushort *)(ptr_char_registry + iVar3) = *(ushort *)(ptr_char_registry + iVar3) | 0x3fff + ; + (ptr_char_registry + iVar3)[2] = (ptr_char_registry + iVar3)[2] & 0x3f; + *(ushort *)(ptr_char_registry + iVar3 + 2) = + *(ushort *)(ptr_char_registry + iVar3 + 2) | 0x3fff; + (ptr_char_registry + iVar3)[4] = (ptr_char_registry + iVar3)[4] & 0x3f; + *(ushort *)(ptr_char_registry + iVar3 + 4) = + *(ushort *)(ptr_char_registry + iVar3 + 4) | 0x3fff; + (ptr_char_registry + iVar3)[6] = (ptr_char_registry + iVar3)[6] & 0x3f; + puVar1 = ptr_char_registry + iVar3; + iVar3 += 8; + *(ushort *)(puVar1 + 6) = *(ushort *)(puVar1 + 6) | 0x3fff; + } while (iVar3 != 0xf8); + } + iVar3 = j_text_trigger; + ptr_text = 0; + ppuVar2 = (undefined **)table_text_pointers; do { - ptr_char_registry[iVar4] = ptr_char_registry[iVar4] & 0x3f; - *(ushort *)(ptr_char_registry + iVar4) = *(ushort *)(ptr_char_registry + iVar4) | 0x3fff; - (ptr_char_registry + iVar4)[2] = (ptr_char_registry + iVar4)[2] & 0x3f; - *(ushort *)(ptr_char_registry + iVar4 + 2) = - *(ushort *)(ptr_char_registry + iVar4 + 2) | 0x3fff; - (ptr_char_registry + iVar4)[4] = (ptr_char_registry + iVar4)[4] & 0x3f; - *(ushort *)(ptr_char_registry + iVar4 + 4) = - *(ushort *)(ptr_char_registry + iVar4 + 4) | 0x3fff; - (ptr_char_registry + iVar4)[6] = (ptr_char_registry + iVar4)[6] & 0x3f; - puVar1 = ptr_char_registry + iVar4; - iVar4 += 8; - *(ushort *)(puVar1 + 6) = *(ushort *)(puVar1 + 6) | 0x3fff; - } while (iVar4 != 0xf8); - } - iVar4 = j_text_trigger; - ptr_text = 0; - ppuVar2 = (undefined **)table_text_pointers; - do { - ppuVar3 = ppuVar2 + 4; - ppuVar2[1] = NULL; - ppuVar2[2] = NULL; - ppuVar2[3] = NULL; - *ppuVar2 = NULL; - ppuVar2 = ppuVar3; - } while (ppuVar3 != &ptr_char_data_buf); - _load_resource_named_to_membank((&ptr_LgunX)[iVar4],1,0x100,6); - table_text_pointers[37] = ppuVar3; - _load_resource_named_to_membank((&ptr_LtitleX)[j_text_trigger],1,0x100,6); - table_text_pointers[38] = ppuVar3; - _load_resource_named_to_membank((&ptr_LmpmenuX)[j_text_trigger],1,0x100,6); - table_text_pointers[39] = ppuVar3; - _load_resource_named_to_membank((&ptr_LpropobjX)[j_text_trigger],1,0x100,6); - table_text_pointers[40] = ppuVar3; - _load_resource_named_to_membank((&ptr_LmpweaponsX)[j_text_trigger],1,0x100,6); - table_text_pointers[41] = ppuVar3; - _load_resource_named_to_membank((&ptr_LoptionsX)[j_text_trigger],1,0x100,6); - table_text_pointers[42] = ppuVar3; - _load_resource_named_to_membank((&ptr_LmiscX)[j_text_trigger],1,0x100,6); - table_text_pointers[43] = ppuVar3; - return; + ppuVar2 = ppuVar2 + 4; + ppuVar2[1] = NULL; + ppuVar2[2] = NULL; + ppuVar2[3] = NULL; + *ppuVar2 = NULL; + ppuVar2 = ppuVar2; + } while (ppuVar2 != &ptr_char_data_buf); + table_text_pointers[37] = _load_resource_named_to_membank((&ptr_LgunX)[iVar3],1,0x100,6); + table_text_pointers[38] = + _load_resource_named_to_membank((&ptr_LtitleX)[j_text_trigger],1,0x100,6); + table_text_pointers[39] = + _load_resource_named_to_membank((&ptr_LmpmenuX)[j_text_trigger],1,0x100,6); + table_text_pointers[40] = + _load_resource_named_to_membank((&ptr_LpropobjX)[j_text_trigger],1,0x100,6); + table_text_pointers[41] = + _load_resource_named_to_membank((&ptr_LmpweaponsX)[j_text_trigger],1,0x100,6); + table_text_pointers[42] = + _load_resource_named_to_membank((&ptr_LoptionsX)[j_text_trigger],1,0x100,6); + table_text_pointers[43] = + _load_resource_named_to_membank((&ptr_LmiscX)[j_text_trigger],1,0x100,6); + return; } @@ -134007,45 +133161,48 @@ void init_LnameX(void) void something_with_LnameJ(void) { - ushort uVar1; - ushort *puVar2; - int iVar3; - - iVar3 = 0; - if (j_text_trigger != 0) { - do { - puVar2 = (ushort *)(ptr_char_registry + iVar3); - if (*puVar2 >> 0xe == 0) { - uVar1 = puVar2[1]; - } - else { - *(byte *)puVar2 = ((byte)(*puVar2 >> 0xe) - 1) * '@' | *(byte *)puVar2 & 0x3f; - puVar2 = (ushort *)(ptr_char_registry + iVar3); - uVar1 = puVar2[1]; - } - if (uVar1 >> 0xe == 0) { - uVar1 = puVar2[2]; - } - else { - *(byte *)(puVar2 + 1) = ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 1) & 0x3f; - puVar2 = (ushort *)(ptr_char_registry + iVar3); - uVar1 = puVar2[2]; - } - if (uVar1 >> 0xe == 0) { - uVar1 = puVar2[3]; - } - else { - *(byte *)(puVar2 + 2) = ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 2) & 0x3f; - puVar2 = (ushort *)(ptr_char_registry + iVar3); - uVar1 = puVar2[3]; - } - iVar3 += 8; - if (uVar1 >> 0xe != 0) { - *(byte *)(puVar2 + 3) = ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 3) & 0x3f; - } - } while (iVar3 != 0xf8); - } - return; + ushort uVar1; + ushort *puVar2; + int iVar3; + + iVar3 = 0; + if (j_text_trigger != 0) { + do { + puVar2 = (ushort *)(ptr_char_registry + iVar3); + if (*puVar2 >> 0xe == 0) { + uVar1 = puVar2[1]; + } + else { + *(byte *)puVar2 = ((byte)(*puVar2 >> 0xe) - 1) * '@' | *(byte *)puVar2 & 0x3f; + puVar2 = (ushort *)(ptr_char_registry + iVar3); + uVar1 = puVar2[1]; + } + if (uVar1 >> 0xe == 0) { + uVar1 = puVar2[2]; + } + else { + *(byte *)(puVar2 + 1) = + ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 1) & 0x3f; + puVar2 = (ushort *)(ptr_char_registry + iVar3); + uVar1 = puVar2[2]; + } + if (uVar1 >> 0xe == 0) { + uVar1 = puVar2[3]; + } + else { + *(byte *)(puVar2 + 2) = + ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 2) & 0x3f; + puVar2 = (ushort *)(ptr_char_registry + iVar3); + uVar1 = puVar2[3]; + } + iVar3 += 8; + if (uVar1 >> 0xe != 0) { + *(byte *)(puVar2 + 3) = + ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 3) & 0x3f; + } + } while (iVar3 != 0xf8); + } + return; } @@ -134056,81 +133213,82 @@ void something_with_LnameJ(void) int something_with_LnameX(uint param_1) { - bool bVar1; - ushort uVar3; - undefined *puVar2; - int iVar4; - ushort *puVar5; - int iVar6; - int iVar7; - int iVar8; - int iVar9; - int iVar10; - int iVar11; - - iVar8 = -1; - bVar1 = (param_1 & 0x2000) != 0; - iVar7 = 0; - iVar4 = 0; - iVar10 = -1; - puVar5 = (ushort *)ptr_char_registry; - do { - iVar11 = (int)param_1 >> 1; - if ((!bVar1) && ((longlong)iVar11 == ((ulonglong)*puVar5 & 0x3fff))) break; - if ((bVar1) && - (((iVar4 + 1 < 0x7c && ((longlong)iVar11 == ((ulonglong)*puVar5 & 0x3fff))) && - ((longlong)iVar11 == ((ulonglong)puVar5[1] & 0x3fff))))) break; - uVar3 = *puVar5 >> 0xe; - iVar6 = iVar4 + 1; - if (uVar3 == 0) { - iVar8 = iVar4; - } - iVar7 += 2; - iVar9 = iVar10; - if (((uVar3 == 0) && (iVar9 = iVar10, puVar5[1] >> 0xe == 0)) && (iVar9 = iVar4, 0x7b < iVar6)) - { - iVar9 = iVar10; - } - puVar5 = puVar5 + 1; - iVar4 = iVar6; - iVar10 = iVar9; - } while (iVar6 != 0x7c); - if (iVar4 < 0x7c) { - if (bVar1) { - *(byte *)puVar5 = *(byte *)puVar5 & 0x3f | 0x80; - (ptr_char_registry + iVar7)[2] = (ptr_char_registry + iVar7)[2] & 0x3f | 0x80; - puVar2 = ptr_char_data_buf + iVar4 * 0x60; + bool bVar1; + ushort uVar3; + undefined *puVar2; + int iVar4; + ushort *puVar5; + int iVar6; + int iVar7; + int indexto; + int iVar8; + int iVar9; + int indexfrom; + + indexto = -1; + bVar1 = (param_1 & 0x2000) != 0; + iVar7 = 0; + iVar4 = 0; + iVar9 = -1; + puVar5 = (ushort *)ptr_char_registry; + do { + indexfrom = (int)param_1 >> 1; + if ((!bVar1) && ((longlong)indexfrom == ((ulonglong)*puVar5 & 0x3fff))) break; + if ((bVar1) && + (((iVar4 + 1 < 0x7c && ((longlong)indexfrom == ((ulonglong)*puVar5 & 0x3fff))) && + ((longlong)indexfrom == ((ulonglong)puVar5[1] & 0x3fff))))) break; + uVar3 = *puVar5 >> 0xe; + iVar6 = iVar4 + 1; + if (uVar3 == 0) { + indexto = iVar4; + } + iVar7 += 2; + iVar8 = iVar9; + if (((uVar3 == 0) && (puVar5[1] >> 0xe == 0)) && (iVar8 = iVar4, 0x7b < iVar6)) { + iVar8 = iVar9; + } + puVar5 = puVar5 + 1; + iVar4 = iVar6; + iVar9 = iVar8; + } while (iVar6 != 0x7c); + if (iVar4 < 0x7c) { + if (bVar1) { + *(byte *)puVar5 = *(byte *)puVar5 & 0x3f | 0x80; + (ptr_char_registry + iVar7)[2] = (ptr_char_registry + iVar7)[2] & 0x3f | 0x80; + puVar2 = ptr_char_data_buf + iVar4 * 0x60; + } + else { + *(byte *)puVar5 = *(byte *)puVar5 & 0x3f | 0x80; + puVar2 = ptr_char_data_buf + iVar4 * 0x60; + } } else { - *(byte *)puVar5 = *(byte *)puVar5 & 0x3f | 0x80; - puVar2 = ptr_char_data_buf + iVar4 * 0x60; + if ((bVar1) || (indexto < 0)) { + puVar2 = ptr_char_data_buf; + if ((bVar1) && (iVar4 = iVar9 * 2, -1 < iVar9)) { + ptr_char_registry[iVar4] = ptr_char_registry[iVar4] & 0x3f | 0x80; + (ptr_char_registry + iVar4)[2] = (ptr_char_registry + iVar4)[2] & 0x3f | 0x80; + uVar3 = (ushort)indexfrom & 0x3fff; + *(ushort *)(ptr_char_registry + iVar4) = + uVar3 | *(ushort *)(ptr_char_registry + iVar4) & 0xc000; + *(ushort *)(ptr_char_registry + iVar4 + 2) = + uVar3 | *(ushort *)(ptr_char_registry + iVar4 + 2) & 0xc000; + romCopy(ptr_char_data_buf + iVar9 * 0x60, + (char *)(_efontcharSegmentStart + ((int)(param_1 & 0x1fff) >> 1) * 0x20), + 0x80); + puVar2 = ptr_char_data_buf + iVar9 * 0x60; + } + } + else { + ptr_char_registry[indexto * 2] = ptr_char_registry[indexto * 2] & 0x3f | 0x80; + *(ushort *)(ptr_char_registry + indexto * 2) = + (ushort)indexfrom & 0x3fff | *(ushort *)(ptr_char_registry + indexto * 2) & 0xc000; + romCopy(ptr_char_data_buf + indexto * 0x60, + (char *)(_jfontcharSegmentStart + indexfrom * 0x18),0x60); + puVar2 = ptr_char_data_buf + indexto * 0x60; + } } - } - else { - if ((bVar1) || (iVar8 < 0)) { - puVar2 = ptr_char_data_buf; - if ((bVar1) && (iVar4 = iVar10 * 2, puVar2 = ptr_char_data_buf, -1 < iVar10)) { - ptr_char_registry[iVar4] = ptr_char_registry[iVar4] & 0x3f | 0x80; - (ptr_char_registry + iVar4)[2] = (ptr_char_registry + iVar4)[2] & 0x3f | 0x80; - uVar3 = (ushort)iVar11 & 0x3fff; - *(ushort *)(ptr_char_registry + iVar4) = - uVar3 | *(ushort *)(ptr_char_registry + iVar4) & 0xc000; - *(ushort *)(ptr_char_registry + iVar4 + 2) = - uVar3 | *(ushort *)(ptr_char_registry + iVar4 + 2) & 0xc000; - romCopy(ptr_char_data_buf + iVar10 * 0x60, - &unknown123040 + ((int)(param_1 & 0x1fff) >> 1) * 0x80,0x80); - puVar2 = ptr_char_data_buf + iVar10 * 0x60; - } - } - else { - ptr_char_registry[iVar8 * 2] = ptr_char_registry[iVar8 * 2] & 0x3f | 0x80; - *(ushort *)(ptr_char_registry + iVar8 * 2) = - (ushort)iVar11 & 0x3fff | *(ushort *)(ptr_char_registry + iVar8 * 2) & 0xc000; - romCopy(ptr_char_data_buf + iVar8 * 0x60,&unknown117940 + iVar11 * 0x60,0x60); - puVar2 = ptr_char_data_buf + iVar8 * 0x60; - } - } - return (int)puVar2; + return (int)puVar2; } @@ -134138,12 +133296,13 @@ int something_with_LnameX(uint param_1) void load_mission_text_bank(u32 param_1) { - undefined4 in_v0_lo; - - _load_resource_named_to_membank - ((byte *)(&(&LnameX_lookuptable)[param_1].en_file)[j_text_trigger],1,0x100,4); - (&ptr_text)[param_1] = in_v0_lo; - return; + u8 *puVar1; + + puVar1 = _load_resource_named_to_membank + ((byte *)(&(&LnameX_lookuptable)[param_1].en_file)[j_text_trigger],1,0x100,4) + ; + *(u8 **)(&ptr_text + param_1) = puVar1; + return; } @@ -134151,13 +133310,13 @@ void load_mission_text_bank(u32 param_1) void load_briefing_text_bank(int lnameID,undefined *target,int size) { - undefined *puVar1; - - puVar1 = _load_resource_named_to_buffer - ((byte *)(&(&LnameX_lookuptable)[lnameID].en_file)[j_text_trigger],1,target, - size); - *(undefined **)(&ptr_text + lnameID) = puVar1; - return; + u8 *puVar1; + + puVar1 = _load_resource_named_to_buffer + ((byte *)(&(&LnameX_lookuptable)[lnameID].en_file)[j_text_trigger],1,target, + size); + *(u8 **)(&ptr_text + lnameID) = puVar1; + return; } @@ -134165,22 +133324,22 @@ void load_briefing_text_bank(int lnameID,undefined *target,int size) void blank_text_bank(int param_1) { - (&ptr_text)[param_1] = 0; - return; + (&ptr_text)[param_1] = 0; + return; } -byte * get_textptr_for_textID(u16 id) +u8 * get_textptr_for_textID(TEXTFILESTRINGS id) { - int iVar1; - - iVar1 = *(int *)((&ptr_text)[(int)(short)id >> 10] + ((int)(short)id & 0x3ffU) * 4); - if (iVar1 != 0) { - return (byte *)(iVar1 + (&ptr_text)[(int)(short)id >> 10]); - } - return NULL; + int iVar1; + + iVar1 = *(int *)((&ptr_text)[(int)(short)id >> 10] + ((int)(short)id & 0x3ffU) * 4); + if (iVar1 != 0) { + return (u8 *)(iVar1 + (&ptr_text)[(int)(short)id >> 10]); + } + return NULL; } @@ -134188,25 +133347,25 @@ byte * get_textptr_for_textID(u16 id) undefined8 MP_menu_page_adv_right(void) { - switch(pPlayer->mpmenumode) { - case 0: - case 1: - case 2: - case 4: - return 1; - case 3: - break; - case 5: - case 6: - case 7: + switch(pPlayer->mpmenumode) { + case 0: + case 1: + case 2: + case 4: + return 1; + case 3: + break; + case 5: + case 6: + case 7: + return 0; + default: + return 0; + } + if (is_gameover_flag == 0) { + return 1; + } return 0; - default: - return 0; - } - if (is_gameover_flag == 0) { - return 1; - } - return 0; } @@ -134214,42 +133373,42 @@ undefined8 MP_menu_page_adv_right(void) undefined8 MP_menu_page_adv_left(void) { - switch(pPlayer->mpmenumode) { - case 0: - case 6: - case 7: - return 0; - case 1: - break; - case 2: - case 3: - case 4: - case 5: + switch(pPlayer->mpmenumode) { + case 0: + case 6: + case 7: + return 0; + case 1: + break; + case 2: + case 3: + case 4: + case 5: + return 1; + default: + return 0; + } + if (is_gameover_flag == 0) { + return 0; + } return 1; - default: - return 0; - } - if (is_gameover_flag == 0) { - return 0; - } - return 1; } -undefined8 check_if_player_is_pressing_anything_right(char param_1) +s32 check_if_player_is_pressing_anything_right(char param_1) { - int iVar3; - ulonglong uVar1; - undefined8 uVar2; - - iVar3 = get_controller_3dstick_L_R(param_1,-2,1); - uVar1 = get_controller_buttons_pressed(param_1,0x101); - if ((uVar1 != 0) || ((uVar2 = 0, 0 < iVar3 && (pPlayer->mpjoywascentre != 0)))) { - uVar2 = 1; - } - return uVar2; + int iVar1; + u32 uVar2; + s32 sVar3; + + iVar1 = get_controller_3dstick_L_R(param_1,-2,1); + uVar2 = get_controller_buttons_pressed(param_1,R_CBUTTONS|R_JPAD); + if ((uVar2 != 0) || ((sVar3 = 0, 0 < iVar1 && (pPlayer->mpjoywascentre != 0)))) { + sVar3 = 1; + } + return sVar3; } @@ -134257,16 +133416,16 @@ undefined8 check_if_player_is_pressing_anything_right(char param_1) undefined8 check_if_player_is_pressing_anything_left(char param_1) { - int iVar3; - ulonglong uVar1; - undefined8 uVar2; - - iVar3 = get_controller_3dstick_L_R(param_1,-2,1); - uVar1 = get_controller_buttons_pressed(param_1,0x202); - if ((uVar1 != 0) || ((uVar2 = 0, iVar3 < -1 && (pPlayer->mpjoywascentre != 0)))) { - uVar2 = 1; - } - return uVar2; + int iVar2; + u32 uVar3; + undefined8 uVar1; + + iVar2 = get_controller_3dstick_L_R(param_1,-2,1); + uVar3 = get_controller_buttons_pressed(param_1,L_CBUTTONS|L_JPAD); + if ((uVar3 != 0) || ((uVar1 = 0, iVar2 < -1 && (pPlayer->mpjoywascentre != 0)))) { + uVar1 = 1; + } + return uVar1; } @@ -134274,10 +133433,10 @@ undefined8 check_if_player_is_pressing_anything_left(char param_1) int ** play_watch_sfx_beep(void) { - int **ppiVar1; - - ppiVar1 = play_sfx_a1(ptr_sfx_buf,0x9f,NULL); - return ppiVar1; + int **in_v0_lo; + + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + return in_v0_lo; } @@ -134285,10 +133444,10 @@ int ** play_watch_sfx_beep(void) void unpause_game(void) { - stop_play_flag = 0; - is_gameover_flag = 0; - is_paused = 0; - return; + stop_play_flag = 0; + is_gameover_flag = 0; + is_paused = 0; + return; } @@ -134296,35 +133455,35 @@ void unpause_game(void) undefined4 proc_7F0C2024(int param_1,int param_2,int param_3,int param_4,int param_5) { - u32 uVar1; - undefined4 uVar2; - - if ((param_2 < param_3) || - ((param_3 == param_2 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 1; - } - else { - uVar2 = 0; - param_3 = param_2; - } - if (2 < param_1) { - if ((param_3 < param_4) || - ((param_4 == param_3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 2; - param_3 = param_4; + u32 uVar1; + undefined4 uVar2; + + if ((param_2 < param_3) || + ((param_3 == param_2 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 1; } - if (3 < param_1) { - if (param_3 < param_5) { - uVar2 = 3; - } - else { - if ((param_5 == param_3) && (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { - uVar2 = 3; + else { + uVar2 = 0; + param_3 = param_2; + } + if (2 < param_1) { + if ((param_3 < param_4) || + ((param_4 == param_3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 2; + param_3 = param_4; + } + if (3 < param_1) { + if (param_3 < param_5) { + uVar2 = 3; + } + else { + if ((param_5 == param_3) && (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { + uVar2 = 3; + } + } } - } } - } - return uVar2; + return uVar2; } @@ -134332,35 +133491,35 @@ undefined4 proc_7F0C2024(int param_1,int param_2,int param_3,int param_4,int par undefined4 proc_7F0C2114(int param_1,int param_2,int param_3,int param_4,int param_5) { - u32 uVar1; - undefined4 uVar2; - - if ((param_3 < param_2) || - ((param_3 == param_2 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 1; - } - else { - uVar2 = 0; - param_3 = param_2; - } - if (2 < param_1) { - if ((param_4 < param_3) || - ((param_4 == param_3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 2; - param_3 = param_4; + u32 uVar1; + undefined4 uVar2; + + if ((param_3 < param_2) || + ((param_3 == param_2 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 1; } - if (3 < param_1) { - if (param_5 < param_3) { - uVar2 = 3; - } - else { - if ((param_5 == param_3) && (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { - uVar2 = 3; + else { + uVar2 = 0; + param_3 = param_2; + } + if (2 < param_1) { + if ((param_4 < param_3) || + ((param_4 == param_3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 2; + param_3 = param_4; + } + if (3 < param_1) { + if (param_5 < param_3) { + uVar2 = 3; + } + else { + if ((param_5 == param_3) && (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { + uVar2 = 3; + } + } } - } } - } - return uVar2; + return uVar2; } @@ -134368,39 +133527,40 @@ undefined4 proc_7F0C2114(int param_1,int param_2,int param_3,int param_4,int par undefined4 proc_7F0C2204(int param_1,float param_2,float param_3,float param_4,float param_5) { - u32 uVar1; - undefined4 uVar2; - float in_a3_lo; - int iVar3; - float in_stack_00000010; - - if ((param_4 < param_5) || - ((param_5 == param_4 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 1; - param_4 = param_5; - } - else { - uVar2 = 0; - } - iVar3 = (int)param_4; - if (2 < param_1) { - if (((float)iVar3 < in_a3_lo) || - ((in_a3_lo == (float)iVar3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 2; - iVar3 = (int)in_a3_lo; + u32 uVar1; + undefined4 uVar2; + float in_a3_lo; + int iVar3; + float in_stack_00000010; + + if ((param_4 < param_5) || + ((param_5 == param_4 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 1; + param_4 = param_5; } - if (3 < param_1) { - if (in_stack_00000010 <= (float)iVar3) { - if ((in_stack_00000010 == (float)iVar3) && (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { - uVar2 = 3; + else { + uVar2 = 0; + } + iVar3 = (int)param_4; + if (2 < param_1) { + if (((float)iVar3 < in_a3_lo) || + ((in_a3_lo == (float)iVar3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 2; + iVar3 = (int)in_a3_lo; + } + if (3 < param_1) { + if (in_stack_00000010 <= (float)iVar3) { + if ((in_stack_00000010 == (float)iVar3) && + (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { + uVar2 = 3; + } + } + else { + uVar2 = 3; + } } - } - else { - uVar2 = 3; - } } - } - return uVar2; + return uVar2; } @@ -134408,39 +133568,40 @@ undefined4 proc_7F0C2204(int param_1,float param_2,float param_3,float param_4,f undefined4 proc_7F0C234C(int param_1,float param_2,float param_3,float param_4,float param_5) { - u32 uVar1; - undefined4 uVar2; - float in_a3_lo; - int iVar3; - float in_stack_00000010; - - if ((param_5 < param_4) || - ((param_5 == param_4 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 1; - param_4 = param_5; - } - else { - uVar2 = 0; - } - iVar3 = (int)param_4; - if (2 < param_1) { - if ((in_a3_lo < (float)iVar3) || - ((in_a3_lo == (float)iVar3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { - uVar2 = 2; - iVar3 = (int)in_a3_lo; + u32 uVar1; + undefined4 uVar2; + float in_a3_lo; + int iVar3; + float in_stack_00000010; + + if ((param_5 < param_4) || + ((param_5 == param_4 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 1; + param_4 = param_5; } - if (3 < param_1) { - if ((float)iVar3 <= in_stack_00000010) { - if ((in_stack_00000010 == (float)iVar3) && (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { - uVar2 = 3; + else { + uVar2 = 0; + } + iVar3 = (int)param_4; + if (2 < param_1) { + if ((in_a3_lo < (float)iVar3) || + ((in_a3_lo == (float)iVar3 && (uVar1 = get_random_value(), (uVar1 & 1) != 0)))) { + uVar2 = 2; + iVar3 = (int)in_a3_lo; + } + if (3 < param_1) { + if ((float)iVar3 <= in_stack_00000010) { + if ((in_stack_00000010 == (float)iVar3) && + (uVar1 = get_random_value(), (uVar1 & 1) != 0)) { + uVar2 = 3; + } + } + else { + uVar2 = 3; + } } - } - else { - uVar2 = 3; - } } - } - return uVar2; + return uVar2; } @@ -134448,9 +133609,9 @@ undefined4 proc_7F0C234C(int param_1,float param_2,float param_3,float param_4,f void proc_7F0C2494(void) { - set_controls_locked_flag(1); - is_paused = 1; - return; + set_controls_locked_flag(1); + is_paused = 1; + return; } @@ -134458,25 +133619,25 @@ void proc_7F0C2494(void) undefined8 proc_7F0C24BC(void) { - ulonglong uVar1; - undefined8 uVar2; - - uVar1 = get_num_players(); - if (uVar1 == 1) { - uVar2 = 1; - } - else { - if (stop_play_flag == 0) { - uVar2 = 1; - if (pPlayer->mpmenuon != 0) { - uVar2 = 0; - } + s32 sVar2; + undefined8 uVar1; + + sVar2 = get_num_players(); + if (sVar2 == 1) { + uVar1 = 1; } else { - uVar2 = 0; + if (stop_play_flag == 0) { + uVar1 = 1; + if (pPlayer->mpmenuon != 0) { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } } - } - return uVar2; + return uVar1; } @@ -134484,8 +133645,8 @@ undefined8 proc_7F0C24BC(void) void set_stopplay_flag(void) { - stop_play_flag = 1; - return; + stop_play_flag = 1; + return; } @@ -134496,325 +133657,321 @@ void set_stopplay_flag(void) void proc_7F0C2530(longlong param_1) { - int *piVar1; - int iVar2; - ulonglong uVar3; - int iVar4; - s16 sVar7; - byte *pbVar5; - u32 uVar6; - int playernum; - uint uVar8; - playerperm *ppVar9; - uint uVar10; - ulonglong uVar11; - int *piVar12; - int *piVar13; - playerperm *ppVar14; - ulonglong uVar15; - float fVar16; - float fVar17; - float fVar18; - float extraout_f12; - float extraout_f12_00; - float extraout_f12_01; - float extraout_f12_02; - float extraout_f12_03; - float extraout_f12_04; - float extraout_f14; - float extraout_f14_00; - float extraout_f14_01; - float extraout_f14_02; - float extraout_f14_03; - float extraout_f14_04; - int aiStack252 [4]; - int iStack236; - float afStack232 [2]; - int aiStack224 [2]; - float afStack216 [2]; - uint uStack208; - int aiStack204 [6]; - int iStack180; - float fStack176; - float fStack172; - int iStack168; - int iStack164; - float fStack160; - float fStack156; - uint uStack152; - int iStack148; - int iStack144; - int iStack140; - int iStack136; - int iStack124; - int iStack112; - int iStack108; - int iStack92; - int iStack88; - int iStack84; - int iStack80; - int iStack68; - int iStack56; - int iStack52; - int iStack36; - int iStack32; - u32 uStack24; - undefined4 uStack20; - undefined4 auStack16 [4]; - - uVar3 = get_num_players(); - iVar4 = getMissiontime(); - sVar7 = (s16)iVar4; - music_related_30(); - set_missionstate(0); - proc_7F0C0BF0(); - musicTrack1Vol(sVar7); - music1_playing = 0; - musicTrack1Play(M_INTROSWOOSH); - proc_7F0C2494(); - if (param_1 == 0) { - is_gameover_flag = 1; - } - else { - is_gameover_flag = 300; - } - DAT_8008c710 = 1; - DAT_8008c714 = 0x14; - DAT_8008c708 = 0; - DAT_8008c70c = 0; - uStack24 = get_cur_playernum(); - uVar15 = 0; - if (0 < (longlong)uVar3) { - fVar17 = (float)(iVar4 + 1) / flt_8005BC80; - ppVar14 = &player1_playerdata; - piVar12 = aiStack252; - do { - uVar11 = 0; - playernum = (int)uVar15; - set_cur_player(playernum); - pPlayer->mpmenuon = 1; - pPlayer->mpmenumode = 3; - pPlayer->ptr_text_first_mp_award = 0; - pPlayer->ptr_text_second_mp_award = 0; - proc_7F08DB08(&uStack20,auStack16); - store_favorite_weapon_current_player(uStack20,auStack16[0]); - iVar4 = get_curplayer_shot_register(0); - *piVar12 = iVar4; - iVar4 = get_curplayer_shot_register(1); - piVar12[1] = iVar4; - piVar12[2] = 0; - piVar12[3] = 0; - piVar12[4] = 0; - iVar4 = get_selected_num_players(); - if (0 < iVar4) { - piVar13 = player1_playerdata.shotcount + playernum; - ppVar9 = &player1_playerdata + playernum; - iVar4 = piVar12[3]; - while( true ) { - piVar1 = piVar13 + 9; - piVar13 = piVar13 + 0x1c; - piVar12[3] = iVar4 + *piVar1; - if (uVar15 == uVar11) { - piVar12[4] = piVar12[4] + ppVar9->kills[0]; - } - else { - piVar12[2] = piVar12[2] + ppVar9->kills[0]; - } - uVar11 = SEXT48((int)uVar11 + 1); - ppVar9 = (playerperm *)(ppVar9->shotcount + 1); - iVar4 = get_selected_num_players(); - if ((longlong)iVar4 <= (longlong)uVar11) break; - iVar4 = piVar12[3]; - } - } - iVar4 = ppVar14->drawplayercount; - piVar12[7] = ppVar14->backshotcount; - piVar12[8] = iVar4; - iVar4 = ppVar14->longestlife; - iVar2 = ppVar14->shortestlife; - uVar15 = SEXT48(playernum + 1); - fVar18 = ppVar14->distance; - *(float *)(piVar12 + 5) = ((float)piVar12[2] * 100.00000000) / ((float)*piVar12 + 1.00000000); - *(float *)(piVar12 + 6) = - ((float)piVar12[2] * 100.00000000) / ((float)piVar12[3] + 1.00000000); - fVar16 = ppVar14->armourcount; - fVar18 = fVar18 / flt_8005BC84; - piVar12[0xb] = 0; - piVar12[0xc] = iVar4; - piVar12[0xd] = iVar2; - *(float *)(piVar12 + 10) = fVar16; - *(float *)(piVar12 + 9) = fVar18 / fVar17; - ppVar14 = ppVar14 + 1; - piVar12 = piVar12 + 0xe; - } while (uVar15 != uVar3); - } - set_cur_player(uStack24); - playernum = (int)uVar3; - iVar4 = proc_7F0C2024(playernum,iStack236,iStack180,iStack124,iStack68); - if (0 < aiStack252[iVar4 * 0xe + 4]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 1; - } - iVar4 = proc_7F0C2114(playernum,aiStack252[0],aiStack204[2],iStack140,iStack84); - if (aiStack252[iVar4 * 0xe] < 100) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 2; - } - iVar4 = proc_7F0C234C(playernum,extraout_f12,extraout_f14,afStack216[1],fStack156); - if (afStack216[iVar4 * 0xe + 1] <= 2.00000000) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 4; - } - iVar4 = proc_7F0C2204(playernum,extraout_f12_00,extraout_f14_00,afStack216[1],fStack156); - if (6.00000000 < afStack216[iVar4 * 0xe + 1]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 8; - } - iVar4 = proc_7F0C2024(playernum,aiStack252[1],aiStack204[3],iStack136,iStack80); - if (0 < aiStack252[iVar4 * 0xe + 1]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x10; - } - iVar4 = proc_7F0C2204(playernum,extraout_f12_01,extraout_f14_01,afStack232[0],fStack176); - if (0.00000000 < afStack232[iVar4 * 0xe]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x20; - } - iVar4 = proc_7F0C2204(playernum,extraout_f12_02,extraout_f14_02,afStack232[1],fStack172); - if (0.00000000 < afStack232[iVar4 * 0xe + 1]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x40; - } - iVar4 = proc_7F0C234C(playernum,extraout_f12_03,extraout_f14_03,afStack232[1],fStack172); - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x80; - iVar4 = proc_7F0C2114(playernum,aiStack224[1],iStack164,iStack108,iStack52); - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x100; - iVar4 = proc_7F0C2204(playernum,extraout_f12_04,extraout_f14_04,afStack216[0],fStack160); - if (10.00000000 < afStack216[iVar4 * 0xe]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x200; - } - iVar4 = proc_7F0C2114(playernum,aiStack224[0],iStack168,iStack112,iStack56); - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x400; - iVar4 = proc_7F0C2024(playernum,aiStack224[0],iStack168,iStack112,iStack56); - if ((0 < aiStack224[iVar4 * 0xe]) && (((&uStack208)[iVar4 * 0xe] & 0x400) == 0)) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x800; - } - iVar4 = proc_7F0C2024(playernum,aiStack204[0],iStack148,iStack92,iStack36); - if (0 < aiStack204[iVar4 * 0xe]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x2000; - } - iVar4 = proc_7F0C2114(playernum,aiStack204[1],iStack144,iStack88,iStack32); - if (0 < aiStack204[iVar4 * 0xe + 1]) { - (&uStack208)[iVar4 * 0xe] = (&uStack208)[iVar4 * 0xe] | 0x1000; - } - uVar15 = 0; - if (0 < (longlong)uVar3) { - if ((uVar3 & 1) == 0) { - iVar4 = 0; + int *piVar1; + int iVar2; + PLAYER_ID PVar3; + int iVar4; + s16 sVar7; + u8 *puVar5; + u32 uVar6; + uint uVar8; + playerperm *ppVar9; + uint uVar10; + PLAYER_ID PVar11; + int *piVar12; + int *piVar15; + ulonglong uVar13; + ulonglong uVar14; + playerperm *ppVar16; + PLAYER_ID playernum; + float fVar17; + float fVar18; + float fVar19; + float extraout_f12; + float extraout_f12_00; + float extraout_f12_01; + float extraout_f12_02; + float extraout_f12_03; + float extraout_f12_04; + float extraout_f14; + float extraout_f14_00; + float extraout_f14_01; + float extraout_f14_02; + float extraout_f14_03; + float extraout_f14_04; + int aiStack252 [4]; + int iStack236; + float afStack232 [2]; + int aiStack224 [2]; + float afStack216 [2]; + uint auStack208 [4]; + int iStack192; + int iStack180; + float fStack176; + float fStack172; + int iStack168; + int iStack164; + float fStack160; + float fStack156; + uint auStack152 [4]; + int iStack136; + int iStack124; + int iStack112; + int iStack108; + int iStack92; + int iStack88; + int iStack84; + int iStack80; + int iStack68; + int iStack56; + int iStack52; + int iStack36; + int iStack32; + PLAYER_ID PStack24; + undefined4 uStack20; + undefined4 auStack16 [4]; + + PVar3 = get_num_players(); + iVar4 = getMissiontime(); + sVar7 = (s16)iVar4; + music_related_30(); + set_missionstate(0); + proc_7F0C0BF0(); + musicTrack1Vol(sVar7); + music1_playing = 0; + musicTrack1Play(M_INTROSWOOSH); + proc_7F0C2494(); + if (param_1 == 0) { + is_gameover_flag = 1; } else { - uVar15 = 1; - if (player1_playerdata.most_killed_one_time == 4) { - uStack208 |= 0x10000; - } - else { - if (player1_playerdata.most_killed_one_time == 3) { - uStack208 |= 0x8000; - } - else { - if (player1_playerdata.most_killed_one_time == 2) { - uStack208 |= 0x4000; - } - } - } - iVar4 = 8; - if (uVar3 == 1) goto LAB_7f0c2d0c; + is_gameover_flag = 300; } - piVar12 = player1_playerdata.shotcount + (iVar4 - (int)uVar15) * 4; - do { - iVar4 = piVar12[0x16]; - playernum = (int)uVar15; - if (iVar4 == 4) { - (&uStack208)[playernum * 0xe] = (&uStack208)[playernum * 0xe] | 0x10000; -LAB_7f0c2c90: - iVar4 = piVar12[0x32]; - } - else { - if (iVar4 == 3) { - (&uStack208)[playernum * 0xe] = (&uStack208)[playernum * 0xe] | 0x8000; - goto LAB_7f0c2c90; - } - if (iVar4 == 2) { - (&uStack208)[playernum * 0xe] = (&uStack208)[playernum * 0xe] | 0x4000; - goto LAB_7f0c2c90; - } - iVar4 = piVar12[0x32]; - } - if (iVar4 == 4) { - (&uStack152)[playernum * 0xe] = (&uStack152)[playernum * 0xe] | 0x10000; - } - else { - if (iVar4 == 3) { - (&uStack152)[playernum * 0xe] = (&uStack152)[playernum * 0xe] | 0x8000; + DAT_8008c710 = 1; + DAT_8008c714 = 0x14; + DAT_8008c708 = 0; + DAT_8008c70c = 0; + PStack24 = get_cur_playernum(); + playernum = PLAYER1; + if (0 < (int)PVar3) { + fVar18 = (float)(iVar4 + 1) / flt_8005BC80; + ppVar16 = player1_playerdata; + piVar12 = aiStack252; + do { + PVar11 = PLAYER1; + set_cur_player(playernum); + pPlayer->mpmenuon = 1; + pPlayer->mpmenumode = 3; + pPlayer->ptr_text_first_mp_award = 0; + pPlayer->ptr_text_second_mp_award = 0; + proc_7F08DB08(&uStack20,auStack16); + store_favorite_weapon_current_player(uStack20,auStack16[0]); + iVar4 = get_curplayer_shot_register(0); + *piVar12 = iVar4; + iVar4 = get_curplayer_shot_register(1); + piVar12[1] = iVar4; + piVar12[2] = 0; + piVar12[3] = 0; + piVar12[4] = 0; + iVar4 = get_selected_num_players(); + if (0 < iVar4) { + piVar15 = player1_playerdata[0].shotcount + playernum; + ppVar9 = player1_playerdata + playernum; + iVar4 = piVar12[3]; + while( true ) { + piVar1 = piVar15 + 9; + piVar15 = piVar15 + 0x1c; + piVar12[3] = iVar4 + *piVar1; + if (playernum == PVar11) { + piVar12[4] = piVar12[4] + ppVar9->kills[0]; + } + else { + piVar12[2] = piVar12[2] + ppVar9->kills[0]; + } + PVar11 += PLAYER2; + ppVar9 = (playerperm *)(ppVar9->shotcount + 1); + iVar4 = get_selected_num_players(); + if (iVar4 <= (int)PVar11) break; + iVar4 = piVar12[3]; + } + } + iVar4 = ppVar16->drawplayercount; + piVar12[7] = ppVar16->backshotcount; + piVar12[8] = iVar4; + iVar4 = ppVar16->longestlife; + iVar2 = ppVar16->shortestlife; + playernum += PLAYER2; + fVar19 = ppVar16->distance; + *(float *)(piVar12 + 5) = + ((float)piVar12[2] * 100.00000000) / ((float)*piVar12 + 1.00000000); + *(float *)(piVar12 + 6) = + ((float)piVar12[2] * 100.00000000) / ((float)piVar12[3] + 1.00000000); + fVar17 = ppVar16->armourcount; + piVar12[0xb] = 0; + piVar12[0xc] = iVar4; + piVar12[0xd] = iVar2; + *(float *)(piVar12 + 10) = fVar17; + *(float *)(piVar12 + 9) = (fVar19 / flt_8005BC84) / fVar18; + ppVar16 = ppVar16 + 1; + piVar12 = piVar12 + 0xe; + } while (playernum != PVar3); + } + set_cur_player(PStack24); + iVar4 = proc_7F0C2024(PVar3,iStack236,iStack180,iStack124,iStack68); + if (0 < aiStack252[iVar4 * 0xe + 4]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 1; + } + iVar4 = proc_7F0C2114(PVar3,aiStack252[0],auStack208[3],auStack152[3],iStack84); + if (aiStack252[iVar4 * 0xe] < 100) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 2; + } + iVar4 = proc_7F0C234C(PVar3,extraout_f12,extraout_f14,afStack216[1],fStack156); + if (afStack216[iVar4 * 0xe + 1] <= 2.00000000) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 4; + } + iVar4 = proc_7F0C2204(PVar3,extraout_f12_00,extraout_f14_00,afStack216[1],fStack156); + if (6.00000000 < afStack216[iVar4 * 0xe + 1]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 8; + } + iVar4 = proc_7F0C2024(PVar3,aiStack252[1],iStack192,iStack136,iStack80); + if (0 < aiStack252[iVar4 * 0xe + 1]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x10; + } + iVar4 = proc_7F0C2204(PVar3,extraout_f12_01,extraout_f14_01,afStack232[0],fStack176); + if (0.00000000 < afStack232[iVar4 * 0xe]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x20; + } + iVar4 = proc_7F0C2204(PVar3,extraout_f12_02,extraout_f14_02,afStack232[1],fStack172); + if (0.00000000 < afStack232[iVar4 * 0xe + 1]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x40; + } + iVar4 = proc_7F0C234C(PVar3,extraout_f12_03,extraout_f14_03,afStack232[1],fStack172); + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x80; + iVar4 = proc_7F0C2114(PVar3,aiStack224[1],iStack164,iStack108,iStack52); + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x100; + iVar4 = proc_7F0C2204(PVar3,extraout_f12_04,extraout_f14_04,afStack216[0],fStack160); + if (10.00000000 < afStack216[iVar4 * 0xe]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x200; + } + iVar4 = proc_7F0C2114(PVar3,aiStack224[0],iStack168,iStack112,iStack56); + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x400; + iVar4 = proc_7F0C2024(PVar3,aiStack224[0],iStack168,iStack112,iStack56); + if ((0 < aiStack224[iVar4 * 0xe]) && ((auStack208[iVar4 * 0xe] & 0x400) == 0)) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x800; + } + iVar4 = proc_7F0C2024(PVar3,auStack208[1],auStack152[1],iStack92,iStack36); + if (0 < (int)auStack208[iVar4 * 0xe + 1]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x2000; + } + iVar4 = proc_7F0C2114(PVar3,auStack208[2],auStack152[2],iStack88,iStack32); + if (0 < (int)auStack208[iVar4 * 0xe + 2]) { + auStack208[iVar4 * 0xe] = auStack208[iVar4 * 0xe] | 0x1000; + } + playernum = PLAYER1; + if (0 < (int)PVar3) { + if ((PVar3 & 1) == 0) { + iVar4 = 0; } else { - if (iVar4 == 2) { - (&uStack152)[playernum * 0xe] = (&uStack152)[playernum * 0xe] | 0x4000; - } + playernum = PLAYER2; + if (player1_playerdata[0].most_killed_one_time == 4) { + auStack208[0] = auStack208[0] | 0x10000; + } + else { + if (player1_playerdata[0].most_killed_one_time == 3) { + auStack208[0] = auStack208[0] | 0x8000; + } + else { + if (player1_playerdata[0].most_killed_one_time == 2) { + auStack208[0] = auStack208[0] | 0x4000; + } + } + } + iVar4 = 8; + if (PVar3 == PLAYER2) goto LAB_7f0c2d0c; } - } - uVar15 = SEXT48(playernum + 2); - piVar12 = piVar12 + 0x38; - } while (uVar15 != uVar3); - } -LAB_7f0c2d0c: - uVar15 = 0; - if (0 < (longlong)uVar3) { - piVar12 = aiStack252; - do { - uVar11 = 0; - uVar8 = 0x10; - uVar10 = piVar12[0xb]; - while( true ) { - iVar4 = (int)uVar15; - if ((uVar10 & 1 << uVar8) != 0) { - piVar12[0xb] = uVar10 & ~(1 << uVar8); - uVar11 = 1; - pbVar5 = get_textptr_for_textID(*(u16 *)(loaded_text_index + uVar8 * 2)); - *(byte **)&(&ptr_BONDdata_p1)[iVar4]->ptr_text_first_mp_award = pbVar5; - uVar10 = piVar12[0xb]; - } - if (uVar10 == 0) { - uVar11 = 1; - } - uVar6 = get_random_value(); - uVar8 = uVar6 % 0x11; - if (false) { - trap(0x1c00); - } - if (uVar11 != 0) break; - uVar10 = piVar12[0xb]; - } - if (uVar11 < 2) { + piVar12 = player1_playerdata[0].shotcount + (iVar4 - playernum) * 4; do { - uVar6 = get_random_value(); - uVar8 = uVar6 % 0x11; - uVar10 = piVar12[0xb]; - if (false) { - trap(0x1c00); - } - uVar15 = uVar11; - if ((uVar10 & 1 << uVar8) != 0) { - piVar12[0xb] = uVar10 & ~(1 << uVar8); - uVar15 = 2; - pbVar5 = get_textptr_for_textID(*(u16 *)(loaded_text_index + uVar8 * 2)); - *(byte **)&(&ptr_BONDdata_p1)[iVar4]->ptr_text_second_mp_award = pbVar5; + iVar4 = piVar12[0x16]; + if (iVar4 == 4) { + auStack208[playernum * 0xe] = auStack208[playernum * 0xe] | 0x10000; +LAB_7f0c2c90: + iVar4 = piVar12[0x32]; + } + else { + if (iVar4 == 3) { + auStack208[playernum * 0xe] = auStack208[playernum * 0xe] | 0x8000; + goto LAB_7f0c2c90; + } + if (iVar4 == 2) { + auStack208[playernum * 0xe] = auStack208[playernum * 0xe] | 0x4000; + goto LAB_7f0c2c90; + } + iVar4 = piVar12[0x32]; + } + if (iVar4 == 4) { + auStack152[playernum * 0xe] = auStack152[playernum * 0xe] | 0x10000; + } + else { + if (iVar4 == 3) { + auStack152[playernum * 0xe] = auStack152[playernum * 0xe] | 0x8000; + } + else { + if (iVar4 == 2) { + auStack152[playernum * 0xe] = auStack152[playernum * 0xe] | 0x4000; + } + } + } + playernum += PLAYER3; + piVar12 = piVar12 + 0x38; + } while (playernum != PVar3); + } +LAB_7f0c2d0c: + playernum = PLAYER1; + if (0 < (int)PVar3) { + piVar12 = aiStack252; + do { + uVar13 = 0; + uVar8 = 0x10; uVar10 = piVar12[0xb]; - } - uVar11 = uVar15; - if (uVar10 == 0) { - uVar11 = 2; - } - } while (uVar10 != 0 && uVar15 < 2); - } - uVar15 = SEXT48(iVar4 + 1); - piVar12 = piVar12 + 0xe; - } while (uVar15 != uVar3); - } - return; + while( true ) { + if ((uVar10 & 1 << uVar8) != 0) { + piVar12[0xb] = uVar10 & ~(1 << uVar8); + uVar13 = 1; + puVar5 = get_textptr_for_textID + (*(TEXTFILESTRINGS *)(loaded_text_index + uVar8 * 2)); + *(u8 **)&ptr_BONDdata_p1[playernum]->ptr_text_first_mp_award = puVar5; + uVar10 = piVar12[0xb]; + } + if (uVar10 == 0) { + uVar13 = 1; + } + uVar6 = get_random_value(); + uVar8 = uVar6 % 0x11; + if (false) { + trap(0x1c00); + } + if (uVar13 != 0) break; + uVar10 = piVar12[0xb]; + } + if (uVar13 < 2) { + do { + uVar6 = get_random_value(); + uVar8 = uVar6 % 0x11; + uVar10 = piVar12[0xb]; + if (false) { + trap(0x1c00); + } + uVar14 = uVar13; + if ((uVar10 & 1 << uVar8) != 0) { + piVar12[0xb] = uVar10 & ~(1 << uVar8); + uVar14 = 2; + puVar5 = get_textptr_for_textID + (*(TEXTFILESTRINGS *)(loaded_text_index + uVar8 * 2)); + *(u8 **)&ptr_BONDdata_p1[playernum]->ptr_text_second_mp_award = puVar5; + uVar10 = piVar12[0xb]; + } + uVar13 = uVar14; + if (uVar10 == 0) { + uVar13 = 2; + } + } while (uVar10 != 0 && uVar14 < 2); + } + playernum += PLAYER2; + piVar12 = piVar12 + 0xe; + } while (playernum != PVar3); + } + return; } @@ -134825,227 +133982,220 @@ LAB_7f0c2d0c: int ** proc_7F0C2E80(void) { - Player *pPVar1; - int **ppiVar2; - u32 uVar6; - ulonglong uVar3; - uint uVar7; - int **ppiVar8; - int iVar9; - longlong lVar4; - ulonglong uVar5; - Player **ppPVar10; - int **ppiVar11; - uint uVar12; - uint uVar13; - char cStack1; - - uVar6 = get_cur_playernum(); - uVar3 = get_num_players(); - cStack1 = (char)uVar6; - uVar7 = (uint)uVar3; - ppiVar8 = (int **)get_controller_3dstick_L_R(cStack1,-2,1); - ppiVar11 = (int **)proc_7F09B4D8(uVar6); - ppiVar2 = is_gameover_flag; - if (((ppiVar11 == NULL) && - (ppiVar11 = is_gameover_flag, ppiVar2 = is_gameover_flag, 1 < (int)is_gameover_flag)) && - (ppiVar11 = is_gameover_flag, ppiVar2 = (int **)((int)is_gameover_flag - dword_80048498), - (int)(int **)((int)is_gameover_flag - dword_80048498) < 1)) { - ppiVar11 = is_gameover_flag; - ppiVar2 = (int **)((int)&rgba + 1); - } - is_gameover_flag = ppiVar2; - if (uVar7 == 1) { - return ppiVar11; - } - if ((pPlayer->bonddead != 0) && (is_gameover_flag == NULL)) { - pPlayer->mpmenuon = 0; - pPlayer->healthdisplaytime = 0; - return NULL; - } - if (1 < (int)is_gameover_flag) { - return is_gameover_flag; - } - iVar9 = proc_7F09B4D8(uVar6); - if (iVar9 == 0) { - DAT_8008c70c += dword_80048498; - DAT_8008c714 += dword_80048498; - if (0x13 < DAT_8008c70c) { - DAT_8008c70c += -0x14; - DAT_8008c708 = (uint)(DAT_8008c708 == 0); + Player *pPVar1; + u32 uVar3; + uint uVar4; + int **ppiVar5; + int iVar6; + s32 sVar7; + longlong lVar2; + int **ppiVar8; + uint uVar9; + uint uVar10; + Player **ppPVar11; + char cStack1; + + uVar3 = get_cur_playernum(); + uVar4 = get_num_players(); + cStack1 = (char)uVar3; + ppiVar5 = (int **)get_controller_3dstick_L_R(cStack1,-2,1); + ppiVar8 = (int **)proc_7F09B4D8(uVar3); + if (((ppiVar8 == NULL) && (ppiVar8 = is_gameover_flag, 1 < (int)is_gameover_flag)) && + (is_gameover_flag = (int **)((int)is_gameover_flag - speedgraphframes), + (int)is_gameover_flag < 1)) { + is_gameover_flag = (int **)((int)&rgba + 1); } - if (0x77 < DAT_8008c714) { - DAT_8008c714 += -0x78; - DAT_8008c710 = (uint)(DAT_8008c710 == 0); + if (uVar4 == 1) { + return ppiVar8; } - } - if (pplayersperm->most_killed_one_life < pPlayer->field_29F8) { - pplayersperm->most_killed_one_life = pPlayer->field_29F8; - } - iVar9 = getMissiontime(); - if (pplayersperm->longestlife < iVar9 - pPlayer->field_29F4) { - iVar9 = getMissiontime(); - pplayersperm->longestlife = iVar9 - pPlayer->field_29F4; - iVar9 = pPlayer->mpmenuon; - } - else { - iVar9 = pPlayer->mpmenuon; - } - if (iVar9 == 0) { - uVar3 = get_controller_buttons_pressed(cStack1,0x1000); - if (uVar3 == 0) { - return (int **)uVar3; - } - ppiVar11 = play_watch_sfx_beep(); - pPlayer->mpmenuon = 1; - pPlayer->mpmenumode = 3; - pPlayer->mpjoywascentre = 1; - pPlayer->apparenthealth = pPlayer->bondhealth; - pPlayer->apparentarmour = pPlayer->bondarmour; - return ppiVar11; - } - lVar4 = check_if_player_is_pressing_anything_right(cStack1); - if ((lVar4 != 0) && (lVar4 = MP_menu_page_adv_right(), lVar4 != 0)) { - play_watch_sfx_beep(); - pPlayer->mpmenumode = pPlayer->mpmenumode + 1; - goto LAB_7f0c350c; - } - lVar4 = check_if_player_is_pressing_anything_left(cStack1); - if ((lVar4 != 0) && (lVar4 = MP_menu_page_adv_left(), lVar4 != 0)) { - play_watch_sfx_beep(); - pPlayer->mpmenumode = pPlayer->mpmenumode + -1; - goto LAB_7f0c350c; - } - lVar4 = check_if_player_is_pressing_anything_right(cStack1); - if ((lVar4 != 0) && (pPlayer->mpmenumode == 6)) { - play_watch_sfx_beep(); - pPlayer->mpquitconfirm = 1; - goto LAB_7f0c350c; - } - lVar4 = check_if_player_is_pressing_anything_left(cStack1); - if ((lVar4 != 0) && (pPlayer->mpmenumode == 6)) { - play_watch_sfx_beep(); - pPlayer->mpquitconfirm = 0; - goto LAB_7f0c350c; - } - uVar5 = get_controller_buttons_pressed(cStack1,0x8000); - if ((uVar5 != 0) && (pPlayer->mpmenumode == 4)) { - play_watch_sfx_beep(); - if (is_paused == 0) { - is_paused = 1; - DAT_8008c71c = get_cur_playernum(); - set_controls_locked_flag(1); - } - else { - uVar6 = get_cur_playernum(); - if (uVar6 == DAT_8008c71c) { - is_paused = 0; - set_controls_locked_flag(0); - } - } - goto LAB_7f0c350c; - } - if (pPlayer->mpmenumode == 7) { - uVar3 = get_controller_buttons_pressed(cStack1,0x4000); - if (uVar3 != 0) { - play_watch_sfx_beep(); - pPlayer->mpmenuon = 1; - pPlayer->mpmenumode = 3; - } - goto LAB_7f0c350c; - } - uVar5 = get_controller_buttons_pressed(cStack1,0x9000); - if (((uVar5 == 0) || - (((iVar9 = pPlayer->mpmenumode, iVar9 == 5 || (iVar9 == 6)) && - ((iVar9 != 6 || (pPlayer->mpquitconfirm == 1)))))) && - (uVar5 = get_controller_buttons_pressed(cStack1,0x4000), uVar5 == 0)) { - uVar3 = get_controller_buttons_pressed(cStack1,0x9000); - if ((uVar3 == 0) || (pPlayer->mpmenumode != 5)) { - uVar3 = get_controller_buttons_pressed(cStack1,0x9000); - if ((uVar3 != 0) && ((pPlayer->mpmenumode == 6 && (pPlayer->mpquitconfirm == 1)))) { - play_watch_sfx_beep(); + if ((pPlayer->bonddead != 0) && (is_gameover_flag == NULL)) { pPlayer->mpmenuon = 0; pPlayer->healthdisplaytime = 0; - proc_7F0C2530(0); - } + return NULL; + } + if (1 < (int)is_gameover_flag) { + return is_gameover_flag; + } + iVar6 = proc_7F09B4D8(uVar3); + if (iVar6 == 0) { + DAT_8008c70c += speedgraphframes; + DAT_8008c714 += speedgraphframes; + if (0x13 < DAT_8008c70c) { + DAT_8008c70c += -0x14; + DAT_8008c708 = (uint)(DAT_8008c708 == 0); + } + if (0x77 < DAT_8008c714) { + DAT_8008c714 += -0x78; + DAT_8008c710 = (uint)(DAT_8008c710 == 0); + } + } + if (pPlayersPerm->most_killed_one_life < pPlayer->field_29F8) { + pPlayersPerm->most_killed_one_life = pPlayer->field_29F8; + } + iVar6 = getMissiontime(); + if (pPlayersPerm->longestlife < iVar6 - pPlayer->field_29F4) { + iVar6 = getMissiontime(); + pPlayersPerm->longestlife = iVar6 - pPlayer->field_29F4; + iVar6 = pPlayer->mpmenuon; } else { - play_watch_sfx_beep(); - pPlayer->mpmenumode = 6; - pPlayer->mpquitconfirm = 0; + iVar6 = pPlayer->mpmenuon; } - goto LAB_7f0c350c; - } - play_watch_sfx_beep(); - if (is_gameover_flag == NULL) { - pPlayer->mpmenuon = 0; - pPlayer->healthdisplaytime = 0x3c; - uVar6 = get_cur_playernum(); - if (uVar6 == DAT_8008c71c) { - is_paused = 0; - set_controls_locked_flag(0); - } - goto LAB_7f0c350c; - } - uVar12 = 0; - uVar13 = 0; - pPlayer->mpmenumode = 7; - if (0 < (int)uVar7) { - if ((uVar3 & 3) != 0) { - ppPVar10 = &ptr_BONDdata_p1; - do { - uVar13 += 1; - if ((*ppPVar10)->mpmenumode == 7) { - uVar12 += 1; + if (iVar6 == 0) { + uVar3 = get_controller_buttons_pressed(cStack1,START_BUTTON); + if (uVar3 == 0) { + return NULL; } - ppPVar10 = ppPVar10 + 1; - } while ((uVar7 & 3) != uVar13); - if (uVar13 == uVar7) goto LAB_7f0c33f8; + ppiVar8 = play_watch_sfx_beep(); + pPlayer->mpmenuon = 1; + pPlayer->mpmenumode = 3; + pPlayer->mpjoywascentre = 1; + pPlayer->apparenthealth = pPlayer->bondhealth; + pPlayer->apparentarmour = pPlayer->bondarmour; + return ppiVar8; } - ppPVar10 = &ptr_BONDdata_p1 + uVar13; - pPVar1 = *ppPVar10; - while( true ) { - if (pPVar1->mpmenumode == 7) { - uVar12 += 1; - pPVar1 = ppPVar10[1]; - } - else { - pPVar1 = ppPVar10[1]; - } - if (pPVar1->mpmenumode == 7) { - uVar12 += 1; - pPVar1 = ppPVar10[2]; - } - else { - pPVar1 = ppPVar10[2]; - } - if (pPVar1->mpmenumode == 7) { - uVar12 += 1; - pPVar1 = ppPVar10[3]; - } - else { - pPVar1 = ppPVar10[3]; - } - ppPVar10 = ppPVar10 + 4; - if (pPVar1->mpmenumode == 7) { - uVar12 += 1; - } - if (ppPVar10 == &ptr_BONDdata_p1 + uVar7) break; - pPVar1 = *ppPVar10; + sVar7 = check_if_player_is_pressing_anything_right(cStack1); + if ((sVar7 != 0) && (lVar2 = MP_menu_page_adv_right(), lVar2 != 0)) { + play_watch_sfx_beep(); + pPlayer->mpmenumode = pPlayer->mpmenumode + 1; + goto LAB_7f0c350c; + } + lVar2 = check_if_player_is_pressing_anything_left(cStack1); + if ((lVar2 != 0) && (lVar2 = MP_menu_page_adv_left(), lVar2 != 0)) { + play_watch_sfx_beep(); + pPlayer->mpmenumode = pPlayer->mpmenumode + -1; + goto LAB_7f0c350c; + } + sVar7 = check_if_player_is_pressing_anything_right(cStack1); + if ((sVar7 != 0) && (pPlayer->mpmenumode == 6)) { + play_watch_sfx_beep(); + pPlayer->mpquitconfirm = 1; + goto LAB_7f0c350c; + } + lVar2 = check_if_player_is_pressing_anything_left(cStack1); + if ((lVar2 != 0) && (pPlayer->mpmenumode == 6)) { + play_watch_sfx_beep(); + pPlayer->mpquitconfirm = 0; + goto LAB_7f0c350c; + } + uVar3 = get_controller_buttons_pressed(cStack1,A_BUTTON); + if ((uVar3 != 0) && (pPlayer->mpmenumode == 4)) { + play_watch_sfx_beep(); + if (is_paused == 0) { + is_paused = 1; + DAT_8008c71c = get_cur_playernum(); + set_controls_locked_flag(1); + } + else { + uVar3 = get_cur_playernum(); + if (uVar3 == DAT_8008c71c) { + is_paused = 0; + set_controls_locked_flag(0); + } + } + goto LAB_7f0c350c; + } + if (pPlayer->mpmenumode == 7) { + uVar3 = get_controller_buttons_pressed(cStack1,B_BUTTON); + if (uVar3 != 0) { + play_watch_sfx_beep(); + pPlayer->mpmenuon = 1; + pPlayer->mpmenumode = 3; + } + goto LAB_7f0c350c; + } + uVar3 = get_controller_buttons_pressed(cStack1,START_BUTTON|A_BUTTON); + if (((uVar3 == 0) || + (((iVar6 = pPlayer->mpmenumode, iVar6 == 5 || (iVar6 == 6)) && + ((iVar6 != 6 || (pPlayer->mpquitconfirm == 1)))))) && + (uVar3 = get_controller_buttons_pressed(cStack1,B_BUTTON), uVar3 == 0)) { + uVar3 = get_controller_buttons_pressed(cStack1,START_BUTTON|A_BUTTON); + if ((uVar3 == 0) || (pPlayer->mpmenumode != 5)) { + uVar3 = get_controller_buttons_pressed(cStack1,START_BUTTON|A_BUTTON); + if ((uVar3 != 0) && ((pPlayer->mpmenumode == 6 && (pPlayer->mpquitconfirm == 1)))) { + play_watch_sfx_beep(); + pPlayer->mpmenuon = 0; + pPlayer->healthdisplaytime = 0; + proc_7F0C2530(0); + } + } + else { + play_watch_sfx_beep(); + pPlayer->mpmenumode = 6; + pPlayer->mpquitconfirm = 0; + } + goto LAB_7f0c350c; + } + play_watch_sfx_beep(); + if (is_gameover_flag == NULL) { + pPlayer->mpmenuon = 0; + pPlayer->healthdisplaytime = 0x3c; + uVar3 = get_cur_playernum(); + if (uVar3 == DAT_8008c71c) { + is_paused = 0; + set_controls_locked_flag(0); + } + goto LAB_7f0c350c; + } + uVar9 = 0; + uVar10 = 0; + pPlayer->mpmenumode = 7; + if (0 < (int)uVar4) { + if ((uVar4 & 3) != 0) { + ppPVar11 = ptr_BONDdata_p1; + do { + uVar10 += 1; + if ((*ppPVar11)->mpmenumode == 7) { + uVar9 += 1; + } + ppPVar11 = ppPVar11 + 1; + } while ((uVar4 & 3) != uVar10); + if (uVar10 == uVar4) goto LAB_7f0c33f8; + } + ppPVar11 = ptr_BONDdata_p1 + uVar10; + pPVar1 = *ppPVar11; + while( true ) { + if (pPVar1->mpmenumode == 7) { + uVar9 += 1; + pPVar1 = ppPVar11[1]; + } + else { + pPVar1 = ppPVar11[1]; + } + if (pPVar1->mpmenumode == 7) { + uVar9 += 1; + pPVar1 = ppPVar11[2]; + } + else { + pPVar1 = ppPVar11[2]; + } + if (pPVar1->mpmenumode == 7) { + uVar9 += 1; + pPVar1 = ppPVar11[3]; + } + else { + pPVar1 = ppPVar11[3]; + } + ppPVar11 = ppPVar11 + 4; + if (pPVar1->mpmenumode == 7) { + uVar9 += 1; + } + if (ppPVar11 == ptr_BONDdata_p1 + uVar4) break; + pPVar1 = *ppPVar11; + } } - } LAB_7f0c33f8: - if (uVar12 == uVar7) { - set_loaded_stage(LEVELID_TITLE); - } + if (uVar9 == uVar4) { + set_loaded_stage(LEVELID_TITLE); + } LAB_7f0c350c: - if ((ppiVar8 == NULL) || (ppiVar8 == (int **)0xffffffff)) { - pPlayer->mpjoywascentre = 1; - } - else { - pPlayer->mpjoywascentre = 0; - } - return ppiVar8; + if ((ppiVar5 == NULL) || (ppiVar5 == (int **)0xffffffff)) { + pPlayer->mpjoywascentre = 1; + } + else { + pPlayer->mpjoywascentre = 0; + } + return ppiVar5; } @@ -135054,61 +134204,74 @@ uint * display_text_for_playerdata_on_MP_menu (uint *param_1,int param_2,uint param_3,undefined8 param_4,undefined4 param_5) { - short sVar1; - short sVar2; - byte abStack24 [8]; - int iStack16; - int iStack12; - uint uStack8; - uint uStack4; - - sprintf((char *)abStack24,"%d",param_4); - proc_7F0AE98C(&iStack16,&iStack12,abStack24,D_80040EB0,D_80040EAC,0); - uStack4 = param_2 - (iStack12 >> 1); - switch(param_5) { - case 0: + uint *puVar1; + short sVar2; + short sVar3; + byte abStack24 [8]; + int iStack16; + int iStack12; + uint uStack8; + uint uStack4; + + sprintf((char *)abStack24,"%d",param_4); + proc_7F0AE98C(&iStack16,&iStack12,abStack24,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + uStack4 = param_2 - (iStack12 >> 1); uStack8 = param_3; - sVar1 = get_video2_settings_txtClipW(); - sVar2 = get_video2_settings_txtClipH(); - param_1 = en_text_write_stuff(param_1,(int *)&uStack4,(int *)&uStack8,abStack24,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar1,(int)sVar2,0,0); - break; - case 1: - uStack8 = param_3; - sVar1 = get_video2_settings_txtClipW(); - sVar2 = get_video2_settings_txtClipH(); - param_1 = jp_text_stuff(param_1,&uStack4,&uStack8,abStack24,D_80040EB0,(int)D_80040EAC, - 0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar1,(int)sVar2,0,0); - break; - case 2: - uStack8 = param_3; - sVar1 = get_video2_settings_txtClipW(); - sVar2 = get_video2_settings_txtClipH(); - param_1 = en_text_write_stuff(param_1,(int *)&uStack4,(int *)&uStack8,abStack24,D_80040EB0, - (int)D_80040EAC,0xff4040b0,(int)sVar1,(int)sVar2,0,0); - break; - case 3: - uStack8 = param_3; - sVar1 = get_video2_settings_txtClipW(); - sVar2 = get_video2_settings_txtClipH(); - param_1 = jp_text_stuff(param_1,&uStack4,&uStack8,abStack24,D_80040EB0,(int)D_80040EAC, - 0xffa0a0f0,0x700000a0,(int)sVar1,(int)sVar2,0,0); - break; - case 4: - uStack8 = param_3; - sVar1 = get_video2_settings_txtClipW(); - sVar2 = get_video2_settings_txtClipH(); - param_1 = en_text_write_stuff(param_1,(int *)&uStack4,(int *)&uStack8,abStack24,D_80040EB0, - (int)D_80040EAC,0x4040ffb0,(int)sVar1,(int)sVar2,0,0); - break; - case 5: - uStack8 = param_3; - sVar1 = get_video2_settings_txtClipW(); - sVar2 = get_video2_settings_txtClipH(); - param_1 = jp_text_stuff(param_1,&uStack4,&uStack8,abStack24,D_80040EB0,(int)D_80040EAC, - 0xa0a0fff0,0x70a0,(int)sVar1,(int)sVar2,0,0); - } - return param_1; + switch(param_5) { + case 0: + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1 = (uint *)(int)sVar3; + en_text_write_stuff(param_1,(int *)&uStack4,(int *)&uStack8,abStack24, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar2,(int)sVar3,0,0); + param_1 = puVar1; + break; + case 1: + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1 = (uint *)(int)sVar3; + jp_text_stuff(param_1,&uStack4,&uStack8,abStack24,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar2, + (int)sVar3,0,0); + param_1 = puVar1; + break; + case 2: + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1 = (uint *)(int)sVar3; + en_text_write_stuff(param_1,(int *)&uStack4,(int *)&uStack8,abStack24, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff4040b0, + (int)sVar2,(int)sVar3,0,0); + param_1 = puVar1; + break; + case 3: + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1 = (uint *)(int)sVar3; + jp_text_stuff(param_1,&uStack4,&uStack8,abStack24,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xffa0a0f0,0x700000a0,(int)sVar2,(int)sVar3,0,0); + param_1 = puVar1; + break; + case 4: + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1 = (uint *)(int)sVar3; + en_text_write_stuff(param_1,(int *)&uStack4,(int *)&uStack8,abStack24, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0x4040ffb0, + (int)sVar2,(int)sVar3,0,0); + param_1 = puVar1; + break; + case 5: + sVar2 = get_video2_settings_txtClipW(); + sVar3 = get_video2_settings_txtClipH(); + puVar1 = (uint *)(int)sVar3; + jp_text_stuff(param_1,&uStack4,&uStack8,abStack24,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xa0a0fff0,0x70a0,(int)sVar2,(int)sVar3,0,0); + param_1 = puVar1; + } + return param_1; } @@ -135119,158 +134282,157 @@ uint * display_text_for_playerdata_on_MP_menu int get_points_for_mp_player(uint param_1) { - char *pcVar1; - char cVar2; - int iVar3; - int iVar4; - int iVar5; - ulonglong uVar6; - undefined4 uVar7; - playerperm *ppVar8; - int *piVar9; - playerperm *ppVar10; - int *piVar11; - int iVar12; - uint uVar13; - int iVar14; - uint uVar15; - playerperm *ppVar16; - int iVar17; - - cVar2 = (&player1_playerdata)[param_1].have_token_or_goldengun; - uVar6 = get_num_players(); - uVar7 = (uint)uVar6; - uVar7 = get_scenario(); - iVar12 = 0; - switch(uVar7) { - case 0: - case 3: - case 4: - uVar15 = 0; - if (0 < (int)uVar7) { - if ((uVar6 & 3) != 0) { - do { - if (uVar15 == param_1) { - iVar17 = -(&player1_playerdata)[uVar15].kills[param_1]; - } - else { - iVar17 = (&player1_playerdata)[param_1].kills[uVar15]; - } - iVar12 += iVar17; - uVar15 += 1; - } while ((uVar7 & 3) != uVar15); - if (uVar15 == uVar7) goto LAB_7f0c3af8; - } - do { - if (uVar15 == param_1) { - iVar17 = -(&player1_playerdata)[uVar15].kills[param_1]; - } - else { - iVar17 = (&player1_playerdata)[param_1].kills[uVar15]; - } - if (uVar15 == param_1 - 1) { - iVar14 = -(&player2_player_data)[uVar15].kills[param_1]; - } - else { - iVar14 = (&player1_playerdata)[param_1].kills[uVar15 + 1]; - } - if (uVar15 == param_1 - 2) { - iVar3 = -(&player3_player_data)[uVar15].kills[param_1]; - } - else { - iVar3 = (&player1_playerdata)[param_1].kills[uVar15 + 2]; - } - if (uVar15 == param_1 - 3) { - iVar4 = -(&player4_player_data)[uVar15].kills[param_1]; - } - else { - iVar4 = (&player1_playerdata)[param_1].kills[uVar15 + 3]; - } - iVar12 = iVar12 + iVar17 + iVar14 + iVar3 + iVar4; - uVar15 += 4; - } while (uVar15 != uVar7); - } -LAB_7f0c3af8: - iVar12 += (&player1_playerdata)[param_1].ggkillcount * (uVar7 - 2); - break; - case 1: - iVar12 = 4 - (uint)(byte)(&player1_playerdata)[param_1].order_out_in_yolt; - break; - case 2: - iVar12 = (&player1_playerdata)[param_1].flag_counter; - break; - case 5: - case 6: - case 7: - uVar15 = 0; - if (0 < (int)uVar7) { - ppVar16 = &player1_playerdata; - do { - if ((cVar2 == ppVar16->have_token_or_goldengun) && (uVar13 = 0, 0 < (int)uVar7)) { - if ((uVar6 & 3) == 0) { - iVar17 = 0; - } - else { - ppVar10 = &player1_playerdata; - ppVar8 = &player1_playerdata + uVar15; + char *pcVar1; + char cVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + undefined4 uVar7; + playerperm *ppVar8; + int *piVar9; + playerperm *ppVar10; + int *piVar11; + int iVar12; + uint uVar13; + int iVar14; + uint uVar15; + playerperm *ppVar16; + int iVar17; + + cVar2 = player1_playerdata[param_1].have_token_or_goldengun; + uVar6 = get_num_players(); + uVar7 = get_scenario(); + iVar12 = 0; + switch(uVar7) { + case 0: + case 3: + case 4: + uVar15 = 0; + if (0 < (int)uVar6) { + if ((uVar6 & 3) != 0) { + do { + if (uVar15 == param_1) { + iVar17 = -player1_playerdata[uVar15].kills[param_1]; + } + else { + iVar17 = player1_playerdata[param_1].kills[uVar15]; + } + iVar12 += iVar17; + uVar15 += 1; + } while ((uVar6 & 3) != uVar15); + if (uVar15 == uVar6) goto LAB_7f0c3af8; + } do { - pcVar1 = &ppVar10->have_token_or_goldengun; - uVar13 += 1; - ppVar10 = ppVar10 + 1; - if (cVar2 == *pcVar1) { - iVar17 = -ppVar8->kills[0]; - } - else { - iVar17 = ppVar8->kills[0]; - } - iVar12 += iVar17; - ppVar8 = (playerperm *)(ppVar8->shotcount + 1); - } while ((uVar7 & 3) != uVar13); - iVar17 = uVar13 * 8; - if (uVar13 == uVar7) goto LAB_7f0c3c78; - } - iVar14 = uVar13 * 4; - piVar9 = (&player1_playerdata)[uVar15].shotcount + uVar13; - piVar11 = player1_playerdata.shotcount + (iVar17 - uVar13) * 4; - do { - iVar14 += 0x10; - if (cVar2 == *(char *)((int)piVar11 + 0x69)) { - iVar17 = -piVar9[9]; - } - else { - iVar17 = piVar9[9]; - } - if (cVar2 == *(char *)((int)piVar11 + 0xd9)) { - iVar3 = -piVar9[10]; - } - else { - iVar3 = piVar9[10]; - } - if (cVar2 == *(char *)((int)piVar11 + 0x149)) { - iVar4 = -piVar9[0xb]; - } - else { - iVar4 = piVar9[0xb]; - } - pcVar1 = (char *)((int)piVar11 + 0x1b9); - piVar11 = piVar11 + 0x70; - if (cVar2 == *pcVar1) { - iVar5 = -piVar9[0xc]; - } - else { - iVar5 = piVar9[0xc]; - } - iVar12 = iVar12 + iVar17 + iVar3 + iVar4 + iVar5; - piVar9 = piVar9 + 4; - } while (iVar14 != uVar7 << 2); + if (uVar15 == param_1) { + iVar17 = -player1_playerdata[uVar15].kills[param_1]; + } + else { + iVar17 = player1_playerdata[param_1].kills[uVar15]; + } + if (uVar15 == param_1 - 1) { + iVar14 = -player1_playerdata[uVar15 + 1].kills[param_1]; + } + else { + iVar14 = player1_playerdata[param_1].kills[uVar15 + 1]; + } + if (uVar15 == param_1 - 2) { + iVar3 = -player1_playerdata[uVar15 + 2].kills[param_1]; + } + else { + iVar3 = player1_playerdata[param_1].kills[uVar15 + 2]; + } + if (uVar15 == param_1 - 3) { + iVar4 = -player1_playerdata[uVar15 + 3].kills[param_1]; + } + else { + iVar4 = player1_playerdata[param_1].kills[uVar15 + 3]; + } + iVar12 = iVar12 + iVar17 + iVar14 + iVar3 + iVar4; + uVar15 += 4; + } while (uVar15 != uVar6); } +LAB_7f0c3af8: + iVar12 += player1_playerdata[param_1].ggkillcount * (uVar6 - 2); + break; + case 1: + iVar12 = 4 - (uint)(byte)player1_playerdata[param_1].order_out_in_yolt; + break; + case 2: + iVar12 = player1_playerdata[param_1].flag_counter; + break; + case 5: + case 6: + case 7: + uVar15 = 0; + if (0 < (int)uVar6) { + ppVar16 = player1_playerdata; + do { + if ((cVar2 == ppVar16->have_token_or_goldengun) && (uVar13 = 0, 0 < (int)uVar6)) { + if ((uVar6 & 3) == 0) { + iVar17 = 0; + } + else { + ppVar10 = player1_playerdata; + ppVar8 = player1_playerdata + uVar15; + do { + pcVar1 = &ppVar10->have_token_or_goldengun; + uVar13 += 1; + ppVar10 = ppVar10 + 1; + if (cVar2 == *pcVar1) { + iVar17 = -ppVar8->kills[0]; + } + else { + iVar17 = ppVar8->kills[0]; + } + iVar12 += iVar17; + ppVar8 = (playerperm *)(ppVar8->shotcount + 1); + } while ((uVar6 & 3) != uVar13); + iVar17 = uVar13 * 8; + if (uVar13 == uVar6) goto LAB_7f0c3c78; + } + iVar14 = uVar13 * 4; + piVar9 = player1_playerdata[uVar15].shotcount + uVar13; + piVar11 = player1_playerdata[0].shotcount + (iVar17 - uVar13) * 4; + do { + iVar14 += 0x10; + if (cVar2 == *(char *)((int)piVar11 + 0x69)) { + iVar17 = -piVar9[9]; + } + else { + iVar17 = piVar9[9]; + } + if (cVar2 == *(char *)((int)piVar11 + 0xd9)) { + iVar3 = -piVar9[10]; + } + else { + iVar3 = piVar9[10]; + } + if (cVar2 == *(char *)((int)piVar11 + 0x149)) { + iVar4 = -piVar9[0xb]; + } + else { + iVar4 = piVar9[0xb]; + } + pcVar1 = (char *)((int)piVar11 + 0x1b9); + piVar11 = piVar11 + 0x70; + if (cVar2 == *pcVar1) { + iVar5 = -piVar9[0xc]; + } + else { + iVar5 = piVar9[0xc]; + } + iVar12 = iVar12 + iVar17 + iVar3 + iVar4 + iVar5; + piVar9 = piVar9 + 4; + } while (iVar14 != uVar6 << 2); + } LAB_7f0c3c78: - uVar15 += 1; - ppVar16 = ppVar16 + 1; - } while (uVar15 != uVar7); + uVar15 += 1; + ppVar16 = ppVar16 + 1; + } while (uVar15 != uVar6); + } } - } - return iVar12; + return iVar12; } @@ -135281,152 +134443,148 @@ LAB_7f0c3c78: int write_playerrank_to_buffer(char *buffer,uint player) { - int iVar1; - undefined4 uVar2; - undefined4 uVar3; - ulonglong uVar4; - int iVar5; - byte *__format; - int *piVar6; - uint uVar7; - uint *puVar8; - int iVar9; - int iVar10; - ulonglong uVar11; - int *piVar12; - longlong lVar13; - int iVar14; - uint uStack40; - uint uStack36; - int aiStack24 [4]; - int iStack8; - int iStack4; - - iStack4 = get_scenario(); - uVar4 = get_num_players(); - lVar13 = 0; - if (0 < (longlong)uVar4) { - puVar8 = &uStack40; - piVar6 = aiStack24; - do { - iStack8 = (int)uVar4; - uVar7 = (uint)lVar13; - iVar5 = get_points_for_mp_player(uVar7); - uVar4 = SEXT48(iStack8); - *puVar8 = uVar7; - lVar13 = (longlong)(int)(uVar7 + 1); - puVar8 = puVar8 + 1; - *piVar6 = iVar5; - piVar6 = piVar6 + 1; - } while (lVar13 < (longlong)uVar4); - } - uVar11 = 0; - if (0 < (longlong)uVar4) { - iVar5 = (int)uVar4 + -1; - do { - uVar7 = uStack40; - iVar14 = 0; - uVar11 = SEXT48((int)uVar11 + 1); - if (0 < iVar5) { - if (((int)uVar4 - 1U & 1) != 0) { - iVar14 = 1; - iVar10 = aiStack24[0]; - if (aiStack24[0] < aiStack24[1]) { - uStack40 = uStack36; - uStack36 = uVar7; - iVar10 = aiStack24[1]; - aiStack24[1] = aiStack24[0]; - } - aiStack24[0] = iVar10; - if (iVar5 == 1) goto LAB_7f0c3df4; - } - iVar10 = iVar14 * 4; - piVar6 = aiStack24 + iVar14; + undefined4 uVar1; + undefined4 uVar2; + int iVar3; + uint uVar4; + u8 *__format; + uint *puVar5; + uint *puVar6; + uint uVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + int iVar12; + uint auStack40 [4]; + uint auStack24 [4]; + int iStack8; + int iStack4; + + iStack4 = get_scenario(); + iVar3 = get_num_players(); + uVar11 = 0; + if (0 < iVar3) { + puVar6 = auStack40; + puVar5 = auStack40 + 4; do { - iVar14 = *piVar6; - iVar1 = piVar6[1]; - if (iVar14 < iVar1) { - uVar2 = *(undefined4 *)((int)&uStack40 + iVar10 + 4); - uVar3 = *(undefined4 *)((int)&uStack40 + iVar10); - *piVar6 = iVar1; - piVar6[1] = iVar14; - *(undefined4 *)((int)&uStack40 + iVar10) = uVar2; - *(undefined4 *)((int)&uStack40 + iVar10 + 4) = uVar3; - iVar9 = piVar6[2]; - } - else { - iVar9 = piVar6[2]; - iVar14 = iVar1; - } - if (iVar14 < iVar9) { - uVar2 = *(undefined4 *)((int)&uStack40 + iVar10 + 8); - uVar3 = *(undefined4 *)((int)&uStack40 + iVar10 + 4); - piVar6[2] = iVar14; - piVar6[1] = iVar9; - *(undefined4 *)((int)&uStack40 + iVar10 + 4) = uVar2; - *(undefined4 *)((int)&uStack40 + iVar10 + 8) = uVar3; - } - piVar6 = piVar6 + 2; - iVar10 += 8; - } while (piVar6 != aiStack24 + iVar5); - } + iStack8 = iVar3; + uVar4 = get_points_for_mp_player(uVar11); + iVar3 = iStack8; + *puVar6 = uVar11; + uVar11 += 1; + puVar6 = puVar6 + 1; + *puVar5 = uVar4; + puVar5 = puVar5 + 1; + } while ((int)uVar11 < iVar3); + } + iVar9 = 0; + if (0 < iVar3) { + iVar10 = iVar3 + -1; + do { + uVar11 = auStack40[0]; + iVar12 = 0; + iVar9 += 1; + if (0 < iVar10) { + if ((iVar3 - 1U & 1) != 0) { + iVar12 = 1; + iVar8 = auStack24[0]; + if (auStack24[0] < auStack24[1]) { + auStack40[0] = auStack40[1]; + auStack40[1] = uVar11; + iVar8 = auStack24[1]; + auStack24[1] = auStack24[0]; + } + auStack24[0] = iVar8; + if (iVar10 == 1) goto LAB_7f0c3df4; + } + iVar8 = iVar12 * 4; + puVar5 = auStack40 + 4 + iVar12; + do { + uVar11 = *puVar5; + uVar4 = puVar5[1]; + if ((int)uVar11 < (int)uVar4) { + uVar1 = *(undefined4 *)((int)auStack40 + iVar8 + 4); + uVar2 = *(undefined4 *)((int)auStack40 + iVar8); + *puVar5 = uVar4; + puVar5[1] = uVar11; + *(undefined4 *)((int)auStack40 + iVar8) = uVar1; + *(undefined4 *)((int)auStack40 + iVar8 + 4) = uVar2; + uVar7 = puVar5[2]; + } + else { + uVar7 = puVar5[2]; + uVar11 = uVar4; + } + if ((int)uVar11 < (int)uVar7) { + uVar1 = *(undefined4 *)((int)auStack40 + iVar8 + 8); + uVar2 = *(undefined4 *)((int)auStack40 + iVar8 + 4); + puVar5[2] = uVar11; + puVar5[1] = uVar7; + *(undefined4 *)((int)auStack40 + iVar8 + 4) = uVar1; + *(undefined4 *)((int)auStack40 + iVar8 + 8) = uVar2; + } + puVar5 = puVar5 + 2; + iVar8 += 8; + } while (puVar5 != auStack40 + 4 + iVar10); + } LAB_7f0c3df4: - } while (uVar11 != uVar4); - } - uVar11 = 0; - iVar5 = 0; - puVar8 = &uStack40; - if (0 < (longlong)uVar4) { - do { - if (player == *puVar8) break; - uVar11 = SEXT48((int)uVar11 + 1); - puVar8 = puVar8 + 1; - } while (uVar11 != uVar4); - } - if (-1 < (longlong)uVar11) { - piVar6 = aiStack24; - piVar12 = piVar6 + (int)uVar11; - do { - if (*piVar6 == *piVar12) break; - iVar5 += 1; - piVar6 = piVar6 + 1; - } while ((int)uVar11 + 1 != iVar5); - } - if (iVar5 == 0) { - __format = get_textptr_for_textID(0xa011); - iStack4 = sprintf(buffer,(char *)__format); - } - else { - if (iVar5 == 1) { - __format = get_textptr_for_textID(0xa012); - iStack4 = sprintf(buffer,(char *)__format); + } while (iVar9 != iVar3); + } + iVar9 = 0; + iVar10 = 0; + puVar5 = auStack40; + if (0 < iVar3) { + do { + if (player == *puVar5) break; + iVar10 += 1; + puVar5 = puVar5 + 1; + } while (iVar10 != iVar3); + } + if (-1 < iVar10) { + puVar5 = auStack40 + 4; + puVar6 = puVar5 + iVar10; + do { + if (*puVar5 == *puVar6) break; + iVar9 += 1; + puVar5 = puVar5 + 1; + } while (iVar10 + 1 != iVar9); + } + if (iVar9 == 0) { + __format = get_textptr_for_textID(0xa011); + iStack4 = sprintf(buffer,(char *)__format); } else { - if (iVar5 == 2) { - if ((iStack4 == 5) || (iStack4 == 7)) { - __format = get_textptr_for_textID(0xa012); - iStack4 = sprintf(buffer,(char *)__format); - } - else { - __format = get_textptr_for_textID(0xa013); - iStack4 = sprintf(buffer,(char *)__format); - } - } - else { - if (iVar5 == 3) { - if (iStack4 == 6) { + if (iVar9 == 1) { __format = get_textptr_for_textID(0xa012); iStack4 = sprintf(buffer,(char *)__format); - } - else { - __format = get_textptr_for_textID(0xa014); - iStack4 = sprintf(buffer,(char *)__format); - } } - } + else { + if (iVar9 == 2) { + if ((iStack4 == 5) || (iStack4 == 7)) { + __format = get_textptr_for_textID(0xa012); + iStack4 = sprintf(buffer,(char *)__format); + } + else { + __format = get_textptr_for_textID(0xa013); + iStack4 = sprintf(buffer,(char *)__format); + } + } + else { + if (iVar9 == 3) { + if (iStack4 == 6) { + __format = get_textptr_for_textID(0xa012); + iStack4 = sprintf(buffer,(char *)__format); + } + else { + __format = get_textptr_for_textID(0xa014); + iStack4 = sprintf(buffer,(char *)__format); + } + } + } + } } - } - return iStack4; + return iStack4; } @@ -135434,34 +134592,34 @@ LAB_7f0c3df4: undefined8 true_if_displaying_rank_in_mp(int param_1) { - undefined4 uVar2; - undefined8 uVar1; - - uVar2 = get_scenario(); - switch(uVar2) { - case 0: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - uVar1 = 1; - break; - case 1: - if (param_1 == 0) { - uVar1 = 1; - } - else { - uVar1 = 0; - } - break; - default: - do { + undefined4 uVar2; + undefined8 uVar1; + + uVar2 = get_scenario(); + switch(uVar2) { + case 0: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + uVar1 = 1; + break; + case 1: + if (param_1 == 0) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + break; + default: + do { // WARNING: Do nothing block with infinite loop - } while( true ); - } - return uVar1; + } while( true ); + } + return uVar1; } @@ -135469,29 +134627,29 @@ undefined8 true_if_displaying_rank_in_mp(int param_1) undefined8 true_if_displaying_score_in_mp(void) { - undefined4 uVar2; - undefined8 uVar1; - - uVar2 = get_scenario(); - switch(uVar2) { - case 0: - case 3: - case 4: - case 5: - case 6: - case 7: - uVar1 = 1; - break; - case 1: - case 2: - uVar1 = 0; - break; - default: - do { + undefined4 uVar2; + undefined8 uVar1; + + uVar2 = get_scenario(); + switch(uVar2) { + case 0: + case 3: + case 4: + case 5: + case 6: + case 7: + uVar1 = 1; + break; + case 1: + case 2: + uVar1 = 0; + break; + default: + do { // WARNING: Do nothing block with infinite loop - } while( true ); - } - return uVar1; + } while( true ); + } + return uVar1; } @@ -135504,718 +134662,786 @@ undefined8 true_if_displaying_score_in_mp(void) uint * mp_watch_menu_display(uint *param_1) { - int *piVar1; - int *piVar2; - int *piVar3; - int *piVar4; - bool bVar5; - ulonglong uVar6; - u32 uVar8; - longlong lVar7; - byte *pbVar9; - int iVar10; - uint *DL; - undefined4 *puVar11; - byte *pbVar12; - short sVar13; - short sVar14; - int *piVar15; - uint uVar16; - int iVar17; - ulonglong uVar18; - int *piStack148; - int iStack136; - int iStack116; - int iStack112; - int iStack108; - int iStack104; - int iStack100; - int iStack96; - int iStack92; - int iStack88; - undefined4 uStack84; - undefined4 uStack80; - undefined4 uStack76; - uint uStack72; - int iStack68; - int iStack64; - int iStack60; - int iStack56; - char *pcStack52; - int iStack48; - byte abStack44 [16]; - int iStack28; - int aiStack24 [2]; - uint uStack16; - uint uStack12; - uint uStack8; - u32 uStack4; - - uStack4 = get_cur_playernum(); - uVar6 = get_num_players(); - bVar5 = false; - if (uVar6 == 1) { - return param_1; - } - if (pPlayer->mpmenuon == 0) { - if (pPlayer->bonddead == 0) { - return param_1; - } - if (pPlayer->field_428 == 0) { - return param_1; - } - if (pPlayer->field_424 == 0) { - return param_1; - } - if (stop_play_flag != 0) { - return param_1; - } - iVar17 = 0; - if (is_gameover_flag != 0) { - return param_1; - } - uVar18 = 0; - if (0 < (longlong)uVar6) { - if ((uVar6 & 3) != 0) { - piVar15 = player1_playerdata.shotcount + uStack4; - do { - piVar1 = piVar15 + 9; - uVar18 = SEXT48((int)uVar18 + 1); - piVar15 = piVar15 + 0x1c; - iVar17 += *piVar1; - } while ((uVar6 & 3) != uVar18); - if (uVar18 == uVar6) goto LAB_7f0c5f0c; - } - piVar15 = (&player1_playerdata)[(int)uVar18].shotcount + uStack4; - do { - piVar1 = piVar15 + 9; - piVar2 = piVar15 + 0x25; - piVar3 = piVar15 + 0x41; - piVar4 = piVar15 + 0x5d; - uVar18 = SEXT48((int)uVar18 + 4); - piVar15 = piVar15 + 0x70; - iVar17 = iVar17 + *piVar1 + *piVar2 + *piVar3 + *piVar4; - } while (uVar18 != uVar6); + int *piVar1; + int *piVar2; + int *piVar3; + int *piVar4; + bool bVar5; + uint uVar6; + u32 uVar8; + longlong lVar7; + u8 *puVar9; + u8 *puVar10; + uint *DL; + undefined4 *DL_00; + int iVar11; + uint *DL_01; + byte *pbVar12; + short sVar13; + short sVar14; + int *piVar15; + int iVar16; + int *piStack148; + int iStack136; + int iStack116; + int iStack112; + int iStack108; + int iStack104; + int iStack100; + int iStack96; + int iStack92; + int iStack88; + undefined4 uStack84; + undefined4 uStack80; + undefined4 uStack76; + uint *puStack72; + int iStack68; + int iStack64; + int iStack60; + int iStack56; + char *pcStack52; + int iStack48; + byte abStack44 [16]; + int iStack28; + int aiStack24 [2]; + uint uStack16; + uint uStack12; + uint *puStack8; + u32 uStack4; + + uStack4 = get_cur_playernum(); + DL_01 = (uint *)get_num_players(); + bVar5 = false; + if (DL_01 == (uint *)((int)&rgba + 1)) { + return param_1; } + if (pPlayer->mpmenuon == 0) { + if (pPlayer->bonddead == 0) { + return param_1; + } + if (pPlayer->field_428 == 0) { + return param_1; + } + if (pPlayer->field_424 == 0) { + return param_1; + } + if (stop_play_flag != 0) { + return param_1; + } + iVar16 = 0; + if (is_gameover_flag != 0) { + return param_1; + } + DL = NULL; + if (0 < (int)DL_01) { + if ((uint *)((uint)DL_01 & 3) != NULL) { + piVar15 = player1_playerdata[0].shotcount + uStack4; + do { + piVar1 = piVar15 + 9; + DL = (uint *)((int)DL + 1); + piVar15 = piVar15 + 0x1c; + iVar16 += *piVar1; + } while ((uint *)((uint)DL_01 & 3) != DL); + if (DL == DL_01) goto LAB_7f0c5f0c; + } + piVar15 = player1_playerdata[(int)DL].shotcount + uStack4; + do { + piVar1 = piVar15 + 9; + piVar2 = piVar15 + 0x25; + piVar3 = piVar15 + 0x41; + piVar4 = piVar15 + 0x5d; + DL = DL + 1; + piVar15 = piVar15 + 0x70; + iVar16 = iVar16 + *piVar1 + *piVar2 + *piVar3 + *piVar4; + } while (DL != DL_01); + } LAB_7f0c5f0c: - iVar10 = get_scenario(); - if ((iVar10 == 1) && (1 < iVar17)) { - return param_1; - } - DL = proc_7F0B4FB4(param_1); - puVar11 = microcode_constructor(DL); - pbVar12 = get_textptr_for_textID(0xa022); - proc_7F0AE98C(&iStack116,&iStack112,pbVar12,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_width(); - iStack104 = (((int)sVar14 >> 1) + (int)sVar13) - (iStack112 >> 1); - sVar13 = get_video2_settings_uly(); - sVar14 = get_video2_settings_height(); - iStack108 = (((int)sVar14 >> 1) + (int)sVar13) - (iStack116 >> 1); - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(puVar11,&iStack104,&iStack108,pbVar12,D_80040EB0,(int)D_80040EAC, - 0xff00b0,(int)sVar13,(int)sVar14,0,0); - DL = combiner_bayer_lod_perspective(DL); - return DL; - } - uStack8 = (uint)uVar6; - DL = microcode_constructor(param_1); - if (uStack8 == 2) { - iStack48 = 0x50; - } - else { - iStack48 = 0; - } - switch(pPlayer->mpmenumode) { - case 0: - case 1: - case 2: - case 3: - if (is_gameover_flag == 0) { - pcStack52 = (char *)get_textptr_for_textID(0xa015); - } - else { - if (DAT_8008c710 == 0) { - pcStack52 = (char *)get_textptr_for_textID(0xa017); - } - else { - pcStack52 = (char *)get_textptr_for_textID(0xa016); - } - } - break; - case 4: - if (is_paused == 0) { - pcStack52 = (char *)get_textptr_for_textID(0xa019); - } - else { - pcStack52 = (char *)get_textptr_for_textID(0xa018); - uVar8 = get_cur_playernum(); - if (uVar8 == DAT_8008c71c) { - bVar5 = true; - } - } - break; - case 5: - case 6: - pcStack52 = (char *)get_textptr_for_textID(0xa01a); - sVar13 = get_video2_settings_ulx(); - uStack12 = (int)sVar13 + iStack48 + 0x41; - break; - case 7: - pcStack52 = ""; - } - proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x16; - if (bVar5) { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = jp_text_stuff(DL,&uStack12,&uStack16,(byte *)pcStack52,D_80040EB0,(int)D_80040EAC, - 0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13,(int)sVar14,0,0); - } - else { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - lVar7 = MP_menu_page_adv_left(); - if (lVar7 != 0) { - sVar13 = get_video2_settings_ulx(); - if (is_gameover_flag == 0) { - iStack136 = 0; - } - else { - iStack136 = 10; - } - iStack136 = ((int)sVar13 + iStack48) - iStack136; - uStack12 = iStack136 + 0x28; - if (is_gameover_flag != 0) { - uStack12 = iStack136 + 0x20; - } - sVar13 = get_video2_settings_uly(); - uStack16 = (int)sVar13 + 0x16; - if (DAT_8008c708 == 0) { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)"<",D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - else { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = jp_text_stuff(DL,&uStack12,&uStack16,(byte *)"<",D_80040EB0,(int)D_80040EAC,0xa0ffa0f0, - (uint)&DAT_007000a0,(int)sVar13,(int)sVar14,0,0); - } - } - lVar7 = MP_menu_page_adv_right(); - if (lVar7 != 0) { - sVar13 = get_video2_settings_ulx(); - if (is_gameover_flag == 0) { - iStack136 = 0; - } - else { - iStack136 = 10; - } - iVar17 = iStack136 + (int)sVar13 + iStack48; - uStack12 = iVar17 + 0x70; - if (is_gameover_flag != 0) { - uStack12 = iVar17 + 0x78; - } - sVar13 = get_video2_settings_uly(); - uStack16 = (int)sVar13 + 0x16; - if (DAT_8008c708 == 0) { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)">",D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - else { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = jp_text_stuff(DL,&uStack12,&uStack16,(byte *)">",D_80040EB0,(int)D_80040EAC,0xa0ffa0f0, - (uint)&DAT_007000a0,(int)sVar13,(int)sVar14,0,0); - } - } - iVar17 = pPlayer->mpmenumode; - if ((iVar17 == 3) || (iVar17 == 4)) { - uVar16 = 0; - if (0 < (int)uStack8) { - piStack148 = &iStack68; - do { - uStack72 = uVar16; - iVar17 = get_points_for_mp_player(uVar16); - *piStack148 = iVar17; - uVar16 = uStack72 + 1; - piStack148 = piStack148 + 1; - } while (uVar16 != uStack8); - } - lVar7 = true_if_displaying_rank_in_mp((uint)(is_gameover_flag == 0 && stop_play_flag == 0)); - if (lVar7 != 0) { - write_playerrank_to_buffer((char *)abStack44,uStack4); - proc_7F0AE98C(&iStack28,aiStack24,abStack44,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x25; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - lVar7 = true_if_displaying_score_in_mp(); - if (lVar7 != 0) { - iStack88 = get_scenario(); - pcStack52 = (char *)get_textptr_for_textID(0xa01b); - proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x35; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - if ((((iStack88 == 5) || (iStack88 == 6)) || (iStack88 == 7)) || - ((iStack88 == 2 || (iStack88 == 3)))) { - if ((&player1_playerdata)[uStack4].have_token_or_goldengun == '\0') { - uStack76 = 3; - uStack80 = 2; - uStack84 = 4; + iVar11 = get_scenario(); + if ((iVar11 == 1) && (1 < iVar16)) { + return param_1; } - else { - uStack76 = 5; - uStack80 = 4; - uStack84 = 2; - } - } - else { - uStack76 = 1; - uStack80 = 0; - uStack84 = 0; - } - if (uStack8 == 2) { + DL_01 = proc_7F0B4FB4(param_1); + microcode_constructor(DL_01); + pbVar12 = get_textptr_for_textID(0xa022); + proc_7F0AE98C(&iStack116,&iStack112,pbVar12,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - if (uStack4 == 0) { - iStack136 = uStack76; - } - else { - iStack136 = uStack84; - if (player1_playerdata.have_token_or_goldengun == - (&player1_playerdata)[uStack4].have_token_or_goldengun) { - iStack136 = uStack80; - } - } - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46,(longlong)iStack68, - iStack136); - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - if (uStack4 == 1) { - iStack136 = uStack76; - } - else { - iStack136 = uStack84; - if (player2_player_data.have_token_or_goldengun == - (&player1_playerdata)[uStack4].have_token_or_goldengun) { - iStack136 = uStack80; - } - } - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56,(longlong)iStack64, - iStack136); - } - else { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - if (uStack4 == 0) { - iStack136 = uStack76; - } - else { - iStack136 = uStack84; - if (player1_playerdata.have_token_or_goldengun == - (&player1_playerdata)[uStack4].have_token_or_goldengun) { - iStack136 = uStack80; - } - } - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46,(longlong)iStack68, - iStack136); - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - if (uStack4 == 1) { - iStack136 = uStack76; - } - else { - iStack136 = uStack84; - if (player2_player_data.have_token_or_goldengun == - (&player1_playerdata)[uStack4].have_token_or_goldengun) { - iStack136 = uStack80; - } - } - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46,(longlong)iStack64, - iStack136); - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - if (uStack4 == 2) { - iStack136 = uStack76; - } - else { - iStack136 = uStack84; - if (player3_player_data.have_token_or_goldengun == - (&player1_playerdata)[uStack4].have_token_or_goldengun) { - iStack136 = uStack80; - } - } - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56,(longlong)iStack60, - iStack136); - if (uStack8 == 4) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - if (uStack4 == 3) { - iStack136 = uStack76; - } - else { - iStack136 = uStack84; - if (player4_player_data.have_token_or_goldengun == - (&player1_playerdata)[uStack4].have_token_or_goldengun) { - iStack136 = uStack80; - } - } - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56,(longlong)iStack56, - iStack136); - } - } - } - } - else { - if (iVar17 == 2) { - lVar7 = true_if_displaying_rank_in_mp((uint)(is_gameover_flag == 0 && stop_play_flag == 0)); - if (lVar7 != 0) { - write_playerrank_to_buffer((char *)abStack44,uStack4); - proc_7F0AE98C(&iStack28,aiStack24,abStack44,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar14 = get_video2_settings_width(); + iStack104 = (((int)sVar14 >> 1) + (int)sVar13) - (iStack112 >> 1); sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x25; + sVar14 = get_video2_settings_height(); + iStack108 = (((int)sVar14 >> 1) + (int)sVar13) - (iStack116 >> 1); sVar13 = get_video2_settings_txtClipW(); sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - pbVar12 = get_textptr_for_textID(0xa01c); - pbVar9 = get_textptr_for_textID(0xa01d); - sprintf((char *)abStack44,"%s%d %s",pbVar12,uStack4 + 1,pbVar9); - proc_7F0AE98C(&iStack28,aiStack24,abStack44,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x35; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - if (uStack8 == 2) { - if (uStack4 != 0) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46, - (longlong)(&player1_playerdata)[uStack4].kills[0],0); - } - uVar16 = uStack4; - if (uStack4 != 1) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56, - (longlong)(&player1_playerdata)[uVar16].kills[1],0); - } - } - else { - if (uStack4 != 0) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46, - (longlong)(&player1_playerdata)[uStack4].kills[0],0); - } - uVar16 = uStack4; - if (uStack4 != 1) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46, - (longlong)(&player1_playerdata)[uVar16].kills[1],0); - } - uVar16 = uStack4; - if (uStack4 != 2) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56, - (longlong)(&player1_playerdata)[uVar16].kills[2],0); - } - uVar16 = uStack4; - if ((uStack8 == 4) && (uStack4 != 3)) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56, - (longlong)(&player1_playerdata)[uVar16].kills[3],0); - } - } + DL_00 = (undefined4 *)(int)sVar14; + en_text_write_stuff(DL_01,&iStack104,&iStack108,pbVar12,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xff00b0,(int)sVar13,(int)sVar14,0,0); + DL_01 = combiner_bayer_lod_perspective(DL_00); + return DL_01; + } + puStack8 = DL_01; + microcode_constructor(param_1); + if (puStack8 == (uint *)((int)&rgba + 2)) { + iStack48 = 0x50; } else { - if (iVar17 == 1) { - lVar7 = true_if_displaying_rank_in_mp((uint)(is_gameover_flag == 0 && stop_play_flag == 0)); - if (lVar7 != 0) { - write_playerrank_to_buffer((char *)abStack44,uStack4); - proc_7F0AE98C(&iStack28,aiStack24,abStack44,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x25; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - pbVar12 = get_textptr_for_textID(0xa01c); - pbVar9 = get_textptr_for_textID(0xa01e); - sprintf((char *)abStack44,"%s%d %s",pbVar12,uStack4 + 1,pbVar9); - proc_7F0AE98C(&iStack28,aiStack24,abStack44,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x35; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44,D_80040EB0, - (int)D_80040EAC,0xff4040b0,(int)sVar13,(int)sVar14,0,0); - if (uStack8 == 2) { - if (uStack4 == 0) { - if (0 < player1_playerdata.kills[0]) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46, - (longlong)player1_playerdata.kills[uStack4],3); - } - } - else { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46, - (longlong)player1_playerdata.kills[uStack4],0); - } - uVar16 = uStack4; - if (uStack4 == 1) { - if (0 < player2_player_data.kills[1]) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56, - (longlong)player2_player_data.kills[1],3); - } - } - else { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56, - (longlong)player2_player_data.kills[uVar16],0); - } + iStack48 = 0; + } + switch(pPlayer->mpmenumode) { + case 0: + case 1: + case 2: + case 3: + if (is_gameover_flag == 0) { + pcStack52 = (char *)get_textptr_for_textID(0xa015); } else { - if (uStack4 == 0) { - if (0 < player1_playerdata.kills[0]) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46, - (longlong)player1_playerdata.kills[uStack4],3); - } - } - else { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46, - (longlong)player1_playerdata.kills[uStack4],0); - } - uVar16 = uStack4; - if (uStack4 == 1) { - if (0 < player2_player_data.kills[1]) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46, - (longlong)player2_player_data.kills[1],3); - } - } - else { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46, - (longlong)player2_player_data.kills[uVar16],0); - } - uVar16 = uStack4; - if (uStack4 == 2) { - if (0 < player3_player_data.kills[2]) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56, - (longlong)player3_player_data.kills[2],3); - } - } - else { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56, - (longlong)player3_player_data.kills[uVar16],0); - } - uVar16 = uStack4; - if (uStack8 == 4) { - if (uStack4 == 3) { - if (0 < player4_player_data.kills[3]) { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56, - (longlong)player4_player_data.kills[3],3); - } + if (DAT_8008c710 == 0) { + pcStack52 = (char *)get_textptr_for_textID(0xa017); } else { - sVar13 = get_video2_settings_ulx(); - sVar14 = get_video2_settings_uly(); - DL = display_text_for_playerdata_on_MP_menu - (DL,(int)sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56, - (longlong)player4_player_data.kills[uVar16],0); + pcStack52 = (char *)get_textptr_for_textID(0xa016); } - } } - } - else { - if (iVar17 != 0) { - iVar17 = pPlayer->mpmenumode; - goto LAB_7f0c5b48; - } - iStack100 = iStack48; - if (2 < (int)uStack8) { - iStack100 = iStack48 + 7; - if ((uStack4 & 1) != 0) { - iStack100 = iStack48 + -7; - } - } - pcStack52 = (char *)get_textptr_for_textID(0xa01f); - proc_7F0AE98C(&iStack92,&iStack96,(byte *)pcStack52,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack92 >> 1)) + 0x25; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - pcStack52 = (char *)getplayerfavoredweapon(uStack4,0); - proc_7F0AE98C(&iStack92,&iStack96,(byte *)pcStack52,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - if (j_text_trigger == 0) { - iVar17 = 0; + break; + case 4: + if (is_paused == 0) { + pcStack52 = (char *)get_textptr_for_textID(0xa019); } else { - iVar17 = 4; + pcStack52 = (char *)get_textptr_for_textID(0xa018); + uVar8 = get_cur_playernum(); + if (uVar8 == DAT_8008c71c) { + bVar5 = true; + } } - uStack16 = ((iVar17 + (int)sVar13) - (iStack92 >> 1)) + 0x35; + break; + case 5: + case 6: + pcStack52 = (char *)get_textptr_for_textID(0xa01a); + sVar13 = get_video2_settings_ulx(); + uStack12 = sVar13 + iStack48 + 0x41; + break; + case 7: + pcStack52 = ""; + } + proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x16; + if (bVar5) { sVar13 = get_video2_settings_txtClipW(); sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - pbVar12 = (byte *)pPlayer->ptr_text_first_mp_award; - if (pbVar12 != NULL) { - pcStack52 = (char *)pbVar12; - proc_7F0AE98C(&iStack92,&iStack96,pbVar12,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack92 >> 1)) + 0x4b; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0 - ,(int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - pbVar12 = (byte *)pPlayer->ptr_text_second_mp_award; - if (pbVar12 != NULL) { - pcStack52 = (char *)pbVar12; - proc_7F0AE98C(&iStack92,&iStack96,pbVar12,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack92 >> 1)) + 0x58; - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0 - ,(int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - } + DL = (uint *)(int)sVar14; + jp_text_stuff(DL_01,&uStack12,&uStack16,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13, + (int)sVar14,0,0); } - } - iVar17 = pPlayer->mpmenumode; + else { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL = (uint *)(int)sVar14; + en_text_write_stuff(DL_01,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + } + lVar7 = MP_menu_page_adv_left(); + if (lVar7 != 0) { + sVar13 = get_video2_settings_ulx(); + if (is_gameover_flag == 0) { + iStack136 = 0; + } + else { + iStack136 = 10; + } + iStack136 = (sVar13 + iStack48) - iStack136; + uStack12 = iStack136 + 0x28; + if (is_gameover_flag != 0) { + uStack12 = iStack136 + 0x20; + } + sVar13 = get_video2_settings_uly(); + uStack16 = (int)sVar13 + 0x16; + if (DAT_8008c708 == 0) { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)"<", + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + DL = DL_01; + } + else { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + jp_text_stuff(DL,&uStack12,&uStack16,(byte *)"<",(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13, + (int)sVar14,0,0); + DL = DL_01; + } + } + lVar7 = MP_menu_page_adv_right(); + if (lVar7 != 0) { + sVar13 = get_video2_settings_ulx(); + if (is_gameover_flag == 0) { + iStack136 = 0; + } + else { + iStack136 = 10; + } + iVar16 = iStack136 + sVar13 + iStack48; + uStack12 = iVar16 + 0x70; + if (is_gameover_flag != 0) { + uStack12 = iVar16 + 0x78; + } + sVar13 = get_video2_settings_uly(); + uStack16 = (int)sVar13 + 0x16; + if (DAT_8008c708 == 0) { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)">", + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + DL = DL_01; + } + else { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + jp_text_stuff(DL,&uStack12,&uStack16,(byte *)">",(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13, + (int)sVar14,0,0); + DL = DL_01; + } + } + iVar16 = pPlayer->mpmenumode; + if ((iVar16 == 3) || (iVar16 == 4)) { + DL_01 = NULL; + if (0 < (int)puStack8) { + piStack148 = &iStack68; + do { + puStack72 = DL_01; + iVar16 = get_points_for_mp_player((uint)DL_01); + *piStack148 = iVar16; + DL_01 = (uint *)((int)puStack72 + 1); + piStack148 = piStack148 + 1; + } while (DL_01 != puStack8); + } + lVar7 = true_if_displaying_rank_in_mp((uint)(is_gameover_flag == 0 && stop_play_flag == 0)); + if (lVar7 != 0) { + write_playerrank_to_buffer((char *)abStack44,uStack4); + proc_7F0AE98C(&iStack28,aiStack24,abStack44,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x25; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + DL = DL_01; + } + lVar7 = true_if_displaying_score_in_mp(); + if (lVar7 != 0) { + iStack88 = get_scenario(); + pcStack52 = (char *)get_textptr_for_textID(0xa01b); + proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x35; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + if ((((iStack88 == 5) || (iStack88 == 6)) || (iStack88 == 7)) || + ((iStack88 == 2 || (iStack88 == 3)))) { + if (player1_playerdata[uStack4].have_token_or_goldengun == '\0') { + uStack76 = 3; + uStack80 = 2; + uStack84 = 4; + } + else { + uStack76 = 5; + uStack80 = 4; + uStack84 = 2; + } + } + else { + uStack76 = 1; + uStack80 = 0; + uStack84 = 0; + } + if (puStack8 == (uint *)((int)&rgba + 2)) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + if (uStack4 == 0) { + iStack136 = uStack76; + } + else { + iStack136 = uStack84; + if (player1_playerdata[0].have_token_or_goldengun == + player1_playerdata[uStack4].have_token_or_goldengun) { + iStack136 = uStack80; + } + } + DL_01 = display_text_for_playerdata_on_MP_menu + (DL_01,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46, + (longlong)iStack68,iStack136); + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + if (uStack4 == 1) { + iStack136 = uStack76; + } + else { + iStack136 = uStack84; + if (player1_playerdata[1].have_token_or_goldengun == + player1_playerdata[uStack4].have_token_or_goldengun) { + iStack136 = uStack80; + } + } + DL = display_text_for_playerdata_on_MP_menu + (DL_01,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56,(longlong)iStack64 + ,iStack136); + } + else { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + if (uStack4 == 0) { + iStack136 = uStack76; + } + else { + iStack136 = uStack84; + if (player1_playerdata[0].have_token_or_goldengun == + player1_playerdata[uStack4].have_token_or_goldengun) { + iStack136 = uStack80; + } + } + DL_01 = display_text_for_playerdata_on_MP_menu + (DL_01,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46, + (longlong)iStack68,iStack136); + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + if (uStack4 == 1) { + iStack136 = uStack76; + } + else { + iStack136 = uStack84; + if (player1_playerdata[1].have_token_or_goldengun == + player1_playerdata[uStack4].have_token_or_goldengun) { + iStack136 = uStack80; + } + } + DL_01 = display_text_for_playerdata_on_MP_menu + (DL_01,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46, + (longlong)iStack64,iStack136); + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + if (uStack4 == 2) { + iStack136 = uStack76; + } + else { + iStack136 = uStack84; + if (player1_playerdata[2].have_token_or_goldengun == + player1_playerdata[uStack4].have_token_or_goldengun) { + iStack136 = uStack80; + } + } + DL = display_text_for_playerdata_on_MP_menu + (DL_01,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56,(longlong)iStack60 + ,iStack136); + if (puStack8 == &i) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + if (uStack4 == 3) { + iStack136 = uStack76; + } + else { + iStack136 = uStack84; + if (player1_playerdata[3].have_token_or_goldengun == + player1_playerdata[uStack4].have_token_or_goldengun) { + iStack136 = uStack80; + } + } + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56, + (longlong)iStack56,iStack136); + } + } + } + } + else { + if (iVar16 == 2) { + lVar7 = true_if_displaying_rank_in_mp + ((uint)(is_gameover_flag == 0 && stop_play_flag == 0)); + if (lVar7 != 0) { + write_playerrank_to_buffer((char *)abStack44,uStack4); + proc_7F0AE98C(&iStack28,aiStack24,abStack44,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x25; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + 0xff00b0,(int)sVar13,(int)sVar14,0,0); + DL = DL_01; + } + puVar9 = get_textptr_for_textID(0xa01c); + puVar10 = get_textptr_for_textID(0xa01d); + sprintf((char *)abStack44,"%s%d %s",puVar9,uStack4 + 1,puVar10); + proc_7F0AE98C(&iStack28,aiStack24,abStack44,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x35; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + DL = DL_01; + if (puStack8 == (uint *)((int)&rgba + 2)) { + if (uStack4 != 0) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46, + (longlong)player1_playerdata[uStack4].kills[0],0); + } + uVar6 = uStack4; + if (uStack4 != 1) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56, + (longlong)player1_playerdata[uVar6].kills[1],0); + } + } + else { + if (uStack4 != 0) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46, + (longlong)player1_playerdata[uStack4].kills[0],0); + } + uVar6 = uStack4; + if (uStack4 != 1) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46, + (longlong)player1_playerdata[uVar6].kills[1],0); + } + uVar6 = uStack4; + if (uStack4 != 2) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56, + (longlong)player1_playerdata[uVar6].kills[2],0); + } + uVar6 = uStack4; + if ((puStack8 == &i) && (uStack4 != 3)) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56, + (longlong)player1_playerdata[uVar6].kills[3],0); + } + } + } + else { + if (iVar16 == 1) { + lVar7 = true_if_displaying_rank_in_mp + ((uint)(is_gameover_flag == 0 && stop_play_flag == 0)); + if (lVar7 != 0) { + write_playerrank_to_buffer((char *)abStack44,uStack4); + proc_7F0AE98C(&iStack28,aiStack24,abStack44,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x25; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + 0xff00b0,(int)sVar13,(int)sVar14,0,0); + DL = DL_01; + } + puVar9 = get_textptr_for_textID(0xa01c); + puVar10 = get_textptr_for_textID(0xa01e); + sprintf((char *)abStack44,"%s%d %s",puVar9,uStack4 + 1,puVar10); + proc_7F0AE98C(&iStack28,aiStack24,abStack44,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x35; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,abStack44, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + 0xff4040b0,(int)sVar13,(int)sVar14,0,0); + DL = DL_01; + if (puStack8 == (uint *)((int)&rgba + 2)) { + if (uStack4 == 0) { + if (0 < player1_playerdata[0].kills[0]) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46, + (longlong)player1_playerdata[0].kills[uStack4],3); + } + } + else { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x46, + (longlong)player1_playerdata[0].kills[uStack4],0); + } + uVar6 = uStack4; + if (uStack4 == 1) { + if (0 < player1_playerdata[1].kills[1]) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56, + (longlong)player1_playerdata[1].kills[1],3); + } + } + else { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x50,(int)sVar14 + 0x56, + (longlong)player1_playerdata[1].kills[uVar6],0); + } + } + else { + if (uStack4 == 0) { + if (0 < player1_playerdata[0].kills[0]) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46, + (longlong)player1_playerdata[0].kills[uStack4],3); + } + } + else { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x46, + (longlong)player1_playerdata[0].kills[uStack4],0); + } + uVar6 = uStack4; + if (uStack4 == 1) { + if (0 < player1_playerdata[1].kills[1]) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46, + (longlong)player1_playerdata[1].kills[1],3); + } + } + else { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x46, + (longlong)player1_playerdata[1].kills[uVar6],0); + } + uVar6 = uStack4; + if (uStack4 == 2) { + if (0 < player1_playerdata[2].kills[2]) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56, + (longlong)player1_playerdata[2].kills[2],3); + } + } + else { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x40,(int)sVar14 + 0x56, + (longlong)player1_playerdata[2].kills[uVar6],0); + } + uVar6 = uStack4; + if (puStack8 == &i) { + if (uStack4 == 3) { + if (0 < player1_playerdata[3].kills[3]) { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56, + (longlong)player1_playerdata[3].kills[3],3); + } + } + else { + sVar13 = get_video2_settings_ulx(); + sVar14 = get_video2_settings_uly(); + DL = display_text_for_playerdata_on_MP_menu + (DL,sVar13 + iStack48 + 0x60,(int)sVar14 + 0x56, + (longlong)player1_playerdata[3].kills[uVar6],0); + } + } + } + } + else { + if (iVar16 != 0) { + iVar16 = pPlayer->mpmenumode; + goto LAB_7f0c5b48; + } + iStack100 = iStack48; + if (2 < (int)puStack8) { + iStack100 = iStack48 + 7; + if ((uStack4 & 1) != 0) { + iStack100 = iStack48 + -7; + } + } + pcStack52 = (char *)get_textptr_for_textID(0xa01f); + proc_7F0AE98C(&iStack92,&iStack96,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack92 >> 1)) + 0x25; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_00 = (undefined4 *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + 0xff00b0,(int)sVar13,(int)sVar14,0,0); + pcStack52 = (char *)getplayerfavoredweapon(uStack4,0); + proc_7F0AE98C(&iStack92,&iStack96,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + if (j_text_trigger == 0) { + iVar16 = 0; + } + else { + iVar16 = 4; + } + uStack16 = ((iVar16 + sVar13) - (iStack92 >> 1)) + 0x35; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL = (uint *)(int)sVar14; + en_text_write_stuff(DL_00,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + 0xff00b0,(int)sVar13,(int)sVar14,0,0); + pbVar12 = (byte *)pPlayer->ptr_text_first_mp_award; + if (pbVar12 != NULL) { + pcStack52 = (char *)pbVar12; + proc_7F0AE98C(&iStack92,&iStack96,pbVar12,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack92 >> 1)) + 0x4b; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + 0xff00b0,(int)sVar13,(int)sVar14,0,0); + DL = DL_01; + } + pbVar12 = (byte *)pPlayer->ptr_text_second_mp_award; + if (pbVar12 != NULL) { + pcStack52 = (char *)pbVar12; + proc_7F0AE98C(&iStack92,&iStack96,pbVar12,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack100) - (iStack96 >> 1)) + 0x50; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack92 >> 1)) + 0x58; + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall, + 0xff00b0,(int)sVar13,(int)sVar14,0,0); + DL = DL_01; + } + } + } + } + iVar16 = pPlayer->mpmenumode; LAB_7f0c5b48: - if (iVar17 == 6) { - pcStack52 = (char *)get_textptr_for_textID(0xa020); - proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x36; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x36; - if (pPlayer->mpquitconfirm == 0) { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = jp_text_stuff(DL,&uStack12,&uStack16,(byte *)pcStack52,D_80040EB0,(int)D_80040EAC, - 0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13,(int)sVar14,0,0); + if (iVar16 == 6) { + pcStack52 = (char *)get_textptr_for_textID(0xa020); + proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x36; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x36; + if (pPlayer->mpquitconfirm == 0) { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + jp_text_stuff(DL,&uStack12,&uStack16,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13, + (int)sVar14,0,0); + } + else { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL_01 = (uint *)(int)sVar14; + en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + } + pcStack52 = (char *)get_textptr_for_textID(0xa021); + proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int *)ptrFirstFontTableSmall,0); + sVar13 = get_video2_settings_ulx(); + uStack12 = ((sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x68; + sVar13 = get_video2_settings_uly(); + uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x36; + if (pPlayer->mpquitconfirm == 1) { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL = (uint *)(int)sVar14; + jp_text_stuff(DL_01,&uStack12,&uStack16,(byte *)pcStack52,(int)ptrSecondFontTableSmall, + (int)ptrFirstFontTableSmall,0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13, + (int)sVar14,0,0); + } + else { + sVar13 = get_video2_settings_txtClipW(); + sVar14 = get_video2_settings_txtClipH(); + DL = (uint *)(int)sVar14; + en_text_write_stuff(DL_01,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52, + (int)ptrSecondFontTableSmall,(int)ptrFirstFontTableSmall,0xff00b0, + (int)sVar13,(int)sVar14,0,0); + } } - else { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - pcStack52 = (char *)get_textptr_for_textID(0xa021); - proc_7F0AE98C(&iStack28,aiStack24,(byte *)pcStack52,D_80040EB0,D_80040EAC,0); - sVar13 = get_video2_settings_ulx(); - uStack12 = (((int)sVar13 + iStack48) - (aiStack24[0] >> 1)) + 0x68; - sVar13 = get_video2_settings_uly(); - uStack16 = ((int)sVar13 - (iStack28 >> 1)) + 0x36; - if (pPlayer->mpquitconfirm == 1) { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = jp_text_stuff(DL,&uStack12,&uStack16,(byte *)pcStack52,D_80040EB0,(int)D_80040EAC, - 0xa0ffa0f0,(uint)&DAT_007000a0,(int)sVar13,(int)sVar14,0,0); - } - else { - sVar13 = get_video2_settings_txtClipW(); - sVar14 = get_video2_settings_txtClipH(); - DL = en_text_write_stuff(DL,(int *)&uStack12,(int *)&uStack16,(byte *)pcStack52,D_80040EB0, - (int)D_80040EAC,0xff00b0,(int)sVar13,(int)sVar14,0,0); - } - } - DL = combiner_bayer_lod_perspective(DL); - return DL; + DL_01 = combiner_bayer_lod_perspective(DL); + return DL_01; } @@ -136223,10 +135449,10 @@ LAB_7f0c5b48: ulonglong proc_7F0C6048(void) { - if (is_gameover_flag != 0) { - return 0; - } - return (longlong)pPlayer->mpmenuon | (ulonglong)(0 < pPlayer->healthdisplaytime); + if (is_gameover_flag != 0) { + return 0; + } + return (longlong)pPlayer->mpmenuon | (ulonglong)(0 < pPlayer->healthdisplaytime); } @@ -136234,7 +135460,7 @@ ulonglong proc_7F0C6048(void) undefined4 get_ispaused(void) { - return is_paused; + return is_paused; } @@ -136242,135 +135468,136 @@ undefined4 get_ispaused(void) undefined4 * display_red_blue_on_radar(undefined4 *param_1) { - int iVar2; - u32 uVar3; - ulonglong uVar1; - u32 uVar4; - uint uVar5; - short sVar9; - short sVar10; - short sVar11; - int iVar6; - undefined4 *puVar7; - int iVar8; - int iVar12; - u32 uVar13; - int iVar14; - float fVar15; - float __x; - float fVar16; - float vector1; - float vector2; - float fVar17; - undefined4 *puStackX0; - - puStackX0 = param_1; - iVar2 = get_scenario(); - uVar3 = get_cur_playernum(); - uVar1 = get_num_players(); - uVar4 = (u32)uVar1; - if ((((uVar1 != 1) && (pPlayer->mpmenuon == 0)) && (pPlayer->bonddead == 0)) && - (uVar5 = proc_7F0927BC(0x17), uVar5 == 0)) { - sVar9 = get_video2_settings_ulx(); - sVar10 = get_video2_settings_width(); - iVar14 = (int)sVar10 + (int)sVar9 + -0x29; - sVar11 = get_video2_settings_uly(); - iVar6 = (int)sVar11; - if ((2 < (int)uVar4) && ((uVar3 & 1) == 0)) { - iVar14 = (int)sVar10 + (int)sVar9 + -0x1a; - } - likely_generate_DL_for_image_declaration((uint **)register0x000000ec,DAT_8008d12c,2,0,2); - puVar7 = microcode_constructor(puStackX0); - *puVar7 = 0xfcffb3ff; - puVar7[1] = 0xff65feff; - puVar7[3] = 0xa0; - puVar7[2] = 0xfa000000; - puVar7[5] = (iVar14 - 0x10U & 0x3ff) << 0xe | (iVar6 + 10) * 4 & 0xfffU; - puVar7[4] = (iVar14 + 0x10U & 0x3ff) << 0xe | 0xe4000000 | (iVar6 + 0x2a) * 4 & 0xfffU; - puVar7[6] = 0xb4000000; - puVar7[7] = 0x100010; - puStackX0 = puVar7 + 10; - puVar7[8] = 0xb3000000; - puVar7[9] = 0x4000400; - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(iVar14 + -2),(longlong)(iVar6 + 0x18), - (longlong)(iVar14 + 2),iVar6 + 0x1c,0x40); - if (((iVar2 == 5) || (iVar2 == 6)) || ((iVar2 == 7 || ((iVar2 == 2 || (iVar2 == 3)))))) { - if ((&player1_playerdata)[uVar3].have_token_or_goldengun == '\0') { - uVar5 = 0xff7777ff; - } - else { - uVar5 = 0x8888ffff; - } - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(iVar14 + -1),(longlong)(iVar6 + 0x19), - (longlong)(iVar14 + 1),iVar6 + 0x1b,uVar5); - } - else { - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(iVar14 + -1),(longlong)(iVar6 + 0x19), - (longlong)(iVar14 + 1),iVar6 + 0x1b,0xffffffa0); - } - uVar13 = 0; - if (0 < (int)uVar4) { - do { - if ((uVar13 != uVar3) && ((&ptr_BONDdata_p1)[uVar13]->bonddead == 0)) { - iVar8 = (&ptr_BONDdata_p1)[uVar13]->position_data_pointer; - vector1 = *(float *)(iVar8 + 8) - *(float *)(pPlayer->position_data_pointer + 8); - vector2 = *(float *)(iVar8 + 0x10) - *(float *)(pPlayer->position_data_pointer + 0x10); - fVar17 = 16.00000000; - fVar15 = convert_angle_using_inverse((f32)vector1,(f32)vector2); - fVar16 = pPlayer->vv_theta; - __x = (fVar15 * 180.00000000) / flt_8005BD20; - fVar15 = sqrtf(vector1 * vector1 + vector2 * vector2); - fVar15 = fVar15 * 0.00400000; - if (((iVar2 == 5) || (((iVar2 == 6 || (iVar2 == 7)) || (iVar2 == 2)))) || (iVar2 == 3)) { - if (fVar15 < 16.00000000) { - if ((&player1_playerdata)[uVar13].have_token_or_goldengun == '\0') { - uVar5 = 0xff0000a0; - fVar17 = fVar15; - } - else { - uVar5 = 0x2828ffff; - fVar17 = fVar15; - } + int iVar1; + u32 uVar2; + u32 uVar3; + uint uVar4; + short ulx; + short width; + short uly; + int iVar5; + undefined4 *puVar6; + int iVar7; + int iVar8; + u32 uVar9; + int iVar10; + float fVar11; + float __x; + float fVar12; + float vector1; + float vector2; + float fVar13; + u32 *puStackX0; + + puStackX0 = param_1; + iVar1 = get_scenario(); + uVar2 = get_cur_playernum(); + uVar3 = get_num_players(); + if ((((uVar3 != 1) && (pPlayer->mpmenuon == 0)) && (pPlayer->bonddead == 0)) && + (uVar4 = cheatCheckIfOn(UNUSED_17), uVar4 == 0)) { + ulx = get_video2_settings_ulx(); + width = get_video2_settings_width(); + iVar10 = (int)width + (int)ulx + -0x29; + uly = get_video2_settings_uly(); + puVar6 = (undefined4 *)(int)uly; + iVar5 = (int)uly; + if ((2 < (int)uVar3) && ((uVar2 & 1) == 0)) { + iVar10 = (int)width + (int)ulx + -0x1a; + } + append_image_to_DL((uint **)register0x000000ec,mpradarimages,2,0,2); + microcode_constructor(puStackX0); + *puVar6 = 0xfcffb3ff; + puVar6[1] = 0xff65feff; + puVar6[3] = 0xa0; + puVar6[2] = 0xfa000000; + puVar6[5] = (iVar10 - 0x10U & 0x3ff) << 0xe | (iVar5 + 10) * 4 & 0xfffU; + puVar6[4] = (iVar10 + 0x10U & 0x3ff) << 0xe | 0xe4000000 | (iVar5 + 0x2a) * 4 & 0xfffU; + puVar6[6] = 0xb4000000; + puVar6[7] = 0x100010; + puStackX0 = puVar6 + 10; + puVar6[8] = 0xb3000000; + puVar6[9] = 0x4000400; + puStackX0 = microcode_constructor_related_to_menus + (puStackX0,(longlong)(iVar10 + -2),(longlong)(iVar5 + 0x18), + (longlong)(iVar10 + 2),iVar5 + 0x1c,0x40); + if (((iVar1 == 5) || (iVar1 == 6)) || ((iVar1 == 7 || ((iVar1 == 2 || (iVar1 == 3)))))) { + if (player1_playerdata[uVar2].have_token_or_goldengun == '\0') { + uVar4 = 0xff7777ff; } else { - if ((&player1_playerdata)[uVar13].have_token_or_goldengun == '\0') { - uVar5 = 0xff000060; - fVar17 = 16.00000000; - } - else { - uVar5 = 0x2828ffb0; - fVar17 = 16.00000000; - } + uVar4 = 0x8888ffff; } - } - else { - uVar5 = 0xffff0060; - if (fVar15 < 16.00000000) { - uVar5 = 0xffff00a0; - fVar17 = fVar15; - } - } - __x = (__x + fVar16 + 180.00000000) * flt_8005BD24; - fVar15 = sinf(__x); - iVar12 = (int)(fVar15 * fVar17) + iVar14; - fVar15 = cosf(__x); - iVar8 = (int)(fVar15 * fVar17) + iVar6 + 0x1a; - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(iVar12 + -2),(longlong)(iVar8 + -2), - (longlong)(iVar12 + 2),iVar8 + 2,0x40); - puStackX0 = microcode_constructor_related_to_menus - (puStackX0,(longlong)(iVar12 + -1),(longlong)(iVar8 + -1), - (longlong)(iVar12 + 1),iVar8 + 1,uVar5); + puStackX0 = microcode_constructor_related_to_menus + (puStackX0,(longlong)(iVar10 + -1),(longlong)(iVar5 + 0x19), + (longlong)(iVar10 + 1),iVar5 + 0x1b,uVar4); } - uVar13 += 1; - } while (uVar13 != uVar4); + else { + puStackX0 = microcode_constructor_related_to_menus + (puStackX0,(longlong)(iVar10 + -1),(longlong)(iVar5 + 0x19), + (longlong)(iVar10 + 1),iVar5 + 0x1b,0xffffffa0); + } + uVar9 = 0; + if (0 < (int)uVar3) { + do { + if ((uVar9 != uVar2) && (ptr_BONDdata_p1[uVar9]->bonddead == 0)) { + iVar7 = ptr_BONDdata_p1[uVar9]->position_data_pointer; + vector1 = *(float *)(iVar7 + 8) - *(float *)(pPlayer->position_data_pointer + 8) + ; + vector2 = *(float *)(iVar7 + 0x10) - + *(float *)(pPlayer->position_data_pointer + 0x10); + fVar13 = 16.00000000; + fVar11 = convert_angle_using_inverse((f32)vector1,(f32)vector2); + fVar12 = pPlayer->vv_theta; + __x = (fVar11 * 180.00000000) / flt_8005BD20; + fVar11 = sqrtf(vector1 * vector1 + vector2 * vector2); + fVar11 = fVar11 * 0.00400000; + if (((iVar1 == 5) || (((iVar1 == 6 || (iVar1 == 7)) || (iVar1 == 2)))) || + (iVar1 == 3)) { + if (fVar11 < 16.00000000) { + if (player1_playerdata[uVar9].have_token_or_goldengun == '\0') { + uVar4 = 0xff0000a0; + fVar13 = fVar11; + } + else { + uVar4 = 0x2828ffff; + fVar13 = fVar11; + } + } + else { + fVar13 = 16.00000000; + if (player1_playerdata[uVar9].have_token_or_goldengun == '\0') { + uVar4 = 0xff000060; + } + else { + uVar4 = 0x2828ffb0; + } + } + } + else { + uVar4 = 0xffff0060; + if (fVar11 < 16.00000000) { + uVar4 = 0xffff00a0; + fVar13 = fVar11; + } + } + __x = (__x + fVar12 + 180.00000000) * flt_8005BD24; + fVar11 = sinf(__x); + iVar8 = (int)(fVar11 * fVar13) + iVar10; + fVar11 = cosf(__x); + iVar7 = (int)(fVar11 * fVar13) + iVar5 + 0x1a; + puStackX0 = microcode_constructor_related_to_menus + (puStackX0,(longlong)(iVar8 + -2),(longlong)(iVar7 + -2), + (longlong)(iVar8 + 2),iVar7 + 2,0x40); + puStackX0 = microcode_constructor_related_to_menus + (puStackX0,(longlong)(iVar8 + -1),(longlong)(iVar7 + -1), + (longlong)(iVar8 + 1),iVar7 + 1,uVar4); + } + uVar9 += 1; + } while (uVar9 != uVar3); + } + puStackX0 = combiner_bayer_lod_perspective(puStackX0); } - puStackX0 = combiner_bayer_lod_perspective(puStackX0); - } - return puStackX0; + return (undefined4 *)puStackX0; } @@ -136378,8 +135605,8 @@ undefined4 * display_red_blue_on_radar(undefined4 *param_1) void advance_mp_weapon_set_by_one_save_value(void) { - mp_weapon_set = (int)(mp_weapon_set + 1) % 0xe; - return; + mp_weapon_set = (int)(mp_weapon_set + 1) % 0xe; + return; } @@ -136387,7 +135614,7 @@ void advance_mp_weapon_set_by_one_save_value(void) mp_weaponset_set * get_mpweaponset(void) { - return (mp_weaponset_set *)(mp_weapon_set_text_table + mp_weapon_set); + return (mp_weaponset_set *)(mp_weapon_set_text_table + mp_weapon_set); } @@ -136395,7 +135622,7 @@ mp_weaponset_set * get_mpweaponset(void) mp_weaponset_weapon * get_ptr_mp_weapon_set_data(void) { - return mp_weapon_set_text_table[mp_weapon_set].entries; + return mp_weapon_set_text_table[mp_weapon_set].entries; } @@ -136403,8 +135630,8 @@ mp_weaponset_weapon * get_ptr_mp_weapon_set_data(void) void set_mp_weapon_set(u32 param_1) { - mp_weapon_set = param_1; - return; + mp_weapon_set = param_1; + return; } @@ -136412,7 +135639,7 @@ void set_mp_weapon_set(u32 param_1) u32 get_mp_weapon_set(void) { - return mp_weapon_set; + return mp_weapon_set; } @@ -136420,7 +135647,7 @@ u32 get_mp_weapon_set(void) void nullsub_41(void) { - return; + return; } @@ -136429,196 +135656,195 @@ uint image_related_calls_decompressdata (undefined4 param_1,byte *param_2,int param_3,int param_4,int param_5) { - short sVar1; - ushort uVar2; - bool bVar3; - byte *pbVar4; - short *psVar5; - uint uVar6; - undefined *puVar7; - ushort *puVar8; - ushort *puVar9; - uint uVar10; - int iVar11; - ushort *puVar12; - undefined *puVar13; - int iVar14; - byte *pbVar15; - byte *pbVar16; - ushort auStack11064 [256]; - undefined auStack10552 [8448]; - undefined auStack2104 [2056]; - uint uStack48; - uint uStack36; - uint uStack32; - uint uStack20; - int iStack12; - uint uStack4; - - puVar13 = NULL; - bVar3 = false; - proc_7F0CBF10(param_1); - if ((param_3 == 0) || (iStack12 = param_4, param_4 == 0)) { - iStack12 = 1; - } - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = - (byte)(param_4 << 5) | *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0x1f; - *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = - (byte)(param_3 << 5) & 0x20 | *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0xdf; - if ((param_3 != 0) && (bVar3 = true, 0 < DAT_8008d090)) { - psVar5 = &DAT_8008c730; - sVar1 = DAT_8008c730; - while( true ) { - psVar5 = psVar5 + 8; - if ((longlong)(int)(**(uint **)(param_5 + 0xc) >> 0x14) == (longlong)sVar1) { - bVar3 = false; - } - if (&DAT_8008c730 + DAT_8008d090 * 8 <= psVar5) break; - sVar1 = *psVar5; + short sVar1; + ushort uVar2; + bool bVar3; + byte *pbVar4; + short *psVar5; + uint uVar6; + undefined *puVar7; + int iVar8; + ushort *puVar9; + ushort *puVar10; + uint uVar11; + ushort *puVar12; + undefined *puVar13; + int iVar14; + byte *pbVar15; + byte *pbVar16; + ushort auStack11064 [256]; + u8 auStack10552 [8448]; + u8 auStack2104 [2056]; + uint uStack48; + uint uStack36; + uint uStack32; + uint index; + int iStack12; + uint uStack4; + + puVar13 = NULL; + bVar3 = false; + proc_7F0CBF10(param_1); + if ((param_3 == 0) || (iStack12 = param_4, param_4 == 0)) { + iStack12 = 1; } - } - uStack20 = proc_7F0CBF2C(8); - uStack48 = proc_7F0CBF2C(8); - uStack48 += 1; - if (0 < (int)uStack48) { - puVar12 = auStack11064 + uStack48; - puVar8 = auStack11064; - do { - uVar6 = proc_7F0CBF2C(0x10); - puVar9 = puVar8 + 1; - *puVar8 = (ushort)uVar6; - puVar8 = puVar9; - } while (puVar9 < puVar12); - } - iVar14 = 0; - if (0 < iStack12) { - do { - uStack32 = proc_7F0CBF2C(8); - uStack36 = proc_7F0CBF2C(8); - if (iVar14 == 0) { - *(undefined *)(*(int *)(param_5 + 0xc) + 8) = (char)uStack32; - *(undefined *)(*(int *)(param_5 + 0xc) + 9) = (char)uStack36; - *(char *)(*(int *)(param_5 + 0xc) + 10) = (char)uStack48 + -1; - iVar11 = uStack20 * 4; - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = - (byte)(*(int *)(&DAT_80049248 + iVar11) << 2) & 0x1c | - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xe3; - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = - (byte)*(undefined4 *)(&DAT_8004927c + iVar11) & 3 | - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xfc; - *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = - (byte)((*(int *)(&DAT_800492b0 + iVar11) >> 0xe) << 6) | - *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0x3f; - } - else { - if (bVar3) { - iVar11 = DAT_8008d090 * 0x10 + iVar14; - *(undefined *)((int)&DAT_8008c730 + iVar11 + 1) = (char)uStack32; - (&DAT_8008c738)[iVar11] = (char)uStack36; + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = + (byte)(param_4 << 5) | *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0x1f; + *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = + (byte)(param_3 << 5) & 0x20 | *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0xdf; + if ((param_3 != 0) && (bVar3 = true, 0 < DAT_8008d090)) { + psVar5 = &DAT_8008c730; + sVar1 = DAT_8008c730; + while( true ) { + psVar5 = psVar5 + 8; + if ((longlong)(int)(**(uint **)(param_5 + 0xc) >> 0x14) == (longlong)sVar1) { + bVar3 = false; + } + if (&DAT_8008c730 + DAT_8008d090 * 8 <= psVar5) break; + sVar1 = *psVar5; } - } - if (0x1000 < (int)(uStack32 * uStack36)) { - return 0; - } - decompressdata(DAT_8008d0a0,(int)auStack2104,(int)auStack10552); - puVar7 = copy_loaded_image_to_final_mem_location - (auStack2104,uStack32,uStack36,(longlong)(int)uStack20, - param_2 + (int)puVar13); - iVar11 = proc_7F0CE894(); - proc_7F0CBF10(iVar11); - if ((param_3 == 1) && (0 < param_4)) { - proc_7F0CB67C((int)(param_2 + (int)puVar13),uStack32,uStack36,uStack20); - } - iVar14 += 1; - puVar13 = puVar7 + (int)puVar13; - } while (iVar14 != iStack12); - } - uStack4 = 0; - if (bVar3) { - (&DAT_8008c730)[DAT_8008d090 * 8] = (ushort)((uint)**(undefined4 **)(param_5 + 0xc) >> 0x14); - DAT_8008d090 += 1; - if (0x95 < DAT_8008d090) { - DAT_8008d090 = 0; } - } - if (param_3 == 0) { - if (param_4 < 2) { - if (param_4 == 1) { - uStack4 = 0; - proc_7F0CB67C((int)param_2,uStack32,uStack36,uStack20); - } - } - else { - iVar14 = 1; - uVar6 = uStack32; - pbVar16 = param_2; - uVar10 = uStack36; - if (param_4 >= 2) { - uVar6 = uStack32; - pbVar15 = param_2; - pbVar4 = param_2 + (int)puVar13; - uVar10 = uStack36; + index = proc_7F0CBF2C(8); + uStack48 = proc_7F0CBF2C(8); + uStack48 += 1; + if (0 < (int)uStack48) { + puVar12 = auStack11064 + uStack48; + puVar9 = auStack11064; do { - pbVar16 = pbVar4; - iVar11 = proc_7F0C6C70(pbVar15,(int)pbVar16,uVar6,uVar10,uStack20,auStack11064,uStack48); - if (0x800 < (int)(puVar13 + iVar11)) { - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = - (byte)(iVar14 << 5) | *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0x1f; - pbVar16 = pbVar15; - break; - } - proc_7F0CB67C((int)pbVar15,uVar6,uVar10,uStack20); - iVar14 += 1; - uVar6 = (int)(uVar6 + 1) >> 1; - uVar10 = (int)(uVar10 + 1) >> 1; - puVar13 = puVar13 + iVar11; - pbVar15 = pbVar16; - pbVar4 = pbVar16 + iVar11; - } while (iVar14 != param_4); - } - proc_7F0CB67C((int)pbVar16,uVar6,uVar10,uStack20); + uVar6 = proc_7F0CBF2C(0x10); + puVar10 = puVar9 + 1; + *puVar9 = (ushort)uVar6; + puVar9 = puVar10; + } while (puVar10 < puVar12); } - } - if (0 < (int)uStack48) { - param_2 = param_2 + (int)puVar13; - if ((uStack48 & 3) != 0) { - puVar8 = auStack11064 + uStack4; - pbVar16 = param_2; - do { - puVar7 = puVar13; - uStack4 += 1; - puVar13 = puVar7 + 2; - *pbVar16 = (byte)((uint)*puVar8 >> 8); - uVar2 = *puVar8; - param_2 = pbVar16 + 2; - puVar8 = puVar8 + 1; - pbVar16[1] = (byte)uVar2; - pbVar16 = param_2; - } while ((uStack48 & 3) != uStack4); - if (uStack4 == uStack48) { - puVar7 = puVar7 + 9; - goto LAB_7f0c6b94; - } + iVar14 = 0; + if (0 < iStack12) { + do { + uStack32 = proc_7F0CBF2C(8); + uStack36 = proc_7F0CBF2C(8); + if (iVar14 == 0) { + *(undefined *)(*(int *)(param_5 + 0xc) + 8) = (char)uStack32; + *(undefined *)(*(int *)(param_5 + 0xc) + 9) = (char)uStack36; + *(char *)(*(int *)(param_5 + 0xc) + 10) = (char)uStack48 + -1; + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = + (byte)(n64imagetypes[index] << 2) & 0x1c | + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xe3; + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = + (byte)n64pixelsizes[index] & 3 | + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xfc; + *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = + (byte)((imgflipvalues[index] >> 0xe) << 6) | + *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0x3f; + } + else { + if (bVar3) { + iVar8 = DAT_8008d090 * 0x10 + iVar14; + *(undefined *)((int)&DAT_8008c730 + iVar8 + 1) = (char)uStack32; + (&DAT_8008c738)[iVar8] = (char)uStack36; + } + } + if (0x1000 < (int)(uStack32 * uStack36)) { + return 0; + } + decompressdata(img_curpos,auStack2104,auStack10552); + puVar7 = copy_loaded_image_to_final_mem_location + (auStack2104,uStack32,uStack36,(longlong)(int)index, + param_2 + (int)puVar13); + iVar8 = proc_7F0CE894(); + proc_7F0CBF10(iVar8); + if ((param_3 == 1) && (0 < param_4)) { + proc_7F0CB67C((int)(param_2 + (int)puVar13),uStack32,uStack36,index); + } + iVar14 += 1; + puVar13 = puVar7 + (int)puVar13; + } while (iVar14 != iStack12); } - puVar8 = auStack11064 + uStack4; - do { - puVar12 = puVar8 + 4; - puVar13 = puVar13 + 8; - *param_2 = (byte)((uint)*puVar8 >> 8); - param_2[1] = (byte)*puVar8; - param_2[2] = (byte)((uint)puVar8[1] >> 8); - param_2[3] = (byte)puVar8[1]; - param_2[4] = (byte)((uint)puVar8[2] >> 8); - param_2[5] = (byte)puVar8[2]; - param_2[6] = (byte)((uint)puVar8[3] >> 8); - param_2[7] = (byte)puVar8[3]; - puVar8 = puVar12; - param_2 = param_2 + 8; - } while (puVar12 != auStack11064 + uStack48); - } - puVar7 = puVar13 + 7; + uStack4 = 0; + if (bVar3) { + (&DAT_8008c730)[DAT_8008d090 * 8] = (ushort)((uint)**(undefined4 **)(param_5 + 0xc) >> 0x14) + ; + DAT_8008d090 += 1; + if (0x95 < DAT_8008d090) { + DAT_8008d090 = 0; + } + } + if (param_3 == 0) { + if (param_4 < 2) { + if (param_4 == 1) { + uStack4 = 0; + proc_7F0CB67C((int)param_2,uStack32,uStack36,index); + } + } + else { + iVar14 = 1; + uVar6 = uStack32; + pbVar16 = param_2; + uVar11 = uStack36; + if (param_4 >= 2) { + pbVar15 = param_2; + pbVar4 = param_2 + (int)puVar13; + do { + pbVar16 = pbVar4; + iVar8 = proc_7F0C6C70(pbVar15,(int)pbVar16,uVar6,uVar11,index,auStack11064, + uStack48); + if (0x800 < (int)(puVar13 + iVar8)) { + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = + (byte)(iVar14 << 5) | *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0x1f; + pbVar16 = pbVar15; + break; + } + proc_7F0CB67C((int)pbVar15,uVar6,uVar11,index); + iVar14 += 1; + uVar6 = (int)(uVar6 + 1) >> 1; + uVar11 = (int)(uVar11 + 1) >> 1; + puVar13 = puVar13 + iVar8; + pbVar15 = pbVar16; + pbVar4 = pbVar16 + iVar8; + } while (iVar14 != param_4); + } + proc_7F0CB67C((int)pbVar16,uVar6,uVar11,index); + } + } + if (0 < (int)uStack48) { + param_2 = param_2 + (int)puVar13; + if ((uStack48 & 3) != 0) { + puVar9 = auStack11064 + uStack4; + pbVar16 = param_2; + do { + puVar7 = puVar13; + uStack4 += 1; + puVar13 = puVar7 + 2; + *pbVar16 = (byte)((uint)*puVar9 >> 8); + uVar2 = *puVar9; + param_2 = pbVar16 + 2; + puVar9 = puVar9 + 1; + pbVar16[1] = (byte)uVar2; + pbVar16 = param_2; + } while ((uStack48 & 3) != uStack4); + if (uStack4 == uStack48) { + puVar7 = puVar7 + 9; + goto LAB_7f0c6b94; + } + } + puVar9 = auStack11064 + uStack4; + do { + puVar12 = puVar9 + 4; + puVar13 = puVar13 + 8; + *param_2 = (byte)((uint)*puVar9 >> 8); + param_2[1] = (byte)*puVar9; + param_2[2] = (byte)((uint)puVar9[1] >> 8); + param_2[3] = (byte)puVar9[1]; + param_2[4] = (byte)((uint)puVar9[2] >> 8); + param_2[5] = (byte)puVar9[2]; + param_2[6] = (byte)((uint)puVar9[3] >> 8); + param_2[7] = (byte)puVar9[3]; + puVar9 = puVar12; + param_2 = param_2 + 8; + } while (puVar12 != auStack11064 + uStack48); + } + puVar7 = puVar13 + 7; LAB_7f0c6b94: - return (uint)puVar7 & 0xfffffff8; + return (uint)puVar7 & 0xfffffff8; } @@ -136628,42 +135854,42 @@ copy_loaded_image_to_final_mem_location (undefined *param_1,int param_2,int param_3,longlong param_4,undefined *param_5) { - undefined uVar1; - undefined *puVar2; - undefined *puVar3; - int iVar4; - int iVar5; - int iStack16; - - if ((param_4 == 9) || (param_4 == 0xb)) { - iStack16 = 1; - } - else { - if ((param_4 == 10) || (param_4 == 0xc)) { - iStack16 = 2; + undefined uVar1; + undefined *puVar2; + undefined *puVar3; + int iVar4; + int iVar5; + int iStack16; + + if ((param_4 == 9) || (param_4 == 0xb)) { + iStack16 = 1; } - } - iVar4 = 0; - puVar3 = param_5; - if (0 < param_3) { - do { - iVar5 = 0; - puVar2 = puVar3; - if (0 < param_2) { + else { + if ((param_4 == 10) || (param_4 == 0xc)) { + iStack16 = 2; + } + } + iVar4 = 0; + puVar3 = param_5; + if (0 < param_3) { do { - uVar1 = *param_1; - iVar5 += iStack16; - puVar3 = puVar2 + 1; - param_1 = param_1 + 1; - *puVar2 = uVar1; - puVar2 = puVar3; - } while (iVar5 < param_2); - } - iVar4 += 1; - puVar3 = (undefined *)((uint)(puVar3 + 7) & 0xfffffff8); - } while (iVar4 != param_3); - } - return puVar3 + -(int)param_5; + iVar5 = 0; + puVar2 = puVar3; + if (0 < param_2) { + do { + uVar1 = *param_1; + iVar5 += iStack16; + puVar3 = puVar2 + 1; + param_1 = param_1 + 1; + *puVar2 = uVar1; + puVar2 = puVar3; + } while (iVar5 < param_2); + } + iVar4 += 1; + puVar3 = (undefined *)((uint)(puVar3 + 7) & 0xfffffff8); + } while (iVar4 != param_3); + } + return puVar3 + -(int)param_5; } @@ -136672,326 +135898,333 @@ int proc_7F0C6C70(byte *param_1,int param_2,int param_3,int param_4,int param_5, uint param_7) { - ushort uVar1; - ushort uVar2; - ushort uVar3; - ushort uVar4; - bool bVar5; - int iVar6; - uint uVar7; - uint uVar8; - int iVar9; - int iVar10; - int iVar11; - int iVar12; - int iVar13; - byte *pbVar14; - byte *pbVar15; - int iVar16; - int iStack52; - uint uStack16; - uint uStack12; - int iStack8; - - iVar16 = param_4 + 1 >> 1; - if (param_5 == 9) { + ushort uVar1; + ushort uVar2; + ushort uVar3; + ushort uVar4; + bool bVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + byte *pbVar14; + byte *pbVar15; + int iVar16; + int iStack52; + uint uStack16; + uint uStack12; + int iStack8; + + iVar16 = param_4 + 1 >> 1; + if (param_5 == 9) { LAB_7f0c6cf0: - uStack16 = (param_3 + 1 >> 1) + 7U & 0xff8; - uStack12 = param_3 + 7U & 0xff8; - } - else { - if (param_5 != 10) { - if (param_5 == 0xb) goto LAB_7f0c6cf0; - if (param_5 != 0xc) goto LAB_7f0c6d30; - } - uStack16 = (param_3 + 1 >> 1) + 0xfU & 0xff0; - uStack12 = param_3 + 0xfU & 0xff0; - } -LAB_7f0c6d30: - if (param_5 == 9) { - iStack8 = 0; - iStack52 = param_2; - if (0 < param_4) { - do { - uVar8 = uStack12; - if (param_4 <= iStack8 + 1) { - uVar8 = 0; - } - if (0 < (int)uStack12) { - pbVar15 = param_1 + uVar8; - iVar6 = 1; - iVar12 = 0; - pbVar14 = param_1; - while( true ) { - iVar13 = iVar12; - if (iVar6 < param_3) { - iVar13 = iVar6; - } - uVar1 = param_6[(uint)*pbVar14]; - uVar2 = param_6[(uint)param_1[iVar13]]; - uVar3 = param_6[(uint)*pbVar15]; - uVar4 = param_6[(uint)param_1[uVar8 + iVar13]]; - uVar7 = proc_7F0C77AC(param_6,param_7, - (int)(((int)(short)uVar1 >> 0xb & 0x1fU) + - ((int)(short)uVar2 >> 0xb & 0x1fU) + - ((int)(short)uVar3 >> 0xb & 0x1fU) + - ((int)(short)uVar4 >> 0xb & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 >> 6 & 0x1fU) + - ((int)(short)uVar2 >> 6 & 0x1fU) + - ((int)(short)uVar3 >> 6 & 0x1fU) + - ((int)(short)uVar4 >> 6 & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 >> 1 & 0x1fU) + - ((int)(short)uVar2 >> 1 & 0x1fU) + - ((int)(short)uVar3 >> 1 & 0x1fU) + - ((int)(short)uVar4 >> 1 & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 & 1U) + ((int)(short)uVar2 & 1U) + - ((int)(short)uVar3 & 1U) + ((int)(short)uVar4 & 1U) + 2) >> - 2 & 1); - *(undefined *)(iStack52 + (iVar12 >> 1)) = (char)uVar7; - pbVar14 = pbVar14 + 2; - pbVar15 = pbVar15 + 2; - if ((int)uStack12 <= iVar12 + 2) break; - iVar6 = iVar12 + 3; - iVar12 = iVar12 + 2; - } - } - iStack8 += 2; - iStack52 += uStack16; - param_1 = param_1 + uStack12 * 2; - } while (iStack8 < param_4); - } - iVar12 = iVar16 * uStack16; - } - else { - iVar6 = (int)uStack16 >> 1; - if (param_5 == 10) { - iStack8 = 0; - iStack52 = param_2; - if (0 < param_4) { - do { - iVar13 = 0; - iVar12 = (int)uStack12 >> 1; - if (param_4 <= iStack8 + 1) { - iVar12 = 0; - } - if (0 < (int)uStack12) { - iVar11 = 0; - while( true ) { - bVar5 = param_3 <= iVar13 + 1; - uVar1 = param_6[(int)(uint)param_1[iVar11] >> 4]; - if (bVar5) { - iVar9 = 4; - } - else { - iVar9 = 0; - } - uVar2 = param_6[(int)(uint)param_1[iVar11] >> iVar9 & 0xf]; - uVar3 = param_6[(int)(uint)param_1[iVar11 + iVar12] >> 4]; - if (bVar5) { - iVar9 = 4; - } - else { - iVar9 = 0; - } - uVar4 = param_6[(int)(uint)(param_1 + iVar12)[iVar11] >> iVar9 & 0xf]; - uVar8 = proc_7F0C77AC(param_6,param_7, - (int)(((int)(short)uVar1 >> 0xb & 0x1fU) + - ((int)(short)uVar2 >> 0xb & 0x1fU) + - ((int)(short)uVar3 >> 0xb & 0x1fU) + - ((int)(short)uVar4 >> 0xb & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 >> 6 & 0x1fU) + - ((int)(short)uVar2 >> 6 & 0x1fU) + - ((int)(short)uVar3 >> 6 & 0x1fU) + - ((int)(short)uVar4 >> 6 & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 >> 1 & 0x1fU) + - ((int)(short)uVar2 >> 1 & 0x1fU) + - ((int)(short)uVar3 >> 1 & 0x1fU) + - ((int)(short)uVar4 >> 1 & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 & 1U) + ((int)(short)uVar2 & 1U) + - ((int)(short)uVar3 & 1U) + ((int)(short)uVar4 & 1U) + 2) - >> 2 & 1); - iVar11 = iVar13 + 2 >> 1; - pbVar14 = (byte *)(iStack52 + (iVar13 >> 2)); - *pbVar14 = (byte)(uVar8 << 4); - bVar5 = param_3 <= iVar13 + 3; - uVar1 = param_6[(int)(uint)param_1[iVar11] >> 4]; - if (bVar5) { - iVar9 = 4; - } - else { - iVar9 = 0; - } - uVar2 = param_6[(int)(uint)param_1[iVar11] >> iVar9 & 0xf]; - uVar3 = param_6[(int)(uint)param_1[iVar11 + iVar12] >> 4]; - if (bVar5) { - iVar9 = 4; - } - else { - iVar9 = 0; - } - uVar4 = param_6[(int)(uint)(param_1 + iVar12)[iVar11] >> iVar9 & 0xf]; - uVar8 = proc_7F0C77AC(param_6,param_7, - (int)(((int)(short)uVar1 >> 0xb & 0x1fU) + - ((int)(short)uVar2 >> 0xb & 0x1fU) + - ((int)(short)uVar3 >> 0xb & 0x1fU) + - ((int)(short)uVar4 >> 0xb & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 >> 6 & 0x1fU) + - ((int)(short)uVar2 >> 6 & 0x1fU) + - ((int)(short)uVar3 >> 6 & 0x1fU) + - ((int)(short)uVar4 >> 6 & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 >> 1 & 0x1fU) + - ((int)(short)uVar2 >> 1 & 0x1fU) + - ((int)(short)uVar3 >> 1 & 0x1fU) + - ((int)(short)uVar4 >> 1 & 0x1fU)) >> 2 & 0x1f, - (int)(((int)(short)uVar1 & 1U) + ((int)(short)uVar2 & 1U) + - ((int)(short)uVar3 & 1U) + ((int)(short)uVar4 & 1U) + 2) - >> 2 & 1); - iVar13 += 4; - *pbVar14 = *pbVar14 | (byte)uVar8; - if ((int)uStack12 <= iVar13) break; - iVar11 = iVar13 >> 1; - } - } - iStack8 += 2; - iStack52 += iVar6; - param_1 = param_1 + uStack12; - } while (iStack8 < param_4); - } - iVar12 = iVar6 * iVar16; + uStack16 = (param_3 + 1 >> 1) + 7U & 0xff8; + uStack12 = param_3 + 7U & 0xff8; } else { - if (param_5 == 0xb) { + if (param_5 != 10) { + if (param_5 == 0xb) goto LAB_7f0c6cf0; + if (param_5 != 0xc) goto LAB_7f0c6d30; + } + uStack16 = (param_3 + 1 >> 1) + 0xfU & 0xff0; + uStack12 = param_3 + 0xfU & 0xff0; + } +LAB_7f0c6d30: + iStack52 = param_2; + if (param_5 == 9) { iStack8 = 0; - iStack52 = param_2; if (0 < param_4) { - do { - uVar8 = uStack12; - if (param_4 <= iStack8 + 1) { - uVar8 = 0; - } - if (0 < (int)uStack12) { - pbVar15 = param_1 + uVar8; - iVar6 = 1; - iVar12 = 0; - pbVar14 = param_1; - while( true ) { - iVar13 = iVar12; - if (iVar6 < param_3) { - iVar13 = iVar6; + do { + uVar8 = uStack12; + if (param_4 <= iStack8 + 1) { + uVar8 = 0; } - uVar7 = proc_7F0C7BD8(param_6,param_7, - (int)(((int)(short)param_6[(uint)*pbVar14] >> 8 & 0xffU) + - ((int)(short)param_6[(uint)param_1[iVar13]] >> 8 & 0xffU - ) + ((int)(short)param_6[(uint)*pbVar15] >> 8 & 0xffU) + - ((int)(short)param_6[(uint)param_1[uVar8 + iVar13]] >> 8 - & 0xffU)) >> 2 & 0xff, - (int)(((int)(short)param_6[(uint)*pbVar14] & 0xffU) + - ((int)(short)param_6[(uint)param_1[iVar13]] & 0xffU) + - ((int)(short)param_6[(uint)*pbVar15] & 0xffU) + - ((int)(short)param_6[(uint)param_1[uVar8 + iVar13]] & - 0xffU) + 1) >> 2 & 0xff); - *(undefined *)(iStack52 + (iVar12 >> 1)) = (char)uVar7; - pbVar14 = pbVar14 + 2; - pbVar15 = pbVar15 + 2; - if ((int)uStack12 <= iVar12 + 2) break; - iVar6 = iVar12 + 3; - iVar12 = iVar12 + 2; - } - } - iStack8 += 2; - iStack52 += uStack16; - param_1 = param_1 + uStack12 * 2; - } while (iStack8 < param_4); + if (0 < (int)uStack12) { + pbVar15 = param_1 + uVar8; + iVar6 = 1; + iVar12 = 0; + pbVar14 = param_1; + while( true ) { + iVar13 = iVar12; + if (iVar6 < param_3) { + iVar13 = iVar6; + } + uVar1 = param_6[*pbVar14]; + uVar2 = param_6[param_1[iVar13]]; + uVar3 = param_6[*pbVar15]; + uVar4 = param_6[param_1[uVar8 + iVar13]]; + uVar7 = proc_7F0C77AC(param_6,param_7, + (int)(((int)(short)uVar1 >> 0xb & 0x1fU) + + ((int)(short)uVar2 >> 0xb & 0x1fU) + + ((int)(short)uVar3 >> 0xb & 0x1fU) + + ((int)(short)uVar4 >> 0xb & 0x1fU)) >> 2 & 0x1f, + (int)(((int)(short)uVar1 >> 6 & 0x1fU) + + ((int)(short)uVar2 >> 6 & 0x1fU) + + ((int)(short)uVar3 >> 6 & 0x1fU) + + ((int)(short)uVar4 >> 6 & 0x1fU)) >> 2 & 0x1f, + (int)(((int)(short)uVar1 >> 1 & 0x1fU) + + ((int)(short)uVar2 >> 1 & 0x1fU) + + ((int)(short)uVar3 >> 1 & 0x1fU) + + ((int)(short)uVar4 >> 1 & 0x1fU)) >> 2 & 0x1f, + (int)(((int)(short)uVar1 & 1U) + + ((int)(short)uVar2 & 1U) + + ((int)(short)uVar3 & 1U) + + ((int)(short)uVar4 & 1U) + 2) >> 2 & 1); + *(undefined *)(iStack52 + (iVar12 >> 1)) = (char)uVar7; + pbVar14 = pbVar14 + 2; + pbVar15 = pbVar15 + 2; + if ((int)uStack12 <= iVar12 + 2) break; + iVar6 = iVar12 + 3; + iVar12 = iVar12 + 2; + } + } + iStack8 += 2; + iStack52 += uStack16; + param_1 = param_1 + uStack12 * 2; + } while (iStack8 < param_4); } iVar12 = iVar16 * uStack16; - } - else { - iVar12 = 0; - if (param_5 == 0xc) { - iStack8 = 0; - iStack52 = param_2; - if (0 < param_4) { - do { - iVar13 = 0; - iVar12 = (int)uStack12 >> 1; - if (param_4 <= iStack8 + 1) { - iVar12 = 0; - } - iVar11 = 0; - if (0 < (int)uStack12) { - while( true ) { - bVar5 = iVar13 + 1 < param_3; - if ((int)(uint)param_1[iVar11] >> bVar5 == 0) { - iVar9 = 4; - } - else { - iVar9 = 0; - } - if ((int)(uint)param_1[iVar11 + iVar12] >> bVar5 == 0) { - iVar10 = 4; - } - else { - iVar10 = 0; - } - uVar8 = proc_7F0C7BD8(param_6,param_7, - (int)(((int)(short)param_6[(int)(uint)param_1[iVar11] >> 4] - >> 8 & 0xffU) + - ((int)(short)param_6[iVar9] >> 8 & 0xffU) + - ((int)(short)param_6[(int)(uint)param_1[iVar11 + - iVar12] >> 4] >> 8 & 0xffU) + - ((int)(short)param_6[iVar10] >> 8 & 0xffU)) >> 2 & 0xff - ,(int)(((int)(short)param_6[(int)(uint)param_1[iVar11] >> 4] - & 0xffU) + ((int)(short)param_6[iVar9] & 0xffU) + - ((int)(short)param_6[(int)(uint)param_1[iVar11 + - iVar12] >> 4] & 0xffU) + - ((int)(short)param_6[iVar10] & 0xffU) + 1) >> 2 & - 0xff); - iVar11 = iVar13 + 2 >> 1; - pbVar14 = (byte *)(iStack52 + (iVar13 >> 2)); - *pbVar14 = (byte)(uVar8 << 4); - bVar5 = iVar13 + 3 < param_3; - if ((int)(uint)param_1[iVar11] >> bVar5 == 0) { - iVar9 = 4; - } - else { - iVar9 = 0; - } - if ((int)(uint)param_1[iVar11 + iVar12] >> bVar5 == 0) { - iVar10 = 4; - } - else { - iVar10 = 0; - } - uVar8 = proc_7F0C7BD8(param_6,param_7, - (int)(((int)(short)param_6[(int)(uint)param_1[iVar11] >> 4] - >> 8 & 0xffU) + - ((int)(short)param_6[iVar9] >> 8 & 0xffU) + - ((int)(short)param_6[(int)(uint)param_1[iVar11 + - iVar12] >> 4] >> 8 & 0xffU) + - ((int)(short)param_6[iVar10] >> 8 & 0xffU)) >> 2 & 0xff - ,(int)(((int)(short)param_6[(int)(uint)param_1[iVar11] >> 4] - & 0xffU) + ((int)(short)param_6[iVar9] & 0xffU) + - ((int)(short)param_6[(int)(uint)param_1[iVar11 + - iVar12] >> 4] & 0xffU) + - ((int)(short)param_6[iVar10] & 0xffU) + 1) >> 2 & - 0xff); - iVar13 += 4; - *pbVar14 = *pbVar14 | (byte)uVar8; - if ((int)uStack12 <= iVar13) break; - iVar11 = iVar13 >> 1; - } - } - iStack8 += 2; - iStack52 += iVar6; - param_1 = param_1 + uStack12; - } while (iStack8 < param_4); - } - iVar12 = iVar6 * iVar16; - } - } } - } - return iVar12; + else { + iVar6 = (int)uStack16 >> 1; + if (param_5 == 10) { + iStack8 = 0; + if (0 < param_4) { + do { + iVar13 = 0; + iVar12 = (int)uStack12 >> 1; + if (param_4 <= iStack8 + 1) { + iVar12 = 0; + } + if (0 < (int)uStack12) { + iVar11 = 0; + while( true ) { + bVar5 = param_3 <= iVar13 + 1; + uVar1 = param_6[(int)(uint)param_1[iVar11] >> 4]; + if (bVar5) { + iVar9 = 4; + } + else { + iVar9 = 0; + } + uVar2 = param_6[(int)(uint)param_1[iVar11] >> iVar9 & 0xf]; + uVar3 = param_6[(int)(uint)param_1[iVar11 + iVar12] >> 4]; + if (bVar5) { + iVar9 = 4; + } + else { + iVar9 = 0; + } + uVar4 = param_6[(int)(uint)(param_1 + iVar12)[iVar11] >> iVar9 & 0xf]; + uVar8 = proc_7F0C77AC(param_6,param_7, + (int)(((int)(short)uVar1 >> 0xb & 0x1fU) + + ((int)(short)uVar2 >> 0xb & 0x1fU) + + ((int)(short)uVar3 >> 0xb & 0x1fU) + + ((int)(short)uVar4 >> 0xb & 0x1fU)) >> 2 & + 0x1f,(int)(((int)(short)uVar1 >> 6 & 0x1fU) + + ((int)(short)uVar2 >> 6 & 0x1fU) + + ((int)(short)uVar3 >> 6 & 0x1fU) + + ((int)(short)uVar4 >> 6 & 0x1fU)) >> 2 & + 0x1f, + (int)(((int)(short)uVar1 >> 1 & 0x1fU) + + ((int)(short)uVar2 >> 1 & 0x1fU) + + ((int)(short)uVar3 >> 1 & 0x1fU) + + ((int)(short)uVar4 >> 1 & 0x1fU)) >> 2 & 0x1f + ,(int)(((int)(short)uVar1 & 1U) + + ((int)(short)uVar2 & 1U) + + ((int)(short)uVar3 & 1U) + + ((int)(short)uVar4 & 1U) + 2) >> 2 & 1); + iVar11 = iVar13 + 2 >> 1; + pbVar14 = (byte *)(iStack52 + (iVar13 >> 2)); + *pbVar14 = (byte)(uVar8 << 4); + bVar5 = param_3 <= iVar13 + 3; + uVar1 = param_6[(int)(uint)param_1[iVar11] >> 4]; + if (bVar5) { + iVar9 = 4; + } + else { + iVar9 = 0; + } + uVar2 = param_6[(int)(uint)param_1[iVar11] >> iVar9 & 0xf]; + uVar3 = param_6[(int)(uint)param_1[iVar11 + iVar12] >> 4]; + if (bVar5) { + iVar9 = 4; + } + else { + iVar9 = 0; + } + uVar4 = param_6[(int)(uint)(param_1 + iVar12)[iVar11] >> iVar9 & 0xf]; + uVar8 = proc_7F0C77AC(param_6,param_7, + (int)(((int)(short)uVar1 >> 0xb & 0x1fU) + + ((int)(short)uVar2 >> 0xb & 0x1fU) + + ((int)(short)uVar3 >> 0xb & 0x1fU) + + ((int)(short)uVar4 >> 0xb & 0x1fU)) >> 2 & + 0x1f,(int)(((int)(short)uVar1 >> 6 & 0x1fU) + + ((int)(short)uVar2 >> 6 & 0x1fU) + + ((int)(short)uVar3 >> 6 & 0x1fU) + + ((int)(short)uVar4 >> 6 & 0x1fU)) >> 2 & + 0x1f, + (int)(((int)(short)uVar1 >> 1 & 0x1fU) + + ((int)(short)uVar2 >> 1 & 0x1fU) + + ((int)(short)uVar3 >> 1 & 0x1fU) + + ((int)(short)uVar4 >> 1 & 0x1fU)) >> 2 & 0x1f + ,(int)(((int)(short)uVar1 & 1U) + + ((int)(short)uVar2 & 1U) + + ((int)(short)uVar3 & 1U) + + ((int)(short)uVar4 & 1U) + 2) >> 2 & 1); + iVar13 += 4; + *pbVar14 = *pbVar14 | (byte)uVar8; + if ((int)uStack12 <= iVar13) break; + iVar11 = iVar13 >> 1; + } + } + iStack8 += 2; + iStack52 += iVar6; + param_1 = param_1 + uStack12; + } while (iStack8 < param_4); + } + iVar12 = iVar6 * iVar16; + } + else { + if (param_5 == 0xb) { + iStack8 = 0; + if (0 < param_4) { + do { + uVar8 = uStack12; + if (param_4 <= iStack8 + 1) { + uVar8 = 0; + } + if (0 < (int)uStack12) { + pbVar15 = param_1 + uVar8; + iVar6 = 1; + iVar12 = 0; + pbVar14 = param_1; + while( true ) { + iVar13 = iVar12; + if (iVar6 < param_3) { + iVar13 = iVar6; + } + uVar7 = proc_7F0C7BD8(param_6,param_7, + (int)(((int)(short)param_6[*pbVar14] >> 8 & + 0xffU) + ((int)(short)param_6[param_1[ + iVar13]] >> 8 & 0xffU) + + ((int)(short)param_6[*pbVar15] >> 8 & 0xffU) + + ((int)(short)param_6[param_1[uVar8 + iVar13]] >> 8 + & 0xffU)) >> 2 & 0xff, + (int)(((int)(short)param_6[*pbVar14] & 0xffU) + + ((int)(short)param_6[param_1[iVar13]] & + 0xffU) + ((int)(short)param_6[*pbVar15] & + 0xffU) + + ((int)(short)param_6[param_1[uVar8 + iVar13] + ] & 0xffU) + 1) >> 2 & + 0xff); + *(undefined *)(iStack52 + (iVar12 >> 1)) = (char)uVar7; + pbVar14 = pbVar14 + 2; + pbVar15 = pbVar15 + 2; + if ((int)uStack12 <= iVar12 + 2) break; + iVar6 = iVar12 + 3; + iVar12 = iVar12 + 2; + } + } + iStack8 += 2; + iStack52 += uStack16; + param_1 = param_1 + uStack12 * 2; + } while (iStack8 < param_4); + } + iVar12 = iVar16 * uStack16; + } + else { + iVar12 = 0; + if (param_5 == 0xc) { + iStack8 = 0; + if (0 < param_4) { + do { + iVar13 = 0; + iVar12 = (int)uStack12 >> 1; + if (param_4 <= iStack8 + 1) { + iVar12 = 0; + } + iVar11 = 0; + if (0 < (int)uStack12) { + while( true ) { + bVar5 = iVar13 + 1 < param_3; + if ((int)(uint)param_1[iVar11] >> bVar5 == 0) { + iVar9 = 4; + } + else { + iVar9 = 0; + } + if ((int)(uint)param_1[iVar11 + iVar12] >> bVar5 == 0) { + iVar10 = 4; + } + else { + iVar10 = 0; + } + uVar8 = proc_7F0C7BD8(param_6,param_7, + (int)(((int)(short)param_6[(int)(uint) + param_1[iVar11] >> 4] >> 8 & 0xffU) + + ((int)(short)param_6[iVar9] >> 8 & 0xffU) + + ((int)(short)param_6[(int)(uint)param_1[iVar11 + + iVar12] >> 4] >> 8 & 0xffU) + + ((int)(short)param_6[iVar10] >> 8 & 0xffU)) >> 2 & + 0xff,(int)(((int)(short)param_6[(int)(uint)param_1 + [iVar11] >> 4] & 0xffU) + + ((int)(short)param_6[iVar9] & 0xffU) + + ((int)(short)param_6[(int)(uint)param_1[iVar11 + + iVar12] >> 4] & 0xffU) + + ((int)(short)param_6[iVar10] & 0xffU) + 1) >> 2 & + 0xff); + iVar11 = iVar13 + 2 >> 1; + pbVar14 = (byte *)(iStack52 + (iVar13 >> 2)); + *pbVar14 = (byte)(uVar8 << 4); + bVar5 = iVar13 + 3 < param_3; + if ((int)(uint)param_1[iVar11] >> bVar5 == 0) { + iVar9 = 4; + } + else { + iVar9 = 0; + } + if ((int)(uint)param_1[iVar11 + iVar12] >> bVar5 == 0) { + iVar10 = 4; + } + else { + iVar10 = 0; + } + uVar8 = proc_7F0C7BD8(param_6,param_7, + (int)(((int)(short)param_6[(int)(uint) + param_1[iVar11] >> 4] >> 8 & 0xffU) + + ((int)(short)param_6[iVar9] >> 8 & 0xffU) + + ((int)(short)param_6[(int)(uint)param_1[iVar11 + + iVar12] >> 4] >> 8 & 0xffU) + + ((int)(short)param_6[iVar10] >> 8 & 0xffU)) >> 2 & + 0xff,(int)(((int)(short)param_6[(int)(uint)param_1 + [iVar11] >> 4] & 0xffU) + + ((int)(short)param_6[iVar9] & 0xffU) + + ((int)(short)param_6[(int)(uint)param_1[iVar11 + + iVar12] >> 4] & 0xffU) + + ((int)(short)param_6[iVar10] & 0xffU) + 1) >> 2 & + 0xff); + iVar13 += 4; + *pbVar14 = *pbVar14 | (byte)uVar8; + if ((int)uStack12 <= iVar13) break; + iVar11 = iVar13 >> 1; + } + } + iStack8 += 2; + iStack52 += iVar6; + param_1 = param_1 + uStack12; + } while (iStack8 < param_4); + } + iVar12 = iVar6 * iVar16; + } + } + } + } + return iVar12; } @@ -137002,150 +136235,148 @@ LAB_7f0c6d30: uint proc_7F0C77AC(ushort *param_1,uint param_2,int param_3,int param_4,int param_5,uint param_6) { - ushort uVar1; - ushort *puVar2; - uint uVar3; - int iVar4; - uint uVar5; - int iVar6; - int iVar7; - int iVar8; - uint uVar9; - ulonglong uVar10; - int iVar11; - int iVar12; - int iVar13; - - uVar3 = 0; - if (0 < (int)param_2) { - if ((param_2 & 3) != 0) { - puVar2 = param_1; - do { - if (((longlong)(int)(param_3 << 0xb | param_4 << 6 | param_5 << 1 | param_6) & 0xffffU) == - (ulonglong)*puVar2) { - return uVar3; - } - uVar3 += 1; - puVar2 = puVar2 + 1; - } while ((param_2 & 3) != uVar3); - if (uVar3 == param_2) goto LAB_7f0c78d8; - } - puVar2 = param_1 + uVar3; - uVar10 = (longlong)(int)(param_3 << 0xb | param_4 << 6 | param_5 << 1 | param_6) & 0xffff; - do { - if (uVar10 == (ulonglong)*puVar2) { - return uVar3; - } - if (uVar10 == (ulonglong)puVar2[1]) { - return uVar3 + 1; - } - if (uVar10 == (ulonglong)puVar2[2]) { - return uVar3 + 2; - } - if (uVar10 == (ulonglong)puVar2[3]) { - return uVar3 + 3; - } - uVar3 += 4; - puVar2 = puVar2 + 4; - } while (uVar3 != param_2); - } -LAB_7f0c78d8: - uVar10 = SEXT48((int)param_6); - iVar6 = param_2 - 1; - iVar11 = iVar6; - if (1 < iVar6) { - iVar8 = param_3 * param_3 + param_4 * param_4 + param_5 * param_5 + param_6 * 0x3c1; - iVar11 = iVar6; - iVar7 = 0; - iVar12 = iVar6; - while( true ) { - iVar4 = iVar12 >> 1; - uVar1 = param_1[iVar4]; - iVar12 = (int)(uint)uVar1 >> 0xb; - uVar3 = (int)(uint)uVar1 >> 6 & 0x1f; - uVar9 = (int)(uint)uVar1 >> 1 & 0x1f; - iVar12 = iVar12 * iVar12 + uVar3 * uVar3 + uVar9 * uVar9 + ((uint)uVar1 & 1) * 0x3c1; - if ((iVar8 <= iVar12) && (iVar11 = iVar4, iVar8 < iVar12)) { - iVar11 = iVar4; - iVar4 = iVar7; - } - if (iVar11 - iVar4 < 2) break; - iVar12 = iVar11 + iVar4; - iVar7 = iVar4; - } - } - uVar3 = iVar11 - 4; - if ((int)uVar3 < 0) { + ushort uVar1; + ushort *puVar2; + uint uVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + ulonglong uVar10; + int iVar11; + int iVar12; + int iVar13; + uVar3 = 0; - } - iVar7 = iVar11 + 4; - if ((int)param_2 <= iVar11 + 4) { - iVar7 = iVar6; - } - iVar11 = 999999; - uVar9 = 0; - if ((int)uVar3 <= iVar7) { - if (((iVar7 - uVar3) + 1 & 1) == 0) { - iVar6 = uVar3 << 1; + if (0 < (int)param_2) { + if ((param_2 & 3) != 0) { + puVar2 = param_1; + do { + if (((longlong)(int)(param_3 << 0xb | param_4 << 6 | param_5 << 1 | param_6) & + 0xffffU) == (ulonglong)*puVar2) { + return uVar3; + } + uVar3 += 1; + puVar2 = puVar2 + 1; + } while ((param_2 & 3) != uVar3); + if (uVar3 == param_2) goto LAB_7f0c78d8; + } + puVar2 = param_1 + uVar3; + uVar10 = (longlong)(int)(param_3 << 0xb | param_4 << 6 | param_5 << 1 | param_6) & 0xffff; + do { + if (uVar10 == (ulonglong)*puVar2) { + return uVar3; + } + if (uVar10 == (ulonglong)puVar2[1]) { + return uVar3 + 1; + } + if (uVar10 == (ulonglong)puVar2[2]) { + return uVar3 + 2; + } + if (uVar10 == (ulonglong)puVar2[3]) { + return uVar3 + 3; + } + uVar3 += 4; + puVar2 = puVar2 + 4; + } while (uVar3 != param_2); } - else { - uVar1 = param_1[uVar3]; - uVar5 = uVar3 + 1; - iVar6 = 0x3c1; - if (uVar10 == ((ulonglong)uVar1 & 1)) { - iVar6 = 0; - } - iVar12 = ((int)(uint)uVar1 >> 0xb) - param_3; - iVar8 = ((int)(uint)uVar1 >> 6 & 0x1fU) - param_4; - iVar4 = ((int)(uint)uVar1 >> 1 & 0x1fU) - param_5; - iVar6 = iVar6 + iVar12 * iVar12 + iVar8 * iVar8 + iVar4 * iVar4; - if (iVar6 < 999999) { - uVar9 = uVar3; - iVar11 = iVar6; - } - iVar6 = uVar5 * 2; - uVar3 = uVar5; - if (iVar7 + 1U == uVar5) { - return uVar9; - } +LAB_7f0c78d8: + uVar10 = SEXT48((int)param_6); + iVar6 = param_2 - 1; + iVar11 = iVar6; + if (1 < iVar6) { + iVar8 = param_3 * param_3 + param_4 * param_4 + param_5 * param_5 + param_6 * 0x3c1; + iVar7 = 0; + iVar12 = iVar6; + while( true ) { + iVar4 = iVar12 >> 1; + uVar1 = param_1[iVar4]; + iVar12 = (int)(uint)uVar1 >> 0xb; + uVar3 = (int)(uint)uVar1 >> 6 & 0x1f; + uVar9 = (int)(uint)uVar1 >> 1 & 0x1f; + iVar12 = iVar12 * iVar12 + uVar3 * uVar3 + uVar9 * uVar9 + ((uint)uVar1 & 1) * 0x3c1; + if ((iVar8 <= iVar12) && (iVar11 = iVar4, iVar8 < iVar12)) { + iVar4 = iVar7; + } + if (iVar11 - iVar4 < 2) break; + iVar12 = iVar11 + iVar4; + iVar7 = iVar4; + } } - param_1 = (ushort *)((int)param_1 + iVar6); - do { - uVar1 = *param_1; - iVar6 = 0x3c1; - if (uVar10 == ((ulonglong)uVar1 & 1)) { - iVar6 = 0; - } - iVar8 = ((int)(uint)uVar1 >> 0xb) - param_3; - iVar4 = ((int)(uint)uVar1 >> 6 & 0x1fU) - param_4; - iVar13 = ((int)(uint)uVar1 >> 1 & 0x1fU) - param_5; - iVar12 = 0x3c1; - iVar6 = iVar6 + iVar8 * iVar8 + iVar4 * iVar4 + iVar13 * iVar13; - if (iVar6 < iVar11) { - uVar1 = param_1[1]; - uVar9 = uVar3; - } - else { - uVar1 = param_1[1]; - iVar6 = iVar11; - } - if (uVar10 == ((ulonglong)uVar1 & 1)) { - iVar12 = 0; - } - iVar11 = ((int)(uint)uVar1 >> 0xb) - param_3; - iVar8 = ((int)(uint)uVar1 >> 6 & 0x1fU) - param_4; - iVar4 = ((int)(uint)uVar1 >> 1 & 0x1fU) - param_5; - iVar12 = iVar12 + iVar11 * iVar11 + iVar8 * iVar8 + iVar4 * iVar4; - iVar11 = iVar6; - if (iVar12 < iVar6) { - uVar9 = uVar3 + 1; - iVar11 = iVar12; - } - uVar3 += 2; - param_1 = param_1 + 2; - } while (iVar7 + 1U != uVar3); - } - return uVar9; + uVar3 = iVar11 - 4; + if ((int)uVar3 < 0) { + uVar3 = 0; + } + iVar7 = iVar11 + 4; + if ((int)param_2 <= iVar11 + 4) { + iVar7 = iVar6; + } + iVar11 = 999999; + uVar9 = 0; + if ((int)uVar3 <= iVar7) { + if (((iVar7 - uVar3) + 1 & 1) == 0) { + iVar6 = uVar3 << 1; + } + else { + uVar1 = param_1[uVar3]; + uVar5 = uVar3 + 1; + iVar6 = 0x3c1; + if (uVar10 == ((ulonglong)uVar1 & 1)) { + iVar6 = 0; + } + iVar12 = ((int)(uint)uVar1 >> 0xb) - param_3; + iVar8 = ((int)(uint)uVar1 >> 6 & 0x1fU) - param_4; + iVar4 = ((int)(uint)uVar1 >> 1 & 0x1fU) - param_5; + iVar6 = iVar6 + iVar12 * iVar12 + iVar8 * iVar8 + iVar4 * iVar4; + if (iVar6 < 999999) { + uVar9 = uVar3; + iVar11 = iVar6; + } + iVar6 = uVar5 * 2; + uVar3 = uVar5; + if (iVar7 + 1U == uVar5) { + return uVar9; + } + } + param_1 = (ushort *)((int)param_1 + iVar6); + do { + uVar1 = *param_1; + iVar6 = 0x3c1; + if (uVar10 == ((ulonglong)uVar1 & 1)) { + iVar6 = 0; + } + iVar8 = ((int)(uint)uVar1 >> 0xb) - param_3; + iVar4 = ((int)(uint)uVar1 >> 6 & 0x1fU) - param_4; + iVar13 = ((int)(uint)uVar1 >> 1 & 0x1fU) - param_5; + iVar12 = 0x3c1; + iVar6 = iVar6 + iVar8 * iVar8 + iVar4 * iVar4 + iVar13 * iVar13; + if (iVar6 < iVar11) { + uVar1 = param_1[1]; + uVar9 = uVar3; + } + else { + uVar1 = param_1[1]; + iVar6 = iVar11; + } + if (uVar10 == ((ulonglong)uVar1 & 1)) { + iVar12 = 0; + } + iVar11 = ((int)(uint)uVar1 >> 0xb) - param_3; + iVar8 = ((int)(uint)uVar1 >> 6 & 0x1fU) - param_4; + iVar4 = ((int)(uint)uVar1 >> 1 & 0x1fU) - param_5; + iVar12 = iVar12 + iVar11 * iVar11 + iVar8 * iVar8 + iVar4 * iVar4; + iVar11 = iVar6; + if (iVar12 < iVar6) { + uVar9 = uVar3 + 1; + iVar11 = iVar12; + } + uVar3 += 2; + param_1 = param_1 + 2; + } while (iVar7 + 1U != uVar3); + } + return uVar9; } @@ -137156,101 +136387,99 @@ LAB_7f0c78d8: uint proc_7F0C7BD8(ushort *param_1,uint param_2,int param_3,uint param_4) { - ushort *puVar1; - uint uVar2; - int iVar3; - int iVar4; - uint uVar5; - uint uVar6; - int iVar7; - int iVar8; - int iVar9; - int iVar10; - ulonglong uVar11; - - uVar2 = 0; - if (0 < (int)param_2) { - if ((param_2 & 3) != 0) { - puVar1 = param_1; - do { - if (((longlong)(int)(param_3 << 8 | param_4) & 0xffffU) == (ulonglong)*puVar1) { - return uVar2; - } - uVar2 += 1; - puVar1 = puVar1 + 1; - } while ((param_2 & 3) != uVar2); - if (uVar2 == param_2) goto LAB_7f0c7ca8; - } - uVar11 = (longlong)(int)(param_3 << 8 | param_4) & 0xffff; - puVar1 = param_1 + uVar2; - do { - if (uVar11 == (ulonglong)*puVar1) { - return uVar2; - } - if (uVar11 == (ulonglong)puVar1[1]) { - return uVar2 + 1; - } - if (uVar11 == (ulonglong)puVar1[2]) { - return uVar2 + 2; - } - if (uVar11 == (ulonglong)puVar1[3]) { - return uVar2 + 3; - } - uVar2 += 4; - puVar1 = puVar1 + 4; - } while (uVar2 != param_2); - } -LAB_7f0c7ca8: - iVar7 = param_2 - 1; - iVar3 = iVar7; - if (1 < iVar7) { - iVar8 = param_3 * param_3 + param_4 * param_4; - iVar3 = iVar7; - iVar4 = 0; - iVar10 = iVar7; - while( true ) { - iVar9 = iVar10 >> 1; - iVar10 = (int)(uint)param_1[iVar9] >> 8; - uVar2 = (uint)param_1[iVar9] & 0xff; - iVar10 = iVar10 * iVar10 + uVar2 * uVar2; - if ((iVar8 <= iVar10) && (iVar3 = iVar9, iVar8 < iVar10)) { - iVar3 = iVar9; - iVar9 = iVar4; - } - if (iVar3 - iVar9 < 2) break; - iVar10 = iVar3 + iVar9; - iVar4 = iVar9; - } - } - uVar2 = iVar3 - 4; - if ((int)uVar2 < 0) { + ushort *puVar1; + uint uVar2; + int iVar3; + int iVar4; + uint uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + ulonglong uVar11; + uVar2 = 0; - } - uVar6 = 0; - iVar4 = iVar3 + 4; - if ((int)param_2 <= iVar3 + 4) { - iVar4 = iVar7; - } - iVar3 = 999999; - if ((int)uVar2 <= iVar4) { - param_1 = param_1 + uVar2; - uVar5 = uVar6; - do { - iVar7 = ((int)(uint)*param_1 >> 8) - param_3; - iVar10 = ((uint)*param_1 & 0xff) - param_4; - iVar7 = iVar7 * iVar7 + iVar10 * iVar10; - uVar6 = uVar2; - if (iVar3 <= iVar7) { - uVar6 = uVar5; - iVar7 = iVar3; - } - iVar3 = iVar7; - uVar2 += 1; - param_1 = param_1 + 1; - uVar5 = uVar6; - } while (iVar4 + 1U != uVar2); - } - return uVar6; + if (0 < (int)param_2) { + if ((param_2 & 3) != 0) { + puVar1 = param_1; + do { + if (((longlong)(int)(param_3 << 8 | param_4) & 0xffffU) == (ulonglong)*puVar1) { + return uVar2; + } + uVar2 += 1; + puVar1 = puVar1 + 1; + } while ((param_2 & 3) != uVar2); + if (uVar2 == param_2) goto LAB_7f0c7ca8; + } + uVar11 = (longlong)(int)(param_3 << 8 | param_4) & 0xffff; + puVar1 = param_1 + uVar2; + do { + if (uVar11 == (ulonglong)*puVar1) { + return uVar2; + } + if (uVar11 == (ulonglong)puVar1[1]) { + return uVar2 + 1; + } + if (uVar11 == (ulonglong)puVar1[2]) { + return uVar2 + 2; + } + if (uVar11 == (ulonglong)puVar1[3]) { + return uVar2 + 3; + } + uVar2 += 4; + puVar1 = puVar1 + 4; + } while (uVar2 != param_2); + } +LAB_7f0c7ca8: + iVar7 = param_2 - 1; + iVar3 = iVar7; + if (1 < iVar7) { + iVar8 = param_3 * param_3 + param_4 * param_4; + iVar4 = 0; + iVar10 = iVar7; + while( true ) { + iVar9 = iVar10 >> 1; + iVar10 = (int)(uint)param_1[iVar9] >> 8; + uVar2 = (uint)param_1[iVar9] & 0xff; + iVar10 = iVar10 * iVar10 + uVar2 * uVar2; + if ((iVar8 <= iVar10) && (iVar3 = iVar9, iVar8 < iVar10)) { + iVar9 = iVar4; + } + if (iVar3 - iVar9 < 2) break; + iVar10 = iVar3 + iVar9; + iVar4 = iVar9; + } + } + uVar2 = iVar3 - 4; + if ((int)uVar2 < 0) { + uVar2 = 0; + } + uVar6 = 0; + iVar4 = iVar3 + 4; + if ((int)param_2 <= iVar3 + 4) { + iVar4 = iVar7; + } + iVar3 = 999999; + if ((int)uVar2 <= iVar4) { + param_1 = param_1 + uVar2; + uVar5 = uVar6; + do { + iVar7 = ((int)(uint)*param_1 >> 8) - param_3; + iVar10 = ((uint)*param_1 & 0xff) - param_4; + iVar7 = iVar7 * iVar7 + iVar10 * iVar10; + uVar6 = uVar2; + if (iVar3 <= iVar7) { + uVar6 = uVar5; + iVar7 = iVar3; + } + iVar3 = iVar7; + uVar2 += 1; + param_1 = param_1 + 1; + uVar5 = uVar6; + } while (iVar4 + 1U != uVar2); + } + return uVar6; } @@ -137259,240 +136488,233 @@ int process_huffman_compressed_images (undefined4 param_1,uint *param_2,int param_3,int param_4,int param_5) { - short sVar1; - bool bVar2; - uint *puVar3; - short *psVar4; - uint uVar5; - int iVar6; - int iVar7; - ushort *puVar8; - int iVar9; - uint *puVar10; - undefined uVar11; - undefined uVar12; - uint uStack12328; - int iStack12320; - uint uStack12308; - uint uStack12304; - int iStack12300; - int iStack12296; - uint auStack12288 [1024]; - ushort auStack8192 [4096]; - - iStack12320 = 0; - bVar2 = false; - proc_7F0CBF10(param_1); - if ((param_3 == 0) || (iStack12300 = param_4, param_4 == 0)) { - iStack12300 = 1; - } - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = - (byte)(param_4 << 5) | *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0x1f; - *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = - (byte)(param_3 << 5) & 0x20 | *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0xdf; - if (param_3 != 0) { - bVar2 = true; - if (0 < DAT_8008d090) { - psVar4 = &DAT_8008c730; - sVar1 = DAT_8008c730; - bVar2 = true; - while( true ) { - psVar4 = psVar4 + 8; - if ((longlong)(int)(**(uint **)(param_5 + 0xc) >> 0x14) == (longlong)sVar1) { - bVar2 = false; - } - if (&DAT_8008c730 + DAT_8008d090 * 8 <= psVar4) break; - sVar1 = *psVar4; - } + short sVar1; + bool bVar2; + uint *puVar3; + short *psVar4; + uint uVar5; + ushort *puVar6; + int iVar7; + uint *puVar8; + undefined uVar9; + undefined uVar10; + int iVar11; + uint index; + int iStack12320; + uint uStack12308; + uint uStack12304; + int iStack12300; + int iStack12296; + uint auStack12288 [1024]; + ushort auStack8192 [4096]; + + iStack12320 = 0; + bVar2 = false; + proc_7F0CBF10(param_1); + if ((param_3 == 0) || (iStack12300 = param_4, param_4 == 0)) { + iStack12300 = 1; } - } - iStack12296 = 0; - if (0 < iStack12300) { - do { - uStack12328 = proc_7F0CBF2C(4); - uStack12304 = proc_7F0CBF2C(8); - uStack12308 = proc_7F0CBF2C(8); - uVar5 = proc_7F0CBF2C(4); - uVar11 = (undefined)uStack12304; - uVar12 = (undefined)uStack12308; - if (iStack12296 == 0) { - *(undefined *)(*(int *)(param_5 + 0xc) + 8) = uVar11; - *(undefined *)(*(int *)(param_5 + 0xc) + 9) = uVar12; - iVar6 = uStack12328 * 4; - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = - (byte)(*(int *)(&DAT_80049248 + iVar6) << 2) & 0x1c | - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xe3; - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = - (byte)*(undefined4 *)(&DAT_8004927c + iVar6) & 3 | - *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xfc; - *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = - (byte)((*(int *)(&DAT_800492b0 + iVar6) >> 0xe) << 6) | - *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0x3f; - } - else { - if (bVar2) { - iVar6 = DAT_8008d090 * 0x10 + iStack12296; - *(undefined *)((int)&DAT_8008c730 + iVar6 + 1) = uVar11; - (&DAT_8008c738)[iVar6] = uVar12; + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = + (byte)(param_4 << 5) | *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0x1f; + *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = + (byte)(param_3 << 5) & 0x20 | *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0xdf; + if (param_3 != 0) { + bVar2 = true; + if (0 < DAT_8008d090) { + psVar4 = &DAT_8008c730; + sVar1 = DAT_8008c730; + bVar2 = true; + while( true ) { + psVar4 = psVar4 + 8; + if ((longlong)(int)(**(uint **)(param_5 + 0xc) >> 0x14) == (longlong)sVar1) { + bVar2 = false; + } + if (&DAT_8008c730 + DAT_8008d090 * 8 <= psVar4) break; + sVar1 = *psVar4; + } } - } - iVar6 = uStack12304 * uStack12308; - if (0x2000 < iVar6) { - return 0; - } - switch(uVar5) { - case 0: - case 1: - iVar6 = image_compression0_expand(); - break; - case 2: - iVar7 = uStack12328 * 4; - generate_sample_table - ((int)auStack8192,*(int *)(&dword_80049178 + iVar7) * uStack12304 * uStack12308, - (longlong)*(int *)(&dword_800491E0 + iVar7)); - if (*(int *)(&DAT_800491ac + iVar7) != 0) { - image_get_alpha_values((undefined *)((int)auStack8192 + iVar6 * 3),iVar6); - } - iVar6 = generate_link_final_image - ((int)auStack8192,uStack12304,uStack12308, - (uint *)((int)param_2 + iStack12320),uStack12328); - break; - case 3: - iVar7 = uStack12328 * 4; - iVar9 = 0; - if (0 < *(int *)(&dword_80049178 + iVar7)) { - puVar8 = auStack8192; - do { - generate_sample_table((int)puVar8,iVar6,(longlong)*(int *)(&dword_800491E0 + iVar7)); - iVar9 += 1; - puVar8 = (ushort *)((int)puVar8 + uStack12304 * uStack12308); - } while (iVar9 < *(int *)(&dword_80049178 + iVar7)); - } - if (*(int *)(&DAT_800491ac + iVar7) != 0) { - image_get_alpha_values((undefined *)((int)auStack8192 + iVar6 * 3),iVar6); - } - iVar6 = generate_link_final_image - ((int)auStack8192,uStack12304,uStack12308, - (uint *)((int)param_2 + iStack12320),uStack12328); - break; - case 4: - type4_7_9_getsamples - ((int)auStack8192, - *(int *)(&dword_80049178 + uStack12328 * 4) * uStack12304 * uStack12308); - if (*(int *)(&DAT_800491ac + uStack12328 * 4) != 0) { - image_get_alpha_values((undefined *)((int)auStack8192 + iVar6 * 3),iVar6); - } - iVar6 = generate_link_final_image - ((int)auStack8192,uStack12304,uStack12308, - (uint *)((int)param_2 + iStack12320),uStack12328); - break; - case 5: - uVar5 = type5_6_7_getsamples(auStack12288,(longlong)*(int *)(uStack12328 * 4 + -0x7ffb6dec)) - ; - iVar6 = type5_generate_link_final_image - (uStack12304,uStack12308,(int *)((int)param_2 + iStack12320), - (int)auStack12288,uVar5,uStack12328); - break; - case 6: - uVar5 = type5_6_7_getsamples(auStack12288,(longlong)*(int *)(uStack12328 * 4 + -0x7ffb6dec)) - ; - generate_sample_table((int)auStack8192,iVar6,(longlong)(int)uVar5); - iVar6 = type6_7_generate_link_final_image - (auStack8192,uStack12304,uStack12308,(uint *)((int)param_2 + iStack12320), - (int)auStack12288,uVar5,uStack12328); - break; - case 7: - uVar5 = type5_6_7_getsamples(auStack12288,(longlong)*(int *)(uStack12328 * 4 + -0x7ffb6dec)) - ; - type4_7_9_getsamples((int)auStack8192,iVar6); - iVar6 = type6_7_generate_link_final_image - (auStack8192,uStack12304,uStack12308,(uint *)((int)param_2 + iStack12320), - (int)auStack12288,uVar5,uStack12328); - break; - case 8: - iVar7 = uStack12328 * 4; - uVar5 = proc_7F0CBF2C(3); - generate_sample_table - ((int)auStack8192,*(int *)(&dword_80049178 + iVar7) * uStack12304 * uStack12308, - (longlong)*(int *)(&dword_800491E0 + iVar7)); - type8_9_doohick((int)auStack8192,uStack12304,*(int *)(&dword_80049178 + iVar7) * uStack12308 - ,uVar5,*(int *)(&dword_800491E0 + iVar7)); - if (*(int *)(&DAT_800491ac + iVar7) != 0) { - image_get_alpha_values((undefined *)((int)auStack8192 + iVar6 * 3),iVar6); - } - iVar6 = generate_link_final_image - ((int)auStack8192,uStack12304,uStack12308, - (uint *)((int)param_2 + iStack12320),uStack12328); - break; - case 9: - iVar7 = uStack12328 * 4; - uVar5 = proc_7F0CBF2C(3); - type4_7_9_getsamples - ((int)auStack8192,*(int *)(&dword_80049178 + iVar7) * uStack12304 * uStack12308); - type8_9_doohick((int)auStack8192,uStack12304,*(int *)(&dword_80049178 + iVar7) * uStack12308 - ,uVar5,*(int *)(&dword_800491E0 + iVar7)); - if (*(int *)(&DAT_800491ac + iVar7) != 0) { - image_get_alpha_values((undefined *)((int)auStack8192 + iVar6 * 3),iVar6); - } - iVar6 = generate_link_final_image - ((int)auStack8192,uStack12304,uStack12308, - (uint *)((int)param_2 + iStack12320),uStack12328); - break; - default: - *(undefined *)((int)&DAT_8008c730 + DAT_8008d090 * 0x10 + 1) = uVar11; - (&DAT_8008c738)[DAT_8008d090 * 0x10] = uVar12; + } + iStack12296 = 0; + if (0 < iStack12300) { do { + index = proc_7F0CBF2C(4); + uStack12304 = proc_7F0CBF2C(8); + uStack12308 = proc_7F0CBF2C(8); + uVar5 = proc_7F0CBF2C(4); + uVar9 = (undefined)uStack12304; + uVar10 = (undefined)uStack12308; + if (iStack12296 == 0) { + *(undefined *)(*(int *)(param_5 + 0xc) + 8) = uVar9; + *(undefined *)(*(int *)(param_5 + 0xc) + 9) = uVar10; + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = + (byte)(n64imagetypes[index] << 2) & 0x1c | + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xe3; + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) = + (byte)n64pixelsizes[index] & 3 | + *(byte *)(*(int *)(param_5 + 0xc) + 0xb) & 0xfc; + *(byte *)(*(int *)(param_5 + 0xc) + 0xc) = + (byte)((imgflipvalues[index] >> 0xe) << 6) | + *(byte *)(*(int *)(param_5 + 0xc) + 0xc) & 0x3f; + } + else { + if (bVar2) { + iVar11 = DAT_8008d090 * 0x10 + iStack12296; + *(undefined *)((int)&DAT_8008c730 + iVar11 + 1) = uVar9; + (&DAT_8008c738)[iVar11] = uVar10; + } + } + iVar11 = uStack12304 * uStack12308; + if (0x2000 < iVar11) { + return 0; + } + switch(uVar5) { + case 0: + case 1: + iVar11 = image_compression0_expand(); + break; + case 2: + generate_sample_table + ((int)auStack8192,pixelbytecounts[index] * uStack12304 * uStack12308, + (longlong)pixelsamplebits[index]); + if (pixelalphas[index] != 0) { + image_get_alpha_values((undefined *)((int)auStack8192 + iVar11 * 3),iVar11); + } + iVar11 = generate_link_final_image + ((int)auStack8192,uStack12304,uStack12308, + (uint *)((int)param_2 + iStack12320),index); + break; + case 3: + iVar7 = 0; + if (0 < pixelbytecounts[index]) { + puVar6 = auStack8192; + do { + generate_sample_table((int)puVar6,iVar11,(longlong)pixelsamplebits[index]); + iVar7 += 1; + puVar6 = (ushort *)((int)puVar6 + uStack12304 * uStack12308); + } while (iVar7 < pixelbytecounts[index]); + } + if (pixelalphas[index] != 0) { + image_get_alpha_values((undefined *)((int)auStack8192 + iVar11 * 3),iVar11); + } + iVar11 = generate_link_final_image + ((int)auStack8192,uStack12304,uStack12308, + (uint *)((int)param_2 + iStack12320),index); + break; + case 4: + type4_7_9_getsamples + ((int)auStack8192,pixelbytecounts[index] * uStack12304 * uStack12308); + if (pixelalphas[index] != 0) { + image_get_alpha_values((undefined *)((int)auStack8192 + iVar11 * 3),iVar11); + } + iVar11 = generate_link_final_image + ((int)auStack8192,uStack12304,uStack12308, + (uint *)((int)param_2 + iStack12320),index); + break; + case 5: + uVar5 = type5_6_7_getsamples(auStack12288,(longlong)pixelbitcount[index]); + iVar11 = type5_generate_link_final_image + (uStack12304,uStack12308,(int *)((int)param_2 + iStack12320), + (int)auStack12288,uVar5,index); + break; + case 6: + uVar5 = type5_6_7_getsamples(auStack12288,(longlong)pixelbitcount[index]); + generate_sample_table((int)auStack8192,iVar11,(longlong)(int)uVar5); + iVar11 = type6_7_generate_link_final_image + (auStack8192,uStack12304,uStack12308, + (uint *)((int)param_2 + iStack12320),(int)auStack12288,uVar5, + index); + break; + case 7: + uVar5 = type5_6_7_getsamples(auStack12288,(longlong)pixelbitcount[index]); + type4_7_9_getsamples((int)auStack8192,iVar11); + iVar11 = type6_7_generate_link_final_image + (auStack8192,uStack12304,uStack12308, + (uint *)((int)param_2 + iStack12320),(int)auStack12288,uVar5, + index); + break; + case 8: + uVar5 = proc_7F0CBF2C(3); + generate_sample_table + ((int)auStack8192,pixelbytecounts[index] * uStack12304 * uStack12308, + (longlong)pixelsamplebits[index]); + type8_9_doohick((int)auStack8192,uStack12304,pixelbytecounts[index] * uStack12308, + uVar5,pixelsamplebits[index]); + if (pixelalphas[index] != 0) { + image_get_alpha_values((undefined *)((int)auStack8192 + iVar11 * 3),iVar11); + } + iVar11 = generate_link_final_image + ((int)auStack8192,uStack12304,uStack12308, + (uint *)((int)param_2 + iStack12320),index); + break; + case 9: + uVar5 = proc_7F0CBF2C(3); + type4_7_9_getsamples + ((int)auStack8192,pixelbytecounts[index] * uStack12304 * uStack12308); + type8_9_doohick((int)auStack8192,uStack12304,pixelbytecounts[index] * uStack12308, + uVar5,pixelsamplebits[index]); + if (pixelalphas[index] != 0) { + image_get_alpha_values((undefined *)((int)auStack8192 + iVar11 * 3),iVar11); + } + iVar11 = generate_link_final_image + ((int)auStack8192,uStack12304,uStack12308, + (uint *)((int)param_2 + iStack12320),index); + break; + default: + *(undefined *)((int)&DAT_8008c730 + DAT_8008d090 * 0x10 + 1) = uVar9; + (&DAT_8008c738)[DAT_8008d090 * 0x10] = uVar10; + do { // WARNING: Do nothing block with infinite loop - } while( true ); - } - if ((param_3 == 1) && (0 < param_4)) { - proc_7F0CB67C((int)param_2 + iStack12320,uStack12304,uStack12308,uStack12328); - } - iStack12320 += iVar6 + 7U & 0xfffffff8; - if (DAT_8008d0a8 == 0) { - DAT_8008d0a0 += 1; - } - else { - DAT_8008d0a8 = 0; - } - iStack12296 += 1; - } while (iStack12296 != iStack12300); - } - if (bVar2) { - (&DAT_8008c730)[DAT_8008d090 * 8] = (ushort)((uint)**(undefined4 **)(param_5 + 0xc) >> 0x14); - DAT_8008d090 += 1; - if (0x95 < DAT_8008d090) { - DAT_8008d090 = 0; + } while( true ); + } + if ((param_3 == 1) && (0 < param_4)) { + proc_7F0CB67C((int)param_2 + iStack12320,uStack12304,uStack12308,index); + } + iStack12320 += iVar11 + 7U & 0xfffffff8; + if (img_bitcount == 0) { + img_curpos = img_curpos + 1; + } + else { + img_bitcount = 0; + } + iStack12296 += 1; + } while (iStack12296 != iStack12300); } - } - if (param_3 == 0) { - if (param_4 < 2) { - if (param_4 == 1) { - proc_7F0CB67C((int)param_2,uStack12304,uStack12308,uStack12328); - } + if (bVar2) { + (&DAT_8008c730)[DAT_8008d090 * 8] = (ushort)((uint)**(undefined4 **)(param_5 + 0xc) >> 0x14) + ; + DAT_8008d090 += 1; + if (0x95 < DAT_8008d090) { + DAT_8008d090 = 0; + } } - else { - iStack12296 = 1; - puVar10 = param_2; - puVar3 = (uint *)((int)param_2 + iStack12320); - if (1 < param_4) { - do { - param_2 = puVar3; - iVar6 = image_decompresion_related - (puVar10,(int)param_2,uStack12304,uStack12308,uStack12328); - proc_7F0CB67C((int)puVar10,uStack12304,uStack12308,uStack12328); - uStack12304 = (int)(uStack12304 + 1) >> 1; - uStack12308 = (int)(uStack12308 + 1) >> 1; - iStack12296 += 1; - iStack12320 += iVar6; - puVar10 = param_2; - puVar3 = (uint *)((int)param_2 + iVar6); - } while (iStack12296 != param_4); - } - proc_7F0CB67C((int)param_2,uStack12304,uStack12308,uStack12328); + if (param_3 == 0) { + if (param_4 < 2) { + if (param_4 == 1) { + proc_7F0CB67C((int)param_2,uStack12304,uStack12308,index); + } + } + else { + iStack12296 = 1; + puVar8 = param_2; + puVar3 = (uint *)((int)param_2 + iStack12320); + if (1 < param_4) { + do { + param_2 = puVar3; + iVar11 = image_decompresion_related + (puVar8,(int)param_2,uStack12304,uStack12308,index); + proc_7F0CB67C((int)puVar8,uStack12304,uStack12308,index); + uStack12304 = (int)(uStack12304 + 1) >> 1; + uStack12308 = (int)(uStack12308 + 1) >> 1; + iStack12296 += 1; + iStack12320 += iVar11; + puVar8 = param_2; + puVar3 = (uint *)((int)param_2 + iVar11); + } while (iStack12296 != param_4); + } + proc_7F0CB67C((int)param_2,uStack12304,uStack12308,index); + } } - } - return iStack12320; + return iStack12320; } @@ -137500,346 +136722,364 @@ int process_huffman_compressed_images int image_decompresion_related(uint *param_1,int param_2,int param_3,int param_4,uint param_5) { - byte bVar1; - byte bVar2; - byte bVar3; - byte bVar4; - ushort uVar5; - ushort uVar6; - ushort uVar7; - ushort uVar8; - uint uVar9; - uint uVar10; - uint uVar11; - uint uVar12; - int iVar13; - int iVar14; - int iVar15; - uint *puVar16; - byte *pbVar17; - int iVar18; - uint *puVar19; - uint *puVar20; - uint uVar21; - int iVar22; - int iVar23; - int iVar24; - uint uStack16; - uint uStack12; - - iVar15 = param_4 + 1 >> 1; - switch(param_5) { - case 0: - case 2: - uStack16 = (param_3 + 1 >> 1) + 3U & 0xffc; - uStack12 = param_3 + 3U & 0xffc; - break; - case 1: - case 3: - case 4: - uStack16 = (param_3 + 1 >> 1) + 3U & 0xffc; - uStack12 = param_3 + 3U & 0xffc; - break; - case 5: - case 7: - uStack16 = (param_3 + 1 >> 1) + 7U & 0xff8; - uStack12 = param_3 + 7U & 0xff8; - break; - case 6: - case 8: - uStack16 = (param_3 + 1 >> 1) + 0xfU & 0xff0; - uStack12 = param_3 + 0xfU & 0xff0; - } - if (param_5 < 9) { - iVar13 = (int)uStack12 >> 1; - iVar23 = (int)uStack16 >> 1; + byte bVar1; + byte bVar2; + byte bVar3; + byte bVar4; + ushort uVar5; + ushort uVar6; + ushort uVar7; + ushort uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + int iVar13; + int iVar14; + int iVar15; + uint *puVar16; + byte *pbVar17; + int iVar18; + uint *puVar19; + uint *puVar20; + uint uVar21; + int iVar22; + int iVar23; + int iVar24; + uint uStack16; + uint uStack12; + + iVar15 = param_4 + 1 >> 1; switch(param_5) { - default: - iVar23 = 0; - if (0 < param_4) { - do { - iVar13 = 0; - uVar21 = uStack12; - if (param_4 <= iVar23 + 1) { - uVar21 = 0; - } - iVar23 += 2; - if (0 < (int)uStack12) { - puVar19 = param_1 + uVar21; - puVar16 = param_1; - do { - iVar24 = iVar13; - if (iVar13 + 1 < param_3) { - iVar24 = iVar13 + 1; - } - uVar9 = param_1[iVar24]; - uVar10 = *puVar16; - uVar11 = *puVar19; - uVar12 = (param_1 + uVar21)[iVar24]; - iVar24 = iVar13 >> 1; - iVar13 += 2; - puVar16 = puVar16 + 2; - puVar19 = puVar19 + 2; - *(uint *)(param_2 + iVar24 * 4) = - ((uVar10 >> 0x18) + (uVar9 >> 0x18) + (uVar11 >> 0x18) + (uVar12 >> 0x18) >> 2) - << 0x18 | ((uVar10 >> 0x10 & 0xff) + (uVar9 >> 0x10 & 0xff) + - (uVar11 >> 0x10 & 0xff) + (uVar12 >> 0x10 & 0xff) >> 2 & 0xff) << 0x10 - | ((uVar10 >> 8 & 0xff) + (uVar9 >> 8 & 0xff) + (uVar11 >> 8 & 0xff) + - (uVar12 >> 8 & 0xff) >> 2 & 0xff) << 8 | - (uVar10 & 0xff) + (uVar9 & 0xff) + (uVar11 & 0xff) + (uVar12 & 0xff) + 1 >> 2 & - 0xff; - } while (iVar13 < (int)uStack12); - } - param_2 += uStack16 * 4; - param_1 = param_1 + uStack12 * 2; - } while (iVar23 < param_4); - } - iVar23 = iVar15 * uStack16 * 4; - break; + case 0: + case 2: + uStack16 = (param_3 + 1 >> 1) + 3U & 0xffc; + uStack12 = param_3 + 3U & 0xffc; + break; case 1: case 3: - iVar23 = 0; - if (0 < param_4) { - do { - iVar13 = 0; - uVar21 = uStack12; - if (param_4 <= iVar23 + 1) { - uVar21 = 0; - } - iVar23 += 2; - if (0 < (int)uStack12) { - puVar20 = (uint *)((int)param_1 + uVar21 * 2); - puVar19 = puVar20; - puVar16 = param_1; - do { - iVar24 = iVar13; - if (iVar13 + 1 < param_3) { - iVar24 = iVar13 + 1; - } - uVar5 = *(ushort *)((int)param_1 + iVar24 * 2); - uVar6 = *(ushort *)puVar16; - uVar7 = *(ushort *)puVar19; - uVar8 = *(ushort *)((int)puVar20 + iVar24 * 2); - iVar24 = iVar13 >> 1; - iVar13 += 2; - puVar16 = puVar16 + 1; - puVar19 = puVar19 + 1; - *(ushort *)(param_2 + iVar24 * 2) = - (ushort)((((int)(uint)uVar6 >> 0xb) + ((int)(uint)uVar5 >> 0xb) + - ((int)(uint)uVar7 >> 0xb) + ((int)(uint)uVar8 >> 0xb) >> 2) << 0xb) | - (ushort)(((int)(((int)(uint)uVar6 >> 6 & 0x1fU) + ((int)(uint)uVar5 >> 6 & 0x1fU) - + ((int)(uint)uVar7 >> 6 & 0x1fU) + - ((int)(uint)uVar8 >> 6 & 0x1fU)) >> 2 & 0x1fU) << 6) | - (ushort)(((int)(((int)(uint)uVar6 >> 1 & 0x1fU) + ((int)(uint)uVar5 >> 1 & 0x1fU) - + ((int)(uint)uVar7 >> 1 & 0x1fU) + - ((int)(uint)uVar8 >> 1 & 0x1fU)) >> 2 & 0x1fU) << 1) | - (ushort)((int)(((uint)uVar6 & 1) + ((uint)uVar5 & 1) + ((uint)uVar7 & 1) + - ((uint)uVar8 & 1) + 2) >> 2) & 1; - } while (iVar13 < (int)uStack12); - } - param_2 += uStack16 * 2; - param_1 = param_1 + uStack12; - } while (iVar23 < param_4); - } - iVar23 = iVar15 * uStack16 * 2; - break; case 4: - iVar23 = 0; - if (0 < param_4) { - do { - iVar13 = 0; - uVar21 = uStack12; - if (param_4 <= iVar23 + 1) { - uVar21 = 0; - } - iVar23 += 2; - if (0 < (int)uStack12) { - puVar20 = (uint *)((int)param_1 + uVar21 * 2); - puVar19 = puVar20; - puVar16 = param_1; - do { - iVar24 = iVar13; - if (iVar13 + 1 < param_3) { - iVar24 = iVar13 + 1; - } - uVar5 = *(ushort *)((int)param_1 + iVar24 * 2); - uVar6 = *(ushort *)puVar16; - uVar7 = *(ushort *)puVar19; - uVar8 = *(ushort *)((int)puVar20 + iVar24 * 2); - iVar24 = iVar13 >> 1; - iVar13 += 2; - puVar16 = puVar16 + 1; - puVar19 = puVar19 + 1; - *(ushort *)(param_2 + iVar24 * 2) = - (ushort)((((int)(uint)uVar6 >> 8) + ((int)(uint)uVar5 >> 8) + - ((int)(uint)uVar7 >> 8) + ((int)(uint)uVar8 >> 8) >> 2) << 8) | - (ushort)((int)(((uint)uVar6 & 0xff) + ((uint)uVar5 & 0xff) + ((uint)uVar7 & 0xff) - + ((uint)uVar8 & 0xff) + 1) >> 2) & 0xff; - } while (iVar13 < (int)uStack12); - } - param_2 += uStack16 * 2; - param_1 = param_1 + uStack12; - } while (iVar23 < param_4); - } - iVar23 = iVar15 * uStack16 * 2; - break; + uStack16 = (param_3 + 1 >> 1) + 3U & 0xffc; + uStack12 = param_3 + 3U & 0xffc; + break; case 5: - iVar23 = 0; - if (0 < param_4) { - do { - iVar13 = 0; - uVar21 = uStack12; - if (param_4 <= iVar23 + 1) { - uVar21 = 0; - } - iVar23 += 2; - if (0 < (int)uStack12) { - pbVar17 = (byte *)(uVar21 + (int)param_1); - puVar19 = param_1; - do { - iVar24 = iVar13; - if (iVar13 + 1 < param_3) { - iVar24 = iVar13 + 1; - } - bVar1 = *(byte *)puVar19; - bVar2 = *pbVar17; - bVar3 = *(byte *)(uVar21 + iVar24 + (int)param_1); - iVar14 = iVar13 >> 1; - iVar13 += 2; - puVar19 = (uint *)((int)puVar19 + 2); - pbVar17 = pbVar17 + 2; - *(byte *)(param_2 + iVar14) = - ((char)((int)(uint)bVar1 >> 4) + - (char)((int)(uint)*(byte *)((int)param_1 + iVar24) >> 4) + - (char)((int)(uint)bVar2 >> 4) + (char)((int)(uint)bVar3 >> 4)) * '\x04' & 0xf0U - | (byte)((int)(((uint)bVar1 & 0xf) + - ((uint)*(byte *)((int)param_1 + iVar24) & 0xf) + - ((uint)bVar2 & 0xf) + ((uint)bVar3 & 0xf) + 1) >> 2) & 0xf; - } while (iVar13 < (int)uStack12); - } - param_1 = (uint *)((int)param_1 + uStack12 * 2); - param_2 += uStack16; - } while (iVar23 < param_4); - } - iVar23 = iVar15 * uStack16; - break; - case 6: - iVar24 = 0; - if (0 < param_4) { - do { - iVar14 = 0; - if (0 < (int)uStack12) { - do { - iVar18 = iVar14 >> 1; - bVar1 = *(byte *)(iVar18 + (int)param_1); - iVar22 = iVar13; - if (param_4 <= iVar24 + 1) { - iVar22 = 0; - } - bVar2 = *(byte *)(iVar22 + iVar18 + (int)param_1); - bVar3 = ((byte *)(iVar18 + (int)param_1))[1]; - iVar22 = iVar13; - if (param_4 <= iVar24 + 1) { - iVar22 = 0; - } - bVar4 = *(byte *)((int)param_1 + iVar22 + iVar18 + 1); - iVar22 = iVar14 >> 2; - iVar14 += 4; - *(byte *)(param_2 + iVar22) = - ((char)((int)(uint)bVar1 >> 5) + ((byte)((int)(uint)bVar1 >> 1) & 7) + - (char)((int)(uint)bVar2 >> 5) + ((byte)((int)(uint)bVar2 >> 1) & 7)) * '\b' & - 0xe0 | (byte)((int)(((int)(uint)bVar3 >> 5) + ((int)(uint)bVar3 >> 1 & 7U) + - ((int)(uint)bVar4 >> 5) + ((int)(uint)bVar4 >> 1 & 7U)) >> 1) - & 0xe | - (((byte)((int)(uint)bVar1 >> 4) & 1) + (bVar1 & 1) + - ((byte)((int)(uint)bVar2 >> 4) & 1) + (bVar2 & 1) + '\x01') * '\x04' & 0x10 | - (byte)((int)(((int)(uint)bVar3 >> 4 & 1U) + ((uint)bVar3 & 1) + - ((int)(uint)bVar4 >> 4 & 1U) + ((uint)bVar4 & 1) + 1) >> 2) & 1; - } while (iVar14 < (int)uStack12); - } - iVar24 += 2; - param_2 += iVar23; - param_1 = (uint *)((int)param_1 + uStack12); - } while (iVar24 < param_4); - } - iVar23 *= iVar15; - break; case 7: - iVar23 = 0; - if (0 < param_4) { - do { - iVar13 = 0; - uVar21 = uStack12; - if (param_4 <= iVar23 + 1) { - uVar21 = 0; - } - iVar23 += 2; - if (0 < (int)uStack12) { - pbVar17 = (byte *)(uVar21 + (int)param_1); - puVar19 = param_1; - do { - iVar24 = iVar13; - if (iVar13 + 1 < param_3) { - iVar24 = iVar13 + 1; - } - bVar1 = *(byte *)puVar19; - bVar2 = *pbVar17; - iVar14 = iVar13 >> 1; - iVar13 += 2; - puVar19 = (uint *)((int)puVar19 + 2); - pbVar17 = pbVar17 + 2; - *(undefined *)(param_2 + iVar14) = - (char)((int)((uint)bVar1 + (uint)*(byte *)((int)param_1 + iVar24) + (uint)bVar2 + - (uint)*(byte *)(uVar21 + iVar24 + (int)param_1) + 1) >> 2); - } while (iVar13 < (int)uStack12); - } - param_1 = (uint *)((int)param_1 + uStack12 * 2); - param_2 += uStack16; - } while (iVar23 < param_4); - } - iVar23 = iVar15 * uStack16; - break; + uStack16 = (param_3 + 1 >> 1) + 7U & 0xff8; + uStack12 = param_3 + 7U & 0xff8; + break; + case 6: case 8: - iVar24 = 0; - if (0 < param_4) { - do { - iVar14 = 0; - if (0 < (int)uStack12) { - do { - iVar18 = iVar14 >> 1; - bVar1 = *(byte *)(iVar18 + (int)param_1); - iVar22 = iVar13; - if (param_4 <= iVar24 + 1) { - iVar22 = 0; - } - bVar2 = *(byte *)(iVar22 + iVar18 + (int)param_1); - bVar3 = ((byte *)(iVar18 + (int)param_1))[1]; - iVar22 = iVar13; - if (param_4 <= iVar24 + 1) { - iVar22 = 0; - } - bVar4 = *(byte *)((int)param_1 + iVar22 + iVar18 + 1); - iVar22 = iVar14 >> 2; - iVar14 += 4; - *(byte *)(param_2 + iVar22) = - ((char)((int)(uint)bVar1 >> 4) + (bVar1 & 0xf) + (char)((int)(uint)bVar2 >> 4) + - (bVar2 & 0xf)) * '\x04' & 0xf0 | - (byte)((int)(((int)(uint)bVar3 >> 4) + ((uint)bVar3 & 0xf) + - ((int)(uint)bVar4 >> 4) + ((uint)bVar4 & 0xf)) >> 2) & 0xf; - } while (iVar14 < (int)uStack12); - } - iVar24 += 2; - param_2 += iVar23; - param_1 = (uint *)((int)param_1 + uStack12); - } while (iVar24 < param_4); - } - iVar23 *= iVar15; + uStack16 = (param_3 + 1 >> 1) + 0xfU & 0xff0; + uStack12 = param_3 + 0xfU & 0xff0; } - } - else { - iVar23 = 0; - } - return iVar23; + if (param_5 < 9) { + iVar13 = (int)uStack12 >> 1; + iVar23 = (int)uStack16 >> 1; + switch(param_5) { + default: + iVar23 = 0; + if (0 < param_4) { + do { + iVar13 = 0; + uVar21 = uStack12; + if (param_4 <= iVar23 + 1) { + uVar21 = 0; + } + iVar23 += 2; + if (0 < (int)uStack12) { + puVar19 = param_1 + uVar21; + puVar16 = param_1; + do { + iVar24 = iVar13; + if (iVar13 + 1 < param_3) { + iVar24 = iVar13 + 1; + } + uVar9 = param_1[iVar24]; + uVar10 = *puVar16; + uVar11 = *puVar19; + uVar12 = (param_1 + uVar21)[iVar24]; + iVar24 = iVar13 >> 1; + iVar13 += 2; + puVar16 = puVar16 + 2; + puVar19 = puVar19 + 2; + *(uint *)(param_2 + iVar24 * 4) = + ((uVar10 >> 0x18) + (uVar9 >> 0x18) + (uVar11 >> 0x18) + + (uVar12 >> 0x18) >> 2) << 0x18 | + ((uVar10 >> 0x10 & 0xff) + (uVar9 >> 0x10 & 0xff) + + (uVar11 >> 0x10 & 0xff) + (uVar12 >> 0x10 & 0xff) >> 2 & 0xff) << + 0x10 | ((uVar10 >> 8 & 0xff) + (uVar9 >> 8 & 0xff) + + (uVar11 >> 8 & 0xff) + (uVar12 >> 8 & 0xff) >> 2 & 0xff) << + 8 | + (uVar10 & 0xff) + (uVar9 & 0xff) + (uVar11 & 0xff) + + (uVar12 & 0xff) + 1 >> 2 & 0xff; + } while (iVar13 < (int)uStack12); + } + param_2 += uStack16 * 4; + param_1 = param_1 + uStack12 * 2; + } while (iVar23 < param_4); + } + iVar23 = iVar15 * uStack16 * 4; + break; + case 1: + case 3: + iVar23 = 0; + if (0 < param_4) { + do { + iVar13 = 0; + uVar21 = uStack12; + if (param_4 <= iVar23 + 1) { + uVar21 = 0; + } + iVar23 += 2; + if (0 < (int)uStack12) { + puVar20 = (uint *)((int)param_1 + uVar21 * 2); + puVar19 = puVar20; + puVar16 = param_1; + do { + iVar24 = iVar13; + if (iVar13 + 1 < param_3) { + iVar24 = iVar13 + 1; + } + uVar5 = *(ushort *)((int)param_1 + iVar24 * 2); + uVar6 = *(ushort *)puVar16; + uVar7 = *(ushort *)puVar19; + uVar8 = *(ushort *)((int)puVar20 + iVar24 * 2); + iVar24 = iVar13 >> 1; + iVar13 += 2; + puVar16 = puVar16 + 1; + puVar19 = puVar19 + 1; + *(ushort *)(param_2 + iVar24 * 2) = + (ushort)((((int)(uint)uVar6 >> 0xb) + ((int)(uint)uVar5 >> 0xb) + + ((int)(uint)uVar7 >> 0xb) + ((int)(uint)uVar8 >> 0xb) >> + 2) << 0xb) | + (ushort)(((int)(((int)(uint)uVar6 >> 6 & 0x1fU) + + ((int)(uint)uVar5 >> 6 & 0x1fU) + + ((int)(uint)uVar7 >> 6 & 0x1fU) + + ((int)(uint)uVar8 >> 6 & 0x1fU)) >> 2 & 0x1fU) << 6) + | (ushort)(((int)(((int)(uint)uVar6 >> 1 & 0x1fU) + + ((int)(uint)uVar5 >> 1 & 0x1fU) + + ((int)(uint)uVar7 >> 1 & 0x1fU) + + ((int)(uint)uVar8 >> 1 & 0x1fU)) >> 2 & 0x1fU) << + 1) | + (ushort)((int)(((uint)uVar6 & 1) + ((uint)uVar5 & 1) + + ((uint)uVar7 & 1) + ((uint)uVar8 & 1) + 2) >> 2) & 1 + ; + } while (iVar13 < (int)uStack12); + } + param_2 += uStack16 * 2; + param_1 = param_1 + uStack12; + } while (iVar23 < param_4); + } + iVar23 = iVar15 * uStack16 * 2; + break; + case 4: + iVar23 = 0; + if (0 < param_4) { + do { + iVar13 = 0; + uVar21 = uStack12; + if (param_4 <= iVar23 + 1) { + uVar21 = 0; + } + iVar23 += 2; + if (0 < (int)uStack12) { + puVar20 = (uint *)((int)param_1 + uVar21 * 2); + puVar19 = puVar20; + puVar16 = param_1; + do { + iVar24 = iVar13; + if (iVar13 + 1 < param_3) { + iVar24 = iVar13 + 1; + } + uVar5 = *(ushort *)((int)param_1 + iVar24 * 2); + uVar6 = *(ushort *)puVar16; + uVar7 = *(ushort *)puVar19; + uVar8 = *(ushort *)((int)puVar20 + iVar24 * 2); + iVar24 = iVar13 >> 1; + iVar13 += 2; + puVar16 = puVar16 + 1; + puVar19 = puVar19 + 1; + *(ushort *)(param_2 + iVar24 * 2) = + (ushort)((((int)(uint)uVar6 >> 8) + ((int)(uint)uVar5 >> 8) + + ((int)(uint)uVar7 >> 8) + ((int)(uint)uVar8 >> 8) >> 2) + << 8) | + (ushort)((int)(((uint)uVar6 & 0xff) + ((uint)uVar5 & 0xff) + + ((uint)uVar7 & 0xff) + ((uint)uVar8 & 0xff) + 1) >> + 2) & 0xff; + } while (iVar13 < (int)uStack12); + } + param_2 += uStack16 * 2; + param_1 = param_1 + uStack12; + } while (iVar23 < param_4); + } + iVar23 = iVar15 * uStack16 * 2; + break; + case 5: + iVar23 = 0; + if (0 < param_4) { + do { + iVar13 = 0; + uVar21 = uStack12; + if (param_4 <= iVar23 + 1) { + uVar21 = 0; + } + iVar23 += 2; + if (0 < (int)uStack12) { + pbVar17 = (byte *)(uVar21 + (int)param_1); + puVar19 = param_1; + do { + iVar24 = iVar13; + if (iVar13 + 1 < param_3) { + iVar24 = iVar13 + 1; + } + bVar1 = *(byte *)puVar19; + bVar2 = *pbVar17; + bVar3 = *(byte *)(uVar21 + iVar24 + (int)param_1); + iVar14 = iVar13 >> 1; + iVar13 += 2; + puVar19 = (uint *)((int)puVar19 + 2); + pbVar17 = pbVar17 + 2; + *(byte *)(param_2 + iVar14) = + ((char)((int)(uint)bVar1 >> 4) + + (char)((int)(uint)*(byte *)((int)param_1 + iVar24) >> 4) + + (char)((int)(uint)bVar2 >> 4) + (char)((int)(uint)bVar3 >> 4)) * + '\x04' & 0xf0U | + (byte)((int)(((uint)bVar1 & 0xf) + + ((uint)*(byte *)((int)param_1 + iVar24) & 0xf) + + ((uint)bVar2 & 0xf) + ((uint)bVar3 & 0xf) + 1) >> 2) & + 0xf; + } while (iVar13 < (int)uStack12); + } + param_1 = (uint *)((int)param_1 + uStack12 * 2); + param_2 += uStack16; + } while (iVar23 < param_4); + } + iVar23 = iVar15 * uStack16; + break; + case 6: + iVar24 = 0; + if (0 < param_4) { + do { + iVar14 = 0; + if (0 < (int)uStack12) { + do { + iVar18 = iVar14 >> 1; + bVar1 = *(byte *)(iVar18 + (int)param_1); + iVar22 = iVar13; + if (param_4 <= iVar24 + 1) { + iVar22 = 0; + } + bVar2 = *(byte *)(iVar22 + iVar18 + (int)param_1); + bVar3 = ((byte *)(iVar18 + (int)param_1))[1]; + iVar22 = iVar13; + if (param_4 <= iVar24 + 1) { + iVar22 = 0; + } + bVar4 = *(byte *)((int)param_1 + iVar22 + iVar18 + 1); + iVar22 = iVar14 >> 2; + iVar14 += 4; + *(byte *)(param_2 + iVar22) = + ((char)((int)(uint)bVar1 >> 5) + + ((byte)((int)(uint)bVar1 >> 1) & 7) + + (char)((int)(uint)bVar2 >> 5) + + ((byte)((int)(uint)bVar2 >> 1) & 7)) * '\b' & 0xe0 | + (byte)((int)(((int)(uint)bVar3 >> 5) + ((int)(uint)bVar3 >> 1 & 7U) + + ((int)(uint)bVar4 >> 5) + + ((int)(uint)bVar4 >> 1 & 7U)) >> 1) & 0xe | + (((byte)((int)(uint)bVar1 >> 4) & 1) + (bVar1 & 1) + + ((byte)((int)(uint)bVar2 >> 4) & 1) + (bVar2 & 1) + '\x01') * + '\x04' & 0x10 | + (byte)((int)(((int)(uint)bVar3 >> 4 & 1U) + ((uint)bVar3 & 1) + + ((int)(uint)bVar4 >> 4 & 1U) + ((uint)bVar4 & 1) + 1) + >> 2) & 1; + } while (iVar14 < (int)uStack12); + } + iVar24 += 2; + param_2 += iVar23; + param_1 = (uint *)((int)param_1 + uStack12); + } while (iVar24 < param_4); + } + iVar23 *= iVar15; + break; + case 7: + iVar23 = 0; + if (0 < param_4) { + do { + iVar13 = 0; + uVar21 = uStack12; + if (param_4 <= iVar23 + 1) { + uVar21 = 0; + } + iVar23 += 2; + if (0 < (int)uStack12) { + pbVar17 = (byte *)(uVar21 + (int)param_1); + puVar19 = param_1; + do { + iVar24 = iVar13; + if (iVar13 + 1 < param_3) { + iVar24 = iVar13 + 1; + } + bVar1 = *(byte *)puVar19; + bVar2 = *pbVar17; + iVar14 = iVar13 >> 1; + iVar13 += 2; + puVar19 = (uint *)((int)puVar19 + 2); + pbVar17 = pbVar17 + 2; + *(undefined *)(param_2 + iVar14) = + (char)((int)((uint)bVar1 + (uint)*(byte *)((int)param_1 + iVar24) + + (uint)bVar2 + + (uint)*(byte *)(uVar21 + iVar24 + (int)param_1) + 1) + >> 2); + } while (iVar13 < (int)uStack12); + } + param_1 = (uint *)((int)param_1 + uStack12 * 2); + param_2 += uStack16; + } while (iVar23 < param_4); + } + iVar23 = iVar15 * uStack16; + break; + case 8: + iVar24 = 0; + if (0 < param_4) { + do { + iVar14 = 0; + if (0 < (int)uStack12) { + do { + iVar18 = iVar14 >> 1; + bVar1 = *(byte *)(iVar18 + (int)param_1); + iVar22 = iVar13; + if (param_4 <= iVar24 + 1) { + iVar22 = 0; + } + bVar2 = *(byte *)(iVar22 + iVar18 + (int)param_1); + bVar3 = ((byte *)(iVar18 + (int)param_1))[1]; + iVar22 = iVar13; + if (param_4 <= iVar24 + 1) { + iVar22 = 0; + } + bVar4 = *(byte *)((int)param_1 + iVar22 + iVar18 + 1); + iVar22 = iVar14 >> 2; + iVar14 += 4; + *(byte *)(param_2 + iVar22) = + ((char)((int)(uint)bVar1 >> 4) + (bVar1 & 0xf) + + (char)((int)(uint)bVar2 >> 4) + (bVar2 & 0xf)) * '\x04' & 0xf0 | + (byte)((int)(((int)(uint)bVar3 >> 4) + ((uint)bVar3 & 0xf) + + ((int)(uint)bVar4 >> 4) + ((uint)bVar4 & 0xf)) >> 2) & + 0xf; + } while (iVar14 < (int)uStack12); + } + iVar24 += 2; + param_2 += iVar23; + param_1 = (uint *)((int)param_1 + uStack12); + } while (iVar24 < param_4); + } + iVar23 *= iVar15; + } + } + else { + iVar23 = 0; + } + return iVar23; } @@ -137847,306 +137087,305 @@ int image_decompresion_related(uint *param_1,int param_2,int param_3,int param_4 void generate_sample_table(int param_1,int param_2,ulonglong param_3) { - bool bVar1; - bool bVar2; - uint uVar3; - ushort *puVar4; - ushort *puVar5; - ushort *puVar6; - ushort uVar7; - ulonglong uVar8; - ushort uVar10; - ulonglong uVar9; - ushort uVar11; - ulonglong uVar12; - int iVar14; - ushort uVar15; - ulonglong uVar13; - ushort uVar16; - int iVar17; - ushort *puVar18; - ulonglong uVar19; - ulonglong uVar20; - ushort uVar21; - int iStack12312; - int iStack12308; - ushort uStack12288; - short sStack12286; - ushort auStack4096 [2048]; - - bVar2 = false; - uVar19 = 0; - if (0 < (longlong)param_3) { - puVar18 = auStack4096; - do { - uVar3 = proc_7F0CBF2C(8); - uVar19 = SEXT48((int)uVar19 + 1); - *puVar18 = (ushort)uVar3; - puVar18 = puVar18 + 1; - } while (uVar19 != param_3); - } - puVar18 = &uStack12288; - do { - puVar4 = puVar18 + 2; - *puVar18 = 0xffff; - puVar18[1] = 0xffff; - puVar18 = puVar4; - } while (puVar4 < auStack4096); - uVar11 = 9999; - uVar7 = 9999; - uVar19 = 0; - if (0 < (longlong)param_3) { - if ((param_3 & 1) != 0) { - if ((auStack4096[0] < 9999) || (auStack4096[0] < 9999)) { - iStack12312 = 0; - uVar7 = auStack4096[0]; - } - uVar19 = 1; - if (param_3 == 1) goto LAB_7f0c9378; - } - puVar18 = auStack4096 + (int)uVar19; - uVar8 = SEXT48(iStack12312); - uVar12 = SEXT48(iStack12308); - do { - uVar16 = *puVar18; - if (uVar16 < uVar11) { - uVar20 = uVar8; - uVar9 = uVar19; - uVar21 = uVar7; - if (uVar11 <= uVar7) { - uVar20 = uVar19; - uVar9 = uVar12; - uVar21 = uVar16; - uVar16 = uVar11; - } -LAB_7f0c9318: - uVar7 = uVar21; - uVar21 = puVar18[1]; - uVar8 = uVar20; - uVar12 = uVar9; - uVar11 = uVar16; - } - else { - bVar1 = uVar16 < uVar7; - uVar20 = uVar19; - uVar9 = uVar12; - uVar21 = uVar16; - uVar16 = uVar11; - if (bVar1) goto LAB_7f0c9318; - uVar21 = puVar18[1]; - } - iVar17 = (int)uVar19; - if (uVar21 < uVar11) { - if (uVar7 < uVar11) { - uVar12 = SEXT48(iVar17 + 1); - uVar11 = uVar21; - } - else { - uVar8 = SEXT48(iVar17 + 1); - uVar7 = uVar21; - } - } - else { - if (uVar21 < uVar7) { - uVar8 = SEXT48(iVar17 + 1); - uVar7 = uVar21; - } - } - iStack12308 = (int)uVar12; - iStack12312 = (int)uVar8; - uVar19 = SEXT48(iVar17 + 2); - puVar18 = puVar18 + 2; - } while (uVar19 != param_3); - } -LAB_7f0c9378: - uVar19 = SEXT48(iStack12312); - uVar8 = SEXT48(iStack12308); - do { - uVar12 = 0; - iVar14 = (int)uVar8; - puVar18 = auStack4096 + iVar14; - puVar6 = auStack4096 + iStack12312; - iVar17 = (int)uVar19; - uVar16 = (ushort)((uint)*puVar6 + (uint)*puVar18); - puVar5 = &uStack12288 + iVar17 * 2; - puVar4 = &uStack12288 + iVar14 * 2; - uVar11 = 9999; - uVar7 = 9999; - if ((uint)*puVar6 + (uint)*puVar18 == 0) { - uVar16 = 1; - } - uVar21 = *puVar4; - *puVar18 = 9999; - *puVar6 = 9999; - uVar10 = (ushort)uVar19; - uVar15 = (ushort)uVar8; - if ((short)uVar21 < 0) { - if (-1 < (short)(&uStack12288)[iVar14 * 2 + 1]) { - uVar21 = *puVar5; - goto LAB_7f0c942c; - } - *puVar4 = uVar15 + 10000; - uVar21 = *puVar5; - *puVar18 = uVar16; - if (((short)uVar21 < 0) && ((short)(&uStack12288)[iVar17 * 2 + 1] < 0)) { - (&uStack12288)[iVar14 * 2 + 1] = uVar10 + 10000; - uVar20 = uVar8; - } - else { - (&uStack12288)[iVar14 * 2 + 1] = uVar10; - uVar20 = uVar8; - } - } - else { - uVar21 = *puVar5; -LAB_7f0c942c: - if (((short)uVar21 < 0) && ((short)(&uStack12288)[iVar17 * 2 + 1] < 0)) { - *puVar5 = uVar10 + 10000; - uVar21 = *puVar4; - *puVar6 = uVar16; - if (((short)uVar21 < 0) && ((short)(&uStack12288)[iVar14 * 2 + 1] < 0)) { - (&uStack12288)[iVar17 * 2 + 1] = uVar15 + 10000; - uVar20 = uVar19; - } - else { - (&uStack12288)[iVar17 * 2 + 1] = uVar15; - uVar20 = uVar19; - } - } - else { - uVar20 = 0; - if (((short)uStack12288 < 0) && ((sStack12286 < 0 && (0x270e < auStack4096[0])))) { - iVar17 = 0; - puVar18 = &uStack12288; - } - else { - uVar20 = 1; - while( true ) { - while( true ) { - while( true ) { - iVar17 = (int)uVar20; - puVar18 = &uStack12288 + iVar17 * 2; - if ((short)*puVar18 < 0) break; - uVar20 = SEXT48(iVar17 + 1); - } - if ((short)(&uStack12288)[iVar17 * 2 + 1] < 0) break; - uVar20 = SEXT48(iVar17 + 1); - } - if (0x270e < auStack4096[iVar17]) break; - uVar20 = SEXT48(iVar17 + 1); - } - iVar17 <<= 1; - } - *(ushort *)((int)auStack4096 + iVar17) = uVar16; - *puVar18 = uVar15; - puVar18[1] = uVar10; - } - } + bool bVar1; + bool bVar2; + uint uVar3; + ushort *puVar4; + ushort *puVar5; + ushort *puVar6; + ushort *puVar7; + ushort uVar8; + ulonglong uVar9; + ushort uVar11; + ulonglong uVar10; + ushort uVar12; + ulonglong uVar13; + int iVar15; + ushort uVar16; + ulonglong uVar14; + ushort uVar17; + int iVar18; + ushort *puVar19; + ulonglong uVar20; + ulonglong uVar21; + ushort uVar22; + int iStack12312; + int iStack12308; + ushort auStack12288 [6144]; + + bVar2 = false; + uVar20 = 0; if (0 < (longlong)param_3) { - if ((param_3 & 1) == 0) { - iVar17 = 0; - } - else { - uVar12 = 1; - if (auStack4096[0] < 9999) { - uVar19 = 0; - uVar7 = auStack4096[0]; - } - else { - if (auStack4096[0] < 9999) { - uVar19 = 0; - uVar7 = auStack4096[0]; - } - } - iVar17 = 2; - if (param_3 == 1) goto LAB_7f0c95fc; - } - puVar18 = (ushort *)((int)auStack4096 + iVar17); - do { - uVar16 = *puVar18; - if (uVar16 < uVar11) { - uVar9 = uVar19; - uVar13 = uVar12; - uVar21 = uVar7; - if (uVar11 <= uVar7) { - uVar9 = uVar12; - uVar13 = uVar8; - uVar21 = uVar16; - uVar16 = uVar11; - } -LAB_7f0c95a4: - uVar10 = puVar18[1]; - uVar19 = uVar9; - uVar8 = uVar13; - uVar11 = uVar16; - uVar7 = uVar21; - } - else { - bVar1 = uVar16 < uVar7; - uVar9 = uVar12; - uVar13 = uVar8; - uVar21 = uVar16; - uVar16 = uVar11; - if (bVar1) goto LAB_7f0c95a4; - uVar10 = puVar18[1]; - } - iVar17 = (int)uVar12; - if (uVar10 < uVar11) { - if (uVar7 < uVar11) { - uVar8 = SEXT48(iVar17 + 1); - uVar11 = uVar10; - } - else { - uVar19 = SEXT48(iVar17 + 1); - uVar7 = uVar10; - } - } - else { - if (uVar10 < uVar7) { - uVar19 = SEXT48(iVar17 + 1); - uVar7 = uVar10; - } - } - uVar12 = SEXT48(iVar17 + 2); - puVar18 = puVar18 + 2; - } while (uVar12 != param_3); - } -LAB_7f0c95fc: - iVar17 = 0; - if (uVar11 == 9999) { - bVar2 = true; - } - else { - if (uVar7 == 9999) { - bVar2 = true; - } - } - if (bVar2) { - uVar19 = uVar20; - uVar7 = (ushort)uVar20; - if (0 < param_2) { + puVar19 = auStack12288 + 0x1000; do { - while ((longlong)uVar19 < 10000) { - uVar3 = proc_7F0CBF2C(1); - iVar14 = (int)uVar19; - uVar19 = (longlong)(short)(&uStack12288)[iVar14 * 2 + uVar3]; - uVar7 = (&uStack12288)[iVar14 * 2 + uVar3]; - } - if ((longlong)param_3 < 0x101) { - *(char *)(param_1 + iVar17) = (char)uVar7 + -0x10; - } - else { - *(short *)(param_1 + iVar17 * 2) = uVar7 + 0xd8f0; - } - iVar17 += 1; - uVar19 = uVar20; - uVar7 = (ushort)uVar20; - } while (iVar17 != param_2); - } - return; + uVar3 = proc_7F0CBF2C(8); + uVar20 = SEXT48((int)uVar20 + 1); + *puVar19 = (ushort)uVar3; + puVar19 = puVar19 + 1; + } while (uVar20 != param_3); } - iStack12312 = (int)uVar19; - } while( true ); + puVar19 = auStack12288; + do { + puVar4 = puVar19 + 2; + *puVar19 = 0xffff; + puVar19[1] = 0xffff; + puVar19 = puVar4; + } while (puVar4 < auStack12288 + 0x1000); + uVar12 = 9999; + uVar8 = 9999; + uVar20 = 0; + if (0 < (longlong)param_3) { + if ((param_3 & 1) != 0) { + if ((auStack12288[4096] < 9999) || (auStack12288[4096] < 9999)) { + iStack12312 = 0; + uVar8 = auStack12288[4096]; + } + uVar20 = 1; + if (param_3 == 1) goto LAB_7f0c9378; + } + puVar19 = auStack12288 + (int)uVar20 + 0x1000; + uVar9 = SEXT48(iStack12312); + uVar13 = SEXT48(iStack12308); + do { + uVar17 = *puVar19; + if (uVar17 < uVar12) { + uVar21 = uVar9; + uVar10 = uVar20; + uVar22 = uVar8; + if (uVar12 <= uVar8) { + uVar21 = uVar20; + uVar10 = uVar13; + uVar22 = uVar17; + uVar17 = uVar12; + } +LAB_7f0c9318: + uVar8 = uVar22; + uVar22 = puVar19[1]; + uVar9 = uVar21; + uVar13 = uVar10; + uVar12 = uVar17; + } + else { + bVar1 = uVar17 < uVar8; + uVar21 = uVar20; + uVar10 = uVar13; + uVar22 = uVar17; + uVar17 = uVar12; + if (bVar1) goto LAB_7f0c9318; + uVar22 = puVar19[1]; + } + iVar18 = (int)uVar20; + if (uVar22 < uVar12) { + if (uVar8 < uVar12) { + uVar13 = SEXT48(iVar18 + 1); + uVar12 = uVar22; + } + else { + uVar9 = SEXT48(iVar18 + 1); + uVar8 = uVar22; + } + } + else { + if (uVar22 < uVar8) { + uVar9 = SEXT48(iVar18 + 1); + uVar8 = uVar22; + } + } + iStack12308 = (int)uVar13; + iStack12312 = (int)uVar9; + uVar20 = SEXT48(iVar18 + 2); + puVar19 = puVar19 + 2; + } while (uVar20 != param_3); + } +LAB_7f0c9378: + uVar20 = SEXT48(iStack12312); + uVar9 = SEXT48(iStack12308); + puVar19 = auStack12288 + 0x1000; + do { + uVar13 = 0; + iVar15 = (int)uVar9; + puVar4 = puVar19 + iVar15; + puVar7 = puVar19 + iStack12312; + iVar18 = (int)uVar20; + uVar17 = (ushort)((uint)*puVar7 + (uint)*puVar4); + puVar6 = auStack12288 + iVar18 * 2; + puVar5 = auStack12288 + iVar15 * 2; + uVar12 = 9999; + uVar8 = 9999; + if ((uint)*puVar7 + (uint)*puVar4 == 0) { + uVar17 = 1; + } + uVar22 = *puVar5; + *puVar4 = 9999; + *puVar7 = 9999; + uVar11 = (ushort)uVar20; + uVar16 = (ushort)uVar9; + if ((short)uVar22 < 0) { + if (-1 < (short)auStack12288[iVar15 * 2 + 1]) { + uVar22 = *puVar6; + goto LAB_7f0c942c; + } + *puVar5 = uVar16 + 10000; + uVar22 = *puVar6; + *puVar4 = uVar17; + uVar21 = uVar9; + if (((short)uVar22 < 0) && ((short)auStack12288[iVar18 * 2 + 1] < 0)) { + auStack12288[iVar15 * 2 + 1] = uVar11 + 10000; + } + else { + auStack12288[iVar15 * 2 + 1] = uVar11; + } + } + else { + uVar22 = *puVar6; +LAB_7f0c942c: + if (((short)uVar22 < 0) && ((short)auStack12288[iVar18 * 2 + 1] < 0)) { + *puVar6 = uVar11 + 10000; + uVar22 = *puVar5; + *puVar7 = uVar17; + uVar21 = uVar20; + if (((short)uVar22 < 0) && ((short)auStack12288[iVar15 * 2 + 1] < 0)) { + auStack12288[iVar18 * 2 + 1] = uVar16 + 10000; + } + else { + auStack12288[iVar18 * 2 + 1] = uVar16; + } + } + else { + uVar21 = 0; + if (((short)auStack12288[0] < 0) && + ((auStack12288[1] < 0 && (0x270e < auStack12288[4096])))) { + iVar18 = 0; + puVar4 = auStack12288; + } + else { + uVar21 = 1; + while( true ) { + while( true ) { + while( true ) { + iVar18 = (int)uVar21; + puVar4 = auStack12288 + iVar18 * 2; + if ((short)*puVar4 < 0) break; + uVar21 = SEXT48(iVar18 + 1); + } + if ((short)auStack12288[iVar18 * 2 + 1] < 0) break; + uVar21 = SEXT48(iVar18 + 1); + } + if (0x270e < puVar19[iVar18]) break; + uVar21 = SEXT48(iVar18 + 1); + } + iVar18 <<= 1; + } + *(ushort *)((int)puVar19 + iVar18) = uVar17; + *puVar4 = uVar16; + puVar4[1] = uVar11; + } + } + if (0 < (longlong)param_3) { + if ((param_3 & 1) == 0) { + iVar18 = 0; + } + else { + uVar13 = 1; + if (auStack12288[4096] < 9999) { + uVar20 = 0; + uVar8 = auStack12288[4096]; + } + else { + if (auStack12288[4096] < 9999) { + uVar20 = 0; + uVar8 = auStack12288[4096]; + } + } + iVar18 = 2; + if (param_3 == 1) goto LAB_7f0c95fc; + } + puVar4 = (ushort *)((int)puVar19 + iVar18); + do { + uVar17 = *puVar4; + if (uVar17 < uVar12) { + uVar10 = uVar20; + uVar14 = uVar13; + uVar22 = uVar8; + if (uVar12 <= uVar8) { + uVar10 = uVar13; + uVar14 = uVar9; + uVar22 = uVar17; + uVar17 = uVar12; + } +LAB_7f0c95a4: + uVar11 = puVar4[1]; + uVar20 = uVar10; + uVar9 = uVar14; + uVar12 = uVar17; + uVar8 = uVar22; + } + else { + bVar1 = uVar17 < uVar8; + uVar10 = uVar13; + uVar14 = uVar9; + uVar22 = uVar17; + uVar17 = uVar12; + if (bVar1) goto LAB_7f0c95a4; + uVar11 = puVar4[1]; + } + iVar18 = (int)uVar13; + if (uVar11 < uVar12) { + if (uVar8 < uVar12) { + uVar9 = SEXT48(iVar18 + 1); + uVar12 = uVar11; + } + else { + uVar20 = SEXT48(iVar18 + 1); + uVar8 = uVar11; + } + } + else { + if (uVar11 < uVar8) { + uVar20 = SEXT48(iVar18 + 1); + uVar8 = uVar11; + } + } + uVar13 = SEXT48(iVar18 + 2); + puVar4 = puVar4 + 2; + } while (uVar13 != param_3); + } +LAB_7f0c95fc: + iVar18 = 0; + if (uVar12 == 9999) { + bVar2 = true; + } + else { + if (uVar8 == 9999) { + bVar2 = true; + } + } + if (bVar2) { + uVar20 = uVar21; + uVar8 = (ushort)uVar21; + if (0 < param_2) { + do { + while ((longlong)uVar20 < 10000) { + uVar3 = proc_7F0CBF2C(1); + iVar15 = (int)uVar20; + uVar20 = (longlong)(short)auStack12288[iVar15 * 2 + uVar3]; + uVar8 = auStack12288[iVar15 * 2 + uVar3]; + } + if ((longlong)param_3 < 0x101) { + *(char *)(param_1 + iVar18) = (char)uVar8 + -0x10; + } + else { + *(short *)(param_1 + iVar18 * 2) = uVar8 + 0xd8f0; + } + iVar18 += 1; + uVar20 = uVar21; + uVar8 = (ushort)uVar21; + } while (iVar18 != param_2); + } + return; + } + iStack12312 = (int)uVar20; + } while( true ); } @@ -138157,140 +137396,138 @@ LAB_7f0c95fc: void type4_7_9_getsamples(int param_1,int param_2) { - undefined uVar1; - undefined2 uVar2; - uint uVar3; - uint uVar4; - uint uVar5; - uint uVar6; - undefined *puVar7; - undefined *puVar8; - undefined2 *puVar9; - undefined2 *puVar10; - undefined2 *puVar11; - int iVar12; - int iVar13; - int iVar14; - int iVar15; - undefined *puVar16; - undefined2 *puVar17; - int iVar18; - int iVar19; - - uVar3 = proc_7F0CBF2C(3); - uVar4 = proc_7F0CBF2C(3); - uVar5 = proc_7F0CBF2C(4); - iVar19 = 0; - iVar12 = uVar3 + uVar4 + uVar5 + 1; - while (0 < iVar12) { - iVar12 = (iVar12 - uVar5) + -1; - iVar19 += 1; - } - iVar12 = 0; - if (0 < param_2) { - do { - uVar6 = proc_7F0CBF2C(1); - if (uVar6 == 0) { - if ((int)uVar5 < 9) { - uVar6 = proc_7F0CBF2C(uVar5); - *(undefined *)(param_1 + iVar12) = (char)uVar6; - iVar12 += 1; - } - else { - uVar6 = proc_7F0CBF2C(uVar5); - *(undefined2 *)(param_1 + iVar12 * 2) = (short)uVar6; - iVar12 += 1; - } - } - else { - uVar6 = proc_7F0CBF2C(uVar3); - iVar18 = (iVar12 - uVar6) + -1; - uVar6 = proc_7F0CBF2C(uVar4); - iVar14 = uVar6 + iVar19; - if ((int)uVar5 < 9) { - iVar15 = iVar18 + iVar14; - puVar16 = (undefined *)(param_1 + iVar12); - if (iVar18 < iVar15) { - uVar6 = iVar15 - iVar18 & 3; - iVar13 = iVar18; - if (uVar6 != 0) { - puVar7 = (undefined *)(param_1 + iVar18); - iVar13 = iVar18; - puVar8 = puVar16; - do { - uVar1 = *puVar7; - iVar13 += 1; - iVar12 += 1; - puVar16 = puVar8 + 1; - puVar7 = puVar7 + 1; - *puVar8 = uVar1; - puVar8 = puVar16; - } while (uVar6 + iVar18 != iVar13); - if (iVar13 == iVar15) goto LAB_7f0c9834; + undefined uVar1; + undefined2 uVar2; + uint bits; + uint bits_00; + uint bits_01; + uint uVar3; + undefined *puVar4; + undefined *puVar5; + undefined2 *puVar6; + undefined2 *puVar7; + undefined2 *puVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + undefined *puVar13; + undefined2 *puVar14; + int iVar15; + int iVar16; + + bits = proc_7F0CBF2C(3); + bits_00 = proc_7F0CBF2C(3); + bits_01 = proc_7F0CBF2C(4); + iVar16 = 0; + iVar9 = bits + bits_00 + bits_01 + 1; + while (0 < iVar9) { + iVar9 = (iVar9 - bits_01) + -1; + iVar16 += 1; + } + iVar9 = 0; + if (0 < param_2) { + do { + uVar3 = proc_7F0CBF2C(1); + if (uVar3 == 0) { + if ((int)bits_01 < 9) { + uVar3 = proc_7F0CBF2C(bits_01); + *(undefined *)(param_1 + iVar9) = (char)uVar3; + iVar9 += 1; + } + else { + uVar3 = proc_7F0CBF2C(bits_01); + *(undefined2 *)(param_1 + iVar9 * 2) = (short)uVar3; + iVar9 += 1; + } } - puVar8 = (undefined *)(param_1 + iVar13); - puVar7 = puVar16; - do { - iVar13 += 4; - iVar12 += 4; - *puVar7 = *puVar8; - puVar16 = puVar7 + 4; - puVar7[1] = puVar8[1]; - puVar7[2] = puVar8[2]; - puVar7[3] = puVar8[3]; - puVar8 = puVar8 + 4; - puVar7 = puVar16; - } while (iVar13 != iVar18 + iVar14); - } + else { + uVar3 = proc_7F0CBF2C(bits); + iVar15 = (iVar9 - uVar3) + -1; + uVar3 = proc_7F0CBF2C(bits_00); + iVar11 = uVar3 + iVar16; + if ((int)bits_01 < 9) { + iVar12 = iVar15 + iVar11; + puVar13 = (undefined *)(param_1 + iVar9); + if (iVar15 < iVar12) { + uVar3 = iVar12 - iVar15 & 3; + iVar10 = iVar15; + if (uVar3 != 0) { + puVar4 = (undefined *)(param_1 + iVar15); + puVar5 = puVar13; + do { + uVar1 = *puVar4; + iVar10 += 1; + iVar9 += 1; + puVar13 = puVar5 + 1; + puVar4 = puVar4 + 1; + *puVar5 = uVar1; + puVar5 = puVar13; + } while (uVar3 + iVar15 != iVar10); + if (iVar10 == iVar12) goto LAB_7f0c9834; + } + puVar5 = (undefined *)(param_1 + iVar10); + puVar4 = puVar13; + do { + iVar10 += 4; + iVar9 += 4; + *puVar4 = *puVar5; + puVar13 = puVar4 + 4; + puVar4[1] = puVar5[1]; + puVar4[2] = puVar5[2]; + puVar4[3] = puVar5[3]; + puVar5 = puVar5 + 4; + puVar4 = puVar13; + } while (iVar10 != iVar15 + iVar11); + } LAB_7f0c9834: - uVar6 = proc_7F0CBF2C(uVar5); - *puVar16 = (char)uVar6; - iVar12 += 1; - } - else { - iVar15 = iVar18 + iVar14; - puVar17 = (undefined2 *)(param_1 + iVar12 * 2); - if (iVar18 < iVar15) { - uVar6 = iVar15 - iVar18 & 3; - iVar13 = iVar18; - if (uVar6 != 0) { - puVar9 = (undefined2 *)(param_1 + iVar18 * 2); - iVar13 = iVar18; - puVar10 = puVar17; - do { - uVar2 = *puVar9; - iVar13 += 1; - iVar12 += 1; - puVar17 = puVar10 + 1; - puVar9 = puVar9 + 1; - *puVar10 = uVar2; - puVar10 = puVar17; - } while (uVar6 + iVar18 != iVar13); - if (iVar13 == iVar15) goto LAB_7f0c98dc; - } - puVar10 = (undefined2 *)(param_1 + iVar13 * 2); - puVar9 = puVar17; - do { - puVar11 = puVar10 + 4; - iVar12 += 4; - *puVar9 = *puVar10; - puVar17 = puVar9 + 4; - puVar9[1] = puVar10[1]; - puVar9[2] = puVar10[2]; - puVar9[3] = puVar10[3]; - puVar10 = puVar11; - puVar9 = puVar17; - } while (puVar11 != (undefined2 *)((iVar18 + iVar14) * 2 + param_1)); - } + uVar3 = proc_7F0CBF2C(bits_01); + *puVar13 = (char)uVar3; + iVar9 += 1; + } + else { + iVar12 = iVar15 + iVar11; + puVar14 = (undefined2 *)(param_1 + iVar9 * 2); + if (iVar15 < iVar12) { + uVar3 = iVar12 - iVar15 & 3; + iVar10 = iVar15; + if (uVar3 != 0) { + puVar6 = (undefined2 *)(param_1 + iVar15 * 2); + puVar7 = puVar14; + do { + uVar2 = *puVar6; + iVar10 += 1; + iVar9 += 1; + puVar14 = puVar7 + 1; + puVar6 = puVar6 + 1; + *puVar7 = uVar2; + puVar7 = puVar14; + } while (uVar3 + iVar15 != iVar10); + if (iVar10 == iVar12) goto LAB_7f0c98dc; + } + puVar7 = (undefined2 *)(param_1 + iVar10 * 2); + puVar6 = puVar14; + do { + puVar8 = puVar7 + 4; + iVar9 += 4; + *puVar6 = *puVar7; + puVar14 = puVar6 + 4; + puVar6[1] = puVar7[1]; + puVar6[2] = puVar7[2]; + puVar6[3] = puVar7[3]; + puVar7 = puVar8; + puVar6 = puVar14; + } while (puVar8 != (undefined2 *)((iVar15 + iVar11) * 2 + param_1)); + } LAB_7f0c98dc: - uVar6 = proc_7F0CBF2C(uVar5); - *puVar17 = (short)uVar6; - iVar12 += 1; - } - } - } while (iVar12 < param_2); - } - return; + uVar3 = proc_7F0CBF2C(bits_01); + *puVar14 = (short)uVar3; + iVar9 += 1; + } + } + } while (iVar9 < param_2); + } + return; } @@ -138298,51 +137535,51 @@ LAB_7f0c98dc: uint type5_6_7_getsamples(uint *param_1,longlong param_2) { - uint uVar1; - uint uVar2; - uint uVar3; - uint uVar4; - uint uVar5; - - uVar1 = proc_7F0CBF2C(0xb); - uVar4 = (uint)param_2; - if (param_2 < 0x11) { - uVar5 = 0; - if (0 < (int)uVar1) { - do { - uVar2 = proc_7F0CBF2C(uVar4); - uVar5 += 1; - *(short *)param_1 = (short)uVar2; - param_1 = (uint *)((int)param_1 + 2); - } while (uVar5 != uVar1); - } - } - else { - if (param_2 < 0x19) { - uVar5 = 0; - if (0 < (int)uVar1) { - do { - uVar2 = proc_7F0CBF2C(uVar4); - uVar5 += 1; - *param_1 = uVar2; - param_1 = param_1 + 1; - } while (uVar5 != uVar1); - } + uint uVar1; + uint uVar2; + uint uVar3; + uint bits; + uint uVar4; + + uVar1 = proc_7F0CBF2C(0xb); + bits = (uint)param_2; + if (param_2 < 0x11) { + uVar4 = 0; + if (0 < (int)uVar1) { + do { + uVar2 = proc_7F0CBF2C(bits); + uVar4 += 1; + *(short *)param_1 = (short)uVar2; + param_1 = (uint *)((int)param_1 + 2); + } while (uVar4 != uVar1); + } } else { - uVar5 = 0; - if (0 < (int)uVar1) { - do { - uVar2 = proc_7F0CBF2C(0x18); - uVar3 = proc_7F0CBF2C(uVar4 - 0x18); - uVar5 += 1; - *param_1 = uVar3 | uVar2 << 8; - param_1 = param_1 + 1; - } while (uVar5 != uVar1); - } + if (param_2 < 0x19) { + uVar4 = 0; + if (0 < (int)uVar1) { + do { + uVar2 = proc_7F0CBF2C(bits); + uVar4 += 1; + *param_1 = uVar2; + param_1 = param_1 + 1; + } while (uVar4 != uVar1); + } + } + else { + uVar4 = 0; + if (0 < (int)uVar1) { + do { + uVar2 = proc_7F0CBF2C(0x18); + uVar3 = proc_7F0CBF2C(bits - 0x18); + uVar4 += 1; + *param_1 = uVar3 | uVar2 << 8; + param_1 = param_1 + 1; + } while (uVar4 != uVar1); + } + } } - } - return uVar1; + return uVar1; } @@ -138350,15 +137587,15 @@ uint type5_6_7_getsamples(uint *param_1,longlong param_2) int proc_7F0C9A24(int param_1) { - int iVar1; - - param_1 += -1; - iVar1 = 0; - while (0 < param_1) { - param_1 >>= 1; - iVar1 += 1; - } - return iVar1; + int iVar1; + + param_1 += -1; + iVar1 = 0; + while (0 < param_1) { + param_1 >>= 1; + iVar1 += 1; + } + return iVar1; } @@ -138366,19 +137603,19 @@ int proc_7F0C9A24(int param_1) void image_get_alpha_values(undefined *param_1,int param_2) { - uint uVar1; - int iVar2; - - iVar2 = 0; - if (0 < param_2) { - do { - uVar1 = proc_7F0CBF2C(1); - iVar2 += 1; - *param_1 = (char)uVar1; - param_1 = param_1 + 1; - } while (iVar2 != param_2); - } - return; + uint uVar1; + int iVar2; + + iVar2 = 0; + if (0 < param_2) { + do { + uVar1 = proc_7F0CBF2C(1); + iVar2 += 1; + *param_1 = (char)uVar1; + param_1 = param_1 + 1; + } while (iVar2 != param_2); + } + return; } @@ -138388,17 +137625,17 @@ void image_get_alpha_values(undefined *param_1,int param_2) undefined8 image_compression0_expand(void) { - undefined8 uVar1; - undefined4 in_a3_hi; - int in_a3_lo; - - if (CONCAT44(in_a3_hi,in_a3_lo) < 9) { + undefined8 uVar1; + undefined4 in_a3_hi; + int in_a3_lo; + + if (CONCAT44(in_a3_hi,in_a3_lo) < 9) { // WARNING: Could not recover jumptable at 0x7f0c9b04. Too many branches // WARNING: Treating indirect jump as call - uVar1 = (*(code *)(&jpt_700FDA34)[in_a3_lo])(); - return uVar1; - } - return 0; + uVar1 = (*(code *)(&jpt_700FDA34)[in_a3_lo])(); + return uVar1; + } + return 0; } @@ -138409,427 +137646,430 @@ undefined8 image_compression0_expand(void) int generate_link_final_image(int param_1,uint param_2,int param_3,uint *param_4,undefined4 param_5) { - undefined *puVar1; - byte bVar2; - undefined uVar3; - char cVar4; - undefined *puVar5; - char *pcVar6; - byte *pbVar7; - char *pcVar8; - uint uVar9; - int iVar10; - int iVar11; - int iVar12; - uint *puVar13; - ushort *puVar14; - undefined2 *puVar15; - undefined *puVar16; - byte *pbVar17; - byte *pbVar18; - byte *pbVar19; - int iVar20; - - iVar12 = 0; - switch(param_5) { - case 0: - iVar11 = 0; - if (0 < param_3) { - do { - uVar9 = 0; - if (0 < (int)param_2) { - iVar10 = param_2 * param_3; - pbVar17 = (byte *)(param_1 + iVar12); - pbVar19 = (byte *)(param_1 + iVar12 + iVar10 * 2); - pbVar7 = (byte *)(iVar10 * 3 + iVar12 + param_1); - pbVar18 = (byte *)(param_1 + iVar12 + iVar10); - puVar13 = param_4; - if ((param_2 & 3) == 0) { - iVar10 = 0; - } - else { + undefined *puVar1; + byte bVar2; + undefined uVar3; + char cVar4; + undefined *puVar5; + char *pcVar6; + byte *pbVar7; + char *pcVar8; + uint uVar9; + int iVar10; + int iVar11; + int iVar12; + uint *puVar13; + ushort *puVar14; + undefined2 *puVar15; + undefined *puVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + int iVar20; + + iVar12 = 0; + switch(param_5) { + case 0: + iVar11 = 0; + if (0 < param_3) { do { - bVar2 = *pbVar17; - uVar9 += 1; - iVar12 += 1; - pbVar17 = pbVar17 + 1; - *puVar13 = (uint)*pbVar7 | (uint)bVar2 << 0x18 | (uint)*pbVar18 << 0x10 | - (uint)*pbVar19 << 8; - pbVar7 = pbVar7 + 1; - pbVar18 = pbVar18 + 1; - pbVar19 = pbVar19 + 1; - puVar13 = puVar13 + 1; - } while ((param_2 & 3) != uVar9); - iVar10 = uVar9 * 4; - if (uVar9 == param_2) goto LAB_7f0c9f80; - } - puVar13 = (uint *)((int)param_4 + iVar10); - do { - uVar9 += 4; - iVar12 += 4; - *puVar13 = (uint)*pbVar7 | (uint)*pbVar17 << 0x18 | (uint)*pbVar18 << 0x10 | - (uint)*pbVar19 << 8; - puVar13[1] = (uint)pbVar7[1] | (uint)pbVar17[1] << 0x18 | (uint)pbVar18[1] << 0x10 | - (uint)pbVar19[1] << 8; - puVar13[2] = (uint)pbVar7[2] | (uint)pbVar17[2] << 0x18 | (uint)pbVar18[2] << 0x10 | - (uint)pbVar19[2] << 8; - puVar13[3] = (uint)pbVar7[3] | (uint)pbVar17[3] << 0x18 | (uint)pbVar18[3] << 0x10 | - (uint)pbVar19[3] << 8; - pbVar17 = pbVar17 + 4; - pbVar7 = pbVar7 + 4; - pbVar18 = pbVar18 + 4; - pbVar19 = pbVar19 + 4; - puVar13 = puVar13 + 4; - } while (uVar9 != param_2); - } + uVar9 = 0; + if (0 < (int)param_2) { + iVar10 = param_2 * param_3; + pbVar17 = (byte *)(param_1 + iVar12); + pbVar19 = (byte *)(param_1 + iVar12 + iVar10 * 2); + pbVar7 = (byte *)(iVar10 * 3 + iVar12 + param_1); + pbVar18 = (byte *)(param_1 + iVar12 + iVar10); + puVar13 = param_4; + if ((param_2 & 3) == 0) { + iVar10 = 0; + } + else { + do { + bVar2 = *pbVar17; + uVar9 += 1; + iVar12 += 1; + pbVar17 = pbVar17 + 1; + *puVar13 = (uint)*pbVar7 | (uint)bVar2 << 0x18 | (uint)*pbVar18 << 0x10 + | (uint)*pbVar19 << 8; + pbVar7 = pbVar7 + 1; + pbVar18 = pbVar18 + 1; + pbVar19 = pbVar19 + 1; + puVar13 = puVar13 + 1; + } while ((param_2 & 3) != uVar9); + iVar10 = uVar9 * 4; + if (uVar9 == param_2) goto LAB_7f0c9f80; + } + puVar13 = (uint *)((int)param_4 + iVar10); + do { + uVar9 += 4; + iVar12 += 4; + *puVar13 = (uint)*pbVar7 | (uint)*pbVar17 << 0x18 | (uint)*pbVar18 << 0x10 | + (uint)*pbVar19 << 8; + puVar13[1] = (uint)pbVar7[1] | (uint)pbVar17[1] << 0x18 | + (uint)pbVar18[1] << 0x10 | (uint)pbVar19[1] << 8; + puVar13[2] = (uint)pbVar7[2] | (uint)pbVar17[2] << 0x18 | + (uint)pbVar18[2] << 0x10 | (uint)pbVar19[2] << 8; + puVar13[3] = (uint)pbVar7[3] | (uint)pbVar17[3] << 0x18 | + (uint)pbVar18[3] << 0x10 | (uint)pbVar19[3] << 8; + pbVar17 = pbVar17 + 4; + pbVar7 = pbVar7 + 4; + pbVar18 = pbVar18 + 4; + pbVar19 = pbVar19 + 4; + puVar13 = puVar13 + 4; + } while (uVar9 != param_2); + } LAB_7f0c9f80: - iVar11 += 1; - param_4 = param_4 + (param_2 + 3 & 0xffc); - } while (iVar11 != param_3); - } - param_3 = (param_2 + 3 & 0xffc) * param_3 * 4; - break; - case 1: - iVar11 = 0; - if (0 < param_3) { - do { - uVar9 = 0; - if (0 < (int)param_2) { - iVar10 = param_2 * param_3; - pbVar17 = (byte *)(param_1 + iVar12); - pbVar19 = (byte *)(param_1 + iVar12 + iVar10 * 2); - pbVar7 = (byte *)(iVar10 * 3 + iVar12 + param_1); - pbVar18 = (byte *)(param_1 + iVar12 + iVar10); - puVar13 = param_4; - if ((param_2 & 3) == 0) { - iVar10 = 0; - } - else { - do { - bVar2 = *pbVar17; - uVar9 += 1; - iVar12 += 1; - pbVar17 = pbVar17 + 1; - *(ushort *)puVar13 = - (ushort)*pbVar7 | (ushort)bVar2 << 0xb | (ushort)*pbVar18 << 6 | - (ushort)*pbVar19 << 1; - pbVar7 = pbVar7 + 1; - pbVar18 = pbVar18 + 1; - pbVar19 = pbVar19 + 1; - puVar13 = (uint *)((int)puVar13 + 2); - } while ((param_2 & 3) != uVar9); - iVar10 = uVar9 * 2; - if (uVar9 == param_2) goto LAB_7f0ca2c0; - } - puVar14 = (ushort *)((int)param_4 + iVar10); - do { - uVar9 += 4; - iVar12 += 4; - *puVar14 = (ushort)*pbVar7 | (ushort)*pbVar17 << 0xb | (ushort)*pbVar18 << 6 | - (ushort)*pbVar19 << 1; - puVar14[1] = (ushort)pbVar7[1] | (ushort)pbVar17[1] << 0xb | (ushort)pbVar18[1] << 6 | - (ushort)pbVar19[1] << 1; - puVar14[2] = (ushort)pbVar7[2] | (ushort)pbVar17[2] << 0xb | (ushort)pbVar18[2] << 6 | - (ushort)pbVar19[2] << 1; - puVar14[3] = (ushort)pbVar7[3] | (ushort)pbVar17[3] << 0xb | (ushort)pbVar18[3] << 6 | - (ushort)pbVar19[3] << 1; - pbVar17 = pbVar17 + 4; - pbVar7 = pbVar7 + 4; - pbVar18 = pbVar18 + 4; - pbVar19 = pbVar19 + 4; - puVar14 = puVar14 + 4; - } while (uVar9 != param_2); + iVar11 += 1; + param_4 = param_4 + (param_2 + 3 & 0xffc); + } while (iVar11 != param_3); } + param_3 = (param_2 + 3 & 0xffc) * param_3 * 4; + break; + case 1: + iVar11 = 0; + if (0 < param_3) { + do { + uVar9 = 0; + if (0 < (int)param_2) { + iVar10 = param_2 * param_3; + pbVar17 = (byte *)(param_1 + iVar12); + pbVar19 = (byte *)(param_1 + iVar12 + iVar10 * 2); + pbVar7 = (byte *)(iVar10 * 3 + iVar12 + param_1); + pbVar18 = (byte *)(param_1 + iVar12 + iVar10); + puVar13 = param_4; + if ((param_2 & 3) == 0) { + iVar10 = 0; + } + else { + do { + bVar2 = *pbVar17; + uVar9 += 1; + iVar12 += 1; + pbVar17 = pbVar17 + 1; + *(ushort *)puVar13 = + (ushort)*pbVar7 | (ushort)bVar2 << 0xb | (ushort)*pbVar18 << 6 | + (ushort)*pbVar19 << 1; + pbVar7 = pbVar7 + 1; + pbVar18 = pbVar18 + 1; + pbVar19 = pbVar19 + 1; + puVar13 = (uint *)((int)puVar13 + 2); + } while ((param_2 & 3) != uVar9); + iVar10 = uVar9 * 2; + if (uVar9 == param_2) goto LAB_7f0ca2c0; + } + puVar14 = (ushort *)((int)param_4 + iVar10); + do { + uVar9 += 4; + iVar12 += 4; + *puVar14 = (ushort)*pbVar7 | (ushort)*pbVar17 << 0xb | (ushort)*pbVar18 << 6 + | (ushort)*pbVar19 << 1; + puVar14[1] = (ushort)pbVar7[1] | (ushort)pbVar17[1] << 0xb | + (ushort)pbVar18[1] << 6 | (ushort)pbVar19[1] << 1; + puVar14[2] = (ushort)pbVar7[2] | (ushort)pbVar17[2] << 0xb | + (ushort)pbVar18[2] << 6 | (ushort)pbVar19[2] << 1; + puVar14[3] = (ushort)pbVar7[3] | (ushort)pbVar17[3] << 0xb | + (ushort)pbVar18[3] << 6 | (ushort)pbVar19[3] << 1; + pbVar17 = pbVar17 + 4; + pbVar7 = pbVar7 + 4; + pbVar18 = pbVar18 + 4; + pbVar19 = pbVar19 + 4; + puVar14 = puVar14 + 4; + } while (uVar9 != param_2); + } LAB_7f0ca2c0: - iVar11 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); - } while (iVar11 != param_3); - } - param_3 = (param_2 + 3 & 0xffc) * param_3 * 2; - break; - case 2: - iVar11 = 0; - if (0 < param_3) { - do { - uVar9 = 0; - if (0 < (int)param_2) { - pbVar17 = (byte *)(param_1 + iVar12); - pbVar18 = (byte *)(param_2 * param_3 * 2 + iVar12 + param_1); - pbVar7 = (byte *)(param_1 + iVar12 + param_2 * param_3); - puVar13 = param_4; - if ((param_2 & 3) == 0) { - iVar10 = 0; - } - else { - do { - uVar9 += 1; - *puVar13 = (uint)*pbVar18 << 8 | (uint)*pbVar17 << 0x18 | (uint)*pbVar7 << 0x10 | 0xff - ; - iVar12 += 1; - pbVar17 = pbVar17 + 1; - pbVar7 = pbVar7 + 1; - pbVar18 = pbVar18 + 1; - puVar13 = puVar13 + 1; - } while ((param_2 & 3) != uVar9); - iVar10 = uVar9 * 4; - if (uVar9 == param_2) goto LAB_7f0ca10c; - } - puVar13 = (uint *)((int)param_4 + iVar10); - do { - uVar9 += 4; - *puVar13 = (uint)*pbVar18 << 8 | (uint)*pbVar17 << 0x18 | (uint)*pbVar7 << 0x10 | 0xff; - iVar12 += 4; - puVar13[1] = (uint)pbVar18[1] << 8 | (uint)pbVar17[1] << 0x18 | (uint)pbVar7[1] << 0x10 - | 0xff; - puVar13[2] = (uint)pbVar18[2] << 8 | (uint)pbVar17[2] << 0x18 | (uint)pbVar7[2] << 0x10 - | 0xff; - puVar13[3] = (uint)pbVar18[3] << 8 | (uint)pbVar17[3] << 0x18 | (uint)pbVar7[3] << 0x10 - | 0xff; - pbVar18 = pbVar18 + 4; - puVar13 = puVar13 + 4; - pbVar17 = pbVar17 + 4; - pbVar7 = pbVar7 + 4; - } while (uVar9 != param_2); + iVar11 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); + } while (iVar11 != param_3); } + param_3 = (param_2 + 3 & 0xffc) * param_3 * 2; + break; + case 2: + iVar11 = 0; + if (0 < param_3) { + do { + uVar9 = 0; + if (0 < (int)param_2) { + pbVar17 = (byte *)(param_1 + iVar12); + pbVar18 = (byte *)(param_2 * param_3 * 2 + iVar12 + param_1); + pbVar7 = (byte *)(param_1 + iVar12 + param_2 * param_3); + puVar13 = param_4; + if ((param_2 & 3) == 0) { + iVar10 = 0; + } + else { + do { + uVar9 += 1; + *puVar13 = (uint)*pbVar18 << 8 | (uint)*pbVar17 << 0x18 | + (uint)*pbVar7 << 0x10 | 0xff; + iVar12 += 1; + pbVar17 = pbVar17 + 1; + pbVar7 = pbVar7 + 1; + pbVar18 = pbVar18 + 1; + puVar13 = puVar13 + 1; + } while ((param_2 & 3) != uVar9); + iVar10 = uVar9 * 4; + if (uVar9 == param_2) goto LAB_7f0ca10c; + } + puVar13 = (uint *)((int)param_4 + iVar10); + do { + uVar9 += 4; + *puVar13 = (uint)*pbVar18 << 8 | (uint)*pbVar17 << 0x18 | + (uint)*pbVar7 << 0x10 | 0xff; + iVar12 += 4; + puVar13[1] = (uint)pbVar18[1] << 8 | (uint)pbVar17[1] << 0x18 | + (uint)pbVar7[1] << 0x10 | 0xff; + puVar13[2] = (uint)pbVar18[2] << 8 | (uint)pbVar17[2] << 0x18 | + (uint)pbVar7[2] << 0x10 | 0xff; + puVar13[3] = (uint)pbVar18[3] << 8 | (uint)pbVar17[3] << 0x18 | + (uint)pbVar7[3] << 0x10 | 0xff; + pbVar18 = pbVar18 + 4; + puVar13 = puVar13 + 4; + pbVar17 = pbVar17 + 4; + pbVar7 = pbVar7 + 4; + } while (uVar9 != param_2); + } LAB_7f0ca10c: - iVar11 += 1; - param_4 = param_4 + (param_2 + 3 & 0xffc); - } while (iVar11 != param_3); - } - param_3 = (param_2 + 3 & 0xffc) * param_3 * 4; - break; - case 3: - iVar11 = 0; - if (0 < param_3) { - do { - uVar9 = 0; - if (0 < (int)param_2) { - pbVar17 = (byte *)(param_1 + iVar12); - pbVar18 = (byte *)(param_2 * param_3 * 2 + iVar12 + param_1); - pbVar7 = (byte *)(param_1 + iVar12 + param_2 * param_3); - puVar13 = param_4; - if ((param_2 & 3) == 0) { - iVar10 = 0; - } - else { - do { - uVar9 += 1; - *(ushort *)puVar13 = - (ushort)*pbVar18 << 1 | (ushort)*pbVar17 << 0xb | (ushort)*pbVar7 << 6 | 1; - iVar12 += 1; - pbVar17 = pbVar17 + 1; - pbVar7 = pbVar7 + 1; - pbVar18 = pbVar18 + 1; - puVar13 = (uint *)((int)puVar13 + 2); - } while ((param_2 & 3) != uVar9); - iVar10 = uVar9 * 2; - if (uVar9 == param_2) goto LAB_7f0ca560; - } - puVar14 = (ushort *)((int)param_4 + iVar10); - do { - uVar9 += 4; - *puVar14 = (ushort)*pbVar18 << 1 | (ushort)*pbVar17 << 0xb | (ushort)*pbVar7 << 6 | 1; - iVar12 += 4; - puVar14[1] = (ushort)pbVar18[1] << 1 | (ushort)pbVar17[1] << 0xb | - (ushort)pbVar7[1] << 6 | 1; - puVar14[2] = (ushort)pbVar18[2] << 1 | (ushort)pbVar17[2] << 0xb | - (ushort)pbVar7[2] << 6 | 1; - puVar14[3] = (ushort)pbVar18[3] << 1 | (ushort)pbVar17[3] << 0xb | - (ushort)pbVar7[3] << 6 | 1; - pbVar18 = pbVar18 + 4; - puVar14 = puVar14 + 4; - pbVar17 = pbVar17 + 4; - pbVar7 = pbVar7 + 4; - } while (uVar9 != param_2); + iVar11 += 1; + param_4 = param_4 + (param_2 + 3 & 0xffc); + } while (iVar11 != param_3); } + param_3 = (param_2 + 3 & 0xffc) * param_3 * 4; + break; + case 3: + iVar11 = 0; + if (0 < param_3) { + do { + uVar9 = 0; + if (0 < (int)param_2) { + pbVar17 = (byte *)(param_1 + iVar12); + pbVar18 = (byte *)(param_2 * param_3 * 2 + iVar12 + param_1); + pbVar7 = (byte *)(param_1 + iVar12 + param_2 * param_3); + puVar13 = param_4; + if ((param_2 & 3) == 0) { + iVar10 = 0; + } + else { + do { + uVar9 += 1; + *(ushort *)puVar13 = + (ushort)*pbVar18 << 1 | (ushort)*pbVar17 << 0xb | + (ushort)*pbVar7 << 6 | 1; + iVar12 += 1; + pbVar17 = pbVar17 + 1; + pbVar7 = pbVar7 + 1; + pbVar18 = pbVar18 + 1; + puVar13 = (uint *)((int)puVar13 + 2); + } while ((param_2 & 3) != uVar9); + iVar10 = uVar9 * 2; + if (uVar9 == param_2) goto LAB_7f0ca560; + } + puVar14 = (ushort *)((int)param_4 + iVar10); + do { + uVar9 += 4; + *puVar14 = (ushort)*pbVar18 << 1 | (ushort)*pbVar17 << 0xb | + (ushort)*pbVar7 << 6 | 1; + iVar12 += 4; + puVar14[1] = (ushort)pbVar18[1] << 1 | (ushort)pbVar17[1] << 0xb | + (ushort)pbVar7[1] << 6 | 1; + puVar14[2] = (ushort)pbVar18[2] << 1 | (ushort)pbVar17[2] << 0xb | + (ushort)pbVar7[2] << 6 | 1; + puVar14[3] = (ushort)pbVar18[3] << 1 | (ushort)pbVar17[3] << 0xb | + (ushort)pbVar7[3] << 6 | 1; + pbVar18 = pbVar18 + 4; + puVar14 = puVar14 + 4; + pbVar17 = pbVar17 + 4; + pbVar7 = pbVar7 + 4; + } while (uVar9 != param_2); + } LAB_7f0ca560: - iVar11 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); - } while (iVar11 != param_3); - } - param_3 = (param_2 + 3 & 0xffc) * param_3 * 2; - break; - case 4: - iVar11 = 0; - if (0 < param_3) { - do { - uVar9 = 0; - if (0 < (int)param_2) { - puVar5 = (undefined *)(param_1 + iVar12); - puVar16 = (undefined *)(iVar12 + param_2 * param_3 + param_1); - puVar13 = param_4; - if ((param_2 & 3) == 0) { - iVar10 = 0; - } - else { - do { - uVar9 += 1; - *(ushort *)puVar13 = CONCAT11(*puVar5,*puVar16); - iVar12 += 1; - puVar5 = puVar5 + 1; - puVar16 = puVar16 + 1; - puVar13 = (uint *)((int)puVar13 + 2); - } while ((param_2 & 3) != uVar9); - iVar10 = uVar9 * 2; - if (uVar9 == param_2) goto LAB_7f0ca3d4; - } - puVar15 = (undefined2 *)((int)param_4 + iVar10); - do { - uVar9 += 4; - *puVar15 = CONCAT11(*puVar5,*puVar16); - iVar12 += 4; - puVar15[1] = CONCAT11(puVar5[1],puVar16[1]); - puVar15[2] = CONCAT11(puVar5[2],puVar16[2]); - puVar1 = puVar16 + 3; - puVar16 = puVar16 + 4; - puVar15[3] = CONCAT11(puVar5[3],*puVar1); - puVar15 = puVar15 + 4; - puVar5 = puVar5 + 4; - } while (uVar9 != param_2); + iVar11 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); + } while (iVar11 != param_3); } + param_3 = (param_2 + 3 & 0xffc) * param_3 * 2; + break; + case 4: + iVar11 = 0; + if (0 < param_3) { + do { + uVar9 = 0; + if (0 < (int)param_2) { + puVar5 = (undefined *)(param_1 + iVar12); + puVar16 = (undefined *)(iVar12 + param_2 * param_3 + param_1); + puVar13 = param_4; + if ((param_2 & 3) == 0) { + iVar10 = 0; + } + else { + do { + uVar9 += 1; + *(ushort *)puVar13 = CONCAT11(*puVar5,*puVar16); + iVar12 += 1; + puVar5 = puVar5 + 1; + puVar16 = puVar16 + 1; + puVar13 = (uint *)((int)puVar13 + 2); + } while ((param_2 & 3) != uVar9); + iVar10 = uVar9 * 2; + if (uVar9 == param_2) goto LAB_7f0ca3d4; + } + puVar15 = (undefined2 *)((int)param_4 + iVar10); + do { + uVar9 += 4; + *puVar15 = CONCAT11(*puVar5,*puVar16); + iVar12 += 4; + puVar15[1] = CONCAT11(puVar5[1],puVar16[1]); + puVar15[2] = CONCAT11(puVar5[2],puVar16[2]); + puVar1 = puVar16 + 3; + puVar16 = puVar16 + 4; + puVar15[3] = CONCAT11(puVar5[3],*puVar1); + puVar15 = puVar15 + 4; + puVar5 = puVar5 + 4; + } while (uVar9 != param_2); + } LAB_7f0ca3d4: - iVar11 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); - } while (iVar11 != param_3); - } - param_3 = (param_2 + 3 & 0xffc) * param_3 * 2; - break; - case 5: - iVar11 = 0; - if (0 < param_3) { - do { - uVar9 = 0; - if (0 < (int)param_2) { - pcVar6 = (char *)(param_1 + iVar12); - pbVar17 = (byte *)(iVar12 + param_2 * param_3 + param_1); - puVar13 = param_4; - if ((param_2 & 3) != 0) { - do { - uVar9 += 1; - *(byte *)puVar13 = *pbVar17 | *pcVar6 << 4; - iVar12 += 1; - pcVar6 = pcVar6 + 1; - pbVar17 = pbVar17 + 1; - puVar13 = (uint *)((int)puVar13 + 1); - } while ((param_2 & 3) != uVar9); - puVar13 = (uint *)((int)param_4 + uVar9); - if (uVar9 == param_2) goto LAB_7f0ca668; - } - do { - uVar9 += 4; - *(byte *)puVar13 = *pbVar17 | *pcVar6 << 4; - iVar12 += 4; - *(byte *)((int)puVar13 + 1) = pbVar17[1] | pcVar6[1] << 4; - *(byte *)((int)puVar13 + 2) = pbVar17[2] | pcVar6[2] << 4; - pbVar7 = pbVar17 + 3; - pbVar17 = pbVar17 + 4; - *(byte *)((int)puVar13 + 3) = *pbVar7 | pcVar6[3] << 4; - pcVar6 = pcVar6 + 4; - puVar13 = puVar13 + 1; - } while (uVar9 != param_2); + iVar11 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); + } while (iVar11 != param_3); } + param_3 = (param_2 + 3 & 0xffc) * param_3 * 2; + break; + case 5: + iVar11 = 0; + if (0 < param_3) { + do { + uVar9 = 0; + if (0 < (int)param_2) { + pcVar6 = (char *)(param_1 + iVar12); + pbVar17 = (byte *)(iVar12 + param_2 * param_3 + param_1); + puVar13 = param_4; + if ((param_2 & 3) != 0) { + do { + uVar9 += 1; + *(byte *)puVar13 = *pbVar17 | *pcVar6 << 4; + iVar12 += 1; + pcVar6 = pcVar6 + 1; + pbVar17 = pbVar17 + 1; + puVar13 = (uint *)((int)puVar13 + 1); + } while ((param_2 & 3) != uVar9); + puVar13 = (uint *)((int)param_4 + uVar9); + if (uVar9 == param_2) goto LAB_7f0ca668; + } + do { + uVar9 += 4; + *(byte *)puVar13 = *pbVar17 | *pcVar6 << 4; + iVar12 += 4; + *(byte *)((int)puVar13 + 1) = pbVar17[1] | pcVar6[1] << 4; + *(byte *)((int)puVar13 + 2) = pbVar17[2] | pcVar6[2] << 4; + pbVar7 = pbVar17 + 3; + pbVar17 = pbVar17 + 4; + *(byte *)((int)puVar13 + 3) = *pbVar7 | pcVar6[3] << 4; + pcVar6 = pcVar6 + 4; + puVar13 = puVar13 + 1; + } while (uVar9 != param_2); + } LAB_7f0ca668: - iVar11 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 7 & 0xff8)); - } while (iVar11 != param_3); - } - param_3 = (param_2 + 7 & 0xff8) * param_3; - break; - case 6: - iVar11 = 0; - if (0 < param_3) { - do { - iVar10 = 0; - if (0 < (int)param_2) { - pcVar8 = (char *)(param_2 * param_3 * 3 + iVar12 + param_1); - pcVar6 = (char *)(param_1 + iVar12); - do { - pbVar17 = (byte *)(pcVar8 + 1); - iVar12 += 2; - cVar4 = *pcVar8; - pcVar8 = pcVar8 + 2; - iVar20 = iVar10 >> 1; - iVar10 += 2; - *(byte *)((int)param_4 + iVar20) = *pbVar17 | *pcVar6 << 5 | cVar4 << 4 | pcVar6[1] << 1 - ; - pcVar6 = pcVar6 + 2; - } while (iVar10 < (int)param_2); + iVar11 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 7 & 0xff8)); + } while (iVar11 != param_3); } - iVar11 += 1; - if ((param_2 & 1) != 0) { - iVar12 += -1; - } - param_4 = (uint *)((int)param_4 + (param_2 + 0xf & 0xff0)); - } while (iVar11 != param_3); - } - param_3 = ((int)(param_2 + 0xf & 0xff0) >> 1) * param_3; - break; - case 7: - iVar11 = 0; - if (0 < param_3) { - do { - uVar9 = 0; - if (0 < (int)param_2) { - puVar5 = (undefined *)(param_1 + iVar12); - puVar13 = param_4; - if ((param_2 & 3) != 0) { + param_3 = (param_2 + 7 & 0xff8) * param_3; + break; + case 6: + iVar11 = 0; + if (0 < param_3) { do { - uVar3 = *puVar5; - uVar9 += 1; - iVar12 += 1; - puVar5 = puVar5 + 1; - *(undefined *)puVar13 = uVar3; - puVar13 = (uint *)((int)puVar13 + 1); - } while ((param_2 & 3) != uVar9); - puVar13 = (uint *)((int)param_4 + uVar9); - if (uVar9 == param_2) goto LAB_7f0ca714; - } - do { - uVar9 += 4; - iVar12 += 4; - *(undefined *)puVar13 = *puVar5; - *(undefined *)((int)puVar13 + 1) = puVar5[1]; - *(undefined *)((int)puVar13 + 2) = puVar5[2]; - *(undefined *)((int)puVar13 + 3) = puVar5[3]; - puVar5 = puVar5 + 4; - puVar13 = puVar13 + 1; - } while (uVar9 != param_2); + iVar10 = 0; + if (0 < (int)param_2) { + pcVar8 = (char *)(param_2 * param_3 * 3 + iVar12 + param_1); + pcVar6 = (char *)(param_1 + iVar12); + do { + pbVar17 = (byte *)(pcVar8 + 1); + iVar12 += 2; + cVar4 = *pcVar8; + pcVar8 = pcVar8 + 2; + iVar20 = iVar10 >> 1; + iVar10 += 2; + *(byte *)((int)param_4 + iVar20) = + *pbVar17 | *pcVar6 << 5 | cVar4 << 4 | pcVar6[1] << 1; + pcVar6 = pcVar6 + 2; + } while (iVar10 < (int)param_2); + } + iVar11 += 1; + if ((param_2 & 1) != 0) { + iVar12 += -1; + } + param_4 = (uint *)((int)param_4 + (param_2 + 0xf & 0xff0)); + } while (iVar11 != param_3); } + param_3 = ((int)(param_2 + 0xf & 0xff0) >> 1) * param_3; + break; + case 7: + iVar11 = 0; + if (0 < param_3) { + do { + uVar9 = 0; + if (0 < (int)param_2) { + puVar5 = (undefined *)(param_1 + iVar12); + puVar13 = param_4; + if ((param_2 & 3) != 0) { + do { + uVar3 = *puVar5; + uVar9 += 1; + iVar12 += 1; + puVar5 = puVar5 + 1; + *(undefined *)puVar13 = uVar3; + puVar13 = (uint *)((int)puVar13 + 1); + } while ((param_2 & 3) != uVar9); + puVar13 = (uint *)((int)param_4 + uVar9); + if (uVar9 == param_2) goto LAB_7f0ca714; + } + do { + uVar9 += 4; + iVar12 += 4; + *(undefined *)puVar13 = *puVar5; + *(undefined *)((int)puVar13 + 1) = puVar5[1]; + *(undefined *)((int)puVar13 + 2) = puVar5[2]; + *(undefined *)((int)puVar13 + 3) = puVar5[3]; + puVar5 = puVar5 + 4; + puVar13 = puVar13 + 1; + } while (uVar9 != param_2); + } LAB_7f0ca714: - iVar11 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 7 & 0xff8)); - } while (iVar11 != param_3); - } - param_3 = (param_2 + 7 & 0xff8) * param_3; - break; - case 8: - iVar11 = 0; - if (0 < param_3) { - do { - iVar10 = 0; - if (0 < (int)param_2) { - pcVar6 = (char *)(param_1 + iVar12); - do { - iVar12 += 2; - iVar20 = iVar10 >> 1; - iVar10 += 2; - *(byte *)((int)param_4 + iVar20) = pcVar6[1] | *pcVar6 << 4; - pcVar6 = pcVar6 + 2; - } while (iVar10 < (int)param_2); + iVar11 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 7 & 0xff8)); + } while (iVar11 != param_3); } - iVar11 += 1; - if ((param_2 & 1) != 0) { - iVar12 += -1; + param_3 = (param_2 + 7 & 0xff8) * param_3; + break; + case 8: + iVar11 = 0; + if (0 < param_3) { + do { + iVar10 = 0; + if (0 < (int)param_2) { + pcVar6 = (char *)(param_1 + iVar12); + do { + iVar12 += 2; + iVar20 = iVar10 >> 1; + iVar10 += 2; + *(byte *)((int)param_4 + iVar20) = pcVar6[1] | *pcVar6 << 4; + pcVar6 = pcVar6 + 2; + } while (iVar10 < (int)param_2); + } + iVar11 += 1; + if ((param_2 & 1) != 0) { + iVar12 += -1; + } + param_4 = (uint *)((int)param_4 + ((int)(param_2 + 0xf & 0xff0) >> 1)); + } while (iVar11 != param_3); } - param_4 = (uint *)((int)param_4 + ((int)(param_2 + 0xf & 0xff0) >> 1)); - } while (iVar11 != param_3); + param_3 = ((int)(param_2 + 0xf & 0xff0) >> 1) * param_3; + break; + default: + param_3 = 0; } - param_3 = ((int)(param_2 + 0xf & 0xff0) >> 1) * param_3; - break; - default: - param_3 = 0; - } - return param_3; + return param_3; } @@ -138838,143 +138078,143 @@ int type5_generate_link_final_image (int param_1,int param_2,int *param_3,int param_4,int param_5,undefined4 param_6) { - uint uVar1; - uint uVar2; - int iVar3; - int *piVar4; - byte *pbVar5; - int iVar6; - - uVar1 = proc_7F0C9A24(param_5); - iVar6 = 0; - switch(param_6) { - case 0: - iVar6 = 0; - if (0 < param_2) { - do { - iVar3 = 0; - piVar4 = param_3; - if (0 < param_1) { - do { - uVar2 = proc_7F0CBF2C(uVar1); - iVar3 += 1; - *piVar4 = *(int *)(param_4 + uVar2 * 4); - piVar4 = piVar4 + 1; - } while (iVar3 != param_1); + uint bits; + uint uVar1; + int iVar2; + int *piVar3; + byte *pbVar4; + int iVar5; + + bits = proc_7F0C9A24(param_5); + iVar5 = 0; + switch(param_6) { + case 0: + iVar5 = 0; + if (0 < param_2) { + do { + iVar2 = 0; + piVar3 = param_3; + if (0 < param_1) { + do { + uVar1 = proc_7F0CBF2C(bits); + iVar2 += 1; + *piVar3 = *(int *)(param_4 + uVar1 * 4); + piVar3 = piVar3 + 1; + } while (iVar2 != param_1); + } + iVar5 += 1; + param_3 = param_3 + (param_1 + 3U & 0xffc); + } while (iVar5 != param_2); } - iVar6 += 1; - param_3 = param_3 + (param_1 + 3U & 0xffc); - } while (iVar6 != param_2); - } - iVar6 = (param_1 + 3U & 0xffc) * param_2 * 4; - break; - case 1: - case 4: - iVar6 = 0; - if (0 < param_2) { - do { - iVar3 = 0; - piVar4 = param_3; - if (0 < param_1) { - do { - uVar2 = proc_7F0CBF2C(uVar1); - iVar3 += 1; - *(undefined2 *)piVar4 = *(undefined2 *)(param_4 + uVar2 * 2); - piVar4 = (int *)((int)piVar4 + 2); - } while (iVar3 != param_1); + iVar5 = (param_1 + 3U & 0xffc) * param_2 * 4; + break; + case 1: + case 4: + iVar5 = 0; + if (0 < param_2) { + do { + iVar2 = 0; + piVar3 = param_3; + if (0 < param_1) { + do { + uVar1 = proc_7F0CBF2C(bits); + iVar2 += 1; + *(undefined2 *)piVar3 = *(undefined2 *)(param_4 + uVar1 * 2); + piVar3 = (int *)((int)piVar3 + 2); + } while (iVar2 != param_1); + } + iVar5 += 1; + param_3 = (int *)((int)param_3 + (param_1 + 3U & 0xffc) * 2); + } while (iVar5 != param_2); } - iVar6 += 1; - param_3 = (int *)((int)param_3 + (param_1 + 3U & 0xffc) * 2); - } while (iVar6 != param_2); - } - iVar6 = (param_1 + 3U & 0xffc) * param_2 * 2; - break; - case 2: - iVar6 = 0; - if (0 < param_2) { - do { - iVar3 = 0; - piVar4 = param_3; - if (0 < param_1) { - do { - uVar2 = proc_7F0CBF2C(uVar1); - iVar3 += 1; - *piVar4 = *(int *)(param_4 + uVar2 * 4) << 8; - piVar4 = piVar4 + 1; - } while (iVar3 != param_1); + iVar5 = (param_1 + 3U & 0xffc) * param_2 * 2; + break; + case 2: + iVar5 = 0; + if (0 < param_2) { + do { + iVar2 = 0; + piVar3 = param_3; + if (0 < param_1) { + do { + uVar1 = proc_7F0CBF2C(bits); + iVar2 += 1; + *piVar3 = *(int *)(param_4 + uVar1 * 4) << 8; + piVar3 = piVar3 + 1; + } while (iVar2 != param_1); + } + iVar5 += 1; + param_3 = param_3 + (param_1 + 3U & 0xffc); + } while (iVar5 != param_2); } - iVar6 += 1; - param_3 = param_3 + (param_1 + 3U & 0xffc); - } while (iVar6 != param_2); - } - iVar6 = (param_1 + 3U & 0xffc) * param_2 * 4; - break; - case 3: - iVar6 = 0; - if (0 < param_2) { - do { - iVar3 = 0; - piVar4 = param_3; - if (0 < param_1) { - do { - uVar2 = proc_7F0CBF2C(uVar1); - iVar3 += 1; - *(ushort *)piVar4 = *(short *)(param_4 + uVar2 * 2) << 1 | 1; - piVar4 = (int *)((int)piVar4 + 2); - } while (iVar3 != param_1); + iVar5 = (param_1 + 3U & 0xffc) * param_2 * 4; + break; + case 3: + iVar5 = 0; + if (0 < param_2) { + do { + iVar2 = 0; + piVar3 = param_3; + if (0 < param_1) { + do { + uVar1 = proc_7F0CBF2C(bits); + iVar2 += 1; + *(ushort *)piVar3 = *(short *)(param_4 + uVar1 * 2) << 1 | 1; + piVar3 = (int *)((int)piVar3 + 2); + } while (iVar2 != param_1); + } + iVar5 += 1; + param_3 = (int *)((int)param_3 + (param_1 + 3U & 0xffc) * 2); + } while (iVar5 != param_2); } - iVar6 += 1; - param_3 = (int *)((int)param_3 + (param_1 + 3U & 0xffc) * 2); - } while (iVar6 != param_2); - } - iVar6 = (param_1 + 3U & 0xffc) * param_2 * 2; - break; - case 5: - case 7: - iVar6 = 0; - if (0 < param_2) { - do { - iVar3 = 0; - piVar4 = param_3; - if (0 < param_1) { - do { - uVar2 = proc_7F0CBF2C(uVar1); - iVar3 += 1; - *(char *)piVar4 = (char)*(undefined2 *)(param_4 + uVar2 * 2); - piVar4 = (int *)((int)piVar4 + 1); - } while (iVar3 != param_1); + iVar5 = (param_1 + 3U & 0xffc) * param_2 * 2; + break; + case 5: + case 7: + iVar5 = 0; + if (0 < param_2) { + do { + iVar2 = 0; + piVar3 = param_3; + if (0 < param_1) { + do { + uVar1 = proc_7F0CBF2C(bits); + iVar2 += 1; + *(char *)piVar3 = (char)*(undefined2 *)(param_4 + uVar1 * 2); + piVar3 = (int *)((int)piVar3 + 1); + } while (iVar2 != param_1); + } + iVar5 += 1; + param_3 = (int *)((int)param_3 + (param_1 + 7U & 0xff8)); + } while (iVar5 != param_2); } - iVar6 += 1; - param_3 = (int *)((int)param_3 + (param_1 + 7U & 0xff8)); - } while (iVar6 != param_2); - } - iVar6 = (param_1 + 7U & 0xff8) * param_2; - break; - case 6: - case 8: - iVar6 = 0; - if (0 < param_2) { - do { - iVar3 = 0; - if (0 < param_1) { - do { - uVar2 = proc_7F0CBF2C(uVar1); - pbVar5 = (byte *)((int)param_3 + (iVar3 >> 1)); - *pbVar5 = (char)*(undefined2 *)(param_4 + uVar2 * 2) << 4; - if (iVar3 + 1 < param_1) { - uVar2 = proc_7F0CBF2C(uVar1); - *pbVar5 = *pbVar5 | *(byte *)(param_4 + uVar2 * 2 + 1); - } - iVar3 += 2; - } while (iVar3 < param_1); + iVar5 = (param_1 + 7U & 0xff8) * param_2; + break; + case 6: + case 8: + iVar5 = 0; + if (0 < param_2) { + do { + iVar2 = 0; + if (0 < param_1) { + do { + uVar1 = proc_7F0CBF2C(bits); + pbVar4 = (byte *)((int)param_3 + (iVar2 >> 1)); + *pbVar4 = (char)*(undefined2 *)(param_4 + uVar1 * 2) << 4; + if (iVar2 + 1 < param_1) { + uVar1 = proc_7F0CBF2C(bits); + *pbVar4 = *pbVar4 | *(byte *)(param_4 + uVar1 * 2 + 1); + } + iVar2 += 2; + } while (iVar2 < param_1); + } + iVar5 += 1; + param_3 = (int *)((int)param_3 + ((int)(param_1 + 0xfU & 0xff0) >> 1)); + } while (iVar5 != param_2); } - iVar6 += 1; - param_3 = (int *)((int)param_3 + ((int)(param_1 + 0xfU & 0xff0) >> 1)); - } while (iVar6 != param_2); + iVar5 = ((int)(param_1 + 0xfU & 0xff0) >> 1) * param_2; } - iVar6 = ((int)(param_1 + 0xfU & 0xff0) >> 1) * param_2; - } - return iVar6; + return iVar5; } @@ -138987,326 +138227,362 @@ int type6_7_generate_link_final_image undefined4 param_7) { - uint uVar1; - int iVar2; - ushort *puVar3; - int iVar4; - uint *puVar5; - undefined4 *puVar6; - undefined2 *puVar7; - ushort *puVar8; - ushort *puStack24; - ushort *puStack20; - - puVar3 = param_1; - if (param_6 < 0x101) { - puVar3 = puStack24; - puStack20 = param_1; - } - iVar4 = 0; - switch(param_7) { - case 0: + uint uVar1; + int iVar2; + ushort *puVar3; + int iVar4; + uint *puVar5; + undefined4 *puVar6; + undefined2 *puVar7; + ushort *puVar8; + ushort *puStack24; + ushort *puStack20; + + puVar3 = param_1; + if (param_6 < 0x101) { + puVar3 = puStack24; + puStack20 = param_1; + } iVar4 = 0; - if (0 < param_3) { - do { - uVar1 = 0; - if (0 < (int)param_2) { - puVar5 = param_4; - if ((param_2 & 3) == 0) { - iVar2 = 0; - } - else { + switch(param_7) { + case 0: + iVar4 = 0; + if (0 < param_3) { do { - if (param_6 < 0x101) { - *puVar5 = *(uint *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 4); - } - else { - *puVar5 = *(uint *)(param_5 + (uint)puVar3[uVar1] * 4); - } - uVar1 += 1; - puVar5 = puVar5 + 1; - } while ((param_2 & 3) != uVar1); - iVar2 = uVar1 * 4; - if (uVar1 == param_2) goto LAB_7f0cae60; - } - puVar6 = (undefined4 *)((int)param_4 + iVar2); - do { - if (param_6 < 0x101) { - *puVar6 = *(undefined4 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 4); - puVar6[1] = *(undefined4 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 4) - ; - puVar6[2] = *(undefined4 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 4) - ; - puVar6[3] = *(undefined4 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 4) - ; - } - else { - *puVar6 = *(undefined4 *)(param_5 + (uint)puVar3[uVar1] * 4); - puVar6[1] = *(undefined4 *)(param_5 + (uint)puVar3[uVar1 + 1] * 4); - puVar6[2] = *(undefined4 *)(param_5 + (uint)puVar3[uVar1 + 2] * 4); - puVar6[3] = *(undefined4 *)(param_5 + (uint)puVar3[uVar1 + 3] * 4); - } - uVar1 += 4; - puVar6 = puVar6 + 4; - } while (uVar1 != param_2); - } + uVar1 = 0; + if (0 < (int)param_2) { + puVar5 = param_4; + if ((param_2 & 3) == 0) { + iVar2 = 0; + } + else { + do { + if (param_6 < 0x101) { + *puVar5 = *(uint *)(param_5 + + (uint)*(byte *)((int)puStack20 + uVar1) * 4); + } + else { + *puVar5 = *(uint *)(param_5 + (uint)puVar3[uVar1] * 4); + } + uVar1 += 1; + puVar5 = puVar5 + 1; + } while ((param_2 & 3) != uVar1); + iVar2 = uVar1 * 4; + if (uVar1 == param_2) goto LAB_7f0cae60; + } + puVar6 = (undefined4 *)((int)param_4 + iVar2); + do { + if (param_6 < 0x101) { + *puVar6 = *(undefined4 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 4); + puVar6[1] = *(undefined4 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 4) + ; + puVar6[2] = *(undefined4 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 4) + ; + puVar6[3] = *(undefined4 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 4) + ; + } + else { + *puVar6 = *(undefined4 *)(param_5 + (uint)puVar3[uVar1] * 4); + puVar6[1] = *(undefined4 *)(param_5 + (uint)puVar3[uVar1 + 1] * 4); + puVar6[2] = *(undefined4 *)(param_5 + (uint)puVar3[uVar1 + 2] * 4); + puVar6[3] = *(undefined4 *)(param_5 + (uint)puVar3[uVar1 + 3] * 4); + } + uVar1 += 4; + puVar6 = puVar6 + 4; + } while (uVar1 != param_2); + } LAB_7f0cae60: - iVar4 += 1; - param_4 = param_4 + (param_2 + 3 & 0xffc); - puStack20 = (ushort *)((int)puStack20 + param_2); - puVar3 = puVar3 + param_2; - } while (iVar4 != param_3); - } - iVar4 = (param_2 + 3 & 0xffc) * param_3 * 4; - break; - case 1: - case 4: - iVar4 = 0; - if (0 < param_3) { - do { - uVar1 = 0; - if (0 < (int)param_2) { - if ((param_2 & 3) == 0) { - iVar2 = 0; - } - else { - iVar2 = 0; - puVar5 = param_4; - do { - if (param_6 < 0x101) { - *(undefined2 *)puVar5 = - *(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); - } - else { - *(undefined2 *)puVar5 = - *(undefined2 *)(param_5 + (uint)*(ushort *)((int)puVar3 + iVar2) * 2); - } - uVar1 += 1; - iVar2 += 2; - puVar5 = (uint *)((int)puVar5 + 2); - } while ((param_2 & 3) != uVar1); - iVar2 = uVar1 * 2; - if (uVar1 == param_2) goto LAB_7f0cb23c; - } - puVar7 = (undefined2 *)((int)param_4 + iVar2); - do { - if (param_6 < 0x101) { - *puVar7 = *(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); - puVar7[1] = *(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 2) - ; - puVar7[2] = *(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 2) - ; - puVar7[3] = *(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 2) - ; - } - else { - *puVar7 = *(undefined2 *)(param_5 + (uint)*(ushort *)((int)puVar3 + iVar2) * 2); - puVar7[1] = *(undefined2 *)(param_5 + (uint)*(ushort *)((int)puVar3 + iVar2 + 2) * 2); - puVar7[2] = *(undefined2 *)(param_5 + (uint)*(ushort *)((int)puVar3 + iVar2 + 4) * 2); - puVar7[3] = *(undefined2 *)(param_5 + (uint)*(ushort *)((int)puVar3 + iVar2 + 6) * 2); - } - uVar1 += 4; - iVar2 += 8; - puVar7 = puVar7 + 4; - } while (uVar1 != param_2); + iVar4 += 1; + param_4 = param_4 + (param_2 + 3 & 0xffc); + puStack20 = (ushort *)((int)puStack20 + param_2); + puVar3 = puVar3 + param_2; + } while (iVar4 != param_3); } + iVar4 = (param_2 + 3 & 0xffc) * param_3 * 4; + break; + case 1: + case 4: + iVar4 = 0; + if (0 < param_3) { + do { + uVar1 = 0; + if (0 < (int)param_2) { + if ((param_2 & 3) == 0) { + iVar2 = 0; + } + else { + iVar2 = 0; + puVar5 = param_4; + do { + if (param_6 < 0x101) { + *(undefined2 *)puVar5 = + *(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); + } + else { + *(undefined2 *)puVar5 = + *(undefined2 *) + (param_5 + (uint)*(ushort *)((int)puVar3 + iVar2) * 2); + } + uVar1 += 1; + iVar2 += 2; + puVar5 = (uint *)((int)puVar5 + 2); + } while ((param_2 & 3) != uVar1); + iVar2 = uVar1 * 2; + if (uVar1 == param_2) goto LAB_7f0cb23c; + } + puVar7 = (undefined2 *)((int)param_4 + iVar2); + do { + if (param_6 < 0x101) { + *puVar7 = *(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); + puVar7[1] = *(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 2) + ; + puVar7[2] = *(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 2) + ; + puVar7[3] = *(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 2) + ; + } + else { + *puVar7 = *(undefined2 *) + (param_5 + (uint)*(ushort *)((int)puVar3 + iVar2) * 2); + puVar7[1] = *(undefined2 *) + (param_5 + (uint)*(ushort *)((int)puVar3 + iVar2 + 2) * 2); + puVar7[2] = *(undefined2 *) + (param_5 + (uint)*(ushort *)((int)puVar3 + iVar2 + 4) * 2); + puVar7[3] = *(undefined2 *) + (param_5 + (uint)*(ushort *)((int)puVar3 + iVar2 + 6) * 2); + } + uVar1 += 4; + iVar2 += 8; + puVar7 = puVar7 + 4; + } while (uVar1 != param_2); + } LAB_7f0cb23c: - iVar4 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); - puStack20 = (ushort *)((int)puStack20 + param_2); - puVar3 = puVar3 + param_2; - } while (iVar4 != param_3); - } - iVar4 = (param_2 + 3 & 0xffc) * param_3 * 2; - break; - case 2: - iVar4 = 0; - if (0 < param_3) { - do { - uVar1 = 0; - if (0 < (int)param_2) { - puVar5 = param_4; - if ((param_2 & 3) == 0) { - iVar2 = 0; - } - else { - do { - if (param_6 < 0x101) { - *puVar5 = *(int *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 4) << 8 | - 0xff; - } - else { - *puVar5 = *(int *)(param_5 + (uint)puVar3[uVar1] * 4) << 8 | 0xff; - } - uVar1 += 1; - puVar5 = puVar5 + 1; - } while ((param_2 & 3) != uVar1); - iVar2 = uVar1 * 4; - if (uVar1 == param_2) goto LAB_7f0cb07c; - } - puVar5 = (uint *)((int)param_4 + iVar2); - do { - if (param_6 < 0x101) { - *puVar5 = *(int *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 4) << 8 | 0xff; - puVar5[1] = *(int *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 4) << 8 | - 0xff; - puVar5[2] = *(int *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 4) << 8 | - 0xff; - puVar5[3] = *(int *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 4) << 8 | - 0xff; - } - else { - *puVar5 = *(int *)(param_5 + (uint)puVar3[uVar1] * 4) << 8 | 0xff; - puVar5[1] = *(int *)(param_5 + (uint)puVar3[uVar1 + 1] * 4) << 8 | 0xff; - puVar5[2] = *(int *)(param_5 + (uint)puVar3[uVar1 + 2] * 4) << 8 | 0xff; - puVar5[3] = *(int *)(param_5 + (uint)puVar3[uVar1 + 3] * 4) << 8 | 0xff; - } - uVar1 += 4; - puVar5 = puVar5 + 4; - } while (uVar1 != param_2); + iVar4 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); + puStack20 = (ushort *)((int)puStack20 + param_2); + puVar3 = puVar3 + param_2; + } while (iVar4 != param_3); } + iVar4 = (param_2 + 3 & 0xffc) * param_3 * 2; + break; + case 2: + iVar4 = 0; + if (0 < param_3) { + do { + uVar1 = 0; + if (0 < (int)param_2) { + puVar5 = param_4; + if ((param_2 & 3) == 0) { + iVar2 = 0; + } + else { + do { + if (param_6 < 0x101) { + *puVar5 = *(int *)(param_5 + + (uint)*(byte *)((int)puStack20 + uVar1) * 4) << 8 + | 0xff; + } + else { + *puVar5 = *(int *)(param_5 + (uint)puVar3[uVar1] * 4) << 8 | 0xff; + } + uVar1 += 1; + puVar5 = puVar5 + 1; + } while ((param_2 & 3) != uVar1); + iVar2 = uVar1 * 4; + if (uVar1 == param_2) goto LAB_7f0cb07c; + } + puVar5 = (uint *)((int)param_4 + iVar2); + do { + if (param_6 < 0x101) { + *puVar5 = *(int *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 4 + ) << 8 | 0xff; + puVar5[1] = *(int *)(param_5 + + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 4) << + 8 | 0xff; + puVar5[2] = *(int *)(param_5 + + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 4) << + 8 | 0xff; + puVar5[3] = *(int *)(param_5 + + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 4) << + 8 | 0xff; + } + else { + *puVar5 = *(int *)(param_5 + (uint)puVar3[uVar1] * 4) << 8 | 0xff; + puVar5[1] = *(int *)(param_5 + (uint)puVar3[uVar1 + 1] * 4) << 8 | 0xff; + puVar5[2] = *(int *)(param_5 + (uint)puVar3[uVar1 + 2] * 4) << 8 | 0xff; + puVar5[3] = *(int *)(param_5 + (uint)puVar3[uVar1 + 3] * 4) << 8 | 0xff; + } + uVar1 += 4; + puVar5 = puVar5 + 4; + } while (uVar1 != param_2); + } LAB_7f0cb07c: - iVar4 += 1; - param_4 = param_4 + (param_2 + 3 & 0xffc); - puStack20 = (ushort *)((int)puStack20 + param_2); - puVar3 = puVar3 + param_2; - } while (iVar4 != param_3); - } - iVar4 = (param_2 + 3 & 0xffc) * param_3 * 4; - break; - case 3: - iVar4 = 0; - if (0 < param_3) { - do { - uVar1 = 0; - if (0 < (int)param_2) { - if ((param_2 & 1) == 0) { - iVar2 = 0; - } - else { - uVar1 = 1; - if (param_6 < 0x101) { - *(ushort *)param_4 = *(short *)(param_5 + (uint)*(byte *)puStack20 * 2) << 1 | 1; - } - else { - *(ushort *)param_4 = *(short *)(param_5 + (uint)*puVar3 * 2) << 1 | 1; - } - iVar2 = 2; - if (param_2 == 1) goto LAB_7f0cb394; - } - puVar8 = (ushort *)((int)param_4 + iVar2); - do { - if (param_6 < 0x101) { - *puVar8 = *(short *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2) << 1 | 1; - puVar8[1] = *(short *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 2) << 1 - | 1; - } - else { - *puVar8 = *(short *)(param_5 + (uint)*(ushort *)((int)puVar3 + iVar2) * 2) << 1 | 1; - puVar8[1] = *(short *)(param_5 + (uint)*(ushort *)((int)puVar3 + iVar2 + 2) * 2) << 1 - | 1; - } - uVar1 += 2; - iVar2 += 4; - puVar8 = puVar8 + 2; - } while (uVar1 != param_2); + iVar4 += 1; + param_4 = param_4 + (param_2 + 3 & 0xffc); + puStack20 = (ushort *)((int)puStack20 + param_2); + puVar3 = puVar3 + param_2; + } while (iVar4 != param_3); } -LAB_7f0cb394: - iVar4 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); - puStack20 = (ushort *)((int)puStack20 + param_2); - puVar3 = puVar3 + param_2; - } while (iVar4 != param_3); - } - iVar4 = (param_2 + 3 & 0xffc) * param_3 * 2; - break; - case 5: - case 7: - iVar4 = 0; - if (0 < param_3) { - do { - uVar1 = 0; - if (0 < (int)param_2) { - puVar5 = param_4; - if ((param_2 & 3) != 0) { + iVar4 = (param_2 + 3 & 0xffc) * param_3 * 4; + break; + case 3: + iVar4 = 0; + if (0 < param_3) { do { - if (param_6 < 0x101) { - *(char *)puVar5 = - (char)*(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); - } - else { - *(char *)puVar5 = (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1] * 2); - } - uVar1 += 1; - puVar5 = (uint *)((int)puVar5 + 1); - } while ((param_2 & 3) != uVar1); - puVar5 = (uint *)((int)param_4 + uVar1); - if (uVar1 == param_2) goto LAB_7f0cb558; - } - do { - if (param_6 < 0x101) { - *(char *)puVar5 = - (char)*(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); - *(undefined *)((int)puVar5 + 1) = - (char)*(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 2); - *(undefined *)((int)puVar5 + 2) = - (char)*(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 2); - *(undefined *)((int)puVar5 + 3) = - (char)*(undefined2 *)(param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 2); - } - else { - *(char *)puVar5 = (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1] * 2); - *(undefined *)((int)puVar5 + 1) = - (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1 + 1] * 2); - *(undefined *)((int)puVar5 + 2) = - (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1 + 2] * 2); - *(undefined *)((int)puVar5 + 3) = - (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1 + 3] * 2); - } - uVar1 += 4; - puVar5 = puVar5 + 1; - } while (uVar1 != param_2); + uVar1 = 0; + if (0 < (int)param_2) { + if ((param_2 & 1) == 0) { + iVar2 = 0; + } + else { + uVar1 = 1; + if (param_6 < 0x101) { + *(ushort *)param_4 = + *(short *)(param_5 + (uint)*(byte *)puStack20 * 2) << 1 | 1; + } + else { + *(ushort *)param_4 = *(short *)(param_5 + (uint)*puVar3 * 2) << 1 | 1; + } + iVar2 = 2; + if (param_2 == 1) goto LAB_7f0cb394; + } + puVar8 = (ushort *)((int)param_4 + iVar2); + do { + if (param_6 < 0x101) { + *puVar8 = *(short *)(param_5 + + (uint)*(byte *)((int)puStack20 + uVar1) * 2) << 1 | + 1; + puVar8[1] = *(short *)(param_5 + + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 2) + << 1 | 1; + } + else { + *puVar8 = *(short *)(param_5 + + (uint)*(ushort *)((int)puVar3 + iVar2) * 2) << 1 | 1 + ; + puVar8[1] = *(short *)(param_5 + + (uint)*(ushort *)((int)puVar3 + iVar2 + 2) * 2) << + 1 | 1; + } + uVar1 += 2; + iVar2 += 4; + puVar8 = puVar8 + 2; + } while (uVar1 != param_2); + } +LAB_7f0cb394: + iVar4 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 3 & 0xffc) * 2); + puStack20 = (ushort *)((int)puStack20 + param_2); + puVar3 = puVar3 + param_2; + } while (iVar4 != param_3); } + iVar4 = (param_2 + 3 & 0xffc) * param_3 * 2; + break; + case 5: + case 7: + iVar4 = 0; + if (0 < param_3) { + do { + uVar1 = 0; + if (0 < (int)param_2) { + puVar5 = param_4; + if ((param_2 & 3) != 0) { + do { + if (param_6 < 0x101) { + *(char *)puVar5 = + (char)*(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); + } + else { + *(char *)puVar5 = + (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1] * 2); + } + uVar1 += 1; + puVar5 = (uint *)((int)puVar5 + 1); + } while ((param_2 & 3) != uVar1); + puVar5 = (uint *)((int)param_4 + uVar1); + if (uVar1 == param_2) goto LAB_7f0cb558; + } + do { + if (param_6 < 0x101) { + *(char *)puVar5 = + (char)*(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1) * 2); + *(undefined *)((int)puVar5 + 1) = + (char)*(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 1) * 2); + *(undefined *)((int)puVar5 + 2) = + (char)*(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 2) * 2); + *(undefined *)((int)puVar5 + 3) = + (char)*(undefined2 *) + (param_5 + (uint)*(byte *)((int)puStack20 + uVar1 + 3) * 2); + } + else { + *(char *)puVar5 = + (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1] * 2); + *(undefined *)((int)puVar5 + 1) = + (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1 + 1] * 2); + *(undefined *)((int)puVar5 + 2) = + (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1 + 2] * 2); + *(undefined *)((int)puVar5 + 3) = + (char)*(undefined2 *)(param_5 + (uint)puVar3[uVar1 + 3] * 2); + } + uVar1 += 4; + puVar5 = puVar5 + 1; + } while (uVar1 != param_2); + } LAB_7f0cb558: - iVar4 += 1; - param_4 = (uint *)((int)param_4 + (param_2 + 7 & 0xff8)); - puStack20 = (ushort *)((int)puStack20 + param_2); - puVar3 = puVar3 + param_2; - } while (iVar4 != param_3); - } - iVar4 = (param_2 + 7 & 0xff8) * param_3; - break; - case 6: - case 8: - iVar4 = 0; - if (0 < param_3) { - do { - iVar2 = 0; - if (0 < (int)param_2) { - do { - if (param_6 < 0x101) { - *(byte *)((int)param_4 + (iVar2 >> 1)) = - (byte)*(undefined2 *)(param_5 + (uint)((byte *)(iVar2 + (int)puStack20))[1] * 2) - | (char)*(undefined2 *)(param_5 + (uint)*(byte *)(iVar2 + (int)puStack20) * 2) << - 4; - } - else { - *(byte *)((int)param_4 + (iVar2 >> 1)) = - (byte)*(undefined2 *)(param_5 + (uint)(puVar3 + iVar2)[1] * 2) | - (char)*(undefined2 *)(param_5 + (uint)puVar3[iVar2] * 2) << 4; - } - iVar2 += 2; - } while (iVar2 < (int)param_2); + iVar4 += 1; + param_4 = (uint *)((int)param_4 + (param_2 + 7 & 0xff8)); + puStack20 = (ushort *)((int)puStack20 + param_2); + puVar3 = puVar3 + param_2; + } while (iVar4 != param_3); } - iVar4 += 1; - param_4 = (uint *)((int)param_4 + ((int)(param_2 + 0xf & 0xff0) >> 1)); - puStack20 = (ushort *)((int)puStack20 + param_2); - puVar3 = puVar3 + param_2; - } while (iVar4 != param_3); + iVar4 = (param_2 + 7 & 0xff8) * param_3; + break; + case 6: + case 8: + iVar4 = 0; + if (0 < param_3) { + do { + iVar2 = 0; + if (0 < (int)param_2) { + do { + if (param_6 < 0x101) { + *(byte *)((int)param_4 + (iVar2 >> 1)) = + (byte)*(undefined2 *) + (param_5 + (uint)((byte *)(iVar2 + (int)puStack20))[1] * 2) + | (char)*(undefined2 *) + (param_5 + (uint)*(byte *)(iVar2 + (int)puStack20) * 2) << + 4; + } + else { + *(byte *)((int)param_4 + (iVar2 >> 1)) = + (byte)*(undefined2 *)(param_5 + (uint)(puVar3 + iVar2)[1] * 2) | + (char)*(undefined2 *)(param_5 + (uint)puVar3[iVar2] * 2) << 4; + } + iVar2 += 2; + } while (iVar2 < (int)param_2); + } + iVar4 += 1; + param_4 = (uint *)((int)param_4 + ((int)(param_2 + 0xf & 0xff0) >> 1)); + puStack20 = (ushort *)((int)puStack20 + param_2); + puVar3 = puVar3 + param_2; + } while (iVar4 != param_3); + } + iVar4 = ((int)(param_2 + 0xf & 0xff0) >> 1) * param_3; } - iVar4 = ((int)(param_2 + 0xf & 0xff0) >> 1) * param_3; - } - return iVar4; + return iVar4; } @@ -139317,81 +138593,81 @@ LAB_7f0cb558: void proc_7F0CB67C(int param_1,int param_2,int param_3,int param_4) { - undefined4 uVar1; - undefined4 uVar2; - undefined4 *puVar3; - int iVar4; - int iVar5; - undefined4 *puVar6; - uint uStack12; - - switch(param_4) { - case 0: - case 2: - uStack12 = param_2 + 3U & 0xffc; - break; - case 1: - case 3: - case 4: - uStack12 = (int)(param_2 + 3U & 0xffc) >> 1; - break; - case 5: - case 7: - case 9: - case 0xb: - uStack12 = (int)(param_2 + 7U & 0xff8) >> 2; - break; - case 6: - case 8: - case 10: - case 0xc: - uStack12 = (int)(param_2 + 0xfU & 0xff0) >> 3; - } - puVar3 = (undefined4 *)(param_1 + uStack12 * 4); - if ((param_4 == 0) || (param_4 == 2)) { - iVar4 = 1; - if (1 < param_3) { - do { - iVar5 = 0; - puVar6 = puVar3; - if (0 < (int)uStack12) { - do { - uVar1 = puVar6[2]; - puVar6[2] = *puVar6; - uVar2 = puVar6[1]; - iVar5 += 4; - *puVar6 = uVar1; - puVar6[1] = puVar6[3]; - puVar6[3] = uVar2; - puVar6 = puVar6 + 4; - } while (iVar5 < (int)uStack12); - } - iVar4 += 2; - puVar3 = puVar3 + uStack12 * 2; - } while (iVar4 < param_3); + undefined4 uVar1; + undefined4 uVar2; + undefined4 *puVar3; + int iVar4; + int iVar5; + undefined4 *puVar6; + uint uStack12; + + switch(param_4) { + case 0: + case 2: + uStack12 = param_2 + 3U & 0xffc; + break; + case 1: + case 3: + case 4: + uStack12 = (int)(param_2 + 3U & 0xffc) >> 1; + break; + case 5: + case 7: + case 9: + case 0xb: + uStack12 = (int)(param_2 + 7U & 0xff8) >> 2; + break; + case 6: + case 8: + case 10: + case 0xc: + uStack12 = (int)(param_2 + 0xfU & 0xff0) >> 3; } - } - else { - iVar4 = 1; - if (1 < param_3) { - do { - iVar5 = 0; - puVar6 = puVar3; - if (0 < (int)uStack12) { - do { - uVar1 = puVar6[1]; - iVar5 += 2; - puVar6[1] = *puVar6; - *puVar6 = uVar1; - puVar6 = puVar6 + 2; - } while (iVar5 < (int)uStack12); + puVar3 = (undefined4 *)(param_1 + uStack12 * 4); + if ((param_4 == 0) || (param_4 == 2)) { + iVar4 = 1; + if (1 < param_3) { + do { + iVar5 = 0; + puVar6 = puVar3; + if (0 < (int)uStack12) { + do { + uVar1 = puVar6[2]; + puVar6[2] = *puVar6; + uVar2 = puVar6[1]; + iVar5 += 4; + *puVar6 = uVar1; + puVar6[1] = puVar6[3]; + puVar6[3] = uVar2; + puVar6 = puVar6 + 4; + } while (iVar5 < (int)uStack12); + } + iVar4 += 2; + puVar3 = puVar3 + uStack12 * 2; + } while (iVar4 < param_3); } - iVar4 += 2; - puVar3 = puVar3 + uStack12 * 2; - } while (iVar4 < param_3); } - } - return; + else { + iVar4 = 1; + if (1 < param_3) { + do { + iVar5 = 0; + puVar6 = puVar3; + if (0 < (int)uStack12) { + do { + uVar1 = puVar6[1]; + iVar5 += 2; + puVar6[1] = *puVar6; + *puVar6 = uVar1; + puVar6 = puVar6 + 2; + } while (iVar5 < (int)uStack12); + } + iVar4 += 2; + puVar3 = puVar3 + uStack12 * 2; + } while (iVar4 < param_3); + } + } + return; } @@ -139399,127 +138675,130 @@ void proc_7F0CB67C(int param_1,int param_2,int param_3,int param_4) void type8_9_doohick(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) { - int iVar1; - int iVar2; - int iVar3; - int iVar4; - byte *pbVar5; - uint uVar6; - uint uVar7; - uint uVar8; - int iVar9; - - iVar2 = 0; - if (0 < param_3) { - do { - iVar3 = 0; - if (0 < param_2) { - iVar1 = iVar2 * param_2; - pbVar5 = (byte *)(iVar1 + param_1); + int iVar1; + int iVar2; + int iVar3; + int iVar4; + byte *pbVar5; + uint uVar6; + uint uVar7; + uint uVar8; + int iVar9; + + iVar2 = 0; + if (0 < param_3) { do { - iVar4 = (uint)*pbVar5 + param_5 * 2; - if (iVar3 < 1) { - uVar6 = 0; - } - else { - uVar6 = (uint)pbVar5[-1]; - } - uVar7 = 0; - if (0 < iVar2) { - uVar7 = (uint)*(byte *)((iVar2 + -1) * param_2 + iVar3 + param_1); - } - uVar8 = 0; - if ((0 < iVar3) && (0 < iVar2)) { - uVar8 = (uint)*(byte *)((iVar2 + -1) * param_2 + iVar3 + param_1 + -1); - } - switch(param_4) { - case 0: - *(undefined *)(param_1 + iVar1 + iVar3) = (char)((int)(iVar4 + uVar6) % param_5); - if (param_5 == 0) { - trap(0x1c00); + iVar3 = 0; + if (0 < param_2) { + iVar1 = iVar2 * param_2; + pbVar5 = (byte *)(iVar1 + param_1); + do { + iVar4 = (uint)*pbVar5 + param_5 * 2; + if (iVar3 < 1) { + uVar6 = 0; + } + else { + uVar6 = (uint)pbVar5[-1]; + } + uVar7 = 0; + if (0 < iVar2) { + uVar7 = (uint)*(byte *)((iVar2 + -1) * param_2 + iVar3 + param_1); + } + uVar8 = 0; + if ((0 < iVar3) && (0 < iVar2)) { + uVar8 = (uint)*(byte *)((iVar2 + -1) * param_2 + iVar3 + param_1 + -1); + } + switch(param_4) { + case 0: + *(undefined *)(param_1 + iVar1 + iVar3) = + (char)((int)(iVar4 + uVar6) % param_5); + if (param_5 == 0) { + trap(0x1c00); + } + if ((param_5 == -1) && (iVar4 + uVar6 == -0x80000000)) { + trap(0x1800); + } + break; + case 1: + *(undefined *)(param_1 + iVar1 + iVar3) = + (char)((int)(iVar4 + uVar7) % param_5); + if (param_5 == 0) { + trap(0x1c00); + } + if ((param_5 == -1) && (iVar4 + uVar7 == -0x80000000)) { + trap(0x1800); + } + break; + case 2: + *(undefined *)(param_1 + iVar1 + iVar3) = + (char)((int)(iVar4 + uVar8) % param_5); + if (param_5 == 0) { + trap(0x1c00); + } + if ((param_5 == -1) && (iVar4 + uVar8 == -0x80000000)) { + trap(0x1800); + } + break; + case 3: + iVar4 = ((uVar6 + uVar7) - uVar8) + iVar4; + *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); + if (param_5 == 0) { + trap(0x1c00); + } + if ((param_5 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + break; + case 4: + iVar9 = uVar7 - uVar8; + if (iVar9 < 0) { + iVar9 += 1; + } + iVar4 = (iVar9 >> 1) + uVar6 + iVar4; + *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); + if (param_5 == 0) { + trap(0x1c00); + } + if ((param_5 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + break; + case 5: + iVar9 = uVar6 - uVar8; + if (iVar9 < 0) { + iVar9 += 1; + } + iVar4 = (iVar9 >> 1) + uVar7 + iVar4; + *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); + if (param_5 == 0) { + trap(0x1c00); + } + if ((param_5 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + break; + case 6: + iVar9 = uVar6 + uVar7; + if (false) { + iVar9 += 1; + } + iVar4 = (iVar9 >> 1) + iVar4; + *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); + if (param_5 == 0) { + trap(0x1c00); + } + if ((param_5 == -1) && (iVar4 == -0x80000000)) { + trap(0x1800); + } + } + iVar3 += 1; + pbVar5 = pbVar5 + 1; + } while (iVar3 != param_2); } - if ((param_5 == -1) && (iVar4 + uVar6 == -0x80000000)) { - trap(0x1800); - } - break; - case 1: - *(undefined *)(param_1 + iVar1 + iVar3) = (char)((int)(iVar4 + uVar7) % param_5); - if (param_5 == 0) { - trap(0x1c00); - } - if ((param_5 == -1) && (iVar4 + uVar7 == -0x80000000)) { - trap(0x1800); - } - break; - case 2: - *(undefined *)(param_1 + iVar1 + iVar3) = (char)((int)(iVar4 + uVar8) % param_5); - if (param_5 == 0) { - trap(0x1c00); - } - if ((param_5 == -1) && (iVar4 + uVar8 == -0x80000000)) { - trap(0x1800); - } - break; - case 3: - iVar4 = ((uVar6 + uVar7) - uVar8) + iVar4; - *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); - if (param_5 == 0) { - trap(0x1c00); - } - if ((param_5 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - break; - case 4: - iVar9 = uVar7 - uVar8; - if (iVar9 < 0) { - iVar9 += 1; - } - iVar4 = (iVar9 >> 1) + uVar6 + iVar4; - *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); - if (param_5 == 0) { - trap(0x1c00); - } - if ((param_5 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - break; - case 5: - iVar9 = uVar6 - uVar8; - if (iVar9 < 0) { - iVar9 += 1; - } - iVar4 = (iVar9 >> 1) + uVar7 + iVar4; - *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); - if (param_5 == 0) { - trap(0x1c00); - } - if ((param_5 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - break; - case 6: - iVar9 = uVar6 + uVar7; - if (false) { - iVar9 += 1; - } - iVar4 = (iVar9 >> 1) + iVar4; - *(undefined *)(param_1 + iVar1 + iVar3) = (char)(iVar4 % param_5); - if (param_5 == 0) { - trap(0x1c00); - } - if ((param_5 == -1) && (iVar4 == -0x80000000)) { - trap(0x1800); - } - } - iVar3 += 1; - pbVar5 = pbVar5 + 1; - } while (iVar3 != param_2); - } - iVar2 += 1; - } while (iVar2 != param_3); - } - return; + iVar2 += 1; + } while (iVar2 != param_3); + } + return; } @@ -139527,42 +138806,42 @@ void type8_9_doohick(int param_1,int param_2,int param_3,undefined4 param_4,int void proc_7F0CBAF4(int *param_1,int param_2,int param_3) { - *param_1 = param_2; - param_1[1] = param_2 + param_3; - param_1[2] = param_2; - param_1[3] = param_2 + param_3; - return; + *param_1 = param_2; + param_1[1] = param_2 + param_3; + param_1[2] = param_2; + param_1[3] = param_2 + param_3; + return; } -uint * proc_7F0CBB0C(uint param_1,undefined4 *param_2) +uint * proc_7F0CBB0C(uint imageid,undefined4 *buffer) { - uint *puVar1; - uint *puVar2; - uint uVar3; - - if (param_2 == NULL) { - param_2 = &ptr_texture_alloc_start; - puVar1 = DAT_8008c724; - } - else { - puVar1 = (uint *)param_2[1]; - } - puVar2 = (uint *)param_2[3]; - if (puVar2 < puVar1) { - uVar3 = *puVar2; - while( true ) { - if (param_1 == uVar3 >> 0x14) { - return puVar2; - } - puVar2 = puVar2 + 4; - if (puVar1 <= puVar2) break; - uVar3 = *puVar2; + uint *puVar1; + uint *puVar2; + uint uVar3; + + if (buffer == NULL) { + buffer = &ptr_texture_alloc_start; + puVar1 = DAT_8008c724; } - } - return NULL; + else { + puVar1 = (uint *)buffer[1]; + } + puVar2 = (uint *)buffer[3]; + if (puVar2 < puVar1) { + uVar3 = *puVar2; + while( true ) { + if (imageid == uVar3 >> 0x14) { + return puVar2; + } + puVar2 = puVar2 + 4; + if (puVar1 <= puVar2) break; + uVar3 = *puVar2; + } + } + return NULL; } @@ -139570,173 +138849,175 @@ uint * proc_7F0CBB0C(uint param_1,undefined4 *param_2) int proc_7F0CBB64(int param_1) { - return *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8); + return *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8); } -void proc_7F0CBB74(char *param_1,uint *param_2) +void check_load_image_to_buffer(char *image,uint *buffer) { - char cVar1; - - if (*param_1 != -0x48) { - cVar1 = *param_1; - do { - if (cVar1 == -3) { - if (param_1[4] == -0x55) { - if (param_1[5] == -0x33) { - load_image_to_buffer((uint *)(param_1 + 4),param_2); - cVar1 = param_1[8]; - } - else { - cVar1 = param_1[8]; - } + char cVar1; + + if (*image != -0x48) { + cVar1 = *image; + do { + if (cVar1 == -3) { + if (image[4] == -0x55) { + if (image[5] == -0x33) { + load_image_to_buffer((uint *)(image + 4),buffer); + cVar1 = image[8]; + } + else { + cVar1 = image[8]; + } + } + else { + cVar1 = image[8]; + } + } + else { + cVar1 = image[8]; + } + image = image + 8; + } while (cVar1 != -0x48); + } + return; +} + + + +void load_image_to_buffer(uint *image,uint *buffer) + +{ + byte bVar1; + void *pvVar2; + uint *puVar3; + int iVar4; + u32 virttophys_temp; + uint image_load_address; + int img_offset7and0x80; + int img_offset6and0x40; + byte imagebuffer [4000]; + + if (buffer == NULL) { + buffer = &ptr_texture_alloc_start; + } + imageid = *image & 0xffff; + puVar3 = proc_7F0CBB0C(imageid,buffer); + if (puVar3 == NULL) { + osWritebackDCacheAll(); + osInvalDCache(imagebuffer,0x2000); + image_load_address = *(uint *)(image_entries + imageid); + romCopy((char *)imagebuffer,&images + (image_load_address & 0xfffff8), + ((*(uint *)(image_entries + imageid + 1) & 0xffffff) - + (image_load_address & 0xffffff)) + 0x1f & 0xfffffff0); + bVar1 = imagebuffer[image_load_address & 7]; + img_offset7and0x80 = (int)((uint)bVar1 & 0x80) >> 7; + img_offset6and0x40 = (int)((uint)bVar1 & 0x40) >> 6; + if (((img_offset6and0x40 == 0) && (iVar4 = proc_7F0CBB64((int)buffer), iVar4 < 0x10cc)) || + ((img_offset6and0x40 != 0 && (iVar4 = proc_7F0CBB64((int)buffer), iVar4 < 0xa28)))) { + virttophys_temp = osVirtualToPhysical((void *)*buffer); + *image = virttophys_temp; + return; + } + *(short *)((void **)buffer)[2] = (short)imageid; + pvVar2 = ((void **)buffer)[3]; + puVar3 = (uint *)((int)pvVar2 + -0x10); + ((void **)buffer)[2] = (void *)((int)((void **)buffer)[2] + 8); + *(uint **)((void **)buffer + 3) = puVar3; + *(ushort *)puVar3 = (ushort)(imageid << 4) | *(ushort *)puVar3 & 0xf; + *(void **)((int)pvVar2 + -0xc) = ((void **)buffer)[2]; + if (img_offset6and0x40 == 0) { + image_load_address = + process_huffman_compressed_images + (imagebuffer + (image_load_address & 7) + 1,(uint *)((void **)buffer)[2], + img_offset7and0x80,(uint)bVar1 & 0x3f,(int)buffer); } else { - cVar1 = param_1[8]; + image_load_address = + image_related_calls_decompressdata + (imagebuffer + (image_load_address & 7) + 1,(byte *)((void **)buffer)[2], + img_offset7and0x80,(uint)bVar1 & 0x3f,(int)buffer); } - } - else { - cVar1 = param_1[8]; - } - param_1 = param_1 + 8; - } while (cVar1 != -0x48); - } - return; -} - - - -void load_image_to_buffer(uint *param_1,uint *param_2) - -{ - byte bVar1; - void *pvVar2; - uint *puVar3; - int iVar4; - u32 uVar5; - uint uVar6; - int iVar7; - int iVar8; - byte abStack4000 [4000]; - - if (param_2 == NULL) { - param_2 = &ptr_texture_alloc_start; - } - DAT_8008d094 = *param_1 & 0xffff; - puVar3 = proc_7F0CBB0C(DAT_8008d094,param_2); - if (puVar3 == NULL) { - osWritebackDCacheAll(); - osInvalDCache(abStack4000,0x2000); - uVar6 = *(uint *)(image_entries + DAT_8008d094); - romCopy((char *)abStack4000,&images + (uVar6 & 0xfffff8), - ((*(uint *)(image_entries + DAT_8008d094 + 1) & 0xffffff) - (uVar6 & 0xffffff)) + 0x1f & - 0xfffffff0); - bVar1 = abStack4000[uVar6 & 7]; - iVar7 = (int)((uint)bVar1 & 0x80) >> 7; - iVar8 = (int)((uint)bVar1 & 0x40) >> 6; - if (((iVar8 == 0) && (iVar4 = proc_7F0CBB64((int)param_2), iVar4 < 0x10cc)) || - ((iVar8 != 0 && (iVar4 = proc_7F0CBB64((int)param_2), iVar4 < 0xa28)))) { - uVar5 = osVirtualToPhysical((void *)*param_2); - *param_1 = uVar5; - return; + ((void **)buffer)[2] = (void *)((int)((void **)buffer)[2] + image_load_address); + proc_7F0CBB64((int)buffer); } - *(short *)((void **)param_2)[2] = (short)DAT_8008d094; - pvVar2 = ((void **)param_2)[3]; - puVar3 = (uint *)((int)pvVar2 + -0x10); - ((void **)param_2)[2] = (void *)((int)((void **)param_2)[2] + 8); - *(uint **)((void **)param_2 + 3) = puVar3; - *(ushort *)puVar3 = (ushort)(DAT_8008d094 << 4) | *(ushort *)puVar3 & 0xf; - *(void **)((int)pvVar2 + -0xc) = ((void **)param_2)[2]; - if (iVar8 == 0) { - uVar6 = process_huffman_compressed_images - (abStack4000 + (uVar6 & 7) + 1,(uint *)((void **)param_2)[2],iVar7, - (uint)bVar1 & 0x3f,(int)param_2); + virttophys_temp = osVirtualToPhysical((void *)puVar3[1]); + *image = virttophys_temp; + return; +} + + + +void proc_7F0CBE50(object_header *objheader,uint *buffer) + +{ + int *imgoffset; + longlong numentries; + int entry; + int *curoffset; + longlong i; + + numentries = (longlong)objheader->num_image_entries; + imgoffset = (int *)objheader->offset_img_declaration; + i = 0; + if (0 < numentries) { + entry = 0; + curoffset = imgoffset; + do { + if (*curoffset < 0xbb9) { + load_image_to_buffer((uint *)(entry + (int)imgoffset),buffer); + numentries = (longlong)objheader->num_image_entries; + } + i = (longlong)((int)i + 1); + entry += 0xc; + curoffset = curoffset + 3; + } while (i < numentries); } - else { - uVar6 = image_related_calls_decompressdata - (abStack4000 + (uVar6 & 7) + 1,(byte *)((void **)param_2)[2],iVar7, - (uint)bVar1 & 0x3f,(int)param_2); + return; +} + + + +void calls_load_image_to_buffer(uint image,uint *buffer) + +{ + uint uStack4; + + uStack4 = image; + load_image_to_buffer(&uStack4,buffer); + return; +} + + + +void proc_7F0CBF10(undefined *param_1) + +{ + img_curpos = param_1; + img_curdatatable = 0; + img_bitcount = 0; + return; +} + + + +uint proc_7F0CBF2C(uint bits) + +{ + byte bVar1; + + if ((int)img_bitcount < (int)bits) { + do { + img_bitcount += 8; + bVar1 = *img_curpos; + img_curpos = img_curpos + 1; + img_curdatatable = (uint)bVar1 | img_curdatatable << 8; + } while ((int)img_bitcount < (int)bits); } - ((void **)param_2)[2] = (void *)((int)((void **)param_2)[2] + uVar6); - proc_7F0CBB64((int)param_2); - } - uVar5 = osVirtualToPhysical((void *)puVar3[1]); - *param_1 = uVar5; - return; -} - - - -void proc_7F0CBE50(int param_1,uint *param_2) - -{ - int *piVar1; - longlong lVar2; - int iVar3; - int *piVar4; - longlong lVar5; - - lVar2 = (longlong)*(short *)(param_1 + 0x16); - piVar1 = *(int **)(param_1 + 0x18); - lVar5 = 0; - if (0 < lVar2) { - iVar3 = 0; - piVar4 = piVar1; - do { - if (*piVar4 < 0xbb9) { - load_image_to_buffer((uint *)(iVar3 + (int)piVar1),param_2); - lVar2 = (longlong)*(short *)(param_1 + 0x16); - } - lVar5 = (longlong)((int)lVar5 + 1); - iVar3 += 0xc; - piVar4 = piVar4 + 3; - } while (lVar5 < lVar2); - } - return; -} - - - -void proc_7F0CBEE8(uint param_1,uint *param_2) - -{ - uint uStack4; - - uStack4 = param_1; - load_image_to_buffer(&uStack4,param_2); - return; -} - - - -void proc_7F0CBF10(undefined4 param_1) - -{ - DAT_8008d0a0 = param_1; - DAT_8008d0a4 = 0; - DAT_8008d0a8 = 0; - return; -} - - - -uint proc_7F0CBF2C(uint param_1) - -{ - byte bVar1; - - if ((int)DAT_8008d0a8 < (int)param_1) { - do { - DAT_8008d0a8 += 8; - bVar1 = *DAT_8008d0a0; - DAT_8008d0a0 = DAT_8008d0a0 + 1; - DAT_8008d0a4 = (uint)bVar1 | DAT_8008d0a4 << 8; - } while ((int)DAT_8008d0a8 < (int)param_1); - } - DAT_8008d0a8 -= param_1; - return DAT_8008d0a4 >> (DAT_8008d0a8 & 0x1f) & (1 << (param_1 & 0x1f)) - 1U; + img_bitcount -= bits; + return img_curdatatable >> (img_bitcount & 0x1f) & (1 << (bits & 0x1f)) - 1U; } @@ -139744,74 +139025,74 @@ uint proc_7F0CBF2C(uint param_1) void load_prepare_global_image_bank(void) { - uint uVar1; - int iVar2; - - uVar1 = allocate_bytes_in_bank(0x2400,4); - ptr_explosionDL = (char *)(uVar1 + 0xfff & 0xfffff000); - romCopy(ptr_explosionDL,&Globalimagetable,0x1400); - dword_8008D770 = ptr_explosionDL + -0x2000000; - image = (uint *)(ptr_explosionDL + 0xac8); - DAT_8008d0bc = ptr_explosionDL + 0xad4; - DAT_8008d0c0 = ptr_explosionDL + 0xbc4; - DAT_8008d0c4 = ptr_explosionDL + 0xc0c; - DAT_8008d0c8 = ptr_explosionDL + 0xc48; - DAT_8008d0cc = ptr_explosionDL + 0xc54; - DAT_8008d0d0 = ptr_explosionDL + 0xc60; - DAT_8008d0d4 = ptr_explosionDL + 0xc6c; - DAT_8008d0d8 = ptr_explosionDL + 0xc78; - DAT_8008d0dc = ptr_explosionDL + 0xc84; - DAT_8008d0e0 = ptr_explosionDL + 0xc90; - DAT_8008d0e4 = ptr_explosionDL + 0xc9c; - DAT_8008d0e8 = ptr_explosionDL + 0xca8; - DAT_8008d0ec = ptr_explosionDL + 0xcb4; - DAT_8008d0f0 = ptr_explosionDL + 0xcc0; - DAT_8008d0f4 = ptr_explosionDL + 0xccc; - DAT_8008d0f8 = ptr_explosionDL + 0xcd8; - DAT_8008d0fc = ptr_explosionDL + 0xce4; - DAT_8008d100 = ptr_explosionDL + 0xcf0; - DAT_8008d104 = ptr_explosionDL + 0xcfc; - DAT_8008d108 = ptr_explosionDL + 0xd08; - DAT_8008d10c = ptr_explosionDL + 0xd14; - DAT_8008d110 = ptr_explosionDL + 0xd20; - imgcall = ptr_explosionDL + 0xd2c; - DAT_8008d118 = ptr_explosionDL + 0xd38; - DAT_8008d11c = ptr_explosionDL + 0xd44; - DAT_8008d120 = ptr_explosionDL + 0xd5c; - DAT_8008d124 = ptr_explosionDL + 0xfb4; - DAT_8008d128 = ptr_explosionDL + 0xfd8; - DAT_8008d12c = ptr_explosionDL + 0x1020; - DAT_8008d130 = ptr_explosionDL + 0x102c; - DAT_8008d134 = ptr_explosionDL + 0x132c; - proc_7F0CBB74(ptr_explosionDL,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000078,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000120,NULL); - proc_7F0CBB74(dword_8008D770 + 0x20001c8,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000270,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000318,NULL); - proc_7F0CBB74(dword_8008D770 + 0x20003c0,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000468,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000510,NULL); - proc_7F0CBB74(dword_8008D770 + 0x20005b8,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000660,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000708,NULL); - proc_7F0CBB74(dword_8008D770 + 0x20007b0,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000858,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000900,NULL); - proc_7F0CBB74(dword_8008D770 + 0x20009a8,NULL); - proc_7F0CBB74(dword_8008D770 + 0x2000a50,NULL); - load_image_to_buffer(image,NULL); - iVar2 = 0; - do { - load_image_to_buffer((uint *)(DAT_8008d0c0 + iVar2),NULL); - iVar2 += 0xc; - } while (iVar2 < 0x48); - iVar2 = 0; - do { - load_image_to_buffer((uint *)(DAT_8008d0c4 + iVar2),NULL); - iVar2 += 0xc; - } while (iVar2 != 0x3c); - return; + uint uVar1; + int i; + + uVar1 = mempAllocBytesInBank(0x2400,'\x04'); + pGlobalimagetable = (sGlobalImageTable *)(uVar1 + 0xfff & 0xfffff000); + romCopy((char *)pGlobalimagetable,(char *)&Globalimagetable,0x1400); + base_image_block_address = pGlobalimagetable[-0x19a4].field_0x270 + 0x70; + genericimage = pGlobalimagetable->genericimage; + impactimages = pGlobalimagetable->impactimages; + explosion_smokeimages = pGlobalimagetable->explosion_smokeimages; + scattered_explosions = pGlobalimagetable->scattered_explosions; + flareimage1 = pGlobalimagetable->flareimage1; + flareimage2 = pGlobalimagetable->flareimage2; + flareimage3 = pGlobalimagetable->flareimage3; + flareimage4 = pGlobalimagetable->flareimage4; + flareimage5 = pGlobalimagetable->flareimage5; + 9mmammoimage = pGlobalimagetable->ammo9mmimage; + rifleammoimage = pGlobalimagetable->rifleammoimage; + shotgunammoimage = pGlobalimagetable->shotgunammoimage; + knifeammoimage = pGlobalimagetable->knifeammoimage; + glammoimage = pGlobalimagetable->glammoimage; + rocketammoimage = pGlobalimagetable->rocketammoimage; + genericmineammoimage = pGlobalimagetable->genericmineammoimage; + grenadeammoimage = pGlobalimagetable->grenadeammoimage; + magnumammoimage = pGlobalimagetable->magnumammoimage; + goldengunammoimage = pGlobalimagetable->goldengunammoimage; + remotemineammoimage = pGlobalimagetable->remotemineammoimage; + timedmineammoimage = pGlobalimagetable->timedmineammoimage; + proxmineammoimage = pGlobalimagetable->proxmineammoimage; + tankammoimage = pGlobalimagetable->tankammoimage; + crosshairimage = pGlobalimagetable->crosshairimage; + betacrosshairimage = pGlobalimagetable->betacrosshairimage; + glassoverlayimage = pGlobalimagetable->glassoverlayimage; + monitorimages = pGlobalimagetable->monitorimages; + skywaterimages = pGlobalimagetable->skywaterimages; + mainfolderimages = pGlobalimagetable->mainfolderimages; + mpradarimages = pGlobalimagetable->mpradarimages; + mpcharselimages = pGlobalimagetable->mpcharselimages; + mpstageselimages = pGlobalimagetable->mpstageselimages; + check_load_image_to_buffer((char *)pGlobalimagetable,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000078,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000120,NULL); + check_load_image_to_buffer(base_image_block_address + 0x20001c8,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000270,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000318,NULL); + check_load_image_to_buffer(base_image_block_address + 0x20003c0,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000468,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000510,NULL); + check_load_image_to_buffer(base_image_block_address + 0x20005b8,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000660,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000708,NULL); + check_load_image_to_buffer(base_image_block_address + 0x20007b0,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000858,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000900,NULL); + check_load_image_to_buffer(base_image_block_address + 0x20009a8,NULL); + check_load_image_to_buffer(base_image_block_address + 0x2000a50,NULL); + load_image_to_buffer((uint *)genericimage,NULL); + i = 0; + do { + load_image_to_buffer((uint *)((int)&explosion_smokeimages->index + i),NULL); + i += 0xc; + } while (i < 0x48); + i = 0; + do { + load_image_to_buffer((uint *)((int)&scattered_explosions->index + i),NULL); + i += 0xc; + } while (i != 0x3c); + return; } @@ -139819,7 +139100,7 @@ void load_prepare_global_image_bank(void) void proc_7F0CC4C0(void) { - return; + return; } @@ -139827,26 +139108,26 @@ void proc_7F0CC4C0(void) void proc_7F0CC4C8(void) { - undefined4 *puVar1; - undefined4 *puVar2; - - puVar1 = &DAT_8008d148; - puVar2 = &DAT_8008d2a8; - do { - puVar2 = puVar2 + 0x14; - puVar1[0xb] = 0; - puVar2[5] = 0; - puVar1[0x16] = 0; - puVar2[10] = 0; - puVar1[0x21] = 0; - puVar2[0xf] = 0; - *puVar1 = 0; - *puVar2 = 0; - puVar1 = puVar1 + 0x2c; - puVar2 = puVar2; - } while (puVar2 != (undefined4 *)&DAT_8008d348); - DAT_8008d140 = 0xffffffff; - return; + undefined4 *puVar1; + undefined4 *puVar2; + + puVar1 = &DAT_8008d148; + puVar2 = &DAT_8008d2a8; + do { + puVar2 = puVar2 + 0x14; + puVar1[0xb] = 0; + puVar2[5] = 0; + puVar1[0x16] = 0; + puVar2[10] = 0; + puVar1[0x21] = 0; + puVar2[0xf] = 0; + *puVar1 = 0; + *puVar2 = 0; + puVar1 = puVar1 + 0x2c; + puVar2 = puVar2; + } while (puVar2 != (undefined4 *)&DAT_8008d348); + DAT_8008d140 = 0xffffffff; + return; } @@ -139854,23 +139135,23 @@ void proc_7F0CC4C8(void) undefined * proc_7F0CC51C(undefined *param_1,int param_2,undefined *param_3) { - undefined uVar1; - undefined *puVar2; - undefined *puVar3; - - puVar3 = param_3; - puVar2 = param_3; - if (0 < param_2) { - do { - uVar1 = *param_1; - param_2 += -1; - puVar3 = puVar2 + 1; - param_1 = param_1 + 1; - *puVar2 = uVar1; - puVar2 = puVar3; - } while (0 < param_2); - } - return puVar3 + -(int)param_3; + undefined uVar1; + undefined *puVar2; + undefined *puVar3; + + puVar3 = param_3; + puVar2 = param_3; + if (0 < param_2) { + do { + uVar1 = *param_1; + param_2 += -1; + puVar3 = puVar2 + 1; + param_1 = param_1 + 1; + *puVar2 = uVar1; + puVar2 = puVar3; + } while (0 < param_2); + } + return puVar3 + -(int)param_3; } @@ -139878,11 +139159,11 @@ undefined * proc_7F0CC51C(undefined *param_1,int param_2,undefined *param_3) undefined8 proc_7F0CC548(int param_1) { - if (param_1 != DAT_8008d140) { - DAT_8008d140 = param_1; - return 1; - } - return 0; + if (param_1 != DAT_8008d140) { + DAT_8008d140 = param_1; + return 1; + } + return 0; } @@ -139892,34 +139173,35 @@ proc_7F0CC574(int param_1,int param_2,int param_3,int param_4,int param_5,int pa int param_8,int param_9,int param_10,int param_11) { - undefined8 uVar1; - int iVar2; - - iVar2 = param_1 * 0x2c; - uVar1 = 0; - if (((((((&DAT_8008d148)[param_1 * 0xb] == 0) || (param_2 != *(int *)(&DAT_8008d14c + iVar2))) || - (param_3 != *(int *)(&DAT_8008d150 + iVar2))) || - ((param_4 != *(int *)(&DAT_8008d154 + iVar2) || (param_5 != *(int *)(&DAT_8008d158 + iVar2))) - )) || ((param_6 != *(int *)(&DAT_8008d15c + iVar2) || - ((param_7 != *(int *)(&DAT_8008d160 + iVar2) || - (param_8 != *(int *)(&DAT_8008d164 + iVar2))))))) || - ((param_9 != *(int *)(&DAT_8008d168 + iVar2) || - ((param_10 != *(int *)(&DAT_8008d16c + iVar2) || (param_11 != *(int *)(&DAT_8008d170 + iVar2)) - ))))) { - uVar1 = 1; - (&DAT_8008d148)[param_1 * 0xb] = 1; - *(int *)(&DAT_8008d14c + iVar2) = param_2; - *(int *)(&DAT_8008d150 + iVar2) = param_3; - *(int *)(&DAT_8008d154 + iVar2) = param_4; - *(int *)(&DAT_8008d158 + iVar2) = param_5; - *(int *)(&DAT_8008d15c + iVar2) = param_6; - *(int *)(&DAT_8008d160 + iVar2) = param_7; - *(int *)(&DAT_8008d164 + iVar2) = param_8; - *(int *)(&DAT_8008d168 + iVar2) = param_9; - *(int *)(&DAT_8008d16c + iVar2) = param_10; - *(int *)(&DAT_8008d170 + iVar2) = param_11; - } - return uVar1; + undefined8 uVar1; + int iVar2; + + iVar2 = param_1 * 0x2c; + uVar1 = 0; + if (((((((&DAT_8008d148)[param_1 * 0xb] == 0) || (param_2 != *(int *)(&DAT_8008d14c + iVar2))) + || (param_3 != *(int *)(&DAT_8008d150 + iVar2))) || + ((param_4 != *(int *)(&DAT_8008d154 + iVar2) || + (param_5 != *(int *)(&DAT_8008d158 + iVar2))))) || + ((param_6 != *(int *)(&DAT_8008d15c + iVar2) || + ((param_7 != *(int *)(&DAT_8008d160 + iVar2) || + (param_8 != *(int *)(&DAT_8008d164 + iVar2))))))) || + ((param_9 != *(int *)(&DAT_8008d168 + iVar2) || + ((param_10 != *(int *)(&DAT_8008d16c + iVar2) || + (param_11 != *(int *)(&DAT_8008d170 + iVar2))))))) { + uVar1 = 1; + (&DAT_8008d148)[param_1 * 0xb] = 1; + *(int *)(&DAT_8008d14c + iVar2) = param_2; + *(int *)(&DAT_8008d150 + iVar2) = param_3; + *(int *)(&DAT_8008d154 + iVar2) = param_4; + *(int *)(&DAT_8008d158 + iVar2) = param_5; + *(int *)(&DAT_8008d15c + iVar2) = param_6; + *(int *)(&DAT_8008d160 + iVar2) = param_7; + *(int *)(&DAT_8008d164 + iVar2) = param_8; + *(int *)(&DAT_8008d168 + iVar2) = param_9; + *(int *)(&DAT_8008d16c + iVar2) = param_10; + *(int *)(&DAT_8008d170 + iVar2) = param_11; + } + return uVar1; } @@ -139927,23 +139209,23 @@ proc_7F0CC574(int param_1,int param_2,int param_3,int param_4,int param_5,int pa undefined8 proc_7F0CC690(int param_1,int param_2,int param_3,int param_4,int param_5) { - int iVar1; - undefined8 uVar2; - - iVar1 = param_1 * 0x14; - uVar2 = 0; - if (((((&DAT_8008d2a8)[param_1 * 5] == 0) || (param_2 != *(int *)(&DAT_8008d2ac + iVar1))) || - (param_3 != *(int *)(&DAT_8008d2b0 + iVar1))) || - ((param_4 != *(int *)(&DAT_8008d2b4 + iVar1) || (param_5 != *(int *)(&DAT_8008d2b8 + iVar1))))) - { - uVar2 = 1; - (&DAT_8008d2a8)[param_1 * 5] = 1; - *(int *)(&DAT_8008d2ac + iVar1) = param_2; - *(int *)(&DAT_8008d2b0 + iVar1) = param_3; - *(int *)(&DAT_8008d2b4 + iVar1) = param_4; - *(int *)(&DAT_8008d2b8 + iVar1) = param_5; - } - return uVar2; + int iVar1; + undefined8 uVar2; + + iVar1 = param_1 * 0x14; + uVar2 = 0; + if (((((&DAT_8008d2a8)[param_1 * 5] == 0) || (param_2 != *(int *)(&DAT_8008d2ac + iVar1))) || + (param_3 != *(int *)(&DAT_8008d2b0 + iVar1))) || + ((param_4 != *(int *)(&DAT_8008d2b4 + iVar1) || (param_5 != *(int *)(&DAT_8008d2b8 + iVar1))) + )) { + uVar2 = 1; + (&DAT_8008d2a8)[param_1 * 5] = 1; + *(int *)(&DAT_8008d2ac + iVar1) = param_2; + *(int *)(&DAT_8008d2b0 + iVar1) = param_3; + *(int *)(&DAT_8008d2b4 + iVar1) = param_4; + *(int *)(&DAT_8008d2b8 + iVar1) = param_5; + } + return uVar2; } @@ -139951,46 +139233,46 @@ undefined8 proc_7F0CC690(int param_1,int param_2,int param_3,int param_4,int par ulonglong proc_7F0CC714(uint *param_1,ulonglong param_2) { - ulonglong uVar1; - int iVar3; - ulonglong uVar2; - short *psVar4; - - uVar1 = (ulonglong)*(byte *)(param_1 + 2); - if (param_2 == 0) { - return uVar1; - } - if (-1 < (int)(param_1[3] << 2)) { - uVar2 = 0; - if (0 < (longlong)param_2) { - if ((param_2 & 3) != 0) { - do { - uVar1 = SEXT48((int)uVar1 + 1 >> 1); - uVar2 = SEXT48((int)uVar2 + 1); - } while ((param_2 & 3) != uVar2); - if (uVar2 == param_2) { - return uVar1; - } - } - do { - uVar1 = SEXT48(((((int)uVar1 + 1 >> 1) + 1 >> 1) + 1 >> 1) + 1 >> 1); - uVar2 = SEXT48((int)uVar2 + 4); - } while (uVar2 != param_2); + ulonglong uVar1; + int iVar3; + ulonglong uVar2; + short *psVar4; + + uVar1 = (ulonglong)*(byte *)(param_1 + 2); + if (param_2 == 0) { + return uVar1; } - return uVar1; - } - iVar3 = 0; - if (0 < DAT_8008d090) { - psVar4 = &DAT_8008c730; - do { - if ((longlong)(int)(*param_1 >> 0x14) == (longlong)*psVar4) { - return (ulonglong)*(byte *)((int)&DAT_8008c730 + iVar3 * 0x10 + (int)param_2 + 1); - } - iVar3 += 1; - psVar4 = psVar4 + 8; - } while (iVar3 < DAT_8008d090); - } - return 1; + if (-1 < (int)(param_1[3] << 2)) { + uVar2 = 0; + if (0 < (longlong)param_2) { + if ((param_2 & 3) != 0) { + do { + uVar1 = SEXT48((int)uVar1 + 1 >> 1); + uVar2 = SEXT48((int)uVar2 + 1); + } while ((param_2 & 3) != uVar2); + if (uVar2 == param_2) { + return uVar1; + } + } + do { + uVar1 = SEXT48(((((int)uVar1 + 1 >> 1) + 1 >> 1) + 1 >> 1) + 1 >> 1); + uVar2 = SEXT48((int)uVar2 + 4); + } while (uVar2 != param_2); + } + return uVar1; + } + iVar3 = 0; + if (0 < DAT_8008d090) { + psVar4 = &DAT_8008c730; + do { + if ((longlong)(int)(*param_1 >> 0x14) == (longlong)*psVar4) { + return (ulonglong)*(byte *)((int)&DAT_8008c730 + iVar3 * 0x10 + (int)param_2 + 1); + } + iVar3 += 1; + psVar4 = psVar4 + 8; + } while (iVar3 < DAT_8008d090); + } + return 1; } @@ -139998,46 +139280,46 @@ ulonglong proc_7F0CC714(uint *param_1,ulonglong param_2) ulonglong proc_7F0CC7FC(uint *param_1,ulonglong param_2) { - ulonglong uVar1; - int iVar3; - ulonglong uVar2; - short *psVar4; - - uVar1 = (ulonglong)*(byte *)((int)param_1 + 9); - if (param_2 == 0) { - return uVar1; - } - if (-1 < (int)(param_1[3] << 2)) { - uVar2 = 0; - if (0 < (longlong)param_2) { - if ((param_2 & 3) != 0) { - do { - uVar1 = SEXT48((int)uVar1 + 1 >> 1); - uVar2 = SEXT48((int)uVar2 + 1); - } while ((param_2 & 3) != uVar2); - if (uVar2 == param_2) { - return uVar1; - } - } - do { - uVar1 = SEXT48(((((int)uVar1 + 1 >> 1) + 1 >> 1) + 1 >> 1) + 1 >> 1); - uVar2 = SEXT48((int)uVar2 + 4); - } while (uVar2 != param_2); + ulonglong uVar1; + int iVar3; + ulonglong uVar2; + short *psVar4; + + uVar1 = (ulonglong)*(byte *)((int)param_1 + 9); + if (param_2 == 0) { + return uVar1; } - return uVar1; - } - iVar3 = 0; - if (0 < DAT_8008d090) { - psVar4 = &DAT_8008c730; - do { - if ((longlong)(int)(*param_1 >> 0x14) == (longlong)*psVar4) { - return (ulonglong)(byte)(&DAT_8008c738)[iVar3 * 0x10 + (int)param_2]; - } - iVar3 += 1; - psVar4 = psVar4 + 8; - } while (iVar3 < DAT_8008d090); - } - return 1; + if (-1 < (int)(param_1[3] << 2)) { + uVar2 = 0; + if (0 < (longlong)param_2) { + if ((param_2 & 3) != 0) { + do { + uVar1 = SEXT48((int)uVar1 + 1 >> 1); + uVar2 = SEXT48((int)uVar2 + 1); + } while ((param_2 & 3) != uVar2); + if (uVar2 == param_2) { + return uVar1; + } + } + do { + uVar1 = SEXT48(((((int)uVar1 + 1 >> 1) + 1 >> 1) + 1 >> 1) + 1 >> 1); + uVar2 = SEXT48((int)uVar2 + 4); + } while (uVar2 != param_2); + } + return uVar1; + } + iVar3 = 0; + if (0 < DAT_8008d090) { + psVar4 = &DAT_8008c730; + do { + if ((longlong)(int)(*param_1 >> 0x14) == (longlong)*psVar4) { + return (ulonglong)(byte)(&DAT_8008c738)[iVar3 * 0x10 + (int)param_2]; + } + iVar3 += 1; + psVar4 = psVar4 + 8; + } while (iVar3 < DAT_8008d090); + } + return 1; } @@ -140045,47 +139327,47 @@ ulonglong proc_7F0CC7FC(uint *param_1,ulonglong param_2) int proc_7F0CC8E4(uint *param_1,ulonglong param_2) { - ulonglong uVar1; - int iVar2; - int iVar3; - uint uVar4; - - uVar4 = param_1[2] & 3; - uVar1 = proc_7F0CC714(param_1,param_2); - iVar2 = (int)uVar1; - if (uVar4 == 3) { - iVar3 = iVar2 + 3; - if (iVar3 < 0) { - iVar3 = iVar2 + 6; - } - iVar3 >>= 2; - } - else { - iVar3 = iVar2 + 3; - if (uVar4 == 2) { - if (iVar3 < 0) { - iVar3 = iVar2 + 6; - } - iVar3 >>= 2; + ulonglong uVar1; + int iVar2; + int iVar3; + uint uVar4; + + uVar4 = param_1[2] & 3; + uVar1 = proc_7F0CC714(param_1,param_2); + iVar2 = (int)uVar1; + if (uVar4 == 3) { + iVar3 = iVar2 + 3; + if (iVar3 < 0) { + iVar3 = iVar2 + 6; + } + iVar3 >>= 2; } else { - iVar3 = iVar2 + 0xf; - if (uVar4 == 1) { - iVar3 = iVar2 + 7; - if (iVar3 < 0) { - iVar3 = iVar2 + 0xe; + iVar3 = iVar2 + 3; + if (uVar4 == 2) { + if (iVar3 < 0) { + iVar3 = iVar2 + 6; + } + iVar3 >>= 2; } - iVar3 >>= 3; - } - else { - if (iVar3 < 0) { - iVar3 = iVar2 + 0x1e; + else { + iVar3 = iVar2 + 0xf; + if (uVar4 == 1) { + iVar3 = iVar2 + 7; + if (iVar3 < 0) { + iVar3 = iVar2 + 0xe; + } + iVar3 >>= 3; + } + else { + if (iVar3 < 0) { + iVar3 = iVar2 + 0x1e; + } + iVar3 >>= 4; + } } - iVar3 >>= 4; - } } - } - return iVar3; + return iVar3; } @@ -140093,12 +139375,12 @@ int proc_7F0CC8E4(uint *param_1,ulonglong param_2) int proc_7F0CC994(uint *param_1,ulonglong param_2) { - ulonglong uVar1; - int iVar2; - - uVar1 = proc_7F0CC7FC(param_1,param_2); - iVar2 = proc_7F0CC8E4(param_1,(longlong)(int)param_2); - return iVar2 * (int)uVar1; + ulonglong uVar1; + int iVar2; + + uVar1 = proc_7F0CC7FC(param_1,param_2); + iVar2 = proc_7F0CC8E4(param_1,(longlong)(int)param_2); + return iVar2 * (int)uVar1; } @@ -140106,42 +139388,42 @@ int proc_7F0CC994(uint *param_1,ulonglong param_2) void proc_7F0CC9D4(uint *param_1,undefined4 *param_2,int *param_3) { - int iVar1; - uint uVar2; - ulonglong uVar3; - ulonglong uVar4; - - uVar2 = param_1[2] & 3; - uVar3 = SEXT48((int)(uint)(*(byte *)((int)param_1 + 0xb) >> 5)); - if (uVar3 == 0) { - uVar3 = 1; - } - *param_3 = 0; - if (uVar2 == 3) { - *param_2 = 3; - } - else { - if (uVar2 == 2) { - *param_2 = 2; + int iVar1; + uint uVar2; + ulonglong uVar3; + ulonglong uVar4; + + uVar2 = param_1[2] & 3; + uVar3 = SEXT48((int)(uint)(*(byte *)((int)param_1 + 0xb) >> 5)); + if (uVar3 == 0) { + uVar3 = 1; + } + *param_3 = 0; + if (uVar2 == 3) { + *param_2 = 3; } else { - if (uVar2 == 1) { - *param_2 = 2; - } - else { - *param_2 = 2; - } + if (uVar2 == 2) { + *param_2 = 2; + } + else { + if (uVar2 == 1) { + *param_2 = 2; + } + else { + *param_2 = 2; + } + } } - } - uVar4 = 0; - if (uVar3 != 0) { - do { - iVar1 = proc_7F0CC994(param_1,uVar4); - uVar4 = SEXT48((int)uVar4 + 1); - *param_3 = *param_3 + iVar1 * 4; - } while (uVar4 != uVar3); - } - return; + uVar4 = 0; + if (uVar3 != 0) { + do { + iVar1 = proc_7F0CC994(param_1,uVar4); + uVar4 = SEXT48((int)uVar4 + 1); + *param_3 = *param_3 + iVar1 * 4; + } while (uVar4 != uVar3); + } + return; } @@ -140149,20 +139431,20 @@ void proc_7F0CC9D4(uint *param_1,undefined4 *param_2,int *param_3) int proc_7F0CCA9C(int param_1) { - int iVar1; - - param_1 += -1; - iVar1 = 0; - if (0 < param_1) { - do { - param_1 >>= 1; - iVar1 += 1; - if (param_1 < 1) { - return iVar1; - } - } while (iVar1 != 8); - } - return iVar1; + int iVar1; + + param_1 += -1; + iVar1 = 0; + if (0 < param_1) { + do { + param_1 >>= 1; + iVar1 += 1; + if (param_1 < 1) { + return iVar1; + } + } while (iVar1 != 8); + } + return iVar1; } @@ -140170,13 +139452,13 @@ int proc_7F0CCA9C(int param_1) undefined8 proc_7F0CCACC(longlong param_1) { - if (param_1 == 1) { - return 2; - } - if (param_1 == 2) { - return 1; - } - return 0; + if (param_1 == 1) { + return 2; + } + if (param_1 == 2) { + return 1; + } + return 0; } @@ -140184,13 +139466,13 @@ undefined8 proc_7F0CCACC(longlong param_1) int proc_7F0CCAFC(float param_1) { - int iVar1; - - iVar1 = (int)param_1; - if (param_1 <= (float)iVar1) { - return iVar1; - } - return iVar1 + 1; + int iVar1; + + iVar1 = (int)param_1; + if (param_1 <= (float)iVar1) { + return iVar1; + } + return iVar1 + 1; } @@ -140198,28 +139480,28 @@ int proc_7F0CCAFC(float param_1) int proc_7F0CCB38(uint *param_1) { - int iVar1; - uint uVar2; - - iVar1 = proc_7F0CC8E4(param_1,0); - uVar2 = param_1[2] & 3; - if (uVar2 == 3) { - iVar1 = proc_7F0CCAFC((2.00000000 / (float)(iVar1 << 2)) * 2048.00000000); - } - else { - if (uVar2 == 2) { - iVar1 = proc_7F0CCAFC((4.00000000 / (float)(iVar1 << 2)) * 2048.00000000); + int iVar1; + uint uVar2; + + iVar1 = proc_7F0CC8E4(param_1,0); + uVar2 = param_1[2] & 3; + if (uVar2 == 3) { + iVar1 = proc_7F0CCAFC((2.00000000 / (float)(iVar1 << 2)) * 2048.00000000); } else { - if (uVar2 == 1) { - iVar1 = proc_7F0CCAFC((8.00000000 / (float)(iVar1 << 3)) * 2048.00000000); - } - else { - iVar1 = proc_7F0CCAFC((16.00000000 / (float)(iVar1 << 4)) * 2048.00000000); - } + if (uVar2 == 2) { + iVar1 = proc_7F0CCAFC((4.00000000 / (float)(iVar1 << 2)) * 2048.00000000); + } + else { + if (uVar2 == 1) { + iVar1 = proc_7F0CCAFC((8.00000000 / (float)(iVar1 << 3)) * 2048.00000000); + } + else { + iVar1 = proc_7F0CCAFC((16.00000000 / (float)(iVar1 << 4)) * 2048.00000000); + } + } } - } - return iVar1; + return iVar1; } @@ -140227,96 +139509,97 @@ int proc_7F0CCB38(uint *param_1) uint * proc_7F0CCC50(uint *param_1,uint *param_2,int param_3,uint param_4,uint param_5,uint param_6) { - int iVar4; - int iVar5; - uint uVar6; - longlong lVar1; - undefined8 uVar2; - undefined8 uVar3; - uint uVar7; - uint uVar8; - uint *puVar9; - uint *puVar10; - - uVar7 = *param_2 >> 0x14; - iVar4 = proc_7F0CCA9C((uint)*(byte *)(param_2 + 2)); - iVar5 = proc_7F0CCA9C((uint)*(byte *)((int)param_2 + 9)); - uVar6 = proc_7F0CC8E4(param_2,0); - param_1[1] = 0xffffffff; - *param_1 = (param_6 & 0xff) << 8 | 0xfa000000; - puVar9 = param_1 + 2; - lVar1 = proc_7F0CC548((param_2[3] >> 0x1e) << 0xe); - if (lVar1 != 0) { - *puVar9 = 0xba000e02; - puVar9 = param_1 + 4; - param_1[3] = (param_2[3] >> 0x1e) << 0xe; - } - lVar1 = proc_7F0CC574(0,(param_2[2] << 0x1b) >> 0x1d,param_2[2] & 3,uVar6, - (*(uint *)&image_entries[uVar7].flag3 >> 0x1c) + - uVar6 * ((uint)(byte)image_entries[uVar7].flag3 & 0xf),0,0, - iVar4 - (uint)((byte)image_entries[uVar7].flag4 >> 4), - iVar5 - ((uint)*(ushort *)&image_entries[uVar7].flag3 & 0xf),param_4,param_5 - ); - puVar10 = puVar9; - if (lVar1 != 0) { - *puVar9 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (param_2[2] & 3) << 0x13 | - (uVar6 & 0x1ff) << 9 | - (*(uint *)&image_entries[uVar7].flag3 >> 0x1c) + - uVar6 * ((uint)(byte)image_entries[uVar7].flag3 & 0xf) & 0x1ff; - puVar10 = puVar9 + 2; - uVar2 = proc_7F0CCACC(0); - uVar3 = proc_7F0CCACC(0); - puVar9[1] = ((uint)uVar3 & 3) << 8 | ((uint)uVar2 & 3) << 0x12 | - (iVar5 - (uint)*(ushort *)&image_entries[uVar7].flag3 & 0xf) << 0xe | - (param_5 & 0xf) << 10 | - (iVar4 - (uint)((byte)image_entries[uVar7].flag4 >> 4) & 0xf) << 4 | param_4 & 0xf; - } - iVar4 = 0; - if ((param_3 == 2) && (-1 < (int)(param_2[3] << 2))) { - iVar4 = 2; - } - if (param_3 == 2) { - if ((int)(param_2[3] << 2) < 0) { - uVar6 = 0; + int iVar4; + int iVar5; + uint uVar6; + longlong lVar1; + undefined8 uVar2; + undefined8 uVar3; + uint uVar7; + uint uVar8; + uint *puVar9; + uint *puVar10; + + uVar7 = *param_2 >> 0x14; + iVar4 = proc_7F0CCA9C((uint)*(byte *)(param_2 + 2)); + iVar5 = proc_7F0CCA9C((uint)*(byte *)((int)param_2 + 9)); + uVar6 = proc_7F0CC8E4(param_2,0); + param_1[1] = 0xffffffff; + *param_1 = (param_6 & 0xff) << 8 | 0xfa000000; + puVar9 = param_1 + 2; + lVar1 = proc_7F0CC548((param_2[3] >> 0x1e) << 0xe); + if (lVar1 != 0) { + *puVar9 = 0xba000e02; + puVar9 = param_1 + 4; + param_1[3] = (param_2[3] >> 0x1e) << 0xe; + } + lVar1 = proc_7F0CC574(0,(param_2[2] << 0x1b) >> 0x1d,param_2[2] & 3,uVar6, + (*(uint *)&image_entries[uVar7].flag3 >> 0x1c) + + uVar6 * ((uint)(byte)image_entries[uVar7].flag3 & 0xf),0,0, + iVar4 - (uint)((byte)image_entries[uVar7].flag4 >> 4), + iVar5 - ((uint)*(ushort *)&image_entries[uVar7].flag3 & 0xf),param_4, + param_5); + puVar10 = puVar9; + if (lVar1 != 0) { + *puVar9 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (param_2[2] & 3) << 0x13 | + (uVar6 & 0x1ff) << 9 | + (*(uint *)&image_entries[uVar7].flag3 >> 0x1c) + + uVar6 * ((uint)(byte)image_entries[uVar7].flag3 & 0xf) & 0x1ff; + puVar10 = puVar9 + 2; + uVar2 = proc_7F0CCACC(0); + uVar3 = proc_7F0CCACC(0); + puVar9[1] = ((uint)uVar3 & 3) << 8 | ((uint)uVar2 & 3) << 0x12 | + (iVar5 - (uint)*(ushort *)&image_entries[uVar7].flag3 & 0xf) << 0xe | + (param_5 & 0xf) << 10 | + (iVar4 - (uint)((byte)image_entries[uVar7].flag4 >> 4) & 0xf) << 4 | + param_4 & 0xf; + } + iVar4 = 0; + if ((param_3 == 2) && (-1 < (int)(param_2[3] << 2))) { + iVar4 = 2; + } + if (param_3 == 2) { + if ((int)(param_2[3] << 2) < 0) { + uVar6 = 0; + } + else { + uVar6 = 2; + } } else { - uVar6 = 2; + uVar6 = 0; } - } - else { - uVar6 = 0; - } - if (param_3 == 2) { - if ((int)(param_2[3] << 2) < 0) { - iVar5 = 0; + if (param_3 == 2) { + if ((int)(param_2[3] << 2) < 0) { + iVar5 = 0; + } + else { + iVar5 = 2; + } } else { - iVar5 = 2; + iVar5 = 0; } - } - else { - iVar5 = 0; - } - uVar7 = iVar5 + ((uint)*(byte *)(param_2 + 2) - 1) * 4; - if (param_3 == 2) { - if ((int)(param_2[3] << 2) < 0) { - iVar5 = 0; + uVar7 = iVar5 + ((uint)*(byte *)(param_2 + 2) - 1) * 4; + if (param_3 == 2) { + if ((int)(param_2[3] << 2) < 0) { + iVar5 = 0; + } + else { + iVar5 = 2; + } } else { - iVar5 = 2; + iVar5 = 0; } - } - else { - iVar5 = 0; - } - uVar8 = iVar5 + ((uint)*(byte *)((int)param_2 + 9) - 1) * 4; - lVar1 = proc_7F0CC690(0,iVar4,uVar6,uVar7,uVar8); - if (lVar1 != 0) { - *puVar10 = iVar4 << 0xc | 0xf2000000U | uVar6; - puVar10[1] = (uVar7 & 0xfff) << 0xc | uVar8 & 0xfff; - puVar10 = puVar10 + 2; - } - return puVar10; + uVar8 = iVar5 + ((uint)*(byte *)((int)param_2 + 9) - 1) * 4; + lVar1 = proc_7F0CC690(0,iVar4,uVar6,uVar7,uVar8); + if (lVar1 != 0) { + *puVar10 = iVar4 << 0xc | 0xf2000000U | uVar6; + puVar10[1] = (uVar7 & 0xfff) << 0xc | uVar8 & 0xfff; + puVar10 = puVar10 + 2; + } + return puVar10; } @@ -140324,119 +139607,120 @@ uint * proc_7F0CCC50(uint *param_1,uint *param_2,int param_3,uint param_4,uint p uint * proc_7F0CCFBC(uint *param_1,uint *param_2,int param_3,longlong param_4) { - uint uVar1; - byte bVar2; - uint *puVar3; - uint uVar4; - - uVar4 = 0; - bVar2 = *(byte *)(param_3 + 0xb) >> 5; - if (bVar2 != 0) { - uVar4 = (uint)bVar2 - 1; - } - if (param_4 == 0) { - uVar1 = *param_2; - *param_2 = uVar1 & 0xffffc7ff; - *param_2 = uVar1 & 0xffffc7ff | uVar4 << 0xb; + uint uVar1; + byte bVar2; + uint *puVar3; + uint uVar4; + + uVar4 = 0; + bVar2 = *(byte *)(param_3 + 0xb) >> 5; + if (bVar2 != 0) { + uVar4 = (uint)bVar2 - 1; + } puVar3 = param_1; - } - else { - if (param_2 == NULL) { - param_1[1] = 0xffffffff; - *param_1 = (uVar4 & 7) << 0xb | 0xbb000001; - puVar3 = param_1 + 2; + if (param_4 == 0) { + uVar1 = *param_2; + *param_2 = uVar1 & 0xffffc7ff; + *param_2 = uVar1 & 0xffffc7ff | uVar4 << 0xb; } else { - uVar4 = *param_2 & 0xffffc7ff | uVar4 << 0xb; - puVar3 = param_1; - if (uVar4 != *param_2) { - *param_1 = uVar4; - puVar3 = param_1 + 2; - param_1[1] = param_2[1]; - } + if (param_2 == NULL) { + param_1[1] = 0xffffffff; + *param_1 = (uVar4 & 7) << 0xb | 0xbb000001; + puVar3 = param_1 + 2; + } + else { + uVar4 = *param_2 & 0xffffc7ff | uVar4 << 0xb; + if (uVar4 != *param_2) { + *param_1 = uVar4; + puVar3 = param_1 + 2; + param_1[1] = param_2[1]; + } + } } - } - return puVar3; + return puVar3; } -uint * expland_c0_DL_psuedocommands(uint *param_1,uint *param_2,uint param_3) +uint * expland_c0_DL_psuedocommands(uint *command,uint *facemapperimage,uint param_3) { - longlong lVar1; - uint uVar2; - uint uVar3; - uint *puVar4; - uint *puVar5; - uint uStack8; - uint uStack4; - - proc_7F0CC9D4(param_2,&uStack4,(int *)&uStack8); - if (param_2[3] >> 0x1e == 0) { - *param_1 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | (uStack4 & 3) << 0x13; - puVar4 = param_1 + 2; - param_1[1] = param_2[1]; - lVar1 = proc_7F0CC574(7,(param_2[2] << 0x1b) >> 0x1d,uStack4,0,param_3,0,0,0,0,0,0); - if (lVar1 != 0) { - *puVar4 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (uStack4 & 3) << 0x13 | - param_3 & 0x1ff; - param_1[3] = 0x7000000; - puVar4 = param_1 + 4; + longlong lVar1; + uint uVar2; + uint uVar3; + uint *puVar4; + uint *puVar5; + uint uStack8; + uint uStack4; + + proc_7F0CC9D4(facemapperimage,&uStack4,(int *)&uStack8); + if (facemapperimage[3] >> 0x1e == 0) { + *command = ((facemapperimage[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | + (uStack4 & 3) << 0x13; + puVar4 = command + 2; + command[1] = facemapperimage[1]; + lVar1 = proc_7F0CC574(7,(facemapperimage[2] << 0x1b) >> 0x1d,uStack4,0,param_3,0,0,0,0,0,0); + if (lVar1 != 0) { + *puVar4 = ((facemapperimage[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | + (uStack4 & 3) << 0x13 | param_3 & 0x1ff; + command[3] = 0x7000000; + puVar4 = command + 4; + } + *puVar4 = 0xe6000000; + puVar4[1] = 0; + puVar4[2] = 0xf3000000; + uStack8 -= 1; + if (0x7fe < (int)uStack8) { + uStack8 = 0x7ff; + } + puVar4[3] = (uStack8 & 0xfff) << 0xc | 0x7000000; + puVar4[4] = 0xe7000000; + puVar4[5] = 0; } - *puVar4 = 0xe6000000; - puVar4[1] = 0; - puVar4[2] = 0xf3000000; - uStack8 -= 1; - if (0x7fe < (int)uStack8) { - uStack8 = 0x7ff; + else { + puVar5 = command + 2; + *command = ((facemapperimage[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | + (uStack4 & 3) << 0x13; + command[1] = facemapperimage[1]; + lVar1 = proc_7F0CC574(7,(facemapperimage[2] << 0x1b) >> 0x1d,uStack4,0,param_3,0,0,0,0,0,0); + if (lVar1 != 0) { + *puVar5 = ((facemapperimage[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | + (uStack4 & 3) << 0x13 | param_3 & 0x1ff; + command[3] = 0x7000000; + puVar5 = command + 4; + } + *puVar5 = 0xe6000000; + puVar5[1] = 0; + puVar5[2] = 0xf3000000; + uVar2 = uStack8 - 1; + if (0x7fe < (int)uVar2) { + uVar2 = 0x7ff; + } + puVar5[3] = (uVar2 & 0xfff) << 0xc | 0x7000000; + puVar5[4] = 0xe7000000; + puVar5[5] = 0; + uVar2 = 0x3ff - (uint)*(byte *)((int)facemapperimage + 10); + puVar4 = puVar5 + 6; + if (uStack8 <= uVar2) { + uVar2 = 0; + } + lVar1 = proc_7F0CC574(7,0,0,1,0x100,0,0,0,0,0,0); + if (lVar1 != 0) { + *puVar4 = 0xf5000300; + puVar5[7] = 0x7000000; + puVar4 = puVar5 + 8; + } + uVar3 = (uVar2 & 0x3ff) << 2; + *puVar4 = 0xe6000000; + puVar4[1] = 0; + puVar4[2] = (uStack8 - uVar2 & 0x3ff) << 0xe | 0xf0000000 | uVar3; + puVar4[3] = ((uint)*(byte *)((int)facemapperimage + 10) + (uStack8 - uVar2) & 0x3ff) << 0xe + | 0x7000000 | uVar3; + puVar4[4] = 0xe7000000; + puVar4[5] = 0; } - puVar4[3] = (uStack8 & 0xfff) << 0xc | 0x7000000; - puVar4[4] = 0xe7000000; - puVar4[5] = 0; - } - else { - puVar5 = param_1 + 2; - *param_1 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | (uStack4 & 3) << 0x13; - param_1[1] = param_2[1]; - lVar1 = proc_7F0CC574(7,(param_2[2] << 0x1b) >> 0x1d,uStack4,0,param_3,0,0,0,0,0,0); - if (lVar1 != 0) { - *puVar5 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (uStack4 & 3) << 0x13 | - param_3 & 0x1ff; - param_1[3] = 0x7000000; - puVar5 = param_1 + 4; - } - *puVar5 = 0xe6000000; - puVar5[1] = 0; - puVar5[2] = 0xf3000000; - uVar2 = uStack8 - 1; - if (0x7fe < (int)uVar2) { - uVar2 = 0x7ff; - } - puVar5[3] = (uVar2 & 0xfff) << 0xc | 0x7000000; - puVar5[4] = 0xe7000000; - puVar5[5] = 0; - uVar2 = 0x3ff - (uint)*(byte *)((int)param_2 + 10); - puVar4 = puVar5 + 6; - if (uStack8 <= uVar2) { - uVar2 = 0; - } - lVar1 = proc_7F0CC574(7,0,0,1,0x100,0,0,0,0,0,0); - if (lVar1 != 0) { - *puVar4 = 0xf5000300; - puVar5[7] = 0x7000000; - puVar4 = puVar5 + 8; - } - uVar3 = (uVar2 & 0x3ff) << 2; - *puVar4 = 0xe6000000; - puVar4[1] = 0; - puVar4[2] = (uStack8 - uVar2 & 0x3ff) << 0xe | 0xf0000000 | uVar3; - puVar4[3] = ((uint)*(byte *)((int)param_2 + 10) + (uStack8 - uVar2) & 0x3ff) << 0xe | 0x7000000 - | uVar3; - puVar4[4] = 0xe7000000; - puVar4[5] = 0; - } - return puVar4 + 6; + return puVar4 + 6; } @@ -140445,117 +139729,117 @@ uint * proc_7F0CD430(uint *param_1,uint *param_2,int param_3,int param_4,int par uint param_7) { - ulonglong uVar1; - uint uVar5; - uint uVar6; - uint uVar7; - int iVar8; - longlong lVar2; - undefined8 uVar3; - undefined8 uVar4; - uint uVar9; - int iVar10; - int iVar11; - ulonglong uVar12; - uint *puVar13; - uint uVar14; - uint uStack12; - uint uStack4; - - uStack4 = param_7; - uVar9 = (uint)(*(byte *)((int)param_2 + 0xb) >> 5) + param_6; - if ((int)param_6 < (int)uVar9) { - uVar12._4_4_ = 0; - uStack12 = param_6; - do { - uVar12 = SEXT48((int)uVar12._4_4_); - uVar1 = proc_7F0CC714(param_2,uVar12); - uVar5 = proc_7F0CCA9C((int)uVar1); - uVar1 = proc_7F0CC7FC(param_2,uVar12); - uVar6 = proc_7F0CCA9C((int)uVar1); - uVar7 = proc_7F0CC8E4(param_2,uVar12); - iVar8 = proc_7F0CC994(param_2,uVar12); - uVar14 = (param_2[3] << 2) >> 0x1f; - lVar2 = proc_7F0CC548((param_2[3] >> 0x1e) << 0xe); - puVar13 = param_1; - if (lVar2 != 0) { - *param_1 = 0xba000e02; - puVar13 = param_1 + 2; - param_1[1] = (param_2[3] >> 0x1e) << 0xe; - } - lVar2 = proc_7F0CC574(uStack12,(param_2[2] << 0x1b) >> 0x1d,param_2[2] & 3,uVar7,uStack4, - param_3,param_4,uVar5,uVar6,uVar12._4_4_,uVar12._4_4_); - param_1 = puVar13; - if (lVar2 != 0) { - param_1 = puVar13 + 2; - *puVar13 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (param_2[2] & 3) << 0x13 | - (uVar7 & 0x1ff) << 9 | uStack4 & 0x1ff; - uVar3 = proc_7F0CCACC((longlong)param_4); - uVar4 = proc_7F0CCACC((longlong)param_3); - puVar13[1] = ((uint)uVar4 & 3) << 8 | (uStack12 & 7) << 0x18 | ((uint)uVar3 & 3) << 0x12 | - (uVar6 & 0xf) << 0xe | (uVar12._4_4_ & 0xf) << 10 | (uVar5 & 0xf) << 4 | - uVar12._4_4_ & 0xf; - } - if (param_5 == 2) { - if (uVar14 == 0) { - iVar10 = 2; - } - else { - iVar10 = 0; - } - } - else { - iVar10 = 0; - } - if (param_5 == 2) { - if (uVar14 == 0) { - uVar5 = 2; - } - else { - uVar5 = 0; - } - } - else { - uVar5 = 0; - } - uVar1 = proc_7F0CC714(param_2,uVar12); - if (param_5 == 2) { - if (uVar14 == 0) { - iVar11 = 2; - } - else { - iVar11 = 0; - } - } - else { - iVar11 = 0; - } - uVar6 = iVar11 + ((int)uVar1 + -1) * 4; - uVar1 = proc_7F0CC7FC(param_2,uVar12); - if (param_5 == 2) { - if (uVar14 == 0) { - iVar11 = 2; - } - else { - iVar11 = 0; - } - } - else { - iVar11 = 0; - } - uVar7 = iVar11 + ((int)uVar1 + -1) * 4; - lVar2 = proc_7F0CC690(uStack12,iVar10,uVar5,uVar6,uVar7); - uVar12._4_4_ += 1; - if (lVar2 != 0) { - *param_1 = iVar10 << 0xc | 0xf2000000U | uVar5; - param_1[1] = (uStack12 & 7) << 0x18 | (uVar6 & 0xfff) << 0xc | uVar7 & 0xfff; - param_1 = param_1 + 2; - } - uStack12 += 1; - uStack4 += iVar8; - } while (uStack12 != uVar9); - } - return param_1; + ulonglong uVar1; + uint uVar5; + uint uVar6; + uint uVar7; + int iVar8; + longlong lVar2; + undefined8 uVar3; + undefined8 uVar4; + uint uVar9; + int iVar10; + int iVar11; + ulonglong uVar12; + uint *puVar13; + int iVar14; + uint uStack12; + uint uStack4; + + uStack4 = param_7; + uVar9 = (*(byte *)((int)param_2 + 0xb) >> 5) + param_6; + if ((int)param_6 < (int)uVar9) { + uVar12._4_4_ = 0; + uStack12 = param_6; + do { + uVar12 = SEXT48((int)uVar12._4_4_); + uVar1 = proc_7F0CC714(param_2,uVar12); + uVar5 = proc_7F0CCA9C((int)uVar1); + uVar1 = proc_7F0CC7FC(param_2,uVar12); + uVar6 = proc_7F0CCA9C((int)uVar1); + uVar7 = proc_7F0CC8E4(param_2,uVar12); + iVar8 = proc_7F0CC994(param_2,uVar12); + iVar14 = param_2[3] << 2; + lVar2 = proc_7F0CC548((param_2[3] >> 0x1e) << 0xe); + puVar13 = param_1; + if (lVar2 != 0) { + *param_1 = 0xba000e02; + puVar13 = param_1 + 2; + param_1[1] = (param_2[3] >> 0x1e) << 0xe; + } + lVar2 = proc_7F0CC574(uStack12,(param_2[2] << 0x1b) >> 0x1d,param_2[2] & 3,uVar7,uStack4 + ,param_3,param_4,uVar5,uVar6,uVar12._4_4_,uVar12._4_4_); + param_1 = puVar13; + if (lVar2 != 0) { + param_1 = puVar13 + 2; + *puVar13 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | + (param_2[2] & 3) << 0x13 | (uVar7 & 0x1ff) << 9 | uStack4 & 0x1ff; + uVar3 = proc_7F0CCACC((longlong)param_4); + uVar4 = proc_7F0CCACC((longlong)param_3); + puVar13[1] = ((uint)uVar4 & 3) << 8 | (uStack12 & 7) << 0x18 | + ((uint)uVar3 & 3) << 0x12 | (uVar6 & 0xf) << 0xe | + (uVar12._4_4_ & 0xf) << 10 | (uVar5 & 0xf) << 4 | uVar12._4_4_ & 0xf; + } + if (param_5 == 2) { + if (iVar14 < 0) { + iVar10 = 0; + } + else { + iVar10 = 2; + } + } + else { + iVar10 = 0; + } + if (param_5 == 2) { + if (iVar14 < 0) { + uVar5 = 0; + } + else { + uVar5 = 2; + } + } + else { + uVar5 = 0; + } + uVar1 = proc_7F0CC714(param_2,uVar12); + if (param_5 == 2) { + if (iVar14 < 0) { + iVar11 = 0; + } + else { + iVar11 = 2; + } + } + else { + iVar11 = 0; + } + uVar6 = iVar11 + ((int)uVar1 + -1) * 4; + uVar1 = proc_7F0CC7FC(param_2,uVar12); + if (param_5 == 2) { + if (iVar14 < 0) { + iVar14 = 0; + } + else { + iVar14 = 2; + } + } + else { + iVar14 = 0; + } + uVar7 = iVar14 + ((int)uVar1 + -1) * 4; + lVar2 = proc_7F0CC690(uStack12,iVar10,uVar5,uVar6,uVar7); + uVar12._4_4_ += 1; + if (lVar2 != 0) { + *param_1 = iVar10 << 0xc | 0xf2000000U | uVar5; + param_1[1] = (uStack12 & 7) << 0x18 | (uVar6 & 0xfff) << 0xc | uVar7 & 0xfff; + param_1 = param_1 + 2; + } + uStack12 += 1; + uStack4 += iVar8; + } while (uStack12 != uVar9); + } + return param_1; } @@ -140563,78 +139847,78 @@ uint * proc_7F0CD430(uint *param_1,uint *param_2,int param_3,int param_4,int par uint * proc_7F0CD7AC(uint *param_1,uint *param_2) { - uint uVar2; - longlong lVar1; - uint uVar3; - uint *puVar4; - uint *puVar5; - uint uStack8; - uint uStack4; - - uVar2 = proc_7F0CCB38(param_2); - proc_7F0CC9D4(param_2,&uStack4,(int *)&uStack8); - if (param_2[3] >> 0x1e == 0) { - *param_1 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | (uStack4 & 3) << 0x13; - puVar4 = param_1 + 2; - param_1[1] = param_2[1]; - lVar1 = proc_7F0CC574(7,(param_2[2] << 0x1b) >> 0x1d,uStack4,0,0,0,0,0,0,0,0); - if (lVar1 != 0) { - *puVar4 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (uStack4 & 3) << 0x13; - param_1[3] = 0x7000000; - puVar4 = param_1 + 4; + uint uVar2; + longlong lVar1; + uint uVar3; + uint *puVar4; + uint *puVar5; + uint uStack8; + uint uStack4; + + uVar2 = proc_7F0CCB38(param_2); + proc_7F0CC9D4(param_2,&uStack4,(int *)&uStack8); + if (param_2[3] >> 0x1e == 0) { + *param_1 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | (uStack4 & 3) << 0x13; + puVar4 = param_1 + 2; + param_1[1] = param_2[1]; + lVar1 = proc_7F0CC574(7,(param_2[2] << 0x1b) >> 0x1d,uStack4,0,0,0,0,0,0,0,0); + if (lVar1 != 0) { + *puVar4 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (uStack4 & 3) << 0x13; + param_1[3] = 0x7000000; + puVar4 = param_1 + 4; + } + *puVar4 = 0xe6000000; + puVar4[1] = 0; + puVar4[2] = 0xf3000000; + uStack8 -= 1; + if (0x7fe < (int)uStack8) { + uStack8 = 0x7ff; + } + puVar4[3] = (uStack8 & 0xfff) << 0xc | 0x7000000 | uVar2 & 0xfff; + puVar4[4] = 0xe7000000; + puVar4[5] = 0; } - *puVar4 = 0xe6000000; - puVar4[1] = 0; - puVar4[2] = 0xf3000000; - uStack8 -= 1; - if (0x7fe < (int)uStack8) { - uStack8 = 0x7ff; + else { + puVar5 = param_1 + 2; + *param_1 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | (uStack4 & 3) << 0x13; + param_1[1] = param_2[1]; + lVar1 = proc_7F0CC574(7,(param_2[2] << 0x1b) >> 0x1d,uStack4,0,0,0,0,0,0,0,0); + if (lVar1 != 0) { + *puVar5 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (uStack4 & 3) << 0x13; + param_1[3] = 0x7000000; + puVar5 = param_1 + 4; + } + *puVar5 = 0xe6000000; + puVar5[1] = 0; + puVar5[2] = 0xf3000000; + uVar3 = uStack8 - 1; + if (0x7fe < (int)uVar3) { + uVar3 = 0x7ff; + } + puVar5[3] = (uVar3 & 0xfff) << 0xc | 0x7000000 | uVar2 & 0xfff; + puVar5[4] = 0xe7000000; + puVar5[5] = 0; + uVar2 = 0x3ff - (uint)*(byte *)((int)param_2 + 10); + puVar4 = puVar5 + 6; + if (uStack8 <= uVar2) { + uVar2 = 0; + } + lVar1 = proc_7F0CC574(7,0,0,1,0x100,0,0,0,0,0,0); + if (lVar1 != 0) { + *puVar4 = 0xf5000300; + puVar5[7] = 0x7000000; + puVar4 = puVar5 + 8; + } + uVar3 = (uVar2 & 0x3ff) << 2; + *puVar4 = 0xe6000000; + puVar4[1] = 0; + puVar4[2] = (uStack8 - uVar2 & 0x3ff) << 0xe | 0xf0000000 | uVar3; + puVar4[3] = ((uint)*(byte *)((int)param_2 + 10) + (uStack8 - uVar2) & 0x3ff) << 0xe | + 0x7000000 | uVar3; + puVar4[4] = 0xe7000000; + puVar4[5] = 0; } - puVar4[3] = (uStack8 & 0xfff) << 0xc | 0x7000000 | uVar2 & 0xfff; - puVar4[4] = 0xe7000000; - puVar4[5] = 0; - } - else { - puVar5 = param_1 + 2; - *param_1 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xfd000000 | (uStack4 & 3) << 0x13; - param_1[1] = param_2[1]; - lVar1 = proc_7F0CC574(7,(param_2[2] << 0x1b) >> 0x1d,uStack4,0,0,0,0,0,0,0,0); - if (lVar1 != 0) { - *puVar5 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (uStack4 & 3) << 0x13; - param_1[3] = 0x7000000; - puVar5 = param_1 + 4; - } - *puVar5 = 0xe6000000; - puVar5[1] = 0; - puVar5[2] = 0xf3000000; - uVar3 = uStack8 - 1; - if (0x7fe < (int)uVar3) { - uVar3 = 0x7ff; - } - puVar5[3] = (uVar3 & 0xfff) << 0xc | 0x7000000 | uVar2 & 0xfff; - puVar5[4] = 0xe7000000; - puVar5[5] = 0; - uVar2 = 0x3ff - (uint)*(byte *)((int)param_2 + 10); - puVar4 = puVar5 + 6; - if (uStack8 <= uVar2) { - uVar2 = 0; - } - lVar1 = proc_7F0CC574(7,0,0,1,0x100,0,0,0,0,0,0); - if (lVar1 != 0) { - *puVar4 = 0xf5000300; - puVar5[7] = 0x7000000; - puVar4 = puVar5 + 8; - } - uVar3 = (uVar2 & 0x3ff) << 2; - *puVar4 = 0xe6000000; - puVar4[1] = 0; - puVar4[2] = (uStack8 - uVar2 & 0x3ff) << 0xe | 0xf0000000 | uVar3; - puVar4[3] = ((uint)*(byte *)((int)param_2 + 10) + (uStack8 - uVar2) & 0x3ff) << 0xe | 0x7000000 - | uVar3; - puVar4[4] = 0xe7000000; - puVar4[5] = 0; - } - return puVar4 + 6; + return puVar4 + 6; } @@ -140642,102 +139926,103 @@ uint * proc_7F0CD7AC(uint *param_1,uint *param_2) uint * proc_7F0CDB64(uint *param_1,uint *param_2,int param_3,int param_4,int param_5,uint param_6) { - uint uVar4; - uint uVar5; - uint uVar6; - longlong lVar1; - undefined8 uVar2; - undefined8 uVar3; - int iVar7; - int iVar8; - uint uVar9; - uint *puVar10; - uint *puVar11; - - uVar4 = proc_7F0CCA9C((uint)*(byte *)(param_2 + 2)); - uVar5 = proc_7F0CCA9C((uint)*(byte *)((int)param_2 + 9)); - uVar6 = proc_7F0CC8E4(param_2,0); - uVar9 = (param_2[3] << 2) >> 0x1f; - lVar1 = proc_7F0CC548((param_2[3] >> 0x1e) << 0xe); - puVar10 = param_1; - if (lVar1 != 0) { - *param_1 = 0xba000e02; - puVar10 = param_1 + 2; - param_1[1] = (param_2[3] >> 0x1e) << 0xe; - } - lVar1 = proc_7F0CC574(param_6,(param_2[2] << 0x1b) >> 0x1d,param_2[2] & 3,uVar6,0,param_3,param_4, - uVar4,uVar5,0,0); - puVar11 = puVar10; - if (lVar1 != 0) { - puVar11 = puVar10 + 2; - *puVar10 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (param_2[2] & 3) << 0x13 | - (uVar6 & 0x1ff) << 9; - uVar2 = proc_7F0CCACC((longlong)param_4); - uVar3 = proc_7F0CCACC((longlong)param_3); - puVar10[1] = ((uint)uVar3 & 3) << 8 | (param_6 & 7) << 0x18 | ((uint)uVar2 & 3) << 0x12 | - (uVar5 & 0xf) << 0xe | (uVar4 & 0xf) << 4; - } - iVar7 = 0; - if ((param_5 == 2) && (uVar9 == 0)) { - iVar7 = 2; - } - if (param_5 == 2) { - if (uVar9 == 0) { - uVar4 = 2; + uint uVar4; + uint uVar5; + uint uVar6; + longlong lVar1; + undefined8 uVar2; + undefined8 uVar3; + int iVar7; + int iVar8; + int iVar9; + uint *puVar10; + uint *puVar11; + + uVar4 = proc_7F0CCA9C((uint)*(byte *)(param_2 + 2)); + uVar5 = proc_7F0CCA9C((uint)*(byte *)((int)param_2 + 9)); + uVar6 = proc_7F0CC8E4(param_2,0); + iVar9 = param_2[3] << 2; + lVar1 = proc_7F0CC548((param_2[3] >> 0x1e) << 0xe); + puVar10 = param_1; + if (lVar1 != 0) { + *param_1 = 0xba000e02; + puVar10 = param_1 + 2; + param_1[1] = (param_2[3] >> 0x1e) << 0xe; + } + lVar1 = proc_7F0CC574(param_6,(param_2[2] << 0x1b) >> 0x1d,param_2[2] & 3,uVar6,0,param_3, + param_4,uVar4,uVar5,0,0); + puVar11 = puVar10; + if (lVar1 != 0) { + puVar11 = puVar10 + 2; + *puVar10 = ((param_2[2] << 0x1b) >> 0x1d) << 0x15 | 0xf5000000 | (param_2[2] & 3) << 0x13 | + (uVar6 & 0x1ff) << 9; + uVar2 = proc_7F0CCACC((longlong)param_4); + uVar3 = proc_7F0CCACC((longlong)param_3); + puVar10[1] = ((uint)uVar3 & 3) << 8 | (param_6 & 7) << 0x18 | ((uint)uVar2 & 3) << 0x12 | + (uVar5 & 0xf) << 0xe | (uVar4 & 0xf) << 4; + } + iVar7 = 0; + if ((param_5 == 2) && (-1 < iVar9)) { + iVar7 = 2; + } + if (param_5 == 2) { + if (iVar9 < 0) { + uVar4 = 0; + } + else { + uVar4 = 2; + } } else { - uVar4 = 0; + uVar4 = 0; } - } - else { - uVar4 = 0; - } - if (param_5 == 2) { - if (uVar9 == 0) { - iVar8 = 2; + if (param_5 == 2) { + if (iVar9 < 0) { + iVar8 = 0; + } + else { + iVar8 = 2; + } } else { - iVar8 = 0; + iVar8 = 0; } - } - else { - iVar8 = 0; - } - uVar5 = iVar8 + ((uint)*(byte *)(param_2 + 2) - 1) * 4; - if (param_5 == 2) { - if (uVar9 == 0) { - iVar8 = 2; + uVar5 = iVar8 + ((uint)*(byte *)(param_2 + 2) - 1) * 4; + if (param_5 == 2) { + if (iVar9 < 0) { + iVar9 = 0; + } + else { + iVar9 = 2; + } } else { - iVar8 = 0; + iVar9 = 0; } - } - else { - iVar8 = 0; - } - uVar6 = iVar8 + ((uint)*(byte *)((int)param_2 + 9) - 1) * 4; - lVar1 = proc_7F0CC690(param_6,iVar7,uVar4,uVar5,uVar6); - if (lVar1 != 0) { - *puVar11 = iVar7 << 0xc | 0xf2000000U | uVar4; - puVar11[1] = (param_6 & 7) << 0x18 | (uVar5 & 0xfff) << 0xc | uVar6 & 0xfff; - puVar11 = puVar11 + 2; - } - return puVar11; + uVar6 = iVar9 + ((uint)*(byte *)((int)param_2 + 9) - 1) * 4; + lVar1 = proc_7F0CC690(param_6,iVar7,uVar4,uVar5,uVar6); + if (lVar1 != 0) { + *puVar11 = iVar7 << 0xc | 0xf2000000U | uVar4; + puVar11[1] = (param_6 & 7) << 0x18 | (uVar5 & 0xfff) << 0xc | uVar6 & 0xfff; + puVar11 = puVar11 + 2; + } + return puVar11; } -uint * proc_7F0CDE18(uint *param_1,uint *param_2,int param_3,int param_4,int param_5) +uint * proc_7F0CDE18(uint *command,uint *facemapper_entry,int s_flags,int t_flags, + int settilesize_offset) { - uint *puVar1; - - puVar1 = expland_c0_DL_psuedocommands(param_1,param_2,0); - puVar1 = proc_7F0CD430(puVar1,param_2,param_3,param_4,param_5,0,0); - if (*(byte *)((int)param_2 + 0xb) >> 5 == 1) { - puVar1 = proc_7F0CD430(puVar1,param_2,param_3,param_4,param_5,1,0); - } - return puVar1; + uint *puVar1; + + puVar1 = expland_c0_DL_psuedocommands(command,facemapper_entry,0); + puVar1 = proc_7F0CD430(puVar1,facemapper_entry,s_flags,t_flags,settilesize_offset,0,0); + if (*(byte *)((int)facemapper_entry + 0xb) >> 5 == 1) { + puVar1 = proc_7F0CD430(puVar1,facemapper_entry,s_flags,t_flags,settilesize_offset,1,0); + } + return puVar1; } @@ -140746,20 +140031,20 @@ uint * proc_7F0CDEA8(uint *param_1,uint *param_2,int param_3,int param_4,int par uint param_7,uint param_8,uint param_9) { - uint uVar1; - uint *puVar2; - - uVar1 = proc_7F0CC994(param_6,0); - puVar2 = proc_7F0CD7AC(param_1,param_6); - *puVar2 = 0xe8000000; - puVar2[1] = 0; - puVar2 = expland_c0_DL_psuedocommands(puVar2 + 2,param_2,uVar1); - puVar2 = proc_7F0CCC50(puVar2,param_6,param_5,param_7,param_8,param_9); - puVar2 = proc_7F0CD430(puVar2,param_2,param_3,param_4,param_5,1,uVar1); - if (*(byte *)((int)param_2 + 0xb) >> 5 == 1) { - puVar2 = proc_7F0CD430(puVar2,param_2,param_3,param_4,param_5,2,uVar1); - } - return puVar2; + uint uVar1; + uint *puVar2; + + uVar1 = proc_7F0CC994(param_6,0); + puVar2 = proc_7F0CD7AC(param_1,param_6); + *puVar2 = 0xe8000000; + puVar2[1] = 0; + puVar2 = expland_c0_DL_psuedocommands(puVar2 + 2,param_2,uVar1); + puVar2 = proc_7F0CCC50(puVar2,param_6,param_5,param_7,param_8,param_9); + puVar2 = proc_7F0CD430(puVar2,param_2,param_3,param_4,param_5,1,uVar1); + if (*(byte *)((int)param_2 + 0xb) >> 5 == 1) { + puVar2 = proc_7F0CD430(puVar2,param_2,param_3,param_4,param_5,2,uVar1); + } + return puVar2; } @@ -140768,15 +140053,15 @@ uint * proc_7F0CDFA8(uint *param_1,uint *param_2,int param_3,int param_4,int par uint param_7,uint param_8) { - uint *puVar1; - - puVar1 = expland_c0_DL_psuedocommands(param_1,param_2,0); - puVar1 = proc_7F0CCC50(puVar1,param_2,param_5,param_6,param_7,param_8); - puVar1 = proc_7F0CD430(puVar1,param_2,param_3,param_4,param_5,1,0); - if (*(byte *)((int)param_2 + 0xb) >> 5 == 1) { - puVar1 = proc_7F0CD430(puVar1,param_2,param_3,param_4,param_5,2,0); - } - return puVar1; + uint *puVar1; + + puVar1 = expland_c0_DL_psuedocommands(param_1,param_2,0); + puVar1 = proc_7F0CCC50(puVar1,param_2,param_5,param_6,param_7,param_8); + puVar1 = proc_7F0CD430(puVar1,param_2,param_3,param_4,param_5,1,0); + if (*(byte *)((int)param_2 + 0xb) >> 5 == 1) { + puVar1 = proc_7F0CD430(puVar1,param_2,param_3,param_4,param_5,2,0); + } + return puVar1; } @@ -140784,11 +140069,11 @@ uint * proc_7F0CDFA8(uint *param_1,uint *param_2,int param_3,int param_4,int par uint * proc_7F0CE064(uint *param_1,uint *param_2,int param_3,int param_4,int param_5) { - uint *puVar1; - - puVar1 = proc_7F0CD7AC(param_1,param_2); - puVar1 = proc_7F0CDB64(puVar1,param_2,param_3,param_4,param_5,0); - return puVar1; + uint *puVar1; + + puVar1 = proc_7F0CD7AC(param_1,param_2); + puVar1 = proc_7F0CDB64(puVar1,param_2,param_3,param_4,param_5,0); + return puVar1; } @@ -140796,12 +140081,12 @@ uint * proc_7F0CE064(uint *param_1,uint *param_2,int param_3,int param_4,int par uint * proc_7F0CE0AC(uint *param_1,uint *param_2,int param_3,int param_4,int param_5) { - uint *puVar1; - - puVar1 = proc_7F0CD7AC(param_1,param_2); - puVar1 = proc_7F0CDB64(puVar1,param_2,param_3,param_4,param_5,0); - puVar1 = proc_7F0CDB64(puVar1,param_2,param_3,param_4,param_5,1); - return puVar1; + uint *puVar1; + + puVar1 = proc_7F0CD7AC(param_1,param_2); + puVar1 = proc_7F0CDB64(puVar1,param_2,param_3,param_4,param_5,0); + puVar1 = proc_7F0CDB64(puVar1,param_2,param_3,param_4,param_5,1); + return puVar1; } @@ -140810,236 +140095,248 @@ uint * process_microcode_sort_display_modes_expand_image_calls (uint *param_1,int param_2,uint *param_3,uint *param_4) { - byte bVar1; - bool bVar2; - bool bVar3; - bool bVar4; - uint uVar5; - uint *puVar6; - uint *puVar7; - uint *puVar8; - int *piVar9; - int iVar10; - longlong lVar11; - ulonglong imageID; - uint uVar12; - uint uVar13; - uint uVar14; - uint uVar15; - uint uVar16; - uint uVar17; - int iStack60; - uint *puStack12; - - param_2 >>= 3; - puStack12 = NULL; - bVar3 = false; - bVar2 = false; - iStack60 = 1; - bVar4 = false; - proc_7F0CC4C8(); - puVar6 = param_3; - if (param_4 == NULL) { - param_4 = &ptr_texture_alloc_start; - puVar6 = param_3; - } - do { - if (param_2 < 1) { - if (bVar4) { - save_ptrDL_enpoint_to_current_init_lightfixture_table(puVar6); - } - return (uint *)((int)puVar6 - (int)param_3); + byte bVar1; + bool bVar2; + bool bVar3; + bool bVar4; + Gfx *pGVar5; + uint image; + uint *facemapper_entry; + uint *puVar6; + int *piVar7; + int iVar8; + longlong lVar9; + ulonglong imageID; + uint t_flags; + uint s_flags; + uint uVar10; + uint settilesize_offset; + Gfx *DL; + uint uVar11; + uint uVar12; + int iStack60; + Gfx *pGStack12; + + param_2 >>= 3; + pGStack12 = NULL; + bVar3 = false; + bVar2 = false; + iStack60 = 1; + bVar4 = false; + proc_7F0CC4C8(); + pGVar5 = (Gfx *)param_3; + if (param_4 == NULL) { + param_4 = &ptr_texture_alloc_start; } - bVar1 = *(byte *)param_1; - if (bVar1 < 0xc1) { - if (false) { + do { + if (param_2 < 1) { + if (bVar4) { + save_ptrDL_enpoint_to_current_init_lightfixture_table(pGVar5); + } + return (uint *)((int)pGVar5 - (int)param_3); + } + bVar1 = *(byte *)param_1; + if (bVar1 < 0xc1) { + if (false) { switchD_7f0ce1d0_caseD_b2: - uVar5 = *param_1; - goto LAB_7f0ce724; - } - switch(bVar1) { - case 0xb1: - case 0xbf: - iStack60 = 1; - bVar2 = false; - *puVar6 = *param_1; - puVar6[1] = param_1[1]; - puVar7 = puVar6 + 2; - break; - default: - goto switchD_7f0ce1d0_caseD_b2; - case 0xba: - if (bVar3) { - bVar1 = *(byte *)((int)param_1 + 2); - puVar7 = puVar6; - if (((bVar1 != 0x11) && (puVar7 = puVar6, bVar1 != 0x14)) && - (puVar7 = puVar6, bVar1 != 0x10)) { - *puVar6 = *param_1; - puVar6[1] = param_1[1]; - puVar7 = puVar6 + 2; - } + image = *param_1; + goto LAB_7f0ce724; + } + DL = pGVar5; + switch(bVar1) { + case 0xb1: + case 0xbf: + iStack60 = 1; + bVar2 = false; + *(uint *)pGVar5 = *param_1; + *(uint *)((int)pGVar5 + 4) = param_1[1]; + DL = pGVar5 + 1; + break; + default: + goto switchD_7f0ce1d0_caseD_b2; + case 0xba: + if (bVar3) { + bVar1 = *(byte *)((int)param_1 + 2); + if (((bVar1 != 0x11) && (bVar1 != 0x14)) && (bVar1 != 0x10)) { + *(uint *)pGVar5 = *param_1; + *(uint *)((int)pGVar5 + 4) = param_1[1]; + DL = pGVar5 + 1; + } + } + else { + *(uint *)pGVar5 = *param_1; + *(uint *)((int)pGVar5 + 4) = param_1[1]; + DL = pGVar5 + 1; + } + break; + case 0xbb: + iStack60 = 0; + *(uint *)pGVar5 = *param_1; + *(uint *)((int)pGVar5 + 4) = param_1[1]; + DL = pGVar5 + 1; + pGStack12 = pGVar5; + break; + case 0xc0: + if (!bVar2) { + *(uint *)pGVar5 = 0xe7000000; + DL = pGVar5 + 1; + *(uint *)((int)pGVar5 + 4) = 0; + bVar2 = true; + } + if (bVar4) { + bVar4 = false; + save_ptrDL_enpoint_to_current_init_lightfixture_table(DL); + image = param_1[1]; + } + else { + image = param_1[1]; + } + imageID = (longlong)(int)image & 0xfff; + image = (uint)imageID; + if ((imageID == (longlong)DAT_800483c4) && (DAT_800483c8 != 0)) { + if (*(char *)(DAT_800483c8 + image * 4) == -1) { + bVar3 = false; + } + else { + bVar3 = true; + } + } + else { + bVar3 = false; + } + calls_load_image_to_buffer(image,param_4); + facemapper_entry = proc_7F0CBB0C(image,param_4); + if (facemapper_entry != NULL) { + lVar9 = (longlong)iStack60; + iStack60 = 0; + DL = (Gfx *)proc_7F0CCFBC((uint *)DL,(uint *)pGStack12,(int)facemapper_entry, + lVar9); + settilesize_offset = *param_1; + switch(settilesize_offset & 7) { + case 0: + s_flags = param_1[1]; + uVar11 = settilesize_offset >> 0x16 & 3; + uVar12 = settilesize_offset >> 0x14 & 3; + t_flags = settilesize_offset >> 0x12 & 3; + uVar10 = settilesize_offset >> 0xe & 0xf; + settilesize_offset = settilesize_offset >> 10 & 0xf; + if (DAT_800483c8 != 0) { + iVar8 = image * 4; + if (*(char *)(DAT_800483c8 + iVar8) == -1) { + *(char *)(DAT_800483c8 + iVar8) = (char)(s_flags >> 0x18); + *(byte *)(DAT_800483c8 + iVar8 + 1) = + ('\x0f' - (char)uVar10) * ' ' | + *(byte *)(DAT_800483c8 + iVar8 + 1) & 0x1f; + *(byte *)(DAT_800483c8 + iVar8 + 1) = + ('\x0f' - (char)settilesize_offset) * '\x04' & 0x1cU | + *(byte *)(DAT_800483c8 + iVar8 + 1) & 0xe3; + } + } + if (bVar3) { + piVar7 = (int *)(DAT_800483c8 + image * 4); + facemapper_entry = + proc_7F0CDFA8((uint *)DL,facemapper_entry,uVar11,uVar12,t_flags, + 0xf - (uint)(*(byte *)((int)piVar7 + 1) >> 5), + 0xf - ((uint)(*piVar7 << 0xb) >> 0x1d), + (uint)*(byte *)piVar7); + *facemapper_entry = 0xba001402; + facemapper_entry[1] = 0x100000; + facemapper_entry[3] = 0x10000; + facemapper_entry[2] = 0xba001001; + facemapper_entry[5] = 0x40000; + facemapper_entry[4] = 0xba001102; + DL = (Gfx *)(facemapper_entry + 6); + } + else { + DL = (Gfx *)proc_7F0CDFA8((uint *)DL,facemapper_entry,uVar11,uVar12, + t_flags,uVar10,settilesize_offset, + s_flags >> 0x18); + } + break; + case 1: + image = param_1[1] >> 0xc & 0xfff; + calls_load_image_to_buffer(image,param_4); + puVar6 = proc_7F0CBB0C(image,param_4); + if (puVar6 != NULL) { + image = *param_1; + DL = (Gfx *)proc_7F0CDEA8((uint *)DL,facemapper_entry,image >> 0x16 & 3, + image >> 0x14 & 3,image >> 0x12 & 3,puVar6, + image >> 0xe & 0xf,image >> 10 & 0xf, + param_1[1] >> 0x18); + } + break; + case 2: + s_flags = settilesize_offset >> 0x16 & 3; + t_flags = settilesize_offset >> 0x14 & 3; + settilesize_offset = settilesize_offset >> 0x12 & 3; + if (bVar3) { + piVar7 = (int *)(DAT_800483c8 + image * 4); + facemapper_entry = + proc_7F0CDFA8((uint *)DL,facemapper_entry,s_flags,t_flags, + settilesize_offset, + 0xf - (uint)(*(byte *)((int)piVar7 + 1) >> 5), + 0xf - ((uint)(*piVar7 << 0xb) >> 0x1d), + (uint)*(byte *)piVar7); + *facemapper_entry = 0xba001402; + facemapper_entry[1] = 0x100000; + facemapper_entry[3] = 0x10000; + facemapper_entry[2] = 0xba001001; + facemapper_entry[5] = 0x40000; + facemapper_entry[4] = 0xba001102; + DL = (Gfx *)(facemapper_entry + 6); + } + else { + DL = (Gfx *)proc_7F0CDE18((uint *)DL,facemapper_entry,s_flags,t_flags, + settilesize_offset); + } + break; + case 3: + DL = (Gfx *)proc_7F0CE0AC((uint *)DL,facemapper_entry, + settilesize_offset >> 0x16 & 3, + settilesize_offset >> 0x14 & 3, + settilesize_offset >> 0x12 & 3); + break; + case 4: + DL = (Gfx *)proc_7F0CE064((uint *)DL,facemapper_entry, + settilesize_offset >> 0x16 & 3, + settilesize_offset >> 0x14 & 3, + settilesize_offset >> 0x12 & 3); + } + if (imageID == 0x5e4) { + DL = (Gfx *)proc_7F09343C((undefined4 *)DL,1); + proc_7F0CC4C8(); + } + if (imageID == 0x5e7) { + DL = (Gfx *)proc_7F09365C((undefined4 *)DL,1); + proc_7F0CC4C8(); + } + lVar9 = check_if_imageID_is_light(imageID); + if (lVar9 != 0) { + bVar4 = true; + add_entry_to_init_lightfixture_table(DL); + } + } + } } else { - *puVar6 = *param_1; - puVar6[1] = param_1[1]; - puVar7 = puVar6 + 2; - } - break; - case 0xbb: - iStack60 = 0; - *puVar6 = *param_1; - puVar6[1] = param_1[1]; - puVar7 = puVar6 + 2; - puStack12 = puVar6; - break; - case 0xc0: - puVar7 = puVar6; - if (!bVar2) { - *puVar6 = 0xe7000000; - puVar7 = puVar6 + 2; - puVar6[1] = 0; - bVar2 = true; - } - if (bVar4) { - bVar4 = false; - save_ptrDL_enpoint_to_current_init_lightfixture_table(puVar7); - uVar5 = param_1[1]; - } - else { - uVar5 = param_1[1]; - } - imageID = (longlong)(int)uVar5 & 0xfff; - uVar5 = (uint)imageID; - if ((imageID == (longlong)DAT_800483c4) && (DAT_800483c8 != 0)) { - if (*(char *)(DAT_800483c8 + uVar5 * 4) == -1) { - bVar3 = false; - } - else { - bVar3 = true; - } - } - else { - bVar3 = false; - } - proc_7F0CBEE8(uVar5,param_4); - puVar6 = proc_7F0CBB0C(uVar5,param_4); - if (puVar6 != NULL) { - lVar11 = (longlong)iStack60; - iStack60 = 0; - puVar7 = proc_7F0CCFBC(puVar7,puStack12,(int)puVar6,lVar11); - uVar15 = *param_1; - switch(uVar15 & 7) { - case 0: - uVar13 = param_1[1]; - uVar16 = uVar15 >> 0x16 & 3; - uVar17 = uVar15 >> 0x14 & 3; - uVar12 = uVar15 >> 0x12 & 3; - uVar14 = uVar15 >> 0xe & 0xf; - uVar15 = uVar15 >> 10 & 0xf; - if (DAT_800483c8 != 0) { - iVar10 = uVar5 * 4; - if (*(char *)(DAT_800483c8 + iVar10) == -1) { - *(char *)(DAT_800483c8 + iVar10) = (char)(uVar13 >> 0x18); - *(byte *)(DAT_800483c8 + iVar10 + 1) = - ('\x0f' - (char)uVar14) * ' ' | *(byte *)(DAT_800483c8 + iVar10 + 1) & 0x1f; - *(byte *)(DAT_800483c8 + iVar10 + 1) = - ('\x0f' - (char)uVar15) * '\x04' & 0x1cU | - *(byte *)(DAT_800483c8 + iVar10 + 1) & 0xe3; - } + if (bVar1 == 0xe7) { + bVar2 = true; + *(uint *)pGVar5 = *param_1; + *(uint *)((int)pGVar5 + 4) = param_1[1]; + DL = pGVar5 + 1; + goto LAB_7f0ce738; } - if (bVar3) { - piVar9 = (int *)(DAT_800483c8 + uVar5 * 4); - puVar7 = proc_7F0CDFA8(puVar7,puVar6,uVar16,uVar17,uVar12, - 0xf - (uint)(*(byte *)((int)piVar9 + 1) >> 5), - 0xf - ((uint)(*piVar9 << 0xb) >> 0x1d),(uint)*(byte *)piVar9); - *puVar7 = 0xba001402; - puVar7[1] = 0x100000; - puVar7[3] = 0x10000; - puVar7[2] = 0xba001001; - puVar7[5] = 0x40000; - puVar7[4] = 0xba001102; - puVar7 = puVar7 + 6; - } - else { - puVar7 = proc_7F0CDFA8(puVar7,puVar6,uVar16,uVar17,uVar12,uVar14,uVar15,uVar13 >> 0x18 - ); - } - break; - case 1: - uVar5 = param_1[1] >> 0xc & 0xfff; - proc_7F0CBEE8(uVar5,param_4); - puVar8 = proc_7F0CBB0C(uVar5,param_4); - if (puVar8 != NULL) { - uVar5 = *param_1; - puVar7 = proc_7F0CDEA8(puVar7,puVar6,uVar5 >> 0x16 & 3,uVar5 >> 0x14 & 3, - uVar5 >> 0x12 & 3,puVar8,uVar5 >> 0xe & 0xf,uVar5 >> 10 & 0xf, - param_1[1] >> 0x18); - } - break; - case 2: - uVar13 = uVar15 >> 0x16 & 3; - uVar12 = uVar15 >> 0x14 & 3; - uVar15 = uVar15 >> 0x12 & 3; - if (bVar3) { - piVar9 = (int *)(DAT_800483c8 + uVar5 * 4); - puVar7 = proc_7F0CDFA8(puVar7,puVar6,uVar13,uVar12,uVar15, - 0xf - (uint)(*(byte *)((int)piVar9 + 1) >> 5), - 0xf - ((uint)(*piVar9 << 0xb) >> 0x1d),(uint)*(byte *)piVar9); - *puVar7 = 0xba001402; - puVar7[1] = 0x100000; - puVar7[3] = 0x10000; - puVar7[2] = 0xba001001; - puVar7[5] = 0x40000; - puVar7[4] = 0xba001102; - puVar7 = puVar7 + 6; - } - else { - puVar7 = proc_7F0CDE18(puVar7,puVar6,uVar13,uVar12,uVar15); - } - break; - case 3: - puVar7 = proc_7F0CE0AC(puVar7,puVar6,uVar15 >> 0x16 & 3,uVar15 >> 0x14 & 3, - uVar15 >> 0x12 & 3); - break; - case 4: - puVar7 = proc_7F0CE064(puVar7,puVar6,uVar15 >> 0x16 & 3,uVar15 >> 0x14 & 3, - uVar15 >> 0x12 & 3); - } - if (imageID == 0x5e4) { - puVar7 = proc_7F09343C(puVar7,1); - proc_7F0CC4C8(); - } - if (imageID == 0x5e7) { - puVar7 = proc_7F09365C(puVar7,1); - proc_7F0CC4C8(); - } - lVar11 = check_if_imageID_is_light(imageID); - if (lVar11 != 0) { - bVar4 = true; - add_entry_to_init_lightfixture_table(puVar7); - } - } - } - } - else { - if (bVar1 == 0xe7) { - bVar2 = true; - *puVar6 = *param_1; - puVar6[1] = param_1[1]; - puVar7 = puVar6 + 2; - goto LAB_7f0ce738; - } - uVar5 = *param_1; + image = *param_1; LAB_7f0ce724: - *puVar6 = uVar5; - puVar6[1] = param_1[1]; - puVar7 = puVar6 + 2; - } + *(uint *)pGVar5 = image; + *(uint *)((int)pGVar5 + 4) = param_1[1]; + DL = pGVar5 + 1; + } LAB_7f0ce738: - param_1 = param_1 + 2; - param_2 += -1; - puVar6 = puVar7; - } while( true ); + param_1 = param_1 + 2; + param_2 += -1; + pGVar5 = DL; + } while( true ); } @@ -141047,44 +140344,44 @@ LAB_7f0ce738: void proc_7F0CE794(int param_1,int param_2,int param_3) { - undefined4 uVar1; - undefined4 uVar2; - int iVar3; - undefined4 *puVar4; - int iVar5; - int iVar6; - undefined4 *puVar7; - - iVar5 = (param_3 >> 3) + -1; - iVar6 = iVar5 * 8; - puVar7 = (undefined4 *)(iVar6 + param_1); - puVar4 = (undefined4 *)(iVar6 + param_2); - iVar6 = param_3 >> 3; - while (iVar3 = iVar5, iVar6 != 0) { - uVar1 = *puVar7; - uVar2 = puVar7[1]; - puVar7 = puVar7 + -2; - *puVar4 = uVar1; - puVar4[1] = uVar2; - iVar5 = iVar3 + -1; - puVar4 = puVar4 + -2; - iVar6 = iVar3; - } - return; + undefined4 uVar1; + undefined4 uVar2; + int iVar3; + undefined4 *puVar4; + int iVar5; + int iVar6; + undefined4 *puVar7; + + iVar5 = (param_3 >> 3) + -1; + iVar6 = iVar5 * 8; + puVar7 = (undefined4 *)(iVar6 + param_1); + puVar4 = (undefined4 *)(iVar6 + param_2); + iVar6 = param_3 >> 3; + while (iVar3 = iVar5, iVar6 != 0) { + uVar1 = *puVar7; + uVar2 = puVar7[1]; + puVar7 = puVar7 + -2; + *puVar4 = uVar1; + puVar4[1] = uVar2; + iVar5 = iVar3 + -1; + puVar4 = puVar4 + -2; + iVar6 = iVar3; + } + return; } -undefined4 decompressdata(int source,int target,int buffer) +u8 * decompressdata(u8 *source,u8 *target,u8 *buffer) { - DAT_8008d350 = source + 2; - wp_ = 0; - inptr_ = 0; - DAT_8008d354 = target; - DAT_8008d360 = buffer; - loop_to_decompress_entire_file(); - return wp_; + DAT_8008d350 = source + 2; + wp_ = NULL; + inptr_ = 0; + DAT_8008d354 = target; + DAT_8008d360 = buffer; + loop_to_decompress_entire_file(); + return wp_; } @@ -141092,7 +140389,7 @@ undefined4 decompressdata(int source,int target,int buffer) int proc_7F0CE894(void) { - return DAT_8008d350 + inptr_; + return DAT_8008d350 + inptr_; } @@ -141105,272 +140402,273 @@ ulonglong proc_7F0CE8B0(int *param_1,uint param_2,uint param_3,int param_4,int p ,uint *param_7) { - uint *puVar1; - uint uVar2; - uint *puVar3; - int iVar4; - int iVar5; - uint uVar6; - uint uVar7; - int *piVar8; - uint *puVar9; - int iVar10; - uint uVar11; - uint *puVar12; - int iVar13; - uint uVar14; - undefined4 *puVar15; - uint uVar16; - uint uVar17; - int *piVar18; - int *piVar19; - uint *puVar20; - uint uVar21; - uint uVar22; - uint uVar23; - uint uVar24; - uint *puStack1436; - uint auStack1404 [2]; - int aiStack1396 [16]; - uint auStack1332 [288]; - uint auStack180 [16]; - undefined4 uStack116; - uint uStack112; - uint uStack72; - int aiStack68 [15]; - int aiStack8 [2]; - - bzero(&uStack72,0x44); - uVar16 = 1; - uVar21 = param_2; - piVar18 = param_1; - if (-(param_2 & 3) == 0) goto LAB_7f0ce948; - uVar21 = param_2; - piVar18 = param_1; - do { - iVar5 = *piVar18; - uVar21 -= 1; - piVar18 = piVar18 + 1; - puVar3 = &uStack72 + iVar5; - *puVar3 = *puVar3 + 1; - } while (-(param_2 & 3) + param_2 != uVar21); - while (uVar21 != 0) { + uint *puVar1; + uint *puVar2; + uint uVar3; + uint *puVar4; + int iVar5; + uint uVar6; + uint uVar7; + uint *puVar8; + uint *puVar9; + uint uVar10; + uint uVar11; + int iVar12; + int iVar13; + uint uVar14; + uint uVar15; + uint uVar16; + int *piVar17; + uint uVar18; + uint uVar19; + uint uStackX4; + uint *puStack1436; + int iStack1412; + uint auStack1404 [18]; + uint auStack1332 [288]; + uint auStack180 [16]; + undefined4 uStack116; + uint uStack112; + uint uStack80; + uint auStack72 [16]; + int aiStack8 [2]; + + uStackX4 = param_2; + bzero(auStack72,0x44); + uVar15 = 1; + uVar18 = uStackX4; + piVar17 = param_1; + if (-(uStackX4 & 3) == 0) goto LAB_7f0ce948; + do { + iVar12 = *piVar17; + uVar18 -= 1; + piVar17 = piVar17 + 1; + puVar4 = auStack72 + iVar12; + *puVar4 = *puVar4 + 1; + } while (-(uStackX4 & 3) + uStackX4 != uVar18); + while (uVar18 != 0) { LAB_7f0ce948: - uVar21 -= 4; - puVar3 = &uStack72 + *piVar18; - *puVar3 = *puVar3 + 1; - puVar3 = &uStack72 + piVar18[1]; - *puVar3 = *puVar3 + 1; - puVar3 = &uStack72 + piVar18[2]; - *puVar3 = *puVar3 + 1; - puVar3 = &uStack72 + piVar18[3]; - *puVar3 = *puVar3 + 1; - piVar18 = piVar18 + 4; - } - puVar3 = (uint *)aiStack68; - if (param_2 == uStack72) { - *param_6 = 0; - *param_7 = 0; - return 0; - } - do { - if (*puVar3 != 0) break; - uVar16 += 1; - puVar3 = puVar3 + 1; - } while (uVar16 != 0x11); - uVar21 = *param_7; - if (*param_7 < uVar16) { - uVar21 = uVar16; - } - uVar22 = 0x10; - piVar18 = aiStack8; - do { - if (*piVar18 != 0) break; - uVar22 -= 1; - piVar18 = piVar18 + -1; - } while (uVar22 != 0); - if (uVar22 < uVar21) { - uVar21 = uVar22; - } - *param_7 = uVar21; - iVar5 = 1 << (uVar16 & 0x1f); - if (uVar16 < uVar22) { - do { - uVar23 = *puVar3; - puVar3 = puVar3 + 1; - iVar5 = (iVar5 - uVar23) * 2; - } while (puVar3 < &uStack72 + uVar22); - } - uVar23 = uVar22 - 1; - iVar10 = 0; - iVar5 -= *piVar18; - *piVar18 = *piVar18 + iVar5; - piVar19 = aiStack68; - piVar8 = aiStack1396; - puVar3 = (uint *)(piVar18 + -1); - if (uVar23 != 0) { - if (-(uVar23 & 3) != 0) { - do { - puVar3 = puVar3 + -1; - piVar18 = piVar8 + 1; - iVar10 += *piVar19; - *piVar8 = iVar10; - piVar19 = piVar19 + 1; - piVar8 = piVar18; - } while (&uStack72 + -(uVar23 & 3) + uVar23 != puVar3); - piVar8 = piVar18; - if (puVar3 == &uStack72) goto LAB_7f0ceb2c; + uVar18 -= 4; + puVar4 = auStack72 + *piVar17; + *puVar4 = *puVar4 + 1; + puVar4 = auStack72 + piVar17[1]; + *puVar4 = *puVar4 + 1; + puVar4 = auStack72 + piVar17[2]; + *puVar4 = *puVar4 + 1; + puVar4 = auStack72 + piVar17[3]; + *puVar4 = *puVar4 + 1; + piVar17 = piVar17 + 4; + } + puVar4 = auStack72 + 1; + if (uStackX4 == auStack72[0]) { + *param_6 = 0; + *param_7 = 0; + return 0; } do { - iVar13 = *piVar19; - puVar3 = puVar3 + -4; - *piVar8 = iVar10 + iVar13; - iVar10 = iVar10 + iVar13 + piVar19[1]; - piVar8[1] = iVar10; - iVar10 += piVar19[2]; - piVar8[2] = iVar10; - iVar10 += piVar19[3]; - piVar8[3] = iVar10; - piVar19 = piVar19 + 4; - piVar8 = piVar8 + 4; - } while (puVar3 != &uStack72); - } -LAB_7f0ceb2c: - uVar23 = 0; - puVar3 = auStack1332; - iVar10 = *param_1; - while( true ) { - param_1 = param_1 + 1; - if (iVar10 != 0) { - uVar24 = auStack1404[iVar10]; - puVar3[uVar24] = uVar23; - auStack1404[iVar10] = uVar24 + 1; + if (*puVar4 != 0) break; + uVar15 += 1; + puVar4 = puVar4 + 1; + } while (uVar15 != 0x11); + uVar18 = *param_7; + if (*param_7 < uVar15) { + uVar18 = uVar15; } - uVar23 += 1; - if (param_2 <= uVar23) break; - iVar10 = *param_1; - } - uVar24 = 0; - iVar10 = -1; - uVar23 = -uVar21; - uVar7 = 0; - uVar6 = 0; - if ((int)uVar16 <= (int)uVar22) { - puStack1436 = &uStack72 + uVar16; + uStack80 = 0x10; + piVar17 = aiStack8; do { - iVar13 = iVar10 * 4; - if (*puStack1436 != 0) { - puVar12 = auStack1404 + iVar10; - uVar14 = 1 << (uVar16 + 0x1f & 0x1f); - puVar20 = puVar3; - uVar11 = *puStack1436; + if (*piVar17 != 0) break; + uStack80 -= 1; + piVar17 = piVar17 + -1; + } while (uStack80 != 0); + if (uStack80 < uVar18) { + uVar18 = uStack80; + } + *param_7 = uVar18; + iStack1412 = 1 << (uVar15 & 0x1f); + if (uVar15 < uStack80) { do { - uVar17 = uVar11 - 1; - if ((int)(uVar23 + uVar21) < (int)uVar16) { - uVar2 = uVar23 + uVar21; - puVar3 = (uint *)((int)auStack180 + iVar13); + uVar10 = *puVar4; + puVar4 = puVar4 + 1; + iStack1412 = (iStack1412 - uVar10) * 2; + } while (puVar4 < auStack72 + uStack80); + } + uVar19 = uStack80 - 1; + uVar10 = 0; + iStack1412 -= *piVar17; + *piVar17 = *piVar17 + iStack1412; + auStack1404[1] = 0; + puVar4 = auStack72 + 1; + puVar9 = auStack1404 + 2; + puVar2 = (uint *)(piVar17 + -1); + if (uVar19 != 0) { + if (-(uVar19 & 3) != 0) { do { - uVar23 = uVar2; - iVar10 += 1; - iVar13 += 4; - puVar12 = puVar12 + 1; - uVar7 = uVar22 - uVar23; - if (uVar21 < uVar22 - uVar23) { - uVar7 = uVar21; - } - uVar2 = uVar16 - uVar23; - uVar6 = 1 << (uVar2 & 0x1f); - if (uVar11 < uVar6) { - iVar4 = (uVar6 - uVar17) + -1; - puVar9 = &uStack72 + uVar16; - while (uVar2 += 1, uVar2 < uVar7) { - puVar1 = puVar9 + 1; - puVar9 = puVar9 + 1; - if ((uint)(iVar4 * 2) <= *puVar1) break; - iVar4 = iVar4 * 2 - *puVar1; - } - } - uVar6 = 1 << (uVar2 & 0x1f); - iVar4 = hufts_ * 8; - hufts_ = hufts_ + uVar6 + 1; - iVar4 += DAT_8008d360; - uVar7 = iVar4 + 8; - *param_6 = uVar7; - *(undefined4 *)(iVar4 + 4) = 0; - param_6 = (uint *)(iVar4 + 4); - puVar3[1] = uVar7; - if (iVar10 != 0) { - *puVar12 = uVar24; - uStack116._1_3_ = CONCAT12((char)uVar21,uStack116._2_2_); - uStack116 = CONCAT13((char)uVar2 + '\x10',uStack116._1_3_); - puVar15 = (undefined4 *)(*puVar3 + (uVar24 >> (uVar23 - uVar21 & 0x1f)) * 8); - *puVar15 = uStack116; - puVar15[1] = uVar7; - uStack112 = uVar7; - } - uVar2 = uVar23 + uVar21; - puVar3 = puVar3 + 1; - } while ((int)(uVar23 + uVar21) < (int)uVar16); - } - uStack116._1_3_ = CONCAT12((char)(uVar16 - uVar23),uStack116._2_2_); - if (puVar20 < auStack1332 + param_2) { - uVar11 = *puVar20; - if (uVar11 < param_3) { - if (uVar11 < 0x100) { - uStack116 = CONCAT13(0x10,uStack116._1_3_); - } - else { - uStack116 = CONCAT13(0xf,uStack116._1_3_); - } - puVar3 = puVar20 + 1; - uStack112 = uStack112 & 0xffff | *puVar20 << 0x10; + puVar2 = puVar2 + -1; + puVar8 = puVar9 + 1; + uVar10 += *puVar4; + *puVar9 = uVar10; + puVar4 = puVar4 + 1; + puVar9 = puVar8; + } while (auStack72 + -(uVar19 & 3) + uVar19 != puVar2); + if (puVar2 == auStack72) goto LAB_7f0ceb2c; + } + do { + uVar19 = *puVar4; + puVar2 = puVar2 + -4; + *puVar9 = uVar10 + uVar19; + uVar10 = uVar10 + uVar19 + puVar4[1]; + puVar9[1] = uVar10; + uVar10 += puVar4[2]; + puVar9[2] = uVar10; + uVar10 += puVar4[3]; + puVar9[3] = uVar10; + puVar4 = puVar4 + 4; + puVar9 = puVar9 + 4; + } while (puVar2 != auStack72); + } +LAB_7f0ceb2c: + uVar10 = 0; + puVar4 = auStack1332; + iVar12 = *param_1; + while( true ) { + param_1 = param_1 + 1; + if (iVar12 != 0) { + uVar19 = auStack1404[iVar12]; + puVar4[uVar19] = uVar10; + auStack1404[iVar12] = uVar19 + 1; + } + uVar10 += 1; + if (uStackX4 <= uVar10) break; + iVar12 = *param_1; + } + uVar19 = 0; + auStack1404[0] = 0; + iVar12 = -1; + uVar10 = -uVar18; + auStack180[0] = 0; + uVar7 = 0; + uVar6 = 0; + if ((int)uVar15 <= (int)uStack80) { + puStack1436 = auStack72 + uVar15; + do { + iVar13 = iVar12 * 4; + if (*puStack1436 != 0) { + puVar2 = auStack1404 + iVar12; + uVar14 = 1 << (uVar15 + 0x1f & 0x1f); + puVar9 = puVar4; + uVar11 = *puStack1436; + do { + uVar16 = uVar11 - 1; + if ((int)(uVar10 + uVar18) < (int)uVar15) { + uVar3 = uVar10 + uVar18; + puVar4 = (uint *)((int)auStack180 + iVar13); + do { + uVar10 = uVar3; + iVar12 += 1; + iVar13 += 4; + puVar2 = puVar2 + 1; + uVar7 = uStack80 - uVar10; + if (uVar18 < uStack80 - uVar10) { + uVar7 = uVar18; + } + uVar3 = uVar15 - uVar10; + uVar6 = 1 << (uVar3 & 0x1f); + if (uVar11 < uVar6) { + iVar5 = (uVar6 - uVar16) + -1; + puVar8 = auStack72 + uVar15; + while (uVar3 += 1, uVar3 < uVar7) { + puVar1 = puVar8 + 1; + puVar8 = puVar8 + 1; + if ((uint)(iVar5 * 2) <= *puVar1) break; + iVar5 = iVar5 * 2 - *puVar1; + } + } + uVar6 = 1 << (uVar3 & 0x1f); + iVar5 = hufts_ * 8; + hufts_ = hufts_ + uVar6 + 1; + iVar5 += DAT_8008d360; + uVar7 = iVar5 + 8; + *param_6 = uVar7; + *(undefined4 *)(iVar5 + 4) = 0; + param_6 = (uint *)(iVar5 + 4); + puVar4[1] = uVar7; + if (iVar12 != 0) { + *puVar2 = uVar19; + uStack116._1_3_ = CONCAT12((char)uVar18,uStack116._2_2_); + uStack116 = CONCAT13((char)uVar3 + '\x10',uStack116._1_3_); + uStack112 = uVar7; + puVar8 = (uint *)(*puVar4 + (uVar19 >> (uVar10 - uVar18 & 0x1f)) * 8 + ); + *puVar8 = uStack116; + puVar8[1] = uVar7; + } + uVar3 = uVar10 + uVar18; + puVar4 = puVar4 + 1; + } while ((int)(uVar10 + uVar18) < (int)uVar15); + } + uStack116._1_3_ = CONCAT12((char)(uVar15 - uVar10),uStack116._2_2_); + uStack116 = uStack116 & 0xff000000 | (uint)uStack116._1_3_; + if (puVar9 < auStack1332 + uStackX4) { + uVar11 = *puVar9; + if (uVar11 < param_3) { + if (uVar11 < 0x100) { + uStack116 = CONCAT13(0x10,uStack116._1_3_); + } + else { + uStack116 = CONCAT13(0xf,uStack116._1_3_); + } + puVar4 = puVar9 + 1; + uStack112 = uStack112 & 0xffff | *puVar9 << 0x10; + } + else { + puVar4 = puVar9 + 1; + uStack116 = CONCAT13(*(undefined *)((uVar11 - param_3) + param_5), + uStack116._1_3_); + uStack112 = uStack112 & 0xffff | + (uint)*(ushort *)(param_4 + *puVar9 * 2 + param_3 * -2) << + 0x10; + } + } + else { + uStack116 = CONCAT13(99,uStack116._1_3_); + puVar4 = puVar9; + } + uVar11 = uVar19 >> (uVar10 & 0x1f); + if (uVar11 < uVar6) { + do { + puVar9 = (uint *)(uVar7 + uVar11 * 8); + *puVar9 = uStack116; + uVar11 += 1 << (uVar15 - uVar10 & 0x1f); + puVar9[1] = uStack112; + } while (uVar11 < uVar6); + } + uVar3 = uVar19 & uVar14; + uVar11 = uVar14; + while (uVar3 != 0) { + uVar19 ^= uVar11; + uVar3 = uVar19 & uVar11 >> 1; + uVar11 = uVar11 >> 1; + } + uVar19 ^= uVar11; + if ((uVar19 & (1 << (uVar10 & 0x1f)) - 1U) != *puVar2) { + do { + uVar10 -= uVar18; + puVar9 = puVar2 + -1; + iVar12 += -1; + iVar13 += -4; + puVar2 = puVar2 + -1; + } while ((uVar19 & (1 << (uVar10 & 0x1f)) - 1U) != *puVar9); + } + puVar9 = puVar4; + uVar11 = uVar16; + } while (uVar16 != 0); } - else { - puVar3 = puVar20 + 1; - uStack116 = CONCAT13(*(undefined *)((uVar11 - param_3) + param_5),uStack116._1_3_); - uStack112 = uStack112 & 0xffff | - (uint)*(ushort *)(param_4 + *puVar20 * 2 + param_3 * -2) << 0x10; - } - } - else { - uStack116 = CONCAT13(99,uStack116._1_3_); - puVar3 = puVar20; - } - uVar11 = uVar24 >> (uVar23 & 0x1f); - if (uVar11 < uVar6) { - do { - puVar15 = (undefined4 *)(uVar7 + uVar11 * 8); - *puVar15 = uStack116; - uVar11 += 1 << (uVar16 - uVar23 & 0x1f); - puVar15[1] = uStack112; - } while (uVar11 < uVar6); - } - uVar2 = uVar24 & uVar14; - uVar11 = uVar14; - while (uVar2 != 0) { - uVar24 ^= uVar11; - uVar2 = uVar24 & uVar11 >> 1; - uVar11 = uVar11 >> 1; - } - uVar24 ^= uVar11; - if ((uVar24 & (1 << (uVar23 & 0x1f)) - 1U) != *puVar12) { - do { - uVar23 -= uVar21; - puVar20 = puVar12 + -1; - iVar10 += -1; - iVar13 += -4; - puVar12 = puVar12 + -1; - } while ((uVar24 & (1 << (uVar23 & 0x1f)) - 1U) != *puVar20); - } - puVar20 = puVar3; - uVar11 = uVar17; - } while (uVar17 != 0); - } - uVar16 += 1; - puStack1436 = puStack1436 + 1; - } while ((int)uVar16 <= (int)uVar22); - } - return (ulonglong)(iVar5 != 0 && uVar22 != 1); + uVar15 += 1; + puStack1436 = puStack1436 + 1; + } while ((int)uVar15 <= (int)uStack80); + } + return (ulonglong)(iStack1412 != 0 && uStack80 != 1); } @@ -141378,188 +140676,189 @@ LAB_7f0ceb2c: undefined8 proc_7F0CEEF0(int param_1,int param_2,ulonglong param_3,uint param_4) { - byte bVar1; - undefined uVar2; - uint uVar3; - bool bVar4; - undefined *puVar5; - int iVar6; - byte *pbVar7; - uint __n; - ulonglong uVar8; - ulonglong uVar9; - byte *pbVar10; - undefined *puVar11; - ulonglong uVar12; - int iVar13; - uint uVar14; - ulonglong uVar15; - uint uVar16; - uint uVar17; - int iVar18; - - iVar6 = (int)param_3; - uVar12 = SEXT48(bk_); - uVar8 = (ulonglong)zlib_masks[iVar6]; - uVar9 = (ulonglong)zlib_masks[param_4]; - iVar18 = wp_; - uVar16 = bb_; - do { - bVar4 = uVar12 < param_3; - while( true ) { - if (bVar4) { - do { - pbVar7 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - __n = (uint)uVar12; - uVar12 = SEXT48((int)(__n + 8)); - uVar16 |= (uint)*pbVar7 << (__n & 0x1f); - } while (uVar12 < param_3); - } - __n = (uint)uVar12; - pbVar7 = (byte *)((uVar16 & (uint)uVar8) * 8 + param_1); - uVar15 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) { - bVar1 = pbVar7[1]; - } - else { - bVar1 = pbVar7[1]; + byte bVar1; + undefined uVar2; + uint uVar3; + bool bVar4; + undefined *puVar5; + int iVar6; + byte *pbVar7; + uint __n; + ulonglong uVar8; + ulonglong uVar9; + byte *pbVar10; + undefined *puVar11; + ulonglong uVar12; + int iVar13; + uint uVar14; + ulonglong uVar15; + uint uVar16; + uint uVar17; + int iVar18; + + iVar6 = (int)param_3; + uVar12 = SEXT48(bk_); + uVar8 = (ulonglong)zlib_masks[iVar6]; + uVar9 = (ulonglong)zlib_masks[param_4]; + iVar18 = wp_; + uVar16 = bb_; + do { + bVar4 = uVar12 < param_3; while( true ) { - iVar13 = (int)uVar15 + -0x10; - __n = (int)uVar12 - (uint)bVar1; - uVar16 >>= (uint)bVar1 & 0x1f; - while (uVar12 = SEXT48((int)__n), uVar12 < (ulonglong)(longlong)iVar13) { - pbVar10 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar14 = __n & 0x1f; - __n += 8; - uVar16 |= (uint)*pbVar10 << uVar14; - } - pbVar7 = (byte *)(((uint)zlib_masks[iVar13] & uVar16) * 8 + *(int *)(pbVar7 + 4)); - uVar15 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) break; - bVar1 = pbVar7[1]; - } - bVar1 = pbVar7[1]; - } - uVar16 >>= (uint)bVar1 & 0x1f; - iVar13 = __n - (uint)bVar1; - uVar12 = SEXT48(iVar13); - if (uVar15 == 0x10) break; - if (uVar15 == 0xf) { - wp_ = iVar18; - bb_ = uVar16; - bk_ = iVar13; - return 0; - } - __n = (uint)uVar15; - while (uVar12 < uVar15) { - pbVar10 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar14 = (uint)uVar12; - iVar13 = uVar14 + 8; - uVar12 = SEXT48(iVar13); - uVar16 |= (uint)*pbVar10 << (uVar14 & 0x1f); - } - uVar14 = iVar13 - __n; - uVar17 = uVar16 >> (__n & 0x1f); - __n = ((uint)zlib_masks[__n] & uVar16) + (uint)*(ushort *)(pbVar7 + 4); - while (uVar14 < param_4) { - pbVar7 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar16 = uVar14 & 0x1f; - uVar14 += 8; - uVar17 |= (uint)*pbVar7 << uVar16; - } - pbVar7 = (byte *)((uVar17 & (uint)uVar9) * 8 + param_2); - uVar12 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) { - bVar1 = pbVar7[1]; - } - else { - bVar1 = pbVar7[1]; - while( true ) { - uVar16 = (int)uVar12 - 0x10; - uVar14 -= (uint)bVar1; - uVar17 >>= (uint)bVar1 & 0x1f; - while (uVar14 < uVar16) { - pbVar10 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar3 = uVar14 & 0x1f; - uVar14 += 8; - uVar17 |= (uint)*pbVar10 << uVar3; - } - pbVar7 = (byte *)(((uint)zlib_masks[uVar16] & uVar17) * 8 + *(int *)(pbVar7 + 4)); - uVar12 = (ulonglong)*pbVar7; - if (*pbVar7 < 0x11) break; - bVar1 = pbVar7[1]; - } - bVar1 = pbVar7[1]; - } - uVar14 -= (uint)bVar1; - uVar17 >>= (uint)bVar1 & 0x1f; - while ((ulonglong)(longlong)(int)uVar14 < uVar12) { - pbVar10 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar16 = uVar14 & 0x1f; - uVar14 += 8; - uVar17 |= (uint)*pbVar10 << uVar16; - } - uVar16 = (uint)uVar12; - uVar12 = SEXT48((int)(uVar14 - uVar16)); - iVar13 = (iVar18 - (uint)*(ushort *)(pbVar7 + 4)) - ((uint)zlib_masks[uVar16] & uVar17); - uVar16 = uVar17 >> (uVar16 & 0x1f); - do { - if ((uint)(iVar18 - iVar13) < __n) { - do { - puVar5 = (undefined *)(DAT_8008d354 + iVar18); - if (((undefined *)(DAT_8008d350 + inptr_) <= puVar5) && - (puVar5 + -(int)(undefined *)(DAT_8008d350 + inptr_) < (undefined *)0x8000)) { - do { - // WARNING: Do nothing block with infinite loop - } while( true ); + if (bVar4) { + do { + pbVar7 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + __n = (uint)uVar12; + uVar12 = SEXT48((int)(__n + 8)); + uVar16 |= (uint)*pbVar7 << (__n & 0x1f); + } while (uVar12 < param_3); } - puVar11 = (undefined *)(iVar13 + DAT_8008d354); - __n -= 1; - iVar13 += 1; - iVar18 += 1; - *puVar5 = *puVar11; - } while (__n != 0); + __n = (uint)uVar12; + pbVar7 = (byte *)((uVar16 & (uint)uVar8) * 8 + param_1); + uVar15 = (ulonglong)*pbVar7; + if (*pbVar7 < 0x11) { + bVar1 = pbVar7[1]; + } + else { + bVar1 = pbVar7[1]; + while( true ) { + iVar13 = (int)uVar15 + -0x10; + __n = (int)uVar12 - (uint)bVar1; + uVar16 >>= (uint)bVar1 & 0x1f; + while (uVar12 = SEXT48((int)__n), uVar12 < (ulonglong)(longlong)iVar13) { + pbVar10 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar14 = __n & 0x1f; + __n += 8; + uVar16 |= (uint)*pbVar10 << uVar14; + } + pbVar7 = (byte *)((zlib_masks[iVar13] & uVar16) * 8 + *(int *)(pbVar7 + 4)); + uVar15 = (ulonglong)*pbVar7; + if (*pbVar7 < 0x11) break; + bVar1 = pbVar7[1]; + } + bVar1 = pbVar7[1]; + } + uVar16 >>= (uint)bVar1 & 0x1f; + iVar13 = __n - (uint)bVar1; + uVar12 = SEXT48(iVar13); + if (uVar15 == 0x10) break; + if (uVar15 == 0xf) { + wp_ = iVar18; + bb_ = uVar16; + bk_ = iVar13; + return 0; + } + __n = (uint)uVar15; + while (uVar12 < uVar15) { + pbVar10 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar14 = (uint)uVar12; + iVar13 = uVar14 + 8; + uVar12 = SEXT48(iVar13); + uVar16 |= (uint)*pbVar10 << (uVar14 & 0x1f); + } + uVar14 = iVar13 - __n; + uVar17 = uVar16 >> (__n & 0x1f); + __n = (zlib_masks[__n] & uVar16) + (uint)*(ushort *)(pbVar7 + 4); + while (uVar14 < param_4) { + pbVar7 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar16 = uVar14 & 0x1f; + uVar14 += 8; + uVar17 |= (uint)*pbVar7 << uVar16; + } + pbVar7 = (byte *)((uVar17 & (uint)uVar9) * 8 + param_2); + uVar12 = (ulonglong)*pbVar7; + if (*pbVar7 < 0x11) { + bVar1 = pbVar7[1]; + } + else { + bVar1 = pbVar7[1]; + while( true ) { + uVar16 = (int)uVar12 - 0x10; + uVar14 -= (uint)bVar1; + uVar17 >>= (uint)bVar1 & 0x1f; + while (uVar14 < uVar16) { + pbVar10 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar3 = uVar14 & 0x1f; + uVar14 += 8; + uVar17 |= (uint)*pbVar10 << uVar3; + } + pbVar7 = (byte *)((zlib_masks[uVar16] & uVar17) * 8 + *(int *)(pbVar7 + 4)); + uVar12 = (ulonglong)*pbVar7; + if (*pbVar7 < 0x11) break; + bVar1 = pbVar7[1]; + } + bVar1 = pbVar7[1]; + } + uVar14 -= (uint)bVar1; + uVar17 >>= (uint)bVar1 & 0x1f; + while ((ulonglong)(longlong)(int)uVar14 < uVar12) { + pbVar10 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar16 = uVar14 & 0x1f; + uVar14 += 8; + uVar17 |= (uint)*pbVar10 << uVar16; + } + uVar16 = (uint)uVar12; + uVar12 = SEXT48((int)(uVar14 - uVar16)); + iVar13 = (iVar18 - (uint)*(ushort *)(pbVar7 + 4)) - (zlib_masks[uVar16] & uVar17); + uVar16 = uVar17 >> (uVar16 & 0x1f); + do { + if ((uint)(iVar18 - iVar13) < __n) { + do { + puVar5 = (undefined *)(DAT_8008d354 + iVar18); + if (((undefined *)(DAT_8008d350 + inptr_) <= puVar5) && + (puVar5 + -(int)(undefined *)(DAT_8008d350 + inptr_) < + (undefined *)0x8000)) { + do { + // WARNING: Do nothing block with infinite loop + } while( true ); + } + puVar11 = (undefined *)(iVar13 + DAT_8008d354); + __n -= 1; + iVar13 += 1; + iVar18 += 1; + *puVar5 = *puVar11; + } while (__n != 0); + } + else { + uVar14 = (iVar18 + __n + DAT_8008d354) - 1; + if (((uint)(DAT_8008d350 + inptr_) <= uVar14) && + (uVar14 - (DAT_8008d350 + inptr_) < 0x8000)) { + do { + // WARNING: Do nothing block with infinite loop + } while( true ); + } + memcpy((void *)(DAT_8008d354 + iVar18),(void *)(DAT_8008d354 + iVar13),__n); + uVar8 = SEXT48((int)uVar8); + uVar9 = SEXT48((int)uVar9); + param_3 = SEXT48(iVar6); + iVar13 += __n; + iVar18 = iVar18 + __n; + } + __n = 0; + } while (false); + bVar4 = uVar12 < param_3; + } + puVar5 = (undefined *)(DAT_8008d354 + iVar18); + if (puVar5 < (undefined *)(DAT_8008d350 + inptr_)) { + uVar2 = (undefined)*(undefined2 *)(pbVar7 + 4); } else { - uVar14 = (iVar18 + __n + DAT_8008d354) - 1; - if (((uint)(DAT_8008d350 + inptr_) <= uVar14) && - (uVar14 - (DAT_8008d350 + inptr_) < 0x8000)) { - do { + if (puVar5 + -(int)(undefined *)(DAT_8008d350 + inptr_) < (undefined *)0x8000) { + do { // WARNING: Do nothing block with infinite loop - } while( true ); - } - memcpy((void *)(DAT_8008d354 + iVar18),(void *)(DAT_8008d354 + iVar13),__n); - uVar8 = SEXT48((int)uVar8); - uVar9 = SEXT48((int)uVar9); - param_3 = SEXT48(iVar6); - iVar13 += __n; - iVar18 = iVar18 + __n; + } while( true ); + } + uVar2 = (undefined)*(undefined2 *)(pbVar7 + 4); } - __n = 0; - } while (false); - bVar4 = uVar12 < param_3; - } - puVar5 = (undefined *)(DAT_8008d354 + iVar18); - if (puVar5 < (undefined *)(DAT_8008d350 + inptr_)) { - uVar2 = (undefined)*(undefined2 *)(pbVar7 + 4); - } - else { - if (puVar5 + -(int)(undefined *)(DAT_8008d350 + inptr_) < (undefined *)0x8000) { - do { - // WARNING: Do nothing block with infinite loop - } while( true ); - } - uVar2 = (undefined)*(undefined2 *)(pbVar7 + 4); - } - iVar18 += 1; - *puVar5 = uVar2; - } while( true ); + iVar18 += 1; + *puVar5 = uVar2; + } while( true ); } @@ -141567,57 +140866,57 @@ undefined8 proc_7F0CEEF0(int param_1,int param_2,ulonglong param_3,uint param_4) undefined8 zlib_decompressor_type0(void) { - uint uVar1; - uint uVar2; - uint uVar3; - uint uVar4; - undefined *puVar5; - byte *pbVar6; - - uVar4 = bk_ - (bk_ & 7); - bb_ >>= bk_ & 7; - while (uVar4 < 0x10) { - pbVar6 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar3 = uVar4 & 0x1f; - uVar4 += 8; - bb_ |= (uint)*pbVar6 << uVar3; - } - uVar4 -= 0x10; - uVar2 = bb_ & 0xffff; - uVar3 = 0; - while (uVar4 < 0x10) { - pbVar6 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar1 = uVar4 & 0x1f; - uVar4 += 8; - uVar3 |= (uint)*pbVar6 << uVar1; - } - bk_ = uVar4 - 0x10; - bb_ = uVar3 >> 0x10; - while( true ) { - if (uVar2 == 0) { - return 0; + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + undefined *puVar5; + byte *pbVar6; + + uVar4 = bk_ - (bk_ & 7); + bb_ >>= bk_ & 7; + while (uVar4 < 0x10) { + pbVar6 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar3 = uVar4 & 0x1f; + uVar4 += 8; + bb_ |= (uint)*pbVar6 << uVar3; } - uVar2 -= 1; - while (bk_ < 8) { - pbVar6 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar4 = bk_ & 0x1f; - bk_ += 8; - bb_ |= (uint)*pbVar6 << uVar4; + uVar4 -= 0x10; + uVar2 = bb_ & 0xffff; + uVar3 = 0; + while (uVar4 < 0x10) { + pbVar6 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar1 = uVar4 & 0x1f; + uVar4 += 8; + uVar3 |= (uint)*pbVar6 << uVar1; } - puVar5 = (undefined *)(DAT_8008d354 + wp_); - if (((undefined *)(DAT_8008d350 + inptr_) <= puVar5) && - (puVar5 + -(int)(undefined *)(DAT_8008d350 + inptr_) < (undefined *)0x8000)) break; - *puVar5 = (char)bb_; - wp_ += 1; - bk_ -= 8; - bb_ = bb_ >> 8; - } - do { + bk_ = uVar4 - 0x10; + bb_ = uVar3 >> 0x10; + while( true ) { + if (uVar2 == 0) { + return 0; + } + uVar2 -= 1; + while (bk_ < 8) { + pbVar6 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar4 = bk_ & 0x1f; + bk_ += 8; + bb_ |= (uint)*pbVar6 << uVar4; + } + puVar5 = (undefined *)(DAT_8008d354 + wp_); + if (((undefined *)(DAT_8008d350 + inptr_) <= puVar5) && + (puVar5 + -(int)(undefined *)(DAT_8008d350 + inptr_) < (undefined *)0x8000)) break; + *puVar5 = (char)bb_; + wp_ += 1; + bk_ -= 8; + bb_ = bb_ >> 8; + } + do { // WARNING: Do nothing block with infinite loop - } while( true ); + } while( true ); } @@ -141625,70 +140924,65 @@ undefined8 zlib_decompressor_type0(void) undefined8 zlib_decompressor_type1(void) { - uint *puVar1; - uint *puVar2; - undefined4 *puVar3; - uint uStack1172; - undefined4 uStack1168; - undefined4 auStack1164 [28]; - undefined4 auStack1052 [114]; - uint auStack596 [112]; - uint auStack148 [24]; - uint auStack52 [8]; - uint uStack20; - uint uStack16; - uint uStack12; - uint auStack8 [2]; - - puVar1 = &uStack1172; - do { - puVar2 = puVar1 + 4; - puVar1[1] = 8; - puVar1[2] = 8; - puVar1[3] = 8; - *puVar1 = 8; - puVar1 = puVar2; - } while (puVar2 != auStack596); - if (puVar2 < auStack148) { - puVar1 = puVar2; + uint *puVar1; + uint *puVar2; + uint auStack1172 [256]; + uint auStack148 [24]; + uint auStack52 [8]; + uint uStack20; + uint uStack16; + uint uStack12; + uint auStack8 [2]; + + puVar1 = auStack1172; do { - puVar2 = puVar1 + 1; - *puVar1 = 9; - puVar1 = puVar2; - } while (puVar2 < auStack148); - } - if (puVar2 < auStack52) { - puVar1 = puVar2; + puVar2 = puVar1 + 4; + puVar1[1] = 8; + puVar1[2] = 8; + puVar1[3] = 8; + *puVar1 = 8; + puVar1 = puVar2; + } while (puVar2 != auStack1172 + 0x90); + if (puVar2 < auStack148) { + do { + puVar2 = puVar1 + 1; + *puVar1 = 9; + puVar1 = puVar2; + } while (puVar2 < auStack148); + } + if (puVar2 < auStack52) { + puVar1 = puVar2; + do { + puVar2 = puVar1 + 1; + *puVar1 = 7; + puVar1 = puVar2; + } while (puVar2 < auStack52); + } + if (puVar2 < &uStack20) { + do { + puVar1 = puVar2 + 1; + *puVar2 = 8; + puVar2 = puVar1; + } while (puVar1 < &uStack20); + } + uStack16 = 7; + proc_7F0CE8B0((int *)auStack1172,0x120,0x101,(int)zlib_lbase,(int)zlib_lextra,auStack8,&uStack16 + ); + auStack1172[1] = 5; + auStack1172[0] = 5; + puVar1 = auStack1172 + 2; do { - puVar2 = puVar1 + 1; - *puVar1 = 7; - puVar1 = puVar2; - } while (puVar2 < auStack52); - } - if (puVar2 < &uStack20) { - do { - puVar1 = puVar2 + 1; - *puVar2 = 8; - puVar2 = puVar1; - } while (puVar1 < &uStack20); - } - uStack16 = 7; - proc_7F0CE8B0((int *)&uStack1172,0x120,0x101,(int)zlib_lbase,(int)zlib_lextra,auStack8,&uStack16); - uStack1168 = 5; - uStack1172 = 5; - puVar3 = auStack1164; - do { - puVar3 = puVar3 + 4; - puVar3[1] = 5; - puVar3[2] = 5; - puVar3[3] = 5; - *puVar3 = 5; - puVar3 = puVar3; - } while (puVar3 != auStack1052); - uStack20 = 5; - proc_7F0CE8B0((int *)&uStack1172,0x1e,0,(int)zlib_dbase,(int)zlib_dextra,&uStack12,&uStack20); - proc_7F0CEEF0(auStack8[0],uStack12,(longlong)(int)uStack16,uStack20); - return 0; + puVar2 = puVar1 + 4; + puVar1[1] = 5; + puVar1[2] = 5; + puVar1[3] = 5; + *puVar1 = 5; + puVar1 = puVar2; + } while (puVar2 != auStack1172 + 0x1e); + uStack20 = 5; + proc_7F0CE8B0((int *)auStack1172,0x1e,0,(int)zlib_dbase,(int)zlib_dextra,&uStack12,&uStack20); + proc_7F0CEEF0(auStack8[0],uStack12,(longlong)(int)uStack16,uStack20); + return 0; } @@ -141696,204 +140990,204 @@ undefined8 zlib_decompressor_type1(void) undefined8 zlib_decompressor_type2(void) { - byte bVar1; - ushort uVar2; - ushort uVar3; - bool bVar4; - uint *puVar5; - uint uVar6; - int iVar7; - u8 *puVar8; - byte *pbVar9; - ulonglong uVar10; - uint uVar11; - uint uVar12; - uint local_528 [316]; - uint local_38; - uint local_34; - uint local_30; - uint local_2c; - u32 local_24; - uint local_20; - uint local_1c; - uint local_18 [6]; - - local_34 = bk_; - uVar6 = bk_; - uVar11 = bb_; - if (bk_ < 5) { - do { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - local_34 = uVar6 + 8; - uVar11 |= (uint)*pbVar9 << (uVar6 & 0x1f); - uVar6 = local_34; - } while (local_34 < 5); - } - local_34 -= 5; - local_2c = (uVar11 & 0x1f) + 0x101; - uVar11 >>= 5; - while (local_34 < 5) { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar6 = local_34 & 0x1f; - local_34 += 8; - uVar11 |= (uint)*pbVar9 << uVar6; - } - local_34 -= 5; - local_30 = (uVar11 & 0x1f) + 1; - uVar11 >>= 5; - while (local_34 < 4) { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar6 = local_34 & 0x1f; - local_34 += 8; - uVar11 |= (uint)*pbVar9 << uVar6; - } - local_38 = uVar11 >> 4; - local_34 -= 4; - uVar6 = 0; - if ((uVar11 & 0xf) != 0xfffffffc) { - puVar8 = zlib_order; - do { - uVar6 += 1; - while (local_34 < 3) { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar12 = local_34 & 0x1f; - local_34 += 8; - local_38 |= (uint)*pbVar9 << uVar12; - } - bVar1 = *puVar8; - uVar12 = local_38 & 7; - puVar8 = puVar8 + 1; - local_38 >>= 3; - local_528[(uint)bVar1] = uVar12; - local_34 -= 3; - } while (uVar6 != (uVar11 & 0xf) + 4); - } - if (uVar6 < 0x13) { - pbVar9 = zlib_order + uVar6; - do { - bVar1 = *pbVar9; - pbVar9 = pbVar9 + 1; - local_528[(uint)bVar1] = 0; - } while (pbVar9 < zlib_order + 0x13); - } - local_20 = 7; - proc_7F0CE8B0((int *)local_528,0x13,0x13,0,0,local_18,&local_20); - uVar6 = local_2c + local_30; - uVar2 = zlib_masks[local_20]; - uVar10 = 0; - uVar11 = 0; - bk_ = local_34; - bb_ = local_38; - if (uVar6 != 0) { - do { - while (bk_ < local_20) { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar12 = bk_ & 0x1f; - bk_ = bk_ + 8; - bb_ = bb_ | (uint)*pbVar9 << uVar12; - } - local_1c = (bb_ & (uint)uVar2) * 8 + local_18[0]; - bb_ >>= (uint)*(byte *)(local_1c + 1) & 0x1f; - bk_ -= (uint)*(byte *)(local_1c + 1); - uVar3 = *(ushort *)(local_1c + 4); - if (uVar3 < 0x10) { - local_528[uVar11] = (uint)uVar3; - uVar11 += 1; - uVar10 = (ulonglong)uVar3; -LAB_7f0cfae8: - bVar4 = uVar11 < uVar6; - } - else { - if (uVar3 != 0x10) { - uVar10 = 0; - if (uVar3 == 0x11) { - while (bk_ < 3) { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar12 = bk_ & 0x1f; - bk_ += 8; - bb_ |= (uint)*pbVar9 << uVar12; - } - uVar12 = bb_ & 7; - bb_ >>= 3; - bk_ -= 3; - iVar7 = uVar12 + 2; - if (uVar12 != 0xfffffffd) { - puVar5 = local_528 + uVar11; - do { - *puVar5 = 0; - uVar11 += 1; - puVar5 = puVar5 + 1; - bVar4 = iVar7 != 0; - iVar7 += -1; - } while (bVar4); - bVar4 = uVar11 < uVar6; - goto LAB_7f0cfaec; - } - } - else { - while (bk_ < 7) { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar12 = bk_ & 0x1f; - bk_ += 8; - bb_ |= (uint)*pbVar9 << uVar12; - } - uVar12 = bb_ & 0x7f; - bb_ >>= 7; - bk_ -= 7; - iVar7 = uVar12 + 10; - if (uVar12 != 0xfffffff5) { - puVar5 = local_528 + uVar11; - do { - *puVar5 = 0; - uVar11 += 1; - puVar5 = puVar5 + 1; - bVar4 = iVar7 != 0; - iVar7 += -1; - } while (bVar4); - } - } - goto LAB_7f0cfae8; - } - while (bk_ < 2) { - pbVar9 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar12 = bk_ & 0x1f; - bk_ += 8; - bb_ |= (uint)*pbVar9 << uVar12; - } - uVar12 = bb_ & 3; - bb_ >>= 2; - bk_ -= 2; - iVar7 = uVar12 + 2; - if (uVar12 == 0xfffffffd) goto LAB_7f0cfae8; - puVar5 = local_528 + uVar11; + byte bVar1; + ushort uVar2; + ushort uVar3; + bool bVar4; + uint *puVar5; + uint uVar6; + int iVar7; + u8 *puVar8; + byte *pbVar9; + ulonglong uVar10; + uint uVar11; + uint uVar12; + uint local_528 [316]; + uint local_38; + uint local_34; + uint local_30; + uint local_2c; + uint local_24; + uint local_20; + uint local_1c; + uint local_18 [6]; + + local_34 = bk_; + uVar6 = bk_; + uVar11 = bb_; + if (bk_ < 5) { do { - *puVar5 = (uint)uVar10; - uVar11 += 1; - puVar5 = puVar5 + 1; - bVar4 = iVar7 != 0; - iVar7 += -1; - } while (bVar4); - bVar4 = uVar11 < uVar6; - } + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + local_34 = uVar6 + 8; + uVar11 |= (uint)*pbVar9 << (uVar6 & 0x1f); + uVar6 = local_34; + } while (local_34 < 5); + } + local_34 -= 5; + local_2c = (uVar11 & 0x1f) + 0x101; + uVar11 >>= 5; + while (local_34 < 5) { + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar6 = local_34 & 0x1f; + local_34 += 8; + uVar11 |= (uint)*pbVar9 << uVar6; + } + local_34 -= 5; + local_30 = (uVar11 & 0x1f) + 1; + uVar11 >>= 5; + while (local_34 < 4) { + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar6 = local_34 & 0x1f; + local_34 += 8; + uVar11 |= (uint)*pbVar9 << uVar6; + } + local_38 = uVar11 >> 4; + local_34 -= 4; + uVar6 = 0; + if ((uVar11 & 0xf) != 0xfffffffc) { + puVar8 = zlib_order; + do { + uVar6 += 1; + while (local_34 < 3) { + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar12 = local_34 & 0x1f; + local_34 += 8; + local_38 |= (uint)*pbVar9 << uVar12; + } + bVar1 = *puVar8; + uVar12 = local_38 & 7; + puVar8 = puVar8 + 1; + local_38 >>= 3; + local_528[bVar1] = uVar12; + local_34 -= 3; + } while (uVar6 != (uVar11 & 0xf) + 4); + } + if (uVar6 < 0x13) { + pbVar9 = zlib_order + uVar6; + do { + bVar1 = *pbVar9; + pbVar9 = pbVar9 + 1; + local_528[bVar1] = 0; + } while (pbVar9 < zlib_order + 0x13); + } + local_20 = 7; + proc_7F0CE8B0((int *)local_528,0x13,0x13,0,0,local_18,&local_20); + uVar6 = local_2c + local_30; + uVar2 = zlib_masks[local_20]; + uVar10 = 0; + uVar11 = 0; + bk_ = local_34; + bb_ = local_38; + if (uVar6 != 0) { + do { + while (bk_ < local_20) { + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar12 = bk_ & 0x1f; + bk_ = bk_ + 8; + bb_ = bb_ | (uint)*pbVar9 << uVar12; + } + local_1c = (bb_ & uVar2) * 8 + local_18[0]; + bb_ >>= (uint)*(byte *)(local_1c + 1) & 0x1f; + bk_ -= (uint)*(byte *)(local_1c + 1); + uVar3 = *(ushort *)(local_1c + 4); + if (uVar3 < 0x10) { + local_528[uVar11] = (uint)uVar3; + uVar11 += 1; + uVar10 = (ulonglong)uVar3; +LAB_7f0cfae8: + bVar4 = uVar11 < uVar6; + } + else { + if (uVar3 != 0x10) { + uVar10 = 0; + if (uVar3 == 0x11) { + while (bk_ < 3) { + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar12 = bk_ & 0x1f; + bk_ += 8; + bb_ |= (uint)*pbVar9 << uVar12; + } + uVar12 = bb_ & 7; + bb_ >>= 3; + bk_ -= 3; + iVar7 = uVar12 + 2; + if (uVar12 != 0xfffffffd) { + puVar5 = local_528 + uVar11; + do { + *puVar5 = 0; + uVar11 += 1; + puVar5 = puVar5 + 1; + bVar4 = iVar7 != 0; + iVar7 += -1; + } while (bVar4); + bVar4 = uVar11 < uVar6; + goto LAB_7f0cfaec; + } + } + else { + while (bk_ < 7) { + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar12 = bk_ & 0x1f; + bk_ += 8; + bb_ |= (uint)*pbVar9 << uVar12; + } + uVar12 = bb_ & 0x7f; + bb_ >>= 7; + bk_ -= 7; + iVar7 = uVar12 + 10; + if (uVar12 != 0xfffffff5) { + puVar5 = local_528 + uVar11; + do { + *puVar5 = 0; + uVar11 += 1; + puVar5 = puVar5 + 1; + bVar4 = iVar7 != 0; + iVar7 += -1; + } while (bVar4); + } + } + goto LAB_7f0cfae8; + } + while (bk_ < 2) { + pbVar9 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar12 = bk_ & 0x1f; + bk_ += 8; + bb_ |= (uint)*pbVar9 << uVar12; + } + uVar12 = bb_ & 3; + bb_ >>= 2; + bk_ -= 2; + iVar7 = uVar12 + 2; + if (uVar12 == 0xfffffffd) goto LAB_7f0cfae8; + puVar5 = local_528 + uVar11; + do { + *puVar5 = (uint)uVar10; + uVar11 += 1; + puVar5 = puVar5 + 1; + bVar4 = iVar7 != 0; + iVar7 += -1; + } while (bVar4); + bVar4 = uVar11 < uVar6; + } LAB_7f0cfaec: - } while (bVar4); - } - local_20 = zlib_data1; - proc_7F0CE8B0((int *)local_528,local_2c,0x101,(int)zlib_lbase,(int)zlib_lextra,local_18,&local_20) - ; - local_24 = zlib_data2; - proc_7F0CE8B0((int *)(local_528 + local_2c),local_30,0,(int)zlib_dbase,(int)zlib_dextra,&local_1c, - &local_24); - proc_7F0CEEF0(local_18[0],local_1c,(longlong)(int)local_20,local_24); - return 0; + } while (bVar4); + } + local_20 = zlib_data1; + proc_7F0CE8B0((int *)local_528,local_2c,0x101,(int)zlib_lbase,(int)zlib_lextra,local_18, + &local_20); + local_24 = zlib_data2; + proc_7F0CE8B0((int *)(local_528 + local_2c),local_30,0,(int)zlib_dbase,(int)zlib_dextra, + &local_1c,&local_24); + proc_7F0CEEF0(local_18[0],local_1c,(longlong)(int)local_20,local_24); + return 0; } @@ -141901,50 +141195,50 @@ LAB_7f0cfaec: undefined8 _inflate_block(uint *param_1) { - uint uVar2; - undefined8 uVar1; - uint uVar3; - byte *pbVar4; - - if (bk_ == 0) { - do { - pbVar4 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar3 = bk_ & 0x1f; - bk_ += 8; - bb_ |= (uint)*pbVar4 << uVar3; - } while (bk_ == 0); - } - bk_ -= 1; - uVar3 = bb_ >> 1; - *param_1 = bb_ & 1; - while (bk_ < 2) { - pbVar4 = (byte *)(DAT_8008d350 + inptr_); - inptr_ += 1; - uVar2 = bk_ & 0x1f; - bk_ += 8; - uVar3 |= (uint)*pbVar4 << uVar2; - } - uVar2 = uVar3 & 3; - bb_ = uVar3 >> 2; - bk_ -= 2; - if (uVar2 == 2) { - uVar1 = zlib_decompressor_type2(); - } - else { - if (uVar2 == 0) { - uVar1 = zlib_decompressor_type0(); + uint uVar2; + undefined8 uVar1; + uint uVar3; + byte *pbVar4; + + if (bk_ == 0) { + do { + pbVar4 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar3 = bk_ & 0x1f; + bk_ += 8; + bb_ |= (uint)*pbVar4 << uVar3; + } while (bk_ == 0); + } + bk_ -= 1; + uVar3 = bb_ >> 1; + *param_1 = bb_ & 1; + while (bk_ < 2) { + pbVar4 = (byte *)(DAT_8008d350 + inptr_); + inptr_ += 1; + uVar2 = bk_ & 0x1f; + bk_ += 8; + uVar3 |= (uint)*pbVar4 << uVar2; + } + uVar2 = uVar3 & 3; + bb_ = uVar3 >> 2; + bk_ -= 2; + if (uVar2 == 2) { + uVar1 = zlib_decompressor_type2(); } else { - if (uVar2 == 1) { - uVar1 = zlib_decompressor_type1(); - } - else { - uVar1 = 2; - } + if (uVar2 == 0) { + uVar1 = zlib_decompressor_type0(); + } + else { + if (uVar2 == 1) { + uVar1 = zlib_decompressor_type1(); + } + else { + uVar1 = 2; + } + } } - } - return uVar1; + return uVar1; } @@ -141952,29 +141246,29 @@ undefined8 _inflate_block(uint *param_1) longlong loop_to_decompress_entire_file(void) { - longlong lVar1; - uint uVar2; - uint uStack4; - - wp_ = 0; - bk_ = 0; - bb_ = 0; - uVar2 = 0; - do { - hufts_ = 0; - lVar1 = _inflate_block(&uStack4); - if (lVar1 != 0) { - return lVar1; + longlong lVar1; + uint uVar2; + uint uStack4; + + wp_ = 0; + bk_ = 0; + bb_ = 0; + uVar2 = 0; + do { + hufts_ = 0; + lVar1 = _inflate_block(&uStack4); + if (lVar1 != 0) { + return lVar1; + } + if (uVar2 < hufts_) { + uVar2 = hufts_; + } + } while (uStack4 == 0); + while (7 < bk_) { + bk_ -= 8; + inptr_ += -1; } - if (uVar2 < hufts_) { - uVar2 = hufts_; - } - } while (uStack4 == 0); - while (7 < bk_) { - bk_ -= 8; - inptr_ += -1; - } - return 0; + return 0; } @@ -141982,8 +141276,8 @@ longlong loop_to_decompress_entire_file(void) void something_with_rsp_c_debug(void) { - get_ptr_debug_notice_list_entry(&rsp_c_debug_notice_list_entry,"rsp_c_debug"); - return; + get_ptr_debug_notice_list_entry(&rsp_c_debug_notice_list_entry,"rsp_c_debug"); + return; } @@ -141991,9 +141285,9 @@ void something_with_rsp_c_debug(void) void allocate_init_rsp_buffers(void) { - ptr_rsp_buffer_start = (undefined *)allocate_bytes_in_bank(0xa000,6); - ptr_rspbuffer_end = ptr_rsp_buffer_start + 0xa000; - return; + ptr_rsp_buffer_start = (undefined *)mempAllocBytesInBank(0xa000,'\x06'); + ptr_rspbuffer_end = ptr_rsp_buffer_start + 0xa000; + return; } @@ -142001,30 +141295,30 @@ void allocate_init_rsp_buffers(void) void load_rsp_microcode(int param_1,int param_2,undefined8 param_3,undefined4 param_4) { - undefined *puVar1; - undefined *msg; - - msg = fast3d_related_array; - *(undefined4 *)(fast3d_related_array + 0x18) = 0x80020d90; - *(undefined4 *)(msg + 0x1c) = 0xd0; - *(undefined4 *)(msg + 0x20) = 0x80020e60; - *(undefined4 *)(msg + 0x28) = 0x8005c820; - *(undefined **)(msg + 0x38) = ptr_rsp_buffer_start; - puVar1 = ptr_rspbuffer_end; - *(int *)(msg + 0x40) = param_1; - *(int *)(msg + 0x44) = (param_2 - param_1 >> 3) << 3; - *(undefined4 *)(msg + 0x48) = 0x8008d770; - *(undefined4 *)(msg + 0x4c) = 0xba0; - *(undefined **)(msg + 0x3c) = puVar1; - *(undefined4 *)msg = 0; - *(undefined4 *)(msg + 8) = 99; - *(undefined4 *)(msg + 0x50) = 0x8005d9a0; - *(undefined4 *)(msg + 0x54) = param_4; - *(undefined4 *)(msg + 0xc) = *(undefined4 *)(fast3d_related_array + 0x58); - osWritebackDCacheAll(); - osSendMesg(sched_cmdQ,msg,1); - fast3d_related_array = (undefined *)((uint)fast3d_related_array ^ 0x3a0); - return; + undefined *puVar1; + undefined *msg; + + msg = fast3d_related_array; + *(undefined4 *)(fast3d_related_array + 0x18) = 0x80020d90; + *(undefined4 *)(msg + 0x1c) = 0xd0; + *(undefined4 *)(msg + 0x20) = 0x80020e60; + *(undefined4 *)(msg + 0x28) = 0x8005c820; + *(undefined **)(msg + 0x38) = ptr_rsp_buffer_start; + puVar1 = ptr_rspbuffer_end; + *(int *)(msg + 0x40) = param_1; + *(int *)(msg + 0x44) = (param_2 - param_1 >> 3) << 3; + *(undefined4 *)(msg + 0x48) = 0x8008d770; + *(undefined4 *)(msg + 0x4c) = 0xba0; + *(undefined **)(msg + 0x3c) = puVar1; + *(undefined4 *)msg = 0; + *(undefined4 *)(msg + 8) = 99; + *(undefined4 *)(msg + 0x50) = 0x8005d9a0; + *(undefined4 *)(msg + 0x54) = param_4; + *(undefined4 *)(msg + 0xc) = *(undefined4 *)(fast3d_related_array + 0x58); + osWritebackDCacheAll(); + osSendMesg(sched_cmdQ,msg,1); + fast3d_related_array = (undefined *)((uint)fast3d_related_array ^ 0x3a0); + return; } @@ -142032,11 +141326,11 @@ void load_rsp_microcode(int param_1,int param_2,undefined8 param_3,undefined4 pa void init_indy_if_not_ready(void) { - if (indy_ready != TRUE) { - indy_ready = TRUE; - init_indy_if_ready(); - } - return; + if (indy_ready != TRUE) { + indy_ready = TRUE; + init_indy_if_ready(); + } + return; } @@ -142044,7 +141338,7 @@ void init_indy_if_not_ready(void) void dummy7F0CFF64(void) { - return; + return; } @@ -142052,56 +141346,56 @@ void dummy7F0CFF64(void) void init_indy_if_ready(void) { - if (indy_ready != FALSE) { - post_indy__res_cmd_initialize(); - } - return; + if (indy_ready != FALSE) { + post_indy__res_cmd_initialize_seq(); + } + return; } -void indy_load_resource(char *param_1,undefined *param_2) +void indy_load_resource(char *filename,u8 *targetloc) { - int iStack16; - undefined4 uStack12; - undefined4 auStack8 [2]; - - if (indy_ready != FALSE) { - proc_7F0D0BA4(param_1,0x400000); - proc_7F0D17FC(auStack8,&uStack12,&iStack16,param_2); - } - return; + undefined auStack16 [4]; + u8 auStack12 [4]; + u8 auStack8 [8]; + + if (indy_ready != FALSE) { + post_indyrescmd_req_filename_size((u8 *)filename,0x400000); + response_indyrescmd_1_8_2(auStack8,auStack12,(u32)auStack16,targetloc); + } + return; } -void indy_send_capture_data(char *param_1,undefined *param_2,uint param_3) +void indy_send_capture_data(char *name,undefined *param_2,uint size) { - undefined4 uStack4; - - if (indy_ready != FALSE) { - post_indy__res_cmd_send_capture_data(param_1,param_3,param_2); - proc_7F0D1864(&uStack4); - } - return; + u8 auStack4 [4]; + + if (indy_ready != FALSE) { + post_indyrescmd_send_capture_data(name,size,(indy_resource_entry *)param_2); + response_indyrescmd_1_A_2(auStack4); + } + return; } -void indy_load_ramrom_file(char *param_1,undefined4 param_2,undefined4 param_3) +void indy_load_ramrom_file(char *filename,u8 *target,s32 size) { - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - if (indy_ready != FALSE) { - post_indy__res_cmd_request_ramrom_file(param_1,param_2,param_3); - proc_7F0D18AC(&uStack4,&uStack8,&uStack12); - } - return; + u32 uStack12; + u32 uStack8; + u32 uStack4; + + if (indy_ready != FALSE) { + post_indyrescmd_request_ramrom_file(filename,target,size); + response_indyrescmd_1_10_2(&uStack4,&uStack8,&uStack12); + } + return; } @@ -142109,30 +141403,30 @@ void indy_load_ramrom_file(char *param_1,undefined4 param_2,undefined4 param_3) void check_file_exported(char *param_1,undefined4 param_2,undefined4 param_3) { - undefined4 uStack4; - - if (indy_ready != FALSE) { - proc_7F0D0DD0(param_1,param_3,param_2); - proc_7F0D1908(&uStack4); - } - return; + u8 auStack4 [4]; + + if (indy_ready != FALSE) { + post_indyrescmd_game_prof_sendfile(param_1,param_3,param_2); + response_indyrescmd_1_E_2(auStack4); + } + return; } -undefined4 check_file_found_on_indy(char *param_1,undefined4 *param_2) +u8 * check_file_found_on_indy(char *name,undefined4 *size) { - undefined4 local_4; - - if (indy_ready == FALSE) { - local_4 = 0; - } - else { - proc_7F0D0B0C(param_1); - proc_7F0D17AC(&local_4,param_2); - } - return local_4; + u8 *response; + + if (indy_ready == FALSE) { + response = NULL; + } + else { + post_indyrescmd_game_printf_send(name); + response_indyrescmd_1_6_2((u8 *)&response,(u8 *)size); + } + return response; } @@ -142140,16 +141434,16 @@ undefined4 check_file_found_on_indy(char *param_1,undefined4 *param_2) u32 send_command_string(char *param_1) { - u32 local_4; - - if (indy_ready == FALSE) { - local_4 = 0; - } - else { - proc_7F0D0E74(param_1); - proc_7F0D1950(&local_4); - } - return local_4; + u32 local_4; + + if (indy_ready == FALSE) { + local_4 = 0; + } + else { + post_indyrescmd_1_B_2(param_1); + response_indyrescmd_1_C_2((u8 *)&local_4); + } + return local_4; } @@ -142157,10 +141451,10 @@ u32 send_command_string(char *param_1) void proc_7F0D0124(void) { - if (indy_ready != FALSE) { - rmon_debug_returns_neg_1(); - } - return; + if (indy_ready != FALSE) { + rmon_debug_returns_neg_1(); + } + return; } @@ -142168,48 +141462,48 @@ void proc_7F0D0124(void) u32 send_indy_close_port_cmd(void) { - u32 uVar1; - - uVar1 = send_command_string("sleep 5; /etc/killall ghost gload"); - return uVar1; + u32 uVar1; + + uVar1 = send_command_string("sleep 5; /etc/killall ghost gload"); + return uVar1; } -void proc_7F0D0180(void) +void sub_GAME_7F0D0180(u8 *buffer,u32 size) { - int iVar1; - - iVar1 = 4; - while (iVar1 != 100000) { - iVar1 += 4; - } - removed_7000cec0(); - iVar1 = 4; - while (iVar1 != 100000) { - iVar1 += 4; - } - return; + int iVar1; + + iVar1 = 4; + while (iVar1 != 100000) { + iVar1 += 4; + } + rmon_debug_stub_0(); + iVar1 = 4; + while (iVar1 != 100000) { + iVar1 += 4; + } + return; } -void proc_7F0D01D0(void) +void proc_7F0D01D0(u8 *buffer,u32 size) { - int iVar1; - - iVar1 = 4; - while (iVar1 != 100000) { - iVar1 += 4; - } - removed_7000ceb8(); - iVar1 = 4; - while (iVar1 != 100000) { - iVar1 += 4; - } - return; + int iVar1; + + iVar1 = 4; + while (iVar1 != 100000) { + iVar1 += 4; + } + removed_7000ceb8(); + iVar1 = 4; + while (iVar1 != 100000) { + iVar1 += 4; + } + return; } @@ -142217,687 +141511,607 @@ void proc_7F0D01D0(void) // WARNING: Instruction at (ram,0x7f0d02cc) overlaps instruction at (ram,0x7f0d02c8) // -undefined8 proc_7F0D0220(undefined *param_1,uint param_2) +undefined8 postindyresourcecommand(indy_resource_entry *cmd,u32 size) { - undefined uVar1; - undefined *puVar2; - uint uVar3; - uint uVar4; - undefined *puVar5; - undefined auStack1280 [4]; - undefined auStack1276 [1276]; - - puVar5 = auStack1280; - if (((uint)param_1 & 7) != 0) { - if (0x500 < param_2) { - return 0; - } - if (false) { - puVar5 = auStack1276; - } - puVar2 = puVar5; - while (puVar2 < puVar5 + param_2) { - uVar1 = *param_1; - param_1 = param_1 + 1; - *puVar2 = uVar1; - puVar2 = puVar2 + 1; - } - if (((dword_8004EAC4 & 0x20) != 0) && (param_2 != 0)) { - if ((param_2 & 3) == 0) { - uVar4 = 4; - } - else { - uVar3 = 1; - while ((param_2 & 3) != uVar3) { - uVar3 += 1; + u8 *puVar1; + u32 *puVar2; + uint uVar3; + u32 uVar4; + u8 *buffer; + u8 auStack1280 [4]; + u8 auStack1276 [1276]; + + buffer = auStack1280; + if (((uint)cmd & 7) != 0) { + if (0x500 < size) { + return 0; + } + if (false) { + buffer = auStack1276; + } + puVar1 = buffer; + while (puVar1 < buffer + size) { + puVar2 = &cmd->resourceID; + cmd = (indy_resource_entry *)((int)&cmd->resourceID + 1); + *puVar1 = *(u8 *)puVar2; + puVar1 = puVar1 + 1; + } + if (((indy_status & 0x20) != 0) && (size != 0)) { + if ((size & 3) == 0) { + uVar4 = 4; + } + else { + uVar3 = 1; + while ((size & 3) != uVar3) { + uVar3 += 1; + } + uVar4 = uVar3 + 4; + if (uVar3 == size) goto LAB_7f0d02d8; + } + while (uVar4 != size) { + uVar4 += 4; + } } - uVar4 = uVar3 + 4; - if (uVar3 == param_2) goto LAB_7f0d02d8; - } - while (uVar4 != param_2) { - uVar4 += 4; - } - } LAB_7f0d02d8: - proc_7F0D01D0(); - return 1; - } - if (((dword_8004EAC4 & 0x20) != 0) && (param_2 != 0)) { - if ((param_2 & 3) == 0) { - uVar4 = 4; + proc_7F0D01D0(buffer,size + 3 & 0xfffffffc); + return 1; } - else { - uVar3 = 1; - while ((param_2 & 3) != uVar3) { - uVar3 += 1; - } - uVar4 = uVar3 + 4; - if (uVar3 == param_2) goto LAB_7f0d0338; + if (((indy_status & 0x20) != 0) && (size != 0)) { + if ((size & 3) == 0) { + uVar4 = 4; + } + else { + uVar3 = 1; + while ((size & 3) != uVar3) { + uVar3 += 1; + } + uVar4 = uVar3 + 4; + if (uVar3 == size) goto LAB_7f0d0338; + } + while (uVar4 != size) { + uVar4 += 4; + } } - while (uVar4 != param_2) { - uVar4 += 4; - } - } LAB_7f0d0338: - proc_7F0D01D0(); - return 1; + proc_7F0D01D0((u8 *)cmd,size + 3 & 0xfffffffc); + return 1; } -undefined8 proc_7F0D0358(undefined *param_1,uint param_2,undefined *param_3,uint param_4) +u32 send2indyresourcecommands + (indy_resource_entry *entry1,uint size1,indy_resource_entry *entry2,uint size2) { - proc_7F0D0220(param_1,param_2); - proc_7F0D0220(param_3,param_4); - return 1; + postindyresourcecommand(entry1,size1); + postindyresourcecommand(entry2,size2); + return 1; } -void proc_7F0D038C(undefined4 param_1,undefined4 param_2) +void post_type1_indyrescmd_sizenextcmd(s32 readsize,s32 writesize) { - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack20 = 0x9abf1623; - uStack16 = 1; - uStack12 = 0x14; - uStack8 = param_1; - uStack4 = param_2; - proc_7F0D0220((undefined *)&uStack20,0x14); - return; + indy_resource_entry cmd; + + cmd.resourceID = 0x9abf1623; + cmd.type = 1; + cmd.size = 0x14; + cmd.readsize = readsize; + cmd.writesize = writesize; + postindyresourcecommand(&cmd,0x14); + return; } -void proc_7F0D03D4(undefined4 param_1,undefined4 param_2) +void post_type2_indyrescmd_cmds_rdy_to_proc(s32 readsize,s32 writesize) { - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack20 = 0x9abf1623; - uStack16 = 2; - uStack12 = 0x14; - uStack8 = param_1; - uStack4 = param_2; - proc_7F0D0220((undefined *)&uStack20,0x14); - return; + indy_resource_entry iStack20; + + iStack20.resourceID = 0x9abf1623; + iStack20.type = 2; + iStack20.size = 0x14; + iStack20.readsize = readsize; + iStack20.writesize = writesize; + postindyresourcecommand(&iStack20,0x14); + return; } -void proc_7F0D041C(undefined4 param_1,undefined4 param_2) +void post_type0_indyrescmd_init(s32 readsize,s32 writesize) { - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack20 = 0x9abf1623; - uStack16 = 0; - uStack12 = 0x14; - uStack8 = param_1; - uStack4 = param_2; - proc_7F0D0220((undefined *)&uStack20,0x14); - return; + indy_resource_entry command; + + command.resourceID = 0x9abf1623; + command.type = 0; + command.size = 0x14; + command.readsize = readsize; + command.writesize = writesize; + postindyresourcecommand(&command,0x14); + return; } -void proc_7F0D0460(undefined4 param_1,undefined4 param_2,char *param_3) +void post_type3_indyrescmd(s32 rsize,s32 wsize,char *strptr) { - undefined4 uStack276; - undefined4 uStack272; - undefined4 uStack268; - undefined4 uStack264; - undefined4 uStack260; - char acStack256 [255]; - undefined uStack1; - - uStack276 = 0x9abf1623; - uStack272 = 3; - uStack268 = 0x114; - uStack264 = param_1; - uStack260 = param_2; - something_with_strings(acStack256,param_3,0x100); - uStack1 = 0; - proc_7F0D0220((undefined *)&uStack276,0x114); - return; + indy_resource_entry iStack276; + char acStack256 [255]; + undefined uStack1; + + iStack276.resourceID = 0x9abf1623; + iStack276.type = 3; + iStack276.size = 0x114; + iStack276.readsize = rsize; + iStack276.writesize = wsize; + something_with_strings(acStack256,strptr,0x100); + uStack1 = 0; + postindyresourcecommand(&iStack276,0x114); + return; } -void proc_7F0D04C4(undefined4 param_1,undefined4 param_2,undefined4 param_3) +void post_type4_indyrescmd_data_recieved(s32 param_1,s32 param_2,u32 param_3) { - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack24 = 0x9abf1623; - uStack20 = 4; - uStack16 = 0x18; - uStack12 = param_1; - uStack8 = param_2; - uStack4 = param_3; - proc_7F0D0220((undefined *)&uStack24,0x18); - return; + indy_resource_entry_type4 local_18; + + local_18.entry.resourceID = 0x9abf1623; + local_18.entry.type = 4; + local_18.entry.size = 0x18; + local_18.entry.readsize = param_1; + local_18.entry.writesize = param_2; + local_18.data = param_3; + postindyresourcecommand((indy_resource_entry *)&local_18,0x18); + return; } -void proc_7F0D0514(undefined4 param_1,undefined4 param_2,char *param_3) +void post_type5_indyrescmd_printfsend(s32 param_1,s32 param_2,char *param_3) { - undefined4 uStack276; - undefined4 uStack272; - undefined4 uStack268; - undefined4 uStack264; - undefined4 uStack260; - char acStack256 [255]; - undefined uStack1; - - uStack276 = 0x9abf1623; - uStack272 = 5; - uStack268 = 0x114; - uStack264 = param_1; - uStack260 = param_2; - something_with_strings(acStack256,param_3,0x100); - uStack1 = 0; - proc_7F0D0220((undefined *)&uStack276,0x114); - return; + indy_resource_entry iStack276; + char acStack256 [255]; + undefined uStack1; + + iStack276.resourceID = 0x9abf1623; + iStack276.type = 5; + iStack276.size = 0x114; + iStack276.readsize = param_1; + iStack276.writesize = param_2; + something_with_strings(acStack256,param_3,0x100); + uStack1 = 0; + postindyresourcecommand(&iStack276,0x114); + return; } -void proc_7F0D0578(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) +void post_type6_indyrescmd_printfrecieved(s32 rsize,s32 wsize,u32 data1,u32 data2) { - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack28 = 0x9abf1623; - uStack24 = 6; - uStack20 = 0x1c; - uStack16 = param_1; - uStack12 = param_2; - uStack8 = param_3; - uStack4 = param_4; - proc_7F0D0220((undefined *)&uStack28,0x1c); - return; + indy_resource_entry_type6 cmd; + + cmd.entry.resourceID = 0x9abf1623; + cmd.entry.type = 6; + cmd.entry.size = 0x1c; + cmd.entry.readsize = rsize; + cmd.entry.writesize = wsize; + cmd.data1 = data1; + cmd.data2 = data2; + postindyresourcecommand((indy_resource_entry *)&cmd,0x1c); + return; } -void proc_7F0D05D0(undefined4 param_1,undefined4 param_2,char *param_3,undefined4 param_4) +void post_type7_indyrescmd_log_send(u32 param_1,u32 param_2,u8 *strptr,u32 param_4) { - undefined4 uStack280; - undefined4 uStack276; - undefined4 uStack272; - undefined4 uStack268; - undefined4 uStack264; - char acStack260 [255]; - undefined uStack5; - undefined4 uStack4; - - uStack280 = 0x9abf1623; - uStack276 = 7; - uStack272 = 0x118; - uStack268 = param_1; - uStack264 = param_2; - something_with_strings(acStack260,param_3,0x100); - uStack5 = 0; - uStack4 = param_4; - proc_7F0D0220((undefined *)&uStack280,0x118); - return; + indy_resource_entry iStack280; + char acStack260 [255]; + undefined uStack5; + u32 uStack4; + + iStack280.resourceID = 0x9abf1623; + iStack280.type = 7; + iStack280.size = 0x118; + iStack280.readsize = param_1; + iStack280.writesize = param_2; + something_with_strings(acStack260,(char *)strptr,0x100); + uStack5 = 0; + uStack4 = param_4; + postindyresourcecommand(&iStack280,0x118); + return; } -void proc_7F0D0644(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - uint param_5,undefined *param_6) +void post_type8_indyrescmd_log_recieved + (s32 rsize,s32 wsize,undefined4 data1,undefined4 data2,uint cmd2size, + indy_resource_entry *cmd2) { - undefined4 uStack32; - undefined4 uStack28; - int iStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - uint uStack4; - - iStack24 = (param_5 + 3 & 0xfffffffc) + 0x20; - uStack32 = 0x9abf1623; - uStack28 = 8; - uStack4 = param_5; - uStack20 = param_1; - uStack16 = param_2; - uStack12 = param_3; - uStack8 = param_4; - proc_7F0D0358((undefined *)&uStack32,0x20,param_6,param_5); - return; + indy_resource_entry cmd; + undefined4 uStack12; + undefined4 uStack8; + uint uStack4; + + cmd.size = (cmd2size + 3 & 0xfffffffc) + 0x20; + cmd.resourceID = 0x9abf1623; + cmd.type = 8; + uStack4 = cmd2size; + cmd.readsize = rsize; + cmd.writesize = wsize; + uStack12 = data1; + uStack8 = data2; + send2indyresourcecommands(&cmd,0x20,cmd2,cmd2size); + return; } -void proc_7F0D06C0(undefined4 param_1,undefined4 param_2,char *param_3,uint param_4, - undefined *param_5) +void post_type9_indyrescmd_app_command_ready + (s32 rsize,s32 wsize,char *strptr,uint size2,indy_resource_entry *cmd2) { - undefined4 uStack276; - undefined4 uStack272; - int iStack268; - undefined4 uStack264; - undefined4 uStack260; - char acStack256 [255]; - undefined uStack1; - - iStack268 = (param_4 + 3 & 0xfffffffc) + 0x114; - uStack276 = 0x9abf1623; - uStack272 = 9; - uStack264 = param_1; - uStack260 = param_2; - something_with_strings(acStack256,param_3,0x100); - uStack1 = 0; - proc_7F0D0358((undefined *)&uStack276,0x114,param_5,param_4); - return; + indy_resource_entry iStack276; + char acStack256 [255]; + undefined uStack1; + + iStack276.size = (size2 + 3 & 0xfffffffc) + 0x114; + iStack276.resourceID = 0x9abf1623; + iStack276.type = 9; + iStack276.readsize = rsize; + iStack276.writesize = wsize; + something_with_strings(acStack256,strptr,0x100); + uStack1 = 0; + send2indyresourcecommands(&iStack276,0x114,cmd2,size2); + return; } -void proc_7F0D0740(undefined4 param_1,undefined4 param_2,undefined4 param_3) +void post_typeA_indyrescmd_app_command_recieved(s32 readsize,s32 writesize,u32 data) { - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack24 = 0x9abf1623; - uStack20 = 10; - uStack16 = 0x18; - uStack12 = param_1; - uStack8 = param_2; - uStack4 = param_3; - proc_7F0D0220((undefined *)&uStack24,0x18); - return; + indy_resource_entry_type4 local_18; + + local_18.entry.resourceID = 0x9abf1623; + local_18.entry.type = 10; + local_18.entry.size = 0x18; + local_18.entry.readsize = readsize; + local_18.entry.writesize = writesize; + local_18.data = data; + postindyresourcecommand((indy_resource_entry *)&local_18,0x18); + return; } -void proc_7F0D0790(undefined4 param_1,undefined4 param_2,char *param_3,undefined4 param_4, - undefined4 param_5) +void post_typeF_indyrescmd_fault_send(u32 rsize,u32 wsize,char *name,u32 filesize,u32 ptarget) { - undefined4 uStack284; - undefined4 uStack280; - undefined4 uStack276; - undefined4 uStack272; - undefined4 uStack268; - char acStack264 [255]; - undefined uStack9; - undefined4 uStack8; - undefined4 uStack4; - - uStack284 = 0x9abf1623; - uStack280 = 0xf; - uStack276 = 0x11c; - uStack272 = param_1; - uStack268 = param_2; - something_with_strings(acStack264,param_3,0x100); - uStack9 = 0; - uStack4 = param_5; - uStack8 = param_4; - proc_7F0D0220((undefined *)&uStack284,0x11c); - return; + indy_resource_entry iStack284; + char acStack264 [255]; + undefined uStack9; + u32 uStack8; + u32 uStack4; + + iStack284.resourceID = 0x9abf1623; + iStack284.type = 0xf; + iStack284.size = 0x11c; + iStack284.readsize = rsize; + iStack284.writesize = wsize; + something_with_strings(acStack264,name,0x100); + uStack9 = 0; + uStack4 = ptarget; + uStack8 = filesize; + postindyresourcecommand(&iStack284,0x11c); + return; } -void proc_7F0D080C(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 param_5) +void post_type10_indyrescmd_fault_ack_by_host + (s32 rsize,s32 wsize,undefined4 param_3,undefined4 param_4,undefined4 param_5) { - undefined4 uStack32; - undefined4 uStack28; - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack32 = 0x9abf1623; - uStack28 = 0x10; - uStack24 = 0x20; - uStack4 = param_5; - uStack20 = param_1; - uStack16 = param_2; - uStack12 = param_3; - uStack8 = param_4; - proc_7F0D0220((undefined *)&uStack32,0x20); - return; + indy_resource_entry iStack32; + undefined4 uStack12; + undefined4 uStack8; + undefined4 uStack4; + + iStack32.resourceID = 0x9abf1623; + iStack32.type = 0x10; + iStack32.size = 0x20; + uStack4 = param_5; + iStack32.readsize = rsize; + iStack32.writesize = wsize; + uStack12 = param_3; + uStack8 = param_4; + postindyresourcecommand(&iStack32,0x20); + return; } -void proc_7F0D086C(undefined4 param_1,undefined4 param_2,char *param_3,undefined4 param_4, - undefined4 param_5) +void post_typeD_indyrescmd_prof_send_filename(u32 rsize,u32 wsize,u8 *ptrstr,u32 size,u8 *hwaddress) { - undefined4 uStack284; - undefined4 uStack280; - undefined4 uStack276; - undefined4 uStack272; - undefined4 uStack268; - char acStack264 [255]; - undefined uStack9; - undefined4 uStack8; - undefined4 uStack4; - - uStack284 = 0x9abf1623; - uStack280 = 0xd; - uStack276 = 0x11c; - uStack272 = param_1; - uStack268 = param_2; - something_with_strings(acStack264,param_3,0x100); - uStack9 = 0; - uStack4 = param_5; - uStack8 = param_4; - proc_7F0D0220((undefined *)&uStack284,0x11c); - return; + indy_resource_entry iStack284; + char acStack264 [255]; + undefined uStack9; + u32 uStack8; + u8 *puStack4; + + iStack284.resourceID = 0x9abf1623; + iStack284.type = 0xd; + iStack284.size = 0x11c; + iStack284.readsize = rsize; + iStack284.writesize = wsize; + something_with_strings(acStack264,(char *)ptrstr,0x100); + uStack9 = 0; + puStack4 = hwaddress; + uStack8 = size; + postindyresourcecommand(&iStack284,0x11c); + return; } -void proc_7F0D08E8(undefined4 param_1,undefined4 param_2,undefined4 param_3) +void post_typeE_indyrescmd_prof_recv(s32 readsize,s32 writesize,u32 data) { - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack24 = 0x9abf1623; - uStack20 = 0xe; - uStack16 = 0x18; - uStack12 = param_1; - uStack8 = param_2; - uStack4 = param_3; - proc_7F0D0220((undefined *)&uStack24,0x18); - return; + indy_resource_entry_type4 cmd; + + cmd.entry.resourceID = 0x9abf1623; + cmd.entry.type = 0xe; + cmd.entry.size = 0x18; + cmd.entry.readsize = readsize; + cmd.entry.writesize = writesize; + cmd.data = data; + postindyresourcecommand((indy_resource_entry *)&cmd,0x18); + return; } -void proc_7F0D0938(undefined4 param_1,undefined4 param_2,char *param_3) +void post_typeB_indyrescmd_host_prof_req(s32 rsize,s32 wsize,char *strptr) { - undefined4 uStack1044; - undefined4 uStack1040; - undefined4 uStack1036; - undefined4 uStack1032; - undefined4 uStack1028; - char acStack1024 [1023]; - undefined uStack1; - - uStack1044 = 0x9abf1623; - uStack1040 = 0xb; - uStack1036 = 0x414; - uStack1032 = param_1; - uStack1028 = param_2; - something_with_strings(acStack1024,param_3,0x400); - uStack1 = 0; - proc_7F0D0220((undefined *)&uStack1044,0x414); - return; + indy_resource_entry iStack1044; + char acStack1024 [1023]; + undefined uStack1; + + iStack1044.resourceID = 0x9abf1623; + iStack1044.type = 0xb; + iStack1044.size = 0x414; + iStack1044.readsize = rsize; + iStack1044.writesize = wsize; + something_with_strings(acStack1024,strptr,0x400); + uStack1 = 0; + postindyresourcecommand(&iStack1044,0x414); + return; } -void proc_7F0D099C(undefined4 param_1,undefined4 param_2,undefined4 param_3) +void post_typeC_indyrescmd_prof_send(s32 readsize,s32 writesize,u32 data) { - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack24 = 0x9abf1623; - uStack20 = 0xc; - uStack16 = 0x18; - uStack12 = param_1; - uStack8 = param_2; - uStack4 = param_3; - proc_7F0D0220((undefined *)&uStack24,0x18); - return; + indy_resource_entry_type4 cmd; + + cmd.entry.resourceID = 0x9abf1623; + cmd.entry.type = 0xc; + cmd.entry.size = 0x18; + cmd.entry.readsize = readsize; + cmd.entry.writesize = writesize; + cmd.data = data; + postindyresourcecommand((indy_resource_entry *)&cmd,0x18); + return; } -void proc_7F0D09EC(undefined4 param_1,undefined4 param_2,undefined4 param_3) +void post_typeA_indyrescmd_app_data_recieved(s32 readsize,s32 writesize,u32 data) { - undefined4 uStack24; - undefined4 uStack20; - undefined4 uStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - uStack24 = 0x9abf1623; - uStack20 = 10; - uStack16 = 0x18; - uStack12 = param_1; - uStack8 = param_2; - uStack4 = param_3; - proc_7F0D0220((undefined *)&uStack24,0x18); - return; + indy_resource_entry_type4 cmd; + + cmd.entry.resourceID = 0x9abf1623; + cmd.entry.type = 10; + cmd.entry.size = 0x18; + cmd.entry.readsize = readsize; + cmd.entry.writesize = writesize; + cmd.data = data; + postindyresourcecommand((indy_resource_entry *)&cmd,0x18); + return; } -undefined8 post_indy__res_cmd_initialize(void) +undefined8 post_indy__res_cmd_initialize_seq(void) { - proc_7F0D038C(0x14,0x14); - proc_7F0D041C(0x14,0x14); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x14,0x14); + post_type0_indyrescmd_init(0x14,0x14); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0A7C(char *param_1) +u32 post_indyrescmd_game_data_send(char *strptr) { - proc_7F0D038C(0x114,0x114); - proc_7F0D0460(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x114,0x114); + post_type3_indyrescmd(0x14,0x14,strptr); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0AC4(undefined4 param_1) +u32 post_indyrescmd_debug_data_recv(u32 data) { - proc_7F0D038C(0x18,0x18); - proc_7F0D04C4(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x18,0x18); + post_type4_indyrescmd_data_recieved(0x14,0x14,data); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0B0C(char *param_1) +u32 post_indyrescmd_game_printf_send(char *strptr) { - proc_7F0D038C(0x114,0x114); - proc_7F0D0514(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x114,0x114); + post_type5_indyrescmd_printfsend(0x14,0x14,strptr); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0B54(undefined4 param_1,undefined4 param_2) +u32 post_indyrescmd_debug_printf_recv(u32 data1,u32 data2) { - proc_7F0D038C(0x1c,0x1c); - proc_7F0D0578(0x14,0x14,param_1,param_2); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x1c,0x1c); + post_type6_indyrescmd_printfrecieved(0x14,0x14,data1,data2); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0BA4(char *param_1,undefined4 param_2) +u32 post_indyrescmd_req_filename_size(u8 *filename,u32 size) { - proc_7F0D038C(0x118,0x118); - proc_7F0D05D0(0x14,0x14,param_1,param_2); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x118,0x118); + post_type7_indyrescmd_log_send(0x14,0x14,filename,size); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0BF4(undefined4 param_1,undefined4 param_2,uint param_3,undefined *param_4) +u32 post_indyrescmd_1_8_2(u32 data1,u32 data2,u32 size2,indy_resource_entry *cmd2) { - proc_7F0D038C((param_3 + 3 & 0xfffffffc) + 0x20,0x20); - proc_7F0D0644(0x14,0x14,param_1,param_2,param_3,param_4); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd((size2 + 3 & 0xfffffffc) + 0x20,0x20); + post_type8_indyrescmd_log_recieved(0x14,0x14,data1,data2,size2,cmd2); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 post_indy__res_cmd_send_capture_data(char *string,uint size,undefined *data) +u32 post_indyrescmd_send_capture_data(char *string,uint size,indy_resource_entry *data) { - proc_7F0D038C((size + 3 & 0xfffffffc) + 0x114,0x114); - proc_7F0D06C0(0x14,0x14,string,size,data); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd((size + 3 & 0xfffffffc) + 0x114,0x114); + post_type9_indyrescmd_app_command_ready(0x14,0x14,string,size,data); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0CD0(undefined4 param_1) +u32 post_indyrescmd_recv_capture_data_success(u32 data) { - proc_7F0D038C(0x18,0x18); - proc_7F0D0740(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x18,0x18); + post_typeA_indyrescmd_app_command_recieved(0x14,0x14,data); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 -post_indy__res_cmd_request_ramrom_file(char *param_1,undefined4 param_2,undefined4 param_3) +u32 post_indyrescmd_request_ramrom_file(char *name,u32 ptarget,u32 filesize) { - proc_7F0D038C(0x11c,0x11c); - proc_7F0D0790(0x14,0x14,param_1,param_3,param_2); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x11c,0x11c); + post_typeF_indyrescmd_fault_send(0x14,0x14,name,filesize,ptarget); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0D74(undefined4 param_1,undefined4 param_2,undefined4 param_3) +u32 post_indyrescmd_1_10_2(u32 param_1,u32 param_2,u32 param_3) { - proc_7F0D038C(0x20,0x20); - proc_7F0D080C(0x14,0x14,param_1,param_2,param_3); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x20,0x20); + post_type10_indyrescmd_fault_ack_by_host(0x14,0x14,param_1,param_2,param_3); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0DD0(char *param_1,undefined4 param_2,undefined4 param_3) +u32 post_indyrescmd_game_prof_sendfile(char *strptr,u8 *phwaddr,u32 size) { - proc_7F0D038C(0x11c,0x11c); - proc_7F0D086C(0x14,0x14,param_1,param_3,param_2); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x11c,0x11c); + post_typeD_indyrescmd_prof_send_filename(0x14,0x14,(u8 *)strptr,size,phwaddr); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0E2C(undefined4 param_1) +u32 post_indyrescmd_host_prof_recv(u32 data) { - proc_7F0D038C(0x18,0x18); - proc_7F0D08E8(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x18,0x18); + post_typeE_indyrescmd_prof_recv(0x14,0x14,data); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0E74(char *param_1) +u32 post_indyrescmd_1_B_2(char *strptr) { - proc_7F0D038C(0x414,0x414); - proc_7F0D0938(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x414,0x414); + post_typeB_indyrescmd_host_prof_req(0x14,0x14,strptr); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0EBC(undefined4 param_1) +u32 post_indyrescmd_1_C_2(u32 data) { - proc_7F0D038C(0x18,0x18); - proc_7F0D099C(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x18,0x18); + post_typeC_indyrescmd_prof_send(0x14,0x14,data); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } -undefined8 proc_7F0D0F04(undefined4 param_1) +u32 post_indyrescmd_1_A_2(u32 data) { - proc_7F0D038C(0x18,0x18); - proc_7F0D09EC(0x14,0x14,param_1); - proc_7F0D03D4(0,0); - return 1; + post_type1_indyrescmd_sizenextcmd(0x18,0x18); + post_typeA_indyrescmd_app_data_recieved(0x14,0x14,data); + post_type2_indyrescmd_cmds_rdy_to_proc(0,0); + return 1; } @@ -142905,600 +142119,576 @@ undefined8 proc_7F0D0F04(undefined4 param_1) // WARNING: Instruction at (ram,0x7f0d101c) overlaps instruction at (ram,0x7f0d1018) // -undefined8 proc_7F0D0F4C(undefined *param_1,uint param_2) +undefined8 post_indyrescmd_read_command(indy_resource_entry *param_1,uint param_2) { - undefined uVar1; - uint uVar2; - uint uVar3; - undefined *puVar4; - undefined *puVar5; - undefined auStack1024 [4]; - undefined auStack1020 [1020]; - - puVar4 = auStack1024; - if (((uint)param_1 & 7) == 0) { - proc_7F0D0180(); - if ((dword_8004EAC4 & 0x10) == 0) { - return 1; + u8 uVar1; + uint uVar2; + uint uVar3; + u8 *buffer; + u8 *puVar4; + u8 auStack1024 [4]; + u8 auStack1020 [1020]; + + buffer = auStack1024; + if (((uint)param_1 & 7) == 0) { + sub_GAME_7F0D0180((u8 *)param_1,param_2 + 3 & 0xfffffffc); + if ((indy_status & 0x10) == 0) { + return 1; + } + if (param_2 != 0) { + if ((param_2 & 3) == 0) { + uVar3 = 4; + } + else { + uVar2 = 1; + while ((param_2 & 3) != uVar2) { + uVar2 += 1; + } + uVar3 = uVar2 + 4; + if (uVar2 == param_2) { + return 1; + } + } + while (uVar3 != param_2) { + uVar3 += 4; + } + } + return 1; } - if (param_2 != 0) { - if ((param_2 & 3) == 0) { - uVar3 = 4; - } - else { - uVar2 = 1; - while ((param_2 & 3) != uVar2) { - uVar2 += 1; + if (0x400 < param_2) { + return 0; + } + if (false) { + buffer = auStack1020; + } + sub_GAME_7F0D0180(buffer,param_2 + 3 & 0xfffffffc); + puVar4 = buffer + param_2; + while (buffer < puVar4) { + uVar1 = *buffer; + buffer = buffer + 1; + *(u8 *)¶m_1->resourceID = uVar1; + param_1 = (indy_resource_entry *)((int)¶m_1->resourceID + 1); + } + if (((indy_status & 0x10) != 0) && (param_2 != 0)) { + if ((param_2 & 3) == 0) { + uVar3 = 4; } - uVar3 = uVar2 + 4; - if (uVar2 == param_2) { - return 1; + else { + uVar2 = 1; + while ((param_2 & 3) != uVar2) { + uVar2 += 1; + } + uVar3 = uVar2 + 4; + if (uVar2 == param_2) { + return 1; + } + } + while (uVar3 != param_2) { + uVar3 += 4; } - } - while (uVar3 != param_2) { - uVar3 += 4; - } } return 1; - } - if (0x400 < param_2) { - return 0; - } - if (false) { - puVar4 = auStack1020; - } - proc_7F0D0180(); - puVar5 = puVar4 + param_2; - while (puVar4 < puVar5) { - uVar1 = *puVar4; - puVar4 = puVar4 + 1; - *param_1 = uVar1; - param_1 = param_1 + 1; - } - if (((dword_8004EAC4 & 0x10) != 0) && (param_2 != 0)) { - if ((param_2 & 3) == 0) { - uVar3 = 4; - } - else { - uVar2 = 1; - while ((param_2 & 3) != uVar2) { - uVar2 += 1; - } - uVar3 = uVar2 + 4; - if (uVar2 == param_2) { - return 1; - } - } - while (uVar3 != param_2) { - uVar3 += 4; - } - } - return 1; } -undefined8 proc_7F0D10A8(void) +u32 post_indyrescmd_read_2commands(u8 *buffer1,u32 size1,u8 *buffer2,u32 size2) { - proc_7F0D0180(); - proc_7F0D0180(); - return 1; + sub_GAME_7F0D0180(buffer1,size1 + 3 & 0xfffffffc); + sub_GAME_7F0D0180(buffer2,size2 + 3 & 0xfffffffc); + return 1; } -undefined8 proc_7F0D1100(int param_1,int param_2) +u32 post_indyrescmd_istype1_correctsize(int readsize,int writesize) { - undefined8 uVar1; - int iStack20; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - proc_7F0D0F4C((undefined *)&iStack20,0x14); - if (iStack20 == -0x6540e9dd) { - if (iStack16 == 1) { - if (iStack12 == 0x14) { - if ((param_1 == 0) || (iStack8 == param_1)) { - uVar1 = 1; - if (iStack4 != param_2) { - uVar1 = 0; - } + u32 ret; + indy_resource_entry cmd; + + post_indyrescmd_read_command(&cmd,0x14); + if (cmd.resourceID == 0x9abf1623) { + if (cmd.type == 1) { + if (cmd.size == 0x14) { + if ((readsize == 0) || (cmd.readsize == readsize)) { + ret = 1; + if (cmd.writesize != writesize) { + ret = 0; + } + } + else { + ret = 0; + } + } + else { + ret = 0; + } } else { - uVar1 = 0; + ret = 0; } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + ret = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return ret; } -undefined8 proc_7F0D11AC(int param_1,int param_2) +u32 post_indyrescmd_istype2_correctvalue(int readsize,int writesize) { - undefined8 uVar1; - int iStack20; - int iStack16; - int iStack12; - int iStack8; - int iStack4; - - proc_7F0D0F4C((undefined *)&iStack20,0x14); - if (iStack20 == -0x6540e9dd) { - if (iStack16 == 2) { - if (iStack12 == 0x14) { - if (iStack8 == param_1) { - uVar1 = 1; - if (iStack4 != param_2) { - uVar1 = 0; - } + u32 uVar1; + indy_resource_entry cmd; + + post_indyrescmd_read_command(&cmd,0x14); + if (cmd.resourceID == 0x9abf1623) { + if (cmd.type == 2) { + if (cmd.size == 0x14) { + if (cmd.readsize == readsize) { + uVar1 = 1; + if (cmd.writesize != writesize) { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } -undefined8 proc_7F0D1248(int param_1,int param_2,undefined4 *param_3) +undefined8 post_indyrescmd_istype4_correctvalue(int param_1,int param_2,u8 *response) { - undefined8 uVar1; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - int iStack8; - undefined4 uStack4; - - proc_7F0D0F4C((undefined *)&iStack24,0x18); - if (iStack24 == -0x6540e9dd) { - if (iStack20 == 4) { - if (iStack16 == 0x18) { - if (iStack12 == param_1) { - if (iStack8 == param_2) { - uVar1 = 1; - *param_3 = uStack4; - } - else { - uVar1 = 0; - } + undefined8 uVar1; + indy_resource_entry *local_18; + int iStack20; + int iStack16; + int iStack12; + int iStack8; + undefined4 uStack4; + + post_indyrescmd_read_command((indy_resource_entry *)&local_18,0x18); + if (local_18 == (indy_resource_entry *)0x9abf1623) { + if (iStack20 == 4) { + if (iStack16 == 0x18) { + if (iStack12 == param_1) { + if (iStack8 == param_2) { + uVar1 = 1; + *(undefined4 *)response = uStack4; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } -undefined8 proc_7F0D12F4(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4) +undefined8 post_indyrescmd_istype6_correctvalue(int param_1,int param_2,u8 *response1,u8 *response2) { - undefined8 uVar1; - int iStack28; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - undefined4 uStack8; - undefined4 uStack4; - - proc_7F0D0F4C((undefined *)&iStack28,0x1c); - if (iStack28 == -0x6540e9dd) { - if (iStack24 == 6) { - if (iStack20 == 0x1c) { - if (iStack16 == param_1) { - if (iStack12 == param_2) { - uVar1 = 1; - *param_3 = uStack8; - *param_4 = uStack4; - } - else { - uVar1 = 0; - } + undefined8 uVar1; + indy_resource_entry *local_1c; + int iStack24; + int iStack20; + int iStack16; + int iStack12; + undefined4 uStack8; + undefined4 uStack4; + + post_indyrescmd_read_command((indy_resource_entry *)&local_1c,0x1c); + if (local_1c == (indy_resource_entry *)0x9abf1623) { + if (iStack24 == 6) { + if (iStack20 == 0x1c) { + if (iStack16 == param_1) { + if (iStack12 == param_2) { + uVar1 = 1; + *(undefined4 *)response1 = uStack8; + *(undefined4 *)response2 = uStack4; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } undefined8 -proc_7F0D13B0(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,int *param_5, - undefined *param_6) +post_indyrescmd_istype8_correctvalue + (int param_1,int param_2,u8 *response1,u8 *response2,u32 childsize,u8 *child) { - undefined8 uVar1; - int iStack32; - int iStack28; - int iStack24; - int iStack20; - int iStack16; - undefined4 uStack12; - undefined4 uStack8; - int iStack4; - - proc_7F0D0F4C((undefined *)&iStack32,0x20); - if (iStack32 == -0x6540e9dd) { - if (iStack28 == 8) { - if (iStack24 == (iStack4 + 3U & 0xfffffffc) + 0x20) { - if (iStack20 == param_1) { - if (iStack16 == param_2) { - *param_3 = uStack12; - *param_4 = uStack8; - *param_5 = iStack4; - proc_7F0D0F4C(param_6,iStack4 + 3U & 0xfffffffc); - uVar1 = 1; - } - else { - uVar1 = 0; - } + undefined8 uVar1; + indy_resource_entry *local_20; + int iStack28; + int iStack24; + int iStack20; + int iStack16; + undefined4 uStack12; + undefined4 uStack8; + int iStack4; + + post_indyrescmd_read_command((indy_resource_entry *)&local_20,0x20); + if (local_20 == (indy_resource_entry *)0x9abf1623) { + if (iStack28 == 8) { + if (iStack24 == (iStack4 + 3U & 0xfffffffc) + 0x20) { + if (iStack20 == param_1) { + if (iStack16 == param_2) { + *(undefined4 *)response1 = uStack12; + *(undefined4 *)response2 = uStack8; + *(int *)childsize = iStack4; + post_indyrescmd_read_command + ((indy_resource_entry *)child,iStack4 + 3U & 0xfffffffc); + uVar1 = 1; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } -undefined8 proc_7F0D1498(int param_1,int param_2,undefined4 *param_3) +undefined8 post_indyrescmd_istypeA_correctvalue(int param_1,int param_2,u8 *response) { - undefined8 uVar1; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - int iStack8; - undefined4 uStack4; - - proc_7F0D0F4C((undefined *)&iStack24,0x18); - if (iStack24 == -0x6540e9dd) { - if (iStack20 == 10) { - if (iStack16 == 0x18) { - if (iStack12 == param_1) { - if (iStack8 == param_2) { - uVar1 = 1; - *param_3 = uStack4; - } - else { - uVar1 = 0; - } + undefined8 uVar1; + indy_resource_entry iStack24; + undefined4 uStack4; + + post_indyrescmd_read_command(&iStack24,0x18); + if (iStack24.resourceID == 0x9abf1623) { + if (iStack24.type == 10) { + if (iStack24.size == 0x18) { + if (iStack24.readsize == param_1) { + if (iStack24.writesize == param_2) { + uVar1 = 1; + *(undefined4 *)response = uStack4; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } undefined8 -proc_7F0D1544(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,undefined4 *param_5) +post_indyrescmd_istype10_correctvalue + (int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,undefined4 *param_5) { - undefined8 uVar1; - int iStack32; - int iStack28; - int iStack24; - int iStack20; - int iStack16; - undefined4 uStack12; - undefined4 uStack8; - undefined4 uStack4; - - proc_7F0D0F4C((undefined *)&iStack32,0x20); - if (iStack32 == -0x6540e9dd) { - if (iStack28 == 0x10) { - if (iStack24 == 0x20) { - if (iStack20 == param_1) { - if (iStack16 == param_2) { - uVar1 = 1; - *param_3 = uStack12; - *param_4 = uStack8; - *param_5 = uStack4; - } - else { + undefined8 uVar1; + indy_resource_entry iStack32; + undefined4 uStack12; + undefined4 uStack8; + undefined4 uStack4; + + post_indyrescmd_read_command(&iStack32,0x20); + if (iStack32.resourceID == 0x9abf1623) { + if (iStack32.type == 0x10) { + if (iStack32.size == 0x20) { + if (iStack32.readsize == param_1) { + if (iStack32.writesize == param_2) { + uVar1 = 1; + *param_3 = uStack12; + *param_4 = uStack8; + *param_5 = uStack4; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { uVar1 = 0; - } } - else { - uVar1 = 0; - } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } -undefined8 proc_7F0D160C(int param_1,int param_2,undefined4 *param_3) +undefined8 post_indyrescmd_istypeE_correctvalue(int param_1,int param_2,u8 *param_3) { - undefined8 uVar1; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - int iStack8; - undefined4 uStack4; - - proc_7F0D0F4C((undefined *)&iStack24,0x18); - if (iStack24 == -0x6540e9dd) { - if (iStack20 == 0xe) { - if (iStack16 == 0x18) { - if (iStack12 == param_1) { - if (iStack8 == param_2) { - uVar1 = 1; - *param_3 = uStack4; - } - else { + undefined8 uVar1; + indy_resource_entry iStack24; + undefined4 uStack4; + + post_indyrescmd_read_command(&iStack24,0x18); + if (iStack24.resourceID == 0x9abf1623) { + if (iStack24.type == 0xe) { + if (iStack24.size == 0x18) { + if (iStack24.readsize == param_1) { + if (iStack24.writesize == param_2) { + uVar1 = 1; + *(undefined4 *)param_3 = uStack4; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { uVar1 = 0; - } } - else { - uVar1 = 0; - } - } - else { - uVar1 = 0; - } } else { - uVar1 = 0; + uVar1 = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } -undefined8 proc_7F0D16B8(int param_1,int param_2,undefined4 *param_3) +undefined8 post_indyrescmd_istypeC_correctvalue(int param_1,int param_2,u8 *param_3) { - undefined8 uVar1; - int iStack24; - int iStack20; - int iStack16; - int iStack12; - int iStack8; - undefined4 uStack4; - - proc_7F0D0F4C((undefined *)&iStack24,0x18); - if (iStack24 == -0x6540e9dd) { - if (iStack20 == 0xc) { - if (iStack16 == 0x18) { - if (iStack12 == param_1) { - if (iStack8 == param_2) { - uVar1 = 1; - *param_3 = uStack4; - } - else { + undefined8 uVar1; + indy_resource_entry iStack24; + undefined4 uStack4; + + post_indyrescmd_read_command(&iStack24,0x18); + if (iStack24.resourceID == 0x9abf1623) { + if (iStack24.type == 0xc) { + if (iStack24.size == 0x18) { + if (iStack24.readsize == param_1) { + if (iStack24.writesize == param_2) { + uVar1 = 1; + *(undefined4 *)param_3 = uStack4; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + else { uVar1 = 0; - } } - else { - uVar1 = 0; - } - } - else { + } + else { uVar1 = 0; - } } - else { - uVar1 = 0; - } - } - else { - uVar1 = 0; - } - return uVar1; + return uVar1; } -undefined8 proc_7F0D1764(undefined4 *param_1) +u32 response_indyrescmd_1_4_2(u8 *response) { - proc_7F0D1100(0x18,0x18); - proc_7F0D1248(0x14,0x14,param_1); - proc_7F0D11AC(0,0); - return 1; + post_indyrescmd_istype1_correctsize(0x18,0x18); + post_indyrescmd_istype4_correctvalue(0x14,0x14,response); + post_indyrescmd_istype2_correctvalue(0,0); + return 1; } -undefined8 proc_7F0D17AC(undefined4 *param_1,undefined4 *param_2) +u32 response_indyrescmd_1_6_2(u8 *response1,u8 *response2) { - proc_7F0D1100(0x1c,0x1c); - proc_7F0D12F4(0x14,0x14,param_1,param_2); - proc_7F0D11AC(0,0); - return 1; + post_indyrescmd_istype1_correctsize(0x1c,0x1c); + post_indyrescmd_istype6_correctvalue(0x14,0x14,response1,response2); + post_indyrescmd_istype2_correctvalue(0,0); + return 1; } -undefined8 proc_7F0D17FC(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined *param_4) +u32 response_indyrescmd_1_8_2(u8 *response1,u8 *response2,u32 datasize,u8 *data) { - proc_7F0D1100(0,0x20); - proc_7F0D13B0(0x14,0x14,param_1,param_2,param_3,param_4); - proc_7F0D11AC(0,0); - return 1; + post_indyrescmd_istype1_correctsize(0,0x20); + post_indyrescmd_istype8_correctvalue(0x14,0x14,response1,response2,datasize,data); + post_indyrescmd_istype2_correctvalue(0,0); + return 1; } -undefined8 proc_7F0D1864(undefined4 *param_1) +u32 response_indyrescmd_1_A_2(u8 *param_1) { - proc_7F0D1100(0x18,0x18); - proc_7F0D1498(0x14,0x14,param_1); - proc_7F0D11AC(0,0); - return 1; + post_indyrescmd_istype1_correctsize(0x18,0x18); + post_indyrescmd_istypeA_correctvalue(0x14,0x14,param_1); + post_indyrescmd_istype2_correctvalue(0,0); + return 1; } -undefined8 proc_7F0D18AC(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3) +u32 response_indyrescmd_1_10_2(u32 *param_1,u32 *param_2,u32 *param_3) { - proc_7F0D1100(0x20,0x20); - proc_7F0D1544(0x14,0x14,param_1,param_2,param_3); - proc_7F0D11AC(0,0); - return 1; + post_indyrescmd_istype1_correctsize(0x20,0x20); + post_indyrescmd_istype10_correctvalue(0x14,0x14,param_1,param_2,param_3); + post_indyrescmd_istype2_correctvalue(0,0); + return 1; } -undefined8 proc_7F0D1908(undefined4 *param_1) +u32 response_indyrescmd_1_E_2(u8 *response) { - proc_7F0D1100(0x18,0x18); - proc_7F0D160C(0x14,0x14,param_1); - proc_7F0D11AC(0,0); - return 1; + post_indyrescmd_istype1_correctsize(0x18,0x18); + post_indyrescmd_istypeE_correctvalue(0x14,0x14,response); + post_indyrescmd_istype2_correctvalue(0,0); + return 1; } -undefined8 proc_7F0D1950(undefined4 *param_1) +u32 response_indyrescmd_1_C_2(u8 *response) { - proc_7F0D1100(0x18,0x18); - proc_7F0D16B8(0x14,0x14,param_1); - proc_7F0D11AC(0,0); - return 1; + post_indyrescmd_istype1_correctsize(0x18,0x18); + post_indyrescmd_istypeC_correctvalue(0x14,0x14,response); + post_indyrescmd_istype2_correctvalue(0,0); + return 1; } -undefined8 proc_7F0D1998(int param_1,int param_2) +u32 response_indyrescmd_curr_matches_expected(int readsize,int writesize) { - undefined8 uVar1; - int aiStack20 [3]; - int iStack8; - int iStack4; - - proc_7F0D0F4C((undefined *)aiStack20,0x14); - if (aiStack20[0] == -0x6540e9dd) { - if ((param_1 == 0) || (iStack8 == param_1)) { - if (param_2 == 0) { - uVar1 = 1; - } - else { - if (iStack4 == param_2) { - uVar1 = 1; + u32 ret; + indy_resource_entry local_14; + + post_indyrescmd_read_command(&local_14,0x14); + if (local_14.resourceID == 0x9abf1623) { + if ((readsize == 0) || (local_14.readsize == readsize)) { + if (writesize == 0) { + ret = 1; + } + else { + if (local_14.writesize == writesize) { + ret = 1; + } + else { + ret = 0; + } + } } else { - uVar1 = 0; + ret = 0; } - } } else { - uVar1 = 0; + ret = 0; } - } - else { - uVar1 = 0; - } - return uVar1; + return ret; } @@ -143506,8 +142696,8 @@ undefined8 proc_7F0D1998(int param_1,int param_2) void something_game_c_debug_related(void) { - get_ptr_debug_notice_list_entry(&game_c_debug_notice_list_entry,"game_c_debug"); - return; + get_ptr_debug_notice_list_entry(&game_c_debug_notice_list_entry,"game_c_debug"); + return; } @@ -143515,10 +142705,10 @@ void something_game_c_debug_related(void) void reset_mem_bank_5(void) { - proc_7F0BD234(); - resetMemBank(5); - something_mem_bank_a0(5); - return; + proc_7F0BD234(); + mempResetBank('\x05'); + something_mem_bank_a0(5); + return; } @@ -143526,9 +142716,9 @@ void reset_mem_bank_5(void) void proc_7F0D1A7C(void) { - set_bank_nextentry_to_NULL(5); - something_mem_bank_a0(5); - return; + mempNullNextEntryInBank('\x05'); + something_mem_bank_a0(5); + return; } @@ -143536,7 +142726,7 @@ void proc_7F0D1A7C(void) char * get_compile_time(void) { - return "Jun 29 1997 20:46:05"; + return "Jun 29 1997 20:46:05"; } @@ -143544,25 +142734,25 @@ char * get_compile_time(void) undefined4 * proc_7F0D1AC0(undefined4 *param_1) { - flt_8004EAF4 = 0.00000000; - flt_8004EAF0 = 0.00000000; - *param_1 = 0xba000c02; - param_1[1] = 0; - param_1[3] = 0xc0; - param_1[2] = 0xba000602; - param_1[5] = 1; - param_1[4] = 0xb6000000; - param_1[6] = 0xe7000000; - param_1[7] = 0; - param_1[8] = 0xba001301; - param_1[9] = 0; - param_1[0xb] = 0x300000; - param_1[10] = 0xba001402; - param_1[0xd] = 0xf0a4000; - param_1[0xc] = 0xb900031d; - param_1[0xf] = 0x800000; - param_1[0xe] = 0xba001701; - return param_1 + 0x10; + flt_8004EAF4 = 0.00000000; + flt_8004EAF0 = 0.00000000; + *param_1 = 0xba000c02; + param_1[1] = 0; + param_1[3] = 0xc0; + param_1[2] = 0xba000602; + param_1[5] = 1; + param_1[4] = 0xb6000000; + param_1[6] = 0xe7000000; + param_1[7] = 0; + param_1[8] = 0xba001301; + param_1[9] = 0; + param_1[0xb] = 0x300000; + param_1[10] = 0xba001402; + param_1[0xd] = 0xf0a4000; + param_1[0xc] = 0xb900031d; + param_1[0xf] = 0x800000; + param_1[0xe] = 0xba001701; + return param_1 + 0x10; } @@ -143570,10 +142760,10 @@ undefined4 * proc_7F0D1AC0(undefined4 *param_1) void proc_7F0D1B94(uint *param_1,float param_2,uint param_3,uint param_4,int param_5) { - int in_stack_00000010; - - proc_7F0D1BD0(param_1,(float)param_3,param_3,param_4,param_5,in_stack_00000010,2); - return; + int in_stack_00000010; + + proc_7F0D1BD0(param_1,(float)param_3,param_3,param_4,param_5,in_stack_00000010,2); + return; } @@ -143582,60 +142772,60 @@ uint * proc_7F0D1BD0(uint *param_1,float param_2,uint param_3,uint param_4,int p int param_7) { - int iVar1; - float fVar2; - uint *puVar3; - uint uVar4; - int iVar5; - uint uVar6; - uint uVar7; - float fVar8; - float fVar9; - int iVar10; - int iVar11; - int in_stack_00000018; - - fVar2 = flt_8004EAF4; - if (0.00000000 < (float)param_3) { - fVar9 = flt_8004EAF4 / 10.00000000; - *param_1 = 0xf7000000; - fVar8 = fVar2 + (float)param_3; - puVar3 = param_1 + 2; - uVar6 = (param_4 & 0xf8) << 8 | (param_5 & 0xf8U) << 3 | param_6 >> 2 & 0x3eU | 1; - param_1[1] = uVar6 << 0x10 | uVar6; - iVar10 = (int)fVar9; - iVar11 = (int)(fVar8 / 10.00000000); - if ((iVar10 <= iVar11) && (iVar10 < 3)) { - iVar5 = iVar10 * 0xdb; - uVar6 = (int)((fVar2 * 219.00000000) / 10.00000000) + iVar10 * -0xdb + 0x32; - iVar1 = iVar10 * -0xdb; - while( true ) { - uVar7 = (int)((fVar8 * 219.00000000) / 10.00000000) + iVar1 + 0x32; - uVar4 = uVar6; - if ((int)uVar6 < 0x32) { - uVar4 = 0x32; + int iVar1; + float fVar2; + uint *puVar3; + uint uVar4; + int iVar5; + uint uVar6; + uint uVar7; + float fVar8; + float fVar9; + int iVar10; + int iVar11; + int in_stack_00000018; + + fVar2 = flt_8004EAF4; + if (0.00000000 < (float)param_3) { + fVar9 = flt_8004EAF4 / 10.00000000; + *param_1 = 0xf7000000; + fVar8 = fVar2 + (float)param_3; + puVar3 = param_1 + 2; + uVar6 = (param_4 & 0xf8) << 8 | (param_5 & 0xf8U) << 3 | param_6 >> 2 & 0x3eU | 1; + param_1[1] = uVar6 << 0x10 | uVar6; + iVar10 = (int)fVar9; + iVar11 = (int)(fVar8 / 10.00000000); + if ((iVar10 <= iVar11) && (iVar10 < 3)) { + iVar5 = iVar10 * 0xdb; + uVar6 = (int)((fVar2 * 219.00000000) / 10.00000000) + iVar10 * -0xdb + 0x32; + iVar1 = iVar10 * -0xdb; + while( true ) { + uVar7 = (int)((fVar8 * 219.00000000) / 10.00000000) + iVar1 + 0x32; + uVar4 = uVar6; + if ((int)uVar6 < 0x32) { + uVar4 = 0x32; + } + iVar5 += 0xdb; + if (0x10d < (int)uVar7) { + uVar7 = 0x10d; + } + if ((int)uVar4 <= (int)uVar7) { + *puVar3 = (uVar7 & 0x3ff) << 0xe | 0xf6000000 | + (param_7 + in_stack_00000018 + iVar10 * 7 + 0x11U & 0x3ff) << 2; + puVar3[1] = (uVar4 & 0x3ff) << 0xe | + (in_stack_00000018 + iVar10 * 7 + 0x12U & 0x3ff) << 2; + puVar3 = puVar3 + 2; + } + iVar10 += 1; + uVar6 -= 0xdb; + if ((iVar11 < iVar10) || (2 < iVar10)) break; + iVar1 = -iVar5; + } } - iVar5 += 0xdb; - if (0x10d < (int)uVar7) { - uVar7 = 0x10d; - } - if ((int)uVar4 <= (int)uVar7) { - *puVar3 = (uVar7 & 0x3ff) << 0xe | 0xf6000000 | - (param_7 + in_stack_00000018 + iVar10 * 7 + 0x11U & 0x3ff) << 2; - puVar3[1] = (uVar4 & 0x3ff) << 0xe | (in_stack_00000018 + iVar10 * 7 + 0x12U & 0x3ff) << 2 - ; - puVar3 = puVar3 + 2; - } - iVar10 += 1; - uVar6 -= 0xdb; - if ((iVar11 < iVar10) || (2 < iVar10)) break; - iVar1 = -iVar5; - } + flt_8004EAF4 = flt_8004EAF4 + (float)param_3; + param_1 = puVar3; } - flt_8004EAF4 = flt_8004EAF4 + (float)param_3; - param_1 = puVar3; - } - return param_1; + return param_1; } @@ -143643,10 +142833,10 @@ uint * proc_7F0D1BD0(uint *param_1,float param_2,uint param_3,uint param_4,int p void proc_7F0D1DCC(float param_1) { - if (0.00000000 < param_1) { - flt_8004EAF4 = flt_8004EAF4 + param_1; - } - return; + if (0.00000000 < param_1) { + flt_8004EAF4 = flt_8004EAF4 + param_1; + } + return; } @@ -143654,9 +142844,9 @@ void proc_7F0D1DCC(float param_1) void proc_7F0D1DFC(uint *param_1,float param_2,uint param_3,uint param_4,int param_5) { - proc_7F0D1B94(param_1,(float)param_3,(uint)((flt_8004EAF0 + (float)param_3) - flt_8004EAF4), - param_4,param_5); - return; + proc_7F0D1B94(param_1,(float)param_3,(uint)((flt_8004EAF0 + (float)param_3) - flt_8004EAF4), + param_4,param_5); + return; } @@ -143665,9 +142855,9 @@ void proc_7F0D1E44(uint *param_1,float param_2,uint param_3,uint param_4,int par int param_7) { - proc_7F0D1BD0(param_1,(float)param_3,(uint)((flt_8004EAF0 + (float)param_3) - flt_8004EAF4), - param_4,param_5,param_6,param_7); - return; + proc_7F0D1BD0(param_1,(float)param_3,(uint)((flt_8004EAF0 + (float)param_3) - flt_8004EAF4), + param_4,param_5,param_6,param_7); + return; } @@ -143675,85 +142865,88 @@ void proc_7F0D1E44(uint *param_1,float param_2,uint param_3,uint param_4,int par uint * proc_7F0D1E98(undefined4 *param_1,undefined8 param_2,undefined8 param_3,int param_4) { - uint uVar1; - uint uVar2; - uint *puVar3; - int iVar4; - int iVar5; - uint uVar6; - uint uVar7; - uint *puVar8; - uint uVar9; - uint uVar10; - float fVar11; - float fVar12; - - fVar11 = flt_8004EAF4 / 10.00000000; - *param_1 = 0xf7000000; - uVar1 = ((uint)param_2 & 0xf8) << 8 | ((uint)param_3 & 0xf8) << 3 | param_4 >> 2 & 0x3eU | 1; - param_1[1] = uVar1 << 0x10 | uVar1; - puVar8 = param_1 + 2; - if (-1 < (int)fVar11) { - uVar2 = 0x15; - uVar1 = 0x12; - do { - uVar6 = (uVar1 & 0x3ff) << 2; - uVar9 = (uVar2 & 0x3ff) << 2; - puVar8[1] = uVar6 | 0xc8000; - *puVar8 = uVar9 | 0xf60c8000; - puVar8[3] = uVar6 | 0x11c000; - puVar8[2] = uVar9 | 0xf611c000; - puVar8[4] = uVar9 | 0xf6174000; - puVar8[5] = uVar6 | 0x174000; - puVar3 = puVar8 + 6; - iVar5 = 3; - uVar10 = 0xf61cc000; - uVar7 = uVar6 | 0x1cc000; - fVar12 = 876.00000000; - iVar4 = iVar5; - puVar8 = puVar3; - if (true) { + uint uVar1; + uint uVar2; + uint *puVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + uint *puVar8; + uint uVar9; + uint uVar10; + float fVar11; + float fVar12; + + fVar11 = flt_8004EAF4 / 10.00000000; + *param_1 = 0xf7000000; + uVar1 = ((uint)param_2 & 0xf8) << 8 | ((uint)param_3 & 0xf8) << 3 | param_4 >> 2 & 0x3eU | 1; + param_1[1] = uVar1 << 0x10 | uVar1; + puVar8 = param_1 + 2; + if (-1 < (int)fVar11) { + uVar2 = 0x15; + uVar1 = 0x12; do { - *puVar8 = uVar10 | uVar9; - puVar8[1] = uVar7; - uVar10 = ((int)(fVar12 / 10.00000000) + 0x32U & 0x3ff) << 0xe; - puVar8[2] = uVar10 | 0xf6000000 | uVar9; - puVar8[3] = uVar10 | uVar6; - uVar10 = ((int)(((float)(iVar4 + 2) * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << 0xe - ; - iVar5 = iVar4 + 4; - puVar8[4] = uVar10 | 0xf6000000 | uVar9; - puVar8[5] = uVar10 | uVar6; - puVar3 = puVar8 + 8; - uVar10 = ((int)(((float)(iVar4 + 3) * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << 0xe - ; - puVar8[6] = uVar10 | 0xf6000000 | uVar9; - puVar8[7] = uVar10 | uVar6; - uVar7 = ((int)(((float)iVar5 * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << 0xe; - uVar10 = uVar7 | 0xf6000000; - uVar7 |= uVar6; - fVar12 = (float)(iVar4 + 5) * 219.00000000; - iVar4 = iVar5; - puVar8 = puVar3; - } while (iVar5 != 7); - } - *puVar3 = uVar10 | uVar9; - puVar3[1] = uVar7; - uVar10 = ((int)(fVar12 / 10.00000000) + 0x32U & 0x3ff) << 0xe; - puVar3[2] = uVar10 | 0xf6000000 | uVar9; - puVar3[3] = uVar10 | uVar6; - uVar10 = ((int)(((float)(iVar5 + 2) * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << 0xe; - puVar3[4] = uVar10 | 0xf6000000 | uVar9; - puVar3[5] = uVar10 | uVar6; - puVar8 = puVar3 + 8; - uVar10 = ((int)(((float)(iVar5 + 3) * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << 0xe; - puVar3[7] = uVar10 | uVar6; - puVar3[6] = uVar10 | 0xf6000000 | uVar9; - uVar1 += 7; - uVar2 += 7; - } while (((int)uVar1 <= (int)fVar11 * 7 + 0x12) && (uVar1 != 0x27)); - } - return puVar8; + uVar6 = (uVar1 & 0x3ff) << 2; + uVar9 = (uVar2 & 0x3ff) << 2; + puVar8[1] = uVar6 | 0xc8000; + *puVar8 = uVar9 | 0xf60c8000; + puVar8[3] = uVar6 | 0x11c000; + puVar8[2] = uVar9 | 0xf611c000; + puVar8[4] = uVar9 | 0xf6174000; + puVar8[5] = uVar6 | 0x174000; + puVar3 = puVar8 + 6; + iVar5 = 3; + uVar10 = 0xf61cc000; + uVar7 = uVar6 | 0x1cc000; + fVar12 = 876.00000000; + iVar4 = iVar5; + puVar8 = puVar3; + if (true) { + do { + *puVar8 = uVar10 | uVar9; + puVar8[1] = uVar7; + uVar10 = ((int)(fVar12 / 10.00000000) + 0x32U & 0x3ff) << 0xe; + puVar8[2] = uVar10 | 0xf6000000 | uVar9; + puVar8[3] = uVar10 | uVar6; + uVar10 = ((int)(((float)(iVar4 + 2) * 219.00000000) / 10.00000000) + 0x32U & + 0x3ff) << 0xe; + iVar5 = iVar4 + 4; + puVar8[4] = uVar10 | 0xf6000000 | uVar9; + puVar8[5] = uVar10 | uVar6; + puVar3 = puVar8 + 8; + uVar10 = ((int)(((float)(iVar4 + 3) * 219.00000000) / 10.00000000) + 0x32U & + 0x3ff) << 0xe; + puVar8[6] = uVar10 | 0xf6000000 | uVar9; + puVar8[7] = uVar10 | uVar6; + uVar7 = ((int)(((float)iVar5 * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << + 0xe; + uVar10 = uVar7 | 0xf6000000; + uVar7 |= uVar6; + fVar12 = (float)(iVar4 + 5) * 219.00000000; + iVar4 = iVar5; + puVar8 = puVar3; + } while (iVar5 != 7); + } + *puVar3 = uVar10 | uVar9; + puVar3[1] = uVar7; + uVar10 = ((int)(fVar12 / 10.00000000) + 0x32U & 0x3ff) << 0xe; + puVar3[2] = uVar10 | 0xf6000000 | uVar9; + puVar3[3] = uVar10 | uVar6; + uVar10 = ((int)(((float)(iVar5 + 2) * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << + 0xe; + puVar3[4] = uVar10 | 0xf6000000 | uVar9; + puVar3[5] = uVar10 | uVar6; + puVar8 = puVar3 + 8; + uVar10 = ((int)(((float)(iVar5 + 3) * 219.00000000) / 10.00000000) + 0x32U & 0x3ff) << + 0xe; + puVar3[7] = uVar10 | uVar6; + puVar3[6] = uVar10 | 0xf6000000 | uVar9; + uVar1 += 7; + uVar2 += 7; + } while (((int)uVar1 <= (int)fVar11 * 7 + 0x12) && (uVar1 != 0x27)); + } + return puVar8; } @@ -143761,9 +142954,9 @@ uint * proc_7F0D1E98(undefined4 *param_1,undefined8 param_2,undefined8 param_3,i void proc_7F0D2320(void) { - flt_8004EAF0 = (float)((int)(flt_8004EAF4 / 10.00000000) * 10 + 10); - flt_8004EAF4 = flt_8004EAF0; - return; + flt_8004EAF0 = (float)((int)(flt_8004EAF4 / 10.00000000) * 10 + 10); + flt_8004EAF4 = flt_8004EAF0; + return; } @@ -143771,8 +142964,8 @@ void proc_7F0D2320(void) void remove_viewport_buffer(void) { - viewport_img = 0; - return; + viewport_img = 0; + return; } @@ -143780,26 +142973,26 @@ void remove_viewport_buffer(void) void allocate_viewport_buffer(void) { - ulonglong uVar1; - uint uVar2; - - if (resolution == 0) { - mainthread._352_4_ = 0x140; - uVar1 = get_num_players(); - if (uVar1 == 1) { - mainthread._356_4_ = 0xf0; + s32 sVar1; + uint uVar2; + + if (resolution == 0) { + mainthread._352_4_ = 0x140; + sVar1 = get_num_players(); + if (sVar1 == 1) { + mainthread._356_4_ = 0xf0; + } + else { + mainthread._356_4_ = 0x78; + } } else { - mainthread._356_4_ = 0x78; + mainthread._352_4_ = 0x1b8; + mainthread._356_4_ = 0x14a; } - } - else { - mainthread._352_4_ = 0x1b8; - mainthread._356_4_ = 0x14a; - } - uVar2 = allocate_bytes_in_bank(mainthread._352_4_ * mainthread._356_4_ * 2 + 0x40,4); - viewport_img = uVar2 + 0x3f & 0xffffffc0; - return; + uVar2 = mempAllocBytesInBank(mainthread._352_4_ * mainthread._356_4_ * 2 + 0x40,'\x04'); + viewport_img = uVar2 + 0x3f & 0xffffffc0; + return; } @@ -143807,10 +143000,10 @@ void allocate_viewport_buffer(void) void proc_7F0D2448(undefined4 param_1,undefined4 param_2,undefined4 param_3) { - viewport_img = param_1; - mainthread._352_4_ = param_2; - mainthread._356_4_ = param_3; - return; + viewport_img = param_1; + mainthread._352_4_ = param_2; + mainthread._356_4_ = param_3; + return; } @@ -143818,33 +143011,33 @@ void proc_7F0D2448(undefined4 param_1,undefined4 param_2,undefined4 param_3) undefined4 * proc_7F0D2464(undefined4 *param_1) { - int iVar1; - u32 uVar3; - ulonglong uVar2; - int iVar4; - - if (viewport_img == 0) { - allocate_viewport_buffer(); - } - uVar3 = get_cur_playernum(); - if ((int)uVar3 < 2) { - uVar2 = get_num_players(); - if (uVar2 == 2) { - uVar3 = get_cur_playernum(); - if (uVar3 == 1) goto LAB_7f0d24c4; + int iVar1; + u32 uVar2; + s32 sVar3; + int iVar4; + + if (viewport_img == 0) { + allocate_viewport_buffer(); } - iVar4 = 0; - } - else { + uVar2 = get_cur_playernum(); + if ((int)uVar2 < 2) { + sVar3 = get_num_players(); + if (sVar3 == 2) { + uVar2 = get_cur_playernum(); + if (uVar2 == 1) goto LAB_7f0d24c4; + } + iVar4 = 0; + } + else { LAB_7f0d24c4: - iVar4 = 0x12c00; - } - iVar1 = viewport_img; - *param_1 = 0xe7000000; - param_1[1] = 0; - param_1[2] = 0xfe000000; - param_1[3] = iVar1 - iVar4 & 0xffffffc0; - return param_1 + 4; + iVar4 = 0x12c00; + } + iVar1 = viewport_img; + *param_1 = 0xe7000000; + param_1[1] = 0; + param_1[2] = 0xfe000000; + param_1[3] = iVar1 - iVar4 & 0xffffffc0; + return param_1 + 4; } @@ -143852,62 +143045,62 @@ LAB_7f0d24c4: undefined4 * proc_7F0D2518(undefined4 *param_1) { - int iVar1; - short sVar4; - short sVar5; - ulonglong uVar2; - u32 uVar3; - uint uVar6; - uint uStack4; - - *param_1 = 0xe7000000; - param_1[1] = 0; - param_1[2] = 0xb900031d; - param_1[3] = 0; - param_1[4] = mainthread._352_4_ - 1U & 0xfff | 0xff100000; - param_1[5] = viewport_img + -0x80000000; - param_1[7] = 0x300000; - param_1[6] = 0xba001402; - param_1[8] = 0xf7000000; - param_1[9] = 0xfffcfffc; - param_1[10] = 0xed000000; - sVar4 = get_video2_settings_txtClipW(); - sVar5 = get_video2_settings_txtClipH(); - param_1[0xb] = (int)((float)(int)sVar5 * 4.00000000) & 0xfffU | - ((int)((float)(int)sVar4 * 4.00000000) & 0xfffU) << 0xc; - uVar2 = get_num_players(); - if ((longlong)uVar2 < 3) { - uStack4 = 0; + int iVar1; + short sVar4; + short sVar5; + s32 sVar2; + u32 uVar3; + uint uVar6; + uint uStack4; + + *param_1 = 0xe7000000; + param_1[1] = 0; + param_1[2] = 0xb900031d; + param_1[3] = 0; + param_1[4] = mainthread._352_4_ - 1U & 0xfff | 0xff100000; + param_1[5] = viewport_img + -0x80000000; + param_1[7] = 0x300000; + param_1[6] = 0xba001402; + param_1[8] = 0xf7000000; + param_1[9] = 0xfffcfffc; + param_1[10] = 0xed000000; sVar4 = get_video2_settings_txtClipW(); - uVar6 = (int)sVar4 - 1; - } - else { - uVar3 = get_cur_playernum(); - if ((uVar3 == 0) || (uVar3 = get_cur_playernum(), uVar3 == 2)) { - uStack4 = 0; - sVar4 = get_video2_settings_txtClipW(); - iVar1 = (int)sVar4; - if (sVar4 < 0) { - iVar1 += 1; - } - uVar6 = (iVar1 >> 1) - 1; + sVar5 = get_video2_settings_txtClipH(); + param_1[0xb] = (int)((float)(int)sVar5 * 4.00000000) & 0xfffU | + ((int)((float)(int)sVar4 * 4.00000000) & 0xfffU) << 0xc; + sVar2 = get_num_players(); + if (sVar2 < 3) { + uStack4 = 0; + sVar4 = get_video2_settings_txtClipW(); + uVar6 = (int)sVar4 - 1; } else { - sVar4 = get_video2_settings_txtClipW(); - iVar1 = (int)sVar4; - if (sVar4 < 0) { - iVar1 += 1; - } - uStack4 = iVar1 >> 1; - sVar4 = get_video2_settings_txtClipW(); - uVar6 = (int)sVar4 - 1; + uVar3 = get_cur_playernum(); + if ((uVar3 == 0) || (uVar3 = get_cur_playernum(), uVar3 == 2)) { + uStack4 = 0; + sVar4 = get_video2_settings_txtClipW(); + iVar1 = (int)sVar4; + if (sVar4 < 0) { + iVar1 += 1; + } + uVar6 = (iVar1 >> 1) - 1; + } + else { + sVar4 = get_video2_settings_txtClipW(); + iVar1 = (int)sVar4; + if (sVar4 < 0) { + iVar1 += 1; + } + uStack4 = iVar1 >> 1; + sVar4 = get_video2_settings_txtClipW(); + uVar6 = (int)sVar4 - 1; + } } - } - param_1[0xc] = (uVar6 & 0x3ff) << 0xe | 0xf6000000 | (mainthread._356_4_ - 1U & 0x3ff) << 2; - param_1[0xd] = (uStack4 & 0x3ff) << 0xe; - param_1[0xe] = 0xe7000000; - param_1[0xf] = 0; - return param_1 + 0x10; + param_1[0xc] = (uVar6 & 0x3ff) << 0xe | 0xf6000000 | (mainthread._356_4_ - 1U & 0x3ff) << 2; + param_1[0xd] = (uStack4 & 0x3ff) << 0xe; + param_1[0xe] = 0xe7000000; + param_1[0xf] = 0; + return param_1 + 0x10; } @@ -143915,85 +143108,85 @@ undefined4 * proc_7F0D2518(undefined4 *param_1) MUSIC_TRACKS getmusictrack_or_randomtrack(u32 stagenum) { - music_setup *pmVar1; - word *pwVar2; - u32 uVar3; - longlong lVar4; - uint uVar5; - word wVar6; - - if (music_setup_entries[0].stage_id != 0) { - pmVar1 = music_setup_entries; - lVar4 = (longlong)music_setup_entries[0].stage_id; - do { - if ((longlong)(int)stagenum == lVar4) { - wVar6 = pmVar1->main_music; - if (wVar6 == 0xffff) { - uVar5 = 0; - pwVar2 = random_tracks; - wVar6 = random_tracks[1]; - if (random_tracks[0] != 0) { - while( true ) { - uVar5 += 1; - if (wVar6 == 0) break; - wVar6 = pwVar2[2]; - pwVar2 = pwVar2 + 1; + music_setup *pmVar1; + word *pwVar2; + u32 uVar3; + longlong lVar4; + uint uVar5; + word wVar6; + + if (music_setup_entries[0].stage_id != 0) { + pmVar1 = music_setup_entries; + lVar4 = (longlong)music_setup_entries[0].stage_id; + do { + if ((longlong)(int)stagenum == lVar4) { + wVar6 = pmVar1->main_music; + if (wVar6 == 0xffff) { + uVar5 = 0; + pwVar2 = random_tracks; + wVar6 = random_tracks[1]; + if (random_tracks[0] != 0) { + while( true ) { + uVar5 += 1; + if (wVar6 == 0) break; + wVar6 = pwVar2[2]; + pwVar2 = pwVar2 + 1; + } + } + uVar3 = get_random_value(); + wVar6 = random_tracks[uVar3 % uVar5]; + if (uVar5 == 0) { + trap(0x1c00); + } + } + goto LAB_7f0d283c; } - } - uVar3 = get_random_value(); - wVar6 = random_tracks[uVar3 % uVar5]; - if (uVar5 == 0) { - trap(0x1c00); - } - } - goto LAB_7f0d283c; - } - lVar4 = (longlong)pmVar1[1].stage_id; - pmVar1 = pmVar1 + 1; - } while (lVar4 != 0); - } - uVar5 = 0; - pwVar2 = random_tracks; - wVar6 = random_tracks[1]; - if (random_tracks[0] != 0) { - while( true ) { - uVar5 += 1; - if (wVar6 == 0) break; - wVar6 = pwVar2[2]; - pwVar2 = pwVar2 + 1; + lVar4 = (longlong)pmVar1[1].stage_id; + pmVar1 = pmVar1 + 1; + } while (lVar4 != 0); + } + uVar5 = 0; + pwVar2 = random_tracks; + wVar6 = random_tracks[1]; + if (random_tracks[0] != 0) { + while( true ) { + uVar5 += 1; + if (wVar6 == 0) break; + wVar6 = pwVar2[2]; + pwVar2 = pwVar2 + 1; + } + } + uVar3 = get_random_value(); + wVar6 = random_tracks[uVar3 % uVar5]; + if (uVar5 == 0) { + trap(0x1c00); } - } - uVar3 = get_random_value(); - wVar6 = random_tracks[uVar3 % uVar5]; - if (uVar5 == 0) { - trap(0x1c00); - } LAB_7f0d283c: - return (MUSIC_TRACKS)(int)(short)wVar6; + return (MUSIC_TRACKS)(int)(short)wVar6; } -short proc_7F0D2848(short param_1) +short sub_GAME_7F0D2848(short param_1) { - music_setup *pmVar1; - short sVar2; - music_setup *pmVar3; - - pmVar3 = music_setup_entries; - sVar2 = music_setup_entries[0].stage_id; - if (music_setup_entries[0].stage_id != 0) { - do { - if (param_1 == sVar2) { - return pmVar3->bg_sound; - } - pmVar1 = pmVar3 + 1; - pmVar3 = pmVar3 + 1; - sVar2 = pmVar1->stage_id; - } while (pmVar1->stage_id != 0); - } - return 0xffff; + music_setup *pmVar1; + short sVar2; + music_setup *pmVar3; + + pmVar3 = music_setup_entries; + sVar2 = music_setup_entries[0].stage_id; + if (music_setup_entries[0].stage_id != 0) { + do { + if (param_1 == sVar2) { + return pmVar3->bg_sound; + } + pmVar1 = pmVar3 + 1; + pmVar3 = pmVar3 + 1; + sVar2 = pmVar1->stage_id; + } while (pmVar1->stage_id != 0); + } + return 0xffff; } @@ -144001,23 +143194,23 @@ short proc_7F0D2848(short param_1) short proc_7F0D2890(short param_1) { - music_setup *pmVar1; - short sVar2; - music_setup *pmVar3; - - pmVar3 = music_setup_entries; - sVar2 = music_setup_entries[0].stage_id; - if (music_setup_entries[0].stage_id != 0) { - do { - if (param_1 == sVar2) { - return pmVar3->xtrack; - } - pmVar1 = pmVar3 + 1; - pmVar3 = pmVar3 + 1; - sVar2 = pmVar1->stage_id; - } while (pmVar1->stage_id != 0); - } - return 0xffff; + music_setup *pmVar1; + short sVar2; + music_setup *pmVar3; + + pmVar3 = music_setup_entries; + sVar2 = music_setup_entries[0].stage_id; + if (music_setup_entries[0].stage_id != 0) { + do { + if (param_1 == sVar2) { + return pmVar3->xtrack; + } + pmVar1 = pmVar3 + 1; + pmVar3 = pmVar3 + 1; + sVar2 = pmVar1->stage_id; + } while (pmVar1->stage_id != 0); + } + return 0xffff; } @@ -144025,79 +143218,79 @@ short proc_7F0D2890(short param_1) void proc_7F0D28E0(int param_1,int param_2,undefined8 param_3,byte *param_4) { - byte bVar1; - byte *pbVar2; - uint uVar3; - uint uVar4; - byte bVar5; - int iVar6; - uint uVar7; - byte bVar8; - byte bVar9; - - uVar3 = (uint)param_3; - bVar5 = *(byte *)((uVar3 << 2 & 0x3e0) + (param_2 >> 3) + param_1 + 0x1800); - uVar4 = (uint)bVar5; - pbVar2 = (byte *)(((uVar3 & 0xc0) << 5 | (uVar3 & 7) << 8 | uVar3 << 2 & 0xe0 | param_2 >> 3) + - param_1); - if (((bVar5 & 0x80) == 0) || (DAT_8004ed04 == '\0')) { - uVar3 = (int)(uint)bVar5 >> 3; - } - else { - uVar3 = uVar4; - uVar4 = (int)(uint)bVar5 >> 3; - } - uVar4 &= 7; - uVar3 &= 7; - iVar6 = 0; - if ((bVar5 & 0x40) == 0) { - uVar4 += 8; - uVar3 += 8; - } - bVar5 = (byte)uVar4; - do { - bVar1 = *pbVar2; - iVar6 += 1; - pbVar2 = pbVar2 + 0x100; - uVar7 = uVar3; - if ((bVar1 & 0x80) != 0) { - uVar7 = uVar4; + byte bVar1; + byte *pbVar2; + uint uVar3; + uint uVar4; + byte bVar5; + int iVar6; + uint uVar7; + byte bVar8; + byte bVar9; + + uVar3 = (uint)param_3; + bVar5 = *(byte *)((uVar3 << 2 & 0x3e0) + (param_2 >> 3) + param_1 + 0x1800); + uVar4 = (uint)bVar5; + pbVar2 = (byte *)(((uVar3 & 0xc0) << 5 | (uVar3 & 7) << 8 | uVar3 << 2 & 0xe0 | param_2 >> 3) + + param_1); + if (((bVar5 & 0x80) == 0) || (DAT_8004ed04 == '\0')) { + uVar3 = (int)(uint)bVar5 >> 3; } - bVar9 = (byte)uVar3; - bVar8 = bVar9; - if ((bVar1 & 0x40) != 0) { - bVar8 = bVar5; + else { + uVar3 = uVar4; + uVar4 = (int)(uint)bVar5 >> 3; } - *param_4 = bVar8 | (byte)(uVar7 << 4); - uVar7 = uVar3; - if ((bVar1 & 0x20) != 0) { - uVar7 = uVar4; + uVar4 &= 7; + uVar3 &= 7; + iVar6 = 0; + if ((bVar5 & 0x40) == 0) { + uVar4 += 8; + uVar3 += 8; } - bVar8 = bVar9; - if ((bVar1 & 0x10) != 0) { - bVar8 = bVar5; - } - param_4[1] = bVar8 | (byte)(uVar7 << 4); - uVar7 = uVar3; - if ((bVar1 & 8) != 0) { - uVar7 = uVar4; - } - bVar8 = bVar9; - if ((bVar1 & 4) != 0) { - bVar8 = bVar5; - } - param_4[2] = bVar8 | (byte)(uVar7 << 4); - uVar7 = uVar3; - if ((bVar1 & 2) != 0) { - uVar7 = uVar4; - } - if ((bVar1 & 1) != 0) { - bVar9 = bVar5; - } - param_4[3] = bVar9 | (byte)(uVar7 << 4); - param_4 = param_4 + 0x20; - } while (iVar6 != 8); - return; + bVar5 = (byte)uVar4; + do { + bVar1 = *pbVar2; + iVar6 += 1; + pbVar2 = pbVar2 + 0x100; + uVar7 = uVar3; + if ((bVar1 & 0x80) != 0) { + uVar7 = uVar4; + } + bVar9 = (byte)uVar3; + bVar8 = bVar9; + if ((bVar1 & 0x40) != 0) { + bVar8 = bVar5; + } + *param_4 = bVar8 | (byte)(uVar7 << 4); + uVar7 = uVar3; + if ((bVar1 & 0x20) != 0) { + uVar7 = uVar4; + } + bVar8 = bVar9; + if ((bVar1 & 0x10) != 0) { + bVar8 = bVar5; + } + param_4[1] = bVar8 | (byte)(uVar7 << 4); + uVar7 = uVar3; + if ((bVar1 & 8) != 0) { + uVar7 = uVar4; + } + bVar8 = bVar9; + if ((bVar1 & 4) != 0) { + bVar8 = bVar5; + } + param_4[2] = bVar8 | (byte)(uVar7 << 4); + uVar7 = uVar3; + if ((bVar1 & 2) != 0) { + uVar7 = uVar4; + } + if ((bVar1 & 1) != 0) { + bVar9 = bVar5; + } + param_4[3] = bVar9 | (byte)(uVar7 << 4); + param_4 = param_4 + 0x20; + } while (iVar6 != 8); + return; } @@ -144105,64 +143298,65 @@ void proc_7F0D28E0(int param_1,int param_2,undefined8 param_3,byte *param_4) void proc_7F0D2A84(int param_1,int param_2) { - int iVar1; - int iVar2; - byte *pbVar3; - longlong lVar4; - longlong lVar5; - int local_8; - - DAT_8004ed08 += 1; - if ((int)(uint)DAT_8004ed08 % 0x19 == 0) { - DAT_8004ed08 = 0; - iVar1 = 0; - do { - *(undefined *)(mainthread._380_4_ + iVar1) = 1; - *(undefined *)(mainthread._380_4_ + iVar1 + 1) = 1; - *(undefined *)(mainthread._380_4_ + iVar1 + 2) = 1; - iVar2 = mainthread._380_4_ + iVar1; - iVar1 += 4; - *(undefined *)(iVar2 + 3) = 1; - } while (iVar1 != 0x300); - DAT_8004ed04 = '\x01' - DAT_8004ed04; - } - local_8 = 0; - do { - iVar1 = 0; - lVar5 = (longlong)(local_8 + 0x40); - do { - lVar4 = (longlong)local_8; - pbVar3 = (byte *)(((local_8 >> 6) * 4 + (iVar1 >> 6)) * 0x800 + param_2); - if (lVar4 < lVar5) { + int iVar1; + int iVar2; + byte *pbVar3; + longlong lVar4; + longlong lVar5; + int local_8; + + DAT_8004ed08 += 1; + if ((int)(uint)DAT_8004ed08 % 0x19 == 0) { + DAT_8004ed08 = 0; + iVar1 = 0; do { - if (iVar1 < iVar1 + 0x40) { - iVar2 = iVar1; - do { - if (*(char *)((((int)lVar4 >> 3) << 5 | iVar2 >> 3) + mainthread._380_4_) != '\0') { - proc_7F0D28E0(param_1,iVar2,lVar4,pbVar3); - } - iVar2 += 8; - pbVar3 = pbVar3 + 4; - } while (iVar2 < iVar1 + 0x40); - } - lVar4 = (longlong)((int)lVar4 + 8); - pbVar3 = pbVar3 + 0xe0; - } while (lVar4 < lVar5); - } - iVar1 += 0x40; - } while (iVar1 < 0x100); - local_8 = local_8 + 0x40; - } while (lVar5 < 0xc0); - iVar1 = 0; - do { - *(undefined *)(mainthread._380_4_ + iVar1) = 0; - *(undefined *)(mainthread._380_4_ + iVar1 + 1) = 0; - *(undefined *)(mainthread._380_4_ + iVar1 + 2) = 0; - iVar2 = mainthread._380_4_ + iVar1; - iVar1 += 4; - *(undefined *)(iVar2 + 3) = 0; - } while (iVar1 != 0x300); - return; + *(undefined *)(mainthread._380_4_ + iVar1) = 1; + *(undefined *)(mainthread._380_4_ + iVar1 + 1) = 1; + *(undefined *)(mainthread._380_4_ + iVar1 + 2) = 1; + iVar2 = mainthread._380_4_ + iVar1; + iVar1 += 4; + *(undefined *)(iVar2 + 3) = 1; + } while (iVar1 != 0x300); + DAT_8004ed04 = '\x01' - DAT_8004ed04; + } + local_8 = 0; + do { + iVar1 = 0; + lVar5 = (longlong)(local_8 + 0x40); + do { + lVar4 = (longlong)local_8; + pbVar3 = (byte *)(((local_8 >> 6) * 4 + (iVar1 >> 6)) * 0x800 + param_2); + if (lVar4 < lVar5) { + do { + if (iVar1 < iVar1 + 0x40) { + iVar2 = iVar1; + do { + if (*(char *)((((int)lVar4 >> 3) << 5 | iVar2 >> 3) + mainthread._380_4_ + ) != '\0') { + proc_7F0D28E0(param_1,iVar2,lVar4,pbVar3); + } + iVar2 += 8; + pbVar3 = pbVar3 + 4; + } while (iVar2 < iVar1 + 0x40); + } + lVar4 = (longlong)((int)lVar4 + 8); + pbVar3 = pbVar3 + 0xe0; + } while (lVar4 < lVar5); + } + iVar1 += 0x40; + } while (iVar1 < 0x100); + local_8 = local_8 + 0x40; + } while (lVar5 < 0xc0); + iVar1 = 0; + do { + *(undefined *)(mainthread._380_4_ + iVar1) = 0; + *(undefined *)(mainthread._380_4_ + iVar1 + 1) = 0; + *(undefined *)(mainthread._380_4_ + iVar1 + 2) = 0; + iVar2 = mainthread._380_4_ + iVar1; + iVar1 += 4; + *(undefined *)(iVar2 + 3) = 0; + } while (iVar1 != 0x300); + return; } @@ -144173,110 +143367,113 @@ void proc_7F0D2A84(int param_1,int param_2) void spectrum_p1controller_to_kempston(void) { - ulonglong uVar1; - int iVar2; - int iVar3; - undefined1 *puVar4; - byte bStack13; - int iStack12; - int iStack8; - int iStack4; - - iStack4 = 0; - iStack8 = 0; - iStack12 = 0; - bStack13 = 0; - redirect_to_ramrom_replay_and_record_handlers_if_set(); - uVar1 = get_controller_buttons_held('\0',0xffff); - iVar2 = get_controller_3dstick_L_R('\0',-3,3); - iVar3 = get_controller_3dstick_U_D('\0',-3,3); - byte_8004EC34 = 0xff; - puVar4 = &DAT_8004ec35; - do { - puVar4 = puVar4 + 4; - puVar4[1] = 0xff; - puVar4[2] = 0xff; - puVar4[3] = 0xff; - *puVar4 = 0xff; - puVar4 = puVar4; - } while (puVar4 != (undefined1 *)0x8004ec3d); - if (((uVar1 & 0x202) != 0) || (iVar2 < -1)) { - iStack12 = 1; - } - if (((uVar1 & 0x101) != 0) || (1 < iVar2)) { - bStack13 = 1; - } - if (((uVar1 & 0x808) != 0) || (1 < iVar3)) { - iStack4 = 1; - } - if (((uVar1 & 0x404) != 0) || (iVar3 < -1)) { - iStack8 = 1; - } - if ((mainthread[413] == '\x02') && ((uVar1 & 0xc000) != 0)) { - iStack4 = 1; - } - if (((mainthread[413] == '\x04') || (mainthread[413] == '\a')) && ((uVar1 & 0xc000) != 0)) { - iStack8 = 1; - } - if (((((mainthread[413] == '\0') || (mainthread[413] == '\x01')) || - ((mainthread[413] == '\x06' || ((mainthread[413] == '\t' || (mainthread[413] == '\x04')))))) - || (mainthread[413] == '\a')) && ((uVar1 & 0xc000) != 0)) { - byte_8004EC38 &= 0xfe; - } - if (((mainthread[413] == '\x02') || (mainthread[413] == '\b')) && ((uVar1 & 0xc000) != 0)) { - DAT_8004ec37 &= 0xef; - } - if ((mainthread[413] == '\x05') && ((uVar1 & 0xc000) != 0)) { - DAT_8004ec37 &= 0xfb; - } - if (mainthread[413] == '\x03') { - if ((uVar1 & 0xc000) != 0) { - byte_8004EC38 &= 0xef; - } - if ((uVar1 & 0x8000) != 0) { - byte_8004EC34 &= 0xfd; - } - if ((uVar1 & 0x4000) != 0) { - DAT_8004ec3b &= 0xfe; - } - } - if (mainthread[413] == '\x06') { - if ((uVar1 & 0x8000) != 0) { - iStack4 = 1; - } - if ((uVar1 & 0x4000) != 0) { - DAT_8004ec3b &= 0xfe; - } - } - if (mainthread[413] == '\x01') { - if ((uVar1 & 0xc000) != 0) { - byte_8004EC34 &= 0xfd; - } - if ((uVar1 & 0x200) != 0) { - DAT_8004ec37 &= 0xf7; - } - if ((uVar1 & 0x400) != 0) { - DAT_8004ec37 &= 0xef; - } - if ((uVar1 & 0x100) != 0) { - byte_8004EC38 &= 0xef; - } - } - if ((uVar1 & 0x20) != 0) { - iVar2 = 0; + u32 uVar1; + int iVar2; + int iVar3; + undefined1 *puVar4; + byte bStack13; + int iStack12; + int iStack8; + int iStack4; + + iStack4 = 0; + iStack8 = 0; + iStack12 = 0; + bStack13 = 0; + redirect_to_ramrom_replay_and_record_handlers_if_set(); + uVar1 = get_controller_buttons_held + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + iVar2 = get_controller_3dstick_L_R('\0',-3,3); + iVar3 = get_controller_3dstick_U_D('\0',-3,3); + byte_8004EC34 = 0xff; + puVar4 = &DAT_8004ec35; do { - *(undefined *)(mainthread._376_4_ + iVar2) = 0; - *(undefined *)(mainthread._376_4_ + iVar2 + 1) = 0; - *(undefined *)(mainthread._376_4_ + iVar2 + 2) = 0; - iVar3 = mainthread._376_4_ + iVar2; - iVar2 += 4; - *(undefined *)(iVar3 + 3) = 0; - } while (iVar2 != 0x4000); - } - byte_8004EC40 = - ((uVar1 & 0x2000) != 0) << 4 | (byte)(iStack4 << 3) | (byte)(iStack8 << 2) | - (byte)(iStack12 << 1) | bStack13; - return; + puVar4 = puVar4 + 4; + puVar4[1] = 0xff; + puVar4[2] = 0xff; + puVar4[3] = 0xff; + *puVar4 = 0xff; + puVar4 = puVar4; + } while (puVar4 != (undefined1 *)0x8004ec3d); + if (((uVar1 & 0x202) != 0) || (iVar2 < -1)) { + iStack12 = 1; + } + if (((uVar1 & 0x101) != 0) || (1 < iVar2)) { + bStack13 = 1; + } + if (((uVar1 & 0x808) != 0) || (1 < iVar3)) { + iStack4 = 1; + } + if (((uVar1 & 0x404) != 0) || (iVar3 < -1)) { + iStack8 = 1; + } + if ((mainthread[413] == '\x02') && ((uVar1 & 0xc000) != 0)) { + iStack4 = 1; + } + if (((mainthread[413] == '\x04') || (mainthread[413] == '\a')) && ((uVar1 & 0xc000) != 0)) { + iStack8 = 1; + } + if (((((mainthread[413] == '\0') || (mainthread[413] == '\x01')) || + ((mainthread[413] == '\x06' || ((mainthread[413] == '\t' || (mainthread[413] == '\x04'))))) + ) || (mainthread[413] == '\a')) && ((uVar1 & 0xc000) != 0)) { + byte_8004EC38 &= 0xfe; + } + if (((mainthread[413] == '\x02') || (mainthread[413] == '\b')) && ((uVar1 & 0xc000) != 0)) { + DAT_8004ec37 &= 0xef; + } + if ((mainthread[413] == '\x05') && ((uVar1 & 0xc000) != 0)) { + DAT_8004ec37 &= 0xfb; + } + if (mainthread[413] == '\x03') { + if ((uVar1 & 0xc000) != 0) { + byte_8004EC38 &= 0xef; + } + if ((uVar1 & 0x8000) != 0) { + byte_8004EC34 &= 0xfd; + } + if ((uVar1 & 0x4000) != 0) { + DAT_8004ec3b &= 0xfe; + } + } + if (mainthread[413] == '\x06') { + if ((uVar1 & 0x8000) != 0) { + iStack4 = 1; + } + if ((uVar1 & 0x4000) != 0) { + DAT_8004ec3b &= 0xfe; + } + } + if (mainthread[413] == '\x01') { + if ((uVar1 & 0xc000) != 0) { + byte_8004EC34 &= 0xfd; + } + if ((uVar1 & 0x200) != 0) { + DAT_8004ec37 &= 0xf7; + } + if ((uVar1 & 0x400) != 0) { + DAT_8004ec37 &= 0xef; + } + if ((uVar1 & 0x100) != 0) { + byte_8004EC38 &= 0xef; + } + } + if ((uVar1 & 0x20) != 0) { + iVar2 = 0; + do { + *(undefined *)(mainthread._376_4_ + iVar2) = 0; + *(undefined *)(mainthread._376_4_ + iVar2 + 1) = 0; + *(undefined *)(mainthread._376_4_ + iVar2 + 2) = 0; + iVar3 = mainthread._376_4_ + iVar2; + iVar2 += 4; + *(undefined *)(iVar3 + 3) = 0; + } while (iVar2 != 0x4000); + } + byte_8004EC40 = + ((uVar1 & 0x2000) != 0) << 4 | (byte)(iStack4 << 3) | (byte)(iStack8 << 2) | + (byte)(iStack12 << 1) | bStack13; + return; } @@ -144284,117 +143481,109 @@ void spectrum_p1controller_to_kempston(void) void init_spectrum_game(byte param_1) { - int iVar1; - uint uVar2; - undefined4 *puVar3; - bool bVar4; - uint uVar5; - int iVar6; - ushort uVar7; - undefined *puVar8; - int iVar9; - uint uVar10; - undefined *puVar11; - - mainthread._388_4_ = allocate_bytes_in_bank(0x100,4); - uVar5 = 0; - do { - bVar4 = false; - uVar2 = 0; - uVar10 = uVar5; - while( true ) { - uVar2 += 1; - if ((uVar10 & 1) != 0) { - bVar4 = (bool)(bVar4 ^ 1); - } - if (uVar2 == 8) break; - uVar10 = (int)uVar5 >> (uVar2 & 0x1f); + int iVar1; + uint uVar2; + bool bVar3; + uint uVar4; + int iVar5; + u8 *puVar6; + ushort uVar7; + undefined *puVar8; + int iVar9; + uint uVar10; + u8 *puVar11; + + mainthread._388_4_ = mempAllocBytesInBank(0x100,'\x04'); + uVar4 = 0; + do { + bVar3 = false; + uVar2 = 0; + uVar10 = uVar4; + while( true ) { + uVar2 += 1; + if ((uVar10 & 1) != 0) { + bVar3 = (bool)(bVar3 ^ 1); + } + if (uVar2 == 8) break; + uVar10 = (int)uVar4 >> (uVar2 & 0x1f); + } + if (bVar3) { + *(undefined *)(mainthread._388_4_ + uVar4) = 0; + } + else { + *(undefined *)(mainthread._388_4_ + uVar4) = 4; + } + uVar4 += 1; + } while ((int)uVar4 < 0x100); + mainthread._384_4_ = mempAllocBytesInBank(0x6000,'\x04'); + mainthread._380_4_ = mempAllocBytesInBank(0x300,'\x04'); + iVar5 = 0; + do { + puVar8 = (undefined *)(mainthread._380_4_ + iVar5); + iVar5 += 1; + *puVar8 = 1; + } while (iVar5 < 0x300); + mainthread._376_4_ = mempAllocBytesInBank(0x10000,'\x04'); + mainthread._368_4_ = + _load_resource_named_to_membank((byte *)"em/data/spec_rom.seg.rz",1,0x100,4); + iVar5 = 0; + do { + puVar11 = mainthread._368_4_ + iVar5; + puVar6 = (u8 *)(mainthread._376_4_ + iVar5); + iVar5 += 1; + *puVar6 = *puVar11; + } while (iVar5 < 0x4000); + uVar4 = (int)(char)param_1 & 0xff; + mainthread[413] = param_1; + if (4 < uVar4) { + mainthread[413] = 0; + uVar4 = 0; } - if (bVar4) { - *(undefined *)(mainthread._388_4_ + uVar5) = 0; + mainthread._372_4_ = + _load_resource_named_to_membank((&aEmDataSabre_seg_rz_ptr)[uVar4],1,0x100,4); + iVar5 = 0; + do { + *(u8 *)(mainthread._376_4_ + iVar5 + 0x4000) = mainthread._372_4_[iVar5 + 0x1b]; + *(u8 *)(mainthread._376_4_ + iVar5 + 0x4001) = mainthread._372_4_[iVar5 + 0x1c]; + *(u8 *)(mainthread._376_4_ + iVar5 + 0x4002) = mainthread._372_4_[iVar5 + 0x1d]; + iVar1 = iVar5 + 0x1e; + iVar9 = mainthread._376_4_ + iVar5; + iVar5 += 4; + *(u8 *)(iVar9 + 0x4003) = mainthread._372_4_[iVar1]; + } while (iVar5 != 0xc000); + mainthread[410] = (byte)((int)(uint)mainthread._372_4_[0x13] >> 2) & 1; + uVar7 = (ushort)mainthread._372_4_[0x18] * 0x100 + (ushort)mainthread._372_4_[0x17]; + mainthread[412] = mainthread._372_4_[0x19]; + if (mainthread[412] != '\0') { + mainthread[412] += '\x01'; } - else { - *(undefined *)(mainthread._388_4_ + uVar5) = 4; - } - uVar5 += 1; - } while ((int)uVar5 < 0x100); - mainthread._384_4_ = allocate_bytes_in_bank(0x6000,4); - mainthread._380_4_ = allocate_bytes_in_bank(0x300,4); - iVar6 = 0; - do { - puVar8 = (undefined *)(mainthread._380_4_ + iVar6); - iVar6 += 1; - *puVar8 = 1; - } while (iVar6 < 0x300); - uVar5 = allocate_bytes_in_bank(0x10000,4); - mainthread._376_4_ = uVar5; - _load_resource_named_to_membank((byte *)"em/data/spec_rom.seg.rz",1,0x100,4); - iVar6 = 0; - mainthread._368_4_ = uVar5; - do { - puVar11 = (undefined *)(mainthread._368_4_ + iVar6); - puVar8 = (undefined *)(mainthread._376_4_ + iVar6); - iVar6 += 1; - *puVar8 = *puVar11; - } while (iVar6 < 0x4000); - puVar3 = (undefined4 *)((int)(char)param_1 & 0xff); - mainthread[413] = param_1; - if (&i < puVar3) { - mainthread[413] = 0; - puVar3 = NULL; - } - _load_resource_named_to_membank((&aEmDataSabre_seg_rz_ptr)[(int)puVar3],1,0x100,4); - iVar6 = 0; - mainthread._372_4_ = puVar3; - do { - *(undefined *)(mainthread._376_4_ + iVar6 + 0x4000) = - *(undefined *)((int)mainthread._372_4_ + iVar6 + 0x1b); - *(undefined *)(mainthread._376_4_ + iVar6 + 0x4001) = - *(undefined *)((int)mainthread._372_4_ + iVar6 + 0x1c); - *(undefined *)(mainthread._376_4_ + iVar6 + 0x4002) = - *(undefined *)((int)mainthread._372_4_ + iVar6 + 0x1d); - iVar1 = iVar6 + 0x1e; - iVar9 = mainthread._376_4_ + iVar6; - iVar6 += 4; - *(undefined *)(iVar9 + 0x4003) = *(undefined *)((int)mainthread._372_4_ + iVar1); - } while (iVar6 != 0xc000); - mainthread[410] = (byte)((int)(uint)*(byte *)((int)mainthread._372_4_ + 0x13) >> 2) & 1; - uVar7 = (ushort)*(byte *)(mainthread._372_4_ + 6) * 0x100 + - (ushort)*(byte *)((int)mainthread._372_4_ + 0x17); - mainthread[412] = *(char *)((int)mainthread._372_4_ + 0x19); - if (mainthread[412] != '\0') { - mainthread[412] += '\x01'; - } - mainthread[392] = *(undefined *)((int)mainthread._372_4_ + 0x16); - mainthread[393] = *(undefined *)((int)mainthread._372_4_ + 0x15); - mainthread[394] = *(undefined *)((int)mainthread._372_4_ + 0xe); - mainthread[395] = *(undefined *)((int)mainthread._372_4_ + 0xd); - mainthread[396] = *(undefined *)(mainthread._372_4_ + 3); - mainthread[397] = *(undefined *)((int)mainthread._372_4_ + 0xb); - mainthread[398] = *(undefined *)((int)mainthread._372_4_ + 10); - mainthread[399] = *(undefined *)((int)mainthread._372_4_ + 9); - mainthread[400] = *(undefined *)(mainthread._372_4_ + 2); - mainthread[401] = *(undefined *)((int)mainthread._372_4_ + 7); - mainthread[402] = *(undefined *)((int)mainthread._372_4_ + 6); - mainthread[403] = *(undefined *)((int)mainthread._372_4_ + 5); - mainthread[404] = *(undefined *)(mainthread._372_4_ + 1); - mainthread[405] = *(undefined *)((int)mainthread._372_4_ + 3); - mainthread[406] = *(undefined *)((int)mainthread._372_4_ + 2); - mainthread[407] = *(undefined *)((int)mainthread._372_4_ + 1); - mainthread[408] = *(undefined *)mainthread._372_4_; - mainthread[409] = *(undefined *)(mainthread._372_4_ + 5); - mainthread[411] = mainthread[410]; - mainthread._414_2_ = - (ushort)*(byte *)((int)mainthread._372_4_ + 0x12) * 0x100 + - (ushort)*(byte *)((int)mainthread._372_4_ + 0x11); - mainthread._416_2_ = - (ushort)*(byte *)(mainthread._372_4_ + 4) * 0x100 + - (ushort)*(byte *)((int)mainthread._372_4_ + 0xf); - mainthread._418_2_ = uVar7 + 2; - mainthread._420_2_ = - CONCAT11(*(undefined *)(mainthread._376_4_ + (uint)uVar7 + 1), - *(undefined *)((uint)uVar7 + mainthread._376_4_)); - return; + mainthread[392] = mainthread._372_4_[0x16]; + mainthread[393] = mainthread._372_4_[0x15]; + mainthread[394] = mainthread._372_4_[0xe]; + mainthread[395] = mainthread._372_4_[0xd]; + mainthread[396] = mainthread._372_4_[0xc]; + mainthread[397] = mainthread._372_4_[0xb]; + mainthread[398] = mainthread._372_4_[10]; + mainthread[399] = mainthread._372_4_[9]; + mainthread[400] = mainthread._372_4_[8]; + mainthread[401] = mainthread._372_4_[7]; + mainthread[402] = mainthread._372_4_[6]; + mainthread[403] = mainthread._372_4_[5]; + mainthread[404] = mainthread._372_4_[4]; + mainthread[405] = mainthread._372_4_[3]; + mainthread[406] = mainthread._372_4_[2]; + mainthread[407] = mainthread._372_4_[1]; + mainthread[408] = *mainthread._372_4_; + mainthread[409] = mainthread._372_4_[0x14]; + mainthread[411] = mainthread[410]; + mainthread._414_2_ = (ushort)mainthread._372_4_[0x12] * 0x100 + (ushort)mainthread._372_4_[0x11] + ; + mainthread._416_2_ = (ushort)mainthread._372_4_[0x10] * 0x100 + (ushort)mainthread._372_4_[0xf]; + mainthread._418_2_ = uVar7 + 2; + mainthread._420_2_ = + CONCAT11(*(undefined *)(mainthread._376_4_ + uVar7 + 1), + *(undefined *)(uVar7 + mainthread._376_4_)); + return; } @@ -144402,10 +143591,10 @@ void init_spectrum_game(byte param_1) void run_spectrum_game(void) { - spectrum_p1controller_to_kempston(); - spectrum_hw_emulation(); - proc_7F0D2A84(mainthread._376_4_ + 0x4000,mainthread._384_4_); - return; + spectrum_p1controller_to_kempston(); + spectrum_hw_emulation(); + proc_7F0D2A84(mainthread._376_4_ + 0x4000,mainthread._384_4_); + return; } @@ -144413,75 +143602,77 @@ void run_spectrum_game(void) undefined4 * spectrum_draw_screen(undefined4 *param_1) { - int iVar1; - int iVar2; - int iVar3; - int iVar4; - int iVar5; - int iStack100; - - *param_1 = 0xe7000000; - param_1[1] = 0; - param_1[3] = 0x8004ed0c; - param_1[2] = 0xfd100000; - param_1[4] = 0xf5000300; - param_1[5] = 0x7000000; - param_1[6] = 0xe6000000; - param_1[7] = 0; - param_1[8] = 0xf0000000; - param_1[9] = 0x703c000; - param_1[10] = 0xba001301; - param_1[0xb] = 0; - param_1[0xd] = 0xf0a4000; - param_1[0xc] = 0xb900031d; - param_1[0xe] = 0xfcffffff; - param_1[0xf] = 0xfffcf87c; - param_1[0x10] = 0xba000c02; - param_1[0x11] = 0; - param_1[0x13] = 0xffffffff; - param_1[0x12] = 0xbb000001; - param_1 = param_1 + 0x14; - iStack100 = 0; - iVar1 = 0; - do { - iVar3 = iVar1 + 1; - iVar5 = iStack100 << 0xb; - iVar4 = 0; + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iStack100; + + *param_1 = 0xe7000000; + param_1[1] = 0; + param_1[3] = 0x8004ed0c; + param_1[2] = 0xfd100000; + param_1[4] = 0xf5000300; + param_1[5] = 0x7000000; + param_1[6] = 0xe6000000; + param_1[7] = 0; + param_1[8] = 0xf0000000; + param_1[9] = 0x703c000; + param_1[10] = 0xba001301; + param_1[0xb] = 0; + param_1[0xd] = 0xf0a4000; + param_1[0xc] = 0xb900031d; + param_1[0xe] = 0xfcffffff; + param_1[0xf] = 0xfffcf87c; + param_1[0x10] = 0xba000c02; + param_1[0x11] = 0; + param_1[0x13] = 0xffffffff; + param_1[0x12] = 0xbb000001; + param_1 = param_1 + 0x14; + iStack100 = 0; + iVar1 = 0; do { - *param_1 = 0xe7000000; - param_1[1] = 0; - param_1[2] = 0xfd100000; - param_1[3] = iVar5 + mainthread._384_4_; - param_1[5] = 0x7000000; - param_1[4] = 0xf5100000; - param_1[7] = 0; - param_1[6] = 0xe6000000; - param_1[9] = 0x73ff200; - param_1[8] = 0xf3000000; - param_1[0xb] = 0; - param_1[10] = 0xe7000000; - param_1[0xc] = 0xba000e02; - param_1[0xd] = 0x8000; - param_1[0xf] = 0x18060; - iVar2 = iVar4 + 1; - param_1[0xe] = 0xf5400800; - param_1[0x10] = 0xf2000000; - param_1[0x11] = 0x7e07e0; - param_1[0x12] = - (iVar2 * 0x40 + 0x20U & 0x3ff) << 0xe | 0xe4000000 | (iVar3 * 0x40 + 0x18) * 4 & 0xfffU; - param_1[0x13] = (iVar4 * 0x40 + 0x20U & 0x3ff) << 0xe | (iVar1 * 0x40 + 0x18) * 4 & 0xfffU; - param_1[0x14] = 0xb4000000; - param_1[0x15] = 0; - iVar5 += 0x800; - param_1[0x16] = 0xb3000000; - param_1[0x17] = 0x4000400; - param_1 = param_1 + 0x18; - iVar4 = iVar2; - } while (iVar2 != 4); - iStack100 += 4; - iVar1 = iVar3; - } while (iVar3 != 3); - return param_1; + iVar3 = iVar1 + 1; + iVar5 = iStack100 << 0xb; + iVar4 = 0; + do { + *param_1 = 0xe7000000; + param_1[1] = 0; + param_1[2] = 0xfd100000; + param_1[3] = iVar5 + mainthread._384_4_; + param_1[5] = 0x7000000; + param_1[4] = 0xf5100000; + param_1[7] = 0; + param_1[6] = 0xe6000000; + param_1[9] = 0x73ff200; + param_1[8] = 0xf3000000; + param_1[0xb] = 0; + param_1[10] = 0xe7000000; + param_1[0xc] = 0xba000e02; + param_1[0xd] = 0x8000; + param_1[0xf] = 0x18060; + iVar2 = iVar4 + 1; + param_1[0xe] = 0xf5400800; + param_1[0x10] = 0xf2000000; + param_1[0x11] = 0x7e07e0; + param_1[0x12] = + (iVar2 * 0x40 + 0x20U & 0x3ff) << 0xe | 0xe4000000 | + (iVar3 * 0x40 + 0x18) * 4 & 0xfffU; + param_1[0x13] = + (iVar4 * 0x40 + 0x20U & 0x3ff) << 0xe | (iVar1 * 0x40 + 0x18) * 4 & 0xfffU; + param_1[0x14] = 0xb4000000; + param_1[0x15] = 0; + iVar5 += 0x800; + param_1[0x16] = 0xb3000000; + param_1[0x17] = 0x4000400; + param_1 = param_1 + 0x18; + iVar4 = iVar2; + } while (iVar2 != 4); + iStack100 += 4; + iVar1 = iVar3; + } while (iVar3 != 3); + return param_1; } @@ -144489,37 +143680,37 @@ undefined4 * spectrum_draw_screen(undefined4 *param_1) ulonglong spectrum_input_handling(undefined8 param_1,uint param_2,char param_3) { - int iVar1; - ulonglong uVar2; - uint uVar3; - - param_2 &= 0xff; - if (param_3 == -2) { - uVar2 = 0xff; - iVar1 = 0; - do { - if ((param_2 & 1) == 0) { - uVar2 &= (ulonglong)(byte)(&byte_8004EC34)[iVar1]; - } - if ((param_2 >> 1 & 1) == 0) { - uVar2 &= (ulonglong)(byte)(&DAT_8004ec35)[iVar1]; - } - uVar3 = param_2 >> 3; - if ((param_2 >> 2 & 1) == 0) { - uVar2 &= (ulonglong)(byte)(&DAT_8004ec36)[iVar1]; - } - param_2 >>= 4; - if ((uVar3 & 1) == 0) { - uVar2 &= (ulonglong)(byte)(&DAT_8004ec37)[iVar1]; - } - iVar1 += 4; - } while (iVar1 != 8); - return uVar2; - } - if (param_3 == '\x1f') { - return (ulonglong)byte_8004EC40; - } - return 0xff; + int iVar1; + ulonglong uVar2; + uint uVar3; + + param_2 &= 0xff; + if (param_3 == -2) { + uVar2 = 0xff; + iVar1 = 0; + do { + if ((param_2 & 1) == 0) { + uVar2 &= (byte)(&byte_8004EC34)[iVar1]; + } + if ((param_2 >> 1 & 1) == 0) { + uVar2 &= (byte)(&DAT_8004ec35)[iVar1]; + } + uVar3 = param_2 >> 3; + if ((param_2 >> 2 & 1) == 0) { + uVar2 &= (byte)(&DAT_8004ec36)[iVar1]; + } + param_2 >>= 4; + if ((uVar3 & 1) == 0) { + uVar2 &= (byte)(&DAT_8004ec37)[iVar1]; + } + iVar1 += 4; + } while (iVar1 != 8); + return uVar2; + } + if (param_3 == '\x1f') { + return (ulonglong)byte_8004EC40; + } + return 0xff; } @@ -144527,7 +143718,7 @@ ulonglong spectrum_input_handling(undefined8 param_1,uint param_2,char param_3) void dummy7F0D37D4(void) { - return; + return; } @@ -144535,13 +143726,13 @@ void dummy7F0D37D4(void) undefined8 proc_7F0D37DC(undefined8 param_1,undefined8 param_2,char param_3,byte param_4) { - if (param_3 == -2) { - if ((param_4 & 7) != dword_8004ED54._0_1_) { - dword_8004ED54._0_1_ = param_4 & 7; + if (param_3 == -2) { + if ((param_4 & 7) != dword_8004ED54._0_1_) { + dword_8004ED54._0_1_ = param_4 & 7; + } + return 0; } return 0; - } - return 0; } @@ -144552,132 +143743,139 @@ undefined8 proc_7F0D37DC(undefined8 param_1,undefined8 param_2,char param_3,byte void spectrum_hw_emulation(void) { - ushort uVar1; - undefined uVar2; - uint uVar3; - char cStack43; - ushort uStack30; - ushort uStack24; - undefined uStack20; - char cStack19; - - cStack19 = mainthread[410]; - uStack20 = mainthread[411]; - uStack30 = mainthread._418_2_; - uStack24 = mainthread._420_2_; - if ((true) || (cStack43 == '\0')) { - do { - cStack43 = '\x01'; - uVar3 = (uint)uStack24; - uStack24 += 1; - if (true) { + ushort uVar1; + undefined uVar2; + uint uVar3; + char cStack43; + ushort uStack30; + ushort uStack24; + undefined uStack20; + char cStack19; + + cStack19 = mainthread[410]; + uStack20 = mainthread[411]; + uStack30 = mainthread._418_2_; + uStack24 = mainthread._420_2_; + if ((true) || (cStack43 == '\0')) { + do { + cStack43 = '\x01'; + uVar3 = (uint)uStack24; + uStack24 += 1; + if (true) { // WARNING: Could not recover jumptable at 0x7f0d3a34. Too many branches // WARNING: Treating indirect jump as call - (*(code *)(&jpt_70107964)[(uint)*(byte *)(uVar3 + mainthread._376_4_)])(); - return; - } - } while ((true) || (false)); - } - uVar1 = uStack24; - if ((false) && - ((uVar1 = uStack24, cStack43 != '\0' && (uVar1 = uStack24, mainthread[410] != '\0')))) { - uVar1 = uStack24 + 1; - if (*(char *)((uint)uStack24 + mainthread._376_4_) != 'v') { - uVar1 = uStack24; + (*(code *)(&jpt_70107964)[*(byte *)(uVar3 + mainthread._376_4_)])(); + return; + } + } while ((true) || (false)); + } + uVar1 = uStack24; + if ((false) && ((cStack43 != '\0' && (mainthread[410] != '\0')))) { + uVar1 = uStack24 + 1; + if (*(char *)((uint)uStack24 + mainthread._376_4_) != 'v') { + uVar1 = uStack24; + } + uStack24 = uVar1; + uStack20 = 0; + cStack19 = '\0'; + uVar2 = (undefined)uStack24; + if (((mainthread[412] == '\0') || (mainthread[412] == '\x01')) || + (mainthread[412] == '\x02')) { + uStack30 = mainthread._418_2_ - 2; + if (uStack30 < 0x5b00) { + if (uStack30 < 0x5800) { + if (0x3fff < uStack30) { + *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; + *(undefined *) + (mainthread._380_4_ + + ((int)((uint)uStack30 & 0x1800) >> 3 | (uint)uStack30 & 0xff)) = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; + *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x5800) = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; + } + if ((uint)uStack30 + 1 < 0x5b00) { + if ((uint)uStack30 + 1 < 0x5800) { + if (0x3fff < (uint)uStack30 + 1) { + *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = + (char)((uint)uStack24 >> 8); + *(undefined *) + (mainthread._380_4_ + + ((int)((uint)uStack30 + 1 & 0x1800) >> 3 | (uint)uStack30 + 1 & 0xff)) = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = + (char)((uint)uStack24 >> 8); + *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x57ff) = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = + (char)((uint)uStack24 >> 8); + } + uStack24 = 0x38; + uVar1 = uStack24; + } + else { + uVar1 = uStack24; + if (mainthread[412] == '\x03') { + uVar3 = (uint)mainthread[408] << 8 | 0xff; + uStack30 = mainthread._418_2_ - 2; + uVar1 = CONCAT11(*(undefined *)(mainthread._376_4_ + uVar3 + 1), + *(undefined *)(uVar3 + mainthread._376_4_)); + if (uStack30 < 0x5b00) { + if (uStack30 < 0x5800) { + if (0x3fff < uStack30) { + *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; + *(undefined *) + (mainthread._380_4_ + + ((int)((uint)uStack30 & 0x1800) >> 3 | (uint)uStack30 & 0xff)) = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; + *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x5800) = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; + } + if ((uint)uStack30 + 1 < 0x5b00) { + if ((uint)uStack30 + 1 < 0x5800) { + if (0x3fff < (uint)uStack30 + 1) { + *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = + (char)((uint)uStack24 >> 8); + *(undefined *) + (mainthread._380_4_ + + ((int)((uint)uStack30 + 1 & 0x1800) >> 3 | (uint)uStack30 + 1 & 0xff)) + = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = + (char)((uint)uStack24 >> 8); + *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x57ff) = 1; + } + } + else { + *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = + (char)((uint)uStack24 >> 8); + } + } + } } uStack24 = uVar1; - uStack20 = 0; - cStack19 = '\0'; - uVar2 = (undefined)uStack24; - if (((mainthread[412] == '\0') || (mainthread[412] == '\x01')) || (mainthread[412] == '\x02')) { - uStack30 = mainthread._418_2_ - 2; - if (uStack30 < 0x5b00) { - if (uStack30 < 0x5800) { - if (0x3fff < uStack30) { - *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; - *(undefined *) - (mainthread._380_4_ + ((int)((uint)uStack30 & 0x1800) >> 3 | (uint)uStack30 & 0xff)) = - 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; - *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x5800) = 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; - } - if ((uint)uStack30 + 1 < 0x5b00) { - if ((uint)uStack30 + 1 < 0x5800) { - if (0x3fff < (uint)uStack30 + 1) { - *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = (char)((uint)uStack24 >> 8); - *(undefined *) - (mainthread._380_4_ + - ((int)((uint)uStack30 + 1 & 0x1800) >> 3 | (uint)uStack30 + 1 & 0xff)) = 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = (char)((uint)uStack24 >> 8); - *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x57ff) = 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = (char)((uint)uStack24 >> 8); - } - uStack24 = 0x38; - uVar1 = uStack24; - } - else { - uVar1 = uStack24; - if (mainthread[412] == '\x03') { - uVar3 = (uint)mainthread[408] << 8 | 0xff; - uStack30 = mainthread._418_2_ - 2; - uVar1 = CONCAT11(*(undefined *)(mainthread._376_4_ + uVar3 + 1), - *(undefined *)(uVar3 + mainthread._376_4_)); - if (uStack30 < 0x5b00) { - if (uStack30 < 0x5800) { - if (0x3fff < uStack30) { - *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; - *(undefined *) - (mainthread._380_4_ + ((int)((uint)uStack30 & 0x1800) >> 3 | (uint)uStack30 & 0xff)) - = 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; - *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x5800) = 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30) = uVar2; - } - if ((uint)uStack30 + 1 < 0x5b00) { - if ((uint)uStack30 + 1 < 0x5800) { - if (0x3fff < (uint)uStack30 + 1) { - *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = (char)((uint)uStack24 >> 8); - *(undefined *) - (mainthread._380_4_ + - ((int)((uint)uStack30 + 1 & 0x1800) >> 3 | (uint)uStack30 + 1 & 0xff)) = 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = (char)((uint)uStack24 >> 8); - *(undefined *)(mainthread._380_4_ + (uint)uStack30 + -0x57ff) = 1; - } - } - else { - *(undefined *)(mainthread._376_4_ + (uint)uStack30 + 1) = (char)((uint)uStack24 >> 8); - } - } - } - } - uStack24 = uVar1; - mainthread[410] = cStack19; - mainthread[411] = uStack20; - mainthread._418_2_ = uStack30; - mainthread._420_2_ = uStack24; - return; + mainthread[410] = cStack19; + mainthread[411] = uStack20; + mainthread._418_2_ = uStack30; + mainthread._420_2_ = uStack24; + return; } @@ -144687,19 +143885,19 @@ void spectrum_hw_emulation(void) void entry(void) { - OSThread *pOVar1; - undefined *puVar2; - - pOVar1 = &rmonThread; - puVar2 = &_BSS_SIZE; - do { - puVar2 = puVar2 + -8; - pOVar1->next = NULL; - pOVar1->priority = 0; - pOVar1 = (OSThread *)&pOVar1->queue; - } while (puVar2 != NULL); - boot(); - return; + OSThread *pOVar1; + undefined *puVar2; + + pOVar1 = &rmonThread; + puVar2 = &_BSS_SIZE; + do { + puVar2 = puVar2 + -8; + pOVar1->next = NULL; + pOVar1->priority = 0; + pOVar1 = (OSThread *)&pOVar1->queue; + } while (puVar2 != NULL); + boot(); + return; } @@ -144707,14 +143905,14 @@ void entry(void) void boot(void) { - setCopReg(0,Index,1,0); - setCopReg(0,EntryLo0,0x1f,0); - setCopReg(0,EntryLo1,1,0); - setCopReg(0,EntryHi,0x70000000,0); - setCopReg(0,PageMask,0x7fe000,0); - TLB_write_indexed_entry(Index,EntryHi,EntryLo0,EntryLo1,PageMask); - init((EVP_PKEY_CTX *)0x70000000); - return; + setCopReg(0,Index,1,0); + setCopReg(0,EntryLo0,0x1f,0); + setCopReg(0,EntryLo1,1,0); + setCopReg(0,EntryHi,0x70000000,0); + setCopReg(0,PageMask,0x7fe000,0); + TLB_write_indexed_entry(Index,EntryHi,EntryLo0,EntryLo1,PageMask); + init((EVP_PKEY_CTX *)0x70000000); + return; } diff --git a/notes/ghidra/ge007.u.old.elf.h b/notes/ghidra/ge007.u.old.elf.h index 5c4a675..c952afc 100644 --- a/notes/ghidra/ge007.u.old.elf.h +++ b/notes/ghidra/ge007.u.old.elf.h @@ -110,59 +110,10 @@ struct save_file { u8 field_0x5d[3]; }; -typedef struct player_gait_position_entry player_gait_position_entry, *Pplayer_gait_position_entry; +typedef struct hit_header hit_header, *Phit_header; typedef ushort u16; -typedef struct player_gait_header player_gait_header, *Pplayer_gait_header; - -typedef struct player_gait_object_entry player_gait_object_entry, *Pplayer_gait_object_entry; - -typedef struct player_gait_pos_header player_gait_pos_header, *Pplayer_gait_pos_header; - -struct player_gait_object_entry { - u32 field_0x0; - struct player_gait_header * ptr_header; - u32 field_0x8; - u32 field_0xc; -}; - -struct player_gait_position_entry { - float flt_1; - float flt_2; - float flt_3; - u16 field_0xc; - u16 field_0xe; - u16 field_0x10; - u16 field_0x12; - struct player_gait_header * ptr_header; - u32 field_0x18; -}; - -struct player_gait_pos_header { - u8 field_0x0; - u8 type; - u16 field_0x2; - struct player_gait_position_entry * entry; - struct player_gait_header * previous; - void * field_0xc; - void * field_0x10; - struct player_gait_header * next; -}; - -struct player_gait_header { - u8 field_0x0; - u8 type; - u16 field_0x2; - struct player_gait_object_entry * entry; - struct player_gait_header * previous; - void * field_0xc; - void * field_0x10; - struct player_gait_pos_header * next; -}; - -typedef struct hit_header hit_header, *Phit_header; - struct hit_header { u16 * pImageIDArray; u8 * ptrarray2; @@ -216,13 +167,24 @@ typedef enum Elf32_GPRMask_MIPS { gpr_zero=1 } Elf32_GPRMask_MIPS; -typedef enum weaponid { - CHOP=1, - GOLDGUN=19, - HKNIFE=2, - TKNIFE=3, - UNARMED=0 -} weaponid; +typedef enum HAND { + HAND_LEFT=1, + HAND_RIGHT=0 +} HAND; + +typedef struct sImageTableEntry sImageTableEntry, *PsImageTableEntry; + +struct sImageTableEntry { + u32 index; + u8 width; + u8 height; + u8 level; + u8 format; + u8 depth; + u8 flagsS; + u8 flagsT; + u8 pad; +}; typedef struct prop_pos_data prop_pos_data, *Pprop_pos_data; @@ -232,1077 +194,50 @@ struct prop_pos_data { u16 z; }; -typedef struct bg_room_data bg_room_data, *Pbg_room_data; - -typedef float f32; - -struct bg_room_data { - f32 xpos; - f32 ypos; - f32 zpos; - void * pPointTableBin; - void * pPriMappingBin; - void * pSecMappingBin; -}; - -typedef struct bg_portal_entry bg_portal_entry, *Pbg_portal_entry; - -typedef struct xyzpoint xyzpoint, *Pxyzpoint; - -struct xyzpoint { - float x; - float y; - float z; -}; - -struct bg_portal_entry { - u8 numPoints; - u8 padding[3]; - struct xyzpoint point; -}; - -typedef ulong ulg; - -typedef enum SCHEDTASKS { - M_AUDTASK=2, - M_GFXTASK=1, - M_VIDTASK=3 -} SCHEDTASKS; - -typedef struct memorybank memorybank, *Pmemorybank; - -struct memorybank { - void * bankstart; - void * nextentry; - void * bankend; - void * data2; -}; - -typedef struct bg_portal_data_entry bg_portal_data_entry, *Pbg_portal_data_entry; - -struct bg_portal_data_entry { - struct bg_portal_entry * offset_portal; - u8 connectedRoom1; - u8 connectedRoom2; - u16 controlbytes; -}; - -typedef enum MUSIC_TRACKS { - M_ARCHIVES=11, - M_ARCHIVESX=37, - M_AZTEC=25, - M_AZTECX=46, - M_BUNKER1=15, - M_BUNKER1X=41, - M_BUNKER2=16, - M_BUNKER2X=42, - M_CITADEL=6, - M_CONTROL=8, - M_CONTROLX=33, - M_CRADLE=19, - M_CRADLEX=48, - M_CUBA=49, - M_DAM=9, - M_DAMX=35, - M_DEATHSOLO=27, - M_DEPOT=4, - M_DEPOTX=32, - M_EGYPTIAN=22, - M_EGYPTIANX=39, - M_EGYPTX=47, - M_ELEVATOR_CONTROL=18, - M_ELEVATOR_WC=21, - M_END_SOMETHING=62, - M_FACILITY=7, - M_FACILITYX=31, - M_FOLDERS=23, - M_FRIGATE=10, - M_FRIGATEX=36, - M_GUITARGLISS=54, - M_INTRO=2, - M_INTROSWOOSH=44, - M_JUNGLE=55, - M_JUNGLEX=43, - M_MPDEATH=58, - M_MPTHEME=5, - M_MPTHEME2=13, - M_MPTHEME3=52, - M_NONE=0, - M_RUNWAY=50, - M_RUNWAYPLANE=51, - M_RUNWAYX=56, - M_SHORT_SOLO_DEATH=1, - M_SILO=12, - M_SILOX=38, - M_STATUE=17, - M_STATUEPART=61, - M_STATUEX=45, - M_STREETS=14, - M_STREETSX=40, - M_SURFACE1=57, - M_SURFACE2=28, - M_SURFACE2END=60, - M_SURFACE2X=59, - M_TRAIN=3, - M_TRAINX=29, - M_UNK=20, - M_UNK2=30, - M_WATCH=24, - M_WATERCAVERNS=26, - M_WATERCAVERNSX=34, - M_WIND=53 -} MUSIC_TRACKS; - -typedef struct LnameX_table_entry LnameX_table_entry, *PLnameX_table_entry; - -struct LnameX_table_entry { - string * extext; - string * jtext; -}; - -typedef struct firing_anim_struct firing_anim_struct, *Pfiring_anim_struct; - -struct firing_anim_struct { - pointer pointer; - dword anim; - f32 x; - f32 y; - f32 z; -}; - -typedef struct fog_element fog_element, *Pfog_element; - -struct fog_element { - u32 stageID; - f32 blendmultiplier; - f32 farfog; - f32 nearfog; - f32 maxvisrange; - f32 maxobfuscationrange; - f32 minvisrange; - u32 intensity; - u32 dif_in_light; - u32 far_ambiantlight; - u8 red; - u8 green; - u8 blue; - u8 clouds; - f32 cloudrepeat; - u16 skyimageid; - u16 reserved; - f32 cloudred; - f32 cloudgreen; - f32 cloudblue; - u8 iswater; - u8 padding[3]; - f32 waterrepeat; - u16 waterimageid; - u16 reserved2; - f32 waterred; - f32 watergreen; - f32 waterblue; - f32 waterconcavity; -}; - -typedef struct fog_element2 fog_element2, *Pfog_element2; - -struct fog_element2 { - u32 stageID; - u8 red; - u8 green; - u8 blue; - u8 clouds; - f32 cloudrepeat; - u16 skyimageid; - u16 reserved; - f32 cloudred; - f32 cloudgreen; - f32 cloudblue; - u8 iswater; - u8 padding[3]; - f32 waterrepeat; - u16 waterimageid; - u16 reserved2; - f32 waterred; - f32 watergreen; - f32 waterblue; - f32 waterconcavity; -}; - -typedef ushort ush; - -typedef enum STAGENUM { - SP_STAGE_ARCHIVES=10, - SP_STAGE_AZTEK=18, - SP_STAGE_BUNKER1=4, - SP_STAGE_BUNKER2=8, - SP_STAGE_CAVERNS=16, - SP_STAGE_CONTROL=15, - SP_STAGE_CRADLE=17, - SP_STAGE_DAM=0, - SP_STAGE_DEPOT=12, - SP_STAGE_EGYPT=19, - SP_STAGE_FACILITY=1, - SP_STAGE_FRIGATE=6, - SP_STAGE_JUNGLE=14, - SP_STAGE_MAX=20, - SP_STAGE_RUNWAY=2, - SP_STAGE_SILO=5, - SP_STAGE_STATUE=9, - SP_STAGE_STREETS=11, - SP_STAGE_SURFACE1=3, - SP_STAGE_SURFACE2=7, - SP_STAGE_TRAIN=13 -} STAGENUM; - -typedef struct sfxdata sfxdata, *Psfxdata; +typedef struct s_mem_alloc_entry s_mem_alloc_entry, *Ps_mem_alloc_entry; typedef long s32; -struct sfxdata { - s32 target_volume; - s32 audio_range_time; - s32 initial_volume; - void * preset_emitter; - void * object_emitter; +struct s_mem_alloc_entry { + s32 addr; + s32 size; }; -typedef struct ramromfilestructure ramromfilestructure, *Pramromfilestructure; +typedef struct bondstruct_unk_80036634 bondstruct_unk_80036634, *Pbondstruct_unk_80036634; -typedef double f64; +typedef float f32; -typedef enum LEVELID { - LEVELID_ARCHIVES=24, - LEVELID_AZTEC=28, - LEVELID_BASEMENT=45, - LEVELID_BUNKER1=9, - LEVELID_BUNKER2=27, - LEVELID_CAVERNS=39, - LEVELID_CAVES=50, - LEVELID_CITADEL=40, - LEVELID_COMPLEX=31, - LEVELID_CONTROL=23, - LEVELID_CRADLE=41, - LEVELID_CUBA=54, - LEVELID_DAM=33, - LEVELID_DEPOT=30, - LEVELID_EAR=51, - LEVELID_EGYPT=32, - LEVELID_ELD=44, - LEVELID_FACILITY=34, - LEVELID_FRIGATE=26, - LEVELID_JUNGLE=37, - LEVELID_LEE=52, - LEVELID_LIBRARY=48, - LEVELID_LIP=53, - LEVELID_LUE=47, - LEVELID_MAX=57, - LEVELID_NONE=-1, - LEVELID_PAM=56, - LEVELID_RIT=49, - LEVELID_RUNWAY=35, - LEVELID_SHO=42, - LEVELID_SILO=20, - LEVELID_STACK=46, - LEVELID_STATUE=22, - LEVELID_STREETS=29, - LEVELID_SURFACE=36, - LEVELID_SURFACE2=43, - LEVELID_TEMPLE=38, - LEVELID_TITLE=90, - LEVELID_TRAIN=25, - LEVELID_WAX=55 -} LEVELID; - -typedef enum DIFFICULTY { - DIFFICULTY_00=2, - DIFFICULTY_007=3, - DIFFICULTY_AGENT=0, - DIFFICULTY_MULTI=-1, - DIFFICULTY_SECRET=1 -} DIFFICULTY; - -typedef enum GAMEMODE { - GAMEMODE_CHEATS=2, - GAMEMODE_INTRO=-1, - GAMEMODE_MULTI=1, - GAMEMODE_SOLO=0 -} GAMEMODE; - -struct ramromfilestructure { - f64 randomseed; - f64 randomizer; - enum LEVELID stagenum; - enum DIFFICULTY difficulty; - u32 size_cmds; - struct save_file savefile; - f32 totaltime_ms; - u32 filesize; - enum GAMEMODE mode; - u32 slotnum; - u32 numplayers; - u32 scenario; - u32 mpstage_sel; - u32 gamelength; - u32 mp_weapon_set; - u32 p1_mp_char; - u32 p2_mp_char; - u32 p3_mp_char; - u32 p4_mp_char; - u32 p1_handi; - u32 p2_handi; - u32 p3_handi; - u32 p4_handi; - u32 p1_contstyle; - u32 p2_contstyle; - u32 p3_contstyle; - u32 p4_contstyle; - u32 aim_option; - u32 p1_flags; - u32 p2_flags; - u32 p3_flags; - u32 p4_flags; - u32 controlerstatepackets; +struct bondstruct_unk_80036634 { + u32 u32_0x0; + u32 u32_0x4; + u32 u32_0x8; + f32 f32_0xC; + u32 u32_0x10; + u32 u32_0x14; + u32 u32_0x18; + f32 f32_0x1c; + u32 u32_0x20; + u32 u32_0x24; + u32 u32_0x28; }; -typedef struct bg_data_header bg_data_header, *Pbg_data_header; - -struct bg_data_header { - u32 RESERVED; - struct bg_room_data * pRoomDataTable; - struct bg_portal_data_entry * pPortalDataTable; - void * pGlobalVisCmds; -}; - -typedef enum PROPTYPE { - New_Name=0 -} PROPTYPE; - -typedef struct structunknown structunknown, *Pstructunknown; - -struct structunknown { - float field_0x0; - float field_0x4; - float field_0x8; -}; - -typedef struct sfx_register_struct sfx_register_struct, *Psfx_register_struct; - -struct sfx_register_struct { - undefined4 field_0x0; - undefined4 field_0x4; - undefined4 field_0x8; - undefined4 field_0xc; - undefined4 field_0x10; - undefined4 field_0x14; -}; - -typedef enum AMMOTYPES { - AMMO_9MM=1, - AMMO_9MM_2=2, - AMMO_BOMBCASE=16, - AMMO_BUG=20, - AMMO_CAMERA=27, - AMMO_DARTS=14, - AMMO_DYNAMITE=19, - AMMO_EXPLOSIVEPEN=15, - AMMO_FLARE=17, - AMMO_GEKEY=22, - AMMO_GGUN=13, - AMMO_GRENADE=5, - AMMO_GRENADEROUND=11, - AMMO_KNIFE=10, - AMMO_MAGNUM=12, - AMMO_MICRO_CAMERA=21, - AMMO_PITON=18, - AMMO_PLASTIQUE=23, - AMMO_PROXMINE=8, - AMMO_REMOTEMINE=7, - AMMO_RIFLE=3, - AMMO_ROCKETS=6, - AMMO_SHOTGUN=4, - AMMO_TANK=28, - AMMO_TIMEDMINE=9, - AMMO_TOKEN=29, - AMMO_UNK=26, - AMMO_WATCH_LASER=24, - AMMO_WATCH_MAGNET=25 -} AMMOTYPES; - -typedef struct LnameX_name_entry LnameX_name_entry, *PLnameX_name_entry; - -struct LnameX_name_entry { - char * en_file; - char * jp_file; -}; - -typedef enum CAMERAMODE { - FADESWIRL_CAM=2, - FP_CAM=4, - FP_NOINPUT_CAM=8, - INTRO_CAM=1, - MP_CAM=9, - POSEND_CAM=7, - SWIRL_CAM=3, - UNK10_CAM=10, - UNK5_CAM=5, - UNK6_CAM=6 -} CAMERAMODE; - -typedef enum COLORMODE { - 16BIT=1, - 32BIT=0 -} COLORMODE; - -typedef uchar uch; - -typedef struct playerfavoriteweapon playerfavoriteweapon, *Pplayerfavoriteweapon; - -struct playerfavoriteweapon { - u32 right; - u32 left; -}; - -typedef enum enumOSEventMsg { - PRE_NMI_MSG=669, - RDP_DONE_MSG=668, - RSP_DONE_MSG=667, - VIDEO_MSG=666 -} enumOSEventMsg; - -#define OS_TASK_SIZE 64 - -#define OS_TASK_OFF_UBOOT_SZ 12 - -#define OS_TASK_OFF_YIELD_SZ 60 - -#define OS_TASK_OFF_OUTBUFF 40 - -#define OS_TASK_OFF_DATA_SZ 52 - -#define OS_TASK_OFF_YIELD 56 - -#define OS_TASK_OFF_UCODE 16 - -#define OS_TASK_OFF_OUTBUFF_SZ 44 - -#define OS_TASK_OFF_UDATA 24 - -#define OS_TASK_OFF_DATA 48 - -#define OS_TASK_OFF_STACK_SZ 36 - -#define OS_TASK_OFF_UDATA_SZ 28 - -#define OS_TASK_OFF_UCODE_SZ 20 - -#define OS_TASK_OFF_FLAGS 4 - -#define OS_TASK_OFF_TYPE 0 - -#define OS_TASK_OFF_STACK 32 - -#define OS_TASK_OFF_UBOOT 8 - -#define __WORDSIZE 32 - -typedef uint _Sizet; - -#define _D0 0 - -#define _NULL 0 - -#define _DOFF 4 - -#define _DBIAS 1023 - -#define _LONG_DOUBLE 0 - -#define _DLONG 0 - -#define _LBIAS 1023 - -typedef struct rdbPacket rdbPacket, *PrdbPacket; - -typedef union anon__struct_183_bitfield_1 anon__struct_183_bitfield_1, *Panon__struct_183_bitfield_1; - -union anon__struct_183_bitfield_1 { - uint type:6; // : bits 0-5 - uint length:2; // : bits 6-7 -}; - -struct rdbPacket { - union anon__struct_183_bitfield_1 field_0x0; - char buf[3]; -}; - -#define RDB_TYPE_HtoG_KDEBUG 20 - -#define RDB_TYPE_GtoH_RAMROM 9 - -#define RDB_TYPE_GtoH_PRINT 1 - -#define RDB_BASE_REG 3221225472 - -#define RDB_TYPE_INVALID 0 - -#define RDB_WRITE_INTR_REG 3221225480 - -#define DEBUG_COMMAND_MEMORY 1 - -#define RDB_LOG_MAX_BLOCK_SIZE 32768 - -#define RDB_TYPE_HtoG_DATA 16 - -#define PROF_BLOCK_SIZE 2048 - -#define RDB_TYPE_GtoH_FAULT 2 - -#define DEBUG_STATE_RECEIVE 1 - -#define GIO_RDB_BASE_REG 3209166848 - -#define RDB_TYPE_GtoH_DEBUG_READY 11 - -#define RDB_DATA_MAX_BLOCK_SIZE 32768 - -#define RDB_TYPE_GtoH_KDEBUG 12 - -#define RDB_TYPE_GtoH_READY_FOR_DATA 5 - -#define RDB_TYPE_GtoH_DEBUG_DONE 10 - -#define RDB_TYPE_GtoH_DATA_CT 6 - -#define RDB_TYPE_HtoG_LOG_DONE 13 - -#define GIO_RDB_READ_INTR_REG 3209166860 - -#define RDB_BASE_VIRTUAL_ADDR 2147483648 - -#define DEBUG_STATE_INVALID 255 - -#define RDB_TYPE_GtoH_LOG_CT 3 - -#define RDB_PROF_FLUSH_SIG 2 - -#define DEBUG_STATE_NULL 0 - -#define RDB_READ_INTR_REG 3221225484 - -#define GIO_RDB_READ_INTR_BIT 1073741824 - -#define RDB_TYPE_HtoG_DEBUG 14 - -#define RDB_TYPE_GtoH_PROF_DATA 22 - -#define RDB_TYPE_GtoH_DATA 7 - -#define RDB_TYPE_GtoH_LOG 4 - -#define RDB_TYPE_HtoG_REQ_RAMROM 18 - -#define RDB_TYPE_HtoG_FREE_RAMROM 19 - -#define RDB_TYPE_HtoG_DEBUG_CT 15 - -#define DEBUG_COMMAND_NULL 0 - -#define RDB_PROF_ACK_SIG 1 - -#define GIO_RDB_DEBUG_MINOR 2 - -#define DEBUG_COMMAND_REGISTER 2 - -#define GIO_RDB_PRINT_MINOR 1 - -#define RDB_TYPE_HtoG_PROF_SIGNAL 21 - -#define DEBUG_COMMAND_INVALID 255 - -#define RDB_TYPE_HtoG_DATA_DONE 17 - -#define GIO_RDB_WRITE_INTR_BIT 2147483648 - -#define RDB_TYPE_GtoH_DEBUG 8 - -#define GIO_RDB_WRITE_INTR_REG 3209166856 - -typedef struct bitmap bitmap, *Pbitmap; - -typedef struct bitmap Bitmap; - -typedef short s16; - -struct bitmap { - s16 width; - s16 width_img; - s16 s; - s16 t; - void * buf; - s16 actualHeight; - s16 LUToffset; -}; - -typedef struct sprite sprite, *Psprite; - -typedef struct sprite Sprite; - -typedef union Gfx Gfx, *PGfx; - -typedef struct Gwords Gwords, *PGwords; - -typedef struct Gdma Gdma, *PGdma; - -typedef struct Gtri Gtri, *PGtri; - -typedef struct Gline3D Gline3D, *PGline3D; - -typedef struct Gpopmtx Gpopmtx, *PGpopmtx; - -typedef struct Gsegment Gsegment, *PGsegment; - -typedef struct GsetothermodeH GsetothermodeH, *PGsetothermodeH; - -typedef struct GsetothermodeL GsetothermodeL, *PGsetothermodeL; - -typedef struct Gtexture Gtexture, *PGtexture; - -typedef struct Gperspnorm Gperspnorm, *PGperspnorm; - -typedef struct Gsetimg Gsetimg, *PGsetimg; - -typedef struct Gsetcombine Gsetcombine, *PGsetcombine; - -typedef struct Gsetcolor Gsetcolor, *PGsetcolor; - -typedef struct Gfillrect Gfillrect, *PGfillrect; - -typedef struct Gsettile Gsettile, *PGsettile; - -typedef struct Gloadtile Gloadtile, *PGloadtile; - -typedef struct Gloadtile Gsettilesize; - -typedef struct Gloadtile Gloadtlut; - -typedef union anon__struct_57_bitfield_1 anon__struct_57_bitfield_1, *Panon__struct_57_bitfield_1; - -typedef union anon__struct_57_bitfield_2 anon__struct_57_bitfield_2, *Panon__struct_57_bitfield_2; - -typedef union anon__struct_58_bitfield_1 anon__struct_58_bitfield_1, *Panon__struct_58_bitfield_1; - -typedef struct Tri Tri, *PTri; - -typedef union anon__struct_64_bitfield_1 anon__struct_64_bitfield_1, *Panon__struct_64_bitfield_1; - -typedef union anon__struct_59_bitfield_1 anon__struct_59_bitfield_1, *Panon__struct_59_bitfield_1; - -typedef union anon__struct_59_bitfield_2 anon__struct_59_bitfield_2, *Panon__struct_59_bitfield_2; - -typedef union anon__struct_59_bitfield_3 anon__struct_59_bitfield_3, *Panon__struct_59_bitfield_3; - -typedef union anon__struct_60_bitfield_1 anon__struct_60_bitfield_1, *Panon__struct_60_bitfield_1; - -typedef union anon__struct_60_bitfield_2 anon__struct_60_bitfield_2, *Panon__struct_60_bitfield_2; - -typedef union anon__struct_62_bitfield_1 anon__struct_62_bitfield_1, *Panon__struct_62_bitfield_1; - -typedef union anon__struct_62_bitfield_2 anon__struct_62_bitfield_2, *Panon__struct_62_bitfield_2; - -typedef union anon__struct_61_bitfield_1 anon__struct_61_bitfield_1, *Panon__struct_61_bitfield_1; - -typedef union anon__struct_61_bitfield_2 anon__struct_61_bitfield_2, *Panon__struct_61_bitfield_2; - -typedef union anon__struct_65_bitfield_1 anon__struct_65_bitfield_1, *Panon__struct_65_bitfield_1; - -typedef union anon__struct_66_bitfield_1 anon__struct_66_bitfield_1, *Panon__struct_66_bitfield_1; - -typedef union anon__struct_66_bitfield_2 anon__struct_66_bitfield_2, *Panon__struct_66_bitfield_2; - -typedef union anon__struct_67_bitfield_1 anon__struct_67_bitfield_1, *Panon__struct_67_bitfield_1; - -typedef union anon__struct_67_bitfield_2 anon__struct_67_bitfield_2, *Panon__struct_67_bitfield_2; - -typedef union anon__struct_67_bitfield_3 anon__struct_67_bitfield_3, *Panon__struct_67_bitfield_3; - -typedef union anon__struct_68_bitfield_1 anon__struct_68_bitfield_1, *Panon__struct_68_bitfield_1; - -typedef union anon__struct_69_bitfield_1 anon__struct_69_bitfield_1, *Panon__struct_69_bitfield_1; - -typedef union anon__struct_69_bitfield_2 anon__struct_69_bitfield_2, *Panon__struct_69_bitfield_2; - -typedef union anon__struct_69_bitfield_3 anon__struct_69_bitfield_3, *Panon__struct_69_bitfield_3; - -typedef union anon__struct_70_bitfield_1 anon__struct_70_bitfield_1, *Panon__struct_70_bitfield_1; - -typedef union anon__struct_70_bitfield_2 anon__struct_70_bitfield_2, *Panon__struct_70_bitfield_2; - -typedef union anon__struct_70_bitfield_3 anon__struct_70_bitfield_3, *Panon__struct_70_bitfield_3; - -typedef union anon__struct_71_bitfield_1 anon__struct_71_bitfield_1, *Panon__struct_71_bitfield_1; - -typedef union anon__struct_71_bitfield_2 anon__struct_71_bitfield_2, *Panon__struct_71_bitfield_2; - -typedef union anon__struct_71_bitfield_3 anon__struct_71_bitfield_3, *Panon__struct_71_bitfield_3; - -typedef union anon__struct_71_bitfield_4 anon__struct_71_bitfield_4, *Panon__struct_71_bitfield_4; - -union anon__struct_68_bitfield_1 { - int cmd:8; // : bits 0-7 -}; - -union anon__struct_58_bitfield_1 { - int cmd:8; // : bits 0-7 - int pad:24; // : bits 8-31 -}; - -struct Gtexture { - uchar cmd; - uchar lodscale; - uchar tile; - uchar on; - ushort s; - ushort t; -}; - -union anon__struct_65_bitfield_1 { - int cmd:8; // : bits 0-7 - int pad1:24; // : bits 8-31 -}; - -union anon__struct_61_bitfield_2 { - uint data:32; // : bits 0-31 -}; - -union anon__struct_61_bitfield_1 { - int cmd:8; // : bits 0-7 - int pad0:8; // : bits 8-15 - int sft:8; // : bits 16-23 - int len:8; // : bits 24-31 -}; - -struct GsetothermodeL { - union anon__struct_61_bitfield_1 field_0x0; - union anon__struct_61_bitfield_2 field_0x4; -}; - -struct Tri { - uchar flag; - uchar v[3]; -}; - -union anon__struct_62_bitfield_2 { - uint data:32; // : bits 0-31 -}; - -union anon__struct_62_bitfield_1 { - int cmd:8; // : bits 0-7 - int pad0:8; // : bits 8-15 - int sft:8; // : bits 16-23 - int len:8; // : bits 24-31 -}; - -struct GsetothermodeH { - union anon__struct_62_bitfield_1 field_0x0; - union anon__struct_62_bitfield_2 field_0x4; -}; - -union anon__struct_59_bitfield_1 { - int cmd:8; // : bits 0-7 - int pad1:24; // : bits 8-31 -}; - -union anon__struct_59_bitfield_3 { - uchar param:8; // : bits 0-7 -}; - -union anon__struct_59_bitfield_2 { - int pad2:24; // : bits 0-23 -}; - -struct Gpopmtx { - union anon__struct_59_bitfield_1 field_0x0; - union anon__struct_59_bitfield_2 field_0x4; - union anon__struct_59_bitfield_3 field_0x8; -}; - -union anon__struct_60_bitfield_1 { - int cmd:8; // : bits 0-7 - int pad0:8; // : bits 8-15 - int mw_index:8; // : bits 16-23 - int number:8; // : bits 24-31 -}; - -union anon__struct_60_bitfield_2 { - int pad1:8; // : bits 0-7 - int base:24; // : bits 8-31 -}; - -struct Gsegment { - union anon__struct_60_bitfield_1 field_0x0; - union anon__struct_60_bitfield_2 field_0x4; -}; - -struct Gsetcolor { - union anon__struct_68_bitfield_1 field_0x0; - uchar pad; - uchar prim_min_level; - uchar prim_level; - ulong color; -}; - -struct Gtri { - union anon__struct_58_bitfield_1 field_0x0; - struct Tri tri; -}; - -union anon__struct_67_bitfield_2 { - uint muxs0:24; // : bits 0-23 -}; - -struct Gwords { - uint w0; - uint w1; -}; - -union anon__struct_67_bitfield_3 { - uint muxs1:32; // : bits 0-31 -}; - -union anon__struct_67_bitfield_1 { - int cmd:8; // : bits 0-7 -}; - -struct Gsetcombine { - union anon__struct_67_bitfield_1 field_0x0; - union anon__struct_67_bitfield_2 field_0x4; - union anon__struct_67_bitfield_3 field_0x8; -}; - -union anon__struct_69_bitfield_2 { - uint pad:8; // : bits 0-7 -}; - -union anon__struct_69_bitfield_3 { - int x1:10; // : bits 0-9 - int x1frac:2; // : bits 10-11 - int y1:10; // : bits 12-21 - int y1frac:2; // : bits 22-23 -}; - -union anon__struct_69_bitfield_1 { - int cmd:8; // : bits 0-7 - int x0:10; // : bits 8-17 - int x0frac:2; // : bits 18-19 - int y0:10; // : bits 20-29 - int y0frac:2; // : bits 30-31 -}; - -union anon__struct_70_bitfield_1 { - int cmd:8; // : bits 0-7 -}; - -union anon__struct_70_bitfield_2 { - uint fmt:3; // : bits 0-2 - uint siz:2; // : bits 3-4 - uint pad0:1; // : bits 5 - uint line:9; // : bits 6-14 - uint tmem:9; // : bits 15-23 - uint pad1:5; // : bits 24-28 - uint tile:3; // : bits 29-31 -}; - -union anon__struct_70_bitfield_3 { - uint palette:4; // : bits 0-3 - uint ct:1; // : bits 4 - uint mt:1; // : bits 5 - uint maskt:4; // : bits 6-9 - uint shiftt:4; // : bits 10-13 - uint cs:1; // : bits 14 - uint ms:1; // : bits 15 - uint masks:4; // : bits 16-19 - uint shifts:4; // : bits 20-23 -}; - -struct Gsettile { - union anon__struct_70_bitfield_1 field_0x0; - union anon__struct_70_bitfield_2 field_0x4; - union anon__struct_70_bitfield_3 field_0x8; -}; - -struct Gfillrect { - union anon__struct_69_bitfield_1 field_0x0; - union anon__struct_69_bitfield_2 field_0x4; - union anon__struct_69_bitfield_3 field_0x8; -}; - -union anon__struct_71_bitfield_1 { - int cmd:8; // : bits 0-7 -}; - -union anon__struct_71_bitfield_2 { - uint sl:12; // : bits 0-11 - uint tl:12; // : bits 12-23 -}; - -struct Gperspnorm { - union anon__struct_65_bitfield_1 field_0x0; - short pad2; - short scale; -}; - -union anon__struct_64_bitfield_1 { - int cmd:8; // : bits 0-7 - int pad:24; // : bits 8-31 -}; - -struct Gline3D { - union anon__struct_64_bitfield_1 field_0x0; - struct Tri line; -}; - -union anon__struct_71_bitfield_3 { - int pad:5; // : bits 0-4 -}; - -union anon__struct_71_bitfield_4 { - uint tile:3; // : bits 0-2 - uint sh:12; // : bits 3-14 - uint th:12; // : bits 15-26 -}; - -struct Gloadtile { - union anon__struct_71_bitfield_1 field_0x0; - union anon__struct_71_bitfield_2 field_0x4; - union anon__struct_71_bitfield_3 field_0x8; - union anon__struct_71_bitfield_4 field_0xc; -}; - -struct sprite { - s16 x; - s16 y; - s16 width; - s16 height; - f32 scalex; - f32 scaley; - s16 expx; - s16 expy; - u16 attr; - s16 zdepth; - u8 red; - u8 green; - u8 blue; - u8 alpha; - s16 startTLUT; - s16 nTLUT; - int * LUT; - s16 istart; - s16 istep; - s16 nbitmaps; - s16 ndisplist; - s16 bmheight; - s16 bmHreal; - u8 bmfmt; - u8 bmsiz; - Bitmap * bitmap; - union Gfx * rsp_dl; - union Gfx * rsp_dl_next; - s16 frac_s; - s16 frac_t; -}; - -union anon__struct_66_bitfield_2 { - uint fmt:3; // : bits 0-2 - uint siz:2; // : bits 3-4 - uint pad:7; // : bits 5-11 - uint wd:12; // : bits 12-23 -}; - -union anon__struct_66_bitfield_1 { - int cmd:8; // : bits 0-7 -}; - -struct Gsetimg { - union anon__struct_66_bitfield_1 field_0x0; - union anon__struct_66_bitfield_2 field_0x4; - uint dram; -}; - -union anon__struct_57_bitfield_1 { - int cmd:8; // : bits 0-7 -}; - -union anon__struct_57_bitfield_2 { - uint par:8; // : bits 0-7 - uint len:16; // : bits 8-23 -}; - -struct Gdma { - union anon__struct_57_bitfield_1 field_0x0; - union anon__struct_57_bitfield_2 field_0x4; - uint addr; -}; - -union Gfx { - struct Gwords words; - struct Gdma dma; - struct Gtri tri; - struct Gline3D line; - struct Gpopmtx popmtx; - struct Gsegment segment; - struct GsetothermodeH setothermodeH; - struct GsetothermodeL setothermodeL; - struct Gtexture texture; - struct Gperspnorm perspnorm; - struct Gsetimg setimg; - struct Gsetcombine setcombine; - struct Gsetcolor setcolor; - struct Gfillrect fillrect; - struct Gsettile settile; - struct Gloadtile loadtile; - Gsettilesize settilesize; - Gloadtlut loadtlut; - longlong force_structure_alignment; -}; - -#define DL_SPRITE_OVERHEAD 24 - -#define SP_FASTCOPY 32 - -#define SP_OVERLAP 64 - -#define SP_CUTOUT 2 - -#define SP_FRACPOS 256 - -#define SP_TEXSHIFT 128 - -#define SP_EXTERN 1024 - -#define SP_TEXSHUF 512 - -#define DL_BM_OVERHEAD 12 - -#define SP_SCALE 16 - -#define SP_TRANSPARENT 1 - -#define SP_Z 8 - -#define SP_HIDDEN 4 - -typedef void * __gnuc_va_list; - -typedef __gnuc_va_list va_list; - -#define SP_DRAM_STACK_SIZE64 128 - -#define SP_UCODE_SIZE 4096 - -#define SP_DRAM_STACK_SIZE8 1024 - -#define SP_UCODE_DATA_SIZE 2048 +typedef struct s_pBONDData s_pBONDData, *Ps_pBONDData; + +typedef struct Player Player, *PPlayer; + +typedef enum CUFF_TYPES { + CUFF_BLUE=0, + CUFF_BOILER=3, + CUFF_JUNGLE=2, + CUFF_SNOW=4, + CUFF_TUX=1, + CUFF_TUX6=6, + CUFF_TUX7=7, + CUFF_TUX8=8, + CUFF_WHITE=5 +} CUFF_TYPES; + +typedef struct Player_SubStruct_7D0 Player_SubStruct_7D0, *PPlayer_SubStruct_7D0; typedef enum ITEM_IDS { ITEM_56=86, @@ -1328,6 +263,7 @@ typedef enum ITEM_IDS { ITEM_DOORDECODER=38, ITEM_DOOREXPLODER=42, ITEM_DOSSIERRED=66, + ITEM_END=89, ITEM_EXPLOSIVEFLOPPY=50, ITEM_FIST=1, ITEM_FLAREPISTOL=35, @@ -1396,7435 +332,32 @@ typedef enum ITEM_IDS { ITEM_WPPKSIL=5 } ITEM_IDS; -typedef enum AIRCRAFT_ANIMATIONS { - ANIM_helicopter_cradle=0, - ANIM_helicopter_takeoff=2, - ANIM_plane_runway=1 -} AIRCRAFT_ANIMATIONS; +typedef struct xyzpoint xyzpoint, *Pxyzpoint; -typedef enum LEVEL_SOLO_SEQUENCE { - SP_LEVEL_ARCHIVES=11, - SP_LEVEL_AZTEC=19, - SP_LEVEL_BUNKER1=5, - SP_LEVEL_BUNKER2=9, - SP_LEVEL_CAVERNS=17, - SP_LEVEL_CONTROL=16, - SP_LEVEL_CRADLE=18, - SP_LEVEL_DAM=1, - SP_LEVEL_DEPOT=13, - SP_LEVEL_EGYPT=20, - SP_LEVEL_FACILITY=2, - SP_LEVEL_FRIGATE=7, - SP_LEVEL_JUNGLE=15, - SP_LEVEL_RUNWAY=3, - SP_LEVEL_SILO=6, - SP_LEVEL_STATUE=10, - SP_LEVEL_STREETS=12, - SP_LEVEL_SURFACE1=4, - SP_LEVEL_SURFACE2=8, - SP_LEVEL_TRAIN=14 -} LEVEL_SOLO_SEQUENCE; - -typedef enum WATCH_BRIEFING_PAGE { - BRIEFING_M=2, - BRIEFING_MONEYPENNY=4, - BRIEFING_OVERVIEW=1, - BRIEFING_Q=3, - BRIEFING_TITLE=0 -} WATCH_BRIEFING_PAGE; - -typedef enum MP_STAGE_SELECTED { - MP_STAGE_ARCHIVES=9, - MP_STAGE_BASEMENT=5, - MP_STAGE_BUNKER=8, - MP_STAGE_CAVERNS=10, - MP_STAGE_CAVES=3, - MP_STAGE_COMPLEX=2, - MP_STAGE_EGYPT=11, - MP_STAGE_FACILITY=7, - MP_STAGE_LIBRARY=4, - MP_STAGE_RANDOM=0, - MP_STAGE_STACK=6, - MP_STAGE_TEMPLE=1 -} MP_STAGE_SELECTED; - -typedef enum CONTROLLER_CONFIG { - CONTROLLER_CONFIG_CINEMA=8, - CONTROLLER_CONFIG_DOMINO=6, - CONTROLLER_CONFIG_GALORE=5, - CONTROLLER_CONFIG_GOODHEAD=7, - CONTROLLER_CONFIG_GOODNIGHT=3, - CONTROLLER_CONFIG_HONEY=0, - CONTROLLER_CONFIG_KISSY=2, - CONTROLLER_CONFIG_PLENTY=4, - CONTROLLER_CONFIG_SOLITARE=1 -} CONTROLLER_CONFIG; - -typedef struct rgba_val rgba_val, *Prgba_val; - -struct rgba_val { - u8 r; - u8 g; - u8 b; - u8 a; -}; - -typedef enum MISSION_BRIEFING { - BRIEF_M=1, - BRIEF_MONEYPENNY=3, - BRIEF_OVERVIEW=0, - BRIEF_Q=2 -} MISSION_BRIEFING; - -typedef enum PROPS { - PROP_ICBM=93, - PROP_ICBM_nose=92, - PROP_ak47mag=121, - PROP_alarm1=0, - PROP_alarm2=1, - PROP_ammo_crate1=3, - PROP_ammo_crate2=4, - PROP_ammo_crate3=5, - PROP_ammo_crate4=6, - PROP_ammo_crate5=7, - PROP_apc=289, - PROP_archsecdoor1=297, - PROP_archsecdoor2=298, - PROP_artic=281, - PROP_artictrailer=286, - PROP_barricade=334, - PROP_bin1=8, - PROP_blotter1=9, - PROP_bodyarmour=115, - PROP_bodyarmourvest=116, - PROP_bollard=339, - PROP_bomb=255, - PROP_book1=10, - PROP_bookshelf1=11, - PROP_borg_crate=87, - PROP_boxcartridges=129, - PROP_boxes2x4=90, - PROP_boxes3x4=89, - PROP_boxes4x4=88, - PROP_brakeunit=120, - PROP_bridge_console1a=12, - PROP_bridge_console1b=13, - PROP_bridge_console2a=14, - PROP_bridge_console2b=15, - PROP_bridge_console3a=16, - PROP_bridge_console3b=17, - PROP_carbmw=301, - PROP_card_box1=18, - PROP_card_box2=19, - PROP_card_box3=20, - PROP_card_box4_lg=21, - PROP_card_box5_lg=22, - PROP_card_box6_lg=23, - PROP_carescort=302, - PROP_cargolf=303, - PROP_carweird=304, - PROP_carzil=305, - PROP_cctv=24, - PROP_chraudiotape=262, - PROP_chrautoshot=207, - PROP_chrblackbox=274, - PROP_chrblueprints=258, - PROP_chrbombcase=226, - PROP_chrbombdefuser=235, - PROP_chrbriefcase=198, - PROP_chrbug=245, - PROP_chrbugdetector=236, - PROP_chrbungee=233, - PROP_chrcamera=238, - PROP_chrcircuitboard=259, - PROP_chrclipboard=269, - PROP_chrcreditcard=250, - PROP_chrdarkglasses=251, - PROP_chrdatathief=253, - PROP_chrdattape=272, - PROP_chrdoordecoder=234, - PROP_chrdoorexploder=240, - PROP_chrdossierred=270, - PROP_chrdynamite=232, - PROP_chrexplosivepen=225, - PROP_chrextinguisher=128, - PROP_chrfingergun=229, - PROP_chrflarepistol=227, - PROP_chrfnp90=197, - PROP_chrgaskeyring=252, - PROP_chrgoldbar=267, - PROP_chrgolden=208, - PROP_chrgoldeneyekey=248, - PROP_chrgoldwppk=231, - PROP_chrgrenade=196, - PROP_chrgrenadelaunch=185, - PROP_chrgrenaderound=203, - PROP_chrheroin=268, - PROP_chrkalash=184, - PROP_chrkeyanalysercase=241, - PROP_chrkeybolt=244, - PROP_chrkeyyale=243, - PROP_chrknife=186, - PROP_chrlaser=187, - PROP_chrlectre=265, - PROP_chrlockexploder=239, - PROP_chrm16=188, - PROP_chrmap=260, - PROP_chrmicrocamera=246, - PROP_chrmicrocode=264, - PROP_chrmicrofilm=263, - PROP_chrmoney=266, - PROP_chrmp5k=189, - PROP_chrmp5ksil=206, - PROP_chrpitongun=228, - PROP_chrplans=256, - PROP_chrplastique=273, - PROP_chrpolarizedglasses=249, - PROP_chrproximitymine=200, - PROP_chrremotemine=199, - PROP_chrrocket=202, - PROP_chrrocketlaunch=211, - PROP_chrruger=190, - PROP_chrsafecrackercase=237, - PROP_chrshotgun=192, - PROP_chrsilverwppk=230, - PROP_chrskorpion=193, - PROP_chrsniperrifle=210, - PROP_chrspectre=194, - PROP_chrspooltape=261, - PROP_chrspyfile=257, - PROP_chrstafflist=271, - PROP_chrtesttube=338, - PROP_chrthrowknife=209, - PROP_chrtimedmine=201, - PROP_chrtt33=205, - PROP_chruzi=195, - PROP_chrvideotape=275, - PROP_chrweaponcase=242, - PROP_chrwppk=191, - PROP_chrwppksil=204, - PROP_chrwristdart=224, - PROP_console1=25, - PROP_console2=26, - PROP_console3=27, - PROP_console_sev2a=32, - PROP_console_sev2b=33, - PROP_console_sev2c=34, - PROP_console_sev2d=35, - PROP_console_sev_GEa=36, - PROP_console_sev_GEb=37, - PROP_console_seva=28, - PROP_console_sevb=29, - PROP_console_sevc=30, - PROP_console_sevd=31, - PROP_cryptdoor1a=170, - PROP_cryptdoor1b=171, - PROP_cryptdoor2a=172, - PROP_cryptdoor2b=173, - PROP_cryptdoor3=174, - PROP_cryptdoor4=175, - PROP_damchaindoor=180, - PROP_damgatedoor=178, - PROP_damtundoor=179, - PROP_depot_door_steel=309, - PROP_depot_gate_entry=308, - PROP_desk1=38, - PROP_desk2=39, - PROP_desk_arecibo1=95, - PROP_desk_lamp2=40, - PROP_dest_engine=99, - PROP_dest_exocet=100, - PROP_dest_gun=101, - PROP_dest_harpoon=102, - PROP_dest_seawolf=103, - PROP_disc_reader=41, - PROP_disk_drive1=42, - PROP_door_azt_chair=331, - PROP_door_azt_desk=329, - PROP_door_azt_desk_top=330, - PROP_door_aztec=327, - PROP_door_dest1=152, - PROP_door_dest2=153, - PROP_door_eyelid=164, - PROP_door_iris=165, - PROP_door_mf=332, - PROP_door_roller1=146, - PROP_door_roller2=147, - PROP_door_roller3=148, - PROP_door_roller4=149, - PROP_door_rollertrain=325, - PROP_door_st_arec1=150, - PROP_door_st_arec2=151, - PROP_door_win=326, - PROP_doorconsole=337, - PROP_doorpanel=336, - PROP_doorprison1=182, - PROP_doorstatgate=183, - PROP_explosionbit=2, - PROP_filing_cabinet1=43, - PROP_flag=333, - PROP_floppy=247, - PROP_fnp90mag=130, - PROP_gas_plant_met1_do1=158, - PROP_gas_plant_sw2_do1=155, - PROP_gas_plant_sw3_do1=156, - PROP_gas_plant_sw4_do1=157, - PROP_gas_plant_sw_do1=154, - PROP_gas_plant_wc_cub1=159, - PROP_gasbarrel=113, - PROP_gasbarrels=114, - PROP_gasplant_clear_door=160, - PROP_gastank=117, - PROP_glassware1=118, - PROP_glassware2=310, - PROP_glassware3=311, - PROP_glassware4=312, - PROP_goldeneyelogo=277, - PROP_goldenshells=131, - PROP_groundgun=299, - PROP_gun_runway1=292, - PROP_hatberet=220, - PROP_hatberetblue=221, - PROP_hatberetred=222, - PROP_hatchbolt=119, - PROP_hatchdoor=177, - PROP_hatchsevx=295, - PROP_hatfurry=212, - PROP_hatfurryblack=214, - PROP_hatfurrybrown=213, - PROP_hathelmet=217, - PROP_hathelmetgrey=218, - PROP_hatmoon=219, - PROP_hatpeaked=223, - PROP_hattbird=215, - PROP_hattbirdbrown=216, - PROP_helicopter=282, - PROP_hind=285, - PROP_jeep=280, - PROP_jerry_can1=44, - PROP_jungle3_tree=108, - PROP_jungle5_tree=318, - PROP_key_holder=294, - PROP_keyboard1=45, - PROP_kit_units1=46, - PROP_labbench=112, - PROP_landmine=313, - PROP_legalpage=319, - PROP_letter_tray1=47, - PROP_locker3=96, - PROP_locker4=97, - PROP_m16mag=122, - PROP_magnumshells=132, - PROP_mainframe1=48, - PROP_mainframe2=49, - PROP_metal_chair1=50, - PROP_metal_crate1=51, - PROP_metal_crate2=52, - PROP_metal_crate3=53, - PROP_metal_crate4=54, - PROP_milcopter=284, - PROP_miltruck=279, - PROP_missile_rack=55, - PROP_missile_rack2=56, - PROP_modembox=335, - PROP_motorbike=287, - PROP_mp5kmag=123, - PROP_nintendologo=276, - PROP_oil_drum1=57, - PROP_oil_drum2=58, - PROP_oil_drum3=59, - PROP_oil_drum5=60, - PROP_oil_drum6=61, - PROP_oil_drum7=62, - PROP_padlock=63, - PROP_palm=109, - PROP_palmtree=110, - PROP_phone1=64, - PROP_plane=291, - PROP_plant1=314, - PROP_plant11=315, - PROP_plant2=316, - PROP_plant2b=111, - PROP_plant3=317, - PROP_radio_unit1=65, - PROP_radio_unit2=66, - PROP_radio_unit3=67, - PROP_radio_unit4=68, - PROP_roofgun=98, - PROP_safe=254, - PROP_safedoor=293, - PROP_sat1_reflect=69, - PROP_satbox=71, - PROP_satdish=70, - PROP_sec_panel=91, - PROP_sev_door=135, - PROP_sev_door3=136, - PROP_sev_door3_wind=137, - PROP_sev_door4_wind=138, - PROP_sev_door_v1=140, - PROP_sev_trislide=139, - PROP_sevdish=296, - PROP_sevdoormetslide=169, - PROP_sevdoornowind=168, - PROP_sevdoorwind=167, - PROP_sevdoorwood=166, - PROP_shuttle=328, - PROP_shuttle_door_l=306, - PROP_shuttle_door_r=307, - PROP_silencer=127, - PROP_silo_lift_door=144, - PROP_silotopdoor=181, - PROP_skorpionmag=124, - PROP_spectremag=125, - PROP_speedboat=290, - PROP_st_pete_room_1i=320, - PROP_st_pete_room_2i=321, - PROP_st_pete_room_3t=322, - PROP_st_pete_room_5c=323, - PROP_st_pete_room_6c=324, - PROP_steel_door1=141, - PROP_steel_door2=142, - PROP_steel_door2b=145, - PROP_steel_door3=143, - PROP_stool1=72, - PROP_swipe_card2=86, - PROP_swivel_chair1=73, - PROP_tank=288, - PROP_tiger=283, - PROP_torpedo_rack=74, - PROP_train_door=161, - PROP_train_door2=162, - PROP_train_door3=163, - PROP_trainextdoor=300, - PROP_tt33mag=134, - PROP_tuning_console1=94, - PROP_tv1=75, - PROP_tv4screen=78, - PROP_tv_holder=76, - PROP_tvscreen=77, - PROP_uzimag=126, - PROP_vertdoor=176, - PROP_walletbond=278, - PROP_window=104, - PROP_window_cor11=107, - PROP_window_lib_lg1=105, - PROP_window_lib_sm1=106, - PROP_wood_lg_crate1=79, - PROP_wood_lg_crate2=80, - PROP_wood_md_crate3=81, - PROP_wood_sm_crate4=82, - PROP_wood_sm_crate5=83, - PROP_wood_sm_crate6=84, - PROP_wooden_table1=85, - PROP_wppkmag=133 -} PROPS; - -typedef enum ANIMATIONS { - ANIM_adjusting_crotch=158, - ANIM_aim_and_blow_one_handed_weapon=149, - ANIM_aim_one_handed_weapon_left=150, - ANIM_aim_one_handed_weapon_left_right=99, - ANIM_aim_one_handed_weapon_right=151, - ANIM_aim_running_left_one_handed_weapon=87, - ANIM_aim_running_one_handed_weapon=85, - ANIM_aim_running_right_one_handed_weapon=86, - ANIM_aim_sprinting_one_handed_weapon=88, - ANIM_aim_walking_left_one_handed_weapon=83, - ANIM_aim_walking_one_handed_weapon=82, - ANIM_aim_walking_right_one_handed_weapon=84, - ANIM_bond_eye_fire=44, - ANIM_bond_eye_fire_alt=176, - ANIM_bond_eye_walk=43, - ANIM_bond_watch=45, - ANIM_cock_one_handed_weapon_and_turn_around=100, - ANIM_cock_one_handed_weapon_turn_around_and_stand_up=102, - ANIM_conversation=152, - ANIM_conversation_cleaned=160, - ANIM_conversation_listener=161, - ANIM_coughing_kneel1=166, - ANIM_coughing_kneel2=167, - ANIM_coughing_standing=165, - ANIM_cradle_fall=180, - ANIM_cradle_jump=179, - ANIM_credits_bond_kissing=181, - ANIM_credits_natalya_kissing=182, - ANIM_dam_jump=177, - ANIM_dancing=170, - ANIM_dancing_one_handed_weapon=171, - ANIM_death_backward_fall_face_up1=28, - ANIM_death_backward_fall_face_up2=37, - ANIM_death_backward_spin_face_down_left=31, - ANIM_death_backward_spin_face_down_right=29, - ANIM_death_backward_spin_face_up_left=32, - ANIM_death_backward_spin_face_up_right=30, - ANIM_death_explosion_back1=133, - ANIM_death_explosion_back2=136, - ANIM_death_explosion_back_left=132, - ANIM_death_explosion_forward=130, - ANIM_death_explosion_forward_face_down=138, - ANIM_death_explosion_forward_right1=135, - ANIM_death_explosion_forward_right2=140, - ANIM_death_explosion_forward_right2_alt=141, - ANIM_death_explosion_forward_right3=142, - ANIM_death_explosion_forward_roll=137, - ANIM_death_explosion_left1=131, - ANIM_death_explosion_left2=139, - ANIM_death_explosion_right=134, - ANIM_death_fetal_position_left=36, - ANIM_death_fetal_position_right=35, - ANIM_death_forward_face_down=26, - ANIM_death_forward_face_down_hard=33, - ANIM_death_forward_face_down_soft=34, - ANIM_death_forward_spin_face_up=27, - ANIM_death_genitalia=22, - ANIM_death_head=56, - ANIM_death_left_leg=57, - ANIM_death_neck=24, - ANIM_death_stagger_back_to_wall=25, - ANIM_draw_one_handed_weapon_and_look_around=97, - ANIM_draw_one_handed_weapon_and_stand_up=98, - ANIM_draw_one_handed_weapon_and_turn_around=103, - ANIM_drop_weapon_and_show_fight_stance=153, - ANIM_extending_left_hand=61, - ANIM_fire_hip=3, - ANIM_fire_hip_forward_one_handed_weapon=70, - ANIM_fire_hip_one_handed_weapon_fast=68, - ANIM_fire_hip_one_handed_weapon_slow=69, - ANIM_fire_jump_to_side_left=52, - ANIM_fire_jump_to_side_right=53, - ANIM_fire_kneel_aiming_down_sights=128, - ANIM_fire_kneel_dual_wield=116, - ANIM_fire_kneel_dual_wield_hands_crossed=119, - ANIM_fire_kneel_dual_wield_hands_crossed_left=120, - ANIM_fire_kneel_dual_wield_hands_crossed_right=121, - ANIM_fire_kneel_dual_wield_left=117, - ANIM_fire_kneel_dual_wield_right=118, - ANIM_fire_kneel_forward_one_handed_weapon_fast=76, - ANIM_fire_kneel_forward_one_handed_weapon_slow=75, - ANIM_fire_kneel_left=9, - ANIM_fire_kneel_left_leg=8, - ANIM_fire_kneel_left_one_handed_weapon=81, - ANIM_fire_kneel_left_one_handed_weapon_fast=80, - ANIM_fire_kneel_left_one_handed_weapon_slow=79, - ANIM_fire_kneel_right=10, - ANIM_fire_kneel_right_leg=7, - ANIM_fire_kneel_right_one_handed_weapon_fast=78, - ANIM_fire_kneel_right_one_handed_weapon_slow=77, - ANIM_fire_roll_left=11, - ANIM_fire_roll_left_fast=13, - ANIM_fire_roll_right1=12, - ANIM_fire_roll_right2=39, - ANIM_fire_running=49, - ANIM_fire_running_dual_wield=110, - ANIM_fire_running_dual_wield_hands_crossed=111, - ANIM_fire_shoulder_left=4, - ANIM_fire_sprinting_dual_wield=112, - ANIM_fire_sprinting_dual_wield_hands_crossed=113, - ANIM_fire_standing=1, - ANIM_fire_standing_aiming_down_sights=127, - ANIM_fire_standing_draw_one_handed_weapon_fast=66, - ANIM_fire_standing_draw_one_handed_weapon_slow=67, - ANIM_fire_standing_dual_wield=122, - ANIM_fire_standing_dual_wield_hands_crossed_left=125, - ANIM_fire_standing_dual_wield_hands_crossed_right=126, - ANIM_fire_standing_dual_wield_left=123, - ANIM_fire_standing_dual_wield_right=124, - ANIM_fire_standing_fast=2, - ANIM_fire_standing_left_one_handed_weapon_fast=74, - ANIM_fire_standing_left_one_handed_weapon_slow=73, - ANIM_fire_standing_one_handed_weapon=65, - ANIM_fire_standing_right_one_handed_weapon=71, - ANIM_fire_step_right_one_handed_weapon=72, - ANIM_fire_throw_grenade=62, - ANIM_fire_turn_right1=5, - ANIM_fire_turn_right2=6, - ANIM_fire_walking=48, - ANIM_fire_walking_dual_wield=108, - ANIM_fire_walking_dual_wield_hands_crossed=109, - ANIM_hit_butt_long=54, - ANIM_hit_butt_short=55, - ANIM_hit_left_arm=16, - ANIM_hit_left_hand=18, - ANIM_hit_left_leg=20, - ANIM_hit_left_shoulder=14, - ANIM_hit_neck=23, - ANIM_hit_right_arm=17, - ANIM_hit_right_hand=19, - ANIM_hit_right_leg=21, - ANIM_hit_right_shoulder=15, - ANIM_hit_taser=129, - ANIM_holster_one_handed_weapon_and_adjust_suit=105, - ANIM_holster_one_handed_weapon_and_cross_arms=101, - ANIM_idle=0, - ANIM_idle_unarmed=106, - ANIM_jogging_one_handed_weapon=89, - ANIM_jump_backwards=60, - ANIM_keyboard_left_hand=174, - ANIM_keyboard_right_hand1=172, - ANIM_keyboard_right_hand2=173, - ANIM_keyboard_right_hand_tapping=175, - ANIM_laughing_in_disbelief=163, - ANIM_look_around=64, - ANIM_null143=143, - ANIM_null144=144, - ANIM_null145=145, - ANIM_null146=146, - ANIM_null169=169, - ANIM_null50=50, - ANIM_null51=51, - ANIM_null91=91, - ANIM_null92=92, - ANIM_null93=93, - ANIM_null94=94, - ANIM_null95=95, - ANIM_null96=96, - ANIM_running=42, - ANIM_running_female=115, - ANIM_running_hands_up=147, - ANIM_scratching_butt=157, - ANIM_scratching_leg=156, - ANIM_side_step_left=38, - ANIM_slide_left=59, - ANIM_slide_right=58, - ANIM_sneeze=159, - ANIM_spotting_bond=63, - ANIM_sprinting=41, - ANIM_sprinting_hands_up=148, - ANIM_sprinting_one_handed_weapon=90, - ANIM_standing_up=168, - ANIM_startled_and_looking_around=162, - ANIM_step_foward_and_hold_one_handed_weapon=104, - ANIM_surface_vent_jump=178, - ANIM_surrendering_armed=46, - ANIM_surrendering_armed_drop_weapon=47, - ANIM_surrendering_unarmed=164, - ANIM_swatting_flies=155, - ANIM_walking=40, - ANIM_walking_female=114, - ANIM_walking_unarmed=107, - ANIM_yawning=154 -} ANIMATIONS; - - -// WARNING! conflicting data type names: /bondgame.h/COLORMODE - /COLORMODE - -typedef enum CUFF_TYPES { - CUFF_BLUE=0, - CUFF_BOILER=3, - CUFF_JUNGLE=2, - CUFF_SNOW=4, - CUFF_TUX=1, - CUFF_TUX6=6, - CUFF_TUX7=7, - CUFF_TUX8=8, - CUFF_WHITE=5 -} CUFF_TYPES; - -typedef enum PROJECTILES { - PROJECTILES_MAX=46, - PROJECTILES_TYPE_BOMBCASE=55, - PROJECTILES_TYPE_BUG=56, - PROJECTILES_TYPE_GE_KEY=58, - PROJECTILES_TYPE_GLAUNCH_ROUND=54, - PROJECTILES_TYPE_GRENADE=48, - PROJECTILES_TYPE_KNIFE=47, - PROJECTILES_TYPE_MICROCAMERA=57, - PROJECTILES_TYPE_PLASTIQUE=59, - PROJECTILES_TYPE_PROX_MINE=50, - PROJECTILES_TYPE_REMOTE_MINE=49, - PROJECTILES_TYPE_ROCKET_ROUND=52, - PROJECTILES_TYPE_ROCKET_ROUND2=53, - PROJECTILES_TYPE_TIMED_MINE=51 -} PROJECTILES; - -typedef enum GENDER { - FEMALE=0, - MALE=1 -} GENDER; - -typedef enum BODIES { - BODY_Arctic_Commando=38, - BODY_Baron_Samedi=12, - BODY_Boris=6, - BODY_Civilian_1_Female=29, - BODY_Civilian_2=33, - BODY_Civilian_3=34, - BODY_Civilian_4=32, - BODY_Female_Mandy=72, - BODY_Female_Marion_Rosika=71, - BODY_Female_Sally=70, - BODY_Female_Vivien=73, - BODY_Formal_Wear=23, - BODY_Helicopter_Pilot=36, - BODY_Janus_Marine=17, - BODY_Janus_Special_Forces=4, - BODY_Jaws=13, - BODY_Jungle_Commando=0, - BODY_Jungle_Fatigues=24, - BODY_Left_Suit_Hand_Floating_Arm=41, - BODY_Male_Alan=43, - BODY_Male_B=50, - BODY_Male_Biker=61, - BODY_Male_Chris=54, - BODY_Male_Dave_Dr_Doak=51, - BODY_Male_Des=53, - BODY_Male_Duncan=47, - BODY_Male_Dwayne=49, - BODY_Male_Graeme=62, - BODY_Male_Grant=52, - BODY_Male_Jim=57, - BODY_Male_Joe=68, - BODY_Male_Joe_Altered=66, - BODY_Male_Joel=64, - BODY_Male_Karl=42, - BODY_Male_Ken=67, - BODY_Male_Lee=55, - BODY_Male_Mark=46, - BODY_Male_Martin=45, - BODY_Male_Mishkin=69, - BODY_Male_Neil=56, - BODY_Male_Pete=44, - BODY_Male_Pierce_Bond_1=74, - BODY_Male_Pierce_Bond_2=75, - BODY_Male_Pierce_Bond_3=76, - BODY_Male_Pierce_Bond_Parka=77, - BODY_Male_Pierce_Bond_Tuxedo=78, - BODY_Male_Robin=58, - BODY_Male_Scott=65, - BODY_Male_Shaun=48, - BODY_Male_Steve_Ellis=63, - BODY_Male_Steve_H=59, - BODY_Male_Terrorist=60, - BODY_Mayday=14, - BODY_Moonraker_Elite_1_Male=39, - BODY_Moonraker_Elite_2_Female=40, - BODY_Natalya_Jungle_Fatigues=79, - BODY_Natalya_Skirt=16, - BODY_Naval_Officer=20, - BODY_Oddjob=15, - BODY_Ourumov=7, - BODY_Parka=25, - BODY_Rosika=27, - BODY_Russian_Commandant=18, - BODY_Russian_Infantry=3, - BODY_Russian_Soldier=2, - BODY_Scientist_1_Male=35, - BODY_Scientist_2_Female=28, - BODY_Siberian_Guard_1_Mishkin=19, - BODY_Siberian_Guard_2=37, - BODY_Siberian_Special_Forces=21, - BODY_Special_Operations_Uniform=22, - BODY_St_Petersburg_Guard=1, - BODY_Trevelyan_006=9, - BODY_Trevelyan_Janus=8, - BODY_Tuxedo=5, - BODY_Unused_Female=26, - BODY_Unused_Male_1=30, - BODY_Unused_Male_2=31, - BODY_Valentin_=10, - BODY_Xenia=11 -} BODIES; - -typedef enum TEXTBANK_LEVEL_INDEX { - LAME=1, - LARCH=2, - LAREC=8, - LARK=3, - LASH=4, - LAZT=5, - LCAT=6, - LCAVE=7, - LCRAD=9, - LCRYP=10, - LDAM=11, - LDEPO=12, - LDEST=13, - LDISH=14, - LEAR=15, - LELD=16, - LGUN=38, - LIMP=17, - LJUN=18, - LLEE=19, - LLEN=20, - LLIP=21, - LLUE=22, - LMISC=44, - LMPMENU=40, - LMPWEAPONS=42, - LNULL=0, - LOAT=23, - LOPTIONS=43, - LPAM=24, - LPETE=25, - LPROPOBJ=41, - LREF=26, - LRIT=27, - LRUN=28, - LSEV=30, - LSEVB=29, - LSEVX=31, - LSEVXB=32, - LSHO=33, - LSILO=34, - LSTAT=35, - LTITLE=39, - LTRA=36, - LWAX=37 -} TEXTBANK_LEVEL_INDEX; - -typedef enum DOORSTATE { - CLOSED=2, - OPEN=1 -} DOORSTATE; - -typedef enum HEADS { - HEAD_Female_Mandy=72, - HEAD_Female_Marion_Rosika=71, - HEAD_Female_Sally=70, - HEAD_Female_Vivien=73, - HEAD_Male_Alan=43, - HEAD_Male_B=50, - HEAD_Male_Biker=61, - HEAD_Male_Chris=54, - HEAD_Male_Dave_Dr_Doak=51, - HEAD_Male_Des=53, - HEAD_Male_Duncan=47, - HEAD_Male_Dwayne=49, - HEAD_Male_Graeme=62, - HEAD_Male_Grant=52, - HEAD_Male_Jim=57, - HEAD_Male_Joe=68, - HEAD_Male_Joe_Altered=66, - HEAD_Male_Joel=64, - HEAD_Male_Karl=42, - HEAD_Male_Ken=67, - HEAD_Male_Lee=55, - HEAD_Male_Mark=46, - HEAD_Male_Martin=45, - HEAD_Male_Mishkin=69, - HEAD_Male_Neil=56, - HEAD_Male_Pete=44, - HEAD_Male_Pierce_Bond_1=74, - HEAD_Male_Pierce_Bond_2=75, - HEAD_Male_Pierce_Bond_3=76, - HEAD_Male_Pierce_Bond_Parka=77, - HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT=78, - HEAD_Male_Robin=58, - HEAD_Male_Scott=65, - HEAD_Male_Shaun=48, - HEAD_Male_Steve_Ellis=63, - HEAD_Male_Steve_H=59, - HEAD_Male_Terrorist=60, - HEAD_Natalya_Jungle_Fatigues=79 -} HEADS; - -typedef enum mission_setup_type { - MISSION_HEADER=1, - MISSION_PART=0 -} mission_setup_type; - -typedef enum LEVEL_INDEX { - LEVEL_INDEX_AME=28, - LEVEL_INDEX_ARCH=4, - LEVEL_INDEX_ARK=14, - LEVEL_INDEX_ASH=26, - LEVEL_INDEX_AZT=8, - LEVEL_INDEX_CAT=20, - LEVEL_INDEX_CAVE=19, - LEVEL_INDEX_CONTROL=3, - LEVEL_INDEX_CRAD=21, - LEVEL_INDEX_CRYP=12, - LEVEL_INDEX_DAM=13, - LEVEL_INDEX_DEPO=10, - LEVEL_INDEX_DEST=6, - LEVEL_INDEX_DISH=18, - LEVEL_INDEX_EAR=31, - LEVEL_INDEX_ELD=24, - LEVEL_INDEX_IMP=25, - LEVEL_INDEX_JUN=17, - LEVEL_INDEX_LEE=32, - LEVEL_INDEX_LEN=34, - LEVEL_INDEX_LIP=33, - LEVEL_INDEX_LUE=27, - LEVEL_INDEX_OAT=30, - LEVEL_INDEX_PAM=36, - LEVEL_INDEX_PETE=9, - LEVEL_INDEX_REF=11, - LEVEL_INDEX_RIT=29, - LEVEL_INDEX_RUN=15, - LEVEL_INDEX_SEVB=7, - LEVEL_INDEX_SEVBUNKER=0, - LEVEL_INDEX_SEVX=16, - LEVEL_INDEX_SEVXB=23, - LEVEL_INDEX_SHO=22, - LEVEL_INDEX_SILO=1, - LEVEL_INDEX_STATUE=2, - LEVEL_INDEX_TRA=5, - LEVEL_INDEX_WAX=35, - LEVEL_INDEX_X=37 -} LEVEL_INDEX; - -typedef enum SCREEN_SIZE { - SCREEN_SIZE_320x240=0, - SCREEN_SIZE_440x330=1 -} SCREEN_SIZE; - -typedef u16 PAD; - -typedef enum MENU { - MENU_007_OPTIONS=9, - MENU_BRIEFING=10, - MENU_CHEAT=21, - MENU_DIFFICULTY=8, - MENU_DISPLAY_CAST=24, - MENU_EYE_INTRO=3, - MENU_FILE_SELECT=5, - MENU_GOLDENEYE_LOGO=4, - MENU_LEGAL_SCREEN=0, - MENU_MISSION_COMPLETE=13, - MENU_MISSION_FAILED=12, - MENU_MISSION_SELECT=7, - MENU_MODE_SELECT=6, - MENU_MP_CHAR_SELECT=15, - MENU_MP_CONTROL_STYLE=17, - MENU_MP_HANDICAP=16, - MENU_MP_OPTIONS=14, - MENU_MP_SCENARIO_SELECT=19, - MENU_MP_STAGE_SELECT=18, - MENU_MP_TEAMS=20, - MENU_NINTENDO_LOGO=1, - MENU_NO_CONTROLLERS=22, - MENU_RAREWARE_LOGO=2, - MENU_RUN_STAGE=11, - MENU_SPECTRUM_EMU=25, - MENU_SWITCH_SCREENS=23 -} MENU; - -#define OBJECTIVES_MAX 10 - -typedef struct IMAGE IMAGE, *PIMAGE; - -struct IMAGE { - ushort imagic; - ushort type; - ushort dim; - ushort xsize; - ushort ysize; - ushort zsize; - ulong min; - ulong max; - ulong wastebytes; - char name[80]; - ulong colormap; - long file; - ushort flags; - short dorev; - short x; - short y; - short z; - short cnt; - ushort * ptr; - ushort * base; - ushort * tmpbuf; - ulong offset; - ulong rleend; - ulong * rowstart; - long * rowsize; -}; - -#define CM_COLORMAP 3 - -#define TYPEMASK 65280 - -#define ITYPE_VERBATIM 0 - -#define ITYPE_RLE 256 - -#define CM_DITHERED 1 - -#define IMAGIC 474 - -#define RLE_NOP 0 - -#define CM_SCREEN 2 - -#define BPPMASK 255 - -#define CM_NORMAL 0 - -typedef struct _Region_s _Region_s, *P_Region_s; - -struct _Region_s { - u8 * r_startBufferAddress; - u8 * r_endAddress; - s32 r_bufferSize; - s32 r_bufferCount; - u16 r_freeList; - u16 r_alignSize; -}; - -typedef struct _Region_s OSRegion; - -#define OS_RG_ALIGN_DEFAULT 8 - -#define MAX_BUFCOUNT 32768 - -#define OS_RG_ALIGN_16B 16 - -#define OS_RG_ALIGN_4B 4 - -#define OS_RG_ALIGN_2B 2 - -#define OS_RG_ALIGN_8B 8 - -#define BUF_FREE_WO_NEXT 32768 - -#define GT_STATE_OFF_VTXCOUNT 8 - -#define GT_STATE_OFF_TRANSFORM 24 - -#define GT_STATE_OFF_RENDSTATE 0 - -#define GT_STATE_OFF_TRICOUNT 10 - -#define GT_STATE_OFF_VTXV0 9 - -#define GT_STATE_SIZE 88 - -#define GT_STATE_OFF_TEXSTATE 4 - -#define GT_STATE_OFF_OTHERMODE 16 - -#define GT_STATE_OFF_RDPCMDS 12 - -#define M_GFXTASK 1 - -#define G_OFF 0 - -#define G_ON 1 - -#define M_VIDTASK 3 - -#define NUM_SEGMENTS 16 - -#define M_AUDTASK 2 - -typedef void (* OSErrorHandler)(s16, s16, ...); - -#define ERR_OSPISTARTDMA_PIMGR 28 - -#define ERR_OSCREATETHREAD_PRI 2 - -#define ERR_OSVISETXSCALE_VALUE 39 - -#define ERR_ALMODDELAYOVERFLOW 133 - -#define ERR_OSVIGETNEXTFRAMEBUFFER 38 - -#define ERR_OSSETTLBASID 13 - -#define ERR_OSVIGETCURRENTFRAMEBUFFER 37 - -#define ERR_ALEVENTNOFREE 124 - -#define ERR_OSPISTARTDMA_DIR 30 - -#define ERR_OSSETTHREADPRI 4 - -#define ERR_OSSETTIME 75 - -#define ERR_OSREADHOST_ADDR 70 - -#define ERR_OSPROFILESTART_TIME 66 - -#define ERR_OSVISETMODE 45 - -#define ERR_ALSYN_NO_UPDATE 106 - -#define ERR_ALSEQSYSEX 119 - -#define ERR_OSFREE_REGION 53 - -#define ERR_OSGETREGIONBUFCOUNT 55 - -#define ERR_OSPISTARTDMA_PRI 29 - -#define ERR_OSMAPTLB_INDEX 10 - -#define ERR_OSCREATEVIMANAGER 49 - -#define ERR_ALSEQMETA 120 - -#define ERR_ALBNKFNEW 113 - -#define ERR_ALCSEQZEROSTATUS 128 - -#define ERR_OSPISTARTDMA_DEVADDR 31 - -#define ERR_OSSETEVENTMESG 9 - -#define ERR_ALHEAPNOFREE 125 - -#define ERR_OSAISETNEXTBUFFER_ADDR 15 - -#define ERR_OSSTARTTHREAD 3 - -#define ERR_OSREADHOST_SIZE 71 - -#define ERR_ALSEQPUNMAP 123 - -#define ERR_OSUNMAPTLB 12 - -#define ERR_OSAISETNEXTBUFFER_SIZE 16 - -#define ERR_ALSNDPSETSOUND 110 - -#define ERR_OSVISWAPBUFFER_VIMGR 48 - -#define ERR_ALSEQNOTMIDI0 115 - -#define ERR_OSPROFILEINIT_STR 61 - -#define ERR_OSPROFILESTART_FLAG 67 - -#define ERR_OSMAPTLB_ASID 11 - -#define ERR_OSCREATETHREAD_SP 1 - -#define ERR_OSGETREGIONBUFSIZE 56 - -#define ERR_OSVISETEVENT 46 - -#define ERR_OSVISETSPECIAL_VALUE 43 - -#define ERR_OSVISETYSCALE_VALUE 41 - -#define ERR_OSPIRAWSTARTDMA_DIR 21 - -#define ERR_OSPIRAWWRITEIO 20 - -#define ERR_OSPROFILESTOP_FLAG 68 - -#define ERR_ALCSEQZEROVEL 129 - -#define ERR_OSMALLOC 52 - -#define ERR_OSSPTASKLOAD_OUTSIZE 59 - -#define ERR_ALSEQNOTMIDI 114 - -#define ERR_OSVIGETCURRENTMODE 36 - -#define ERR_OSPIRAWSTARTDMA_ADDR 23 - -#define ERR_OSCREATEREGION_SIZE 51 - -#define ERR_OSPIRAWSTARTDMA_SIZE 24 - -#define ERR_OSVISETXSCALE_VIMGR 40 - -#define ERR_ALCSPVNOTFREE 130 - -#define ERR_OSJAMMESG 7 - -#define ERR_OSPISTARTDMA_RANGE 34 - -#define ERR_ALSEQPINVALIDPROG 121 - -#define ERR_OSPIWRITEIO 27 - -#define ERR_OSPROFILEINIT_ORD 64 - -#define ERR_OSPROFILEINIT_SIZ 65 - -#define ERR_OSPIREADIO 26 - -#define ERR_OSSPTASKLOAD_YIELD 60 - -#define ERR_OSSTOPTIMER 77 - -#define ERR_OSSENDMESG 6 - -#define ERR_OSPISTARTDMA_ADDR 32 - -#define ERR_OSVISETSPECIAL_VIMGR 44 - -#define ERR_ALSEQTRACKHDR 118 - -#define ERR_OSSPTASKLOAD_DRAM 57 - -#define ERR_OSPROFILESTOP_TIMER 69 - -#define ERR_OSAISETFREQUENCY 14 - -#define ERR_ALSEQP_MAP_VOICE 102 - -#define ERR_OSFREE_ADDR 54 - -#define ERR_OSDPSETNEXTBUFFER_ADDR 17 - -#define ERR_OSDPSETNEXTBUFFER_SIZE 18 - -#define ERR_ALSNDPDELETE 108 - -#define ERR_OSSPTASKLOAD_OUT 58 - -#define ERR_OSPIRAWSTARTDMA_DEVADDR 22 - -#define ERR_OSCREATEMESGQUEUE 5 - -#define ERR_ALSNDPSETPRIORITY 111 - -#define ERR_ALHEAPFIRSTBLOCK 127 - -#define OS_ERROR_MAGIC 1801548921 - -#define ERR_OSPIRAWSTARTDMA_RANGE 25 - -#define ERR_ALSNDPSETPAR 112 - -#define ERR_OSSETTIMER 76 - -#define ERR_OSGETTIME 74 - -#define ERR_ALSEQP_NO_SOUND 100 - -#define ERR_ALSNDPDEALLOCATE 107 - -#define ERR_ALSEQNUMTRACKS 116 - -#define ERR_OSCREATEREGION_ALIGN 50 - -#define ERR_ALSEQP_POLY_VOICE 104 - -#define ERR_OSVISWAPBUFFER_ADDR 47 - -#define ERR_ALSNDP_NO_VOICE 105 - -#define ERR_ALHEAPCORRUPT 126 - -#define ERR_ALSEQTIME 117 - -#define ERR_ALSNDPPLAY 109 - -#define ERR_OSPIRAWREADIO 19 - -#define ERR_OSAISETNEXTBUFFER_ENDADDR 132 - -#define ERR_OSPROFILEINIT_ALN 63 - -#define ERR_OSWRITEHOST_ADDR 72 - -#define ERR_OSWRITEHOST_SIZE 73 - -#define ERR_ALSEQPUNKNOWNMIDI 122 - -#define ERR_OSCREATEPIMANAGER 35 - -#define ERR_ALSEQP_NO_VOICE 101 - -#define ERR_ALSEQOVERRUN 131 - -#define ERR_OSPISTARTDMA_SIZE 33 - -#define ERR_OSPROFILEINIT_CNT 62 - -#define ERR_ALSEQP_OFF_VOICE 103 - -#define ERR_OSRECVMESG 8 - -#define ERR_OSVISETYSCALE_VIMGR 42 - -typedef struct __OSEventState __OSEventState, *P__OSEventState; - -typedef struct OSMesgQueue_s OSMesgQueue_s, *POSMesgQueue_s; - -typedef struct OSMesgQueue_s OSMesgQueue; - -typedef void * OSMesg; - -typedef struct OSThread_s OSThread_s, *POSThread_s; - -typedef struct OSThread_s OSThread; - -typedef s32 OSPri; - -typedef s32 OSId; - -typedef struct __OSThreadContext __OSThreadContext, *P__OSThreadContext; - -typedef ulonglong u64; - -typedef union __OSfp __OSfp, *P__OSfp; - -typedef struct _struct_2 _struct_2, *P_struct_2; - -struct _struct_2 { - f32 f_odd; - f32 f_even; -}; - -union __OSfp { - struct _struct_2 f; - f64 d; -}; - -struct __OSThreadContext { - u64 at; - u64 v0; - u64 v1; - u64 a0; - u64 a1; - u64 a2; - u64 a3; - u64 t0; - u64 t1; - u64 t2; - u64 t3; - u64 t4; - u64 t5; - u64 t6; - u64 t7; - u64 s0; - u64 s1; - u64 s2; - u64 s3; - u64 s4; - u64 s5; - u64 s6; - u64 s7; - u64 t8; - u64 t9; - u64 gp; - u64 sp; - u64 s8; - u64 ra; - u64 lo; - u64 hi; - u32 sr; - u32 pc; - u32 cause; - u32 badvaddr; - u32 rcp; - u32 fpcsr; - union __OSfp fp0; - union __OSfp fp2; - union __OSfp fp4; - union __OSfp fp6; - union __OSfp fp8; - union __OSfp fp10; - union __OSfp fp12; - union __OSfp fp14; - union __OSfp fp16; - union __OSfp fp18; - union __OSfp fp20; - union __OSfp fp22; - union __OSfp fp24; - union __OSfp fp26; - union __OSfp fp28; - union __OSfp fp30; -}; - -struct OSThread_s { - struct OSThread_s * next; - OSPri priority; - struct OSThread_s * * queue; - struct OSThread_s * tlnext; - u16 state; - u16 flags; - OSId id; - int fp; - struct __OSThreadContext context; -}; - -struct __OSEventState { - OSMesgQueue * messageQueue; - OSMesg message; -}; - -struct OSMesgQueue_s { - OSThread * mtqueue; - OSThread * fullqueue; - s32 validCount; - s32 first; - s32 msgCount; - OSMesg * msg; -}; - -typedef struct __OSThreadTail __OSThreadTail, *P__OSThreadTail; - -struct __OSThreadTail { - OSThread * next; - OSPri priority; -}; - -typedef struct guDLPrintCB guDLPrintCB, *PguDLPrintCB; - -struct guDLPrintCB { - int dataSize; - int dlType; - int flags; - u32 paddr; -}; - -typedef struct PositionalLight PositionalLight, *PPositionalLight; - -struct PositionalLight { - float col[3]; - float pos[3]; - float a1; - float a2; -}; - -typedef struct Image Image, *PImage; - -struct Image { - uchar * base; - int fmt; - int siz; - int xsize; - int ysize; - int lsize; - int addr; - int w; - int h; - int s; - int t; -}; - -#define GU_PARSE_GBI_TYPE 1 - -#define GU_PARSE_MEM_BLOCK 4 - -#define GU_PARSEGBI_NONEST 2 - -#define GU_BLINKRDP_HILITE 1 - -#define GU_PARSEGBI_ROWMAJOR 1 - -#define GU_PARSEGBI_ALLMTX 16 - -#define GU_PARSERDP_VERBOSE 1 - -#define GU_PARSE_RDP_TYPE 2 - -#define GU_BLINKRDP_EXTRACT 2 - -#define GU_PARSE_READY 3 - -#define GU_PARSERDP_PRHISTO 4 - -#define FILTER_CLAMP 1 - -#define GU_PARSEGBI_DUMPONLY 32 - -#define GU_PARSEGBI_SHOWDMA 8 - -#define GU_PARSERDP_DUMPONLY 32 - -#define GU_PARSEGBI_FLTMTX 4 - -#define GU_PARSE_ABI_TYPE 5 - -#define GU_PARSERDP_PRAREA 2 - -#define FILTER_WRAP 0 - -#define GU_PARSE_STRING_TYPE 6 - -typedef struct huft huft, *Phuft; - -typedef union _union_2 _union_2, *P_union_2; - -union _union_2 { - ush n; - struct huft * t; -}; - -struct huft { - uch e; - uch b; - union _union_2 v; -}; - -#define BMAX 16 - -#define N_MAX 288 - -typedef struct OSPifRam OSPifRam, *POSPifRam; - -struct OSPifRam { - u32 ramarray[15]; - u32 pifstatus; -}; - -typedef union __OSInodeUnit __OSInodeUnit, *P__OSInodeUnit; - -typedef struct _struct_195 _struct_195, *P_struct_195; - -struct _struct_195 { - u8 bank; - u8 page; -}; - -union __OSInodeUnit { - struct _struct_195 inode_t; - u16 ipage; -}; - -typedef struct __OSContEepromFormat __OSContEepromFormat, *P__OSContEepromFormat; - -struct __OSContEepromFormat { - u8 txsize; - u8 rxsize; - u8 cmd; - u8 address; - u8 data[8]; -}; - -typedef struct __OSContReadFormat __OSContReadFormat, *P__OSContReadFormat; - -typedef char s8; - -struct __OSContReadFormat { - u8 dummy; - u8 txsize; - u8 rxsize; - u8 cmd; - u16 button; - s8 stick_x; - s8 stick_y; -}; - -typedef struct __OSContRamReadFormat __OSContRamReadFormat, *P__OSContRamReadFormat; - -struct __OSContRamReadFormat { - u8 dummy; - u8 txsize; - u8 rxsize; - u8 cmd; - u16 address; - u8 data[32]; - u8 datacrc; -}; - -typedef struct __OSInode __OSInode, *P__OSInode; - -struct __OSInode { - union __OSInodeUnit inode_page[128]; -}; - -typedef struct __OSContRequesFormat __OSContRequesFormat, *P__OSContRequesFormat; - -struct __OSContRequesFormat { - u8 dummy; - u8 txsize; - u8 rxsize; - u8 cmd; - u8 typeh; - u8 typel; - u8 status; - u8 dummy1; -}; - -typedef struct __OSDir __OSDir, *P__OSDir; - -struct __OSDir { - u32 game_code; - u16 company_code; - union __OSInodeUnit start_page; - u8 status; - s8 reserved; - u16 data_sum; - char ext_name[4]; - char game_name[16]; -}; - -typedef struct __OSPackId __OSPackId, *P__OSPackId; - -struct __OSPackId { - u32 repaired; - u32 random; - u64 serial_mid; - u64 serial_low; - u16 deviceid; - u8 banks; - u8 version; - u16 checksum; - u16 inverted_checksum; -}; - -typedef struct __OSInodeCache __OSInodeCache, *P__OSInodeCache; - -struct __OSInodeCache { - struct __OSInode inode; - u8 bank; - u8 map[256]; -}; - -#define CONT_EEPROM_READ 4 - -#define CONT_SETCH 254 - -#define PFS_64K_RAM 2 - -#define PFS_INODE_DIST_MAP 256 - -#define PFS_FORCE 1 - -#define CONT_FORMAT 1 - -#define PFS_ID_1AREA 3 - -#define PFS_EOF 1 - -#define PFS_SECTOR_PER_BANK 32 - -#define EEPROM_WAIT 12000 - -#define PFS_INODE_SIZE_PER_PAGE 128 - -#define PFS_ID_2AREA 4 - -#define FORMAT_END 254 - -#define PFS_ID_3AREA 6 - -#define CONT_RESET 255 - -#define PFS_DELETE 1 - -#define PFS_PAGE_SIZE 256 - -#define PFS_SIZE_LOC 24 - -#define PFS_32K_RAM 1 - -#define CONT_READ 1 - -#define PFS_LABEL_AREA 7 - -#define CONT_RAM_READ 2 - -#define PIFRAMSIZE 16 - -#define PFS_PAGE_NOT_EXIST 2 - -#define CONT_EEPROM_WRITE 5 - -#define PFS_PAGE_NOT_USED 3 - -#define PFS_BANK_LAPPED_BY 8 - -#define CONT_RAM_WRITE 3 - -#define PFS_ID_PAGE 0 - -#define PFS_SECTOR_SIZE 4 - -#define CHANNEL_RESET 253 - -#define CONT_REQUEST 0 - -#define DEF_DIR_PAGES 2 - -#define PFS_ID_0AREA 1 - -#define PFS_WRITTEN 2 - -#define CON_ERR_MASK 192 - -#define RMON_STACKSIZE 4096 - -#define RMON_DBG_BUF_SIZE 2048 - -typedef struct Elf32_RegInfo_MIPS Elf32_RegInfo_MIPS, *PElf32_RegInfo_MIPS; - -struct Elf32_RegInfo_MIPS { - enum Elf32_GPRMask_MIPS ri_gprmask; - dword field_0x4[4]; - dword ri_gp_value; -}; - -typedef struct Elf32_Sym Elf32_Sym, *PElf32_Sym; - -struct Elf32_Sym { - dword st_name; - dword st_value; - dword st_size; - byte st_info; - byte st_other; - word st_shndx; -}; - -typedef struct Elf32_Shdr Elf32_Shdr, *PElf32_Shdr; - -typedef enum Elf_SectionHeaderType_MIPS { - =1879048203, - SHT_CHECKSUM=1879048184, - SHT_DYNAMIC=6, - SHT_DYNSYM=11, - SHT_FINI_ARRAY=15, - SHT_GNU_ATTRIBUTES=1879048181, - SHT_GNU_HASH=1879048182, - SHT_GNU_LIBLIST=1879048183, - SHT_GNU_verdef=1879048189, - SHT_GNU_verneed=1879048190, - SHT_GNU_versym=1879048191, - SHT_GROUP=17, - SHT_HASH=5, - SHT_INIT_ARRAY=14, - SHT_MIPS_ABIFLAGS=1879048234, - SHT_MIPS_AUXSYM=1879048214, - SHT_MIPS_CONFLICT=1879048194, - SHT_MIPS_CONTENT=1879048204, - SHT_MIPS_DEBUG=1879048197, - SHT_MIPS_DELTACLASS=1879048221, - SHT_MIPS_DELTADECL=1879048223, - SHT_MIPS_DELTAINST=1879048220, - SHT_MIPS_DELTASYM=1879048219, - SHT_MIPS_DENSE=1879048211, - SHT_MIPS_DWARF=1879048222, - SHT_MIPS_EH_REGION=1879048231, - SHT_MIPS_EVENTS=1879048225, - SHT_MIPS_EXTSYM=1879048210, - SHT_MIPS_FDESC=1879048209, - SHT_MIPS_GPTAB=1879048195, - SHT_MIPS_LIBLIST=1879048192, - SHT_MIPS_LINE=1879048217, - SHT_MIPS_LOCSTR=1879048216, - SHT_MIPS_LOCSYM=1879048213, - SHT_MIPS_MSYM=1879048193, - SHT_MIPS_OPTIONS=1879048205, - SHT_MIPS_OPTSYM=1879048215, - SHT_MIPS_PACKAGE=1879048199, - SHT_MIPS_PACKSYM=1879048200, - SHT_MIPS_PDESC=1879048212, - SHT_MIPS_PDR_EXCEPTION=1879048233, - SHT_MIPS_PIXIE=1879048227, - SHT_MIPS_REGINFO=1879048198, - SHT_MIPS_RELD=1879048201, - SHT_MIPS_RFDESC=1879048218, - SHT_MIPS_SHDR=1879048208, - SHT_MIPS_SYMBOL_LIB=1879048224, - SHT_MIPS_TRANSLATE=1879048226, - SHT_MIPS_UCODE=1879048196, - SHT_MIPS_WHIRL=1879048230, - SHT_MIPS_XLATE=1879048228, - SHT_MIPS_XLATE_DEBUG=1879048229, - SHT_MIPS_XLATE_OLD=1879048232, - SHT_NOBITS=8, - SHT_NOTE=7, - SHT_NULL=0, - SHT_PREINIT_ARRAY=16, - SHT_PROGBITS=1, - SHT_REL=9, - SHT_RELA=4, - SHT_SHLIB=10, - SHT_STRTAB=3, - SHT_SUNW_COMDAT=1879048187, - SHT_SUNW_move=1879048186, - SHT_SUNW_syminfo=1879048188, - SHT_SYMTAB=2, - SHT_SYMTAB_SHNDX=18 -} Elf_SectionHeaderType_MIPS; - -struct Elf32_Shdr { - dword sh_name; - enum Elf_SectionHeaderType_MIPS sh_type; - dword sh_flags; - dword sh_addr; - dword sh_offset; - dword sh_size; - dword sh_link; - dword sh_info; - dword sh_addralign; - dword sh_entsize; -}; - -typedef struct Elf32_Phdr Elf32_Phdr, *PElf32_Phdr; - -typedef enum Elf_ProgramHeaderType_MIPS { - PT_DYNAMIC=2, - PT_GNU_EH_FRAME=1685382480, - PT_GNU_RELRO=1685382482, - PT_GNU_STACK=1685382481, - PT_INTERP=3, - PT_LOAD=1, - PT_MIPS_ABIFLAGS=1879048195, - PT_MIPS_OPTIONS=1879048194, - PT_MIPS_REGINFO=1879048192, - PT_MIPS_RTPROC=1879048193, - PT_NOTE=4, - PT_NULL=0, - PT_PHDR=6, - PT_SHLIB=5, - PT_TLS=7 -} Elf_ProgramHeaderType_MIPS; - -struct Elf32_Phdr { - enum Elf_ProgramHeaderType_MIPS p_type; - dword p_offset; - dword p_vaddr; - dword p_paddr; - dword p_filesz; - dword p_memsz; - dword p_flags; - dword p_align; -}; - -typedef struct Elf32_Ehdr Elf32_Ehdr, *PElf32_Ehdr; - -struct Elf32_Ehdr { - byte e_ident_magic_num; - char e_ident_magic_str[3]; - byte e_ident_class; - byte e_ident_data; - byte e_ident_version; - byte e_ident_pad[9]; - word e_type; - word e_machine; - dword e_version; - dword e_entry; - dword e_phoff; - dword e_shoff; - dword e_flags; - word e_ehsize; - word e_phentsize; - word e_phnum; - word e_shentsize; - word e_shnum; - word e_shstrndx; -}; - -#define SAFE_EXP 1023 - -#define _DMASK 32752 - -#define _D3 3 - -#define _D2 2 - -#define _D1 1 - -#define _DNAN 65528 - -#define _DFRAC 15 - -#define _DMAX 2047 - -#define NAN 2 - -#define _DSIGN 32768 - -#define INF 1 - -#define FINITE -1 - -#define HUGE_EXP 1842 - -typedef char * voidp; - -typedef int file_t; - -#define RESERVED 192 - -#define seekable 0 - -#define PACKED 2 - -#define DIST_BUFSIZE 32768 - -#define DEFLATED 8 - -#define WARNING 2 - -#define ORIG_NAME 8 - -#define translate_eol 0 - -#define MAX_MATCH 258 - -#define CONTINUATION 2 - -#define MIN_MATCH 3 - -#define STORED 0 - -#define COMMENT 16 - -#define WSIZE 32768 - -#define MIN_LOOKAHEAD 262 - -#define EXTRA_FIELD 4 - -#define ASCII 1 - -#define INBUFSIZ 32768 - -#define OUTBUF_EXTRA 2048 - -#define OK 0 - -#define MAX_DIST 32506 - -#define ASCII_FLAG 1 - -#define MAX_METHODS 9 - -#define ENCRYPTED 32 - -#define LZHED 3 - -#define NO_FILE -1 - -#define OUTBUFSIZ 16384 - -#define COMPRESSED 1 - -#define INBUF_EXTRA 64 - -#define ERROR 1 - -#define UNKNOWN 65535 - -#define BINARY 0 - -typedef struct RamRomBuffer RamRomBuffer, *PRamRomBuffer; - -struct RamRomBuffer { - long type; - long length; - long magic; - char userdata[24573]; -}; - -#define RAMROM_BUF_SIZE 4096 - -#define RAMROM_FONTDATA_SIZE 1152 - -#define GAME_APP_DATA_READY 10 - -#define HOST_FAULT_ACK 15 - -#define RAMROM_MSG_ADDR 16752640 - -#define HOST_LOG_ACK 8 - -#define RAMROM_RMON_WRITE_ADDR 16764928 - -#define HOST_PIACCESS_REQ 1 - -#define RAMROM_FONTDATA_OFFSET 2928 - -#define RAMROM_PIF2BOOTSTRAP_OFFSET 4096 - -#define RAMROM_CLOCKRATE_MASK 4294967280 - -#define GAME_PRINTF_SEND 5 - -#define HOST_PROF_ACK 13 - -#define GAME_EXIT 16 - -#define HOST_PROF_REQ 11 - -#define RAMROM_BOOTADDR_OFFSET 8 - -#define HOST_DBG_DATA_ACK 4 - -#define GAME_LOG_SEND 7 - -#define HOST_DBG_CMD_READY 2 - -#define RAMROM_SIZE 16777216 - -#define RAMROM_APP_WRITE_ADDR 16756736 - -#define RAMROM_BOOTSTRAP_OFFSET 64 - -#define HOST_PRINTF_ACK 6 - -#define RAMROM_CLOCKRATE_OFFSET 4 - -#define RAMROM_MSG_SIZE 24576 - -#define RAMROM_RMON_READ_ADDR 16760832 - -#define GAME_FAULT_SEND 14 - -#define RAMROM_PRINTF_ADDR 16769024 - -#define GAME_PROF_SEND 12 - -#define HOST_APP_CMD_READY 9 - -#define RAMROM_LOG_ADDR 16773120 - -#define HOST_DATA_ACK 17 - -#define RAMROM_GAME_OFFSET 4096 - -#define GAME_DBG_DATA_SEND 3 - -#define RAMROM_APP_READ_ADDR 16752640 - -#define RAMROM_RELEASE_OFFSET 12 - - -// WARNING! conflicting data type names: /_CAPTURED_FROM_ge007.u.old.elf/__OSPackId - /CONTROLLER.H/__OSPackId - -typedef struct struct struct, *Pstruct; - -typedef struct OSViMode OSViMode, *POSViMode; - -typedef struct OSViCommonRegs OSViCommonRegs, *POSViCommonRegs; - -typedef struct OSViFieldRegs OSViFieldRegs, *POSViFieldRegs; - -struct struct { - u16 field_0x0; - u16 field_0x2; - void * field_0x4; - struct OSViMode * field_0x8; - u32 field_0xc; - OSMesgQueue * field_0x10; - OSMesg field_0x14; -}; - -struct OSViFieldRegs { - u32 origin; - u32 yScale; - u32 vStart; - u32 vBurst; - u32 vIntr; -}; - -struct OSViCommonRegs { - u32 ctrl; - u32 width; - u32 burst; - u32 vSync; - u32 hSync; - u32 leap; - u32 hStart; - u32 xScale; - u32 vCurrent; -}; - -struct OSViMode { - u8 type; - struct OSViCommonRegs comRegs; - struct OSViFieldRegs fldRegs[2]; -}; - -typedef struct PVoice PVoice, *PPVoice; - -typedef struct ALLink_s ALLink_s, *PALLink_s; - -typedef struct ALLink_s ALLink; - -typedef struct ALVoice_s ALVoice_s, *PALVoice_s; - -typedef struct ALFilter_s ALFilter_s, *PALFilter_s; - -typedef struct ALADPCMFilter ALADPCMFilter, *PALADPCMFilter; - -typedef struct ALResampler ALResampler, *PALResampler; - -typedef struct ALEnvMixer_s ALEnvMixer_s, *PALEnvMixer_s; - -typedef struct PVoice_s PVoice_s, *PPVoice_s; - -typedef struct ALWaveTable_s ALWaveTable_s, *PALWaveTable_s; - -typedef struct ALWaveTable_s ALWaveTable; - -typedef short ADPCM_STATE[16]; - -typedef struct $039A3EC5794421300707C77A911A1BDF $039A3EC5794421300707C77A911A1BDF, *P$039A3EC5794421300707C77A911A1BDF; - -typedef struct $039A3EC5794421300707C77A911A1BDF ALADPCMloop; - -typedef s32 (* ALDMAproc)(s32, s32, void *); - - -// WARNING! conflicting data type names: /_CAPTURED_FROM_ge007.u.old.elf/ALFilter_s - /libaudio.h/ALFilter_s - -typedef short RESAMPLE_STATE[16]; - -typedef struct ALParam_s ALParam_s, *PALParam_s; - -typedef short ENVMIX_STATE[40]; - -typedef union _union_109 _union_109, *P_union_109; - -typedef struct ALADPCMWaveInfo ALADPCMWaveInfo, *PALADPCMWaveInfo; - -typedef struct ALRAWWaveInfo ALRAWWaveInfo, *PALRAWWaveInfo; - - -// WARNING! conflicting data type names: /libaudio.h/ALADPCMloop - /GE Current Master.h/ALADPCMloop - -typedef struct ALADPCMBook ALADPCMBook, *PALADPCMBook; - -typedef struct ALRawLoop ALRawLoop, *PALRawLoop; - -struct ALLink_s { - struct ALLink_s * next; - struct ALLink_s * prev; -}; - -struct ALVoice_s { - ALLink node; - struct PVoice_s * pvoice; - ALWaveTable * table; - void * clientPrivate; - s16 state; - s16 priority; - s16 fxBus; - s16 unityPitch; -}; - -struct ALFilter_s { -}; - -struct $039A3EC5794421300707C77A911A1BDF { -}; - -struct ALADPCMFilter { - struct ALFilter_s filter; - ADPCM_STATE state[AL_MAX_ADPCM_STATES]; - ALADPCMloop loop; - struct ALWaveTable_s * table; - int bookSize; - ALDMAproc dma; - int current; - int sample; - int lastsam; - int first; - int memin; - int dramstart; -}; - -struct ALRAWWaveInfo { - struct ALRawLoop * loop; -}; - -struct PVoice_s { -}; - -struct ALEnvMixer_s { - struct ALFilter_s filter; - ENVMIX_STATE state; - short pan; - short volume; - short cvolL; - short cvolR; - short dryamt; - short wetamt; - ushort lratl; - short lratm; - short ltgt; - ushort rratl; - short rratm; - short rtgt; - int delta; - int segEnd; - int first; - struct ALParam_s * ctrlList; - struct ALParam_s * ctrlTail; - struct ALFilter_s * * sources; - int motion; -}; - -struct ALParam_s { -}; - -struct ALResampler { - struct ALFilter_s filter; - RESAMPLE_STATE state; - float ratio; - int upitch; - float delta; - int first; - struct ALParam_s * ctrlList; - struct ALParam_s * ctrlTail; -}; - -struct PVoice { - ALLink node; - struct ALVoice_s * vvoice; - void * rspCode; - struct ALFilter_s * sourceKnob; - struct ALFilter_s * channelKnob; - struct ALADPCMFilter decoder; - struct ALResampler resampler; - struct ALEnvMixer_s envmixer; -}; - -struct ALADPCMBook { - s32 order; - s32 npredictors; - s16 book[1]; -}; - -struct ALADPCMWaveInfo { - struct ALADPCMloop * loop; - struct ALADPCMBook * book; -}; - -union _union_109 { - struct ALADPCMWaveInfo adpcmWave; - struct ALRAWWaveInfo rawWave; -}; - -struct ALWaveTable_s { - u8 * base; - s32 len; - u8 type; - u8 flags; - union _union_109 waveInfo; -}; - -struct ALRawLoop { - u32 start; - u32 end; - u32 count; -}; - -typedef int * ALSetParam; - -typedef struct __OSViContext __OSViContext, *P__OSViContext; - -typedef struct __OSViScale __OSViScale, *P__OSViScale; - -struct __OSViScale { - f32 factor; - u16 offset; - undefined field_0x6; - undefined field_0x7; - undefined field_0x8; - undefined field_0x9; -}; - -struct __OSViContext { - u16 state; - u16 retraceCount; - void * framep; - struct OSViMode * modep; - u32 control; - OSMesgQueue * msgq; - OSMesg msg; - struct __OSViScale x; - struct __OSViScale y; -}; - -typedef struct debug_handler_entry debug_handler_entry, *Pdebug_handler_entry; - -struct debug_handler_entry { - void * stackpointer; - string * name; -}; - -typedef enum BOOL { - FALSE=0, - TRUE=1 -} BOOL; - -typedef enum guard_action_type { - None=0, - dying=4, - fade_away=5, - freeze=2, - freeze_anim=17, - gettingshot=6, - limping=7, - look_around=18, - moving=15, - run_roll_fire=10, - sidehop=12, - siderun=13, - sidestep=11, - standing=1, - standstill_fire=8, - surrendering=16, - swattingflies=3, - throw_grenade=20, - trigger_alarm=19, - walk_fire=9, - walk_path=14 -} guard_action_type; - -typedef union Acmd Acmd, *PAcmd; - -typedef union Acmd ALCmdHandler; - -typedef struct Awords Awords, *PAwords; - -typedef struct Aadpcm Aadpcm, *PAadpcm; - -typedef struct Apolef Apolef, *PApolef; - -typedef struct Aclearbuff Aclearbuff, *PAclearbuff; - -typedef struct Aenvelope Aenvelope, *PAenvelope; - -typedef struct Ainterleave Ainterleave, *PAinterleave; - -typedef struct Aloadbuff Aloadbuff, *PAloadbuff; - -typedef struct Aenvmixer Aenvmixer, *PAenvmixer; - -typedef struct Aresample Aresample, *PAresample; - -typedef struct Areverb Areverb, *PAreverb; - -typedef struct Asavebuff Asavebuff, *PAsavebuff; - -typedef struct Asegment Asegment, *PAsegment; - -typedef struct Asetbuff Asetbuff, *PAsetbuff; - -typedef struct Asetvol Asetvol, *PAsetvol; - -typedef struct Admemmove Admemmove, *PAdmemmove; - -typedef struct Aloadadpcm Aloadadpcm, *PAloadadpcm; - -typedef struct Amixer Amixer, *PAmixer; - -typedef struct Asetloop Asetloop, *PAsetloop; - -typedef union anon__struct_76_bitfield_1 anon__struct_76_bitfield_1, *Panon__struct_76_bitfield_1; - -typedef union anon__struct_77_bitfield_1 anon__struct_77_bitfield_1, *Panon__struct_77_bitfield_1; - -typedef union anon__struct_79_bitfield_1 anon__struct_79_bitfield_1, *Panon__struct_79_bitfield_1; - -typedef union anon__struct_79_bitfield_2 anon__struct_79_bitfield_2, *Panon__struct_79_bitfield_2; - -typedef union anon__struct_78_bitfield_1 anon__struct_78_bitfield_1, *Panon__struct_78_bitfield_1; - -typedef union anon__struct_80_bitfield_1 anon__struct_80_bitfield_1, *Panon__struct_80_bitfield_1; - -typedef union anon__struct_80_bitfield_2 anon__struct_80_bitfield_2, *Panon__struct_80_bitfield_2; - -typedef union anon__struct_81_bitfield_1 anon__struct_81_bitfield_1, *Panon__struct_81_bitfield_1; - -typedef union anon__struct_82_bitfield_1 anon__struct_82_bitfield_1, *Panon__struct_82_bitfield_1; - -typedef union anon__struct_85_bitfield_1 anon__struct_85_bitfield_1, *Panon__struct_85_bitfield_1; - -typedef union anon__struct_86_bitfield_1 anon__struct_86_bitfield_1, *Panon__struct_86_bitfield_1; - -typedef union anon__struct_87_bitfield_1 anon__struct_87_bitfield_1, *Panon__struct_87_bitfield_1; - -typedef union anon__struct_88_bitfield_1 anon__struct_88_bitfield_1, *Panon__struct_88_bitfield_1; - -typedef union anon__struct_88_bitfield_2 anon__struct_88_bitfield_2, *Panon__struct_88_bitfield_2; - -typedef union anon__struct_89_bitfield_1 anon__struct_89_bitfield_1, *Panon__struct_89_bitfield_1; - -typedef union anon__struct_89_bitfield_2 anon__struct_89_bitfield_2, *Panon__struct_89_bitfield_2; - -typedef union anon__struct_90_bitfield_1 anon__struct_90_bitfield_1, *Panon__struct_90_bitfield_1; - -typedef union anon__struct_90_bitfield_2 anon__struct_90_bitfield_2, *Panon__struct_90_bitfield_2; - -typedef union anon__struct_91_bitfield_1 anon__struct_91_bitfield_1, *Panon__struct_91_bitfield_1; - -typedef union anon__struct_91_bitfield_2 anon__struct_91_bitfield_2, *Panon__struct_91_bitfield_2; - -typedef union anon__struct_92_bitfield_1 anon__struct_92_bitfield_1, *Panon__struct_92_bitfield_1; - -typedef union anon__struct_83_bitfield_1 anon__struct_83_bitfield_1, *Panon__struct_83_bitfield_1; - -typedef union anon__struct_83_bitfield_2 anon__struct_83_bitfield_2, *Panon__struct_83_bitfield_2; - -typedef union anon__struct_93_bitfield_1 anon__struct_93_bitfield_1, *Panon__struct_93_bitfield_1; - -union anon__struct_78_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint pad1:16; // : bits 16-31 -}; - -union anon__struct_88_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:24; // : bits 8-31 -}; - -union anon__struct_88_bitfield_2 { - uint pad2:2; // : bits 0-1 - uint number:4; // : bits 2-5 - uint base:24; // : bits 6-29 -}; - -struct Asegment { - union anon__struct_88_bitfield_1 field_0x0; - union anon__struct_88_bitfield_2 field_0x4; -}; - -union anon__struct_85_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint pitch:16; // : bits 16-31 -}; - -union anon__struct_86_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint pad1:16; // : bits 16-31 -}; - -struct Areverb { - union anon__struct_86_bitfield_1 field_0x0; - uint addr; -}; - -union anon__struct_81_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:24; // : bits 8-31 -}; - -struct Aloadbuff { - union anon__struct_81_bitfield_1 field_0x0; - uint addr; -}; - -union anon__struct_79_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:8; // : bits 8-15 - uint dmem:16; // : bits 16-31 -}; - -union anon__struct_79_bitfield_2 { - uint pad2:16; // : bits 0-15 - uint count:16; // : bits 16-31 -}; - -struct Aclearbuff { - union anon__struct_79_bitfield_1 field_0x0; - union anon__struct_79_bitfield_2 field_0x4; -}; - -union anon__struct_92_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:8; // : bits 8-15 - uint count:16; // : bits 16-31 -}; - -struct Aresample { - union anon__struct_85_bitfield_1 field_0x0; - uint addr; -}; - -struct Aloadadpcm { - union anon__struct_92_bitfield_1 field_0x0; - uint addr; -}; - -union anon__struct_82_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint pad1:16; // : bits 16-31 -}; - -union anon__struct_93_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:8; // : bits 8-15 - uint pad2:16; // : bits 16-31 -}; - -struct Asetloop { - union anon__struct_93_bitfield_1 field_0x0; - uint addr; -}; - -struct Awords { - uint w0; - uint w1; -}; - -union anon__struct_89_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint dmemin:16; // : bits 16-31 -}; - -union anon__struct_77_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint gain:16; // : bits 16-31 -}; - -union anon__struct_87_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:24; // : bits 8-31 -}; - -union anon__struct_90_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint vol:16; // : bits 16-31 -}; - -union anon__struct_90_bitfield_2 { - uint voltgt:16; // : bits 0-15 - uint volrate:16; // : bits 16-31 -}; - -union anon__struct_80_bitfield_2 { - uint inL:16; // : bits 0-15 - uint inR:16; // : bits 16-31 -}; - -union anon__struct_80_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:8; // : bits 8-15 - uint pad2:16; // : bits 16-31 -}; - -union anon__struct_91_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint pad1:8; // : bits 8-15 - uint dmemin:16; // : bits 16-31 -}; - -struct Ainterleave { - union anon__struct_80_bitfield_1 field_0x0; - union anon__struct_80_bitfield_2 field_0x4; -}; - -union anon__struct_91_bitfield_2 { - uint dmemout:16; // : bits 0-15 - uint count:16; // : bits 16-31 -}; - -struct Apolef { - union anon__struct_77_bitfield_1 field_0x0; - uint addr; -}; - -union anon__struct_83_bitfield_2 { - uint dmemi:16; // : bits 0-15 - uint dmemo:16; // : bits 16-31 -}; - -union anon__struct_83_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint gain:16; // : bits 16-31 -}; - -struct Amixer { - union anon__struct_83_bitfield_1 field_0x0; - union anon__struct_83_bitfield_2 field_0x4; -}; - -struct Admemmove { - union anon__struct_91_bitfield_1 field_0x0; - union anon__struct_91_bitfield_2 field_0x4; -}; - -struct Aenvelope { - union anon__struct_78_bitfield_1 field_0x0; - uint addr; -}; - -struct Aenvmixer { - union anon__struct_82_bitfield_1 field_0x0; - uint addr; -}; - -union anon__struct_76_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint flags:8; // : bits 8-15 - uint gain:16; // : bits 16-31 -}; - -struct Aadpcm { - union anon__struct_76_bitfield_1 field_0x0; - uint addr; -}; - -struct Asavebuff { - union anon__struct_87_bitfield_1 field_0x0; - uint addr; -}; - -struct Asetvol { - union anon__struct_90_bitfield_1 field_0x0; - union anon__struct_90_bitfield_2 field_0x4; -}; - -union anon__struct_89_bitfield_2 { - uint dmemout:16; // : bits 0-15 - uint count:16; // : bits 16-31 -}; - -struct Asetbuff { - union anon__struct_89_bitfield_1 field_0x0; - union anon__struct_89_bitfield_2 field_0x4; -}; - -union Acmd { - struct Awords words; - struct Aadpcm adpcm; - struct Apolef polef; - struct Aclearbuff clearbuff; - struct Aenvelope envelope; - struct Ainterleave interleave; - struct Aloadbuff loadbuff; - struct Aenvmixer envmixer; - struct Aresample resample; - struct Areverb reverb; - struct Asavebuff savebuff; - struct Asegment segment; - struct Asetbuff setbuff; - struct Asetvol setvol; - struct Admemmove dmemmove; - struct Aloadadpcm loadadpcm; - struct Amixer mixer; - struct Asetloop setloop; - longlong force_union_align; -}; - -typedef enum enum_179 { - GT_ALPHACOMPARE=1, - GT_ALPHADITHER=4, - GT_CLEAR=0, - GT_COMBKEY=6, - GT_CYCLETYPE=13, - GT_PIPELINE=14, - GT_RENDERMODE=3, - GT_RGBDITHER=5, - GT_TEXTCONV=7, - GT_TEXTDETAIL=11, - GT_TEXTFILT=8, - GT_TEXTLOD=10, - GT_TEXTLUT=9, - GT_TEXTPERSP=12, - GT_ZSRCSEL=2 -} enum_179; - -typedef union gtVtxOut gtVtxOut, *PgtVtxOut; - -typedef struct gtVtxOut_t gtVtxOut_t, *PgtVtxOut_t; - -struct gtVtxOut_t { - short xscrn; - short yscrn; - int zscrn; - short s; - short t; - u8 r; - u8 g; - u8 b; - u8 a; -}; - -union gtVtxOut { - struct gtVtxOut_t v; - longlong force_structure_alignment; -}; - -typedef enum enum_179 gtStateOthermode_t; - -typedef union gtGlobState gtGlobState, *PgtGlobState; - -typedef struct gtGlobState_t gtGlobState_t, *PgtGlobState_t; - -typedef union Vp Vp, *PVp; - -typedef struct Vp_t Vp_t, *PVp_t; - -struct Vp_t { - short vscale[4]; - short vtrans[4]; -}; - -union Vp { - struct Vp_t vp; - longlong force_structure_alignment; -}; - -struct gtGlobState_t { - u16 perspNorm; - u16 pad0; - u32 flag; - union Gfx rdpOthermode; - u32 segBases[16]; - union Vp viewport; - union Gfx * rdpCmds; -}; - -union gtGlobState { - struct gtGlobState_t sp; - longlong force_structure_alignment; -}; - -typedef union gtState gtState, *PgtState; - -typedef struct gtState_t gtState_t, *PgtState_t; - -typedef union Mtx Mtx, *PMtx; - -typedef long Mtx_t[4][4]; - -union Mtx { - Mtx_t m; - longlong force_structure_alignment; -}; - -struct gtState_t { - u32 renderState; - u32 textureState; - u8 vtxCount; - u8 vtxV0; - u8 triCount; - u8 flag; - union Gfx * rdpCmds; - union Gfx rdpOthermode; - union Mtx transform; -}; - -union gtState { - struct gtState_t sp; - longlong force_structure_alignment; -}; - -typedef struct gtTriN gtTriN, *PgtTriN; - -struct gtTriN { - u8 v0; - u8 v1; - u8 v2; - u8 flag; -}; - -typedef struct gtStateL_t gtStateL_t, *PgtStateL_t; - -struct gtStateL_t { - u32 renderState; - u32 textureState; - u8 vtxCount; - u8 vtxV0; - u8 triCount; - u8 flag; - union Gfx * rdpCmds; - union Gfx rdpOthermode; -}; - -typedef struct gtGfx_t gtGfx_t, *PgtGfx_t; - -typedef union Vtx Vtx, *PVtx; - -typedef struct Vtx_t Vtx_t, *PVtx_t; - -typedef struct Vtx_tn Vtx_tn, *PVtx_tn; - -struct Vtx_tn { - short ob[3]; - ushort flag; - short tc[2]; - char n[3]; - uchar a; -}; - -struct Vtx_t { - short ob[3]; - ushort flag; - short tc[2]; - uchar cn[4]; -}; - -union Vtx { - struct Vtx_t v; - struct Vtx_tn n; - longlong force_structure_alignment; -}; - -struct gtGfx_t { - union gtGlobState * gstatep; - union gtState * statep; - union Vtx * vtxp; - struct gtTriN * trip; -}; - -typedef union gtGfx gtGfx, *PgtGfx; - -union gtGfx { - struct gtGfx_t obj; - longlong force_structure_alignment; -}; - -typedef union gtStateL gtStateL, *PgtStateL; - -union gtStateL { - struct gtStateL_t sp; - longlong force_structure_alignment; -}; - -#define GT_CULL_BACK 8192 - -#define GT_ZBUFFER 1 - -#define GT_DUMPTURBO_HANGAFTER 64 - -#define GT_FLAG_NO_XFM 2 - -#define GT_FLAG_NOMTX 1 - -#define GT_TEXTURE 2 - -#define GT_DUMPTURBO_NOTEXTURES 128 - -#define GT_FLAG_XFM_ONLY 4 - -#define GT_SHADING_SMOOTH 512 - -typedef struct astruct astruct, *Pastruct; - -struct astruct { - undefined field_0x0; - undefined field_0x1; - undefined field_0x2; - undefined field_0x3; - undefined1 txtClipW; // Created by retype action - undefined field_0x5; - undefined1 txtClipH; // Created by retype action - undefined field_0x7; - undefined field_0x8; - undefined field_0x9; - undefined field_0xa; - undefined field_0xb; - undefined field_0xc; - undefined field_0xd; - undefined field_0xe; - undefined field_0xf; - undefined1 aspect; // Created by retype action - undefined field_0x11; - undefined field_0x12; - undefined field_0x13; - undefined field_0x14; - undefined field_0x15; - undefined field_0x16; - undefined field_0x17; - undefined field_0x18; - undefined field_0x19; - undefined field_0x1a; - undefined field_0x1b; - undefined1 width; // Created by retype action - undefined field_0x1d; - undefined1 height; // Created by retype action - undefined field_0x1f; - undefined1 ulx; // Created by retype action - undefined field_0x21; - undefined1 uly; // Created by retype action - undefined field_0x23; - int field_0x24; -}; - -typedef struct astruct_1 astruct_1, *Pastruct_1; - -struct astruct_1 { - undefined field_0x0; - undefined field_0x1; - undefined field_0x2; - undefined field_0x3; - undefined field_0x4; - undefined field_0x5; - undefined field_0x6; - undefined field_0x7; - undefined field_0x8; - undefined field_0x9; - undefined field_0xa; - undefined field_0xb; - undefined field_0xc; - undefined field_0xd; - undefined field_0xe; - undefined field_0xf; - undefined field_0x10; - undefined field_0x11; - undefined field_0x12; - undefined field_0x13; - undefined field_0x14; - undefined field_0x15; - undefined field_0x16; - undefined field_0x17; - undefined field_0x18; - undefined field_0x19; - undefined field_0x1a; - undefined field_0x1b; - undefined field_0x1c; - undefined field_0x1d; - undefined field_0x1e; - undefined field_0x1f; - undefined field_0x20; - undefined field_0x21; - undefined field_0x22; - undefined field_0x23; - undefined field_0x24; - undefined field_0x25; - undefined field_0x26; - undefined field_0x27; - undefined field_0x28; - undefined field_0x29; - undefined field_0x2a; - undefined field_0x2b; - undefined field_0x2c; - undefined field_0x2d; - undefined field_0x2e; - undefined field_0x2f; - undefined field_0x30; - undefined field_0x31; - undefined field_0x32; - undefined field_0x33; - undefined field_0x34; - undefined field_0x35; - undefined field_0x36; - undefined field_0x37; - undefined field_0x38; - undefined field_0x39; - undefined field_0x3a; - undefined field_0x3b; - undefined field_0x3c; - undefined field_0x3d; - undefined field_0x3e; - undefined field_0x3f; - undefined field_0x40; - undefined field_0x41; - undefined field_0x42; - undefined field_0x43; - undefined field_0x44; - undefined field_0x45; - undefined field_0x46; - undefined field_0x47; - undefined field_0x48; - undefined field_0x49; - undefined field_0x4a; - undefined field_0x4b; - undefined field_0x4c; - undefined field_0x4d; - undefined field_0x4e; - undefined field_0x4f; - undefined field_0x50; - undefined field_0x51; - undefined field_0x52; - undefined field_0x53; - undefined field_0x54; - undefined field_0x55; - undefined field_0x56; - undefined field_0x57; - undefined field_0x58; - undefined field_0x59; - undefined field_0x5a; - undefined field_0x5b; - undefined field_0x5c; - undefined field_0x5d; - undefined field_0x5e; - undefined field_0x5f; - undefined field_0x60; - undefined field_0x61; - undefined field_0x62; - undefined field_0x63; - undefined field_0x64; - undefined field_0x65; - undefined field_0x66; - undefined field_0x67; - undefined field_0x68; - undefined field_0x69; - undefined field_0x6a; - undefined field_0x6b; - undefined field_0x6c; - undefined field_0x6d; - undefined field_0x6e; - undefined field_0x6f; - undefined field_0x70; - undefined field_0x71; - undefined field_0x72; - undefined field_0x73; - undefined field_0x74; - undefined field_0x75; - undefined field_0x76; - undefined field_0x77; - undefined field_0x78; - undefined field_0x79; - undefined field_0x7a; - undefined field_0x7b; - undefined field_0x7c; - undefined field_0x7d; - undefined field_0x7e; - undefined field_0x7f; - undefined field_0x80; - undefined field_0x81; - undefined field_0x82; - undefined field_0x83; - undefined field_0x84; - undefined field_0x85; - undefined field_0x86; - undefined field_0x87; - undefined field_0x88; - undefined field_0x89; - undefined field_0x8a; - undefined field_0x8b; - undefined field_0x8c; - undefined field_0x8d; - undefined field_0x8e; - undefined field_0x8f; - undefined field_0x90; - undefined field_0x91; - undefined field_0x92; - undefined field_0x93; - undefined field_0x94; - undefined field_0x95; - undefined field_0x96; - undefined field_0x97; - undefined field_0x98; - undefined field_0x99; - undefined field_0x9a; - undefined field_0x9b; - undefined field_0x9c; - undefined field_0x9d; - undefined field_0x9e; - undefined field_0x9f; - undefined field_0xa0; - undefined field_0xa1; - undefined field_0xa2; - undefined field_0xa3; - undefined field_0xa4; - undefined field_0xa5; - undefined field_0xa6; - undefined field_0xa7; - undefined field_0xa8; - undefined field_0xa9; - undefined field_0xaa; - undefined field_0xab; - undefined field_0xac; - undefined field_0xad; - undefined field_0xae; - undefined field_0xaf; - undefined field_0xb0; - undefined field_0xb1; - undefined field_0xb2; - undefined field_0xb3; - undefined field_0xb4; - undefined field_0xb5; - undefined field_0xb6; - undefined field_0xb7; - undefined field_0xb8; - undefined field_0xb9; - undefined field_0xba; - undefined field_0xbb; - undefined field_0xbc; - undefined field_0xbd; - undefined field_0xbe; - undefined field_0xbf; - undefined field_0xc0; - undefined field_0xc1; - undefined field_0xc2; - undefined field_0xc3; - undefined field_0xc4; - undefined field_0xc5; - undefined field_0xc6; - undefined field_0xc7; - undefined field_0xc8; - undefined field_0xc9; - undefined field_0xca; - undefined field_0xcb; - undefined field_0xcc; - undefined field_0xcd; - undefined field_0xce; - undefined field_0xcf; - undefined field_0xd0; - undefined field_0xd1; - undefined field_0xd2; - undefined field_0xd3; - undefined field_0xd4; - undefined field_0xd5; - undefined field_0xd6; - undefined field_0xd7; - undefined field_0xd8; - undefined field_0xd9; - undefined field_0xda; - undefined field_0xdb; - undefined field_0xdc; - undefined field_0xdd; - undefined field_0xde; - undefined field_0xdf; - undefined field_0xe0; - undefined field_0xe1; - undefined field_0xe2; - undefined field_0xe3; - undefined field_0xe4; - undefined field_0xe5; - undefined field_0xe6; - undefined field_0xe7; - undefined field_0xe8; - undefined field_0xe9; - undefined field_0xea; - undefined field_0xeb; - undefined field_0xec; - undefined field_0xed; - undefined field_0xee; - undefined field_0xef; - undefined field_0xf0; - undefined field_0xf1; - undefined field_0xf2; - undefined field_0xf3; - undefined field_0xf4; - undefined field_0xf5; - undefined field_0xf6; - undefined field_0xf7; - undefined field_0xf8; - undefined field_0xf9; - undefined field_0xfa; - undefined field_0xfb; - undefined field_0xfc; - undefined field_0xfd; - undefined field_0xfe; - undefined field_0xff; - undefined field_0x100; - undefined field_0x101; - undefined field_0x102; - undefined field_0x103; - undefined field_0x104; - undefined field_0x105; - undefined field_0x106; - undefined field_0x107; - undefined field_0x108; - undefined field_0x109; - undefined field_0x10a; - undefined field_0x10b; - undefined field_0x10c; - undefined field_0x10d; - undefined field_0x10e; - undefined field_0x10f; - undefined field_0x110; - undefined field_0x111; - undefined field_0x112; - undefined field_0x113; - undefined field_0x114; - undefined field_0x115; - undefined field_0x116; - undefined field_0x117; - undefined field_0x118; - undefined field_0x119; - undefined field_0x11a; - undefined field_0x11b; - undefined field_0x11c; - undefined field_0x11d; - undefined field_0x11e; - undefined field_0x11f; - undefined field_0x120; - undefined field_0x121; - undefined field_0x122; - undefined field_0x123; - undefined field_0x124; - undefined field_0x125; - undefined field_0x126; - undefined field_0x127; - undefined field_0x128; - undefined field_0x129; - undefined field_0x12a; - undefined field_0x12b; - undefined field_0x12c; - undefined field_0x12d; - undefined field_0x12e; - undefined field_0x12f; - undefined field_0x130; - undefined field_0x131; - undefined field_0x132; - undefined field_0x133; - undefined field_0x134; - undefined field_0x135; - undefined field_0x136; - undefined field_0x137; - undefined field_0x138; - undefined field_0x139; - undefined field_0x13a; - undefined field_0x13b; - undefined field_0x13c; - undefined field_0x13d; - undefined field_0x13e; - undefined field_0x13f; - undefined field_0x140; - undefined field_0x141; - undefined field_0x142; - undefined field_0x143; - undefined field_0x144; - undefined field_0x145; - undefined field_0x146; - undefined field_0x147; - undefined field_0x148; - undefined field_0x149; - undefined field_0x14a; - undefined field_0x14b; - undefined field_0x14c; - undefined field_0x14d; - undefined field_0x14e; - undefined field_0x14f; - undefined field_0x150; - undefined field_0x151; - undefined field_0x152; - undefined field_0x153; - undefined field_0x154; - undefined field_0x155; - undefined field_0x156; - undefined field_0x157; - undefined field_0x158; - undefined field_0x159; - undefined field_0x15a; - undefined field_0x15b; - undefined field_0x15c; - undefined field_0x15d; - undefined field_0x15e; - undefined field_0x15f; - undefined field_0x160; - undefined field_0x161; - undefined field_0x162; - undefined field_0x163; - undefined field_0x164; - undefined field_0x165; - undefined field_0x166; - undefined field_0x167; - undefined field_0x168; - undefined field_0x169; - undefined field_0x16a; - undefined field_0x16b; - undefined field_0x16c; - undefined field_0x16d; - undefined field_0x16e; - undefined field_0x16f; - undefined field_0x170; - undefined field_0x171; - undefined field_0x172; - undefined field_0x173; - undefined field_0x174; - undefined field_0x175; - undefined field_0x176; - undefined field_0x177; - undefined field_0x178; - undefined field_0x179; - undefined field_0x17a; - undefined field_0x17b; - undefined field_0x17c; - undefined field_0x17d; - undefined field_0x17e; - undefined field_0x17f; - undefined field_0x180; - undefined field_0x181; - undefined field_0x182; - undefined field_0x183; - undefined field_0x184; - undefined field_0x185; - undefined field_0x186; - undefined field_0x187; - undefined field_0x188; - undefined field_0x189; - undefined field_0x18a; - undefined field_0x18b; - undefined field_0x18c; - undefined field_0x18d; - undefined field_0x18e; - undefined field_0x18f; - undefined field_0x190; - undefined field_0x191; - undefined field_0x192; - undefined field_0x193; - undefined field_0x194; - undefined field_0x195; - undefined field_0x196; - undefined field_0x197; - undefined field_0x198; - undefined field_0x199; - undefined field_0x19a; - undefined field_0x19b; - undefined field_0x19c; - undefined field_0x19d; - undefined field_0x19e; - undefined field_0x19f; - undefined field_0x1a0; - undefined field_0x1a1; - undefined field_0x1a2; - undefined field_0x1a3; - undefined field_0x1a4; - undefined field_0x1a5; - undefined field_0x1a6; - undefined field_0x1a7; - undefined field_0x1a8; - undefined field_0x1a9; - undefined field_0x1aa; - undefined field_0x1ab; - undefined field_0x1ac; - undefined field_0x1ad; - undefined field_0x1ae; - undefined field_0x1af; - undefined field_0x1b0; - undefined field_0x1b1; - undefined field_0x1b2; - undefined field_0x1b3; - undefined field_0x1b4; - undefined field_0x1b5; - undefined field_0x1b6; - undefined field_0x1b7; - undefined field_0x1b8; - undefined field_0x1b9; - undefined field_0x1ba; - undefined field_0x1bb; - undefined field_0x1bc; - undefined field_0x1bd; - undefined field_0x1be; - undefined field_0x1bf; - undefined field_0x1c0; - undefined field_0x1c1; - undefined field_0x1c2; - undefined field_0x1c3; - undefined field_0x1c4; - undefined field_0x1c5; - undefined field_0x1c6; - undefined field_0x1c7; - undefined field_0x1c8; - undefined field_0x1c9; - undefined field_0x1ca; - undefined field_0x1cb; - undefined field_0x1cc; - undefined field_0x1cd; - undefined field_0x1ce; - undefined field_0x1cf; - undefined field_0x1d0; - undefined field_0x1d1; - undefined field_0x1d2; - undefined field_0x1d3; - undefined field_0x1d4; - undefined field_0x1d5; - undefined field_0x1d6; - undefined field_0x1d7; - undefined field_0x1d8; - undefined field_0x1d9; - undefined field_0x1da; - undefined field_0x1db; - undefined field_0x1dc; - undefined field_0x1dd; - undefined field_0x1de; - undefined field_0x1df; - undefined field_0x1e0; - undefined field_0x1e1; - undefined field_0x1e2; - undefined field_0x1e3; - undefined field_0x1e4; - undefined field_0x1e5; - undefined field_0x1e6; - undefined field_0x1e7; - undefined field_0x1e8; - undefined field_0x1e9; - undefined field_0x1ea; - undefined field_0x1eb; - undefined field_0x1ec; - undefined field_0x1ed; - undefined field_0x1ee; - undefined field_0x1ef; - undefined field_0x1f0; - undefined field_0x1f1; - undefined field_0x1f2; - undefined field_0x1f3; - undefined field_0x1f4; - undefined field_0x1f5; - undefined field_0x1f6; - undefined field_0x1f7; - undefined field_0x1f8; - undefined field_0x1f9; - undefined field_0x1fa; - undefined field_0x1fb; - undefined field_0x1fc; - undefined field_0x1fd; - undefined field_0x1fe; - undefined field_0x1ff; - undefined field_0x200; - undefined field_0x201; - undefined field_0x202; - undefined field_0x203; - undefined field_0x204; - undefined field_0x205; - undefined field_0x206; - undefined field_0x207; - undefined field_0x208; - undefined field_0x209; - undefined field_0x20a; - undefined field_0x20b; - undefined field_0x20c; - undefined field_0x20d; - undefined field_0x20e; - undefined field_0x20f; - undefined field_0x210; - undefined field_0x211; - undefined field_0x212; - undefined field_0x213; - undefined field_0x214; - undefined field_0x215; - undefined field_0x216; - undefined field_0x217; - undefined field_0x218; - undefined field_0x219; - undefined field_0x21a; - undefined field_0x21b; - undefined field_0x21c; - undefined field_0x21d; - undefined field_0x21e; - undefined field_0x21f; - undefined field_0x220; - undefined field_0x221; - undefined field_0x222; - undefined field_0x223; - undefined field_0x224; - undefined field_0x225; - undefined field_0x226; - undefined field_0x227; - undefined field_0x228; - undefined field_0x229; - undefined field_0x22a; - undefined field_0x22b; - undefined field_0x22c; - undefined field_0x22d; - undefined field_0x22e; - undefined field_0x22f; - undefined field_0x230; - undefined field_0x231; - undefined field_0x232; - undefined field_0x233; - undefined field_0x234; - undefined field_0x235; - undefined field_0x236; - undefined field_0x237; - undefined field_0x238; - undefined field_0x239; - undefined field_0x23a; - undefined field_0x23b; - undefined field_0x23c; - undefined field_0x23d; - undefined field_0x23e; - undefined field_0x23f; - undefined field_0x240; - undefined field_0x241; - undefined field_0x242; - undefined field_0x243; - undefined field_0x244; - undefined field_0x245; - undefined field_0x246; - undefined field_0x247; - undefined field_0x248; - undefined field_0x249; - undefined field_0x24a; - undefined field_0x24b; - undefined field_0x24c; - undefined field_0x24d; - undefined field_0x24e; - undefined field_0x24f; - undefined field_0x250; - undefined field_0x251; - undefined field_0x252; - undefined field_0x253; - undefined field_0x254; - undefined field_0x255; - undefined field_0x256; - undefined field_0x257; - undefined field_0x258; - undefined field_0x259; - undefined field_0x25a; - undefined field_0x25b; - undefined field_0x25c; - undefined field_0x25d; - undefined field_0x25e; - undefined field_0x25f; - undefined field_0x260; - undefined field_0x261; - undefined field_0x262; - undefined field_0x263; - undefined field_0x264; - undefined field_0x265; - undefined field_0x266; - undefined field_0x267; - undefined field_0x268; - undefined field_0x269; - undefined field_0x26a; - undefined field_0x26b; - undefined field_0x26c; - undefined field_0x26d; - undefined field_0x26e; - undefined field_0x26f; - undefined field_0x270; - undefined field_0x271; - undefined field_0x272; - undefined field_0x273; - undefined field_0x274; - undefined field_0x275; - undefined field_0x276; - undefined field_0x277; - undefined field_0x278; - undefined field_0x279; - undefined field_0x27a; - undefined field_0x27b; - undefined field_0x27c; - undefined field_0x27d; - undefined field_0x27e; - undefined field_0x27f; - undefined field_0x280; - undefined field_0x281; - undefined field_0x282; - undefined field_0x283; - undefined field_0x284; - undefined field_0x285; - undefined field_0x286; - undefined field_0x287; - undefined field_0x288; - undefined field_0x289; - undefined field_0x28a; - undefined field_0x28b; - undefined field_0x28c; - undefined field_0x28d; - undefined field_0x28e; - undefined field_0x28f; - undefined field_0x290; - undefined field_0x291; - undefined field_0x292; - undefined field_0x293; - undefined field_0x294; - undefined field_0x295; - undefined field_0x296; - undefined field_0x297; - undefined field_0x298; - undefined field_0x299; - undefined field_0x29a; - undefined field_0x29b; - undefined field_0x29c; - undefined field_0x29d; - undefined field_0x29e; - undefined field_0x29f; - undefined field_0x2a0; - undefined field_0x2a1; - undefined field_0x2a2; - undefined field_0x2a3; - undefined field_0x2a4; - undefined field_0x2a5; - undefined field_0x2a6; - undefined field_0x2a7; - undefined field_0x2a8; - undefined field_0x2a9; - undefined field_0x2aa; - undefined field_0x2ab; - undefined field_0x2ac; - undefined field_0x2ad; - undefined field_0x2ae; - undefined field_0x2af; - undefined field_0x2b0; - undefined field_0x2b1; - undefined field_0x2b2; - undefined field_0x2b3; - undefined field_0x2b4; - undefined field_0x2b5; - undefined field_0x2b6; - undefined field_0x2b7; - undefined field_0x2b8; - undefined field_0x2b9; - undefined field_0x2ba; - undefined field_0x2bb; - undefined field_0x2bc; - undefined field_0x2bd; - undefined field_0x2be; - undefined field_0x2bf; - undefined field_0x2c0; - undefined field_0x2c1; - undefined field_0x2c2; - undefined field_0x2c3; - undefined field_0x2c4; - undefined field_0x2c5; - undefined field_0x2c6; - undefined field_0x2c7; - undefined field_0x2c8; - undefined field_0x2c9; - undefined field_0x2ca; - undefined field_0x2cb; - undefined field_0x2cc; - undefined field_0x2cd; - undefined field_0x2ce; - undefined field_0x2cf; - undefined field_0x2d0; - undefined field_0x2d1; - undefined field_0x2d2; - undefined field_0x2d3; - undefined field_0x2d4; - undefined field_0x2d5; - undefined field_0x2d6; - undefined field_0x2d7; - undefined field_0x2d8; - undefined field_0x2d9; - undefined field_0x2da; - undefined field_0x2db; - undefined field_0x2dc; - undefined field_0x2dd; - undefined field_0x2de; - undefined field_0x2df; - undefined field_0x2e0; - undefined field_0x2e1; - undefined field_0x2e2; - undefined field_0x2e3; - undefined field_0x2e4; - undefined field_0x2e5; - undefined field_0x2e6; - undefined field_0x2e7; - undefined field_0x2e8; - undefined field_0x2e9; - undefined field_0x2ea; - undefined field_0x2eb; - undefined field_0x2ec; - undefined field_0x2ed; - undefined field_0x2ee; - undefined field_0x2ef; - undefined field_0x2f0; - undefined field_0x2f1; - undefined field_0x2f2; - undefined field_0x2f3; - undefined field_0x2f4; - undefined field_0x2f5; - undefined field_0x2f6; - undefined field_0x2f7; - undefined field_0x2f8; - undefined field_0x2f9; - undefined field_0x2fa; - undefined field_0x2fb; - undefined field_0x2fc; - undefined field_0x2fd; - undefined field_0x2fe; - undefined field_0x2ff; - undefined field_0x300; - undefined field_0x301; - undefined field_0x302; - undefined field_0x303; - undefined field_0x304; - undefined field_0x305; - undefined field_0x306; - undefined field_0x307; - undefined field_0x308; - undefined field_0x309; - undefined field_0x30a; - undefined field_0x30b; - undefined field_0x30c; - undefined field_0x30d; - undefined field_0x30e; - undefined field_0x30f; - undefined field_0x310; - undefined field_0x311; - undefined field_0x312; - undefined field_0x313; - undefined field_0x314; - undefined field_0x315; - undefined field_0x316; - undefined field_0x317; - undefined field_0x318; - undefined field_0x319; - undefined field_0x31a; - undefined field_0x31b; - undefined field_0x31c; - undefined field_0x31d; - undefined field_0x31e; - undefined field_0x31f; - undefined field_0x320; - undefined field_0x321; - undefined field_0x322; - undefined field_0x323; - undefined field_0x324; - undefined field_0x325; - undefined field_0x326; - undefined field_0x327; - undefined field_0x328; - undefined field_0x329; - undefined field_0x32a; - undefined field_0x32b; - undefined field_0x32c; - undefined field_0x32d; - undefined field_0x32e; - undefined field_0x32f; - undefined field_0x330; - undefined field_0x331; - undefined field_0x332; - undefined field_0x333; - undefined field_0x334; - undefined field_0x335; - undefined field_0x336; - undefined field_0x337; - undefined field_0x338; - undefined field_0x339; - undefined field_0x33a; - undefined field_0x33b; - undefined field_0x33c; - undefined field_0x33d; - undefined field_0x33e; - undefined field_0x33f; - undefined field_0x340; - undefined field_0x341; - undefined field_0x342; - undefined field_0x343; - undefined field_0x344; - undefined field_0x345; - undefined field_0x346; - undefined field_0x347; - undefined field_0x348; - undefined field_0x349; - undefined field_0x34a; - undefined field_0x34b; - undefined field_0x34c; - undefined field_0x34d; - undefined field_0x34e; - undefined field_0x34f; - undefined field_0x350; - undefined field_0x351; - undefined field_0x352; - undefined field_0x353; - undefined field_0x354; - undefined field_0x355; - undefined field_0x356; - undefined field_0x357; - undefined field_0x358; - undefined field_0x359; - undefined field_0x35a; - undefined field_0x35b; - undefined field_0x35c; - undefined field_0x35d; - undefined field_0x35e; - undefined field_0x35f; - undefined field_0x360; - undefined field_0x361; - undefined field_0x362; - undefined field_0x363; - undefined field_0x364; - undefined field_0x365; - undefined field_0x366; - undefined field_0x367; - undefined field_0x368; - undefined field_0x369; - undefined field_0x36a; - undefined field_0x36b; - undefined field_0x36c; - undefined field_0x36d; - undefined field_0x36e; - undefined field_0x36f; - undefined field_0x370; - undefined field_0x371; - undefined field_0x372; - undefined field_0x373; - undefined field_0x374; - undefined field_0x375; - undefined field_0x376; - undefined field_0x377; - undefined field_0x378; - undefined field_0x379; - undefined field_0x37a; - undefined field_0x37b; - undefined field_0x37c; - undefined field_0x37d; - undefined field_0x37e; - undefined field_0x37f; - undefined field_0x380; - undefined field_0x381; - undefined field_0x382; - undefined field_0x383; - undefined field_0x384; - undefined field_0x385; - undefined field_0x386; - undefined field_0x387; - undefined field_0x388; - undefined field_0x389; - undefined field_0x38a; - undefined field_0x38b; - undefined field_0x38c; - undefined field_0x38d; - undefined field_0x38e; - undefined field_0x38f; - undefined field_0x390; - undefined field_0x391; - undefined field_0x392; - undefined field_0x393; - undefined field_0x394; - undefined field_0x395; - undefined field_0x396; - undefined field_0x397; - undefined field_0x398; - undefined field_0x399; - undefined field_0x39a; - undefined field_0x39b; - undefined field_0x39c; - undefined field_0x39d; - undefined field_0x39e; - undefined field_0x39f; - undefined field_0x3a0; - undefined field_0x3a1; - undefined field_0x3a2; - undefined field_0x3a3; - undefined field_0x3a4; - undefined field_0x3a5; - undefined field_0x3a6; - undefined field_0x3a7; - undefined field_0x3a8; - undefined field_0x3a9; - undefined field_0x3aa; - undefined field_0x3ab; - undefined field_0x3ac; - undefined field_0x3ad; - undefined field_0x3ae; - undefined field_0x3af; - undefined field_0x3b0; - undefined field_0x3b1; - undefined field_0x3b2; - undefined field_0x3b3; - undefined field_0x3b4; - undefined field_0x3b5; - undefined field_0x3b6; - undefined field_0x3b7; - undefined field_0x3b8; - undefined field_0x3b9; - undefined field_0x3ba; - undefined field_0x3bb; - undefined field_0x3bc; - undefined field_0x3bd; - undefined field_0x3be; - undefined field_0x3bf; - undefined field_0x3c0; - undefined field_0x3c1; - undefined field_0x3c2; - undefined field_0x3c3; - undefined field_0x3c4; - undefined field_0x3c5; - undefined field_0x3c6; - undefined field_0x3c7; - undefined field_0x3c8; - undefined field_0x3c9; - undefined field_0x3ca; - undefined field_0x3cb; - undefined field_0x3cc; - undefined field_0x3cd; - undefined field_0x3ce; - undefined field_0x3cf; - undefined field_0x3d0; - undefined field_0x3d1; - undefined field_0x3d2; - undefined field_0x3d3; - undefined field_0x3d4; - undefined field_0x3d5; - undefined field_0x3d6; - undefined field_0x3d7; - undefined field_0x3d8; - undefined field_0x3d9; - undefined field_0x3da; - undefined field_0x3db; - undefined field_0x3dc; - undefined field_0x3dd; - undefined field_0x3de; - undefined field_0x3df; - undefined field_0x3e0; - undefined field_0x3e1; - undefined field_0x3e2; - undefined field_0x3e3; - undefined field_0x3e4; - undefined field_0x3e5; - undefined field_0x3e6; - undefined field_0x3e7; - undefined field_0x3e8; - undefined field_0x3e9; - undefined field_0x3ea; - undefined field_0x3eb; - undefined field_0x3ec; - undefined field_0x3ed; - undefined field_0x3ee; - undefined field_0x3ef; - undefined field_0x3f0; - undefined field_0x3f1; - undefined field_0x3f2; - undefined field_0x3f3; - undefined field_0x3f4; - undefined field_0x3f5; - undefined field_0x3f6; - undefined field_0x3f7; - undefined field_0x3f8; - undefined field_0x3f9; - undefined field_0x3fa; - undefined field_0x3fb; - undefined field_0x3fc; - undefined field_0x3fd; - undefined field_0x3fe; - undefined field_0x3ff; - undefined field_0x400; - undefined field_0x401; - undefined field_0x402; - undefined field_0x403; - undefined field_0x404; - undefined field_0x405; - undefined field_0x406; - undefined field_0x407; - undefined field_0x408; - undefined field_0x409; - undefined field_0x40a; - undefined field_0x40b; - undefined field_0x40c; - undefined field_0x40d; - undefined field_0x40e; - undefined field_0x40f; - undefined field_0x410; - undefined field_0x411; - undefined field_0x412; - undefined field_0x413; - undefined field_0x414; - undefined field_0x415; - undefined field_0x416; - undefined field_0x417; - undefined field_0x418; - undefined field_0x419; - undefined field_0x41a; - undefined field_0x41b; - undefined field_0x41c; - undefined field_0x41d; - undefined field_0x41e; - undefined field_0x41f; - undefined field_0x420; - undefined field_0x421; - undefined field_0x422; - undefined field_0x423; - undefined field_0x424; - undefined field_0x425; - undefined field_0x426; - undefined field_0x427; - undefined field_0x428; - undefined field_0x429; - undefined field_0x42a; - undefined field_0x42b; - undefined field_0x42c; - undefined field_0x42d; - undefined field_0x42e; - undefined field_0x42f; - undefined field_0x430; - undefined field_0x431; - undefined field_0x432; - undefined field_0x433; - undefined field_0x434; - undefined field_0x435; - undefined field_0x436; - undefined field_0x437; - undefined field_0x438; - undefined field_0x439; - undefined field_0x43a; - undefined field_0x43b; - undefined field_0x43c; - undefined field_0x43d; - undefined field_0x43e; - undefined field_0x43f; - undefined field_0x440; - undefined field_0x441; - undefined field_0x442; - undefined field_0x443; - undefined field_0x444; - undefined field_0x445; - undefined field_0x446; - undefined field_0x447; - undefined field_0x448; - undefined field_0x449; - undefined field_0x44a; - undefined field_0x44b; - undefined field_0x44c; - undefined field_0x44d; - undefined field_0x44e; - undefined field_0x44f; - undefined field_0x450; - undefined field_0x451; - undefined field_0x452; - undefined field_0x453; - undefined field_0x454; - undefined field_0x455; - undefined field_0x456; - undefined field_0x457; - undefined field_0x458; - undefined field_0x459; - undefined field_0x45a; - undefined field_0x45b; - undefined field_0x45c; - undefined field_0x45d; - undefined field_0x45e; - undefined field_0x45f; - undefined field_0x460; - undefined field_0x461; - undefined field_0x462; - undefined field_0x463; - undefined field_0x464; - undefined field_0x465; - undefined field_0x466; - undefined field_0x467; - undefined field_0x468; - undefined field_0x469; - undefined field_0x46a; - undefined field_0x46b; - undefined field_0x46c; - undefined field_0x46d; - undefined field_0x46e; - undefined field_0x46f; - undefined field_0x470; - undefined field_0x471; - undefined field_0x472; - undefined field_0x473; - undefined field_0x474; - undefined field_0x475; - undefined field_0x476; - undefined field_0x477; - undefined field_0x478; - undefined field_0x479; - undefined field_0x47a; - undefined field_0x47b; - undefined field_0x47c; - undefined field_0x47d; - undefined field_0x47e; - undefined field_0x47f; - undefined field_0x480; - undefined field_0x481; - undefined field_0x482; - undefined field_0x483; - undefined field_0x484; - undefined field_0x485; - undefined field_0x486; - undefined field_0x487; - undefined field_0x488; - undefined field_0x489; - undefined field_0x48a; - undefined field_0x48b; - undefined field_0x48c; - undefined field_0x48d; - undefined field_0x48e; - undefined field_0x48f; - undefined field_0x490; - undefined field_0x491; - undefined field_0x492; - undefined field_0x493; - undefined field_0x494; - undefined field_0x495; - undefined field_0x496; - undefined field_0x497; - undefined field_0x498; - undefined field_0x499; - undefined field_0x49a; - undefined field_0x49b; - undefined field_0x49c; - undefined field_0x49d; - undefined field_0x49e; - undefined field_0x49f; - undefined field_0x4a0; - undefined field_0x4a1; - undefined field_0x4a2; - undefined field_0x4a3; - undefined field_0x4a4; - undefined field_0x4a5; - undefined field_0x4a6; - undefined field_0x4a7; - undefined field_0x4a8; - undefined field_0x4a9; - undefined field_0x4aa; - undefined field_0x4ab; - undefined field_0x4ac; - undefined field_0x4ad; - undefined field_0x4ae; - undefined field_0x4af; - undefined field_0x4b0; - undefined field_0x4b1; - undefined field_0x4b2; - undefined field_0x4b3; - undefined field_0x4b4; - undefined field_0x4b5; - undefined field_0x4b6; - undefined field_0x4b7; - undefined field_0x4b8; - undefined field_0x4b9; - undefined field_0x4ba; - undefined field_0x4bb; - undefined field_0x4bc; - undefined field_0x4bd; - undefined field_0x4be; - undefined field_0x4bf; - undefined field_0x4c0; - undefined field_0x4c1; - undefined field_0x4c2; - undefined field_0x4c3; - undefined field_0x4c4; - undefined field_0x4c5; - undefined field_0x4c6; - undefined field_0x4c7; - undefined field_0x4c8; - undefined field_0x4c9; - undefined field_0x4ca; - undefined field_0x4cb; - undefined field_0x4cc; - undefined field_0x4cd; - undefined field_0x4ce; - undefined field_0x4cf; - undefined field_0x4d0; - undefined field_0x4d1; - undefined field_0x4d2; - undefined field_0x4d3; - undefined field_0x4d4; - undefined field_0x4d5; - undefined field_0x4d6; - undefined field_0x4d7; - undefined field_0x4d8; - undefined field_0x4d9; - undefined field_0x4da; - undefined field_0x4db; - undefined field_0x4dc; - undefined field_0x4dd; - undefined field_0x4de; - undefined field_0x4df; - undefined field_0x4e0; - undefined field_0x4e1; - undefined field_0x4e2; - undefined field_0x4e3; - undefined field_0x4e4; - undefined field_0x4e5; - undefined field_0x4e6; - undefined field_0x4e7; - undefined field_0x4e8; - undefined field_0x4e9; - undefined field_0x4ea; - undefined field_0x4eb; - undefined field_0x4ec; - undefined field_0x4ed; - undefined field_0x4ee; - undefined field_0x4ef; - undefined field_0x4f0; - undefined field_0x4f1; - undefined field_0x4f2; - undefined field_0x4f3; - undefined field_0x4f4; - undefined field_0x4f5; - undefined field_0x4f6; - undefined field_0x4f7; - undefined field_0x4f8; - undefined field_0x4f9; - undefined field_0x4fa; - undefined field_0x4fb; - undefined field_0x4fc; - undefined field_0x4fd; - undefined field_0x4fe; - undefined field_0x4ff; - undefined field_0x500; - undefined field_0x501; - undefined field_0x502; - undefined field_0x503; - undefined field_0x504; - undefined field_0x505; - undefined field_0x506; - undefined field_0x507; - undefined field_0x508; - undefined field_0x509; - undefined field_0x50a; - undefined field_0x50b; - undefined field_0x50c; - undefined field_0x50d; - undefined field_0x50e; - undefined field_0x50f; - undefined field_0x510; - undefined field_0x511; - undefined field_0x512; - undefined field_0x513; - undefined field_0x514; - undefined field_0x515; - undefined field_0x516; - undefined field_0x517; - undefined field_0x518; - undefined field_0x519; - undefined field_0x51a; - undefined field_0x51b; - undefined field_0x51c; - undefined field_0x51d; - undefined field_0x51e; - undefined field_0x51f; - undefined field_0x520; - undefined field_0x521; - undefined field_0x522; - undefined field_0x523; - undefined field_0x524; - undefined field_0x525; - undefined field_0x526; - undefined field_0x527; - undefined field_0x528; - undefined field_0x529; - undefined field_0x52a; - undefined field_0x52b; - undefined field_0x52c; - undefined field_0x52d; - undefined field_0x52e; - undefined field_0x52f; - undefined field_0x530; - undefined field_0x531; - undefined field_0x532; - undefined field_0x533; - undefined field_0x534; - undefined field_0x535; - undefined field_0x536; - undefined field_0x537; - undefined field_0x538; - undefined field_0x539; - undefined field_0x53a; - undefined field_0x53b; - undefined field_0x53c; - undefined field_0x53d; - undefined field_0x53e; - undefined field_0x53f; - undefined field_0x540; - undefined field_0x541; - undefined field_0x542; - undefined field_0x543; - undefined field_0x544; - undefined field_0x545; - undefined field_0x546; - undefined field_0x547; - undefined field_0x548; - undefined field_0x549; - undefined field_0x54a; - undefined field_0x54b; - undefined field_0x54c; - undefined field_0x54d; - undefined field_0x54e; - undefined field_0x54f; - undefined field_0x550; - undefined field_0x551; - undefined field_0x552; - undefined field_0x553; - undefined field_0x554; - undefined field_0x555; - undefined field_0x556; - undefined field_0x557; - undefined field_0x558; - undefined field_0x559; - undefined field_0x55a; - undefined field_0x55b; - undefined field_0x55c; - undefined field_0x55d; - undefined field_0x55e; - undefined field_0x55f; - undefined field_0x560; - undefined field_0x561; - undefined field_0x562; - undefined field_0x563; - undefined field_0x564; - undefined field_0x565; - undefined field_0x566; - undefined field_0x567; - undefined field_0x568; - undefined field_0x569; - undefined field_0x56a; - undefined field_0x56b; - undefined field_0x56c; - undefined field_0x56d; - undefined field_0x56e; - undefined field_0x56f; - undefined field_0x570; - undefined field_0x571; - undefined field_0x572; - undefined field_0x573; - undefined field_0x574; - undefined field_0x575; - undefined field_0x576; - undefined field_0x577; - undefined field_0x578; - undefined field_0x579; - undefined field_0x57a; - undefined field_0x57b; - undefined field_0x57c; - undefined field_0x57d; - undefined field_0x57e; - undefined field_0x57f; - undefined field_0x580; - undefined field_0x581; - undefined field_0x582; - undefined field_0x583; - undefined field_0x584; - undefined field_0x585; - undefined field_0x586; - undefined field_0x587; - undefined field_0x588; - undefined field_0x589; - undefined field_0x58a; - undefined field_0x58b; - undefined field_0x58c; - undefined field_0x58d; - undefined field_0x58e; - undefined field_0x58f; - undefined field_0x590; - undefined field_0x591; - undefined field_0x592; - undefined field_0x593; - undefined field_0x594; - undefined field_0x595; - undefined field_0x596; - undefined field_0x597; - undefined field_0x598; - undefined field_0x599; - undefined field_0x59a; - undefined field_0x59b; - undefined field_0x59c; - undefined field_0x59d; - undefined field_0x59e; - undefined field_0x59f; - undefined field_0x5a0; - undefined field_0x5a1; - undefined field_0x5a2; - undefined field_0x5a3; - undefined field_0x5a4; - undefined field_0x5a5; - undefined field_0x5a6; - undefined field_0x5a7; - undefined field_0x5a8; - undefined field_0x5a9; - undefined field_0x5aa; - undefined field_0x5ab; - undefined field_0x5ac; - undefined field_0x5ad; - undefined field_0x5ae; - undefined field_0x5af; - undefined field_0x5b0; - undefined field_0x5b1; - undefined field_0x5b2; - undefined field_0x5b3; - undefined field_0x5b4; - undefined field_0x5b5; - undefined field_0x5b6; - undefined field_0x5b7; - undefined field_0x5b8; - undefined field_0x5b9; - undefined field_0x5ba; - undefined field_0x5bb; - undefined field_0x5bc; - undefined field_0x5bd; - undefined field_0x5be; - undefined field_0x5bf; - undefined field_0x5c0; - undefined field_0x5c1; - undefined field_0x5c2; - undefined field_0x5c3; - undefined field_0x5c4; - undefined field_0x5c5; - undefined field_0x5c6; - undefined field_0x5c7; - undefined field_0x5c8; - undefined field_0x5c9; - undefined field_0x5ca; - undefined field_0x5cb; - undefined field_0x5cc; - undefined field_0x5cd; - undefined field_0x5ce; - undefined field_0x5cf; - undefined field_0x5d0; - undefined field_0x5d1; - undefined field_0x5d2; - undefined field_0x5d3; - undefined field_0x5d4; - undefined field_0x5d5; - undefined field_0x5d6; - undefined field_0x5d7; - undefined field_0x5d8; - undefined field_0x5d9; - undefined field_0x5da; - undefined field_0x5db; - undefined field_0x5dc; - undefined field_0x5dd; - undefined field_0x5de; - undefined field_0x5df; - undefined field_0x5e0; - undefined field_0x5e1; - undefined field_0x5e2; - undefined field_0x5e3; - undefined field_0x5e4; - undefined field_0x5e5; - undefined field_0x5e6; - undefined field_0x5e7; - undefined field_0x5e8; - undefined field_0x5e9; - undefined field_0x5ea; - undefined field_0x5eb; - undefined field_0x5ec; - undefined field_0x5ed; - undefined field_0x5ee; - undefined field_0x5ef; - undefined field_0x5f0; - undefined field_0x5f1; - undefined field_0x5f2; - undefined field_0x5f3; - undefined field_0x5f4; - undefined field_0x5f5; - undefined field_0x5f6; - undefined field_0x5f7; - undefined field_0x5f8; - undefined field_0x5f9; - undefined field_0x5fa; - undefined field_0x5fb; - undefined field_0x5fc; - undefined field_0x5fd; - undefined field_0x5fe; - undefined field_0x5ff; - undefined field_0x600; - undefined field_0x601; - undefined field_0x602; - undefined field_0x603; - undefined field_0x604; - undefined field_0x605; - undefined field_0x606; - undefined field_0x607; - undefined field_0x608; - undefined field_0x609; - undefined field_0x60a; - undefined field_0x60b; - undefined field_0x60c; - undefined field_0x60d; - undefined field_0x60e; - undefined field_0x60f; - undefined field_0x610; - undefined field_0x611; - undefined field_0x612; - undefined field_0x613; - undefined field_0x614; - undefined field_0x615; - undefined field_0x616; - undefined field_0x617; - undefined field_0x618; - undefined field_0x619; - undefined field_0x61a; - undefined field_0x61b; - undefined field_0x61c; - undefined field_0x61d; - undefined field_0x61e; - undefined field_0x61f; - undefined field_0x620; - undefined field_0x621; - undefined field_0x622; - undefined field_0x623; - undefined field_0x624; - undefined field_0x625; - undefined field_0x626; - undefined field_0x627; - undefined field_0x628; - undefined field_0x629; - undefined field_0x62a; - undefined field_0x62b; - undefined field_0x62c; - undefined field_0x62d; - undefined field_0x62e; - undefined field_0x62f; - undefined field_0x630; - undefined field_0x631; - undefined field_0x632; - undefined field_0x633; - undefined field_0x634; - undefined field_0x635; - undefined field_0x636; - undefined field_0x637; - undefined field_0x638; - undefined field_0x639; - undefined field_0x63a; - undefined field_0x63b; - undefined field_0x63c; - undefined field_0x63d; - undefined field_0x63e; - undefined field_0x63f; - undefined field_0x640; - undefined field_0x641; - undefined field_0x642; - undefined field_0x643; - undefined field_0x644; - undefined field_0x645; - undefined field_0x646; - undefined field_0x647; - undefined field_0x648; - undefined field_0x649; - undefined field_0x64a; - undefined field_0x64b; - undefined field_0x64c; - undefined field_0x64d; - undefined field_0x64e; - undefined field_0x64f; - undefined field_0x650; - undefined field_0x651; - undefined field_0x652; - undefined field_0x653; - undefined field_0x654; - undefined field_0x655; - undefined field_0x656; - undefined field_0x657; - undefined field_0x658; - undefined field_0x659; - undefined field_0x65a; - undefined field_0x65b; - undefined field_0x65c; - undefined field_0x65d; - undefined field_0x65e; - undefined field_0x65f; - undefined field_0x660; - undefined field_0x661; - undefined field_0x662; - undefined field_0x663; - undefined field_0x664; - undefined field_0x665; - undefined field_0x666; - undefined field_0x667; - undefined field_0x668; - undefined field_0x669; - undefined field_0x66a; - undefined field_0x66b; - undefined field_0x66c; - undefined field_0x66d; - undefined field_0x66e; - undefined field_0x66f; - undefined field_0x670; - undefined field_0x671; - undefined field_0x672; - undefined field_0x673; - undefined field_0x674; - undefined field_0x675; - undefined field_0x676; - undefined field_0x677; - undefined field_0x678; - undefined field_0x679; - undefined field_0x67a; - undefined field_0x67b; - undefined field_0x67c; - undefined field_0x67d; - undefined field_0x67e; - undefined field_0x67f; - undefined field_0x680; - undefined field_0x681; - undefined field_0x682; - undefined field_0x683; - undefined field_0x684; - undefined field_0x685; - undefined field_0x686; - undefined field_0x687; - undefined field_0x688; - undefined field_0x689; - undefined field_0x68a; - undefined field_0x68b; - undefined field_0x68c; - undefined field_0x68d; - undefined field_0x68e; - undefined field_0x68f; - undefined field_0x690; - undefined field_0x691; - undefined field_0x692; - undefined field_0x693; - undefined field_0x694; - undefined field_0x695; - undefined field_0x696; - undefined field_0x697; - undefined field_0x698; - undefined field_0x699; - undefined field_0x69a; - undefined field_0x69b; - undefined field_0x69c; - undefined field_0x69d; - undefined field_0x69e; - undefined field_0x69f; - undefined field_0x6a0; - undefined field_0x6a1; - undefined field_0x6a2; - undefined field_0x6a3; - undefined field_0x6a4; - undefined field_0x6a5; - undefined field_0x6a6; - undefined field_0x6a7; - undefined field_0x6a8; - undefined field_0x6a9; - undefined field_0x6aa; - undefined field_0x6ab; - undefined field_0x6ac; - undefined field_0x6ad; - undefined field_0x6ae; - undefined field_0x6af; - undefined field_0x6b0; - undefined field_0x6b1; - undefined field_0x6b2; - undefined field_0x6b3; - undefined field_0x6b4; - undefined field_0x6b5; - undefined field_0x6b6; - undefined field_0x6b7; - undefined field_0x6b8; - undefined field_0x6b9; - undefined field_0x6ba; - undefined field_0x6bb; - undefined field_0x6bc; - undefined field_0x6bd; - undefined field_0x6be; - undefined field_0x6bf; - undefined field_0x6c0; - undefined field_0x6c1; - undefined field_0x6c2; - undefined field_0x6c3; - undefined field_0x6c4; - undefined field_0x6c5; - undefined field_0x6c6; - undefined field_0x6c7; - undefined field_0x6c8; - undefined field_0x6c9; - undefined field_0x6ca; - undefined field_0x6cb; - undefined field_0x6cc; - undefined field_0x6cd; - undefined field_0x6ce; - undefined field_0x6cf; - undefined field_0x6d0; - undefined field_0x6d1; - undefined field_0x6d2; - undefined field_0x6d3; - undefined field_0x6d4; - undefined field_0x6d5; - undefined field_0x6d6; - undefined field_0x6d7; - undefined field_0x6d8; - undefined field_0x6d9; - undefined field_0x6da; - undefined field_0x6db; - undefined field_0x6dc; - undefined field_0x6dd; - undefined field_0x6de; - undefined field_0x6df; - undefined field_0x6e0; - undefined field_0x6e1; - undefined field_0x6e2; - undefined field_0x6e3; - undefined field_0x6e4; - undefined field_0x6e5; - undefined field_0x6e6; - undefined field_0x6e7; - undefined field_0x6e8; - undefined field_0x6e9; - undefined field_0x6ea; - undefined field_0x6eb; - undefined field_0x6ec; - undefined field_0x6ed; - undefined field_0x6ee; - undefined field_0x6ef; - undefined field_0x6f0; - undefined field_0x6f1; - undefined field_0x6f2; - undefined field_0x6f3; - undefined field_0x6f4; - undefined field_0x6f5; - undefined field_0x6f6; - undefined field_0x6f7; - undefined field_0x6f8; - undefined field_0x6f9; - undefined field_0x6fa; - undefined field_0x6fb; - undefined field_0x6fc; - undefined field_0x6fd; - undefined field_0x6fe; - undefined field_0x6ff; - undefined field_0x700; - undefined field_0x701; - undefined field_0x702; - undefined field_0x703; - undefined field_0x704; - undefined field_0x705; - undefined field_0x706; - undefined field_0x707; - undefined field_0x708; - undefined field_0x709; - undefined field_0x70a; - undefined field_0x70b; - undefined field_0x70c; - undefined field_0x70d; - undefined field_0x70e; - undefined field_0x70f; - undefined field_0x710; - undefined field_0x711; - undefined field_0x712; - undefined field_0x713; - undefined field_0x714; - undefined field_0x715; - undefined field_0x716; - undefined field_0x717; - undefined field_0x718; - undefined field_0x719; - undefined field_0x71a; - undefined field_0x71b; - undefined field_0x71c; - undefined field_0x71d; - undefined field_0x71e; - undefined field_0x71f; - undefined field_0x720; - undefined field_0x721; - undefined field_0x722; - undefined field_0x723; - undefined field_0x724; - undefined field_0x725; - undefined field_0x726; - undefined field_0x727; - undefined field_0x728; - undefined field_0x729; - undefined field_0x72a; - undefined field_0x72b; - undefined field_0x72c; - undefined field_0x72d; - undefined field_0x72e; - undefined field_0x72f; - undefined field_0x730; - undefined field_0x731; - undefined field_0x732; - undefined field_0x733; - undefined field_0x734; - undefined field_0x735; - undefined field_0x736; - undefined field_0x737; - undefined field_0x738; - undefined field_0x739; - undefined field_0x73a; - undefined field_0x73b; - undefined field_0x73c; - undefined field_0x73d; - undefined field_0x73e; - undefined field_0x73f; - undefined field_0x740; - undefined field_0x741; - undefined field_0x742; - undefined field_0x743; - undefined field_0x744; - undefined field_0x745; - undefined field_0x746; - undefined field_0x747; - undefined field_0x748; - undefined field_0x749; - undefined field_0x74a; - undefined field_0x74b; - undefined field_0x74c; - undefined field_0x74d; - undefined field_0x74e; - undefined field_0x74f; - undefined field_0x750; - undefined field_0x751; - undefined field_0x752; - undefined field_0x753; - undefined field_0x754; - undefined field_0x755; - undefined field_0x756; - undefined field_0x757; - undefined field_0x758; - undefined field_0x759; - undefined field_0x75a; - undefined field_0x75b; - undefined field_0x75c; - undefined field_0x75d; - undefined field_0x75e; - undefined field_0x75f; - undefined field_0x760; - undefined field_0x761; - undefined field_0x762; - undefined field_0x763; - undefined field_0x764; - undefined field_0x765; - undefined field_0x766; - undefined field_0x767; - undefined field_0x768; - undefined field_0x769; - undefined field_0x76a; - undefined field_0x76b; - undefined field_0x76c; - undefined field_0x76d; - undefined field_0x76e; - undefined field_0x76f; - undefined field_0x770; - undefined field_0x771; - undefined field_0x772; - undefined field_0x773; - undefined field_0x774; - undefined field_0x775; - undefined field_0x776; - undefined field_0x777; - undefined field_0x778; - undefined field_0x779; - undefined field_0x77a; - undefined field_0x77b; - undefined field_0x77c; - undefined field_0x77d; - undefined field_0x77e; - undefined field_0x77f; - undefined field_0x780; - undefined field_0x781; - undefined field_0x782; - undefined field_0x783; - undefined field_0x784; - undefined field_0x785; - undefined field_0x786; - undefined field_0x787; - undefined field_0x788; - undefined field_0x789; - undefined field_0x78a; - undefined field_0x78b; - undefined field_0x78c; - undefined field_0x78d; - undefined field_0x78e; - undefined field_0x78f; - undefined field_0x790; - undefined field_0x791; - undefined field_0x792; - undefined field_0x793; - undefined field_0x794; - undefined field_0x795; - undefined field_0x796; - undefined field_0x797; - undefined field_0x798; - undefined field_0x799; - undefined field_0x79a; - undefined field_0x79b; - undefined field_0x79c; - undefined field_0x79d; - undefined field_0x79e; - undefined field_0x79f; - undefined field_0x7a0; - undefined field_0x7a1; - undefined field_0x7a2; - undefined field_0x7a3; - undefined field_0x7a4; - undefined field_0x7a5; - undefined field_0x7a6; - undefined field_0x7a7; - undefined field_0x7a8; - undefined field_0x7a9; - undefined field_0x7aa; - undefined field_0x7ab; - undefined field_0x7ac; - undefined field_0x7ad; - undefined field_0x7ae; - undefined field_0x7af; - undefined field_0x7b0; - undefined field_0x7b1; - undefined field_0x7b2; - undefined field_0x7b3; - undefined field_0x7b4; - undefined field_0x7b5; - undefined field_0x7b6; - undefined field_0x7b7; - undefined field_0x7b8; - undefined field_0x7b9; - undefined field_0x7ba; - undefined field_0x7bb; - undefined field_0x7bc; - undefined field_0x7bd; - undefined field_0x7be; - undefined field_0x7bf; - undefined field_0x7c0; - undefined field_0x7c1; - undefined field_0x7c2; - undefined field_0x7c3; - undefined field_0x7c4; - undefined field_0x7c5; - undefined field_0x7c6; - undefined field_0x7c7; - undefined field_0x7c8; - undefined field_0x7c9; - undefined field_0x7ca; - undefined field_0x7cb; - undefined field_0x7cc; - undefined field_0x7cd; - undefined field_0x7ce; - undefined field_0x7cf; - undefined field_0x7d0; - undefined field_0x7d1; - undefined field_0x7d2; - undefined field_0x7d3; - undefined field_0x7d4; - undefined field_0x7d5; - undefined field_0x7d6; - undefined field_0x7d7; - undefined field_0x7d8; - undefined field_0x7d9; - undefined field_0x7da; - undefined field_0x7db; - undefined field_0x7dc; - undefined field_0x7dd; - undefined field_0x7de; - undefined field_0x7df; - undefined field_0x7e0; - undefined field_0x7e1; - undefined field_0x7e2; - undefined field_0x7e3; - undefined field_0x7e4; - undefined field_0x7e5; - undefined field_0x7e6; - undefined field_0x7e7; - undefined field_0x7e8; - undefined field_0x7e9; - undefined field_0x7ea; - undefined field_0x7eb; - undefined field_0x7ec; - undefined field_0x7ed; - undefined field_0x7ee; - undefined field_0x7ef; - undefined2 vidwidth; - undefined2 vidheight; - short vidulx; - word viduly; -}; - - -// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALResampler - /_CAPTURED_FROM_ge007.u.old.elf/ALResampler - - -// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALEnvMixer_s - /_CAPTURED_FROM_ge007.u.old.elf/ALEnvMixer_s - -typedef struct ALEnvMixer_s ALEnvMixer; - -typedef struct ALSave_s ALSave_s, *PALSave_s; - -typedef struct ALSave_s ALSave; - -typedef struct ALFilter_s ALFilter; - -struct ALSave_s { - ALFilter filter; - s32 dramout; - s32 first; -}; - -typedef struct ALFreeParam ALFreeParam, *PALFreeParam; - -struct ALFreeParam { - struct ALParam_s * next; - s32 delta; - s16 type; - struct PVoice_s * pvoice; -}; - -typedef struct ALParam_s ALParam; - -typedef struct ALDelay ALDelay, *PALDelay; - -typedef struct ALLowPass ALLowPass, *PALLowPass; - -typedef union _union_213 _union_213, *P_union_213; - -typedef short POLEF_STATE[4]; - -typedef longlong s64; - -struct ALDelay { - u32 input; - u32 output; - s16 ffcoef; - s16 fbcoef; - s16 gain; - f32 rsinc; - f32 rsval; - s32 rsdelta; - f32 rsgain; - struct ALLowPass * lp; - ALResampler * rs; -}; - -union _union_213 { - s16 fccoef[16]; - s64 force_aligned; -}; - -struct ALLowPass { - s16 fc; - s16 fgain; - union _union_213 fcvec; - POLEF_STATE * fstate; - s32 first; -}; - -typedef struct ALAuxBus_s ALAuxBus_s, *PALAuxBus_s; - -typedef struct ALAuxBus_s ALAuxBus; - -struct ALAuxBus_s { -}; - -typedef struct ALFx ALFx, *PALFx; - -typedef s32 (* ALSetFXParam)(void *, s32, void *); - -struct ALFx { - struct ALFilter_s filter; - s16 * base; - s16 * input; - u32 length; - struct ALDelay * delay; - u8 section_count; - ALSetFXParam paramHdl; -}; - -typedef struct ALLoadFilter ALLoadFilter, *PALLoadFilter; - -struct ALLoadFilter { - ALFilter filter; - ADPCM_STATE * state; - ADPCM_STATE * lstate; - struct ALRawLoop loop; - struct ALWaveTable_s * table; - s32 bookSize; - ALDMAproc dma; - void * dmaState; - s32 sample; - s32 lastsam; - s32 first; - s32 memin; -}; - -typedef struct ALMainBus_s ALMainBus_s, *PALMainBus_s; - -typedef struct ALMainBus_s ALMainBus; - -struct ALMainBus_s { -}; - -typedef struct HeapInfo HeapInfo, *PHeapInfo; - -struct HeapInfo { - s32 magic; - s32 size; - u8 * file; - s32 line; - s32 count; - s32 pad0; - s32 pad1; - s32 pad2; -}; - - -// WARNING! conflicting data type names: /SYNTHINTERNALS.H/PVoice - /_CAPTURED_FROM_ge007.u.old.elf/PVoice - - -// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALSetParam - /_CAPTURED_FROM_ge007.u.old.elf/ALSetParam - -typedef union _union_196 _union_196, *P_union_196; - -union _union_196 { - f32 f; - s32 i; -}; - -typedef union _union_195 _union_195, *P_union_195; - -union _union_195 { - f32 f; - s32 i; -}; - -typedef union _union_194 _union_194, *P_union_194; - -union _union_194 { - f32 f; - s32 i; -}; - -typedef enum enum_191 { - AL_ADPCM=0, - AL_AUXBUS=6, - AL_BUFFER=2, - AL_ENVMIX=4, - AL_FX=5, - AL_MAINBUS=7, - AL_RESAMPLE=1, - AL_SAVE=3 -} enum_191; - -typedef enum enum_190 { - AL_FILTER_ADD_SOURCE=2, - AL_FILTER_ADD_UPDATE=3, - AL_FILTER_FREE_VOICE=0, - AL_FILTER_RESET=4, - AL_FILTER_SET_DRAM=6, - AL_FILTER_SET_FXAMT=16, - AL_FILTER_SET_PAN=12, - AL_FILTER_SET_PITCH=7, - AL_FILTER_SET_SOURCE=1, - AL_FILTER_SET_STATE=10, - AL_FILTER_SET_UNITY_PITCH=8, - AL_FILTER_SET_VOLUME=11, - AL_FILTER_SET_WAVETABLE=5, - AL_FILTER_START=9, - AL_FILTER_START_VOICE=14, - AL_FILTER_START_VOICE_ALT=13, - AL_FILTER_STOP_VOICE=15 -} enum_190; - -typedef struct ALStartParamAlt ALStartParamAlt, *PALStartParamAlt; - -typedef u8 ALPan; - -struct ALStartParamAlt { - struct ALParam_s * next; - s32 delta; - s16 type; - s16 unity; - f32 pitch; - s16 volume; - ALPan pan; - u8 fxMix; - s32 samples; - struct ALWaveTable_s * wave; -}; - -typedef struct ALStartParam ALStartParam, *PALStartParam; - -struct ALStartParam { - struct ALParam_s * next; - s32 delta; - s16 type; - s16 unity; - struct ALWaveTable_s * wave; -}; - -typedef struct ALResampler_s ALResampler_s, *PALResampler_s; - -struct ALResampler_s { - ALFilter filter; - RESAMPLE_STATE * state; - f32 ratio; - s32 upitch; - f32 delta; - s32 first; - ALParam * ctrlList; - ALParam * ctrlTail; - s32 motion; -}; - - -// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALCmdHandler - /_CAPTURED_FROM_ge007.u.old.elf/ALCmdHandler - -typedef union _union_197 _union_197, *P_union_197; - -union _union_197 { - f32 f; - s32 i; -}; - -#define AL_AUX_R_OUT 2048 - -#define AL_MAIN_R_OUT 1408 - -#define AL_AUX_L_OUT 1728 - -#define AL_MAX_AUX_BUS_SOURCES 8 - -#define AL_MAX_MAIN_BUS_SOURCES 1 - -#define AL_MAX_ADPCM_STATES 3 - -#define AL_DECODER_IN 0 - -#define AL_RESAMPLER_OUT 0 - -#define AL_MAX_AUX_BUS_FX 1 - -#define AL_DECODER_OUT 320 - -#define AL_CACHE_ALIGN 15 - -#define AL_MAX_RSP_SAMPLES 160 - -#define AL_MAIN_L_OUT 1088 - -#define AL_TEMP_0 0 - -#define AL_TEMP_2 640 - -#define AL_TEMP_1 320 - -#define C0_CONTEXT 4 - -#define ICACHE_LINEMASK 31 - -#define EXC_DBE 28 - -#define C0_CAUSE 13 - -#define CONFIG_EC_1_1 6 - -#define SR_IBIT8 32768 - -#define SR_IBIT3 1024 - -#define SR_IBIT2 512 - -#define SR_IBIT1 256 - -#define TLBINX_INXSHIFT 0 - -#define EXC_BREAK 36 - -#define SR_IBIT7 16384 - -#define SR_IBIT6 8192 - -#define SR_IBIT5 4096 - -#define SR_IBIT4 2048 - -#define CONFIG_BE 32768 - -#define TLBLO_CACHSHIFT 3 - -#define CACHERR_PIDX_MASK 7 - -#define C0_EPC 14 - -#define EXC_INT 0 - -#define TLBLO_EXLWR 40 - -#define C0_SR 12 - -#define TLBHI_NPID 255 - -#define TLBHI_PIDSHIFT 0 - -#define E_VEC 2147484032 - -#define CACHERR_SIDX_MASK 4194296 - -#define TLBLO_NONCOHRNT 24 - -#define SADDRMASK 4294959104 - -#define CAUSE_CEMASK 805306368 - -#define C0_REVMASK 255 - -#define TLBCTXT_VPNMASK 8388592 - -#define K2BASE 3221225472 - -#define EXC_RADE 16 - -#define CAUSE_EXCMASK 124 - -#define SINVALID 0 - -#define CONFIG_IC_SHFT 9 - -#define C0_MAJREVSHIFT 4 - -#define CONFIG_EC_3_2 7 - -#define CONFIG_EC_3_1 1 - -#define TLBCTXT_BASEMASK 4286578688 - -#define C0_BADVADDR 8 - -#define TLBLO_PFNMASK 1073741760 - -#define PADDRMASK 4294967040 - -#define C0_PAGEMASK 5 - -#define TLBCTXT_VPNSHIFT 4 - -#define EXC_WMISS 12 - -#define PSTATEMASK 192 - -#define SR_ERL 4 - -#define C_FILL 20 - -#define CAUSE_IPSHIFT 8 - -#define CONFIG_EC_2_1 0 - -#define SIZE_EXCVEC 128 - -#define C0_MINREVMASK 15 - -#define WATCHLO_ADDRMASK 4294967288 - -#define DCACHE_LINESIZE 16 - -#define PCLEANEXCL 128 - -#define CONFIG_IC 3584 - -#define CONFIG_IB 32 - -#define C0_ENTRYLO0 2 - -#define C0_ENTRYLO1 3 - -#define CONFIG_K0 7 - -#define CACH_SI 2 - -#define CAUSE_SW1 256 - -#define FPCSR_C 8388608 - -#define CAUSE_SW2 512 - -#define CACH_SD 3 - -#define SR_IMASK0 65280 - -#define C0_TAGHI 29 - -#define SR_IMASK7 32768 - -#define C0_PRID 15 - -#define SR_IMASK8 0 - -#define SR_IMASK5 57344 - -#define SR_IMASK6 49152 - -#define SR_IMASK3 63488 - -#define SR_IMASK4 61440 - -#define SR_IMASK1 65024 - -#define SR_IMASK2 64512 - -#define CAUSE_CESHIFT 28 - -#define CAUSE_EXCSHIFT 2 - -#define C0_IMPMASK 65280 - -#define TLBLO_CACHMASK 56 - -#define PINVALID 0 - -#define EXC_FPE 60 - -#define SR_KSU_MASK 24 - -#define SR_KSU_USR 16 - -#define EXC_WATCH 92 - -#define SR_TS 2097152 - -#define CONFIG_DC 448 - -#define CONFIG_DB 16 - -#define C0_MAJREVMASK 240 - -#define WATCHLO_WTRAP 1 - -#define TLBLO_UNCACHED 16 - -#define CONFIG_CU 8 - -#define SR_EXL 2 - -#define CONFIG_CM 2147483648 - -#define SR_SX 64 - -#define SR_CU1 536870912 - -#define SR_UX 32 - -#define SR_CU0 268435456 - -#define SR_CU3 2147483648 - -#define SR_CU2 1073741824 - -#define CONFIG_EC 1879048192 - -#define CONFIG_EB 8192 - -#define NTLBENTRIES 31 - -#define TLBPGMASK_64K 122880 - -#define C0_READI 1 - -#define SR_RP 134217728 - -#define CACHERR_ET 268435456 - -#define SR_RE 33554432 - -#define CACHERR_ES 134217728 - -#define CACHERR_ER 2147483648 - -#define CONFIG_EW 786432 - -#define CACHERR_EI 16777216 - -#define CONFIG_EP 251658240 - -#define CACHERR_EE 67108864 - -#define CONFIG_EM 16384 - -#define CACHERR_ED 536870912 - -#define CACHERR_EC 1073741824 - -#define CACHERR_EB 33554432 - -#define SR_CUMASK 4026531840 - -#define ICACHE_SIZE 16384 - -#define SR_SR 1048576 - -#define C0_RFE 16 - -#define WATCHLO_VALIDMASK 4294967291 - -#define FPCSR_EV 2048 - -#define C0_WRITER 6 - -#define CONFIG_BE_SHFT 15 - -#define FPCSR_EU 256 - -#define FPCSR_EO 512 - -#define C0_WATCHHI 19 - -#define FPCSR_EI 128 - -#define C_CDX 12 - -#define C0_LLADDR 17 - -#define C0_ECC 26 - -#define SR_IE 1 - -#define EXC_CPU 44 - -#define SR_IMASK 65280 - -#define DCACHE_LINEMASK 15 - -#define TLBPGMASK_16K 24576 - -#define C_IWBINV 0 - -#define EXC_II 40 - -#define C0_WRITEI 2 - -#define FPCSR_CZ 32768 - -#define FPCSR_CU 8192 - -#define FPCSR_CV 65536 - -#define FPCSR_CO 16384 - -#define FPCSR_CI 4096 - -#define K1SIZE 536870912 - -#define FPCSR_RM_MASK 3 - -#define TLBRAND_RANDMASK 63 - -#define FPCSR_CE 131072 - -#define CONFIG_SW 1048576 - -#define CONFIG_SS 2097152 - -#define C_IST 8 - -#define K0BASE 2147483648 - -#define KUSIZE 2147483648 - -#define CONFIG_SM 65536 - -#define CONFIG_SC 131072 - -#define CONFIG_SB 12582912 - -#define SR_FR 67108864 - -#define EXC_VCEI 56 - -#define TLBHI_VPN2SHIFT 13 - -#define TLBCTXT_BASEBITS 9 - -#define C_ILT 4 - -#define SCLEANEXCL 4096 - -#define TLBRAND_RANDSHIFT 0 - -#define C0_WATCHLO 18 - -#define SR_KX 128 - -#define PPARITY_MASK 1 - -#define XUT_VEC 2147483776 - -#define C0_INX 0 - -#define CONFIG_NONCOHRNT 3 - -#define PDIRTYEXCL 192 - -#define SADDR_SHIFT 4 - -#define SDIRTYEXCL 5120 - -#define TLBHI_PIDMASK 255 - -#define SSTATEMASK 7168 - -#define KUBASE 0 - -#define EXC_WADE 20 - -#define CONFIG_UNCACHED 2 - -#define TLBLO_D 4 - -#define SR_KSU_SUP 8 - -#define SVINDEXMASK 896 - -#define SR_KSU_KER 0 - -#define C0_TAGLO 28 - -#define UT_VEC 2147483648 - -#define FPCSR_RM_RZ 1 - -#define TLBLO_G 1 - -#define C0_IMPSHIFT 8 - -#define FPCSR_FZ 32 - -#define FPCSR_FS 16777216 - -#define EXC_IBE 24 - -#define FPCSR_RM_RP 2 - -#define K1BASE 2684354560 - -#define FPCSR_FU 8 - -#define FPCSR_RM_RM 3 - -#define FPCSR_FV 64 - -#define FPCSR_RM_RN 0 - -#define FPCSR_FO 16 - -#define TLBLO_V 2 - -#define CACH_PD 1 - -#define EXC_RMISS 8 - -#define CAUSE_BD 2147483648 - -#define FPCSR_FI 4 - -#define CACH_PI 0 - -#define FPCSR_EZ 1024 - -#define C0_WIRED 6 - -#define C0_ENTRYHI 10 - -#define ICACHE_LINESIZE 32 - -#define C_HWB 24 - -#define SR_BEV 4194304 - -#define SECC_MASK 127 - -#define EXC_SYSCALL 32 - -#define CAUSE_IPMASK 65280 - -#define C0_CONFIG 16 - -#define SR_ITS 16777216 - -#define K0SIZE 536870912 - -#define CONFIG_COHRNT_EXLWR 5 - -#define SR_IMASKSHIFT 8 - -#define TLBHI_VPN2MASK 4294959104 - -#define C0_COMPARE 11 - -#define DCACHE_SIZE 8192 - -#define ECC_VEC 2147483904 - -#define C_HWBINV 20 - -#define CONFIG_SB_SHFT 22 - -#define TLBLO_PFNSHIFT 6 - -#define EXC_TRAP 52 - -#define TLBCTXT_BASESHIFT 23 - -#define CONFIG_DC_SHFT 6 - -#define EXC_OV 48 - -#define WATCHLO_RTRAP 2 - -#define C0_COUNT 9 - -#define SR_DE 65536 - -#define EXC_VCED 124 - -#define C_IINV 0 - -#define TLBINX_PROBE 2147483648 - -#define C0_PROBE 8 - -#define WATCHHI_VALIDMASK 15 - -#define EXC_MOD 4 - -#define SR_CH 262144 - -#define TLBWIRED_WIREDMASK 63 - -#define C_HSV 28 - -#define C0_CACHE_ERR 27 - -#define TLBPGMASK_4K 0 - -#define C0_RAND 1 - -#define C0_ERROR_EPC 30 - -#define PADDR_SHIFT 4 - -#define R_VEC 3217031168 - -#define K2SIZE 536870912 - -#define SR_CE 131072 - -#define CACHERR_PIDX_SHIFT 12 - -#define TLBINX_INXMASK 63 - -#define CAUSE_IP3 1024 - -#define CAUSE_IP4 2048 - -#define C_HINV 16 - -#define CAUSE_IP7 16384 - -#define CAUSE_IP8 32768 - -#define CAUSE_IP5 4096 - -#define CAUSE_IP6 8192 - -typedef struct Light_t Light_t, *PLight_t; - -struct Light_t { - uchar col[3]; - char pad1; - uchar colc[3]; - char pad2; - char dir[3]; - char pad3; -}; - -typedef struct TexRect TexRect, *PTexRect; - -struct TexRect { - ulong w0; - ulong w1; - ulong w2; - ulong w3; -}; - -typedef struct Gloadtile Gloadblock; - -typedef union Ambient Ambient, *PAmbient; - -typedef struct Ambient_t Ambient_t, *PAmbient_t; - -struct Ambient_t { - uchar col[3]; - char pad1; - uchar colc[3]; - char pad2; -}; - -union Ambient { - struct Ambient_t l; - longlong force_structure_alignment[1]; -}; - -typedef struct Gtexrect Gtexrect, *PGtexrect; - -typedef union anon__struct_72_bitfield_1 anon__struct_72_bitfield_1, *Panon__struct_72_bitfield_1; - -typedef union anon__struct_72_bitfield_2 anon__struct_72_bitfield_2, *Panon__struct_72_bitfield_2; - -typedef union anon__struct_72_bitfield_3 anon__struct_72_bitfield_3, *Panon__struct_72_bitfield_3; - -typedef union anon__struct_72_bitfield_4 anon__struct_72_bitfield_4, *Panon__struct_72_bitfield_4; - -union anon__struct_72_bitfield_1 { - uint cmd:8; // : bits 0-7 - uint xl:12; // : bits 8-19 - uint yl:12; // : bits 20-31 -}; - -union anon__struct_72_bitfield_3 { - uint s:16; // : bits 0-15 - uint t:16; // : bits 16-31 -}; - -union anon__struct_72_bitfield_2 { - uint pad1:5; // : bits 0-4 - uint tile:3; // : bits 5-7 - uint xh:12; // : bits 8-19 - uint yh:12; // : bits 20-31 -}; - -union anon__struct_72_bitfield_4 { - uint dsdx:16; // : bits 0-15 - uint dtdy:16; // : bits 16-31 -}; - -struct Gtexrect { - union anon__struct_72_bitfield_1 field_0x0; - union anon__struct_72_bitfield_2 field_0x4; - union anon__struct_72_bitfield_3 field_0x8; - union anon__struct_72_bitfield_4 field_0xc; -}; - -typedef union Light Light, *PLight; - -union Light { - struct Light_t l; - longlong force_structure_alignment[2]; -}; - -typedef union uSprite uSprite, *PuSprite; - -typedef struct uSprite_t uSprite_t, *PuSprite_t; - -struct uSprite_t { - void * SourceImagePointer; - void * TlutPointer; - short Stride; - short SubImageWidth; - short SubImageHeight; - char SourceImageType; - char SourceImageBitSize; - short ScaleX; - short ScaleY; - char FlipTextureX; - char FlipTextureY; - short SourceImageOffsetS; - short SourceImageOffsetT; - short PScreenX; - short PScreenY; - char dummy[2]; -}; - -union uSprite { - struct uSprite_t s; - longlong force_structure_allignment[4]; -}; - -typedef struct Lightsn Lightsn, *PLightsn; - -struct Lightsn { - union Ambient a; - union Light l[7]; -}; - -typedef struct LookAt LookAt, *PLookAt; - -struct LookAt { - union Light l[2]; -}; - -typedef struct Lights0 Lights0, *PLights0; - -struct Lights0 { - union Ambient a; - union Light l[1]; -}; - -typedef struct Lights3 Lights3, *PLights3; - -struct Lights3 { - union Ambient a; - union Light l[3]; -}; - -typedef struct Lights4 Lights4, *PLights4; - -struct Lights4 { - union Ambient a; - union Light l[4]; -}; - -typedef struct Lights1 Lights1, *PLights1; - -struct Lights1 { - union Ambient a; - union Light l[1]; -}; - -typedef struct Lights2 Lights2, *PLights2; - -struct Lights2 { - union Ambient a; - union Light l[2]; -}; - -typedef struct Lights7 Lights7, *PLights7; - -struct Lights7 { - union Ambient a; - union Light l[7]; -}; - -typedef struct Lights5 Lights5, *PLights5; - -struct Lights5 { - union Ambient a; - union Light l[5]; -}; - -typedef struct Lights6 Lights6, *PLights6; - -struct Lights6 { - union Ambient a; - union Light l[6]; -}; - -typedef struct Hilite_t Hilite_t, *PHilite_t; - -struct Hilite_t { - int x1; - int y1; - int x2; - int y2; -}; - -typedef union Hilite Hilite, *PHilite; - -union Hilite { - struct Hilite_t h; - long force_structure_alignment[4]; -}; - -#define G_LOADBLOCK 243 - -#define G_DMACMDSIZ 128 - -#define G_MWO_NUMLIGHT 0 - -#define G_TX_LOADTILE 7 - -#define G_CYC_FILL 3145728 - -#define G_IM_FMT_IA 3 - -#define G_TEXTURE_SCALE_FRAC 16 - -#define G_BL_CLR_MEM 1 - -#define G_MOVEMEM 3 - -#define G_CCMUX_K4 7 - -#define G_MWO_aLIGHT_5 128 - -#define G_CCMUX_K5 15 - -#define G_MWO_aLIGHT_4 96 - -#define G_MWO_aLIGHT_7 192 - -#define G_MWO_aLIGHT_6 160 - -#define G_MWO_aLIGHT_8 224 - -#define G_TRI_SHADE_ZBUFF 205 - -#define G_ACMUX_0 7 - -#define G_MDSFT_TEXTCONV 9 - -#define G_AD_NOTPATTERN 16 - -#define G_RM_NOOP2 0 - -#define G_ACMUX_1 6 - -#define G_IM_SIZ_4b 0 - -#define G_MDSFT_CYCLETYPE 20 - -#define G_SETSCISSOR 237 - -#define G_PM_1PRIMITIVE 8388608 - -#define ZMODE_XLU 2048 - -#define G_MWO_CLIP_RNY 12 - -#define ZMODE_DEC 3072 - -#define G_MWO_CLIP_RNX 4 - -#define G_MWO_MATRIX_YX_YY_I 8 - -#define G_MWO_aLIGHT_1 0 - -#define G_MTX_MODELVIEW 0 - -#define G_MWO_aLIGHT_3 64 - -#define G_MWO_aLIGHT_2 32 - -#define G_TP_PERSP 524288 - -#define G_TX_CLAMP 2 - -#define G_TT_IA16 49152 - -#define G_POPMTX -67 - -#define G_TX_NOMIRROR 0 - -#define G_CD_DISABLE 192 - -#define G_MWO_MATRIX_YX_YY_F 40 - -#define G_RDPTILESYNC 232 - -#define G_PM_NPRIMITIVE 0 - -#define G_CYC_2CYCLE 1048576 - -#define G_MDSFT_COMBKEY 8 - -#define G_IM_SIZ_16b_SHIFT 0 - -#define G_CULLDL -66 - -#define FR_POS_FRUSTRATIO_2 65534 - -#define FR_POS_FRUSTRATIO_3 65533 - -#define G_RDPPIPESYNC 231 - -#define FR_POS_FRUSTRATIO_1 65535 - -#define G_MDSFT_BLENDER 16 - -#define G_MWO_CLIP_RPY 28 - -#define G_MWO_CLIP_RPX 20 - -#define G_ACMUX_PRIMITIVE 3 - -#define G_CCMUX_CENTER 6 - -#define G_SETKEYR 235 - -#define G_CCMUX_COMBINED_ALPHA 7 - -#define G_IM_SIZ_8b_SHIFT 1 - -#define G_MWO_MATRIX_WZ_WW_F 60 - -#define G_MDSFT_TEXTLOD 16 - -#define G_CK_KEY 256 - -#define G_MWO_MATRIX_WZ_WW_I 28 - -#define FR_POS_FRUSTRATIO_6 65530 - -#define FR_POS_FRUSTRATIO_4 65532 - -#define FR_POS_FRUSTRATIO_5 65531 - -#define G_CD_MAGICSQ 0 - -#define G_IM_SIZ_32b_INCR 0 - -#define G_CCMUX_PRIM_LOD_FRAC 14 - -#define G_IMMFIRST -65 - -#define G_MDSFT_COLORDITHER 22 - -#define G_TEXRECT 228 - -#define G_BL_A_SHADE 2 - -#define G_IM_FMT_YUV 1 - -#define G_CK_NONE 0 - -#define G_MTX 1 - -#define G_IM_SIZ_8b 1 - -#define G_TC_CONV 0 - -#define G_MV_TXTATT 150 - -#define G_ACMUX_SHADE 4 - -#define G_MWO_MATRIX_XZ_XW_F 36 - -#define CVG_DST_SAVE 768 - -#define G_DL_PUSH 0 - -#define G_MWO_MATRIX_XZ_XW_I 4 - -#define G_TEXTURE_GEN 262144 - -#define G_RDPCMDSIZ 64 - -#define G_SETCONVERT 236 - -#define G_CCMUX_NOISE 7 - -#define G_CCMUX_ENV_ALPHA 12 - -#define G_AC_THRESHOLD 1 - -#define G_IM_FMT_I 4 - -#define BOWTIE_VAL 0 - -#define G_MTX_PROJECTION 1 - -#define FORCE_BL 16384 - -#define G_MWO_POINT_RGBA 16 - -#define G_IM_SIZ_32b_LINE_BYTES 2 - -#define G_IM_SIZ_8b_LINE_BYTES 1 - -#define G_IM_SIZ_4b_LINE_BYTES 0 - -#define CVG_X_ALPHA 4096 - -#define G_TD_SHARPEN 131072 - -#define G_LIGHTING 131072 - -#define CVG_DST_WRAP 256 - -#define G_SHADE 4 - -#define G_MTX_PUSH 4 - -#define G_MAXZ 1023 - -#define G_RDP_TRI_FILL_MASK 8 - -#define G_SETGEOMETRYMODE -73 - -#define G_TRI_FILL_ZBUFF 201 - -#define G_IM_FMT_CI 2 - -#define G_IM_SIZ_8b_INCR 1 - -#define G_MWO_bLIGHT_3 68 - -#define G_MWO_bLIGHT_4 100 - -#define G_MWO_bLIGHT_1 4 - -#define G_TX_NOMASK 0 - -#define G_MWO_bLIGHT_2 36 - -#define G_MDSFT_TEXTLUT 14 - -#define G_IM_SIZ_8b_BYTES 1 - -#define G_SETCIMG 255 - -#define G_VTX 4 - -#define G_MWO_bLIGHT_7 196 - -#define G_MWO_bLIGHT_8 228 - -#define G_MWO_bLIGHT_5 132 - -#define G_MWO_bLIGHT_6 164 - -#define G_MDSFT_PIPELINE 23 - -#define G_RDPHALF_2 -77 - -#define G_CULL_BOTH 12288 - -#define G_CCMUX_0 31 - -#define G_TX_LDBLK_MAX_TXL 2047 - -#define G_CCMUX_1 6 - -#define G_RDPHALF_1 -76 - -#define G_SHADING_SMOOTH 512 - -#define G_CCMUX_SHADE 4 - -#define G_SPRITE2D 9 - -#define G_CCMUX_ENVIRONMENT 5 - -#define G_CULL_FRONT 4096 - -#define G_LOADTILE 244 - -#define G_FOG 65536 - -#define G_SETPRIMDEPTH 238 - -#define G_MV_LOOKATX 132 - -#define G_MV_LOOKATY 130 - -#define G_SC_NON_INTERLACE 0 - -#define G_MDSFT_BLENDMASK 0 - -#define G_MW_FOG 8 - -#define G_CD_ENABLE 128 - -#define G_TEXTURE_ENABLE 2 - -#define G_MDSFT_RENDERMODE 3 - -#define G_MWO_MATRIX_ZZ_ZW_I 20 - -#define G_MWO_MATRIX_ZZ_ZW_F 52 - -#define G_BL_1MA 0 - -#define G_SPNOOP 0 - -#define G_TF_BILERP 8192 - -#define G_SETZIMG 254 - -#define G_MV_VIEWPORT 128 - -#define G_NOOP 192 - -#define Z_UPD 32 - -#define G_ENDDL -72 - -#define G_ROTATE_FRAC 16 - -#define G_SETTILESIZE 242 - -#define G_RM_NOOP 0 - -#define G_RESERVED2 7 - -#define G_TD_DETAIL 262144 - -#define G_RESERVED3 8 - -#define G_RESERVED0 2 - -#define G_RESERVED1 5 - -#define G_CLEARGEOMETRYMODE -74 - -#define G_BL_A_FOG 1 - -#define G_BL_CLR_FOG 3 - -#define G_MW_SEGMENT 6 - -#define Z_CMP 16 - -#define AA_EN 8 - -#define G_LOADTLUT 240 - -#define NUMLIGHTS_5 5 - -#define NUMLIGHTS_4 4 - -#define NUMLIGHTS_7 7 - -#define NUMLIGHTS_6 6 - -#define G_MWO_MATRIX_YZ_YW_F 44 - -#define NUMLIGHTS_1 1 - -#define NUMLIGHTS_0 1 - -#define NUMLIGHTS_3 3 - -#define G_MWO_MATRIX_YZ_YW_I 12 - -#define NUMLIGHTS_2 2 - -#define G_SETFILLCOLOR 247 - -#define G_DL 6 - -#define G_BL_CLR_BL 2 - -#define G_CYC_COPY 2097152 - -#define G_MWO_SEGMENT_A 10 - -#define CLR_ON_CVG 128 - -#define G_RDP_ADDR_FIXUP 3 - -#define G_SETFOGCOLOR 248 - -#define G_MWO_SEGMENT_8 8 - -#define G_MWO_SEGMENT_9 9 - -#define G_MWO_SEGMENT_6 6 - -#define G_MWO_SEGMENT_7 7 - -#define G_MWO_SEGMENT_4 4 - -#define G_MWO_SEGMENT_5 5 - -#define G_MWO_SEGMENT_2 2 - -#define G_MWO_SEGMENT_3 3 - -#define G_MWO_SEGMENT_0 0 - -#define G_IMMCMDSIZ 64 - -#define G_MWO_SEGMENT_1 1 - -#define G_ACMUX_LOD_FRACTION 0 - -#define G_IM_SIZ_16b_TILE_BYTES 2 - -#define G_ACMUX_COMBINED 0 - -#define G_TL_TILE 0 - -#define G_MDSFT_TEXTPERSP 19 - -#define G_ACMUX_ENVIRONMENT 5 - -#define G_IM_SIZ_8b_TILE_BYTES 1 - -#define G_MWO_MATRIX_WX_WY_I 24 - -#define G_ACMUX_TEXEL1 2 - -#define G_SC_EVEN_INTERLACE 2 - -#define G_MDSFT_TEXTFILT 12 - -#define G_IM_SIZ_16b 2 - -#define LIGHT_6 6 - -#define LIGHT_5 5 - -#define G_TL_LOD 65536 - -#define LIGHT_8 8 - -#define LIGHT_7 7 - -#define LIGHT_2 2 - -#define LIGHT_1 1 - -#define G_IM_SIZ_4b_TILE_BYTES 0 - -#define LIGHT_4 4 - -#define G_MWO_SEGMENT_F 15 - -#define G_ACMUX_TEXEL0 1 - -#define G_MW_CLIP 4 - -#define LIGHT_3 3 - -#define G_MWO_SEGMENT_D 13 - -#define G_SCALE_FRAC 8 - -#define G_MWO_SEGMENT_E 14 - -#define G_MWO_SEGMENT_B 11 - -#define G_IM_SIZ_32b_TILE_BYTES 2 - -#define G_TT_NONE 0 - -#define G_MWO_SEGMENT_C 12 - -#define G_AD_PATTERN 0 - -#define G_TX_RENDERTILE 0 - -#define G_IM_SIZ_8b_LOAD_BLOCK 2 - -#define G_SC_ODD_INTERLACE 3 - -#define G_IM_SIZ_4b_LOAD_BLOCK 2 - -#define G_CD_NOISE 128 - -#define G_TRI_FILL 200 - -#define G_FILLRECT 246 - -#define G_SETPRIMCOLOR 250 - -#define G_TEXRECTFLIP 229 - -#define G_MWO_MATRIX_WX_WY_F 56 - -#define G_MDSFT_ZSRCSEL 2 - -#define G_RDPSETOTHERMODE 239 - -#define G_IM_SIZ_16b_LINE_BYTES 2 - -#define G_TRI_SHADE_TXTR_ZBUFF 207 - -#define G_TF_POINT 0 - -#define G_CCMUX_SCALE 6 - -#define G_MWO_MATRIX_ZX_ZY_I 16 - -#define TEX_EDGE 0 - -#define G_MOVEWORD -68 - -#define G_RM_PASS 201850880 - -#define G_MAXFBZ 16383 - -#define CVG_DST_CLAMP 0 - -#define G_RDPFULLSYNC 233 - -#define G_DL_NOPUSH 1 - -#define G_CCMUX_COMBINED 0 - -#define G_TX_WRAP 0 - -#define G_MWO_POINT_ST 20 - -#define G_TRI_TXTR_ZBUFF 203 - -#define G_TRI1 -65 - -#define ZMODE_INTER 1024 - -#define G_MDSFT_ALPHACOMPARE 0 - -#define G_IM_SIZ_32b_SHIFT 0 - -#define G_AC_DITHER 3 - -#define G_TC_FILTCONV 2560 - -#define G_MTX_LOAD 2 - -#define G_CCMUX_PRIMITIVE 3 - -#define G_MW_LIGHTCOL 10 - -#define G_MW_POINTS 12 - -#define G_TC_FILT 3072 - -#define G_IM_SIZ_4b_INCR 3 - -#define G_MDSFT_ALPHADITHER 4 - -#define G_CCMUX_SHADE_ALPHA 11 - -#define ZMODE_OPA 0 - -#define G_BL_A_MEM 1 - -#define G_MWO_MATRIX_ZX_ZY_F 48 - -#define G_TP_NONE 0 - -#define G_SETOTHERMODE_H -70 - -#define FR_NEG_FRUSTRATIO_6 6 - -#define G_RDP_TRI_TXTR_MASK 2 - -#define FR_NEG_FRUSTRATIO_5 5 - -#define G_SETOTHERMODE_L -71 - -#define FR_NEG_FRUSTRATIO_4 4 - -#define FR_NEG_FRUSTRATIO_3 3 - -#define FR_NEG_FRUSTRATIO_2 2 - -#define FR_NEG_FRUSTRATIO_1 1 - -#define G_MWO_MATRIX_XX_XY_I 0 - -#define G_TX_DXT_FRAC 11 - -#define G_TT_RGBA16 32768 - -#define G_ZS_PIXEL 0 - -#define G_MW_MATRIX 0 - -#define G_CCMUX_PRIMITIVE_ALPHA 10 - -#define G_LOD 1048576 - -#define G_TRI_SHADE 204 - -#define G_MV_L5 144 - -#define G_CYC_1CYCLE 0 - -#define G_MV_L4 142 - -#define G_MV_L3 140 - -#define G_SETCOMBINE 252 - -#define G_MV_L2 138 - -#define G_IM_SIZ_16b_LOAD_BLOCK 2 - -#define G_MV_L7 148 - -#define G_MV_L6 146 - -#define G_CCMUX_LOD_FRACTION 13 - -#define G_RDP_TRI_ZBUFF_MASK 1 - -#define G_TEXTURE -69 - -#define G_TEXTURE_IMAGE_FRAC 2 - -#define G_MW_NUMLIGHT 2 - -#define G_TD_CLAMP 0 - -#define G_MDSFT_TEXTDETAIL 17 - -#define G_IM_FMT_RGBA 0 - -#define G_SETTILE 245 - -#define G_CCMUX_TEXEL1_ALPHA 9 - -#define G_BL_A_IN 0 - -#define G_MV_L1 136 - -#define G_MV_L0 134 - -#define G_IM_SIZ_32b 3 - -#define G_AD_DISABLE 48 - -#define G_IM_SIZ_4b_BYTES 0 - -#define IM_RD 64 - -#define G_IM_SIZ_16b_BYTES 2 - -#define G_CCMUX_TEXEL1 2 - -#define G_CCMUX_TEXEL0 1 - -#define G_BL_CLR_IN 0 - -#define G_CD_BAYER 64 - -#define G_SETENVCOLOR 251 - -#define G_MV_MATRIX_4 156 - -#define G_MWO_POINT_ZSCREEN 28 - -#define G_RDPLOADSYNC 230 - -#define G_ZS_PRIM 4 - -#define G_MDSFT_RGBDITHER 6 - -#define G_RDPHALF_CONT -78 - -#define G_RM_FOG_SHADE_A 3355443200 - -#define G_AC_NONE 0 - -#define G_IM_SIZ_4b_SHIFT 2 - -#define G_MV_MATRIX_3 154 - -#define G_TF_AVERAGE 12288 - -#define G_MV_MATRIX_2 152 - -#define G_MV_MATRIX_1 158 - -#define G_CCMUX_TEXEL0_ALPHA 8 - -#define G_TX_NOLOD 0 - -#define G_MW_PERSPNORM 14 - -#define G_SETKEYGB 234 - -#define G_IM_SIZ_32b_LOAD_BLOCK 3 - -#define G_SETBLENDCOLOR 249 - -#define G_SETTIMG 253 - -#define G_CV_K2 -89 - -#define G_CV_K1 -43 - -#define G_CV_K0 175 - -#define G_RM_FOG_PRIM_A 3288334336 - -#define G_BL_0 3 - -#define G_TRI_SHADE_TXTR 206 - -#define G_LINE3D -75 - -#define G_BL_1 2 - -#define G_TEXTURE_GEN_LINEAR 524288 - -#define G_CV_K5 42 - -#define G_TX_MIRROR 1 - -#define G_CV_K4 114 - -#define G_CV_K3 222 - -#define G_RDP_TRI_SHADE_MASK 4 - -#define G_IM_SIZ_16b_INCR 0 - -#define G_TRI_TXTR 202 - -#define ALPHA_CVG_SEL 8192 - -#define CVG_DST_FULL 512 - -#define G_CULL_BACK 8192 - -#define G_MTX_NOPUSH 0 - -#define G_MTX_MUL 0 - -#define G_IM_SIZ_32b_BYTES 4 - -#define G_AD_NOISE 32 - -#define G_ACMUX_PRIM_LOD_FRAC 6 - -#define G_MWO_FOG 0 - -#define G_MWO_POINT_XYSCREEN 24 - -#define G_MWO_MATRIX_XX_XY_F 32 - -#define G_ZBUFFER 1 - -typedef ulong size_t; - -typedef struct exception exception, *Pexception; - -struct exception { - int anonymous_0; - int anonymous_1; - void * error; -}; - -typedef struct c_itementry c_itementry, *Pc_itementry; - -typedef struct object_header object_header, *Pobject_header; - -struct c_itementry { - struct object_header * header; - void * filename; - float anonymous_1; - float anonymous_2; - int anonymous_3; -}; - -struct object_header { - int offset_obj_table; - void * ptr_archetype; - int offset_obj_offset_block; - short num_offset_entries; - short num_object_grps; - float anonymous_4; - short num_table_entries; - short num_image_entries; - int offset_img_declaration; - int is_loaded_in_mem; -}; - -typedef struct $732F89B2624665A943E52F38E86E4CBC $732F89B2624665A943E52F38E86E4CBC, *P$732F89B2624665A943E52F38E86E4CBC; - -struct $732F89B2624665A943E52F38E86E4CBC { -}; - -typedef enum KSEG { -} KSEG; - -typedef struct $B84834CAACFDCE10B1334219ADA11FDA $B84834CAACFDCE10B1334219ADA11FDA, *P$B84834CAACFDCE10B1334219ADA11FDA; - -typedef struct $B84834CAACFDCE10B1334219ADA11FDA ALGlobals; - -typedef struct ALSynth ALSynth, *PALSynth; - -typedef struct ALPlayer_s ALPlayer_s, *PALPlayer_s; - -typedef struct ALPlayer_s ALPlayer; - -typedef ALDMAproc (* ALDMANew)(void *); - -typedef struct ALHeap ALHeap, *PALHeap; - -typedef s32 ALMicroTime; - -typedef ALMicroTime (* ALVoiceHandler)(void *); - -struct ALSynth { - ALPlayer * head; - ALLink pFreeList; - ALLink pAllocList; - ALLink pLameList; - s32 paramSamples; - s32 curSamples; - ALDMANew dma; - struct ALHeap * heap; - struct ALParam_s * paramList; - struct ALMainBus_s * mainBus; - struct ALAuxBus_s * auxBus; - struct ALFilter_s * outputFilter; - s32 numPVoices; - s32 maxAuxBusses; - s32 outputRate; - s32 maxOutSamples; -}; - -struct $B84834CAACFDCE10B1334219ADA11FDA { - struct ALSynth drvr; -}; - -struct ALHeap { - u8 * base; - u8 * cur; - s32 len; - s32 count; -}; - -struct ALPlayer_s { - struct ALPlayer_s * next; - void * clientData; - ALVoiceHandler handler; - ALMicroTime callTime; - s32 samplesLeft; -}; - -typedef struct p_itementry p_itementry, *Pp_itementry; - -typedef struct PitemZ_header PitemZ_header, *PPitemZ_header; - -typedef struct item_related item_related, *Pitem_related; - -struct PitemZ_header { - int microcode_entry_num; - struct item_related * anonymous_1; - short anonymous_2; - short field_E; - float drawdistance; - float anonymous_4; - int anonymous_5; - int anonymous_6; - int anonymous_7; -}; - -struct p_itementry { - struct PitemZ_header * header; - void * filename; - float scale; -}; - -struct item_related { - short num_entries_in_block; - short field_2; - struct prop_pos_data * ptr_block; - short total_cmd_indexval; - short field_A; -}; - -typedef struct weapon_firing_animation_table weapon_firing_animation_table, *Pweapon_firing_animation_table; - -struct weapon_firing_animation_table { - s32 anonymous_0; - f32 anonymous_1; - f32 anonymous_2; - f32 anonymous_3; - f32 anonymous_4; - f32 anonymous_5; - f32 anonymous_6; - f32 anonymous_7; - f32 anonymous_8; - f32 anonymous_9; - f32 anonymous_10; - f32 anonymous_11; - f32 anonymous_12; - f32 anonymous_13; - f32 anonymous_14; - f32 anonymous_15; - f32 anonymous_16; - f32 anonymous_17; -}; - -typedef struct Gitemheader Gitemheader, *PGitemheader; - -typedef struct model_data model_data, *Pmodel_data; - -struct Gitemheader { - int offset_objtable; - struct model_data * guntype_modeldata; - int offset_objblock; - short num05soffset_entries; - short num_objgroups; - float drawdistance; - u16 num_entries; - u16 num_images; - int offset_imgdecl; - u32 isloaded; -}; - -struct model_data { - u32 anonymous_0; - struct prop_pos_data * anonymous_1; - u32 anonymous_2; -}; - -typedef struct mp_weaponset_weapon mp_weaponset_weapon, *Pmp_weaponset_weapon; - -struct mp_weaponset_weapon { - int anonymous_0; - int anonymous_1; - float anonymous_2; - int anonymous_3; - int anonymous_4; - int anonymous_5; -}; - -typedef struct ramrom_struct ramrom_struct, *Pramrom_struct; - -typedef struct ramrom_entry ramrom_entry, *Pramrom_entry; - -struct ramrom_entry { - int ROMaddress; - int is_locked; -}; - -struct ramrom_struct { - struct ramrom_entry dam1; - struct ramrom_entry dam2; - struct ramrom_entry facility1; - struct ramrom_entry facility2; - struct ramrom_entry facility3; - struct ramrom_entry runway1; - struct ramrom_entry runway2; - struct ramrom_entry bunker1_1; - struct ramrom_entry bunker1_2; - struct ramrom_entry silo1; - struct ramrom_entry silo2; - struct ramrom_entry frigate1; - struct ramrom_entry frigate2; - struct ramrom_entry train; - struct ramrom_entry null; -}; - -typedef struct $9574A80C820E0B95666ECD0A99E160BE $9574A80C820E0B95666ECD0A99E160BE, *P$9574A80C820E0B95666ECD0A99E160BE; - -typedef struct $9574A80C820E0B95666ECD0A99E160BE ALSeqData; - -struct $9574A80C820E0B95666ECD0A99E160BE { - u8 * offset; -}; - -typedef struct mp_stage_playercount mp_stage_playercount, *Pmp_stage_playercount; - -struct mp_stage_playercount { - short stage; - char min; - char max; -}; - -typedef struct music_setup music_setup, *Pmusic_setup; - -struct music_setup { - short stage_id; - short main_music; - short bg_sound; - short xtrack; -}; - -typedef struct MP_game_length_settings MP_game_length_settings, *PMP_game_length_settings; - -struct MP_game_length_settings { - u16 text_preset; - u16 padding; - int time; - int points; -}; - - -// WARNING! conflicting data type names: /GE Current Master.h/ALVoiceHandler - /libaudio.h/ALVoiceHandler - -typedef struct memoryallocation memoryallocation, *Pmemoryallocation; - -struct memoryallocation { - int number; - void * string; -}; - -typedef struct $62F109188EB304B8EC258AA93B51CC96 $62F109188EB304B8EC258AA93B51CC96, *P$62F109188EB304B8EC258AA93B51CC96; - -struct $62F109188EB304B8EC258AA93B51CC96 { -}; - - -// WARNING! conflicting data type names: /GE Current Master.h/rgba_val - /bondgame.h/rgba_val - - -// WARNING! conflicting data type names: /GE Current Master.h/LEVEL_SOLO_SEQUENCE - /bondgame.h/LEVEL_SOLO_SEQUENCE - -typedef struct mcm_layout mcm_layout, *Pmcm_layout; - -struct mcm_layout { - int xpos; - int ypos; -}; - -typedef struct GUARDdata GUARDdata, *PGUARDdata; - -struct GUARDdata { - u16 chrnum; - char accuracyrating; - char speedrating; - char firecount.left; - char firecount.right; - char headnum; - enum guard_action_type actiontype; - char sleep; - char invalidmove; - char numclosearghs; - char numarghs; - char fadealpha; - char field_D; - char field_E; - char bodynum; - char beligerancy; - char field_11; - short special_bitflags; - int guard_bitflags; - int POSdata_pointer; - int MODELdata_pointer; - int pertains_to_action61; - f32 chrwidth; - int chrheight; - int bond_position; - int field_30; - short field_34; - char field_36; - char field_37; - char field_38; - char field_39; - char field_3A; - char field_3B; - int path_target_position; - int field_40; - int field_44; - int field_48; - int field_4C; - int field_50; - int field_54; - char type_of_motion; - char distance_counter_or_something; - short distance_to_target; - int field_5C; - int target_position; - int field_64; - int field_68; - int field_6C; - int path_segment_coverage; - int path_segment_length; - int field_78; - int field_7C; - int field_80; - int field_84; - int field_88; - int field_8C; - int field_90; - int segment_coverage; - int segment_length; - int field_9C; - int field_A0; - float field_A4; - float field_A8; - float clipping_height; - float field_B0; - float field_B4; - float field_B8; - struct xyzpoint prevpos; - int field_C8; - int field_CC; - float reaction_time; - int last_bond_detection_time; - float field_D8; - float field_DC; - float field_E0; - int lastshooter; - int timeshooter; - float hearingscale; - int field_F0; - char field_F4; - char field_F5; - char field_F6; - char field_F7; - char field_F8; - char field_F9; - char field_FA; - char field_FB; - int damage; - f32 maxdamage; - int action_block_pointer; - short action_block_offset; - short action_block_return; - char userbyte1; - char userbyte2; - char guardtype_bitflags_scientist; - char randomvalue; - int loopcounter; - short preset_of_2328_object_to_interact_with; - short FC_target; - short FA_target; - short FB_target; - int field_11C; - int field_120; - int field_124; - int field_128; - int field_12C; - int field_130; - int field_134; - int field_138; - float field_13C; - float field_140; - float field_144; - float field_148; - float field_14C; - int field_150; - int field_154; - int field_158; - int field_15C; - int handle_positiondata_right_gun; - int handle_positiondata_left_gun; - int ptr_SEbuffer1; - int ptr_SEbuffer2; - int ptr_SEbuffer3; - int ptr_SEbuffer4; - int field_178; - int field_17C; - char field_180; - char field_181; - char field_182; - char field_183; - int field_184; - int field_188; - int field_18C; - int field_190; - int field_194; - int field_198; - int field_19C; - int field_1A0; - int field_1A4; - int field_1A8; - char field_1AC; - char field_1AD; - char field_1AE; - char field_1AF; - int field_1B0; - int field_1B4; - int field_1B8; - int field_1BC; - int field_1C0; - int field_1C4; - int field_1C8; - int field_1CC; - int field_1D0; - int field_1D4; - int handle_positiondata_hat; -}; - -typedef struct intro_animation intro_animation, *Pintro_animation; - -struct intro_animation { - int animID; - float startframeoffset; - float playback_speed; - int camera_preset; -}; - -typedef struct $4BEAA6302150DFF77A6D6B5C2F812979 $4BEAA6302150DFF77A6D6B5C2F812979, *P$4BEAA6302150DFF77A6D6B5C2F812979; - -struct $4BEAA6302150DFF77A6D6B5C2F812979 { - float col[3]; - float pos[3]; - float a1; - float a2; -}; - -typedef struct playerperm playerperm, *Pplayerperm; - -struct playerperm { - int shotcount[7]; - int killcount; - int ggkillcount; - int kills[4]; - int drawplayercount; - float distance; - int backshotcount; - float armourcount; - int fastest2kills; - int slowest2kills; - int longestlife; - s32 shortestlife; - int most_killed_one_life; - int most_killed_one_time; - float handicap; - int flag_counter; - float player_perspective_height; - char order_out_in_yolt; - char have_token_or_goldengun; - char autoaim; - char sight; - int killed_civilians; -}; - -typedef struct $B24B31290AB3F51AC02030577BB60BEE $B24B31290AB3F51AC02030577BB60BEE, *P$B24B31290AB3F51AC02030577BB60BEE; - -struct $B24B31290AB3F51AC02030577BB60BEE { -}; - -typedef struct $1D3114E51680E29F8350BFE921C29711 $1D3114E51680E29F8350BFE921C29711, *P$1D3114E51680E29F8350BFE921C29711; - -typedef struct $1D3114E51680E29F8350BFE921C29711 ALKeyMap; - -struct $1D3114E51680E29F8350BFE921C29711 { - u8 velocityMin; - u8 velocityMax; - u8 keyMin; - u8 keyMax; - u8 keyBase; - s8 detune; -}; - -typedef struct enviroment_struct enviroment_struct, *Penviroment_struct; - -struct enviroment_struct { - int index; - float anonymous_0; - float anonymous_1; - float anonymous_2; - float anonymous_3; - float anonymous_4; - int anonymous_5; - int anonymous_6; - int anonymous_7; - int anonymous_8; - int anonymous_9; - float anonymous_10; - int anonymous_11; - float anonymous_12; - float anonymous_13; - float anonymous_14; - int anonymous_15; - float anonymous_16; - int anonymous_17; - int anonymous_18; - float anonymous_19; - float anonymous_20; - float anonymous_21; -}; - -typedef struct $2903A050EBC6442F98207E1AE6ED2D96 $2903A050EBC6442F98207E1AE6ED2D96, *P$2903A050EBC6442F98207E1AE6ED2D96; - -typedef struct $2903A050EBC6442F98207E1AE6ED2D96 ALSndPlayer; - -typedef struct ALEventQueue ALEventQueue, *PALEventQueue; - -typedef struct ALEvent ALEvent, *PALEvent; - -typedef union _union_144 _union_144, *P_union_144; - -typedef struct ALMIDIEvent ALMIDIEvent, *PALMIDIEvent; - -typedef struct ALTempoEvent ALTempoEvent, *PALTempoEvent; - -typedef struct ALEndEvent ALEndEvent, *PALEndEvent; - -typedef struct ALNoteEvent ALNoteEvent, *PALNoteEvent; - -typedef struct ALVolumeEvent ALVolumeEvent, *PALVolumeEvent; - -typedef struct ALSeqpLoopEvent ALSeqpLoopEvent, *PALSeqpLoopEvent; - -typedef struct ALSeqpVolEvent ALSeqpVolEvent, *PALSeqpVolEvent; - -typedef struct ALSeqpPriorityEvent ALSeqpPriorityEvent, *PALSeqpPriorityEvent; - -typedef struct ALSeqpSeqEvent ALSeqpSeqEvent, *PALSeqpSeqEvent; - -typedef struct ALSeqpBankEvent ALSeqpBankEvent, *PALSeqpBankEvent; - -typedef struct ALOscEvent ALOscEvent, *PALOscEvent; - -typedef struct ALSeqMarker ALSeqMarker, *PALSeqMarker; - -typedef struct ALBank_s ALBank_s, *PALBank_s; - -typedef struct ALBank_s ALBank; - -typedef struct ALVoiceState_s ALVoiceState_s, *PALVoiceState_s; - -typedef struct ALInstrument ALInstrument, *PALInstrument; - -typedef struct ALVoice_s ALVoice; - -typedef struct ALSound_s ALSound_s, *PALSound_s; - -typedef struct ALSound_s ALSound; - -typedef struct ALEnvelope ALEnvelope, *PALEnvelope; - - -// WARNING! conflicting data type names: /libaudio.h/ALKeyMap - /GE Current Master.h/ALKeyMap - -struct ALEndEvent { - s32 ticks; - u8 status; - u8 type; - u8 len; -}; - -struct ALSeqpBankEvent { - ALBank * bank; -}; - -struct ALMIDIEvent { - s32 ticks; - u8 status; - u8 byte1; - u8 byte2; - u32 duration; -}; - -struct ALVolumeEvent { - struct ALVoice_s * voice; - ALMicroTime delta; - u8 vol; -}; - -struct ALSeqpPriorityEvent { - u8 chan; - u8 priority; -}; - -struct ALOscEvent { - struct ALVoiceState_s * vs; - void * oscState; - u8 chan; -}; - -struct ALSeqpLoopEvent { - struct ALSeqMarker * start; - struct ALSeqMarker * end; - s32 count; -}; - -struct ALTempoEvent { - s32 ticks; - u8 status; - u8 type; - u8 len; - u8 byte1; - u8 byte2; - u8 byte3; -}; - -struct ALSeqpVolEvent { - s16 vol; -}; - -struct ALNoteEvent { - struct ALVoice_s * voice; -}; - -struct ALSeqpSeqEvent { - void * seq; -}; - -union _union_144 { - struct ALMIDIEvent midi; - struct ALTempoEvent tempo; - struct ALEndEvent end; - struct ALNoteEvent note; - struct ALVolumeEvent vol; - struct ALSeqpLoopEvent loop; - struct ALSeqpVolEvent spvol; - struct ALSeqpPriorityEvent sppriority; - struct ALSeqpSeqEvent spseq; - struct ALSeqpBankEvent spbank; - struct ALOscEvent osc; -}; - -struct ALEvent { - s16 type; - union _union_144 msg; -}; - -struct ALBank_s { - s16 instCount; - u8 flags; - u8 pad; - s32 sampleRate; - struct ALInstrument * percussion; - struct ALInstrument * instArray[1]; -}; - -struct ALInstrument { - u8 volume; - ALPan pan; - u8 priority; - u8 flags; - u8 tremType; - u8 tremRate; - u8 tremDepth; - u8 tremDelay; - u8 vibType; - u8 vibRate; - u8 vibDepth; - u8 vibDelay; - s16 bendRange; - s16 soundCount; - ALSound * soundArray[1]; -}; - -struct ALEventQueue { - ALLink freeList; - ALLink allocList; - s32 eventCount; -}; - -struct ALEnvelope { - ALMicroTime attackTime; - ALMicroTime decayTime; - ALMicroTime releaseTime; - u8 attackVolume; - u8 decayVolume; -}; - -struct $2903A050EBC6442F98207E1AE6ED2D96 { - ALPlayer node; - struct ALEventQueue evtq; - struct ALEvent nextEvent; - struct ALSynth * drvr; - void * sndState; -}; - -struct ALVoiceState_s { - struct ALVoiceState_s * next; - ALVoice voice; - ALSound * sound; - ALMicroTime envEndTime; - f32 pitch; - f32 vibrato; - u8 envGain; - u8 channel; - u8 key; - u8 velocity; - u8 envPhase; - u8 phase; - u8 tremelo; - u8 flags; -}; - -struct ALSound_s { - struct ALEnvelope * envelope; - struct ALKeyMap * keyMap; - ALWaveTable * wavetable; - ALPan samplePan; - u8 sampleVolume; - u8 flags; -}; - -struct ALSeqMarker { - u8 * curPtr; - s32 lastTicks; - s32 curTicks; - s16 lastStatus; -}; - - -// WARNING! conflicting data type names: /GE Current Master.h/PROJECTILES - /bondgame.h/PROJECTILES - -typedef struct solo_target_times solo_target_times, *Psolo_target_times; - -struct solo_target_times { - short agent_time; - short secret_agent_time; - short OO_agent_time; -}; - -typedef struct ejected_cart ejected_cart, *Pejected_cart; - -struct ejected_cart { - struct Gitemheader * header; - u8 * text; -}; - -typedef struct mission_folder_setup mission_folder_setup, *Pmission_folder_setup; - -struct mission_folder_setup { - void * string_ptr; - short folder_text_preset; - short icon_text_preset; - int stage_id; - int unknown; - int type; - int mission_num; - void * briefing_name_ptr; -}; - -typedef struct MP_selectable_chars MP_selectable_chars, *PMP_selectable_chars; - -struct MP_selectable_chars { - short text_preset; - char gender; - char select_photo; - short body; - short head; - float pov; +struct s_pBONDData { + struct Player * p1; + struct Player * p2; + struct Player * p3; + struct Player * p4; }; -typedef struct $DD54060F307CC511C1231C522D614BD1 $DD54060F307CC511C1231C522D614BD1, *P$DD54060F307CC511C1231C522D614BD1; - -struct $DD54060F307CC511C1231C522D614BD1 { - uchar * base; - int fmt; - int siz; - int xsize; - int ysize; - int lsize; - int addr; - int w; - int h; - int s; - int t; +struct xyzpoint { + f32 x; + f32 y; + f32 z; }; -typedef struct explosion_death_animation explosion_death_animation, *Pexplosion_death_animation; - -struct explosion_death_animation { - int anonymous_0; - int anonymous_1; - float anonymous_2; - float anonymous_3; - float anonymous_4; - float anonymous_5; - float anonymous_6; +struct Player_SubStruct_7D0 { + u16 field_7D0; + u16 field_7D2; + u16 field_7D4; + u16 field_7D6; + u16 field_7D8; + u16 field_7DA; + u16 field_7DC; + u16 field_7DE; }; -typedef struct Player Player, *PPlayer; - struct Player { int unknown; f32 xpos; @@ -9071,18 +604,9 @@ struct Player { f32 field_3C4; f32 field_3C8; f32 field_3CC; - char field_3D0; - char field_3D1; - char field_3D2; - char tint_red; - char field_3D4; - char field_3D5; - char field_3D6; - char tint_green; - char field_3D8; - char field_3D9; - char field_3DA; - char tint_blue; + u32 tint_red; + u32 tint_green; + u32 tint_blue; float tint_alpha; f32 field_3E0; float timer_for_fade; @@ -9099,7 +623,7 @@ struct Player { int field_410; int field_414; int field_418; - int cuff_value; + enum CUFF_TYPES cuff_value; int field_420; int field_424; int field_428; @@ -9336,21 +860,15 @@ struct Player { int field_7C4; int field_7C8; int field_7CC; - int field_7D0; - int field_7D4; - int field_7D8; - int field_7DC; - int field_7E0; - int field_7E4; - int field_7E8; - int field_7EC; + struct Player_SubStruct_7D0 field_7D0; + struct Player_SubStruct_7D0 field_7E0; short viewx; short viewy; short viewleft; short viewtop; int hand_invisible[2]; - int hand_item[2]; - void * ptr_hand_weapon_buffer[2]; + enum ITEM_IDS hand_item[2]; + u8 * ptr_hand_weapon_buffer[2]; int copy_of_body_obj_header[8]; int copy_of_right_weapon_obj_header[8]; int field_850; @@ -11475,7 +2993,7 @@ struct Player { int deathcount; int num_suicides; int field_29E0; - int field_29E4; + int last_kill_time; int field_29E8; int field_29EC; int field_29F0; @@ -11496,7 +3014,7 @@ struct Player { int field_2A2C; int field_2A30; int field_2A34; - int field_2A38; + int cur_item_weapon_getname; f32 actual_health; f32 actual_armor; int field_2A44[2]; @@ -11514,6 +3032,10766 @@ struct Player { int field_2A7C; }; +typedef struct indy_resource_entry indy_resource_entry, *Pindy_resource_entry; + +struct indy_resource_entry { + u32 resourceID; + s32 type; + s32 size; + s32 readsize; + s32 writesize; +}; + +typedef struct s_mempBANK s_mempBANK, *Ps_mempBANK; + +struct s_mempBANK { + s32 bankstart; + s32 nextentry; + s32 bankend; + void * data2; +}; + +typedef struct player_gait_header player_gait_header, *Pplayer_gait_header; + +typedef struct player_gait_object_entry player_gait_object_entry, *Pplayer_gait_object_entry; + +typedef struct player_gait_pos_header player_gait_pos_header, *Pplayer_gait_pos_header; + +typedef struct player_gait_position_entry player_gait_position_entry, *Pplayer_gait_position_entry; + +struct player_gait_object_entry { + u32 field_0x0; + struct player_gait_header * ptr_header; + u32 field_0x8; + u32 field_0xc; +}; + +struct player_gait_position_entry { + float flt_1; + float flt_2; + float flt_3; + u16 field_0xc; + u16 field_0xe; + u16 field_0x10; + u16 field_0x12; + struct player_gait_header * ptr_header; + u32 field_0x18; +}; + +struct player_gait_pos_header { + u8 field_0x0; + u8 type; + u16 field_0x2; + struct player_gait_position_entry * entry; + struct player_gait_header * previous; + void * field_0xc; + void * field_0x10; + struct player_gait_header * next; +}; + +struct player_gait_header { + u8 field_0x0; + u8 type; + u16 field_0x2; + struct player_gait_object_entry * entry; + struct player_gait_header * previous; + void * field_0xc; + void * field_0x10; + struct player_gait_pos_header * next; +}; + +typedef struct LnameX_table_entry LnameX_table_entry, *PLnameX_table_entry; + +struct LnameX_table_entry { + string * extext; + string * jtext; +}; + +typedef struct portal_table_entry portal_table_entry, *Pportal_table_entry; + + +// WARNING! conflicting data type names: /types.h/s32 - /ultratypes.h/s32 + +struct portal_table_entry { + s32 id; + s32 x_min; + s32 y_min; + s32 x_max; + s32 y_max; +}; + +typedef struct resource_lookup_data_entry resource_lookup_data_entry, *Presource_lookup_data_entry; + +struct resource_lookup_data_entry { + u32 rom_size; + s32 pc_remaining; + u32 pc_size; + u32 buffer_remaining; + u8 loaded_bank; + u8 unk_11; + u16 reserved; +}; + +typedef struct firing_anim_struct firing_anim_struct, *Pfiring_anim_struct; + +struct firing_anim_struct { + pointer pointer; + dword anim; + f32 x; + f32 y; + f32 z; +}; + +typedef struct fog_element fog_element, *Pfog_element; + +struct fog_element { + u32 stageID; + f32 blendmultiplier; + f32 farfog; + f32 nearfog; + f32 maxvisrange; + f32 maxobfuscationrange; + f32 minvisrange; + u32 intensity; + u32 dif_in_light; + u32 far_ambiantlight; + u8 red; + u8 green; + u8 blue; + u8 clouds; + f32 cloudrepeat; + u16 skyimageid; + u16 reserved; + f32 cloudred; + f32 cloudgreen; + f32 cloudblue; + u8 iswater; + u8 padding[3]; + f32 waterrepeat; + u16 waterimageid; + u16 reserved2; + f32 waterred; + f32 watergreen; + f32 waterblue; + f32 waterconcavity; +}; + +typedef struct s_mainloop_unk s_mainloop_unk, *Ps_mainloop_unk; + +struct s_mainloop_unk { + undefined4 dword_80024304; + undefined4 dword_80024308; + undefined4 dword_8002430C; + undefined4 dword_80024310; + undefined4 dword_80024314; + undefined4 dword_80024318; + undefined4 dword_8002431C; + undefined4 dword_80024320; +}; + +typedef enum STAGENUM { + SP_STAGE_ARCHIVES=10, + SP_STAGE_AZTEK=18, + SP_STAGE_BUNKER1=4, + SP_STAGE_BUNKER2=8, + SP_STAGE_CAVERNS=16, + SP_STAGE_CONTROL=15, + SP_STAGE_CRADLE=17, + SP_STAGE_DAM=0, + SP_STAGE_DEPOT=12, + SP_STAGE_EGYPT=19, + SP_STAGE_FACILITY=1, + SP_STAGE_FRIGATE=6, + SP_STAGE_JUNGLE=14, + SP_STAGE_MAX=20, + SP_STAGE_RUNWAY=2, + SP_STAGE_SILO=5, + SP_STAGE_STATUE=9, + SP_STAGE_STREETS=11, + SP_STAGE_SURFACE1=3, + SP_STAGE_SURFACE2=7, + SP_STAGE_TRAIN=13 +} STAGENUM; + +typedef enum PLAYER_ID { + PLAYER1=0, + PLAYER2=1, + PLAYER3=2, + PLAYER4=3 +} PLAYER_ID; + +typedef struct indy_read_buf indy_read_buf, *Pindy_read_buf; + + +// WARNING! conflicting data type names: /types.h/u32 - /ultratypes.h/u32 + +struct indy_read_buf { + u32 resourceID; + s32 type; + s32 size; +}; + +typedef struct sfxdata sfxdata, *Psfxdata; + +struct sfxdata { + s32 target_volume; + s32 audio_range_time; + s32 initial_volume; + void * preset_emitter; + void * object_emitter; +}; + +typedef struct ramromfilestructure ramromfilestructure, *Pramromfilestructure; + +typedef double f64; + +typedef enum LEVELID { + LEVELID_ARCHIVES=24, + LEVELID_AZTEC=28, + LEVELID_BASEMENT=45, + LEVELID_BUNKER1=9, + LEVELID_BUNKER2=27, + LEVELID_CAVERNS=39, + LEVELID_CAVES=50, + LEVELID_CITADEL=40, + LEVELID_COMPLEX=31, + LEVELID_CONTROL=23, + LEVELID_CRADLE=41, + LEVELID_CUBA=54, + LEVELID_DAM=33, + LEVELID_DEPOT=30, + LEVELID_EAR=51, + LEVELID_EGYPT=32, + LEVELID_ELD=44, + LEVELID_FACILITY=34, + LEVELID_FRIGATE=26, + LEVELID_JUNGLE=37, + LEVELID_LEE=52, + LEVELID_LIBRARY=48, + LEVELID_LIP=53, + LEVELID_LUE=47, + LEVELID_MAX=57, + LEVELID_NONE=-1, + LEVELID_PAM=56, + LEVELID_RIT=49, + LEVELID_RUNWAY=35, + LEVELID_SHO=42, + LEVELID_SILO=20, + LEVELID_STACK=46, + LEVELID_STATUE=22, + LEVELID_STREETS=29, + LEVELID_SURFACE=36, + LEVELID_SURFACE2=43, + LEVELID_TEMPLE=38, + LEVELID_TITLE=90, + LEVELID_TRAIN=25, + LEVELID_WAX=55 +} LEVELID; + +typedef enum DIFFICULTY { + DIFFICULTY_00=2, + DIFFICULTY_007=3, + DIFFICULTY_AGENT=0, + DIFFICULTY_MULTI=-1, + DIFFICULTY_SECRET=1 +} DIFFICULTY; + +typedef enum GAMEMODE { + GAMEMODE_CHEATS=2, + GAMEMODE_INTRO=-1, + GAMEMODE_MULTI=1, + GAMEMODE_SOLO=0 +} GAMEMODE; + +struct ramromfilestructure { + f64 randomseed; + f64 randomizer; + enum LEVELID stagenum; + enum DIFFICULTY difficulty; + u32 size_cmds; + struct save_file savefile; + f32 totaltime_ms; + u32 filesize; + enum GAMEMODE mode; + u32 slotnum; + u32 numplayers; + u32 scenario; + u32 mpstage_sel; + u32 gamelength; + u32 mp_weapon_set; + u32 p1_mp_char; + u32 p2_mp_char; + u32 p3_mp_char; + u32 p4_mp_char; + u32 p1_handi; + u32 p2_handi; + u32 p3_handi; + u32 p4_handi; + u32 p1_contstyle; + u32 p2_contstyle; + u32 p3_contstyle; + u32 p4_contstyle; + u32 aim_option; + u32 p1_flags; + u32 p2_flags; + u32 p3_flags; + u32 p4_flags; + u32 controlerstatepackets; +}; + +typedef struct s_mem_alloc_table s_mem_alloc_table, *Ps_mem_alloc_table; + +struct s_mem_alloc_table { + struct s_mem_alloc_entry entries[512]; +}; + +typedef struct bg_portal_entry bg_portal_entry, *Pbg_portal_entry; + +struct bg_portal_entry { + u8 numPoints; + u8 padding[3]; + struct xyzpoint point; +}; + +typedef struct bg_data_header bg_data_header, *Pbg_data_header; + +typedef struct bg_room_data bg_room_data, *Pbg_room_data; + +typedef struct bg_portal_data_entry bg_portal_data_entry, *Pbg_portal_data_entry; + +struct bg_data_header { + u32 RESERVED; + struct bg_room_data * pRoomDataTable; + struct bg_portal_data_entry * pPortalDataTable; + void * pGlobalVisCmds; +}; + +struct bg_portal_data_entry { + struct bg_portal_entry * offset_portal; + u8 connectedRoom1; + u8 connectedRoom2; + u16 controlbytes; +}; + +struct bg_room_data { + f32 xpos; + f32 ypos; + f32 zpos; + void * pPointTableBin; + void * pPriMappingBin; + void * pSecMappingBin; +}; + +typedef enum PROPTYPE { + New_Name=0 +} PROPTYPE; + +typedef struct indy_resource_entry_type6 indy_resource_entry_type6, *Pindy_resource_entry_type6; + +struct indy_resource_entry_type6 { + struct indy_resource_entry entry; + u32 data1; + u32 data2; +}; + +typedef struct indy_resource_entry_type3 indy_resource_entry_type3, *Pindy_resource_entry_type3; + +struct indy_resource_entry_type3 { + struct indy_resource_entry entry; + u8 strbuffer[255]; + u32 data; +}; + +typedef struct indy_resource_entry_type4 indy_resource_entry_type4, *Pindy_resource_entry_type4; + +struct indy_resource_entry_type4 { + struct indy_resource_entry entry; + u32 data; +}; + +typedef struct structunknown structunknown, *Pstructunknown; + +struct structunknown { + float field_0x0; + float field_0x4; + float field_0x8; +}; + +typedef struct sfx_register_struct sfx_register_struct, *Psfx_register_struct; + +struct sfx_register_struct { + undefined4 field_0x0; + undefined4 field_0x4; + undefined4 field_0x8; + undefined4 field_0xc; + undefined4 field_0x10; + undefined4 field_0x14; +}; + +typedef enum AMMOTYPES { + AMMO_9MM=1, + AMMO_9MM_2=2, + AMMO_BOMBCASE=16, + AMMO_BUG=20, + AMMO_CAMERA=27, + AMMO_DARTS=14, + AMMO_DYNAMITE=19, + AMMO_EXPLOSIVEPEN=15, + AMMO_FLARE=17, + AMMO_GEKEY=22, + AMMO_GGUN=13, + AMMO_GRENADE=5, + AMMO_GRENADEROUND=11, + AMMO_KNIFE=10, + AMMO_MAGNUM=12, + AMMO_MICRO_CAMERA=21, + AMMO_PITON=18, + AMMO_PLASTIQUE=23, + AMMO_PROXMINE=8, + AMMO_REMOTEMINE=7, + AMMO_RIFLE=3, + AMMO_ROCKETS=6, + AMMO_SHOTGUN=4, + AMMO_TANK=28, + AMMO_TIMEDMINE=9, + AMMO_TOKEN=29, + AMMO_UNK=26, + AMMO_WATCH_LASER=24, + AMMO_WATCH_MAGNET=25 +} AMMOTYPES; + +typedef enum WEAPONID { + CHOP=1, + GOLDGUN=19, + HKNIFE=2, + New_Name=4, + New_Name_(1)=5, + New_Name_(10)=14, + New_Name_(11)=15, + New_Name_(12)=16, + New_Name_(13)=17, + New_Name_(14)=18, + New_Name_(15)=20, + New_Name_(16)=21, + New_Name_(17)=22, + New_Name_(18)=23, + New_Name_(19)=24, + New_Name_(2)=6, + New_Name_(20)=25, + New_Name_(21)=26, + New_Name_(22)=27, + New_Name_(23)=28, + New_Name_(24)=29, + New_Name_(25)=30, + New_Name_(26)=31, + New_Name_(27)=32, + New_Name_(28)=33, + New_Name_(29)=34, + New_Name_(3)=7, + New_Name_(30)=35, + New_Name_(31)=36, + New_Name_(32)=37, + New_Name_(33)=38, + New_Name_(34)=39, + New_Name_(35)=40, + New_Name_(36)=41, + New_Name_(37)=42, + New_Name_(38)=43, + New_Name_(39)=44, + New_Name_(4)=8, + New_Name_(40)=45, + New_Name_(41)=46, + New_Name_(42)=47, + New_Name_(43)=48, + New_Name_(44)=49, + New_Name_(45)=50, + New_Name_(46)=51, + New_Name_(47)=52, + New_Name_(48)=53, + New_Name_(49)=54, + New_Name_(5)=9, + New_Name_(50)=55, + New_Name_(51)=56, + New_Name_(52)=57, + New_Name_(53)=58, + New_Name_(54)=59, + New_Name_(55)=60, + New_Name_(56)=61, + New_Name_(57)=62, + New_Name_(58)=63, + New_Name_(59)=64, + New_Name_(6)=10, + New_Name_(60)=65, + New_Name_(61)=66, + New_Name_(62)=67, + New_Name_(63)=68, + New_Name_(64)=69, + New_Name_(65)=70, + New_Name_(66)=71, + New_Name_(67)=72, + New_Name_(68)=73, + New_Name_(69)=74, + New_Name_(7)=11, + New_Name_(70)=75, + New_Name_(71)=76, + New_Name_(72)=77, + New_Name_(73)=78, + New_Name_(74)=79, + New_Name_(75)=80, + New_Name_(76)=81, + New_Name_(77)=82, + New_Name_(78)=83, + New_Name_(79)=84, + New_Name_(8)=12, + New_Name_(80)=85, + New_Name_(81)=86, + New_Name_(82)=87, + New_Name_(9)=13, + TKNIFE=3, + UNARMED=0 +} WEAPONID; + +typedef enum CAMERAMODE { + FADESWIRL_CAM=2, + FP_CAM=4, + FP_NOINPUT_CAM=8, + INTRO_CAM=1, + MP_CAM=9, + POSEND_CAM=7, + SWIRL_CAM=3, + UNK10_CAM=10, + UNK5_CAM=5, + UNK6_CAM=6 +} CAMERAMODE; + +typedef enum COLORMODE { + 16BIT=1, + 32BIT=0 +} COLORMODE; + +typedef uchar uch; + +typedef struct fog_element2 fog_element2, *Pfog_element2; + +struct fog_element2 { + u32 stageID; + u8 red; + u8 green; + u8 blue; + u8 clouds; + f32 cloudrepeat; + u16 skyimageid; + u16 reserved; + f32 cloudred; + f32 cloudgreen; + f32 cloudblue; + u8 iswater; + u8 padding[3]; + f32 waterrepeat; + u16 waterimageid; + u16 reserved2; + f32 waterred; + f32 watergreen; + f32 waterblue; + f32 waterconcavity; +}; + +typedef enum enumOSEventMsg { + PRE_NMI_MSG=669, + RDP_DONE_MSG=668, + RSP_DONE_MSG=667, + VIDEO_MSG=666 +} enumOSEventMsg; + +typedef enum TEXTFILESTRINGS { + "E R R O R\n"=45097, + "\n"=45099, + "completed\n"=45101, + "failed\n"=45103, + "incomplete\n"=45102, + "no briefing for this mission\n"=45098, + "objective"=45100 +} TEXTFILESTRINGS; + +typedef struct sSecondFontTableController sSecondFontTableController, *PsSecondFontTableController; + +struct sSecondFontTableController { + u8 field_0x0[20]; + u8 field_0x14[24]; + u8 field_0x2c[24]; + u8 font_second_font_table_controller_large[12912]; +}; + +typedef ulong ulg; + +typedef enum SCHEDTASKS { + M_AUDTASK=2, + M_GFXTASK=1, + M_VIDTASK=3 +} SCHEDTASKS; + +typedef struct struct_8007ffa0_entry struct_8007ffa0_entry, *Pstruct_8007ffa0_entry; + +struct struct_8007ffa0_entry { + s32 index; + s32 field_0x4; + f32 field_0x8; + f32 field_0xc; + f32 field_0x10; + f32 field_0x14; + s32 field_0x18; +}; + +typedef enum MUSIC_TRACKS { + M_ARCHIVES=11, + M_ARCHIVESX=37, + M_AZTEC=25, + M_AZTECX=46, + M_BUNKER1=15, + M_BUNKER1X=41, + M_BUNKER2=16, + M_BUNKER2X=42, + M_CITADEL=6, + M_CONTROL=8, + M_CONTROLX=33, + M_CRADLE=19, + M_CRADLEX=48, + M_CUBA=49, + M_DAM=9, + M_DAMX=35, + M_DEATHSOLO=27, + M_DEPOT=4, + M_DEPOTX=32, + M_EGYPTIAN=22, + M_EGYPTIANX=39, + M_EGYPTX=47, + M_ELEVATOR_CONTROL=18, + M_ELEVATOR_WC=21, + M_END_SOMETHING=62, + M_FACILITY=7, + M_FACILITYX=31, + M_FOLDERS=23, + M_FRIGATE=10, + M_FRIGATEX=36, + M_GUITARGLISS=54, + M_INTRO=2, + M_INTROSWOOSH=44, + M_JUNGLE=55, + M_JUNGLEX=43, + M_MPDEATH=58, + M_MPTHEME=5, + M_MPTHEME2=13, + M_MPTHEME3=52, + M_NONE=0, + M_RUNWAY=50, + M_RUNWAYPLANE=51, + M_RUNWAYX=56, + M_SHORT_SOLO_DEATH=1, + M_SILO=12, + M_SILOX=38, + M_STATUE=17, + M_STATUEPART=61, + M_STATUEX=45, + M_STREETS=14, + M_STREETSX=40, + M_SURFACE1=57, + M_SURFACE2=28, + M_SURFACE2END=60, + M_SURFACE2X=59, + M_TRAIN=3, + M_TRAINX=29, + M_UNK=20, + M_UNK2=30, + M_WATCH=24, + M_WATERCAVERNS=26, + M_WATERCAVERNSX=34, + M_WIND=53 +} MUSIC_TRACKS; + +typedef struct sFontTableControllerLarge sFontTableControllerLarge, *PsFontTableControllerLarge; + +typedef struct sFirstFontTableController sFirstFontTableController, *PsFirstFontTableController; + +struct sFirstFontTableController { + undefined1 font_first_font_table_controller_large[676]; +}; + +struct sFontTableControllerLarge { + struct sFirstFontTableController font_first_font_table_controller_large; + struct sSecondFontTableController font_second_font_table_controller_large; +}; + +typedef ushort ush; + +typedef struct headHat headHat, *PheadHat; + +struct headHat { + f32 xoffset; + f32 yoffset; + f32 zoffset; + f32 xsize; + f32 ysize; + f32 zsize; +}; + +typedef enum CHEAT_IDS { + CHEAT_05=5, + CHEAT_ALLGUNS=3, + CHEAT_EXTRA_MP_CHARS=1, + CHEAT_INVINCIBILITY=2, + CHEAT_LINEMODE=7, + CHEAT_MAXAMMO=4, + CHEAT_REMOVE_INVINCIBILITY=6, + NULL=0, + UNLOCK_CHEATS=54, + UNLOCK_STAGES=74, + UNUSED_17=23, + UNUSED_1C=28, + UNUSED_23=35, + UNUSED_24=36, + UNUSED_25=37, + UNUSED_26=38, + UNUSED_27=39, + UNUSED_28=40, + UNUSED_29=41, + UNUSED_2A=42, + UNUSED_2B=43, + UNUSED_2C=44, + UNUSED_2D=45, + UNUSED_2E=46, + UNUSED_2F=47, + UNUSED_30=48, + UNUSED_31=49, + UNUSED_32=50, + UNUSED_33=51, + UNUSED_34=52, + UNUSED_35=53, + UNUSED_37=55, + UNUSED_38=56, + UNUSED_39=57, + UNUSED_3A=58, + UNUSED_3B=59, + UNUSED_3C=60, + UNUSED_3D=61, + UNUSED_3E=62, + UNUSED_3F=63, + UNUSED_40=64, + UNUSED_41=65, + UNUSED_42=66, + UNUSED_43=67, + UNUSED_44=68, + UNUSED_45=69, + UNUSED_46=70, + UNUSED_47=71, + UNUSED_48=72, + UNUSED_49=73, + cheats_cheat_10x_health=16, + cheats_cheat_2x_armor=9, + cheats_cheat_2x_health=8, + cheats_cheat_dk_mode=12, + cheats_cheat_extra_weapons=13, + cheats_cheat_fast=24, + cheats_cheat_goldengun=19, + cheats_cheat_goldpp7=21, + cheats_cheat_infinite_ammo=11, + cheats_cheat_invisibility=10, + cheats_cheat_invisibility_mp=22, + cheats_cheat_laser=18, + cheats_cheat_magnum=17, + cheats_cheat_paintball=15, + cheats_cheat_silverpp7=20, + cheats_cheat_tiny_bond=14, + cheats_debug_2x_grenade_launch=30, + cheats_debug_2x_hunting_knife=33, + cheats_debug_2x_laser=34, + cheats_debug_2x_rcp90=31, + cheats_debug_2x_rockets=29, + cheats_debug_2x_throwing_knife=32, + cheats_debug_fast_ani=26, + cheats_debug_pos=25, + cheats_debug_slow_ani=27 +} CHEAT_IDS; + +typedef struct s_memstarts s_memstarts, *Ps_memstarts; + +struct s_memstarts { + undefined4 bank1start; + undefined4 bank2start; + undefined4 bank3start; + undefined4 bank4start; + undefined4 bank5start; + undefined4 bank6start; + undefined4 bank7start; +}; + +typedef struct s_mempMVALS s_mempMVALS, *Ps_mempMVALS; + +struct s_mempMVALS { + dword field_0x0; + undefined4 dword_80024414; + undefined4 mf; + undefined4 dword_8002441C; + undefined4 ml; + undefined4 dword_80024424; + undefined4 me; + undefined4 dword_8002442C; + undefined4 dword_80024430; +}; + +typedef union union_indy_resource union_indy_resource, *Punion_indy_resource; + +union union_indy_resource { + struct indy_resource_entry field0; + struct indy_resource_entry_type3 field1; + struct indy_resource_entry_type4 field2; + struct indy_resource_entry_type6 field3; +}; + +typedef struct LnameX_name_entry LnameX_name_entry, *PLnameX_name_entry; + +struct LnameX_name_entry { + char * en_file; + char * jp_file; +}; + +typedef struct playerfavoriteweapon playerfavoriteweapon, *Pplayerfavoriteweapon; + +struct playerfavoriteweapon { + u32 right; + u32 left; +}; + +#define OS_TASK_SIZE 64 + +#define OS_TASK_OFF_UBOOT_SZ 12 + +#define OS_TASK_OFF_YIELD_SZ 60 + +#define OS_TASK_OFF_OUTBUFF 40 + +#define OS_TASK_OFF_DATA_SZ 52 + +#define OS_TASK_OFF_YIELD 56 + +#define OS_TASK_OFF_UCODE 16 + +#define OS_TASK_OFF_OUTBUFF_SZ 44 + +#define OS_TASK_OFF_UDATA 24 + +#define OS_TASK_OFF_DATA 48 + +#define OS_TASK_OFF_STACK_SZ 36 + +#define OS_TASK_OFF_UDATA_SZ 28 + +#define OS_TASK_OFF_UCODE_SZ 20 + +#define OS_TASK_OFF_FLAGS 4 + +#define OS_TASK_OFF_TYPE 0 + +#define OS_TASK_OFF_STACK 32 + +#define OS_TASK_OFF_UBOOT 8 + +#define __WORDSIZE 32 + +typedef uint _Sizet; + +#define _D0 0 + +#define _NULL 0 + +#define _DOFF 4 + +#define _DBIAS 1023 + +#define _LONG_DOUBLE 0 + +#define _DLONG 0 + +#define _LBIAS 1023 + +typedef ulonglong u64; + +typedef u64 vu64; + +typedef longlong s64; + +typedef s64 vs64; + +typedef union Mtx Mtx, *PMtx; + +typedef long Mtx_t[4][4]; + +union Mtx { + Mtx_t m; + longlong forc_structure_alignment; +}; + +typedef u16 vu16; + +typedef short s16; + +typedef s16 vs16; + +typedef u8 vu8; + +typedef char s8; + +typedef s8 vs8; + +typedef u32 vu32; + +typedef s32 vs32; + +#define FALSE 0 + +#define TRUE 1 + +#define NULL 0 + +typedef struct rdbPacket rdbPacket, *PrdbPacket; + +typedef union anon__struct_183_bitfield_1 anon__struct_183_bitfield_1, *Panon__struct_183_bitfield_1; + +union anon__struct_183_bitfield_1 { + uint type:6; // : bits 0-5 + uint length:2; // : bits 6-7 +}; + +struct rdbPacket { + union anon__struct_183_bitfield_1 field_0x0; + char buf[3]; +}; + +#define RDB_TYPE_HtoG_KDEBUG 20 + +#define RDB_TYPE_GtoH_RAMROM 9 + +#define RDB_TYPE_GtoH_PRINT 1 + +#define RDB_BASE_REG 3221225472 + +#define RDB_TYPE_INVALID 0 + +#define RDB_WRITE_INTR_REG 3221225480 + +#define DEBUG_COMMAND_MEMORY 1 + +#define RDB_LOG_MAX_BLOCK_SIZE 32768 + +#define RDB_TYPE_HtoG_DATA 16 + +#define PROF_BLOCK_SIZE 2048 + +#define RDB_TYPE_GtoH_FAULT 2 + +#define DEBUG_STATE_RECEIVE 1 + +#define GIO_RDB_BASE_REG 3209166848 + +#define RDB_TYPE_GtoH_DEBUG_READY 11 + +#define RDB_DATA_MAX_BLOCK_SIZE 32768 + +#define RDB_TYPE_GtoH_KDEBUG 12 + +#define RDB_TYPE_GtoH_READY_FOR_DATA 5 + +#define RDB_TYPE_GtoH_DEBUG_DONE 10 + +#define RDB_TYPE_GtoH_DATA_CT 6 + +#define RDB_TYPE_HtoG_LOG_DONE 13 + +#define GIO_RDB_READ_INTR_REG 3209166860 + +#define RDB_BASE_VIRTUAL_ADDR 2147483648 + +#define DEBUG_STATE_INVALID 255 + +#define RDB_TYPE_GtoH_LOG_CT 3 + +#define RDB_PROF_FLUSH_SIG 2 + +#define DEBUG_STATE_NULL 0 + +#define RDB_READ_INTR_REG 3221225484 + +#define GIO_RDB_READ_INTR_BIT 1073741824 + +#define RDB_TYPE_HtoG_DEBUG 14 + +#define RDB_TYPE_GtoH_PROF_DATA 22 + +#define RDB_TYPE_GtoH_DATA 7 + +#define RDB_TYPE_GtoH_LOG 4 + +#define RDB_TYPE_HtoG_REQ_RAMROM 18 + +#define RDB_TYPE_HtoG_FREE_RAMROM 19 + +#define RDB_TYPE_HtoG_DEBUG_CT 15 + +#define DEBUG_COMMAND_NULL 0 + +#define RDB_PROF_ACK_SIG 1 + +#define GIO_RDB_DEBUG_MINOR 2 + +#define DEBUG_COMMAND_REGISTER 2 + +#define GIO_RDB_PRINT_MINOR 1 + +#define RDB_TYPE_HtoG_PROF_SIGNAL 21 + +#define DEBUG_COMMAND_INVALID 255 + +#define RDB_TYPE_HtoG_DATA_DONE 17 + +#define GIO_RDB_WRITE_INTR_BIT 2147483648 + +#define RDB_TYPE_GtoH_DEBUG 8 + +#define GIO_RDB_WRITE_INTR_REG 3209166856 + +typedef struct bitmap bitmap, *Pbitmap; + +typedef struct bitmap Bitmap; + +struct bitmap { + s16 width; + s16 width_img; + s16 s; + s16 t; + void * buf; + s16 actualHeight; + s16 LUToffset; +}; + +typedef struct sprite sprite, *Psprite; + +typedef struct sprite Sprite; + +typedef union Gfx Gfx, *PGfx; + +typedef struct Gwords Gwords, *PGwords; + +struct sprite { + s16 x; + s16 y; + s16 width; + s16 height; + f32 scalex; + f32 scaley; + s16 expx; + s16 expy; + u16 attr; + s16 zdepth; + u8 red; + u8 green; + u8 blue; + u8 alpha; + s16 startTLUT; + s16 nTLUT; + int * LUT; + s16 istart; + s16 istep; + s16 nbitmaps; + s16 ndisplist; + s16 bmheight; + s16 bmHreal; + u8 bmfmt; + u8 bmsiz; + Bitmap * bitmap; + union Gfx * rsp_dl; + union Gfx * rsp_dl_next; + s16 frac_s; + s16 frac_t; +}; + +struct Gwords { + uint w0; + uint w1; +}; + +union Gfx { + struct Gwords words; + longlong force_structure_alignment; +}; + +#define DL_SPRITE_OVERHEAD 24 + +#define SP_FASTCOPY 32 + +#define SP_OVERLAP 64 + +#define SP_CUTOUT 2 + +#define SP_FRACPOS 256 + +#define SP_TEXSHIFT 128 + +#define SP_EXTERN 1024 + +#define SP_TEXSHUF 512 + +#define DL_BM_OVERHEAD 12 + +#define SP_SCALE 16 + +#define SP_TRANSPARENT 1 + +#define SP_Z 8 + +#define SP_HIDDEN 4 + +typedef void * __gnuc_va_list; + +typedef __gnuc_va_list va_list; + +#define SP_DRAM_STACK_SIZE64 128 + +#define SP_UCODE_SIZE 4096 + +#define SP_DRAM_STACK_SIZE8 1024 + +#define SP_UCODE_DATA_SIZE 2048 + +typedef enum AIRCRAFT_ANIMATIONS { + ANIM_helicopter_cradle=0, + ANIM_helicopter_takeoff=2, + ANIM_plane_runway=1 +} AIRCRAFT_ANIMATIONS; + +typedef enum LEVEL_SOLO_SEQUENCE { + SP_LEVEL_ARCHIVES=11, + SP_LEVEL_AZTEC=19, + SP_LEVEL_BUNKER1=5, + SP_LEVEL_BUNKER2=9, + SP_LEVEL_CAVERNS=17, + SP_LEVEL_CONTROL=16, + SP_LEVEL_CRADLE=18, + SP_LEVEL_DAM=1, + SP_LEVEL_DEPOT=13, + SP_LEVEL_EGYPT=20, + SP_LEVEL_FACILITY=2, + SP_LEVEL_FRIGATE=7, + SP_LEVEL_JUNGLE=15, + SP_LEVEL_RUNWAY=3, + SP_LEVEL_SILO=6, + SP_LEVEL_STATUE=10, + SP_LEVEL_STREETS=12, + SP_LEVEL_SURFACE1=4, + SP_LEVEL_SURFACE2=8, + SP_LEVEL_TRAIN=14 +} LEVEL_SOLO_SEQUENCE; + +typedef enum WATCH_BRIEFING_PAGE { + BRIEFING_M=2, + BRIEFING_MONEYPENNY=4, + BRIEFING_OVERVIEW=1, + BRIEFING_Q=3, + BRIEFING_TITLE=0 +} WATCH_BRIEFING_PAGE; + +typedef enum MP_STAGE_SELECTED { + MP_STAGE_ARCHIVES=9, + MP_STAGE_BASEMENT=5, + MP_STAGE_BUNKER=8, + MP_STAGE_CAVERNS=10, + MP_STAGE_CAVES=3, + MP_STAGE_COMPLEX=2, + MP_STAGE_EGYPT=11, + MP_STAGE_FACILITY=7, + MP_STAGE_LIBRARY=4, + MP_STAGE_RANDOM=0, + MP_STAGE_STACK=6, + MP_STAGE_TEMPLE=1 +} MP_STAGE_SELECTED; + +typedef enum CONTROLLER_CONFIG { + CONTROLLER_CONFIG_CINEMA=8, + CONTROLLER_CONFIG_DOMINO=6, + CONTROLLER_CONFIG_GALORE=5, + CONTROLLER_CONFIG_GOODHEAD=7, + CONTROLLER_CONFIG_GOODNIGHT=3, + CONTROLLER_CONFIG_HONEY=0, + CONTROLLER_CONFIG_KISSY=2, + CONTROLLER_CONFIG_PLENTY=4, + CONTROLLER_CONFIG_SOLITARE=1 +} CONTROLLER_CONFIG; + +typedef struct rgba_val rgba_val, *Prgba_val; + +struct rgba_val { + u8 r; + u8 g; + u8 b; + u8 a; +}; + +typedef enum MISSION_BRIEFING { + BRIEF_M=1, + BRIEF_MONEYPENNY=3, + BRIEF_OVERVIEW=0, + BRIEF_Q=2 +} MISSION_BRIEFING; + +typedef enum PROPS { + PROP_ICBM=93, + PROP_ICBM_nose=92, + PROP_ak47mag=121, + PROP_alarm1=0, + PROP_alarm2=1, + PROP_ammo_crate1=3, + PROP_ammo_crate2=4, + PROP_ammo_crate3=5, + PROP_ammo_crate4=6, + PROP_ammo_crate5=7, + PROP_apc=289, + PROP_archsecdoor1=297, + PROP_archsecdoor2=298, + PROP_artic=281, + PROP_artictrailer=286, + PROP_barricade=334, + PROP_bin1=8, + PROP_blotter1=9, + PROP_bodyarmour=115, + PROP_bodyarmourvest=116, + PROP_bollard=339, + PROP_bomb=255, + PROP_book1=10, + PROP_bookshelf1=11, + PROP_borg_crate=87, + PROP_boxcartridges=129, + PROP_boxes2x4=90, + PROP_boxes3x4=89, + PROP_boxes4x4=88, + PROP_brakeunit=120, + PROP_bridge_console1a=12, + PROP_bridge_console1b=13, + PROP_bridge_console2a=14, + PROP_bridge_console2b=15, + PROP_bridge_console3a=16, + PROP_bridge_console3b=17, + PROP_carbmw=301, + PROP_card_box1=18, + PROP_card_box2=19, + PROP_card_box3=20, + PROP_card_box4_lg=21, + PROP_card_box5_lg=22, + PROP_card_box6_lg=23, + PROP_carescort=302, + PROP_cargolf=303, + PROP_carweird=304, + PROP_carzil=305, + PROP_cctv=24, + PROP_chraudiotape=262, + PROP_chrautoshot=207, + PROP_chrblackbox=274, + PROP_chrblueprints=258, + PROP_chrbombcase=226, + PROP_chrbombdefuser=235, + PROP_chrbriefcase=198, + PROP_chrbug=245, + PROP_chrbugdetector=236, + PROP_chrbungee=233, + PROP_chrcamera=238, + PROP_chrcircuitboard=259, + PROP_chrclipboard=269, + PROP_chrcreditcard=250, + PROP_chrdarkglasses=251, + PROP_chrdatathief=253, + PROP_chrdattape=272, + PROP_chrdoordecoder=234, + PROP_chrdoorexploder=240, + PROP_chrdossierred=270, + PROP_chrdynamite=232, + PROP_chrexplosivepen=225, + PROP_chrextinguisher=128, + PROP_chrfingergun=229, + PROP_chrflarepistol=227, + PROP_chrfnp90=197, + PROP_chrgaskeyring=252, + PROP_chrgoldbar=267, + PROP_chrgolden=208, + PROP_chrgoldeneyekey=248, + PROP_chrgoldwppk=231, + PROP_chrgrenade=196, + PROP_chrgrenadelaunch=185, + PROP_chrgrenaderound=203, + PROP_chrheroin=268, + PROP_chrkalash=184, + PROP_chrkeyanalysercase=241, + PROP_chrkeybolt=244, + PROP_chrkeyyale=243, + PROP_chrknife=186, + PROP_chrlaser=187, + PROP_chrlectre=265, + PROP_chrlockexploder=239, + PROP_chrm16=188, + PROP_chrmap=260, + PROP_chrmicrocamera=246, + PROP_chrmicrocode=264, + PROP_chrmicrofilm=263, + PROP_chrmoney=266, + PROP_chrmp5k=189, + PROP_chrmp5ksil=206, + PROP_chrpitongun=228, + PROP_chrplans=256, + PROP_chrplastique=273, + PROP_chrpolarizedglasses=249, + PROP_chrproximitymine=200, + PROP_chrremotemine=199, + PROP_chrrocket=202, + PROP_chrrocketlaunch=211, + PROP_chrruger=190, + PROP_chrsafecrackercase=237, + PROP_chrshotgun=192, + PROP_chrsilverwppk=230, + PROP_chrskorpion=193, + PROP_chrsniperrifle=210, + PROP_chrspectre=194, + PROP_chrspooltape=261, + PROP_chrspyfile=257, + PROP_chrstafflist=271, + PROP_chrtesttube=338, + PROP_chrthrowknife=209, + PROP_chrtimedmine=201, + PROP_chrtt33=205, + PROP_chruzi=195, + PROP_chrvideotape=275, + PROP_chrweaponcase=242, + PROP_chrwppk=191, + PROP_chrwppksil=204, + PROP_chrwristdart=224, + PROP_console1=25, + PROP_console2=26, + PROP_console3=27, + PROP_console_sev2a=32, + PROP_console_sev2b=33, + PROP_console_sev2c=34, + PROP_console_sev2d=35, + PROP_console_sev_GEa=36, + PROP_console_sev_GEb=37, + PROP_console_seva=28, + PROP_console_sevb=29, + PROP_console_sevc=30, + PROP_console_sevd=31, + PROP_cryptdoor1a=170, + PROP_cryptdoor1b=171, + PROP_cryptdoor2a=172, + PROP_cryptdoor2b=173, + PROP_cryptdoor3=174, + PROP_cryptdoor4=175, + PROP_damchaindoor=180, + PROP_damgatedoor=178, + PROP_damtundoor=179, + PROP_depot_door_steel=309, + PROP_depot_gate_entry=308, + PROP_desk1=38, + PROP_desk2=39, + PROP_desk_arecibo1=95, + PROP_desk_lamp2=40, + PROP_dest_engine=99, + PROP_dest_exocet=100, + PROP_dest_gun=101, + PROP_dest_harpoon=102, + PROP_dest_seawolf=103, + PROP_disc_reader=41, + PROP_disk_drive1=42, + PROP_door_azt_chair=331, + PROP_door_azt_desk=329, + PROP_door_azt_desk_top=330, + PROP_door_aztec=327, + PROP_door_dest1=152, + PROP_door_dest2=153, + PROP_door_eyelid=164, + PROP_door_iris=165, + PROP_door_mf=332, + PROP_door_roller1=146, + PROP_door_roller2=147, + PROP_door_roller3=148, + PROP_door_roller4=149, + PROP_door_rollertrain=325, + PROP_door_st_arec1=150, + PROP_door_st_arec2=151, + PROP_door_win=326, + PROP_doorconsole=337, + PROP_doorpanel=336, + PROP_doorprison1=182, + PROP_doorstatgate=183, + PROP_explosionbit=2, + PROP_filing_cabinet1=43, + PROP_flag=333, + PROP_floppy=247, + PROP_fnp90mag=130, + PROP_gas_plant_met1_do1=158, + PROP_gas_plant_sw2_do1=155, + PROP_gas_plant_sw3_do1=156, + PROP_gas_plant_sw4_do1=157, + PROP_gas_plant_sw_do1=154, + PROP_gas_plant_wc_cub1=159, + PROP_gasbarrel=113, + PROP_gasbarrels=114, + PROP_gasplant_clear_door=160, + PROP_gastank=117, + PROP_glassware1=118, + PROP_glassware2=310, + PROP_glassware3=311, + PROP_glassware4=312, + PROP_goldeneyelogo=277, + PROP_goldenshells=131, + PROP_groundgun=299, + PROP_gun_runway1=292, + PROP_hatberet=220, + PROP_hatberetblue=221, + PROP_hatberetred=222, + PROP_hatchbolt=119, + PROP_hatchdoor=177, + PROP_hatchsevx=295, + PROP_hatfurry=212, + PROP_hatfurryblack=214, + PROP_hatfurrybrown=213, + PROP_hathelmet=217, + PROP_hathelmetgrey=218, + PROP_hatmoon=219, + PROP_hatpeaked=223, + PROP_hattbird=215, + PROP_hattbirdbrown=216, + PROP_helicopter=282, + PROP_hind=285, + PROP_jeep=280, + PROP_jerry_can1=44, + PROP_jungle3_tree=108, + PROP_jungle5_tree=318, + PROP_key_holder=294, + PROP_keyboard1=45, + PROP_kit_units1=46, + PROP_labbench=112, + PROP_landmine=313, + PROP_legalpage=319, + PROP_letter_tray1=47, + PROP_locker3=96, + PROP_locker4=97, + PROP_m16mag=122, + PROP_magnumshells=132, + PROP_mainframe1=48, + PROP_mainframe2=49, + PROP_metal_chair1=50, + PROP_metal_crate1=51, + PROP_metal_crate2=52, + PROP_metal_crate3=53, + PROP_metal_crate4=54, + PROP_milcopter=284, + PROP_miltruck=279, + PROP_missile_rack=55, + PROP_missile_rack2=56, + PROP_modembox=335, + PROP_motorbike=287, + PROP_mp5kmag=123, + PROP_nintendologo=276, + PROP_oil_drum1=57, + PROP_oil_drum2=58, + PROP_oil_drum3=59, + PROP_oil_drum5=60, + PROP_oil_drum6=61, + PROP_oil_drum7=62, + PROP_padlock=63, + PROP_palm=109, + PROP_palmtree=110, + PROP_phone1=64, + PROP_plane=291, + PROP_plant1=314, + PROP_plant11=315, + PROP_plant2=316, + PROP_plant2b=111, + PROP_plant3=317, + PROP_radio_unit1=65, + PROP_radio_unit2=66, + PROP_radio_unit3=67, + PROP_radio_unit4=68, + PROP_roofgun=98, + PROP_safe=254, + PROP_safedoor=293, + PROP_sat1_reflect=69, + PROP_satbox=71, + PROP_satdish=70, + PROP_sec_panel=91, + PROP_sev_door=135, + PROP_sev_door3=136, + PROP_sev_door3_wind=137, + PROP_sev_door4_wind=138, + PROP_sev_door_v1=140, + PROP_sev_trislide=139, + PROP_sevdish=296, + PROP_sevdoormetslide=169, + PROP_sevdoornowind=168, + PROP_sevdoorwind=167, + PROP_sevdoorwood=166, + PROP_shuttle=328, + PROP_shuttle_door_l=306, + PROP_shuttle_door_r=307, + PROP_silencer=127, + PROP_silo_lift_door=144, + PROP_silotopdoor=181, + PROP_skorpionmag=124, + PROP_spectremag=125, + PROP_speedboat=290, + PROP_st_pete_room_1i=320, + PROP_st_pete_room_2i=321, + PROP_st_pete_room_3t=322, + PROP_st_pete_room_5c=323, + PROP_st_pete_room_6c=324, + PROP_steel_door1=141, + PROP_steel_door2=142, + PROP_steel_door2b=145, + PROP_steel_door3=143, + PROP_stool1=72, + PROP_swipe_card2=86, + PROP_swivel_chair1=73, + PROP_tank=288, + PROP_tiger=283, + PROP_torpedo_rack=74, + PROP_train_door=161, + PROP_train_door2=162, + PROP_train_door3=163, + PROP_trainextdoor=300, + PROP_tt33mag=134, + PROP_tuning_console1=94, + PROP_tv1=75, + PROP_tv4screen=78, + PROP_tv_holder=76, + PROP_tvscreen=77, + PROP_uzimag=126, + PROP_vertdoor=176, + PROP_walletbond=278, + PROP_window=104, + PROP_window_cor11=107, + PROP_window_lib_lg1=105, + PROP_window_lib_sm1=106, + PROP_wood_lg_crate1=79, + PROP_wood_lg_crate2=80, + PROP_wood_md_crate3=81, + PROP_wood_sm_crate4=82, + PROP_wood_sm_crate5=83, + PROP_wood_sm_crate6=84, + PROP_wooden_table1=85, + PROP_wppkmag=133 +} PROPS; + +typedef enum ANIMATIONS { + ANIM_adjusting_crotch=158, + ANIM_aim_and_blow_one_handed_weapon=149, + ANIM_aim_one_handed_weapon_left=150, + ANIM_aim_one_handed_weapon_left_right=99, + ANIM_aim_one_handed_weapon_right=151, + ANIM_aim_running_left_one_handed_weapon=87, + ANIM_aim_running_one_handed_weapon=85, + ANIM_aim_running_right_one_handed_weapon=86, + ANIM_aim_sprinting_one_handed_weapon=88, + ANIM_aim_walking_left_one_handed_weapon=83, + ANIM_aim_walking_one_handed_weapon=82, + ANIM_aim_walking_right_one_handed_weapon=84, + ANIM_bond_eye_fire=44, + ANIM_bond_eye_fire_alt=176, + ANIM_bond_eye_walk=43, + ANIM_bond_watch=45, + ANIM_cock_one_handed_weapon_and_turn_around=100, + ANIM_cock_one_handed_weapon_turn_around_and_stand_up=102, + ANIM_conversation=152, + ANIM_conversation_cleaned=160, + ANIM_conversation_listener=161, + ANIM_coughing_kneel1=166, + ANIM_coughing_kneel2=167, + ANIM_coughing_standing=165, + ANIM_cradle_fall=180, + ANIM_cradle_jump=179, + ANIM_credits_bond_kissing=181, + ANIM_credits_natalya_kissing=182, + ANIM_dam_jump=177, + ANIM_dancing=170, + ANIM_dancing_one_handed_weapon=171, + ANIM_death_backward_fall_face_up1=28, + ANIM_death_backward_fall_face_up2=37, + ANIM_death_backward_spin_face_down_left=31, + ANIM_death_backward_spin_face_down_right=29, + ANIM_death_backward_spin_face_up_left=32, + ANIM_death_backward_spin_face_up_right=30, + ANIM_death_explosion_back1=133, + ANIM_death_explosion_back2=136, + ANIM_death_explosion_back_left=132, + ANIM_death_explosion_forward=130, + ANIM_death_explosion_forward_face_down=138, + ANIM_death_explosion_forward_right1=135, + ANIM_death_explosion_forward_right2=140, + ANIM_death_explosion_forward_right2_alt=141, + ANIM_death_explosion_forward_right3=142, + ANIM_death_explosion_forward_roll=137, + ANIM_death_explosion_left1=131, + ANIM_death_explosion_left2=139, + ANIM_death_explosion_right=134, + ANIM_death_fetal_position_left=36, + ANIM_death_fetal_position_right=35, + ANIM_death_forward_face_down=26, + ANIM_death_forward_face_down_hard=33, + ANIM_death_forward_face_down_soft=34, + ANIM_death_forward_spin_face_up=27, + ANIM_death_genitalia=22, + ANIM_death_head=56, + ANIM_death_left_leg=57, + ANIM_death_neck=24, + ANIM_death_stagger_back_to_wall=25, + ANIM_draw_one_handed_weapon_and_look_around=97, + ANIM_draw_one_handed_weapon_and_stand_up=98, + ANIM_draw_one_handed_weapon_and_turn_around=103, + ANIM_drop_weapon_and_show_fight_stance=153, + ANIM_extending_left_hand=61, + ANIM_fire_hip=3, + ANIM_fire_hip_forward_one_handed_weapon=70, + ANIM_fire_hip_one_handed_weapon_fast=68, + ANIM_fire_hip_one_handed_weapon_slow=69, + ANIM_fire_jump_to_side_left=52, + ANIM_fire_jump_to_side_right=53, + ANIM_fire_kneel_aiming_down_sights=128, + ANIM_fire_kneel_dual_wield=116, + ANIM_fire_kneel_dual_wield_hands_crossed=119, + ANIM_fire_kneel_dual_wield_hands_crossed_left=120, + ANIM_fire_kneel_dual_wield_hands_crossed_right=121, + ANIM_fire_kneel_dual_wield_left=117, + ANIM_fire_kneel_dual_wield_right=118, + ANIM_fire_kneel_forward_one_handed_weapon_fast=76, + ANIM_fire_kneel_forward_one_handed_weapon_slow=75, + ANIM_fire_kneel_left=9, + ANIM_fire_kneel_left_leg=8, + ANIM_fire_kneel_left_one_handed_weapon=81, + ANIM_fire_kneel_left_one_handed_weapon_fast=80, + ANIM_fire_kneel_left_one_handed_weapon_slow=79, + ANIM_fire_kneel_right=10, + ANIM_fire_kneel_right_leg=7, + ANIM_fire_kneel_right_one_handed_weapon_fast=78, + ANIM_fire_kneel_right_one_handed_weapon_slow=77, + ANIM_fire_roll_left=11, + ANIM_fire_roll_left_fast=13, + ANIM_fire_roll_right1=12, + ANIM_fire_roll_right2=39, + ANIM_fire_running=49, + ANIM_fire_running_dual_wield=110, + ANIM_fire_running_dual_wield_hands_crossed=111, + ANIM_fire_shoulder_left=4, + ANIM_fire_sprinting_dual_wield=112, + ANIM_fire_sprinting_dual_wield_hands_crossed=113, + ANIM_fire_standing=1, + ANIM_fire_standing_aiming_down_sights=127, + ANIM_fire_standing_draw_one_handed_weapon_fast=66, + ANIM_fire_standing_draw_one_handed_weapon_slow=67, + ANIM_fire_standing_dual_wield=122, + ANIM_fire_standing_dual_wield_hands_crossed_left=125, + ANIM_fire_standing_dual_wield_hands_crossed_right=126, + ANIM_fire_standing_dual_wield_left=123, + ANIM_fire_standing_dual_wield_right=124, + ANIM_fire_standing_fast=2, + ANIM_fire_standing_left_one_handed_weapon_fast=74, + ANIM_fire_standing_left_one_handed_weapon_slow=73, + ANIM_fire_standing_one_handed_weapon=65, + ANIM_fire_standing_right_one_handed_weapon=71, + ANIM_fire_step_right_one_handed_weapon=72, + ANIM_fire_throw_grenade=62, + ANIM_fire_turn_right1=5, + ANIM_fire_turn_right2=6, + ANIM_fire_walking=48, + ANIM_fire_walking_dual_wield=108, + ANIM_fire_walking_dual_wield_hands_crossed=109, + ANIM_hit_butt_long=54, + ANIM_hit_butt_short=55, + ANIM_hit_left_arm=16, + ANIM_hit_left_hand=18, + ANIM_hit_left_leg=20, + ANIM_hit_left_shoulder=14, + ANIM_hit_neck=23, + ANIM_hit_right_arm=17, + ANIM_hit_right_hand=19, + ANIM_hit_right_leg=21, + ANIM_hit_right_shoulder=15, + ANIM_hit_taser=129, + ANIM_holster_one_handed_weapon_and_adjust_suit=105, + ANIM_holster_one_handed_weapon_and_cross_arms=101, + ANIM_idle=0, + ANIM_idle_unarmed=106, + ANIM_jogging_one_handed_weapon=89, + ANIM_jump_backwards=60, + ANIM_keyboard_left_hand=174, + ANIM_keyboard_right_hand1=172, + ANIM_keyboard_right_hand2=173, + ANIM_keyboard_right_hand_tapping=175, + ANIM_laughing_in_disbelief=163, + ANIM_look_around=64, + ANIM_null143=143, + ANIM_null144=144, + ANIM_null145=145, + ANIM_null146=146, + ANIM_null169=169, + ANIM_null50=50, + ANIM_null51=51, + ANIM_null91=91, + ANIM_null92=92, + ANIM_null93=93, + ANIM_null94=94, + ANIM_null95=95, + ANIM_null96=96, + ANIM_running=42, + ANIM_running_female=115, + ANIM_running_hands_up=147, + ANIM_scratching_butt=157, + ANIM_scratching_leg=156, + ANIM_side_step_left=38, + ANIM_slide_left=59, + ANIM_slide_right=58, + ANIM_sneeze=159, + ANIM_spotting_bond=63, + ANIM_sprinting=41, + ANIM_sprinting_hands_up=148, + ANIM_sprinting_one_handed_weapon=90, + ANIM_standing_up=168, + ANIM_startled_and_looking_around=162, + ANIM_step_foward_and_hold_one_handed_weapon=104, + ANIM_surface_vent_jump=178, + ANIM_surrendering_armed=46, + ANIM_surrendering_armed_drop_weapon=47, + ANIM_surrendering_unarmed=164, + ANIM_swatting_flies=155, + ANIM_walking=40, + ANIM_walking_female=114, + ANIM_walking_unarmed=107, + ANIM_yawning=154 +} ANIMATIONS; + + +// WARNING! conflicting data type names: /bondgame.h/COLORMODE - /COLORMODE + +typedef enum PROJECTILES { + PROJECTILES_MAX=46, + PROJECTILES_TYPE_BOMBCASE=55, + PROJECTILES_TYPE_BUG=56, + PROJECTILES_TYPE_GE_KEY=58, + PROJECTILES_TYPE_GLAUNCH_ROUND=54, + PROJECTILES_TYPE_GRENADE=48, + PROJECTILES_TYPE_KNIFE=47, + PROJECTILES_TYPE_MICROCAMERA=57, + PROJECTILES_TYPE_PLASTIQUE=59, + PROJECTILES_TYPE_PROX_MINE=50, + PROJECTILES_TYPE_REMOTE_MINE=49, + PROJECTILES_TYPE_ROCKET_ROUND=52, + PROJECTILES_TYPE_ROCKET_ROUND2=53, + PROJECTILES_TYPE_TIMED_MINE=51 +} PROJECTILES; + +typedef enum GENDER { + FEMALE=0, + MALE=1 +} GENDER; + +typedef enum BODIES { + BODY_Arctic_Commando=38, + BODY_Baron_Samedi=12, + BODY_Boris=6, + BODY_Civilian_1_Female=29, + BODY_Civilian_2=33, + BODY_Civilian_3=34, + BODY_Civilian_4=32, + BODY_Female_Mandy=72, + BODY_Female_Marion_Rosika=71, + BODY_Female_Sally=70, + BODY_Female_Vivien=73, + BODY_Formal_Wear=23, + BODY_Helicopter_Pilot=36, + BODY_Janus_Marine=17, + BODY_Janus_Special_Forces=4, + BODY_Jaws=13, + BODY_Jungle_Commando=0, + BODY_Jungle_Fatigues=24, + BODY_Left_Suit_Hand_Floating_Arm=41, + BODY_Male_Alan=43, + BODY_Male_B=50, + BODY_Male_Biker=61, + BODY_Male_Chris=54, + BODY_Male_Dave_Dr_Doak=51, + BODY_Male_Des=53, + BODY_Male_Duncan=47, + BODY_Male_Dwayne=49, + BODY_Male_Graeme=62, + BODY_Male_Grant=52, + BODY_Male_Jim=57, + BODY_Male_Joe=68, + BODY_Male_Joe_Altered=66, + BODY_Male_Joel=64, + BODY_Male_Karl=42, + BODY_Male_Ken=67, + BODY_Male_Lee=55, + BODY_Male_Mark=46, + BODY_Male_Martin=45, + BODY_Male_Mishkin=69, + BODY_Male_Neil=56, + BODY_Male_Pete=44, + BODY_Male_Pierce_Bond_1=74, + BODY_Male_Pierce_Bond_2=75, + BODY_Male_Pierce_Bond_3=76, + BODY_Male_Pierce_Bond_Parka=77, + BODY_Male_Pierce_Bond_Tuxedo=78, + BODY_Male_Robin=58, + BODY_Male_Scott=65, + BODY_Male_Shaun=48, + BODY_Male_Steve_Ellis=63, + BODY_Male_Steve_H=59, + BODY_Male_Terrorist=60, + BODY_Mayday=14, + BODY_Moonraker_Elite_1_Male=39, + BODY_Moonraker_Elite_2_Female=40, + BODY_Natalya_Jungle_Fatigues=79, + BODY_Natalya_Skirt=16, + BODY_Naval_Officer=20, + BODY_Oddjob=15, + BODY_Ourumov=7, + BODY_Parka=25, + BODY_Rosika=27, + BODY_Russian_Commandant=18, + BODY_Russian_Infantry=3, + BODY_Russian_Soldier=2, + BODY_Scientist_1_Male=35, + BODY_Scientist_2_Female=28, + BODY_Siberian_Guard_1_Mishkin=19, + BODY_Siberian_Guard_2=37, + BODY_Siberian_Special_Forces=21, + BODY_Special_Operations_Uniform=22, + BODY_St_Petersburg_Guard=1, + BODY_Trevelyan_006=9, + BODY_Trevelyan_Janus=8, + BODY_Tuxedo=5, + BODY_Unused_Female=26, + BODY_Unused_Male_1=30, + BODY_Unused_Male_2=31, + BODY_Valentin_=10, + BODY_Xenia=11 +} BODIES; + +typedef enum TEXTBANK_LEVEL_INDEX { + LAME=1, + LARCH=2, + LAREC=8, + LARK=3, + LASH=4, + LAZT=5, + LCAT=6, + LCAVE=7, + LCRAD=9, + LCRYP=10, + LDAM=11, + LDEPO=12, + LDEST=13, + LDISH=14, + LEAR=15, + LELD=16, + LGUN=38, + LIMP=17, + LJUN=18, + LLEE=19, + LLEN=20, + LLIP=21, + LLUE=22, + LMISC=44, + LMPMENU=40, + LMPWEAPONS=42, + LNULL=0, + LOAT=23, + LOPTIONS=43, + LPAM=24, + LPETE=25, + LPROPOBJ=41, + LREF=26, + LRIT=27, + LRUN=28, + LSEV=30, + LSEVB=29, + LSEVX=31, + LSEVXB=32, + LSHO=33, + LSILO=34, + LSTAT=35, + LTITLE=39, + LTRA=36, + LWAX=37 +} TEXTBANK_LEVEL_INDEX; + +typedef enum DOORSTATE { + CLOSED=2, + OPEN=1 +} DOORSTATE; + +typedef enum HEADS { + HEAD_Female_Mandy=72, + HEAD_Female_Marion_Rosika=71, + HEAD_Female_Sally=70, + HEAD_Female_Vivien=73, + HEAD_Male_Alan=43, + HEAD_Male_B=50, + HEAD_Male_Biker=61, + HEAD_Male_Chris=54, + HEAD_Male_Dave_Dr_Doak=51, + HEAD_Male_Des=53, + HEAD_Male_Duncan=47, + HEAD_Male_Dwayne=49, + HEAD_Male_Graeme=62, + HEAD_Male_Grant=52, + HEAD_Male_Jim=57, + HEAD_Male_Joe=68, + HEAD_Male_Joe_Altered=66, + HEAD_Male_Joel=64, + HEAD_Male_Karl=42, + HEAD_Male_Ken=67, + HEAD_Male_Lee=55, + HEAD_Male_Mark=46, + HEAD_Male_Martin=45, + HEAD_Male_Mishkin=69, + HEAD_Male_Neil=56, + HEAD_Male_Pete=44, + HEAD_Male_Pierce_Bond_1=74, + HEAD_Male_Pierce_Bond_2=75, + HEAD_Male_Pierce_Bond_3=76, + HEAD_Male_Pierce_Bond_Parka=77, + HEAD_Male_Pierce_Bond_Tuxedo_DEFAULT=78, + HEAD_Male_Robin=58, + HEAD_Male_Scott=65, + HEAD_Male_Shaun=48, + HEAD_Male_Steve_Ellis=63, + HEAD_Male_Steve_H=59, + HEAD_Male_Terrorist=60, + HEAD_Natalya_Jungle_Fatigues=79 +} HEADS; + +typedef enum mission_setup_type { + MISSION_HEADER=1, + MISSION_PART=0 +} mission_setup_type; + +typedef enum LEVEL_INDEX { + LEVEL_INDEX_AME=28, + LEVEL_INDEX_ARCH=4, + LEVEL_INDEX_ARK=14, + LEVEL_INDEX_ASH=26, + LEVEL_INDEX_AZT=8, + LEVEL_INDEX_CAT=20, + LEVEL_INDEX_CAVE=19, + LEVEL_INDEX_CONTROL=3, + LEVEL_INDEX_CRAD=21, + LEVEL_INDEX_CRYP=12, + LEVEL_INDEX_DAM=13, + LEVEL_INDEX_DEPO=10, + LEVEL_INDEX_DEST=6, + LEVEL_INDEX_DISH=18, + LEVEL_INDEX_EAR=31, + LEVEL_INDEX_ELD=24, + LEVEL_INDEX_IMP=25, + LEVEL_INDEX_JUN=17, + LEVEL_INDEX_LEE=32, + LEVEL_INDEX_LEN=34, + LEVEL_INDEX_LIP=33, + LEVEL_INDEX_LUE=27, + LEVEL_INDEX_OAT=30, + LEVEL_INDEX_PAM=36, + LEVEL_INDEX_PETE=9, + LEVEL_INDEX_REF=11, + LEVEL_INDEX_RIT=29, + LEVEL_INDEX_RUN=15, + LEVEL_INDEX_SEVB=7, + LEVEL_INDEX_SEVBUNKER=0, + LEVEL_INDEX_SEVX=16, + LEVEL_INDEX_SEVXB=23, + LEVEL_INDEX_SHO=22, + LEVEL_INDEX_SILO=1, + LEVEL_INDEX_STATUE=2, + LEVEL_INDEX_TRA=5, + LEVEL_INDEX_WAX=35, + LEVEL_INDEX_X=37 +} LEVEL_INDEX; + +typedef enum SCREEN_SIZE { + SCREEN_SIZE_320x240=0, + SCREEN_SIZE_440x330=1 +} SCREEN_SIZE; + +typedef u16 PAD; + +typedef enum MENU { + MENU_007_OPTIONS=9, + MENU_BRIEFING=10, + MENU_CHEAT=21, + MENU_DIFFICULTY=8, + MENU_DISPLAY_CAST=24, + MENU_EYE_INTRO=3, + MENU_FILE_SELECT=5, + MENU_GOLDENEYE_LOGO=4, + MENU_LEGAL_SCREEN=0, + MENU_MISSION_COMPLETE=13, + MENU_MISSION_FAILED=12, + MENU_MISSION_SELECT=7, + MENU_MODE_SELECT=6, + MENU_MP_CHAR_SELECT=15, + MENU_MP_CONTROL_STYLE=17, + MENU_MP_HANDICAP=16, + MENU_MP_OPTIONS=14, + MENU_MP_SCENARIO_SELECT=19, + MENU_MP_STAGE_SELECT=18, + MENU_MP_TEAMS=20, + MENU_NINTENDO_LOGO=1, + MENU_NO_CONTROLLERS=22, + MENU_RAREWARE_LOGO=2, + MENU_RUN_STAGE=11, + MENU_SPECTRUM_EMU=25, + MENU_SWITCH_SCREENS=23 +} MENU; + +#define OBJECTIVES_MAX 10 + + +// WARNING! conflicting data type names: /bondconstants.h/ITEM_IDS - /bondgame.h/ITEM_IDS + +typedef u16 PADEXTRA; + +typedef enum IMAGE_BITDEPTH { + D_16BIT=2, + D_32BIT=3, + D_4BIT=0, + D_8BIT=1 +} IMAGE_BITDEPTH; + +typedef enum CM_FLAGS { + CLAMP=1, + MIRROR=2 +} CM_FLAGS; + +typedef enum RGBA_ENUM { + ALPHA=3, + BLUE=2, + GREEN=1, + RED=0 +} RGBA_ENUM; + +typedef enum ACT_TYPE { + ACT_ANIM=3, + ACT_ARGH=6, + ACT_ATTACK=8, + ACT_ATTACKROLL=10, + ACT_ATTACKWALK=9, + ACT_DEAD=5, + ACT_DIE=4, + ACT_GOPOS=15, + ACT_INIT=0, + ACT_JUMPOUT=12, + ACT_KNEEL=2, + ACT_LOOKATTARGET=17, + ACT_NULL=23, + ACT_PATROL=14, + ACT_PREARGH=7, + ACT_RUNPOS=13, + ACT_SIDESTEP=11, + ACT_STAND=1, + ACT_STARTALARM=19, + ACT_SURPRISED=18, + ACT_SURRENDER=16, + ACT_TEST=22, + ACT_THROWGRENADE=20, + ACT_TURNDIR=21 +} ACT_TYPE; + +typedef enum HANDEDNESS { + LEFT_HAND=1, + RIGHT_HAND=0 +} HANDEDNESS; + + +// WARNING! conflicting data type names: /bondconstants.h/ANIMATIONS - /bondgame.h/ANIMATIONS + + +// WARNING! conflicting data type names: /bondconstants.h/COLORMODE - /COLORMODE + +typedef enum IMAGE_FORMAT { + F_CI=2, + F_I=4, + F_IA=3, + F_RGBA=0, + F_YUV=1 +} IMAGE_FORMAT; + +#define DOOR_LOCK_0 1 + +#define PROPFLAG2_00800000 8388608 + +#define CHR_FREE -1 + +#define DOOR_LOCK_2 4 + +#define DOOR_LOCK_1 2 + +#define DOOR_LOCK_4 16 + +#define DOOR_LOCK_3 8 + +#define DOOR_LOCK_6 64 + +#define CHR_BOND_CINEMA -8 + +#define DOOR_LOCK_5 32 + +#define PROPFLAG_00100000 1048576 + +#define CHRFLAG_NO_AUTOAIM 2048 + +#define CHRFLAG_CULL_USING_HITBOX 8388608 + +#define DOOR_LOCK_7 128 + +#define PROPFLAG_00020000 131072 + +#define PROPFLAG_00000400 1024 + +#define PROPFLAG2_00004000 16384 + +#define CHRFLAG_NO_SHADOW 8192 + +#define PROPFLAG_00000080 128 + +#define PROPFLAG_00008000 32768 + +#define PROPFLAG2_00000400 1024 + +#define PROPFLAG2_00400000 4194304 + +#define CHRFLAG_COUNT_DEATH_AS_CIVILIAN 1048576 + +#define PAD_PRESET 9000 + +#define CHR_PRESET -4 + +#define PROPFLAG2_00020000 131072 + +#define PROPFLAG_00002000 8192 + +#define PROPFLAG_10000000 268435456 + +#define CHRFLAG_INVINCIBLE 16 + +#define CHR_SEE_DIE -5 + +#define CHRFLAG_HIDDEN 1024 + +#define PROPFLAG_00010000 65536 + +#define PROPFLAG2_08000000 134217728 + +#define PROPFLAG2_00000100 256 + +#define CHRFLAG_00000004 4 + +#define CHRFLAG_00000001 1 + +#define CHRFLAG_10000000 268435456 + +#define PROPFLAG2_80000000 2147483648 + +#define CHRFLAG_80000000 2147483648 + +#define CHRFLAG_HAS_BEEN_ON_SCREEN 8 + +#define PROPFLAG2_20000000 536870912 + +#define PROPFLAG_00004000 16384 + +#define PROPFLAG_00000200 512 + +#define CHR_OBJECTIVE -2 + +#define PROPFLAG_00400000 4194304 + +#define CHRFLAG_01000000 16777216 + +#define PROPFLAG2_00000200 512 + +#define CHRFLAG_SUNGLASSES 2 + +#define CHRFLAG_00000020 32 + +#define CHRFLAG_00040000 262144 + +#define PROPFLAG2_00010000 65536 + +#define CHR_CLONE -7 + +#define CHRFLAG_02000000 33554432 + +#define PROPFLAG_08000000 134217728 + +#define CHRFLAG_WAS_DAMAGED 256 + +#define PROPFLAG_80000000 2147483648 + +#define PROPFLAG2_00001000 4096 + +#define CHR_SEE_SHOT -6 + +#define CHRFLAG_00000200 512 + +#define CHRFLAG_00010000 65536 + +#define CHRFLAG_CAN_SHOOT_CHRS 64 + +#define PROPFLAG_00000004 4 + +#define PADEXTRA_START 10000 + +#define CHR_SELF -3 + +#define PROPFLAG_00000800 2048 + +#define PROPFLAG_00000008 8 + +#define PROPFLAG2_00000040 64 + +#define CHRFLAG_INCREASE_SPRINT_SPEED 524288 + +#define PROPFLAG_20000000 536870912 + +#define PROPFLAG_40000000 1073741824 + +#define PROPFLAG_00000001 1 + +#define PROPFLAG_00000002 2 + +#define CHRFLAG_04000000 67108864 + +#define PROPFLAG2_00000010 16 + +#define PROPFLAG2_00000001 1 + +#define PROPFLAG2_00000002 2 + +#define PROPFLAG2_00000004 4 + +#define PROPFLAG2_00000800 2048 + +#define PROPFLAG2_00000008 8 + +#define CHR_CLONED_NUM_START 9000 + +#define PROPFLAG_00200000 2097152 + +#define PROPFLAG2_00000020 32 + +#define PROPFLAG_00000100 256 + +#define PROPFLAG2_01000000 16777216 + +#define GAME_TICKRATE 60 + +#define PROPFLAG_04000000 67108864 + +#define PROPFLAG2_00200000 2097152 + +#define CHRFLAG_LOCK_Y_POS 4096 + +#define PROPFLAG2_00040000 262144 + +#define PROPFLAG_00001000 4096 + +#define PROPFLAG_01000000 16777216 + +#define CHRFLAG_20000000 536870912 + +#define PROPFLAG2_00100000 1048576 + +#define PROPFLAG_00800000 8388608 + +#define CHRFLAG_IGNORE_ANIM_TRANSLATION 16384 + +#define PROPFLAG2_02000000 33554432 + +#define CHRFLAG_00000080 128 + +#define CHRFLAG_00008000 32768 + +#define CHR_SPAWN_NUM_START 5000 + +#define CHRFLAG_40000000 1073741824 + +#define PROPFLAG2_00000080 128 + +#define PROPFLAG2_40000000 1073741824 + +#define PROPFLAG2_00008000 32768 + +#define CHRFLAG_WAS_HIT 2097152 + +#define PROPFLAG_00000040 64 + +#define CHRFLAG_00020000 131072 + +#define PROPFLAG_00080000 524288 + +#define PROPFLAG2_00080000 524288 + +#define PROPFLAG_02000000 33554432 + +#define PROPFLAG_00000010 16 + +#define CHRFLAG_08000000 134217728 + +#define PROPFLAG_00040000 262144 + +#define PROPFLAG2_10000000 268435456 + +#define PROPFLAG2_00002000 8192 + +#define PROPFLAG2_04000000 67108864 + +#define PROPFLAG_00000020 32 + +#define CHRFLAG_00400000 4194304 + +typedef struct IMAGE IMAGE, *PIMAGE; + +struct IMAGE { + ushort imagic; + ushort type; + ushort dim; + ushort xsize; + ushort ysize; + ushort zsize; + ulong min; + ulong max; + ulong wastebytes; + char name[80]; + ulong colormap; + long file; + ushort flags; + short dorev; + short x; + short y; + short z; + short cnt; + ushort * ptr; + ushort * base; + ushort * tmpbuf; + ulong offset; + ulong rleend; + ulong * rowstart; + long * rowsize; +}; + +#define CM_COLORMAP 3 + +#define TYPEMASK 65280 + +#define ITYPE_VERBATIM 0 + +#define ITYPE_RLE 256 + +#define CM_DITHERED 1 + +#define IMAGIC 474 + +#define RLE_NOP 0 + +#define CM_SCREEN 2 + +#define BPPMASK 255 + +#define CM_NORMAL 0 + +typedef struct _Region_s _Region_s, *P_Region_s; + +struct _Region_s { + u8 * r_startBufferAddress; + u8 * r_endAddress; + s32 r_bufferSize; + s32 r_bufferCount; + u16 r_freeList; + u16 r_alignSize; +}; + +typedef struct _Region_s OSRegion; + +#define OS_RG_ALIGN_DEFAULT 8 + +#define MAX_BUFCOUNT 32768 + +#define OS_RG_ALIGN_16B 16 + +#define OS_RG_ALIGN_4B 4 + +#define OS_RG_ALIGN_2B 2 + +#define OS_RG_ALIGN_8B 8 + +#define BUF_FREE_WO_NEXT 32768 + +#define GT_STATE_OFF_VTXCOUNT 8 + +#define GT_STATE_OFF_TRANSFORM 24 + +#define GT_STATE_OFF_RENDSTATE 0 + +#define GT_STATE_OFF_TRICOUNT 10 + +#define GT_STATE_OFF_VTXV0 9 + +#define GT_STATE_SIZE 88 + +#define GT_STATE_OFF_TEXSTATE 4 + +#define GT_STATE_OFF_OTHERMODE 16 + +#define GT_STATE_OFF_RDPCMDS 12 + +#define M_GFXTASK 1 + +#define G_OFF 0 + +#define G_ON 1 + +#define M_VIDTASK 3 + +#define NUM_SEGMENTS 16 + +#define M_AUDTASK 2 + +typedef void (* OSErrorHandler)(s16, s16, ...); + +#define ERR_OSPISTARTDMA_PIMGR 28 + +#define ERR_OSCREATETHREAD_PRI 2 + +#define ERR_OSVISETXSCALE_VALUE 39 + +#define ERR_ALMODDELAYOVERFLOW 133 + +#define ERR_OSVIGETNEXTFRAMEBUFFER 38 + +#define ERR_OSSETTLBASID 13 + +#define ERR_OSVIGETCURRENTFRAMEBUFFER 37 + +#define ERR_ALEVENTNOFREE 124 + +#define ERR_OSPISTARTDMA_DIR 30 + +#define ERR_OSSETTHREADPRI 4 + +#define ERR_OSSETTIME 75 + +#define ERR_OSREADHOST_ADDR 70 + +#define ERR_OSPROFILESTART_TIME 66 + +#define ERR_OSVISETMODE 45 + +#define ERR_ALSYN_NO_UPDATE 106 + +#define ERR_ALSEQSYSEX 119 + +#define ERR_OSFREE_REGION 53 + +#define ERR_OSGETREGIONBUFCOUNT 55 + +#define ERR_OSPISTARTDMA_PRI 29 + +#define ERR_OSMAPTLB_INDEX 10 + +#define ERR_OSCREATEVIMANAGER 49 + +#define ERR_ALSEQMETA 120 + +#define ERR_ALBNKFNEW 113 + +#define ERR_ALCSEQZEROSTATUS 128 + +#define ERR_OSPISTARTDMA_DEVADDR 31 + +#define ERR_OSSETEVENTMESG 9 + +#define ERR_ALHEAPNOFREE 125 + +#define ERR_OSAISETNEXTBUFFER_ADDR 15 + +#define ERR_OSSTARTTHREAD 3 + +#define ERR_OSREADHOST_SIZE 71 + +#define ERR_ALSEQPUNMAP 123 + +#define ERR_OSUNMAPTLB 12 + +#define ERR_OSAISETNEXTBUFFER_SIZE 16 + +#define ERR_ALSNDPSETSOUND 110 + +#define ERR_OSVISWAPBUFFER_VIMGR 48 + +#define ERR_ALSEQNOTMIDI0 115 + +#define ERR_OSPROFILEINIT_STR 61 + +#define ERR_OSPROFILESTART_FLAG 67 + +#define ERR_OSMAPTLB_ASID 11 + +#define ERR_OSCREATETHREAD_SP 1 + +#define ERR_OSGETREGIONBUFSIZE 56 + +#define ERR_OSVISETEVENT 46 + +#define ERR_OSVISETSPECIAL_VALUE 43 + +#define ERR_OSVISETYSCALE_VALUE 41 + +#define ERR_OSPIRAWSTARTDMA_DIR 21 + +#define ERR_OSPIRAWWRITEIO 20 + +#define ERR_OSPROFILESTOP_FLAG 68 + +#define ERR_ALCSEQZEROVEL 129 + +#define ERR_OSMALLOC 52 + +#define ERR_OSSPTASKLOAD_OUTSIZE 59 + +#define ERR_ALSEQNOTMIDI 114 + +#define ERR_OSVIGETCURRENTMODE 36 + +#define ERR_OSPIRAWSTARTDMA_ADDR 23 + +#define ERR_OSCREATEREGION_SIZE 51 + +#define ERR_OSPIRAWSTARTDMA_SIZE 24 + +#define ERR_OSVISETXSCALE_VIMGR 40 + +#define ERR_ALCSPVNOTFREE 130 + +#define ERR_OSJAMMESG 7 + +#define ERR_OSPISTARTDMA_RANGE 34 + +#define ERR_ALSEQPINVALIDPROG 121 + +#define ERR_OSPIWRITEIO 27 + +#define ERR_OSPROFILEINIT_ORD 64 + +#define ERR_OSPROFILEINIT_SIZ 65 + +#define ERR_OSPIREADIO 26 + +#define ERR_OSSPTASKLOAD_YIELD 60 + +#define ERR_OSSTOPTIMER 77 + +#define ERR_OSSENDMESG 6 + +#define ERR_OSPISTARTDMA_ADDR 32 + +#define ERR_OSVISETSPECIAL_VIMGR 44 + +#define ERR_ALSEQTRACKHDR 118 + +#define ERR_OSSPTASKLOAD_DRAM 57 + +#define ERR_OSPROFILESTOP_TIMER 69 + +#define ERR_OSAISETFREQUENCY 14 + +#define ERR_ALSEQP_MAP_VOICE 102 + +#define ERR_OSFREE_ADDR 54 + +#define ERR_OSDPSETNEXTBUFFER_ADDR 17 + +#define ERR_OSDPSETNEXTBUFFER_SIZE 18 + +#define ERR_ALSNDPDELETE 108 + +#define ERR_OSSPTASKLOAD_OUT 58 + +#define ERR_OSPIRAWSTARTDMA_DEVADDR 22 + +#define ERR_OSCREATEMESGQUEUE 5 + +#define ERR_ALSNDPSETPRIORITY 111 + +#define ERR_ALHEAPFIRSTBLOCK 127 + +#define OS_ERROR_MAGIC 1801548921 + +#define ERR_OSPIRAWSTARTDMA_RANGE 25 + +#define ERR_ALSNDPSETPAR 112 + +#define ERR_OSSETTIMER 76 + +#define ERR_OSGETTIME 74 + +#define ERR_ALSEQP_NO_SOUND 100 + +#define ERR_ALSNDPDEALLOCATE 107 + +#define ERR_ALSEQNUMTRACKS 116 + +#define ERR_OSCREATEREGION_ALIGN 50 + +#define ERR_ALSEQP_POLY_VOICE 104 + +#define ERR_OSVISWAPBUFFER_ADDR 47 + +#define ERR_ALSNDP_NO_VOICE 105 + +#define ERR_ALHEAPCORRUPT 126 + +#define ERR_ALSEQTIME 117 + +#define ERR_ALSNDPPLAY 109 + +#define ERR_OSPIRAWREADIO 19 + +#define ERR_OSAISETNEXTBUFFER_ENDADDR 132 + +#define ERR_OSPROFILEINIT_ALN 63 + +#define ERR_OSWRITEHOST_ADDR 72 + +#define ERR_OSWRITEHOST_SIZE 73 + +#define ERR_ALSEQPUNKNOWNMIDI 122 + +#define ERR_OSCREATEPIMANAGER 35 + +#define ERR_ALSEQP_NO_VOICE 101 + +#define ERR_ALSEQOVERRUN 131 + +#define ERR_OSPISTARTDMA_SIZE 33 + +#define ERR_OSPROFILEINIT_CNT 62 + +#define ERR_ALSEQP_OFF_VOICE 103 + +#define ERR_OSRECVMESG 8 + +#define ERR_OSVISETYSCALE_VIMGR 42 + +typedef struct video_settings video_settings, *Pvideo_settings; + +struct video_settings { +}; + +typedef struct OSThread_s OSThread_s, *POSThread_s; + +typedef s32 OSPri; + +typedef s32 OSId; + +typedef struct __OSThreadprofile_s __OSThreadprofile_s, *P__OSThreadprofile_s; + +typedef struct __OSThreadContext __OSThreadContext, *P__OSThreadContext; + +typedef union __OSfp __OSfp, *P__OSfp; + +typedef struct _struct_3 _struct_3, *P_struct_3; + +struct _struct_3 { + f32 f_odd; + f32 f_even; +}; + +union __OSfp { + struct _struct_3 f; +}; + +struct __OSThreadContext { + u64 at; + u64 v0; + u64 v1; + u64 a0; + u64 a1; + u64 a2; + u64 a3; + u64 t0; + u64 t1; + u64 t2; + u64 t3; + u64 t4; + u64 t5; + u64 t6; + u64 t7; + u64 s0; + u64 s1; + u64 s2; + u64 s3; + u64 s4; + u64 s5; + u64 s6; + u64 s7; + u64 t8; + u64 t9; + u64 gp; + u64 sp; + u64 s8; + u64 ra; + u64 lo; + u64 hi; + u32 sr; + u32 pc; + u32 cause; + u32 badvaddr; + u32 rcp; + u32 fpcsr; + union __OSfp fp0; + union __OSfp fp2; + union __OSfp fp4; + union __OSfp fp6; + union __OSfp fp8; + union __OSfp fp10; + union __OSfp fp12; + union __OSfp fp14; + union __OSfp fp16; + union __OSfp fp18; + union __OSfp fp20; + union __OSfp fp22; + union __OSfp fp24; + union __OSfp fp26; + union __OSfp fp28; + union __OSfp fp30; +}; + +struct OSThread_s { + struct OSThread_s * next; + OSPri priority; + struct OSThread_s * * queue; + struct OSThread_s * tlnext; + u16 state; + u16 flags; + OSId id; + int fp; + struct __OSThreadprofile_s * thprof; + struct __OSThreadContext context; +}; + +struct __OSThreadprofile_s { + u32 flag; + u32 count; + u64 time; +}; + +typedef struct OSThread_s OSThread; + +#define OS_PRIORITY_APPMAX 127 + +#define OS_STATE_RUNNING 4 + +#define OS_PRIORITY_RMON 250 + +#define OS_PRIORITY_PIMGR 150 + +#define OS_PRIORITY_IDLE 0 + +#define OS_PRIORITY_MAX 255 + +#define OS_STATE_STOPPED 1 + +#define OS_PRIORITY_VIMGR 254 + +#define OS_STATE_RUNNABLE 2 + +#define OS_STATE_WAITING 8 + +#define OS_PRIORITY_SIMGR 140 + +#define OS_PRIORITY_RMONSPIN 200 + +typedef struct __OSEventState __OSEventState, *P__OSEventState; + +typedef struct OSMesgQueue_s OSMesgQueue_s, *POSMesgQueue_s; + +typedef struct OSMesgQueue_s OSMesgQueue; + +typedef void * OSMesg; + + +// WARNING! conflicting data type names: /os.h/OSThread - /thread.h/OSThread + +struct __OSEventState { + OSMesgQueue * messageQueue; + OSMesg message; +}; + +struct OSMesgQueue_s { + OSThread * mtqueue; + OSThread * fullqueue; + s32 validCount; + s32 first; + s32 msgCount; + OSMesg * msg; +}; + +typedef struct __OSThreadTail __OSThreadTail, *P__OSThreadTail; + + +// WARNING! conflicting data type names: /os.h/OSPri - /thread.h/OSPri + +struct __OSThreadTail { + OSThread * next; + OSPri priority; +}; + +typedef struct guDLPrintCB guDLPrintCB, *PguDLPrintCB; + +struct guDLPrintCB { + int dataSize; + int dlType; + int flags; + u32 paddr; +}; + +typedef struct PositionalLight PositionalLight, *PPositionalLight; + +struct PositionalLight { + float col[3]; + float pos[3]; + float a1; + float a2; +}; + +typedef struct Image Image, *PImage; + +struct Image { + uchar * base; + int fmt; + int siz; + int xsize; + int ysize; + int lsize; + int addr; + int w; + int h; + int s; + int t; +}; + +#define GU_PARSE_GBI_TYPE 1 + +#define GU_PARSE_MEM_BLOCK 4 + +#define GU_PARSEGBI_NONEST 2 + +#define GU_BLINKRDP_HILITE 1 + +#define GU_PARSEGBI_ROWMAJOR 1 + +#define GU_PARSEGBI_ALLMTX 16 + +#define GU_PARSERDP_VERBOSE 1 + +#define GU_PARSE_RDP_TYPE 2 + +#define GU_BLINKRDP_EXTRACT 2 + +#define GU_PARSE_READY 3 + +#define GU_PARSERDP_PRHISTO 4 + +#define FILTER_CLAMP 1 + +#define GU_PARSEGBI_DUMPONLY 32 + +#define GU_PARSEGBI_SHOWDMA 8 + +#define GU_PARSERDP_DUMPONLY 32 + +#define GU_PARSEGBI_FLTMTX 4 + +#define GU_PARSE_ABI_TYPE 5 + +#define GU_PARSERDP_PRAREA 2 + +#define FILTER_WRAP 0 + +#define GU_PARSE_STRING_TYPE 6 + +typedef struct huft huft, *Phuft; + +typedef union _union_2 _union_2, *P_union_2; + +union _union_2 { + ush n; + struct huft * t; +}; + +struct huft { + uch e; + uch b; + union _union_2 v; +}; + +#define BMAX 16 + +#define N_MAX 288 + +typedef struct OSPifRam OSPifRam, *POSPifRam; + +struct OSPifRam { + u32 ramarray[15]; + u32 pifstatus; +}; + +typedef union __OSInodeUnit __OSInodeUnit, *P__OSInodeUnit; + +typedef struct _struct_195 _struct_195, *P_struct_195; + +struct _struct_195 { + u8 bank; + u8 page; +}; + +union __OSInodeUnit { + struct _struct_195 inode_t; + u16 ipage; +}; + +typedef struct __OSContEepromFormat __OSContEepromFormat, *P__OSContEepromFormat; + +struct __OSContEepromFormat { + u8 txsize; + u8 rxsize; + u8 cmd; + u8 address; + u8 data[8]; +}; + +typedef struct __OSContReadFormat __OSContReadFormat, *P__OSContReadFormat; + +struct __OSContReadFormat { + u8 dummy; + u8 txsize; + u8 rxsize; + u8 cmd; + u16 button; + s8 stick_x; + s8 stick_y; +}; + +typedef struct __OSContRamReadFormat __OSContRamReadFormat, *P__OSContRamReadFormat; + +struct __OSContRamReadFormat { + u8 dummy; + u8 txsize; + u8 rxsize; + u8 cmd; + u16 address; + u8 data[32]; + u8 datacrc; +}; + +typedef struct __OSInode __OSInode, *P__OSInode; + +struct __OSInode { + union __OSInodeUnit inode_page[128]; +}; + +typedef struct __OSContRequesFormat __OSContRequesFormat, *P__OSContRequesFormat; + +struct __OSContRequesFormat { + u8 dummy; + u8 txsize; + u8 rxsize; + u8 cmd; + u8 typeh; + u8 typel; + u8 status; + u8 dummy1; +}; + +typedef struct __OSDir __OSDir, *P__OSDir; + +struct __OSDir { + u32 game_code; + u16 company_code; + union __OSInodeUnit start_page; + u8 status; + s8 reserved; + u16 data_sum; + char ext_name[4]; + char game_name[16]; +}; + +typedef struct __OSPackId __OSPackId, *P__OSPackId; + +struct __OSPackId { + u32 repaired; + u32 random; + u64 serial_mid; + u64 serial_low; + u16 deviceid; + u8 banks; + u8 version; + u16 checksum; + u16 inverted_checksum; +}; + +typedef struct __OSInodeCache __OSInodeCache, *P__OSInodeCache; + +struct __OSInodeCache { + struct __OSInode inode; + u8 bank; + u8 map[256]; +}; + +#define CONT_EEPROM_READ 4 + +#define CONT_SETCH 254 + +#define PFS_64K_RAM 2 + +#define PFS_INODE_DIST_MAP 256 + +#define PFS_FORCE 1 + +#define CONT_FORMAT 1 + +#define PFS_ID_1AREA 3 + +#define PFS_EOF 1 + +#define PFS_SECTOR_PER_BANK 32 + +#define EEPROM_WAIT 12000 + +#define PFS_INODE_SIZE_PER_PAGE 128 + +#define PFS_ID_2AREA 4 + +#define FORMAT_END 254 + +#define PFS_ID_3AREA 6 + +#define CONT_RESET 255 + +#define PFS_DELETE 1 + +#define PFS_PAGE_SIZE 256 + +#define PFS_SIZE_LOC 24 + +#define PFS_32K_RAM 1 + +#define CONT_READ 1 + +#define PFS_LABEL_AREA 7 + +#define CONT_RAM_READ 2 + +#define PIFRAMSIZE 16 + +#define PFS_PAGE_NOT_EXIST 2 + +#define CONT_EEPROM_WRITE 5 + +#define PFS_PAGE_NOT_USED 3 + +#define PFS_BANK_LAPPED_BY 8 + +#define CONT_RAM_WRITE 3 + +#define PFS_ID_PAGE 0 + +#define PFS_SECTOR_SIZE 4 + +#define CHANNEL_RESET 253 + +#define CONT_REQUEST 0 + +#define DEF_DIR_PAGES 2 + +#define PFS_ID_0AREA 1 + +#define PFS_WRITTEN 2 + +#define CON_ERR_MASK 192 + +typedef struct debug_processor_error_entry debug_processor_error_entry, *Pdebug_processor_error_entry; + +struct debug_processor_error_entry { + u32 val1; + u32 val2; + void * string; +}; + +typedef struct debug_handler_entry debug_handler_entry, *Pdebug_handler_entry; + +struct debug_handler_entry { + void * address; + char * ptr_name; +}; + +#define RMON_STACKSIZE 4096 + +#define RMON_DBG_BUF_SIZE 2048 + + +// WARNING! conflicting data type names: /message.h/OSMesgQueue_s - /os.h/OSMesgQueue_s + +typedef u32 OSEvent; + + +// WARNING! conflicting data type names: /message.h/OSMesgQueue - /os.h/OSMesgQueue + +#define OS_EVENT_CART 2 + +#define OS_EVENT_VI 7 + +#define OS_EVENT_FAULT 12 + +#define OS_EVENT_AI 6 + +#define OS_EVENT_THREADSTATUS 13 + +#define OS_EVENT_CPU_BREAK 10 + +#define OS_MESG_NOBLOCK 0 + +#define OS_EVENT_PI 8 + +#define OS_EVENT_COUNTER 3 + +#define OS_EVENT_DP 9 + +#define OS_MESG_BLOCK 1 + +#define OS_EVENT_SP 4 + +#define OS_EVENT_SP_BREAK 11 + +#define OS_EVENT_SI 5 + +#define OS_EVENT_PRENMI 14 + +#define OS_EVENT_SW2 1 + +#define OS_EVENT_SW1 0 + +typedef struct OSTimer_str OSTimer_str, *POSTimer_str; + +struct OSTimer_str { + struct OSTimer_str * next; + struct OSTimer_str * prev; + u64 interval; + u64 remaining; + OSMesgQueue * mq; + OSMesg * msg; +}; + +typedef struct OSTimer_str OSTimer; + +typedef u32 OSIntMask; + +typedef struct Elf32_RegInfo_MIPS Elf32_RegInfo_MIPS, *PElf32_RegInfo_MIPS; + +struct Elf32_RegInfo_MIPS { + enum Elf32_GPRMask_MIPS ri_gprmask; + dword field_0x4[4]; + dword ri_gp_value; +}; + +typedef struct Elf32_Sym Elf32_Sym, *PElf32_Sym; + +struct Elf32_Sym { + dword st_name; + dword st_value; + dword st_size; + byte st_info; + byte st_other; + word st_shndx; +}; + +typedef struct Elf32_Shdr Elf32_Shdr, *PElf32_Shdr; + +typedef enum Elf_SectionHeaderType_MIPS { + =1879048203, + SHT_CHECKSUM=1879048184, + SHT_DYNAMIC=6, + SHT_DYNSYM=11, + SHT_FINI_ARRAY=15, + SHT_GNU_ATTRIBUTES=1879048181, + SHT_GNU_HASH=1879048182, + SHT_GNU_LIBLIST=1879048183, + SHT_GNU_verdef=1879048189, + SHT_GNU_verneed=1879048190, + SHT_GNU_versym=1879048191, + SHT_GROUP=17, + SHT_HASH=5, + SHT_INIT_ARRAY=14, + SHT_MIPS_ABIFLAGS=1879048234, + SHT_MIPS_AUXSYM=1879048214, + SHT_MIPS_CONFLICT=1879048194, + SHT_MIPS_CONTENT=1879048204, + SHT_MIPS_DEBUG=1879048197, + SHT_MIPS_DELTACLASS=1879048221, + SHT_MIPS_DELTADECL=1879048223, + SHT_MIPS_DELTAINST=1879048220, + SHT_MIPS_DELTASYM=1879048219, + SHT_MIPS_DENSE=1879048211, + SHT_MIPS_DWARF=1879048222, + SHT_MIPS_EH_REGION=1879048231, + SHT_MIPS_EVENTS=1879048225, + SHT_MIPS_EXTSYM=1879048210, + SHT_MIPS_FDESC=1879048209, + SHT_MIPS_GPTAB=1879048195, + SHT_MIPS_LIBLIST=1879048192, + SHT_MIPS_LINE=1879048217, + SHT_MIPS_LOCSTR=1879048216, + SHT_MIPS_LOCSYM=1879048213, + SHT_MIPS_MSYM=1879048193, + SHT_MIPS_OPTIONS=1879048205, + SHT_MIPS_OPTSYM=1879048215, + SHT_MIPS_PACKAGE=1879048199, + SHT_MIPS_PACKSYM=1879048200, + SHT_MIPS_PDESC=1879048212, + SHT_MIPS_PDR_EXCEPTION=1879048233, + SHT_MIPS_PIXIE=1879048227, + SHT_MIPS_REGINFO=1879048198, + SHT_MIPS_RELD=1879048201, + SHT_MIPS_RFDESC=1879048218, + SHT_MIPS_SHDR=1879048208, + SHT_MIPS_SYMBOL_LIB=1879048224, + SHT_MIPS_TRANSLATE=1879048226, + SHT_MIPS_UCODE=1879048196, + SHT_MIPS_WHIRL=1879048230, + SHT_MIPS_XLATE=1879048228, + SHT_MIPS_XLATE_DEBUG=1879048229, + SHT_MIPS_XLATE_OLD=1879048232, + SHT_NOBITS=8, + SHT_NOTE=7, + SHT_NULL=0, + SHT_PREINIT_ARRAY=16, + SHT_PROGBITS=1, + SHT_REL=9, + SHT_RELA=4, + SHT_SHLIB=10, + SHT_STRTAB=3, + SHT_SUNW_COMDAT=1879048187, + SHT_SUNW_move=1879048186, + SHT_SUNW_syminfo=1879048188, + SHT_SYMTAB=2, + SHT_SYMTAB_SHNDX=18 +} Elf_SectionHeaderType_MIPS; + +struct Elf32_Shdr { + dword sh_name; + enum Elf_SectionHeaderType_MIPS sh_type; + dword sh_flags; + dword sh_addr; + dword sh_offset; + dword sh_size; + dword sh_link; + dword sh_info; + dword sh_addralign; + dword sh_entsize; +}; + +typedef struct Elf32_Phdr Elf32_Phdr, *PElf32_Phdr; + +typedef enum Elf_ProgramHeaderType_MIPS { + PT_DYNAMIC=2, + PT_GNU_EH_FRAME=1685382480, + PT_GNU_RELRO=1685382482, + PT_GNU_STACK=1685382481, + PT_INTERP=3, + PT_LOAD=1, + PT_MIPS_ABIFLAGS=1879048195, + PT_MIPS_OPTIONS=1879048194, + PT_MIPS_REGINFO=1879048192, + PT_MIPS_RTPROC=1879048193, + PT_NOTE=4, + PT_NULL=0, + PT_PHDR=6, + PT_SHLIB=5, + PT_TLS=7 +} Elf_ProgramHeaderType_MIPS; + +struct Elf32_Phdr { + enum Elf_ProgramHeaderType_MIPS p_type; + dword p_offset; + dword p_vaddr; + dword p_paddr; + dword p_filesz; + dword p_memsz; + dword p_flags; + dword p_align; +}; + +typedef struct Elf32_Ehdr Elf32_Ehdr, *PElf32_Ehdr; + +struct Elf32_Ehdr { + byte e_ident_magic_num; + char e_ident_magic_str[3]; + byte e_ident_class; + byte e_ident_data; + byte e_ident_version; + byte e_ident_pad[9]; + word e_type; + word e_machine; + dword e_version; + dword e_entry; + dword e_phoff; + dword e_shoff; + dword e_flags; + word e_ehsize; + word e_phentsize; + word e_phnum; + word e_shentsize; + word e_shnum; + word e_shstrndx; +}; + +#define SAFE_EXP 1023 + +#define _DMASK 32752 + +#define _D3 3 + +#define _D2 2 + +#define _D1 1 + +#define _DNAN 65528 + +#define _DFRAC 15 + +#define _DMAX 2047 + +#define NAN 2 + +#define _DSIGN 32768 + +#define INF 1 + +#define FINITE -1 + +#define HUGE_EXP 1842 + +typedef char * voidp; + +typedef int file_t; + +#define RESERVED 192 + +#define seekable 0 + +#define PACKED 2 + +#define DIST_BUFSIZE 32768 + +#define DEFLATED 8 + +#define WARNING 2 + +#define ORIG_NAME 8 + +#define translate_eol 0 + +#define MAX_MATCH 258 + +#define CONTINUATION 2 + +#define MIN_MATCH 3 + +#define STORED 0 + +#define COMMENT 16 + +#define WSIZE 32768 + +#define MIN_LOOKAHEAD 262 + +#define EXTRA_FIELD 4 + +#define ASCII 1 + +#define INBUFSIZ 32768 + +#define OUTBUF_EXTRA 2048 + +#define OK 0 + +#define MAX_DIST 32506 + +#define ASCII_FLAG 1 + +#define MAX_METHODS 9 + +#define ENCRYPTED 32 + +#define LZHED 3 + +#define NO_FILE -1 + +#define OUTBUFSIZ 16384 + +#define COMPRESSED 1 + +#define INBUF_EXTRA 64 + +#define ERROR 1 + +#define UNKNOWN 65535 + +#define BINARY 0 + +typedef struct OSIoMesg OSIoMesg, *POSIoMesg; + +typedef struct OSIoMesgHdr OSIoMesgHdr, *POSIoMesgHdr; + +typedef struct OSPiHandle_s OSPiHandle_s, *POSPiHandle_s; + +typedef struct OSPiHandle_s OSPiHandle; + +typedef struct __OSTranxInfo __OSTranxInfo, *P__OSTranxInfo; + +typedef struct __OSBlockInfo __OSBlockInfo, *P__OSBlockInfo; + +struct OSIoMesgHdr { + u16 type; + u8 pri; + u8 status; + OSMesgQueue * retQueue; +}; + +struct OSIoMesg { + struct OSIoMesgHdr hdr; + void * dramAddr; + u32 devAddr; + u32 size; + OSPiHandle * piHandle; +}; + +struct __OSBlockInfo { + u32 errStatus; + void * dramAddr; + void * C2Addr; + u32 sectorSize; + u32 C1ErrNum; + u32 C1ErrSector[4]; +}; + +struct __OSTranxInfo { + u32 cmdType; + u16 transferMode; + u16 blockNum; + s32 sectorNum; + u32 devAddr; + u32 bmCtlShadow; + u32 seqCtlShadow; + struct __OSBlockInfo block[2]; +}; + +struct OSPiHandle_s { + struct OSPiHandle_s * next; + u8 type; + u8 latency; + u8 pageSize; + u8 relDuration; + u8 pulse; + u8 domain; + u32 baseAddress; + u32 speed; + struct __OSTranxInfo transferInfo; +}; + +typedef struct OSPiInfo OSPiInfo, *POSPiInfo; + +struct OSPiInfo { + u8 type; + u32 address; +}; + +#define OS_MESG_PRI_HIGH 1 + +#define OS_WRITE 1 + +#define OS_READ 0 + +#define OS_MESG_PRI_NORMAL 0 + +#define DPS_REG_BASE 2753560576 + +#define DPC_REG_BASE 2752512000 + +typedef struct RamRomBuffer RamRomBuffer, *PRamRomBuffer; + +struct RamRomBuffer { + long type; + long length; + long magic; + char userdata[24573]; +}; + +#define RAMROM_BUF_SIZE 4096 + +#define RAMROM_FONTDATA_SIZE 1152 + +#define GAME_APP_DATA_READY 10 + +#define HOST_FAULT_ACK 15 + +#define RAMROM_MSG_ADDR 16752640 + +#define HOST_LOG_ACK 8 + +#define RAMROM_RMON_WRITE_ADDR 16764928 + +#define HOST_PIACCESS_REQ 1 + +#define RAMROM_FONTDATA_OFFSET 2928 + +#define RAMROM_PIF2BOOTSTRAP_OFFSET 4096 + +#define RAMROM_CLOCKRATE_MASK 4294967280 + +#define GAME_PRINTF_SEND 5 + +#define HOST_PROF_ACK 13 + +#define GAME_EXIT 16 + +#define HOST_PROF_REQ 11 + +#define RAMROM_BOOTADDR_OFFSET 8 + +#define HOST_DBG_DATA_ACK 4 + +#define GAME_LOG_SEND 7 + +#define HOST_DBG_CMD_READY 2 + +#define RAMROM_SIZE 16777216 + +#define RAMROM_APP_WRITE_ADDR 16756736 + +#define RAMROM_BOOTSTRAP_OFFSET 64 + +#define HOST_PRINTF_ACK 6 + +#define RAMROM_CLOCKRATE_OFFSET 4 + +#define RAMROM_MSG_SIZE 24576 + +#define RAMROM_RMON_READ_ADDR 16760832 + +#define GAME_FAULT_SEND 14 + +#define RAMROM_PRINTF_ADDR 16769024 + +#define GAME_PROF_SEND 12 + +#define HOST_APP_CMD_READY 9 + +#define RAMROM_LOG_ADDR 16773120 + +#define HOST_DATA_ACK 17 + +#define RAMROM_GAME_OFFSET 4096 + +#define GAME_DBG_DATA_SEND 3 + +#define RAMROM_APP_READ_ADDR 16752640 + +#define RAMROM_RELEASE_OFFSET 12 + + +// WARNING! conflicting data type names: /_CAPTURED_FROM_ge007.u.old.elf/__OSPackId - /CONTROLLER.H/__OSPackId + +typedef struct struct struct, *Pstruct; + +typedef struct OSViMode OSViMode, *POSViMode; + +typedef struct OSViCommonRegs OSViCommonRegs, *POSViCommonRegs; + +typedef struct OSViFieldRegs OSViFieldRegs, *POSViFieldRegs; + +struct struct { + u16 field_0x0; + u16 field_0x2; + void * field_0x4; + struct OSViMode * field_0x8; + u32 field_0xc; + OSMesgQueue * field_0x10; + OSMesg field_0x14; +}; + +struct OSViCommonRegs { + u32 ctrl; + u32 width; + u32 burst; + u32 vSync; + u32 hSync; + u32 leap; + u32 hStart; + u32 xScale; + u32 vCurrent; +}; + +struct OSViFieldRegs { + u32 origin; + u32 yScale; + u32 vStart; + u32 vBurst; + u32 vIntr; +}; + +struct OSViMode { + u8 type; + struct OSViCommonRegs comRegs; + struct OSViFieldRegs fldRegs[2]; +}; + +typedef struct PVoice PVoice, *PPVoice; + +typedef struct ALLink_s ALLink_s, *PALLink_s; + +typedef struct ALLink_s ALLink; + +typedef struct ALVoice_s ALVoice_s, *PALVoice_s; + +typedef struct ALFilter_s ALFilter_s, *PALFilter_s; + +typedef struct ALADPCMFilter ALADPCMFilter, *PALADPCMFilter; + +typedef struct ALResampler ALResampler, *PALResampler; + +typedef struct ALEnvMixer_s ALEnvMixer_s, *PALEnvMixer_s; + +typedef struct PVoice_s PVoice_s, *PPVoice_s; + +typedef struct ALWaveTable_s ALWaveTable_s, *PALWaveTable_s; + +typedef struct ALWaveTable_s ALWaveTable; + +typedef short ADPCM_STATE[16]; + +typedef struct $039A3EC5794421300707C77A911A1BDF $039A3EC5794421300707C77A911A1BDF, *P$039A3EC5794421300707C77A911A1BDF; + +typedef struct $039A3EC5794421300707C77A911A1BDF ALADPCMloop; + +typedef s32 (* ALDMAproc)(s32, s32, void *); + + +// WARNING! conflicting data type names: /_CAPTURED_FROM_ge007.u.old.elf/ALFilter_s - /libaudio.h/ALFilter_s + +typedef short RESAMPLE_STATE[16]; + +typedef struct ALParam_s ALParam_s, *PALParam_s; + +typedef short ENVMIX_STATE[40]; + +typedef union _union_109 _union_109, *P_union_109; + +typedef struct ALADPCMWaveInfo ALADPCMWaveInfo, *PALADPCMWaveInfo; + +typedef struct ALRAWWaveInfo ALRAWWaveInfo, *PALRAWWaveInfo; + + +// WARNING! conflicting data type names: /libaudio.h/ALADPCMloop - /GE Current Master.h/ALADPCMloop + +typedef struct ALADPCMBook ALADPCMBook, *PALADPCMBook; + +typedef struct ALRawLoop ALRawLoop, *PALRawLoop; + +struct PVoice_s { +}; + +struct $039A3EC5794421300707C77A911A1BDF { +}; + +struct ALResampler { + struct ALFilter_s filter; + RESAMPLE_STATE state; + float ratio; + int upitch; + float delta; + int first; + struct ALParam_s * ctrlList; + struct ALParam_s * ctrlTail; +}; + +struct ALFilter_s { +}; + +struct ALADPCMBook { + s32 order; + s32 npredictors; + s16 book[1]; +}; + +struct ALADPCMWaveInfo { + struct ALADPCMloop * loop; + struct ALADPCMBook * book; +}; + +struct ALRAWWaveInfo { + struct ALRawLoop * loop; +}; + +union _union_109 { + struct ALADPCMWaveInfo adpcmWave; + struct ALRAWWaveInfo rawWave; +}; + +struct ALWaveTable_s { + u8 * base; + s32 len; + u8 type; + u8 flags; + union _union_109 waveInfo; +}; + +struct ALLink_s { + struct ALLink_s * next; + struct ALLink_s * prev; +}; + +struct ALVoice_s { + ALLink node; + struct PVoice_s * pvoice; + ALWaveTable * table; + void * clientPrivate; + s16 state; + s16 priority; + s16 fxBus; + s16 unityPitch; +}; + +struct ALEnvMixer_s { + struct ALFilter_s filter; + ENVMIX_STATE state; + short pan; + short volume; + short cvolL; + short cvolR; + short dryamt; + short wetamt; + ushort lratl; + short lratm; + short ltgt; + ushort rratl; + short rratm; + short rtgt; + int delta; + int segEnd; + int first; + struct ALParam_s * ctrlList; + struct ALParam_s * ctrlTail; + struct ALFilter_s * * sources; + int motion; +}; + +struct ALRawLoop { + u32 start; + u32 end; + u32 count; +}; + +struct ALADPCMFilter { + struct ALFilter_s filter; + ADPCM_STATE state[AL_MAX_ADPCM_STATES]; + ALADPCMloop loop; + struct ALWaveTable_s * table; + int bookSize; + ALDMAproc dma; + int current; + int sample; + int lastsam; + int first; + int memin; + int dramstart; +}; + +struct ALParam_s { +}; + +struct PVoice { + ALLink node; + struct ALVoice_s * vvoice; + void * rspCode; + struct ALFilter_s * sourceKnob; + struct ALFilter_s * channelKnob; + struct ALADPCMFilter decoder; + struct ALResampler resampler; + struct ALEnvMixer_s envmixer; +}; + +typedef int * ALSetParam; + +typedef enum DEBUG_MENU_FLAGS { + FLAG_4=4, + FLAG_8=8 +} DEBUG_MENU_FLAGS; + +typedef struct __OSViContext __OSViContext, *P__OSViContext; + +typedef struct __OSViScale __OSViScale, *P__OSViScale; + +struct __OSViScale { + f32 factor; + u16 offset; + undefined field_0x6; + undefined field_0x7; + undefined field_0x8; + undefined field_0x9; +}; + +struct __OSViContext { + u16 state; + u16 retraceCount; + void * framep; + struct OSViMode * modep; + u32 control; + OSMesgQueue * msgq; + OSMesg msg; + struct __OSViScale x; + struct __OSViScale y; + u32 pad; +}; + + +// WARNING! conflicting data type names: /_CAPTURED_FROM_ge007.u.old.elf/debug_handler_entry - /init.h/debug_handler_entry + +typedef enum BOOL { + FALSE=0, + TRUE=1 +} BOOL; + +typedef enum guard_action_type { + None=0, + dying=4, + fade_away=5, + freeze=2, + freeze_anim=17, + gettingshot=6, + limping=7, + look_around=18, + moving=15, + run_roll_fire=10, + sidehop=12, + siderun=13, + sidestep=11, + standing=1, + standstill_fire=8, + surrendering=16, + swattingflies=3, + throw_grenade=20, + trigger_alarm=19, + walk_fire=9, + walk_path=14 +} guard_action_type; + +typedef union Acmd Acmd, *PAcmd; + +typedef union Acmd ALCmdHandler; + +typedef struct Awords Awords, *PAwords; + +typedef struct Aadpcm Aadpcm, *PAadpcm; + +typedef struct Apolef Apolef, *PApolef; + +typedef struct Aclearbuff Aclearbuff, *PAclearbuff; + +typedef struct Aenvelope Aenvelope, *PAenvelope; + +typedef struct Ainterleave Ainterleave, *PAinterleave; + +typedef struct Aloadbuff Aloadbuff, *PAloadbuff; + +typedef struct Aenvmixer Aenvmixer, *PAenvmixer; + +typedef struct Aresample Aresample, *PAresample; + +typedef struct Areverb Areverb, *PAreverb; + +typedef struct Asavebuff Asavebuff, *PAsavebuff; + +typedef struct Asegment Asegment, *PAsegment; + +typedef struct Asetbuff Asetbuff, *PAsetbuff; + +typedef struct Asetvol Asetvol, *PAsetvol; + +typedef struct Admemmove Admemmove, *PAdmemmove; + +typedef struct Aloadadpcm Aloadadpcm, *PAloadadpcm; + +typedef struct Amixer Amixer, *PAmixer; + +typedef struct Asetloop Asetloop, *PAsetloop; + +typedef union anon__struct_76_bitfield_1 anon__struct_76_bitfield_1, *Panon__struct_76_bitfield_1; + +typedef union anon__struct_77_bitfield_1 anon__struct_77_bitfield_1, *Panon__struct_77_bitfield_1; + +typedef union anon__struct_79_bitfield_1 anon__struct_79_bitfield_1, *Panon__struct_79_bitfield_1; + +typedef union anon__struct_79_bitfield_2 anon__struct_79_bitfield_2, *Panon__struct_79_bitfield_2; + +typedef union anon__struct_78_bitfield_1 anon__struct_78_bitfield_1, *Panon__struct_78_bitfield_1; + +typedef union anon__struct_80_bitfield_1 anon__struct_80_bitfield_1, *Panon__struct_80_bitfield_1; + +typedef union anon__struct_80_bitfield_2 anon__struct_80_bitfield_2, *Panon__struct_80_bitfield_2; + +typedef union anon__struct_81_bitfield_1 anon__struct_81_bitfield_1, *Panon__struct_81_bitfield_1; + +typedef union anon__struct_82_bitfield_1 anon__struct_82_bitfield_1, *Panon__struct_82_bitfield_1; + +typedef union anon__struct_85_bitfield_1 anon__struct_85_bitfield_1, *Panon__struct_85_bitfield_1; + +typedef union anon__struct_86_bitfield_1 anon__struct_86_bitfield_1, *Panon__struct_86_bitfield_1; + +typedef union anon__struct_87_bitfield_1 anon__struct_87_bitfield_1, *Panon__struct_87_bitfield_1; + +typedef union anon__struct_88_bitfield_1 anon__struct_88_bitfield_1, *Panon__struct_88_bitfield_1; + +typedef union anon__struct_88_bitfield_2 anon__struct_88_bitfield_2, *Panon__struct_88_bitfield_2; + +typedef union anon__struct_89_bitfield_1 anon__struct_89_bitfield_1, *Panon__struct_89_bitfield_1; + +typedef union anon__struct_89_bitfield_2 anon__struct_89_bitfield_2, *Panon__struct_89_bitfield_2; + +typedef union anon__struct_90_bitfield_1 anon__struct_90_bitfield_1, *Panon__struct_90_bitfield_1; + +typedef union anon__struct_90_bitfield_2 anon__struct_90_bitfield_2, *Panon__struct_90_bitfield_2; + +typedef union anon__struct_91_bitfield_1 anon__struct_91_bitfield_1, *Panon__struct_91_bitfield_1; + +typedef union anon__struct_91_bitfield_2 anon__struct_91_bitfield_2, *Panon__struct_91_bitfield_2; + +typedef union anon__struct_92_bitfield_1 anon__struct_92_bitfield_1, *Panon__struct_92_bitfield_1; + +typedef union anon__struct_83_bitfield_1 anon__struct_83_bitfield_1, *Panon__struct_83_bitfield_1; + +typedef union anon__struct_83_bitfield_2 anon__struct_83_bitfield_2, *Panon__struct_83_bitfield_2; + +typedef union anon__struct_93_bitfield_1 anon__struct_93_bitfield_1, *Panon__struct_93_bitfield_1; + +union anon__struct_78_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint pad1:16; // : bits 16-31 +}; + +union anon__struct_81_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:24; // : bits 8-31 +}; + +union anon__struct_88_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:24; // : bits 8-31 +}; + +union anon__struct_91_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:8; // : bits 8-15 + uint dmemin:16; // : bits 16-31 +}; + +union anon__struct_80_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:8; // : bits 8-15 + uint pad2:16; // : bits 16-31 +}; + +union anon__struct_80_bitfield_2 { + uint inL:16; // : bits 0-15 + uint inR:16; // : bits 16-31 +}; + +struct Ainterleave { + union anon__struct_80_bitfield_1 field_0x0; + union anon__struct_80_bitfield_2 field_0x4; +}; + +union anon__struct_88_bitfield_2 { + uint pad2:2; // : bits 0-1 + uint number:4; // : bits 2-5 + uint base:24; // : bits 6-29 +}; + +struct Asegment { + union anon__struct_88_bitfield_1 field_0x0; + union anon__struct_88_bitfield_2 field_0x4; +}; + +union anon__struct_91_bitfield_2 { + uint dmemout:16; // : bits 0-15 + uint count:16; // : bits 16-31 +}; + +union anon__struct_77_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint gain:16; // : bits 16-31 +}; + +struct Apolef { + union anon__struct_77_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_83_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint gain:16; // : bits 16-31 +}; + +union anon__struct_83_bitfield_2 { + uint dmemi:16; // : bits 0-15 + uint dmemo:16; // : bits 16-31 +}; + +struct Amixer { + union anon__struct_83_bitfield_1 field_0x0; + union anon__struct_83_bitfield_2 field_0x4; +}; + +struct Awords { + uint w0; + uint w1; +}; + +union anon__struct_85_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint pitch:16; // : bits 16-31 +}; + +struct Aresample { + union anon__struct_85_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_89_bitfield_2 { + uint dmemout:16; // : bits 0-15 + uint count:16; // : bits 16-31 +}; + +union anon__struct_89_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint dmemin:16; // : bits 16-31 +}; + +struct Asetbuff { + union anon__struct_89_bitfield_1 field_0x0; + union anon__struct_89_bitfield_2 field_0x4; +}; + +struct Aenvelope { + union anon__struct_78_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_86_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint pad1:16; // : bits 16-31 +}; + +struct Areverb { + union anon__struct_86_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_82_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint pad1:16; // : bits 16-31 +}; + +struct Aenvmixer { + union anon__struct_82_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_90_bitfield_2 { + uint voltgt:16; // : bits 0-15 + uint volrate:16; // : bits 16-31 +}; + +union anon__struct_90_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint vol:16; // : bits 16-31 +}; + +struct Asetvol { + union anon__struct_90_bitfield_1 field_0x0; + union anon__struct_90_bitfield_2 field_0x4; +}; + +union anon__struct_76_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint flags:8; // : bits 8-15 + uint gain:16; // : bits 16-31 +}; + +struct Aadpcm { + union anon__struct_76_bitfield_1 field_0x0; + uint addr; +}; + +struct Admemmove { + union anon__struct_91_bitfield_1 field_0x0; + union anon__struct_91_bitfield_2 field_0x4; +}; + +union anon__struct_92_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:8; // : bits 8-15 + uint count:16; // : bits 16-31 +}; + +struct Aloadadpcm { + union anon__struct_92_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_79_bitfield_2 { + uint pad2:16; // : bits 0-15 + uint count:16; // : bits 16-31 +}; + +union anon__struct_79_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:8; // : bits 8-15 + uint dmem:16; // : bits 16-31 +}; + +struct Aclearbuff { + union anon__struct_79_bitfield_1 field_0x0; + union anon__struct_79_bitfield_2 field_0x4; +}; + +struct Aloadbuff { + union anon__struct_81_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_87_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:24; // : bits 8-31 +}; + +struct Asavebuff { + union anon__struct_87_bitfield_1 field_0x0; + uint addr; +}; + +union anon__struct_93_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint pad1:8; // : bits 8-15 + uint pad2:16; // : bits 16-31 +}; + +struct Asetloop { + union anon__struct_93_bitfield_1 field_0x0; + uint addr; +}; + +union Acmd { + struct Awords words; + struct Aadpcm adpcm; + struct Apolef polef; + struct Aclearbuff clearbuff; + struct Aenvelope envelope; + struct Ainterleave interleave; + struct Aloadbuff loadbuff; + struct Aenvmixer envmixer; + struct Aresample resample; + struct Areverb reverb; + struct Asavebuff savebuff; + struct Asegment segment; + struct Asetbuff setbuff; + struct Asetvol setvol; + struct Admemmove dmemmove; + struct Aloadadpcm loadadpcm; + struct Amixer mixer; + struct Asetloop setloop; + longlong force_union_align; +}; + +typedef enum enum_179 { + GT_ALPHACOMPARE=1, + GT_ALPHADITHER=4, + GT_CLEAR=0, + GT_COMBKEY=6, + GT_CYCLETYPE=13, + GT_PIPELINE=14, + GT_RENDERMODE=3, + GT_RGBDITHER=5, + GT_TEXTCONV=7, + GT_TEXTDETAIL=11, + GT_TEXTFILT=8, + GT_TEXTLOD=10, + GT_TEXTLUT=9, + GT_TEXTPERSP=12, + GT_ZSRCSEL=2 +} enum_179; + +typedef union gtVtxOut gtVtxOut, *PgtVtxOut; + +typedef struct gtVtxOut_t gtVtxOut_t, *PgtVtxOut_t; + +struct gtVtxOut_t { + short xscrn; + short yscrn; + int zscrn; + short s; + short t; + u8 r; + u8 g; + u8 b; + u8 a; +}; + +union gtVtxOut { + struct gtVtxOut_t v; + longlong force_structure_alignment; +}; + +typedef enum enum_179 gtStateOthermode_t; + +typedef union gtGlobState gtGlobState, *PgtGlobState; + +typedef struct gtGlobState_t gtGlobState_t, *PgtGlobState_t; + +typedef union Vp Vp, *PVp; + +typedef struct Vp_t Vp_t, *PVp_t; + +struct Vp_t { + short vscale[4]; + short vtrans[4]; +}; + +union Vp { + struct Vp_t vp; + longlong force_structure_alignment; +}; + +struct gtGlobState_t { + u16 perspNorm; + u16 pad0; + u32 flag; + union Gfx rdpOthermode; + u32 segBases[16]; + union Vp viewport; + union Gfx * rdpCmds; +}; + +union gtGlobState { + struct gtGlobState_t sp; + longlong force_structure_alignment; +}; + +typedef union gtState gtState, *PgtState; + +typedef struct gtState_t gtState_t, *PgtState_t; + + +// WARNING! conflicting data type names: /gbi.h/Mtx - /types.h/Mtx + +struct gtState_t { + u32 renderState; + u32 textureState; + u8 vtxCount; + u8 vtxV0; + u8 triCount; + u8 flag; + union Gfx * rdpCmds; + union Gfx rdpOthermode; + union Mtx transform; +}; + +union gtState { + struct gtState_t sp; + longlong force_structure_alignment; +}; + +typedef struct gtTriN gtTriN, *PgtTriN; + +struct gtTriN { + u8 v0; + u8 v1; + u8 v2; + u8 flag; +}; + +typedef struct gtStateL_t gtStateL_t, *PgtStateL_t; + +struct gtStateL_t { + u32 renderState; + u32 textureState; + u8 vtxCount; + u8 vtxV0; + u8 triCount; + u8 flag; + union Gfx * rdpCmds; + union Gfx rdpOthermode; +}; + +typedef struct gtGfx_t gtGfx_t, *PgtGfx_t; + +typedef union Vtx Vtx, *PVtx; + +typedef struct Vtx_t Vtx_t, *PVtx_t; + +typedef struct Vtx_tn Vtx_tn, *PVtx_tn; + +struct Vtx_t { + short ob[3]; + ushort flag; + short tc[2]; + uchar cn[4]; +}; + +struct Vtx_tn { + short ob[3]; + ushort flag; + short tc[2]; + char n[3]; + uchar a; +}; + +union Vtx { + struct Vtx_t v; + struct Vtx_tn n; + longlong force_structure_alignment; +}; + +struct gtGfx_t { + union gtGlobState * gstatep; + union gtState * statep; + union Vtx * vtxp; + struct gtTriN * trip; +}; + +typedef union gtGfx gtGfx, *PgtGfx; + +union gtGfx { + struct gtGfx_t obj; + longlong force_structure_alignment; +}; + +typedef union gtStateL gtStateL, *PgtStateL; + +union gtStateL { + struct gtStateL_t sp; + longlong force_structure_alignment; +}; + +#define GT_CULL_BACK 8192 + +#define GT_ZBUFFER 1 + +#define GT_DUMPTURBO_HANGAFTER 64 + +#define GT_FLAG_NO_XFM 2 + +#define GT_FLAG_NOMTX 1 + +#define GT_TEXTURE 2 + +#define GT_DUMPTURBO_NOTEXTURES 128 + +#define GT_FLAG_XFM_ONLY 4 + +#define GT_SHADING_SMOOTH 512 + +typedef struct sGlobalImageTable sGlobalImageTable, *PsGlobalImageTable; + +struct sGlobalImageTable { + char field_0x0[120]; + undefined field_0x78[168]; + undefined field_0x120[168]; + undefined field_0x1c8[168]; + undefined field_0x270[168]; + undefined field_0x318[168]; + undefined field_0x3c0[168]; + undefined field_0x468[168]; + undefined field_0x510[168]; + undefined field_0x5b8[168]; + undefined field_0x660[168]; + undefined field_0x708[168]; + undefined field_0x7b0[168]; + undefined field_0x858[168]; + undefined field_0x900[168]; + undefined field_0x9a8[168]; + undefined field_0xa50[120]; + struct sImageTableEntry genericimage[1]; + struct sImageTableEntry impactimages[20]; + struct sImageTableEntry explosion_smokeimages[6]; + struct sImageTableEntry scattered_explosions[5]; + struct sImageTableEntry flareimage1[1]; + struct sImageTableEntry flareimage2[1]; + struct sImageTableEntry flareimage3[1]; + struct sImageTableEntry flareimage4[1]; + struct sImageTableEntry flareimage5[1]; + struct sImageTableEntry ammo9mmimage[1]; + struct sImageTableEntry rifleammoimage[1]; + struct sImageTableEntry shotgunammoimage[1]; + struct sImageTableEntry knifeammoimage[1]; + struct sImageTableEntry glammoimage[1]; + struct sImageTableEntry rocketammoimage[1]; + struct sImageTableEntry genericmineammoimage[1]; + struct sImageTableEntry grenadeammoimage[1]; + struct sImageTableEntry magnumammoimage[1]; + struct sImageTableEntry goldengunammoimage[1]; + struct sImageTableEntry remotemineammoimage[1]; + struct sImageTableEntry timedmineammoimage[1]; + struct sImageTableEntry proxmineammoimage[1]; + struct sImageTableEntry tankammoimage[1]; + struct sImageTableEntry crosshairimage[1]; + struct sImageTableEntry betacrosshairimage[1]; + struct sImageTableEntry glassoverlayimage[2]; + struct sImageTableEntry monitorimages[50]; + struct sImageTableEntry skywaterimages[3]; + struct sImageTableEntry mainfolderimages[6]; + struct sImageTableEntry mpradarimages[1]; + struct sImageTableEntry mpcharselimages[64]; + struct sImageTableEntry mpstageselimages[17]; +}; + +typedef struct astruct astruct, *Pastruct; + +struct astruct { + undefined field_0x0; + undefined field_0x1; + undefined field_0x2; + undefined field_0x3; + undefined1 txtClipW; // Created by retype action + undefined field_0x5; + undefined1 txtClipH; // Created by retype action + undefined field_0x7; + undefined field_0x8; + undefined field_0x9; + undefined field_0xa; + undefined field_0xb; + undefined field_0xc; + undefined field_0xd; + undefined field_0xe; + undefined field_0xf; + undefined1 aspect; // Created by retype action + undefined field_0x11; + undefined field_0x12; + undefined field_0x13; + undefined field_0x14; + undefined field_0x15; + undefined field_0x16; + undefined field_0x17; + undefined field_0x18; + undefined field_0x19; + undefined field_0x1a; + undefined field_0x1b; + undefined1 width; // Created by retype action + undefined field_0x1d; + undefined1 height; // Created by retype action + undefined field_0x1f; + undefined1 ulx; // Created by retype action + undefined field_0x21; + undefined1 uly; // Created by retype action + undefined field_0x23; + int field_0x24; +}; + +typedef struct vis_command vis_command, *Pvis_command; + +struct vis_command { + byte type; + byte size; + undefined field_0x2; + undefined field_0x3; + int room; +}; + +typedef struct watchMenuObjectiveText watchMenuObjectiveText, *PwatchMenuObjectiveText; + +typedef ushort u16.conflict; + +struct watchMenuObjectiveText { + u8 field_0x0; + u8 field_0x1; + u8 field_0x2; + u8 id; + enum WATCH_BRIEFING_PAGE menu; + u16 reserved; + u16.conflict text; + struct watchMenuObjectiveText * nextentry; +}; + +typedef struct astruct_2 astruct_2, *Pastruct_2; + +struct astruct_2 { + u32 field_0x0; + u32 field_0x4; + float x; + float y; + float z; +}; + +typedef struct astruct_1 astruct_1, *Pastruct_1; + +struct astruct_1 { + undefined field_0x0; + undefined field_0x1; + undefined field_0x2; + undefined field_0x3; + undefined field_0x4; + undefined field_0x5; + undefined field_0x6; + undefined field_0x7; + undefined field_0x8; + undefined field_0x9; + undefined field_0xa; + undefined field_0xb; + undefined field_0xc; + undefined field_0xd; + undefined field_0xe; + undefined field_0xf; + undefined field_0x10; + undefined field_0x11; + undefined field_0x12; + undefined field_0x13; + undefined field_0x14; + undefined field_0x15; + undefined field_0x16; + undefined field_0x17; + undefined field_0x18; + undefined field_0x19; + undefined field_0x1a; + undefined field_0x1b; + undefined field_0x1c; + undefined field_0x1d; + undefined field_0x1e; + undefined field_0x1f; + undefined field_0x20; + undefined field_0x21; + undefined field_0x22; + undefined field_0x23; + undefined field_0x24; + undefined field_0x25; + undefined field_0x26; + undefined field_0x27; + undefined field_0x28; + undefined field_0x29; + undefined field_0x2a; + undefined field_0x2b; + undefined field_0x2c; + undefined field_0x2d; + undefined field_0x2e; + undefined field_0x2f; + undefined field_0x30; + undefined field_0x31; + undefined field_0x32; + undefined field_0x33; + undefined field_0x34; + undefined field_0x35; + undefined field_0x36; + undefined field_0x37; + undefined field_0x38; + undefined field_0x39; + undefined field_0x3a; + undefined field_0x3b; + undefined field_0x3c; + undefined field_0x3d; + undefined field_0x3e; + undefined field_0x3f; + undefined field_0x40; + undefined field_0x41; + undefined field_0x42; + undefined field_0x43; + undefined field_0x44; + undefined field_0x45; + undefined field_0x46; + undefined field_0x47; + undefined field_0x48; + undefined field_0x49; + undefined field_0x4a; + undefined field_0x4b; + undefined field_0x4c; + undefined field_0x4d; + undefined field_0x4e; + undefined field_0x4f; + undefined field_0x50; + undefined field_0x51; + undefined field_0x52; + undefined field_0x53; + undefined field_0x54; + undefined field_0x55; + undefined field_0x56; + undefined field_0x57; + undefined field_0x58; + undefined field_0x59; + undefined field_0x5a; + undefined field_0x5b; + undefined field_0x5c; + undefined field_0x5d; + undefined field_0x5e; + undefined field_0x5f; + undefined field_0x60; + undefined field_0x61; + undefined field_0x62; + undefined field_0x63; + undefined field_0x64; + undefined field_0x65; + undefined field_0x66; + undefined field_0x67; + undefined field_0x68; + undefined field_0x69; + undefined field_0x6a; + undefined field_0x6b; + undefined field_0x6c; + undefined field_0x6d; + undefined field_0x6e; + undefined field_0x6f; + undefined field_0x70; + undefined field_0x71; + undefined field_0x72; + undefined field_0x73; + undefined field_0x74; + undefined field_0x75; + undefined field_0x76; + undefined field_0x77; + undefined field_0x78; + undefined field_0x79; + undefined field_0x7a; + undefined field_0x7b; + undefined field_0x7c; + undefined field_0x7d; + undefined field_0x7e; + undefined field_0x7f; + undefined field_0x80; + undefined field_0x81; + undefined field_0x82; + undefined field_0x83; + undefined field_0x84; + undefined field_0x85; + undefined field_0x86; + undefined field_0x87; + undefined field_0x88; + undefined field_0x89; + undefined field_0x8a; + undefined field_0x8b; + undefined field_0x8c; + undefined field_0x8d; + undefined field_0x8e; + undefined field_0x8f; + undefined field_0x90; + undefined field_0x91; + undefined field_0x92; + undefined field_0x93; + undefined field_0x94; + undefined field_0x95; + undefined field_0x96; + undefined field_0x97; + undefined field_0x98; + undefined field_0x99; + undefined field_0x9a; + undefined field_0x9b; + undefined field_0x9c; + undefined field_0x9d; + undefined field_0x9e; + undefined field_0x9f; + undefined field_0xa0; + undefined field_0xa1; + undefined field_0xa2; + undefined field_0xa3; + undefined field_0xa4; + undefined field_0xa5; + undefined field_0xa6; + undefined field_0xa7; + undefined field_0xa8; + undefined field_0xa9; + undefined field_0xaa; + undefined field_0xab; + undefined field_0xac; + undefined field_0xad; + undefined field_0xae; + undefined field_0xaf; + undefined field_0xb0; + undefined field_0xb1; + undefined field_0xb2; + undefined field_0xb3; + undefined field_0xb4; + undefined field_0xb5; + undefined field_0xb6; + undefined field_0xb7; + undefined field_0xb8; + undefined field_0xb9; + undefined field_0xba; + undefined field_0xbb; + undefined field_0xbc; + undefined field_0xbd; + undefined field_0xbe; + undefined field_0xbf; + undefined field_0xc0; + undefined field_0xc1; + undefined field_0xc2; + undefined field_0xc3; + undefined field_0xc4; + undefined field_0xc5; + undefined field_0xc6; + undefined field_0xc7; + undefined field_0xc8; + undefined field_0xc9; + undefined field_0xca; + undefined field_0xcb; + undefined field_0xcc; + undefined field_0xcd; + undefined field_0xce; + undefined field_0xcf; + undefined field_0xd0; + undefined field_0xd1; + undefined field_0xd2; + undefined field_0xd3; + undefined field_0xd4; + undefined field_0xd5; + undefined field_0xd6; + undefined field_0xd7; + undefined field_0xd8; + undefined field_0xd9; + undefined field_0xda; + undefined field_0xdb; + undefined field_0xdc; + undefined field_0xdd; + undefined field_0xde; + undefined field_0xdf; + undefined field_0xe0; + undefined field_0xe1; + undefined field_0xe2; + undefined field_0xe3; + undefined field_0xe4; + undefined field_0xe5; + undefined field_0xe6; + undefined field_0xe7; + undefined field_0xe8; + undefined field_0xe9; + undefined field_0xea; + undefined field_0xeb; + undefined field_0xec; + undefined field_0xed; + undefined field_0xee; + undefined field_0xef; + undefined field_0xf0; + undefined field_0xf1; + undefined field_0xf2; + undefined field_0xf3; + undefined field_0xf4; + undefined field_0xf5; + undefined field_0xf6; + undefined field_0xf7; + undefined field_0xf8; + undefined field_0xf9; + undefined field_0xfa; + undefined field_0xfb; + undefined field_0xfc; + undefined field_0xfd; + undefined field_0xfe; + undefined field_0xff; + undefined field_0x100; + undefined field_0x101; + undefined field_0x102; + undefined field_0x103; + undefined field_0x104; + undefined field_0x105; + undefined field_0x106; + undefined field_0x107; + undefined field_0x108; + undefined field_0x109; + undefined field_0x10a; + undefined field_0x10b; + undefined field_0x10c; + undefined field_0x10d; + undefined field_0x10e; + undefined field_0x10f; + undefined field_0x110; + undefined field_0x111; + undefined field_0x112; + undefined field_0x113; + undefined field_0x114; + undefined field_0x115; + undefined field_0x116; + undefined field_0x117; + undefined field_0x118; + undefined field_0x119; + undefined field_0x11a; + undefined field_0x11b; + undefined field_0x11c; + undefined field_0x11d; + undefined field_0x11e; + undefined field_0x11f; + undefined field_0x120; + undefined field_0x121; + undefined field_0x122; + undefined field_0x123; + undefined field_0x124; + undefined field_0x125; + undefined field_0x126; + undefined field_0x127; + undefined field_0x128; + undefined field_0x129; + undefined field_0x12a; + undefined field_0x12b; + undefined field_0x12c; + undefined field_0x12d; + undefined field_0x12e; + undefined field_0x12f; + undefined field_0x130; + undefined field_0x131; + undefined field_0x132; + undefined field_0x133; + undefined field_0x134; + undefined field_0x135; + undefined field_0x136; + undefined field_0x137; + undefined field_0x138; + undefined field_0x139; + undefined field_0x13a; + undefined field_0x13b; + undefined field_0x13c; + undefined field_0x13d; + undefined field_0x13e; + undefined field_0x13f; + undefined field_0x140; + undefined field_0x141; + undefined field_0x142; + undefined field_0x143; + undefined field_0x144; + undefined field_0x145; + undefined field_0x146; + undefined field_0x147; + undefined field_0x148; + undefined field_0x149; + undefined field_0x14a; + undefined field_0x14b; + undefined field_0x14c; + undefined field_0x14d; + undefined field_0x14e; + undefined field_0x14f; + undefined field_0x150; + undefined field_0x151; + undefined field_0x152; + undefined field_0x153; + undefined field_0x154; + undefined field_0x155; + undefined field_0x156; + undefined field_0x157; + undefined field_0x158; + undefined field_0x159; + undefined field_0x15a; + undefined field_0x15b; + undefined field_0x15c; + undefined field_0x15d; + undefined field_0x15e; + undefined field_0x15f; + undefined field_0x160; + undefined field_0x161; + undefined field_0x162; + undefined field_0x163; + undefined field_0x164; + undefined field_0x165; + undefined field_0x166; + undefined field_0x167; + undefined field_0x168; + undefined field_0x169; + undefined field_0x16a; + undefined field_0x16b; + undefined field_0x16c; + undefined field_0x16d; + undefined field_0x16e; + undefined field_0x16f; + undefined field_0x170; + undefined field_0x171; + undefined field_0x172; + undefined field_0x173; + undefined field_0x174; + undefined field_0x175; + undefined field_0x176; + undefined field_0x177; + undefined field_0x178; + undefined field_0x179; + undefined field_0x17a; + undefined field_0x17b; + undefined field_0x17c; + undefined field_0x17d; + undefined field_0x17e; + undefined field_0x17f; + undefined field_0x180; + undefined field_0x181; + undefined field_0x182; + undefined field_0x183; + undefined field_0x184; + undefined field_0x185; + undefined field_0x186; + undefined field_0x187; + undefined field_0x188; + undefined field_0x189; + undefined field_0x18a; + undefined field_0x18b; + undefined field_0x18c; + undefined field_0x18d; + undefined field_0x18e; + undefined field_0x18f; + undefined field_0x190; + undefined field_0x191; + undefined field_0x192; + undefined field_0x193; + undefined field_0x194; + undefined field_0x195; + undefined field_0x196; + undefined field_0x197; + undefined field_0x198; + undefined field_0x199; + undefined field_0x19a; + undefined field_0x19b; + undefined field_0x19c; + undefined field_0x19d; + undefined field_0x19e; + undefined field_0x19f; + undefined field_0x1a0; + undefined field_0x1a1; + undefined field_0x1a2; + undefined field_0x1a3; + undefined field_0x1a4; + undefined field_0x1a5; + undefined field_0x1a6; + undefined field_0x1a7; + undefined field_0x1a8; + undefined field_0x1a9; + undefined field_0x1aa; + undefined field_0x1ab; + undefined field_0x1ac; + undefined field_0x1ad; + undefined field_0x1ae; + undefined field_0x1af; + undefined field_0x1b0; + undefined field_0x1b1; + undefined field_0x1b2; + undefined field_0x1b3; + undefined field_0x1b4; + undefined field_0x1b5; + undefined field_0x1b6; + undefined field_0x1b7; + undefined field_0x1b8; + undefined field_0x1b9; + undefined field_0x1ba; + undefined field_0x1bb; + undefined field_0x1bc; + undefined field_0x1bd; + undefined field_0x1be; + undefined field_0x1bf; + undefined field_0x1c0; + undefined field_0x1c1; + undefined field_0x1c2; + undefined field_0x1c3; + undefined field_0x1c4; + undefined field_0x1c5; + undefined field_0x1c6; + undefined field_0x1c7; + undefined field_0x1c8; + undefined field_0x1c9; + undefined field_0x1ca; + undefined field_0x1cb; + undefined field_0x1cc; + undefined field_0x1cd; + undefined field_0x1ce; + undefined field_0x1cf; + undefined field_0x1d0; + undefined field_0x1d1; + undefined field_0x1d2; + undefined field_0x1d3; + undefined field_0x1d4; + undefined field_0x1d5; + undefined field_0x1d6; + undefined field_0x1d7; + undefined field_0x1d8; + undefined field_0x1d9; + undefined field_0x1da; + undefined field_0x1db; + undefined field_0x1dc; + undefined field_0x1dd; + undefined field_0x1de; + undefined field_0x1df; + undefined field_0x1e0; + undefined field_0x1e1; + undefined field_0x1e2; + undefined field_0x1e3; + undefined field_0x1e4; + undefined field_0x1e5; + undefined field_0x1e6; + undefined field_0x1e7; + undefined field_0x1e8; + undefined field_0x1e9; + undefined field_0x1ea; + undefined field_0x1eb; + undefined field_0x1ec; + undefined field_0x1ed; + undefined field_0x1ee; + undefined field_0x1ef; + undefined field_0x1f0; + undefined field_0x1f1; + undefined field_0x1f2; + undefined field_0x1f3; + undefined field_0x1f4; + undefined field_0x1f5; + undefined field_0x1f6; + undefined field_0x1f7; + undefined field_0x1f8; + undefined field_0x1f9; + undefined field_0x1fa; + undefined field_0x1fb; + undefined field_0x1fc; + undefined field_0x1fd; + undefined field_0x1fe; + undefined field_0x1ff; + undefined field_0x200; + undefined field_0x201; + undefined field_0x202; + undefined field_0x203; + undefined field_0x204; + undefined field_0x205; + undefined field_0x206; + undefined field_0x207; + undefined field_0x208; + undefined field_0x209; + undefined field_0x20a; + undefined field_0x20b; + undefined field_0x20c; + undefined field_0x20d; + undefined field_0x20e; + undefined field_0x20f; + undefined field_0x210; + undefined field_0x211; + undefined field_0x212; + undefined field_0x213; + undefined field_0x214; + undefined field_0x215; + undefined field_0x216; + undefined field_0x217; + undefined field_0x218; + undefined field_0x219; + undefined field_0x21a; + undefined field_0x21b; + undefined field_0x21c; + undefined field_0x21d; + undefined field_0x21e; + undefined field_0x21f; + undefined field_0x220; + undefined field_0x221; + undefined field_0x222; + undefined field_0x223; + undefined field_0x224; + undefined field_0x225; + undefined field_0x226; + undefined field_0x227; + undefined field_0x228; + undefined field_0x229; + undefined field_0x22a; + undefined field_0x22b; + undefined field_0x22c; + undefined field_0x22d; + undefined field_0x22e; + undefined field_0x22f; + undefined field_0x230; + undefined field_0x231; + undefined field_0x232; + undefined field_0x233; + undefined field_0x234; + undefined field_0x235; + undefined field_0x236; + undefined field_0x237; + undefined field_0x238; + undefined field_0x239; + undefined field_0x23a; + undefined field_0x23b; + undefined field_0x23c; + undefined field_0x23d; + undefined field_0x23e; + undefined field_0x23f; + undefined field_0x240; + undefined field_0x241; + undefined field_0x242; + undefined field_0x243; + undefined field_0x244; + undefined field_0x245; + undefined field_0x246; + undefined field_0x247; + undefined field_0x248; + undefined field_0x249; + undefined field_0x24a; + undefined field_0x24b; + undefined field_0x24c; + undefined field_0x24d; + undefined field_0x24e; + undefined field_0x24f; + undefined field_0x250; + undefined field_0x251; + undefined field_0x252; + undefined field_0x253; + undefined field_0x254; + undefined field_0x255; + undefined field_0x256; + undefined field_0x257; + undefined field_0x258; + undefined field_0x259; + undefined field_0x25a; + undefined field_0x25b; + undefined field_0x25c; + undefined field_0x25d; + undefined field_0x25e; + undefined field_0x25f; + undefined field_0x260; + undefined field_0x261; + undefined field_0x262; + undefined field_0x263; + undefined field_0x264; + undefined field_0x265; + undefined field_0x266; + undefined field_0x267; + undefined field_0x268; + undefined field_0x269; + undefined field_0x26a; + undefined field_0x26b; + undefined field_0x26c; + undefined field_0x26d; + undefined field_0x26e; + undefined field_0x26f; + undefined field_0x270; + undefined field_0x271; + undefined field_0x272; + undefined field_0x273; + undefined field_0x274; + undefined field_0x275; + undefined field_0x276; + undefined field_0x277; + undefined field_0x278; + undefined field_0x279; + undefined field_0x27a; + undefined field_0x27b; + undefined field_0x27c; + undefined field_0x27d; + undefined field_0x27e; + undefined field_0x27f; + undefined field_0x280; + undefined field_0x281; + undefined field_0x282; + undefined field_0x283; + undefined field_0x284; + undefined field_0x285; + undefined field_0x286; + undefined field_0x287; + undefined field_0x288; + undefined field_0x289; + undefined field_0x28a; + undefined field_0x28b; + undefined field_0x28c; + undefined field_0x28d; + undefined field_0x28e; + undefined field_0x28f; + undefined field_0x290; + undefined field_0x291; + undefined field_0x292; + undefined field_0x293; + undefined field_0x294; + undefined field_0x295; + undefined field_0x296; + undefined field_0x297; + undefined field_0x298; + undefined field_0x299; + undefined field_0x29a; + undefined field_0x29b; + undefined field_0x29c; + undefined field_0x29d; + undefined field_0x29e; + undefined field_0x29f; + undefined field_0x2a0; + undefined field_0x2a1; + undefined field_0x2a2; + undefined field_0x2a3; + undefined field_0x2a4; + undefined field_0x2a5; + undefined field_0x2a6; + undefined field_0x2a7; + undefined field_0x2a8; + undefined field_0x2a9; + undefined field_0x2aa; + undefined field_0x2ab; + undefined field_0x2ac; + undefined field_0x2ad; + undefined field_0x2ae; + undefined field_0x2af; + undefined field_0x2b0; + undefined field_0x2b1; + undefined field_0x2b2; + undefined field_0x2b3; + undefined field_0x2b4; + undefined field_0x2b5; + undefined field_0x2b6; + undefined field_0x2b7; + undefined field_0x2b8; + undefined field_0x2b9; + undefined field_0x2ba; + undefined field_0x2bb; + undefined field_0x2bc; + undefined field_0x2bd; + undefined field_0x2be; + undefined field_0x2bf; + undefined field_0x2c0; + undefined field_0x2c1; + undefined field_0x2c2; + undefined field_0x2c3; + undefined field_0x2c4; + undefined field_0x2c5; + undefined field_0x2c6; + undefined field_0x2c7; + undefined field_0x2c8; + undefined field_0x2c9; + undefined field_0x2ca; + undefined field_0x2cb; + undefined field_0x2cc; + undefined field_0x2cd; + undefined field_0x2ce; + undefined field_0x2cf; + undefined field_0x2d0; + undefined field_0x2d1; + undefined field_0x2d2; + undefined field_0x2d3; + undefined field_0x2d4; + undefined field_0x2d5; + undefined field_0x2d6; + undefined field_0x2d7; + undefined field_0x2d8; + undefined field_0x2d9; + undefined field_0x2da; + undefined field_0x2db; + undefined field_0x2dc; + undefined field_0x2dd; + undefined field_0x2de; + undefined field_0x2df; + undefined field_0x2e0; + undefined field_0x2e1; + undefined field_0x2e2; + undefined field_0x2e3; + undefined field_0x2e4; + undefined field_0x2e5; + undefined field_0x2e6; + undefined field_0x2e7; + undefined field_0x2e8; + undefined field_0x2e9; + undefined field_0x2ea; + undefined field_0x2eb; + undefined field_0x2ec; + undefined field_0x2ed; + undefined field_0x2ee; + undefined field_0x2ef; + undefined field_0x2f0; + undefined field_0x2f1; + undefined field_0x2f2; + undefined field_0x2f3; + undefined field_0x2f4; + undefined field_0x2f5; + undefined field_0x2f6; + undefined field_0x2f7; + undefined field_0x2f8; + undefined field_0x2f9; + undefined field_0x2fa; + undefined field_0x2fb; + undefined field_0x2fc; + undefined field_0x2fd; + undefined field_0x2fe; + undefined field_0x2ff; + undefined field_0x300; + undefined field_0x301; + undefined field_0x302; + undefined field_0x303; + undefined field_0x304; + undefined field_0x305; + undefined field_0x306; + undefined field_0x307; + undefined field_0x308; + undefined field_0x309; + undefined field_0x30a; + undefined field_0x30b; + undefined field_0x30c; + undefined field_0x30d; + undefined field_0x30e; + undefined field_0x30f; + undefined field_0x310; + undefined field_0x311; + undefined field_0x312; + undefined field_0x313; + undefined field_0x314; + undefined field_0x315; + undefined field_0x316; + undefined field_0x317; + undefined field_0x318; + undefined field_0x319; + undefined field_0x31a; + undefined field_0x31b; + undefined field_0x31c; + undefined field_0x31d; + undefined field_0x31e; + undefined field_0x31f; + undefined field_0x320; + undefined field_0x321; + undefined field_0x322; + undefined field_0x323; + undefined field_0x324; + undefined field_0x325; + undefined field_0x326; + undefined field_0x327; + undefined field_0x328; + undefined field_0x329; + undefined field_0x32a; + undefined field_0x32b; + undefined field_0x32c; + undefined field_0x32d; + undefined field_0x32e; + undefined field_0x32f; + undefined field_0x330; + undefined field_0x331; + undefined field_0x332; + undefined field_0x333; + undefined field_0x334; + undefined field_0x335; + undefined field_0x336; + undefined field_0x337; + undefined field_0x338; + undefined field_0x339; + undefined field_0x33a; + undefined field_0x33b; + undefined field_0x33c; + undefined field_0x33d; + undefined field_0x33e; + undefined field_0x33f; + undefined field_0x340; + undefined field_0x341; + undefined field_0x342; + undefined field_0x343; + undefined field_0x344; + undefined field_0x345; + undefined field_0x346; + undefined field_0x347; + undefined field_0x348; + undefined field_0x349; + undefined field_0x34a; + undefined field_0x34b; + undefined field_0x34c; + undefined field_0x34d; + undefined field_0x34e; + undefined field_0x34f; + undefined field_0x350; + undefined field_0x351; + undefined field_0x352; + undefined field_0x353; + undefined field_0x354; + undefined field_0x355; + undefined field_0x356; + undefined field_0x357; + undefined field_0x358; + undefined field_0x359; + undefined field_0x35a; + undefined field_0x35b; + undefined field_0x35c; + undefined field_0x35d; + undefined field_0x35e; + undefined field_0x35f; + undefined field_0x360; + undefined field_0x361; + undefined field_0x362; + undefined field_0x363; + undefined field_0x364; + undefined field_0x365; + undefined field_0x366; + undefined field_0x367; + undefined field_0x368; + undefined field_0x369; + undefined field_0x36a; + undefined field_0x36b; + undefined field_0x36c; + undefined field_0x36d; + undefined field_0x36e; + undefined field_0x36f; + undefined field_0x370; + undefined field_0x371; + undefined field_0x372; + undefined field_0x373; + undefined field_0x374; + undefined field_0x375; + undefined field_0x376; + undefined field_0x377; + undefined field_0x378; + undefined field_0x379; + undefined field_0x37a; + undefined field_0x37b; + undefined field_0x37c; + undefined field_0x37d; + undefined field_0x37e; + undefined field_0x37f; + undefined field_0x380; + undefined field_0x381; + undefined field_0x382; + undefined field_0x383; + undefined field_0x384; + undefined field_0x385; + undefined field_0x386; + undefined field_0x387; + undefined field_0x388; + undefined field_0x389; + undefined field_0x38a; + undefined field_0x38b; + undefined field_0x38c; + undefined field_0x38d; + undefined field_0x38e; + undefined field_0x38f; + undefined field_0x390; + undefined field_0x391; + undefined field_0x392; + undefined field_0x393; + undefined field_0x394; + undefined field_0x395; + undefined field_0x396; + undefined field_0x397; + undefined field_0x398; + undefined field_0x399; + undefined field_0x39a; + undefined field_0x39b; + undefined field_0x39c; + undefined field_0x39d; + undefined field_0x39e; + undefined field_0x39f; + undefined field_0x3a0; + undefined field_0x3a1; + undefined field_0x3a2; + undefined field_0x3a3; + undefined field_0x3a4; + undefined field_0x3a5; + undefined field_0x3a6; + undefined field_0x3a7; + undefined field_0x3a8; + undefined field_0x3a9; + undefined field_0x3aa; + undefined field_0x3ab; + undefined field_0x3ac; + undefined field_0x3ad; + undefined field_0x3ae; + undefined field_0x3af; + undefined field_0x3b0; + undefined field_0x3b1; + undefined field_0x3b2; + undefined field_0x3b3; + undefined field_0x3b4; + undefined field_0x3b5; + undefined field_0x3b6; + undefined field_0x3b7; + undefined field_0x3b8; + undefined field_0x3b9; + undefined field_0x3ba; + undefined field_0x3bb; + undefined field_0x3bc; + undefined field_0x3bd; + undefined field_0x3be; + undefined field_0x3bf; + undefined field_0x3c0; + undefined field_0x3c1; + undefined field_0x3c2; + undefined field_0x3c3; + undefined field_0x3c4; + undefined field_0x3c5; + undefined field_0x3c6; + undefined field_0x3c7; + undefined field_0x3c8; + undefined field_0x3c9; + undefined field_0x3ca; + undefined field_0x3cb; + undefined field_0x3cc; + undefined field_0x3cd; + undefined field_0x3ce; + undefined field_0x3cf; + undefined field_0x3d0; + undefined field_0x3d1; + undefined field_0x3d2; + undefined field_0x3d3; + undefined field_0x3d4; + undefined field_0x3d5; + undefined field_0x3d6; + undefined field_0x3d7; + undefined field_0x3d8; + undefined field_0x3d9; + undefined field_0x3da; + undefined field_0x3db; + undefined field_0x3dc; + undefined field_0x3dd; + undefined field_0x3de; + undefined field_0x3df; + undefined field_0x3e0; + undefined field_0x3e1; + undefined field_0x3e2; + undefined field_0x3e3; + undefined field_0x3e4; + undefined field_0x3e5; + undefined field_0x3e6; + undefined field_0x3e7; + undefined field_0x3e8; + undefined field_0x3e9; + undefined field_0x3ea; + undefined field_0x3eb; + undefined field_0x3ec; + undefined field_0x3ed; + undefined field_0x3ee; + undefined field_0x3ef; + undefined field_0x3f0; + undefined field_0x3f1; + undefined field_0x3f2; + undefined field_0x3f3; + undefined field_0x3f4; + undefined field_0x3f5; + undefined field_0x3f6; + undefined field_0x3f7; + undefined field_0x3f8; + undefined field_0x3f9; + undefined field_0x3fa; + undefined field_0x3fb; + undefined field_0x3fc; + undefined field_0x3fd; + undefined field_0x3fe; + undefined field_0x3ff; + undefined field_0x400; + undefined field_0x401; + undefined field_0x402; + undefined field_0x403; + undefined field_0x404; + undefined field_0x405; + undefined field_0x406; + undefined field_0x407; + undefined field_0x408; + undefined field_0x409; + undefined field_0x40a; + undefined field_0x40b; + undefined field_0x40c; + undefined field_0x40d; + undefined field_0x40e; + undefined field_0x40f; + undefined field_0x410; + undefined field_0x411; + undefined field_0x412; + undefined field_0x413; + undefined field_0x414; + undefined field_0x415; + undefined field_0x416; + undefined field_0x417; + undefined field_0x418; + undefined field_0x419; + undefined field_0x41a; + undefined field_0x41b; + undefined field_0x41c; + undefined field_0x41d; + undefined field_0x41e; + undefined field_0x41f; + undefined field_0x420; + undefined field_0x421; + undefined field_0x422; + undefined field_0x423; + undefined field_0x424; + undefined field_0x425; + undefined field_0x426; + undefined field_0x427; + undefined field_0x428; + undefined field_0x429; + undefined field_0x42a; + undefined field_0x42b; + undefined field_0x42c; + undefined field_0x42d; + undefined field_0x42e; + undefined field_0x42f; + undefined field_0x430; + undefined field_0x431; + undefined field_0x432; + undefined field_0x433; + undefined field_0x434; + undefined field_0x435; + undefined field_0x436; + undefined field_0x437; + undefined field_0x438; + undefined field_0x439; + undefined field_0x43a; + undefined field_0x43b; + undefined field_0x43c; + undefined field_0x43d; + undefined field_0x43e; + undefined field_0x43f; + undefined field_0x440; + undefined field_0x441; + undefined field_0x442; + undefined field_0x443; + undefined field_0x444; + undefined field_0x445; + undefined field_0x446; + undefined field_0x447; + undefined field_0x448; + undefined field_0x449; + undefined field_0x44a; + undefined field_0x44b; + undefined field_0x44c; + undefined field_0x44d; + undefined field_0x44e; + undefined field_0x44f; + undefined field_0x450; + undefined field_0x451; + undefined field_0x452; + undefined field_0x453; + undefined field_0x454; + undefined field_0x455; + undefined field_0x456; + undefined field_0x457; + undefined field_0x458; + undefined field_0x459; + undefined field_0x45a; + undefined field_0x45b; + undefined field_0x45c; + undefined field_0x45d; + undefined field_0x45e; + undefined field_0x45f; + undefined field_0x460; + undefined field_0x461; + undefined field_0x462; + undefined field_0x463; + undefined field_0x464; + undefined field_0x465; + undefined field_0x466; + undefined field_0x467; + undefined field_0x468; + undefined field_0x469; + undefined field_0x46a; + undefined field_0x46b; + undefined field_0x46c; + undefined field_0x46d; + undefined field_0x46e; + undefined field_0x46f; + undefined field_0x470; + undefined field_0x471; + undefined field_0x472; + undefined field_0x473; + undefined field_0x474; + undefined field_0x475; + undefined field_0x476; + undefined field_0x477; + undefined field_0x478; + undefined field_0x479; + undefined field_0x47a; + undefined field_0x47b; + undefined field_0x47c; + undefined field_0x47d; + undefined field_0x47e; + undefined field_0x47f; + undefined field_0x480; + undefined field_0x481; + undefined field_0x482; + undefined field_0x483; + undefined field_0x484; + undefined field_0x485; + undefined field_0x486; + undefined field_0x487; + undefined field_0x488; + undefined field_0x489; + undefined field_0x48a; + undefined field_0x48b; + undefined field_0x48c; + undefined field_0x48d; + undefined field_0x48e; + undefined field_0x48f; + undefined field_0x490; + undefined field_0x491; + undefined field_0x492; + undefined field_0x493; + undefined field_0x494; + undefined field_0x495; + undefined field_0x496; + undefined field_0x497; + undefined field_0x498; + undefined field_0x499; + undefined field_0x49a; + undefined field_0x49b; + undefined field_0x49c; + undefined field_0x49d; + undefined field_0x49e; + undefined field_0x49f; + undefined field_0x4a0; + undefined field_0x4a1; + undefined field_0x4a2; + undefined field_0x4a3; + undefined field_0x4a4; + undefined field_0x4a5; + undefined field_0x4a6; + undefined field_0x4a7; + undefined field_0x4a8; + undefined field_0x4a9; + undefined field_0x4aa; + undefined field_0x4ab; + undefined field_0x4ac; + undefined field_0x4ad; + undefined field_0x4ae; + undefined field_0x4af; + undefined field_0x4b0; + undefined field_0x4b1; + undefined field_0x4b2; + undefined field_0x4b3; + undefined field_0x4b4; + undefined field_0x4b5; + undefined field_0x4b6; + undefined field_0x4b7; + undefined field_0x4b8; + undefined field_0x4b9; + undefined field_0x4ba; + undefined field_0x4bb; + undefined field_0x4bc; + undefined field_0x4bd; + undefined field_0x4be; + undefined field_0x4bf; + undefined field_0x4c0; + undefined field_0x4c1; + undefined field_0x4c2; + undefined field_0x4c3; + undefined field_0x4c4; + undefined field_0x4c5; + undefined field_0x4c6; + undefined field_0x4c7; + undefined field_0x4c8; + undefined field_0x4c9; + undefined field_0x4ca; + undefined field_0x4cb; + undefined field_0x4cc; + undefined field_0x4cd; + undefined field_0x4ce; + undefined field_0x4cf; + undefined field_0x4d0; + undefined field_0x4d1; + undefined field_0x4d2; + undefined field_0x4d3; + undefined field_0x4d4; + undefined field_0x4d5; + undefined field_0x4d6; + undefined field_0x4d7; + undefined field_0x4d8; + undefined field_0x4d9; + undefined field_0x4da; + undefined field_0x4db; + undefined field_0x4dc; + undefined field_0x4dd; + undefined field_0x4de; + undefined field_0x4df; + undefined field_0x4e0; + undefined field_0x4e1; + undefined field_0x4e2; + undefined field_0x4e3; + undefined field_0x4e4; + undefined field_0x4e5; + undefined field_0x4e6; + undefined field_0x4e7; + undefined field_0x4e8; + undefined field_0x4e9; + undefined field_0x4ea; + undefined field_0x4eb; + undefined field_0x4ec; + undefined field_0x4ed; + undefined field_0x4ee; + undefined field_0x4ef; + undefined field_0x4f0; + undefined field_0x4f1; + undefined field_0x4f2; + undefined field_0x4f3; + undefined field_0x4f4; + undefined field_0x4f5; + undefined field_0x4f6; + undefined field_0x4f7; + undefined field_0x4f8; + undefined field_0x4f9; + undefined field_0x4fa; + undefined field_0x4fb; + undefined field_0x4fc; + undefined field_0x4fd; + undefined field_0x4fe; + undefined field_0x4ff; + undefined field_0x500; + undefined field_0x501; + undefined field_0x502; + undefined field_0x503; + undefined field_0x504; + undefined field_0x505; + undefined field_0x506; + undefined field_0x507; + undefined field_0x508; + undefined field_0x509; + undefined field_0x50a; + undefined field_0x50b; + undefined field_0x50c; + undefined field_0x50d; + undefined field_0x50e; + undefined field_0x50f; + undefined field_0x510; + undefined field_0x511; + undefined field_0x512; + undefined field_0x513; + undefined field_0x514; + undefined field_0x515; + undefined field_0x516; + undefined field_0x517; + undefined field_0x518; + undefined field_0x519; + undefined field_0x51a; + undefined field_0x51b; + undefined field_0x51c; + undefined field_0x51d; + undefined field_0x51e; + undefined field_0x51f; + undefined field_0x520; + undefined field_0x521; + undefined field_0x522; + undefined field_0x523; + undefined field_0x524; + undefined field_0x525; + undefined field_0x526; + undefined field_0x527; + undefined field_0x528; + undefined field_0x529; + undefined field_0x52a; + undefined field_0x52b; + undefined field_0x52c; + undefined field_0x52d; + undefined field_0x52e; + undefined field_0x52f; + undefined field_0x530; + undefined field_0x531; + undefined field_0x532; + undefined field_0x533; + undefined field_0x534; + undefined field_0x535; + undefined field_0x536; + undefined field_0x537; + undefined field_0x538; + undefined field_0x539; + undefined field_0x53a; + undefined field_0x53b; + undefined field_0x53c; + undefined field_0x53d; + undefined field_0x53e; + undefined field_0x53f; + undefined field_0x540; + undefined field_0x541; + undefined field_0x542; + undefined field_0x543; + undefined field_0x544; + undefined field_0x545; + undefined field_0x546; + undefined field_0x547; + undefined field_0x548; + undefined field_0x549; + undefined field_0x54a; + undefined field_0x54b; + undefined field_0x54c; + undefined field_0x54d; + undefined field_0x54e; + undefined field_0x54f; + undefined field_0x550; + undefined field_0x551; + undefined field_0x552; + undefined field_0x553; + undefined field_0x554; + undefined field_0x555; + undefined field_0x556; + undefined field_0x557; + undefined field_0x558; + undefined field_0x559; + undefined field_0x55a; + undefined field_0x55b; + undefined field_0x55c; + undefined field_0x55d; + undefined field_0x55e; + undefined field_0x55f; + undefined field_0x560; + undefined field_0x561; + undefined field_0x562; + undefined field_0x563; + undefined field_0x564; + undefined field_0x565; + undefined field_0x566; + undefined field_0x567; + undefined field_0x568; + undefined field_0x569; + undefined field_0x56a; + undefined field_0x56b; + undefined field_0x56c; + undefined field_0x56d; + undefined field_0x56e; + undefined field_0x56f; + undefined field_0x570; + undefined field_0x571; + undefined field_0x572; + undefined field_0x573; + undefined field_0x574; + undefined field_0x575; + undefined field_0x576; + undefined field_0x577; + undefined field_0x578; + undefined field_0x579; + undefined field_0x57a; + undefined field_0x57b; + undefined field_0x57c; + undefined field_0x57d; + undefined field_0x57e; + undefined field_0x57f; + undefined field_0x580; + undefined field_0x581; + undefined field_0x582; + undefined field_0x583; + undefined field_0x584; + undefined field_0x585; + undefined field_0x586; + undefined field_0x587; + undefined field_0x588; + undefined field_0x589; + undefined field_0x58a; + undefined field_0x58b; + undefined field_0x58c; + undefined field_0x58d; + undefined field_0x58e; + undefined field_0x58f; + undefined field_0x590; + undefined field_0x591; + undefined field_0x592; + undefined field_0x593; + undefined field_0x594; + undefined field_0x595; + undefined field_0x596; + undefined field_0x597; + undefined field_0x598; + undefined field_0x599; + undefined field_0x59a; + undefined field_0x59b; + undefined field_0x59c; + undefined field_0x59d; + undefined field_0x59e; + undefined field_0x59f; + undefined field_0x5a0; + undefined field_0x5a1; + undefined field_0x5a2; + undefined field_0x5a3; + undefined field_0x5a4; + undefined field_0x5a5; + undefined field_0x5a6; + undefined field_0x5a7; + undefined field_0x5a8; + undefined field_0x5a9; + undefined field_0x5aa; + undefined field_0x5ab; + undefined field_0x5ac; + undefined field_0x5ad; + undefined field_0x5ae; + undefined field_0x5af; + undefined field_0x5b0; + undefined field_0x5b1; + undefined field_0x5b2; + undefined field_0x5b3; + undefined field_0x5b4; + undefined field_0x5b5; + undefined field_0x5b6; + undefined field_0x5b7; + undefined field_0x5b8; + undefined field_0x5b9; + undefined field_0x5ba; + undefined field_0x5bb; + undefined field_0x5bc; + undefined field_0x5bd; + undefined field_0x5be; + undefined field_0x5bf; + undefined field_0x5c0; + undefined field_0x5c1; + undefined field_0x5c2; + undefined field_0x5c3; + undefined field_0x5c4; + undefined field_0x5c5; + undefined field_0x5c6; + undefined field_0x5c7; + undefined field_0x5c8; + undefined field_0x5c9; + undefined field_0x5ca; + undefined field_0x5cb; + undefined field_0x5cc; + undefined field_0x5cd; + undefined field_0x5ce; + undefined field_0x5cf; + undefined field_0x5d0; + undefined field_0x5d1; + undefined field_0x5d2; + undefined field_0x5d3; + undefined field_0x5d4; + undefined field_0x5d5; + undefined field_0x5d6; + undefined field_0x5d7; + undefined field_0x5d8; + undefined field_0x5d9; + undefined field_0x5da; + undefined field_0x5db; + undefined field_0x5dc; + undefined field_0x5dd; + undefined field_0x5de; + undefined field_0x5df; + undefined field_0x5e0; + undefined field_0x5e1; + undefined field_0x5e2; + undefined field_0x5e3; + undefined field_0x5e4; + undefined field_0x5e5; + undefined field_0x5e6; + undefined field_0x5e7; + undefined field_0x5e8; + undefined field_0x5e9; + undefined field_0x5ea; + undefined field_0x5eb; + undefined field_0x5ec; + undefined field_0x5ed; + undefined field_0x5ee; + undefined field_0x5ef; + undefined field_0x5f0; + undefined field_0x5f1; + undefined field_0x5f2; + undefined field_0x5f3; + undefined field_0x5f4; + undefined field_0x5f5; + undefined field_0x5f6; + undefined field_0x5f7; + undefined field_0x5f8; + undefined field_0x5f9; + undefined field_0x5fa; + undefined field_0x5fb; + undefined field_0x5fc; + undefined field_0x5fd; + undefined field_0x5fe; + undefined field_0x5ff; + undefined field_0x600; + undefined field_0x601; + undefined field_0x602; + undefined field_0x603; + undefined field_0x604; + undefined field_0x605; + undefined field_0x606; + undefined field_0x607; + undefined field_0x608; + undefined field_0x609; + undefined field_0x60a; + undefined field_0x60b; + undefined field_0x60c; + undefined field_0x60d; + undefined field_0x60e; + undefined field_0x60f; + undefined field_0x610; + undefined field_0x611; + undefined field_0x612; + undefined field_0x613; + undefined field_0x614; + undefined field_0x615; + undefined field_0x616; + undefined field_0x617; + undefined field_0x618; + undefined field_0x619; + undefined field_0x61a; + undefined field_0x61b; + undefined field_0x61c; + undefined field_0x61d; + undefined field_0x61e; + undefined field_0x61f; + undefined field_0x620; + undefined field_0x621; + undefined field_0x622; + undefined field_0x623; + undefined field_0x624; + undefined field_0x625; + undefined field_0x626; + undefined field_0x627; + undefined field_0x628; + undefined field_0x629; + undefined field_0x62a; + undefined field_0x62b; + undefined field_0x62c; + undefined field_0x62d; + undefined field_0x62e; + undefined field_0x62f; + undefined field_0x630; + undefined field_0x631; + undefined field_0x632; + undefined field_0x633; + undefined field_0x634; + undefined field_0x635; + undefined field_0x636; + undefined field_0x637; + undefined field_0x638; + undefined field_0x639; + undefined field_0x63a; + undefined field_0x63b; + undefined field_0x63c; + undefined field_0x63d; + undefined field_0x63e; + undefined field_0x63f; + undefined field_0x640; + undefined field_0x641; + undefined field_0x642; + undefined field_0x643; + undefined field_0x644; + undefined field_0x645; + undefined field_0x646; + undefined field_0x647; + undefined field_0x648; + undefined field_0x649; + undefined field_0x64a; + undefined field_0x64b; + undefined field_0x64c; + undefined field_0x64d; + undefined field_0x64e; + undefined field_0x64f; + undefined field_0x650; + undefined field_0x651; + undefined field_0x652; + undefined field_0x653; + undefined field_0x654; + undefined field_0x655; + undefined field_0x656; + undefined field_0x657; + undefined field_0x658; + undefined field_0x659; + undefined field_0x65a; + undefined field_0x65b; + undefined field_0x65c; + undefined field_0x65d; + undefined field_0x65e; + undefined field_0x65f; + undefined field_0x660; + undefined field_0x661; + undefined field_0x662; + undefined field_0x663; + undefined field_0x664; + undefined field_0x665; + undefined field_0x666; + undefined field_0x667; + undefined field_0x668; + undefined field_0x669; + undefined field_0x66a; + undefined field_0x66b; + undefined field_0x66c; + undefined field_0x66d; + undefined field_0x66e; + undefined field_0x66f; + undefined field_0x670; + undefined field_0x671; + undefined field_0x672; + undefined field_0x673; + undefined field_0x674; + undefined field_0x675; + undefined field_0x676; + undefined field_0x677; + undefined field_0x678; + undefined field_0x679; + undefined field_0x67a; + undefined field_0x67b; + undefined field_0x67c; + undefined field_0x67d; + undefined field_0x67e; + undefined field_0x67f; + undefined field_0x680; + undefined field_0x681; + undefined field_0x682; + undefined field_0x683; + undefined field_0x684; + undefined field_0x685; + undefined field_0x686; + undefined field_0x687; + undefined field_0x688; + undefined field_0x689; + undefined field_0x68a; + undefined field_0x68b; + undefined field_0x68c; + undefined field_0x68d; + undefined field_0x68e; + undefined field_0x68f; + undefined field_0x690; + undefined field_0x691; + undefined field_0x692; + undefined field_0x693; + undefined field_0x694; + undefined field_0x695; + undefined field_0x696; + undefined field_0x697; + undefined field_0x698; + undefined field_0x699; + undefined field_0x69a; + undefined field_0x69b; + undefined field_0x69c; + undefined field_0x69d; + undefined field_0x69e; + undefined field_0x69f; + undefined field_0x6a0; + undefined field_0x6a1; + undefined field_0x6a2; + undefined field_0x6a3; + undefined field_0x6a4; + undefined field_0x6a5; + undefined field_0x6a6; + undefined field_0x6a7; + undefined field_0x6a8; + undefined field_0x6a9; + undefined field_0x6aa; + undefined field_0x6ab; + undefined field_0x6ac; + undefined field_0x6ad; + undefined field_0x6ae; + undefined field_0x6af; + undefined field_0x6b0; + undefined field_0x6b1; + undefined field_0x6b2; + undefined field_0x6b3; + undefined field_0x6b4; + undefined field_0x6b5; + undefined field_0x6b6; + undefined field_0x6b7; + undefined field_0x6b8; + undefined field_0x6b9; + undefined field_0x6ba; + undefined field_0x6bb; + undefined field_0x6bc; + undefined field_0x6bd; + undefined field_0x6be; + undefined field_0x6bf; + undefined field_0x6c0; + undefined field_0x6c1; + undefined field_0x6c2; + undefined field_0x6c3; + undefined field_0x6c4; + undefined field_0x6c5; + undefined field_0x6c6; + undefined field_0x6c7; + undefined field_0x6c8; + undefined field_0x6c9; + undefined field_0x6ca; + undefined field_0x6cb; + undefined field_0x6cc; + undefined field_0x6cd; + undefined field_0x6ce; + undefined field_0x6cf; + undefined field_0x6d0; + undefined field_0x6d1; + undefined field_0x6d2; + undefined field_0x6d3; + undefined field_0x6d4; + undefined field_0x6d5; + undefined field_0x6d6; + undefined field_0x6d7; + undefined field_0x6d8; + undefined field_0x6d9; + undefined field_0x6da; + undefined field_0x6db; + undefined field_0x6dc; + undefined field_0x6dd; + undefined field_0x6de; + undefined field_0x6df; + undefined field_0x6e0; + undefined field_0x6e1; + undefined field_0x6e2; + undefined field_0x6e3; + undefined field_0x6e4; + undefined field_0x6e5; + undefined field_0x6e6; + undefined field_0x6e7; + undefined field_0x6e8; + undefined field_0x6e9; + undefined field_0x6ea; + undefined field_0x6eb; + undefined field_0x6ec; + undefined field_0x6ed; + undefined field_0x6ee; + undefined field_0x6ef; + undefined field_0x6f0; + undefined field_0x6f1; + undefined field_0x6f2; + undefined field_0x6f3; + undefined field_0x6f4; + undefined field_0x6f5; + undefined field_0x6f6; + undefined field_0x6f7; + undefined field_0x6f8; + undefined field_0x6f9; + undefined field_0x6fa; + undefined field_0x6fb; + undefined field_0x6fc; + undefined field_0x6fd; + undefined field_0x6fe; + undefined field_0x6ff; + undefined field_0x700; + undefined field_0x701; + undefined field_0x702; + undefined field_0x703; + undefined field_0x704; + undefined field_0x705; + undefined field_0x706; + undefined field_0x707; + undefined field_0x708; + undefined field_0x709; + undefined field_0x70a; + undefined field_0x70b; + undefined field_0x70c; + undefined field_0x70d; + undefined field_0x70e; + undefined field_0x70f; + undefined field_0x710; + undefined field_0x711; + undefined field_0x712; + undefined field_0x713; + undefined field_0x714; + undefined field_0x715; + undefined field_0x716; + undefined field_0x717; + undefined field_0x718; + undefined field_0x719; + undefined field_0x71a; + undefined field_0x71b; + undefined field_0x71c; + undefined field_0x71d; + undefined field_0x71e; + undefined field_0x71f; + undefined field_0x720; + undefined field_0x721; + undefined field_0x722; + undefined field_0x723; + undefined field_0x724; + undefined field_0x725; + undefined field_0x726; + undefined field_0x727; + undefined field_0x728; + undefined field_0x729; + undefined field_0x72a; + undefined field_0x72b; + undefined field_0x72c; + undefined field_0x72d; + undefined field_0x72e; + undefined field_0x72f; + undefined field_0x730; + undefined field_0x731; + undefined field_0x732; + undefined field_0x733; + undefined field_0x734; + undefined field_0x735; + undefined field_0x736; + undefined field_0x737; + undefined field_0x738; + undefined field_0x739; + undefined field_0x73a; + undefined field_0x73b; + undefined field_0x73c; + undefined field_0x73d; + undefined field_0x73e; + undefined field_0x73f; + undefined field_0x740; + undefined field_0x741; + undefined field_0x742; + undefined field_0x743; + undefined field_0x744; + undefined field_0x745; + undefined field_0x746; + undefined field_0x747; + undefined field_0x748; + undefined field_0x749; + undefined field_0x74a; + undefined field_0x74b; + undefined field_0x74c; + undefined field_0x74d; + undefined field_0x74e; + undefined field_0x74f; + undefined field_0x750; + undefined field_0x751; + undefined field_0x752; + undefined field_0x753; + undefined field_0x754; + undefined field_0x755; + undefined field_0x756; + undefined field_0x757; + undefined field_0x758; + undefined field_0x759; + undefined field_0x75a; + undefined field_0x75b; + undefined field_0x75c; + undefined field_0x75d; + undefined field_0x75e; + undefined field_0x75f; + undefined field_0x760; + undefined field_0x761; + undefined field_0x762; + undefined field_0x763; + undefined field_0x764; + undefined field_0x765; + undefined field_0x766; + undefined field_0x767; + undefined field_0x768; + undefined field_0x769; + undefined field_0x76a; + undefined field_0x76b; + undefined field_0x76c; + undefined field_0x76d; + undefined field_0x76e; + undefined field_0x76f; + undefined field_0x770; + undefined field_0x771; + undefined field_0x772; + undefined field_0x773; + undefined field_0x774; + undefined field_0x775; + undefined field_0x776; + undefined field_0x777; + undefined field_0x778; + undefined field_0x779; + undefined field_0x77a; + undefined field_0x77b; + undefined field_0x77c; + undefined field_0x77d; + undefined field_0x77e; + undefined field_0x77f; + undefined field_0x780; + undefined field_0x781; + undefined field_0x782; + undefined field_0x783; + undefined field_0x784; + undefined field_0x785; + undefined field_0x786; + undefined field_0x787; + undefined field_0x788; + undefined field_0x789; + undefined field_0x78a; + undefined field_0x78b; + undefined field_0x78c; + undefined field_0x78d; + undefined field_0x78e; + undefined field_0x78f; + undefined field_0x790; + undefined field_0x791; + undefined field_0x792; + undefined field_0x793; + undefined field_0x794; + undefined field_0x795; + undefined field_0x796; + undefined field_0x797; + undefined field_0x798; + undefined field_0x799; + undefined field_0x79a; + undefined field_0x79b; + undefined field_0x79c; + undefined field_0x79d; + undefined field_0x79e; + undefined field_0x79f; + undefined field_0x7a0; + undefined field_0x7a1; + undefined field_0x7a2; + undefined field_0x7a3; + undefined field_0x7a4; + undefined field_0x7a5; + undefined field_0x7a6; + undefined field_0x7a7; + undefined field_0x7a8; + undefined field_0x7a9; + undefined field_0x7aa; + undefined field_0x7ab; + undefined field_0x7ac; + undefined field_0x7ad; + undefined field_0x7ae; + undefined field_0x7af; + undefined field_0x7b0; + undefined field_0x7b1; + undefined field_0x7b2; + undefined field_0x7b3; + undefined field_0x7b4; + undefined field_0x7b5; + undefined field_0x7b6; + undefined field_0x7b7; + undefined field_0x7b8; + undefined field_0x7b9; + undefined field_0x7ba; + undefined field_0x7bb; + undefined field_0x7bc; + undefined field_0x7bd; + undefined field_0x7be; + undefined field_0x7bf; + undefined field_0x7c0; + undefined field_0x7c1; + undefined field_0x7c2; + undefined field_0x7c3; + undefined field_0x7c4; + undefined field_0x7c5; + undefined field_0x7c6; + undefined field_0x7c7; + undefined field_0x7c8; + undefined field_0x7c9; + undefined field_0x7ca; + undefined field_0x7cb; + undefined field_0x7cc; + undefined field_0x7cd; + undefined field_0x7ce; + undefined field_0x7cf; + undefined field_0x7d0; + undefined field_0x7d1; + undefined field_0x7d2; + undefined field_0x7d3; + undefined field_0x7d4; + undefined field_0x7d5; + undefined field_0x7d6; + undefined field_0x7d7; + undefined field_0x7d8; + undefined field_0x7d9; + undefined field_0x7da; + undefined field_0x7db; + undefined field_0x7dc; + undefined field_0x7dd; + undefined field_0x7de; + undefined field_0x7df; + undefined field_0x7e0; + undefined field_0x7e1; + undefined field_0x7e2; + undefined field_0x7e3; + undefined field_0x7e4; + undefined field_0x7e5; + undefined field_0x7e6; + undefined field_0x7e7; + undefined field_0x7e8; + undefined field_0x7e9; + undefined field_0x7ea; + undefined field_0x7eb; + undefined field_0x7ec; + undefined field_0x7ed; + undefined field_0x7ee; + undefined field_0x7ef; + undefined2 vidwidth; + undefined2 vidheight; + short vidulx; + word viduly; +}; + + +// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALResampler - /_CAPTURED_FROM_ge007.u.old.elf/ALResampler + + +// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALEnvMixer_s - /_CAPTURED_FROM_ge007.u.old.elf/ALEnvMixer_s + +typedef struct ALEnvMixer_s ALEnvMixer; + +typedef struct ALSave_s ALSave_s, *PALSave_s; + +typedef struct ALSave_s ALSave; + +typedef struct ALFilter_s ALFilter; + +struct ALSave_s { + ALFilter filter; + s32 dramout; + s32 first; +}; + +typedef struct ALFreeParam ALFreeParam, *PALFreeParam; + +struct ALFreeParam { + struct ALParam_s * next; + s32 delta; + s16 type; + struct PVoice_s * pvoice; +}; + +typedef struct ALParam_s ALParam; + +typedef struct ALDelay ALDelay, *PALDelay; + +typedef struct ALLowPass ALLowPass, *PALLowPass; + +typedef union _union_213 _union_213, *P_union_213; + +typedef short POLEF_STATE[4]; + +struct ALDelay { + u32 input; + u32 output; + s16 ffcoef; + s16 fbcoef; + s16 gain; + f32 rsinc; + f32 rsval; + s32 rsdelta; + f32 rsgain; + struct ALLowPass * lp; + ALResampler * rs; +}; + +union _union_213 { + s16 fccoef[16]; + s64 force_aligned; +}; + +struct ALLowPass { + s16 fc; + s16 fgain; + union _union_213 fcvec; + POLEF_STATE * fstate; + s32 first; +}; + +typedef struct ALAuxBus_s ALAuxBus_s, *PALAuxBus_s; + +typedef struct ALAuxBus_s ALAuxBus; + +struct ALAuxBus_s { +}; + +typedef struct ALFx ALFx, *PALFx; + +typedef s32 (* ALSetFXParam)(void *, s32, void *); + +struct ALFx { + struct ALFilter_s filter; + s16 * base; + s16 * input; + u32 length; + struct ALDelay * delay; + u8 section_count; + ALSetFXParam paramHdl; +}; + +typedef struct ALLoadFilter ALLoadFilter, *PALLoadFilter; + +struct ALLoadFilter { + ALFilter filter; + ADPCM_STATE * state; + ADPCM_STATE * lstate; + struct ALRawLoop loop; + struct ALWaveTable_s * table; + s32 bookSize; + ALDMAproc dma; + void * dmaState; + s32 sample; + s32 lastsam; + s32 first; + s32 memin; +}; + +typedef struct ALMainBus_s ALMainBus_s, *PALMainBus_s; + +typedef struct ALMainBus_s ALMainBus; + +struct ALMainBus_s { +}; + +typedef struct HeapInfo HeapInfo, *PHeapInfo; + +struct HeapInfo { + s32 magic; + s32 size; + u8 * file; + s32 line; + s32 count; + s32 pad0; + s32 pad1; + s32 pad2; +}; + + +// WARNING! conflicting data type names: /SYNTHINTERNALS.H/PVoice - /_CAPTURED_FROM_ge007.u.old.elf/PVoice + + +// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALSetParam - /_CAPTURED_FROM_ge007.u.old.elf/ALSetParam + +typedef union _union_196 _union_196, *P_union_196; + +union _union_196 { + f32 f; + s32 i; +}; + +typedef union _union_195 _union_195, *P_union_195; + +union _union_195 { + f32 f; + s32 i; +}; + +typedef union _union_194 _union_194, *P_union_194; + +union _union_194 { + f32 f; + s32 i; +}; + +typedef enum enum_191 { + AL_ADPCM=0, + AL_AUXBUS=6, + AL_BUFFER=2, + AL_ENVMIX=4, + AL_FX=5, + AL_MAINBUS=7, + AL_RESAMPLE=1, + AL_SAVE=3 +} enum_191; + +typedef enum enum_190 { + AL_FILTER_ADD_SOURCE=2, + AL_FILTER_ADD_UPDATE=3, + AL_FILTER_FREE_VOICE=0, + AL_FILTER_RESET=4, + AL_FILTER_SET_DRAM=6, + AL_FILTER_SET_FXAMT=16, + AL_FILTER_SET_PAN=12, + AL_FILTER_SET_PITCH=7, + AL_FILTER_SET_SOURCE=1, + AL_FILTER_SET_STATE=10, + AL_FILTER_SET_UNITY_PITCH=8, + AL_FILTER_SET_VOLUME=11, + AL_FILTER_SET_WAVETABLE=5, + AL_FILTER_START=9, + AL_FILTER_START_VOICE=14, + AL_FILTER_START_VOICE_ALT=13, + AL_FILTER_STOP_VOICE=15 +} enum_190; + +typedef struct ALStartParamAlt ALStartParamAlt, *PALStartParamAlt; + +typedef u8 ALPan; + +struct ALStartParamAlt { + struct ALParam_s * next; + s32 delta; + s16 type; + s16 unity; + f32 pitch; + s16 volume; + ALPan pan; + u8 fxMix; + s32 samples; + struct ALWaveTable_s * wave; +}; + +typedef struct ALStartParam ALStartParam, *PALStartParam; + +struct ALStartParam { + struct ALParam_s * next; + s32 delta; + s16 type; + s16 unity; + struct ALWaveTable_s * wave; +}; + +typedef struct ALResampler_s ALResampler_s, *PALResampler_s; + +struct ALResampler_s { + ALFilter filter; + RESAMPLE_STATE * state; + f32 ratio; + s32 upitch; + f32 delta; + s32 first; + ALParam * ctrlList; + ALParam * ctrlTail; + s32 motion; +}; + + +// WARNING! conflicting data type names: /SYNTHINTERNALS.H/ALCmdHandler - /_CAPTURED_FROM_ge007.u.old.elf/ALCmdHandler + +typedef union _union_197 _union_197, *P_union_197; + +union _union_197 { + f32 f; + s32 i; +}; + +#define AL_AUX_R_OUT 2048 + +#define AL_MAIN_R_OUT 1408 + +#define AL_AUX_L_OUT 1728 + +#define AL_MAX_AUX_BUS_SOURCES 8 + +#define AL_MAX_MAIN_BUS_SOURCES 1 + +#define AL_MAX_ADPCM_STATES 3 + +#define AL_DECODER_IN 0 + +#define AL_RESAMPLER_OUT 0 + +#define AL_MAX_AUX_BUS_FX 1 + +#define AL_DECODER_OUT 320 + +#define AL_CACHE_ALIGN 15 + +#define AL_MAX_RSP_SAMPLES 160 + +#define AL_MAIN_L_OUT 1088 + +#define AL_TEMP_0 0 + +#define AL_TEMP_2 640 + +#define AL_TEMP_1 320 + +#define ai_list_end 4 + +#define SPAWN_00001000 4096 + +#define if_door_has_been_opened_before_LENGTH 3 + +#define bond_equip_item_cinema_LENGTH 2 + +#define guard_try_fire_or_aim_at_target_update_LENGTH 6 + +#define screen_fade_from_black_ID 219 + +#define GLIST_FIRE_RAND_ANIM_SUBROUTINE 6 + +#define jump_to_ai_list_LENGTH 4 + +#define guard_runs_to_pad_ID 28 + +#define bond_hide_weapons_ID 237 + +#define if_system_power_time_less_than_ID 116 + +#define bond_killed_in_action_LENGTH 1 + +#define object_flags_2_set_on_LENGTH 6 + +#define guard_kneel_ID 9 + +#define if_level_id_less_than_LENGTH 3 + +#define if_local_byte_1_less_than_ID 132 + +#define trigger_fade_and_exit_level_on_button_press_LENGTH 1 + +#define hud_countdown_start_LENGTH 1 + +#define hud_show_all_and_unlock_controls_and_resume_mission_time_ID 216 + +#define if_bond_y_pos_less_than_LENGTH 4 + +#define if_guard_in_room_with_chr_ID 64 + +#define object_drop_from_chr_LENGTH 2 + +#define guard_set_grenade_probability_LENGTH 2 + +#define ANIM_REVERSE_LOOPING_ANIMATION 128 + +#define camera_look_at_bond_from_pad_LENGTH 3 + +#define if_guard_heard_bond_within_last_10_secs_ID 63 + +#define ai_list_end_ID 4 + +#define ANIM_PLAY_SFX 8 + +#define hud_countdown_hide_LENGTH 1 + +#define if_level_id_greater_than_ID 119 + +#define if_object_exists_LENGTH 3 + +#define if_object_was_activated_ID 92 + +#define SPAWN_02000000 33554432 + +#define goto_next_LENGTH 2 + +#define guard_try_spawning_hat_LENGTH 8 + +#define if_chr_health_greater_than_LENGTH 4 + +#define vehicle_start_path_LENGTH 2 + +#define guard_sprints_to_pad_LENGTH 3 + +#define guard_set_argh_rating_ID 146 + +#define if_item_is_stationary_within_level_LENGTH 3 + +#define guard_try_running_to_chr_position_LENGTH 3 + +#define chr_try_spawning_clone_ID 193 + +#define local_byte_2_subtract_LENGTH 2 + +#define if_local_byte_1_less_than_random_seed_ID 133 + +#define if_guard_distance_to_chr_greater_than_ID 80 + +#define guard_walks_to_pad_ID 30 + +#define SPAWN_SUNGLASSES 1 + +#define guard_set_chr_num_LENGTH 2 + +#define if_chr_distance_to_pad_greater_than_ID 78 + +#define chr_equip_object_LENGTH 3 + +#define if_local_byte_2_less_than_ID 137 + +#define if_chr_distance_to_pad_greater_than_LENGTH 7 + +#define hud_hide_and_lock_controls_and_pause_mission_time_ID 215 + +#define objective_bitfield_set_on_LENGTH 5 + +#define if_level_id_greater_than_LENGTH 3 + +#define guard_try_firing_roll_ID 19 + +#define chr_drop_all_held_items_ID 98 + +#define trigger_fade_and_exit_level_on_button_press_ID 234 + +#define if_guard_hits_less_than_LENGTH 3 + +#define hud_countdown_start_ID 185 + +#define if_chr_does_not_exist_ID 49 + +#define guard_try_spawning_item_LENGTH 9 + +#define if_guard_is_on_screen_ID 66 + +#define guard_looks_around_self_LENGTH 1 + +#define GLIST_END_ROUTINE 1 + +#define if_door_state_equal_LENGTH 4 + +#define object_activate_LENGTH 2 + +#define chr_hit_body_part_with_item_damage_ID 24 + +#define jump_to_ai_list_ID 5 + +#define if_game_difficulty_less_than_LENGTH 3 + +#define object_flags_1_set_on_LENGTH 6 + +#define guard_surrenders_ID 33 + +#define tv_change_screen_bank_ID 208 + +#define if_hud_countdown_less_than_LENGTH 4 + +#define SPAWN_00000100 256 + +#define guard_remove_fade_ID 34 + +#define GLIST_RUN_TO_BOND_SUBROUTINE 8 + +#define if_item_is_attached_to_object_ID 88 + +#define chr_hit_chr_body_part_with_held_item_LENGTH 4 + +#define bond_collect_object_ID 99 + +#define guard_try_running_to_bond_position_ID 40 + +#define guard_play_animation_LENGTH 9 + +#define HIT_RIGHT_HAND 12 + +#define guard_try_walking_to_bond_position_LENGTH 2 + +#define door_set_lock_LENGTH 3 + +#define guard_set_accuracy_rating_LENGTH 2 + +#define if_guard_counter_clockwise_direction_from_bond_greater_than_ID 74 + +#define AI_LIST_OBJ_START 4096 + +#define alarm_on_LENGTH 1 + +#define object_flags_1_set_off_ID 164 + +#define if_bond_health_greater_than_LENGTH 3 + +#define AI_LIST_CHR_START 1025 + +#define if_bond_collected_object_LENGTH 3 + +#define if_room_containing_pad_is_on_screen_ID 68 + +#define if_chr_was_damaged_since_last_check_ID 126 + +#define guard_try_spawning_hat_ID 192 + +#define exit_level_ID 210 + +#define guard_try_throwing_grenade_ID 26 + +#define if_bond_item_total_ammo_less_than_ID 226 + +#define if_chr_bitfield_is_set_on_ID 153 + +#define jump_to_return_ai_list_ID 7 + +#define TARGET_FRONT_OF_CHR 2 + +#define if_chr_health_less_than_LENGTH 4 + +#define guard_try_throwing_grenade_LENGTH 2 + +#define guard_try_sprinting_to_bond_position_LENGTH 2 + +#define HIT_RIGHT_THIGH 6 + +#define chr_remove_item_in_hand_ID 224 + +#define chr_hit_chr_body_part_with_held_item_ID 25 + +#define if_bond_item_total_ammo_less_than_LENGTH 4 + +#define chr_flags_set_on_LENGTH 6 + +#define if_guard_counter_clockwise_direction_from_bond_less_than_ID 73 + +#define local_timer_reset_LENGTH 1 + +#define if_bond_in_room_with_pad_LENGTH 4 + +#define object_destroy_LENGTH 2 + +#define guard_sprints_to_pad_ID 31 + +#define GLIST_DETECT_BOND_SPAWN_CLONE_ON_HEARD_GUNFIRE 2 + +#define hud_show_all_and_unlock_controls_and_resume_mission_time_LENGTH 1 + +#define guard_flags_set_on_ID 157 + +#define sfx_stop_channel_ID 201 + +#define if_level_id_less_than_ID 118 + +#define HIT_LEFT_FOOT 1 + +#define removed_command27_LENGTH 2 + +#define guard_set_armour_ID 144 + +#define gas_leak_and_fade_fog_LENGTH 1 + +#define goto_first_ID 1 + +#define chr_remove_instant_ID 35 + +#define if_bond_used_gadget_on_object_LENGTH 3 + +#define if_bond_health_less_than_LENGTH 3 + +#define local_byte_1_set_ID 129 + +#define ANIM_MIRROR 1 + +#define hud_countdown_set_ID 183 + +#define guard_try_firing_run_ID 18 + +#define bond_collect_object_LENGTH 2 + +#define if_random_seed_less_than_LENGTH 3 + +#define if_guard_counter_clockwise_direction_to_bond_greater_than_LENGTH 3 + +#define vehicle_speed_ID 204 + +#define SPAWN_00008000 32768 + +#define HIT_HEAD 8 + +#define SPAWN_40000000 1073741824 + +#define ANIM_UNKNOWN 2 + +#define ANIM_NO_TRANSLATION 64 + +#define chr_drop_all_concealed_items_ID 97 + +#define if_objective_all_completed_LENGTH 2 + +#define vehicle_start_path_ID 203 + +#define if_object_flags_2_is_set_on_LENGTH 7 + +#define if_guard_hits_missed_less_than_LENGTH 3 + +#define object_move_to_pad_ID 101 + +#define removed_command2B_LENGTH 2 + +#define local_timer_reset_start_ID 174 + +#define chr_show_all_LENGTH 1 + +#define DOOR_STATE_OPEN 2 + +#define if_local_byte_2_less_than_random_seed_ID 138 + +#define if_guard_heard_bond_ID 57 + +#define if_sfx_channel_volume_less_than_ID 202 + +#define chr_show_all_ID 222 + +#define if_guard_distance_to_chr_greater_than_LENGTH 5 + +#define if_hud_countdown_has_stopped_LENGTH 2 + +#define guard_set_pad_preset_LENGTH 3 + +#define debug_log_LENGTH 50 + +#define guard_try_walking_to_chr_position_ID 45 + +#define hud_countdown_hide_ID 182 + +#define chr_hide_all_LENGTH 1 + +#define SPAWN_01000000 16777216 + +#define screen_fade_to_black_ID 218 + +#define guard_try_setting_chr_preset_to_guard_within_distance_ID 81 + +#define if_chr_was_shot_since_last_check_ID 248 + +#define guard_set_health_total_LENGTH 3 + +#define HUD_SHOW_TEXT_BOTTOM 2 + +#define HIT_RIGHT_ARM 13 + +#define guard_try_fire_or_aim_at_target_update_ID 22 + +#define if_system_power_time_greater_than_ID 117 + +#define sfx_fade_channel_volume_ID 200 + +#define if_chr_does_not_exist_LENGTH 3 + +#define guard_try_sprinting_to_chr_position_ID 46 + +#define if_number_of_active_players_less_than_ID 225 + +#define GLIST_SPAWN_CLONE_OR_RUN_TO_BOND 11 + +#define guard_runs_to_pad_preset_LENGTH 1 + +#define goto_next_ID 0 + +#define exit_level_LENGTH 1 + +#define if_door_has_been_opened_before_ID 105 + +#define if_folder_actor_is_equal_LENGTH 3 + +#define if_local_byte_2_less_than_random_seed_LENGTH 2 + +#define local_byte_1_subtract_LENGTH 2 + +#define HIT_LEFT_THIGH 3 + +#define if_guard_room_containing_self_is_on_screen_LENGTH 2 + +#define if_item_is_attached_to_object_LENGTH 4 + +#define guard_try_sidestepping_ID 14 + +#define if_guard_sees_bond_LENGTH 2 + +#define if_bond_damage_and_pickups_disabled_ID 243 + +#define if_guard_hits_missed_greater_than_ID 123 + +#define DOOR_STATE_OPENING 8 + +#define guard_try_unknown6E_LENGTH 3 + +#define door_open_LENGTH 2 + +#define ANIM_IDLE_POSE_WHEN_COMPLETE 16 + +#define if_camera_is_in_intro_ID 206 + +#define if_random_seed_less_than_ID 52 + +#define if_guard_and_bond_within_line_of_sight_LENGTH 2 + +#define if_guard_sees_bond_ID 50 + +#define if_alarm_is_on_ID 55 + +#define if_guard_is_firing_ID 232 + +#define ANIM_DEFAULT_INTERPOLATION 16 + +#define SPAWN_20000000 536870912 + +#define if_guard_bitfield_is_set_on_LENGTH 3 + +#define chr_bitfield_set_on_LENGTH 3 + +#define guard_try_fire_or_aim_at_target_LENGTH 6 + +#define guard_set_hearing_scale_LENGTH 3 + +#define hud_countdown_show_ID 181 + +#define chr_flags_set_off_ID 161 + +#define if_object_exists_ID 90 + +#define if_guard_heard_bond_LENGTH 2 + +#define if_chr_dying_or_dead_ID 48 + +#define guard_walks_to_pad_LENGTH 3 + +#define guard_try_sidestepping_LENGTH 2 + +#define local_byte_1_set_LENGTH 2 + +#define music_xtrack_play_ID 244 + +#define alarm_on_ID 37 + +#define local_byte_1_add_ID 130 + +#define ai_list_end_LENGTH 1 + +#define object_flags_2_set_off_ID 167 + +#define sfx_set_channel_volume_LENGTH 6 + +#define guard_remove_fade_LENGTH 1 + +#define if_bond_distance_to_pad_greater_than_LENGTH 6 + +#define guard_try_fire_or_aim_at_target_kneel_ID 21 + +#define if_guard_hits_greater_than_ID 121 + +#define if_guard_hits_less_than_ID 120 + +#define if_guard_flags_is_set_on_ID 159 + +#define DOOR_STATE_CLOSING 4 + +#define if_guard_distance_to_bond_less_than_LENGTH 4 + +#define if_guard_see_another_guard_die_ID 59 + +#define if_local_timer_less_than_ID 179 + +#define if_alarm_is_on_unused_LENGTH 2 + +#define if_chr_health_greater_than_ID 125 + +#define if_local_timer_less_than_LENGTH 5 + +#define object_rocket_launch_LENGTH 2 + +#define if_bond_collected_object_ID 86 + +#define guard_try_facing_target_ID 23 + +#define SPAWN_00004000 16384 + +#define screen_fade_to_black_LENGTH 1 + +#define if_guard_and_bond_within_line_of_sight_ID 60 + +#define sfx_emit_from_pad_LENGTH 6 + +#define SPAWN_04000000 67108864 + +#define if_local_timer_has_stopped_LENGTH 2 + +#define if_bond_distance_to_pad_less_than_LENGTH 6 + +#define alarm_off_ID 38 + +#define TARGET_PAD 8 + +#define if_local_timer_greater_than_LENGTH 5 + +#define if_guard_room_containing_self_is_on_screen_ID 67 + +#define camera_return_to_bond_ID 211 + +#define ANIM_LOOP_HOLD_LAST_FRAME 4 + +#define local_timer_start_LENGTH 1 + +#define GLIST_KEYBOARD_RAND_ANIM_SUBROUTINE 4 + +#define sfx_emit_from_pad_ID 198 + +#define guard_try_running_to_side_LENGTH 2 + +#define TARGET_CHR 4 + +#define guard_raises_arms_LENGTH 1 + +#define guard_try_sprinting_to_chr_position_LENGTH 3 + +#define if_bond_used_gadget_on_object_ID 93 + +#define SPAWN_00400000 4194304 + +#define if_objective_bitfield_is_set_on_ID 156 + +#define local_byte_1_add_LENGTH 2 + +#define if_chr_flags_is_set_on_ID 162 + +#define SPAWN_08000000 134217728 + +#define if_door_lock_equal_LENGTH 4 + +#define sfx_emit_from_object_ID 197 + +#define sfx_play_ID 196 + +#define door_open_ID 102 + +#define if_object_in_room_with_pad_ID 230 + +#define if_chr_flags_is_set_on_LENGTH 7 + +#define if_guard_heard_bond_within_last_10_secs_LENGTH 2 + +#define object_move_to_pad_LENGTH 4 + +#define door_close_LENGTH 2 + +#define if_mission_time_greater_than_LENGTH 4 + +#define SPAWN_00000080 128 + +#define guard_set_armour_LENGTH 3 + +#define if_objective_all_completed_ID 241 + +#define local_timer_reset_start_LENGTH 1 + +#define door_unset_lock_ID 107 + +#define if_guard_counter_clockwise_direction_to_bond_greater_than_ID 72 + +#define credits_roll_LENGTH 1 + +#define sfx_set_channel_volume_ID 199 + +#define guard_flags_set_off_LENGTH 5 + +#define vehicle_speed_LENGTH 5 + +#define chr_try_spawning_clone_LENGTH 5 + +#define if_object_was_activated_LENGTH 3 + +#define text_print_bottom_ID 194 + +#define guard_try_triggering_alarm_at_pad_LENGTH 4 + +#define chr_try_spawning_next_to_unseen_chr_LENGTH 11 + +#define sfx_stop_channel_LENGTH 2 + +#define camera_return_to_bond_LENGTH 1 + +#define if_object_flags_2_is_set_on_ID 168 + +#define gas_leak_and_switch_fog_LENGTH 1 + +#define GLIST_RUN_TO_BOND_AND_FIRE 12 + +#define text_print_bottom_LENGTH 3 + +#define SPAWN_00002000 8192 + +#define bond_set_locked_velocity_LENGTH 3 + +#define if_chr_was_damaged_since_last_check_LENGTH 3 + +#define if_guard_see_another_guard_shot_LENGTH 2 + +#define if_guard_shot_from_bond_missed_LENGTH 2 + +#define bond_killed_in_action_ID 249 + +#define if_camera_is_in_bond_swirl_ID 207 + +#define SPAWN_SUNGLASSES_RANDOM 2 + +#define trigger_explosions_around_bond_LENGTH 1 + +#define if_game_difficulty_greater_than_LENGTH 3 + +#define if_chr_was_shot_since_last_check_LENGTH 3 + +#define chr_try_spawning_at_pad_LENGTH 12 + +#define screen_fade_from_black_LENGTH 1 + +#define bond_hide_weapons_LENGTH 1 + +#define HUD_SHOW_TEXT_TOP 1 + +#define if_chr_distance_to_pad_less_than_LENGTH 7 + +#define local_byte_2_set_LENGTH 2 + +#define if_game_difficulty_less_than_ID 112 + +#define if_door_lock_equal_ID 108 + +#define if_gas_is_leaking_LENGTH 2 + +#define SPAWN_00000040 64 + +#define if_guard_shot_from_bond_missed_ID 70 + +#define goto_first_LENGTH 2 + +#define guard_points_at_bond_ID 12 + +#define local_timer_stop_ID 176 + +#define if_bond_distance_to_pad_greater_than_ID 83 + +#define SPAWN_IGNORE_PAD_SIGHT_CHECK 16 + +#define music_xtrack_play_LENGTH 4 + +#define if_guard_is_targeted_by_bond_LENGTH 2 + +#define object_activate_ID 94 + +#define if_guard_counter_clockwise_direction_to_bond_less_than_ID 71 + +#define guard_set_pad_preset_ID 171 + +#define object_flags_1_set_on_ID 163 + +#define chr_remove_instant_LENGTH 2 + +#define bond_equip_item_cinema_ID 228 + +#define GLIST_REMOVE_CHR 17 + +#define if_bond_in_tank_LENGTH 2 + +#define local_timer_reset_ID 175 + +#define if_hud_countdown_greater_than_LENGTH 4 + +#define if_object_not_destroyed_ID 91 + +#define GLIST_RUN_TO_BOND_AND_FIRE_HALT_CHR_RANDOMLY 13 + +#define door_unset_lock_LENGTH 3 + +#define HIT_RIGHT_SHOULDER 14 + +#define label_LENGTH 2 + +#define guard_runs_to_pad_LENGTH 3 + +#define SPAWN_00000020 32 + +#define if_guard_playing_animation_LENGTH 2 + +#define guard_try_dropping_item_ID 27 + +#define camera_orbit_pad_ID 238 + +#define if_screen_fade_completed_LENGTH 2 + +#define guard_bitfield_set_on_LENGTH 2 + +#define if_chr_dying_or_dead_LENGTH 3 + +#define set_return_ai_list_LENGTH 3 + +#define HIT_LEFT_ARM 10 + +#define if_guard_and_bond_within_partial_line_of_sight_ID 61 + +#define local_byte_2_set_ID 134 + +#define guard_try_hopping_sideways_LENGTH 2 + +#define if_guard_distance_to_bond_less_than_ID 75 + +#define if_camera_is_in_intro_LENGTH 2 + +#define HUD_HIDE_ALL 0 + +#define guard_try_sprinting_to_bond_position_ID 42 + +#define if_credits_has_completed_ID 240 + +#define SPAWN_80000000 2147483648 + +#define SPAWN_00000004 4 + +#define door_open_instant_LENGTH 2 + +#define SPAWN_00000008 8 + +#define guard_surrenders_LENGTH 1 + +#define chr_set_pad_preset_ID 172 + +#define guard_bitfield_set_on_ID 148 + +#define if_hud_countdown_has_stopped_ID 186 + +#define guard_kneel_LENGTH 1 + +#define if_local_byte_2_less_than_LENGTH 3 + +#define GLIST_DETECT_BOND_DEAF_NO_CLONE_NO_IDLE_ANIM 5 + +#define hud_countdown_set_LENGTH 3 + +#define if_guard_in_room_with_chr_LENGTH 3 + +#define if_game_difficulty_greater_than_ID 113 + +#define if_alarm_is_on_LENGTH 2 + +#define guard_raises_arms_ID 250 + +#define HIT_LEFT_LEG 2 + +#define gas_leak_and_fade_fog_ID 251 + +#define if_sfx_channel_volume_less_than_LENGTH 5 + +#define camera_switch_LENGTH 6 + +#define if_guard_is_targeted_by_bond_ID 69 + +#define text_print_top_LENGTH 3 + +#define guard_try_spawning_item_ID 191 + +#define ANIM_TRANSLATION_SCALE_4X 32 + +#define if_number_of_active_players_less_than_LENGTH 3 + +#define guard_set_chr_preset_LENGTH 2 + +#define object_destroy_ID 95 + +#define guard_set_vision_range_LENGTH 2 + +#define AI_LIST_GLOBAL_START 0 + +#define SPAWN_00800000 8388608 + +#define if_door_state_equal_ID 104 + +#define camera_switch_ID 213 + +#define if_credits_has_completed_LENGTH 2 + +#define if_system_power_time_greater_than_LENGTH 4 + +#define if_guard_hits_missed_less_than_ID 122 + +#define if_guard_distance_to_bond_greater_than_LENGTH 4 + +#define if_chr_health_less_than_ID 124 + +#define if_guard_distance_to_bond_greater_than_ID 76 + +#define SPAWN_00000200 512 + +#define if_bond_damage_and_pickups_disabled_LENGTH 2 + +#define if_gas_is_leaking_ID 56 + +#define chr_try_spawning_at_pad_ID 189 + +#define SPAWN_00010000 65536 + +#define chr_hit_body_part_with_item_damage_LENGTH 4 + +#define HIT_RIGHT_FOOT 4 + +#define guard_set_chr_num_ID 142 + +#define if_guard_hits_missed_greater_than_LENGTH 3 + +#define if_guard_see_another_guard_die_LENGTH 2 + +#define if_random_seed_greater_than_LENGTH 3 + +#define if_camera_is_in_bond_swirl_LENGTH 2 + +#define guard_bitfield_set_off_LENGTH 2 + +#define if_chr_in_room_with_pad_LENGTH 5 + +#define guard_set_hearing_scale_ID 139 + +#define chr_set_chr_preset_LENGTH 3 + +#define if_objective_num_complete_LENGTH 3 + +#define guard_try_fire_or_aim_at_target_ID 20 + +#define bond_set_locked_velocity_ID 229 + +#define guard_try_unknown6F_ID 111 + +#define local_timer_stop_LENGTH 1 + +#define guard_bitfield_set_off_ID 149 + +#define HIT_LEFT_HAND 9 + +#define AI_CMDS_TOTAL 253 + +#define if_guard_distance_to_chr_less_than_LENGTH 5 + +#define chr_flags_set_off_LENGTH 6 + +#define tv_change_screen_bank_LENGTH 4 + +#define guard_set_accuracy_rating_ID 147 + +#define object_drop_from_chr_ID 96 + +#define bond_disable_damage_and_pickups_ID 236 + +#define if_random_seed_greater_than_ID 53 + +#define guard_try_firing_roll_LENGTH 2 + +#define guard_try_running_to_bond_position_LENGTH 2 + +#define SPAWN_00100000 1048576 + +#define guard_try_unknown6F_LENGTH 3 + +#define music_xtrack_stop_LENGTH 2 + +#define alarm_off_LENGTH 1 + +#define GLIST_STARTLE_CHR_AND_RUN_TO_BOND_SUBROUTINE 10 + +#define sfx_play_LENGTH 4 + +#define guard_try_hopping_sideways_ID 15 + +#define aircraft_rotor_speed_LENGTH 5 + +#define guard_try_walking_to_bond_position_ID 41 + +#define chr_set_pad_preset_LENGTH 4 + +#define local_timer_start_ID 177 + +#define BITFIELD_DONT_POINT_AT_BOND 1 + +#define objective_bitfield_set_off_LENGTH 5 + +#define local_byte_2_subtract_ID 136 + +#define ai_sleep_ID 3 + +#define chr_try_teleporting_to_pad_ID 217 + +#define if_bond_has_item_equipped_ID 89 + +#define SPAWN_00000400 1024 + +#define SPAWN_00020000 131072 + +#define chr_hide_all_ID 221 + +#define guard_start_patrol_ID 32 + +#define chr_remove_item_in_hand_LENGTH 3 + +#define if_bond_has_item_equipped_LENGTH 3 + +#define hud_countdown_show_LENGTH 1 + +#define if_guard_is_on_screen_LENGTH 2 + +#define HIT_NULL_PART 0 + +#define chr_equip_object_ID 100 + +#define objective_bitfield_set_off_ID 155 + +#define debug_log_ID 173 + +#define chr_set_chr_preset_ID 170 + +#define guard_try_dropping_item_LENGTH 5 + +#define if_item_is_stationary_within_level_ID 87 + +#define if_guard_playing_animation_ID 11 + +#define if_bond_is_dead_ID 235 + +#define HIT_RIGHT_LEG 5 + +#define if_guard_bitfield_is_set_on_ID 150 + +#define if_guard_counter_clockwise_direction_to_bond_less_than_LENGTH 3 + +#define GLIST_RUN_TO_CHR_PADPRESET_AND_ACTIVATE_ALARM 9 + +#define aircraft_rotor_speed_ID 205 + +#define guard_play_animation_ID 10 + +#define if_hud_countdown_greater_than_ID 188 + +#define text_print_top_ID 195 + +#define credits_roll_ID 239 + +#define chr_try_teleporting_to_pad_LENGTH 5 + +#define if_bond_in_room_with_pad_ID 85 + +#define if_mission_time_less_than_ID 114 + +#define object_flags_2_set_off_LENGTH 6 + +#define chr_bitfield_set_on_ID 151 + +#define jump_to_return_ai_list_LENGTH 1 + +#define guard_try_firing_walk_LENGTH 2 + +#define music_xtrack_stop_ID 245 + +#define if_chr_distance_to_pad_less_than_ID 77 + +#define guard_set_speed_rating_LENGTH 2 + +#define guard_animation_stop_ID 8 + +#define if_guard_has_stopped_moving_ID 47 + +#define if_guard_flags_is_set_on_LENGTH 6 + +#define object_rocket_launch_ID 252 + +#define if_guard_hits_greater_than_LENGTH 3 + +#define guard_points_at_bond_LENGTH 1 + +#define GLIST_WAIT_ONE_SECOND_SUBROUTINE 14 + +#define object_flags_1_set_off_LENGTH 6 + +#define DOOR_STATE_CLOSED 1 + +#define chr_drop_all_concealed_items_LENGTH 2 + +#define if_bond_health_greater_than_ID 128 + +#define if_alarm_is_on_unused_ID 54 + +#define if_system_power_time_less_than_LENGTH 4 + +#define GLIST_IDLE_RAND_ANIM_SUBROUTINE 3 + +#define if_local_timer_has_stopped_ID 178 + +#define guard_set_chr_preset_ID 169 + +#define if_local_byte_1_less_than_LENGTH 3 + +#define guard_try_triggering_alarm_at_pad_ID 36 + +#define if_objective_num_complete_ID 109 + +#define if_mission_time_less_than_LENGTH 4 + +#define if_chr_in_room_with_pad_ID 84 + +#define if_guard_and_bond_within_partial_line_of_sight_LENGTH 2 + +#define local_byte_2_add_LENGTH 2 + +#define if_objective_bitfield_is_set_on_LENGTH 6 + +#define if_guard_counter_clockwise_direction_from_bond_greater_than_LENGTH 3 + +#define if_mission_time_greater_than_ID 115 + +#define label_ID 2 + +#define if_guard_was_shot_within_last_10_secs_ID 62 + +#define camera_look_at_bond_from_pad_ID 212 + +#define guard_set_grenade_probability_ID 141 + +#define guard_try_firing_walk_ID 17 + +#define HIT_LEFT_SHOULDER 11 + +#define guard_try_facing_target_LENGTH 6 + +#define guard_flags_set_on_LENGTH 5 + +#define hud_countdown_stop_LENGTH 1 + +#define HIT_PELVIS 7 + +#define if_chr_bitfield_is_set_on_LENGTH 4 + +#define SPAWN_00040000 262144 + +#define if_killed_civilians_greater_than_LENGTH 3 + +#define guard_start_patrol_LENGTH 2 + +#define if_room_containing_pad_is_on_screen_LENGTH 4 + +#define if_guard_has_not_been_seen_ID 65 + +#define HUD_SHOW_HUD_COUNTDOWN 4 + +#define chr_flags_set_on_ID 160 + +#define guard_set_argh_rating_LENGTH 2 + +#define SPAWN_00000800 2048 + +#define local_byte_1_subtract_ID 131 + +#define if_guard_has_not_been_seen_LENGTH 2 + +#define random_generate_seed_ID 51 + +#define door_close_ID 103 + +#define guard_set_health_total_ID 143 + +#define GLIST_AIM_AT_BOND 0 + +#define guard_flags_set_off_ID 158 + +#define if_guard_is_firing_and_unknown_flag_ID 231 + +#define sfx_emit_from_object_LENGTH 5 + +#define guard_set_vision_range_ID 140 + +#define guard_try_running_to_chr_position_ID 44 + +#define if_object_in_room_with_pad_LENGTH 5 + +#define objective_bitfield_set_on_ID 154 + +#define if_guard_is_firing_and_unknown_flag_LENGTH 2 + +#define guard_try_unknown6E_ID 110 + +#define TARGET_BOND 1 + +#define chr_bitfield_set_off_LENGTH 3 + +#define TARGET_AIM_ONLY 32 + +#define bond_equip_item_LENGTH 2 + +#define GLIST_DETECT_BOND_NO_CLONE_NO_IDLE_ANIM 7 + +#define guard_try_setting_chr_preset_to_guard_within_distance_LENGTH 4 + +#define if_killed_civilians_greater_than_ID 247 + +#define if_bond_y_pos_less_than_ID 214 + +#define if_folder_actor_is_equal_ID 242 + +#define GLIST_EXIT_LEVEL 15 + +#define if_guard_see_another_guard_shot_ID 58 + +#define if_screen_fade_completed_ID 220 + +#define if_bond_in_tank_ID 209 + +#define removed_command27_ID 39 + +#define set_return_ai_list_ID 6 + +#define chr_drop_all_held_items_LENGTH 2 + +#define bond_equip_item_ID 227 + +#define if_object_flags_1_is_set_on_LENGTH 7 + +#define guard_looks_around_self_ID 13 + +#define SPAWN_00080000 524288 + +#define if_object_not_destroyed_LENGTH 3 + +#define if_guard_is_firing_LENGTH 2 + +#define if_guard_counter_clockwise_direction_from_bond_less_than_LENGTH 3 + +#define if_local_timer_greater_than_ID 180 + +#define guard_try_firing_run_LENGTH 2 + +#define local_byte_2_add_ID 135 + +#define GLIST_DRAW_DD44_AND_FIRE 16 + +#define if_hud_countdown_less_than_ID 187 + +#define hud_countdown_stop_ID 184 + +#define hud_hide_and_lock_controls_and_pause_mission_time_LENGTH 2 + +#define guard_try_fire_or_aim_at_target_kneel_LENGTH 6 + +#define if_guard_has_stopped_moving_LENGTH 2 + +#define guard_try_running_to_side_ID 16 + +#define SPAWN_00200000 2097152 + +#define door_set_lock_ID 106 + +#define if_object_flags_1_is_set_on_ID 165 + +#define guard_runs_to_pad_preset_ID 29 + +#define TARGET_COMPASS 16 + +#define random_generate_seed_LENGTH 1 + +#define bond_disable_damage_and_pickups_LENGTH 1 + +#define guard_set_speed_rating_ID 145 + +#define if_local_byte_1_less_than_random_seed_LENGTH 2 + +#define removed_command2B_ID 43 + +#define if_bond_is_dead_LENGTH 2 + +#define chr_bitfield_set_off_ID 152 + +#define sfx_fade_channel_volume_LENGTH 6 + +#define if_bond_distance_to_pad_less_than_ID 82 + +#define trigger_explosions_around_bond_ID 246 + +#define object_flags_2_set_on_ID 166 + +#define chr_try_spawning_next_to_unseen_chr_ID 190 + +#define gas_leak_and_switch_fog_ID 233 + +#define ai_sleep_LENGTH 1 + +#define door_open_instant_ID 223 + +#define SPAWN_10000000 268435456 + +#define guard_animation_stop_LENGTH 1 + +#define camera_orbit_pad_LENGTH 13 + +#define guard_try_walking_to_chr_position_LENGTH 3 + +#define HIT_CHEST 15 + +#define if_guard_distance_to_chr_less_than_ID 79 + +#define if_bond_health_less_than_ID 127 + +#define if_guard_was_shot_within_last_10_secs_LENGTH 2 + +#define C0_CONTEXT 4 + +#define ICACHE_LINEMASK 31 + +#define EXC_DBE 28 + +#define C0_CAUSE 13 + +#define CONFIG_EC_1_1 6 + +#define SR_IBIT8 32768 + +#define SR_IBIT3 1024 + +#define SR_IBIT2 512 + +#define SR_IBIT1 256 + +#define TLBINX_INXSHIFT 0 + +#define EXC_BREAK 36 + +#define SR_IBIT7 16384 + +#define SR_IBIT6 8192 + +#define SR_IBIT5 4096 + +#define SR_IBIT4 2048 + +#define CONFIG_BE 32768 + +#define TLBLO_CACHSHIFT 3 + +#define CACHERR_PIDX_MASK 7 + +#define C0_EPC 14 + +#define EXC_INT 0 + +#define TLBLO_EXLWR 40 + +#define C0_SR 12 + +#define TLBHI_NPID 255 + +#define TLBHI_PIDSHIFT 0 + +#define E_VEC 2147484032 + +#define CACHERR_SIDX_MASK 4194296 + +#define TLBLO_NONCOHRNT 24 + +#define SADDRMASK 4294959104 + +#define CAUSE_CEMASK 805306368 + +#define C0_REVMASK 255 + +#define TLBCTXT_VPNMASK 8388592 + +#define K2BASE 3221225472 + +#define EXC_RADE 16 + +#define CAUSE_EXCMASK 124 + +#define SINVALID 0 + +#define CONFIG_IC_SHFT 9 + +#define C0_MAJREVSHIFT 4 + +#define CONFIG_EC_3_2 7 + +#define CONFIG_EC_3_1 1 + +#define TLBCTXT_BASEMASK 4286578688 + +#define C0_BADVADDR 8 + +#define TLBLO_PFNMASK 1073741760 + +#define PADDRMASK 4294967040 + +#define C0_PAGEMASK 5 + +#define TLBCTXT_VPNSHIFT 4 + +#define EXC_WMISS 12 + +#define PSTATEMASK 192 + +#define SR_ERL 4 + +#define C_FILL 20 + +#define CAUSE_IPSHIFT 8 + +#define CONFIG_EC_2_1 0 + +#define SIZE_EXCVEC 128 + +#define C0_MINREVMASK 15 + +#define WATCHLO_ADDRMASK 4294967288 + +#define DCACHE_LINESIZE 16 + +#define PCLEANEXCL 128 + +#define CONFIG_IC 3584 + +#define CONFIG_IB 32 + +#define C0_ENTRYLO0 2 + +#define C0_ENTRYLO1 3 + +#define CONFIG_K0 7 + +#define CACH_SI 2 + +#define CAUSE_SW1 256 + +#define FPCSR_C 8388608 + +#define CAUSE_SW2 512 + +#define CACH_SD 3 + +#define SR_IMASK0 65280 + +#define C0_TAGHI 29 + +#define SR_IMASK7 32768 + +#define C0_PRID 15 + +#define SR_IMASK8 0 + +#define SR_IMASK5 57344 + +#define SR_IMASK6 49152 + +#define SR_IMASK3 63488 + +#define SR_IMASK4 61440 + +#define SR_IMASK1 65024 + +#define SR_IMASK2 64512 + +#define CAUSE_CESHIFT 28 + +#define CAUSE_EXCSHIFT 2 + +#define C0_IMPMASK 65280 + +#define TLBLO_CACHMASK 56 + +#define PINVALID 0 + +#define EXC_FPE 60 + +#define SR_KSU_MASK 24 + +#define SR_KSU_USR 16 + +#define EXC_WATCH 92 + +#define SR_TS 2097152 + +#define CONFIG_DC 448 + +#define CONFIG_DB 16 + +#define C0_MAJREVMASK 240 + +#define WATCHLO_WTRAP 1 + +#define TLBLO_UNCACHED 16 + +#define CONFIG_CU 8 + +#define SR_EXL 2 + +#define CONFIG_CM 2147483648 + +#define SR_SX 64 + +#define SR_CU1 536870912 + +#define SR_UX 32 + +#define SR_CU0 268435456 + +#define SR_CU3 2147483648 + +#define SR_CU2 1073741824 + +#define CONFIG_EC 1879048192 + +#define CONFIG_EB 8192 + +#define NTLBENTRIES 31 + +#define TLBPGMASK_64K 122880 + +#define C0_READI 1 + +#define SR_RP 134217728 + +#define CACHERR_ET 268435456 + +#define SR_RE 33554432 + +#define CACHERR_ES 134217728 + +#define CACHERR_ER 2147483648 + +#define CONFIG_EW 786432 + +#define CACHERR_EI 16777216 + +#define CONFIG_EP 251658240 + +#define CACHERR_EE 67108864 + +#define CONFIG_EM 16384 + +#define CACHERR_ED 536870912 + +#define CACHERR_EC 1073741824 + +#define CACHERR_EB 33554432 + +#define SR_CUMASK 4026531840 + +#define ICACHE_SIZE 16384 + +#define SR_SR 1048576 + +#define C0_RFE 16 + +#define WATCHLO_VALIDMASK 4294967291 + +#define FPCSR_EV 2048 + +#define C0_WRITER 6 + +#define CONFIG_BE_SHFT 15 + +#define FPCSR_EU 256 + +#define FPCSR_EO 512 + +#define C0_WATCHHI 19 + +#define FPCSR_EI 128 + +#define C_CDX 12 + +#define C0_LLADDR 17 + +#define C0_ECC 26 + +#define SR_IE 1 + +#define EXC_CPU 44 + +#define SR_IMASK 65280 + +#define DCACHE_LINEMASK 15 + +#define TLBPGMASK_16K 24576 + +#define C_IWBINV 0 + +#define EXC_II 40 + +#define C0_WRITEI 2 + +#define FPCSR_CZ 32768 + +#define FPCSR_CU 8192 + +#define FPCSR_CV 65536 + +#define FPCSR_CO 16384 + +#define FPCSR_CI 4096 + +#define K1SIZE 536870912 + +#define FPCSR_RM_MASK 3 + +#define TLBRAND_RANDMASK 63 + +#define FPCSR_CE 131072 + +#define CONFIG_SW 1048576 + +#define CONFIG_SS 2097152 + +#define C_IST 8 + +#define K0BASE 2147483648 + +#define KUSIZE 2147483648 + +#define CONFIG_SM 65536 + +#define CONFIG_SC 131072 + +#define CONFIG_SB 12582912 + +#define SR_FR 67108864 + +#define EXC_VCEI 56 + +#define TLBHI_VPN2SHIFT 13 + +#define TLBCTXT_BASEBITS 9 + +#define C_ILT 4 + +#define SCLEANEXCL 4096 + +#define TLBRAND_RANDSHIFT 0 + +#define C0_WATCHLO 18 + +#define SR_KX 128 + +#define PPARITY_MASK 1 + +#define XUT_VEC 2147483776 + +#define C0_INX 0 + +#define CONFIG_NONCOHRNT 3 + +#define PDIRTYEXCL 192 + +#define SADDR_SHIFT 4 + +#define SDIRTYEXCL 5120 + +#define TLBHI_PIDMASK 255 + +#define SSTATEMASK 7168 + +#define KUBASE 0 + +#define EXC_WADE 20 + +#define CONFIG_UNCACHED 2 + +#define TLBLO_D 4 + +#define SR_KSU_SUP 8 + +#define SVINDEXMASK 896 + +#define SR_KSU_KER 0 + +#define C0_TAGLO 28 + +#define UT_VEC 2147483648 + +#define FPCSR_RM_RZ 1 + +#define TLBLO_G 1 + +#define C0_IMPSHIFT 8 + +#define FPCSR_FZ 32 + +#define FPCSR_FS 16777216 + +#define EXC_IBE 24 + +#define FPCSR_RM_RP 2 + +#define K1BASE 2684354560 + +#define FPCSR_FU 8 + +#define FPCSR_RM_RM 3 + +#define FPCSR_FV 64 + +#define FPCSR_RM_RN 0 + +#define FPCSR_FO 16 + +#define TLBLO_V 2 + +#define CACH_PD 1 + +#define EXC_RMISS 8 + +#define CAUSE_BD 2147483648 + +#define FPCSR_FI 4 + +#define CACH_PI 0 + +#define FPCSR_EZ 1024 + +#define C0_WIRED 6 + +#define C0_ENTRYHI 10 + +#define ICACHE_LINESIZE 32 + +#define C_HWB 24 + +#define SR_BEV 4194304 + +#define SECC_MASK 127 + +#define EXC_SYSCALL 32 + +#define CAUSE_IPMASK 65280 + +#define C0_CONFIG 16 + +#define SR_ITS 16777216 + +#define K0SIZE 536870912 + +#define CONFIG_COHRNT_EXLWR 5 + +#define SR_IMASKSHIFT 8 + +#define TLBHI_VPN2MASK 4294959104 + +#define C0_COMPARE 11 + +#define DCACHE_SIZE 8192 + +#define ECC_VEC 2147483904 + +#define C_HWBINV 20 + +#define CONFIG_SB_SHFT 22 + +#define TLBLO_PFNSHIFT 6 + +#define EXC_TRAP 52 + +#define TLBCTXT_BASESHIFT 23 + +#define CONFIG_DC_SHFT 6 + +#define EXC_OV 48 + +#define WATCHLO_RTRAP 2 + +#define C0_COUNT 9 + +#define SR_DE 65536 + +#define EXC_VCED 124 + +#define C_IINV 0 + +#define TLBINX_PROBE 2147483648 + +#define C0_PROBE 8 + +#define WATCHHI_VALIDMASK 15 + +#define EXC_MOD 4 + +#define SR_CH 262144 + +#define TLBWIRED_WIREDMASK 63 + +#define C_HSV 28 + +#define C0_CACHE_ERR 27 + +#define TLBPGMASK_4K 0 + +#define C0_RAND 1 + +#define C0_ERROR_EPC 30 + +#define PADDR_SHIFT 4 + +#define R_VEC 3217031168 + +#define K2SIZE 536870912 + +#define SR_CE 131072 + +#define CACHERR_PIDX_SHIFT 12 + +#define TLBINX_INXMASK 63 + +#define CAUSE_IP3 1024 + +#define CAUSE_IP4 2048 + +#define C_HINV 16 + +#define CAUSE_IP7 16384 + +#define CAUSE_IP8 32768 + +#define CAUSE_IP5 4096 + +#define CAUSE_IP6 8192 + +typedef struct Gtexture Gtexture, *PGtexture; + +struct Gtexture { + uchar cmd; + uchar lodscale; + uchar tile; + uchar on; + ushort s; + ushort t; +}; + +typedef struct Light_t Light_t, *PLight_t; + +struct Light_t { + uchar col[3]; + char pad1; + uchar colc[3]; + char pad2; + char dir[3]; + char pad3; +}; + +typedef struct Gsegment Gsegment, *PGsegment; + +typedef union anon__struct_60_bitfield_1 anon__struct_60_bitfield_1, *Panon__struct_60_bitfield_1; + +typedef union anon__struct_60_bitfield_2 anon__struct_60_bitfield_2, *Panon__struct_60_bitfield_2; + +union anon__struct_60_bitfield_1 { + int cmd:8; // : bits 0-7 + int pad0:8; // : bits 8-15 + int mw_index:8; // : bits 16-23 + int number:8; // : bits 24-31 +}; + +union anon__struct_60_bitfield_2 { + int pad1:8; // : bits 0-7 + int base:24; // : bits 8-31 +}; + +struct Gsegment { + union anon__struct_60_bitfield_1 field_0x0; + union anon__struct_60_bitfield_2 field_0x4; +}; + +typedef struct Gsetcolor Gsetcolor, *PGsetcolor; + +typedef union anon__struct_68_bitfield_1 anon__struct_68_bitfield_1, *Panon__struct_68_bitfield_1; + +union anon__struct_68_bitfield_1 { + int cmd:8; // : bits 0-7 +}; + +struct Gsetcolor { + union anon__struct_68_bitfield_1 field_0x0; + uchar pad; + uchar prim_min_level; + uchar prim_level; + ulong color; +}; + +typedef struct Gtri Gtri, *PGtri; + +typedef union anon__struct_58_bitfield_1 anon__struct_58_bitfield_1, *Panon__struct_58_bitfield_1; + +typedef struct Tri Tri, *PTri; + +union anon__struct_58_bitfield_1 { + int cmd:8; // : bits 0-7 + int pad:24; // : bits 8-31 +}; + +struct Tri { + uchar flag; + uchar v[3]; +}; + +struct Gtri { + union anon__struct_58_bitfield_1 field_0x0; + struct Tri tri; +}; + +typedef struct TexRect TexRect, *PTexRect; + +struct TexRect { + ulong w0; + ulong w1; + ulong w2; + ulong w3; +}; + +typedef struct Gsetcombine Gsetcombine, *PGsetcombine; + +typedef union anon__struct_67_bitfield_1 anon__struct_67_bitfield_1, *Panon__struct_67_bitfield_1; + +typedef union anon__struct_67_bitfield_2 anon__struct_67_bitfield_2, *Panon__struct_67_bitfield_2; + +typedef union anon__struct_67_bitfield_3 anon__struct_67_bitfield_3, *Panon__struct_67_bitfield_3; + +union anon__struct_67_bitfield_1 { + int cmd:8; // : bits 0-7 +}; + +union anon__struct_67_bitfield_2 { + uint muxs0:24; // : bits 0-23 +}; + +union anon__struct_67_bitfield_3 { + uint muxs1:32; // : bits 0-31 +}; + +struct Gsetcombine { + union anon__struct_67_bitfield_1 field_0x0; + union anon__struct_67_bitfield_2 field_0x4; + union anon__struct_67_bitfield_3 field_0x8; +}; + +typedef union anon__struct_69_bitfield_2 anon__struct_69_bitfield_2, *Panon__struct_69_bitfield_2; + +union anon__struct_69_bitfield_2 { + uint pad:8; // : bits 0-7 +}; + +typedef union anon__struct_69_bitfield_3 anon__struct_69_bitfield_3, *Panon__struct_69_bitfield_3; + +union anon__struct_69_bitfield_3 { + int x1:10; // : bits 0-9 + int x1frac:2; // : bits 10-11 + int y1:10; // : bits 12-21 + int y1frac:2; // : bits 22-23 +}; + +typedef union anon__struct_69_bitfield_1 anon__struct_69_bitfield_1, *Panon__struct_69_bitfield_1; + +union anon__struct_69_bitfield_1 { + int cmd:8; // : bits 0-7 + int x0:10; // : bits 8-17 + int x0frac:2; // : bits 18-19 + int y0:10; // : bits 20-29 + int y0frac:2; // : bits 30-31 +}; + +typedef union anon__struct_59_bitfield_3 anon__struct_59_bitfield_3, *Panon__struct_59_bitfield_3; + +union anon__struct_59_bitfield_3 { + uchar param:8; // : bits 0-7 +}; + +typedef union anon__struct_59_bitfield_2 anon__struct_59_bitfield_2, *Panon__struct_59_bitfield_2; + +union anon__struct_59_bitfield_2 { + int pad2:24; // : bits 0-23 +}; + +typedef union anon__struct_59_bitfield_1 anon__struct_59_bitfield_1, *Panon__struct_59_bitfield_1; + +union anon__struct_59_bitfield_1 { + int cmd:8; // : bits 0-7 + int pad1:24; // : bits 8-31 +}; + +typedef struct Gsettile Gsettile, *PGsettile; + +typedef union anon__struct_70_bitfield_1 anon__struct_70_bitfield_1, *Panon__struct_70_bitfield_1; + +typedef union anon__struct_70_bitfield_2 anon__struct_70_bitfield_2, *Panon__struct_70_bitfield_2; + +typedef union anon__struct_70_bitfield_3 anon__struct_70_bitfield_3, *Panon__struct_70_bitfield_3; + +union anon__struct_70_bitfield_1 { + int cmd:8; // : bits 0-7 +}; + +union anon__struct_70_bitfield_2 { + uint fmt:3; // : bits 0-2 + uint siz:2; // : bits 3-4 + uint pad0:1; // : bits 5 + uint line:9; // : bits 6-14 + uint tmem:9; // : bits 15-23 + uint pad1:5; // : bits 24-28 + uint tile:3; // : bits 29-31 +}; + +union anon__struct_70_bitfield_3 { + uint palette:4; // : bits 0-3 + uint ct:1; // : bits 4 + uint mt:1; // : bits 5 + uint maskt:4; // : bits 6-9 + uint shiftt:4; // : bits 10-13 + uint cs:1; // : bits 14 + uint ms:1; // : bits 15 + uint masks:4; // : bits 16-19 + uint shifts:4; // : bits 20-23 +}; + +struct Gsettile { + union anon__struct_70_bitfield_1 field_0x0; + union anon__struct_70_bitfield_2 field_0x4; + union anon__struct_70_bitfield_3 field_0x8; +}; + +typedef struct Gline3D Gline3D, *PGline3D; + +typedef union anon__struct_64_bitfield_1 anon__struct_64_bitfield_1, *Panon__struct_64_bitfield_1; + +union anon__struct_64_bitfield_1 { + int cmd:8; // : bits 0-7 + int pad:24; // : bits 8-31 +}; + +struct Gline3D { + union anon__struct_64_bitfield_1 field_0x0; + struct Tri line; +}; + +typedef struct Gloadtile Gloadtile, *PGloadtile; + +typedef struct Gloadtile Gloadblock; + +typedef union anon__struct_71_bitfield_1 anon__struct_71_bitfield_1, *Panon__struct_71_bitfield_1; + +typedef union anon__struct_71_bitfield_2 anon__struct_71_bitfield_2, *Panon__struct_71_bitfield_2; + +typedef union anon__struct_71_bitfield_3 anon__struct_71_bitfield_3, *Panon__struct_71_bitfield_3; + +typedef union anon__struct_71_bitfield_4 anon__struct_71_bitfield_4, *Panon__struct_71_bitfield_4; + +union anon__struct_71_bitfield_1 { + int cmd:8; // : bits 0-7 +}; + +union anon__struct_71_bitfield_2 { + uint sl:12; // : bits 0-11 + uint tl:12; // : bits 12-23 +}; + +union anon__struct_71_bitfield_3 { + int pad:5; // : bits 0-4 +}; + +union anon__struct_71_bitfield_4 { + uint tile:3; // : bits 0-2 + uint sh:12; // : bits 3-14 + uint th:12; // : bits 15-26 +}; + +struct Gloadtile { + union anon__struct_71_bitfield_1 field_0x0; + union anon__struct_71_bitfield_2 field_0x4; + union anon__struct_71_bitfield_3 field_0x8; + union anon__struct_71_bitfield_4 field_0xc; +}; + +typedef union Ambient Ambient, *PAmbient; + +typedef struct Ambient_t Ambient_t, *PAmbient_t; + +struct Ambient_t { + uchar col[3]; + char pad1; + uchar colc[3]; + char pad2; +}; + +union Ambient { + struct Ambient_t l; + longlong force_structure_alignment[1]; +}; + +typedef struct Gtexrect Gtexrect, *PGtexrect; + +typedef union anon__struct_72_bitfield_1 anon__struct_72_bitfield_1, *Panon__struct_72_bitfield_1; + +typedef union anon__struct_72_bitfield_2 anon__struct_72_bitfield_2, *Panon__struct_72_bitfield_2; + +typedef union anon__struct_72_bitfield_3 anon__struct_72_bitfield_3, *Panon__struct_72_bitfield_3; + +typedef union anon__struct_72_bitfield_4 anon__struct_72_bitfield_4, *Panon__struct_72_bitfield_4; + +union anon__struct_72_bitfield_1 { + uint cmd:8; // : bits 0-7 + uint xl:12; // : bits 8-19 + uint yl:12; // : bits 20-31 +}; + +union anon__struct_72_bitfield_3 { + uint s:16; // : bits 0-15 + uint t:16; // : bits 16-31 +}; + +union anon__struct_72_bitfield_2 { + uint pad1:5; // : bits 0-4 + uint tile:3; // : bits 5-7 + uint xh:12; // : bits 8-19 + uint yh:12; // : bits 20-31 +}; + +union anon__struct_72_bitfield_4 { + uint dsdx:16; // : bits 0-15 + uint dtdy:16; // : bits 16-31 +}; + +struct Gtexrect { + union anon__struct_72_bitfield_1 field_0x0; + union anon__struct_72_bitfield_2 field_0x4; + union anon__struct_72_bitfield_3 field_0x8; + union anon__struct_72_bitfield_4 field_0xc; +}; + +typedef union anon__struct_62_bitfield_1 anon__struct_62_bitfield_1, *Panon__struct_62_bitfield_1; + +union anon__struct_62_bitfield_1 { + int cmd:8; // : bits 0-7 + int pad0:8; // : bits 8-15 + int sft:8; // : bits 16-23 + int len:8; // : bits 24-31 +}; + +typedef union Light Light, *PLight; + +union Light { + struct Light_t l; + longlong force_structure_alignment[2]; +}; + +typedef union anon__struct_62_bitfield_2 anon__struct_62_bitfield_2, *Panon__struct_62_bitfield_2; + +union anon__struct_62_bitfield_2 { + uint data:32; // : bits 0-31 +}; + +typedef union uSprite uSprite, *PuSprite; + +typedef struct uSprite_t uSprite_t, *PuSprite_t; + +struct uSprite_t { + void * SourceImagePointer; + void * TlutPointer; + short Stride; + short SubImageWidth; + short SubImageHeight; + char SourceImageType; + char SourceImageBitSize; + short ScaleX; + short ScaleY; + char FlipTextureX; + char FlipTextureY; + short SourceImageOffsetS; + short SourceImageOffsetT; + short PScreenX; + short PScreenY; + char dummy[2]; +}; + +union uSprite { + struct uSprite_t s; + longlong force_structure_allignment[4]; +}; + +typedef struct Lightsn Lightsn, *PLightsn; + +struct Lightsn { + union Ambient a; + union Light l[7]; +}; + +typedef struct Gfillrect Gfillrect, *PGfillrect; + +struct Gfillrect { + union anon__struct_69_bitfield_1 field_0x0; + union anon__struct_69_bitfield_2 field_0x4; + union anon__struct_69_bitfield_3 field_0x8; +}; + +typedef struct LookAt LookAt, *PLookAt; + +struct LookAt { + union Light l[2]; +}; + +typedef union anon__struct_57_bitfield_2 anon__struct_57_bitfield_2, *Panon__struct_57_bitfield_2; + +union anon__struct_57_bitfield_2 { + uint par:8; // : bits 0-7 + uint len:16; // : bits 8-23 +}; + +typedef union anon__struct_66_bitfield_2 anon__struct_66_bitfield_2, *Panon__struct_66_bitfield_2; + +union anon__struct_66_bitfield_2 { + uint fmt:3; // : bits 0-2 + uint siz:2; // : bits 3-4 + uint pad:7; // : bits 5-11 + uint wd:12; // : bits 12-23 +}; + +typedef union anon__struct_57_bitfield_1 anon__struct_57_bitfield_1, *Panon__struct_57_bitfield_1; + +union anon__struct_57_bitfield_1 { + int cmd:8; // : bits 0-7 +}; + +typedef union anon__struct_66_bitfield_1 anon__struct_66_bitfield_1, *Panon__struct_66_bitfield_1; + +union anon__struct_66_bitfield_1 { + int cmd:8; // : bits 0-7 +}; + +typedef struct Gloadtile Gsettilesize; + +typedef struct Lights0 Lights0, *PLights0; + +struct Lights0 { + union Ambient a; + union Light l[1]; +}; + +typedef struct Lights3 Lights3, *PLights3; + +struct Lights3 { + union Ambient a; + union Light l[3]; +}; + +typedef struct Lights4 Lights4, *PLights4; + +struct Lights4 { + union Ambient a; + union Light l[4]; +}; + +typedef struct Gsetimg Gsetimg, *PGsetimg; + +struct Gsetimg { + union anon__struct_66_bitfield_1 field_0x0; + union anon__struct_66_bitfield_2 field_0x4; + uint dram; +}; + +typedef struct Lights1 Lights1, *PLights1; + +struct Lights1 { + union Ambient a; + union Light l[1]; +}; + +typedef struct Lights2 Lights2, *PLights2; + +struct Lights2 { + union Ambient a; + union Light l[2]; +}; + +typedef struct Lights7 Lights7, *PLights7; + +struct Lights7 { + union Ambient a; + union Light l[7]; +}; + +typedef struct Lights5 Lights5, *PLights5; + +struct Lights5 { + union Ambient a; + union Light l[5]; +}; + +typedef struct Lights6 Lights6, *PLights6; + +struct Lights6 { + union Ambient a; + union Light l[6]; +}; + +typedef struct GsetothermodeL GsetothermodeL, *PGsetothermodeL; + +typedef union anon__struct_61_bitfield_1 anon__struct_61_bitfield_1, *Panon__struct_61_bitfield_1; + +typedef union anon__struct_61_bitfield_2 anon__struct_61_bitfield_2, *Panon__struct_61_bitfield_2; + +union anon__struct_61_bitfield_1 { + int cmd:8; // : bits 0-7 + int pad0:8; // : bits 8-15 + int sft:8; // : bits 16-23 + int len:8; // : bits 24-31 +}; + +union anon__struct_61_bitfield_2 { + uint data:32; // : bits 0-31 +}; + +struct GsetothermodeL { + union anon__struct_61_bitfield_1 field_0x0; + union anon__struct_61_bitfield_2 field_0x4; +}; + +typedef struct GsetothermodeH GsetothermodeH, *PGsetothermodeH; + +struct GsetothermodeH { + union anon__struct_62_bitfield_1 field_0x0; + union anon__struct_62_bitfield_2 field_0x4; +}; + +typedef struct Gloadtile Gloadtlut; + +typedef struct Gdma Gdma, *PGdma; + +struct Gdma { + union anon__struct_57_bitfield_1 field_0x0; + union anon__struct_57_bitfield_2 field_0x4; + uint addr; +}; + +typedef union anon__struct_65_bitfield_1 anon__struct_65_bitfield_1, *Panon__struct_65_bitfield_1; + +union anon__struct_65_bitfield_1 { + int cmd:8; // : bits 0-7 + int pad1:24; // : bits 8-31 +}; + +typedef struct Hilite_t Hilite_t, *PHilite_t; + +struct Hilite_t { + int x1; + int y1; + int x2; + int y2; +}; + +typedef struct Gpopmtx Gpopmtx, *PGpopmtx; + +struct Gpopmtx { + union anon__struct_59_bitfield_1 field_0x0; + union anon__struct_59_bitfield_2 field_0x4; + union anon__struct_59_bitfield_3 field_0x8; +}; + +typedef union Hilite Hilite, *PHilite; + +union Hilite { + struct Hilite_t h; + long force_alignmnet[4]; +}; + +typedef struct Gperspnorm Gperspnorm, *PGperspnorm; + +struct Gperspnorm { + union anon__struct_65_bitfield_1 field_0x0; + short pad2; + short scale; +}; + +#define G_LOADBLOCK 243 + +#define G_DMACMDSIZ 128 + +#define G_MWO_NUMLIGHT 0 + +#define G_TX_LOADTILE 7 + +#define G_CYC_FILL 3145728 + +#define G_IM_FMT_IA 3 + +#define G_TEXTURE_SCALE_FRAC 16 + +#define G_BL_CLR_MEM 1 + +#define G_MOVEMEM 3 + +#define G_CCMUX_K4 7 + +#define G_MWO_aLIGHT_5 128 + +#define G_CCMUX_K5 15 + +#define G_MWO_aLIGHT_4 96 + +#define G_MWO_aLIGHT_7 192 + +#define G_MWO_aLIGHT_6 160 + +#define G_MWO_aLIGHT_8 224 + +#define G_TRI_SHADE_ZBUFF 205 + +#define G_ACMUX_0 7 + +#define G_MDSFT_TEXTCONV 9 + +#define G_AD_NOTPATTERN 16 + +#define G_RM_NOOP2 0 + +#define G_ACMUX_1 6 + +#define G_IM_SIZ_4b 0 + +#define G_MDSFT_CYCLETYPE 20 + +#define G_SETSCISSOR 237 + +#define G_PM_1PRIMITIVE 8388608 + +#define ZMODE_XLU 2048 + +#define G_MWO_CLIP_RNY 12 + +#define ZMODE_DEC 3072 + +#define G_MWO_CLIP_RNX 4 + +#define G_MWO_MATRIX_YX_YY_I 8 + +#define G_MWO_aLIGHT_1 0 + +#define G_MTX_MODELVIEW 0 + +#define G_MWO_aLIGHT_3 64 + +#define G_MWO_aLIGHT_2 32 + +#define G_TP_PERSP 524288 + +#define G_TX_CLAMP 2 + +#define G_TT_IA16 49152 + +#define G_POPMTX -67 + +#define G_TX_NOMIRROR 0 + +#define G_CD_DISABLE 192 + +#define G_MWO_MATRIX_YX_YY_F 40 + +#define G_RDPTILESYNC 232 + +#define G_PM_NPRIMITIVE 0 + +#define G_CYC_2CYCLE 1048576 + +#define G_MDSFT_COMBKEY 8 + +#define G_IM_SIZ_16b_SHIFT 0 + +#define G_CULLDL -66 + +#define FR_POS_FRUSTRATIO_2 65534 + +#define FR_POS_FRUSTRATIO_3 65533 + +#define G_RDPPIPESYNC 231 + +#define FR_POS_FRUSTRATIO_1 65535 + +#define G_MDSFT_BLENDER 16 + +#define G_MWO_CLIP_RPY 28 + +#define G_MWO_CLIP_RPX 20 + +#define G_ACMUX_PRIMITIVE 3 + +#define G_CCMUX_CENTER 6 + +#define G_SETKEYR 235 + +#define G_CCMUX_COMBINED_ALPHA 7 + +#define G_IM_SIZ_8b_SHIFT 1 + +#define G_MWO_MATRIX_WZ_WW_F 60 + +#define G_MDSFT_TEXTLOD 16 + +#define G_CK_KEY 256 + +#define G_MWO_MATRIX_WZ_WW_I 28 + +#define FR_POS_FRUSTRATIO_6 65530 + +#define FR_POS_FRUSTRATIO_4 65532 + +#define FR_POS_FRUSTRATIO_5 65531 + +#define G_CD_MAGICSQ 0 + +#define G_IM_SIZ_32b_INCR 0 + +#define G_CCMUX_PRIM_LOD_FRAC 14 + +#define G_IMMFIRST -65 + +#define G_MDSFT_COLORDITHER 22 + +#define G_TEXRECT 228 + +#define G_BL_A_SHADE 2 + +#define G_IM_FMT_YUV 1 + +#define G_CK_NONE 0 + +#define G_MTX 1 + +#define G_IM_SIZ_8b 1 + +#define G_TC_CONV 0 + +#define G_MV_TXTATT 150 + +#define G_ACMUX_SHADE 4 + +#define G_MWO_MATRIX_XZ_XW_F 36 + +#define CVG_DST_SAVE 768 + +#define G_DL_PUSH 0 + +#define G_MWO_MATRIX_XZ_XW_I 4 + +#define G_TEXTURE_GEN 262144 + +#define G_RDPCMDSIZ 64 + +#define G_SETCONVERT 236 + +#define G_CCMUX_NOISE 7 + +#define G_CCMUX_ENV_ALPHA 12 + +#define G_AC_THRESHOLD 1 + +#define G_IM_FMT_I 4 + +#define BOWTIE_VAL 0 + +#define G_MTX_PROJECTION 1 + +#define FORCE_BL 16384 + +#define G_CLIPPING 8388608 + +#define G_MWO_POINT_RGBA 16 + +#define G_IM_SIZ_32b_LINE_BYTES 2 + +#define G_IM_SIZ_8b_LINE_BYTES 1 + +#define G_IM_SIZ_4b_LINE_BYTES 0 + +#define CVG_X_ALPHA 4096 + +#define G_TD_SHARPEN 131072 + +#define G_LIGHTING 131072 + +#define CVG_DST_WRAP 256 + +#define G_SHADE 4 + +#define G_MTX_PUSH 4 + +#define G_MAXZ 1023 + +#define G_RDP_TRI_FILL_MASK 8 + +#define G_SETGEOMETRYMODE -73 + +#define G_TRI_FILL_ZBUFF 201 + +#define G_IM_FMT_CI 2 + +#define G_IM_SIZ_8b_INCR 1 + +#define G_MWO_bLIGHT_3 68 + +#define G_MWO_bLIGHT_4 100 + +#define G_MWO_bLIGHT_1 4 + +#define G_TX_NOMASK 0 + +#define G_MWO_bLIGHT_2 36 + +#define G_MDSFT_TEXTLUT 14 + +#define G_IM_SIZ_8b_BYTES 1 + +#define G_SETCIMG 255 + +#define G_VTX 4 + +#define G_MWO_bLIGHT_7 196 + +#define G_MWO_bLIGHT_8 228 + +#define G_MWO_bLIGHT_5 132 + +#define G_MWO_bLIGHT_6 164 + +#define G_MDSFT_PIPELINE 23 + +#define G_RDPHALF_2 -77 + +#define G_CULL_BOTH 12288 + +#define G_CCMUX_0 31 + +#define G_TX_LDBLK_MAX_TXL 2047 + +#define G_CCMUX_1 6 + +#define G_RDPHALF_1 -76 + +#define G_SHADING_SMOOTH 512 + +#define G_CCMUX_SHADE 4 + +#define G_SPRITE2D 9 + +#define G_CCMUX_ENVIRONMENT 5 + +#define G_CULL_FRONT 4096 + +#define G_LOADTILE 244 + +#define G_FOG 65536 + +#define G_SETPRIMDEPTH 238 + +#define G_MV_LOOKATX 132 + +#define G_MV_LOOKATY 130 + +#define G_SC_NON_INTERLACE 0 + +#define G_MDSFT_BLENDMASK 0 + +#define G_MW_FOG 8 + +#define G_CD_ENABLE 128 + +#define G_TEXTURE_ENABLE 2 + +#define G_MDSFT_RENDERMODE 3 + +#define G_MWO_MATRIX_ZZ_ZW_I 20 + +#define G_MWO_MATRIX_ZZ_ZW_F 52 + +#define G_BL_1MA 0 + +#define G_SPNOOP 0 + +#define G_TF_BILERP 8192 + +#define G_SETZIMG 254 + +#define G_MV_VIEWPORT 128 + +#define G_NOOP 192 + +#define Z_UPD 32 + +#define G_ENDDL -72 + +#define G_ROTATE_FRAC 16 + +#define G_SETTILESIZE 242 + +#define G_RM_NOOP 0 + +#define G_RESERVED2 7 + +#define G_TD_DETAIL 262144 + +#define G_RESERVED3 8 + +#define G_RESERVED0 2 + +#define G_RESERVED1 5 + +#define G_CLEARGEOMETRYMODE -74 + +#define G_BL_A_FOG 1 + +#define G_BL_CLR_FOG 3 + +#define G_MW_SEGMENT 6 + +#define Z_CMP 16 + +#define AA_EN 8 + +#define G_LOADTLUT 240 + +#define NUMLIGHTS_5 5 + +#define NUMLIGHTS_4 4 + +#define NUMLIGHTS_7 7 + +#define NUMLIGHTS_6 6 + +#define G_MWO_MATRIX_YZ_YW_F 44 + +#define NUMLIGHTS_1 1 + +#define NUMLIGHTS_0 1 + +#define NUMLIGHTS_3 3 + +#define G_MWO_MATRIX_YZ_YW_I 12 + +#define NUMLIGHTS_2 2 + +#define G_SETOTHERMODE_H.conflict 186 + +#define G_SETFILLCOLOR 247 + +#define G_DL 6 + +#define G_BL_CLR_BL 2 + +#define G_CYC_COPY 2097152 + +#define G_MWO_SEGMENT_A 10 + +#define CLR_ON_CVG 128 + +#define G_RDP_ADDR_FIXUP 3 + +#define G_SETFOGCOLOR 248 + +#define G_MWO_SEGMENT_8 8 + +#define G_MWO_SEGMENT_9 9 + +#define G_MWO_SEGMENT_6 6 + +#define G_MWO_SEGMENT_7 7 + +#define G_MWO_SEGMENT_4 4 + +#define G_MWO_SEGMENT_5 5 + +#define G_MWO_SEGMENT_2 2 + +#define G_MWO_SEGMENT_3 3 + +#define G_MWO_SEGMENT_0 0 + +#define G_IMMCMDSIZ 64 + +#define G_MWO_SEGMENT_1 1 + +#define G_ACMUX_LOD_FRACTION 0 + +#define G_IM_SIZ_16b_TILE_BYTES 2 + +#define G_ACMUX_COMBINED 0 + +#define G_TL_TILE 0 + +#define G_MDSFT_TEXTPERSP 19 + +#define G_ACMUX_ENVIRONMENT 5 + +#define G_IM_SIZ_8b_TILE_BYTES 1 + +#define G_MWO_MATRIX_WX_WY_I 24 + +#define G_ACMUX_TEXEL1 2 + +#define G_SC_EVEN_INTERLACE 2 + +#define G_MDSFT_TEXTFILT 12 + +#define G_IM_SIZ_16b 2 + +#define LIGHT_6 6 + +#define LIGHT_5 5 + +#define G_TL_LOD 65536 + +#define LIGHT_8 8 + +#define LIGHT_7 7 + +#define LIGHT_2 2 + +#define LIGHT_1 1 + +#define G_IM_SIZ_4b_TILE_BYTES 0 + +#define LIGHT_4 4 + +#define G_MWO_SEGMENT_F 15 + +#define G_ACMUX_TEXEL0 1 + +#define G_MW_CLIP 4 + +#define LIGHT_3 3 + +#define G_MWO_SEGMENT_D 13 + +#define G_SCALE_FRAC 8 + +#define G_MWO_SEGMENT_E 14 + +#define G_MWO_SEGMENT_B 11 + +#define G_IM_SIZ_32b_TILE_BYTES 2 + +#define G_TT_NONE 0 + +#define G_MWO_SEGMENT_C 12 + +#define G_AD_PATTERN 0 + +#define G_TX_RENDERTILE 0 + +#define G_IM_SIZ_8b_LOAD_BLOCK 2 + +#define G_SC_ODD_INTERLACE 3 + +#define G_IM_SIZ_4b_LOAD_BLOCK 2 + +#define G_CD_NOISE 128 + +#define G_TRI_FILL 200 + +#define G_FILLRECT 246 + +#define G_SETPRIMCOLOR 250 + +#define G_TEXRECTFLIP 229 + +#define G_MWO_MATRIX_WX_WY_F 56 + +#define G_MDSFT_ZSRCSEL 2 + +#define G_RDPSETOTHERMODE 239 + +#define G_IM_SIZ_16b_LINE_BYTES 2 + +#define G_TRI_SHADE_TXTR_ZBUFF 207 + +#define G_TF_POINT 0 + +#define G_CCMUX_SCALE 6 + +#define G_MWO_MATRIX_ZX_ZY_I 16 + +#define TEX_EDGE 0 + +#define G_MOVEWORD -68 + +#define G_RM_PASS 201850880 + +#define G_MAXFBZ 16383 + +#define CVG_DST_CLAMP 0 + +#define G_RDPFULLSYNC 233 + +#define G_DL_NOPUSH 1 + +#define G_CCMUX_COMBINED 0 + +#define G_TX_WRAP 0 + +#define G_MWO_POINT_ST 20 + +#define G_TRI_TXTR_ZBUFF 203 + +#define G_TRI1 -65 + +#define ZMODE_INTER 1024 + +#define G_SETOTHERMODE_L.conflict 185 + +#define G_MDSFT_ALPHACOMPARE 0 + +#define G_IM_SIZ_32b_SHIFT 0 + +#define G_AC_DITHER 3 + +#define G_TC_FILTCONV 2560 + +#define G_MTX_LOAD 2 + +#define G_CCMUX_PRIMITIVE 3 + +#define G_MW_LIGHTCOL 10 + +#define G_MW_POINTS 12 + +#define G_TC_FILT 3072 + +#define G_IM_SIZ_4b_INCR 3 + +#define G_MDSFT_ALPHADITHER 4 + +#define G_CCMUX_SHADE_ALPHA 11 + +#define ZMODE_OPA 0 + +#define G_BL_A_MEM 1 + +#define G_MWO_MATRIX_ZX_ZY_F 48 + +#define G_TP_NONE 0 + +#define G_SETOTHERMODE_H -70 + +#define FR_NEG_FRUSTRATIO_6 6 + +#define G_RDP_TRI_TXTR_MASK 2 + +#define FR_NEG_FRUSTRATIO_5 5 + +#define G_SETOTHERMODE_L -71 + +#define FR_NEG_FRUSTRATIO_4 4 + +#define FR_NEG_FRUSTRATIO_3 3 + +#define FR_NEG_FRUSTRATIO_2 2 + +#define FR_NEG_FRUSTRATIO_1 1 + +#define G_MWO_MATRIX_XX_XY_I 0 + +#define G_TX_DXT_FRAC 11 + +#define G_TT_RGBA16 32768 + +#define G_ZS_PIXEL 0 + +#define G_MW_MATRIX 0 + +#define G_CCMUX_PRIMITIVE_ALPHA 10 + +#define G_LOD 1048576 + +#define G_TRI_SHADE 204 + +#define G_MV_L5 144 + +#define G_CYC_1CYCLE 0 + +#define G_MV_L4 142 + +#define G_MV_L3 140 + +#define G_SETCOMBINE 252 + +#define G_MV_L2 138 + +#define G_IM_SIZ_16b_LOAD_BLOCK 2 + +#define G_MV_L7 148 + +#define G_MV_L6 146 + +#define G_CCMUX_LOD_FRACTION 13 + +#define G_RDP_TRI_ZBUFF_MASK 1 + +#define G_TEXTURE -69 + +#define G_TEXTURE_IMAGE_FRAC 2 + +#define G_MW_NUMLIGHT 2 + +#define G_TD_CLAMP 0 + +#define G_MDSFT_TEXTDETAIL 17 + +#define G_IM_FMT_RGBA 0 + +#define G_SETTILE 245 + +#define G_CCMUX_TEXEL1_ALPHA 9 + +#define G_BL_A_IN 0 + +#define G_MV_L1 136 + +#define G_MV_L0 134 + +#define G_IM_SIZ_32b 3 + +#define G_AD_DISABLE 48 + +#define G_IM_SIZ_4b_BYTES 0 + +#define IM_RD 64 + +#define G_IM_SIZ_16b_BYTES 2 + +#define G_CCMUX_TEXEL1 2 + +#define G_CCMUX_TEXEL0 1 + +#define G_BL_CLR_IN 0 + +#define G_CD_BAYER 64 + +#define G_SETENVCOLOR 251 + +#define G_MV_MATRIX_4 156 + +#define G_MWO_POINT_ZSCREEN 28 + +#define G_RDPLOADSYNC 230 + +#define G_ZS_PRIM 4 + +#define G_MDSFT_RGBDITHER 6 + +#define G_RDPHALF_CONT -78 + +#define G_RM_FOG_SHADE_A 3355443200 + +#define G_AC_NONE 0 + +#define G_IM_SIZ_4b_SHIFT 2 + +#define G_MV_MATRIX_3 154 + +#define G_TF_AVERAGE 12288 + +#define G_MV_MATRIX_2 152 + +#define G_MV_MATRIX_1 158 + +#define G_CCMUX_TEXEL0_ALPHA 8 + +#define G_TX_NOLOD 0 + +#define G_MW_PERSPNORM 14 + +#define G_SETKEYGB 234 + +#define G_IM_SIZ_32b_LOAD_BLOCK 3 + +#define G_SETBLENDCOLOR 249 + +#define G_SETTIMG 253 + +#define G_CV_K2 -89 + +#define G_CV_K1 -43 + +#define G_CV_K0 175 + +#define G_RM_FOG_PRIM_A 3288334336 + +#define G_BL_0 3 + +#define G_TRI_SHADE_TXTR 206 + +#define G_LINE3D -75 + +#define G_BL_1 2 + +#define G_TEXTURE_GEN_LINEAR 524288 + +#define G_CV_K5 42 + +#define G_TX_MIRROR 1 + +#define G_CV_K4 114 + +#define G_CV_K3 222 + +#define G_RDP_TRI_SHADE_MASK 4 + +#define G_IM_SIZ_16b_INCR 0 + +#define G_TRI_TXTR 202 + +#define ALPHA_CVG_SEL 8192 + +#define CVG_DST_FULL 512 + +#define G_CULL_BACK 8192 + +#define G_MTX_NOPUSH 0 + +#define G_MTX_MUL 0 + +#define G_IM_SIZ_32b_BYTES 4 + +#define G_AD_NOISE 32 + +#define G_IM_SIZ_DD 5 + +#define G_ACMUX_PRIM_LOD_FRAC 6 + +#define G_MWO_FOG 0 + +#define G_MWO_POINT_XYSCREEN 24 + +#define G_MWO_MATRIX_XX_XY_F 32 + +#define G_ZBUFFER 1 + +typedef ulong size_t; + +typedef struct exception exception, *Pexception; + +struct exception { + int anonymous_0; + int anonymous_1; + void * error; +}; + +typedef struct c_itementry c_itementry, *Pc_itementry; + +typedef struct object_header object_header, *Pobject_header; + +typedef struct object_standard object_standard, *Pobject_standard; + +struct object_standard { + u16 extrascale:2; + u8 hidden2:1; + u8 type:1; + u16 obj; + u16 pad; + u32 flags; + u32 flags2; + void * runtime_ptr_obj_posdata; + void * runtime_ptr_obj_instance_controller; + void * runtime_MATRIX0; + void * runtime_MATRIX1; + void * runtime_MATRIX2; + void * runtime_MATRIX3; + void * runtime_MATRIX4; + void * runtime_MATRIX5; + void * runtime_MATRIX6; + void * runtime_MATRIX7; + void * runtime_MATRIX8; + void * runtime_MATRIX9; + void * runtime_MATRIXA; + void * runtime_MATRIXB; + void * runtime_MATRIXC; + void * runtime_MATRIXD; + void * runtime_MATRIXE; + void * runtime_MATRIXF; + f32 runtime_x_pos; + f32 runtime_y_pos; + f32 runtime_z_pos; + int runtime_bitflags; + int ptr_allocated_collisiondata_block; + int field_6C; + float field_70; + short damage; + short maxdamage; + char field_78; + char field_79; + char field_7A; + char field_7B; + char field_7C; + char field_7D; + char field_7E; + char field_7F; +}; + +struct c_itementry { + struct object_header * header; + void * filename; + float anonymous_1; + float anonymous_2; + int anonymous_3; +}; + +struct object_header { + int offset_obj_table; + struct object_standard * ptr_archetype; + int offset_obj_offset_block; + short num_offset_entries; + short num_object_grps; + float anonymous_4; + short num_table_entries; + short num_image_entries; + int offset_img_declaration; + int is_loaded_in_mem; +}; + +typedef struct $732F89B2624665A943E52F38E86E4CBC $732F89B2624665A943E52F38E86E4CBC, *P$732F89B2624665A943E52F38E86E4CBC; + +struct $732F89B2624665A943E52F38E86E4CBC { +}; + +typedef struct fileentry fileentry, *Pfileentry; + +struct fileentry { + s32 index; + string * filename; + s32 hw_address; +}; + +typedef enum KSEG { +} KSEG; + +typedef struct $B84834CAACFDCE10B1334219ADA11FDA $B84834CAACFDCE10B1334219ADA11FDA, *P$B84834CAACFDCE10B1334219ADA11FDA; + +typedef struct $B84834CAACFDCE10B1334219ADA11FDA ALGlobals; + +typedef struct ALSynth ALSynth, *PALSynth; + +typedef struct ALPlayer_s ALPlayer_s, *PALPlayer_s; + +typedef struct ALPlayer_s ALPlayer; + +typedef ALDMAproc (* ALDMANew)(void *); + +typedef struct ALHeap ALHeap, *PALHeap; + +typedef s32 ALMicroTime; + +typedef ALMicroTime (* ALVoiceHandler)(void *); + +struct ALSynth { + ALPlayer * head; + ALLink pFreeList; + ALLink pAllocList; + ALLink pLameList; + s32 paramSamples; + s32 curSamples; + ALDMANew dma; + struct ALHeap * heap; + struct ALParam_s * paramList; + struct ALMainBus_s * mainBus; + struct ALAuxBus_s * auxBus; + struct ALFilter_s * outputFilter; + s32 numPVoices; + s32 maxAuxBusses; + s32 outputRate; + s32 maxOutSamples; +}; + +struct $B84834CAACFDCE10B1334219ADA11FDA { + struct ALSynth drvr; +}; + +struct ALHeap { + u8 * base; + u8 * cur; + s32 len; + s32 count; +}; + +struct ALPlayer_s { + struct ALPlayer_s * next; + void * clientData; + ALVoiceHandler handler; + ALMicroTime callTime; + s32 samplesLeft; +}; + +typedef struct p_itementry p_itementry, *Pp_itementry; + +typedef struct PitemZ_header PitemZ_header, *PPitemZ_header; + +typedef struct item_related item_related, *Pitem_related; + +struct item_related { + short num_entries_in_block; + short field_2; + struct prop_pos_data * ptr_block; + short total_cmd_indexval; + short field_A; +}; + +struct PitemZ_header { + int microcode_entry_num; + struct item_related * anonymous_1; + short anonymous_2; + short field_E; + float drawdistance; + float anonymous_4; + int anonymous_5; + int anonymous_6; + int anonymous_7; +}; + +struct p_itementry { + struct PitemZ_header * header; + void * filename; + float scale; +}; + +typedef struct lightfixture lightfixture, *Plightfixture; + +struct lightfixture { + short index; + short RESERVED; + union Gfx * ptr_start_pertinent_DL; + int ptr_end_pertinent_DL; +}; + +typedef struct weapon_firing_animation_table weapon_firing_animation_table, *Pweapon_firing_animation_table; + +struct weapon_firing_animation_table { + s32 anonymous_0; + f32 anonymous_1; + f32 anonymous_2; + f32 anonymous_3; + f32 anonymous_4; + f32 anonymous_5; + f32 anonymous_6; + f32 anonymous_7; + f32 anonymous_8; + f32 anonymous_9; + f32 anonymous_10; + f32 anonymous_11; + f32 anonymous_12; + f32 anonymous_13; + f32 anonymous_14; + f32 anonymous_15; + f32 anonymous_16; + f32 anonymous_17; +}; + +typedef struct Gitemheader Gitemheader, *PGitemheader; + +typedef struct model_data model_data, *Pmodel_data; + +struct Gitemheader { + int offset_objtable; + struct model_data * guntype_modeldata; + int offset_objblock; + short num05soffset_entries; + short num_objgroups; + float drawdistance; + u16 num_entries; + u16 num_images; + int offset_imgdecl; + u32 isloaded; +}; + +struct model_data { + u32 anonymous_0; + struct prop_pos_data * anonymous_1; + u32 anonymous_2; +}; + +typedef struct mp_weaponset_weapon mp_weaponset_weapon, *Pmp_weaponset_weapon; + +struct mp_weaponset_weapon { + int anonymous_0; + int anonymous_1; + float anonymous_2; + int anonymous_3; + int anonymous_4; + int anonymous_5; +}; + +typedef struct ramrom_struct ramrom_struct, *Pramrom_struct; + +typedef struct ramrom_entry ramrom_entry, *Pramrom_entry; + +struct ramrom_entry { + int ROMaddress; + int is_locked; +}; + +struct ramrom_struct { + struct ramrom_entry dam1; + struct ramrom_entry dam2; + struct ramrom_entry facility1; + struct ramrom_entry facility2; + struct ramrom_entry facility3; + struct ramrom_entry runway1; + struct ramrom_entry runway2; + struct ramrom_entry bunker1_1; + struct ramrom_entry bunker1_2; + struct ramrom_entry silo1; + struct ramrom_entry silo2; + struct ramrom_entry frigate1; + struct ramrom_entry frigate2; + struct ramrom_entry train; + struct ramrom_entry null; +}; + +typedef struct $9574A80C820E0B95666ECD0A99E160BE $9574A80C820E0B95666ECD0A99E160BE, *P$9574A80C820E0B95666ECD0A99E160BE; + +typedef struct $9574A80C820E0B95666ECD0A99E160BE ALSeqData; + +struct $9574A80C820E0B95666ECD0A99E160BE { + u8 * offset; +}; + +typedef struct mp_stage_playercount mp_stage_playercount, *Pmp_stage_playercount; + +struct mp_stage_playercount { + short stage; + char min; + char max; +}; + +typedef struct music_setup music_setup, *Pmusic_setup; + +struct music_setup { + short stage_id; + short main_music; + short bg_sound; + short xtrack; +}; + +typedef struct MP_game_length_settings MP_game_length_settings, *PMP_game_length_settings; + +struct MP_game_length_settings { + u16 text_preset; + u16 padding; + int time; + int points; +}; + + +// WARNING! conflicting data type names: /GE Current Master.h/ALVoiceHandler - /libaudio.h/ALVoiceHandler + +typedef struct memoryallocation memoryallocation, *Pmemoryallocation; + +struct memoryallocation { + int number; + void * string; +}; + +typedef struct $62F109188EB304B8EC258AA93B51CC96 $62F109188EB304B8EC258AA93B51CC96, *P$62F109188EB304B8EC258AA93B51CC96; + +struct $62F109188EB304B8EC258AA93B51CC96 { +}; + + +// WARNING! conflicting data type names: /GE Current Master.h/rgba_val - /bondgame.h/rgba_val + + +// WARNING! conflicting data type names: /GE Current Master.h/LEVEL_SOLO_SEQUENCE - /bondgame.h/LEVEL_SOLO_SEQUENCE + +typedef struct mcm_layout mcm_layout, *Pmcm_layout; + +struct mcm_layout { + int xpos; + int ypos; +}; + +typedef struct GUARDdata GUARDdata, *PGUARDdata; + +struct GUARDdata { + u16 chrnum; + char accuracyrating; + char speedrating; + char firecount.left; + char firecount.right; + char headnum; + enum guard_action_type actiontype; + char sleep; + char invalidmove; + char numclosearghs; + char numarghs; + char fadealpha; + char field_D; + char field_E; + char bodynum; + char beligerancy; + char field_11; + short special_bitflags; + int guard_bitflags; + int POSdata_pointer; + int MODELdata_pointer; + int pertains_to_action61; + f32 chrwidth; + int chrheight; + int bond_position; + int field_30; + short field_34; + char field_36; + char field_37; + char field_38; + char field_39; + char field_3A; + char field_3B; + int path_target_position; + int field_40; + int field_44; + int field_48; + int field_4C; + int field_50; + int field_54; + char type_of_motion; + char distance_counter_or_something; + short distance_to_target; + int field_5C; + int target_position; + int field_64; + int field_68; + int field_6C; + int path_segment_coverage; + int path_segment_length; + int field_78; + int field_7C; + int field_80; + int field_84; + int field_88; + int field_8C; + int field_90; + int segment_coverage; + int segment_length; + int field_9C; + int field_A0; + float field_A4; + float field_A8; + float clipping_height; + float field_B0; + float field_B4; + float field_B8; + struct xyzpoint prevpos; + int field_C8; + int field_CC; + float reaction_time; + int last_bond_detection_time; + float field_D8; + float field_DC; + float field_E0; + int lastshooter; + int timeshooter; + float hearingscale; + int field_F0; + char field_F4; + char field_F5; + char field_F6; + char field_F7; + char field_F8; + char field_F9; + char field_FA; + char field_FB; + int damage; + f32 maxdamage; + int action_block_pointer; + short action_block_offset; + short action_block_return; + char userbyte1; + char userbyte2; + char guardtype_bitflags_scientist; + char randomvalue; + int loopcounter; + short preset_of_2328_object_to_interact_with; + short FC_target; + short FA_target; + short FB_target; + int field_11C; + int field_120; + int field_124; + int field_128; + int field_12C; + int field_130; + int field_134; + int field_138; + float field_13C; + float field_140; + float field_144; + float field_148; + float field_14C; + int field_150; + int field_154; + int field_158; + int field_15C; + int handle_positiondata[2]; + int ptr_SEbuffer1; + int ptr_SEbuffer2; + int ptr_SEbuffer3; + int ptr_SEbuffer4; + int field_178; + int field_17C; + char field_180; + char field_181; + char field_182; + char field_183; + int field_184; + int field_188; + int field_18C; + int field_190; + int field_194; + int field_198; + int field_19C; + int field_1A0; + int field_1A4; + int field_1A8; + char field_1AC; + char field_1AD; + char field_1AE; + char field_1AF; + int field_1B0; + int field_1B4; + int field_1B8; + int field_1BC; + int field_1C0; + int field_1C4; + int field_1C8; + int field_1CC; + int field_1D0; + int field_1D4; + int handle_positiondata_hat; +}; + +typedef struct intro_animation intro_animation, *Pintro_animation; + +struct intro_animation { + enum ANIMATIONS animID; + float startframeoffset; + float playback_speed; + int camera_preset; +}; + +typedef struct $4BEAA6302150DFF77A6D6B5C2F812979 $4BEAA6302150DFF77A6D6B5C2F812979, *P$4BEAA6302150DFF77A6D6B5C2F812979; + +struct $4BEAA6302150DFF77A6D6B5C2F812979 { + float col[3]; + float pos[3]; + float a1; + float a2; +}; + +typedef struct playerperm playerperm, *Pplayerperm; + +struct playerperm { + int shotcount[7]; + int killcount; + int ggkillcount; + int kills[4]; + int drawplayercount; + float distance; + int backshotcount; + float armourcount; + int fastest2kills; + int slowest2kills; + int longestlife; + s32 shortestlife; + int most_killed_one_life; + int most_killed_one_time; + float handicap; + int flag_counter; + float player_perspective_height; + char order_out_in_yolt; + char have_token_or_goldengun; + char autoaim; + char sight; + int killed_civilians; +}; + +typedef struct $B24B31290AB3F51AC02030577BB60BEE $B24B31290AB3F51AC02030577BB60BEE, *P$B24B31290AB3F51AC02030577BB60BEE; + +struct $B24B31290AB3F51AC02030577BB60BEE { +}; + +typedef struct $1D3114E51680E29F8350BFE921C29711 $1D3114E51680E29F8350BFE921C29711, *P$1D3114E51680E29F8350BFE921C29711; + +typedef struct $1D3114E51680E29F8350BFE921C29711 ALKeyMap; + +struct $1D3114E51680E29F8350BFE921C29711 { + u8 velocityMin; + u8 velocityMax; + u8 keyMin; + u8 keyMax; + u8 keyBase; + s8 detune; +}; + +typedef struct enviroment_struct enviroment_struct, *Penviroment_struct; + +struct enviroment_struct { + int index; + float anonymous_0; + float anonymous_1; + float anonymous_2; + float anonymous_3; + float anonymous_4; + int anonymous_5; + int anonymous_6; + int anonymous_7; + int anonymous_8; + int anonymous_9; + float anonymous_10; + int anonymous_11; + float anonymous_12; + float anonymous_13; + float anonymous_14; + int anonymous_15; + float anonymous_16; + int anonymous_17; + int anonymous_18; + float anonymous_19; + float anonymous_20; + float anonymous_21; +}; + + +// WARNING! conflicting data type names: /GE Current Master.h/BODIES - /bondgame.h/BODIES + +typedef struct $2903A050EBC6442F98207E1AE6ED2D96 $2903A050EBC6442F98207E1AE6ED2D96, *P$2903A050EBC6442F98207E1AE6ED2D96; + +typedef struct $2903A050EBC6442F98207E1AE6ED2D96 ALSndPlayer; + +typedef struct ALEventQueue ALEventQueue, *PALEventQueue; + +typedef struct ALEvent ALEvent, *PALEvent; + +typedef union _union_144 _union_144, *P_union_144; + +typedef struct ALMIDIEvent ALMIDIEvent, *PALMIDIEvent; + +typedef struct ALTempoEvent ALTempoEvent, *PALTempoEvent; + +typedef struct ALEndEvent ALEndEvent, *PALEndEvent; + +typedef struct ALNoteEvent ALNoteEvent, *PALNoteEvent; + +typedef struct ALVolumeEvent ALVolumeEvent, *PALVolumeEvent; + +typedef struct ALSeqpLoopEvent ALSeqpLoopEvent, *PALSeqpLoopEvent; + +typedef struct ALSeqpVolEvent ALSeqpVolEvent, *PALSeqpVolEvent; + +typedef struct ALSeqpPriorityEvent ALSeqpPriorityEvent, *PALSeqpPriorityEvent; + +typedef struct ALSeqpSeqEvent ALSeqpSeqEvent, *PALSeqpSeqEvent; + +typedef struct ALSeqpBankEvent ALSeqpBankEvent, *PALSeqpBankEvent; + +typedef struct ALOscEvent ALOscEvent, *PALOscEvent; + +typedef struct ALSeqMarker ALSeqMarker, *PALSeqMarker; + +typedef struct ALBank_s ALBank_s, *PALBank_s; + +typedef struct ALBank_s ALBank; + +typedef struct ALVoiceState_s ALVoiceState_s, *PALVoiceState_s; + +typedef struct ALInstrument ALInstrument, *PALInstrument; + +typedef struct ALVoice_s ALVoice; + +typedef struct ALSound_s ALSound_s, *PALSound_s; + +typedef struct ALSound_s ALSound; + +typedef struct ALEnvelope ALEnvelope, *PALEnvelope; + + +// WARNING! conflicting data type names: /libaudio.h/ALKeyMap - /GE Current Master.h/ALKeyMap + +struct ALSeqpSeqEvent { + void * seq; +}; + +struct ALVolumeEvent { + struct ALVoice_s * voice; + ALMicroTime delta; + u8 vol; +}; + +struct ALSeqpPriorityEvent { + u8 chan; + u8 priority; +}; + +struct ALSeqpBankEvent { + ALBank * bank; +}; + +struct ALMIDIEvent { + s32 ticks; + u8 status; + u8 byte1; + u8 byte2; + u32 duration; +}; + +struct ALOscEvent { + struct ALVoiceState_s * vs; + void * oscState; + u8 chan; +}; + +struct ALTempoEvent { + s32 ticks; + u8 status; + u8 type; + u8 len; + u8 byte1; + u8 byte2; + u8 byte3; +}; + +struct ALSeqpLoopEvent { + struct ALSeqMarker * start; + struct ALSeqMarker * end; + s32 count; +}; + +struct ALNoteEvent { + struct ALVoice_s * voice; +}; + +struct ALEndEvent { + s32 ticks; + u8 status; + u8 type; + u8 len; +}; + +struct ALSeqpVolEvent { + s16 vol; +}; + +union _union_144 { + struct ALMIDIEvent midi; + struct ALTempoEvent tempo; + struct ALEndEvent end; + struct ALNoteEvent note; + struct ALVolumeEvent vol; + struct ALSeqpLoopEvent loop; + struct ALSeqpVolEvent spvol; + struct ALSeqpPriorityEvent sppriority; + struct ALSeqpSeqEvent spseq; + struct ALSeqpBankEvent spbank; + struct ALOscEvent osc; +}; + +struct ALEvent { + s16 type; + union _union_144 msg; +}; + +struct ALBank_s { + s16 instCount; + u8 flags; + u8 pad; + s32 sampleRate; + struct ALInstrument * percussion; + struct ALInstrument * instArray[1]; +}; + +struct ALInstrument { + u8 volume; + ALPan pan; + u8 priority; + u8 flags; + u8 tremType; + u8 tremRate; + u8 tremDepth; + u8 tremDelay; + u8 vibType; + u8 vibRate; + u8 vibDepth; + u8 vibDelay; + s16 bendRange; + s16 soundCount; + ALSound * soundArray[1]; +}; + +struct ALEventQueue { + ALLink freeList; + ALLink allocList; + s32 eventCount; +}; + +struct ALVoiceState_s { + struct ALVoiceState_s * next; + ALVoice voice; + ALSound * sound; + ALMicroTime envEndTime; + f32 pitch; + f32 vibrato; + u8 envGain; + u8 channel; + u8 key; + u8 velocity; + u8 envPhase; + u8 phase; + u8 tremelo; + u8 flags; +}; + +struct ALEnvelope { + ALMicroTime attackTime; + ALMicroTime decayTime; + ALMicroTime releaseTime; + u8 attackVolume; + u8 decayVolume; +}; + +struct ALSound_s { + struct ALEnvelope * envelope; + struct ALKeyMap * keyMap; + ALWaveTable * wavetable; + ALPan samplePan; + u8 sampleVolume; + u8 flags; +}; + +struct ALSeqMarker { + u8 * curPtr; + s32 lastTicks; + s32 curTicks; + s16 lastStatus; +}; + +struct $2903A050EBC6442F98207E1AE6ED2D96 { + ALPlayer node; + struct ALEventQueue evtq; + struct ALEvent nextEvent; + struct ALSynth * drvr; + void * sndState; +}; + + +// WARNING! conflicting data type names: /GE Current Master.h/PROJECTILES - /bondgame.h/PROJECTILES + +typedef struct solo_target_times solo_target_times, *Psolo_target_times; + +struct solo_target_times { + short agent_time; + short secret_agent_time; + short OO_agent_time; +}; + + +// WARNING! conflicting data type names: /GE Current Master.h/video_settings - /video.h/video_settings + + +// WARNING! conflicting data type names: /GE Current Master.h/LEVEL_INDEX - /bondgame.h/LEVEL_INDEX + +typedef struct ejected_cart ejected_cart, *Pejected_cart; + +struct ejected_cart { + struct Gitemheader * header; + u8 * text; +}; + +typedef struct mission_folder_setup mission_folder_setup, *Pmission_folder_setup; + +struct mission_folder_setup { + void * string_ptr; + short folder_text_preset; + short icon_text_preset; + int stage_id; + int unknown; + int type; + int mission_num; + void * briefing_name_ptr; +}; + +typedef struct MP_selectable_chars MP_selectable_chars, *PMP_selectable_chars; + + +// WARNING! conflicting data type names: /GE Current Master.h/HEADS - /bondgame.h/HEADS + +struct MP_selectable_chars { + short text_preset; + char gender; + char select_photo; + short body; + enum HEADS head; + f32 pov; +}; + +typedef struct $DD54060F307CC511C1231C522D614BD1 $DD54060F307CC511C1231C522D614BD1, *P$DD54060F307CC511C1231C522D614BD1; + +struct $DD54060F307CC511C1231C522D614BD1 { + uchar * base; + int fmt; + int siz; + int xsize; + int ysize; + int lsize; + int addr; + int w; + int h; + int s; + int t; +}; + +typedef struct explosion_death_animation explosion_death_animation, *Pexplosion_death_animation; + +struct explosion_death_animation { + int anonymous_0; + int anonymous_1; + float anonymous_2; + float anonymous_3; + float anonymous_4; + float anonymous_5; + float anonymous_6; +}; + // WARNING! conflicting data type names: /GE Current Master.h/ALDMAproc - /libaudio.h/ALDMAproc @@ -11528,26 +13806,6 @@ struct $5B527B901AC7720CA636E505FD36A43E { u8 lastStatus[16]; }; -typedef struct video_settings video_settings, *Pvideo_settings; - -struct video_settings { - int anonymous_0; - short txtClipW; - short txtClipH; - float far; - float scale; - float aspect; - float anonymous_6; - short anonymous_7; - short anonymous_8; - short width; - short height; - short ulx; - short uly; - int anonymous_12; - int frameb; -}; - typedef struct MP_sight_aim_settings MP_sight_aim_settings, *PMP_sight_aim_settings; struct MP_sight_aim_settings { @@ -11572,19 +13830,47 @@ struct mp_weapon_set_text_entry { struct mp_weaponset_weapon * entries; }; -typedef uint vu32; +typedef struct room_index room_index, *Proom_index; + +struct room_index { + short bitflags; + char model_bin_loaded; + char bitflags2; + void * ptr_point_index; + void * ptr_expanded_mapping_info; + void * ptr_secondary_expanded_mapping_info; + int csize_point_index_binary; + int csize_primary_DL_binary; + int csize_secondary_DL_binary; + int usize_point_index_binary; + int usize_primary_DL_binary; + int usize_secondary_DL_binary; + int cur_room_totalsize; + void * ptr_unique_collision_points; + int bitflags3; + char room_loaded_mask; + char field_35; + short field_36; + float minxbounds; + float minybounds; + float minzbounds; + float maxxbounds; + float maxybounds; + float maxzbounds; +}; + + +// WARNING! conflicting data type names: /GE Current Master.h/vu32 - /types.h/vu32 typedef struct weapon_stats weapon_stats, *Pweapon_stats; struct weapon_stats { float field_0; - float pos_x; - float pos_y; - float pos_z; + struct xyzpoint position; float field_0x10; float field_0x14; float field_0x18; - int ammotype; + enum AMMOTYPES ammotype; short mag_size; short time_between_shots; char objects_shoot_through; @@ -11680,14 +13966,6 @@ struct TLB_manager_table { struct TLB_manager_table_entry entry[128]; }; -typedef struct fileentry fileentry, *Pfileentry; - -struct fileentry { - int index; - string * ptr_name; - int hw_address; -}; - typedef struct $732F89B2624665A943E52F38E86E4CBC OSLogFileHdr; typedef struct image_entry image_entry, *Pimage_entry; @@ -11808,15 +14086,6 @@ struct struct_0 { int anonymous_6; }; -typedef struct lightfixture lightfixture, *Plightfixture; - -struct lightfixture { - short index; - short RESERVED; - int ptr_start_pertinent_DL; - int ptr_end_pertinent_DL; -}; - typedef struct struct_5 struct_5, *Pstruct_5; struct struct_5 { @@ -11825,7 +14094,8 @@ struct struct_5 { int anonymous_2; }; -typedef int vs32; + +// WARNING! conflicting data type names: /GE Current Master.h/vs32 - /types.h/vs32 typedef struct struct_4 struct_4, *Pstruct_4; @@ -11906,52 +14176,8 @@ struct explosion_animation { int count; }; -typedef struct object_standard object_standard, *Pobject_standard; -struct object_standard { - short extrascale; - char hidden2; - char type; - short obj; - short pad; - u32 flags; - u32 flags2; - int runtime_ptr_obj_posdata; - int runtime_ptr_obj_instance_controller; - int runtime_MATRIX0; - int runtime_MATRIX1; - int runtime_MATRIX2; - int runtime_MATRIX3; - int runtime_MATRIX4; - int runtime_MATRIX5; - int runtime_MATRIX6; - int runtime_MATRIX7; - int runtime_MATRIX8; - int runtime_MATRIX9; - int runtime_MATRIXA; - int runtime_MATRIXB; - int runtime_MATRIXC; - int runtime_MATRIXD; - int runtime_MATRIXE; - int runtime_MATRIXF; - float runtime_x_pos; - float runtime_y_pos; - float runtime_z_pos; - int runtime_bitflags; - int ptr_allocated_collisiondata_block; - int field_6C; - float field_70; - short damage; - short maxdamage; - char field_78; - char field_79; - char field_7A; - char field_7B; - char field_7C; - char field_7D; - char field_7E; - char field_7F; -}; +// WARNING! conflicting data type names: /GE Current Master.h/object_standard - /bondtypes.h/object_standard typedef struct MP_handicap_menu MP_handicap_menu, *PMP_handicap_menu; @@ -11996,6 +14222,17 @@ typedef void (* ALOscStop)(void *); typedef u8 ALFxId; +struct ALSeq_s { + u8 * base; + u8 * trackStart; + u8 * curPtr; + s32 lastTicks; + s32 len; + f32 qnpt; + s16 division; + s16 lastStatus; +}; + struct ALChanState { struct ALInstrument * instrument; s16 bendRange; @@ -12030,17 +14267,6 @@ struct $3875EDF92ACCFC55C5A87BF2DE611375 { struct ALSeqMarker * loopEnd; }; -struct ALSeq_s { - u8 * base; - u8 * trackStart; - u8 * curPtr; - s32 lastTicks; - s32 len; - f32 qnpt; - s16 division; - s16 lastStatus; -}; - typedef struct $8A2C38822146935C7EE1F49BBD28923A $8A2C38822146935C7EE1F49BBD28923A, *P$8A2C38822146935C7EE1F49BBD28923A; struct $8A2C38822146935C7EE1F49BBD28923A { @@ -12088,11 +14314,26 @@ union OSTask { longlong force_structure_alignment; }; +struct SCClient_s { + struct SCClient_s * next; + OSMesgQueue * msgQ; +}; + struct OSScMsg { short type; char misc[30]; }; +struct OSScTask_s { + struct OSScTask_s * next; + u32 state; + u32 flags; + void * framebuffer; + union OSTask list; + OSMesgQueue * msgQ; + OSMesg msg; +}; + struct $4DC9E63407FE56118E8436A326234A26 { struct OSScMsg retraceMsg; struct OSScMsg prenmiMsg; @@ -12110,21 +14351,6 @@ struct $4DC9E63407FE56118E8436A326234A26 { OSScTask * curRDPTask; }; -struct SCClient_s { - struct SCClient_s * next; - OSMesgQueue * msgQ; -}; - -struct OSScTask_s { - struct OSScTask_s * next; - u32 state; - u32 flags; - void * framebuffer; - union OSTask list; - OSMesgQueue * msgQ; - OSMesg msg; -}; - typedef struct $31E12A8E501C96F6AFEABF3D9309C7AB $31E12A8E501C96F6AFEABF3D9309C7AB, *P$31E12A8E501C96F6AFEABF3D9309C7AB; struct $31E12A8E501C96F6AFEABF3D9309C7AB { @@ -12443,6 +14669,7 @@ typedef enum controller_buttons { L_CBUTTONS=2, L_JPAD=512, L_TRIG=32, + NONE=0, R_CBUTTONS=1, R_JPAD=256, R_TRIG=16, @@ -12751,35 +14978,6 @@ typedef struct $698E1586F824213C2C7D30F8DE84E678 ALSynConfig; typedef struct $EF3ACF09A692D55A7037B16E3DC74014 OSLogItem; -typedef struct room_index room_index, *Proom_index; - -struct room_index { - short bitflags; - char model_bin_loaded; - char bitflags2; - int ptr_point_index; - int ptr_expanded_mapping_info; - int ptr_secondary_expanded_mapping_info; - int csize_point_index_binary; - int csize_primary_DL_binary; - int csize_secondary_DL_binary; - int usize_point_index_binary; - int usize_primary_DL_binary; - int usize_secondary_DL_binary; - int cur_room_totalsize; - int ptr_unique_collision_points; - int bitflags3; - char room_loaded_mask; - char field_35; - short field_36; - float minxbounds; - float minybounds; - float minzbounds; - float maxxbounds; - float maxybounds; - float maxzbounds; -}; - typedef struct displaymode displaymode, *Pdisplaymode; struct displaymode { @@ -12811,6 +15009,9 @@ typedef enum LOGIC { } LOGIC; +// WARNING! conflicting data type names: /GE Current Master.h/ITEM_IDS - /bondgame.h/ITEM_IDS + + // WARNING! conflicting data type names: /GE Current Master.h/ALHeap - /libaudio.h/ALHeap typedef struct $4D1BF14BE913BD460FFC9CE94281257F ALSeqpConfig; @@ -13023,6 +15224,24 @@ typedef enum enum { #define OS_SC_NEEDS_RDP 1 +// WARNING! conflicting data type names: /memp.h/s_mempBANK - /s_mempBANK + +typedef struct s_mempMEMSTARTS s_mempMEMSTARTS, *Ps_mempMEMSTARTS; + +struct s_mempMEMSTARTS { + s32 bank1start; + s32 bank2start; + s32 bank3start; + s32 bank4start; + s32 bank5start; + s32 bank6start; + s32 bank7start; +}; + + +// WARNING! conflicting data type names: /memp.h/s_mempMVALS - /s_mempMVALS + + // WARNING! conflicting data type names: /ultralog.h/OSLog - /GE Current Master.h/OSLog @@ -13039,19 +15258,107 @@ typedef enum enum { typedef u32 OSYieldResult; +#define M_TASK_FLAG0 1 + +#define SPSTATUS_SIGNAL7_SET 16384 + +#define M_TASK_FLAG1 2 + +#define SPSTATUS_SIGNAL3_SET 1024 + +#define OS_YIELD_DATA_SIZE 2304 + +#define M_HVQTASK 6 + +#define SPSTATUS_SET_SSTEP 64 + +#define SPSTATUS_SIGNAL5_SET 4096 + +#define SPSTATUS_IO_FULL 16 + +#define SPSTATUS_SIGNAL1_SET 256 + +#define SPSTATUS_SET_INTR 16 + +#define OS_TASK_YIELDED 1 + +#define OS_TASK_DP_WAIT 2 + +#define SPSTATUS_SINGLE_STEP 32 + +#define SPSTATUS_SET_HALT 2 + +#define SPSTATUS_DMA_FULL 8 + +#define SPSTATUS_CLEAR_BROKE 4 + +#define SPSTATUS_SIGNAL6_SET 8192 + +#define SPSTATUS_INTERRUPT_ON_BREAK 64 + +#define SPSTATUS_CLEAR_INTR 8 + +#define SPSTATUS_DMA_BUSY 4 + +#define SPSTATUS_CLEAR_SSTEP 32 + +#define SPSTATUS_SIGNAL4_SET 2048 + +#define SPSTATUS_CLEAR_INTR_ON_BREAK 128 + +#define M_HVQMTASK 7 + #define OS_TASK_USR3 128 #define OS_TASK_USR2 64 #define OS_TASK_USR1 32 -#define OS_YIELD_DATA_SIZE 2304 +#define SPSTATUS_BROKE 2 + +#define SPSTATUS_CLEAR_HALT 1 + +#define SPSTATUS_SIGNAL0_SET 128 + +#define SPSTATUS_SET_SIGNAL6 8388608 + +#define SPSTATUS_SET_SIGNAL5 1048576 #define OS_YIELD_AUDIO_SIZE 1024 -#define OS_TASK_YIELDED 1 +#define SPSTATUS_SET_SIGNAL7 33554432 -#define OS_TASK_DP_WAIT 2 +#define SPSTATUS_SET_SIGNAL2 16384 + +#define SPSTATUS_SET_SIGNAL1 4096 + +#define SPSTATUS_SET_SIGNAL4 262144 + +#define SPSTATUS_SET_SIGNAL3 65536 + +#define SPSTATUS_HALT 1 + +#define SPSTATUS_SIGNAL2_SET 512 + +#define SPSTATUS_CLEAR_SIGNAL2 8192 + +#define SPSTATUS_CLEAR_SIGNAL3 32768 + +#define SPSTATUS_CLEAR_SIGNAL4 131072 + +#define SPSTATUS_CLEAR_SIGNAL5 524288 + +#define SPSTATUS_CLEAR_SIGNAL0 512 + +#define SPSTATUS_CLEAR_SIGNAL1 2048 + +#define SPSTATUS_SET_SIGNAL0 1024 + +#define SPSTATUS_CLEAR_SIGNAL6 2097152 + +#define SPSTATUS_CLEAR_SIGNAL7 16777216 + +#define SPSTATUS_SET_INTR_ON_BREAK 256 #define OS_TASK_USR0 16 @@ -13069,6 +15376,13 @@ struct ldiv_t { long rem; }; +typedef struct OSEepromUnknownStruct0 OSEepromUnknownStruct0, *POSEepromUnknownStruct0; + +struct OSEepromUnknownStruct0 { + u16 unk00; + u16 unk01; +}; + typedef struct amConfig amConfig, *PamConfig; struct amConfig { @@ -13123,12 +15437,6 @@ typedef struct AMDMAState AMDMAState, *PAMDMAState; typedef struct AMDMABuffer AMDMABuffer, *PAMDMABuffer; -struct AMDMAState { - u8 initialized; - struct AMDMABuffer * firstUsed; - struct AMDMABuffer * firstFree; -}; - struct AMDMABuffer { ALLink node; u32 startAddr; @@ -13136,6 +15444,12 @@ struct AMDMABuffer { char * ptr; }; +struct AMDMAState { + u8 initialized; + struct AMDMABuffer * firstUsed; + struct AMDMABuffer * firstFree; +}; + typedef struct AudioInfo_s AudioInfo_s, *PAudioInfo_s; typedef struct AudioInfo_s AudioInfo; @@ -13191,6 +15505,185 @@ typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; struct evp_pkey_ctx_st { }; + +// WARNING! conflicting data type names: /vi.h/OSViFieldRegs - /os.h/OSViFieldRegs + + +// WARNING! conflicting data type names: /vi.h/OSViCommonRegs - /os.h/OSViCommonRegs + +typedef struct OSViContext OSViContext, *POSViContext; + + +// WARNING! conflicting data type names: /vi.h/OSViMode - /os.h/OSViMode + +struct OSViContext { + u16 unk00; + u16 retraceCount; + void * buffer; + struct OSViMode * unk08; + u32 features; + OSMesgQueue * mq; + OSMesg * msg; + u32 unk18; + u32 unk1c; + u32 unk20; + f32 unk24; + u16 unk28; + u32 unk2c; +}; + +#define OS_VI_PAL_HPF2 27 + +#define OS_VI_MPAL_HPN1 36 + +#define OS_VI_PAL_HPF1 23 + +#define OS_VI_MPAL_HPN2 40 + +#define OS_VI_UNK100 256 + +#define OS_VI_NTSC_LAN1 2 + +#define OS_VI_NTSC_LAN2 6 + +#define OS_VI_FPAL_LAN2 48 + +#define OS_VI_FPAL_LAN1 44 + +#define OS_VI_PAL_HPN2 26 + +#define OS_VI_PAL_HPN1 22 + +#define OS_VI_MPAL_HPF1 37 + +#define OS_VI_MPAL_HPF2 41 + +#define OS_VI_NTSC_LAF1 3 + +#define OS_VI_NTSC_LAF2 7 + +#define OS_VI_GAMMA_DITHER 4 + +#define OS_VI_FPAL_LAF2 49 + +#define OS_VI_NTSC_HPF2 13 + +#define OS_VI_FPAL_LAF1 45 + +#define OS_VI_DIVOT 16 + +#define OS_VI_NTSC_HPF1 9 + +#define OS_VI_NTSC_HPN2 12 + +#define OS_VI_NTSC_HPN1 8 + +#define OS_VI_GAMMA 8 + +#define OS_VI_GAMMA_ON 1 + +#define OS_VI_UNK200 512 + +#define OS_VI_FPAL_HPN2 54 + +#define OS_VI_FPAL_HPN1 50 + +#define OS_VI_FPAL_HPF2 55 + +#define OS_VI_FPAL_HPF1 51 + +#define OS_VI_PAL_LAF1 17 + +#define OS_VI_MPAL_LAN1 30 + +#define OS_VI_MPAL_LAN2 34 + +#define OS_VI_PAL_LAF2 21 + +#define OS_VI_GAMMA_DITHER_ON 4 + +#define OS_VI_PAL_LAN1 16 + +#define OS_VI_MPAL_LAF1 31 + +#define OS_VI_PAL_LAN2 20 + +#define OS_VI_MPAL_LAF2 35 + +#define OS_VI_MPAL_LPN1 28 + +#define OS_VI_PAL_LPF2 19 + +#define OS_VI_PAL_LPF1 15 + +#define OS_VI_MPAL_LPN2 32 + +#define OS_VI_MPAL_LPF1 29 + +#define OS_VI_PAL_LPN2 18 + +#define OS_VI_PAL_LPN1 14 + +#define OS_VI_DITHER_FILTER_OFF 128 + +#define OS_VI_MPAL_LPF2 33 + +#define OS_VI_FPAL_HAN1 52 + +#define OS_VI_DIVOT_OFF 32 + +#define OS_VI_FPAL_HAF1 53 + +#define OS_VI_GAMMA_DITHER_OFF 8 + +#define OS_VI_GAMMA_OFF 2 + +#define OS_VI_MPAL_HAF1 39 + +#define OS_VI_DITHER_FILTER 65536 + +#define OS_VI_DIVOT_ON 16 + +#define OS_VI_NTSC_LPN1 0 + +#define OS_VI_NTSC_LPN2 4 + +#define OS_VI_FPAL_LPN2 46 + +#define OS_VI_FPAL_LPN1 42 + +#define OS_VI_NTSC_LPF1 1 + +#define OS_VI_NTSC_LPF2 5 + +#define OS_VI_NTSC_HAF1 11 + +#define OS_VI_FPAL_LPF2 47 + +#define OS_VI_FPAL_LPF1 43 + +#define OS_VI_NTSC_HAN1 10 + +#define OS_VI_DITHER_FILTER_ON 64 + +#define OS_VI_PAL_HAF1 25 + +#define OS_VI_MPAL_HAN1 38 + +#define OS_VI_PAL_HAN1 24 + +#define TV_TYPE_PAL 0 + +#define RESET_TYPE_BOOT_DISK 2 + +#define TV_TYPE_MPAL 2 + +#define RESET_TYPE_COLD_RESET 0 + +#define TV_TYPE_NTSC 1 + +#define RESET_TYPE_NMI 1 + #define LOG_SCHEDULE_GFX_TASK 101 #define LOG_RDP_DONE 102 @@ -13221,29 +15714,67 @@ struct evp_pkey_ctx_st { #define SCHEDULER_PRIORITY 13 -typedef longlong vs64; -typedef ushort vu16; - -typedef char vs8; - -typedef uchar vu8; +// WARNING! conflicting data type names: /ultratypes.h/vs64 - /types.h/vs64 -// WARNING! conflicting data type names: /ultratypes.h/vu32 - /GE Current Master.h/vu32 - -typedef ulonglong vu64; - -typedef short vs16; +// WARNING! conflicting data type names: /ultratypes.h/vu16 - /types.h/vu16 -// WARNING! conflicting data type names: /ultratypes.h/vs32 - /GE Current Master.h/vs32 +// WARNING! conflicting data type names: /ultratypes.h/vs8 - /types.h/vs8 -#define FALSE 0 -#define TRUE 1 +// WARNING! conflicting data type names: /ultratypes.h/vu8 - /types.h/vu8 -#define NULL 0 + +// WARNING! conflicting data type names: /ultratypes.h/vu32 - /types.h/vu32 + + +// WARNING! conflicting data type names: /ultratypes.h/vu64 - /types.h/vu64 + + +// WARNING! conflicting data type names: /ultratypes.h/vs16 - /types.h/vs16 + + +// WARNING! conflicting data type names: /ultratypes.h/vs32 - /types.h/vs32 + + +// WARNING! conflicting data type names: /mema.h/s_mem_alloc_table - /s_mem_alloc_table + + +// WARNING! conflicting data type names: /mema.h/s_mem_alloc_entry - /s_mem_alloc_entry + +#define R_JPAD 256 + +#define A_BUTTON 32768 + +#define L_CBUTTONS 2 + +#define U_JPAD 2048 + +#define Z_TRIG 8192 + +#define D_CBUTTONS 4 + +#define B_BUTTON 16384 + +#define D_JPAD 1024 + +#define START_BUTTON 4096 + +#define R_CBUTTONS 1 + +#define U_CBUTTONS 8 + +#define DUMMY_1 128 + +#define DUMMY_2 64 + +#define R_TRIG 16 + +#define L_TRIG 32 + +#define L_JPAD 512 typedef struct Apan Apan, *PApan; @@ -13342,11 +15873,11 @@ typedef struct _struct_193 _struct_193, *P_struct_193; typedef struct _struct_194 _struct_194, *P_struct_194; -struct _struct_194 { +struct _struct_193 { short type; }; -struct _struct_193 { +struct _struct_194 { short type; }; @@ -13380,6 +15911,9 @@ struct OSProf { u32 * text_end; }; + +// WARNING! conflicting data type names: /os.h/OSThread_s - /thread.h/OSThread_s + typedef struct OSPfsState OSPfsState, *POSPfsState; struct OSPfsState { @@ -13401,16 +15935,8 @@ struct OSContPad { u8 errno; }; -typedef struct __OSBlockInfo __OSBlockInfo, *P__OSBlockInfo; -struct __OSBlockInfo { - u32 errStatus; - void * dramAddr; - void * C2Addr; - u32 sectorSize; - u32 C1ErrNum; - u32 C1ErrSector[4]; -}; +// WARNING! conflicting data type names: /os.h/__OSBlockInfo - /pi.h/__OSBlockInfo typedef struct OSContRamIo OSContRamIo, *POSContRamIo; @@ -13424,11 +15950,8 @@ struct OSContRamIo { typedef struct OSDevMgr OSDevMgr, *POSDevMgr; -typedef struct OSPiHandle_s OSPiHandle_s, *POSPiHandle_s; -typedef struct OSPiHandle_s OSPiHandle; - -typedef struct __OSTranxInfo __OSTranxInfo, *P__OSTranxInfo; +// WARNING! conflicting data type names: /os.h/OSPiHandle - /pi.h/OSPiHandle struct OSDevMgr { s32 active; @@ -13440,29 +15963,6 @@ struct OSDevMgr { s32 (* edma)(OSPiHandle *, s32, u32, void *, u32); }; -struct __OSTranxInfo { - u32 cmdType; - u16 transferMode; - u16 blockNum; - s32 sectorNum; - u32 devAddr; - u32 bmCtlShadow; - u32 seqCtlShadow; - struct __OSBlockInfo block[2]; -}; - -struct OSPiHandle_s { - struct OSPiHandle_s * next; - u8 type; - u8 latency; - u8 pageSize; - u8 relDuration; - u8 pulse; - u32 baseAddress; - u32 speed; - struct __OSTranxInfo transferInfo; -}; - typedef struct OSPfs OSPfs, *POSPfs; struct OSPfs { @@ -13494,14 +15994,11 @@ struct OSTimer_s { OSMesg msg; }; -typedef struct OSIoMesgHdr OSIoMesgHdr, *POSIoMesgHdr; -struct OSIoMesgHdr { - u16 type; - u8 pri; - u8 status; - OSMesgQueue * retQueue; -}; +// WARNING! conflicting data type names: /os.h/OSId - /thread.h/OSId + + +// WARNING! conflicting data type names: /os.h/OSIoMesgHdr - /pi.h/OSIoMesgHdr typedef struct OSContStatus OSContStatus, *POSContStatus; @@ -13530,35 +16027,41 @@ typedef enum enumOSEvent { OS_EVENT_VI=7 } enumOSEvent; -typedef struct OSIoMesg OSIoMesg, *POSIoMesg; -struct OSIoMesg { - struct OSIoMesgHdr hdr; - void * dramAddr; - u32 devAddr; - u32 size; - OSPiHandle * piHandle; +// WARNING! conflicting data type names: /os.h/OSIoMesg - /pi.h/OSIoMesg + + +// WARNING! conflicting data type names: /os.h/__OSThreadContext - /thread.h/__OSThreadContext + + +// WARNING! conflicting data type names: /os.h/OSPiHandle_s - /pi.h/OSPiHandle_s + + +// WARNING! conflicting data type names: /os.h/OSTimer - /time.h/OSTimer + +typedef struct _struct_2 _struct_2, *P_struct_2; + +struct _struct_2 { + f32 f_odd; + f32 f_even; }; -typedef struct OSTimer_s OSTimer; -typedef u32 OSEvent; +// WARNING! conflicting data type names: /os.h/OSEvent - /message.h/OSEvent -typedef struct OSPiInfo OSPiInfo, *POSPiInfo; -struct OSPiInfo { - u8 type; - u8 status; - u32 address; -}; +// WARNING! conflicting data type names: /os.h/__OSTranxInfo - /pi.h/__OSTranxInfo + + +// WARNING! conflicting data type names: /os.h/OSPiInfo - /pi.h/OSPiInfo + + +// WARNING! conflicting data type names: /os.h/__OSfp - /thread.h/__OSfp typedef u32 OSPageMask; -typedef u32 OSIntMask; -#define OS_VI_PAL_HPF2 27 - -#define OS_VI_PAL_HPF1 23 +// WARNING! conflicting data type names: /os.h/OSIntMask - /interrupt.h/OSIntMask #define OS_MESG_TYPE_BASE 10 @@ -13566,118 +16069,50 @@ typedef u32 OSIntMask; #define OS_MESG_TYPE_LOOPBACK 10 -#define U_CBUTTONS 8 - #define CONT_RELATIVE 2 #define OS_EVENT_RDB_DATA_DONE 17 #define CONT_START 4096 -#define OS_PRIORITY_MAX 255 - -#define OS_PRIORITY_RMONSPIN 200 - -#define L_JPAD 512 - #define CONT_EEPROM 32768 #define LEO_BLOCK_MODE 1 -#define OS_STATE_RUNNING 4 - #define OS_VI_BIT_32PIXEL 128 -#define OS_VI_MPAL_LAN1 30 - -#define L_TRIG 32 - -#define OS_VI_MPAL_LAN2 34 - #define PFS_ERR_ID_FATAL 10 -#define OS_EVENT_CART 2 - -#define OS_PRIORITY_APPMAX 127 - -#define OS_VI_MPAL_LPF1 29 - -#define OS_VI_MPAL_LPF2 33 - #define OS_IM_PI 1049601 #define PFS_ERR_INVALID 5 -#define OS_VI_DIVOT_OFF 32 - -#define OS_READ 0 - -#define OS_PRIORITY_RMON 250 - -#define OS_WRITE 1 - -#define OS_VI_GAMMA_OFF 2 - #define OS_SIM_STACKSIZE 4096 -#define Z_TRIG 8192 - #define OS_MESG_TYPE_DMAWRITE 12 -#define OS_MESG_PRI_NORMAL 0 - -#define OS_MESG_NOBLOCK 0 - -#define OS_MESG_BLOCK 1 - -#define OS_VI_NTSC_HAF1 11 - #define OS_VI_BIT_NONINTERLACE 1 -#define OS_STATE_STOPPED 1 - -#define OS_PRIORITY_VIMGR 254 - -#define OS_STATE_RUNNABLE 2 - #define BLOCKSIZE 32 #define EEPROM_MAXBLOCKS 64 -#define OS_VI_PAL_HAN1 24 - #define MAXCONTROLLERS 4 -#define OS_EVENT_FAULT 12 - -#define OS_VI_MPAL_HPN1 36 - #define OS_VI_BIT_16PIXEL 64 -#define OS_VI_MPAL_HPN2 40 - -#define OS_VI_PAL_HPN2 26 - -#define OS_VI_PAL_HPN1 22 - #define OS_PM_1M 2088960 #define OS_IM_SP 66561 #define BOOT_ADDRESS_COSIM 2147491840 -#define OS_VI_NTSC_HPF2 13 - -#define OS_VI_NTSC_HPF1 9 - #define CONT_OVERRUN_ERROR 4 #define OS_IM_ALL 4194049 #define PFS_ERR_EXIST 9 -#define OS_PRIORITY_IDLE 0 - #define OS_IM_CPU 65281 #define OS_APP_NMI_BUFSIZE 64 @@ -13692,10 +16127,6 @@ typedef u32 OSIntMask; #define PFS_ERR_NOPACK 1 -#define OS_VI_GAMMA_ON 1 - -#define OS_PRIORITY_SIMGR 140 - #define OS_PM_16M 33546240 #define PFS_INITIALIZED 1 @@ -13704,48 +16135,20 @@ typedef u32 OSIntMask; #define OS_NUM_EVENTS.conflict 15 -#define OS_EVENT_PI 8 - #define OS_IM_SI 132097 -#define OS_VI_PAL_LAF1 17 - #define OS_MESG_TYPE_COUNTER 14 -#define OS_VI_PAL_LAF2 21 - -#define OS_VI_GAMMA_DITHER_ON 4 - -#define OS_VI_MPAL_LAF1 31 - -#define OS_VI_MPAL_LAF2 35 - -#define OS_VI_PAL_LPF2 19 - -#define OS_VI_PAL_LPF1 15 - #define PFS_WRITE 1 -#define L_CBUTTONS 2 - -#define OS_EVENT_COUNTER 3 - #define OS_PM_256K 516096 -#define OS_VI_GAMMA_DITHER_OFF 8 - #define LEO_SECTOR_MODE 3 -#define OS_EVENT_SP 4 - #define OS_VI_BIT_LORES 256 -#define OS_EVENT_SI 5 - #define CONT_DOWN 1024 -#define OS_MESG_PRI_HIGH 1 - #define OS_IM_VI 525313 #define PFS_MAX_BANKS 62 @@ -13762,14 +16165,8 @@ typedef u32 OSIntMask; #define OS_IM_SW1 1281 -#define OS_VI_NTSC_HAN1 10 - -#define OS_VI_DITHER_FILTER_ON 64 - #define PFS_ERR_NEW_PACK 2 -#define OS_VI_MPAL_HAN1 38 - #define OS_MESG_TYPE_VRETRACE 13 #define OS_IM_PRENMI 5121 @@ -13780,28 +16177,10 @@ typedef u32 OSIntMask; #define OS_OTHERS 2 -#define OS_EVENT_VI 7 - #define OS_EVENT_RDB_LOG_DONE 16 -#define U_JPAD 2048 - #define PFS_ERR_INCONSISTENT 3 -#define B_BUTTON 16384 - -#define OS_VI_MPAL_HPF1 37 - -#define OS_VI_MPAL_HPF2 41 - -#define OS_VI_NTSC_LAF1 3 - -#define OS_VI_NTSC_LAF2 7 - -#define OS_VI_NTSC_HPN2 12 - -#define OS_VI_NTSC_HPN1 8 - #define PROF_MIN_INTERVAL 50 #define PFS_FILE_EXT_LEN 4 @@ -13830,8 +16209,6 @@ typedef u32 OSIntMask; #define CONT_G 8192 -#define OS_VI_PAL_LAN1 16 - #define CONT_A 32768 #define OS_TV_NTSC 1 @@ -13842,8 +16219,6 @@ typedef u32 OSIntMask; #define CONT_RIGHT 256 -#define OS_VI_PAL_LAN2 20 - #define CONT_D 4 #define OS_VI_BIT_NORMALINTERLACE 4 @@ -13852,16 +16227,10 @@ typedef u32 OSIntMask; #define CONT_L 32 -#define OS_VI_PAL_LPN2 18 - #define CONT_R 16 -#define OS_VI_PAL_LPN1 14 - #define OS_EVENT_RDB_READ_DONE 15 -#define R_CBUTTONS 1 - #define OS_FLAG_CPU_BREAK 1 #define OS_PM_4M 8380416 @@ -13872,8 +16241,6 @@ typedef u32 OSIntMask; #define OS_VI_BIT_HIRES 512 -#define OS_VI_MPAL_HAF1 39 - #define OS_EVENT_RDB_FLUSH_PROF 21 #define PFS_ONE_PAGE 8 @@ -13882,28 +16249,12 @@ typedef u32 OSIntMask; #define LEO_TRACK_MODE 2 -#define D_CBUTTONS 4 - -#define START_BUTTON 4096 - #define RCP_IMASKSHIFT 16 -#define OS_VI_DIVOT_ON 16 - #define OS_MESG_TYPE_EDMAREAD 15 -#define OS_VI_NTSC_LPF1 1 - -#define OS_VI_NTSC_LPF2 5 - -#define A_BUTTON 32768 - #define OS_VI_BIT_DEFLICKINTERLACE 8 -#define OS_VI_NTSC_LAN1 2 - -#define OS_VI_NTSC_LAN2 6 - #define PFS_ERR_CONTRFAIL 4 #define OS_IM_DP 2098177 @@ -13916,12 +16267,6 @@ typedef u32 OSIntMask; #define OS_VI_BIT_INTERLACE 2 -#define OS_EVENT_SP_BREAK 11 - -#define OS_EVENT_SW2 1 - -#define OS_EVENT_SW1 0 - #define OS_NUM_EVENTS 23 #define OS_IM_CART 3073 @@ -13930,68 +16275,36 @@ typedef u32 OSIntMask; #define OS_IM_AI 263169 -#define OS_PRIORITY_PIMGR 150 - #define OS_VI_BIT_NTSC 1024 -#define R_TRIG 16 - #define OS_MESG_TYPE_DMAREAD 11 #define OS_IM_NONE 1 -#define OS_VI_MPAL_LPN1 28 - -#define OS_VI_MPAL_LPN2 32 - #define OS_EVENT_RDB_DBG_DONE 20 #define OS_EVENT_RDB_FREE_RAMROM 19 -#define OS_VI_DITHER_FILTER_OFF 128 - -#define OS_EVENT_AI 6 - -#define D_JPAD 1024 - -#define OS_EVENT_CPU_BREAK 10 - #define OS_VI_BIT_POINTSAMPLE 32 -#define OS_STATE_WAITING 8 - -#define OS_EVENT_PRENMI 14 - #define RCP_IMASK 4128768 #define PFS_CORRUPTED 2 #define PFS_CREATE 2 -#define R_JPAD 256 - #define BOOT_ADDRESS_EMU 536936448 #define OS_PIM_STACKSIZE 4096 #define CONT_JOYPORT 4 -#define OS_EVENT_THREADSTATUS 13 - #define PFS_ERR_DEVICE 11 -#define OS_VI_NTSC_LPN1 0 - -#define OS_VI_NTSC_LPN2 4 - #define OS_IM_COUNTER 33793 -#define OS_EVENT_DP 9 - #define OS_TV_MPAL 2 -#define OS_VI_PAL_HAF1 25 - #define OS_IM_RDBWRITE 9217 #define SP_CLR_YIELDED 2048 @@ -14646,6 +16959,9 @@ struct _Pft { #define _FMI 4 + +// WARNING! conflicting data type names: /tlb.h/OSPageMask - /os.h/OSPageMask + #define TASKBASELO 4224 #define DRAM_STACK_LO 64512 @@ -14684,6 +17000,180 @@ struct _Pft { #define rsp_DRAM_STACK_LO 0 + +// WARNING! conflicting data type names: /bondtypes.h/sImageTableEntry - /sImageTableEntry + +typedef struct objective_entry objective_entry, *Pobjective_entry; + + +// WARNING! conflicting data type names: /bondtypes.h/watchMenuObjectiveText - /auto_structs/watchMenuObjectiveText + +struct objective_entry { + u32 id; + enum WATCH_BRIEFING_PAGE menu; + u16 reserved; + u16 text; + struct watchMenuObjectiveText * nextentry; +}; + +typedef struct CHRdata CHRdata, *PCHRdata; + +struct CHRdata { + u16 chrnum; + s8 accuracyrating; + s8 speedrating; + u8 firecountleft; + u8 firecountright; + s8 headnum; + s8 actiontype; + s8 sleep; + s8 invalidmove; + s8 numclosearghs; + s8 numarghs; + u8 fadealpha; + s8 arghrating; + s8 aimendcount; + s8 bodynum; + u8 grenadeprob; + s8 flinchcnt; + s16 hidden; + s32 chrflags; + void * pad; + void * model; + void * field_20; + f32 chrwidth; + f32 chrheight; + void * bondpos; + int field_30; + short field_34; + char field_36; + char field_37; + char field_38; + char field_39; + char field_3A; + char field_3B; + int path_target_position; + int field_40; + int field_44; + int field_48; + int field_4C; + int field_50; + int field_54; + char type_of_motion; + char distance_counter_or_something; + short distance_to_target; + int field_5C; + int target_position; + int field_64; + int field_68; + int field_6C; + int path_segment_coverage; + int path_segment_length; + int field_78; + int field_7C; + int field_80; + int field_84; + int field_88; + int field_8C; + int field_90; + int segment_coverage; + int segment_length; + int field_9C; + int field_A0; + f32 sumground; + f32 manground; + f32 ground; + f32 fallspeed[3]; + f32 prevpos[3]; + s32 lastwalk60; + s32 lastmoveok60; + f32 visionrange; + s32 lastseetarget60; + f32 lastvisibletarg[3]; + void * field_E4; + s32 timeshooter; + f32 hearingscale; + s32 lastheartarget60; + u8 shadecol[4]; + u8 nextcol[4]; + f32 damage; + f32 maxdamage; + void * ailist; + u16 aioffset; + u16 aireturnlist; + u8 flags; + u8 flags2; + u8 BITFIELD; + u8 random; + s32 timer60; + u16 padpreset1; + u16 chrpreset1; + u16 chrseeshot; + u16 chrseedie; + f32 field_11C[2]; + f32 field_124[2]; + f32 field_12C[2]; + int field_134; + int field_138; + f32 shotbondsum; + f32 aimuplshoulder; + f32 aimuprshoulder; + f32 aimupback; + f32 aimsideback; + f32 aimendlshoulder; + f32 aimendrshoulder; + f32 aimendback; + f32 aimendsideback; + int * handle_positiondata[2]; + int * ptr_SEbuffer1; + int * ptr_SEbuffer2; + int * ptr_SEbuffer3; + int * ptr_SEbuffer4; + int field_178; + int field_17C; + char field_180; + char field_181; + char field_182; + char field_183; + int field_184; + int field_188; + int field_18C; + int field_190; + int field_194; + int field_198; + int field_19C; + int field_1A0; + int field_1A4; + int field_1A8; + char field_1AC; + char field_1AD; + char field_1AE; + char field_1AF; + int field_1B0; + int field_1B4; + int field_1B8; + int field_1BC; + int field_1C0; + int field_1C4; + int field_1C8; + int field_1CC; + int field_1D0; + int field_1D4; + int * handle_positiondata_hat; +}; + +typedef struct rgba_valf32 rgba_valf32, *Prgba_valf32; + +struct rgba_valf32 { + f32 r; + f32 g; + f32 b; + f32 a; +}; + + +// WARNING! conflicting data type names: /bondtypes.h/sGlobalImageTable - /auto_structs/sGlobalImageTable + #define MIN_PART 3 #define OS_CODE 3 @@ -15029,7 +17519,6 @@ int init(EVP_PKEY_CTX *ctx); void * set_stack_entry(void *stack,s32 size); void set_hw_address_and_unknown(void); void thread1_idle(void); -void dummy_70000730(void); void start_idle_thread(void); void start_rmon_thread(void); void init_scheduler(void); @@ -15041,8 +17530,8 @@ void permit_stderr(BOOL flag); void setUserCompareValue(u32 value); void CheckDisplayErrorBuffer(void *frameBufPtr); void CheckDisplayErrorBufferEvery16Frames(u32 framecount); -void osCreateLog(OSLog *log,u32 *base,s32 len); -void osCreateScheduler(OSSched *s,void *stack,OSPri priority,u8 mode,u8 numFields); +void setcurrentcount(void); +void osCreateScheduler(OSSched *s,void *stack,u8 mode,u8 numFields); void osScAddClient(OSSched *s,OSScClient *c,OSMesgQueue *msgQ); void osScRemoveClient(OSSched *s,OSScClient *c); OSMesgQueue * osScGetCmdQ(OSSched *s); @@ -15089,12 +17578,12 @@ void video_related_7(void); void video_related_8(void); void video_related_9(float param_1); void receive_vi_c_msgs(int msgcount); -void setVideoWidthHeightToMode(int videomode); +void setVideoWidthHeightToMode(char videomode); void set_coloroutputmode_16bit(void); void set_coloroutputmode_32bit(void); -int get_video_settings2_frameb(void); -int get_video_settings1_frameb(void); -void set_video_settings2_frameb(int framebuffer); +u8 * get_video_settings2_frameb(void); +u8 * get_video_settings1_frameb(void); +void set_video_settings2_frameb(u8 *framebuffer); ulonglong get_80060824(void); uint * proc_70003C58(uint *param_1); undefined4 * proc_70003EB4(undefined4 *param_1); @@ -15108,7 +17597,7 @@ void set_video2_settings_offset_18_1A(short param_1,short param_2); short get_video2_settings_offset_18(void); short get_video2_settings_offset_1A(void); void set_video2_text_clip_size(short txtClipW,short txtClipH); -short get_video2_settings_txtClipW(void); +s16 get_video2_settings_txtClipW(void); short get_video2_settings_txtClipH(void); void set_video2_width_height(short width,short height); short get_video2_settings_width(void); @@ -15117,17 +17606,17 @@ void set_video2_ulx_uly(short ulx,short uly); short get_video2_settings_ulx(void); short get_video2_settings_uly(void); void set_video2_settings_offset_24(int param_1); -void video_related_1F(f32 param_1); +void setvideo_far(f32 param_1); void video_related_21(f32 param_1); undefined4 video_related_23(void); void video_related_24(float param_1,float param_2,float param_3); -void set_page_height(f32 aspect,f32 param_2,f32 param_3); +void set_page_height(f32 aspect,f32 height); void video_related_27(undefined4 *param_1); undefined4 * set_setfillcolor(undefined4 *DL,uint red,uint green,int blue); -u32 indy_grab_jpg_16bit(void); -u32 indy_grab_jpg_32bit(void); -u32 indy_grab_rgb_16bit(void); -u32 indy_grab_rgb_32bit(void); +void indy_grab_jpg_16bit(void); +void indy_grab_jpg_32bit(void); +void indy_grab_rgb_16bit(void); +void indy_grab_rgb_32bit(void); int * return_match_in_debug_notice_list(char *name,char *data); void get_entry_of_size_in_debug_notice_list(int size); void add_new_entry_to_debug_notice_list(dword name,dword data); @@ -15184,95 +17673,94 @@ void audio_related(void *datatable,int numsamples); void setupaudio(void); void musicTrack1Play(MUSIC_TRACKS track); void musicTrack1Stop(void); -ulonglong get_music1len(void); +ulonglong get_music1vol(void); void musicTrack1Vol(s16 param_1); void music_related_0(void); void music_related_1(f32 rate); void music_related_3(float rate,s32 param_2,short length); void music_related_2nd_block(int param_1); -void music_related_2nd_block_0(void); -ulonglong get_music2len(void); -void musicTrack2Vol(ulonglong param_1); +void musicTrack2Stop(void); +ulonglong get_music2vol(void); +void musicTrack2Vol(s16 param_1); void music_related_5(void); void music_related_6(float param_1); void music_related_8(float param_1,undefined8 param_2,short param_3); void music_related_3rd_block(int param_1); -void music_related_3rd_block_0(void); -ulonglong get_music3len(void); -void music_related_3rd_block_1(ulonglong param_1); +void musicTrack3Stop(void); +ulonglong get_music3vol(void); +void musicTrack3Vol(ulonglong param_1); void music_related_10(void); void music_related_11(float param_1); void music_related_13(float param_1,undefined8 param_2,short param_3); void music_related_15(void); void music_related_16(uint *param_1); -void music_related_17(int param_1); -void music_related_18(int param_1,ushort *param_2); +ALMicroTime _sndpVoiceHandler(ALSndPlayer *node); +void _handleEvent(ALSndPlayer *sndp,u32 *event); void music_related_19(int **param_1); void music_related_20(int param_1); -void music_related_21(int **param_1,int *param_2,ushort param_3); +void _removeEvents(ALEventQueue *evtq,u32 *state); uint music_related_22(short *param_1,short *param_2); -int ** music_related_23(undefined8 param_1,int *param_2); +ALLink * music_related_23(void *buffer,ALLink_s *param_2); void music_related_24(int **param_1); void music_related_25(int param_1,undefined param_2); -ulonglong music_related_26(int param_1); -int ** play_sfx_a1(void *buffer,short entry,sfxdata *data); -void music_related_28(int param_1); +ulonglong sfxGetArg0Unk3F(ALLink_s *param_1); +void play_sfx_a1(void *buffer,short entry,ALSndPlayer *data); +void sfxDeactivate(int param_1); void music_related_29(byte param_1); void music_related_30(void); void music_related_32(void); void music_related_34(void); void music_related_36(longlong param_1,s16 param_2,undefined4 param_3); -u32 music_related_37(void); +u32 sfx_c_700091C8(void); void music_related_38(ulonglong param_1); void music_related_39(f32 param_1); ulonglong music_related_40(uint param_1); void music_related_42(ulonglong param_1,ulonglong param_2); void something_with_memp_c_debug(void); -void check_memflag_tokens(int param_1,int param_2); -void memp_related_0(int *param_1); -uint allocate_bytes_in_bank(int param_1,uint param_2); -undefined8 memp_related_1(void *ptrdata,int size,uint bank); +void mempCheckMemflagTokens(int bstart,int bsize); +void mempSetBankStarts(int *banks); +uint mempAllocBytesInBank(u32 bytes,u8 bank); +u32 memAddEntryOfSizeToBank(u8 *ptrdata,int size,uint bank); void nulled_list_all8_mem_alloc_banks_sizes(void); -int memp_related_3(uint bank); -uint memp_related_4(uint param_1,u32 param_2); -void resetMemBank(u32 bank); -void set_bank_nextentry_to_NULL(u32 bank); -void swap_entries(undefined4 *param_1,undefined4 *param_2); -void merge_alloc_entries(int param_1,undefined4 *param_2); -undefined8 sort_merge_entries_in_alloc_table(int param_1); -void memp_related_7(void); -uint * mem_related(int param_1); -void mem_related_model_room_buffers(uint param_1,uint param_2); +s32 memGetBankSizeLeft(u8 bank); +uint memAllocPackedBytesInBank(uint param_1); +void mempResetBank(u8 bank); +void mempNullNextEntryInBank(u8 bank); +void memaSwap(u8 *a,u8 *b); +void memaMerge(int param_1,undefined4 *param_2); +s32 memaSortMergeEntries(s_mem_alloc_table *param_1); +void memaSortMergeAllEntries(void); +s_mem_alloc_entry * memaFindOpening(s_mem_alloc_table *param_1); +void memaAllocRoomBuffer(u32 addr,u32 size); void something_with_mema_c_debug(void); -void reinit_m_malloc_table(void *ptr_allocmem,u32 size); +void mempInitMallocTable(void *ptr_allocmem,u32 size); void mem_related_calls_sort_merge_entries(void); -int mem_related_something_find_first(uint param_1); -int mem_related_something_find_first_0(int param_1,uint param_2); -void mem_related_model_room_buffers_0(uint param_1,uint param_2); +int mem_related_something_find_first(uint size); +int mem_related_something_find_first_0(int addr,uint size); +void mem_related_model_room_buffers_0(u32 addr,u32 size); void mem_related_allocated_table_related(void); float mem_related_something_first_related(void); -uint generate_list_alloc_mem(void); -uint generate_lists_before_after_mem_merge(void); +void generate_list_alloc_mem(void); +void memaGenerateListsBeforeAfterMerge(void); void mem_related_something_first_related_0(undefined *param_1); uint mem_related_0(void); -undefined8 mem_related_1(int param_1,ulonglong param_2,ulonglong param_3); +u32 mem_related_1(int addr,u32 length,u32 maxsize); u32 get_random_value(void); void increment_random_num(longlong param_1); u32 lotsa_shifting_random_related(ulonglong *param_1); byte * check_string_something(byte *param_1); char * strtok(char *__s,char *__delim); -uint check_boot_switches(void); +void check_boot_switches(void); byte * check_token(int param_1,byte *param_2); char * textpointer_load_parse_something(char *param_1,char *param_2); -char * something_with_strings(char *param_1,char *param_2,int param_3); -char * string_load_parse_something(char *param_1,char *param_2); +char * something_with_strings(char *param_1,char *param_2,int size); +void string_append_from_obseg_textbank(char *buffer,char *textfiletext); undefined8 something_with_strings_0(byte *param_1,char *param_2); void dummy7000A890(void); undefined8 string_related(byte *param_1,byte *param_2,longlong param_3); -void dummy7000A8F0(void); -uint strtol_related(uint param_1); -ulonglong strtol_related_0(byte param_1); -ulonglong strtol_related_1(byte param_1); +u8 strtol_related(u8 param_1); +u8 strtol_related_0(u8 param_1); +u8 strtol_related_1(u8 param_1); ulonglong strtol_related_2(char param_1); long strtol(char *__nptr,char **__endptr,int __base); int proutSprintf(void *s,char *buf,size_t n); @@ -15303,7 +17791,7 @@ void test_controller_presence(void); s32 osPfsChecker(OSPfs *param_1); void controller_7000B734(uint param_1); void controller_check_for_rumble_maybe(void); -undefined get_attached_controller_count(void); +u64 get_attached_controller_count(void); ulonglong get_num_controllers_plugged_in(void); void controller_rumble_related(void); void set_disable_all_rumble_and_something(undefined4 param_1,undefined4 param_2); @@ -15311,12 +17799,12 @@ void set_ptr_tlb_ramrom_record(undefined4 param_1); void probably_ramrom_related(int param_1); void redirect_to_ramrom_replay_and_record_handlers_if_set(void); longlong controllerSchedulerRelated(void); -undefined get_cur_controller_horz_stick_pos(char param_1); +s32 get_cur_controller_horz_stick_pos(char param_1); undefined controller_7000C174(char param_1); -undefined get_cur_controller_vert_stick_pos(char param_1); +s32 get_cur_controller_vert_stick_pos(char param_1); undefined controller_7000C284(char param_1); -ulonglong get_controller_buttons_held(char param_1,ulonglong param_2); -ulonglong get_controller_buttons_pressed(char param_1,ulonglong param_2); +u32 get_controller_buttons_held(char param_1,controller_buttons param_2); +u32 get_controller_buttons_pressed(char param_1,controller_buttons param_2); void proc_7000C430(char *param_1,uint param_2); void proc_7000C470(void); int get_controller_3dstick_L_R(char param_1,int param_2,int param_3); @@ -15330,7 +17818,7 @@ int save_7000C734(byte param_1,undefined *param_2); int save_7000C778(byte param_1,undefined *param_2); s32 save_7000C7BC(byte param_1,save_file *param_2,int param_3); s32 save_7000C808(byte address,u8 *buffer,int length); -void controller_7000C854(int param_1,float param_2); +void controller_7000C854(int param_1,s32 param_2); void reset_cont_rumble_detect(void); void controller_7000C930(int param_1); int controller_7000C954(void); @@ -15342,7 +17830,7 @@ void rmon_entry(void); BOOL rmon_debug_is_final_build(void); s32 rmon_debug_returns_neg_1(void); void removed_7000ceb8(void); -void removed_7000cec0(void); +void rmon_debug_stub_0(void); void removed_7000cec8(void); void removed_7000ced0(void); void removed_7000ced8(void); @@ -15366,11 +17854,12 @@ u32 osGetCount(void); void osCreateViManager(OSPri pri); void viMgrMain(int param_1); void osCreateViManager_sub(undefined param_1,undefined param_2,undefined param_3,undefined param_4,undefined param_5,undefined param_6,undefined4 param_7,undefined4 param_8); -void osSetEventMesg(void); +void osSetEventMesg(OSEvent param_1,OSMesgQueue *param_2,OSMesg param_3); void osViSetEvent(OSMesgQueue *mq,OSMesg m,u32 retraceCount); OSIntMask osSetIntMask(OSIntMask param_1); s32 osRecvMesg(OSMesgQueue *mq,OSMesg *msg,s32 flags); s32 osSendMesg(OSMesgQueue *mq,OSMesg msg,s32 flags); +undefined8 FUN_7000df3c(void); void osViSetMode(OSViMode *modep); void osViSetXScale(f32 value); void osViSetYScale(f32 value); @@ -15382,7 +17871,7 @@ void * osViGetCurrentFramebuffer(void); void * osViGetNextFramebuffer(void); void osViSwapBuffer(void *frameBufPtr); void osDpSetStatus(u32 data); -undefined * _VirtualToPhysicalTask(void *param_1); +OSTask * _VirtualToPhysicalTask(OSTask *intp); void osSpTaskLoad(OSTask *intp); void osSpTaskStartGo(OSTask *tp); s32 osDpSetNextBuffer(void *bufPtr,u64 size); @@ -15404,7 +17893,7 @@ longlong __ll_rem(undefined4 param_1,undefined4 param_2,undefined4 param_3,undef longlong __ll_div(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4); longlong __ll_mul(undefined4 left_u,undefined4 left_l,undefined4 right_u,undefined4 right_l); void __ull_divremi(ulonglong *param_1,ulonglong *param_2,undefined4 param_3,undefined4 param_4,short param_5); -undefined4 __ll_mod(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4); +undefined4 __ll_mod(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4); longlong __ll_lshift(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4); s32 osAiSetNextBuffer(void *bufPtr,u32 size); undefined4 osAiGetLength(void); @@ -15415,7 +17904,7 @@ void _collectPVoices(ALSynth *drvr); void __freeParam(ALParam *param); ALParam *__allocParam(void); void dummy7000F100(void); -longlong *alAudioFrame(Acmd *cmdList,s32 *cmdLen,s16 *outBuf,s32 outLen); +Acmd * alAudioFrame(Acmd *cmdList,s32 *cmdLen,s16 *outBuf,s32 outLen); void alSynNew(ALSynth *drvr,ALSynConfig *c); s32 osPiStartDma(OSIoMesg *mb,s32 priority,s32 direction,u32 devAddr,void *dramAddr,u32 size,OSMesgQueue *mq); void osViSetSpecialFeatures(u32 func); @@ -15428,6 +17917,7 @@ void guMtxL2F(float mf[4][4],Mtx *m); OSThread * __osGetCurrFaultedThread(void); void __osExceptionPreamble(void); void __osException(void); +void FUN_7001067c(void); void send_mesg(void); void handle_CpU(void); void __osEnqueueAndYield(OSThread **queue); @@ -15448,15 +17938,15 @@ void _bnkfPatchInst(ALInstrument *inst,s32 offset,s32 table); void removed_70010E6C(void); void alBnkfNew(ALBankFile *file,char *table); void alSeqFileNew(ALSeqFile *file,u8 *base); -void __CSPPostNextSeqEvent(int param_1); +void __CSPPostNextSeqEvent(ALCSPlayer *seqp); void __setUsptFromTempo(ALCSPlayer *seqp,f32 tempo); void proc_70011064(void); void __CSPRepostEvent(ALEventQueue *evtq,ALEventListItem *item); void __CSPHandleMIDIMsg(ALCSPlayer *seqp,ALEvent *event); void proc_70011A64(void); -ALMicroTime __CSPVoiceHandler(void *node); +void __CSPHandleNextSeqEvent(ALCSPlayer *seqp); void alCSPNew(ALCSPlayer *seqp,ALSeqpConfig *c); -void __CSPPostNextSeqEvent(int param_1); +void alCSPSetBank(ALCSPlayer *seqp,ALBank *b); s32 alCSPGetState(ALCSPlayer *seqp); void alCSeqGetLoc(ALCSeq *seq,ALCSeqMarker *marker); void alCSeqSetLoc(ALCSeq *seq,ALCSeqMarker *m); @@ -15469,11 +17959,11 @@ void alCSeqNewMarker(ALCSeq *seq,ALCSeqMarker *m,u32 ticks); s32 alCSeqGetTicks(ALCSeq *seq); u32 alCSeqSecToTicks(ALCSeq *seq,f32 sec,u32 tempo); f32 alCSeqTicksToSec(ALCSeq *seq,s32 ticks,u32 tempo); -undefined8 __alCSeqNextDelta(int param_1,uint *param_2); +char __alCSeqNextDelta(ALCSeq *seq,s32 *pDeltaTicks); void alCSPSetSeq(ALCSPlayer *seqp,ALCSeq *seq); void alCSPPlay(ALCSPlayer *seqp); void alSeqpStop(ALSeqPlayer *seqp); -void ultra_proc_70012DA0(ALCSPlayer *param_1,undefined2 param_2); +void alCSPSetVol(ALCSPlayer *seqp,s16 vol); void alEvtqFlushType(ALEventQueue *evtq,s16 type); void alEvtqFlush(ALEventQueue *evtq); void alEvtqPostEvent(ALEventQueue *evtq,ALEvent *evt,ALMicroTime delta); @@ -15551,8 +18041,8 @@ longlong __d_to_ull(double param_1); longlong __f_to_ull(float param_1); double __ll_to_d(undefined4 param_1,undefined4 param_2); float __ll_to_f(undefined4 param_1,undefined4 param_2); -double __ull_to_d(undefined4 param_1,undefined4 param_2); -float __ull_to_f(undefined4 param_1,undefined4 param_2); +double __ull_to_d(int param_1,undefined4 param_2); +float __ull_to_f(int param_1,undefined4 param_2); void __osSetSR(u32 param_1); u32 __osGetSR(void); s32 __osSiRawReadIo(u32 devAddr,u32 *data); @@ -15571,7 +18061,7 @@ void __osSetTimerIntr(OSTime tim); OSTime __osInsertTimer(OSTimer *t); OSPri osGetThreadPri(OSThread *t); void __osViInit(void); -undefined * __osViGetCurrentContext(void); +__OSViContext * __osViGetCurrentContext(void); void __osViSwapContext(void); u32 __osSpGetStatus(void); void __osSpSetStatus(u32 data); @@ -15579,7 +18069,7 @@ s32 __osSpSetPc(u32 data); s32 __osSpRawStartDma(s32 direction,u32 devAddr,void *dramAddr,u32 size); int __osSpDeviceBusy(void); ulonglong __osDpDeviceBusy(void); -void __osProbeTLB(void *vaddr); +u32 __osProbeTLB(void *vaddr); void alSynDelete(ALSynth *drvr); ulonglong __osAiDeviceBusy(void); void alSaveNew(ALSave *f); @@ -15720,7 +18210,7 @@ void image_entries_load(void); void alloc_intro_matrices(void); void init_menus_or_reset(void); void initguards(void); -void alloc_init_GUARDdata_entries(int param_1); +void alloc_init_GUARDdata_entries(int guard_count); void set_new_rand_head_bodies(void); void init_obj_register_difficulty_vals(void); void alloc_false_GUARDdata_to_exec_global_action(void); @@ -15734,7 +18224,7 @@ void proc_7F001910(int param_1); void proc_7F001928(int param_1); void proc_7F001940(int param_1); void write_monitor_ani_control_blocks(void); -void initialize_80071E00_to_80071E78(void); +void initialize_temp_mine_table(void); int load_proptype(PROPTYPE param_1); void proc_7F001BD4(float *param_1,float *param_2); void prepare_load_objects(undefined8 param_1,ushort *param_2); @@ -15748,7 +18238,7 @@ void expand_type_0A_object(int param_1,ushort *param_2,int param_3); void expand_type_0B_object(int param_1,ushort *param_2); void proc_7F00324C(void); void expand_type_01_object(void); -void proplvreset2(longlong param_1); +void proplvreset2(longlong levelid); void something_with_stage_objectives(void); void set_parent_cur_tag_entry(int param_1); void setup_briefing_text_entry_parent(int param_1); @@ -15797,7 +18287,7 @@ undefined4 proc_7F007F30(void); void insert_bond_eye_intro(undefined4 *param_1); undefined4 *load_display_rare_logo(undefined4 *param_1,undefined8 param_2,undefined8 param_3,int param_4,uint param_5); void proc_7F008B58(ulonglong param_1); -undefined4 * retrieve_display_rareware_logo(undefined4 *param_1); +void retrieve_display_rareware_logo(undefined4 *param_1); ulonglong proc_7F008DD0(void); void proc_7F008DE4(ushort **param_1,int *param_2); void proc_7F008E80(short *param_1,int param_2); @@ -15818,29 +18308,29 @@ uint * add_tab2_next(undefined4 *param_1); undefined8 isontab2(void); void init_menu00_legalscreen(void); void update_menu00_legalscreen(void); -void interface_menu00_legalscreen(undefined8 param_1,undefined8 param_2); +void interface_menu00_legalscreen(void); uint * display_aligned_white_text_to_screen(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5,byte *param_6,int param_7,int param_8); -u32 * constructor_menu00_legalscreen(undefined4 *param_1); +void constructor_menu00_legalscreen(Gfx *param_1); void reset_menutimer(void); void dummy7F00AAF8(void); -void interface_menu17_switchscreens(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu17_switchscreens(undefined4 *param_1); +void interface_menu17_switchscreens(void); +void constructor_menu17_switchscreens(Gfx *param_1); void init_menu01_nintendo(void); void update_menu01_nintendo(void); -void interface_menu01_nintendo(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu01_nintendo(undefined4 *param_1); +void interface_menu01_nintendo(void); +void constructor_menu01_nintendo(Gfx *param_1); int ** init_menu02_rareware(void); void update_menu02_rareware(void); void interface_menu02_rareware(void); -u32 * constructor_menu02_rareware(undefined4 *param_1); +void constructor_menu02_rareware(Gfx *param_1); void init_menu03_eyeintro(void); void update_menu_03_eyeintro(void); void interface_menu03_eyeintro(void); -u32 * constructor_menu03_eyeintro(undefined4 *param_1); +void constructor_menu03_eyeintro(Gfx *param_1); void init_menu04_goldeneyelogo(void); void update_menu04_goldeneyelogo(void); -void interface_menu04_goldeneyelogo(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu04_goldeneyelogo(undefined4 *param_1); +void interface_menu04_goldeneyelogo(void); +void constructor_menu04_goldeneyelogo(Gfx *param_1); void disable_all_switches(int param_1); void set_item_visibility_in_objinstance(int objinstance,int item,undefined4 mode); void select_load_bond_picture(int objinstance,u32 bondID); @@ -15852,31 +18342,31 @@ int get_chapter_briefing_entry(int briefing); void toggle_deletion_menu_for_folder(int param_1); void interface_menu05_filesel(void); int get_ptr_difficulty_name(DIFFICULTY difficulty); -u32 * constructor_menu05_filesel(undefined4 *param_1); +void constructor_menu05_filesel(Gfx *param_1); void init_menu06_modesel(void); void update_menu06_modesel(void); void interface_menu06_modesel(void); undefined4 proc_7F00D5E8(undefined4 param_1); void set_menu_cursor_pos_to_setting(int setting); -u32 * constructor_menu06_modesel(undefined4 *param_1); -int pull_and_display_text_for_folder_a0(undefined *param_1); +void constructor_menu06_modesel(Gfx *param_1); +int pull_and_display_text_for_folder_a0(LEVELID param_1); BOOL check_if_stage_completed_on_difficulty(int stage,DIFFICULTY difficulty); longlong get_highest_unlocked_difficulty_for_level(longlong stage); void init_menu07_missionsel(void); void update_menu07_missionsel(void); -void interface_menu07_missionsel(undefined8 param_1,undefined8 param_2); +void interface_menu07_missionsel(void); void set_cursor_to_stage_solo(longlong param_1); -u32 * constructor_menu07_missionsel(undefined4 *param_1); +void constructor_menu07_missionsel(Gfx *param_1); void init_menu08_difficulty(void); void update_menu08_difficulty(void); void interface_menu08_difficulty(void); uint * print_current_solo_briefing_stage_name(uint *param_1,byte *param_2); void set_cursor_pos_difficulty(int difficulty); -u32 * constructor_menu08_difficulty(undefined4 *param_1); +void constructor_menu08_difficulty(Gfx *param_1); void init_menu09_007options(void); void update_menu09_007options(void); -void interface_menu09_007options(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu09_007options(undefined4 *param_1); +void interface_menu09_007options(void); +void constructor_menu09_007options(Gfx *param_1); u32 get_player_control_style(int playernum); BOOL check_if_mp_stage_unlocked(int stage); void select_game_length(void); @@ -15885,86 +18375,86 @@ void advance_aim_settings_selection(void); void unlock_mp_chars(void); u32 get_selected_num_players(void); HEADS get_player_mp_char_head(int player); -ulonglong get_player_mp_char_gender(int player); +u8 get_player_mp_char_gender(int player); BODIES get_player_mp_char_body(int player); f32 get_player_mp_handicap(int player); f32 get_player_mp_char_height(int player); int get_mp_timelimit(void); int get_mp_pointlimit(void); -void reset_mp_options_for_scenario(MPSCENARIOS scenario); -void init_mp_options_for_scenario(longlong numplayers); +void reset_mp_options_for_scenario(MPSCENARIOS scenarioid); +void init_mp_options_for_scenario(u32 numplayers); void init_menu0E_mpoptions(void); void update_menu0E_mpoptions(void); -void interface_menu0E_mpoptions(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu0E_mpoptions(undefined4 *param_1); +void interface_menu0E_mpoptions(void); +void constructor_menu0E_mpoptions(Gfx *param_1); BOOL hasPlayerSelectedMPChar(int playerchar); void init_menu0f_mpcharsel(void); void update_menu0F_mpcharsel(void); void interface_menu0F_mpcharsel(void); int proc_7F0122A8(int param_1,int param_2,int param_3); undefined4 * proc_7F01231C(void); -u32 * constructor_menu0F_mpcharsel(undefined4 *param_1); +void constructor_menu0F_mpcharsel(Gfx *param_1); void init_menu10_mphandicap(void); void update_menu10_mphandicap(void); void interface_menu10_mphandicap(void); -u32 * constructor_menu10_mphandicap(undefined4 *param_1); +void constructor_menu10_mphandicap(Gfx *param_1); void init_menu11_mpcontrol(void); void update_menu11_mpcontrols(void); void interface_menu11_mpcontrols(void); -u32 * constructor_menu11_mpcontrol(undefined4 *param_1); +void constructor_menu11_mpcontrol(Gfx *param_1); void init_menu12_mpstage(void); void update_menu12_mpstage(void); -void interface_menu12_mpstage(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu12_mpstage(undefined4 *param_1); +void interface_menu12_mpstage(void); +void constructor_menu12_mpstage(Gfx *param_1); MPSCENARIOS get_scenario(void); void init_menu13_mpscenariosel(void); void update_menu13_mpscenario(void); -void interface_menu13_mpscenario(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu13_mpscenario(undefined4 *param_1); +void interface_menu13_mpscenario(void); +void constructor_menu13_mpscenario(Gfx *param_1); ulonglong get_players_team_or_scenario_item_flag(int player); void set_players_team_or_scenario_item_flag(int player,char flag); void init_menu14_mpteamsel(void); void update_menu14_mpteams(void); -ulonglong interface_menu14_mpteams(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu14_mpteams(undefined4 *param_1); +ulonglong interface_menu14_mpteams(void); +void constructor_menu14_mpteams(Gfx *param_1); void set_briefing_page(WATCH_BRIEFING_PAGE page); void load_briefing_text_for_stage(void); void init_menu0A_briefing(void); void update_menu0A_briefing(void); -void interface_menu0A_briefing(undefined8 param_1,undefined8 param_2); +void interface_menu0A_briefing(void); uint * print_objectives_and_status_to_menu(uint *param_1,int param_2,byte *param_3,int param_4); -u32 * constructor_menu0A_briefing(undefined4 *param_1); +void constructor_menu0A_briefing(Gfx *param_1); void init_menu0B_runstage(void); void init_menu0C_missionfailed(void); void update_menu0C_missionfailed(void); -void interface_menu0C_missionfailed(undefined8 param_1,undefined8 param_2); +void interface_menu0C_missionfailed(void); undefined8 proc_7F01631C(void); -u32 * constructor_menu0C_missionfailed(undefined4 *param_1); +void constructor_menu0C_missionfailed(Gfx *param_1); void init_menu0D_missioncomplete(void); void update_menu0D_missioncomplete(void); -void interface_menu0D_missioncomplete(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu0D_missioncomplete(undefined4 *param_1); +void interface_menu0D_missioncomplete(void); +void constructor_menu0D_missioncomplete(Gfx *param_1); void init_menu15_cheat(void); void update_menu15_cheat(void); -void interface_menu15_cheat(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu15_cheat(undefined4 *param_1); +void interface_menu15_cheat(void); +void constructor_menu15_cheat(Gfx *param_1); void init_menu16_nocontroller(void); void update_menu16_nocontrollers(void); void interface_menu16_nocontrollers(void); -u32 * constructor_menu16_nocontrollers(undefined4 *param_1); +void constructor_menu16_nocontrollers(Gfx *param_1); void do_extended_cast_display(longlong param_1); void init_menu18_displaycast(void); void update_menu18_displaycast(void); -void interface_menu18_displaycast(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu18_displaycast(undefined4 *param_1); +void interface_menu18_displaycast(void); +void constructor_menu18_displaycast(Gfx *param_1); void init_menu19_spectrum(void); void update_menu19_spectrum(void); -void interface_menu19_spectrum(undefined8 param_1,undefined8 param_2); -u32 * constructor_menu19_spectrum(undefined4 *param_1); -void set_menu_to_mode(longlong param_1,longlong param_2); +void interface_menu19_spectrum(void); +void constructor_menu19_spectrum(Gfx *param_1); +void set_menu_to_mode(MENU param_1,u32 param_2); MENU get_currentmenu(void); void menu_init(undefined8 param_1,undefined8 param_2); -u32 * menu_jump_constructor_handler(u32 *param_1); +void menu_jump_constructor_handler(Gfx *DL); void proc_7F01B0E0(ushort *param_1,byte *param_2); void proc_7F01B134(ushort *param_1,ushort *param_2); void proc_7F01B1C8(ushort *param_1,byte *param_2); @@ -15972,7 +18462,7 @@ undefined4 *proc_7F01B240(undefined4 *param_1,int param_2,longlong param_3,int * undefined4 * proc_7F01B6E0(undefined4 *param_1,int param_2,int param_3); void proc_7F01BAE0(short *param_1,int param_2); uint * proc_7F01BFF8(uint *param_1,uint param_2,int param_3); -undefined4 * insert_imageDL(undefined4 *param_1); +undefined4 * insert_imageDL(Gfx *param_1); undefined4 * proc_7F01C1A4(undefined4 *param_1); ulonglong die_blood_image_routine(void); undefined4 * proc_7F01C400(undefined4 *param_1); @@ -15990,13 +18480,13 @@ f32 get_007_health_mod(void); f32 get_007_damage_mod(void); f32 get_007_accuracy_mod(void); void end_of_mission_briefing(void); -void proc_7F01D500(void); +void sub_GAME_7F01D500(void); void deleteCurrentSelectedFolder(void); void copyCurrentEEPROMtoStack(void); u8 getSelectedFolderBond(void); void set_selected_folder_num(u32 foldernum); void set_selected_difficulty(DIFFICULTY difficulty); -void set_solo_and_ptr_briefing(undefined *param_1); +void set_solo_and_ptr_briefing(LEVELID level); void proc_7F01D61C(undefined4 *param_1); void proc_7F01D644(undefined4 *param_1); void store_favorite_weapon_current_player(u32 right,u32 left); @@ -16024,10 +18514,10 @@ int proc_7F01DE50(void); void proc_7F01DEB4(int param_1); void proc_7F01DF90(void); BOOL check_if_valid_folder_num(int folder); -BOOL doesFolderHaveStageUnlockedAtDifficulty(int foldernum,STAGENUM stageid,DIFFICULTY difficulty); +s32 isStageUnlockedAtDifficulty(int foldernum,STAGENUM stageid,DIFFICULTY difficulty); void proc_7F01E504(uint *param_1,undefined4 *param_2); void unlock_stage_in_folder_on_difficulty(int folder,longlong stagenum,longlong selecteddifficulty,int maxtime); -void proc_7F01E760(ulonglong param_1,longlong param_2); +void proc_7F01E760(u32 folder,CHEAT_IDS cheat); void get_highest_stage_difficulty_completed_in_folder(int foldernum,STAGENUM *stagenum,DIFFICULTY *difficulty); u32 check_egypt_completed_in_folder(int folder); u32 check_egypt_completed_any_folder(void); @@ -16190,8 +18680,8 @@ void proc_7F02A044(int param_1,int param_2,float *param_3); undefined4 proc_7F02A0EC(int param_1,int param_2,float param_3); void proc_7F02A15C(int param_1,uint param_2,float *param_3,undefined4 param_4); undefined4 proc_7F02A1E8(int param_1,uint param_2,float param_3); -undefined8 proc_7F02A258(int param_1); -ulonglong proc_7F02A2A4(int param_1); +undefined8 true_if_actor_is_dying_fading_limping_shot(GUARDdata *actor); +s32 true_if_actor_dying_fading(GUARDdata *chr); undefined8 proc_7F02A2C8(void); undefined8 proc_7F02A428(void); undefined8 proc_7F02A588(int param_1); @@ -16426,16 +18916,16 @@ void proc_7F0402B4(int param_1,byte *param_2); void proc_7F040310(byte *param_1,byte *param_2); void proc_7F040384(int *param_1,longlong param_2,float *param_3); void proc_7F040484(int param_1); -undefined * init_standard_object(int param_1,ushort **param_2,undefined *param_3,uint param_4); -undefined * proc_7F0406F8(int param_1,ushort **param_2); +undefined *init_standard_object(object_standard *objdata,object_header *modelheader,object_standard *targetposdata,uint controller); +undefined * init_object_no_default_pos_controller(object_standard *object,object_header *header); undefined * proc_7F04071C(int param_1); void proc_7F040754(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4); void proc_7F0407F4(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4); void proc_7F04088C(void); void proc_7F040BA0(void); void proc_7F040CF0(int param_1); -void proc_7F040D98(int param_1,int param_2,longlong param_3); -void proc_7F041024(int param_1,int param_2); +void proc_7F040D98(object_standard *param_1,int param_2,longlong param_3); +void proc_7F041024(object_standard *param_1,int param_2); undefined4 proc_7F041044(int param_1); undefined8 proc_7F041074(float *param_1,float *param_2,float *param_3,float param_4); undefined8 proc_7F041160(int param_1,float *param_2,float *param_3,float *param_4,float *param_5,int *param_6,ushort **param_7); @@ -16454,11 +18944,11 @@ void proc_7F043650(int param_1); void proc_7F043838(float *param_1,int param_2); void proc_7F0439B8(void); undefined8 proc_7F043A6C(int param_1,int param_2,int param_3,ushort *param_4); -void generate_explosion_at_position(int param_1,uint param_2,undefined8 param_3,undefined4 param_4); -void handle_thrown_explosive_detonation(int param_1); +void generate_explosion_at_position(object_header *object,uint param_2,undefined8 param_3,undefined4 param_4); +void handle_thrown_explosive_detonation(object_header *param_1); void proc_7F044200(int param_1); -void proc_7F04424C(int param_1); -void proc_7F0442DC(int param_1); +void proc_7F04424C(object_header *param_1); +void proc_7F0442DC(object_header *param_1); undefined8 proc_7F044414(float *param_1,int param_2,float *param_3,uint param_4); undefined8 proc_7F0446B8(float *param_1,uint param_2,float *param_3,uint param_4); undefined8 proc_7F044718(undefined8 param_1,undefined8 param_2,float *param_3,int param_4); @@ -16480,59 +18970,59 @@ void proc_7F04BFD0(int param_1,undefined4 param_2); void proc_7F04C044(int param_1); undefined8 proc_7F04C130(int param_1,uint param_2,undefined4 param_3,undefined4 param_4); void proc_7F04CA44(int param_1,undefined8 param_2); -void proc_7F04CD04(char *param_1,undefined8 param_2); -void object_explosion_related(int param_1,float *param_2,int param_3); +void proc_7F04CD04(object_header *param_1,undefined8 param_2); +void object_explosion_related(object_standard *param_1,float *param_2,int param_3); undefined4 proc_7F04D16C(float *param_1,float *param_2,float *param_3,uint *param_4,uint *param_5,int param_6,float *param_7); int proc_7F04D9B0(int param_1,ushort *param_2,float *param_3,float *param_4,float *param_5,int *param_6,ushort **param_7); -void proc_7F04DCB4(int param_1); -void proc_7F04DD68(int param_1); -void proc_7F04DE18(int param_1); +void proc_7F04DCB4(object_standard *param_1); +void proc_7F04DD68(object_standard *param_1); +void proc_7F04DE18(object_standard *param_1); void proc_7F04DEFC(int param_1,float param_2,undefined8 param_3,undefined8 param_4,int param_5); undefined8 check_if_destroyable_object_type(int param_1); undefined8 check_if_collectable_object(int objdata); undefined8 check_if_destroyable_not_invincible(int object); void proc_7F04E0CC(int param_1,float param_2,float *param_3,int param_4,int param_5); -void maybe_detonate_object(int objdata,float param_2,float *param_3,int param_4,int param_5); -void proc_7F04E720(int param_1,float *param_2); -void proc_7F04E9BC(int param_1,float *param_2); +void maybe_detonate_object(object_standard *objdata,float param_2,float *param_3,int param_4,int param_5); +void proc_7F04E720(object_standard *param_1,float *param_2); +void proc_7F04E9BC(object_standard *param_1,float *param_2); void proc_7F04EA68(float *param_1,float *param_2); ulonglong check_if_object_has_not_been_destroyed(int param_1); undefined8 proc_7F04EF58(int param_1); undefined4 proc_7F04F170(char *param_1); void proc_7F04F218(int param_1,longlong param_2); void proc_7F04F244(int param_1,int *param_2,undefined4 *param_3,undefined4 *param_4,undefined4 *param_5); -char * append_text_picked_up(char *param_1); -void append_text_ammo_amount_word(char *buffer,undefined4 ammotype,longlong amount); -char * apped_text_ammotype(char *buffer,int ammotype,int amount); -void set_sound_effect_for_ammo_collection(undefined4 ammotype); -int ** set_sound_effect_for_weapontype_collection(longlong weapontype); -char * display_ammo_type_collection_text(char *finaltext,int ammotype,longlong quantity); -void display_text_when_ammo_collected(int ammotype,longlong amount); -void add_ammo_to_inventory(int ammotype,longlong amount,int doplaysound,int dodisplaytext); +void append_text_picked_up(u8 *buffer,u8 *param_2,u8 *param_3); +void append_text_ammo_amount_word(u8 *buffer,AMMOTYPES ammotype,u32 amount); +void apped_text_ammotype(u8 *buffer,AMMOTYPES ammotype,u32 amount); +void set_sound_effect_for_ammo_collection(AMMOTYPES ammotype); +void set_sound_effect_for_weapontype_collection(ITEM_IDS weapontype); +void prepare_ammo_type_collection_text(u8 *finaltext,AMMOTYPES ammotype,u32 quantity); +void display_text_when_ammo_collected(AMMOTYPES ammotype,u32 amount); +void add_ammo_to_inventory(AMMOTYPES ammotype,int amount,int doplaysound,int dodisplaytext); uint get_ammo_in_magazine(int objdata); -uint ammo_collected_from_weapon(int objdata); -char * generate_language_specific_text_for_weapon(char *finalstring,int itemtype); -void display_text_for_weapon_in_lower_left_corner(int weaponid); +uint ammo_collected_from_weapon(void *objdata); +void generate_language_specific_text_for_weapon(char *finalstring,ITEM_IDS itemtype); +void display_text_for_weapon_in_lower_left_corner(ITEM_IDS weaponid); undefined8 collect_or_interact_object(char *param_1,int param_2); -undefined8 object_collectability_routine(object_standard *param_1); +void object_collectability_routine(object_standard *param_1); undefined8 proc_7F050D30(int param_1,undefined4 *param_2,float *param_3,float *param_4); void proc_7F050DE8(int param_1); undefined *proc_7F050F50(ushort *param_1,int param_2,ushort **param_3,undefined *param_4,uint param_5); -undefined * proc_7F051028(ushort *param_1,int param_2); -undefined * proc_7F051084(ushort *param_1,int param_2); -undefined * proc_7F0510C0(undefined2 *param_1,int param_2,uint param_3); +void proc_7F051028(ushort *param_1,int param_2); +void proc_7F051084(ushort *param_1,int param_2); +void proc_7F0510C0(undefined2 *param_1,int item,uint param_3); int proc_7F05126C(int param_1,longlong param_2,int param_3); int proc_7F051588(void); int proc_7F0515B0(longlong param_1,longlong param_2,int param_3); int proc_7F0518A8(void); -undefined * proc_7F0518D0(void); -int ** trigger_remote_mine_detonation(void); +object_standard * proc_7F0518D0(void); +void trigger_remote_mine_detonation(void); int check_if_entry_is_collectable(char type,char *objposdata); int check_if_item_deposited(char item); void add_obj_to_temp_proxmine_table(undefined4 *objdata); void remove_obj_from_temp_proxmine_table(undefined4 *objdata); -void detonate_proxmine_within_range(float (*xyzpos) [3]); -void proc_7F051CC8(void); +void detonate_proxmine_within_range(xyzpoint *xyzpos); +void check_guard_detonate_proxmine(void); void link_objects(int *objdata1,int *objdata2); undefined *complete_object_data_block_return_position_entry(int *objdata,int *modelheader,int *targetposdata,int controller); undefined * proc_7F051DD8(int param_1,ushort **param_2); @@ -16560,7 +19050,7 @@ int proc_7F053894(float *param_1,float param_2,float param_3); void proc_7F05396C(int param_1,float *param_2,float param_3,float param_4); int proc_7F0539B8(float param_1,undefined8 param_2,undefined8 param_3); void proc_7F0539E4(float *param_1); -void proc_7F053A10(int param_1,float *param_2); +void sub_GAME_7F053A10(int param_1,float *param_2); void proc_7F053A3C(void); void proc_7F053B10(int param_1); void play_door_opening_soundeffect_0(int param_1); @@ -16593,52 +19083,52 @@ void stop_alarm(void); s32 is_alarm_on(void); void init_trigger_toxic_gas_effect(undefined4 *param_1); void proc_7F055EF8(void); -ulonglong check_if_toxic_gas_activated(void); -void proc_7F055F64(void); +u32 check_if_toxic_gas_activated(void); +void handle_gas_damage(void); void set_unset_clock_lock_bits(int clocklockbits,int flag); -ulonglong is_clock_drawn_onscreen(void); +u32 is_clock_drawn_onscreen(void); void set_clock_time(f32 time); f32 get_clock_time(void); void set_clock_enable(int enable); undefined4 get_clock_enable(void); -void proc_7F0561E0(void); +void if_enabled_reset_clock(void); undefined4 * proc_7F056210(undefined4 *param_1); -void proc_7F0565F0(void); +void handle_alarm_gas_timer_calldamage(void); void proc_7F056690(void); void drop_inventory(void); undefined8 proc_7F056850(undefined4 *param_1,longlong param_2,float param_3,undefined4 *param_4,undefined4 *param_5); -undefined8 get_size_of_setup_object_type(int *object); +u32 get_size_of_setup_object_type(u8 *object); int proc_7F056A88(int param_1); -int proc_7F056B1C(int param_1); +int proc_7F056B1C(object_standard *param_1); int proc_7F056BA8(int param_1); -ulonglong load_model(int modelid); +u32 load_model(int modelid); void proc_7F056CA0(int param_1); int proc_7F056EA0(undefined8 param_1,int param_2); int proc_7F056F08(ulonglong param_1,int *param_2,int *param_3,longlong param_4,int param_5,int param_6); int proc_7F057080(short param_1); int get_handle_to_tagged_object(int object); -int get_ptr_text_for_watch_breifing_page(WATCH_BRIEFING_PAGE page); -int add_objective(void); -int get_text_for_objective(int objective); +char * get_ptr_text_for_watch_breifing_page(WATCH_BRIEFING_PAGE page); +u32 add_objective(void); +u8 * get_text_for_objective(int objective); DIFFICULTY get_difficulty_for_objective(int objective); -int get_status_of_objective(longlong objective); -undefined8 check_objectives_complete(void); +int get_status_of_objective(s32 objective); +u32 check_objectives_complete(void); void display_objective_status_text_on_status_change(void); void proc_7F057744(ulonglong param_1); void proc_7F0577E8(int param_1,ulonglong param_2); -void proc_7F057898(void); +void objectiveHandlePhotograph(void); void proc_7F057AC0(float *param_1); void proc_7F057C14(float *param_1,float *param_2); void proc_7F057D44(float *param_1,float *param_2,float param_3); void proc_7F057D88(float *param_1,float *param_2,float param_3); -void proc_7F057DF8(float *param_1,float *param_2,int param_3); +void sub_GAME_7F057DF8(float *param_1,float *param_2,int param_3); void proc_7F057E58(float *param_1,float *param_2,float *param_3,float *param_4,int param_5); float cosf(float __x); float sinf(float __x); -void proc_7F057FD0(undefined4 *param_1); -void proc_7F058020(undefined4 *param_1,undefined4 *param_2); +void guMtxIdentF_unrolled(float (*param_1) [4] [4]); +void proc_7F058020(float (*param_1) [4] [4],float (*param_2) [4]); void proc_7F058068(float *param_1,float *param_2); -void proc_7F058098(float *param_1,float *param_2); +void sub_GAME_7F058098(float *param_1,float *param_2); void proc_7F0580C8(float *param_1,float *param_2,int param_3); void proc_7F05818C(float *param_1,float *param_2,int param_3); void proc_7F058274(float *param_1,float *param_2,float *param_3); @@ -16653,8 +19143,8 @@ void proc_7F058688(float param_1,undefined8 param_2,float *param_3); void proc_7F058714(float *param_1,float *param_2); void proc_7F058860(float *param_1,float *param_2); void proc_7F05892C(undefined4 *param_1,float *param_2,float *param_3); -void init_something_copy_posdata_to_it(int *posdata,int *param_2); -void proc_7F058998(undefined4 *param_1,int param_2); +void init_something_copy_posdata_to_it(xyzpoint *posdata,int *dest); +void copies_first_3_floats_from_a0_to_a1_plus_0x30(xyzpoint *posdata,int dest); void proc_7F0589B4(float param_1,undefined8 param_2,float *param_3); void proc_7F0589E4(float param_1,undefined8 param_2,int param_3); void proc_7F058A14(float param_1,undefined8 param_2,int param_3); @@ -16678,7 +19168,7 @@ void proc_7F059708(float *param_1,float param_2,float param_3,float param_4,floa void proc_7F059908(float *param_1,float param_2,float param_3,float param_4,float param_5,float param_6,float param_7,float param_8,float param_9,float param_10); uint proc_7F05997C(float param_1,float param_2); void proc_7F059A48(float *param_1,undefined2 *param_2,float param_3,float param_4,float param_5,float param_6,float param_7); -void proc_7F059B58(float *param_1,float param_2,float param_3,float param_4,float param_5); +void proc_7F059B58(float *param_1,float a,float x,float y,float z); void proc_7F059CE8(float *param_1,float param_2,float param_3,float param_4,float param_5); void proc_7F059D30(void); void proc_7F059D38(undefined4 *param_1,undefined4 *param_2); @@ -16732,46 +19222,46 @@ void proc_7F05C594(float *param_1); void proc_7F05C614(void); void proc_7F05C6B8(void); undefined8 proc_7F05C6FC(int param_1,float param_2,float *param_3,int param_4); -undefined * get_ptr_item_statistics(int item); -void proc_7F05C8F0(undefined4 *param_1); +weapon_stats * get_ptr_item_statistics(ITEM_IDS item); +void copy_item_in_hand(xyzpoint *param_1); void copy_item_in_hand_to_main_list(undefined4 *param_1); void unknown_takes_playerhand(int hand); ulonglong proc_7F05CEBC(int param_1); -int get_itemtype_in_hand(int hand); -Gitemheader * get_ptr_itemheader_in_hand(int hand); -void * proc_7F05CF30(int param_1); -u32 proc_7F05CF48(int param_1); -void remove_item_in_hand(int hand); -void place_item_in_hand_swap_and_make_visible(int hand,int item); +ITEM_IDS get_itemtype_in_hand(HAND hand); +Gitemheader * get_ptr_itemheader_in_hand(HAND hand); +u8 * getPlayerWeaponBufferForHand(HAND hand); +u32 getSizeBufferWeaponInHand(HAND param_1); +void remove_item_in_hand(HAND hand); +void place_item_in_hand_swap_and_make_visible(HAND hand,ITEM_IDS item); char * get_ptr_item_text_call_line(int item); Gitemheader * get_ptr_weapon_model_header_line(int weapon); -int proc_7F05D078(void); +int getCurrentWeaponOrItem(void); void used_to_load_1st_person_model_on_demand(int param_1); longlong proc_7F05D334(longlong param_1,int param_2); -ITEM_IDS get_next_weapon_in_cycle_for_hand(int hand,longlong direction); -void likely_change_weapon_in_hand(int hand,int weapon,s32 direction); +ITEM_IDS get_next_weapon_in_cycle_for_hand(HAND hand,s32 direction); +void likely_change_weapon_in_hand(HAND hand,int weapon,s32 direction); void proc_7F05D610(int param_1); void proc_7F05D650(int param_1); void proc_7F05D690(void); void advance_through_inventory(void); void backstep_through_inventory(void); void autoadvance_on_deplete_all_ammo(void); -void draw_item_in_hand_has_more_ammo(int hand,ITEM_IDS item); +void draw_item_in_hand_has_more_ammo(HAND hand,ITEM_IDS item); void attempt_reload_item_in_hand(int hand); ITEM_IDS get_item_in_hand(int hand); void draw_item_in_hand(int param_1,int param_2); -int return_ammo_in_hand(int hand); +ITEM_IDS return_ammo_in_hand(HAND hand); void proc_7F05DA8C(int param_1,int param_2); void proc_7F05DAE4(int param_1); -void remove_hands_item(int param_1,int param_2); +void remove_hands_item(HAND param_1,int param_2); undefined get_hands_firing_status(int hand); -undefined4 proc_7F05DCB8(int param_1); -float proc_7F05DCE8(longlong param_1); -char * proc_7F05DD38(void); -void proc_7F05DDA4(float param_1); +f32 proc_7F05DCB8(int param_1); +f32 proc_7F05DCE8(longlong param_1); +weapon_stats * proc_7F05DD38(void); +void camera_sniper_zoom(float zoom); void proc_7F05DE94(float param_1); -undefined * proc_7F05DF84(int param_1); -undefined * proc_7F05DFA8(int param_1); +weapon_stats * proc_7F05DF84(int param_1); +weapon_stats * proc_7F05DFA8(int param_1); undefined proc_7F05DFCC(int param_1); ulonglong proc_7F05DFF0(int param_1); ulonglong proc_7F05E014(int param_1); @@ -16796,7 +19286,7 @@ void proc_7F05F928(int param_1); void proc_7F05FA7C(int param_1); void proc_7F05FB00(int param_1); int ** proc_7F05FB64(int param_1); -void handles_firing_or_throwing_weapon_in_hand(int hand); +void handles_firing_or_throwing_weapon_in_hand(HAND hand); void proc_7F061920(void); void proc_7F061948(undefined *param_1,int param_2,float *param_3,float *param_4); void proc_7F061BF4(int param_1); @@ -16816,7 +19306,6 @@ void recall_joy2_hits_edit_flag(int param_1,float *param_2,int param_3); void proc_7F064934(longlong param_1); undefined4 proc_7F0649AC(longlong param_1); void proc_7F0649D8(int param_1); -void handle_weapon_id_values_possibly_1st_person_animation(uint param_1,int param_2); void proc_7F066E64(void); int get_keyanalyzer_flag(void); void proc_7F066F08(void); @@ -16857,13 +19346,13 @@ void proc_7F068EC4(int param_1,undefined4 *param_2); void proc_7F06908C(undefined4 *param_1); void set_unset_ammo_on_screen_setting(int flags,int isset); void give_cur_player_ammo(AMMOTYPES type,int amount); -int check_cur_player_ammo_amount_in_inventory(int type); +int check_cur_player_ammo_amount_in_inventory(AMMOTYPES type); int check_cur_player_ammo_amount_total(int type); -undefined4 get_max_ammo_for_type(AMMOTYPES type); +int get_max_ammo_for_type(AMMOTYPES type); void set_max_ammo_for_cur_player(void); int get_ammo_in_hands_magazine(int hand); int get_ammo_in_hands_weapon(int hand); -undefined4 get_ammo_type_for_weapon(int weapon); +AMMOTYPES get_ammo_type_for_weapon(ITEM_IDS weapon); int get_ammo_count_for_weapon(int weapon); void add_ammo_to_weapon(int weapon,int ammo); undefined4 get_max_ammo_for_weapon(int weapon); @@ -16871,7 +19360,7 @@ undefined4 *microcode_generation_ammo_related(int *buffer,int *imagedeclaration, void set_rgba_redirect_generate_microcode(int *buffer,int *imagedeclaration,f32 param_3,f32 param_4,f32 hoffset,f32 param_6,f32 voffset,int param_8); uint * proc_7F069A50(undefined4 *param_1,byte *param_2,uint param_3,int param_4,uint param_5,int param_6,int param_7); uint * display_ammo_total_in_a1(undefined4 *param_1,undefined8 param_2,uint param_3,int param_4,uint param_5,int param_6,int param_7); -int * generate_ammo_total_microcode(void); +u32 * generate_ammo_total_microcode(void); undefined4 * proc_7F06A334(undefined4 *param_1); void set_unset_bitflags(int bitflags,int flag); void proc_7F06A5E4(uint **param_1); @@ -16887,7 +19376,7 @@ void increment_num_deaths(void); int get_curplayer_numdeaths(void); void increment_num_suicides_display_MP(void); int get_curplayer_numsuicides(void); -void proc_7F06ABB0(uint **param_1,float *param_2,float *param_3,int param_4,int param_5,int param_6,int param_7,int param_8); +void proc_7F06ABB0(int *DL,float *xypos,float *width,int height,int rotateleft90,int fliph,int flipv,int red); void display_image_at_on_screen_coord(int *DL,int *xypos,f32 wdivh,int width,int height,int rotateleft90,int fliph,int flipv,int red,int green,int blue,int alpha,int format,int param_14); int * proc_7F06B120(int *param_1,int param_2); void proc_7F06B248(int param_1); @@ -16897,9 +19386,9 @@ void drawjointlist(int param_1,uint *param_2,undefined4 param_3,int param_4); undefined4 probably_damage_detail_blood_effect_related(int **param_1,float *param_2,float *param_3,int *param_4,ushort **param_5); undefined4 proc_7F06C010(int **param_1,float *param_2,float *param_3,int *param_4,ushort **param_5); ulonglong proc_7F06C060(int param_1,int param_2); -uint get_obj_instance_controller_for_header(PitemZ_header *objheader); +uint get_obj_instance_controller_for_header(object_header *objheader); void set_obj_instance_scale_to_zero(int *ptrobjinstance); -uint get_aircraft_obj_instance_controller(int *objheader); +uint get_aircraft_obj_instance_controller(object_header *objheader); void proc_7F06C3B4(int param_1,ushort *param_2,ushort **param_3); void set_aircraft_obj_inst_scale_to_zero(int *objinstance); void set_80036084(s32 param_1); @@ -16910,21 +19399,21 @@ void return_null(void); void proc_7F06C474(int param_1,float *param_2,undefined4 param_3,undefined4 param_4); void proc_7F06C550(int param_1,float *param_2,undefined4 param_3,undefined4 param_4); undefined2 proc_7F06C570(ushort *param_1,longlong param_2); -int proc_7F06C660(int param_1,ushort *param_2,longlong param_3); -int getsubmatrix(int param_1,uint param_2,undefined4 param_3,undefined4 param_4); +int proc_7F06C660(int objinst,ushort *param_2,longlong param_3); +int getsubmatrix(int objinst,uint param_2,undefined4 param_3,undefined4 param_4); void proc_7F06C710(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4); float proc_7F06C768(int param_1,uint param_2,undefined4 param_3,undefined4 param_4); int extract_id_from_object_structure_microcode(int objinst,ushort *partdesc); -void getpartoffset(longlong param_1,ushort *param_2,undefined4 *param_3,undefined4 param_4); -void setpartoffset(longlong param_1,ushort *param_2,float *param_3,undefined4 param_4); -void getsuboffset(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4); -void setsuboffset(int param_1,float *param_2,undefined4 param_3,undefined4 param_4); -ushort ** getsubroty(int param_1,uint param_2,undefined4 param_3,undefined4 param_4); -void setsubroty(int param_1,float param_2,float param_3,undefined4 param_4); +void getpartoffset(longlong objinst,ushort *partdesc,undefined4 *param_3,undefined4 param_4); +void setpartoffset(longlong objinst,ushort *partedesc,float *param_3,undefined4 param_4); +void getsuboffset(int objinst,undefined4 *param_2,undefined4 param_3,undefined4 param_4); +void setsuboffset(int objinst,xyzpoint *param_2); +ushort ** getsubroty(int objinst,uint param_2,undefined4 param_3,undefined4 param_4); +void setsubroty(int objinst,float param_2,float param_3,undefined4 param_4); void set_obj_instance_controller_scale(int instancecontroller,f32 scale); void proc_7F06CE84(int param_1,undefined4 param_2); -float getjointsize(int param_1,ushort *param_2,undefined8 param_3,undefined4 param_4); -float getinstsize(int param_1,uint param_2,undefined4 param_3,undefined4 param_4); +float getjointsize(int objinst,ushort *param_2,undefined8 param_3,undefined4 param_4); +float getinstsize(int objinst,uint param_2,undefined4 param_3,undefined4 param_4); void proc_7F06D07C(float *param_1,float *param_2,float param_3); float proc_7F06D0CC(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5); void proc_7F06D160(undefined8 param_1,undefined8 param_2,float param_3); @@ -16932,8 +19421,8 @@ uint proc_7F06D1CC(int param_1,int param_2,int param_3); uint proc_7F06D2E4(int param_1,longlong param_2,int param_3,int param_4,int param_5,short *param_6); float proc_7F06D3F4(int param_1,longlong param_2,int param_3,int param_4,int param_5,float *param_6); void proc_7F06D490(int param_1,ushort *param_2); -void subcalcpos(int param_1,uint param_2,undefined4 param_3,undefined4 param_4); -void process_01_group_heading(float **param_1,int param_2,ushort *param_3); +void subcalcpos(int objanim,uint param_2,undefined4 param_3,undefined4 param_4); +void process_01_group_heading(float **param_1,int objinst,ushort *partdesc); void proc_7F06D8B0(void); void proc_7F06DB5C(float **param_1,int param_2,ushort *param_3,float *param_4); uint proc_7F06DE04(int param_1,uint param_2,uint param_3); @@ -17013,7 +19502,7 @@ undefined4 proc_7F07549C(int param_1,float *param_2,float *param_3,ushort **para uint proc_7F0754BC(int *param_1,int param_2); void proc_7F0755B0(void); void convert_obj_microcode_offset_to_rdram_addr(ushort *param_1,int param_2,int param_3); -void proc_7F075A90(ushort **param_1,int param_2,int param_3); +void proc_7F075A90(object_header *objheader,int param_2,int param_3); void proc_7F075B08(void); uint set_microcode_entry_numbers(ushort *param_1); void set_objuse_flag_compute_grp_nums_set_obj_loaded(object_header *objheader); @@ -17021,10 +19510,10 @@ void unknown_object_microcode_handler(int param_1,ushort *param_2); void proc_7F075F68(int param_1,ushort **param_2,undefined4 param_3); void proc_7F075FAC(int param_1,ushort **param_2,undefined4 param_3); void proc_7F076030(int param_1,int param_2,ushort *param_3,ushort **param_4); -void proc_7F0760C4(ushort **param_1,ushort **param_2,int *param_3); -void proc_7F07623C(undefined8 param_1,ushort *param_2,int param_3,int param_4); -void proc_7F0762E0(undefined8 param_1,byte *param_2,int param_3,uint *param_4); -void load_object_fill_header(object_header *objheader,u8 *recallstring,int targetloc,int sizeleft,int param_5); +void proc_7F0760C4(object_header *objheader,ushort **param_2,int *param_3); +void proc_7F07623C(object_header *objheader,ushort *param_2,int param_3,int param_4); +void proc_7F0762E0(object_header *objheader,u8 *objectstring,int targetloc,uint *buffer); +void load_object_fill_header(object_header *objheader,u8 *recallstring,int targetloc,int sizeleft,int buffer); void load_object_into_memory(object_header *header,u8 *recallstring); void load_object_into_memory_unused_maybe(object_header *header,int *recallstring,int targetloc,int sizeleft); s32 is_less_than_certain_power_of_2(int number); @@ -17037,12 +19526,12 @@ int proc_7F076848(int param_1,int param_2,int param_3); int proc_7F0768B8(int param_1,int param_2,int param_3); int proc_7F076928(int param_1,int param_2,int param_3); void generate_microcode_for_othermode_setting(undefined4 *DL,int param_2,longlong param_3,longlong bowtie); -void likely_generate_DL_for_image_declaration(uint **DLtarget,uint *imgcall,int param_3,longlong param_4,uint param_5); +void append_image_to_DL(uint **DLtarget,sImageTableEntry *imgcall,int param_3,longlong bowtie,uint ul_s_t); void proc_7F077BB8(s32 param_1,s32 param_2,s32 param_3); void proc_7F077BD0(void); void set_BONDdata_screensize(float width,float height); void set_ulx_uly(f32 ulx,f32 uly); -void sub_GAME_7F077C30(f32 arg0,f32 arg1,f32 arg2); +void sub_GAME_7F077C30(f32 pnear,f32 pfovy,f32 paspect); void proc_7F077C5C(void); void proc_7F077EEC(float *param_1,float *param_2,float param_3); void proc_7F077FB4(float *param_1,float param_2,float *param_3); @@ -17051,26 +19540,26 @@ void proc_7F078060(float *param_1,float *param_2); void proc_7F0780F0(float *param_1,float param_2,float *param_3); void proc_7F078140(float *param_1,float *param_2,float param_3,float param_4,float param_5); void proc_7F078258(float *param_1,float *param_2,float param_3,float param_4); -void proc_7F078324(int param_1); -int proc_7F078334(void); -void proc_7F078344(int param_1); -int proc_7F078354(void); -void proc_7F078364(int param_1); -int proc_7F078374(void); -void proc_7F078384(int param_1); -int proc_7F078394(void); -void proc_7F0783A4(int param_1); -int proc_7F0783C4(void); -void proc_7F0783D4(int param_1); -int proc_7F0783E4(void); -int proc_7F0783F4(void); -void proc_7F078404(int param_1); -int proc_7F078414(void); +void set_BONDdata_field_10C4(int param_1); +int get_BONDdata_field_10C4(void); +void set_BONDdata_field_10C8(int param_1); +int get_BONDdata_field_10C8(void); +void set_BONDdata_field_10D8(int param_1); +int get_BONDdata_field_10D8(void); +void set_BONDdata_field_10E0(int param_1); +int get_BONDdata_field_10E0(void); +void copy_BONDdata_field_10CC_to_10E8_set_10CC(int param_1); +int get_BONDdata_field_10CC(void); +void set_BONDdata_field_10DC(int param_1); +int get_BONDdata_field_10DC(void); +int get_BONDdata_field_10E8(void); +void set_BONDdata_field_10D0(int param_1); +int get_BONDdata_field_10D0(void); void proc_7F078424(int param_1); -int proc_7F078444(void); -int proc_7F078454(void); -void proc_7F078464(int param_1); -int proc_7F078474(void); +int get_BONDdata_field_10D4(void); +int get_BONDdata_field_10EC(void); +void set_BONDdata_field_10E4(int param_1); +int get_BONDdata_field_10E4(void); f32 getPlayer_c_lodscalez(void); int getPlayer_c_lodscalezu32(void); f32 getPlayer_c_screenwidth(void); @@ -17079,13 +19568,13 @@ f32 getPlayer_c_screenleft(void); f32 getPlayer_c_screentop(void); f32 getPlayer_c_perspfovy(void); f32 getPlayer_c_perspaspect(void); -void proc_7F078504(undefined4 *param_1); -void proc_7F078534(undefined4 *param_1); -void proc_7F078568(undefined4 *param_1); -void proc_7F078598(float *param_1); +void setpointtocameratopnorm(xyzpoint *param_1); +void setpointtocameratopnorminvertedy(xyzpoint *param_1); +void setpointtocameraleftnorm(xyzpoint *param_1); +void setpointtocameraleftnorminvertedx(xyzpoint *param_1); f32 getPlayer_c_perspnear(void); void proc_7F0785DC(void); -void proc_7F078950(undefined4 *param_1,undefined4 *param_2); +void proc_7F078950(xyzpoint *param_1,undefined4 *param_2); void proc_7F078980(undefined4 *param_1,undefined4 *param_2); void proc_7F0789B0(undefined4 *param_1,undefined4 *param_2); void proc_7F0789E0(undefined4 *param_1,undefined4 *param_2); @@ -17105,7 +19594,7 @@ void solo_char_load(void); void maybe_solo_intro_camera_handler(void); CAMERAMODE get_camera_mode(void); longlong proc_7F07A534(undefined4 param_1,float *param_2,char *param_3,float *param_4,u32 param_5,float param_6); -void set_camera_mode(int param_1); +void set_camera_mode(CAMERAMODE param_1); void proc_7F07B1A4(void); void proc_7F07B2A0(int param_1,float param_2,float *param_3,float *param_4); void proc_7F07B56C(void); @@ -17175,7 +19664,7 @@ void proc_7F080010(void); float proc_7F080228(void); void proc_7F0802C4(void); undefined4 * proc_7F0804E0(undefined4 *param_1); -void proc_7F0807B0(undefined4 param_1,undefined4 param_2,undefined4 param_3,float param_4); +void proc_7F0807B0(u32 param_1,u32 param_2,u32 param_3,float param_4); void proc_7F0807E0(undefined4 param_1,undefined8 param_2,int param_3,int param_4,f32 param_5,undefined param_6,undefined param_7,undefined param_8,undefined param_9,undefined param_10,undefined4 param_11); void fade_to_over_seconds(f32 seconds,f32 fadeto); ulonglong check_if_fade_to_black_complete(void); @@ -17192,18 +19681,18 @@ void proc_7F083FC8(void); void proc_7F084360(void); void MoveBond(char param_1,char param_2,ushort param_3,ushort param_4); void proc_7F086990(undefined8 param_1,undefined8 param_2,ushort param_3,ushort param_4); -undefined8 proc_7F086BF8(void); -undefined8 proc_7F086C1C(void); -undefined8 get_curplayer_viewport_width(void); +int getWidth320or440(void); +int getHeight330or240(void); +s32 get_curplayer_viewport_width(void); undefined8 get_curplayer_viewport_ulx(void); int get_curplayer_viewport_height(void); int get_curplayer_viewport_uly(void); void possibly_reset_viewport_options_for_player(char param_1,char param_2,ushort param_3); -void proc_7F0875E4(void); +void proc_7F0875E4(s32 roomindex); void store_BONDdata_curpos_to_previous(void); void proc_7F0876C4(float *param_1,float *param_2,float *param_3); undefined4 proc_7F087A08(undefined4 param_1); -void seems_to_load_cuff_microcode(void); +void seems_to_load_cuff_microcode(void *instance,Gitemheader *header,void *param_3); undefined4 * proc_7F087E74(undefined4 *param_1); undefined4 * proc_7F088618(undefined4 *param_1); void proc_7F0888E8(void); @@ -17212,20 +19701,20 @@ undefined4 * maybe_mp_interface(void); undefined8 write_stan_tiles_in_yellow(undefined8 param_1); void proc_7F089718(float param_1); void proc_7F08976C(undefined4 param_1); -undefined4 proc_7F089778(int param_1); +f32 proc_7F089778(int param_1); float proc_7F089780(int param_1); int get_curplayer_positiondata(void); void kill_current_player(void); int proc_7F0898E8(void); -ulonglong record_damage_kills(void); -void proc_7F089E4C(undefined4 param_1,float param_2,undefined8 param_3,undefined8 param_4,undefined4 param_5,undefined4 param_6); +void record_damage_kills(f32 arg0,f32 arg1,f32 arg2,s32 arg3,f32 arg4); +void proc_7F089E4C(f32 param_1,float param_2,f32 param_3); ulonglong check_if_bond_is_invincible(void); ulonglong check_if_healthbar_timer_greater_than_0(void); -f32 get_BONDdata_field19C(void); +f32 get_BONDdata_bondfadefracnew(void); float get_curplay_horizontal_rotation_in_degrees(void); float get_curplay_vertical_rotation_in_degrees(void); int proc_7F089F38(void); -void set_bondata_invincible_flag(char param_1); +void set_bondata_invincible_flag(char flag); ulonglong get_bondata_invincible_flag(void); void set_invisible_to_guards_flag(BOOL param_1); BOOL get_invisible_to_guards_flag(void); @@ -17246,7 +19735,7 @@ void reset_intro_camera_message_dialogs_for_BONDdata(void); void proc_7F08A380(uint param_1); void set_flags_in_BONDdata_stationary_intro_cam(uint param_1); void proc_7F08A3B4(undefined4 param_1,undefined4 param_2); -ulonglong display_string_in_lower_left_corner(char *text); +void display_string_in_lower_left_corner(char *text,...); void proc_7F08A4E4(void); undefined4 * proc_7F08A5FC(undefined4 *param_1); void proc_7F08A900(void); @@ -17254,7 +19743,7 @@ void proc_7F08A928(uint param_1); void proc_7F08A944(uint param_1); void display_string_at_top_of_screen(char *text); void proc_7F08A9F8(void); -undefined4 * proc_7F08AAE8(void); +u32 * print_player_xyz_info(void); undefined4 proc_7F08B0F0(char *param_1); undefined8 proc_7F08BCB8(undefined8 param_1); undefined8 proc_7F08BCC0(char *param_1,undefined8 param_2,uint param_3); @@ -17273,19 +19762,19 @@ void reorder_inventory_ptrs_based_on_id_code(undefined4 *param_1); int get_ptr_next_available_weapon(void); void set_BONDdata_allguns_flag(int param_1); int get_BONDdata_allguns_flag(void); -int * get_ptr_inventory_item(int item); -ulonglong is_weapon_in_inv(int param_1); +int * get_ptr_inventory_item(ITEM_IDS item); +BOOL is_weapon_in_inv(ITEM_IDS item); int * get_ptr_inventory_for_item_in_hand(int item,int hand); ulonglong is_item_for_hand_in_inventory(int item,int hand); ulonglong check_if_item_available(ITEM_IDS weaponid); ulonglong check_if_item_for_hand_available(ITEM_IDS item,int hand); -undefined8 add_item_to_inventory(ITEM_IDS item); +BOOL add_item_to_inventory(ITEM_IDS item); undefined8 add_doubles_item_to_inventory(int right,int left); int proc_7F08C570(char param_1); void proc_7F08C61C(longlong param_1); undefined8 proc_7F08C724(int param_1); ulonglong proc_7F08C764(char *param_1); -void proc_7F08C86C(int *param_1,int *param_2,longlong param_3); +void proc_7F08C86C(int *nextright,int *nextleft,s32 direction); void proc_7F08CB10(int *param_1,int *param_2,longlong param_3); undefined8 proc_7F08CE70(uint param_1); undefined8 proc_7F08CF0C(void); @@ -17365,9 +19854,9 @@ void display_debug_menu_text_onscreen(void); void handle_debug_stanview(void); void handle_debug_bondview(void); void handle_debug_case_2(void); -void null_68(void); -void nullsub_35(void); -uint debug_menu_processor(undefined8 param_1,undefined8 param_2,uint param_3,uint param_4); +void removed_do_debug_profile_flag_false(void); +void removed_do_debug_profile_flag_true(void); +void debug_menu_processor(u32 stick_h,u32 stick_v,controller_buttons button_held,controller_buttons button_pressed); u32 get_debug_render_raster(void); u32 get_debug_freeze_processing(void); u32 get_debug_limit_controller_input(void); @@ -17386,8 +19875,8 @@ BOOL get_debug_joy2hitsedit_flag(void); BOOL get_debug_joy2detailedit_flag(void); BOOL get_debug_explosioninfo_flag(void); BOOL get_debug_prroomloads_flag(void); -BOOL get_debug_VisCVG_flag(void); -void set_debug_VisCVG_flag(BOOL param_1); +BOOL get_linemode_flag(void); +void set_linemode_flag(BOOL param_1); BOOL get_debug_007_unlock_flag(void); BOOL get_debug_enable_agent_levels_flag(void); BOOL get_debug_enable_all_levels_flag(void); @@ -17405,18 +19894,18 @@ void proc_7F0915BC(float param_1); void handle_debug_intropos(void); void handle_debug_worldpos(void); void stanStoreBondCoord(void); -int proc_7F091740(uint param_1); -void proc_7F09177C(void); -void proc_7F09193C(void); -undefined8 proc_7F091A5C(longlong param_1); -undefined8 proc_7F091A78(int param_1); -void proc_7F091AAC(undefined8 param_1); -void proc_7F091B64(void); -void proc_7F092438(int param_1); -void unload_loop_all_players(void); -int proc_7F092774(int param_1); -uint proc_7F0927BC(int param_1); -void proc_7F0927F4(longlong param_1); +int cheatButton_7F091740(controller_buttons *param_1); +void cheatButton_7F09177C(void); +void cheat_buttons_mp_related(void); +u32 is_cheat_index_equal_to_1C(u32 cheatindex); +u32 cheatCheckIfMPCheat(CHEAT_IDS cheat); +void turn_on_cheat_for_players(u32 cheatindex); +void handle_cheats_turned_on(CHEAT_IDS cheat); +void cheatDisplayMessageActivateCheat(CHEAT_IDS cheat); +void cheatDisableAllCheats(void); +int cheatGetMenuTextPointer(CHEAT_IDS cheat); +uint cheatCheckIfOn(CHEAT_IDS cheat); +void set_DKMode(s32 param_1); undefined8 proc_7F092890(short *param_1,short *param_2,short *param_3,float *param_4,float *param_5,float *param_6,float *param_7,float *param_8); void proc_7F092E50(void); undefined4 * proc_7F09343C(undefined4 *param_1,longlong param_2); @@ -17426,11 +19915,11 @@ undefined8 proc_7F0938FC(float *param_1,float *param_2,float *param_3); undefined8 proc_7F093A78(float *param_1,float *param_2,float *param_3); void proc_7F093BFC(float *param_1,float *param_2,float *param_3); float proc_7F093C48(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5); -float proc_7F093C88(float param_1); +float addpoint5tofloat(float param_1); void proc_7F093CB0(int param_1,float param_2); void proc_7F093FA4(int param_1,float param_2); uint proc_7F094298(float param_1); -void proc_7F09442C(undefined4 param_1); +void store_stagenum_to_copyof_stagenum(STAGENUM stagenum); void proc_7F094438(void); uint * proc_7F094488(void); void proc_7F097388(float *param_1,float *param_2,uint param_3,float param_4,float param_5,float *param_6); @@ -17440,17 +19929,17 @@ undefined4 *proc_7F098A2C(undefined4 *param_1,int param_2,int param_3,int param_ void default_player_perspective_and_height(void); void reset_play_data_ptrs(void); void init_player_data_ptrs_construct_viewports(int playercount); -ulonglong get_num_players(void); -void initBONDdataforPlayer(int player); -void set_cur_player(int playernum); +s32 get_num_players(void); +void initBONDdataforPlayer(PLAYER_ID player); +void set_cur_player(PLAYER_ID playernum); u32 get_cur_playernum(void); -longlong proc_7F09B15C(int param_1); +void proc_7F09B15C(int position_data_pointer); void set_cur_player_screen_size(short width,short height); void set_cur_player_viewport_size(short ulx,short uly); -void set_watch_menu_current_size_unused_maybe(f32 size); -void proc_7F09B224(undefined4 param_1); -f32 get_watch_menu_current_size_unused_maybe(void); -undefined8 proc_7F09B244(ulonglong param_1); +void set_cur_player_fovy(f32 fovy); +void set_cur_player_aspect(f32 aspect); +f32 get_cur_player_fovy(void); +s32 proc_7F09B244(ITEM_IDS param_1); void proc_7F09B368(int param_1); longlong proc_7F09B398(uint param_1); void proc_7F09B41C(void); @@ -17458,7 +19947,7 @@ int proc_7F09B4D8(int param_1); int proc_7F09B528(int param_1); void proc_7F09B600(byte *param_1,byte *param_2,uint *param_3); undefined4 proc_7F09B740(void); -void proc_7F09B788(longlong param_1); +void proc_7F09B788(u64 param_1); void removed_7f09b7a0(void); void proc_7F09B7A8(void); void proc_7F09B7E4(void); @@ -17491,7 +19980,7 @@ void proc_7F0A0D90(int param_1); void proc_7F0A0E98(int param_1); void proc_7F0A108C(float *param_1,float *param_2,short param_3,short param_4,int param_5,char param_6,undefined param_7); undefined4 * proc_7F0A1A94(undefined4 *param_1,int param_2,uint param_3); -undefined4 * proc_7F0A1D78(undefined4 *param_1); +void proc_7F0A1D78(undefined4 *param_1); void proc_7F0A1DA0(float *param_1,float *param_2,float *param_3,float *param_4,float param_5,float param_6,float param_7,float param_8); void proc_7F0A2160(undefined4 *param_1,undefined4 param_2,float param_3); void proc_7F0A28D4(void); @@ -17521,10 +20010,10 @@ void proc_7F0A4824(undefined8 param_1,undefined8 param_2); void proc_7F0A4860(void); void init_watch_at_start_of_stage(void); void controller_deadzone_related(void); -uint * proc_7F0A4B40(undefined4 *param_1); -undefined8 proc_7F0A4D74(void); -int cur_player_get_control_type(void); -void cur.player.set.control_type(int param_1); +void proc_7F0A4B40(undefined4 *param_1); +u32 controllerCheckControllerTypesAllowed(void); +s32 cur_player_get_control_type(void); +void cur_player_set_control_type(int type); u32 get_cur_player_look_vertical_inverted(void); void set_cur_player_look_vertical_inverted(u32 param_1); u32 cur_player_get_autoaim(void); @@ -17542,40 +20031,40 @@ void cur.player.set.screen.setting(undefined4 param_1); undefined4 get.screen_ratio(void); void set.screen_ratio(undefined4 param_1); int ** proc_7F0A4EF8(void); -void proc_7F0A4F44(void); -ulonglong is_holding_greater_than_2E_left_on_stick(void); -ulonglong is_holding_greater_than_2E_right_on_stick(void); -undefined4 get.controlstick_lr_enabled(void); -void set.controlstick_lr_disabled(void); -bool proc_7F0A4FB0(void); -ulonglong proc_7F0A4FEC(void); -ulonglong proc_7F0A5028(void); -ulonglong proc_7F0A504C(void); -undefined4 proc_7F0A5070(void); -void proc_7F0A507C(void); -ulonglong proc_7F0A5088(void); -ulonglong proc_7F0A50C4(void); -ulonglong proc_7F0A5100(void); -ulonglong proc_7F0A5124(void); -undefined4 proc_7F0A5148(void); -void proc_7F0A5154(void); +void sub_GAME_7F0A4F44(void); +u32 is_holding_greater_than_2E_left_on_stick(void); +u32 is_holding_greater_than_2E_right_on_stick(void); +u32 get_controlstick_lr_enabled(void); +void set_controlstick_lr_disabled(void); +bool sub_GAME_7F0A4FB0(void); +bool proc_7F0A4FEC(void); +ulonglong is_holding_greater_than_2E_up_on_stick(void); +ulonglong is_holding_greater_than_2E_down_on_stick(void); +undefined4 get_D_80040AE0(void); +void set_D_80040AE0_0(void); +ulonglong sub_GAME_7F0A5088(void); +ulonglong sub_GAME_7F0A50C4(void); +ulonglong is_holding_less_than_10_up_on_stick(void); +ulonglong is_holding_less_than_10_down_on_stick(void); +undefined4 get_D_80040AE4(void); +void set_D_80040AE4_0(void); ulonglong proc_7F0A5160(void); ulonglong proc_7F0A519C(void); -int ** proc_7F0A51D8(void); -int ** proc_7F0A5210(void); +void sub_GAME_7F0A51D8(void); +void proc_7F0A5210(void); void proc_7F0A526C(void); void proc_7F0A53D8(void); void proc_7F0A5504(void); void proc_7F0A55C4(void); void proc_7F0A56A4(void); void proc_7F0A5784(void); -void proc_7F0A5860(void); +void sub_GAME_7F0A5860(void); void proc_7F0A5900(void); void proc_7F0A5998(void); -void proc_7F0A5A64(void); -void proc_7F0A5AF4(void); +void sub_GAME_7F0A5A64(void); +void sub_GAME_7F0A5AF4(void); void proc_7F0A5B80(void); -void proc_7F0A611C(float *param_1,int *param_2,int param_3,int *param_4,int *param_5,undefined4 *param_6,int param_7,int param_8,int param_9); +void proc_7F0A611C(float *controltype_2,int *controltype_0,int param_3,int *negvspacing,int *controltype_1,undefined4 *controltype_set,int param_7,int param_8,int param_9); void proc_7F0A6618(void); void proc_7F0A66A0(void); void proc_7F0A672C(void); @@ -17587,39 +20076,39 @@ float proc_7F0A6A2C(float param_1); void proc_7F0A6A80(void); undefined4 * proc_7F0A6EE8(undefined4 *param_1); void proc_7F0A70AC(int param_1,int param_2); -undefined4 * proc_7F0A714C(u32 param_1,u32 param_2,u32 param_3); +u32 * proc_7F0A714C(u32 *DL,u32 param_2,u32 param_3); void proc_7F0A77A8(undefined8 param_1,undefined8 param_2); -uint * proc_7F0A77C8(undefined4 *param_1); -uint * proc_7F0A7C18(undefined4 *param_1); -undefined8 proc_7F0A7DBC(undefined8 param_1); +void proc_7F0A77C8(undefined4 *param_1); +void proc_7F0A7C18(undefined4 *param_1); +u32 stub_return_param_7F0A7DBC(u32 param_1); uint * proc_7F0A7DC4(undefined4 *param_1); -uint * debug_gun_watch_move_related(void); -longlong proc_7F0A830C(undefined8 param_1,undefined8 param_2); +void debug_gun_watch_move_related(void); +void proc_7F0A830C(undefined8 param_1,undefined8 param_2); int ** proc_7F0A8378(void); uint * debug_gun_watch_move_related2(undefined8 param_1,undefined8 param_2); uint * proc_7F0A8B10(undefined8 param_1,u32 param_2); void proc_7F0A8D40(undefined2 *param_1,float param_2,int param_3); void proc_7F0A8ED0(ushort *param_1); undefined4 * proc_7F0A8FEC(void); -void proc_7F0A9180(void); +void call_sfx_c_700091C8(void); void proc_7F0A91A0(ulonglong param_1); undefined4 * proc_7F0A91C8(void); u16 proc_7F0A9358(void); void proc_7F0A9364(ushort param_1); -uint * proc_7F0A9398(undefined4 *param_1,uint param_2,uint param_3,byte *param_4,uint param_5,int param_6,uint param_7,int param_8,int param_9,uint param_10,int param_11); -float proc_7F0A95C4(float param_1,float param_2,undefined8 param_3,undefined8 param_4,float param_5); +void proc_7F0A9398(undefined4 *param_1,uint param_2,uint param_3,byte *param_4,uint param_5,int param_6,uint param_7,int param_8,int param_9,uint param_10,int param_11); +float sub_GAME_7F0A95C4(float param_1,float param_2,float param_3); undefined8 proc_7F0A9610(void); void proc_7F0A9684(char param_1,int *param_2,float *param_3,float *param_4); uint * proc_7F0A97D0(undefined4 *param_1); uint * proc_7F0A9AB8(undefined4 *param_1); -uint * proc_7F0AA7C8(undefined4 *param_1); -uint * proc_7F0AADC0(void); -void proc_7F0AB48C(void); -void proc_7F0AB498(void); -void proc_7F0AB4A4(void); -undefined8 proc_7F0AB4B0(undefined8 param_1); -uint * proc_7F0AB4B8(undefined8 param_1,undefined8 param_2); -int ** proc_7F0AB7A4(undefined4 *param_1,undefined4 param_2); +void sub_GAME_7F0AA7C8(u32 *DisplayList); +void proc_7F0AADC0(u32 *DL); +void zero_D_80040998(void); +void zero_D_8004099C(void); +void zero_D_800409A4(void); +u32 return_arg0_7F0AB4B0(u32 param_1); +void proc_7F0AB4B8(u32 *DL,u32 param_2); +void set_pparam1toparam2_disablejoylr_playsfx(u32 *param_1,u32 param_2); ulonglong proc_7F0AB7D8(int param_1); uint * proc_7F0AB908(undefined4 *param_1,uint param_2,int param_3,longlong param_4); uint * proc_7F0ABC1C(undefined4 *param_1); @@ -17628,23 +20117,23 @@ int proc_7F0AC0E8(char *param_1); char * proc_7F0AC120(char *param_1); uint * proc_7F0AC168(undefined8 param_1,undefined8 param_2); longlong proc_7F0ACA28(longlong param_1,int param_2,int param_3); -void removed_7f0acb70(void); -void proc_7F0ACB78(int param_1); -void proc_7F0ACB88(undefined4 param_1); -void proc_7F0ACB94(undefined4 param_1); -void proc_7F0ACBA0(undefined4 param_1); -void load_font_table_controllers(void); -undefined4 * microcode_constructor(undefined4 *DL); +void null_init_main_7f0acb70(void); +void setTextSpacingInverted(int spacing); +void setTextOrientation(s32 param_1); +void setTextWordWrap(s32 param_1); +void setTextOverlapCorrection(s32 param_1); +void load_font_tables(void); +void microcode_constructor(u32 *DL); undefined4 * combiner_bayer_lod_perspective(undefined4 *DL); undefined4 *draw_blackbox_to_screen(undefined4 *param_1,uint *param_2,uint *param_3,uint *param_4,uint *param_5); undefined4 *microcode_constructor_related_to_menus(undefined4 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,uint param_5,uint param_6); -uint * proc_7F0AD0F8(uint *param_1,int *param_2,int *param_3,uint *param_4,int param_5,int param_6,int param_7,int param_8,int param_9,int param_10,int param_11); -uint * en_text_write_stuff(undefined4 *param_1,int *param_2,int *param_3,byte *param_4,int param_5,int param_6,uint param_7,int param_8,int param_9,int param_10,int param_11); +uint * construct_fontchar_microcode(void *DL,int xpos,int ypos,void *ptr_tbl2entry,void *ptr_unk,void *ptr_tbl1,int ulx,int uly,int lrx,int lry,int unk); +void en_text_write_stuff(undefined4 *param_1,int *param_2,int *param_3,byte *param_4,int param_5,int param_6,uint param_7,int param_8,int param_9,int param_10,int param_11); uint * proc_7F0ADDAC(uint *param_1,uint *param_2,int *param_3,uint *param_4,int param_5,int param_6,int param_7,uint param_8,uint param_9,uint param_10,int param_11,int param_12,int param_13); uint * proc_7F0AE45C(uint *param_1,uint param_2,int param_3,int param_4,int param_5,uint param_6,int param_7,int param_8); -uint * jp_text_stuff(uint *param_1,uint *param_2,uint *param_3,byte *param_4,int param_5,int param_6,uint param_7,uint param_8,int param_9,int param_10,int param_11,int param_12); +void jp_text_stuff(uint *param_1,uint *param_2,uint *param_3,byte *param_4,int param_5,int param_6,uint param_7,uint param_8,int param_9,int param_10,int param_11,int param_12); void proc_7F0AE98C(int *param_1,int *param_2,byte *param_3,int param_4,int *param_5,int param_6); -void proc_7F0AEB64(int param_1,byte *param_2,byte *param_3,int param_4,int *param_5); +void find_width_word_in_string(int max_width,byte *text,byte *textbuffer,int secondfonttable,int *firstfonttable); void proc_7F0AEF0C(u32 param_1,u32 param_2,u32 param_3,u32 param_4); u32 sub_GAME_7F0AEF20(u32 param_1,u32 param_2); f32 proc_7F0AEF30(f32 param_1); @@ -17746,7 +20235,7 @@ longlong proc_7F0B3C8C(longlong param_1); int proc_7F0B4034(int param_1); int proc_7F0B4084(int param_1); int proc_7F0B40D4(int param_1); -void proc_7F0B4124(int param_1); +void load_bg_file(STAGENUM stagenum); void proc_7F0B47E0(void); void proc_7F0B4810(float param_1); f32 proc_7F0B4830(void); @@ -17766,7 +20255,7 @@ undefined8 proc_7F0B519C(float *param_1,float *param_2); undefined8 proc_7F0B5208(int param_1,float *param_2); ulonglong proc_7F0B5488(float *param_1,float *param_2); ulonglong proc_7F0B5528(int param_1,float param_2,float *param_3); -int proc_7F0B5864(void); +s32 proc_7F0B5864(void); uint * proc_7F0B5B14(uint *param_1,undefined8 param_2,undefined8 param_3,int param_4,int param_5); uint * proc_7F0B5B60(uint *param_1,undefined8 param_2,undefined8 param_3,int param_4,int param_5); undefined8 vis_is_inline_of_sight(float *param_1,float *param_2); @@ -17779,8 +20268,8 @@ ulonglong proc_7F0B5E50(int param_1); ulonglong proc_7F0B5E6C(int param_1); int proc_7F0B5E88(int param_1); void generate_room_load_string(void); -undefined4 decompressdata_with_8448buffer(int source,int target); -undefined4 proc_7F0B5FAC(int param_1,int param_2,int param_3); +u8 * decompressdata_with_8448buffer(int source,u8 *target); +int proc_7F0B5FAC(int param_1,int param_2,int param_3); uint * proc_7F0B609C(int param_1,uint *param_2,int param_3); uint * proc_7F0B61DC(int param_1,uint *param_2,int param_3); ulonglong proc_7F0B6314(int param_1); @@ -17802,7 +20291,7 @@ undefined8 proc_7F0B7F84(undefined8 param_1,int param_2,int param_3,int param_4, undefined8 push_arg_to_table(undefined8 param_1); undefined4 pull_arg_from_stack(void); undefined4 proc_7F0B83E4(int param_1); -byte * parse_global_vis_command_list(byte *cmd,uint mode); +byte * parse_global_vis_command_list(vis_command *cmd,uint mode); byte * proc_7F0B8A24(byte *param_1); void proc_7F0B8A6C(void); uint * proc_7F0B8D78(longlong param_1); @@ -17854,8 +20343,8 @@ undefined4 return_nearfog_values(void); undefined8 if_sky_present_convert_values(int param_1,float *param_2); void init_lightfixture_tables(void); int get_index_of_current_entry_in_init_lightfixture_table(void); -void add_entry_to_init_lightfixture_table(undefined4 param_1); -void save_ptrDL_enpoint_to_current_init_lightfixture_table(undefined4 param_1); +void add_entry_to_init_lightfixture_table(Gfx *DL); +void save_ptrDL_enpoint_to_current_init_lightfixture_table(int param_1); undefined8 check_if_imageID_is_light(longlong imageID); uint return_ptr_vertex_of_entry_room(char *entry,int room); void proc_7F0BB6F4(undefined8 param_1,ulonglong param_2); @@ -17878,31 +20367,31 @@ void proc_7F0BC7D4(void); longlong proc_7F0BC85C(int param_1); undefined4 * proc_7F0BC9C4(undefined4 *param_1,int param_2); int proc_7F0BCA14(int param_1); -void proc_7F0BCA34(int param_1,float *param_2); -void load_resource(ulonglong param_1,longlong param_2,int param_3,int *param_4); -void load_resource_from_indy(undefined *param_1,int param_2,int param_3,int param_4); +void proc_7F0BCA34(int index,float *param_2); +void load_resource(u8 *ptrdata,u32 bytes,fileentry *srcfile,resource_lookup_data_entry *lookupdata); +void load_resource_from_indy(u8 *ptrdata,u32 bytes,fileentry *srcfile,resource_lookup_data_entry *lookupdata); void ob_c_debug_setup(void); -void _load_rom_index_to_membank(int param_1,longlong param_2,int param_3,byte param_4); -undefined *_load_resource_index_to_membank(int param_1,longlong param_2,undefined *param_3,int param_4); -void _load_resource_named_to_membank(byte *param_1,int param_2,int param_3,byte param_4); -undefined * _load_resource_named_to_buffer(byte *param_1,int param_2,undefined *param_3,int param_4); -void load_bg_bytes_at_offset_to_membank(byte *param_1,int param_2,int param_3,int param_4); -ulonglong load_rom_resource_index_to_membank(int param_1,longlong param_2,int param_3,byte param_4); -undefined *load_resource_index_to_buffer(int param_1,longlong param_2,undefined *param_3,int param_4); -undefined4 get_temp_remaining_buffer_for_index(int param_1); -undefined4 get_remaining_buffer_for_index(int param_1); -void proc_7F0BD138(int param_1,int param_2,int param_3,longlong param_4); -undefined4 get_temp_buffer_remaining_value(byte *name); +void _load_rom_index_to_membank(int index,longlong param_2,int size,byte bank); +undefined * _load_resource_index_to_membank(int fileid,longlong param_2,undefined *param_3,int bank); +u8 * _load_resource_named_to_membank(byte *filename,int param_2,int size,byte bank); +u8 * _load_resource_named_to_buffer(byte *filename,int param_2,undefined *param_3,int param_4); +void load_bg_bytes_at_offset_to_membank(byte *bgname,char *src,int offset,int len); +u8 * load_rom_resource_index_to_membank(int index,longlong param_2,int size,byte bank); +void load_resource_index_to_buffer(int index,longlong param_2,u8 *ptrdata,int bytes); +s32 get_pc_remaining_buffer_for_index(int index); +u32 get_rom_remaining_buffer_for_index(int param_1); +void proc_7F0BD138(int index,u8 *ptrdata,int size,longlong param_4); +s32 get_pc_buffer_remaining_value(byte *name); void something_mem_bank_a0(byte param_1); void proc_7F0BD234(void); -int get_index_num_of_named_resource(byte *param_1); +int get_index_num_of_named_resource(byte *filename); void removed_handle_filetable_entry(int param_1); void removed_loop_handle_filetable_entries(void); void removed_loop_filetableentries(void); void proc_7F0BD410(void); void something_with_dyn_c_debug(void); void set_vtx_gfx_mem_alloc(void); -undefined4 get_ptr_displaylist(void); +Gfx * get_ptr_displaylist(void); int allocate_something_in_mgfx(int param_1); void proc_7F0BD6C4(int param_1); void proc_7F0BD6E0(void); @@ -17923,9 +20412,9 @@ void music_append_play_solo_death_short(void); void music_append_play_endtheme(void); void proc_7F0BDA84(void); void stage_load(LEVELID stagenum); -undefined4 proc_7F0BDF04(void); +STAGENUM proc_7F0BDF04(void); undefined4 proc_7F0BDF10(longlong param_1); -uint * proc_7F0BE30C(undefined4 *param_1); +uint * proc_7F0BE30C(Gfx *param_1); void proc_7F0BE8D0(void); void manage_mp_game(void); void proc_7F0BF800(void); @@ -17969,7 +20458,7 @@ void proc_7F0C0BF0(void); void proc_7F0C0C10(void); undefined4 get_mission_state(void); void set_missionstate(ulonglong param_1); -void proc_7F0C11FC(undefined4 param_1); +void sub_GAME_7F0C11FC(s16 param_1); void setmissionstate_to_zero(void); void proc_7F0C1288(void); void proc_7F0C12CC(void); @@ -17986,10 +20475,10 @@ int something_with_LnameX(uint param_1); void load_mission_text_bank(u32 param_1); void load_briefing_text_bank(int lnameID,undefined *target,int size); void blank_text_bank(int param_1); -byte * get_textptr_for_textID(u16 id); +u8 * get_textptr_for_textID(TEXTFILESTRINGS id); undefined8 MP_menu_page_adv_right(void); undefined8 MP_menu_page_adv_left(void); -undefined8 check_if_player_is_pressing_anything_right(char param_1); +s32 check_if_player_is_pressing_anything_right(char param_1); undefined8 check_if_player_is_pressing_anything_left(char param_1); int ** play_watch_sfx_beep(void); void unpause_game(void); @@ -18036,14 +20525,14 @@ int type6_7_generate_link_final_image(ushort *param_1,uint param_2,int param_3,u void proc_7F0CB67C(int param_1,int param_2,int param_3,int param_4); void type8_9_doohick(int param_1,int param_2,int param_3,undefined4 param_4,int param_5); void proc_7F0CBAF4(int *param_1,int param_2,int param_3); -uint * proc_7F0CBB0C(uint param_1,undefined4 *param_2); +uint * proc_7F0CBB0C(uint imageid,undefined4 *buffer); int proc_7F0CBB64(int param_1); -void proc_7F0CBB74(char *param_1,uint *param_2); -void load_image_to_buffer(uint *param_1,uint *param_2); -void proc_7F0CBE50(int param_1,uint *param_2); -void proc_7F0CBEE8(uint param_1,uint *param_2); -void proc_7F0CBF10(undefined4 param_1); -uint proc_7F0CBF2C(uint param_1); +void check_load_image_to_buffer(char *image,uint *buffer); +void load_image_to_buffer(uint *image,uint *buffer); +void proc_7F0CBE50(object_header *objheader,uint *buffer); +void calls_load_image_to_buffer(uint image,uint *buffer); +void proc_7F0CBF10(undefined *param_1); +uint proc_7F0CBF2C(uint bits); void load_prepare_global_image_bank(void); void proc_7F0CC4C0(void); void proc_7F0CC4C8(void); @@ -18062,18 +20551,18 @@ int proc_7F0CCAFC(float param_1); int proc_7F0CCB38(uint *param_1); uint * proc_7F0CCC50(uint *param_1,uint *param_2,int param_3,uint param_4,uint param_5,uint param_6); uint * proc_7F0CCFBC(uint *param_1,uint *param_2,int param_3,longlong param_4); -uint * expland_c0_DL_psuedocommands(uint *param_1,uint *param_2,uint param_3); +uint * expland_c0_DL_psuedocommands(uint *command,uint *facemapperimage,uint param_3); uint * proc_7F0CD430(uint *param_1,uint *param_2,int param_3,int param_4,int param_5,uint param_6,uint param_7); uint * proc_7F0CD7AC(uint *param_1,uint *param_2); uint * proc_7F0CDB64(uint *param_1,uint *param_2,int param_3,int param_4,int param_5,uint param_6); -uint * proc_7F0CDE18(uint *param_1,uint *param_2,int param_3,int param_4,int param_5); +uint * proc_7F0CDE18(uint *command,uint *facemapper_entry,int s_flags,int t_flags,int settilesize_offset); uint * proc_7F0CDEA8(uint *param_1,uint *param_2,int param_3,int param_4,int param_5,uint *param_6,uint param_7,uint param_8,uint param_9); uint * proc_7F0CDFA8(uint *param_1,uint *param_2,int param_3,int param_4,int param_5,uint param_6,uint param_7,uint param_8); uint * proc_7F0CE064(uint *param_1,uint *param_2,int param_3,int param_4,int param_5); uint * proc_7F0CE0AC(uint *param_1,uint *param_2,int param_3,int param_4,int param_5); uint * process_microcode_sort_display_modes_expand_image_calls(uint *param_1,int param_2,uint *param_3,uint *param_4); void proc_7F0CE794(int param_1,int param_2,int param_3); -undefined4 decompressdata(int source,int target,int buffer); +u8 * decompressdata(u8 *source,u8 *target,u8 *buffer); int proc_7F0CE894(void); ulonglong proc_7F0CE8B0(int *param_1,uint param_2,uint param_3,int param_4,int param_5,uint *param_6,uint *param_7); undefined8 proc_7F0CEEF0(int param_1,int param_2,ulonglong param_3,uint param_4); @@ -18088,71 +20577,71 @@ void load_rsp_microcode(int param_1,int param_2,undefined8 param_3,undefined4 pa void init_indy_if_not_ready(void); void dummy7F0CFF64(void); void init_indy_if_ready(void); -void indy_load_resource(char *param_1,undefined *param_2); -void indy_send_capture_data(char *param_1,undefined *param_2,uint param_3); -void indy_load_ramrom_file(char *param_1,undefined4 param_2,undefined4 param_3); +void indy_load_resource(char *filename,u8 *targetloc); +void indy_send_capture_data(char *name,undefined *param_2,uint size); +void indy_load_ramrom_file(char *filename,u8 *target,s32 size); void check_file_exported(char *param_1,undefined4 param_2,undefined4 param_3); -undefined4 check_file_found_on_indy(char *param_1,undefined4 *param_2); +u8 * check_file_found_on_indy(char *name,undefined4 *size); u32 send_command_string(char *param_1); void proc_7F0D0124(void); u32 send_indy_close_port_cmd(void); -void proc_7F0D0180(void); -void proc_7F0D01D0(void); -undefined8 proc_7F0D0220(undefined *param_1,uint param_2); -undefined8 proc_7F0D0358(undefined *param_1,uint param_2,undefined *param_3,uint param_4); -void proc_7F0D038C(undefined4 param_1,undefined4 param_2); -void proc_7F0D03D4(undefined4 param_1,undefined4 param_2); -void proc_7F0D041C(undefined4 param_1,undefined4 param_2); -void proc_7F0D0460(undefined4 param_1,undefined4 param_2,char *param_3); -void proc_7F0D04C4(undefined4 param_1,undefined4 param_2,undefined4 param_3); -void proc_7F0D0514(undefined4 param_1,undefined4 param_2,char *param_3); -void proc_7F0D0578(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4); -void proc_7F0D05D0(undefined4 param_1,undefined4 param_2,char *param_3,undefined4 param_4); -void proc_7F0D0644(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,uint param_5,undefined *param_6); -void proc_7F0D06C0(undefined4 param_1,undefined4 param_2,char *param_3,uint param_4,undefined *param_5); -void proc_7F0D0740(undefined4 param_1,undefined4 param_2,undefined4 param_3); -void proc_7F0D0790(undefined4 param_1,undefined4 param_2,char *param_3,undefined4 param_4,undefined4 param_5); -void proc_7F0D080C(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5); -void proc_7F0D086C(undefined4 param_1,undefined4 param_2,char *param_3,undefined4 param_4,undefined4 param_5); -void proc_7F0D08E8(undefined4 param_1,undefined4 param_2,undefined4 param_3); -void proc_7F0D0938(undefined4 param_1,undefined4 param_2,char *param_3); -void proc_7F0D099C(undefined4 param_1,undefined4 param_2,undefined4 param_3); -void proc_7F0D09EC(undefined4 param_1,undefined4 param_2,undefined4 param_3); -undefined8 post_indy__res_cmd_initialize(void); -undefined8 proc_7F0D0A7C(char *param_1); -undefined8 proc_7F0D0AC4(undefined4 param_1); -undefined8 proc_7F0D0B0C(char *param_1); -undefined8 proc_7F0D0B54(undefined4 param_1,undefined4 param_2); -undefined8 proc_7F0D0BA4(char *param_1,undefined4 param_2); -undefined8 proc_7F0D0BF4(undefined4 param_1,undefined4 param_2,uint param_3,undefined *param_4); -undefined8 post_indy__res_cmd_send_capture_data(char *string,uint size,undefined *data); -undefined8 proc_7F0D0CD0(undefined4 param_1); -undefined8 post_indy__res_cmd_request_ramrom_file(char *param_1,undefined4 param_2,undefined4 param_3); -undefined8 proc_7F0D0D74(undefined4 param_1,undefined4 param_2,undefined4 param_3); -undefined8 proc_7F0D0DD0(char *param_1,undefined4 param_2,undefined4 param_3); -undefined8 proc_7F0D0E2C(undefined4 param_1); -undefined8 proc_7F0D0E74(char *param_1); -undefined8 proc_7F0D0EBC(undefined4 param_1); -undefined8 proc_7F0D0F04(undefined4 param_1); -undefined8 proc_7F0D0F4C(undefined *param_1,uint param_2); -undefined8 proc_7F0D10A8(void); -undefined8 proc_7F0D1100(int param_1,int param_2); -undefined8 proc_7F0D11AC(int param_1,int param_2); -undefined8 proc_7F0D1248(int param_1,int param_2,undefined4 *param_3); -undefined8 proc_7F0D12F4(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4); -undefined8 proc_7F0D13B0(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,int *param_5,undefined *param_6); -undefined8 proc_7F0D1498(int param_1,int param_2,undefined4 *param_3); -undefined8 proc_7F0D1544(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,undefined4 *param_5); -undefined8 proc_7F0D160C(int param_1,int param_2,undefined4 *param_3); -undefined8 proc_7F0D16B8(int param_1,int param_2,undefined4 *param_3); -undefined8 proc_7F0D1764(undefined4 *param_1); -undefined8 proc_7F0D17AC(undefined4 *param_1,undefined4 *param_2); -undefined8 proc_7F0D17FC(undefined4 *param_1,undefined4 *param_2,int *param_3,undefined *param_4); -undefined8 proc_7F0D1864(undefined4 *param_1); -undefined8 proc_7F0D18AC(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3); -undefined8 proc_7F0D1908(undefined4 *param_1); -undefined8 proc_7F0D1950(undefined4 *param_1); -undefined8 proc_7F0D1998(int param_1,int param_2); +void sub_GAME_7F0D0180(u8 *buffer,u32 size); +void proc_7F0D01D0(u8 *buffer,u32 size); +undefined8 postindyresourcecommand(indy_resource_entry *cmd,u32 size); +u32 send2indyresourcecommands(indy_resource_entry *entry1,uint size1,indy_resource_entry *entry2,uint size2); +void post_type1_indyrescmd_sizenextcmd(s32 readsize,s32 writesize); +void post_type2_indyrescmd_cmds_rdy_to_proc(s32 readsize,s32 writesize); +void post_type0_indyrescmd_init(s32 readsize,s32 writesize); +void post_type3_indyrescmd(s32 rsize,s32 wsize,char *strptr); +void post_type4_indyrescmd_data_recieved(s32 param_1,s32 param_2,u32 param_3); +void post_type5_indyrescmd_printfsend(s32 param_1,s32 param_2,char *param_3); +void post_type6_indyrescmd_printfrecieved(s32 rsize,s32 wsize,u32 data1,u32 data2); +void post_type7_indyrescmd_log_send(u32 param_1,u32 param_2,u8 *strptr,u32 param_4); +void post_type8_indyrescmd_log_recieved(s32 rsize,s32 wsize,undefined4 data1,undefined4 data2,uint cmd2size,indy_resource_entry *cmd2); +void post_type9_indyrescmd_app_command_ready(s32 rsize,s32 wsize,char *strptr,uint size2,indy_resource_entry *cmd2); +void post_typeA_indyrescmd_app_command_recieved(s32 readsize,s32 writesize,u32 data); +void post_typeF_indyrescmd_fault_send(u32 rsize,u32 wsize,char *name,u32 filesize,u32 ptarget); +void post_type10_indyrescmd_fault_ack_by_host(s32 rsize,s32 wsize,undefined4 param_3,undefined4 param_4,undefined4 param_5); +void post_typeD_indyrescmd_prof_send_filename(u32 rsize,u32 wsize,u8 *ptrstr,u32 size,u8 *hwaddress); +void post_typeE_indyrescmd_prof_recv(s32 readsize,s32 writesize,u32 data); +void post_typeB_indyrescmd_host_prof_req(s32 rsize,s32 wsize,char *strptr); +void post_typeC_indyrescmd_prof_send(s32 readsize,s32 writesize,u32 data); +void post_typeA_indyrescmd_app_data_recieved(s32 readsize,s32 writesize,u32 data); +undefined8 post_indy__res_cmd_initialize_seq(void); +u32 post_indyrescmd_game_data_send(char *strptr); +u32 post_indyrescmd_debug_data_recv(u32 data); +u32 post_indyrescmd_game_printf_send(char *strptr); +u32 post_indyrescmd_debug_printf_recv(u32 data1,u32 data2); +u32 post_indyrescmd_req_filename_size(u8 *filename,u32 size); +u32 post_indyrescmd_1_8_2(u32 data1,u32 data2,u32 size2,indy_resource_entry *cmd2); +u32 post_indyrescmd_send_capture_data(char *string,uint size,indy_resource_entry *data); +u32 post_indyrescmd_recv_capture_data_success(u32 data); +u32 post_indyrescmd_request_ramrom_file(char *name,u32 ptarget,u32 filesize); +u32 post_indyrescmd_1_10_2(u32 param_1,u32 param_2,u32 param_3); +u32 post_indyrescmd_game_prof_sendfile(char *strptr,u8 *phwaddr,u32 size); +u32 post_indyrescmd_host_prof_recv(u32 data); +u32 post_indyrescmd_1_B_2(char *strptr); +u32 post_indyrescmd_1_C_2(u32 data); +u32 post_indyrescmd_1_A_2(u32 data); +undefined8 post_indyrescmd_read_command(indy_resource_entry *param_1,uint param_2); +u32 post_indyrescmd_read_2commands(u8 *buffer1,u32 size1,u8 *buffer2,u32 size2); +u32 post_indyrescmd_istype1_correctsize(int readsize,int writesize); +u32 post_indyrescmd_istype2_correctvalue(int readsize,int writesize); +undefined8 post_indyrescmd_istype4_correctvalue(int param_1,int param_2,u8 *response); +undefined8 post_indyrescmd_istype6_correctvalue(int param_1,int param_2,u8 *response1,u8 *response2); +undefined8 post_indyrescmd_istype8_correctvalue(int param_1,int param_2,u8 *response1,u8 *response2,u32 childsize,u8 *child); +undefined8 post_indyrescmd_istypeA_correctvalue(int param_1,int param_2,u8 *response); +undefined8 post_indyrescmd_istype10_correctvalue(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,undefined4 *param_5); +undefined8 post_indyrescmd_istypeE_correctvalue(int param_1,int param_2,u8 *param_3); +undefined8 post_indyrescmd_istypeC_correctvalue(int param_1,int param_2,u8 *param_3); +u32 response_indyrescmd_1_4_2(u8 *response); +u32 response_indyrescmd_1_6_2(u8 *response1,u8 *response2); +u32 response_indyrescmd_1_8_2(u8 *response1,u8 *response2,u32 datasize,u8 *data); +u32 response_indyrescmd_1_A_2(u8 *param_1); +u32 response_indyrescmd_1_10_2(u32 *param_1,u32 *param_2,u32 *param_3); +u32 response_indyrescmd_1_E_2(u8 *response); +u32 response_indyrescmd_1_C_2(u8 *response); +u32 response_indyrescmd_curr_matches_expected(int readsize,int writesize); void something_game_c_debug_related(void); void reset_mem_bank_5(void); void proc_7F0D1A7C(void); @@ -18171,7 +20660,7 @@ void proc_7F0D2448(undefined4 param_1,undefined4 param_2,undefined4 param_3); undefined4 * proc_7F0D2464(undefined4 *param_1); undefined4 * proc_7F0D2518(undefined4 *param_1); MUSIC_TRACKS getmusictrack_or_randomtrack(u32 stagenum); -short proc_7F0D2848(short param_1); +short sub_GAME_7F0D2848(short param_1); short proc_7F0D2890(short param_1); void proc_7F0D28E0(int param_1,int param_2,undefined8 param_3,byte *param_4); void proc_7F0D2A84(int param_1,int param_2); diff --git a/src/bondaicommands.h b/src/bondaicommands.h index 646e644..6bd6db5 100644 --- a/src/bondaicommands.h +++ b/src/bondaicommands.h @@ -66,7 +66,7 @@ //============================================================================= // commands with a vehicle/aircraft prefix can only be executed by vehicle/aircraft // objects. these types of objects do not use a chr struct. most non-vehicle -// commands will crash if they try to access caller's chr struct +// commands will crash if they try to access caller's chr struct //============================================================================= // ai commands with label argument //============================================================================= @@ -192,9 +192,9 @@ // command D7 - hud flags #define HUD_HIDE_ALL 0x00 // hide all -#define HUD_SHOW_TEXT_TOP 0x01 // hide all but top text -#define HUD_SHOW_TEXT_BOTTOM 0x02 // hide all but bottom text -#define HUD_SHOW_HUD_COUNTDOWN 0x04 // hide all but hud countdown +#define HUD_SHOW_TEXT_TOP 0x01 // don't hide top text +#define HUD_SHOW_TEXT_BOTTOM 0x02 // don't hide bottom text +#define HUD_SHOW_HUD_COUNTDOWN 0x04 // don't hide hud countdown // command 94/95/96/97/98/99 chr->BITFIELD - used for ai list GLIST_FIRE_RAND_ANIM_SUBROUTINE #define BITFIELD_DONT_POINT_AT_BOND 0x01 // if set, don't point at bond @@ -259,7 +259,13 @@ #define if_local_timer_seconds_greater_than(seconds, label) \ if_local_timer_greater_than((SECS_TO_TIMER60(seconds)), label) -#define camera_wait_for_loading \ +#define camera_transition_from_bond \ + bond_hide_weapons \ + ai_sleep \ + ai_sleep \ + ai_sleep + +#define camera_transition_to_bond \ ai_sleep \ ai_sleep \ ai_sleep @@ -326,7 +332,7 @@ // info: used for ai list parser to check when list ends //============================================================================= // note: not recommended to execute this command - to finish a list create an -// infinite loop (goto_loop_infinite) or jump to glist end routine when list has +// infinite loop (goto_loop_infinite) or jump to GLIST_END_ROUTINE when list has // finished tasks //===========================================================================*/ #define ai_list_end_ID 0x04 @@ -565,7 +571,7 @@ // command id: 16 // info: update guard's aim/fire target, goto label if successful //============================================================================= -// note: this command only works if guard is currently aiming at a target +// note: this command only works if guard is currently aiming at a target. // bitfield argument is used to set the target type (pad/bond/chr). // use TARGET_# flags for bitfield argument //===========================================================================*/ @@ -582,7 +588,7 @@ // command id: 17 // info: make guard continuously face target, goto label if successful //============================================================================= -// note: if guard was shot while facing target, guard will snap out of facing state +// note: if guard was shot while facing target, guard will snap out of facing state. // bitfield argument is used to set the target type (pad/bond/chr). // use TARGET_# flags for bitfield argument. command can't use TARGET_AIM_ONLY flag //===========================================================================*/ @@ -705,7 +711,8 @@ // command id: 20 // info: makes guard walk a predefined path within setup //============================================================================= -// note: usually paired with goto glist 0005/0007 +// note: usually paired with goto GLIST_DETECT_BOND_DEAF_NO_CLONE_NO_IDLE_ANIM +// or GLIST_DETECT_BOND_NO_CLONE_NO_IDLE_ANIM //===========================================================================*/ #define guard_start_patrol_ID 0x20 #define guard_start_patrol_LENGTH 0x02 @@ -1605,17 +1612,17 @@ object_tag, /*============================================================================= -// name: object_detach_from_chr +// name: object_drop_from_chr // command id: 60 -// info: detach tagged object from chr and drop to ground +// info: drop tagged object held/attached to chr //============================================================================= -// note: item must be attached to a chr. embedded objects will not drop, only -// works with attached objects. props can be damaged on drop +// note: item must be held/attached to a chr. embedded objects will not drop, +// only works with attached objects. props can be damaged on drop //===========================================================================*/ -#define object_detach_from_chr_ID 0x60 -#define object_detach_from_chr_LENGTH 0x02 -#define object_detach_from_chr(object_tag) \ - object_detach_from_chr_ID, \ +#define object_drop_from_chr_ID 0x60 +#define object_drop_from_chr_LENGTH 0x02 +#define object_drop_from_chr(object_tag) \ + object_drop_from_chr_ID, \ object_tag, /*============================================================================= @@ -2312,7 +2319,7 @@ // name: guard_set_health_total // command id: 8F // info: set guard's total health - the higher the value, the more shots needed -// to kill guard. +// to kill guard. //============================================================================= // note: sets to chr->maxdamage. default health is 4.0f (0x0028/40 dec for argument). // argument is converted to float and divided by 10 before setting to maxdamage. @@ -2353,8 +2360,8 @@ //============================================================================= // note: sets to chr->speedrating. default speed is 0 - argument is signed. // negative values will make guard animate slower - this affects firing animations. -// command does not use 007 reaction speed modifier. do not use values above 0x60 -// or it may crash +// command does not use 007 reaction speed modifier. do not use values above/below +// 100 or it may crash //===========================================================================*/ #define guard_set_speed_rating_ID 0x91 #define guard_set_speed_rating_LENGTH 0x02 @@ -2490,9 +2497,11 @@ // command id: 9A // info: set bits in objective bitfield on //============================================================================= -// note: can be used to store a mission unique objective flag, which can be set +// note: can be used to store a mission unique objective flag, which can be linked // to mission objectives. it can also be used to store miscellaneous flags used -// by other ai lists +// by other ai lists. if a mission objective is changed while in third person, +// it will not be updated on the briefing page - all mission objectives status +// are locked while in third person //===========================================================================*/ #define objective_bitfield_set_on_ID 0x9A #define objective_bitfield_set_on_LENGTH 0x05 @@ -2505,9 +2514,11 @@ // command id: 9B // info: set bits in objective bitfield off //============================================================================= -// note: can be used to store a mission unique objective flag, which can be set +// note: can be used to store a mission unique objective flag, which can be linked // to mission objectives. it can also be used to store miscellaneous flags used -// by other ai lists +// by other ai lists. if a mission objective is changed while in third person, +// it will not be updated on the briefing page - all mission objectives status +// are locked while in third person //===========================================================================*/ #define objective_bitfield_set_off_ID 0x9B #define objective_bitfield_set_off_LENGTH 0x05 @@ -3290,7 +3301,7 @@ // command id: D2 // info: exits the level //============================================================================= -// note: recommend not to use this command, instead goto glist exit level for +// note: recommend not to use this command, instead goto GLIST_EXIT_LEVEL for // exit cutscene list. retail game has a glitch with hires mode that needs to // execute this command in a loop, check cuba's 1000 list //===========================================================================*/ @@ -3307,8 +3318,8 @@ // note: unused command, never used in retail game. tagged items within inventory // will become invalid after command - only weapons are safe. command must have // 3 ai_sleep commands before executing this command or else engine will crash -// on console (use macro camera_wait_for_loading). if camera mode is already in -// third person then you don't need to do the above +// on console (use camera_transition_to_bond). mission time is resumed on return +// to first person view //===========================================================================*/ #define camera_return_to_bond_ID 0xD3 #define camera_return_to_bond_LENGTH 0x01 @@ -3320,9 +3331,10 @@ // command id: D4 // info: change view to pad and look at bond //============================================================================= -// note: command must have 3 ai_sleep commands before executing this command or -// else engine will crash on console (use macro camera_wait_for_loading). +// note: command must have a bond_hide_weapons command and 3 ai_sleep commands +// before executing this command or else engine will crash (use camera_transition_from_bond). // if camera mode is already in third person then you don't need to do the above. +// mission time is paused while in third person //===========================================================================*/ #define camera_look_at_bond_from_pad_ID 0xD4 #define camera_look_at_bond_from_pad_LENGTH 0x03 @@ -3335,11 +3347,12 @@ // command id: D5 // info: change view to tagged camera's position and rotation //============================================================================= -// note: command must have 3 ai_sleep commands before executing this command or -// else engine will crash on console (use macro camera_wait_for_loading). +// note: command must have a bond_hide_weapons command and 3 ai_sleep commands +// before executing this command or else engine will crash (use camera_transition_from_bond). // if camera mode is already in third person then you don't need to do the above. // only look at bond if flag is set. unused flag may have separated look at bond -// as x/y flags instead of a single flag - for retail unused flag does nothing +// as x/y flags instead of a single flag - for retail unused flag does nothing. +// mission time is paused while in third person //===========================================================================*/ #define camera_switch_ID 0xD5 #define camera_switch_LENGTH 0x06 @@ -3366,34 +3379,35 @@ label, /*============================================================================= -// name: hud_hide_and_lock_controls +// name: hud_hide_and_lock_controls_and_pause_mission_time // command id: D7 -// info: hide hud elements and lock player controls +// info: hide hud elements, lock player control and stop mission time. +// command is commonly used for exit mission lists //============================================================================= // note: argument flag will not hide element on command execution. this is -// needed for dialog or countdown while in cinema mode. flags can be combined +// needed for dialog/hud countdown while in cinema mode. flags can be combined // together to show multiple elements. sequential executions of D7 can be used // to hide more elements, but once an element has been hidden it cannot be shown // again until command D8 is executed. bond can take damage while in locked state. // use HUD_# flags for bitfield argument //===========================================================================*/ -#define hud_hide_and_lock_controls_ID 0xD7 -#define hud_hide_and_lock_controls_LENGTH 0x02 -#define hud_hide_and_lock_controls(bitfield) \ - hud_hide_and_lock_controls_ID, \ +#define hud_hide_and_lock_controls_and_pause_mission_time_ID 0xD7 +#define hud_hide_and_lock_controls_and_pause_mission_time_LENGTH 0x02 +#define hud_hide_and_lock_controls_and_pause_mission_time(bitfield) \ + hud_hide_and_lock_controls_and_pause_mission_time_ID, \ bitfield, /*============================================================================= -// name: hud_show_all +// name: hud_show_all_and_unlock_controls_and_resume_mission_time // command id: D8 -// info: show all hud elements that have been disabled by D7 +// info: show all hud elements, unlock player control and resume mission time //============================================================================= // note: should only be executed after D7 command //===========================================================================*/ -#define hud_show_all_ID 0xD8 -#define hud_show_all_LENGTH 0x01 -#define hud_show_all \ - hud_show_all_ID, +#define hud_show_all_and_unlock_controls_and_resume_mission_time_ID 0xD8 +#define hud_show_all_and_unlock_controls_and_resume_mission_time_LENGTH 0x01 +#define hud_show_all_and_unlock_controls_and_resume_mission_time \ + hud_show_all_and_unlock_controls_and_resume_mission_time_ID, /*============================================================================= // name: chr_try_teleporting_to_pad @@ -3618,14 +3632,17 @@ gas_leak_and_switch_fog_ID, /*============================================================================= -// name: mission_time_stop_and_exit_level_on_button_input +// name: trigger_fade_and_exit_level_on_button_press // command id: EA -// info: stop the mission time and exit level if player 1 pressed any buttons +// info: if player pressed any button, fade to black and exit level +//============================================================================= +// note: this command activates a state where game will fade to black when button +// input is detected from controller 1. command does not pause mission time //===========================================================================*/ -#define mission_time_stop_and_exit_level_on_button_input_ID 0xEA -#define mission_time_stop_and_exit_level_on_button_input_LENGTH 0x01 -#define mission_time_stop_and_exit_level_on_button_input \ - mission_time_stop_and_exit_level_on_button_input_ID, +#define trigger_fade_and_exit_level_on_button_press_ID 0xEA +#define trigger_fade_and_exit_level_on_button_press_LENGTH 0x01 +#define trigger_fade_and_exit_level_on_button_press \ + trigger_fade_and_exit_level_on_button_press_ID, /*============================================================================= // name: if_bond_is_dead @@ -3666,9 +3683,9 @@ // command id: EE // info: change view to orbit a pad with set speed //============================================================================= -// note: command must have 3 ai_sleep commands before executing this command or -// else engine will crash on console (use macro camera_wait_for_loading). if camera -// mode is already in third person then you don't need to do the above. +// note: command must have a bond_hide_weapons command and 3 ai_sleep commands +// before executing this command or else engine will crash (use camera_transition_from_bond). +// if camera mode is already in third person then you don't need to do the above. // arguments: // lat_distance: camera distance from pad, 100 units per meter. argument is unsigned // vert_distance: camera distance from pad, 100 units per meter. argument is signed @@ -3679,6 +3696,7 @@ // y_pos_offset: offset the relative y position for pad (boom/jib), argument is signed // initial_rotation: uses compass direction like target commands (14-17) // but inverted - hex N: 0000 E: C000 S: 8000: W: 4000 +// mission time is paused while in third person //===========================================================================*/ #define camera_orbit_pad_ID 0xEE #define camera_orbit_pad_LENGTH 0x0D diff --git a/src/bondconstants.h b/src/bondconstants.h index 7add973..ae25bf6 100644 --- a/src/bondconstants.h +++ b/src/bondconstants.h @@ -18,7 +18,7 @@ #define CHR_OBJECTIVE -2 /* objective ai list chr ID */ #define CHR_FREE -1 /* chr IDs when free'd (killed or removed from level) */ #define CHR_SPAWN_NUM_START 5000 /* default chr num for spawned guards with ai command BD/BE */ -#define CHR_CLONED_NUM_START 9000 /* default chr num for cloed guards with ai command C1 */ +#define CHR_CLONED_NUM_START 10000 /* default chr num for cloed guards with ai command C1 */ #define PAD_PRESET 9000 /* stored as chr->padpreset1 */ @@ -1023,6 +1023,26 @@ typedef enum CAMERAMODE { UNK10_CAM } CAMERAMODE; +typedef enum IMAGE_FORMAT { + F_RGBA, + F_YUV, + F_CI, + F_IA, + F_I + } IMAGE_FORMAT; + + typedef enum IMAGE_BITDEPTH { + D_4BIT, + D_8BIT, + D_16BIT, + D_32BIT +} IMAGE_BITDEPTH; + +typedef enum CM_FLAGS { + CLAMP = 1, + MIRROR =2 +} CM_FLAGS; + /* motion capture actor: duncan botwood */ /* motion capture assistance: b jones */ /* recorded using 'flock of birds' system by ascension technology corporation, in a freezing metal barn in the depths of winter */ @@ -1117,7 +1137,7 @@ typedef enum ANIMATIONS { ANIM_aim_running_right_one_handed_weapon = 86, ANIM_aim_running_left_one_handed_weapon = 87, ANIM_aim_sprinting_one_handed_weapon = 88, - ANIM_jogging_one_handed_weapon = 89, + ANIM_running_one_handed_weapon = 89, ANIM_sprinting_one_handed_weapon = 90, ANIM_null91 = 91, /* invalid slot */ ANIM_null92 = 92, /* invalid slot */ @@ -1132,7 +1152,7 @@ typedef enum ANIMATIONS { ANIM_holster_one_handed_weapon_and_cross_arms = 101, ANIM_cock_one_handed_weapon_turn_around_and_stand_up = 102, ANIM_draw_one_handed_weapon_and_turn_around = 103, - ANIM_step_foward_and_hold_one_handed_weapon = 104, + ANIM_step_forward_and_hold_one_handed_weapon = 104, ANIM_holster_one_handed_weapon_and_adjust_suit = 105, ANIM_idle_unarmed = 106, ANIM_walking_unarmed = 107, @@ -1253,9 +1273,9 @@ typedef enum ACT_TYPE { } ACT_TYPE; // character flags -#define CHRFLAG_00000001 0x00000001 // unknown -#define CHRFLAG_SUNGLASSES 0x00000002 // sunglasses -#define CHRFLAG_00000004 0x00000004 // unknown +#define CHRFLAG_INIT 0x00000001 // initialize chr +#define CHRFLAG_CLONE 0x00000002 // clone on heard gunfire (used by GLIST_DETECT_BOND_SPAWN_CLONE_ON_HEARD_GUNFIRE) +#define CHRFLAG_NEAR_MISS 0x00000004 // chr was just nearly shot (sometimes set on direct hit) #define CHRFLAG_HAS_BEEN_ON_SCREEN 0x00000008 // chr has been on screen before #define CHRFLAG_INVINCIBLE 0x00000010 // invincible #define CHRFLAG_00000020 0x00000020 // unknown @@ -1276,7 +1296,7 @@ typedef enum ACT_TYPE { #define CHRFLAG_COUNT_DEATH_AS_CIVILIAN 0x00100000 // count death as civilian killed #define CHRFLAG_WAS_HIT 0x00200000 // chr has been hit (even if invincible) #define CHRFLAG_00400000 0x00400000 // unknown -#define CHRFLAG_00800000 0x00800000 // unknown +#define CHRFLAG_CULL_USING_HITBOX 0x00800000 // cull chr using hitbox instead of tile/clipping (useful with lock y pos flag) #define CHRFLAG_01000000 0x01000000 // unknown #define CHRFLAG_02000000 0x02000000 // unknown #define CHRFLAG_04000000 0x04000000 // unknown diff --git a/src/bondgame.h b/src/bondgame.h index f1793cb..f08c3c7 100644 --- a/src/bondgame.h +++ b/src/bondgame.h @@ -2,8 +2,8 @@ #define _BOND_H_ #include "ultra64.h" -extern u16 cfb_16_a[]; -extern u16 cfb_16_b[]; +extern u8 cfb_16_a[]; +extern u8 cfb_16_b[]; extern u32 *_codeSegmentStart; extern u32 *_codeSegmentEnd; diff --git a/src/bondtypes.h b/src/bondtypes.h index 0fcaca4..adab431 100644 --- a/src/bondtypes.h +++ b/src/bondtypes.h @@ -1,7 +1,7 @@ #ifndef _BONDTYPES_H_ #define _BONDTYPES_H_ #include "ultra64.h" - +#include "bondconstants.h" struct rgba_val{ u8 r; u8 g; @@ -192,4 +192,131 @@ struct CHRdata { int * handle_positiondata_hat; }; +struct object_standard { + u16 extrascale:2; + u8 hidden2:1; + u8 type:1; + u16 obj; + u16 pad; + u32 flags; + u32 flags2; + void * runtime_ptr_obj_posdata; + void * runtime_ptr_obj_instance_controller; + void * runtime_MATRIX0; + void * runtime_MATRIX1; + void * runtime_MATRIX2; + void * runtime_MATRIX3; + void * runtime_MATRIX4; + void * runtime_MATRIX5; + void * runtime_MATRIX6; + void * runtime_MATRIX7; + void * runtime_MATRIX8; + void * runtime_MATRIX9; + void * runtime_MATRIXA; + void * runtime_MATRIXB; + void * runtime_MATRIXC; + void * runtime_MATRIXD; + void * runtime_MATRIXE; + void * runtime_MATRIXF; + f32 runtime_x_pos; + f32 runtime_y_pos; + f32 runtime_z_pos; + int runtime_bitflags; + int ptr_allocated_collisiondata_block; + int field_6C; + float field_70; + short damage; + short maxdamage; + char field_78; + char field_79; + char field_7A; + char field_7B; + char field_7C; + char field_7D; + char field_7E; + char field_7F; +}; + +struct watchMenuObjectiveText { + u32 id; + enum WATCH_BRIEFING_PAGE menu; + u16 reserved; + u16 text; + struct watchMenuObjectiveText * nextentry; +}; +//!FIXME all but text field cannot be trusted +struct objective_entry { + u32 id; + enum WATCH_BRIEFING_PAGE menu; + u16 reserved; + u16 text; + struct watchMenuObjectiveText * nextentry; +}; + +typedef struct sImageTableEntry { + u32 index; + u8 width; + u8 height; + u8 level; + u8 format; + u8 depth; + u8 flagsS; + u8 flagsT; + u8 pad; +} sImageTableEntry; + +typedef struct sGlobalImageTable { + u32 globalDL_0x000[30]; + u32 globalDL_0x078[42]; + u32 globalDL_0x120[42]; + u32 globalDL_0x1c8[42]; + u32 globalDL_0x270[42]; + u32 globalDL_0x318[42]; + u32 globalDL_0x3c0[42]; + u32 globalDL_0x468[42]; + u32 globalDL_0x510[42]; + u32 globalDL_0x5b8[42]; + u32 globalDL_0x660[42]; + u32 globalDL_0x708[42]; + u32 globalDL_0x7b0[42]; + u32 globalDL_0x858[42]; + u32 globalDL_0x900[42]; + u32 globalDL_0x9a8[42]; + u32 globalDL_0xa50[30]; + struct sImageTableEntry s_genericimage[1]; + struct sImageTableEntry s_impactimages[20]; + struct sImageTableEntry s_explosion_smokeimages[6]; + struct sImageTableEntry s_scattered_explosions[5]; + struct sImageTableEntry s_flareimage1[1]; + struct sImageTableEntry s_flareimage2[1]; + struct sImageTableEntry s_flareimage3[1]; + struct sImageTableEntry s_flareimage4[1]; + struct sImageTableEntry s_flareimage5[1]; + struct sImageTableEntry s_ammo9mmimage[1]; + struct sImageTableEntry s_rifleammoimage[1]; + struct sImageTableEntry s_shotgunammoimage[1]; + struct sImageTableEntry s_knifeammoimage[1]; + struct sImageTableEntry s_glammoimage[1]; + struct sImageTableEntry s_rocketammoimage[1]; + struct sImageTableEntry s_genericmineammoimage[1]; + struct sImageTableEntry s_grenadeammoimage[1]; + struct sImageTableEntry s_magnumammoimage[1]; + struct sImageTableEntry s_goldengunammoimage[1]; + struct sImageTableEntry s_remotemineammoimage[1]; + struct sImageTableEntry s_timedmineammoimage[1]; + struct sImageTableEntry s_proxmineammoimage[1]; + struct sImageTableEntry s_tankammoimage[1]; + struct sImageTableEntry s_crosshairimage[1]; + struct sImageTableEntry s_betacrosshairimage[1]; + struct sImageTableEntry s_glassoverlayimage[2]; + struct sImageTableEntry s_monitorimages[50]; + struct sImageTableEntry s_skywaterimages[3]; + struct sImageTableEntry s_mainfolderimages[6]; + struct sImageTableEntry s_mpradarimages[1]; + struct sImageTableEntry s_mpcharselimages[64]; + struct sImageTableEntry s_mpstageselimages[17]; +} sGlobalImageTable; + + + #endif diff --git a/src/boss.c b/src/boss.c index 0ff30ea..638f9c1 100644 --- a/src/boss.c +++ b/src/boss.c @@ -157,12 +157,12 @@ void init_mainthread_data(void) current_m_malloc_value = (s32) (strtol(check_token(1, "-m"), 0, 0) << 0xa); } temp_s0 = (osVirtualToPhysical(&room_model_buffer) | 0x80000000); - check_memflag_tokens(temp_s0, (return_ptr_TLBallocatedblock() - temp_s0)); - reset_mem_bank_a0(6); + mempCheckMemflagTokens(temp_s0, (return_ptr_TLBallocatedblock() - temp_s0)); + mempResetBank(6); init_LnameX(); something_with_lvl_c_debug(); something_with_boss_c_debug(); - null_init_main(); + null_init_main_7f0acb70(); null_init_main_0(); default_player_perspective_and_height(); store_osgetcount(); @@ -287,9 +287,9 @@ void mainloop(void) sp1DC = 0; reset_mem_bank_5(); - if (check_token(1, &aLevel__0) != 0) + if (check_token(1, "-level_") != 0) { - temp_ret = check_token(1, &aLevel__1); + temp_ret = check_token(1, "-level_"); current_stage_num = (s32) ((temp_ret->unk1 + (temp_ret->unk0 * 0xa)) + -0x210); } if (current_stage_num != 0x5a) @@ -298,10 +298,10 @@ void mainloop(void) set_selected_folder_num(0); set_selected_difficulty(0); set_solo_and_ptr_briefing(current_stage_num); - if (check_token(1, &aHard) != 0) + if (check_token(1, "-hard") != 0) { - set_selected_difficulty(*check_token(1, &aHard_1) + -0x30); - set_difficulty(*check_token(1, &aHard_2) + -0x30); + set_selected_difficulty(*check_token(1, "-hard") + -0x30); + set_difficulty(*check_token(1, "-hard") + -0x30); } } increment_random_num(osGetCount()); @@ -384,13 +384,13 @@ loop_18: } strtok((&memallocstringtable + (phi_s0_3 * 8))->unk4, &memallocstringtable); } - reset_mem_bank_a0(4); + mempResetBank(4); something_mem_bank_a0(4); if (check_token(1, &aMa) != 0) { current_ma_malloc_value = (s32) (strtol(check_token(1, &aMa_0), 0, 0) << 0xa); } - reset_memtable_base_allocation(allocate_bytes_in_bank(current_ma_malloc_value, 4), current_ma_malloc_value); + mempInitMallocTable(mempAllocBytesInBank(current_ma_malloc_value, 4), current_ma_malloc_value); reset_play_data_ptrs(); phi_s1 = 0; if (current_stage_num != 0x5a) @@ -566,8 +566,8 @@ loop_44: temp_s3_3 = temp_s3_3 + 8; if (show_mem_use_flag != 0) { - nulled_list_all8_mem_alloc_banks_sizes(); - generate_lists_before_after_mem_merge(); + nulled_mempLoopAllMemBanks(); + memaGenerateListsBeforeAfterMerge(); removed_debug_routine(temp_s3_3); nullsub_41(0); show_mem_use_flag = 0; @@ -619,7 +619,7 @@ loop_58: } unload_stage_text_data(); stop_demo_playback(); - memp_related_6(4); + mempNullNextEntryInBank(4); something_mem_bank_a0(4); current_stage_num = (?32) loadedstage; loadedstage = -1; @@ -826,7 +826,7 @@ glabel mainloop /* 006EE4 700062E4 0C002963 */ jal strtok /* 006EE8 700062E8 8DC40004 */ lw $a0, 4($t6) .L700062EC: -/* 006EEC 700062EC 0C002667 */ jal reset_mem_bank_a0 +/* 006EEC 700062EC 0C002667 */ jal mempResetBank /* 006EF0 700062F0 24040004 */ li $a0, 4 /* 006EF4 700062F4 0FC2F46F */ jal something_mem_bank_a0 /* 006EF8 700062F8 24040004 */ li $a0, 4 @@ -849,11 +849,11 @@ glabel mainloop .L7000633C: /* 006F3C 7000633C 3C048002 */ lui $a0, %hi(current_ma_malloc_value) /* 006F40 70006340 8C8441B0 */ lw $a0, %lo(current_ma_malloc_value)($a0) -/* 006F44 70006344 0C0025C8 */ jal allocate_bytes_in_bank +/* 006F44 70006344 0C0025C8 */ jal mempAllocBytesInBank /* 006F48 70006348 24050004 */ li $a1, 4 /* 006F4C 7000634C 3C058002 */ lui $a1, %hi(current_ma_malloc_value) /* 006F50 70006350 8CA541B0 */ lw $a1, %lo(current_ma_malloc_value)($a1) -/* 006F54 70006354 0C002766 */ jal reset_memtable_base_allocation +/* 006F54 70006354 0C002766 */ jal mempInitMallocTable /* 006F58 70006358 00402025 */ move $a0, $v0 /* 006F5C 7000635C 0FC268CB */ jal reset_play_data_ptrs /* 006F60 70006360 00000000 */ nop @@ -1134,9 +1134,9 @@ glabel mainloop /* 007374 70006774 26730008 */ addiu $s3, $s3, 8 /* 007378 70006778 1100000B */ beqz $t0, .L700067A8 /* 00737C 7000677C 00000000 */ nop -/* 007380 70006780 0C00263C */ jal nulled_list_all8_mem_alloc_banks_sizes +/* 007380 70006780 0C00263C */ jal nulled_mempLoopAllMemBanks /* 007384 70006784 00000000 */ nop -/* 007388 70006788 0C0028A7 */ jal generate_lists_before_after_mem_merge +/* 007388 70006788 0C0028A7 */ jal memaGenerateListsBeforeAfterMerge /* 00738C 7000678C 00000000 */ nop /* 007390 70006790 0FC2F5DD */ jal removed_debug_routine /* 007394 70006794 02602025 */ move $a0, $s3 @@ -1224,7 +1224,7 @@ glabel mainloop /* 0074B8 700068B8 00000000 */ nop /* 0074BC 700068BC 0FC3023F */ jal stop_demo_playback /* 0074C0 700068C0 00000000 */ nop -/* 0074C4 700068C4 0C002671 */ jal memp_related_6 +/* 0074C4 700068C4 0C002671 */ jal mempNullNextEntryInBank /* 0074C8 700068C8 24040004 */ li $a0, 4 /* 0074CC 700068CC 0FC2F46F */ jal something_mem_bank_a0 /* 0074D0 700068D0 24040004 */ li $a0, 4 diff --git a/src/cfb.c b/src/cfb.c index 7026855..af2fd9e 100644 --- a/src/cfb.c +++ b/src/cfb.c @@ -1,5 +1,5 @@ #include "ultra64.h" #include "bondgame.h" -u16 cfb_16_a[320*240]; -u16 cfb_16_b[320*240]; \ No newline at end of file +u8 cfb_16_a[320*240*2]; +u8 cfb_16_b[320*240*2]; \ No newline at end of file diff --git a/src/deb.c b/src/deb.c index 4acbc1f..d5270f6 100644 --- a/src/deb.c +++ b/src/deb.c @@ -11,7 +11,7 @@ */ /* bss */ -char dword_CODE_bss_80060890[0x400]; +extern char dword_CODE_bss_80060890[0x400]; @@ -104,7 +104,7 @@ u32 get_entry_of_size_in_debug_notice_list(s32 arg0) return debug_notice_list_data; } debug_notice_list_data = (u32) (temp_v0 - arg0); - return allocate_bytes_in_bank(6); + return mempAllocBytesInBank(6); } #else GLOBAL_ASM( @@ -123,7 +123,7 @@ glabel get_entry_of_size_in_debug_notice_list /* 0059A8 70004DA8 00441023 */ subu $v0, $v0, $a0 /* 0059AC 70004DAC 3C018002 */ lui $at, %hi(debug_notice_list_data) /* 0059B0 70004DB0 AC2232F8 */ sw $v0, %lo(debug_notice_list_data)($at) -/* 0059B4 70004DB4 0C0025C8 */ jal allocate_bytes_in_bank +/* 0059B4 70004DB4 0C0025C8 */ jal mempAllocBytesInBank /* 0059B8 70004DB8 24050006 */ li $a1, 6 /* 0059BC 70004DBC 10000005 */ b .L70004DD4 /* 0059C0 70004DC0 8FBF0014 */ lw $ra, 0x14($sp) diff --git a/src/deb_video.c b/src/deb_video.c index 610558e..5540171 100644 --- a/src/deb_video.c +++ b/src/deb_video.c @@ -83,7 +83,7 @@ glabel thread5_translate_7F_address /* 005BCC 70004FCC 24060001 */ li $a2, 1 /* 005BD0 70004FD0 0C00374C */ jal osSetIntMask /* 005BD4 70004FD4 24040001 */ li $a0, 1 -/* 005BD8 70004FD8 0C004060 */ jal ultra_70010180 +/* 005BD8 70004FD8 0C004060 */ jal __osGetCurrFaultedThread /* 005BDC 70004FDC 00408025 */ move $s0, $v0 /* 005BE0 70004FE0 3C018006 */ lui $at, %hi(ptr_tlbthread_maybe) /* 005BE4 70004FE4 1040FFF6 */ beqz $v0, .L70004FC0 diff --git a/src/game/bg.c b/src/game/bg.c index 444ceaa..28d065a 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -1722,13 +1722,14 @@ glabel sub_GAME_7F0B40D4 #ifdef NONMATCHING -void sub_GAME_7F0B4124(void) { +void load_bg_file(STAGENUM stagenum) +{ } #else GLOBAL_ASM( .text -glabel sub_GAME_7F0B4124 +glabel load_bg_file /* 0E8C54 7F0B4124 27BDFF48 */ addiu $sp, $sp, -0xb8 /* 0E8C58 7F0B4128 AFB20020 */ sw $s2, 0x20($sp) /* 0E8C5C 7F0B412C 3C128004 */ lui $s2, %hi(D_80041400) @@ -1801,7 +1802,7 @@ glabel sub_GAME_7F0B4124 /* 0E8D5C 7F0B422C 360F000F */ ori $t7, $s0, 0xf /* 0E8D60 7F0B4230 25F00001 */ addiu $s0, $t7, 1 /* 0E8D64 7F0B4234 02002025 */ move $a0, $s0 -/* 0E8D68 7F0B4238 0C0025C8 */ jal allocate_bytes_in_bank +/* 0E8D68 7F0B4238 0C0025C8 */ jal mempAllocBytesInBank /* 0E8D6C 7F0B423C 24050004 */ li $a1, 4 /* 0E8D70 7F0B4240 8E580000 */ lw $t8, ($s2) /* 0E8D74 7F0B4244 AEE20000 */ sw $v0, ($s7) diff --git a/src/game/bond.c b/src/game/bond.c index 5106345..2c6125a 100644 --- a/src/game/bond.c +++ b/src/game/bond.c @@ -505,9 +505,49 @@ void sub_GAME_7F077C30(f32 arg0, f32 arg1, f32 arg2) #ifdef NONMATCHING -void sub_GAME_7F077C5C(void) { +void sub_GAME_7F077C5C(void) +{ + f32 sp34; + f32 sp30; + f32 sp2C; + f32 temp_f14; + f32 temp_f16; + f32 temp_f2; + f32 temp_f2_2; + f32 temp_f2_3; + sp2C = sinf((pPlayer->c_perspfovy * D_80054FA0) / 360.0f); + pPlayer->c_scaley = (f32) (sp2C / (cosf((pPlayer->c_perspfovy * D_80054FA0) / 360.0f) * pPlayer->c_halfheight)); + pPlayer->c_scalex = (f32) (((pPlayer->c_scaley * pPlayer->c_perspaspect) * pPlayer->c_halfheight) / pPlayer->c_halfwidth); + pPlayer->c_recipscalex = (f32) (1.0f / pPlayer->c_scalex); + pPlayer->c_recipscaley = (f32) (1.0f / pPlayer->c_scaley); + pPlayer->c_scalelod = (f32) pPlayer->c_scaley; + sp2C = sinf(D_80054FA4); + pPlayer->c_scalelod60 = (f32) (sp2C / (cosf(D_80054FA8) * 120.0f)); + pPlayer->c_lodscalez = (f32) (pPlayer->c_scalelod / pPlayer->c_scalelod60); + temp_f2 = pPlayer->c_lodscalez * 65536.0f; + if (4294967296.0f < temp_f2) + { + pPlayer->c_lodscalezu32 = -1U; + } + else + { + pPlayer->c_lodscalezu32 = (u32) temp_f2; + } + temp_f14 = pPlayer->c_halfheight * pPlayer->c_scaley; + sp30 = temp_f14; + temp_f2_2 = 1.0f / sqrtf((temp_f14 * temp_f14) + 1.0f, temp_f14); + (pPlayer->c_cameratopnorm).x = 0.0f; + (pPlayer->c_cameratopnorm).y = temp_f2_2; + (pPlayer->c_cameratopnorm).z = (f32) (temp_f14 * temp_f2_2); + temp_f16 = -pPlayer->c_halfwidth * pPlayer->c_scalex; + sp34 = temp_f16; + temp_f2_3 = 1.0f / sqrtf((temp_f16 * temp_f16) + 1.0f, temp_f14); + (pPlayer->c_cameraleftnorm).x = (f32) -temp_f2_3; + (pPlayer->c_cameraleftnorm).y = 0.0f; + (pPlayer->c_cameraleftnorm).z = (f32) (-temp_f16 * temp_f2_3); } + #else GLOBAL_ASM( .late_rodata @@ -704,8 +744,8 @@ void sub_GAME_7F077EEC(void *arg0, void *arg1, f32 arg2) { f32 temp_f2; // Node 0 - temp_f14 = ((pPlayer->field_10B0 - (arg0->unk4 - pPlayer->field_109C)) * pPlayer->field_10B8); - temp_f16 = (((*arg0 - pPlayer->field_1098) - pPlayer->field_10AC) * pPlayer->field_10B4); + temp_f14 = ((pPlayer->c_halfheight - (arg0->unk4 - pPlayer->c_screentop)) * pPlayer->c_scaley); + temp_f16 = (((*arg0 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * pPlayer->c_scalex); sp20 = temp_f16; temp_ret = sqrtf((((temp_f16 * temp_f16) + (temp_f14 * temp_f14)) + (-1.0f * -1.0f)), temp_f14); temp_f2 = (arg2 / temp_ret); @@ -778,8 +818,8 @@ glabel sub_GAME_7F077EEC #ifdef NONMATCHING void *sub_GAME_7F077FB4(void *arg0, s32 arg1, void *arg2) { // Node 0 - arg2->unk4 = (f32) ((arg0->unk4 * arg1) * pPlayer->field_10B8); - *arg2 = (f32) ((*arg0 * arg1) * pPlayer->field_10B4); + arg2->unk4 = (f32) ((arg0->unk4 * arg1) * pPlayer->c_scaley); + *arg2 = (f32) ((*arg0 * arg1) * pPlayer->c_scalex); return &pPlayer; } #else @@ -815,8 +855,8 @@ void *sub_GAME_7F077FF4(void *arg0, void *arg1) { // Node 0 temp_f0 = (1.0f / arg0->unk8); - arg1->unk4 = (f32) (((arg0->unk4 * temp_f0) * pPlayer->field_10C0) + (pPlayer->field_109C + pPlayer->field_10B0)); - *arg1 = (f32) ((pPlayer->field_1098 + pPlayer->field_10AC) - ((*arg0 * temp_f0) * pPlayer->field_10BC)); + arg1->unk4 = (f32) (((arg0->unk4 * temp_f0) * pPlayer->c_recipscaley) + (pPlayer->c_screentop + pPlayer->c_halfheight)); + *arg1 = (f32) ((pPlayer->c_screenleft + pPlayer->c_halfwidth) - ((*arg0 * temp_f0) * pPlayer->c_recipscalex)); return pPlayer; } #else @@ -873,8 +913,8 @@ void *sub_GAME_7F078060(void *arg0, void *arg1) { phi_f2 = (1.0f / arg0->unk8); } // Node 3 - arg1->unk4 = (f32) (((arg0->unk4 * phi_f2) * pPlayer->field_10C0) + (pPlayer->field_109C + pPlayer->field_10B0)); - *arg1 = (f32) ((pPlayer->field_1098 + pPlayer->field_10AC) - ((*arg0 * phi_f2) * pPlayer->field_10BC)); + arg1->unk4 = (f32) (((arg0->unk4 * phi_f2) * pPlayer->c_recipscaley) + (pPlayer->c_screentop + pPlayer->c_halfheight)); + *arg1 = (f32) ((pPlayer->c_screenleft + pPlayer->c_halfwidth) - ((*arg0 * phi_f2) * pPlayer->c_recipscalex)); return pPlayer; } @@ -936,8 +976,8 @@ void *sub_GAME_7F0780F0(void *arg0, s32 arg1, void *arg2) { // Node 0 temp_f0 = (1.0f / arg1); - arg2->unk4 = (f32) ((arg0->unk4 * temp_f0) * pPlayer->field_10C0); - *arg2 = (f32) ((*arg0 * temp_f0) * pPlayer->field_10BC); + arg2->unk4 = (f32) ((arg0->unk4 * temp_f0) * pPlayer->c_recipscaley); + *arg2 = (f32) ((*arg0 * temp_f0) * pPlayer->c_recipscalex); return &pPlayer; } #else @@ -983,10 +1023,10 @@ void *sub_GAME_7F078140(void *arg0, void *arg1, f32 arg2, f32 arg3, f32 arg4) { // Node 0 sp1C = sinf(((arg3 * *(void *)0x80050000) / 360.0f), arg3); - temp_f14 = (sp1C / (cosf(sp18) * pPlayer->field_10B0)); - temp_f4 = ((pPlayer->field_10B0 - (arg0->unk4 - pPlayer->field_109C)) * temp_f14); + temp_f14 = (sp1C / (cosf(sp18) * pPlayer->c_halfheight)); + temp_f4 = ((pPlayer->c_halfheight - (arg0->unk4 - pPlayer->c_screentop)) * temp_f14); sp2C = temp_f4; - temp_f8 = (((*arg0 - pPlayer->field_1098) - pPlayer->field_10AC) * (((temp_f14 * arg4) * pPlayer->field_10B0) / pPlayer->field_10AC)); + temp_f8 = (((*arg0 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * (((temp_f14 * arg4) * pPlayer->c_halfheight) / pPlayer->c_halfwidth)); sp30 = temp_f8; temp_f2 = (arg2 / sqrtf((((temp_f8 * temp_f8) + (temp_f4 * temp_f4)) + (-1.0f * -1.0f)), temp_f14)); *arg1 = (f32) (sp30 * temp_f2); @@ -1085,9 +1125,9 @@ void *sub_GAME_7F078258(void *arg0, void *arg1, f32 arg2, f32 arg3) { // Node 0 sp20 = cosf(((arg2 * D_80054FB4) / 360.0f), arg2); - temp_f12 = ((sp20 * pPlayer->field_10B0) / (arg0->unk8 * sinf(sp1C))); - arg1->unk4 = (f32) ((arg0->unk4 * temp_f12) + (pPlayer->field_109C + pPlayer->field_10B0)); - *arg1 = (f32) ((pPlayer->field_1098 + pPlayer->field_10AC) - (*arg0 * ((pPlayer->field_10AC * temp_f12) / (arg3 * pPlayer->field_10B0)))); + temp_f12 = ((sp20 * pPlayer->c_halfheight) / (arg0->unk8 * sinf(sp1C))); + arg1->unk4 = (f32) ((arg0->unk4 * temp_f12) + (pPlayer->c_screentop + pPlayer->c_halfheight)); + *arg1 = (f32) ((pPlayer->c_screenleft + pPlayer->c_halfwidth) - (*arg0 * ((pPlayer->c_halfwidth * temp_f12) / (arg3 * pPlayer->c_halfheight)))); return pPlayer; } #else @@ -1340,12 +1380,11 @@ glabel sub_GAME_7F078504 #ifdef NONMATCHING -void *sub_GAME_7F078534(void *arg0) { - // Node 0 - *arg0 = (f32) pPlayer->field_1100; - arg0->unk4 = (f32) -pPlayer->field_1104; - arg0->unk8 = (f32) pPlayer->field_1108; - return &pPlayer; +void sub_GAME_7F078534(xyzpoint *param_1) +{ + param_1->x = (pPlayer->c_cameratopnorm).x; + param_1->y = -(pPlayer->c_cameratopnorm).y; + param_1->z = (pPlayer->c_cameratopnorm).z; } #else GLOBAL_ASM( @@ -1372,12 +1411,11 @@ glabel sub_GAME_7F078534 #ifdef NONMATCHING -void *sub_GAME_7F078568(void *arg0) { - // Node 0 - *arg0 = (f32) pPlayer->field_110C; - arg0->unk4 = (f32) pPlayer->field_1110; - arg0->unk8 = (f32) pPlayer->field_1114; - return &pPlayer; +void sub_GAME_7F078568(xyzpoint *param_1) +{ + param_1->x = (pPlayer->c_cameraleftnorm).x; + param_1->y = (pPlayer->c_cameraleftnorm).y; + param_1->z = (pPlayer->c_cameraleftnorm).z; } #else GLOBAL_ASM( @@ -1403,12 +1441,11 @@ glabel sub_GAME_7F078568 #ifdef NONMATCHING -void *sub_GAME_7F078598(void *arg0) { - // Node 0 - *arg0 = (f32) -pPlayer->field_110C; - arg0->unk4 = (f32) pPlayer->field_1110; - arg0->unk8 = (f32) pPlayer->field_1114; - return &pPlayer; +void sub_GAME_7F078598(xyzpoint *param_1) +{ + param_1->x = -(pPlayer->c_cameraleftnorm).x; + param_1->y = (pPlayer->c_cameraleftnorm).y; + param_1->z = (pPlayer->c_cameraleftnorm).z; } #else GLOBAL_ASM( @@ -1446,50 +1483,52 @@ f32 getPlayer_c_perspnear(void) #ifdef NONMATCHING -void *sub_GAME_7F0785DC(void) +void sub_GAME_7F0785DC(void) { + f32 sp28; f32 sp24; - f32 temp_f2; - f32 temp_f20; - f32 temp_f2_2; - f32 temp_f16; - f32 temp_f18; f32 temp_f14; - f32 temp_f20_2; f32 temp_f14_2; + f32 temp_f16; f32 temp_f16_2; + f32 temp_f18; f32 temp_f18_2; + f32 temp_f20; + f32 temp_f20_2; + f32 temp_f2; + f32 temp_f2_2; - temp_f2 = (pPlayer->field_10B0 * pPlayer->field_10B8); + temp_f2 = pPlayer->c_halfheight * pPlayer->c_scaley; sp24 = temp_f2; - temp_f20 = (1.0f / sqrtf(((temp_f2 * temp_f2) + 1.0f))); - temp_f2_2 = (temp_f2 * temp_f20); + temp_f20 = 1.0f / sqrtf((temp_f2 * temp_f2) + 1.0f); + temp_f2_2 = temp_f2 * temp_f20; temp_f16 = -temp_f20; temp_f18 = -temp_f16; - flt_CODE_bss_80079940 = (f32) ((pPlayer->field_10D4->unk20 * temp_f2_2) + (temp_f18 * pPlayer->field_10D4->unk10)); - flt_CODE_bss_80079940.unk4 = (f32) ((pPlayer->field_10D4->unk24 * temp_f2_2) + (temp_f18 * pPlayer->field_10D4->unk14)); - flt_CODE_bss_80079940.unk8 = (f32) ((pPlayer->field_10D4->unk28 * temp_f2_2) + (temp_f18 * pPlayer->field_10D4->unk18)); - flt_CODE_bss_8007994C = (f32) ((pPlayer->field_10D4->unk38 * flt_CODE_bss_80079940.unk8) + ((flt_CODE_bss_80079940 * pPlayer->field_10D4->unk30) + (flt_CODE_bss_80079940.unk4 * pPlayer->field_10D4->unk34))); - flt_CODE_bss_80079950 = (f32) ((pPlayer->field_10D4->unk20 * temp_f2_2) + (temp_f16 * pPlayer->field_10D4->unk10)); - flt_CODE_bss_80079950.unk4 = (f32) ((pPlayer->field_10D4->unk24 * temp_f2_2) + (temp_f16 * pPlayer->field_10D4->unk14)); - flt_CODE_bss_80079950.unk8 = (f32) ((pPlayer->field_10D4->unk28 * temp_f2_2) + (temp_f16 * pPlayer->field_10D4->unk18)); - flt_CODE_bss_8007995C = (f32) ((pPlayer->field_10D4->unk38 * flt_CODE_bss_80079950.unk8) + ((flt_CODE_bss_80079950 * pPlayer->field_10D4->unk30) + (flt_CODE_bss_80079950.unk4 * pPlayer->field_10D4->unk34))); - temp_f14 = (-pPlayer->field_10AC * pPlayer->field_10B4); - temp_f20_2 = (1.0f / sqrtf(((temp_f14 * temp_f14) + 1.0f), temp_f14, &flt_CODE_bss_80079940, &flt_CODE_bss_80079950)); - temp_f14_2 = (sp28 * temp_f20_2); + flt_CODE_bss_80079940.unk0 = (f32) ((pPlayer->unk10D4->unk20 * temp_f2_2) + (temp_f18 * pPlayer->unk10D4->unk10)); + flt_CODE_bss_80079940.unk4 = (f32) ((pPlayer->unk10D4->unk24 * temp_f2_2) + (temp_f18 * pPlayer->unk10D4->unk14)); + flt_CODE_bss_80079940.unk8 = (f32) ((pPlayer->unk10D4->unk28 * temp_f2_2) + (temp_f18 * pPlayer->unk10D4->unk18)); + flt_CODE_bss_8007994C = (f32) ((pPlayer->unk10D4->unk38 * flt_CODE_bss_80079940.unk8) + ((flt_CODE_bss_80079940.unk0 * pPlayer->unk10D4->unk30) + (flt_CODE_bss_80079940.unk4 * pPlayer->unk10D4->unk34))); + flt_CODE_bss_80079950.unk0 = (f32) ((pPlayer->unk10D4->unk20 * temp_f2_2) + (temp_f16 * pPlayer->unk10D4->unk10)); + flt_CODE_bss_80079950.unk4 = (f32) ((pPlayer->unk10D4->unk24 * temp_f2_2) + (temp_f16 * pPlayer->unk10D4->unk14)); + flt_CODE_bss_80079950.unk8 = (f32) ((pPlayer->unk10D4->unk28 * temp_f2_2) + (temp_f16 * pPlayer->unk10D4->unk18)); + flt_CODE_bss_8007995C = (f32) ((pPlayer->unk10D4->unk38 * flt_CODE_bss_80079950.unk8) + ((flt_CODE_bss_80079950.unk0 * pPlayer->unk10D4->unk30) + (flt_CODE_bss_80079950.unk4 * pPlayer->unk10D4->unk34))); + temp_f14 = -pPlayer->unk10AC * pPlayer->unk10B4; + sp28 = temp_f14; + temp_f20_2 = 1.0f / sqrtf((temp_f14 * temp_f14) + 1.0f, temp_f14, &flt_CODE_bss_80079940, &flt_CODE_bss_80079950); + temp_f14_2 = temp_f14 * temp_f20_2; temp_f16_2 = -temp_f20_2; temp_f18_2 = -temp_f16_2; - flt_CODE_bss_80079960 = (f32) ((temp_f16_2 * *pPlayer->field_10D4) - (pPlayer->field_10D4->unk20 * temp_f14_2)); - flt_CODE_bss_80079960.unk4 = (f32) ((temp_f16_2 * pPlayer->field_10D4->unk4) - (pPlayer->field_10D4->unk24 * temp_f14_2)); - flt_CODE_bss_80079960.unk8 = (f32) ((temp_f16_2 * pPlayer->field_10D4->unk8) - (pPlayer->field_10D4->unk28 * temp_f14_2)); - flt_CODE_bss_8007996C = (f32) ((pPlayer->field_10D4->unk38 * flt_CODE_bss_80079960.unk8) + ((flt_CODE_bss_80079960 * pPlayer->field_10D4->unk30) + (flt_CODE_bss_80079960.unk4 * pPlayer->field_10D4->unk34))); - flt_CODE_bss_80079970 = (f32) ((temp_f18_2 * *pPlayer->field_10D4) - (pPlayer->field_10D4->unk20 * temp_f14_2)); - flt_CODE_bss_80079970.unk4 = (f32) ((temp_f18_2 * pPlayer->field_10D4->unk4) - (pPlayer->field_10D4->unk24 * temp_f14_2)); - flt_CODE_bss_80079970.unk8 = (f32) ((temp_f18_2 * pPlayer->field_10D4->unk8) - (pPlayer->field_10D4->unk28 * temp_f14_2)); - flt_CODE_bss_8007997C = (f32) ((pPlayer->field_10D4->unk38 * flt_CODE_bss_80079970.unk8) + ((flt_CODE_bss_80079970 * pPlayer->field_10D4->unk30) + (flt_CODE_bss_80079970.unk4 * pPlayer->field_10D4->unk34))); - (void *)0x80080000->unk-6680 = (f32) ((pPlayer->field_10D4->unk38 * pPlayer->field_10D4->unk28) + ((pPlayer->field_10D4->unk20 * pPlayer->field_10D4->unk30) + (pPlayer->field_10D4->unk24 * pPlayer->field_10D4->unk34))); - return pPlayer->field_10D4; + flt_CODE_bss_80079960.unk0 = (f32) ((temp_f16_2 * pPlayer->unk10D4->unk0) - (pPlayer->unk10D4->unk20 * temp_f14_2)); + flt_CODE_bss_80079960.unk4 = (f32) ((temp_f16_2 * pPlayer->unk10D4->unk4) - (pPlayer->unk10D4->unk24 * temp_f14_2)); + flt_CODE_bss_80079960.unk8 = (f32) ((temp_f16_2 * pPlayer->unk10D4->unk8) - (pPlayer->unk10D4->unk28 * temp_f14_2)); + flt_CODE_bss_8007996C = (f32) ((pPlayer->unk10D4->unk38 * flt_CODE_bss_80079960.unk8) + ((flt_CODE_bss_80079960.unk0 * pPlayer->unk10D4->unk30) + (flt_CODE_bss_80079960.unk4 * pPlayer->unk10D4->unk34))); + flt_CODE_bss_80079970.unk0 = (f32) ((temp_f18_2 * pPlayer->unk10D4->unk0) - (pPlayer->unk10D4->unk20 * temp_f14_2)); + flt_CODE_bss_80079970.unk4 = (f32) ((temp_f18_2 * pPlayer->unk10D4->unk4) - (pPlayer->unk10D4->unk24 * temp_f14_2)); + flt_CODE_bss_80079970.unk8 = (f32) ((temp_f18_2 * pPlayer->unk10D4->unk8) - (pPlayer->unk10D4->unk28 * temp_f14_2)); + flt_CODE_bss_8007997C = (f32) ((pPlayer->unk10D4->unk38 * flt_CODE_bss_80079970.unk8) + ((flt_CODE_bss_80079970.unk0 * pPlayer->unk10D4->unk30) + (flt_CODE_bss_80079970.unk4 * pPlayer->unk10D4->unk34))); + flt_CODE_bss_80079980 = (f32) ((pPlayer->unk10D4->unk38 * pPlayer->unk10D4->unk28) + ((pPlayer->unk10D4->unk20 * pPlayer->unk10D4->unk30) + (pPlayer->unk10D4->unk24 * pPlayer->unk10D4->unk34))); } + #else GLOBAL_ASM( .text @@ -2097,7 +2136,7 @@ void sub_GAME_7F078BF4(void *arg0, s32 arg1, void *arg2) { return 0; } - temp_f2 = (((*arg2 - pPlayer->field_1098) - pPlayer->field_10AC) * pPlayer->field_10B4); + temp_f2 = (((*arg2 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * pPlayer->c_scalex); sp38 = temp_f2; temp_f12 = (1.0f / sqrtf(((temp_f2 * temp_f2) + 1.0f))); temp_f2_2 = (temp_f2 * temp_f12); @@ -2112,7 +2151,7 @@ void sub_GAME_7F078BF4(void *arg0, s32 arg1, void *arg2) { return 0; } - temp_f2_3 = (-((arg2->unk8 - pPlayer->field_1098) - pPlayer->field_10AC) * pPlayer->field_10B4); + temp_f2_3 = (-((arg2->unk8 - pPlayer->c_screenleft) - pPlayer->c_halfwidth) * pPlayer->c_scalex); sp38 = temp_f2_3; temp_f12_2 = (1.0f / sqrtf(((temp_f2_3 * temp_f2_3) + 1.0f), temp_f14, arg0)); temp_f2_4 = (temp_f2_3 * temp_f12_2); @@ -2127,7 +2166,7 @@ void sub_GAME_7F078BF4(void *arg0, s32 arg1, void *arg2) { return 0; } - temp_f2_5 = ((pPlayer->field_10B0 - (arg2->unk4 - pPlayer->field_109C)) * pPlayer->field_10B8); + temp_f2_5 = ((pPlayer->c_halfheight - (arg2->unk4 - pPlayer->c_screentop)) * pPlayer->c_scaley); sp34 = temp_f2_5; temp_f12_3 = (1.0f / sqrtf(((temp_f2_5 * temp_f2_5) + 1.0f), temp_f14_2, arg0)); temp_f2_6 = (temp_f2_5 * temp_f12_3); @@ -2142,7 +2181,7 @@ void sub_GAME_7F078BF4(void *arg0, s32 arg1, void *arg2) { return 0; } - temp_f2_7 = (-(pPlayer->field_10B0 - (arg2->unkC - pPlayer->field_109C)) * pPlayer->field_10B8); + temp_f2_7 = (-(pPlayer->c_halfheight - (arg2->unkC - pPlayer->c_screentop)) * pPlayer->c_scaley); sp34 = temp_f2_7; temp_f12_4 = (1.0f / sqrtf(((temp_f2_7 * temp_f2_7) + 1.0f), temp_f14_3, arg0)); temp_f2_8 = (temp_f2_7 * temp_f12_4); @@ -2866,38 +2905,36 @@ glabel sub_GAME_7F0790F0 #ifdef NONMATCHING -?32 init_player_BONDdata(void) { - // Node 0 +void init_player_BONDdata(void) +{ if (get_num_players() >= 2) { - // Node 1 - pPlayer->field_430 = get_player_control_style(get_cur_playernum()); + pPlayer->controlstyle = get_player_control_style(get_cur_playernum()); cur_player_set_control_type(get_player_control_style(get_cur_playernum())); } - // Node 2 - pPlayer->field_38 = 0.0f; - pPlayer->field_3C = 0.0f; - pPlayer->field_40 = 0.0f; - pPlayer->field_44 = 0.0f; - pPlayer->field_48 = 0.0f; - pPlayer->field_4C = 0.0f; - pPlayer->field_50 = 0.0f; - pPlayer->field_54 = 0.0f; - pPlayer->field_58 = 0.0f; - *pPlayer = 0; - pPlayer->field_4 = 0.0f; - pPlayer->field_8 = 0.0f; - pPlayer->field_C = 0.0f; - pPlayer->field_10 = 0.0f; - pPlayer->field_14 = 0.0f; - pPlayer->field_18 = 1.0f; - pPlayer->field_1C = 0.0f; - pPlayer->field_20 = 1.0f; - pPlayer->field_24 = 0.0f; - pPlayer->field_28 = 0.0f; - pPlayer->field_2C = 0.0f; - pPlayer->field_30 = 0.0f; - pPlayer->field_34 = 0; + pPlayer->current_model_xpos = 0.0f; + pPlayer->current_model_ypos = 0.0f; + pPlayer->current_model_zpos = 0.0f; + pPlayer->previous_model_xpos = 0.0f; + pPlayer->previous_model_ypos = 0.0f; + pPlayer->previous_model_zpos = 0.0f; + pPlayer->current_room_xpos = 0.0f; + pPlayer->current_room_ypos = 0.0f; + pPlayer->current_room_zpos = 0.0f; + pPlayer->unknown = 0; + pPlayer->xpos = 0.0f; + pPlayer->ypos = 0.0f; + pPlayer->zpos = 0.0f; + pPlayer->xpos2 = 0.0f; + pPlayer->ypos2 = 0.0f; + pPlayer->zpos2 = 1.0f; + pPlayer->xoffset = 0.0f; + pPlayer->yoffset = 1.0f; + pPlayer->zoffset = 0.0f; + pPlayer->xpos3 = 0.0f; + pPlayer->ypos3 = 0.0f; + pPlayer->zpos3 = 0.0f; + pPlayer->room_pointer = 0; pPlayer->field_3C4 = 0.0f; pPlayer->field_3C8 = 0.0f; pPlayer->field_3CC = 1.0f; @@ -2910,74 +2947,72 @@ glabel sub_GAME_7F0790F0 pPlayer->field_1274 = 0.0f; pPlayer->field_1278 = 0.0f; pPlayer->field_127C = 0.0f; - pPlayer->field_9C = 2; + pPlayer->crouchposition = 2; pPlayer->field_29FC = 2; - pPlayer->field_A0 = 0.0f; + pPlayer->ducking_height_offset = 0.0f; pPlayer->field_A4 = 0.0f; pPlayer->field_AC = 1; pPlayer->field_D0 = 0; - pPlayer->field_D8 = 0; - pPlayer->field_DC = 1.0f; - pPlayer->field_E0 = 0.0f; - pPlayer->field_E4 = 1.0f; - pPlayer->field_E8 = 0.0f; - pPlayer->field_EC = 1.0f; - pPlayer->field_F0 = 0.0f; - pPlayer->field_F4 = -1; - pPlayer->field_F8 = -1; + pPlayer->bonddead = 0; + pPlayer->bondhealth = 1.0f; + pPlayer->bondarmour = 0.0f; + pPlayer->oldhealth = 1.0f; + pPlayer->oldarmour = 0.0f; + pPlayer->apparenthealth = 1.0f; + pPlayer->apparentarmour = 0.0f; + pPlayer->damageshowtime = -1; + pPlayer->healthshowtime = -1; pPlayer->field_1C0 = 0; pPlayer->field_1C4 = 0; - pPlayer->field_1C8 = 0; - pPlayer->field_1CC = 1; - pPlayer->field_1D0 = 0; + pPlayer->pause_animation_state = 0; + pPlayer->paused_flag = 1; + pPlayer->open_close_solo_watch_menu = 0; pPlayer->field_1A0 = 0; - pPlayer->field_19C = 0.0f; - pPlayer->field_14C = 0.0f; - pPlayer->field_150 = 1.0f; - pPlayer->field_154 = 0.0f; - pPlayer->field_158 = -4.0f; - pPlayer->field_15C = (f32) pPlayer->field_158; - if (pPlayer->field_15C < 0.0f) + pPlayer->bondfadefracnew = 0.0f; + pPlayer->speedtheta = 0.0f; + pPlayer->vv_costheta = 1.0f; + pPlayer->vv_sintheta = 0.0f; + pPlayer->vv_verta = -4.0f; + pPlayer->vv_verta360 = (f32) pPlayer->vv_verta; + if (pPlayer->vv_verta360 < 0.0f) { - // Node 3 - pPlayer->field_15C = (f32) (pPlayer->field_15C + 360.0f); + pPlayer->vv_verta360 = (f32) (pPlayer->vv_verta360 + 360.0f); } - // Node 4 - pPlayer->field_160 = 0.0f; - pPlayer->field_164 = 1.0f; - pPlayer->field_168 = 0.0f; - pPlayer->field_16C = 0.0f; - pPlayer->field_170 = 0.0f; - pPlayer->field_174 = 0.0f; + pPlayer->speedverta = 0.0f; + pPlayer->vv_cosverta = 1.0f; + pPlayer->vv_sinverta = 0.0f; + pPlayer->speedsideways = 0.0f; + pPlayer->speedstrafe = 0.0f; + pPlayer->speedforwards = 0.0f; pPlayer->field_2A4C = 0.0f; - pPlayer->field_178 = 1.0f; - pPlayer->field_17C = 0; - pPlayer->field_180 = 0.0f; - pPlayer->field_184 = 0.0f; - pPlayer->field_188 = 0.0f; + pPlayer->speedboost = 1.0f; + pPlayer->speedmaxtime60 = 0; + pPlayer->boost_factor_x = 0.0f; + pPlayer->boost_factor_y = 0.0f; + pPlayer->boost_factor_z = 0.0f; pPlayer->field_104 = 0; pPlayer->field_108 = 0; pPlayer->field_10C = 0; - pPlayer->field_110 = 0; - pPlayer->field_114 = 1; - pPlayer->field_118 = 1; - pPlayer->field_11C = 0; - pPlayer->field_120 = 1; - pPlayer->field_124 = 0; - pPlayer->field_128 = 1; - pPlayer->field_12C = 0.0f; - pPlayer->field_130 = 0; - pPlayer->field_134 = -1; - pPlayer->field_138 = 1; - pPlayer->field_13C = 0.0f; - pPlayer->field_140 = 0; - pPlayer->field_144 = -1; - pPlayer->field_3D0 = 0xff; - pPlayer->field_3D4 = 0xff; - pPlayer->field_3D8 = 0xff; - pPlayer->field_3DC = 0.0f; + pPlayer->movecentrerelease = 0; + pPlayer->lookaheadcentreenabled = 1; + pPlayer->automovecentreenabled = 1; + pPlayer->fastmovecentreenabled = 0; + pPlayer->automovecentre = 1; + pPlayer->insightaimmode = 0; + pPlayer->autoyaimenabled = 1; + pPlayer->autoaimy = 0.0f; + pPlayer->autoyaimtime = 0; + pPlayer->autoyaimtime60 = -1; + pPlayer->autoxaimenabled = 1; + pPlayer->autoaimx = 0.0f; + pPlayer->autoxaimtime = 0; + pPlayer->autoxaimtime60 = -1; + pPlayer->tint_red = 0xff; + pPlayer->tint_green = 0xff; + pPlayer->tint_blue = 0xff; + pPlayer->tint_alpha = 0.0f; pPlayer->field_3E0 = -1.0f; - pPlayer->field_3E4 = -1.0f; + pPlayer->time_for_fade = -1.0f; pPlayer->field_3E8 = 0xff; pPlayer->field_3EC = 0xff; pPlayer->field_3F0 = 0xff; @@ -2986,21 +3021,21 @@ glabel sub_GAME_7F0790F0 pPlayer->field_3FC = 0xff; pPlayer->field_400 = 0.0f; pPlayer->field_404 = 0.0f; - pPlayer->field_18C = -1.0f; - pPlayer->field_190 = -1.0f; - pPlayer->field_194 = 0.0f; - pPlayer->field_198 = 0.0f; + pPlayer->viewport_alpha = -1.0f; + pPlayer->bondfadetime60 = -1.0f; + pPlayer->bondfadetimemax = 0.0f; + pPlayer->bondfadefracold = 0.0f; pPlayer->field_42C = 2; - pPlayer->field_430 = 0; - pPlayer->field_204 = 0.0f; + pPlayer->controlstyle = 0; + pPlayer->pause_starting_angle = 0.0f; pPlayer->field_208 = 0.0f; - pPlayer->field_20C = 0.0f; + pPlayer->pause_target_angle = 0.0f; pPlayer->field_210 = 0.0f; pPlayer->field_214 = 0.0f; pPlayer->field_218 = 0; - pPlayer->field_220 = 0; - pPlayer->field_224 = 0.0f; - pPlayer->field_200 = 0; + pPlayer->step_in_view_watch_animation = 0; + pPlayer->pause_animation_counter = 0.0f; + pPlayer->pausing_flag = 0; pPlayer->field_3B4 = (u16)0; pPlayer->field_3B6 = (u16)0; pPlayer->field_29C0 = 15.0f; @@ -3009,7 +3044,6 @@ glabel sub_GAME_7F0790F0 pPlayer->field_2A0C = 0.0f; pPlayer->field_2A6C = 0; pPlayer->field_2A70 = 0; - return 0xff; } #else @@ -3654,7 +3688,7 @@ void sub_GAME_7F0798B8(void) { ? phi_return; // Node 0 - pPlayer->field_29BC = (f32) (((cur_player_stat_ptr->unk64 * 185.0f) * 1.0f) - 10.0f); + pPlayer->field_29BC = (f32) (((pPlayersPerm->unk64 * 185.0f) * 1.0f) - 10.0f); pPlayer->field_29F8 = 0; pPlayer->field_29F4 = sub_GAME_7F08BFB8(); pPlayer->field_2A00 = 0; @@ -3679,8 +3713,8 @@ void sub_GAME_7F0798B8(void) { GLOBAL_ASM( .text glabel sub_GAME_7F0798B8 -/* 0AE3E8 7F0798B8 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) -/* 0AE3EC 7F0798BC 8DCEA0B4 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 0AE3E8 7F0798B8 3C0E8008 */ lui $t6, %hi(pPlayersPerm) +/* 0AE3EC 7F0798BC 8DCEA0B4 */ lw $t6, %lo(pPlayersPerm)($t6) /* 0AE3F0 7F0798C0 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0AE3F4 7F0798C4 AFBF0014 */ sw $ra, 0x14($sp) /* 0AE3F8 7F0798C8 3C014339 */ li $at, 0x43390000 # 185.000000 @@ -3891,7 +3925,7 @@ void *sub_GAME_7F079A60(void *arg0, void *arg1, void *arg2, s32 arg3, void *arg4 void *phi_return; // Node 0 - if ((((((((((*arg0 != pPlayer->field_4) || (arg0->unk4 != pPlayer->field_8)) || (arg0->unk8 != pPlayer->field_C)) || (*arg1 != pPlayer->field_10)) || (arg1->unk4 != pPlayer->field_14)) || (arg1->unk8 != pPlayer->field_18)) || (*arg2 != pPlayer->field_1C)) || (arg2->unk4 != pPlayer->field_20)) || (arg2->unk8 != pPlayer->field_24)) || (pPlayer->field_34 == 0)) + if ((((((((((*arg0 != pPlayer->xpos) || (arg0->unk4 != pPlayer->ypos)) || (arg0->unk8 != pPlayer->zpos)) || (*arg1 != pPlayer->xpos2)) || (arg1->unk4 != pPlayer->ypos2)) || (arg1->unk8 != pPlayer->zpos2)) || (*arg2 != pPlayer->xoffset)) || (arg2->unk4 != pPlayer->yoffset)) || (arg2->unk8 != pPlayer->zoffset)) || (pPlayer->room_pointer == 0)) { // Node 10 sp34 = arg3; @@ -3899,49 +3933,49 @@ void *sub_GAME_7F079A60(void *arg0, void *arg1, void *arg2, s32 arg3, void *arg4 { // Node 11 sub_GAME_7F0B0518(sp34, *arg0, arg0->unk8); - pPlayer->field_34 = sp34; + pPlayer->room_pointer = sp34; } else { // Node 12 - if (pPlayer->field_34 != 0) + if (pPlayer->room_pointer != 0) { // Node 13 - sp30 = (s32) pPlayer->field_34; - if (sub_GAME_7F0B0BE4(&sp30, pPlayer->field_4, pPlayer->field_C, *arg0, (f32) arg0->unk8) != 0) + sp30 = (s32) pPlayer->room_pointer; + if (sub_GAME_7F0B0BE4(&sp30, pPlayer->xpos, pPlayer->zpos, *arg0, (f32) arg0->unk8) != 0) { // Node 14 - pPlayer->field_34 = sp30; + pPlayer->room_pointer = sp30; } else { // Node 15 - pPlayer->field_34 = sp34; + pPlayer->room_pointer = sp34; } } else { // Node 16 - pPlayer->field_34 = sp34; + pPlayer->room_pointer = sp34; } } // Node 17 - *&pPlayer->field_4 = (f32) *arg0; - *&pPlayer->field_8 = (f32) arg0->unk4; - *&pPlayer->field_C = (f32) arg0->unk8; - *&pPlayer->field_10 = (f32) *arg1; - *&pPlayer->field_14 = (f32) arg1->unk4; - *&pPlayer->field_18 = (f32) arg1->unk8; - *&pPlayer->field_1C = (f32) *arg2; - *&pPlayer->field_20 = (f32) arg2->unk4; - *&pPlayer->field_24 = (f32) arg2->unk8; + *&pPlayer->xpos = (f32) *arg0; + *&pPlayer->ypos = (f32) arg0->unk4; + *&pPlayer->zpos = (f32) arg0->unk8; + *&pPlayer->xpos2 = (f32) *arg1; + *&pPlayer->ypos2 = (f32) arg1->unk4; + *&pPlayer->zpos2 = (f32) arg1->unk8; + *&pPlayer->xoffset = (f32) *arg2; + *&pPlayer->yoffset = (f32) arg2->unk4; + *&pPlayer->zoffset = (f32) arg2->unk8; temp_v0 = *&pPlayer; temp_v0->unk28 = (f32) temp_v0->unk4; temp_v0_2 = *&pPlayer; temp_v0_2->unk30 = (f32) temp_v0_2->unkC; temp_v0_3 = *&pPlayer; temp_ret = sub_GAME_7F0B2970(temp_v0_3->unk34, temp_v0_3->unk4, temp_v0_3->unkC, arg1); - pPlayer->field_2C = temp_ret; + pPlayer->ypos3 = temp_ret; phi_return = temp_ret; } else @@ -4179,17 +4213,17 @@ glabel solo_char_load /* 0AE840 7F079D10 8DE20004 */ lw $v0, 4($t7) /* 0AE844 7F079D14 544001CA */ bnezl $v0, .L7F07A440 /* 0AE848 7F079D18 8C4F001C */ lw $t7, 0x1c($v0) -/* 0AE84C 7F079D1C 0FC173CC */ jal sub_GAME_7F05CF30 +/* 0AE84C 7F079D1C 0FC173CC */ jal getPlayerWeaponBufferForHand /* 0AE850 7F079D20 00002025 */ move $a0, $zero /* 0AE854 7F079D24 AFA200F0 */ sw $v0, 0xf0($sp) -/* 0AE858 7F079D28 0FC173CC */ jal sub_GAME_7F05CF30 +/* 0AE858 7F079D28 0FC173CC */ jal getPlayerWeaponBufferForHand /* 0AE85C 7F079D2C 24040001 */ li $a0, 1 /* 0AE860 7F079D30 AFA200EC */ sw $v0, 0xec($sp) /* 0AE864 7F079D34 AFA000E8 */ sw $zero, 0xe8($sp) -/* 0AE868 7F079D38 0FC173D2 */ jal sub_GAME_7F05CF48 +/* 0AE868 7F079D38 0FC173D2 */ jal getSizeBufferWeaponInHand /* 0AE86C 7F079D3C 00002025 */ move $a0, $zero /* 0AE870 7F079D40 AFA200E4 */ sw $v0, 0xe4($sp) -/* 0AE874 7F079D44 0FC173D2 */ jal sub_GAME_7F05CF48 +/* 0AE874 7F079D44 0FC173D2 */ jal getSizeBufferWeaponInHand /* 0AE878 7F079D48 24040001 */ li $a0, 1 /* 0AE87C 7F079D4C 3C198003 */ lui $t9, %hi(dummy_08_pp7_obj) /* 0AE880 7F079D50 273965AC */ addiu $t9, %lo(dummy_08_pp7_obj) # addiu $t9, $t9, 0x65ac @@ -4417,7 +4451,7 @@ variable_body_head: /* 0AEB88 7F07A058 0FC1D929 */ jal load_object_fill_header /* 0AEB8C 7F07A05C 8C650004 */ lw $a1, 4($v1) /* 0AEB90 7F07A060 8FA30028 */ lw $v1, 0x28($sp) -/* 0AEB94 7F07A064 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 0AEB94 7F07A064 0FC2F462 */ jal get_pc_buffer_remaining_value /* 0AEB98 7F07A068 8C640004 */ lw $a0, 4($v1) /* 0AEB9C 7F07A06C 8FAD0040 */ lw $t5, 0x40($sp) /* 0AEBA0 7F07A070 3C0F8004 */ lui $t7, %hi(c_item_entries) @@ -4462,7 +4496,7 @@ variable_body_head: /* 0AEC3C 7F07A10C 0FC1D929 */ jal load_object_fill_header /* 0AEC40 7F07A110 01C83823 */ subu $a3, $t6, $t0 /* 0AEC44 7F07A114 8FA30028 */ lw $v1, 0x28($sp) -/* 0AEC48 7F07A118 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 0AEC48 7F07A118 0FC2F462 */ jal get_pc_buffer_remaining_value /* 0AEC4C 7F07A11C 8C640004 */ lw $a0, 4($v1) /* 0AEC50 7F07A120 8FA300E8 */ lw $v1, 0xe8($sp) /* 0AEC54 7F07A124 8FAC00F0 */ lw $t4, 0xf0($sp) @@ -4645,7 +4679,7 @@ variable_body_head: /* 0AEF08 7F07A3D8 0FC1D929 */ jal load_object_fill_header /* 0AEF0C 7F07A3DC 030C3021 */ addu $a2, $t8, $t4 /* 0AEF10 7F07A3E0 8FA30028 */ lw $v1, 0x28($sp) -/* 0AEF14 7F07A3E4 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 0AEF14 7F07A3E4 0FC2F462 */ jal get_pc_buffer_remaining_value /* 0AEF18 7F07A3E8 8C640004 */ lw $a0, 4($v1) /* 0AEF1C 7F07A3EC 0FC1D73D */ jal set_objuse_flag_compute_grp_nums_set_obj_loaded /* 0AEF20 7F07A3F0 8FA400F4 */ lw $a0, 0xf4($sp) @@ -4742,17 +4776,17 @@ glabel solo_char_load /* 0AEE70 7F07A300 8DE20004 */ lw $v0, 4($t7) /* 0AEE74 7F07A304 544001D6 */ bnezl $v0, .Ljp7F07AA60 /* 0AEE78 7F07A308 8C59001C */ lw $t9, 0x1c($v0) -/* 0AEE7C 7F07A30C 0FC17514 */ jal sub_GAME_7F05CF30 +/* 0AEE7C 7F07A30C 0FC17514 */ jal getPlayerWeaponBufferForHand /* 0AEE80 7F07A310 00002025 */ move $a0, $zero /* 0AEE84 7F07A314 AFA200F0 */ sw $v0, 0xf0($sp) -/* 0AEE88 7F07A318 0FC17514 */ jal sub_GAME_7F05CF30 +/* 0AEE88 7F07A318 0FC17514 */ jal getPlayerWeaponBufferForHand /* 0AEE8C 7F07A31C 24040001 */ li $a0, 1 /* 0AEE90 7F07A320 AFA200EC */ sw $v0, 0xec($sp) /* 0AEE94 7F07A324 AFA000E8 */ sw $zero, 0xe8($sp) -/* 0AEE98 7F07A328 0FC1751A */ jal sub_GAME_7F05CF48 +/* 0AEE98 7F07A328 0FC1751A */ jal getSizeBufferWeaponInHand /* 0AEE9C 7F07A32C 00002025 */ move $a0, $zero /* 0AEEA0 7F07A330 AFA200E4 */ sw $v0, 0xe4($sp) -/* 0AEEA4 7F07A334 0FC1751A */ jal sub_GAME_7F05CF48 +/* 0AEEA4 7F07A334 0FC1751A */ jal getSizeBufferWeaponInHand /* 0AEEA8 7F07A338 24040001 */ li $a0, 1 /* 0AEEAC 7F07A33C 3C198003 */ lui $t9, %hi(dummy_08_pp7_obj) # $t9, 0x8003 /* 0AEEB0 7F07A340 273965EC */ addiu $t9, %lo(dummy_08_pp7_obj) # addiu $t9, $t9, 0x65ec @@ -4980,7 +5014,7 @@ variable_body_head: /* 0AF1B8 7F07A648 0FC1DAA5 */ jal load_object_fill_header /* 0AF1BC 7F07A64C 8C650004 */ lw $a1, 4($v1) /* 0AF1C0 7F07A650 8FA30028 */ lw $v1, 0x28($sp) -/* 0AF1C4 7F07A654 0FC2F74E */ jal sub_GAME_7F0BD188 +/* 0AF1C4 7F07A654 0FC2F74E */ jal get_pc_buffer_remaining_value /* 0AF1C8 7F07A658 8C640004 */ lw $a0, 4($v1) /* 0AF1CC 7F07A65C 8FAD0040 */ lw $t5, 0x40($sp) /* 0AF1D0 7F07A660 3C0F8004 */ lui $t7, %hi(c_item_entries) # $t7, 0x8004 @@ -5025,7 +5059,7 @@ variable_body_head: /* 0AF26C 7F07A6FC 0FC1DAA5 */ jal load_object_fill_header /* 0AF270 7F07A700 01C83823 */ subu $a3, $t6, $t0 /* 0AF274 7F07A704 8FA30028 */ lw $v1, 0x28($sp) -/* 0AF278 7F07A708 0FC2F74E */ jal sub_GAME_7F0BD188 +/* 0AF278 7F07A708 0FC2F74E */ jal get_pc_buffer_remaining_value /* 0AF27C 7F07A70C 8C640004 */ lw $a0, 4($v1) /* 0AF280 7F07A710 8FA300E8 */ lw $v1, 0xe8($sp) /* 0AF284 7F07A714 8FAC00F0 */ lw $t4, 0xf0($sp) @@ -5221,7 +5255,7 @@ variable_body_head: /* 0AF568 7F07A9F8 0FC1DAA5 */ jal load_object_fill_header /* 0AF56C 7F07A9FC 016D3021 */ addu $a2, $t3, $t5 /* 0AF570 7F07AA00 8FA30028 */ lw $v1, 0x28($sp) -/* 0AF574 7F07AA04 0FC2F74E */ jal sub_GAME_7F0BD188 +/* 0AF574 7F07AA04 0FC2F74E */ jal get_pc_buffer_remaining_value /* 0AF578 7F07AA08 8C640004 */ lw $a0, 4($v1) /* 0AF57C 7F07AA0C 0FC1D8B9 */ jal set_objuse_flag_compute_grp_nums_set_obj_loaded /* 0AF580 7F07AA10 8FA400F4 */ lw $a0, 0xf4($sp) @@ -8749,7 +8783,7 @@ s32 get_BONDdata_autoaim_y(void) return pPlayer->autoyaimenabled; } else { - return cur_player_stat_ptr->autoaim; + return pPlayersPerm->autoaim; } } #else @@ -8768,8 +8802,8 @@ glabel get_BONDdata_autoaim_y /* 0B10D4 7F07C5A4 10000004 */ b .L7F07C5B8 /* 0B10D8 7F07C5A8 8DC20128 */ lw $v0, 0x128($t6) .L7F07C5AC: -/* 0B10DC 7F07C5AC 3C0F8008 */ lui $t7, %hi(cur_player_stat_ptr) -/* 0B10E0 7F07C5B0 8DEFA0B4 */ lw $t7, %lo(cur_player_stat_ptr)($t7) +/* 0B10DC 7F07C5AC 3C0F8008 */ lui $t7, %hi(pPlayersPerm) +/* 0B10E0 7F07C5B0 8DEFA0B4 */ lw $t7, %lo(pPlayersPerm)($t7) /* 0B10E4 7F07C5B4 91E2006A */ lbu $v0, 0x6a($t7) .L7F07C5B8: /* 0B10E8 7F07C5B8 03E00008 */ jr $ra @@ -8855,10 +8889,10 @@ void get_BONDdata_autoaim_x(void) { { // Node 2 // Node 3 - return cur_player_stat_ptr->unk6A; + return pPlayersPerm->unk6A; } // Node 1 - return cur_player_stat_ptr->unk6A; + return pPlayersPerm->unk6A; } #else GLOBAL_ASM( @@ -8876,8 +8910,8 @@ glabel get_BONDdata_autoaim_x /* 0B11BC 7F07C68C 10000004 */ b .L7F07C6A0 /* 0B11C0 7F07C690 8DC20138 */ lw $v0, 0x138($t6) .L7F07C694: -/* 0B11C4 7F07C694 3C0F8008 */ lui $t7, %hi(cur_player_stat_ptr) -/* 0B11C8 7F07C698 8DEFA0B4 */ lw $t7, %lo(cur_player_stat_ptr)($t7) +/* 0B11C4 7F07C694 3C0F8008 */ lui $t7, %hi(pPlayersPerm) +/* 0B11C8 7F07C698 8DEFA0B4 */ lw $t7, %lo(pPlayersPerm)($t7) /* 0B11CC 7F07C69C 91E2006A */ lbu $v0, 0x6a($t7) .L7F07C6A0: /* 0B11D0 7F07C6A0 03E00008 */ jr $ra @@ -9957,7 +9991,7 @@ s32 cal_player_collision(void *arg0, void *arg1) { if ((sub_GAME_7F0B0E24(&sp90, pPlayer->field_48C, pPlayer->field_494, *arg0, (f32) arg0->unk8, sp8C, sp88, sp84, 0.0f, 1.0f) != 0) && (sub_GAME_7F0B18B8(&sp90, *arg0, arg0->unk8, sp80, sp8C, sp88, sp84) < 0)) { // Node 12 - if ((-100.0f == pPlayer->field_A0) || (sp7C < 0)) + if ((-100.0f == pPlayer->ducking_height_offset) || (sp7C < 0)) { // Node 14 if ((sub_GAME_7F0B23A4(&sp3C) == 0) && (sub_GAME_7F0B26B8(&sp90, *arg0, arg0->unk8, sp80, (f32) (pPlayer->field_490 + 175.0f)) >= 0)) @@ -11302,7 +11336,7 @@ glabel sub_GAME_7F07DE9C #ifdef NONMATCHING void *sub_GAME_7F07DEFC(void) { // Node 0 - pPlayer->field_204 = (f32) pPlayer->field_158; + pPlayer->pause_starting_angle = (f32) pPlayer->vv_verta; pPlayer->field_210 = 0.0f; pPlayer->field_218 = 0; return pPlayer; @@ -11341,8 +11375,8 @@ f32 sub_GAME_7F07DF28(s32 arg0) { if (arg0 != 0) { // Node 1 - pPlayer->field_208 = (f32) pPlayer->field_158; - pPlayer->field_20C = -40.0f; + pPlayer->field_208 = (f32) pPlayer->vv_verta; + pPlayer->pause_target_angle = -40.0f; phi_v1 = &pPlayer; } else @@ -12112,7 +12146,7 @@ void sub_GAME_7F07E62C(void) { if (pPlayer->field_11BC < pPlayer->field_11C0) { // Node 1 - if ((pPlayer->field_1C8 == 0xc) || (pPlayer->field_1C8 == 0xc)) + if ((pPlayer->pause_animation_state == 0xc) || (pPlayer->pause_animation_state == 0xc)) { // Node 3 pPlayer->field_11BC = (f32) (pPlayer->field_11BC + (f32) D_80048498); @@ -12139,8 +12173,8 @@ void sub_GAME_7F07E62C(void) { pPlayer->field_11C4 = (f32) pPlayer->field_11CC; } // Node 9 - sub_GAME_7F09B214(pPlayer->field_11C4, &pPlayer); - return video_related_1F(pPlayer->field_11C4, &pPlayer); + set_cur_player_fovy(pPlayer->field_11C4, &pPlayer); + return setvideo_far(pPlayer->field_11C4, &pPlayer); } #else @@ -12212,12 +12246,12 @@ glabel sub_GAME_7F07E62C /* 0B323C 7F07E70C E44611C4 */ swc1 $f6, 0x11c4($v0) .L7F07E710: /* 0B3240 7F07E710 8C980000 */ lw $t8, ($a0) -/* 0B3244 7F07E714 0FC26C85 */ jal sub_GAME_7F09B214 +/* 0B3244 7F07E714 0FC26C85 */ jal set_cur_player_fovy /* 0B3248 7F07E718 C70C11C4 */ lwc1 $f12, 0x11c4($t8) /* 0B324C 7F07E71C 3C048008 */ lui $a0, %hi(pPlayer) /* 0B3250 7F07E720 2484A0B0 */ addiu $a0, %lo(pPlayer) # addiu $a0, $a0, -0x5f50 /* 0B3254 7F07E724 8C990000 */ lw $t9, ($a0) -/* 0B3258 7F07E728 0C001151 */ jal video_related_1F +/* 0B3258 7F07E728 0C001151 */ jal setvideo_far /* 0B325C 7F07E72C C72C11C4 */ lwc1 $f12, 0x11c4($t9) /* 0B3260 7F07E730 8FBF0014 */ lw $ra, 0x14($sp) /* 0B3264 7F07E734 27BD0018 */ addiu $sp, $sp, 0x18 @@ -12288,12 +12322,12 @@ glabel sub_GAME_7F07E62C /* 0B3888 7F07ED18 E45211C4 */ swc1 $f18, 0x11c4($v0) .Ljp7F07ED1C: /* 0B388C 7F07ED1C 8C8E0000 */ lw $t6, ($a0) -/* 0B3890 7F07ED20 0FC26F6D */ jal sub_GAME_7F09B214 +/* 0B3890 7F07ED20 0FC26F6D */ jal set_cur_player_fovy /* 0B3894 7F07ED24 C5CC11C4 */ lwc1 $f12, 0x11c4($t6) /* 0B3898 7F07ED28 3C048008 */ lui $a0, %hi(pPlayer) # $a0, 0x8008 /* 0B389C 7F07ED2C 2484A120 */ addiu $a0, %lo(pPlayer) # addiu $a0, $a0, -0x5ee0 /* 0B38A0 7F07ED30 8C8F0000 */ lw $t7, ($a0) -/* 0B38A4 7F07ED34 0C001151 */ jal video_related_1F +/* 0B38A4 7F07ED34 0C001151 */ jal setvideo_far /* 0B38A8 7F07ED38 C5EC11C4 */ lwc1 $f12, 0x11c4($t7) /* 0B38AC 7F07ED3C 8FBF0014 */ lw $ra, 0x14($sp) /* 0B38B0 7F07ED40 27BD0018 */ addiu $sp, $sp, 0x18 @@ -12379,7 +12413,7 @@ void sub_GAME_7F07E7CC(void) { // Node 2 sub_GAME_7F075FAC((pPlayer + 0x230), sp24, (pPlayer + 0x2ec)); set_obj_instance_controller_scale((pPlayer + 0x230), (c_item_entries+0x33C * D_80055088)); - pPlayer->field_220 = 0; + pPlayer->step_in_view_watch_animation = 0; return sub_GAME_7F06FCA8((pPlayer + 0x230), (ptr_animation_table + &0x000042C8), 0, 0.0f, (f32) (0.5f * watch_transition_time), 0.0f); } #else @@ -12457,7 +12491,7 @@ glabel sub_GAME_7F07E7CC #ifdef NONMATCHING void *sub_GAME_7F07E8B0(f32 arg0) { // Node 0 - if (pPlayer->field_220 == 0) + if (pPlayer->step_in_view_watch_animation == 0) { // Node 1 pPlayer->field_22C = (f32) (20.0f / arg0); @@ -12468,7 +12502,7 @@ void *sub_GAME_7F07E8B0(f32 arg0) { pPlayer->field_22C = (f32) ((20.0f - pPlayer->field_258) / arg0); } // Node 3 - pPlayer->field_220 = 1; + pPlayer->step_in_view_watch_animation = 1; pPlayer->field_228 = arg0; return pPlayer; } @@ -12512,7 +12546,7 @@ glabel sub_GAME_7F07E8B0 #ifdef NONMATCHING void *sub_GAME_7F07E910(f32 arg0) { // Node 0 - if (pPlayer->field_220 == 20.0f) + if (pPlayer->step_in_view_watch_animation == 20.0f) { // Node 1 pPlayer->field_22C = (f32) (20.0f / arg0); @@ -12523,7 +12557,7 @@ void *sub_GAME_7F07E910(f32 arg0) { pPlayer->field_22C = (f32) (pPlayer->field_258 / arg0); } // Node 3 - pPlayer->field_220 = 2; + pPlayer->step_in_view_watch_animation = 2; pPlayer->field_228 = arg0; return pPlayer; } @@ -12567,41 +12601,41 @@ void *sub_GAME_7F07E964(void) { // Node 0 phi_return = pPlayer; - if (pPlayer->field_220 != 0) + if (pPlayer->step_in_view_watch_animation != 0) { // Node 1 phi_return = pPlayer; - if (3 != pPlayer->field_220) + if (3 != pPlayer->step_in_view_watch_animation) { // Node 2 - if (pPlayer->field_220 == 20.0f) + if (pPlayer->step_in_view_watch_animation == 20.0f) { // Node 3 - pPlayer->field_224 = (f32) (pPlayer->field_224 + ((global_timer_delta * watch_transition_time) * pPlayer->field_22C)); - if (20.0f < pPlayer->field_224) + pPlayer->pause_animation_counter = (f32) (pPlayer->pause_animation_counter + ((global_timer_delta * watch_transition_time) * pPlayer->field_22C)); + if (20.0f < pPlayer->pause_animation_counter) { // Node 4 - pPlayer->field_224 = 20.0f; - pPlayer->field_220 = 3; + pPlayer->pause_animation_counter = 20.0f; + pPlayer->step_in_view_watch_animation = 3; } } else { // Node 5 - if (pPlayer->field_220 == &global_timer_delta) + if (pPlayer->step_in_view_watch_animation == &global_timer_delta) { // Node 6 - pPlayer->field_224 = (f32) (pPlayer->field_224 - ((global_timer_delta * watch_transition_time) * pPlayer->field_22C)); - if (pPlayer->field_224 < 0.0f) + pPlayer->pause_animation_counter = (f32) (pPlayer->pause_animation_counter - ((global_timer_delta * watch_transition_time) * pPlayer->field_22C)); + if (pPlayer->pause_animation_counter < 0.0f) { // Node 7 - pPlayer->field_224 = 0.0f; - pPlayer->field_220 = 0; + pPlayer->pause_animation_counter = 0.0f; + pPlayer->step_in_view_watch_animation = 0; } } } // Node 8 - phi_return = sub_GAME_7F070090((pPlayer + 0x230), pPlayer->field_224, 0); + phi_return = sub_GAME_7F070090((pPlayer + 0x230), pPlayer->pause_animation_counter, 0); } } // Node 9 @@ -12759,7 +12793,7 @@ glabel sub_GAME_7F07EAF0 /* 0B3628 7F07EAF8 AFB10018 */ sw $s1, 0x18($sp) /* 0B362C 7F07EAFC 0FC1577B */ jal deactivate_alarm_sound_effect /* 0B3630 7F07EB00 AFB00014 */ sw $s0, 0x14($sp) -/* 0B3634 7F07EB04 0FC157BE */ jal sub_GAME_7F055EF8 +/* 0B3634 7F07EB04 0FC157BE */ jal check_deactivate_gas_sound /* 0B3638 7F07EB08 00000000 */ nop /* 0B363C 7F07EB0C 00008825 */ move $s1, $zero .L7F07EB10: @@ -14870,11 +14904,11 @@ void sub_GAME_7F07FCC4(s32 arg0) { if (arg0 == -1) { // Node 1 - pPlayer->field_170 = (f32) (pPlayer->field_170 - global_timer_delta); - if (pPlayer->field_170 < -1.0f) + pPlayer->speedstrafe = (f32) (pPlayer->speedstrafe - global_timer_delta); + if (pPlayer->speedstrafe < -1.0f) { // Node 2 - pPlayer->field_170 = -1.0f; + pPlayer->speedstrafe = -1.0f; } } else @@ -14883,40 +14917,40 @@ void sub_GAME_7F07FCC4(s32 arg0) { if (arg0 == 1) { // Node 4 - pPlayer->field_170 = (f32) (pPlayer->field_170 + global_timer_delta); - if (1.0f < pPlayer->field_170) + pPlayer->speedstrafe = (f32) (pPlayer->speedstrafe + global_timer_delta); + if (1.0f < pPlayer->speedstrafe) { // Node 5 - pPlayer->field_170 = 1.0f; + pPlayer->speedstrafe = 1.0f; } } else { // Node 6 - if (0.0f < pPlayer->field_170) + if (0.0f < pPlayer->speedstrafe) { // Node 7 - pPlayer->field_170 = (f32) (pPlayer->field_170 - global_timer_delta); - if (pPlayer->field_170 < 0.0f) + pPlayer->speedstrafe = (f32) (pPlayer->speedstrafe - global_timer_delta); + if (pPlayer->speedstrafe < 0.0f) { // Node 8 - pPlayer->field_170 = 0.0f; + pPlayer->speedstrafe = 0.0f; } } else { // Node 9 - pPlayer->field_170 = (f32) (pPlayer->field_170 + global_timer_delta); - if (0.0f < pPlayer->field_170) + pPlayer->speedstrafe = (f32) (pPlayer->speedstrafe + global_timer_delta); + if (0.0f < pPlayer->speedstrafe) { // Node 10 - pPlayer->field_170 = 0.0f; + pPlayer->speedstrafe = 0.0f; } } } } // Node 11 - pPlayer->field_16C = (f32) pPlayer->field_170; + pPlayer->speedsideways = (f32) pPlayer->speedstrafe; return; } #else @@ -15072,7 +15106,7 @@ void sub_GAME_7F07FE1C(s32 arg0) { } } // Node 11 - pPlayer->field_174 = (f32) pPlayer->field_2A4C; + pPlayer->speedforwards = (f32) pPlayer->field_2A4C; return; } #else @@ -15884,14 +15918,14 @@ void set_rgba_tint(s32 arg0, s32 arg1, s32 arg2, f32 arg3) { void *sub_GAME_7F0807E0(f32 arg0, s32 arg1, ?32 arg2, ?32 arg3, f32 arg4) { // Node 0 pPlayer->field_3E0 = 0.0f; - pPlayer->field_3E4 = arg0; - pPlayer->field_3E8 = (?32) pPlayer->field_3D0; + pPlayer->time_for_fade = arg0; + pPlayer->field_3E8 = (?32) pPlayer->tint_red; pPlayer->field_3EC = arg1; - pPlayer->field_3F0 = (?32) pPlayer->field_3D4; + pPlayer->field_3F0 = (?32) pPlayer->tint_green; pPlayer->field_3F4 = arg2; - pPlayer->field_3F8 = (?32) pPlayer->field_3D8; + pPlayer->field_3F8 = (?32) pPlayer->tint_blue; pPlayer->field_3FC = arg3; - pPlayer->field_400 = (f32) pPlayer->field_3DC; + pPlayer->field_400 = (f32) pPlayer->tint_alpha; pPlayer->field_404 = arg4; return pPlayer; } @@ -15940,7 +15974,7 @@ glabel sub_GAME_7F0807E0 #ifdef NONMATCHING void fade_to_over_seconds(f32 arg1) { // Node 0 - return sub_GAME_7F0807E0(pPlayer->field_3D0, pPlayer->field_3D4, pPlayer->field_3D8); + return sub_GAME_7F0807E0(pPlayer->tint_red, pPlayer->tint_green, pPlayer->tint_blue); } #else @@ -15970,7 +16004,7 @@ glabel fade_to_over_seconds #ifdef NONMATCHING void check_if_fade_to_black_complete(void) { // Node 0 - if (pPlayer->field_3E4 < 0.0f) + if (pPlayer->time_for_fade < 0.0f) { // Node 1 } @@ -16006,26 +16040,26 @@ void *sub_GAME_7F0808BC(void) { f32 temp_f12; // Node 0 - if (0.0f <= pPlayer->field_3E4) + if (0.0f <= pPlayer->time_for_fade) { // Node 1 pPlayer->field_3E0 = (f32) (pPlayer->field_3E0 + global_timer_delta); - if (pPlayer->field_3E0 < pPlayer->field_3E4) + if (pPlayer->field_3E0 < pPlayer->time_for_fade) { // Node 2 - temp_f12 = (pPlayer->field_3E0 / pPlayer->field_3E4); - pPlayer->field_3DC = (f32) (pPlayer->field_400 + ((pPlayer->field_404 - pPlayer->field_400) * temp_f12)); - pPlayer->field_3D0 = (s32) (pPlayer->field_3E8 + (s32) ((f32) (pPlayer->field_3EC - pPlayer->field_3E8) * temp_f12)); - pPlayer->field_3D4 = (s32) (pPlayer->field_3F0 + (s32) ((f32) (pPlayer->field_3F4 - pPlayer->field_3F0) * temp_f12)); - pPlayer->field_3D8 = (s32) (pPlayer->field_3F8 + (s32) ((f32) (pPlayer->field_3FC - pPlayer->field_3F8) * temp_f12)); + temp_f12 = (pPlayer->field_3E0 / pPlayer->time_for_fade); + pPlayer->tint_alpha = (f32) (pPlayer->field_400 + ((pPlayer->field_404 - pPlayer->field_400) * temp_f12)); + pPlayer->tint_red = (s32) (pPlayer->field_3E8 + (s32) ((f32) (pPlayer->field_3EC - pPlayer->field_3E8) * temp_f12)); + pPlayer->tint_green = (s32) (pPlayer->field_3F0 + (s32) ((f32) (pPlayer->field_3F4 - pPlayer->field_3F0) * temp_f12)); + pPlayer->tint_blue = (s32) (pPlayer->field_3F8 + (s32) ((f32) (pPlayer->field_3FC - pPlayer->field_3F8) * temp_f12)); return pPlayer; } // Node 3 - pPlayer->field_3DC = (f32) pPlayer->field_404; - pPlayer->field_3D0 = (s32) pPlayer->field_3EC; - pPlayer->field_3D4 = (s32) pPlayer->field_3F4; - pPlayer->field_3D8 = (s32) pPlayer->field_3FC; - pPlayer->field_3E4 = -1.0f; + pPlayer->tint_alpha = (f32) pPlayer->field_404; + pPlayer->tint_red = (s32) pPlayer->field_3EC; + pPlayer->tint_green = (s32) pPlayer->field_3F4; + pPlayer->tint_blue = (s32) pPlayer->field_3FC; + pPlayer->time_for_fade = -1.0f; } // Node 4 return pPlayer; @@ -16138,8 +16172,8 @@ void *set_curplayer_fade(f32 arg0, f32 arg1) { if (pPlayer->field_A8->unk4 != 0) { // Node 1 - pPlayer->field_18C = 0.0f; - pPlayer->field_190 = arg0; + pPlayer->viewport_alpha = 0.0f; + pPlayer->bondfadetime60 = arg0; temp_f8 = (f32) pPlayer->field_A8->unk4->unkC; phi_f8 = temp_f8; if (pPlayer->field_A8->unk4->unkC < 0) @@ -16148,8 +16182,8 @@ void *set_curplayer_fade(f32 arg0, f32 arg1) { phi_f8 = (temp_f8 + 4294967296.0f); } // Node 3 - pPlayer->field_194 = (f32) (phi_f8 / 255.0f); - pPlayer->field_198 = arg1; + pPlayer->bondfadetimemax = (f32) (phi_f8 / 255.0f); + pPlayer->bondfadefracold = arg1; } // Node 4 return pPlayer->field_A8->unk4; @@ -16200,20 +16234,20 @@ void *update_curplayer_fade(void) { f32 phi_f12; // Node 0 - if (0.0f <= pPlayer->field_190) + if (0.0f <= pPlayer->bondfadetime60) { // Node 1 - pPlayer->field_18C = (f32) (pPlayer->field_18C + *(void *)0x80050000); - if (pPlayer->field_18C < pPlayer->field_190) + pPlayer->viewport_alpha = (f32) (pPlayer->viewport_alpha + *(void *)0x80050000); + if (pPlayer->viewport_alpha < pPlayer->bondfadetime60) { // Node 2 - phi_f12 = (pPlayer->field_194 + (((pPlayer->field_198 - pPlayer->field_194) * pPlayer->field_18C) / pPlayer->field_190)); + phi_f12 = (pPlayer->bondfadetimemax + (((pPlayer->bondfadefracold - pPlayer->bondfadetimemax) * pPlayer->viewport_alpha) / pPlayer->bondfadetime60)); } else { // Node 3 - pPlayer->field_190 = -1.0f; - phi_f12 = pPlayer->field_198; + pPlayer->bondfadetime60 = -1.0f; + phi_f12 = pPlayer->bondfadefracold; } // Node 4 if (pPlayer->field_A8->unk4 != 0) @@ -17024,8 +17058,8 @@ void *sub_GAME_7F081478(void) { s32 phi_v1; // Node 0 - pPlayer->field_29BC = (f32) ((pPlayer->field_500 * cur_player_stat_ptr->unk64) + 7.0f); - temp_f0_2 = (pPlayer->field_29BC + ((pPlayer->field_88 + pPlayer->field_A0) * cur_player_stat_ptr->unk64)); + pPlayer->field_29BC = (f32) ((pPlayer->field_500 * pPlayersPerm->unk64) + 7.0f); + temp_f0_2 = (pPlayer->field_29BC + ((pPlayer->field_88 + pPlayer->ducking_height_offset) * pPlayersPerm->unk64)); phi_f0 = temp_f0_2; if (temp_f0_2 < 30.0f) { @@ -17054,7 +17088,7 @@ void *sub_GAME_7F081478(void) { } // Node 7 phi_v0 = pPlayer; - if (pPlayer->field_D8 != 0) + if (pPlayer->bonddead != 0) { // Node 8 temp_f0 = pPlayer->field_29C0; @@ -17125,10 +17159,10 @@ glabel D_8005510C .word 0x3dccccd0 /*0.10000002*/ .text glabel sub_GAME_7F081478 -/* 0B5FA8 7F081478 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) +/* 0B5FA8 7F081478 3C038008 */ lui $v1, %hi(pPlayersPerm) /* 0B5FAC 7F08147C 3C088008 */ lui $t0, %hi(pPlayer) /* 0B5FB0 7F081480 2508A0B0 */ addiu $t0, %lo(pPlayer) # addiu $t0, $t0, -0x5f50 -/* 0B5FB4 7F081484 2463A0B4 */ addiu $v1, %lo(cur_player_stat_ptr) # addiu $v1, $v1, -0x5f4c +/* 0B5FB4 7F081484 2463A0B4 */ addiu $v1, %lo(pPlayersPerm) # addiu $v1, $v1, -0x5f4c /* 0B5FB8 7F081488 8C6E0000 */ lw $t6, ($v1) /* 0B5FBC 7F08148C 8D020000 */ lw $v0, ($t0) /* 0B5FC0 7F081490 27BDFFC8 */ addiu $sp, $sp, -0x38 @@ -17347,32 +17381,32 @@ void *sub_GAME_7F081790(void) { void *phi_v0_3; // Node 0 - if (pPlayer->field_158 < -180.0f) + if (pPlayer->vv_verta < -180.0f) { // Node 1 loop_2: // Node 2 - pPlayer->field_158 = (f32) (pPlayer->field_158 + 360.0f); - if (pPlayer->field_158 < -180.0f) + pPlayer->vv_verta = (f32) (pPlayer->vv_verta + 360.0f); + if (pPlayer->vv_verta < -180.0f) { goto loop_2; } } // Node 3 - phi_f0 = pPlayer->field_158; + phi_f0 = pPlayer->vv_verta; phi_v0 = pPlayer; - phi_f0_2 = pPlayer->field_158; + phi_f0_2 = pPlayer->vv_verta; phi_v0_2 = pPlayer; - if (180.0f <= pPlayer->field_158) + if (180.0f <= pPlayer->vv_verta) { loop_4: // Node 4 phi_v0->unk158 = (f32) (phi_f0 - 360.0f); - phi_f0 = pPlayer->field_158; + phi_f0 = pPlayer->vv_verta; phi_v0 = pPlayer; - phi_f0_2 = pPlayer->field_158; + phi_f0_2 = pPlayer->vv_verta; phi_v0_2 = pPlayer; - if (180.0f <= pPlayer->field_158) + if (180.0f <= pPlayer->vv_verta) { goto loop_4; } @@ -17396,20 +17430,20 @@ loop_4: } } // Node 9 - pPlayer->field_150 = cosf((phi_v0_3->unk148 * D_80055110), 360.0f); - pPlayer->field_154 = sinf((pPlayer->field_148 * D_80055114)); - pPlayer->field_15C = (f32) pPlayer->field_158; - if (pPlayer->field_15C < 0.0f) + pPlayer->vv_costheta = cosf((phi_v0_3->unk148 * D_80055110), 360.0f); + pPlayer->vv_sintheta = sinf((pPlayer->field_148 * D_80055114)); + pPlayer->vv_verta360 = (f32) pPlayer->vv_verta; + if (pPlayer->vv_verta360 < 0.0f) { // Node 10 - pPlayer->field_15C = (f32) (pPlayer->field_15C + 360.0f); + pPlayer->vv_verta360 = (f32) (pPlayer->vv_verta360 + 360.0f); } // Node 11 - pPlayer->field_164 = cosf((pPlayer->field_15C * D_80055118), 360.0f); - pPlayer->field_168 = sinf((pPlayer->field_15C * D_8005511C)); - pPlayer->field_498 = (f32) -pPlayer->field_154; + pPlayer->vv_cosverta = cosf((pPlayer->vv_verta360 * D_80055118), 360.0f); + pPlayer->vv_sinverta = sinf((pPlayer->vv_verta360 * D_8005511C)); + pPlayer->field_498 = (f32) -pPlayer->vv_sintheta; pPlayer->field_49C = 0.0f; - pPlayer->field_4A0 = (f32) pPlayer->field_150; + pPlayer->field_4A0 = (f32) pPlayer->vv_costheta; return pPlayer; } #else @@ -26420,151 +26454,69 @@ int getHeight330or240(void) { return 240; } - - - - -#ifdef NONMATCHING -void get_curplayer_viewport_width(void) { - // Node 0 +s32 get_curplayer_viewport_width(void) +{ if (get_num_players() >= 3) { - // Node 1 - return 0x140; + return 159; } - // Node 2 if (camera_8003642C != 0) { - // Node 3 - return 0x140; + return 440; } - // Node 4 if (cur_player_get_screen_setting() == 1) { - // Node 5 - return 0x140; + return 320; } - // Node 6 - if (cur_player_get_screen_setting() != 2) + if (cur_player_get_screen_setting() == 2) { - // Node 8 - // Node 9 - return 0x140; + return 320; } - // Node 7 - return 0x140; + return 320; } -#else -GLOBAL_ASM( -.text -glabel get_curplayer_viewport_width -/* 0BB770 7F086C40 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BB774 7F086C44 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BB778 7F086C48 0FC26919 */ jal get_num_players -/* 0BB77C 7F086C4C 00000000 */ nop -/* 0BB780 7F086C50 28410003 */ slti $at, $v0, 3 -/* 0BB784 7F086C54 14200003 */ bnez $at, .L7F086C64 -/* 0BB788 7F086C58 3C0E8003 */ lui $t6, %hi(camera_8003642C) -/* 0BB78C 7F086C5C 10000015 */ b .L7F086CB4 -/* 0BB790 7F086C60 2402009F */ li $v0, 159 -.L7F086C64: -/* 0BB794 7F086C64 8DCE642C */ lw $t6, %lo(camera_8003642C)($t6) -/* 0BB798 7F086C68 11C00003 */ beqz $t6, .L7F086C78 -/* 0BB79C 7F086C6C 00000000 */ nop -/* 0BB7A0 7F086C70 10000010 */ b .L7F086CB4 -/* 0BB7A4 7F086C74 240201B8 */ li $v0, 440 -.L7F086C78: -/* 0BB7A8 7F086C78 0FC293B2 */ jal cur_player_get_screen_setting -/* 0BB7AC 7F086C7C 00000000 */ nop -/* 0BB7B0 7F086C80 24010001 */ li $at, 1 -/* 0BB7B4 7F086C84 14410003 */ bne $v0, $at, .L7F086C94 -/* 0BB7B8 7F086C88 00000000 */ nop -/* 0BB7BC 7F086C8C 10000009 */ b .L7F086CB4 -/* 0BB7C0 7F086C90 24020140 */ li $v0, 320 -.L7F086C94: -/* 0BB7C4 7F086C94 0FC293B2 */ jal cur_player_get_screen_setting -/* 0BB7C8 7F086C98 00000000 */ nop -/* 0BB7CC 7F086C9C 24010002 */ li $at, 2 -/* 0BB7D0 7F086CA0 54410004 */ bnel $v0, $at, .L7F086CB4 -/* 0BB7D4 7F086CA4 24020140 */ li $v0, 320 -/* 0BB7D8 7F086CA8 10000002 */ b .L7F086CB4 -/* 0BB7DC 7F086CAC 24020140 */ li $v0, 320 -/* 0BB7E0 7F086CB0 24020140 */ li $v0, 320 -.L7F086CB4: -/* 0BB7E4 7F086CB4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BB7E8 7F086CB8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BB7EC 7F086CBC 03E00008 */ jr $ra -/* 0BB7F0 7F086CC0 00000000 */ nop -) -#endif - - - - -#ifdef NONMATCHING -void get_curplayer_viewport_ulx(void) { - // Node 0 - if (get_num_players() < 3) - { - // Node 4 - // Node 5 - return 0; - } - // Node 1 - if (get_cur_playernum() != 1) - { - // Node 2 - if (get_cur_playernum() != 3) - { - // Node 4 - // Node 5 - return 0; +s32 get_curplayer_viewport_ulx(void) +{ + + if (2 < get_num_players()) { + if ((get_cur_playernum() == 1) || (get_cur_playernum() == 3)) { + return 0xa1; } } - // Node 3 return 0; } -#else -GLOBAL_ASM( -.text -glabel get_curplayer_viewport_ulx -/* 0BB7F4 7F086CC4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BB7F8 7F086CC8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BB7FC 7F086CCC 0FC26919 */ jal get_num_players -/* 0BB800 7F086CD0 00000000 */ nop -/* 0BB804 7F086CD4 28410003 */ slti $at, $v0, 3 -/* 0BB808 7F086CD8 5420000E */ bnezl $at, .L7F086D14 -/* 0BB80C 7F086CDC 00001025 */ move $v0, $zero -/* 0BB810 7F086CE0 0FC26C54 */ jal get_cur_playernum -/* 0BB814 7F086CE4 00000000 */ nop -/* 0BB818 7F086CE8 24010001 */ li $at, 1 -/* 0BB81C 7F086CEC 10410006 */ beq $v0, $at, .L7F086D08 -/* 0BB820 7F086CF0 00000000 */ nop -/* 0BB824 7F086CF4 0FC26C54 */ jal get_cur_playernum -/* 0BB828 7F086CF8 00000000 */ nop -/* 0BB82C 7F086CFC 24010003 */ li $at, 3 -/* 0BB830 7F086D00 54410004 */ bnel $v0, $at, .L7F086D14 -/* 0BB834 7F086D04 00001025 */ move $v0, $zero -.L7F086D08: -/* 0BB838 7F086D08 10000002 */ b .L7F086D14 -/* 0BB83C 7F086D0C 240200A1 */ li $v0, 161 -/* 0BB840 7F086D10 00001025 */ move $v0, $zero -.L7F086D14: -/* 0BB844 7F086D14 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BB848 7F086D18 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BB84C 7F086D1C 03E00008 */ jr $ra -/* 0BB850 7F086D20 00000000 */ nop -) -#endif - #ifdef NONMATCHING -void get_curplayer_viewport_height(void) { - +s32 get_curplayer_viewport_height(void) +{ + if (get_num_players() >= 2) + { + return 0x6d; + } + if (camera_8003642C != 0) + { + if (cur_player_get_screen_setting() == 1) + { + return 0xf8; + } + if (cur_player_get_screen_setting() != 2) + { + return 0x130; + } + return 0xbe; + } + if (cur_player_get_screen_setting() == 1) + { + return (s32) (((s32) (40.0f * sub_GAME_7F07EA78()) + 0xb4) << 0x10) >> 0x10; + } + if (cur_player_get_screen_setting() == 2) + { + return (s32) (((s32) (84.0f * sub_GAME_7F07EA78()) + 0x88) << 0x10) >> 0x10; + } + return 0xdc; } #else GLOBAL_ASM( @@ -26785,11 +26737,11 @@ glabel possibly_reset_viewport_options_for_player /* 0BBAD8 7F086FA8 44816000 */ mtc1 $at, $f12 /* 0BBADC 7F086FAC AFA40020 */ sw $a0, 0x20($sp) /* 0BBAE0 7F086FB0 AFA50024 */ sw $a1, 0x24($sp) -/* 0BBAE4 7F086FB4 0FC26C85 */ jal sub_GAME_7F09B214 +/* 0BBAE4 7F086FB4 0FC26C85 */ jal set_cur_player_fovy /* 0BBAE8 7F086FB8 AFA60028 */ sw $a2, 0x28($sp) /* 0BBAEC 7F086FBC 3C014270 */ li $at, 0x42700000 # 60.000000 /* 0BBAF0 7F086FC0 44816000 */ mtc1 $at, $f12 -/* 0BBAF4 7F086FC4 0C001151 */ jal video_related_1F +/* 0BBAF4 7F086FC4 0C001151 */ jal setvideo_far /* 0BBAF8 7F086FC8 00000000 */ nop /* 0BBAFC 7F086FCC 3C038003 */ lui $v1, %hi(camera_80036430) /* 0BBB00 7F086FD0 24636430 */ addiu $v1, %lo(camera_80036430) # addiu $v1, $v1, 0x6430 @@ -26854,7 +26806,7 @@ glabel possibly_reset_viewport_options_for_player /* 0BBBD4 7F0870A4 25ADA800 */ addiu $t5, %lo(cfb_16_b) # addiu $t5, $t5, -0x5800 /* 0BBBD8 7F0870A8 144D0003 */ bne $v0, $t5, .L7F0870B8 /* 0BBBDC 7F0870AC 3C048003 */ lui $a0, %hi(resolution) -/* 0BBBE0 7F0870B0 0C000F0F */ jal set_video2buf_offset28 +/* 0BBBE0 7F0870B0 0C000F0F */ jal set_video2buf_frameb /* 0BBBE4 7F0870B4 8C846428 */ lw $a0, %lo(resolution)($a0) .L7F0870B8: /* 0BBBE8 7F0870B8 0FC293B8 */ jal get_screen_ratio @@ -26879,7 +26831,7 @@ glabel possibly_reset_viewport_options_for_player /* 0BBC34 7F087104 46128102 */ mul.s $f4, $f16, $f18 /* 0BBC38 7F087108 00000000 */ nop /* 0BBC3C 7F08710C 46082302 */ mul.s $f12, $f4, $f8 -/* 0BBC40 7F087110 0FC26C89 */ jal sub_GAME_7F09B224 +/* 0BBC40 7F087110 0FC26C89 */ jal set_cur_player_aspect /* 0BBC44 7F087114 00000000 */ nop /* 0BBC48 7F087118 0FC21B10 */ jal get_curplayer_viewport_width /* 0BBC4C 7F08711C 00000000 */ nop @@ -26912,7 +26864,7 @@ glabel possibly_reset_viewport_options_for_player /* 0BBCB4 7F087184 44985000 */ mtc1 $t8, $f10 /* 0BBCB8 7F087188 46802220 */ cvt.s.w $f8, $f4 /* 0BBCBC 7F08718C 468054A0 */ cvt.s.w $f18, $f10 -/* 0BBCC0 7F087190 0FC26C89 */ jal sub_GAME_7F09B224 +/* 0BBCC0 7F087190 0FC26C89 */ jal set_cur_player_aspect /* 0BBCC4 7F087194 46089303 */ div.s $f12, $f18, $f8 /* 0BBCC8 7F087198 0FC21B10 */ jal get_curplayer_viewport_width /* 0BBCCC 7F08719C 00000000 */ nop @@ -27013,8 +26965,8 @@ glabel possibly_reset_viewport_options_for_player /* 0BBE40 7F087310 28430002 */ slti $v1, $v0, 2 /* 0BBE44 7F087314 38650001 */ xori $a1, $v1, 1 /* 0BBE48 7F087318 10A00005 */ beqz $a1, .L7F087330 -/* 0BBE4C 7F08731C 3C0C8008 */ lui $t4, %hi(cur_player_stat_ptr) -/* 0BBE50 7F087320 8D8CA0B4 */ lw $t4, %lo(cur_player_stat_ptr)($t4) +/* 0BBE4C 7F08731C 3C0C8008 */ lui $t4, %hi(pPlayersPerm) +/* 0BBE50 7F087320 8D8CA0B4 */ lw $t4, %lo(pPlayersPerm)($t4) /* 0BBE54 7F087324 9185006B */ lbu $a1, 0x6b($t4) /* 0BBE58 7F087328 0005682B */ sltu $t5, $zero, $a1 /* 0BBE5C 7F08732C 01A02825 */ move $a1, $t5 @@ -27222,11 +27174,11 @@ glabel possibly_reset_viewport_options_for_player /* 0BC1E4 7F087674 44816000 */ mtc1 $at, $f12 /* 0BC1E8 7F087678 AFA40020 */ sw $a0, 0x20($sp) /* 0BC1EC 7F08767C AFA50024 */ sw $a1, 0x24($sp) -/* 0BC1F0 7F087680 0FC26F6D */ jal sub_GAME_7F09B214 +/* 0BC1F0 7F087680 0FC26F6D */ jal set_cur_player_fovy /* 0BC1F4 7F087684 AFA60028 */ sw $a2, 0x28($sp) /* 0BC1F8 7F087688 3C014270 */ li $at, 0x42700000 # 60.000000 /* 0BC1FC 7F08768C 44816000 */ mtc1 $at, $f12 -/* 0BC200 7F087690 0C001151 */ jal video_related_1F +/* 0BC200 7F087690 0C001151 */ jal setvideo_far /* 0BC204 7F087694 00000000 */ nop /* 0BC208 7F087698 3C038003 */ lui $v1, %hi(camera_80036430) # $v1, 0x8003 /* 0BC20C 7F08769C 24636470 */ addiu $v1, %lo(camera_80036430) # addiu $v1, $v1, 0x6470 @@ -27291,7 +27243,7 @@ glabel possibly_reset_viewport_options_for_player /* 0BC2E0 7F087770 25ADA800 */ addiu $t5, %lo(cfb_16_b) # addiu $t5, $t5, -0x5800 /* 0BC2E4 7F087774 144D0003 */ bne $v0, $t5, .Ljp7F087784 /* 0BC2E8 7F087778 3C048003 */ lui $a0, %hi(resolution) # $a0, 0x8003 -/* 0BC2EC 7F08777C 0C000F0F */ jal set_video2buf_offset28 +/* 0BC2EC 7F08777C 0C000F0F */ jal set_video2buf_frameb /* 0BC2F0 7F087780 8C846468 */ lw $a0, %lo(resolution)($a0) .Ljp7F087784: /* 0BC2F4 7F087784 0FC296A0 */ jal get_screen_ratio @@ -27316,7 +27268,7 @@ glabel possibly_reset_viewport_options_for_player /* 0BC340 7F0877D0 46128102 */ mul.s $f4, $f16, $f18 /* 0BC344 7F0877D4 00000000 */ nop /* 0BC348 7F0877D8 46082302 */ mul.s $f12, $f4, $f8 -/* 0BC34C 7F0877DC 0FC26F71 */ jal sub_GAME_7F09B224 +/* 0BC34C 7F0877DC 0FC26F71 */ jal set_cur_player_aspect /* 0BC350 7F0877E0 00000000 */ nop /* 0BC354 7F0877E4 0FC21CC3 */ jal get_curplayer_viewport_width /* 0BC358 7F0877E8 00000000 */ nop @@ -27349,7 +27301,7 @@ glabel possibly_reset_viewport_options_for_player /* 0BC3C0 7F087850 44985000 */ mtc1 $t8, $f10 /* 0BC3C4 7F087854 46802220 */ cvt.s.w $f8, $f4 /* 0BC3C8 7F087858 468054A0 */ cvt.s.w $f18, $f10 -/* 0BC3CC 7F08785C 0FC26F71 */ jal sub_GAME_7F09B224 +/* 0BC3CC 7F08785C 0FC26F71 */ jal set_cur_player_aspect /* 0BC3D0 7F087860 46089303 */ div.s $f12, $f18, $f8 /* 0BC3D4 7F087864 0FC21CC3 */ jal get_curplayer_viewport_width /* 0BC3D8 7F087868 00000000 */ nop @@ -27450,8 +27402,8 @@ glabel possibly_reset_viewport_options_for_player /* 0BC54C 7F0879DC 28430002 */ slti $v1, $v0, 2 /* 0BC550 7F0879E0 38650001 */ xori $a1, $v1, 1 /* 0BC554 7F0879E4 10A00005 */ beqz $a1, .Ljp7F0879FC -/* 0BC558 7F0879E8 3C0C8008 */ lui $t4, %hi(cur_player_stat_ptr) # $t4, 0x8008 -/* 0BC55C 7F0879EC 8D8CA124 */ lw $t4, %lo(cur_player_stat_ptr)($t4) +/* 0BC558 7F0879E8 3C0C8008 */ lui $t4, %hi(pPlayersPerm) # $t4, 0x8008 +/* 0BC55C 7F0879EC 8D8CA124 */ lw $t4, %lo(pPlayersPerm)($t4) /* 0BC560 7F0879F0 9185006B */ lbu $a1, 0x6b($t4) /* 0BC564 7F0879F4 0005682B */ sltu $t5, $zero, $a1 /* 0BC568 7F0879F8 01A02825 */ move $a1, $t5 @@ -27651,10 +27603,10 @@ glabel possibly_reset_viewport_options_for_player #ifdef NONMATCHING void sub_GAME_7F0875E4(s32 arg0) { // Node 0 - sub_GAME_7F0BCA34((pPlayer + 0x38)); - pPlayer->field_50 = (f32) (get_room_data_float1() * pPlayer->field_38); - pPlayer->field_54 = (f32) (get_room_data_float1() * pPlayer->field_3C); - pPlayer->field_58 = (f32) (get_room_data_float1() * pPlayer->field_40); + sub_GAME_7F0BCA34(pPlayer->current_model_xpos); + pPlayer->current_room_xpos = (f32) (get_room_data_float1() * pPlayer->current_model_xpos); + pPlayer->current_room_ypos = (f32) (get_room_data_float1() * pPlayer->current_model_ypos); + pPlayer->current_room_zpos = (f32) (get_room_data_float1() * pPlayer->current_model_zpos); return sub_GAME_7F0BC624(arg0); } #else @@ -27703,9 +27655,9 @@ glabel sub_GAME_7F0875E4 #ifdef NONMATCHING void store_BONDdata_curpos_to_previous(void) { // Node 0 - pPlayer->field_44 = (f32) pPlayer->field_38; - pPlayer->field_48 = (f32) pPlayer->field_3C; - pPlayer->field_4C = (f32) pPlayer->field_40; + pPlayer->previous_model_xpos = (f32) pPlayer->current_model_xpos; + pPlayer->previous_model_ypos = (f32) pPlayer->current_model_ypos; + pPlayer->previous_model_zpos = (f32) pPlayer->current_model_zpos; return sub_GAME_7F0583D8(get_BONDdata_field_10CC(), (pPlayer + 0x44)); } #else @@ -27775,11 +27727,11 @@ void sub_GAME_7F0876C4(void *arg0, void *arg1, void *arg2) { pPlayer->field_64 = sub_GAME_7F0BD6E0(); pPlayer->field_68 = sub_GAME_7F0BD6E0(); sp104 = sub_GAME_7F0BD6F8(2); - temp_f10 = ((*arg0 - pPlayer->field_38) * D_800364CC); + temp_f10 = ((*arg0 - pPlayer->current_model_xpos) * D_800364CC); spAC = temp_f10; - temp_f6 = ((arg0->unk4 - pPlayer->field_3C) * D_800364CC); + temp_f6 = ((arg0->unk4 - pPlayer->current_model_ypos) * D_800364CC); spB0 = temp_f6; - temp_f4 = ((arg0->unk8 - pPlayer->field_40) * D_800364CC); + temp_f4 = ((arg0->unk8 - pPlayer->current_model_zpos) * D_800364CC); spB4 = temp_f4; temp_f16 = (*arg1 + temp_f10); spB8 = temp_f16; @@ -28096,15 +28048,15 @@ s32 sub_GAME_7F087A08(s32 arg0) { if (*pPlayer == 1) { // Node 1 - sp74 = (f32) pPlayer->field_4; - sp78 = (f32) pPlayer->field_8; - sp7C = (f32) pPlayer->field_C; - sp68 = (f32) (pPlayer->field_10 - pPlayer->field_4); - sp6C = (f32) (pPlayer->field_14 - pPlayer->field_8); - sp70 = (f32) (pPlayer->field_18 - pPlayer->field_C); - sp5C = (f32) pPlayer->field_1C; - sp60 = (f32) pPlayer->field_20; - sp64 = (f32) pPlayer->field_24; + sp74 = (f32) pPlayer->xpos; + sp78 = (f32) pPlayer->ypos; + sp7C = (f32) pPlayer->zpos; + sp68 = (f32) (pPlayer->xpos2 - pPlayer->xpos); + sp6C = (f32) (pPlayer->ypos2 - pPlayer->ypos); + sp70 = (f32) (pPlayer->zpos2 - pPlayer->zpos); + sp5C = (f32) pPlayer->xoffset; + sp60 = (f32) pPlayer->yoffset; + sp64 = (f32) pPlayer->zoffset; } else { @@ -28115,7 +28067,7 @@ s32 sub_GAME_7F087A08(s32 arg0) { temp_a1 = (temp_v1 + 0x38); sp4C.unk4 = (?32) D_80036830.unk4; sp4C.unk8 = (?32) D_80036830.unk8; - if (pPlayer->field_D8 == 0) + if (pPlayer->bonddead == 0) { // Node 3 sp58 = temp_v1; @@ -29720,9 +29672,9 @@ s32 sub_GAME_7F088618(void *arg0) { void *temp_s0_11; // Node 0 - sub_GAME_7F0A2F30((pPlayer + 0x12b8), 0x2e, 1, pPlayer->field_F0); + sub_GAME_7F0A2F30((pPlayer + 0x12b8), 0x2e, 1, pPlayer->apparentarmour); sub_GAME_7F0A3330((pPlayer + 0x19f8), (pPlayer + 0x800012b8), 0x2e); - sub_GAME_7F0A2F30((pPlayer + 0x1598), 0x2e, -1, pPlayer->field_EC); + sub_GAME_7F0A2F30((pPlayer + 0x1598), 0x2e, -1, pPlayer->apparenthealth); sub_GAME_7F0A3330((pPlayer + 0x2128), (pPlayer + 0x80001598), 0x2e); spBC = sub_GAME_7F0BD6E0(); temp_ret = sub_GAME_7F0BD6E0(); @@ -31210,8 +31162,8 @@ glabel kill_current_player /* 0BE3A8 7F089878 0FC22FEE */ jal sub_GAME_7F08BFB8 /* 0BE3AC 7F08987C 00000000 */ nop /* 0BE3B0 7F089880 8E0C0000 */ lw $t4, ($s0) -/* 0BE3B4 7F089884 3C0F8008 */ lui $t7, %hi(cur_player_stat_ptr) -/* 0BE3B8 7F089888 8DEFA0B4 */ lw $t7, %lo(cur_player_stat_ptr)($t7) +/* 0BE3B4 7F089884 3C0F8008 */ lui $t7, %hi(pPlayersPerm) +/* 0BE3B8 7F089888 8DEFA0B4 */ lw $t7, %lo(pPlayersPerm)($t7) /* 0BE3BC 7F08988C 8D8D29F4 */ lw $t5, 0x29f4($t4) /* 0BE3C0 7F089890 8DF80050 */ lw $t8, 0x50($t7) /* 0BE3C4 7F089894 004D7023 */ subu $t6, $v0, $t5 @@ -31221,8 +31173,8 @@ glabel kill_current_player /* 0BE3D4 7F0898A4 0FC22FEE */ jal sub_GAME_7F08BFB8 /* 0BE3D8 7F0898A8 00000000 */ nop /* 0BE3DC 7F0898AC 8E190000 */ lw $t9, ($s0) -/* 0BE3E0 7F0898B0 3C0A8008 */ lui $t2, %hi(cur_player_stat_ptr) -/* 0BE3E4 7F0898B4 8D4AA0B4 */ lw $t2, %lo(cur_player_stat_ptr)($t2) +/* 0BE3E0 7F0898B0 3C0A8008 */ lui $t2, %hi(pPlayersPerm) +/* 0BE3E4 7F0898B4 8D4AA0B4 */ lw $t2, %lo(pPlayersPerm)($t2) /* 0BE3E8 7F0898B8 8F2829F4 */ lw $t0, 0x29f4($t9) /* 0BE3EC 7F0898BC 00484823 */ subu $t1, $v0, $t0 /* 0BE3F0 7F0898C0 AD490050 */ sw $t1, 0x50($t2) @@ -31285,8 +31237,8 @@ glabel pi_800552B0 .text glabel record_damage_kills /* 0BE44C 7F08991C 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BE450 7F089920 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) -/* 0BE454 7F089924 8DCEA0B4 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 0BE450 7F089920 3C0E8008 */ lui $t6, %hi(pPlayersPerm) +/* 0BE454 7F089924 8DCEA0B4 */ lw $t6, %lo(pPlayersPerm)($t6) /* 0BE458 7F089928 AFBF0014 */ sw $ra, 0x14($sp) /* 0BE45C 7F08992C E7AE0044 */ swc1 $f14, 0x44($sp) /* 0BE460 7F089930 AFA60048 */ sw $a2, 0x48($sp) @@ -31549,7 +31501,7 @@ glabel record_damage_kills /* 0BE838 7F089D08 24010003 */ li $at, 3 /* 0BE83C 7F089D0C 54410007 */ bnel $v0, $at, .L7F089D2C /* 0BE840 7F089D10 8FA8002C */ lw $t0, 0x2c($sp) -/* 0BE844 7F089D14 0FC233F0 */ jal sub_GAME_7F08CFC0 +/* 0BE844 7F089D14 0FC233F0 */ jal checkforgoldengun /* 0BE848 7F089D18 00000000 */ nop /* 0BE84C 7F089D1C 10400002 */ beqz $v0, .L7F089D28 /* 0BE850 7F089D20 24190001 */ li $t9, 1 @@ -31649,8 +31601,8 @@ glabel pi_800552B0 .text glabel record_damage_kills /* 0BEB60 7F089FF0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BEB64 7F089FF4 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) # $t6, 0x8008 -/* 0BEB68 7F089FF8 8DCEA124 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 0BEB64 7F089FF4 3C0E8008 */ lui $t6, %hi(pPlayersPerm) # $t6, 0x8008 +/* 0BEB68 7F089FF8 8DCEA124 */ lw $t6, %lo(pPlayersPerm)($t6) /* 0BEB6C 7F089FFC AFBF0014 */ sw $ra, 0x14($sp) /* 0BEB70 7F08A000 E7AE0044 */ swc1 $f14, 0x44($sp) /* 0BEB74 7F08A004 AFA60048 */ sw $a2, 0x48($sp) @@ -31920,7 +31872,7 @@ glabel record_damage_kills /* 0BEF68 7F08A3F8 24010003 */ li $at, 3 /* 0BEF6C 7F08A3FC 14410006 */ bne $v0, $at, .Ljp7F08A418 /* 0BEF70 7F08A400 00000000 */ nop -/* 0BEF74 7F08A404 0FC23649 */ jal sub_GAME_7F08CFC0 +/* 0BEF74 7F08A404 0FC23649 */ jal checkforgoldengun /* 0BEF78 7F08A408 00000000 */ nop /* 0BEF7C 7F08A40C 10400002 */ beqz $v0, .Ljp7F08A418 /* 0BEF80 7F08A410 240F0001 */ li $t7, 1 @@ -32126,13 +32078,13 @@ glabel check_if_healthbar_timer_greater_than_0 #ifdef NONMATCHING -void get_BONDdata_field19C(void) { +void get_BONDdata_bondfadefracnew(void) { } #else GLOBAL_ASM( .text -glabel get_BONDdata_field19C +glabel get_BONDdata_bondfadefracnew /* 0BEA04 7F089ED4 3C0E8008 */ lui $t6, %hi(pPlayer) /* 0BEA08 7F089ED8 8DCEA0B0 */ lw $t6, %lo(pPlayer)($t6) /* 0BEA0C 7F089EDC 03E00008 */ jr $ra @@ -32644,8 +32596,8 @@ void add_BONDdata_watch_armor(void) { GLOBAL_ASM( .text glabel add_BONDdata_watch_armor -/* 0BEE3C 7F08A30C 3C028008 */ lui $v0, %hi(cur_player_stat_ptr) -/* 0BEE40 7F08A310 8C42A0B4 */ lw $v0, %lo(cur_player_stat_ptr)($v0) +/* 0BEE3C 7F08A30C 3C028008 */ lui $v0, %hi(pPlayersPerm) +/* 0BEE40 7F08A310 8C42A0B4 */ lw $v0, %lo(pPlayersPerm)($v0) /* 0BEE44 7F08A314 3C0E8008 */ lui $t6, %hi(pPlayer) /* 0BEE48 7F08A318 C4440040 */ lwc1 $f4, 0x40($v0) /* 0BEE4C 7F08A31C 460C2180 */ add.s $f6, $f4, $f12 @@ -32972,7 +32924,7 @@ glabel display_string_in_lower_left_corner #endif #ifdef VERSION_JP -void jp_FUN_7f08ac40(char *string) +void jp_display_string_in_lower_left_corner(char *string) { display_string_in_lower_left_corner(string,ptrSecondFontTableSmall,ptrFirstFontTableSmall); } diff --git a/src/game/bond.h b/src/game/bond.h index d9c17e6..9c41c1b 100644 --- a/src/game/bond.h +++ b/src/game/bond.h @@ -1,7 +1,9 @@ #ifndef _BOND_H_ #define _BOND_H_ + #include "ultra64.h" #include "game/chr.h" + struct xyzpoint { f32 x; @@ -9,7 +11,7 @@ struct xyzpoint f32 z; }; -struct Player +typedef struct Player { s32 unknown; s32 xpos; @@ -526,8 +528,7 @@ struct Player s16 viewtop; s32 right_invisible; s32 left_invisible; - s32 item_right; - s32 item_left; + s32 handitem[2]; s32 ptr_right_weapon_buffer; s32 ptr_left_weapon_buffer; s32 copy_of_body_obj_header[8]; @@ -2684,7 +2685,7 @@ struct Player s32 deathcount; s32 num_suicides; s32 field_29E0; - s32 field_29E4; + s32 last_kill_time; s32 field_29E8; s32 field_29EC; s32 field_29F0; @@ -2705,7 +2706,7 @@ struct Player s32 field_2A2C; s32 field_2A30; s32 field_2A34; - s32 field_2A38; + s32 cur_item_weapon_getname; s32 actual_health; s32 actual_armor; s32 field_2A44; @@ -2717,13 +2718,13 @@ struct Player s32 cur_player_control_type_1; f32 cur_player_control_type_2; s32 neg_vspacing_for_control_type_entry; - s32 has_set_control_type_data; + u32 has_set_control_type_data; s32 field_2A6C; s32 field_2A70; s32 field_2A74; s32 field_2A78; s32 field_2A7C; -}; +} Player; struct firing_anim_struct { struct weapon_firing_animation_table * pointer; diff --git a/src/game/bond2.c b/src/game/bond2.c index 65f589a..3d6ddd6 100644 --- a/src/game/bond2.c +++ b/src/game/bond2.c @@ -2104,13 +2104,13 @@ glabel sub_GAME_7F08CF80 #ifdef NONMATCHING -void sub_GAME_7F08CFC0(void) { +void checkforgoldengun(void) { } #else GLOBAL_ASM( .text -glabel sub_GAME_7F08CFC0 +glabel checkforgoldengun /* 0C1AF0 7F08CFC0 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0C1AF4 7F08CFC4 AFBF0014 */ sw $ra, 0x14($sp) /* 0C1AF8 7F08CFC8 0FC230C5 */ jal is_weapon_in_inv diff --git a/src/game/bondwalk.c b/src/game/bondwalk.c index d623540..b83b134 100644 --- a/src/game/bondwalk.c +++ b/src/game/bondwalk.c @@ -1,7 +1,10 @@ #include "ultra64.h" #include "game/bondwalk.h" #include "game/chrobjdata.h" + #include "bondgame.h" +#include "game/bond.h" +#include "game/unk_093880.h" // bss s32 dword_CODE_bss_80075DB0; @@ -36,9 +39,7 @@ u32 D_80032454 = 0; u32 D_80032458 = 0; //D:8003245C -u32 size_right_item_buffer = 0x14820; -//D:80032460 -u32 size_left_item_buffer = 0x14820; +u32 size_item_buffer[] = {0x14820, 0x14820}; //D:80032464 u32 D_80032464[] ={0x7530, 0x7530}; @@ -64,6 +65,17 @@ struct ejected_cart ejected_cartridge[] = { #define SCALEVAL_RUGER 0.80000001 #define SCALEVAL_LAUNCHER 0.80000001 #endif +#ifdef VERSION_EU +//!FIXME temp copy of us data +#define SCALEVAL1 0.80000001 +#define SCALEVAL_KNIFE 0.80000001 +#define SCALEVAL_SKORPIAN 0.80000001 +#define SCALEVAL_AK47 0.80000001 +#define SCALEVAL_UZI 0.80000001 +#define SCALEVAL_P90 0.80000001 +#define SCALEVAL_RUGER 0.80000001 +#define SCALEVAL_LAUNCHER 0.80000001 +#endif #ifdef VERSION_JP #define SCALEVAL1 0.8812 #define SCALEVAL_KNIFE 0.8228 @@ -75,7 +87,7 @@ struct ejected_cart ejected_cartridge[] = { #define SCALEVAL_LAUNCHER 0.9048 #endif //D:80032494 -struct weapon_stats stru_D_80032494 = { +struct weapon_stats default_weaponstats = { 1.0, 0.0, 0.0, 0.0, 3.0, 3.0, 8.5, 0, 0, 0xFF, 0x00, 1, 0, 0, NULL, 1.0, 0.0, 0.0, SCALEVAL1, 0.89999998, 1.0, 0xFF, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 4.0, 0.0, 0x110 }; //D:80032504 @@ -1198,7 +1210,7 @@ struct weapon_stats *get_ptr_item_statistics(int item) { if (gitem_structs[item].has_no_model == 0) { /* weapon has model, return stats struct */ return gitem_structs[item].item_weapon_stats; } - return &stru_D_80032494; /* no model, return defaults */ + return &default_weaponstats; /* no model, return defaults */ } @@ -1673,12 +1685,13 @@ glabel sub_GAME_7F05CEBC - - #ifdef NONMATCHING -void get_itemtype_in_hand(void) { +s32 get_itemtype_in_hand(int hand) +{ + return pPlayer->handitem[hand]; } + #else GLOBAL_ASM( .text @@ -1718,13 +1731,13 @@ glabel get_ptr_itemheader_in_hand #ifdef NONMATCHING -void sub_GAME_7F05CF30(void) { +void getPlayerWeaponBufferForHand(void) { } #else GLOBAL_ASM( .text -glabel sub_GAME_7F05CF30 +glabel getPlayerWeaponBufferForHand /* 091A60 7F05CF30 3C0E8008 */ lui $t6, %hi(pPlayer) /* 091A64 7F05CF34 8DCEA0B0 */ lw $t6, %lo(pPlayer)($t6) /* 091A68 7F05CF38 00047880 */ sll $t7, $a0, 2 @@ -1736,25 +1749,10 @@ glabel sub_GAME_7F05CF30 - - -#ifdef NONMATCHING -void sub_GAME_7F05CF48(void) { - +u32 getSizeBufferWeaponInHand(int hand) +{ + return size_item_buffer[hand]; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05CF48 -/* 091A78 7F05CF48 00047080 */ sll $t6, $a0, 2 -/* 091A7C 7F05CF4C 3C028003 */ lui $v0, %hi(size_right_item_buffer) -/* 091A80 7F05CF50 004E1021 */ addu $v0, $v0, $t6 -/* 091A84 7F05CF54 03E00008 */ jr $ra -/* 091A88 7F05CF58 8C42245C */ lw $v0, %lo(size_right_item_buffer)($v0) -) -#endif - - @@ -1896,13 +1894,14 @@ glabel get_ptr_weapon_model_header_line #ifdef NONMATCHING -void sub_GAME_7F05D078(void) { - +int getCurrentWeaponOrItem(void) +{ + return pPlayer->cur_item_weapon_getname; } #else GLOBAL_ASM( .text -glabel sub_GAME_7F05D078 +glabel getCurrentWeaponOrItem /* 091BA8 7F05D078 3C0E8008 */ lui $t6, %hi(pPlayer) /* 091BAC 7F05D07C 8DCEA0B0 */ lw $t6, %lo(pPlayer)($t6) /* 091BB0 7F05D080 03E00008 */ jr $ra @@ -1958,10 +1957,10 @@ glabel used_to_load_1st_person_model_on_demand /* 091C38 7F05D108 8FA20038 */ lw $v0, 0x38($sp) /* 091C3C 7F05D10C 50400076 */ beql $v0, $zero, .L7F05D2E8 /* 091C40 7F05D110 8FA20038 */ lw $v0, 0x38($sp) -/* 091C44 7F05D114 0FC173CC */ jal sub_GAME_7F05CF30 +/* 091C44 7F05D114 0FC173CC */ jal getPlayerWeaponBufferForHand /* 091C48 7F05D118 8FA40050 */ lw $a0, 0x50($sp) /* 091C4C 7F05D11C AFA20040 */ sw $v0, 0x40($sp) -/* 091C50 7F05D120 0FC173D2 */ jal sub_GAME_7F05CF48 +/* 091C50 7F05D120 0FC173D2 */ jal getSizeBufferWeaponInHand /* 091C54 7F05D124 8FA40050 */ lw $a0, 0x50($sp) /* 091C58 7F05D128 8FAE0044 */ lw $t6, 0x44($sp) /* 091C5C 7F05D12C 8FAA0050 */ lw $t2, 0x50($sp) @@ -2420,8 +2419,11 @@ glabel sub_GAME_7F05D650 #ifdef NONMATCHING -void sub_GAME_7F05D690(void) { - +void proc_7F05D690(void) +{ + draw_item_in_hand_has_more_ammo(0,pPlayer->previous_right_weapon); + draw_item_in_hand_has_more_ammo(1,pPlayer->left_weapon_previous); + return; } #else GLOBAL_ASM( @@ -2451,8 +2453,24 @@ glabel sub_GAME_7F05D690 #ifdef NONMATCHING -void advance_through_inventory(void) { +void advance_through_inventory(void) +{ + ITEM_IDS nextleft; + ITEM_IDS nextright; + + nextright = get_next_weapon_in_cycle_for_hand(0,1); + nextleft = get_next_weapon_in_cycle_for_hand(1,1); + if (((int)nextright < 0x21) && ((int)nextleft < 0x21)) { + proc_7F08C86C((int *)&nextright,(int *)&nextleft,0); + } + else { + nextright = pPlayer->previous_right_weapon; + nextleft = pPlayer->left_weapon_previous; + } + likely_change_weapon_in_hand(0,nextright,1); + likely_change_weapon_in_hand(1,nextleft,1); + return; } #else GLOBAL_ASM( @@ -3591,7 +3609,7 @@ glabel sub_GAME_7F05E0E4 /* 092D04 7F05E1D4 4481A000 */ mtc1 $at, $f20 /* 092D08 7F05E1D8 E7000FC0 */ swc1 $f0, 0xfc0($t8) .L7F05E1DC: -/* 092D0C 7F05E1DC 0FC227B5 */ jal get_BONDdata_field19C +/* 092D0C 7F05E1DC 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 092D10 7F05E1E0 E7B00050 */ swc1 $f16, 0x50($sp) /* 092D14 7F05E1E4 3C018005 */ lui $at, %hi(D_80053C54) /* 092D18 7F05E1E8 C4283C54 */ lwc1 $f8, %lo(D_80053C54)($at) @@ -3603,7 +3621,7 @@ glabel sub_GAME_7F05E0E4 /* 092D30 7F05E200 00000000 */ nop /* 092D34 7F05E204 4502000C */ bc1fl .L7F05E238 /* 092D38 7F05E208 3C013F00 */ lui $at, 0x3f00 -/* 092D3C 7F05E20C 0FC227B5 */ jal get_BONDdata_field19C +/* 092D3C 7F05E20C 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 092D40 7F05E210 E7B00050 */ swc1 $f16, 0x50($sp) /* 092D44 7F05E214 3C018005 */ lui $at, %hi(D_80053C58) /* 092D48 7F05E218 C4323C58 */ lwc1 $f18, %lo(D_80053C58)($at) @@ -4675,7 +4693,7 @@ glabel sub_GAME_7F05EE24 /* 093A80 7F05EF50 C44A0B0C */ lwc1 $f10, 0xb0c($v0) /* 093A84 7F05EF54 E7AA00E4 */ swc1 $f10, 0xe4($sp) /* 093A88 7F05EF58 C4520B10 */ lwc1 $f18, 0xb10($v0) -/* 093A8C 7F05EF5C 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 093A8C 7F05EF5C 0FC15FF4 */ jal reset_array_of_0x10_floats /* 093A90 7F05EF60 E7B200E8 */ swc1 $f18, 0xe8($sp) /* 093A94 7F05EF64 3C198008 */ lui $t9, %hi(pPlayer) /* 093A98 7F05EF68 8F39A0B0 */ lw $t9, %lo(pPlayer)($t9) @@ -5149,7 +5167,7 @@ glabel generate_player_thrown_object /* 093FDC 7F05F4AC E7B200E4 */ swc1 $f18, 0xe4($sp) /* 093FE0 7F05F4B0 C4460B10 */ lwc1 $f6, 0xb10($v0) /* 093FE4 7F05F4B4 AFAF002C */ sw $t7, 0x2c($sp) -/* 093FE8 7F05F4B8 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 093FE8 7F05F4B8 0FC15FF4 */ jal reset_array_of_0x10_floats /* 093FEC 7F05F4BC E7A600E8 */ swc1 $f6, 0xe8($sp) /* 093FF0 7F05F4C0 3C198008 */ lui $t9, %hi(pPlayer) /* 093FF4 7F05F4C4 8FA3002C */ lw $v1, 0x2c($sp) @@ -5378,7 +5396,7 @@ glabel sub_GAME_7F05F73C /* 0942B0 7F05F780 0FC2280B */ jal get_BONDdata_field408 /* 0942B4 7F05F784 AFA20034 */ sw $v0, 0x34($sp) /* 0942B8 7F05F788 AFA20030 */ sw $v0, 0x30($sp) -/* 0942BC 7F05F78C 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0942BC 7F05F78C 0FC15FF4 */ jal reset_array_of_0x10_floats /* 0942C0 7F05F790 27A400A0 */ addiu $a0, $sp, 0xa0 /* 0942C4 7F05F794 27A40044 */ addiu $a0, $sp, 0x44 /* 0942C8 7F05F798 27A50038 */ addiu $a1, $sp, 0x38 @@ -5719,7 +5737,7 @@ glabel sub_GAME_7F05FB64 /* 0946E4 7F05FBB4 0FC17674 */ jal get_item_in_hand /* 0946E8 7F05FBB8 8FA40108 */ lw $a0, 0x108($sp) /* 0946EC 7F05FBBC AFA20040 */ sw $v0, 0x40($sp) -/* 0946F0 7F05FBC0 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0946F0 7F05FBC0 0FC15FF4 */ jal reset_array_of_0x10_floats /* 0946F4 7F05FBC4 27A400C0 */ addiu $a0, $sp, 0xc0 /* 0946F8 7F05FBC8 8FA80040 */ lw $t0, 0x40($sp) /* 0946FC 7F05FBCC 24010020 */ li $at, 32 @@ -6712,7 +6730,7 @@ glabel handles_firing_or_throwing_weapon_in_hand .L7F060950: /* 095480 7F060950 0FC17185 */ jal sub_GAME_7F05C614 /* 095484 7F060954 00000000 */ nop -/* 095488 7F060958 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 095488 7F060958 0FC15FF4 */ jal reset_array_of_0x10_floats /* 09548C 7F06095C 27A40154 */ addiu $a0, $sp, 0x154 /* 095490 7F060960 8FA200FC */ lw $v0, 0xfc($sp) /* 095494 7F060964 2401001E */ li $at, 30 @@ -6954,7 +6972,7 @@ glabel handles_firing_or_throwing_weapon_in_hand /* 095818 7F060CE8 00402025 */ move $a0, $v0 /* 09581C 7F060CEC AFA30100 */ sw $v1, 0x100($sp) .L7F060CF0: -/* 095820 7F060CF0 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 095820 7F060CF0 0FC15FF4 */ jal reset_array_of_0x10_floats /* 095824 7F060CF4 AFA40044 */ sw $a0, 0x44($sp) /* 095828 7F060CF8 8FAE01A0 */ lw $t6, 0x1a0($sp) /* 09582C 7F060CFC 8FA30100 */ lw $v1, 0x100($sp) @@ -8496,7 +8514,7 @@ glabel handles_firing_or_throwing_weapon_in_hand .Ljp7F060E70: /* 0959E0 7F060E70 0FC172CD */ jal sub_GAME_7F05C614 /* 0959E4 7F060E74 00000000 */ nop -/* 0959E8 7F060E78 0FC1613C */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0959E8 7F060E78 0FC1613C */ jal reset_array_of_0x10_floats /* 0959EC 7F060E7C 27A40154 */ addiu $a0, $sp, 0x154 /* 0959F0 7F060E80 8FA200FC */ lw $v0, 0xfc($sp) /* 0959F4 7F060E84 2401001E */ li $at, 30 @@ -8738,7 +8756,7 @@ glabel handles_firing_or_throwing_weapon_in_hand /* 095D78 7F061208 00402025 */ move $a0, $v0 /* 095D7C 7F06120C AFA30100 */ sw $v1, 0x100($sp) .Ljp7F061210: -/* 095D80 7F061210 0FC1613C */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 095D80 7F061210 0FC1613C */ jal reset_array_of_0x10_floats /* 095D84 7F061214 AFA40044 */ sw $a0, 0x44($sp) /* 095D88 7F061218 8FAE01A0 */ lw $t6, 0x1a0($sp) /* 095D8C 7F06121C 8FA30100 */ lw $v1, 0x100($sp) @@ -10945,8 +10963,8 @@ glabel sub_GAME_7F062B00 /* 097648 7F062B18 8DEF8374 */ lw $t7, %lo(clock_timer)($t7) /* 09764C 7F062B1C 29E10003 */ slti $at, $t7, 3 /* 097650 7F062B20 10200008 */ beqz $at, .L7F062B44 -/* 097654 7F062B24 3C018005 */ lui $at, %hi(D_jpunk) -/* 097658 7F062B28 C4268378 */ lwc1 $f6, %lo(D_jpunk)($at) +/* 097654 7F062B24 3C018005 */ lui $at, %hi(jp_global_timer_delta) +/* 097658 7F062B28 C4268378 */ lwc1 $f6, %lo(jp_global_timer_delta)($at) /* 09765C 7F062B2C C4840020 */ lwc1 $f4, 0x20($a0) /* 097660 7F062B30 C48A0028 */ lwc1 $f10, 0x28($a0) /* 097664 7F062B34 46062202 */ mul.s $f8, $f4, $f6 @@ -11376,7 +11394,7 @@ glabel set_enviro_fog_for_items_in_solo_watch_menu /* 097C24 7F0630F4 19400009 */ blez $t2, .L7F06311C /* 097C28 7F0630F8 00115980 */ sll $t3, $s1, 6 .L7F0630FC: -/* 097C2C 7F0630FC 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 097C2C 7F0630FC 0FC15FF4 */ jal reset_array_of_0x10_floats /* 097C30 7F063100 01702021 */ addu $a0, $t3, $s0 /* 097C34 7F063104 864C000E */ lh $t4, 0xe($s2) /* 097C38 7F063108 26310001 */ addiu $s1, $s1, 1 @@ -12047,9 +12065,9 @@ glabel sub_GAME_7F06359C /* 098484 7F063954 E7A20018 */ swc1 $f2, 0x18($sp) /* 098488 7F063958 0FC165A5 */ jal sub_GAME_7F059694 /* 09848C 7F06395C E7B20024 */ swc1 $f18, 0x24($sp) -/* 098490 7F063960 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 098490 7F063960 0FC15FF4 */ jal reset_array_of_0x10_floats /* 098494 7F063964 02602025 */ move $a0, $s3 -/* 098498 7F063968 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 098498 7F063968 0FC15FF4 */ jal reset_array_of_0x10_floats /* 09849C 7F06396C 02C02025 */ move $a0, $s6 /* 0984A0 7F063970 02C02025 */ move $a0, $s6 /* 0984A4 7F063974 0FC16008 */ jal sub_GAME_7F058020 @@ -12499,7 +12517,7 @@ glabel sub_GAME_7F06359C /* 098B50 7F064020 8FC80068 */ lw $t0, 0x68($fp) /* 098B54 7F064024 AF080004 */ sw $t0, 4($t8) /* 098B58 7F064028 8FC1006C */ lw $at, 0x6c($fp) -/* 098B5C 7F06402C 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 098B5C 7F06402C 0FC15FF4 */ jal reset_array_of_0x10_floats /* 098B60 7F064030 AF010008 */ sw $at, 8($t8) /* 098B64 7F064034 82840000 */ lb $a0, ($s4) /* 098B68 7F064038 0C0030C3 */ jal get_controller_buttons_held @@ -19574,7 +19592,7 @@ glabel sub_GAME_7F066E64 /* 09B9A8 7F066E78 00000000 */ nop /* 09B9AC 7F066E7C 0FC30776 */ jal get_textptr_for_textID /* 09B9B0 7F066E80 340498D8 */ li $a0, 39128 -/* 09B9B4 7F066E84 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 09B9B4 7F066E84 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 09B9B8 7F066E88 00402025 */ move $a0, $v0 /* 09B9BC 7F066E8C 3C0F8008 */ lui $t7, %hi(pPlayer) /* 09B9C0 7F066E90 8DEFA0B0 */ lw $t7, %lo(pPlayer)($t7) @@ -19596,7 +19614,7 @@ glabel sub_GAME_7F066E64 .L7F066ED0: /* 09BA00 7F066ED0 0FC30776 */ jal get_textptr_for_textID /* 09BA04 7F066ED4 340498D9 */ li $a0, 39129 -/* 09BA08 7F066ED8 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 09BA08 7F066ED8 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 09BA0C 7F066EDC 00402025 */ move $a0, $v0 /* 09BA10 7F066EE0 0FC175A4 */ jal sub_GAME_7F05D690 /* 09BA14 7F066EE4 00000000 */ nop @@ -25253,7 +25271,7 @@ void inc_curplayer_hitcount_with_weapon(s32 arg1) { if (temp_ret != 0) { // Node 1 - temp_v0 = (cur_player_stat_ptr + (arg1 * 4)); + temp_v0 = (pPlayersPerm + (arg1 * 4)); *temp_v0 = (s32) (*temp_v0 + 1); } // Node 2 @@ -25269,9 +25287,9 @@ glabel inc_curplayer_hitcount_with_weapon /* 09F234 7F06A704 0FC1782D */ jal check_special_attributes /* 09F238 7F06A708 3C050001 */ lui $a1, 1 /* 09F23C 7F06A70C 10400008 */ beqz $v0, .L7F06A730 -/* 09F240 7F06A710 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) +/* 09F240 7F06A710 3C0E8008 */ lui $t6, %hi(pPlayersPerm) /* 09F244 7F06A714 8FAF001C */ lw $t7, 0x1c($sp) -/* 09F248 7F06A718 8DCEA0B4 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 09F248 7F06A718 8DCEA0B4 */ lw $t6, %lo(pPlayersPerm)($t6) /* 09F24C 7F06A71C 000FC080 */ sll $t8, $t7, 2 /* 09F250 7F06A720 01D81021 */ addu $v0, $t6, $t8 /* 09F254 7F06A724 8C590000 */ lw $t9, ($v0) @@ -25292,14 +25310,14 @@ glabel inc_curplayer_hitcount_with_weapon #ifdef NONMATCHING void get_curplayer_shot_register(s32 arg0) { // Node 0 - return *(cur_player_stat_ptr + (arg0 * 4)); + return *(pPlayersPerm + (arg0 * 4)); } #else GLOBAL_ASM( .text glabel get_curplayer_shot_register -/* 09F270 7F06A740 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) -/* 09F274 7F06A744 8DCEA0B4 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 09F270 7F06A740 3C0E8008 */ lui $t6, %hi(pPlayersPerm) +/* 09F274 7F06A744 8DCEA0B4 */ lw $t6, %lo(pPlayersPerm)($t6) /* 09F278 7F06A748 00047880 */ sll $t7, $a0, 2 /* 09F27C 7F06A74C 01CFC021 */ addu $t8, $t6, $t7 /* 09F280 7F06A750 03E00008 */ jr $ra @@ -25312,18 +25330,17 @@ glabel get_curplayer_shot_register #ifdef NONMATCHING -void *inc_cur_civilian_casualties(void) { - // Node 0 - cur_player_stat_ptr->unk6C = (s32) (cur_player_stat_ptr->unk6C + 1); - return cur_player_stat_ptr; -} +void inc_cur_civilian_casualties(void) +{ + pPlayersPerm->killed_civilians++ +} #else GLOBAL_ASM( .text glabel inc_cur_civilian_casualties -/* 09F288 7F06A758 3C028008 */ lui $v0, %hi(cur_player_stat_ptr) -/* 09F28C 7F06A75C 8C42A0B4 */ lw $v0, %lo(cur_player_stat_ptr)($v0) +/* 09F288 7F06A758 3C028008 */ lui $v0, %hi(pPlayersPerm) +/* 09F28C 7F06A75C 8C42A0B4 */ lw $v0, %lo(pPlayersPerm)($v0) /* 09F290 7F06A760 8C4E006C */ lw $t6, 0x6c($v0) /* 09F294 7F06A764 25CF0001 */ addiu $t7, $t6, 1 /* 09F298 7F06A768 03E00008 */ jr $ra @@ -25336,16 +25353,16 @@ glabel inc_cur_civilian_casualties #ifdef NONMATCHING -void get_civilian_casualties(void) { - // Node 0 - return cur_player_stat_ptr->unk6C; +int get_civilian_casualties(void) +{ + return pPlayersPerm->killed_civilians; } #else GLOBAL_ASM( .text glabel get_civilian_casualties -/* 09F2A0 7F06A770 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) -/* 09F2A4 7F06A774 8DCEA0B4 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 09F2A0 7F06A770 3C0E8008 */ lui $t6, %hi(pPlayersPerm) +/* 09F2A4 7F06A774 8DCEA0B4 */ lw $t6, %lo(pPlayersPerm)($t6) /* 09F2A8 7F06A778 03E00008 */ jr $ra /* 09F2AC 7F06A77C 8DC2006C */ lw $v0, 0x6c($t6) ) @@ -25366,43 +25383,43 @@ void *increment_num_kills_display_text_in_MP(void) { void *phi_return_reg; // Node 0 - cur_player_stat_ptr->unk1C = (s32) (cur_player_stat_ptr->unk1C + 1); - pPlayer->unk29F8 = (s32) (pPlayer->unk29F8 + 1); + pPlayersPerm->killcount = (s32) (pPlayersPerm->killcount + 1); + pPlayer->field_29F8 = (s32) (pPlayer->field_29F8 + 1); temp_ret = get_num_players(); phi_return_reg = temp_ret; if (temp_ret >= 2) { // Node 1 sp34 = sub_GAME_7F08BFB8(); - sprintf(&sp40, &aSD, get_textptr_for_textID(0x98da), cur_player_stat_ptr->unk1C); + sprintf(&sp40, &aSD, get_textptr_for_textID(0x98da), pPlayersPerm->killcount); display_string_in_lower_left_corner(&sp40); - if (cur_player_stat_ptr->unk1C >= 2) + if (pPlayersPerm->killcount >= 2) { // Node 2 - temp_v0 = (sp34 - pPlayer->unk29E4); - if (cur_player_stat_ptr->unk48 < temp_v0) + temp_v0 = (sp34 - pPlayer->last_kill_time); + if (pPlayersPerm->slowest2kills < temp_v0) { // Node 3 - cur_player_stat_ptr->unk48 = temp_v0; + pPlayersPerm->slowest2kills = temp_v0; } // Node 4 - if (temp_v0 < cur_player_stat_ptr->unk44) + if (temp_v0 < pPlayersPerm->fastest2kills) { // Node 5 - cur_player_stat_ptr->unk44 = temp_v0; + pPlayersPerm->fastest2kills = temp_v0; } } // Node 6 pPlayer->unk29F0 = (s32) pPlayer->unk29EC; pPlayer->unk29EC = (s32) pPlayer->unk29E8; - pPlayer->unk29E8 = (s32) pPlayer->unk29E4; - pPlayer->unk29E4 = sp34; + pPlayer->unk29E8 = (s32) pPlayer->last_kill_time; + pPlayer->last_kill_time = sp34; phi_a0 = 1; if (-1 != pPlayer->unk29E8) { // Node 7 phi_a0 = 1; - if ((pPlayer->unk29E4 - pPlayer->unk29E8) < 0x78) + if ((pPlayer->last_kill_time - pPlayer->unk29E8) < 0x78) { // Node 8 phi_a0 = 2; @@ -25410,7 +25427,7 @@ void *increment_num_kills_display_text_in_MP(void) { { // Node 9 phi_a0 = 2; - if ((pPlayer->unk29E4 - pPlayer->unk29EC) < 0x78) + if ((pPlayer->last_kill_time - pPlayer->unk29EC) < 0x78) { // Node 10 temp_a0 = (2 + 1); @@ -25419,7 +25436,7 @@ void *increment_num_kills_display_text_in_MP(void) { { // Node 11 phi_a0 = temp_a0; - if ((pPlayer->unk29E4 - pPlayer->unk29F0) < 0x78) + if ((pPlayer->last_kill_time - pPlayer->unk29F0) < 0x78) { // Node 12 phi_a0 = (temp_a0 + 1); @@ -25431,10 +25448,10 @@ void *increment_num_kills_display_text_in_MP(void) { } // Node 13 phi_return_reg = pPlayer; - if (cur_player_stat_ptr->unk58 < phi_a0) + if (pPlayersPerm->most_killed_one_time < phi_a0) { // Node 14 - cur_player_stat_ptr->unk58 = (s32) phi_a0; + pPlayersPerm->most_killed_one_time = (s32) phi_a0; phi_return_reg = pPlayer; } } @@ -25446,8 +25463,8 @@ void *increment_num_kills_display_text_in_MP(void) { GLOBAL_ASM( .text glabel increment_num_kills_display_text_in_MP -/* 09F2B0 7F06A780 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F2B4 7F06A784 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F2B0 7F06A780 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F2B4 7F06A784 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F2B8 7F06A788 27BDFEC0 */ addiu $sp, $sp, -0x140 /* 09F2BC 7F06A78C AFBF001C */ sw $ra, 0x1c($sp) /* 09F2C0 7F06A790 AFB00018 */ sw $s0, 0x18($sp) @@ -25469,8 +25486,8 @@ glabel increment_num_kills_display_text_in_MP /* 09F300 7F06A7D0 AFA20034 */ sw $v0, 0x34($sp) /* 09F304 7F06A7D4 0FC30776 */ jal get_textptr_for_textID /* 09F308 7F06A7D8 340498DA */ li $a0, 39130 -/* 09F30C 7F06A7DC 3C088008 */ lui $t0, %hi(cur_player_stat_ptr) -/* 09F310 7F06A7E0 8D08A0B4 */ lw $t0, %lo(cur_player_stat_ptr)($t0) +/* 09F30C 7F06A7DC 3C088008 */ lui $t0, %hi(pPlayersPerm) +/* 09F310 7F06A7E0 8D08A0B4 */ lw $t0, %lo(pPlayersPerm)($t0) /* 09F314 7F06A7E4 3C058005 */ lui $a1, %hi(aSD) /* 09F318 7F06A7E8 24A53BF8 */ addiu $a1, %lo(aSD) # addiu $a1, $a1, 0x3bf8 /* 09F31C 7F06A7EC 27A40040 */ addiu $a0, $sp, 0x40 @@ -25479,8 +25496,8 @@ glabel increment_num_kills_display_text_in_MP /* 09F328 7F06A7F8 8D07001C */ lw $a3, 0x1c($t0) /* 09F32C 7F06A7FC 0FC228F2 */ jal display_string_in_lower_left_corner /* 09F330 7F06A800 27A40040 */ addiu $a0, $sp, 0x40 -/* 09F334 7F06A804 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F338 7F06A808 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F334 7F06A804 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F338 7F06A808 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F33C 7F06A80C 8C69001C */ lw $t1, 0x1c($v1) /* 09F340 7F06A810 29210002 */ slti $at, $t1, 2 /* 09F344 7F06A814 54200012 */ bnezl $at, .L7F06A860 @@ -25494,8 +25511,8 @@ glabel increment_num_kills_display_text_in_MP /* 09F364 7F06A834 50200005 */ beql $at, $zero, .L7F06A84C /* 09F368 7F06A838 8C6E0044 */ lw $t6, 0x44($v1) /* 09F36C 7F06A83C AC620048 */ sw $v0, 0x48($v1) -/* 09F370 7F06A840 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F374 7F06A844 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F370 7F06A840 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F374 7F06A844 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F378 7F06A848 8C6E0044 */ lw $t6, 0x44($v1) .L7F06A84C: /* 09F37C 7F06A84C 004E082A */ slt $at, $v0, $t6 @@ -25542,8 +25559,8 @@ glabel increment_num_kills_display_text_in_MP /* 09F41C 7F06A8EC 00000000 */ nop /* 09F420 7F06A8F0 24840001 */ addiu $a0, $a0, 1 .L7F06A8F4: -/* 09F424 7F06A8F4 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F428 7F06A8F8 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F424 7F06A8F4 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F428 7F06A8F8 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F42C 7F06A8FC 8C6D0058 */ lw $t5, 0x58($v1) /* 09F430 7F06A900 01A4082A */ slt $at, $t5, $a0 /* 09F434 7F06A904 50200003 */ beql $at, $zero, .L7F06A914 @@ -25561,8 +25578,8 @@ glabel increment_num_kills_display_text_in_MP GLOBAL_ASM( .text glabel increment_num_kills_display_text_in_MP -/* 09F2B0 7F06A780 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F2B4 7F06A784 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F2B0 7F06A780 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F2B4 7F06A784 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F2B8 7F06A788 27BDFEC0 */ addiu $sp, $sp, -0x140 /* 09F2BC 7F06A78C AFBF001C */ sw $ra, 0x1c($sp) /* 09F2C0 7F06A790 AFB00018 */ sw $s0, 0x18($sp) @@ -25584,18 +25601,18 @@ glabel increment_num_kills_display_text_in_MP /* 09F300 7F06A7D0 AFA20034 */ sw $v0, 0x34($sp) /* 09F304 7F06A7D4 0FC30776 */ jal get_textptr_for_textID /* 09F308 7F06A7D8 340498DA */ li $a0, 39130 -/* 09F30C 7F06A7DC 3C088008 */ lui $t0, %hi(cur_player_stat_ptr) -/* 09F310 7F06A7E0 8D08A0B4 */ lw $t0, %lo(cur_player_stat_ptr)($t0) +/* 09F30C 7F06A7DC 3C088008 */ lui $t0, %hi(pPlayersPerm) +/* 09F310 7F06A7E0 8D08A0B4 */ lw $t0, %lo(pPlayersPerm)($t0) /* 09F314 7F06A7E4 3C058005 */ lui $a1, %hi(aSD) /* 09F318 7F06A7E8 24A53BF8 */ addiu $a1, %lo(aSD) # addiu $a1, $a1, 0x3bf8 /* 09F31C 7F06A7EC 27A40040 */ addiu $a0, $sp, 0x40 /* 09F320 7F06A7F0 00403025 */ move $a2, $v0 /* 09F324 7F06A7F4 0C002B25 */ jal sprintf /* 09F328 7F06A7F8 8D07001C */ lw $a3, 0x1c($t0) -/* 09F32C 7F06A7FC 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 09F32C 7F06A7FC 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 09F330 7F06A800 27A40040 */ addiu $a0, $sp, 0x40 -/* 09F334 7F06A804 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F338 7F06A808 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F334 7F06A804 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F338 7F06A808 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F33C 7F06A80C 8C69001C */ lw $t1, 0x1c($v1) /* 09F340 7F06A810 29210002 */ slti $at, $t1, 2 /* 09F344 7F06A814 54200012 */ bnezl $at, .L7F06A860 @@ -25609,8 +25626,8 @@ glabel increment_num_kills_display_text_in_MP /* 09F364 7F06A834 50200005 */ beql $at, $zero, .L7F06A84C /* 09F368 7F06A838 8C6E0044 */ lw $t6, 0x44($v1) /* 09F36C 7F06A83C AC620048 */ sw $v0, 0x48($v1) -/* 09F370 7F06A840 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F374 7F06A844 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F370 7F06A840 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F374 7F06A844 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F378 7F06A848 8C6E0044 */ lw $t6, 0x44($v1) .L7F06A84C: /* 09F37C 7F06A84C 004E082A */ slt $at, $v0, $t6 @@ -25657,8 +25674,8 @@ glabel increment_num_kills_display_text_in_MP /* 09F41C 7F06A8EC 00000000 */ nop /* 09F420 7F06A8F0 24840001 */ addiu $a0, $a0, 1 .L7F06A8F4: -/* 09F424 7F06A8F4 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 09F428 7F06A8F8 8C63A0B4 */ lw $v1, %lo(cur_player_stat_ptr)($v1) +/* 09F424 7F06A8F4 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 09F428 7F06A8F8 8C63A0B4 */ lw $v1, %lo(pPlayersPerm)($v1) /* 09F42C 7F06A8FC 8C6D0058 */ lw $t5, 0x58($v1) /* 09F430 7F06A900 01A4082A */ slt $at, $t5, $a0 /* 09F434 7F06A904 50200003 */ beql $at, $zero, .L7F06A914 @@ -25680,15 +25697,15 @@ glabel increment_num_kills_display_text_in_MP #ifdef NONMATCHING void get_curplay_killcount(void) { // Node 0 - return cur_player_stat_ptr->unk1C; + return pPlayersPerm->killcount; } #else GLOBAL_ASM( .text glabel get_curplay_killcount -/* 09F454 7F06A924 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) -/* 09F458 7F06A928 8DCEA0B4 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 09F454 7F06A924 3C0E8008 */ lui $t6, %hi(pPlayersPerm) +/* 09F458 7F06A928 8DCEA0B4 */ lw $t6, %lo(pPlayersPerm)($t6) /* 09F45C 7F06A92C 03E00008 */ jr $ra /* 09F460 7F06A930 8DC2001C */ lw $v0, 0x1c($t6) ) @@ -25699,17 +25716,16 @@ glabel get_curplay_killcount #ifdef NONMATCHING -void *increment_num_times_killed_MwtGC(void) { - // Node 0 - cur_player_stat_ptr->unk20 = (s32) (cur_player_stat_ptr->unk20 + 1); - return cur_player_stat_ptr; +void increment_num_times_killed_MwtGC(void) +{ + pPlayersPerm->ggkillcount++; } #else GLOBAL_ASM( .text glabel increment_num_times_killed_MwtGC -/* 09F464 7F06A934 3C028008 */ lui $v0, %hi(cur_player_stat_ptr) -/* 09F468 7F06A938 8C42A0B4 */ lw $v0, %lo(cur_player_stat_ptr)($v0) +/* 09F464 7F06A934 3C028008 */ lui $v0, %hi(pPlayersPerm) +/* 09F468 7F06A938 8C42A0B4 */ lw $v0, %lo(pPlayersPerm)($v0) /* 09F46C 7F06A93C 8C4E0020 */ lw $t6, 0x20($v0) /* 09F470 7F06A940 25CF0001 */ addiu $t7, $t6, 1 /* 09F474 7F06A944 03E00008 */ jr $ra @@ -25724,14 +25740,14 @@ glabel increment_num_times_killed_MwtGC #ifdef NONMATCHING void get_times_killed_mwtgx(void) { // Node 0 - return cur_player_stat_ptr->unk20; + return pPlayersPerm->ggkillcount; } #else GLOBAL_ASM( .text glabel get_times_killed_mwtgx -/* 09F47C 7F06A94C 3C0E8008 */ lui $t6, %hi(cur_player_stat_ptr) -/* 09F480 7F06A950 8DCEA0B4 */ lw $t6, %lo(cur_player_stat_ptr)($t6) +/* 09F47C 7F06A94C 3C0E8008 */ lui $t6, %hi(pPlayersPerm) +/* 09F480 7F06A950 8DCEA0B4 */ lw $t6, %lo(pPlayersPerm)($t6) /* 09F484 7F06A954 03E00008 */ jr $ra /* 09F488 7F06A958 8DC20020 */ lw $v0, 0x20($t6) ) @@ -25742,35 +25758,22 @@ glabel get_times_killed_mwtgx #ifdef NONMATCHING -void increment_num_deaths(void) { - s32 sp28; - ? sp30; - ? temp_ret; - ? phi_return_reg; - - // Node 0 - pPlayer->unk29D8 = (s32) (pPlayer->unk29D8 + 1); - temp_ret = get_num_players(); - phi_return_reg = temp_ret; - if (temp_ret >= 2) +void increment_num_deaths(void) +{ + char acStack256 [256] + pPlayer->deathcount = (s32) (pPlayer->deathcount + 1); + if (get_num_players() >= 2) { - // Node 1 - if (pPlayer->unk29D8 == 1) + if (pPlayer->deathcount == 1) { - // Node 2 - sprintf(&sp30, get_textptr_for_textID(0x98db)); + sprintf(acStack256, get_textptr_for_textID(0x98db)); } else { - // Node 3 - sp28 = get_textptr_for_textID(0x98dc); - sprintf(&sp30, &aSDS, sp28, pPlayer->unk29D8, get_textptr_for_textID(0x98dd)); + sprintf(acStack256, &aSDS, get_textptr_for_textID(0x98dc), pPlayer->deathcount, get_textptr_for_textID(0x98dd)); } - // Node 4 - phi_return_reg = display_string_in_lower_left_corner(&sp30); + display_string_in_lower_left_corner(acStack256); } - // Node 5 - return phi_return_reg; } #else #ifdef VERSION_US @@ -25868,7 +25871,7 @@ glabel increment_num_deaths /* 09F518 7F06A9E8 0C002B25 */ jal sprintf /* 09F51C 7F06A9EC 8FA60028 */ lw $a2, 0x28($sp) .L7F06A9F0: -/* 09F520 7F06A9F0 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 09F520 7F06A9F0 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 09F524 7F06A9F4 27A40030 */ addiu $a0, $sp, 0x30 .L7F06A9F8: /* 09F528 7F06A9F8 8FBF001C */ lw $ra, 0x1c($sp) @@ -25885,7 +25888,7 @@ glabel increment_num_deaths #ifdef NONMATCHING void get_curplayer_numdeaths(void) { // Node 0 - return pPlayer->unk29D8; + return pPlayer->deathcount; } #else @@ -25914,42 +25917,42 @@ void *increment_num_suicides_display_MP(void) { void *phi_return_reg; // Node 0 - pPlayer->unk29DC = (s32) (pPlayer->unk29DC + 1); + pPlayer->num_suicides = (s32) (pPlayer->num_suicides + 1); temp_ret = get_num_players(); phi_return_reg = temp_ret; if (temp_ret >= 2) { // Node 1 sp34 = sub_GAME_7F08BFB8(); - sprintf(&sp40, &aSD_0, get_textptr_for_textID(0x98de), pPlayer->unk29DC); + sprintf(&sp40, &aSD_0, get_textptr_for_textID(0x98de), pPlayer->num_suicides); display_string_in_lower_left_corner(&sp40); - if (cur_player_stat_ptr->unk1C >= 2) + if (pPlayersPerm->killcount >= 2) { // Node 2 - temp_v1 = (sp34 - pPlayer->unk29E4); - if (cur_player_stat_ptr->unk48 < temp_v1) + temp_v1 = (sp34 - pPlayer->last_kill_time); + if (pPlayersPerm->slowest2kills < temp_v1) { // Node 3 - cur_player_stat_ptr->unk48 = temp_v1; + pPlayersPerm->slowest2kills = temp_v1; } // Node 4 - if (temp_v1 < cur_player_stat_ptr->unk44) + if (temp_v1 < pPlayersPerm->fastest2kills) { // Node 5 - cur_player_stat_ptr->unk44 = temp_v1; + pPlayersPerm->fastest2kills = temp_v1; } } // Node 6 pPlayer->unk29F0 = (s32) pPlayer->unk29EC; pPlayer->unk29EC = (s32) pPlayer->unk29E8; - pPlayer->unk29E8 = (s32) pPlayer->unk29E4; - pPlayer->unk29E4 = sp34; + pPlayer->unk29E8 = (s32) pPlayer->last_kill_time; + pPlayer->last_kill_time = sp34; phi_v1 = 1; if (-1 != pPlayer->unk29E8) { // Node 7 phi_v1 = 1; - if ((pPlayer->unk29E4 - pPlayer->unk29E8) < 0x78) + if ((pPlayer->last_kill_time - pPlayer->unk29E8) < 0x78) { // Node 8 phi_v1 = 2; @@ -25957,7 +25960,7 @@ void *increment_num_suicides_display_MP(void) { { // Node 9 phi_v1 = 2; - if ((pPlayer->unk29E4 - pPlayer->unk29EC) < 0x78) + if ((pPlayer->last_kill_time - pPlayer->unk29EC) < 0x78) { // Node 10 temp_v1_2 = (2 + 1); @@ -25966,7 +25969,7 @@ void *increment_num_suicides_display_MP(void) { { // Node 11 phi_v1 = temp_v1_2; - if ((pPlayer->unk29E4 - pPlayer->unk29F0) < 0x78) + if ((pPlayer->last_kill_time - pPlayer->unk29F0) < 0x78) { // Node 12 phi_v1 = (temp_v1_2 + 1); @@ -25977,12 +25980,12 @@ void *increment_num_suicides_display_MP(void) { } } // Node 13 - phi_return_reg = cur_player_stat_ptr; - if (cur_player_stat_ptr->unk58 < phi_v1) + phi_return_reg = pPlayersPerm; + if (pPlayersPerm->most_killed_one_time < phi_v1) { // Node 14 - cur_player_stat_ptr->unk58 = (s32) phi_v1; - phi_return_reg = cur_player_stat_ptr; + pPlayersPerm->most_killed_one_time = (s32) phi_v1; + phi_return_reg = pPlayersPerm; } } // Node 15 @@ -26021,8 +26024,8 @@ glabel increment_num_suicides_display_MP /* 09F5A8 7F06AA78 8F0729DC */ lw $a3, 0x29dc($t8) /* 09F5AC 7F06AA7C 0FC228F2 */ jal display_string_in_lower_left_corner /* 09F5B0 7F06AA80 27A40040 */ addiu $a0, $sp, 0x40 -/* 09F5B4 7F06AA84 3C078008 */ lui $a3, %hi(cur_player_stat_ptr) -/* 09F5B8 7F06AA88 24E7A0B4 */ addiu $a3, %lo(cur_player_stat_ptr) # addiu $a3, $a3, -0x5f4c +/* 09F5B4 7F06AA84 3C078008 */ lui $a3, %hi(pPlayersPerm) +/* 09F5B8 7F06AA88 24E7A0B4 */ addiu $a3, %lo(pPlayersPerm) # addiu $a3, $a3, -0x5f4c /* 09F5BC 7F06AA8C 8CE20000 */ lw $v0, ($a3) /* 09F5C0 7F06AA90 8C59001C */ lw $t9, 0x1c($v0) /* 09F5C4 7F06AA94 2B210002 */ slti $at, $t9, 2 @@ -26128,10 +26131,10 @@ glabel increment_num_suicides_display_MP /* 09F5A0 7F06AA70 00403025 */ move $a2, $v0 /* 09F5A4 7F06AA74 0C002B25 */ jal sprintf /* 09F5A8 7F06AA78 8F0729DC */ lw $a3, 0x29dc($t8) -/* 09F5AC 7F06AA7C 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 09F5AC 7F06AA7C 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 09F5B0 7F06AA80 27A40040 */ addiu $a0, $sp, 0x40 -/* 09F5B4 7F06AA84 3C078008 */ lui $a3, %hi(cur_player_stat_ptr) -/* 09F5B8 7F06AA88 24E7A0B4 */ addiu $a3, %lo(cur_player_stat_ptr) # addiu $a3, $a3, -0x5f4c +/* 09F5B4 7F06AA84 3C078008 */ lui $a3, %hi(pPlayersPerm) +/* 09F5B8 7F06AA88 24E7A0B4 */ addiu $a3, %lo(pPlayersPerm) # addiu $a3, $a3, -0x5f4c /* 09F5BC 7F06AA8C 8CE20000 */ lw $v0, ($a3) /* 09F5C0 7F06AA90 8C59001C */ lw $t9, 0x1c($v0) /* 09F5C4 7F06AA94 2B210002 */ slti $at, $t9, 2 diff --git a/src/game/cheat_buttons.c b/src/game/cheat_buttons.c index 9a73107..5952d43 100644 --- a/src/game/cheat_buttons.c +++ b/src/game/cheat_buttons.c @@ -205,13 +205,13 @@ struct struct_15 D_8003F80C[] = { #ifdef NONMATCHING -void sub_GAME_7F091740(void) { +void cheatButton_7F091740(void) { } #else GLOBAL_ASM( .text -glabel sub_GAME_7F091740 +glabel cheatButton_7F091740 /* 0C6270 7F091740 AFA40000 */ sw $a0, ($sp) /* 0C6274 7F091744 308EFFFF */ andi $t6, $a0, 0xffff /* 0C6278 7F091748 01C02025 */ move $a0, $t6 @@ -238,13 +238,13 @@ glabel sub_GAME_7F091740 #ifdef NONMATCHING -void sub_GAME_7F09177C(void) { +void cheatButton_7F09177C(void) { } #else GLOBAL_ASM( .text -glabel sub_GAME_7F09177C +glabel cheatButton_7F09177C /* 0C62AC 7F09177C 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 0C62B0 7F091780 AFB1001C */ sw $s1, 0x1c($sp) /* 0C62B4 7F091784 AFBF002C */ sw $ra, 0x2c($sp) @@ -338,7 +338,7 @@ glabel sub_GAME_7F09177C /* 0C63F0 7F0918C0 54850011 */ bnel $a0, $a1, .L7F091908 /* 0C63F4 7F0918C4 92280010 */ lbu $t0, 0x10($s1) /* 0C63F8 7F0918C8 A0C012B5 */ sb $zero, 0x12b5($a2) -/* 0C63FC 7F0918CC 0FC249EF */ jal sub_GAME_7F0927BC +/* 0C63FC 7F0918CC 0FC249EF */ jal cheatCheckIfOn /* 0C6400 7F0918D0 92240000 */ lbu $a0, ($s1) /* 0C6404 7F0918D4 10400005 */ beqz $v0, .L7F0918EC /* 0C6408 7F0918D8 00000000 */ nop @@ -347,12 +347,12 @@ glabel sub_GAME_7F09177C /* 0C6414 7F0918E4 13200005 */ beqz $t9, .L7F0918FC /* 0C6418 7F0918E8 00000000 */ nop .L7F0918EC: -/* 0C641C 7F0918EC 0FC246D9 */ jal sub_GAME_7F091B64 +/* 0C641C 7F0918EC 0FC246D9 */ jal handle_cheats_turned_on /* 0C6420 7F0918F0 92240000 */ lbu $a0, ($s1) /* 0C6424 7F0918F4 10000004 */ b .L7F091908 /* 0C6428 7F0918F8 92280010 */ lbu $t0, 0x10($s1) .L7F0918FC: -/* 0C642C 7F0918FC 0FC2490E */ jal sub_GAME_7F092438 +/* 0C642C 7F0918FC 0FC2490E */ jal cheatDisplayMessageActivateCheat /* 0C6430 7F091900 92240000 */ lbu $a0, ($s1) /* 0C6434 7F091904 92280010 */ lbu $t0, 0x10($s1) .L7F091908: @@ -379,13 +379,13 @@ glabel sub_GAME_7F09177C #ifdef NONMATCHING -void sub_GAME_7F09193C(void) { +void cheat_buttons_mp_related(void) { } #else GLOBAL_ASM( .text -glabel sub_GAME_7F09193C +glabel cheat_buttons_mp_related /* 0C646C 7F09193C 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 0C6470 7F091940 AFBF0014 */ sw $ra, 0x14($sp) /* 0C6474 7F091944 0FC26C54 */ jal get_cur_playernum @@ -414,13 +414,13 @@ glabel sub_GAME_7F09193C /* 0C64D0 7F0919A0 11400028 */ beqz $t2, .L7F091A44 /* 0C64D4 7F0919A4 A7A50024 */ sh $a1, 0x24($sp) /* 0C64D8 7F0919A8 30A4FFFF */ andi $a0, $a1, 0xffff -/* 0C64DC 7F0919AC 0FC245D0 */ jal sub_GAME_7F091740 +/* 0C64DC 7F0919AC 0FC245D0 */ jal cheatButton_7F091740 /* 0C64E0 7F0919B0 AFA60018 */ sw $a2, 0x18($sp) /* 0C64E4 7F0919B4 24010001 */ li $at, 1 /* 0C64E8 7F0919B8 1441001E */ bne $v0, $at, .L7F091A34 /* 0C64EC 7F0919BC 8FA70018 */ lw $a3, 0x18($sp) /* 0C64F0 7F0919C0 97A40026 */ lhu $a0, 0x26($sp) -/* 0C64F4 7F0919C4 0FC245D0 */ jal sub_GAME_7F091740 +/* 0C64F4 7F0919C4 0FC245D0 */ jal cheatButton_7F091740 /* 0C64F8 7F0919C8 AFA70018 */ sw $a3, 0x18($sp) /* 0C64FC 7F0919CC 24010001 */ li $at, 1 /* 0C6500 7F0919D0 14410018 */ bne $v0, $at, .L7F091A34 @@ -454,7 +454,7 @@ glabel sub_GAME_7F09193C /* 0C656C 7F091A3C 8C8A0000 */ lw $t2, ($a0) /* 0C6570 7F091A40 A14012B5 */ sb $zero, 0x12b5($t2) .L7F091A44: -/* 0C6574 7F091A44 0FC245DF */ jal sub_GAME_7F09177C +/* 0C6574 7F091A44 0FC245DF */ jal cheatButton_7F09177C /* 0C6578 7F091A48 00000000 */ nop /* 0C657C 7F091A4C 8FBF0014 */ lw $ra, 0x14($sp) /* 0C6580 7F091A50 27BD0028 */ addiu $sp, $sp, 0x28 @@ -467,38 +467,28 @@ glabel sub_GAME_7F09193C -#ifdef NONMATCHING -void sub_GAME_7F091A5C(void) { +u32 is_cheat_index_equal_to_1C(u32 cheatindex) +{ + if (cheatindex == 0x1c) { + return 1; + } + return 0; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F091A5C -/* 0C658C 7F091A5C 2401001C */ li $at, 28 -/* 0C6590 7F091A60 14810003 */ bne $a0, $at, .L7F091A70 -/* 0C6594 7F091A64 00001025 */ move $v0, $zero -/* 0C6598 7F091A68 03E00008 */ jr $ra -/* 0C659C 7F091A6C 24020001 */ li $v0, 1 -.L7F091A70: -/* 0C65A0 7F091A70 03E00008 */ jr $ra -/* 0C65A4 7F091A74 00000000 */ nop -) -#endif #ifdef NONMATCHING -void sub_GAME_7F091A78(void) { +void cheatCheckIfMPCheat(void) { } #else GLOBAL_ASM( .text -glabel sub_GAME_7F091A78 +glabel cheatCheckIfMPCheat /* 0C65A8 7F091A78 00047100 */ sll $t6, $a0, 4 /* 0C65AC 7F091A7C 3C0F8004 */ lui $t7, %hi(D_8003F808) /* 0C65B0 7F091A80 01EE7821 */ addu $t7, $t7, $t6 @@ -522,13 +512,48 @@ glabel sub_GAME_7F091A78 #ifdef NONMATCHING -void sub_GAME_7F091AAC(void) { - +void turn_on_cheat_for_players(u32 cheatindex) +{ + u32 uVar1; + u32 playernum; + u32 numplayers; + u32 i; + + uVar1 = *(&D_8003F808 + cheatindex * 0x10); + playernum = get_cur_playernum(); + numplayers = get_num_players(); + if (numplayers == 1) { + handle_cheats_turned_on(cheatindex); + } + else { + if ((uVar1 & 4) != 0) + { + if ((uVar1 & 0x20) == 0) + { + i = 0; + if (0 < (int)numplayers) + { + while (i != numplayers) + { + set_cur_player(i); + handle_cheats_turned_on(cheatindex); + i = i + 1; + }; + } + set_cur_player(playernum); + } + else + { + handle_cheats_turned_on(cheatindex); + } + } + } + return; } #else GLOBAL_ASM( .text -glabel sub_GAME_7F091AAC +glabel turn_on_cheat_for_players /* 0C65DC 7F091AAC 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 0C65E0 7F091AB0 AFB00018 */ sw $s0, 0x18($sp) /* 0C65E4 7F091AB4 3C108004 */ lui $s0, %hi(D_8003F808) @@ -545,7 +570,7 @@ glabel sub_GAME_7F091AAC /* 0C6610 7F091AE0 24010001 */ li $at, 1 /* 0C6614 7F091AE4 14410005 */ bne $v0, $at, .L7F091AFC /* 0C6618 7F091AE8 00408825 */ move $s1, $v0 -/* 0C661C 7F091AEC 0FC246D9 */ jal sub_GAME_7F091B64 +/* 0C661C 7F091AEC 0FC246D9 */ jal handle_cheats_turned_on /* 0C6620 7F091AF0 02402025 */ move $a0, $s2 /* 0C6624 7F091AF4 10000016 */ b .L7F091B50 /* 0C6628 7F091AF8 8FBF0024 */ lw $ra, 0x24($sp) @@ -555,7 +580,7 @@ glabel sub_GAME_7F091AAC /* 0C6634 7F091B04 32180020 */ andi $t8, $s0, 0x20 /* 0C6638 7F091B08 13000005 */ beqz $t8, .L7F091B20 /* 0C663C 7F091B0C 00000000 */ nop -/* 0C6640 7F091B10 0FC246D9 */ jal sub_GAME_7F091B64 +/* 0C6640 7F091B10 0FC246D9 */ jal handle_cheats_turned_on /* 0C6644 7F091B14 02402025 */ move $a0, $s2 /* 0C6648 7F091B18 1000000D */ b .L7F091B50 /* 0C664C 7F091B1C 8FBF0024 */ lw $ra, 0x24($sp) @@ -565,7 +590,7 @@ glabel sub_GAME_7F091AAC .L7F091B28: /* 0C6658 7F091B28 0FC26C43 */ jal set_cur_player /* 0C665C 7F091B2C 02002025 */ move $a0, $s0 -/* 0C6660 7F091B30 0FC246D9 */ jal sub_GAME_7F091B64 +/* 0C6660 7F091B30 0FC246D9 */ jal handle_cheats_turned_on /* 0C6664 7F091B34 02402025 */ move $a0, $s2 /* 0C6668 7F091B38 26100001 */ addiu $s0, $s0, 1 /* 0C666C 7F091B3C 1611FFFA */ bne $s0, $s1, .L7F091B28 @@ -589,7 +614,7 @@ glabel sub_GAME_7F091AAC #ifdef NONMATCHING -void sub_GAME_7F091B64(void) { +void handle_cheats_turned_on(void) { } #else @@ -677,7 +702,7 @@ glabel jpt_cheats_cheat glabel finalamount .word 0x3d4ccccd /*0.050000001*/ .text -glabel sub_GAME_7F091B64 +glabel handle_cheats_turned_on /* 0C6694 7F091B64 00047100 */ sll $t6, $a0, 4 /* 0C6698 7F091B68 3C0F8004 */ lui $t7, %hi(D_8003F808) /* 0C669C 7F091B6C 01EE7821 */ addu $t7, $t7, $t6 @@ -896,7 +921,7 @@ cheats_cheat_dk_mode: /* 0C69A8 7F091E78 3404B017 */ li $a0, 45079 /* 0C69AC 7F091E7C 0FC228F2 */ jal display_string_in_lower_left_corner /* 0C69B0 7F091E80 00402025 */ move $a0, $v0 -/* 0C69B4 7F091E84 0FC249FD */ jal sub_GAME_7F0927F4 +/* 0C69B4 7F091E84 0FC249FD */ jal set_DKMode /* 0C69B8 7F091E88 24040001 */ li $a0, 1 /* 0C69BC 7F091E8C 10000167 */ b .L7F09242C /* 0C69C0 7F091E90 8FBF0014 */ lw $ra, 0x14($sp) @@ -954,8 +979,8 @@ cheats_cheat_extra_weapons: cheats_cheat_tiny_bond: /* 0C6A8C 7F091F5C 24010001 */ li $at, 1 /* 0C6A90 7F091F60 14410131 */ bne $v0, $at, .L7F092428 -/* 0C6A94 7F091F64 3C0B8008 */ lui $t3, %hi(cur_player_stat_ptr) -/* 0C6A98 7F091F68 8D6BA0B4 */ lw $t3, %lo(cur_player_stat_ptr)($t3) +/* 0C6A94 7F091F64 3C0B8008 */ lui $t3, %hi(pPlayersPerm) +/* 0C6A98 7F091F68 8D6BA0B4 */ lw $t3, %lo(pPlayersPerm)($t3) /* 0C6A9C 7F091F6C 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C6AA0 7F091F70 44818000 */ mtc1 $at, $f16 /* 0C6AA4 7F091F74 C5720064 */ lwc1 $f18, 0x64($t3) @@ -968,9 +993,9 @@ cheats_cheat_tiny_bond: /* 0C6AC0 7F091F90 0FC228F2 */ jal display_string_in_lower_left_corner /* 0C6AC4 7F091F94 00402025 */ move $a0, $v0 /* 0C6AC8 7F091F98 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 0C6ACC 7F091F9C 3C0A8008 */ lui $t2, %hi(cur_player_stat_ptr) +/* 0C6ACC 7F091F9C 3C0A8008 */ lui $t2, %hi(pPlayersPerm) /* 0C6AD0 7F091FA0 44810000 */ mtc1 $at, $f0 -/* 0C6AD4 7F091FA4 8D4AA0B4 */ lw $t2, %lo(cur_player_stat_ptr)($t2) +/* 0C6AD4 7F091FA4 8D4AA0B4 */ lw $t2, %lo(pPlayersPerm)($t2) /* 0C6AD8 7F091FA8 3C0C8008 */ lui $t4, %hi(pPlayer) /* 0C6ADC 7F091FAC E5400064 */ swc1 $f0, 0x64($t2) /* 0C6AE0 7F091FB0 8D8CA0B0 */ lw $t4, %lo(pPlayer)($t4) @@ -1255,7 +1280,7 @@ cheats_debug_unlocklevel: /* 0C6EE4 7F0923B4 00003025 */ move $a2, $zero /* 0C6EE8 7F0923B8 AFA30018 */ sw $v1, 0x18($sp) /* 0C6EEC 7F0923BC AFA5001C */ sw $a1, 0x1c($sp) -/* 0C6EF0 7F0923C0 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 0C6EF0 7F0923C0 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 0C6EF4 7F0923C4 AFA80020 */ sw $t0, 0x20($sp) /* 0C6EF8 7F0923C8 24010003 */ li $at, 3 /* 0C6EFC 7F0923CC 8FA30018 */ lw $v1, 0x18($sp) @@ -1378,7 +1403,7 @@ glabel finalamount .word 0x3d4ccccd /*0.050000001*/ .text -glabel sub_GAME_7F091B64 +glabel handle_cheats_turned_on /* 0C71B4 7F092644 00047100 */ sll $t6, $a0, 4 /* 0C71B8 7F092648 3C0F8004 */ lui $t7, %hi(D_8003F808) /* 0C71BC 7F09264C 01EE7821 */ addu $t7, $t7, $t6 @@ -1436,7 +1461,7 @@ cheats_cheat_invincibility: /* 0C727C 7F09270C 8FBF0014 */ lw $ra, 0x14($sp) /* 0C7280 7F092710 0FC30AA2 */ jal get_textptr_for_textID /* 0C7284 7F092714 3404B00F */ li $a0, 45071 -/* 0C7288 7F092718 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C7288 7F092718 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C728C 7F09271C 00402025 */ move $a0, $v0 /* 0C7290 7F092720 0FC229A0 */ jal set_bondata_invincible_flag /* 0C7294 7F092724 24040001 */ li $a0, 1 @@ -1449,7 +1474,7 @@ cheats_cheat_allguns: /* 0C72AC 7F09273C 8FBF0014 */ lw $ra, 0x14($sp) /* 0C72B0 7F092740 0FC30AA2 */ jal get_textptr_for_textID /* 0C72B4 7F092744 3404B010 */ li $a0, 45072 -/* 0C72B8 7F092748 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C72B8 7F092748 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C72BC 7F09274C 00402025 */ move $a0, $v0 /* 0C72C0 7F092750 0FC232CB */ jal set_BONDdata_allguns_flag /* 0C72C4 7F092754 24040001 */ li $a0, 1 @@ -1458,7 +1483,7 @@ cheats_cheat_allguns: cheats_cheat_max_ammo: /* 0C72D0 7F092760 0FC30AA2 */ jal get_textptr_for_textID /* 0C72D4 7F092764 3404B011 */ li $a0, 45073 -/* 0C72D8 7F092768 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C72D8 7F092768 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C72DC 7F09276C 00402025 */ move $a0, $v0 /* 0C72E0 7F092770 0FC1A637 */ jal set_max_ammo_for_cur_player /* 0C72E4 7F092774 00000000 */ nop @@ -1528,7 +1553,7 @@ cheats_cheat_2x_health: .Ljp7F09285C: /* 0C73CC 7F09285C 0FC30AA2 */ jal get_textptr_for_textID /* 0C73D0 7F092860 3404B012 */ li $a0, 45074 -/* 0C73D4 7F092864 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C73D4 7F092864 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C73D8 7F092868 00402025 */ move $a0, $v0 /* 0C73DC 7F09286C 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C73E0 7F092870 3C0F8008 */ lui $t7, %hi(pPlayer) # $t7, 0x8008 @@ -1559,7 +1584,7 @@ cheats_cheat_2x_armor: .Ljp7F0928D0: /* 0C7440 7F0928D0 0FC30AA2 */ jal get_textptr_for_textID /* 0C7444 7F0928D4 3404B013 */ li $a0, 45075 -/* 0C7448 7F0928D8 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C7448 7F0928D8 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C744C 7F0928DC 00402025 */ move $a0, $v0 /* 0C7450 7F0928E0 3C028008 */ lui $v0, %hi(pPlayer) # $v0, 0x8008 /* 0C7454 7F0928E4 2442A120 */ addiu $v0, %lo(pPlayer) # addiu $v0, $v0, -0x5ee0 @@ -1579,7 +1604,7 @@ cheats_cheat_invisibility: /* 0C7488 7F092918 8FBF0014 */ lw $ra, 0x14($sp) /* 0C748C 7F09291C 0FC30AA2 */ jal get_textptr_for_textID /* 0C7490 7F092920 3404B014 */ li $a0, 45076 -/* 0C7494 7F092924 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C7494 7F092924 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C7498 7F092928 00402025 */ move $a0, $v0 /* 0C749C 7F09292C 0FC229A8 */ jal set_invisible_to_guards_flag /* 0C74A0 7F092930 00002025 */ move $a0, $zero @@ -1588,16 +1613,16 @@ cheats_cheat_invisibility: cheats_cheat_infinite_ammo: /* 0C74AC 7F09293C 0FC30AA2 */ jal get_textptr_for_textID /* 0C74B0 7F092940 3404B016 */ li $a0, 45078 -/* 0C74B4 7F092944 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C74B4 7F092944 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C74B8 7F092948 00402025 */ move $a0, $v0 /* 0C74BC 7F09294C 10000197 */ b .Ljp7F092FAC /* 0C74C0 7F092950 8FBF0014 */ lw $ra, 0x14($sp) cheats_cheat_dk_mode: /* 0C74C4 7F092954 0FC30AA2 */ jal get_textptr_for_textID /* 0C74C8 7F092958 3404B017 */ li $a0, 45079 -/* 0C74CC 7F09295C 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C74CC 7F09295C 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C74D0 7F092960 00402025 */ move $a0, $v0 -/* 0C74D4 7F092964 0FC24CDD */ jal sub_GAME_7F0927F4 +/* 0C74D4 7F092964 0FC24CDD */ jal set_DKMode /* 0C74D8 7F092968 24040001 */ li $a0, 1 /* 0C74DC 7F09296C 1000018F */ b .Ljp7F092FAC /* 0C74E0 7F092970 8FBF0014 */ lw $ra, 0x14($sp) @@ -1648,15 +1673,15 @@ cheats_cheat_extra_weapons: /* 0C7590 7F092A20 8FBF0014 */ lw $ra, 0x14($sp) /* 0C7594 7F092A24 0FC30AA2 */ jal get_textptr_for_textID /* 0C7598 7F092A28 3404B018 */ li $a0, 45080 -/* 0C759C 7F092A2C 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C759C 7F092A2C 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C75A0 7F092A30 00402025 */ move $a0, $v0 /* 0C75A4 7F092A34 1000015D */ b .Ljp7F092FAC /* 0C75A8 7F092A38 8FBF0014 */ lw $ra, 0x14($sp) cheats_cheat_tiny_bond: /* 0C75AC 7F092A3C 24010001 */ li $at, 1 /* 0C75B0 7F092A40 14410159 */ bne $v0, $at, .Ljp7F092FA8 -/* 0C75B4 7F092A44 3C0B8008 */ lui $t3, %hi(cur_player_stat_ptr) # $t3, 0x8008 -/* 0C75B8 7F092A48 8D6BA124 */ lw $t3, %lo(cur_player_stat_ptr)($t3) +/* 0C75B4 7F092A44 3C0B8008 */ lui $t3, %hi(pPlayersPerm) # $t3, 0x8008 +/* 0C75B8 7F092A48 8D6BA124 */ lw $t3, %lo(pPlayersPerm)($t3) /* 0C75BC 7F092A4C 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C75C0 7F092A50 44818000 */ mtc1 $at, $f16 /* 0C75C4 7F092A54 C5720064 */ lwc1 $f18, 0x64($t3) @@ -1666,12 +1691,12 @@ cheats_cheat_tiny_bond: /* 0C75D4 7F092A64 8FBF0014 */ lw $ra, 0x14($sp) /* 0C75D8 7F092A68 0FC30AA2 */ jal get_textptr_for_textID /* 0C75DC 7F092A6C 3404B019 */ li $a0, 45081 -/* 0C75E0 7F092A70 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C75E0 7F092A70 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C75E4 7F092A74 00402025 */ move $a0, $v0 /* 0C75E8 7F092A78 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 0C75EC 7F092A7C 3C0A8008 */ lui $t2, %hi(cur_player_stat_ptr) # $t2, 0x8008 +/* 0C75EC 7F092A7C 3C0A8008 */ lui $t2, %hi(pPlayersPerm) # $t2, 0x8008 /* 0C75F0 7F092A80 44810000 */ mtc1 $at, $f0 -/* 0C75F4 7F092A84 8D4AA124 */ lw $t2, %lo(cur_player_stat_ptr)($t2) +/* 0C75F4 7F092A84 8D4AA124 */ lw $t2, %lo(pPlayersPerm)($t2) /* 0C75F8 7F092A88 3C0C8008 */ lui $t4, %hi(pPlayer) # $t4, 0x8008 /* 0C75FC 7F092A8C E5400064 */ swc1 $f0, 0x64($t2) /* 0C7600 7F092A90 8D8CA120 */ lw $t4, %lo(pPlayer)($t4) @@ -1688,7 +1713,7 @@ cheats_cheat_tiny_bond: cheats_cheat_paintball: /* 0C762C 7F092ABC 0FC30AA2 */ jal get_textptr_for_textID /* 0C7630 7F092AC0 3404B01A */ li $a0, 45082 -/* 0C7634 7F092AC4 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C7634 7F092AC4 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C7638 7F092AC8 00402025 */ move $a0, $v0 /* 0C763C 7F092ACC 10000137 */ b .Ljp7F092FAC /* 0C7640 7F092AD0 8FBF0014 */ lw $ra, 0x14($sp) @@ -1710,7 +1735,7 @@ cheats_cheat_10x_health: .Ljp7F092B0C: /* 0C767C 7F092B0C 0FC30AA2 */ jal get_textptr_for_textID /* 0C7680 7F092B10 3404B01B */ li $a0, 45083 -/* 0C7684 7F092B14 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C7684 7F092B14 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C7688 7F092B18 00402025 */ move $a0, $v0 /* 0C768C 7F092B1C 3C028008 */ lui $v0, %hi(pPlayer) # $v0, 0x8008 /* 0C7690 7F092B20 2442A120 */ addiu $v0, %lo(pPlayer) # addiu $v0, $v0, -0x5ee0 @@ -1798,7 +1823,7 @@ cheats_cheat_fast: /* 0C77BC 7F092C4C 8FBF0014 */ lw $ra, 0x14($sp) /* 0C77C0 7F092C50 0FC30AA2 */ jal get_textptr_for_textID /* 0C77C4 7F092C54 3404B01D */ li $a0, 45085 -/* 0C77C8 7F092C58 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C77C8 7F092C58 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C77CC 7F092C5C 00402025 */ move $a0, $v0 /* 0C77D0 7F092C60 0FC246C1 */ jal set_debug_fast_bond_flag /* 0C77D4 7F092C64 24040001 */ li $a0, 1 @@ -1825,7 +1850,7 @@ cheats_debug_fast_ani: /* 0C7820 7F092CB0 8FBF0014 */ lw $ra, 0x14($sp) /* 0C7824 7F092CB4 0FC30AA2 */ jal get_textptr_for_textID /* 0C7828 7F092CB8 3404B034 */ li $a0, 45108 -/* 0C782C 7F092CBC 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C782C 7F092CBC 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C7830 7F092CC0 00402025 */ move $a0, $v0 /* 0C7834 7F092CC4 3C014080 */ li $at, 0x40800000 # 4.000000 /* 0C7838 7F092CC8 44816000 */ mtc1 $at, $f12 @@ -1845,7 +1870,7 @@ cheats_debug_slow_ani: /* 0C786C 7F092CFC 8FBF0014 */ lw $ra, 0x14($sp) /* 0C7870 7F092D00 0FC30AA2 */ jal get_textptr_for_textID /* 0C7874 7F092D04 3404B032 */ li $a0, 45106 -/* 0C7878 7F092D08 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0C7878 7F092D08 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0C787C 7F092D0C 00402025 */ move $a0, $v0 /* 0C7880 7F092D10 3C013E80 */ li $at, 0x3E800000 # 0.250000 /* 0C7884 7F092D14 44816000 */ mtc1 $at, $f12 @@ -1997,7 +2022,7 @@ cheats_debug_unlocklevel: /* 0C7AA4 7F092F34 00003025 */ move $a2, $zero /* 0C7AA8 7F092F38 AFA30018 */ sw $v1, 0x18($sp) /* 0C7AAC 7F092F3C AFA5001C */ sw $a1, 0x1c($sp) -/* 0C7AB0 7F092F40 0FC0791C */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 0C7AB0 7F092F40 0FC0791C */ jal isStageUnlockedAtDifficulty /* 0C7AB4 7F092F44 AFA80020 */ sw $t0, 0x20($sp) /* 0C7AB8 7F092F48 24010003 */ li $at, 3 /* 0C7ABC 7F092F4C 8FA30018 */ lw $v1, 0x18($sp) @@ -2040,7 +2065,7 @@ cheats_debug_return_saved_ra: #ifdef NONMATCHING -void sub_GAME_7F092438(void) { +void cheatDisplayMessageActivateCheat(void) { } #else @@ -2125,7 +2150,7 @@ glabel jpt_800573DC /*.word cheat_button_default*/ .text -glabel sub_GAME_7F092438 +glabel cheatDisplayMessageActivateCheat /* 0C6F68 7F092438 00047100 */ sll $t6, $a0, 4 /* 0C6F6C 7F09243C 3C0F8004 */ lui $t7, %hi(D_8003F808) /* 0C6F70 7F092440 01EE7821 */ addu $t7, $t7, $t6 @@ -2224,15 +2249,15 @@ cheat_button_dkmode: /* 0C70C4 7F092594 3404B023 */ li $a0, 45091 /* 0C70C8 7F092598 0FC228F2 */ jal display_string_in_lower_left_corner /* 0C70CC 7F09259C 00402025 */ move $a0, $v0 -/* 0C70D0 7F0925A0 0FC249FD */ jal sub_GAME_7F0927F4 +/* 0C70D0 7F0925A0 0FC249FD */ jal set_DKMode /* 0C70D4 7F0925A4 00002025 */ move $a0, $zero /* 0C70D8 7F0925A8 10000042 */ b .L7F0926B4 /* 0C70DC 7F0925AC 8FBF0014 */ lw $ra, 0x14($sp) cheat_button_unknown_0: /* 0C70E0 7F0925B0 24010001 */ li $at, 1 /* 0C70E4 7F0925B4 1441003E */ bne $v0, $at, .L7F0926B0 -/* 0C70E8 7F0925B8 3C188008 */ lui $t8, %hi(cur_player_stat_ptr) -/* 0C70EC 7F0925BC 8F18A0B4 */ lw $t8, %lo(cur_player_stat_ptr)($t8) +/* 0C70E8 7F0925B8 3C188008 */ lui $t8, %hi(pPlayersPerm) +/* 0C70EC 7F0925BC 8F18A0B4 */ lw $t8, %lo(pPlayersPerm)($t8) /* 0C70F0 7F0925C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C70F4 7F0925C4 44812000 */ mtc1 $at, $f4 /* 0C70F8 7F0925C8 C7060064 */ lwc1 $f6, 0x64($t8) @@ -2245,8 +2270,8 @@ cheat_button_unknown_0: /* 0C7114 7F0925E4 0FC228F2 */ jal display_string_in_lower_left_corner /* 0C7118 7F0925E8 00402025 */ move $a0, $v0 /* 0C711C 7F0925EC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C7120 7F0925F0 3C198008 */ lui $t9, %hi(cur_player_stat_ptr) -/* 0C7124 7F0925F4 8F39A0B4 */ lw $t9, %lo(cur_player_stat_ptr)($t9) +/* 0C7120 7F0925F0 3C198008 */ lui $t9, %hi(pPlayersPerm) +/* 0C7124 7F0925F4 8F39A0B4 */ lw $t9, %lo(pPlayersPerm)($t9) /* 0C7128 7F0925F8 44814000 */ mtc1 $at, $f8 /* 0C712C 7F0925FC 3C088008 */ lui $t0, %hi(pPlayer) /* 0C7130 7F092600 E7280064 */ swc1 $f8, 0x64($t9) @@ -2387,7 +2412,7 @@ glabel jpt_800573DC /*.word cheat_button_default*/ .text -glabel sub_GAME_7F092438 +glabel cheatDisplayMessageActivateCheat /* 0C6F68 7F092438 00047100 */ sll $t6, $a0, 4 /* 0C6F6C 7F09243C 3C0F8004 */ lui $t7, %hi(D_8003F808) /* 0C6F70 7F092440 01EE7821 */ addu $t7, $t7, $t6 @@ -2437,7 +2462,7 @@ cheat_button_invincibility: /* 0C7014 7F0924E4 8FBF0014 */ lw $ra, 0x14($sp) /* 0C7018 7F0924E8 0FC30776 */ jal get_textptr_for_textID /* 0C701C 7F0924EC 3404B01E */ li $a0, 45086 -/* 0C7020 7F0924F0 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C7020 7F0924F0 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C7024 7F0924F4 00402025 */ move $a0, $v0 /* 0C7028 7F0924F8 0FC227D2 */ jal set_bondata_invincible_flag /* 0C702C 7F0924FC 00002025 */ move $a0, $zero @@ -2450,7 +2475,7 @@ cheat_button_all_guns: /* 0C7044 7F092514 8FBF0014 */ lw $ra, 0x14($sp) /* 0C7048 7F092518 0FC30776 */ jal get_textptr_for_textID /* 0C704C 7F09251C 3404B01F */ li $a0, 45087 -/* 0C7050 7F092520 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C7050 7F092520 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C7054 7F092524 00402025 */ move $a0, $v0 /* 0C7058 7F092528 0FC230A7 */ jal set_BONDdata_allguns_flag /* 0C705C 7F09252C 00002025 */ move $a0, $zero @@ -2468,7 +2493,7 @@ cheat_button_unknown: /* 0C7084 7F092554 8FBF0014 */ lw $ra, 0x14($sp) /* 0C7088 7F092558 0FC30776 */ jal get_textptr_for_textID /* 0C708C 7F09255C 3404B020 */ li $a0, 45088 -/* 0C7090 7F092560 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C7090 7F092560 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C7094 7F092564 00402025 */ move $a0, $v0 /* 0C7098 7F092568 0FC227DA */ jal set_invisible_to_guards_flag /* 0C709C 7F09256C 24040001 */ li $a0, 1 @@ -2477,24 +2502,24 @@ cheat_button_unknown: cheat_button_infinite_ammo: /* 0C70A8 7F092578 0FC30776 */ jal get_textptr_for_textID /* 0C70AC 7F09257C 3404B022 */ li $a0, 45090 -/* 0C70B0 7F092580 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C70B0 7F092580 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C70B4 7F092584 00402025 */ move $a0, $v0 /* 0C70B8 7F092588 1000004A */ b .L7F0926B4 /* 0C70BC 7F09258C 8FBF0014 */ lw $ra, 0x14($sp) cheat_button_dkmode: /* 0C70C0 7F092590 0FC30776 */ jal get_textptr_for_textID /* 0C70C4 7F092594 3404B023 */ li $a0, 45091 -/* 0C70C8 7F092598 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C70C8 7F092598 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C70CC 7F09259C 00402025 */ move $a0, $v0 -/* 0C70D0 7F0925A0 0FC249FD */ jal sub_GAME_7F0927F4 +/* 0C70D0 7F0925A0 0FC249FD */ jal set_DKMode /* 0C70D4 7F0925A4 00002025 */ move $a0, $zero /* 0C70D8 7F0925A8 10000042 */ b .L7F0926B4 /* 0C70DC 7F0925AC 8FBF0014 */ lw $ra, 0x14($sp) cheat_button_unknown_0: /* 0C70E0 7F0925B0 24010001 */ li $at, 1 /* 0C70E4 7F0925B4 1441003E */ bne $v0, $at, .L7F0926B0 -/* 0C70E8 7F0925B8 3C188008 */ lui $t8, %hi(cur_player_stat_ptr) -/* 0C70EC 7F0925BC 8F18A0B4 */ lw $t8, %lo(cur_player_stat_ptr)($t8) +/* 0C70E8 7F0925B8 3C188008 */ lui $t8, %hi(pPlayersPerm) +/* 0C70EC 7F0925BC 8F18A0B4 */ lw $t8, %lo(pPlayersPerm)($t8) /* 0C70F0 7F0925C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C70F4 7F0925C4 44812000 */ mtc1 $at, $f4 /* 0C70F8 7F0925C8 C7060064 */ lwc1 $f6, 0x64($t8) @@ -2504,11 +2529,11 @@ cheat_button_unknown_0: /* 0C7108 7F0925D8 8FBF0014 */ lw $ra, 0x14($sp) /* 0C710C 7F0925DC 0FC30776 */ jal get_textptr_for_textID /* 0C7110 7F0925E0 3404B024 */ li $a0, 45092 -/* 0C7114 7F0925E4 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C7114 7F0925E4 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C7118 7F0925E8 00402025 */ move $a0, $v0 /* 0C711C 7F0925EC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C7120 7F0925F0 3C198008 */ lui $t9, %hi(cur_player_stat_ptr) -/* 0C7124 7F0925F4 8F39A0B4 */ lw $t9, %lo(cur_player_stat_ptr)($t9) +/* 0C7120 7F0925F0 3C198008 */ lui $t9, %hi(pPlayersPerm) +/* 0C7124 7F0925F4 8F39A0B4 */ lw $t9, %lo(pPlayersPerm)($t9) /* 0C7128 7F0925F8 44814000 */ mtc1 $at, $f8 /* 0C712C 7F0925FC 3C088008 */ lui $t0, %hi(pPlayer) /* 0C7130 7F092600 E7280064 */ swc1 $f8, 0x64($t9) @@ -2526,7 +2551,7 @@ cheat_button_unknown_0: cheat_button_paintball: /* 0C7160 7F092630 0FC30776 */ jal get_textptr_for_textID /* 0C7164 7F092634 3404B025 */ li $a0, 45093 -/* 0C7168 7F092638 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C7168 7F092638 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C716C 7F09263C 00402025 */ move $a0, $v0 /* 0C7170 7F092640 1000001C */ b .L7F0926B4 /* 0C7174 7F092644 8FBF0014 */ lw $ra, 0x14($sp) @@ -2546,7 +2571,7 @@ cheat_button_fast_mode: /* 0C71A4 7F092674 8FBF0014 */ lw $ra, 0x14($sp) /* 0C71A8 7F092678 0FC30776 */ jal get_textptr_for_textID /* 0C71AC 7F09267C 3404B027 */ li $a0, 45095 -/* 0C71B0 7F092680 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 0C71B0 7F092680 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 0C71B4 7F092684 00402025 */ move $a0, $v0 /* 0C71B8 7F092688 0FC24409 */ jal set_debug_fast_bond_flag /* 0C71BC 7F09268C 00002025 */ move $a0, $zero @@ -2575,7 +2600,7 @@ cheat_button_default: #ifdef NONMATCHING -void sub_GAME_7F0926C0(void) { +void cheatDisableAllCheats(void) { s32 sp30; s32 temp_s4; s32 temp_s0; @@ -2601,10 +2626,10 @@ loop_3: if ((phi_s1->unk-4 & 0x40) != 0) { // Node 4 - if (sub_GAME_7F0927BC(phi_s0) != 0) + if (cheatCheckIfOn(phi_s0) != 0) { // Node 5 - sub_GAME_7F092438(phi_s0); + cheatDisplayMessageActivateCheat(phi_s0); } } // Node 6 @@ -2652,7 +2677,7 @@ GLOBAL_ASM( /*.word cheat_button_default*/ /*.word cheat_button_default*/ .text -glabel sub_GAME_7F0926C0 +glabel cheatDisableAllCheats /* 0C71F0 7F0926C0 27BDFFC8 */ addiu $sp, $sp, -0x38 /* 0C71F4 7F0926C4 AFBF002C */ sw $ra, 0x2c($sp) /* 0C71F8 7F0926C8 AFB40028 */ sw $s4, 0x28($sp) @@ -2678,11 +2703,11 @@ glabel sub_GAME_7F0926C0 /* 0C7240 7F092710 31CF0040 */ andi $t7, $t6, 0x40 /* 0C7244 7F092714 51E00008 */ beql $t7, $zero, .L7F092738 /* 0C7248 7F092718 26100001 */ addiu $s0, $s0, 1 -/* 0C724C 7F09271C 0FC249EF */ jal sub_GAME_7F0927BC +/* 0C724C 7F09271C 0FC249EF */ jal cheatCheckIfOn /* 0C7250 7F092720 02002025 */ move $a0, $s0 /* 0C7254 7F092724 50400004 */ beql $v0, $zero, .L7F092738 /* 0C7258 7F092728 26100001 */ addiu $s0, $s0, 1 -/* 0C725C 7F09272C 0FC2490E */ jal sub_GAME_7F092438 +/* 0C725C 7F09272C 0FC2490E */ jal cheatDisplayMessageActivateCheat /* 0C7260 7F092730 02002025 */ move $a0, $s0 /* 0C7264 7F092734 26100001 */ addiu $s0, $s0, 1 .L7F092738: @@ -2710,7 +2735,7 @@ glabel sub_GAME_7F0926C0 #ifdef NONMATCHING -void sub_GAME_7F092774(void) { +void cheatGetMenuTextPointer(void) { } #else @@ -2726,7 +2751,7 @@ GLOBAL_ASM( /*.word cheat_button_default*/ /*.word cheat_button_default*/ .text -glabel sub_GAME_7F092774 +glabel cheatGetMenuTextPointer /* 0C72A4 7F092774 00047100 */ sll $t6, $a0, 4 /* 0C72A8 7F092778 3C028004 */ lui $v0, %hi(D_8003F804) /* 0C72AC 7F09277C 004E1021 */ addu $v0, $v0, $t6 @@ -2755,7 +2780,7 @@ glabel sub_GAME_7F092774 #ifdef NONMATCHING -void sub_GAME_7F0927BC(void) { +void cheatCheckIfOn(void) { } #else @@ -2767,7 +2792,7 @@ GLOBAL_ASM( .word cheat_button_default .text -glabel sub_GAME_7F0927BC +glabel cheatCheckIfOn /* 0C72EC 7F0927BC 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0C72F0 7F0927C0 AFBF0014 */ sw $ra, 0x14($sp) /* 0C72F4 7F0927C4 0FC26C54 */ jal get_cur_playernum @@ -2790,7 +2815,7 @@ glabel sub_GAME_7F0927BC #ifdef NONMATCHING -void sub_GAME_7F0927F4(void) { +void set_DKMode(void) { } #else @@ -2800,7 +2825,7 @@ GLOBAL_ASM( glabel D_80057504 .word 0x3f4ccccd /*0.80000001*/ .text -glabel sub_GAME_7F0927F4 +glabel set_DKMode /* 0C7324 7F0927F4 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 0C7328 7F0927F8 AFB10024 */ sw $s1, 0x24($sp) /* 0C732C 7F0927FC AFBF002C */ sw $ra, 0x2c($sp) @@ -2853,7 +2878,7 @@ GLOBAL_ASM( glabel D_80057504 .word 0x3f4ccccd /*0.80000001*/ .text -glabel sub_GAME_7F0927F4 +glabel set_DKMode /* 0C7EE4 7F093374 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 0C7EE8 7F093378 AFB00020 */ sw $s0, 0x20($sp) /* 0C7EEC 7F09337C AFBF002C */ sw $ra, 0x2c($sp) diff --git a/src/game/chr.c b/src/game/chr.c index cbde88a..c5edaa5 100644 --- a/src/game/chr.c +++ b/src/game/chr.c @@ -1970,8 +1970,8 @@ glabel sub_GAME_7F01FC10 /* 05478C 7F01FC5C 1721002C */ bne $t9, $at, .L7F01FD10 /* 054790 7F01FC60 00000000 */ nop /* 054794 7F01FC64 C6020038 */ lwc1 $f2, 0x38($s0) -/* 054798 7F01FC68 3C028005 */ lui $v0, %hi(D_jpunk) -/* 05479C 7F01FC6C 24428378 */ addiu $v0, %lo(D_jpunk) # addiu $v0, $v0, -0x7c88 +/* 054798 7F01FC68 3C028005 */ lui $v0, %hi(jp_global_timer_delta) +/* 05479C 7F01FC6C 24428378 */ addiu $v0, %lo(jp_global_timer_delta) # addiu $v0, $v0, -0x7c88 /* 0547A0 7F01FC70 4602603C */ c.lt.s $f12, $f2 /* 0547A4 7F01FC74 00000000 */ nop /* 0547A8 7F01FC78 45000025 */ bc1f .L7F01FD10 @@ -2819,8 +2819,8 @@ glabel sub_GAME_7F0205F0 /* 055134 7F020604 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 055138 7F020608 44811000 */ mtc1 $at, $f2 /* 05513C 7F02060C 46803220 */ cvt.s.w $f8, $f6 -/* 055140 7F020610 3C018005 */ lui $at, %hi(D_jpunk) -/* 055144 7F020614 C4248378 */ lwc1 $f4, %lo(D_jpunk)($at) +/* 055140 7F020610 3C018005 */ lui $at, %hi(jp_global_timer_delta) +/* 055144 7F020614 C4248378 */ lwc1 $f4, %lo(jp_global_timer_delta)($at) /* 055148 7F020618 46082003 */ div.s $f0, $f4, $f8 /* 05514C 7F02061C 4600103C */ c.lt.s $f2, $f0 /* 055150 7F020620 00000000 */ nop @@ -3081,7 +3081,7 @@ glabel sub_GAME_7F02083C /* 055380 7F020850 AFA5009C */ sw $a1, 0x9c($sp) /* 055384 7F020854 AFA60098 */ sw $a2, 0x98($sp) /* 055388 7F020858 2404000C */ li $a0, 12 -/* 05538C 7F02085C 0FC249EF */ jal sub_GAME_7F0927BC +/* 05538C 7F02085C 0FC249EF */ jal cheatCheckIfOn /* 055390 7F020860 E7A40094 */ swc1 $f4, 0x94($sp) /* 055394 7F020864 1040000E */ beqz $v0, .L7F0208A0 /* 055398 7F020868 8FA60098 */ lw $a2, 0x98($sp) @@ -3463,7 +3463,7 @@ glabel sub_GAME_7F02083C /* 055630 7F020AC0 AFA5009C */ sw $a1, 0x9c($sp) /* 055634 7F020AC4 AFA70098 */ sw $a3, 0x98($sp) /* 055638 7F020AC8 2404000C */ li $a0, 12 -/* 05563C 7F020ACC 0FC24CCF */ jal sub_GAME_7F0927BC +/* 05563C 7F020ACC 0FC24CCF */ jal cheatCheckIfOn /* 055640 7F020AD0 E7A40094 */ swc1 $f4, 0x94($sp) /* 055644 7F020AD4 1040001C */ beqz $v0, .L7F020B48 /* 055648 7F020AD8 8FA70098 */ lw $a3, 0x98($sp) @@ -4355,7 +4355,7 @@ glabel sub_GAME_7F020EF0 /* 055F78 7F021448 A04F0001 */ sb $t7, 1($v0) /* 055F7C 7F02144C 8E0E0014 */ lw $t6, 0x14($s0) /* 055F80 7F021450 35C90008 */ ori $t1, $t6, 8 -/* 055F84 7F021454 0FC249EF */ jal sub_GAME_7F0927BC +/* 055F84 7F021454 0FC249EF */ jal cheatCheckIfOn /* 055F88 7F021458 AE090014 */ sw $t1, 0x14($s0) /* 055F8C 7F02145C 10400004 */ beqz $v0, .L7F021470 /* 055F90 7F021460 3C013EA0 */ li $at, 0x3EA00000 # 0.312500 @@ -5207,7 +5207,7 @@ glabel sub_GAME_7F020EF0 /* 056250 7F0216E0 A04F0001 */ sb $t7, 1($v0) /* 056254 7F0216E4 8E0E0014 */ lw $t6, 0x14($s0) /* 056258 7F0216E8 35C90008 */ ori $t1, $t6, 8 -/* 05625C 7F0216EC 0FC24CCF */ jal sub_GAME_7F0927BC +/* 05625C 7F0216EC 0FC24CCF */ jal cheatCheckIfOn /* 056260 7F0216F0 AE090014 */ sw $t1, 0x14($s0) /* 056264 7F0216F4 10400018 */ beqz $v0, .Ljp7F021758 /* 056268 7F0216F8 00000000 */ nop @@ -6003,8 +6003,8 @@ glabel sub_GAME_7F021BFC /* 056A04 7F021ED4 AFA300A4 */ sw $v1, 0xa4($sp) /* 056A08 7F021ED8 AFB800A0 */ sw $t8, 0xa0($sp) .L7F021EDC: -/* 056A0C 7F021EDC 3C028008 */ lui $v0, %hi(cur_player_stat_ptr) -/* 056A10 7F021EE0 8C42A0B4 */ lw $v0, %lo(cur_player_stat_ptr)($v0) +/* 056A0C 7F021EDC 3C028008 */ lui $v0, %hi(pPlayersPerm) +/* 056A10 7F021EE0 8C42A0B4 */ lw $v0, %lo(pPlayersPerm)($v0) /* 056A14 7F021EE4 27A40070 */ addiu $a0, $sp, 0x70 /* 056A18 7F021EE8 8C590034 */ lw $t9, 0x34($v0) /* 056A1C 7F021EEC 272D0001 */ addiu $t5, $t9, 1 diff --git a/src/game/chr2.c b/src/game/chr2.c index 1d5d4be..960d36b 100644 --- a/src/game/chr2.c +++ b/src/game/chr2.c @@ -81,7 +81,7 @@ glabel maybe_load_models_for_guards /* 057E68 7F023338 AFA0002C */ sw $zero, 0x2c($sp) /* 057E6C 7F02333C 2404000C */ li $a0, 12 /* 057E70 7F023340 AFA20024 */ sw $v0, 0x24($sp) -/* 057E74 7F023344 0FC249EF */ jal sub_GAME_7F0927BC +/* 057E74 7F023344 0FC249EF */ jal cheatCheckIfOn /* 057E78 7F023348 E7AA0030 */ swc1 $f10, 0x30($sp) /* 057E7C 7F02334C 10400005 */ beqz $v0, .L7F023364 /* 057E80 7F023350 C7B00034 */ lwc1 $f16, 0x34($sp) @@ -217,7 +217,7 @@ glabel maybe_load_models_for_guards /* 058198 7F023628 AFA0002C */ sw $zero, 0x2c($sp) /* 05819C 7F02362C 2404000C */ li $a0, 12 /* 0581A0 7F023630 AFA20024 */ sw $v0, 0x24($sp) -/* 0581A4 7F023634 0FC24CCF */ jal sub_GAME_7F0927BC +/* 0581A4 7F023634 0FC24CCF */ jal cheatCheckIfOn /* 0581A8 7F023638 E7AA0030 */ swc1 $f10, 0x30($sp) /* 0581AC 7F02363C 10400009 */ beqz $v0, .Ljp7F023664 /* 0581B0 7F023640 8FA40038 */ lw $a0, 0x38($sp) @@ -11938,8 +11938,8 @@ glabel sub_GAME_7F02C2B0 /* 060E20 7F02C2F0 3C018005 */ lui $at, %hi(D_80051EA0) /* 060E24 7F02C2F4 C4241EA0 */ lwc1 $f4, %lo(D_80051EA0)($at) /* 060E28 7F02C2F8 C7A6003C */ lwc1 $f6, 0x3c($sp) -/* 060E2C 7F02C2FC 3C018005 */ lui $at, %hi(D_jpunk) -/* 060E30 7F02C300 C42A8378 */ lwc1 $f10, %lo(D_jpunk)($at) +/* 060E2C 7F02C2FC 3C018005 */ lui $at, %hi(jp_global_timer_delta) +/* 060E30 7F02C300 C42A8378 */ lwc1 $f10, %lo(jp_global_timer_delta)($at) /* 060E34 7F02C304 46062202 */ mul.s $f8, $f4, $f6 /* 060E38 7F02C308 8FAF002C */ lw $t7, 0x2c($sp) /* 060E3C 7F02C30C 8FA70030 */ lw $a3, 0x30($sp) @@ -13572,9 +13572,9 @@ glabel sub_GAME_7F02D2E4 /* 061F48 7F02D418 44816000 */ mtc1 $at, $f12 /* 061F4C 7F02D41C 3C018005 */ lui $at, %hi(D_80051F58) /* 061F50 7F02D420 C4241F58 */ lwc1 $f4, %lo(D_80051F58)($at) -/* 061F54 7F02D424 3C018005 */ lui $at, %hi(D_jpunk) +/* 061F54 7F02D424 3C018005 */ lui $at, %hi(jp_global_timer_delta) /* 061F58 7F02D428 4600603C */ c.lt.s $f12, $f0 -/* 061F5C 7F02D42C C4268378 */ lwc1 $f6, %lo(D_jpunk)($at) +/* 061F5C 7F02D42C C4268378 */ lwc1 $f6, %lo(jp_global_timer_delta)($at) /* 061F60 7F02D430 8FB90060 */ lw $t9, 0x60($sp) /* 061F64 7F02D434 46062082 */ mul.s $f2, $f4, $f6 /* 061F68 7F02D438 45020005 */ bc1fl .L7F02D450 @@ -14198,7 +14198,7 @@ glabel sub_GAME_7F02D734 /* 062794 7F02DC64 24050056 */ li $a1, 86 /* 062798 7F02DC68 1040016E */ beqz $v0, .L7F02E224 /* 06279C 7F02DC6C AFA20208 */ sw $v0, 0x208($sp) -/* 0627A0 7F02DC70 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0627A0 7F02DC70 0FC15FF4 */ jal reset_array_of_0x10_floats /* 0627A4 7F02DC74 27A401C8 */ addiu $a0, $sp, 0x1c8 /* 0627A8 7F02DC78 C7AC024C */ lwc1 $f12, 0x24c($sp) /* 0627AC 7F02DC7C 0FC1615C */ jal sub_GAME_7F058570 @@ -14313,7 +14313,7 @@ glabel sub_GAME_7F02D734 /* 062954 7F02DE24 24050057 */ li $a1, 87 /* 062958 7F02DE28 104000FE */ beqz $v0, .L7F02E224 /* 06295C 7F02DE2C AFA20128 */ sw $v0, 0x128($sp) -/* 062960 7F02DE30 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 062960 7F02DE30 0FC15FF4 */ jal reset_array_of_0x10_floats /* 062964 7F02DE34 27A400E8 */ addiu $a0, $sp, 0xe8 /* 062968 7F02DE38 3C018005 */ lui $at, %hi(D_80051F6C) /* 06296C 7F02DE3C C4201F6C */ lwc1 $f0, %lo(D_80051F6C)($at) diff --git a/src/game/chrai.c b/src/game/chrai.c index 83a3ee2..f23f366 100644 --- a/src/game/chrai.c +++ b/src/game/chrai.c @@ -2,7 +2,9 @@ #include "bondgame.h" #include "game/chr.h" #include "game/chrai.h" - +#include "snd.h" +#include "music.h" +#include "game/lvl_text.h" // bss //CODE.bss:80069B70 struct sfx_register_struct sfx_related[8]; @@ -90,14 +92,10 @@ u32 dword_CODE_bss_80071DF8; //CODE.bss:80071DFC u32 dword_CODE_bss_80071DFC; //CODE.bss:80071E00 -u32 dword_CODE_bss_80071E00; -//CODE.bss:80071E04 -u32 dword_CODE_bss_80071E04; -//CODE.bss:80071E08 -char dword_CODE_bss_80071E08[0x70]; +char temp_mine_table[0x78]; //CODE.bss:80071E78 -u32 gas_damage_flag; +f32 gas_damage_flag; //CODE.bss:80071E7C u32 gas_cutoff_flag; //CODE.bss:80071E80 @@ -148,7 +146,7 @@ void * ptr_setup_path_link; //CODE.bss:80075D08 void * ptr_setup_intro; //CODE.bss:80075D0C -void * ptr_setup_objects; +struct object_standard * ptr_setup_objects; //CODE.bss:80075D10 void * ptr_setup_path_sets; //CODE.bss:80075D14 @@ -186,447 +184,6 @@ s32 D_80030AB0 = 0; s32 D_80030AB4 = 0; s32 D_80030AB8 = 0; s32 D_80030ABC = 0; -s32 alarm_timer = 0; -s32 *ptr_alarm_sfx = 0; -f32 toxic_gas_sound_timer = 0.0; -s32 activate_gas_sound_timer = FALSE; -f32 D_80030AD0 = 0.0; -f32 D_80030AD4 = 0.0; -f32 D_80030AD8 = 0.0; -s32 D_80030ADC = 0; -s32 D_80030AE0 = 0; -s32 D_80030AE4 = 0; -s32 clock_drawn_flag = 1; -s32 clock_enable = 0; -f32 clock_time = 0; -s32 D_80030AF4 = 0; -s32 D_80030AF8 = 0; -s32 D_80030AFC = 0; -s32 D_80030B00 = 0; -s32 D_80030B04 = 0; -s32 D_80030B08 = 0; -s32 D_80030B0C = 0; -s32 bodypartshot = 0xFFFFFFFF; -f32 D_80030B14 = 1.0; -f32 D_80030B18 = 1.0; -f32 D_80030B1C = 1.0; -f32 D_80030B20 = 1.0; -f32 D_80030B24 = 1.0; -f32 solo_ammo_multiplier = 1.0; -s16 Throwing_knife_SFX[] = {0x5F, 0x60, 0x61}; - -u32 D_80030B34[] = { - 0, 1, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 -}; -//80030b74 -u32 monitor_animation_microcode[] = { - 7, 0, 1, 0x400, 0x14, 8, 0x14, 2, - 0x400, 0x14, 0xD, 0xFF, 0x14, 8, 0x14, 5, - 0x200, 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, - 8, 0x14, 5, 0x400, 0x14, 6, 0x400, 0x14, - 8, 0x14, 0xB -}; - -u32 D_80030C00[] = { - 7, 0xC, 1, 0x400, 0x14, - 8, 0x14, 2, 0x400, 0x14, 0xD, 0xFF, 0x14, - 8, 0x14, 5, 0x200, 0x14, 6, 0x200, 0x14, - 0xD,0xFFFFFFFF, 0x14, 8, 0x14, 5, 0x400, 0x14, - 6, 0x400, 0x14, 8, 0x14, 7, 0xD, 1, - 0x400, 0x14, 8, 0x14, 2, 0x400, 0x14, 0xD, - 0xFF, 0x14, 8, 0x14, 5, 0x200, 0x14, 6, - 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, 8, 0x14, 5, - 0x400, 0x14, 6, 0x400, 0x14, 8, 0x14, 7, - 0xE, 1, 0x400, 0x14, 8, 0x14, 2, 0x400, - 0x14, 0xD, 0xFF, 0x14, 8, 0x14, 5, 0x200, - 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, 8, - 0x14, 5, 0x400, 0x14, 6, 0x400, 0x14, 8, - 0x14, 7, 0xF, 1, 0x400, 0x14, 8, 0x14, - 2, 0x400, 0x14, 0xD, 0xFF, 0x14, 8, 0x14, - 5, 0x200, 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, - 0x14, 8, 0x14, 5, 0x400, 0x14, 6, 0x400, - 0x14, 8, 0x14, 0xB, -}; - -u32 D_80030E24[] = { - 7, 0x11, 8, 0x50, - 7, 0x12, 8, 0x50, 7, 0x13, 8, 0x50, - 7, 0x14, 8, 0x50, 7, 0x15, 8, 0x50, - 7, 0x16, 8, 0x50, 7, 0x17, 8, 0x50, - 7, 0x18, 8, 0x50, 7, 0x19, 8, 0x50, - 7, 0x1A, 8, 0x50, 0xB, -}; - -u32 D_80030EC8[] = { - 7, 7, 8, - 0x50, 7, 8, 8, 0x50, 7, 9, 8, - 0x50, 7, 0xC, 8, 0x50, 7, 0xD, 8, - 0x50, 8, 0x50, 7, 0x19, 8, 0x50, 7, - 0x14, 8, 0x50, 0xB -}; - -u32 D_80030F44[] = { - 0xD,0x202020FF, 1, 7, 0x1C, 1, 0x800, 0x78, - 8, 0x78, 5, 0x100, 1, 6, 0x200, 0x3C, - 1,0xFFFFE000, 0x78, 8, 0x78, 5, 0x400, 1, - 6, 0x400, 0x3C, 6, 0x400, 0x3C, 1, 0x800, - 0x78, 8, 0x78, 5, 0x80, 1, 6, 0x800, - 0x3C, 6, 0x400, 0x78, 2, 0x400, 0x3C, 1, - 0x200, 0x78, 8, 0x78, 0xB -}; - -u32 D_80031018[] = { - 0xD, 0x202020FF, 1, 7, 0x1C, 5, 0x80, 1, 6, 0x800, 0x3C, 6, 0x400, 0x78, - 2, 0x400, 0xA, 1, 0x200, 0x28, 8, 0x78, 0xB -}; - -u32 D_80031074[] = { - 7, 0x1D, 0xD, 0x8000FF, 1, 2, 0xFFFFFE00, 0x50, 8, 0x78, 2, 0xFFFFFF00, - 0x14, 8, 0x78, 2, 0xFFFFFF80, 0xA, 8, 0x28, 2, 0xFFFFFE00, 0x28, 8, 0x3C, - 2, 0xFFFFFFC0, 0x1E, 8, 0x78, 0xB -}; - -u32 D_800310F0[] = { - 7, 0x1D, 0xD, 0x280000FF, 1, 2, 0x200, 0x50, 8, 0x78, 2, 0x100, 0x14, - 8, 0x78, 2, 0x80, 0xA, 8, 0x28, 2, 0x200, 0x28, 8, 0x3C, 2, 0x40, 0x1E, - 8, 0x78, 2, 0x100, 0x14, 8, 0x78, 2, 0x80, 0xA, 0xB -}; - -u32 D_8003118C[] = { - 7, 0x1D, 0xD, 0x3C00FF, 1, 2, 0x200, 0x50, 8, 0x78, 2, 0x80, 0xA, 8, - 0x28, 2, 0x100, 0x14, 8, 0x78, 2, 0x80, 0xA, 8, 0x28, 2, 0x200, 0x28, - 8, 0x3C, 2, 0x40, 0x1E, 8, 0x78, 0xB -}; - -u32 D_8003121C[] = { - 7, 0x1E, 0xD, 0x404000FF, 1, 1, 0x280, 1, 8, 0xA, 0xB -}; - -u32 D_80031248[] = { - 7, 0x1E, 0xD, 0x4040FF, 1, 1, 0x280, 1, 8, 0xA, 0xB -}; - -u32 D_80031274[] = { - 7, 0x1E, 0xD,0x406440FF, 1, 1,0xFFFFFD80, - 1, 8, 0xA, 0xB -}; - -u32 D_800312A0[] = { - 0xD, 0xAFF0AFE, 0x14, 9, &D_800312C8 -}; - -u32 D_800312B4[] = { - 0xD, 0xA640AFE, 0x14, 9, (u32)&D_800312C8 -}; - -u32 D_800312C8[] = { - 0xF, 0xB6, 8, 1, 0xA, &D_800312A0, 0x51E, 0xA, &D_800312B4, 0x147A, 0xB -}; - -u32 D_800312F4[] = { - 7, 0x30, 0xD, 0xA960AFE, 1, 9, &D_800312B4 -}; - -u32 D_80031310[] = { - 7, 0x10, 0xD, 0x303080FF, 0x1E, 8, 5, 7, 0x2D, 8, 5, 7, 0x2E, 8, 5, 7, 0x2F, 8, 5, 0xB -}; - -u32 D_80031360[] = { - 7, 0x2C, 0xD,0x308030FF, 0x1E, 1,0xFFFFFC00, 0x400, - 8, 0x5A0, 3, 0x288, 0x168, 4, 0x3AA, 0x168, - 5, 0x80, 0x12C, 6, 0x80, 0x12C, 0xD, 0xFF, - 0x3C, 8, 0x3C, 0xD,0x808080FF, 0xA, 8, 0x5A, - 0xD,0x38C838FF, 0x1E, 8, 0x1E, 0xD,0x803838FF, 0x3C, - 8, 0x3C, 0xD,0x808080FF, 0x3C, 8, 0x3C, 3, - 0x200, 0x168, 4, 0x200, 0x168, 5, 0x400, 0x2D0, - 6, 0x400, 0x2D0, 8, 0x12C, 7, 0x2C, 8, - 0x1A4, 0xD, 0xC800FF, 0x1E, 8, 0x1E, 0xD,0x1E381EFF, - 0x3C, 8, 0x3C, 0xB -}; - -u32 D_80031490[] = { - 0xD, 0xFF, 1, 0xD,0xC8C8C8FF, 0x190, 7, 1, - 8, 0x2A8, 7, 2, 8, 0x2A8, 7, 4, - 8, 0xB4, 0xD,0x808032FF, 1, 7, 4, 8, - 0xC8, 0xB -}; - -u32 D_800314F8[] = { - 5, 0x400, 1, 6, 0x400, 1, 0xD,0xC81414FF, - 1, 7, 6, 8, 0x258, 0xD,0xC8C8C8FF, 5, - 8, 5, 0xD,0x383838FF, 0x3C, 7, 0x1B, 0xD, - 0xA0A0AFF, 0x64, 8, 0x190, 0xB -}; - -u32 D_8003156C[] = { - 0xD, 0xA960AFF, 0, 7, 0x28, 8, 5, 7, - 0x29, 8, 5, 7, 0x2A, 8, 5, 7, - 0x2B, 8, 0xA, 7, 0x29, 8, 5, 0xB -}; - -u32 D_800315CC[] = { - 7, 0x24, 0xD, 0xA960AFF, 0, 8, 3, 0xD, - 0x87808FF, 0, 8, 2, 0xD, 0xA960AFF, 0, 8, - 3, 0xD, 0x87808FF, 0, 8, 2, 1, 0x264, - 0x1E, 7, 0x25, 0xD, 0xA960AFF, 0, 8, 3, - 0xD, 0x87808FF, 0, 8, 2, 7, 0x26, 0xD, - 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, 8, - 2, 7, 0x27, 0xD, 0xA960AFF, 0, 8, 3, - 0xD, 0x87808FF, 0, 8, 2, 0xD, 0xA960AFF, 0, - 8, 3, 0xD, 0x87808FF, 0, 8, 2, 0xD, - 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, 8, - 2, 0xD, 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, - 0, 8, 2, 1, 0x19C, 0x28, 7, 0x26, - 0xD, 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, - 8, 2, 0xD, 0xA960AFF, 0, 8, 3, 0xD, - 0x87808FF, 0, 8, 2, 7, 0x25, 0xD, 0xA960AFF, - 0, 8, 3, 0xD, 0x87808FF, 0, 8, 2, - 0xD, 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, - 8, 2, 0xD, 0xA960AFF, 0, 8, 3, 0xD, - 0x87808FF, 0, 8, 2, 0xD, 0xA960AFF, 0, 8, - 3, 0xD, 0x87808FF, 0, 8, 2, 0xB -}; - -u32 D_80031848[] = { - 0x0000000D, 0x0A780AFF, - 0x00000000, 0x00000007, - 0x00000020, 0x00000008, - 0x00000005, 0x00000007, - 0x00000021, 0x00000008, - 0x00000005, 0x00000007, - 0x00000022, 0x00000008, - 0x00000005, 0x00000007, - 0x00000023, 0x00000008, - 0x00000005, 0x0000000B -}; - -u32 D_80031898[] = {7, 0x1C, 0xD, 0x800000, 1, 8, 5, 0xB}; - -struct struct_5 D_800318B8[] = { - {0xA, D_80031018, 0x1999}, - {0xA, D_8003156C, 0x1999}, - {0xA, D_8003121C, 0x1999}, - {0xA, D_80031248, 0x1999}, - {0xA, D_80031274, 0x1999}, - {0xA, D_800310F0, 0x3333}, - {0xA, D_8003118C, 0x6666}, - {0xA, D_80031074, 0xFFFF} -}; - -u32 D_80031918 = 0xB; - -struct struct_5 D_8003191C[] = { - {0xA, D_80030F44, 0x51E}, - {0xA, D_8003121C, 0x51E}, - {0xA, D_80031074, 0x51E}, - {0xA, &D_80031950, 0x9999} -}; - -u32 D_8003194C = 0xB; - -struct struct_5 D_80031950[] = { - {0xA, &D_800319D4, 0x1999}, - {0xA, &D_800319F0, 0x1999}, - {0xA, &D_80031A0C, 0x1999}, - {0xA, &D_80031A28, 0x1999}, - {0xA, &D_80031A44, 0x1999}, - {0xA, &D_80031A60, 0x1999}, - {0xA, &D_80031A7C, 0x1999}, - {0xA, &D_80031A98, 0x1999}, - {0xA, &D_80031AB4, 0x1999}, - {0xA, &D_80031AD0, 0x1999} -}; -u32 D_800319C8[] = {8, 0x64, 0xB}; - -struct struct_0 D_800319D4 = {7, 0x11, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_800319F0 = {7, 0x12, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031A0C = {7, 0x13, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031A28 = {7, 0x14, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031A44 = {7, 0x15, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031A60 = {7, 0x16, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031A7C = {7, 0x17, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031A98 = {7, 0x18, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031AB4 = {7, 0x19, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; -struct struct_0 D_80031AD0 = {7, 0x1A, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; - -struct struct_5 D_80031AEC[] = { - {0xA, &D_80031B24, 0x1999}, - {0xA, &D_80031B38, 0x1999}, - {0xA, &D_80031B4C, 0x1999} -}; - -struct struct_12 D_80031B10[] = {0xD, 0xC8, 0xC8, 0xC8, 0xFF, 0x3C, 9, D_80031B60}; -struct struct_12 D_80031B24[] = {0xD, 0xC8, 0x32, 0x32, 0xFF, 0x3C, 9, D_80031B60}; -struct struct_12 D_80031B38[] = {0xD, 0x32, 0xC8, 0x32, 0xFF, 0x3C, 9, D_80031B60}; -struct struct_12 D_80031B4C[] = {0xD, 0x32, 0x32, 0xC8, 0xFF, 0x3C, 9, D_80031B60}; -u32 D_80031B60[] = {8, 0x32}; - -//80031B68 -struct struct_5 D_80031B68 = {0xA, &D_80031BB4, 0x1999}; -//80031B74 -struct struct_5 D_80031B74 = {0xA, &D_80031BD0, 0x1999}; -//80031B80 -struct struct_5 D_80031B80 = {0xA, &D_80031BEC, 0x1999}; -//80031B8C -struct struct_5 D_80031B8C = {0xA, &D_80031C08, 0x1999}; -//80031B98 -struct struct_5 D_80031B98 = {0xA, &D_80031C80, 0x1999}; -//80031BA4 -u32 D_80031BA4[] = {8, 0x12C, 9, &D_80031D30}; - -struct struct_16 D_80031BB4 = {1, 0x800, 0x78, 8, 0x78, 9, D_80031D30}; -struct struct_16 D_80031BD0 = {2, 0x2000, 0x32, 8, 0xC8, 9, D_80031D30}; -struct struct_16 D_80031BEC = {2, 0x2000, 0xC8, 8, 0xC8, 9, D_80031D30}; - -u32 D_80031C08[] = { - 3, 0x288, 0x12C, 4, 0x3AA, 0x12C, - 5, 0x80, 0xC8, 6, 0x80, 0xC8, - 8, 0x12C, 3, 0x200, 0x32, - 4, 0x200, 0xC8, 5, 0x400, 0x2D0, - 6, 0x400, 0x2D0, 8, 0x258, 9, D_80031D30 -}; - -u32 D_80031C80[] = { - 3, 0x320, 0x190, 4, 0x190, 0x190, 5, 0x80, - 0xC8, 6, 0x80, 0xC8, 8, 0x12C, 3, 0xC8, - 0xC8, 4, 0x190, 0x320, 5, 0x200, 0x2D0, 6, - 0x200, 0x2D0, 8, 0x320, 5, 0x400, 0x2D0, 6, - 0x400, 0x2D0, 3, 0x200, 0x64, 4, 0x200, 0x3C, - 8, 0x1F4, 9, D_80031D30 -}; - -u32 D_80031D30[] = { - 8, 0x32, 0xA, &D_80031AEC, 0x1999, 0xA, &D_80031D58, 0x3333, - 9, &D_80031950 -}; - -struct struct_20 D_80031D58 = {8, 0x32, 0xD, 0xFFFFFFFF, 0xA, 0xD, 0xFF, 5, 0xD, 0xFFFFFFFF, 0xA, 8, 0x19, 0xD, 0xFF, 0xC8, 8, 0x1F4, 9, D_80031950}; - -u32 D_80031DA8[] = { - 7, 0x31, 5, 0x200, 0, 6, 0x200, 0, - 0xD,0xDC2828FF, 0x3C, 8, 0x3C, 0xD,0x323232FF, 0xA, - 8, 0xA, 0xB -}; - -u32 D_80031DF4[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, - 0xD, 0x32C832FF, 0x3C, 8, 0x3C, - 0xD, 0x323232FF, 0xA, 8, 0xA, 0xB -}; - -u32 D_80031E40[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, - 0xD, 0x323232FF, 0xA, 8, 0xA, 0xB -}; - -u32 D_80031E78[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, - 0xD, 0xDC2828FF, 0xA, 8, 0xA, 0xB -}; - -u32 D_80031EB0[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, - 0xD, 0x32C832FF, 0xA, 8, 0xA, 0xB -}; - -u32 D_80031EE8[] = {7, 0, 0xD, 0xFF, 0, 0xC}; - -u32 dword_D_80031F00[] = { - 5, 0x400, 0, 6, 0x400, 0, 8, 1, - 5, 0x1000, 0x14, 6, 0x1000, 0x14, 8, 0x14, - 0xB -}; - -u32 dword_D_80031F44[] = { - 7, 0, 1, 0x400, 0x14, 8, 0x14, 2, - 0x400, 0x14, 0xD, 0xFF, 0x14, 8, 0x14, 5, - 0x200, 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, - 8, 0x14, 5, 0x400, 0x14, 6, 0x400, 0x14, - 8, 0x14, 0xB -}; - -u32 D_80031FD0[] = { - 0, 1, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -u32 D_80032010 = 0; -u32 D_80032014 = 0; -u32 D_80032018 = 0; -u32 D_8003201C = 0; -u32 D_80032020 = 0; -u32 D_80032024 = 0; -u32 D_80032028 = 0; -u32 D_8003202C = 0; -u32 D_80032030 = 0; -u32 D_80032034 = 0; -u32 D_80032038 = 0; -u32 D_8003203C = 0; -u32 D_80032040 = 0; -u32 D_80032044 = 0; -u32 D_80032048 = 0; - -u32 D_8003204C = 0x7FFF; -u32 D_80032050 = 0x7FFF; -u32 D_80032054 = 0x7FFF; -u32 D_80032058 = 0xFFFF8000; -u32 D_8003205C = 0xFFFF8000; -u32 D_80032060 = 0xFFFF8000; -u32 D_80032064 = 0; -u32 D_80032068 = 0; -u32 D_8003206C = 0; -u32 D_80032070 = 0x7FFF; -u32 D_80032074 = 0x7FFF; -u32 D_80032078 = 0x7FFF; -u32 D_8003207C = 0xFFFF8000; -u32 D_80032080 = 0xFFFF8000; -u32 D_80032084 = 0xFFFF8000; -u32 D_80032088 = 0; -u32 D_8003208C = 0; -u32 D_80032090 = 0; - -u32 blank_07_object[] = { - 0x1000007, 0xFFFF, 1, 0, 0, 0,0x3F800000, 0, - 0, 0, 0,0x3F800000, 0, 0, 0, 0, - 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, - 0, 0, 0, 0, 0,0x447A0000 -}; - -u32 D_8003210C[] = {0xFFFFFF00, 0xFFFFFF00}; - -u32 blank_11_object[] = { - 0x1000011, 0, 0x4000, 0, 0, 0,0x3F800000, 0, - 0, 0, 0,0x3F800000, 0, 0, 0, 0, - 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, - 0, 0, 0, 0, 0,0x447A0000 -}; - -u32 D_8003218C[] = {0xFFFFFF00, 0xFFFFFF00}; - -u32 blank_08_object_preset_1[] = { - 0x1000008, 1, 0, 0, 0, 0,0x3F800000, 0, - 0, 0, 0,0x3F800000, 0, 0, 0, 0, - 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, - 0, 0, 0, 0, 0,0x447A0000,0xFFFFFF00,0xFFFFFF00, - 0xFFFFFF -}; - -u32 D_80032218 = 0; - -u32 blank_08_object_preset_4001[] = { - 0x1000008, 0x4001, 0, 0, 0, 0,0x3F800000, 0, - 0, 0, 0,0x3F800000, 0, 0, 0, 0, - 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, - 0, 0, 0, 0, 0,0x447A0000,0xFFFFFF00,0xFFFFFF00, - 0xFFFFFF -}; - -u32 D_800322A0 = 0; -u32 D_800322A4 = 0; - -u32 D_800322A8[] = {1, 3}; -u32 D_800322B0[] = {0, 0, 0, 0}; -u32 D_800322C0[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - -//rodata @@ -7165,7 +6722,7 @@ actionBF_Spawn_Weapon_9: /* 06D6F8 7F038BC8 8EEF001C */ lw $t7, 0x1c($s7) /* 06D6FC 7F038BCC 11E00021 */ beqz $t7, .L7F038C54 /* 06D700 7F038BD0 00000000 */ nop -/* 06D704 7F038BD4 0FC249EF */ jal sub_GAME_7F0927BC +/* 06D704 7F038BD4 0FC249EF */ jal cheatCheckIfOn /* 06D708 7F038BD8 2404001C */ li $a0, 28 /* 06D70C 7F038BDC 50400018 */ beql $v0, $zero, .L7F038C40 /* 06D710 7F038BE0 02E02025 */ move $a0, $s7 @@ -7879,7 +7436,7 @@ actionD5_Go_To_Camera_Position_6: /* 06E124 7F0395F4 92240001 */ lbu $a0, 1($s1) /* 06E128 7F0395F8 1040001A */ beqz $v0, .L7F039664 /* 06E12C 7F0395FC 00408025 */ move $s0, $v0 -/* 06E130 7F039600 0FC15AC7 */ jal sub_GAME_7F056B1C +/* 06E130 7F039600 0FC15AC7 */ jal check_if_object_type_has_been_loaded /* 06E134 7F039604 00402025 */ move $a0, $v0 /* 06E138 7F039608 04420017 */ bltzl $v0, .L7F039668 /* 06E13C 7F03960C 26520006 */ addiu $s2, $s2, 6 @@ -8692,7 +8249,7 @@ actionFC_Launch_Shuttle_2: /* 06ECB8 7F03A188 AFA30088 */ sw $v1, 0x88($sp) /* 06ECBC 7F03A18C 8FA30088 */ lw $v1, 0x88($sp) /* 06ECC0 7F03A190 8C64006C */ lw $a0, 0x6c($v1) -/* 06ECC4 7F03A194 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 06ECC4 7F03A194 0FC15FF4 */ jal reset_array_of_0x10_floats /* 06ECC8 7F03A198 24840020 */ addiu $a0, $a0, 0x20 /* 06ECCC 7F03A19C 8FA30088 */ lw $v1, 0x88($sp) /* 06ECD0 7F03A1A0 3C018005 */ lui $at, %hi(D_80052974) @@ -13032,7 +12589,7 @@ actionBF_Spawn_Weapon_9: /* 06D6F8 7F038BC8 8EEF001C */ lw $t7, 0x1c($s7) /* 06D6FC 7F038BCC 11E00021 */ beqz $t7, .L7F038C54 /* 06D700 7F038BD0 00000000 */ nop -/* 06D704 7F038BD4 0FC249EF */ jal sub_GAME_7F0927BC +/* 06D704 7F038BD4 0FC249EF */ jal cheatCheckIfOn /* 06D708 7F038BD8 2404001C */ li $a0, 28 /* 06D70C 7F038BDC 50400018 */ beql $v0, $zero, .L7F038C40 /* 06D710 7F038BE0 02E02025 */ move $a0, $s7 @@ -13246,7 +12803,7 @@ actionC2_Display_Text_Preset_Bottom_Screen_3: /* 06DA00 7F038ED0 000C5A00 */ sll $t3, $t4, 8 /* 06DA04 7F038ED4 0FC30776 */ jal get_textptr_for_textID /* 06DA08 7F038ED8 01782025 */ or $a0, $t3, $t8 -/* 06DA0C 7F038EDC 0FC228F2 */ jal jp_FUN_7f08ac40 +/* 06DA0C 7F038EDC 0FC228F2 */ jal jp_display_string_in_lower_left_corner /* 06DA10 7F038EE0 00402025 */ move $a0, $v0 /* 06DA14 7F038EE4 26520003 */ addiu $s2, $s2, 3 /* 06DA18 7F038EE8 1000F1A8 */ b GetByteS1_ParseCommandByte_SwitchCase @@ -13746,7 +13303,7 @@ actionD5_Go_To_Camera_Position_6: /* 06E124 7F0395F4 92240001 */ lbu $a0, 1($s1) /* 06E128 7F0395F8 1040001A */ beqz $v0, .L7F039664 /* 06E12C 7F0395FC 00408025 */ move $s0, $v0 -/* 06E130 7F039600 0FC15AC7 */ jal sub_GAME_7F056B1C +/* 06E130 7F039600 0FC15AC7 */ jal check_if_object_type_has_been_loaded /* 06E134 7F039604 00402025 */ move $a0, $v0 /* 06E138 7F039608 04420017 */ bltzl $v0, .L7F039668 /* 06E13C 7F03960C 26520006 */ addiu $s2, $s2, 6 @@ -14559,7 +14116,7 @@ actionFC_Launch_Shuttle_2: /* 06ECB8 7F03A188 AFA30088 */ sw $v1, 0x88($sp) /* 06ECBC 7F03A18C 8FA30088 */ lw $v1, 0x88($sp) /* 06ECC0 7F03A190 8C64006C */ lw $a0, 0x6c($v1) -/* 06ECC4 7F03A194 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 06ECC4 7F03A194 0FC15FF4 */ jal reset_array_of_0x10_floats /* 06ECC8 7F03A198 24840020 */ addiu $a0, $a0, 0x20 /* 06ECCC 7F03A19C 8FA30088 */ lw $v1, 0x88($sp) /* 06ECD0 7F03A1A0 3C018005 */ lui $at, %hi(D_80052974) @@ -16898,7 +16455,7 @@ glabel sub_GAME_7F03BDEC .L7F03BEC8: /* 0709F8 7F03BEC8 3C014248 */ li $at, 0x42480000 # 50.000000 /* 0709FC 7F03BECC 4481A000 */ mtc1 $at, $f20 -/* 070A00 7F03BED0 0FC1741E */ jal sub_GAME_7F05D078 +/* 070A00 7F03BED0 0FC1741E */ jal getCurrentWeaponOrItem /* 070A04 7F03BED4 8E120004 */ lw $s2, 4($s0) /* 070A08 7F03BED8 24010011 */ li $at, 17 /* 070A0C 7F03BEDC 14410004 */ bne $v0, $at, .L7F03BEF0 @@ -17909,7 +17466,7 @@ glabel determing_type_of_object_and_detection /* 07167C 7F03CB4C 00402025 */ move $a0, $v0 /* 071680 7F03CB50 54400008 */ bnezl $v0, .L7F03CB74 /* 071684 7F03CB54 8FBF0024 */ lw $ra, 0x24($sp) -/* 071688 7F03CB58 0FC1597C */ jal sub_GAME_7F0565F0 +/* 071688 7F03CB58 0FC1597C */ jal handle_alarm_gas_timer_calldamage /* 07168C 7F03CB5C 00000000 */ nop /* 071690 7F03CB60 0FC0D239 */ jal loop_set_sound_effect_all_slots /* 071694 7F03CB64 00000000 */ nop @@ -18508,22 +18065,6 @@ glabel D_800529C0 .word 0x3e333333 /*0.175*/ glabel D_800529C4 .word 0x3f533333 /*0.82499999*/ -glabel D_800529C8 -.word 0 -.word 0 -glabel D_800529D0 -.word 0xA000000 /*"\n"*/ -glabel D_800529D4 -.word 0x2E0A0000 /*".\n"*/ -glabel D_800529D8 -.word 0, 0, 0, 0, 0, 0, 0, 0 -.word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -glabel D_80052A38 -.word 0 -glabel D_80052A3C -.word 0 -glabel D_80052A40 -.word 0xA000000 /*"\n"*/ .text glabel sub_GAME_7F03D188 /* 071CB8 7F03D188 27BDFF50 */ addiu $sp, $sp, -0xb0 @@ -22034,36890 +21575,3 @@ glabel sub_GAME_7F03FAB0 -#ifdef NONMATCHING -void sub_GAME_7F03FB70(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FB70 -/* 0746A0 7F03FB70 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0746A4 7F03FB74 AFBF001C */ sw $ra, 0x1c($sp) -/* 0746A8 7F03FB78 AFB00018 */ sw $s0, 0x18($sp) -/* 0746AC 7F03FB7C 8C8E0000 */ lw $t6, ($a0) -/* 0746B0 7F03FB80 00808025 */ move $s0, $a0 -/* 0746B4 7F03FB84 31CF0080 */ andi $t7, $t6, 0x80 -/* 0746B8 7F03FB88 51E00014 */ beql $t7, $zero, .L7F03FBDC -/* 0746BC 7F03FB8C 8E180000 */ lw $t8, ($s0) -/* 0746C0 7F03FB90 8C840098 */ lw $a0, 0x98($a0) -/* 0746C4 7F03FB94 50800008 */ beql $a0, $zero, .L7F03FBB8 -/* 0746C8 7F03FB98 8E04009C */ lw $a0, 0x9c($s0) -/* 0746CC 7F03FB9C 0C00237C */ jal sfxGetArg0Unk3F -/* 0746D0 7F03FBA0 00000000 */ nop -/* 0746D4 7F03FBA4 50400004 */ beql $v0, $zero, .L7F03FBB8 -/* 0746D8 7F03FBA8 8E04009C */ lw $a0, 0x9c($s0) -/* 0746DC 7F03FBAC 0C002408 */ jal sfxDeactivate -/* 0746E0 7F03FBB0 8E040098 */ lw $a0, 0x98($s0) -/* 0746E4 7F03FBB4 8E04009C */ lw $a0, 0x9c($s0) -.L7F03FBB8: -/* 0746E8 7F03FBB8 50800008 */ beql $a0, $zero, .L7F03FBDC -/* 0746EC 7F03FBBC 8E180000 */ lw $t8, ($s0) -/* 0746F0 7F03FBC0 0C00237C */ jal sfxGetArg0Unk3F -/* 0746F4 7F03FBC4 00000000 */ nop -/* 0746F8 7F03FBC8 50400004 */ beql $v0, $zero, .L7F03FBDC -/* 0746FC 7F03FBCC 8E180000 */ lw $t8, ($s0) -/* 074700 7F03FBD0 0C002408 */ jal sfxDeactivate -/* 074704 7F03FBD4 8E04009C */ lw $a0, 0x9c($s0) -/* 074708 7F03FBD8 8E180000 */ lw $t8, ($s0) -.L7F03FBDC: -/* 07470C 7F03FBDC 3C018000 */ lui $at, 0x8000 -/* 074710 7F03FBE0 0301C825 */ or $t9, $t8, $at -/* 074714 7F03FBE4 AE190000 */ sw $t9, ($s0) -/* 074718 7F03FBE8 8FBF001C */ lw $ra, 0x1c($sp) -/* 07471C 7F03FBEC 8FB00018 */ lw $s0, 0x18($sp) -/* 074720 7F03FBF0 27BD0020 */ addiu $sp, $sp, 0x20 -/* 074724 7F03FBF4 03E00008 */ jr $ra -/* 074728 7F03FBF8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FBFC(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A44 -.word 0x3A0A0000 /*":\n"*/ -glabel D_80052A48 -.word 0x3d4ccccd /*0.050000001*/ -.text -glabel sub_GAME_7F03FBFC -/* 07472C 7F03FBFC 44800000 */ mtc1 $zero, $f0 -/* 074730 7F03FC00 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 074734 7F03FC04 44811000 */ mtc1 $at, $f2 -/* 074738 7F03FC08 AC800000 */ sw $zero, ($a0) -/* 07473C 7F03FC0C AC800088 */ sw $zero, 0x88($a0) -/* 074740 7F03FC10 3C018005 */ lui $at, %hi(D_80052A48) -/* 074744 7F03FC14 E4800004 */ swc1 $f0, 4($a0) -/* 074748 7F03FC18 E4800008 */ swc1 $f0, 8($a0) -/* 07474C 7F03FC1C E480000C */ swc1 $f0, 0xc($a0) -/* 074750 7F03FC20 E4800010 */ swc1 $f0, 0x10($a0) -/* 074754 7F03FC24 E4800014 */ swc1 $f0, 0x14($a0) -/* 074758 7F03FC28 E4800018 */ swc1 $f0, 0x18($a0) -/* 07475C 7F03FC2C E480001C */ swc1 $f0, 0x1c($a0) -/* 074760 7F03FC30 E4820060 */ swc1 $f2, 0x60($a0) -/* 074764 7F03FC34 C4242A48 */ lwc1 $f4, %lo(D_80052A48)($at) -/* 074768 7F03FC38 2402FFFF */ li $v0, -1 -/* 07476C 7F03FC3C 240E0001 */ li $t6, 1 -/* 074770 7F03FC40 AC800090 */ sw $zero, 0x90($a0) -/* 074774 7F03FC44 AC8200A0 */ sw $v0, 0xa0($a0) -/* 074778 7F03FC48 AC8000A4 */ sw $zero, 0xa4($a0) -/* 07477C 7F03FC4C AC8000A8 */ sw $zero, 0xa8($a0) -/* 074780 7F03FC50 AC8200AC */ sw $v0, 0xac($a0) -/* 074784 7F03FC54 AC8E00B8 */ sw $t6, 0xb8($a0) -/* 074788 7F03FC58 AC8000BC */ sw $zero, 0xbc($a0) -/* 07478C 7F03FC5C AC8000E0 */ sw $zero, 0xe0($a0) -/* 074790 7F03FC60 AC8000E4 */ sw $zero, 0xe4($a0) -/* 074794 7F03FC64 AC8000E8 */ sw $zero, 0xe8($a0) -/* 074798 7F03FC68 E4800094 */ swc1 $f0, 0x94($a0) -/* 07479C 7F03FC6C E48200C0 */ swc1 $f2, 0xc0($a0) -/* 0747A0 7F03FC70 E48200C4 */ swc1 $f2, 0xc4($a0) -/* 0747A4 7F03FC74 E48200C8 */ swc1 $f2, 0xc8($a0) -/* 0747A8 7F03FC78 03E00008 */ jr $ra -/* 0747AC 7F03FC7C E484008C */ swc1 $f4, 0x8c($a0) -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FC80(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FC80 -/* 0747B0 7F03FC80 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0747B4 7F03FC84 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) -/* 0747B8 7F03FC88 3C048007 */ lui $a0, %hi(dword_CODE_bss_80075030) -/* 0747BC 7F03FC8C AFBF0014 */ sw $ra, 0x14($sp) -/* 0747C0 7F03FC90 2406FFFF */ li $a2, -1 -/* 0747C4 7F03FC94 24845030 */ addiu $a0, %lo(dword_CODE_bss_80075030) # addiu $a0, $a0, 0x5030 -/* 0747C8 7F03FC98 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 -/* 0747CC 7F03FC9C 00002825 */ move $a1, $zero -/* 0747D0 7F03FCA0 3C038000 */ lui $v1, 0x8000 -.L7F03FCA4: -/* 0747D4 7F03FCA4 8C4E0000 */ lw $t6, ($v0) -/* 0747D8 7F03FCA8 244200EC */ addiu $v0, $v0, 0xec -/* 0747DC 7F03FCAC 0044082B */ sltu $at, $v0, $a0 -/* 0747E0 7F03FCB0 01C37824 */ and $t7, $t6, $v1 -/* 0747E4 7F03FCB4 11E00007 */ beqz $t7, .L7F03FCD4 -/* 0747E8 7F03FCB8 3C078007 */ lui $a3, %hi(dword_CODE_bss_80073DC0) -/* 0747EC 7F03FCBC 24E73DC0 */ addiu $a3, %lo(dword_CODE_bss_80073DC0) # addiu $a3, $a3, 0x3dc0 -/* 0747F0 7F03FCC0 00E52021 */ addu $a0, $a3, $a1 -/* 0747F4 7F03FCC4 0FC0FEFF */ jal sub_GAME_7F03FBFC -/* 0747F8 7F03FCC8 AFA40020 */ sw $a0, 0x20($sp) -/* 0747FC 7F03FCCC 10000032 */ b .L7F03FD98 -/* 074800 7F03FCD0 8FA20020 */ lw $v0, 0x20($sp) -.L7F03FCD4: -/* 074804 7F03FCD4 1420FFF3 */ bnez $at, .L7F03FCA4 -/* 074808 7F03FCD8 24A500EC */ addiu $a1, $a1, 0xec -/* 07480C 7F03FCDC 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) -/* 074810 7F03FCE0 3C078007 */ lui $a3, %hi(dword_CODE_bss_80073DC0) -/* 074814 7F03FCE4 24E73DC0 */ addiu $a3, %lo(dword_CODE_bss_80073DC0) # addiu $a3, $a3, 0x3dc0 -/* 074818 7F03FCE8 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 -/* 07481C 7F03FCEC 00001825 */ move $v1, $zero -/* 074820 7F03FCF0 240500EC */ li $a1, 236 -/* 074824 7F03FCF4 24040014 */ li $a0, 20 -.L7F03FCF8: -/* 074828 7F03FCF8 8C5800E4 */ lw $t8, 0xe4($v0) -/* 07482C 7F03FCFC 5300000D */ beql $t8, $zero, .L7F03FD34 -/* 074830 7F03FD00 24630001 */ addiu $v1, $v1, 1 -/* 074834 7F03FD04 04C2000A */ bltzl $a2, .L7F03FD30 -/* 074838 7F03FD08 00603025 */ move $a2, $v1 -/* 07483C 7F03FD0C 00C50019 */ multu $a2, $a1 -/* 074840 7F03FD10 8C5900E8 */ lw $t9, 0xe8($v0) -/* 074844 7F03FD14 00004812 */ mflo $t1 -/* 074848 7F03FD18 00E95021 */ addu $t2, $a3, $t1 -/* 07484C 7F03FD1C 8D4B00E8 */ lw $t3, 0xe8($t2) -/* 074850 7F03FD20 032B082A */ slt $at, $t9, $t3 -/* 074854 7F03FD24 50200003 */ beql $at, $zero, .L7F03FD34 -/* 074858 7F03FD28 24630001 */ addiu $v1, $v1, 1 -/* 07485C 7F03FD2C 00603025 */ move $a2, $v1 -.L7F03FD30: -/* 074860 7F03FD30 24630001 */ addiu $v1, $v1, 1 -.L7F03FD34: -/* 074864 7F03FD34 1464FFF0 */ bne $v1, $a0, .L7F03FCF8 -/* 074868 7F03FD38 244200EC */ addiu $v0, $v0, 0xec -/* 07486C 7F03FD3C 04C00016 */ bltz $a2, .L7F03FD98 -/* 074870 7F03FD40 00001025 */ move $v0, $zero -/* 074874 7F03FD44 00C50019 */ multu $a2, $a1 -/* 074878 7F03FD48 00001812 */ mflo $v1 -/* 07487C 7F03FD4C 00E34021 */ addu $t0, $a3, $v1 -/* 074880 7F03FD50 8D0C00E4 */ lw $t4, 0xe4($t0) -/* 074884 7F03FD54 8D840010 */ lw $a0, 0x10($t4) -/* 074888 7F03FD58 AFA80020 */ sw $t0, 0x20($sp) -/* 07488C 7F03FD5C 0FC1033C */ jal sub_GAME_7F040CF0 -/* 074890 7F03FD60 AFA30024 */ sw $v1, 0x24($sp) -/* 074894 7F03FD64 8FA80020 */ lw $t0, 0x20($sp) -/* 074898 7F03FD68 8FA30024 */ lw $v1, 0x24($sp) -/* 07489C 7F03FD6C 3C078007 */ lui $a3, %hi(dword_CODE_bss_80073DC0) -/* 0748A0 7F03FD70 8D0200E4 */ lw $v0, 0xe4($t0) -/* 0748A4 7F03FD74 24E73DC0 */ addiu $a3, %lo(dword_CODE_bss_80073DC0) # addiu $a3, $a3, 0x3dc0 -/* 0748A8 7F03FD78 00E32021 */ addu $a0, $a3, $v1 -/* 0748AC 7F03FD7C 8C4D0064 */ lw $t5, 0x64($v0) -/* 0748B0 7F03FD80 35AE0004 */ ori $t6, $t5, 4 -/* 0748B4 7F03FD84 AC4E0064 */ sw $t6, 0x64($v0) -/* 0748B8 7F03FD88 0FC0FEFF */ jal sub_GAME_7F03FBFC -/* 0748BC 7F03FD8C AFA4001C */ sw $a0, 0x1c($sp) -/* 0748C0 7F03FD90 10000001 */ b .L7F03FD98 -/* 0748C4 7F03FD94 8FA2001C */ lw $v0, 0x1c($sp) -.L7F03FD98: -/* 0748C8 7F03FD98 8FBF0014 */ lw $ra, 0x14($sp) -/* 0748CC 7F03FD9C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0748D0 7F03FDA0 03E00008 */ jr $ra -/* 0748D4 7F03FDA4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FDA8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FDA8 -/* 0748D8 7F03FDA8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0748DC 7F03FDAC AFBF0014 */ sw $ra, 0x14($sp) -/* 0748E0 7F03FDB0 8C830004 */ lw $v1, 4($a0) -/* 0748E4 7F03FDB4 8C620064 */ lw $v0, 0x64($v1) -/* 0748E8 7F03FDB8 304E0040 */ andi $t6, $v0, 0x40 -/* 0748EC 7F03FDBC 11C00007 */ beqz $t6, .L7F03FDDC -/* 0748F0 7F03FDC0 30580080 */ andi $t8, $v0, 0x80 -/* 0748F4 7F03FDC4 0FC0FF20 */ jal sub_GAME_7F03FC80 -/* 0748F8 7F03FDC8 AFA3001C */ sw $v1, 0x1c($sp) -/* 0748FC 7F03FDCC 8FA3001C */ lw $v1, 0x1c($sp) -/* 074900 7F03FDD0 8C6F006C */ lw $t7, 0x6c($v1) -/* 074904 7F03FDD4 1000000B */ b .L7F03FE04 -/* 074908 7F03FDD8 ADE20044 */ sw $v0, 0x44($t7) -.L7F03FDDC: -/* 07490C 7F03FDDC 5700000A */ bnezl $t8, .L7F03FE08 -/* 074910 7F03FDE0 8FBF0014 */ lw $ra, 0x14($sp) -/* 074914 7F03FDE4 0FC0FF20 */ jal sub_GAME_7F03FC80 -/* 074918 7F03FDE8 AFA3001C */ sw $v1, 0x1c($sp) -/* 07491C 7F03FDEC 8FA3001C */ lw $v1, 0x1c($sp) -/* 074920 7F03FDF0 10400004 */ beqz $v0, .L7F03FE04 -/* 074924 7F03FDF4 AC62006C */ sw $v0, 0x6c($v1) -/* 074928 7F03FDF8 8C790064 */ lw $t9, 0x64($v1) -/* 07492C 7F03FDFC 37280080 */ ori $t0, $t9, 0x80 -/* 074930 7F03FE00 AC680064 */ sw $t0, 0x64($v1) -.L7F03FE04: -/* 074934 7F03FE04 8FBF0014 */ lw $ra, 0x14($sp) -.L7F03FE08: -/* 074938 7F03FE08 27BD0020 */ addiu $sp, $sp, 0x20 -/* 07493C 7F03FE0C 03E00008 */ jr $ra -/* 074940 7F03FE10 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FE14(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FE14 -/* 074944 7F03FE14 8C820004 */ lw $v0, 4($a0) -/* 074948 7F03FE18 00001825 */ move $v1, $zero -/* 07494C 7F03FE1C 8C450064 */ lw $a1, 0x64($v0) -/* 074950 7F03FE20 30AE0040 */ andi $t6, $a1, 0x40 -/* 074954 7F03FE24 11C00004 */ beqz $t6, .L7F03FE38 -/* 074958 7F03FE28 30B80080 */ andi $t8, $a1, 0x80 -/* 07495C 7F03FE2C 8C4F006C */ lw $t7, 0x6c($v0) -/* 074960 7F03FE30 10000004 */ b .L7F03FE44 -/* 074964 7F03FE34 8DE30044 */ lw $v1, 0x44($t7) -.L7F03FE38: -/* 074968 7F03FE38 13000002 */ beqz $t8, .L7F03FE44 -/* 07496C 7F03FE3C 00000000 */ nop -/* 074970 7F03FE40 8C43006C */ lw $v1, 0x6c($v0) -.L7F03FE44: -/* 074974 7F03FE44 1060000E */ beqz $v1, .L7F03FE80 -/* 074978 7F03FE48 00000000 */ nop -/* 07497C 7F03FE4C 8C790000 */ lw $t9, ($v1) -/* 074980 7F03FE50 240A00FF */ li $t2, 255 -/* 074984 7F03FE54 240B00FF */ li $t3, 255 -/* 074988 7F03FE58 37280004 */ ori $t0, $t9, 4 -/* 07498C 7F03FE5C AC680000 */ sw $t0, ($v1) -/* 074990 7F03FE60 8C820014 */ lw $v0, 0x14($a0) -/* 074994 7F03FE64 50400006 */ beql $v0, $zero, .L7F03FE80 -/* 074998 7F03FE68 A06B00CC */ sb $t3, 0xcc($v1) -/* 07499C 7F03FE6C 90490003 */ lbu $t1, 3($v0) -/* 0749A0 7F03FE70 A06A00CD */ sb $t2, 0xcd($v1) -/* 0749A4 7F03FE74 03E00008 */ jr $ra -/* 0749A8 7F03FE78 A06900CC */ sb $t1, 0xcc($v1) - -/* 0749AC 7F03FE7C A06B00CC */ sb $t3, 0xcc($v1) -.L7F03FE80: -/* 0749B0 7F03FE80 03E00008 */ jr $ra -/* 0749B4 7F03FE84 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FE88(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FE88 -/* 0749B8 7F03FE88 8C8E0000 */ lw $t6, ($a0) -/* 0749BC 7F03FE8C 35CF0001 */ ori $t7, $t6, 1 -/* 0749C0 7F03FE90 03E00008 */ jr $ra -/* 0749C4 7F03FE94 AC8F0000 */ sw $t7, ($a0) -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FE98(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FE98 -/* 0749C8 7F03FE98 3C048007 */ lui $a0, %hi(dword_CODE_bss_80075030) -/* 0749CC 7F03FE9C 3C028007 */ lui $v0, %hi(objinst) -/* 0749D0 7F03FEA0 24425B70 */ addiu $v0, %lo(objinst) # addiu $v0, $v0, 0x5b70 -/* 0749D4 7F03FEA4 24845030 */ addiu $a0, %lo(dword_CODE_bss_80075030) # addiu $a0, $a0, 0x5030 -/* 0749D8 7F03FEA8 00001825 */ move $v1, $zero -.L7F03FEAC: -/* 0749DC 7F03FEAC 8C8E0000 */ lw $t6, ($a0) -/* 0749E0 7F03FEB0 31CF0001 */ andi $t7, $t6, 1 -/* 0749E4 7F03FEB4 11E00006 */ beqz $t7, .L7F03FED0 -/* 0749E8 7F03FEB8 3C188007 */ lui $t8, %hi(dword_CODE_bss_80075030) -/* 0749EC 7F03FEBC 27185030 */ addiu $t8, %lo(dword_CODE_bss_80075030) # addiu $t8, $t8, 0x5030 -/* 0749F0 7F03FEC0 AC800000 */ sw $zero, ($a0) -/* 0749F4 7F03FEC4 AC800044 */ sw $zero, 0x44($a0) -/* 0749F8 7F03FEC8 03E00008 */ jr $ra -/* 0749FC 7F03FECC 00781021 */ addu $v0, $v1, $t8 - -.L7F03FED0: -/* 074A00 7F03FED0 8C990048 */ lw $t9, 0x48($a0) -/* 074A04 7F03FED4 33280001 */ andi $t0, $t9, 1 -/* 074A08 7F03FED8 11000007 */ beqz $t0, .L7F03FEF8 -/* 074A0C 7F03FEDC 3C0A8007 */ lui $t2, %hi(dword_CODE_bss_80075030) -/* 074A10 7F03FEE0 254A5030 */ addiu $t2, %lo(dword_CODE_bss_80075030) # addiu $t2, $t2, 0x5030 -/* 074A14 7F03FEE4 24690048 */ addiu $t1, $v1, 0x48 -/* 074A18 7F03FEE8 012A1021 */ addu $v0, $t1, $t2 -/* 074A1C 7F03FEEC AC800048 */ sw $zero, 0x48($a0) -/* 074A20 7F03FEF0 03E00008 */ jr $ra -/* 074A24 7F03FEF4 AC80008C */ sw $zero, 0x8c($a0) - -.L7F03FEF8: -/* 074A28 7F03FEF8 8C8B0090 */ lw $t3, 0x90($a0) -/* 074A2C 7F03FEFC 316C0001 */ andi $t4, $t3, 1 -/* 074A30 7F03FF00 11800007 */ beqz $t4, .L7F03FF20 -/* 074A34 7F03FF04 3C0E8007 */ lui $t6, %hi(dword_CODE_bss_80075030) -/* 074A38 7F03FF08 25CE5030 */ addiu $t6, %lo(dword_CODE_bss_80075030) # addiu $t6, $t6, 0x5030 -/* 074A3C 7F03FF0C 246D0090 */ addiu $t5, $v1, 0x90 -/* 074A40 7F03FF10 01AE1021 */ addu $v0, $t5, $t6 -/* 074A44 7F03FF14 AC800090 */ sw $zero, 0x90($a0) -/* 074A48 7F03FF18 03E00008 */ jr $ra -/* 074A4C 7F03FF1C AC8000D4 */ sw $zero, 0xd4($a0) - -.L7F03FF20: -/* 074A50 7F03FF20 8C8F00D8 */ lw $t7, 0xd8($a0) -/* 074A54 7F03FF24 31F80001 */ andi $t8, $t7, 1 -/* 074A58 7F03FF28 13000007 */ beqz $t8, .L7F03FF48 -/* 074A5C 7F03FF2C 3C088007 */ lui $t0, %hi(dword_CODE_bss_80075030) -/* 074A60 7F03FF30 25085030 */ addiu $t0, %lo(dword_CODE_bss_80075030) # addiu $t0, $t0, 0x5030 -/* 074A64 7F03FF34 247900D8 */ addiu $t9, $v1, 0xd8 -/* 074A68 7F03FF38 03281021 */ addu $v0, $t9, $t0 -/* 074A6C 7F03FF3C AC8000D8 */ sw $zero, 0xd8($a0) -/* 074A70 7F03FF40 03E00008 */ jr $ra -/* 074A74 7F03FF44 AC80011C */ sw $zero, 0x11c($a0) - -.L7F03FF48: -/* 074A78 7F03FF48 24840120 */ addiu $a0, $a0, 0x120 -/* 074A7C 7F03FF4C 1482FFD7 */ bne $a0, $v0, .L7F03FEAC -/* 074A80 7F03FF50 24630120 */ addiu $v1, $v1, 0x120 -/* 074A84 7F03FF54 00001025 */ move $v0, $zero -/* 074A88 7F03FF58 03E00008 */ jr $ra -/* 074A8C 7F03FF5C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FF60(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FF60 -/* 074A90 7F03FF60 908E0002 */ lbu $t6, 2($a0) -/* 074A94 7F03FF64 3C014080 */ lui $at, 0x4080 -/* 074A98 7F03FF68 31CF0080 */ andi $t7, $t6, 0x80 -/* 074A9C 7F03FF6C 55E0000C */ bnezl $t7, .L7F03FFA0 -/* 074AA0 7F03FF70 C4840070 */ lwc1 $f4, 0x70($a0) -/* 074AA4 7F03FF74 3C014040 */ li $at, 0x40400000 # 3.000000 -/* 074AA8 7F03FF78 44813000 */ mtc1 $at, $f6 -/* 074AAC 7F03FF7C C4840070 */ lwc1 $f4, 0x70($a0) -/* 074AB0 7F03FF80 C48A0074 */ lwc1 $f10, 0x74($a0) -/* 074AB4 7F03FF84 46062202 */ mul.s $f8, $f4, $f6 -/* 074AB8 7F03FF88 460A4403 */ div.s $f16, $f8, $f10 -/* 074ABC 7F03FF8C 4600848D */ trunc.w.s $f18, $f16 -/* 074AC0 7F03FF90 44029000 */ mfc1 $v0, $f18 -/* 074AC4 7F03FF94 03E00008 */ jr $ra -/* 074AC8 7F03FF98 00000000 */ nop - -/* 074ACC 7F03FF9C C4840070 */ lwc1 $f4, 0x70($a0) -.L7F03FFA0: -/* 074AD0 7F03FFA0 44813000 */ mtc1 $at, $f6 -/* 074AD4 7F03FFA4 00000000 */ nop -/* 074AD8 7F03FFA8 46062200 */ add.s $f8, $f4, $f6 -/* 074ADC 7F03FFAC 4600428D */ trunc.w.s $f10, $f8 -/* 074AE0 7F03FFB0 44025000 */ mfc1 $v0, $f10 -/* 074AE4 7F03FFB4 00000000 */ nop -/* 074AE8 7F03FFB8 03E00008 */ jr $ra -/* 074AEC 7F03FFBC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void do_something_if_object_destroyed(void) { - -} -#else -GLOBAL_ASM( -.text -glabel do_something_if_object_destroyed -/* 074AF0 7F03FFC0 908E0002 */ lbu $t6, 2($a0) -/* 074AF4 7F03FFC4 31CF0080 */ andi $t7, $t6, 0x80 -/* 074AF8 7F03FFC8 55E00004 */ bnezl $t7, .L7F03FFDC -/* 074AFC 7F03FFCC C4840070 */ lwc1 $f4, 0x70($a0) -/* 074B00 7F03FFD0 03E00008 */ jr $ra -/* 074B04 7F03FFD4 00001025 */ move $v0, $zero - -/* 074B08 7F03FFD8 C4840070 */ lwc1 $f4, 0x70($a0) -.L7F03FFDC: -/* 074B0C 7F03FFDC 4600218D */ trunc.w.s $f6, $f4 -/* 074B10 7F03FFE0 44023000 */ mfc1 $v0, $f6 -/* 074B14 7F03FFE4 00000000 */ nop -/* 074B18 7F03FFE8 0002C883 */ sra $t9, $v0, 2 -/* 074B1C 7F03FFEC 27220001 */ addiu $v0, $t9, 1 -/* 074B20 7F03FFF0 03E00008 */ jr $ra -/* 074B24 7F03FFF4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F03FFF8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F03FFF8 -/* 074B28 7F03FFF8 8C8E0000 */ lw $t6, ($a0) -/* 074B2C 7F03FFFC 8DC20014 */ lw $v0, 0x14($t6) -/* 074B30 7F040000 5040001B */ beql $v0, $zero, .L7F040070 -/* 074B34 7F040004 00001025 */ move $v0, $zero -/* 074B38 7F040008 1040000A */ beqz $v0, .L7F040034 -/* 074B3C 7F04000C 00401825 */ move $v1, $v0 -/* 074B40 7F040010 2405000A */ li $a1, 10 -/* 074B44 7F040014 946F0000 */ lhu $t7, ($v1) -.L7F040018: -/* 074B48 7F040018 54AF0004 */ bnel $a1, $t7, .L7F04002C -/* 074B4C 7F04001C 8C63000C */ lw $v1, 0xc($v1) -/* 074B50 7F040020 03E00008 */ jr $ra -/* 074B54 7F040024 8C620004 */ lw $v0, 4($v1) - -/* 074B58 7F040028 8C63000C */ lw $v1, 0xc($v1) -.L7F04002C: -/* 074B5C 7F04002C 5460FFFA */ bnezl $v1, .L7F040018 -/* 074B60 7F040030 946F0000 */ lhu $t7, ($v1) -.L7F040034: -/* 074B64 7F040034 8C440014 */ lw $a0, 0x14($v0) -/* 074B68 7F040038 2405000A */ li $a1, 10 -/* 074B6C 7F04003C 5080000C */ beql $a0, $zero, .L7F040070 -/* 074B70 7F040040 00001025 */ move $v0, $zero -/* 074B74 7F040044 10800009 */ beqz $a0, .L7F04006C -/* 074B78 7F040048 00801825 */ move $v1, $a0 -/* 074B7C 7F04004C 94780000 */ lhu $t8, ($v1) -.L7F040050: -/* 074B80 7F040050 54B80004 */ bnel $a1, $t8, .L7F040064 -/* 074B84 7F040054 8C63000C */ lw $v1, 0xc($v1) -/* 074B88 7F040058 03E00008 */ jr $ra -/* 074B8C 7F04005C 8C620004 */ lw $v0, 4($v1) - -/* 074B90 7F040060 8C63000C */ lw $v1, 0xc($v1) -.L7F040064: -/* 074B94 7F040064 5460FFFA */ bnezl $v1, .L7F040050 -/* 074B98 7F040068 94780000 */ lhu $t8, ($v1) -.L7F04006C: -/* 074B9C 7F04006C 00001025 */ move $v0, $zero -.L7F040070: -/* 074BA0 7F040070 03E00008 */ jr $ra -/* 074BA4 7F040074 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F040078(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F040078 -/* 074BA8 7F040078 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 074BAC 7F04007C AFBF0014 */ sw $ra, 0x14($sp) -/* 074BB0 7F040080 8C8E0014 */ lw $t6, 0x14($a0) -/* 074BB4 7F040084 0FC0FFFE */ jal sub_GAME_7F03FFF8 -/* 074BB8 7F040088 8DC40008 */ lw $a0, 8($t6) -/* 074BBC 7F04008C 8FBF0014 */ lw $ra, 0x14($sp) -/* 074BC0 7F040090 27BD0018 */ addiu $sp, $sp, 0x18 -/* 074BC4 7F040094 03E00008 */ jr $ra -/* 074BC8 7F040098 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void set_color_shading_from_tile(void) { - -} -#else -GLOBAL_ASM( -.text -glabel set_color_shading_from_tile -/* 074BCC 7F04009C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 074BD0 7F0400A0 AFBF0014 */ sw $ra, 0x14($sp) -/* 074BD4 7F0400A4 AFA40018 */ sw $a0, 0x18($sp) -/* 074BD8 7F0400A8 00807025 */ move $t6, $a0 -/* 074BDC 7F0400AC 00A03825 */ move $a3, $a1 -/* 074BE0 7F0400B0 8DC50008 */ lw $a1, 8($t6) -/* 074BE4 7F0400B4 8DC60010 */ lw $a2, 0x10($t6) -/* 074BE8 7F0400B8 8C840014 */ lw $a0, 0x14($a0) -/* 074BEC 7F0400BC 0FC2CB0B */ jal copy_tile_RGB_as_24bit -/* 074BF0 7F0400C0 AFA7001C */ sw $a3, 0x1c($sp) -/* 074BF4 7F0400C4 8FA7001C */ lw $a3, 0x1c($sp) -/* 074BF8 7F0400C8 3C013F40 */ li $at, 0x3F400000 # 0.750000 -/* 074BFC 7F0400CC 44814000 */ mtc1 $at, $f8 -/* 074C00 7F0400D0 90EB0002 */ lbu $t3, 2($a3) -/* 074C04 7F0400D4 90ED0000 */ lbu $t5, ($a3) -/* 074C08 7F0400D8 90FF0001 */ lbu $ra, 1($a3) -/* 074C0C 7F0400DC 000B7880 */ sll $t7, $t3, 2 -/* 074C10 7F0400E0 000DC080 */ sll $t8, $t5, 2 -/* 074C14 7F0400E4 01EB7821 */ addu $t7, $t7, $t3 -/* 074C18 7F0400E8 030DC021 */ addu $t8, $t8, $t5 -/* 074C1C 7F0400EC 001F7080 */ sll $t6, $ra, 2 -/* 074C20 7F0400F0 0018C100 */ sll $t8, $t8, 4 -/* 074C24 7F0400F4 000F7880 */ sll $t7, $t7, 2 -/* 074C28 7F0400F8 01DF7021 */ addu $t6, $t6, $ra -/* 074C2C 7F0400FC 000E70C0 */ sll $t6, $t6, 3 -/* 074C30 7F040100 01EB7821 */ addu $t7, $t7, $t3 -/* 074C34 7F040104 030DC023 */ subu $t8, $t8, $t5 -/* 074C38 7F040108 01F8C821 */ addu $t9, $t7, $t8 -/* 074C3C 7F04010C 01DF7023 */ subu $t6, $t6, $ra -/* 074C40 7F040110 000E7080 */ sll $t6, $t6, 2 -/* 074C44 7F040114 032E1821 */ addu $v1, $t9, $t6 -/* 074C48 7F040118 00037A03 */ sra $t7, $v1, 8 -/* 074C4C 7F04011C 241800FF */ li $t8, 255 -/* 074C50 7F040120 030FC823 */ subu $t9, $t8, $t7 -/* 074C54 7F040124 44992000 */ mtc1 $t9, $f4 -/* 074C58 7F040128 240F0001 */ li $t7, 1 -/* 074C5C 7F04012C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 074C60 7F040130 468021A0 */ cvt.s.w $f6, $f4 -/* 074C64 7F040134 00001025 */ move $v0, $zero -/* 074C68 7F040138 00006025 */ move $t4, $zero -/* 074C6C 7F04013C 46083282 */ mul.s $f10, $f6, $f8 -/* 074C70 7F040140 444EF800 */ cfc1 $t6, $31 -/* 074C74 7F040144 44CFF800 */ ctc1 $t7, $31 -/* 074C78 7F040148 00000000 */ nop -/* 074C7C 7F04014C 46005424 */ cvt.w.s $f16, $f10 -/* 074C80 7F040150 444FF800 */ cfc1 $t7, $31 -/* 074C84 7F040154 00000000 */ nop -/* 074C88 7F040158 31EF0078 */ andi $t7, $t7, 0x78 -/* 074C8C 7F04015C 51E00013 */ beql $t7, $zero, .L7F0401AC -/* 074C90 7F040160 440F8000 */ mfc1 $t7, $f16 -/* 074C94 7F040164 44818000 */ mtc1 $at, $f16 -/* 074C98 7F040168 240F0001 */ li $t7, 1 -/* 074C9C 7F04016C 46105401 */ sub.s $f16, $f10, $f16 -/* 074CA0 7F040170 44CFF800 */ ctc1 $t7, $31 -/* 074CA4 7F040174 00000000 */ nop -/* 074CA8 7F040178 46008424 */ cvt.w.s $f16, $f16 -/* 074CAC 7F04017C 444FF800 */ cfc1 $t7, $31 -/* 074CB0 7F040180 00000000 */ nop -/* 074CB4 7F040184 31EF0078 */ andi $t7, $t7, 0x78 -/* 074CB8 7F040188 15E00005 */ bnez $t7, .L7F0401A0 -/* 074CBC 7F04018C 00000000 */ nop -/* 074CC0 7F040190 440F8000 */ mfc1 $t7, $f16 -/* 074CC4 7F040194 3C018000 */ lui $at, 0x8000 -/* 074CC8 7F040198 10000007 */ b .L7F0401B8 -/* 074CCC 7F04019C 01E17825 */ or $t7, $t7, $at -.L7F0401A0: -/* 074CD0 7F0401A0 10000005 */ b .L7F0401B8 -/* 074CD4 7F0401A4 240FFFFF */ li $t7, -1 -/* 074CD8 7F0401A8 440F8000 */ mfc1 $t7, $f16 -.L7F0401AC: -/* 074CDC 7F0401AC 00000000 */ nop -/* 074CE0 7F0401B0 05E0FFFB */ bltz $t7, .L7F0401A0 -/* 074CE4 7F0401B4 00000000 */ nop -.L7F0401B8: -/* 074CE8 7F0401B8 44CEF800 */ ctc1 $t6, $31 -/* 074CEC 7F0401BC 01BF082A */ slt $at, $t5, $ra -/* 074CF0 7F0401C0 10200003 */ beqz $at, .L7F0401D0 -/* 074CF4 7F0401C4 A0EF0003 */ sb $t7, 3($a3) -/* 074CF8 7F0401C8 10000002 */ b .L7F0401D4 -/* 074CFC 7F0401CC 24020001 */ li $v0, 1 -.L7F0401D0: -/* 074D00 7F0401D0 240C0001 */ li $t4, 1 -.L7F0401D4: -/* 074D04 7F0401D4 00E25021 */ addu $t2, $a3, $v0 -/* 074D08 7F0401D8 91460000 */ lbu $a2, ($t2) -/* 074D0C 7F0401DC 00402825 */ move $a1, $v0 -/* 074D10 7F0401E0 00ECC021 */ addu $t8, $a3, $t4 -/* 074D14 7F0401E4 00CB082A */ slt $at, $a2, $t3 -/* 074D18 7F0401E8 50200005 */ beql $at, $zero, .L7F040200 -/* 074D1C 7F0401EC 93190000 */ lbu $t9, ($t8) -/* 074D20 7F0401F0 24EA0002 */ addiu $t2, $a3, 2 -/* 074D24 7F0401F4 10000009 */ b .L7F04021C -/* 074D28 7F0401F8 91460000 */ lbu $a2, ($t2) -/* 074D2C 7F0401FC 93190000 */ lbu $t9, ($t8) -.L7F040200: -/* 074D30 7F040200 01802825 */ move $a1, $t4 -/* 074D34 7F040204 032B082A */ slt $at, $t9, $t3 -/* 074D38 7F040208 50200004 */ beql $at, $zero, .L7F04021C -/* 074D3C 7F04020C 240C0002 */ li $t4, 2 -/* 074D40 7F040210 10000002 */ b .L7F04021C -/* 074D44 7F040214 24050002 */ li $a1, 2 -/* 074D48 7F040218 240C0002 */ li $t4, 2 -.L7F04021C: -/* 074D4C 7F04021C 18C0001B */ blez $a2, .L7F04028C -/* 074D50 7F040220 00E51821 */ addu $v1, $a3, $a1 -/* 074D54 7F040224 00EC1021 */ addu $v0, $a3, $t4 -/* 074D58 7F040228 904E0000 */ lbu $t6, ($v0) -/* 074D5C 7F04022C 906F0000 */ lbu $t7, ($v1) -/* 074D60 7F040230 A0400000 */ sb $zero, ($v0) -/* 074D64 7F040234 00CE2023 */ subu $a0, $a2, $t6 -/* 074D68 7F040238 01E40019 */ multu $t7, $a0 -/* 074D6C 7F04023C 00804825 */ move $t1, $a0 -/* 074D70 7F040240 0000C012 */ mflo $t8 -/* 074D74 7F040244 00000000 */ nop -/* 074D78 7F040248 00000000 */ nop -/* 074D7C 7F04024C 0306001A */ div $zero, $t8, $a2 -/* 074D80 7F040250 00004012 */ mflo $t0 -/* 074D84 7F040254 A0680000 */ sb $t0, ($v1) -/* 074D88 7F040258 A1440000 */ sb $a0, ($t2) -/* 074D8C 7F04025C 14C00002 */ bnez $a2, .L7F040268 -/* 074D90 7F040260 00000000 */ nop -/* 074D94 7F040264 0007000D */ break 7 -.L7F040268: -/* 074D98 7F040268 2401FFFF */ li $at, -1 -/* 074D9C 7F04026C 14C10004 */ bne $a2, $at, .L7F040280 -/* 074DA0 7F040270 3C018000 */ lui $at, 0x8000 -/* 074DA4 7F040274 17010002 */ bne $t8, $at, .L7F040280 -/* 074DA8 7F040278 00000000 */ nop -/* 074DAC 7F04027C 0006000D */ break 6 -.L7F040280: -/* 074DB0 7F040280 90FF0001 */ lbu $ra, 1($a3) -/* 074DB4 7F040284 90ED0000 */ lbu $t5, ($a3) -/* 074DB8 7F040288 90EB0002 */ lbu $t3, 2($a3) -.L7F04028C: -/* 074DBC 7F04028C 000DC842 */ srl $t9, $t5, 1 -/* 074DC0 7F040290 001F7042 */ srl $t6, $ra, 1 -/* 074DC4 7F040294 000B7842 */ srl $t7, $t3, 1 -/* 074DC8 7F040298 A0F90000 */ sb $t9, ($a3) -/* 074DCC 7F04029C A0EE0001 */ sb $t6, 1($a3) -/* 074DD0 7F0402A0 A0EF0002 */ sb $t7, 2($a3) -/* 074DD4 7F0402A4 8FBF0014 */ lw $ra, 0x14($sp) -/* 074DD8 7F0402A8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 074DDC 7F0402AC 03E00008 */ jr $ra -/* 074DE0 7F0402B0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0402B4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0402B4 -/* 074DE4 7F0402B4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 074DE8 7F0402B8 AFBF0014 */ sw $ra, 0x14($sp) -/* 074DEC 7F0402BC 8C820004 */ lw $v0, 4($a0) -/* 074DF0 7F0402C0 8C4E0008 */ lw $t6, 8($v0) -/* 074DF4 7F0402C4 31CF0400 */ andi $t7, $t6, 0x400 -/* 074DF8 7F0402C8 55E0000E */ bnezl $t7, .L7F040304 -/* 074DFC 7F0402CC 8FBF0014 */ lw $ra, 0x14($sp) -/* 074E00 7F0402D0 0FC10027 */ jal set_color_shading_from_tile -/* 074E04 7F0402D4 AFA5001C */ sw $a1, 0x1c($sp) -/* 074E08 7F0402D8 8FA5001C */ lw $a1, 0x1c($sp) -/* 074E0C 7F0402DC 90B80000 */ lbu $t8, ($a1) -/* 074E10 7F0402E0 90A80001 */ lbu $t0, 1($a1) -/* 074E14 7F0402E4 90AA0002 */ lbu $t2, 2($a1) -/* 074E18 7F0402E8 0018C842 */ srl $t9, $t8, 1 -/* 074E1C 7F0402EC 00084842 */ srl $t1, $t0, 1 -/* 074E20 7F0402F0 000A5842 */ srl $t3, $t2, 1 -/* 074E24 7F0402F4 A0B90000 */ sb $t9, ($a1) -/* 074E28 7F0402F8 A0A90001 */ sb $t1, 1($a1) -/* 074E2C 7F0402FC A0AB0002 */ sb $t3, 2($a1) -/* 074E30 7F040300 8FBF0014 */ lw $ra, 0x14($sp) -.L7F040304: -/* 074E34 7F040304 27BD0018 */ addiu $sp, $sp, 0x18 -/* 074E38 7F040308 03E00008 */ jr $ra -/* 074E3C 7F04030C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void update_color_shading(void) { - -} -#else -GLOBAL_ASM( -.text -glabel update_color_shading -/* 074E40 7F040310 90880000 */ lbu $t0, ($a0) -/* 074E44 7F040314 90AE0000 */ lbu $t6, ($a1) -/* 074E48 7F040318 90890001 */ lbu $t1, 1($a0) -/* 074E4C 7F04031C 908A0002 */ lbu $t2, 2($a0) -/* 074E50 7F040320 01C81023 */ subu $v0, $t6, $t0 -/* 074E54 7F040324 244F0007 */ addiu $t7, $v0, 7 -/* 074E58 7F040328 000FC0C3 */ sra $t8, $t7, 3 -/* 074E5C 7F04032C 01181821 */ addu $v1, $t0, $t8 -/* 074E60 7F040330 A0830000 */ sb $v1, ($a0) -/* 074E64 7F040334 90B90001 */ lbu $t9, 1($a1) -/* 074E68 7F040338 908B0003 */ lbu $t3, 3($a0) -/* 074E6C 7F04033C 03291023 */ subu $v0, $t9, $t1 -/* 074E70 7F040340 244C0007 */ addiu $t4, $v0, 7 -/* 074E74 7F040344 000C68C3 */ sra $t5, $t4, 3 -/* 074E78 7F040348 012D1821 */ addu $v1, $t1, $t5 -/* 074E7C 7F04034C A0830001 */ sb $v1, 1($a0) -/* 074E80 7F040350 90AE0002 */ lbu $t6, 2($a1) -/* 074E84 7F040354 01CA1023 */ subu $v0, $t6, $t2 -/* 074E88 7F040358 244F0007 */ addiu $t7, $v0, 7 -/* 074E8C 7F04035C 000FC0C3 */ sra $t8, $t7, 3 -/* 074E90 7F040360 01581821 */ addu $v1, $t2, $t8 -/* 074E94 7F040364 A0830002 */ sb $v1, 2($a0) -/* 074E98 7F040368 90B90003 */ lbu $t9, 3($a1) -/* 074E9C 7F04036C 032B1023 */ subu $v0, $t9, $t3 -/* 074EA0 7F040370 244C0007 */ addiu $t4, $v0, 7 -/* 074EA4 7F040374 000C68C3 */ sra $t5, $t4, 3 -/* 074EA8 7F040378 016D1821 */ addu $v1, $t3, $t5 -/* 074EAC 7F04037C 03E00008 */ jr $ra -/* 074EB0 7F040380 A0830003 */ sb $v1, 3($a0) -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F040384(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F040384 -/* 074EB4 7F040384 24010001 */ li $at, 1 -/* 074EB8 7F040388 14A1003C */ bne $a1, $at, .L7F04047C -/* 074EBC 7F04038C 3C01437F */ li $at, 0x437F0000 # 255.000000 -/* 074EC0 7F040390 44811000 */ mtc1 $at, $f2 -/* 074EC4 7F040394 C4C40000 */ lwc1 $f4, ($a2) -/* 074EC8 7F040398 C4C80004 */ lwc1 $f8, 4($a2) -/* 074ECC 7F04039C C4D00008 */ lwc1 $f16, 8($a2) -/* 074ED0 7F0403A0 46022182 */ mul.s $f6, $f4, $f2 -/* 074ED4 7F0403A4 00000000 */ nop -/* 074ED8 7F0403A8 46024282 */ mul.s $f10, $f8, $f2 -/* 074EDC 7F0403AC 00000000 */ nop -/* 074EE0 7F0403B0 46028482 */ mul.s $f18, $f16, $f2 -/* 074EE4 7F0403B4 E4C60000 */ swc1 $f6, ($a2) -/* 074EE8 7F0403B8 C4C80000 */ lwc1 $f8, ($a2) -/* 074EEC 7F0403BC C4C6000C */ lwc1 $f6, 0xc($a2) -/* 074EF0 7F0403C0 E4CA0004 */ swc1 $f10, 4($a2) -/* 074EF4 7F0403C4 E4D20008 */ swc1 $f18, 8($a2) -/* 074EF8 7F0403C8 8C8E0000 */ lw $t6, ($a0) -/* 074EFC 7F0403CC 8C990004 */ lw $t9, 4($a0) -/* 074F00 7F0403D0 8C8A0008 */ lw $t2, 8($a0) -/* 074F04 7F0403D4 448E2000 */ mtc1 $t6, $f4 -/* 074F08 7F0403D8 8C8D000C */ lw $t5, 0xc($a0) -/* 074F0C 7F0403DC 46802020 */ cvt.s.w $f0, $f4 -/* 074F10 7F0403E0 46004281 */ sub.s $f10, $f8, $f0 -/* 074F14 7F0403E4 44994000 */ mtc1 $t9, $f8 -/* 074F18 7F0403E8 460A3402 */ mul.s $f16, $f6, $f10 -/* 074F1C 7F0403EC 46008480 */ add.s $f18, $f16, $f0 -/* 074F20 7F0403F0 46804020 */ cvt.s.w $f0, $f8 -/* 074F24 7F0403F4 4600910D */ trunc.w.s $f4, $f18 -/* 074F28 7F0403F8 44182000 */ mfc1 $t8, $f4 -/* 074F2C 7F0403FC 00000000 */ nop -/* 074F30 7F040400 AC980000 */ sw $t8, ($a0) -/* 074F34 7F040404 C4CA0004 */ lwc1 $f10, 4($a2) -/* 074F38 7F040408 C4C6000C */ lwc1 $f6, 0xc($a2) -/* 074F3C 7F04040C 46005401 */ sub.s $f16, $f10, $f0 -/* 074F40 7F040410 448A5000 */ mtc1 $t2, $f10 -/* 074F44 7F040414 46103482 */ mul.s $f18, $f6, $f16 -/* 074F48 7F040418 46009100 */ add.s $f4, $f18, $f0 -/* 074F4C 7F04041C 46805020 */ cvt.s.w $f0, $f10 -/* 074F50 7F040420 4600220D */ trunc.w.s $f8, $f4 -/* 074F54 7F040424 44094000 */ mfc1 $t1, $f8 -/* 074F58 7F040428 00000000 */ nop -/* 074F5C 7F04042C AC890004 */ sw $t1, 4($a0) -/* 074F60 7F040430 C4D00008 */ lwc1 $f16, 8($a2) -/* 074F64 7F040434 C4C6000C */ lwc1 $f6, 0xc($a2) -/* 074F68 7F040438 46008481 */ sub.s $f18, $f16, $f0 -/* 074F6C 7F04043C 448D8000 */ mtc1 $t5, $f16 -/* 074F70 7F040440 46123102 */ mul.s $f4, $f6, $f18 -/* 074F74 7F040444 46002200 */ add.s $f8, $f4, $f0 -/* 074F78 7F040448 46808020 */ cvt.s.w $f0, $f16 -/* 074F7C 7F04044C 4600428D */ trunc.w.s $f10, $f8 -/* 074F80 7F040450 46001481 */ sub.s $f18, $f2, $f0 -/* 074F84 7F040454 440C5000 */ mfc1 $t4, $f10 -/* 074F88 7F040458 00000000 */ nop -/* 074F8C 7F04045C AC8C0008 */ sw $t4, 8($a0) -/* 074F90 7F040460 C4C6000C */ lwc1 $f6, 0xc($a2) -/* 074F94 7F040464 46123102 */ mul.s $f4, $f6, $f18 -/* 074F98 7F040468 46002200 */ add.s $f8, $f4, $f0 -/* 074F9C 7F04046C 4600428D */ trunc.w.s $f10, $f8 -/* 074FA0 7F040470 440F5000 */ mfc1 $t7, $f10 -/* 074FA4 7F040474 00000000 */ nop -/* 074FA8 7F040478 AC8F000C */ sw $t7, 0xc($a0) -.L7F04047C: -/* 074FAC 7F04047C 03E00008 */ jr $ra -/* 074FB0 7F040480 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F040484(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F040484 -/* 074FB4 7F040484 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 074FB8 7F040488 AFBF001C */ sw $ra, 0x1c($sp) -/* 074FBC 7F04048C AFB00018 */ sw $s0, 0x18($sp) -/* 074FC0 7F040490 8C8E0068 */ lw $t6, 0x68($a0) -/* 074FC4 7F040494 00808025 */ move $s0, $a0 -/* 074FC8 7F040498 51C00028 */ beql $t6, $zero, .L7F04053C -/* 074FCC 7F04049C 8FBF001C */ lw $ra, 0x1c($sp) -/* 074FD0 7F0404A0 0FC1001E */ jal sub_GAME_7F040078 -/* 074FD4 7F0404A4 00000000 */ nop -/* 074FD8 7F0404A8 AFA20064 */ sw $v0, 0x64($sp) -/* 074FDC 7F0404AC 26040018 */ addiu $a0, $s0, 0x18 -/* 074FE0 7F0404B0 0FC16008 */ jal sub_GAME_7F058020 -/* 074FE4 7F0404B4 27A50024 */ addiu $a1, $sp, 0x24 -/* 074FE8 7F0404B8 26040058 */ addiu $a0, $s0, 0x58 -/* 074FEC 7F0404BC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 074FF0 7F0404C0 27A50024 */ addiu $a1, $sp, 0x24 -/* 074FF4 7F0404C4 8E070068 */ lw $a3, 0x68($s0) -/* 074FF8 7F0404C8 8FA40064 */ lw $a0, 0x64($sp) -/* 074FFC 7F0404CC 27A50024 */ addiu $a1, $sp, 0x24 -/* 075000 7F0404D0 0FC0FD50 */ jal sub_GAME_7F03F540 -/* 075004 7F0404D4 24E60004 */ addiu $a2, $a3, 4 -/* 075008 7F0404D8 8FA40064 */ lw $a0, 0x64($sp) -/* 07500C 7F0404DC 0FC0FA6F */ jal sub_GAME_7F03E9BC -/* 075010 7F0404E0 27A50024 */ addiu $a1, $sp, 0x24 -/* 075014 7F0404E4 C604005C */ lwc1 $f4, 0x5c($s0) -/* 075018 7F0404E8 8E0F0068 */ lw $t7, 0x68($s0) -/* 07501C 7F0404EC 27A50024 */ addiu $a1, $sp, 0x24 -/* 075020 7F0404F0 46040180 */ add.s $f6, $f0, $f4 -/* 075024 7F0404F4 E5E60048 */ swc1 $f6, 0x48($t7) -/* 075028 7F0404F8 0FC0FA97 */ jal sub_GAME_7F03EA5C -/* 07502C 7F0404FC 8FA40064 */ lw $a0, 0x64($sp) -/* 075030 7F040500 C608005C */ lwc1 $f8, 0x5c($s0) -/* 075034 7F040504 8E180068 */ lw $t8, 0x68($s0) -/* 075038 7F040508 24010028 */ li $at, 40 -/* 07503C 7F04050C 46080280 */ add.s $f10, $f0, $f8 -/* 075040 7F040510 E70A0044 */ swc1 $f10, 0x44($t8) -/* 075044 7F040514 92190003 */ lbu $t9, 3($s0) -/* 075048 7F040518 57210008 */ bnel $t9, $at, .L7F04053C -/* 07504C 7F04051C 8FBF001C */ lw $ra, 0x1c($sp) -/* 075050 7F040520 8E070068 */ lw $a3, 0x68($s0) -/* 075054 7F040524 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 075058 7F040528 44819000 */ mtc1 $at, $f18 -/* 07505C 7F04052C C4F00048 */ lwc1 $f16, 0x48($a3) -/* 075060 7F040530 46128101 */ sub.s $f4, $f16, $f18 -/* 075064 7F040534 E4E40048 */ swc1 $f4, 0x48($a3) -/* 075068 7F040538 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04053C: -/* 07506C 7F04053C 8FB00018 */ lw $s0, 0x18($sp) -/* 075070 7F040540 27BD0068 */ addiu $sp, $sp, 0x68 -/* 075074 7F040544 03E00008 */ jr $ra -/* 075078 7F040548 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void init_standard_object(void) { - -} -#else -GLOBAL_ASM( -.text -glabel init_standard_object -/* 07507C 7F04054C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 075080 7F040550 AFB10018 */ sw $s1, 0x18($sp) -/* 075084 7F040554 AFB00014 */ sw $s0, 0x14($sp) -/* 075088 7F040558 00808025 */ move $s0, $a0 -/* 07508C 7F04055C 00C08825 */ move $s1, $a2 -/* 075090 7F040560 14C00007 */ bnez $a2, .L7F040580 -/* 075094 7F040564 AFBF001C */ sw $ra, 0x1c($sp) -/* 075098 7F040568 AFA50024 */ sw $a1, 0x24($sp) -/* 07509C 7F04056C 0FC0E90C */ jal remove_last_obj_pos_data_entry -/* 0750A0 7F040570 AFA7002C */ sw $a3, 0x2c($sp) -/* 0750A4 7F040574 8FA50024 */ lw $a1, 0x24($sp) -/* 0750A8 7F040578 8FA7002C */ lw $a3, 0x2c($sp) -/* 0750AC 7F04057C 00408825 */ move $s1, $v0 -.L7F040580: -/* 0750B0 7F040580 14E0000C */ bnez $a3, .L7F0405B4 -/* 0750B4 7F040584 00000000 */ nop -/* 0750B8 7F040588 920E0003 */ lbu $t6, 3($s0) -/* 0750BC 7F04058C 24010028 */ li $at, 40 -/* 0750C0 7F040590 15C10005 */ bne $t6, $at, .L7F0405A8 -/* 0750C4 7F040594 00000000 */ nop -/* 0750C8 7F040598 0FC1B08F */ jal get_aircraft_obj_instance_controller -/* 0750CC 7F04059C 00A02025 */ move $a0, $a1 -/* 0750D0 7F0405A0 10000004 */ b .L7F0405B4 -/* 0750D4 7F0405A4 00403825 */ move $a3, $v0 -.L7F0405A8: -/* 0750D8 7F0405A8 0FC1B025 */ jal get_obj_instance_controller_for_header -/* 0750DC 7F0405AC 00A02025 */ move $a0, $a1 -/* 0750E0 7F0405B0 00403825 */ move $a3, $v0 -.L7F0405B4: -/* 0750E4 7F0405B4 12200039 */ beqz $s1, .L7F04069C -/* 0750E8 7F0405B8 00000000 */ nop -/* 0750EC 7F0405BC 10E00037 */ beqz $a3, .L7F04069C -/* 0750F0 7F0405C0 00000000 */ nop -/* 0750F4 7F0405C4 8E0F0008 */ lw $t7, 8($s0) -/* 0750F8 7F0405C8 AE070014 */ sw $a3, 0x14($s0) -/* 0750FC 7F0405CC AE000068 */ sw $zero, 0x68($s0) -/* 075100 7F0405D0 31F80100 */ andi $t8, $t7, 0x100 -/* 075104 7F0405D4 13000008 */ beqz $t8, .L7F0405F8 -/* 075108 7F0405D8 24040050 */ li $a0, 80 -/* 07510C 7F0405DC 0C0025C8 */ jal allocate_bytes_in_bank -/* 075110 7F0405E0 24050004 */ li $a1, 4 -/* 075114 7F0405E4 92190002 */ lbu $t9, 2($s0) -/* 075118 7F0405E8 AE020068 */ sw $v0, 0x68($s0) -/* 07511C 7F0405EC 37280008 */ ori $t0, $t9, 8 -/* 075120 7F0405F0 10000004 */ b .L7F040604 -/* 075124 7F0405F4 A2080002 */ sb $t0, 2($s0) -.L7F0405F8: -/* 075128 7F0405F8 92090002 */ lbu $t1, 2($s0) -/* 07512C 7F0405FC 312AFFF7 */ andi $t2, $t1, 0xfff7 -/* 075130 7F040600 A20A0002 */ sb $t2, 2($s0) -.L7F040604: -/* 075134 7F040604 44800000 */ mtc1 $zero, $f0 -/* 075138 7F040608 8E0C0014 */ lw $t4, 0x14($s0) -/* 07513C 7F04060C AE110010 */ sw $s1, 0x10($s0) -/* 075140 7F040610 AE00006C */ sw $zero, 0x6c($s0) -/* 075144 7F040614 A2000078 */ sb $zero, 0x78($s0) -/* 075148 7F040618 A2000079 */ sb $zero, 0x79($s0) -/* 07514C 7F04061C A200007A */ sb $zero, 0x7a($s0) -/* 075150 7F040620 A200007B */ sb $zero, 0x7b($s0) -/* 075154 7F040624 A200007C */ sb $zero, 0x7c($s0) -/* 075158 7F040628 A200007D */ sb $zero, 0x7d($s0) -/* 07515C 7F04062C A200007E */ sb $zero, 0x7e($s0) -/* 075160 7F040630 A200007F */ sb $zero, 0x7f($s0) -/* 075164 7F040634 240BFFFF */ li $t3, -1 -/* 075168 7F040638 E6000070 */ swc1 $f0, 0x70($s0) -/* 07516C 7F04063C A58B0000 */ sh $t3, ($t4) -/* 075170 7F040640 8E0D0014 */ lw $t5, 0x14($s0) -/* 075174 7F040644 3C058004 */ lui $a1, %hi(PitemZ_entries+8) -/* 075178 7F040648 ADA00004 */ sw $zero, 4($t5) -/* 07517C 7F04064C 860E0004 */ lh $t6, 4($s0) -/* 075180 7F040650 8E040014 */ lw $a0, 0x14($s0) -/* 075184 7F040654 000E7880 */ sll $t7, $t6, 2 -/* 075188 7F040658 01EE7823 */ subu $t7, $t7, $t6 -/* 07518C 7F04065C 000F7880 */ sll $t7, $t7, 2 -/* 075190 7F040660 00AF2821 */ addu $a1, $a1, $t7 -/* 075194 7F040664 0FC1B39E */ jal set_obj_instance_controller_scale -/* 075198 7F040668 8CA5A230 */ lw $a1, %lo(PitemZ_entries+8)($a1) -/* 07519C 7F04066C 44800000 */ mtc1 $zero, $f0 -/* 0751A0 7F040670 24180001 */ li $t8, 1 -/* 0751A4 7F040674 A2380000 */ sb $t8, ($s1) -/* 0751A8 7F040678 AE300004 */ sw $s0, 4($s1) -/* 0751AC 7F04067C E6200008 */ swc1 $f0, 8($s1) -/* 0751B0 7F040680 E6000058 */ swc1 $f0, 0x58($s0) -/* 0751B4 7F040684 E620000C */ swc1 $f0, 0xc($s1) -/* 0751B8 7F040688 E600005C */ swc1 $f0, 0x5c($s0) -/* 0751BC 7F04068C E6200010 */ swc1 $f0, 0x10($s1) -/* 0751C0 7F040690 E6000060 */ swc1 $f0, 0x60($s0) -/* 0751C4 7F040694 10000012 */ b .L7F0406E0 -/* 0751C8 7F040698 AE200014 */ sw $zero, 0x14($s1) -.L7F04069C: -/* 0751CC 7F04069C 10E0000B */ beqz $a3, .L7F0406CC -/* 0751D0 7F0406A0 00000000 */ nop -/* 0751D4 7F0406A4 92190003 */ lbu $t9, 3($s0) -/* 0751D8 7F0406A8 24010028 */ li $at, 40 -/* 0751DC 7F0406AC 17210005 */ bne $t9, $at, .L7F0406C4 -/* 0751E0 7F0406B0 00000000 */ nop -/* 0751E4 7F0406B4 0FC1B0FE */ jal set_aircraft_obj_inst_scale_to_zero -/* 0751E8 7F0406B8 00E02025 */ move $a0, $a3 -/* 0751EC 7F0406BC 10000003 */ b .L7F0406CC -/* 0751F0 7F0406C0 00000000 */ nop -.L7F0406C4: -/* 0751F4 7F0406C4 0FC1B08D */ jal set_obj_instance_scale_to_zero -/* 0751F8 7F0406C8 00E02025 */ move $a0, $a3 -.L7F0406CC: -/* 0751FC 7F0406CC 52200005 */ beql $s1, $zero, .L7F0406E4 -/* 075200 7F0406D0 8FBF001C */ lw $ra, 0x1c($sp) -/* 075204 7F0406D4 0FC0E921 */ jal set_last_obj_pos_data -/* 075208 7F0406D8 02202025 */ move $a0, $s1 -/* 07520C 7F0406DC 00008825 */ move $s1, $zero -.L7F0406E0: -/* 075210 7F0406E0 8FBF001C */ lw $ra, 0x1c($sp) -.L7F0406E4: -/* 075214 7F0406E4 02201025 */ move $v0, $s1 -/* 075218 7F0406E8 8FB10018 */ lw $s1, 0x18($sp) -/* 07521C 7F0406EC 8FB00014 */ lw $s0, 0x14($sp) -/* 075220 7F0406F0 03E00008 */ jr $ra -/* 075224 7F0406F4 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0406F8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0406F8 -/* 075228 7F0406F8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 07522C 7F0406FC AFBF0014 */ sw $ra, 0x14($sp) -/* 075230 7F040700 00003025 */ move $a2, $zero -/* 075234 7F040704 0FC10153 */ jal init_standard_object -/* 075238 7F040708 00003825 */ move $a3, $zero -/* 07523C 7F04070C 8FBF0014 */ lw $ra, 0x14($sp) -/* 075240 7F040710 27BD0018 */ addiu $sp, $sp, 0x18 -/* 075244 7F040714 03E00008 */ jr $ra -/* 075248 7F040718 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04071C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04071C -/* 07524C 7F04071C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 075250 7F040720 AFBF0014 */ sw $ra, 0x14($sp) -/* 075254 7F040724 848E0004 */ lh $t6, 4($a0) -/* 075258 7F040728 3C058004 */ lui $a1, %hi(PitemZ_entries) -/* 07525C 7F04072C 000E7880 */ sll $t7, $t6, 2 -/* 075260 7F040730 01EE7823 */ subu $t7, $t7, $t6 -/* 075264 7F040734 000F7880 */ sll $t7, $t7, 2 -/* 075268 7F040738 00AF2821 */ addu $a1, $a1, $t7 -/* 07526C 7F04073C 0FC101BE */ jal sub_GAME_7F0406F8 -/* 075270 7F040740 8CA5A228 */ lw $a1, %lo(PitemZ_entries)($a1) -/* 075274 7F040744 8FBF0014 */ lw $ra, 0x14($sp) -/* 075278 7F040748 27BD0018 */ addiu $sp, $sp, 0x18 -/* 07527C 7F04074C 03E00008 */ jr $ra -/* 075280 7F040750 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F040754(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F040754 -/* 075284 7F040754 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 075288 7F040758 AFBF001C */ sw $ra, 0x1c($sp) -/* 07528C 7F04075C AFB00018 */ sw $s0, 0x18($sp) -/* 075290 7F040760 AFA5002C */ sw $a1, 0x2c($sp) -/* 075294 7F040764 AFA70034 */ sw $a3, 0x34($sp) -/* 075298 7F040768 8C820010 */ lw $v0, 0x10($a0) -/* 07529C 7F04076C 00808025 */ move $s0, $a0 -/* 0752A0 7F040770 26050018 */ addiu $a1, $s0, 0x18 -/* 0752A4 7F040774 00C02025 */ move $a0, $a2 -/* 0752A8 7F040778 0FC16008 */ jal sub_GAME_7F058020 -/* 0752AC 7F04077C AFA20024 */ sw $v0, 0x24($sp) -/* 0752B0 7F040780 8FA3002C */ lw $v1, 0x2c($sp) -/* 0752B4 7F040784 8FA20024 */ lw $v0, 0x24($sp) -/* 0752B8 7F040788 2605007C */ addiu $a1, $s0, 0x7c -/* 0752BC 7F04078C C4600000 */ lwc1 $f0, ($v1) -/* 0752C0 7F040790 E4400008 */ swc1 $f0, 8($v0) -/* 0752C4 7F040794 E6000058 */ swc1 $f0, 0x58($s0) -/* 0752C8 7F040798 C4600004 */ lwc1 $f0, 4($v1) -/* 0752CC 7F04079C E440000C */ swc1 $f0, 0xc($v0) -/* 0752D0 7F0407A0 E600005C */ swc1 $f0, 0x5c($s0) -/* 0752D4 7F0407A4 C4600008 */ lwc1 $f0, 8($v1) -/* 0752D8 7F0407A8 E4400010 */ swc1 $f0, 0x10($v0) -/* 0752DC 7F0407AC E6000060 */ swc1 $f0, 0x60($s0) -/* 0752E0 7F0407B0 8FAE0034 */ lw $t6, 0x34($sp) -/* 0752E4 7F0407B4 AC4E0014 */ sw $t6, 0x14($v0) -/* 0752E8 7F0407B8 0FC100AD */ jal sub_GAME_7F0402B4 -/* 0752EC 7F0407BC 8E040010 */ lw $a0, 0x10($s0) -/* 0752F0 7F0407C0 920F007C */ lbu $t7, 0x7c($s0) -/* 0752F4 7F0407C4 9218007D */ lbu $t8, 0x7d($s0) -/* 0752F8 7F0407C8 9219007E */ lbu $t9, 0x7e($s0) -/* 0752FC 7F0407CC 9208007F */ lbu $t0, 0x7f($s0) -/* 075300 7F0407D0 A20F0078 */ sb $t7, 0x78($s0) -/* 075304 7F0407D4 A2180079 */ sb $t8, 0x79($s0) -/* 075308 7F0407D8 A219007A */ sb $t9, 0x7a($s0) -/* 07530C 7F0407DC A208007B */ sb $t0, 0x7b($s0) -/* 075310 7F0407E0 8FBF001C */ lw $ra, 0x1c($sp) -/* 075314 7F0407E4 8FB00018 */ lw $s0, 0x18($sp) -/* 075318 7F0407E8 27BD0028 */ addiu $sp, $sp, 0x28 -/* 07531C 7F0407EC 03E00008 */ jr $ra -/* 075320 7F0407F0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0407F4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0407F4 -/* 075324 7F0407F4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 075328 7F0407F8 AFBF001C */ sw $ra, 0x1c($sp) -/* 07532C 7F0407FC AFB00018 */ sw $s0, 0x18($sp) -/* 075330 7F040800 AFA40028 */ sw $a0, 0x28($sp) -/* 075334 7F040804 AFA60030 */ sw $a2, 0x30($sp) -/* 075338 7F040808 AFA70034 */ sw $a3, 0x34($sp) -/* 07533C 7F04080C 8C8F0014 */ lw $t7, 0x14($a0) -/* 075340 7F040810 00A08025 */ move $s0, $a1 -/* 075344 7F040814 0FC0FFFE */ jal sub_GAME_7F03FFF8 -/* 075348 7F040818 8DE40008 */ lw $a0, 8($t7) -/* 07534C 7F04081C AFA20020 */ sw $v0, 0x20($sp) -/* 075350 7F040820 8E060008 */ lw $a2, 8($s0) -/* 075354 7F040824 8E050000 */ lw $a1, ($s0) -/* 075358 7F040828 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 07535C 7F04082C 8FA40034 */ lw $a0, 0x34($sp) -/* 075360 7F040830 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 075364 7F040834 44812000 */ mtc1 $at, $f4 -/* 075368 7F040838 00000000 */ nop -/* 07536C 7F04083C 46040180 */ add.s $f6, $f0, $f4 -/* 075370 7F040840 E6060004 */ swc1 $f6, 4($s0) -/* 075374 7F040844 8FA50030 */ lw $a1, 0x30($sp) -/* 075378 7F040848 0FC0FA6F */ jal sub_GAME_7F03E9BC -/* 07537C 7F04084C 8FA40020 */ lw $a0, 0x20($sp) -/* 075380 7F040850 C6080004 */ lwc1 $f8, 4($s0) -/* 075384 7F040854 02002825 */ move $a1, $s0 -/* 075388 7F040858 46004281 */ sub.s $f10, $f8, $f0 -/* 07538C 7F04085C E60A0004 */ swc1 $f10, 4($s0) -/* 075390 7F040860 8FA70034 */ lw $a3, 0x34($sp) -/* 075394 7F040864 8FA60030 */ lw $a2, 0x30($sp) -/* 075398 7F040868 0FC101D5 */ jal sub_GAME_7F040754 -/* 07539C 7F04086C 8FA40028 */ lw $a0, 0x28($sp) -/* 0753A0 7F040870 0FC10121 */ jal sub_GAME_7F040484 -/* 0753A4 7F040874 8FA40028 */ lw $a0, 0x28($sp) -/* 0753A8 7F040878 8FBF001C */ lw $ra, 0x1c($sp) -/* 0753AC 7F04087C 8FB00018 */ lw $s0, 0x18($sp) -/* 0753B0 7F040880 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0753B4 7F040884 03E00008 */ jr $ra -/* 0753B8 7F040888 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04088C(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A4C -.word 0x40490fdb /*3.1415927*/ -.text -glabel sub_GAME_7F04088C -/* 0753BC 7F04088C 27BDFF58 */ addiu $sp, $sp, -0xa8 -/* 0753C0 7F040890 AFBF0024 */ sw $ra, 0x24($sp) -/* 0753C4 7F040894 AFB00020 */ sw $s0, 0x20($sp) -/* 0753C8 7F040898 AFA500AC */ sw $a1, 0xac($sp) -/* 0753CC 7F04089C AFA600B0 */ sw $a2, 0xb0($sp) -/* 0753D0 7F0408A0 AFA700B4 */ sw $a3, 0xb4($sp) -/* 0753D4 7F0408A4 8C8E0014 */ lw $t6, 0x14($a0) -/* 0753D8 7F0408A8 00808025 */ move $s0, $a0 -/* 0753DC 7F0408AC 0FC0FFFE */ jal sub_GAME_7F03FFF8 -/* 0753E0 7F0408B0 8DC40008 */ lw $a0, 8($t6) -/* 0753E4 7F0408B4 AFA200A0 */ sw $v0, 0xa0($sp) -/* 0753E8 7F0408B8 0FC0FA19 */ jal sub_GAME_7F03E864 -/* 0753EC 7F0408BC 00402025 */ move $a0, $v0 -/* 0753F0 7F0408C0 8FA400A0 */ lw $a0, 0xa0($sp) -/* 0753F4 7F0408C4 0FC0FA1B */ jal sub_GAME_7F03E86C -/* 0753F8 7F0408C8 E7A0009C */ swc1 $f0, 0x9c($sp) -/* 0753FC 7F0408CC 8FA700B4 */ lw $a3, 0xb4($sp) -/* 075400 7F0408D0 E7A00098 */ swc1 $f0, 0x98($sp) -/* 075404 7F0408D4 C7A2009C */ lwc1 $f2, 0x9c($sp) -/* 075408 7F0408D8 AFA70088 */ sw $a3, 0x88($sp) -/* 07540C 7F0408DC 8E020008 */ lw $v0, 8($s0) -/* 075410 7F0408E0 3C018005 */ lui $at, %hi(D_80052A4C) -/* 075414 7F0408E4 27A50048 */ addiu $a1, $sp, 0x48 -/* 075418 7F0408E8 304F0004 */ andi $t7, $v0, 4 -/* 07541C 7F0408EC 11E00018 */ beqz $t7, .L7F040950 -/* 075420 7F0408F0 30580008 */ andi $t8, $v0, 8 -/* 075424 7F0408F4 0FC161A2 */ jal sub_GAME_7F058688 -/* 075428 7F0408F8 C42C2A4C */ lwc1 $f12, %lo(D_80052A4C)($at) -/* 07542C 7F0408FC 8FA400B0 */ lw $a0, 0xb0($sp) -/* 075430 7F040900 0FC1601A */ jal sub_GAME_7F058068 -/* 075434 7F040904 27A50048 */ addiu $a1, $sp, 0x48 -/* 075438 7F040908 C7A00098 */ lwc1 $f0, 0x98($sp) -/* 07543C 7F04090C C7A60058 */ lwc1 $f6, 0x58($sp) -/* 075440 7F040910 8FA200B8 */ lw $v0, 0xb8($sp) -/* 075444 7F040914 C7B2005C */ lwc1 $f18, 0x5c($sp) -/* 075448 7F040918 46003202 */ mul.s $f8, $f6, $f0 -/* 07544C 7F04091C C4440000 */ lwc1 $f4, ($v0) -/* 075450 7F040920 46009182 */ mul.s $f6, $f18, $f0 -/* 075454 7F040924 46082281 */ sub.s $f10, $f4, $f8 -/* 075458 7F040928 E7AA008C */ swc1 $f10, 0x8c($sp) -/* 07545C 7F04092C C4500004 */ lwc1 $f16, 4($v0) -/* 075460 7F040930 C7AA0060 */ lwc1 $f10, 0x60($sp) -/* 075464 7F040934 46068101 */ sub.s $f4, $f16, $f6 -/* 075468 7F040938 46005482 */ mul.s $f18, $f10, $f0 -/* 07546C 7F04093C E7A40090 */ swc1 $f4, 0x90($sp) -/* 075470 7F040940 C4480008 */ lwc1 $f8, 8($v0) -/* 075474 7F040944 46124401 */ sub.s $f16, $f8, $f18 -/* 075478 7F040948 10000068 */ b .L7F040AEC -/* 07547C 7F04094C E7B00094 */ swc1 $f16, 0x94($sp) -.L7F040950: -/* 075480 7F040950 13000017 */ beqz $t8, .L7F0409B0 -/* 075484 7F040954 8FA200AC */ lw $v0, 0xac($sp) -/* 075488 7F040958 8FA400B0 */ lw $a0, 0xb0($sp) -/* 07548C 7F04095C 27A50048 */ addiu $a1, $sp, 0x48 -/* 075490 7F040960 0FC16008 */ jal sub_GAME_7F058020 -/* 075494 7F040964 E7A2009C */ swc1 $f2, 0x9c($sp) -/* 075498 7F040968 C7A2009C */ lwc1 $f2, 0x9c($sp) -/* 07549C 7F04096C C7A40058 */ lwc1 $f4, 0x58($sp) -/* 0754A0 7F040970 8FA200B8 */ lw $v0, 0xb8($sp) -/* 0754A4 7F040974 C7B0005C */ lwc1 $f16, 0x5c($sp) -/* 0754A8 7F040978 46022282 */ mul.s $f10, $f4, $f2 -/* 0754AC 7F04097C C4460000 */ lwc1 $f6, ($v0) -/* 0754B0 7F040980 46028102 */ mul.s $f4, $f16, $f2 -/* 0754B4 7F040984 460A3201 */ sub.s $f8, $f6, $f10 -/* 0754B8 7F040988 E7A8008C */ swc1 $f8, 0x8c($sp) -/* 0754BC 7F04098C C4520004 */ lwc1 $f18, 4($v0) -/* 0754C0 7F040990 C7A80060 */ lwc1 $f8, 0x60($sp) -/* 0754C4 7F040994 46049181 */ sub.s $f6, $f18, $f4 -/* 0754C8 7F040998 46024402 */ mul.s $f16, $f8, $f2 -/* 0754CC 7F04099C E7A60090 */ swc1 $f6, 0x90($sp) -/* 0754D0 7F0409A0 C44A0008 */ lwc1 $f10, 8($v0) -/* 0754D4 7F0409A4 46105481 */ sub.s $f18, $f10, $f16 -/* 0754D8 7F0409A8 10000050 */ b .L7F040AEC -/* 0754DC 7F0409AC E7B20094 */ swc1 $f18, 0x94($sp) -.L7F0409B0: -/* 0754E0 7F0409B0 8C450000 */ lw $a1, ($v0) -/* 0754E4 7F0409B4 8C460008 */ lw $a2, 8($v0) -/* 0754E8 7F0409B8 E7A2009C */ swc1 $f2, 0x9c($sp) -/* 0754EC 7F0409BC 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 0754F0 7F0409C0 00E02025 */ move $a0, $a3 -/* 0754F4 7F0409C4 8FA400B0 */ lw $a0, 0xb0($sp) -/* 0754F8 7F0409C8 27A50048 */ addiu $a1, $sp, 0x48 -/* 0754FC 7F0409CC 0FC16008 */ jal sub_GAME_7F058020 -/* 075500 7F0409D0 E7A00040 */ swc1 $f0, 0x40($sp) -/* 075504 7F0409D4 C7A2009C */ lwc1 $f2, 0x9c($sp) -/* 075508 7F0409D8 C7A60058 */ lwc1 $f6, 0x58($sp) -/* 07550C 7F0409DC 8FA200B8 */ lw $v0, 0xb8($sp) -/* 075510 7F0409E0 C7B20060 */ lwc1 $f18, 0x60($sp) -/* 075514 7F0409E4 46023202 */ mul.s $f8, $f6, $f2 -/* 075518 7F0409E8 C4440000 */ lwc1 $f4, ($v0) -/* 07551C 7F0409EC 8FB900B4 */ lw $t9, 0xb4($sp) -/* 075520 7F0409F0 46029182 */ mul.s $f6, $f18, $f2 -/* 075524 7F0409F4 8FA400AC */ lw $a0, 0xac($sp) -/* 075528 7F0409F8 46082281 */ sub.s $f10, $f4, $f8 -/* 07552C 7F0409FC E7AA008C */ swc1 $f10, 0x8c($sp) -/* 075530 7F040A00 C4500008 */ lwc1 $f16, 8($v0) -/* 075534 7F040A04 46068101 */ sub.s $f4, $f16, $f6 -/* 075538 7F040A08 E7A40094 */ swc1 $f4, 0x94($sp) -/* 07553C 7F040A0C 0FC0FEAC */ jal sub_GAME_7F03FAB0 -/* 075540 7F040A10 93250003 */ lbu $a1, 3($t9) -/* 075544 7F040A14 C7A2009C */ lwc1 $f2, 0x9c($sp) -/* 075548 7F040A18 1040002D */ beqz $v0, .L7F040AD0 -/* 07554C 7F040A1C C7AC0040 */ lwc1 $f12, 0x40($sp) -/* 075550 7F040A20 8C440010 */ lw $a0, 0x10($v0) -/* 075554 7F040A24 27A80030 */ addiu $t0, $sp, 0x30 -/* 075558 7F040A28 AFA80010 */ sw $t0, 0x10($sp) -/* 07555C 7F040A2C E7AC0040 */ swc1 $f12, 0x40($sp) -/* 075560 7F040A30 E7A2009C */ swc1 $f2, 0x9c($sp) -/* 075564 7F040A34 27A5003C */ addiu $a1, $sp, 0x3c -/* 075568 7F040A38 27A60038 */ addiu $a2, $sp, 0x38 -/* 07556C 7F040A3C 0FC0F308 */ jal sub_GAME_7F03CC20 -/* 075570 7F040A40 27A70034 */ addiu $a3, $sp, 0x34 -/* 075574 7F040A44 C7AC0040 */ lwc1 $f12, 0x40($sp) -/* 075578 7F040A48 C7A80034 */ lwc1 $f8, 0x34($sp) -/* 07557C 7F040A4C C7A2009C */ lwc1 $f2, 0x9c($sp) -/* 075580 7F040A50 C7B00098 */ lwc1 $f16, 0x98($sp) -/* 075584 7F040A54 4608603C */ c.lt.s $f12, $f8 -/* 075588 7F040A58 00000000 */ nop -/* 07558C 7F040A5C 45020015 */ bc1fl .L7F040AB4 -/* 075590 7F040A60 C7AA005C */ lwc1 $f10, 0x5c($sp) -/* 075594 7F040A64 46028181 */ sub.s $f6, $f16, $f2 -/* 075598 7F040A68 C7B2005C */ lwc1 $f18, 0x5c($sp) -/* 07559C 7F040A6C 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 0755A0 7F040A70 C7AA0030 */ lwc1 $f10, 0x30($sp) -/* 0755A4 7F040A74 46069102 */ mul.s $f4, $f18, $f6 -/* 0755A8 7F040A78 44813000 */ mtc1 $at, $f6 -/* 0755AC 7F040A7C 460C2400 */ add.s $f16, $f4, $f12 -/* 0755B0 7F040A80 46068100 */ add.s $f4, $f16, $f6 -/* 0755B4 7F040A84 4604503C */ c.lt.s $f10, $f4 -/* 0755B8 7F040A88 00000000 */ nop -/* 0755BC 7F040A8C 45020009 */ bc1fl .L7F040AB4 -/* 0755C0 7F040A90 C7AA005C */ lwc1 $f10, 0x5c($sp) -/* 0755C4 7F040A94 46029402 */ mul.s $f16, $f18, $f2 -/* 0755C8 7F040A98 46104181 */ sub.s $f6, $f8, $f16 -/* 0755CC 7F040A9C E7A60090 */ swc1 $f6, 0x90($sp) -/* 0755D0 7F040AA0 8E090064 */ lw $t1, 0x64($s0) -/* 0755D4 7F040AA4 352A8000 */ ori $t2, $t1, 0x8000 -/* 0755D8 7F040AA8 10000010 */ b .L7F040AEC -/* 0755DC 7F040AAC AE0A0064 */ sw $t2, 0x64($s0) -/* 0755E0 7F040AB0 C7AA005C */ lwc1 $f10, 0x5c($sp) -.L7F040AB4: -/* 0755E4 7F040AB4 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 0755E8 7F040AB8 44814000 */ mtc1 $at, $f8 -/* 0755EC 7F040ABC 46025102 */ mul.s $f4, $f10, $f2 -/* 0755F0 7F040AC0 46046481 */ sub.s $f18, $f12, $f4 -/* 0755F4 7F040AC4 46089400 */ add.s $f16, $f18, $f8 -/* 0755F8 7F040AC8 10000008 */ b .L7F040AEC -/* 0755FC 7F040ACC E7B00090 */ swc1 $f16, 0x90($sp) -.L7F040AD0: -/* 075600 7F040AD0 C7A6005C */ lwc1 $f6, 0x5c($sp) -/* 075604 7F040AD4 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 075608 7F040AD8 44819000 */ mtc1 $at, $f18 -/* 07560C 7F040ADC 46023282 */ mul.s $f10, $f6, $f2 -/* 075610 7F040AE0 460A6101 */ sub.s $f4, $f12, $f10 -/* 075614 7F040AE4 46122200 */ add.s $f8, $f4, $f18 -/* 075618 7F040AE8 E7A80090 */ swc1 $f8, 0x90($sp) -.L7F040AEC: -/* 07561C 7F040AEC 8E0B000C */ lw $t3, 0xc($s0) -/* 075620 7F040AF0 8FA200AC */ lw $v0, 0xac($sp) -/* 075624 7F040AF4 27A40088 */ addiu $a0, $sp, 0x88 -/* 075628 7F040AF8 316C0001 */ andi $t4, $t3, 1 -/* 07562C 7F040AFC 1580000E */ bnez $t4, .L7F040B38 -/* 075630 7F040B00 8FA7008C */ lw $a3, 0x8c($sp) -/* 075634 7F040B04 C7B00094 */ lwc1 $f16, 0x94($sp) -/* 075638 7F040B08 8C450000 */ lw $a1, ($v0) -/* 07563C 7F040B0C 8C460008 */ lw $a2, 8($v0) -/* 075640 7F040B10 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 075644 7F040B14 E7B00010 */ swc1 $f16, 0x10($sp) -/* 075648 7F040B18 10400007 */ beqz $v0, .L7F040B38 -/* 07564C 7F040B1C 02002025 */ move $a0, $s0 -/* 075650 7F040B20 27A5008C */ addiu $a1, $sp, 0x8c -/* 075654 7F040B24 27A60048 */ addiu $a2, $sp, 0x48 -/* 075658 7F040B28 0FC101D5 */ jal sub_GAME_7F040754 -/* 07565C 7F040B2C 8FA70088 */ lw $a3, 0x88($sp) -/* 075660 7F040B30 10000014 */ b .L7F040B84 -/* 075664 7F040B34 00000000 */ nop -.L7F040B38: -/* 075668 7F040B38 02002025 */ move $a0, $s0 -/* 07566C 7F040B3C 8FA500AC */ lw $a1, 0xac($sp) -/* 075670 7F040B40 27A60048 */ addiu $a2, $sp, 0x48 -/* 075674 7F040B44 0FC101D5 */ jal sub_GAME_7F040754 -/* 075678 7F040B48 8FA700B4 */ lw $a3, 0xb4($sp) -/* 07567C 7F040B4C 8E0D000C */ lw $t5, 0xc($s0) -/* 075680 7F040B50 C7A6008C */ lwc1 $f6, 0x8c($sp) -/* 075684 7F040B54 31AE0001 */ andi $t6, $t5, 1 -/* 075688 7F040B58 55C00006 */ bnezl $t6, .L7F040B74 -/* 07568C 7F040B5C E6060058 */ swc1 $f6, 0x58($s0) -/* 075690 7F040B60 8E0F0008 */ lw $t7, 8($s0) -/* 075694 7F040B64 31F81000 */ andi $t8, $t7, 0x1000 -/* 075698 7F040B68 13000006 */ beqz $t8, .L7F040B84 -/* 07569C 7F040B6C 00000000 */ nop -/* 0756A0 7F040B70 E6060058 */ swc1 $f6, 0x58($s0) -.L7F040B74: -/* 0756A4 7F040B74 C7AA0090 */ lwc1 $f10, 0x90($sp) -/* 0756A8 7F040B78 E60A005C */ swc1 $f10, 0x5c($s0) -/* 0756AC 7F040B7C C7A40094 */ lwc1 $f4, 0x94($sp) -/* 0756B0 7F040B80 E6040060 */ swc1 $f4, 0x60($s0) -.L7F040B84: -/* 0756B4 7F040B84 0FC10121 */ jal sub_GAME_7F040484 -/* 0756B8 7F040B88 02002025 */ move $a0, $s0 -/* 0756BC 7F040B8C 8FBF0024 */ lw $ra, 0x24($sp) -/* 0756C0 7F040B90 8FB00020 */ lw $s0, 0x20($sp) -/* 0756C4 7F040B94 27BD00A8 */ addiu $sp, $sp, 0xa8 -/* 0756C8 7F040B98 03E00008 */ jr $ra -/* 0756CC 7F040B9C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F040BA0(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A50 -.word 0x4096cbe4 /*4.712389*/ -glabel D_80052A54 -.word 0x40490fdb /*3.1415927*/ -.text -glabel sub_GAME_7F040BA0 -/* 0756D0 7F040BA0 27BDFF38 */ addiu $sp, $sp, -0xc8 -/* 0756D4 7F040BA4 AFBF0024 */ sw $ra, 0x24($sp) -/* 0756D8 7F040BA8 AFB00020 */ sw $s0, 0x20($sp) -/* 0756DC 7F040BAC AFA500CC */ sw $a1, 0xcc($sp) -/* 0756E0 7F040BB0 AFA600D0 */ sw $a2, 0xd0($sp) -/* 0756E4 7F040BB4 AFA700D4 */ sw $a3, 0xd4($sp) -/* 0756E8 7F040BB8 8C8E0014 */ lw $t6, 0x14($a0) -/* 0756EC 7F040BBC 00808025 */ move $s0, $a0 -/* 0756F0 7F040BC0 0FC0FFFE */ jal sub_GAME_7F03FFF8 -/* 0756F4 7F040BC4 8DC40008 */ lw $a0, 8($t6) -/* 0756F8 7F040BC8 0FC0FA1D */ jal sub_GAME_7F03E874 -/* 0756FC 7F040BCC 00402025 */ move $a0, $v0 -/* 075700 7F040BD0 8FAF00D4 */ lw $t7, 0xd4($sp) -/* 075704 7F040BD4 3C018005 */ lui $at, %hi(D_80052A50) -/* 075708 7F040BD8 E7A000BC */ swc1 $f0, 0xbc($sp) -/* 07570C 7F040BDC C42C2A50 */ lwc1 $f12, %lo(D_80052A50)($at) -/* 075710 7F040BE0 27A5006C */ addiu $a1, $sp, 0x6c -/* 075714 7F040BE4 0FC1615C */ jal sub_GAME_7F058570 -/* 075718 7F040BE8 AFAF00AC */ sw $t7, 0xac($sp) -/* 07571C 7F040BEC 3C018005 */ lui $at, %hi(D_80052A54) -/* 075720 7F040BF0 C42C2A54 */ lwc1 $f12, %lo(D_80052A54)($at) -/* 075724 7F040BF4 0FC1617F */ jal sub_GAME_7F0585FC -/* 075728 7F040BF8 27A5002C */ addiu $a1, $sp, 0x2c -/* 07572C 7F040BFC 27A4002C */ addiu $a0, $sp, 0x2c -/* 075730 7F040C00 0FC1601A */ jal sub_GAME_7F058068 -/* 075734 7F040C04 27A5006C */ addiu $a1, $sp, 0x6c -/* 075738 7F040C08 8FA400D0 */ lw $a0, 0xd0($sp) -/* 07573C 7F040C0C 0FC1601A */ jal sub_GAME_7F058068 -/* 075740 7F040C10 27A5006C */ addiu $a1, $sp, 0x6c -/* 075744 7F040C14 C7A000BC */ lwc1 $f0, 0xbc($sp) -/* 075748 7F040C18 C7A6008C */ lwc1 $f6, 0x8c($sp) -/* 07574C 7F040C1C 8FA200D8 */ lw $v0, 0xd8($sp) -/* 075750 7F040C20 C7B20090 */ lwc1 $f18, 0x90($sp) -/* 075754 7F040C24 46003202 */ mul.s $f8, $f6, $f0 -/* 075758 7F040C28 C4440000 */ lwc1 $f4, ($v0) -/* 07575C 7F040C2C 27A400AC */ addiu $a0, $sp, 0xac -/* 075760 7F040C30 46009182 */ mul.s $f6, $f18, $f0 -/* 075764 7F040C34 46082281 */ sub.s $f10, $f4, $f8 -/* 075768 7F040C38 E7AA00B0 */ swc1 $f10, 0xb0($sp) -/* 07576C 7F040C3C C4500004 */ lwc1 $f16, 4($v0) -/* 075770 7F040C40 C7AA0094 */ lwc1 $f10, 0x94($sp) -/* 075774 7F040C44 8FA700B0 */ lw $a3, 0xb0($sp) -/* 075778 7F040C48 46068101 */ sub.s $f4, $f16, $f6 -/* 07577C 7F040C4C 46005482 */ mul.s $f18, $f10, $f0 -/* 075780 7F040C50 E7A400B4 */ swc1 $f4, 0xb4($sp) -/* 075784 7F040C54 C4480008 */ lwc1 $f8, 8($v0) -/* 075788 7F040C58 8FA200CC */ lw $v0, 0xcc($sp) -/* 07578C 7F040C5C 46124401 */ sub.s $f16, $f8, $f18 -/* 075790 7F040C60 E7B000B8 */ swc1 $f16, 0xb8($sp) -/* 075794 7F040C64 8E18000C */ lw $t8, 0xc($s0) -/* 075798 7F040C68 C7A600B8 */ lwc1 $f6, 0xb8($sp) -/* 07579C 7F040C6C 33190001 */ andi $t9, $t8, 1 -/* 0757A0 7F040C70 5720000E */ bnezl $t9, .L7F040CAC -/* 0757A4 7F040C74 02002025 */ move $a0, $s0 -/* 0757A8 7F040C78 8C450000 */ lw $a1, ($v0) -/* 0757AC 7F040C7C 8C460008 */ lw $a2, 8($v0) -/* 0757B0 7F040C80 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 0757B4 7F040C84 E7A60010 */ swc1 $f6, 0x10($sp) -/* 0757B8 7F040C88 10400007 */ beqz $v0, .L7F040CA8 -/* 0757BC 7F040C8C 02002025 */ move $a0, $s0 -/* 0757C0 7F040C90 27A500B0 */ addiu $a1, $sp, 0xb0 -/* 0757C4 7F040C94 27A6006C */ addiu $a2, $sp, 0x6c -/* 0757C8 7F040C98 0FC101D5 */ jal sub_GAME_7F040754 -/* 0757CC 7F040C9C 8FA700AC */ lw $a3, 0xac($sp) -/* 0757D0 7F040CA0 1000000C */ b .L7F040CD4 -/* 0757D4 7F040CA4 00000000 */ nop -.L7F040CA8: -/* 0757D8 7F040CA8 02002025 */ move $a0, $s0 -.L7F040CAC: -/* 0757DC 7F040CAC 8FA500CC */ lw $a1, 0xcc($sp) -/* 0757E0 7F040CB0 27A6006C */ addiu $a2, $sp, 0x6c -/* 0757E4 7F040CB4 0FC101D5 */ jal sub_GAME_7F040754 -/* 0757E8 7F040CB8 8FA700D4 */ lw $a3, 0xd4($sp) -/* 0757EC 7F040CBC C7A400B0 */ lwc1 $f4, 0xb0($sp) -/* 0757F0 7F040CC0 E6040058 */ swc1 $f4, 0x58($s0) -/* 0757F4 7F040CC4 C7AA00B4 */ lwc1 $f10, 0xb4($sp) -/* 0757F8 7F040CC8 E60A005C */ swc1 $f10, 0x5c($s0) -/* 0757FC 7F040CCC C7A800B8 */ lwc1 $f8, 0xb8($sp) -/* 075800 7F040CD0 E6080060 */ swc1 $f8, 0x60($s0) -.L7F040CD4: -/* 075804 7F040CD4 0FC10121 */ jal sub_GAME_7F040484 -/* 075808 7F040CD8 02002025 */ move $a0, $s0 -/* 07580C 7F040CDC 8FBF0024 */ lw $ra, 0x24($sp) -/* 075810 7F040CE0 8FB00020 */ lw $s0, 0x20($sp) -/* 075814 7F040CE4 27BD00C8 */ addiu $sp, $sp, 0xc8 -/* 075818 7F040CE8 03E00008 */ jr $ra -/* 07581C 7F040CEC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F040CF0(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F040CF0 -/* 075820 7F040CF0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 075824 7F040CF4 AFBF0014 */ sw $ra, 0x14($sp) -/* 075828 7F040CF8 8C820004 */ lw $v0, 4($a0) -/* 07582C 7F040CFC 8C430064 */ lw $v1, 0x64($v0) -/* 075830 7F040D00 306E0040 */ andi $t6, $v1, 0x40 -/* 075834 7F040D04 11C00015 */ beqz $t6, .L7F040D5C -/* 075838 7F040D08 30780080 */ andi $t8, $v1, 0x80 -/* 07583C 7F040D0C 8C44006C */ lw $a0, 0x6c($v0) -/* 075840 7F040D10 5080000E */ beql $a0, $zero, .L7F040D4C -/* 075844 7F040D14 2401FFBF */ li $at, -65 -/* 075848 7F040D18 8C850044 */ lw $a1, 0x44($a0) -/* 07584C 7F040D1C 10A00006 */ beqz $a1, .L7F040D38 -/* 075850 7F040D20 00000000 */ nop -/* 075854 7F040D24 00A02025 */ move $a0, $a1 -/* 075858 7F040D28 0FC0FEDC */ jal sub_GAME_7F03FB70 -/* 07585C 7F040D2C AFA2001C */ sw $v0, 0x1c($sp) -/* 075860 7F040D30 8FA2001C */ lw $v0, 0x1c($sp) -/* 075864 7F040D34 8C44006C */ lw $a0, 0x6c($v0) -.L7F040D38: -/* 075868 7F040D38 0FC0FFA2 */ jal sub_GAME_7F03FE88 -/* 07586C 7F040D3C AFA2001C */ sw $v0, 0x1c($sp) -/* 075870 7F040D40 8FA2001C */ lw $v0, 0x1c($sp) -/* 075874 7F040D44 8C430064 */ lw $v1, 0x64($v0) -/* 075878 7F040D48 2401FFBF */ li $at, -65 -.L7F040D4C: -/* 07587C 7F040D4C 00617824 */ and $t7, $v1, $at -/* 075880 7F040D50 AC40006C */ sw $zero, 0x6c($v0) -/* 075884 7F040D54 1000000C */ b .L7F040D88 -/* 075888 7F040D58 AC4F0064 */ sw $t7, 0x64($v0) -.L7F040D5C: -/* 07588C 7F040D5C 5300000B */ beql $t8, $zero, .L7F040D8C -/* 075890 7F040D60 8FBF0014 */ lw $ra, 0x14($sp) -/* 075894 7F040D64 8C44006C */ lw $a0, 0x6c($v0) -/* 075898 7F040D68 0FC0FEDC */ jal sub_GAME_7F03FB70 -/* 07589C 7F040D6C AFA2001C */ sw $v0, 0x1c($sp) -/* 0758A0 7F040D70 8FA2001C */ lw $v0, 0x1c($sp) -/* 0758A4 7F040D74 2401FF7F */ li $at, -129 -/* 0758A8 7F040D78 8C590064 */ lw $t9, 0x64($v0) -/* 0758AC 7F040D7C AC40006C */ sw $zero, 0x6c($v0) -/* 0758B0 7F040D80 03214024 */ and $t0, $t9, $at -/* 0758B4 7F040D84 AC480064 */ sw $t0, 0x64($v0) -.L7F040D88: -/* 0758B8 7F040D88 8FBF0014 */ lw $ra, 0x14($sp) -.L7F040D8C: -/* 0758BC 7F040D8C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0758C0 7F040D90 03E00008 */ jr $ra -/* 0758C4 7F040D94 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F040D98(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F040D98 -/* 0758C8 7F040D98 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0758CC 7F040D9C AFBF0024 */ sw $ra, 0x24($sp) -/* 0758D0 7F040DA0 AFB20020 */ sw $s2, 0x20($sp) -/* 0758D4 7F040DA4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0758D8 7F040DA8 AFB00018 */ sw $s0, 0x18($sp) -/* 0758DC 7F040DAC AFA5002C */ sw $a1, 0x2c($sp) -/* 0758E0 7F040DB0 90820003 */ lbu $v0, 3($a0) -/* 0758E4 7F040DB4 2401000D */ li $at, 13 -/* 0758E8 7F040DB8 00C08025 */ move $s0, $a2 -/* 0758EC 7F040DBC 14410015 */ bne $v0, $at, .L7F040E14 -/* 0758F0 7F040DC0 00809025 */ move $s2, $a0 -/* 0758F4 7F040DC4 8C8400C4 */ lw $a0, 0xc4($a0) -/* 0758F8 7F040DC8 50800008 */ beql $a0, $zero, .L7F040DEC -/* 0758FC 7F040DCC 8E4400C8 */ lw $a0, 0xc8($s2) -/* 075900 7F040DD0 0C00237C */ jal sfxGetArg0Unk3F -/* 075904 7F040DD4 00000000 */ nop -/* 075908 7F040DD8 50400004 */ beql $v0, $zero, .L7F040DEC -/* 07590C 7F040DDC 8E4400C8 */ lw $a0, 0xc8($s2) -/* 075910 7F040DE0 0C002408 */ jal sfxDeactivate -/* 075914 7F040DE4 8E4400C4 */ lw $a0, 0xc4($s2) -/* 075918 7F040DE8 8E4400C8 */ lw $a0, 0xc8($s2) -.L7F040DEC: -/* 07591C 7F040DEC 5080004E */ beql $a0, $zero, .L7F040F28 -/* 075920 7F040DF0 8E510010 */ lw $s1, 0x10($s2) -/* 075924 7F040DF4 0C00237C */ jal sfxGetArg0Unk3F -/* 075928 7F040DF8 00000000 */ nop -/* 07592C 7F040DFC 5040004A */ beql $v0, $zero, .L7F040F28 -/* 075930 7F040E00 8E510010 */ lw $s1, 0x10($s2) -/* 075934 7F040E04 0C002408 */ jal sfxDeactivate -/* 075938 7F040E08 8E4400C8 */ lw $a0, 0xc8($s2) -/* 07593C 7F040E0C 10000046 */ b .L7F040F28 -/* 075940 7F040E10 8E510010 */ lw $s1, 0x10($s2) -.L7F040E14: -/* 075944 7F040E14 24010008 */ li $at, 8 -/* 075948 7F040E18 54410008 */ bnel $v0, $at, .L7F040E3C -/* 07594C 7F040E1C 24010001 */ li $at, 1 -/* 075950 7F040E20 8E420084 */ lw $v0, 0x84($s2) -/* 075954 7F040E24 50400040 */ beql $v0, $zero, .L7F040F28 -/* 075958 7F040E28 8E510010 */ lw $s1, 0x10($s2) -/* 07595C 7F040E2C AC400084 */ sw $zero, 0x84($v0) -/* 075960 7F040E30 1000003C */ b .L7F040F24 -/* 075964 7F040E34 AE400084 */ sw $zero, 0x84($s2) -/* 075968 7F040E38 24010001 */ li $at, 1 -.L7F040E3C: -/* 07596C 7F040E3C 54410016 */ bnel $v0, $at, .L7F040E98 -/* 075970 7F040E40 2401002F */ li $at, 47 -/* 075974 7F040E44 8E4400F4 */ lw $a0, 0xf4($s2) -/* 075978 7F040E48 50800008 */ beql $a0, $zero, .L7F040E6C -/* 07597C 7F040E4C 8E4400F8 */ lw $a0, 0xf8($s2) -/* 075980 7F040E50 0C00237C */ jal sfxGetArg0Unk3F -/* 075984 7F040E54 00000000 */ nop -/* 075988 7F040E58 50400004 */ beql $v0, $zero, .L7F040E6C -/* 07598C 7F040E5C 8E4400F8 */ lw $a0, 0xf8($s2) -/* 075990 7F040E60 0C002408 */ jal sfxDeactivate -/* 075994 7F040E64 8E4400F4 */ lw $a0, 0xf4($s2) -/* 075998 7F040E68 8E4400F8 */ lw $a0, 0xf8($s2) -.L7F040E6C: -/* 07599C 7F040E6C 5080002E */ beql $a0, $zero, .L7F040F28 -/* 0759A0 7F040E70 8E510010 */ lw $s1, 0x10($s2) -/* 0759A4 7F040E74 0C00237C */ jal sfxGetArg0Unk3F -/* 0759A8 7F040E78 00000000 */ nop -/* 0759AC 7F040E7C 5040002A */ beql $v0, $zero, .L7F040F28 -/* 0759B0 7F040E80 8E510010 */ lw $s1, 0x10($s2) -/* 0759B4 7F040E84 0C002408 */ jal sfxDeactivate -/* 0759B8 7F040E88 8E4400F8 */ lw $a0, 0xf8($s2) -/* 0759BC 7F040E8C 10000026 */ b .L7F040F28 -/* 0759C0 7F040E90 8E510010 */ lw $s1, 0x10($s2) -/* 0759C4 7F040E94 2401002F */ li $at, 47 -.L7F040E98: -/* 0759C8 7F040E98 54410009 */ bnel $v0, $at, .L7F040EC0 -/* 0759CC 7F040E9C 24010028 */ li $at, 40 -/* 0759D0 7F040EA0 8E44008C */ lw $a0, 0x8c($s2) -/* 0759D4 7F040EA4 04820020 */ bltzl $a0, .L7F040F28 -/* 0759D8 7F040EA8 8E510010 */ lw $s1, 0x10($s2) -/* 0759DC 7F040EAC 0FC2E76F */ jal sub_GAME_7F0B9DBC -/* 0759E0 7F040EB0 24050001 */ li $a1, 1 -/* 0759E4 7F040EB4 1000001C */ b .L7F040F28 -/* 0759E8 7F040EB8 8E510010 */ lw $s1, 0x10($s2) -/* 0759EC 7F040EBC 24010028 */ li $at, 40 -.L7F040EC0: -/* 0759F0 7F040EC0 5441000D */ bnel $v0, $at, .L7F040EF8 -/* 0759F4 7F040EC4 24010027 */ li $at, 39 -/* 0759F8 7F040EC8 8E4400B0 */ lw $a0, 0xb0($s2) -/* 0759FC 7F040ECC 50800016 */ beql $a0, $zero, .L7F040F28 -/* 075A00 7F040ED0 8E510010 */ lw $s1, 0x10($s2) -/* 075A04 7F040ED4 0C00237C */ jal sfxGetArg0Unk3F -/* 075A08 7F040ED8 00000000 */ nop -/* 075A0C 7F040EDC 50400012 */ beql $v0, $zero, .L7F040F28 -/* 075A10 7F040EE0 8E510010 */ lw $s1, 0x10($s2) -/* 075A14 7F040EE4 0C002408 */ jal sfxDeactivate -/* 075A18 7F040EE8 8E4400B0 */ lw $a0, 0xb0($s2) -/* 075A1C 7F040EEC 1000000E */ b .L7F040F28 -/* 075A20 7F040EF0 8E510010 */ lw $s1, 0x10($s2) -/* 075A24 7F040EF4 24010027 */ li $at, 39 -.L7F040EF8: -/* 075A28 7F040EF8 5441000B */ bnel $v0, $at, .L7F040F28 -/* 075A2C 7F040EFC 8E510010 */ lw $s1, 0x10($s2) -/* 075A30 7F040F00 8E4400AC */ lw $a0, 0xac($s2) -/* 075A34 7F040F04 50800008 */ beql $a0, $zero, .L7F040F28 -/* 075A38 7F040F08 8E510010 */ lw $s1, 0x10($s2) -/* 075A3C 7F040F0C 0C00237C */ jal sfxGetArg0Unk3F -/* 075A40 7F040F10 00000000 */ nop -/* 075A44 7F040F14 50400004 */ beql $v0, $zero, .L7F040F28 -/* 075A48 7F040F18 8E510010 */ lw $s1, 0x10($s2) -/* 075A4C 7F040F1C 0C002408 */ jal sfxDeactivate -/* 075A50 7F040F20 8E4400AC */ lw $a0, 0xac($s2) -.L7F040F24: -/* 075A54 7F040F24 8E510010 */ lw $s1, 0x10($s2) -.L7F040F28: -/* 075A58 7F040F28 12200038 */ beqz $s1, .L7F04100C -/* 075A5C 7F040F2C 02202025 */ move $a0, $s1 -/* 075A60 7F040F30 0FC28333 */ jal sub_GAME_7F0A0CCC -/* 075A64 7F040F34 00002825 */ move $a1, $zero -/* 075A68 7F040F38 8E440010 */ lw $a0, 0x10($s2) -/* 075A6C 7F040F3C 0FC28333 */ jal sub_GAME_7F0A0CCC -/* 075A70 7F040F40 24050001 */ li $a1, 1 -/* 075A74 7F040F44 56000032 */ bnezl $s0, .L7F041010 -/* 075A78 7F040F48 8FBF0024 */ lw $ra, 0x24($sp) -/* 075A7C 7F040F4C 0FC1033C */ jal sub_GAME_7F040CF0 -/* 075A80 7F040F50 8E440010 */ lw $a0, 0x10($s2) -/* 075A84 7F040F54 8E510010 */ lw $s1, 0x10($s2) -/* 075A88 7F040F58 8E2E001C */ lw $t6, 0x1c($s1) -/* 075A8C 7F040F5C 11C00004 */ beqz $t6, .L7F040F70 -/* 075A90 7F040F60 00000000 */ nop -/* 075A94 7F040F64 0FC13011 */ jal sub_GAME_7F04C044 -/* 075A98 7F040F68 02202025 */ move $a0, $s1 -/* 075A9C 7F040F6C 8E510010 */ lw $s1, 0x10($s2) -.L7F040F70: -/* 075AA0 7F040F70 0FC0F863 */ jal sub_GAME_7F03E18C -/* 075AA4 7F040F74 02202025 */ move $a0, $s1 -/* 075AA8 7F040F78 8E510010 */ lw $s1, 0x10($s2) -/* 075AAC 7F040F7C 8E300020 */ lw $s0, 0x20($s1) -/* 075AB0 7F040F80 52000009 */ beql $s0, $zero, .L7F040FA8 -/* 075AB4 7F040F84 922F0000 */ lbu $t7, ($s1) -.L7F040F88: -/* 075AB8 7F040F88 8E110024 */ lw $s1, 0x24($s0) -/* 075ABC 7F040F8C 8E040004 */ lw $a0, 4($s0) -/* 075AC0 7F040F90 0FC10409 */ jal sub_GAME_7F041024 -/* 075AC4 7F040F94 24050001 */ li $a1, 1 -/* 075AC8 7F040F98 1620FFFB */ bnez $s1, .L7F040F88 -/* 075ACC 7F040F9C 02208025 */ move $s0, $s1 -/* 075AD0 7F040FA0 8E510010 */ lw $s1, 0x10($s2) -/* 075AD4 7F040FA4 922F0000 */ lbu $t7, ($s1) -.L7F040FA8: -/* 075AD8 7F040FA8 24010002 */ li $at, 2 -/* 075ADC 7F040FAC 51E10004 */ beql $t7, $at, .L7F040FC0 -/* 075AE0 7F040FB0 92580003 */ lbu $t8, 3($s2) -/* 075AE4 7F040FB4 0FC1437A */ jal sub_GAME_7F050DE8 -/* 075AE8 7F040FB8 8E440014 */ lw $a0, 0x14($s2) -/* 075AEC 7F040FBC 92580003 */ lbu $t8, 3($s2) -.L7F040FC0: -/* 075AF0 7F040FC0 24010028 */ li $at, 40 -/* 075AF4 7F040FC4 17010005 */ bne $t8, $at, .L7F040FDC -/* 075AF8 7F040FC8 00000000 */ nop -/* 075AFC 7F040FCC 0FC1B0FE */ jal set_aircraft_obj_inst_scale_to_zero -/* 075B00 7F040FD0 8E440014 */ lw $a0, 0x14($s2) -/* 075B04 7F040FD4 10000004 */ b .L7F040FE8 -/* 075B08 7F040FD8 8FB9002C */ lw $t9, 0x2c($sp) -.L7F040FDC: -/* 075B0C 7F040FDC 0FC1B08D */ jal set_obj_instance_scale_to_zero -/* 075B10 7F040FE0 8E440014 */ lw $a0, 0x14($s2) -/* 075B14 7F040FE4 8FB9002C */ lw $t9, 0x2c($sp) -.L7F040FE8: -/* 075B18 7F040FE8 53200008 */ beql $t9, $zero, .L7F04100C -/* 075B1C 7F040FEC AE400010 */ sw $zero, 0x10($s2) -/* 075B20 7F040FF0 0FC0E94E */ jal sub_GAME_7F03A538 -/* 075B24 7F040FF4 8E440010 */ lw $a0, 0x10($s2) -/* 075B28 7F040FF8 0FC0E905 */ jal unset_stateflag_0x04_for_posdata -/* 075B2C 7F040FFC 8E440010 */ lw $a0, 0x10($s2) -/* 075B30 7F041000 0FC0E921 */ jal set_last_obj_pos_data -/* 075B34 7F041004 8E440010 */ lw $a0, 0x10($s2) -/* 075B38 7F041008 AE400010 */ sw $zero, 0x10($s2) -.L7F04100C: -/* 075B3C 7F04100C 8FBF0024 */ lw $ra, 0x24($sp) -.L7F041010: -/* 075B40 7F041010 8FB00018 */ lw $s0, 0x18($sp) -/* 075B44 7F041014 8FB1001C */ lw $s1, 0x1c($sp) -/* 075B48 7F041018 8FB20020 */ lw $s2, 0x20($sp) -/* 075B4C 7F04101C 03E00008 */ jr $ra -/* 075B50 7F041020 27BD0028 */ addiu $sp, $sp, 0x28 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F041024(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F041024 -/* 075B54 7F041024 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 075B58 7F041028 AFBF0014 */ sw $ra, 0x14($sp) -/* 075B5C 7F04102C 0FC10366 */ jal sub_GAME_7F040D98 -/* 075B60 7F041030 00003025 */ move $a2, $zero -/* 075B64 7F041034 8FBF0014 */ lw $ra, 0x14($sp) -/* 075B68 7F041038 27BD0018 */ addiu $sp, $sp, 0x18 -/* 075B6C 7F04103C 03E00008 */ jr $ra -/* 075B70 7F041040 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void if_a0_plus_3_is_4_then_10_else_20(void) { - -} -#else -GLOBAL_ASM( -.text -glabel if_a0_plus_3_is_4_then_10_else_20 -/* 075B74 7F041044 908E0003 */ lbu $t6, 3($a0) -/* 075B78 7F041048 24010004 */ li $at, 4 -/* 075B7C 7F04104C 15C10004 */ bne $t6, $at, .L7F041060 -/* 075B80 7F041050 3C0141A0 */ li $at, 0x41A00000 # 20.000000 -/* 075B84 7F041054 44810000 */ mtc1 $at, $f0 -/* 075B88 7F041058 03E00008 */ jr $ra -/* 075B8C 7F04105C 00000000 */ nop - -.L7F041060: -/* 075B90 7F041060 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 075B94 7F041064 44810000 */ mtc1 $at, $f0 -/* 075B98 7F041068 00000000 */ nop -/* 075B9C 7F04106C 03E00008 */ jr $ra -/* 075BA0 7F041070 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F041074(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F041074 -/* 075BA4 7F041074 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 075BA8 7F041078 AFA70024 */ sw $a3, 0x24($sp) -/* 075BAC 7F04107C C48A0000 */ lwc1 $f10, ($a0) -/* 075BB0 7F041080 C4C80000 */ lwc1 $f8, ($a2) -/* 075BB4 7F041084 00001025 */ move $v0, $zero -/* 075BB8 7F041088 460A4181 */ sub.s $f6, $f8, $f10 -/* 075BBC 7F04108C E7A6000C */ swc1 $f6, 0xc($sp) -/* 075BC0 7F041090 C4880004 */ lwc1 $f8, 4($a0) -/* 075BC4 7F041094 C4C40004 */ lwc1 $f4, 4($a2) -/* 075BC8 7F041098 46082281 */ sub.s $f10, $f4, $f8 -/* 075BCC 7F04109C E7AA0010 */ swc1 $f10, 0x10($sp) -/* 075BD0 7F0410A0 C4840008 */ lwc1 $f4, 8($a0) -/* 075BD4 7F0410A4 C4C60008 */ lwc1 $f6, 8($a2) -/* 075BD8 7F0410A8 C7AA000C */ lwc1 $f10, 0xc($sp) -/* 075BDC 7F0410AC 46043201 */ sub.s $f8, $f6, $f4 -/* 075BE0 7F0410B0 C7A40010 */ lwc1 $f4, 0x10($sp) -/* 075BE4 7F0410B4 E7A80014 */ swc1 $f8, 0x14($sp) -/* 075BE8 7F0410B8 C4AC0000 */ lwc1 $f12, ($a1) -/* 075BEC 7F0410BC C4AE0004 */ lwc1 $f14, 4($a1) -/* 075BF0 7F0410C0 C4A20008 */ lwc1 $f2, 8($a1) -/* 075BF4 7F0410C4 460A6182 */ mul.s $f6, $f12, $f10 -/* 075BF8 7F0410C8 E7AA0000 */ swc1 $f10, ($sp) -/* 075BFC 7F0410CC 46047202 */ mul.s $f8, $f14, $f4 -/* 075C00 7F0410D0 46083180 */ add.s $f6, $f6, $f8 -/* 075C04 7F0410D4 C7A80014 */ lwc1 $f8, 0x14($sp) -/* 075C08 7F0410D8 46024282 */ mul.s $f10, $f8, $f2 -/* 075C0C 7F0410DC 46065000 */ add.s $f0, $f10, $f6 -/* 075C10 7F0410E0 44805000 */ mtc1 $zero, $f10 -/* 075C14 7F0410E4 00000000 */ nop -/* 075C18 7F0410E8 4600503C */ c.lt.s $f10, $f0 -/* 075C1C 7F0410EC 00000000 */ nop -/* 075C20 7F0410F0 45000019 */ bc1f .L7F041158 -/* 075C24 7F0410F4 00000000 */ nop -/* 075C28 7F0410F8 460C6182 */ mul.s $f6, $f12, $f12 -/* 075C2C 7F0410FC 00000000 */ nop -/* 075C30 7F041100 460E7282 */ mul.s $f10, $f14, $f14 -/* 075C34 7F041104 460A3180 */ add.s $f6, $f6, $f10 -/* 075C38 7F041108 46021282 */ mul.s $f10, $f2, $f2 -/* 075C3C 7F04110C 46065400 */ add.s $f16, $f10, $f6 -/* 075C40 7F041110 C7AA0000 */ lwc1 $f10, ($sp) -/* 075C44 7F041114 460A5182 */ mul.s $f6, $f10, $f10 -/* 075C48 7F041118 00000000 */ nop -/* 075C4C 7F04111C 46042282 */ mul.s $f10, $f4, $f4 -/* 075C50 7F041120 460A3100 */ add.s $f4, $f6, $f10 -/* 075C54 7F041124 46084182 */ mul.s $f6, $f8, $f8 -/* 075C58 7F041128 C7A80024 */ lwc1 $f8, 0x24($sp) -/* 075C5C 7F04112C 46000282 */ mul.s $f10, $f0, $f0 -/* 075C60 7F041130 46043480 */ add.s $f18, $f6, $f4 -/* 075C64 7F041134 46084182 */ mul.s $f6, $f8, $f8 -/* 075C68 7F041138 46069101 */ sub.s $f4, $f18, $f6 -/* 075C6C 7F04113C 46102202 */ mul.s $f8, $f4, $f16 -/* 075C70 7F041140 460A403E */ c.le.s $f8, $f10 -/* 075C74 7F041144 00000000 */ nop -/* 075C78 7F041148 45000003 */ bc1f .L7F041158 -/* 075C7C 7F04114C 00000000 */ nop -/* 075C80 7F041150 10000001 */ b .L7F041158 -/* 075C84 7F041154 24020001 */ li $v0, 1 -.L7F041158: -/* 075C88 7F041158 03E00008 */ jr $ra -/* 075C8C 7F04115C 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F041160(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F041160 -/* 075C90 7F041160 27BDFF58 */ addiu $sp, $sp, -0xa8 -/* 075C94 7F041164 AFBF0044 */ sw $ra, 0x44($sp) -/* 075C98 7F041168 AFB70040 */ sw $s7, 0x40($sp) -/* 075C9C 7F04116C AFB6003C */ sw $s6, 0x3c($sp) -/* 075CA0 7F041170 AFB50038 */ sw $s5, 0x38($sp) -/* 075CA4 7F041174 AFB40034 */ sw $s4, 0x34($sp) -/* 075CA8 7F041178 AFB30030 */ sw $s3, 0x30($sp) -/* 075CAC 7F04117C AFB2002C */ sw $s2, 0x2c($sp) -/* 075CB0 7F041180 AFB10028 */ sw $s1, 0x28($sp) -/* 075CB4 7F041184 AFB00024 */ sw $s0, 0x24($sp) -/* 075CB8 7F041188 AFA700B4 */ sw $a3, 0xb4($sp) -/* 075CBC 7F04118C 8C970014 */ lw $s7, 0x14($a0) -/* 075CC0 7F041190 AFA0009C */ sw $zero, 0x9c($sp) -/* 075CC4 7F041194 AFA00064 */ sw $zero, 0x64($sp) -/* 075CC8 7F041198 908E0003 */ lbu $t6, 3($a0) -/* 075CCC 7F04119C 24010001 */ li $at, 1 -/* 075CD0 7F0411A0 00A08825 */ move $s1, $a1 -/* 075CD4 7F0411A4 15C1001A */ bne $t6, $at, .L7F041210 -/* 075CD8 7F0411A8 00C09825 */ move $s3, $a2 -/* 075CDC 7F0411AC 248400D0 */ addiu $a0, $a0, 0xd0 -/* 075CE0 7F0411B0 8EE5000C */ lw $a1, 0xc($s7) -/* 075CE4 7F0411B4 02203025 */ move $a2, $s1 -/* 075CE8 7F0411B8 0FC1D1F4 */ jal sub_GAME_7F0747D0 -/* 075CEC 7F0411BC 02603825 */ move $a3, $s3 -/* 075CF0 7F0411C0 8EEF0008 */ lw $t7, 8($s7) -/* 075CF4 7F0411C4 00408025 */ move $s0, $v0 -/* 075CF8 7F0411C8 27B4006C */ addiu $s4, $sp, 0x6c -/* 075CFC 7F0411CC 8DF80000 */ lw $t8, ($t7) -/* 075D00 7F0411D0 27B50068 */ addiu $s5, $sp, 0x68 -/* 075D04 7F0411D4 18400025 */ blez $v0, .L7F04126C -/* 075D08 7F0411D8 AFB8009C */ sw $t8, 0x9c($sp) -/* 075D0C 7F0411DC 27B60064 */ addiu $s6, $sp, 0x64 -/* 075D10 7F0411E0 AFB60018 */ sw $s6, 0x18($sp) -/* 075D14 7F0411E4 02E02025 */ move $a0, $s7 -/* 075D18 7F0411E8 03002825 */ move $a1, $t8 -/* 075D1C 7F0411EC 02203025 */ move $a2, $s1 -/* 075D20 7F0411F0 02603825 */ move $a3, $s3 -/* 075D24 7F0411F4 AFB40010 */ sw $s4, 0x10($sp) -/* 075D28 7F0411F8 0FC1366C */ jal sub_GAME_7F04D9B0 -/* 075D2C 7F0411FC AFB50014 */ sw $s5, 0x14($sp) -/* 075D30 7F041200 1440001A */ bnez $v0, .L7F04126C -/* 075D34 7F041204 00000000 */ nop -/* 075D38 7F041208 10000018 */ b .L7F04126C -/* 075D3C 7F04120C 00008025 */ move $s0, $zero -.L7F041210: -/* 075D40 7F041210 27B60064 */ addiu $s6, $sp, 0x64 -/* 075D44 7F041214 27B50068 */ addiu $s5, $sp, 0x68 -/* 075D48 7F041218 27B4006C */ addiu $s4, $sp, 0x6c -/* 075D4C 7F04121C 27B2009C */ addiu $s2, $sp, 0x9c -/* 075D50 7F041220 02E02025 */ move $a0, $s7 -.L7F041224: -/* 075D54 7F041224 02202825 */ move $a1, $s1 -/* 075D58 7F041228 02603025 */ move $a2, $s3 -/* 075D5C 7F04122C 0FC1D4BF */ jal sub_GAME_7F0752FC -/* 075D60 7F041230 02403825 */ move $a3, $s2 -/* 075D64 7F041234 1840000B */ blez $v0, .L7F041264 -/* 075D68 7F041238 00408025 */ move $s0, $v0 -/* 075D6C 7F04123C 02E02025 */ move $a0, $s7 -/* 075D70 7F041240 8FA5009C */ lw $a1, 0x9c($sp) -/* 075D74 7F041244 02203025 */ move $a2, $s1 -/* 075D78 7F041248 02603825 */ move $a3, $s3 -/* 075D7C 7F04124C AFB40010 */ sw $s4, 0x10($sp) -/* 075D80 7F041250 AFB50014 */ sw $s5, 0x14($sp) -/* 075D84 7F041254 0FC1366C */ jal sub_GAME_7F04D9B0 -/* 075D88 7F041258 AFB60018 */ sw $s6, 0x18($sp) -/* 075D8C 7F04125C 14400003 */ bnez $v0, .L7F04126C -/* 075D90 7F041260 00000000 */ nop -.L7F041264: -/* 075D94 7F041264 5E00FFEF */ bgtzl $s0, .L7F041224 -/* 075D98 7F041268 02E02025 */ move $a0, $s7 -.L7F04126C: -/* 075D9C 7F04126C 1A000059 */ blez $s0, .L7F0413D4 -/* 075DA0 7F041270 00001025 */ move $v0, $zero -/* 075DA4 7F041274 C7A4006C */ lwc1 $f4, 0x6c($sp) -/* 075DA8 7F041278 8FA500B4 */ lw $a1, 0xb4($sp) -/* 075DAC 7F04127C 8EF9000C */ lw $t9, 0xc($s7) -/* 075DB0 7F041280 8FA80068 */ lw $t0, 0x68($sp) -/* 075DB4 7F041284 E4A40000 */ swc1 $f4, ($a1) -/* 075DB8 7F041288 C7A60070 */ lwc1 $f6, 0x70($sp) -/* 075DBC 7F04128C 00084980 */ sll $t1, $t0, 6 -/* 075DC0 7F041290 03298821 */ addu $s1, $t9, $t1 -/* 075DC4 7F041294 E4A60004 */ swc1 $f6, 4($a1) -/* 075DC8 7F041298 C7A80074 */ lwc1 $f8, 0x74($sp) -/* 075DCC 7F04129C 02202025 */ move $a0, $s1 -/* 075DD0 7F0412A0 0FC1611D */ jal sub_GAME_7F058474 -/* 075DD4 7F0412A4 E4A80008 */ swc1 $f8, 8($a1) -/* 075DD8 7F0412A8 0FC1E111 */ jal sub_GAME_7F078444 -/* 075DDC 7F0412AC 00000000 */ nop -/* 075DE0 7F0412B0 00402025 */ move $a0, $v0 -/* 075DE4 7F0412B4 0FC1611D */ jal sub_GAME_7F058474 -/* 075DE8 7F0412B8 8FA500B4 */ lw $a1, 0xb4($sp) -/* 075DEC 7F0412BC 8FB000B8 */ lw $s0, 0xb8($sp) -/* 075DF0 7F0412C0 C7AA0078 */ lwc1 $f10, 0x78($sp) -/* 075DF4 7F0412C4 02202025 */ move $a0, $s1 -/* 075DF8 7F0412C8 02002825 */ move $a1, $s0 -/* 075DFC 7F0412CC E60A0000 */ swc1 $f10, ($s0) -/* 075E00 7F0412D0 C7B0007C */ lwc1 $f16, 0x7c($sp) -/* 075E04 7F0412D4 E6100004 */ swc1 $f16, 4($s0) -/* 075E08 7F0412D8 C7B20080 */ lwc1 $f18, 0x80($sp) -/* 075E0C 7F0412DC 0FC160F6 */ jal sub_GAME_7F0583D8 -/* 075E10 7F0412E0 E6120008 */ swc1 $f18, 8($s0) -/* 075E14 7F0412E4 C6020000 */ lwc1 $f2, ($s0) -/* 075E18 7F0412E8 C6640000 */ lwc1 $f4, ($s3) -/* 075E1C 7F0412EC C60C0004 */ lwc1 $f12, 4($s0) -/* 075E20 7F0412F0 C6680004 */ lwc1 $f8, 4($s3) -/* 075E24 7F0412F4 46041182 */ mul.s $f6, $f2, $f4 -/* 075E28 7F0412F8 C6000008 */ lwc1 $f0, 8($s0) -/* 075E2C 7F0412FC C6720008 */ lwc1 $f18, 8($s3) -/* 075E30 7F041300 46086282 */ mul.s $f10, $f12, $f8 -/* 075E34 7F041304 44807000 */ mtc1 $zero, $f14 -/* 075E38 7F041308 46009102 */ mul.s $f4, $f18, $f0 -/* 075E3C 7F04130C 460A3400 */ add.s $f16, $f6, $f10 -/* 075E40 7F041310 46102200 */ add.s $f8, $f4, $f16 -/* 075E44 7F041314 4608703C */ c.lt.s $f14, $f8 -/* 075E48 7F041318 00000000 */ nop -/* 075E4C 7F04131C 45000007 */ bc1f .L7F04133C -/* 075E50 7F041320 00000000 */ nop -/* 075E54 7F041324 46001187 */ neg.s $f6, $f2 -/* 075E58 7F041328 46006287 */ neg.s $f10, $f12 -/* 075E5C 7F04132C 46000487 */ neg.s $f18, $f0 -/* 075E60 7F041330 E6060000 */ swc1 $f6, ($s0) -/* 075E64 7F041334 E60A0004 */ swc1 $f10, 4($s0) -/* 075E68 7F041338 E6120008 */ swc1 $f18, 8($s0) -.L7F04133C: -/* 075E6C 7F04133C 0FC1E111 */ jal sub_GAME_7F078444 -/* 075E70 7F041340 00000000 */ nop -/* 075E74 7F041344 00402025 */ move $a0, $v0 -/* 075E78 7F041348 0FC160F6 */ jal sub_GAME_7F0583D8 -/* 075E7C 7F04134C 02002825 */ move $a1, $s0 -/* 075E80 7F041350 44807000 */ mtc1 $zero, $f14 -/* 075E84 7F041354 C6040000 */ lwc1 $f4, ($s0) -/* 075E88 7F041358 02002025 */ move $a0, $s0 -/* 075E8C 7F04135C 26050004 */ addiu $a1, $s0, 4 -/* 075E90 7F041360 46047032 */ c.eq.s $f14, $f4 -/* 075E94 7F041364 00000000 */ nop -/* 075E98 7F041368 4500000C */ bc1f .L7F04139C -/* 075E9C 7F04136C 00000000 */ nop -/* 075EA0 7F041370 C6100004 */ lwc1 $f16, 4($s0) -/* 075EA4 7F041374 46107032 */ c.eq.s $f14, $f16 -/* 075EA8 7F041378 00000000 */ nop -/* 075EAC 7F04137C 45000007 */ bc1f .L7F04139C -/* 075EB0 7F041380 00000000 */ nop -/* 075EB4 7F041384 C6080008 */ lwc1 $f8, 8($s0) -/* 075EB8 7F041388 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 075EBC 7F04138C 46087032 */ c.eq.s $f14, $f8 -/* 075EC0 7F041390 00000000 */ nop -/* 075EC4 7F041394 45030006 */ bc1tl .L7F0413B0 -/* 075EC8 7F041398 44813000 */ mtc1 $at, $f6 -.L7F04139C: -/* 075ECC 7F04139C 0C007DD4 */ jal guNormalize -/* 075ED0 7F0413A0 26060008 */ addiu $a2, $s0, 8 -/* 075ED4 7F0413A4 10000005 */ b .L7F0413BC -/* 075ED8 7F0413A8 8FAB00BC */ lw $t3, 0xbc($sp) -/* 075EDC 7F0413AC 44813000 */ mtc1 $at, $f6 -.L7F0413B0: -/* 075EE0 7F0413B0 00000000 */ nop -/* 075EE4 7F0413B4 E6060008 */ swc1 $f6, 8($s0) -/* 075EE8 7F0413B8 8FAB00BC */ lw $t3, 0xbc($sp) -.L7F0413BC: -/* 075EEC 7F0413BC 24020001 */ li $v0, 1 -/* 075EF0 7F0413C0 AD770000 */ sw $s7, ($t3) -/* 075EF4 7F0413C4 8FAD00C0 */ lw $t5, 0xc0($sp) -/* 075EF8 7F0413C8 8FAC0064 */ lw $t4, 0x64($sp) -/* 075EFC 7F0413CC 10000001 */ b .L7F0413D4 -/* 075F00 7F0413D0 ADAC0000 */ sw $t4, ($t5) -.L7F0413D4: -/* 075F04 7F0413D4 8FBF0044 */ lw $ra, 0x44($sp) -/* 075F08 7F0413D8 8FB00024 */ lw $s0, 0x24($sp) -/* 075F0C 7F0413DC 8FB10028 */ lw $s1, 0x28($sp) -/* 075F10 7F0413E0 8FB2002C */ lw $s2, 0x2c($sp) -/* 075F14 7F0413E4 8FB30030 */ lw $s3, 0x30($sp) -/* 075F18 7F0413E8 8FB40034 */ lw $s4, 0x34($sp) -/* 075F1C 7F0413EC 8FB50038 */ lw $s5, 0x38($sp) -/* 075F20 7F0413F0 8FB6003C */ lw $s6, 0x3c($sp) -/* 075F24 7F0413F4 8FB70040 */ lw $s7, 0x40($sp) -/* 075F28 7F0413F8 03E00008 */ jr $ra -/* 075F2C 7F0413FC 27BD00A8 */ addiu $sp, $sp, 0xa8 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F041400(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F041400 -/* 075F30 7F041400 27BDFF28 */ addiu $sp, $sp, -0xd8 -/* 075F34 7F041404 AFB50044 */ sw $s5, 0x44($sp) -/* 075F38 7F041408 AFB40040 */ sw $s4, 0x40($sp) -/* 075F3C 7F04140C F7B40028 */ sdc1 $f20, 0x28($sp) -/* 075F40 7F041410 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 075F44 7F041414 00C0A025 */ move $s4, $a2 -/* 075F48 7F041418 00A0A825 */ move $s5, $a1 -/* 075F4C 7F04141C AFBF0054 */ sw $ra, 0x54($sp) -/* 075F50 7F041420 AFA700E4 */ sw $a3, 0xe4($sp) -/* 075F54 7F041424 4481A000 */ mtc1 $at, $f20 -/* 075F58 7F041428 240EFFFF */ li $t6, -1 -/* 075F5C 7F04142C 27AF00C8 */ addiu $t7, $sp, 0xc8 -/* 075F60 7F041430 AFBE0050 */ sw $fp, 0x50($sp) -/* 075F64 7F041434 AFB7004C */ sw $s7, 0x4c($sp) -/* 075F68 7F041438 AFB60048 */ sw $s6, 0x48($sp) -/* 075F6C 7F04143C AFB3003C */ sw $s3, 0x3c($sp) -/* 075F70 7F041440 AFB20038 */ sw $s2, 0x38($sp) -/* 075F74 7F041444 AFB10034 */ sw $s1, 0x34($sp) -/* 075F78 7F041448 AFB00030 */ sw $s0, 0x30($sp) -/* 075F7C 7F04144C AFA400D8 */ sw $a0, 0xd8($sp) -/* 075F80 7F041450 AFAE0094 */ sw $t6, 0x94($sp) -/* 075F84 7F041454 AFAF0010 */ sw $t7, 0x10($sp) -/* 075F88 7F041458 27A700CC */ addiu $a3, $sp, 0xcc -/* 075F8C 7F04145C 27A500D4 */ addiu $a1, $sp, 0xd4 -/* 075F90 7F041460 0FC0F308 */ jal sub_GAME_7F03CC20 -/* 075F94 7F041464 27A600D0 */ addiu $a2, $sp, 0xd0 -/* 075F98 7F041468 8FB800D0 */ lw $t8, 0xd0($sp) -/* 075F9C 7F04146C C7A400CC */ lwc1 $f4, 0xcc($sp) -/* 075FA0 7F041470 5B0000CD */ blezl $t8, .L7F0417A8 -/* 075FA4 7F041474 00001025 */ move $v0, $zero -/* 075FA8 7F041478 C6A00004 */ lwc1 $f0, 4($s5) -/* 075FAC 7F04147C C7A800C8 */ lwc1 $f8, 0xc8($sp) -/* 075FB0 7F041480 4600203C */ c.lt.s $f4, $f0 -/* 075FB4 7F041484 00000000 */ nop -/* 075FB8 7F041488 45020007 */ bc1fl .L7F0414A8 -/* 075FBC 7F04148C 4608003C */ c.lt.s $f0, $f8 -/* 075FC0 7F041490 C6860004 */ lwc1 $f6, 4($s4) -/* 075FC4 7F041494 4606203C */ c.lt.s $f4, $f6 -/* 075FC8 7F041498 00000000 */ nop -/* 075FCC 7F04149C 450300C2 */ bc1tl .L7F0417A8 -/* 075FD0 7F0414A0 00001025 */ move $v0, $zero -/* 075FD4 7F0414A4 4608003C */ c.lt.s $f0, $f8 -.L7F0414A8: -/* 075FD8 7F0414A8 00000000 */ nop -/* 075FDC 7F0414AC 45020007 */ bc1fl .L7F0414CC -/* 075FE0 7F0414B0 C6B00000 */ lwc1 $f16, ($s5) -/* 075FE4 7F0414B4 C68A0004 */ lwc1 $f10, 4($s4) -/* 075FE8 7F0414B8 4608503C */ c.lt.s $f10, $f8 -/* 075FEC 7F0414BC 00000000 */ nop -/* 075FF0 7F0414C0 450300B9 */ bc1tl .L7F0417A8 -/* 075FF4 7F0414C4 00001025 */ move $v0, $zero -/* 075FF8 7F0414C8 C6B00000 */ lwc1 $f16, ($s5) -.L7F0414CC: -/* 075FFC 7F0414CC 8FB900D0 */ lw $t9, 0xd0($sp) -/* 076000 7F0414D0 00008025 */ move $s0, $zero -/* 076004 7F0414D4 E7B000A0 */ swc1 $f16, 0xa0($sp) -/* 076008 7F0414D8 C6B20008 */ lwc1 $f18, 8($s5) -/* 07600C 7F0414DC E7B200A4 */ swc1 $f18, 0xa4($sp) -/* 076010 7F0414E0 C6840000 */ lwc1 $f4, ($s4) -/* 076014 7F0414E4 E7A40098 */ swc1 $f4, 0x98($sp) -/* 076018 7F0414E8 C6860008 */ lwc1 $f6, 8($s4) -/* 07601C 7F0414EC 1B200043 */ blez $t9, .L7F0415FC -/* 076020 7F0414F0 E7A6009C */ swc1 $f6, 0x9c($sp) -/* 076024 7F0414F4 00008825 */ move $s1, $zero -/* 076028 7F0414F8 27BE00B0 */ addiu $fp, $sp, 0xb0 -/* 07602C 7F0414FC 27B70098 */ addiu $s7, $sp, 0x98 -/* 076030 7F041500 27B600A0 */ addiu $s6, $sp, 0xa0 -/* 076034 7F041504 8FA800D0 */ lw $t0, 0xd0($sp) -.L7F041508: -/* 076038 7F041508 26130001 */ addiu $s3, $s0, 1 -/* 07603C 7F04150C 8FA900D4 */ lw $t1, 0xd4($sp) -/* 076040 7F041510 0268001A */ div $zero, $s3, $t0 -/* 076044 7F041514 01311821 */ addu $v1, $t1, $s1 -/* 076048 7F041518 C46A0000 */ lwc1 $f10, ($v1) -/* 07604C 7F04151C C6AC0000 */ lwc1 $f12, ($s5) -/* 076050 7F041520 C6AE0008 */ lwc1 $f14, 8($s5) -/* 076054 7F041524 8E860000 */ lw $a2, ($s4) -/* 076058 7F041528 8E870008 */ lw $a3, 8($s4) -/* 07605C 7F04152C E7AA0010 */ swc1 $f10, 0x10($sp) -/* 076060 7F041530 C4680004 */ lwc1 $f8, 4($v1) -/* 076064 7F041534 00001010 */ mfhi $v0 -/* 076068 7F041538 000250C0 */ sll $t2, $v0, 3 -/* 07606C 7F04153C 012A2021 */ addu $a0, $t1, $t2 -/* 076070 7F041540 E7A80014 */ swc1 $f8, 0x14($sp) -/* 076074 7F041544 C4900000 */ lwc1 $f16, ($a0) -/* 076078 7F041548 15000002 */ bnez $t0, .L7F041554 -/* 07607C 7F04154C 00000000 */ nop -/* 076080 7F041550 0007000D */ break 7 -.L7F041554: -/* 076084 7F041554 2401FFFF */ li $at, -1 -/* 076088 7F041558 15010004 */ bne $t0, $at, .L7F04156C -/* 07608C 7F04155C 3C018000 */ lui $at, 0x8000 -/* 076090 7F041560 16610002 */ bne $s3, $at, .L7F04156C -/* 076094 7F041564 00000000 */ nop -/* 076098 7F041568 0006000D */ break 6 -.L7F04156C: -/* 07609C 7F04156C E7B00018 */ swc1 $f16, 0x18($sp) -/* 0760A0 7F041570 C4920004 */ lwc1 $f18, 4($a0) -/* 0760A4 7F041574 00409025 */ move $s2, $v0 -/* 0760A8 7F041578 0FC2C1A2 */ jal sub_GAME_7F0B0688 -/* 0760AC 7F04157C E7B2001C */ swc1 $f18, 0x1c($sp) -/* 0760B0 7F041580 50400019 */ beql $v0, $zero, .L7F0415E8 -/* 0760B4 7F041584 8FAD00D0 */ lw $t5, 0xd0($sp) -/* 0760B8 7F041588 8FAB00D4 */ lw $t3, 0xd4($sp) -/* 0760BC 7F04158C 001260C0 */ sll $t4, $s2, 3 -/* 0760C0 7F041590 02C02025 */ move $a0, $s6 -/* 0760C4 7F041594 01711821 */ addu $v1, $t3, $s1 -/* 0760C8 7F041598 C4640000 */ lwc1 $f4, ($v1) -/* 0760CC 7F04159C 016C1021 */ addu $v0, $t3, $t4 -/* 0760D0 7F0415A0 02E02825 */ move $a1, $s7 -/* 0760D4 7F0415A4 E7A400B0 */ swc1 $f4, 0xb0($sp) -/* 0760D8 7F0415A8 C4660004 */ lwc1 $f6, 4($v1) -/* 0760DC 7F0415AC 03C03025 */ move $a2, $fp -/* 0760E0 7F0415B0 27A700A8 */ addiu $a3, $sp, 0xa8 -/* 0760E4 7F0415B4 E7A600B4 */ swc1 $f6, 0xb4($sp) -/* 0760E8 7F0415B8 C44A0000 */ lwc1 $f10, ($v0) -/* 0760EC 7F0415BC E7AA00A8 */ swc1 $f10, 0xa8($sp) -/* 0760F0 7F0415C0 C4480004 */ lwc1 $f8, 4($v0) -/* 0760F4 7F0415C4 0FC2CC80 */ jal sub_GAME_7F0B3200 -/* 0760F8 7F0415C8 E7A800AC */ swc1 $f8, 0xac($sp) -/* 0760FC 7F0415CC 4614003C */ c.lt.s $f0, $f20 -/* 076100 7F0415D0 00000000 */ nop -/* 076104 7F0415D4 45020004 */ bc1fl .L7F0415E8 -/* 076108 7F0415D8 8FAD00D0 */ lw $t5, 0xd0($sp) -/* 07610C 7F0415DC 46000506 */ mov.s $f20, $f0 -/* 076110 7F0415E0 AFB00094 */ sw $s0, 0x94($sp) -/* 076114 7F0415E4 8FAD00D0 */ lw $t5, 0xd0($sp) -.L7F0415E8: -/* 076118 7F0415E8 02608025 */ move $s0, $s3 -/* 07611C 7F0415EC 26310008 */ addiu $s1, $s1, 8 -/* 076120 7F0415F0 026D082A */ slt $at, $s3, $t5 -/* 076124 7F0415F4 5420FFC4 */ bnezl $at, .L7F041508 -/* 076128 7F0415F8 8FA800D0 */ lw $t0, 0xd0($sp) -.L7F0415FC: -/* 07612C 7F0415FC 8FAE0094 */ lw $t6, 0x94($sp) -/* 076130 7F041600 8FAF00D4 */ lw $t7, 0xd4($sp) -/* 076134 7F041604 27A40088 */ addiu $a0, $sp, 0x88 -/* 076138 7F041608 19C00066 */ blez $t6, .L7F0417A4 -/* 07613C 7F04160C 000EC0C0 */ sll $t8, $t6, 3 -/* 076140 7F041610 8FA800D0 */ lw $t0, 0xd0($sp) -/* 076144 7F041614 25D90001 */ addiu $t9, $t6, 1 -/* 076148 7F041618 01F81021 */ addu $v0, $t7, $t8 -/* 07614C 7F04161C 0328001A */ div $zero, $t9, $t0 -/* 076150 7F041620 4480A000 */ mtc1 $zero, $f20 -/* 076154 7F041624 C4500000 */ lwc1 $f16, ($v0) -/* 076158 7F041628 00004810 */ mfhi $t1 -/* 07615C 7F04162C E7B4008C */ swc1 $f20, 0x8c($sp) -/* 076160 7F041630 E7B00088 */ swc1 $f16, 0x88($sp) -/* 076164 7F041634 C4520004 */ lwc1 $f18, 4($v0) -/* 076168 7F041638 000950C0 */ sll $t2, $t1, 3 -/* 07616C 7F04163C 01EA1821 */ addu $v1, $t7, $t2 -/* 076170 7F041640 E7B20090 */ swc1 $f18, 0x90($sp) -/* 076174 7F041644 C4640000 */ lwc1 $f4, ($v1) -/* 076178 7F041648 E7B40080 */ swc1 $f20, 0x80($sp) -/* 07617C 7F04164C 27AB006C */ addiu $t3, $sp, 0x6c -/* 076180 7F041650 E7A4007C */ swc1 $f4, 0x7c($sp) -/* 076184 7F041654 C4660004 */ lwc1 $f6, 4($v1) -/* 076188 7F041658 15000002 */ bnez $t0, .L7F041664 -/* 07618C 7F04165C 00000000 */ nop -/* 076190 7F041660 0007000D */ break 7 -.L7F041664: -/* 076194 7F041664 2401FFFF */ li $at, -1 -/* 076198 7F041668 15010004 */ bne $t0, $at, .L7F04167C -/* 07619C 7F04166C 3C018000 */ li $at, 0x80000000 # -0.000000 -/* 0761A0 7F041670 17210002 */ bne $t9, $at, .L7F04167C -/* 0761A4 7F041674 00000000 */ nop -/* 0761A8 7F041678 0006000D */ break 6 -.L7F04167C: -/* 0761AC 7F04167C AFAB0010 */ sw $t3, 0x10($sp) -/* 0761B0 7F041680 27A5007C */ addiu $a1, $sp, 0x7c -/* 0761B4 7F041684 02A03025 */ move $a2, $s5 -/* 0761B8 7F041688 8FA700E4 */ lw $a3, 0xe4($sp) -/* 0761BC 7F04168C 0FC0984C */ jal sub_GAME_7F026130 -/* 0761C0 7F041690 E7A60084 */ swc1 $f6, 0x84($sp) -/* 0761C4 7F041694 C7AA006C */ lwc1 $f10, 0x6c($sp) -/* 0761C8 7F041698 C6A80000 */ lwc1 $f8, ($s5) -/* 0761CC 7F04169C 8FA500E4 */ lw $a1, 0xe4($sp) -/* 0761D0 7F0416A0 C7A60070 */ lwc1 $f6, 0x70($sp) -/* 0761D4 7F0416A4 46085401 */ sub.s $f16, $f10, $f8 -/* 0761D8 7F0416A8 C6AA0004 */ lwc1 $f10, 4($s5) -/* 0761DC 7F0416AC C4B20000 */ lwc1 $f18, ($a1) -/* 0761E0 7F0416B0 8FA300F0 */ lw $v1, 0xf0($sp) -/* 0761E4 7F0416B4 460A3201 */ sub.s $f8, $f6, $f10 -/* 0761E8 7F0416B8 46128102 */ mul.s $f4, $f16, $f18 -/* 0761EC 7F0416BC C4B00004 */ lwc1 $f16, 4($a1) -/* 0761F0 7F0416C0 C7AA0074 */ lwc1 $f10, 0x74($sp) -/* 0761F4 7F0416C4 8FA200E8 */ lw $v0, 0xe8($sp) -/* 0761F8 7F0416C8 46104482 */ mul.s $f18, $f8, $f16 -/* 0761FC 7F0416CC C6A80008 */ lwc1 $f8, 8($s5) -/* 076200 7F0416D0 8FA400EC */ lw $a0, 0xec($sp) -/* 076204 7F0416D4 46085401 */ sub.s $f16, $f10, $f8 -/* 076208 7F0416D8 C46A0000 */ lwc1 $f10, ($v1) -/* 07620C 7F0416DC 46122180 */ add.s $f6, $f4, $f18 -/* 076210 7F0416E0 C4A40008 */ lwc1 $f4, 8($a1) -/* 076214 7F0416E4 46102482 */ mul.s $f18, $f4, $f16 -/* 076218 7F0416E8 46069000 */ add.s $f0, $f18, $f6 -/* 07621C 7F0416EC 460A003C */ c.lt.s $f0, $f10 -/* 076220 7F0416F0 00000000 */ nop -/* 076224 7F0416F4 4502002C */ bc1fl .L7F0417A8 -/* 076228 7F0416F8 00001025 */ move $v0, $zero -/* 07622C 7F0416FC E4600000 */ swc1 $f0, ($v1) -/* 076230 7F041700 C7A8006C */ lwc1 $f8, 0x6c($sp) -/* 076234 7F041704 E4480000 */ swc1 $f8, ($v0) -/* 076238 7F041708 C7A40070 */ lwc1 $f4, 0x70($sp) -/* 07623C 7F04170C E4440004 */ swc1 $f4, 4($v0) -/* 076240 7F041710 C7B00074 */ lwc1 $f16, 0x74($sp) -/* 076244 7F041714 E4500008 */ swc1 $f16, 8($v0) -/* 076248 7F041718 C4B20000 */ lwc1 $f18, ($a1) -/* 07624C 7F04171C E4940004 */ swc1 $f20, 4($a0) -/* 076250 7F041720 46009187 */ neg.s $f6, $f18 -/* 076254 7F041724 E4860000 */ swc1 $f6, ($a0) -/* 076258 7F041728 C4840000 */ lwc1 $f4, ($a0) -/* 07625C 7F04172C C4AA0008 */ lwc1 $f10, 8($a1) -/* 076260 7F041730 24850004 */ addiu $a1, $a0, 4 -/* 076264 7F041734 4604A032 */ c.eq.s $f20, $f4 -/* 076268 7F041738 46005207 */ neg.s $f8, $f10 -/* 07626C 7F04173C 45000007 */ bc1f .L7F04175C -/* 076270 7F041740 E4880008 */ swc1 $f8, 8($a0) -/* 076274 7F041744 C4900008 */ lwc1 $f16, 8($a0) -/* 076278 7F041748 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07627C 7F04174C 4610A032 */ c.eq.s $f20, $f16 -/* 076280 7F041750 00000000 */ nop -/* 076284 7F041754 45030006 */ bc1tl .L7F041770 -/* 076288 7F041758 44819000 */ mtc1 $at, $f18 -.L7F04175C: -/* 07628C 7F04175C 0C007DD4 */ jal guNormalize -/* 076290 7F041760 24860008 */ addiu $a2, $a0, 8 -/* 076294 7F041764 10000005 */ b .L7F04177C -/* 076298 7F041768 8FAC00D8 */ lw $t4, 0xd8($sp) -/* 07629C 7F04176C 44819000 */ mtc1 $at, $f18 -.L7F041770: -/* 0762A0 7F041770 00000000 */ nop -/* 0762A4 7F041774 E4920008 */ swc1 $f18, 8($a0) -/* 0762A8 7F041778 8FAC00D8 */ lw $t4, 0xd8($sp) -.L7F04177C: -/* 0762AC 7F04177C 3C018003 */ lui $at, %hi(D_80030B0C) -/* 0762B0 7F041780 24020001 */ li $v0, 1 -/* 0762B4 7F041784 AC2C0B0C */ sw $t4, %lo(D_80030B0C)($at) -/* 0762B8 7F041788 3C018003 */ lui $at, %hi(bodypartshot) -/* 0762BC 7F04178C AC200B10 */ sw $zero, %lo(bodypartshot)($at) -/* 0762C0 7F041790 3C018007 */ lui $at, %hi(objinst) -/* 0762C4 7F041794 AC205B70 */ sw $zero, %lo(objinst)($at) -/* 0762C8 7F041798 3C018007 */ lui $at, %hi(dword_CODE_bss_80075B74) -/* 0762CC 7F04179C 10000002 */ b .L7F0417A8 -/* 0762D0 7F0417A0 AC205B74 */ sw $zero, %lo(dword_CODE_bss_80075B74)($at) -.L7F0417A4: -/* 0762D4 7F0417A4 00001025 */ move $v0, $zero -.L7F0417A8: -/* 0762D8 7F0417A8 8FBF0054 */ lw $ra, 0x54($sp) -/* 0762DC 7F0417AC D7B40028 */ ldc1 $f20, 0x28($sp) -/* 0762E0 7F0417B0 8FB00030 */ lw $s0, 0x30($sp) -/* 0762E4 7F0417B4 8FB10034 */ lw $s1, 0x34($sp) -/* 0762E8 7F0417B8 8FB20038 */ lw $s2, 0x38($sp) -/* 0762EC 7F0417BC 8FB3003C */ lw $s3, 0x3c($sp) -/* 0762F0 7F0417C0 8FB40040 */ lw $s4, 0x40($sp) -/* 0762F4 7F0417C4 8FB50044 */ lw $s5, 0x44($sp) -/* 0762F8 7F0417C8 8FB60048 */ lw $s6, 0x48($sp) -/* 0762FC 7F0417CC 8FB7004C */ lw $s7, 0x4c($sp) -/* 076300 7F0417D0 8FBE0050 */ lw $fp, 0x50($sp) -/* 076304 7F0417D4 03E00008 */ jr $ra -/* 076308 7F0417D8 27BD00D8 */ addiu $sp, $sp, 0xd8 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0417DC(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0417DC -/* 07630C 7F0417DC 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 076310 7F0417E0 AFB00028 */ sw $s0, 0x28($sp) -/* 076314 7F0417E4 00808025 */ move $s0, $a0 -/* 076318 7F0417E8 AFBF0034 */ sw $ra, 0x34($sp) -/* 07631C 7F0417EC AFB20030 */ sw $s2, 0x30($sp) -/* 076320 7F0417F0 AFB1002C */ sw $s1, 0x2c($sp) -/* 076324 7F0417F4 AFA60060 */ sw $a2, 0x60($sp) -/* 076328 7F0417F8 8C840014 */ lw $a0, 0x14($a0) -/* 07632C 7F0417FC 00A08825 */ move $s1, $a1 -/* 076330 7F041800 00E09025 */ move $s2, $a3 -/* 076334 7F041804 0FC1B403 */ jal getinstsize -/* 076338 7F041808 AFA40054 */ sw $a0, 0x54($sp) -/* 07633C 7F04180C 8E020010 */ lw $v0, 0x10($s0) -/* 076340 7F041810 44801000 */ mtc1 $zero, $f2 -/* 076344 7F041814 8C4E001C */ lw $t6, 0x1c($v0) -/* 076348 7F041818 55C00013 */ bnezl $t6, .L7F041868 -/* 07634C 7F04181C 46000207 */ neg.s $f8, $f0 -/* 076350 7F041820 C6040058 */ lwc1 $f4, 0x58($s0) -/* 076354 7F041824 C6260000 */ lwc1 $f6, ($s1) -/* 076358 7F041828 C608005C */ lwc1 $f8, 0x5c($s0) -/* 07635C 7F04182C C62A0004 */ lwc1 $f10, 4($s1) -/* 076360 7F041830 46062301 */ sub.s $f12, $f4, $f6 -/* 076364 7F041834 C6460000 */ lwc1 $f6, ($s2) -/* 076368 7F041838 C6240008 */ lwc1 $f4, 8($s1) -/* 07636C 7F04183C 460A4381 */ sub.s $f14, $f8, $f10 -/* 076370 7F041840 C6120060 */ lwc1 $f18, 0x60($s0) -/* 076374 7F041844 46066202 */ mul.s $f8, $f12, $f6 -/* 076378 7F041848 C64A0004 */ lwc1 $f10, 4($s2) -/* 07637C 7F04184C 46049401 */ sub.s $f16, $f18, $f4 -/* 076380 7F041850 C6460008 */ lwc1 $f6, 8($s2) -/* 076384 7F041854 460A7482 */ mul.s $f18, $f14, $f10 -/* 076388 7F041858 46124100 */ add.s $f4, $f8, $f18 -/* 07638C 7F04185C 46103282 */ mul.s $f10, $f6, $f16 -/* 076390 7F041860 46045080 */ add.s $f2, $f10, $f4 -/* 076394 7F041864 46000207 */ neg.s $f8, $f0 -.L7F041868: -/* 076398 7F041868 C7B20068 */ lwc1 $f18, 0x68($sp) -/* 07639C 7F04186C 4602403E */ c.le.s $f8, $f2 -/* 0763A0 7F041870 00000000 */ nop -/* 0763A4 7F041874 45020055 */ bc1fl .L7F0419CC -/* 0763A8 7F041878 00001025 */ move $v0, $zero -/* 0763AC 7F04187C 46009180 */ add.s $f6, $f18, $f0 -/* 0763B0 7F041880 4606103E */ c.le.s $f2, $f6 -/* 0763B4 7F041884 00000000 */ nop -/* 0763B8 7F041888 45020050 */ bc1fl .L7F0419CC -/* 0763BC 7F04188C 00001025 */ move $v0, $zero -/* 0763C0 7F041890 904F0001 */ lbu $t7, 1($v0) -/* 0763C4 7F041894 8FA5006C */ lw $a1, 0x6c($sp) -/* 0763C8 7F041898 8FA60070 */ lw $a2, 0x70($sp) -/* 0763CC 7F04189C 31F80002 */ andi $t8, $t7, 2 -/* 0763D0 7F0418A0 1300002A */ beqz $t8, .L7F04194C -/* 0763D4 7F0418A4 8FA40054 */ lw $a0, 0x54($sp) -/* 0763D8 7F0418A8 8FB90078 */ lw $t9, 0x78($sp) -/* 0763DC 7F0418AC 8FA90080 */ lw $t1, 0x80($sp) -/* 0763E0 7F0418B0 8FAA0084 */ lw $t2, 0x84($sp) -/* 0763E4 7F0418B4 02002025 */ move $a0, $s0 -/* 0763E8 7F0418B8 8FA70074 */ lw $a3, 0x74($sp) -/* 0763EC 7F0418BC AFB90010 */ sw $t9, 0x10($sp) -/* 0763F0 7F0418C0 AFA90014 */ sw $t1, 0x14($sp) -/* 0763F4 7F0418C4 0FC10458 */ jal sub_GAME_7F041160 -/* 0763F8 7F0418C8 AFAA0018 */ sw $t2, 0x18($sp) -/* 0763FC 7F0418CC 1040003E */ beqz $v0, .L7F0419C8 -/* 076400 7F0418D0 8FA30074 */ lw $v1, 0x74($sp) -/* 076404 7F0418D4 C46A0000 */ lwc1 $f10, ($v1) -/* 076408 7F0418D8 C6240000 */ lwc1 $f4, ($s1) -/* 07640C 7F0418DC C4680004 */ lwc1 $f8, 4($v1) -/* 076410 7F0418E0 C6320004 */ lwc1 $f18, 4($s1) -/* 076414 7F0418E4 46045301 */ sub.s $f12, $f10, $f4 -/* 076418 7F0418E8 C6440000 */ lwc1 $f4, ($s2) -/* 07641C 7F0418EC C62A0008 */ lwc1 $f10, 8($s1) -/* 076420 7F0418F0 46124381 */ sub.s $f14, $f8, $f18 -/* 076424 7F0418F4 C4660008 */ lwc1 $f6, 8($v1) -/* 076428 7F0418F8 46046202 */ mul.s $f8, $f12, $f4 -/* 07642C 7F0418FC C6520004 */ lwc1 $f18, 4($s2) -/* 076430 7F041900 460A3401 */ sub.s $f16, $f6, $f10 -/* 076434 7F041904 C6440008 */ lwc1 $f4, 8($s2) -/* 076438 7F041908 46127182 */ mul.s $f6, $f14, $f18 -/* 07643C 7F04190C 46064280 */ add.s $f10, $f8, $f6 -/* 076440 7F041910 46102482 */ mul.s $f18, $f4, $f16 -/* 076444 7F041914 44804000 */ mtc1 $zero, $f8 -/* 076448 7F041918 C7A60068 */ lwc1 $f6, 0x68($sp) -/* 07644C 7F04191C 460A9080 */ add.s $f2, $f18, $f10 -/* 076450 7F041920 4602403E */ c.le.s $f8, $f2 -/* 076454 7F041924 00000000 */ nop -/* 076458 7F041928 45020028 */ bc1fl .L7F0419CC -/* 07645C 7F04192C 00001025 */ move $v0, $zero -/* 076460 7F041930 4606103E */ c.le.s $f2, $f6 -/* 076464 7F041934 8FA8007C */ lw $t0, 0x7c($sp) -/* 076468 7F041938 24020001 */ li $v0, 1 -/* 07646C 7F04193C 45020023 */ bc1fl .L7F0419CC -/* 076470 7F041940 00001025 */ move $v0, $zero -/* 076474 7F041944 10000021 */ b .L7F0419CC -/* 076478 7F041948 E5020000 */ swc1 $f2, ($t0) -.L7F04194C: -/* 07647C 7F04194C 0FC1B403 */ jal getinstsize -/* 076480 7F041950 AFA2003C */ sw $v0, 0x3c($sp) -/* 076484 7F041954 44070000 */ mfc1 $a3, $f0 -/* 076488 7F041958 02202025 */ move $a0, $s1 -/* 07648C 7F04195C 02402825 */ move $a1, $s2 -/* 076490 7F041960 0FC1041D */ jal sub_GAME_7F041074 -/* 076494 7F041964 26060058 */ addiu $a2, $s0, 0x58 -/* 076498 7F041968 10400017 */ beqz $v0, .L7F0419C8 -/* 07649C 7F04196C 8FA30074 */ lw $v1, 0x74($sp) -/* 0764A0 7F041970 8FA8007C */ lw $t0, 0x7c($sp) -/* 0764A4 7F041974 C7A40068 */ lwc1 $f4, 0x68($sp) -/* 0764A8 7F041978 02202825 */ move $a1, $s1 -/* 0764AC 7F04197C 02403825 */ move $a3, $s2 -/* 0764B0 7F041980 E5040000 */ swc1 $f4, ($t0) -/* 0764B4 7F041984 8FAB0078 */ lw $t3, 0x78($sp) -/* 0764B8 7F041988 AFA30010 */ sw $v1, 0x10($sp) -/* 0764BC 7F04198C 8FA60060 */ lw $a2, 0x60($sp) -/* 0764C0 7F041990 8FA4003C */ lw $a0, 0x3c($sp) -/* 0764C4 7F041994 AFA80018 */ sw $t0, 0x18($sp) -/* 0764C8 7F041998 0FC10500 */ jal sub_GAME_7F041400 -/* 0764CC 7F04199C AFAB0014 */ sw $t3, 0x14($sp) -/* 0764D0 7F0419A0 10400009 */ beqz $v0, .L7F0419C8 -/* 0764D4 7F0419A4 8FAC0054 */ lw $t4, 0x54($sp) -/* 0764D8 7F0419A8 8FAD0080 */ lw $t5, 0x80($sp) -/* 0764DC 7F0419AC 24020001 */ li $v0, 1 -/* 0764E0 7F0419B0 ADAC0000 */ sw $t4, ($t5) -/* 0764E4 7F0419B4 8D8E0008 */ lw $t6, 8($t4) -/* 0764E8 7F0419B8 8FB80084 */ lw $t8, 0x84($sp) -/* 0764EC 7F0419BC 8DCF0000 */ lw $t7, ($t6) -/* 0764F0 7F0419C0 10000002 */ b .L7F0419CC -/* 0764F4 7F0419C4 AF0F0000 */ sw $t7, ($t8) -.L7F0419C8: -/* 0764F8 7F0419C8 00001025 */ move $v0, $zero -.L7F0419CC: -/* 0764FC 7F0419CC 8FBF0034 */ lw $ra, 0x34($sp) -/* 076500 7F0419D0 8FB00028 */ lw $s0, 0x28($sp) -/* 076504 7F0419D4 8FB1002C */ lw $s1, 0x2c($sp) -/* 076508 7F0419D8 8FB20030 */ lw $s2, 0x30($sp) -/* 07650C 7F0419DC 03E00008 */ jr $ra -/* 076510 7F0419E0 27BD0058 */ addiu $sp, $sp, 0x58 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0419E4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0419E4 -/* 076514 7F0419E4 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 076518 7F0419E8 AFBF0064 */ sw $ra, 0x64($sp) -/* 07651C 7F0419EC AFBE0060 */ sw $fp, 0x60($sp) -/* 076520 7F0419F0 AFB7005C */ sw $s7, 0x5c($sp) -/* 076524 7F0419F4 AFB60058 */ sw $s6, 0x58($sp) -/* 076528 7F0419F8 AFB50054 */ sw $s5, 0x54($sp) -/* 07652C 7F0419FC AFB40050 */ sw $s4, 0x50($sp) -/* 076530 7F041A00 AFB3004C */ sw $s3, 0x4c($sp) -/* 076534 7F041A04 AFB20048 */ sw $s2, 0x48($sp) -/* 076538 7F041A08 AFB10044 */ sw $s1, 0x44($sp) -/* 07653C 7F041A0C AFB00040 */ sw $s0, 0x40($sp) -/* 076540 7F041A10 F7B40038 */ sdc1 $f20, 0x38($sp) -/* 076544 7F041A14 8C830010 */ lw $v1, 0x10($a0) -/* 076548 7F041A18 C7B400A8 */ lwc1 $f20, 0xa8($sp) -/* 07654C 7F041A1C 8FB700AC */ lw $s7, 0xac($sp) -/* 076550 7F041A20 8FBE00B0 */ lw $fp, 0xb0($sp) -/* 076554 7F041A24 27AE008C */ addiu $t6, $sp, 0x8c -/* 076558 7F041A28 27AF0080 */ addiu $t7, $sp, 0x80 -/* 07655C 7F041A2C 27B8007C */ addiu $t8, $sp, 0x7c -/* 076560 7F041A30 27B90078 */ addiu $t9, $sp, 0x78 -/* 076564 7F041A34 27A80074 */ addiu $t0, $sp, 0x74 -/* 076568 7F041A38 00808025 */ move $s0, $a0 -/* 07656C 7F041A3C 00A09825 */ move $s3, $a1 -/* 076570 7F041A40 00C0A025 */ move $s4, $a2 -/* 076574 7F041A44 00E0A825 */ move $s5, $a3 -/* 076578 7F041A48 0000B025 */ move $s6, $zero -/* 07657C 7F041A4C AFA8002C */ sw $t0, 0x2c($sp) -/* 076580 7F041A50 AFB90028 */ sw $t9, 0x28($sp) -/* 076584 7F041A54 AFB80024 */ sw $t8, 0x24($sp) -/* 076588 7F041A58 AFAF0020 */ sw $t7, 0x20($sp) -/* 07658C 7F041A5C AFAE001C */ sw $t6, 0x1c($sp) -/* 076590 7F041A60 AFA3006C */ sw $v1, 0x6c($sp) -/* 076594 7F041A64 E7B40010 */ swc1 $f20, 0x10($sp) -/* 076598 7F041A68 AFB70014 */ sw $s7, 0x14($sp) -/* 07659C 7F041A6C 0FC105F7 */ jal sub_GAME_7F0417DC -/* 0765A0 7F041A70 AFBE0018 */ sw $fp, 0x18($sp) -/* 0765A4 7F041A74 10400024 */ beqz $v0, .L7F041B08 -/* 0765A8 7F041A78 8FA3006C */ lw $v1, 0x6c($sp) -/* 0765AC 7F041A7C 8FA900BC */ lw $t1, 0xbc($sp) -/* 0765B0 7F041A80 C7A4007C */ lwc1 $f4, 0x7c($sp) -/* 0765B4 7F041A84 8FB100B4 */ lw $s1, 0xb4($sp) -/* 0765B8 7F041A88 C5260000 */ lwc1 $f6, ($t1) -/* 0765BC 7F041A8C 8FB200B8 */ lw $s2, 0xb8($sp) -/* 0765C0 7F041A90 4606203C */ c.lt.s $f4, $f6 -/* 0765C4 7F041A94 00000000 */ nop -/* 0765C8 7F041A98 4502001C */ bc1fl .L7F041B0C -/* 0765CC 7F041A9C 906E0001 */ lbu $t6, 1($v1) -/* 0765D0 7F041AA0 E5240000 */ swc1 $f4, ($t1) -/* 0765D4 7F041AA4 C7A8008C */ lwc1 $f8, 0x8c($sp) -/* 0765D8 7F041AA8 3C018003 */ lui $at, %hi(D_80030B0C) -/* 0765DC 7F041AAC 240BFFFF */ li $t3, -1 -/* 0765E0 7F041AB0 E6280000 */ swc1 $f8, ($s1) -/* 0765E4 7F041AB4 C7AA0090 */ lwc1 $f10, 0x90($sp) -/* 0765E8 7F041AB8 24160001 */ li $s6, 1 -/* 0765EC 7F041ABC E62A0004 */ swc1 $f10, 4($s1) -/* 0765F0 7F041AC0 C7B00094 */ lwc1 $f16, 0x94($sp) -/* 0765F4 7F041AC4 E6300008 */ swc1 $f16, 8($s1) -/* 0765F8 7F041AC8 C7B20080 */ lwc1 $f18, 0x80($sp) -/* 0765FC 7F041ACC E6520000 */ swc1 $f18, ($s2) -/* 076600 7F041AD0 C7A60084 */ lwc1 $f6, 0x84($sp) -/* 076604 7F041AD4 E6460004 */ swc1 $f6, 4($s2) -/* 076608 7F041AD8 C7A40088 */ lwc1 $f4, 0x88($sp) -/* 07660C 7F041ADC E6440008 */ swc1 $f4, 8($s2) -/* 076610 7F041AE0 8E0A0010 */ lw $t2, 0x10($s0) -/* 076614 7F041AE4 8FAC0078 */ lw $t4, 0x78($sp) -/* 076618 7F041AE8 8FAD0074 */ lw $t5, 0x74($sp) -/* 07661C 7F041AEC AC2A0B0C */ sw $t2, %lo(D_80030B0C)($at) -/* 076620 7F041AF0 3C018003 */ lui $at, %hi(bodypartshot) -/* 076624 7F041AF4 AC2B0B10 */ sw $t3, %lo(bodypartshot)($at) -/* 076628 7F041AF8 3C018007 */ lui $at, %hi(objinst) -/* 07662C 7F041AFC AC2C5B70 */ sw $t4, %lo(objinst)($at) -/* 076630 7F041B00 3C018007 */ lui $at, %hi(dword_CODE_bss_80075B74) -/* 076634 7F041B04 AC2D5B74 */ sw $t5, %lo(dword_CODE_bss_80075B74)($at) -.L7F041B08: -/* 076638 7F041B08 906E0001 */ lbu $t6, 1($v1) -.L7F041B0C: -/* 07663C 7F041B0C 8FB100B4 */ lw $s1, 0xb4($sp) -/* 076640 7F041B10 8FB200B8 */ lw $s2, 0xb8($sp) -/* 076644 7F041B14 31CF0002 */ andi $t7, $t6, 2 -/* 076648 7F041B18 51E0001A */ beql $t7, $zero, .L7F041B84 -/* 07664C 7F041B1C 8FBF0064 */ lw $ra, 0x64($sp) -/* 076650 7F041B20 8C700020 */ lw $s0, 0x20($v1) -/* 076654 7F041B24 52000017 */ beql $s0, $zero, .L7F041B84 -/* 076658 7F041B28 8FBF0064 */ lw $ra, 0x64($sp) -/* 07665C 7F041B2C 92180001 */ lbu $t8, 1($s0) -.L7F041B30: -/* 076660 7F041B30 02602825 */ move $a1, $s3 -/* 076664 7F041B34 02803025 */ move $a2, $s4 -/* 076668 7F041B38 33190002 */ andi $t9, $t8, 2 -/* 07666C 7F041B3C 1320000D */ beqz $t9, .L7F041B74 -/* 076670 7F041B40 02A03825 */ move $a3, $s5 -/* 076674 7F041B44 8E040004 */ lw $a0, 4($s0) -/* 076678 7F041B48 8FA800BC */ lw $t0, 0xbc($sp) -/* 07667C 7F041B4C AFB20020 */ sw $s2, 0x20($sp) -/* 076680 7F041B50 AFB1001C */ sw $s1, 0x1c($sp) -/* 076684 7F041B54 AFBE0018 */ sw $fp, 0x18($sp) -/* 076688 7F041B58 AFB70014 */ sw $s7, 0x14($sp) -/* 07668C 7F041B5C E7B40010 */ swc1 $f20, 0x10($sp) -/* 076690 7F041B60 0FC10679 */ jal sub_GAME_7F0419E4 -/* 076694 7F041B64 AFA80024 */ sw $t0, 0x24($sp) -/* 076698 7F041B68 50400003 */ beql $v0, $zero, .L7F041B78 -/* 07669C 7F041B6C 8E100024 */ lw $s0, 0x24($s0) -/* 0766A0 7F041B70 24160001 */ li $s6, 1 -.L7F041B74: -/* 0766A4 7F041B74 8E100024 */ lw $s0, 0x24($s0) -.L7F041B78: -/* 0766A8 7F041B78 5600FFED */ bnezl $s0, .L7F041B30 -/* 0766AC 7F041B7C 92180001 */ lbu $t8, 1($s0) -/* 0766B0 7F041B80 8FBF0064 */ lw $ra, 0x64($sp) -.L7F041B84: -/* 0766B4 7F041B84 02C01025 */ move $v0, $s6 -/* 0766B8 7F041B88 8FB60058 */ lw $s6, 0x58($sp) -/* 0766BC 7F041B8C D7B40038 */ ldc1 $f20, 0x38($sp) -/* 0766C0 7F041B90 8FB00040 */ lw $s0, 0x40($sp) -/* 0766C4 7F041B94 8FB10044 */ lw $s1, 0x44($sp) -/* 0766C8 7F041B98 8FB20048 */ lw $s2, 0x48($sp) -/* 0766CC 7F041B9C 8FB3004C */ lw $s3, 0x4c($sp) -/* 0766D0 7F041BA0 8FB40050 */ lw $s4, 0x50($sp) -/* 0766D4 7F041BA4 8FB50054 */ lw $s5, 0x54($sp) -/* 0766D8 7F041BA8 8FB7005C */ lw $s7, 0x5c($sp) -/* 0766DC 7F041BAC 8FBE0060 */ lw $fp, 0x60($sp) -/* 0766E0 7F041BB0 03E00008 */ jr $ra -/* 0766E4 7F041BB4 27BD0098 */ addiu $sp, $sp, 0x98 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F041BB8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F041BB8 -/* 0766E8 7F041BB8 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 0766EC 7F041BBC AFA70074 */ sw $a3, 0x74($sp) -/* 0766F0 7F041BC0 AFBF002C */ sw $ra, 0x2c($sp) -/* 0766F4 7F041BC4 AFB20028 */ sw $s2, 0x28($sp) -/* 0766F8 7F041BC8 AFB10024 */ sw $s1, 0x24($sp) -/* 0766FC 7F041BCC AFB00020 */ sw $s0, 0x20($sp) -/* 076700 7F041BD0 AFA40068 */ sw $a0, 0x68($sp) -/* 076704 7F041BD4 00803825 */ move $a3, $a0 -/* 076708 7F041BD8 8C920018 */ lw $s2, 0x18($a0) -/* 07670C 7F041BDC 8C84001C */ lw $a0, 0x1c($a0) -/* 076710 7F041BE0 00C08025 */ move $s0, $a2 -/* 076714 7F041BE4 00A08825 */ move $s1, $a1 -/* 076718 7F041BE8 0FC1B403 */ jal getinstsize -/* 07671C 7F041BEC AFA70068 */ sw $a3, 0x68($sp) -/* 076720 7F041BF0 C6440008 */ lwc1 $f4, 8($s2) -/* 076724 7F041BF4 C6260000 */ lwc1 $f6, ($s1) -/* 076728 7F041BF8 C648000C */ lwc1 $f8, 0xc($s2) -/* 07672C 7F041BFC C62A0004 */ lwc1 $f10, 4($s1) -/* 076730 7F041C00 46062081 */ sub.s $f2, $f4, $f6 -/* 076734 7F041C04 C6060000 */ lwc1 $f6, ($s0) -/* 076738 7F041C08 C6240008 */ lwc1 $f4, 8($s1) -/* 07673C 7F041C0C 460A4301 */ sub.s $f12, $f8, $f10 -/* 076740 7F041C10 C6520010 */ lwc1 $f18, 0x10($s2) -/* 076744 7F041C14 46061202 */ mul.s $f8, $f2, $f6 -/* 076748 7F041C18 C60A0004 */ lwc1 $f10, 4($s0) -/* 07674C 7F041C1C 46049381 */ sub.s $f14, $f18, $f4 -/* 076750 7F041C20 C6060008 */ lwc1 $f6, 8($s0) -/* 076754 7F041C24 460A6482 */ mul.s $f18, $f12, $f10 -/* 076758 7F041C28 46124100 */ add.s $f4, $f8, $f18 -/* 07675C 7F041C2C 460E3282 */ mul.s $f10, $f6, $f14 -/* 076760 7F041C30 C7B20074 */ lwc1 $f18, 0x74($sp) -/* 076764 7F041C34 46000207 */ neg.s $f8, $f0 -/* 076768 7F041C38 46045400 */ add.s $f16, $f10, $f4 -/* 07676C 7F041C3C 4610403E */ c.le.s $f8, $f16 -/* 076770 7F041C40 00000000 */ nop -/* 076774 7F041C44 4502006B */ bc1fl .L7F041DF4 -/* 076778 7F041C48 00001025 */ move $v0, $zero -/* 07677C 7F041C4C 46009180 */ add.s $f6, $f18, $f0 -/* 076780 7F041C50 4606803E */ c.le.s $f16, $f6 -/* 076784 7F041C54 00000000 */ nop -/* 076788 7F041C58 45020066 */ bc1fl .L7F041DF4 -/* 07678C 7F041C5C 00001025 */ move $v0, $zero -/* 076790 7F041C60 924E0001 */ lbu $t6, 1($s2) -/* 076794 7F041C64 8FB80068 */ lw $t8, 0x68($sp) -/* 076798 7F041C68 27A40038 */ addiu $a0, $sp, 0x38 -/* 07679C 7F041C6C 31CF0002 */ andi $t7, $t6, 2 -/* 0767A0 7F041C70 11E0005F */ beqz $t7, .L7F041DF0 -/* 0767A4 7F041C74 27A70040 */ addiu $a3, $sp, 0x40 -/* 0767A8 7F041C78 8F190020 */ lw $t9, 0x20($t8) -/* 0767AC 7F041C7C 27A8003C */ addiu $t0, $sp, 0x3c -/* 0767B0 7F041C80 AFA80010 */ sw $t0, 0x10($sp) -/* 0767B4 7F041C84 8FA50078 */ lw $a1, 0x78($sp) -/* 0767B8 7F041C88 8FA6007C */ lw $a2, 0x7c($sp) -/* 0767BC 7F041C8C 0FC1B004 */ jal sub_GAME_7F06C010 -/* 0767C0 7F041C90 AFB90038 */ sw $t9, 0x38($sp) -/* 0767C4 7F041C94 18400056 */ blez $v0, .L7F041DF0 -/* 0767C8 7F041C98 AFA20044 */ sw $v0, 0x44($sp) -/* 0767CC 7F041C9C 8FA40040 */ lw $a0, 0x40($sp) -/* 0767D0 7F041CA0 8FA5003C */ lw $a1, 0x3c($sp) -/* 0767D4 7F041CA4 0FC1B198 */ jal sub_GAME_7F06C660 -/* 0767D8 7F041CA8 00003025 */ move $a2, $zero -/* 0767DC 7F041CAC 8FA30078 */ lw $v1, 0x78($sp) -/* 0767E0 7F041CB0 C44A0030 */ lwc1 $f10, 0x30($v0) -/* 0767E4 7F041CB4 8FA7007C */ lw $a3, 0x7c($sp) -/* 0767E8 7F041CB8 C4640000 */ lwc1 $f4, ($v1) -/* 0767EC 7F041CBC C4480034 */ lwc1 $f8, 0x34($v0) -/* 0767F0 7F041CC0 C4720004 */ lwc1 $f18, 4($v1) -/* 0767F4 7F041CC4 46045081 */ sub.s $f2, $f10, $f4 -/* 0767F8 7F041CC8 C4E40000 */ lwc1 $f4, ($a3) -/* 0767FC 7F041CCC C4460038 */ lwc1 $f6, 0x38($v0) -/* 076800 7F041CD0 46124301 */ sub.s $f12, $f8, $f18 -/* 076804 7F041CD4 C46A0008 */ lwc1 $f10, 8($v1) -/* 076808 7F041CD8 46041202 */ mul.s $f8, $f2, $f4 -/* 07680C 7F041CDC C4F20004 */ lwc1 $f18, 4($a3) -/* 076810 7F041CE0 460A3381 */ sub.s $f14, $f6, $f10 -/* 076814 7F041CE4 C4E40008 */ lwc1 $f4, 8($a3) -/* 076818 7F041CE8 46126182 */ mul.s $f6, $f12, $f18 -/* 07681C 7F041CEC 8FA50088 */ lw $a1, 0x88($sp) -/* 076820 7F041CF0 8FA20080 */ lw $v0, 0x80($sp) -/* 076824 7F041CF4 460E2482 */ mul.s $f18, $f4, $f14 -/* 076828 7F041CF8 8FA40084 */ lw $a0, 0x84($sp) -/* 07682C 7F041CFC 46064280 */ add.s $f10, $f8, $f6 -/* 076830 7F041D00 C4A80000 */ lwc1 $f8, ($a1) -/* 076834 7F041D04 460A9000 */ add.s $f0, $f18, $f10 -/* 076838 7F041D08 4608003C */ c.lt.s $f0, $f8 -/* 07683C 7F041D0C 00000000 */ nop -/* 076840 7F041D10 45020038 */ bc1fl .L7F041DF4 -/* 076844 7F041D14 00001025 */ move $v0, $zero -/* 076848 7F041D18 E4A00000 */ swc1 $f0, ($a1) -/* 07684C 7F041D1C C6060000 */ lwc1 $f6, ($s0) -/* 076850 7F041D20 C6320000 */ lwc1 $f18, ($s1) -/* 076854 7F041D24 44801000 */ mtc1 $zero, $f2 -/* 076858 7F041D28 46003102 */ mul.s $f4, $f6, $f0 -/* 07685C 7F041D2C 24850004 */ addiu $a1, $a0, 4 -/* 076860 7F041D30 46122280 */ add.s $f10, $f4, $f18 -/* 076864 7F041D34 E44A0000 */ swc1 $f10, ($v0) -/* 076868 7F041D38 C6080004 */ lwc1 $f8, 4($s0) -/* 07686C 7F041D3C C6240004 */ lwc1 $f4, 4($s1) -/* 076870 7F041D40 46004182 */ mul.s $f6, $f8, $f0 -/* 076874 7F041D44 46043480 */ add.s $f18, $f6, $f4 -/* 076878 7F041D48 E4520004 */ swc1 $f18, 4($v0) -/* 07687C 7F041D4C C60A0008 */ lwc1 $f10, 8($s0) -/* 076880 7F041D50 C6260008 */ lwc1 $f6, 8($s1) -/* 076884 7F041D54 46005202 */ mul.s $f8, $f10, $f0 -/* 076888 7F041D58 46064100 */ add.s $f4, $f8, $f6 -/* 07688C 7F041D5C E4440008 */ swc1 $f4, 8($v0) -/* 076890 7F041D60 C6120000 */ lwc1 $f18, ($s0) -/* 076894 7F041D64 E4820004 */ swc1 $f2, 4($a0) -/* 076898 7F041D68 46009287 */ neg.s $f10, $f18 -/* 07689C 7F041D6C E48A0000 */ swc1 $f10, ($a0) -/* 0768A0 7F041D70 C4840000 */ lwc1 $f4, ($a0) -/* 0768A4 7F041D74 C6080008 */ lwc1 $f8, 8($s0) -/* 0768A8 7F041D78 46041032 */ c.eq.s $f2, $f4 -/* 0768AC 7F041D7C 46004187 */ neg.s $f6, $f8 -/* 0768B0 7F041D80 45000007 */ bc1f .L7F041DA0 -/* 0768B4 7F041D84 E4860008 */ swc1 $f6, 8($a0) -/* 0768B8 7F041D88 C4920008 */ lwc1 $f18, 8($a0) -/* 0768BC 7F041D8C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0768C0 7F041D90 46121032 */ c.eq.s $f2, $f18 -/* 0768C4 7F041D94 00000000 */ nop -/* 0768C8 7F041D98 45030006 */ bc1tl .L7F041DB4 -/* 0768CC 7F041D9C 44815000 */ mtc1 $at, $f10 -.L7F041DA0: -/* 0768D0 7F041DA0 0C007DD4 */ jal guNormalize -/* 0768D4 7F041DA4 24860008 */ addiu $a2, $a0, 8 -/* 0768D8 7F041DA8 10000005 */ b .L7F041DC0 -/* 0768DC 7F041DAC 8FA90044 */ lw $t1, 0x44($sp) -/* 0768E0 7F041DB0 44815000 */ mtc1 $at, $f10 -.L7F041DB4: -/* 0768E4 7F041DB4 00000000 */ nop -/* 0768E8 7F041DB8 E48A0008 */ swc1 $f10, 8($a0) -/* 0768EC 7F041DBC 8FA90044 */ lw $t1, 0x44($sp) -.L7F041DC0: -/* 0768F0 7F041DC0 3C018003 */ lui $at, %hi(D_80030B0C) -/* 0768F4 7F041DC4 AC320B0C */ sw $s2, %lo(D_80030B0C)($at) -/* 0768F8 7F041DC8 8FAA0040 */ lw $t2, 0x40($sp) -/* 0768FC 7F041DCC 3C018003 */ lui $at, %hi(bodypartshot) -/* 076900 7F041DD0 AC290B10 */ sw $t1, %lo(bodypartshot)($at) -/* 076904 7F041DD4 3C018007 */ lui $at, %hi(objinst) -/* 076908 7F041DD8 8FAB003C */ lw $t3, 0x3c($sp) -/* 07690C 7F041DDC AC2A5B70 */ sw $t2, %lo(objinst)($at) -/* 076910 7F041DE0 3C018007 */ lui $at, %hi(dword_CODE_bss_80075B74) -/* 076914 7F041DE4 24020001 */ li $v0, 1 -/* 076918 7F041DE8 10000002 */ b .L7F041DF4 -/* 07691C 7F041DEC AC2B5B74 */ sw $t3, %lo(dword_CODE_bss_80075B74)($at) -.L7F041DF0: -/* 076920 7F041DF0 00001025 */ move $v0, $zero -.L7F041DF4: -/* 076924 7F041DF4 8FBF002C */ lw $ra, 0x2c($sp) -/* 076928 7F041DF8 8FB00020 */ lw $s0, 0x20($sp) -/* 07692C 7F041DFC 8FB10024 */ lw $s1, 0x24($sp) -/* 076930 7F041E00 8FB20028 */ lw $s2, 0x28($sp) -/* 076934 7F041E04 03E00008 */ jr $ra -/* 076938 7F041E08 27BD0068 */ addiu $sp, $sp, 0x68 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F041E0C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F041E0C -/* 07693C 7F041E0C 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 076940 7F041E10 AFBF005C */ sw $ra, 0x5c($sp) -/* 076944 7F041E14 AFB40048 */ sw $s4, 0x48($sp) -/* 076948 7F041E18 AFB20040 */ sw $s2, 0x40($sp) -/* 07694C 7F041E1C 00E09025 */ move $s2, $a3 -/* 076950 7F041E20 00A0A025 */ move $s4, $a1 -/* 076954 7F041E24 AFBE0058 */ sw $fp, 0x58($sp) -/* 076958 7F041E28 AFB70054 */ sw $s7, 0x54($sp) -/* 07695C 7F041E2C AFB60050 */ sw $s6, 0x50($sp) -/* 076960 7F041E30 AFB5004C */ sw $s5, 0x4c($sp) -/* 076964 7F041E34 AFB30044 */ sw $s3, 0x44($sp) -/* 076968 7F041E38 AFB1003C */ sw $s1, 0x3c($sp) -/* 07696C 7F041E3C AFB00038 */ sw $s0, 0x38($sp) -/* 076970 7F041E40 F7B40030 */ sdc1 $f20, 0x30($sp) -/* 076974 7F041E44 AFA400B8 */ sw $a0, 0xb8($sp) -/* 076978 7F041E48 AFA600C0 */ sw $a2, 0xc0($sp) -/* 07697C 7F041E4C AFA000B4 */ sw $zero, 0xb4($sp) -/* 076980 7F041E50 0FC1F3A1 */ jal get_ptr_for_players_tank -/* 076984 7F041E54 AFA000A4 */ sw $zero, 0xa4($sp) -/* 076988 7F041E58 8FA300C0 */ lw $v1, 0xc0($sp) -/* 07698C 7F041E5C AFA20074 */ sw $v0, 0x74($sp) -/* 076990 7F041E60 C6860000 */ lwc1 $f6, ($s4) -/* 076994 7F041E64 C4640000 */ lwc1 $f4, ($v1) -/* 076998 7F041E68 46062201 */ sub.s $f8, $f4, $f6 -/* 07699C 7F041E6C E7A80098 */ swc1 $f8, 0x98($sp) -/* 0769A0 7F041E70 C6900004 */ lwc1 $f16, 4($s4) -/* 0769A4 7F041E74 C46A0004 */ lwc1 $f10, 4($v1) -/* 0769A8 7F041E78 46105481 */ sub.s $f18, $f10, $f16 -/* 0769AC 7F041E7C C7AA0098 */ lwc1 $f10, 0x98($sp) -/* 0769B0 7F041E80 E7B2009C */ swc1 $f18, 0x9c($sp) -/* 0769B4 7F041E84 C6860008 */ lwc1 $f6, 8($s4) -/* 0769B8 7F041E88 C4640008 */ lwc1 $f4, 8($v1) -/* 0769BC 7F041E8C 460A5402 */ mul.s $f16, $f10, $f10 -/* 0769C0 7F041E90 C7B2009C */ lwc1 $f18, 0x9c($sp) -/* 0769C4 7F041E94 46062201 */ sub.s $f8, $f4, $f6 -/* 0769C8 7F041E98 46129102 */ mul.s $f4, $f18, $f18 -/* 0769CC 7F041E9C E7A800A0 */ swc1 $f8, 0xa0($sp) -/* 0769D0 7F041EA0 C7A800A0 */ lwc1 $f8, 0xa0($sp) -/* 0769D4 7F041EA4 46084282 */ mul.s $f10, $f8, $f8 -/* 0769D8 7F041EA8 46048180 */ add.s $f6, $f16, $f4 -/* 0769DC 7F041EAC 0C007DF8 */ jal sqrtf -/* 0769E0 7F041EB0 46065300 */ add.s $f12, $f10, $f6 -/* 0769E4 7F041EB4 44809000 */ mtc1 $zero, $f18 -/* 0769E8 7F041EB8 46000506 */ mov.s $f20, $f0 -/* 0769EC 7F041EBC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0769F0 7F041EC0 46120032 */ c.eq.s $f0, $f18 -/* 0769F4 7F041EC4 00000000 */ nop -/* 0769F8 7F041EC8 45020004 */ bc1fl .L7F041EDC -/* 0769FC 7F041ECC 44818000 */ mtc1 $at, $f16 -/* 076A00 7F041ED0 100000D1 */ b .L7F042218 -/* 076A04 7F041ED4 00001025 */ move $v0, $zero -/* 076A08 7F041ED8 44818000 */ mtc1 $at, $f16 -.L7F041EDC: -/* 076A0C 7F041EDC C7A40098 */ lwc1 $f4, 0x98($sp) -/* 076A10 7F041EE0 C7AA009C */ lwc1 $f10, 0x9c($sp) -/* 076A14 7F041EE4 46148003 */ div.s $f0, $f16, $f20 -/* 076A18 7F041EE8 C7B200A0 */ lwc1 $f18, 0xa0($sp) -/* 076A1C 7F041EEC 46002202 */ mul.s $f8, $f4, $f0 -/* 076A20 7F041EF0 00000000 */ nop -/* 076A24 7F041EF4 46005182 */ mul.s $f6, $f10, $f0 -/* 076A28 7F041EF8 00000000 */ nop -/* 076A2C 7F041EFC 46009402 */ mul.s $f16, $f18, $f0 -/* 076A30 7F041F00 E7A80098 */ swc1 $f8, 0x98($sp) -/* 076A34 7F041F04 E7A6009C */ swc1 $f6, 0x9c($sp) -/* 076A38 7F041F08 E7B000A0 */ swc1 $f16, 0xa0($sp) -/* 076A3C 7F041F0C C6840000 */ lwc1 $f4, ($s4) -/* 076A40 7F041F10 E7A40088 */ swc1 $f4, 0x88($sp) -/* 076A44 7F041F14 C6880004 */ lwc1 $f8, 4($s4) -/* 076A48 7F041F18 E7A8008C */ swc1 $f8, 0x8c($sp) -/* 076A4C 7F041F1C C68A0008 */ lwc1 $f10, 8($s4) -/* 076A50 7F041F20 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 076A54 7F041F24 E7AA0090 */ swc1 $f10, 0x90($sp) -/* 076A58 7F041F28 00402025 */ move $a0, $v0 -/* 076A5C 7F041F2C 0FC1611D */ jal sub_GAME_7F058474 -/* 076A60 7F041F30 27A50088 */ addiu $a1, $sp, 0x88 -/* 076A64 7F041F34 C7A60098 */ lwc1 $f6, 0x98($sp) -/* 076A68 7F041F38 C7B2009C */ lwc1 $f18, 0x9c($sp) -/* 076A6C 7F041F3C C7B000A0 */ lwc1 $f16, 0xa0($sp) -/* 076A70 7F041F40 E7A6007C */ swc1 $f6, 0x7c($sp) -/* 076A74 7F041F44 E7B20080 */ swc1 $f18, 0x80($sp) -/* 076A78 7F041F48 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 076A7C 7F041F4C E7B00084 */ swc1 $f16, 0x84($sp) -/* 076A80 7F041F50 00402025 */ move $a0, $v0 -/* 076A84 7F041F54 0FC160F6 */ jal sub_GAME_7F0583D8 -/* 076A88 7F041F58 27A5007C */ addiu $a1, $sp, 0x7c -/* 076A8C 7F041F5C 12400099 */ beqz $s2, .L7F0421C4 -/* 076A90 7F041F60 E7B400A8 */ swc1 $f20, 0xa8($sp) -/* 076A94 7F041F64 0FC0F8FF */ jal sub_GAME_7F03E3FC -/* 076A98 7F041F68 8FA400D0 */ lw $a0, 0xd0($sp) -/* 076A9C 7F041F6C 3C138007 */ lui $s3, %hi(ptr_list_object_lookup_indices) -/* 076AA0 7F041F70 8E739C30 */ lw $s3, %lo(ptr_list_object_lookup_indices)($s3) -/* 076AA4 7F041F74 27BE00A8 */ addiu $fp, $sp, 0xa8 -/* 076AA8 7F041F78 27B70098 */ addiu $s7, $sp, 0x98 -/* 076AAC 7F041F7C 86620000 */ lh $v0, ($s3) -/* 076AB0 7F041F80 8FB600CC */ lw $s6, 0xcc($sp) -/* 076AB4 7F041F84 8FB500C8 */ lw $s5, 0xc8($sp) -/* 076AB8 7F041F88 0440008E */ bltz $v0, .L7F0421C4 -/* 076ABC 7F041F8C 00027080 */ sll $t6, $v0, 2 -.L7F041F90: -/* 076AC0 7F041F90 01C27023 */ subu $t6, $t6, $v0 -/* 076AC4 7F041F94 000E7080 */ sll $t6, $t6, 2 -/* 076AC8 7F041F98 8FB800B8 */ lw $t8, 0xb8($sp) -/* 076ACC 7F041F9C 01C27021 */ addu $t6, $t6, $v0 -/* 076AD0 7F041FA0 3C0F8007 */ lui $t7, %hi(pos_data_entry) -/* 076AD4 7F041FA4 25EF9C38 */ addiu $t7, %lo(pos_data_entry) # addiu $t7, $t7, -0x63c8 -/* 076AD8 7F041FA8 000E7080 */ sll $t6, $t6, 2 -/* 076ADC 7F041FAC 01CF8021 */ addu $s0, $t6, $t7 -/* 076AE0 7F041FB0 52180081 */ beql $s0, $t8, .L7F0421B8 -/* 076AE4 7F041FB4 86620002 */ lh $v0, 2($s3) -/* 076AE8 7F041FB8 92020000 */ lbu $v0, ($s0) -/* 076AEC 7F041FBC 24010001 */ li $at, 1 -/* 076AF0 7F041FC0 10410005 */ beq $v0, $at, .L7F041FD8 -/* 076AF4 7F041FC4 24010004 */ li $at, 4 -/* 076AF8 7F041FC8 10410003 */ beq $v0, $at, .L7F041FD8 -/* 076AFC 7F041FCC 24010002 */ li $at, 2 -/* 076B00 7F041FD0 54410030 */ bnel $v0, $at, .L7F042094 -/* 076B04 7F041FD4 24010003 */ li $at, 3 -.L7F041FD8: -/* 076B08 7F041FD8 8E110004 */ lw $s1, 4($s0) -/* 076B0C 7F041FDC 8E390064 */ lw $t9, 0x64($s1) -/* 076B10 7F041FE0 33280008 */ andi $t0, $t9, 8 -/* 076B14 7F041FE4 55000074 */ bnezl $t0, .L7F0421B8 -/* 076B18 7F041FE8 86620002 */ lh $v0, 2($s3) -/* 076B1C 7F041FEC 8E29000C */ lw $t1, 0xc($s1) -/* 076B20 7F041FF0 24010002 */ li $at, 2 -/* 076B24 7F041FF4 00095180 */ sll $t2, $t1, 6 -/* 076B28 7F041FF8 0542006F */ bltzl $t2, .L7F0421B8 -/* 076B2C 7F041FFC 86620002 */ lh $v0, 2($s3) -/* 076B30 7F042000 1441000B */ bne $v0, $at, .L7F042030 -/* 076B34 7F042004 324D0001 */ andi $t5, $s2, 1 -/* 076B38 7F042008 324B0002 */ andi $t3, $s2, 2 -/* 076B3C 7F04200C 5560000B */ bnezl $t3, .L7F04203C -/* 076B40 7F042010 8FAE0074 */ lw $t6, 0x74($sp) -/* 076B44 7F042014 0FC0F67B */ jal sub_GAME_7F03D9EC -/* 076B48 7F042018 02002025 */ move $a0, $s0 -/* 076B4C 7F04201C 00526024 */ and $t4, $v0, $s2 -/* 076B50 7F042020 55800006 */ bnezl $t4, .L7F04203C -/* 076B54 7F042024 8FAE0074 */ lw $t6, 0x74($sp) -/* 076B58 7F042028 10000063 */ b .L7F0421B8 -/* 076B5C 7F04202C 86620002 */ lh $v0, 2($s3) -.L7F042030: -/* 076B60 7F042030 51A00061 */ beql $t5, $zero, .L7F0421B8 -/* 076B64 7F042034 86620002 */ lh $v0, 2($s3) -/* 076B68 7F042038 8FAE0074 */ lw $t6, 0x74($sp) -.L7F04203C: -/* 076B6C 7F04203C 02202025 */ move $a0, $s1 -/* 076B70 7F042040 02802825 */ move $a1, $s4 -/* 076B74 7F042044 160E0004 */ bne $s0, $t6, .L7F042058 -/* 076B78 7F042048 8FA600C0 */ lw $a2, 0xc0($sp) -/* 076B7C 7F04204C 922F0002 */ lbu $t7, 2($s1) -/* 076B80 7F042050 31F80020 */ andi $t8, $t7, 0x20 -/* 076B84 7F042054 17000057 */ bnez $t8, .L7F0421B4 -.L7F042058: -/* 076B88 7F042058 27B90088 */ addiu $t9, $sp, 0x88 -/* 076B8C 7F04205C 27A8007C */ addiu $t0, $sp, 0x7c -/* 076B90 7F042060 AFA80018 */ sw $t0, 0x18($sp) -/* 076B94 7F042064 AFB90014 */ sw $t9, 0x14($sp) -/* 076B98 7F042068 02E03825 */ move $a3, $s7 -/* 076B9C 7F04206C E7B40010 */ swc1 $f20, 0x10($sp) -/* 076BA0 7F042070 AFB5001C */ sw $s5, 0x1c($sp) -/* 076BA4 7F042074 AFB60020 */ sw $s6, 0x20($sp) -/* 076BA8 7F042078 0FC10679 */ jal sub_GAME_7F0419E4 -/* 076BAC 7F04207C AFBE0024 */ sw $fp, 0x24($sp) -/* 076BB0 7F042080 1040004C */ beqz $v0, .L7F0421B4 -/* 076BB4 7F042084 24090001 */ li $t1, 1 -/* 076BB8 7F042088 1000004A */ b .L7F0421B4 -/* 076BBC 7F04208C AFA900A4 */ sw $t1, 0xa4($sp) -/* 076BC0 7F042090 24010003 */ li $at, 3 -.L7F042094: -/* 076BC4 7F042094 10410005 */ beq $v0, $at, .L7F0420AC -/* 076BC8 7F042098 24010006 */ li $at, 6 -/* 076BCC 7F04209C 5441002F */ bnel $v0, $at, .L7F04215C -/* 076BD0 7F0420A0 24010006 */ li $at, 6 -/* 076BD4 7F0420A4 8E0A0004 */ lw $t2, 4($s0) -/* 076BD8 7F0420A8 1140002B */ beqz $t2, .L7F042158 -.L7F0420AC: -/* 076BDC 7F0420AC 24010006 */ li $at, 6 -/* 076BE0 7F0420B0 1441000F */ bne $v0, $at, .L7F0420F0 -/* 076BE4 7F0420B4 8E110004 */ lw $s1, 4($s0) -/* 076BE8 7F0420B8 0FC26C57 */ jal sub_GAME_7F09B15C -/* 076BEC 7F0420BC 02002025 */ move $a0, $s0 -/* 076BF0 7F0420C0 00025880 */ sll $t3, $v0, 2 -/* 076BF4 7F0420C4 3C0C8008 */ lui $t4, %hi(ptr_BONDdata_p1) -/* 076BF8 7F0420C8 018B6021 */ addu $t4, $t4, $t3 -/* 076BFC 7F0420CC 8D8C9EE0 */ lw $t4, %lo(ptr_BONDdata_p1)($t4) -/* 076C00 7F0420D0 324E0004 */ andi $t6, $s2, 4 -/* 076C04 7F0420D4 8D8D00AC */ lw $t5, 0xac($t4) -/* 076C08 7F0420D8 51A00037 */ beql $t5, $zero, .L7F0421B8 -/* 076C0C 7F0420DC 86620002 */ lh $v0, 2($s3) -/* 076C10 7F0420E0 55C0000E */ bnezl $t6, .L7F04211C -/* 076C14 7F0420E4 4407A000 */ mfc1 $a3, $f20 -/* 076C18 7F0420E8 10000033 */ b .L7F0421B8 -/* 076C1C 7F0420EC 86620002 */ lh $v0, 2($s3) -.L7F0420F0: -/* 076C20 7F0420F0 24010003 */ li $at, 3 -/* 076C24 7F0420F4 54410009 */ bnel $v0, $at, .L7F04211C -/* 076C28 7F0420F8 4407A000 */ mfc1 $a3, $f20 -/* 076C2C 7F0420FC 962F0012 */ lhu $t7, 0x12($s1) -/* 076C30 7F042100 32590008 */ andi $t9, $s2, 8 -/* 076C34 7F042104 31F80100 */ andi $t8, $t7, 0x100 -/* 076C38 7F042108 5700002B */ bnezl $t8, .L7F0421B8 -/* 076C3C 7F04210C 86620002 */ lh $v0, 2($s3) -/* 076C40 7F042110 53200029 */ beql $t9, $zero, .L7F0421B8 -/* 076C44 7F042114 86620002 */ lh $v0, 2($s3) -/* 076C48 7F042118 4407A000 */ mfc1 $a3, $f20 -.L7F04211C: -/* 076C4C 7F04211C 27A80088 */ addiu $t0, $sp, 0x88 -/* 076C50 7F042120 27A9007C */ addiu $t1, $sp, 0x7c -/* 076C54 7F042124 AFA90014 */ sw $t1, 0x14($sp) -/* 076C58 7F042128 AFA80010 */ sw $t0, 0x10($sp) -/* 076C5C 7F04212C 02202025 */ move $a0, $s1 -/* 076C60 7F042130 02802825 */ move $a1, $s4 -/* 076C64 7F042134 02E03025 */ move $a2, $s7 -/* 076C68 7F042138 AFB50018 */ sw $s5, 0x18($sp) -/* 076C6C 7F04213C AFB6001C */ sw $s6, 0x1c($sp) -/* 076C70 7F042140 0FC106EE */ jal sub_GAME_7F041BB8 -/* 076C74 7F042144 AFBE0020 */ sw $fp, 0x20($sp) -/* 076C78 7F042148 1040001A */ beqz $v0, .L7F0421B4 -/* 076C7C 7F04214C 240A0001 */ li $t2, 1 -/* 076C80 7F042150 10000018 */ b .L7F0421B4 -/* 076C84 7F042154 AFAA00A4 */ sw $t2, 0xa4($sp) -.L7F042158: -/* 076C88 7F042158 24010006 */ li $at, 6 -.L7F04215C: -/* 076C8C 7F04215C 54410016 */ bnel $v0, $at, .L7F0421B8 -/* 076C90 7F042160 86620002 */ lh $v0, 2($s3) -/* 076C94 7F042164 0FC26C57 */ jal sub_GAME_7F09B15C -/* 076C98 7F042168 02002025 */ move $a0, $s0 -/* 076C9C 7F04216C 00025880 */ sll $t3, $v0, 2 -/* 076CA0 7F042170 3C0C8008 */ lui $t4, %hi(ptr_BONDdata_p1) -/* 076CA4 7F042174 018B6021 */ addu $t4, $t4, $t3 -/* 076CA8 7F042178 8D8C9EE0 */ lw $t4, %lo(ptr_BONDdata_p1)($t4) -/* 076CAC 7F04217C 02002025 */ move $a0, $s0 -/* 076CB0 7F042180 02802825 */ move $a1, $s4 -/* 076CB4 7F042184 8D8D00AC */ lw $t5, 0xac($t4) -/* 076CB8 7F042188 8FA600C0 */ lw $a2, 0xc0($sp) -/* 076CBC 7F04218C 02E03825 */ move $a3, $s7 -/* 076CC0 7F042190 51A00009 */ beql $t5, $zero, .L7F0421B8 -/* 076CC4 7F042194 86620002 */ lh $v0, 2($s3) -/* 076CC8 7F042198 AFB50010 */ sw $s5, 0x10($sp) -/* 076CCC 7F04219C AFB60014 */ sw $s6, 0x14($sp) -/* 076CD0 7F0421A0 0FC10500 */ jal sub_GAME_7F041400 -/* 076CD4 7F0421A4 AFBE0018 */ sw $fp, 0x18($sp) -/* 076CD8 7F0421A8 10400002 */ beqz $v0, .L7F0421B4 -/* 076CDC 7F0421AC 240E0001 */ li $t6, 1 -/* 076CE0 7F0421B0 AFAE00A4 */ sw $t6, 0xa4($sp) -.L7F0421B4: -/* 076CE4 7F0421B4 86620002 */ lh $v0, 2($s3) -.L7F0421B8: -/* 076CE8 7F0421B8 26730002 */ addiu $s3, $s3, 2 -/* 076CEC 7F0421BC 0443FF74 */ bgezl $v0, .L7F041F90 -/* 076CF0 7F0421C0 00027080 */ sll $t6, $v0, 2 -.L7F0421C4: -/* 076CF4 7F0421C4 8FAF00A4 */ lw $t7, 0xa4($sp) -/* 076CF8 7F0421C8 3C028007 */ lui $v0, %hi(flt_CODE_bss_80075B78) -/* 076CFC 7F0421CC 24425B78 */ addiu $v0, %lo(flt_CODE_bss_80075B78) # addiu $v0, $v0, 0x5b78 -/* 076D00 7F0421D0 11E00010 */ beqz $t7, .L7F042214 -/* 076D04 7F0421D4 3C038007 */ lui $v1, %hi(flt_CODE_bss_80075B88) -/* 076D08 7F0421D8 C7A40098 */ lwc1 $f4, 0x98($sp) -/* 076D0C 7F0421DC C7A8009C */ lwc1 $f8, 0x9c($sp) -/* 076D10 7F0421E0 C7AA00A0 */ lwc1 $f10, 0xa0($sp) -/* 076D14 7F0421E4 C7A6007C */ lwc1 $f6, 0x7c($sp) -/* 076D18 7F0421E8 C7B20080 */ lwc1 $f18, 0x80($sp) -/* 076D1C 7F0421EC C7B00084 */ lwc1 $f16, 0x84($sp) -/* 076D20 7F0421F0 24635B88 */ addiu $v1, %lo(flt_CODE_bss_80075B88) # addiu $v1, $v1, 0x5b88 -/* 076D24 7F0421F4 24180001 */ li $t8, 1 -/* 076D28 7F0421F8 AFB800B4 */ sw $t8, 0xb4($sp) -/* 076D2C 7F0421FC E4440000 */ swc1 $f4, ($v0) -/* 076D30 7F042200 E4480004 */ swc1 $f8, 4($v0) -/* 076D34 7F042204 E44A0008 */ swc1 $f10, 8($v0) -/* 076D38 7F042208 E4660000 */ swc1 $f6, ($v1) -/* 076D3C 7F04220C E4720004 */ swc1 $f18, 4($v1) -/* 076D40 7F042210 E4700008 */ swc1 $f16, 8($v1) -.L7F042214: -/* 076D44 7F042214 8FA200B4 */ lw $v0, 0xb4($sp) -.L7F042218: -/* 076D48 7F042218 8FBF005C */ lw $ra, 0x5c($sp) -/* 076D4C 7F04221C D7B40030 */ ldc1 $f20, 0x30($sp) -/* 076D50 7F042220 8FB00038 */ lw $s0, 0x38($sp) -/* 076D54 7F042224 8FB1003C */ lw $s1, 0x3c($sp) -/* 076D58 7F042228 8FB20040 */ lw $s2, 0x40($sp) -/* 076D5C 7F04222C 8FB30044 */ lw $s3, 0x44($sp) -/* 076D60 7F042230 8FB40048 */ lw $s4, 0x48($sp) -/* 076D64 7F042234 8FB5004C */ lw $s5, 0x4c($sp) -/* 076D68 7F042238 8FB60050 */ lw $s6, 0x50($sp) -/* 076D6C 7F04223C 8FB70054 */ lw $s7, 0x54($sp) -/* 076D70 7F042240 8FBE0058 */ lw $fp, 0x58($sp) -/* 076D74 7F042244 03E00008 */ jr $ra -/* 076D78 7F042248 27BD00B8 */ addiu $sp, $sp, 0xb8 -) -#endif - - - - - -#ifdef NONMATCHING -void handles_projectile_motion(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A58 -.word 0x3dcccccd /*0.1*/ -.text -glabel handles_projectile_motion -/* 076D7C 7F04224C 27BDFD50 */ addiu $sp, $sp, -0x2b0 -/* 076D80 7F042250 AFBF003C */ sw $ra, 0x3c($sp) -/* 076D84 7F042254 AFB30038 */ sw $s3, 0x38($sp) -/* 076D88 7F042258 AFB20034 */ sw $s2, 0x34($sp) -/* 076D8C 7F04225C AFB10030 */ sw $s1, 0x30($sp) -/* 076D90 7F042260 AFB0002C */ sw $s0, 0x2c($sp) -/* 076D94 7F042264 F7B40020 */ sdc1 $f20, 0x20($sp) -/* 076D98 7F042268 8C820010 */ lw $v0, 0x10($a0) -/* 076D9C 7F04226C 240F0001 */ li $t7, 1 -/* 076DA0 7F042270 3C018003 */ lui $at, %hi(D_80030B0C) -/* 076DA4 7F042274 8C4E0014 */ lw $t6, 0x14($v0) -/* 076DA8 7F042278 AFAF02A4 */ sw $t7, 0x2a4($sp) -/* 076DAC 7F04227C AC200B0C */ sw $zero, %lo(D_80030B0C)($at) -/* 076DB0 7F042280 AFAE02A8 */ sw $t6, 0x2a8($sp) -/* 076DB4 7F042284 C4840058 */ lwc1 $f4, 0x58($a0) -/* 076DB8 7F042288 C4A00000 */ lwc1 $f0, ($a1) -/* 076DBC 7F04228C 00E08025 */ move $s0, $a3 -/* 076DC0 7F042290 00A08825 */ move $s1, $a1 -/* 076DC4 7F042294 46040032 */ c.eq.s $f0, $f4 -/* 076DC8 7F042298 00809025 */ move $s2, $a0 -/* 076DCC 7F04229C 00C09825 */ move $s3, $a2 -/* 076DD0 7F0422A0 4502000E */ bc1fl .L7F0422DC -/* 076DD4 7F0422A4 E7A00268 */ swc1 $f0, 0x268($sp) -/* 076DD8 7F0422A8 C4A60004 */ lwc1 $f6, 4($a1) -/* 076DDC 7F0422AC C488005C */ lwc1 $f8, 0x5c($a0) -/* 076DE0 7F0422B0 46083032 */ c.eq.s $f6, $f8 -/* 076DE4 7F0422B4 00000000 */ nop -/* 076DE8 7F0422B8 45020008 */ bc1fl .L7F0422DC -/* 076DEC 7F0422BC E7A00268 */ swc1 $f0, 0x268($sp) -/* 076DF0 7F0422C0 C4AA0008 */ lwc1 $f10, 8($a1) -/* 076DF4 7F0422C4 C4900060 */ lwc1 $f16, 0x60($a0) -/* 076DF8 7F0422C8 46105032 */ c.eq.s $f10, $f16 -/* 076DFC 7F0422CC 00000000 */ nop -/* 076E00 7F0422D0 450301C6 */ bc1tl .L7F0429EC -/* 076E04 7F0422D4 8FBF003C */ lw $ra, 0x3c($sp) -/* 076E08 7F0422D8 E7A00268 */ swc1 $f0, 0x268($sp) -.L7F0422DC: -/* 076E0C 7F0422DC C6320004 */ lwc1 $f18, 4($s1) -/* 076E10 7F0422E0 E7B2026C */ swc1 $f18, 0x26c($sp) -/* 076E14 7F0422E4 C6240008 */ lwc1 $f4, 8($s1) -/* 076E18 7F0422E8 E7A40270 */ swc1 $f4, 0x270($sp) -/* 076E1C 7F0422EC 8E580064 */ lw $t8, 0x64($s2) -/* 076E20 7F0422F0 33190080 */ andi $t9, $t8, 0x80 -/* 076E24 7F0422F4 532001BD */ beql $t9, $zero, .L7F0429EC -/* 076E28 7F0422F8 8FBF003C */ lw $ra, 0x3c($sp) -/* 076E2C 7F0422FC 8E49006C */ lw $t1, 0x6c($s2) -/* 076E30 7F042300 26440058 */ addiu $a0, $s2, 0x58 -/* 076E34 7F042304 27A50268 */ addiu $a1, $sp, 0x268 -/* 076E38 7F042308 8D2A0000 */ lw $t2, ($t1) -/* 076E3C 7F04230C 27A70074 */ addiu $a3, $sp, 0x74 -/* 076E40 7F042310 27AC007C */ addiu $t4, $sp, 0x7c -/* 076E44 7F042314 314B0004 */ andi $t3, $t2, 4 -/* 076E48 7F042318 116001B3 */ beqz $t3, .L7F0429E8 -/* 076E4C 7F04231C 27AD0260 */ addiu $t5, $sp, 0x260 -/* 076E50 7F042320 AFA00260 */ sw $zero, 0x260($sp) -/* 076E54 7F042324 8E46006C */ lw $a2, 0x6c($s2) -/* 076E58 7F042328 240E0014 */ li $t6, 20 -/* 076E5C 7F04232C AFAE0018 */ sw $t6, 0x18($sp) -/* 076E60 7F042330 AFB102B4 */ sw $s1, 0x2b4($sp) -/* 076E64 7F042334 AFA40048 */ sw $a0, 0x48($sp) -/* 076E68 7F042338 AFA202AC */ sw $v0, 0x2ac($sp) -/* 076E6C 7F04233C AFAD0014 */ sw $t5, 0x14($sp) -/* 076E70 7F042340 AFAC0010 */ sw $t4, 0x10($sp) -/* 076E74 7F042344 0FC2D2AD */ jal sub_GAME_7F0B4AB4 -/* 076E78 7F042348 24C600CC */ addiu $a2, $a2, 0xcc -/* 076E7C 7F04234C 8FA30260 */ lw $v1, 0x260($sp) -/* 076E80 7F042350 27B8007C */ addiu $t8, $sp, 0x7c -/* 076E84 7F042354 24050064 */ li $a1, 100 -/* 076E88 7F042358 28610015 */ slti $at, $v1, 0x15 -/* 076E8C 7F04235C 54200003 */ bnezl $at, .L7F04236C -/* 076E90 7F042360 00037880 */ sll $t7, $v1, 2 -/* 076E94 7F042364 24030014 */ li $v1, 20 -/* 076E98 7F042368 00037880 */ sll $t7, $v1, 2 -.L7F04236C: -/* 076E9C 7F04236C 01F82021 */ addu $a0, $t7, $t8 -/* 076EA0 7F042370 0FC2E3A6 */ jal sub_GAME_7F0B8E98 -/* 076EA4 7F042374 AFA30260 */ sw $v1, 0x260($sp) -/* 076EA8 7F042378 8FA30260 */ lw $v1, 0x260($sp) -/* 076EAC 7F04237C 2419FFFF */ li $t9, -1 -/* 076EB0 7F042380 27B1007C */ addiu $s1, $sp, 0x7c -/* 076EB4 7F042384 00621821 */ addu $v1, $v1, $v0 -/* 076EB8 7F042388 00034880 */ sll $t1, $v1, 2 -/* 076EBC 7F04238C 03A95021 */ addu $t2, $sp, $t1 -/* 076EC0 7F042390 AD59007C */ sw $t9, 0x7c($t2) -/* 076EC4 7F042394 8FAB007C */ lw $t3, 0x7c($sp) -/* 076EC8 7F042398 AFA30260 */ sw $v1, 0x260($sp) -/* 076ECC 7F04239C 0562009E */ bltzl $t3, .L7F042618 -/* 076ED0 7F0423A0 8FAD02A4 */ lw $t5, 0x2a4($sp) -/* 076ED4 7F0423A4 4480A000 */ mtc1 $zero, $f20 -/* 076ED8 7F0423A8 8E260000 */ lw $a2, ($s1) -/* 076EDC 7F0423AC 8FA40048 */ lw $a0, 0x48($sp) -.L7F0423B0: -/* 076EE0 7F0423B0 27A50268 */ addiu $a1, $sp, 0x268 -/* 076EE4 7F0423B4 0FC2DE9E */ jal sub_GAME_7F0B7A78 -/* 076EE8 7F0423B8 27A70274 */ addiu $a3, $sp, 0x274 -/* 076EEC 7F0423BC 50400092 */ beql $v0, $zero, .L7F042608 -/* 076EF0 7F0423C0 8E260004 */ lw $a2, 4($s1) -/* 076EF4 7F0423C4 0FC2D20C */ jal get_room_data_float2 -/* 076EF8 7F0423C8 00000000 */ nop -/* 076EFC 7F0423CC C7A60274 */ lwc1 $f6, 0x274($sp) -/* 076F00 7F0423D0 C7AA0278 */ lwc1 $f10, 0x278($sp) -/* 076F04 7F0423D4 C7B2027C */ lwc1 $f18, 0x27c($sp) -/* 076F08 7F0423D8 46003202 */ mul.s $f8, $f6, $f0 -/* 076F0C 7F0423DC C7A60268 */ lwc1 $f6, 0x268($sp) -/* 076F10 7F0423E0 46005402 */ mul.s $f16, $f10, $f0 -/* 076F14 7F0423E4 C7AA0268 */ lwc1 $f10, 0x268($sp) -/* 076F18 7F0423E8 46009102 */ mul.s $f4, $f18, $f0 -/* 076F1C 7F0423EC E7A80274 */ swc1 $f8, 0x274($sp) -/* 076F20 7F0423F0 E7B00278 */ swc1 $f16, 0x278($sp) -/* 076F24 7F0423F4 E7A4027C */ swc1 $f4, 0x27c($sp) -/* 076F28 7F0423F8 C64C0058 */ lwc1 $f12, 0x58($s2) -/* 076F2C 7F0423FC 4606603E */ c.le.s $f12, $f6 -/* 076F30 7F042400 00000000 */ nop -/* 076F34 7F042404 4502000A */ bc1fl .L7F042430 -/* 076F38 7F042408 460C503E */ c.le.s $f10, $f12 -/* 076F3C 7F04240C 4606403E */ c.le.s $f8, $f6 -/* 076F40 7F042410 00000000 */ nop -/* 076F44 7F042414 45020006 */ bc1fl .L7F042430 -/* 076F48 7F042418 460C503E */ c.le.s $f10, $f12 -/* 076F4C 7F04241C 4608603E */ c.le.s $f12, $f8 -/* 076F50 7F042420 00000000 */ nop -/* 076F54 7F042424 4503000E */ bc1tl .L7F042460 -/* 076F58 7F042428 C642005C */ lwc1 $f2, 0x5c($s2) -/* 076F5C 7F04242C 460C503E */ c.le.s $f10, $f12 -.L7F042430: -/* 076F60 7F042430 C7B00274 */ lwc1 $f16, 0x274($sp) -/* 076F64 7F042434 45020074 */ bc1fl .L7F042608 -/* 076F68 7F042438 8E260004 */ lw $a2, 4($s1) -/* 076F6C 7F04243C 4610503E */ c.le.s $f10, $f16 -/* 076F70 7F042440 00000000 */ nop -/* 076F74 7F042444 45020070 */ bc1fl .L7F042608 -/* 076F78 7F042448 8E260004 */ lw $a2, 4($s1) -/* 076F7C 7F04244C 460C803E */ c.le.s $f16, $f12 -/* 076F80 7F042450 00000000 */ nop -/* 076F84 7F042454 4502006C */ bc1fl .L7F042608 -/* 076F88 7F042458 8E260004 */ lw $a2, 4($s1) -/* 076F8C 7F04245C C642005C */ lwc1 $f2, 0x5c($s2) -.L7F042460: -/* 076F90 7F042460 C7B2026C */ lwc1 $f18, 0x26c($sp) -/* 076F94 7F042464 C7A40278 */ lwc1 $f4, 0x278($sp) -/* 076F98 7F042468 C7A6026C */ lwc1 $f6, 0x26c($sp) -/* 076F9C 7F04246C 4612103E */ c.le.s $f2, $f18 -/* 076FA0 7F042470 00000000 */ nop -/* 076FA4 7F042474 4502000A */ bc1fl .L7F0424A0 -/* 076FA8 7F042478 4602303E */ c.le.s $f6, $f2 -/* 076FAC 7F04247C 4612203E */ c.le.s $f4, $f18 -/* 076FB0 7F042480 00000000 */ nop -/* 076FB4 7F042484 45020006 */ bc1fl .L7F0424A0 -/* 076FB8 7F042488 4602303E */ c.le.s $f6, $f2 -/* 076FBC 7F04248C 4604103E */ c.le.s $f2, $f4 -/* 076FC0 7F042490 00000000 */ nop -/* 076FC4 7F042494 4503000E */ bc1tl .L7F0424D0 -/* 076FC8 7F042498 C6400060 */ lwc1 $f0, 0x60($s2) -/* 076FCC 7F04249C 4602303E */ c.le.s $f6, $f2 -.L7F0424A0: -/* 076FD0 7F0424A0 C7A80278 */ lwc1 $f8, 0x278($sp) -/* 076FD4 7F0424A4 45020058 */ bc1fl .L7F042608 -/* 076FD8 7F0424A8 8E260004 */ lw $a2, 4($s1) -/* 076FDC 7F0424AC 4608303E */ c.le.s $f6, $f8 -/* 076FE0 7F0424B0 00000000 */ nop -/* 076FE4 7F0424B4 45020054 */ bc1fl .L7F042608 -/* 076FE8 7F0424B8 8E260004 */ lw $a2, 4($s1) -/* 076FEC 7F0424BC 4602403E */ c.le.s $f8, $f2 -/* 076FF0 7F0424C0 00000000 */ nop -/* 076FF4 7F0424C4 45020050 */ bc1fl .L7F042608 -/* 076FF8 7F0424C8 8E260004 */ lw $a2, 4($s1) -/* 076FFC 7F0424CC C6400060 */ lwc1 $f0, 0x60($s2) -.L7F0424D0: -/* 077000 7F0424D0 C7AA0270 */ lwc1 $f10, 0x270($sp) -/* 077004 7F0424D4 C7B0027C */ lwc1 $f16, 0x27c($sp) -/* 077008 7F0424D8 C7B20270 */ lwc1 $f18, 0x270($sp) -/* 07700C 7F0424DC 460A003E */ c.le.s $f0, $f10 -/* 077010 7F0424E0 00000000 */ nop -/* 077014 7F0424E4 4502000A */ bc1fl .L7F042510 -/* 077018 7F0424E8 4600903E */ c.le.s $f18, $f0 -/* 07701C 7F0424EC 460A803E */ c.le.s $f16, $f10 -/* 077020 7F0424F0 00000000 */ nop -/* 077024 7F0424F4 45020006 */ bc1fl .L7F042510 -/* 077028 7F0424F8 4600903E */ c.le.s $f18, $f0 -/* 07702C 7F0424FC 4610003E */ c.le.s $f0, $f16 -/* 077030 7F042500 00000000 */ nop -/* 077034 7F042504 4503000E */ bc1tl .L7F042540 -/* 077038 7F042508 C7A60274 */ lwc1 $f6, 0x274($sp) -/* 07703C 7F04250C 4600903E */ c.le.s $f18, $f0 -.L7F042510: -/* 077040 7F042510 C7A4027C */ lwc1 $f4, 0x27c($sp) -/* 077044 7F042514 4502003C */ bc1fl .L7F042608 -/* 077048 7F042518 8E260004 */ lw $a2, 4($s1) -/* 07704C 7F04251C 4604903E */ c.le.s $f18, $f4 -/* 077050 7F042520 00000000 */ nop -/* 077054 7F042524 45020038 */ bc1fl .L7F042608 -/* 077058 7F042528 8E260004 */ lw $a2, 4($s1) -/* 07705C 7F04252C 4600203E */ c.le.s $f4, $f0 -/* 077060 7F042530 00000000 */ nop -/* 077064 7F042534 45020034 */ bc1fl .L7F042608 -/* 077068 7F042538 8E260004 */ lw $a2, 4($s1) -/* 07706C 7F04253C C7A60274 */ lwc1 $f6, 0x274($sp) -.L7F042540: -/* 077070 7F042540 C7A80278 */ lwc1 $f8, 0x278($sp) -/* 077074 7F042544 46066032 */ c.eq.s $f12, $f6 -/* 077078 7F042548 00000000 */ nop -/* 07707C 7F04254C 4502000A */ bc1fl .L7F042578 -/* 077080 7F042550 C7B00274 */ lwc1 $f16, 0x274($sp) -/* 077084 7F042554 46081032 */ c.eq.s $f2, $f8 -/* 077088 7F042558 C7AA027C */ lwc1 $f10, 0x27c($sp) -/* 07708C 7F04255C 45020006 */ bc1fl .L7F042578 -/* 077090 7F042560 C7B00274 */ lwc1 $f16, 0x274($sp) -/* 077094 7F042564 460A0032 */ c.eq.s $f0, $f10 -/* 077098 7F042568 00000000 */ nop -/* 07709C 7F04256C 45030026 */ bc1tl .L7F042608 -/* 0770A0 7F042570 8E260004 */ lw $a2, 4($s1) -/* 0770A4 7F042574 C7B00274 */ lwc1 $f16, 0x274($sp) -.L7F042578: -/* 0770A8 7F042578 AFA002A4 */ sw $zero, 0x2a4($sp) -/* 0770AC 7F04257C 02002025 */ move $a0, $s0 -/* 0770B0 7F042580 E6700000 */ swc1 $f16, ($s3) -/* 0770B4 7F042584 C7B20278 */ lwc1 $f18, 0x278($sp) -/* 0770B8 7F042588 26050004 */ addiu $a1, $s0, 4 -/* 0770BC 7F04258C E6720004 */ swc1 $f18, 4($s3) -/* 0770C0 7F042590 C7A4027C */ lwc1 $f4, 0x27c($sp) -/* 0770C4 7F042594 E6640008 */ swc1 $f4, 8($s3) -/* 0770C8 7F042598 C7A60280 */ lwc1 $f6, 0x280($sp) -/* 0770CC 7F04259C E6060000 */ swc1 $f6, ($s0) -/* 0770D0 7F0425A0 C6100000 */ lwc1 $f16, ($s0) -/* 0770D4 7F0425A4 C7A80284 */ lwc1 $f8, 0x284($sp) -/* 0770D8 7F0425A8 4610A032 */ c.eq.s $f20, $f16 -/* 0770DC 7F0425AC E6080004 */ swc1 $f8, 4($s0) -/* 0770E0 7F0425B0 C7AA0288 */ lwc1 $f10, 0x288($sp) -/* 0770E4 7F0425B4 4500000C */ bc1f .L7F0425E8 -/* 0770E8 7F0425B8 E60A0008 */ swc1 $f10, 8($s0) -/* 0770EC 7F0425BC C6120004 */ lwc1 $f18, 4($s0) -/* 0770F0 7F0425C0 4612A032 */ c.eq.s $f20, $f18 -/* 0770F4 7F0425C4 00000000 */ nop -/* 0770F8 7F0425C8 45000007 */ bc1f .L7F0425E8 -/* 0770FC 7F0425CC 00000000 */ nop -/* 077100 7F0425D0 C6040008 */ lwc1 $f4, 8($s0) -/* 077104 7F0425D4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 077108 7F0425D8 4604A032 */ c.eq.s $f20, $f4 -/* 07710C 7F0425DC 00000000 */ nop -/* 077110 7F0425E0 45030006 */ bc1tl .L7F0425FC -/* 077114 7F0425E4 44813000 */ mtc1 $at, $f6 -.L7F0425E8: -/* 077118 7F0425E8 0C007DD4 */ jal guNormalize -/* 07711C 7F0425EC 26060008 */ addiu $a2, $s0, 8 -/* 077120 7F0425F0 10000005 */ b .L7F042608 -/* 077124 7F0425F4 8E260004 */ lw $a2, 4($s1) -/* 077128 7F0425F8 44813000 */ mtc1 $at, $f6 -.L7F0425FC: -/* 07712C 7F0425FC 00000000 */ nop -/* 077130 7F042600 E6060008 */ swc1 $f6, 8($s0) -/* 077134 7F042604 8E260004 */ lw $a2, 4($s1) -.L7F042608: -/* 077138 7F042608 26310004 */ addiu $s1, $s1, 4 -/* 07713C 7F04260C 04C3FF68 */ bgezl $a2, .L7F0423B0 -/* 077140 7F042610 8FA40048 */ lw $a0, 0x48($sp) -/* 077144 7F042614 8FAD02A4 */ lw $t5, 0x2a4($sp) -.L7F042618: -/* 077148 7F042618 8FA202B4 */ lw $v0, 0x2b4($sp) -/* 07714C 7F04261C 55A00037 */ bnezl $t5, .L7F0426FC -/* 077150 7F042620 27AE007C */ addiu $t6, $sp, 0x7c -/* 077154 7F042624 C4480000 */ lwc1 $f8, ($v0) -/* 077158 7F042628 C64A0058 */ lwc1 $f10, 0x58($s2) -/* 07715C 7F04262C 460A4401 */ sub.s $f16, $f8, $f10 -/* 077160 7F042630 E7B00064 */ swc1 $f16, 0x64($sp) -/* 077164 7F042634 C644005C */ lwc1 $f4, 0x5c($s2) -/* 077168 7F042638 C4520004 */ lwc1 $f18, 4($v0) -/* 07716C 7F04263C 46049181 */ sub.s $f6, $f18, $f4 -/* 077170 7F042640 C7B20064 */ lwc1 $f18, 0x64($sp) -/* 077174 7F042644 E7A60068 */ swc1 $f6, 0x68($sp) -/* 077178 7F042648 C64A0060 */ lwc1 $f10, 0x60($s2) -/* 07717C 7F04264C C4480008 */ lwc1 $f8, 8($v0) -/* 077180 7F042650 46129102 */ mul.s $f4, $f18, $f18 -/* 077184 7F042654 C7A60068 */ lwc1 $f6, 0x68($sp) -/* 077188 7F042658 460A4401 */ sub.s $f16, $f8, $f10 -/* 07718C 7F04265C 46063202 */ mul.s $f8, $f6, $f6 -/* 077190 7F042660 E7B0006C */ swc1 $f16, 0x6c($sp) -/* 077194 7F042664 C7B0006C */ lwc1 $f16, 0x6c($sp) -/* 077198 7F042668 46108482 */ mul.s $f18, $f16, $f16 -/* 07719C 7F04266C 46082280 */ add.s $f10, $f4, $f8 -/* 0771A0 7F042670 0C007DF8 */ jal sqrtf -/* 0771A4 7F042674 460A9300 */ add.s $f12, $f18, $f10 -/* 0771A8 7F042678 3C018005 */ lui $at, %hi(D_80052A58) # -0.000000 -/* 0771AC 7F04267C C42C2A58 */ lwc1 $f12, %lo(D_80052A58)($at) -/* 0771B0 7F042680 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 0771B4 7F042684 C7A40064 */ lwc1 $f4, 0x64($sp) -/* 0771B8 7F042688 4600603C */ c.lt.s $f12, $f0 -/* 0771BC 7F04268C 00000000 */ nop -/* 0771C0 7F042690 45020004 */ bc1fl .L7F0426A4 -/* 0771C4 7F042694 44811000 */ mtc1 $at, $f2 -/* 0771C8 7F042698 10000003 */ b .L7F0426A8 -/* 0771CC 7F04269C 46006083 */ div.s $f2, $f12, $f0 -/* 0771D0 7F0426A0 44811000 */ mtc1 $at, $f2 -.L7F0426A4: -/* 0771D4 7F0426A4 00000000 */ nop -.L7F0426A8: -/* 0771D8 7F0426A8 46041202 */ mul.s $f8, $f2, $f4 -/* 0771DC 7F0426AC C6660000 */ lwc1 $f6, ($s3) -/* 0771E0 7F0426B0 C6720004 */ lwc1 $f18, 4($s3) -/* 0771E4 7F0426B4 46083401 */ sub.s $f16, $f6, $f8 -/* 0771E8 7F0426B8 C6680008 */ lwc1 $f8, 8($s3) -/* 0771EC 7F0426BC E6700000 */ swc1 $f16, ($s3) -/* 0771F0 7F0426C0 C7AA0068 */ lwc1 $f10, 0x68($sp) -/* 0771F4 7F0426C4 460A1102 */ mul.s $f4, $f2, $f10 -/* 0771F8 7F0426C8 46049181 */ sub.s $f6, $f18, $f4 -/* 0771FC 7F0426CC C6640000 */ lwc1 $f4, ($s3) -/* 077200 7F0426D0 E6660004 */ swc1 $f6, 4($s3) -/* 077204 7F0426D4 C7B0006C */ lwc1 $f16, 0x6c($sp) -/* 077208 7F0426D8 46101282 */ mul.s $f10, $f2, $f16 -/* 07720C 7F0426DC 460A4481 */ sub.s $f18, $f8, $f10 -/* 077210 7F0426E0 E6720008 */ swc1 $f18, 8($s3) -/* 077214 7F0426E4 E7A40268 */ swc1 $f4, 0x268($sp) -/* 077218 7F0426E8 C6660004 */ lwc1 $f6, 4($s3) -/* 07721C 7F0426EC E7A6026C */ swc1 $f6, 0x26c($sp) -/* 077220 7F0426F0 C6700008 */ lwc1 $f16, 8($s3) -/* 077224 7F0426F4 E7B00270 */ swc1 $f16, 0x270($sp) -/* 077228 7F0426F8 27AE007C */ addiu $t6, $sp, 0x7c -.L7F0426FC: -/* 07722C 7F0426FC AFAE0018 */ sw $t6, 0x18($sp) -/* 077230 7F042700 8FA402AC */ lw $a0, 0x2ac($sp) -/* 077234 7F042704 8FA50048 */ lw $a1, 0x48($sp) -/* 077238 7F042708 27A60268 */ addiu $a2, $sp, 0x268 -/* 07723C 7F04270C 2407001F */ li $a3, 31 -/* 077240 7F042710 AFB30010 */ sw $s3, 0x10($sp) -/* 077244 7F042714 0FC10783 */ jal sub_GAME_7F041E0C -/* 077248 7F042718 AFB00014 */ sw $s0, 0x14($sp) -/* 07724C 7F04271C 14400036 */ bnez $v0, .L7F0427F8 -/* 077250 7F042720 8FAB02C4 */ lw $t3, 0x2c4($sp) -/* 077254 7F042724 8FAF02A4 */ lw $t7, 0x2a4($sp) -/* 077258 7F042728 8FB802C0 */ lw $t8, 0x2c0($sp) -/* 07725C 7F04272C 8FAD02A4 */ lw $t5, 0x2a4($sp) -/* 077260 7F042730 55E00016 */ bnezl $t7, .L7F04278C -/* 077264 7F042734 24100001 */ li $s0, 1 -/* 077268 7F042738 53000014 */ beql $t8, $zero, .L7F04278C -/* 07726C 7F04273C 24100001 */ li $s0, 1 -/* 077270 7F042740 8FA902C4 */ lw $t1, 0x2c4($sp) -/* 077274 7F042744 24190002 */ li $t9, 2 -/* 077278 7F042748 AFB902A4 */ sw $t9, 0x2a4($sp) -/* 07727C 7F04274C 1520000C */ bnez $t1, .L7F042780 -/* 077280 7F042750 8FA40048 */ lw $a0, 0x48($sp) -/* 077284 7F042754 8E46006C */ lw $a2, 0x6c($s2) -/* 077288 7F042758 27AA007C */ addiu $t2, $sp, 0x7c -/* 07728C 7F04275C 27AB0260 */ addiu $t3, $sp, 0x260 -/* 077290 7F042760 240C0014 */ li $t4, 20 -/* 077294 7F042764 AFAC0018 */ sw $t4, 0x18($sp) -/* 077298 7F042768 AFAB0014 */ sw $t3, 0x14($sp) -/* 07729C 7F04276C AFAA0010 */ sw $t2, 0x10($sp) -/* 0772A0 7F042770 02602825 */ move $a1, $s3 -/* 0772A4 7F042774 27A70074 */ addiu $a3, $sp, 0x74 -/* 0772A8 7F042778 0FC2D2AD */ jal sub_GAME_7F0B4AB4 -/* 0772AC 7F04277C 24C600CC */ addiu $a2, $a2, 0xcc -.L7F042780: -/* 0772B0 7F042780 1000003A */ b .L7F04286C -/* 0772B4 7F042784 8FA902A4 */ lw $t1, 0x2a4($sp) -/* 0772B8 7F042788 24100001 */ li $s0, 1 -.L7F04278C: -/* 0772BC 7F04278C 11B00003 */ beq $t5, $s0, .L7F04279C -/* 0772C0 7F042790 8FAE02C4 */ lw $t6, 0x2c4($sp) -/* 0772C4 7F042794 55C00035 */ bnezl $t6, .L7F04286C -/* 0772C8 7F042798 8FA902A4 */ lw $t1, 0x2a4($sp) -.L7F04279C: -/* 0772CC 7F04279C 8FAF02A4 */ lw $t7, 0x2a4($sp) -/* 0772D0 7F0427A0 8FA40048 */ lw $a0, 0x48($sp) -/* 0772D4 7F0427A4 27A50268 */ addiu $a1, $sp, 0x268 -/* 0772D8 7F0427A8 11F0000A */ beq $t7, $s0, .L7F0427D4 -/* 0772DC 7F0427AC 27A70074 */ addiu $a3, $sp, 0x74 -/* 0772E0 7F0427B0 8E46006C */ lw $a2, 0x6c($s2) -/* 0772E4 7F0427B4 27B8007C */ addiu $t8, $sp, 0x7c -/* 0772E8 7F0427B8 27B90260 */ addiu $t9, $sp, 0x260 -/* 0772EC 7F0427BC 24090014 */ li $t1, 20 -/* 0772F0 7F0427C0 AFA90018 */ sw $t1, 0x18($sp) -/* 0772F4 7F0427C4 AFB90014 */ sw $t9, 0x14($sp) -/* 0772F8 7F0427C8 AFB80010 */ sw $t8, 0x10($sp) -/* 0772FC 7F0427CC 0FC2D2AD */ jal sub_GAME_7F0B4AB4 -/* 077300 7F0427D0 24C600CC */ addiu $a2, $a2, 0xcc -.L7F0427D4: -/* 077304 7F0427D4 C7A80268 */ lwc1 $f8, 0x268($sp) -/* 077308 7F0427D8 E6480058 */ swc1 $f8, 0x58($s2) -/* 07730C 7F0427DC C7AA0270 */ lwc1 $f10, 0x270($sp) -/* 077310 7F0427E0 E64A0060 */ swc1 $f10, 0x60($s2) -/* 077314 7F0427E4 8FAA02AC */ lw $t2, 0x2ac($sp) -/* 077318 7F0427E8 C7A0026C */ lwc1 $f0, 0x26c($sp) -/* 07731C 7F0427EC E540000C */ swc1 $f0, 0xc($t2) -/* 077320 7F0427F0 1000001D */ b .L7F042868 -/* 077324 7F0427F4 E640005C */ swc1 $f0, 0x5c($s2) -.L7F0427F8: -/* 077328 7F0427F8 1560001B */ bnez $t3, .L7F042868 -/* 07732C 7F0427FC 27A50268 */ addiu $a1, $sp, 0x268 -/* 077330 7F042800 C6520058 */ lwc1 $f18, 0x58($s2) -/* 077334 7F042804 27AC007C */ addiu $t4, $sp, 0x7c -/* 077338 7F042808 27AD0260 */ addiu $t5, $sp, 0x260 -/* 07733C 7F04280C E7B20268 */ swc1 $f18, 0x268($sp) -/* 077340 7F042810 C6440060 */ lwc1 $f4, 0x60($s2) -/* 077344 7F042814 240E0014 */ li $t6, 20 -/* 077348 7F042818 8FA40048 */ lw $a0, 0x48($sp) -/* 07734C 7F04281C E7A40270 */ swc1 $f4, 0x270($sp) -/* 077350 7F042820 8E46006C */ lw $a2, 0x6c($s2) -/* 077354 7F042824 AFAE0018 */ sw $t6, 0x18($sp) -/* 077358 7F042828 AFAD0014 */ sw $t5, 0x14($sp) -/* 07735C 7F04282C AFAC0010 */ sw $t4, 0x10($sp) -/* 077360 7F042830 27A70074 */ addiu $a3, $sp, 0x74 -/* 077364 7F042834 0FC2D2AD */ jal sub_GAME_7F0B4AB4 -/* 077368 7F042838 24C600CC */ addiu $a2, $a2, 0xcc -/* 07736C 7F04283C C7A0026C */ lwc1 $f0, 0x26c($sp) -/* 077370 7F042840 8FAF02AC */ lw $t7, 0x2ac($sp) -/* 077374 7F042844 24190002 */ li $t9, 2 -/* 077378 7F042848 E5E0000C */ swc1 $f0, 0xc($t7) -/* 07737C 7F04284C E640005C */ swc1 $f0, 0x5c($s2) -/* 077380 7F042850 8FB802C0 */ lw $t8, 0x2c0($sp) -/* 077384 7F042854 53000004 */ beql $t8, $zero, .L7F042868 -/* 077388 7F042858 AFA002A4 */ sw $zero, 0x2a4($sp) -/* 07738C 7F04285C 10000002 */ b .L7F042868 -/* 077390 7F042860 AFB902A4 */ sw $t9, 0x2a4($sp) -/* 077394 7F042864 AFA002A4 */ sw $zero, 0x2a4($sp) -.L7F042868: -/* 077398 7F042868 8FA902A4 */ lw $t1, 0x2a4($sp) -.L7F04286C: -/* 07739C 7F04286C 24100001 */ li $s0, 1 -/* 0773A0 7F042870 8FAA02C4 */ lw $t2, 0x2c4($sp) -/* 0773A4 7F042874 51300004 */ beql $t1, $s0, .L7F042888 -/* 0773A8 7F042878 8E4B006C */ lw $t3, 0x6c($s2) -/* 0773AC 7F04287C 5540005B */ bnezl $t2, .L7F0429EC -/* 0773B0 7F042880 8FBF003C */ lw $ra, 0x3c($sp) -/* 0773B4 7F042884 8E4B006C */ lw $t3, 0x6c($s2) -.L7F042888: -/* 0773B8 7F042888 00004025 */ move $t0, $zero -/* 0773BC 7F04288C 8D620000 */ lw $v0, ($t3) -/* 0773C0 7F042890 304C0008 */ andi $t4, $v0, 8 -/* 0773C4 7F042894 15800028 */ bnez $t4, .L7F042938 -/* 0773C8 7F042898 01801025 */ move $v0, $t4 -/* 0773CC 7F04289C 8FA202AC */ lw $v0, 0x2ac($sp) -/* 0773D0 7F0428A0 27A402A8 */ addiu $a0, $sp, 0x2a8 -/* 0773D4 7F0428A4 8C4D0014 */ lw $t5, 0x14($v0) -/* 0773D8 7F0428A8 AFAD02A8 */ sw $t5, 0x2a8($sp) -/* 0773DC 7F0428AC C6460060 */ lwc1 $f6, 0x60($s2) -/* 0773E0 7F0428B0 8E470058 */ lw $a3, 0x58($s2) -/* 0773E4 7F0428B4 8C460010 */ lw $a2, 0x10($v0) -/* 0773E8 7F0428B8 8C450008 */ lw $a1, 8($v0) -/* 0773EC 7F0428BC AFA00264 */ sw $zero, 0x264($sp) -/* 0773F0 7F0428C0 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 0773F4 7F0428C4 E7A60010 */ swc1 $f6, 0x10($sp) -/* 0773F8 7F0428C8 1450000F */ bne $v0, $s0, .L7F042908 -/* 0773FC 7F0428CC 8FA80264 */ lw $t0, 0x264($sp) -/* 077400 7F0428D0 8FAE02A8 */ lw $t6, 0x2a8($sp) -/* 077404 7F0428D4 8FA302AC */ lw $v1, 0x2ac($sp) -/* 077408 7F0428D8 51C0000C */ beql $t6, $zero, .L7F04290C -/* 07740C 7F0428DC 8E43006C */ lw $v1, 0x6c($s2) -/* 077410 7F0428E0 AC6E0014 */ sw $t6, 0x14($v1) -/* 077414 7F0428E4 C6500058 */ lwc1 $f16, 0x58($s2) -/* 077418 7F0428E8 E4700008 */ swc1 $f16, 8($v1) -/* 07741C 7F0428EC C6480060 */ lwc1 $f8, 0x60($s2) -/* 077420 7F0428F0 E4680010 */ swc1 $f8, 0x10($v1) -/* 077424 7F0428F4 8E4F006C */ lw $t7, 0x6c($s2) -/* 077428 7F0428F8 8DE20000 */ lw $v0, ($t7) -/* 07742C 7F0428FC 30580008 */ andi $t8, $v0, 8 -/* 077430 7F042900 1000000D */ b .L7F042938 -/* 077434 7F042904 03001025 */ move $v0, $t8 -.L7F042908: -/* 077438 7F042908 8E43006C */ lw $v1, 0x6c($s2) -.L7F04290C: -/* 07743C 7F04290C 8C790000 */ lw $t9, ($v1) -/* 077440 7F042910 37290008 */ ori $t1, $t9, 8 -/* 077444 7F042914 AC690000 */ sw $t1, ($v1) -/* 077448 7F042918 8FAA02AC */ lw $t2, 0x2ac($sp) -/* 07744C 7F04291C 914B0001 */ lbu $t3, 1($t2) -/* 077450 7F042920 356C0008 */ ori $t4, $t3, 8 -/* 077454 7F042924 A14C0001 */ sb $t4, 1($t2) -/* 077458 7F042928 8E4D006C */ lw $t5, 0x6c($s2) -/* 07745C 7F04292C 8DA20000 */ lw $v0, ($t5) -/* 077460 7F042930 304E0008 */ andi $t6, $v0, 8 -/* 077464 7F042934 01C01025 */ move $v0, $t6 -.L7F042938: -/* 077468 7F042938 10400016 */ beqz $v0, .L7F042994 -/* 07746C 7F04293C 8FA40048 */ lw $a0, 0x48($sp) -/* 077470 7F042940 27A50074 */ addiu $a1, $sp, 0x74 -/* 077474 7F042944 00003025 */ move $a2, $zero -/* 077478 7F042948 0FC2BC83 */ jal sub_GAME_7F0AF20C -/* 07747C 7F04294C AFA80264 */ sw $t0, 0x264($sp) -/* 077480 7F042950 8FA80264 */ lw $t0, 0x264($sp) -/* 077484 7F042954 1040000F */ beqz $v0, .L7F042994 -/* 077488 7F042958 AFA202A8 */ sw $v0, 0x2a8($sp) -/* 07748C 7F04295C 8FA402AC */ lw $a0, 0x2ac($sp) -/* 077490 7F042960 2401FFF7 */ li $at, -9 -/* 077494 7F042964 AC820014 */ sw $v0, 0x14($a0) -/* 077498 7F042968 C64A0058 */ lwc1 $f10, 0x58($s2) -/* 07749C 7F04296C E48A0008 */ swc1 $f10, 8($a0) -/* 0774A0 7F042970 C6520060 */ lwc1 $f18, 0x60($s2) -/* 0774A4 7F042974 E4920010 */ swc1 $f18, 0x10($a0) -/* 0774A8 7F042978 8E43006C */ lw $v1, 0x6c($s2) -/* 0774AC 7F04297C 8C6F0000 */ lw $t7, ($v1) -/* 0774B0 7F042980 01E1C024 */ and $t8, $t7, $at -/* 0774B4 7F042984 AC780000 */ sw $t8, ($v1) -/* 0774B8 7F042988 90990001 */ lbu $t9, 1($a0) -/* 0774BC 7F04298C 03214824 */ and $t1, $t9, $at -/* 0774C0 7F042990 A0890001 */ sb $t1, 1($a0) -.L7F042994: -/* 0774C4 7F042994 93AB0074 */ lbu $t3, 0x74($sp) -/* 0774C8 7F042998 240400FF */ li $a0, 255 -/* 0774CC 7F04299C 27AC0074 */ addiu $t4, $sp, 0x74 -/* 0774D0 7F0429A0 108B000D */ beq $a0, $t3, .L7F0429D8 -/* 0774D4 7F0429A4 010C1021 */ addu $v0, $t0, $t4 -/* 0774D8 7F0429A8 90430000 */ lbu $v1, ($v0) -/* 0774DC 7F0429AC 24050007 */ li $a1, 7 -/* 0774E0 7F0429B0 8E4A006C */ lw $t2, 0x6c($s2) -.L7F0429B4: -/* 0774E4 7F0429B4 24420001 */ addiu $v0, $v0, 1 -/* 0774E8 7F0429B8 01486821 */ addu $t5, $t2, $t0 -/* 0774EC 7F0429BC A1A300CC */ sb $v1, 0xcc($t5) -/* 0774F0 7F0429C0 90430000 */ lbu $v1, ($v0) -/* 0774F4 7F0429C4 25080001 */ addiu $t0, $t0, 1 -/* 0774F8 7F0429C8 50830004 */ beql $a0, $v1, .L7F0429DC -/* 0774FC 7F0429CC 8E4F006C */ lw $t7, 0x6c($s2) -/* 077500 7F0429D0 5505FFF8 */ bnel $t0, $a1, .L7F0429B4 -/* 077504 7F0429D4 8E4A006C */ lw $t2, 0x6c($s2) -.L7F0429D8: -/* 077508 7F0429D8 8E4F006C */ lw $t7, 0x6c($s2) -.L7F0429DC: -/* 07750C 7F0429DC 240E00FF */ li $t6, 255 -/* 077510 7F0429E0 01E8C021 */ addu $t8, $t7, $t0 -/* 077514 7F0429E4 A30E00CC */ sb $t6, 0xcc($t8) -.L7F0429E8: -/* 077518 7F0429E8 8FBF003C */ lw $ra, 0x3c($sp) -.L7F0429EC: -/* 07751C 7F0429EC 8FA202A4 */ lw $v0, 0x2a4($sp) -/* 077520 7F0429F0 D7B40020 */ ldc1 $f20, 0x20($sp) -/* 077524 7F0429F4 8FB0002C */ lw $s0, 0x2c($sp) -/* 077528 7F0429F8 8FB10030 */ lw $s1, 0x30($sp) -/* 07752C 7F0429FC 8FB20034 */ lw $s2, 0x34($sp) -/* 077530 7F042A00 8FB30038 */ lw $s3, 0x38($sp) -/* 077534 7F042A04 03E00008 */ jr $ra -/* 077538 7F042A08 27BD02B0 */ addiu $sp, $sp, 0x2b0 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F042A0C(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A5C -.word 0x3f7d70a4 /*0.99000001*/ -.text -glabel sub_GAME_7F042A0C -/* 07753C 7F042A0C 27BDFF40 */ addiu $sp, $sp, -0xc0 -/* 077540 7F042A10 AFBF0034 */ sw $ra, 0x34($sp) -/* 077544 7F042A14 AFB00030 */ sw $s0, 0x30($sp) -/* 077548 7F042A18 AFA600C8 */ sw $a2, 0xc8($sp) -/* 07754C 7F042A1C AFA700CC */ sw $a3, 0xcc($sp) -/* 077550 7F042A20 8C900010 */ lw $s0, 0x10($a0) -/* 077554 7F042A24 8E0E0014 */ lw $t6, 0x14($s0) -/* 077558 7F042A28 AFA500C4 */ sw $a1, 0xc4($sp) -/* 07755C 7F042A2C AFA400C0 */ sw $a0, 0xc0($sp) -/* 077560 7F042A30 0FC10411 */ jal if_a0_plus_3_is_4_then_10_else_20 -/* 077564 7F042A34 AFAE00B8 */ sw $t6, 0xb8($sp) -/* 077568 7F042A38 8FA500C4 */ lw $a1, 0xc4($sp) -/* 07756C 7F042A3C 240F0001 */ li $t7, 1 -/* 077570 7F042A40 3C018003 */ lui $at, %hi(D_80030B0C) -/* 077574 7F042A44 E7A000B4 */ swc1 $f0, 0xb4($sp) -/* 077578 7F042A48 AFAF00B0 */ sw $t7, 0xb0($sp) -/* 07757C 7F042A4C AC200B0C */ sw $zero, %lo(D_80030B0C)($at) -/* 077580 7F042A50 C6040008 */ lwc1 $f4, 8($s0) -/* 077584 7F042A54 C4A20000 */ lwc1 $f2, ($a1) -/* 077588 7F042A58 46041032 */ c.eq.s $f2, $f4 -/* 07758C 7F042A5C 00000000 */ nop -/* 077590 7F042A60 4502000E */ bc1fl .L7F042A9C -/* 077594 7F042A64 E7A20098 */ swc1 $f2, 0x98($sp) -/* 077598 7F042A68 C4A60004 */ lwc1 $f6, 4($a1) -/* 07759C 7F042A6C C608000C */ lwc1 $f8, 0xc($s0) -/* 0775A0 7F042A70 46083032 */ c.eq.s $f6, $f8 -/* 0775A4 7F042A74 00000000 */ nop -/* 0775A8 7F042A78 45020008 */ bc1fl .L7F042A9C -/* 0775AC 7F042A7C E7A20098 */ swc1 $f2, 0x98($sp) -/* 0775B0 7F042A80 C4AA0008 */ lwc1 $f10, 8($a1) -/* 0775B4 7F042A84 C6100010 */ lwc1 $f16, 0x10($s0) -/* 0775B8 7F042A88 46105032 */ c.eq.s $f10, $f16 -/* 0775BC 7F042A8C 00000000 */ nop -/* 0775C0 7F042A90 45030104 */ bc1tl .L7F042EA4 -/* 0775C4 7F042A94 8FBF0034 */ lw $ra, 0x34($sp) -/* 0775C8 7F042A98 E7A20098 */ swc1 $f2, 0x98($sp) -.L7F042A9C: -/* 0775CC 7F042A9C C4B20004 */ lwc1 $f18, 4($a1) -/* 0775D0 7F042AA0 8FB800C0 */ lw $t8, 0xc0($sp) -/* 0775D4 7F042AA4 E7B2009C */ swc1 $f18, 0x9c($sp) -/* 0775D8 7F042AA8 C4A40008 */ lwc1 $f4, 8($a1) -/* 0775DC 7F042AAC E7A400A0 */ swc1 $f4, 0xa0($sp) -/* 0775E0 7F042AB0 8F190064 */ lw $t9, 0x64($t8) -/* 0775E4 7F042AB4 33280080 */ andi $t0, $t9, 0x80 -/* 0775E8 7F042AB8 510000FA */ beql $t0, $zero, .L7F042EA4 -/* 0775EC 7F042ABC 8FBF0034 */ lw $ra, 0x34($sp) -/* 0775F0 7F042AC0 8E040014 */ lw $a0, 0x14($s0) -/* 0775F4 7F042AC4 8E050008 */ lw $a1, 8($s0) -/* 0775F8 7F042AC8 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 0775FC 7F042ACC 8E060010 */ lw $a2, 0x10($s0) -/* 077600 7F042AD0 8FA900C0 */ lw $t1, 0xc0($sp) -/* 077604 7F042AD4 C7AA009C */ lwc1 $f10, 0x9c($sp) -/* 077608 7F042AD8 8D2A006C */ lw $t2, 0x6c($t1) -/* 07760C 7F042ADC 8D4B0000 */ lw $t3, ($t2) -/* 077610 7F042AE0 316C0040 */ andi $t4, $t3, 0x40 -/* 077614 7F042AE4 55800008 */ bnezl $t4, .L7F042B08 -/* 077618 7F042AE8 C602000C */ lwc1 $f2, 0xc($s0) -/* 07761C 7F042AEC 44809000 */ mtc1 $zero, $f18 -/* 077620 7F042AF0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 077624 7F042AF4 44818000 */ mtc1 $at, $f16 -/* 077628 7F042AF8 E7B20090 */ swc1 $f18, 0x90($sp) -/* 07762C 7F042AFC 10000010 */ b .L7F042B40 -/* 077630 7F042B00 E7B0008C */ swc1 $f16, 0x8c($sp) -/* 077634 7F042B04 C602000C */ lwc1 $f2, 0xc($s0) -.L7F042B08: -/* 077638 7F042B08 C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 07763C 7F042B0C 4602503C */ c.lt.s $f10, $f2 -/* 077640 7F042B10 00000000 */ nop -/* 077644 7F042B14 45020007 */ bc1fl .L7F042B34 -/* 077648 7F042B18 46002181 */ sub.s $f6, $f4, $f0 -/* 07764C 7F042B1C 46001401 */ sub.s $f16, $f2, $f0 -/* 077650 7F042B20 46005481 */ sub.s $f18, $f10, $f0 -/* 077654 7F042B24 E7B00090 */ swc1 $f16, 0x90($sp) -/* 077658 7F042B28 10000005 */ b .L7F042B40 -/* 07765C 7F042B2C E7B2008C */ swc1 $f18, 0x8c($sp) -/* 077660 7F042B30 46002181 */ sub.s $f6, $f4, $f0 -.L7F042B34: -/* 077664 7F042B34 46001201 */ sub.s $f8, $f2, $f0 -/* 077668 7F042B38 E7A60090 */ swc1 $f6, 0x90($sp) -/* 07766C 7F042B3C E7A8008C */ swc1 $f8, 0x8c($sp) -.L7F042B40: -/* 077670 7F042B40 0FC2C731 */ jal sub_GAME_7F0B1CC4 -/* 077674 7F042B44 00000000 */ nop -/* 077678 7F042B48 8E050008 */ lw $a1, 8($s0) -/* 07767C 7F042B4C 8E060010 */ lw $a2, 0x10($s0) -/* 077680 7F042B50 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 077684 7F042B54 44813000 */ mtc1 $at, $f6 -/* 077688 7F042B58 C7B000A0 */ lwc1 $f16, 0xa0($sp) -/* 07768C 7F042B5C C7AA0090 */ lwc1 $f10, 0x90($sp) -/* 077690 7F042B60 C7B2008C */ lwc1 $f18, 0x8c($sp) -/* 077694 7F042B64 44802000 */ mtc1 $zero, $f4 -/* 077698 7F042B68 240D001F */ li $t5, 31 -/* 07769C 7F042B6C AFAD0014 */ sw $t5, 0x14($sp) -/* 0776A0 7F042B70 27A400B8 */ addiu $a0, $sp, 0xb8 -/* 0776A4 7F042B74 8FA70098 */ lw $a3, 0x98($sp) -/* 0776A8 7F042B78 E7B00010 */ swc1 $f16, 0x10($sp) -/* 0776AC 7F042B7C E7A60024 */ swc1 $f6, 0x24($sp) -/* 0776B0 7F042B80 E7AA0018 */ swc1 $f10, 0x18($sp) -/* 0776B4 7F042B84 E7B2001C */ swc1 $f18, 0x1c($sp) -/* 0776B8 7F042B88 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 0776BC 7F042B8C E7A40020 */ swc1 $f4, 0x20($sp) -/* 0776C0 7F042B90 1040001D */ beqz $v0, .L7F042C08 -/* 0776C4 7F042B94 8FAE00B8 */ lw $t6, 0xb8($sp) -/* 0776C8 7F042B98 11C0001B */ beqz $t6, .L7F042C08 -/* 0776CC 7F042B9C 27A400B8 */ addiu $a0, $sp, 0xb8 -/* 0776D0 7F042BA0 C7A80090 */ lwc1 $f8, 0x90($sp) -/* 0776D4 7F042BA4 C7B0008C */ lwc1 $f16, 0x8c($sp) -/* 0776D8 7F042BA8 240F001F */ li $t7, 31 -/* 0776DC 7F042BAC AFAF0010 */ sw $t7, 0x10($sp) -/* 0776E0 7F042BB0 8FA50098 */ lw $a1, 0x98($sp) -/* 0776E4 7F042BB4 8FA600A0 */ lw $a2, 0xa0($sp) -/* 0776E8 7F042BB8 8FA700B4 */ lw $a3, 0xb4($sp) -/* 0776EC 7F042BBC E7A80014 */ swc1 $f8, 0x14($sp) -/* 0776F0 7F042BC0 0FC2C62E */ jal sub_GAME_7F0B18B8 -/* 0776F4 7F042BC4 E7B00018 */ swc1 $f16, 0x18($sp) -/* 0776F8 7F042BC8 0441000F */ bgez $v0, .L7F042C08 -/* 0776FC 7F042BCC C7AA0098 */ lwc1 $f10, 0x98($sp) -/* 077700 7F042BD0 8FA200C0 */ lw $v0, 0xc0($sp) -/* 077704 7F042BD4 E44A0058 */ swc1 $f10, 0x58($v0) -/* 077708 7F042BD8 C7B200A0 */ lwc1 $f18, 0xa0($sp) -/* 07770C 7F042BDC E4520060 */ swc1 $f18, 0x60($v0) -/* 077710 7F042BE0 8FB800B8 */ lw $t8, 0xb8($sp) -/* 077714 7F042BE4 AE180014 */ sw $t8, 0x14($s0) -/* 077718 7F042BE8 C7A40098 */ lwc1 $f4, 0x98($sp) -/* 07771C 7F042BEC E6040008 */ swc1 $f4, 8($s0) -/* 077720 7F042BF0 C7A600A0 */ lwc1 $f6, 0xa0($sp) -/* 077724 7F042BF4 E6060010 */ swc1 $f6, 0x10($s0) -/* 077728 7F042BF8 C7A0009C */ lwc1 $f0, 0x9c($sp) -/* 07772C 7F042BFC E600000C */ swc1 $f0, 0xc($s0) -/* 077730 7F042C00 100000A7 */ b .L7F042EA0 -/* 077734 7F042C04 E440005C */ swc1 $f0, 0x5c($v0) -.L7F042C08: -/* 077738 7F042C08 27A40080 */ addiu $a0, $sp, 0x80 -/* 07773C 7F042C0C 0FC2CA2C */ jal sub_GAME_7F0B28B0 -/* 077740 7F042C10 27A50074 */ addiu $a1, $sp, 0x74 -/* 077744 7F042C14 C7A8007C */ lwc1 $f8, 0x7c($sp) -/* 077748 7F042C18 C7B00088 */ lwc1 $f16, 0x88($sp) -/* 07774C 7F042C1C 8FA400CC */ lw $a0, 0xcc($sp) -/* 077750 7F042C20 44801000 */ mtc1 $zero, $f2 -/* 077754 7F042C24 46104281 */ sub.s $f10, $f8, $f16 -/* 077758 7F042C28 24850004 */ addiu $a1, $a0, 4 -/* 07775C 7F042C2C E4820004 */ swc1 $f2, 4($a0) -/* 077760 7F042C30 E48A0000 */ swc1 $f10, ($a0) -/* 077764 7F042C34 C4880000 */ lwc1 $f8, ($a0) -/* 077768 7F042C38 C7A40074 */ lwc1 $f4, 0x74($sp) -/* 07776C 7F042C3C C7B20080 */ lwc1 $f18, 0x80($sp) -/* 077770 7F042C40 46081032 */ c.eq.s $f2, $f8 -/* 077774 7F042C44 46049181 */ sub.s $f6, $f18, $f4 -/* 077778 7F042C48 45000007 */ bc1f .L7F042C68 -/* 07777C 7F042C4C E4860008 */ swc1 $f6, 8($a0) -/* 077780 7F042C50 C4900008 */ lwc1 $f16, 8($a0) -/* 077784 7F042C54 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 077788 7F042C58 46101032 */ c.eq.s $f2, $f16 -/* 07778C 7F042C5C 00000000 */ nop -/* 077790 7F042C60 45030006 */ bc1tl .L7F042C7C -/* 077794 7F042C64 44815000 */ mtc1 $at, $f10 -.L7F042C68: -/* 077798 7F042C68 0C007DD4 */ jal guNormalize -/* 07779C 7F042C6C 24860008 */ addiu $a2, $a0, 8 -/* 0777A0 7F042C70 10000005 */ b .L7F042C88 -/* 0777A4 7F042C74 C6000008 */ lwc1 $f0, 8($s0) -/* 0777A8 7F042C78 44815000 */ mtc1 $at, $f10 -.L7F042C7C: -/* 0777AC 7F042C7C 00000000 */ nop -/* 0777B0 7F042C80 E48A0008 */ swc1 $f10, 8($a0) -/* 0777B4 7F042C84 C6000008 */ lwc1 $f0, 8($s0) -.L7F042C88: -/* 0777B8 7F042C88 C7B20098 */ lwc1 $f18, 0x98($sp) -/* 0777BC 7F042C8C C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 0777C0 7F042C90 C7AA0098 */ lwc1 $f10, 0x98($sp) -/* 0777C4 7F042C94 46009032 */ c.eq.s $f18, $f0 -/* 0777C8 7F042C98 00000000 */ nop -/* 0777CC 7F042C9C 4502000F */ bc1fl .L7F042CDC -/* 0777D0 7F042CA0 46005481 */ sub.s $f18, $f10, $f0 -/* 0777D4 7F042CA4 C606000C */ lwc1 $f6, 0xc($s0) -/* 0777D8 7F042CA8 C7A800A0 */ lwc1 $f8, 0xa0($sp) -/* 0777DC 7F042CAC 46062032 */ c.eq.s $f4, $f6 -/* 0777E0 7F042CB0 00000000 */ nop -/* 0777E4 7F042CB4 45020009 */ bc1fl .L7F042CDC -/* 0777E8 7F042CB8 46005481 */ sub.s $f18, $f10, $f0 -/* 0777EC 7F042CBC C6100010 */ lwc1 $f16, 0x10($s0) -/* 0777F0 7F042CC0 8FA200C8 */ lw $v0, 0xc8($sp) -/* 0777F4 7F042CC4 C7B20098 */ lwc1 $f18, 0x98($sp) -/* 0777F8 7F042CC8 46104032 */ c.eq.s $f8, $f16 -/* 0777FC 7F042CCC 00000000 */ nop -/* 077800 7F042CD0 4503006A */ bc1tl .L7F042E7C -/* 077804 7F042CD4 E4520000 */ swc1 $f18, ($v0) -/* 077808 7F042CD8 46005481 */ sub.s $f18, $f10, $f0 -.L7F042CDC: -/* 07780C 7F042CDC C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 077810 7F042CE0 C7B000A0 */ lwc1 $f16, 0xa0($sp) -/* 077814 7F042CE4 26040008 */ addiu $a0, $s0, 8 -/* 077818 7F042CE8 E7B200A4 */ swc1 $f18, 0xa4($sp) -/* 07781C 7F042CEC C606000C */ lwc1 $f6, 0xc($s0) -/* 077820 7F042CF0 27A500A4 */ addiu $a1, $sp, 0xa4 -/* 077824 7F042CF4 8FA600C8 */ lw $a2, 0xc8($sp) -/* 077828 7F042CF8 46062201 */ sub.s $f8, $f4, $f6 -/* 07782C 7F042CFC E7A800A8 */ swc1 $f8, 0xa8($sp) -/* 077830 7F042D00 C60A0010 */ lwc1 $f10, 0x10($s0) -/* 077834 7F042D04 460A8481 */ sub.s $f18, $f16, $f10 -/* 077838 7F042D08 0FC09893 */ jal sub_GAME_7F02624C -/* 07783C 7F042D0C E7B200AC */ swc1 $f18, 0xac($sp) -/* 077840 7F042D10 C7A400B4 */ lwc1 $f4, 0xb4($sp) -/* 077844 7F042D14 C7B00080 */ lwc1 $f16, 0x80($sp) -/* 077848 7F042D18 C7AA0088 */ lwc1 $f10, 0x88($sp) -/* 07784C 7F042D1C E7A4005C */ swc1 $f4, 0x5c($sp) -/* 077850 7F042D20 C6060008 */ lwc1 $f6, 8($s0) -/* 077854 7F042D24 C7B20074 */ lwc1 $f18, 0x74($sp) -/* 077858 7F042D28 C7A4007C */ lwc1 $f4, 0x7c($sp) -/* 07785C 7F042D2C E7A60060 */ swc1 $f6, 0x60($sp) -/* 077860 7F042D30 C6080010 */ lwc1 $f8, 0x10($s0) -/* 077864 7F042D34 E7B00054 */ swc1 $f16, 0x54($sp) -/* 077868 7F042D38 E7AA0058 */ swc1 $f10, 0x58($sp) -/* 07786C 7F042D3C E7B2004C */ swc1 $f18, 0x4c($sp) -/* 077870 7F042D40 E7A40050 */ swc1 $f4, 0x50($sp) -/* 077874 7F042D44 E7A80064 */ swc1 $f8, 0x64($sp) -/* 077878 7F042D48 C6080008 */ lwc1 $f8, 8($s0) -/* 07787C 7F042D4C C7A60098 */ lwc1 $f6, 0x98($sp) -/* 077880 7F042D50 C7AA00A0 */ lwc1 $f10, 0xa0($sp) -/* 077884 7F042D54 27A4005C */ addiu $a0, $sp, 0x5c -/* 077888 7F042D58 46083401 */ sub.s $f16, $f6, $f8 -/* 07788C 7F042D5C 27A50054 */ addiu $a1, $sp, 0x54 -/* 077890 7F042D60 27A6004C */ addiu $a2, $sp, 0x4c -/* 077894 7F042D64 27A70044 */ addiu $a3, $sp, 0x44 -/* 077898 7F042D68 E7B00044 */ swc1 $f16, 0x44($sp) -/* 07789C 7F042D6C C6120010 */ lwc1 $f18, 0x10($s0) -/* 0778A0 7F042D70 46125101 */ sub.s $f4, $f10, $f18 -/* 0778A4 7F042D74 0FC2CCF7 */ jal sub_GAME_7F0B33DC -/* 0778A8 7F042D78 E7A40048 */ swc1 $f4, 0x48($sp) -/* 0778AC 7F042D7C C7A80044 */ lwc1 $f8, 0x44($sp) -/* 0778B0 7F042D80 3C018005 */ lui $at, %hi(D_80052A5C) -/* 0778B4 7F042D84 C4222A5C */ lwc1 $f2, %lo(D_80052A5C)($at) -/* 0778B8 7F042D88 46004402 */ mul.s $f16, $f8, $f0 -/* 0778BC 7F042D8C 8E190014 */ lw $t9, 0x14($s0) -/* 0778C0 7F042D90 C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 0778C4 7F042D94 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0778C8 7F042D98 AFB900B8 */ sw $t9, 0xb8($sp) -/* 0778CC 7F042D9C C6060008 */ lwc1 $f6, 8($s0) -/* 0778D0 7F042DA0 E7A4006C */ swc1 $f4, 0x6c($sp) -/* 0778D4 7F042DA4 46028282 */ mul.s $f10, $f16, $f2 -/* 0778D8 7F042DA8 C7B00048 */ lwc1 $f16, 0x48($sp) -/* 0778DC 7F042DAC 2408001F */ li $t0, 31 -/* 0778E0 7F042DB0 27A400B8 */ addiu $a0, $sp, 0xb8 -/* 0778E4 7F042DB4 460A3480 */ add.s $f18, $f6, $f10 -/* 0778E8 7F042DB8 46008182 */ mul.s $f6, $f16, $f0 -/* 0778EC 7F042DBC C7B00090 */ lwc1 $f16, 0x90($sp) -/* 0778F0 7F042DC0 E7B20068 */ swc1 $f18, 0x68($sp) -/* 0778F4 7F042DC4 C6080010 */ lwc1 $f8, 0x10($s0) -/* 0778F8 7F042DC8 8FA70068 */ lw $a3, 0x68($sp) -/* 0778FC 7F042DCC 46023282 */ mul.s $f10, $f6, $f2 -/* 077900 7F042DD0 C7A6008C */ lwc1 $f6, 0x8c($sp) -/* 077904 7F042DD4 460A4480 */ add.s $f18, $f8, $f10 -/* 077908 7F042DD8 44815000 */ mtc1 $at, $f10 -/* 07790C 7F042DDC 44804000 */ mtc1 $zero, $f8 -/* 077910 7F042DE0 E7B20070 */ swc1 $f18, 0x70($sp) -/* 077914 7F042DE4 8E060010 */ lw $a2, 0x10($s0) -/* 077918 7F042DE8 8E050008 */ lw $a1, 8($s0) -/* 07791C 7F042DEC C7A40070 */ lwc1 $f4, 0x70($sp) -/* 077920 7F042DF0 AFA80014 */ sw $t0, 0x14($sp) -/* 077924 7F042DF4 E7B00018 */ swc1 $f16, 0x18($sp) -/* 077928 7F042DF8 E7A6001C */ swc1 $f6, 0x1c($sp) -/* 07792C 7F042DFC E7AA0024 */ swc1 $f10, 0x24($sp) -/* 077930 7F042E00 E7A80020 */ swc1 $f8, 0x20($sp) -/* 077934 7F042E04 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 077938 7F042E08 E7A40010 */ swc1 $f4, 0x10($sp) -/* 07793C 7F042E0C 1040001F */ beqz $v0, .L7F042E8C -/* 077940 7F042E10 8FA900B8 */ lw $t1, 0xb8($sp) -/* 077944 7F042E14 1120001D */ beqz $t1, .L7F042E8C -/* 077948 7F042E18 27A400B8 */ addiu $a0, $sp, 0xb8 -/* 07794C 7F042E1C C7B20090 */ lwc1 $f18, 0x90($sp) -/* 077950 7F042E20 C7A4008C */ lwc1 $f4, 0x8c($sp) -/* 077954 7F042E24 240A001F */ li $t2, 31 -/* 077958 7F042E28 AFAA0010 */ sw $t2, 0x10($sp) -/* 07795C 7F042E2C 8FA50068 */ lw $a1, 0x68($sp) -/* 077960 7F042E30 8FA60070 */ lw $a2, 0x70($sp) -/* 077964 7F042E34 8FA700B4 */ lw $a3, 0xb4($sp) -/* 077968 7F042E38 E7B20014 */ swc1 $f18, 0x14($sp) -/* 07796C 7F042E3C 0FC2C62E */ jal sub_GAME_7F0B18B8 -/* 077970 7F042E40 E7A40018 */ swc1 $f4, 0x18($sp) -/* 077974 7F042E44 04410011 */ bgez $v0, .L7F042E8C -/* 077978 7F042E48 C7B00068 */ lwc1 $f16, 0x68($sp) -/* 07797C 7F042E4C 8FAB00C0 */ lw $t3, 0xc0($sp) -/* 077980 7F042E50 E5700058 */ swc1 $f16, 0x58($t3) -/* 077984 7F042E54 C7A60070 */ lwc1 $f6, 0x70($sp) -/* 077988 7F042E58 E5660060 */ swc1 $f6, 0x60($t3) -/* 07798C 7F042E5C 8FAC00B8 */ lw $t4, 0xb8($sp) -/* 077990 7F042E60 AE0C0014 */ sw $t4, 0x14($s0) -/* 077994 7F042E64 C7A80068 */ lwc1 $f8, 0x68($sp) -/* 077998 7F042E68 E6080008 */ swc1 $f8, 8($s0) -/* 07799C 7F042E6C C7AA0070 */ lwc1 $f10, 0x70($sp) -/* 0779A0 7F042E70 10000006 */ b .L7F042E8C -/* 0779A4 7F042E74 E60A0010 */ swc1 $f10, 0x10($s0) -/* 0779A8 7F042E78 E4520000 */ swc1 $f18, ($v0) -.L7F042E7C: -/* 0779AC 7F042E7C C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 0779B0 7F042E80 E4440004 */ swc1 $f4, 4($v0) -/* 0779B4 7F042E84 C7B000A0 */ lwc1 $f16, 0xa0($sp) -/* 0779B8 7F042E88 E4500008 */ swc1 $f16, 8($v0) -.L7F042E8C: -/* 0779BC 7F042E8C C7A0006C */ lwc1 $f0, 0x6c($sp) -/* 0779C0 7F042E90 E600000C */ swc1 $f0, 0xc($s0) -/* 0779C4 7F042E94 8FAD00C0 */ lw $t5, 0xc0($sp) -/* 0779C8 7F042E98 E5A0005C */ swc1 $f0, 0x5c($t5) -/* 0779CC 7F042E9C AFA000B0 */ sw $zero, 0xb0($sp) -.L7F042EA0: -/* 0779D0 7F042EA0 8FBF0034 */ lw $ra, 0x34($sp) -.L7F042EA4: -/* 0779D4 7F042EA4 8FA200B0 */ lw $v0, 0xb0($sp) -/* 0779D8 7F042EA8 8FB00030 */ lw $s0, 0x30($sp) -/* 0779DC 7F042EAC 03E00008 */ jr $ra -/* 0779E0 7F042EB0 27BD00C0 */ addiu $sp, $sp, 0xc0 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F042EB4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F042EB4 -/* 0779E4 7F042EB4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0779E8 7F042EB8 AFBF001C */ sw $ra, 0x1c($sp) -/* 0779EC 7F042EBC 8C8E0064 */ lw $t6, 0x64($a0) -/* 0779F0 7F042EC0 8FAB0030 */ lw $t3, 0x30($sp) -/* 0779F4 7F042EC4 31CF0080 */ andi $t7, $t6, 0x80 -/* 0779F8 7F042EC8 11E0000D */ beqz $t7, .L7F042F00 -/* 0779FC 7F042ECC 00000000 */ nop -/* 077A00 7F042ED0 8C98006C */ lw $t8, 0x6c($a0) -/* 077A04 7F042ED4 8FA90030 */ lw $t1, 0x30($sp) -/* 077A08 7F042ED8 8F190000 */ lw $t9, ($t8) -/* 077A0C 7F042EDC 33280004 */ andi $t0, $t9, 4 -/* 077A10 7F042EE0 11000007 */ beqz $t0, .L7F042F00 -/* 077A14 7F042EE4 00000000 */ nop -/* 077A18 7F042EE8 8FAA0034 */ lw $t2, 0x34($sp) -/* 077A1C 7F042EEC AFA90010 */ sw $t1, 0x10($sp) -/* 077A20 7F042EF0 0FC10893 */ jal handles_projectile_motion -/* 077A24 7F042EF4 AFAA0014 */ sw $t2, 0x14($sp) -/* 077A28 7F042EF8 10000004 */ b .L7F042F0C -/* 077A2C 7F042EFC 8FBF001C */ lw $ra, 0x1c($sp) -.L7F042F00: -/* 077A30 7F042F00 0FC10A83 */ jal sub_GAME_7F042A0C -/* 077A34 7F042F04 AFAB0010 */ sw $t3, 0x10($sp) -/* 077A38 7F042F08 8FBF001C */ lw $ra, 0x1c($sp) -.L7F042F0C: -/* 077A3C 7F042F0C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 077A40 7F042F10 03E00008 */ jr $ra -/* 077A44 7F042F14 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F042F18(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F042F18 -/* 077A48 7F042F18 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 077A4C 7F042F1C 3C038005 */ lui $v1, %hi(clock_timer) -/* 077A50 7F042F20 24638374 */ addiu $v1, %lo(clock_timer) # addiu $v1, $v1, -0x7c8c -/* 077A54 7F042F24 8C6E0000 */ lw $t6, ($v1) -/* 077A58 7F042F28 F7B40008 */ sdc1 $f20, 8($sp) -/* 077A5C 7F042F2C 4487A000 */ mtc1 $a3, $f20 -/* 077A60 7F042F30 F7BA0020 */ sdc1 $f26, 0x20($sp) -/* 077A64 7F042F34 F7B80018 */ sdc1 $f24, 0x18($sp) -/* 077A68 7F042F38 F7B60010 */ sdc1 $f22, 0x10($sp) -/* 077A6C 7F042F3C 44857000 */ mtc1 $a1, $f14 -/* 077A70 7F042F40 C4C00000 */ lwc1 $f0, ($a2) -/* 077A74 7F042F44 19C0006A */ blez $t6, .L7F0430F0 -/* 077A78 7F042F48 00001025 */ move $v0, $zero -/* 077A7C 7F042F4C 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 077A80 7F042F50 4481D000 */ mtc1 $at, $f26 -/* 077A84 7F042F54 4480C000 */ mtc1 $zero, $f24 -/* 077A88 7F042F58 C7B2003C */ lwc1 $f18, 0x3c($sp) -/* 077A8C 7F042F5C C7A20038 */ lwc1 $f2, 0x38($sp) -/* 077A90 7F042F60 C4900000 */ lwc1 $f16, ($a0) -.L7F042F64: -/* 077A94 7F042F64 46107301 */ sub.s $f12, $f14, $f16 -/* 077A98 7F042F68 460CC03C */ c.lt.s $f24, $f12 -/* 077A9C 7F042F6C 00000000 */ nop -/* 077AA0 7F042F70 4502002E */ bc1fl .L7F04302C -/* 077AA4 7F042F74 4618003C */ c.lt.s $f0, $f24 -/* 077AA8 7F042F78 4600C03C */ c.lt.s $f24, $f0 -/* 077AAC 7F042F7C 00000000 */ nop -/* 077AB0 7F042F80 45020011 */ bc1fl .L7F042FC8 -/* 077AB4 7F042F84 4612003C */ c.lt.s $f0, $f18 -/* 077AB8 7F042F88 46000102 */ mul.s $f4, $f0, $f0 -/* 077ABC 7F042F8C 00000000 */ nop -/* 077AC0 7F042F90 461A2182 */ mul.s $f6, $f4, $f26 -/* 077AC4 7F042F94 46023203 */ div.s $f8, $f6, $f2 -/* 077AC8 7F042F98 4608603E */ c.le.s $f12, $f8 -/* 077ACC 7F042F9C 00000000 */ nop -/* 077AD0 7F042FA0 45000008 */ bc1f .L7F042FC4 -/* 077AD4 7F042FA4 00000000 */ nop -/* 077AD8 7F042FA8 46020001 */ sub.s $f0, $f0, $f2 -/* 077ADC 7F042FAC 4602003C */ c.lt.s $f0, $f2 -/* 077AE0 7F042FB0 00000000 */ nop -/* 077AE4 7F042FB4 45020014 */ bc1fl .L7F043008 -/* 077AE8 7F042FB8 4600603E */ c.le.s $f12, $f0 -/* 077AEC 7F042FBC 10000011 */ b .L7F043004 -/* 077AF0 7F042FC0 46001006 */ mov.s $f0, $f2 -.L7F042FC4: -/* 077AF4 7F042FC4 4612003C */ c.lt.s $f0, $f18 -.L7F042FC8: -/* 077AF8 7F042FC8 00000000 */ nop -/* 077AFC 7F042FCC 4502000E */ bc1fl .L7F043008 -/* 077B00 7F042FD0 4600603E */ c.le.s $f12, $f0 -/* 077B04 7F042FD4 4618003C */ c.lt.s $f0, $f24 -/* 077B08 7F042FD8 00000000 */ nop -/* 077B0C 7F042FDC 45020004 */ bc1fl .L7F042FF0 -/* 077B10 7F042FE0 46140000 */ add.s $f0, $f0, $f20 -/* 077B14 7F042FE4 10000002 */ b .L7F042FF0 -/* 077B18 7F042FE8 46020000 */ add.s $f0, $f0, $f2 -/* 077B1C 7F042FEC 46140000 */ add.s $f0, $f0, $f20 -.L7F042FF0: -/* 077B20 7F042FF0 4600903C */ c.lt.s $f18, $f0 -/* 077B24 7F042FF4 00000000 */ nop -/* 077B28 7F042FF8 45020003 */ bc1fl .L7F043008 -/* 077B2C 7F042FFC 4600603E */ c.le.s $f12, $f0 -/* 077B30 7F043000 46009006 */ mov.s $f0, $f18 -.L7F043004: -/* 077B34 7F043004 4600603E */ c.le.s $f12, $f0 -.L7F043008: -/* 077B38 7F043008 00000000 */ nop -/* 077B3C 7F04300C 45020004 */ bc1fl .L7F043020 -/* 077B40 7F043010 46008280 */ add.s $f10, $f16, $f0 -/* 077B44 7F043014 10000036 */ b .L7F0430F0 -/* 077B48 7F043018 E48E0000 */ swc1 $f14, ($a0) -/* 077B4C 7F04301C 46008280 */ add.s $f10, $f16, $f0 -.L7F043020: -/* 077B50 7F043020 1000002E */ b .L7F0430DC -/* 077B54 7F043024 E48A0000 */ swc1 $f10, ($a0) -/* 077B58 7F043028 4618003C */ c.lt.s $f0, $f24 -.L7F04302C: -/* 077B5C 7F04302C 00000000 */ nop -/* 077B60 7F043030 45020012 */ bc1fl .L7F04307C -/* 077B64 7F043034 46009587 */ neg.s $f22, $f18 -/* 077B68 7F043038 46000102 */ mul.s $f4, $f0, $f0 -/* 077B6C 7F04303C 46006287 */ neg.s $f10, $f12 -/* 077B70 7F043040 461A2182 */ mul.s $f6, $f4, $f26 -/* 077B74 7F043044 46023203 */ div.s $f8, $f6, $f2 -/* 077B78 7F043048 4608503E */ c.le.s $f10, $f8 -/* 077B7C 7F04304C 00000000 */ nop -/* 077B80 7F043050 4502000A */ bc1fl .L7F04307C -/* 077B84 7F043054 46009587 */ neg.s $f22, $f18 -/* 077B88 7F043058 46020000 */ add.s $f0, $f0, $f2 -/* 077B8C 7F04305C 46001587 */ neg.s $f22, $f2 -/* 077B90 7F043060 4600B03C */ c.lt.s $f22, $f0 -/* 077B94 7F043064 00000000 */ nop -/* 077B98 7F043068 45020015 */ bc1fl .L7F0430C0 -/* 077B9C 7F04306C 460C003E */ c.le.s $f0, $f12 -/* 077BA0 7F043070 10000012 */ b .L7F0430BC -/* 077BA4 7F043074 4600B006 */ mov.s $f0, $f22 -/* 077BA8 7F043078 46009587 */ neg.s $f22, $f18 -.L7F04307C: -/* 077BAC 7F04307C 4600B03C */ c.lt.s $f22, $f0 -/* 077BB0 7F043080 00000000 */ nop -/* 077BB4 7F043084 4502000E */ bc1fl .L7F0430C0 -/* 077BB8 7F043088 460C003E */ c.le.s $f0, $f12 -/* 077BBC 7F04308C 4600C03C */ c.lt.s $f24, $f0 -/* 077BC0 7F043090 00000000 */ nop -/* 077BC4 7F043094 45020004 */ bc1fl .L7F0430A8 -/* 077BC8 7F043098 46140001 */ sub.s $f0, $f0, $f20 -/* 077BCC 7F04309C 10000002 */ b .L7F0430A8 -/* 077BD0 7F0430A0 46020001 */ sub.s $f0, $f0, $f2 -/* 077BD4 7F0430A4 46140001 */ sub.s $f0, $f0, $f20 -.L7F0430A8: -/* 077BD8 7F0430A8 4616003C */ c.lt.s $f0, $f22 -/* 077BDC 7F0430AC 00000000 */ nop -/* 077BE0 7F0430B0 45020003 */ bc1fl .L7F0430C0 -/* 077BE4 7F0430B4 460C003E */ c.le.s $f0, $f12 -/* 077BE8 7F0430B8 4600B006 */ mov.s $f0, $f22 -.L7F0430BC: -/* 077BEC 7F0430BC 460C003E */ c.le.s $f0, $f12 -.L7F0430C0: -/* 077BF0 7F0430C0 00000000 */ nop -/* 077BF4 7F0430C4 45020004 */ bc1fl .L7F0430D8 -/* 077BF8 7F0430C8 46008100 */ add.s $f4, $f16, $f0 -/* 077BFC 7F0430CC 10000008 */ b .L7F0430F0 -/* 077C00 7F0430D0 E48E0000 */ swc1 $f14, ($a0) -/* 077C04 7F0430D4 46008100 */ add.s $f4, $f16, $f0 -.L7F0430D8: -/* 077C08 7F0430D8 E4840000 */ swc1 $f4, ($a0) -.L7F0430DC: -/* 077C0C 7F0430DC 8C6F0000 */ lw $t7, ($v1) -/* 077C10 7F0430E0 24420001 */ addiu $v0, $v0, 1 -/* 077C14 7F0430E4 004F082A */ slt $at, $v0, $t7 -/* 077C18 7F0430E8 5420FF9E */ bnezl $at, .L7F042F64 -/* 077C1C 7F0430EC C4900000 */ lwc1 $f16, ($a0) -.L7F0430F0: -/* 077C20 7F0430F0 E4C00000 */ swc1 $f0, ($a2) -/* 077C24 7F0430F4 D7BA0020 */ ldc1 $f26, 0x20($sp) -/* 077C28 7F0430F8 D7B80018 */ ldc1 $f24, 0x18($sp) -/* 077C2C 7F0430FC D7B60010 */ ldc1 $f22, 0x10($sp) -/* 077C30 7F043100 D7B40008 */ ldc1 $f20, 8($sp) -/* 077C34 7F043104 03E00008 */ jr $ra -/* 077C38 7F043108 27BD0028 */ addiu $sp, $sp, 0x28 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04310C(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A60 -.word 0xc0490fdb /*-3.1415927*/ -glabel D_80052A64 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052A68 -.word 0x40490fdb /*3.1415927*/ -glabel D_80052A6C -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052A70 -.word 0x40c90fdb /*6.2831855*/ -.text -glabel sub_GAME_7F04310C -/* 077C3C 7F04310C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 077C40 7F043110 AFBF001C */ sw $ra, 0x1c($sp) -/* 077C44 7F043114 44856000 */ mtc1 $a1, $f12 -/* 077C48 7F043118 C4840000 */ lwc1 $f4, ($a0) -/* 077C4C 7F04311C 3C018005 */ lui $at, %hi(D_80052A60) -/* 077C50 7F043120 C4262A60 */ lwc1 $f6, %lo(D_80052A60)($at) -/* 077C54 7F043124 46046001 */ sub.s $f0, $f12, $f4 -/* 077C58 7F043128 44877000 */ mtc1 $a3, $f14 -/* 077C5C 7F04312C 3C018005 */ lui $at, %hi(D_80052A68) -/* 077C60 7F043130 C7B00030 */ lwc1 $f16, 0x30($sp) -/* 077C64 7F043134 4606003C */ c.lt.s $f0, $f6 -/* 077C68 7F043138 44077000 */ mfc1 $a3, $f14 -/* 077C6C 7F04313C 45000005 */ bc1f .L7F043154 -/* 077C70 7F043140 00000000 */ nop -/* 077C74 7F043144 3C018005 */ lui $at, %hi(D_80052A68) -/* 077C78 7F043148 C4282A64 */ lwc1 $f8, %lo(D_80052A64)($at) -/* 077C7C 7F04314C 10000009 */ b .L7F043174 -/* 077C80 7F043150 46086300 */ add.s $f12, $f12, $f8 -.L7F043154: -/* 077C84 7F043154 C42A2A68 */ lwc1 $f10, %lo(D_80052A68)($at) -/* 077C88 7F043158 3C018005 */ lui $at, %hi(D_80052A6C) -/* 077C8C 7F04315C 4600503E */ c.le.s $f10, $f0 -/* 077C90 7F043160 00000000 */ nop -/* 077C94 7F043164 45020004 */ bc1fl .L7F043178 -/* 077C98 7F043168 C7B20034 */ lwc1 $f18, 0x34($sp) -/* 077C9C 7F04316C C4222A6C */ lwc1 $f2, %lo(D_80052A6C)($at) -/* 077CA0 7F043170 46026301 */ sub.s $f12, $f12, $f2 -.L7F043174: -/* 077CA4 7F043174 C7B20034 */ lwc1 $f18, 0x34($sp) -.L7F043178: -/* 077CA8 7F043178 44056000 */ mfc1 $a1, $f12 -/* 077CAC 7F04317C E7B00010 */ swc1 $f16, 0x10($sp) -/* 077CB0 7F043180 AFA40020 */ sw $a0, 0x20($sp) -/* 077CB4 7F043184 0FC10BC6 */ jal sub_GAME_7F042F18 -/* 077CB8 7F043188 E7B20014 */ swc1 $f18, 0x14($sp) -/* 077CBC 7F04318C 8FA40020 */ lw $a0, 0x20($sp) -/* 077CC0 7F043190 44802000 */ mtc1 $zero, $f4 -/* 077CC4 7F043194 3C018005 */ lui $at, %hi(D_80052A70) -/* 077CC8 7F043198 C4800000 */ lwc1 $f0, ($a0) -/* 077CCC 7F04319C C4222A70 */ lwc1 $f2, %lo(D_80052A70)($at) -/* 077CD0 7F0431A0 4604003C */ c.lt.s $f0, $f4 -/* 077CD4 7F0431A4 00000000 */ nop -/* 077CD8 7F0431A8 45020005 */ bc1fl .L7F0431C0 -/* 077CDC 7F0431AC 4600103E */ c.le.s $f2, $f0 -/* 077CE0 7F0431B0 46020180 */ add.s $f6, $f0, $f2 -/* 077CE4 7F0431B4 E4860000 */ swc1 $f6, ($a0) -/* 077CE8 7F0431B8 C4800000 */ lwc1 $f0, ($a0) -/* 077CEC 7F0431BC 4600103E */ c.le.s $f2, $f0 -.L7F0431C0: -/* 077CF0 7F0431C0 00000000 */ nop -/* 077CF4 7F0431C4 45020004 */ bc1fl .L7F0431D8 -/* 077CF8 7F0431C8 8FBF001C */ lw $ra, 0x1c($sp) -/* 077CFC 7F0431CC 46020201 */ sub.s $f8, $f0, $f2 -/* 077D00 7F0431D0 E4880000 */ swc1 $f8, ($a0) -/* 077D04 7F0431D4 8FBF001C */ lw $ra, 0x1c($sp) -.L7F0431D8: -/* 077D08 7F0431D8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 077D0C 7F0431DC 03E00008 */ jr $ra -/* 077D10 7F0431E0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0431E4(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A74 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052A78 -.word 0x3d4ccccd /*0.050000001*/ -glabel D_80052A7C -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052A80 -.word 0x3d4ccccd /*0.050000001*/ -glabel D_80052A84 -.word 0x3cf5c28f /*0.029999999*/ -glabel D_80052A88 -.word 0x3e19999a /*0.15000001*/ -.text -glabel sub_GAME_7F0431E4 -/* 077D14 7F0431E4 27BDFEE8 */ addiu $sp, $sp, -0x118 -/* 077D18 7F0431E8 AFBF001C */ sw $ra, 0x1c($sp) -/* 077D1C 7F0431EC AFB10018 */ sw $s1, 0x18($sp) -/* 077D20 7F0431F0 AFB00014 */ sw $s0, 0x14($sp) -/* 077D24 7F0431F4 AFA5011C */ sw $a1, 0x11c($sp) -/* 077D28 7F0431F8 8C8E0064 */ lw $t6, 0x64($a0) -/* 077D2C 7F0431FC 3C01FFFE */ li $at, 0xFFFE0000 # -nan -/* 077D30 7F043200 3421FFFF */ ori $at, (0xFFFEFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 077D34 7F043204 01C17824 */ and $t7, $t6, $at -/* 077D38 7F043208 31F90080 */ andi $t9, $t7, 0x80 -/* 077D3C 7F04320C 00808825 */ move $s1, $a0 -/* 077D40 7F043210 1320010A */ beqz $t9, .L7F04363C -/* 077D44 7F043214 AC8F0064 */ sw $t7, 0x64($a0) -/* 077D48 7F043218 90880003 */ lbu $t0, 3($a0) -/* 077D4C 7F04321C 8C90006C */ lw $s0, 0x6c($a0) -/* 077D50 7F043220 24010001 */ li $at, 1 -/* 077D54 7F043224 15010009 */ bne $t0, $at, .L7F04324C -/* 077D58 7F043228 26240018 */ addiu $a0, $s1, 0x18 -/* 077D5C 7F04322C 0FC0FEDC */ jal sub_GAME_7F03FB70 -/* 077D60 7F043230 02002025 */ move $a0, $s0 -/* 077D64 7F043234 8E290064 */ lw $t1, 0x64($s1) -/* 077D68 7F043238 2401FF7F */ li $at, -129 -/* 077D6C 7F04323C AE20006C */ sw $zero, 0x6c($s1) -/* 077D70 7F043240 01215024 */ and $t2, $t1, $at -/* 077D74 7F043244 100000FD */ b .L7F04363C -/* 077D78 7F043248 AE2A0064 */ sw $t2, 0x64($s1) -.L7F04324C: -/* 077D7C 7F04324C 8E0B0000 */ lw $t3, ($s0) -/* 077D80 7F043250 2401FFFE */ li $at, -2 -/* 077D84 7F043254 AE000088 */ sw $zero, 0x88($s0) -/* 077D88 7F043258 01616024 */ and $t4, $t3, $at -/* 077D8C 7F04325C 2401FFFB */ li $at, -5 -/* 077D90 7F043260 AE0C0000 */ sw $t4, ($s0) -/* 077D94 7F043264 01817024 */ and $t6, $t4, $at -/* 077D98 7F043268 AE0E0000 */ sw $t6, ($s0) -/* 077D9C 7F04326C AFA40028 */ sw $a0, 0x28($sp) -/* 077DA0 7F043270 0FC16218 */ jal sub_GAME_7F058860 -/* 077DA4 7F043274 27A5010C */ addiu $a1, $sp, 0x10c -/* 077DA8 7F043278 27A4010C */ addiu $a0, $sp, 0x10c -/* 077DAC 7F04327C 0FC161C5 */ jal sub_GAME_7F058714 -/* 077DB0 7F043280 27A500CC */ addiu $a1, $sp, 0xcc -/* 077DB4 7F043284 26050068 */ addiu $a1, $s0, 0x68 -/* 077DB8 7F043288 AFA50024 */ sw $a1, 0x24($sp) -/* 077DBC 7F04328C 0FC16CFD */ jal sub_GAME_7F05B3F4 -/* 077DC0 7F043290 27A4010C */ addiu $a0, $sp, 0x10c -/* 077DC4 7F043294 27A400CC */ addiu $a0, $sp, 0xcc -/* 077DC8 7F043298 0FC1674E */ jal sub_GAME_7F059D38 -/* 077DCC 7F04329C 27A5008C */ addiu $a1, $sp, 0x8c -/* 077DD0 7F0432A0 27A4008C */ addiu $a0, $sp, 0x8c -/* 077DD4 7F0432A4 8FA50028 */ lw $a1, 0x28($sp) -/* 077DD8 7F0432A8 0FC16032 */ jal sub_GAME_7F0580C8 -/* 077DDC 7F0432AC 27A6004C */ addiu $a2, $sp, 0x4c -/* 077DE0 7F0432B0 C7A2004C */ lwc1 $f2, 0x4c($sp) -/* 077DE4 7F0432B4 C7AE0050 */ lwc1 $f14, 0x50($sp) -/* 077DE8 7F0432B8 C7A00054 */ lwc1 $f0, 0x54($sp) -/* 077DEC 7F0432BC 46021102 */ mul.s $f4, $f2, $f2 -/* 077DF0 7F0432C0 00000000 */ nop -/* 077DF4 7F0432C4 460E7182 */ mul.s $f6, $f14, $f14 -/* 077DF8 7F0432C8 46062200 */ add.s $f8, $f4, $f6 -/* 077DFC 7F0432CC 46000282 */ mul.s $f10, $f0, $f0 -/* 077E00 7F0432D0 0C007DF8 */ jal sqrtf -/* 077E04 7F0432D4 46085300 */ add.s $f12, $f10, $f8 -/* 077E08 7F0432D8 E60000C0 */ swc1 $f0, 0xc0($s0) -/* 077E0C 7F0432DC C7A4005C */ lwc1 $f4, 0x5c($sp) -/* 077E10 7F0432E0 C7AA0060 */ lwc1 $f10, 0x60($sp) -/* 077E14 7F0432E4 46042182 */ mul.s $f6, $f4, $f4 -/* 077E18 7F0432E8 00000000 */ nop -/* 077E1C 7F0432EC 460A5202 */ mul.s $f8, $f10, $f10 -/* 077E20 7F0432F0 C7AA0064 */ lwc1 $f10, 0x64($sp) -/* 077E24 7F0432F4 46083100 */ add.s $f4, $f6, $f8 -/* 077E28 7F0432F8 460A5182 */ mul.s $f6, $f10, $f10 -/* 077E2C 7F0432FC 0C007DF8 */ jal sqrtf -/* 077E30 7F043300 46043300 */ add.s $f12, $f6, $f4 -/* 077E34 7F043304 E60000C4 */ swc1 $f0, 0xc4($s0) -/* 077E38 7F043308 C7A8006C */ lwc1 $f8, 0x6c($sp) -/* 077E3C 7F04330C C7A60070 */ lwc1 $f6, 0x70($sp) -/* 077E40 7F043310 46084282 */ mul.s $f10, $f8, $f8 -/* 077E44 7F043314 00000000 */ nop -/* 077E48 7F043318 46063102 */ mul.s $f4, $f6, $f6 -/* 077E4C 7F04331C C7A60074 */ lwc1 $f6, 0x74($sp) -/* 077E50 7F043320 46045200 */ add.s $f8, $f10, $f4 -/* 077E54 7F043324 46063282 */ mul.s $f10, $f6, $f6 -/* 077E58 7F043328 0C007DF8 */ jal sqrtf -/* 077E5C 7F04332C 46085300 */ add.s $f12, $f10, $f8 -/* 077E60 7F043330 E60000C8 */ swc1 $f0, 0xc8($s0) -/* 077E64 7F043334 44808000 */ mtc1 $zero, $f16 -/* 077E68 7F043338 C6220018 */ lwc1 $f2, 0x18($s1) -/* 077E6C 7F04333C C62E0020 */ lwc1 $f14, 0x20($s1) -/* 077E70 7F043340 46101032 */ c.eq.s $f2, $f16 -/* 077E74 7F043344 00000000 */ nop -/* 077E78 7F043348 45000005 */ bc1f .L7F043360 -/* 077E7C 7F04334C 00000000 */ nop -/* 077E80 7F043350 46107032 */ c.eq.s $f14, $f16 -/* 077E84 7F043354 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 077E88 7F043358 45030013 */ bc1tl .L7F0433A8 -/* 077E8C 7F04335C 44817000 */ mtc1 $at, $f14 -.L7F043360: -/* 077E90 7F043360 46021102 */ mul.s $f4, $f2, $f2 -/* 077E94 7F043364 E7A20048 */ swc1 $f2, 0x48($sp) -/* 077E98 7F043368 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 077E9C 7F04336C 460E7182 */ mul.s $f6, $f14, $f14 -/* 077EA0 7F043370 0C007DF8 */ jal sqrtf -/* 077EA4 7F043374 46062300 */ add.s $f12, $f4, $f6 -/* 077EA8 7F043378 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 077EAC 7F04337C 44819000 */ mtc1 $at, $f18 -/* 077EB0 7F043380 C7A20048 */ lwc1 $f2, 0x48($sp) -/* 077EB4 7F043384 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 077EB8 7F043388 46009303 */ div.s $f12, $f18, $f0 -/* 077EBC 7F04338C 44808000 */ mtc1 $zero, $f16 -/* 077EC0 7F043390 460C1082 */ mul.s $f2, $f2, $f12 -/* 077EC4 7F043394 00000000 */ nop -/* 077EC8 7F043398 460C7382 */ mul.s $f14, $f14, $f12 -/* 077ECC 7F04339C 10000004 */ b .L7F0433B0 -/* 077ED0 7F0433A0 00000000 */ nop -/* 077ED4 7F0433A4 44817000 */ mtc1 $at, $f14 -.L7F0433A8: -/* 077ED8 7F0433A8 44819000 */ mtc1 $at, $f18 -/* 077EDC 7F0433AC 46008086 */ mov.s $f2, $f16 -.L7F0433B0: -/* 077EE0 7F0433B0 E7A2008C */ swc1 $f2, 0x8c($sp) -/* 077EE4 7F0433B4 E7B00090 */ swc1 $f16, 0x90($sp) -/* 077EE8 7F0433B8 E7AE0094 */ swc1 $f14, 0x94($sp) -/* 077EEC 7F0433BC E7B00098 */ swc1 $f16, 0x98($sp) -/* 077EF0 7F0433C0 C62A002C */ lwc1 $f10, 0x2c($s1) -/* 077EF4 7F0433C4 3C01BF80 */ li $at, 0xBF800000 # -1.000000 -/* 077EF8 7F0433C8 27A4008C */ addiu $a0, $sp, 0x8c -/* 077EFC 7F0433CC 460A803E */ c.le.s $f16, $f10 -/* 077F00 7F0433D0 27A5010C */ addiu $a1, $sp, 0x10c -/* 077F04 7F0433D4 4502000C */ bc1fl .L7F043408 -/* 077F08 7F0433D8 44812000 */ mtc1 $at, $f4 -/* 077F0C 7F0433DC 46007207 */ neg.s $f8, $f14 -/* 077F10 7F0433E0 E7B0009C */ swc1 $f16, 0x9c($sp) -/* 077F14 7F0433E4 E7B200A0 */ swc1 $f18, 0xa0($sp) -/* 077F18 7F0433E8 E7B000A4 */ swc1 $f16, 0xa4($sp) -/* 077F1C 7F0433EC E7B000A8 */ swc1 $f16, 0xa8($sp) -/* 077F20 7F0433F0 E7A800AC */ swc1 $f8, 0xac($sp) -/* 077F24 7F0433F4 E7B000B0 */ swc1 $f16, 0xb0($sp) -/* 077F28 7F0433F8 E7A200B4 */ swc1 $f2, 0xb4($sp) -/* 077F2C 7F0433FC 1000000B */ b .L7F04342C -/* 077F30 7F043400 E7B000B8 */ swc1 $f16, 0xb8($sp) -/* 077F34 7F043404 44812000 */ mtc1 $at, $f4 -.L7F043408: -/* 077F38 7F043408 46001187 */ neg.s $f6, $f2 -/* 077F3C 7F04340C E7B0009C */ swc1 $f16, 0x9c($sp) -/* 077F40 7F043410 E7B000A4 */ swc1 $f16, 0xa4($sp) -/* 077F44 7F043414 E7B000A8 */ swc1 $f16, 0xa8($sp) -/* 077F48 7F043418 E7AE00AC */ swc1 $f14, 0xac($sp) -/* 077F4C 7F04341C E7B000B0 */ swc1 $f16, 0xb0($sp) -/* 077F50 7F043420 E7A600B4 */ swc1 $f6, 0xb4($sp) -/* 077F54 7F043424 E7B000B8 */ swc1 $f16, 0xb8($sp) -/* 077F58 7F043428 E7A400A0 */ swc1 $f4, 0xa0($sp) -.L7F04342C: -/* 077F5C 7F04342C E7B000BC */ swc1 $f16, 0xbc($sp) -/* 077F60 7F043430 E7B000C0 */ swc1 $f16, 0xc0($sp) -/* 077F64 7F043434 E7B000C4 */ swc1 $f16, 0xc4($sp) -/* 077F68 7F043438 0FC16218 */ jal sub_GAME_7F058860 -/* 077F6C 7F04343C E7B200C8 */ swc1 $f18, 0xc8($sp) -/* 077F70 7F043440 26050078 */ addiu $a1, $s0, 0x78 -/* 077F74 7F043444 AFA50028 */ sw $a1, 0x28($sp) -/* 077F78 7F043448 0FC16CFD */ jal sub_GAME_7F05B3F4 -/* 077F7C 7F04344C 27A4010C */ addiu $a0, $sp, 0x10c -/* 077F80 7F043450 8FA50028 */ lw $a1, 0x28($sp) -/* 077F84 7F043454 0FC16F84 */ jal sub_GAME_7F05BE10 -/* 077F88 7F043458 8FA40024 */ lw $a0, 0x24($sp) -/* 077F8C 7F04345C 44808000 */ mtc1 $zero, $f16 -/* 077F90 7F043460 00000000 */ nop -/* 077F94 7F043464 E6100060 */ swc1 $f16, 0x60($s0) -/* 077F98 7F043468 C7A800CC */ lwc1 $f8, 0xcc($sp) -/* 077F9C 7F04346C C7AA008C */ lwc1 $f10, 0x8c($sp) -/* 077FA0 7F043470 C7A60090 */ lwc1 $f6, 0x90($sp) -/* 077FA4 7F043474 46085102 */ mul.s $f4, $f10, $f8 -/* 077FA8 7F043478 C7AA00D0 */ lwc1 $f10, 0xd0($sp) -/* 077FAC 7F04347C 460A3202 */ mul.s $f8, $f6, $f10 -/* 077FB0 7F043480 C7AA00D4 */ lwc1 $f10, 0xd4($sp) -/* 077FB4 7F043484 46082180 */ add.s $f6, $f4, $f8 -/* 077FB8 7F043488 C7A40094 */ lwc1 $f4, 0x94($sp) -/* 077FBC 7F04348C 46045202 */ mul.s $f8, $f10, $f4 -/* 077FC0 7F043490 0FC16B2C */ jal sub_GAME_7F05ACB0 -/* 077FC4 7F043494 46064300 */ add.s $f12, $f8, $f6 -/* 077FC8 7F043498 44808000 */ mtc1 $zero, $f16 -/* 077FCC 7F04349C 46000486 */ mov.s $f18, $f0 -/* 077FD0 7F0434A0 4600803C */ c.lt.s $f16, $f0 -/* 077FD4 7F0434A4 00000000 */ nop -/* 077FD8 7F0434A8 45020018 */ bc1fl .L7F04350C -/* 077FDC 7F0434AC 4600803C */ c.lt.s $f16, $f0 -/* 077FE0 7F0434B0 C622001C */ lwc1 $f2, 0x1c($s1) -/* 077FE4 7F0434B4 8FA2011C */ lw $v0, 0x11c($sp) -/* 077FE8 7F0434B8 4602803C */ c.lt.s $f16, $f2 -/* 077FEC 7F0434BC 00000000 */ nop -/* 077FF0 7F0434C0 45020012 */ bc1fl .L7F04350C -/* 077FF4 7F0434C4 4600803C */ c.lt.s $f16, $f0 -/* 077FF8 7F0434C8 C44A0004 */ lwc1 $f10, 4($v0) -/* 077FFC 7F0434CC 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 078000 7F0434D0 4602503C */ c.lt.s $f10, $f2 -/* 078004 7F0434D4 00000000 */ nop -/* 078008 7F0434D8 4502000C */ bc1fl .L7F04350C -/* 07800C 7F0434DC 4600803C */ c.lt.s $f16, $f0 -/* 078010 7F0434E0 44812000 */ mtc1 $at, $f4 -/* 078014 7F0434E4 3C018005 */ lui $at, %hi(D_80052A74) -/* 078018 7F0434E8 C4262A74 */ lwc1 $f6, %lo(D_80052A74)($at) -/* 07801C 7F0434EC 46040202 */ mul.s $f8, $f0, $f4 -/* 078020 7F0434F0 3C018005 */ lui $at, %hi(D_80052A78) -/* 078024 7F0434F4 C4242A78 */ lwc1 $f4, %lo(D_80052A78)($at) -/* 078028 7F0434F8 46064283 */ div.s $f10, $f8, $f6 -/* 07802C 7F0434FC 460A2203 */ div.s $f8, $f4, $f10 -/* 078030 7F043500 10000037 */ b .L7F0435E0 -/* 078034 7F043504 E6080064 */ swc1 $f8, 0x64($s0) -/* 078038 7F043508 4600803C */ c.lt.s $f16, $f0 -.L7F04350C: -/* 07803C 7F04350C 8FA2011C */ lw $v0, 0x11c($sp) -/* 078040 7F043510 C622001C */ lwc1 $f2, 0x1c($s1) -/* 078044 7F043514 45000013 */ bc1f .L7F043564 -/* 078048 7F043518 C44E0004 */ lwc1 $f14, 4($v0) -/* 07804C 7F04351C 4610103C */ c.lt.s $f2, $f16 -/* 078050 7F043520 00000000 */ nop -/* 078054 7F043524 45020010 */ bc1fl .L7F043568 -/* 078058 7F043528 C62A0020 */ lwc1 $f10, 0x20($s1) -/* 07805C 7F04352C 460E103C */ c.lt.s $f2, $f14 -/* 078060 7F043530 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 078064 7F043534 4502000C */ bc1fl .L7F043568 -/* 078068 7F043538 C62A0020 */ lwc1 $f10, 0x20($s1) -/* 07806C 7F04353C 44813000 */ mtc1 $at, $f6 -/* 078070 7F043540 3C018005 */ lui $at, %hi(D_80052A7C) -/* 078074 7F043544 C42A2A7C */ lwc1 $f10, %lo(D_80052A7C)($at) -/* 078078 7F043548 46060102 */ mul.s $f4, $f0, $f6 -/* 07807C 7F04354C 3C018005 */ lui $at, %hi(D_80052A80) -/* 078080 7F043550 C4262A80 */ lwc1 $f6, %lo(D_80052A80)($at) -/* 078084 7F043554 460A2203 */ div.s $f8, $f4, $f10 -/* 078088 7F043558 46083103 */ div.s $f4, $f6, $f8 -/* 07808C 7F04355C 10000020 */ b .L7F0435E0 -/* 078090 7F043560 E6040064 */ swc1 $f4, 0x64($s0) -.L7F043564: -/* 078094 7F043564 C62A0020 */ lwc1 $f10, 0x20($s1) -.L7F043568: -/* 078098 7F043568 C4460008 */ lwc1 $f6, 8($v0) -/* 07809C 7F04356C C4440000 */ lwc1 $f4, ($v0) -/* 0780A0 7F043570 8E2F0014 */ lw $t7, 0x14($s1) -/* 0780A4 7F043574 46065202 */ mul.s $f8, $f10, $f6 -/* 0780A8 7F043578 C62A0018 */ lwc1 $f10, 0x18($s1) -/* 0780AC 7F04357C C5E00014 */ lwc1 $f0, 0x14($t7) -/* 0780B0 7F043580 E7B20030 */ swc1 $f18, 0x30($sp) -/* 0780B4 7F043584 460A2182 */ mul.s $f6, $f4, $f10 -/* 0780B8 7F043588 00000000 */ nop -/* 0780BC 7F04358C 46027102 */ mul.s $f4, $f14, $f2 -/* 0780C0 7F043590 46043280 */ add.s $f10, $f6, $f4 -/* 0780C4 7F043594 46000102 */ mul.s $f4, $f0, $f0 -/* 0780C8 7F043598 460A4180 */ add.s $f6, $f8, $f10 -/* 0780CC 7F04359C 0FC16B2C */ jal sub_GAME_7F05ACB0 -/* 0780D0 7F0435A0 46043303 */ div.s $f12, $f6, $f4 -/* 0780D4 7F0435A4 44808000 */ mtc1 $zero, $f16 -/* 0780D8 7F0435A8 C7B20030 */ lwc1 $f18, 0x30($sp) -/* 0780DC 7F0435AC 3C018005 */ lui $at, %hi(global_timer_delta) -/* 0780E0 7F0435B0 C4288378 */ lwc1 $f8, %lo(global_timer_delta)($at) -/* 0780E4 7F0435B4 46109032 */ c.eq.s $f18, $f16 -/* 0780E8 7F0435B8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0780EC 7F0435BC 46080083 */ div.s $f2, $f0, $f8 -/* 0780F0 7F0435C0 45030005 */ bc1tl .L7F0435D8 -/* 0780F4 7F0435C4 44813000 */ mtc1 $at, $f6 -/* 0780F8 7F0435C8 46121283 */ div.s $f10, $f2, $f18 -/* 0780FC 7F0435CC 10000004 */ b .L7F0435E0 -/* 078100 7F0435D0 E60A0064 */ swc1 $f10, 0x64($s0) -/* 078104 7F0435D4 44813000 */ mtc1 $at, $f6 -.L7F0435D8: -/* 078108 7F0435D8 00000000 */ nop -/* 07810C 7F0435DC E6060064 */ swc1 $f6, 0x64($s0) -.L7F0435E0: -/* 078110 7F0435E0 C6000064 */ lwc1 $f0, 0x64($s0) -/* 078114 7F0435E4 3C018005 */ lui $at, %hi(D_80052A84) -/* 078118 7F0435E8 4610003C */ c.lt.s $f0, $f16 -/* 07811C 7F0435EC 00000000 */ nop -/* 078120 7F0435F0 45000004 */ bc1f .L7F043604 -/* 078124 7F0435F4 00000000 */ nop -/* 078128 7F0435F8 46000107 */ neg.s $f4, $f0 -/* 07812C 7F0435FC E6040064 */ swc1 $f4, 0x64($s0) -/* 078130 7F043600 C6000064 */ lwc1 $f0, 0x64($s0) -.L7F043604: -/* 078134 7F043604 C4222A84 */ lwc1 $f2, %lo(D_80052A84)($at) -/* 078138 7F043608 3C018005 */ lui $at, %hi(D_80052A88) -/* 07813C 7F04360C 4602003C */ c.lt.s $f0, $f2 -/* 078140 7F043610 00000000 */ nop -/* 078144 7F043614 45000003 */ bc1f .L7F043624 -/* 078148 7F043618 00000000 */ nop -/* 07814C 7F04361C 10000007 */ b .L7F04363C -/* 078150 7F043620 E6020064 */ swc1 $f2, 0x64($s0) -.L7F043624: -/* 078154 7F043624 C4222A88 */ lwc1 $f2, %lo(D_80052A88)($at) -/* 078158 7F043628 4600103C */ c.lt.s $f2, $f0 -/* 07815C 7F04362C 00000000 */ nop -/* 078160 7F043630 45020003 */ bc1fl .L7F043640 -/* 078164 7F043634 8FBF001C */ lw $ra, 0x1c($sp) -/* 078168 7F043638 E6020064 */ swc1 $f2, 0x64($s0) -.L7F04363C: -/* 07816C 7F04363C 8FBF001C */ lw $ra, 0x1c($sp) -.L7F043640: -/* 078170 7F043640 8FB00014 */ lw $s0, 0x14($sp) -/* 078174 7F043644 8FB10018 */ lw $s1, 0x18($sp) -/* 078178 7F043648 03E00008 */ jr $ra -/* 07817C 7F04364C 27BD0118 */ addiu $sp, $sp, 0x118 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F043650(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F043650 -/* 078180 7F043650 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 078184 7F043654 AFBF001C */ sw $ra, 0x1c($sp) -/* 078188 7F043658 AFB00018 */ sw $s0, 0x18($sp) -/* 07818C 7F04365C 8C820064 */ lw $v0, 0x64($a0) -/* 078190 7F043660 00808025 */ move $s0, $a0 -/* 078194 7F043664 304E0080 */ andi $t6, $v0, 0x80 -/* 078198 7F043668 51C0006F */ beql $t6, $zero, .L7F043828 -/* 07819C 7F04366C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0781A0 7F043670 8C83006C */ lw $v1, 0x6c($a0) -/* 0781A4 7F043674 2401FFDF */ li $at, -33 -/* 0781A8 7F043678 8C6F0000 */ lw $t7, ($v1) -/* 0781AC 7F04367C 31F80001 */ andi $t8, $t7, 1 -/* 0781B0 7F043680 53000052 */ beql $t8, $zero, .L7F0437CC -/* 0781B4 7F043684 00414024 */ and $t0, $v0, $at -/* 0781B8 7F043688 8C790090 */ lw $t9, 0x90($v1) -/* 0781BC 7F04368C 30480020 */ andi $t0, $v0, 0x20 -/* 0781C0 7F043690 5F20004E */ bgtzl $t9, .L7F0437CC -/* 0781C4 7F043694 00414024 */ and $t0, $v0, $at -/* 0781C8 7F043698 1100004B */ beqz $t0, .L7F0437C8 -/* 0781CC 7F04369C 3C0A8003 */ lui $t2, %hi(Throwing_knife_SFX) -/* 0781D0 7F0436A0 254A0B2C */ addiu $t2, %lo(Throwing_knife_SFX) # addiu $t2, $t2, 0xb2c -/* 0781D4 7F0436A4 8D410000 */ lw $at, ($t2) -/* 0781D8 7F0436A8 27A90038 */ addiu $t1, $sp, 0x38 -/* 0781DC 7F0436AC AD210000 */ sw $at, ($t1) -/* 0781E0 7F0436B0 95410004 */ lhu $at, 4($t2) -/* 0781E4 7F0436B4 A5210004 */ sh $at, 4($t1) -/* 0781E8 7F0436B8 8C8D006C */ lw $t5, 0x6c($a0) -/* 0781EC 7F0436BC 8DAE00A4 */ lw $t6, 0xa4($t5) -/* 0781F0 7F0436C0 0C002914 */ jal get_random_value -/* 0781F4 7F0436C4 AFAE0034 */ sw $t6, 0x34($sp) -/* 0781F8 7F0436C8 24010003 */ li $at, 3 -/* 0781FC 7F0436CC 0041001B */ divu $zero, $v0, $at -/* 078200 7F0436D0 00007810 */ mfhi $t7 -/* 078204 7F0436D4 AFAF0030 */ sw $t7, 0x30($sp) -/* 078208 7F0436D8 8E03006C */ lw $v1, 0x6c($s0) -/* 07820C 7F0436DC 3C198005 */ lui $t9, %hi(global_timer) -/* 078210 7F0436E0 8F39837C */ lw $t9, %lo(global_timer)($t9) -/* 078214 7F0436E4 8C7800A0 */ lw $t8, 0xa0($v1) -/* 078218 7F0436E8 8FA70034 */ lw $a3, 0x34($sp) -/* 07821C 7F0436EC 2728FFFA */ addiu $t0, $t9, -6 -/* 078220 7F0436F0 0308082A */ slt $at, $t8, $t0 -/* 078224 7F0436F4 1020000D */ beqz $at, .L7F04372C -/* 078228 7F0436F8 00075880 */ sll $t3, $a3, 2 -/* 07822C 7F0436FC 006B4821 */ addu $t1, $v1, $t3 -/* 078230 7F043700 8D240098 */ lw $a0, 0x98($t1) -/* 078234 7F043704 5080000A */ beql $a0, $zero, .L7F043730 -/* 078238 7F043708 8FA70034 */ lw $a3, 0x34($sp) -/* 07823C 7F04370C 0C00237C */ jal sfxGetArg0Unk3F -/* 078240 7F043710 AFAB002C */ sw $t3, 0x2c($sp) -/* 078244 7F043714 10400005 */ beqz $v0, .L7F04372C -/* 078248 7F043718 8FA7002C */ lw $a3, 0x2c($sp) -/* 07824C 7F04371C 8E0A006C */ lw $t2, 0x6c($s0) -/* 078250 7F043720 01476021 */ addu $t4, $t2, $a3 -/* 078254 7F043724 0C002408 */ jal sfxDeactivate -/* 078258 7F043728 8D840098 */ lw $a0, 0x98($t4) -.L7F04372C: -/* 07825C 7F04372C 8FA70034 */ lw $a3, 0x34($sp) -.L7F043730: -/* 078260 7F043730 8E0E006C */ lw $t6, 0x6c($s0) -/* 078264 7F043734 00076880 */ sll $t5, $a3, 2 -/* 078268 7F043738 01CD7821 */ addu $t7, $t6, $t5 -/* 07826C 7F04373C 8DF90098 */ lw $t9, 0x98($t7) -/* 078270 7F043740 57200039 */ bnezl $t9, .L7F043828 -/* 078274 7F043744 8FBF001C */ lw $ra, 0x1c($sp) -/* 078278 7F043748 0FC2FF01 */ jal get_controls_locked_flag -/* 07827C 7F04374C AFAD002C */ sw $t5, 0x2c($sp) -/* 078280 7F043750 14400034 */ bnez $v0, .L7F043824 -/* 078284 7F043754 8FA7002C */ lw $a3, 0x2c($sp) -/* 078288 7F043758 8FB80030 */ lw $t8, 0x30($sp) -/* 07828C 7F04375C 8E0B006C */ lw $t3, 0x6c($s0) -/* 078290 7F043760 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 078294 7F043764 00184040 */ sll $t0, $t8, 1 -/* 078298 7F043768 03A82821 */ addu $a1, $sp, $t0 -/* 07829C 7F04376C 84A50038 */ lh $a1, 0x38($a1) -/* 0782A0 7F043770 01673021 */ addu $a2, $t3, $a3 -/* 0782A4 7F043774 24C60098 */ addiu $a2, $a2, 0x98 -/* 0782A8 7F043778 AFA7002C */ sw $a3, 0x2c($sp) -/* 0782AC 7F04377C 0C002382 */ jal play_sfx_a1 -/* 0782B0 7F043780 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0782B4 7F043784 8FA7002C */ lw $a3, 0x2c($sp) -/* 0782B8 7F043788 8E09006C */ lw $t1, 0x6c($s0) -/* 0782BC 7F04378C 8E050010 */ lw $a1, 0x10($s0) -/* 0782C0 7F043790 01275021 */ addu $t2, $t1, $a3 -/* 0782C4 7F043794 8D440098 */ lw $a0, 0x98($t2) -/* 0782C8 7F043798 0FC14E84 */ jal sub_GAME_7F053A10 -/* 0782CC 7F04379C 24A50008 */ addiu $a1, $a1, 8 -/* 0782D0 7F0437A0 3C0C8005 */ lui $t4, %hi(global_timer) -/* 0782D4 7F0437A4 8D8C837C */ lw $t4, %lo(global_timer)($t4) -/* 0782D8 7F0437A8 8E0D006C */ lw $t5, 0x6c($s0) -/* 0782DC 7F0437AC 240F0001 */ li $t7, 1 -/* 0782E0 7F0437B0 ADAC00A0 */ sw $t4, 0xa0($t5) -/* 0782E4 7F0437B4 8FAE0034 */ lw $t6, 0x34($sp) -/* 0782E8 7F0437B8 8E18006C */ lw $t8, 0x6c($s0) -/* 0782EC 7F0437BC 01EEC823 */ subu $t9, $t7, $t6 -/* 0782F0 7F0437C0 10000018 */ b .L7F043824 -/* 0782F4 7F0437C4 AF1900A4 */ sw $t9, 0xa4($t8) -.L7F0437C8: -/* 0782F8 7F0437C8 00414024 */ and $t0, $v0, $at -.L7F0437CC: -/* 0782FC 7F0437CC AE080064 */ sw $t0, 0x64($s0) -/* 078300 7F0437D0 8C640098 */ lw $a0, 0x98($v1) -/* 078304 7F0437D4 50800009 */ beql $a0, $zero, .L7F0437FC -/* 078308 7F0437D8 8E09006C */ lw $t1, 0x6c($s0) -/* 07830C 7F0437DC 0C00237C */ jal sfxGetArg0Unk3F -/* 078310 7F0437E0 00000000 */ nop -/* 078314 7F0437E4 50400005 */ beql $v0, $zero, .L7F0437FC -/* 078318 7F0437E8 8E09006C */ lw $t1, 0x6c($s0) -/* 07831C 7F0437EC 8E0B006C */ lw $t3, 0x6c($s0) -/* 078320 7F0437F0 0C002408 */ jal sfxDeactivate -/* 078324 7F0437F4 8D640098 */ lw $a0, 0x98($t3) -/* 078328 7F0437F8 8E09006C */ lw $t1, 0x6c($s0) -.L7F0437FC: -/* 07832C 7F0437FC 8D24009C */ lw $a0, 0x9c($t1) -/* 078330 7F043800 50800009 */ beql $a0, $zero, .L7F043828 -/* 078334 7F043804 8FBF001C */ lw $ra, 0x1c($sp) -/* 078338 7F043808 0C00237C */ jal sfxGetArg0Unk3F -/* 07833C 7F04380C 00000000 */ nop -/* 078340 7F043810 50400005 */ beql $v0, $zero, .L7F043828 -/* 078344 7F043814 8FBF001C */ lw $ra, 0x1c($sp) -/* 078348 7F043818 8E0A006C */ lw $t2, 0x6c($s0) -/* 07834C 7F04381C 0C002408 */ jal sfxDeactivate -/* 078350 7F043820 8D44009C */ lw $a0, 0x9c($t2) -.L7F043824: -/* 078354 7F043824 8FBF001C */ lw $ra, 0x1c($sp) -.L7F043828: -/* 078358 7F043828 8FB00018 */ lw $s0, 0x18($sp) -/* 07835C 7F04382C 27BD0040 */ addiu $sp, $sp, 0x40 -/* 078360 7F043830 03E00008 */ jr $ra -/* 078364 7F043834 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F043838(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052A8C -.word 0xbfc90fdb /*-1.5707964*/ -glabel D_80052A90 -.word 0xbfc90fdb /*-1.5707964*/ -.text -glabel sub_GAME_7F043838 -/* 078368 7F043838 27BDFED8 */ addiu $sp, $sp, -0x128 -/* 07836C 7F04383C AFBF0014 */ sw $ra, 0x14($sp) -/* 078370 7F043840 AFA5012C */ sw $a1, 0x12c($sp) -/* 078374 7F043844 C4820000 */ lwc1 $f2, ($a0) -/* 078378 7F043848 C48E0004 */ lwc1 $f14, 4($a0) -/* 07837C 7F04384C C4800008 */ lwc1 $f0, 8($a0) -/* 078380 7F043850 46021102 */ mul.s $f4, $f2, $f2 -/* 078384 7F043854 AFA40128 */ sw $a0, 0x128($sp) -/* 078388 7F043858 460E7182 */ mul.s $f6, $f14, $f14 -/* 07838C 7F04385C 46062200 */ add.s $f8, $f4, $f6 -/* 078390 7F043860 46000282 */ mul.s $f10, $f0, $f0 -/* 078394 7F043864 0C007DF8 */ jal sqrtf -/* 078398 7F043868 46085300 */ add.s $f12, $f10, $f8 -/* 07839C 7F04386C 8FA40128 */ lw $a0, 0x128($sp) -/* 0783A0 7F043870 44801000 */ mtc1 $zero, $f2 -/* 0783A4 7F043874 C4840000 */ lwc1 $f4, ($a0) -/* 0783A8 7F043878 C4860004 */ lwc1 $f6, 4($a0) -/* 0783AC 7F04387C C48A0008 */ lwc1 $f10, 8($a0) -/* 0783B0 7F043880 46002383 */ div.s $f14, $f4, $f0 -/* 0783B4 7F043884 46003483 */ div.s $f18, $f6, $f0 -/* 0783B8 7F043888 46027032 */ c.eq.s $f14, $f2 -/* 0783BC 7F04388C 00000000 */ nop -/* 0783C0 7F043890 4500000C */ bc1f .L7F0438C4 -/* 0783C4 7F043894 46005403 */ div.s $f16, $f10, $f0 -/* 0783C8 7F043898 46028032 */ c.eq.s $f16, $f2 -/* 0783CC 7F04389C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0783D0 7F0438A0 45000008 */ bc1f .L7F0438C4 -/* 0783D4 7F0438A4 00000000 */ nop -/* 0783D8 7F0438A8 44814000 */ mtc1 $at, $f8 -/* 0783DC 7F0438AC E7A20124 */ swc1 $f2, 0x124($sp) -/* 0783E0 7F0438B0 E7A20120 */ swc1 $f2, 0x120($sp) -/* 0783E4 7F0438B4 E7B2011C */ swc1 $f18, 0x11c($sp) -/* 0783E8 7F0438B8 E7A20114 */ swc1 $f2, 0x114($sp) -/* 0783EC 7F0438BC 10000016 */ b .L7F043918 -/* 0783F0 7F0438C0 E7A80118 */ swc1 $f8, 0x118($sp) -.L7F0438C4: -/* 0783F4 7F0438C4 460E7102 */ mul.s $f4, $f14, $f14 -/* 0783F8 7F0438C8 E7AE010C */ swc1 $f14, 0x10c($sp) -/* 0783FC 7F0438CC E7B00104 */ swc1 $f16, 0x104($sp) -/* 078400 7F0438D0 46108182 */ mul.s $f6, $f16, $f16 -/* 078404 7F0438D4 E7B20108 */ swc1 $f18, 0x108($sp) -/* 078408 7F0438D8 0C007DF8 */ jal sqrtf -/* 07840C 7F0438DC 46062300 */ add.s $f12, $f4, $f6 -/* 078410 7F0438E0 C7AE010C */ lwc1 $f14, 0x10c($sp) -/* 078414 7F0438E4 C7B00104 */ lwc1 $f16, 0x104($sp) -/* 078418 7F0438E8 C7B20108 */ lwc1 $f18, 0x108($sp) -/* 07841C 7F0438EC 46007083 */ div.s $f2, $f14, $f0 -/* 078420 7F0438F0 46000107 */ neg.s $f4, $f0 -/* 078424 7F0438F4 E7A40120 */ swc1 $f4, 0x120($sp) -/* 078428 7F0438F8 46008303 */ div.s $f12, $f16, $f0 -/* 07842C 7F0438FC 46029202 */ mul.s $f8, $f18, $f2 -/* 078430 7F043900 46001287 */ neg.s $f10, $f2 -/* 078434 7F043904 E7AA0114 */ swc1 $f10, 0x114($sp) -/* 078438 7F043908 E7A80124 */ swc1 $f8, 0x124($sp) -/* 07843C 7F04390C 460C9182 */ mul.s $f6, $f18, $f12 -/* 078440 7F043910 E7AC0118 */ swc1 $f12, 0x118($sp) -/* 078444 7F043914 E7A6011C */ swc1 $f6, 0x11c($sp) -.L7F043918: -/* 078448 7F043918 C7AC0118 */ lwc1 $f12, 0x118($sp) -/* 07844C 7F04391C 0FC16A8C */ jal convert_angle_using_inverse -/* 078450 7F043920 C7AE0114 */ lwc1 $f14, 0x114($sp) -/* 078454 7F043924 E7A000F4 */ swc1 $f0, 0xf4($sp) -/* 078458 7F043928 46000307 */ neg.s $f12, $f0 -/* 07845C 7F04392C 0FC1617F */ jal sub_GAME_7F0585FC -/* 078460 7F043930 27A500B0 */ addiu $a1, $sp, 0xb0 -/* 078464 7F043934 C7AA0124 */ lwc1 $f10, 0x124($sp) -/* 078468 7F043938 C7A80120 */ lwc1 $f8, 0x120($sp) -/* 07846C 7F04393C C7A4011C */ lwc1 $f4, 0x11c($sp) -/* 078470 7F043940 27A400B0 */ addiu $a0, $sp, 0xb0 -/* 078474 7F043944 27A50024 */ addiu $a1, $sp, 0x24 -/* 078478 7F043948 E7AA0024 */ swc1 $f10, 0x24($sp) -/* 07847C 7F04394C E7A80028 */ swc1 $f8, 0x28($sp) -/* 078480 7F043950 0FC160F6 */ jal sub_GAME_7F0583D8 -/* 078484 7F043954 E7A4002C */ swc1 $f4, 0x2c($sp) -/* 078488 7F043958 C7AC0024 */ lwc1 $f12, 0x24($sp) -/* 07848C 7F04395C 0FC16A8C */ jal convert_angle_using_inverse -/* 078490 7F043960 C7AE0028 */ lwc1 $f14, 0x28($sp) -/* 078494 7F043964 3C018005 */ lui $at, %hi(D_80052A8C) -/* 078498 7F043968 C4262A8C */ lwc1 $f6, %lo(D_80052A8C)($at) -/* 07849C 7F04396C C7AA00F4 */ lwc1 $f10, 0xf4($sp) -/* 0784A0 7F043970 E7A000F0 */ swc1 $f0, 0xf0($sp) -/* 0784A4 7F043974 27A50070 */ addiu $a1, $sp, 0x70 -/* 0784A8 7F043978 0FC1617F */ jal sub_GAME_7F0585FC -/* 0784AC 7F04397C 460A3300 */ add.s $f12, $f6, $f10 -/* 0784B0 7F043980 3C018005 */ lui $at, %hi(D_80052A90) -/* 0784B4 7F043984 C4282A90 */ lwc1 $f8, %lo(D_80052A90)($at) -/* 0784B8 7F043988 C7A400F0 */ lwc1 $f4, 0xf0($sp) -/* 0784BC 7F04398C 27A50030 */ addiu $a1, $sp, 0x30 -/* 0784C0 7F043990 0FC1615C */ jal sub_GAME_7F058570 -/* 0784C4 7F043994 46044301 */ sub.s $f12, $f8, $f4 -/* 0784C8 7F043998 27A40070 */ addiu $a0, $sp, 0x70 -/* 0784CC 7F04399C 27A50030 */ addiu $a1, $sp, 0x30 -/* 0784D0 7F0439A0 0FC16032 */ jal sub_GAME_7F0580C8 -/* 0784D4 7F0439A4 8FA6012C */ lw $a2, 0x12c($sp) -/* 0784D8 7F0439A8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0784DC 7F0439AC 27BD0128 */ addiu $sp, $sp, 0x128 -/* 0784E0 7F0439B0 03E00008 */ jr $ra -/* 0784E4 7F0439B4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0439B8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0439B8 -/* 0784E8 7F0439B8 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 0784EC 7F0439BC AFB00018 */ sw $s0, 0x18($sp) -/* 0784F0 7F0439C0 00808025 */ move $s0, $a0 -/* 0784F4 7F0439C4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0784F8 7F0439C8 AFA5006C */ sw $a1, 0x6c($sp) -/* 0784FC 7F0439CC AFA60070 */ sw $a2, 0x70($sp) -/* 078500 7F0439D0 27A50028 */ addiu $a1, $sp, 0x28 -/* 078504 7F0439D4 0FC10E0E */ jal sub_GAME_7F043838 -/* 078508 7F0439D8 00E02025 */ move $a0, $a3 -/* 07850C 7F0439DC 8E0E0014 */ lw $t6, 0x14($s0) -/* 078510 7F0439E0 27A50028 */ addiu $a1, $sp, 0x28 -/* 078514 7F0439E4 0FC1629F */ jal matrix_multiply_A1_by_F12 -/* 078518 7F0439E8 C5CC0014 */ lwc1 $f12, 0x14($t6) -/* 07851C 7F0439EC 02002025 */ move $a0, $s0 -/* 078520 7F0439F0 8FA5006C */ lw $a1, 0x6c($sp) -/* 078524 7F0439F4 27A60028 */ addiu $a2, $sp, 0x28 -/* 078528 7F0439F8 0FC101D5 */ jal sub_GAME_7F040754 -/* 07852C 7F0439FC 8FA70070 */ lw $a3, 0x70($sp) -/* 078530 7F043A00 8E0F0014 */ lw $t7, 0x14($s0) -/* 078534 7F043A04 0FC0FFFE */ jal sub_GAME_7F03FFF8 -/* 078538 7F043A08 8DE40008 */ lw $a0, 8($t7) -/* 07853C 7F043A0C 0FC0FA19 */ jal sub_GAME_7F03E864 -/* 078540 7F043A10 00402025 */ move $a0, $v0 -/* 078544 7F043A14 C6060028 */ lwc1 $f6, 0x28($s0) -/* 078548 7F043A18 C6040058 */ lwc1 $f4, 0x58($s0) -/* 07854C 7F043A1C C612002C */ lwc1 $f18, 0x2c($s0) -/* 078550 7F043A20 46060202 */ mul.s $f8, $f0, $f6 -/* 078554 7F043A24 C610005C */ lwc1 $f16, 0x5c($s0) -/* 078558 7F043A28 02002025 */ move $a0, $s0 -/* 07855C 7F043A2C 46120182 */ mul.s $f6, $f0, $f18 -/* 078560 7F043A30 46082281 */ sub.s $f10, $f4, $f8 -/* 078564 7F043A34 C6080060 */ lwc1 $f8, 0x60($s0) -/* 078568 7F043A38 46068101 */ sub.s $f4, $f16, $f6 -/* 07856C 7F043A3C E60A0058 */ swc1 $f10, 0x58($s0) -/* 078570 7F043A40 C60A0030 */ lwc1 $f10, 0x30($s0) -/* 078574 7F043A44 E604005C */ swc1 $f4, 0x5c($s0) -/* 078578 7F043A48 460A0482 */ mul.s $f18, $f0, $f10 -/* 07857C 7F043A4C 46124401 */ sub.s $f16, $f8, $f18 -/* 078580 7F043A50 0FC10121 */ jal sub_GAME_7F040484 -/* 078584 7F043A54 E6100060 */ swc1 $f16, 0x60($s0) -/* 078588 7F043A58 8FBF001C */ lw $ra, 0x1c($sp) -/* 07858C 7F043A5C 8FB00018 */ lw $s0, 0x18($sp) -/* 078590 7F043A60 27BD0068 */ addiu $sp, $sp, 0x68 -/* 078594 7F043A64 03E00008 */ jr $ra -/* 078598 7F043A68 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F043A6C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F043A6C -/* 07859C 7F043A6C 27BDFF10 */ addiu $sp, $sp, -0xf0 -/* 0785A0 7F043A70 AFBF001C */ sw $ra, 0x1c($sp) -/* 0785A4 7F043A74 AFB10018 */ sw $s1, 0x18($sp) -/* 0785A8 7F043A78 AFB00014 */ sw $s0, 0x14($sp) -/* 0785AC 7F043A7C AFA500F4 */ sw $a1, 0xf4($sp) -/* 0785B0 7F043A80 AFA600F8 */ sw $a2, 0xf8($sp) -/* 0785B4 7F043A84 AFA700FC */ sw $a3, 0xfc($sp) -/* 0785B8 7F043A88 90AF0001 */ lbu $t7, 1($a1) -/* 0785BC 7F043A8C 00808825 */ move $s1, $a0 -/* 0785C0 7F043A90 31F80002 */ andi $t8, $t7, 2 -/* 0785C4 7F043A94 53000034 */ beql $t8, $zero, .L7F043B68 -/* 0785C8 7F043A98 00001025 */ move $v0, $zero -/* 0785CC 7F043A9C 0FC0FFA6 */ jal sub_GAME_7F03FE98 -/* 0785D0 7F043AA0 8C900004 */ lw $s0, 4($a0) -/* 0785D4 7F043AA4 1040002F */ beqz $v0, .L7F043B64 -/* 0785D8 7F043AA8 AE02006C */ sw $v0, 0x6c($s0) -/* 0785DC 7F043AAC 8FA400F8 */ lw $a0, 0xf8($sp) -/* 0785E0 7F043AB0 8FA500FC */ lw $a1, 0xfc($sp) -/* 0785E4 7F043AB4 0FC1B198 */ jal sub_GAME_7F06C660 -/* 0785E8 7F043AB8 00003025 */ move $a2, $zero -/* 0785EC 7F043ABC AFA20028 */ sw $v0, 0x28($sp) -/* 0785F0 7F043AC0 8E190064 */ lw $t9, 0x64($s0) -/* 0785F4 7F043AC4 02202025 */ move $a0, $s1 -/* 0785F8 7F043AC8 37280040 */ ori $t0, $t9, 0x40 -/* 0785FC 7F043ACC 0FC0F863 */ jal sub_GAME_7F03E18C -/* 078600 7F043AD0 AE080064 */ sw $t0, 0x64($s0) -/* 078604 7F043AD4 0FC0E94E */ jal sub_GAME_7F03A538 -/* 078608 7F043AD8 02202025 */ move $a0, $s1 -/* 07860C 7F043ADC 0FC0E905 */ jal unset_stateflag_0x04_for_posdata -/* 078610 7F043AE0 02202025 */ move $a0, $s1 -/* 078614 7F043AE4 8FA900F8 */ lw $t1, 0xf8($sp) -/* 078618 7F043AE8 8E0A0014 */ lw $t2, 0x14($s0) -/* 07861C 7F043AEC 02202025 */ move $a0, $s1 -/* 078620 7F043AF0 AD490018 */ sw $t1, 0x18($t2) -/* 078624 7F043AF4 8E0C0014 */ lw $t4, 0x14($s0) -/* 078628 7F043AF8 8FAB00FC */ lw $t3, 0xfc($sp) -/* 07862C 7F043AFC AD8B001C */ sw $t3, 0x1c($t4) -/* 078630 7F043B00 0FC0E969 */ jal sub_GAME_7F03A5A4 -/* 078634 7F043B04 8FA500F4 */ lw $a1, 0xf4($sp) -/* 078638 7F043B08 27B100AC */ addiu $s1, $sp, 0xac -/* 07863C 7F043B0C 02202825 */ move $a1, $s1 -/* 078640 7F043B10 0FC16008 */ jal sub_GAME_7F058020 -/* 078644 7F043B14 26040018 */ addiu $a0, $s0, 0x18 -/* 078648 7F043B18 26040058 */ addiu $a0, $s0, 0x58 -/* 07864C 7F043B1C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 078650 7F043B20 02202825 */ move $a1, $s1 -/* 078654 7F043B24 0FC1E111 */ jal sub_GAME_7F078444 -/* 078658 7F043B28 00000000 */ nop -/* 07865C 7F043B2C 00402025 */ move $a0, $v0 -/* 078660 7F043B30 8FA50028 */ lw $a1, 0x28($sp) -/* 078664 7F043B34 0FC16063 */ jal sub_GAME_7F05818C -/* 078668 7F043B38 27A6006C */ addiu $a2, $sp, 0x6c -/* 07866C 7F043B3C 27A4006C */ addiu $a0, $sp, 0x6c -/* 078670 7F043B40 0FC167EE */ jal sub_GAME_7F059FB8 -/* 078674 7F043B44 27A5002C */ addiu $a1, $sp, 0x2c -/* 078678 7F043B48 8E06006C */ lw $a2, 0x6c($s0) -/* 07867C 7F043B4C 27A4002C */ addiu $a0, $sp, 0x2c -/* 078680 7F043B50 02202825 */ move $a1, $s1 -/* 078684 7F043B54 0FC16063 */ jal sub_GAME_7F05818C -/* 078688 7F043B58 24C60004 */ addiu $a2, $a2, 4 -/* 07868C 7F043B5C 10000002 */ b .L7F043B68 -/* 078690 7F043B60 24020001 */ li $v0, 1 -.L7F043B64: -/* 078694 7F043B64 00001025 */ move $v0, $zero -.L7F043B68: -/* 078698 7F043B68 8FBF001C */ lw $ra, 0x1c($sp) -/* 07869C 7F043B6C 8FB00014 */ lw $s0, 0x14($sp) -/* 0786A0 7F043B70 8FB10018 */ lw $s1, 0x18($sp) -/* 0786A4 7F043B74 03E00008 */ jr $ra -/* 0786A8 7F043B78 27BD00F0 */ addiu $sp, $sp, 0xf0 -) -#endif - - - - - -#ifdef NONMATCHING -void generate_explosion_at_position(void) { - -} -#else - -#ifdef VERSION_US -GLOBAL_ASM( -.text -glabel generate_explosion_at_position -/* 0786AC 7F043B7C 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 0786B0 7F043B80 AFBF002C */ sw $ra, 0x2c($sp) -/* 0786B4 7F043B84 AFB00028 */ sw $s0, 0x28($sp) -/* 0786B8 7F043B88 AFA50064 */ sw $a1, 0x64($sp) -/* 0786BC 7F043B8C 8C880004 */ lw $t0, 4($a0) -/* 0786C0 7F043B90 3C010006 */ lui $at, 6 -/* 0786C4 7F043B94 00808025 */ move $s0, $a0 -/* 0786C8 7F043B98 8D0E0064 */ lw $t6, 0x64($t0) -/* 0786CC 7F043B9C 2619002C */ addiu $t9, $s0, 0x2c -/* 0786D0 7F043BA0 01C17824 */ and $t7, $t6, $at -/* 0786D4 7F043BA4 000FC442 */ srl $t8, $t7, 0x11 -/* 0786D8 7F043BA8 AFB80058 */ sw $t8, 0x58($sp) -/* 0786DC 7F043BAC 8C86001C */ lw $a2, 0x1c($a0) -/* 0786E0 7F043BB0 00002025 */ move $a0, $zero -/* 0786E4 7F043BB4 50C00056 */ beql $a2, $zero, .L7F043D10 -/* 0786E8 7F043BB8 8D020008 */ lw $v0, 8($t0) -/* 0786EC 7F043BBC 8CC2001C */ lw $v0, 0x1c($a2) -/* 0786F0 7F043BC0 00C01825 */ move $v1, $a2 -/* 0786F4 7F043BC4 50400006 */ beql $v0, $zero, .L7F043BE0 -/* 0786F8 7F043BC8 8C790014 */ lw $t9, 0x14($v1) -/* 0786FC 7F043BCC 00401825 */ move $v1, $v0 -.L7F043BD0: -/* 078700 7F043BD0 8C42001C */ lw $v0, 0x1c($v0) -/* 078704 7F043BD4 5440FFFE */ bnezl $v0, .L7F043BD0 -/* 078708 7F043BD8 00401825 */ move $v1, $v0 -/* 07870C 7F043BDC 8C790014 */ lw $t9, 0x14($v1) -.L7F043BE0: -/* 078710 7F043BE0 AFB90050 */ sw $t9, 0x50($sp) -/* 078714 7F043BE4 92090001 */ lbu $t1, 1($s0) -/* 078718 7F043BE8 312A0002 */ andi $t2, $t1, 2 -/* 07871C 7F043BEC 51400014 */ beql $t2, $zero, .L7F043C40 -/* 078720 7F043BF0 C46A0008 */ lwc1 $f10, 8($v1) -/* 078724 7F043BF4 8D040014 */ lw $a0, 0x14($t0) -/* 078728 7F043BF8 AFA8005C */ sw $t0, 0x5c($sp) -/* 07872C 7F043BFC 0FC1B1A8 */ jal getsubmatrix -/* 078730 7F043C00 AFA30054 */ sw $v1, 0x54($sp) -/* 078734 7F043C04 C4440030 */ lwc1 $f4, 0x30($v0) -/* 078738 7F043C08 E7A40044 */ swc1 $f4, 0x44($sp) -/* 07873C 7F043C0C C4460034 */ lwc1 $f6, 0x34($v0) -/* 078740 7F043C10 E7A60048 */ swc1 $f6, 0x48($sp) -/* 078744 7F043C14 C4480038 */ lwc1 $f8, 0x38($v0) -/* 078748 7F043C18 0FC1E111 */ jal sub_GAME_7F078444 -/* 07874C 7F043C1C E7A8004C */ swc1 $f8, 0x4c($sp) -/* 078750 7F043C20 27B00044 */ addiu $s0, $sp, 0x44 -/* 078754 7F043C24 02002825 */ move $a1, $s0 -/* 078758 7F043C28 0FC1611D */ jal sub_GAME_7F058474 -/* 07875C 7F043C2C 00402025 */ move $a0, $v0 -/* 078760 7F043C30 8FA30054 */ lw $v1, 0x54($sp) -/* 078764 7F043C34 10000008 */ b .L7F043C58 -/* 078768 7F043C38 8FA8005C */ lw $t0, 0x5c($sp) -/* 07876C 7F043C3C C46A0008 */ lwc1 $f10, 8($v1) -.L7F043C40: -/* 078770 7F043C40 27B00044 */ addiu $s0, $sp, 0x44 -/* 078774 7F043C44 E7AA0044 */ swc1 $f10, 0x44($sp) -/* 078778 7F043C48 C470000C */ lwc1 $f16, 0xc($v1) -/* 07877C 7F043C4C E7B00048 */ swc1 $f16, 0x48($sp) -/* 078780 7F043C50 C4720010 */ lwc1 $f18, 0x10($v1) -/* 078784 7F043C54 E7B2004C */ swc1 $f18, 0x4c($sp) -.L7F043C58: -/* 078788 7F043C58 906B0001 */ lbu $t3, 1($v1) -/* 07878C 7F043C5C 27A40050 */ addiu $a0, $sp, 0x50 -/* 078790 7F043C60 8FA70044 */ lw $a3, 0x44($sp) -/* 078794 7F043C64 316C0008 */ andi $t4, $t3, 8 -/* 078798 7F043C68 1580001A */ bnez $t4, .L7F043CD4 -/* 07879C 7F043C6C C7A4004C */ lwc1 $f4, 0x4c($sp) -/* 0787A0 7F043C70 8C650008 */ lw $a1, 8($v1) -/* 0787A4 7F043C74 8C660010 */ lw $a2, 0x10($v1) -/* 0787A8 7F043C78 AFA8005C */ sw $t0, 0x5c($sp) -/* 0787AC 7F043C7C AFA30054 */ sw $v1, 0x54($sp) -/* 0787B0 7F043C80 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 0787B4 7F043C84 E7A40010 */ swc1 $f4, 0x10($sp) -/* 0787B8 7F043C88 8FA30054 */ lw $v1, 0x54($sp) -/* 0787BC 7F043C8C 10400011 */ beqz $v0, .L7F043CD4 -/* 0787C0 7F043C90 8FA8005C */ lw $t0, 0x5c($sp) -/* 0787C4 7F043C94 8D0D0008 */ lw $t5, 8($t0) -/* 0787C8 7F043C98 8FB80058 */ lw $t8, 0x58($sp) -/* 0787CC 7F043C9C 2479002C */ addiu $t9, $v1, 0x2c -/* 0787D0 7F043CA0 31AE000E */ andi $t6, $t5, 0xe -/* 0787D4 7F043CA4 2DCF0001 */ sltiu $t7, $t6, 1 -/* 0787D8 7F043CA8 AFAF0010 */ sw $t7, 0x10($sp) -/* 0787DC 7F043CAC AFB90018 */ sw $t9, 0x18($sp) -/* 0787E0 7F043CB0 AFA0001C */ sw $zero, 0x1c($sp) -/* 0787E4 7F043CB4 00002025 */ move $a0, $zero -/* 0787E8 7F043CB8 02002825 */ move $a1, $s0 -/* 0787EC 7F043CBC 8FA60050 */ lw $a2, 0x50($sp) -/* 0787F0 7F043CC0 87A70066 */ lh $a3, 0x66($sp) -/* 0787F4 7F043CC4 0FC27094 */ jal sub_GAME_7F09C250 -/* 0787F8 7F043CC8 AFB80014 */ sw $t8, 0x14($sp) -/* 0787FC 7F043CCC 10000024 */ b .L7F043D60 -/* 078800 7F043CD0 8FBF002C */ lw $ra, 0x2c($sp) -.L7F043CD4: -/* 078804 7F043CD4 8FA90058 */ lw $t1, 0x58($sp) -/* 078808 7F043CD8 246A002C */ addiu $t2, $v1, 0x2c -/* 07880C 7F043CDC 240B0001 */ li $t3, 1 -/* 078810 7F043CE0 AFAB001C */ sw $t3, 0x1c($sp) -/* 078814 7F043CE4 AFAA0018 */ sw $t2, 0x18($sp) -/* 078818 7F043CE8 00002025 */ move $a0, $zero -/* 07881C 7F043CEC 02002825 */ move $a1, $s0 -/* 078820 7F043CF0 8FA60050 */ lw $a2, 0x50($sp) -/* 078824 7F043CF4 87A70066 */ lh $a3, 0x66($sp) -/* 078828 7F043CF8 AFA00010 */ sw $zero, 0x10($sp) -/* 07882C 7F043CFC 0FC27094 */ jal sub_GAME_7F09C250 -/* 078830 7F043D00 AFA90014 */ sw $t1, 0x14($sp) -/* 078834 7F043D04 10000016 */ b .L7F043D60 -/* 078838 7F043D08 8FBF002C */ lw $ra, 0x2c($sp) -/* 07883C 7F043D0C 8D020008 */ lw $v0, 8($t0) -.L7F043D10: -/* 078840 7F043D10 304C000E */ andi $t4, $v0, 0xe -/* 078844 7F043D14 2D820001 */ sltiu $v0, $t4, 1 -/* 078848 7F043D18 50400005 */ beql $v0, $zero, .L7F043D30 -/* 07884C 7F043D1C 8FB80058 */ lw $t8, 0x58($sp) -/* 078850 7F043D20 92020001 */ lbu $v0, 1($s0) -/* 078854 7F043D24 304E0008 */ andi $t6, $v0, 8 -/* 078858 7F043D28 2DC20001 */ sltiu $v0, $t6, 1 -/* 07885C 7F043D2C 8FB80058 */ lw $t8, 0x58($sp) -.L7F043D30: -/* 078860 7F043D30 8E060014 */ lw $a2, 0x14($s0) -/* 078864 7F043D34 AFB90018 */ sw $t9, 0x18($sp) -/* 078868 7F043D38 AFA20010 */ sw $v0, 0x10($sp) -/* 07886C 7F043D3C AFB80014 */ sw $t8, 0x14($sp) -/* 078870 7F043D40 92090001 */ lbu $t1, 1($s0) -/* 078874 7F043D44 25050058 */ addiu $a1, $t0, 0x58 -/* 078878 7F043D48 87A70066 */ lh $a3, 0x66($sp) -/* 07887C 7F043D4C 312A0008 */ andi $t2, $t1, 8 -/* 078880 7F043D50 000A582B */ sltu $t3, $zero, $t2 -/* 078884 7F043D54 0FC27094 */ jal sub_GAME_7F09C250 -/* 078888 7F043D58 AFAB001C */ sw $t3, 0x1c($sp) -/* 07888C 7F043D5C 8FBF002C */ lw $ra, 0x2c($sp) -.L7F043D60: -/* 078890 7F043D60 8FB00028 */ lw $s0, 0x28($sp) -/* 078894 7F043D64 27BD0060 */ addiu $sp, $sp, 0x60 -/* 078898 7F043D68 03E00008 */ jr $ra -/* 07889C 7F043D6C 00000000 */ nop -) -#endif - -#ifdef VERSION_JP -GLOBAL_ASM( -.text -glabel generate_explosion_at_position -/* 0789EC 7F043E7C 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 0789F0 7F043E80 AFBF002C */ sw $ra, 0x2c($sp) -/* 0789F4 7F043E84 AFB00028 */ sw $s0, 0x28($sp) -/* 0789F8 7F043E88 AFA50064 */ sw $a1, 0x64($sp) -/* 0789FC 7F043E8C 8C880004 */ lw $t0, 4($a0) -/* 078A00 7F043E90 3C010006 */ lui $at, 6 -/* 078A04 7F043E94 00808025 */ move $s0, $a0 -/* 078A08 7F043E98 8D0E0064 */ lw $t6, 0x64($t0) -/* 078A0C 7F043E9C 2619002C */ addiu $t9, $s0, 0x2c -/* 078A10 7F043EA0 01C17824 */ and $t7, $t6, $at -/* 078A14 7F043EA4 000FC442 */ srl $t8, $t7, 0x11 -/* 078A18 7F043EA8 AFB80058 */ sw $t8, 0x58($sp) -/* 078A1C 7F043EAC 8C86001C */ lw $a2, 0x1c($a0) -/* 078A20 7F043EB0 00002025 */ move $a0, $zero -/* 078A24 7F043EB4 50C00056 */ beql $a2, $zero, .L7F044010 -/* 078A28 7F043EB8 8D020008 */ lw $v0, 8($t0) -/* 078A2C 7F043EBC 8CC2001C */ lw $v0, 0x1c($a2) -/* 078A30 7F043EC0 00C01825 */ move $v1, $a2 -/* 078A34 7F043EC4 50400006 */ beql $v0, $zero, .L7F043EE0 -/* 078A38 7F043EC8 8C790014 */ lw $t9, 0x14($v1) -/* 078A3C 7F043ECC 00401825 */ move $v1, $v0 -.L7F043ED0: -/* 078A40 7F043ED0 8C42001C */ lw $v0, 0x1c($v0) -/* 078A44 7F043ED4 5440FFFE */ bnezl $v0, .L7F043ED0 -/* 078A48 7F043ED8 00401825 */ move $v1, $v0 -/* 078A4C 7F043EDC 8C790014 */ lw $t9, 0x14($v1) -.L7F043EE0: -/* 078A50 7F043EE0 AFB9004C */ sw $t9, 0x4c($sp) -/* 078A54 7F043EE4 92090001 */ lbu $t1, 1($s0) -/* 078A58 7F043EE8 312A0002 */ andi $t2, $t1, 2 -/* 078A5C 7F043EEC 51400014 */ beql $t2, $zero, .L7F043F40 -/* 078A60 7F043EF0 C46A0008 */ lwc1 $f10, 8($v1) -/* 078A64 7F043EF4 8D040014 */ lw $a0, 0x14($t0) -/* 078A68 7F043EF8 AFA8005C */ sw $t0, 0x5c($sp) -/* 078A6C 7F043EFC 0FC1B324 */ jal getsubmatrix -/* 078A70 7F043F00 AFA30050 */ sw $v1, 0x50($sp) -/* 078A74 7F043F04 C4440030 */ lwc1 $f4, 0x30($v0) -/* 078A78 7F043F08 E7A40040 */ swc1 $f4, 0x40($sp) -/* 078A7C 7F043F0C C4460034 */ lwc1 $f6, 0x34($v0) -/* 078A80 7F043F10 E7A60044 */ swc1 $f6, 0x44($sp) -/* 078A84 7F043F14 C4480038 */ lwc1 $f8, 0x38($v0) -/* 078A88 7F043F18 0FC1E28D */ jal sub_GAME_7F078444 -/* 078A8C 7F043F1C E7A80048 */ swc1 $f8, 0x48($sp) -/* 078A90 7F043F20 27B00040 */ addiu $s0, $sp, 0x40 -/* 078A94 7F043F24 02002825 */ move $a1, $s0 -/* 078A98 7F043F28 0FC16265 */ jal sub_GAME_7F058474 -/* 078A9C 7F043F2C 00402025 */ move $a0, $v0 -/* 078AA0 7F043F30 8FA30050 */ lw $v1, 0x50($sp) -/* 078AA4 7F043F34 10000008 */ b .L7F043F58 -/* 078AA8 7F043F38 8FA8005C */ lw $t0, 0x5c($sp) -/* 078AAC 7F043F3C C46A0008 */ lwc1 $f10, 8($v1) -.L7F043F40: -/* 078AB0 7F043F40 27B00040 */ addiu $s0, $sp, 0x40 -/* 078AB4 7F043F44 E7AA0040 */ swc1 $f10, 0x40($sp) -/* 078AB8 7F043F48 C470000C */ lwc1 $f16, 0xc($v1) -/* 078ABC 7F043F4C E7B00044 */ swc1 $f16, 0x44($sp) -/* 078AC0 7F043F50 C4720010 */ lwc1 $f18, 0x10($v1) -/* 078AC4 7F043F54 E7B20048 */ swc1 $f18, 0x48($sp) -.L7F043F58: -/* 078AC8 7F043F58 906B0001 */ lbu $t3, 1($v1) -/* 078ACC 7F043F5C 27A4004C */ addiu $a0, $sp, 0x4c -/* 078AD0 7F043F60 8FA70040 */ lw $a3, 0x40($sp) -/* 078AD4 7F043F64 316C0008 */ andi $t4, $t3, 8 -/* 078AD8 7F043F68 1580001A */ bnez $t4, .L7F043FD4 -/* 078ADC 7F043F6C C7A40048 */ lwc1 $f4, 0x48($sp) -/* 078AE0 7F043F70 8C650008 */ lw $a1, 8($v1) -/* 078AE4 7F043F74 8C660010 */ lw $a2, 0x10($v1) -/* 078AE8 7F043F78 AFA8005C */ sw $t0, 0x5c($sp) -/* 078AEC 7F043F7C AFA30050 */ sw $v1, 0x50($sp) -/* 078AF0 7F043F80 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 -/* 078AF4 7F043F84 E7A40010 */ swc1 $f4, 0x10($sp) -/* 078AF8 7F043F88 8FA30050 */ lw $v1, 0x50($sp) -/* 078AFC 7F043F8C 10400011 */ beqz $v0, .L7F043FD4 -/* 078B00 7F043F90 8FA8005C */ lw $t0, 0x5c($sp) -/* 078B04 7F043F94 8D0D0008 */ lw $t5, 8($t0) -/* 078B08 7F043F98 8FB80058 */ lw $t8, 0x58($sp) -/* 078B0C 7F043F9C 2479002C */ addiu $t9, $v1, 0x2c -/* 078B10 7F043FA0 31AE000E */ andi $t6, $t5, 0xe -/* 078B14 7F043FA4 2DCF0001 */ sltiu $t7, $t6, 1 -/* 078B18 7F043FA8 AFAF0010 */ sw $t7, 0x10($sp) -/* 078B1C 7F043FAC AFB90018 */ sw $t9, 0x18($sp) -/* 078B20 7F043FB0 AFA0001C */ sw $zero, 0x1c($sp) -/* 078B24 7F043FB4 00002025 */ move $a0, $zero -/* 078B28 7F043FB8 02002825 */ move $a1, $s0 -/* 078B2C 7F043FBC 8FA6004C */ lw $a2, 0x4c($sp) -/* 078B30 7F043FC0 87A70066 */ lh $a3, 0x66($sp) -/* 078B34 7F043FC4 0FC2737C */ jal sub_GAME_7F09C250 -/* 078B38 7F043FC8 AFB80014 */ sw $t8, 0x14($sp) -/* 078B3C 7F043FCC 10000024 */ b .L7F044060 -/* 078B40 7F043FD0 00401825 */ move $v1, $v0 -.L7F043FD4: -/* 078B44 7F043FD4 8FA90058 */ lw $t1, 0x58($sp) -/* 078B48 7F043FD8 246A002C */ addiu $t2, $v1, 0x2c -/* 078B4C 7F043FDC 240B0001 */ li $t3, 1 -/* 078B50 7F043FE0 AFAB001C */ sw $t3, 0x1c($sp) -/* 078B54 7F043FE4 AFAA0018 */ sw $t2, 0x18($sp) -/* 078B58 7F043FE8 00002025 */ move $a0, $zero -/* 078B5C 7F043FEC 02002825 */ move $a1, $s0 -/* 078B60 7F043FF0 8FA6004C */ lw $a2, 0x4c($sp) -/* 078B64 7F043FF4 87A70066 */ lh $a3, 0x66($sp) -/* 078B68 7F043FF8 AFA00010 */ sw $zero, 0x10($sp) -/* 078B6C 7F043FFC 0FC2737C */ jal sub_GAME_7F09C250 -/* 078B70 7F044000 AFA90014 */ sw $t1, 0x14($sp) -/* 078B74 7F044004 10000016 */ b .L7F044060 -/* 078B78 7F044008 00401825 */ move $v1, $v0 -/* 078B7C 7F04400C 8D020008 */ lw $v0, 8($t0) -.L7F044010: -/* 078B80 7F044010 304C000E */ andi $t4, $v0, 0xe -/* 078B84 7F044014 2D820001 */ sltiu $v0, $t4, 1 -/* 078B88 7F044018 50400005 */ beql $v0, $zero, .L7F044030 -/* 078B8C 7F04401C 8FB80058 */ lw $t8, 0x58($sp) -/* 078B90 7F044020 92020001 */ lbu $v0, 1($s0) -/* 078B94 7F044024 304E0008 */ andi $t6, $v0, 8 -/* 078B98 7F044028 2DC20001 */ sltiu $v0, $t6, 1 -/* 078B9C 7F04402C 8FB80058 */ lw $t8, 0x58($sp) -.L7F044030: -/* 078BA0 7F044030 8E060014 */ lw $a2, 0x14($s0) -/* 078BA4 7F044034 AFB90018 */ sw $t9, 0x18($sp) -/* 078BA8 7F044038 AFA20010 */ sw $v0, 0x10($sp) -/* 078BAC 7F04403C AFB80014 */ sw $t8, 0x14($sp) -/* 078BB0 7F044040 92090001 */ lbu $t1, 1($s0) -/* 078BB4 7F044044 25050058 */ addiu $a1, $t0, 0x58 -/* 078BB8 7F044048 87A70066 */ lh $a3, 0x66($sp) -/* 078BBC 7F04404C 312A0008 */ andi $t2, $t1, 8 -/* 078BC0 7F044050 000A582B */ sltu $t3, $zero, $t2 -/* 078BC4 7F044054 0FC2737C */ jal sub_GAME_7F09C250 -/* 078BC8 7F044058 AFAB001C */ sw $t3, 0x1c($sp) -/* 078BCC 7F04405C 00401825 */ move $v1, $v0 -.L7F044060: -/* 078BD0 7F044060 8FBF002C */ lw $ra, 0x2c($sp) -/* 078BD4 7F044064 8FB00028 */ lw $s0, 0x28($sp) -/* 078BD8 7F044068 27BD0060 */ addiu $sp, $sp, 0x60 -/* 078BDC 7F04406C 03E00008 */ jr $ra -/* 078BE0 7F044070 00601025 */ move $v0, $v1 - -) -#endif - -#endif - - -#ifdef NONMATCHING -void handle_thrown_explosive_detonation(void) { - -} -#else - -#ifdef VERSION_US -GLOBAL_ASM( -.late_rodata -glabel D_80052A94 -.word 0x47742400 /*62500.0*/ -.text -glabel handle_thrown_explosive_detonation -/* 0788A0 7F043D70 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0788A4 7F043D74 AFBF0014 */ sw $ra, 0x14($sp) -/* 0788A8 7F043D78 AFA40020 */ sw $a0, 0x20($sp) -/* 0788AC 7F043D7C 8C870004 */ lw $a3, 4($a0) -/* 0788B0 7F043D80 0FC26C54 */ jal get_cur_playernum -/* 0788B4 7F043D84 AFA7001C */ sw $a3, 0x1c($sp) -/* 0788B8 7F043D88 0FC26D36 */ jal sub_GAME_7F09B4D8 -/* 0788BC 7F043D8C 00402025 */ move $a0, $v0 -/* 0788C0 7F043D90 14400117 */ bnez $v0, .L7F0441F0 -/* 0788C4 7F043D94 8FA7001C */ lw $a3, 0x1c($sp) -/* 0788C8 7F043D98 90E20003 */ lbu $v0, 3($a3) -/* 0788CC 7F043D9C 24010007 */ li $at, 7 -/* 0788D0 7F043DA0 5441000F */ bnel $v0, $at, .L7F043DE0 -/* 0788D4 7F043DA4 24010008 */ li $at, 8 -/* 0788D8 7F043DA8 8CEF0008 */ lw $t7, 8($a3) -/* 0788DC 7F043DAC 8FA40020 */ lw $a0, 0x20($sp) -/* 0788E0 7F043DB0 2405000C */ li $a1, 12 -/* 0788E4 7F043DB4 000FC0C0 */ sll $t8, $t7, 3 -/* 0788E8 7F043DB8 0703010E */ bgezl $t8, .L7F0441F4 -/* 0788EC 7F043DBC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0788F0 7F043DC0 0FC10EDF */ jal generate_explosion_at_position -/* 0788F4 7F043DC4 AFA7001C */ sw $a3, 0x1c($sp) -/* 0788F8 7F043DC8 8FA7001C */ lw $a3, 0x1c($sp) -/* 0788FC 7F043DCC 8CF90064 */ lw $t9, 0x64($a3) -/* 078900 7F043DD0 37280004 */ ori $t0, $t9, 4 -/* 078904 7F043DD4 10000106 */ b .L7F0441F0 -/* 078908 7F043DD8 ACE80064 */ sw $t0, 0x64($a3) -/* 07890C 7F043DDC 24010008 */ li $at, 8 -.L7F043DE0: -/* 078910 7F043DE0 14410103 */ bne $v0, $at, .L7F0441F0 -/* 078914 7F043DE4 8FA90020 */ lw $t1, 0x20($sp) -/* 078918 7F043DE8 8D260004 */ lw $a2, 4($t1) -/* 07891C 7F043DEC 2401001A */ li $at, 26 -/* 078920 7F043DF0 80C30080 */ lb $v1, 0x80($a2) -/* 078924 7F043DF4 10610003 */ beq $v1, $at, .L7F043E04 -/* 078928 7F043DF8 24010057 */ li $at, 87 -/* 07892C 7F043DFC 5461001B */ bnel $v1, $at, .L7F043E6C -/* 078930 7F043E00 24010056 */ li $at, 86 -.L7F043E04: -/* 078934 7F043E04 84C20082 */ lh $v0, 0x82($a2) -/* 078938 7F043E08 3C0A8005 */ lui $t2, %hi(clock_timer) -/* 07893C 7F043E0C 04420017 */ bltzl $v0, .L7F043E6C -/* 078940 7F043E10 24010056 */ li $at, 86 -/* 078944 7F043E14 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) -/* 078948 7F043E18 004A5823 */ subu $t3, $v0, $t2 -/* 07894C 7F043E1C A4CB0082 */ sh $t3, 0x82($a2) -/* 078950 7F043E20 84CC0082 */ lh $t4, 0x82($a2) -/* 078954 7F043E24 8FA40020 */ lw $a0, 0x20($sp) -/* 078958 7F043E28 058300F2 */ bgezl $t4, .L7F0441F4 -/* 07895C 7F043E2C 8FBF0014 */ lw $ra, 0x14($sp) -/* 078960 7F043E30 8CED000C */ lw $t5, 0xc($a3) -/* 078964 7F043E34 2405000D */ li $a1, 13 -/* 078968 7F043E38 000D7000 */ sll $t6, $t5, 0 -/* 07896C 7F043E3C 05C10003 */ bgez $t6, .L7F043E4C -/* 078970 7F043E40 00000000 */ nop -/* 078974 7F043E44 10000001 */ b .L7F043E4C -/* 078978 7F043E48 24050011 */ li $a1, 17 -.L7F043E4C: -/* 07897C 7F043E4C 0FC10EDF */ jal generate_explosion_at_position -/* 078980 7F043E50 AFA7001C */ sw $a3, 0x1c($sp) -/* 078984 7F043E54 8FA7001C */ lw $a3, 0x1c($sp) -/* 078988 7F043E58 8CEF0064 */ lw $t7, 0x64($a3) -/* 07898C 7F043E5C 35F80004 */ ori $t8, $t7, 4 -/* 078990 7F043E60 100000E3 */ b .L7F0441F0 -/* 078994 7F043E64 ACF80064 */ sw $t8, 0x64($a3) -/* 078998 7F043E68 24010056 */ li $at, 86 -.L7F043E6C: -/* 07899C 7F043E6C 54610014 */ bnel $v1, $at, .L7F043EC0 -/* 0789A0 7F043E70 24010022 */ li $at, 34 -/* 0789A4 7F043E74 84D90082 */ lh $t9, 0x82($a2) -/* 0789A8 7F043E78 8FA40020 */ lw $a0, 0x20($sp) -/* 0789AC 7F043E7C 572000DD */ bnezl $t9, .L7F0441F4 -/* 0789B0 7F043E80 8FBF0014 */ lw $ra, 0x14($sp) -/* 0789B4 7F043E84 8CE8000C */ lw $t0, 0xc($a3) -/* 0789B8 7F043E88 2405000D */ li $a1, 13 -/* 0789BC 7F043E8C 00084800 */ sll $t1, $t0, 0 -/* 0789C0 7F043E90 05210003 */ bgez $t1, .L7F043EA0 -/* 0789C4 7F043E94 00000000 */ nop -/* 0789C8 7F043E98 10000001 */ b .L7F043EA0 -/* 0789CC 7F043E9C 24050011 */ li $a1, 17 -.L7F043EA0: -/* 0789D0 7F043EA0 0FC10EDF */ jal generate_explosion_at_position -/* 0789D4 7F043EA4 AFA7001C */ sw $a3, 0x1c($sp) -/* 0789D8 7F043EA8 8FA7001C */ lw $a3, 0x1c($sp) -/* 0789DC 7F043EAC 8CEA0064 */ lw $t2, 0x64($a3) -/* 0789E0 7F043EB0 354B0004 */ ori $t3, $t2, 4 -/* 0789E4 7F043EB4 100000CE */ b .L7F0441F0 -/* 0789E8 7F043EB8 ACEB0064 */ sw $t3, 0x64($a3) -/* 0789EC 7F043EBC 24010022 */ li $at, 34 -.L7F043EC0: -/* 0789F0 7F043EC0 54610014 */ bnel $v1, $at, .L7F043F14 -/* 0789F4 7F043EC4 2401001B */ li $at, 27 -/* 0789F8 7F043EC8 84CC0082 */ lh $t4, 0x82($a2) -/* 0789FC 7F043ECC 8FA40020 */ lw $a0, 0x20($sp) -/* 078A00 7F043ED0 24050011 */ li $a1, 17 -/* 078A04 7F043ED4 558000C7 */ bnezl $t4, .L7F0441F4 -/* 078A08 7F043ED8 8FBF0014 */ lw $ra, 0x14($sp) -/* 078A0C 7F043EDC 0FC10EDF */ jal generate_explosion_at_position -/* 078A10 7F043EE0 AFA7001C */ sw $a3, 0x1c($sp) -/* 078A14 7F043EE4 8FA7001C */ lw $a3, 0x1c($sp) -/* 078A18 7F043EE8 24040078 */ li $a0, 120 -/* 078A1C 7F043EEC 8CED0064 */ lw $t5, 0x64($a3) -/* 078A20 7F043EF0 35AE0004 */ ori $t6, $t5, 4 -/* 078A24 7F043EF4 0FC22FF1 */ jal trigger_explosions_around_player -/* 078A28 7F043EF8 ACEE0064 */ sw $t6, 0x64($a3) -/* 078A2C 7F043EFC 24040002 */ li $a0, 2 -/* 078A30 7F043F00 0FC15858 */ jal set_unset_clock_lock_bits -/* 078A34 7F043F04 00002825 */ move $a1, $zero -/* 078A38 7F043F08 100000BA */ b .L7F0441F4 -/* 078A3C 7F043F0C 8FBF0014 */ lw $ra, 0x14($sp) -/* 078A40 7F043F10 2401001B */ li $at, 27 -.L7F043F14: -/* 078A44 7F043F14 10610003 */ beq $v1, $at, .L7F043F24 -/* 078A48 7F043F18 24010021 */ li $at, 33 -/* 078A4C 7F043F1C 5461001F */ bnel $v1, $at, .L7F043F9C -/* 078A50 7F043F20 2401001D */ li $at, 29 -.L7F043F24: -/* 078A54 7F043F24 84C20082 */ lh $v0, 0x82($a2) -/* 078A58 7F043F28 3C0F8005 */ lui $t7, %hi(clock_timer) -/* 078A5C 7F043F2C 0442001B */ bltzl $v0, .L7F043F9C -/* 078A60 7F043F30 2401001D */ li $at, 29 -/* 078A64 7F043F34 8DEF8374 */ lw $t7, %lo(clock_timer)($t7) -/* 078A68 7F043F38 004FC023 */ subu $t8, $v0, $t7 -/* 078A6C 7F043F3C A4D80082 */ sh $t8, 0x82($a2) -/* 078A70 7F043F40 84D90082 */ lh $t9, 0x82($a2) -/* 078A74 7F043F44 8FA40020 */ lw $a0, 0x20($sp) -/* 078A78 7F043F48 072300AA */ bgezl $t9, .L7F0441F4 -/* 078A7C 7F043F4C 8FBF0014 */ lw $ra, 0x14($sp) -/* 078A80 7F043F50 8CE8000C */ lw $t0, 0xc($a3) -/* 078A84 7F043F54 2405000D */ li $a1, 13 -/* 078A88 7F043F58 00084800 */ sll $t1, $t0, 0 -/* 078A8C 7F043F5C 05210003 */ bgez $t1, .L7F043F6C -/* 078A90 7F043F60 00000000 */ nop -/* 078A94 7F043F64 10000001 */ b .L7F043F6C -/* 078A98 7F043F68 24050011 */ li $a1, 17 -.L7F043F6C: -/* 078A9C 7F043F6C AFA60018 */ sw $a2, 0x18($sp) -/* 078AA0 7F043F70 0FC10EDF */ jal generate_explosion_at_position -/* 078AA4 7F043F74 AFA7001C */ sw $a3, 0x1c($sp) -/* 078AA8 7F043F78 8FA60018 */ lw $a2, 0x18($sp) -/* 078AAC 7F043F7C 8FA7001C */ lw $a3, 0x1c($sp) -/* 078AB0 7F043F80 240AFFFF */ li $t2, -1 -/* 078AB4 7F043F84 A4CA0082 */ sh $t2, 0x82($a2) -/* 078AB8 7F043F88 8CEB0064 */ lw $t3, 0x64($a3) -/* 078ABC 7F043F8C 356C0004 */ ori $t4, $t3, 4 -/* 078AC0 7F043F90 10000097 */ b .L7F0441F0 -/* 078AC4 7F043F94 ACEC0064 */ sw $t4, 0x64($a3) -/* 078AC8 7F043F98 2401001D */ li $at, 29 -.L7F043F9C: -/* 078ACC 7F043F9C 54610049 */ bnel $v1, $at, .L7F0440C4 -/* 078AD0 7F043FA0 2401001C */ li $at, 28 -/* 078AD4 7F043FA4 3C038003 */ lui $v1, %hi(D_80030AF4) -/* 078AD8 7F043FA8 8C630AF4 */ lw $v1, %lo(D_80030AF4)($v1) -/* 078ADC 7F043FAC 3C088005 */ lui $t0, %hi(clock_timer) -/* 078AE0 7F043FB0 5060000C */ beql $v1, $zero, .L7F043FE4 -/* 078AE4 7F043FB4 84C20082 */ lh $v0, 0x82($a2) -/* 078AE8 7F043FB8 8CE20064 */ lw $v0, 0x64($a3) -/* 078AEC 7F043FBC 3C010006 */ lui $at, 6 -/* 078AF0 7F043FC0 240F0001 */ li $t7, 1 -/* 078AF4 7F043FC4 00416824 */ and $t5, $v0, $at -/* 078AF8 7F043FC8 000D7442 */ srl $t6, $t5, 0x11 -/* 078AFC 7F043FCC 01CFC004 */ sllv $t8, $t7, $t6 -/* 078B00 7F043FD0 0078C824 */ and $t9, $v1, $t8 -/* 078B04 7F043FD4 53200003 */ beql $t9, $zero, .L7F043FE4 -/* 078B08 7F043FD8 84C20082 */ lh $v0, 0x82($a2) -/* 078B0C 7F043FDC A4C00082 */ sh $zero, 0x82($a2) -/* 078B10 7F043FE0 84C20082 */ lh $v0, 0x82($a2) -.L7F043FE4: -/* 078B14 7F043FE4 28410002 */ slti $at, $v0, 2 -/* 078B18 7F043FE8 1420000B */ bnez $at, .L7F044018 -/* 078B1C 7F043FEC 00000000 */ nop -/* 078B20 7F043FF0 8D088374 */ lw $t0, %lo(clock_timer)($t0) -/* 078B24 7F043FF4 240B0001 */ li $t3, 1 -/* 078B28 7F043FF8 00484823 */ subu $t1, $v0, $t0 -/* 078B2C 7F043FFC A4C90082 */ sh $t1, 0x82($a2) -/* 078B30 7F044000 84CA0082 */ lh $t2, 0x82($a2) -/* 078B34 7F044004 29410002 */ slti $at, $t2, 2 -/* 078B38 7F044008 5020007A */ beql $at, $zero, .L7F0441F4 -/* 078B3C 7F04400C 8FBF0014 */ lw $ra, 0x14($sp) -/* 078B40 7F044010 10000077 */ b .L7F0441F0 -/* 078B44 7F044014 A4CB0082 */ sh $t3, 0x82($a2) -.L7F044018: -/* 078B48 7F044018 54400076 */ bnezl $v0, .L7F0441F4 -/* 078B4C 7F04401C 8FBF0014 */ lw $ra, 0x14($sp) -/* 078B50 7F044020 8CEC000C */ lw $t4, 0xc($a3) -/* 078B54 7F044024 8FA40020 */ lw $a0, 0x20($sp) -/* 078B58 7F044028 24050011 */ li $a1, 17 -/* 078B5C 7F04402C 000C6800 */ sll $t5, $t4, 0 -/* 078B60 7F044030 05A30008 */ bgezl $t5, .L7F044054 -/* 078B64 7F044034 AFA60018 */ sw $a2, 0x18($sp) -/* 078B68 7F044038 AFA60018 */ sw $a2, 0x18($sp) -/* 078B6C 7F04403C 0FC10EDF */ jal generate_explosion_at_position -/* 078B70 7F044040 AFA7001C */ sw $a3, 0x1c($sp) -/* 078B74 7F044044 8FA60018 */ lw $a2, 0x18($sp) -/* 078B78 7F044048 10000017 */ b .L7F0440A8 -/* 078B7C 7F04404C 8FA7001C */ lw $a3, 0x1c($sp) -/* 078B80 7F044050 AFA60018 */ sw $a2, 0x18($sp) -.L7F044054: -/* 078B84 7F044054 0C001A57 */ jal get_stage_num -/* 078B88 7F044058 AFA7001C */ sw $a3, 0x1c($sp) -/* 078B8C 7F04405C 24010022 */ li $at, 34 -/* 078B90 7F044060 8FA60018 */ lw $a2, 0x18($sp) -/* 078B94 7F044064 14410009 */ bne $v0, $at, .L7F04408C -/* 078B98 7F044068 8FA7001C */ lw $a3, 0x1c($sp) -/* 078B9C 7F04406C 8FA40020 */ lw $a0, 0x20($sp) -/* 078BA0 7F044070 24050013 */ li $a1, 19 -/* 078BA4 7F044074 AFA60018 */ sw $a2, 0x18($sp) -/* 078BA8 7F044078 0FC10EDF */ jal generate_explosion_at_position -/* 078BAC 7F04407C AFA7001C */ sw $a3, 0x1c($sp) -/* 078BB0 7F044080 8FA60018 */ lw $a2, 0x18($sp) -/* 078BB4 7F044084 10000008 */ b .L7F0440A8 -/* 078BB8 7F044088 8FA7001C */ lw $a3, 0x1c($sp) -.L7F04408C: -/* 078BBC 7F04408C 8FA40020 */ lw $a0, 0x20($sp) -/* 078BC0 7F044090 2405000D */ li $a1, 13 -/* 078BC4 7F044094 AFA60018 */ sw $a2, 0x18($sp) -/* 078BC8 7F044098 0FC10EDF */ jal generate_explosion_at_position -/* 078BCC 7F04409C AFA7001C */ sw $a3, 0x1c($sp) -/* 078BD0 7F0440A0 8FA60018 */ lw $a2, 0x18($sp) -/* 078BD4 7F0440A4 8FA7001C */ lw $a3, 0x1c($sp) -.L7F0440A8: -/* 078BD8 7F0440A8 240EFFFF */ li $t6, -1 -/* 078BDC 7F0440AC A4CE0082 */ sh $t6, 0x82($a2) -/* 078BE0 7F0440B0 8CEF0064 */ lw $t7, 0x64($a3) -/* 078BE4 7F0440B4 35F80004 */ ori $t8, $t7, 4 -/* 078BE8 7F0440B8 1000004D */ b .L7F0441F0 -/* 078BEC 7F0440BC ACF80064 */ sw $t8, 0x64($a3) -/* 078BF0 7F0440C0 2401001C */ li $at, 28 -.L7F0440C4: -/* 078BF4 7F0440C4 5461004B */ bnel $v1, $at, .L7F0441F4 -/* 078BF8 7F0440C8 8FBF0014 */ lw $ra, 0x14($sp) -/* 078BFC 7F0440CC 84C20082 */ lh $v0, 0x82($a2) -/* 078C00 7F0440D0 3C198005 */ lui $t9, %hi(clock_timer) -/* 078C04 7F0440D4 28410002 */ slti $at, $v0, 2 -/* 078C08 7F0440D8 54200012 */ bnezl $at, .L7F044124 -/* 078C0C 7F0440DC 24010001 */ li $at, 1 -/* 078C10 7F0440E0 8F398374 */ lw $t9, %lo(clock_timer)($t9) -/* 078C14 7F0440E4 240A0001 */ li $t2, 1 -/* 078C18 7F0440E8 00C02025 */ move $a0, $a2 -/* 078C1C 7F0440EC 00594023 */ subu $t0, $v0, $t9 -/* 078C20 7F0440F0 A4C80082 */ sh $t0, 0x82($a2) -/* 078C24 7F0440F4 84C90082 */ lh $t1, 0x82($a2) -/* 078C28 7F0440F8 29210002 */ slti $at, $t1, 2 -/* 078C2C 7F0440FC 50200027 */ beql $at, $zero, .L7F04419C -/* 078C30 7F044100 84CC0082 */ lh $t4, 0x82($a2) -/* 078C34 7F044104 A4CA0082 */ sh $t2, 0x82($a2) -/* 078C38 7F044108 AFA7001C */ sw $a3, 0x1c($sp) -/* 078C3C 7F04410C 0FC146D7 */ jal add_obj_to_temp_proxmine_table -/* 078C40 7F044110 AFA60018 */ sw $a2, 0x18($sp) -/* 078C44 7F044114 8FA60018 */ lw $a2, 0x18($sp) -/* 078C48 7F044118 1000001F */ b .L7F044198 -/* 078C4C 7F04411C 8FA7001C */ lw $a3, 0x1c($sp) -/* 078C50 7F044120 24010001 */ li $at, 1 -.L7F044124: -/* 078C54 7F044124 5441001D */ bnel $v0, $at, .L7F04419C -/* 078C58 7F044128 84CC0082 */ lh $t4, 0x82($a2) -/* 078C5C 7F04412C AFA60018 */ sw $a2, 0x18($sp) -/* 078C60 7F044130 0FC225E6 */ jal get_curplayer_positiondata -/* 078C64 7F044134 AFA7001C */ sw $a3, 0x1c($sp) -/* 078C68 7F044138 8FAB0020 */ lw $t3, 0x20($sp) -/* 078C6C 7F04413C C4440008 */ lwc1 $f4, 8($v0) -/* 078C70 7F044140 C448000C */ lwc1 $f8, 0xc($v0) -/* 078C74 7F044144 C5660008 */ lwc1 $f6, 8($t3) -/* 078C78 7F044148 C56A000C */ lwc1 $f10, 0xc($t3) -/* 078C7C 7F04414C C4500010 */ lwc1 $f16, 0x10($v0) -/* 078C80 7F044150 46062001 */ sub.s $f0, $f4, $f6 -/* 078C84 7F044154 C5720010 */ lwc1 $f18, 0x10($t3) -/* 078C88 7F044158 3C018005 */ lui $at, %hi(D_80052A94) -/* 078C8C 7F04415C 460A4081 */ sub.s $f2, $f8, $f10 -/* 078C90 7F044160 46000102 */ mul.s $f4, $f0, $f0 -/* 078C94 7F044164 8FA60018 */ lw $a2, 0x18($sp) -/* 078C98 7F044168 46128301 */ sub.s $f12, $f16, $f18 -/* 078C9C 7F04416C 46021182 */ mul.s $f6, $f2, $f2 -/* 078CA0 7F044170 C4322A94 */ lwc1 $f18, %lo(D_80052A94)($at) -/* 078CA4 7F044174 8FA7001C */ lw $a3, 0x1c($sp) -/* 078CA8 7F044178 460C6282 */ mul.s $f10, $f12, $f12 -/* 078CAC 7F04417C 46062200 */ add.s $f8, $f4, $f6 -/* 078CB0 7F044180 460A4400 */ add.s $f16, $f8, $f10 -/* 078CB4 7F044184 4612803C */ c.lt.s $f16, $f18 -/* 078CB8 7F044188 00000000 */ nop -/* 078CBC 7F04418C 45020003 */ bc1fl .L7F04419C -/* 078CC0 7F044190 84CC0082 */ lh $t4, 0x82($a2) -/* 078CC4 7F044194 A4C00082 */ sh $zero, 0x82($a2) -.L7F044198: -/* 078CC8 7F044198 84CC0082 */ lh $t4, 0x82($a2) -.L7F04419C: -/* 078CCC 7F04419C 8FA40020 */ lw $a0, 0x20($sp) -/* 078CD0 7F0441A0 55800014 */ bnezl $t4, .L7F0441F4 -/* 078CD4 7F0441A4 8FBF0014 */ lw $ra, 0x14($sp) -/* 078CD8 7F0441A8 8CED000C */ lw $t5, 0xc($a3) -/* 078CDC 7F0441AC 2405000D */ li $a1, 13 -/* 078CE0 7F0441B0 000D7000 */ sll $t6, $t5, 0 -/* 078CE4 7F0441B4 05C10003 */ bgez $t6, .L7F0441C4 -/* 078CE8 7F0441B8 00000000 */ nop -/* 078CEC 7F0441BC 10000001 */ b .L7F0441C4 -/* 078CF0 7F0441C0 24050011 */ li $a1, 17 -.L7F0441C4: -/* 078CF4 7F0441C4 AFA60018 */ sw $a2, 0x18($sp) -/* 078CF8 7F0441C8 0FC10EDF */ jal generate_explosion_at_position -/* 078CFC 7F0441CC AFA7001C */ sw $a3, 0x1c($sp) -/* 078D00 7F0441D0 8FA40018 */ lw $a0, 0x18($sp) -/* 078D04 7F0441D4 8FA7001C */ lw $a3, 0x1c($sp) -/* 078D08 7F0441D8 240FFFFF */ li $t7, -1 -/* 078D0C 7F0441DC A48F0082 */ sh $t7, 0x82($a0) -/* 078D10 7F0441E0 8CF80064 */ lw $t8, 0x64($a3) -/* 078D14 7F0441E4 37190004 */ ori $t9, $t8, 4 -/* 078D18 7F0441E8 0FC146E5 */ jal remove_obj_from_temp_proxmine_table -/* 078D1C 7F0441EC ACF90064 */ sw $t9, 0x64($a3) -.L7F0441F0: -/* 078D20 7F0441F0 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0441F4: -/* 078D24 7F0441F4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 078D28 7F0441F8 03E00008 */ jr $ra -/* 078D2C 7F0441FC 00000000 */ nop -) -#endif - -#ifdef VERSION_JP -GLOBAL_ASM( -.late_rodata -glabel D_80052A94 -.word 0x47742400 /*62500.0*/ -.text -glabel handle_thrown_explosive_detonation -/* 078BE4 7F044074 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 078BE8 7F044078 AFBF0014 */ sw $ra, 0x14($sp) -/* 078BEC 7F04407C AFA40030 */ sw $a0, 0x30($sp) -/* 078BF0 7F044080 8C870004 */ lw $a3, 4($a0) -/* 078BF4 7F044084 0FC26F3C */ jal get_cur_playernum -/* 078BF8 7F044088 AFA7002C */ sw $a3, 0x2c($sp) -/* 078BFC 7F04408C 0FC2701E */ jal sub_GAME_7F09B4D8 -/* 078C00 7F044090 00402025 */ move $a0, $v0 -/* 078C04 7F044094 14400110 */ bnez $v0, .L7F0444D8 -/* 078C08 7F044098 8FA7002C */ lw $a3, 0x2c($sp) -/* 078C0C 7F04409C 90E20003 */ lbu $v0, 3($a3) -/* 078C10 7F0440A0 24010007 */ li $at, 7 -/* 078C14 7F0440A4 5441000F */ bnel $v0, $at, .L7F0440E4 -/* 078C18 7F0440A8 24010008 */ li $at, 8 -/* 078C1C 7F0440AC 8CEF0008 */ lw $t7, 8($a3) -/* 078C20 7F0440B0 8FA40030 */ lw $a0, 0x30($sp) -/* 078C24 7F0440B4 2405000C */ li $a1, 12 -/* 078C28 7F0440B8 000FC0C0 */ sll $t8, $t7, 3 -/* 078C2C 7F0440BC 07030107 */ bgezl $t8, .L7F0444DC -/* 078C30 7F0440C0 8FBF0014 */ lw $ra, 0x14($sp) -/* 078C34 7F0440C4 0FC10F9F */ jal generate_explosion_at_position -/* 078C38 7F0440C8 AFA7002C */ sw $a3, 0x2c($sp) -/* 078C3C 7F0440CC 8FA7002C */ lw $a3, 0x2c($sp) -/* 078C40 7F0440D0 8CF90064 */ lw $t9, 0x64($a3) -/* 078C44 7F0440D4 37280004 */ ori $t0, $t9, 4 -/* 078C48 7F0440D8 100000FF */ b .L7F0444D8 -/* 078C4C 7F0440DC ACE80064 */ sw $t0, 0x64($a3) -/* 078C50 7F0440E0 24010008 */ li $at, 8 -.L7F0440E4: -/* 078C54 7F0440E4 144100FC */ bne $v0, $at, .L7F0444D8 -/* 078C58 7F0440E8 8FA90030 */ lw $t1, 0x30($sp) -/* 078C5C 7F0440EC 8D260004 */ lw $a2, 4($t1) -/* 078C60 7F0440F0 2401001A */ li $at, 26 -/* 078C64 7F0440F4 80C30080 */ lb $v1, 0x80($a2) -/* 078C68 7F0440F8 10610003 */ beq $v1, $at, .L7F044108 -/* 078C6C 7F0440FC 24010057 */ li $at, 87 -/* 078C70 7F044100 5461001B */ bnel $v1, $at, .L7F044170 -/* 078C74 7F044104 24010056 */ li $at, 86 -.L7F044108: -/* 078C78 7F044108 84C20082 */ lh $v0, 0x82($a2) -/* 078C7C 7F04410C 3C0A8005 */ lui $t2, %hi(clock_timer) # $t2, 0x8005 -/* 078C80 7F044110 04420017 */ bltzl $v0, .L7F044170 -/* 078C84 7F044114 24010056 */ li $at, 86 -/* 078C88 7F044118 8D4A83A4 */ lw $t2, %lo(clock_timer)($t2) -/* 078C8C 7F04411C 004A5823 */ subu $t3, $v0, $t2 -/* 078C90 7F044120 A4CB0082 */ sh $t3, 0x82($a2) -/* 078C94 7F044124 84CC0082 */ lh $t4, 0x82($a2) -/* 078C98 7F044128 8FA40030 */ lw $a0, 0x30($sp) -/* 078C9C 7F04412C 058300EB */ bgezl $t4, .L7F0444DC -/* 078CA0 7F044130 8FBF0014 */ lw $ra, 0x14($sp) -/* 078CA4 7F044134 8CED000C */ lw $t5, 0xc($a3) -/* 078CA8 7F044138 2405000D */ li $a1, 13 -/* 078CAC 7F04413C 000D7000 */ sll $t6, $t5, 0 -/* 078CB0 7F044140 05C10003 */ bgez $t6, .L7F044150 -/* 078CB4 7F044144 00000000 */ nop -/* 078CB8 7F044148 10000001 */ b .L7F044150 -/* 078CBC 7F04414C 24050011 */ li $a1, 17 -.L7F044150: -/* 078CC0 7F044150 0FC10F9F */ jal generate_explosion_at_position -/* 078CC4 7F044154 AFA7002C */ sw $a3, 0x2c($sp) -/* 078CC8 7F044158 8FA7002C */ lw $a3, 0x2c($sp) -/* 078CCC 7F04415C 8CEF0064 */ lw $t7, 0x64($a3) -/* 078CD0 7F044160 35F80004 */ ori $t8, $t7, 4 -/* 078CD4 7F044164 100000DC */ b .L7F0444D8 -/* 078CD8 7F044168 ACF80064 */ sw $t8, 0x64($a3) -/* 078CDC 7F04416C 24010056 */ li $at, 86 -.L7F044170: -/* 078CE0 7F044170 54610014 */ bnel $v1, $at, .L7F0441C4 -/* 078CE4 7F044174 24010022 */ li $at, 34 -/* 078CE8 7F044178 84D90082 */ lh $t9, 0x82($a2) -/* 078CEC 7F04417C 8FA40030 */ lw $a0, 0x30($sp) -/* 078CF0 7F044180 572000D6 */ bnezl $t9, .L7F0444DC -/* 078CF4 7F044184 8FBF0014 */ lw $ra, 0x14($sp) -/* 078CF8 7F044188 8CE8000C */ lw $t0, 0xc($a3) -/* 078CFC 7F04418C 2405000D */ li $a1, 13 -/* 078D00 7F044190 00084800 */ sll $t1, $t0, 0 -/* 078D04 7F044194 05210003 */ bgez $t1, .L7F0441A4 -/* 078D08 7F044198 00000000 */ nop -/* 078D0C 7F04419C 10000001 */ b .L7F0441A4 -/* 078D10 7F0441A0 24050011 */ li $a1, 17 -.L7F0441A4: -/* 078D14 7F0441A4 0FC10F9F */ jal generate_explosion_at_position -/* 078D18 7F0441A8 AFA7002C */ sw $a3, 0x2c($sp) -/* 078D1C 7F0441AC 8FA7002C */ lw $a3, 0x2c($sp) -/* 078D20 7F0441B0 8CEA0064 */ lw $t2, 0x64($a3) -/* 078D24 7F0441B4 354B0004 */ ori $t3, $t2, 4 -/* 078D28 7F0441B8 100000C7 */ b .L7F0444D8 -/* 078D2C 7F0441BC ACEB0064 */ sw $t3, 0x64($a3) -/* 078D30 7F0441C0 24010022 */ li $at, 34 -.L7F0441C4: -/* 078D34 7F0441C4 54610014 */ bnel $v1, $at, .L7F044218 -/* 078D38 7F0441C8 2401001B */ li $at, 27 -/* 078D3C 7F0441CC 84CC0082 */ lh $t4, 0x82($a2) -/* 078D40 7F0441D0 8FA40030 */ lw $a0, 0x30($sp) -/* 078D44 7F0441D4 24050011 */ li $a1, 17 -/* 078D48 7F0441D8 558000C0 */ bnezl $t4, .L7F0444DC -/* 078D4C 7F0441DC 8FBF0014 */ lw $ra, 0x14($sp) -/* 078D50 7F0441E0 0FC10F9F */ jal generate_explosion_at_position -/* 078D54 7F0441E4 AFA7002C */ sw $a3, 0x2c($sp) -/* 078D58 7F0441E8 8FA7002C */ lw $a3, 0x2c($sp) -/* 078D5C 7F0441EC 24040078 */ li $a0, 120 -/* 078D60 7F0441F0 8CED0064 */ lw $t5, 0x64($a3) -/* 078D64 7F0441F4 35AE0004 */ ori $t6, $t5, 4 -/* 078D68 7F0441F8 0FC23213 */ jal trigger_explosions_around_player -/* 078D6C 7F0441FC ACEE0064 */ sw $t6, 0x64($a3) -/* 078D70 7F044200 24040002 */ li $a0, 2 -/* 078D74 7F044204 0FC15997 */ jal set_unset_clock_lock_bits -/* 078D78 7F044208 00002825 */ move $a1, $zero -/* 078D7C 7F04420C 100000B3 */ b .L7F0444DC -/* 078D80 7F044210 8FBF0014 */ lw $ra, 0x14($sp) -/* 078D84 7F044214 2401001B */ li $at, 27 -.L7F044218: -/* 078D88 7F044218 10610003 */ beq $v1, $at, .L7F044228 -/* 078D8C 7F04421C 24010021 */ li $at, 33 -/* 078D90 7F044220 54610020 */ bnel $v1, $at, .L7F0442A4 -/* 078D94 7F044224 2401001D */ li $at, 29 -.L7F044228: -/* 078D98 7F044228 84C20082 */ lh $v0, 0x82($a2) -/* 078D9C 7F04422C 3C0F8005 */ lui $t7, %hi(clock_timer) # $t7, 0x8005 -/* 078DA0 7F044230 0442001C */ bltzl $v0, .L7F0442A4 -/* 078DA4 7F044234 2401001D */ li $at, 29 -/* 078DA8 7F044238 8DEF83A4 */ lw $t7, %lo(clock_timer)($t7) -/* 078DAC 7F04423C 004FC023 */ subu $t8, $v0, $t7 -/* 078DB0 7F044240 A4D80082 */ sh $t8, 0x82($a2) -/* 078DB4 7F044244 84D90082 */ lh $t9, 0x82($a2) -/* 078DB8 7F044248 8FA40030 */ lw $a0, 0x30($sp) -/* 078DBC 7F04424C 072300A3 */ bgezl $t9, .L7F0444DC -/* 078DC0 7F044250 8FBF0014 */ lw $ra, 0x14($sp) -/* 078DC4 7F044254 8CE8000C */ lw $t0, 0xc($a3) -/* 078DC8 7F044258 2405000D */ li $a1, 13 -/* 078DCC 7F04425C 00084800 */ sll $t1, $t0, 0 -/* 078DD0 7F044260 05210003 */ bgez $t1, .L7F044270 -/* 078DD4 7F044264 00000000 */ nop -/* 078DD8 7F044268 10000001 */ b .L7F044270 -/* 078DDC 7F04426C 24050011 */ li $a1, 17 -.L7F044270: -/* 078DE0 7F044270 AFA60028 */ sw $a2, 0x28($sp) -/* 078DE4 7F044274 0FC10F9F */ jal generate_explosion_at_position -/* 078DE8 7F044278 AFA7002C */ sw $a3, 0x2c($sp) -/* 078DEC 7F04427C 8FA60028 */ lw $a2, 0x28($sp) -/* 078DF0 7F044280 10400095 */ beqz $v0, .L7F0444D8 -/* 078DF4 7F044284 8FA7002C */ lw $a3, 0x2c($sp) -/* 078DF8 7F044288 240AFFFF */ li $t2, -1 -/* 078DFC 7F04428C A4CA0082 */ sh $t2, 0x82($a2) -/* 078E00 7F044290 8CEB0064 */ lw $t3, 0x64($a3) -/* 078E04 7F044294 356C0004 */ ori $t4, $t3, 4 -/* 078E08 7F044298 1000008F */ b .L7F0444D8 -/* 078E0C 7F04429C ACEC0064 */ sw $t4, 0x64($a3) -/* 078E10 7F0442A0 2401001D */ li $at, 29 -.L7F0442A4: -/* 078E14 7F0442A4 5461003F */ bnel $v1, $at, .L7F0443A4 -/* 078E18 7F0442A8 2401001C */ li $at, 28 -/* 078E1C 7F0442AC 3C038003 */ lui $v1, %hi(D_80030AF4) # $v1, 0x8003 -/* 078E20 7F0442B0 8C630B34 */ lw $v1, %lo(D_80030AF4)($v1) -/* 078E24 7F0442B4 3C088005 */ lui $t0, %hi(clock_timer) # $t0, 0x8005 -/* 078E28 7F0442B8 5060000C */ beql $v1, $zero, .L7F0442EC -/* 078E2C 7F0442BC 84C20082 */ lh $v0, 0x82($a2) -/* 078E30 7F0442C0 8CE20064 */ lw $v0, 0x64($a3) -/* 078E34 7F0442C4 3C010006 */ lui $at, 6 -/* 078E38 7F0442C8 240F0001 */ li $t7, 1 -/* 078E3C 7F0442CC 00416824 */ and $t5, $v0, $at -/* 078E40 7F0442D0 000D7442 */ srl $t6, $t5, 0x11 -/* 078E44 7F0442D4 01CFC004 */ sllv $t8, $t7, $t6 -/* 078E48 7F0442D8 0078C824 */ and $t9, $v1, $t8 -/* 078E4C 7F0442DC 53200003 */ beql $t9, $zero, .L7F0442EC -/* 078E50 7F0442E0 84C20082 */ lh $v0, 0x82($a2) -/* 078E54 7F0442E4 A4C00082 */ sh $zero, 0x82($a2) -/* 078E58 7F0442E8 84C20082 */ lh $v0, 0x82($a2) -.L7F0442EC: -/* 078E5C 7F0442EC 28410002 */ slti $at, $v0, 2 -/* 078E60 7F0442F0 1420000B */ bnez $at, .L7F044320 -/* 078E64 7F0442F4 00000000 */ nop -/* 078E68 7F0442F8 8D0883A4 */ lw $t0, %lo(clock_timer)($t0) -/* 078E6C 7F0442FC 240B0001 */ li $t3, 1 -/* 078E70 7F044300 00484823 */ subu $t1, $v0, $t0 -/* 078E74 7F044304 A4C90082 */ sh $t1, 0x82($a2) -/* 078E78 7F044308 84CA0082 */ lh $t2, 0x82($a2) -/* 078E7C 7F04430C 29410002 */ slti $at, $t2, 2 -/* 078E80 7F044310 50200072 */ beql $at, $zero, .L7F0444DC -/* 078E84 7F044314 8FBF0014 */ lw $ra, 0x14($sp) -/* 078E88 7F044318 1000006F */ b .L7F0444D8 -/* 078E8C 7F04431C A4CB0082 */ sh $t3, 0x82($a2) -.L7F044320: -/* 078E90 7F044320 5440006E */ bnezl $v0, .L7F0444DC -/* 078E94 7F044324 8FBF0014 */ lw $ra, 0x14($sp) -/* 078E98 7F044328 8CEC000C */ lw $t4, 0xc($a3) -/* 078E9C 7F04432C 2405000D */ li $a1, 13 -/* 078EA0 7F044330 000C6800 */ sll $t5, $t4, 0 -/* 078EA4 7F044334 05A30004 */ bgezl $t5, .L7F044348 -/* 078EA8 7F044338 AFA5001C */ sw $a1, 0x1c($sp) -/* 078EAC 7F04433C 1000000B */ b .L7F04436C -/* 078EB0 7F044340 24050011 */ li $a1, 17 -/* 078EB4 7F044344 AFA5001C */ sw $a1, 0x1c($sp) -.L7F044348: -/* 078EB8 7F044348 AFA60028 */ sw $a2, 0x28($sp) -/* 078EBC 7F04434C 0C001A57 */ jal get_stage_num -/* 078EC0 7F044350 AFA7002C */ sw $a3, 0x2c($sp) -/* 078EC4 7F044354 24010022 */ li $at, 34 -/* 078EC8 7F044358 8FA5001C */ lw $a1, 0x1c($sp) -/* 078ECC 7F04435C 8FA60028 */ lw $a2, 0x28($sp) -/* 078ED0 7F044360 14410002 */ bne $v0, $at, .L7F04436C -/* 078ED4 7F044364 8FA7002C */ lw $a3, 0x2c($sp) -/* 078ED8 7F044368 24050013 */ li $a1, 19 -.L7F04436C: -/* 078EDC 7F04436C 8FA40030 */ lw $a0, 0x30($sp) -/* 078EE0 7F044370 AFA60028 */ sw $a2, 0x28($sp) -/* 078EE4 7F044374 0FC10F9F */ jal generate_explosion_at_position -/* 078EE8 7F044378 AFA7002C */ sw $a3, 0x2c($sp) -/* 078EEC 7F04437C 8FA60028 */ lw $a2, 0x28($sp) -/* 078EF0 7F044380 10400055 */ beqz $v0, .L7F0444D8 -/* 078EF4 7F044384 8FA7002C */ lw $a3, 0x2c($sp) -/* 078EF8 7F044388 240EFFFF */ li $t6, -1 -/* 078EFC 7F04438C A4CE0082 */ sh $t6, 0x82($a2) -/* 078F00 7F044390 8CEF0064 */ lw $t7, 0x64($a3) -/* 078F04 7F044394 35F80004 */ ori $t8, $t7, 4 -/* 078F08 7F044398 1000004F */ b .L7F0444D8 -/* 078F0C 7F04439C ACF80064 */ sw $t8, 0x64($a3) -/* 078F10 7F0443A0 2401001C */ li $at, 28 -.L7F0443A4: -/* 078F14 7F0443A4 5461004D */ bnel $v1, $at, .L7F0444DC -/* 078F18 7F0443A8 8FBF0014 */ lw $ra, 0x14($sp) -/* 078F1C 7F0443AC 84C20082 */ lh $v0, 0x82($a2) -/* 078F20 7F0443B0 3C198005 */ lui $t9, %hi(clock_timer) # $t9, 0x8005 -/* 078F24 7F0443B4 28410002 */ slti $at, $v0, 2 -/* 078F28 7F0443B8 54200012 */ bnezl $at, .L7F044404 -/* 078F2C 7F0443BC 24010001 */ li $at, 1 -/* 078F30 7F0443C0 8F3983A4 */ lw $t9, %lo(clock_timer)($t9) -/* 078F34 7F0443C4 240A0001 */ li $t2, 1 -/* 078F38 7F0443C8 00C02025 */ move $a0, $a2 -/* 078F3C 7F0443CC 00594023 */ subu $t0, $v0, $t9 -/* 078F40 7F0443D0 A4C80082 */ sh $t0, 0x82($a2) -/* 078F44 7F0443D4 84C90082 */ lh $t1, 0x82($a2) -/* 078F48 7F0443D8 29210002 */ slti $at, $t1, 2 -/* 078F4C 7F0443DC 50200027 */ beql $at, $zero, .L7F04447C -/* 078F50 7F0443E0 84CC0082 */ lh $t4, 0x82($a2) -/* 078F54 7F0443E4 A4CA0082 */ sh $t2, 0x82($a2) -/* 078F58 7F0443E8 AFA7002C */ sw $a3, 0x2c($sp) -/* 078F5C 7F0443EC 0FC14816 */ jal add_obj_to_temp_proxmine_table -/* 078F60 7F0443F0 AFA60028 */ sw $a2, 0x28($sp) -/* 078F64 7F0443F4 8FA60028 */ lw $a2, 0x28($sp) -/* 078F68 7F0443F8 1000001F */ b .L7F044478 -/* 078F6C 7F0443FC 8FA7002C */ lw $a3, 0x2c($sp) -/* 078F70 7F044400 24010001 */ li $at, 1 -.L7F044404: -/* 078F74 7F044404 5441001D */ bnel $v0, $at, .L7F04447C -/* 078F78 7F044408 84CC0082 */ lh $t4, 0x82($a2) -/* 078F7C 7F04440C AFA60028 */ sw $a2, 0x28($sp) -/* 078F80 7F044410 0FC2279B */ jal get_curplayer_positiondata -/* 078F84 7F044414 AFA7002C */ sw $a3, 0x2c($sp) -/* 078F88 7F044418 8FAB0030 */ lw $t3, 0x30($sp) -/* 078F8C 7F04441C C4440008 */ lwc1 $f4, 8($v0) -/* 078F90 7F044420 C448000C */ lwc1 $f8, 0xc($v0) -/* 078F94 7F044424 C5660008 */ lwc1 $f6, 8($t3) -/* 078F98 7F044428 C56A000C */ lwc1 $f10, 0xc($t3) -/* 078F9C 7F04442C C4500010 */ lwc1 $f16, 0x10($v0) -/* 078FA0 7F044430 46062001 */ sub.s $f0, $f4, $f6 -/* 078FA4 7F044434 C5720010 */ lwc1 $f18, 0x10($t3) -/* 078FA8 7F044438 3C018005 */ lui $at, %hi(D_80052A94) # $at, 0x8005 -/* 078FAC 7F04443C 460A4081 */ sub.s $f2, $f8, $f10 -/* 078FB0 7F044440 46000102 */ mul.s $f4, $f0, $f0 -/* 078FB4 7F044444 8FA60028 */ lw $a2, 0x28($sp) -/* 078FB8 7F044448 46128301 */ sub.s $f12, $f16, $f18 -/* 078FBC 7F04444C 46021182 */ mul.s $f6, $f2, $f2 -/* 078FC0 7F044450 C4322AC4 */ lwc1 $f18, %lo(D_80052A94)($at) -/* 078FC4 7F044454 8FA7002C */ lw $a3, 0x2c($sp) -/* 078FC8 7F044458 460C6282 */ mul.s $f10, $f12, $f12 -/* 078FCC 7F04445C 46062200 */ add.s $f8, $f4, $f6 -/* 078FD0 7F044460 460A4400 */ add.s $f16, $f8, $f10 -/* 078FD4 7F044464 4612803C */ c.lt.s $f16, $f18 -/* 078FD8 7F044468 00000000 */ nop -/* 078FDC 7F04446C 45020003 */ bc1fl .L7F04447C -/* 078FE0 7F044470 84CC0082 */ lh $t4, 0x82($a2) -/* 078FE4 7F044474 A4C00082 */ sh $zero, 0x82($a2) -.L7F044478: -/* 078FE8 7F044478 84CC0082 */ lh $t4, 0x82($a2) -.L7F04447C: -/* 078FEC 7F04447C 8FA40030 */ lw $a0, 0x30($sp) -/* 078FF0 7F044480 55800016 */ bnezl $t4, .L7F0444DC -/* 078FF4 7F044484 8FBF0014 */ lw $ra, 0x14($sp) -/* 078FF8 7F044488 8CED000C */ lw $t5, 0xc($a3) -/* 078FFC 7F04448C 2405000D */ li $a1, 13 -/* 079000 7F044490 000D7000 */ sll $t6, $t5, 0 -/* 079004 7F044494 05C10003 */ bgez $t6, .L7F0444A4 -/* 079008 7F044498 00000000 */ nop -/* 07900C 7F04449C 10000001 */ b .L7F0444A4 -/* 079010 7F0444A0 24050011 */ li $a1, 17 -.L7F0444A4: -/* 079014 7F0444A4 AFA60028 */ sw $a2, 0x28($sp) -/* 079018 7F0444A8 0FC10F9F */ jal generate_explosion_at_position -/* 07901C 7F0444AC AFA7002C */ sw $a3, 0x2c($sp) -/* 079020 7F0444B0 8FA60028 */ lw $a2, 0x28($sp) -/* 079024 7F0444B4 10400008 */ beqz $v0, .L7F0444D8 -/* 079028 7F0444B8 8FA7002C */ lw $a3, 0x2c($sp) -/* 07902C 7F0444BC 240FFFFF */ li $t7, -1 -/* 079030 7F0444C0 A4CF0082 */ sh $t7, 0x82($a2) -/* 079034 7F0444C4 8CF80064 */ lw $t8, 0x64($a3) -/* 079038 7F0444C8 00C02025 */ move $a0, $a2 -/* 07903C 7F0444CC 37190004 */ ori $t9, $t8, 4 -/* 079040 7F0444D0 0FC14824 */ jal remove_obj_from_temp_proxmine_table -/* 079044 7F0444D4 ACF90064 */ sw $t9, 0x64($a3) -.L7F0444D8: -/* 079048 7F0444D8 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0444DC: -/* 07904C 7F0444DC 27BD0030 */ addiu $sp, $sp, 0x30 -/* 079050 7F0444E0 03E00008 */ jr $ra -/* 079054 7F0444E4 00000000 */ nop -) -#endif - -#endif - - - -#ifdef NONMATCHING -void sub_GAME_7F044200(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F044200 -/* 078D30 7F044200 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 078D34 7F044204 AFBF001C */ sw $ra, 0x1c($sp) -/* 078D38 7F044208 AFB10018 */ sw $s1, 0x18($sp) -/* 078D3C 7F04420C AFB00014 */ sw $s0, 0x14($sp) -/* 078D40 7F044210 8C900020 */ lw $s0, 0x20($a0) -/* 078D44 7F044214 52000009 */ beql $s0, $zero, .L7F04423C -/* 078D48 7F044218 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04421C: -/* 078D4C 7F04421C 8E110024 */ lw $s1, 0x24($s0) -/* 078D50 7F044220 0FC11080 */ jal sub_GAME_7F044200 -/* 078D54 7F044224 02002025 */ move $a0, $s0 -/* 078D58 7F044228 0FC1304C */ jal sub_GAME_7F04C130 -/* 078D5C 7F04422C 02002025 */ move $a0, $s0 -/* 078D60 7F044230 1620FFFA */ bnez $s1, .L7F04421C -/* 078D64 7F044234 02208025 */ move $s0, $s1 -/* 078D68 7F044238 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04423C: -/* 078D6C 7F04423C 8FB00014 */ lw $s0, 0x14($sp) -/* 078D70 7F044240 8FB10018 */ lw $s1, 0x18($sp) -/* 078D74 7F044244 03E00008 */ jr $ra -/* 078D78 7F044248 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04424C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04424C -/* 078D7C 7F04424C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 078D80 7F044250 AFBF001C */ sw $ra, 0x1c($sp) -/* 078D84 7F044254 AFB10018 */ sw $s1, 0x18($sp) -/* 078D88 7F044258 AFB00014 */ sw $s0, 0x14($sp) -/* 078D8C 7F04425C 8C870004 */ lw $a3, 4($a0) -/* 078D90 7F044260 00808825 */ move $s1, $a0 -/* 078D94 7F044264 8CEE0064 */ lw $t6, 0x64($a3) -/* 078D98 7F044268 31CF0004 */ andi $t7, $t6, 4 -/* 078D9C 7F04426C 51E0000A */ beql $t7, $zero, .L7F044298 -/* 078DA0 7F044270 92390001 */ lbu $t9, 1($s1) -/* 078DA4 7F044274 90E60002 */ lbu $a2, 2($a3) -/* 078DA8 7F044278 00E02025 */ move $a0, $a3 -/* 078DAC 7F04427C 24050001 */ li $a1, 1 -/* 078DB0 7F044280 30D80004 */ andi $t8, $a2, 4 -/* 078DB4 7F044284 0FC10366 */ jal sub_GAME_7F040D98 -/* 078DB8 7F044288 03003025 */ move $a2, $t8 -/* 078DBC 7F04428C 1000000F */ b .L7F0442CC -/* 078DC0 7F044290 8FBF001C */ lw $ra, 0x1c($sp) -/* 078DC4 7F044294 92390001 */ lbu $t9, 1($s1) -.L7F044298: -/* 078DC8 7F044298 02202025 */ move $a0, $s1 -/* 078DCC 7F04429C 3328FFFD */ andi $t0, $t9, 0xfffd -/* 078DD0 7F0442A0 0FC10F5C */ jal handle_thrown_explosive_detonation -/* 078DD4 7F0442A4 A2280001 */ sb $t0, 1($s1) -/* 078DD8 7F0442A8 8E300020 */ lw $s0, 0x20($s1) -/* 078DDC 7F0442AC 52000007 */ beql $s0, $zero, .L7F0442CC -/* 078DE0 7F0442B0 8FBF001C */ lw $ra, 0x1c($sp) -.L7F0442B4: -/* 078DE4 7F0442B4 8E110024 */ lw $s1, 0x24($s0) -/* 078DE8 7F0442B8 0FC11093 */ jal sub_GAME_7F04424C -/* 078DEC 7F0442BC 02002025 */ move $a0, $s0 -/* 078DF0 7F0442C0 1620FFFC */ bnez $s1, .L7F0442B4 -/* 078DF4 7F0442C4 02208025 */ move $s0, $s1 -/* 078DF8 7F0442C8 8FBF001C */ lw $ra, 0x1c($sp) -.L7F0442CC: -/* 078DFC 7F0442CC 8FB00014 */ lw $s0, 0x14($sp) -/* 078E00 7F0442D0 8FB10018 */ lw $s1, 0x18($sp) -/* 078E04 7F0442D4 03E00008 */ jr $ra -/* 078E08 7F0442D8 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0442DC(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0442DC -/* 078E0C 7F0442DC 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 078E10 7F0442E0 AFBF0024 */ sw $ra, 0x24($sp) -/* 078E14 7F0442E4 AFB20020 */ sw $s2, 0x20($sp) -/* 078E18 7F0442E8 AFB1001C */ sw $s1, 0x1c($sp) -/* 078E1C 7F0442EC AFB00018 */ sw $s0, 0x18($sp) -/* 078E20 7F0442F0 8C910004 */ lw $s1, 4($a0) -/* 078E24 7F0442F4 00809025 */ move $s2, $a0 -/* 078E28 7F0442F8 8E220064 */ lw $v0, 0x64($s1) -/* 078E2C 7F0442FC 8E300014 */ lw $s0, 0x14($s1) -/* 078E30 7F044300 304E0004 */ andi $t6, $v0, 4 -/* 078E34 7F044304 51C0000A */ beql $t6, $zero, .L7F044330 -/* 078E38 7F044308 8E05001C */ lw $a1, 0x1c($s0) -/* 078E3C 7F04430C 92260002 */ lbu $a2, 2($s1) -/* 078E40 7F044310 02202025 */ move $a0, $s1 -/* 078E44 7F044314 24050001 */ li $a1, 1 -/* 078E48 7F044318 30CF0004 */ andi $t7, $a2, 4 -/* 078E4C 7F04431C 0FC10366 */ jal sub_GAME_7F040D98 -/* 078E50 7F044320 01E03025 */ move $a2, $t7 -/* 078E54 7F044324 10000036 */ b .L7F044400 -/* 078E58 7F044328 8FBF0024 */ lw $ra, 0x24($sp) -/* 078E5C 7F04432C 8E05001C */ lw $a1, 0x1c($s0) -.L7F044330: -/* 078E60 7F044330 30580040 */ andi $t8, $v0, 0x40 -/* 078E64 7F044334 50A00025 */ beql $a1, $zero, .L7F0443CC -/* 078E68 7F044338 924C0001 */ lbu $t4, 1($s2) -/* 078E6C 7F04433C 13000022 */ beqz $t8, .L7F0443C8 -/* 078E70 7F044340 00003025 */ move $a2, $zero -/* 078E74 7F044344 0FC1B198 */ jal sub_GAME_7F06C660 -/* 078E78 7F044348 8E040018 */ lw $a0, 0x18($s0) -/* 078E7C 7F04434C AFA2002C */ sw $v0, 0x2c($sp) -/* 078E80 7F044350 92590001 */ lbu $t9, 1($s2) -/* 078E84 7F044354 37280002 */ ori $t0, $t9, 2 -/* 078E88 7F044358 A2480001 */ sb $t0, 1($s2) -/* 078E8C 7F04435C 8E090008 */ lw $t1, 8($s0) -/* 078E90 7F044360 8524000E */ lh $a0, 0xe($t1) -/* 078E94 7F044364 00045180 */ sll $t2, $a0, 6 -/* 078E98 7F044368 0FC2F5C5 */ jal sub_GAME_7F0BD714 -/* 078E9C 7F04436C 01402025 */ move $a0, $t2 -/* 078EA0 7F044370 AE02000C */ sw $v0, 0xc($s0) -/* 078EA4 7F044374 8E25006C */ lw $a1, 0x6c($s1) -/* 078EA8 7F044378 8FA4002C */ lw $a0, 0x2c($sp) -/* 078EAC 7F04437C 00403025 */ move $a2, $v0 -/* 078EB0 7F044380 0FC16063 */ jal sub_GAME_7F05818C -/* 078EB4 7F044384 24A50004 */ addiu $a1, $a1, 4 -/* 078EB8 7F044388 8E0B0008 */ lw $t3, 8($s0) -/* 078EBC 7F04438C 02002025 */ move $a0, $s0 -/* 078EC0 7F044390 0FC1BBA9 */ jal sub_GAME_7F06EEA4 -/* 078EC4 7F044394 8D650000 */ lw $a1, ($t3) -/* 078EC8 7F044398 0FC10F5C */ jal handle_thrown_explosive_detonation -/* 078ECC 7F04439C 02402025 */ move $a0, $s2 -/* 078ED0 7F0443A0 8E510020 */ lw $s1, 0x20($s2) -/* 078ED4 7F0443A4 52200016 */ beql $s1, $zero, .L7F044400 -/* 078ED8 7F0443A8 8FBF0024 */ lw $ra, 0x24($sp) -.L7F0443AC: -/* 078EDC 7F0443AC 8E300024 */ lw $s0, 0x24($s1) -/* 078EE0 7F0443B0 0FC110B7 */ jal sub_GAME_7F0442DC -/* 078EE4 7F0443B4 02202025 */ move $a0, $s1 -/* 078EE8 7F0443B8 1600FFFC */ bnez $s0, .L7F0443AC -/* 078EEC 7F0443BC 02008825 */ move $s1, $s0 -/* 078EF0 7F0443C0 1000000F */ b .L7F044400 -/* 078EF4 7F0443C4 8FBF0024 */ lw $ra, 0x24($sp) -.L7F0443C8: -/* 078EF8 7F0443C8 924C0001 */ lbu $t4, 1($s2) -.L7F0443CC: -/* 078EFC 7F0443CC 02402025 */ move $a0, $s2 -/* 078F00 7F0443D0 318DFFFD */ andi $t5, $t4, 0xfffd -/* 078F04 7F0443D4 0FC10F5C */ jal handle_thrown_explosive_detonation -/* 078F08 7F0443D8 A24D0001 */ sb $t5, 1($s2) -/* 078F0C 7F0443DC 8E510020 */ lw $s1, 0x20($s2) -/* 078F10 7F0443E0 52200007 */ beql $s1, $zero, .L7F044400 -/* 078F14 7F0443E4 8FBF0024 */ lw $ra, 0x24($sp) -.L7F0443E8: -/* 078F18 7F0443E8 8E300024 */ lw $s0, 0x24($s1) -/* 078F1C 7F0443EC 0FC11093 */ jal sub_GAME_7F04424C -/* 078F20 7F0443F0 02202025 */ move $a0, $s1 -/* 078F24 7F0443F4 1600FFFC */ bnez $s0, .L7F0443E8 -/* 078F28 7F0443F8 02008825 */ move $s1, $s0 -/* 078F2C 7F0443FC 8FBF0024 */ lw $ra, 0x24($sp) -.L7F044400: -/* 078F30 7F044400 8FB00018 */ lw $s0, 0x18($sp) -/* 078F34 7F044404 8FB1001C */ lw $s1, 0x1c($sp) -/* 078F38 7F044408 8FB20020 */ lw $s2, 0x20($sp) -/* 078F3C 7F04440C 03E00008 */ jr $ra -/* 078F40 7F044410 27BD0040 */ addiu $sp, $sp, 0x40 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F044414(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F044414 -/* 078F44 7F044414 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 078F48 7F044418 AFB50044 */ sw $s5, 0x44($sp) -/* 078F4C 7F04441C AFB20038 */ sw $s2, 0x38($sp) -/* 078F50 7F044420 AFB10034 */ sw $s1, 0x34($sp) -/* 078F54 7F044424 AFB00030 */ sw $s0, 0x30($sp) -/* 078F58 7F044428 00A08025 */ move $s0, $a1 -/* 078F5C 7F04442C 00E08825 */ move $s1, $a3 -/* 078F60 7F044430 00809025 */ move $s2, $a0 -/* 078F64 7F044434 00C0A825 */ move $s5, $a2 -/* 078F68 7F044438 AFBF004C */ sw $ra, 0x4c($sp) -/* 078F6C 7F04443C AFB60048 */ sw $s6, 0x48($sp) -/* 078F70 7F044440 AFB40040 */ sw $s4, 0x40($sp) -/* 078F74 7F044444 AFB3003C */ sw $s3, 0x3c($sp) -/* 078F78 7F044448 F7B80028 */ sdc1 $f24, 0x28($sp) -/* 078F7C 7F04444C F7B60020 */ sdc1 $f22, 0x20($sp) -/* 078F80 7F044450 F7B40018 */ sdc1 $f20, 0x18($sp) -/* 078F84 7F044454 18A0008A */ blez $a1, .L7F044680 -/* 078F88 7F044458 00004025 */ move $t0, $zero -/* 078F8C 7F04445C 4480C000 */ mtc1 $zero, $f24 -/* 078F90 7F044460 4480B800 */ mtc1 $zero, $f23 -/* 078F94 7F044464 4480B000 */ mtc1 $zero, $f22 -/* 078F98 7F044468 00809825 */ move $s3, $a0 -/* 078F9C 7F04446C D7B40088 */ ldc1 $f20, 0x88($sp) -/* 078FA0 7F044470 27B60074 */ addiu $s6, $sp, 0x74 -.L7F044474: -/* 078FA4 7F044474 25140001 */ addiu $s4, $t0, 1 -/* 078FA8 7F044478 0290001A */ div $zero, $s4, $s0 -/* 078FAC 7F04447C 00002810 */ mfhi $a1 -/* 078FB0 7F044480 000570C0 */ sll $t6, $a1, 3 -/* 078FB4 7F044484 024E1021 */ addu $v0, $s2, $t6 -/* 078FB8 7F044488 C4460004 */ lwc1 $f6, 4($v0) -/* 078FBC 7F04448C C6640004 */ lwc1 $f4, 4($s3) -/* 078FC0 7F044490 C44A0000 */ lwc1 $f10, ($v0) -/* 078FC4 7F044494 46003221 */ cvt.d.s $f8, $f6 -/* 078FC8 7F044498 46002021 */ cvt.d.s $f0, $f4 -/* 078FCC 7F04449C C6620000 */ lwc1 $f2, ($s3) -/* 078FD0 7F0444A0 46204301 */ sub.d $f12, $f8, $f0 -/* 078FD4 7F0444A4 16000002 */ bnez $s0, .L7F0444B0 -/* 078FD8 7F0444A8 00000000 */ nop -/* 078FDC 7F0444AC 0007000D */ break 7 -.L7F0444B0: -/* 078FE0 7F0444B0 2401FFFF */ li $at, -1 -/* 078FE4 7F0444B4 16010004 */ bne $s0, $at, .L7F0444C8 -/* 078FE8 7F0444B8 3C018000 */ lui $at, 0x8000 -/* 078FEC 7F0444BC 16810002 */ bne $s4, $at, .L7F0444C8 -/* 078FF0 7F0444C0 00000000 */ nop -/* 078FF4 7F0444C4 0006000D */ break 6 -.L7F0444C8: -/* 078FF8 7F0444C8 46366032 */ c.eq.d $f12, $f22 -/* 078FFC 7F0444CC 24AF0001 */ addiu $t7, $a1, 1 -/* 079000 7F0444D0 460054A1 */ cvt.d.s $f18, $f10 -/* 079004 7F0444D4 46001421 */ cvt.d.s $f16, $f2 -/* 079008 7F0444D8 45000011 */ bc1f .L7F044520 -/* 07900C 7F0444DC 46328381 */ sub.d $f14, $f16, $f18 -/* 079010 7F0444E0 46367032 */ c.eq.d $f14, $f22 -/* 079014 7F0444E4 00000000 */ nop -/* 079018 7F0444E8 4500000D */ bc1f .L7F044520 -/* 07901C 7F0444EC 00000000 */ nop -/* 079020 7F0444F0 E7A20074 */ swc1 $f2, 0x74($sp) -/* 079024 7F0444F4 E7B80078 */ swc1 $f24, 0x78($sp) -/* 079028 7F0444F8 C6640004 */ lwc1 $f4, 4($s3) -/* 07902C 7F0444FC 02C02025 */ move $a0, $s6 -/* 079030 7F044500 02A02825 */ move $a1, $s5 -/* 079034 7F044504 02203025 */ move $a2, $s1 -/* 079038 7F044508 0FC0F336 */ jal sub_GAME_7F03CCD8 -/* 07903C 7F04450C E7A4007C */ swc1 $f4, 0x7c($sp) -/* 079040 7F044510 50400058 */ beql $v0, $zero, .L7F044674 -/* 079044 7F044514 02804025 */ move $t0, $s4 -/* 079048 7F044518 1000005A */ b .L7F044684 -/* 07904C 7F04451C 00001025 */ move $v0, $zero -.L7F044520: -/* 079050 7F044520 01F0001A */ div $zero, $t7, $s0 -/* 079054 7F044524 462E0182 */ mul.d $f6, $f0, $f14 -/* 079058 7F044528 00001010 */ mfhi $v0 -/* 07905C 7F04452C 00401825 */ move $v1, $v0 -/* 079060 7F044530 00002025 */ move $a0, $zero -/* 079064 7F044534 462C8202 */ mul.d $f8, $f16, $f12 -/* 079068 7F044538 46283080 */ add.d $f2, $f6, $f8 -/* 07906C 7F04453C 16000002 */ bnez $s0, .L7F044548 -/* 079070 7F044540 00000000 */ nop -/* 079074 7F044544 0007000D */ break 7 -.L7F044548: -/* 079078 7F044548 2401FFFF */ li $at, -1 -/* 07907C 7F04454C 16010004 */ bne $s0, $at, .L7F044560 -/* 079080 7F044550 3C018000 */ lui $at, 0x8000 -/* 079084 7F044554 15E10002 */ bne $t7, $at, .L7F044560 -/* 079088 7F044558 00000000 */ nop -/* 07908C 7F04455C 0006000D */ break 6 -.L7F044560: -/* 079090 7F044560 1102001D */ beq $t0, $v0, .L7F0445D8 -/* 079094 7F044564 00000000 */ nop -/* 079098 7F044568 0003C0C0 */ sll $t8, $v1, 3 -.L7F04456C: -/* 07909C 7F04456C 02581021 */ addu $v0, $s2, $t8 -/* 0790A0 7F044570 C44A0004 */ lwc1 $f10, 4($v0) -/* 0790A4 7F044574 C4460000 */ lwc1 $f6, ($v0) -/* 0790A8 7F044578 460054A1 */ cvt.d.s $f18, $f10 -/* 0790AC 7F04457C 46003221 */ cvt.d.s $f8, $f6 -/* 0790B0 7F044580 462E9102 */ mul.d $f4, $f18, $f14 -/* 0790B4 7F044584 00000000 */ nop -/* 0790B8 7F044588 462C4282 */ mul.d $f10, $f8, $f12 -/* 0790BC 7F04458C 462A2500 */ add.d $f20, $f4, $f10 -/* 0790C0 7F044590 4622A032 */ c.eq.d $f20, $f2 -/* 0790C4 7F044594 00000000 */ nop -/* 0790C8 7F044598 4500000F */ bc1f .L7F0445D8 -/* 0790CC 7F04459C 00000000 */ nop -/* 0790D0 7F0445A0 24790001 */ addiu $t9, $v1, 1 -/* 0790D4 7F0445A4 0330001A */ div $zero, $t9, $s0 -/* 0790D8 7F0445A8 00001810 */ mfhi $v1 -/* 0790DC 7F0445AC 16000002 */ bnez $s0, .L7F0445B8 -/* 0790E0 7F0445B0 00000000 */ nop -/* 0790E4 7F0445B4 0007000D */ break 7 -.L7F0445B8: -/* 0790E8 7F0445B8 2401FFFF */ li $at, -1 -/* 0790EC 7F0445BC 16010004 */ bne $s0, $at, .L7F0445D0 -/* 0790F0 7F0445C0 3C018000 */ lui $at, 0x8000 -/* 0790F4 7F0445C4 17210002 */ bne $t9, $at, .L7F0445D0 -/* 0790F8 7F0445C8 00000000 */ nop -/* 0790FC 7F0445CC 0006000D */ break 6 -.L7F0445D0: -/* 079100 7F0445D0 5468FFE6 */ bnel $v1, $t0, .L7F04456C -/* 079104 7F0445D4 0003C0C0 */ sll $t8, $v1, 3 -.L7F0445D8: -/* 079108 7F0445D8 1A200021 */ blez $s1, .L7F044660 -/* 07910C 7F0445DC 00000000 */ nop -/* 079110 7F0445E0 02A01025 */ move $v0, $s5 -.L7F0445E4: -/* 079114 7F0445E4 C4520004 */ lwc1 $f18, 4($v0) -/* 079118 7F0445E8 C4440000 */ lwc1 $f4, ($v0) -/* 07911C 7F0445EC 4622A032 */ c.eq.d $f20, $f2 -/* 079120 7F0445F0 460091A1 */ cvt.d.s $f6, $f18 -/* 079124 7F0445F4 460022A1 */ cvt.d.s $f10, $f4 -/* 079128 7F0445F8 462E3202 */ mul.d $f8, $f6, $f14 -/* 07912C 7F0445FC 00000000 */ nop -/* 079130 7F044600 462C5482 */ mul.d $f18, $f10, $f12 -/* 079134 7F044604 45000003 */ bc1f .L7F044614 -/* 079138 7F044608 46324000 */ add.d $f0, $f8, $f18 -/* 07913C 7F04460C 46201181 */ sub.d $f6, $f2, $f0 -/* 079140 7F044610 46223500 */ add.d $f20, $f6, $f2 -.L7F044614: -/* 079144 7F044614 4622003C */ c.lt.d $f0, $f2 -/* 079148 7F044618 00000000 */ nop -/* 07914C 7F04461C 45020006 */ bc1fl .L7F044638 -/* 079150 7F044620 4620103C */ c.lt.d $f2, $f0 -/* 079154 7F044624 4622A03C */ c.lt.d $f20, $f2 -/* 079158 7F044628 00000000 */ nop -/* 07915C 7F04462C 4501000C */ bc1t .L7F044660 -/* 079160 7F044630 00000000 */ nop -/* 079164 7F044634 4620103C */ c.lt.d $f2, $f0 -.L7F044638: -/* 079168 7F044638 00000000 */ nop -/* 07916C 7F04463C 45020006 */ bc1fl .L7F044658 -/* 079170 7F044640 24840001 */ addiu $a0, $a0, 1 -/* 079174 7F044644 4634103C */ c.lt.d $f2, $f20 -/* 079178 7F044648 00000000 */ nop -/* 07917C 7F04464C 45010004 */ bc1t .L7F044660 -/* 079180 7F044650 00000000 */ nop -/* 079184 7F044654 24840001 */ addiu $a0, $a0, 1 -.L7F044658: -/* 079188 7F044658 1491FFE2 */ bne $a0, $s1, .L7F0445E4 -/* 07918C 7F04465C 24420008 */ addiu $v0, $v0, 8 -.L7F044660: -/* 079190 7F044660 54910004 */ bnel $a0, $s1, .L7F044674 -/* 079194 7F044664 02804025 */ move $t0, $s4 -/* 079198 7F044668 10000006 */ b .L7F044684 -/* 07919C 7F04466C 24020001 */ li $v0, 1 -/* 0791A0 7F044670 02804025 */ move $t0, $s4 -.L7F044674: -/* 0791A4 7F044674 1690FF7F */ bne $s4, $s0, .L7F044474 -/* 0791A8 7F044678 26730008 */ addiu $s3, $s3, 8 -/* 0791AC 7F04467C F7B40088 */ sdc1 $f20, 0x88($sp) -.L7F044680: -/* 0791B0 7F044680 00001025 */ move $v0, $zero -.L7F044684: -/* 0791B4 7F044684 8FBF004C */ lw $ra, 0x4c($sp) -/* 0791B8 7F044688 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 0791BC 7F04468C D7B60020 */ ldc1 $f22, 0x20($sp) -/* 0791C0 7F044690 D7B80028 */ ldc1 $f24, 0x28($sp) -/* 0791C4 7F044694 8FB00030 */ lw $s0, 0x30($sp) -/* 0791C8 7F044698 8FB10034 */ lw $s1, 0x34($sp) -/* 0791CC 7F04469C 8FB20038 */ lw $s2, 0x38($sp) -/* 0791D0 7F0446A0 8FB3003C */ lw $s3, 0x3c($sp) -/* 0791D4 7F0446A4 8FB40040 */ lw $s4, 0x40($sp) -/* 0791D8 7F0446A8 8FB50044 */ lw $s5, 0x44($sp) -/* 0791DC 7F0446AC 8FB60048 */ lw $s6, 0x48($sp) -/* 0791E0 7F0446B0 03E00008 */ jr $ra -/* 0791E4 7F0446B4 27BD00B8 */ addiu $sp, $sp, 0xb8 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0446B8(void) { - -} -#else - -#ifdef VERSION_US -GLOBAL_ASM( -.text -glabel sub_GAME_7F0446B8 -/* 0791E8 7F0446B8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0791EC 7F0446BC AFBF0014 */ sw $ra, 0x14($sp) -/* 0791F0 7F0446C0 AFA40018 */ sw $a0, 0x18($sp) -/* 0791F4 7F0446C4 AFA5001C */ sw $a1, 0x1c($sp) -/* 0791F8 7F0446C8 AFA60020 */ sw $a2, 0x20($sp) -/* 0791FC 7F0446CC 0FC11105 */ jal sub_GAME_7F044414 -/* 079200 7F0446D0 AFA70024 */ sw $a3, 0x24($sp) -/* 079204 7F0446D4 10400003 */ beqz $v0, .L7F0446E4 -/* 079208 7F0446D8 8FA40020 */ lw $a0, 0x20($sp) -/* 07920C 7F0446DC 1000000A */ b .L7F044708 -/* 079210 7F0446E0 00001025 */ move $v0, $zero -.L7F0446E4: -/* 079214 7F0446E4 8FA50024 */ lw $a1, 0x24($sp) -/* 079218 7F0446E8 8FA60018 */ lw $a2, 0x18($sp) -/* 07921C 7F0446EC 0FC11105 */ jal sub_GAME_7F044414 -/* 079220 7F0446F0 8FA7001C */ lw $a3, 0x1c($sp) -/* 079224 7F0446F4 50400004 */ beql $v0, $zero, .L7F044708 -/* 079228 7F0446F8 24020001 */ li $v0, 1 -/* 07922C 7F0446FC 10000002 */ b .L7F044708 -/* 079230 7F044700 00001025 */ move $v0, $zero -/* 079234 7F044704 24020001 */ li $v0, 1 -.L7F044708: -/* 079238 7F044708 8FBF0014 */ lw $ra, 0x14($sp) -/* 07923C 7F04470C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 079240 7F044710 03E00008 */ jr $ra -/* 079244 7F044714 00000000 */ nop -) -#endif - -#ifdef VERSION_JP -GLOBAL_ASM( -.text -glabel sub_GAME_7F0446B8 -/* 079510 7F0449A0 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 079514 7F0449A4 AFB60038 */ sw $s6, 0x38($sp) -/* 079518 7F0449A8 AFB50034 */ sw $s5, 0x34($sp) -/* 07951C 7F0449AC AFB40030 */ sw $s4, 0x30($sp) -/* 079520 7F0449B0 AFB3002C */ sw $s3, 0x2c($sp) -/* 079524 7F0449B4 AFB10024 */ sw $s1, 0x24($sp) -/* 079528 7F0449B8 00A09825 */ move $s3, $a1 -/* 07952C 7F0449BC 00E0A025 */ move $s4, $a3 -/* 079530 7F0449C0 0080A825 */ move $s5, $a0 -/* 079534 7F0449C4 00C0B025 */ move $s6, $a2 -/* 079538 7F0449C8 AFBF003C */ sw $ra, 0x3c($sp) -/* 07953C 7F0449CC AFB20028 */ sw $s2, 0x28($sp) -/* 079540 7F0449D0 AFB00020 */ sw $s0, 0x20($sp) -/* 079544 7F0449D4 F7B40018 */ sdc1 $f20, 0x18($sp) -/* 079548 7F0449D8 18A00014 */ blez $a1, .Ljp7F044A2C -/* 07954C 7F0449DC 00008825 */ move $s1, $zero -/* 079550 7F0449E0 4480A000 */ mtc1 $zero, $f20 -/* 079554 7F0449E4 00808025 */ move $s0, $a0 -/* 079558 7F0449E8 27B20048 */ addiu $s2, $sp, 0x48 -.Ljp7F0449EC: -/* 07955C 7F0449EC C6040000 */ lwc1 $f4, ($s0) -/* 079560 7F0449F0 E7B4004C */ swc1 $f20, 0x4c($sp) -/* 079564 7F0449F4 02402025 */ move $a0, $s2 -/* 079568 7F0449F8 E7A40048 */ swc1 $f4, 0x48($sp) -/* 07956C 7F0449FC C6060004 */ lwc1 $f6, 4($s0) -/* 079570 7F044A00 02C02825 */ move $a1, $s6 -/* 079574 7F044A04 02803025 */ move $a2, $s4 -/* 079578 7F044A08 0FC0F3F6 */ jal sub_GAME_7F03CCD8 -/* 07957C 7F044A0C E7A60050 */ swc1 $f6, 0x50($sp) -/* 079580 7F044A10 10400003 */ beqz $v0, .Ljp7F044A20 -/* 079584 7F044A14 26310001 */ addiu $s1, $s1, 1 -/* 079588 7F044A18 10000029 */ b .Ljp7F044AC0 -/* 07958C 7F044A1C 24020001 */ li $v0, 1 -.Ljp7F044A20: -/* 079590 7F044A20 1633FFF2 */ bne $s1, $s3, .Ljp7F0449EC -/* 079594 7F044A24 26100008 */ addiu $s0, $s0, 8 -/* 079598 7F044A28 00008825 */ move $s1, $zero -.Ljp7F044A2C: -/* 07959C 7F044A2C 4480A000 */ mtc1 $zero, $f20 -/* 0795A0 7F044A30 1A800011 */ blez $s4, .Ljp7F044A78 -/* 0795A4 7F044A34 27B20048 */ addiu $s2, $sp, 0x48 -/* 0795A8 7F044A38 02C08025 */ move $s0, $s6 -.Ljp7F044A3C: -/* 0795AC 7F044A3C C6080000 */ lwc1 $f8, ($s0) -/* 0795B0 7F044A40 E7B4004C */ swc1 $f20, 0x4c($sp) -/* 0795B4 7F044A44 02402025 */ move $a0, $s2 -/* 0795B8 7F044A48 E7A80048 */ swc1 $f8, 0x48($sp) -/* 0795BC 7F044A4C C60A0004 */ lwc1 $f10, 4($s0) -/* 0795C0 7F044A50 02A02825 */ move $a1, $s5 -/* 0795C4 7F044A54 02603025 */ move $a2, $s3 -/* 0795C8 7F044A58 0FC0F3F6 */ jal sub_GAME_7F03CCD8 -/* 0795CC 7F044A5C E7AA0050 */ swc1 $f10, 0x50($sp) -/* 0795D0 7F044A60 10400003 */ beqz $v0, .Ljp7F044A70 -/* 0795D4 7F044A64 26310001 */ addiu $s1, $s1, 1 -/* 0795D8 7F044A68 10000015 */ b .Ljp7F044AC0 -/* 0795DC 7F044A6C 24020001 */ li $v0, 1 -.Ljp7F044A70: -/* 0795E0 7F044A70 1634FFF2 */ bne $s1, $s4, .Ljp7F044A3C -/* 0795E4 7F044A74 26100008 */ addiu $s0, $s0, 8 -.Ljp7F044A78: -/* 0795E8 7F044A78 02A02025 */ move $a0, $s5 -/* 0795EC 7F044A7C 02602825 */ move $a1, $s3 -/* 0795F0 7F044A80 02C03025 */ move $a2, $s6 -/* 0795F4 7F044A84 0FC111BF */ jal sub_GAME_7F044414 -/* 0795F8 7F044A88 02803825 */ move $a3, $s4 -/* 0795FC 7F044A8C 10400003 */ beqz $v0, .Ljp7F044A9C -/* 079600 7F044A90 02C02025 */ move $a0, $s6 -/* 079604 7F044A94 1000000A */ b .Ljp7F044AC0 -/* 079608 7F044A98 00001025 */ move $v0, $zero -.Ljp7F044A9C: -/* 07960C 7F044A9C 02802825 */ move $a1, $s4 -/* 079610 7F044AA0 02A03025 */ move $a2, $s5 -/* 079614 7F044AA4 0FC111BF */ jal sub_GAME_7F044414 -/* 079618 7F044AA8 02603825 */ move $a3, $s3 -/* 07961C 7F044AAC 50400004 */ beql $v0, $zero, .Ljp7F044AC0 -/* 079620 7F044AB0 24020001 */ li $v0, 1 -/* 079624 7F044AB4 10000002 */ b .Ljp7F044AC0 -/* 079628 7F044AB8 00001025 */ move $v0, $zero -/* 07962C 7F044ABC 24020001 */ li $v0, 1 -.Ljp7F044AC0: -/* 079630 7F044AC0 8FBF003C */ lw $ra, 0x3c($sp) -/* 079634 7F044AC4 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 079638 7F044AC8 8FB00020 */ lw $s0, 0x20($sp) -/* 07963C 7F044ACC 8FB10024 */ lw $s1, 0x24($sp) -/* 079640 7F044AD0 8FB20028 */ lw $s2, 0x28($sp) -/* 079644 7F044AD4 8FB3002C */ lw $s3, 0x2c($sp) -/* 079648 7F044AD8 8FB40030 */ lw $s4, 0x30($sp) -/* 07964C 7F044ADC 8FB50034 */ lw $s5, 0x34($sp) -/* 079650 7F044AE0 8FB60038 */ lw $s6, 0x38($sp) -/* 079654 7F044AE4 03E00008 */ jr $ra -/* 079658 7F044AE8 27BD0058 */ addiu $sp, $sp, 0x58 -) -#endif - -#endif - - - -#ifdef NONMATCHING -void sub_GAME_7F044718(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F044718 -/* 079248 7F044718 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 07924C 7F04471C AFB40060 */ sw $s4, 0x60($sp) -/* 079250 7F044720 AFB3005C */ sw $s3, 0x5c($sp) -/* 079254 7F044724 F7BC0040 */ sdc1 $f28, 0x40($sp) -/* 079258 7F044728 4485E000 */ mtc1 $a1, $f28 -/* 07925C 7F04472C AFBF0064 */ sw $ra, 0x64($sp) -/* 079260 7F044730 AFB20058 */ sw $s2, 0x58($sp) -/* 079264 7F044734 AFB10054 */ sw $s1, 0x54($sp) -/* 079268 7F044738 AFB00050 */ sw $s0, 0x50($sp) -/* 07926C 7F04473C F7BE0048 */ sdc1 $f30, 0x48($sp) -/* 079270 7F044740 F7BA0038 */ sdc1 $f26, 0x38($sp) -/* 079274 7F044744 F7B80030 */ sdc1 $f24, 0x30($sp) -/* 079278 7F044748 F7B60028 */ sdc1 $f22, 0x28($sp) -/* 07927C 7F04474C F7B40020 */ sdc1 $f20, 0x20($sp) -/* 079280 7F044750 00E09825 */ move $s3, $a3 -/* 079284 7F044754 00C0A025 */ move $s4, $a2 -/* 079288 7F044758 C4960000 */ lwc1 $f22, ($a0) -/* 07928C 7F04475C C4980008 */ lwc1 $f24, 8($a0) -/* 079290 7F044760 18E00042 */ blez $a3, .L7F04486C -/* 079294 7F044764 00001025 */ move $v0, $zero -/* 079298 7F044768 4480F000 */ mtc1 $zero, $f30 -/* 07929C 7F04476C 00C08825 */ move $s1, $a2 -.L7F044770: -/* 0792A0 7F044770 24520001 */ addiu $s2, $v0, 1 -/* 0792A4 7F044774 0253001A */ div $zero, $s2, $s3 -/* 0792A8 7F044778 00007010 */ mfhi $t6 -/* 0792AC 7F04477C 000E78C0 */ sll $t7, $t6, 3 -/* 0792B0 7F044780 028F8021 */ addu $s0, $s4, $t7 -/* 0792B4 7F044784 8E060000 */ lw $a2, ($s0) -/* 0792B8 7F044788 8E070004 */ lw $a3, 4($s0) -/* 0792BC 7F04478C C62C0000 */ lwc1 $f12, ($s1) -/* 0792C0 7F044790 C62E0004 */ lwc1 $f14, 4($s1) -/* 0792C4 7F044794 16600002 */ bnez $s3, .L7F0447A0 -/* 0792C8 7F044798 00000000 */ nop -/* 0792CC 7F04479C 0007000D */ break 7 -.L7F0447A0: -/* 0792D0 7F0447A0 2401FFFF */ li $at, -1 -/* 0792D4 7F0447A4 16610004 */ bne $s3, $at, .L7F0447B8 -/* 0792D8 7F0447A8 3C018000 */ lui $at, 0x8000 -/* 0792DC 7F0447AC 16410002 */ bne $s2, $at, .L7F0447B8 -/* 0792E0 7F0447B0 00000000 */ nop -/* 0792E4 7F0447B4 0006000D */ break 6 -.L7F0447B8: -/* 0792E8 7F0447B8 E7B80014 */ swc1 $f24, 0x14($sp) -/* 0792EC 7F0447BC 0FC2C5B1 */ jal sub_GAME_7F0B16C4 -/* 0792F0 7F0447C0 E7B60010 */ swc1 $f22, 0x10($sp) -/* 0792F4 7F0447C4 461E003C */ c.lt.s $f0, $f30 -/* 0792F8 7F0447C8 4406B000 */ mfc1 $a2, $f22 -/* 0792FC 7F0447CC 4407C000 */ mfc1 $a3, $f24 -/* 079300 7F0447D0 46000506 */ mov.s $f20, $f0 -/* 079304 7F0447D4 45020003 */ bc1fl .L7F0447E4 -/* 079308 7F0447D8 C62C0000 */ lwc1 $f12, ($s1) -/* 07930C 7F0447DC 46000507 */ neg.s $f20, $f0 -/* 079310 7F0447E0 C62C0000 */ lwc1 $f12, ($s1) -.L7F0447E4: -/* 079314 7F0447E4 0FC2C5E5 */ jal sub_GAME_7F0B1794 -/* 079318 7F0447E8 C62E0004 */ lwc1 $f14, 4($s1) -/* 07931C 7F0447EC 4406B000 */ mfc1 $a2, $f22 -/* 079320 7F0447F0 4407C000 */ mfc1 $a3, $f24 -/* 079324 7F0447F4 46000686 */ mov.s $f26, $f0 -/* 079328 7F0447F8 C60C0000 */ lwc1 $f12, ($s0) -/* 07932C 7F0447FC 0FC2C5E5 */ jal sub_GAME_7F0B1794 -/* 079330 7F044800 C60E0004 */ lwc1 $f14, 4($s0) -/* 079334 7F044804 461CA03C */ c.lt.s $f20, $f28 -/* 079338 7F044808 00000000 */ nop -/* 07933C 7F04480C 45020015 */ bc1fl .L7F044864 -/* 079340 7F044810 02401025 */ move $v0, $s2 -/* 079344 7F044814 461CD03C */ c.lt.s $f26, $f28 -/* 079348 7F044818 00000000 */ nop -/* 07934C 7F04481C 4501000E */ bc1t .L7F044858 -/* 079350 7F044820 00000000 */ nop -/* 079354 7F044824 461C003C */ c.lt.s $f0, $f28 -/* 079358 7F044828 00000000 */ nop -/* 07935C 7F04482C 4501000A */ bc1t .L7F044858 -/* 079360 7F044830 00000000 */ nop -/* 079364 7F044834 C62C0000 */ lwc1 $f12, ($s1) -/* 079368 7F044838 C62E0004 */ lwc1 $f14, 4($s1) -/* 07936C 7F04483C 8E060000 */ lw $a2, ($s0) -/* 079370 7F044840 8E070004 */ lw $a3, 4($s0) -/* 079374 7F044844 E7B80014 */ swc1 $f24, 0x14($sp) -/* 079378 7F044848 0FC2C5F9 */ jal sub_GAME_7F0B17E4 -/* 07937C 7F04484C E7B60010 */ swc1 $f22, 0x10($sp) -/* 079380 7F044850 50400004 */ beql $v0, $zero, .L7F044864 -/* 079384 7F044854 02401025 */ move $v0, $s2 -.L7F044858: -/* 079388 7F044858 10000005 */ b .L7F044870 -/* 07938C 7F04485C 24020001 */ li $v0, 1 -/* 079390 7F044860 02401025 */ move $v0, $s2 -.L7F044864: -/* 079394 7F044864 1653FFC2 */ bne $s2, $s3, .L7F044770 -/* 079398 7F044868 26310008 */ addiu $s1, $s1, 8 -.L7F04486C: -/* 07939C 7F04486C 00001025 */ move $v0, $zero -.L7F044870: -/* 0793A0 7F044870 8FBF0064 */ lw $ra, 0x64($sp) -/* 0793A4 7F044874 D7B40020 */ ldc1 $f20, 0x20($sp) -/* 0793A8 7F044878 D7B60028 */ ldc1 $f22, 0x28($sp) -/* 0793AC 7F04487C D7B80030 */ ldc1 $f24, 0x30($sp) -/* 0793B0 7F044880 D7BA0038 */ ldc1 $f26, 0x38($sp) -/* 0793B4 7F044884 D7BC0040 */ ldc1 $f28, 0x40($sp) -/* 0793B8 7F044888 D7BE0048 */ ldc1 $f30, 0x48($sp) -/* 0793BC 7F04488C 8FB00050 */ lw $s0, 0x50($sp) -/* 0793C0 7F044890 8FB10054 */ lw $s1, 0x54($sp) -/* 0793C4 7F044894 8FB20058 */ lw $s2, 0x58($sp) -/* 0793C8 7F044898 8FB3005C */ lw $s3, 0x5c($sp) -/* 0793CC 7F04489C 8FB40060 */ lw $s4, 0x60($sp) -/* 0793D0 7F0448A0 03E00008 */ jr $ra -/* 0793D4 7F0448A4 27BD0068 */ addiu $sp, $sp, 0x68 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0448A8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0448A8 -/* 0793D8 7F0448A8 27BDFF60 */ addiu $sp, $sp, -0xa0 -/* 0793DC 7F0448AC AFBF0034 */ sw $ra, 0x34($sp) -/* 0793E0 7F0448B0 AFB50030 */ sw $s5, 0x30($sp) -/* 0793E4 7F0448B4 27AE008C */ addiu $t6, $sp, 0x8c -/* 0793E8 7F0448B8 0080A825 */ move $s5, $a0 -/* 0793EC 7F0448BC AFB4002C */ sw $s4, 0x2c($sp) -/* 0793F0 7F0448C0 AFB30028 */ sw $s3, 0x28($sp) -/* 0793F4 7F0448C4 AFB20024 */ sw $s2, 0x24($sp) -/* 0793F8 7F0448C8 AFB10020 */ sw $s1, 0x20($sp) -/* 0793FC 7F0448CC AFB0001C */ sw $s0, 0x1c($sp) -/* 079400 7F0448D0 AFAE0010 */ sw $t6, 0x10($sp) -/* 079404 7F0448D4 27A50098 */ addiu $a1, $sp, 0x98 -/* 079408 7F0448D8 27A60094 */ addiu $a2, $sp, 0x94 -/* 07940C 7F0448DC 0FC0F308 */ jal sub_GAME_7F03CC20 -/* 079410 7F0448E0 27A70090 */ addiu $a3, $sp, 0x90 -/* 079414 7F0448E4 8FAF0094 */ lw $t7, 0x94($sp) -/* 079418 7F0448E8 27B0006C */ addiu $s0, $sp, 0x6c -/* 07941C 7F0448EC 02A02025 */ move $a0, $s5 -/* 079420 7F0448F0 1DE00003 */ bgtz $t7, .L7F044900 -/* 079424 7F0448F4 00000000 */ nop -/* 079428 7F0448F8 10000086 */ b .L7F044B14 -/* 07942C 7F0448FC 24020001 */ li $v0, 1 -.L7F044900: -/* 079430 7F044900 0FC0F2E3 */ jal sub_GAME_7F03CB8C -/* 079434 7F044904 02002825 */ move $a1, $s0 -/* 079438 7F044908 0FC0F8FF */ jal sub_GAME_7F03E3FC -/* 07943C 7F04490C 02002025 */ move $a0, $s0 -/* 079440 7F044910 3C138007 */ lui $s3, %hi(ptr_list_object_lookup_indices) -/* 079444 7F044914 8E739C30 */ lw $s3, %lo(ptr_list_object_lookup_indices)($s3) -/* 079448 7F044918 24140002 */ li $s4, 2 -/* 07944C 7F04491C 86620000 */ lh $v0, ($s3) -/* 079450 7F044920 0440007B */ bltz $v0, .L7F044B10 -/* 079454 7F044924 0002C080 */ sll $t8, $v0, 2 -.L7F044928: -/* 079458 7F044928 0302C023 */ subu $t8, $t8, $v0 -/* 07945C 7F04492C 0018C080 */ sll $t8, $t8, 2 -/* 079460 7F044930 0302C021 */ addu $t8, $t8, $v0 -/* 079464 7F044934 3C198007 */ lui $t9, %hi(pos_data_entry) -/* 079468 7F044938 27399C38 */ addiu $t9, %lo(pos_data_entry) # addiu $t9, $t9, -0x63c8 -/* 07946C 7F04493C 0018C080 */ sll $t8, $t8, 2 -/* 079470 7F044940 03199021 */ addu $s2, $t8, $t9 -/* 079474 7F044944 5255006F */ beql $s2, $s5, .L7F044B04 -/* 079478 7F044948 86620002 */ lh $v0, 2($s3) -/* 07947C 7F04494C 92420000 */ lbu $v0, ($s2) -/* 079480 7F044950 24010006 */ li $at, 6 -/* 079484 7F044954 10410003 */ beq $v0, $at, .L7F044964 -/* 079488 7F044958 24010003 */ li $at, 3 -/* 07948C 7F04495C 5441003C */ bnel $v0, $at, .L7F044A50 -/* 079490 7F044960 24010001 */ li $at, 1 -.L7F044964: -/* 079494 7F044964 8E420004 */ lw $v0, 4($s2) -/* 079498 7F044968 02402025 */ move $a0, $s2 -/* 07949C 7F04496C 27A5005C */ addiu $a1, $sp, 0x5c -/* 0794A0 7F044970 10400005 */ beqz $v0, .L7F044988 -/* 0794A4 7F044974 27A60064 */ addiu $a2, $sp, 0x64 -/* 0794A8 7F044978 8C480014 */ lw $t0, 0x14($v0) -/* 0794AC 7F04497C 31090400 */ andi $t1, $t0, 0x400 -/* 0794B0 7F044980 55200060 */ bnezl $t1, .L7F044B04 -/* 0794B4 7F044984 86620002 */ lh $v0, 2($s3) -.L7F044988: -/* 0794B8 7F044988 0FC0F3E2 */ jal sub_GAME_7F03CF88 -/* 0794BC 7F04498C 27A70060 */ addiu $a3, $sp, 0x60 -/* 0794C0 7F044990 0FC0F3FA */ jal sub_GAME_7F03CFE8 -/* 0794C4 7F044994 02402025 */ move $a0, $s2 -/* 0794C8 7F044998 C7A20060 */ lwc1 $f2, 0x60($sp) -/* 0794CC 7F04499C C7A80090 */ lwc1 $f8, 0x90($sp) -/* 0794D0 7F0449A0 C7A40064 */ lwc1 $f4, 0x64($sp) -/* 0794D4 7F0449A4 46001080 */ add.s $f2, $f2, $f0 -/* 0794D8 7F0449A8 C7AA008C */ lwc1 $f10, 0x8c($sp) -/* 0794DC 7F0449AC 46002180 */ add.s $f6, $f4, $f0 -/* 0794E0 7F0449B0 E7A20060 */ swc1 $f2, 0x60($sp) -/* 0794E4 7F0449B4 4608103E */ c.le.s $f2, $f8 -/* 0794E8 7F0449B8 E7A60064 */ swc1 $f6, 0x64($sp) -/* 0794EC 7F0449BC 45020051 */ bc1fl .L7F044B04 -/* 0794F0 7F0449C0 86620002 */ lh $v0, 2($s3) -/* 0794F4 7F0449C4 4606503E */ c.le.s $f10, $f6 -/* 0794F8 7F0449C8 26510008 */ addiu $s1, $s2, 8 -/* 0794FC 7F0449CC 24100001 */ li $s0, 1 -/* 079500 7F0449D0 02202025 */ move $a0, $s1 -/* 079504 7F0449D4 4500004A */ bc1f .L7F044B00 -/* 079508 7F0449D8 8FA50098 */ lw $a1, 0x98($sp) -/* 07950C 7F0449DC 0FC0F336 */ jal sub_GAME_7F03CCD8 -/* 079510 7F0449E0 8FA60094 */ lw $a2, 0x94($sp) -/* 079514 7F0449E4 10400002 */ beqz $v0, .L7F0449F0 -/* 079518 7F0449E8 02202025 */ move $a0, $s1 -/* 07951C 7F0449EC 00008025 */ move $s0, $zero -.L7F0449F0: -/* 079520 7F0449F0 12000007 */ beqz $s0, .L7F044A10 -/* 079524 7F0449F4 8FA5005C */ lw $a1, 0x5c($sp) -/* 079528 7F0449F8 8FA60098 */ lw $a2, 0x98($sp) -/* 07952C 7F0449FC 0FC111C6 */ jal sub_GAME_7F044718 -/* 079530 7F044A00 8FA70094 */ lw $a3, 0x94($sp) -/* 079534 7F044A04 10400002 */ beqz $v0, .L7F044A10 -/* 079538 7F044A08 00000000 */ nop -/* 07953C 7F044A0C 00008025 */ move $s0, $zero -.L7F044A10: -/* 079540 7F044A10 5600003C */ bnezl $s0, .L7F044B04 -/* 079544 7F044A14 86620002 */ lh $v0, 2($s3) -/* 079548 7F044A18 924A0000 */ lbu $t2, ($s2) -/* 07954C 7F044A1C 24010003 */ li $at, 3 -/* 079550 7F044A20 15410008 */ bne $t2, $at, .L7F044A44 -/* 079554 7F044A24 00000000 */ nop -/* 079558 7F044A28 92AB0000 */ lbu $t3, ($s5) -/* 07955C 7F044A2C 168B0005 */ bne $s4, $t3, .L7F044A44 -/* 079560 7F044A30 00000000 */ nop -/* 079564 7F044A34 8E420004 */ lw $v0, 4($s2) -/* 079568 7F044A38 944C0012 */ lhu $t4, 0x12($v0) -/* 07956C 7F044A3C 358D0010 */ ori $t5, $t4, 0x10 -/* 079570 7F044A40 A44D0012 */ sh $t5, 0x12($v0) -.L7F044A44: -/* 079574 7F044A44 10000033 */ b .L7F044B14 -/* 079578 7F044A48 00001025 */ move $v0, $zero -/* 07957C 7F044A4C 24010001 */ li $at, 1 -.L7F044A50: -/* 079580 7F044A50 10410005 */ beq $v0, $at, .L7F044A68 -/* 079584 7F044A54 24010004 */ li $at, 4 -/* 079588 7F044A58 50410004 */ beql $v0, $at, .L7F044A6C -/* 07958C 7F044A5C 92AE0000 */ lbu $t6, ($s5) -/* 079590 7F044A60 56820028 */ bnel $s4, $v0, .L7F044B04 -/* 079594 7F044A64 86620002 */ lh $v0, 2($s3) -.L7F044A68: -/* 079598 7F044A68 92AE0000 */ lbu $t6, ($s5) -.L7F044A6C: -/* 07959C 7F044A6C 02402025 */ move $a0, $s2 -/* 0795A0 7F044A70 27A5004C */ addiu $a1, $sp, 0x4c -/* 0795A4 7F044A74 168E0009 */ bne $s4, $t6, .L7F044A9C -/* 0795A8 7F044A78 27A60048 */ addiu $a2, $sp, 0x48 -/* 0795AC 7F044A7C 52820021 */ beql $s4, $v0, .L7F044B04 -/* 0795B0 7F044A80 86620002 */ lh $v0, 2($s3) -/* 0795B4 7F044A84 8E4F0004 */ lw $t7, 4($s2) -/* 0795B8 7F044A88 2401002B */ li $at, 43 -/* 0795BC 7F044A8C 91E20003 */ lbu $v0, 3($t7) -/* 0795C0 7F044A90 1041001B */ beq $v0, $at, .L7F044B00 -/* 0795C4 7F044A94 24010028 */ li $at, 40 -/* 0795C8 7F044A98 10410019 */ beq $v0, $at, .L7F044B00 -.L7F044A9C: -/* 0795CC 7F044A9C 27B80040 */ addiu $t8, $sp, 0x40 -/* 0795D0 7F044AA0 AFB80010 */ sw $t8, 0x10($sp) -/* 0795D4 7F044AA4 0FC0F308 */ jal sub_GAME_7F03CC20 -/* 0795D8 7F044AA8 27A70044 */ addiu $a3, $sp, 0x44 -/* 0795DC 7F044AAC 8FA50048 */ lw $a1, 0x48($sp) -/* 0795E0 7F044AB0 C7B00090 */ lwc1 $f16, 0x90($sp) -/* 0795E4 7F044AB4 C7B20040 */ lwc1 $f18, 0x40($sp) -/* 0795E8 7F044AB8 58A00012 */ blezl $a1, .L7F044B04 -/* 0795EC 7F044ABC 86620002 */ lh $v0, 2($s3) -/* 0795F0 7F044AC0 4610903E */ c.le.s $f18, $f16 -/* 0795F4 7F044AC4 C7A40044 */ lwc1 $f4, 0x44($sp) -/* 0795F8 7F044AC8 C7A8008C */ lwc1 $f8, 0x8c($sp) -/* 0795FC 7F044ACC 4502000D */ bc1fl .L7F044B04 -/* 079600 7F044AD0 86620002 */ lh $v0, 2($s3) -/* 079604 7F044AD4 4604403E */ c.le.s $f8, $f4 -/* 079608 7F044AD8 8FA4004C */ lw $a0, 0x4c($sp) -/* 07960C 7F044ADC 8FA60098 */ lw $a2, 0x98($sp) -/* 079610 7F044AE0 45020008 */ bc1fl .L7F044B04 -/* 079614 7F044AE4 86620002 */ lh $v0, 2($s3) -/* 079618 7F044AE8 0FC111AE */ jal sub_GAME_7F0446B8 -/* 07961C 7F044AEC 8FA70094 */ lw $a3, 0x94($sp) -/* 079620 7F044AF0 50400004 */ beql $v0, $zero, .L7F044B04 -/* 079624 7F044AF4 86620002 */ lh $v0, 2($s3) -/* 079628 7F044AF8 10000006 */ b .L7F044B14 -/* 07962C 7F044AFC 00001025 */ move $v0, $zero -.L7F044B00: -/* 079630 7F044B00 86620002 */ lh $v0, 2($s3) -.L7F044B04: -/* 079634 7F044B04 26730002 */ addiu $s3, $s3, 2 -/* 079638 7F044B08 0443FF87 */ bgezl $v0, .L7F044928 -/* 07963C 7F044B0C 0002C080 */ sll $t8, $v0, 2 -.L7F044B10: -/* 079640 7F044B10 24020001 */ li $v0, 1 -.L7F044B14: -/* 079644 7F044B14 8FBF0034 */ lw $ra, 0x34($sp) -/* 079648 7F044B18 8FB0001C */ lw $s0, 0x1c($sp) -/* 07964C 7F044B1C 8FB10020 */ lw $s1, 0x20($sp) -/* 079650 7F044B20 8FB20024 */ lw $s2, 0x24($sp) -/* 079654 7F044B24 8FB30028 */ lw $s3, 0x28($sp) -/* 079658 7F044B28 8FB4002C */ lw $s4, 0x2c($sp) -/* 07965C 7F044B2C 8FB50030 */ lw $s5, 0x30($sp) -/* 079660 7F044B30 03E00008 */ jr $ra -/* 079664 7F044B34 27BD00A0 */ addiu $sp, $sp, 0xa0 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F044B38(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F044B38 -/* 079668 7F044B38 27BDFEA8 */ addiu $sp, $sp, -0x158 -/* 07966C 7F044B3C AFBF0024 */ sw $ra, 0x24($sp) -/* 079670 7F044B40 AFB10020 */ sw $s1, 0x20($sp) -/* 079674 7F044B44 AFB0001C */ sw $s0, 0x1c($sp) -/* 079678 7F044B48 8C830014 */ lw $v1, 0x14($a0) -/* 07967C 7F044B4C 8C910010 */ lw $s1, 0x10($a0) -/* 079680 7F044B50 24180001 */ li $t8, 1 -/* 079684 7F044B54 8C790008 */ lw $t9, 8($v1) -/* 079688 7F044B58 00808025 */ move $s0, $a0 -/* 07968C 7F044B5C 27A500C8 */ addiu $a1, $sp, 0xc8 -/* 079690 7F044B60 8F220008 */ lw $v0, 8($t9) -/* 079694 7F044B64 8C480004 */ lw $t0, 4($v0) -/* 079698 7F044B68 8D090004 */ lw $t1, 4($t0) -/* 07969C 7F044B6C AFA90148 */ sw $t1, 0x148($sp) -/* 0796A0 7F044B70 8C4A0008 */ lw $t2, 8($v0) -/* 0796A4 7F044B74 8D4B0004 */ lw $t3, 4($t2) -/* 0796A8 7F044B78 AFAB0144 */ sw $t3, 0x144($sp) -/* 0796AC 7F044B7C 8C4C000C */ lw $t4, 0xc($v0) -/* 0796B0 7F044B80 8D8D0004 */ lw $t5, 4($t4) -/* 0796B4 7F044B84 AFAD0140 */ sw $t5, 0x140($sp) -/* 0796B8 7F044B88 8C4E0010 */ lw $t6, 0x10($v0) -/* 0796BC 7F044B8C 8DCF0004 */ lw $t7, 4($t6) -/* 0796C0 7F044B90 AFB80108 */ sw $t8, 0x108($sp) -/* 0796C4 7F044B94 AFAF013C */ sw $t7, 0x13c($sp) -/* 0796C8 7F044B98 8C590018 */ lw $t9, 0x18($v0) -/* 0796CC 7F044B9C 8F280004 */ lw $t0, 4($t9) -/* 0796D0 7F044BA0 AFA800C0 */ sw $t0, 0xc0($sp) -/* 0796D4 7F044BA4 C48C00A0 */ lwc1 $f12, 0xa0($a0) -/* 0796D8 7F044BA8 0FC1617F */ jal sub_GAME_7F0585FC -/* 0796DC 7F044BAC AFA30154 */ sw $v1, 0x154($sp) -/* 0796E0 7F044BB0 8FA90154 */ lw $t1, 0x154($sp) -/* 0796E4 7F044BB4 27A500C8 */ addiu $a1, $sp, 0xc8 -/* 0796E8 7F044BB8 0FC1629F */ jal matrix_multiply_A1_by_F12 -/* 0796EC 7F044BBC C52C0014 */ lwc1 $f12, 0x14($t1) -/* 0796F0 7F044BC0 26040058 */ addiu $a0, $s0, 0x58 -/* 0796F4 7F044BC4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 0796F8 7F044BC8 27A500C8 */ addiu $a1, $sp, 0xc8 -/* 0796FC 7F044BCC 27A400C8 */ addiu $a0, $sp, 0xc8 -/* 079700 7F044BD0 8FA50148 */ lw $a1, 0x148($sp) -/* 079704 7F044BD4 0FC16106 */ jal sub_GAME_7F058418 -/* 079708 7F044BD8 27A60130 */ addiu $a2, $sp, 0x130 -/* 07970C 7F044BDC 27A400C8 */ addiu $a0, $sp, 0xc8 -/* 079710 7F044BE0 8FA50144 */ lw $a1, 0x144($sp) -/* 079714 7F044BE4 0FC16106 */ jal sub_GAME_7F058418 -/* 079718 7F044BE8 27A60124 */ addiu $a2, $sp, 0x124 -/* 07971C 7F044BEC 27A400C8 */ addiu $a0, $sp, 0xc8 -/* 079720 7F044BF0 8FA50140 */ lw $a1, 0x140($sp) -/* 079724 7F044BF4 0FC16106 */ jal sub_GAME_7F058418 -/* 079728 7F044BF8 27A60118 */ addiu $a2, $sp, 0x118 -/* 07972C 7F044BFC 27A400C8 */ addiu $a0, $sp, 0xc8 -/* 079730 7F044C00 8FA5013C */ lw $a1, 0x13c($sp) -/* 079734 7F044C04 0FC16106 */ jal sub_GAME_7F058418 -/* 079738 7F044C08 27A6010C */ addiu $a2, $sp, 0x10c -/* 07973C 7F044C0C 8E2A0014 */ lw $t2, 0x14($s1) -/* 079740 7F044C10 C7A80138 */ lwc1 $f8, 0x138($sp) -/* 079744 7F044C14 27A400C4 */ addiu $a0, $sp, 0xc4 -/* 079748 7F044C18 AFAA00C4 */ sw $t2, 0xc4($sp) -/* 07974C 7F044C1C 8E260010 */ lw $a2, 0x10($s1) -/* 079750 7F044C20 8E250008 */ lw $a1, 8($s1) -/* 079754 7F044C24 8FA70130 */ lw $a3, 0x130($sp) -/* 079758 7F044C28 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 07975C 7F044C2C E7A80010 */ swc1 $f8, 0x10($sp) -/* 079760 7F044C30 10400006 */ beqz $v0, .L7F044C4C -/* 079764 7F044C34 8FA400C4 */ lw $a0, 0xc4($sp) -/* 079768 7F044C38 8FA50130 */ lw $a1, 0x130($sp) -/* 07976C 7F044C3C 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 079770 7F044C40 8FA60138 */ lw $a2, 0x138($sp) -/* 079774 7F044C44 10000002 */ b .L7F044C50 -/* 079778 7F044C48 E7A00134 */ swc1 $f0, 0x134($sp) -.L7F044C4C: -/* 07977C 7F044C4C AFA00108 */ sw $zero, 0x108($sp) -.L7F044C50: -/* 079780 7F044C50 8E2B0014 */ lw $t3, 0x14($s1) -/* 079784 7F044C54 C7A6012C */ lwc1 $f6, 0x12c($sp) -/* 079788 7F044C58 27A400C4 */ addiu $a0, $sp, 0xc4 -/* 07978C 7F044C5C AFAB00C4 */ sw $t3, 0xc4($sp) -/* 079790 7F044C60 8E260010 */ lw $a2, 0x10($s1) -/* 079794 7F044C64 8E250008 */ lw $a1, 8($s1) -/* 079798 7F044C68 8FA70124 */ lw $a3, 0x124($sp) -/* 07979C 7F044C6C 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 0797A0 7F044C70 E7A60010 */ swc1 $f6, 0x10($sp) -/* 0797A4 7F044C74 10400006 */ beqz $v0, .L7F044C90 -/* 0797A8 7F044C78 8FA400C4 */ lw $a0, 0xc4($sp) -/* 0797AC 7F044C7C 8FA50124 */ lw $a1, 0x124($sp) -/* 0797B0 7F044C80 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 0797B4 7F044C84 8FA6012C */ lw $a2, 0x12c($sp) -/* 0797B8 7F044C88 10000002 */ b .L7F044C94 -/* 0797BC 7F044C8C E7A00128 */ swc1 $f0, 0x128($sp) -.L7F044C90: -/* 0797C0 7F044C90 AFA00108 */ sw $zero, 0x108($sp) -.L7F044C94: -/* 0797C4 7F044C94 8E2C0014 */ lw $t4, 0x14($s1) -/* 0797C8 7F044C98 C7A40120 */ lwc1 $f4, 0x120($sp) -/* 0797CC 7F044C9C 27A400C4 */ addiu $a0, $sp, 0xc4 -/* 0797D0 7F044CA0 AFAC00C4 */ sw $t4, 0xc4($sp) -/* 0797D4 7F044CA4 8E260010 */ lw $a2, 0x10($s1) -/* 0797D8 7F044CA8 8E250008 */ lw $a1, 8($s1) -/* 0797DC 7F044CAC 8FA70118 */ lw $a3, 0x118($sp) -/* 0797E0 7F044CB0 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 0797E4 7F044CB4 E7A40010 */ swc1 $f4, 0x10($sp) -/* 0797E8 7F044CB8 10400006 */ beqz $v0, .L7F044CD4 -/* 0797EC 7F044CBC 8FA400C4 */ lw $a0, 0xc4($sp) -/* 0797F0 7F044CC0 8FA50118 */ lw $a1, 0x118($sp) -/* 0797F4 7F044CC4 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 0797F8 7F044CC8 8FA60120 */ lw $a2, 0x120($sp) -/* 0797FC 7F044CCC 10000002 */ b .L7F044CD8 -/* 079800 7F044CD0 E7A0011C */ swc1 $f0, 0x11c($sp) -.L7F044CD4: -/* 079804 7F044CD4 AFA00108 */ sw $zero, 0x108($sp) -.L7F044CD8: -/* 079808 7F044CD8 8E2D0014 */ lw $t5, 0x14($s1) -/* 07980C 7F044CDC C7AA0114 */ lwc1 $f10, 0x114($sp) -/* 079810 7F044CE0 27A400C4 */ addiu $a0, $sp, 0xc4 -/* 079814 7F044CE4 AFAD00C4 */ sw $t5, 0xc4($sp) -/* 079818 7F044CE8 8E260010 */ lw $a2, 0x10($s1) -/* 07981C 7F044CEC 8E250008 */ lw $a1, 8($s1) -/* 079820 7F044CF0 8FA7010C */ lw $a3, 0x10c($sp) -/* 079824 7F044CF4 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 079828 7F044CF8 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07982C 7F044CFC 10400006 */ beqz $v0, .L7F044D18 -/* 079830 7F044D00 8FA400C4 */ lw $a0, 0xc4($sp) -/* 079834 7F044D04 8FA5010C */ lw $a1, 0x10c($sp) -/* 079838 7F044D08 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 07983C 7F044D0C 8FA60114 */ lw $a2, 0x114($sp) -/* 079840 7F044D10 10000002 */ b .L7F044D1C -/* 079844 7F044D14 E7A00110 */ swc1 $f0, 0x110($sp) -.L7F044D18: -/* 079848 7F044D18 AFA00108 */ sw $zero, 0x108($sp) -.L7F044D1C: -/* 07984C 7F044D1C 8FAE0108 */ lw $t6, 0x108($sp) -/* 079850 7F044D20 26040018 */ addiu $a0, $s0, 0x18 -/* 079854 7F044D24 27A600BC */ addiu $a2, $sp, 0xbc -/* 079858 7F044D28 11C0010E */ beqz $t6, .L7F045164 -/* 07985C 7F044D2C 00802825 */ move $a1, $a0 -/* 079860 7F044D30 C7B20124 */ lwc1 $f18, 0x124($sp) -/* 079864 7F044D34 C7B00130 */ lwc1 $f16, 0x130($sp) -/* 079868 7F044D38 C7AE0128 */ lwc1 $f14, 0x128($sp) -/* 07986C 7F044D3C C7AC0134 */ lwc1 $f12, 0x134($sp) -/* 079870 7F044D40 46109401 */ sub.s $f16, $f18, $f16 -/* 079874 7F044D44 C7B2012C */ lwc1 $f18, 0x12c($sp) -/* 079878 7F044D48 C7AA0138 */ lwc1 $f10, 0x138($sp) -/* 07987C 7F044D4C 460C7301 */ sub.s $f12, $f14, $f12 -/* 079880 7F044D50 E7B000B4 */ swc1 $f16, 0xb4($sp) -/* 079884 7F044D54 27A400B4 */ addiu $a0, $sp, 0xb4 -/* 079888 7F044D58 460A9281 */ sub.s $f10, $f18, $f10 -/* 07988C 7F044D5C E7AC00B8 */ swc1 $f12, 0xb8($sp) -/* 079890 7F044D60 27A500B8 */ addiu $a1, $sp, 0xb8 -/* 079894 7F044D64 0C007DD4 */ jal guNormalize -/* 079898 7F044D68 E7AA00BC */ swc1 $f10, 0xbc($sp) -/* 07989C 7F044D6C C7B2010C */ lwc1 $f18, 0x10c($sp) -/* 0798A0 7F044D70 C7B00124 */ lwc1 $f16, 0x124($sp) -/* 0798A4 7F044D74 C7AE0110 */ lwc1 $f14, 0x110($sp) -/* 0798A8 7F044D78 C7AC0128 */ lwc1 $f12, 0x128($sp) -/* 0798AC 7F044D7C 46109401 */ sub.s $f16, $f18, $f16 -/* 0798B0 7F044D80 C7B20114 */ lwc1 $f18, 0x114($sp) -/* 0798B4 7F044D84 C7AA012C */ lwc1 $f10, 0x12c($sp) -/* 0798B8 7F044D88 460C7301 */ sub.s $f12, $f14, $f12 -/* 0798BC 7F044D8C E7B000A8 */ swc1 $f16, 0xa8($sp) -/* 0798C0 7F044D90 27A400A8 */ addiu $a0, $sp, 0xa8 -/* 0798C4 7F044D94 460A9281 */ sub.s $f10, $f18, $f10 -/* 0798C8 7F044D98 E7AC00AC */ swc1 $f12, 0xac($sp) -/* 0798CC 7F044D9C 27A500AC */ addiu $a1, $sp, 0xac -/* 0798D0 7F044DA0 27A600B0 */ addiu $a2, $sp, 0xb0 -/* 0798D4 7F044DA4 0C007DD4 */ jal guNormalize -/* 0798D8 7F044DA8 E7AA00B0 */ swc1 $f10, 0xb0($sp) -/* 0798DC 7F044DAC C7B20118 */ lwc1 $f18, 0x118($sp) -/* 0798E0 7F044DB0 C7B0010C */ lwc1 $f16, 0x10c($sp) -/* 0798E4 7F044DB4 C7AE011C */ lwc1 $f14, 0x11c($sp) -/* 0798E8 7F044DB8 C7AC0110 */ lwc1 $f12, 0x110($sp) -/* 0798EC 7F044DBC 46109401 */ sub.s $f16, $f18, $f16 -/* 0798F0 7F044DC0 C7B20120 */ lwc1 $f18, 0x120($sp) -/* 0798F4 7F044DC4 C7AA0114 */ lwc1 $f10, 0x114($sp) -/* 0798F8 7F044DC8 460C7301 */ sub.s $f12, $f14, $f12 -/* 0798FC 7F044DCC E7B0009C */ swc1 $f16, 0x9c($sp) -/* 079900 7F044DD0 27A4009C */ addiu $a0, $sp, 0x9c -/* 079904 7F044DD4 460A9281 */ sub.s $f10, $f18, $f10 -/* 079908 7F044DD8 E7AC00A0 */ swc1 $f12, 0xa0($sp) -/* 07990C 7F044DDC 27A500A0 */ addiu $a1, $sp, 0xa0 -/* 079910 7F044DE0 27A600A4 */ addiu $a2, $sp, 0xa4 -/* 079914 7F044DE4 0C007DD4 */ jal guNormalize -/* 079918 7F044DE8 E7AA00A4 */ swc1 $f10, 0xa4($sp) -/* 07991C 7F044DEC C7B20130 */ lwc1 $f18, 0x130($sp) -/* 079920 7F044DF0 C7B00118 */ lwc1 $f16, 0x118($sp) -/* 079924 7F044DF4 C7AE0134 */ lwc1 $f14, 0x134($sp) -/* 079928 7F044DF8 C7AC011C */ lwc1 $f12, 0x11c($sp) -/* 07992C 7F044DFC 46109401 */ sub.s $f16, $f18, $f16 -/* 079930 7F044E00 C7B20138 */ lwc1 $f18, 0x138($sp) -/* 079934 7F044E04 C7AA0120 */ lwc1 $f10, 0x120($sp) -/* 079938 7F044E08 460C7301 */ sub.s $f12, $f14, $f12 -/* 07993C 7F044E0C E7B00090 */ swc1 $f16, 0x90($sp) -/* 079940 7F044E10 27A40090 */ addiu $a0, $sp, 0x90 -/* 079944 7F044E14 460A9281 */ sub.s $f10, $f18, $f10 -/* 079948 7F044E18 E7AC0094 */ swc1 $f12, 0x94($sp) -/* 07994C 7F044E1C 27A50094 */ addiu $a1, $sp, 0x94 -/* 079950 7F044E20 27A60098 */ addiu $a2, $sp, 0x98 -/* 079954 7F044E24 0C007DD4 */ jal guNormalize -/* 079958 7F044E28 E7AA0098 */ swc1 $f10, 0x98($sp) -/* 07995C 7F044E2C C7A800BC */ lwc1 $f8, 0xbc($sp) -/* 079960 7F044E30 C7A600A8 */ lwc1 $f6, 0xa8($sp) -/* 079964 7F044E34 C7AA00B0 */ lwc1 $f10, 0xb0($sp) -/* 079968 7F044E38 E7A80028 */ swc1 $f8, 0x28($sp) -/* 07996C 7F044E3C 46064102 */ mul.s $f4, $f8, $f6 -/* 079970 7F044E40 C7A800B4 */ lwc1 $f8, 0xb4($sp) -/* 079974 7F044E44 E7A6002C */ swc1 $f6, 0x2c($sp) -/* 079978 7F044E48 E7AA0034 */ swc1 $f10, 0x34($sp) -/* 07997C 7F044E4C 46085182 */ mul.s $f6, $f10, $f8 -/* 079980 7F044E50 E7A80030 */ swc1 $f8, 0x30($sp) -/* 079984 7F044E54 C7A800A4 */ lwc1 $f8, 0xa4($sp) -/* 079988 7F044E58 46062001 */ sub.s $f0, $f4, $f6 -/* 07998C 7F044E5C C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 079990 7F044E60 46045182 */ mul.s $f6, $f10, $f4 -/* 079994 7F044E64 C7AA002C */ lwc1 $f10, 0x2c($sp) -/* 079998 7F044E68 E7A4002C */ swc1 $f4, 0x2c($sp) -/* 07999C 7F044E6C 460A4102 */ mul.s $f4, $f8, $f10 -/* 0799A0 7F044E70 46043381 */ sub.s $f14, $f6, $f4 -/* 0799A4 7F044E74 C7A60090 */ lwc1 $f6, 0x90($sp) -/* 0799A8 7F044E78 4600703E */ c.le.s $f14, $f0 -/* 0799AC 7F044E7C 00000000 */ nop -/* 0799B0 7F044E80 45020023 */ bc1fl .L7F044F10 -/* 0799B4 7F044E84 C7A600A4 */ lwc1 $f6, 0xa4($sp) -/* 0799B8 7F044E88 46064102 */ mul.s $f4, $f8, $f6 -/* 0799BC 7F044E8C E7AA0038 */ swc1 $f10, 0x38($sp) -/* 0799C0 7F044E90 C7AA002C */ lwc1 $f10, 0x2c($sp) -/* 0799C4 7F044E94 C7A80098 */ lwc1 $f8, 0x98($sp) -/* 0799C8 7F044E98 460A4282 */ mul.s $f10, $f8, $f10 -/* 0799CC 7F044E9C 460A2101 */ sub.s $f4, $f4, $f10 -/* 0799D0 7F044EA0 C7AA0030 */ lwc1 $f10, 0x30($sp) -/* 0799D4 7F044EA4 4600203E */ c.le.s $f4, $f0 -/* 0799D8 7F044EA8 00000000 */ nop -/* 0799DC 7F044EAC 45020018 */ bc1fl .L7F044F10 -/* 0799E0 7F044EB0 C7A600A4 */ lwc1 $f6, 0xa4($sp) -/* 0799E4 7F044EB4 460A4102 */ mul.s $f4, $f8, $f10 -/* 0799E8 7F044EB8 C7A80028 */ lwc1 $f8, 0x28($sp) -/* 0799EC 7F044EBC C7AC00B8 */ lwc1 $f12, 0xb8($sp) -/* 0799F0 7F044EC0 46064182 */ mul.s $f6, $f8, $f6 -/* 0799F4 7F044EC4 46062101 */ sub.s $f4, $f4, $f6 -/* 0799F8 7F044EC8 C7A60034 */ lwc1 $f6, 0x34($sp) -/* 0799FC 7F044ECC 4600203E */ c.le.s $f4, $f0 -/* 079A00 7F044ED0 00000000 */ nop -/* 079A04 7F044ED4 4502000E */ bc1fl .L7F044F10 -/* 079A08 7F044ED8 C7A600A4 */ lwc1 $f6, 0xa4($sp) -/* 079A0C 7F044EDC 46066102 */ mul.s $f4, $f12, $f6 -/* 079A10 7F044EE0 C7A200AC */ lwc1 $f2, 0xac($sp) -/* 079A14 7F044EE4 E7A00078 */ swc1 $f0, 0x78($sp) -/* 079A18 7F044EE8 46081182 */ mul.s $f6, $f2, $f8 -/* 079A1C 7F044EEC 46062201 */ sub.s $f8, $f4, $f6 -/* 079A20 7F044EF0 46025102 */ mul.s $f4, $f10, $f2 -/* 079A24 7F044EF4 C7A60038 */ lwc1 $f6, 0x38($sp) -/* 079A28 7F044EF8 E7A80074 */ swc1 $f8, 0x74($sp) -/* 079A2C 7F044EFC 460C3202 */ mul.s $f8, $f6, $f12 -/* 079A30 7F044F00 46082281 */ sub.s $f10, $f4, $f8 -/* 079A34 7F044F04 10000045 */ b .L7F04501C -/* 079A38 7F044F08 E7AA007C */ swc1 $f10, 0x7c($sp) -/* 079A3C 7F044F0C C7A600A4 */ lwc1 $f6, 0xa4($sp) -.L7F044F10: -/* 079A40 7F044F10 C7A40090 */ lwc1 $f4, 0x90($sp) -/* 079A44 7F044F14 C7AA0098 */ lwc1 $f10, 0x98($sp) -/* 079A48 7F044F18 E7A60038 */ swc1 $f6, 0x38($sp) -/* 079A4C 7F044F1C 46043202 */ mul.s $f8, $f6, $f4 -/* 079A50 7F044F20 C7A6009C */ lwc1 $f6, 0x9c($sp) -/* 079A54 7F044F24 E7A40034 */ swc1 $f4, 0x34($sp) -/* 079A58 7F044F28 46065102 */ mul.s $f4, $f10, $f6 -/* 079A5C 7F044F2C 46044001 */ sub.s $f0, $f8, $f4 -/* 079A60 7F044F30 C7A800B4 */ lwc1 $f8, 0xb4($sp) -/* 079A64 7F044F34 46085102 */ mul.s $f4, $f10, $f8 -/* 079A68 7F044F38 C7A80034 */ lwc1 $f8, 0x34($sp) -/* 079A6C 7F044F3C C7AA00BC */ lwc1 $f10, 0xbc($sp) -/* 079A70 7F044F40 460E003E */ c.le.s $f0, $f14 -/* 079A74 7F044F44 46085282 */ mul.s $f10, $f10, $f8 -/* 079A78 7F044F48 45000013 */ bc1f .L7F044F98 -/* 079A7C 7F044F4C 460A2081 */ sub.s $f2, $f4, $f10 -/* 079A80 7F044F50 460E103E */ c.le.s $f2, $f14 -/* 079A84 7F044F54 C7A80038 */ lwc1 $f8, 0x38($sp) -/* 079A88 7F044F58 45020010 */ bc1fl .L7F044F9C -/* 079A8C 7F044F5C 4600103E */ c.le.s $f2, $f0 -/* 079A90 7F044F60 C7A200AC */ lwc1 $f2, 0xac($sp) -/* 079A94 7F044F64 C7AC00A0 */ lwc1 $f12, 0xa0($sp) -/* 079A98 7F044F68 C7AA00B0 */ lwc1 $f10, 0xb0($sp) -/* 079A9C 7F044F6C 46081102 */ mul.s $f4, $f2, $f8 -/* 079AA0 7F044F70 E7AE0078 */ swc1 $f14, 0x78($sp) -/* 079AA4 7F044F74 460A6202 */ mul.s $f8, $f12, $f10 -/* 079AA8 7F044F78 46082281 */ sub.s $f10, $f4, $f8 -/* 079AAC 7F044F7C C7A400A8 */ lwc1 $f4, 0xa8($sp) -/* 079AB0 7F044F80 460C2202 */ mul.s $f8, $f4, $f12 -/* 079AB4 7F044F84 E7AA0074 */ swc1 $f10, 0x74($sp) -/* 079AB8 7F044F88 46023282 */ mul.s $f10, $f6, $f2 -/* 079ABC 7F044F8C 460A4101 */ sub.s $f4, $f8, $f10 -/* 079AC0 7F044F90 10000022 */ b .L7F04501C -/* 079AC4 7F044F94 E7A4007C */ swc1 $f4, 0x7c($sp) -.L7F044F98: -/* 079AC8 7F044F98 4600103E */ c.le.s $f2, $f0 -.L7F044F9C: -/* 079ACC 7F044F9C C7AC00A0 */ lwc1 $f12, 0xa0($sp) -/* 079AD0 7F044FA0 C7AE0094 */ lwc1 $f14, 0x94($sp) -/* 079AD4 7F044FA4 C7A400BC */ lwc1 $f4, 0xbc($sp) -/* 079AD8 7F044FA8 45000010 */ bc1f .L7F044FEC -/* 079ADC 7F044FAC C7A60098 */ lwc1 $f6, 0x98($sp) -/* 079AE0 7F044FB0 C7A60098 */ lwc1 $f6, 0x98($sp) -/* 079AE4 7F044FB4 C7AE0094 */ lwc1 $f14, 0x94($sp) -/* 079AE8 7F044FB8 C7AA00A4 */ lwc1 $f10, 0xa4($sp) -/* 079AEC 7F044FBC 46066202 */ mul.s $f8, $f12, $f6 -/* 079AF0 7F044FC0 E7A00078 */ swc1 $f0, 0x78($sp) -/* 079AF4 7F044FC4 460A7102 */ mul.s $f4, $f14, $f10 -/* 079AF8 7F044FC8 C7AA009C */ lwc1 $f10, 0x9c($sp) -/* 079AFC 7F044FCC 46044181 */ sub.s $f6, $f8, $f4 -/* 079B00 7F044FD0 460E5202 */ mul.s $f8, $f10, $f14 -/* 079B04 7F044FD4 C7A40090 */ lwc1 $f4, 0x90($sp) -/* 079B08 7F044FD8 E7A60074 */ swc1 $f6, 0x74($sp) -/* 079B0C 7F044FDC 460C2182 */ mul.s $f6, $f4, $f12 -/* 079B10 7F044FE0 46064281 */ sub.s $f10, $f8, $f6 -/* 079B14 7F044FE4 1000000D */ b .L7F04501C -/* 079B18 7F044FE8 E7AA007C */ swc1 $f10, 0x7c($sp) -.L7F044FEC: -/* 079B1C 7F044FEC 46047202 */ mul.s $f8, $f14, $f4 -/* 079B20 7F044FF0 C7AC00B8 */ lwc1 $f12, 0xb8($sp) -/* 079B24 7F044FF4 E7A20078 */ swc1 $f2, 0x78($sp) -/* 079B28 7F044FF8 46066282 */ mul.s $f10, $f12, $f6 -/* 079B2C 7F044FFC C7A60090 */ lwc1 $f6, 0x90($sp) -/* 079B30 7F045000 460A4101 */ sub.s $f4, $f8, $f10 -/* 079B34 7F045004 460C3202 */ mul.s $f8, $f6, $f12 -/* 079B38 7F045008 C7AA00B4 */ lwc1 $f10, 0xb4($sp) -/* 079B3C 7F04500C E7A40074 */ swc1 $f4, 0x74($sp) -/* 079B40 7F045010 460E5102 */ mul.s $f4, $f10, $f14 -/* 079B44 7F045014 46044181 */ sub.s $f6, $f8, $f4 -/* 079B48 7F045018 E7A6007C */ swc1 $f6, 0x7c($sp) -.L7F04501C: -/* 079B4C 7F04501C 0FC15FAB */ jal sinf -/* 079B50 7F045020 C60C00A0 */ lwc1 $f12, 0xa0($s0) -/* 079B54 7F045024 44805000 */ mtc1 $zero, $f10 -/* 079B58 7F045028 E7A00068 */ swc1 $f0, 0x68($sp) -/* 079B5C 7F04502C E7AA006C */ swc1 $f10, 0x6c($sp) -/* 079B60 7F045030 0FC15FA8 */ jal cosf -/* 079B64 7F045034 C60C00A0 */ lwc1 $f12, 0xa0($s0) -/* 079B68 7F045038 26040018 */ addiu $a0, $s0, 0x18 -/* 079B6C 7F04503C E7A00070 */ swc1 $f0, 0x70($sp) -/* 079B70 7F045040 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 -/* 079B74 7F045044 AFA40058 */ sw $a0, 0x58($sp) -/* 079B78 7F045048 C7A80074 */ lwc1 $f8, 0x74($sp) -/* 079B7C 7F04504C 8FA50058 */ lw $a1, 0x58($sp) -/* 079B80 7F045050 E6080028 */ swc1 $f8, 0x28($s0) -/* 079B84 7F045054 C7A40078 */ lwc1 $f4, 0x78($sp) -/* 079B88 7F045058 C6100028 */ lwc1 $f16, 0x28($s0) -/* 079B8C 7F04505C E604002C */ swc1 $f4, 0x2c($s0) -/* 079B90 7F045060 C7A6007C */ lwc1 $f6, 0x7c($sp) -/* 079B94 7F045064 C60E002C */ lwc1 $f14, 0x2c($s0) -/* 079B98 7F045068 E6060030 */ swc1 $f6, 0x30($s0) -/* 079B9C 7F04506C C7AA0070 */ lwc1 $f10, 0x70($sp) -/* 079BA0 7F045070 C7A4006C */ lwc1 $f4, 0x6c($sp) -/* 079BA4 7F045074 C6000030 */ lwc1 $f0, 0x30($s0) -/* 079BA8 7F045078 460A7202 */ mul.s $f8, $f14, $f10 -/* 079BAC 7F04507C 00000000 */ nop -/* 079BB0 7F045080 46002182 */ mul.s $f6, $f4, $f0 -/* 079BB4 7F045084 46064281 */ sub.s $f10, $f8, $f6 -/* 079BB8 7F045088 E60A0018 */ swc1 $f10, 0x18($s0) -/* 079BBC 7F04508C C7A40068 */ lwc1 $f4, 0x68($sp) -/* 079BC0 7F045090 C7A60070 */ lwc1 $f6, 0x70($sp) -/* 079BC4 7F045094 46040202 */ mul.s $f8, $f0, $f4 -/* 079BC8 7F045098 00000000 */ nop -/* 079BCC 7F04509C 46103282 */ mul.s $f10, $f6, $f16 -/* 079BD0 7F0450A0 460A4101 */ sub.s $f4, $f8, $f10 -/* 079BD4 7F0450A4 E604001C */ swc1 $f4, 0x1c($s0) -/* 079BD8 7F0450A8 C7A6006C */ lwc1 $f6, 0x6c($sp) -/* 079BDC 7F0450AC C7AA0068 */ lwc1 $f10, 0x68($sp) -/* 079BE0 7F0450B0 46068202 */ mul.s $f8, $f16, $f6 -/* 079BE4 7F0450B4 00000000 */ nop -/* 079BE8 7F0450B8 460E5102 */ mul.s $f4, $f10, $f14 -/* 079BEC 7F0450BC C60A001C */ lwc1 $f10, 0x1c($s0) -/* 079BF0 7F0450C0 46044181 */ sub.s $f6, $f8, $f4 -/* 079BF4 7F0450C4 E6060020 */ swc1 $f6, 0x20($s0) -/* 079BF8 7F0450C8 E7AA0048 */ swc1 $f10, 0x48($sp) -/* 079BFC 7F0450CC C7A80048 */ lwc1 $f8, 0x48($sp) -/* 079C00 7F0450D0 C6020020 */ lwc1 $f2, 0x20($s0) -/* 079C04 7F0450D4 C6120018 */ lwc1 $f18, 0x18($s0) -/* 079C08 7F0450D8 46004102 */ mul.s $f4, $f8, $f0 -/* 079C0C 7F0450DC 00000000 */ nop -/* 079C10 7F0450E0 46027182 */ mul.s $f6, $f14, $f2 -/* 079C14 7F0450E4 46062281 */ sub.s $f10, $f4, $f6 -/* 079C18 7F0450E8 46101202 */ mul.s $f8, $f2, $f16 -/* 079C1C 7F0450EC 00000000 */ nop -/* 079C20 7F0450F0 46120102 */ mul.s $f4, $f0, $f18 -/* 079C24 7F0450F4 E60A0038 */ swc1 $f10, 0x38($s0) -/* 079C28 7F0450F8 460E9282 */ mul.s $f10, $f18, $f14 -/* 079C2C 7F0450FC 46044181 */ sub.s $f6, $f8, $f4 -/* 079C30 7F045100 E606003C */ swc1 $f6, 0x3c($s0) -/* 079C34 7F045104 C7A80048 */ lwc1 $f8, 0x48($sp) -/* 079C38 7F045108 46088102 */ mul.s $f4, $f16, $f8 -/* 079C3C 7F04510C 46045181 */ sub.s $f6, $f10, $f4 -/* 079C40 7F045110 E6060040 */ swc1 $f6, 0x40($s0) -/* 079C44 7F045114 8FAF0154 */ lw $t7, 0x154($sp) -/* 079C48 7F045118 C5EC0014 */ lwc1 $f12, 0x14($t7) -/* 079C4C 7F04511C 0FC1629F */ jal matrix_multiply_A1_by_F12 -/* 079C50 7F045120 AFA50058 */ sw $a1, 0x58($sp) -/* 079C54 7F045124 8FA40058 */ lw $a0, 0x58($sp) -/* 079C58 7F045128 8FA50148 */ lw $a1, 0x148($sp) -/* 079C5C 7F04512C 0FC16106 */ jal sub_GAME_7F058418 -/* 079C60 7F045130 27A60124 */ addiu $a2, $sp, 0x124 -/* 079C64 7F045134 0FC0FA19 */ jal sub_GAME_7F03E864 -/* 079C68 7F045138 8FA400C0 */ lw $a0, 0xc0($sp) -/* 079C6C 7F04513C 8FB80154 */ lw $t8, 0x154($sp) -/* 079C70 7F045140 C7A80134 */ lwc1 $f8, 0x134($sp) -/* 079C74 7F045144 C70A0014 */ lwc1 $f10, 0x14($t8) -/* 079C78 7F045148 460A0102 */ mul.s $f4, $f0, $f10 -/* 079C7C 7F04514C C7AA0128 */ lwc1 $f10, 0x128($sp) -/* 079C80 7F045150 46044181 */ sub.s $f6, $f8, $f4 -/* 079C84 7F045154 460A3081 */ sub.s $f2, $f6, $f10 -/* 079C88 7F045158 E622000C */ swc1 $f2, 0xc($s1) -/* 079C8C 7F04515C 10000019 */ b .L7F0451C4 -/* 079C90 7F045160 E602005C */ swc1 $f2, 0x5c($s0) -.L7F045164: -/* 079C94 7F045164 C60C00A0 */ lwc1 $f12, 0xa0($s0) -/* 079C98 7F045168 0FC1617F */ jal sub_GAME_7F0585FC -/* 079C9C 7F04516C AFA40058 */ sw $a0, 0x58($sp) -/* 079CA0 7F045170 8FB90154 */ lw $t9, 0x154($sp) -/* 079CA4 7F045174 8FA50058 */ lw $a1, 0x58($sp) -/* 079CA8 7F045178 0FC1629F */ jal matrix_multiply_A1_by_F12 -/* 079CAC 7F04517C C72C0014 */ lwc1 $f12, 0x14($t9) -/* 079CB0 7F045180 8E240014 */ lw $a0, 0x14($s1) -/* 079CB4 7F045184 8E250008 */ lw $a1, 8($s1) -/* 079CB8 7F045188 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 079CBC 7F04518C 8E260010 */ lw $a2, 0x10($s1) -/* 079CC0 7F045190 E7A0005C */ swc1 $f0, 0x5c($sp) -/* 079CC4 7F045194 0FC0FA19 */ jal sub_GAME_7F03E864 -/* 079CC8 7F045198 8FA400C0 */ lw $a0, 0xc0($sp) -/* 079CCC 7F04519C 8FA80148 */ lw $t0, 0x148($sp) -/* 079CD0 7F0451A0 8FA90154 */ lw $t1, 0x154($sp) -/* 079CD4 7F0451A4 C5080004 */ lwc1 $f8, 4($t0) -/* 079CD8 7F0451A8 C5260014 */ lwc1 $f6, 0x14($t1) -/* 079CDC 7F0451AC 46004100 */ add.s $f4, $f8, $f0 -/* 079CE0 7F0451B0 C7A8005C */ lwc1 $f8, 0x5c($sp) -/* 079CE4 7F0451B4 46062282 */ mul.s $f10, $f4, $f6 -/* 079CE8 7F0451B8 460A4081 */ sub.s $f2, $f8, $f10 -/* 079CEC 7F0451BC E622000C */ swc1 $f2, 0xc($s1) -/* 079CF0 7F0451C0 E602005C */ swc1 $f2, 0x5c($s0) -.L7F0451C4: -/* 079CF4 7F0451C4 8FBF0024 */ lw $ra, 0x24($sp) -/* 079CF8 7F0451C8 8FA20108 */ lw $v0, 0x108($sp) -/* 079CFC 7F0451CC 8FB0001C */ lw $s0, 0x1c($sp) -/* 079D00 7F0451D0 8FB10020 */ lw $s1, 0x20($sp) -/* 079D04 7F0451D4 03E00008 */ jr $ra -/* 079D08 7F0451D8 27BD0158 */ addiu $sp, $sp, 0x158 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0451DC(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0451DC -/* 079D0C 7F0451DC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 079D10 7F0451E0 AFBF0014 */ sw $ra, 0x14($sp) -/* 079D14 7F0451E4 AFA5001C */ sw $a1, 0x1c($sp) -/* 079D18 7F0451E8 AFA60020 */ sw $a2, 0x20($sp) -/* 079D1C 7F0451EC AFA70024 */ sw $a3, 0x24($sp) -/* 079D20 7F0451F0 0FC225E6 */ jal get_curplayer_positiondata -/* 079D24 7F0451F4 AFA40018 */ sw $a0, 0x18($sp) -/* 079D28 7F0451F8 8FA40018 */ lw $a0, 0x18($sp) -/* 079D2C 7F0451FC C4460008 */ lwc1 $f6, 8($v0) -/* 079D30 7F045200 C44A000C */ lwc1 $f10, 0xc($v0) -/* 079D34 7F045204 C4840000 */ lwc1 $f4, ($a0) -/* 079D38 7F045208 C4880004 */ lwc1 $f8, 4($a0) -/* 079D3C 7F04520C C4520010 */ lwc1 $f18, 0x10($v0) -/* 079D40 7F045210 46062001 */ sub.s $f0, $f4, $f6 -/* 079D44 7F045214 C4900008 */ lwc1 $f16, 8($a0) -/* 079D48 7F045218 460A4081 */ sub.s $f2, $f8, $f10 -/* 079D4C 7F04521C 46000102 */ mul.s $f4, $f0, $f0 -/* 079D50 7F045220 46128381 */ sub.s $f14, $f16, $f18 -/* 079D54 7F045224 46021182 */ mul.s $f6, $f2, $f2 -/* 079D58 7F045228 46062200 */ add.s $f8, $f4, $f6 -/* 079D5C 7F04522C 460E7282 */ mul.s $f10, $f14, $f14 -/* 079D60 7F045230 0C007DF8 */ jal sqrtf -/* 079D64 7F045234 460A4300 */ add.s $f12, $f8, $f10 -/* 079D68 7F045238 C7AC0020 */ lwc1 $f12, 0x20($sp) -/* 079D6C 7F04523C C7A2001C */ lwc1 $f2, 0x1c($sp) -/* 079D70 7F045240 8FBF0014 */ lw $ra, 0x14($sp) -/* 079D74 7F045244 4600603C */ c.lt.s $f12, $f0 -/* 079D78 7F045248 00000000 */ nop -/* 079D7C 7F04524C 45020004 */ bc1fl .L7F045260 -/* 079D80 7F045250 4602003C */ c.lt.s $f0, $f2 -/* 079D84 7F045254 1000001C */ b .L7F0452C8 -/* 079D88 7F045258 240300FF */ li $v1, 255 -/* 079D8C 7F04525C 4602003C */ c.lt.s $f0, $f2 -.L7F045260: -/* 079D90 7F045260 C7AE0024 */ lwc1 $f14, 0x24($sp) -/* 079D94 7F045264 C7B00024 */ lwc1 $f16, 0x24($sp) -/* 079D98 7F045268 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 079D9C 7F04526C 4502000A */ bc1fl .L7F045298 -/* 079DA0 7F045270 44815000 */ mtc1 $at, $f10 -/* 079DA4 7F045274 3C01437F */ li $at, 0x437F0000 # 255.000000 -/* 079DA8 7F045278 44819000 */ mtc1 $at, $f18 -/* 079DAC 7F04527C 00000000 */ nop -/* 079DB0 7F045280 46128102 */ mul.s $f4, $f16, $f18 -/* 079DB4 7F045284 4600218D */ trunc.w.s $f6, $f4 -/* 079DB8 7F045288 44033000 */ mfc1 $v1, $f6 -/* 079DBC 7F04528C 1000000F */ b .L7F0452CC -/* 079DC0 7F045290 00601025 */ move $v0, $v1 -/* 079DC4 7F045294 44815000 */ mtc1 $at, $f10 -.L7F045298: -/* 079DC8 7F045298 46020201 */ sub.s $f8, $f0, $f2 -/* 079DCC 7F04529C 3C01437F */ li $at, 0x437F0000 # 255.000000 -/* 079DD0 7F0452A0 460E5401 */ sub.s $f16, $f10, $f14 -/* 079DD4 7F0452A4 46026101 */ sub.s $f4, $f12, $f2 -/* 079DD8 7F0452A8 46104482 */ mul.s $f18, $f8, $f16 -/* 079DDC 7F0452AC 44814000 */ mtc1 $at, $f8 -/* 079DE0 7F0452B0 46049183 */ div.s $f6, $f18, $f4 -/* 079DE4 7F0452B4 460E3280 */ add.s $f10, $f6, $f14 -/* 079DE8 7F0452B8 46085402 */ mul.s $f16, $f10, $f8 -/* 079DEC 7F0452BC 4600848D */ trunc.w.s $f18, $f16 -/* 079DF0 7F0452C0 44039000 */ mfc1 $v1, $f18 -/* 079DF4 7F0452C4 00000000 */ nop -.L7F0452C8: -/* 079DF8 7F0452C8 00601025 */ move $v0, $v1 -.L7F0452CC: -/* 079DFC 7F0452CC 03E00008 */ jr $ra -/* 079E00 7F0452D0 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - - - - -#ifdef NONMATCHING -void object_interaction(void) { - -} -#else - -#ifdef VERSION_US -GLOBAL_ASM( -.late_rodata -glabel rocket_initial_gravity_modifier -.word 0x3e8e38e4 /*0.27777779*/ -glabel D_80052A9C -.word 0x3c360b61 /*0.011111111*/ -glabel D_80052AA0 -.word 0x3d8f5c29 /*0.07*/ -glabel prop_projectile_gravity_modifier -.word 0x3e8e38e4 /*0.27777779*/ -glabel D_80052AA8 -.word 0x400e38e4 /*2.2222223*/ -glabel D_80052AAC -.word 0x46d9038c /*27777.773*/ -glabel D_80052AB0 -.word 0x3f8ccccd /*1.1*/ -glabel D_80052AB4 -.word 0x3f666666 /*0.89999998*/ -glabel D_80052AB8 -.word 0x3f666666 /*0.89999998*/ -glabel D_80052ABC -.word 0x3dcccccd /*0.1*/ -glabel D_80052AC0 -.word 0xbdcccccd /*-0.1*/ -glabel D_80052AC4 -.word 0xbdcccccd /*-0.1*/ -glabel D_80052AC8 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052ACC -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AD0 -.word 0x40490fdb /*3.1415927*/ -glabel D_80052AD4 -.word 0x3f490fdb /*0.78539819*/ -glabel D_80052AD8 -.word 0xbf490fdb /*-0.78539819*/ -glabel D_80052ADC -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AE0 -.word 0x3a2b92a6 /*0.00065449846*/ -glabel D_80052AE4 -.word 0x3a2b92a6 /*0.00065449846*/ -glabel D_80052AE8 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AEC -.word 0x37433637 /*0.000011635529*/ -glabel D_80052AF0 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AF4 -.word 0x3a3702d4 /*0.00069813174*/ -glabel D_80052AF8 -.word 0x36c33637 /*0.0000058177643*/ -glabel D_80052AFC -.word 0x39b702d4 /*0.00034906587*/ -glabel D_80052B00 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B04 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B08 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B0C -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B10 -.word 0x3f9c61ab /*1.2217306*/ -glabel D_80052B14 -.word 0xbf9c61ab /*-1.2217306*/ -glabel D_80052B18 -.word 0xc0490fdb /*-3.1415927*/ -glabel D_80052B1C -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B20 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B24 -.word 0x3f4ccccd /*0.80000001*/ -glabel D_80052B28 -.word 0xc0490fdb /*-3.1415927*/ -glabel D_80052B2C -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B30 -.word 0x3a64c389 /*0.00087266468*/ -glabel D_80052B34 -.word 0x3a64c389 /*0.00087266468*/ -glabel D_80052B38 -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B3C -.word 0x3f1930a7 /*0.59839863*/ -glabel D_80052B40 -.word 0x3c236719 /*0.0099733109*/ -glabel D_80052B44 -.word 0x3f7d70a4 /*0.99000001*/ -glabel D_80052B48 -.word 0x38d1b717 /*0.000099999997*/ -glabel D_80052B4C -.word 0x3964c389 /*0.00021816617*/ -glabel D_80052B50 -.word 0x3bd67750 /*0.0065449849*/ -glabel D_80052B54 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B58 -.word 0x3964c389 /*0.00021816617*/ -glabel D_80052B5C -.word 0xb964c389 /*-0.00021816617*/ -glabel D_80052B60 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B64 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B68 -.word 0x3e99999a /*0.30000001*/ -glabel D_80052B6C -.word 0x3fc90fdb /*1.5707964*/ -glabel D_80052B70 -.word 0x3fc90fdb /*1.5707964*/ -glabel D_80052B74 -.word 0x3e23d70a /*0.16*/ -glabel D_80052B78 -.word 0x461c4000 /*10000.0*/ -glabel D_80052B7C -.word 0x453b8000 /*3000.0*/ -glabel D_80052B80 -.word 0x3f19999a /*0.60000002*/ -glabel D_80052B84 -.word 0x3e99999a /*0.30000001*/ -glabel D_80052B88 -.word 0xbdcccccd /*-0.1*/ -glabel D_80052B8C -.word 0x3e4ccccd /*0.2*/ -glabel D_80052B90 -.word 0x453b8000 /*3000.0*/ -glabel D_80052B94 -.word 0x453b8000 /*3000.0*/ -.text -glabel object_interaction -/* 079E04 7F0452D4 27BDF958 */ addiu $sp, $sp, -0x6a8 -/* 079E08 7F0452D8 AFBF0054 */ sw $ra, 0x54($sp) -/* 079E0C 7F0452DC AFB40050 */ sw $s4, 0x50($sp) -/* 079E10 7F0452E0 AFB3004C */ sw $s3, 0x4c($sp) -/* 079E14 7F0452E4 AFB20048 */ sw $s2, 0x48($sp) -/* 079E18 7F0452E8 AFB10044 */ sw $s1, 0x44($sp) -/* 079E1C 7F0452EC AFB00040 */ sw $s0, 0x40($sp) -/* 079E20 7F0452F0 F7B60038 */ sdc1 $f22, 0x38($sp) -/* 079E24 7F0452F4 F7B40030 */ sdc1 $f20, 0x30($sp) -/* 079E28 7F0452F8 8C910004 */ lw $s1, 4($a0) -/* 079E2C 7F0452FC 4480B000 */ mtc1 $zero, $f22 -/* 079E30 7F045300 00809825 */ move $s3, $a0 -/* 079E34 7F045304 8E340014 */ lw $s4, 0x14($s1) -/* 079E38 7F045308 AFA00690 */ sw $zero, 0x690($sp) -/* 079E3C 7F04530C AFA00680 */ sw $zero, 0x680($sp) -/* 079E40 7F045310 0FC26919 */ jal get_num_players -/* 079E44 7F045314 E7B6067C */ swc1 $f22, 0x67c($sp) -/* 079E48 7F045318 240C0001 */ li $t4, 1 -/* 079E4C 7F04531C AFA20674 */ sw $v0, 0x674($sp) -/* 079E50 7F045320 AFAC0670 */ sw $t4, 0x670($sp) -/* 079E54 7F045324 8E230064 */ lw $v1, 0x64($s1) -/* 079E58 7F045328 306E0004 */ andi $t6, $v1, 4 -/* 079E5C 7F04532C 11C00009 */ beqz $t6, .L7F045354 -/* 079E60 7F045330 306F0008 */ andi $t7, $v1, 8 -/* 079E64 7F045334 92260002 */ lbu $a2, 2($s1) -/* 079E68 7F045338 02202025 */ move $a0, $s1 -/* 079E6C 7F04533C 00002825 */ move $a1, $zero -/* 079E70 7F045340 30CD0004 */ andi $t5, $a2, 4 -/* 079E74 7F045344 0FC10366 */ jal sub_GAME_7F040D98 -/* 079E78 7F045348 01A03025 */ move $a2, $t5 -/* 079E7C 7F04534C 100011F8 */ b .L7F049B30 -/* 079E80 7F045350 24020001 */ li $v0, 1 -.L7F045354: -/* 079E84 7F045354 11E00005 */ beqz $t7, .L7F04536C -/* 079E88 7F045358 30680080 */ andi $t0, $v1, 0x80 -/* 079E8C 7F04535C 2401FFF7 */ li $at, -9 -/* 079E90 7F045360 0061C024 */ and $t8, $v1, $at -/* 079E94 7F045364 1000000B */ b .L7F045394 -/* 079E98 7F045368 AE380064 */ sw $t8, 0x64($s1) -.L7F04536C: -/* 079E9C 7F04536C 5100000A */ beql $t0, $zero, .L7F045398 -/* 079EA0 7F045370 24010001 */ li $at, 1 -/* 079EA4 7F045374 92690001 */ lbu $t1, 1($s3) -/* 079EA8 7F045378 24020003 */ li $v0, 3 -/* 079EAC 7F04537C 312BFFFD */ andi $t3, $t1, 0xfffd -/* 079EB0 7F045380 A26B0001 */ sb $t3, 1($s3) -/* 079EB4 7F045384 8E390064 */ lw $t9, 0x64($s1) -/* 079EB8 7F045388 372A0008 */ ori $t2, $t9, 8 -/* 079EBC 7F04538C 100011E8 */ b .L7F049B30 -/* 079EC0 7F045390 AE2A0064 */ sw $t2, 0x64($s1) -.L7F045394: -/* 079EC4 7F045394 24010001 */ li $at, 1 -.L7F045398: -/* 079EC8 7F045398 14410003 */ bne $v0, $at, .L7F0453A8 -/* 079ECC 7F04539C 240C0001 */ li $t4, 1 -/* 079ED0 7F0453A0 10000015 */ b .L7F0453F8 -/* 079ED4 7F0453A4 AFAC0678 */ sw $t4, 0x678($sp) -.L7F0453A8: -/* 079ED8 7F0453A8 0FC26C54 */ jal get_cur_playernum -/* 079EDC 7F0453AC 00000000 */ nop -/* 079EE0 7F0453B0 0FC26D36 */ jal sub_GAME_7F09B4D8 -/* 079EE4 7F0453B4 00402025 */ move $a0, $v0 -/* 079EE8 7F0453B8 2C4E0001 */ sltiu $t6, $v0, 1 -/* 079EEC 7F0453BC AFAE0678 */ sw $t6, 0x678($sp) -/* 079EF0 7F0453C0 8E2D0064 */ lw $t5, 0x64($s1) -/* 079EF4 7F0453C4 31AF0080 */ andi $t7, $t5, 0x80 -/* 079EF8 7F0453C8 51E0000C */ beql $t7, $zero, .L7F0453FC -/* 079EFC 7F0453CC 8FAB0678 */ lw $t3, 0x678($sp) -/* 079F00 7F0453D0 8E22006C */ lw $v0, 0x6c($s1) -/* 079F04 7F0453D4 3C188008 */ lui $t8, %hi(pPlayer) -/* 079F08 7F0453D8 8C430088 */ lw $v1, 0x88($v0) -/* 079F0C 7F0453DC 50600007 */ beql $v1, $zero, .L7F0453FC -/* 079F10 7F0453E0 8FAB0678 */ lw $t3, 0x678($sp) -/* 079F14 7F0453E4 8F18A0B0 */ lw $t8, %lo(pPlayer)($t8) -/* 079F18 7F0453E8 8F0800A8 */ lw $t0, 0xa8($t8) -/* 079F1C 7F0453EC 01034826 */ xor $t1, $t0, $v1 -/* 079F20 7F0453F0 2D290001 */ sltiu $t1, $t1, 1 -/* 079F24 7F0453F4 AFA90678 */ sw $t1, 0x678($sp) -.L7F0453F8: -/* 079F28 7F0453F8 8FAB0678 */ lw $t3, 0x678($sp) -.L7F0453FC: -/* 079F2C 7F0453FC 51600B8C */ beql $t3, $zero, .L7F048230 -/* 079F30 7F045400 92220003 */ lbu $v0, 3($s1) -/* 079F34 7F045404 8E390064 */ lw $t9, 0x64($s1) -/* 079F38 7F045408 332A0080 */ andi $t2, $t9, 0x80 -/* 079F3C 7F04540C 51400483 */ beql $t2, $zero, .L7F04661C -/* 079F40 7F045410 8FAD0690 */ lw $t5, 0x690($sp) -/* 079F44 7F045414 8E30006C */ lw $s0, 0x6c($s1) -/* 079F48 7F045418 3C0E8005 */ lui $t6, %hi(clock_timer) -/* 079F4C 7F04541C 8DCE8374 */ lw $t6, %lo(clock_timer)($t6) -/* 079F50 7F045420 8E0C00E0 */ lw $t4, 0xe0($s0) -/* 079F54 7F045424 018E6821 */ addu $t5, $t4, $t6 -/* 079F58 7F045428 29A10961 */ slti $at, $t5, 0x961 -/* 079F5C 7F04542C 14200004 */ bnez $at, .L7F045440 -/* 079F60 7F045430 AE0D00E0 */ sw $t5, 0xe0($s0) -/* 079F64 7F045434 8E380064 */ lw $t8, 0x64($s1) -/* 079F68 7F045438 37080004 */ ori $t0, $t8, 4 -/* 079F6C 7F04543C AE280064 */ sw $t0, 0x64($s1) -.L7F045440: -/* 079F70 7F045440 8E090000 */ lw $t1, ($s0) -/* 079F74 7F045444 312B0100 */ andi $t3, $t1, 0x100 -/* 079F78 7F045448 5160002F */ beql $t3, $zero, .L7F045508 -/* 079F7C 7F04544C C6260058 */ lwc1 $f6, 0x58($s1) -/* 079F80 7F045450 92390003 */ lbu $t9, 3($s1) -/* 079F84 7F045454 24010008 */ li $at, 8 -/* 079F88 7F045458 24120001 */ li $s2, 1 -/* 079F8C 7F04545C 57210008 */ bnel $t9, $at, .L7F045480 -/* 079F90 7F045460 8E040088 */ lw $a0, 0x88($s0) -/* 079F94 7F045464 AFB10648 */ sw $s1, 0x648($sp) -/* 079F98 7F045468 822A0080 */ lb $t2, 0x80($s1) -/* 079F9C 7F04546C 24010056 */ li $at, 86 -/* 079FA0 7F045470 55410003 */ bnel $t2, $at, .L7F045480 -/* 079FA4 7F045474 8E040088 */ lw $a0, 0x88($s0) -/* 079FA8 7F045478 00009025 */ move $s2, $zero -/* 079FAC 7F04547C 8E040088 */ lw $a0, 0x88($s0) -.L7F045480: -/* 079FB0 7F045480 50800004 */ beql $a0, $zero, .L7F045494 -/* 079FB4 7F045484 02202025 */ move $a0, $s1 -/* 079FB8 7F045488 0FC0F416 */ jal sub_GAME_7F03D058 -/* 079FBC 7F04548C 00002825 */ move $a1, $zero -/* 079FC0 7F045490 02202025 */ move $a0, $s1 -.L7F045494: -/* 079FC4 7F045494 260500D4 */ addiu $a1, $s0, 0xd4 -/* 079FC8 7F045498 27A6064C */ addiu $a2, $sp, 0x64c -/* 079FCC 7F04549C 27A70658 */ addiu $a3, $sp, 0x658 -/* 079FD0 7F0454A0 AFA00010 */ sw $zero, 0x10($sp) -/* 079FD4 7F0454A4 0FC10BAD */ jal sub_GAME_7F042EB4 -/* 079FD8 7F0454A8 AFB20014 */ sw $s2, 0x14($sp) -/* 079FDC 7F0454AC AFA20664 */ sw $v0, 0x664($sp) -/* 079FE0 7F0454B0 8E040088 */ lw $a0, 0x88($s0) -/* 079FE4 7F0454B4 50800004 */ beql $a0, $zero, .L7F0454C8 -/* 079FE8 7F0454B8 8FAC0664 */ lw $t4, 0x664($sp) -/* 079FEC 7F0454BC 0FC0F416 */ jal sub_GAME_7F03D058 -/* 079FF0 7F0454C0 24050001 */ li $a1, 1 -/* 079FF4 7F0454C4 8FAC0664 */ lw $t4, 0x664($sp) -.L7F0454C8: -/* 079FF8 7F0454C8 24010001 */ li $at, 1 -/* 079FFC 7F0454CC 8FA20648 */ lw $v0, 0x648($sp) -/* 07A000 7F0454D0 51810009 */ beql $t4, $at, .L7F0454F8 -/* 07A004 7F0454D4 8E0D0000 */ lw $t5, ($s0) -/* 07A008 7F0454D8 50400007 */ beql $v0, $zero, .L7F0454F8 -/* 07A00C 7F0454DC 8E0D0000 */ lw $t5, ($s0) -/* 07A010 7F0454E0 804E0080 */ lb $t6, 0x80($v0) -/* 07A014 7F0454E4 24010056 */ li $at, 86 -/* 07A018 7F0454E8 55C10003 */ bnel $t6, $at, .L7F0454F8 -/* 07A01C 7F0454EC 8E0D0000 */ lw $t5, ($s0) -/* 07A020 7F0454F0 A4400082 */ sh $zero, 0x82($v0) -/* 07A024 7F0454F4 8E0D0000 */ lw $t5, ($s0) -.L7F0454F8: -/* 07A028 7F0454F8 2401FEFF */ li $at, -257 -/* 07A02C 7F0454FC 01A17824 */ and $t7, $t5, $at -/* 07A030 7F045500 AE0F0000 */ sw $t7, ($s0) -/* 07A034 7F045504 C6260058 */ lwc1 $f6, 0x58($s1) -.L7F045508: -/* 07A038 7F045508 3C188005 */ lui $t8, %hi(clock_timer) -/* 07A03C 7F04550C 3C013F80 */ lui $at, 0x3f80 -/* 07A040 7F045510 E7A60694 */ swc1 $f6, 0x694($sp) -/* 07A044 7F045514 C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07A048 7F045518 E7AA0698 */ swc1 $f10, 0x698($sp) -/* 07A04C 7F04551C C6240060 */ lwc1 $f4, 0x60($s1) -/* 07A050 7F045520 E7A4069C */ swc1 $f4, 0x69c($sp) -/* 07A054 7F045524 8E0200BC */ lw $v0, 0xbc($s0) -/* 07A058 7F045528 58400005 */ blezl $v0, .L7F045540 -/* 07A05C 7F04552C 8E29006C */ lw $t1, 0x6c($s1) -/* 07A060 7F045530 8F188374 */ lw $t8, %lo(clock_timer)($t8) -/* 07A064 7F045534 00584023 */ subu $t0, $v0, $t8 -/* 07A068 7F045538 AE0800BC */ sw $t0, 0xbc($s0) -/* 07A06C 7F04553C 8E29006C */ lw $t1, 0x6c($s1) -.L7F045540: -/* 07A070 7F045540 8D2B0000 */ lw $t3, ($t1) -/* 07A074 7F045544 31790001 */ andi $t9, $t3, 1 -/* 07A078 7F045548 53200351 */ beql $t9, $zero, .L7F046290 -/* 07A07C 7F04554C C6000060 */ lwc1 $f0, 0x60($s0) -/* 07A080 7F045550 0FC1001E */ jal sub_GAME_7F040078 -/* 07A084 7F045554 02202025 */ move $a0, $s1 -/* 07A088 7F045558 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07A08C 7F04555C 44814000 */ mtc1 $at, $f8 -/* 07A090 7F045560 3C078005 */ lui $a3, %hi(clock_timer) -/* 07A094 7F045564 24E78374 */ addiu $a3, %lo(clock_timer) # addiu $a3, $a3, -0x7c8c -/* 07A098 7F045568 AFA20640 */ sw $v0, 0x640($sp) -/* 07A09C 7F04556C AFA00610 */ sw $zero, 0x610($sp) -/* 07A0A0 7F045570 AFA0060C */ sw $zero, 0x60c($sp) -/* 07A0A4 7F045574 AFA00604 */ sw $zero, 0x604($sp) -/* 07A0A8 7F045578 E7A80638 */ swc1 $f8, 0x638($sp) -/* 07A0AC 7F04557C 8E0A00A8 */ lw $t2, 0xa8($s0) -/* 07A0B0 7F045580 8CEC0000 */ lw $t4, ($a3) -/* 07A0B4 7F045584 C634005C */ lwc1 $f20, 0x5c($s1) -/* 07A0B8 7F045588 00009025 */ move $s2, $zero -/* 07A0BC 7F04558C 014C7021 */ addu $t6, $t2, $t4 -/* 07A0C0 7F045590 AE0E00A8 */ sw $t6, 0xa8($s0) -/* 07A0C4 7F045594 C6260018 */ lwc1 $f6, 0x18($s1) -/* 07A0C8 7F045598 3C018005 */ lui $at, %hi(rocket_initial_gravity_modifier) -/* 07A0CC 7F04559C E7A6062C */ swc1 $f6, 0x62c($sp) -/* 07A0D0 7F0455A0 C62A001C */ lwc1 $f10, 0x1c($s1) -/* 07A0D4 7F0455A4 E7AA0630 */ swc1 $f10, 0x630($sp) -/* 07A0D8 7F0455A8 C6240020 */ lwc1 $f4, 0x20($s1) -/* 07A0DC 7F0455AC E7A40634 */ swc1 $f4, 0x634($sp) -/* 07A0E0 7F0455B0 8E030000 */ lw $v1, ($s0) -/* 07A0E4 7F0455B4 306D0020 */ andi $t5, $v1, 0x20 -/* 07A0E8 7F0455B8 11A0004B */ beqz $t5, .L7F0456E8 -/* 07A0EC 7F0455BC 00000000 */ nop -/* 07A0F0 7F0455C0 C4322A98 */ lwc1 $f18, %lo(rocket_initial_gravity_modifier)($at) -/* 07A0F4 7F0455C4 C600001C */ lwc1 $f0, 0x1c($s0) -/* 07A0F8 7F0455C8 3C028005 */ lui $v0, %hi(global_timer_delta) -/* 07A0FC 7F0455CC 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 -/* 07A100 7F0455D0 4612003C */ c.lt.s $f0, $f18 -/* 07A104 7F0455D4 00000000 */ nop -/* 07A108 7F0455D8 4502001C */ bc1fl .L7F04564C -/* 07A10C 7F0455DC C60000B0 */ lwc1 $f0, 0xb0($s0) -/* 07A110 7F0455E0 C6080014 */ lwc1 $f8, 0x14($s0) -/* 07A114 7F0455E4 C4460000 */ lwc1 $f6, ($v0) -/* 07A118 7F0455E8 C60400B4 */ lwc1 $f4, 0xb4($s0) -/* 07A11C 7F0455EC 3C018005 */ lui $at, %hi(D_80052A9C) -/* 07A120 7F0455F0 46064282 */ mul.s $f10, $f8, $f6 -/* 07A124 7F0455F4 460A2200 */ add.s $f8, $f4, $f10 -/* 07A128 7F0455F8 E60800B4 */ swc1 $f8, 0xb4($s0) -/* 07A12C 7F0455FC C4440000 */ lwc1 $f4, ($v0) -/* 07A130 7F045600 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07A134 7F045604 C60800B0 */ lwc1 $f8, 0xb0($s0) -/* 07A138 7F045608 46043282 */ mul.s $f10, $f6, $f4 -/* 07A13C 7F04560C 460A4180 */ add.s $f6, $f8, $f10 -/* 07A140 7F045610 E60600B0 */ swc1 $f6, 0xb0($s0) -/* 07A144 7F045614 C4480000 */ lwc1 $f8, ($v0) -/* 07A148 7F045618 C4242A9C */ lwc1 $f4, %lo(D_80052A9C)($at) -/* 07A14C 7F04561C 46082282 */ mul.s $f10, $f4, $f8 -/* 07A150 7F045620 460A0180 */ add.s $f6, $f0, $f10 -/* 07A154 7F045624 E606001C */ swc1 $f6, 0x1c($s0) -/* 07A158 7F045628 C604001C */ lwc1 $f4, 0x1c($s0) -/* 07A15C 7F04562C 4604903C */ c.lt.s $f18, $f4 -/* 07A160 7F045630 00000000 */ nop -/* 07A164 7F045634 45000002 */ bc1f .L7F045640 -/* 07A168 7F045638 00000000 */ nop -/* 07A16C 7F04563C E612001C */ swc1 $f18, 0x1c($s0) -.L7F045640: -/* 07A170 7F045640 10000029 */ b .L7F0456E8 -/* 07A174 7F045644 8E030000 */ lw $v1, ($s0) -/* 07A178 7F045648 C60000B0 */ lwc1 $f0, 0xb0($s0) -.L7F04564C: -/* 07A17C 7F04564C C7A80698 */ lwc1 $f8, 0x698($sp) -/* 07A180 7F045650 4600403C */ c.lt.s $f8, $f0 -/* 07A184 7F045654 00000000 */ nop -/* 07A188 7F045658 45000019 */ bc1f .L7F0456C0 -/* 07A18C 7F04565C 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07A190 7F045660 C4268378 */ lwc1 $f6, %lo(global_timer_delta)($at) -/* 07A194 7F045664 C60A0014 */ lwc1 $f10, 0x14($s0) -/* 07A198 7F045668 C60800B4 */ lwc1 $f8, 0xb4($s0) -/* 07A19C 7F04566C 46065102 */ mul.s $f4, $f10, $f6 -/* 07A1A0 7F045670 46044280 */ add.s $f10, $f8, $f4 -/* 07A1A4 7F045674 E60A00B4 */ swc1 $f10, 0xb4($s0) -/* 07A1A8 7F045678 C4288378 */ lwc1 $f8, %lo(global_timer_delta)($at) -/* 07A1AC 7F04567C C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07A1B0 7F045680 3C018005 */ lui $at, %hi(D_80052AA0) -/* 07A1B4 7F045684 46083102 */ mul.s $f4, $f6, $f8 -/* 07A1B8 7F045688 46040280 */ add.s $f10, $f0, $f4 -/* 07A1BC 7F04568C E60A00B0 */ swc1 $f10, 0xb0($s0) -/* 07A1C0 7F045690 C7A80698 */ lwc1 $f8, 0x698($sp) -/* 07A1C4 7F045694 C60600B0 */ lwc1 $f6, 0xb0($s0) -/* 07A1C8 7F045698 C42A2AA0 */ lwc1 $f10, %lo(D_80052AA0)($at) -/* 07A1CC 7F04569C 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07A1D0 7F0456A0 46083101 */ sub.s $f4, $f6, $f8 -/* 07A1D4 7F0456A4 46045182 */ mul.s $f6, $f10, $f4 -/* 07A1D8 7F0456A8 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07A1DC 7F0456AC 460A3102 */ mul.s $f4, $f6, $f10 -/* 07A1E0 7F0456B0 46044180 */ add.s $f6, $f8, $f4 -/* 07A1E4 7F0456B4 E7A60698 */ swc1 $f6, 0x698($sp) -/* 07A1E8 7F0456B8 1000000B */ b .L7F0456E8 -/* 07A1EC 7F0456BC 8E030000 */ lw $v1, ($s0) -.L7F0456C0: -/* 07A1F0 7F0456C0 E7A00698 */ swc1 $f0, 0x698($sp) -/* 07A1F4 7F0456C4 8E0F0000 */ lw $t7, ($s0) -/* 07A1F8 7F0456C8 2401FFDF */ li $at, -33 -/* 07A1FC 7F0456CC C60A00B4 */ lwc1 $f10, 0xb4($s0) -/* 07A200 7F0456D0 01E1C024 */ and $t8, $t7, $at -/* 07A204 7F0456D4 AE180000 */ sw $t8, ($s0) -/* 07A208 7F0456D8 37030010 */ ori $v1, $t8, 0x10 -/* 07A20C 7F0456DC E616001C */ swc1 $f22, 0x1c($s0) -/* 07A210 7F0456E0 AE030000 */ sw $v1, ($s0) -/* 07A214 7F0456E4 E60A0008 */ swc1 $f10, 8($s0) -.L7F0456E8: -/* 07A218 7F0456E8 3C028005 */ lui $v0, %hi(global_timer_delta) -/* 07A21C 7F0456EC 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 -/* 07A220 7F0456F0 3C018005 */ lui $at, %hi(prop_projectile_gravity_modifier) -/* 07A224 7F0456F4 306B0010 */ andi $t3, $v1, 0x10 -/* 07A228 7F0456F8 C4322AA4 */ lwc1 $f18, %lo(prop_projectile_gravity_modifier)($at) -/* 07A22C 7F0456FC C4420000 */ lwc1 $f2, ($v0) -/* 07A230 7F045700 C600001C */ lwc1 $f0, 0x1c($s0) -/* 07A234 7F045704 15600015 */ bnez $t3, .L7F04575C -/* 07A238 7F045708 C6100014 */ lwc1 $f16, 0x14($s0) -/* 07A23C 7F04570C 46008100 */ add.s $f4, $f16, $f0 -/* 07A240 7F045710 C6080008 */ lwc1 $f8, 8($s0) -/* 07A244 7F045714 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07A248 7F045718 46022182 */ mul.s $f6, $f4, $f2 -/* 07A24C 7F04571C 46064280 */ add.s $f10, $f8, $f6 -/* 07A250 7F045720 E60A0008 */ swc1 $f10, 8($s0) -/* 07A254 7F045724 C4420000 */ lwc1 $f2, ($v0) -/* 07A258 7F045728 C60C0008 */ lwc1 $f12, 8($s0) -/* 07A25C 7F04572C 44815000 */ mtc1 $at, $f10 -/* 07A260 7F045730 46029102 */ mul.s $f4, $f18, $f2 -/* 07A264 7F045734 46046381 */ sub.s $f14, $f12, $f4 -/* 07A268 7F045738 460E6200 */ add.s $f8, $f12, $f14 -/* 07A26C 7F04573C 46081182 */ mul.s $f6, $f2, $f8 -/* 07A270 7F045740 C7A80698 */ lwc1 $f8, 0x698($sp) -/* 07A274 7F045744 460A3102 */ mul.s $f4, $f6, $f10 -/* 07A278 7F045748 46044180 */ add.s $f6, $f8, $f4 -/* 07A27C 7F04574C E7A60698 */ swc1 $f6, 0x698($sp) -/* 07A280 7F045750 E60E0008 */ swc1 $f14, 8($s0) -/* 07A284 7F045754 1000000C */ b .L7F045788 -/* 07A288 7F045758 C4420000 */ lwc1 $f2, ($v0) -.L7F04575C: -/* 07A28C 7F04575C 46008200 */ add.s $f8, $f16, $f0 -/* 07A290 7F045760 C60A0008 */ lwc1 $f10, 8($s0) -/* 07A294 7F045764 46024102 */ mul.s $f4, $f8, $f2 -/* 07A298 7F045768 46045180 */ add.s $f6, $f10, $f4 -/* 07A29C 7F04576C E6060008 */ swc1 $f6, 8($s0) -/* 07A2A0 7F045770 C60A0008 */ lwc1 $f10, 8($s0) -/* 07A2A4 7F045774 C4420000 */ lwc1 $f2, ($v0) -/* 07A2A8 7F045778 C7A80698 */ lwc1 $f8, 0x698($sp) -/* 07A2AC 7F04577C 46025102 */ mul.s $f4, $f10, $f2 -/* 07A2B0 7F045780 46044180 */ add.s $f6, $f8, $f4 -/* 07A2B4 7F045784 E7A60698 */ swc1 $f6, 0x698($sp) -.L7F045788: -/* 07A2B8 7F045788 C6080010 */ lwc1 $f8, 0x10($s0) -/* 07A2BC 7F04578C C60A0004 */ lwc1 $f10, 4($s0) -/* 07A2C0 7F045790 26240018 */ addiu $a0, $s1, 0x18 -/* 07A2C4 7F045794 46024102 */ mul.s $f4, $f8, $f2 -/* 07A2C8 7F045798 C6080018 */ lwc1 $f8, 0x18($s0) -/* 07A2CC 7F04579C 26050020 */ addiu $a1, $s0, 0x20 -/* 07A2D0 7F0457A0 46045180 */ add.s $f6, $f10, $f4 -/* 07A2D4 7F0457A4 E6060004 */ swc1 $f6, 4($s0) -/* 07A2D8 7F0457A8 C44A0000 */ lwc1 $f10, ($v0) -/* 07A2DC 7F0457AC C606000C */ lwc1 $f6, 0xc($s0) -/* 07A2E0 7F0457B0 460A4102 */ mul.s $f4, $f8, $f10 -/* 07A2E4 7F0457B4 46043200 */ add.s $f8, $f6, $f4 -/* 07A2E8 7F0457B8 C6060004 */ lwc1 $f6, 4($s0) -/* 07A2EC 7F0457BC E608000C */ swc1 $f8, 0xc($s0) -/* 07A2F0 7F0457C0 C4420000 */ lwc1 $f2, ($v0) -/* 07A2F4 7F0457C4 C7AA0694 */ lwc1 $f10, 0x694($sp) -/* 07A2F8 7F0457C8 8CE60000 */ lw $a2, ($a3) -/* 07A2FC 7F0457CC 46023102 */ mul.s $f4, $f6, $f2 -/* 07A300 7F0457D0 C7A6069C */ lwc1 $f6, 0x69c($sp) -/* 07A304 7F0457D4 46045200 */ add.s $f8, $f10, $f4 -/* 07A308 7F0457D8 E7A80694 */ swc1 $f8, 0x694($sp) -/* 07A30C 7F0457DC C60A000C */ lwc1 $f10, 0xc($s0) -/* 07A310 7F0457E0 AFA5006C */ sw $a1, 0x6c($sp) -/* 07A314 7F0457E4 AFA40070 */ sw $a0, 0x70($sp) -/* 07A318 7F0457E8 46025102 */ mul.s $f4, $f10, $f2 -/* 07A31C 7F0457EC 46043200 */ add.s $f8, $f6, $f4 -/* 07A320 7F0457F0 0FC15F7E */ jal sub_GAME_7F057DF8 -/* 07A324 7F0457F4 E7A8069C */ swc1 $f8, 0x69c($sp) -/* 07A328 7F0457F8 92390003 */ lbu $t9, 3($s1) -/* 07A32C 7F0457FC 24010008 */ li $at, 8 -/* 07A330 7F045800 57210013 */ bnel $t9, $at, .L7F045850 -/* 07A334 7F045804 8E040088 */ lw $a0, 0x88($s0) -/* 07A338 7F045808 82220080 */ lb $v0, 0x80($s1) -/* 07A33C 7F04580C 2401001D */ li $at, 29 -/* 07A340 7F045810 1041000D */ beq $v0, $at, .L7F045848 -/* 07A344 7F045814 2401001B */ li $at, 27 -/* 07A348 7F045818 1041000B */ beq $v0, $at, .L7F045848 -/* 07A34C 7F04581C 2401001C */ li $at, 28 -/* 07A350 7F045820 10410009 */ beq $v0, $at, .L7F045848 -/* 07A354 7F045824 24010021 */ li $at, 33 -/* 07A358 7F045828 10410007 */ beq $v0, $at, .L7F045848 -/* 07A35C 7F04582C 2401002F */ li $at, 47 -/* 07A360 7F045830 10410005 */ beq $v0, $at, .L7F045848 -/* 07A364 7F045834 24010030 */ li $at, 48 -/* 07A368 7F045838 10410003 */ beq $v0, $at, .L7F045848 -/* 07A36C 7F04583C 24010022 */ li $at, 34 -/* 07A370 7F045840 54410003 */ bnel $v0, $at, .L7F045850 -/* 07A374 7F045844 8E040088 */ lw $a0, 0x88($s0) -.L7F045848: -/* 07A378 7F045848 24120001 */ li $s2, 1 -/* 07A37C 7F04584C 8E040088 */ lw $a0, 0x88($s0) -.L7F045850: -/* 07A380 7F045850 50800004 */ beql $a0, $zero, .L7F045864 -/* 07A384 7F045854 02202025 */ move $a0, $s1 -/* 07A388 7F045858 0FC0F416 */ jal sub_GAME_7F03D058 -/* 07A38C 7F04585C 00002825 */ move $a1, $zero -/* 07A390 7F045860 02202025 */ move $a0, $s1 -.L7F045864: -/* 07A394 7F045864 27A50694 */ addiu $a1, $sp, 0x694 -/* 07A398 7F045868 27A60614 */ addiu $a2, $sp, 0x614 -/* 07A39C 7F04586C 27A70620 */ addiu $a3, $sp, 0x620 -/* 07A3A0 7F045870 AFB20010 */ sw $s2, 0x10($sp) -/* 07A3A4 7F045874 0FC10BAD */ jal sub_GAME_7F042EB4 -/* 07A3A8 7F045878 AFA00014 */ sw $zero, 0x14($sp) -/* 07A3AC 7F04587C AFA20664 */ sw $v0, 0x664($sp) -/* 07A3B0 7F045880 8E040088 */ lw $a0, 0x88($s0) -/* 07A3B4 7F045884 50800004 */ beql $a0, $zero, .L7F045898 -/* 07A3B8 7F045888 8FAC0664 */ lw $t4, 0x664($sp) -/* 07A3BC 7F04588C 0FC0F416 */ jal sub_GAME_7F03D058 -/* 07A3C0 7F045890 24050001 */ li $a1, 1 -/* 07A3C4 7F045894 8FAC0664 */ lw $t4, 0x664($sp) -.L7F045898: -/* 07A3C8 7F045898 240A0001 */ li $t2, 1 -/* 07A3CC 7F04589C 24010002 */ li $at, 2 -/* 07A3D0 7F0458A0 15810042 */ bne $t4, $at, .L7F0459AC -/* 07A3D4 7F0458A4 AFAA0690 */ sw $t2, 0x690($sp) -/* 07A3D8 7F0458A8 3C038003 */ lui $v1, %hi(D_80030B0C) -/* 07A3DC 7F0458AC 8C630B0C */ lw $v1, %lo(D_80030B0C)($v1) -/* 07A3E0 7F0458B0 10600007 */ beqz $v1, .L7F0458D0 -/* 07A3E4 7F0458B4 00000000 */ nop -/* 07A3E8 7F0458B8 90620000 */ lbu $v0, ($v1) -/* 07A3EC 7F0458BC 24010003 */ li $at, 3 -/* 07A3F0 7F0458C0 1041003A */ beq $v0, $at, .L7F0459AC -/* 07A3F4 7F0458C4 24010006 */ li $at, 6 -/* 07A3F8 7F0458C8 50410039 */ beql $v0, $at, .L7F0459B0 -/* 07A3FC 7F0458CC 8FAC0604 */ lw $t4, 0x604($sp) -.L7F0458D0: -/* 07A400 7F0458D0 10600007 */ beqz $v1, .L7F0458F0 -/* 07A404 7F0458D4 00002025 */ move $a0, $zero -/* 07A408 7F0458D8 8C620004 */ lw $v0, 4($v1) -/* 07A40C 7F0458DC 8C4E0064 */ lw $t6, 0x64($v0) -/* 07A410 7F0458E0 31CD0080 */ andi $t5, $t6, 0x80 -/* 07A414 7F0458E4 11A00002 */ beqz $t5, .L7F0458F0 -/* 07A418 7F0458E8 00000000 */ nop -/* 07A41C 7F0458EC 24040001 */ li $a0, 1 -.L7F0458F0: -/* 07A420 7F0458F0 5480002F */ bnezl $a0, .L7F0459B0 -/* 07A424 7F0458F4 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A428 7F0458F8 0FC0FEDC */ jal sub_GAME_7F03FB70 -/* 07A42C 7F0458FC 02002025 */ move $a0, $s0 -/* 07A430 7F045900 8E2F0064 */ lw $t7, 0x64($s1) -/* 07A434 7F045904 2401FF7F */ li $at, -129 -/* 07A438 7F045908 AE20006C */ sw $zero, 0x6c($s1) -/* 07A43C 7F04590C 01E1C024 */ and $t8, $t7, $at -/* 07A440 7F045910 AE380064 */ sw $t8, 0x64($s1) -/* 07A444 7F045914 92620001 */ lbu $v0, 1($s3) -/* 07A448 7F045918 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07A44C 7F04591C 240500F1 */ li $a1, 241 -/* 07A450 7F045920 30480008 */ andi $t0, $v0, 8 -/* 07A454 7F045924 11000003 */ beqz $t0, .L7F045934 -/* 07A458 7F045928 00003025 */ move $a2, $zero -/* 07A45C 7F04592C 34490010 */ ori $t1, $v0, 0x10 -/* 07A460 7F045930 A2690001 */ sb $t1, 1($s3) -.L7F045934: -/* 07A464 7F045934 0C002382 */ jal play_sfx_a1 -/* 07A468 7F045938 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07A46C 7F04593C 00402025 */ move $a0, $v0 -/* 07A470 7F045940 0FC14E84 */ jal sub_GAME_7F053A10 -/* 07A474 7F045944 26650008 */ addiu $a1, $s3, 8 -/* 07A478 7F045948 8E6B0014 */ lw $t3, 0x14($s3) -/* 07A47C 7F04594C 82240080 */ lb $a0, 0x80($s1) -/* 07A480 7F045950 0FC15DFA */ jal sub_GAME_7F0577E8 -/* 07A484 7F045954 91650003 */ lbu $a1, 3($t3) -/* 07A488 7F045958 02202025 */ move $a0, $s1 -/* 07A48C 7F04595C 27A50614 */ addiu $a1, $sp, 0x614 -/* 07A490 7F045960 8E660014 */ lw $a2, 0x14($s3) -/* 07A494 7F045964 0FC10E6E */ jal sub_GAME_7F0439B8 -/* 07A498 7F045968 27A70620 */ addiu $a3, $sp, 0x620 -/* 07A49C 7F04596C 3C058003 */ lui $a1, %hi(D_80030B0C) -/* 07A4A0 7F045970 8CA50B0C */ lw $a1, %lo(D_80030B0C)($a1) -/* 07A4A4 7F045974 02602025 */ move $a0, $s3 -/* 07A4A8 7F045978 3C068007 */ lui $a2, %hi(objinst) -/* 07A4AC 7F04597C 10A0000B */ beqz $a1, .L7F0459AC -/* 07A4B0 7F045980 3C078007 */ lui $a3, %hi(dword_CODE_bss_80075B74) -/* 07A4B4 7F045984 8E720014 */ lw $s2, 0x14($s3) -/* 07A4B8 7F045988 8CC65B70 */ lw $a2, %lo(objinst)($a2) -/* 07A4BC 7F04598C 0FC10E9B */ jal sub_GAME_7F043A6C -/* 07A4C0 7F045990 8CE75B74 */ lw $a3, %lo(dword_CODE_bss_80075B74)($a3) -/* 07A4C4 7F045994 10400005 */ beqz $v0, .L7F0459AC -/* 07A4C8 7F045998 24190005 */ li $t9, 5 -/* 07A4CC 7F04599C AE720014 */ sw $s2, 0x14($s3) -/* 07A4D0 7F0459A0 240A0001 */ li $t2, 1 -/* 07A4D4 7F0459A4 AFB90680 */ sw $t9, 0x680($sp) -/* 07A4D8 7F0459A8 AFAA0604 */ sw $t2, 0x604($sp) -.L7F0459AC: -/* 07A4DC 7F0459AC 8FAC0604 */ lw $t4, 0x604($sp) -.L7F0459B0: -/* 07A4E0 7F0459B0 158000EC */ bnez $t4, .L7F045D64 -/* 07A4E4 7F0459B4 3C128003 */ lui $s2, %hi(D_80030B0C) -/* 07A4E8 7F0459B8 8E520B0C */ lw $s2, %lo(D_80030B0C)($s2) -/* 07A4EC 7F0459BC 524000EA */ beql $s2, $zero, .L7F045D68 -/* 07A4F0 7F0459C0 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A4F4 7F0459C4 922E0003 */ lbu $t6, 3($s1) -/* 07A4F8 7F0459C8 24010008 */ li $at, 8 -/* 07A4FC 7F0459CC 55C100E6 */ bnel $t6, $at, .L7F045D68 -/* 07A500 7F0459D0 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A504 7F0459D4 82220080 */ lb $v0, 0x80($s1) -/* 07A508 7F0459D8 24010003 */ li $at, 3 -/* 07A50C 7F0459DC 544100C3 */ bnel $v0, $at, .L7F045CEC -/* 07A510 7F0459E0 24010056 */ li $at, 86 -/* 07A514 7F0459E4 92420000 */ lbu $v0, ($s2) -/* 07A518 7F0459E8 24010003 */ li $at, 3 -/* 07A51C 7F0459EC 1041000D */ beq $v0, $at, .L7F045A24 -/* 07A520 7F0459F0 24010006 */ li $at, 6 -/* 07A524 7F0459F4 544100DC */ bnel $v0, $at, .L7F045D68 -/* 07A528 7F0459F8 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A52C 7F0459FC 8E4D0004 */ lw $t5, 4($s2) -/* 07A530 7F045A00 51A000D9 */ beql $t5, $zero, .L7F045D68 -/* 07A534 7F045A04 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A538 7F045A08 0FC26C57 */ jal sub_GAME_7F09B15C -/* 07A53C 7F045A0C 02402025 */ move $a0, $s2 -/* 07A540 7F045A10 0FC26C54 */ jal get_cur_playernum -/* 07A544 7F045A14 00409025 */ move $s2, $v0 -/* 07A548 7F045A18 105200D2 */ beq $v0, $s2, .L7F045D64 -/* 07A54C 7F045A1C 3C128003 */ lui $s2, %hi(D_80030B0C) -/* 07A550 7F045A20 8E520B0C */ lw $s2, %lo(D_80030B0C)($s2) -.L7F045A24: -/* 07A554 7F045A24 8E22006C */ lw $v0, 0x6c($s1) -/* 07A558 7F045A28 8E440004 */ lw $a0, 4($s2) -/* 07A55C 7F045A2C 8C4F0000 */ lw $t7, ($v0) -/* 07A560 7F045A30 31F80001 */ andi $t8, $t7, 1 -/* 07A564 7F045A34 530000CC */ beql $t8, $zero, .L7F045D68 -/* 07A568 7F045A38 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A56C 7F045A3C 8C480090 */ lw $t0, 0x90($v0) -/* 07A570 7F045A40 5D0000C9 */ bgtzl $t0, .L7F045D68 -/* 07A574 7F045A44 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A578 7F045A48 8E290064 */ lw $t1, 0x64($s1) -/* 07A57C 7F045A4C 3C068007 */ lui $a2, %hi(flt_CODE_bss_80075B78) -/* 07A580 7F045A50 24C65B78 */ addiu $a2, %lo(flt_CODE_bss_80075B78) # addiu $a2, $a2, 0x5b78 -/* 07A584 7F045A54 312B0020 */ andi $t3, $t1, 0x20 -/* 07A588 7F045A58 116000C2 */ beqz $t3, .L7F045D64 -/* 07A58C 7F045A5C 3C058003 */ lui $a1, %hi(bodypartshot) -/* 07A590 7F045A60 82270080 */ lb $a3, 0x80($s1) -/* 07A594 7F045A64 24190001 */ li $t9, 1 -/* 07A598 7F045A68 AFB90010 */ sw $t9, 0x10($sp) -/* 07A59C 7F045A6C 0FC09C9F */ jal handles_shot_actors -/* 07A5A0 7F045A70 8CA50B10 */ lw $a1, %lo(bodypartshot)($a1) -/* 07A5A4 7F045A74 104000BB */ beqz $v0, .L7F045D64 -/* 07A5A8 7F045A78 240A0001 */ li $t2, 1 -/* 07A5AC 7F045A7C AFAA0604 */ sw $t2, 0x604($sp) -/* 07A5B0 7F045A80 C610008C */ lwc1 $f16, 0x8c($s0) -/* 07A5B4 7F045A84 C7AA0620 */ lwc1 $f10, 0x620($sp) -/* 07A5B8 7F045A88 4610B03C */ c.lt.s $f22, $f16 -/* 07A5BC 7F045A8C 00000000 */ nop -/* 07A5C0 7F045A90 4502001D */ bc1fl .L7F045B08 -/* 07A5C4 7F045A94 8E0C0000 */ lw $t4, ($s0) -/* 07A5C8 7F045A98 C6020004 */ lwc1 $f2, 4($s0) -/* 07A5CC 7F045A9C C60C0008 */ lwc1 $f12, 8($s0) -/* 07A5D0 7F045AA0 C7A40624 */ lwc1 $f4, 0x624($sp) -/* 07A5D4 7F045AA4 460A1182 */ mul.s $f6, $f2, $f10 -/* 07A5D8 7F045AA8 C600000C */ lwc1 $f0, 0xc($s0) -/* 07A5DC 7F045AAC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07A5E0 7F045AB0 46046202 */ mul.s $f8, $f12, $f4 -/* 07A5E4 7F045AB4 46083100 */ add.s $f4, $f6, $f8 -/* 07A5E8 7F045AB8 C7A60628 */ lwc1 $f6, 0x628($sp) -/* 07A5EC 7F045ABC 46003202 */ mul.s $f8, $f6, $f0 -/* 07A5F0 7F045AC0 44813000 */ mtc1 $at, $f6 -/* 07A5F4 7F045AC4 46044380 */ add.s $f14, $f8, $f4 -/* 07A5F8 7F045AC8 46068200 */ add.s $f8, $f16, $f6 -/* 07A5FC 7F045ACC 46004107 */ neg.s $f4, $f8 -/* 07A600 7F045AD0 46047382 */ mul.s $f14, $f14, $f4 -/* 07A604 7F045AD4 00000000 */ nop -/* 07A608 7F045AD8 460A7182 */ mul.s $f6, $f14, $f10 -/* 07A60C 7F045ADC 46061200 */ add.s $f8, $f2, $f6 -/* 07A610 7F045AE0 E6080004 */ swc1 $f8, 4($s0) -/* 07A614 7F045AE4 C7A40624 */ lwc1 $f4, 0x624($sp) -/* 07A618 7F045AE8 46047282 */ mul.s $f10, $f14, $f4 -/* 07A61C 7F045AEC 460A6180 */ add.s $f6, $f12, $f10 -/* 07A620 7F045AF0 E6060008 */ swc1 $f6, 8($s0) -/* 07A624 7F045AF4 C7A80628 */ lwc1 $f8, 0x628($sp) -/* 07A628 7F045AF8 46087102 */ mul.s $f4, $f14, $f8 -/* 07A62C 7F045AFC 46040280 */ add.s $f10, $f0, $f4 -/* 07A630 7F045B00 E60A000C */ swc1 $f10, 0xc($s0) -/* 07A634 7F045B04 8E0C0000 */ lw $t4, ($s0) -.L7F045B08: -/* 07A638 7F045B08 318E0200 */ andi $t6, $t4, 0x200 -/* 07A63C 7F045B0C 55C00004 */ bnezl $t6, .L7F045B20 -/* 07A640 7F045B10 8E0D0090 */ lw $t5, 0x90($s0) -/* 07A644 7F045B14 0FC15EB0 */ jal sub_GAME_7F057AC0 -/* 07A648 7F045B18 8FA4006C */ lw $a0, 0x6c($sp) -/* 07A64C 7F045B1C 8E0D0090 */ lw $t5, 0x90($s0) -.L7F045B20: -/* 07A650 7F045B20 3C058003 */ lui $a1, %hi(D_80030B0C) -/* 07A654 7F045B24 2406FFFF */ li $a2, -1 -/* 07A658 7F045B28 25AF0001 */ addiu $t7, $t5, 1 -/* 07A65C 7F045B2C AE0F0090 */ sw $t7, 0x90($s0) -/* 07A660 7F045B30 8CA50B0C */ lw $a1, %lo(D_80030B0C)($a1) -/* 07A664 7F045B34 0FC19107 */ jal recall_joy2_hits_edit_detail_edit_flag -/* 07A668 7F045B38 82240080 */ lb $a0, 0x80($s1) -/* 07A66C 7F045B3C 3C188003 */ lui $t8, %hi(D_80030B0C) -/* 07A670 7F045B40 8F180B0C */ lw $t8, %lo(D_80030B0C)($t8) -/* 07A674 7F045B44 3C028003 */ lui $v0, %hi(bodypartshot) -/* 07A678 7F045B48 93080001 */ lbu $t0, 1($t8) -/* 07A67C 7F045B4C 31090002 */ andi $t1, $t0, 2 -/* 07A680 7F045B50 51200085 */ beql $t1, $zero, .L7F045D68 -/* 07A684 7F045B54 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A688 7F045B58 8C420B10 */ lw $v0, %lo(bodypartshot)($v0) -/* 07A68C 7F045B5C 24010064 */ li $at, 100 -/* 07A690 7F045B60 10410080 */ beq $v0, $at, .L7F045D64 -/* 07A694 7F045B64 2401006E */ li $at, 110 -/* 07A698 7F045B68 1041007E */ beq $v0, $at, .L7F045D64 -/* 07A69C 7F045B6C 3C048007 */ lui $a0, %hi(objinst) -/* 07A6A0 7F045B70 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) -/* 07A6A4 7F045B74 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07A6A8 7F045B78 8C845B70 */ lw $a0, %lo(objinst)($a0) -/* 07A6AC 7F045B7C 0FC1B198 */ jal sub_GAME_7F06C660 -/* 07A6B0 7F045B80 00003025 */ move $a2, $zero -/* 07A6B4 7F045B84 C7A60614 */ lwc1 $f6, 0x614($sp) -/* 07A6B8 7F045B88 C7A80618 */ lwc1 $f8, 0x618($sp) -/* 07A6BC 7F045B8C C7A4061C */ lwc1 $f4, 0x61c($sp) -/* 07A6C0 7F045B90 00409025 */ move $s2, $v0 -/* 07A6C4 7F045B94 E7A605CC */ swc1 $f6, 0x5cc($sp) -/* 07A6C8 7F045B98 E7A805D0 */ swc1 $f8, 0x5d0($sp) -/* 07A6CC 7F045B9C 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 07A6D0 7F045BA0 E7A405D4 */ swc1 $f4, 0x5d4($sp) -/* 07A6D4 7F045BA4 00402025 */ move $a0, $v0 -/* 07A6D8 7F045BA8 0FC1611D */ jal sub_GAME_7F058474 -/* 07A6DC 7F045BAC 27A505CC */ addiu $a1, $sp, 0x5cc -/* 07A6E0 7F045BB0 C7AA05CC */ lwc1 $f10, 0x5cc($sp) -/* 07A6E4 7F045BB4 C6460030 */ lwc1 $f6, 0x30($s2) -/* 07A6E8 7F045BB8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07A6EC 7F045BBC 44810000 */ mtc1 $at, $f0 -/* 07A6F0 7F045BC0 46065201 */ sub.s $f8, $f10, $f6 -/* 07A6F4 7F045BC4 3C048007 */ lui $a0, %hi(objinst) -/* 07A6F8 7F045BC8 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) -/* 07A6FC 7F045BCC 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07A700 7F045BD0 46004102 */ mul.s $f4, $f8, $f0 -/* 07A704 7F045BD4 C7A805D0 */ lwc1 $f8, 0x5d0($sp) -/* 07A708 7F045BD8 8C845B70 */ lw $a0, %lo(objinst)($a0) -/* 07A70C 7F045BDC 46045180 */ add.s $f6, $f10, $f4 -/* 07A710 7F045BE0 E7A605CC */ swc1 $f6, 0x5cc($sp) -/* 07A714 7F045BE4 C64A0034 */ lwc1 $f10, 0x34($s2) -/* 07A718 7F045BE8 460A4101 */ sub.s $f4, $f8, $f10 -/* 07A71C 7F045BEC 46002182 */ mul.s $f6, $f4, $f0 -/* 07A720 7F045BF0 C7A405D4 */ lwc1 $f4, 0x5d4($sp) -/* 07A724 7F045BF4 46064280 */ add.s $f10, $f8, $f6 -/* 07A728 7F045BF8 E7AA05D0 */ swc1 $f10, 0x5d0($sp) -/* 07A72C 7F045BFC C6480038 */ lwc1 $f8, 0x38($s2) -/* 07A730 7F045C00 46082181 */ sub.s $f6, $f4, $f8 -/* 07A734 7F045C04 46003282 */ mul.s $f10, $f6, $f0 -/* 07A738 7F045C08 460A2200 */ add.s $f8, $f4, $f10 -/* 07A73C 7F045C0C 0FC1B3A4 */ jal getjointsize -/* 07A740 7F045C10 E7A805D4 */ swc1 $f8, 0x5d4($sp) -/* 07A744 7F045C14 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07A748 7F045C18 44813000 */ mtc1 $at, $f6 -/* 07A74C 7F045C1C 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B88) -/* 07A750 7F045C20 C42A5B88 */ lwc1 $f10, %lo(flt_CODE_bss_80075B88)($at) -/* 07A754 7F045C24 46060102 */ mul.s $f4, $f0, $f6 -/* 07A758 7F045C28 C7A605CC */ lwc1 $f6, 0x5cc($sp) -/* 07A75C 7F045C2C 3C048007 */ lui $a0, %hi(objinst) -/* 07A760 7F045C30 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) -/* 07A764 7F045C34 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07A768 7F045C38 8C845B70 */ lw $a0, %lo(objinst)($a0) -/* 07A76C 7F045C3C 460A2202 */ mul.s $f8, $f4, $f10 -/* 07A770 7F045C40 46083101 */ sub.s $f4, $f6, $f8 -/* 07A774 7F045C44 0FC1B3A4 */ jal getjointsize -/* 07A778 7F045C48 E7A405CC */ swc1 $f4, 0x5cc($sp) -/* 07A77C 7F045C4C 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07A780 7F045C50 44815000 */ mtc1 $at, $f10 -/* 07A784 7F045C54 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B8C) -/* 07A788 7F045C58 C4285B8C */ lwc1 $f8, %lo(flt_CODE_bss_80075B8C)($at) -/* 07A78C 7F045C5C 460A0182 */ mul.s $f6, $f0, $f10 -/* 07A790 7F045C60 C7AA05D0 */ lwc1 $f10, 0x5d0($sp) -/* 07A794 7F045C64 3C048007 */ lui $a0, %hi(objinst) -/* 07A798 7F045C68 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) -/* 07A79C 7F045C6C 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07A7A0 7F045C70 8C845B70 */ lw $a0, %lo(objinst)($a0) -/* 07A7A4 7F045C74 46083102 */ mul.s $f4, $f6, $f8 -/* 07A7A8 7F045C78 46045181 */ sub.s $f6, $f10, $f4 -/* 07A7AC 7F045C7C 0FC1B3A4 */ jal getjointsize -/* 07A7B0 7F045C80 E7A605D0 */ swc1 $f6, 0x5d0($sp) -/* 07A7B4 7F045C84 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07A7B8 7F045C88 44814000 */ mtc1 $at, $f8 -/* 07A7BC 7F045C8C 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B90) -/* 07A7C0 7F045C90 C4245B90 */ lwc1 $f4, %lo(flt_CODE_bss_80075B90)($at) -/* 07A7C4 7F045C94 46080282 */ mul.s $f10, $f0, $f8 -/* 07A7C8 7F045C98 C7A805D4 */ lwc1 $f8, 0x5d4($sp) -/* 07A7CC 7F045C9C 02402025 */ move $a0, $s2 -/* 07A7D0 7F045CA0 27A5058C */ addiu $a1, $sp, 0x58c -/* 07A7D4 7F045CA4 46045182 */ mul.s $f6, $f10, $f4 -/* 07A7D8 7F045CA8 46064281 */ sub.s $f10, $f8, $f6 -/* 07A7DC 7F045CAC 0FC16799 */ jal sub_GAME_7F059E64 -/* 07A7E0 7F045CB0 E7AA05D4 */ swc1 $f10, 0x5d4($sp) -/* 07A7E4 7F045CB4 27A4058C */ addiu $a0, $sp, 0x58c -/* 07A7E8 7F045CB8 0FC1611D */ jal sub_GAME_7F058474 -/* 07A7EC 7F045CBC 27A505CC */ addiu $a1, $sp, 0x5cc -/* 07A7F0 7F045CC0 3C048007 */ lui $a0, %hi(objinst) -/* 07A7F4 7F045CC4 3C058003 */ lui $a1, %hi(bodypartshot) -/* 07A7F8 7F045CC8 3C068007 */ lui $a2, %hi(dword_CODE_bss_80075B74) -/* 07A7FC 7F045CCC 8CC65B74 */ lw $a2, %lo(dword_CODE_bss_80075B74)($a2) -/* 07A800 7F045CD0 8CA50B10 */ lw $a1, %lo(bodypartshot)($a1) -/* 07A804 7F045CD4 8C845B70 */ lw $a0, %lo(objinst)($a0) -/* 07A808 7F045CD8 0FC08877 */ jal sub_GAME_7F0221DC -/* 07A80C 7F045CDC 27A705CC */ addiu $a3, $sp, 0x5cc -/* 07A810 7F045CE0 10000021 */ b .L7F045D68 -/* 07A814 7F045CE4 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A818 7F045CE8 24010056 */ li $at, 86 -.L7F045CEC: -/* 07A81C 7F045CEC 5441001E */ bnel $v0, $at, .L7F045D68 -/* 07A820 7F045CF0 8FAC0604 */ lw $t4, 0x604($sp) -/* 07A824 7F045CF4 92420000 */ lbu $v0, ($s2) -/* 07A828 7F045CF8 240B0001 */ li $t3, 1 -/* 07A82C 7F045CFC 24010003 */ li $at, 3 -/* 07A830 7F045D00 14410008 */ bne $v0, $at, .L7F045D24 -/* 07A834 7F045D04 AFAB0604 */ sw $t3, 0x604($sp) -/* 07A838 7F045D08 8E440004 */ lw $a0, 4($s2) -/* 07A83C 7F045D0C 26250058 */ addiu $a1, $s1, 0x58 -/* 07A840 7F045D10 3C064000 */ lui $a2, 0x4000 -/* 07A844 7F045D14 0FC09E01 */ jal sub_GAME_7F027804 -/* 07A848 7F045D18 24070001 */ li $a3, 1 -/* 07A84C 7F045D1C 10000011 */ b .L7F045D64 -/* 07A850 7F045D20 A6200082 */ sh $zero, 0x82($s1) -.L7F045D24: -/* 07A854 7F045D24 24010001 */ li $at, 1 -/* 07A858 7F045D28 10410004 */ beq $v0, $at, .L7F045D3C -/* 07A85C 7F045D2C 3C0542C8 */ lui $a1, 0x42c8 -/* 07A860 7F045D30 24010004 */ li $at, 4 -/* 07A864 7F045D34 5441000B */ bnel $v0, $at, .L7F045D64 -/* 07A868 7F045D38 A6200082 */ sh $zero, 0x82($s1) -.L7F045D3C: -/* 07A86C 7F045D3C 8E220064 */ lw $v0, 0x64($s1) -/* 07A870 7F045D40 3C010006 */ lui $at, 6 -/* 07A874 7F045D44 8E440004 */ lw $a0, 4($s2) -/* 07A878 7F045D48 0041C824 */ and $t9, $v0, $at -/* 07A87C 7F045D4C 00195442 */ srl $t2, $t9, 0x11 -/* 07A880 7F045D50 AFAA0010 */ sw $t2, 0x10($sp) -/* 07A884 7F045D54 26260058 */ addiu $a2, $s1, 0x58 -/* 07A888 7F045D58 0FC13842 */ jal maybe_detonate_object -/* 07A88C 7F045D5C 24070056 */ li $a3, 86 -/* 07A890 7F045D60 A6200082 */ sh $zero, 0x82($s1) -.L7F045D64: -/* 07A894 7F045D64 8FAC0604 */ lw $t4, 0x604($sp) -.L7F045D68: -/* 07A898 7F045D68 5580010B */ bnezl $t4, .L7F046198 -/* 07A89C 7F045D6C 8E2A0064 */ lw $t2, 0x64($s1) -/* 07A8A0 7F045D70 8FAE0664 */ lw $t6, 0x664($sp) -/* 07A8A4 7F045D74 55C00031 */ bnezl $t6, .L7F045E3C -/* 07A8A8 7F045D78 8E0F0000 */ lw $t7, ($s0) -/* 07A8AC 7F045D7C C610008C */ lwc1 $f16, 0x8c($s0) -/* 07A8B0 7F045D80 C7A40620 */ lwc1 $f4, 0x620($sp) -/* 07A8B4 7F045D84 4610B03C */ c.lt.s $f22, $f16 -/* 07A8B8 7F045D88 00000000 */ nop -/* 07A8BC 7F045D8C 4502002B */ bc1fl .L7F045E3C -/* 07A8C0 7F045D90 8E0F0000 */ lw $t7, ($s0) -/* 07A8C4 7F045D94 C6020004 */ lwc1 $f2, 4($s0) -/* 07A8C8 7F045D98 C60C0008 */ lwc1 $f12, 8($s0) -/* 07A8CC 7F045D9C C7A60624 */ lwc1 $f6, 0x624($sp) -/* 07A8D0 7F045DA0 46041202 */ mul.s $f8, $f2, $f4 -/* 07A8D4 7F045DA4 C600000C */ lwc1 $f0, 0xc($s0) -/* 07A8D8 7F045DA8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07A8DC 7F045DAC 46066282 */ mul.s $f10, $f12, $f6 -/* 07A8E0 7F045DB0 4616603E */ c.le.s $f12, $f22 -/* 07A8E4 7F045DB4 460A4180 */ add.s $f6, $f8, $f10 -/* 07A8E8 7F045DB8 C7A80628 */ lwc1 $f8, 0x628($sp) -/* 07A8EC 7F045DBC 46004282 */ mul.s $f10, $f8, $f0 -/* 07A8F0 7F045DC0 44814000 */ mtc1 $at, $f8 -/* 07A8F4 7F045DC4 46065380 */ add.s $f14, $f10, $f6 -/* 07A8F8 7F045DC8 46088280 */ add.s $f10, $f16, $f8 -/* 07A8FC 7F045DCC 46005187 */ neg.s $f6, $f10 -/* 07A900 7F045DD0 46067382 */ mul.s $f14, $f14, $f6 -/* 07A904 7F045DD4 00000000 */ nop -/* 07A908 7F045DD8 46047202 */ mul.s $f8, $f14, $f4 -/* 07A90C 7F045DDC 46081280 */ add.s $f10, $f2, $f8 -/* 07A910 7F045DE0 E60A0004 */ swc1 $f10, 4($s0) -/* 07A914 7F045DE4 C7A60624 */ lwc1 $f6, 0x624($sp) -/* 07A918 7F045DE8 46067102 */ mul.s $f4, $f14, $f6 -/* 07A91C 7F045DEC 46046200 */ add.s $f8, $f12, $f4 -/* 07A920 7F045DF0 E6080008 */ swc1 $f8, 8($s0) -/* 07A924 7F045DF4 C7AA0628 */ lwc1 $f10, 0x628($sp) -/* 07A928 7F045DF8 460A7182 */ mul.s $f6, $f14, $f10 -/* 07A92C 7F045DFC 46060100 */ add.s $f4, $f0, $f6 -/* 07A930 7F045E00 4500000D */ bc1f .L7F045E38 -/* 07A934 7F045E04 E604000C */ swc1 $f4, 0xc($s0) -/* 07A938 7F045E08 C6080008 */ lwc1 $f8, 8($s0) -/* 07A93C 7F045E0C 240D0001 */ li $t5, 1 -/* 07A940 7F045E10 4608B03E */ c.le.s $f22, $f8 -/* 07A944 7F045E14 00000000 */ nop -/* 07A948 7F045E18 45030007 */ bc1tl .L7F045E38 -/* 07A94C 7F045E1C AFAD060C */ sw $t5, 0x60c($sp) -/* 07A950 7F045E20 C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07A954 7F045E24 460AA03E */ c.le.s $f20, $f10 -/* 07A958 7F045E28 00000000 */ nop -/* 07A95C 7F045E2C 45020003 */ bc1fl .L7F045E3C -/* 07A960 7F045E30 8E0F0000 */ lw $t7, ($s0) -/* 07A964 7F045E34 AFAD060C */ sw $t5, 0x60c($sp) -.L7F045E38: -/* 07A968 7F045E38 8E0F0000 */ lw $t7, ($s0) -.L7F045E3C: -/* 07A96C 7F045E3C C7B4063C */ lwc1 $f20, 0x63c($sp) -/* 07A970 7F045E40 31F80008 */ andi $t8, $t7, 8 -/* 07A974 7F045E44 17000014 */ bnez $t8, .L7F045E98 -/* 07A978 7F045E48 00000000 */ nop -/* 07A97C 7F045E4C 8E640014 */ lw $a0, 0x14($s3) -/* 07A980 7F045E50 8E650008 */ lw $a1, 8($s3) -/* 07A984 7F045E54 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 07A988 7F045E58 8E660010 */ lw $a2, 0x10($s3) -/* 07A98C 7F045E5C 46000506 */ mov.s $f20, $f0 -/* 07A990 7F045E60 8FA40640 */ lw $a0, 0x640($sp) -/* 07A994 7F045E64 0FC0FA6F */ jal sub_GAME_7F03E9BC -/* 07A998 7F045E68 8FA50070 */ lw $a1, 0x70($sp) -/* 07A99C 7F045E6C 4600A101 */ sub.s $f4, $f20, $f0 -/* 07A9A0 7F045E70 E7A00638 */ swc1 $f0, 0x638($sp) -/* 07A9A4 7F045E74 C666000C */ lwc1 $f6, 0xc($s3) -/* 07A9A8 7F045E78 00004025 */ move $t0, $zero -/* 07A9AC 7F045E7C 4604303C */ c.lt.s $f6, $f4 -/* 07A9B0 7F045E80 00000000 */ nop -/* 07A9B4 7F045E84 45000002 */ bc1f .L7F045E90 -/* 07A9B8 7F045E88 00000000 */ nop -/* 07A9BC 7F045E8C 24080001 */ li $t0, 1 -.L7F045E90: -/* 07A9C0 7F045E90 10000001 */ b .L7F045E98 -/* 07A9C4 7F045E94 AFA80610 */ sw $t0, 0x610($sp) -.L7F045E98: -/* 07A9C8 7F045E98 8FA90610 */ lw $t1, 0x610($sp) -/* 07A9CC 7F045E9C 8FAB0664 */ lw $t3, 0x664($sp) -/* 07A9D0 7F045EA0 55200004 */ bnezl $t1, .L7F045EB4 -/* 07A9D4 7F045EA4 8E190000 */ lw $t9, ($s0) -/* 07A9D8 7F045EA8 5560000B */ bnezl $t3, .L7F045ED8 -/* 07A9DC 7F045EAC 8FAD0610 */ lw $t5, 0x610($sp) -/* 07A9E0 7F045EB0 8E190000 */ lw $t9, ($s0) -.L7F045EB4: -/* 07A9E4 7F045EB4 332A0200 */ andi $t2, $t9, 0x200 -/* 07A9E8 7F045EB8 55400004 */ bnezl $t2, .L7F045ECC -/* 07A9EC 7F045EBC 8E0C0090 */ lw $t4, 0x90($s0) -/* 07A9F0 7F045EC0 0FC15EB0 */ jal sub_GAME_7F057AC0 -/* 07A9F4 7F045EC4 8FA4006C */ lw $a0, 0x6c($sp) -/* 07A9F8 7F045EC8 8E0C0090 */ lw $t4, 0x90($s0) -.L7F045ECC: -/* 07A9FC 7F045ECC 258E0001 */ addiu $t6, $t4, 1 -/* 07AA00 7F045ED0 AE0E0090 */ sw $t6, 0x90($s0) -/* 07AA04 7F045ED4 8FAD0610 */ lw $t5, 0x610($sp) -.L7F045ED8: -/* 07AA08 7F045ED8 8FAF060C */ lw $t7, 0x60c($sp) -/* 07AA0C 7F045EDC 8FB80610 */ lw $t8, 0x610($sp) -/* 07AA10 7F045EE0 15A00003 */ bnez $t5, .L7F045EF0 -/* 07AA14 7F045EE4 00000000 */ nop -/* 07AA18 7F045EE8 51E0003A */ beql $t7, $zero, .L7F045FD4 -/* 07AA1C 7F045EEC 922C0003 */ lbu $t4, 3($s1) -.L7F045EF0: -/* 07AA20 7F045EF0 13000009 */ beqz $t8, .L7F045F18 -/* 07AA24 7F045EF4 C7A40618 */ lwc1 $f4, 0x618($sp) -/* 07AA28 7F045EF8 C7A80638 */ lwc1 $f8, 0x638($sp) -/* 07AA2C 7F045EFC 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07AA30 7F045F00 44813000 */ mtc1 $at, $f6 -/* 07AA34 7F045F04 4608A281 */ sub.s $f10, $f20, $f8 -/* 07AA38 7F045F08 46065000 */ add.s $f0, $f10, $f6 -/* 07AA3C 7F045F0C E660000C */ swc1 $f0, 0xc($s3) -/* 07AA40 7F045F10 10000008 */ b .L7F045F34 -/* 07AA44 7F045F14 E620005C */ swc1 $f0, 0x5c($s1) -.L7F045F18: -/* 07AA48 7F045F18 C7A80638 */ lwc1 $f8, 0x638($sp) -/* 07AA4C 7F045F1C 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07AA50 7F045F20 44813000 */ mtc1 $at, $f6 -/* 07AA54 7F045F24 46082281 */ sub.s $f10, $f4, $f8 -/* 07AA58 7F045F28 46065080 */ add.s $f2, $f10, $f6 -/* 07AA5C 7F045F2C E662000C */ swc1 $f2, 0xc($s3) -/* 07AA60 7F045F30 E622005C */ swc1 $f2, 0x5c($s1) -.L7F045F34: -/* 07AA64 7F045F34 8E230064 */ lw $v1, 0x64($s1) -/* 07AA68 7F045F38 02202025 */ move $a0, $s1 -/* 07AA6C 7F045F3C 000343C0 */ sll $t0, $v1, 0xf -/* 07AA70 7F045F40 05000002 */ bltz $t0, .L7F045F4C -/* 07AA74 7F045F44 34690100 */ ori $t1, $v1, 0x100 -/* 07AA78 7F045F48 AE290064 */ sw $t1, 0x64($s1) -.L7F045F4C: -/* 07AA7C 7F045F4C C610008C */ lwc1 $f16, 0x8c($s0) -/* 07AA80 7F045F50 4610B03C */ c.lt.s $f22, $f16 -/* 07AA84 7F045F54 00000000 */ nop -/* 07AA88 7F045F58 4500001B */ bc1f .L7F045FC8 -/* 07AA8C 7F045F5C 00000000 */ nop -/* 07AA90 7F045F60 C6040008 */ lwc1 $f4, 8($s0) -/* 07AA94 7F045F64 46008207 */ neg.s $f8, $f16 -/* 07AA98 7F045F68 3C018005 */ lui $at, %hi(D_80052AA8) -/* 07AA9C 7F045F6C 46082282 */ mul.s $f10, $f4, $f8 -/* 07AAA0 7F045F70 C4202AA8 */ lwc1 $f0, %lo(D_80052AA8)($at) -/* 07AAA4 7F045F74 E60A0008 */ swc1 $f10, 8($s0) -/* 07AAA8 7F045F78 C6060008 */ lwc1 $f6, 8($s0) -/* 07AAAC 7F045F7C 4600303C */ c.lt.s $f6, $f0 -/* 07AAB0 7F045F80 00000000 */ nop -/* 07AAB4 7F045F84 45020013 */ bc1fl .L7F045FD4 -/* 07AAB8 7F045F88 922C0003 */ lbu $t4, 3($s1) -/* 07AABC 7F045F8C 8E0B0000 */ lw $t3, ($s0) -/* 07AAC0 7F045F90 02202025 */ move $a0, $s1 -/* 07AAC4 7F045F94 31790002 */ andi $t9, $t3, 2 -/* 07AAC8 7F045F98 13200007 */ beqz $t9, .L7F045FB8 -/* 07AACC 7F045F9C 00000000 */ nop -/* 07AAD0 7F045FA0 8E0A0090 */ lw $t2, 0x90($s0) -/* 07AAD4 7F045FA4 24010001 */ li $at, 1 -/* 07AAD8 7F045FA8 15410003 */ bne $t2, $at, .L7F045FB8 -/* 07AADC 7F045FAC 00000000 */ nop -/* 07AAE0 7F045FB0 10000007 */ b .L7F045FD0 -/* 07AAE4 7F045FB4 E6000008 */ swc1 $f0, 8($s0) -.L7F045FB8: -/* 07AAE8 7F045FB8 0FC10C79 */ jal sub_GAME_7F0431E4 -/* 07AAEC 7F045FBC 27A5062C */ addiu $a1, $sp, 0x62c -/* 07AAF0 7F045FC0 10000004 */ b .L7F045FD4 -/* 07AAF4 7F045FC4 922C0003 */ lbu $t4, 3($s1) -.L7F045FC8: -/* 07AAF8 7F045FC8 0FC10C79 */ jal sub_GAME_7F0431E4 -/* 07AAFC 7F045FCC 27A5062C */ addiu $a1, $sp, 0x62c -.L7F045FD0: -/* 07AB00 7F045FD0 922C0003 */ lbu $t4, 3($s1) -.L7F045FD4: -/* 07AB04 7F045FD4 24010008 */ li $at, 8 -/* 07AB08 7F045FD8 5581006F */ bnel $t4, $at, .L7F046198 -/* 07AB0C 7F045FDC 8E2A0064 */ lw $t2, 0x64($s1) -/* 07AB10 7F045FE0 82220080 */ lb $v0, 0x80($s1) -/* 07AB14 7F045FE4 24010003 */ li $at, 3 -/* 07AB18 7F045FE8 54410006 */ bnel $v0, $at, .L7F046004 -/* 07AB1C 7F045FEC 24010056 */ li $at, 86 -/* 07AB20 7F045FF0 0FC10D94 */ jal sub_GAME_7F043650 -/* 07AB24 7F045FF4 02202025 */ move $a0, $s1 -/* 07AB28 7F045FF8 10000042 */ b .L7F046104 -/* 07AB2C 7F045FFC 8FB80664 */ lw $t8, 0x664($sp) -/* 07AB30 7F046000 24010056 */ li $at, 86 -.L7F046004: -/* 07AB34 7F046004 1441002D */ bne $v0, $at, .L7F0460BC -/* 07AB38 7F046008 8FAE0664 */ lw $t6, 0x664($sp) -/* 07AB3C 7F04600C 11C00003 */ beqz $t6, .L7F04601C -/* 07AB40 7F046010 8FAD0610 */ lw $t5, 0x610($sp) -/* 07AB44 7F046014 51A00004 */ beql $t5, $zero, .L7F046028 -/* 07AB48 7F046018 C6020004 */ lwc1 $f2, 4($s0) -.L7F04601C: -/* 07AB4C 7F04601C 10000038 */ b .L7F046100 -/* 07AB50 7F046020 A6200082 */ sh $zero, 0x82($s1) -/* 07AB54 7F046024 C6020004 */ lwc1 $f2, 4($s0) -.L7F046028: -/* 07AB58 7F046028 C60C0008 */ lwc1 $f12, 8($s0) -/* 07AB5C 7F04602C C600000C */ lwc1 $f0, 0xc($s0) -/* 07AB60 7F046030 46021102 */ mul.s $f4, $f2, $f2 -/* 07AB64 7F046034 3C018005 */ lui $at, %hi(D_80052AAC) -/* 07AB68 7F046038 26240058 */ addiu $a0, $s1, 0x58 -/* 07AB6C 7F04603C 460C6202 */ mul.s $f8, $f12, $f12 -/* 07AB70 7F046040 24060008 */ li $a2, 8 -/* 07AB74 7F046044 46000182 */ mul.s $f6, $f0, $f0 -/* 07AB78 7F046048 46082280 */ add.s $f10, $f4, $f8 -/* 07AB7C 7F04604C C4242AAC */ lwc1 $f4, %lo(D_80052AAC)($at) -/* 07AB80 7F046050 460A3380 */ add.s $f14, $f6, $f10 -/* 07AB84 7F046054 460E203C */ c.lt.s $f4, $f14 -/* 07AB88 7F046058 00000000 */ nop -/* 07AB8C 7F04605C 45020005 */ bc1fl .L7F046074 -/* 07AB90 7F046060 8E0F00A8 */ lw $t7, 0xa8($s0) -/* 07AB94 7F046064 E6160010 */ swc1 $f22, 0x10($s0) -/* 07AB98 7F046068 E6160014 */ swc1 $f22, 0x14($s0) -/* 07AB9C 7F04606C E6160018 */ swc1 $f22, 0x18($s0) -/* 07ABA0 7F046070 8E0F00A8 */ lw $t7, 0xa8($s0) -.L7F046074: -/* 07ABA4 7F046074 29E1012D */ slti $at, $t7, 0x12d -/* 07ABA8 7F046078 54200008 */ bnezl $at, .L7F04609C -/* 07ABAC 7F04607C 92690001 */ lbu $t1, 1($s3) -/* 07ABB0 7F046080 8E180000 */ lw $t8, ($s0) -/* 07ABB4 7F046084 2401FFCF */ li $at, -49 -/* 07ABB8 7F046088 E616001C */ swc1 $f22, 0x1c($s0) -/* 07ABBC 7F04608C 03014024 */ and $t0, $t8, $at -/* 07ABC0 7F046090 1000001B */ b .L7F046100 -/* 07ABC4 7F046094 AE080000 */ sw $t0, ($s0) -/* 07ABC8 7F046098 92690001 */ lbu $t1, 1($s3) -.L7F04609C: -/* 07ABCC 7F04609C 8E650014 */ lw $a1, 0x14($s3) -/* 07ABD0 7F0460A0 2667002C */ addiu $a3, $s3, 0x2c -/* 07ABD4 7F0460A4 312B0008 */ andi $t3, $t1, 8 -/* 07ABD8 7F0460A8 000BC82B */ sltu $t9, $zero, $t3 -/* 07ABDC 7F0460AC 0FC279C0 */ jal sub_GAME_7F09E700 -/* 07ABE0 7F0460B0 AFB90010 */ sw $t9, 0x10($sp) -/* 07ABE4 7F0460B4 10000013 */ b .L7F046104 -/* 07ABE8 7F0460B8 8FB80664 */ lw $t8, 0x664($sp) -.L7F0460BC: -/* 07ABEC 7F0460BC 24010057 */ li $at, 87 -/* 07ABF0 7F0460C0 1441000F */ bne $v0, $at, .L7F046100 -/* 07ABF4 7F0460C4 8FAA0610 */ lw $t2, 0x610($sp) -/* 07ABF8 7F0460C8 15400003 */ bnez $t2, .L7F0460D8 -/* 07ABFC 7F0460CC 8FAC060C */ lw $t4, 0x60c($sp) -/* 07AC00 7F0460D0 11800003 */ beqz $t4, .L7F0460E0 -/* 07AC04 7F0460D4 26240058 */ addiu $a0, $s1, 0x58 -.L7F0460D8: -/* 07AC08 7F0460D8 10000009 */ b .L7F046100 -/* 07AC0C 7F0460DC A6200082 */ sh $zero, 0x82($s1) -.L7F0460E0: -/* 07AC10 7F0460E0 926E0001 */ lbu $t6, 1($s3) -/* 07AC14 7F0460E4 8E650014 */ lw $a1, 0x14($s3) -/* 07AC18 7F0460E8 24060009 */ li $a2, 9 -/* 07AC1C 7F0460EC 31CD0008 */ andi $t5, $t6, 8 -/* 07AC20 7F0460F0 000D782B */ sltu $t7, $zero, $t5 -/* 07AC24 7F0460F4 AFAF0010 */ sw $t7, 0x10($sp) -/* 07AC28 7F0460F8 0FC279C0 */ jal sub_GAME_7F09E700 -/* 07AC2C 7F0460FC 2667002C */ addiu $a3, $s3, 0x2c -.L7F046100: -/* 07AC30 7F046100 8FB80664 */ lw $t8, 0x664($sp) -.L7F046104: -/* 07AC34 7F046104 3C128005 */ lui $s2, %hi(D_80048380) -/* 07AC38 7F046108 26528380 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c80 -/* 07AC3C 7F04610C 13000003 */ beqz $t8, .L7F04611C -/* 07AC40 7F046110 8FA80610 */ lw $t0, 0x610($sp) -/* 07AC44 7F046114 51000020 */ beql $t0, $zero, .L7F046198 -/* 07AC48 7F046118 8E2A0064 */ lw $t2, 0x64($s1) -.L7F04611C: -/* 07AC4C 7F04611C 8E420000 */ lw $v0, ($s2) -/* 07AC50 7F046120 8E0900AC */ lw $t1, 0xac($s0) -/* 07AC54 7F046124 244BFFFE */ addiu $t3, $v0, -2 -/* 07AC58 7F046128 012B082A */ slt $at, $t1, $t3 -/* 07AC5C 7F04612C 50200019 */ beql $at, $zero, .L7F046194 -/* 07AC60 7F046130 AE0200AC */ sw $v0, 0xac($s0) -/* 07AC64 7F046134 82220080 */ lb $v0, 0x80($s1) -/* 07AC68 7F046138 26790008 */ addiu $t9, $s3, 8 -/* 07AC6C 7F04613C 24010003 */ li $at, 3 -/* 07AC70 7F046140 10410004 */ beq $v0, $at, .L7F046154 -/* 07AC74 7F046144 AFB90070 */ sw $t9, 0x70($sp) -/* 07AC78 7F046148 24010002 */ li $at, 2 -/* 07AC7C 7F04614C 14410008 */ bne $v0, $at, .L7F046170 -/* 07AC80 7F046150 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -.L7F046154: -/* 07AC84 7F046154 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07AC88 7F046158 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07AC8C 7F04615C 24050003 */ li $a1, 3 -/* 07AC90 7F046160 0C002382 */ jal play_sfx_a1 -/* 07AC94 7F046164 00003025 */ move $a2, $zero -/* 07AC98 7F046168 10000006 */ b .L7F046184 -/* 07AC9C 7F04616C 00402025 */ move $a0, $v0 -.L7F046170: -/* 07ACA0 7F046170 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07ACA4 7F046174 2405002D */ li $a1, 45 -/* 07ACA8 7F046178 0C002382 */ jal play_sfx_a1 -/* 07ACAC 7F04617C 00003025 */ move $a2, $zero -/* 07ACB0 7F046180 00402025 */ move $a0, $v0 -.L7F046184: -/* 07ACB4 7F046184 0FC14E84 */ jal sub_GAME_7F053A10 -/* 07ACB8 7F046188 8FA50070 */ lw $a1, 0x70($sp) -/* 07ACBC 7F04618C 8E420000 */ lw $v0, ($s2) -/* 07ACC0 7F046190 AE0200AC */ sw $v0, 0xac($s0) -.L7F046194: -/* 07ACC4 7F046194 8E2A0064 */ lw $t2, 0x64($s1) -.L7F046198: -/* 07ACC8 7F046198 3C128005 */ lui $s2, %hi(D_80048380) -/* 07ACCC 7F04619C 26528380 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c80 -/* 07ACD0 7F0461A0 314C0080 */ andi $t4, $t2, 0x80 -/* 07ACD4 7F0461A4 5180011D */ beql $t4, $zero, .L7F04661C -/* 07ACD8 7F0461A8 8FAD0690 */ lw $t5, 0x690($sp) -/* 07ACDC 7F0461AC 8E0E0000 */ lw $t6, ($s0) -/* 07ACE0 7F0461B0 31CD0400 */ andi $t5, $t6, 0x400 -/* 07ACE4 7F0461B4 51A00119 */ beql $t5, $zero, .L7F04661C -/* 07ACE8 7F0461B8 8FAD0690 */ lw $t5, 0x690($sp) -/* 07ACEC 7F0461BC 8E420000 */ lw $v0, ($s2) -/* 07ACF0 7F0461C0 3C0143C8 */ li $at, 0x43C80000 # 400.000000 -/* 07ACF4 7F0461C4 27B00564 */ addiu $s0, $sp, 0x564 -/* 07ACF8 7F0461C8 304F0007 */ andi $t7, $v0, 7 -/* 07ACFC 7F0461CC 15E00112 */ bnez $t7, .L7F046618 -/* 07AD00 7F0461D0 00002025 */ move $a0, $zero -/* 07AD04 7F0461D4 44810000 */ mtc1 $at, $f0 -/* 07AD08 7F0461D8 C6280058 */ lwc1 $f8, 0x58($s1) -/* 07AD0C 7F0461DC 3C0144E1 */ li $at, 0x44E10000 # 1800.000000 -/* 07AD10 7F0461E0 44812000 */ mtc1 $at, $f4 -/* 07AD14 7F0461E4 46004180 */ add.s $f6, $f8, $f0 -/* 07AD18 7F0461E8 3058000F */ andi $t8, $v0, 0xf -/* 07AD1C 7F0461EC E7A60564 */ swc1 $f6, 0x564($sp) -/* 07AD20 7F0461F0 C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07AD24 7F0461F4 46045201 */ sub.s $f8, $f10, $f4 -/* 07AD28 7F0461F8 E7A80568 */ swc1 $f8, 0x568($sp) -/* 07AD2C 7F0461FC C6260060 */ lwc1 $f6, 0x60($s1) -/* 07AD30 7F046200 17000005 */ bnez $t8, .L7F046218 -/* 07AD34 7F046204 E7A6056C */ swc1 $f6, 0x56c($sp) -/* 07AD38 7F046208 C7AA056C */ lwc1 $f10, 0x56c($sp) -/* 07AD3C 7F04620C 46005100 */ add.s $f4, $f10, $f0 -/* 07AD40 7F046210 10000004 */ b .L7F046224 -/* 07AD44 7F046214 E7A4056C */ swc1 $f4, 0x56c($sp) -.L7F046218: -/* 07AD48 7F046218 C7A8056C */ lwc1 $f8, 0x56c($sp) -/* 07AD4C 7F04621C 46004181 */ sub.s $f6, $f8, $f0 -/* 07AD50 7F046220 E7A6056C */ swc1 $f6, 0x56c($sp) -.L7F046224: -/* 07AD54 7F046224 8E220010 */ lw $v0, 0x10($s1) -/* 07AD58 7F046228 02002825 */ move $a1, $s0 -/* 07AD5C 7F04622C 24070014 */ li $a3, 20 -/* 07AD60 7F046230 8C460014 */ lw $a2, 0x14($v0) -/* 07AD64 7F046234 2448002C */ addiu $t0, $v0, 0x2c -/* 07AD68 7F046238 AFA80018 */ sw $t0, 0x18($sp) -/* 07AD6C 7F04623C AFA0001C */ sw $zero, 0x1c($sp) -/* 07AD70 7F046240 AFA00014 */ sw $zero, 0x14($sp) -/* 07AD74 7F046244 0FC27094 */ jal sub_GAME_7F09C250 -/* 07AD78 7F046248 AFA00010 */ sw $zero, 0x10($sp) -/* 07AD7C 7F04624C 8E490000 */ lw $t1, ($s2) -/* 07AD80 7F046250 24010028 */ li $at, 40 -/* 07AD84 7F046254 02002025 */ move $a0, $s0 -/* 07AD88 7F046258 0121001A */ div $zero, $t1, $at -/* 07AD8C 7F04625C 00005810 */ mfhi $t3 -/* 07AD90 7F046260 556000EE */ bnezl $t3, .L7F04661C -/* 07AD94 7F046264 8FAD0690 */ lw $t5, 0x690($sp) -/* 07AD98 7F046268 8E220010 */ lw $v0, 0x10($s1) -/* 07AD9C 7F04626C 24190001 */ li $t9, 1 -/* 07ADA0 7F046270 2406000A */ li $a2, 10 -/* 07ADA4 7F046274 8C450014 */ lw $a1, 0x14($v0) -/* 07ADA8 7F046278 AFB90010 */ sw $t9, 0x10($sp) -/* 07ADAC 7F04627C 0FC279C0 */ jal sub_GAME_7F09E700 -/* 07ADB0 7F046280 2447002C */ addiu $a3, $v0, 0x2c -/* 07ADB4 7F046284 100000E5 */ b .L7F04661C -/* 07ADB8 7F046288 8FAD0690 */ lw $t5, 0x690($sp) -/* 07ADBC 7F04628C C6000060 */ lwc1 $f0, 0x60($s0) -.L7F046290: -/* 07ADC0 7F046290 44815000 */ mtc1 $at, $f10 -/* 07ADC4 7F046294 24120001 */ li $s2, 1 -/* 07ADC8 7F046298 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07ADCC 7F04629C 460A003C */ c.lt.s $f0, $f10 -/* 07ADD0 7F0462A0 26040068 */ addiu $a0, $s0, 0x68 -/* 07ADD4 7F0462A4 26050078 */ addiu $a1, $s0, 0x78 -/* 07ADD8 7F0462A8 45020031 */ bc1fl .L7F046370 -/* 07ADDC 7F0462AC C60A0004 */ lwc1 $f10, 4($s0) -/* 07ADE0 7F0462B0 C6020064 */ lwc1 $f2, 0x64($s0) -/* 07ADE4 7F0462B4 C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07ADE8 7F0462B8 3C0A8005 */ lui $t2, %hi(clock_timer) -/* 07ADEC 7F0462BC 3C018005 */ lui $at, %hi(D_80052AB0) -/* 07ADF0 7F0462C0 46041202 */ mul.s $f8, $f2, $f4 -/* 07ADF4 7F0462C4 27B20550 */ addiu $s2, $sp, 0x550 -/* 07ADF8 7F0462C8 46080180 */ add.s $f6, $f0, $f8 -/* 07ADFC 7F0462CC E6060060 */ swc1 $f6, 0x60($s0) -/* 07AE00 7F0462D0 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) -/* 07AE04 7F0462D4 59400005 */ blezl $t2, .L7F0462EC -/* 07AE08 7F0462D8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AE0C 7F0462DC C42A2AB0 */ lwc1 $f10, %lo(D_80052AB0)($at) -/* 07AE10 7F0462E0 460A1102 */ mul.s $f4, $f2, $f10 -/* 07AE14 7F0462E4 E6040064 */ swc1 $f4, 0x64($s0) -/* 07AE18 7F0462E8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -.L7F0462EC: -/* 07AE1C 7F0462EC 44814000 */ mtc1 $at, $f8 -/* 07AE20 7F0462F0 C6000060 */ lwc1 $f0, 0x60($s0) -/* 07AE24 7F0462F4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AE28 7F0462F8 4600403C */ c.lt.s $f8, $f0 -/* 07AE2C 7F0462FC 00000000 */ nop -/* 07AE30 7F046300 45030006 */ bc1tl .L7F04631C -/* 07AE34 7F046304 44813000 */ mtc1 $at, $f6 -/* 07AE38 7F046308 8E0C0000 */ lw $t4, ($s0) -/* 07AE3C 7F04630C 318E0008 */ andi $t6, $t4, 8 -/* 07AE40 7F046310 51C00006 */ beql $t6, $zero, .L7F04632C -/* 07AE44 7F046314 44060000 */ mfc1 $a2, $f0 -/* 07AE48 7F046318 44813000 */ mtc1 $at, $f6 -.L7F04631C: -/* 07AE4C 7F04631C 00000000 */ nop -/* 07AE50 7F046320 E6060060 */ swc1 $f6, 0x60($s0) -/* 07AE54 7F046324 C6000060 */ lwc1 $f0, 0x60($s0) -/* 07AE58 7F046328 44060000 */ mfc1 $a2, $f0 -.L7F04632C: -/* 07AE5C 7F04632C 0FC16E82 */ jal sub_GAME_7F05BA08 -/* 07AE60 7F046330 02403825 */ move $a3, $s2 -/* 07AE64 7F046334 26250018 */ addiu $a1, $s1, 0x18 -/* 07AE68 7F046338 AFA50070 */ sw $a1, 0x70($sp) -/* 07AE6C 7F04633C 0FC16D8A */ jal sub_GAME_7F05B628 -/* 07AE70 7F046340 02402025 */ move $a0, $s2 -/* 07AE74 7F046344 C60C00C0 */ lwc1 $f12, 0xc0($s0) -/* 07AE78 7F046348 0FC1626D */ jal sub_GAME_7F0589B4 -/* 07AE7C 7F04634C 8FA50070 */ lw $a1, 0x70($sp) -/* 07AE80 7F046350 C60C00C4 */ lwc1 $f12, 0xc4($s0) -/* 07AE84 7F046354 0FC16279 */ jal sub_GAME_7F0589E4 -/* 07AE88 7F046358 8FA50070 */ lw $a1, 0x70($sp) -/* 07AE8C 7F04635C C60C00C8 */ lwc1 $f12, 0xc8($s0) -/* 07AE90 7F046360 0FC16293 */ jal sub_GAME_7F058A4C -/* 07AE94 7F046364 8FA50070 */ lw $a1, 0x70($sp) -/* 07AE98 7F046368 00009025 */ move $s2, $zero -/* 07AE9C 7F04636C C60A0004 */ lwc1 $f10, 4($s0) -.L7F046370: -/* 07AEA0 7F046370 460AB032 */ c.eq.s $f22, $f10 -/* 07AEA4 7F046374 00000000 */ nop -/* 07AEA8 7F046378 4502000F */ bc1fl .L7F0463B8 -/* 07AEAC 7F04637C 8E0D0000 */ lw $t5, ($s0) -/* 07AEB0 7F046380 C604000C */ lwc1 $f4, 0xc($s0) -/* 07AEB4 7F046384 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AEB8 7F046388 4604B032 */ c.eq.s $f22, $f4 -/* 07AEBC 7F04638C 00000000 */ nop -/* 07AEC0 7F046390 45020009 */ bc1fl .L7F0463B8 -/* 07AEC4 7F046394 8E0D0000 */ lw $t5, ($s0) -/* 07AEC8 7F046398 C6080060 */ lwc1 $f8, 0x60($s0) -/* 07AECC 7F04639C 44813000 */ mtc1 $at, $f6 -/* 07AED0 7F0463A0 00000000 */ nop -/* 07AED4 7F0463A4 4606403C */ c.lt.s $f8, $f6 -/* 07AED8 7F0463A8 00000000 */ nop -/* 07AEDC 7F0463AC 45000088 */ bc1f .L7F0465D0 -/* 07AEE0 7F0463B0 00000000 */ nop -/* 07AEE4 7F0463B4 8E0D0000 */ lw $t5, ($s0) -.L7F0463B8: -/* 07AEE8 7F0463B8 02202025 */ move $a0, $s1 -/* 07AEEC 7F0463BC 26380018 */ addiu $t8, $s1, 0x18 -/* 07AEF0 7F0463C0 31AF0008 */ andi $t7, $t5, 8 -/* 07AEF4 7F0463C4 15E00082 */ bnez $t7, .L7F0465D0 -/* 07AEF8 7F0463C8 00000000 */ nop -/* 07AEFC 7F0463CC AFB80070 */ sw $t8, 0x70($sp) -/* 07AF00 7F0463D0 0FC1001E */ jal sub_GAME_7F040078 -/* 07AF04 7F0463D4 00009025 */ move $s2, $zero -/* 07AF08 7F0463D8 3C038005 */ lui $v1, %hi(clock_timer) -/* 07AF0C 7F0463DC 8C638374 */ lw $v1, %lo(clock_timer)($v1) -/* 07AF10 7F0463E0 AFA2054C */ sw $v0, 0x54c($sp) -/* 07AF14 7F0463E4 00002025 */ move $a0, $zero -/* 07AF18 7F0463E8 18600048 */ blez $v1, .L7F04650C -/* 07AF1C 7F0463EC 3C018005 */ lui $at, %hi(D_80052AB4) -/* 07AF20 7F0463F0 C42E2AB4 */ lwc1 $f14, %lo(D_80052AB4)($at) -/* 07AF24 7F0463F4 C7AA0694 */ lwc1 $f10, 0x694($sp) -.L7F0463F8: -/* 07AF28 7F0463F8 C6040004 */ lwc1 $f4, 4($s0) -/* 07AF2C 7F0463FC C7A6069C */ lwc1 $f6, 0x69c($sp) -/* 07AF30 7F046400 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AF34 7F046404 46045200 */ add.s $f8, $f10, $f4 -/* 07AF38 7F046408 E7A80694 */ swc1 $f8, 0x694($sp) -/* 07AF3C 7F04640C C60A000C */ lwc1 $f10, 0xc($s0) -/* 07AF40 7F046410 460A3100 */ add.s $f4, $f6, $f10 -/* 07AF44 7F046414 44813000 */ mtc1 $at, $f6 -/* 07AF48 7F046418 E7A4069C */ swc1 $f4, 0x69c($sp) -/* 07AF4C 7F04641C C6080060 */ lwc1 $f8, 0x60($s0) -/* 07AF50 7F046420 4608303E */ c.le.s $f6, $f8 -/* 07AF54 7F046424 00000000 */ nop -/* 07AF58 7F046428 45020035 */ bc1fl .L7F046500 -/* 07AF5C 7F04642C 24840001 */ addiu $a0, $a0, 1 -/* 07AF60 7F046430 C60A0094 */ lwc1 $f10, 0x94($s0) -/* 07AF64 7F046434 460AB03C */ c.lt.s $f22, $f10 -/* 07AF68 7F046438 00000000 */ nop -/* 07AF6C 7F04643C 45020027 */ bc1fl .L7F0464DC -/* 07AF70 7F046440 C6060004 */ lwc1 $f6, 4($s0) -/* 07AF74 7F046444 C600000C */ lwc1 $f0, 0xc($s0) -/* 07AF78 7F046448 C6020004 */ lwc1 $f2, 4($s0) -/* 07AF7C 7F04644C AFA40548 */ sw $a0, 0x548($sp) -/* 07AF80 7F046450 46000102 */ mul.s $f4, $f0, $f0 -/* 07AF84 7F046454 00000000 */ nop -/* 07AF88 7F046458 46021202 */ mul.s $f8, $f2, $f2 -/* 07AF8C 7F04645C 0C007DF8 */ jal sqrtf -/* 07AF90 7F046460 46082300 */ add.s $f12, $f4, $f8 -/* 07AF94 7F046464 3C018005 */ lui $at, %hi(D_80052AB8) -/* 07AF98 7F046468 C42E2AB8 */ lwc1 $f14, %lo(D_80052AB8)($at) -/* 07AF9C 7F04646C 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07AFA0 7F046470 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07AFA4 7F046474 C6060094 */ lwc1 $f6, 0x94($s0) -/* 07AFA8 7F046478 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AFAC 7F04647C 44814000 */ mtc1 $at, $f8 -/* 07AFB0 7F046480 460A3102 */ mul.s $f4, $f6, $f10 -/* 07AFB4 7F046484 8FA40548 */ lw $a0, 0x548($sp) -/* 07AFB8 7F046488 3C038005 */ lui $v1, %hi(clock_timer) -/* 07AFBC 7F04648C 46002303 */ div.s $f12, $f4, $f0 -/* 07AFC0 7F046490 460C403E */ c.le.s $f8, $f12 -/* 07AFC4 7F046494 00000000 */ nop -/* 07AFC8 7F046498 45020005 */ bc1fl .L7F0464B0 -/* 07AFCC 7F04649C C6020004 */ lwc1 $f2, 4($s0) -/* 07AFD0 7F0464A0 E6160004 */ swc1 $f22, 4($s0) -/* 07AFD4 7F0464A4 1000000A */ b .L7F0464D0 -/* 07AFD8 7F0464A8 E616000C */ swc1 $f22, 0xc($s0) -/* 07AFDC 7F0464AC C6020004 */ lwc1 $f2, 4($s0) -.L7F0464B0: -/* 07AFE0 7F0464B0 C600000C */ lwc1 $f0, 0xc($s0) -/* 07AFE4 7F0464B4 460C1182 */ mul.s $f6, $f2, $f12 -/* 07AFE8 7F0464B8 00000000 */ nop -/* 07AFEC 7F0464BC 460C0102 */ mul.s $f4, $f0, $f12 -/* 07AFF0 7F0464C0 46061281 */ sub.s $f10, $f2, $f6 -/* 07AFF4 7F0464C4 46040201 */ sub.s $f8, $f0, $f4 -/* 07AFF8 7F0464C8 E60A0004 */ swc1 $f10, 4($s0) -/* 07AFFC 7F0464CC E608000C */ swc1 $f8, 0xc($s0) -.L7F0464D0: -/* 07B000 7F0464D0 1000000A */ b .L7F0464FC -/* 07B004 7F0464D4 8C638374 */ lw $v1, %lo(clock_timer)($v1) -/* 07B008 7F0464D8 C6060004 */ lwc1 $f6, 4($s0) -.L7F0464DC: -/* 07B00C 7F0464DC C604000C */ lwc1 $f4, 0xc($s0) -/* 07B010 7F0464E0 3C038005 */ lui $v1, %hi(clock_timer) -/* 07B014 7F0464E4 460E3282 */ mul.s $f10, $f6, $f14 -/* 07B018 7F0464E8 00000000 */ nop -/* 07B01C 7F0464EC 460E2202 */ mul.s $f8, $f4, $f14 -/* 07B020 7F0464F0 E60A0004 */ swc1 $f10, 4($s0) -/* 07B024 7F0464F4 E608000C */ swc1 $f8, 0xc($s0) -/* 07B028 7F0464F8 8C638374 */ lw $v1, %lo(clock_timer)($v1) -.L7F0464FC: -/* 07B02C 7F0464FC 24840001 */ addiu $a0, $a0, 1 -.L7F046500: -/* 07B030 7F046500 0083082A */ slt $at, $a0, $v1 -/* 07B034 7F046504 5420FFBC */ bnezl $at, .L7F0463F8 -/* 07B038 7F046508 C7AA0694 */ lwc1 $f10, 0x694($sp) -.L7F04650C: -/* 07B03C 7F04650C 02202025 */ move $a0, $s1 -/* 07B040 7F046510 27A50694 */ addiu $a1, $sp, 0x694 -/* 07B044 7F046514 27A60530 */ addiu $a2, $sp, 0x530 -/* 07B048 7F046518 27A7053C */ addiu $a3, $sp, 0x53c -/* 07B04C 7F04651C AFA00010 */ sw $zero, 0x10($sp) -/* 07B050 7F046520 0FC10BAD */ jal sub_GAME_7F042EB4 -/* 07B054 7F046524 AFA00014 */ sw $zero, 0x14($sp) -/* 07B058 7F046528 24080001 */ li $t0, 1 -/* 07B05C 7F04652C AFA80690 */ sw $t0, 0x690($sp) -/* 07B060 7F046530 8E660010 */ lw $a2, 0x10($s3) -/* 07B064 7F046534 8E650008 */ lw $a1, 8($s3) -/* 07B068 7F046538 0FC2CA5C */ jal sub_GAME_7F0B2970 -/* 07B06C 7F04653C 8E640014 */ lw $a0, 0x14($s3) -/* 07B070 7F046540 46000506 */ mov.s $f20, $f0 -/* 07B074 7F046544 8FA4054C */ lw $a0, 0x54c($sp) -/* 07B078 7F046548 0FC0FA6F */ jal sub_GAME_7F03E9BC -/* 07B07C 7F04654C 8FA50070 */ lw $a1, 0x70($sp) -/* 07B080 7F046550 3C018005 */ lui $at, %hi(D_80052ABC) -/* 07B084 7F046554 C42E2ABC */ lwc1 $f14, %lo(D_80052ABC)($at) -/* 07B088 7F046558 4600A181 */ sub.s $f6, $f20, $f0 -/* 07B08C 7F04655C 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07B090 7F046560 44815000 */ mtc1 $at, $f10 -/* 07B094 7F046564 3C018005 */ lui $at, %hi(D_80052AC0) -/* 07B098 7F046568 460A3300 */ add.s $f12, $f6, $f10 -/* 07B09C 7F04656C E66C000C */ swc1 $f12, 0xc($s3) -/* 07B0A0 7F046570 E62C005C */ swc1 $f12, 0x5c($s1) -/* 07B0A4 7F046574 C6020004 */ lwc1 $f2, 4($s0) -/* 07B0A8 7F046578 460E103C */ c.lt.s $f2, $f14 -/* 07B0AC 7F04657C 00000000 */ nop -/* 07B0B0 7F046580 45000013 */ bc1f .L7F0465D0 -/* 07B0B4 7F046584 00000000 */ nop -/* 07B0B8 7F046588 C4242AC0 */ lwc1 $f4, %lo(D_80052AC0)($at) -/* 07B0BC 7F04658C 4602203C */ c.lt.s $f4, $f2 -/* 07B0C0 7F046590 00000000 */ nop -/* 07B0C4 7F046594 4500000E */ bc1f .L7F0465D0 -/* 07B0C8 7F046598 00000000 */ nop -/* 07B0CC 7F04659C C600000C */ lwc1 $f0, 0xc($s0) -/* 07B0D0 7F0465A0 3C018005 */ lui $at, %hi(D_80052AC4) -/* 07B0D4 7F0465A4 460E003C */ c.lt.s $f0, $f14 -/* 07B0D8 7F0465A8 00000000 */ nop -/* 07B0DC 7F0465AC 45000008 */ bc1f .L7F0465D0 -/* 07B0E0 7F0465B0 00000000 */ nop -/* 07B0E4 7F0465B4 C4282AC4 */ lwc1 $f8, %lo(D_80052AC4)($at) -/* 07B0E8 7F0465B8 4600403C */ c.lt.s $f8, $f0 -/* 07B0EC 7F0465BC 00000000 */ nop -/* 07B0F0 7F0465C0 45000003 */ bc1f .L7F0465D0 -/* 07B0F4 7F0465C4 00000000 */ nop -/* 07B0F8 7F0465C8 E616000C */ swc1 $f22, 0xc($s0) -/* 07B0FC 7F0465CC E6160004 */ swc1 $f22, 4($s0) -.L7F0465D0: -/* 07B100 7F0465D0 16400005 */ bnez $s2, .L7F0465E8 -/* 07B104 7F0465D4 00000000 */ nop -/* 07B108 7F0465D8 8E090000 */ lw $t1, ($s0) -/* 07B10C 7F0465DC 312B0008 */ andi $t3, $t1, 8 -/* 07B110 7F0465E0 5160000E */ beql $t3, $zero, .L7F04661C -/* 07B114 7F0465E4 8FAD0690 */ lw $t5, 0x690($sp) -.L7F0465E8: -/* 07B118 7F0465E8 0FC0FEDC */ jal sub_GAME_7F03FB70 -/* 07B11C 7F0465EC 02002025 */ move $a0, $s0 -/* 07B120 7F0465F0 8E390064 */ lw $t9, 0x64($s1) -/* 07B124 7F0465F4 2401FF7F */ li $at, -129 -/* 07B128 7F0465F8 AE20006C */ sw $zero, 0x6c($s1) -/* 07B12C 7F0465FC 03215024 */ and $t2, $t9, $at -/* 07B130 7F046600 AE2A0064 */ sw $t2, 0x64($s1) -/* 07B134 7F046604 92620001 */ lbu $v0, 1($s3) -/* 07B138 7F046608 304C0008 */ andi $t4, $v0, 8 -/* 07B13C 7F04660C 11800002 */ beqz $t4, .L7F046618 -/* 07B140 7F046610 344E0010 */ ori $t6, $v0, 0x10 -/* 07B144 7F046614 A26E0001 */ sb $t6, 1($s3) -.L7F046618: -/* 07B148 7F046618 8FAD0690 */ lw $t5, 0x690($sp) -.L7F04661C: -/* 07B14C 7F04661C 11A0000B */ beqz $t5, .L7F04664C -/* 07B150 7F046620 262F0058 */ addiu $t7, $s1, 0x58 -/* 07B154 7F046624 AFAF0070 */ sw $t7, 0x70($sp) -/* 07B158 7F046628 0FC10121 */ jal sub_GAME_7F040484 -/* 07B15C 7F04662C 02202025 */ move $a0, $s1 -/* 07B160 7F046630 0FC15B28 */ jal sub_GAME_7F056CA0 -/* 07B164 7F046634 02202025 */ move $a0, $s1 -/* 07B168 7F046638 8E240010 */ lw $a0, 0x10($s1) -/* 07B16C 7F04663C 0FC100AD */ jal sub_GAME_7F0402B4 -/* 07B170 7F046640 2625007C */ addiu $a1, $s1, 0x7c -/* 07B174 7F046644 0FC146F3 */ jal detonate_proxmine_In_range -/* 07B178 7F046648 8FA40070 */ lw $a0, 0x70($sp) -.L7F04664C: -/* 07B17C 7F04664C 92220003 */ lbu $v0, 3($s1) -/* 07B180 7F046650 24010001 */ li $at, 1 -/* 07B184 7F046654 54410052 */ bnel $v0, $at, .L7F0467A0 -/* 07B188 7F046658 24010006 */ li $at, 6 -/* 07B18C 7F04665C 8E700004 */ lw $s0, 4($s3) -/* 07B190 7F046660 3C188005 */ lui $t8, %hi(global_timer) -/* 07B194 7F046664 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07B198 7F046668 E7A6067C */ swc1 $f6, 0x67c($sp) -/* 07B19C 7F04666C 8E0200EC */ lw $v0, 0xec($s0) -/* 07B1A0 7F046670 58400012 */ blezl $v0, .L7F0466BC -/* 07B1A4 7F046674 820C00BC */ lb $t4, 0xbc($s0) -/* 07B1A8 7F046678 8F18837C */ lw $t8, %lo(global_timer)($t8) -/* 07B1AC 7F04667C 8E0800A0 */ lw $t0, 0xa0($s0) -/* 07B1B0 7F046680 03084823 */ subu $t1, $t8, $t0 -/* 07B1B4 7F046684 0049082A */ slt $at, $v0, $t1 -/* 07B1B8 7F046688 5020000C */ beql $at, $zero, .L7F0466BC -/* 07B1BC 7F04668C 820C00BC */ lb $t4, 0xbc($s0) -/* 07B1C0 7F046690 820B00BC */ lb $t3, 0xbc($s0) -/* 07B1C4 7F046694 55600009 */ bnezl $t3, .L7F0466BC -/* 07B1C8 7F046698 820C00BC */ lb $t4, 0xbc($s0) -/* 07B1CC 7F04669C 8E190008 */ lw $t9, 8($s0) -/* 07B1D0 7F0466A0 02002025 */ move $a0, $s0 -/* 07B1D4 7F0466A4 00195000 */ sll $t2, $t9, 0 -/* 07B1D8 7F0466A8 05420004 */ bltzl $t2, .L7F0466BC -/* 07B1DC 7F0466AC 820C00BC */ lb $t4, 0xbc($s0) -/* 07B1E0 7F0466B0 0FC15262 */ jal set_door_state -/* 07B1E4 7F0466B4 24050002 */ li $a1, 2 -/* 07B1E8 7F0466B8 820C00BC */ lb $t4, 0xbc($s0) -.L7F0466BC: -/* 07B1EC 7F0466BC 24010003 */ li $at, 3 -/* 07B1F0 7F0466C0 5581001B */ bnel $t4, $at, .L7F046730 -/* 07B1F4 7F0466C4 960D009A */ lhu $t5, 0x9a($s0) -/* 07B1F8 7F0466C8 8E0200C8 */ lw $v0, 0xc8($s0) -/* 07B1FC 7F0466CC 24030001 */ li $v1, 1 -/* 07B200 7F0466D0 02002025 */ move $a0, $s0 -/* 07B204 7F0466D4 10400011 */ beqz $v0, .L7F04671C -/* 07B208 7F0466D8 00000000 */ nop -/* 07B20C 7F0466DC 1050000F */ beq $v0, $s0, .L7F04671C -/* 07B210 7F0466E0 00000000 */ nop -/* 07B214 7F0466E4 804E00BC */ lb $t6, 0xbc($v0) -.L7F0466E8: -/* 07B218 7F0466E8 55C00007 */ bnezl $t6, .L7F046708 -/* 07B21C 7F0466EC 00001825 */ move $v1, $zero -/* 07B220 7F0466F0 C44A00B4 */ lwc1 $f10, 0xb4($v0) -/* 07B224 7F0466F4 460AB03C */ c.lt.s $f22, $f10 -/* 07B228 7F0466F8 00000000 */ nop -/* 07B22C 7F0466FC 45020003 */ bc1fl .L7F04670C -/* 07B230 7F046700 8C4200C8 */ lw $v0, 0xc8($v0) -/* 07B234 7F046704 00001825 */ move $v1, $zero -.L7F046708: -/* 07B238 7F046708 8C4200C8 */ lw $v0, 0xc8($v0) -.L7F04670C: -/* 07B23C 7F04670C 10400003 */ beqz $v0, .L7F04671C -/* 07B240 7F046710 00000000 */ nop -/* 07B244 7F046714 5450FFF4 */ bnel $v0, $s0, .L7F0466E8 -/* 07B248 7F046718 804E00BC */ lb $t6, 0xbc($v0) -.L7F04671C: -/* 07B24C 7F04671C 50600004 */ beql $v1, $zero, .L7F046730 -/* 07B250 7F046720 960D009A */ lhu $t5, 0x9a($s0) -/* 07B254 7F046724 0FC15229 */ jal sub_GAME_7F0548A4 -/* 07B258 7F046728 24050001 */ li $a1, 1 -/* 07B25C 7F04672C 960D009A */ lhu $t5, 0x9a($s0) -.L7F046730: -/* 07B260 7F046730 24010008 */ li $at, 8 -/* 07B264 7F046734 15A1000B */ bne $t5, $at, .L7F046764 -/* 07B268 7F046738 00000000 */ nop -/* 07B26C 7F04673C 0FC15288 */ jal sub_GAME_7F054A20 -/* 07B270 7F046740 02002025 */ move $a0, $s0 -/* 07B274 7F046744 10400007 */ beqz $v0, .L7F046764 -/* 07B278 7F046748 00000000 */ nop -/* 07B27C 7F04674C 0FC0F9C6 */ jal sub_GAME_7F03E718 -/* 07B280 7F046750 02002025 */ move $a0, $s0 -/* 07B284 7F046754 10400003 */ beqz $v0, .L7F046764 -/* 07B288 7F046758 00000000 */ nop -/* 07B28C 7F04675C 0FC15667 */ jal sub_GAME_7F05599C -/* 07B290 7F046760 02602025 */ move $a0, $s3 -.L7F046764: -/* 07B294 7F046764 3C188005 */ lui $t8, %hi(global_timer) -/* 07B298 7F046768 8F18837C */ lw $t8, %lo(global_timer)($t8) -/* 07B29C 7F04676C 8E0F00FC */ lw $t7, 0xfc($s0) -/* 07B2A0 7F046770 3C088005 */ lui $t0, %hi(clock_timer) -/* 07B2A4 7F046774 01F8082A */ slt $at, $t7, $t8 -/* 07B2A8 7F046778 14200004 */ bnez $at, .L7F04678C -/* 07B2AC 7F04677C 00000000 */ nop -/* 07B2B0 7F046780 8D088374 */ lw $t0, %lo(clock_timer)($t0) -/* 07B2B4 7F046784 550006AA */ bnezl $t0, .L7F048230 -/* 07B2B8 7F046788 92220003 */ lbu $v0, 3($s1) -.L7F04678C: -/* 07B2BC 7F04678C 0FC153ED */ jal sub_GAME_7F054FB4 -/* 07B2C0 7F046790 02002025 */ move $a0, $s0 -/* 07B2C4 7F046794 100006A6 */ b .L7F048230 -/* 07B2C8 7F046798 92220003 */ lbu $v0, 3($s1) -/* 07B2CC 7F04679C 24010006 */ li $at, 6 -.L7F0467A0: -/* 07B2D0 7F0467A0 54410130 */ bnel $v0, $at, .L7F046C64 -/* 07B2D4 7F0467A4 2401000D */ li $at, 13 -/* 07B2D8 7F0467A8 8E290008 */ lw $t1, 8($s1) -/* 07B2DC 7F0467AC 000958C0 */ sll $t3, $t1, 3 -/* 07B2E0 7F0467B0 0562012C */ bltzl $t3, .L7F046C64 -/* 07B2E4 7F0467B4 2401000D */ li $at, 13 -/* 07B2E8 7F0467B8 8E700004 */ lw $s0, 4($s3) -/* 07B2EC 7F0467BC 8E1900D4 */ lw $t9, 0xd4($s0) -/* 07B2F0 7F0467C0 53200004 */ beql $t9, $zero, .L7F0467D4 -/* 07B2F4 7F0467C4 C61200D0 */ lwc1 $f18, 0xd0($s0) -/* 07B2F8 7F0467C8 10000002 */ b .L7F0467D4 -/* 07B2FC 7F0467CC C61200CC */ lwc1 $f18, 0xcc($s0) -/* 07B300 7F0467D0 C61200D0 */ lwc1 $f18, 0xd0($s0) -.L7F0467D4: -/* 07B304 7F0467D4 0FC225E6 */ jal get_curplayer_positiondata -/* 07B308 7F0467D8 E7B20518 */ swc1 $f18, 0x518($sp) -/* 07B30C 7F0467DC AFA20514 */ sw $v0, 0x514($sp) -/* 07B310 7F0467E0 C6280058 */ lwc1 $f8, 0x58($s1) -/* 07B314 7F0467E4 C4440008 */ lwc1 $f4, 8($v0) -/* 07B318 7F0467E8 C60000E8 */ lwc1 $f0, 0xe8($s0) -/* 07B31C 7F0467EC C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07B320 7F0467F0 46082301 */ sub.s $f12, $f4, $f8 -/* 07B324 7F0467F4 C446000C */ lwc1 $f6, 0xc($v0) -/* 07B328 7F0467F8 C6280060 */ lwc1 $f8, 0x60($s1) -/* 07B32C 7F0467FC 4600B03C */ c.lt.s $f22, $f0 -/* 07B330 7F046800 C4440010 */ lwc1 $f4, 0x10($v0) -/* 07B334 7F046804 C7B20518 */ lwc1 $f18, 0x518($sp) -/* 07B338 7F046808 24120001 */ li $s2, 1 -/* 07B33C 7F04680C 460A3081 */ sub.s $f2, $f6, $f10 -/* 07B340 7F046810 4500000E */ bc1f .L7F04684C -/* 07B344 7F046814 46082381 */ sub.s $f14, $f4, $f8 -/* 07B348 7F046818 46000182 */ mul.s $f6, $f0, $f0 -/* 07B34C 7F04681C 00000000 */ nop -/* 07B350 7F046820 460C6282 */ mul.s $f10, $f12, $f12 -/* 07B354 7F046824 00000000 */ nop -/* 07B358 7F046828 46021102 */ mul.s $f4, $f2, $f2 -/* 07B35C 7F04682C 46045200 */ add.s $f8, $f10, $f4 -/* 07B360 7F046830 460E7282 */ mul.s $f10, $f14, $f14 -/* 07B364 7F046834 460A4100 */ add.s $f4, $f8, $f10 -/* 07B368 7F046838 4604303C */ c.lt.s $f6, $f4 -/* 07B36C 7F04683C 00000000 */ nop -/* 07B370 7F046840 45000002 */ bc1f .L7F04684C -/* 07B374 7F046844 00000000 */ nop -/* 07B378 7F046848 00009025 */ move $s2, $zero -.L7F04684C: -/* 07B37C 7F04684C 8E2A0008 */ lw $t2, 8($s1) -/* 07B380 7F046850 000A6080 */ sll $t4, $t2, 2 -/* 07B384 7F046854 05810002 */ bgez $t4, .L7F046860 -/* 07B388 7F046858 00000000 */ nop -/* 07B38C 7F04685C 00009025 */ move $s2, $zero -.L7F046860: -/* 07B390 7F046860 1240003A */ beqz $s2, .L7F04694C -/* 07B394 7F046864 00000000 */ nop -/* 07B398 7F046868 0FC16A8C */ jal convert_angle_using_inverse -/* 07B39C 7F04686C E7B20518 */ swc1 $f18, 0x518($sp) -/* 07B3A0 7F046870 C60200C8 */ lwc1 $f2, 0xc8($s0) -/* 07B3A4 7F046874 C7B20518 */ lwc1 $f18, 0x518($sp) -/* 07B3A8 7F046878 3C018005 */ lui $at, %hi(D_80052ACC) -/* 07B3AC 7F04687C 4616103C */ c.lt.s $f2, $f22 -/* 07B3B0 7F046880 00000000 */ nop -/* 07B3B4 7F046884 45000005 */ bc1f .L7F04689C -/* 07B3B8 7F046888 00000000 */ nop -/* 07B3BC 7F04688C 3C018005 */ lui $at, %hi(D_80052AC8) -/* 07B3C0 7F046890 C4342AC8 */ lwc1 $f20, %lo(D_80052AC8)($at) -/* 07B3C4 7F046894 10000007 */ b .L7F0468B4 -/* 07B3C8 7F046898 46141080 */ add.s $f2, $f2, $f20 -.L7F04689C: -/* 07B3CC 7F04689C C4342ACC */ lwc1 $f20, %lo(D_80052ACC)($at) -/* 07B3D0 7F0468A0 4602A03E */ c.le.s $f20, $f2 -/* 07B3D4 7F0468A4 00000000 */ nop -/* 07B3D8 7F0468A8 45020003 */ bc1fl .L7F0468B8 -/* 07B3DC 7F0468AC C60800C4 */ lwc1 $f8, 0xc4($s0) -/* 07B3E0 7F0468B0 46141081 */ sub.s $f2, $f2, $f20 -.L7F0468B4: -/* 07B3E4 7F0468B4 C60800C4 */ lwc1 $f8, 0xc4($s0) -.L7F0468B8: -/* 07B3E8 7F0468B8 3C018005 */ lui $at, %hi(D_80052AD0) -/* 07B3EC 7F0468BC 46081080 */ add.s $f2, $f2, $f8 -/* 07B3F0 7F0468C0 4602A03E */ c.le.s $f20, $f2 -/* 07B3F4 7F0468C4 00000000 */ nop -/* 07B3F8 7F0468C8 45020003 */ bc1fl .L7F0468D8 -/* 07B3FC 7F0468CC 4602003C */ c.lt.s $f0, $f2 -/* 07B400 7F0468D0 46141081 */ sub.s $f2, $f2, $f20 -/* 07B404 7F0468D4 4602003C */ c.lt.s $f0, $f2 -.L7F0468D8: -/* 07B408 7F0468D8 46020381 */ sub.s $f14, $f0, $f2 -/* 07B40C 7F0468DC 45000002 */ bc1f .L7F0468E8 -/* 07B410 7F0468E0 46007306 */ mov.s $f12, $f14 -/* 07B414 7F0468E4 46147300 */ add.s $f12, $f14, $f20 -.L7F0468E8: -/* 07B418 7F0468E8 C4202AD0 */ lwc1 $f0, %lo(D_80052AD0)($at) -/* 07B41C 7F0468EC 3C018005 */ lui $at, %hi(D_80052AD4) -/* 07B420 7F0468F0 46006301 */ sub.s $f12, $f12, $f0 -/* 07B424 7F0468F4 4616603C */ c.lt.s $f12, $f22 -/* 07B428 7F0468F8 00000000 */ nop -/* 07B42C 7F0468FC 45020003 */ bc1fl .L7F04690C -/* 07B430 7F046900 460C003C */ c.lt.s $f0, $f12 -/* 07B434 7F046904 46146300 */ add.s $f12, $f12, $f20 -/* 07B438 7F046908 460C003C */ c.lt.s $f0, $f12 -.L7F04690C: -/* 07B43C 7F04690C 00000000 */ nop -/* 07B440 7F046910 45000002 */ bc1f .L7F04691C -/* 07B444 7F046914 00000000 */ nop -/* 07B448 7F046918 46146301 */ sub.s $f12, $f12, $f20 -.L7F04691C: -/* 07B44C 7F04691C C42A2AD4 */ lwc1 $f10, %lo(D_80052AD4)($at) -/* 07B450 7F046920 3C018005 */ lui $at, %hi(D_80052AD8) -/* 07B454 7F046924 460C503C */ c.lt.s $f10, $f12 -/* 07B458 7F046928 00000000 */ nop -/* 07B45C 7F04692C 45030007 */ bc1tl .L7F04694C -/* 07B460 7F046930 00009025 */ move $s2, $zero -/* 07B464 7F046934 C4262AD8 */ lwc1 $f6, %lo(D_80052AD8)($at) -/* 07B468 7F046938 4606603C */ c.lt.s $f12, $f6 -/* 07B46C 7F04693C 00000000 */ nop -/* 07B470 7F046940 45000002 */ bc1f .L7F04694C -/* 07B474 7F046944 00000000 */ nop -/* 07B478 7F046948 00009025 */ move $s2, $zero -.L7F04694C: -/* 07B47C 7F04694C 12400034 */ beqz $s2, .L7F046A20 -/* 07B480 7F046950 00002825 */ move $a1, $zero -/* 07B484 7F046954 8E6E0014 */ lw $t6, 0x14($s3) -/* 07B488 7F046958 E7B20518 */ swc1 $f18, 0x518($sp) -/* 07B48C 7F04695C 8FA40514 */ lw $a0, 0x514($sp) -/* 07B490 7F046960 0FC2280F */ jal sub_GAME_7F08A03C -/* 07B494 7F046964 AFAE04F0 */ sw $t6, 0x4f0($sp) -/* 07B498 7F046968 8FA20514 */ lw $v0, 0x514($sp) -/* 07B49C 7F04696C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 07B4A0 7F046970 8E650008 */ lw $a1, 8($s3) -/* 07B4A4 7F046974 C4440010 */ lwc1 $f4, 0x10($v0) -/* 07B4A8 7F046978 8E660010 */ lw $a2, 0x10($s3) -/* 07B4AC 7F04697C 8C470008 */ lw $a3, 8($v0) -/* 07B4B0 7F046980 44814000 */ mtc1 $at, $f8 -/* 07B4B4 7F046984 44815000 */ mtc1 $at, $f10 -/* 07B4B8 7F046988 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B4BC 7F04698C 44813000 */ mtc1 $at, $f6 -/* 07B4C0 7F046990 240D001B */ li $t5, 27 -/* 07B4C4 7F046994 AFAD0014 */ sw $t5, 0x14($sp) -/* 07B4C8 7F046998 E7B60020 */ swc1 $f22, 0x20($sp) -/* 07B4CC 7F04699C 27A404F0 */ addiu $a0, $sp, 0x4f0 -/* 07B4D0 7F0469A0 E7A40010 */ swc1 $f4, 0x10($sp) -/* 07B4D4 7F0469A4 E7A80018 */ swc1 $f8, 0x18($sp) -/* 07B4D8 7F0469A8 E7AA001C */ swc1 $f10, 0x1c($sp) -/* 07B4DC 7F0469AC 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 07B4E0 7F0469B0 E7A60024 */ swc1 $f6, 0x24($sp) -/* 07B4E4 7F0469B4 10400015 */ beqz $v0, .L7F046A0C -/* 07B4E8 7F0469B8 C7B20518 */ lwc1 $f18, 0x518($sp) -/* 07B4EC 7F0469BC 3C188005 */ lui $t8, %hi(clock_timer) -/* 07B4F0 7F0469C0 8F188374 */ lw $t8, %lo(clock_timer)($t8) -/* 07B4F4 7F0469C4 8E0F00E0 */ lw $t7, 0xe0($s0) -/* 07B4F8 7F0469C8 3C014396 */ li $at, 0x43960000 # 300.000000 -/* 07B4FC 7F0469CC 44812000 */ mtc1 $at, $f4 -/* 07B500 7F0469D0 01F84021 */ addu $t0, $t7, $t8 -/* 07B504 7F0469D4 AE0800E0 */ sw $t0, 0xe0($s0) -/* 07B508 7F0469D8 3C018003 */ lui $at, %hi(D_80030B14) -/* 07B50C 7F0469DC C4280B14 */ lwc1 $f8, %lo(D_80030B14)($at) -/* 07B510 7F0469E0 46082282 */ mul.s $f10, $f4, $f8 -/* 07B514 7F0469E4 4600518D */ trunc.w.s $f6, $f10 -/* 07B518 7F0469E8 44193000 */ mfc1 $t9, $f6 -/* 07B51C 7F0469EC 00000000 */ nop -/* 07B520 7F0469F0 0119082A */ slt $at, $t0, $t9 -/* 07B524 7F0469F4 54200006 */ bnezl $at, .L7F046A10 -/* 07B528 7F0469F8 8FA40514 */ lw $a0, 0x514($sp) -/* 07B52C 7F0469FC 0FC15772 */ jal start_alarm -/* 07B530 7F046A00 E7B20518 */ swc1 $f18, 0x518($sp) -/* 07B534 7F046A04 C7B20518 */ lwc1 $f18, 0x518($sp) -/* 07B538 7F046A08 AE0000E0 */ sw $zero, 0xe0($s0) -.L7F046A0C: -/* 07B53C 7F046A0C 8FA40514 */ lw $a0, 0x514($sp) -.L7F046A10: -/* 07B540 7F046A10 24050001 */ li $a1, 1 -/* 07B544 7F046A14 0FC2280F */ jal sub_GAME_7F08A03C -/* 07B548 7F046A18 E7B20518 */ swc1 $f18, 0x518($sp) -/* 07B54C 7F046A1C C7B20518 */ lwc1 $f18, 0x518($sp) -.L7F046A20: -/* 07B550 7F046A20 C60E00C8 */ lwc1 $f14, 0xc8($s0) -/* 07B554 7F046A24 4612703C */ c.lt.s $f14, $f18 -/* 07B558 7F046A28 00000000 */ nop -/* 07B55C 7F046A2C 45020047 */ bc1fl .L7F046B4C -/* 07B560 7F046A30 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B564 7F046A34 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B568 7F046A38 3C018005 */ lui $at, %hi(D_80052AE0) -/* 07B56C 7F046A3C C4302AE0 */ lwc1 $f16, %lo(D_80052AE0)($at) -/* 07B570 7F046A40 46000102 */ mul.s $f4, $f0, $f0 -/* 07B574 7F046A44 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07B578 7F046A48 44814000 */ mtc1 $at, $f8 -/* 07B57C 7F046A4C 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07B580 7F046A50 46082282 */ mul.s $f10, $f4, $f8 -/* 07B584 7F046A54 46105083 */ div.s $f2, $f10, $f16 -/* 07B588 7F046A58 46029181 */ sub.s $f6, $f18, $f2 -/* 07B58C 7F046A5C 460E303E */ c.le.s $f6, $f14 -/* 07B590 7F046A60 00000000 */ nop -/* 07B594 7F046A64 4502000F */ bc1fl .L7F046AA4 -/* 07B598 7F046A68 C60C00DC */ lwc1 $f12, 0xdc($s0) -/* 07B59C 7F046A6C C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07B5A0 7F046A70 46048202 */ mul.s $f8, $f16, $f4 -/* 07B5A4 7F046A74 46080281 */ sub.s $f10, $f0, $f8 -/* 07B5A8 7F046A78 E60A00D8 */ swc1 $f10, 0xd8($s0) -/* 07B5AC 7F046A7C C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B5B0 7F046A80 4610003C */ c.lt.s $f0, $f16 -/* 07B5B4 7F046A84 00000000 */ nop -/* 07B5B8 7F046A88 45000003 */ bc1f .L7F046A98 -/* 07B5BC 7F046A8C 00000000 */ nop -/* 07B5C0 7F046A90 E61000D8 */ swc1 $f16, 0xd8($s0) -/* 07B5C4 7F046A94 C60000D8 */ lwc1 $f0, 0xd8($s0) -.L7F046A98: -/* 07B5C8 7F046A98 1000001D */ b .L7F046B10 -/* 07B5CC 7F046A9C C60E00C8 */ lwc1 $f14, 0xc8($s0) -/* 07B5D0 7F046AA0 C60C00DC */ lwc1 $f12, 0xdc($s0) -.L7F046AA4: -/* 07B5D4 7F046AA4 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07B5D8 7F046AA8 460C003C */ c.lt.s $f0, $f12 -/* 07B5DC 7F046AAC 00000000 */ nop -/* 07B5E0 7F046AB0 45000017 */ bc1f .L7F046B10 -/* 07B5E4 7F046AB4 00000000 */ nop -/* 07B5E8 7F046AB8 C4268378 */ lwc1 $f6, %lo(global_timer_delta)($at) -/* 07B5EC 7F046ABC 46068102 */ mul.s $f4, $f16, $f6 -/* 07B5F0 7F046AC0 46040080 */ add.s $f2, $f0, $f4 -/* 07B5F4 7F046AC4 4602603C */ c.lt.s $f12, $f2 -/* 07B5F8 7F046AC8 00000000 */ nop -/* 07B5FC 7F046ACC 45000002 */ bc1f .L7F046AD8 -/* 07B600 7F046AD0 00000000 */ nop -/* 07B604 7F046AD4 46006086 */ mov.s $f2, $f12 -.L7F046AD8: -/* 07B608 7F046AD8 46021202 */ mul.s $f8, $f2, $f2 -/* 07B60C 7F046ADC 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07B610 7F046AE0 44815000 */ mtc1 $at, $f10 -/* 07B614 7F046AE4 00000000 */ nop -/* 07B618 7F046AE8 460A4182 */ mul.s $f6, $f8, $f10 -/* 07B61C 7F046AEC 46103103 */ div.s $f4, $f6, $f16 -/* 07B620 7F046AF0 46049201 */ sub.s $f8, $f18, $f4 -/* 07B624 7F046AF4 4608703C */ c.lt.s $f14, $f8 -/* 07B628 7F046AF8 00000000 */ nop -/* 07B62C 7F046AFC 45000004 */ bc1f .L7F046B10 -/* 07B630 7F046B00 00000000 */ nop -/* 07B634 7F046B04 E60200D8 */ swc1 $f2, 0xd8($s0) -/* 07B638 7F046B08 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B63C 7F046B0C C60E00C8 */ lwc1 $f14, 0xc8($s0) -.L7F046B10: -/* 07B640 7F046B10 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07B644 7F046B14 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07B648 7F046B18 460A0182 */ mul.s $f6, $f0, $f10 -/* 07B64C 7F046B1C 46067100 */ add.s $f4, $f14, $f6 -/* 07B650 7F046B20 E60400C8 */ swc1 $f4, 0xc8($s0) -/* 07B654 7F046B24 C60800C8 */ lwc1 $f8, 0xc8($s0) -/* 07B658 7F046B28 4608903E */ c.le.s $f18, $f8 -/* 07B65C 7F046B2C 00000000 */ nop -/* 07B660 7F046B30 450205BF */ bc1fl .L7F048230 -/* 07B664 7F046B34 92220003 */ lbu $v0, 3($s1) -/* 07B668 7F046B38 E61200C8 */ swc1 $f18, 0xc8($s0) -/* 07B66C 7F046B3C E61600D8 */ swc1 $f22, 0xd8($s0) -/* 07B670 7F046B40 100005BA */ b .L7F04822C -/* 07B674 7F046B44 AE0000D4 */ sw $zero, 0xd4($s0) -/* 07B678 7F046B48 C60000D8 */ lwc1 $f0, 0xd8($s0) -.L7F046B4C: -/* 07B67C 7F046B4C 3C018005 */ lui $at, %hi(D_80052AE4) -/* 07B680 7F046B50 C4302AE4 */ lwc1 $f16, %lo(D_80052AE4)($at) -/* 07B684 7F046B54 46000282 */ mul.s $f10, $f0, $f0 -/* 07B688 7F046B58 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07B68C 7F046B5C 44813000 */ mtc1 $at, $f6 -/* 07B690 7F046B60 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07B694 7F046B64 240A0001 */ li $t2, 1 -/* 07B698 7F046B68 46065102 */ mul.s $f4, $f10, $f6 -/* 07B69C 7F046B6C 46102083 */ div.s $f2, $f4, $f16 -/* 07B6A0 7F046B70 46029200 */ add.s $f8, $f18, $f2 -/* 07B6A4 7F046B74 4608703E */ c.le.s $f14, $f8 -/* 07B6A8 7F046B78 00000000 */ nop -/* 07B6AC 7F046B7C 4502000F */ bc1fl .L7F046BBC -/* 07B6B0 7F046B80 C60C00DC */ lwc1 $f12, 0xdc($s0) -/* 07B6B4 7F046B84 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07B6B8 7F046B88 460A8182 */ mul.s $f6, $f16, $f10 -/* 07B6BC 7F046B8C 46060101 */ sub.s $f4, $f0, $f6 -/* 07B6C0 7F046B90 E60400D8 */ swc1 $f4, 0xd8($s0) -/* 07B6C4 7F046B94 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B6C8 7F046B98 4610003C */ c.lt.s $f0, $f16 -/* 07B6CC 7F046B9C 00000000 */ nop -/* 07B6D0 7F046BA0 45000003 */ bc1f .L7F046BB0 -/* 07B6D4 7F046BA4 00000000 */ nop -/* 07B6D8 7F046BA8 E61000D8 */ swc1 $f16, 0xd8($s0) -/* 07B6DC 7F046BAC C60000D8 */ lwc1 $f0, 0xd8($s0) -.L7F046BB0: -/* 07B6E0 7F046BB0 1000001D */ b .L7F046C28 -/* 07B6E4 7F046BB4 C60E00C8 */ lwc1 $f14, 0xc8($s0) -/* 07B6E8 7F046BB8 C60C00DC */ lwc1 $f12, 0xdc($s0) -.L7F046BBC: -/* 07B6EC 7F046BBC 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07B6F0 7F046BC0 460C003C */ c.lt.s $f0, $f12 -/* 07B6F4 7F046BC4 00000000 */ nop -/* 07B6F8 7F046BC8 45000017 */ bc1f .L7F046C28 -/* 07B6FC 7F046BCC 00000000 */ nop -/* 07B700 7F046BD0 C4288378 */ lwc1 $f8, %lo(global_timer_delta)($at) -/* 07B704 7F046BD4 46088282 */ mul.s $f10, $f16, $f8 -/* 07B708 7F046BD8 460A0080 */ add.s $f2, $f0, $f10 -/* 07B70C 7F046BDC 4602603C */ c.lt.s $f12, $f2 -/* 07B710 7F046BE0 00000000 */ nop -/* 07B714 7F046BE4 45000002 */ bc1f .L7F046BF0 -/* 07B718 7F046BE8 00000000 */ nop -/* 07B71C 7F046BEC 46006086 */ mov.s $f2, $f12 -.L7F046BF0: -/* 07B720 7F046BF0 46021182 */ mul.s $f6, $f2, $f2 -/* 07B724 7F046BF4 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07B728 7F046BF8 44812000 */ mtc1 $at, $f4 -/* 07B72C 7F046BFC 00000000 */ nop -/* 07B730 7F046C00 46043202 */ mul.s $f8, $f6, $f4 -/* 07B734 7F046C04 46104283 */ div.s $f10, $f8, $f16 -/* 07B738 7F046C08 460A9180 */ add.s $f6, $f18, $f10 -/* 07B73C 7F046C0C 460E303C */ c.lt.s $f6, $f14 -/* 07B740 7F046C10 00000000 */ nop -/* 07B744 7F046C14 45000004 */ bc1f .L7F046C28 -/* 07B748 7F046C18 00000000 */ nop -/* 07B74C 7F046C1C E60200D8 */ swc1 $f2, 0xd8($s0) -/* 07B750 7F046C20 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B754 7F046C24 C60E00C8 */ lwc1 $f14, 0xc8($s0) -.L7F046C28: -/* 07B758 7F046C28 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07B75C 7F046C2C C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07B760 7F046C30 46040202 */ mul.s $f8, $f0, $f4 -/* 07B764 7F046C34 46087281 */ sub.s $f10, $f14, $f8 -/* 07B768 7F046C38 E60A00C8 */ swc1 $f10, 0xc8($s0) -/* 07B76C 7F046C3C C60600C8 */ lwc1 $f6, 0xc8($s0) -/* 07B770 7F046C40 4612303E */ c.le.s $f6, $f18 -/* 07B774 7F046C44 00000000 */ nop -/* 07B778 7F046C48 45020579 */ bc1fl .L7F048230 -/* 07B77C 7F046C4C 92220003 */ lbu $v0, 3($s1) -/* 07B780 7F046C50 E61200C8 */ swc1 $f18, 0xc8($s0) -/* 07B784 7F046C54 E61600D8 */ swc1 $f22, 0xd8($s0) -/* 07B788 7F046C58 10000574 */ b .L7F04822C -/* 07B78C 7F046C5C AE0A00D4 */ sw $t2, 0xd4($s0) -/* 07B790 7F046C60 2401000D */ li $at, 13 -.L7F046C64: -/* 07B794 7F046C64 5441023F */ bnel $v0, $at, .L7F047564 -/* 07B798 7F046C68 24010027 */ li $at, 39 -/* 07B79C 7F046C6C 8E2C0008 */ lw $t4, 8($s1) -/* 07B7A0 7F046C70 000C70C0 */ sll $t6, $t4, 3 -/* 07B7A4 7F046C74 05C2023B */ bltzl $t6, .L7F047564 -/* 07B7A8 7F046C78 24010027 */ li $at, 39 -/* 07B7AC 7F046C7C 0FC225E6 */ jal get_curplayer_positiondata -/* 07B7B0 7F046C80 8E700004 */ lw $s0, 4($s3) -/* 07B7B4 7F046C84 AFA004AC */ sw $zero, 0x4ac($sp) -/* 07B7B8 7F046C88 AFA004A8 */ sw $zero, 0x4a8($sp) -/* 07B7BC 7F046C8C AFA004A4 */ sw $zero, 0x4a4($sp) -/* 07B7C0 7F046C90 8E23000C */ lw $v1, 0xc($s1) -/* 07B7C4 7F046C94 00409025 */ move $s2, $v0 -/* 07B7C8 7F046C98 00036800 */ sll $t5, $v1, 0 -/* 07B7CC 7F046C9C 05A10056 */ bgez $t5, .L7F046DF8 -/* 07B7D0 7F046CA0 00037840 */ sll $t7, $v1, 1 -/* 07B7D4 7F046CA4 05E30008 */ bgezl $t7, .L7F046CC8 -/* 07B7D8 7F046CA8 C6020084 */ lwc1 $f2, 0x84($s0) -/* 07B7DC 7F046CAC C6080090 */ lwc1 $f8, 0x90($s0) -/* 07B7E0 7F046CB0 C604009C */ lwc1 $f4, 0x9c($s0) -/* 07B7E4 7F046CB4 E6080084 */ swc1 $f8, 0x84($s0) -/* 07B7E8 7F046CB8 C6020084 */ lwc1 $f2, 0x84($s0) -/* 07B7EC 7F046CBC 10000036 */ b .L7F046D98 -/* 07B7F0 7F046CC0 E6040098 */ swc1 $f4, 0x98($s0) -/* 07B7F4 7F046CC4 C6020084 */ lwc1 $f2, 0x84($s0) -.L7F046CC8: -/* 07B7F8 7F046CC8 C60A0090 */ lwc1 $f10, 0x90($s0) -/* 07B7FC 7F046CCC 460A1032 */ c.eq.s $f2, $f10 -/* 07B800 7F046CD0 00000000 */ nop -/* 07B804 7F046CD4 45000030 */ bc1f .L7F046D98 -/* 07B808 7F046CD8 00000000 */ nop -/* 07B80C 7F046CDC C6060098 */ lwc1 $f6, 0x98($s0) -/* 07B810 7F046CE0 C604009C */ lwc1 $f4, 0x9c($s0) -/* 07B814 7F046CE4 46043032 */ c.eq.s $f6, $f4 -/* 07B818 7F046CE8 00000000 */ nop -/* 07B81C 7F046CEC 4500002A */ bc1f .L7F046D98 -/* 07B820 7F046CF0 00000000 */ nop -/* 07B824 7F046CF4 0C002914 */ jal get_random_value -/* 07B828 7F046CF8 00000000 */ nop -/* 07B82C 7F046CFC 44824000 */ mtc1 $v0, $f8 -/* 07B830 7F046D00 3C018005 */ lui $at, %hi(D_80052AE8) -/* 07B834 7F046D04 C4342AE8 */ lwc1 $f20, %lo(D_80052AE8)($at) -/* 07B838 7F046D08 04410005 */ bgez $v0, .L7F046D20 -/* 07B83C 7F046D0C 468042A0 */ cvt.s.w $f10, $f8 -/* 07B840 7F046D10 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07B844 7F046D14 44813000 */ mtc1 $at, $f6 -/* 07B848 7F046D18 00000000 */ nop -/* 07B84C 7F046D1C 46065280 */ add.s $f10, $f10, $f6 -.L7F046D20: -/* 07B850 7F046D20 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07B854 7F046D24 44812000 */ mtc1 $at, $f4 -/* 07B858 7F046D28 3C01421C */ li $at, 0x421C0000 # 39.000000 -/* 07B85C 7F046D2C 44813000 */ mtc1 $at, $f6 -/* 07B860 7F046D30 46045202 */ mul.s $f8, $f10, $f4 -/* 07B864 7F046D34 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B868 7F046D38 44812000 */ mtc1 $at, $f4 -/* 07B86C 7F046D3C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07B870 7F046D40 46064282 */ mul.s $f10, $f8, $f6 -/* 07B874 7F046D44 46045200 */ add.s $f8, $f10, $f4 -/* 07B878 7F046D48 44815000 */ mtc1 $at, $f10 -/* 07B87C 7F046D4C 46144182 */ mul.s $f6, $f8, $f20 -/* 07B880 7F046D50 460A3103 */ div.s $f4, $f6, $f10 -/* 07B884 7F046D54 0C002914 */ jal get_random_value -/* 07B888 7F046D58 E6040098 */ swc1 $f4, 0x98($s0) -/* 07B88C 7F046D5C 44824000 */ mtc1 $v0, $f8 -/* 07B890 7F046D60 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07B894 7F046D64 04410004 */ bgez $v0, .L7F046D78 -/* 07B898 7F046D68 468041A0 */ cvt.s.w $f6, $f8 -/* 07B89C 7F046D6C 44815000 */ mtc1 $at, $f10 -/* 07B8A0 7F046D70 00000000 */ nop -/* 07B8A4 7F046D74 460A3180 */ add.s $f6, $f6, $f10 -.L7F046D78: -/* 07B8A8 7F046D78 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07B8AC 7F046D7C 44812000 */ mtc1 $at, $f4 -/* 07B8B0 7F046D80 00000000 */ nop -/* 07B8B4 7F046D84 46043202 */ mul.s $f8, $f6, $f4 -/* 07B8B8 7F046D88 00000000 */ nop -/* 07B8BC 7F046D8C 46144282 */ mul.s $f10, $f8, $f20 -/* 07B8C0 7F046D90 E60A0084 */ swc1 $f10, 0x84($s0) -/* 07B8C4 7F046D94 C6020084 */ lwc1 $f2, 0x84($s0) -.L7F046D98: -/* 07B8C8 7F046D98 3C018005 */ lui $at, %hi(D_80052AEC) -/* 07B8CC 7F046D9C C4202AEC */ lwc1 $f0, %lo(D_80052AEC)($at) -/* 07B8D0 7F046DA0 3C018005 */ lui $at, %hi(D_80052AF4) -/* 07B8D4 7F046DA4 C4262AF4 */ lwc1 $f6, %lo(D_80052AF4)($at) -/* 07B8D8 7F046DA8 44051000 */ mfc1 $a1, $f2 -/* 07B8DC 7F046DAC 44070000 */ mfc1 $a3, $f0 -/* 07B8E0 7F046DB0 26040090 */ addiu $a0, $s0, 0x90 -/* 07B8E4 7F046DB4 26060094 */ addiu $a2, $s0, 0x94 -/* 07B8E8 7F046DB8 E7A00010 */ swc1 $f0, 0x10($sp) -/* 07B8EC 7F046DBC 0FC10C43 */ jal sub_GAME_7F04310C -/* 07B8F0 7F046DC0 E7A60014 */ swc1 $f6, 0x14($sp) -/* 07B8F4 7F046DC4 3C018005 */ lui $at, %hi(D_80052AF8) -/* 07B8F8 7F046DC8 C4202AF8 */ lwc1 $f0, %lo(D_80052AF8)($at) -/* 07B8FC 7F046DCC 3C018005 */ lui $at, %hi(D_80052AFC) -/* 07B900 7F046DD0 C4242AFC */ lwc1 $f4, %lo(D_80052AFC)($at) -/* 07B904 7F046DD4 8E050098 */ lw $a1, 0x98($s0) -/* 07B908 7F046DD8 44070000 */ mfc1 $a3, $f0 -/* 07B90C 7F046DDC 2604009C */ addiu $a0, $s0, 0x9c -/* 07B910 7F046DE0 260600A0 */ addiu $a2, $s0, 0xa0 -/* 07B914 7F046DE4 E7A00010 */ swc1 $f0, 0x10($sp) -/* 07B918 7F046DE8 0FC10C43 */ jal sub_GAME_7F04310C -/* 07B91C 7F046DEC E7A40014 */ swc1 $f4, 0x14($sp) -/* 07B920 7F046DF0 1000050F */ b .L7F048230 -/* 07B924 7F046DF4 92220003 */ lbu $v0, 3($s1) -.L7F046DF8: -/* 07B928 7F046DF8 C6480008 */ lwc1 $f8, 8($s2) -/* 07B92C 7F046DFC C62A0058 */ lwc1 $f10, 0x58($s1) -/* 07B930 7F046E00 C646000C */ lwc1 $f6, 0xc($s2) -/* 07B934 7F046E04 C624005C */ lwc1 $f4, 0x5c($s1) -/* 07B938 7F046E08 460A4001 */ sub.s $f0, $f8, $f10 -/* 07B93C 7F046E0C 3C0141A0 */ li $at, 0x41A00000 # 20.000000 -/* 07B940 7F046E10 44815000 */ mtc1 $at, $f10 -/* 07B944 7F046E14 46043201 */ sub.s $f8, $f6, $f4 -/* 07B948 7F046E18 460A4181 */ sub.s $f6, $f8, $f10 -/* 07B94C 7F046E1C 46000282 */ mul.s $f10, $f0, $f0 -/* 07B950 7F046E20 E7A604C0 */ swc1 $f6, 0x4c0($sp) -/* 07B954 7F046E24 C6280060 */ lwc1 $f8, 0x60($s1) -/* 07B958 7F046E28 C6440010 */ lwc1 $f4, 0x10($s2) -/* 07B95C 7F046E2C E7A004C4 */ swc1 $f0, 0x4c4($sp) -/* 07B960 7F046E30 46082081 */ sub.s $f2, $f4, $f8 -/* 07B964 7F046E34 46021182 */ mul.s $f6, $f2, $f2 -/* 07B968 7F046E38 E7A204BC */ swc1 $f2, 0x4bc($sp) -/* 07B96C 7F046E3C 46065500 */ add.s $f20, $f10, $f6 -/* 07B970 7F046E40 E7B404B8 */ swc1 $f20, 0x4b8($sp) -/* 07B974 7F046E44 0C007DF8 */ jal sqrtf -/* 07B978 7F046E48 4600A306 */ mov.s $f12, $f20 -/* 07B97C 7F046E4C E7A004B0 */ swc1 $f0, 0x4b0($sp) -/* 07B980 7F046E50 8E380008 */ lw $t8, 8($s1) -/* 07B984 7F046E54 46000086 */ mov.s $f2, $f0 -/* 07B988 7F046E58 00184100 */ sll $t0, $t8, 4 -/* 07B98C 7F046E5C 05030008 */ bgezl $t0, .L7F046E80 -/* 07B990 7F046E60 C7AC04B8 */ lwc1 $f12, 0x4b8($sp) -/* 07B994 7F046E64 C7A004C0 */ lwc1 $f0, 0x4c0($sp) -/* 07B998 7F046E68 46000102 */ mul.s $f4, $f0, $f0 -/* 07B99C 7F046E6C 4604A300 */ add.s $f12, $f20, $f4 -/* 07B9A0 7F046E70 0C007DF8 */ jal sqrtf -/* 07B9A4 7F046E74 E7AC04B8 */ swc1 $f12, 0x4b8($sp) -/* 07B9A8 7F046E78 46000086 */ mov.s $f2, $f0 -/* 07B9AC 7F046E7C C7AC04B8 */ lwc1 $f12, 0x4b8($sp) -.L7F046E80: -/* 07B9B0 7F046E80 0FC0B491 */ jal sub_GAME_7F02D244 -/* 07B9B4 7F046E84 E7A204B4 */ swc1 $f2, 0x4b4($sp) -/* 07B9B8 7F046E88 E7A004A0 */ swc1 $f0, 0x4a0($sp) -/* 07B9BC 7F046E8C C6080098 */ lwc1 $f8, 0x98($s0) -/* 07B9C0 7F046E90 C6100084 */ lwc1 $f16, 0x84($s0) -/* 07B9C4 7F046E94 C7A204B4 */ lwc1 $f2, 0x4b4($sp) -/* 07B9C8 7F046E98 E7A804D4 */ swc1 $f8, 0x4d4($sp) -/* 07B9CC 7F046E9C C60A00A8 */ lwc1 $f10, 0xa8($s0) -/* 07B9D0 7F046EA0 460A103E */ c.le.s $f2, $f10 -/* 07B9D4 7F046EA4 00000000 */ nop -/* 07B9D8 7F046EA8 45020096 */ bc1fl .L7F047104 -/* 07B9DC 7F046EAC 8FAC04AC */ lw $t4, 0x4ac($sp) -/* 07B9E0 7F046EB0 C7AC04C4 */ lwc1 $f12, 0x4c4($sp) -/* 07B9E4 7F046EB4 C7AE04BC */ lwc1 $f14, 0x4bc($sp) -/* 07B9E8 7F046EB8 0FC16A8C */ jal convert_angle_using_inverse -/* 07B9EC 7F046EBC E7B004D8 */ swc1 $f16, 0x4d8($sp) -/* 07B9F0 7F046EC0 E7A0049C */ swc1 $f0, 0x49c($sp) -/* 07B9F4 7F046EC4 C7AC04C0 */ lwc1 $f12, 0x4c0($sp) -/* 07B9F8 7F046EC8 0FC16A8C */ jal convert_angle_using_inverse -/* 07B9FC 7F046ECC C7AE04B0 */ lwc1 $f14, 0x4b0($sp) -/* 07BA00 7F046ED0 E7A00498 */ swc1 $f0, 0x498($sp) -/* 07BA04 7F046ED4 8E220008 */ lw $v0, 8($s1) -/* 07BA08 7F046ED8 C7B004D8 */ lwc1 $f16, 0x4d8($sp) -/* 07BA0C 7F046EDC 24190001 */ li $t9, 1 -/* 07BA10 7F046EE0 00025840 */ sll $t3, $v0, 1 -/* 07BA14 7F046EE4 05600003 */ bltz $t3, .L7F046EF4 -/* 07BA18 7F046EE8 00024880 */ sll $t1, $v0, 2 -/* 07BA1C 7F046EEC 05210005 */ bgez $t1, .L7F046F04 -/* 07BA20 7F046EF0 C7A6049C */ lwc1 $f6, 0x49c($sp) -.L7F046EF4: -/* 07BA24 7F046EF4 3C018005 */ lui $at, %hi(D_80052B00) -/* 07BA28 7F046EF8 C4342B00 */ lwc1 $f20, %lo(D_80052B00)($at) -/* 07BA2C 7F046EFC 10000027 */ b .L7F046F9C -/* 07BA30 7F046F00 AFB904AC */ sw $t9, 0x4ac($sp) -.L7F046F04: -/* 07BA34 7F046F04 C6040090 */ lwc1 $f4, 0x90($s0) -/* 07BA38 7F046F08 3C018005 */ lui $at, %hi(D_80052B04) -/* 07BA3C 7F046F0C 46043301 */ sub.s $f12, $f6, $f4 -/* 07BA40 7F046F10 4616603C */ c.lt.s $f12, $f22 -/* 07BA44 7F046F14 00000000 */ nop -/* 07BA48 7F046F18 45000003 */ bc1f .L7F046F28 -/* 07BA4C 7F046F1C 00000000 */ nop -/* 07BA50 7F046F20 C4342B04 */ lwc1 $f20, %lo(D_80052B04)($at) -/* 07BA54 7F046F24 46146300 */ add.s $f12, $f12, $f20 -.L7F046F28: -/* 07BA58 7F046F28 3C018005 */ lui $at, %hi(D_80052B08) -/* 07BA5C 7F046F2C C4342B08 */ lwc1 $f20, %lo(D_80052B08)($at) -/* 07BA60 7F046F30 3C018005 */ lui $at, %hi(D_80052B0C) -/* 07BA64 7F046F34 C4282B0C */ lwc1 $f8, %lo(D_80052B0C)($at) -/* 07BA68 7F046F38 3C018005 */ lui $at, %hi(D_80052B10) -/* 07BA6C 7F046F3C 460C403C */ c.lt.s $f8, $f12 -/* 07BA70 7F046F40 00000000 */ nop -/* 07BA74 7F046F44 45020003 */ bc1fl .L7F046F54 -/* 07BA78 7F046F48 C60A009C */ lwc1 $f10, 0x9c($s0) -/* 07BA7C 7F046F4C 46146301 */ sub.s $f12, $f12, $f20 -/* 07BA80 7F046F50 C60A009C */ lwc1 $f10, 0x9c($s0) -.L7F046F54: -/* 07BA84 7F046F54 460A0081 */ sub.s $f2, $f0, $f10 -/* 07BA88 7F046F58 4616103C */ c.lt.s $f2, $f22 -/* 07BA8C 7F046F5C 00000000 */ nop -/* 07BA90 7F046F60 45000001 */ bc1f .L7F046F68 -/* 07BA94 7F046F64 00000000 */ nop -.L7F046F68: -/* 07BA98 7F046F68 C4262B10 */ lwc1 $f6, %lo(D_80052B10)($at) -/* 07BA9C 7F046F6C 3C018005 */ lui $at, %hi(D_80052B14) -/* 07BAA0 7F046F70 4606603C */ c.lt.s $f12, $f6 -/* 07BAA4 7F046F74 00000000 */ nop -/* 07BAA8 7F046F78 45020009 */ bc1fl .L7F046FA0 -/* 07BAAC 7F046F7C 8FAC04AC */ lw $t4, 0x4ac($sp) -/* 07BAB0 7F046F80 C4242B14 */ lwc1 $f4, %lo(D_80052B14)($at) -/* 07BAB4 7F046F84 240A0001 */ li $t2, 1 -/* 07BAB8 7F046F88 460C203C */ c.lt.s $f4, $f12 -/* 07BABC 7F046F8C 00000000 */ nop -/* 07BAC0 7F046F90 45020003 */ bc1fl .L7F046FA0 -/* 07BAC4 7F046F94 8FAC04AC */ lw $t4, 0x4ac($sp) -/* 07BAC8 7F046F98 AFAA04AC */ sw $t2, 0x4ac($sp) -.L7F046F9C: -/* 07BACC 7F046F9C 8FAC04AC */ lw $t4, 0x4ac($sp) -.L7F046FA0: -/* 07BAD0 7F046FA0 C7A8049C */ lwc1 $f8, 0x49c($sp) -/* 07BAD4 7F046FA4 02402025 */ move $a0, $s2 -/* 07BAD8 7F046FA8 11800055 */ beqz $t4, .L7F047100 -/* 07BADC 7F046FAC 00002825 */ move $a1, $zero -/* 07BAE0 7F046FB0 C60A0084 */ lwc1 $f10, 0x84($s0) -/* 07BAE4 7F046FB4 3C018005 */ lui $at, %hi(D_80052B18) -/* 07BAE8 7F046FB8 C4262B18 */ lwc1 $f6, %lo(D_80052B18)($at) -/* 07BAEC 7F046FBC 460A4001 */ sub.s $f0, $f8, $f10 -/* 07BAF0 7F046FC0 8E6E0014 */ lw $t6, 0x14($s3) -/* 07BAF4 7F046FC4 3C018005 */ lui $at, %hi(D_80052B1C) -/* 07BAF8 7F046FC8 4606003C */ c.lt.s $f0, $f6 -/* 07BAFC 7F046FCC AFAE0490 */ sw $t6, 0x490($sp) -/* 07BB00 7F046FD0 45000003 */ bc1f .L7F046FE0 -/* 07BB04 7F046FD4 00000000 */ nop -/* 07BB08 7F046FD8 10000007 */ b .L7F046FF8 -/* 07BB0C 7F046FDC 46140000 */ add.s $f0, $f0, $f20 -.L7F046FE0: -/* 07BB10 7F046FE0 C4242B1C */ lwc1 $f4, %lo(D_80052B1C)($at) -/* 07BB14 7F046FE4 4600203E */ c.le.s $f4, $f0 -/* 07BB18 7F046FE8 00000000 */ nop -/* 07BB1C 7F046FEC 45020003 */ bc1fl .L7F046FFC -/* 07BB20 7F046FF0 E7A00494 */ swc1 $f0, 0x494($sp) -/* 07BB24 7F046FF4 46140001 */ sub.s $f0, $f0, $f20 -.L7F046FF8: -/* 07BB28 7F046FF8 E7A00494 */ swc1 $f0, 0x494($sp) -.L7F046FFC: -/* 07BB2C 7F046FFC 0FC2280F */ jal sub_GAME_7F08A03C -/* 07BB30 7F047000 E7B004D8 */ swc1 $f16, 0x4d8($sp) -/* 07BB34 7F047004 C7A00494 */ lwc1 $f0, 0x494($sp) -/* 07BB38 7F047008 C6080088 */ lwc1 $f8, 0x88($s0) -/* 07BB3C 7F04700C C7B004D8 */ lwc1 $f16, 0x4d8($sp) -/* 07BB40 7F047010 4608003E */ c.le.s $f0, $f8 -/* 07BB44 7F047014 00000000 */ nop -/* 07BB48 7F047018 45020027 */ bc1fl .L7F0470B8 -/* 07BB4C 7F04701C 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BB50 7F047020 C60A008C */ lwc1 $f10, 0x8c($s0) -/* 07BB54 7F047024 240D001B */ li $t5, 27 -/* 07BB58 7F047028 4600503E */ c.le.s $f10, $f0 -/* 07BB5C 7F04702C 00000000 */ nop -/* 07BB60 7F047030 45020021 */ bc1fl .L7F0470B8 -/* 07BB64 7F047034 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BB68 7F047038 C6460010 */ lwc1 $f6, 0x10($s2) -/* 07BB6C 7F04703C 8E650008 */ lw $a1, 8($s3) -/* 07BB70 7F047040 8E660010 */ lw $a2, 0x10($s3) -/* 07BB74 7F047044 8E470008 */ lw $a3, 8($s2) -/* 07BB78 7F047048 AFAD0014 */ sw $t5, 0x14($sp) -/* 07BB7C 7F04704C E7A60010 */ swc1 $f6, 0x10($sp) -/* 07BB80 7F047050 C660000C */ lwc1 $f0, 0xc($s3) -/* 07BB84 7F047054 27A40490 */ addiu $a0, $sp, 0x490 -/* 07BB88 7F047058 E7A00018 */ swc1 $f0, 0x18($sp) -/* 07BB8C 7F04705C E7A0001C */ swc1 $f0, 0x1c($sp) -/* 07BB90 7F047060 C642000C */ lwc1 $f2, 0xc($s2) -/* 07BB94 7F047064 E7B004D8 */ swc1 $f16, 0x4d8($sp) -/* 07BB98 7F047068 E7A20020 */ swc1 $f2, 0x20($sp) -/* 07BB9C 7F04706C 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 07BBA0 7F047070 E7A20024 */ swc1 $f2, 0x24($sp) -/* 07BBA4 7F047074 1040000F */ beqz $v0, .L7F0470B4 -/* 07BBA8 7F047078 C7B004D8 */ lwc1 $f16, 0x4d8($sp) -/* 07BBAC 7F04707C 8FAF0490 */ lw $t7, 0x490($sp) -/* 07BBB0 7F047080 8E580014 */ lw $t8, 0x14($s2) -/* 07BBB4 7F047084 55F8000C */ bnel $t7, $t8, .L7F0470B8 -/* 07BBB8 7F047088 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BBBC 7F04708C 8E280008 */ lw $t0, 8($s1) -/* 07BBC0 7F047090 3C012000 */ lui $at, 0x2000 -/* 07BBC4 7F047094 24090001 */ li $t1, 1 -/* 07BBC8 7F047098 01015825 */ or $t3, $t0, $at -/* 07BBCC 7F04709C AE2B0008 */ sw $t3, 8($s1) -/* 07BBD0 7F0470A0 C7A40498 */ lwc1 $f4, 0x498($sp) -/* 07BBD4 7F0470A4 AFA904A4 */ sw $t1, 0x4a4($sp) -/* 07BBD8 7F0470A8 C7B0049C */ lwc1 $f16, 0x49c($sp) -/* 07BBDC 7F0470AC 1000000F */ b .L7F0470EC -/* 07BBE0 7F0470B0 E7A404D4 */ swc1 $f4, 0x4d4($sp) -.L7F0470B4: -/* 07BBE4 7F0470B4 8E0200B8 */ lw $v0, 0xb8($s0) -.L7F0470B8: -/* 07BBE8 7F0470B8 3C198005 */ lui $t9, %hi(global_timer) -/* 07BBEC 7F0470BC 0442000B */ bltzl $v0, .L7F0470EC -/* 07BBF0 7F0470C0 AFA004AC */ sw $zero, 0x4ac($sp) -/* 07BBF4 7F0470C4 8F39837C */ lw $t9, %lo(global_timer)($t9) -/* 07BBF8 7F0470C8 272AFF88 */ addiu $t2, $t9, -0x78 -/* 07BBFC 7F0470CC 0142082A */ slt $at, $t2, $v0 -/* 07BC00 7F0470D0 50200006 */ beql $at, $zero, .L7F0470EC -/* 07BC04 7F0470D4 AFA004AC */ sw $zero, 0x4ac($sp) -/* 07BC08 7F0470D8 C608009C */ lwc1 $f8, 0x9c($s0) -/* 07BC0C 7F0470DC C6100090 */ lwc1 $f16, 0x90($s0) -/* 07BC10 7F0470E0 10000002 */ b .L7F0470EC -/* 07BC14 7F0470E4 E7A804D4 */ swc1 $f8, 0x4d4($sp) -/* 07BC18 7F0470E8 AFA004AC */ sw $zero, 0x4ac($sp) -.L7F0470EC: -/* 07BC1C 7F0470EC 02402025 */ move $a0, $s2 -/* 07BC20 7F0470F0 24050001 */ li $a1, 1 -/* 07BC24 7F0470F4 0FC2280F */ jal sub_GAME_7F08A03C -/* 07BC28 7F0470F8 E7B004D8 */ swc1 $f16, 0x4d8($sp) -/* 07BC2C 7F0470FC C7B004D8 */ lwc1 $f16, 0x4d8($sp) -.L7F047100: -/* 07BC30 7F047100 8FAC04AC */ lw $t4, 0x4ac($sp) -.L7F047104: -/* 07BC34 7F047104 3C018005 */ lui $at, %hi(D_80052B20) -/* 07BC38 7F047108 C4342B20 */ lwc1 $f20, %lo(D_80052B20)($at) -/* 07BC3C 7F04710C 51800007 */ beql $t4, $zero, .L7F04712C -/* 07BC40 7F047110 8E0E00D0 */ lw $t6, 0xd0($s0) -/* 07BC44 7F047114 C7AC04B8 */ lwc1 $f12, 0x4b8($sp) -/* 07BC48 7F047118 0FC0B491 */ jal sub_GAME_7F02D244 -/* 07BC4C 7F04711C E7B004D8 */ swc1 $f16, 0x4d8($sp) -/* 07BC50 7F047120 C7B004D8 */ lwc1 $f16, 0x4d8($sp) -/* 07BC54 7F047124 E7A004A0 */ swc1 $f0, 0x4a0($sp) -/* 07BC58 7F047128 8E0E00D0 */ lw $t6, 0xd0($s0) -.L7F04712C: -/* 07BC5C 7F04712C 11C0001F */ beqz $t6, .L7F0471AC -/* 07BC60 7F047130 3C0D8005 */ lui $t5, %hi(global_timer) -/* 07BC64 7F047134 8DAD837C */ lw $t5, %lo(global_timer)($t5) -/* 07BC68 7F047138 24010078 */ li $at, 120 -/* 07BC6C 7F04713C E7B004D8 */ swc1 $f16, 0x4d8($sp) -/* 07BC70 7F047140 01A1001A */ div $zero, $t5, $at -/* 07BC74 7F047144 00007810 */ mfhi $t7 -/* 07BC78 7F047148 448F5000 */ mtc1 $t7, $f10 -/* 07BC7C 7F04714C 3C0142F0 */ li $at, 0x42F00000 # 120.000000 -/* 07BC80 7F047150 44814000 */ mtc1 $at, $f8 -/* 07BC84 7F047154 468051A0 */ cvt.s.w $f6, $f10 -/* 07BC88 7F047158 46143102 */ mul.s $f4, $f6, $f20 -/* 07BC8C 7F04715C 0FC15FAB */ jal sinf -/* 07BC90 7F047160 46082303 */ div.s $f12, $f4, $f8 -/* 07BC94 7F047164 3C018005 */ lui $at, %hi(D_80052B24) -/* 07BC98 7F047168 C4262B24 */ lwc1 $f6, %lo(D_80052B24)($at) -/* 07BC9C 7F04716C C7AA04A0 */ lwc1 $f10, 0x4a0($sp) -/* 07BCA0 7F047170 C7B004D8 */ lwc1 $f16, 0x4d8($sp) -/* 07BCA4 7F047174 46065102 */ mul.s $f4, $f10, $f6 -/* 07BCA8 7F047178 00000000 */ nop -/* 07BCAC 7F04717C 46002202 */ mul.s $f8, $f4, $f0 -/* 07BCB0 7F047180 46088400 */ add.s $f16, $f16, $f8 -/* 07BCB4 7F047184 4616803C */ c.lt.s $f16, $f22 -/* 07BCB8 7F047188 00000000 */ nop -/* 07BCBC 7F04718C 45000002 */ bc1f .L7F047198 -/* 07BCC0 7F047190 00000000 */ nop -/* 07BCC4 7F047194 46148400 */ add.s $f16, $f16, $f20 -.L7F047198: -/* 07BCC8 7F047198 4610A03E */ c.le.s $f20, $f16 -/* 07BCCC 7F04719C 00000000 */ nop -/* 07BCD0 7F0471A0 45020003 */ bc1fl .L7F0471B0 -/* 07BCD4 7F0471A4 C6020084 */ lwc1 $f2, 0x84($s0) -/* 07BCD8 7F0471A8 46148401 */ sub.s $f16, $f16, $f20 -.L7F0471AC: -/* 07BCDC 7F0471AC C6020084 */ lwc1 $f2, 0x84($s0) -.L7F0471B0: -/* 07BCE0 7F0471B0 3C018005 */ lui $at, %hi(D_80052B28) -/* 07BCE4 7F0471B4 C42A2B28 */ lwc1 $f10, %lo(D_80052B28)($at) -/* 07BCE8 7F0471B8 46028001 */ sub.s $f0, $f16, $f2 -/* 07BCEC 7F0471BC 26040090 */ addiu $a0, $s0, 0x90 -/* 07BCF0 7F0471C0 460A003C */ c.lt.s $f0, $f10 -/* 07BCF4 7F0471C4 00000000 */ nop -/* 07BCF8 7F0471C8 45000003 */ bc1f .L7F0471D8 -/* 07BCFC 7F0471CC 00000000 */ nop -/* 07BD00 7F0471D0 10000008 */ b .L7F0471F4 -/* 07BD04 7F0471D4 46140000 */ add.s $f0, $f0, $f20 -.L7F0471D8: -/* 07BD08 7F0471D8 3C018005 */ lui $at, %hi(D_80052B2C) -/* 07BD0C 7F0471DC C4262B2C */ lwc1 $f6, %lo(D_80052B2C)($at) -/* 07BD10 7F0471E0 4600303E */ c.le.s $f6, $f0 -/* 07BD14 7F0471E4 00000000 */ nop -/* 07BD18 7F0471E8 45020003 */ bc1fl .L7F0471F8 -/* 07BD1C 7F0471EC C60C0088 */ lwc1 $f12, 0x88($s0) -/* 07BD20 7F0471F0 46140001 */ sub.s $f0, $f0, $f20 -.L7F0471F4: -/* 07BD24 7F0471F4 C60C0088 */ lwc1 $f12, 0x88($s0) -.L7F0471F8: -/* 07BD28 7F0471F8 3C018005 */ lui $at, %hi(D_80052B30) -/* 07BD2C 7F0471FC 4600603C */ c.lt.s $f12, $f0 -/* 07BD30 7F047200 00000000 */ nop -/* 07BD34 7F047204 45020004 */ bc1fl .L7F047218 -/* 07BD38 7F047208 C60C008C */ lwc1 $f12, 0x8c($s0) -/* 07BD3C 7F04720C 10000007 */ b .L7F04722C -/* 07BD40 7F047210 460C1400 */ add.s $f16, $f2, $f12 -/* 07BD44 7F047214 C60C008C */ lwc1 $f12, 0x8c($s0) -.L7F047218: -/* 07BD48 7F047218 460C003C */ c.lt.s $f0, $f12 -/* 07BD4C 7F04721C 00000000 */ nop -/* 07BD50 7F047220 45020003 */ bc1fl .L7F047230 -/* 07BD54 7F047224 4616803C */ c.lt.s $f16, $f22 -/* 07BD58 7F047228 460C1400 */ add.s $f16, $f2, $f12 -.L7F04722C: -/* 07BD5C 7F04722C 4616803C */ c.lt.s $f16, $f22 -.L7F047230: -/* 07BD60 7F047230 00000000 */ nop -/* 07BD64 7F047234 45020003 */ bc1fl .L7F047244 -/* 07BD68 7F047238 4610A03E */ c.le.s $f20, $f16 -/* 07BD6C 7F04723C 46148400 */ add.s $f16, $f16, $f20 -/* 07BD70 7F047240 4610A03E */ c.le.s $f20, $f16 -.L7F047244: -/* 07BD74 7F047244 00000000 */ nop -/* 07BD78 7F047248 45000002 */ bc1f .L7F047254 -/* 07BD7C 7F04724C 00000000 */ nop -/* 07BD80 7F047250 46148401 */ sub.s $f16, $f16, $f20 -.L7F047254: -/* 07BD84 7F047254 C4202B30 */ lwc1 $f0, %lo(D_80052B30)($at) -/* 07BD88 7F047258 44058000 */ mfc1 $a1, $f16 -/* 07BD8C 7F04725C 26060094 */ addiu $a2, $s0, 0x94 -/* 07BD90 7F047260 E7A00010 */ swc1 $f0, 0x10($sp) -/* 07BD94 7F047264 C60400A4 */ lwc1 $f4, 0xa4($s0) -/* 07BD98 7F047268 44070000 */ mfc1 $a3, $f0 -/* 07BD9C 7F04726C E7B004D8 */ swc1 $f16, 0x4d8($sp) -/* 07BDA0 7F047270 0FC10C43 */ jal sub_GAME_7F04310C -/* 07BDA4 7F047274 E7A40014 */ swc1 $f4, 0x14($sp) -/* 07BDA8 7F047278 3C018005 */ lui $at, %hi(D_80052B34) -/* 07BDAC 7F04727C C4202B34 */ lwc1 $f0, %lo(D_80052B34)($at) -/* 07BDB0 7F047280 2604009C */ addiu $a0, $s0, 0x9c -/* 07BDB4 7F047284 8FA504D4 */ lw $a1, 0x4d4($sp) -/* 07BDB8 7F047288 E7A00010 */ swc1 $f0, 0x10($sp) -/* 07BDBC 7F04728C C60800A4 */ lwc1 $f8, 0xa4($s0) -/* 07BDC0 7F047290 44070000 */ mfc1 $a3, $f0 -/* 07BDC4 7F047294 260600A0 */ addiu $a2, $s0, 0xa0 -/* 07BDC8 7F047298 0FC10C43 */ jal sub_GAME_7F04310C -/* 07BDCC 7F04729C E7A80014 */ swc1 $f8, 0x14($sp) -/* 07BDD0 7F0472A0 C7B004D8 */ lwc1 $f16, 0x4d8($sp) -/* 07BDD4 7F0472A4 C60A0090 */ lwc1 $f10, 0x90($s0) -/* 07BDD8 7F0472A8 3C018005 */ lui $at, %hi(D_80052B38) -/* 07BDDC 7F0472AC C7A604D4 */ lwc1 $f6, 0x4d4($sp) -/* 07BDE0 7F0472B0 460A8301 */ sub.s $f12, $f16, $f10 -/* 07BDE4 7F0472B4 4616603C */ c.lt.s $f12, $f22 -/* 07BDE8 7F0472B8 00000000 */ nop -/* 07BDEC 7F0472BC 45000002 */ bc1f .L7F0472C8 -/* 07BDF0 7F0472C0 00000000 */ nop -/* 07BDF4 7F0472C4 46146300 */ add.s $f12, $f12, $f20 -.L7F0472C8: -/* 07BDF8 7F0472C8 C4202B38 */ lwc1 $f0, %lo(D_80052B38)($at) -/* 07BDFC 7F0472CC 460C003C */ c.lt.s $f0, $f12 -/* 07BE00 7F0472D0 00000000 */ nop -/* 07BE04 7F0472D4 45020003 */ bc1fl .L7F0472E4 -/* 07BE08 7F0472D8 C604009C */ lwc1 $f4, 0x9c($s0) -/* 07BE0C 7F0472DC 46146301 */ sub.s $f12, $f12, $f20 -/* 07BE10 7F0472E0 C604009C */ lwc1 $f4, 0x9c($s0) -.L7F0472E4: -/* 07BE14 7F0472E4 46043081 */ sub.s $f2, $f6, $f4 -/* 07BE18 7F0472E8 4616103C */ c.lt.s $f2, $f22 -/* 07BE1C 7F0472EC 00000000 */ nop -/* 07BE20 7F0472F0 45020003 */ bc1fl .L7F047300 -/* 07BE24 7F0472F4 4602003C */ c.lt.s $f0, $f2 -/* 07BE28 7F0472F8 46141080 */ add.s $f2, $f2, $f20 -/* 07BE2C 7F0472FC 4602003C */ c.lt.s $f0, $f2 -.L7F047300: -/* 07BE30 7F047300 00000000 */ nop -/* 07BE34 7F047304 45020003 */ bc1fl .L7F047314 -/* 07BE38 7F047308 AE0000D0 */ sw $zero, 0xd0($s0) -/* 07BE3C 7F04730C 46141081 */ sub.s $f2, $f2, $f20 -/* 07BE40 7F047310 AE0000D0 */ sw $zero, 0xd0($s0) -.L7F047314: -/* 07BE44 7F047314 8FB804AC */ lw $t8, 0x4ac($sp) -/* 07BE48 7F047318 C7A804A0 */ lwc1 $f8, 0x4a0($sp) -/* 07BE4C 7F04731C 53000047 */ beql $t8, $zero, .L7F04743C -/* 07BE50 7F047320 8FB904A8 */ lw $t9, 0x4a8($sp) -/* 07BE54 7F047324 4608603C */ c.lt.s $f12, $f8 -/* 07BE58 7F047328 C7AA04A0 */ lwc1 $f10, 0x4a0($sp) -/* 07BE5C 7F04732C 4502001B */ bc1fl .L7F04739C -/* 07BE60 7F047330 460A5000 */ add.s $f0, $f10, $f10 -/* 07BE64 7F047334 46004007 */ neg.s $f0, $f8 -/* 07BE68 7F047338 460C003C */ c.lt.s $f0, $f12 -/* 07BE6C 7F04733C 00000000 */ nop -/* 07BE70 7F047340 45020016 */ bc1fl .L7F04739C -/* 07BE74 7F047344 460A5000 */ add.s $f0, $f10, $f10 -/* 07BE78 7F047348 4608103C */ c.lt.s $f2, $f8 -/* 07BE7C 7F04734C 00000000 */ nop -/* 07BE80 7F047350 45020012 */ bc1fl .L7F04739C -/* 07BE84 7F047354 460A5000 */ add.s $f0, $f10, $f10 -/* 07BE88 7F047358 4602003C */ c.lt.s $f0, $f2 -/* 07BE8C 7F04735C 24080001 */ li $t0, 1 -/* 07BE90 7F047360 4502000E */ bc1fl .L7F04739C -/* 07BE94 7F047364 460A5000 */ add.s $f0, $f10, $f10 -/* 07BE98 7F047368 AE0800D0 */ sw $t0, 0xd0($s0) -/* 07BE9C 7F04736C 8FA904A4 */ lw $t1, 0x4a4($sp) -/* 07BEA0 7F047370 240B0001 */ li $t3, 1 -/* 07BEA4 7F047374 AFAB04A8 */ sw $t3, 0x4a8($sp) -/* 07BEA8 7F047378 1120002F */ beqz $t1, .L7F047438 -/* 07BEAC 7F04737C 3C198005 */ lui $t9, %hi(global_timer) -/* 07BEB0 7F047380 8F39837C */ lw $t9, %lo(global_timer)($t9) -/* 07BEB4 7F047384 3C0A8005 */ lui $t2, %hi(global_timer) -/* 07BEB8 7F047388 AE1900B8 */ sw $t9, 0xb8($s0) -/* 07BEBC 7F04738C 8D4A837C */ lw $t2, %lo(global_timer)($t2) -/* 07BEC0 7F047390 10000029 */ b .L7F047438 -/* 07BEC4 7F047394 AE0A00BC */ sw $t2, 0xbc($s0) -/* 07BEC8 7F047398 460A5000 */ add.s $f0, $f10, $f10 -.L7F04739C: -/* 07BECC 7F04739C 4600603C */ c.lt.s $f12, $f0 -/* 07BED0 7F0473A0 00000000 */ nop -/* 07BED4 7F0473A4 45020018 */ bc1fl .L7F047408 -/* 07BED8 7F0473A8 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BEDC 7F0473AC 46000387 */ neg.s $f14, $f0 -/* 07BEE0 7F0473B0 460C703C */ c.lt.s $f14, $f12 -/* 07BEE4 7F0473B4 00000000 */ nop -/* 07BEE8 7F0473B8 45020013 */ bc1fl .L7F047408 -/* 07BEEC 7F0473BC 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BEF0 7F0473C0 4600103C */ c.lt.s $f2, $f0 -/* 07BEF4 7F0473C4 00000000 */ nop -/* 07BEF8 7F0473C8 4502000F */ bc1fl .L7F047408 -/* 07BEFC 7F0473CC 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BF00 7F0473D0 4602703C */ c.lt.s $f14, $f2 -/* 07BF04 7F0473D4 240C0001 */ li $t4, 1 -/* 07BF08 7F0473D8 4502000B */ bc1fl .L7F047408 -/* 07BF0C 7F0473DC 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BF10 7F0473E0 AE0C00D0 */ sw $t4, 0xd0($s0) -/* 07BF14 7F0473E4 8FAD04A4 */ lw $t5, 0x4a4($sp) -/* 07BF18 7F0473E8 240E0001 */ li $t6, 1 -/* 07BF1C 7F0473EC AFAE04A8 */ sw $t6, 0x4a8($sp) -/* 07BF20 7F0473F0 11A00011 */ beqz $t5, .L7F047438 -/* 07BF24 7F0473F4 3C0F8005 */ lui $t7, %hi(global_timer) -/* 07BF28 7F0473F8 8DEF837C */ lw $t7, %lo(global_timer)($t7) -/* 07BF2C 7F0473FC 1000000E */ b .L7F047438 -/* 07BF30 7F047400 AE0F00B8 */ sw $t7, 0xb8($s0) -/* 07BF34 7F047404 8E0200B8 */ lw $v0, 0xb8($s0) -.L7F047408: -/* 07BF38 7F047408 3C188005 */ lui $t8, %hi(global_timer) -/* 07BF3C 7F04740C 0442000B */ bltzl $v0, .L7F04743C -/* 07BF40 7F047410 8FB904A8 */ lw $t9, 0x4a8($sp) -/* 07BF44 7F047414 8F18837C */ lw $t8, %lo(global_timer)($t8) -/* 07BF48 7F047418 240B0001 */ li $t3, 1 -/* 07BF4C 7F04741C 24090001 */ li $t1, 1 -/* 07BF50 7F047420 2708FF88 */ addiu $t0, $t8, -0x78 -/* 07BF54 7F047424 0102082A */ slt $at, $t0, $v0 -/* 07BF58 7F047428 50200004 */ beql $at, $zero, .L7F04743C -/* 07BF5C 7F04742C 8FB904A8 */ lw $t9, 0x4a8($sp) -/* 07BF60 7F047430 AE0B00D0 */ sw $t3, 0xd0($s0) -/* 07BF64 7F047434 AFA904A8 */ sw $t1, 0x4a8($sp) -.L7F047438: -/* 07BF68 7F047438 8FB904A8 */ lw $t9, 0x4a8($sp) -.L7F04743C: -/* 07BF6C 7F04743C 3C018005 */ lui $at, %hi(D_80052B3C) -/* 07BF70 7F047440 53200013 */ beql $t9, $zero, .L7F047490 -/* 07BF74 7F047444 C60200B0 */ lwc1 $f2, 0xb0($s0) -/* 07BF78 7F047448 C4202B3C */ lwc1 $f0, %lo(D_80052B3C)($at) -/* 07BF7C 7F04744C 3C018005 */ lui $at, %hi(D_80052B40) -/* 07BF80 7F047450 C4262B40 */ lwc1 $f6, %lo(D_80052B40)($at) -/* 07BF84 7F047454 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07BF88 7F047458 C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07BF8C 7F04745C C60A00B0 */ lwc1 $f10, 0xb0($s0) -/* 07BF90 7F047460 46043202 */ mul.s $f8, $f6, $f4 -/* 07BF94 7F047464 46085180 */ add.s $f6, $f10, $f8 -/* 07BF98 7F047468 E60600B0 */ swc1 $f6, 0xb0($s0) -/* 07BF9C 7F04746C C60200B0 */ lwc1 $f2, 0xb0($s0) -/* 07BFA0 7F047470 4602003C */ c.lt.s $f0, $f2 -/* 07BFA4 7F047474 00000000 */ nop -/* 07BFA8 7F047478 45020023 */ bc1fl .L7F047508 -/* 07BFAC 7F04747C 4602B03C */ c.lt.s $f22, $f2 -/* 07BFB0 7F047480 E60000B0 */ swc1 $f0, 0xb0($s0) -/* 07BFB4 7F047484 1000001F */ b .L7F047504 -/* 07BFB8 7F047488 C60200B0 */ lwc1 $f2, 0xb0($s0) -/* 07BFBC 7F04748C C60200B0 */ lwc1 $f2, 0xb0($s0) -.L7F047490: -/* 07BFC0 7F047490 3C0A8005 */ lui $t2, %hi(clock_timer) -/* 07BFC4 7F047494 4602B03C */ c.lt.s $f22, $f2 -/* 07BFC8 7F047498 00000000 */ nop -/* 07BFCC 7F04749C 4502001A */ bc1fl .L7F047508 -/* 07BFD0 7F0474A0 4602B03C */ c.lt.s $f22, $f2 -/* 07BFD4 7F0474A4 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) -/* 07BFD8 7F0474A8 00001025 */ move $v0, $zero -/* 07BFDC 7F0474AC 3C018005 */ lui $at, %hi(D_80052B44) -/* 07BFE0 7F0474B0 1940000C */ blez $t2, .L7F0474E4 -/* 07BFE4 7F0474B4 00000000 */ nop -/* 07BFE8 7F0474B8 C4202B44 */ lwc1 $f0, %lo(D_80052B44)($at) -/* 07BFEC 7F0474BC C60400B0 */ lwc1 $f4, 0xb0($s0) -.L7F0474C0: -/* 07BFF0 7F0474C0 3C0C8005 */ lui $t4, %hi(clock_timer) -/* 07BFF4 7F0474C4 24420001 */ addiu $v0, $v0, 1 -/* 07BFF8 7F0474C8 46002282 */ mul.s $f10, $f4, $f0 -/* 07BFFC 7F0474CC E60A00B0 */ swc1 $f10, 0xb0($s0) -/* 07C000 7F0474D0 8D8C8374 */ lw $t4, %lo(clock_timer)($t4) -/* 07C004 7F0474D4 004C082A */ slt $at, $v0, $t4 -/* 07C008 7F0474D8 5420FFF9 */ bnezl $at, .L7F0474C0 -/* 07C00C 7F0474DC C60400B0 */ lwc1 $f4, 0xb0($s0) -/* 07C010 7F0474E0 C60200B0 */ lwc1 $f2, 0xb0($s0) -.L7F0474E4: -/* 07C014 7F0474E4 3C018005 */ lui $at, %hi(D_80052B48) -/* 07C018 7F0474E8 C4282B48 */ lwc1 $f8, %lo(D_80052B48)($at) -/* 07C01C 7F0474EC 4608103E */ c.le.s $f2, $f8 -/* 07C020 7F0474F0 00000000 */ nop -/* 07C024 7F0474F4 45020004 */ bc1fl .L7F047508 -/* 07C028 7F0474F8 4602B03C */ c.lt.s $f22, $f2 -/* 07C02C 7F0474FC E61600B0 */ swc1 $f22, 0xb0($s0) -/* 07C030 7F047500 C60200B0 */ lwc1 $f2, 0xb0($s0) -.L7F047504: -/* 07C034 7F047504 4602B03C */ c.lt.s $f22, $f2 -.L7F047508: -/* 07C038 7F047508 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07C03C 7F04750C 45020348 */ bc1fl .L7F048230 -/* 07C040 7F047510 92220003 */ lbu $v0, 3($s1) -/* 07C044 7F047514 C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07C048 7F047518 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07C04C 7F04751C 46041282 */ mul.s $f10, $f2, $f4 -/* 07C050 7F047520 460A3200 */ add.s $f8, $f6, $f10 -/* 07C054 7F047524 E60800B4 */ swc1 $f8, 0xb4($s0) -/* 07C058 7F047528 C60000B4 */ lwc1 $f0, 0xb4($s0) -/* 07C05C 7F04752C 4600A03E */ c.le.s $f20, $f0 -/* 07C060 7F047530 00000000 */ nop -/* 07C064 7F047534 4502033E */ bc1fl .L7F048230 -/* 07C068 7F047538 92220003 */ lbu $v0, 3($s1) -/* 07C06C 7F04753C 46140101 */ sub.s $f4, $f0, $f20 -.L7F047540: -/* 07C070 7F047540 E60400B4 */ swc1 $f4, 0xb4($s0) -/* 07C074 7F047544 C60000B4 */ lwc1 $f0, 0xb4($s0) -/* 07C078 7F047548 4600A03E */ c.le.s $f20, $f0 -/* 07C07C 7F04754C 00000000 */ nop -/* 07C080 7F047550 4503FFFB */ bc1tl .L7F047540 -/* 07C084 7F047554 46140101 */ sub.s $f4, $f0, $f20 -/* 07C088 7F047558 10000335 */ b .L7F048230 -/* 07C08C 7F04755C 92220003 */ lbu $v0, 3($s1) -/* 07C090 7F047560 24010027 */ li $at, 39 -.L7F047564: -/* 07C094 7F047564 14410255 */ bne $v0, $at, .L7F047EBC -/* 07C098 7F047568 02202025 */ move $a0, $s1 -/* 07C09C 7F04756C C62600A0 */ lwc1 $f6, 0xa0($s1) -/* 07C0A0 7F047570 AFA00478 */ sw $zero, 0x478($sp) -/* 07C0A4 7F047574 24050001 */ li $a1, 1 -/* 07C0A8 7F047578 0FC0D521 */ jal parse_handle_actionblocks -/* 07C0AC 7F04757C E7A6047C */ swc1 $f6, 0x47c($sp) -/* 07C0B0 7F047580 C62E0098 */ lwc1 $f14, 0x98($s1) -/* 07C0B4 7F047584 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07C0B8 7F047588 460EB03E */ c.le.s $f22, $f14 -/* 07C0BC 7F04758C 00000000 */ nop -/* 07C0C0 7F047590 45020016 */ bc1fl .L7F0475EC -/* 07C0C4 7F047594 8E2E000C */ lw $t6, 0xc($s1) -/* 07C0C8 7F047598 C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07C0CC 7F04759C 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07C0D0 7F0475A0 4602703E */ c.le.s $f14, $f2 -/* 07C0D4 7F0475A4 00000000 */ nop -/* 07C0D8 7F0475A8 45020006 */ bc1fl .L7F0475C4 -/* 07C0DC 7F0475AC C6200088 */ lwc1 $f0, 0x88($s1) -/* 07C0E0 7F0475B0 C62A0094 */ lwc1 $f10, 0x94($s1) -/* 07C0E4 7F0475B4 C62E0098 */ lwc1 $f14, 0x98($s1) -/* 07C0E8 7F0475B8 10000008 */ b .L7F0475DC -/* 07C0EC 7F0475BC E62A0088 */ swc1 $f10, 0x88($s1) -/* 07C0F0 7F0475C0 C6200088 */ lwc1 $f0, 0x88($s1) -.L7F0475C4: -/* 07C0F4 7F0475C4 C6280094 */ lwc1 $f8, 0x94($s1) -/* 07C0F8 7F0475C8 46004101 */ sub.s $f4, $f8, $f0 -/* 07C0FC 7F0475CC 46022182 */ mul.s $f6, $f4, $f2 -/* 07C100 7F0475D0 460E3283 */ div.s $f10, $f6, $f14 -/* 07C104 7F0475D4 460A0200 */ add.s $f8, $f0, $f10 -/* 07C108 7F0475D8 E6280088 */ swc1 $f8, 0x88($s1) -.L7F0475DC: -/* 07C10C 7F0475DC C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07C110 7F0475E0 46047181 */ sub.s $f6, $f14, $f4 -/* 07C114 7F0475E4 E6260098 */ swc1 $f6, 0x98($s1) -/* 07C118 7F0475E8 8E2E000C */ lw $t6, 0xc($s1) -.L7F0475EC: -/* 07C11C 7F0475EC 00008025 */ move $s0, $zero -/* 07C120 7F0475F0 000E6B00 */ sll $t5, $t6, 0xc -/* 07C124 7F0475F4 05A00014 */ bltz $t5, .L7F047648 -/* 07C128 7F0475F8 00000000 */ nop -/* 07C12C 7F0475FC 0FC13BCD */ jal check_if_object_has_not_been_destroyed -/* 07C130 7F047600 02202025 */ move $a0, $s1 -/* 07C134 7F047604 10400010 */ beqz $v0, .L7F047648 -/* 07C138 7F047608 00000000 */ nop -/* 07C13C 7F04760C C62A0088 */ lwc1 $f10, 0x88($s1) -/* 07C140 7F047610 26240058 */ addiu $a0, $s1, 0x58 -/* 07C144 7F047614 3C0544FA */ lui $a1, 0x44fa -/* 07C148 7F047618 460AB03C */ c.lt.s $f22, $f10 -/* 07C14C 7F04761C 3C06453B */ lui $a2, (0x453B8000 >> 16) # lui $a2, 0x453b -/* 07C150 7F047620 45010006 */ bc1t .L7F04763C -/* 07C154 7F047624 00000000 */ nop -/* 07C158 7F047628 C6280094 */ lwc1 $f8, 0x94($s1) -/* 07C15C 7F04762C 4608B03C */ c.lt.s $f22, $f8 -/* 07C160 7F047630 00000000 */ nop -/* 07C164 7F047634 45000004 */ bc1f .L7F047648 -/* 07C168 7F047638 00000000 */ nop -.L7F04763C: -/* 07C16C 7F04763C 0FC14E25 */ jal sub_GAME_7F053894 -/* 07C170 7F047640 34C68000 */ ori $a2, (0x453B8000 & 0xFFFF) # ori $a2, $a2, 0x8000 -/* 07C174 7F047644 00408025 */ move $s0, $v0 -.L7F047648: -/* 07C178 7F047648 5A000019 */ blezl $s0, .L7F0476B0 -/* 07C17C 7F04764C 8E2400AC */ lw $a0, 0xac($s1) -/* 07C180 7F047650 8E2400AC */ lw $a0, 0xac($s1) -/* 07C184 7F047654 10800005 */ beqz $a0, .L7F04766C -/* 07C188 7F047658 00000000 */ nop -/* 07C18C 7F04765C 0C00237C */ jal sfxGetArg0Unk3F -/* 07C190 7F047660 00000000 */ nop -/* 07C194 7F047664 5440000A */ bnezl $v0, .L7F047690 -/* 07C198 7F047668 8E2400AC */ lw $a0, 0xac($s1) -.L7F04766C: -/* 07C19C 7F04766C 0FC2FF01 */ jal get_controls_locked_flag -/* 07C1A0 7F047670 00000000 */ nop -/* 07C1A4 7F047674 14400005 */ bnez $v0, .L7F04768C -/* 07C1A8 7F047678 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07C1AC 7F04767C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07C1B0 7F047680 24050041 */ li $a1, 65 -/* 07C1B4 7F047684 0C002382 */ jal play_sfx_a1 -/* 07C1B8 7F047688 262600AC */ addiu $a2, $s1, 0xac -.L7F04768C: -/* 07C1BC 7F04768C 8E2400AC */ lw $a0, 0xac($s1) -.L7F047690: -/* 07C1C0 7F047690 24050008 */ li $a1, 8 -/* 07C1C4 7F047694 5080000F */ beql $a0, $zero, .L7F0476D4 -/* 07C1C8 7F047698 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C1CC 7F04769C 0C002461 */ jal sfx_c_70009184 -/* 07C1D0 7F0476A0 02003025 */ move $a2, $s0 -/* 07C1D4 7F0476A4 1000000B */ b .L7F0476D4 -/* 07C1D8 7F0476A8 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C1DC 7F0476AC 8E2400AC */ lw $a0, 0xac($s1) -.L7F0476B0: -/* 07C1E0 7F0476B0 50800008 */ beql $a0, $zero, .L7F0476D4 -/* 07C1E4 7F0476B4 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C1E8 7F0476B8 0C00237C */ jal sfxGetArg0Unk3F -/* 07C1EC 7F0476BC 00000000 */ nop -/* 07C1F0 7F0476C0 50400004 */ beql $v0, $zero, .L7F0476D4 -/* 07C1F4 7F0476C4 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C1F8 7F0476C8 0C002408 */ jal sfxDeactivate -/* 07C1FC 7F0476CC 8E2400AC */ lw $a0, 0xac($s1) -/* 07C200 7F0476D0 8E2400A4 */ lw $a0, 0xa4($s1) -.L7F0476D4: -/* 07C204 7F0476D4 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) -/* 07C208 7F0476D8 5080002A */ beql $a0, $zero, .L7F047784 -/* 07C20C 7F0476DC 8E2B0008 */ lw $t3, 8($s1) -/* 07C210 7F0476E0 8E3800A8 */ lw $t8, 0xa8($s1) -/* 07C214 7F0476E4 8C8F0000 */ lw $t7, ($a0) -/* 07C218 7F0476E8 24A55D00 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d00 -/* 07C21C 7F0476EC 00184080 */ sll $t0, $t8, 2 -/* 07C220 7F0476F0 01E81021 */ addu $v0, $t7, $t0 -/* 07C224 7F0476F4 8C4B0000 */ lw $t3, ($v0) -/* 07C228 7F0476F8 8CB90000 */ lw $t9, ($a1) -/* 07C22C 7F0476FC 8CAE0018 */ lw $t6, 0x18($a1) -/* 07C230 7F047700 000B4900 */ sll $t1, $t3, 4 -/* 07C234 7F047704 01391821 */ addu $v1, $t1, $t9 -/* 07C238 7F047708 8C6A0000 */ lw $t2, ($v1) -/* 07C23C 7F04770C C6260058 */ lwc1 $f6, 0x58($s1) -/* 07C240 7F047710 C6280060 */ lwc1 $f8, 0x60($s1) -/* 07C244 7F047714 000A6080 */ sll $t4, $t2, 2 -/* 07C248 7F047718 018A6023 */ subu $t4, $t4, $t2 -/* 07C24C 7F04771C 000C6080 */ sll $t4, $t4, 2 -/* 07C250 7F047720 018A6023 */ subu $t4, $t4, $t2 -/* 07C254 7F047724 000C6080 */ sll $t4, $t4, 2 -/* 07C258 7F047728 018E3021 */ addu $a2, $t4, $t6 -/* 07C25C 7F04772C C4C40000 */ lwc1 $f4, ($a2) -/* 07C260 7F047730 C4CA0008 */ lwc1 $f10, 8($a2) -/* 07C264 7F047734 AFA60478 */ sw $a2, 0x478($sp) -/* 07C268 7F047738 46062301 */ sub.s $f12, $f4, $f6 -/* 07C26C 7F04773C 0FC16A8C */ jal convert_angle_using_inverse -/* 07C270 7F047740 46085381 */ sub.s $f14, $f10, $f8 -/* 07C274 7F047744 E7A0047C */ swc1 $f0, 0x47c($sp) -/* 07C278 7F047748 8E2D0008 */ lw $t5, 8($s1) -/* 07C27C 7F04774C 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff -/* 07C280 7F047750 C7A4047C */ lwc1 $f4, 0x47c($sp) -/* 07C284 7F047754 000DC080 */ sll $t8, $t5, 2 -/* 07C288 7F047758 07010018 */ bgez $t8, .L7F0477BC -/* 07C28C 7F04775C 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 07C290 7F047760 8E2F0008 */ lw $t7, 8($s1) -/* 07C294 7F047764 E62400A0 */ swc1 $f4, 0xa0($s1) -/* 07C298 7F047768 02202025 */ move $a0, $s1 -/* 07C29C 7F04776C 01E14024 */ and $t0, $t7, $at -/* 07C2A0 7F047770 0FC112CE */ jal sub_GAME_7F044B38 -/* 07C2A4 7F047774 AE280008 */ sw $t0, 8($s1) -/* 07C2A8 7F047778 10000011 */ b .L7F0477C0 -/* 07C2AC 7F04777C C6260088 */ lwc1 $f6, 0x88($s1) -/* 07C2B0 7F047780 8E2B0008 */ lw $t3, 8($s1) -.L7F047784: -/* 07C2B4 7F047784 000B4880 */ sll $t1, $t3, 2 -/* 07C2B8 7F047788 0523000D */ bgezl $t1, .L7F0477C0 -/* 07C2BC 7F04778C C6260088 */ lwc1 $f6, 0x88($s1) -/* 07C2C0 7F047790 C62C0038 */ lwc1 $f12, 0x38($s1) -/* 07C2C4 7F047794 0FC16A8C */ jal convert_angle_using_inverse -/* 07C2C8 7F047798 C62E0040 */ lwc1 $f14, 0x40($s1) -/* 07C2CC 7F04779C 8E390008 */ lw $t9, 8($s1) -/* 07C2D0 7F0477A0 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff -/* 07C2D4 7F0477A4 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 07C2D8 7F0477A8 03215024 */ and $t2, $t9, $at -/* 07C2DC 7F0477AC E62000A0 */ swc1 $f0, 0xa0($s1) -/* 07C2E0 7F0477B0 AE2A0008 */ sw $t2, 8($s1) -/* 07C2E4 7F0477B4 0FC112CE */ jal sub_GAME_7F044B38 -/* 07C2E8 7F0477B8 02202025 */ move $a0, $s1 -.L7F0477BC: -/* 07C2EC 7F0477BC C6260088 */ lwc1 $f6, 0x88($s1) -.L7F0477C0: -/* 07C2F0 7F0477C0 4606B03C */ c.lt.s $f22, $f6 -/* 07C2F4 7F0477C4 00000000 */ nop -/* 07C2F8 7F0477C8 450201AC */ bc1fl .L7F047E7C -/* 07C2FC 7F0477CC 8E280008 */ lw $t0, 8($s1) -/* 07C300 7F0477D0 8E6C0014 */ lw $t4, 0x14($s3) -/* 07C304 7F0477D4 8FAE0478 */ lw $t6, 0x478($sp) -/* 07C308 7F0477D8 4600B386 */ mov.s $f14, $f22 -/* 07C30C 7F0477DC AFAC0468 */ sw $t4, 0x468($sp) -/* 07C310 7F0477E0 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C314 7F0477E4 E7AC0438 */ swc1 $f12, 0x438($sp) -/* 07C318 7F0477E8 C62A009C */ lwc1 $f10, 0x9c($s1) -/* 07C31C 7F0477EC 11C00013 */ beqz $t6, .L7F04783C -/* 07C320 7F0477F0 E7AA0434 */ swc1 $f10, 0x434($sp) -/* 07C324 7F0477F4 262D0058 */ addiu $t5, $s1, 0x58 -/* 07C328 7F0477F8 AFAD0070 */ sw $t5, 0x70($sp) -/* 07C32C 7F0477FC 0FC15FAB */ jal sinf -/* 07C330 7F047800 E7AE0430 */ swc1 $f14, 0x430($sp) -/* 07C334 7F047804 E7A0043C */ swc1 $f0, 0x43c($sp) -/* 07C338 7F047808 E7B60440 */ swc1 $f22, 0x440($sp) -/* 07C33C 7F04780C 0FC15FA8 */ jal cosf -/* 07C340 7F047810 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C344 7F047814 E7A00444 */ swc1 $f0, 0x444($sp) -/* 07C348 7F047818 8FA40070 */ lw $a0, 0x70($sp) -/* 07C34C 7F04781C 27A5043C */ addiu $a1, $sp, 0x43c -/* 07C350 7F047820 8FA60478 */ lw $a2, 0x478($sp) -/* 07C354 7F047824 0FC0BF0D */ jal sub_GAME_7F02FC34 -/* 07C358 7F047828 3C074120 */ lui $a3, 0x4120 -/* 07C35C 7F04782C 10400003 */ beqz $v0, .L7F04783C -/* 07C360 7F047830 C7AE0430 */ lwc1 $f14, 0x430($sp) -/* 07C364 7F047834 C62800A0 */ lwc1 $f8, 0xa0($s1) -/* 07C368 7F047838 E7A8047C */ swc1 $f8, 0x47c($sp) -.L7F04783C: -/* 07C36C 7F04783C 3C018005 */ lui $at, %hi(D_80052B4C) -/* 07C370 7F047840 C4242B4C */ lwc1 $f4, %lo(D_80052B4C)($at) -/* 07C374 7F047844 3C018005 */ lui $at, %hi(D_80052B50) -/* 07C378 7F047848 C4262B50 */ lwc1 $f6, %lo(D_80052B50)($at) -/* 07C37C 7F04784C 3C0738E4 */ lui $a3, (0x38E4C389 >> 16) # lui $a3, 0x38e4 -/* 07C380 7F047850 34E7C389 */ ori $a3, (0x38E4C389 & 0xFFFF) # ori $a3, $a3, 0xc389 -/* 07C384 7F047854 262400A0 */ addiu $a0, $s1, 0xa0 -/* 07C388 7F047858 8FA5047C */ lw $a1, 0x47c($sp) -/* 07C38C 7F04785C 2626009C */ addiu $a2, $s1, 0x9c -/* 07C390 7F047860 E7AE0430 */ swc1 $f14, 0x430($sp) -/* 07C394 7F047864 E7A40010 */ swc1 $f4, 0x10($sp) -/* 07C398 7F047868 0FC10C43 */ jal sub_GAME_7F04310C -/* 07C39C 7F04786C E7A60014 */ swc1 $f6, 0x14($sp) -/* 07C3A0 7F047870 3C018005 */ lui $at, %hi(D_80052B54) -/* 07C3A4 7F047874 C4342B54 */ lwc1 $f20, %lo(D_80052B54)($at) -/* 07C3A8 7F047878 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C3AC 7F04787C C7AE0430 */ lwc1 $f14, 0x430($sp) -/* 07C3B0 7F047880 3C018005 */ lui $at, %hi(D_80052B58) -/* 07C3B4 7F047884 460CA03E */ c.le.s $f20, $f12 -/* 07C3B8 7F047888 00000000 */ nop -/* 07C3BC 7F04788C 45020009 */ bc1fl .L7F0478B4 -/* 07C3C0 7F047890 4616603C */ c.lt.s $f12, $f22 -/* 07C3C4 7F047894 46146281 */ sub.s $f10, $f12, $f20 -.L7F047898: -/* 07C3C8 7F047898 E62A00A0 */ swc1 $f10, 0xa0($s1) -/* 07C3CC 7F04789C C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C3D0 7F0478A0 460CA03E */ c.le.s $f20, $f12 -/* 07C3D4 7F0478A4 00000000 */ nop -/* 07C3D8 7F0478A8 4503FFFB */ bc1tl .L7F047898 -/* 07C3DC 7F0478AC 46146281 */ sub.s $f10, $f12, $f20 -/* 07C3E0 7F0478B0 4616603C */ c.lt.s $f12, $f22 -.L7F0478B4: -/* 07C3E4 7F0478B4 00000000 */ nop -/* 07C3E8 7F0478B8 45020009 */ bc1fl .L7F0478E0 -/* 07C3EC 7F0478BC C7A4047C */ lwc1 $f4, 0x47c($sp) -/* 07C3F0 7F0478C0 46146200 */ add.s $f8, $f12, $f20 -.L7F0478C4: -/* 07C3F4 7F0478C4 E62800A0 */ swc1 $f8, 0xa0($s1) -/* 07C3F8 7F0478C8 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C3FC 7F0478CC 4616603C */ c.lt.s $f12, $f22 -/* 07C400 7F0478D0 00000000 */ nop -/* 07C404 7F0478D4 4503FFFB */ bc1tl .L7F0478C4 -/* 07C408 7F0478D8 46146200 */ add.s $f8, $f12, $f20 -/* 07C40C 7F0478DC C7A4047C */ lwc1 $f4, 0x47c($sp) -.L7F0478E0: -/* 07C410 7F0478E0 460C2032 */ c.eq.s $f4, $f12 -/* 07C414 7F0478E4 00000000 */ nop -/* 07C418 7F0478E8 4502000F */ bc1fl .L7F047928 -/* 07C41C 7F0478EC 8E980008 */ lw $t8, 8($s4) -/* 07C420 7F0478F0 C620009C */ lwc1 $f0, 0x9c($s1) -/* 07C424 7F0478F4 C4262B58 */ lwc1 $f6, %lo(D_80052B58)($at) -/* 07C428 7F0478F8 3C018005 */ lui $at, %hi(D_80052B5C) -/* 07C42C 7F0478FC 4606003E */ c.le.s $f0, $f6 -/* 07C430 7F047900 00000000 */ nop -/* 07C434 7F047904 45020008 */ bc1fl .L7F047928 -/* 07C438 7F047908 8E980008 */ lw $t8, 8($s4) -/* 07C43C 7F04790C C42A2B5C */ lwc1 $f10, %lo(D_80052B5C)($at) -/* 07C440 7F047910 4600503E */ c.le.s $f10, $f0 -/* 07C444 7F047914 00000000 */ nop -/* 07C448 7F047918 45020003 */ bc1fl .L7F047928 -/* 07C44C 7F04791C 8E980008 */ lw $t8, 8($s4) -/* 07C450 7F047920 E636009C */ swc1 $f22, 0x9c($s1) -/* 07C454 7F047924 8E980008 */ lw $t8, 8($s4) -.L7F047928: -/* 07C458 7F047928 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07C45C 7F04792C C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07C460 7F047930 8F0F0008 */ lw $t7, 8($t8) -/* 07C464 7F047934 C7A40438 */ lwc1 $f4, 0x438($sp) -/* 07C468 7F047938 4602B03C */ c.lt.s $f22, $f2 -/* 07C46C 7F04793C 8DE8000C */ lw $t0, 0xc($t7) -/* 07C470 7F047940 45000004 */ bc1f .L7F047954 -/* 07C474 7F047944 8D100004 */ lw $s0, 4($t0) -/* 07C478 7F047948 C62800A0 */ lwc1 $f8, 0xa0($s1) -/* 07C47C 7F04794C 46044181 */ sub.s $f6, $f8, $f4 -/* 07C480 7F047950 46023383 */ div.s $f14, $f6, $f2 -.L7F047954: -/* 07C484 7F047954 4616703C */ c.lt.s $f14, $f22 -/* 07C488 7F047958 00000000 */ nop -/* 07C48C 7F04795C 45000002 */ bc1f .L7F047968 -/* 07C490 7F047960 00000000 */ nop -/* 07C494 7F047964 46147380 */ add.s $f14, $f14, $f20 -.L7F047968: -/* 07C498 7F047968 0FC15FAB */ jal sinf -/* 07C49C 7F04796C 46007306 */ mov.s $f12, $f14 -/* 07C4A0 7F047970 C60A0008 */ lwc1 $f10, 8($s0) -/* 07C4A4 7F047974 C6880014 */ lwc1 $f8, 0x14($s4) -/* 07C4A8 7F047978 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07C4AC 7F04797C 46085102 */ mul.s $f4, $f10, $f8 -/* 07C4B0 7F047980 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07C4B4 7F047984 46040182 */ mul.s $f6, $f0, $f4 -/* 07C4B8 7F047988 00000000 */ nop -/* 07C4BC 7F04798C 460A3202 */ mul.s $f8, $f6, $f10 -/* 07C4C0 7F047990 E7A80460 */ swc1 $f8, 0x460($sp) -/* 07C4C4 7F047994 0FC15FAB */ jal sinf -/* 07C4C8 7F047998 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C4CC 7F04799C E7A0043C */ swc1 $f0, 0x43c($sp) -/* 07C4D0 7F0479A0 E7B60440 */ swc1 $f22, 0x440($sp) -/* 07C4D4 7F0479A4 0FC15FA8 */ jal cosf -/* 07C4D8 7F0479A8 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C4DC 7F0479AC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07C4E0 7F0479B0 44817000 */ mtc1 $at, $f14 -/* 07C4E4 7F0479B4 E7A00444 */ swc1 $f0, 0x444($sp) -/* 07C4E8 7F0479B8 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07C4EC 7F0479BC C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07C4F0 7F0479C0 C6240088 */ lwc1 $f4, 0x88($s1) -/* 07C4F4 7F0479C4 C7AA043C */ lwc1 $f10, 0x43c($sp) -/* 07C4F8 7F0479C8 C7AC0460 */ lwc1 $f12, 0x460($sp) -/* 07C4FC 7F0479CC 46022182 */ mul.s $f6, $f4, $f2 -/* 07C500 7F0479D0 C6240058 */ lwc1 $f4, 0x58($s1) -/* 07C504 7F0479D4 27B00468 */ addiu $s0, $sp, 0x468 -/* 07C508 7F0479D8 240B001F */ li $t3, 31 -/* 07C50C 7F0479DC 02002025 */ move $a0, $s0 -/* 07C510 7F0479E0 460A3202 */ mul.s $f8, $f6, $f10 -/* 07C514 7F0479E4 46082180 */ add.s $f6, $f4, $f8 -/* 07C518 7F0479E8 C7A40444 */ lwc1 $f4, 0x444($sp) -/* 07C51C 7F0479EC 460C2202 */ mul.s $f8, $f4, $f12 -/* 07C520 7F0479F0 46083181 */ sub.s $f6, $f6, $f8 -/* 07C524 7F0479F4 E7A60694 */ swc1 $f6, 0x694($sp) -/* 07C528 7F0479F8 C628005C */ lwc1 $f8, 0x5c($s1) -/* 07C52C 7F0479FC 44073000 */ mfc1 $a3, $f6 -/* 07C530 7F047A00 E7A80698 */ swc1 $f8, 0x698($sp) -/* 07C534 7F047A04 C6280088 */ lwc1 $f8, 0x88($s1) -/* 07C538 7F047A08 46024202 */ mul.s $f8, $f8, $f2 -/* 07C53C 7F047A0C 00000000 */ nop -/* 07C540 7F047A10 46044202 */ mul.s $f8, $f8, $f4 -/* 07C544 7F047A14 C6240060 */ lwc1 $f4, 0x60($s1) -/* 07C548 7F047A18 46082100 */ add.s $f4, $f4, $f8 -/* 07C54C 7F047A1C 460C5202 */ mul.s $f8, $f10, $f12 -/* 07C550 7F047A20 46044280 */ add.s $f10, $f8, $f4 -/* 07C554 7F047A24 E7AA069C */ swc1 $f10, 0x69c($sp) -/* 07C558 7F047A28 8E660010 */ lw $a2, 0x10($s3) -/* 07C55C 7F047A2C 8E650008 */ lw $a1, 8($s3) -/* 07C560 7F047A30 E7B60020 */ swc1 $f22, 0x20($sp) -/* 07C564 7F047A34 E7B60018 */ swc1 $f22, 0x18($sp) -/* 07C568 7F047A38 AFAB0014 */ sw $t3, 0x14($sp) -/* 07C56C 7F047A3C E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07C570 7F047A40 E7AE0024 */ swc1 $f14, 0x24($sp) -/* 07C574 7F047A44 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 07C578 7F047A48 E7AE001C */ swc1 $f14, 0x1c($sp) -/* 07C57C 7F047A4C 104000FA */ beqz $v0, .L7F047E38 -/* 07C580 7F047A50 02002025 */ move $a0, $s0 -/* 07C584 7F047A54 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07C588 7F047A58 44814000 */ mtc1 $at, $f8 -/* 07C58C 7F047A5C 2409001F */ li $t1, 31 -/* 07C590 7F047A60 AFA90010 */ sw $t1, 0x10($sp) -/* 07C594 7F047A64 8FA50694 */ lw $a1, 0x694($sp) -/* 07C598 7F047A68 8FA6069C */ lw $a2, 0x69c($sp) -/* 07C59C 7F047A6C 3C074120 */ lui $a3, 0x4120 -/* 07C5A0 7F047A70 E7B60014 */ swc1 $f22, 0x14($sp) -/* 07C5A4 7F047A74 0FC2C62E */ jal sub_GAME_7F0B18B8 -/* 07C5A8 7F047A78 E7A80018 */ swc1 $f8, 0x18($sp) -/* 07C5AC 7F047A7C 044300EF */ bgezl $v0, .L7F047E3C -/* 07C5B0 7F047A80 C6260098 */ lwc1 $f6, 0x98($s1) -/* 07C5B4 7F047A84 8E790014 */ lw $t9, 0x14($s3) -/* 07C5B8 7F047A88 8FAA0468 */ lw $t2, 0x468($sp) -/* 07C5BC 7F047A8C 02202025 */ move $a0, $s1 -/* 07C5C0 7F047A90 AFB9044C */ sw $t9, 0x44c($sp) -/* 07C5C4 7F047A94 C6640008 */ lwc1 $f4, 8($s3) -/* 07C5C8 7F047A98 E7A40450 */ swc1 $f4, 0x450($sp) -/* 07C5CC 7F047A9C C666000C */ lwc1 $f6, 0xc($s3) -/* 07C5D0 7F047AA0 E7A60454 */ swc1 $f6, 0x454($sp) -/* 07C5D4 7F047AA4 C66A0010 */ lwc1 $f10, 0x10($s3) -/* 07C5D8 7F047AA8 E7AA0458 */ swc1 $f10, 0x458($sp) -/* 07C5DC 7F047AAC AE6A0014 */ sw $t2, 0x14($s3) -/* 07C5E0 7F047AB0 C7A20694 */ lwc1 $f2, 0x694($sp) -/* 07C5E4 7F047AB4 E6620008 */ swc1 $f2, 8($s3) -/* 07C5E8 7F047AB8 E6220058 */ swc1 $f2, 0x58($s1) -/* 07C5EC 7F047ABC C7A2069C */ lwc1 $f2, 0x69c($sp) -/* 07C5F0 7F047AC0 E6620010 */ swc1 $f2, 0x10($s3) -/* 07C5F4 7F047AC4 0FC10121 */ jal sub_GAME_7F040484 -/* 07C5F8 7F047AC8 E6220060 */ swc1 $f2, 0x60($s1) -/* 07C5FC 7F047ACC 0FC15B28 */ jal sub_GAME_7F056CA0 -/* 07C600 7F047AD0 02202025 */ move $a0, $s1 -/* 07C604 7F047AD4 0FC1122A */ jal sub_GAME_7F0448A8 -/* 07C608 7F047AD8 02602025 */ move $a0, $s3 -/* 07C60C 7F047ADC 10400092 */ beqz $v0, .L7F047D28 -/* 07C610 7F047AE0 00409025 */ move $s2, $v0 -/* 07C614 7F047AE4 8E8C0008 */ lw $t4, 8($s4) -/* 07C618 7F047AE8 C6280018 */ lwc1 $f8, 0x18($s1) -/* 07C61C 7F047AEC 02002025 */ move $a0, $s0 -/* 07C620 7F047AF0 8D8E0008 */ lw $t6, 8($t4) -/* 07C624 7F047AF4 8DCD0028 */ lw $t5, 0x28($t6) -/* 07C628 7F047AF8 8DA20004 */ lw $v0, 4($t5) -/* 07C62C 7F047AFC C4440004 */ lwc1 $f4, 4($v0) -/* 07C630 7F047B00 46044182 */ mul.s $f6, $f8, $f4 -/* 07C634 7F047B04 E7A60424 */ swc1 $f6, 0x424($sp) -/* 07C638 7F047B08 C62A0020 */ lwc1 $f10, 0x20($s1) -/* 07C63C 7F047B0C C4480004 */ lwc1 $f8, 4($v0) -/* 07C640 7F047B10 46085102 */ mul.s $f4, $f10, $f8 -/* 07C644 7F047B14 E7A4042C */ swc1 $f4, 0x42c($sp) -/* 07C648 7F047B18 C6260018 */ lwc1 $f6, 0x18($s1) -/* 07C64C 7F047B1C C44A0008 */ lwc1 $f10, 8($v0) -/* 07C650 7F047B20 460A3202 */ mul.s $f8, $f6, $f10 -/* 07C654 7F047B24 E7A80418 */ swc1 $f8, 0x418($sp) -/* 07C658 7F047B28 C6240020 */ lwc1 $f4, 0x20($s1) -/* 07C65C 7F047B2C C4460008 */ lwc1 $f6, 8($v0) -/* 07C660 7F047B30 46062282 */ mul.s $f10, $f4, $f6 -/* 07C664 7F047B34 E7AA0420 */ swc1 $f10, 0x420($sp) -/* 07C668 7F047B38 C6280038 */ lwc1 $f8, 0x38($s1) -/* 07C66C 7F047B3C C4440014 */ lwc1 $f4, 0x14($v0) -/* 07C670 7F047B40 46044182 */ mul.s $f6, $f8, $f4 -/* 07C674 7F047B44 E7A6040C */ swc1 $f6, 0x40c($sp) -/* 07C678 7F047B48 C62A0040 */ lwc1 $f10, 0x40($s1) -/* 07C67C 7F047B4C C4480014 */ lwc1 $f8, 0x14($v0) -/* 07C680 7F047B50 46085102 */ mul.s $f4, $f10, $f8 -/* 07C684 7F047B54 E7A40414 */ swc1 $f4, 0x414($sp) -/* 07C688 7F047B58 C6260038 */ lwc1 $f6, 0x38($s1) -/* 07C68C 7F047B5C C44A0018 */ lwc1 $f10, 0x18($v0) -/* 07C690 7F047B60 460A3202 */ mul.s $f8, $f6, $f10 -/* 07C694 7F047B64 E7A80400 */ swc1 $f8, 0x400($sp) -/* 07C698 7F047B68 C6240040 */ lwc1 $f4, 0x40($s1) -/* 07C69C 7F047B6C C4460018 */ lwc1 $f6, 0x18($v0) -/* 07C6A0 7F047B70 C7A8040C */ lwc1 $f8, 0x40c($sp) -/* 07C6A4 7F047B74 46062282 */ mul.s $f10, $f4, $f6 -/* 07C6A8 7F047B78 C7A40424 */ lwc1 $f4, 0x424($sp) -/* 07C6AC 7F047B7C E7AA0408 */ swc1 $f10, 0x408($sp) -/* 07C6B0 7F047B80 8E780014 */ lw $t8, 0x14($s3) -/* 07C6B4 7F047B84 AFB80468 */ sw $t8, 0x468($sp) -/* 07C6B8 7F047B88 C6600008 */ lwc1 $f0, 8($s3) -/* 07C6BC 7F047B8C C6620010 */ lwc1 $f2, 0x10($s3) -/* 07C6C0 7F047B90 46040180 */ add.s $f6, $f0, $f4 -/* 07C6C4 7F047B94 C7A40414 */ lwc1 $f4, 0x414($sp) -/* 07C6C8 7F047B98 44050000 */ mfc1 $a1, $f0 -/* 07C6CC 7F047B9C 44061000 */ mfc1 $a2, $f2 -/* 07C6D0 7F047BA0 46064280 */ add.s $f10, $f8, $f6 -/* 07C6D4 7F047BA4 C7A8042C */ lwc1 $f8, 0x42c($sp) -/* 07C6D8 7F047BA8 46081180 */ add.s $f6, $f2, $f8 -/* 07C6DC 7F047BAC 44075000 */ mfc1 $a3, $f10 -/* 07C6E0 7F047BB0 46062280 */ add.s $f10, $f4, $f6 -/* 07C6E4 7F047BB4 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 07C6E8 7F047BB8 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07C6EC 7F047BBC 10400059 */ beqz $v0, .L7F047D24 -/* 07C6F0 7F047BC0 C7A40424 */ lwc1 $f4, 0x424($sp) -/* 07C6F4 7F047BC4 C6600008 */ lwc1 $f0, 8($s3) -/* 07C6F8 7F047BC8 C7A8040C */ lwc1 $f8, 0x40c($sp) -/* 07C6FC 7F047BCC C6620010 */ lwc1 $f2, 0x10($s3) -/* 07C700 7F047BD0 46040180 */ add.s $f6, $f0, $f4 -/* 07C704 7F047BD4 C7A40414 */ lwc1 $f4, 0x414($sp) -/* 07C708 7F047BD8 02002025 */ move $a0, $s0 -/* 07C70C 7F047BDC 46064280 */ add.s $f10, $f8, $f6 -/* 07C710 7F047BE0 C7A6042C */ lwc1 $f6, 0x42c($sp) -/* 07C714 7F047BE4 44055000 */ mfc1 $a1, $f10 -/* 07C718 7F047BE8 46061280 */ add.s $f10, $f2, $f6 -/* 07C71C 7F047BEC 460A2180 */ add.s $f6, $f4, $f10 -/* 07C720 7F047BF0 C7AA0418 */ lwc1 $f10, 0x418($sp) -/* 07C724 7F047BF4 44063000 */ mfc1 $a2, $f6 -/* 07C728 7F047BF8 460A0180 */ add.s $f6, $f0, $f10 -/* 07C72C 7F047BFC 46064280 */ add.s $f10, $f8, $f6 -/* 07C730 7F047C00 C7A80420 */ lwc1 $f8, 0x420($sp) -/* 07C734 7F047C04 46081180 */ add.s $f6, $f2, $f8 -/* 07C738 7F047C08 44075000 */ mfc1 $a3, $f10 -/* 07C73C 7F047C0C 46062280 */ add.s $f10, $f4, $f6 -/* 07C740 7F047C10 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 07C744 7F047C14 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07C748 7F047C18 10400042 */ beqz $v0, .L7F047D24 -/* 07C74C 7F047C1C C7A40418 */ lwc1 $f4, 0x418($sp) -/* 07C750 7F047C20 C6680008 */ lwc1 $f8, 8($s3) -/* 07C754 7F047C24 C7A6040C */ lwc1 $f6, 0x40c($sp) -/* 07C758 7F047C28 02002025 */ move $a0, $s0 -/* 07C75C 7F047C2C 46044000 */ add.s $f0, $f8, $f4 -/* 07C760 7F047C30 C7A40420 */ lwc1 $f4, 0x420($sp) -/* 07C764 7F047C34 C6680010 */ lwc1 $f8, 0x10($s3) -/* 07C768 7F047C38 46003280 */ add.s $f10, $f6, $f0 -/* 07C76C 7F047C3C C7A60414 */ lwc1 $f6, 0x414($sp) -/* 07C770 7F047C40 46044080 */ add.s $f2, $f8, $f4 -/* 07C774 7F047C44 44055000 */ mfc1 $a1, $f10 -/* 07C778 7F047C48 C7A80400 */ lwc1 $f8, 0x400($sp) -/* 07C77C 7F047C4C 46023280 */ add.s $f10, $f6, $f2 -/* 07C780 7F047C50 C7A60408 */ lwc1 $f6, 0x408($sp) -/* 07C784 7F047C54 46004100 */ add.s $f4, $f8, $f0 -/* 07C788 7F047C58 44065000 */ mfc1 $a2, $f10 -/* 07C78C 7F047C5C 46023280 */ add.s $f10, $f6, $f2 -/* 07C790 7F047C60 44072000 */ mfc1 $a3, $f4 -/* 07C794 7F047C64 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 07C798 7F047C68 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07C79C 7F047C6C 1040002D */ beqz $v0, .L7F047D24 -/* 07C7A0 7F047C70 C7A40418 */ lwc1 $f4, 0x418($sp) -/* 07C7A4 7F047C74 C6600008 */ lwc1 $f0, 8($s3) -/* 07C7A8 7F047C78 C7A80400 */ lwc1 $f8, 0x400($sp) -/* 07C7AC 7F047C7C C6620010 */ lwc1 $f2, 0x10($s3) -/* 07C7B0 7F047C80 46040180 */ add.s $f6, $f0, $f4 -/* 07C7B4 7F047C84 C7A40408 */ lwc1 $f4, 0x408($sp) -/* 07C7B8 7F047C88 02002025 */ move $a0, $s0 -/* 07C7BC 7F047C8C 46064280 */ add.s $f10, $f8, $f6 -/* 07C7C0 7F047C90 C7A60420 */ lwc1 $f6, 0x420($sp) -/* 07C7C4 7F047C94 44055000 */ mfc1 $a1, $f10 -/* 07C7C8 7F047C98 46061280 */ add.s $f10, $f2, $f6 -/* 07C7CC 7F047C9C 460A2180 */ add.s $f6, $f4, $f10 -/* 07C7D0 7F047CA0 C7AA0424 */ lwc1 $f10, 0x424($sp) -/* 07C7D4 7F047CA4 44063000 */ mfc1 $a2, $f6 -/* 07C7D8 7F047CA8 460A0180 */ add.s $f6, $f0, $f10 -/* 07C7DC 7F047CAC 46064280 */ add.s $f10, $f8, $f6 -/* 07C7E0 7F047CB0 C7A8042C */ lwc1 $f8, 0x42c($sp) -/* 07C7E4 7F047CB4 46081180 */ add.s $f6, $f2, $f8 -/* 07C7E8 7F047CB8 44075000 */ mfc1 $a3, $f10 -/* 07C7EC 7F047CBC 46062280 */ add.s $f10, $f4, $f6 -/* 07C7F0 7F047CC0 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 07C7F4 7F047CC4 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07C7F8 7F047CC8 10400016 */ beqz $v0, .L7F047D24 -/* 07C7FC 7F047CCC C7A40424 */ lwc1 $f4, 0x424($sp) -/* 07C800 7F047CD0 C6680008 */ lwc1 $f8, 8($s3) -/* 07C804 7F047CD4 C7A60400 */ lwc1 $f6, 0x400($sp) -/* 07C808 7F047CD8 02002025 */ move $a0, $s0 -/* 07C80C 7F047CDC 46044000 */ add.s $f0, $f8, $f4 -/* 07C810 7F047CE0 C7A4042C */ lwc1 $f4, 0x42c($sp) -/* 07C814 7F047CE4 C6680010 */ lwc1 $f8, 0x10($s3) -/* 07C818 7F047CE8 46003280 */ add.s $f10, $f6, $f0 -/* 07C81C 7F047CEC C7A60408 */ lwc1 $f6, 0x408($sp) -/* 07C820 7F047CF0 46044080 */ add.s $f2, $f8, $f4 -/* 07C824 7F047CF4 44055000 */ mfc1 $a1, $f10 -/* 07C828 7F047CF8 C7A8040C */ lwc1 $f8, 0x40c($sp) -/* 07C82C 7F047CFC 46023280 */ add.s $f10, $f6, $f2 -/* 07C830 7F047D00 C7A60414 */ lwc1 $f6, 0x414($sp) -/* 07C834 7F047D04 46004100 */ add.s $f4, $f8, $f0 -/* 07C838 7F047D08 44065000 */ mfc1 $a2, $f10 -/* 07C83C 7F047D0C 46023280 */ add.s $f10, $f6, $f2 -/* 07C840 7F047D10 44072000 */ mfc1 $a3, $f4 -/* 07C844 7F047D14 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 07C848 7F047D18 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07C84C 7F047D1C 14400002 */ bnez $v0, .L7F047D28 -/* 07C850 7F047D20 00000000 */ nop -.L7F047D24: -/* 07C854 7F047D24 00009025 */ move $s2, $zero -.L7F047D28: -/* 07C858 7F047D28 12400023 */ beqz $s2, .L7F047DB8 -/* 07C85C 7F047D2C 02202025 */ move $a0, $s1 -/* 07C860 7F047D30 262F0058 */ addiu $t7, $s1, 0x58 -/* 07C864 7F047D34 AFAF0070 */ sw $t7, 0x70($sp) -/* 07C868 7F047D38 0FC112CE */ jal sub_GAME_7F044B38 -/* 07C86C 7F047D3C 2630007C */ addiu $s0, $s1, 0x7c -/* 07C870 7F047D40 02602025 */ move $a0, $s3 -/* 07C874 7F047D44 0FC100AD */ jal sub_GAME_7F0402B4 -/* 07C878 7F047D48 02002825 */ move $a1, $s0 -/* 07C87C 7F047D4C 0FC146F3 */ jal detonate_proxmine_In_range -/* 07C880 7F047D50 8FA40070 */ lw $a0, 0x70($sp) -/* 07C884 7F047D54 8FA80478 */ lw $t0, 0x478($sp) -/* 07C888 7F047D58 27A40450 */ addiu $a0, $sp, 0x450 -/* 07C88C 7F047D5C 27A50694 */ addiu $a1, $sp, 0x694 -/* 07C890 7F047D60 11000054 */ beqz $t0, .L7F047EB4 -/* 07C894 7F047D64 01003025 */ move $a2, $t0 -/* 07C898 7F047D68 0FC0BF54 */ jal sub_GAME_7F02FD50 -/* 07C89C 7F047D6C 3C0742C8 */ lui $a3, 0x42c8 -/* 07C8A0 7F047D70 10400050 */ beqz $v0, .L7F047EB4 -/* 07C8A4 7F047D74 00000000 */ nop -/* 07C8A8 7F047D78 8E2B00A8 */ lw $t3, 0xa8($s1) -/* 07C8AC 7F047D7C 8E3900A4 */ lw $t9, 0xa4($s1) -/* 07C8B0 7F047D80 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 07C8B4 7F047D84 25690001 */ addiu $t1, $t3, 1 -/* 07C8B8 7F047D88 AE2900A8 */ sw $t1, 0xa8($s1) -/* 07C8BC 7F047D8C 8F2A0000 */ lw $t2, ($t9) -/* 07C8C0 7F047D90 00097080 */ sll $t6, $t1, 2 -/* 07C8C4 7F047D94 014E6821 */ addu $t5, $t2, $t6 -/* 07C8C8 7F047D98 8DB80000 */ lw $t8, ($t5) -/* 07C8CC 7F047D9C 07010045 */ bgez $t8, .L7F047EB4 -/* 07C8D0 7F047DA0 00000000 */ nop -/* 07C8D4 7F047DA4 44814000 */ mtc1 $at, $f8 -/* 07C8D8 7F047DA8 AE2000A4 */ sw $zero, 0xa4($s1) -/* 07C8DC 7F047DAC E6360094 */ swc1 $f22, 0x94($s1) -/* 07C8E0 7F047DB0 10000040 */ b .L7F047EB4 -/* 07C8E4 7F047DB4 E6280098 */ swc1 $f8, 0x98($s1) -.L7F047DB8: -/* 07C8E8 7F047DB8 C6240098 */ lwc1 $f4, 0x98($s1) -/* 07C8EC 7F047DBC 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 07C8F0 7F047DC0 4616203C */ c.lt.s $f4, $f22 -/* 07C8F4 7F047DC4 00000000 */ nop -/* 07C8F8 7F047DC8 45020006 */ bc1fl .L7F047DE4 -/* 07C8FC 7F047DCC E6360088 */ swc1 $f22, 0x88($s1) -/* 07C900 7F047DD0 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07C904 7F047DD4 44815000 */ mtc1 $at, $f10 -/* 07C908 7F047DD8 E6260094 */ swc1 $f6, 0x94($s1) -/* 07C90C 7F047DDC E62A0098 */ swc1 $f10, 0x98($s1) -/* 07C910 7F047DE0 E6360088 */ swc1 $f22, 0x88($s1) -.L7F047DE4: -/* 07C914 7F047DE4 C7A80438 */ lwc1 $f8, 0x438($sp) -/* 07C918 7F047DE8 02202025 */ move $a0, $s1 -/* 07C91C 7F047DEC E62800A0 */ swc1 $f8, 0xa0($s1) -/* 07C920 7F047DF0 C7A40434 */ lwc1 $f4, 0x434($sp) -/* 07C924 7F047DF4 E624009C */ swc1 $f4, 0x9c($s1) -/* 07C928 7F047DF8 8FAF044C */ lw $t7, 0x44c($sp) -/* 07C92C 7F047DFC AE6F0014 */ sw $t7, 0x14($s3) -/* 07C930 7F047E00 C7A20450 */ lwc1 $f2, 0x450($sp) -/* 07C934 7F047E04 E6620008 */ swc1 $f2, 8($s3) -/* 07C938 7F047E08 E6220058 */ swc1 $f2, 0x58($s1) -/* 07C93C 7F047E0C C7A20454 */ lwc1 $f2, 0x454($sp) -/* 07C940 7F047E10 E662000C */ swc1 $f2, 0xc($s3) -/* 07C944 7F047E14 E622005C */ swc1 $f2, 0x5c($s1) -/* 07C948 7F047E18 C7A20458 */ lwc1 $f2, 0x458($sp) -/* 07C94C 7F047E1C E6620010 */ swc1 $f2, 0x10($s3) -/* 07C950 7F047E20 0FC10121 */ jal sub_GAME_7F040484 -/* 07C954 7F047E24 E6220060 */ swc1 $f2, 0x60($s1) -/* 07C958 7F047E28 0FC15B28 */ jal sub_GAME_7F056CA0 -/* 07C95C 7F047E2C 02202025 */ move $a0, $s1 -/* 07C960 7F047E30 10000020 */ b .L7F047EB4 -/* 07C964 7F047E34 00000000 */ nop -.L7F047E38: -/* 07C968 7F047E38 C6260098 */ lwc1 $f6, 0x98($s1) -.L7F047E3C: -/* 07C96C 7F047E3C 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 07C970 7F047E40 4616303C */ c.lt.s $f6, $f22 -/* 07C974 7F047E44 00000000 */ nop -/* 07C978 7F047E48 45020006 */ bc1fl .L7F047E64 -/* 07C97C 7F047E4C E6360088 */ swc1 $f22, 0x88($s1) -/* 07C980 7F047E50 C62A0088 */ lwc1 $f10, 0x88($s1) -/* 07C984 7F047E54 44814000 */ mtc1 $at, $f8 -/* 07C988 7F047E58 E62A0094 */ swc1 $f10, 0x94($s1) -/* 07C98C 7F047E5C E6280098 */ swc1 $f8, 0x98($s1) -/* 07C990 7F047E60 E6360088 */ swc1 $f22, 0x88($s1) -.L7F047E64: -/* 07C994 7F047E64 C7A40438 */ lwc1 $f4, 0x438($sp) -/* 07C998 7F047E68 E62400A0 */ swc1 $f4, 0xa0($s1) -/* 07C99C 7F047E6C C7A60434 */ lwc1 $f6, 0x434($sp) -/* 07C9A0 7F047E70 10000010 */ b .L7F047EB4 -/* 07C9A4 7F047E74 E626009C */ swc1 $f6, 0x9c($s1) -/* 07C9A8 7F047E78 8E280008 */ lw $t0, 8($s1) -.L7F047E7C: -/* 07C9AC 7F047E7C 00085880 */ sll $t3, $t0, 2 -/* 07C9B0 7F047E80 0561000C */ bgez $t3, .L7F047EB4 -/* 07C9B4 7F047E84 00000000 */ nop -/* 07C9B8 7F047E88 C62C0038 */ lwc1 $f12, 0x38($s1) -/* 07C9BC 7F047E8C 0FC16A8C */ jal convert_angle_using_inverse -/* 07C9C0 7F047E90 C62E0040 */ lwc1 $f14, 0x40($s1) -/* 07C9C4 7F047E94 8E290008 */ lw $t1, 8($s1) -/* 07C9C8 7F047E98 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff -/* 07C9CC 7F047E9C 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 07C9D0 7F047EA0 0121C824 */ and $t9, $t1, $at -/* 07C9D4 7F047EA4 E62000A0 */ swc1 $f0, 0xa0($s1) -/* 07C9D8 7F047EA8 AE390008 */ sw $t9, 8($s1) -/* 07C9DC 7F047EAC 0FC112CE */ jal sub_GAME_7F044B38 -/* 07C9E0 7F047EB0 02202025 */ move $a0, $s1 -.L7F047EB4: -/* 07C9E4 7F047EB4 100000DE */ b .L7F048230 -/* 07C9E8 7F047EB8 92220003 */ lbu $v0, 3($s1) -.L7F047EBC: -/* 07C9EC 7F047EBC 24010028 */ li $at, 40 -/* 07C9F0 7F047EC0 144100DA */ bne $v0, $at, .L7F04822C -/* 07C9F4 7F047EC4 02202025 */ move $a0, $s1 -/* 07C9F8 7F047EC8 0FC0D521 */ jal parse_handle_actionblocks -/* 07C9FC 7F047ECC 24050001 */ li $a1, 1 -/* 07CA00 7F047ED0 8E300014 */ lw $s0, 0x14($s1) -/* 07CA04 7F047ED4 26250058 */ addiu $a1, $s1, 0x58 -/* 07CA08 7F047ED8 8E0C0020 */ lw $t4, 0x20($s0) -/* 07CA0C 7F047EDC 02002025 */ move $a0, $s0 -/* 07CA10 7F047EE0 51800065 */ beql $t4, $zero, .L7F048078 -/* 07CA14 7F047EE4 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07CA18 7F047EE8 0FC1B303 */ jal setsuboffset -/* 07CA1C 7F047EEC AFA50070 */ sw $a1, 0x70($sp) -/* 07CA20 7F047EF0 8E300014 */ lw $s0, 0x14($s1) -/* 07CA24 7F047EF4 3C0E8003 */ lui $t6, %hi(animation_table_ptrs2+4) -/* 07CA28 7F047EF8 8DCEA050 */ lw $t6, %lo(animation_table_ptrs2+4)($t6) -/* 07CA2C 7F047EFC 8E0A0020 */ lw $t2, 0x20($s0) -/* 07CA30 7F047F00 3C054127 */ lui $a1, (0x4127020C >> 16) # lui $a1, 0x4127 -/* 07CA34 7F047F04 02002025 */ move $a0, $s0 -/* 07CA38 7F047F08 154E0009 */ bne $t2, $t6, .L7F047F30 -/* 07CA3C 7F047F0C 00000000 */ nop -/* 07CA40 7F047F10 0FC1B3A1 */ jal sub_GAME_7F06CE84 -/* 07CA44 7F047F14 34A5020C */ ori $a1, (0x4127020C & 0xFFFF) # ori $a1, $a1, 0x20c -/* 07CA48 7F047F18 3C054049 */ lui $a1, (0x40490FDB >> 16) # lui $a1, 0x4049 -/* 07CA4C 7F047F1C 34A50FDB */ ori $a1, (0x40490FDB & 0xFFFF) # ori $a1, $a1, 0xfdb -/* 07CA50 7F047F20 0FC1B34F */ jal setsubroty -/* 07CA54 7F047F24 8E240014 */ lw $a0, 0x14($s1) -/* 07CA58 7F047F28 10000024 */ b .L7F047FBC -/* 07CA5C 7F047F2C 00000000 */ nop -.L7F047F30: -/* 07CA60 7F047F30 0C001A57 */ jal get_stage_num -/* 07CA64 7F047F34 00000000 */ nop -/* 07CA68 7F047F38 24010016 */ li $at, 22 -/* 07CA6C 7F047F3C 1441000A */ bne $v0, $at, .L7F047F68 -/* 07CA70 7F047F40 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 -/* 07CA74 7F047F44 8E240014 */ lw $a0, 0x14($s1) -/* 07CA78 7F047F48 0FC1B3A1 */ jal sub_GAME_7F06CE84 -/* 07CA7C 7F047F4C 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d -/* 07CA80 7F047F50 3C054016 */ lui $a1, (0x4016CBE4 >> 16) # lui $a1, 0x4016 -/* 07CA84 7F047F54 34A5CBE4 */ ori $a1, (0x4016CBE4 & 0xFFFF) # ori $a1, $a1, 0xcbe4 -/* 07CA88 7F047F58 0FC1B34F */ jal setsubroty -/* 07CA8C 7F047F5C 8E240014 */ lw $a0, 0x14($s1) -/* 07CA90 7F047F60 10000016 */ b .L7F047FBC -/* 07CA94 7F047F64 00000000 */ nop -.L7F047F68: -/* 07CA98 7F047F68 0C001A57 */ jal get_stage_num -/* 07CA9C 7F047F6C 00000000 */ nop -/* 07CAA0 7F047F70 2401001A */ li $at, 26 -/* 07CAA4 7F047F74 1441000B */ bne $v0, $at, .L7F047FA4 -/* 07CAA8 7F047F78 3C053F85 */ lui $a1, 0x3f85 -/* 07CAAC 7F047F7C 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 -/* 07CAB0 7F047F80 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d -/* 07CAB4 7F047F84 0FC1B3A1 */ jal sub_GAME_7F06CE84 -/* 07CAB8 7F047F88 8E240014 */ lw $a0, 0x14($s1) -/* 07CABC 7F047F8C 3C05407B */ lui $a1, (0x407B9B3D >> 16) # lui $a1, 0x407b -/* 07CAC0 7F047F90 34A553D1 */ ori $a1, (0x407B53D1 & 0xFFFF) # ori $a1, $a1, 0x53d1 -/* 07CAC4 7F047F94 0FC1B34F */ jal setsubroty -/* 07CAC8 7F047F98 8E240014 */ lw $a0, 0x14($s1) -/* 07CACC 7F047F9C 10000007 */ b .L7F047FBC -/* 07CAD0 7F047FA0 00000000 */ nop -.L7F047FA4: -/* 07CAD4 7F047FA4 8E240014 */ lw $a0, 0x14($s1) -/* 07CAD8 7F047FA8 0FC1B3A1 */ jal sub_GAME_7F06CE84 -/* 07CADC 7F047FAC 34A59B3D */ ori $a1, (0x407B9B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d -/* 07CAE0 7F047FB0 4405B000 */ mfc1 $a1, $f22 -/* 07CAE4 7F047FB4 0FC1B34F */ jal setsubroty -/* 07CAE8 7F047FB8 8E240014 */ lw $a0, 0x14($s1) -.L7F047FBC: -/* 07CAEC 7F047FBC 3C058005 */ lui $a1, %hi(clock_timer) -/* 07CAF0 7F047FC0 8CA58374 */ lw $a1, %lo(clock_timer)($a1) -/* 07CAF4 7F047FC4 8E240014 */ lw $a0, 0x14($s1) -/* 07CAF8 7F047FC8 0FC1C2BB */ jal sub_GAME_7F070AEC -/* 07CAFC 7F047FCC 24060001 */ li $a2, 1 -/* 07CB00 7F047FD0 0FC1B5AC */ jal subcalcpos -/* 07CB04 7F047FD4 8E240014 */ lw $a0, 0x14($s1) -/* 07CB08 7F047FD8 8E240014 */ lw $a0, 0x14($s1) -/* 07CB0C 7F047FDC 0FC1B2E6 */ jal getsuboffset -/* 07CB10 7F047FE0 8FA50070 */ lw $a1, 0x70($sp) -/* 07CB14 7F047FE4 C62A0058 */ lwc1 $f10, 0x58($s1) -/* 07CB18 7F047FE8 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) -/* 07CB1C 7F047FEC 24A55D00 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d00 -/* 07CB20 7F047FF0 E66A0008 */ swc1 $f10, 8($s3) -/* 07CB24 7F047FF4 C6280060 */ lwc1 $f8, 0x60($s1) -/* 07CB28 7F047FF8 E6680010 */ swc1 $f8, 0x10($s3) -/* 07CB2C 7F047FFC 86220006 */ lh $v0, 6($s1) -/* 07CB30 7F048000 28412710 */ slti $at, $v0, 0x2710 -/* 07CB34 7F048004 1020000B */ beqz $at, .L7F048034 -/* 07CB38 7F048008 00027900 */ sll $t7, $v0, 4 -/* 07CB3C 7F04800C 00026880 */ sll $t5, $v0, 2 -/* 07CB40 7F048010 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) -/* 07CB44 7F048014 01A26823 */ subu $t5, $t5, $v0 -/* 07CB48 7F048018 24A55D00 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d00 -/* 07CB4C 7F04801C 000D6880 */ sll $t5, $t5, 2 -/* 07CB50 7F048020 8CB80018 */ lw $t8, 0x18($a1) -/* 07CB54 7F048024 01A26823 */ subu $t5, $t5, $v0 -/* 07CB58 7F048028 000D6880 */ sll $t5, $t5, 2 -/* 07CB5C 7F04802C 10000008 */ b .L7F048050 -/* 07CB60 7F048030 01B81821 */ addu $v1, $t5, $t8 -.L7F048034: -/* 07CB64 7F048034 8CA8001C */ lw $t0, 0x1c($a1) -/* 07CB68 7F048038 01E27821 */ addu $t7, $t7, $v0 -/* 07CB6C 7F04803C 000F7880 */ sll $t7, $t7, 2 -/* 07CB70 7F048040 3C01FFF5 */ lui $at, (0xFFF59FC0 >> 16) # lui $at, 0xfff5 -/* 07CB74 7F048044 34219FC0 */ ori $at, (0xFFF59FC0 & 0xFFFF) # ori $at, $at, 0x9fc0 -/* 07CB78 7F048048 01E81821 */ addu $v1, $t7, $t0 -/* 07CB7C 7F04804C 00611821 */ addu $v1, $v1, $at -.L7F048050: -/* 07CB80 7F048050 C624005C */ lwc1 $f4, 0x5c($s1) -/* 07CB84 7F048054 C4660004 */ lwc1 $f6, 4($v1) -/* 07CB88 7F048058 46062280 */ add.s $f10, $f4, $f6 -/* 07CB8C 7F04805C E66A000C */ swc1 $f10, 0xc($s3) -/* 07CB90 7F048060 C668000C */ lwc1 $f8, 0xc($s3) -/* 07CB94 7F048064 8E240014 */ lw $a0, 0x14($s1) -/* 07CB98 7F048068 E628005C */ swc1 $f8, 0x5c($s1) -/* 07CB9C 7F04806C 0FC1B303 */ jal setsuboffset -/* 07CBA0 7F048070 8FA50070 */ lw $a1, 0x70($sp) -/* 07CBA4 7F048074 C62C00A0 */ lwc1 $f12, 0xa0($s1) -.L7F048078: -/* 07CBA8 7F048078 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07CBAC 7F04807C 460CB03E */ c.le.s $f22, $f12 -/* 07CBB0 7F048080 00000000 */ nop -/* 07CBB4 7F048084 45020016 */ bc1fl .L7F0480E0 -/* 07CBB8 7F048088 C6200094 */ lwc1 $f0, 0x94($s1) -/* 07CBBC 7F04808C C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07CBC0 7F048090 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07CBC4 7F048094 4602603E */ c.le.s $f12, $f2 -/* 07CBC8 7F048098 00000000 */ nop -/* 07CBCC 7F04809C 45020006 */ bc1fl .L7F0480B8 -/* 07CBD0 7F0480A0 C62E0098 */ lwc1 $f14, 0x98($s1) -/* 07CBD4 7F0480A4 C624009C */ lwc1 $f4, 0x9c($s1) -/* 07CBD8 7F0480A8 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07CBDC 7F0480AC 10000008 */ b .L7F0480D0 -/* 07CBE0 7F0480B0 E6240098 */ swc1 $f4, 0x98($s1) -/* 07CBE4 7F0480B4 C62E0098 */ lwc1 $f14, 0x98($s1) -.L7F0480B8: -/* 07CBE8 7F0480B8 C626009C */ lwc1 $f6, 0x9c($s1) -/* 07CBEC 7F0480BC 460E3281 */ sub.s $f10, $f6, $f14 -/* 07CBF0 7F0480C0 46025202 */ mul.s $f8, $f10, $f2 -/* 07CBF4 7F0480C4 460C4103 */ div.s $f4, $f8, $f12 -/* 07CBF8 7F0480C8 46047180 */ add.s $f6, $f14, $f4 -/* 07CBFC 7F0480CC E6260098 */ swc1 $f6, 0x98($s1) -.L7F0480D0: -/* 07CC00 7F0480D0 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07CC04 7F0480D4 460A6201 */ sub.s $f8, $f12, $f10 -/* 07CC08 7F0480D8 E62800A0 */ swc1 $f8, 0xa0($s1) -/* 07CC0C 7F0480DC C6200094 */ lwc1 $f0, 0x94($s1) -.L7F0480E0: -/* 07CC10 7F0480E0 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07CC14 7F0480E4 4600B03E */ c.le.s $f22, $f0 -/* 07CC18 7F0480E8 00000000 */ nop -/* 07CC1C 7F0480EC 45020016 */ bc1fl .L7F048148 -/* 07CC20 7F0480F0 8E2B000C */ lw $t3, 0xc($s1) -/* 07CC24 7F0480F4 C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07CC28 7F0480F8 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07CC2C 7F0480FC 4602003E */ c.le.s $f0, $f2 -/* 07CC30 7F048100 00000000 */ nop -/* 07CC34 7F048104 45020006 */ bc1fl .L7F048120 -/* 07CC38 7F048108 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07CC3C 7F04810C C6240090 */ lwc1 $f4, 0x90($s1) -/* 07CC40 7F048110 C6200094 */ lwc1 $f0, 0x94($s1) -/* 07CC44 7F048114 10000008 */ b .L7F048138 -/* 07CC48 7F048118 E624008C */ swc1 $f4, 0x8c($s1) -/* 07CC4C 7F04811C C62C008C */ lwc1 $f12, 0x8c($s1) -.L7F048120: -/* 07CC50 7F048120 C6260090 */ lwc1 $f6, 0x90($s1) -/* 07CC54 7F048124 460C3281 */ sub.s $f10, $f6, $f12 -/* 07CC58 7F048128 46025202 */ mul.s $f8, $f10, $f2 -/* 07CC5C 7F04812C 46004103 */ div.s $f4, $f8, $f0 -/* 07CC60 7F048130 46046180 */ add.s $f6, $f12, $f4 -/* 07CC64 7F048134 E626008C */ swc1 $f6, 0x8c($s1) -.L7F048138: -/* 07CC68 7F048138 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07CC6C 7F04813C 460A0201 */ sub.s $f8, $f0, $f10 -/* 07CC70 7F048140 E6280094 */ swc1 $f8, 0x94($s1) -/* 07CC74 7F048144 8E2B000C */ lw $t3, 0xc($s1) -.L7F048148: -/* 07CC78 7F048148 00008025 */ move $s0, $zero -/* 07CC7C 7F04814C 000B4B00 */ sll $t1, $t3, 0xc -/* 07CC80 7F048150 05200014 */ bltz $t1, .L7F0481A4 -/* 07CC84 7F048154 00000000 */ nop -/* 07CC88 7F048158 0FC13BCD */ jal check_if_object_has_not_been_destroyed -/* 07CC8C 7F04815C 02202025 */ move $a0, $s1 -/* 07CC90 7F048160 10400010 */ beqz $v0, .L7F0481A4 -/* 07CC94 7F048164 00000000 */ nop -/* 07CC98 7F048168 C624008C */ lwc1 $f4, 0x8c($s1) -/* 07CC9C 7F04816C 4604B032 */ c.eq.s $f22, $f4 -/* 07CCA0 7F048170 00000000 */ nop -/* 07CCA4 7F048174 4501000B */ bc1t .L7F0481A4 -/* 07CCA8 7F048178 00000000 */ nop -/* 07CCAC 7F04817C 8E390008 */ lw $t9, 8($s1) -/* 07CCB0 7F048180 3C05459C */ lui $a1, (0x459C4000 >> 16) # lui $a1, 0x459c -/* 07CCB4 7F048184 34A54000 */ ori $a1, (0x459C4000 & 0xFFFF) # ori $a1, $a1, 0x4000 -/* 07CCB8 7F048188 00196080 */ sll $t4, $t9, 2 -/* 07CCBC 7F04818C 05800005 */ bltz $t4, .L7F0481A4 -/* 07CCC0 7F048190 26240058 */ addiu $a0, $s1, 0x58 -/* 07CCC4 7F048194 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb -/* 07CCC8 7F048198 0FC14E25 */ jal sub_GAME_7F053894 -/* 07CCCC 7F04819C 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 -/* 07CCD0 7F0481A0 00408025 */ move $s0, $v0 -.L7F0481A4: -/* 07CCD4 7F0481A4 5A000019 */ blezl $s0, .L7F04820C -/* 07CCD8 7F0481A8 8E2400B0 */ lw $a0, 0xb0($s1) -/* 07CCDC 7F0481AC 8E2400B0 */ lw $a0, 0xb0($s1) -/* 07CCE0 7F0481B0 10800005 */ beqz $a0, .L7F0481C8 -/* 07CCE4 7F0481B4 00000000 */ nop -/* 07CCE8 7F0481B8 0C00237C */ jal sfxGetArg0Unk3F -/* 07CCEC 7F0481BC 00000000 */ nop -/* 07CCF0 7F0481C0 5440000A */ bnezl $v0, .L7F0481EC -/* 07CCF4 7F0481C4 8E2400B0 */ lw $a0, 0xb0($s1) -.L7F0481C8: -/* 07CCF8 7F0481C8 0FC2FF01 */ jal get_controls_locked_flag -/* 07CCFC 7F0481CC 00000000 */ nop -/* 07CD00 7F0481D0 14400005 */ bnez $v0, .L7F0481E8 -/* 07CD04 7F0481D4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07CD08 7F0481D8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07CD0C 7F0481DC 2405003A */ li $a1, 58 -/* 07CD10 7F0481E0 0C002382 */ jal play_sfx_a1 -/* 07CD14 7F0481E4 262600B0 */ addiu $a2, $s1, 0xb0 -.L7F0481E8: -/* 07CD18 7F0481E8 8E2400B0 */ lw $a0, 0xb0($s1) -.L7F0481EC: -/* 07CD1C 7F0481EC 24050008 */ li $a1, 8 -/* 07CD20 7F0481F0 5080000F */ beql $a0, $zero, .L7F048230 -/* 07CD24 7F0481F4 92220003 */ lbu $v0, 3($s1) -/* 07CD28 7F0481F8 0C002461 */ jal sfx_c_70009184 -/* 07CD2C 7F0481FC 02003025 */ move $a2, $s0 -/* 07CD30 7F048200 1000000B */ b .L7F048230 -/* 07CD34 7F048204 92220003 */ lbu $v0, 3($s1) -/* 07CD38 7F048208 8E2400B0 */ lw $a0, 0xb0($s1) -.L7F04820C: -/* 07CD3C 7F04820C 50800008 */ beql $a0, $zero, .L7F048230 -/* 07CD40 7F048210 92220003 */ lbu $v0, 3($s1) -/* 07CD44 7F048214 0C00237C */ jal sfxGetArg0Unk3F -/* 07CD48 7F048218 00000000 */ nop -/* 07CD4C 7F04821C 50400004 */ beql $v0, $zero, .L7F048230 -/* 07CD50 7F048220 92220003 */ lbu $v0, 3($s1) -/* 07CD54 7F048224 0C002408 */ jal sfxDeactivate -/* 07CD58 7F048228 8E2400B0 */ lw $a0, 0xb0($s1) -.L7F04822C: -/* 07CD5C 7F04822C 92220003 */ lbu $v0, 3($s1) -.L7F048230: -/* 07CD60 7F048230 3C018005 */ lui $at, %hi(D_80052B64) -/* 07CD64 7F048234 C4342B64 */ lwc1 $f20, %lo(D_80052B64)($at) -/* 07CD68 7F048238 2401002F */ li $at, 47 -/* 07CD6C 7F04823C 54410020 */ bnel $v0, $at, .L7F0482C0 -/* 07CD70 7F048240 24010001 */ li $at, 1 -/* 07CD74 7F048244 8E700004 */ lw $s0, 4($s3) -/* 07CD78 7F048248 26240058 */ addiu $a0, $s1, 0x58 -/* 07CD7C 7F04824C 8E0A0080 */ lw $t2, 0x80($s0) -/* 07CD80 7F048250 8E0E0084 */ lw $t6, 0x84($s0) -/* 07CD84 7F048254 8E070090 */ lw $a3, 0x90($s0) -/* 07CD88 7F048258 448A3000 */ mtc1 $t2, $f6 -/* 07CD8C 7F04825C 448E5000 */ mtc1 $t6, $f10 -/* 07CD90 7F048260 468031A0 */ cvt.s.w $f6, $f6 -/* 07CD94 7F048264 468052A0 */ cvt.s.w $f10, $f10 -/* 07CD98 7F048268 44053000 */ mfc1 $a1, $f6 -/* 07CD9C 7F04826C 44065000 */ mfc1 $a2, $f10 -/* 07CDA0 7F048270 0FC11477 */ jal sub_GAME_7F0451DC -/* 07CDA4 7F048274 00000000 */ nop -/* 07CDA8 7F048278 8E04008C */ lw $a0, 0x8c($s0) -/* 07CDAC 7F04827C AE020088 */ sw $v0, 0x88($s0) -/* 07CDB0 7F048280 8FAD0674 */ lw $t5, 0x674($sp) -/* 07CDB4 7F048284 0480000B */ bltz $a0, .L7F0482B4 -/* 07CDB8 7F048288 24010001 */ li $at, 1 -/* 07CDBC 7F04828C 15A10009 */ bne $t5, $at, .L7F0482B4 -/* 07CDC0 7F048290 240100FF */ li $at, 255 -/* 07CDC4 7F048294 14410005 */ bne $v0, $at, .L7F0482AC -/* 07CDC8 7F048298 00000000 */ nop -/* 07CDCC 7F04829C 0FC2E76F */ jal sub_GAME_7F0B9DBC -/* 07CDD0 7F0482A0 00002825 */ move $a1, $zero -/* 07CDD4 7F0482A4 10000003 */ b .L7F0482B4 -/* 07CDD8 7F0482A8 00000000 */ nop -.L7F0482AC: -/* 07CDDC 7F0482AC 0FC2E76F */ jal sub_GAME_7F0B9DBC -/* 07CDE0 7F0482B0 24050001 */ li $a1, 1 -.L7F0482B4: -/* 07CDE4 7F0482B4 1000003B */ b .L7F0483A4 -/* 07CDE8 7F0482B8 AFA00670 */ sw $zero, 0x670($sp) -/* 07CDEC 7F0482BC 24010001 */ li $at, 1 -.L7F0482C0: -/* 07CDF0 7F0482C0 54410039 */ bnel $v0, $at, .L7F0483A8 -/* 07CDF4 7F0482C4 922F0003 */ lbu $t7, 3($s1) -/* 07CDF8 7F0482C8 962F0098 */ lhu $t7, 0x98($s1) -/* 07CDFC 7F0482CC 31E80002 */ andi $t0, $t7, 2 -/* 07CE00 7F0482D0 51000035 */ beql $t0, $zero, .L7F0483A8 -/* 07CE04 7F0482D4 922F0003 */ lbu $t7, 3($s1) -/* 07CE08 7F0482D8 8E700004 */ lw $s0, 4($s3) -/* 07CE0C 7F0482DC 4407B000 */ mfc1 $a3, $f22 -/* 07CE10 7F0482E0 24120001 */ li $s2, 1 -/* 07CE14 7F0482E4 8E0B00C0 */ lw $t3, 0xc0($s0) -/* 07CE18 7F0482E8 8E0900C4 */ lw $t1, 0xc4($s0) -/* 07CE1C 7F0482EC 26240058 */ addiu $a0, $s1, 0x58 -/* 07CE20 7F0482F0 448B4000 */ mtc1 $t3, $f8 -/* 07CE24 7F0482F4 44892000 */ mtc1 $t1, $f4 -/* 07CE28 7F0482F8 46804220 */ cvt.s.w $f8, $f8 -/* 07CE2C 7F0482FC 46802120 */ cvt.s.w $f4, $f4 -/* 07CE30 7F048300 44054000 */ mfc1 $a1, $f8 -/* 07CE34 7F048304 44062000 */ mfc1 $a2, $f4 -/* 07CE38 7F048308 0FC11477 */ jal sub_GAME_7F0451DC -/* 07CE3C 7F04830C 00000000 */ nop -/* 07CE40 7F048310 A60200BE */ sh $v0, 0xbe($s0) -/* 07CE44 7F048314 8FB90674 */ lw $t9, 0x674($sp) -/* 07CE48 7F048318 24010001 */ li $at, 1 -/* 07CE4C 7F04831C 57210022 */ bnel $t9, $at, .L7F0483A8 -/* 07CE50 7F048320 922F0003 */ lbu $t7, 3($s1) -/* 07CE54 7F048324 860C00BE */ lh $t4, 0xbe($s0) -/* 07CE58 7F048328 240100FF */ li $at, 255 -/* 07CE5C 7F04832C 55810007 */ bnel $t4, $at, .L7F04834C -/* 07CE60 7F048330 00009025 */ move $s2, $zero -/* 07CE64 7F048334 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07CE68 7F048338 4606B03C */ c.lt.s $f22, $f6 -/* 07CE6C 7F04833C 00000000 */ nop -/* 07CE70 7F048340 45020003 */ bc1fl .L7F048350 -/* 07CE74 7F048344 8E820008 */ lw $v0, 8($s4) -/* 07CE78 7F048348 00009025 */ move $s2, $zero -.L7F04834C: -/* 07CE7C 7F04834C 8E820008 */ lw $v0, 8($s4) -.L7F048350: -/* 07CE80 7F048350 3C0A8004 */ lui $t2, %hi(prop_door_related) -/* 07CE84 7F048354 254AA1DC */ addiu $t2, %lo(prop_door_related) # addiu $t2, $t2, -0x5e24 -/* 07CE88 7F048358 8C4E0004 */ lw $t6, 4($v0) -/* 07CE8C 7F04835C 154E0009 */ bne $t2, $t6, .L7F048384 -/* 07CE90 7F048360 00000000 */ nop -/* 07CE94 7F048364 8C4D0008 */ lw $t5, 8($v0) -/* 07CE98 7F048368 02802025 */ move $a0, $s4 -/* 07CE9C 7F04836C 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 07CEA0 7F048370 8DA50004 */ lw $a1, 4($t5) -/* 07CEA4 7F048374 8C580000 */ lw $t8, ($v0) -/* 07CEA8 7F048378 17000002 */ bnez $t8, .L7F048384 -/* 07CEAC 7F04837C 00000000 */ nop -/* 07CEB0 7F048380 00009025 */ move $s2, $zero -.L7F048384: -/* 07CEB4 7F048384 12400005 */ beqz $s2, .L7F04839C -/* 07CEB8 7F048388 00000000 */ nop -/* 07CEBC 7F04838C 0FC14D71 */ jal sub_GAME_7F0535C4 -/* 07CEC0 7F048390 02002025 */ move $a0, $s0 -/* 07CEC4 7F048394 10000004 */ b .L7F0483A8 -/* 07CEC8 7F048398 922F0003 */ lbu $t7, 3($s1) -.L7F04839C: -/* 07CECC 7F04839C 0FC14D66 */ jal sub_GAME_7F053598 -/* 07CED0 7F0483A0 02002025 */ move $a0, $s0 -.L7F0483A4: -/* 07CED4 7F0483A4 922F0003 */ lbu $t7, 3($s1) -.L7F0483A8: -/* 07CED8 7F0483A8 2410002D */ li $s0, 45 -/* 07CEDC 7F0483AC 560F0008 */ bnel $s0, $t7, .L7F0483D0 -/* 07CEE0 7F0483B0 8E23000C */ lw $v1, 0xc($s1) -/* 07CEE4 7F0483B4 0FC1F3A1 */ jal get_ptr_for_players_tank -/* 07CEE8 7F0483B8 00000000 */ nop -/* 07CEEC 7F0483BC 54530004 */ bnel $v0, $s3, .L7F0483D0 -/* 07CEF0 7F0483C0 8E23000C */ lw $v1, 0xc($s1) -/* 07CEF4 7F0483C4 10000019 */ b .L7F04842C -/* 07CEF8 7F0483C8 24030001 */ li $v1, 1 -/* 07CEFC 7F0483CC 8E23000C */ lw $v1, 0xc($s1) -.L7F0483D0: -/* 07CF00 7F0483D0 00034140 */ sll $t0, $v1, 5 -/* 07CF04 7F0483D4 05030004 */ bgezl $t0, .L7F0483E8 -/* 07CF08 7F0483D8 8E2B0064 */ lw $t3, 0x64($s1) -/* 07CF0C 7F0483DC 10000013 */ b .L7F04842C -/* 07CF10 7F0483E0 24030001 */ li $v1, 1 -/* 07CF14 7F0483E4 8E2B0064 */ lw $t3, 0x64($s1) -.L7F0483E8: -/* 07CF18 7F0483E8 0003CB00 */ sll $t9, $v1, 0xc -/* 07CF1C 7F0483EC 00001825 */ move $v1, $zero -/* 07CF20 7F0483F0 31690800 */ andi $t1, $t3, 0x800 -/* 07CF24 7F0483F4 1520000D */ bnez $t1, .L7F04842C -/* 07CF28 7F0483F8 00000000 */ nop -/* 07CF2C 7F0483FC 0720000B */ bltz $t9, .L7F04842C -/* 07CF30 7F048400 02802025 */ move $a0, $s4 -/* 07CF34 7F048404 262C0058 */ addiu $t4, $s1, 0x58 -/* 07CF38 7F048408 0FC1B403 */ jal getinstsize -/* 07CF3C 7F04840C AFAC0070 */ sw $t4, 0x70($sp) -/* 07CF40 7F048410 44060000 */ mfc1 $a2, $f0 -/* 07CF44 7F048414 02602025 */ move $a0, $s3 -/* 07CF48 7F048418 8FA50070 */ lw $a1, 0x70($sp) -/* 07CF4C 7F04841C 0FC1535B */ jal sub_GAME_7F054D6C -/* 07CF50 7F048420 8FA70670 */ lw $a3, 0x670($sp) -/* 07CF54 7F048424 10000001 */ b .L7F04842C -/* 07CF58 7F048428 00401825 */ move $v1, $v0 -.L7F04842C: -/* 07CF5C 7F04842C 1060037A */ beqz $v1, .L7F049218 -/* 07CF60 7F048430 8FAA0678 */ lw $t2, 0x678($sp) -/* 07CF64 7F048434 11400003 */ beqz $t2, .L7F048444 -/* 07CF68 7F048438 26240078 */ addiu $a0, $s1, 0x78 -/* 07CF6C 7F04843C 0FC100C4 */ jal update_color_shading -/* 07CF70 7F048440 2625007C */ addiu $a1, $s1, 0x7c -.L7F048444: -/* 07CF74 7F048444 926E0001 */ lbu $t6, 1($s3) -/* 07CF78 7F048448 35CD0002 */ ori $t5, $t6, 2 -/* 07CF7C 7F04844C A26D0001 */ sb $t5, 1($s3) -/* 07CF80 7F048450 8E980008 */ lw $t8, 8($s4) -/* 07CF84 7F048454 8704000E */ lh $a0, 0xe($t8) -/* 07CF88 7F048458 00047980 */ sll $t7, $a0, 6 -/* 07CF8C 7F04845C 0FC2F5C5 */ jal sub_GAME_7F0BD714 -/* 07CF90 7F048460 01E02025 */ move $a0, $t7 -/* 07CF94 7F048464 AE82000C */ sw $v0, 0xc($s4) -/* 07CF98 7F048468 92280003 */ lbu $t0, 3($s1) -/* 07CF9C 7F04846C 24010001 */ li $at, 1 -/* 07CFA0 7F048470 00409025 */ move $s2, $v0 -/* 07CFA4 7F048474 150100AD */ bne $t0, $at, .L7F04872C -/* 07CFA8 7F048478 26240018 */ addiu $a0, $s1, 0x18 -/* 07CFAC 7F04847C 8E640004 */ lw $a0, 4($s3) -/* 07CFB0 7F048480 00402825 */ move $a1, $v0 -/* 07CFB4 7F048484 0FC149BB */ jal sub_GAME_7F0526EC -/* 07CFB8 7F048488 AFA4039C */ sw $a0, 0x39c($sp) -/* 07CFBC 7F04848C 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 07CFC0 7F048490 00000000 */ nop -/* 07CFC4 7F048494 00402025 */ move $a0, $v0 -/* 07CFC8 7F048498 0FC16026 */ jal sub_GAME_7F058098 -/* 07CFCC 7F04849C 02402825 */ move $a1, $s2 -/* 07CFD0 7F0484A0 8E820008 */ lw $v0, 8($s4) -/* 07CFD4 7F0484A4 3C0B8004 */ lui $t3, %hi(prop_eyelid_door_related) -/* 07CFD8 7F0484A8 256BA100 */ addiu $t3, %lo(prop_eyelid_door_related) # addiu $t3, $t3, -0x5f00 -/* 07CFDC 7F0484AC 8C430004 */ lw $v1, 4($v0) -/* 07CFE0 7F0484B0 3C0D8004 */ lui $t5, %hi(prop_iris_door_related) -/* 07CFE4 7F0484B4 8FA6039C */ lw $a2, 0x39c($sp) -/* 07CFE8 7F0484B8 15630025 */ bne $t3, $v1, .L7F048550 -/* 07CFEC 7F0484BC 25ADA15C */ addiu $t5, %lo(prop_iris_door_related) # addiu $t5, $t5, -0x5ea4 -/* 07CFF0 7F0484C0 C4CA00B4 */ lwc1 $f10, 0xb4($a2) -/* 07CFF4 7F0484C4 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07CFF8 7F0484C8 44812000 */ mtc1 $at, $f4 -/* 07CFFC 7F0484CC 46145202 */ mul.s $f8, $f10, $f20 -/* 07D000 7F0484D0 8C490008 */ lw $t1, 8($v0) -/* 07D004 7F0484D4 26450040 */ addiu $a1, $s2, 0x40 -/* 07D008 7F0484D8 8D390004 */ lw $t9, 4($t1) -/* 07D00C 7F0484DC 46044183 */ div.s $f6, $f8, $f4 -/* 07D010 7F0484E0 8F300004 */ lw $s0, 4($t9) -/* 07D014 7F0484E4 AFA5006C */ sw $a1, 0x6c($sp) -/* 07D018 7F0484E8 4606A301 */ sub.s $f12, $f20, $f6 -/* 07D01C 7F0484EC 0FC1615C */ jal sub_GAME_7F058570 -/* 07D020 7F0484F0 E7AC0394 */ swc1 $f12, 0x394($sp) -/* 07D024 7F0484F4 02002025 */ move $a0, $s0 -/* 07D028 7F0484F8 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D02C 7F0484FC 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D030 7F048500 02402025 */ move $a0, $s2 -/* 07D034 7F048504 0FC1601A */ jal sub_GAME_7F058068 -/* 07D038 7F048508 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D03C 7F04850C 8E8C0008 */ lw $t4, 8($s4) -/* 07D040 7F048510 C7AA0394 */ lwc1 $f10, 0x394($sp) -/* 07D044 7F048514 26450080 */ addiu $a1, $s2, 0x80 -/* 07D048 7F048518 8D8A0008 */ lw $t2, 8($t4) -/* 07D04C 7F04851C 460AA301 */ sub.s $f12, $f20, $f10 -/* 07D050 7F048520 8D4E0008 */ lw $t6, 8($t2) -/* 07D054 7F048524 8DD00004 */ lw $s0, 4($t6) -/* 07D058 7F048528 0FC1615C */ jal sub_GAME_7F058570 -/* 07D05C 7F04852C AFA50068 */ sw $a1, 0x68($sp) -/* 07D060 7F048530 02002025 */ move $a0, $s0 -/* 07D064 7F048534 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D068 7F048538 8FA50068 */ lw $a1, 0x68($sp) -/* 07D06C 7F04853C 02402025 */ move $a0, $s2 -/* 07D070 7F048540 0FC1601A */ jal sub_GAME_7F058068 -/* 07D074 7F048544 8FA50068 */ lw $a1, 0x68($sp) -/* 07D078 7F048548 1000031F */ b .L7F0491C8 -/* 07D07C 7F04854C 8E8F0008 */ lw $t7, 8($s4) -.L7F048550: -/* 07D080 7F048550 55A3031D */ bnel $t5, $v1, .L7F0491C8 -/* 07D084 7F048554 8E8F0008 */ lw $t7, 8($s4) -/* 07D088 7F048558 C4C200B4 */ lwc1 $f2, 0xb4($a2) -/* 07D08C 7F04855C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07D090 7F048560 44812000 */ mtc1 $at, $f4 -/* 07D094 7F048564 46141202 */ mul.s $f8, $f2, $f20 -/* 07D098 7F048568 3C018005 */ lui $at, %hi(D_80052B68) -/* 07D09C 7F04856C C42A2B68 */ lwc1 $f10, %lo(D_80052B68)($at) -/* 07D0A0 7F048570 4600B386 */ mov.s $f14, $f22 -/* 07D0A4 7F048574 46044183 */ div.s $f6, $f8, $f4 -/* 07D0A8 7F048578 E7A60384 */ swc1 $f6, 0x384($sp) -/* 07D0AC 7F04857C C4CC0084 */ lwc1 $f12, 0x84($a2) -/* 07D0B0 7F048580 460A6002 */ mul.s $f0, $f12, $f10 -/* 07D0B4 7F048584 4602003C */ c.lt.s $f0, $f2 -/* 07D0B8 7F048588 00000000 */ nop -/* 07D0BC 7F04858C 4502001F */ bc1fl .L7F04860C -/* 07D0C0 7F048590 8FA80678 */ lw $t0, 0x678($sp) -/* 07D0C4 7F048594 46001201 */ sub.s $f8, $f2, $f0 -/* 07D0C8 7F048598 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07D0CC 7F04859C 8FB80678 */ lw $t8, 0x678($sp) -/* 07D0D0 7F0485A0 46006181 */ sub.s $f6, $f12, $f0 -/* 07D0D4 7F0485A4 46086102 */ mul.s $f4, $f12, $f8 -/* 07D0D8 7F0485A8 46062283 */ div.s $f10, $f4, $f6 -/* 07D0DC 7F0485AC 44812000 */ mtc1 $at, $f4 -/* 07D0E0 7F0485B0 46145202 */ mul.s $f8, $f10, $f20 -/* 07D0E4 7F0485B4 46044383 */ div.s $f14, $f8, $f4 -/* 07D0E8 7F0485B8 13000011 */ beqz $t8, .L7F048600 -/* 07D0EC 7F0485BC E7AE0380 */ swc1 $f14, 0x380($sp) -/* 07D0F0 7F0485C0 C7A6067C */ lwc1 $f6, 0x67c($sp) -/* 07D0F4 7F0485C4 E7AE0380 */ swc1 $f14, 0x380($sp) -/* 07D0F8 7F0485C8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07D0FC 7F0485CC 4600303E */ c.le.s $f6, $f0 -/* 07D100 7F0485D0 240500CA */ li $a1, 202 -/* 07D104 7F0485D4 00003025 */ move $a2, $zero -/* 07D108 7F0485D8 266F0008 */ addiu $t7, $s3, 8 -/* 07D10C 7F0485DC 45000008 */ bc1f .L7F048600 -/* 07D110 7F0485E0 00000000 */ nop -/* 07D114 7F0485E4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07D118 7F0485E8 AFAF0070 */ sw $t7, 0x70($sp) -/* 07D11C 7F0485EC 0C002382 */ jal play_sfx_a1 -/* 07D120 7F0485F0 E7AE0380 */ swc1 $f14, 0x380($sp) -/* 07D124 7F0485F4 00402025 */ move $a0, $v0 -/* 07D128 7F0485F8 0FC14E84 */ jal sub_GAME_7F053A10 -/* 07D12C 7F0485FC 8FA50070 */ lw $a1, 0x70($sp) -.L7F048600: -/* 07D130 7F048600 10000016 */ b .L7F04865C -/* 07D134 7F048604 AFA0038C */ sw $zero, 0x38c($sp) -/* 07D138 7F048608 8FA80678 */ lw $t0, 0x678($sp) -.L7F04860C: -/* 07D13C 7F04860C E7AE0380 */ swc1 $f14, 0x380($sp) -/* 07D140 7F048610 51000012 */ beql $t0, $zero, .L7F04865C -/* 07D144 7F048614 AFA0038C */ sw $zero, 0x38c($sp) -/* 07D148 7F048618 C7AA067C */ lwc1 $f10, 0x67c($sp) -/* 07D14C 7F04861C E7AE0380 */ swc1 $f14, 0x380($sp) -/* 07D150 7F048620 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07D154 7F048624 460A003C */ c.lt.s $f0, $f10 -/* 07D158 7F048628 240500CB */ li $a1, 203 -/* 07D15C 7F04862C 00003025 */ move $a2, $zero -/* 07D160 7F048630 266B0008 */ addiu $t3, $s3, 8 -/* 07D164 7F048634 45020009 */ bc1fl .L7F04865C -/* 07D168 7F048638 AFA0038C */ sw $zero, 0x38c($sp) -/* 07D16C 7F04863C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07D170 7F048640 AFAB0070 */ sw $t3, 0x70($sp) -/* 07D174 7F048644 0C002382 */ jal play_sfx_a1 -/* 07D178 7F048648 E7AE0380 */ swc1 $f14, 0x380($sp) -/* 07D17C 7F04864C 00402025 */ move $a0, $v0 -/* 07D180 7F048650 0FC14E84 */ jal sub_GAME_7F053A10 -/* 07D184 7F048654 8FA50070 */ lw $a1, 0x70($sp) -/* 07D188 7F048658 AFA0038C */ sw $zero, 0x38c($sp) -.L7F04865C: -/* 07D18C 7F04865C 8E890008 */ lw $t1, 8($s4) -/* 07D190 7F048660 8FA3038C */ lw $v1, 0x38c($sp) -/* 07D194 7F048664 C7AC0380 */ lwc1 $f12, 0x380($sp) -/* 07D198 7F048668 8D390008 */ lw $t9, 8($t1) -/* 07D19C 7F04866C 00031040 */ sll $v0, $v1, 1 -/* 07D1A0 7F048670 00026080 */ sll $t4, $v0, 2 -/* 07D1A4 7F048674 032C5021 */ addu $t2, $t9, $t4 -/* 07D1A8 7F048678 8D4E0004 */ lw $t6, 4($t2) -/* 07D1AC 7F04867C 0002C180 */ sll $t8, $v0, 6 -/* 07D1B0 7F048680 02582821 */ addu $a1, $s2, $t8 -/* 07D1B4 7F048684 8DCD0004 */ lw $t5, 4($t6) -/* 07D1B8 7F048688 AFA20074 */ sw $v0, 0x74($sp) -/* 07D1BC 7F04868C 24A50040 */ addiu $a1, $a1, 0x40 -/* 07D1C0 7F048690 0FC161A2 */ jal sub_GAME_7F058688 -/* 07D1C4 7F048694 AFAD0390 */ sw $t5, 0x390($sp) -/* 07D1C8 7F048698 8FAF0074 */ lw $t7, 0x74($sp) -/* 07D1CC 7F04869C 8FB0038C */ lw $s0, 0x38c($sp) -/* 07D1D0 7F0486A0 8FA40390 */ lw $a0, 0x390($sp) -/* 07D1D4 7F0486A4 000F4180 */ sll $t0, $t7, 6 -/* 07D1D8 7F0486A8 02482821 */ addu $a1, $s2, $t0 -/* 07D1DC 7F0486AC 24A50040 */ addiu $a1, $a1, 0x40 -/* 07D1E0 7F0486B0 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D1E4 7F0486B4 AFA50070 */ sw $a1, 0x70($sp) -/* 07D1E8 7F0486B8 02402025 */ move $a0, $s2 -/* 07D1EC 7F0486BC 0FC1601A */ jal sub_GAME_7F058068 -/* 07D1F0 7F0486C0 8FA50070 */ lw $a1, 0x70($sp) -/* 07D1F4 7F0486C4 8E8B0008 */ lw $t3, 8($s4) -/* 07D1F8 7F0486C8 8FA20074 */ lw $v0, 0x74($sp) -/* 07D1FC 7F0486CC C7AC0384 */ lwc1 $f12, 0x384($sp) -/* 07D200 7F0486D0 8D690008 */ lw $t1, 8($t3) -/* 07D204 7F0486D4 24420002 */ addiu $v0, $v0, 2 -/* 07D208 7F0486D8 0002C880 */ sll $t9, $v0, 2 -/* 07D20C 7F0486DC 01396021 */ addu $t4, $t1, $t9 -/* 07D210 7F0486E0 8D8A0000 */ lw $t2, ($t4) -/* 07D214 7F0486E4 00026980 */ sll $t5, $v0, 6 -/* 07D218 7F0486E8 024D2821 */ addu $a1, $s2, $t5 -/* 07D21C 7F0486EC 8D4E0004 */ lw $t6, 4($t2) -/* 07D220 7F0486F0 AFA5006C */ sw $a1, 0x6c($sp) -/* 07D224 7F0486F4 0FC161A2 */ jal sub_GAME_7F058688 -/* 07D228 7F0486F8 AFAE0390 */ sw $t6, 0x390($sp) -/* 07D22C 7F0486FC 8FA40390 */ lw $a0, 0x390($sp) -/* 07D230 7F048700 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D234 7F048704 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D238 7F048708 8FA40070 */ lw $a0, 0x70($sp) -/* 07D23C 7F04870C 0FC1601A */ jal sub_GAME_7F058068 -/* 07D240 7F048710 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D244 7F048714 26100001 */ addiu $s0, $s0, 1 -/* 07D248 7F048718 24010006 */ li $at, 6 -/* 07D24C 7F04871C 1601FFCF */ bne $s0, $at, .L7F04865C -/* 07D250 7F048720 AFB0038C */ sw $s0, 0x38c($sp) -/* 07D254 7F048724 100002A8 */ b .L7F0491C8 -/* 07D258 7F048728 8E8F0008 */ lw $t7, 8($s4) -.L7F04872C: -/* 07D25C 7F04872C 26380058 */ addiu $t8, $s1, 0x58 -/* 07D260 7F048730 AFB80070 */ sw $t8, 0x70($sp) -/* 07D264 7F048734 0FC16008 */ jal sub_GAME_7F058020 -/* 07D268 7F048738 27A503A4 */ addiu $a1, $sp, 0x3a4 -/* 07D26C 7F04873C 8FA40070 */ lw $a0, 0x70($sp) -/* 07D270 7F048740 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D274 7F048744 27A503A4 */ addiu $a1, $sp, 0x3a4 -/* 07D278 7F048748 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 07D27C 7F04874C 00000000 */ nop -/* 07D280 7F048750 00402025 */ move $a0, $v0 -/* 07D284 7F048754 27A503A4 */ addiu $a1, $sp, 0x3a4 -/* 07D288 7F048758 0FC16063 */ jal sub_GAME_7F05818C -/* 07D28C 7F04875C 02403025 */ move $a2, $s2 -/* 07D290 7F048760 92220003 */ lbu $v0, 3($s1) -/* 07D294 7F048764 24010006 */ li $at, 6 -/* 07D298 7F048768 27A50320 */ addiu $a1, $sp, 0x320 -/* 07D29C 7F04876C 5441002D */ bnel $v0, $at, .L7F048824 -/* 07D2A0 7F048770 2401000D */ li $at, 13 -/* 07D2A4 7F048774 8E620004 */ lw $v0, 4($s3) -/* 07D2A8 7F048778 8E8F0008 */ lw $t7, 8($s4) -/* 07D2AC 7F04877C C44C00C8 */ lwc1 $f12, 0xc8($v0) -/* 07D2B0 7F048780 8DE80008 */ lw $t0, 8($t7) -/* 07D2B4 7F048784 4616603C */ c.lt.s $f12, $f22 -/* 07D2B8 7F048788 8D0B0000 */ lw $t3, ($t0) -/* 07D2BC 7F04878C 45000003 */ bc1f .L7F04879C -/* 07D2C0 7F048790 8D700004 */ lw $s0, 4($t3) -/* 07D2C4 7F048794 10000006 */ b .L7F0487B0 -/* 07D2C8 7F048798 46146300 */ add.s $f12, $f12, $f20 -.L7F04879C: -/* 07D2CC 7F04879C 460CA03E */ c.le.s $f20, $f12 -/* 07D2D0 7F0487A0 00000000 */ nop -/* 07D2D4 7F0487A4 45000002 */ bc1f .L7F0487B0 -/* 07D2D8 7F0487A8 00000000 */ nop -/* 07D2DC 7F0487AC 46146301 */ sub.s $f12, $f12, $f20 -.L7F0487B0: -/* 07D2E0 7F0487B0 0FC1617F */ jal sub_GAME_7F0585FC -/* 07D2E4 7F0487B4 AFA20370 */ sw $v0, 0x370($sp) -/* 07D2E8 7F0487B8 8FA20370 */ lw $v0, 0x370($sp) -/* 07D2EC 7F0487BC 26460040 */ addiu $a2, $s2, 0x40 -/* 07D2F0 7F0487C0 AFA6006C */ sw $a2, 0x6c($sp) -/* 07D2F4 7F0487C4 27A40320 */ addiu $a0, $sp, 0x320 -/* 07D2F8 7F0487C8 0FC16032 */ jal sub_GAME_7F0580C8 -/* 07D2FC 7F0487CC 24450084 */ addiu $a1, $v0, 0x84 -/* 07D300 7F0487D0 C6080000 */ lwc1 $f8, ($s0) -/* 07D304 7F0487D4 27B20360 */ addiu $s2, $sp, 0x360 -/* 07D308 7F0487D8 02402825 */ move $a1, $s2 -/* 07D30C 7F0487DC E7A80360 */ swc1 $f8, 0x360($sp) -/* 07D310 7F0487E0 C6040004 */ lwc1 $f4, 4($s0) -/* 07D314 7F0487E4 27A403A4 */ addiu $a0, $sp, 0x3a4 -/* 07D318 7F0487E8 E7A40364 */ swc1 $f4, 0x364($sp) -/* 07D31C 7F0487EC C6060008 */ lwc1 $f6, 8($s0) -/* 07D320 7F0487F0 0FC1611D */ jal sub_GAME_7F058474 -/* 07D324 7F0487F4 E7A60368 */ swc1 $f6, 0x368($sp) -/* 07D328 7F0487F8 02402025 */ move $a0, $s2 -/* 07D32C 7F0487FC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D330 7F048800 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D334 7F048804 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 07D338 7F048808 00000000 */ nop -/* 07D33C 7F04880C 00402025 */ move $a0, $v0 -/* 07D340 7F048810 0FC16026 */ jal sub_GAME_7F058098 -/* 07D344 7F048814 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D348 7F048818 1000026B */ b .L7F0491C8 -/* 07D34C 7F04881C 8E8F0008 */ lw $t7, 8($s4) -/* 07D350 7F048820 2401000D */ li $at, 13 -.L7F048824: -/* 07D354 7F048824 5441007F */ bnel $v0, $at, .L7F048A24 -/* 07D358 7F048828 24010008 */ li $at, 8 -/* 07D35C 7F04882C 8E620004 */ lw $v0, 4($s3) -/* 07D360 7F048830 3C018005 */ lui $at, %hi(D_80052B6C) -/* 07D364 7F048834 C4282B6C */ lwc1 $f8, %lo(D_80052B6C)($at) -/* 07D368 7F048838 C44A0090 */ lwc1 $f10, 0x90($v0) -/* 07D36C 7F04883C C444009C */ lwc1 $f4, 0x9c($v0) -/* 07D370 7F048840 46085300 */ add.s $f12, $f10, $f8 -/* 07D374 7F048844 46002187 */ neg.s $f6, $f4 -/* 07D378 7F048848 460CA03E */ c.le.s $f20, $f12 -/* 07D37C 7F04884C E7A60300 */ swc1 $f6, 0x300($sp) -/* 07D380 7F048850 45020003 */ bc1fl .L7F048860 -/* 07D384 7F048854 8E890008 */ lw $t1, 8($s4) -/* 07D388 7F048858 46146301 */ sub.s $f12, $f12, $f20 -/* 07D38C 7F04885C 8E890008 */ lw $t1, 8($s4) -.L7F048860: -/* 07D390 7F048860 27A403A4 */ addiu $a0, $sp, 0x3a4 -/* 07D394 7F048864 27A50308 */ addiu $a1, $sp, 0x308 -/* 07D398 7F048868 8D390008 */ lw $t9, 8($t1) -/* 07D39C 7F04886C 8F2C0004 */ lw $t4, 4($t9) -/* 07D3A0 7F048870 8D900004 */ lw $s0, 4($t4) -/* 07D3A4 7F048874 C60A0000 */ lwc1 $f10, ($s0) -/* 07D3A8 7F048878 E7AA0308 */ swc1 $f10, 0x308($sp) -/* 07D3AC 7F04887C C6080004 */ lwc1 $f8, 4($s0) -/* 07D3B0 7F048880 E7A8030C */ swc1 $f8, 0x30c($sp) -/* 07D3B4 7F048884 C6040008 */ lwc1 $f4, 8($s0) -/* 07D3B8 7F048888 E7AC0304 */ swc1 $f12, 0x304($sp) -/* 07D3BC 7F04888C AFA20318 */ sw $v0, 0x318($sp) -/* 07D3C0 7F048890 0FC1611D */ jal sub_GAME_7F058474 -/* 07D3C4 7F048894 E7A40310 */ swc1 $f4, 0x310($sp) -/* 07D3C8 7F048898 26450040 */ addiu $a1, $s2, 0x40 -/* 07D3CC 7F04889C C7AC0304 */ lwc1 $f12, 0x304($sp) -/* 07D3D0 7F0488A0 0FC1617F */ jal sub_GAME_7F0585FC -/* 07D3D4 7F0488A4 AFA5006C */ sw $a1, 0x6c($sp) -/* 07D3D8 7F0488A8 27A40308 */ addiu $a0, $sp, 0x308 -/* 07D3DC 7F0488AC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D3E0 7F0488B0 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D3E4 7F0488B4 8FAA0318 */ lw $t2, 0x318($sp) -/* 07D3E8 7F0488B8 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D3EC 7F0488BC 8D4E0014 */ lw $t6, 0x14($t2) -/* 07D3F0 7F0488C0 0FC1629F */ jal matrix_multiply_A1_by_F12 -/* 07D3F4 7F0488C4 C5CC0014 */ lwc1 $f12, 0x14($t6) -/* 07D3F8 7F0488C8 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 07D3FC 7F0488CC 00000000 */ nop -/* 07D400 7F0488D0 00402025 */ move $a0, $v0 -/* 07D404 7F0488D4 0FC16026 */ jal sub_GAME_7F058098 -/* 07D408 7F0488D8 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D40C 7F0488DC 8E8D0008 */ lw $t5, 8($s4) -/* 07D410 7F0488E0 26450080 */ addiu $a1, $s2, 0x80 -/* 07D414 7F0488E4 C7AC0300 */ lwc1 $f12, 0x300($sp) -/* 07D418 7F0488E8 8DB80008 */ lw $t8, 8($t5) -/* 07D41C 7F0488EC 8F0F0008 */ lw $t7, 8($t8) -/* 07D420 7F0488F0 8DF00004 */ lw $s0, 4($t7) -/* 07D424 7F0488F4 0FC161A2 */ jal sub_GAME_7F058688 -/* 07D428 7F0488F8 AFA50068 */ sw $a1, 0x68($sp) -/* 07D42C 7F0488FC 02002025 */ move $a0, $s0 -/* 07D430 7F048900 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D434 7F048904 8FA50068 */ lw $a1, 0x68($sp) -/* 07D438 7F048908 8FA4006C */ lw $a0, 0x6c($sp) -/* 07D43C 7F04890C 0FC16026 */ jal sub_GAME_7F058098 -/* 07D440 7F048910 8FA50068 */ lw $a1, 0x68($sp) -/* 07D444 7F048914 8E880008 */ lw $t0, 8($s4) -/* 07D448 7F048918 02802025 */ move $a0, $s4 -/* 07D44C 7F04891C 8D030008 */ lw $v1, 8($t0) -/* 07D450 7F048920 8C65000C */ lw $a1, 0xc($v1) -/* 07D454 7F048924 50A00016 */ beql $a1, $zero, .L7F048980 -/* 07D458 7F048928 8C650010 */ lw $a1, 0x10($v1) -/* 07D45C 7F04892C 0FC1B198 */ jal sub_GAME_7F06C660 -/* 07D460 7F048930 00003025 */ move $a2, $zero -/* 07D464 7F048934 AFA202FC */ sw $v0, 0x2fc($sp) -/* 07D468 7F048938 8E8B0008 */ lw $t3, 8($s4) -/* 07D46C 7F04893C 8FAC0318 */ lw $t4, 0x318($sp) -/* 07D470 7F048940 00402825 */ move $a1, $v0 -/* 07D474 7F048944 8D690008 */ lw $t1, 8($t3) -/* 07D478 7F048948 C58C00B4 */ lwc1 $f12, 0xb4($t4) -/* 07D47C 7F04894C 8D39000C */ lw $t9, 0xc($t1) -/* 07D480 7F048950 0FC1615C */ jal sub_GAME_7F058570 -/* 07D484 7F048954 8F300004 */ lw $s0, 4($t9) -/* 07D488 7F048958 8FB202FC */ lw $s2, 0x2fc($sp) -/* 07D48C 7F04895C 02002025 */ move $a0, $s0 -/* 07D490 7F048960 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D494 7F048964 02402825 */ move $a1, $s2 -/* 07D498 7F048968 8FA40068 */ lw $a0, 0x68($sp) -/* 07D49C 7F04896C 0FC16026 */ jal sub_GAME_7F058098 -/* 07D4A0 7F048970 02402825 */ move $a1, $s2 -/* 07D4A4 7F048974 8E8A0008 */ lw $t2, 8($s4) -/* 07D4A8 7F048978 8D430008 */ lw $v1, 8($t2) -/* 07D4AC 7F04897C 8C650010 */ lw $a1, 0x10($v1) -.L7F048980: -/* 07D4B0 7F048980 02802025 */ move $a0, $s4 -/* 07D4B4 7F048984 50A00010 */ beql $a1, $zero, .L7F0489C8 -/* 07D4B8 7F048988 8C650018 */ lw $a1, 0x18($v1) -/* 07D4BC 7F04898C 0FC1B198 */ jal sub_GAME_7F06C660 -/* 07D4C0 7F048990 00003025 */ move $a2, $zero -/* 07D4C4 7F048994 8E8E0008 */ lw $t6, 8($s4) -/* 07D4C8 7F048998 00409025 */ move $s2, $v0 -/* 07D4CC 7F04899C 00402825 */ move $a1, $v0 -/* 07D4D0 7F0489A0 8DCD0008 */ lw $t5, 8($t6) -/* 07D4D4 7F0489A4 8DB80010 */ lw $t8, 0x10($t5) -/* 07D4D8 7F0489A8 0FC16259 */ jal init_something_copy_posdata_to_it -/* 07D4DC 7F0489AC 8F040004 */ lw $a0, 4($t8) -/* 07D4E0 7F0489B0 8FA40068 */ lw $a0, 0x68($sp) -/* 07D4E4 7F0489B4 0FC16026 */ jal sub_GAME_7F058098 -/* 07D4E8 7F0489B8 02402825 */ move $a1, $s2 -/* 07D4EC 7F0489BC 8E8F0008 */ lw $t7, 8($s4) -/* 07D4F0 7F0489C0 8DE30008 */ lw $v1, 8($t7) -/* 07D4F4 7F0489C4 8C650018 */ lw $a1, 0x18($v1) -.L7F0489C8: -/* 07D4F8 7F0489C8 02802025 */ move $a0, $s4 -/* 07D4FC 7F0489CC 50A001FE */ beql $a1, $zero, .L7F0491C8 -/* 07D500 7F0489D0 8E8F0008 */ lw $t7, 8($s4) -/* 07D504 7F0489D4 0FC1B198 */ jal sub_GAME_7F06C660 -/* 07D508 7F0489D8 00003025 */ move $a2, $zero -/* 07D50C 7F0489DC 8E880008 */ lw $t0, 8($s4) -/* 07D510 7F0489E0 8FB90318 */ lw $t9, 0x318($sp) -/* 07D514 7F0489E4 00409025 */ move $s2, $v0 -/* 07D518 7F0489E8 8D0B0008 */ lw $t3, 8($t0) -/* 07D51C 7F0489EC 00402825 */ move $a1, $v0 -/* 07D520 7F0489F0 C72C00B4 */ lwc1 $f12, 0xb4($t9) -/* 07D524 7F0489F4 8D690018 */ lw $t1, 0x18($t3) -/* 07D528 7F0489F8 0FC1615C */ jal sub_GAME_7F058570 -/* 07D52C 7F0489FC 8D300004 */ lw $s0, 4($t1) -/* 07D530 7F048A00 02002025 */ move $a0, $s0 -/* 07D534 7F048A04 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D538 7F048A08 02402825 */ move $a1, $s2 -/* 07D53C 7F048A0C 8FA40068 */ lw $a0, 0x68($sp) -/* 07D540 7F048A10 0FC16026 */ jal sub_GAME_7F058098 -/* 07D544 7F048A14 02402825 */ move $a1, $s2 -/* 07D548 7F048A18 100001EB */ b .L7F0491C8 -/* 07D54C 7F048A1C 8E8F0008 */ lw $t7, 8($s4) -/* 07D550 7F048A20 24010008 */ li $at, 8 -.L7F048A24: -/* 07D554 7F048A24 54410017 */ bnel $v0, $at, .L7F048A84 -/* 07D558 7F048A28 2401000C */ li $at, 12 -/* 07D55C 7F048A2C 8E8C0008 */ lw $t4, 8($s4) -/* 07D560 7F048A30 24020001 */ li $v0, 1 -/* 07D564 7F048A34 26440040 */ addiu $a0, $s2, 0x40 -/* 07D568 7F048A38 858A000E */ lh $t2, 0xe($t4) -/* 07D56C 7F048A3C 29410002 */ slti $at, $t2, 2 -/* 07D570 7F048A40 542001E1 */ bnezl $at, .L7F0491C8 -/* 07D574 7F048A44 8E8F0008 */ lw $t7, 8($s4) -/* 07D578 7F048A48 AFA202F8 */ sw $v0, 0x2f8($sp) -.L7F048A4C: -/* 07D57C 7F048A4C 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 -/* 07D580 7F048A50 AFA40074 */ sw $a0, 0x74($sp) -/* 07D584 7F048A54 8E8E0008 */ lw $t6, 8($s4) -/* 07D588 7F048A58 8FA202F8 */ lw $v0, 0x2f8($sp) -/* 07D58C 7F048A5C 8FA40074 */ lw $a0, 0x74($sp) -/* 07D590 7F048A60 85CD000E */ lh $t5, 0xe($t6) -/* 07D594 7F048A64 24420001 */ addiu $v0, $v0, 1 -/* 07D598 7F048A68 24840040 */ addiu $a0, $a0, 0x40 -/* 07D59C 7F048A6C 004D082A */ slt $at, $v0, $t5 -/* 07D5A0 7F048A70 5420FFF6 */ bnezl $at, .L7F048A4C -/* 07D5A4 7F048A74 AFA202F8 */ sw $v0, 0x2f8($sp) -/* 07D5A8 7F048A78 100001D3 */ b .L7F0491C8 -/* 07D5AC 7F048A7C 8E8F0008 */ lw $t7, 8($s4) -/* 07D5B0 7F048A80 2401000C */ li $at, 12 -.L7F048A84: -/* 07D5B4 7F048A84 5441002C */ bnel $v0, $at, .L7F048B38 -/* 07D5B8 7F048A88 24010027 */ li $at, 39 -/* 07D5BC 7F048A8C 8E980008 */ lw $t8, 8($s4) -/* 07D5C0 7F048A90 26450040 */ addiu $a1, $s2, 0x40 -/* 07D5C4 7F048A94 8F0F0008 */ lw $t7, 8($t8) -/* 07D5C8 7F048A98 8DE80000 */ lw $t0, ($t7) -/* 07D5CC 7F048A9C 8D040004 */ lw $a0, 4($t0) -/* 07D5D0 7F048AA0 0FC16259 */ jal init_something_copy_posdata_to_it -/* 07D5D4 7F048AA4 AFA5006C */ sw $a1, 0x6c($sp) -/* 07D5D8 7F048AA8 02402025 */ move $a0, $s2 -/* 07D5DC 7F048AAC 0FC16026 */ jal sub_GAME_7F058098 -/* 07D5E0 7F048AB0 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D5E4 7F048AB4 8E8B0008 */ lw $t3, 8($s4) -/* 07D5E8 7F048AB8 26450080 */ addiu $a1, $s2, 0x80 -/* 07D5EC 7F048ABC 8D690008 */ lw $t1, 8($t3) -/* 07D5F0 7F048AC0 8D390004 */ lw $t9, 4($t1) -/* 07D5F4 7F048AC4 8F240004 */ lw $a0, 4($t9) -/* 07D5F8 7F048AC8 0FC16259 */ jal init_something_copy_posdata_to_it -/* 07D5FC 7F048ACC AFA50068 */ sw $a1, 0x68($sp) -/* 07D600 7F048AD0 02402025 */ move $a0, $s2 -/* 07D604 7F048AD4 0FC16026 */ jal sub_GAME_7F058098 -/* 07D608 7F048AD8 8FA50068 */ lw $a1, 0x68($sp) -/* 07D60C 7F048ADC 8E8C0008 */ lw $t4, 8($s4) -/* 07D610 7F048AE0 264500C0 */ addiu $a1, $s2, 0xc0 -/* 07D614 7F048AE4 8D8A0008 */ lw $t2, 8($t4) -/* 07D618 7F048AE8 8D4E0008 */ lw $t6, 8($t2) -/* 07D61C 7F048AEC 8DC40004 */ lw $a0, 4($t6) -/* 07D620 7F048AF0 0FC16259 */ jal init_something_copy_posdata_to_it -/* 07D624 7F048AF4 AFA50074 */ sw $a1, 0x74($sp) -/* 07D628 7F048AF8 02402025 */ move $a0, $s2 -/* 07D62C 7F048AFC 0FC16026 */ jal sub_GAME_7F058098 -/* 07D630 7F048B00 8FA50074 */ lw $a1, 0x74($sp) -/* 07D634 7F048B04 8E8D0008 */ lw $t5, 8($s4) -/* 07D638 7F048B08 26500100 */ addiu $s0, $s2, 0x100 -/* 07D63C 7F048B0C 02002825 */ move $a1, $s0 -/* 07D640 7F048B10 8DB80008 */ lw $t8, 8($t5) -/* 07D644 7F048B14 8F0F000C */ lw $t7, 0xc($t8) -/* 07D648 7F048B18 0FC16259 */ jal init_something_copy_posdata_to_it -/* 07D64C 7F048B1C 8DE40004 */ lw $a0, 4($t7) -/* 07D650 7F048B20 02402025 */ move $a0, $s2 -/* 07D654 7F048B24 0FC16026 */ jal sub_GAME_7F058098 -/* 07D658 7F048B28 02002825 */ move $a1, $s0 -/* 07D65C 7F048B2C 100001A6 */ b .L7F0491C8 -/* 07D660 7F048B30 8E8F0008 */ lw $t7, 8($s4) -/* 07D664 7F048B34 24010027 */ li $at, 39 -.L7F048B38: -/* 07D668 7F048B38 544100B9 */ bnel $v0, $at, .L7F048E20 -/* 07D66C 7F048B3C 24010028 */ li $at, 40 -/* 07D670 7F048B40 8E880008 */ lw $t0, 8($s4) -/* 07D674 7F048B44 8FAF0678 */ lw $t7, 0x678($sp) -/* 07D678 7F048B48 4600B006 */ mov.s $f0, $f22 -/* 07D67C 7F048B4C 8D030008 */ lw $v1, 8($t0) -/* 07D680 7F048B50 8C6B0004 */ lw $t3, 4($v1) -/* 07D684 7F048B54 8D690004 */ lw $t1, 4($t3) -/* 07D688 7F048B58 AFA90260 */ sw $t1, 0x260($sp) -/* 07D68C 7F048B5C 8C790008 */ lw $t9, 8($v1) -/* 07D690 7F048B60 8F2C0004 */ lw $t4, 4($t9) -/* 07D694 7F048B64 AFAC025C */ sw $t4, 0x25c($sp) -/* 07D698 7F048B68 8C6E0010 */ lw $t6, 0x10($v1) -/* 07D69C 7F048B6C 8C6A000C */ lw $t2, 0xc($v1) -/* 07D6A0 7F048B70 8DCD0004 */ lw $t5, 4($t6) -/* 07D6A4 7F048B74 8D500004 */ lw $s0, 4($t2) -/* 07D6A8 7F048B78 AFAD0254 */ sw $t5, 0x254($sp) -/* 07D6AC 7F048B7C 8C780018 */ lw $t8, 0x18($v1) -/* 07D6B0 7F048B80 C6840014 */ lwc1 $f4, 0x14($s4) -/* 07D6B4 7F048B84 8F020004 */ lw $v0, 4($t8) -/* 07D6B8 7F048B88 C4460010 */ lwc1 $f6, 0x10($v0) -/* 07D6BC 7F048B8C C44A000C */ lwc1 $f10, 0xc($v0) -/* 07D6C0 7F048B90 460A3201 */ sub.s $f8, $f6, $f10 -/* 07D6C4 7F048B94 46044082 */ mul.s $f2, $f8, $f4 -/* 07D6C8 7F048B98 11E00026 */ beqz $t7, .L7F048C34 -/* 07D6CC 7F048B9C 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07D6D0 7F048BA0 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07D6D4 7F048BA4 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07D6D8 7F048BA8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07D6DC 7F048BAC 460A3202 */ mul.s $f8, $f6, $f10 -/* 07D6E0 7F048BB0 44815000 */ mtc1 $at, $f10 -/* 07D6E4 7F048BB4 46144102 */ mul.s $f4, $f8, $f20 -/* 07D6E8 7F048BB8 00000000 */ nop -/* 07D6EC 7F048BBC 46141182 */ mul.s $f6, $f2, $f20 -/* 07D6F0 7F048BC0 00000000 */ nop -/* 07D6F4 7F048BC4 460A3202 */ mul.s $f8, $f6, $f10 -/* 07D6F8 7F048BC8 C626008C */ lwc1 $f6, 0x8c($s1) -/* 07D6FC 7F048BCC 46082003 */ div.s $f0, $f4, $f8 -/* 07D700 7F048BD0 46003280 */ add.s $f10, $f6, $f0 -/* 07D704 7F048BD4 E62A008C */ swc1 $f10, 0x8c($s1) -/* 07D708 7F048BD8 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07D70C 7F048BDC 460CA03E */ c.le.s $f20, $f12 -/* 07D710 7F048BE0 00000000 */ nop -/* 07D714 7F048BE4 45000008 */ bc1f .L7F048C08 -/* 07D718 7F048BE8 00000000 */ nop -/* 07D71C 7F048BEC 46146101 */ sub.s $f4, $f12, $f20 -.L7F048BF0: -/* 07D720 7F048BF0 E624008C */ swc1 $f4, 0x8c($s1) -/* 07D724 7F048BF4 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07D728 7F048BF8 460CA03E */ c.le.s $f20, $f12 -/* 07D72C 7F048BFC 00000000 */ nop -/* 07D730 7F048C00 4503FFFB */ bc1tl .L7F048BF0 -/* 07D734 7F048C04 46146101 */ sub.s $f4, $f12, $f20 -.L7F048C08: -/* 07D738 7F048C08 4616603C */ c.lt.s $f12, $f22 -/* 07D73C 7F048C0C 00000000 */ nop -/* 07D740 7F048C10 45020009 */ bc1fl .L7F048C38 -/* 07D744 7F048C14 C626008C */ lwc1 $f6, 0x8c($s1) -/* 07D748 7F048C18 46146200 */ add.s $f8, $f12, $f20 -.L7F048C1C: -/* 07D74C 7F048C1C E628008C */ swc1 $f8, 0x8c($s1) -/* 07D750 7F048C20 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07D754 7F048C24 4616603C */ c.lt.s $f12, $f22 -/* 07D758 7F048C28 00000000 */ nop -/* 07D75C 7F048C2C 4503FFFB */ bc1tl .L7F048C1C -/* 07D760 7F048C30 46146200 */ add.s $f8, $f12, $f20 -.L7F048C34: -/* 07D764 7F048C34 C626008C */ lwc1 $f6, 0x8c($s1) -.L7F048C38: -/* 07D768 7F048C38 46003280 */ add.s $f10, $f6, $f0 -/* 07D76C 7F048C3C E62A008C */ swc1 $f10, 0x8c($s1) -/* 07D770 7F048C40 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07D774 7F048C44 460CA03E */ c.le.s $f20, $f12 -/* 07D778 7F048C48 00000000 */ nop -/* 07D77C 7F048C4C 45020009 */ bc1fl .L7F048C74 -/* 07D780 7F048C50 4616603C */ c.lt.s $f12, $f22 -/* 07D784 7F048C54 46146101 */ sub.s $f4, $f12, $f20 -.L7F048C58: -/* 07D788 7F048C58 E624008C */ swc1 $f4, 0x8c($s1) -/* 07D78C 7F048C5C C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07D790 7F048C60 460CA03E */ c.le.s $f20, $f12 -/* 07D794 7F048C64 00000000 */ nop -/* 07D798 7F048C68 4503FFFB */ bc1tl .L7F048C58 -/* 07D79C 7F048C6C 46146101 */ sub.s $f4, $f12, $f20 -/* 07D7A0 7F048C70 4616603C */ c.lt.s $f12, $f22 -.L7F048C74: -/* 07D7A4 7F048C74 00000000 */ nop -/* 07D7A8 7F048C78 45000008 */ bc1f .L7F048C9C -/* 07D7AC 7F048C7C 00000000 */ nop -/* 07D7B0 7F048C80 46146200 */ add.s $f8, $f12, $f20 -.L7F048C84: -/* 07D7B4 7F048C84 E628008C */ swc1 $f8, 0x8c($s1) -/* 07D7B8 7F048C88 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07D7BC 7F048C8C 4616603C */ c.lt.s $f12, $f22 -/* 07D7C0 7F048C90 00000000 */ nop -/* 07D7C4 7F048C94 4503FFFB */ bc1tl .L7F048C84 -/* 07D7C8 7F048C98 46146200 */ add.s $f8, $f12, $f20 -.L7F048C9C: -/* 07D7CC 7F048C9C 0FC1615C */ jal sub_GAME_7F058570 -/* 07D7D0 7F048CA0 27A502AC */ addiu $a1, $sp, 0x2ac -/* 07D7D4 7F048CA4 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07D7D8 7F048CA8 4606B03C */ c.lt.s $f22, $f6 -/* 07D7DC 7F048CAC 00000000 */ nop -/* 07D7E0 7F048CB0 4502002B */ bc1fl .L7F048D60 -/* 07D7E4 7F048CB4 C62C0090 */ lwc1 $f12, 0x90($s1) -/* 07D7E8 7F048CB8 8FA80260 */ lw $t0, 0x260($sp) -/* 07D7EC 7F048CBC C60A0008 */ lwc1 $f10, 8($s0) -/* 07D7F0 7F048CC0 C62C009C */ lwc1 $f12, 0x9c($s1) -/* 07D7F4 7F048CC4 C5040008 */ lwc1 $f4, 8($t0) -/* 07D7F8 7F048CC8 C6860014 */ lwc1 $f6, 0x14($s4) -/* 07D7FC 7F048CCC 4616603C */ c.lt.s $f12, $f22 -/* 07D800 7F048CD0 46045201 */ sub.s $f8, $f10, $f4 -/* 07D804 7F048CD4 46064082 */ mul.s $f2, $f8, $f6 -/* 07D808 7F048CD8 45020003 */ bc1fl .L7F048CE8 -/* 07D80C 7F048CDC E7A20250 */ swc1 $f2, 0x250($sp) -/* 07D810 7F048CE0 46006307 */ neg.s $f12, $f12 -/* 07D814 7F048CE4 E7A20250 */ swc1 $f2, 0x250($sp) -.L7F048CE8: -/* 07D818 7F048CE8 0FC15FAB */ jal sinf -/* 07D81C 7F048CEC E7AC024C */ swc1 $f12, 0x24c($sp) -/* 07D820 7F048CF0 C7A20250 */ lwc1 $f2, 0x250($sp) -/* 07D824 7F048CF4 C7AC024C */ lwc1 $f12, 0x24c($sp) -/* 07D828 7F048CF8 46020282 */ mul.s $f10, $f0, $f2 -/* 07D82C 7F048CFC 0FC15FA8 */ jal cosf -/* 07D830 7F048D00 E7AA0248 */ swc1 $f10, 0x248($sp) -/* 07D834 7F048D04 C7A20250 */ lwc1 $f2, 0x250($sp) -/* 07D838 7F048D08 C6280088 */ lwc1 $f8, 0x88($s1) -/* 07D83C 7F048D0C C7AC0248 */ lwc1 $f12, 0x248($sp) -/* 07D840 7F048D10 46020102 */ mul.s $f4, $f0, $f2 -/* 07D844 7F048D14 46081181 */ sub.s $f6, $f2, $f8 -/* 07D848 7F048D18 0FC16A8C */ jal convert_angle_using_inverse -/* 07D84C 7F048D1C 46062381 */ sub.s $f14, $f4, $f6 -/* 07D850 7F048D20 C7A2024C */ lwc1 $f2, 0x24c($sp) -/* 07D854 7F048D24 E6200090 */ swc1 $f0, 0x90($s1) -/* 07D858 7F048D28 4602003C */ c.lt.s $f0, $f2 -/* 07D85C 7F048D2C 00000000 */ nop -/* 07D860 7F048D30 45020003 */ bc1fl .L7F048D40 -/* 07D864 7F048D34 C62A009C */ lwc1 $f10, 0x9c($s1) -/* 07D868 7F048D38 E6220090 */ swc1 $f2, 0x90($s1) -/* 07D86C 7F048D3C C62A009C */ lwc1 $f10, 0x9c($s1) -.L7F048D40: -/* 07D870 7F048D40 460AB03C */ c.lt.s $f22, $f10 -/* 07D874 7F048D44 00000000 */ nop -/* 07D878 7F048D48 45020005 */ bc1fl .L7F048D60 -/* 07D87C 7F048D4C C62C0090 */ lwc1 $f12, 0x90($s1) -/* 07D880 7F048D50 C6280090 */ lwc1 $f8, 0x90($s1) -/* 07D884 7F048D54 4608A101 */ sub.s $f4, $f20, $f8 -/* 07D888 7F048D58 E6240090 */ swc1 $f4, 0x90($s1) -/* 07D88C 7F048D5C C62C0090 */ lwc1 $f12, 0x90($s1) -.L7F048D60: -/* 07D890 7F048D60 0FC1617F */ jal sub_GAME_7F0585FC -/* 07D894 7F048D64 27A5026C */ addiu $a1, $sp, 0x26c -/* 07D898 7F048D68 264500C0 */ addiu $a1, $s2, 0xc0 -/* 07D89C 7F048D6C AFA50074 */ sw $a1, 0x74($sp) -/* 07D8A0 7F048D70 0FC16008 */ jal sub_GAME_7F058020 -/* 07D8A4 7F048D74 27A402AC */ addiu $a0, $sp, 0x2ac -/* 07D8A8 7F048D78 02002025 */ move $a0, $s0 -/* 07D8AC 7F048D7C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D8B0 7F048D80 8FA50074 */ lw $a1, 0x74($sp) -/* 07D8B4 7F048D84 02402025 */ move $a0, $s2 -/* 07D8B8 7F048D88 0FC16026 */ jal sub_GAME_7F058098 -/* 07D8BC 7F048D8C 8FA50074 */ lw $a1, 0x74($sp) -/* 07D8C0 7F048D90 26500100 */ addiu $s0, $s2, 0x100 -/* 07D8C4 7F048D94 02002825 */ move $a1, $s0 -/* 07D8C8 7F048D98 0FC16008 */ jal sub_GAME_7F058020 -/* 07D8CC 7F048D9C 27A402AC */ addiu $a0, $sp, 0x2ac -/* 07D8D0 7F048DA0 8FA40254 */ lw $a0, 0x254($sp) -/* 07D8D4 7F048DA4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D8D8 7F048DA8 02002825 */ move $a1, $s0 -/* 07D8DC 7F048DAC 02402025 */ move $a0, $s2 -/* 07D8E0 7F048DB0 0FC16026 */ jal sub_GAME_7F058098 -/* 07D8E4 7F048DB4 02002825 */ move $a1, $s0 -/* 07D8E8 7F048DB8 27A4026C */ addiu $a0, $sp, 0x26c -/* 07D8EC 7F048DBC 0FC16026 */ jal sub_GAME_7F058098 -/* 07D8F0 7F048DC0 27A502AC */ addiu $a1, $sp, 0x2ac -/* 07D8F4 7F048DC4 26450040 */ addiu $a1, $s2, 0x40 -/* 07D8F8 7F048DC8 AFA5006C */ sw $a1, 0x6c($sp) -/* 07D8FC 7F048DCC 0FC16008 */ jal sub_GAME_7F058020 -/* 07D900 7F048DD0 27A402AC */ addiu $a0, $sp, 0x2ac -/* 07D904 7F048DD4 8FA40260 */ lw $a0, 0x260($sp) -/* 07D908 7F048DD8 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D90C 7F048DDC 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D910 7F048DE0 02402025 */ move $a0, $s2 -/* 07D914 7F048DE4 0FC16026 */ jal sub_GAME_7F058098 -/* 07D918 7F048DE8 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D91C 7F048DEC 26450080 */ addiu $a1, $s2, 0x80 -/* 07D920 7F048DF0 AFA50068 */ sw $a1, 0x68($sp) -/* 07D924 7F048DF4 0FC16008 */ jal sub_GAME_7F058020 -/* 07D928 7F048DF8 27A402AC */ addiu $a0, $sp, 0x2ac -/* 07D92C 7F048DFC 8FA4025C */ lw $a0, 0x25c($sp) -/* 07D930 7F048E00 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D934 7F048E04 8FA50068 */ lw $a1, 0x68($sp) -/* 07D938 7F048E08 02402025 */ move $a0, $s2 -/* 07D93C 7F048E0C 0FC16026 */ jal sub_GAME_7F058098 -/* 07D940 7F048E10 8FA50068 */ lw $a1, 0x68($sp) -/* 07D944 7F048E14 100000EC */ b .L7F0491C8 -/* 07D948 7F048E18 8E8F0008 */ lw $t7, 8($s4) -/* 07D94C 7F048E1C 24010028 */ li $at, 40 -.L7F048E20: -/* 07D950 7F048E20 14410086 */ bne $v0, $at, .L7F04903C -/* 07D954 7F048E24 00000000 */ nop -/* 07D958 7F048E28 8E8B0008 */ lw $t3, 8($s4) -/* 07D95C 7F048E2C 3C0A8005 */ lui $t2, %hi(clock_timer) -/* 07D960 7F048E30 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) -/* 07D964 7F048E34 8D690008 */ lw $t1, 8($t3) -/* 07D968 7F048E38 8FAE0678 */ lw $t6, 0x678($sp) -/* 07D96C 7F048E3C 27B001B0 */ addiu $s0, $sp, 0x1b0 -/* 07D970 7F048E40 8D390008 */ lw $t9, 8($t1) -/* 07D974 7F048E44 3C0F8003 */ lui $t7, %hi(D_80030B34) -/* 07D978 7F048E48 02402025 */ move $a0, $s2 -/* 07D97C 7F048E4C 8F2C0004 */ lw $t4, 4($t9) -/* 07D980 7F048E50 26450040 */ addiu $a1, $s2, 0x40 -/* 07D984 7F048E54 1940001E */ blez $t2, .L7F048ED0 -/* 07D988 7F048E58 AFAC01FC */ sw $t4, 0x1fc($sp) -/* 07D98C 7F048E5C 51C0001D */ beql $t6, $zero, .L7F048ED4 -/* 07D990 7F048E60 8E2D0014 */ lw $t5, 0x14($s1) -/* 07D994 7F048E64 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07D998 7F048E68 C62A008C */ lwc1 $f10, 0x8c($s1) -/* 07D99C 7F048E6C 460A3200 */ add.s $f8, $f6, $f10 -/* 07D9A0 7F048E70 E6280088 */ swc1 $f8, 0x88($s1) -/* 07D9A4 7F048E74 C6200088 */ lwc1 $f0, 0x88($s1) -/* 07D9A8 7F048E78 4600A03E */ c.le.s $f20, $f0 -/* 07D9AC 7F048E7C 00000000 */ nop -/* 07D9B0 7F048E80 45020009 */ bc1fl .L7F048EA8 -/* 07D9B4 7F048E84 4616003C */ c.lt.s $f0, $f22 -/* 07D9B8 7F048E88 46140101 */ sub.s $f4, $f0, $f20 -.L7F048E8C: -/* 07D9BC 7F048E8C E6240088 */ swc1 $f4, 0x88($s1) -/* 07D9C0 7F048E90 C6200088 */ lwc1 $f0, 0x88($s1) -/* 07D9C4 7F048E94 4600A03E */ c.le.s $f20, $f0 -/* 07D9C8 7F048E98 00000000 */ nop -/* 07D9CC 7F048E9C 4503FFFB */ bc1tl .L7F048E8C -/* 07D9D0 7F048EA0 46140101 */ sub.s $f4, $f0, $f20 -/* 07D9D4 7F048EA4 4616003C */ c.lt.s $f0, $f22 -.L7F048EA8: -/* 07D9D8 7F048EA8 00000000 */ nop -/* 07D9DC 7F048EAC 45020009 */ bc1fl .L7F048ED4 -/* 07D9E0 7F048EB0 8E2D0014 */ lw $t5, 0x14($s1) -/* 07D9E4 7F048EB4 46140180 */ add.s $f6, $f0, $f20 -.L7F048EB8: -/* 07D9E8 7F048EB8 E6260088 */ swc1 $f6, 0x88($s1) -/* 07D9EC 7F048EBC C6200088 */ lwc1 $f0, 0x88($s1) -/* 07D9F0 7F048EC0 4616003C */ c.lt.s $f0, $f22 -/* 07D9F4 7F048EC4 00000000 */ nop -/* 07D9F8 7F048EC8 4503FFFB */ bc1tl .L7F048EB8 -/* 07D9FC 7F048ECC 46140180 */ add.s $f6, $f0, $f20 -.L7F048ED0: -/* 07DA00 7F048ED0 8E2D0014 */ lw $t5, 0x14($s1) -.L7F048ED4: -/* 07DA04 7F048ED4 25EF0B34 */ addiu $t7, %lo(D_80030B34) # addiu $t7, $t7, 0xb34 -/* 07DA08 7F048ED8 25EB003C */ addiu $t3, $t7, 0x3c -/* 07DA0C 7F048EDC 8DB80020 */ lw $t8, 0x20($t5) -/* 07DA10 7F048EE0 02004825 */ move $t1, $s0 -/* 07DA14 7F048EE4 13000015 */ beqz $t8, .L7F048F3C -/* 07DA18 7F048EE8 00000000 */ nop -.L7F048EEC: -/* 07DA1C 7F048EEC 8DE10000 */ lw $at, ($t7) -/* 07DA20 7F048EF0 25EF000C */ addiu $t7, $t7, 0xc -/* 07DA24 7F048EF4 2529000C */ addiu $t1, $t1, 0xc -/* 07DA28 7F048EF8 AD21FFF4 */ sw $at, -0xc($t1) -/* 07DA2C 7F048EFC 8DE1FFF8 */ lw $at, -8($t7) -/* 07DA30 7F048F00 AD21FFF8 */ sw $at, -8($t1) -/* 07DA34 7F048F04 8DE1FFFC */ lw $at, -4($t7) -/* 07DA38 7F048F08 15EBFFF8 */ bne $t7, $t3, .L7F048EEC -/* 07DA3C 7F048F0C AD21FFFC */ sw $at, -4($t1) -/* 07DA40 7F048F10 8DE10000 */ lw $at, ($t7) -/* 07DA44 7F048F14 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 07DA48 7F048F18 AD210000 */ sw $at, ($t1) -/* 07DA4C 7F048F1C AFA201B0 */ sw $v0, 0x1b0($sp) -/* 07DA50 7F048F20 AFB201C0 */ sw $s2, 0x1c0($sp) -/* 07DA54 7F048F24 8E250014 */ lw $a1, 0x14($s1) -/* 07DA58 7F048F28 0FC1BCBE */ jal subcalcmatrices -/* 07DA5C 7F048F2C 02002025 */ move $a0, $s0 -/* 07DA60 7F048F30 26590040 */ addiu $t9, $s2, 0x40 -/* 07DA64 7F048F34 10000003 */ b .L7F048F44 -/* 07DA68 7F048F38 AFB9006C */ sw $t9, 0x6c($sp) -.L7F048F3C: -/* 07DA6C 7F048F3C 0FC16008 */ jal sub_GAME_7F058020 -/* 07DA70 7F048F40 AFA5006C */ sw $a1, 0x6c($sp) -.L7F048F44: -/* 07DA74 7F048F44 8E2C0008 */ lw $t4, 8($s1) -/* 07DA78 7F048F48 27A50200 */ addiu $a1, $sp, 0x200 -/* 07DA7C 7F048F4C 000C5080 */ sll $t2, $t4, 2 -/* 07DA80 7F048F50 05410006 */ bgez $t2, .L7F048F6C -/* 07DA84 7F048F54 00000000 */ nop -/* 07DA88 7F048F58 C62C0088 */ lwc1 $f12, 0x88($s1) -/* 07DA8C 7F048F5C 0FC161A2 */ jal sub_GAME_7F058688 -/* 07DA90 7F048F60 27A50200 */ addiu $a1, $sp, 0x200 -/* 07DA94 7F048F64 10000004 */ b .L7F048F78 -/* 07DA98 7F048F68 26450080 */ addiu $a1, $s2, 0x80 -.L7F048F6C: -/* 07DA9C 7F048F6C 0FC1617F */ jal sub_GAME_7F0585FC -/* 07DAA0 7F048F70 C62C0088 */ lwc1 $f12, 0x88($s1) -/* 07DAA4 7F048F74 26450080 */ addiu $a1, $s2, 0x80 -.L7F048F78: -/* 07DAA8 7F048F78 AFA50068 */ sw $a1, 0x68($sp) -/* 07DAAC 7F048F7C 0FC16008 */ jal sub_GAME_7F058020 -/* 07DAB0 7F048F80 27A40200 */ addiu $a0, $sp, 0x200 -/* 07DAB4 7F048F84 8FA401FC */ lw $a0, 0x1fc($sp) -/* 07DAB8 7F048F88 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DABC 7F048F8C 8FA50068 */ lw $a1, 0x68($sp) -/* 07DAC0 7F048F90 8FA4006C */ lw $a0, 0x6c($sp) -/* 07DAC4 7F048F94 0FC16026 */ jal sub_GAME_7F058098 -/* 07DAC8 7F048F98 8FA50068 */ lw $a1, 0x68($sp) -/* 07DACC 7F048F9C 8E8E0008 */ lw $t6, 8($s4) -/* 07DAD0 7F048FA0 02802025 */ move $a0, $s4 -/* 07DAD4 7F048FA4 00003025 */ move $a2, $zero -/* 07DAD8 7F048FA8 8DC30008 */ lw $v1, 8($t6) -/* 07DADC 7F048FAC 8C65000C */ lw $a1, 0xc($v1) -/* 07DAE0 7F048FB0 50A00013 */ beql $a1, $zero, .L7F049000 -/* 07DAE4 7F048FB4 8C650010 */ lw $a1, 0x10($v1) -/* 07DAE8 7F048FB8 0FC1B198 */ jal sub_GAME_7F06C660 -/* 07DAEC 7F048FBC 8CB20004 */ lw $s2, 4($a1) -/* 07DAF0 7F048FC0 00408025 */ move $s0, $v0 -/* 07DAF4 7F048FC4 C62C0088 */ lwc1 $f12, 0x88($s1) -/* 07DAF8 7F048FC8 0FC1615C */ jal sub_GAME_7F058570 -/* 07DAFC 7F048FCC 27A50200 */ addiu $a1, $sp, 0x200 -/* 07DB00 7F048FD0 27A40200 */ addiu $a0, $sp, 0x200 -/* 07DB04 7F048FD4 0FC16008 */ jal sub_GAME_7F058020 -/* 07DB08 7F048FD8 02002825 */ move $a1, $s0 -/* 07DB0C 7F048FDC 02402025 */ move $a0, $s2 -/* 07DB10 7F048FE0 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DB14 7F048FE4 02002825 */ move $a1, $s0 -/* 07DB18 7F048FE8 8FA4006C */ lw $a0, 0x6c($sp) -/* 07DB1C 7F048FEC 0FC16026 */ jal sub_GAME_7F058098 -/* 07DB20 7F048FF0 02002825 */ move $a1, $s0 -/* 07DB24 7F048FF4 8E8D0008 */ lw $t5, 8($s4) -/* 07DB28 7F048FF8 8DA30008 */ lw $v1, 8($t5) -/* 07DB2C 7F048FFC 8C650010 */ lw $a1, 0x10($v1) -.L7F049000: -/* 07DB30 7F049000 02802025 */ move $a0, $s4 -/* 07DB34 7F049004 00003025 */ move $a2, $zero -/* 07DB38 7F049008 50A0006F */ beql $a1, $zero, .L7F0491C8 -/* 07DB3C 7F04900C 8E8F0008 */ lw $t7, 8($s4) -/* 07DB40 7F049010 0FC1B198 */ jal sub_GAME_7F06C660 -/* 07DB44 7F049014 8CB20004 */ lw $s2, 4($a1) -/* 07DB48 7F049018 00408025 */ move $s0, $v0 -/* 07DB4C 7F04901C 02402025 */ move $a0, $s2 -/* 07DB50 7F049020 0FC16259 */ jal init_something_copy_posdata_to_it -/* 07DB54 7F049024 00402825 */ move $a1, $v0 -/* 07DB58 7F049028 8FA4006C */ lw $a0, 0x6c($sp) -/* 07DB5C 7F04902C 0FC16026 */ jal sub_GAME_7F058098 -/* 07DB60 7F049030 02002825 */ move $a1, $s0 -/* 07DB64 7F049034 10000064 */ b .L7F0491C8 -/* 07DB68 7F049038 8E8F0008 */ lw $t7, 8($s4) -.L7F04903C: -/* 07DB6C 7F04903C 16020061 */ bne $s0, $v0, .L7F0491C4 -/* 07DB70 7F049040 26450040 */ addiu $a1, $s2, 0x40 -/* 07DB74 7F049044 8E980008 */ lw $t8, 8($s4) -/* 07DB78 7F049048 8F030008 */ lw $v1, 8($t8) -/* 07DB7C 7F04904C 8C6B000C */ lw $t3, 0xc($v1) -/* 07DB80 7F049050 8C680004 */ lw $t0, 4($v1) -/* 07DB84 7F049054 8D6F0004 */ lw $t7, 4($t3) -/* 07DB88 7F049058 8D100004 */ lw $s0, 4($t0) -/* 07DB8C 7F04905C AFAF0164 */ sw $t7, 0x164($sp) -/* 07DB90 7F049060 8C690010 */ lw $t1, 0x10($v1) -/* 07DB94 7F049064 8D390004 */ lw $t9, 4($t1) -/* 07DB98 7F049068 AFB90160 */ sw $t9, 0x160($sp) -/* 07DB9C 7F04906C 8C6C0008 */ lw $t4, 8($v1) -/* 07DBA0 7F049070 8D8A0004 */ lw $t2, 4($t4) -/* 07DBA4 7F049074 AFAA015C */ sw $t2, 0x15c($sp) -/* 07DBA8 7F049078 8C6E0018 */ lw $t6, 0x18($v1) -/* 07DBAC 7F04907C 8DCD0004 */ lw $t5, 4($t6) -/* 07DBB0 7F049080 AFAD0158 */ sw $t5, 0x158($sp) -/* 07DBB4 7F049084 C62E00C8 */ lwc1 $f14, 0xc8($s1) -/* 07DBB8 7F049088 46007387 */ neg.s $f14, $f14 -/* 07DBBC 7F04908C 4616703C */ c.lt.s $f14, $f22 -/* 07DBC0 7F049090 00000000 */ nop -/* 07DBC4 7F049094 45020003 */ bc1fl .L7F0490A4 -/* 07DBC8 7F049098 C62C00CC */ lwc1 $f12, 0xcc($s1) -/* 07DBCC 7F04909C 46147380 */ add.s $f14, $f14, $f20 -/* 07DBD0 7F0490A0 C62C00CC */ lwc1 $f12, 0xcc($s1) -.L7F0490A4: -/* 07DBD4 7F0490A4 46006307 */ neg.s $f12, $f12 -/* 07DBD8 7F0490A8 4616603C */ c.lt.s $f12, $f22 -/* 07DBDC 7F0490AC 00000000 */ nop -/* 07DBE0 7F0490B0 45020003 */ bc1fl .L7F0490C0 -/* 07DBE4 7F0490B4 AFA5006C */ sw $a1, 0x6c($sp) -/* 07DBE8 7F0490B8 46146300 */ add.s $f12, $f12, $f20 -/* 07DBEC 7F0490BC AFA5006C */ sw $a1, 0x6c($sp) -.L7F0490C0: -/* 07DBF0 7F0490C0 0FC1617F */ jal sub_GAME_7F0585FC -/* 07DBF4 7F0490C4 E7AE0154 */ swc1 $f14, 0x154($sp) -/* 07DBF8 7F0490C8 02002025 */ move $a0, $s0 -/* 07DBFC 7F0490CC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DC00 7F0490D0 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DC04 7F0490D4 02402025 */ move $a0, $s2 -/* 07DC08 7F0490D8 0FC16026 */ jal sub_GAME_7F058098 -/* 07DC0C 7F0490DC 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DC10 7F0490E0 264500C0 */ addiu $a1, $s2, 0xc0 -/* 07DC14 7F0490E4 C7AC0154 */ lwc1 $f12, 0x154($sp) -/* 07DC18 7F0490E8 0FC1615C */ jal sub_GAME_7F058570 -/* 07DC1C 7F0490EC AFA50074 */ sw $a1, 0x74($sp) -/* 07DC20 7F0490F0 8FA40164 */ lw $a0, 0x164($sp) -/* 07DC24 7F0490F4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DC28 7F0490F8 8FA50074 */ lw $a1, 0x74($sp) -/* 07DC2C 7F0490FC 8FA4006C */ lw $a0, 0x6c($sp) -/* 07DC30 7F049100 0FC16026 */ jal sub_GAME_7F058098 -/* 07DC34 7F049104 8FA50074 */ lw $a1, 0x74($sp) -/* 07DC38 7F049108 3C018005 */ lui $at, %hi(D_80052B70) -/* 07DC3C 7F04910C 26500100 */ addiu $s0, $s2, 0x100 -/* 07DC40 7F049110 02002825 */ move $a1, $s0 -/* 07DC44 7F049114 0FC1617F */ jal sub_GAME_7F0585FC -/* 07DC48 7F049118 C42C2B70 */ lwc1 $f12, %lo(D_80052B70)($at) -/* 07DC4C 7F04911C 8FA40160 */ lw $a0, 0x160($sp) -/* 07DC50 7F049120 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DC54 7F049124 02002825 */ move $a1, $s0 -/* 07DC58 7F049128 8FA40074 */ lw $a0, 0x74($sp) -/* 07DC5C 7F04912C 0FC16026 */ jal sub_GAME_7F058098 -/* 07DC60 7F049130 02002825 */ move $a1, $s0 -/* 07DC64 7F049134 26450080 */ addiu $a1, $s2, 0x80 -/* 07DC68 7F049138 AFA50068 */ sw $a1, 0x68($sp) -/* 07DC6C 7F04913C 0FC16259 */ jal init_something_copy_posdata_to_it -/* 07DC70 7F049140 8FA4015C */ lw $a0, 0x15c($sp) -/* 07DC74 7F049144 8FA4006C */ lw $a0, 0x6c($sp) -/* 07DC78 7F049148 0FC16026 */ jal sub_GAME_7F058098 -/* 07DC7C 7F04914C 8FA50068 */ lw $a1, 0x68($sp) -/* 07DC80 7F049150 0FC1E111 */ jal sub_GAME_7F078444 -/* 07DC84 7F049154 00000000 */ nop -/* 07DC88 7F049158 27B0016C */ addiu $s0, $sp, 0x16c -/* 07DC8C 7F04915C 02003025 */ move $a2, $s0 -/* 07DC90 7F049160 00402025 */ move $a0, $v0 -/* 07DC94 7F049164 0FC16063 */ jal sub_GAME_7F05818C -/* 07DC98 7F049168 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DC9C 7F04916C 8FA40158 */ lw $a0, 0x158($sp) -/* 07DCA0 7F049170 02002825 */ move $a1, $s0 -/* 07DCA4 7F049174 26260084 */ addiu $a2, $s1, 0x84 -/* 07DCA8 7F049178 0FC0FD50 */ jal sub_GAME_7F03F540 -/* 07DCAC 7F04917C 26270080 */ addiu $a3, $s1, 0x80 -/* 07DCB0 7F049180 8E980008 */ lw $t8, 8($s4) -/* 07DCB4 7F049184 8F030008 */ lw $v1, 8($t8) -/* 07DCB8 7F049188 8C65001C */ lw $a1, 0x1c($v1) -/* 07DCBC 7F04918C 50A00008 */ beql $a1, $zero, .L7F0491B0 -/* 07DCC0 7F049190 8C650020 */ lw $a1, 0x20($v1) -/* 07DCC4 7F049194 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 07DCC8 7F049198 02802025 */ move $a0, $s4 -/* 07DCCC 7F04919C 8E2800C4 */ lw $t0, 0xc4($s1) -/* 07DCD0 7F0491A0 A4480000 */ sh $t0, ($v0) -/* 07DCD4 7F0491A4 8E8B0008 */ lw $t3, 8($s4) -/* 07DCD8 7F0491A8 8D630008 */ lw $v1, 8($t3) -/* 07DCDC 7F0491AC 8C650020 */ lw $a1, 0x20($v1) -.L7F0491B0: -/* 07DCE0 7F0491B0 50A00005 */ beql $a1, $zero, .L7F0491C8 -/* 07DCE4 7F0491B4 8E8F0008 */ lw $t7, 8($s4) -/* 07DCE8 7F0491B8 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 07DCEC 7F0491BC 02802025 */ move $a0, $s4 -/* 07DCF0 7F0491C0 AC400000 */ sw $zero, ($v0) -.L7F0491C4: -/* 07DCF4 7F0491C4 8E8F0008 */ lw $t7, 8($s4) -.L7F0491C8: -/* 07DCF8 7F0491C8 02802025 */ move $a0, $s4 -/* 07DCFC 7F0491CC 0FC1BBA9 */ jal sub_GAME_7F06EEA4 -/* 07DD00 7F0491D0 8DE50000 */ lw $a1, ($t7) -/* 07DD04 7F0491D4 8E89000C */ lw $t1, 0xc($s4) -/* 07DD08 7F0491D8 02602025 */ move $a0, $s3 -/* 07DD0C 7F0491DC C52A0038 */ lwc1 $f10, 0x38($t1) -/* 07DD10 7F0491E0 46005207 */ neg.s $f8, $f10 -/* 07DD14 7F0491E4 0FC10F5C */ jal handle_thrown_explosive_detonation -/* 07DD18 7F0491E8 E6680018 */ swc1 $f8, 0x18($s3) -/* 07DD1C 7F0491EC 8E640020 */ lw $a0, 0x20($s3) -/* 07DD20 7F0491F0 50800018 */ beql $a0, $zero, .L7F049254 -/* 07DD24 7F0491F4 8E230064 */ lw $v1, 0x64($s1) -/* 07DD28 7F0491F8 8C820024 */ lw $v0, 0x24($a0) -.L7F0491FC: -/* 07DD2C 7F0491FC 0FC110B7 */ jal sub_GAME_7F0442DC -/* 07DD30 7F049200 AFA20684 */ sw $v0, 0x684($sp) -/* 07DD34 7F049204 8FA40684 */ lw $a0, 0x684($sp) -/* 07DD38 7F049208 5480FFFC */ bnezl $a0, .L7F0491FC -/* 07DD3C 7F04920C 8C820024 */ lw $v0, 0x24($a0) -/* 07DD40 7F049210 10000010 */ b .L7F049254 -/* 07DD44 7F049214 8E230064 */ lw $v1, 0x64($s1) -.L7F049218: -/* 07DD48 7F049218 92790001 */ lbu $t9, 1($s3) -/* 07DD4C 7F04921C 02602025 */ move $a0, $s3 -/* 07DD50 7F049220 332CFFFD */ andi $t4, $t9, 0xfffd -/* 07DD54 7F049224 0FC10F5C */ jal handle_thrown_explosive_detonation -/* 07DD58 7F049228 A26C0001 */ sb $t4, 1($s3) -/* 07DD5C 7F04922C 8E640020 */ lw $a0, 0x20($s3) -/* 07DD60 7F049230 50800008 */ beql $a0, $zero, .L7F049254 -/* 07DD64 7F049234 8E230064 */ lw $v1, 0x64($s1) -/* 07DD68 7F049238 8C820024 */ lw $v0, 0x24($a0) -.L7F04923C: -/* 07DD6C 7F04923C 0FC11093 */ jal sub_GAME_7F04424C -/* 07DD70 7F049240 AFA20684 */ sw $v0, 0x684($sp) -/* 07DD74 7F049244 8FA40684 */ lw $a0, 0x684($sp) -/* 07DD78 7F049248 5480FFFC */ bnezl $a0, .L7F04923C -/* 07DD7C 7F04924C 8C820024 */ lw $v0, 0x24($a0) -/* 07DD80 7F049250 8E230064 */ lw $v1, 0x64($s1) -.L7F049254: -/* 07DD84 7F049254 2401FEFF */ li $at, -257 -/* 07DD88 7F049258 266D0008 */ addiu $t5, $s3, 8 -/* 07DD8C 7F04925C 306A0100 */ andi $t2, $v1, 0x100 -/* 07DD90 7F049260 1140001F */ beqz $t2, .L7F0492E0 -/* 07DD94 7F049264 00617024 */ and $t6, $v1, $at -/* 07DD98 7F049268 AE2E0064 */ sw $t6, 0x64($s1) -/* 07DD9C 7F04926C 0C002914 */ jal get_random_value -/* 07DDA0 7F049270 AFAD0070 */ sw $t5, 0x70($sp) -/* 07DDA4 7F049274 44822000 */ mtc1 $v0, $f4 -/* 07DDA8 7F049278 02202025 */ move $a0, $s1 -/* 07DDAC 7F04927C 04410005 */ bgez $v0, .L7F049294 -/* 07DDB0 7F049280 468021A0 */ cvt.s.w $f6, $f4 -/* 07DDB4 7F049284 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07DDB8 7F049288 44815000 */ mtc1 $at, $f10 -/* 07DDBC 7F04928C 00000000 */ nop -/* 07DDC0 7F049290 460A3180 */ add.s $f6, $f6, $f10 -.L7F049294: -/* 07DDC4 7F049294 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07DDC8 7F049298 44814000 */ mtc1 $at, $f8 -/* 07DDCC 7F04929C 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07DDD0 7F0492A0 44815000 */ mtc1 $at, $f10 -/* 07DDD4 7F0492A4 46083102 */ mul.s $f4, $f6, $f8 -/* 07DDD8 7F0492A8 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 07DDDC 7F0492AC 44814000 */ mtc1 $at, $f8 -/* 07DDE0 7F0492B0 8E380064 */ lw $t8, 0x64($s1) -/* 07DDE4 7F0492B4 3C010006 */ lui $at, 6 -/* 07DDE8 7F0492B8 8FA60070 */ lw $a2, 0x70($sp) -/* 07DDEC 7F0492BC 03014024 */ and $t0, $t8, $at -/* 07DDF0 7F0492C0 460A2182 */ mul.s $f6, $f4, $f10 -/* 07DDF4 7F0492C4 00003825 */ move $a3, $zero -/* 07DDF8 7F0492C8 00085C42 */ srl $t3, $t0, 0x11 -/* 07DDFC 7F0492CC AFAB0010 */ sw $t3, 0x10($sp) -/* 07DE00 7F0492D0 46083100 */ add.s $f4, $f6, $f8 -/* 07DE04 7F0492D4 44052000 */ mfc1 $a1, $f4 -/* 07DE08 7F0492D8 0FC13842 */ jal maybe_detonate_object -/* 07DE0C 7F0492DC 00000000 */ nop -.L7F0492E0: -/* 07DE10 7F0492E0 8FAF0678 */ lw $t7, 0x678($sp) -/* 07DE14 7F0492E4 51E0020D */ beql $t7, $zero, .L7F049B1C -/* 07DE18 7F0492E8 8FA90680 */ lw $t1, 0x680($sp) -/* 07DE1C 7F0492EC 92220003 */ lbu $v0, 3($s1) -/* 07DE20 7F0492F0 24010001 */ li $at, 1 -/* 07DE24 7F0492F4 54410006 */ bnel $v0, $at, .L7F049310 -/* 07DE28 7F0492F8 2401000D */ li $at, 13 -/* 07DE2C 7F0492FC 0FC14E8F */ jal sub_GAME_7F053A3C -/* 07DE30 7F049300 8E640004 */ lw $a0, 4($s3) -/* 07DE34 7F049304 10000202 */ b .L7F049B10 -/* 07DE38 7F049308 00000000 */ nop -/* 07DE3C 7F04930C 2401000D */ li $at, 13 -.L7F049310: -/* 07DE40 7F049310 144101FF */ bne $v0, $at, .L7F049B10 -/* 07DE44 7F049314 00000000 */ nop -/* 07DE48 7F049318 0FC2FF01 */ jal get_controls_locked_flag -/* 07DE4C 7F04931C 00000000 */ nop -/* 07DE50 7F049320 144001FB */ bnez $v0, .L7F049B10 -/* 07DE54 7F049324 00000000 */ nop -/* 07DE58 7F049328 8E700004 */ lw $s0, 4($s3) -/* 07DE5C 7F04932C AFA0013C */ sw $zero, 0x13c($sp) -/* 07DE60 7F049330 AFA00138 */ sw $zero, 0x138($sp) -/* 07DE64 7F049334 8E0900D0 */ lw $t1, 0xd0($s0) -/* 07DE68 7F049338 512001E4 */ beql $t1, $zero, .L7F049ACC -/* 07DE6C 7F04933C 8E980008 */ lw $t8, 8($s4) -/* 07DE70 7F049340 8E390008 */ lw $t9, 8($s1) -/* 07DE74 7F049344 001960C0 */ sll $t4, $t9, 3 -/* 07DE78 7F049348 058201E0 */ bltzl $t4, .L7F049ACC -/* 07DE7C 7F04934C 8E980008 */ lw $t8, 8($s4) -/* 07DE80 7F049350 8E0A00AC */ lw $t2, 0xac($s0) -/* 07DE84 7F049354 3C0C8005 */ lui $t4, %hi(global_timer) -/* 07DE88 7F049358 254E0001 */ addiu $t6, $t2, 1 -/* 07DE8C 7F04935C 31CD0001 */ andi $t5, $t6, 1 -/* 07DE90 7F049360 AE0E00AC */ sw $t6, 0xac($s0) -/* 07DE94 7F049364 2DB80001 */ sltiu $t8, $t5, 1 -/* 07DE98 7F049368 AFB8013C */ sw $t8, 0x13c($sp) -/* 07DE9C 7F04936C 8E880008 */ lw $t0, 8($s4) -/* 07DEA0 7F049370 39A90001 */ xori $t1, $t5, 1 -/* 07DEA4 7F049374 2D290001 */ sltiu $t1, $t1, 1 -/* 07DEA8 7F049378 8D0B0008 */ lw $t3, 8($t0) -/* 07DEAC 7F04937C 8D6F0014 */ lw $t7, 0x14($t3) -/* 07DEB0 7F049380 51E00003 */ beql $t7, $zero, .L7F049390 -/* 07DEB4 7F049384 8E1900C0 */ lw $t9, 0xc0($s0) -/* 07DEB8 7F049388 AFA90138 */ sw $t1, 0x138($sp) -/* 07DEBC 7F04938C 8E1900C0 */ lw $t9, 0xc0($s0) -.L7F049390: -/* 07DEC0 7F049390 8D8C837C */ lw $t4, %lo(global_timer)($t4) -/* 07DEC4 7F049394 032C082A */ slt $at, $t9, $t4 -/* 07DEC8 7F049398 50200032 */ beql $at, $zero, .L7F049464 -/* 07DECC 7F04939C 8FAF013C */ lw $t7, 0x13c($sp) -/* 07DED0 7F0493A0 8E0400C4 */ lw $a0, 0xc4($s0) -/* 07DED4 7F0493A4 50800008 */ beql $a0, $zero, .L7F0493C8 -/* 07DED8 7F0493A8 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07DEDC 7F0493AC 0C00237C */ jal sfxGetArg0Unk3F -/* 07DEE0 7F0493B0 00000000 */ nop -/* 07DEE4 7F0493B4 50400004 */ beql $v0, $zero, .L7F0493C8 -/* 07DEE8 7F0493B8 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07DEEC 7F0493BC 0C002408 */ jal sfxDeactivate -/* 07DEF0 7F0493C0 8E0400C4 */ lw $a0, 0xc4($s0) -/* 07DEF4 7F0493C4 8E0400C8 */ lw $a0, 0xc8($s0) -.L7F0493C8: -/* 07DEF8 7F0493C8 50800008 */ beql $a0, $zero, .L7F0493EC -/* 07DEFC 7F0493CC 8E0A00C4 */ lw $t2, 0xc4($s0) -/* 07DF00 7F0493D0 0C00237C */ jal sfxGetArg0Unk3F -/* 07DF04 7F0493D4 00000000 */ nop -/* 07DF08 7F0493D8 50400004 */ beql $v0, $zero, .L7F0493EC -/* 07DF0C 7F0493DC 8E0A00C4 */ lw $t2, 0xc4($s0) -/* 07DF10 7F0493E0 0C002408 */ jal sfxDeactivate -/* 07DF14 7F0493E4 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07DF18 7F0493E8 8E0A00C4 */ lw $t2, 0xc4($s0) -.L7F0493EC: -/* 07DF1C 7F0493EC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07DF20 7F0493F0 240500FD */ li $a1, 253 -/* 07DF24 7F0493F4 1540000A */ bnez $t2, .L7F049420 -/* 07DF28 7F0493F8 260600C4 */ addiu $a2, $s0, 0xc4 -/* 07DF2C 7F0493FC 266E0008 */ addiu $t6, $s3, 8 -/* 07DF30 7F049400 AFAE0070 */ sw $t6, 0x70($sp) -/* 07DF34 7F049404 0C002382 */ jal play_sfx_a1 -/* 07DF38 7F049408 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07DF3C 7F04940C 8E0400C4 */ lw $a0, 0xc4($s0) -/* 07DF40 7F049410 0FC14E84 */ jal sub_GAME_7F053A10 -/* 07DF44 7F049414 8FA50070 */ lw $a1, 0x70($sp) -/* 07DF48 7F049418 1000000D */ b .L7F049450 -/* 07DF4C 7F04941C 00000000 */ nop -.L7F049420: -/* 07DF50 7F049420 8E0D00C8 */ lw $t5, 0xc8($s0) -/* 07DF54 7F049424 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 07DF58 7F049428 240500FD */ li $a1, 253 -/* 07DF5C 7F04942C 15A00008 */ bnez $t5, .L7F049450 -/* 07DF60 7F049430 260600C8 */ addiu $a2, $s0, 0xc8 -/* 07DF64 7F049434 26780008 */ addiu $t8, $s3, 8 -/* 07DF68 7F049438 AFB80070 */ sw $t8, 0x70($sp) -/* 07DF6C 7F04943C 0C002382 */ jal play_sfx_a1 -/* 07DF70 7F049440 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07DF74 7F049444 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07DF78 7F049448 0FC14E84 */ jal sub_GAME_7F053A10 -/* 07DF7C 7F04944C 8FA50070 */ lw $a1, 0x70($sp) -.L7F049450: -/* 07DF80 7F049450 3C088005 */ lui $t0, %hi(global_timer) -/* 07DF84 7F049454 8D08837C */ lw $t0, %lo(global_timer)($t0) -/* 07DF88 7F049458 250B0002 */ addiu $t3, $t0, 2 -/* 07DF8C 7F04945C AE0B00C0 */ sw $t3, 0xc0($s0) -/* 07DF90 7F049460 8FAF013C */ lw $t7, 0x13c($sp) -.L7F049464: -/* 07DF94 7F049464 8FA90138 */ lw $t1, 0x138($sp) -/* 07DF98 7F049468 24190001 */ li $t9, 1 -/* 07DF9C 7F04946C 55E00004 */ bnezl $t7, .L7F049480 -/* 07DFA0 7F049470 AFB9011C */ sw $t9, 0x11c($sp) -/* 07DFA4 7F049474 51200195 */ beql $t1, $zero, .L7F049ACC -/* 07DFA8 7F049478 8E980008 */ lw $t8, 8($s4) -/* 07DFAC 7F04947C AFB9011C */ sw $t9, 0x11c($sp) -.L7F049480: -/* 07DFB0 7F049480 AFA0010C */ sw $zero, 0x10c($sp) -/* 07DFB4 7F049484 8E6C0014 */ lw $t4, 0x14($s3) -/* 07DFB8 7F049488 AFAC0108 */ sw $t4, 0x108($sp) -/* 07DFBC 7F04948C 8E0A00AC */ lw $t2, 0xac($s0) -/* 07DFC0 7F049490 314E0003 */ andi $t6, $t2, 3 -/* 07DFC4 7F049494 2DCD0001 */ sltiu $t5, $t6, 1 -/* 07DFC8 7F049498 0FC225E6 */ jal get_curplayer_positiondata -/* 07DFCC 7F04949C AFAD0104 */ sw $t5, 0x104($sp) -/* 07DFD0 7F0494A0 AFA20100 */ sw $v0, 0x100($sp) -/* 07DFD4 7F0494A4 8E980008 */ lw $t8, 8($s4) -/* 07DFD8 7F0494A8 24040005 */ li $a0, 5 -/* 07DFDC 7F0494AC 8F030008 */ lw $v1, 8($t8) -/* 07DFE0 7F0494B0 8C68001C */ lw $t0, 0x1c($v1) -/* 07DFE4 7F0494B4 51000007 */ beql $t0, $zero, .L7F0494D4 -/* 07DFE8 7F0494B8 92690001 */ lbu $t1, 1($s3) -/* 07DFEC 7F0494BC 8E0B00AC */ lw $t3, 0xac($s0) -/* 07DFF0 7F0494C0 316F0007 */ andi $t7, $t3, 7 -/* 07DFF4 7F0494C4 55E00003 */ bnezl $t7, .L7F0494D4 -/* 07DFF8 7F0494C8 92690001 */ lbu $t1, 1($s3) -/* 07DFFC 7F0494CC 24040007 */ li $a0, 7 -/* 07E000 7F0494D0 92690001 */ lbu $t1, 1($s3) -.L7F0494D4: -/* 07E004 7F0494D4 31390002 */ andi $t9, $t1, 2 -/* 07E008 7F0494D8 1320002D */ beqz $t9, .L7F049590 -/* 07E00C 7F0494DC 00048880 */ sll $s1, $a0, 2 -/* 07E010 7F0494E0 00716021 */ addu $t4, $v1, $s1 -/* 07E014 7F0494E4 8D850000 */ lw $a1, ($t4) -/* 07E018 7F0494E8 02802025 */ move $a0, $s4 -/* 07E01C 7F0494EC 50A00029 */ beql $a1, $zero, .L7F049594 -/* 07E020 7F0494F0 C6640008 */ lwc1 $f4, 8($s3) -/* 07E024 7F0494F4 0FC1B198 */ jal sub_GAME_7F06C660 -/* 07E028 7F0494F8 00003025 */ move $a2, $zero -/* 07E02C 7F0494FC 8E8A0008 */ lw $t2, 8($s4) -/* 07E030 7F049500 00409025 */ move $s2, $v0 -/* 07E034 7F049504 8D4E0008 */ lw $t6, 8($t2) -/* 07E038 7F049508 01D16821 */ addu $t5, $t6, $s1 -/* 07E03C 7F04950C 8DB80000 */ lw $t8, ($t5) -/* 07E040 7F049510 8F030004 */ lw $v1, 4($t8) -/* 07E044 7F049514 C46A0000 */ lwc1 $f10, ($v1) -/* 07E048 7F049518 E7AA012C */ swc1 $f10, 0x12c($sp) -/* 07E04C 7F04951C C4660004 */ lwc1 $f6, 4($v1) -/* 07E050 7F049520 E7A60130 */ swc1 $f6, 0x130($sp) -/* 07E054 7F049524 C4680008 */ lwc1 $f8, 8($v1) -/* 07E058 7F049528 0FC1E111 */ jal sub_GAME_7F078444 -/* 07E05C 7F04952C E7A80134 */ swc1 $f8, 0x134($sp) -/* 07E060 7F049530 27B100B8 */ addiu $s1, $sp, 0xb8 -/* 07E064 7F049534 02203025 */ move $a2, $s1 -/* 07E068 7F049538 00402025 */ move $a0, $v0 -/* 07E06C 7F04953C 0FC16063 */ jal sub_GAME_7F05818C -/* 07E070 7F049540 02402825 */ move $a1, $s2 -/* 07E074 7F049544 02202025 */ move $a0, $s1 -/* 07E078 7F049548 0FC1611D */ jal sub_GAME_7F058474 -/* 07E07C 7F04954C 27A5012C */ addiu $a1, $sp, 0x12c -/* 07E080 7F049550 C7A40134 */ lwc1 $f4, 0x134($sp) -/* 07E084 7F049554 8E650008 */ lw $a1, 8($s3) -/* 07E088 7F049558 8E660010 */ lw $a2, 0x10($s3) -/* 07E08C 7F04955C 27A40108 */ addiu $a0, $sp, 0x108 -/* 07E090 7F049560 8FA7012C */ lw $a3, 0x12c($sp) -/* 07E094 7F049564 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 07E098 7F049568 E7A40010 */ swc1 $f4, 0x10($sp) -/* 07E09C 7F04956C 1440000E */ bnez $v0, .L7F0495A8 -/* 07E0A0 7F049570 00000000 */ nop -/* 07E0A4 7F049574 C66A0008 */ lwc1 $f10, 8($s3) -/* 07E0A8 7F049578 E7AA012C */ swc1 $f10, 0x12c($sp) -/* 07E0AC 7F04957C C666000C */ lwc1 $f6, 0xc($s3) -/* 07E0B0 7F049580 E7A60130 */ swc1 $f6, 0x130($sp) -/* 07E0B4 7F049584 C6680010 */ lwc1 $f8, 0x10($s3) -/* 07E0B8 7F049588 10000007 */ b .L7F0495A8 -/* 07E0BC 7F04958C E7A80134 */ swc1 $f8, 0x134($sp) -.L7F049590: -/* 07E0C0 7F049590 C6640008 */ lwc1 $f4, 8($s3) -.L7F049594: -/* 07E0C4 7F049594 E7A4012C */ swc1 $f4, 0x12c($sp) -/* 07E0C8 7F049598 C66A000C */ lwc1 $f10, 0xc($s3) -/* 07E0CC 7F04959C E7AA0130 */ swc1 $f10, 0x130($sp) -/* 07E0D0 7F0495A0 C6660010 */ lwc1 $f6, 0x10($s3) -/* 07E0D4 7F0495A4 E7A60134 */ swc1 $f6, 0x134($sp) -.L7F0495A8: -/* 07E0D8 7F0495A8 0FC15FA8 */ jal cosf -/* 07E0DC 7F0495AC C60C009C */ lwc1 $f12, 0x9c($s0) -/* 07E0E0 7F0495B0 C60C0090 */ lwc1 $f12, 0x90($s0) -/* 07E0E4 7F0495B4 0FC15FAB */ jal sinf -/* 07E0E8 7F0495B8 E7A0007C */ swc1 $f0, 0x7c($sp) -/* 07E0EC 7F0495BC C7A2007C */ lwc1 $f2, 0x7c($sp) -/* 07E0F0 7F0495C0 46020202 */ mul.s $f8, $f0, $f2 -/* 07E0F4 7F0495C4 E7A80120 */ swc1 $f8, 0x120($sp) -/* 07E0F8 7F0495C8 0FC15FAB */ jal sinf -/* 07E0FC 7F0495CC C60C009C */ lwc1 $f12, 0x9c($s0) -/* 07E100 7F0495D0 E7A00124 */ swc1 $f0, 0x124($sp) -/* 07E104 7F0495D4 0FC15FA8 */ jal cosf -/* 07E108 7F0495D8 C60C009C */ lwc1 $f12, 0x9c($s0) -/* 07E10C 7F0495DC C60C0090 */ lwc1 $f12, 0x90($s0) -/* 07E110 7F0495E0 0FC15FA8 */ jal cosf -/* 07E114 7F0495E4 E7A0007C */ swc1 $f0, 0x7c($sp) -/* 07E118 7F0495E8 C7A2007C */ lwc1 $f2, 0x7c($sp) -/* 07E11C 7F0495EC 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07E120 7F0495F0 44816000 */ mtc1 $at, $f12 -/* 07E124 7F0495F4 46020382 */ mul.s $f14, $f0, $f2 -/* 07E128 7F0495F8 C7A40120 */ lwc1 $f4, 0x120($sp) -/* 07E12C 7F0495FC C7A6012C */ lwc1 $f6, 0x12c($sp) -/* 07E130 7F049600 460C2282 */ mul.s $f10, $f4, $f12 -/* 07E134 7F049604 C7A40124 */ lwc1 $f4, 0x124($sp) -/* 07E138 7F049608 E7AE0128 */ swc1 $f14, 0x128($sp) -/* 07E13C 7F04960C 46065200 */ add.s $f8, $f10, $f6 -/* 07E140 7F049610 460C2282 */ mul.s $f10, $f4, $f12 -/* 07E144 7F049614 C7A60130 */ lwc1 $f6, 0x130($sp) -/* 07E148 7F049618 460C7102 */ mul.s $f4, $f14, $f12 -/* 07E14C 7F04961C E7A80110 */ swc1 $f8, 0x110($sp) -/* 07E150 7F049620 46065200 */ add.s $f8, $f10, $f6 -/* 07E154 7F049624 C7AA0134 */ lwc1 $f10, 0x134($sp) -/* 07E158 7F049628 460A2180 */ add.s $f6, $f4, $f10 -/* 07E15C 7F04962C E7A80114 */ swc1 $f8, 0x114($sp) -/* 07E160 7F049630 0FC2C731 */ jal sub_GAME_7F0B1CC4 -/* 07E164 7F049634 E7A60118 */ swc1 $f6, 0x118($sp) -/* 07E168 7F049638 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 07E16C 7F04963C 44810000 */ mtc1 $at, $f0 -/* 07E170 7F049640 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07E174 7F049644 44812000 */ mtc1 $at, $f4 -/* 07E178 7F049648 C7A80118 */ lwc1 $f8, 0x118($sp) -/* 07E17C 7F04964C 24080002 */ li $t0, 2 -/* 07E180 7F049650 AFA80014 */ sw $t0, 0x14($sp) -/* 07E184 7F049654 27A40108 */ addiu $a0, $sp, 0x108 -/* 07E188 7F049658 8FA5012C */ lw $a1, 0x12c($sp) -/* 07E18C 7F04965C 8FA60134 */ lw $a2, 0x134($sp) -/* 07E190 7F049660 8FA70110 */ lw $a3, 0x110($sp) -/* 07E194 7F049664 E7B60020 */ swc1 $f22, 0x20($sp) -/* 07E198 7F049668 E7A00018 */ swc1 $f0, 0x18($sp) -/* 07E19C 7F04966C E7A0001C */ swc1 $f0, 0x1c($sp) -/* 07E1A0 7F049670 E7A80010 */ swc1 $f8, 0x10($sp) -/* 07E1A4 7F049674 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 07E1A8 7F049678 E7A40024 */ swc1 $f4, 0x24($sp) -/* 07E1AC 7F04967C 14400017 */ bnez $v0, .L7F0496DC -/* 07E1B0 7F049680 27A60110 */ addiu $a2, $sp, 0x110 -/* 07E1B4 7F049684 27A4012C */ addiu $a0, $sp, 0x12c -/* 07E1B8 7F049688 0FC09893 */ jal sub_GAME_7F02624C -/* 07E1BC 7F04968C 27A50120 */ addiu $a1, $sp, 0x120 -/* 07E1C0 7F049690 3C0141D0 */ li $at, 0x41D00000 # 26.000000 -/* 07E1C4 7F049694 44818000 */ mtc1 $at, $f16 -/* 07E1C8 7F049698 C7A60120 */ lwc1 $f6, 0x120($sp) -/* 07E1CC 7F04969C C7AA0110 */ lwc1 $f10, 0x110($sp) -/* 07E1D0 7F0496A0 C7AE0128 */ lwc1 $f14, 0x128($sp) -/* 07E1D4 7F0496A4 46068202 */ mul.s $f8, $f16, $f6 -/* 07E1D8 7F0496A8 C7A60114 */ lwc1 $f6, 0x114($sp) -/* 07E1DC 7F0496AC 8FAB0108 */ lw $t3, 0x108($sp) -/* 07E1E0 7F0496B0 AFAB010C */ sw $t3, 0x10c($sp) -/* 07E1E4 7F0496B4 46085101 */ sub.s $f4, $f10, $f8 -/* 07E1E8 7F0496B8 C7AA0124 */ lwc1 $f10, 0x124($sp) -/* 07E1EC 7F0496BC 460A8202 */ mul.s $f8, $f16, $f10 -/* 07E1F0 7F0496C0 E7A40110 */ swc1 $f4, 0x110($sp) -/* 07E1F4 7F0496C4 C7AA0118 */ lwc1 $f10, 0x118($sp) -/* 07E1F8 7F0496C8 46083101 */ sub.s $f4, $f6, $f8 -/* 07E1FC 7F0496CC 460E8182 */ mul.s $f6, $f16, $f14 -/* 07E200 7F0496D0 E7A40114 */ swc1 $f4, 0x114($sp) -/* 07E204 7F0496D4 46065201 */ sub.s $f8, $f10, $f6 -/* 07E208 7F0496D8 E7A80118 */ swc1 $f8, 0x118($sp) -.L7F0496DC: -/* 07E20C 7F0496DC 3C0F8005 */ lui $t7, %hi(global_timer) -/* 07E210 7F0496E0 8DEF837C */ lw $t7, %lo(global_timer)($t7) -/* 07E214 7F0496E4 8E0900BC */ lw $t1, 0xbc($s0) -/* 07E218 7F0496E8 27B10110 */ addiu $s1, $sp, 0x110 -/* 07E21C 7F0496EC 8FA50100 */ lw $a1, 0x100($sp) -/* 07E220 7F0496F0 15E90052 */ bne $t7, $t1, .L7F04983C -/* 07E224 7F0496F4 C7AA012C */ lwc1 $f10, 0x12c($sp) -/* 07E228 7F0496F8 C4A40008 */ lwc1 $f4, 8($a1) -/* 07E22C 7F0496FC C4A6000C */ lwc1 $f6, 0xc($a1) -/* 07E230 7F049700 C7A80130 */ lwc1 $f8, 0x130($sp) -/* 07E234 7F049704 460A2001 */ sub.s $f0, $f4, $f10 -/* 07E238 7F049708 C4A40010 */ lwc1 $f4, 0x10($a1) -/* 07E23C 7F04970C E7AA0058 */ swc1 $f10, 0x58($sp) -/* 07E240 7F049710 46083081 */ sub.s $f2, $f6, $f8 -/* 07E244 7F049714 C7A60134 */ lwc1 $f6, 0x134($sp) -/* 07E248 7F049718 46062301 */ sub.s $f12, $f4, $f6 -/* 07E24C 7F04971C 46000102 */ mul.s $f4, $f0, $f0 -/* 07E250 7F049720 00000000 */ nop -/* 07E254 7F049724 46021282 */ mul.s $f10, $f2, $f2 -/* 07E258 7F049728 460A2100 */ add.s $f4, $f4, $f10 -/* 07E25C 7F04972C 460C6282 */ mul.s $f10, $f12, $f12 -/* 07E260 7F049730 460A2500 */ add.s $f20, $f4, $f10 -/* 07E264 7F049734 C7AA0058 */ lwc1 $f10, 0x58($sp) -/* 07E268 7F049738 C7A40110 */ lwc1 $f4, 0x110($sp) -/* 07E26C 7F04973C 460A2001 */ sub.s $f0, $f4, $f10 -/* 07E270 7F049740 C7A40114 */ lwc1 $f4, 0x114($sp) -/* 07E274 7F049744 C7AA0118 */ lwc1 $f10, 0x118($sp) -/* 07E278 7F049748 46082081 */ sub.s $f2, $f4, $f8 -/* 07E27C 7F04974C 46000102 */ mul.s $f4, $f0, $f0 -/* 07E280 7F049750 46065301 */ sub.s $f12, $f10, $f6 -/* 07E284 7F049754 46021202 */ mul.s $f8, $f2, $f2 -/* 07E288 7F049758 46082280 */ add.s $f10, $f4, $f8 -/* 07E28C 7F04975C 460C6182 */ mul.s $f6, $f12, $f12 -/* 07E290 7F049760 46065100 */ add.s $f4, $f10, $f6 -/* 07E294 7F049764 4604A03E */ c.le.s $f20, $f4 -/* 07E298 7F049768 00000000 */ nop -/* 07E29C 7F04976C 45000033 */ bc1f .L7F04983C -/* 07E2A0 7F049770 00000000 */ nop -/* 07E2A4 7F049774 0FC227A9 */ jal check_if_bond_is_invincible -/* 07E2A8 7F049778 00000000 */ nop -/* 07E2AC 7F04977C 54400030 */ bnezl $v0, .L7F049840 -/* 07E2B0 7F049780 8FB9011C */ lw $t9, 0x11c($sp) -/* 07E2B4 7F049784 0C007DF8 */ jal sqrtf -/* 07E2B8 7F049788 4600A306 */ mov.s $f12, $f20 -/* 07E2BC 7F04978C 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 07E2C0 7F049790 44816000 */ mtc1 $at, $f12 -/* 07E2C4 7F049794 3C018005 */ lui $at, %hi(D_80052B74) -/* 07E2C8 7F049798 C4282B74 */ lwc1 $f8, %lo(D_80052B74)($at) -/* 07E2CC 7F04979C 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07E2D0 7F0497A0 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07E2D4 7F0497A4 3C018003 */ lui $at, %hi(D_80030B1C) -/* 07E2D8 7F0497A8 4600603C */ c.lt.s $f12, $f0 -/* 07E2DC 7F0497AC 460A4182 */ mul.s $f6, $f8, $f10 -/* 07E2E0 7F0497B0 C4240B1C */ lwc1 $f4, %lo(D_80030B1C)($at) -/* 07E2E4 7F0497B4 46043082 */ mul.s $f2, $f6, $f4 -/* 07E2E8 7F0497B8 45020005 */ bc1fl .L7F0497D0 -/* 07E2EC 7F0497BC C60A00D4 */ lwc1 $f10, 0xd4($s0) -/* 07E2F0 7F0497C0 46006203 */ div.s $f8, $f12, $f0 -/* 07E2F4 7F0497C4 46081082 */ mul.s $f2, $f2, $f8 -/* 07E2F8 7F0497C8 00000000 */ nop -/* 07E2FC 7F0497CC C60A00D4 */ lwc1 $f10, 0xd4($s0) -.L7F0497D0: -/* 07E300 7F0497D0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07E304 7F0497D4 44814000 */ mtc1 $at, $f8 -/* 07E308 7F0497D8 46025180 */ add.s $f6, $f10, $f2 -/* 07E30C 7F0497DC E60600D4 */ swc1 $f6, 0xd4($s0) -/* 07E310 7F0497E0 C60400D4 */ lwc1 $f4, 0xd4($s0) -/* 07E314 7F0497E4 4604403E */ c.le.s $f8, $f4 -/* 07E318 7F0497E8 00000000 */ nop -/* 07E31C 7F0497EC 45020014 */ bc1fl .L7F049840 -/* 07E320 7F0497F0 8FB9011C */ lw $t9, 0x11c($sp) -/* 07E324 7F0497F4 0FC177E1 */ jal sub_GAME_7F05DF84 -/* 07E328 7F0497F8 2404000E */ li $a0, 14 -/* 07E32C 7F0497FC 3C013E00 */ li $at, 0x3E000000 # 0.125000 -/* 07E330 7F049800 44815000 */ mtc1 $at, $f10 -/* 07E334 7F049804 3C018003 */ lui $at, %hi(D_80030B20) -/* 07E338 7F049808 C4240B20 */ lwc1 $f4, %lo(D_80030B20)($at) -/* 07E33C 7F04980C 460A0182 */ mul.s $f6, $f0, $f10 -/* 07E340 7F049810 C60E0090 */ lwc1 $f14, 0x90($s0) -/* 07E344 7F049814 2406FFFF */ li $a2, -1 -/* 07E348 7F049818 24070001 */ li $a3, 1 -/* 07E34C 7F04981C 46043302 */ mul.s $f12, $f6, $f4 -/* 07E350 7F049820 0FC22793 */ jal sub_GAME_7F089E4C -/* 07E354 7F049824 00000000 */ nop -/* 07E358 7F049828 0FC227A9 */ jal check_if_bond_is_invincible -/* 07E35C 7F04982C E61600D4 */ swc1 $f22, 0xd4($s0) -/* 07E360 7F049830 50400003 */ beql $v0, $zero, .L7F049840 -/* 07E364 7F049834 8FB9011C */ lw $t9, 0x11c($sp) -/* 07E368 7F049838 AFA0011C */ sw $zero, 0x11c($sp) -.L7F04983C: -/* 07E36C 7F04983C 8FB9011C */ lw $t9, 0x11c($sp) -.L7F049840: -/* 07E370 7F049840 3C0141D0 */ li $at, 0x41D00000 # 26.000000 -/* 07E374 7F049844 44818000 */ mtc1 $at, $f16 -/* 07E378 7F049848 1320000F */ beqz $t9, .L7F049888 -/* 07E37C 7F04984C 8FA50100 */ lw $a1, 0x100($sp) -/* 07E380 7F049850 8FAC010C */ lw $t4, 0x10c($sp) -/* 07E384 7F049854 02202025 */ move $a0, $s1 -/* 07E388 7F049858 24050001 */ li $a1, 1 -/* 07E38C 7F04985C 51800005 */ beql $t4, $zero, .L7F049874 -/* 07E390 7F049860 2404000E */ li $a0, 14 -/* 07E394 7F049864 44068000 */ mfc1 $a2, $f16 -/* 07E398 7F049868 0FC28F87 */ jal sub_GAME_7F0A3E1C -/* 07E39C 7F04986C 91870003 */ lbu $a3, 3($t4) -/* 07E3A0 7F049870 2404000E */ li $a0, 14 -.L7F049874: -/* 07E3A4 7F049874 02202825 */ move $a1, $s1 -/* 07E3A8 7F049878 0FC191DD */ jal recall_joy2_hits_edit_flag -/* 07E3AC 7F04987C 2406FFFF */ li $a2, -1 -/* 07E3B0 7F049880 1000000B */ b .L7F0498B0 -/* 07E3B4 7F049884 8FAA0104 */ lw $t2, 0x104($sp) -.L7F049888: -/* 07E3B8 7F049888 C4A80008 */ lwc1 $f8, 8($a1) -/* 07E3BC 7F04988C 2404000E */ li $a0, 14 -/* 07E3C0 7F049890 2406FFFF */ li $a2, -1 -/* 07E3C4 7F049894 E7A80110 */ swc1 $f8, 0x110($sp) -/* 07E3C8 7F049898 C4AA000C */ lwc1 $f10, 0xc($a1) -/* 07E3CC 7F04989C E7AA0114 */ swc1 $f10, 0x114($sp) -/* 07E3D0 7F0498A0 C4A60010 */ lwc1 $f6, 0x10($a1) -/* 07E3D4 7F0498A4 0FC19107 */ jal recall_joy2_hits_edit_detail_edit_flag -/* 07E3D8 7F0498A8 E7A60118 */ swc1 $f6, 0x118($sp) -/* 07E3DC 7F0498AC 8FAA0104 */ lw $t2, 0x104($sp) -.L7F0498B0: -/* 07E3E0 7F0498B0 C7A4012C */ lwc1 $f4, 0x12c($sp) -/* 07E3E4 7F0498B4 51400085 */ beql $t2, $zero, .L7F049ACC -/* 07E3E8 7F0498B8 8E980008 */ lw $t8, 8($s4) -/* 07E3EC 7F0498BC 8E0300CC */ lw $v1, 0xcc($s0) -/* 07E3F0 7F0498C0 E4640004 */ swc1 $f4, 4($v1) -/* 07E3F4 7F0498C4 C7A80130 */ lwc1 $f8, 0x130($sp) -/* 07E3F8 7F0498C8 C4640004 */ lwc1 $f4, 4($v1) -/* 07E3FC 7F0498CC E4680008 */ swc1 $f8, 8($v1) -/* 07E400 7F0498D0 C7AA0134 */ lwc1 $f10, 0x134($sp) -/* 07E404 7F0498D4 E46A000C */ swc1 $f10, 0xc($v1) -/* 07E408 7F0498D8 C7A60110 */ lwc1 $f6, 0x110($sp) -/* 07E40C 7F0498DC 46043201 */ sub.s $f8, $f6, $f4 -/* 07E410 7F0498E0 C4660008 */ lwc1 $f6, 8($v1) -/* 07E414 7F0498E4 E4680010 */ swc1 $f8, 0x10($v1) -/* 07E418 7F0498E8 C7AA0114 */ lwc1 $f10, 0x114($sp) -/* 07E41C 7F0498EC C4620010 */ lwc1 $f2, 0x10($v1) -/* 07E420 7F0498F0 46065101 */ sub.s $f4, $f10, $f6 -/* 07E424 7F0498F4 C46A000C */ lwc1 $f10, 0xc($v1) -/* 07E428 7F0498F8 E4640014 */ swc1 $f4, 0x14($v1) -/* 07E42C 7F0498FC C7A80118 */ lwc1 $f8, 0x118($sp) -/* 07E430 7F049900 46021102 */ mul.s $f4, $f2, $f2 -/* 07E434 7F049904 C46E0014 */ lwc1 $f14, 0x14($v1) -/* 07E438 7F049908 460A4181 */ sub.s $f6, $f8, $f10 -/* 07E43C 7F04990C 460E7202 */ mul.s $f8, $f14, $f14 -/* 07E440 7F049910 E4660018 */ swc1 $f6, 0x18($v1) -/* 07E444 7F049914 C4600018 */ lwc1 $f0, 0x18($v1) -/* 07E448 7F049918 AFA30090 */ sw $v1, 0x90($sp) -/* 07E44C 7F04991C 46000182 */ mul.s $f6, $f0, $f0 -/* 07E450 7F049920 46082280 */ add.s $f10, $f4, $f8 -/* 07E454 7F049924 0C007DF8 */ jal sqrtf -/* 07E458 7F049928 460A3300 */ add.s $f12, $f6, $f10 -/* 07E45C 7F04992C 3C018005 */ lui $at, %hi(D_80052B78) -/* 07E460 7F049930 C42E2B78 */ lwc1 $f14, %lo(D_80052B78)($at) -/* 07E464 7F049934 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07E468 7F049938 44812000 */ mtc1 $at, $f4 -/* 07E46C 7F04993C 8FA30090 */ lw $v1, 0x90($sp) -/* 07E470 7F049940 4600703C */ c.lt.s $f14, $f0 -/* 07E474 7F049944 46000306 */ mov.s $f12, $f0 -/* 07E478 7F049948 46002083 */ div.s $f2, $f4, $f0 -/* 07E47C 7F04994C C4680010 */ lwc1 $f8, 0x10($v1) -/* 07E480 7F049950 C46A0014 */ lwc1 $f10, 0x14($v1) -/* 07E484 7F049954 3C0143FA */ li $at, 0x43FA0000 # 500.000000 -/* 07E488 7F049958 44810000 */ mtc1 $at, $f0 -/* 07E48C 7F04995C 46024182 */ mul.s $f6, $f8, $f2 -/* 07E490 7F049960 C4680018 */ lwc1 $f8, 0x18($v1) -/* 07E494 7F049964 46025102 */ mul.s $f4, $f10, $f2 -/* 07E498 7F049968 E4660010 */ swc1 $f6, 0x10($v1) -/* 07E49C 7F04996C 46024182 */ mul.s $f6, $f8, $f2 -/* 07E4A0 7F049970 E4640014 */ swc1 $f4, 0x14($v1) -/* 07E4A4 7F049974 45000002 */ bc1f .L7F049980 -/* 07E4A8 7F049978 E4660018 */ swc1 $f6, 0x18($v1) -/* 07E4AC 7F04997C 46007306 */ mov.s $f12, $f14 -.L7F049980: -/* 07E4B0 7F049980 4600603C */ c.lt.s $f12, $f0 -/* 07E4B4 7F049984 240E000E */ li $t6, 14 -/* 07E4B8 7F049988 A0600000 */ sb $zero, ($v1) -/* 07E4BC 7F04998C A06E0001 */ sb $t6, 1($v1) -/* 07E4C0 7F049990 45000002 */ bc1f .L7F04999C -/* 07E4C4 7F049994 E46C001C */ swc1 $f12, 0x1c($v1) -/* 07E4C8 7F049998 46000306 */ mov.s $f12, $f0 -.L7F04999C: -/* 07E4CC 7F04999C 806D0001 */ lb $t5, 1($v1) -/* 07E4D0 7F0499A0 24010016 */ li $at, 22 -/* 07E4D4 7F0499A4 15A10026 */ bne $t5, $at, .L7F049A40 -/* 07E4D8 7F0499A8 3C018005 */ lui $at, %hi(D_80052B7C) -/* 07E4DC 7F0499AC C4222B7C */ lwc1 $f2, %lo(D_80052B7C)($at) -/* 07E4E0 7F0499B0 3C013E80 */ li $at, 0x3E800000 # 0.250000 -/* 07E4E4 7F0499B4 44815000 */ mtc1 $at, $f10 -/* 07E4E8 7F0499B8 3C018005 */ lui $at, %hi(D_80052B80) -/* 07E4EC 7F0499BC 460C5102 */ mul.s $f4, $f10, $f12 -/* 07E4F0 7F0499C0 E4640020 */ swc1 $f4, 0x20($v1) -/* 07E4F4 7F0499C4 C4282B80 */ lwc1 $f8, %lo(D_80052B80)($at) -/* 07E4F8 7F0499C8 460C4002 */ mul.s $f0, $f8, $f12 -/* 07E4FC 7F0499CC 4600103C */ c.lt.s $f2, $f0 -/* 07E500 7F0499D0 E4600024 */ swc1 $f0, 0x24($v1) -/* 07E504 7F0499D4 45020003 */ bc1fl .L7F0499E4 -/* 07E508 7F0499D8 AFA30090 */ sw $v1, 0x90($sp) -/* 07E50C 7F0499DC E4620024 */ swc1 $f2, 0x24($v1) -/* 07E510 7F0499E0 AFA30090 */ sw $v1, 0x90($sp) -.L7F0499E4: -/* 07E514 7F0499E4 0C002914 */ jal get_random_value -/* 07E518 7F0499E8 E7AC0094 */ swc1 $f12, 0x94($sp) -/* 07E51C 7F0499EC 44823000 */ mtc1 $v0, $f6 -/* 07E520 7F0499F0 8FA30090 */ lw $v1, 0x90($sp) -/* 07E524 7F0499F4 C7AC0094 */ lwc1 $f12, 0x94($sp) -/* 07E528 7F0499F8 04410005 */ bgez $v0, .L7F049A10 -/* 07E52C 7F0499FC 468032A0 */ cvt.s.w $f10, $f6 -/* 07E530 7F049A00 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07E534 7F049A04 44812000 */ mtc1 $at, $f4 -/* 07E538 7F049A08 00000000 */ nop -/* 07E53C 7F049A0C 46045280 */ add.s $f10, $f10, $f4 -.L7F049A10: -/* 07E540 7F049A10 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07E544 7F049A14 44814000 */ mtc1 $at, $f8 -/* 07E548 7F049A18 3C018005 */ lui $at, %hi(D_80052B84) -/* 07E54C 7F049A1C C4242B84 */ lwc1 $f4, %lo(D_80052B84)($at) -/* 07E550 7F049A20 46085182 */ mul.s $f6, $f10, $f8 -/* 07E554 7F049A24 3C018005 */ lui $at, %hi(D_80052B88) -/* 07E558 7F049A28 C4282B88 */ lwc1 $f8, %lo(D_80052B88)($at) -/* 07E55C 7F049A2C 46043282 */ mul.s $f10, $f6, $f4 -/* 07E560 7F049A30 460A4181 */ sub.s $f6, $f8, $f10 -/* 07E564 7F049A34 460C3102 */ mul.s $f4, $f6, $f12 -/* 07E568 7F049A38 10000023 */ b .L7F049AC8 -/* 07E56C 7F049A3C E4640028 */ swc1 $f4, 0x28($v1) -.L7F049A40: -/* 07E570 7F049A40 3C018005 */ lui $at, %hi(D_80052B8C) -/* 07E574 7F049A44 C4282B8C */ lwc1 $f8, %lo(D_80052B8C)($at) -/* 07E578 7F049A48 3C018005 */ lui $at, %hi(D_80052B90) -/* 07E57C 7F049A4C 460C4002 */ mul.s $f0, $f8, $f12 -/* 07E580 7F049A50 E4600020 */ swc1 $f0, 0x20($v1) -/* 07E584 7F049A54 E4600024 */ swc1 $f0, 0x24($v1) -/* 07E588 7F049A58 C42A2B90 */ lwc1 $f10, %lo(D_80052B90)($at) -/* 07E58C 7F049A5C 3C018005 */ lui $at, %hi(D_80052B94) -/* 07E590 7F049A60 4600503C */ c.lt.s $f10, $f0 -/* 07E594 7F049A64 00000000 */ nop -/* 07E598 7F049A68 45000003 */ bc1f .L7F049A78 -/* 07E59C 7F049A6C 00000000 */ nop -/* 07E5A0 7F049A70 C4262B94 */ lwc1 $f6, %lo(D_80052B94)($at) -/* 07E5A4 7F049A74 E4660024 */ swc1 $f6, 0x24($v1) -.L7F049A78: -/* 07E5A8 7F049A78 0C002914 */ jal get_random_value -/* 07E5AC 7F049A7C AFA30090 */ sw $v1, 0x90($sp) -/* 07E5B0 7F049A80 44822000 */ mtc1 $v0, $f4 -/* 07E5B4 7F049A84 8FA30090 */ lw $v1, 0x90($sp) -/* 07E5B8 7F049A88 04410005 */ bgez $v0, .L7F049AA0 -/* 07E5BC 7F049A8C 46802220 */ cvt.s.w $f8, $f4 -/* 07E5C0 7F049A90 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07E5C4 7F049A94 44815000 */ mtc1 $at, $f10 -/* 07E5C8 7F049A98 00000000 */ nop -/* 07E5CC 7F049A9C 460A4200 */ add.s $f8, $f8, $f10 -.L7F049AA0: -/* 07E5D0 7F049AA0 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07E5D4 7F049AA4 44813000 */ mtc1 $at, $f6 -/* 07E5D8 7F049AA8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07E5DC 7F049AAC 44815000 */ mtc1 $at, $f10 -/* 07E5E0 7F049AB0 46064002 */ mul.s $f0, $f8, $f6 -/* 07E5E4 7F049AB4 C4660020 */ lwc1 $f6, 0x20($v1) -/* 07E5E8 7F049AB8 46000100 */ add.s $f4, $f0, $f0 -/* 07E5EC 7F049ABC 460A2201 */ sub.s $f8, $f4, $f10 -/* 07E5F0 7F049AC0 46064102 */ mul.s $f4, $f8, $f6 -/* 07E5F4 7F049AC4 E4640028 */ swc1 $f4, 0x28($v1) -.L7F049AC8: -/* 07E5F8 7F049AC8 8E980008 */ lw $t8, 8($s4) -.L7F049ACC: -/* 07E5FC 7F049ACC 8F030008 */ lw $v1, 8($t8) -/* 07E600 7F049AD0 8C650014 */ lw $a1, 0x14($v1) -/* 07E604 7F049AD4 50A00008 */ beql $a1, $zero, .L7F049AF8 -/* 07E608 7F049AD8 8C65001C */ lw $a1, 0x1c($v1) -/* 07E60C 7F049ADC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 07E610 7F049AE0 02802025 */ move $a0, $s4 -/* 07E614 7F049AE4 8FA8013C */ lw $t0, 0x13c($sp) -/* 07E618 7F049AE8 A4480000 */ sh $t0, ($v0) -/* 07E61C 7F049AEC 8E8B0008 */ lw $t3, 8($s4) -/* 07E620 7F049AF0 8D630008 */ lw $v1, 8($t3) -/* 07E624 7F049AF4 8C65001C */ lw $a1, 0x1c($v1) -.L7F049AF8: -/* 07E628 7F049AF8 10A00005 */ beqz $a1, .L7F049B10 -/* 07E62C 7F049AFC 00000000 */ nop -/* 07E630 7F049B00 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 07E634 7F049B04 02802025 */ move $a0, $s4 -/* 07E638 7F049B08 8FAF0138 */ lw $t7, 0x138($sp) -/* 07E63C 7F049B0C A44F0000 */ sh $t7, ($v0) -.L7F049B10: -/* 07E640 7F049B10 0FC11080 */ jal sub_GAME_7F044200 -/* 07E644 7F049B14 02602025 */ move $a0, $s3 -/* 07E648 7F049B18 8FA90680 */ lw $t1, 0x680($sp) -.L7F049B1C: -/* 07E64C 7F049B1C 24010005 */ li $at, 5 -/* 07E650 7F049B20 55210003 */ bnel $t1, $at, .L7F049B30 -/* 07E654 7F049B24 8FA20680 */ lw $v0, 0x680($sp) -/* 07E658 7F049B28 AE600014 */ sw $zero, 0x14($s3) -/* 07E65C 7F049B2C 8FA20680 */ lw $v0, 0x680($sp) -.L7F049B30: -/* 07E660 7F049B30 8FBF0054 */ lw $ra, 0x54($sp) -/* 07E664 7F049B34 D7B40030 */ ldc1 $f20, 0x30($sp) -/* 07E668 7F049B38 D7B60038 */ ldc1 $f22, 0x38($sp) -/* 07E66C 7F049B3C 8FB00040 */ lw $s0, 0x40($sp) -/* 07E670 7F049B40 8FB10044 */ lw $s1, 0x44($sp) -/* 07E674 7F049B44 8FB20048 */ lw $s2, 0x48($sp) -/* 07E678 7F049B48 8FB3004C */ lw $s3, 0x4c($sp) -/* 07E67C 7F049B4C 8FB40050 */ lw $s4, 0x50($sp) -/* 07E680 7F049B50 03E00008 */ jr $ra -/* 07E684 7F049B54 27BD06A8 */ addiu $sp, $sp, 0x6a8 -) -#endif - -#ifdef VERSION_JP -GLOBAL_ASM( -.late_rodata -glabel rocket_initial_gravity_modifier -.word 0x3e8e38e4 /*0.27777779*/ -glabel D_80052A9C -.word 0x3c360b61 /*0.011111111*/ -glabel D_80052AA0 -.word 0x3d8f5c29 /*0.07*/ -glabel prop_projectile_gravity_modifier -.word 0x3e8e38e4 /*0.27777779*/ -glabel D_80052AA8 -.word 0x400e38e4 /*2.2222223*/ -glabel D_80052AAC -.word 0x46d9038c /*27777.773*/ -glabel D_80052AB0 -.word 0x3f8ccccd /*1.1*/ -glabel D_80052AB4 -.word 0x3f666666 /*0.89999998*/ -glabel D_80052AB8 -.word 0x3f666666 /*0.89999998*/ -glabel D_80052ABC -.word 0x3dcccccd /*0.1*/ -glabel D_80052AC0 -.word 0xbdcccccd /*-0.1*/ -glabel D_80052AC4 -.word 0xbdcccccd /*-0.1*/ -glabel D_80052AC8 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052ACC -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AD0 -.word 0x40490fdb /*3.1415927*/ -glabel D_80052AD4 -.word 0x3f490fdb /*0.78539819*/ -glabel D_80052AD8 -.word 0xbf490fdb /*-0.78539819*/ -glabel D_80052ADC -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AE0 -.word 0x3a2b92a6 /*0.00065449846*/ -glabel D_80052AE4 -.word 0x3a2b92a6 /*0.00065449846*/ -glabel D_80052AE8 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AEC -.word 0x37433637 /*0.000011635529*/ -glabel D_80052AF0 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052AF4 -.word 0x3a3702d4 /*0.00069813174*/ -glabel D_80052AF8 -.word 0x36c33637 /*0.0000058177643*/ -glabel D_80052AFC -.word 0x39b702d4 /*0.00034906587*/ -glabel D_80052B00 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B04 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B08 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B0C -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B10 -.word 0x3f9c61ab /*1.2217306*/ -glabel D_80052B14 -.word 0xbf9c61ab /*-1.2217306*/ -glabel D_80052B18 -.word 0xc0490fdb /*-3.1415927*/ -glabel D_80052B1C -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B20 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B24 -.word 0x3f4ccccd /*0.80000001*/ -glabel D_80052B28 -.word 0xc0490fdb /*-3.1415927*/ -glabel D_80052B2C -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B30 -.word 0x3a64c389 /*0.00087266468*/ -glabel D_80052B34 -.word 0x3a64c389 /*0.00087266468*/ -glabel D_80052B38 -.word 0x40490fdb /*3.1415927*/ -glabel D_80052B3C -.word 0x3f1930a7 /*0.59839863*/ -glabel D_80052B40 -.word 0x3c236719 /*0.0099733109*/ -glabel D_80052B44 -.word 0x3f7d70a4 /*0.99000001*/ -glabel D_80052B48 -.word 0x38d1b717 /*0.000099999997*/ -glabel D_80052B4C -.word 0x3964c389 /*0.00021816617*/ -glabel D_80052B50 -.word 0x3bd67750 /*0.0065449849*/ -glabel D_80052B54 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B58 -.word 0x3964c389 /*0.00021816617*/ -glabel D_80052B5C -.word 0xb964c389 /*-0.00021816617*/ -glabel D_80052B60 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B64 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052B68 -.word 0x3e99999a /*0.30000001*/ -glabel D_80052B6C -.word 0x3fc90fdb /*1.5707964*/ -glabel D_80052B70 -.word 0x3fc90fdb /*1.5707964*/ -glabel D_80052B74 -.word 0x3e23d70a /*0.16*/ -glabel D_80052B78 -.word 0x461c4000 /*10000.0*/ -glabel D_80052B7C -.word 0x453b8000 /*3000.0*/ -glabel D_80052B80 -.word 0x3f19999a /*0.60000002*/ -glabel D_80052B84 -.word 0x3e99999a /*0.30000001*/ -glabel D_80052B88 -.word 0xbdcccccd /*-0.1*/ -glabel D_80052B8C -.word 0x3e4ccccd /*0.2*/ -glabel D_80052B90 -.word 0x453b8000 /*3000.0*/ -glabel D_80052B94 -.word 0x453b8000 /*3000.0*/ -.text -glabel object_interaction -/* 07A218 7F0456A8 27BDF950 */ addiu $sp, $sp, -0x6b0 -/* 07A21C 7F0456AC AFBF0054 */ sw $ra, 0x54($sp) -/* 07A220 7F0456B0 AFB40050 */ sw $s4, 0x50($sp) -/* 07A224 7F0456B4 AFB3004C */ sw $s3, 0x4c($sp) -/* 07A228 7F0456B8 AFB20048 */ sw $s2, 0x48($sp) -/* 07A22C 7F0456BC AFB10044 */ sw $s1, 0x44($sp) -/* 07A230 7F0456C0 AFB00040 */ sw $s0, 0x40($sp) -/* 07A234 7F0456C4 F7B60038 */ sdc1 $f22, 0x38($sp) -/* 07A238 7F0456C8 F7B40030 */ sdc1 $f20, 0x30($sp) -/* 07A23C 7F0456CC 8C910004 */ lw $s1, 4($a0) -/* 07A240 7F0456D0 4480B000 */ mtc1 $zero, $f22 -/* 07A244 7F0456D4 00809825 */ move $s3, $a0 -/* 07A248 7F0456D8 8E340014 */ lw $s4, 0x14($s1) -/* 07A24C 7F0456DC AFA00698 */ sw $zero, 0x698($sp) -/* 07A250 7F0456E0 AFA00688 */ sw $zero, 0x688($sp) -/* 07A254 7F0456E4 0FC26C01 */ jal get_num_players -/* 07A258 7F0456E8 E7B60684 */ swc1 $f22, 0x684($sp) -/* 07A25C 7F0456EC 240F0001 */ li $t7, 1 -/* 07A260 7F0456F0 AFA2067C */ sw $v0, 0x67c($sp) -/* 07A264 7F0456F4 AFAF0678 */ sw $t7, 0x678($sp) -/* 07A268 7F0456F8 8E230064 */ lw $v1, 0x64($s1) -/* 07A26C 7F0456FC 30790004 */ andi $t9, $v1, 4 -/* 07A270 7F045700 13200009 */ beqz $t9, .Ljp7F045728 -/* 07A274 7F045704 30680008 */ andi $t0, $v1, 8 -/* 07A278 7F045708 92260002 */ lbu $a2, 2($s1) -/* 07A27C 7F04570C 02202025 */ move $a0, $s1 -/* 07A280 7F045710 00002825 */ move $a1, $zero -/* 07A284 7F045714 30D80004 */ andi $t8, $a2, 4 -/* 07A288 7F045718 0FC10426 */ jal sub_GAME_7F040D98 -/* 07A28C 7F04571C 03003025 */ move $a2, $t8 -/* 07A290 7F045720 10001204 */ b .Ljp7F049F34 -/* 07A294 7F045724 24020001 */ li $v0, 1 -.Ljp7F045728: -/* 07A298 7F045728 11000005 */ beqz $t0, .Ljp7F045740 -/* 07A29C 7F04572C 306B0080 */ andi $t3, $v1, 0x80 -/* 07A2A0 7F045730 2401FFF7 */ li $at, -9 -/* 07A2A4 7F045734 00614824 */ and $t1, $v1, $at -/* 07A2A8 7F045738 1000000B */ b .Ljp7F045768 -/* 07A2AC 7F04573C AE290064 */ sw $t1, 0x64($s1) -.Ljp7F045740: -/* 07A2B0 7F045740 5160000A */ beql $t3, $zero, .Ljp7F04576C -/* 07A2B4 7F045744 24010001 */ li $at, 1 -/* 07A2B8 7F045748 926C0001 */ lbu $t4, 1($s3) -/* 07A2BC 7F04574C 24020003 */ li $v0, 3 -/* 07A2C0 7F045750 318EFFFD */ andi $t6, $t4, 0xfffd -/* 07A2C4 7F045754 A26E0001 */ sb $t6, 1($s3) -/* 07A2C8 7F045758 8E2A0064 */ lw $t2, 0x64($s1) -/* 07A2CC 7F04575C 354D0008 */ ori $t5, $t2, 8 -/* 07A2D0 7F045760 100011F4 */ b .Ljp7F049F34 -/* 07A2D4 7F045764 AE2D0064 */ sw $t5, 0x64($s1) -.Ljp7F045768: -/* 07A2D8 7F045768 24010001 */ li $at, 1 -.Ljp7F04576C: -/* 07A2DC 7F04576C 14410003 */ bne $v0, $at, .Ljp7F04577C -/* 07A2E0 7F045770 240F0001 */ li $t7, 1 -/* 07A2E4 7F045774 10000019 */ b .Ljp7F0457DC -/* 07A2E8 7F045778 AFAF0680 */ sw $t7, 0x680($sp) -.Ljp7F04577C: -/* 07A2EC 7F04577C 0FC26F3C */ jal get_cur_playernum -/* 07A2F0 7F045780 00000000 */ nop -/* 07A2F4 7F045784 0FC2701E */ jal sub_GAME_7F09B4D8 -/* 07A2F8 7F045788 00402025 */ move $a0, $v0 -/* 07A2FC 7F04578C 2C590001 */ sltiu $t9, $v0, 1 -/* 07A300 7F045790 AFB90680 */ sw $t9, 0x680($sp) -/* 07A304 7F045794 8E380064 */ lw $t8, 0x64($s1) -/* 07A308 7F045798 33080080 */ andi $t0, $t8, 0x80 -/* 07A30C 7F04579C 51000010 */ beql $t0, $zero, .Ljp7F0457E0 -/* 07A310 7F0457A0 8FAA0680 */ lw $t2, 0x680($sp) -/* 07A314 7F0457A4 8E30006C */ lw $s0, 0x6c($s1) -/* 07A318 7F0457A8 8E040088 */ lw $a0, 0x88($s0) -/* 07A31C 7F0457AC 5080000C */ beql $a0, $zero, .Ljp7F0457E0 -/* 07A320 7F0457B0 8FAA0680 */ lw $t2, 0x680($sp) -/* 07A324 7F0457B4 0FC26F3F */ jal sub_GAME_7F09B15C -/* 07A328 7F0457B8 00000000 */ nop -/* 07A32C 7F0457BC 04400007 */ bltz $v0, .Ljp7F0457DC -/* 07A330 7F0457C0 3C098008 */ lui $t1, %hi(pPlayer) # $t1, 0x8008 -/* 07A334 7F0457C4 8D29A120 */ lw $t1, %lo(pPlayer)($t1) -/* 07A338 7F0457C8 8E0C0088 */ lw $t4, 0x88($s0) -/* 07A33C 7F0457CC 8D2B00A8 */ lw $t3, 0xa8($t1) -/* 07A340 7F0457D0 016C7026 */ xor $t6, $t3, $t4 -/* 07A344 7F0457D4 2DCE0001 */ sltiu $t6, $t6, 1 -/* 07A348 7F0457D8 AFAE0680 */ sw $t6, 0x680($sp) -.Ljp7F0457DC: -/* 07A34C 7F0457DC 8FAA0680 */ lw $t2, 0x680($sp) -.Ljp7F0457E0: -/* 07A350 7F0457E0 51400B94 */ beql $t2, $zero, .Ljp7F048634 -/* 07A354 7F0457E4 92220003 */ lbu $v0, 3($s1) -/* 07A358 7F0457E8 8E2D0064 */ lw $t5, 0x64($s1) -/* 07A35C 7F0457EC 31AF0080 */ andi $t7, $t5, 0x80 -/* 07A360 7F0457F0 51E0048B */ beql $t7, $zero, .Ljp7F046A20 -/* 07A364 7F0457F4 8FAB0698 */ lw $t3, 0x698($sp) -/* 07A368 7F0457F8 8E30006C */ lw $s0, 0x6c($s1) -/* 07A36C 7F0457FC 3C188005 */ lui $t8, %hi(clock_timer) # $t8, 0x8005 -/* 07A370 7F045800 8F1883A4 */ lw $t8, %lo(clock_timer)($t8) -/* 07A374 7F045804 8E1900E0 */ lw $t9, 0xe0($s0) -/* 07A378 7F045808 03384021 */ addu $t0, $t9, $t8 -/* 07A37C 7F04580C 29010961 */ slti $at, $t0, 0x961 -/* 07A380 7F045810 14200004 */ bnez $at, .Ljp7F045824 -/* 07A384 7F045814 AE0800E0 */ sw $t0, 0xe0($s0) -/* 07A388 7F045818 8E2B0064 */ lw $t3, 0x64($s1) -/* 07A38C 7F04581C 356C0004 */ ori $t4, $t3, 4 -/* 07A390 7F045820 AE2C0064 */ sw $t4, 0x64($s1) -.Ljp7F045824: -/* 07A394 7F045824 8E0E0000 */ lw $t6, ($s0) -/* 07A398 7F045828 31CA0100 */ andi $t2, $t6, 0x100 -/* 07A39C 7F04582C 5140002F */ beql $t2, $zero, .Ljp7F0458EC -/* 07A3A0 7F045830 C6260058 */ lwc1 $f6, 0x58($s1) -/* 07A3A4 7F045834 922D0003 */ lbu $t5, 3($s1) -/* 07A3A8 7F045838 24010008 */ li $at, 8 -/* 07A3AC 7F04583C 24120001 */ li $s2, 1 -/* 07A3B0 7F045840 55A10008 */ bnel $t5, $at, .Ljp7F045864 -/* 07A3B4 7F045844 8E040088 */ lw $a0, 0x88($s0) -/* 07A3B8 7F045848 AFB10650 */ sw $s1, 0x650($sp) -/* 07A3BC 7F04584C 822F0080 */ lb $t7, 0x80($s1) -/* 07A3C0 7F045850 24010056 */ li $at, 86 -/* 07A3C4 7F045854 55E10003 */ bnel $t7, $at, .Ljp7F045864 -/* 07A3C8 7F045858 8E040088 */ lw $a0, 0x88($s0) -/* 07A3CC 7F04585C 00009025 */ move $s2, $zero -/* 07A3D0 7F045860 8E040088 */ lw $a0, 0x88($s0) -.Ljp7F045864: -/* 07A3D4 7F045864 50800004 */ beql $a0, $zero, .Ljp7F045878 -/* 07A3D8 7F045868 02202025 */ move $a0, $s1 -/* 07A3DC 7F04586C 0FC0F4D6 */ jal sub_GAME_7F03D058 -/* 07A3E0 7F045870 00002825 */ move $a1, $zero -/* 07A3E4 7F045874 02202025 */ move $a0, $s1 -.Ljp7F045878: -/* 07A3E8 7F045878 260500D4 */ addiu $a1, $s0, 0xd4 -/* 07A3EC 7F04587C 27A60654 */ addiu $a2, $sp, 0x654 -/* 07A3F0 7F045880 27A70660 */ addiu $a3, $sp, 0x660 -/* 07A3F4 7F045884 AFA00010 */ sw $zero, 0x10($sp) -/* 07A3F8 7F045888 0FC10C6D */ jal sub_GAME_7F042EB4 -/* 07A3FC 7F04588C AFB20014 */ sw $s2, 0x14($sp) -/* 07A400 7F045890 AFA2066C */ sw $v0, 0x66c($sp) -/* 07A404 7F045894 8E040088 */ lw $a0, 0x88($s0) -/* 07A408 7F045898 50800004 */ beql $a0, $zero, .Ljp7F0458AC -/* 07A40C 7F04589C 8FB9066C */ lw $t9, 0x66c($sp) -/* 07A410 7F0458A0 0FC0F4D6 */ jal sub_GAME_7F03D058 -/* 07A414 7F0458A4 24050001 */ li $a1, 1 -/* 07A418 7F0458A8 8FB9066C */ lw $t9, 0x66c($sp) -.Ljp7F0458AC: -/* 07A41C 7F0458AC 24010001 */ li $at, 1 -/* 07A420 7F0458B0 8FA20650 */ lw $v0, 0x650($sp) -/* 07A424 7F0458B4 53210009 */ beql $t9, $at, .Ljp7F0458DC -/* 07A428 7F0458B8 8E080000 */ lw $t0, ($s0) -/* 07A42C 7F0458BC 50400007 */ beql $v0, $zero, .Ljp7F0458DC -/* 07A430 7F0458C0 8E080000 */ lw $t0, ($s0) -/* 07A434 7F0458C4 80580080 */ lb $t8, 0x80($v0) -/* 07A438 7F0458C8 24010056 */ li $at, 86 -/* 07A43C 7F0458CC 57010003 */ bnel $t8, $at, .Ljp7F0458DC -/* 07A440 7F0458D0 8E080000 */ lw $t0, ($s0) -/* 07A444 7F0458D4 A4400082 */ sh $zero, 0x82($v0) -/* 07A448 7F0458D8 8E080000 */ lw $t0, ($s0) -.Ljp7F0458DC: -/* 07A44C 7F0458DC 2401FEFF */ li $at, -257 -/* 07A450 7F0458E0 01014824 */ and $t1, $t0, $at -/* 07A454 7F0458E4 AE090000 */ sw $t1, ($s0) -/* 07A458 7F0458E8 C6260058 */ lwc1 $f6, 0x58($s1) -.Ljp7F0458EC: -/* 07A45C 7F0458EC 3C0B8005 */ lui $t3, %hi(clock_timer) # $t3, 0x8005 -/* 07A460 7F0458F0 3C013F80 */ lui $at, 0x3f80 -/* 07A464 7F0458F4 E7A6069C */ swc1 $f6, 0x69c($sp) -/* 07A468 7F0458F8 C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07A46C 7F0458FC E7AA06A0 */ swc1 $f10, 0x6a0($sp) -/* 07A470 7F045900 C6240060 */ lwc1 $f4, 0x60($s1) -/* 07A474 7F045904 E7A406A4 */ swc1 $f4, 0x6a4($sp) -/* 07A478 7F045908 8E0200BC */ lw $v0, 0xbc($s0) -/* 07A47C 7F04590C 58400005 */ blezl $v0, .Ljp7F045924 -/* 07A480 7F045910 8E2E006C */ lw $t6, 0x6c($s1) -/* 07A484 7F045914 8D6B83A4 */ lw $t3, %lo(clock_timer)($t3) -/* 07A488 7F045918 004B6023 */ subu $t4, $v0, $t3 -/* 07A48C 7F04591C AE0C00BC */ sw $t4, 0xbc($s0) -/* 07A490 7F045920 8E2E006C */ lw $t6, 0x6c($s1) -.Ljp7F045924: -/* 07A494 7F045924 8DCA0000 */ lw $t2, ($t6) -/* 07A498 7F045928 314D0001 */ andi $t5, $t2, 1 -/* 07A49C 7F04592C 51A00351 */ beql $t5, $zero, .Ljp7F046674 -/* 07A4A0 7F045930 C6000060 */ lwc1 $f0, 0x60($s0) -/* 07A4A4 7F045934 0FC100DE */ jal sub_GAME_7F040078 -/* 07A4A8 7F045938 02202025 */ move $a0, $s1 -/* 07A4AC 7F04593C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07A4B0 7F045940 44814000 */ mtc1 $at, $f8 -/* 07A4B4 7F045944 3C078005 */ lui $a3, %hi(clock_timer) # $a3, 0x8005 -/* 07A4B8 7F045948 24E783A4 */ addiu $a3, %lo(clock_timer) # addiu $a3, $a3, -0x7c5c -/* 07A4BC 7F04594C AFA20648 */ sw $v0, 0x648($sp) -/* 07A4C0 7F045950 AFA00618 */ sw $zero, 0x618($sp) -/* 07A4C4 7F045954 AFA00614 */ sw $zero, 0x614($sp) -/* 07A4C8 7F045958 AFA0060C */ sw $zero, 0x60c($sp) -/* 07A4CC 7F04595C E7A80640 */ swc1 $f8, 0x640($sp) -/* 07A4D0 7F045960 8E0F00A8 */ lw $t7, 0xa8($s0) -/* 07A4D4 7F045964 8CF90000 */ lw $t9, ($a3) -/* 07A4D8 7F045968 C634005C */ lwc1 $f20, 0x5c($s1) -/* 07A4DC 7F04596C 00009025 */ move $s2, $zero -/* 07A4E0 7F045970 01F9C021 */ addu $t8, $t7, $t9 -/* 07A4E4 7F045974 AE1800A8 */ sw $t8, 0xa8($s0) -/* 07A4E8 7F045978 C6260018 */ lwc1 $f6, 0x18($s1) -/* 07A4EC 7F04597C 3C018005 */ lui $at, %hi(rocket_initial_gravity_modifier) # $at, 0x8005 -/* 07A4F0 7F045980 E7A60634 */ swc1 $f6, 0x634($sp) -/* 07A4F4 7F045984 C62A001C */ lwc1 $f10, 0x1c($s1) -/* 07A4F8 7F045988 E7AA0638 */ swc1 $f10, 0x638($sp) -/* 07A4FC 7F04598C C6240020 */ lwc1 $f4, 0x20($s1) -/* 07A500 7F045990 E7A4063C */ swc1 $f4, 0x63c($sp) -/* 07A504 7F045994 8E030000 */ lw $v1, ($s0) -/* 07A508 7F045998 30680020 */ andi $t0, $v1, 0x20 -/* 07A50C 7F04599C 1100004B */ beqz $t0, .Ljp7F045ACC -/* 07A510 7F0459A0 00000000 */ nop -/* 07A514 7F0459A4 C4322AC8 */ lwc1 $f18, %lo(rocket_initial_gravity_modifier)($at) -/* 07A518 7F0459A8 C600001C */ lwc1 $f0, 0x1c($s0) -/* 07A51C 7F0459AC 3C028005 */ lui $v0, %hi(global_timer_delta) # $v0, 0x8005 -/* 07A520 7F0459B0 244283B4 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c4c -/* 07A524 7F0459B4 4612003C */ c.lt.s $f0, $f18 -/* 07A528 7F0459B8 00000000 */ nop -/* 07A52C 7F0459BC 4502001C */ bc1fl .Ljp7F045A30 -/* 07A530 7F0459C0 C60000B0 */ lwc1 $f0, 0xb0($s0) -/* 07A534 7F0459C4 C6080014 */ lwc1 $f8, 0x14($s0) -/* 07A538 7F0459C8 C4460000 */ lwc1 $f6, ($v0) -/* 07A53C 7F0459CC C60400B4 */ lwc1 $f4, 0xb4($s0) -/* 07A540 7F0459D0 3C018005 */ lui $at, %hi(D_80052A9C) # $at, 0x8005 -/* 07A544 7F0459D4 46064282 */ mul.s $f10, $f8, $f6 -/* 07A548 7F0459D8 460A2200 */ add.s $f8, $f4, $f10 -/* 07A54C 7F0459DC E60800B4 */ swc1 $f8, 0xb4($s0) -/* 07A550 7F0459E0 C4440000 */ lwc1 $f4, ($v0) -/* 07A554 7F0459E4 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07A558 7F0459E8 C60800B0 */ lwc1 $f8, 0xb0($s0) -/* 07A55C 7F0459EC 46043282 */ mul.s $f10, $f6, $f4 -/* 07A560 7F0459F0 460A4180 */ add.s $f6, $f8, $f10 -/* 07A564 7F0459F4 E60600B0 */ swc1 $f6, 0xb0($s0) -/* 07A568 7F0459F8 C4480000 */ lwc1 $f8, ($v0) -/* 07A56C 7F0459FC C4242ACC */ lwc1 $f4, %lo(D_80052A9C)($at) -/* 07A570 7F045A00 46082282 */ mul.s $f10, $f4, $f8 -/* 07A574 7F045A04 460A0180 */ add.s $f6, $f0, $f10 -/* 07A578 7F045A08 E606001C */ swc1 $f6, 0x1c($s0) -/* 07A57C 7F045A0C C604001C */ lwc1 $f4, 0x1c($s0) -/* 07A580 7F045A10 4604903C */ c.lt.s $f18, $f4 -/* 07A584 7F045A14 00000000 */ nop -/* 07A588 7F045A18 45000002 */ bc1f .Ljp7F045A24 -/* 07A58C 7F045A1C 00000000 */ nop -/* 07A590 7F045A20 E612001C */ swc1 $f18, 0x1c($s0) -.Ljp7F045A24: -/* 07A594 7F045A24 10000029 */ b .Ljp7F045ACC -/* 07A598 7F045A28 8E030000 */ lw $v1, ($s0) -/* 07A59C 7F045A2C C60000B0 */ lwc1 $f0, 0xb0($s0) -.Ljp7F045A30: -/* 07A5A0 7F045A30 C7A806A0 */ lwc1 $f8, 0x6a0($sp) -/* 07A5A4 7F045A34 4600403C */ c.lt.s $f8, $f0 -/* 07A5A8 7F045A38 00000000 */ nop -/* 07A5AC 7F045A3C 45000019 */ bc1f .Ljp7F045AA4 -/* 07A5B0 7F045A40 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07A5B4 7F045A44 C42683B4 */ lwc1 $f6, %lo(global_timer_delta)($at) -/* 07A5B8 7F045A48 C60A0014 */ lwc1 $f10, 0x14($s0) -/* 07A5BC 7F045A4C C60800B4 */ lwc1 $f8, 0xb4($s0) -/* 07A5C0 7F045A50 46065102 */ mul.s $f4, $f10, $f6 -/* 07A5C4 7F045A54 46044280 */ add.s $f10, $f8, $f4 -/* 07A5C8 7F045A58 E60A00B4 */ swc1 $f10, 0xb4($s0) -/* 07A5CC 7F045A5C C42883B4 */ lwc1 $f8, %lo(global_timer_delta)($at) -/* 07A5D0 7F045A60 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07A5D4 7F045A64 3C018005 */ lui $at, %hi(D_80052AA0) # $at, 0x8005 -/* 07A5D8 7F045A68 46083102 */ mul.s $f4, $f6, $f8 -/* 07A5DC 7F045A6C 46040280 */ add.s $f10, $f0, $f4 -/* 07A5E0 7F045A70 E60A00B0 */ swc1 $f10, 0xb0($s0) -/* 07A5E4 7F045A74 C7A806A0 */ lwc1 $f8, 0x6a0($sp) -/* 07A5E8 7F045A78 C60600B0 */ lwc1 $f6, 0xb0($s0) -/* 07A5EC 7F045A7C C42A2AD0 */ lwc1 $f10, %lo(D_80052AA0)($at) -/* 07A5F0 7F045A80 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07A5F4 7F045A84 46083101 */ sub.s $f4, $f6, $f8 -/* 07A5F8 7F045A88 46045182 */ mul.s $f6, $f10, $f4 -/* 07A5FC 7F045A8C C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07A600 7F045A90 460A3102 */ mul.s $f4, $f6, $f10 -/* 07A604 7F045A94 46044180 */ add.s $f6, $f8, $f4 -/* 07A608 7F045A98 E7A606A0 */ swc1 $f6, 0x6a0($sp) -/* 07A60C 7F045A9C 1000000B */ b .Ljp7F045ACC -/* 07A610 7F045AA0 8E030000 */ lw $v1, ($s0) -.Ljp7F045AA4: -/* 07A614 7F045AA4 E7A006A0 */ swc1 $f0, 0x6a0($sp) -/* 07A618 7F045AA8 8E090000 */ lw $t1, ($s0) -/* 07A61C 7F045AAC 2401FFDF */ li $at, -33 -/* 07A620 7F045AB0 C60A00B4 */ lwc1 $f10, 0xb4($s0) -/* 07A624 7F045AB4 01215824 */ and $t3, $t1, $at -/* 07A628 7F045AB8 AE0B0000 */ sw $t3, ($s0) -/* 07A62C 7F045ABC 35630010 */ ori $v1, $t3, 0x10 -/* 07A630 7F045AC0 E616001C */ swc1 $f22, 0x1c($s0) -/* 07A634 7F045AC4 AE030000 */ sw $v1, ($s0) -/* 07A638 7F045AC8 E60A0008 */ swc1 $f10, 8($s0) -.Ljp7F045ACC: -/* 07A63C 7F045ACC 3C028005 */ lui $v0, %hi(global_timer_delta) # $v0, 0x8005 -/* 07A640 7F045AD0 244283B4 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c4c -/* 07A644 7F045AD4 3C018005 */ lui $at, %hi(prop_projectile_gravity_modifier) # $at, 0x8005 -/* 07A648 7F045AD8 306A0010 */ andi $t2, $v1, 0x10 -/* 07A64C 7F045ADC C4322AD4 */ lwc1 $f18, %lo(prop_projectile_gravity_modifier)($at) -/* 07A650 7F045AE0 C4420000 */ lwc1 $f2, ($v0) -/* 07A654 7F045AE4 C600001C */ lwc1 $f0, 0x1c($s0) -/* 07A658 7F045AE8 15400015 */ bnez $t2, .Ljp7F045B40 -/* 07A65C 7F045AEC C6100014 */ lwc1 $f16, 0x14($s0) -/* 07A660 7F045AF0 46008100 */ add.s $f4, $f16, $f0 -/* 07A664 7F045AF4 C6080008 */ lwc1 $f8, 8($s0) -/* 07A668 7F045AF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07A66C 7F045AFC 46022182 */ mul.s $f6, $f4, $f2 -/* 07A670 7F045B00 46064280 */ add.s $f10, $f8, $f6 -/* 07A674 7F045B04 E60A0008 */ swc1 $f10, 8($s0) -/* 07A678 7F045B08 C4420000 */ lwc1 $f2, ($v0) -/* 07A67C 7F045B0C C60C0008 */ lwc1 $f12, 8($s0) -/* 07A680 7F045B10 44815000 */ mtc1 $at, $f10 -/* 07A684 7F045B14 46029102 */ mul.s $f4, $f18, $f2 -/* 07A688 7F045B18 46046381 */ sub.s $f14, $f12, $f4 -/* 07A68C 7F045B1C 460E6200 */ add.s $f8, $f12, $f14 -/* 07A690 7F045B20 46081182 */ mul.s $f6, $f2, $f8 -/* 07A694 7F045B24 C7A806A0 */ lwc1 $f8, 0x6a0($sp) -/* 07A698 7F045B28 460A3102 */ mul.s $f4, $f6, $f10 -/* 07A69C 7F045B2C 46044180 */ add.s $f6, $f8, $f4 -/* 07A6A0 7F045B30 E7A606A0 */ swc1 $f6, 0x6a0($sp) -/* 07A6A4 7F045B34 E60E0008 */ swc1 $f14, 8($s0) -/* 07A6A8 7F045B38 1000000C */ b .Ljp7F045B6C -/* 07A6AC 7F045B3C C4420000 */ lwc1 $f2, ($v0) -.Ljp7F045B40: -/* 07A6B0 7F045B40 46008200 */ add.s $f8, $f16, $f0 -/* 07A6B4 7F045B44 C60A0008 */ lwc1 $f10, 8($s0) -/* 07A6B8 7F045B48 46024102 */ mul.s $f4, $f8, $f2 -/* 07A6BC 7F045B4C 46045180 */ add.s $f6, $f10, $f4 -/* 07A6C0 7F045B50 E6060008 */ swc1 $f6, 8($s0) -/* 07A6C4 7F045B54 C60A0008 */ lwc1 $f10, 8($s0) -/* 07A6C8 7F045B58 C4420000 */ lwc1 $f2, ($v0) -/* 07A6CC 7F045B5C C7A806A0 */ lwc1 $f8, 0x6a0($sp) -/* 07A6D0 7F045B60 46025102 */ mul.s $f4, $f10, $f2 -/* 07A6D4 7F045B64 46044180 */ add.s $f6, $f8, $f4 -/* 07A6D8 7F045B68 E7A606A0 */ swc1 $f6, 0x6a0($sp) -.Ljp7F045B6C: -/* 07A6DC 7F045B6C C6080010 */ lwc1 $f8, 0x10($s0) -/* 07A6E0 7F045B70 C60A0004 */ lwc1 $f10, 4($s0) -/* 07A6E4 7F045B74 26240018 */ addiu $a0, $s1, 0x18 -/* 07A6E8 7F045B78 46024102 */ mul.s $f4, $f8, $f2 -/* 07A6EC 7F045B7C C6080018 */ lwc1 $f8, 0x18($s0) -/* 07A6F0 7F045B80 26050020 */ addiu $a1, $s0, 0x20 -/* 07A6F4 7F045B84 46045180 */ add.s $f6, $f10, $f4 -/* 07A6F8 7F045B88 E6060004 */ swc1 $f6, 4($s0) -/* 07A6FC 7F045B8C C44A0000 */ lwc1 $f10, ($v0) -/* 07A700 7F045B90 C606000C */ lwc1 $f6, 0xc($s0) -/* 07A704 7F045B94 460A4102 */ mul.s $f4, $f8, $f10 -/* 07A708 7F045B98 46043200 */ add.s $f8, $f6, $f4 -/* 07A70C 7F045B9C C6060004 */ lwc1 $f6, 4($s0) -/* 07A710 7F045BA0 E608000C */ swc1 $f8, 0xc($s0) -/* 07A714 7F045BA4 C4420000 */ lwc1 $f2, ($v0) -/* 07A718 7F045BA8 C7AA069C */ lwc1 $f10, 0x69c($sp) -/* 07A71C 7F045BAC 8CE60000 */ lw $a2, ($a3) -/* 07A720 7F045BB0 46023102 */ mul.s $f4, $f6, $f2 -/* 07A724 7F045BB4 C7A606A4 */ lwc1 $f6, 0x6a4($sp) -/* 07A728 7F045BB8 46045200 */ add.s $f8, $f10, $f4 -/* 07A72C 7F045BBC E7A8069C */ swc1 $f8, 0x69c($sp) -/* 07A730 7F045BC0 C60A000C */ lwc1 $f10, 0xc($s0) -/* 07A734 7F045BC4 AFA50070 */ sw $a1, 0x70($sp) -/* 07A738 7F045BC8 AFA40074 */ sw $a0, 0x74($sp) -/* 07A73C 7F045BCC 46025102 */ mul.s $f4, $f10, $f2 -/* 07A740 7F045BD0 46043200 */ add.s $f8, $f6, $f4 -/* 07A744 7F045BD4 0FC160C6 */ jal sub_GAME_7F057DF8 -/* 07A748 7F045BD8 E7A806A4 */ swc1 $f8, 0x6a4($sp) -/* 07A74C 7F045BDC 922D0003 */ lbu $t5, 3($s1) -/* 07A750 7F045BE0 24010008 */ li $at, 8 -/* 07A754 7F045BE4 55A10013 */ bnel $t5, $at, .Ljp7F045C34 -/* 07A758 7F045BE8 8E040088 */ lw $a0, 0x88($s0) -/* 07A75C 7F045BEC 82220080 */ lb $v0, 0x80($s1) -/* 07A760 7F045BF0 2401001D */ li $at, 29 -/* 07A764 7F045BF4 1041000D */ beq $v0, $at, .Ljp7F045C2C -/* 07A768 7F045BF8 2401001B */ li $at, 27 -/* 07A76C 7F045BFC 1041000B */ beq $v0, $at, .Ljp7F045C2C -/* 07A770 7F045C00 2401001C */ li $at, 28 -/* 07A774 7F045C04 10410009 */ beq $v0, $at, .Ljp7F045C2C -/* 07A778 7F045C08 24010021 */ li $at, 33 -/* 07A77C 7F045C0C 10410007 */ beq $v0, $at, .Ljp7F045C2C -/* 07A780 7F045C10 2401002F */ li $at, 47 -/* 07A784 7F045C14 10410005 */ beq $v0, $at, .Ljp7F045C2C -/* 07A788 7F045C18 24010030 */ li $at, 48 -/* 07A78C 7F045C1C 10410003 */ beq $v0, $at, .Ljp7F045C2C -/* 07A790 7F045C20 24010022 */ li $at, 34 -/* 07A794 7F045C24 54410003 */ bnel $v0, $at, .Ljp7F045C34 -/* 07A798 7F045C28 8E040088 */ lw $a0, 0x88($s0) -.Ljp7F045C2C: -/* 07A79C 7F045C2C 24120001 */ li $s2, 1 -/* 07A7A0 7F045C30 8E040088 */ lw $a0, 0x88($s0) -.Ljp7F045C34: -/* 07A7A4 7F045C34 50800004 */ beql $a0, $zero, .Ljp7F045C48 -/* 07A7A8 7F045C38 02202025 */ move $a0, $s1 -/* 07A7AC 7F045C3C 0FC0F4D6 */ jal sub_GAME_7F03D058 -/* 07A7B0 7F045C40 00002825 */ move $a1, $zero -/* 07A7B4 7F045C44 02202025 */ move $a0, $s1 -.Ljp7F045C48: -/* 07A7B8 7F045C48 27A5069C */ addiu $a1, $sp, 0x69c -/* 07A7BC 7F045C4C 27A6061C */ addiu $a2, $sp, 0x61c -/* 07A7C0 7F045C50 27A70628 */ addiu $a3, $sp, 0x628 -/* 07A7C4 7F045C54 AFB20010 */ sw $s2, 0x10($sp) -/* 07A7C8 7F045C58 0FC10C6D */ jal sub_GAME_7F042EB4 -/* 07A7CC 7F045C5C AFA00014 */ sw $zero, 0x14($sp) -/* 07A7D0 7F045C60 AFA2066C */ sw $v0, 0x66c($sp) -/* 07A7D4 7F045C64 8E040088 */ lw $a0, 0x88($s0) -/* 07A7D8 7F045C68 50800004 */ beql $a0, $zero, .Ljp7F045C7C -/* 07A7DC 7F045C6C 8FB9066C */ lw $t9, 0x66c($sp) -/* 07A7E0 7F045C70 0FC0F4D6 */ jal sub_GAME_7F03D058 -/* 07A7E4 7F045C74 24050001 */ li $a1, 1 -/* 07A7E8 7F045C78 8FB9066C */ lw $t9, 0x66c($sp) -.Ljp7F045C7C: -/* 07A7EC 7F045C7C 240F0001 */ li $t7, 1 -/* 07A7F0 7F045C80 24010002 */ li $at, 2 -/* 07A7F4 7F045C84 17210042 */ bne $t9, $at, .Ljp7F045D90 -/* 07A7F8 7F045C88 AFAF0698 */ sw $t7, 0x698($sp) -/* 07A7FC 7F045C8C 3C038003 */ lui $v1, %hi(D_80030B0C) # $v1, 0x8003 -/* 07A800 7F045C90 8C630B4C */ lw $v1, %lo(D_80030B0C)($v1) -/* 07A804 7F045C94 10600007 */ beqz $v1, .Ljp7F045CB4 -/* 07A808 7F045C98 00000000 */ nop -/* 07A80C 7F045C9C 90620000 */ lbu $v0, ($v1) -/* 07A810 7F045CA0 24010003 */ li $at, 3 -/* 07A814 7F045CA4 1041003A */ beq $v0, $at, .Ljp7F045D90 -/* 07A818 7F045CA8 24010006 */ li $at, 6 -/* 07A81C 7F045CAC 50410039 */ beql $v0, $at, .Ljp7F045D94 -/* 07A820 7F045CB0 8FB9060C */ lw $t9, 0x60c($sp) -.Ljp7F045CB4: -/* 07A824 7F045CB4 10600007 */ beqz $v1, .Ljp7F045CD4 -/* 07A828 7F045CB8 00002025 */ move $a0, $zero -/* 07A82C 7F045CBC 8C620004 */ lw $v0, 4($v1) -/* 07A830 7F045CC0 8C580064 */ lw $t8, 0x64($v0) -/* 07A834 7F045CC4 33080080 */ andi $t0, $t8, 0x80 -/* 07A838 7F045CC8 11000002 */ beqz $t0, .Ljp7F045CD4 -/* 07A83C 7F045CCC 00000000 */ nop -/* 07A840 7F045CD0 24040001 */ li $a0, 1 -.Ljp7F045CD4: -/* 07A844 7F045CD4 5480002F */ bnezl $a0, .Ljp7F045D94 -/* 07A848 7F045CD8 8FB9060C */ lw $t9, 0x60c($sp) -/* 07A84C 7F045CDC 0FC0FF9C */ jal sub_GAME_7F03FB70 -/* 07A850 7F045CE0 02002025 */ move $a0, $s0 -/* 07A854 7F045CE4 8E290064 */ lw $t1, 0x64($s1) -/* 07A858 7F045CE8 2401FF7F */ li $at, -129 -/* 07A85C 7F045CEC AE20006C */ sw $zero, 0x6c($s1) -/* 07A860 7F045CF0 01215824 */ and $t3, $t1, $at -/* 07A864 7F045CF4 AE2B0064 */ sw $t3, 0x64($s1) -/* 07A868 7F045CF8 92620001 */ lbu $v0, 1($s3) -/* 07A86C 7F045CFC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07A870 7F045D00 240500F1 */ li $a1, 241 -/* 07A874 7F045D04 304C0008 */ andi $t4, $v0, 8 -/* 07A878 7F045D08 11800003 */ beqz $t4, .Ljp7F045D18 -/* 07A87C 7F045D0C 00003025 */ move $a2, $zero -/* 07A880 7F045D10 344E0010 */ ori $t6, $v0, 0x10 -/* 07A884 7F045D14 A26E0001 */ sb $t6, 1($s3) -.Ljp7F045D18: -/* 07A888 7F045D18 0C002386 */ jal play_sfx_a1 -/* 07A88C 7F045D1C 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07A890 7F045D20 00402025 */ move $a0, $v0 -/* 07A894 7F045D24 0FC14FC3 */ jal sub_GAME_7F053A10 -/* 07A898 7F045D28 26650008 */ addiu $a1, $s3, 8 -/* 07A89C 7F045D2C 8E6A0014 */ lw $t2, 0x14($s3) -/* 07A8A0 7F045D30 82240080 */ lb $a0, 0x80($s1) -/* 07A8A4 7F045D34 0FC15F41 */ jal sub_GAME_7F0577E8 -/* 07A8A8 7F045D38 91450003 */ lbu $a1, 3($t2) -/* 07A8AC 7F045D3C 02202025 */ move $a0, $s1 -/* 07A8B0 7F045D40 27A5061C */ addiu $a1, $sp, 0x61c -/* 07A8B4 7F045D44 8E660014 */ lw $a2, 0x14($s3) -/* 07A8B8 7F045D48 0FC10F2E */ jal sub_GAME_7F0439B8 -/* 07A8BC 7F045D4C 27A70628 */ addiu $a3, $sp, 0x628 -/* 07A8C0 7F045D50 3C058003 */ lui $a1, %hi(D_80030B0C) # $a1, 0x8003 -/* 07A8C4 7F045D54 8CA50B4C */ lw $a1, %lo(D_80030B0C)($a1) -/* 07A8C8 7F045D58 02602025 */ move $a0, $s3 -/* 07A8CC 7F045D5C 3C068007 */ lui $a2, %hi(objinst) # $a2, 0x8007 -/* 07A8D0 7F045D60 10A0000B */ beqz $a1, .Ljp7F045D90 -/* 07A8D4 7F045D64 3C078007 */ lui $a3, %hi(dword_CODE_bss_80075B74) # $a3, 0x8007 -/* 07A8D8 7F045D68 8E720014 */ lw $s2, 0x14($s3) -/* 07A8DC 7F045D6C 8CC65BB0 */ lw $a2, %lo(objinst)($a2) -/* 07A8E0 7F045D70 0FC10F5B */ jal sub_GAME_7F043A6C -/* 07A8E4 7F045D74 8CE75BB4 */ lw $a3, %lo(dword_CODE_bss_80075B74)($a3) -/* 07A8E8 7F045D78 10400005 */ beqz $v0, .Ljp7F045D90 -/* 07A8EC 7F045D7C 240D0005 */ li $t5, 5 -/* 07A8F0 7F045D80 AE720014 */ sw $s2, 0x14($s3) -/* 07A8F4 7F045D84 240F0001 */ li $t7, 1 -/* 07A8F8 7F045D88 AFAD0688 */ sw $t5, 0x688($sp) -/* 07A8FC 7F045D8C AFAF060C */ sw $t7, 0x60c($sp) -.Ljp7F045D90: -/* 07A900 7F045D90 8FB9060C */ lw $t9, 0x60c($sp) -.Ljp7F045D94: -/* 07A904 7F045D94 172000EC */ bnez $t9, .Ljp7F046148 -/* 07A908 7F045D98 3C128003 */ lui $s2, %hi(D_80030B0C) # $s2, 0x8003 -/* 07A90C 7F045D9C 8E520B4C */ lw $s2, %lo(D_80030B0C)($s2) -/* 07A910 7F045DA0 524000EA */ beql $s2, $zero, .Ljp7F04614C -/* 07A914 7F045DA4 8FB9060C */ lw $t9, 0x60c($sp) -/* 07A918 7F045DA8 92380003 */ lbu $t8, 3($s1) -/* 07A91C 7F045DAC 24010008 */ li $at, 8 -/* 07A920 7F045DB0 570100E6 */ bnel $t8, $at, .Ljp7F04614C -/* 07A924 7F045DB4 8FB9060C */ lw $t9, 0x60c($sp) -/* 07A928 7F045DB8 82220080 */ lb $v0, 0x80($s1) -/* 07A92C 7F045DBC 24010003 */ li $at, 3 -/* 07A930 7F045DC0 544100C3 */ bnel $v0, $at, .Ljp7F0460D0 -/* 07A934 7F045DC4 24010056 */ li $at, 86 -/* 07A938 7F045DC8 92420000 */ lbu $v0, ($s2) -/* 07A93C 7F045DCC 24010003 */ li $at, 3 -/* 07A940 7F045DD0 1041000D */ beq $v0, $at, .Ljp7F045E08 -/* 07A944 7F045DD4 24010006 */ li $at, 6 -/* 07A948 7F045DD8 544100DC */ bnel $v0, $at, .Ljp7F04614C -/* 07A94C 7F045DDC 8FB9060C */ lw $t9, 0x60c($sp) -/* 07A950 7F045DE0 8E480004 */ lw $t0, 4($s2) -/* 07A954 7F045DE4 510000D9 */ beql $t0, $zero, .Ljp7F04614C -/* 07A958 7F045DE8 8FB9060C */ lw $t9, 0x60c($sp) -/* 07A95C 7F045DEC 0FC26F3F */ jal sub_GAME_7F09B15C -/* 07A960 7F045DF0 02402025 */ move $a0, $s2 -/* 07A964 7F045DF4 0FC26F3C */ jal get_cur_playernum -/* 07A968 7F045DF8 00409025 */ move $s2, $v0 -/* 07A96C 7F045DFC 105200D2 */ beq $v0, $s2, .Ljp7F046148 -/* 07A970 7F045E00 3C128003 */ lui $s2, %hi(D_80030B0C) # $s2, 0x8003 -/* 07A974 7F045E04 8E520B4C */ lw $s2, %lo(D_80030B0C)($s2) -.Ljp7F045E08: -/* 07A978 7F045E08 8E22006C */ lw $v0, 0x6c($s1) -/* 07A97C 7F045E0C 8E440004 */ lw $a0, 4($s2) -/* 07A980 7F045E10 8C490000 */ lw $t1, ($v0) -/* 07A984 7F045E14 312B0001 */ andi $t3, $t1, 1 -/* 07A988 7F045E18 516000CC */ beql $t3, $zero, .Ljp7F04614C -/* 07A98C 7F045E1C 8FB9060C */ lw $t9, 0x60c($sp) -/* 07A990 7F045E20 8C4C0090 */ lw $t4, 0x90($v0) -/* 07A994 7F045E24 5D8000C9 */ bgtzl $t4, .Ljp7F04614C -/* 07A998 7F045E28 8FB9060C */ lw $t9, 0x60c($sp) -/* 07A99C 7F045E2C 8E2E0064 */ lw $t6, 0x64($s1) -/* 07A9A0 7F045E30 3C068007 */ lui $a2, %hi(flt_CODE_bss_80075B78) # $a2, 0x8007 -/* 07A9A4 7F045E34 24C65BB8 */ addiu $a2, %lo(flt_CODE_bss_80075B78) # addiu $a2, $a2, 0x5bb8 -/* 07A9A8 7F045E38 31CA0020 */ andi $t2, $t6, 0x20 -/* 07A9AC 7F045E3C 114000C2 */ beqz $t2, .Ljp7F046148 -/* 07A9B0 7F045E40 3C058003 */ lui $a1, %hi(bodypartshot) # $a1, 0x8003 -/* 07A9B4 7F045E44 82270080 */ lb $a3, 0x80($s1) -/* 07A9B8 7F045E48 240D0001 */ li $t5, 1 -/* 07A9BC 7F045E4C AFAD0010 */ sw $t5, 0x10($sp) -/* 07A9C0 7F045E50 0FC09D61 */ jal handles_shot_actors -/* 07A9C4 7F045E54 8CA50B50 */ lw $a1, %lo(bodypartshot)($a1) -/* 07A9C8 7F045E58 104000BB */ beqz $v0, .Ljp7F046148 -/* 07A9CC 7F045E5C 240F0001 */ li $t7, 1 -/* 07A9D0 7F045E60 AFAF060C */ sw $t7, 0x60c($sp) -/* 07A9D4 7F045E64 C610008C */ lwc1 $f16, 0x8c($s0) -/* 07A9D8 7F045E68 C7AA0628 */ lwc1 $f10, 0x628($sp) -/* 07A9DC 7F045E6C 4610B03C */ c.lt.s $f22, $f16 -/* 07A9E0 7F045E70 00000000 */ nop -/* 07A9E4 7F045E74 4502001D */ bc1fl .Ljp7F045EEC -/* 07A9E8 7F045E78 8E190000 */ lw $t9, ($s0) -/* 07A9EC 7F045E7C C6020004 */ lwc1 $f2, 4($s0) -/* 07A9F0 7F045E80 C60C0008 */ lwc1 $f12, 8($s0) -/* 07A9F4 7F045E84 C7A4062C */ lwc1 $f4, 0x62c($sp) -/* 07A9F8 7F045E88 460A1182 */ mul.s $f6, $f2, $f10 -/* 07A9FC 7F045E8C C600000C */ lwc1 $f0, 0xc($s0) -/* 07AA00 7F045E90 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AA04 7F045E94 46046202 */ mul.s $f8, $f12, $f4 -/* 07AA08 7F045E98 46083100 */ add.s $f4, $f6, $f8 -/* 07AA0C 7F045E9C C7A60630 */ lwc1 $f6, 0x630($sp) -/* 07AA10 7F045EA0 46003202 */ mul.s $f8, $f6, $f0 -/* 07AA14 7F045EA4 44813000 */ mtc1 $at, $f6 -/* 07AA18 7F045EA8 46044380 */ add.s $f14, $f8, $f4 -/* 07AA1C 7F045EAC 46068200 */ add.s $f8, $f16, $f6 -/* 07AA20 7F045EB0 46004107 */ neg.s $f4, $f8 -/* 07AA24 7F045EB4 46047382 */ mul.s $f14, $f14, $f4 -/* 07AA28 7F045EB8 00000000 */ nop -/* 07AA2C 7F045EBC 460A7182 */ mul.s $f6, $f14, $f10 -/* 07AA30 7F045EC0 46061200 */ add.s $f8, $f2, $f6 -/* 07AA34 7F045EC4 E6080004 */ swc1 $f8, 4($s0) -/* 07AA38 7F045EC8 C7A4062C */ lwc1 $f4, 0x62c($sp) -/* 07AA3C 7F045ECC 46047282 */ mul.s $f10, $f14, $f4 -/* 07AA40 7F045ED0 460A6180 */ add.s $f6, $f12, $f10 -/* 07AA44 7F045ED4 E6060008 */ swc1 $f6, 8($s0) -/* 07AA48 7F045ED8 C7A80630 */ lwc1 $f8, 0x630($sp) -/* 07AA4C 7F045EDC 46087102 */ mul.s $f4, $f14, $f8 -/* 07AA50 7F045EE0 46040280 */ add.s $f10, $f0, $f4 -/* 07AA54 7F045EE4 E60A000C */ swc1 $f10, 0xc($s0) -/* 07AA58 7F045EE8 8E190000 */ lw $t9, ($s0) -.Ljp7F045EEC: -/* 07AA5C 7F045EEC 33380200 */ andi $t8, $t9, 0x200 -/* 07AA60 7F045EF0 57000004 */ bnezl $t8, .Ljp7F045F04 -/* 07AA64 7F045EF4 8E080090 */ lw $t0, 0x90($s0) -/* 07AA68 7F045EF8 0FC15FF8 */ jal sub_GAME_7F057AC0 -/* 07AA6C 7F045EFC 8FA40070 */ lw $a0, 0x70($sp) -/* 07AA70 7F045F00 8E080090 */ lw $t0, 0x90($s0) -.Ljp7F045F04: -/* 07AA74 7F045F04 3C058003 */ lui $a1, %hi(D_80030B0C) # $a1, 0x8003 -/* 07AA78 7F045F08 2406FFFF */ li $a2, -1 -/* 07AA7C 7F045F0C 25090001 */ addiu $t1, $t0, 1 -/* 07AA80 7F045F10 AE090090 */ sw $t1, 0x90($s0) -/* 07AA84 7F045F14 8CA50B4C */ lw $a1, %lo(D_80030B0C)($a1) -/* 07AA88 7F045F18 0FC19252 */ jal recall_joy2_hits_edit_detail_edit_flag -/* 07AA8C 7F045F1C 82240080 */ lb $a0, 0x80($s1) -/* 07AA90 7F045F20 3C0B8003 */ lui $t3, %hi(D_80030B0C) # $t3, 0x8003 -/* 07AA94 7F045F24 8D6B0B4C */ lw $t3, %lo(D_80030B0C)($t3) -/* 07AA98 7F045F28 3C028003 */ lui $v0, %hi(bodypartshot) # $v0, 0x8003 -/* 07AA9C 7F045F2C 916C0001 */ lbu $t4, 1($t3) -/* 07AAA0 7F045F30 318E0002 */ andi $t6, $t4, 2 -/* 07AAA4 7F045F34 51C00085 */ beql $t6, $zero, .Ljp7F04614C -/* 07AAA8 7F045F38 8FB9060C */ lw $t9, 0x60c($sp) -/* 07AAAC 7F045F3C 8C420B50 */ lw $v0, %lo(bodypartshot)($v0) -/* 07AAB0 7F045F40 24010064 */ li $at, 100 -/* 07AAB4 7F045F44 10410080 */ beq $v0, $at, .Ljp7F046148 -/* 07AAB8 7F045F48 2401006E */ li $at, 110 -/* 07AABC 7F045F4C 1041007E */ beq $v0, $at, .Ljp7F046148 -/* 07AAC0 7F045F50 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 -/* 07AAC4 7F045F54 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 -/* 07AAC8 7F045F58 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07AACC 7F045F5C 8C845BB0 */ lw $a0, %lo(objinst)($a0) -/* 07AAD0 7F045F60 0FC1B314 */ jal sub_GAME_7F06C660 -/* 07AAD4 7F045F64 00003025 */ move $a2, $zero -/* 07AAD8 7F045F68 C7A6061C */ lwc1 $f6, 0x61c($sp) -/* 07AADC 7F045F6C C7A80620 */ lwc1 $f8, 0x620($sp) -/* 07AAE0 7F045F70 C7A40624 */ lwc1 $f4, 0x624($sp) -/* 07AAE4 7F045F74 00409025 */ move $s2, $v0 -/* 07AAE8 7F045F78 E7A605D4 */ swc1 $f6, 0x5d4($sp) -/* 07AAEC 7F045F7C E7A805D8 */ swc1 $f8, 0x5d8($sp) -/* 07AAF0 7F045F80 0FC1E26D */ jal get_BONDdata_field_10CC -/* 07AAF4 7F045F84 E7A405DC */ swc1 $f4, 0x5dc($sp) -/* 07AAF8 7F045F88 00402025 */ move $a0, $v0 -/* 07AAFC 7F045F8C 0FC16265 */ jal sub_GAME_7F058474 -/* 07AB00 7F045F90 27A505D4 */ addiu $a1, $sp, 0x5d4 -/* 07AB04 7F045F94 C7AA05D4 */ lwc1 $f10, 0x5d4($sp) -/* 07AB08 7F045F98 C6460030 */ lwc1 $f6, 0x30($s2) -/* 07AB0C 7F045F9C 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07AB10 7F045FA0 44810000 */ mtc1 $at, $f0 -/* 07AB14 7F045FA4 46065201 */ sub.s $f8, $f10, $f6 -/* 07AB18 7F045FA8 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 -/* 07AB1C 7F045FAC 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 -/* 07AB20 7F045FB0 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07AB24 7F045FB4 46004102 */ mul.s $f4, $f8, $f0 -/* 07AB28 7F045FB8 C7A805D8 */ lwc1 $f8, 0x5d8($sp) -/* 07AB2C 7F045FBC 8C845BB0 */ lw $a0, %lo(objinst)($a0) -/* 07AB30 7F045FC0 46045180 */ add.s $f6, $f10, $f4 -/* 07AB34 7F045FC4 E7A605D4 */ swc1 $f6, 0x5d4($sp) -/* 07AB38 7F045FC8 C64A0034 */ lwc1 $f10, 0x34($s2) -/* 07AB3C 7F045FCC 460A4101 */ sub.s $f4, $f8, $f10 -/* 07AB40 7F045FD0 46002182 */ mul.s $f6, $f4, $f0 -/* 07AB44 7F045FD4 C7A405DC */ lwc1 $f4, 0x5dc($sp) -/* 07AB48 7F045FD8 46064280 */ add.s $f10, $f8, $f6 -/* 07AB4C 7F045FDC E7AA05D8 */ swc1 $f10, 0x5d8($sp) -/* 07AB50 7F045FE0 C6480038 */ lwc1 $f8, 0x38($s2) -/* 07AB54 7F045FE4 46082181 */ sub.s $f6, $f4, $f8 -/* 07AB58 7F045FE8 46003282 */ mul.s $f10, $f6, $f0 -/* 07AB5C 7F045FEC 460A2200 */ add.s $f8, $f4, $f10 -/* 07AB60 7F045FF0 0FC1B520 */ jal getjointsize -/* 07AB64 7F045FF4 E7A805DC */ swc1 $f8, 0x5dc($sp) -/* 07AB68 7F045FF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07AB6C 7F045FFC 44813000 */ mtc1 $at, $f6 -/* 07AB70 7F046000 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B88) # $at, 0x8007 -/* 07AB74 7F046004 C42A5BC8 */ lwc1 $f10, %lo(flt_CODE_bss_80075B88)($at) -/* 07AB78 7F046008 46060102 */ mul.s $f4, $f0, $f6 -/* 07AB7C 7F04600C C7A605D4 */ lwc1 $f6, 0x5d4($sp) -/* 07AB80 7F046010 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 -/* 07AB84 7F046014 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 -/* 07AB88 7F046018 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07AB8C 7F04601C 8C845BB0 */ lw $a0, %lo(objinst)($a0) -/* 07AB90 7F046020 460A2202 */ mul.s $f8, $f4, $f10 -/* 07AB94 7F046024 46083101 */ sub.s $f4, $f6, $f8 -/* 07AB98 7F046028 0FC1B520 */ jal getjointsize -/* 07AB9C 7F04602C E7A405D4 */ swc1 $f4, 0x5d4($sp) -/* 07ABA0 7F046030 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07ABA4 7F046034 44815000 */ mtc1 $at, $f10 -/* 07ABA8 7F046038 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B8C) # $at, 0x8007 -/* 07ABAC 7F04603C C4285BCC */ lwc1 $f8, %lo(flt_CODE_bss_80075B8C)($at) -/* 07ABB0 7F046040 460A0182 */ mul.s $f6, $f0, $f10 -/* 07ABB4 7F046044 C7AA05D8 */ lwc1 $f10, 0x5d8($sp) -/* 07ABB8 7F046048 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 -/* 07ABBC 7F04604C 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 -/* 07ABC0 7F046050 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) -/* 07ABC4 7F046054 8C845BB0 */ lw $a0, %lo(objinst)($a0) -/* 07ABC8 7F046058 46083102 */ mul.s $f4, $f6, $f8 -/* 07ABCC 7F04605C 46045181 */ sub.s $f6, $f10, $f4 -/* 07ABD0 7F046060 0FC1B520 */ jal getjointsize -/* 07ABD4 7F046064 E7A605D8 */ swc1 $f6, 0x5d8($sp) -/* 07ABD8 7F046068 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07ABDC 7F04606C 44814000 */ mtc1 $at, $f8 -/* 07ABE0 7F046070 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B90) # $at, 0x8007 -/* 07ABE4 7F046074 C4245BD0 */ lwc1 $f4, %lo(flt_CODE_bss_80075B90)($at) -/* 07ABE8 7F046078 46080282 */ mul.s $f10, $f0, $f8 -/* 07ABEC 7F04607C C7A805DC */ lwc1 $f8, 0x5dc($sp) -/* 07ABF0 7F046080 02402025 */ move $a0, $s2 -/* 07ABF4 7F046084 27A50594 */ addiu $a1, $sp, 0x594 -/* 07ABF8 7F046088 46045182 */ mul.s $f6, $f10, $f4 -/* 07ABFC 7F04608C 46064281 */ sub.s $f10, $f8, $f6 -/* 07AC00 7F046090 0FC168E1 */ jal sub_GAME_7F059E64 -/* 07AC04 7F046094 E7AA05DC */ swc1 $f10, 0x5dc($sp) -/* 07AC08 7F046098 27A40594 */ addiu $a0, $sp, 0x594 -/* 07AC0C 7F04609C 0FC16265 */ jal sub_GAME_7F058474 -/* 07AC10 7F0460A0 27A505D4 */ addiu $a1, $sp, 0x5d4 -/* 07AC14 7F0460A4 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 -/* 07AC18 7F0460A8 3C058003 */ lui $a1, %hi(bodypartshot) # $a1, 0x8003 -/* 07AC1C 7F0460AC 3C068007 */ lui $a2, %hi(dword_CODE_bss_80075B74) # $a2, 0x8007 -/* 07AC20 7F0460B0 8CC65BB4 */ lw $a2, %lo(dword_CODE_bss_80075B74)($a2) -/* 07AC24 7F0460B4 8CA50B50 */ lw $a1, %lo(bodypartshot)($a1) -/* 07AC28 7F0460B8 8C845BB0 */ lw $a0, %lo(objinst)($a0) -/* 07AC2C 7F0460BC 0FC08931 */ jal sub_GAME_7F0221DC -/* 07AC30 7F0460C0 27A705D4 */ addiu $a3, $sp, 0x5d4 -/* 07AC34 7F0460C4 10000021 */ b .Ljp7F04614C -/* 07AC38 7F0460C8 8FB9060C */ lw $t9, 0x60c($sp) -/* 07AC3C 7F0460CC 24010056 */ li $at, 86 -.Ljp7F0460D0: -/* 07AC40 7F0460D0 5441001E */ bnel $v0, $at, .Ljp7F04614C -/* 07AC44 7F0460D4 8FB9060C */ lw $t9, 0x60c($sp) -/* 07AC48 7F0460D8 92420000 */ lbu $v0, ($s2) -/* 07AC4C 7F0460DC 240A0001 */ li $t2, 1 -/* 07AC50 7F0460E0 24010003 */ li $at, 3 -/* 07AC54 7F0460E4 14410008 */ bne $v0, $at, .Ljp7F046108 -/* 07AC58 7F0460E8 AFAA060C */ sw $t2, 0x60c($sp) -/* 07AC5C 7F0460EC 8E440004 */ lw $a0, 4($s2) -/* 07AC60 7F0460F0 26250058 */ addiu $a1, $s1, 0x58 -/* 07AC64 7F0460F4 3C064000 */ lui $a2, 0x4000 -/* 07AC68 7F0460F8 0FC09EC3 */ jal sub_GAME_7F027804 -/* 07AC6C 7F0460FC 24070001 */ li $a3, 1 -/* 07AC70 7F046100 10000011 */ b .Ljp7F046148 -/* 07AC74 7F046104 A6200082 */ sh $zero, 0x82($s1) -.Ljp7F046108: -/* 07AC78 7F046108 24010001 */ li $at, 1 -/* 07AC7C 7F04610C 10410004 */ beq $v0, $at, .Ljp7F046120 -/* 07AC80 7F046110 3C0542C8 */ lui $a1, 0x42c8 -/* 07AC84 7F046114 24010004 */ li $at, 4 -/* 07AC88 7F046118 5441000B */ bnel $v0, $at, .Ljp7F046148 -/* 07AC8C 7F04611C A6200082 */ sh $zero, 0x82($s1) -.Ljp7F046120: -/* 07AC90 7F046120 8E220064 */ lw $v0, 0x64($s1) -/* 07AC94 7F046124 3C010006 */ lui $at, 6 -/* 07AC98 7F046128 8E440004 */ lw $a0, 4($s2) -/* 07AC9C 7F04612C 00416824 */ and $t5, $v0, $at -/* 07ACA0 7F046130 000D7C42 */ srl $t7, $t5, 0x11 -/* 07ACA4 7F046134 AFAF0010 */ sw $t7, 0x10($sp) -/* 07ACA8 7F046138 26260058 */ addiu $a2, $s1, 0x58 -/* 07ACAC 7F04613C 0FC13943 */ jal maybe_detonate_object -/* 07ACB0 7F046140 24070056 */ li $a3, 86 -/* 07ACB4 7F046144 A6200082 */ sh $zero, 0x82($s1) -.Ljp7F046148: -/* 07ACB8 7F046148 8FB9060C */ lw $t9, 0x60c($sp) -.Ljp7F04614C: -/* 07ACBC 7F04614C 5720010B */ bnezl $t9, .Ljp7F04657C -/* 07ACC0 7F046150 8E2F0064 */ lw $t7, 0x64($s1) -/* 07ACC4 7F046154 8FB8066C */ lw $t8, 0x66c($sp) -/* 07ACC8 7F046158 57000031 */ bnezl $t8, .Ljp7F046220 -/* 07ACCC 7F04615C 8E090000 */ lw $t1, ($s0) -/* 07ACD0 7F046160 C610008C */ lwc1 $f16, 0x8c($s0) -/* 07ACD4 7F046164 C7A40628 */ lwc1 $f4, 0x628($sp) -/* 07ACD8 7F046168 4610B03C */ c.lt.s $f22, $f16 -/* 07ACDC 7F04616C 00000000 */ nop -/* 07ACE0 7F046170 4502002B */ bc1fl .Ljp7F046220 -/* 07ACE4 7F046174 8E090000 */ lw $t1, ($s0) -/* 07ACE8 7F046178 C6020004 */ lwc1 $f2, 4($s0) -/* 07ACEC 7F04617C C60C0008 */ lwc1 $f12, 8($s0) -/* 07ACF0 7F046180 C7A6062C */ lwc1 $f6, 0x62c($sp) -/* 07ACF4 7F046184 46041202 */ mul.s $f8, $f2, $f4 -/* 07ACF8 7F046188 C600000C */ lwc1 $f0, 0xc($s0) -/* 07ACFC 7F04618C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AD00 7F046190 46066282 */ mul.s $f10, $f12, $f6 -/* 07AD04 7F046194 4616603E */ c.le.s $f12, $f22 -/* 07AD08 7F046198 460A4180 */ add.s $f6, $f8, $f10 -/* 07AD0C 7F04619C C7A80630 */ lwc1 $f8, 0x630($sp) -/* 07AD10 7F0461A0 46004282 */ mul.s $f10, $f8, $f0 -/* 07AD14 7F0461A4 44814000 */ mtc1 $at, $f8 -/* 07AD18 7F0461A8 46065380 */ add.s $f14, $f10, $f6 -/* 07AD1C 7F0461AC 46088280 */ add.s $f10, $f16, $f8 -/* 07AD20 7F0461B0 46005187 */ neg.s $f6, $f10 -/* 07AD24 7F0461B4 46067382 */ mul.s $f14, $f14, $f6 -/* 07AD28 7F0461B8 00000000 */ nop -/* 07AD2C 7F0461BC 46047202 */ mul.s $f8, $f14, $f4 -/* 07AD30 7F0461C0 46081280 */ add.s $f10, $f2, $f8 -/* 07AD34 7F0461C4 E60A0004 */ swc1 $f10, 4($s0) -/* 07AD38 7F0461C8 C7A6062C */ lwc1 $f6, 0x62c($sp) -/* 07AD3C 7F0461CC 46067102 */ mul.s $f4, $f14, $f6 -/* 07AD40 7F0461D0 46046200 */ add.s $f8, $f12, $f4 -/* 07AD44 7F0461D4 E6080008 */ swc1 $f8, 8($s0) -/* 07AD48 7F0461D8 C7AA0630 */ lwc1 $f10, 0x630($sp) -/* 07AD4C 7F0461DC 460A7182 */ mul.s $f6, $f14, $f10 -/* 07AD50 7F0461E0 46060100 */ add.s $f4, $f0, $f6 -/* 07AD54 7F0461E4 4500000D */ bc1f .Ljp7F04621C -/* 07AD58 7F0461E8 E604000C */ swc1 $f4, 0xc($s0) -/* 07AD5C 7F0461EC C6080008 */ lwc1 $f8, 8($s0) -/* 07AD60 7F0461F0 24080001 */ li $t0, 1 -/* 07AD64 7F0461F4 4608B03E */ c.le.s $f22, $f8 -/* 07AD68 7F0461F8 00000000 */ nop -/* 07AD6C 7F0461FC 45030007 */ bc1tl .Ljp7F04621C -/* 07AD70 7F046200 AFA80614 */ sw $t0, 0x614($sp) -/* 07AD74 7F046204 C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07AD78 7F046208 460AA03E */ c.le.s $f20, $f10 -/* 07AD7C 7F04620C 00000000 */ nop -/* 07AD80 7F046210 45020003 */ bc1fl .Ljp7F046220 -/* 07AD84 7F046214 8E090000 */ lw $t1, ($s0) -/* 07AD88 7F046218 AFA80614 */ sw $t0, 0x614($sp) -.Ljp7F04621C: -/* 07AD8C 7F04621C 8E090000 */ lw $t1, ($s0) -.Ljp7F046220: -/* 07AD90 7F046220 C7B40644 */ lwc1 $f20, 0x644($sp) -/* 07AD94 7F046224 312B0008 */ andi $t3, $t1, 8 -/* 07AD98 7F046228 15600014 */ bnez $t3, .Ljp7F04627C -/* 07AD9C 7F04622C 00000000 */ nop -/* 07ADA0 7F046230 8E640014 */ lw $a0, 0x14($s3) -/* 07ADA4 7F046234 8E650008 */ lw $a1, 8($s3) -/* 07ADA8 7F046238 0FC2CD48 */ jal sub_GAME_7F0B2970 -/* 07ADAC 7F04623C 8E660010 */ lw $a2, 0x10($s3) -/* 07ADB0 7F046240 46000506 */ mov.s $f20, $f0 -/* 07ADB4 7F046244 8FA40648 */ lw $a0, 0x648($sp) -/* 07ADB8 7F046248 0FC0FB2F */ jal sub_GAME_7F03E9BC -/* 07ADBC 7F04624C 8FA50074 */ lw $a1, 0x74($sp) -/* 07ADC0 7F046250 4600A101 */ sub.s $f4, $f20, $f0 -/* 07ADC4 7F046254 E7A00640 */ swc1 $f0, 0x640($sp) -/* 07ADC8 7F046258 C666000C */ lwc1 $f6, 0xc($s3) -/* 07ADCC 7F04625C 00006025 */ move $t4, $zero -/* 07ADD0 7F046260 4604303C */ c.lt.s $f6, $f4 -/* 07ADD4 7F046264 00000000 */ nop -/* 07ADD8 7F046268 45000002 */ bc1f .Ljp7F046274 -/* 07ADDC 7F04626C 00000000 */ nop -/* 07ADE0 7F046270 240C0001 */ li $t4, 1 -.Ljp7F046274: -/* 07ADE4 7F046274 10000001 */ b .Ljp7F04627C -/* 07ADE8 7F046278 AFAC0618 */ sw $t4, 0x618($sp) -.Ljp7F04627C: -/* 07ADEC 7F04627C 8FAE0618 */ lw $t6, 0x618($sp) -/* 07ADF0 7F046280 8FAA066C */ lw $t2, 0x66c($sp) -/* 07ADF4 7F046284 55C00004 */ bnezl $t6, .Ljp7F046298 -/* 07ADF8 7F046288 8E0D0000 */ lw $t5, ($s0) -/* 07ADFC 7F04628C 5540000B */ bnezl $t2, .Ljp7F0462BC -/* 07AE00 7F046290 8FA80618 */ lw $t0, 0x618($sp) -/* 07AE04 7F046294 8E0D0000 */ lw $t5, ($s0) -.Ljp7F046298: -/* 07AE08 7F046298 31AF0200 */ andi $t7, $t5, 0x200 -/* 07AE0C 7F04629C 55E00004 */ bnezl $t7, .Ljp7F0462B0 -/* 07AE10 7F0462A0 8E190090 */ lw $t9, 0x90($s0) -/* 07AE14 7F0462A4 0FC15FF8 */ jal sub_GAME_7F057AC0 -/* 07AE18 7F0462A8 8FA40070 */ lw $a0, 0x70($sp) -/* 07AE1C 7F0462AC 8E190090 */ lw $t9, 0x90($s0) -.Ljp7F0462B0: -/* 07AE20 7F0462B0 27380001 */ addiu $t8, $t9, 1 -/* 07AE24 7F0462B4 AE180090 */ sw $t8, 0x90($s0) -/* 07AE28 7F0462B8 8FA80618 */ lw $t0, 0x618($sp) -.Ljp7F0462BC: -/* 07AE2C 7F0462BC 8FA90614 */ lw $t1, 0x614($sp) -/* 07AE30 7F0462C0 8FAB0618 */ lw $t3, 0x618($sp) -/* 07AE34 7F0462C4 15000003 */ bnez $t0, .Ljp7F0462D4 -/* 07AE38 7F0462C8 00000000 */ nop -/* 07AE3C 7F0462CC 5120003A */ beql $t1, $zero, .Ljp7F0463B8 -/* 07AE40 7F0462D0 92390003 */ lbu $t9, 3($s1) -.Ljp7F0462D4: -/* 07AE44 7F0462D4 11600009 */ beqz $t3, .Ljp7F0462FC -/* 07AE48 7F0462D8 C7A40620 */ lwc1 $f4, 0x620($sp) -/* 07AE4C 7F0462DC C7A80640 */ lwc1 $f8, 0x640($sp) -/* 07AE50 7F0462E0 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07AE54 7F0462E4 44813000 */ mtc1 $at, $f6 -/* 07AE58 7F0462E8 4608A281 */ sub.s $f10, $f20, $f8 -/* 07AE5C 7F0462EC 46065000 */ add.s $f0, $f10, $f6 -/* 07AE60 7F0462F0 E660000C */ swc1 $f0, 0xc($s3) -/* 07AE64 7F0462F4 10000008 */ b .Ljp7F046318 -/* 07AE68 7F0462F8 E620005C */ swc1 $f0, 0x5c($s1) -.Ljp7F0462FC: -/* 07AE6C 7F0462FC C7A80640 */ lwc1 $f8, 0x640($sp) -/* 07AE70 7F046300 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07AE74 7F046304 44813000 */ mtc1 $at, $f6 -/* 07AE78 7F046308 46082281 */ sub.s $f10, $f4, $f8 -/* 07AE7C 7F04630C 46065080 */ add.s $f2, $f10, $f6 -/* 07AE80 7F046310 E662000C */ swc1 $f2, 0xc($s3) -/* 07AE84 7F046314 E622005C */ swc1 $f2, 0x5c($s1) -.Ljp7F046318: -/* 07AE88 7F046318 8E230064 */ lw $v1, 0x64($s1) -/* 07AE8C 7F04631C 02202025 */ move $a0, $s1 -/* 07AE90 7F046320 000363C0 */ sll $t4, $v1, 0xf -/* 07AE94 7F046324 05800002 */ bltz $t4, .Ljp7F046330 -/* 07AE98 7F046328 346E0100 */ ori $t6, $v1, 0x100 -/* 07AE9C 7F04632C AE2E0064 */ sw $t6, 0x64($s1) -.Ljp7F046330: -/* 07AEA0 7F046330 C610008C */ lwc1 $f16, 0x8c($s0) -/* 07AEA4 7F046334 4610B03C */ c.lt.s $f22, $f16 -/* 07AEA8 7F046338 00000000 */ nop -/* 07AEAC 7F04633C 4500001B */ bc1f .Ljp7F0463AC -/* 07AEB0 7F046340 00000000 */ nop -/* 07AEB4 7F046344 C6040008 */ lwc1 $f4, 8($s0) -/* 07AEB8 7F046348 46008207 */ neg.s $f8, $f16 -/* 07AEBC 7F04634C 3C018005 */ lui $at, %hi(D_80052AA8) # $at, 0x8005 -/* 07AEC0 7F046350 46082282 */ mul.s $f10, $f4, $f8 -/* 07AEC4 7F046354 C4202AD8 */ lwc1 $f0, %lo(D_80052AA8)($at) -/* 07AEC8 7F046358 E60A0008 */ swc1 $f10, 8($s0) -/* 07AECC 7F04635C C6060008 */ lwc1 $f6, 8($s0) -/* 07AED0 7F046360 4600303C */ c.lt.s $f6, $f0 -/* 07AED4 7F046364 00000000 */ nop -/* 07AED8 7F046368 45020013 */ bc1fl .Ljp7F0463B8 -/* 07AEDC 7F04636C 92390003 */ lbu $t9, 3($s1) -/* 07AEE0 7F046370 8E0A0000 */ lw $t2, ($s0) -/* 07AEE4 7F046374 02202025 */ move $a0, $s1 -/* 07AEE8 7F046378 314D0002 */ andi $t5, $t2, 2 -/* 07AEEC 7F04637C 11A00007 */ beqz $t5, .Ljp7F04639C -/* 07AEF0 7F046380 00000000 */ nop -/* 07AEF4 7F046384 8E0F0090 */ lw $t7, 0x90($s0) -/* 07AEF8 7F046388 24010001 */ li $at, 1 -/* 07AEFC 7F04638C 15E10003 */ bne $t7, $at, .Ljp7F04639C -/* 07AF00 7F046390 00000000 */ nop -/* 07AF04 7F046394 10000007 */ b .Ljp7F0463B4 -/* 07AF08 7F046398 E6000008 */ swc1 $f0, 8($s0) -.Ljp7F04639C: -/* 07AF0C 7F04639C 0FC10D39 */ jal sub_GAME_7F0431E4 -/* 07AF10 7F0463A0 27A50634 */ addiu $a1, $sp, 0x634 -/* 07AF14 7F0463A4 10000004 */ b .Ljp7F0463B8 -/* 07AF18 7F0463A8 92390003 */ lbu $t9, 3($s1) -.Ljp7F0463AC: -/* 07AF1C 7F0463AC 0FC10D39 */ jal sub_GAME_7F0431E4 -/* 07AF20 7F0463B0 27A50634 */ addiu $a1, $sp, 0x634 -.Ljp7F0463B4: -/* 07AF24 7F0463B4 92390003 */ lbu $t9, 3($s1) -.Ljp7F0463B8: -/* 07AF28 7F0463B8 24010008 */ li $at, 8 -/* 07AF2C 7F0463BC 5721006F */ bnel $t9, $at, .Ljp7F04657C -/* 07AF30 7F0463C0 8E2F0064 */ lw $t7, 0x64($s1) -/* 07AF34 7F0463C4 82220080 */ lb $v0, 0x80($s1) -/* 07AF38 7F0463C8 24010003 */ li $at, 3 -/* 07AF3C 7F0463CC 54410006 */ bnel $v0, $at, .Ljp7F0463E8 -/* 07AF40 7F0463D0 24010056 */ li $at, 86 -/* 07AF44 7F0463D4 0FC10E54 */ jal sub_GAME_7F043650 -/* 07AF48 7F0463D8 02202025 */ move $a0, $s1 -/* 07AF4C 7F0463DC 10000042 */ b .Ljp7F0464E8 -/* 07AF50 7F0463E0 8FAB066C */ lw $t3, 0x66c($sp) -/* 07AF54 7F0463E4 24010056 */ li $at, 86 -.Ljp7F0463E8: -/* 07AF58 7F0463E8 1441002D */ bne $v0, $at, .Ljp7F0464A0 -/* 07AF5C 7F0463EC 8FB8066C */ lw $t8, 0x66c($sp) -/* 07AF60 7F0463F0 13000003 */ beqz $t8, .Ljp7F046400 -/* 07AF64 7F0463F4 8FA80618 */ lw $t0, 0x618($sp) -/* 07AF68 7F0463F8 51000004 */ beql $t0, $zero, .Ljp7F04640C -/* 07AF6C 7F0463FC C6020004 */ lwc1 $f2, 4($s0) -.Ljp7F046400: -/* 07AF70 7F046400 10000038 */ b .Ljp7F0464E4 -/* 07AF74 7F046404 A6200082 */ sh $zero, 0x82($s1) -/* 07AF78 7F046408 C6020004 */ lwc1 $f2, 4($s0) -.Ljp7F04640C: -/* 07AF7C 7F04640C C60C0008 */ lwc1 $f12, 8($s0) -/* 07AF80 7F046410 C600000C */ lwc1 $f0, 0xc($s0) -/* 07AF84 7F046414 46021102 */ mul.s $f4, $f2, $f2 -/* 07AF88 7F046418 3C018005 */ lui $at, %hi(D_80052AAC) -/* 07AF8C 7F04641C 26240058 */ addiu $a0, $s1, 0x58 -/* 07AF90 7F046420 460C6202 */ mul.s $f8, $f12, $f12 -/* 07AF94 7F046424 24060008 */ li $a2, 8 -/* 07AF98 7F046428 46000182 */ mul.s $f6, $f0, $f0 -/* 07AF9C 7F04642C 46082280 */ add.s $f10, $f4, $f8 -/* 07AFA0 7F046430 C4242ADC */ lwc1 $f4, %lo(D_80052AAC)($at) -/* 07AFA4 7F046434 460A3380 */ add.s $f14, $f6, $f10 -/* 07AFA8 7F046438 460E203C */ c.lt.s $f4, $f14 -/* 07AFAC 7F04643C 00000000 */ nop -/* 07AFB0 7F046440 45020005 */ bc1fl .Ljp7F046458 -/* 07AFB4 7F046444 8E0900A8 */ lw $t1, 0xa8($s0) -/* 07AFB8 7F046448 E6160010 */ swc1 $f22, 0x10($s0) -/* 07AFBC 7F04644C E6160014 */ swc1 $f22, 0x14($s0) -/* 07AFC0 7F046450 E6160018 */ swc1 $f22, 0x18($s0) -/* 07AFC4 7F046454 8E0900A8 */ lw $t1, 0xa8($s0) -.Ljp7F046458: -/* 07AFC8 7F046458 2921012D */ slti $at, $t1, 0x12d -/* 07AFCC 7F04645C 54200008 */ bnezl $at, .Ljp7F046480 -/* 07AFD0 7F046460 926E0001 */ lbu $t6, 1($s3) -/* 07AFD4 7F046464 8E0B0000 */ lw $t3, ($s0) -/* 07AFD8 7F046468 2401FFCF */ li $at, -49 -/* 07AFDC 7F04646C E616001C */ swc1 $f22, 0x1c($s0) -/* 07AFE0 7F046470 01616024 */ and $t4, $t3, $at -/* 07AFE4 7F046474 1000001B */ b .Ljp7F0464E4 -/* 07AFE8 7F046478 AE0C0000 */ sw $t4, ($s0) -/* 07AFEC 7F04647C 926E0001 */ lbu $t6, 1($s3) -.Ljp7F046480: -/* 07AFF0 7F046480 8E650014 */ lw $a1, 0x14($s3) -/* 07AFF4 7F046484 2667002C */ addiu $a3, $s3, 0x2c -/* 07AFF8 7F046488 31CA0008 */ andi $t2, $t6, 8 -/* 07AFFC 7F04648C 000A682B */ sltu $t5, $zero, $t2 -/* 07B000 7F046490 0FC27CA9 */ jal sub_GAME_7F09E700 -/* 07B004 7F046494 AFAD0010 */ sw $t5, 0x10($sp) -/* 07B008 7F046498 10000013 */ b .Ljp7F0464E8 -/* 07B00C 7F04649C 8FAB066C */ lw $t3, 0x66c($sp) -.Ljp7F0464A0: -/* 07B010 7F0464A0 24010057 */ li $at, 87 -/* 07B014 7F0464A4 1441000F */ bne $v0, $at, .Ljp7F0464E4 -/* 07B018 7F0464A8 8FAF0618 */ lw $t7, 0x618($sp) -/* 07B01C 7F0464AC 15E00003 */ bnez $t7, .Ljp7F0464BC -/* 07B020 7F0464B0 8FB90614 */ lw $t9, 0x614($sp) -/* 07B024 7F0464B4 13200003 */ beqz $t9, .Ljp7F0464C4 -/* 07B028 7F0464B8 26240058 */ addiu $a0, $s1, 0x58 -.Ljp7F0464BC: -/* 07B02C 7F0464BC 10000009 */ b .Ljp7F0464E4 -/* 07B030 7F0464C0 A6200082 */ sh $zero, 0x82($s1) -.Ljp7F0464C4: -/* 07B034 7F0464C4 92780001 */ lbu $t8, 1($s3) -/* 07B038 7F0464C8 8E650014 */ lw $a1, 0x14($s3) -/* 07B03C 7F0464CC 24060009 */ li $a2, 9 -/* 07B040 7F0464D0 33080008 */ andi $t0, $t8, 8 -/* 07B044 7F0464D4 0008482B */ sltu $t1, $zero, $t0 -/* 07B048 7F0464D8 AFA90010 */ sw $t1, 0x10($sp) -/* 07B04C 7F0464DC 0FC27CA9 */ jal sub_GAME_7F09E700 -/* 07B050 7F0464E0 2667002C */ addiu $a3, $s3, 0x2c -.Ljp7F0464E4: -/* 07B054 7F0464E4 8FAB066C */ lw $t3, 0x66c($sp) -.Ljp7F0464E8: -/* 07B058 7F0464E8 3C128005 */ lui $s2, %hi(D_80048380) # $s2, 0x8005 -/* 07B05C 7F0464EC 265283B0 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c50 -/* 07B060 7F0464F0 11600003 */ beqz $t3, .Ljp7F046500 -/* 07B064 7F0464F4 8FAC0618 */ lw $t4, 0x618($sp) -/* 07B068 7F0464F8 51800020 */ beql $t4, $zero, .Ljp7F04657C -/* 07B06C 7F0464FC 8E2F0064 */ lw $t7, 0x64($s1) -.Ljp7F046500: -/* 07B070 7F046500 8E420000 */ lw $v0, ($s2) -/* 07B074 7F046504 8E0E00AC */ lw $t6, 0xac($s0) -/* 07B078 7F046508 244AFFFE */ addiu $t2, $v0, -2 -/* 07B07C 7F04650C 01CA082A */ slt $at, $t6, $t2 -/* 07B080 7F046510 50200019 */ beql $at, $zero, .Ljp7F046578 -/* 07B084 7F046514 AE0200AC */ sw $v0, 0xac($s0) -/* 07B088 7F046518 82220080 */ lb $v0, 0x80($s1) -/* 07B08C 7F04651C 266D0008 */ addiu $t5, $s3, 8 -/* 07B090 7F046520 24010003 */ li $at, 3 -/* 07B094 7F046524 10410004 */ beq $v0, $at, .Ljp7F046538 -/* 07B098 7F046528 AFAD0074 */ sw $t5, 0x74($sp) -/* 07B09C 7F04652C 24010002 */ li $at, 2 -/* 07B0A0 7F046530 14410008 */ bne $v0, $at, .Ljp7F046554 -/* 07B0A4 7F046534 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -.Ljp7F046538: -/* 07B0A8 7F046538 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07B0AC 7F04653C 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07B0B0 7F046540 24050003 */ li $a1, 3 -/* 07B0B4 7F046544 0C002386 */ jal play_sfx_a1 -/* 07B0B8 7F046548 00003025 */ move $a2, $zero -/* 07B0BC 7F04654C 10000006 */ b .Ljp7F046568 -/* 07B0C0 7F046550 00402025 */ move $a0, $v0 -.Ljp7F046554: -/* 07B0C4 7F046554 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07B0C8 7F046558 2405002D */ li $a1, 45 -/* 07B0CC 7F04655C 0C002386 */ jal play_sfx_a1 -/* 07B0D0 7F046560 00003025 */ move $a2, $zero -/* 07B0D4 7F046564 00402025 */ move $a0, $v0 -.Ljp7F046568: -/* 07B0D8 7F046568 0FC14FC3 */ jal sub_GAME_7F053A10 -/* 07B0DC 7F04656C 8FA50074 */ lw $a1, 0x74($sp) -/* 07B0E0 7F046570 8E420000 */ lw $v0, ($s2) -/* 07B0E4 7F046574 AE0200AC */ sw $v0, 0xac($s0) -.Ljp7F046578: -/* 07B0E8 7F046578 8E2F0064 */ lw $t7, 0x64($s1) -.Ljp7F04657C: -/* 07B0EC 7F04657C 3C128005 */ lui $s2, %hi(D_80048380) # $s2, 0x8005 -/* 07B0F0 7F046580 265283B0 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c50 -/* 07B0F4 7F046584 31F90080 */ andi $t9, $t7, 0x80 -/* 07B0F8 7F046588 53200125 */ beql $t9, $zero, .Ljp7F046A20 -/* 07B0FC 7F04658C 8FAB0698 */ lw $t3, 0x698($sp) -/* 07B100 7F046590 8E180000 */ lw $t8, ($s0) -/* 07B104 7F046594 33080400 */ andi $t0, $t8, 0x400 -/* 07B108 7F046598 51000121 */ beql $t0, $zero, .Ljp7F046A20 -/* 07B10C 7F04659C 8FAB0698 */ lw $t3, 0x698($sp) -/* 07B110 7F0465A0 8E420000 */ lw $v0, ($s2) -/* 07B114 7F0465A4 3C0143C8 */ li $at, 0x43C80000 # 400.000000 -/* 07B118 7F0465A8 27B0056C */ addiu $s0, $sp, 0x56c -/* 07B11C 7F0465AC 30490007 */ andi $t1, $v0, 7 -/* 07B120 7F0465B0 1520011A */ bnez $t1, .Ljp7F046A1C -/* 07B124 7F0465B4 00002025 */ move $a0, $zero -/* 07B128 7F0465B8 44810000 */ mtc1 $at, $f0 -/* 07B12C 7F0465BC C6280058 */ lwc1 $f8, 0x58($s1) -/* 07B130 7F0465C0 3C0144E1 */ li $at, 0x44E10000 # 1800.000000 -/* 07B134 7F0465C4 44812000 */ mtc1 $at, $f4 -/* 07B138 7F0465C8 46004180 */ add.s $f6, $f8, $f0 -/* 07B13C 7F0465CC 304B000F */ andi $t3, $v0, 0xf -/* 07B140 7F0465D0 E7A6056C */ swc1 $f6, 0x56c($sp) -/* 07B144 7F0465D4 C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07B148 7F0465D8 46045201 */ sub.s $f8, $f10, $f4 -/* 07B14C 7F0465DC E7A80570 */ swc1 $f8, 0x570($sp) -/* 07B150 7F0465E0 C6260060 */ lwc1 $f6, 0x60($s1) -/* 07B154 7F0465E4 15600005 */ bnez $t3, .Ljp7F0465FC -/* 07B158 7F0465E8 E7A60574 */ swc1 $f6, 0x574($sp) -/* 07B15C 7F0465EC C7AA0574 */ lwc1 $f10, 0x574($sp) -/* 07B160 7F0465F0 46005100 */ add.s $f4, $f10, $f0 -/* 07B164 7F0465F4 10000004 */ b .Ljp7F046608 -/* 07B168 7F0465F8 E7A40574 */ swc1 $f4, 0x574($sp) -.Ljp7F0465FC: -/* 07B16C 7F0465FC C7A80574 */ lwc1 $f8, 0x574($sp) -/* 07B170 7F046600 46004181 */ sub.s $f6, $f8, $f0 -/* 07B174 7F046604 E7A60574 */ swc1 $f6, 0x574($sp) -.Ljp7F046608: -/* 07B178 7F046608 8E220010 */ lw $v0, 0x10($s1) -/* 07B17C 7F04660C 02002825 */ move $a1, $s0 -/* 07B180 7F046610 24070014 */ li $a3, 20 -/* 07B184 7F046614 8C460014 */ lw $a2, 0x14($v0) -/* 07B188 7F046618 244C002C */ addiu $t4, $v0, 0x2c -/* 07B18C 7F04661C AFAC0018 */ sw $t4, 0x18($sp) -/* 07B190 7F046620 AFA0001C */ sw $zero, 0x1c($sp) -/* 07B194 7F046624 AFA00014 */ sw $zero, 0x14($sp) -/* 07B198 7F046628 0FC2737C */ jal sub_GAME_7F09C250 -/* 07B19C 7F04662C AFA00010 */ sw $zero, 0x10($sp) -/* 07B1A0 7F046630 8E4E0000 */ lw $t6, ($s2) -/* 07B1A4 7F046634 24010028 */ li $at, 40 -/* 07B1A8 7F046638 02002025 */ move $a0, $s0 -/* 07B1AC 7F04663C 01C1001A */ div $zero, $t6, $at -/* 07B1B0 7F046640 00005010 */ mfhi $t2 -/* 07B1B4 7F046644 554000F6 */ bnezl $t2, .Ljp7F046A20 -/* 07B1B8 7F046648 8FAB0698 */ lw $t3, 0x698($sp) -/* 07B1BC 7F04664C 8E220010 */ lw $v0, 0x10($s1) -/* 07B1C0 7F046650 240D0001 */ li $t5, 1 -/* 07B1C4 7F046654 2406000A */ li $a2, 10 -/* 07B1C8 7F046658 8C450014 */ lw $a1, 0x14($v0) -/* 07B1CC 7F04665C AFAD0010 */ sw $t5, 0x10($sp) -/* 07B1D0 7F046660 0FC27CA9 */ jal sub_GAME_7F09E700 -/* 07B1D4 7F046664 2447002C */ addiu $a3, $v0, 0x2c -/* 07B1D8 7F046668 100000ED */ b .Ljp7F046A20 -/* 07B1DC 7F04666C 8FAB0698 */ lw $t3, 0x698($sp) -/* 07B1E0 7F046670 C6000060 */ lwc1 $f0, 0x60($s0) -.Ljp7F046674: -/* 07B1E4 7F046674 44815000 */ mtc1 $at, $f10 -/* 07B1E8 7F046678 24120001 */ li $s2, 1 -/* 07B1EC 7F04667C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07B1F0 7F046680 460A003C */ c.lt.s $f0, $f10 -/* 07B1F4 7F046684 26040068 */ addiu $a0, $s0, 0x68 -/* 07B1F8 7F046688 26050078 */ addiu $a1, $s0, 0x78 -/* 07B1FC 7F04668C 45020031 */ bc1fl .Ljp7F046754 -/* 07B200 7F046690 C60A0004 */ lwc1 $f10, 4($s0) -/* 07B204 7F046694 C6020064 */ lwc1 $f2, 0x64($s0) -/* 07B208 7F046698 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07B20C 7F04669C 3C0F8005 */ lui $t7, %hi(clock_timer) # $t7, 0x8005 -/* 07B210 7F0466A0 3C018005 */ lui $at, %hi(D_80052AB0) -/* 07B214 7F0466A4 46041202 */ mul.s $f8, $f2, $f4 -/* 07B218 7F0466A8 27B20558 */ addiu $s2, $sp, 0x558 -/* 07B21C 7F0466AC 46080180 */ add.s $f6, $f0, $f8 -/* 07B220 7F0466B0 E6060060 */ swc1 $f6, 0x60($s0) -/* 07B224 7F0466B4 8DEF83A4 */ lw $t7, %lo(clock_timer)($t7) -/* 07B228 7F0466B8 59E00005 */ blezl $t7, .Ljp7F0466D0 -/* 07B22C 7F0466BC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B230 7F0466C0 C42A2AE0 */ lwc1 $f10, %lo(D_80052AB0)($at) -/* 07B234 7F0466C4 460A1102 */ mul.s $f4, $f2, $f10 -/* 07B238 7F0466C8 E6040064 */ swc1 $f4, 0x64($s0) -/* 07B23C 7F0466CC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -.Ljp7F0466D0: -/* 07B240 7F0466D0 44814000 */ mtc1 $at, $f8 -/* 07B244 7F0466D4 C6000060 */ lwc1 $f0, 0x60($s0) -/* 07B248 7F0466D8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B24C 7F0466DC 4600403C */ c.lt.s $f8, $f0 -/* 07B250 7F0466E0 00000000 */ nop -/* 07B254 7F0466E4 45030006 */ bc1tl .Ljp7F046700 -/* 07B258 7F0466E8 44813000 */ mtc1 $at, $f6 -/* 07B25C 7F0466EC 8E190000 */ lw $t9, ($s0) -/* 07B260 7F0466F0 33380008 */ andi $t8, $t9, 8 -/* 07B264 7F0466F4 53000006 */ beql $t8, $zero, .Ljp7F046710 -/* 07B268 7F0466F8 44060000 */ mfc1 $a2, $f0 -/* 07B26C 7F0466FC 44813000 */ mtc1 $at, $f6 -.Ljp7F046700: -/* 07B270 7F046700 00000000 */ nop -/* 07B274 7F046704 E6060060 */ swc1 $f6, 0x60($s0) -/* 07B278 7F046708 C6000060 */ lwc1 $f0, 0x60($s0) -/* 07B27C 7F04670C 44060000 */ mfc1 $a2, $f0 -.Ljp7F046710: -/* 07B280 7F046710 0FC16FCA */ jal sub_GAME_7F05BA08 -/* 07B284 7F046714 02403825 */ move $a3, $s2 -/* 07B288 7F046718 26250018 */ addiu $a1, $s1, 0x18 -/* 07B28C 7F04671C AFA50074 */ sw $a1, 0x74($sp) -/* 07B290 7F046720 0FC16ED2 */ jal sub_GAME_7F05B628 -/* 07B294 7F046724 02402025 */ move $a0, $s2 -/* 07B298 7F046728 C60C00C0 */ lwc1 $f12, 0xc0($s0) -/* 07B29C 7F04672C 0FC163B5 */ jal sub_GAME_7F0589B4 -/* 07B2A0 7F046730 8FA50074 */ lw $a1, 0x74($sp) -/* 07B2A4 7F046734 C60C00C4 */ lwc1 $f12, 0xc4($s0) -/* 07B2A8 7F046738 0FC163C1 */ jal sub_GAME_7F0589E4 -/* 07B2AC 7F04673C 8FA50074 */ lw $a1, 0x74($sp) -/* 07B2B0 7F046740 C60C00C8 */ lwc1 $f12, 0xc8($s0) -/* 07B2B4 7F046744 0FC163DB */ jal sub_GAME_7F058A4C -/* 07B2B8 7F046748 8FA50074 */ lw $a1, 0x74($sp) -/* 07B2BC 7F04674C 00009025 */ move $s2, $zero -/* 07B2C0 7F046750 C60A0004 */ lwc1 $f10, 4($s0) -.Ljp7F046754: -/* 07B2C4 7F046754 460AB032 */ c.eq.s $f22, $f10 -/* 07B2C8 7F046758 00000000 */ nop -/* 07B2CC 7F04675C 4502000F */ bc1fl .Ljp7F04679C -/* 07B2D0 7F046760 8E080000 */ lw $t0, ($s0) -/* 07B2D4 7F046764 C604000C */ lwc1 $f4, 0xc($s0) -/* 07B2D8 7F046768 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B2DC 7F04676C 4604B032 */ c.eq.s $f22, $f4 -/* 07B2E0 7F046770 00000000 */ nop -/* 07B2E4 7F046774 45020009 */ bc1fl .Ljp7F04679C -/* 07B2E8 7F046778 8E080000 */ lw $t0, ($s0) -/* 07B2EC 7F04677C C6080060 */ lwc1 $f8, 0x60($s0) -/* 07B2F0 7F046780 44813000 */ mtc1 $at, $f6 -/* 07B2F4 7F046784 00000000 */ nop -/* 07B2F8 7F046788 4606403C */ c.lt.s $f8, $f6 -/* 07B2FC 7F04678C 00000000 */ nop -/* 07B300 7F046790 45000088 */ bc1f .Ljp7F0469B4 -/* 07B304 7F046794 00000000 */ nop -/* 07B308 7F046798 8E080000 */ lw $t0, ($s0) -.Ljp7F04679C: -/* 07B30C 7F04679C 02202025 */ move $a0, $s1 -/* 07B310 7F0467A0 262B0018 */ addiu $t3, $s1, 0x18 -/* 07B314 7F0467A4 31090008 */ andi $t1, $t0, 8 -/* 07B318 7F0467A8 15200082 */ bnez $t1, .Ljp7F0469B4 -/* 07B31C 7F0467AC 00000000 */ nop -/* 07B320 7F0467B0 AFAB0074 */ sw $t3, 0x74($sp) -/* 07B324 7F0467B4 0FC100DE */ jal sub_GAME_7F040078 -/* 07B328 7F0467B8 00009025 */ move $s2, $zero -/* 07B32C 7F0467BC 3C038005 */ lui $v1, %hi(clock_timer) # $v1, 0x8005 -/* 07B330 7F0467C0 8C6383A4 */ lw $v1, %lo(clock_timer)($v1) -/* 07B334 7F0467C4 AFA20554 */ sw $v0, 0x554($sp) -/* 07B338 7F0467C8 00002025 */ move $a0, $zero -/* 07B33C 7F0467CC 18600048 */ blez $v1, .Ljp7F0468F0 -/* 07B340 7F0467D0 3C018005 */ lui $at, %hi(D_80052AB4) # $at, 0x8005 -/* 07B344 7F0467D4 C42E2AE4 */ lwc1 $f14, %lo(D_80052AB4)($at) -/* 07B348 7F0467D8 C7AA069C */ lwc1 $f10, 0x69c($sp) -.Ljp7F0467DC: -/* 07B34C 7F0467DC C6040004 */ lwc1 $f4, 4($s0) -/* 07B350 7F0467E0 C7A606A4 */ lwc1 $f6, 0x6a4($sp) -/* 07B354 7F0467E4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B358 7F0467E8 46045200 */ add.s $f8, $f10, $f4 -/* 07B35C 7F0467EC E7A8069C */ swc1 $f8, 0x69c($sp) -/* 07B360 7F0467F0 C60A000C */ lwc1 $f10, 0xc($s0) -/* 07B364 7F0467F4 460A3100 */ add.s $f4, $f6, $f10 -/* 07B368 7F0467F8 44813000 */ mtc1 $at, $f6 -/* 07B36C 7F0467FC E7A406A4 */ swc1 $f4, 0x6a4($sp) -/* 07B370 7F046800 C6080060 */ lwc1 $f8, 0x60($s0) -/* 07B374 7F046804 4608303E */ c.le.s $f6, $f8 -/* 07B378 7F046808 00000000 */ nop -/* 07B37C 7F04680C 45020035 */ bc1fl .Ljp7F0468E4 -/* 07B380 7F046810 24840001 */ addiu $a0, $a0, 1 -/* 07B384 7F046814 C60A0094 */ lwc1 $f10, 0x94($s0) -/* 07B388 7F046818 460AB03C */ c.lt.s $f22, $f10 -/* 07B38C 7F04681C 00000000 */ nop -/* 07B390 7F046820 45020027 */ bc1fl .Ljp7F0468C0 -/* 07B394 7F046824 C6060004 */ lwc1 $f6, 4($s0) -/* 07B398 7F046828 C600000C */ lwc1 $f0, 0xc($s0) -/* 07B39C 7F04682C C6020004 */ lwc1 $f2, 4($s0) -/* 07B3A0 7F046830 AFA40550 */ sw $a0, 0x550($sp) -/* 07B3A4 7F046834 46000102 */ mul.s $f4, $f0, $f0 -/* 07B3A8 7F046838 00000000 */ nop -/* 07B3AC 7F04683C 46021202 */ mul.s $f8, $f2, $f2 -/* 07B3B0 7F046840 0C007E08 */ jal sqrtf -/* 07B3B4 7F046844 46082300 */ add.s $f12, $f4, $f8 -/* 07B3B8 7F046848 3C018005 */ lui $at, %hi(D_80052AB8) # $at, 0x8005 -/* 07B3BC 7F04684C C42E2AE8 */ lwc1 $f14, %lo(D_80052AB8)($at) -/* 07B3C0 7F046850 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07B3C4 7F046854 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07B3C8 7F046858 C6060094 */ lwc1 $f6, 0x94($s0) -/* 07B3CC 7F04685C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B3D0 7F046860 44814000 */ mtc1 $at, $f8 -/* 07B3D4 7F046864 460A3102 */ mul.s $f4, $f6, $f10 -/* 07B3D8 7F046868 8FA40550 */ lw $a0, 0x550($sp) -/* 07B3DC 7F04686C 3C038005 */ lui $v1, %hi(clock_timer) # $v1, 0x8005 -/* 07B3E0 7F046870 46002303 */ div.s $f12, $f4, $f0 -/* 07B3E4 7F046874 460C403E */ c.le.s $f8, $f12 -/* 07B3E8 7F046878 00000000 */ nop -/* 07B3EC 7F04687C 45020005 */ bc1fl .Ljp7F046894 -/* 07B3F0 7F046880 C6020004 */ lwc1 $f2, 4($s0) -/* 07B3F4 7F046884 E6160004 */ swc1 $f22, 4($s0) -/* 07B3F8 7F046888 1000000A */ b .Ljp7F0468B4 -/* 07B3FC 7F04688C E616000C */ swc1 $f22, 0xc($s0) -/* 07B400 7F046890 C6020004 */ lwc1 $f2, 4($s0) -.Ljp7F046894: -/* 07B404 7F046894 C600000C */ lwc1 $f0, 0xc($s0) -/* 07B408 7F046898 460C1182 */ mul.s $f6, $f2, $f12 -/* 07B40C 7F04689C 00000000 */ nop -/* 07B410 7F0468A0 460C0102 */ mul.s $f4, $f0, $f12 -/* 07B414 7F0468A4 46061281 */ sub.s $f10, $f2, $f6 -/* 07B418 7F0468A8 46040201 */ sub.s $f8, $f0, $f4 -/* 07B41C 7F0468AC E60A0004 */ swc1 $f10, 4($s0) -/* 07B420 7F0468B0 E608000C */ swc1 $f8, 0xc($s0) -.Ljp7F0468B4: -/* 07B424 7F0468B4 1000000A */ b .Ljp7F0468E0 -/* 07B428 7F0468B8 8C6383A4 */ lw $v1, %lo(clock_timer)($v1) -/* 07B42C 7F0468BC C6060004 */ lwc1 $f6, 4($s0) -.Ljp7F0468C0: -/* 07B430 7F0468C0 C604000C */ lwc1 $f4, 0xc($s0) -/* 07B434 7F0468C4 3C038005 */ lui $v1, %hi(clock_timer) # $v1, 0x8005 -/* 07B438 7F0468C8 460E3282 */ mul.s $f10, $f6, $f14 -/* 07B43C 7F0468CC 00000000 */ nop -/* 07B440 7F0468D0 460E2202 */ mul.s $f8, $f4, $f14 -/* 07B444 7F0468D4 E60A0004 */ swc1 $f10, 4($s0) -/* 07B448 7F0468D8 E608000C */ swc1 $f8, 0xc($s0) -/* 07B44C 7F0468DC 8C6383A4 */ lw $v1, %lo(clock_timer)($v1) -.Ljp7F0468E0: -/* 07B450 7F0468E0 24840001 */ addiu $a0, $a0, 1 -.Ljp7F0468E4: -/* 07B454 7F0468E4 0083082A */ slt $at, $a0, $v1 -/* 07B458 7F0468E8 5420FFBC */ bnezl $at, .Ljp7F0467DC -/* 07B45C 7F0468EC C7AA069C */ lwc1 $f10, 0x69c($sp) -.Ljp7F0468F0: -/* 07B460 7F0468F0 02202025 */ move $a0, $s1 -/* 07B464 7F0468F4 27A5069C */ addiu $a1, $sp, 0x69c -/* 07B468 7F0468F8 27A60538 */ addiu $a2, $sp, 0x538 -/* 07B46C 7F0468FC 27A70544 */ addiu $a3, $sp, 0x544 -/* 07B470 7F046900 AFA00010 */ sw $zero, 0x10($sp) -/* 07B474 7F046904 0FC10C6D */ jal sub_GAME_7F042EB4 -/* 07B478 7F046908 AFA00014 */ sw $zero, 0x14($sp) -/* 07B47C 7F04690C 240C0001 */ li $t4, 1 -/* 07B480 7F046910 AFAC0698 */ sw $t4, 0x698($sp) -/* 07B484 7F046914 8E660010 */ lw $a2, 0x10($s3) -/* 07B488 7F046918 8E650008 */ lw $a1, 8($s3) -/* 07B48C 7F04691C 0FC2CD48 */ jal sub_GAME_7F0B2970 -/* 07B490 7F046920 8E640014 */ lw $a0, 0x14($s3) -/* 07B494 7F046924 46000506 */ mov.s $f20, $f0 -/* 07B498 7F046928 8FA40554 */ lw $a0, 0x554($sp) -/* 07B49C 7F04692C 0FC0FB2F */ jal sub_GAME_7F03E9BC -/* 07B4A0 7F046930 8FA50074 */ lw $a1, 0x74($sp) -/* 07B4A4 7F046934 3C018005 */ lui $at, %hi(D_80052ABC) # $at, 0x8005 -/* 07B4A8 7F046938 C42E2AEC */ lwc1 $f14, %lo(D_80052ABC)($at) -/* 07B4AC 7F04693C 4600A181 */ sub.s $f6, $f20, $f0 -/* 07B4B0 7F046940 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07B4B4 7F046944 44815000 */ mtc1 $at, $f10 -/* 07B4B8 7F046948 3C018005 */ lui $at, %hi(D_80052AC0) # $at, 0x8005 -/* 07B4BC 7F04694C 460A3300 */ add.s $f12, $f6, $f10 -/* 07B4C0 7F046950 E66C000C */ swc1 $f12, 0xc($s3) -/* 07B4C4 7F046954 E62C005C */ swc1 $f12, 0x5c($s1) -/* 07B4C8 7F046958 C6020004 */ lwc1 $f2, 4($s0) -/* 07B4CC 7F04695C 460E103C */ c.lt.s $f2, $f14 -/* 07B4D0 7F046960 00000000 */ nop -/* 07B4D4 7F046964 45000013 */ bc1f .Ljp7F0469B4 -/* 07B4D8 7F046968 00000000 */ nop -/* 07B4DC 7F04696C C4242AF0 */ lwc1 $f4, %lo(D_80052AC0)($at) -/* 07B4E0 7F046970 4602203C */ c.lt.s $f4, $f2 -/* 07B4E4 7F046974 00000000 */ nop -/* 07B4E8 7F046978 4500000E */ bc1f .Ljp7F0469B4 -/* 07B4EC 7F04697C 00000000 */ nop -/* 07B4F0 7F046980 C600000C */ lwc1 $f0, 0xc($s0) -/* 07B4F4 7F046984 3C018005 */ lui $at, %hi(D_80052AC4) # $at, 0x8005 -/* 07B4F8 7F046988 460E003C */ c.lt.s $f0, $f14 -/* 07B4FC 7F04698C 00000000 */ nop -/* 07B500 7F046990 45000008 */ bc1f .Ljp7F0469B4 -/* 07B504 7F046994 00000000 */ nop -/* 07B508 7F046998 C4282AF4 */ lwc1 $f8, %lo(D_80052AC4)($at) -/* 07B50C 7F04699C 4600403C */ c.lt.s $f8, $f0 -/* 07B510 7F0469A0 00000000 */ nop -/* 07B514 7F0469A4 45000003 */ bc1f .Ljp7F0469B4 -/* 07B518 7F0469A8 00000000 */ nop -/* 07B51C 7F0469AC E616000C */ swc1 $f22, 0xc($s0) -/* 07B520 7F0469B0 E6160004 */ swc1 $f22, 4($s0) -.Ljp7F0469B4: -/* 07B524 7F0469B4 16400005 */ bnez $s2, .Ljp7F0469CC -/* 07B528 7F0469B8 00000000 */ nop -/* 07B52C 7F0469BC 8E0E0000 */ lw $t6, ($s0) -/* 07B530 7F0469C0 31CA0008 */ andi $t2, $t6, 8 -/* 07B534 7F0469C4 51400016 */ beql $t2, $zero, .Ljp7F046A20 -/* 07B538 7F0469C8 8FAB0698 */ lw $t3, 0x698($sp) -.Ljp7F0469CC: -/* 07B53C 7F0469CC 0FC0FF9C */ jal sub_GAME_7F03FB70 -/* 07B540 7F0469D0 02002025 */ move $a0, $s0 -/* 07B544 7F0469D4 8E2D0064 */ lw $t5, 0x64($s1) -/* 07B548 7F0469D8 2401FF7F */ li $at, -129 -/* 07B54C 7F0469DC AE20006C */ sw $zero, 0x6c($s1) -/* 07B550 7F0469E0 01A17824 */ and $t7, $t5, $at -/* 07B554 7F0469E4 AE2F0064 */ sw $t7, 0x64($s1) -/* 07B558 7F0469E8 92620001 */ lbu $v0, 1($s3) -/* 07B55C 7F0469EC 30590008 */ andi $t9, $v0, 8 -/* 07B560 7F0469F0 13200002 */ beqz $t9, .Ljp7F0469FC -/* 07B564 7F0469F4 34580010 */ ori $t8, $v0, 0x10 -/* 07B568 7F0469F8 A2780001 */ sb $t8, 1($s3) -.Ljp7F0469FC: -/* 07B56C 7F0469FC 92280003 */ lbu $t0, 3($s1) -/* 07B570 7F046A00 24010008 */ li $at, 8 -/* 07B574 7F046A04 55010006 */ bnel $t0, $at, .Ljp7F046A20 -/* 07B578 7F046A08 8FAB0698 */ lw $t3, 0x698($sp) -/* 07B57C 7F046A0C 8E690014 */ lw $t1, 0x14($s3) -/* 07B580 7F046A10 82240080 */ lb $a0, 0x80($s1) -/* 07B584 7F046A14 0FC15F41 */ jal sub_GAME_7F0577E8 -/* 07B588 7F046A18 91250003 */ lbu $a1, 3($t1) -.Ljp7F046A1C: -/* 07B58C 7F046A1C 8FAB0698 */ lw $t3, 0x698($sp) -.Ljp7F046A20: -/* 07B590 7F046A20 1160000B */ beqz $t3, .Ljp7F046A50 -/* 07B594 7F046A24 262C0058 */ addiu $t4, $s1, 0x58 -/* 07B598 7F046A28 AFAC0074 */ sw $t4, 0x74($sp) -/* 07B59C 7F046A2C 0FC101E1 */ jal sub_GAME_7F040484 -/* 07B5A0 7F046A30 02202025 */ move $a0, $s1 -/* 07B5A4 7F046A34 0FC15C68 */ jal sub_GAME_7F056CA0 -/* 07B5A8 7F046A38 02202025 */ move $a0, $s1 -/* 07B5AC 7F046A3C 8E240010 */ lw $a0, 0x10($s1) -/* 07B5B0 7F046A40 0FC1016D */ jal sub_GAME_7F0402B4 -/* 07B5B4 7F046A44 2625007C */ addiu $a1, $s1, 0x7c -/* 07B5B8 7F046A48 0FC14832 */ jal detonate_proxmine_In_range -/* 07B5BC 7F046A4C 8FA40074 */ lw $a0, 0x74($sp) -.Ljp7F046A50: -/* 07B5C0 7F046A50 92220003 */ lbu $v0, 3($s1) -/* 07B5C4 7F046A54 24010001 */ li $at, 1 -/* 07B5C8 7F046A58 54410052 */ bnel $v0, $at, .Ljp7F046BA4 -/* 07B5CC 7F046A5C 24010006 */ li $at, 6 -/* 07B5D0 7F046A60 8E700004 */ lw $s0, 4($s3) -/* 07B5D4 7F046A64 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07B5D8 7F046A68 E7A60684 */ swc1 $f6, 0x684($sp) -/* 07B5DC 7F046A6C 8E0200EC */ lw $v0, 0xec($s0) -/* 07B5E0 7F046A70 58400013 */ blezl $v0, .Ljp7F046AC0 -/* 07B5E4 7F046A74 820800BC */ lb $t0, 0xbc($s0) -/* 07B5E8 7F046A78 820E00BC */ lb $t6, 0xbc($s0) -/* 07B5EC 7F046A7C 55C00010 */ bnezl $t6, .Ljp7F046AC0 -/* 07B5F0 7F046A80 820800BC */ lb $t0, 0xbc($s0) -/* 07B5F4 7F046A84 8E0A0008 */ lw $t2, 8($s0) -/* 07B5F8 7F046A88 3C0F8005 */ lui $t7, %hi(global_timer) # $t7, 0x8005 -/* 07B5FC 7F046A8C 000A6800 */ sll $t5, $t2, 0 -/* 07B600 7F046A90 05A2000B */ bltzl $t5, .Ljp7F046AC0 -/* 07B604 7F046A94 820800BC */ lb $t0, 0xbc($s0) -/* 07B608 7F046A98 8DEF83AC */ lw $t7, %lo(global_timer)($t7) -/* 07B60C 7F046A9C 8E1900A0 */ lw $t9, 0xa0($s0) -/* 07B610 7F046AA0 02002025 */ move $a0, $s0 -/* 07B614 7F046AA4 01F9C023 */ subu $t8, $t7, $t9 -/* 07B618 7F046AA8 0058082A */ slt $at, $v0, $t8 -/* 07B61C 7F046AAC 50200004 */ beql $at, $zero, .Ljp7F046AC0 -/* 07B620 7F046AB0 820800BC */ lb $t0, 0xbc($s0) -/* 07B624 7F046AB4 0FC153A1 */ jal set_door_state -/* 07B628 7F046AB8 24050002 */ li $a1, 2 -/* 07B62C 7F046ABC 820800BC */ lb $t0, 0xbc($s0) -.Ljp7F046AC0: -/* 07B630 7F046AC0 24010003 */ li $at, 3 -/* 07B634 7F046AC4 5501001B */ bnel $t0, $at, .Ljp7F046B34 -/* 07B638 7F046AC8 960B009A */ lhu $t3, 0x9a($s0) -/* 07B63C 7F046ACC 8E0200C8 */ lw $v0, 0xc8($s0) -/* 07B640 7F046AD0 24030001 */ li $v1, 1 -/* 07B644 7F046AD4 02002025 */ move $a0, $s0 -/* 07B648 7F046AD8 10400011 */ beqz $v0, .Ljp7F046B20 -/* 07B64C 7F046ADC 00000000 */ nop -/* 07B650 7F046AE0 1050000F */ beq $v0, $s0, .Ljp7F046B20 -/* 07B654 7F046AE4 00000000 */ nop -/* 07B658 7F046AE8 804900BC */ lb $t1, 0xbc($v0) -.Ljp7F046AEC: -/* 07B65C 7F046AEC 55200007 */ bnezl $t1, .Ljp7F046B0C -/* 07B660 7F046AF0 00001825 */ move $v1, $zero -/* 07B664 7F046AF4 C44A00B4 */ lwc1 $f10, 0xb4($v0) -/* 07B668 7F046AF8 460AB03C */ c.lt.s $f22, $f10 -/* 07B66C 7F046AFC 00000000 */ nop -/* 07B670 7F046B00 45020003 */ bc1fl .Ljp7F046B10 -/* 07B674 7F046B04 8C4200C8 */ lw $v0, 0xc8($v0) -/* 07B678 7F046B08 00001825 */ move $v1, $zero -.Ljp7F046B0C: -/* 07B67C 7F046B0C 8C4200C8 */ lw $v0, 0xc8($v0) -.Ljp7F046B10: -/* 07B680 7F046B10 10400003 */ beqz $v0, .Ljp7F046B20 -/* 07B684 7F046B14 00000000 */ nop -/* 07B688 7F046B18 5450FFF4 */ bnel $v0, $s0, .Ljp7F046AEC -/* 07B68C 7F046B1C 804900BC */ lb $t1, 0xbc($v0) -.Ljp7F046B20: -/* 07B690 7F046B20 50600004 */ beql $v1, $zero, .Ljp7F046B34 -/* 07B694 7F046B24 960B009A */ lhu $t3, 0x9a($s0) -/* 07B698 7F046B28 0FC15368 */ jal sub_GAME_7F0548A4 -/* 07B69C 7F046B2C 24050001 */ li $a1, 1 -/* 07B6A0 7F046B30 960B009A */ lhu $t3, 0x9a($s0) -.Ljp7F046B34: -/* 07B6A4 7F046B34 24010008 */ li $at, 8 -/* 07B6A8 7F046B38 1561000B */ bne $t3, $at, .Ljp7F046B68 -/* 07B6AC 7F046B3C 00000000 */ nop -/* 07B6B0 7F046B40 0FC153C7 */ jal sub_GAME_7F054A20 -/* 07B6B4 7F046B44 02002025 */ move $a0, $s0 -/* 07B6B8 7F046B48 10400007 */ beqz $v0, .Ljp7F046B68 -/* 07B6BC 7F046B4C 00000000 */ nop -/* 07B6C0 7F046B50 0FC0FA86 */ jal sub_GAME_7F03E718 -/* 07B6C4 7F046B54 02002025 */ move $a0, $s0 -/* 07B6C8 7F046B58 10400003 */ beqz $v0, .Ljp7F046B68 -/* 07B6CC 7F046B5C 00000000 */ nop -/* 07B6D0 7F046B60 0FC157A6 */ jal sub_GAME_7F05599C -/* 07B6D4 7F046B64 02602025 */ move $a0, $s3 -.Ljp7F046B68: -/* 07B6D8 7F046B68 3C0E8005 */ lui $t6, %hi(global_timer) # $t6, 0x8005 -/* 07B6DC 7F046B6C 8DCE83AC */ lw $t6, %lo(global_timer)($t6) -/* 07B6E0 7F046B70 8E0C00FC */ lw $t4, 0xfc($s0) -/* 07B6E4 7F046B74 3C0A8005 */ lui $t2, %hi(clock_timer) # $t2, 0x8005 -/* 07B6E8 7F046B78 018E082A */ slt $at, $t4, $t6 -/* 07B6EC 7F046B7C 14200004 */ bnez $at, .Ljp7F046B90 -/* 07B6F0 7F046B80 00000000 */ nop -/* 07B6F4 7F046B84 8D4A83A4 */ lw $t2, %lo(clock_timer)($t2) -/* 07B6F8 7F046B88 554006AA */ bnezl $t2, .Ljp7F048634 -/* 07B6FC 7F046B8C 92220003 */ lbu $v0, 3($s1) -.Ljp7F046B90: -/* 07B700 7F046B90 0FC1552C */ jal sub_GAME_7F054FB4 -/* 07B704 7F046B94 02002025 */ move $a0, $s0 -/* 07B708 7F046B98 100006A6 */ b .Ljp7F048634 -/* 07B70C 7F046B9C 92220003 */ lbu $v0, 3($s1) -/* 07B710 7F046BA0 24010006 */ li $at, 6 -.Ljp7F046BA4: -/* 07B714 7F046BA4 54410130 */ bnel $v0, $at, .Ljp7F047068 -/* 07B718 7F046BA8 2401000D */ li $at, 13 -/* 07B71C 7F046BAC 8E2D0008 */ lw $t5, 8($s1) -/* 07B720 7F046BB0 000D78C0 */ sll $t7, $t5, 3 -/* 07B724 7F046BB4 05E2012C */ bltzl $t7, .Ljp7F047068 -/* 07B728 7F046BB8 2401000D */ li $at, 13 -/* 07B72C 7F046BBC 8E700004 */ lw $s0, 4($s3) -/* 07B730 7F046BC0 8E1900D4 */ lw $t9, 0xd4($s0) -/* 07B734 7F046BC4 53200004 */ beql $t9, $zero, .Ljp7F046BD8 -/* 07B738 7F046BC8 C61200D0 */ lwc1 $f18, 0xd0($s0) -/* 07B73C 7F046BCC 10000002 */ b .Ljp7F046BD8 -/* 07B740 7F046BD0 C61200CC */ lwc1 $f18, 0xcc($s0) -/* 07B744 7F046BD4 C61200D0 */ lwc1 $f18, 0xd0($s0) -.Ljp7F046BD8: -/* 07B748 7F046BD8 0FC2279B */ jal get_curplayer_positiondata -/* 07B74C 7F046BDC E7B2051C */ swc1 $f18, 0x51c($sp) -/* 07B750 7F046BE0 AFA20518 */ sw $v0, 0x518($sp) -/* 07B754 7F046BE4 C6280058 */ lwc1 $f8, 0x58($s1) -/* 07B758 7F046BE8 C4440008 */ lwc1 $f4, 8($v0) -/* 07B75C 7F046BEC C60000E8 */ lwc1 $f0, 0xe8($s0) -/* 07B760 7F046BF0 C62A005C */ lwc1 $f10, 0x5c($s1) -/* 07B764 7F046BF4 46082301 */ sub.s $f12, $f4, $f8 -/* 07B768 7F046BF8 C446000C */ lwc1 $f6, 0xc($v0) -/* 07B76C 7F046BFC C6280060 */ lwc1 $f8, 0x60($s1) -/* 07B770 7F046C00 4600B03C */ c.lt.s $f22, $f0 -/* 07B774 7F046C04 C4440010 */ lwc1 $f4, 0x10($v0) -/* 07B778 7F046C08 C7B2051C */ lwc1 $f18, 0x51c($sp) -/* 07B77C 7F046C0C 24120001 */ li $s2, 1 -/* 07B780 7F046C10 460A3081 */ sub.s $f2, $f6, $f10 -/* 07B784 7F046C14 4500000E */ bc1f .Ljp7F046C50 -/* 07B788 7F046C18 46082381 */ sub.s $f14, $f4, $f8 -/* 07B78C 7F046C1C 46000182 */ mul.s $f6, $f0, $f0 -/* 07B790 7F046C20 00000000 */ nop -/* 07B794 7F046C24 460C6282 */ mul.s $f10, $f12, $f12 -/* 07B798 7F046C28 00000000 */ nop -/* 07B79C 7F046C2C 46021102 */ mul.s $f4, $f2, $f2 -/* 07B7A0 7F046C30 46045200 */ add.s $f8, $f10, $f4 -/* 07B7A4 7F046C34 460E7282 */ mul.s $f10, $f14, $f14 -/* 07B7A8 7F046C38 460A4100 */ add.s $f4, $f8, $f10 -/* 07B7AC 7F046C3C 4604303C */ c.lt.s $f6, $f4 -/* 07B7B0 7F046C40 00000000 */ nop -/* 07B7B4 7F046C44 45000002 */ bc1f .Ljp7F046C50 -/* 07B7B8 7F046C48 00000000 */ nop -/* 07B7BC 7F046C4C 00009025 */ move $s2, $zero -.Ljp7F046C50: -/* 07B7C0 7F046C50 8E380008 */ lw $t8, 8($s1) -/* 07B7C4 7F046C54 00184080 */ sll $t0, $t8, 2 -/* 07B7C8 7F046C58 05010002 */ bgez $t0, .Ljp7F046C64 -/* 07B7CC 7F046C5C 00000000 */ nop -/* 07B7D0 7F046C60 00009025 */ move $s2, $zero -.Ljp7F046C64: -/* 07B7D4 7F046C64 1240003A */ beqz $s2, .Ljp7F046D50 -/* 07B7D8 7F046C68 00000000 */ nop -/* 07B7DC 7F046C6C 0FC16BD4 */ jal convert_angle_using_inverse -/* 07B7E0 7F046C70 E7B2051C */ swc1 $f18, 0x51c($sp) -/* 07B7E4 7F046C74 C60200C8 */ lwc1 $f2, 0xc8($s0) -/* 07B7E8 7F046C78 C7B2051C */ lwc1 $f18, 0x51c($sp) -/* 07B7EC 7F046C7C 3C018005 */ lui $at, %hi(D_80052ACC) -/* 07B7F0 7F046C80 4616103C */ c.lt.s $f2, $f22 -/* 07B7F4 7F046C84 00000000 */ nop -/* 07B7F8 7F046C88 45000005 */ bc1f .Ljp7F046CA0 -/* 07B7FC 7F046C8C 00000000 */ nop -/* 07B800 7F046C90 3C018005 */ lui $at, %hi(D_80052AC8) # $at, 0x8005 -/* 07B804 7F046C94 C4342AF8 */ lwc1 $f20, %lo(D_80052AC8)($at) -/* 07B808 7F046C98 10000007 */ b .Ljp7F046CB8 -/* 07B80C 7F046C9C 46141080 */ add.s $f2, $f2, $f20 -.Ljp7F046CA0: -/* 07B810 7F046CA0 C4342AFC */ lwc1 $f20, %lo(D_80052ACC)($at) -/* 07B814 7F046CA4 4602A03E */ c.le.s $f20, $f2 -/* 07B818 7F046CA8 00000000 */ nop -/* 07B81C 7F046CAC 45020003 */ bc1fl .Ljp7F046CBC -/* 07B820 7F046CB0 C60800C4 */ lwc1 $f8, 0xc4($s0) -/* 07B824 7F046CB4 46141081 */ sub.s $f2, $f2, $f20 -.Ljp7F046CB8: -/* 07B828 7F046CB8 C60800C4 */ lwc1 $f8, 0xc4($s0) -.Ljp7F046CBC: -/* 07B82C 7F046CBC 3C018005 */ lui $at, %hi(D_80052AD0) # $at, 0x8005 -/* 07B830 7F046CC0 46081080 */ add.s $f2, $f2, $f8 -/* 07B834 7F046CC4 4602A03E */ c.le.s $f20, $f2 -/* 07B838 7F046CC8 00000000 */ nop -/* 07B83C 7F046CCC 45020003 */ bc1fl .Ljp7F046CDC -/* 07B840 7F046CD0 4602003C */ c.lt.s $f0, $f2 -/* 07B844 7F046CD4 46141081 */ sub.s $f2, $f2, $f20 -/* 07B848 7F046CD8 4602003C */ c.lt.s $f0, $f2 -.Ljp7F046CDC: -/* 07B84C 7F046CDC 46020381 */ sub.s $f14, $f0, $f2 -/* 07B850 7F046CE0 45000002 */ bc1f .Ljp7F046CEC -/* 07B854 7F046CE4 46007306 */ mov.s $f12, $f14 -/* 07B858 7F046CE8 46147300 */ add.s $f12, $f14, $f20 -.Ljp7F046CEC: -/* 07B85C 7F046CEC C4202B00 */ lwc1 $f0, %lo(D_80052AD0)($at) -/* 07B860 7F046CF0 3C018005 */ lui $at, %hi(D_80052AD4) # $at, 0x8005 -/* 07B864 7F046CF4 46006301 */ sub.s $f12, $f12, $f0 -/* 07B868 7F046CF8 4616603C */ c.lt.s $f12, $f22 -/* 07B86C 7F046CFC 00000000 */ nop -/* 07B870 7F046D00 45020003 */ bc1fl .Ljp7F046D10 -/* 07B874 7F046D04 460C003C */ c.lt.s $f0, $f12 -/* 07B878 7F046D08 46146300 */ add.s $f12, $f12, $f20 -/* 07B87C 7F046D0C 460C003C */ c.lt.s $f0, $f12 -.Ljp7F046D10: -/* 07B880 7F046D10 00000000 */ nop -/* 07B884 7F046D14 45000002 */ bc1f .Ljp7F046D20 -/* 07B888 7F046D18 00000000 */ nop -/* 07B88C 7F046D1C 46146301 */ sub.s $f12, $f12, $f20 -.Ljp7F046D20: -/* 07B890 7F046D20 C42A2B04 */ lwc1 $f10, %lo(D_80052AD4)($at) -/* 07B894 7F046D24 3C018005 */ lui $at, %hi(D_80052AD8) -/* 07B898 7F046D28 460C503C */ c.lt.s $f10, $f12 -/* 07B89C 7F046D2C 00000000 */ nop -/* 07B8A0 7F046D30 45030007 */ bc1tl .Ljp7F046D50 -/* 07B8A4 7F046D34 00009025 */ move $s2, $zero -/* 07B8A8 7F046D38 C4262B08 */ lwc1 $f6, %lo(D_80052AD8)($at) -/* 07B8AC 7F046D3C 4606603C */ c.lt.s $f12, $f6 -/* 07B8B0 7F046D40 00000000 */ nop -/* 07B8B4 7F046D44 45000002 */ bc1f .Ljp7F046D50 -/* 07B8B8 7F046D48 00000000 */ nop -/* 07B8BC 7F046D4C 00009025 */ move $s2, $zero -.Ljp7F046D50: -/* 07B8C0 7F046D50 12400034 */ beqz $s2, .Ljp7F046E24 -/* 07B8C4 7F046D54 00002825 */ move $a1, $zero -/* 07B8C8 7F046D58 8E690014 */ lw $t1, 0x14($s3) -/* 07B8CC 7F046D5C E7B2051C */ swc1 $f18, 0x51c($sp) -/* 07B8D0 7F046D60 8FA40518 */ lw $a0, 0x518($sp) -/* 07B8D4 7F046D64 0FC229DD */ jal sub_GAME_7F08A03C -/* 07B8D8 7F046D68 AFA904F4 */ sw $t1, 0x4f4($sp) -/* 07B8DC 7F046D6C 8FA20518 */ lw $v0, 0x518($sp) -/* 07B8E0 7F046D70 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 07B8E4 7F046D74 8E650008 */ lw $a1, 8($s3) -/* 07B8E8 7F046D78 C4440010 */ lwc1 $f4, 0x10($v0) -/* 07B8EC 7F046D7C 8E660010 */ lw $a2, 0x10($s3) -/* 07B8F0 7F046D80 8C470008 */ lw $a3, 8($v0) -/* 07B8F4 7F046D84 44814000 */ mtc1 $at, $f8 -/* 07B8F8 7F046D88 44815000 */ mtc1 $at, $f10 -/* 07B8FC 7F046D8C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07B900 7F046D90 44813000 */ mtc1 $at, $f6 -/* 07B904 7F046D94 240B001B */ li $t3, 27 -/* 07B908 7F046D98 AFAB0014 */ sw $t3, 0x14($sp) -/* 07B90C 7F046D9C E7B60020 */ swc1 $f22, 0x20($sp) -/* 07B910 7F046DA0 27A404F4 */ addiu $a0, $sp, 0x4f4 -/* 07B914 7F046DA4 E7A40010 */ swc1 $f4, 0x10($sp) -/* 07B918 7F046DA8 E7A80018 */ swc1 $f8, 0x18($sp) -/* 07B91C 7F046DAC E7AA001C */ swc1 $f10, 0x1c($sp) -/* 07B920 7F046DB0 0FC2C675 */ jal sub_GAME_7F0B0E24 -/* 07B924 7F046DB4 E7A60024 */ swc1 $f6, 0x24($sp) -/* 07B928 7F046DB8 10400015 */ beqz $v0, .Ljp7F046E10 -/* 07B92C 7F046DBC C7B2051C */ lwc1 $f18, 0x51c($sp) -/* 07B930 7F046DC0 3C0E8005 */ lui $t6, %hi(clock_timer) # $t6, 0x8005 -/* 07B934 7F046DC4 8DCE83A4 */ lw $t6, %lo(clock_timer)($t6) -/* 07B938 7F046DC8 8E0C00E0 */ lw $t4, 0xe0($s0) -/* 07B93C 7F046DCC 3C014396 */ li $at, 0x43960000 # 300.000000 -/* 07B940 7F046DD0 44812000 */ mtc1 $at, $f4 -/* 07B944 7F046DD4 018E5021 */ addu $t2, $t4, $t6 -/* 07B948 7F046DD8 AE0A00E0 */ sw $t2, 0xe0($s0) -/* 07B94C 7F046DDC 3C018003 */ lui $at, %hi(D_80030B14) # $at, 0x8003 -/* 07B950 7F046DE0 C4280B54 */ lwc1 $f8, %lo(D_80030B14)($at) -/* 07B954 7F046DE4 46082282 */ mul.s $f10, $f4, $f8 -/* 07B958 7F046DE8 4600518D */ trunc.w.s $f6, $f10 -/* 07B95C 7F046DEC 44193000 */ mfc1 $t9, $f6 -/* 07B960 7F046DF0 00000000 */ nop -/* 07B964 7F046DF4 0159082A */ slt $at, $t2, $t9 -/* 07B968 7F046DF8 54200006 */ bnezl $at, .Ljp7F046E14 -/* 07B96C 7F046DFC 8FA40518 */ lw $a0, 0x518($sp) -/* 07B970 7F046E00 0FC158B1 */ jal start_alarm -/* 07B974 7F046E04 E7B2051C */ swc1 $f18, 0x51c($sp) -/* 07B978 7F046E08 C7B2051C */ lwc1 $f18, 0x51c($sp) -/* 07B97C 7F046E0C AE0000E0 */ sw $zero, 0xe0($s0) -.Ljp7F046E10: -/* 07B980 7F046E10 8FA40518 */ lw $a0, 0x518($sp) -.Ljp7F046E14: -/* 07B984 7F046E14 24050001 */ li $a1, 1 -/* 07B988 7F046E18 0FC229DD */ jal sub_GAME_7F08A03C -/* 07B98C 7F046E1C E7B2051C */ swc1 $f18, 0x51c($sp) -/* 07B990 7F046E20 C7B2051C */ lwc1 $f18, 0x51c($sp) -.Ljp7F046E24: -/* 07B994 7F046E24 C60E00C8 */ lwc1 $f14, 0xc8($s0) -/* 07B998 7F046E28 4612703C */ c.lt.s $f14, $f18 -/* 07B99C 7F046E2C 00000000 */ nop -/* 07B9A0 7F046E30 45020047 */ bc1fl .Ljp7F046F50 -/* 07B9A4 7F046E34 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B9A8 7F046E38 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B9AC 7F046E3C 3C018005 */ lui $at, %hi(D_80052AE0) # $at, 0x8005 -/* 07B9B0 7F046E40 C4302B10 */ lwc1 $f16, %lo(D_80052AE0)($at) -/* 07B9B4 7F046E44 46000102 */ mul.s $f4, $f0, $f0 -/* 07B9B8 7F046E48 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07B9BC 7F046E4C 44814000 */ mtc1 $at, $f8 -/* 07B9C0 7F046E50 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07B9C4 7F046E54 46082282 */ mul.s $f10, $f4, $f8 -/* 07B9C8 7F046E58 46105083 */ div.s $f2, $f10, $f16 -/* 07B9CC 7F046E5C 46029181 */ sub.s $f6, $f18, $f2 -/* 07B9D0 7F046E60 460E303E */ c.le.s $f6, $f14 -/* 07B9D4 7F046E64 00000000 */ nop -/* 07B9D8 7F046E68 4502000F */ bc1fl .Ljp7F046EA8 -/* 07B9DC 7F046E6C C60C00DC */ lwc1 $f12, 0xdc($s0) -/* 07B9E0 7F046E70 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07B9E4 7F046E74 46048202 */ mul.s $f8, $f16, $f4 -/* 07B9E8 7F046E78 46080281 */ sub.s $f10, $f0, $f8 -/* 07B9EC 7F046E7C E60A00D8 */ swc1 $f10, 0xd8($s0) -/* 07B9F0 7F046E80 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07B9F4 7F046E84 4610003C */ c.lt.s $f0, $f16 -/* 07B9F8 7F046E88 00000000 */ nop -/* 07B9FC 7F046E8C 45000003 */ bc1f .Ljp7F046E9C -/* 07BA00 7F046E90 00000000 */ nop -/* 07BA04 7F046E94 E61000D8 */ swc1 $f16, 0xd8($s0) -/* 07BA08 7F046E98 C60000D8 */ lwc1 $f0, 0xd8($s0) -.Ljp7F046E9C: -/* 07BA0C 7F046E9C 1000001D */ b .Ljp7F046F14 -/* 07BA10 7F046EA0 C60E00C8 */ lwc1 $f14, 0xc8($s0) -/* 07BA14 7F046EA4 C60C00DC */ lwc1 $f12, 0xdc($s0) -.Ljp7F046EA8: -/* 07BA18 7F046EA8 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07BA1C 7F046EAC 460C003C */ c.lt.s $f0, $f12 -/* 07BA20 7F046EB0 00000000 */ nop -/* 07BA24 7F046EB4 45000017 */ bc1f .Ljp7F046F14 -/* 07BA28 7F046EB8 00000000 */ nop -/* 07BA2C 7F046EBC C42683B4 */ lwc1 $f6, %lo(global_timer_delta)($at) -/* 07BA30 7F046EC0 46068102 */ mul.s $f4, $f16, $f6 -/* 07BA34 7F046EC4 46040080 */ add.s $f2, $f0, $f4 -/* 07BA38 7F046EC8 4602603C */ c.lt.s $f12, $f2 -/* 07BA3C 7F046ECC 00000000 */ nop -/* 07BA40 7F046ED0 45000002 */ bc1f .Ljp7F046EDC -/* 07BA44 7F046ED4 00000000 */ nop -/* 07BA48 7F046ED8 46006086 */ mov.s $f2, $f12 -.Ljp7F046EDC: -/* 07BA4C 7F046EDC 46021202 */ mul.s $f8, $f2, $f2 -/* 07BA50 7F046EE0 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07BA54 7F046EE4 44815000 */ mtc1 $at, $f10 -/* 07BA58 7F046EE8 00000000 */ nop -/* 07BA5C 7F046EEC 460A4182 */ mul.s $f6, $f8, $f10 -/* 07BA60 7F046EF0 46103103 */ div.s $f4, $f6, $f16 -/* 07BA64 7F046EF4 46049201 */ sub.s $f8, $f18, $f4 -/* 07BA68 7F046EF8 4608703C */ c.lt.s $f14, $f8 -/* 07BA6C 7F046EFC 00000000 */ nop -/* 07BA70 7F046F00 45000004 */ bc1f .Ljp7F046F14 -/* 07BA74 7F046F04 00000000 */ nop -/* 07BA78 7F046F08 E60200D8 */ swc1 $f2, 0xd8($s0) -/* 07BA7C 7F046F0C C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07BA80 7F046F10 C60E00C8 */ lwc1 $f14, 0xc8($s0) -.Ljp7F046F14: -/* 07BA84 7F046F14 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07BA88 7F046F18 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07BA8C 7F046F1C 460A0182 */ mul.s $f6, $f0, $f10 -/* 07BA90 7F046F20 46067100 */ add.s $f4, $f14, $f6 -/* 07BA94 7F046F24 E60400C8 */ swc1 $f4, 0xc8($s0) -/* 07BA98 7F046F28 C60800C8 */ lwc1 $f8, 0xc8($s0) -/* 07BA9C 7F046F2C 4608903E */ c.le.s $f18, $f8 -/* 07BAA0 7F046F30 00000000 */ nop -/* 07BAA4 7F046F34 450205BF */ bc1fl .Ljp7F048634 -/* 07BAA8 7F046F38 92220003 */ lbu $v0, 3($s1) -/* 07BAAC 7F046F3C E61200C8 */ swc1 $f18, 0xc8($s0) -/* 07BAB0 7F046F40 E61600D8 */ swc1 $f22, 0xd8($s0) -/* 07BAB4 7F046F44 100005BA */ b .Ljp7F048630 -/* 07BAB8 7F046F48 AE0000D4 */ sw $zero, 0xd4($s0) -/* 07BABC 7F046F4C C60000D8 */ lwc1 $f0, 0xd8($s0) -.Ljp7F046F50: -/* 07BAC0 7F046F50 3C018005 */ lui $at, %hi(D_80052AE4) # $at, 0x8005 -/* 07BAC4 7F046F54 C4302B14 */ lwc1 $f16, %lo(D_80052AE4)($at) -/* 07BAC8 7F046F58 46000282 */ mul.s $f10, $f0, $f0 -/* 07BACC 7F046F5C 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07BAD0 7F046F60 44813000 */ mtc1 $at, $f6 -/* 07BAD4 7F046F64 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07BAD8 7F046F68 24180001 */ li $t8, 1 -/* 07BADC 7F046F6C 46065102 */ mul.s $f4, $f10, $f6 -/* 07BAE0 7F046F70 46102083 */ div.s $f2, $f4, $f16 -/* 07BAE4 7F046F74 46029200 */ add.s $f8, $f18, $f2 -/* 07BAE8 7F046F78 4608703E */ c.le.s $f14, $f8 -/* 07BAEC 7F046F7C 00000000 */ nop -/* 07BAF0 7F046F80 4502000F */ bc1fl .Ljp7F046FC0 -/* 07BAF4 7F046F84 C60C00DC */ lwc1 $f12, 0xdc($s0) -/* 07BAF8 7F046F88 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07BAFC 7F046F8C 460A8182 */ mul.s $f6, $f16, $f10 -/* 07BB00 7F046F90 46060101 */ sub.s $f4, $f0, $f6 -/* 07BB04 7F046F94 E60400D8 */ swc1 $f4, 0xd8($s0) -/* 07BB08 7F046F98 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07BB0C 7F046F9C 4610003C */ c.lt.s $f0, $f16 -/* 07BB10 7F046FA0 00000000 */ nop -/* 07BB14 7F046FA4 45000003 */ bc1f .Ljp7F046FB4 -/* 07BB18 7F046FA8 00000000 */ nop -/* 07BB1C 7F046FAC E61000D8 */ swc1 $f16, 0xd8($s0) -/* 07BB20 7F046FB0 C60000D8 */ lwc1 $f0, 0xd8($s0) -.Ljp7F046FB4: -/* 07BB24 7F046FB4 1000001D */ b .Ljp7F04702C -/* 07BB28 7F046FB8 C60E00C8 */ lwc1 $f14, 0xc8($s0) -/* 07BB2C 7F046FBC C60C00DC */ lwc1 $f12, 0xdc($s0) -.Ljp7F046FC0: -/* 07BB30 7F046FC0 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07BB34 7F046FC4 460C003C */ c.lt.s $f0, $f12 -/* 07BB38 7F046FC8 00000000 */ nop -/* 07BB3C 7F046FCC 45000017 */ bc1f .Ljp7F04702C -/* 07BB40 7F046FD0 00000000 */ nop -/* 07BB44 7F046FD4 C42883B4 */ lwc1 $f8, %lo(global_timer_delta)($at) -/* 07BB48 7F046FD8 46088282 */ mul.s $f10, $f16, $f8 -/* 07BB4C 7F046FDC 460A0080 */ add.s $f2, $f0, $f10 -/* 07BB50 7F046FE0 4602603C */ c.lt.s $f12, $f2 -/* 07BB54 7F046FE4 00000000 */ nop -/* 07BB58 7F046FE8 45000002 */ bc1f .Ljp7F046FF4 -/* 07BB5C 7F046FEC 00000000 */ nop -/* 07BB60 7F046FF0 46006086 */ mov.s $f2, $f12 -.Ljp7F046FF4: -/* 07BB64 7F046FF4 46021182 */ mul.s $f6, $f2, $f2 -/* 07BB68 7F046FF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07BB6C 7F046FFC 44812000 */ mtc1 $at, $f4 -/* 07BB70 7F047000 00000000 */ nop -/* 07BB74 7F047004 46043202 */ mul.s $f8, $f6, $f4 -/* 07BB78 7F047008 46104283 */ div.s $f10, $f8, $f16 -/* 07BB7C 7F04700C 460A9180 */ add.s $f6, $f18, $f10 -/* 07BB80 7F047010 460E303C */ c.lt.s $f6, $f14 -/* 07BB84 7F047014 00000000 */ nop -/* 07BB88 7F047018 45000004 */ bc1f .Ljp7F04702C -/* 07BB8C 7F04701C 00000000 */ nop -/* 07BB90 7F047020 E60200D8 */ swc1 $f2, 0xd8($s0) -/* 07BB94 7F047024 C60000D8 */ lwc1 $f0, 0xd8($s0) -/* 07BB98 7F047028 C60E00C8 */ lwc1 $f14, 0xc8($s0) -.Ljp7F04702C: -/* 07BB9C 7F04702C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07BBA0 7F047030 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07BBA4 7F047034 46040202 */ mul.s $f8, $f0, $f4 -/* 07BBA8 7F047038 46087281 */ sub.s $f10, $f14, $f8 -/* 07BBAC 7F04703C E60A00C8 */ swc1 $f10, 0xc8($s0) -/* 07BBB0 7F047040 C60600C8 */ lwc1 $f6, 0xc8($s0) -/* 07BBB4 7F047044 4612303E */ c.le.s $f6, $f18 -/* 07BBB8 7F047048 00000000 */ nop -/* 07BBBC 7F04704C 45020579 */ bc1fl .Ljp7F048634 -/* 07BBC0 7F047050 92220003 */ lbu $v0, 3($s1) -/* 07BBC4 7F047054 E61200C8 */ swc1 $f18, 0xc8($s0) -/* 07BBC8 7F047058 E61600D8 */ swc1 $f22, 0xd8($s0) -/* 07BBCC 7F04705C 10000574 */ b .Ljp7F048630 -/* 07BBD0 7F047060 AE1800D4 */ sw $t8, 0xd4($s0) -/* 07BBD4 7F047064 2401000D */ li $at, 13 -.Ljp7F047068: -/* 07BBD8 7F047068 5441023F */ bnel $v0, $at, .Ljp7F047968 -/* 07BBDC 7F04706C 24010027 */ li $at, 39 -/* 07BBE0 7F047070 8E280008 */ lw $t0, 8($s1) -/* 07BBE4 7F047074 000848C0 */ sll $t1, $t0, 3 -/* 07BBE8 7F047078 0522023B */ bltzl $t1, .Ljp7F047968 -/* 07BBEC 7F04707C 24010027 */ li $at, 39 -/* 07BBF0 7F047080 0FC2279B */ jal get_curplayer_positiondata -/* 07BBF4 7F047084 8E700004 */ lw $s0, 4($s3) -/* 07BBF8 7F047088 AFA004B0 */ sw $zero, 0x4b0($sp) -/* 07BBFC 7F04708C AFA004AC */ sw $zero, 0x4ac($sp) -/* 07BC00 7F047090 AFA004A8 */ sw $zero, 0x4a8($sp) -/* 07BC04 7F047094 8E23000C */ lw $v1, 0xc($s1) -/* 07BC08 7F047098 00409025 */ move $s2, $v0 -/* 07BC0C 7F04709C 00035800 */ sll $t3, $v1, 0 -/* 07BC10 7F0470A0 05610056 */ bgez $t3, .Ljp7F0471FC -/* 07BC14 7F0470A4 00036040 */ sll $t4, $v1, 1 -/* 07BC18 7F0470A8 05830008 */ bgezl $t4, .Ljp7F0470CC -/* 07BC1C 7F0470AC C6020084 */ lwc1 $f2, 0x84($s0) -/* 07BC20 7F0470B0 C6080090 */ lwc1 $f8, 0x90($s0) -/* 07BC24 7F0470B4 C604009C */ lwc1 $f4, 0x9c($s0) -/* 07BC28 7F0470B8 E6080084 */ swc1 $f8, 0x84($s0) -/* 07BC2C 7F0470BC C6020084 */ lwc1 $f2, 0x84($s0) -/* 07BC30 7F0470C0 10000036 */ b .Ljp7F04719C -/* 07BC34 7F0470C4 E6040098 */ swc1 $f4, 0x98($s0) -/* 07BC38 7F0470C8 C6020084 */ lwc1 $f2, 0x84($s0) -.Ljp7F0470CC: -/* 07BC3C 7F0470CC C60A0090 */ lwc1 $f10, 0x90($s0) -/* 07BC40 7F0470D0 460A1032 */ c.eq.s $f2, $f10 -/* 07BC44 7F0470D4 00000000 */ nop -/* 07BC48 7F0470D8 45000030 */ bc1f .Ljp7F04719C -/* 07BC4C 7F0470DC 00000000 */ nop -/* 07BC50 7F0470E0 C6060098 */ lwc1 $f6, 0x98($s0) -/* 07BC54 7F0470E4 C604009C */ lwc1 $f4, 0x9c($s0) -/* 07BC58 7F0470E8 46043032 */ c.eq.s $f6, $f4 -/* 07BC5C 7F0470EC 00000000 */ nop -/* 07BC60 7F0470F0 4500002A */ bc1f .Ljp7F04719C -/* 07BC64 7F0470F4 00000000 */ nop -/* 07BC68 7F0470F8 0C002918 */ jal get_random_value -/* 07BC6C 7F0470FC 00000000 */ nop -/* 07BC70 7F047100 44824000 */ mtc1 $v0, $f8 -/* 07BC74 7F047104 3C018005 */ lui $at, %hi(D_80052AE8) # $at, 0x8005 -/* 07BC78 7F047108 C4342B18 */ lwc1 $f20, %lo(D_80052AE8)($at) -/* 07BC7C 7F04710C 04410005 */ bgez $v0, .Ljp7F047124 -/* 07BC80 7F047110 468042A0 */ cvt.s.w $f10, $f8 -/* 07BC84 7F047114 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07BC88 7F047118 44813000 */ mtc1 $at, $f6 -/* 07BC8C 7F04711C 00000000 */ nop -/* 07BC90 7F047120 46065280 */ add.s $f10, $f10, $f6 -.Ljp7F047124: -/* 07BC94 7F047124 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07BC98 7F047128 44812000 */ mtc1 $at, $f4 -/* 07BC9C 7F04712C 3C01421C */ li $at, 0x421C0000 # 39.000000 -/* 07BCA0 7F047130 44813000 */ mtc1 $at, $f6 -/* 07BCA4 7F047134 46045202 */ mul.s $f8, $f10, $f4 -/* 07BCA8 7F047138 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07BCAC 7F04713C 44812000 */ mtc1 $at, $f4 -/* 07BCB0 7F047140 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07BCB4 7F047144 46064282 */ mul.s $f10, $f8, $f6 -/* 07BCB8 7F047148 46045200 */ add.s $f8, $f10, $f4 -/* 07BCBC 7F04714C 44815000 */ mtc1 $at, $f10 -/* 07BCC0 7F047150 46144182 */ mul.s $f6, $f8, $f20 -/* 07BCC4 7F047154 460A3103 */ div.s $f4, $f6, $f10 -/* 07BCC8 7F047158 0C002918 */ jal get_random_value -/* 07BCCC 7F04715C E6040098 */ swc1 $f4, 0x98($s0) -/* 07BCD0 7F047160 44824000 */ mtc1 $v0, $f8 -/* 07BCD4 7F047164 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07BCD8 7F047168 04410004 */ bgez $v0, .Ljp7F04717C -/* 07BCDC 7F04716C 468041A0 */ cvt.s.w $f6, $f8 -/* 07BCE0 7F047170 44815000 */ mtc1 $at, $f10 -/* 07BCE4 7F047174 00000000 */ nop -/* 07BCE8 7F047178 460A3180 */ add.s $f6, $f6, $f10 -.Ljp7F04717C: -/* 07BCEC 7F04717C 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07BCF0 7F047180 44812000 */ mtc1 $at, $f4 -/* 07BCF4 7F047184 00000000 */ nop -/* 07BCF8 7F047188 46043202 */ mul.s $f8, $f6, $f4 -/* 07BCFC 7F04718C 00000000 */ nop -/* 07BD00 7F047190 46144282 */ mul.s $f10, $f8, $f20 -/* 07BD04 7F047194 E60A0084 */ swc1 $f10, 0x84($s0) -/* 07BD08 7F047198 C6020084 */ lwc1 $f2, 0x84($s0) -.Ljp7F04719C: -/* 07BD0C 7F04719C 3C018005 */ lui $at, %hi(D_80052AEC) # $at, 0x8005 -/* 07BD10 7F0471A0 C4202B1C */ lwc1 $f0, %lo(D_80052AEC)($at) -/* 07BD14 7F0471A4 3C018005 */ lui $at, %hi(D_80052AF4) # $at, 0x8005 -/* 07BD18 7F0471A8 C4262B24 */ lwc1 $f6, %lo(D_80052AF4)($at) -/* 07BD1C 7F0471AC 44051000 */ mfc1 $a1, $f2 -/* 07BD20 7F0471B0 44070000 */ mfc1 $a3, $f0 -/* 07BD24 7F0471B4 26040090 */ addiu $a0, $s0, 0x90 -/* 07BD28 7F0471B8 26060094 */ addiu $a2, $s0, 0x94 -/* 07BD2C 7F0471BC E7A00010 */ swc1 $f0, 0x10($sp) -/* 07BD30 7F0471C0 0FC10D03 */ jal sub_GAME_7F04310C -/* 07BD34 7F0471C4 E7A60014 */ swc1 $f6, 0x14($sp) -/* 07BD38 7F0471C8 3C018005 */ lui $at, %hi(D_80052AF8) # $at, 0x8005 -/* 07BD3C 7F0471CC C4202B28 */ lwc1 $f0, %lo(D_80052AF8)($at) -/* 07BD40 7F0471D0 3C018005 */ lui $at, %hi(D_80052AFC) # $at, 0x8005 -/* 07BD44 7F0471D4 C4242B2C */ lwc1 $f4, %lo(D_80052AFC)($at) -/* 07BD48 7F0471D8 8E050098 */ lw $a1, 0x98($s0) -/* 07BD4C 7F0471DC 44070000 */ mfc1 $a3, $f0 -/* 07BD50 7F0471E0 2604009C */ addiu $a0, $s0, 0x9c -/* 07BD54 7F0471E4 260600A0 */ addiu $a2, $s0, 0xa0 -/* 07BD58 7F0471E8 E7A00010 */ swc1 $f0, 0x10($sp) -/* 07BD5C 7F0471EC 0FC10D03 */ jal sub_GAME_7F04310C -/* 07BD60 7F0471F0 E7A40014 */ swc1 $f4, 0x14($sp) -/* 07BD64 7F0471F4 1000050F */ b .Ljp7F048634 -/* 07BD68 7F0471F8 92220003 */ lbu $v0, 3($s1) -.Ljp7F0471FC: -/* 07BD6C 7F0471FC C6480008 */ lwc1 $f8, 8($s2) -/* 07BD70 7F047200 C62A0058 */ lwc1 $f10, 0x58($s1) -/* 07BD74 7F047204 C646000C */ lwc1 $f6, 0xc($s2) -/* 07BD78 7F047208 C624005C */ lwc1 $f4, 0x5c($s1) -/* 07BD7C 7F04720C 460A4001 */ sub.s $f0, $f8, $f10 -/* 07BD80 7F047210 3C0141A0 */ li $at, 0x41A00000 # 20.000000 -/* 07BD84 7F047214 44815000 */ mtc1 $at, $f10 -/* 07BD88 7F047218 46043201 */ sub.s $f8, $f6, $f4 -/* 07BD8C 7F04721C 460A4181 */ sub.s $f6, $f8, $f10 -/* 07BD90 7F047220 46000282 */ mul.s $f10, $f0, $f0 -/* 07BD94 7F047224 E7A604C4 */ swc1 $f6, 0x4c4($sp) -/* 07BD98 7F047228 C6280060 */ lwc1 $f8, 0x60($s1) -/* 07BD9C 7F04722C C6440010 */ lwc1 $f4, 0x10($s2) -/* 07BDA0 7F047230 E7A004C8 */ swc1 $f0, 0x4c8($sp) -/* 07BDA4 7F047234 46082081 */ sub.s $f2, $f4, $f8 -/* 07BDA8 7F047238 46021182 */ mul.s $f6, $f2, $f2 -/* 07BDAC 7F04723C E7A204C0 */ swc1 $f2, 0x4c0($sp) -/* 07BDB0 7F047240 46065500 */ add.s $f20, $f10, $f6 -/* 07BDB4 7F047244 E7B404BC */ swc1 $f20, 0x4bc($sp) -/* 07BDB8 7F047248 0C007E08 */ jal sqrtf -/* 07BDBC 7F04724C 4600A306 */ mov.s $f12, $f20 -/* 07BDC0 7F047250 E7A004B4 */ swc1 $f0, 0x4b4($sp) -/* 07BDC4 7F047254 8E2E0008 */ lw $t6, 8($s1) -/* 07BDC8 7F047258 46000086 */ mov.s $f2, $f0 -/* 07BDCC 7F04725C 000E5100 */ sll $t2, $t6, 4 -/* 07BDD0 7F047260 05430008 */ bgezl $t2, .Ljp7F047284 -/* 07BDD4 7F047264 C7AC04BC */ lwc1 $f12, 0x4bc($sp) -/* 07BDD8 7F047268 C7A004C4 */ lwc1 $f0, 0x4c4($sp) -/* 07BDDC 7F04726C 46000102 */ mul.s $f4, $f0, $f0 -/* 07BDE0 7F047270 4604A300 */ add.s $f12, $f20, $f4 -/* 07BDE4 7F047274 0C007E08 */ jal sqrtf -/* 07BDE8 7F047278 E7AC04BC */ swc1 $f12, 0x4bc($sp) -/* 07BDEC 7F04727C 46000086 */ mov.s $f2, $f0 -/* 07BDF0 7F047280 C7AC04BC */ lwc1 $f12, 0x4bc($sp) -.Ljp7F047284: -/* 07BDF4 7F047284 0FC0B553 */ jal sub_GAME_7F02D244 -/* 07BDF8 7F047288 E7A204B8 */ swc1 $f2, 0x4b8($sp) -/* 07BDFC 7F04728C E7A004A4 */ swc1 $f0, 0x4a4($sp) -/* 07BE00 7F047290 C6080098 */ lwc1 $f8, 0x98($s0) -/* 07BE04 7F047294 C6100084 */ lwc1 $f16, 0x84($s0) -/* 07BE08 7F047298 C7A204B8 */ lwc1 $f2, 0x4b8($sp) -/* 07BE0C 7F04729C E7A804D8 */ swc1 $f8, 0x4d8($sp) -/* 07BE10 7F0472A0 C60A00A8 */ lwc1 $f10, 0xa8($s0) -/* 07BE14 7F0472A4 460A103E */ c.le.s $f2, $f10 -/* 07BE18 7F0472A8 00000000 */ nop -/* 07BE1C 7F0472AC 45020096 */ bc1fl .Ljp7F047508 -/* 07BE20 7F0472B0 8FA804B0 */ lw $t0, 0x4b0($sp) -/* 07BE24 7F0472B4 C7AC04C8 */ lwc1 $f12, 0x4c8($sp) -/* 07BE28 7F0472B8 C7AE04C0 */ lwc1 $f14, 0x4c0($sp) -/* 07BE2C 7F0472BC 0FC16BD4 */ jal convert_angle_using_inverse -/* 07BE30 7F0472C0 E7B004DC */ swc1 $f16, 0x4dc($sp) -/* 07BE34 7F0472C4 E7A004A0 */ swc1 $f0, 0x4a0($sp) -/* 07BE38 7F0472C8 C7AC04C4 */ lwc1 $f12, 0x4c4($sp) -/* 07BE3C 7F0472CC 0FC16BD4 */ jal convert_angle_using_inverse -/* 07BE40 7F0472D0 C7AE04B4 */ lwc1 $f14, 0x4b4($sp) -/* 07BE44 7F0472D4 E7A0049C */ swc1 $f0, 0x49c($sp) -/* 07BE48 7F0472D8 8E220008 */ lw $v0, 8($s1) -/* 07BE4C 7F0472DC C7B004DC */ lwc1 $f16, 0x4dc($sp) -/* 07BE50 7F0472E0 24190001 */ li $t9, 1 -/* 07BE54 7F0472E4 00027840 */ sll $t7, $v0, 1 -/* 07BE58 7F0472E8 05E00003 */ bltz $t7, .Ljp7F0472F8 -/* 07BE5C 7F0472EC 00026880 */ sll $t5, $v0, 2 -/* 07BE60 7F0472F0 05A10005 */ bgez $t5, .Ljp7F047308 -/* 07BE64 7F0472F4 C7A604A0 */ lwc1 $f6, 0x4a0($sp) -.Ljp7F0472F8: -/* 07BE68 7F0472F8 3C018005 */ lui $at, %hi(D_80052B00) # $at, 0x8005 -/* 07BE6C 7F0472FC C4342B30 */ lwc1 $f20, %lo(D_80052B00)($at) -/* 07BE70 7F047300 10000027 */ b .Ljp7F0473A0 -/* 07BE74 7F047304 AFB904B0 */ sw $t9, 0x4b0($sp) -.Ljp7F047308: -/* 07BE78 7F047308 C6040090 */ lwc1 $f4, 0x90($s0) -/* 07BE7C 7F04730C 3C018005 */ lui $at, %hi(D_80052B04) # $at, 0x8005 -/* 07BE80 7F047310 46043301 */ sub.s $f12, $f6, $f4 -/* 07BE84 7F047314 4616603C */ c.lt.s $f12, $f22 -/* 07BE88 7F047318 00000000 */ nop -/* 07BE8C 7F04731C 45000003 */ bc1f .Ljp7F04732C -/* 07BE90 7F047320 00000000 */ nop -/* 07BE94 7F047324 C4342B34 */ lwc1 $f20, %lo(D_80052B04)($at) -/* 07BE98 7F047328 46146300 */ add.s $f12, $f12, $f20 -.Ljp7F04732C: -/* 07BE9C 7F04732C 3C018005 */ lui $at, %hi(D_80052B08) # $at, 0x8005 -/* 07BEA0 7F047330 C4342B38 */ lwc1 $f20, %lo(D_80052B08)($at) -/* 07BEA4 7F047334 3C018005 */ lui $at, %hi(D_80052B0C) # $at, 0x8005 -/* 07BEA8 7F047338 C4282B3C */ lwc1 $f8, %lo(D_80052B0C)($at) -/* 07BEAC 7F04733C 3C018005 */ lui $at, %hi(D_80052B10) # $at, 0x8005 -/* 07BEB0 7F047340 460C403C */ c.lt.s $f8, $f12 -/* 07BEB4 7F047344 00000000 */ nop -/* 07BEB8 7F047348 45020003 */ bc1fl .Ljp7F047358 -/* 07BEBC 7F04734C C60A009C */ lwc1 $f10, 0x9c($s0) -/* 07BEC0 7F047350 46146301 */ sub.s $f12, $f12, $f20 -/* 07BEC4 7F047354 C60A009C */ lwc1 $f10, 0x9c($s0) -.Ljp7F047358: -/* 07BEC8 7F047358 460A0081 */ sub.s $f2, $f0, $f10 -/* 07BECC 7F04735C 4616103C */ c.lt.s $f2, $f22 -/* 07BED0 7F047360 00000000 */ nop -/* 07BED4 7F047364 45000001 */ bc1f .Ljp7F04736C -/* 07BED8 7F047368 00000000 */ nop -.Ljp7F04736C: -/* 07BEDC 7F04736C C4262B40 */ lwc1 $f6, %lo(D_80052B10)($at) -/* 07BEE0 7F047370 3C018005 */ lui $at, %hi(D_80052B14) # $at, 0x8005 -/* 07BEE4 7F047374 4606603C */ c.lt.s $f12, $f6 -/* 07BEE8 7F047378 00000000 */ nop -/* 07BEEC 7F04737C 45020009 */ bc1fl .Ljp7F0473A4 -/* 07BEF0 7F047380 8FA804B0 */ lw $t0, 0x4b0($sp) -/* 07BEF4 7F047384 C4242B44 */ lwc1 $f4, %lo(D_80052B14)($at) -/* 07BEF8 7F047388 24180001 */ li $t8, 1 -/* 07BEFC 7F04738C 460C203C */ c.lt.s $f4, $f12 -/* 07BF00 7F047390 00000000 */ nop -/* 07BF04 7F047394 45020003 */ bc1fl .Ljp7F0473A4 -/* 07BF08 7F047398 8FA804B0 */ lw $t0, 0x4b0($sp) -/* 07BF0C 7F04739C AFB804B0 */ sw $t8, 0x4b0($sp) -.Ljp7F0473A0: -/* 07BF10 7F0473A0 8FA804B0 */ lw $t0, 0x4b0($sp) -.Ljp7F0473A4: -/* 07BF14 7F0473A4 C7A804A0 */ lwc1 $f8, 0x4a0($sp) -/* 07BF18 7F0473A8 02402025 */ move $a0, $s2 -/* 07BF1C 7F0473AC 11000055 */ beqz $t0, .Ljp7F047504 -/* 07BF20 7F0473B0 00002825 */ move $a1, $zero -/* 07BF24 7F0473B4 C60A0084 */ lwc1 $f10, 0x84($s0) -/* 07BF28 7F0473B8 3C018005 */ lui $at, %hi(D_80052B18) # $at, 0x8005 -/* 07BF2C 7F0473BC C4262B48 */ lwc1 $f6, %lo(D_80052B18)($at) -/* 07BF30 7F0473C0 460A4001 */ sub.s $f0, $f8, $f10 -/* 07BF34 7F0473C4 8E690014 */ lw $t1, 0x14($s3) -/* 07BF38 7F0473C8 3C018005 */ lui $at, %hi(D_80052B1C) # $at, 0x8005 -/* 07BF3C 7F0473CC 4606003C */ c.lt.s $f0, $f6 -/* 07BF40 7F0473D0 AFA90494 */ sw $t1, 0x494($sp) -/* 07BF44 7F0473D4 45000003 */ bc1f .Ljp7F0473E4 -/* 07BF48 7F0473D8 00000000 */ nop -/* 07BF4C 7F0473DC 10000007 */ b .Ljp7F0473FC -/* 07BF50 7F0473E0 46140000 */ add.s $f0, $f0, $f20 -.Ljp7F0473E4: -/* 07BF54 7F0473E4 C4242B4C */ lwc1 $f4, %lo(D_80052B1C)($at) -/* 07BF58 7F0473E8 4600203E */ c.le.s $f4, $f0 -/* 07BF5C 7F0473EC 00000000 */ nop -/* 07BF60 7F0473F0 45020003 */ bc1fl .Ljp7F047400 -/* 07BF64 7F0473F4 E7A00498 */ swc1 $f0, 0x498($sp) -/* 07BF68 7F0473F8 46140001 */ sub.s $f0, $f0, $f20 -.Ljp7F0473FC: -/* 07BF6C 7F0473FC E7A00498 */ swc1 $f0, 0x498($sp) -.Ljp7F047400: -/* 07BF70 7F047400 0FC229DD */ jal sub_GAME_7F08A03C -/* 07BF74 7F047404 E7B004DC */ swc1 $f16, 0x4dc($sp) -/* 07BF78 7F047408 C7A00498 */ lwc1 $f0, 0x498($sp) -/* 07BF7C 7F04740C C6080088 */ lwc1 $f8, 0x88($s0) -/* 07BF80 7F047410 C7B004DC */ lwc1 $f16, 0x4dc($sp) -/* 07BF84 7F047414 4608003E */ c.le.s $f0, $f8 -/* 07BF88 7F047418 00000000 */ nop -/* 07BF8C 7F04741C 45020027 */ bc1fl .Ljp7F0474BC -/* 07BF90 7F047420 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BF94 7F047424 C60A008C */ lwc1 $f10, 0x8c($s0) -/* 07BF98 7F047428 240B001B */ li $t3, 27 -/* 07BF9C 7F04742C 4600503E */ c.le.s $f10, $f0 -/* 07BFA0 7F047430 00000000 */ nop -/* 07BFA4 7F047434 45020021 */ bc1fl .Ljp7F0474BC -/* 07BFA8 7F047438 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07BFAC 7F04743C C6460010 */ lwc1 $f6, 0x10($s2) -/* 07BFB0 7F047440 8E650008 */ lw $a1, 8($s3) -/* 07BFB4 7F047444 8E660010 */ lw $a2, 0x10($s3) -/* 07BFB8 7F047448 8E470008 */ lw $a3, 8($s2) -/* 07BFBC 7F04744C AFAB0014 */ sw $t3, 0x14($sp) -/* 07BFC0 7F047450 E7A60010 */ swc1 $f6, 0x10($sp) -/* 07BFC4 7F047454 C660000C */ lwc1 $f0, 0xc($s3) -/* 07BFC8 7F047458 27A40494 */ addiu $a0, $sp, 0x494 -/* 07BFCC 7F04745C E7A00018 */ swc1 $f0, 0x18($sp) -/* 07BFD0 7F047460 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 07BFD4 7F047464 C642000C */ lwc1 $f2, 0xc($s2) -/* 07BFD8 7F047468 E7B004DC */ swc1 $f16, 0x4dc($sp) -/* 07BFDC 7F04746C E7A20020 */ swc1 $f2, 0x20($sp) -/* 07BFE0 7F047470 0FC2C675 */ jal sub_GAME_7F0B0E24 -/* 07BFE4 7F047474 E7A20024 */ swc1 $f2, 0x24($sp) -/* 07BFE8 7F047478 1040000F */ beqz $v0, .Ljp7F0474B8 -/* 07BFEC 7F04747C C7B004DC */ lwc1 $f16, 0x4dc($sp) -/* 07BFF0 7F047480 8FAC0494 */ lw $t4, 0x494($sp) -/* 07BFF4 7F047484 8E4E0014 */ lw $t6, 0x14($s2) -/* 07BFF8 7F047488 558E000C */ bnel $t4, $t6, .Ljp7F0474BC -/* 07BFFC 7F04748C 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07C000 7F047490 8E2A0008 */ lw $t2, 8($s1) -/* 07C004 7F047494 3C012000 */ lui $at, 0x2000 -/* 07C008 7F047498 240D0001 */ li $t5, 1 -/* 07C00C 7F04749C 01417825 */ or $t7, $t2, $at -/* 07C010 7F0474A0 AE2F0008 */ sw $t7, 8($s1) -/* 07C014 7F0474A4 C7A4049C */ lwc1 $f4, 0x49c($sp) -/* 07C018 7F0474A8 AFAD04A8 */ sw $t5, 0x4a8($sp) -/* 07C01C 7F0474AC C7B004A0 */ lwc1 $f16, 0x4a0($sp) -/* 07C020 7F0474B0 1000000F */ b .Ljp7F0474F0 -/* 07C024 7F0474B4 E7A404D8 */ swc1 $f4, 0x4d8($sp) -.Ljp7F0474B8: -/* 07C028 7F0474B8 8E0200B8 */ lw $v0, 0xb8($s0) -.Ljp7F0474BC: -/* 07C02C 7F0474BC 3C198005 */ lui $t9, %hi(global_timer) # $t9, 0x8005 -/* 07C030 7F0474C0 0442000B */ bltzl $v0, .Ljp7F0474F0 -/* 07C034 7F0474C4 AFA004B0 */ sw $zero, 0x4b0($sp) -/* 07C038 7F0474C8 8F3983AC */ lw $t9, %lo(global_timer)($t9) -/* 07C03C 7F0474CC 2738FF88 */ addiu $t8, $t9, -0x78 -/* 07C040 7F0474D0 0302082A */ slt $at, $t8, $v0 -/* 07C044 7F0474D4 50200006 */ beql $at, $zero, .Ljp7F0474F0 -/* 07C048 7F0474D8 AFA004B0 */ sw $zero, 0x4b0($sp) -/* 07C04C 7F0474DC C608009C */ lwc1 $f8, 0x9c($s0) -/* 07C050 7F0474E0 C6100090 */ lwc1 $f16, 0x90($s0) -/* 07C054 7F0474E4 10000002 */ b .Ljp7F0474F0 -/* 07C058 7F0474E8 E7A804D8 */ swc1 $f8, 0x4d8($sp) -/* 07C05C 7F0474EC AFA004B0 */ sw $zero, 0x4b0($sp) -.Ljp7F0474F0: -/* 07C060 7F0474F0 02402025 */ move $a0, $s2 -/* 07C064 7F0474F4 24050001 */ li $a1, 1 -/* 07C068 7F0474F8 0FC229DD */ jal sub_GAME_7F08A03C -/* 07C06C 7F0474FC E7B004DC */ swc1 $f16, 0x4dc($sp) -/* 07C070 7F047500 C7B004DC */ lwc1 $f16, 0x4dc($sp) -.Ljp7F047504: -/* 07C074 7F047504 8FA804B0 */ lw $t0, 0x4b0($sp) -.Ljp7F047508: -/* 07C078 7F047508 3C018005 */ lui $at, %hi(D_80052B20) # $at, 0x8005 -/* 07C07C 7F04750C C4342B50 */ lwc1 $f20, %lo(D_80052B20)($at) -/* 07C080 7F047510 51000007 */ beql $t0, $zero, .Ljp7F047530 -/* 07C084 7F047514 8E0900D0 */ lw $t1, 0xd0($s0) -/* 07C088 7F047518 C7AC04BC */ lwc1 $f12, 0x4bc($sp) -/* 07C08C 7F04751C 0FC0B553 */ jal sub_GAME_7F02D244 -/* 07C090 7F047520 E7B004DC */ swc1 $f16, 0x4dc($sp) -/* 07C094 7F047524 C7B004DC */ lwc1 $f16, 0x4dc($sp) -/* 07C098 7F047528 E7A004A4 */ swc1 $f0, 0x4a4($sp) -/* 07C09C 7F04752C 8E0900D0 */ lw $t1, 0xd0($s0) -.Ljp7F047530: -/* 07C0A0 7F047530 1120001F */ beqz $t1, .Ljp7F0475B0 -/* 07C0A4 7F047534 3C0B8005 */ lui $t3, %hi(global_timer) # $t3, 0x8005 -/* 07C0A8 7F047538 8D6B83AC */ lw $t3, %lo(global_timer)($t3) -/* 07C0AC 7F04753C 24010078 */ li $at, 120 -/* 07C0B0 7F047540 E7B004DC */ swc1 $f16, 0x4dc($sp) -/* 07C0B4 7F047544 0161001A */ div $zero, $t3, $at -/* 07C0B8 7F047548 00006010 */ mfhi $t4 -/* 07C0BC 7F04754C 448C5000 */ mtc1 $t4, $f10 -/* 07C0C0 7F047550 3C0142F0 */ li $at, 0x42F00000 # 120.000000 -/* 07C0C4 7F047554 44814000 */ mtc1 $at, $f8 -/* 07C0C8 7F047558 468051A0 */ cvt.s.w $f6, $f10 -/* 07C0CC 7F04755C 46143102 */ mul.s $f4, $f6, $f20 -/* 07C0D0 7F047560 0FC160F3 */ jal sinf -/* 07C0D4 7F047564 46082303 */ div.s $f12, $f4, $f8 -/* 07C0D8 7F047568 3C018005 */ lui $at, %hi(D_80052B24) # $at, 0x8005 -/* 07C0DC 7F04756C C4262B54 */ lwc1 $f6, %lo(D_80052B24)($at) -/* 07C0E0 7F047570 C7AA04A4 */ lwc1 $f10, 0x4a4($sp) -/* 07C0E4 7F047574 C7B004DC */ lwc1 $f16, 0x4dc($sp) -/* 07C0E8 7F047578 46065102 */ mul.s $f4, $f10, $f6 -/* 07C0EC 7F04757C 00000000 */ nop -/* 07C0F0 7F047580 46002202 */ mul.s $f8, $f4, $f0 -/* 07C0F4 7F047584 46088400 */ add.s $f16, $f16, $f8 -/* 07C0F8 7F047588 4616803C */ c.lt.s $f16, $f22 -/* 07C0FC 7F04758C 00000000 */ nop -/* 07C100 7F047590 45000002 */ bc1f .Ljp7F04759C -/* 07C104 7F047594 00000000 */ nop -/* 07C108 7F047598 46148400 */ add.s $f16, $f16, $f20 -.Ljp7F04759C: -/* 07C10C 7F04759C 4610A03E */ c.le.s $f20, $f16 -/* 07C110 7F0475A0 00000000 */ nop -/* 07C114 7F0475A4 45020003 */ bc1fl .Ljp7F0475B4 -/* 07C118 7F0475A8 C6020084 */ lwc1 $f2, 0x84($s0) -/* 07C11C 7F0475AC 46148401 */ sub.s $f16, $f16, $f20 -.Ljp7F0475B0: -/* 07C120 7F0475B0 C6020084 */ lwc1 $f2, 0x84($s0) -.Ljp7F0475B4: -/* 07C124 7F0475B4 3C018005 */ lui $at, %hi(D_80052B28) # $at, 0x8005 -/* 07C128 7F0475B8 C42A2B58 */ lwc1 $f10, %lo(D_80052B28)($at) -/* 07C12C 7F0475BC 46028001 */ sub.s $f0, $f16, $f2 -/* 07C130 7F0475C0 26040090 */ addiu $a0, $s0, 0x90 -/* 07C134 7F0475C4 460A003C */ c.lt.s $f0, $f10 -/* 07C138 7F0475C8 00000000 */ nop -/* 07C13C 7F0475CC 45000003 */ bc1f .Ljp7F0475DC -/* 07C140 7F0475D0 00000000 */ nop -/* 07C144 7F0475D4 10000008 */ b .Ljp7F0475F8 -/* 07C148 7F0475D8 46140000 */ add.s $f0, $f0, $f20 -.Ljp7F0475DC: -/* 07C14C 7F0475DC 3C018005 */ lui $at, %hi(D_80052B2C) # $at, 0x8005 -/* 07C150 7F0475E0 C4262B5C */ lwc1 $f6, %lo(D_80052B2C)($at) -/* 07C154 7F0475E4 4600303E */ c.le.s $f6, $f0 -/* 07C158 7F0475E8 00000000 */ nop -/* 07C15C 7F0475EC 45020003 */ bc1fl .Ljp7F0475FC -/* 07C160 7F0475F0 C60C0088 */ lwc1 $f12, 0x88($s0) -/* 07C164 7F0475F4 46140001 */ sub.s $f0, $f0, $f20 -.Ljp7F0475F8: -/* 07C168 7F0475F8 C60C0088 */ lwc1 $f12, 0x88($s0) -.Ljp7F0475FC: -/* 07C16C 7F0475FC 3C018005 */ lui $at, %hi(D_80052B30) # $at, 0x8005 -/* 07C170 7F047600 4600603C */ c.lt.s $f12, $f0 -/* 07C174 7F047604 00000000 */ nop -/* 07C178 7F047608 45020004 */ bc1fl .Ljp7F04761C -/* 07C17C 7F04760C C60C008C */ lwc1 $f12, 0x8c($s0) -/* 07C180 7F047610 10000007 */ b .Ljp7F047630 -/* 07C184 7F047614 460C1400 */ add.s $f16, $f2, $f12 -/* 07C188 7F047618 C60C008C */ lwc1 $f12, 0x8c($s0) -.Ljp7F04761C: -/* 07C18C 7F04761C 460C003C */ c.lt.s $f0, $f12 -/* 07C190 7F047620 00000000 */ nop -/* 07C194 7F047624 45020003 */ bc1fl .Ljp7F047634 -/* 07C198 7F047628 4616803C */ c.lt.s $f16, $f22 -/* 07C19C 7F04762C 460C1400 */ add.s $f16, $f2, $f12 -.Ljp7F047630: -/* 07C1A0 7F047630 4616803C */ c.lt.s $f16, $f22 -.Ljp7F047634: -/* 07C1A4 7F047634 00000000 */ nop -/* 07C1A8 7F047638 45020003 */ bc1fl .Ljp7F047648 -/* 07C1AC 7F04763C 4610A03E */ c.le.s $f20, $f16 -/* 07C1B0 7F047640 46148400 */ add.s $f16, $f16, $f20 -/* 07C1B4 7F047644 4610A03E */ c.le.s $f20, $f16 -.Ljp7F047648: -/* 07C1B8 7F047648 00000000 */ nop -/* 07C1BC 7F04764C 45000002 */ bc1f .Ljp7F047658 -/* 07C1C0 7F047650 00000000 */ nop -/* 07C1C4 7F047654 46148401 */ sub.s $f16, $f16, $f20 -.Ljp7F047658: -/* 07C1C8 7F047658 C4202B60 */ lwc1 $f0, %lo(D_80052B30)($at) -/* 07C1CC 7F04765C 44058000 */ mfc1 $a1, $f16 -/* 07C1D0 7F047660 26060094 */ addiu $a2, $s0, 0x94 -/* 07C1D4 7F047664 E7A00010 */ swc1 $f0, 0x10($sp) -/* 07C1D8 7F047668 C60400A4 */ lwc1 $f4, 0xa4($s0) -/* 07C1DC 7F04766C 44070000 */ mfc1 $a3, $f0 -/* 07C1E0 7F047670 E7B004DC */ swc1 $f16, 0x4dc($sp) -/* 07C1E4 7F047674 0FC10D03 */ jal sub_GAME_7F04310C -/* 07C1E8 7F047678 E7A40014 */ swc1 $f4, 0x14($sp) -/* 07C1EC 7F04767C 3C018005 */ lui $at, %hi(D_80052B34) # $at, 0x8005 -/* 07C1F0 7F047680 C4202B64 */ lwc1 $f0, %lo(D_80052B34)($at) -/* 07C1F4 7F047684 2604009C */ addiu $a0, $s0, 0x9c -/* 07C1F8 7F047688 8FA504D8 */ lw $a1, 0x4d8($sp) -/* 07C1FC 7F04768C E7A00010 */ swc1 $f0, 0x10($sp) -/* 07C200 7F047690 C60800A4 */ lwc1 $f8, 0xa4($s0) -/* 07C204 7F047694 44070000 */ mfc1 $a3, $f0 -/* 07C208 7F047698 260600A0 */ addiu $a2, $s0, 0xa0 -/* 07C20C 7F04769C 0FC10D03 */ jal sub_GAME_7F04310C -/* 07C210 7F0476A0 E7A80014 */ swc1 $f8, 0x14($sp) -/* 07C214 7F0476A4 C7B004DC */ lwc1 $f16, 0x4dc($sp) -/* 07C218 7F0476A8 C60A0090 */ lwc1 $f10, 0x90($s0) -/* 07C21C 7F0476AC 3C018005 */ lui $at, %hi(D_80052B38) # $at, 0x8005 -/* 07C220 7F0476B0 C7A604D8 */ lwc1 $f6, 0x4d8($sp) -/* 07C224 7F0476B4 460A8301 */ sub.s $f12, $f16, $f10 -/* 07C228 7F0476B8 4616603C */ c.lt.s $f12, $f22 -/* 07C22C 7F0476BC 00000000 */ nop -/* 07C230 7F0476C0 45000002 */ bc1f .Ljp7F0476CC -/* 07C234 7F0476C4 00000000 */ nop -/* 07C238 7F0476C8 46146300 */ add.s $f12, $f12, $f20 -.Ljp7F0476CC: -/* 07C23C 7F0476CC C4202B68 */ lwc1 $f0, %lo(D_80052B38)($at) -/* 07C240 7F0476D0 460C003C */ c.lt.s $f0, $f12 -/* 07C244 7F0476D4 00000000 */ nop -/* 07C248 7F0476D8 45020003 */ bc1fl .Ljp7F0476E8 -/* 07C24C 7F0476DC C604009C */ lwc1 $f4, 0x9c($s0) -/* 07C250 7F0476E0 46146301 */ sub.s $f12, $f12, $f20 -/* 07C254 7F0476E4 C604009C */ lwc1 $f4, 0x9c($s0) -.Ljp7F0476E8: -/* 07C258 7F0476E8 46043081 */ sub.s $f2, $f6, $f4 -/* 07C25C 7F0476EC 4616103C */ c.lt.s $f2, $f22 -/* 07C260 7F0476F0 00000000 */ nop -/* 07C264 7F0476F4 45020003 */ bc1fl .Ljp7F047704 -/* 07C268 7F0476F8 4602003C */ c.lt.s $f0, $f2 -/* 07C26C 7F0476FC 46141080 */ add.s $f2, $f2, $f20 -/* 07C270 7F047700 4602003C */ c.lt.s $f0, $f2 -.Ljp7F047704: -/* 07C274 7F047704 00000000 */ nop -/* 07C278 7F047708 45020003 */ bc1fl .Ljp7F047718 -/* 07C27C 7F04770C AE0000D0 */ sw $zero, 0xd0($s0) -/* 07C280 7F047710 46141081 */ sub.s $f2, $f2, $f20 -/* 07C284 7F047714 AE0000D0 */ sw $zero, 0xd0($s0) -.Ljp7F047718: -/* 07C288 7F047718 8FAE04B0 */ lw $t6, 0x4b0($sp) -/* 07C28C 7F04771C C7A804A4 */ lwc1 $f8, 0x4a4($sp) -/* 07C290 7F047720 51C00047 */ beql $t6, $zero, .Ljp7F047840 -/* 07C294 7F047724 8FB904AC */ lw $t9, 0x4ac($sp) -/* 07C298 7F047728 4608603C */ c.lt.s $f12, $f8 -/* 07C29C 7F04772C C7AA04A4 */ lwc1 $f10, 0x4a4($sp) -/* 07C2A0 7F047730 4502001B */ bc1fl .Ljp7F0477A0 -/* 07C2A4 7F047734 460A5000 */ add.s $f0, $f10, $f10 -/* 07C2A8 7F047738 46004007 */ neg.s $f0, $f8 -/* 07C2AC 7F04773C 460C003C */ c.lt.s $f0, $f12 -/* 07C2B0 7F047740 00000000 */ nop -/* 07C2B4 7F047744 45020016 */ bc1fl .Ljp7F0477A0 -/* 07C2B8 7F047748 460A5000 */ add.s $f0, $f10, $f10 -/* 07C2BC 7F04774C 4608103C */ c.lt.s $f2, $f8 -/* 07C2C0 7F047750 00000000 */ nop -/* 07C2C4 7F047754 45020012 */ bc1fl .Ljp7F0477A0 -/* 07C2C8 7F047758 460A5000 */ add.s $f0, $f10, $f10 -/* 07C2CC 7F04775C 4602003C */ c.lt.s $f0, $f2 -/* 07C2D0 7F047760 240A0001 */ li $t2, 1 -/* 07C2D4 7F047764 4502000E */ bc1fl .Ljp7F0477A0 -/* 07C2D8 7F047768 460A5000 */ add.s $f0, $f10, $f10 -/* 07C2DC 7F04776C AE0A00D0 */ sw $t2, 0xd0($s0) -/* 07C2E0 7F047770 8FAD04A8 */ lw $t5, 0x4a8($sp) -/* 07C2E4 7F047774 240F0001 */ li $t7, 1 -/* 07C2E8 7F047778 AFAF04AC */ sw $t7, 0x4ac($sp) -/* 07C2EC 7F04777C 11A0002F */ beqz $t5, .Ljp7F04783C -/* 07C2F0 7F047780 3C198005 */ lui $t9, %hi(global_timer) # $t9, 0x8005 -/* 07C2F4 7F047784 8F3983AC */ lw $t9, %lo(global_timer)($t9) -/* 07C2F8 7F047788 3C188005 */ lui $t8, %hi(global_timer) # $t8, 0x8005 -/* 07C2FC 7F04778C AE1900B8 */ sw $t9, 0xb8($s0) -/* 07C300 7F047790 8F1883AC */ lw $t8, %lo(global_timer)($t8) -/* 07C304 7F047794 10000029 */ b .Ljp7F04783C -/* 07C308 7F047798 AE1800BC */ sw $t8, 0xbc($s0) -/* 07C30C 7F04779C 460A5000 */ add.s $f0, $f10, $f10 -.Ljp7F0477A0: -/* 07C310 7F0477A0 4600603C */ c.lt.s $f12, $f0 -/* 07C314 7F0477A4 00000000 */ nop -/* 07C318 7F0477A8 45020018 */ bc1fl .Ljp7F04780C -/* 07C31C 7F0477AC 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07C320 7F0477B0 46000387 */ neg.s $f14, $f0 -/* 07C324 7F0477B4 460C703C */ c.lt.s $f14, $f12 -/* 07C328 7F0477B8 00000000 */ nop -/* 07C32C 7F0477BC 45020013 */ bc1fl .Ljp7F04780C -/* 07C330 7F0477C0 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07C334 7F0477C4 4600103C */ c.lt.s $f2, $f0 -/* 07C338 7F0477C8 00000000 */ nop -/* 07C33C 7F0477CC 4502000F */ bc1fl .Ljp7F04780C -/* 07C340 7F0477D0 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07C344 7F0477D4 4602703C */ c.lt.s $f14, $f2 -/* 07C348 7F0477D8 24080001 */ li $t0, 1 -/* 07C34C 7F0477DC 4502000B */ bc1fl .Ljp7F04780C -/* 07C350 7F0477E0 8E0200B8 */ lw $v0, 0xb8($s0) -/* 07C354 7F0477E4 AE0800D0 */ sw $t0, 0xd0($s0) -/* 07C358 7F0477E8 8FAB04A8 */ lw $t3, 0x4a8($sp) -/* 07C35C 7F0477EC 24090001 */ li $t1, 1 -/* 07C360 7F0477F0 AFA904AC */ sw $t1, 0x4ac($sp) -/* 07C364 7F0477F4 11600011 */ beqz $t3, .Ljp7F04783C -/* 07C368 7F0477F8 3C0C8005 */ lui $t4, %hi(global_timer) # $t4, 0x8005 -/* 07C36C 7F0477FC 8D8C83AC */ lw $t4, %lo(global_timer)($t4) -/* 07C370 7F047800 1000000E */ b .Ljp7F04783C -/* 07C374 7F047804 AE0C00B8 */ sw $t4, 0xb8($s0) -/* 07C378 7F047808 8E0200B8 */ lw $v0, 0xb8($s0) -.Ljp7F04780C: -/* 07C37C 7F04780C 3C0E8005 */ lui $t6, %hi(global_timer) # $t6, 0x8005 -/* 07C380 7F047810 0442000B */ bltzl $v0, .Ljp7F047840 -/* 07C384 7F047814 8FB904AC */ lw $t9, 0x4ac($sp) -/* 07C388 7F047818 8DCE83AC */ lw $t6, %lo(global_timer)($t6) -/* 07C38C 7F04781C 240F0001 */ li $t7, 1 -/* 07C390 7F047820 240D0001 */ li $t5, 1 -/* 07C394 7F047824 25CAFF88 */ addiu $t2, $t6, -0x78 -/* 07C398 7F047828 0142082A */ slt $at, $t2, $v0 -/* 07C39C 7F04782C 50200004 */ beql $at, $zero, .Ljp7F047840 -/* 07C3A0 7F047830 8FB904AC */ lw $t9, 0x4ac($sp) -/* 07C3A4 7F047834 AE0F00D0 */ sw $t7, 0xd0($s0) -/* 07C3A8 7F047838 AFAD04AC */ sw $t5, 0x4ac($sp) -.Ljp7F04783C: -/* 07C3AC 7F04783C 8FB904AC */ lw $t9, 0x4ac($sp) -.Ljp7F047840: -/* 07C3B0 7F047840 3C018005 */ lui $at, %hi(D_80052B3C) # $at, 0x8005 -/* 07C3B4 7F047844 53200013 */ beql $t9, $zero, .Ljp7F047894 -/* 07C3B8 7F047848 C60200B0 */ lwc1 $f2, 0xb0($s0) -/* 07C3BC 7F04784C C4202B6C */ lwc1 $f0, %lo(D_80052B3C)($at) -/* 07C3C0 7F047850 3C018005 */ lui $at, %hi(D_80052B40) # $at, 0x8005 -/* 07C3C4 7F047854 C4262B70 */ lwc1 $f6, %lo(D_80052B40)($at) -/* 07C3C8 7F047858 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07C3CC 7F04785C C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07C3D0 7F047860 C60A00B0 */ lwc1 $f10, 0xb0($s0) -/* 07C3D4 7F047864 46043202 */ mul.s $f8, $f6, $f4 -/* 07C3D8 7F047868 46085180 */ add.s $f6, $f10, $f8 -/* 07C3DC 7F04786C E60600B0 */ swc1 $f6, 0xb0($s0) -/* 07C3E0 7F047870 C60200B0 */ lwc1 $f2, 0xb0($s0) -/* 07C3E4 7F047874 4602003C */ c.lt.s $f0, $f2 -/* 07C3E8 7F047878 00000000 */ nop -/* 07C3EC 7F04787C 45020023 */ bc1fl .Ljp7F04790C -/* 07C3F0 7F047880 4602B03C */ c.lt.s $f22, $f2 -/* 07C3F4 7F047884 E60000B0 */ swc1 $f0, 0xb0($s0) -/* 07C3F8 7F047888 1000001F */ b .Ljp7F047908 -/* 07C3FC 7F04788C C60200B0 */ lwc1 $f2, 0xb0($s0) -/* 07C400 7F047890 C60200B0 */ lwc1 $f2, 0xb0($s0) -.Ljp7F047894: -/* 07C404 7F047894 3C188005 */ lui $t8, %hi(clock_timer) # $t8, 0x8005 -/* 07C408 7F047898 4602B03C */ c.lt.s $f22, $f2 -/* 07C40C 7F04789C 00000000 */ nop -/* 07C410 7F0478A0 4502001A */ bc1fl .Ljp7F04790C -/* 07C414 7F0478A4 4602B03C */ c.lt.s $f22, $f2 -/* 07C418 7F0478A8 8F1883A4 */ lw $t8, %lo(clock_timer)($t8) -/* 07C41C 7F0478AC 00001025 */ move $v0, $zero -/* 07C420 7F0478B0 3C018005 */ lui $at, %hi(D_80052B44) # $at, 0x8005 -/* 07C424 7F0478B4 1B00000C */ blez $t8, .Ljp7F0478E8 -/* 07C428 7F0478B8 00000000 */ nop -/* 07C42C 7F0478BC C4202B74 */ lwc1 $f0, %lo(D_80052B44)($at) -/* 07C430 7F0478C0 C60400B0 */ lwc1 $f4, 0xb0($s0) -.Ljp7F0478C4: -/* 07C434 7F0478C4 3C088005 */ lui $t0, %hi(clock_timer) # $t0, 0x8005 -/* 07C438 7F0478C8 24420001 */ addiu $v0, $v0, 1 -/* 07C43C 7F0478CC 46002282 */ mul.s $f10, $f4, $f0 -/* 07C440 7F0478D0 E60A00B0 */ swc1 $f10, 0xb0($s0) -/* 07C444 7F0478D4 8D0883A4 */ lw $t0, %lo(clock_timer)($t0) -/* 07C448 7F0478D8 0048082A */ slt $at, $v0, $t0 -/* 07C44C 7F0478DC 5420FFF9 */ bnezl $at, .Ljp7F0478C4 -/* 07C450 7F0478E0 C60400B0 */ lwc1 $f4, 0xb0($s0) -/* 07C454 7F0478E4 C60200B0 */ lwc1 $f2, 0xb0($s0) -.Ljp7F0478E8: -/* 07C458 7F0478E8 3C018005 */ lui $at, %hi(D_80052B48) # $at, 0x8005 -/* 07C45C 7F0478EC C4282B78 */ lwc1 $f8, %lo(D_80052B48)($at) -/* 07C460 7F0478F0 4608103E */ c.le.s $f2, $f8 -/* 07C464 7F0478F4 00000000 */ nop -/* 07C468 7F0478F8 45020004 */ bc1fl .Ljp7F04790C -/* 07C46C 7F0478FC 4602B03C */ c.lt.s $f22, $f2 -/* 07C470 7F047900 E61600B0 */ swc1 $f22, 0xb0($s0) -/* 07C474 7F047904 C60200B0 */ lwc1 $f2, 0xb0($s0) -.Ljp7F047908: -/* 07C478 7F047908 4602B03C */ c.lt.s $f22, $f2 -.Ljp7F04790C: -/* 07C47C 7F04790C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07C480 7F047910 45020348 */ bc1fl .Ljp7F048634 -/* 07C484 7F047914 92220003 */ lbu $v0, 3($s1) -/* 07C488 7F047918 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07C48C 7F04791C C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07C490 7F047920 46041282 */ mul.s $f10, $f2, $f4 -/* 07C494 7F047924 460A3200 */ add.s $f8, $f6, $f10 -/* 07C498 7F047928 E60800B4 */ swc1 $f8, 0xb4($s0) -/* 07C49C 7F04792C C60000B4 */ lwc1 $f0, 0xb4($s0) -/* 07C4A0 7F047930 4600A03E */ c.le.s $f20, $f0 -/* 07C4A4 7F047934 00000000 */ nop -/* 07C4A8 7F047938 4502033E */ bc1fl .Ljp7F048634 -/* 07C4AC 7F04793C 92220003 */ lbu $v0, 3($s1) -/* 07C4B0 7F047940 46140101 */ sub.s $f4, $f0, $f20 -.Ljp7F047944: -/* 07C4B4 7F047944 E60400B4 */ swc1 $f4, 0xb4($s0) -/* 07C4B8 7F047948 C60000B4 */ lwc1 $f0, 0xb4($s0) -/* 07C4BC 7F04794C 4600A03E */ c.le.s $f20, $f0 -/* 07C4C0 7F047950 00000000 */ nop -/* 07C4C4 7F047954 4503FFFB */ bc1tl .Ljp7F047944 -/* 07C4C8 7F047958 46140101 */ sub.s $f4, $f0, $f20 -/* 07C4CC 7F04795C 10000335 */ b .Ljp7F048634 -/* 07C4D0 7F047960 92220003 */ lbu $v0, 3($s1) -/* 07C4D4 7F047964 24010027 */ li $at, 39 -.Ljp7F047968: -/* 07C4D8 7F047968 14410255 */ bne $v0, $at, .Ljp7F0482C0 -/* 07C4DC 7F04796C 02202025 */ move $a0, $s1 -/* 07C4E0 7F047970 C62600A0 */ lwc1 $f6, 0xa0($s1) -/* 07C4E4 7F047974 AFA0047C */ sw $zero, 0x47c($sp) -/* 07C4E8 7F047978 24050001 */ li $a1, 1 -/* 07C4EC 7F04797C 0FC0D5E1 */ jal parse_handle_actionblocks -/* 07C4F0 7F047980 E7A60480 */ swc1 $f6, 0x480($sp) -/* 07C4F4 7F047984 C62E0098 */ lwc1 $f14, 0x98($s1) -/* 07C4F8 7F047988 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07C4FC 7F04798C 460EB03E */ c.le.s $f22, $f14 -/* 07C500 7F047990 00000000 */ nop -/* 07C504 7F047994 45020016 */ bc1fl .Ljp7F0479F0 -/* 07C508 7F047998 8E29000C */ lw $t1, 0xc($s1) -/* 07C50C 7F04799C C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07C510 7F0479A0 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07C514 7F0479A4 4602703E */ c.le.s $f14, $f2 -/* 07C518 7F0479A8 00000000 */ nop -/* 07C51C 7F0479AC 45020006 */ bc1fl .Ljp7F0479C8 -/* 07C520 7F0479B0 C6200088 */ lwc1 $f0, 0x88($s1) -/* 07C524 7F0479B4 C62A0094 */ lwc1 $f10, 0x94($s1) -/* 07C528 7F0479B8 C62E0098 */ lwc1 $f14, 0x98($s1) -/* 07C52C 7F0479BC 10000008 */ b .Ljp7F0479E0 -/* 07C530 7F0479C0 E62A0088 */ swc1 $f10, 0x88($s1) -/* 07C534 7F0479C4 C6200088 */ lwc1 $f0, 0x88($s1) -.Ljp7F0479C8: -/* 07C538 7F0479C8 C6280094 */ lwc1 $f8, 0x94($s1) -/* 07C53C 7F0479CC 46004101 */ sub.s $f4, $f8, $f0 -/* 07C540 7F0479D0 46022182 */ mul.s $f6, $f4, $f2 -/* 07C544 7F0479D4 460E3283 */ div.s $f10, $f6, $f14 -/* 07C548 7F0479D8 460A0200 */ add.s $f8, $f0, $f10 -/* 07C54C 7F0479DC E6280088 */ swc1 $f8, 0x88($s1) -.Ljp7F0479E0: -/* 07C550 7F0479E0 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) -/* 07C554 7F0479E4 46047181 */ sub.s $f6, $f14, $f4 -/* 07C558 7F0479E8 E6260098 */ swc1 $f6, 0x98($s1) -/* 07C55C 7F0479EC 8E29000C */ lw $t1, 0xc($s1) -.Ljp7F0479F0: -/* 07C560 7F0479F0 00008025 */ move $s0, $zero -/* 07C564 7F0479F4 00095B00 */ sll $t3, $t1, 0xc -/* 07C568 7F0479F8 05600014 */ bltz $t3, .Ljp7F047A4C -/* 07C56C 7F0479FC 00000000 */ nop -/* 07C570 7F047A00 0FC13CCE */ jal check_if_object_has_not_been_destroyed -/* 07C574 7F047A04 02202025 */ move $a0, $s1 -/* 07C578 7F047A08 10400010 */ beqz $v0, .Ljp7F047A4C -/* 07C57C 7F047A0C 00000000 */ nop -/* 07C580 7F047A10 C62A0088 */ lwc1 $f10, 0x88($s1) -/* 07C584 7F047A14 26240058 */ addiu $a0, $s1, 0x58 -/* 07C588 7F047A18 3C0544FA */ lui $a1, 0x44fa -/* 07C58C 7F047A1C 460AB03C */ c.lt.s $f22, $f10 -/* 07C590 7F047A20 3C06453B */ lui $a2, (0x453B8000 >> 16) # lui $a2, 0x453b -/* 07C594 7F047A24 45010006 */ bc1t .Ljp7F047A40 -/* 07C598 7F047A28 00000000 */ nop -/* 07C59C 7F047A2C C6280094 */ lwc1 $f8, 0x94($s1) -/* 07C5A0 7F047A30 4608B03C */ c.lt.s $f22, $f8 -/* 07C5A4 7F047A34 00000000 */ nop -/* 07C5A8 7F047A38 45000004 */ bc1f .Ljp7F047A4C -/* 07C5AC 7F047A3C 00000000 */ nop -.Ljp7F047A40: -/* 07C5B0 7F047A40 0FC14F64 */ jal sub_GAME_7F053894 -/* 07C5B4 7F047A44 34C68000 */ ori $a2, (0x453B8000 & 0xFFFF) # ori $a2, $a2, 0x8000 -/* 07C5B8 7F047A48 00408025 */ move $s0, $v0 -.Ljp7F047A4C: -/* 07C5BC 7F047A4C 5A000019 */ blezl $s0, .Ljp7F047AB4 -/* 07C5C0 7F047A50 8E2400AC */ lw $a0, 0xac($s1) -/* 07C5C4 7F047A54 8E2400AC */ lw $a0, 0xac($s1) -/* 07C5C8 7F047A58 10800005 */ beqz $a0, .Ljp7F047A70 -/* 07C5CC 7F047A5C 00000000 */ nop -/* 07C5D0 7F047A60 0C002380 */ jal sfxGetArg0Unk3F -/* 07C5D4 7F047A64 00000000 */ nop -/* 07C5D8 7F047A68 5440000A */ bnezl $v0, .Ljp7F047A94 -/* 07C5DC 7F047A6C 8E2400AC */ lw $a0, 0xac($s1) -.Ljp7F047A70: -/* 07C5E0 7F047A70 0FC3021B */ jal get_controls_locked_flag -/* 07C5E4 7F047A74 00000000 */ nop -/* 07C5E8 7F047A78 14400005 */ bnez $v0, .Ljp7F047A90 -/* 07C5EC 7F047A7C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07C5F0 7F047A80 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07C5F4 7F047A84 24050041 */ li $a1, 65 -/* 07C5F8 7F047A88 0C002386 */ jal play_sfx_a1 -/* 07C5FC 7F047A8C 262600AC */ addiu $a2, $s1, 0xac -.Ljp7F047A90: -/* 07C600 7F047A90 8E2400AC */ lw $a0, 0xac($s1) -.Ljp7F047A94: -/* 07C604 7F047A94 24050008 */ li $a1, 8 -/* 07C608 7F047A98 5080000F */ beql $a0, $zero, .Ljp7F047AD8 -/* 07C60C 7F047A9C 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C610 7F047AA0 0C002465 */ jal sfx_c_70009184 -/* 07C614 7F047AA4 02003025 */ move $a2, $s0 -/* 07C618 7F047AA8 1000000B */ b .Ljp7F047AD8 -/* 07C61C 7F047AAC 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C620 7F047AB0 8E2400AC */ lw $a0, 0xac($s1) -.Ljp7F047AB4: -/* 07C624 7F047AB4 50800008 */ beql $a0, $zero, .Ljp7F047AD8 -/* 07C628 7F047AB8 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C62C 7F047ABC 0C002380 */ jal sfxGetArg0Unk3F -/* 07C630 7F047AC0 00000000 */ nop -/* 07C634 7F047AC4 50400004 */ beql $v0, $zero, .Ljp7F047AD8 -/* 07C638 7F047AC8 8E2400A4 */ lw $a0, 0xa4($s1) -/* 07C63C 7F047ACC 0C00240C */ jal sfxDeactivate -/* 07C640 7F047AD0 8E2400AC */ lw $a0, 0xac($s1) -/* 07C644 7F047AD4 8E2400A4 */ lw $a0, 0xa4($s1) -.Ljp7F047AD8: -/* 07C648 7F047AD8 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) # $a1, 0x8007 -/* 07C64C 7F047ADC 5080002A */ beql $a0, $zero, .Ljp7F047B88 -/* 07C650 7F047AE0 8E2F0008 */ lw $t7, 8($s1) -/* 07C654 7F047AE4 8E2E00A8 */ lw $t6, 0xa8($s1) -/* 07C658 7F047AE8 8C8C0000 */ lw $t4, ($a0) -/* 07C65C 7F047AEC 24A55D40 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d40 -/* 07C660 7F047AF0 000E5080 */ sll $t2, $t6, 2 -/* 07C664 7F047AF4 018A1021 */ addu $v0, $t4, $t2 -/* 07C668 7F047AF8 8C4F0000 */ lw $t7, ($v0) -/* 07C66C 7F047AFC 8CB90000 */ lw $t9, ($a1) -/* 07C670 7F047B00 8CA90018 */ lw $t1, 0x18($a1) -/* 07C674 7F047B04 000F6900 */ sll $t5, $t7, 4 -/* 07C678 7F047B08 01B91821 */ addu $v1, $t5, $t9 -/* 07C67C 7F047B0C 8C780000 */ lw $t8, ($v1) -/* 07C680 7F047B10 C6260058 */ lwc1 $f6, 0x58($s1) -/* 07C684 7F047B14 C6280060 */ lwc1 $f8, 0x60($s1) -/* 07C688 7F047B18 00184080 */ sll $t0, $t8, 2 -/* 07C68C 7F047B1C 01184023 */ subu $t0, $t0, $t8 -/* 07C690 7F047B20 00084080 */ sll $t0, $t0, 2 -/* 07C694 7F047B24 01184023 */ subu $t0, $t0, $t8 -/* 07C698 7F047B28 00084080 */ sll $t0, $t0, 2 -/* 07C69C 7F047B2C 01093021 */ addu $a2, $t0, $t1 -/* 07C6A0 7F047B30 C4C40000 */ lwc1 $f4, ($a2) -/* 07C6A4 7F047B34 C4CA0008 */ lwc1 $f10, 8($a2) -/* 07C6A8 7F047B38 AFA6047C */ sw $a2, 0x47c($sp) -/* 07C6AC 7F047B3C 46062301 */ sub.s $f12, $f4, $f6 -/* 07C6B0 7F047B40 0FC16BD4 */ jal convert_angle_using_inverse -/* 07C6B4 7F047B44 46085381 */ sub.s $f14, $f10, $f8 -/* 07C6B8 7F047B48 E7A00480 */ swc1 $f0, 0x480($sp) -/* 07C6BC 7F047B4C 8E2B0008 */ lw $t3, 8($s1) -/* 07C6C0 7F047B50 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff -/* 07C6C4 7F047B54 C7A40480 */ lwc1 $f4, 0x480($sp) -/* 07C6C8 7F047B58 000B7080 */ sll $t6, $t3, 2 -/* 07C6CC 7F047B5C 05C10018 */ bgez $t6, .Ljp7F047BC0 -/* 07C6D0 7F047B60 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 07C6D4 7F047B64 8E2C0008 */ lw $t4, 8($s1) -/* 07C6D8 7F047B68 E62400A0 */ swc1 $f4, 0xa0($s1) -/* 07C6DC 7F047B6C 02202025 */ move $a0, $s1 -/* 07C6E0 7F047B70 01815024 */ and $t2, $t4, $at -/* 07C6E4 7F047B74 0FC113C3 */ jal sub_GAME_7F044B38 -/* 07C6E8 7F047B78 AE2A0008 */ sw $t2, 8($s1) -/* 07C6EC 7F047B7C 10000011 */ b .Ljp7F047BC4 -/* 07C6F0 7F047B80 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07C6F4 7F047B84 8E2F0008 */ lw $t7, 8($s1) -.Ljp7F047B88: -/* 07C6F8 7F047B88 000F6880 */ sll $t5, $t7, 2 -/* 07C6FC 7F047B8C 05A3000D */ bgezl $t5, .Ljp7F047BC4 -/* 07C700 7F047B90 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07C704 7F047B94 C62C0038 */ lwc1 $f12, 0x38($s1) -/* 07C708 7F047B98 0FC16BD4 */ jal convert_angle_using_inverse -/* 07C70C 7F047B9C C62E0040 */ lwc1 $f14, 0x40($s1) -/* 07C710 7F047BA0 8E390008 */ lw $t9, 8($s1) -/* 07C714 7F047BA4 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff -/* 07C718 7F047BA8 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 07C71C 7F047BAC 0321C024 */ and $t8, $t9, $at -/* 07C720 7F047BB0 E62000A0 */ swc1 $f0, 0xa0($s1) -/* 07C724 7F047BB4 AE380008 */ sw $t8, 8($s1) -/* 07C728 7F047BB8 0FC113C3 */ jal sub_GAME_7F044B38 -/* 07C72C 7F047BBC 02202025 */ move $a0, $s1 -.Ljp7F047BC0: -/* 07C730 7F047BC0 C6260088 */ lwc1 $f6, 0x88($s1) -.Ljp7F047BC4: -/* 07C734 7F047BC4 4606B03C */ c.lt.s $f22, $f6 -/* 07C738 7F047BC8 00000000 */ nop -/* 07C73C 7F047BCC 450201AC */ bc1fl .Ljp7F048280 -/* 07C740 7F047BD0 8E2A0008 */ lw $t2, 8($s1) -/* 07C744 7F047BD4 8E680014 */ lw $t0, 0x14($s3) -/* 07C748 7F047BD8 8FA9047C */ lw $t1, 0x47c($sp) -/* 07C74C 7F047BDC 4600B386 */ mov.s $f14, $f22 -/* 07C750 7F047BE0 AFA8046C */ sw $t0, 0x46c($sp) -/* 07C754 7F047BE4 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C758 7F047BE8 E7AC043C */ swc1 $f12, 0x43c($sp) -/* 07C75C 7F047BEC C62A009C */ lwc1 $f10, 0x9c($s1) -/* 07C760 7F047BF0 11200013 */ beqz $t1, .Ljp7F047C40 -/* 07C764 7F047BF4 E7AA0438 */ swc1 $f10, 0x438($sp) -/* 07C768 7F047BF8 262B0058 */ addiu $t3, $s1, 0x58 -/* 07C76C 7F047BFC AFAB0074 */ sw $t3, 0x74($sp) -/* 07C770 7F047C00 0FC160F3 */ jal sinf -/* 07C774 7F047C04 E7AE0434 */ swc1 $f14, 0x434($sp) -/* 07C778 7F047C08 E7A00440 */ swc1 $f0, 0x440($sp) -/* 07C77C 7F047C0C E7B60444 */ swc1 $f22, 0x444($sp) -/* 07C780 7F047C10 0FC160F0 */ jal cosf -/* 07C784 7F047C14 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C788 7F047C18 E7A00448 */ swc1 $f0, 0x448($sp) -/* 07C78C 7F047C1C 8FA40074 */ lw $a0, 0x74($sp) -/* 07C790 7F047C20 27A50440 */ addiu $a1, $sp, 0x440 -/* 07C794 7F047C24 8FA6047C */ lw $a2, 0x47c($sp) -/* 07C798 7F047C28 0FC0BFCD */ jal sub_GAME_7F02FC34 -/* 07C79C 7F047C2C 3C074120 */ lui $a3, 0x4120 -/* 07C7A0 7F047C30 10400003 */ beqz $v0, .Ljp7F047C40 -/* 07C7A4 7F047C34 C7AE0434 */ lwc1 $f14, 0x434($sp) -/* 07C7A8 7F047C38 C62800A0 */ lwc1 $f8, 0xa0($s1) -/* 07C7AC 7F047C3C E7A80480 */ swc1 $f8, 0x480($sp) -.Ljp7F047C40: -/* 07C7B0 7F047C40 3C018005 */ lui $at, %hi(D_80052B4C) # $at, 0x8005 -/* 07C7B4 7F047C44 C4242B7C */ lwc1 $f4, %lo(D_80052B4C)($at) -/* 07C7B8 7F047C48 3C018005 */ lui $at, %hi(D_80052B50) # $at, 0x8005 -/* 07C7BC 7F047C4C C4262B80 */ lwc1 $f6, %lo(D_80052B50)($at) -/* 07C7C0 7F047C50 3C0738E4 */ lui $a3, (0x38E4C389 >> 16) # lui $a3, 0x38e4 -/* 07C7C4 7F047C54 34E7C389 */ ori $a3, (0x38E4C389 & 0xFFFF) # ori $a3, $a3, 0xc389 -/* 07C7C8 7F047C58 262400A0 */ addiu $a0, $s1, 0xa0 -/* 07C7CC 7F047C5C 8FA50480 */ lw $a1, 0x480($sp) -/* 07C7D0 7F047C60 2626009C */ addiu $a2, $s1, 0x9c -/* 07C7D4 7F047C64 E7AE0434 */ swc1 $f14, 0x434($sp) -/* 07C7D8 7F047C68 E7A40010 */ swc1 $f4, 0x10($sp) -/* 07C7DC 7F047C6C 0FC10D03 */ jal sub_GAME_7F04310C -/* 07C7E0 7F047C70 E7A60014 */ swc1 $f6, 0x14($sp) -/* 07C7E4 7F047C74 3C018005 */ lui $at, %hi(D_80052B54) # $at, 0x8005 -/* 07C7E8 7F047C78 C4342B84 */ lwc1 $f20, %lo(D_80052B54)($at) -/* 07C7EC 7F047C7C C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C7F0 7F047C80 C7AE0434 */ lwc1 $f14, 0x434($sp) -/* 07C7F4 7F047C84 3C018005 */ lui $at, %hi(D_80052B58) # $at, 0x8005 -/* 07C7F8 7F047C88 460CA03E */ c.le.s $f20, $f12 -/* 07C7FC 7F047C8C 00000000 */ nop -/* 07C800 7F047C90 45020009 */ bc1fl .Ljp7F047CB8 -/* 07C804 7F047C94 4616603C */ c.lt.s $f12, $f22 -/* 07C808 7F047C98 46146281 */ sub.s $f10, $f12, $f20 -.Ljp7F047C9C: -/* 07C80C 7F047C9C E62A00A0 */ swc1 $f10, 0xa0($s1) -/* 07C810 7F047CA0 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C814 7F047CA4 460CA03E */ c.le.s $f20, $f12 -/* 07C818 7F047CA8 00000000 */ nop -/* 07C81C 7F047CAC 4503FFFB */ bc1tl .Ljp7F047C9C -/* 07C820 7F047CB0 46146281 */ sub.s $f10, $f12, $f20 -/* 07C824 7F047CB4 4616603C */ c.lt.s $f12, $f22 -.Ljp7F047CB8: -/* 07C828 7F047CB8 00000000 */ nop -/* 07C82C 7F047CBC 45020009 */ bc1fl .Ljp7F047CE4 -/* 07C830 7F047CC0 C7A40480 */ lwc1 $f4, 0x480($sp) -/* 07C834 7F047CC4 46146200 */ add.s $f8, $f12, $f20 -.Ljp7F047CC8: -/* 07C838 7F047CC8 E62800A0 */ swc1 $f8, 0xa0($s1) -/* 07C83C 7F047CCC C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C840 7F047CD0 4616603C */ c.lt.s $f12, $f22 -/* 07C844 7F047CD4 00000000 */ nop -/* 07C848 7F047CD8 4503FFFB */ bc1tl .Ljp7F047CC8 -/* 07C84C 7F047CDC 46146200 */ add.s $f8, $f12, $f20 -/* 07C850 7F047CE0 C7A40480 */ lwc1 $f4, 0x480($sp) -.Ljp7F047CE4: -/* 07C854 7F047CE4 460C2032 */ c.eq.s $f4, $f12 -/* 07C858 7F047CE8 00000000 */ nop -/* 07C85C 7F047CEC 4502000F */ bc1fl .Ljp7F047D2C -/* 07C860 7F047CF0 8E8E0008 */ lw $t6, 8($s4) -/* 07C864 7F047CF4 C620009C */ lwc1 $f0, 0x9c($s1) -/* 07C868 7F047CF8 C4262B88 */ lwc1 $f6, %lo(D_80052B58)($at) -/* 07C86C 7F047CFC 3C018005 */ lui $at, %hi(D_80052B5C) # $at, 0x8005 -/* 07C870 7F047D00 4606003E */ c.le.s $f0, $f6 -/* 07C874 7F047D04 00000000 */ nop -/* 07C878 7F047D08 45020008 */ bc1fl .Ljp7F047D2C -/* 07C87C 7F047D0C 8E8E0008 */ lw $t6, 8($s4) -/* 07C880 7F047D10 C42A2B8C */ lwc1 $f10, %lo(D_80052B5C)($at) -/* 07C884 7F047D14 4600503E */ c.le.s $f10, $f0 -/* 07C888 7F047D18 00000000 */ nop -/* 07C88C 7F047D1C 45020003 */ bc1fl .Ljp7F047D2C -/* 07C890 7F047D20 8E8E0008 */ lw $t6, 8($s4) -/* 07C894 7F047D24 E636009C */ swc1 $f22, 0x9c($s1) -/* 07C898 7F047D28 8E8E0008 */ lw $t6, 8($s4) -.Ljp7F047D2C: -/* 07C89C 7F047D2C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07C8A0 7F047D30 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07C8A4 7F047D34 8DCC0008 */ lw $t4, 8($t6) -/* 07C8A8 7F047D38 C7A4043C */ lwc1 $f4, 0x43c($sp) -/* 07C8AC 7F047D3C 4602B03C */ c.lt.s $f22, $f2 -/* 07C8B0 7F047D40 8D8A000C */ lw $t2, 0xc($t4) -/* 07C8B4 7F047D44 45000004 */ bc1f .Ljp7F047D58 -/* 07C8B8 7F047D48 8D500004 */ lw $s0, 4($t2) -/* 07C8BC 7F047D4C C62800A0 */ lwc1 $f8, 0xa0($s1) -/* 07C8C0 7F047D50 46044181 */ sub.s $f6, $f8, $f4 -/* 07C8C4 7F047D54 46023383 */ div.s $f14, $f6, $f2 -.Ljp7F047D58: -/* 07C8C8 7F047D58 4616703C */ c.lt.s $f14, $f22 -/* 07C8CC 7F047D5C 00000000 */ nop -/* 07C8D0 7F047D60 45000002 */ bc1f .Ljp7F047D6C -/* 07C8D4 7F047D64 00000000 */ nop -/* 07C8D8 7F047D68 46147380 */ add.s $f14, $f14, $f20 -.Ljp7F047D6C: -/* 07C8DC 7F047D6C 0FC160F3 */ jal sinf -/* 07C8E0 7F047D70 46007306 */ mov.s $f12, $f14 -/* 07C8E4 7F047D74 C60A0008 */ lwc1 $f10, 8($s0) -/* 07C8E8 7F047D78 C6880014 */ lwc1 $f8, 0x14($s4) -/* 07C8EC 7F047D7C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07C8F0 7F047D80 46085102 */ mul.s $f4, $f10, $f8 -/* 07C8F4 7F047D84 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07C8F8 7F047D88 46040182 */ mul.s $f6, $f0, $f4 -/* 07C8FC 7F047D8C 00000000 */ nop -/* 07C900 7F047D90 460A3202 */ mul.s $f8, $f6, $f10 -/* 07C904 7F047D94 E7A80464 */ swc1 $f8, 0x464($sp) -/* 07C908 7F047D98 0FC160F3 */ jal sinf -/* 07C90C 7F047D9C C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C910 7F047DA0 E7A00440 */ swc1 $f0, 0x440($sp) -/* 07C914 7F047DA4 E7B60444 */ swc1 $f22, 0x444($sp) -/* 07C918 7F047DA8 0FC160F0 */ jal cosf -/* 07C91C 7F047DAC C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07C920 7F047DB0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07C924 7F047DB4 44817000 */ mtc1 $at, $f14 -/* 07C928 7F047DB8 E7A00448 */ swc1 $f0, 0x448($sp) -/* 07C92C 7F047DBC 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07C930 7F047DC0 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07C934 7F047DC4 C6240088 */ lwc1 $f4, 0x88($s1) -/* 07C938 7F047DC8 C7AA0440 */ lwc1 $f10, 0x440($sp) -/* 07C93C 7F047DCC C7AC0464 */ lwc1 $f12, 0x464($sp) -/* 07C940 7F047DD0 46022182 */ mul.s $f6, $f4, $f2 -/* 07C944 7F047DD4 C6240058 */ lwc1 $f4, 0x58($s1) -/* 07C948 7F047DD8 27B0046C */ addiu $s0, $sp, 0x46c -/* 07C94C 7F047DDC 240F001F */ li $t7, 31 -/* 07C950 7F047DE0 02002025 */ move $a0, $s0 -/* 07C954 7F047DE4 460A3202 */ mul.s $f8, $f6, $f10 -/* 07C958 7F047DE8 46082180 */ add.s $f6, $f4, $f8 -/* 07C95C 7F047DEC C7A40448 */ lwc1 $f4, 0x448($sp) -/* 07C960 7F047DF0 460C2202 */ mul.s $f8, $f4, $f12 -/* 07C964 7F047DF4 46083181 */ sub.s $f6, $f6, $f8 -/* 07C968 7F047DF8 E7A6069C */ swc1 $f6, 0x69c($sp) -/* 07C96C 7F047DFC C628005C */ lwc1 $f8, 0x5c($s1) -/* 07C970 7F047E00 44073000 */ mfc1 $a3, $f6 -/* 07C974 7F047E04 E7A806A0 */ swc1 $f8, 0x6a0($sp) -/* 07C978 7F047E08 C6280088 */ lwc1 $f8, 0x88($s1) -/* 07C97C 7F047E0C 46024202 */ mul.s $f8, $f8, $f2 -/* 07C980 7F047E10 00000000 */ nop -/* 07C984 7F047E14 46044202 */ mul.s $f8, $f8, $f4 -/* 07C988 7F047E18 C6240060 */ lwc1 $f4, 0x60($s1) -/* 07C98C 7F047E1C 46082100 */ add.s $f4, $f4, $f8 -/* 07C990 7F047E20 460C5202 */ mul.s $f8, $f10, $f12 -/* 07C994 7F047E24 46044280 */ add.s $f10, $f8, $f4 -/* 07C998 7F047E28 E7AA06A4 */ swc1 $f10, 0x6a4($sp) -/* 07C99C 7F047E2C 8E660010 */ lw $a2, 0x10($s3) -/* 07C9A0 7F047E30 8E650008 */ lw $a1, 8($s3) -/* 07C9A4 7F047E34 E7B60020 */ swc1 $f22, 0x20($sp) -/* 07C9A8 7F047E38 E7B60018 */ swc1 $f22, 0x18($sp) -/* 07C9AC 7F047E3C AFAF0014 */ sw $t7, 0x14($sp) -/* 07C9B0 7F047E40 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07C9B4 7F047E44 E7AE0024 */ swc1 $f14, 0x24($sp) -/* 07C9B8 7F047E48 0FC2C675 */ jal sub_GAME_7F0B0E24 -/* 07C9BC 7F047E4C E7AE001C */ swc1 $f14, 0x1c($sp) -/* 07C9C0 7F047E50 104000FA */ beqz $v0, .Ljp7F04823C -/* 07C9C4 7F047E54 02002025 */ move $a0, $s0 -/* 07C9C8 7F047E58 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07C9CC 7F047E5C 44814000 */ mtc1 $at, $f8 -/* 07C9D0 7F047E60 240D001F */ li $t5, 31 -/* 07C9D4 7F047E64 AFAD0010 */ sw $t5, 0x10($sp) -/* 07C9D8 7F047E68 8FA5069C */ lw $a1, 0x69c($sp) -/* 07C9DC 7F047E6C 8FA606A4 */ lw $a2, 0x6a4($sp) -/* 07C9E0 7F047E70 3C074120 */ lui $a3, 0x4120 -/* 07C9E4 7F047E74 E7B60014 */ swc1 $f22, 0x14($sp) -/* 07C9E8 7F047E78 0FC2C91A */ jal sub_GAME_7F0B18B8 -/* 07C9EC 7F047E7C E7A80018 */ swc1 $f8, 0x18($sp) -/* 07C9F0 7F047E80 044300EF */ bgezl $v0, .Ljp7F048240 -/* 07C9F4 7F047E84 C6260098 */ lwc1 $f6, 0x98($s1) -/* 07C9F8 7F047E88 8E790014 */ lw $t9, 0x14($s3) -/* 07C9FC 7F047E8C 8FB8046C */ lw $t8, 0x46c($sp) -/* 07CA00 7F047E90 02202025 */ move $a0, $s1 -/* 07CA04 7F047E94 AFB90450 */ sw $t9, 0x450($sp) -/* 07CA08 7F047E98 C6640008 */ lwc1 $f4, 8($s3) -/* 07CA0C 7F047E9C E7A40454 */ swc1 $f4, 0x454($sp) -/* 07CA10 7F047EA0 C666000C */ lwc1 $f6, 0xc($s3) -/* 07CA14 7F047EA4 E7A60458 */ swc1 $f6, 0x458($sp) -/* 07CA18 7F047EA8 C66A0010 */ lwc1 $f10, 0x10($s3) -/* 07CA1C 7F047EAC E7AA045C */ swc1 $f10, 0x45c($sp) -/* 07CA20 7F047EB0 AE780014 */ sw $t8, 0x14($s3) -/* 07CA24 7F047EB4 C7A2069C */ lwc1 $f2, 0x69c($sp) -/* 07CA28 7F047EB8 E6620008 */ swc1 $f2, 8($s3) -/* 07CA2C 7F047EBC E6220058 */ swc1 $f2, 0x58($s1) -/* 07CA30 7F047EC0 C7A206A4 */ lwc1 $f2, 0x6a4($sp) -/* 07CA34 7F047EC4 E6620010 */ swc1 $f2, 0x10($s3) -/* 07CA38 7F047EC8 0FC101E1 */ jal sub_GAME_7F040484 -/* 07CA3C 7F047ECC E6220060 */ swc1 $f2, 0x60($s1) -/* 07CA40 7F047ED0 0FC15C68 */ jal sub_GAME_7F056CA0 -/* 07CA44 7F047ED4 02202025 */ move $a0, $s1 -/* 07CA48 7F047ED8 0FC1131F */ jal sub_GAME_7F0448A8 -/* 07CA4C 7F047EDC 02602025 */ move $a0, $s3 -/* 07CA50 7F047EE0 10400092 */ beqz $v0, .Ljp7F04812C -/* 07CA54 7F047EE4 00409025 */ move $s2, $v0 -/* 07CA58 7F047EE8 8E880008 */ lw $t0, 8($s4) -/* 07CA5C 7F047EEC C6280018 */ lwc1 $f8, 0x18($s1) -/* 07CA60 7F047EF0 02002025 */ move $a0, $s0 -/* 07CA64 7F047EF4 8D090008 */ lw $t1, 8($t0) -/* 07CA68 7F047EF8 8D2B0028 */ lw $t3, 0x28($t1) -/* 07CA6C 7F047EFC 8D620004 */ lw $v0, 4($t3) -/* 07CA70 7F047F00 C4440004 */ lwc1 $f4, 4($v0) -/* 07CA74 7F047F04 46044182 */ mul.s $f6, $f8, $f4 -/* 07CA78 7F047F08 E7A60428 */ swc1 $f6, 0x428($sp) -/* 07CA7C 7F047F0C C62A0020 */ lwc1 $f10, 0x20($s1) -/* 07CA80 7F047F10 C4480004 */ lwc1 $f8, 4($v0) -/* 07CA84 7F047F14 46085102 */ mul.s $f4, $f10, $f8 -/* 07CA88 7F047F18 E7A40430 */ swc1 $f4, 0x430($sp) -/* 07CA8C 7F047F1C C6260018 */ lwc1 $f6, 0x18($s1) -/* 07CA90 7F047F20 C44A0008 */ lwc1 $f10, 8($v0) -/* 07CA94 7F047F24 460A3202 */ mul.s $f8, $f6, $f10 -/* 07CA98 7F047F28 E7A8041C */ swc1 $f8, 0x41c($sp) -/* 07CA9C 7F047F2C C6240020 */ lwc1 $f4, 0x20($s1) -/* 07CAA0 7F047F30 C4460008 */ lwc1 $f6, 8($v0) -/* 07CAA4 7F047F34 46062282 */ mul.s $f10, $f4, $f6 -/* 07CAA8 7F047F38 E7AA0424 */ swc1 $f10, 0x424($sp) -/* 07CAAC 7F047F3C C6280038 */ lwc1 $f8, 0x38($s1) -/* 07CAB0 7F047F40 C4440014 */ lwc1 $f4, 0x14($v0) -/* 07CAB4 7F047F44 46044182 */ mul.s $f6, $f8, $f4 -/* 07CAB8 7F047F48 E7A60410 */ swc1 $f6, 0x410($sp) -/* 07CABC 7F047F4C C62A0040 */ lwc1 $f10, 0x40($s1) -/* 07CAC0 7F047F50 C4480014 */ lwc1 $f8, 0x14($v0) -/* 07CAC4 7F047F54 46085102 */ mul.s $f4, $f10, $f8 -/* 07CAC8 7F047F58 E7A40418 */ swc1 $f4, 0x418($sp) -/* 07CACC 7F047F5C C6260038 */ lwc1 $f6, 0x38($s1) -/* 07CAD0 7F047F60 C44A0018 */ lwc1 $f10, 0x18($v0) -/* 07CAD4 7F047F64 460A3202 */ mul.s $f8, $f6, $f10 -/* 07CAD8 7F047F68 E7A80404 */ swc1 $f8, 0x404($sp) -/* 07CADC 7F047F6C C6240040 */ lwc1 $f4, 0x40($s1) -/* 07CAE0 7F047F70 C4460018 */ lwc1 $f6, 0x18($v0) -/* 07CAE4 7F047F74 C7A80410 */ lwc1 $f8, 0x410($sp) -/* 07CAE8 7F047F78 46062282 */ mul.s $f10, $f4, $f6 -/* 07CAEC 7F047F7C C7A40428 */ lwc1 $f4, 0x428($sp) -/* 07CAF0 7F047F80 E7AA040C */ swc1 $f10, 0x40c($sp) -/* 07CAF4 7F047F84 8E6E0014 */ lw $t6, 0x14($s3) -/* 07CAF8 7F047F88 AFAE046C */ sw $t6, 0x46c($sp) -/* 07CAFC 7F047F8C C6600008 */ lwc1 $f0, 8($s3) -/* 07CB00 7F047F90 C6620010 */ lwc1 $f2, 0x10($s3) -/* 07CB04 7F047F94 46040180 */ add.s $f6, $f0, $f4 -/* 07CB08 7F047F98 C7A40418 */ lwc1 $f4, 0x418($sp) -/* 07CB0C 7F047F9C 44050000 */ mfc1 $a1, $f0 -/* 07CB10 7F047FA0 44061000 */ mfc1 $a2, $f2 -/* 07CB14 7F047FA4 46064280 */ add.s $f10, $f8, $f6 -/* 07CB18 7F047FA8 C7A80430 */ lwc1 $f8, 0x430($sp) -/* 07CB1C 7F047FAC 46081180 */ add.s $f6, $f2, $f8 -/* 07CB20 7F047FB0 44075000 */ mfc1 $a3, $f10 -/* 07CB24 7F047FB4 46062280 */ add.s $f10, $f4, $f6 -/* 07CB28 7F047FB8 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 -/* 07CB2C 7F047FBC E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07CB30 7F047FC0 10400059 */ beqz $v0, .Ljp7F048128 -/* 07CB34 7F047FC4 C7A40428 */ lwc1 $f4, 0x428($sp) -/* 07CB38 7F047FC8 C6600008 */ lwc1 $f0, 8($s3) -/* 07CB3C 7F047FCC C7A80410 */ lwc1 $f8, 0x410($sp) -/* 07CB40 7F047FD0 C6620010 */ lwc1 $f2, 0x10($s3) -/* 07CB44 7F047FD4 46040180 */ add.s $f6, $f0, $f4 -/* 07CB48 7F047FD8 C7A40418 */ lwc1 $f4, 0x418($sp) -/* 07CB4C 7F047FDC 02002025 */ move $a0, $s0 -/* 07CB50 7F047FE0 46064280 */ add.s $f10, $f8, $f6 -/* 07CB54 7F047FE4 C7A60430 */ lwc1 $f6, 0x430($sp) -/* 07CB58 7F047FE8 44055000 */ mfc1 $a1, $f10 -/* 07CB5C 7F047FEC 46061280 */ add.s $f10, $f2, $f6 -/* 07CB60 7F047FF0 460A2180 */ add.s $f6, $f4, $f10 -/* 07CB64 7F047FF4 C7AA041C */ lwc1 $f10, 0x41c($sp) -/* 07CB68 7F047FF8 44063000 */ mfc1 $a2, $f6 -/* 07CB6C 7F047FFC 460A0180 */ add.s $f6, $f0, $f10 -/* 07CB70 7F048000 46064280 */ add.s $f10, $f8, $f6 -/* 07CB74 7F048004 C7A80424 */ lwc1 $f8, 0x424($sp) -/* 07CB78 7F048008 46081180 */ add.s $f6, $f2, $f8 -/* 07CB7C 7F04800C 44075000 */ mfc1 $a3, $f10 -/* 07CB80 7F048010 46062280 */ add.s $f10, $f4, $f6 -/* 07CB84 7F048014 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 -/* 07CB88 7F048018 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07CB8C 7F04801C 10400042 */ beqz $v0, .Ljp7F048128 -/* 07CB90 7F048020 C7A4041C */ lwc1 $f4, 0x41c($sp) -/* 07CB94 7F048024 C6680008 */ lwc1 $f8, 8($s3) -/* 07CB98 7F048028 C7A60410 */ lwc1 $f6, 0x410($sp) -/* 07CB9C 7F04802C 02002025 */ move $a0, $s0 -/* 07CBA0 7F048030 46044000 */ add.s $f0, $f8, $f4 -/* 07CBA4 7F048034 C7A40424 */ lwc1 $f4, 0x424($sp) -/* 07CBA8 7F048038 C6680010 */ lwc1 $f8, 0x10($s3) -/* 07CBAC 7F04803C 46003280 */ add.s $f10, $f6, $f0 -/* 07CBB0 7F048040 C7A60418 */ lwc1 $f6, 0x418($sp) -/* 07CBB4 7F048044 46044080 */ add.s $f2, $f8, $f4 -/* 07CBB8 7F048048 44055000 */ mfc1 $a1, $f10 -/* 07CBBC 7F04804C C7A80404 */ lwc1 $f8, 0x404($sp) -/* 07CBC0 7F048050 46023280 */ add.s $f10, $f6, $f2 -/* 07CBC4 7F048054 C7A6040C */ lwc1 $f6, 0x40c($sp) -/* 07CBC8 7F048058 46004100 */ add.s $f4, $f8, $f0 -/* 07CBCC 7F04805C 44065000 */ mfc1 $a2, $f10 -/* 07CBD0 7F048060 46023280 */ add.s $f10, $f6, $f2 -/* 07CBD4 7F048064 44072000 */ mfc1 $a3, $f4 -/* 07CBD8 7F048068 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 -/* 07CBDC 7F04806C E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07CBE0 7F048070 1040002D */ beqz $v0, .Ljp7F048128 -/* 07CBE4 7F048074 C7A4041C */ lwc1 $f4, 0x41c($sp) -/* 07CBE8 7F048078 C6600008 */ lwc1 $f0, 8($s3) -/* 07CBEC 7F04807C C7A80404 */ lwc1 $f8, 0x404($sp) -/* 07CBF0 7F048080 C6620010 */ lwc1 $f2, 0x10($s3) -/* 07CBF4 7F048084 46040180 */ add.s $f6, $f0, $f4 -/* 07CBF8 7F048088 C7A4040C */ lwc1 $f4, 0x40c($sp) -/* 07CBFC 7F04808C 02002025 */ move $a0, $s0 -/* 07CC00 7F048090 46064280 */ add.s $f10, $f8, $f6 -/* 07CC04 7F048094 C7A60424 */ lwc1 $f6, 0x424($sp) -/* 07CC08 7F048098 44055000 */ mfc1 $a1, $f10 -/* 07CC0C 7F04809C 46061280 */ add.s $f10, $f2, $f6 -/* 07CC10 7F0480A0 460A2180 */ add.s $f6, $f4, $f10 -/* 07CC14 7F0480A4 C7AA0428 */ lwc1 $f10, 0x428($sp) -/* 07CC18 7F0480A8 44063000 */ mfc1 $a2, $f6 -/* 07CC1C 7F0480AC 460A0180 */ add.s $f6, $f0, $f10 -/* 07CC20 7F0480B0 46064280 */ add.s $f10, $f8, $f6 -/* 07CC24 7F0480B4 C7A80430 */ lwc1 $f8, 0x430($sp) -/* 07CC28 7F0480B8 46081180 */ add.s $f6, $f2, $f8 -/* 07CC2C 7F0480BC 44075000 */ mfc1 $a3, $f10 -/* 07CC30 7F0480C0 46062280 */ add.s $f10, $f4, $f6 -/* 07CC34 7F0480C4 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 -/* 07CC38 7F0480C8 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07CC3C 7F0480CC 10400016 */ beqz $v0, .Ljp7F048128 -/* 07CC40 7F0480D0 C7A40428 */ lwc1 $f4, 0x428($sp) -/* 07CC44 7F0480D4 C6680008 */ lwc1 $f8, 8($s3) -/* 07CC48 7F0480D8 C7A60404 */ lwc1 $f6, 0x404($sp) -/* 07CC4C 7F0480DC 02002025 */ move $a0, $s0 -/* 07CC50 7F0480E0 46044000 */ add.s $f0, $f8, $f4 -/* 07CC54 7F0480E4 C7A40430 */ lwc1 $f4, 0x430($sp) -/* 07CC58 7F0480E8 C6680010 */ lwc1 $f8, 0x10($s3) -/* 07CC5C 7F0480EC 46003280 */ add.s $f10, $f6, $f0 -/* 07CC60 7F0480F0 C7A6040C */ lwc1 $f6, 0x40c($sp) -/* 07CC64 7F0480F4 46044080 */ add.s $f2, $f8, $f4 -/* 07CC68 7F0480F8 44055000 */ mfc1 $a1, $f10 -/* 07CC6C 7F0480FC C7A80410 */ lwc1 $f8, 0x410($sp) -/* 07CC70 7F048100 46023280 */ add.s $f10, $f6, $f2 -/* 07CC74 7F048104 C7A60418 */ lwc1 $f6, 0x418($sp) -/* 07CC78 7F048108 46004100 */ add.s $f4, $f8, $f0 -/* 07CC7C 7F04810C 44065000 */ mfc1 $a2, $f10 -/* 07CC80 7F048110 46023280 */ add.s $f10, $f6, $f2 -/* 07CC84 7F048114 44072000 */ mfc1 $a3, $f4 -/* 07CC88 7F048118 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 -/* 07CC8C 7F04811C E7AA0010 */ swc1 $f10, 0x10($sp) -/* 07CC90 7F048120 14400002 */ bnez $v0, .Ljp7F04812C -/* 07CC94 7F048124 00000000 */ nop -.Ljp7F048128: -/* 07CC98 7F048128 00009025 */ move $s2, $zero -.Ljp7F04812C: -/* 07CC9C 7F04812C 12400023 */ beqz $s2, .Ljp7F0481BC -/* 07CCA0 7F048130 02202025 */ move $a0, $s1 -/* 07CCA4 7F048134 262C0058 */ addiu $t4, $s1, 0x58 -/* 07CCA8 7F048138 AFAC0074 */ sw $t4, 0x74($sp) -/* 07CCAC 7F04813C 0FC113C3 */ jal sub_GAME_7F044B38 -/* 07CCB0 7F048140 2630007C */ addiu $s0, $s1, 0x7c -/* 07CCB4 7F048144 02602025 */ move $a0, $s3 -/* 07CCB8 7F048148 0FC1016D */ jal sub_GAME_7F0402B4 -/* 07CCBC 7F04814C 02002825 */ move $a1, $s0 -/* 07CCC0 7F048150 0FC14832 */ jal detonate_proxmine_In_range -/* 07CCC4 7F048154 8FA40074 */ lw $a0, 0x74($sp) -/* 07CCC8 7F048158 8FAA047C */ lw $t2, 0x47c($sp) -/* 07CCCC 7F04815C 27A40454 */ addiu $a0, $sp, 0x454 -/* 07CCD0 7F048160 27A5069C */ addiu $a1, $sp, 0x69c -/* 07CCD4 7F048164 11400054 */ beqz $t2, .Ljp7F0482B8 -/* 07CCD8 7F048168 01403025 */ move $a2, $t2 -/* 07CCDC 7F04816C 0FC0C014 */ jal sub_GAME_7F02FD50 -/* 07CCE0 7F048170 3C0742C8 */ lui $a3, 0x42c8 -/* 07CCE4 7F048174 10400050 */ beqz $v0, .Ljp7F0482B8 -/* 07CCE8 7F048178 00000000 */ nop -/* 07CCEC 7F04817C 8E2F00A8 */ lw $t7, 0xa8($s1) -/* 07CCF0 7F048180 8E3900A4 */ lw $t9, 0xa4($s1) -/* 07CCF4 7F048184 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 07CCF8 7F048188 25ED0001 */ addiu $t5, $t7, 1 -/* 07CCFC 7F04818C AE2D00A8 */ sw $t5, 0xa8($s1) -/* 07CD00 7F048190 8F380000 */ lw $t8, ($t9) -/* 07CD04 7F048194 000D4880 */ sll $t1, $t5, 2 -/* 07CD08 7F048198 03095821 */ addu $t3, $t8, $t1 -/* 07CD0C 7F04819C 8D6E0000 */ lw $t6, ($t3) -/* 07CD10 7F0481A0 05C10045 */ bgez $t6, .Ljp7F0482B8 -/* 07CD14 7F0481A4 00000000 */ nop -/* 07CD18 7F0481A8 44814000 */ mtc1 $at, $f8 -/* 07CD1C 7F0481AC AE2000A4 */ sw $zero, 0xa4($s1) -/* 07CD20 7F0481B0 E6360094 */ swc1 $f22, 0x94($s1) -/* 07CD24 7F0481B4 10000040 */ b .Ljp7F0482B8 -/* 07CD28 7F0481B8 E6280098 */ swc1 $f8, 0x98($s1) -.Ljp7F0481BC: -/* 07CD2C 7F0481BC C6240098 */ lwc1 $f4, 0x98($s1) -/* 07CD30 7F0481C0 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 07CD34 7F0481C4 4616203C */ c.lt.s $f4, $f22 -/* 07CD38 7F0481C8 00000000 */ nop -/* 07CD3C 7F0481CC 45020006 */ bc1fl .Ljp7F0481E8 -/* 07CD40 7F0481D0 E6360088 */ swc1 $f22, 0x88($s1) -/* 07CD44 7F0481D4 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07CD48 7F0481D8 44815000 */ mtc1 $at, $f10 -/* 07CD4C 7F0481DC E6260094 */ swc1 $f6, 0x94($s1) -/* 07CD50 7F0481E0 E62A0098 */ swc1 $f10, 0x98($s1) -/* 07CD54 7F0481E4 E6360088 */ swc1 $f22, 0x88($s1) -.Ljp7F0481E8: -/* 07CD58 7F0481E8 C7A8043C */ lwc1 $f8, 0x43c($sp) -/* 07CD5C 7F0481EC 02202025 */ move $a0, $s1 -/* 07CD60 7F0481F0 E62800A0 */ swc1 $f8, 0xa0($s1) -/* 07CD64 7F0481F4 C7A40438 */ lwc1 $f4, 0x438($sp) -/* 07CD68 7F0481F8 E624009C */ swc1 $f4, 0x9c($s1) -/* 07CD6C 7F0481FC 8FAC0450 */ lw $t4, 0x450($sp) -/* 07CD70 7F048200 AE6C0014 */ sw $t4, 0x14($s3) -/* 07CD74 7F048204 C7A20454 */ lwc1 $f2, 0x454($sp) -/* 07CD78 7F048208 E6620008 */ swc1 $f2, 8($s3) -/* 07CD7C 7F04820C E6220058 */ swc1 $f2, 0x58($s1) -/* 07CD80 7F048210 C7A20458 */ lwc1 $f2, 0x458($sp) -/* 07CD84 7F048214 E662000C */ swc1 $f2, 0xc($s3) -/* 07CD88 7F048218 E622005C */ swc1 $f2, 0x5c($s1) -/* 07CD8C 7F04821C C7A2045C */ lwc1 $f2, 0x45c($sp) -/* 07CD90 7F048220 E6620010 */ swc1 $f2, 0x10($s3) -/* 07CD94 7F048224 0FC101E1 */ jal sub_GAME_7F040484 -/* 07CD98 7F048228 E6220060 */ swc1 $f2, 0x60($s1) -/* 07CD9C 7F04822C 0FC15C68 */ jal sub_GAME_7F056CA0 -/* 07CDA0 7F048230 02202025 */ move $a0, $s1 -/* 07CDA4 7F048234 10000020 */ b .Ljp7F0482B8 -/* 07CDA8 7F048238 00000000 */ nop -.Ljp7F04823C: -/* 07CDAC 7F04823C C6260098 */ lwc1 $f6, 0x98($s1) -.Ljp7F048240: -/* 07CDB0 7F048240 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 07CDB4 7F048244 4616303C */ c.lt.s $f6, $f22 -/* 07CDB8 7F048248 00000000 */ nop -/* 07CDBC 7F04824C 45020006 */ bc1fl .Ljp7F048268 -/* 07CDC0 7F048250 E6360088 */ swc1 $f22, 0x88($s1) -/* 07CDC4 7F048254 C62A0088 */ lwc1 $f10, 0x88($s1) -/* 07CDC8 7F048258 44814000 */ mtc1 $at, $f8 -/* 07CDCC 7F04825C E62A0094 */ swc1 $f10, 0x94($s1) -/* 07CDD0 7F048260 E6280098 */ swc1 $f8, 0x98($s1) -/* 07CDD4 7F048264 E6360088 */ swc1 $f22, 0x88($s1) -.Ljp7F048268: -/* 07CDD8 7F048268 C7A4043C */ lwc1 $f4, 0x43c($sp) -/* 07CDDC 7F04826C E62400A0 */ swc1 $f4, 0xa0($s1) -/* 07CDE0 7F048270 C7A60438 */ lwc1 $f6, 0x438($sp) -/* 07CDE4 7F048274 10000010 */ b .Ljp7F0482B8 -/* 07CDE8 7F048278 E626009C */ swc1 $f6, 0x9c($s1) -/* 07CDEC 7F04827C 8E2A0008 */ lw $t2, 8($s1) -.Ljp7F048280: -/* 07CDF0 7F048280 000A7880 */ sll $t7, $t2, 2 -/* 07CDF4 7F048284 05E1000C */ bgez $t7, .Ljp7F0482B8 -/* 07CDF8 7F048288 00000000 */ nop -/* 07CDFC 7F04828C C62C0038 */ lwc1 $f12, 0x38($s1) -/* 07CE00 7F048290 0FC16BD4 */ jal convert_angle_using_inverse -/* 07CE04 7F048294 C62E0040 */ lwc1 $f14, 0x40($s1) -/* 07CE08 7F048298 8E2D0008 */ lw $t5, 8($s1) -/* 07CE0C 7F04829C 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff -/* 07CE10 7F0482A0 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 07CE14 7F0482A4 01A1C824 */ and $t9, $t5, $at -/* 07CE18 7F0482A8 E62000A0 */ swc1 $f0, 0xa0($s1) -/* 07CE1C 7F0482AC AE390008 */ sw $t9, 8($s1) -/* 07CE20 7F0482B0 0FC113C3 */ jal sub_GAME_7F044B38 -/* 07CE24 7F0482B4 02202025 */ move $a0, $s1 -.Ljp7F0482B8: -/* 07CE28 7F0482B8 100000DE */ b .Ljp7F048634 -/* 07CE2C 7F0482BC 92220003 */ lbu $v0, 3($s1) -.Ljp7F0482C0: -/* 07CE30 7F0482C0 24010028 */ li $at, 40 -/* 07CE34 7F0482C4 144100DA */ bne $v0, $at, .Ljp7F048630 -/* 07CE38 7F0482C8 02202025 */ move $a0, $s1 -/* 07CE3C 7F0482CC 0FC0D5E1 */ jal parse_handle_actionblocks -/* 07CE40 7F0482D0 24050001 */ li $a1, 1 -/* 07CE44 7F0482D4 8E300014 */ lw $s0, 0x14($s1) -/* 07CE48 7F0482D8 26250058 */ addiu $a1, $s1, 0x58 -/* 07CE4C 7F0482DC 8E080020 */ lw $t0, 0x20($s0) -/* 07CE50 7F0482E0 02002025 */ move $a0, $s0 -/* 07CE54 7F0482E4 51000065 */ beql $t0, $zero, .Ljp7F04847C -/* 07CE58 7F0482E8 C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07CE5C 7F0482EC 0FC1B47F */ jal setsuboffset -/* 07CE60 7F0482F0 AFA50074 */ sw $a1, 0x74($sp) -/* 07CE64 7F0482F4 8E300014 */ lw $s0, 0x14($s1) -/* 07CE68 7F0482F8 3C098003 */ lui $t1, %hi(animation_table_ptrs2+4) # $t1, 0x8003 -/* 07CE6C 7F0482FC 8D29A090 */ lw $t1, %lo(animation_table_ptrs2+4)($t1) -/* 07CE70 7F048300 8E180020 */ lw $t8, 0x20($s0) -/* 07CE74 7F048304 3C054127 */ lui $a1, (0x4127020C >> 16) # lui $a1, 0x4127 -/* 07CE78 7F048308 02002025 */ move $a0, $s0 -/* 07CE7C 7F04830C 17090009 */ bne $t8, $t1, .Ljp7F048334 -/* 07CE80 7F048310 00000000 */ nop -/* 07CE84 7F048314 0FC1B51D */ jal sub_GAME_7F06CE84 -/* 07CE88 7F048318 34A5020C */ ori $a1, (0x4127020C & 0xFFFF) # ori $a1, $a1, 0x20c -/* 07CE8C 7F04831C 3C054049 */ lui $a1, (0x40490FDB >> 16) # lui $a1, 0x4049 -/* 07CE90 7F048320 34A50FDB */ ori $a1, (0x40490FDB & 0xFFFF) # ori $a1, $a1, 0xfdb -/* 07CE94 7F048324 0FC1B4CB */ jal setsubroty -/* 07CE98 7F048328 8E240014 */ lw $a0, 0x14($s1) -/* 07CE9C 7F04832C 10000024 */ b .Ljp7F0483C0 -/* 07CEA0 7F048330 00000000 */ nop -.Ljp7F048334: -/* 07CEA4 7F048334 0C001A57 */ jal get_stage_num -/* 07CEA8 7F048338 00000000 */ nop -/* 07CEAC 7F04833C 24010016 */ li $at, 22 -/* 07CEB0 7F048340 1441000A */ bne $v0, $at, .Ljp7F04836C -/* 07CEB4 7F048344 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 -/* 07CEB8 7F048348 8E240014 */ lw $a0, 0x14($s1) -/* 07CEBC 7F04834C 0FC1B51D */ jal sub_GAME_7F06CE84 -/* 07CEC0 7F048350 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d -/* 07CEC4 7F048354 3C054016 */ lui $a1, (0x4016CBE4 >> 16) # lui $a1, 0x4016 -/* 07CEC8 7F048358 34A5CBE4 */ ori $a1, (0x4016CBE4 & 0xFFFF) # ori $a1, $a1, 0xcbe4 -/* 07CECC 7F04835C 0FC1B4CB */ jal setsubroty -/* 07CED0 7F048360 8E240014 */ lw $a0, 0x14($s1) -/* 07CED4 7F048364 10000016 */ b .Ljp7F0483C0 -/* 07CED8 7F048368 00000000 */ nop -.Ljp7F04836C: -/* 07CEDC 7F04836C 0C001A57 */ jal get_stage_num -/* 07CEE0 7F048370 00000000 */ nop -/* 07CEE4 7F048374 2401001A */ li $at, 26 -/* 07CEE8 7F048378 1441000B */ bne $v0, $at, .Ljp7F0483A8 -/* 07CEEC 7F04837C 3C053F85 */ lui $a1, 0x3f85 -/* 07CEF0 7F048380 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 -/* 07CEF4 7F048384 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d -/* 07CEF8 7F048388 0FC1B51D */ jal sub_GAME_7F06CE84 -/* 07CEFC 7F04838C 8E240014 */ lw $a0, 0x14($s1) -/* 07CF00 7F048390 3C05407B */ lui $a1, (0x407B9B3D >> 16) # lui $a1, 0x407b -/* 07CF04 7F048394 34A553D1 */ ori $a1, (0x407B53D1 & 0xFFFF) # ori $a1, $a1, 0x53d1 -/* 07CF08 7F048398 0FC1B4CB */ jal setsubroty -/* 07CF0C 7F04839C 8E240014 */ lw $a0, 0x14($s1) -/* 07CF10 7F0483A0 10000007 */ b .Ljp7F0483C0 -/* 07CF14 7F0483A4 00000000 */ nop -.Ljp7F0483A8: -/* 07CF18 7F0483A8 8E240014 */ lw $a0, 0x14($s1) -/* 07CF1C 7F0483AC 0FC1B51D */ jal sub_GAME_7F06CE84 -/* 07CF20 7F0483B0 34A59B3D */ ori $a1, (0x407B9B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d -/* 07CF24 7F0483B4 4405B000 */ mfc1 $a1, $f22 -/* 07CF28 7F0483B8 0FC1B4CB */ jal setsubroty -/* 07CF2C 7F0483BC 8E240014 */ lw $a0, 0x14($s1) -.Ljp7F0483C0: -/* 07CF30 7F0483C0 3C058005 */ lui $a1, %hi(clock_timer) # $a1, 0x8005 -/* 07CF34 7F0483C4 8CA583A4 */ lw $a1, %lo(clock_timer)($a1) -/* 07CF38 7F0483C8 8E240014 */ lw $a0, 0x14($s1) -/* 07CF3C 7F0483CC 0FC1C437 */ jal sub_GAME_7F070AEC -/* 07CF40 7F0483D0 24060001 */ li $a2, 1 -/* 07CF44 7F0483D4 0FC1B728 */ jal subcalcpos -/* 07CF48 7F0483D8 8E240014 */ lw $a0, 0x14($s1) -/* 07CF4C 7F0483DC 8E240014 */ lw $a0, 0x14($s1) -/* 07CF50 7F0483E0 0FC1B462 */ jal getsuboffset -/* 07CF54 7F0483E4 8FA50074 */ lw $a1, 0x74($sp) -/* 07CF58 7F0483E8 C62A0058 */ lwc1 $f10, 0x58($s1) -/* 07CF5C 7F0483EC 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) # $a1, 0x8007 -/* 07CF60 7F0483F0 24A55D40 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d40 -/* 07CF64 7F0483F4 E66A0008 */ swc1 $f10, 8($s3) -/* 07CF68 7F0483F8 C6280060 */ lwc1 $f8, 0x60($s1) -/* 07CF6C 7F0483FC E6680010 */ swc1 $f8, 0x10($s3) -/* 07CF70 7F048400 86220006 */ lh $v0, 6($s1) -/* 07CF74 7F048404 28412710 */ slti $at, $v0, 0x2710 -/* 07CF78 7F048408 1020000B */ beqz $at, .Ljp7F048438 -/* 07CF7C 7F04840C 00026100 */ sll $t4, $v0, 4 -/* 07CF80 7F048410 00025880 */ sll $t3, $v0, 2 -/* 07CF84 7F048414 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) # $a1, 0x8007 -/* 07CF88 7F048418 01625823 */ subu $t3, $t3, $v0 -/* 07CF8C 7F04841C 24A55D40 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d40 -/* 07CF90 7F048420 000B5880 */ sll $t3, $t3, 2 -/* 07CF94 7F048424 8CAE0018 */ lw $t6, 0x18($a1) -/* 07CF98 7F048428 01625823 */ subu $t3, $t3, $v0 -/* 07CF9C 7F04842C 000B5880 */ sll $t3, $t3, 2 -/* 07CFA0 7F048430 10000008 */ b .Ljp7F048454 -/* 07CFA4 7F048434 016E1821 */ addu $v1, $t3, $t6 -.Ljp7F048438: -/* 07CFA8 7F048438 8CAA001C */ lw $t2, 0x1c($a1) -/* 07CFAC 7F04843C 01826021 */ addu $t4, $t4, $v0 -/* 07CFB0 7F048440 000C6080 */ sll $t4, $t4, 2 -/* 07CFB4 7F048444 3C01FFF5 */ lui $at, (0xFFF59FC0 >> 16) # lui $at, 0xfff5 -/* 07CFB8 7F048448 34219FC0 */ ori $at, (0xFFF59FC0 & 0xFFFF) # ori $at, $at, 0x9fc0 -/* 07CFBC 7F04844C 018A1821 */ addu $v1, $t4, $t2 -/* 07CFC0 7F048450 00611821 */ addu $v1, $v1, $at -.Ljp7F048454: -/* 07CFC4 7F048454 C624005C */ lwc1 $f4, 0x5c($s1) -/* 07CFC8 7F048458 C4660004 */ lwc1 $f6, 4($v1) -/* 07CFCC 7F04845C 46062280 */ add.s $f10, $f4, $f6 -/* 07CFD0 7F048460 E66A000C */ swc1 $f10, 0xc($s3) -/* 07CFD4 7F048464 C668000C */ lwc1 $f8, 0xc($s3) -/* 07CFD8 7F048468 8E240014 */ lw $a0, 0x14($s1) -/* 07CFDC 7F04846C E628005C */ swc1 $f8, 0x5c($s1) -/* 07CFE0 7F048470 0FC1B47F */ jal setsuboffset -/* 07CFE4 7F048474 8FA50074 */ lw $a1, 0x74($sp) -/* 07CFE8 7F048478 C62C00A0 */ lwc1 $f12, 0xa0($s1) -.Ljp7F04847C: -/* 07CFEC 7F04847C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07CFF0 7F048480 460CB03E */ c.le.s $f22, $f12 -/* 07CFF4 7F048484 00000000 */ nop -/* 07CFF8 7F048488 45020016 */ bc1fl .Ljp7F0484E4 -/* 07CFFC 7F04848C C6200094 */ lwc1 $f0, 0x94($s1) -/* 07D000 7F048490 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07D004 7F048494 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07D008 7F048498 4602603E */ c.le.s $f12, $f2 -/* 07D00C 7F04849C 00000000 */ nop -/* 07D010 7F0484A0 45020006 */ bc1fl .Ljp7F0484BC -/* 07D014 7F0484A4 C62E0098 */ lwc1 $f14, 0x98($s1) -/* 07D018 7F0484A8 C624009C */ lwc1 $f4, 0x9c($s1) -/* 07D01C 7F0484AC C62C00A0 */ lwc1 $f12, 0xa0($s1) -/* 07D020 7F0484B0 10000008 */ b .Ljp7F0484D4 -/* 07D024 7F0484B4 E6240098 */ swc1 $f4, 0x98($s1) -/* 07D028 7F0484B8 C62E0098 */ lwc1 $f14, 0x98($s1) -.Ljp7F0484BC: -/* 07D02C 7F0484BC C626009C */ lwc1 $f6, 0x9c($s1) -/* 07D030 7F0484C0 460E3281 */ sub.s $f10, $f6, $f14 -/* 07D034 7F0484C4 46025202 */ mul.s $f8, $f10, $f2 -/* 07D038 7F0484C8 460C4103 */ div.s $f4, $f8, $f12 -/* 07D03C 7F0484CC 46047180 */ add.s $f6, $f14, $f4 -/* 07D040 7F0484D0 E6260098 */ swc1 $f6, 0x98($s1) -.Ljp7F0484D4: -/* 07D044 7F0484D4 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07D048 7F0484D8 460A6201 */ sub.s $f8, $f12, $f10 -/* 07D04C 7F0484DC E62800A0 */ swc1 $f8, 0xa0($s1) -/* 07D050 7F0484E0 C6200094 */ lwc1 $f0, 0x94($s1) -.Ljp7F0484E4: -/* 07D054 7F0484E4 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07D058 7F0484E8 4600B03E */ c.le.s $f22, $f0 -/* 07D05C 7F0484EC 00000000 */ nop -/* 07D060 7F0484F0 45020016 */ bc1fl .Ljp7F04854C -/* 07D064 7F0484F4 8E2F000C */ lw $t7, 0xc($s1) -/* 07D068 7F0484F8 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) -/* 07D06C 7F0484FC 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07D070 7F048500 4602003E */ c.le.s $f0, $f2 -/* 07D074 7F048504 00000000 */ nop -/* 07D078 7F048508 45020006 */ bc1fl .Ljp7F048524 -/* 07D07C 7F04850C C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07D080 7F048510 C6240090 */ lwc1 $f4, 0x90($s1) -/* 07D084 7F048514 C6200094 */ lwc1 $f0, 0x94($s1) -/* 07D088 7F048518 10000008 */ b .Ljp7F04853C -/* 07D08C 7F04851C E624008C */ swc1 $f4, 0x8c($s1) -/* 07D090 7F048520 C62C008C */ lwc1 $f12, 0x8c($s1) -.Ljp7F048524: -/* 07D094 7F048524 C6260090 */ lwc1 $f6, 0x90($s1) -/* 07D098 7F048528 460C3281 */ sub.s $f10, $f6, $f12 -/* 07D09C 7F04852C 46025202 */ mul.s $f8, $f10, $f2 -/* 07D0A0 7F048530 46004103 */ div.s $f4, $f8, $f0 -/* 07D0A4 7F048534 46046180 */ add.s $f6, $f12, $f4 -/* 07D0A8 7F048538 E626008C */ swc1 $f6, 0x8c($s1) -.Ljp7F04853C: -/* 07D0AC 7F04853C C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07D0B0 7F048540 460A0201 */ sub.s $f8, $f0, $f10 -/* 07D0B4 7F048544 E6280094 */ swc1 $f8, 0x94($s1) -/* 07D0B8 7F048548 8E2F000C */ lw $t7, 0xc($s1) -.Ljp7F04854C: -/* 07D0BC 7F04854C 00008025 */ move $s0, $zero -/* 07D0C0 7F048550 000F6B00 */ sll $t5, $t7, 0xc -/* 07D0C4 7F048554 05A00014 */ bltz $t5, .Ljp7F0485A8 -/* 07D0C8 7F048558 00000000 */ nop -/* 07D0CC 7F04855C 0FC13CCE */ jal check_if_object_has_not_been_destroyed -/* 07D0D0 7F048560 02202025 */ move $a0, $s1 -/* 07D0D4 7F048564 10400010 */ beqz $v0, .Ljp7F0485A8 -/* 07D0D8 7F048568 00000000 */ nop -/* 07D0DC 7F04856C C624008C */ lwc1 $f4, 0x8c($s1) -/* 07D0E0 7F048570 4604B032 */ c.eq.s $f22, $f4 -/* 07D0E4 7F048574 00000000 */ nop -/* 07D0E8 7F048578 4501000B */ bc1t .Ljp7F0485A8 -/* 07D0EC 7F04857C 00000000 */ nop -/* 07D0F0 7F048580 8E390008 */ lw $t9, 8($s1) -/* 07D0F4 7F048584 3C05459C */ lui $a1, (0x459C4000 >> 16) # lui $a1, 0x459c -/* 07D0F8 7F048588 34A54000 */ ori $a1, (0x459C4000 & 0xFFFF) # ori $a1, $a1, 0x4000 -/* 07D0FC 7F04858C 00194080 */ sll $t0, $t9, 2 -/* 07D100 7F048590 05000005 */ bltz $t0, .Ljp7F0485A8 -/* 07D104 7F048594 26240058 */ addiu $a0, $s1, 0x58 -/* 07D108 7F048598 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb -/* 07D10C 7F04859C 0FC14F64 */ jal sub_GAME_7F053894 -/* 07D110 7F0485A0 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 -/* 07D114 7F0485A4 00408025 */ move $s0, $v0 -.Ljp7F0485A8: -/* 07D118 7F0485A8 5A000019 */ blezl $s0, .Ljp7F048610 -/* 07D11C 7F0485AC 8E2400B0 */ lw $a0, 0xb0($s1) -/* 07D120 7F0485B0 8E2400B0 */ lw $a0, 0xb0($s1) -/* 07D124 7F0485B4 10800005 */ beqz $a0, .Ljp7F0485CC -/* 07D128 7F0485B8 00000000 */ nop -/* 07D12C 7F0485BC 0C002380 */ jal sfxGetArg0Unk3F -/* 07D130 7F0485C0 00000000 */ nop -/* 07D134 7F0485C4 5440000A */ bnezl $v0, .Ljp7F0485F0 -/* 07D138 7F0485C8 8E2400B0 */ lw $a0, 0xb0($s1) -.Ljp7F0485CC: -/* 07D13C 7F0485CC 0FC3021B */ jal get_controls_locked_flag -/* 07D140 7F0485D0 00000000 */ nop -/* 07D144 7F0485D4 14400005 */ bnez $v0, .Ljp7F0485EC -/* 07D148 7F0485D8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07D14C 7F0485DC 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07D150 7F0485E0 2405003A */ li $a1, 58 -/* 07D154 7F0485E4 0C002386 */ jal play_sfx_a1 -/* 07D158 7F0485E8 262600B0 */ addiu $a2, $s1, 0xb0 -.Ljp7F0485EC: -/* 07D15C 7F0485EC 8E2400B0 */ lw $a0, 0xb0($s1) -.Ljp7F0485F0: -/* 07D160 7F0485F0 24050008 */ li $a1, 8 -/* 07D164 7F0485F4 5080000F */ beql $a0, $zero, .Ljp7F048634 -/* 07D168 7F0485F8 92220003 */ lbu $v0, 3($s1) -/* 07D16C 7F0485FC 0C002465 */ jal sfx_c_70009184 -/* 07D170 7F048600 02003025 */ move $a2, $s0 -/* 07D174 7F048604 1000000B */ b .Ljp7F048634 -/* 07D178 7F048608 92220003 */ lbu $v0, 3($s1) -/* 07D17C 7F04860C 8E2400B0 */ lw $a0, 0xb0($s1) -.Ljp7F048610: -/* 07D180 7F048610 50800008 */ beql $a0, $zero, .Ljp7F048634 -/* 07D184 7F048614 92220003 */ lbu $v0, 3($s1) -/* 07D188 7F048618 0C002380 */ jal sfxGetArg0Unk3F -/* 07D18C 7F04861C 00000000 */ nop -/* 07D190 7F048620 50400004 */ beql $v0, $zero, .Ljp7F048634 -/* 07D194 7F048624 92220003 */ lbu $v0, 3($s1) -/* 07D198 7F048628 0C00240C */ jal sfxDeactivate -/* 07D19C 7F04862C 8E2400B0 */ lw $a0, 0xb0($s1) -.Ljp7F048630: -/* 07D1A0 7F048630 92220003 */ lbu $v0, 3($s1) -.Ljp7F048634: -/* 07D1A4 7F048634 3C018005 */ lui $at, %hi(D_80052B64) # $at, 0x8005 -/* 07D1A8 7F048638 C4342B94 */ lwc1 $f20, %lo(D_80052B64)($at) -/* 07D1AC 7F04863C 2401002F */ li $at, 47 -/* 07D1B0 7F048640 54410020 */ bnel $v0, $at, .Ljp7F0486C4 -/* 07D1B4 7F048644 24010001 */ li $at, 1 -/* 07D1B8 7F048648 8E700004 */ lw $s0, 4($s3) -/* 07D1BC 7F04864C 26240058 */ addiu $a0, $s1, 0x58 -/* 07D1C0 7F048650 8E180080 */ lw $t8, 0x80($s0) -/* 07D1C4 7F048654 8E090084 */ lw $t1, 0x84($s0) -/* 07D1C8 7F048658 8E070090 */ lw $a3, 0x90($s0) -/* 07D1CC 7F04865C 44983000 */ mtc1 $t8, $f6 -/* 07D1D0 7F048660 44895000 */ mtc1 $t1, $f10 -/* 07D1D4 7F048664 468031A0 */ cvt.s.w $f6, $f6 -/* 07D1D8 7F048668 468052A0 */ cvt.s.w $f10, $f10 -/* 07D1DC 7F04866C 44053000 */ mfc1 $a1, $f6 -/* 07D1E0 7F048670 44065000 */ mfc1 $a2, $f10 -/* 07D1E4 7F048674 0FC1156C */ jal sub_GAME_7F0451DC -/* 07D1E8 7F048678 00000000 */ nop -/* 07D1EC 7F04867C 8E04008C */ lw $a0, 0x8c($s0) -/* 07D1F0 7F048680 AE020088 */ sw $v0, 0x88($s0) -/* 07D1F4 7F048684 8FAB067C */ lw $t3, 0x67c($sp) -/* 07D1F8 7F048688 0480000B */ bltz $a0, .Ljp7F0486B8 -/* 07D1FC 7F04868C 24010001 */ li $at, 1 -/* 07D200 7F048690 15610009 */ bne $t3, $at, .Ljp7F0486B8 -/* 07D204 7F048694 240100FF */ li $at, 255 -/* 07D208 7F048698 14410005 */ bne $v0, $at, .Ljp7F0486B0 -/* 07D20C 7F04869C 00000000 */ nop -/* 07D210 7F0486A0 0FC2EA5B */ jal sub_GAME_7F0B9DBC -/* 07D214 7F0486A4 00002825 */ move $a1, $zero -/* 07D218 7F0486A8 10000003 */ b .Ljp7F0486B8 -/* 07D21C 7F0486AC 00000000 */ nop -.Ljp7F0486B0: -/* 07D220 7F0486B0 0FC2EA5B */ jal sub_GAME_7F0B9DBC -/* 07D224 7F0486B4 24050001 */ li $a1, 1 -.Ljp7F0486B8: -/* 07D228 7F0486B8 1000003B */ b .Ljp7F0487A8 -/* 07D22C 7F0486BC AFA00678 */ sw $zero, 0x678($sp) -/* 07D230 7F0486C0 24010001 */ li $at, 1 -.Ljp7F0486C4: -/* 07D234 7F0486C4 54410039 */ bnel $v0, $at, .Ljp7F0487AC -/* 07D238 7F0486C8 922C0003 */ lbu $t4, 3($s1) -/* 07D23C 7F0486CC 962C0098 */ lhu $t4, 0x98($s1) -/* 07D240 7F0486D0 318A0002 */ andi $t2, $t4, 2 -/* 07D244 7F0486D4 51400035 */ beql $t2, $zero, .Ljp7F0487AC -/* 07D248 7F0486D8 922C0003 */ lbu $t4, 3($s1) -/* 07D24C 7F0486DC 8E700004 */ lw $s0, 4($s3) -/* 07D250 7F0486E0 4407B000 */ mfc1 $a3, $f22 -/* 07D254 7F0486E4 24120001 */ li $s2, 1 -/* 07D258 7F0486E8 8E0F00C0 */ lw $t7, 0xc0($s0) -/* 07D25C 7F0486EC 8E0D00C4 */ lw $t5, 0xc4($s0) -/* 07D260 7F0486F0 26240058 */ addiu $a0, $s1, 0x58 -/* 07D264 7F0486F4 448F4000 */ mtc1 $t7, $f8 -/* 07D268 7F0486F8 448D2000 */ mtc1 $t5, $f4 -/* 07D26C 7F0486FC 46804220 */ cvt.s.w $f8, $f8 -/* 07D270 7F048700 46802120 */ cvt.s.w $f4, $f4 -/* 07D274 7F048704 44054000 */ mfc1 $a1, $f8 -/* 07D278 7F048708 44062000 */ mfc1 $a2, $f4 -/* 07D27C 7F04870C 0FC1156C */ jal sub_GAME_7F0451DC -/* 07D280 7F048710 00000000 */ nop -/* 07D284 7F048714 A60200BE */ sh $v0, 0xbe($s0) -/* 07D288 7F048718 8FB9067C */ lw $t9, 0x67c($sp) -/* 07D28C 7F04871C 24010001 */ li $at, 1 -/* 07D290 7F048720 57210022 */ bnel $t9, $at, .Ljp7F0487AC -/* 07D294 7F048724 922C0003 */ lbu $t4, 3($s1) -/* 07D298 7F048728 860800BE */ lh $t0, 0xbe($s0) -/* 07D29C 7F04872C 240100FF */ li $at, 255 -/* 07D2A0 7F048730 55010007 */ bnel $t0, $at, .Ljp7F048750 -/* 07D2A4 7F048734 00009025 */ move $s2, $zero -/* 07D2A8 7F048738 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 07D2AC 7F04873C 4606B03C */ c.lt.s $f22, $f6 -/* 07D2B0 7F048740 00000000 */ nop -/* 07D2B4 7F048744 45020003 */ bc1fl .Ljp7F048754 -/* 07D2B8 7F048748 8E820008 */ lw $v0, 8($s4) -/* 07D2BC 7F04874C 00009025 */ move $s2, $zero -.Ljp7F048750: -/* 07D2C0 7F048750 8E820008 */ lw $v0, 8($s4) -.Ljp7F048754: -/* 07D2C4 7F048754 3C188004 */ lui $t8, %hi(prop_door_related) # $t8, 0x8004 -/* 07D2C8 7F048758 2718A20C */ addiu $t8, %lo(prop_door_related) # addiu $t8, $t8, -0x5df4 -/* 07D2CC 7F04875C 8C490004 */ lw $t1, 4($v0) -/* 07D2D0 7F048760 17090009 */ bne $t8, $t1, .Ljp7F048788 -/* 07D2D4 7F048764 00000000 */ nop -/* 07D2D8 7F048768 8C4B0008 */ lw $t3, 8($v0) -/* 07D2DC 7F04876C 02802025 */ move $a0, $s4 -/* 07D2E0 7F048770 0FC1B363 */ jal extract_id_from_object_structure_microcode -/* 07D2E4 7F048774 8D650004 */ lw $a1, 4($t3) -/* 07D2E8 7F048778 8C4E0000 */ lw $t6, ($v0) -/* 07D2EC 7F04877C 15C00002 */ bnez $t6, .Ljp7F048788 -/* 07D2F0 7F048780 00000000 */ nop -/* 07D2F4 7F048784 00009025 */ move $s2, $zero -.Ljp7F048788: -/* 07D2F8 7F048788 12400005 */ beqz $s2, .Ljp7F0487A0 -/* 07D2FC 7F04878C 00000000 */ nop -/* 07D300 7F048790 0FC14EB0 */ jal sub_GAME_7F0535C4 -/* 07D304 7F048794 02002025 */ move $a0, $s0 -/* 07D308 7F048798 10000004 */ b .Ljp7F0487AC -/* 07D30C 7F04879C 922C0003 */ lbu $t4, 3($s1) -.Ljp7F0487A0: -/* 07D310 7F0487A0 0FC14EA5 */ jal sub_GAME_7F053598 -/* 07D314 7F0487A4 02002025 */ move $a0, $s0 -.Ljp7F0487A8: -/* 07D318 7F0487A8 922C0003 */ lbu $t4, 3($s1) -.Ljp7F0487AC: -/* 07D31C 7F0487AC 2410002D */ li $s0, 45 -/* 07D320 7F0487B0 560C0008 */ bnel $s0, $t4, .Ljp7F0487D4 -/* 07D324 7F0487B4 8E23000C */ lw $v1, 0xc($s1) -/* 07D328 7F0487B8 0FC1F52A */ jal get_ptr_for_players_tank -/* 07D32C 7F0487BC 00000000 */ nop -/* 07D330 7F0487C0 54530004 */ bnel $v0, $s3, .Ljp7F0487D4 -/* 07D334 7F0487C4 8E23000C */ lw $v1, 0xc($s1) -/* 07D338 7F0487C8 10000019 */ b .Ljp7F048830 -/* 07D33C 7F0487CC 24030001 */ li $v1, 1 -/* 07D340 7F0487D0 8E23000C */ lw $v1, 0xc($s1) -.Ljp7F0487D4: -/* 07D344 7F0487D4 00035140 */ sll $t2, $v1, 5 -/* 07D348 7F0487D8 05430004 */ bgezl $t2, .Ljp7F0487EC -/* 07D34C 7F0487DC 8E2F0064 */ lw $t7, 0x64($s1) -/* 07D350 7F0487E0 10000013 */ b .Ljp7F048830 -/* 07D354 7F0487E4 24030001 */ li $v1, 1 -/* 07D358 7F0487E8 8E2F0064 */ lw $t7, 0x64($s1) -.Ljp7F0487EC: -/* 07D35C 7F0487EC 0003CB00 */ sll $t9, $v1, 0xc -/* 07D360 7F0487F0 00001825 */ move $v1, $zero -/* 07D364 7F0487F4 31ED0800 */ andi $t5, $t7, 0x800 -/* 07D368 7F0487F8 15A0000D */ bnez $t5, .Ljp7F048830 -/* 07D36C 7F0487FC 00000000 */ nop -/* 07D370 7F048800 0720000B */ bltz $t9, .Ljp7F048830 -/* 07D374 7F048804 02802025 */ move $a0, $s4 -/* 07D378 7F048808 26280058 */ addiu $t0, $s1, 0x58 -/* 07D37C 7F04880C 0FC1B57F */ jal getinstsize -/* 07D380 7F048810 AFA80074 */ sw $t0, 0x74($sp) -/* 07D384 7F048814 44060000 */ mfc1 $a2, $f0 -/* 07D388 7F048818 02602025 */ move $a0, $s3 -/* 07D38C 7F04881C 8FA50074 */ lw $a1, 0x74($sp) -/* 07D390 7F048820 0FC1549A */ jal sub_GAME_7F054D6C -/* 07D394 7F048824 8FA70678 */ lw $a3, 0x678($sp) -/* 07D398 7F048828 10000001 */ b .Ljp7F048830 -/* 07D39C 7F04882C 00401825 */ move $v1, $v0 -.Ljp7F048830: -/* 07D3A0 7F048830 1060037A */ beqz $v1, .Ljp7F04961C -/* 07D3A4 7F048834 8FB80680 */ lw $t8, 0x680($sp) -/* 07D3A8 7F048838 13000003 */ beqz $t8, .Ljp7F048848 -/* 07D3AC 7F04883C 26240078 */ addiu $a0, $s1, 0x78 -/* 07D3B0 7F048840 0FC10184 */ jal update_color_shading -/* 07D3B4 7F048844 2625007C */ addiu $a1, $s1, 0x7c -.Ljp7F048848: -/* 07D3B8 7F048848 92690001 */ lbu $t1, 1($s3) -/* 07D3BC 7F04884C 352B0002 */ ori $t3, $t1, 2 -/* 07D3C0 7F048850 A26B0001 */ sb $t3, 1($s3) -/* 07D3C4 7F048854 8E8E0008 */ lw $t6, 8($s4) -/* 07D3C8 7F048858 85C4000E */ lh $a0, 0xe($t6) -/* 07D3CC 7F04885C 00046180 */ sll $t4, $a0, 6 -/* 07D3D0 7F048860 0FC2F8B1 */ jal sub_GAME_7F0BD714 -/* 07D3D4 7F048864 01802025 */ move $a0, $t4 -/* 07D3D8 7F048868 AE82000C */ sw $v0, 0xc($s4) -/* 07D3DC 7F04886C 922A0003 */ lbu $t2, 3($s1) -/* 07D3E0 7F048870 24010001 */ li $at, 1 -/* 07D3E4 7F048874 00409025 */ move $s2, $v0 -/* 07D3E8 7F048878 154100AD */ bne $t2, $at, .Ljp7F048B30 -/* 07D3EC 7F04887C 26240018 */ addiu $a0, $s1, 0x18 -/* 07D3F0 7F048880 8E640004 */ lw $a0, 4($s3) -/* 07D3F4 7F048884 00402825 */ move $a1, $v0 -/* 07D3F8 7F048888 0FC14AFA */ jal sub_GAME_7F0526EC -/* 07D3FC 7F04888C AFA403A0 */ sw $a0, 0x3a0($sp) -/* 07D400 7F048890 0FC1E26D */ jal get_BONDdata_field_10CC -/* 07D404 7F048894 00000000 */ nop -/* 07D408 7F048898 00402025 */ move $a0, $v0 -/* 07D40C 7F04889C 0FC1616E */ jal sub_GAME_7F058098 -/* 07D410 7F0488A0 02402825 */ move $a1, $s2 -/* 07D414 7F0488A4 8E820008 */ lw $v0, 8($s4) -/* 07D418 7F0488A8 3C0F8004 */ lui $t7, %hi(prop_eyelid_door_related) # $t7, 0x8004 -/* 07D41C 7F0488AC 25EFA130 */ addiu $t7, %lo(prop_eyelid_door_related) # addiu $t7, $t7, -0x5ed0 -/* 07D420 7F0488B0 8C430004 */ lw $v1, 4($v0) -/* 07D424 7F0488B4 3C0B8004 */ lui $t3, %hi(prop_iris_door_related) # $t3, 0x8004 -/* 07D428 7F0488B8 8FA603A0 */ lw $a2, 0x3a0($sp) -/* 07D42C 7F0488BC 15E30025 */ bne $t7, $v1, .Ljp7F048954 -/* 07D430 7F0488C0 256BA18C */ addiu $t3, %lo(prop_iris_door_related) # addiu $t3, $t3, -0x5e74 -/* 07D434 7F0488C4 C4CA00B4 */ lwc1 $f10, 0xb4($a2) -/* 07D438 7F0488C8 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07D43C 7F0488CC 44812000 */ mtc1 $at, $f4 -/* 07D440 7F0488D0 46145202 */ mul.s $f8, $f10, $f20 -/* 07D444 7F0488D4 8C4D0008 */ lw $t5, 8($v0) -/* 07D448 7F0488D8 26450040 */ addiu $a1, $s2, 0x40 -/* 07D44C 7F0488DC 8DB90004 */ lw $t9, 4($t5) -/* 07D450 7F0488E0 46044183 */ div.s $f6, $f8, $f4 -/* 07D454 7F0488E4 8F300004 */ lw $s0, 4($t9) -/* 07D458 7F0488E8 AFA50070 */ sw $a1, 0x70($sp) -/* 07D45C 7F0488EC 4606A301 */ sub.s $f12, $f20, $f6 -/* 07D460 7F0488F0 0FC162A4 */ jal sub_GAME_7F058570 -/* 07D464 7F0488F4 E7AC0398 */ swc1 $f12, 0x398($sp) -/* 07D468 7F0488F8 02002025 */ move $a0, $s0 -/* 07D46C 7F0488FC 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D470 7F048900 8FA50070 */ lw $a1, 0x70($sp) -/* 07D474 7F048904 02402025 */ move $a0, $s2 -/* 07D478 7F048908 0FC16162 */ jal sub_GAME_7F058068 -/* 07D47C 7F04890C 8FA50070 */ lw $a1, 0x70($sp) -/* 07D480 7F048910 8E880008 */ lw $t0, 8($s4) -/* 07D484 7F048914 C7AA0398 */ lwc1 $f10, 0x398($sp) -/* 07D488 7F048918 26450080 */ addiu $a1, $s2, 0x80 -/* 07D48C 7F04891C 8D180008 */ lw $t8, 8($t0) -/* 07D490 7F048920 460AA301 */ sub.s $f12, $f20, $f10 -/* 07D494 7F048924 8F090008 */ lw $t1, 8($t8) -/* 07D498 7F048928 8D300004 */ lw $s0, 4($t1) -/* 07D49C 7F04892C 0FC162A4 */ jal sub_GAME_7F058570 -/* 07D4A0 7F048930 AFA5006C */ sw $a1, 0x6c($sp) -/* 07D4A4 7F048934 02002025 */ move $a0, $s0 -/* 07D4A8 7F048938 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D4AC 7F04893C 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D4B0 7F048940 02402025 */ move $a0, $s2 -/* 07D4B4 7F048944 0FC16162 */ jal sub_GAME_7F058068 -/* 07D4B8 7F048948 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D4BC 7F04894C 1000031F */ b .Ljp7F0495CC -/* 07D4C0 7F048950 8E8C0008 */ lw $t4, 8($s4) -.Ljp7F048954: -/* 07D4C4 7F048954 5563031D */ bnel $t3, $v1, .Ljp7F0495CC -/* 07D4C8 7F048958 8E8C0008 */ lw $t4, 8($s4) -/* 07D4CC 7F04895C C4C200B4 */ lwc1 $f2, 0xb4($a2) -/* 07D4D0 7F048960 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07D4D4 7F048964 44812000 */ mtc1 $at, $f4 -/* 07D4D8 7F048968 46141202 */ mul.s $f8, $f2, $f20 -/* 07D4DC 7F04896C 3C018005 */ lui $at, %hi(D_80052B68) # $at, 0x8005 -/* 07D4E0 7F048970 C42A2B98 */ lwc1 $f10, %lo(D_80052B68)($at) -/* 07D4E4 7F048974 4600B386 */ mov.s $f14, $f22 -/* 07D4E8 7F048978 46044183 */ div.s $f6, $f8, $f4 -/* 07D4EC 7F04897C E7A60388 */ swc1 $f6, 0x388($sp) -/* 07D4F0 7F048980 C4CC0084 */ lwc1 $f12, 0x84($a2) -/* 07D4F4 7F048984 460A6002 */ mul.s $f0, $f12, $f10 -/* 07D4F8 7F048988 4602003C */ c.lt.s $f0, $f2 -/* 07D4FC 7F04898C 00000000 */ nop -/* 07D500 7F048990 4502001F */ bc1fl .Ljp7F048A10 -/* 07D504 7F048994 8FAA0680 */ lw $t2, 0x680($sp) -/* 07D508 7F048998 46001201 */ sub.s $f8, $f2, $f0 -/* 07D50C 7F04899C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 07D510 7F0489A0 8FAE0680 */ lw $t6, 0x680($sp) -/* 07D514 7F0489A4 46006181 */ sub.s $f6, $f12, $f0 -/* 07D518 7F0489A8 46086102 */ mul.s $f4, $f12, $f8 -/* 07D51C 7F0489AC 46062283 */ div.s $f10, $f4, $f6 -/* 07D520 7F0489B0 44812000 */ mtc1 $at, $f4 -/* 07D524 7F0489B4 46145202 */ mul.s $f8, $f10, $f20 -/* 07D528 7F0489B8 46044383 */ div.s $f14, $f8, $f4 -/* 07D52C 7F0489BC 11C00011 */ beqz $t6, .Ljp7F048A04 -/* 07D530 7F0489C0 E7AE0384 */ swc1 $f14, 0x384($sp) -/* 07D534 7F0489C4 C7A60684 */ lwc1 $f6, 0x684($sp) -/* 07D538 7F0489C8 E7AE0384 */ swc1 $f14, 0x384($sp) -/* 07D53C 7F0489CC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07D540 7F0489D0 4600303E */ c.le.s $f6, $f0 -/* 07D544 7F0489D4 240500CA */ li $a1, 202 -/* 07D548 7F0489D8 00003025 */ move $a2, $zero -/* 07D54C 7F0489DC 266C0008 */ addiu $t4, $s3, 8 -/* 07D550 7F0489E0 45000008 */ bc1f .Ljp7F048A04 -/* 07D554 7F0489E4 00000000 */ nop -/* 07D558 7F0489E8 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07D55C 7F0489EC AFAC0074 */ sw $t4, 0x74($sp) -/* 07D560 7F0489F0 0C002386 */ jal play_sfx_a1 -/* 07D564 7F0489F4 E7AE0384 */ swc1 $f14, 0x384($sp) -/* 07D568 7F0489F8 00402025 */ move $a0, $v0 -/* 07D56C 7F0489FC 0FC14FC3 */ jal sub_GAME_7F053A10 -/* 07D570 7F048A00 8FA50074 */ lw $a1, 0x74($sp) -.Ljp7F048A04: -/* 07D574 7F048A04 10000016 */ b .Ljp7F048A60 -/* 07D578 7F048A08 AFA00390 */ sw $zero, 0x390($sp) -/* 07D57C 7F048A0C 8FAA0680 */ lw $t2, 0x680($sp) -.Ljp7F048A10: -/* 07D580 7F048A10 E7AE0384 */ swc1 $f14, 0x384($sp) -/* 07D584 7F048A14 51400012 */ beql $t2, $zero, .Ljp7F048A60 -/* 07D588 7F048A18 AFA00390 */ sw $zero, 0x390($sp) -/* 07D58C 7F048A1C C7AA0684 */ lwc1 $f10, 0x684($sp) -/* 07D590 7F048A20 E7AE0384 */ swc1 $f14, 0x384($sp) -/* 07D594 7F048A24 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07D598 7F048A28 460A003C */ c.lt.s $f0, $f10 -/* 07D59C 7F048A2C 240500CB */ li $a1, 203 -/* 07D5A0 7F048A30 00003025 */ move $a2, $zero -/* 07D5A4 7F048A34 266F0008 */ addiu $t7, $s3, 8 -/* 07D5A8 7F048A38 45020009 */ bc1fl .Ljp7F048A60 -/* 07D5AC 7F048A3C AFA00390 */ sw $zero, 0x390($sp) -/* 07D5B0 7F048A40 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07D5B4 7F048A44 AFAF0074 */ sw $t7, 0x74($sp) -/* 07D5B8 7F048A48 0C002386 */ jal play_sfx_a1 -/* 07D5BC 7F048A4C E7AE0384 */ swc1 $f14, 0x384($sp) -/* 07D5C0 7F048A50 00402025 */ move $a0, $v0 -/* 07D5C4 7F048A54 0FC14FC3 */ jal sub_GAME_7F053A10 -/* 07D5C8 7F048A58 8FA50074 */ lw $a1, 0x74($sp) -/* 07D5CC 7F048A5C AFA00390 */ sw $zero, 0x390($sp) -.Ljp7F048A60: -/* 07D5D0 7F048A60 8E8D0008 */ lw $t5, 8($s4) -/* 07D5D4 7F048A64 8FA30390 */ lw $v1, 0x390($sp) -/* 07D5D8 7F048A68 C7AC0384 */ lwc1 $f12, 0x384($sp) -/* 07D5DC 7F048A6C 8DB90008 */ lw $t9, 8($t5) -/* 07D5E0 7F048A70 00031040 */ sll $v0, $v1, 1 -/* 07D5E4 7F048A74 00024080 */ sll $t0, $v0, 2 -/* 07D5E8 7F048A78 0328C021 */ addu $t8, $t9, $t0 -/* 07D5EC 7F048A7C 8F090004 */ lw $t1, 4($t8) -/* 07D5F0 7F048A80 00027180 */ sll $t6, $v0, 6 -/* 07D5F4 7F048A84 024E2821 */ addu $a1, $s2, $t6 -/* 07D5F8 7F048A88 8D2B0004 */ lw $t3, 4($t1) -/* 07D5FC 7F048A8C AFA20078 */ sw $v0, 0x78($sp) -/* 07D600 7F048A90 24A50040 */ addiu $a1, $a1, 0x40 -/* 07D604 7F048A94 0FC162EA */ jal sub_GAME_7F058688 -/* 07D608 7F048A98 AFAB0394 */ sw $t3, 0x394($sp) -/* 07D60C 7F048A9C 8FAC0078 */ lw $t4, 0x78($sp) -/* 07D610 7F048AA0 8FB00390 */ lw $s0, 0x390($sp) -/* 07D614 7F048AA4 8FA40394 */ lw $a0, 0x394($sp) -/* 07D618 7F048AA8 000C5180 */ sll $t2, $t4, 6 -/* 07D61C 7F048AAC 024A2821 */ addu $a1, $s2, $t2 -/* 07D620 7F048AB0 24A50040 */ addiu $a1, $a1, 0x40 -/* 07D624 7F048AB4 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D628 7F048AB8 AFA50074 */ sw $a1, 0x74($sp) -/* 07D62C 7F048ABC 02402025 */ move $a0, $s2 -/* 07D630 7F048AC0 0FC16162 */ jal sub_GAME_7F058068 -/* 07D634 7F048AC4 8FA50074 */ lw $a1, 0x74($sp) -/* 07D638 7F048AC8 8E8F0008 */ lw $t7, 8($s4) -/* 07D63C 7F048ACC 8FA20078 */ lw $v0, 0x78($sp) -/* 07D640 7F048AD0 C7AC0388 */ lwc1 $f12, 0x388($sp) -/* 07D644 7F048AD4 8DED0008 */ lw $t5, 8($t7) -/* 07D648 7F048AD8 24420002 */ addiu $v0, $v0, 2 -/* 07D64C 7F048ADC 0002C880 */ sll $t9, $v0, 2 -/* 07D650 7F048AE0 01B94021 */ addu $t0, $t5, $t9 -/* 07D654 7F048AE4 8D180000 */ lw $t8, ($t0) -/* 07D658 7F048AE8 00025980 */ sll $t3, $v0, 6 -/* 07D65C 7F048AEC 024B2821 */ addu $a1, $s2, $t3 -/* 07D660 7F048AF0 8F090004 */ lw $t1, 4($t8) -/* 07D664 7F048AF4 AFA50070 */ sw $a1, 0x70($sp) -/* 07D668 7F048AF8 0FC162EA */ jal sub_GAME_7F058688 -/* 07D66C 7F048AFC AFA90394 */ sw $t1, 0x394($sp) -/* 07D670 7F048B00 8FA40394 */ lw $a0, 0x394($sp) -/* 07D674 7F048B04 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D678 7F048B08 8FA50070 */ lw $a1, 0x70($sp) -/* 07D67C 7F048B0C 8FA40074 */ lw $a0, 0x74($sp) -/* 07D680 7F048B10 0FC16162 */ jal sub_GAME_7F058068 -/* 07D684 7F048B14 8FA50070 */ lw $a1, 0x70($sp) -/* 07D688 7F048B18 26100001 */ addiu $s0, $s0, 1 -/* 07D68C 7F048B1C 24010006 */ li $at, 6 -/* 07D690 7F048B20 1601FFCF */ bne $s0, $at, .Ljp7F048A60 -/* 07D694 7F048B24 AFB00390 */ sw $s0, 0x390($sp) -/* 07D698 7F048B28 100002A8 */ b .Ljp7F0495CC -/* 07D69C 7F048B2C 8E8C0008 */ lw $t4, 8($s4) -.Ljp7F048B30: -/* 07D6A0 7F048B30 262E0058 */ addiu $t6, $s1, 0x58 -/* 07D6A4 7F048B34 AFAE0074 */ sw $t6, 0x74($sp) -/* 07D6A8 7F048B38 0FC16150 */ jal sub_GAME_7F058020 -/* 07D6AC 7F048B3C 27A503A8 */ addiu $a1, $sp, 0x3a8 -/* 07D6B0 7F048B40 8FA40074 */ lw $a0, 0x74($sp) -/* 07D6B4 7F048B44 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D6B8 7F048B48 27A503A8 */ addiu $a1, $sp, 0x3a8 -/* 07D6BC 7F048B4C 0FC1E26D */ jal get_BONDdata_field_10CC -/* 07D6C0 7F048B50 00000000 */ nop -/* 07D6C4 7F048B54 00402025 */ move $a0, $v0 -/* 07D6C8 7F048B58 27A503A8 */ addiu $a1, $sp, 0x3a8 -/* 07D6CC 7F048B5C 0FC161AB */ jal sub_GAME_7F05818C -/* 07D6D0 7F048B60 02403025 */ move $a2, $s2 -/* 07D6D4 7F048B64 92220003 */ lbu $v0, 3($s1) -/* 07D6D8 7F048B68 24010006 */ li $at, 6 -/* 07D6DC 7F048B6C 27A50324 */ addiu $a1, $sp, 0x324 -/* 07D6E0 7F048B70 5441002D */ bnel $v0, $at, .Ljp7F048C28 -/* 07D6E4 7F048B74 2401000D */ li $at, 13 -/* 07D6E8 7F048B78 8E620004 */ lw $v0, 4($s3) -/* 07D6EC 7F048B7C 8E8C0008 */ lw $t4, 8($s4) -/* 07D6F0 7F048B80 C44C00C8 */ lwc1 $f12, 0xc8($v0) -/* 07D6F4 7F048B84 8D8A0008 */ lw $t2, 8($t4) -/* 07D6F8 7F048B88 4616603C */ c.lt.s $f12, $f22 -/* 07D6FC 7F048B8C 8D4F0000 */ lw $t7, ($t2) -/* 07D700 7F048B90 45000003 */ bc1f .Ljp7F048BA0 -/* 07D704 7F048B94 8DF00004 */ lw $s0, 4($t7) -/* 07D708 7F048B98 10000006 */ b .Ljp7F048BB4 -/* 07D70C 7F048B9C 46146300 */ add.s $f12, $f12, $f20 -.Ljp7F048BA0: -/* 07D710 7F048BA0 460CA03E */ c.le.s $f20, $f12 -/* 07D714 7F048BA4 00000000 */ nop -/* 07D718 7F048BA8 45000002 */ bc1f .Ljp7F048BB4 -/* 07D71C 7F048BAC 00000000 */ nop -/* 07D720 7F048BB0 46146301 */ sub.s $f12, $f12, $f20 -.Ljp7F048BB4: -/* 07D724 7F048BB4 0FC162C7 */ jal sub_GAME_7F0585FC -/* 07D728 7F048BB8 AFA20374 */ sw $v0, 0x374($sp) -/* 07D72C 7F048BBC 8FA20374 */ lw $v0, 0x374($sp) -/* 07D730 7F048BC0 26460040 */ addiu $a2, $s2, 0x40 -/* 07D734 7F048BC4 AFA60070 */ sw $a2, 0x70($sp) -/* 07D738 7F048BC8 27A40324 */ addiu $a0, $sp, 0x324 -/* 07D73C 7F048BCC 0FC1617A */ jal sub_GAME_7F0580C8 -/* 07D740 7F048BD0 24450084 */ addiu $a1, $v0, 0x84 -/* 07D744 7F048BD4 C6080000 */ lwc1 $f8, ($s0) -/* 07D748 7F048BD8 27B20364 */ addiu $s2, $sp, 0x364 -/* 07D74C 7F048BDC 02402825 */ move $a1, $s2 -/* 07D750 7F048BE0 E7A80364 */ swc1 $f8, 0x364($sp) -/* 07D754 7F048BE4 C6040004 */ lwc1 $f4, 4($s0) -/* 07D758 7F048BE8 27A403A8 */ addiu $a0, $sp, 0x3a8 -/* 07D75C 7F048BEC E7A40368 */ swc1 $f4, 0x368($sp) -/* 07D760 7F048BF0 C6060008 */ lwc1 $f6, 8($s0) -/* 07D764 7F048BF4 0FC16265 */ jal sub_GAME_7F058474 -/* 07D768 7F048BF8 E7A6036C */ swc1 $f6, 0x36c($sp) -/* 07D76C 7F048BFC 02402025 */ move $a0, $s2 -/* 07D770 7F048C00 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D774 7F048C04 8FA50070 */ lw $a1, 0x70($sp) -/* 07D778 7F048C08 0FC1E26D */ jal get_BONDdata_field_10CC -/* 07D77C 7F048C0C 00000000 */ nop -/* 07D780 7F048C10 00402025 */ move $a0, $v0 -/* 07D784 7F048C14 0FC1616E */ jal sub_GAME_7F058098 -/* 07D788 7F048C18 8FA50070 */ lw $a1, 0x70($sp) -/* 07D78C 7F048C1C 1000026B */ b .Ljp7F0495CC -/* 07D790 7F048C20 8E8C0008 */ lw $t4, 8($s4) -/* 07D794 7F048C24 2401000D */ li $at, 13 -.Ljp7F048C28: -/* 07D798 7F048C28 5441007F */ bnel $v0, $at, .Ljp7F048E28 -/* 07D79C 7F048C2C 24010008 */ li $at, 8 -/* 07D7A0 7F048C30 8E620004 */ lw $v0, 4($s3) -/* 07D7A4 7F048C34 3C018005 */ lui $at, %hi(D_80052B6C) # $at, 0x8005 -/* 07D7A8 7F048C38 C4282B9C */ lwc1 $f8, %lo(D_80052B6C)($at) -/* 07D7AC 7F048C3C C44A0090 */ lwc1 $f10, 0x90($v0) -/* 07D7B0 7F048C40 C444009C */ lwc1 $f4, 0x9c($v0) -/* 07D7B4 7F048C44 46085300 */ add.s $f12, $f10, $f8 -/* 07D7B8 7F048C48 46002187 */ neg.s $f6, $f4 -/* 07D7BC 7F048C4C 460CA03E */ c.le.s $f20, $f12 -/* 07D7C0 7F048C50 E7A60304 */ swc1 $f6, 0x304($sp) -/* 07D7C4 7F048C54 45020003 */ bc1fl .Ljp7F048C64 -/* 07D7C8 7F048C58 8E8D0008 */ lw $t5, 8($s4) -/* 07D7CC 7F048C5C 46146301 */ sub.s $f12, $f12, $f20 -/* 07D7D0 7F048C60 8E8D0008 */ lw $t5, 8($s4) -.Ljp7F048C64: -/* 07D7D4 7F048C64 27A403A8 */ addiu $a0, $sp, 0x3a8 -/* 07D7D8 7F048C68 27A5030C */ addiu $a1, $sp, 0x30c -/* 07D7DC 7F048C6C 8DB90008 */ lw $t9, 8($t5) -/* 07D7E0 7F048C70 8F280004 */ lw $t0, 4($t9) -/* 07D7E4 7F048C74 8D100004 */ lw $s0, 4($t0) -/* 07D7E8 7F048C78 C60A0000 */ lwc1 $f10, ($s0) -/* 07D7EC 7F048C7C E7AA030C */ swc1 $f10, 0x30c($sp) -/* 07D7F0 7F048C80 C6080004 */ lwc1 $f8, 4($s0) -/* 07D7F4 7F048C84 E7A80310 */ swc1 $f8, 0x310($sp) -/* 07D7F8 7F048C88 C6040008 */ lwc1 $f4, 8($s0) -/* 07D7FC 7F048C8C E7AC0308 */ swc1 $f12, 0x308($sp) -/* 07D800 7F048C90 AFA2031C */ sw $v0, 0x31c($sp) -/* 07D804 7F048C94 0FC16265 */ jal sub_GAME_7F058474 -/* 07D808 7F048C98 E7A40314 */ swc1 $f4, 0x314($sp) -/* 07D80C 7F048C9C 26450040 */ addiu $a1, $s2, 0x40 -/* 07D810 7F048CA0 C7AC0308 */ lwc1 $f12, 0x308($sp) -/* 07D814 7F048CA4 0FC162C7 */ jal sub_GAME_7F0585FC -/* 07D818 7F048CA8 AFA50070 */ sw $a1, 0x70($sp) -/* 07D81C 7F048CAC 27A4030C */ addiu $a0, $sp, 0x30c -/* 07D820 7F048CB0 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D824 7F048CB4 8FA50070 */ lw $a1, 0x70($sp) -/* 07D828 7F048CB8 8FB8031C */ lw $t8, 0x31c($sp) -/* 07D82C 7F048CBC 8FA50070 */ lw $a1, 0x70($sp) -/* 07D830 7F048CC0 8F090014 */ lw $t1, 0x14($t8) -/* 07D834 7F048CC4 0FC163E7 */ jal matrix_multiply_A1_by_F12 -/* 07D838 7F048CC8 C52C0014 */ lwc1 $f12, 0x14($t1) -/* 07D83C 7F048CCC 0FC1E26D */ jal get_BONDdata_field_10CC -/* 07D840 7F048CD0 00000000 */ nop -/* 07D844 7F048CD4 00402025 */ move $a0, $v0 -/* 07D848 7F048CD8 0FC1616E */ jal sub_GAME_7F058098 -/* 07D84C 7F048CDC 8FA50070 */ lw $a1, 0x70($sp) -/* 07D850 7F048CE0 8E8B0008 */ lw $t3, 8($s4) -/* 07D854 7F048CE4 26450080 */ addiu $a1, $s2, 0x80 -/* 07D858 7F048CE8 C7AC0304 */ lwc1 $f12, 0x304($sp) -/* 07D85C 7F048CEC 8D6E0008 */ lw $t6, 8($t3) -/* 07D860 7F048CF0 8DCC0008 */ lw $t4, 8($t6) -/* 07D864 7F048CF4 8D900004 */ lw $s0, 4($t4) -/* 07D868 7F048CF8 0FC162EA */ jal sub_GAME_7F058688 -/* 07D86C 7F048CFC AFA5006C */ sw $a1, 0x6c($sp) -/* 07D870 7F048D00 02002025 */ move $a0, $s0 -/* 07D874 7F048D04 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D878 7F048D08 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D87C 7F048D0C 8FA40070 */ lw $a0, 0x70($sp) -/* 07D880 7F048D10 0FC1616E */ jal sub_GAME_7F058098 -/* 07D884 7F048D14 8FA5006C */ lw $a1, 0x6c($sp) -/* 07D888 7F048D18 8E8A0008 */ lw $t2, 8($s4) -/* 07D88C 7F048D1C 02802025 */ move $a0, $s4 -/* 07D890 7F048D20 8D430008 */ lw $v1, 8($t2) -/* 07D894 7F048D24 8C65000C */ lw $a1, 0xc($v1) -/* 07D898 7F048D28 50A00016 */ beql $a1, $zero, .Ljp7F048D84 -/* 07D89C 7F048D2C 8C650010 */ lw $a1, 0x10($v1) -/* 07D8A0 7F048D30 0FC1B314 */ jal sub_GAME_7F06C660 -/* 07D8A4 7F048D34 00003025 */ move $a2, $zero -/* 07D8A8 7F048D38 AFA20300 */ sw $v0, 0x300($sp) -/* 07D8AC 7F048D3C 8E8F0008 */ lw $t7, 8($s4) -/* 07D8B0 7F048D40 8FA8031C */ lw $t0, 0x31c($sp) -/* 07D8B4 7F048D44 00402825 */ move $a1, $v0 -/* 07D8B8 7F048D48 8DED0008 */ lw $t5, 8($t7) -/* 07D8BC 7F048D4C C50C00B4 */ lwc1 $f12, 0xb4($t0) -/* 07D8C0 7F048D50 8DB9000C */ lw $t9, 0xc($t5) -/* 07D8C4 7F048D54 0FC162A4 */ jal sub_GAME_7F058570 -/* 07D8C8 7F048D58 8F300004 */ lw $s0, 4($t9) -/* 07D8CC 7F048D5C 8FB20300 */ lw $s2, 0x300($sp) -/* 07D8D0 7F048D60 02002025 */ move $a0, $s0 -/* 07D8D4 7F048D64 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D8D8 7F048D68 02402825 */ move $a1, $s2 -/* 07D8DC 7F048D6C 8FA4006C */ lw $a0, 0x6c($sp) -/* 07D8E0 7F048D70 0FC1616E */ jal sub_GAME_7F058098 -/* 07D8E4 7F048D74 02402825 */ move $a1, $s2 -/* 07D8E8 7F048D78 8E980008 */ lw $t8, 8($s4) -/* 07D8EC 7F048D7C 8F030008 */ lw $v1, 8($t8) -/* 07D8F0 7F048D80 8C650010 */ lw $a1, 0x10($v1) -.Ljp7F048D84: -/* 07D8F4 7F048D84 02802025 */ move $a0, $s4 -/* 07D8F8 7F048D88 50A00010 */ beql $a1, $zero, .Ljp7F048DCC -/* 07D8FC 7F048D8C 8C650018 */ lw $a1, 0x18($v1) -/* 07D900 7F048D90 0FC1B314 */ jal sub_GAME_7F06C660 -/* 07D904 7F048D94 00003025 */ move $a2, $zero -/* 07D908 7F048D98 8E890008 */ lw $t1, 8($s4) -/* 07D90C 7F048D9C 00409025 */ move $s2, $v0 -/* 07D910 7F048DA0 00402825 */ move $a1, $v0 -/* 07D914 7F048DA4 8D2B0008 */ lw $t3, 8($t1) -/* 07D918 7F048DA8 8D6E0010 */ lw $t6, 0x10($t3) -/* 07D91C 7F048DAC 0FC163A1 */ jal init_something_copy_posdata_to_it -/* 07D920 7F048DB0 8DC40004 */ lw $a0, 4($t6) -/* 07D924 7F048DB4 8FA4006C */ lw $a0, 0x6c($sp) -/* 07D928 7F048DB8 0FC1616E */ jal sub_GAME_7F058098 -/* 07D92C 7F048DBC 02402825 */ move $a1, $s2 -/* 07D930 7F048DC0 8E8C0008 */ lw $t4, 8($s4) -/* 07D934 7F048DC4 8D830008 */ lw $v1, 8($t4) -/* 07D938 7F048DC8 8C650018 */ lw $a1, 0x18($v1) -.Ljp7F048DCC: -/* 07D93C 7F048DCC 02802025 */ move $a0, $s4 -/* 07D940 7F048DD0 50A001FE */ beql $a1, $zero, .Ljp7F0495CC -/* 07D944 7F048DD4 8E8C0008 */ lw $t4, 8($s4) -/* 07D948 7F048DD8 0FC1B314 */ jal sub_GAME_7F06C660 -/* 07D94C 7F048DDC 00003025 */ move $a2, $zero -/* 07D950 7F048DE0 8E8A0008 */ lw $t2, 8($s4) -/* 07D954 7F048DE4 8FB9031C */ lw $t9, 0x31c($sp) -/* 07D958 7F048DE8 00409025 */ move $s2, $v0 -/* 07D95C 7F048DEC 8D4F0008 */ lw $t7, 8($t2) -/* 07D960 7F048DF0 00402825 */ move $a1, $v0 -/* 07D964 7F048DF4 C72C00B4 */ lwc1 $f12, 0xb4($t9) -/* 07D968 7F048DF8 8DED0018 */ lw $t5, 0x18($t7) -/* 07D96C 7F048DFC 0FC162A4 */ jal sub_GAME_7F058570 -/* 07D970 7F048E00 8DB00004 */ lw $s0, 4($t5) -/* 07D974 7F048E04 02002025 */ move $a0, $s0 -/* 07D978 7F048E08 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07D97C 7F048E0C 02402825 */ move $a1, $s2 -/* 07D980 7F048E10 8FA4006C */ lw $a0, 0x6c($sp) -/* 07D984 7F048E14 0FC1616E */ jal sub_GAME_7F058098 -/* 07D988 7F048E18 02402825 */ move $a1, $s2 -/* 07D98C 7F048E1C 100001EB */ b .Ljp7F0495CC -/* 07D990 7F048E20 8E8C0008 */ lw $t4, 8($s4) -/* 07D994 7F048E24 24010008 */ li $at, 8 -.Ljp7F048E28: -/* 07D998 7F048E28 54410017 */ bnel $v0, $at, .Ljp7F048E88 -/* 07D99C 7F048E2C 2401000C */ li $at, 12 -/* 07D9A0 7F048E30 8E880008 */ lw $t0, 8($s4) -/* 07D9A4 7F048E34 24020001 */ li $v0, 1 -/* 07D9A8 7F048E38 26440040 */ addiu $a0, $s2, 0x40 -/* 07D9AC 7F048E3C 8518000E */ lh $t8, 0xe($t0) -/* 07D9B0 7F048E40 2B010002 */ slti $at, $t8, 2 -/* 07D9B4 7F048E44 542001E1 */ bnezl $at, .Ljp7F0495CC -/* 07D9B8 7F048E48 8E8C0008 */ lw $t4, 8($s4) -/* 07D9BC 7F048E4C AFA202FC */ sw $v0, 0x2fc($sp) -.Ljp7F048E50: -/* 07D9C0 7F048E50 0FC1613C */ jal init_0x40_bytes_data_at_address_last_word_1_0 -/* 07D9C4 7F048E54 AFA40078 */ sw $a0, 0x78($sp) -/* 07D9C8 7F048E58 8E890008 */ lw $t1, 8($s4) -/* 07D9CC 7F048E5C 8FA202FC */ lw $v0, 0x2fc($sp) -/* 07D9D0 7F048E60 8FA40078 */ lw $a0, 0x78($sp) -/* 07D9D4 7F048E64 852B000E */ lh $t3, 0xe($t1) -/* 07D9D8 7F048E68 24420001 */ addiu $v0, $v0, 1 -/* 07D9DC 7F048E6C 24840040 */ addiu $a0, $a0, 0x40 -/* 07D9E0 7F048E70 004B082A */ slt $at, $v0, $t3 -/* 07D9E4 7F048E74 5420FFF6 */ bnezl $at, .Ljp7F048E50 -/* 07D9E8 7F048E78 AFA202FC */ sw $v0, 0x2fc($sp) -/* 07D9EC 7F048E7C 100001D3 */ b .Ljp7F0495CC -/* 07D9F0 7F048E80 8E8C0008 */ lw $t4, 8($s4) -/* 07D9F4 7F048E84 2401000C */ li $at, 12 -.Ljp7F048E88: -/* 07D9F8 7F048E88 5441002C */ bnel $v0, $at, .Ljp7F048F3C -/* 07D9FC 7F048E8C 24010027 */ li $at, 39 -/* 07DA00 7F048E90 8E8E0008 */ lw $t6, 8($s4) -/* 07DA04 7F048E94 26450040 */ addiu $a1, $s2, 0x40 -/* 07DA08 7F048E98 8DCC0008 */ lw $t4, 8($t6) -/* 07DA0C 7F048E9C 8D8A0000 */ lw $t2, ($t4) -/* 07DA10 7F048EA0 8D440004 */ lw $a0, 4($t2) -/* 07DA14 7F048EA4 0FC163A1 */ jal init_something_copy_posdata_to_it -/* 07DA18 7F048EA8 AFA50070 */ sw $a1, 0x70($sp) -/* 07DA1C 7F048EAC 02402025 */ move $a0, $s2 -/* 07DA20 7F048EB0 0FC1616E */ jal sub_GAME_7F058098 -/* 07DA24 7F048EB4 8FA50070 */ lw $a1, 0x70($sp) -/* 07DA28 7F048EB8 8E8F0008 */ lw $t7, 8($s4) -/* 07DA2C 7F048EBC 26450080 */ addiu $a1, $s2, 0x80 -/* 07DA30 7F048EC0 8DED0008 */ lw $t5, 8($t7) -/* 07DA34 7F048EC4 8DB90004 */ lw $t9, 4($t5) -/* 07DA38 7F048EC8 8F240004 */ lw $a0, 4($t9) -/* 07DA3C 7F048ECC 0FC163A1 */ jal init_something_copy_posdata_to_it -/* 07DA40 7F048ED0 AFA5006C */ sw $a1, 0x6c($sp) -/* 07DA44 7F048ED4 02402025 */ move $a0, $s2 -/* 07DA48 7F048ED8 0FC1616E */ jal sub_GAME_7F058098 -/* 07DA4C 7F048EDC 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DA50 7F048EE0 8E880008 */ lw $t0, 8($s4) -/* 07DA54 7F048EE4 264500C0 */ addiu $a1, $s2, 0xc0 -/* 07DA58 7F048EE8 8D180008 */ lw $t8, 8($t0) -/* 07DA5C 7F048EEC 8F090008 */ lw $t1, 8($t8) -/* 07DA60 7F048EF0 8D240004 */ lw $a0, 4($t1) -/* 07DA64 7F048EF4 0FC163A1 */ jal init_something_copy_posdata_to_it -/* 07DA68 7F048EF8 AFA50078 */ sw $a1, 0x78($sp) -/* 07DA6C 7F048EFC 02402025 */ move $a0, $s2 -/* 07DA70 7F048F00 0FC1616E */ jal sub_GAME_7F058098 -/* 07DA74 7F048F04 8FA50078 */ lw $a1, 0x78($sp) -/* 07DA78 7F048F08 8E8B0008 */ lw $t3, 8($s4) -/* 07DA7C 7F048F0C 26500100 */ addiu $s0, $s2, 0x100 -/* 07DA80 7F048F10 02002825 */ move $a1, $s0 -/* 07DA84 7F048F14 8D6E0008 */ lw $t6, 8($t3) -/* 07DA88 7F048F18 8DCC000C */ lw $t4, 0xc($t6) -/* 07DA8C 7F048F1C 0FC163A1 */ jal init_something_copy_posdata_to_it -/* 07DA90 7F048F20 8D840004 */ lw $a0, 4($t4) -/* 07DA94 7F048F24 02402025 */ move $a0, $s2 -/* 07DA98 7F048F28 0FC1616E */ jal sub_GAME_7F058098 -/* 07DA9C 7F048F2C 02002825 */ move $a1, $s0 -/* 07DAA0 7F048F30 100001A6 */ b .Ljp7F0495CC -/* 07DAA4 7F048F34 8E8C0008 */ lw $t4, 8($s4) -/* 07DAA8 7F048F38 24010027 */ li $at, 39 -.Ljp7F048F3C: -/* 07DAAC 7F048F3C 544100B9 */ bnel $v0, $at, .Ljp7F049224 -/* 07DAB0 7F048F40 24010028 */ li $at, 40 -/* 07DAB4 7F048F44 8E8A0008 */ lw $t2, 8($s4) -/* 07DAB8 7F048F48 8FAC0680 */ lw $t4, 0x680($sp) -/* 07DABC 7F048F4C 4600B006 */ mov.s $f0, $f22 -/* 07DAC0 7F048F50 8D430008 */ lw $v1, 8($t2) -/* 07DAC4 7F048F54 8C6F0004 */ lw $t7, 4($v1) -/* 07DAC8 7F048F58 8DED0004 */ lw $t5, 4($t7) -/* 07DACC 7F048F5C AFAD0264 */ sw $t5, 0x264($sp) -/* 07DAD0 7F048F60 8C790008 */ lw $t9, 8($v1) -/* 07DAD4 7F048F64 8F280004 */ lw $t0, 4($t9) -/* 07DAD8 7F048F68 AFA80260 */ sw $t0, 0x260($sp) -/* 07DADC 7F048F6C 8C690010 */ lw $t1, 0x10($v1) -/* 07DAE0 7F048F70 8C78000C */ lw $t8, 0xc($v1) -/* 07DAE4 7F048F74 8D2B0004 */ lw $t3, 4($t1) -/* 07DAE8 7F048F78 8F100004 */ lw $s0, 4($t8) -/* 07DAEC 7F048F7C AFAB0258 */ sw $t3, 0x258($sp) -/* 07DAF0 7F048F80 8C6E0018 */ lw $t6, 0x18($v1) -/* 07DAF4 7F048F84 C6840014 */ lwc1 $f4, 0x14($s4) -/* 07DAF8 7F048F88 8DC20004 */ lw $v0, 4($t6) -/* 07DAFC 7F048F8C C4460010 */ lwc1 $f6, 0x10($v0) -/* 07DB00 7F048F90 C44A000C */ lwc1 $f10, 0xc($v0) -/* 07DB04 7F048F94 460A3201 */ sub.s $f8, $f6, $f10 -/* 07DB08 7F048F98 46044082 */ mul.s $f2, $f8, $f4 -/* 07DB0C 7F048F9C 11800026 */ beqz $t4, .Ljp7F049038 -/* 07DB10 7F048FA0 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 -/* 07DB14 7F048FA4 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07DB18 7F048FA8 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07DB1C 7F048FAC 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07DB20 7F048FB0 460A3202 */ mul.s $f8, $f6, $f10 -/* 07DB24 7F048FB4 44815000 */ mtc1 $at, $f10 -/* 07DB28 7F048FB8 46144102 */ mul.s $f4, $f8, $f20 -/* 07DB2C 7F048FBC 00000000 */ nop -/* 07DB30 7F048FC0 46141182 */ mul.s $f6, $f2, $f20 -/* 07DB34 7F048FC4 00000000 */ nop -/* 07DB38 7F048FC8 460A3202 */ mul.s $f8, $f6, $f10 -/* 07DB3C 7F048FCC C626008C */ lwc1 $f6, 0x8c($s1) -/* 07DB40 7F048FD0 46082003 */ div.s $f0, $f4, $f8 -/* 07DB44 7F048FD4 46003280 */ add.s $f10, $f6, $f0 -/* 07DB48 7F048FD8 E62A008C */ swc1 $f10, 0x8c($s1) -/* 07DB4C 7F048FDC C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07DB50 7F048FE0 460CA03E */ c.le.s $f20, $f12 -/* 07DB54 7F048FE4 00000000 */ nop -/* 07DB58 7F048FE8 45000008 */ bc1f .Ljp7F04900C -/* 07DB5C 7F048FEC 00000000 */ nop -/* 07DB60 7F048FF0 46146101 */ sub.s $f4, $f12, $f20 -.Ljp7F048FF4: -/* 07DB64 7F048FF4 E624008C */ swc1 $f4, 0x8c($s1) -/* 07DB68 7F048FF8 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07DB6C 7F048FFC 460CA03E */ c.le.s $f20, $f12 -/* 07DB70 7F049000 00000000 */ nop -/* 07DB74 7F049004 4503FFFB */ bc1tl .Ljp7F048FF4 -/* 07DB78 7F049008 46146101 */ sub.s $f4, $f12, $f20 -.Ljp7F04900C: -/* 07DB7C 7F04900C 4616603C */ c.lt.s $f12, $f22 -/* 07DB80 7F049010 00000000 */ nop -/* 07DB84 7F049014 45020009 */ bc1fl .Ljp7F04903C -/* 07DB88 7F049018 C626008C */ lwc1 $f6, 0x8c($s1) -/* 07DB8C 7F04901C 46146200 */ add.s $f8, $f12, $f20 -.Ljp7F049020: -/* 07DB90 7F049020 E628008C */ swc1 $f8, 0x8c($s1) -/* 07DB94 7F049024 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07DB98 7F049028 4616603C */ c.lt.s $f12, $f22 -/* 07DB9C 7F04902C 00000000 */ nop -/* 07DBA0 7F049030 4503FFFB */ bc1tl .Ljp7F049020 -/* 07DBA4 7F049034 46146200 */ add.s $f8, $f12, $f20 -.Ljp7F049038: -/* 07DBA8 7F049038 C626008C */ lwc1 $f6, 0x8c($s1) -.Ljp7F04903C: -/* 07DBAC 7F04903C 46003280 */ add.s $f10, $f6, $f0 -/* 07DBB0 7F049040 E62A008C */ swc1 $f10, 0x8c($s1) -/* 07DBB4 7F049044 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07DBB8 7F049048 460CA03E */ c.le.s $f20, $f12 -/* 07DBBC 7F04904C 00000000 */ nop -/* 07DBC0 7F049050 45020009 */ bc1fl .Ljp7F049078 -/* 07DBC4 7F049054 4616603C */ c.lt.s $f12, $f22 -/* 07DBC8 7F049058 46146101 */ sub.s $f4, $f12, $f20 -.Ljp7F04905C: -/* 07DBCC 7F04905C E624008C */ swc1 $f4, 0x8c($s1) -/* 07DBD0 7F049060 C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07DBD4 7F049064 460CA03E */ c.le.s $f20, $f12 -/* 07DBD8 7F049068 00000000 */ nop -/* 07DBDC 7F04906C 4503FFFB */ bc1tl .Ljp7F04905C -/* 07DBE0 7F049070 46146101 */ sub.s $f4, $f12, $f20 -/* 07DBE4 7F049074 4616603C */ c.lt.s $f12, $f22 -.Ljp7F049078: -/* 07DBE8 7F049078 00000000 */ nop -/* 07DBEC 7F04907C 45000008 */ bc1f .Ljp7F0490A0 -/* 07DBF0 7F049080 00000000 */ nop -/* 07DBF4 7F049084 46146200 */ add.s $f8, $f12, $f20 -.Ljp7F049088: -/* 07DBF8 7F049088 E628008C */ swc1 $f8, 0x8c($s1) -/* 07DBFC 7F04908C C62C008C */ lwc1 $f12, 0x8c($s1) -/* 07DC00 7F049090 4616603C */ c.lt.s $f12, $f22 -/* 07DC04 7F049094 00000000 */ nop -/* 07DC08 7F049098 4503FFFB */ bc1tl .Ljp7F049088 -/* 07DC0C 7F04909C 46146200 */ add.s $f8, $f12, $f20 -.Ljp7F0490A0: -/* 07DC10 7F0490A0 0FC162A4 */ jal sub_GAME_7F058570 -/* 07DC14 7F0490A4 27A502B0 */ addiu $a1, $sp, 0x2b0 -/* 07DC18 7F0490A8 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07DC1C 7F0490AC 4606B03C */ c.lt.s $f22, $f6 -/* 07DC20 7F0490B0 00000000 */ nop -/* 07DC24 7F0490B4 4502002B */ bc1fl .Ljp7F049164 -/* 07DC28 7F0490B8 C62C0090 */ lwc1 $f12, 0x90($s1) -/* 07DC2C 7F0490BC 8FAA0264 */ lw $t2, 0x264($sp) -/* 07DC30 7F0490C0 C60A0008 */ lwc1 $f10, 8($s0) -/* 07DC34 7F0490C4 C62C009C */ lwc1 $f12, 0x9c($s1) -/* 07DC38 7F0490C8 C5440008 */ lwc1 $f4, 8($t2) -/* 07DC3C 7F0490CC C6860014 */ lwc1 $f6, 0x14($s4) -/* 07DC40 7F0490D0 4616603C */ c.lt.s $f12, $f22 -/* 07DC44 7F0490D4 46045201 */ sub.s $f8, $f10, $f4 -/* 07DC48 7F0490D8 46064082 */ mul.s $f2, $f8, $f6 -/* 07DC4C 7F0490DC 45020003 */ bc1fl .Ljp7F0490EC -/* 07DC50 7F0490E0 E7A20254 */ swc1 $f2, 0x254($sp) -/* 07DC54 7F0490E4 46006307 */ neg.s $f12, $f12 -/* 07DC58 7F0490E8 E7A20254 */ swc1 $f2, 0x254($sp) -.Ljp7F0490EC: -/* 07DC5C 7F0490EC 0FC160F3 */ jal sinf -/* 07DC60 7F0490F0 E7AC0250 */ swc1 $f12, 0x250($sp) -/* 07DC64 7F0490F4 C7A20254 */ lwc1 $f2, 0x254($sp) -/* 07DC68 7F0490F8 C7AC0250 */ lwc1 $f12, 0x250($sp) -/* 07DC6C 7F0490FC 46020282 */ mul.s $f10, $f0, $f2 -/* 07DC70 7F049100 0FC160F0 */ jal cosf -/* 07DC74 7F049104 E7AA024C */ swc1 $f10, 0x24c($sp) -/* 07DC78 7F049108 C7A20254 */ lwc1 $f2, 0x254($sp) -/* 07DC7C 7F04910C C6280088 */ lwc1 $f8, 0x88($s1) -/* 07DC80 7F049110 C7AC024C */ lwc1 $f12, 0x24c($sp) -/* 07DC84 7F049114 46020102 */ mul.s $f4, $f0, $f2 -/* 07DC88 7F049118 46081181 */ sub.s $f6, $f2, $f8 -/* 07DC8C 7F04911C 0FC16BD4 */ jal convert_angle_using_inverse -/* 07DC90 7F049120 46062381 */ sub.s $f14, $f4, $f6 -/* 07DC94 7F049124 C7A20250 */ lwc1 $f2, 0x250($sp) -/* 07DC98 7F049128 E6200090 */ swc1 $f0, 0x90($s1) -/* 07DC9C 7F04912C 4602003C */ c.lt.s $f0, $f2 -/* 07DCA0 7F049130 00000000 */ nop -/* 07DCA4 7F049134 45020003 */ bc1fl .Ljp7F049144 -/* 07DCA8 7F049138 C62A009C */ lwc1 $f10, 0x9c($s1) -/* 07DCAC 7F04913C E6220090 */ swc1 $f2, 0x90($s1) -/* 07DCB0 7F049140 C62A009C */ lwc1 $f10, 0x9c($s1) -.Ljp7F049144: -/* 07DCB4 7F049144 460AB03C */ c.lt.s $f22, $f10 -/* 07DCB8 7F049148 00000000 */ nop -/* 07DCBC 7F04914C 45020005 */ bc1fl .Ljp7F049164 -/* 07DCC0 7F049150 C62C0090 */ lwc1 $f12, 0x90($s1) -/* 07DCC4 7F049154 C6280090 */ lwc1 $f8, 0x90($s1) -/* 07DCC8 7F049158 4608A101 */ sub.s $f4, $f20, $f8 -/* 07DCCC 7F04915C E6240090 */ swc1 $f4, 0x90($s1) -/* 07DCD0 7F049160 C62C0090 */ lwc1 $f12, 0x90($s1) -.Ljp7F049164: -/* 07DCD4 7F049164 0FC162C7 */ jal sub_GAME_7F0585FC -/* 07DCD8 7F049168 27A50270 */ addiu $a1, $sp, 0x270 -/* 07DCDC 7F04916C 264500C0 */ addiu $a1, $s2, 0xc0 -/* 07DCE0 7F049170 AFA50078 */ sw $a1, 0x78($sp) -/* 07DCE4 7F049174 0FC16150 */ jal sub_GAME_7F058020 -/* 07DCE8 7F049178 27A402B0 */ addiu $a0, $sp, 0x2b0 -/* 07DCEC 7F04917C 02002025 */ move $a0, $s0 -/* 07DCF0 7F049180 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DCF4 7F049184 8FA50078 */ lw $a1, 0x78($sp) -/* 07DCF8 7F049188 02402025 */ move $a0, $s2 -/* 07DCFC 7F04918C 0FC1616E */ jal sub_GAME_7F058098 -/* 07DD00 7F049190 8FA50078 */ lw $a1, 0x78($sp) -/* 07DD04 7F049194 26500100 */ addiu $s0, $s2, 0x100 -/* 07DD08 7F049198 02002825 */ move $a1, $s0 -/* 07DD0C 7F04919C 0FC16150 */ jal sub_GAME_7F058020 -/* 07DD10 7F0491A0 27A402B0 */ addiu $a0, $sp, 0x2b0 -/* 07DD14 7F0491A4 8FA40258 */ lw $a0, 0x258($sp) -/* 07DD18 7F0491A8 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DD1C 7F0491AC 02002825 */ move $a1, $s0 -/* 07DD20 7F0491B0 02402025 */ move $a0, $s2 -/* 07DD24 7F0491B4 0FC1616E */ jal sub_GAME_7F058098 -/* 07DD28 7F0491B8 02002825 */ move $a1, $s0 -/* 07DD2C 7F0491BC 27A40270 */ addiu $a0, $sp, 0x270 -/* 07DD30 7F0491C0 0FC1616E */ jal sub_GAME_7F058098 -/* 07DD34 7F0491C4 27A502B0 */ addiu $a1, $sp, 0x2b0 -/* 07DD38 7F0491C8 26450040 */ addiu $a1, $s2, 0x40 -/* 07DD3C 7F0491CC AFA50070 */ sw $a1, 0x70($sp) -/* 07DD40 7F0491D0 0FC16150 */ jal sub_GAME_7F058020 -/* 07DD44 7F0491D4 27A402B0 */ addiu $a0, $sp, 0x2b0 -/* 07DD48 7F0491D8 8FA40264 */ lw $a0, 0x264($sp) -/* 07DD4C 7F0491DC 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DD50 7F0491E0 8FA50070 */ lw $a1, 0x70($sp) -/* 07DD54 7F0491E4 02402025 */ move $a0, $s2 -/* 07DD58 7F0491E8 0FC1616E */ jal sub_GAME_7F058098 -/* 07DD5C 7F0491EC 8FA50070 */ lw $a1, 0x70($sp) -/* 07DD60 7F0491F0 26450080 */ addiu $a1, $s2, 0x80 -/* 07DD64 7F0491F4 AFA5006C */ sw $a1, 0x6c($sp) -/* 07DD68 7F0491F8 0FC16150 */ jal sub_GAME_7F058020 -/* 07DD6C 7F0491FC 27A402B0 */ addiu $a0, $sp, 0x2b0 -/* 07DD70 7F049200 8FA40260 */ lw $a0, 0x260($sp) -/* 07DD74 7F049204 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DD78 7F049208 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DD7C 7F04920C 02402025 */ move $a0, $s2 -/* 07DD80 7F049210 0FC1616E */ jal sub_GAME_7F058098 -/* 07DD84 7F049214 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DD88 7F049218 100000EC */ b .Ljp7F0495CC -/* 07DD8C 7F04921C 8E8C0008 */ lw $t4, 8($s4) -/* 07DD90 7F049220 24010028 */ li $at, 40 -.Ljp7F049224: -/* 07DD94 7F049224 14410086 */ bne $v0, $at, .Ljp7F049440 -/* 07DD98 7F049228 00000000 */ nop -/* 07DD9C 7F04922C 8E8F0008 */ lw $t7, 8($s4) -/* 07DDA0 7F049230 3C188005 */ lui $t8, %hi(clock_timer) # $t8, 0x8005 -/* 07DDA4 7F049234 8F1883A4 */ lw $t8, %lo(clock_timer)($t8) -/* 07DDA8 7F049238 8DED0008 */ lw $t5, 8($t7) -/* 07DDAC 7F04923C 8FA90680 */ lw $t1, 0x680($sp) -/* 07DDB0 7F049240 27B001B4 */ addiu $s0, $sp, 0x1b4 -/* 07DDB4 7F049244 8DB90008 */ lw $t9, 8($t5) -/* 07DDB8 7F049248 3C0C8003 */ lui $t4, %hi(D_80030B34) # $t4, 0x8003 -/* 07DDBC 7F04924C 02402025 */ move $a0, $s2 -/* 07DDC0 7F049250 8F280004 */ lw $t0, 4($t9) -/* 07DDC4 7F049254 26450040 */ addiu $a1, $s2, 0x40 -/* 07DDC8 7F049258 1B00001E */ blez $t8, .Ljp7F0492D4 -/* 07DDCC 7F04925C AFA80200 */ sw $t0, 0x200($sp) -/* 07DDD0 7F049260 5120001D */ beql $t1, $zero, .Ljp7F0492D8 -/* 07DDD4 7F049264 8E2B0014 */ lw $t3, 0x14($s1) -/* 07DDD8 7F049268 C6260088 */ lwc1 $f6, 0x88($s1) -/* 07DDDC 7F04926C C62A008C */ lwc1 $f10, 0x8c($s1) -/* 07DDE0 7F049270 460A3200 */ add.s $f8, $f6, $f10 -/* 07DDE4 7F049274 E6280088 */ swc1 $f8, 0x88($s1) -/* 07DDE8 7F049278 C6200088 */ lwc1 $f0, 0x88($s1) -/* 07DDEC 7F04927C 4600A03E */ c.le.s $f20, $f0 -/* 07DDF0 7F049280 00000000 */ nop -/* 07DDF4 7F049284 45020009 */ bc1fl .Ljp7F0492AC -/* 07DDF8 7F049288 4616003C */ c.lt.s $f0, $f22 -/* 07DDFC 7F04928C 46140101 */ sub.s $f4, $f0, $f20 -.Ljp7F049290: -/* 07DE00 7F049290 E6240088 */ swc1 $f4, 0x88($s1) -/* 07DE04 7F049294 C6200088 */ lwc1 $f0, 0x88($s1) -/* 07DE08 7F049298 4600A03E */ c.le.s $f20, $f0 -/* 07DE0C 7F04929C 00000000 */ nop -/* 07DE10 7F0492A0 4503FFFB */ bc1tl .Ljp7F049290 -/* 07DE14 7F0492A4 46140101 */ sub.s $f4, $f0, $f20 -/* 07DE18 7F0492A8 4616003C */ c.lt.s $f0, $f22 -.Ljp7F0492AC: -/* 07DE1C 7F0492AC 00000000 */ nop -/* 07DE20 7F0492B0 45020009 */ bc1fl .Ljp7F0492D8 -/* 07DE24 7F0492B4 8E2B0014 */ lw $t3, 0x14($s1) -/* 07DE28 7F0492B8 46140180 */ add.s $f6, $f0, $f20 -.Ljp7F0492BC: -/* 07DE2C 7F0492BC E6260088 */ swc1 $f6, 0x88($s1) -/* 07DE30 7F0492C0 C6200088 */ lwc1 $f0, 0x88($s1) -/* 07DE34 7F0492C4 4616003C */ c.lt.s $f0, $f22 -/* 07DE38 7F0492C8 00000000 */ nop -/* 07DE3C 7F0492CC 4503FFFB */ bc1tl .Ljp7F0492BC -/* 07DE40 7F0492D0 46140180 */ add.s $f6, $f0, $f20 -.Ljp7F0492D4: -/* 07DE44 7F0492D4 8E2B0014 */ lw $t3, 0x14($s1) -.Ljp7F0492D8: -/* 07DE48 7F0492D8 258C0B74 */ addiu $t4, %lo(D_80030B34) # addiu $t4, $t4, 0xb74 -/* 07DE4C 7F0492DC 258F003C */ addiu $t7, $t4, 0x3c -/* 07DE50 7F0492E0 8D6E0020 */ lw $t6, 0x20($t3) -/* 07DE54 7F0492E4 02006825 */ move $t5, $s0 -/* 07DE58 7F0492E8 11C00015 */ beqz $t6, .Ljp7F049340 -/* 07DE5C 7F0492EC 00000000 */ nop -.Ljp7F0492F0: -/* 07DE60 7F0492F0 8D810000 */ lw $at, ($t4) -/* 07DE64 7F0492F4 258C000C */ addiu $t4, $t4, 0xc -/* 07DE68 7F0492F8 25AD000C */ addiu $t5, $t5, 0xc -/* 07DE6C 7F0492FC ADA1FFF4 */ sw $at, -0xc($t5) -/* 07DE70 7F049300 8D81FFF8 */ lw $at, -8($t4) -/* 07DE74 7F049304 ADA1FFF8 */ sw $at, -8($t5) -/* 07DE78 7F049308 8D81FFFC */ lw $at, -4($t4) -/* 07DE7C 7F04930C 158FFFF8 */ bne $t4, $t7, .Ljp7F0492F0 -/* 07DE80 7F049310 ADA1FFFC */ sw $at, -4($t5) -/* 07DE84 7F049314 8D810000 */ lw $at, ($t4) -/* 07DE88 7F049318 0FC1E26D */ jal get_BONDdata_field_10CC -/* 07DE8C 7F04931C ADA10000 */ sw $at, ($t5) -/* 07DE90 7F049320 AFA201B4 */ sw $v0, 0x1b4($sp) -/* 07DE94 7F049324 AFB201C4 */ sw $s2, 0x1c4($sp) -/* 07DE98 7F049328 8E250014 */ lw $a1, 0x14($s1) -/* 07DE9C 7F04932C 0FC1BE3A */ jal subcalcmatrices -/* 07DEA0 7F049330 02002025 */ move $a0, $s0 -/* 07DEA4 7F049334 26590040 */ addiu $t9, $s2, 0x40 -/* 07DEA8 7F049338 10000003 */ b .Ljp7F049348 -/* 07DEAC 7F04933C AFB90070 */ sw $t9, 0x70($sp) -.Ljp7F049340: -/* 07DEB0 7F049340 0FC16150 */ jal sub_GAME_7F058020 -/* 07DEB4 7F049344 AFA50070 */ sw $a1, 0x70($sp) -.Ljp7F049348: -/* 07DEB8 7F049348 8E280008 */ lw $t0, 8($s1) -/* 07DEBC 7F04934C 27A50204 */ addiu $a1, $sp, 0x204 -/* 07DEC0 7F049350 0008C080 */ sll $t8, $t0, 2 -/* 07DEC4 7F049354 07010006 */ bgez $t8, .Ljp7F049370 -/* 07DEC8 7F049358 00000000 */ nop -/* 07DECC 7F04935C C62C0088 */ lwc1 $f12, 0x88($s1) -/* 07DED0 7F049360 0FC162EA */ jal sub_GAME_7F058688 -/* 07DED4 7F049364 27A50204 */ addiu $a1, $sp, 0x204 -/* 07DED8 7F049368 10000004 */ b .Ljp7F04937C -/* 07DEDC 7F04936C 26450080 */ addiu $a1, $s2, 0x80 -.Ljp7F049370: -/* 07DEE0 7F049370 0FC162C7 */ jal sub_GAME_7F0585FC -/* 07DEE4 7F049374 C62C0088 */ lwc1 $f12, 0x88($s1) -/* 07DEE8 7F049378 26450080 */ addiu $a1, $s2, 0x80 -.Ljp7F04937C: -/* 07DEEC 7F04937C AFA5006C */ sw $a1, 0x6c($sp) -/* 07DEF0 7F049380 0FC16150 */ jal sub_GAME_7F058020 -/* 07DEF4 7F049384 27A40204 */ addiu $a0, $sp, 0x204 -/* 07DEF8 7F049388 8FA40200 */ lw $a0, 0x200($sp) -/* 07DEFC 7F04938C 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DF00 7F049390 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DF04 7F049394 8FA40070 */ lw $a0, 0x70($sp) -/* 07DF08 7F049398 0FC1616E */ jal sub_GAME_7F058098 -/* 07DF0C 7F04939C 8FA5006C */ lw $a1, 0x6c($sp) -/* 07DF10 7F0493A0 8E890008 */ lw $t1, 8($s4) -/* 07DF14 7F0493A4 02802025 */ move $a0, $s4 -/* 07DF18 7F0493A8 00003025 */ move $a2, $zero -/* 07DF1C 7F0493AC 8D230008 */ lw $v1, 8($t1) -/* 07DF20 7F0493B0 8C65000C */ lw $a1, 0xc($v1) -/* 07DF24 7F0493B4 50A00013 */ beql $a1, $zero, .Ljp7F049404 -/* 07DF28 7F0493B8 8C650010 */ lw $a1, 0x10($v1) -/* 07DF2C 7F0493BC 0FC1B314 */ jal sub_GAME_7F06C660 -/* 07DF30 7F0493C0 8CB20004 */ lw $s2, 4($a1) -/* 07DF34 7F0493C4 00408025 */ move $s0, $v0 -/* 07DF38 7F0493C8 C62C0088 */ lwc1 $f12, 0x88($s1) -/* 07DF3C 7F0493CC 0FC162A4 */ jal sub_GAME_7F058570 -/* 07DF40 7F0493D0 27A50204 */ addiu $a1, $sp, 0x204 -/* 07DF44 7F0493D4 27A40204 */ addiu $a0, $sp, 0x204 -/* 07DF48 7F0493D8 0FC16150 */ jal sub_GAME_7F058020 -/* 07DF4C 7F0493DC 02002825 */ move $a1, $s0 -/* 07DF50 7F0493E0 02402025 */ move $a0, $s2 -/* 07DF54 7F0493E4 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07DF58 7F0493E8 02002825 */ move $a1, $s0 -/* 07DF5C 7F0493EC 8FA40070 */ lw $a0, 0x70($sp) -/* 07DF60 7F0493F0 0FC1616E */ jal sub_GAME_7F058098 -/* 07DF64 7F0493F4 02002825 */ move $a1, $s0 -/* 07DF68 7F0493F8 8E8B0008 */ lw $t3, 8($s4) -/* 07DF6C 7F0493FC 8D630008 */ lw $v1, 8($t3) -/* 07DF70 7F049400 8C650010 */ lw $a1, 0x10($v1) -.Ljp7F049404: -/* 07DF74 7F049404 02802025 */ move $a0, $s4 -/* 07DF78 7F049408 00003025 */ move $a2, $zero -/* 07DF7C 7F04940C 50A0006F */ beql $a1, $zero, .Ljp7F0495CC -/* 07DF80 7F049410 8E8C0008 */ lw $t4, 8($s4) -/* 07DF84 7F049414 0FC1B314 */ jal sub_GAME_7F06C660 -/* 07DF88 7F049418 8CB20004 */ lw $s2, 4($a1) -/* 07DF8C 7F04941C 00408025 */ move $s0, $v0 -/* 07DF90 7F049420 02402025 */ move $a0, $s2 -/* 07DF94 7F049424 0FC163A1 */ jal init_something_copy_posdata_to_it -/* 07DF98 7F049428 00402825 */ move $a1, $v0 -/* 07DF9C 7F04942C 8FA40070 */ lw $a0, 0x70($sp) -/* 07DFA0 7F049430 0FC1616E */ jal sub_GAME_7F058098 -/* 07DFA4 7F049434 02002825 */ move $a1, $s0 -/* 07DFA8 7F049438 10000064 */ b .Ljp7F0495CC -/* 07DFAC 7F04943C 8E8C0008 */ lw $t4, 8($s4) -.Ljp7F049440: -/* 07DFB0 7F049440 16020061 */ bne $s0, $v0, .Ljp7F0495C8 -/* 07DFB4 7F049444 26450040 */ addiu $a1, $s2, 0x40 -/* 07DFB8 7F049448 8E8E0008 */ lw $t6, 8($s4) -/* 07DFBC 7F04944C 8DC30008 */ lw $v1, 8($t6) -/* 07DFC0 7F049450 8C6F000C */ lw $t7, 0xc($v1) -/* 07DFC4 7F049454 8C6A0004 */ lw $t2, 4($v1) -/* 07DFC8 7F049458 8DEC0004 */ lw $t4, 4($t7) -/* 07DFCC 7F04945C 8D500004 */ lw $s0, 4($t2) -/* 07DFD0 7F049460 AFAC0168 */ sw $t4, 0x168($sp) -/* 07DFD4 7F049464 8C6D0010 */ lw $t5, 0x10($v1) -/* 07DFD8 7F049468 8DB90004 */ lw $t9, 4($t5) -/* 07DFDC 7F04946C AFB90164 */ sw $t9, 0x164($sp) -/* 07DFE0 7F049470 8C680008 */ lw $t0, 8($v1) -/* 07DFE4 7F049474 8D180004 */ lw $t8, 4($t0) -/* 07DFE8 7F049478 AFB80160 */ sw $t8, 0x160($sp) -/* 07DFEC 7F04947C 8C690018 */ lw $t1, 0x18($v1) -/* 07DFF0 7F049480 8D2B0004 */ lw $t3, 4($t1) -/* 07DFF4 7F049484 AFAB015C */ sw $t3, 0x15c($sp) -/* 07DFF8 7F049488 C62E00C8 */ lwc1 $f14, 0xc8($s1) -/* 07DFFC 7F04948C 46007387 */ neg.s $f14, $f14 -/* 07E000 7F049490 4616703C */ c.lt.s $f14, $f22 -/* 07E004 7F049494 00000000 */ nop -/* 07E008 7F049498 45020003 */ bc1fl .Ljp7F0494A8 -/* 07E00C 7F04949C C62C00CC */ lwc1 $f12, 0xcc($s1) -/* 07E010 7F0494A0 46147380 */ add.s $f14, $f14, $f20 -/* 07E014 7F0494A4 C62C00CC */ lwc1 $f12, 0xcc($s1) -.Ljp7F0494A8: -/* 07E018 7F0494A8 46006307 */ neg.s $f12, $f12 -/* 07E01C 7F0494AC 4616603C */ c.lt.s $f12, $f22 -/* 07E020 7F0494B0 00000000 */ nop -/* 07E024 7F0494B4 45020003 */ bc1fl .Ljp7F0494C4 -/* 07E028 7F0494B8 AFA50070 */ sw $a1, 0x70($sp) -/* 07E02C 7F0494BC 46146300 */ add.s $f12, $f12, $f20 -/* 07E030 7F0494C0 AFA50070 */ sw $a1, 0x70($sp) -.Ljp7F0494C4: -/* 07E034 7F0494C4 0FC162C7 */ jal sub_GAME_7F0585FC -/* 07E038 7F0494C8 E7AE0158 */ swc1 $f14, 0x158($sp) -/* 07E03C 7F0494CC 02002025 */ move $a0, $s0 -/* 07E040 7F0494D0 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07E044 7F0494D4 8FA50070 */ lw $a1, 0x70($sp) -/* 07E048 7F0494D8 02402025 */ move $a0, $s2 -/* 07E04C 7F0494DC 0FC1616E */ jal sub_GAME_7F058098 -/* 07E050 7F0494E0 8FA50070 */ lw $a1, 0x70($sp) -/* 07E054 7F0494E4 264500C0 */ addiu $a1, $s2, 0xc0 -/* 07E058 7F0494E8 C7AC0158 */ lwc1 $f12, 0x158($sp) -/* 07E05C 7F0494EC 0FC162A4 */ jal sub_GAME_7F058570 -/* 07E060 7F0494F0 AFA50078 */ sw $a1, 0x78($sp) -/* 07E064 7F0494F4 8FA40168 */ lw $a0, 0x168($sp) -/* 07E068 7F0494F8 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07E06C 7F0494FC 8FA50078 */ lw $a1, 0x78($sp) -/* 07E070 7F049500 8FA40070 */ lw $a0, 0x70($sp) -/* 07E074 7F049504 0FC1616E */ jal sub_GAME_7F058098 -/* 07E078 7F049508 8FA50078 */ lw $a1, 0x78($sp) -/* 07E07C 7F04950C 3C018005 */ lui $at, %hi(D_80052B70) # $at, 0x8005 -/* 07E080 7F049510 26500100 */ addiu $s0, $s2, 0x100 -/* 07E084 7F049514 02002825 */ move $a1, $s0 -/* 07E088 7F049518 0FC162C7 */ jal sub_GAME_7F0585FC -/* 07E08C 7F04951C C42C2BA0 */ lwc1 $f12, %lo(D_80052B70)($at) -/* 07E090 7F049520 8FA40164 */ lw $a0, 0x164($sp) -/* 07E094 7F049524 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 07E098 7F049528 02002825 */ move $a1, $s0 -/* 07E09C 7F04952C 8FA40078 */ lw $a0, 0x78($sp) -/* 07E0A0 7F049530 0FC1616E */ jal sub_GAME_7F058098 -/* 07E0A4 7F049534 02002825 */ move $a1, $s0 -/* 07E0A8 7F049538 26450080 */ addiu $a1, $s2, 0x80 -/* 07E0AC 7F04953C AFA5006C */ sw $a1, 0x6c($sp) -/* 07E0B0 7F049540 0FC163A1 */ jal init_something_copy_posdata_to_it -/* 07E0B4 7F049544 8FA40160 */ lw $a0, 0x160($sp) -/* 07E0B8 7F049548 8FA40070 */ lw $a0, 0x70($sp) -/* 07E0BC 7F04954C 0FC1616E */ jal sub_GAME_7F058098 -/* 07E0C0 7F049550 8FA5006C */ lw $a1, 0x6c($sp) -/* 07E0C4 7F049554 0FC1E28D */ jal sub_GAME_7F078444 -/* 07E0C8 7F049558 00000000 */ nop -/* 07E0CC 7F04955C 27B00170 */ addiu $s0, $sp, 0x170 -/* 07E0D0 7F049560 02003025 */ move $a2, $s0 -/* 07E0D4 7F049564 00402025 */ move $a0, $v0 -/* 07E0D8 7F049568 0FC161AB */ jal sub_GAME_7F05818C -/* 07E0DC 7F04956C 8FA50070 */ lw $a1, 0x70($sp) -/* 07E0E0 7F049570 8FA4015C */ lw $a0, 0x15c($sp) -/* 07E0E4 7F049574 02002825 */ move $a1, $s0 -/* 07E0E8 7F049578 26260084 */ addiu $a2, $s1, 0x84 -/* 07E0EC 7F04957C 0FC0FE10 */ jal sub_GAME_7F03F540 -/* 07E0F0 7F049580 26270080 */ addiu $a3, $s1, 0x80 -/* 07E0F4 7F049584 8E8E0008 */ lw $t6, 8($s4) -/* 07E0F8 7F049588 8DC30008 */ lw $v1, 8($t6) -/* 07E0FC 7F04958C 8C65001C */ lw $a1, 0x1c($v1) -/* 07E100 7F049590 50A00008 */ beql $a1, $zero, .Ljp7F0495B4 -/* 07E104 7F049594 8C650020 */ lw $a1, 0x20($v1) -/* 07E108 7F049598 0FC1B363 */ jal extract_id_from_object_structure_microcode -/* 07E10C 7F04959C 02802025 */ move $a0, $s4 -/* 07E110 7F0495A0 8E2A00C4 */ lw $t2, 0xc4($s1) -/* 07E114 7F0495A4 A44A0000 */ sh $t2, ($v0) -/* 07E118 7F0495A8 8E8F0008 */ lw $t7, 8($s4) -/* 07E11C 7F0495AC 8DE30008 */ lw $v1, 8($t7) -/* 07E120 7F0495B0 8C650020 */ lw $a1, 0x20($v1) -.Ljp7F0495B4: -/* 07E124 7F0495B4 50A00005 */ beql $a1, $zero, .Ljp7F0495CC -/* 07E128 7F0495B8 8E8C0008 */ lw $t4, 8($s4) -/* 07E12C 7F0495BC 0FC1B363 */ jal extract_id_from_object_structure_microcode -/* 07E130 7F0495C0 02802025 */ move $a0, $s4 -/* 07E134 7F0495C4 AC400000 */ sw $zero, ($v0) -.Ljp7F0495C8: -/* 07E138 7F0495C8 8E8C0008 */ lw $t4, 8($s4) -.Ljp7F0495CC: -/* 07E13C 7F0495CC 02802025 */ move $a0, $s4 -/* 07E140 7F0495D0 0FC1BD25 */ jal sub_GAME_7F06EEA4 -/* 07E144 7F0495D4 8D850000 */ lw $a1, ($t4) -/* 07E148 7F0495D8 8E8D000C */ lw $t5, 0xc($s4) -/* 07E14C 7F0495DC 02602025 */ move $a0, $s3 -/* 07E150 7F0495E0 C5AA0038 */ lwc1 $f10, 0x38($t5) -/* 07E154 7F0495E4 46005207 */ neg.s $f8, $f10 -/* 07E158 7F0495E8 0FC1101D */ jal handle_thrown_explosive_detonation -/* 07E15C 7F0495EC E6680018 */ swc1 $f8, 0x18($s3) -/* 07E160 7F0495F0 8E640020 */ lw $a0, 0x20($s3) -/* 07E164 7F0495F4 50800018 */ beql $a0, $zero, .Ljp7F049658 -/* 07E168 7F0495F8 8E230064 */ lw $v1, 0x64($s1) -/* 07E16C 7F0495FC 8C820024 */ lw $v0, 0x24($a0) -.Ljp7F049600: -/* 07E170 7F049600 0FC11171 */ jal sub_GAME_7F0442DC -/* 07E174 7F049604 AFA2068C */ sw $v0, 0x68c($sp) -/* 07E178 7F049608 8FA4068C */ lw $a0, 0x68c($sp) -/* 07E17C 7F04960C 5480FFFC */ bnezl $a0, .Ljp7F049600 -/* 07E180 7F049610 8C820024 */ lw $v0, 0x24($a0) -/* 07E184 7F049614 10000010 */ b .Ljp7F049658 -/* 07E188 7F049618 8E230064 */ lw $v1, 0x64($s1) -.Ljp7F04961C: -/* 07E18C 7F04961C 92790001 */ lbu $t9, 1($s3) -/* 07E190 7F049620 02602025 */ move $a0, $s3 -/* 07E194 7F049624 3328FFFD */ andi $t0, $t9, 0xfffd -/* 07E198 7F049628 0FC1101D */ jal handle_thrown_explosive_detonation -/* 07E19C 7F04962C A2680001 */ sb $t0, 1($s3) -/* 07E1A0 7F049630 8E640020 */ lw $a0, 0x20($s3) -/* 07E1A4 7F049634 50800008 */ beql $a0, $zero, .Ljp7F049658 -/* 07E1A8 7F049638 8E230064 */ lw $v1, 0x64($s1) -/* 07E1AC 7F04963C 8C820024 */ lw $v0, 0x24($a0) -.Ljp7F049640: -/* 07E1B0 7F049640 0FC1114D */ jal sub_GAME_7F04424C -/* 07E1B4 7F049644 AFA2068C */ sw $v0, 0x68c($sp) -/* 07E1B8 7F049648 8FA4068C */ lw $a0, 0x68c($sp) -/* 07E1BC 7F04964C 5480FFFC */ bnezl $a0, .Ljp7F049640 -/* 07E1C0 7F049650 8C820024 */ lw $v0, 0x24($a0) -/* 07E1C4 7F049654 8E230064 */ lw $v1, 0x64($s1) -.Ljp7F049658: -/* 07E1C8 7F049658 2401FEFF */ li $at, -257 -/* 07E1CC 7F04965C 266B0008 */ addiu $t3, $s3, 8 -/* 07E1D0 7F049660 30780100 */ andi $t8, $v1, 0x100 -/* 07E1D4 7F049664 1300001F */ beqz $t8, .Ljp7F0496E4 -/* 07E1D8 7F049668 00614824 */ and $t1, $v1, $at -/* 07E1DC 7F04966C AE290064 */ sw $t1, 0x64($s1) -/* 07E1E0 7F049670 0C002918 */ jal get_random_value -/* 07E1E4 7F049674 AFAB0074 */ sw $t3, 0x74($sp) -/* 07E1E8 7F049678 44822000 */ mtc1 $v0, $f4 -/* 07E1EC 7F04967C 02202025 */ move $a0, $s1 -/* 07E1F0 7F049680 04410005 */ bgez $v0, .Ljp7F049698 -/* 07E1F4 7F049684 468021A0 */ cvt.s.w $f6, $f4 -/* 07E1F8 7F049688 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07E1FC 7F04968C 44815000 */ mtc1 $at, $f10 -/* 07E200 7F049690 00000000 */ nop -/* 07E204 7F049694 460A3180 */ add.s $f6, $f6, $f10 -.Ljp7F049698: -/* 07E208 7F049698 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07E20C 7F04969C 44814000 */ mtc1 $at, $f8 -/* 07E210 7F0496A0 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 07E214 7F0496A4 44815000 */ mtc1 $at, $f10 -/* 07E218 7F0496A8 46083102 */ mul.s $f4, $f6, $f8 -/* 07E21C 7F0496AC 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 07E220 7F0496B0 44814000 */ mtc1 $at, $f8 -/* 07E224 7F0496B4 8E2E0064 */ lw $t6, 0x64($s1) -/* 07E228 7F0496B8 3C010006 */ lui $at, 6 -/* 07E22C 7F0496BC 8FA60074 */ lw $a2, 0x74($sp) -/* 07E230 7F0496C0 01C15024 */ and $t2, $t6, $at -/* 07E234 7F0496C4 460A2182 */ mul.s $f6, $f4, $f10 -/* 07E238 7F0496C8 00003825 */ move $a3, $zero -/* 07E23C 7F0496CC 000A7C42 */ srl $t7, $t2, 0x11 -/* 07E240 7F0496D0 AFAF0010 */ sw $t7, 0x10($sp) -/* 07E244 7F0496D4 46083100 */ add.s $f4, $f6, $f8 -/* 07E248 7F0496D8 44052000 */ mfc1 $a1, $f4 -/* 07E24C 7F0496DC 0FC13943 */ jal maybe_detonate_object -/* 07E250 7F0496E0 00000000 */ nop -.Ljp7F0496E4: -/* 07E254 7F0496E4 8FAC0680 */ lw $t4, 0x680($sp) -/* 07E258 7F0496E8 5180020D */ beql $t4, $zero, .Ljp7F049F20 -/* 07E25C 7F0496EC 8FAD0688 */ lw $t5, 0x688($sp) -/* 07E260 7F0496F0 92220003 */ lbu $v0, 3($s1) -/* 07E264 7F0496F4 24010001 */ li $at, 1 -/* 07E268 7F0496F8 54410006 */ bnel $v0, $at, .Ljp7F049714 -/* 07E26C 7F0496FC 2401000D */ li $at, 13 -/* 07E270 7F049700 0FC14FCE */ jal sub_GAME_7F053A3C -/* 07E274 7F049704 8E640004 */ lw $a0, 4($s3) -/* 07E278 7F049708 10000202 */ b .Ljp7F049F14 -/* 07E27C 7F04970C 00000000 */ nop -/* 07E280 7F049710 2401000D */ li $at, 13 -.Ljp7F049714: -/* 07E284 7F049714 144101FF */ bne $v0, $at, .Ljp7F049F14 -/* 07E288 7F049718 00000000 */ nop -/* 07E28C 7F04971C 0FC3021B */ jal get_controls_locked_flag -/* 07E290 7F049720 00000000 */ nop -/* 07E294 7F049724 144001FB */ bnez $v0, .Ljp7F049F14 -/* 07E298 7F049728 00000000 */ nop -/* 07E29C 7F04972C 8E700004 */ lw $s0, 4($s3) -/* 07E2A0 7F049730 AFA00140 */ sw $zero, 0x140($sp) -/* 07E2A4 7F049734 AFA0013C */ sw $zero, 0x13c($sp) -/* 07E2A8 7F049738 8E0D00D0 */ lw $t5, 0xd0($s0) -/* 07E2AC 7F04973C 51A001E4 */ beql $t5, $zero, .Ljp7F049ED0 -/* 07E2B0 7F049740 8E8E0008 */ lw $t6, 8($s4) -/* 07E2B4 7F049744 8E390008 */ lw $t9, 8($s1) -/* 07E2B8 7F049748 001940C0 */ sll $t0, $t9, 3 -/* 07E2BC 7F04974C 050201E0 */ bltzl $t0, .Ljp7F049ED0 -/* 07E2C0 7F049750 8E8E0008 */ lw $t6, 8($s4) -/* 07E2C4 7F049754 8E1800AC */ lw $t8, 0xac($s0) -/* 07E2C8 7F049758 3C088005 */ lui $t0, %hi(global_timer) # $t0, 0x8005 -/* 07E2CC 7F04975C 27090001 */ addiu $t1, $t8, 1 -/* 07E2D0 7F049760 312B0001 */ andi $t3, $t1, 1 -/* 07E2D4 7F049764 AE0900AC */ sw $t1, 0xac($s0) -/* 07E2D8 7F049768 2D6E0001 */ sltiu $t6, $t3, 1 -/* 07E2DC 7F04976C AFAE0140 */ sw $t6, 0x140($sp) -/* 07E2E0 7F049770 8E8A0008 */ lw $t2, 8($s4) -/* 07E2E4 7F049774 396D0001 */ xori $t5, $t3, 1 -/* 07E2E8 7F049778 2DAD0001 */ sltiu $t5, $t5, 1 -/* 07E2EC 7F04977C 8D4F0008 */ lw $t7, 8($t2) -/* 07E2F0 7F049780 8DEC0014 */ lw $t4, 0x14($t7) -/* 07E2F4 7F049784 51800003 */ beql $t4, $zero, .Ljp7F049794 -/* 07E2F8 7F049788 8E1900C0 */ lw $t9, 0xc0($s0) -/* 07E2FC 7F04978C AFAD013C */ sw $t5, 0x13c($sp) -/* 07E300 7F049790 8E1900C0 */ lw $t9, 0xc0($s0) -.Ljp7F049794: -/* 07E304 7F049794 8D0883AC */ lw $t0, %lo(global_timer)($t0) -/* 07E308 7F049798 0328082A */ slt $at, $t9, $t0 -/* 07E30C 7F04979C 50200032 */ beql $at, $zero, .Ljp7F049868 -/* 07E310 7F0497A0 8FAC0140 */ lw $t4, 0x140($sp) -/* 07E314 7F0497A4 8E0400C4 */ lw $a0, 0xc4($s0) -/* 07E318 7F0497A8 50800008 */ beql $a0, $zero, .Ljp7F0497CC -/* 07E31C 7F0497AC 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07E320 7F0497B0 0C002380 */ jal sfxGetArg0Unk3F -/* 07E324 7F0497B4 00000000 */ nop -/* 07E328 7F0497B8 50400004 */ beql $v0, $zero, .Ljp7F0497CC -/* 07E32C 7F0497BC 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07E330 7F0497C0 0C00240C */ jal sfxDeactivate -/* 07E334 7F0497C4 8E0400C4 */ lw $a0, 0xc4($s0) -/* 07E338 7F0497C8 8E0400C8 */ lw $a0, 0xc8($s0) -.Ljp7F0497CC: -/* 07E33C 7F0497CC 50800008 */ beql $a0, $zero, .Ljp7F0497F0 -/* 07E340 7F0497D0 8E1800C4 */ lw $t8, 0xc4($s0) -/* 07E344 7F0497D4 0C002380 */ jal sfxGetArg0Unk3F -/* 07E348 7F0497D8 00000000 */ nop -/* 07E34C 7F0497DC 50400004 */ beql $v0, $zero, .Ljp7F0497F0 -/* 07E350 7F0497E0 8E1800C4 */ lw $t8, 0xc4($s0) -/* 07E354 7F0497E4 0C00240C */ jal sfxDeactivate -/* 07E358 7F0497E8 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07E35C 7F0497EC 8E1800C4 */ lw $t8, 0xc4($s0) -.Ljp7F0497F0: -/* 07E360 7F0497F0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07E364 7F0497F4 240500FD */ li $a1, 253 -/* 07E368 7F0497F8 1700000A */ bnez $t8, .Ljp7F049824 -/* 07E36C 7F0497FC 260600C4 */ addiu $a2, $s0, 0xc4 -/* 07E370 7F049800 26690008 */ addiu $t1, $s3, 8 -/* 07E374 7F049804 AFA90074 */ sw $t1, 0x74($sp) -/* 07E378 7F049808 0C002386 */ jal play_sfx_a1 -/* 07E37C 7F04980C 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07E380 7F049810 8E0400C4 */ lw $a0, 0xc4($s0) -/* 07E384 7F049814 0FC14FC3 */ jal sub_GAME_7F053A10 -/* 07E388 7F049818 8FA50074 */ lw $a1, 0x74($sp) -/* 07E38C 7F04981C 1000000D */ b .Ljp7F049854 -/* 07E390 7F049820 00000000 */ nop -.Ljp7F049824: -/* 07E394 7F049824 8E0B00C8 */ lw $t3, 0xc8($s0) -/* 07E398 7F049828 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 -/* 07E39C 7F04982C 240500FD */ li $a1, 253 -/* 07E3A0 7F049830 15600008 */ bnez $t3, .Ljp7F049854 -/* 07E3A4 7F049834 260600C8 */ addiu $a2, $s0, 0xc8 -/* 07E3A8 7F049838 266E0008 */ addiu $t6, $s3, 8 -/* 07E3AC 7F04983C AFAE0074 */ sw $t6, 0x74($sp) -/* 07E3B0 7F049840 0C002386 */ jal play_sfx_a1 -/* 07E3B4 7F049844 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 07E3B8 7F049848 8E0400C8 */ lw $a0, 0xc8($s0) -/* 07E3BC 7F04984C 0FC14FC3 */ jal sub_GAME_7F053A10 -/* 07E3C0 7F049850 8FA50074 */ lw $a1, 0x74($sp) -.Ljp7F049854: -/* 07E3C4 7F049854 3C0A8005 */ lui $t2, %hi(global_timer) # $t2, 0x8005 -/* 07E3C8 7F049858 8D4A83AC */ lw $t2, %lo(global_timer)($t2) -/* 07E3CC 7F04985C 254F0002 */ addiu $t7, $t2, 2 -/* 07E3D0 7F049860 AE0F00C0 */ sw $t7, 0xc0($s0) -/* 07E3D4 7F049864 8FAC0140 */ lw $t4, 0x140($sp) -.Ljp7F049868: -/* 07E3D8 7F049868 8FAD013C */ lw $t5, 0x13c($sp) -/* 07E3DC 7F04986C 24190001 */ li $t9, 1 -/* 07E3E0 7F049870 55800004 */ bnezl $t4, .Ljp7F049884 -/* 07E3E4 7F049874 AFB90120 */ sw $t9, 0x120($sp) -/* 07E3E8 7F049878 51A00195 */ beql $t5, $zero, .Ljp7F049ED0 -/* 07E3EC 7F04987C 8E8E0008 */ lw $t6, 8($s4) -/* 07E3F0 7F049880 AFB90120 */ sw $t9, 0x120($sp) -.Ljp7F049884: -/* 07E3F4 7F049884 AFA00110 */ sw $zero, 0x110($sp) -/* 07E3F8 7F049888 8E680014 */ lw $t0, 0x14($s3) -/* 07E3FC 7F04988C AFA8010C */ sw $t0, 0x10c($sp) -/* 07E400 7F049890 8E1800AC */ lw $t8, 0xac($s0) -/* 07E404 7F049894 33090003 */ andi $t1, $t8, 3 -/* 07E408 7F049898 2D2B0001 */ sltiu $t3, $t1, 1 -/* 07E40C 7F04989C 0FC2279B */ jal get_curplayer_positiondata -/* 07E410 7F0498A0 AFAB0108 */ sw $t3, 0x108($sp) -/* 07E414 7F0498A4 AFA20104 */ sw $v0, 0x104($sp) -/* 07E418 7F0498A8 8E8E0008 */ lw $t6, 8($s4) -/* 07E41C 7F0498AC 24040005 */ li $a0, 5 -/* 07E420 7F0498B0 8DC30008 */ lw $v1, 8($t6) -/* 07E424 7F0498B4 8C6A001C */ lw $t2, 0x1c($v1) -/* 07E428 7F0498B8 51400007 */ beql $t2, $zero, .Ljp7F0498D8 -/* 07E42C 7F0498BC 926D0001 */ lbu $t5, 1($s3) -/* 07E430 7F0498C0 8E0F00AC */ lw $t7, 0xac($s0) -/* 07E434 7F0498C4 31EC0007 */ andi $t4, $t7, 7 -/* 07E438 7F0498C8 55800003 */ bnezl $t4, .Ljp7F0498D8 -/* 07E43C 7F0498CC 926D0001 */ lbu $t5, 1($s3) -/* 07E440 7F0498D0 24040007 */ li $a0, 7 -/* 07E444 7F0498D4 926D0001 */ lbu $t5, 1($s3) -.Ljp7F0498D8: -/* 07E448 7F0498D8 31B90002 */ andi $t9, $t5, 2 -/* 07E44C 7F0498DC 1320002D */ beqz $t9, .Ljp7F049994 -/* 07E450 7F0498E0 00048880 */ sll $s1, $a0, 2 -/* 07E454 7F0498E4 00714021 */ addu $t0, $v1, $s1 -/* 07E458 7F0498E8 8D050000 */ lw $a1, ($t0) -/* 07E45C 7F0498EC 02802025 */ move $a0, $s4 -/* 07E460 7F0498F0 50A00029 */ beql $a1, $zero, .Ljp7F049998 -/* 07E464 7F0498F4 C6640008 */ lwc1 $f4, 8($s3) -/* 07E468 7F0498F8 0FC1B314 */ jal sub_GAME_7F06C660 -/* 07E46C 7F0498FC 00003025 */ move $a2, $zero -/* 07E470 7F049900 8E980008 */ lw $t8, 8($s4) -/* 07E474 7F049904 00409025 */ move $s2, $v0 -/* 07E478 7F049908 8F090008 */ lw $t1, 8($t8) -/* 07E47C 7F04990C 01315821 */ addu $t3, $t1, $s1 -/* 07E480 7F049910 8D6E0000 */ lw $t6, ($t3) -/* 07E484 7F049914 8DC30004 */ lw $v1, 4($t6) -/* 07E488 7F049918 C46A0000 */ lwc1 $f10, ($v1) -/* 07E48C 7F04991C E7AA0130 */ swc1 $f10, 0x130($sp) -/* 07E490 7F049920 C4660004 */ lwc1 $f6, 4($v1) -/* 07E494 7F049924 E7A60134 */ swc1 $f6, 0x134($sp) -/* 07E498 7F049928 C4680008 */ lwc1 $f8, 8($v1) -/* 07E49C 7F04992C 0FC1E28D */ jal sub_GAME_7F078444 -/* 07E4A0 7F049930 E7A80138 */ swc1 $f8, 0x138($sp) -/* 07E4A4 7F049934 27B100BC */ addiu $s1, $sp, 0xbc -/* 07E4A8 7F049938 02203025 */ move $a2, $s1 -/* 07E4AC 7F04993C 00402025 */ move $a0, $v0 -/* 07E4B0 7F049940 0FC161AB */ jal sub_GAME_7F05818C -/* 07E4B4 7F049944 02402825 */ move $a1, $s2 -/* 07E4B8 7F049948 02202025 */ move $a0, $s1 -/* 07E4BC 7F04994C 0FC16265 */ jal sub_GAME_7F058474 -/* 07E4C0 7F049950 27A50130 */ addiu $a1, $sp, 0x130 -/* 07E4C4 7F049954 C7A40138 */ lwc1 $f4, 0x138($sp) -/* 07E4C8 7F049958 8E650008 */ lw $a1, 8($s3) -/* 07E4CC 7F04995C 8E660010 */ lw $a2, 0x10($s3) -/* 07E4D0 7F049960 27A4010C */ addiu $a0, $sp, 0x10c -/* 07E4D4 7F049964 8FA70130 */ lw $a3, 0x130($sp) -/* 07E4D8 7F049968 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 -/* 07E4DC 7F04996C E7A40010 */ swc1 $f4, 0x10($sp) -/* 07E4E0 7F049970 1440000E */ bnez $v0, .Ljp7F0499AC -/* 07E4E4 7F049974 00000000 */ nop -/* 07E4E8 7F049978 C66A0008 */ lwc1 $f10, 8($s3) -/* 07E4EC 7F04997C E7AA0130 */ swc1 $f10, 0x130($sp) -/* 07E4F0 7F049980 C666000C */ lwc1 $f6, 0xc($s3) -/* 07E4F4 7F049984 E7A60134 */ swc1 $f6, 0x134($sp) -/* 07E4F8 7F049988 C6680010 */ lwc1 $f8, 0x10($s3) -/* 07E4FC 7F04998C 10000007 */ b .Ljp7F0499AC -/* 07E500 7F049990 E7A80138 */ swc1 $f8, 0x138($sp) -.Ljp7F049994: -/* 07E504 7F049994 C6640008 */ lwc1 $f4, 8($s3) -.Ljp7F049998: -/* 07E508 7F049998 E7A40130 */ swc1 $f4, 0x130($sp) -/* 07E50C 7F04999C C66A000C */ lwc1 $f10, 0xc($s3) -/* 07E510 7F0499A0 E7AA0134 */ swc1 $f10, 0x134($sp) -/* 07E514 7F0499A4 C6660010 */ lwc1 $f6, 0x10($s3) -/* 07E518 7F0499A8 E7A60138 */ swc1 $f6, 0x138($sp) -.Ljp7F0499AC: -/* 07E51C 7F0499AC 0FC160F0 */ jal cosf -/* 07E520 7F0499B0 C60C009C */ lwc1 $f12, 0x9c($s0) -/* 07E524 7F0499B4 C60C0090 */ lwc1 $f12, 0x90($s0) -/* 07E528 7F0499B8 0FC160F3 */ jal sinf -/* 07E52C 7F0499BC E7A00080 */ swc1 $f0, 0x80($sp) -/* 07E530 7F0499C0 C7A20080 */ lwc1 $f2, 0x80($sp) -/* 07E534 7F0499C4 46020202 */ mul.s $f8, $f0, $f2 -/* 07E538 7F0499C8 E7A80124 */ swc1 $f8, 0x124($sp) -/* 07E53C 7F0499CC 0FC160F3 */ jal sinf -/* 07E540 7F0499D0 C60C009C */ lwc1 $f12, 0x9c($s0) -/* 07E544 7F0499D4 E7A00128 */ swc1 $f0, 0x128($sp) -/* 07E548 7F0499D8 0FC160F0 */ jal cosf -/* 07E54C 7F0499DC C60C009C */ lwc1 $f12, 0x9c($s0) -/* 07E550 7F0499E0 C60C0090 */ lwc1 $f12, 0x90($s0) -/* 07E554 7F0499E4 0FC160F0 */ jal cosf -/* 07E558 7F0499E8 E7A00080 */ swc1 $f0, 0x80($sp) -/* 07E55C 7F0499EC C7A20080 */ lwc1 $f2, 0x80($sp) -/* 07E560 7F0499F0 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07E564 7F0499F4 44816000 */ mtc1 $at, $f12 -/* 07E568 7F0499F8 46020382 */ mul.s $f14, $f0, $f2 -/* 07E56C 7F0499FC C7A40124 */ lwc1 $f4, 0x124($sp) -/* 07E570 7F049A00 C7A60130 */ lwc1 $f6, 0x130($sp) -/* 07E574 7F049A04 460C2282 */ mul.s $f10, $f4, $f12 -/* 07E578 7F049A08 C7A40128 */ lwc1 $f4, 0x128($sp) -/* 07E57C 7F049A0C E7AE012C */ swc1 $f14, 0x12c($sp) -/* 07E580 7F049A10 46065200 */ add.s $f8, $f10, $f6 -/* 07E584 7F049A14 460C2282 */ mul.s $f10, $f4, $f12 -/* 07E588 7F049A18 C7A60134 */ lwc1 $f6, 0x134($sp) -/* 07E58C 7F049A1C 460C7102 */ mul.s $f4, $f14, $f12 -/* 07E590 7F049A20 E7A80114 */ swc1 $f8, 0x114($sp) -/* 07E594 7F049A24 46065200 */ add.s $f8, $f10, $f6 -/* 07E598 7F049A28 C7AA0138 */ lwc1 $f10, 0x138($sp) -/* 07E59C 7F049A2C 460A2180 */ add.s $f6, $f4, $f10 -/* 07E5A0 7F049A30 E7A80118 */ swc1 $f8, 0x118($sp) -/* 07E5A4 7F049A34 0FC2CA1D */ jal sub_GAME_7F0B1CC4 -/* 07E5A8 7F049A38 E7A6011C */ swc1 $f6, 0x11c($sp) -/* 07E5AC 7F049A3C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 07E5B0 7F049A40 44810000 */ mtc1 $at, $f0 -/* 07E5B4 7F049A44 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07E5B8 7F049A48 44812000 */ mtc1 $at, $f4 -/* 07E5BC 7F049A4C C7A8011C */ lwc1 $f8, 0x11c($sp) -/* 07E5C0 7F049A50 240A0002 */ li $t2, 2 -/* 07E5C4 7F049A54 AFAA0014 */ sw $t2, 0x14($sp) -/* 07E5C8 7F049A58 27A4010C */ addiu $a0, $sp, 0x10c -/* 07E5CC 7F049A5C 8FA50130 */ lw $a1, 0x130($sp) -/* 07E5D0 7F049A60 8FA60138 */ lw $a2, 0x138($sp) -/* 07E5D4 7F049A64 8FA70114 */ lw $a3, 0x114($sp) -/* 07E5D8 7F049A68 E7B60020 */ swc1 $f22, 0x20($sp) -/* 07E5DC 7F049A6C E7A00018 */ swc1 $f0, 0x18($sp) -/* 07E5E0 7F049A70 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 07E5E4 7F049A74 E7A80010 */ swc1 $f8, 0x10($sp) -/* 07E5E8 7F049A78 0FC2C675 */ jal sub_GAME_7F0B0E24 -/* 07E5EC 7F049A7C E7A40024 */ swc1 $f4, 0x24($sp) -/* 07E5F0 7F049A80 14400017 */ bnez $v0, .Ljp7F049AE0 -/* 07E5F4 7F049A84 27A60114 */ addiu $a2, $sp, 0x114 -/* 07E5F8 7F049A88 27A40130 */ addiu $a0, $sp, 0x130 -/* 07E5FC 7F049A8C 0FC09955 */ jal sub_GAME_7F02624C -/* 07E600 7F049A90 27A50124 */ addiu $a1, $sp, 0x124 -/* 07E604 7F049A94 3C0141D0 */ li $at, 0x41D00000 # 26.000000 -/* 07E608 7F049A98 44818000 */ mtc1 $at, $f16 -/* 07E60C 7F049A9C C7A60124 */ lwc1 $f6, 0x124($sp) -/* 07E610 7F049AA0 C7AA0114 */ lwc1 $f10, 0x114($sp) -/* 07E614 7F049AA4 C7AE012C */ lwc1 $f14, 0x12c($sp) -/* 07E618 7F049AA8 46068202 */ mul.s $f8, $f16, $f6 -/* 07E61C 7F049AAC C7A60118 */ lwc1 $f6, 0x118($sp) -/* 07E620 7F049AB0 8FAF010C */ lw $t7, 0x10c($sp) -/* 07E624 7F049AB4 AFAF0110 */ sw $t7, 0x110($sp) -/* 07E628 7F049AB8 46085101 */ sub.s $f4, $f10, $f8 -/* 07E62C 7F049ABC C7AA0128 */ lwc1 $f10, 0x128($sp) -/* 07E630 7F049AC0 460A8202 */ mul.s $f8, $f16, $f10 -/* 07E634 7F049AC4 E7A40114 */ swc1 $f4, 0x114($sp) -/* 07E638 7F049AC8 C7AA011C */ lwc1 $f10, 0x11c($sp) -/* 07E63C 7F049ACC 46083101 */ sub.s $f4, $f6, $f8 -/* 07E640 7F049AD0 460E8182 */ mul.s $f6, $f16, $f14 -/* 07E644 7F049AD4 E7A40118 */ swc1 $f4, 0x118($sp) -/* 07E648 7F049AD8 46065201 */ sub.s $f8, $f10, $f6 -/* 07E64C 7F049ADC E7A8011C */ swc1 $f8, 0x11c($sp) -.Ljp7F049AE0: -/* 07E650 7F049AE0 3C0C8005 */ lui $t4, %hi(global_timer) # $t4, 0x8005 -/* 07E654 7F049AE4 8D8C83AC */ lw $t4, %lo(global_timer)($t4) -/* 07E658 7F049AE8 8E0D00BC */ lw $t5, 0xbc($s0) -/* 07E65C 7F049AEC 27B10114 */ addiu $s1, $sp, 0x114 -/* 07E660 7F049AF0 8FA50104 */ lw $a1, 0x104($sp) -/* 07E664 7F049AF4 158D0052 */ bne $t4, $t5, .Ljp7F049C40 -/* 07E668 7F049AF8 C7AA0130 */ lwc1 $f10, 0x130($sp) -/* 07E66C 7F049AFC C4A40008 */ lwc1 $f4, 8($a1) -/* 07E670 7F049B00 C4A6000C */ lwc1 $f6, 0xc($a1) -/* 07E674 7F049B04 C7A80134 */ lwc1 $f8, 0x134($sp) -/* 07E678 7F049B08 460A2001 */ sub.s $f0, $f4, $f10 -/* 07E67C 7F049B0C C4A40010 */ lwc1 $f4, 0x10($a1) -/* 07E680 7F049B10 E7AA0058 */ swc1 $f10, 0x58($sp) -/* 07E684 7F049B14 46083081 */ sub.s $f2, $f6, $f8 -/* 07E688 7F049B18 C7A60138 */ lwc1 $f6, 0x138($sp) -/* 07E68C 7F049B1C 46062301 */ sub.s $f12, $f4, $f6 -/* 07E690 7F049B20 46000102 */ mul.s $f4, $f0, $f0 -/* 07E694 7F049B24 00000000 */ nop -/* 07E698 7F049B28 46021282 */ mul.s $f10, $f2, $f2 -/* 07E69C 7F049B2C 460A2100 */ add.s $f4, $f4, $f10 -/* 07E6A0 7F049B30 460C6282 */ mul.s $f10, $f12, $f12 -/* 07E6A4 7F049B34 460A2500 */ add.s $f20, $f4, $f10 -/* 07E6A8 7F049B38 C7AA0058 */ lwc1 $f10, 0x58($sp) -/* 07E6AC 7F049B3C C7A40114 */ lwc1 $f4, 0x114($sp) -/* 07E6B0 7F049B40 460A2001 */ sub.s $f0, $f4, $f10 -/* 07E6B4 7F049B44 C7A40118 */ lwc1 $f4, 0x118($sp) -/* 07E6B8 7F049B48 C7AA011C */ lwc1 $f10, 0x11c($sp) -/* 07E6BC 7F049B4C 46082081 */ sub.s $f2, $f4, $f8 -/* 07E6C0 7F049B50 46000102 */ mul.s $f4, $f0, $f0 -/* 07E6C4 7F049B54 46065301 */ sub.s $f12, $f10, $f6 -/* 07E6C8 7F049B58 46021202 */ mul.s $f8, $f2, $f2 -/* 07E6CC 7F049B5C 46082280 */ add.s $f10, $f4, $f8 -/* 07E6D0 7F049B60 460C6182 */ mul.s $f6, $f12, $f12 -/* 07E6D4 7F049B64 46065100 */ add.s $f4, $f10, $f6 -/* 07E6D8 7F049B68 4604A03E */ c.le.s $f20, $f4 -/* 07E6DC 7F049B6C 00000000 */ nop -/* 07E6E0 7F049B70 45000033 */ bc1f .Ljp7F049C40 -/* 07E6E4 7F049B74 00000000 */ nop -/* 07E6E8 7F049B78 0FC2296B */ jal check_if_bond_is_invincible -/* 07E6EC 7F049B7C 00000000 */ nop -/* 07E6F0 7F049B80 54400030 */ bnezl $v0, .Ljp7F049C44 -/* 07E6F4 7F049B84 8FB90120 */ lw $t9, 0x120($sp) -/* 07E6F8 7F049B88 0C007E08 */ jal sqrtf -/* 07E6FC 7F049B8C 4600A306 */ mov.s $f12, $f20 -/* 07E700 7F049B90 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 07E704 7F049B94 44816000 */ mtc1 $at, $f12 -/* 07E708 7F049B98 3C018005 */ lui $at, %hi(D_80052B74) # $at, 0x8005 -/* 07E70C 7F049B9C C4282BA4 */ lwc1 $f8, %lo(D_80052B74)($at) -/* 07E710 7F049BA0 3C018005 */ lui $at, %hi(D_jpunk) # $at, 0x8005 -/* 07E714 7F049BA4 C42A83A8 */ lwc1 $f10, %lo(D_jpunk)($at) -/* 07E718 7F049BA8 3C018003 */ lui $at, %hi(D_80030B1C) # $at, 0x8003 -/* 07E71C 7F049BAC 4600603C */ c.lt.s $f12, $f0 -/* 07E720 7F049BB0 460A4182 */ mul.s $f6, $f8, $f10 -/* 07E724 7F049BB4 C4240B5C */ lwc1 $f4, %lo(D_80030B1C)($at) -/* 07E728 7F049BB8 46043082 */ mul.s $f2, $f6, $f4 -/* 07E72C 7F049BBC 45020005 */ bc1fl .Ljp7F049BD4 -/* 07E730 7F049BC0 C60A00D4 */ lwc1 $f10, 0xd4($s0) -/* 07E734 7F049BC4 46006203 */ div.s $f8, $f12, $f0 -/* 07E738 7F049BC8 46081082 */ mul.s $f2, $f2, $f8 -/* 07E73C 7F049BCC 00000000 */ nop -/* 07E740 7F049BD0 C60A00D4 */ lwc1 $f10, 0xd4($s0) -.Ljp7F049BD4: -/* 07E744 7F049BD4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07E748 7F049BD8 44814000 */ mtc1 $at, $f8 -/* 07E74C 7F049BDC 46025180 */ add.s $f6, $f10, $f2 -/* 07E750 7F049BE0 E60600D4 */ swc1 $f6, 0xd4($s0) -/* 07E754 7F049BE4 C60400D4 */ lwc1 $f4, 0xd4($s0) -/* 07E758 7F049BE8 4604403E */ c.le.s $f8, $f4 -/* 07E75C 7F049BEC 00000000 */ nop -/* 07E760 7F049BF0 45020014 */ bc1fl .Ljp7F049C44 -/* 07E764 7F049BF4 8FB90120 */ lw $t9, 0x120($sp) -/* 07E768 7F049BF8 0FC17929 */ jal sub_GAME_7F05DF84 -/* 07E76C 7F049BFC 2404000E */ li $a0, 14 -/* 07E770 7F049C00 3C013E00 */ li $at, 0x3E000000 # 0.125000 -/* 07E774 7F049C04 44815000 */ mtc1 $at, $f10 -/* 07E778 7F049C08 3C018003 */ lui $at, %hi(D_80030B20) # $at, 0x8003 -/* 07E77C 7F049C0C C4240B60 */ lwc1 $f4, %lo(D_80030B20)($at) -/* 07E780 7F049C10 460A0182 */ mul.s $f6, $f0, $f10 -/* 07E784 7F049C14 C60E0090 */ lwc1 $f14, 0x90($s0) -/* 07E788 7F049C18 2406FFFF */ li $a2, -1 -/* 07E78C 7F049C1C 24070001 */ li $a3, 1 -/* 07E790 7F049C20 46043302 */ mul.s $f12, $f6, $f4 -/* 07E794 7F049C24 0FC22955 */ jal sub_GAME_7F089E4C -/* 07E798 7F049C28 00000000 */ nop -/* 07E79C 7F049C2C 0FC2296B */ jal check_if_bond_is_invincible -/* 07E7A0 7F049C30 E61600D4 */ swc1 $f22, 0xd4($s0) -/* 07E7A4 7F049C34 50400003 */ beql $v0, $zero, .Ljp7F049C44 -/* 07E7A8 7F049C38 8FB90120 */ lw $t9, 0x120($sp) -/* 07E7AC 7F049C3C AFA00120 */ sw $zero, 0x120($sp) -.Ljp7F049C40: -/* 07E7B0 7F049C40 8FB90120 */ lw $t9, 0x120($sp) -.Ljp7F049C44: -/* 07E7B4 7F049C44 3C0141D0 */ li $at, 0x41D00000 # 26.000000 -/* 07E7B8 7F049C48 44818000 */ mtc1 $at, $f16 -/* 07E7BC 7F049C4C 1320000F */ beqz $t9, .Ljp7F049C8C -/* 07E7C0 7F049C50 8FA50104 */ lw $a1, 0x104($sp) -/* 07E7C4 7F049C54 8FA80110 */ lw $t0, 0x110($sp) -/* 07E7C8 7F049C58 02202025 */ move $a0, $s1 -/* 07E7CC 7F049C5C 24050001 */ li $a1, 1 -/* 07E7D0 7F049C60 51000005 */ beql $t0, $zero, .Ljp7F049C78 -/* 07E7D4 7F049C64 2404000E */ li $a0, 14 -/* 07E7D8 7F049C68 44068000 */ mfc1 $a2, $f16 -/* 07E7DC 7F049C6C 0FC2926F */ jal sub_GAME_7F0A3E1C -/* 07E7E0 7F049C70 91070003 */ lbu $a3, 3($t0) -/* 07E7E4 7F049C74 2404000E */ li $a0, 14 -.Ljp7F049C78: -/* 07E7E8 7F049C78 02202825 */ move $a1, $s1 -/* 07E7EC 7F049C7C 0FC1932F */ jal recall_joy2_hits_edit_flag -/* 07E7F0 7F049C80 2406FFFF */ li $a2, -1 -/* 07E7F4 7F049C84 1000000B */ b .Ljp7F049CB4 -/* 07E7F8 7F049C88 8FB80108 */ lw $t8, 0x108($sp) -.Ljp7F049C8C: -/* 07E7FC 7F049C8C C4A80008 */ lwc1 $f8, 8($a1) -/* 07E800 7F049C90 2404000E */ li $a0, 14 -/* 07E804 7F049C94 2406FFFF */ li $a2, -1 -/* 07E808 7F049C98 E7A80114 */ swc1 $f8, 0x114($sp) -/* 07E80C 7F049C9C C4AA000C */ lwc1 $f10, 0xc($a1) -/* 07E810 7F049CA0 E7AA0118 */ swc1 $f10, 0x118($sp) -/* 07E814 7F049CA4 C4A60010 */ lwc1 $f6, 0x10($a1) -/* 07E818 7F049CA8 0FC19252 */ jal recall_joy2_hits_edit_detail_edit_flag -/* 07E81C 7F049CAC E7A6011C */ swc1 $f6, 0x11c($sp) -/* 07E820 7F049CB0 8FB80108 */ lw $t8, 0x108($sp) -.Ljp7F049CB4: -/* 07E824 7F049CB4 C7A40130 */ lwc1 $f4, 0x130($sp) -/* 07E828 7F049CB8 53000085 */ beql $t8, $zero, .Ljp7F049ED0 -/* 07E82C 7F049CBC 8E8E0008 */ lw $t6, 8($s4) -/* 07E830 7F049CC0 8E0300CC */ lw $v1, 0xcc($s0) -/* 07E834 7F049CC4 E4640004 */ swc1 $f4, 4($v1) -/* 07E838 7F049CC8 C7A80134 */ lwc1 $f8, 0x134($sp) -/* 07E83C 7F049CCC C4640004 */ lwc1 $f4, 4($v1) -/* 07E840 7F049CD0 E4680008 */ swc1 $f8, 8($v1) -/* 07E844 7F049CD4 C7AA0138 */ lwc1 $f10, 0x138($sp) -/* 07E848 7F049CD8 E46A000C */ swc1 $f10, 0xc($v1) -/* 07E84C 7F049CDC C7A60114 */ lwc1 $f6, 0x114($sp) -/* 07E850 7F049CE0 46043201 */ sub.s $f8, $f6, $f4 -/* 07E854 7F049CE4 C4660008 */ lwc1 $f6, 8($v1) -/* 07E858 7F049CE8 E4680010 */ swc1 $f8, 0x10($v1) -/* 07E85C 7F049CEC C7AA0118 */ lwc1 $f10, 0x118($sp) -/* 07E860 7F049CF0 C4620010 */ lwc1 $f2, 0x10($v1) -/* 07E864 7F049CF4 46065101 */ sub.s $f4, $f10, $f6 -/* 07E868 7F049CF8 C46A000C */ lwc1 $f10, 0xc($v1) -/* 07E86C 7F049CFC E4640014 */ swc1 $f4, 0x14($v1) -/* 07E870 7F049D00 C7A8011C */ lwc1 $f8, 0x11c($sp) -/* 07E874 7F049D04 46021102 */ mul.s $f4, $f2, $f2 -/* 07E878 7F049D08 C46E0014 */ lwc1 $f14, 0x14($v1) -/* 07E87C 7F049D0C 460A4181 */ sub.s $f6, $f8, $f10 -/* 07E880 7F049D10 460E7202 */ mul.s $f8, $f14, $f14 -/* 07E884 7F049D14 E4660018 */ swc1 $f6, 0x18($v1) -/* 07E888 7F049D18 C4600018 */ lwc1 $f0, 0x18($v1) -/* 07E88C 7F049D1C AFA30094 */ sw $v1, 0x94($sp) -/* 07E890 7F049D20 46000182 */ mul.s $f6, $f0, $f0 -/* 07E894 7F049D24 46082280 */ add.s $f10, $f4, $f8 -/* 07E898 7F049D28 0C007E08 */ jal sqrtf -/* 07E89C 7F049D2C 460A3300 */ add.s $f12, $f6, $f10 -/* 07E8A0 7F049D30 3C018005 */ lui $at, %hi(D_80052B78) # $at, 0x8005 -/* 07E8A4 7F049D34 C42E2BA8 */ lwc1 $f14, %lo(D_80052B78)($at) -/* 07E8A8 7F049D38 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07E8AC 7F049D3C 44812000 */ mtc1 $at, $f4 -/* 07E8B0 7F049D40 8FA30094 */ lw $v1, 0x94($sp) -/* 07E8B4 7F049D44 4600703C */ c.lt.s $f14, $f0 -/* 07E8B8 7F049D48 46000306 */ mov.s $f12, $f0 -/* 07E8BC 7F049D4C 46002083 */ div.s $f2, $f4, $f0 -/* 07E8C0 7F049D50 C4680010 */ lwc1 $f8, 0x10($v1) -/* 07E8C4 7F049D54 C46A0014 */ lwc1 $f10, 0x14($v1) -/* 07E8C8 7F049D58 3C0143FA */ li $at, 0x43FA0000 # 500.000000 -/* 07E8CC 7F049D5C 44810000 */ mtc1 $at, $f0 -/* 07E8D0 7F049D60 46024182 */ mul.s $f6, $f8, $f2 -/* 07E8D4 7F049D64 C4680018 */ lwc1 $f8, 0x18($v1) -/* 07E8D8 7F049D68 46025102 */ mul.s $f4, $f10, $f2 -/* 07E8DC 7F049D6C E4660010 */ swc1 $f6, 0x10($v1) -/* 07E8E0 7F049D70 46024182 */ mul.s $f6, $f8, $f2 -/* 07E8E4 7F049D74 E4640014 */ swc1 $f4, 0x14($v1) -/* 07E8E8 7F049D78 45000002 */ bc1f .Ljp7F049D84 -/* 07E8EC 7F049D7C E4660018 */ swc1 $f6, 0x18($v1) -/* 07E8F0 7F049D80 46007306 */ mov.s $f12, $f14 -.Ljp7F049D84: -/* 07E8F4 7F049D84 4600603C */ c.lt.s $f12, $f0 -/* 07E8F8 7F049D88 2409000E */ li $t1, 14 -/* 07E8FC 7F049D8C A0600000 */ sb $zero, ($v1) -/* 07E900 7F049D90 A0690001 */ sb $t1, 1($v1) -/* 07E904 7F049D94 45000002 */ bc1f .Ljp7F049DA0 -/* 07E908 7F049D98 E46C001C */ swc1 $f12, 0x1c($v1) -/* 07E90C 7F049D9C 46000306 */ mov.s $f12, $f0 -.Ljp7F049DA0: -/* 07E910 7F049DA0 806B0001 */ lb $t3, 1($v1) -/* 07E914 7F049DA4 24010016 */ li $at, 22 -/* 07E918 7F049DA8 15610026 */ bne $t3, $at, .Ljp7F049E44 -/* 07E91C 7F049DAC 3C018005 */ lui $at, %hi(D_80052B7C) # $at, 0x8005 -/* 07E920 7F049DB0 C4222BAC */ lwc1 $f2, %lo(D_80052B7C)($at) -/* 07E924 7F049DB4 3C013E80 */ li $at, 0x3E800000 # 0.250000 -/* 07E928 7F049DB8 44815000 */ mtc1 $at, $f10 -/* 07E92C 7F049DBC 3C018005 */ lui $at, %hi(D_80052B80) # $at, 0x8005 -/* 07E930 7F049DC0 460C5102 */ mul.s $f4, $f10, $f12 -/* 07E934 7F049DC4 E4640020 */ swc1 $f4, 0x20($v1) -/* 07E938 7F049DC8 C4282BB0 */ lwc1 $f8, %lo(D_80052B80)($at) -/* 07E93C 7F049DCC 460C4002 */ mul.s $f0, $f8, $f12 -/* 07E940 7F049DD0 4600103C */ c.lt.s $f2, $f0 -/* 07E944 7F049DD4 E4600024 */ swc1 $f0, 0x24($v1) -/* 07E948 7F049DD8 45020003 */ bc1fl .Ljp7F049DE8 -/* 07E94C 7F049DDC AFA30094 */ sw $v1, 0x94($sp) -/* 07E950 7F049DE0 E4620024 */ swc1 $f2, 0x24($v1) -/* 07E954 7F049DE4 AFA30094 */ sw $v1, 0x94($sp) -.Ljp7F049DE8: -/* 07E958 7F049DE8 0C002918 */ jal get_random_value -/* 07E95C 7F049DEC E7AC0098 */ swc1 $f12, 0x98($sp) -/* 07E960 7F049DF0 44823000 */ mtc1 $v0, $f6 -/* 07E964 7F049DF4 8FA30094 */ lw $v1, 0x94($sp) -/* 07E968 7F049DF8 C7AC0098 */ lwc1 $f12, 0x98($sp) -/* 07E96C 7F049DFC 04410005 */ bgez $v0, .Ljp7F049E14 -/* 07E970 7F049E00 468032A0 */ cvt.s.w $f10, $f6 -/* 07E974 7F049E04 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07E978 7F049E08 44812000 */ mtc1 $at, $f4 -/* 07E97C 7F049E0C 00000000 */ nop -/* 07E980 7F049E10 46045280 */ add.s $f10, $f10, $f4 -.Ljp7F049E14: -/* 07E984 7F049E14 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07E988 7F049E18 44814000 */ mtc1 $at, $f8 -/* 07E98C 7F049E1C 3C018005 */ lui $at, %hi(D_80052B84) # $at, 0x8005 -/* 07E990 7F049E20 C4242BB4 */ lwc1 $f4, %lo(D_80052B84)($at) -/* 07E994 7F049E24 46085182 */ mul.s $f6, $f10, $f8 -/* 07E998 7F049E28 3C018005 */ lui $at, %hi(D_80052B88) # $at, 0x8005 -/* 07E99C 7F049E2C C4282BB8 */ lwc1 $f8, %lo(D_80052B88)($at) -/* 07E9A0 7F049E30 46043282 */ mul.s $f10, $f6, $f4 -/* 07E9A4 7F049E34 460A4181 */ sub.s $f6, $f8, $f10 -/* 07E9A8 7F049E38 460C3102 */ mul.s $f4, $f6, $f12 -/* 07E9AC 7F049E3C 10000023 */ b .Ljp7F049ECC -/* 07E9B0 7F049E40 E4640028 */ swc1 $f4, 0x28($v1) -.Ljp7F049E44: -/* 07E9B4 7F049E44 3C018005 */ lui $at, %hi(D_80052B8C) # $at, 0x8005 -/* 07E9B8 7F049E48 C4282BBC */ lwc1 $f8, %lo(D_80052B8C)($at) -/* 07E9BC 7F049E4C 3C018005 */ lui $at, %hi(D_80052B90) # $at, 0x8005 -/* 07E9C0 7F049E50 460C4002 */ mul.s $f0, $f8, $f12 -/* 07E9C4 7F049E54 E4600020 */ swc1 $f0, 0x20($v1) -/* 07E9C8 7F049E58 E4600024 */ swc1 $f0, 0x24($v1) -/* 07E9CC 7F049E5C C42A2BC0 */ lwc1 $f10, %lo(D_80052B90)($at) -/* 07E9D0 7F049E60 3C018005 */ lui $at, %hi(D_80052B94) # $at, 0x8005 -/* 07E9D4 7F049E64 4600503C */ c.lt.s $f10, $f0 -/* 07E9D8 7F049E68 00000000 */ nop -/* 07E9DC 7F049E6C 45000003 */ bc1f .Ljp7F049E7C -/* 07E9E0 7F049E70 00000000 */ nop -/* 07E9E4 7F049E74 C4262BC4 */ lwc1 $f6, %lo(D_80052B94)($at) -/* 07E9E8 7F049E78 E4660024 */ swc1 $f6, 0x24($v1) -.Ljp7F049E7C: -/* 07E9EC 7F049E7C 0C002918 */ jal get_random_value -/* 07E9F0 7F049E80 AFA30094 */ sw $v1, 0x94($sp) -/* 07E9F4 7F049E84 44822000 */ mtc1 $v0, $f4 -/* 07E9F8 7F049E88 8FA30094 */ lw $v1, 0x94($sp) -/* 07E9FC 7F049E8C 04410005 */ bgez $v0, .Ljp7F049EA4 -/* 07EA00 7F049E90 46802220 */ cvt.s.w $f8, $f4 -/* 07EA04 7F049E94 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EA08 7F049E98 44815000 */ mtc1 $at, $f10 -/* 07EA0C 7F049E9C 00000000 */ nop -/* 07EA10 7F049EA0 460A4200 */ add.s $f8, $f8, $f10 -.Ljp7F049EA4: -/* 07EA14 7F049EA4 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 07EA18 7F049EA8 44813000 */ mtc1 $at, $f6 -/* 07EA1C 7F049EAC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07EA20 7F049EB0 44815000 */ mtc1 $at, $f10 -/* 07EA24 7F049EB4 46064002 */ mul.s $f0, $f8, $f6 -/* 07EA28 7F049EB8 C4660020 */ lwc1 $f6, 0x20($v1) -/* 07EA2C 7F049EBC 46000100 */ add.s $f4, $f0, $f0 -/* 07EA30 7F049EC0 460A2201 */ sub.s $f8, $f4, $f10 -/* 07EA34 7F049EC4 46064102 */ mul.s $f4, $f8, $f6 -/* 07EA38 7F049EC8 E4640028 */ swc1 $f4, 0x28($v1) -.Ljp7F049ECC: -/* 07EA3C 7F049ECC 8E8E0008 */ lw $t6, 8($s4) -.Ljp7F049ED0: -/* 07EA40 7F049ED0 8DC30008 */ lw $v1, 8($t6) -/* 07EA44 7F049ED4 8C650014 */ lw $a1, 0x14($v1) -/* 07EA48 7F049ED8 50A00008 */ beql $a1, $zero, .Ljp7F049EFC -/* 07EA4C 7F049EDC 8C65001C */ lw $a1, 0x1c($v1) -/* 07EA50 7F049EE0 0FC1B363 */ jal extract_id_from_object_structure_microcode -/* 07EA54 7F049EE4 02802025 */ move $a0, $s4 -/* 07EA58 7F049EE8 8FAA0140 */ lw $t2, 0x140($sp) -/* 07EA5C 7F049EEC A44A0000 */ sh $t2, ($v0) -/* 07EA60 7F049EF0 8E8F0008 */ lw $t7, 8($s4) -/* 07EA64 7F049EF4 8DE30008 */ lw $v1, 8($t7) -/* 07EA68 7F049EF8 8C65001C */ lw $a1, 0x1c($v1) -.Ljp7F049EFC: -/* 07EA6C 7F049EFC 10A00005 */ beqz $a1, .Ljp7F049F14 -/* 07EA70 7F049F00 00000000 */ nop -/* 07EA74 7F049F04 0FC1B363 */ jal extract_id_from_object_structure_microcode -/* 07EA78 7F049F08 02802025 */ move $a0, $s4 -/* 07EA7C 7F049F0C 8FAC013C */ lw $t4, 0x13c($sp) -/* 07EA80 7F049F10 A44C0000 */ sh $t4, ($v0) -.Ljp7F049F14: -/* 07EA84 7F049F14 0FC1113A */ jal sub_GAME_7F044200 -/* 07EA88 7F049F18 02602025 */ move $a0, $s3 -/* 07EA8C 7F049F1C 8FAD0688 */ lw $t5, 0x688($sp) -.Ljp7F049F20: -/* 07EA90 7F049F20 24010005 */ li $at, 5 -/* 07EA94 7F049F24 55A10003 */ bnel $t5, $at, .Ljp7F049F34 -/* 07EA98 7F049F28 8FA20688 */ lw $v0, 0x688($sp) -/* 07EA9C 7F049F2C AE600014 */ sw $zero, 0x14($s3) -/* 07EAA0 7F049F30 8FA20688 */ lw $v0, 0x688($sp) -.Ljp7F049F34: -/* 07EAA4 7F049F34 8FBF0054 */ lw $ra, 0x54($sp) -/* 07EAA8 7F049F38 D7B40030 */ ldc1 $f20, 0x30($sp) -/* 07EAAC 7F049F3C D7B60038 */ ldc1 $f22, 0x38($sp) -/* 07EAB0 7F049F40 8FB00040 */ lw $s0, 0x40($sp) -/* 07EAB4 7F049F44 8FB10044 */ lw $s1, 0x44($sp) -/* 07EAB8 7F049F48 8FB20048 */ lw $s2, 0x48($sp) -/* 07EABC 7F049F4C 8FB3004C */ lw $s3, 0x4c($sp) -/* 07EAC0 7F049F50 8FB40050 */ lw $s4, 0x50($sp) -/* 07EAC4 7F049F54 03E00008 */ jr $ra -/* 07EAC8 7F049F58 27BD06B0 */ addiu $sp, $sp, 0x6b0 -) -#endif - -#endif - - -#ifdef NONMATCHING -void sub_GAME_7F049B58(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F049B58 -/* 07E688 7F049B58 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 07E68C 7F049B5C AFBF0034 */ sw $ra, 0x34($sp) -/* 07E690 7F049B60 AFB20020 */ sw $s2, 0x20($sp) -/* 07E694 7F049B64 00809025 */ move $s2, $a0 -/* 07E698 7F049B68 AFB60030 */ sw $s6, 0x30($sp) -/* 07E69C 7F049B6C AFB5002C */ sw $s5, 0x2c($sp) -/* 07E6A0 7F049B70 AFB40028 */ sw $s4, 0x28($sp) -/* 07E6A4 7F049B74 AFB30024 */ sw $s3, 0x24($sp) -/* 07E6A8 7F049B78 AFB1001C */ sw $s1, 0x1c($sp) -/* 07E6AC 7F049B7C 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry -/* 07E6B0 7F049B80 AFB00018 */ sw $s0, 0x18($sp) -/* 07E6B4 7F049B84 10400036 */ beqz $v0, .L7F049C60 -/* 07E6B8 7F049B88 00408025 */ move $s0, $v0 -/* 07E6BC 7F049B8C 24160006 */ li $s6, 6 -/* 07E6C0 7F049B90 2415000D */ li $s5, 13 -/* 07E6C4 7F049B94 24140001 */ li $s4, 1 -/* 07E6C8 7F049B98 24130003 */ li $s3, 3 -/* 07E6CC 7F049B9C 92020000 */ lbu $v0, ($s0) -.L7F049BA0: -/* 07E6D0 7F049BA0 02402025 */ move $a0, $s2 -/* 07E6D4 7F049BA4 1662000B */ bne $s3, $v0, .L7F049BD4 -/* 07E6D8 7F049BA8 00000000 */ nop -/* 07E6DC 7F049BAC 8E110004 */ lw $s1, 4($s0) -/* 07E6E0 7F049BB0 02803025 */ move $a2, $s4 -/* 07E6E4 7F049BB4 0FC18786 */ jal sub_GAME_7F061E18 -/* 07E6E8 7F049BB8 26250180 */ addiu $a1, $s1, 0x180 -/* 07E6EC 7F049BBC 00402025 */ move $a0, $v0 -/* 07E6F0 7F049BC0 262501AC */ addiu $a1, $s1, 0x1ac -/* 07E6F4 7F049BC4 0FC18786 */ jal sub_GAME_7F061E18 -/* 07E6F8 7F049BC8 02803025 */ move $a2, $s4 -/* 07E6FC 7F049BCC 10000021 */ b .L7F049C54 -/* 07E700 7F049BD0 00409025 */ move $s2, $v0 -.L7F049BD4: -/* 07E704 7F049BD4 1682000B */ bne $s4, $v0, .L7F049C04 -/* 07E708 7F049BD8 00000000 */ nop -/* 07E70C 7F049BDC 8E030004 */ lw $v1, 4($s0) -/* 07E710 7F049BE0 02402025 */ move $a0, $s2 -/* 07E714 7F049BE4 02803025 */ move $a2, $s4 -/* 07E718 7F049BE8 906E0003 */ lbu $t6, 3($v1) -/* 07E71C 7F049BEC 56AE001A */ bnel $s5, $t6, .L7F049C58 -/* 07E720 7F049BF0 8E100024 */ lw $s0, 0x24($s0) -/* 07E724 7F049BF4 0FC18786 */ jal sub_GAME_7F061E18 -/* 07E728 7F049BF8 8C6500CC */ lw $a1, 0xcc($v1) -/* 07E72C 7F049BFC 10000015 */ b .L7F049C54 -/* 07E730 7F049C00 00409025 */ move $s2, $v0 -.L7F049C04: -/* 07E734 7F049C04 56C20014 */ bnel $s6, $v0, .L7F049C58 -/* 07E738 7F049C08 8E100024 */ lw $s0, 0x24($s0) -/* 07E73C 7F049C0C 8E0F0004 */ lw $t7, 4($s0) -/* 07E740 7F049C10 51E00011 */ beql $t7, $zero, .L7F049C58 -/* 07E744 7F049C14 8E100024 */ lw $s0, 0x24($s0) -/* 07E748 7F049C18 0FC26C57 */ jal sub_GAME_7F09B15C -/* 07E74C 7F049C1C 02002025 */ move $a0, $s0 -/* 07E750 7F049C20 0FC26C54 */ jal get_cur_playernum -/* 07E754 7F049C24 00408825 */ move $s1, $v0 -/* 07E758 7F049C28 1051000A */ beq $v0, $s1, .L7F049C54 -/* 07E75C 7F049C2C 02402025 */ move $a0, $s2 -/* 07E760 7F049C30 8E110004 */ lw $s1, 4($s0) -/* 07E764 7F049C34 02803025 */ move $a2, $s4 -/* 07E768 7F049C38 0FC18786 */ jal sub_GAME_7F061E18 -/* 07E76C 7F049C3C 26250180 */ addiu $a1, $s1, 0x180 -/* 07E770 7F049C40 00402025 */ move $a0, $v0 -/* 07E774 7F049C44 262501AC */ addiu $a1, $s1, 0x1ac -/* 07E778 7F049C48 0FC18786 */ jal sub_GAME_7F061E18 -/* 07E77C 7F049C4C 02803025 */ move $a2, $s4 -/* 07E780 7F049C50 00409025 */ move $s2, $v0 -.L7F049C54: -/* 07E784 7F049C54 8E100024 */ lw $s0, 0x24($s0) -.L7F049C58: -/* 07E788 7F049C58 5600FFD1 */ bnezl $s0, .L7F049BA0 -/* 07E78C 7F049C5C 92020000 */ lbu $v0, ($s0) -.L7F049C60: -/* 07E790 7F049C60 8FBF0034 */ lw $ra, 0x34($sp) -/* 07E794 7F049C64 02401025 */ move $v0, $s2 -/* 07E798 7F049C68 8FB20020 */ lw $s2, 0x20($sp) -/* 07E79C 7F049C6C 8FB00018 */ lw $s0, 0x18($sp) -/* 07E7A0 7F049C70 8FB1001C */ lw $s1, 0x1c($sp) -/* 07E7A4 7F049C74 8FB30024 */ lw $s3, 0x24($sp) -/* 07E7A8 7F049C78 8FB40028 */ lw $s4, 0x28($sp) -/* 07E7AC 7F049C7C 8FB5002C */ lw $s5, 0x2c($sp) -/* 07E7B0 7F049C80 8FB60030 */ lw $s6, 0x30($sp) -/* 07E7B4 7F049C84 03E00008 */ jr $ra -/* 07E7B8 7F049C88 27BD0038 */ addiu $sp, $sp, 0x38 -) -#endif - - - - - -#ifdef NONMATCHING -void save_ptr_monitor_ani_code_to_obj_ani_slot(void) { - -} -#else -GLOBAL_ASM( -.text -glabel save_ptr_monitor_ani_code_to_obj_ani_slot -/* 07E7BC 7F049C8C AC850000 */ sw $a1, ($a0) -/* 07E7C0 7F049C90 03E00008 */ jr $ra -/* 07E7C4 7F049C94 A4800004 */ sh $zero, 4($a0) -) -#endif - - - - - -#ifdef NONMATCHING -void set_ptr_monitor_img_to_obj_ani_slot(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80052B98*/ -glabel jpt_80052B98 -.word def_7F049CC0 -.word .L7F049CC8 -.word .L7F049CD4 -.word .L7F049CE0 -.word .L7F049CEC -.word .L7F049CF8 -.word .L7F049D04 -.word .L7F049D10 -.word .L7F049D1C -.word .L7F049D28 -.word .L7F049D34 -.word .L7F049D40 -.word .L7F049D4C -.word .L7F049D58 -.word .L7F049D64 -.word .L7F049D70 -.word .L7F049D7C -.word .L7F049D88 -.word .L7F049D94 -.word .L7F049DA0 -.word .L7F049DAC -.word .L7F049DB8 -.word .L7F049DC4 -.word .L7F049DD0 -.word .L7F049DDC -.word .L7F049DE8 -.word .L7F049DF4 -.word .L7F049E00 -.word .L7F049E0C -.word .L7F049E18 -.word .L7F049E24 -.word .L7F049E30 -.word .L7F049E3C -.word .L7F049E48 -.word .L7F049E54 -.word .L7F049E60 -.word .L7F049E6C -.word .L7F049E78 -.word .L7F049E84 -.word .L7F049E90 -.word .L7F049E9C -.word .L7F049EA8 -.word .L7F049EB4 -.word .L7F049EC0 -.word .L7F049ECC -.word .L7F049ED8 -.word .L7F049EE4 -.word .L7F049EF0 -.word .L7F049EFC -.word .L7F049F08 -.word .L7F049F14 -.word .L7F049F20 - -.text -glabel set_ptr_monitor_img_to_obj_ani_slot -/* 07E7C8 7F049C98 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 07E7CC 7F049C9C 3C068003 */ lui $a2, %hi(monitor_animation_microcode) -/* 07E7D0 7F049CA0 2CA10034 */ sltiu $at, $a1, 0x34 -/* 07E7D4 7F049CA4 AFBF0014 */ sw $ra, 0x14($sp) -/* 07E7D8 7F049CA8 1020009F */ beqz $at, .L7F049F28 -/* 07E7DC 7F049CAC 24C60B74 */ addiu $a2, %lo(monitor_animation_microcode) # addiu $a2, $a2, 0xb74 -/* 07E7E0 7F049CB0 00057080 */ sll $t6, $a1, 2 -/* 07E7E4 7F049CB4 3C018005 */ lui $at, %hi(jpt_80052B98) -/* 07E7E8 7F049CB8 002E0821 */ addu $at, $at, $t6 -/* 07E7EC 7F049CBC 8C2E2B98 */ lw $t6, %lo(jpt_80052B98)($at) -/* 07E7F0 7F049CC0 01C00008 */ jr $t6 -/* 07E7F4 7F049CC4 00000000 */ nop -.L7F049CC8: -/* 07E7F8 7F049CC8 3C068003 */ lui $a2, %hi(D_80030C00) -/* 07E7FC 7F049CCC 10000096 */ b .L7F049F28 -/* 07E800 7F049CD0 24C60C00 */ addiu $a2, %lo(D_80030C00) # addiu $a2, $a2, 0xc00 -.L7F049CD4: -/* 07E804 7F049CD4 3C068003 */ lui $a2, %hi(D_80030E24) -/* 07E808 7F049CD8 10000093 */ b .L7F049F28 -/* 07E80C 7F049CDC 24C60E24 */ addiu $a2, %lo(D_80030E24) # addiu $a2, $a2, 0xe24 -.L7F049CE0: -/* 07E810 7F049CE0 3C068003 */ lui $a2, %hi(D_80030F44) -/* 07E814 7F049CE4 10000090 */ b .L7F049F28 -/* 07E818 7F049CE8 24C60F44 */ addiu $a2, %lo(D_80030F44) # addiu $a2, $a2, 0xf44 -.L7F049CEC: -/* 07E81C 7F049CEC 3C068003 */ lui $a2, %hi(D_80031018) -/* 07E820 7F049CF0 1000008D */ b .L7F049F28 -/* 07E824 7F049CF4 24C61018 */ addiu $a2, %lo(D_80031018) # addiu $a2, $a2, 0x1018 -.L7F049CF8: -/* 07E828 7F049CF8 3C068003 */ lui $a2, %hi(D_80031074) -/* 07E82C 7F049CFC 1000008A */ b .L7F049F28 -/* 07E830 7F049D00 24C61074 */ addiu $a2, %lo(D_80031074) # addiu $a2, $a2, 0x1074 -.L7F049D04: -/* 07E834 7F049D04 3C068003 */ lui $a2, %hi(D_800310F0) -/* 07E838 7F049D08 10000087 */ b .L7F049F28 -/* 07E83C 7F049D0C 24C610F0 */ addiu $a2, %lo(D_800310F0) # addiu $a2, $a2, 0x10f0 -.L7F049D10: -/* 07E840 7F049D10 3C068003 */ lui $a2, %hi(D_8003118C) -/* 07E844 7F049D14 10000084 */ b .L7F049F28 -/* 07E848 7F049D18 24C6118C */ addiu $a2, %lo(D_8003118C) # addiu $a2, $a2, 0x118c -.L7F049D1C: -/* 07E84C 7F049D1C 3C068003 */ lui $a2, %hi(D_8003121C) -/* 07E850 7F049D20 10000081 */ b .L7F049F28 -/* 07E854 7F049D24 24C6121C */ addiu $a2, %lo(D_8003121C) # addiu $a2, $a2, 0x121c -.L7F049D28: -/* 07E858 7F049D28 3C068003 */ lui $a2, %hi(D_80031248) -/* 07E85C 7F049D2C 1000007E */ b .L7F049F28 -/* 07E860 7F049D30 24C61248 */ addiu $a2, %lo(D_80031248) # addiu $a2, $a2, 0x1248 -.L7F049D34: -/* 07E864 7F049D34 3C068003 */ lui $a2, %hi(D_80031274) -/* 07E868 7F049D38 1000007B */ b .L7F049F28 -/* 07E86C 7F049D3C 24C61274 */ addiu $a2, %lo(D_80031274) # addiu $a2, $a2, 0x1274 -.L7F049D40: -/* 07E870 7F049D40 3C068003 */ lui $a2, %hi(D_800312F4) -/* 07E874 7F049D44 10000078 */ b .L7F049F28 -/* 07E878 7F049D48 24C612F4 */ addiu $a2, %lo(D_800312F4) # addiu $a2, $a2, 0x12f4 -.L7F049D4C: -/* 07E87C 7F049D4C 3C068003 */ lui $a2, %hi(D_80031310) -/* 07E880 7F049D50 10000075 */ b .L7F049F28 -/* 07E884 7F049D54 24C61310 */ addiu $a2, %lo(D_80031310) # addiu $a2, $a2, 0x1310 -.L7F049D58: -/* 07E888 7F049D58 3C068003 */ lui $a2, %hi(D_80031490) -/* 07E88C 7F049D5C 10000072 */ b .L7F049F28 -/* 07E890 7F049D60 24C61490 */ addiu $a2, %lo(D_80031490) # addiu $a2, $a2, 0x1490 -.L7F049D64: -/* 07E894 7F049D64 3C068003 */ lui $a2, %hi(D_800314F8) -/* 07E898 7F049D68 1000006F */ b .L7F049F28 -/* 07E89C 7F049D6C 24C614F8 */ addiu $a2, %lo(D_800314F8) # addiu $a2, $a2, 0x14f8 -.L7F049D70: -/* 07E8A0 7F049D70 3C068003 */ lui $a2, %hi(D_80030EC8) -/* 07E8A4 7F049D74 1000006C */ b .L7F049F28 -/* 07E8A8 7F049D78 24C60EC8 */ addiu $a2, %lo(D_80030EC8) # addiu $a2, $a2, 0xec8 -.L7F049D7C: -/* 07E8AC 7F049D7C 3C068003 */ lui $a2, %hi(D_80031360) -/* 07E8B0 7F049D80 10000069 */ b .L7F049F28 -/* 07E8B4 7F049D84 24C61360 */ addiu $a2, %lo(D_80031360) # addiu $a2, $a2, 0x1360 -.L7F049D88: -/* 07E8B8 7F049D88 3C068003 */ lui $a2, %hi(D_8003156C) -/* 07E8BC 7F049D8C 10000066 */ b .L7F049F28 -/* 07E8C0 7F049D90 24C6156C */ addiu $a2, %lo(D_8003156C) # addiu $a2, $a2, 0x156c -.L7F049D94: -/* 07E8C4 7F049D94 3C068003 */ lui $a2, %hi(D_800315CC) -/* 07E8C8 7F049D98 10000063 */ b .L7F049F28 -/* 07E8CC 7F049D9C 24C615CC */ addiu $a2, %lo(D_800315CC) # addiu $a2, $a2, 0x15cc -.L7F049DA0: -/* 07E8D0 7F049DA0 3C068003 */ lui $a2, %hi(D_80031848) -/* 07E8D4 7F049DA4 10000060 */ b .L7F049F28 -/* 07E8D8 7F049DA8 24C61848 */ addiu $a2, %lo(D_80031848) # addiu $a2, $a2, 0x1848 -.L7F049DAC: -/* 07E8DC 7F049DAC 3C068003 */ lui $a2, %hi(D_80031898) -/* 07E8E0 7F049DB0 1000005D */ b .L7F049F28 -/* 07E8E4 7F049DB4 24C61898 */ addiu $a2, %lo(D_80031898) # addiu $a2, $a2, 0x1898 -.L7F049DB8: -/* 07E8E8 7F049DB8 3C068003 */ lui $a2, %hi(D_800318B8) -/* 07E8EC 7F049DBC 1000005A */ b .L7F049F28 -/* 07E8F0 7F049DC0 24C618B8 */ addiu $a2, %lo(D_800318B8) # addiu $a2, $a2, 0x18b8 -.L7F049DC4: -/* 07E8F4 7F049DC4 3C068003 */ lui $a2, %hi(D_8003191C) -/* 07E8F8 7F049DC8 10000057 */ b .L7F049F28 -/* 07E8FC 7F049DCC 24C6191C */ addiu $a2, %lo(D_8003191C) # addiu $a2, $a2, 0x191c -.L7F049DD0: -/* 07E900 7F049DD0 3C068003 */ lui $a2, %hi(D_80031950) -/* 07E904 7F049DD4 10000054 */ b .L7F049F28 -/* 07E908 7F049DD8 24C61950 */ addiu $a2, %lo(D_80031950) # addiu $a2, $a2, 0x1950 -.L7F049DDC: -/* 07E90C 7F049DDC 3C068003 */ lui $a2, %hi(D_800319D4) -/* 07E910 7F049DE0 10000051 */ b .L7F049F28 -/* 07E914 7F049DE4 24C619D4 */ addiu $a2, %lo(D_800319D4) # addiu $a2, $a2, 0x19d4 -.L7F049DE8: -/* 07E918 7F049DE8 3C068003 */ lui $a2, %hi(D_800319F0) -/* 07E91C 7F049DEC 1000004E */ b .L7F049F28 -/* 07E920 7F049DF0 24C619F0 */ addiu $a2, %lo(D_800319F0) # addiu $a2, $a2, 0x19f0 -.L7F049DF4: -/* 07E924 7F049DF4 3C068003 */ lui $a2, %hi(D_80031A0C) -/* 07E928 7F049DF8 1000004B */ b .L7F049F28 -/* 07E92C 7F049DFC 24C61A0C */ addiu $a2, %lo(D_80031A0C) # addiu $a2, $a2, 0x1a0c -.L7F049E00: -/* 07E930 7F049E00 3C068003 */ lui $a2, %hi(D_80031A28) -/* 07E934 7F049E04 10000048 */ b .L7F049F28 -/* 07E938 7F049E08 24C61A28 */ addiu $a2, %lo(D_80031A28) # addiu $a2, $a2, 0x1a28 -.L7F049E0C: -/* 07E93C 7F049E0C 3C068003 */ lui $a2, %hi(D_80031A44) -/* 07E940 7F049E10 10000045 */ b .L7F049F28 -/* 07E944 7F049E14 24C61A44 */ addiu $a2, %lo(D_80031A44) # addiu $a2, $a2, 0x1a44 -.L7F049E18: -/* 07E948 7F049E18 3C068003 */ lui $a2, %hi(D_80031A60) -/* 07E94C 7F049E1C 10000042 */ b .L7F049F28 -/* 07E950 7F049E20 24C61A60 */ addiu $a2, %lo(D_80031A60) # addiu $a2, $a2, 0x1a60 -.L7F049E24: -/* 07E954 7F049E24 3C068003 */ lui $a2, %hi(D_80031A7C) -/* 07E958 7F049E28 1000003F */ b .L7F049F28 -/* 07E95C 7F049E2C 24C61A7C */ addiu $a2, %lo(D_80031A7C) # addiu $a2, $a2, 0x1a7c -.L7F049E30: -/* 07E960 7F049E30 3C068003 */ lui $a2, %hi(D_80031A98) -/* 07E964 7F049E34 1000003C */ b .L7F049F28 -/* 07E968 7F049E38 24C61A98 */ addiu $a2, %lo(D_80031A98) # addiu $a2, $a2, 0x1a98 -.L7F049E3C: -/* 07E96C 7F049E3C 3C068003 */ lui $a2, %hi(D_80031AB4) -/* 07E970 7F049E40 10000039 */ b .L7F049F28 -/* 07E974 7F049E44 24C61AB4 */ addiu $a2, %lo(D_80031AB4) # addiu $a2, $a2, 0x1ab4 -.L7F049E48: -/* 07E978 7F049E48 3C068003 */ lui $a2, %hi(D_80031AD0) -/* 07E97C 7F049E4C 10000036 */ b .L7F049F28 -/* 07E980 7F049E50 24C61AD0 */ addiu $a2, %lo(D_80031AD0) # addiu $a2, $a2, 0x1ad0 -.L7F049E54: -/* 07E984 7F049E54 3C068003 */ lui $a2, %hi(D_80031AEC) -/* 07E988 7F049E58 10000033 */ b .L7F049F28 -/* 07E98C 7F049E5C 24C61AEC */ addiu $a2, %lo(D_80031AEC) # addiu $a2, $a2, 0x1aec -.L7F049E60: -/* 07E990 7F049E60 3C068003 */ lui $a2, %hi(D_80031B24) -/* 07E994 7F049E64 10000030 */ b .L7F049F28 -/* 07E998 7F049E68 24C61B24 */ addiu $a2, %lo(D_80031B24) # addiu $a2, $a2, 0x1b24 -.L7F049E6C: -/* 07E99C 7F049E6C 3C068003 */ lui $a2, %hi(D_80031B38) -/* 07E9A0 7F049E70 1000002D */ b .L7F049F28 -/* 07E9A4 7F049E74 24C61B38 */ addiu $a2, %lo(D_80031B38) # addiu $a2, $a2, 0x1b38 -.L7F049E78: -/* 07E9A8 7F049E78 3C068003 */ lui $a2, %hi(D_80031B4C) -/* 07E9AC 7F049E7C 1000002A */ b .L7F049F28 -/* 07E9B0 7F049E80 24C61B4C */ addiu $a2, %lo(D_80031B4C) # addiu $a2, $a2, 0x1b4c -.L7F049E84: -/* 07E9B4 7F049E84 3C068003 */ lui $a2, %hi(D_80031B60) -/* 07E9B8 7F049E88 10000027 */ b .L7F049F28 -/* 07E9BC 7F049E8C 24C61B60 */ addiu $a2, %lo(D_80031B60) # addiu $a2, $a2, 0x1b60 -.L7F049E90: -/* 07E9C0 7F049E90 3C068003 */ lui $a2, %hi(D_80031BB4) -/* 07E9C4 7F049E94 10000024 */ b .L7F049F28 -/* 07E9C8 7F049E98 24C61BB4 */ addiu $a2, %lo(D_80031BB4) # addiu $a2, $a2, 0x1bb4 -.L7F049E9C: -/* 07E9CC 7F049E9C 3C068003 */ lui $a2, %hi(D_80031BD0) -/* 07E9D0 7F049EA0 10000021 */ b .L7F049F28 -/* 07E9D4 7F049EA4 24C61BD0 */ addiu $a2, %lo(D_80031BD0) # addiu $a2, $a2, 0x1bd0 -.L7F049EA8: -/* 07E9D8 7F049EA8 3C068003 */ lui $a2, %hi(D_80031BEC) -/* 07E9DC 7F049EAC 1000001E */ b .L7F049F28 -/* 07E9E0 7F049EB0 24C61BEC */ addiu $a2, %lo(D_80031BEC) # addiu $a2, $a2, 0x1bec -.L7F049EB4: -/* 07E9E4 7F049EB4 3C068003 */ lui $a2, %hi(D_80031C08) -/* 07E9E8 7F049EB8 1000001B */ b .L7F049F28 -/* 07E9EC 7F049EBC 24C61C08 */ addiu $a2, %lo(D_80031C08) # addiu $a2, $a2, 0x1c08 -.L7F049EC0: -/* 07E9F0 7F049EC0 3C068003 */ lui $a2, %hi(D_80031C80) -/* 07E9F4 7F049EC4 10000018 */ b .L7F049F28 -/* 07E9F8 7F049EC8 24C61C80 */ addiu $a2, %lo(D_80031C80) # addiu $a2, $a2, 0x1c80 -.L7F049ECC: -/* 07E9FC 7F049ECC 3C068003 */ lui $a2, %hi(D_80031D30) -/* 07EA00 7F049ED0 10000015 */ b .L7F049F28 -/* 07EA04 7F049ED4 24C61D30 */ addiu $a2, %lo(D_80031D30) # addiu $a2, $a2, 0x1d30 -.L7F049ED8: -/* 07EA08 7F049ED8 3C068003 */ lui $a2, %hi(D_80031D58) -/* 07EA0C 7F049EDC 10000012 */ b .L7F049F28 -/* 07EA10 7F049EE0 24C61D58 */ addiu $a2, %lo(D_80031D58) # addiu $a2, $a2, 0x1d58 -.L7F049EE4: -/* 07EA14 7F049EE4 3C068003 */ lui $a2, %hi(D_80031DA8) -/* 07EA18 7F049EE8 1000000F */ b .L7F049F28 -/* 07EA1C 7F049EEC 24C61DA8 */ addiu $a2, %lo(D_80031DA8) # addiu $a2, $a2, 0x1da8 -.L7F049EF0: -/* 07EA20 7F049EF0 3C068003 */ lui $a2, %hi(D_80031DF4) -/* 07EA24 7F049EF4 1000000C */ b .L7F049F28 -/* 07EA28 7F049EF8 24C61DF4 */ addiu $a2, %lo(D_80031DF4) # addiu $a2, $a2, 0x1df4 -.L7F049EFC: -/* 07EA2C 7F049EFC 3C068003 */ lui $a2, %hi(D_80031E40) -/* 07EA30 7F049F00 10000009 */ b .L7F049F28 -/* 07EA34 7F049F04 24C61E40 */ addiu $a2, %lo(D_80031E40) # addiu $a2, $a2, 0x1e40 -.L7F049F08: -/* 07EA38 7F049F08 3C068003 */ lui $a2, %hi(D_80031E78) -/* 07EA3C 7F049F0C 10000006 */ b .L7F049F28 -/* 07EA40 7F049F10 24C61E78 */ addiu $a2, %lo(D_80031E78) # addiu $a2, $a2, 0x1e78 -.L7F049F14: -/* 07EA44 7F049F14 3C068003 */ lui $a2, %hi(D_80031EB0) -/* 07EA48 7F049F18 10000003 */ b .L7F049F28 -/* 07EA4C 7F049F1C 24C61EB0 */ addiu $a2, %lo(D_80031EB0) # addiu $a2, $a2, 0x1eb0 -.L7F049F20: -/* 07EA50 7F049F20 3C068003 */ lui $a2, %hi(D_80031EE8) -/* 07EA54 7F049F24 24C61EE8 */ addiu $a2, %lo(D_80031EE8) # addiu $a2, $a2, 0x1ee8 -def_7F049CC0: -.L7F049F28: -/* 07EA58 7F049F28 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 07EA5C 7F049F2C 00C02825 */ move $a1, $a2 -/* 07EA60 7F049F30 8FBF0014 */ lw $ra, 0x14($sp) -/* 07EA64 7F049F34 27BD0018 */ addiu $sp, $sp, 0x18 -/* 07EA68 7F049F38 03E00008 */ jr $ra -/* 07EA6C 7F049F3C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void save_img_index_to_obj_ani_slot(void) { - -} -#else -GLOBAL_ASM( -.text -glabel save_img_index_to_obj_ani_slot -/* 07EA70 7F049F40 03E00008 */ jr $ra -/* 07EA74 7F049F44 AC850008 */ sw $a1, 8($a0) -) -#endif - - - - - -#ifdef NONMATCHING -void process_monitor_animation_microcode(void) { - -} -#else -#ifdef VERSION_US -GLOBAL_ASM( -.late_rodata -glabel D_80052C68 -.word 0x40c90fdb /*6.2831855*/ -/*D:80052C6C*/ -glabel jpt_80052C6C -.word command00_reset_scroll_shift -.word command01_horizontal_scroll -.word command02_vertical_scroll -.word command03_horizontal_pos -.word command04_vertical_pos -.word command05_zoomx -.word command06_zoomy -.word command07_use_image_from_global_monitor_table -.word command08_halt_processing_for_time -.word command09_jump -.word command0A_jump_conditional -.word command0B_restart -.word command0C_break -.word command0D_colour_transition -.word command0E_set_rotation -.word command0F_rotate - -glabel D_80052CAC -.word 0x3fc90fdb /*1.5707964*/ -glabel D_80052CB0 -.word 0x3fb50481 /*1.4141999*/ -glabel D_80052CB4 -.word 0x3f59999a /*0.85000002*/ -glabel D_80052CB8 -.word 0x3e19999a /*0.15000001*/ -glabel D_80052CBC -.word 0x3e19999a /*0.15000001*/ -glabel D_80052CC0 -.word 0x3f666666 /*0.89999998*/ -.text -glabel process_monitor_animation_microcode -/* 07EA78 7F049F48 27BDFF50 */ addiu $sp, $sp, -0xb0 -/* 07EA7C 7F049F4C AFB10044 */ sw $s1, 0x44($sp) -/* 07EA80 7F049F50 AFB00040 */ sw $s0, 0x40($sp) -/* 07EA84 7F049F54 00C08025 */ move $s0, $a2 -/* 07EA88 7F049F58 00A08825 */ move $s1, $a1 -/* 07EA8C 7F049F5C AFBF004C */ sw $ra, 0x4c($sp) -/* 07EA90 7F049F60 AFB20048 */ sw $s2, 0x48($sp) -/* 07EA94 7F049F64 F7BA0038 */ sdc1 $f26, 0x38($sp) -/* 07EA98 7F049F68 F7B80030 */ sdc1 $f24, 0x30($sp) -/* 07EA9C 7F049F6C F7B60028 */ sdc1 $f22, 0x28($sp) -/* 07EAA0 7F049F70 F7B40020 */ sdc1 $f20, 0x20($sp) -/* 07EAA4 7F049F74 AFA400B0 */ sw $a0, 0xb0($sp) -/* 07EAA8 7F049F78 10A0031E */ beqz $a1, .L7F04ABF4 -/* 07EAAC 7F049F7C AFA700BC */ sw $a3, 0xbc($sp) -/* 07EAB0 7F049F80 94AE0000 */ lhu $t6, ($a1) -/* 07EAB4 7F049F84 24010018 */ li $at, 24 -/* 07EAB8 7F049F88 31CF00FF */ andi $t7, $t6, 0xff -/* 07EABC 7F049F8C 55E1031A */ bnel $t7, $at, .L7F04ABF8 -/* 07EAC0 7F049F90 8FBF004C */ lw $ra, 0x4c($sp) -/* 07EAC4 7F049F94 0FC2F5B1 */ jal sub_GAME_7F0BD6C4 -/* 07EAC8 7F049F98 24040004 */ li $a0, 4 -/* 07EACC 7F049F9C 8FB800BC */ lw $t8, 0xbc($sp) -/* 07EAD0 7F049FA0 00409025 */ move $s2, $v0 -/* 07EAD4 7F049FA4 8FA400B0 */ lw $a0, 0xb0($sp) -/* 07EAD8 7F049FA8 27190008 */ addiu $t9, $t8, 8 -/* 07EADC 7F049FAC AFB900BC */ sw $t9, 0xbc($sp) -/* 07EAE0 7F049FB0 AFB800A8 */ sw $t8, 0xa8($sp) -/* 07EAE4 7F049FB4 8E280004 */ lw $t0, 4($s1) -/* 07EAE8 7F049FB8 02202825 */ move $a1, $s1 -/* 07EAEC 7F049FBC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 07EAF0 7F049FC0 AFA800A4 */ sw $t0, 0xa4($sp) -/* 07EAF4 7F049FC4 3C018005 */ lui $at, %hi(D_80052C68) -/* 07EAF8 7F049FC8 C43A2C68 */ lwc1 $f26, %lo(D_80052C68)($at) -/* 07EAFC 7F049FCC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07EB00 7F049FD0 4481C000 */ mtc1 $at, $f24 -/* 07EB04 7F049FD4 3C013A80 */ li $at, 0x3A800000 # 0.000977 -/* 07EB08 7F049FD8 4481B000 */ mtc1 $at, $f22 -/* 07EB0C 7F049FDC 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EB10 7F049FE0 44811000 */ mtc1 $at, $f2 -/* 07EB14 7F049FE4 4480A000 */ mtc1 $zero, $f20 -/* 07EB18 7F049FE8 AFA200A0 */ sw $v0, 0xa0($sp) -/* 07EB1C 7F049FEC 00008825 */ move $s1, $zero -/* 07EB20 7F049FF0 96020004 */ lhu $v0, 4($s0) -.L7F049FF4: -/* 07EB24 7F049FF4 8E090000 */ lw $t1, ($s0) -/* 07EB28 7F049FF8 00025080 */ sll $t2, $v0, 2 -/* 07EB2C 7F049FFC 012A1821 */ addu $v1, $t1, $t2 -/* 07EB30 7F04A000 8C6B0000 */ lw $t3, ($v1) -/* 07EB34 7F04A004 2D610010 */ sltiu $at, $t3, 0x10 -/* 07EB38 7F04A008 10200117 */ beqz $at, .L7F04A468 -/* 07EB3C 7F04A00C 000B5880 */ sll $t3, $t3, 2 -/* 07EB40 7F04A010 3C018005 */ lui $at, %hi(jpt_80052C6C) -/* 07EB44 7F04A014 002B0821 */ addu $at, $at, $t3 -/* 07EB48 7F04A018 8C2B2C6C */ lw $t3, %lo(jpt_80052C6C)($at) -/* 07EB4C 7F04A01C 01600008 */ jr $t3 -/* 07EB50 7F04A020 00000000 */ nop -command00_reset_scroll_shift: -/* 07EB54 7F04A024 244C0001 */ addiu $t4, $v0, 1 -/* 07EB58 7F04A028 E6140040 */ swc1 $f20, 0x40($s0) -/* 07EB5C 7F04A02C E6140054 */ swc1 $f20, 0x54($s0) -/* 07EB60 7F04A030 1000010D */ b .L7F04A468 -/* 07EB64 7F04A034 A60C0004 */ sh $t4, 4($s0) -command01_horizontal_scroll: -/* 07EB68 7F04A038 E614003C */ swc1 $f20, 0x3c($s0) -/* 07EB6C 7F04A03C 8C6D0008 */ lw $t5, 8($v1) -/* 07EB70 7F04A040 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EB74 7F04A044 448D2000 */ mtc1 $t5, $f4 -/* 07EB78 7F04A048 05A10004 */ bgez $t5, .L7F04A05C -/* 07EB7C 7F04A04C 468021A0 */ cvt.s.w $f6, $f4 -/* 07EB80 7F04A050 44814000 */ mtc1 $at, $f8 -/* 07EB84 7F04A054 00000000 */ nop -/* 07EB88 7F04A058 46083180 */ add.s $f6, $f6, $f8 -.L7F04A05C: -/* 07EB8C 7F04A05C 4606C283 */ div.s $f10, $f24, $f6 -/* 07EB90 7F04A060 C6000038 */ lwc1 $f0, 0x38($s0) -/* 07EB94 7F04A064 244F0003 */ addiu $t7, $v0, 3 -/* 07EB98 7F04A068 E6000044 */ swc1 $f0, 0x44($s0) -/* 07EB9C 7F04A06C E60A0040 */ swc1 $f10, 0x40($s0) -/* 07EBA0 7F04A070 8C6E0004 */ lw $t6, 4($v1) -/* 07EBA4 7F04A074 A60F0004 */ sh $t7, 4($s0) -/* 07EBA8 7F04A078 448E9000 */ mtc1 $t6, $f18 -/* 07EBAC 7F04A07C 00000000 */ nop -/* 07EBB0 7F04A080 46809120 */ cvt.s.w $f4, $f18 -/* 07EBB4 7F04A084 46162202 */ mul.s $f8, $f4, $f22 -/* 07EBB8 7F04A088 46080180 */ add.s $f6, $f0, $f8 -/* 07EBBC 7F04A08C 100000F6 */ b .L7F04A468 -/* 07EBC0 7F04A090 E6060048 */ swc1 $f6, 0x48($s0) -command02_vertical_scroll: -/* 07EBC4 7F04A094 E6140050 */ swc1 $f20, 0x50($s0) -/* 07EBC8 7F04A098 8C780008 */ lw $t8, 8($v1) -/* 07EBCC 7F04A09C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EBD0 7F04A0A0 44985000 */ mtc1 $t8, $f10 -/* 07EBD4 7F04A0A4 07010004 */ bgez $t8, .L7F04A0B8 -/* 07EBD8 7F04A0A8 468054A0 */ cvt.s.w $f18, $f10 -/* 07EBDC 7F04A0AC 44812000 */ mtc1 $at, $f4 -/* 07EBE0 7F04A0B0 00000000 */ nop -/* 07EBE4 7F04A0B4 46049480 */ add.s $f18, $f18, $f4 -.L7F04A0B8: -/* 07EBE8 7F04A0B8 4612C203 */ div.s $f8, $f24, $f18 -/* 07EBEC 7F04A0BC C600004C */ lwc1 $f0, 0x4c($s0) -/* 07EBF0 7F04A0C0 24480003 */ addiu $t0, $v0, 3 -/* 07EBF4 7F04A0C4 E6000058 */ swc1 $f0, 0x58($s0) -/* 07EBF8 7F04A0C8 E6080054 */ swc1 $f8, 0x54($s0) -/* 07EBFC 7F04A0CC 8C790004 */ lw $t9, 4($v1) -/* 07EC00 7F04A0D0 A6080004 */ sh $t0, 4($s0) -/* 07EC04 7F04A0D4 44993000 */ mtc1 $t9, $f6 -/* 07EC08 7F04A0D8 00000000 */ nop -/* 07EC0C 7F04A0DC 468032A0 */ cvt.s.w $f10, $f6 -/* 07EC10 7F04A0E0 46165102 */ mul.s $f4, $f10, $f22 -/* 07EC14 7F04A0E4 46040480 */ add.s $f18, $f0, $f4 -/* 07EC18 7F04A0E8 100000DF */ b .L7F04A468 -/* 07EC1C 7F04A0EC E612005C */ swc1 $f18, 0x5c($s0) -command03_horizontal_pos: -/* 07EC20 7F04A0F0 E614003C */ swc1 $f20, 0x3c($s0) -/* 07EC24 7F04A0F4 8C690008 */ lw $t1, 8($v1) -/* 07EC28 7F04A0F8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EC2C 7F04A0FC 44894000 */ mtc1 $t1, $f8 -/* 07EC30 7F04A100 05210004 */ bgez $t1, .L7F04A114 -/* 07EC34 7F04A104 468041A0 */ cvt.s.w $f6, $f8 -/* 07EC38 7F04A108 44815000 */ mtc1 $at, $f10 -/* 07EC3C 7F04A10C 00000000 */ nop -/* 07EC40 7F04A110 460A3180 */ add.s $f6, $f6, $f10 -.L7F04A114: -/* 07EC44 7F04A114 4606C103 */ div.s $f4, $f24, $f6 -/* 07EC48 7F04A118 C6120038 */ lwc1 $f18, 0x38($s0) -/* 07EC4C 7F04A11C 244B0003 */ addiu $t3, $v0, 3 -/* 07EC50 7F04A120 E6120044 */ swc1 $f18, 0x44($s0) -/* 07EC54 7F04A124 E6040040 */ swc1 $f4, 0x40($s0) -/* 07EC58 7F04A128 8C6A0004 */ lw $t2, 4($v1) -/* 07EC5C 7F04A12C A60B0004 */ sh $t3, 4($s0) -/* 07EC60 7F04A130 448A4000 */ mtc1 $t2, $f8 -/* 07EC64 7F04A134 00000000 */ nop -/* 07EC68 7F04A138 468042A0 */ cvt.s.w $f10, $f8 -/* 07EC6C 7F04A13C 46165182 */ mul.s $f6, $f10, $f22 -/* 07EC70 7F04A140 100000C9 */ b .L7F04A468 -/* 07EC74 7F04A144 E6060048 */ swc1 $f6, 0x48($s0) -command04_vertical_pos: -/* 07EC78 7F04A148 E6140050 */ swc1 $f20, 0x50($s0) -/* 07EC7C 7F04A14C 8C6C0008 */ lw $t4, 8($v1) -/* 07EC80 7F04A150 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EC84 7F04A154 448C2000 */ mtc1 $t4, $f4 -/* 07EC88 7F04A158 05810004 */ bgez $t4, .L7F04A16C -/* 07EC8C 7F04A15C 468024A0 */ cvt.s.w $f18, $f4 -/* 07EC90 7F04A160 44814000 */ mtc1 $at, $f8 -/* 07EC94 7F04A164 00000000 */ nop -/* 07EC98 7F04A168 46089480 */ add.s $f18, $f18, $f8 -.L7F04A16C: -/* 07EC9C 7F04A16C 4612C283 */ div.s $f10, $f24, $f18 -/* 07ECA0 7F04A170 C606004C */ lwc1 $f6, 0x4c($s0) -/* 07ECA4 7F04A174 244E0003 */ addiu $t6, $v0, 3 -/* 07ECA8 7F04A178 E6060058 */ swc1 $f6, 0x58($s0) -/* 07ECAC 7F04A17C E60A0054 */ swc1 $f10, 0x54($s0) -/* 07ECB0 7F04A180 8C6D0004 */ lw $t5, 4($v1) -/* 07ECB4 7F04A184 A60E0004 */ sh $t6, 4($s0) -/* 07ECB8 7F04A188 448D2000 */ mtc1 $t5, $f4 -/* 07ECBC 7F04A18C 00000000 */ nop -/* 07ECC0 7F04A190 46802220 */ cvt.s.w $f8, $f4 -/* 07ECC4 7F04A194 46164482 */ mul.s $f18, $f8, $f22 -/* 07ECC8 7F04A198 100000B3 */ b .L7F04A468 -/* 07ECCC 7F04A19C E612005C */ swc1 $f18, 0x5c($s0) -command05_zoomx: -/* 07ECD0 7F04A1A0 E6140014 */ swc1 $f20, 0x14($s0) -/* 07ECD4 7F04A1A4 8C6F0008 */ lw $t7, 8($v1) -/* 07ECD8 7F04A1A8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07ECDC 7F04A1AC 448F5000 */ mtc1 $t7, $f10 -/* 07ECE0 7F04A1B0 05E10004 */ bgez $t7, .L7F04A1C4 -/* 07ECE4 7F04A1B4 468051A0 */ cvt.s.w $f6, $f10 -/* 07ECE8 7F04A1B8 44812000 */ mtc1 $at, $f4 -/* 07ECEC 7F04A1BC 00000000 */ nop -/* 07ECF0 7F04A1C0 46043180 */ add.s $f6, $f6, $f4 -.L7F04A1C4: -/* 07ECF4 7F04A1C4 4606C203 */ div.s $f8, $f24, $f6 -/* 07ECF8 7F04A1C8 C6120010 */ lwc1 $f18, 0x10($s0) -/* 07ECFC 7F04A1CC 24590003 */ addiu $t9, $v0, 3 -/* 07ED00 7F04A1D0 E612001C */ swc1 $f18, 0x1c($s0) -/* 07ED04 7F04A1D4 E6080018 */ swc1 $f8, 0x18($s0) -/* 07ED08 7F04A1D8 8C780004 */ lw $t8, 4($v1) -/* 07ED0C 7F04A1DC A6190004 */ sh $t9, 4($s0) -/* 07ED10 7F04A1E0 44985000 */ mtc1 $t8, $f10 -/* 07ED14 7F04A1E4 00000000 */ nop -/* 07ED18 7F04A1E8 46805120 */ cvt.s.w $f4, $f10 -/* 07ED1C 7F04A1EC 46162182 */ mul.s $f6, $f4, $f22 -/* 07ED20 7F04A1F0 1000009D */ b .L7F04A468 -/* 07ED24 7F04A1F4 E6060020 */ swc1 $f6, 0x20($s0) -command06_zoomy: -/* 07ED28 7F04A1F8 E6140028 */ swc1 $f20, 0x28($s0) -/* 07ED2C 7F04A1FC 8C680008 */ lw $t0, 8($v1) -/* 07ED30 7F04A200 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07ED34 7F04A204 44884000 */ mtc1 $t0, $f8 -/* 07ED38 7F04A208 05010004 */ bgez $t0, .L7F04A21C -/* 07ED3C 7F04A20C 468044A0 */ cvt.s.w $f18, $f8 -/* 07ED40 7F04A210 44815000 */ mtc1 $at, $f10 -/* 07ED44 7F04A214 00000000 */ nop -/* 07ED48 7F04A218 460A9480 */ add.s $f18, $f18, $f10 -.L7F04A21C: -/* 07ED4C 7F04A21C 4612C103 */ div.s $f4, $f24, $f18 -/* 07ED50 7F04A220 C6060024 */ lwc1 $f6, 0x24($s0) -/* 07ED54 7F04A224 244A0003 */ addiu $t2, $v0, 3 -/* 07ED58 7F04A228 E6060030 */ swc1 $f6, 0x30($s0) -/* 07ED5C 7F04A22C E604002C */ swc1 $f4, 0x2c($s0) -/* 07ED60 7F04A230 8C690004 */ lw $t1, 4($v1) -/* 07ED64 7F04A234 A60A0004 */ sh $t2, 4($s0) -/* 07ED68 7F04A238 44894000 */ mtc1 $t1, $f8 -/* 07ED6C 7F04A23C 00000000 */ nop -/* 07ED70 7F04A240 468042A0 */ cvt.s.w $f10, $f8 -/* 07ED74 7F04A244 46165482 */ mul.s $f18, $f10, $f22 -/* 07ED78 7F04A248 10000087 */ b .L7F04A468 -/* 07ED7C 7F04A24C E6120034 */ swc1 $f18, 0x34($s0) -command07_use_image_from_global_monitor_table: -/* 07ED80 7F04A250 02002025 */ move $a0, $s0 -/* 07ED84 7F04A254 0FC127D0 */ jal save_img_index_to_obj_ani_slot -/* 07ED88 7F04A258 8C650004 */ lw $a1, 4($v1) -/* 07ED8C 7F04A25C 960B0004 */ lhu $t3, 4($s0) -/* 07ED90 7F04A260 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07ED94 7F04A264 44811000 */ mtc1 $at, $f2 -/* 07ED98 7F04A268 256C0002 */ addiu $t4, $t3, 2 -/* 07ED9C 7F04A26C 1000007E */ b .L7F04A468 -/* 07EDA0 7F04A270 A60C0004 */ sh $t4, 4($s0) -command08_halt_processing_for_time: -/* 07EDA4 7F04A274 86020006 */ lh $v0, 6($s0) -/* 07EDA8 7F04A278 3C0D8005 */ lui $t5, %hi(clock_timer) -/* 07EDAC 7F04A27C 0442000E */ bltzl $v0, .L7F04A2B8 -/* 07EDB0 7F04A280 8C680004 */ lw $t0, 4($v1) -/* 07EDB4 7F04A284 8DAD8374 */ lw $t5, %lo(clock_timer)($t5) -/* 07EDB8 7F04A288 004D7023 */ subu $t6, $v0, $t5 -/* 07EDBC 7F04A28C A60E0006 */ sh $t6, 6($s0) -/* 07EDC0 7F04A290 860F0006 */ lh $t7, 6($s0) -/* 07EDC4 7F04A294 05E20004 */ bltzl $t7, .L7F04A2A8 -/* 07EDC8 7F04A298 96180004 */ lhu $t8, 4($s0) -/* 07EDCC 7F04A29C 10000072 */ b .L7F04A468 -/* 07EDD0 7F04A2A0 24110001 */ li $s1, 1 -/* 07EDD4 7F04A2A4 96180004 */ lhu $t8, 4($s0) -.L7F04A2A8: -/* 07EDD8 7F04A2A8 27190002 */ addiu $t9, $t8, 2 -/* 07EDDC 7F04A2AC 1000006E */ b .L7F04A468 -/* 07EDE0 7F04A2B0 A6190004 */ sh $t9, 4($s0) -/* 07EDE4 7F04A2B4 8C680004 */ lw $t0, 4($v1) -.L7F04A2B8: -/* 07EDE8 7F04A2B8 24110001 */ li $s1, 1 -/* 07EDEC 7F04A2BC 1000006A */ b .L7F04A468 -/* 07EDF0 7F04A2C0 A6080006 */ sh $t0, 6($s0) -command09_jump: -/* 07EDF4 7F04A2C4 02002025 */ move $a0, $s0 -/* 07EDF8 7F04A2C8 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 07EDFC 7F04A2CC 8C650004 */ lw $a1, 4($v1) -/* 07EE00 7F04A2D0 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EE04 7F04A2D4 44811000 */ mtc1 $at, $f2 -/* 07EE08 7F04A2D8 10000063 */ b .L7F04A468 -/* 07EE0C 7F04A2DC 00000000 */ nop -command0A_jump_conditional: -/* 07EE10 7F04A2E0 0C002914 */ jal get_random_value -/* 07EE14 7F04A2E4 AFA30094 */ sw $v1, 0x94($sp) -/* 07EE18 7F04A2E8 8FA30094 */ lw $v1, 0x94($sp) -/* 07EE1C 7F04A2EC 00024C02 */ srl $t1, $v0, 0x10 -/* 07EE20 7F04A2F0 02002025 */ move $a0, $s0 -/* 07EE24 7F04A2F4 8C6A0008 */ lw $t2, 8($v1) -/* 07EE28 7F04A2F8 012A082B */ sltu $at, $t1, $t2 -/* 07EE2C 7F04A2FC 50200008 */ beql $at, $zero, .L7F04A320 -/* 07EE30 7F04A300 960B0004 */ lhu $t3, 4($s0) -/* 07EE34 7F04A304 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 07EE38 7F04A308 8C650004 */ lw $a1, 4($v1) -/* 07EE3C 7F04A30C 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EE40 7F04A310 44811000 */ mtc1 $at, $f2 -/* 07EE44 7F04A314 10000054 */ b .L7F04A468 -/* 07EE48 7F04A318 00000000 */ nop -/* 07EE4C 7F04A31C 960B0004 */ lhu $t3, 4($s0) -.L7F04A320: -/* 07EE50 7F04A320 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EE54 7F04A324 44811000 */ mtc1 $at, $f2 -/* 07EE58 7F04A328 256C0003 */ addiu $t4, $t3, 3 -/* 07EE5C 7F04A32C A60C0004 */ sh $t4, 4($s0) -/* 07EE60 7F04A330 1000004D */ b .L7F04A468 -/* 07EE64 7F04A334 00000000 */ nop -command0B_restart: -/* 07EE68 7F04A338 1000004B */ b .L7F04A468 -/* 07EE6C 7F04A33C A6000004 */ sh $zero, 4($s0) -command0C_break: -/* 07EE70 7F04A340 10000049 */ b .L7F04A468 -/* 07EE74 7F04A344 24110001 */ li $s1, 1 -command0D_colour_transition: -/* 07EE78 7F04A348 E614006C */ swc1 $f20, 0x6c($s0) -/* 07EE7C 7F04A34C 8C6D0008 */ lw $t5, 8($v1) -/* 07EE80 7F04A350 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EE84 7F04A354 448D2000 */ mtc1 $t5, $f4 -/* 07EE88 7F04A358 05A10004 */ bgez $t5, .L7F04A36C -/* 07EE8C 7F04A35C 468021A0 */ cvt.s.w $f6, $f4 -/* 07EE90 7F04A360 44814000 */ mtc1 $at, $f8 -/* 07EE94 7F04A364 00000000 */ nop -/* 07EE98 7F04A368 46083180 */ add.s $f6, $f6, $f8 -.L7F04A36C: -/* 07EE9C 7F04A36C 4606C283 */ div.s $f10, $f24, $f6 -/* 07EEA0 7F04A370 920E0060 */ lbu $t6, 0x60($s0) -/* 07EEA4 7F04A374 92080063 */ lbu $t0, 0x63($s0) -/* 07EEA8 7F04A378 920C0066 */ lbu $t4, 0x66($s0) -/* 07EEAC 7F04A37C A20E0061 */ sb $t6, 0x61($s0) -/* 07EEB0 7F04A380 92180069 */ lbu $t8, 0x69($s0) -/* 07EEB4 7F04A384 E60A0070 */ swc1 $f10, 0x70($s0) -/* 07EEB8 7F04A388 8C6F0004 */ lw $t7, 4($v1) -/* 07EEBC 7F04A38C A2080064 */ sb $t0, 0x64($s0) -/* 07EEC0 7F04A390 000FCE02 */ srl $t9, $t7, 0x18 -/* 07EEC4 7F04A394 A2190062 */ sb $t9, 0x62($s0) -/* 07EEC8 7F04A398 8C690004 */ lw $t1, 4($v1) -/* 07EECC 7F04A39C A20C0067 */ sb $t4, 0x67($s0) -/* 07EED0 7F04A3A0 00095C02 */ srl $t3, $t1, 0x10 -/* 07EED4 7F04A3A4 A20B0065 */ sb $t3, 0x65($s0) -/* 07EED8 7F04A3A8 8C6D0004 */ lw $t5, 4($v1) -/* 07EEDC 7F04A3AC A218006A */ sb $t8, 0x6a($s0) -/* 07EEE0 7F04A3B0 24490003 */ addiu $t1, $v0, 3 -/* 07EEE4 7F04A3B4 000D7A02 */ srl $t7, $t5, 8 -/* 07EEE8 7F04A3B8 A20F0068 */ sb $t7, 0x68($s0) -/* 07EEEC 7F04A3BC 8C680004 */ lw $t0, 4($v1) -/* 07EEF0 7F04A3C0 A6090004 */ sh $t1, 4($s0) -/* 07EEF4 7F04A3C4 10000028 */ b .L7F04A468 -/* 07EEF8 7F04A3C8 A208006B */ sb $t0, 0x6b($s0) -command0E_set_rotation: -/* 07EEFC 7F04A3CC 8C6A0004 */ lw $t2, 4($v1) -/* 07EF00 7F04A3D0 244B0002 */ addiu $t3, $v0, 2 -/* 07EF04 7F04A3D4 A60B0004 */ sh $t3, 4($s0) -/* 07EF08 7F04A3D8 448A9000 */ mtc1 $t2, $f18 -/* 07EF0C 7F04A3DC 00000000 */ nop -/* 07EF10 7F04A3E0 46809120 */ cvt.s.w $f4, $f18 -/* 07EF14 7F04A3E4 461A2202 */ mul.s $f8, $f4, $f26 -/* 07EF18 7F04A3E8 46024183 */ div.s $f6, $f8, $f2 -/* 07EF1C 7F04A3EC 1000001E */ b .L7F04A468 -/* 07EF20 7F04A3F0 E606000C */ swc1 $f6, 0xc($s0) -command0F_rotate: -/* 07EF24 7F04A3F4 8C6C0004 */ lw $t4, 4($v1) -/* 07EF28 7F04A3F8 3C018005 */ lui $at, %hi(global_timer_delta) -/* 07EF2C 7F04A3FC C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 07EF30 7F04A400 448C9000 */ mtc1 $t4, $f18 -/* 07EF34 7F04A404 00000000 */ nop -/* 07EF38 7F04A408 46809120 */ cvt.s.w $f4, $f18 -/* 07EF3C 7F04A40C 46045202 */ mul.s $f8, $f10, $f4 -/* 07EF40 7F04A410 C60A000C */ lwc1 $f10, 0xc($s0) -/* 07EF44 7F04A414 461A4182 */ mul.s $f6, $f8, $f26 -/* 07EF48 7F04A418 46023483 */ div.s $f18, $f6, $f2 -/* 07EF4C 7F04A41C 46125100 */ add.s $f4, $f10, $f18 -/* 07EF50 7F04A420 E604000C */ swc1 $f4, 0xc($s0) -/* 07EF54 7F04A424 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07EF58 7F04A428 460CD03E */ c.le.s $f26, $f12 -/* 07EF5C 7F04A42C 00000000 */ nop -/* 07EF60 7F04A430 45020005 */ bc1fl .L7F04A448 -/* 07EF64 7F04A434 4614603C */ c.lt.s $f12, $f20 -/* 07EF68 7F04A438 461A6201 */ sub.s $f8, $f12, $f26 -/* 07EF6C 7F04A43C E608000C */ swc1 $f8, 0xc($s0) -/* 07EF70 7F04A440 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07EF74 7F04A444 4614603C */ c.lt.s $f12, $f20 -.L7F04A448: -/* 07EF78 7F04A448 00000000 */ nop -/* 07EF7C 7F04A44C 45020004 */ bc1fl .L7F04A460 -/* 07EF80 7F04A450 960D0004 */ lhu $t5, 4($s0) -/* 07EF84 7F04A454 461A6180 */ add.s $f6, $f12, $f26 -/* 07EF88 7F04A458 E606000C */ swc1 $f6, 0xc($s0) -/* 07EF8C 7F04A45C 960D0004 */ lhu $t5, 4($s0) -.L7F04A460: -/* 07EF90 7F04A460 25AE0002 */ addiu $t6, $t5, 2 -/* 07EF94 7F04A464 A60E0004 */ sh $t6, 4($s0) -def_7F04A01C: -.L7F04A468: -/* 07EF98 7F04A468 5220FEE2 */ beql $s1, $zero, .L7F049FF4 -/* 07EF9C 7F04A46C 96020004 */ lhu $v0, 4($s0) -/* 07EFA0 7F04A470 C6000018 */ lwc1 $f0, 0x18($s0) -/* 07EFA4 7F04A474 4600A03C */ c.lt.s $f20, $f0 -/* 07EFA8 7F04A478 00000000 */ nop -/* 07EFAC 7F04A47C 45000017 */ bc1f .L7F04A4DC -/* 07EFB0 7F04A480 3C028005 */ lui $v0, %hi(global_timer_delta) -/* 07EFB4 7F04A484 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 -/* 07EFB8 7F04A488 C4520000 */ lwc1 $f18, ($v0) -/* 07EFBC 7F04A48C C60A0014 */ lwc1 $f10, 0x14($s0) -/* 07EFC0 7F04A490 46120102 */ mul.s $f4, $f0, $f18 -/* 07EFC4 7F04A494 46045200 */ add.s $f8, $f10, $f4 -/* 07EFC8 7F04A498 E6080014 */ swc1 $f8, 0x14($s0) -/* 07EFCC 7F04A49C C6020014 */ lwc1 $f2, 0x14($s0) -/* 07EFD0 7F04A4A0 4618103C */ c.lt.s $f2, $f24 -/* 07EFD4 7F04A4A4 00000000 */ nop -/* 07EFD8 7F04A4A8 45020009 */ bc1fl .L7F04A4D0 -/* 07EFDC 7F04A4AC C6080020 */ lwc1 $f8, 0x20($s0) -/* 07EFE0 7F04A4B0 C600001C */ lwc1 $f0, 0x1c($s0) -/* 07EFE4 7F04A4B4 C6060020 */ lwc1 $f6, 0x20($s0) -/* 07EFE8 7F04A4B8 46003481 */ sub.s $f18, $f6, $f0 -/* 07EFEC 7F04A4BC 46029282 */ mul.s $f10, $f18, $f2 -/* 07EFF0 7F04A4C0 460A0100 */ add.s $f4, $f0, $f10 -/* 07EFF4 7F04A4C4 10000005 */ b .L7F04A4DC -/* 07EFF8 7F04A4C8 E6040010 */ swc1 $f4, 0x10($s0) -/* 07EFFC 7F04A4CC C6080020 */ lwc1 $f8, 0x20($s0) -.L7F04A4D0: -/* 07F000 7F04A4D0 E6180014 */ swc1 $f24, 0x14($s0) -/* 07F004 7F04A4D4 E6140018 */ swc1 $f20, 0x18($s0) -/* 07F008 7F04A4D8 E6080010 */ swc1 $f8, 0x10($s0) -.L7F04A4DC: -/* 07F00C 7F04A4DC C600002C */ lwc1 $f0, 0x2c($s0) -/* 07F010 7F04A4E0 3C028005 */ lui $v0, %hi(global_timer_delta) -/* 07F014 7F04A4E4 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 -/* 07F018 7F04A4E8 4600A03C */ c.lt.s $f20, $f0 -/* 07F01C 7F04A4EC 00000000 */ nop -/* 07F020 7F04A4F0 45020017 */ bc1fl .L7F04A550 -/* 07F024 7F04A4F4 C6000040 */ lwc1 $f0, 0x40($s0) -/* 07F028 7F04A4F8 C4520000 */ lwc1 $f18, ($v0) -/* 07F02C 7F04A4FC C6060028 */ lwc1 $f6, 0x28($s0) -/* 07F030 7F04A500 46120282 */ mul.s $f10, $f0, $f18 -/* 07F034 7F04A504 460A3100 */ add.s $f4, $f6, $f10 -/* 07F038 7F04A508 E6040028 */ swc1 $f4, 0x28($s0) -/* 07F03C 7F04A50C C6020028 */ lwc1 $f2, 0x28($s0) -/* 07F040 7F04A510 4618103C */ c.lt.s $f2, $f24 -/* 07F044 7F04A514 00000000 */ nop -/* 07F048 7F04A518 45020009 */ bc1fl .L7F04A540 -/* 07F04C 7F04A51C C6040034 */ lwc1 $f4, 0x34($s0) -/* 07F050 7F04A520 C6000030 */ lwc1 $f0, 0x30($s0) -/* 07F054 7F04A524 C6080034 */ lwc1 $f8, 0x34($s0) -/* 07F058 7F04A528 46004481 */ sub.s $f18, $f8, $f0 -/* 07F05C 7F04A52C 46029182 */ mul.s $f6, $f18, $f2 -/* 07F060 7F04A530 46060280 */ add.s $f10, $f0, $f6 -/* 07F064 7F04A534 10000005 */ b .L7F04A54C -/* 07F068 7F04A538 E60A0024 */ swc1 $f10, 0x24($s0) -/* 07F06C 7F04A53C C6040034 */ lwc1 $f4, 0x34($s0) -.L7F04A540: -/* 07F070 7F04A540 E6180028 */ swc1 $f24, 0x28($s0) -/* 07F074 7F04A544 E614002C */ swc1 $f20, 0x2c($s0) -/* 07F078 7F04A548 E6040024 */ swc1 $f4, 0x24($s0) -.L7F04A54C: -/* 07F07C 7F04A54C C6000040 */ lwc1 $f0, 0x40($s0) -.L7F04A550: -/* 07F080 7F04A550 4600A03C */ c.lt.s $f20, $f0 -/* 07F084 7F04A554 00000000 */ nop -/* 07F088 7F04A558 45020017 */ bc1fl .L7F04A5B8 -/* 07F08C 7F04A55C C6000054 */ lwc1 $f0, 0x54($s0) -/* 07F090 7F04A560 C4520000 */ lwc1 $f18, ($v0) -/* 07F094 7F04A564 C608003C */ lwc1 $f8, 0x3c($s0) -/* 07F098 7F04A568 46120182 */ mul.s $f6, $f0, $f18 -/* 07F09C 7F04A56C 46064280 */ add.s $f10, $f8, $f6 -/* 07F0A0 7F04A570 E60A003C */ swc1 $f10, 0x3c($s0) -/* 07F0A4 7F04A574 C602003C */ lwc1 $f2, 0x3c($s0) -/* 07F0A8 7F04A578 4618103C */ c.lt.s $f2, $f24 -/* 07F0AC 7F04A57C 00000000 */ nop -/* 07F0B0 7F04A580 45020009 */ bc1fl .L7F04A5A8 -/* 07F0B4 7F04A584 C60A0048 */ lwc1 $f10, 0x48($s0) -/* 07F0B8 7F04A588 C6000044 */ lwc1 $f0, 0x44($s0) -/* 07F0BC 7F04A58C C6040048 */ lwc1 $f4, 0x48($s0) -/* 07F0C0 7F04A590 46002481 */ sub.s $f18, $f4, $f0 -/* 07F0C4 7F04A594 46029202 */ mul.s $f8, $f18, $f2 -/* 07F0C8 7F04A598 46080180 */ add.s $f6, $f0, $f8 -/* 07F0CC 7F04A59C 10000005 */ b .L7F04A5B4 -/* 07F0D0 7F04A5A0 E6060038 */ swc1 $f6, 0x38($s0) -/* 07F0D4 7F04A5A4 C60A0048 */ lwc1 $f10, 0x48($s0) -.L7F04A5A8: -/* 07F0D8 7F04A5A8 E618003C */ swc1 $f24, 0x3c($s0) -/* 07F0DC 7F04A5AC E6140040 */ swc1 $f20, 0x40($s0) -/* 07F0E0 7F04A5B0 E60A0038 */ swc1 $f10, 0x38($s0) -.L7F04A5B4: -/* 07F0E4 7F04A5B4 C6000054 */ lwc1 $f0, 0x54($s0) -.L7F04A5B8: -/* 07F0E8 7F04A5B8 4600A03C */ c.lt.s $f20, $f0 -/* 07F0EC 7F04A5BC 00000000 */ nop -/* 07F0F0 7F04A5C0 45020017 */ bc1fl .L7F04A620 -/* 07F0F4 7F04A5C4 C6020070 */ lwc1 $f2, 0x70($s0) -/* 07F0F8 7F04A5C8 C4520000 */ lwc1 $f18, ($v0) -/* 07F0FC 7F04A5CC C6040050 */ lwc1 $f4, 0x50($s0) -/* 07F100 7F04A5D0 46120202 */ mul.s $f8, $f0, $f18 -/* 07F104 7F04A5D4 46082180 */ add.s $f6, $f4, $f8 -/* 07F108 7F04A5D8 E6060050 */ swc1 $f6, 0x50($s0) -/* 07F10C 7F04A5DC C6020050 */ lwc1 $f2, 0x50($s0) -/* 07F110 7F04A5E0 4618103C */ c.lt.s $f2, $f24 -/* 07F114 7F04A5E4 00000000 */ nop -/* 07F118 7F04A5E8 45020009 */ bc1fl .L7F04A610 -/* 07F11C 7F04A5EC C606005C */ lwc1 $f6, 0x5c($s0) -/* 07F120 7F04A5F0 C6000058 */ lwc1 $f0, 0x58($s0) -/* 07F124 7F04A5F4 C60A005C */ lwc1 $f10, 0x5c($s0) -/* 07F128 7F04A5F8 46005481 */ sub.s $f18, $f10, $f0 -/* 07F12C 7F04A5FC 46029102 */ mul.s $f4, $f18, $f2 -/* 07F130 7F04A600 46040200 */ add.s $f8, $f0, $f4 -/* 07F134 7F04A604 10000005 */ b .L7F04A61C -/* 07F138 7F04A608 E608004C */ swc1 $f8, 0x4c($s0) -/* 07F13C 7F04A60C C606005C */ lwc1 $f6, 0x5c($s0) -.L7F04A610: -/* 07F140 7F04A610 E6180050 */ swc1 $f24, 0x50($s0) -/* 07F144 7F04A614 E6140054 */ swc1 $f20, 0x54($s0) -/* 07F148 7F04A618 E606004C */ swc1 $f6, 0x4c($s0) -.L7F04A61C: -/* 07F14C 7F04A61C C6020070 */ lwc1 $f2, 0x70($s0) -.L7F04A620: -/* 07F150 7F04A620 4602A03C */ c.lt.s $f20, $f2 -/* 07F154 7F04A624 00000000 */ nop -/* 07F158 7F04A628 4502003F */ bc1fl .L7F04A728 -/* 07F15C 7F04A62C 8FAA00A0 */ lw $t2, 0xa0($sp) -/* 07F160 7F04A630 C4520000 */ lwc1 $f18, ($v0) -/* 07F164 7F04A634 C60A006C */ lwc1 $f10, 0x6c($s0) -/* 07F168 7F04A638 46121102 */ mul.s $f4, $f2, $f18 -/* 07F16C 7F04A63C 46045200 */ add.s $f8, $f10, $f4 -/* 07F170 7F04A640 E608006C */ swc1 $f8, 0x6c($s0) -/* 07F174 7F04A644 C600006C */ lwc1 $f0, 0x6c($s0) -/* 07F178 7F04A648 4618003C */ c.lt.s $f0, $f24 -/* 07F17C 7F04A64C 00000000 */ nop -/* 07F180 7F04A650 4502002B */ bc1fl .L7F04A700 -/* 07F184 7F04A654 920F0062 */ lbu $t7, 0x62($s0) -/* 07F188 7F04A658 92020061 */ lbu $v0, 0x61($s0) -/* 07F18C 7F04A65C 920F0062 */ lbu $t7, 0x62($s0) -/* 07F190 7F04A660 92030064 */ lbu $v1, 0x64($s0) -/* 07F194 7F04A664 920A0065 */ lbu $t2, 0x65($s0) -/* 07F198 7F04A668 01E2C023 */ subu $t8, $t7, $v0 -/* 07F19C 7F04A66C 44983000 */ mtc1 $t8, $f6 -/* 07F1A0 7F04A670 01435823 */ subu $t3, $t2, $v1 -/* 07F1A4 7F04A674 448B4000 */ mtc1 $t3, $f8 -/* 07F1A8 7F04A678 468034A0 */ cvt.s.w $f18, $f6 -/* 07F1AC 7F04A67C 920F0068 */ lbu $t7, 0x68($s0) -/* 07F1B0 7F04A680 92040067 */ lbu $a0, 0x67($s0) -/* 07F1B4 7F04A684 920A006B */ lbu $t2, 0x6b($s0) -/* 07F1B8 7F04A688 9205006A */ lbu $a1, 0x6a($s0) -/* 07F1BC 7F04A68C 468041A0 */ cvt.s.w $f6, $f8 -/* 07F1C0 7F04A690 46009282 */ mul.s $f10, $f18, $f0 -/* 07F1C4 7F04A694 01E4C023 */ subu $t8, $t7, $a0 -/* 07F1C8 7F04A698 01455823 */ subu $t3, $t2, $a1 -/* 07F1CC 7F04A69C 46003482 */ mul.s $f18, $f6, $f0 -/* 07F1D0 7F04A6A0 4600510D */ trunc.w.s $f4, $f10 -/* 07F1D4 7F04A6A4 4600928D */ trunc.w.s $f10, $f18 -/* 07F1D8 7F04A6A8 44082000 */ mfc1 $t0, $f4 -/* 07F1DC 7F04A6AC 44982000 */ mtc1 $t8, $f4 -/* 07F1E0 7F04A6B0 440D5000 */ mfc1 $t5, $f10 -/* 07F1E4 7F04A6B4 46802220 */ cvt.s.w $f8, $f4 -/* 07F1E8 7F04A6B8 448B5000 */ mtc1 $t3, $f10 -/* 07F1EC 7F04A6BC 00484821 */ addu $t1, $v0, $t0 -/* 07F1F0 7F04A6C0 006D7021 */ addu $t6, $v1, $t5 -/* 07F1F4 7F04A6C4 A2090060 */ sb $t1, 0x60($s0) -/* 07F1F8 7F04A6C8 46805120 */ cvt.s.w $f4, $f10 -/* 07F1FC 7F04A6CC 46004182 */ mul.s $f6, $f8, $f0 -/* 07F200 7F04A6D0 A20E0063 */ sb $t6, 0x63($s0) -/* 07F204 7F04A6D4 46002202 */ mul.s $f8, $f4, $f0 -/* 07F208 7F04A6D8 4600348D */ trunc.w.s $f18, $f6 -/* 07F20C 7F04A6DC 4600418D */ trunc.w.s $f6, $f8 -/* 07F210 7F04A6E0 44089000 */ mfc1 $t0, $f18 -/* 07F214 7F04A6E4 440D3000 */ mfc1 $t5, $f6 -/* 07F218 7F04A6E8 00884821 */ addu $t1, $a0, $t0 -/* 07F21C 7F04A6EC A2090066 */ sb $t1, 0x66($s0) -/* 07F220 7F04A6F0 00AD7021 */ addu $t6, $a1, $t5 -/* 07F224 7F04A6F4 1000000B */ b .L7F04A724 -/* 07F228 7F04A6F8 A20E0069 */ sb $t6, 0x69($s0) -/* 07F22C 7F04A6FC 920F0062 */ lbu $t7, 0x62($s0) -.L7F04A700: -/* 07F230 7F04A700 92180065 */ lbu $t8, 0x65($s0) -/* 07F234 7F04A704 92190068 */ lbu $t9, 0x68($s0) -/* 07F238 7F04A708 9208006B */ lbu $t0, 0x6b($s0) -/* 07F23C 7F04A70C E618006C */ swc1 $f24, 0x6c($s0) -/* 07F240 7F04A710 E6140070 */ swc1 $f20, 0x70($s0) -/* 07F244 7F04A714 A20F0060 */ sb $t7, 0x60($s0) -/* 07F248 7F04A718 A2180063 */ sb $t8, 0x63($s0) -/* 07F24C 7F04A71C A2190066 */ sb $t9, 0x66($s0) -/* 07F250 7F04A720 A2080069 */ sb $t0, 0x69($s0) -.L7F04A724: -/* 07F254 7F04A724 8FAA00A0 */ lw $t2, 0xa0($sp) -.L7F04A728: -/* 07F258 7F04A728 8FA300A4 */ lw $v1, 0xa4($sp) -/* 07F25C 7F04A72C 8FA900BC */ lw $t1, 0xbc($sp) -/* 07F260 7F04A730 AD520000 */ sw $s2, ($t2) -/* 07F264 7F04A734 3C0F8009 */ lui $t7, %hi(monitorimages) -/* 07F268 7F04A738 AD490004 */ sw $t1, 4($t2) -/* 07F26C 7F04A73C 8C6B0008 */ lw $t3, 8($v1) -/* 07F270 7F04A740 8D610000 */ lw $at, ($t3) -/* 07F274 7F04A744 AE410000 */ sw $at, ($s2) -/* 07F278 7F04A748 8D6D0004 */ lw $t5, 4($t3) -/* 07F27C 7F04A74C AE4D0004 */ sw $t5, 4($s2) -/* 07F280 7F04A750 8D610008 */ lw $at, 8($t3) -/* 07F284 7F04A754 AE410008 */ sw $at, 8($s2) -/* 07F288 7F04A758 8D6D000C */ lw $t5, 0xc($t3) -/* 07F28C 7F04A75C AE4D000C */ sw $t5, 0xc($s2) -/* 07F290 7F04A760 8C6E0008 */ lw $t6, 8($v1) -/* 07F294 7F04A764 8DC10010 */ lw $at, 0x10($t6) -/* 07F298 7F04A768 AE410010 */ sw $at, 0x10($s2) -/* 07F29C 7F04A76C 8DD80014 */ lw $t8, 0x14($t6) -/* 07F2A0 7F04A770 AE580014 */ sw $t8, 0x14($s2) -/* 07F2A4 7F04A774 8DC10018 */ lw $at, 0x18($t6) -/* 07F2A8 7F04A778 AE410018 */ sw $at, 0x18($s2) -/* 07F2AC 7F04A77C 8DD8001C */ lw $t8, 0x1c($t6) -/* 07F2B0 7F04A780 AE58001C */ sw $t8, 0x1c($s2) -/* 07F2B4 7F04A784 8C790008 */ lw $t9, 8($v1) -/* 07F2B8 7F04A788 8F210020 */ lw $at, 0x20($t9) -/* 07F2BC 7F04A78C AE410020 */ sw $at, 0x20($s2) -/* 07F2C0 7F04A790 8F290024 */ lw $t1, 0x24($t9) -/* 07F2C4 7F04A794 AE490024 */ sw $t1, 0x24($s2) -/* 07F2C8 7F04A798 8F210028 */ lw $at, 0x28($t9) -/* 07F2CC 7F04A79C AE410028 */ sw $at, 0x28($s2) -/* 07F2D0 7F04A7A0 8F29002C */ lw $t1, 0x2c($t9) -/* 07F2D4 7F04A7A4 AE49002C */ sw $t1, 0x2c($s2) -/* 07F2D8 7F04A7A8 8C6A0008 */ lw $t2, 8($v1) -/* 07F2DC 7F04A7AC 8D410030 */ lw $at, 0x30($t2) -/* 07F2E0 7F04A7B0 AE410030 */ sw $at, 0x30($s2) -/* 07F2E4 7F04A7B4 8D4B0034 */ lw $t3, 0x34($t2) -/* 07F2E8 7F04A7B8 AE4B0034 */ sw $t3, 0x34($s2) -/* 07F2EC 7F04A7BC 8D410038 */ lw $at, 0x38($t2) -/* 07F2F0 7F04A7C0 AE410038 */ sw $at, 0x38($s2) -/* 07F2F4 7F04A7C4 8D4B003C */ lw $t3, 0x3c($t2) -/* 07F2F8 7F04A7C8 AE4B003C */ sw $t3, 0x3c($s2) -/* 07F2FC 7F04A7CC 8E020008 */ lw $v0, 8($s0) -/* 07F300 7F04A7D0 2C410064 */ sltiu $at, $v0, 0x64 -/* 07F304 7F04A7D4 10200007 */ beqz $at, .L7F04A7F4 -/* 07F308 7F04A7D8 00408825 */ move $s1, $v0 -/* 07F30C 7F04A7DC 00026880 */ sll $t5, $v0, 2 -/* 07F310 7F04A7E0 8DEFD120 */ lw $t7, %lo(monitorimages)($t7) -/* 07F314 7F04A7E4 01A26823 */ subu $t5, $t5, $v0 -/* 07F318 7F04A7E8 000D6880 */ sll $t5, $t5, 2 -/* 07F31C 7F04A7EC 10000001 */ b .L7F04A7F4 -/* 07F320 7F04A7F0 01AF8821 */ addu $s1, $t5, $t7 -.L7F04A7F4: -/* 07F324 7F04A7F4 122000A9 */ beqz $s1, .L7F04AA9C -/* 07F328 7F04A7F8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07F32C 7F04A7FC 44810000 */ mtc1 $at, $f0 -/* 07F330 7F04A800 C6120010 */ lwc1 $f18, 0x10($s0) -/* 07F334 7F04A804 C60A0024 */ lwc1 $f10, 0x24($s0) -/* 07F338 7F04A808 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07F33C 7F04A80C 46009582 */ mul.s $f22, $f18, $f0 -/* 07F340 7F04A810 460CA032 */ c.eq.s $f20, $f12 -/* 07F344 7F04A814 46005602 */ mul.s $f24, $f10, $f0 -/* 07F348 7F04A818 4600B386 */ mov.s $f14, $f22 -/* 07F34C 7F04A81C 45010015 */ bc1t .L7F04A874 -/* 07F350 7F04A820 4600C406 */ mov.s $f16, $f24 -/* 07F354 7F04A824 E7AE0054 */ swc1 $f14, 0x54($sp) -/* 07F358 7F04A828 0FC15FA8 */ jal cosf -/* 07F35C 7F04A82C E7B00050 */ swc1 $f16, 0x50($sp) -/* 07F360 7F04A830 3C018005 */ lui $at, %hi(D_80052CB0) -/* 07F364 7F04A834 C43A2CB0 */ lwc1 $f26, %lo(D_80052CB0)($at) -/* 07F368 7F04A838 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07F36C 7F04A83C 461A0502 */ mul.s $f20, $f0, $f26 -/* 07F370 7F04A840 0FC15FAB */ jal sinf -/* 07F374 7F04A844 00000000 */ nop -/* 07F378 7F04A848 4614B582 */ mul.s $f22, $f22, $f20 -/* 07F37C 7F04A84C C7AE0054 */ lwc1 $f14, 0x54($sp) -/* 07F380 7F04A850 C7B00050 */ lwc1 $f16, 0x50($sp) -/* 07F384 7F04A854 461A0082 */ mul.s $f2, $f0, $f26 -/* 07F388 7F04A858 00000000 */ nop -/* 07F38C 7F04A85C 4602C602 */ mul.s $f24, $f24, $f2 -/* 07F390 7F04A860 00000000 */ nop -/* 07F394 7F04A864 46027382 */ mul.s $f14, $f14, $f2 -/* 07F398 7F04A868 00000000 */ nop -/* 07F39C 7F04A86C 46148402 */ mul.s $f16, $f16, $f20 -/* 07F3A0 7F04A870 00000000 */ nop -.L7F04A874: -/* 07F3A4 7F04A874 922E0004 */ lbu $t6, 4($s1) -/* 07F3A8 7F04A878 3C014200 */ li $at, 0x42000000 # 32.000000 -/* 07F3AC 7F04A87C 44810000 */ mtc1 $at, $f0 -/* 07F3B0 7F04A880 448E4000 */ mtc1 $t6, $f8 -/* 07F3B4 7F04A884 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F3B8 7F04A888 05C10004 */ bgez $t6, .L7F04A89C -/* 07F3BC 7F04A88C 468041A0 */ cvt.s.w $f6, $f8 -/* 07F3C0 7F04A890 44819000 */ mtc1 $at, $f18 -/* 07F3C4 7F04A894 00000000 */ nop -/* 07F3C8 7F04A898 46123180 */ add.s $f6, $f6, $f18 -.L7F04A89C: -/* 07F3CC 7F04A89C C60A0038 */ lwc1 $f10, 0x38($s0) -/* 07F3D0 7F04A8A0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F3D4 7F04A8A4 46165100 */ add.s $f4, $f10, $f22 -/* 07F3D8 7F04A8A8 46043202 */ mul.s $f8, $f6, $f4 -/* 07F3DC 7F04A8AC 00000000 */ nop -/* 07F3E0 7F04A8B0 46004482 */ mul.s $f18, $f8, $f0 -/* 07F3E4 7F04A8B4 4600928D */ trunc.w.s $f10, $f18 -/* 07F3E8 7F04A8B8 44085000 */ mfc1 $t0, $f10 -/* 07F3EC 7F04A8BC 00000000 */ nop -/* 07F3F0 7F04A8C0 A6480008 */ sh $t0, 8($s2) -/* 07F3F4 7F04A8C4 92390005 */ lbu $t9, 5($s1) -/* 07F3F8 7F04A8C8 44993000 */ mtc1 $t9, $f6 -/* 07F3FC 7F04A8CC 07210004 */ bgez $t9, .L7F04A8E0 -/* 07F400 7F04A8D0 46803120 */ cvt.s.w $f4, $f6 -/* 07F404 7F04A8D4 44814000 */ mtc1 $at, $f8 -/* 07F408 7F04A8D8 00000000 */ nop -/* 07F40C 7F04A8DC 46082100 */ add.s $f4, $f4, $f8 -.L7F04A8E0: -/* 07F410 7F04A8E0 C612004C */ lwc1 $f18, 0x4c($s0) -/* 07F414 7F04A8E4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F418 7F04A8E8 46189280 */ add.s $f10, $f18, $f24 -/* 07F41C 7F04A8EC 460A2182 */ mul.s $f6, $f4, $f10 -/* 07F420 7F04A8F0 00000000 */ nop -/* 07F424 7F04A8F4 46003202 */ mul.s $f8, $f6, $f0 -/* 07F428 7F04A8F8 4600448D */ trunc.w.s $f18, $f8 -/* 07F42C 7F04A8FC 440C9000 */ mfc1 $t4, $f18 -/* 07F430 7F04A900 00000000 */ nop -/* 07F434 7F04A904 A64C000A */ sh $t4, 0xa($s2) -/* 07F438 7F04A908 922A0004 */ lbu $t2, 4($s1) -/* 07F43C 7F04A90C 448A2000 */ mtc1 $t2, $f4 -/* 07F440 7F04A910 05410004 */ bgez $t2, .L7F04A924 -/* 07F444 7F04A914 468022A0 */ cvt.s.w $f10, $f4 -/* 07F448 7F04A918 44813000 */ mtc1 $at, $f6 -/* 07F44C 7F04A91C 00000000 */ nop -/* 07F450 7F04A920 46065280 */ add.s $f10, $f10, $f6 -.L7F04A924: -/* 07F454 7F04A924 C6080038 */ lwc1 $f8, 0x38($s0) -/* 07F458 7F04A928 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F45C 7F04A92C 460E4481 */ sub.s $f18, $f8, $f14 -/* 07F460 7F04A930 46125102 */ mul.s $f4, $f10, $f18 -/* 07F464 7F04A934 00000000 */ nop -/* 07F468 7F04A938 46002182 */ mul.s $f6, $f4, $f0 -/* 07F46C 7F04A93C 4600320D */ trunc.w.s $f8, $f6 -/* 07F470 7F04A940 440D4000 */ mfc1 $t5, $f8 -/* 07F474 7F04A944 00000000 */ nop -/* 07F478 7F04A948 A64D0018 */ sh $t5, 0x18($s2) -/* 07F47C 7F04A94C 922F0005 */ lbu $t7, 5($s1) -/* 07F480 7F04A950 448F5000 */ mtc1 $t7, $f10 -/* 07F484 7F04A954 05E10004 */ bgez $t7, .L7F04A968 -/* 07F488 7F04A958 468054A0 */ cvt.s.w $f18, $f10 -/* 07F48C 7F04A95C 44812000 */ mtc1 $at, $f4 -/* 07F490 7F04A960 00000000 */ nop -/* 07F494 7F04A964 46049480 */ add.s $f18, $f18, $f4 -.L7F04A968: -/* 07F498 7F04A968 C606004C */ lwc1 $f6, 0x4c($s0) -/* 07F49C 7F04A96C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F4A0 7F04A970 46103200 */ add.s $f8, $f6, $f16 -/* 07F4A4 7F04A974 46089282 */ mul.s $f10, $f18, $f8 -/* 07F4A8 7F04A978 00000000 */ nop -/* 07F4AC 7F04A97C 46005102 */ mul.s $f4, $f10, $f0 -/* 07F4B0 7F04A980 4600218D */ trunc.w.s $f6, $f4 -/* 07F4B4 7F04A984 44183000 */ mfc1 $t8, $f6 -/* 07F4B8 7F04A988 00000000 */ nop -/* 07F4BC 7F04A98C A658001A */ sh $t8, 0x1a($s2) -/* 07F4C0 7F04A990 92280004 */ lbu $t0, 4($s1) -/* 07F4C4 7F04A994 44889000 */ mtc1 $t0, $f18 -/* 07F4C8 7F04A998 05010004 */ bgez $t0, .L7F04A9AC -/* 07F4CC 7F04A99C 46809220 */ cvt.s.w $f8, $f18 -/* 07F4D0 7F04A9A0 44815000 */ mtc1 $at, $f10 -/* 07F4D4 7F04A9A4 00000000 */ nop -/* 07F4D8 7F04A9A8 460A4200 */ add.s $f8, $f8, $f10 -.L7F04A9AC: -/* 07F4DC 7F04A9AC C6040038 */ lwc1 $f4, 0x38($s0) -/* 07F4E0 7F04A9B0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F4E4 7F04A9B4 46162181 */ sub.s $f6, $f4, $f22 -/* 07F4E8 7F04A9B8 46064482 */ mul.s $f18, $f8, $f6 -/* 07F4EC 7F04A9BC 00000000 */ nop -/* 07F4F0 7F04A9C0 46009282 */ mul.s $f10, $f18, $f0 -/* 07F4F4 7F04A9C4 4600510D */ trunc.w.s $f4, $f10 -/* 07F4F8 7F04A9C8 44092000 */ mfc1 $t1, $f4 -/* 07F4FC 7F04A9CC 00000000 */ nop -/* 07F500 7F04A9D0 A6490028 */ sh $t1, 0x28($s2) -/* 07F504 7F04A9D4 922C0005 */ lbu $t4, 5($s1) -/* 07F508 7F04A9D8 448C4000 */ mtc1 $t4, $f8 -/* 07F50C 7F04A9DC 05810004 */ bgez $t4, .L7F04A9F0 -/* 07F510 7F04A9E0 468041A0 */ cvt.s.w $f6, $f8 -/* 07F514 7F04A9E4 44819000 */ mtc1 $at, $f18 -/* 07F518 7F04A9E8 00000000 */ nop -/* 07F51C 7F04A9EC 46123180 */ add.s $f6, $f6, $f18 -.L7F04A9F0: -/* 07F520 7F04A9F0 C60A004C */ lwc1 $f10, 0x4c($s0) -/* 07F524 7F04A9F4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F528 7F04A9F8 46185101 */ sub.s $f4, $f10, $f24 -/* 07F52C 7F04A9FC 46043202 */ mul.s $f8, $f6, $f4 -/* 07F530 7F04AA00 00000000 */ nop -/* 07F534 7F04AA04 46004482 */ mul.s $f18, $f8, $f0 -/* 07F538 7F04AA08 4600928D */ trunc.w.s $f10, $f18 -/* 07F53C 7F04AA0C 440B5000 */ mfc1 $t3, $f10 -/* 07F540 7F04AA10 00000000 */ nop -/* 07F544 7F04AA14 A64B002A */ sh $t3, 0x2a($s2) -/* 07F548 7F04AA18 922D0004 */ lbu $t5, 4($s1) -/* 07F54C 7F04AA1C 448D3000 */ mtc1 $t5, $f6 -/* 07F550 7F04AA20 05A10004 */ bgez $t5, .L7F04AA34 -/* 07F554 7F04AA24 46803120 */ cvt.s.w $f4, $f6 -/* 07F558 7F04AA28 44814000 */ mtc1 $at, $f8 -/* 07F55C 7F04AA2C 00000000 */ nop -/* 07F560 7F04AA30 46082100 */ add.s $f4, $f4, $f8 -.L7F04AA34: -/* 07F564 7F04AA34 C6120038 */ lwc1 $f18, 0x38($s0) -/* 07F568 7F04AA38 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F56C 7F04AA3C 460E9280 */ add.s $f10, $f18, $f14 -/* 07F570 7F04AA40 460A2182 */ mul.s $f6, $f4, $f10 -/* 07F574 7F04AA44 00000000 */ nop -/* 07F578 7F04AA48 46003202 */ mul.s $f8, $f6, $f0 -/* 07F57C 7F04AA4C 4600448D */ trunc.w.s $f18, $f8 -/* 07F580 7F04AA50 440E9000 */ mfc1 $t6, $f18 -/* 07F584 7F04AA54 00000000 */ nop -/* 07F588 7F04AA58 A64E0038 */ sh $t6, 0x38($s2) -/* 07F58C 7F04AA5C 92380005 */ lbu $t8, 5($s1) -/* 07F590 7F04AA60 44982000 */ mtc1 $t8, $f4 -/* 07F594 7F04AA64 07010004 */ bgez $t8, .L7F04AA78 -/* 07F598 7F04AA68 468022A0 */ cvt.s.w $f10, $f4 -/* 07F59C 7F04AA6C 44813000 */ mtc1 $at, $f6 -/* 07F5A0 7F04AA70 00000000 */ nop -/* 07F5A4 7F04AA74 46065280 */ add.s $f10, $f10, $f6 -.L7F04AA78: -/* 07F5A8 7F04AA78 C608004C */ lwc1 $f8, 0x4c($s0) -/* 07F5AC 7F04AA7C 46104481 */ sub.s $f18, $f8, $f16 -/* 07F5B0 7F04AA80 46125102 */ mul.s $f4, $f10, $f18 -/* 07F5B4 7F04AA84 00000000 */ nop -/* 07F5B8 7F04AA88 46002182 */ mul.s $f6, $f4, $f0 -/* 07F5BC 7F04AA8C 4600320D */ trunc.w.s $f8, $f6 -/* 07F5C0 7F04AA90 44194000 */ mfc1 $t9, $f8 -/* 07F5C4 7F04AA94 00000000 */ nop -/* 07F5C8 7F04AA98 A659003A */ sh $t9, 0x3a($s2) -.L7F04AA9C: -/* 07F5CC 7F04AA9C 92020060 */ lbu $v0, 0x60($s0) -/* 07F5D0 7F04AAA0 240C0002 */ li $t4, 2 -/* 07F5D4 7F04AAA4 3C0DB700 */ lui $t5, 0xb700 -/* 07F5D8 7F04AAA8 A242003C */ sb $v0, 0x3c($s2) -/* 07F5DC 7F04AAAC A242002C */ sb $v0, 0x2c($s2) -/* 07F5E0 7F04AAB0 A242001C */ sb $v0, 0x1c($s2) -/* 07F5E4 7F04AAB4 A242000C */ sb $v0, 0xc($s2) -/* 07F5E8 7F04AAB8 92020063 */ lbu $v0, 0x63($s0) -/* 07F5EC 7F04AABC 240F2000 */ li $t7, 8192 -/* 07F5F0 7F04AAC0 27A400BC */ addiu $a0, $sp, 0xbc -/* 07F5F4 7F04AAC4 A242003D */ sb $v0, 0x3d($s2) -/* 07F5F8 7F04AAC8 A242002D */ sb $v0, 0x2d($s2) -/* 07F5FC 7F04AACC A242001D */ sb $v0, 0x1d($s2) -/* 07F600 7F04AAD0 A242000D */ sb $v0, 0xd($s2) -/* 07F604 7F04AAD4 92030066 */ lbu $v1, 0x66($s0) -/* 07F608 7F04AAD8 A243003E */ sb $v1, 0x3e($s2) -/* 07F60C 7F04AADC A243002E */ sb $v1, 0x2e($s2) -/* 07F610 7F04AAE0 A243001E */ sb $v1, 0x1e($s2) -/* 07F614 7F04AAE4 A243000E */ sb $v1, 0xe($s2) -/* 07F618 7F04AAE8 92020069 */ lbu $v0, 0x69($s0) -/* 07F61C 7F04AAEC A242003F */ sb $v0, 0x3f($s2) -/* 07F620 7F04AAF0 A242002F */ sb $v0, 0x2f($s2) -/* 07F624 7F04AAF4 A242001F */ sb $v0, 0x1f($s2) -/* 07F628 7F04AAF8 A242000F */ sb $v0, 0xf($s2) -/* 07F62C 7F04AAFC 92090069 */ lbu $t1, 0x69($s0) -/* 07F630 7F04AB00 292100FF */ slti $at, $t1, 0xff -/* 07F634 7F04AB04 50200003 */ beql $at, $zero, .L7F04AB14 -/* 07F638 7F04AB08 8FAA00BC */ lw $t2, 0xbc($sp) -/* 07F63C 7F04AB0C AFAC00C4 */ sw $t4, 0xc4($sp) -/* 07F640 7F04AB10 8FAA00BC */ lw $t2, 0xbc($sp) -.L7F04AB14: -/* 07F644 7F04AB14 240E0002 */ li $t6, 2 -/* 07F648 7F04AB18 02202825 */ move $a1, $s1 -/* 07F64C 7F04AB1C 254B0008 */ addiu $t3, $t2, 8 -/* 07F650 7F04AB20 AFAB00BC */ sw $t3, 0xbc($sp) -/* 07F654 7F04AB24 AD4F0004 */ sw $t7, 4($t2) -/* 07F658 7F04AB28 AD4D0000 */ sw $t5, ($t2) -/* 07F65C 7F04AB2C AFAE0010 */ sw $t6, 0x10($sp) -/* 07F660 7F04AB30 8FA700C0 */ lw $a3, 0xc0($sp) -/* 07F664 7F04AB34 0FC1DB5A */ jal likely_generate_DL_for_image_declaration -/* 07F668 7F04AB38 8FA600C4 */ lw $a2, 0xc4($sp) -/* 07F66C 7F04AB3C 8FB000BC */ lw $s0, 0xbc($sp) -/* 07F670 7F04AB40 3C190102 */ lui $t9, (0x01020040 >> 16) # lui $t9, 0x102 -/* 07F674 7F04AB44 37390040 */ ori $t9, (0x01020040 & 0xFFFF) # ori $t9, $t9, 0x40 -/* 07F678 7F04AB48 26080008 */ addiu $t0, $s0, 8 -/* 07F67C 7F04AB4C AFA800BC */ sw $t0, 0xbc($sp) -/* 07F680 7F04AB50 AE190000 */ sw $t9, ($s0) -/* 07F684 7F04AB54 8FA900B0 */ lw $t1, 0xb0($sp) -/* 07F688 7F04AB58 0C003A2C */ jal osVirtualToPhysical -/* 07F68C 7F04AB5C 8D24000C */ lw $a0, 0xc($t1) -/* 07F690 7F04AB60 AE020004 */ sw $v0, 4($s0) -/* 07F694 7F04AB64 8FB100BC */ lw $s1, 0xbc($sp) -/* 07F698 7F04AB68 3C0BBC00 */ lui $t3, (0xBC001006 >> 16) # lui $t3, 0xbc00 -/* 07F69C 7F04AB6C 356B1006 */ ori $t3, (0xBC001006 & 0xFFFF) # ori $t3, $t3, 0x1006 -/* 07F6A0 7F04AB70 262A0008 */ addiu $t2, $s1, 8 -/* 07F6A4 7F04AB74 AFAA00BC */ sw $t2, 0xbc($sp) -/* 07F6A8 7F04AB78 02402025 */ move $a0, $s2 -/* 07F6AC 7F04AB7C 0C003A2C */ jal osVirtualToPhysical -/* 07F6B0 7F04AB80 AE2B0000 */ sw $t3, ($s1) -/* 07F6B4 7F04AB84 AE220004 */ sw $v0, 4($s1) -/* 07F6B8 7F04AB88 8FAD00BC */ lw $t5, 0xbc($sp) -/* 07F6BC 7F04AB8C 3C0E0430 */ lui $t6, (0x04300040 >> 16) # lui $t6, 0x430 -/* 07F6C0 7F04AB90 35CE0040 */ ori $t6, (0x04300040 & 0xFFFF) # ori $t6, $t6, 0x40 -/* 07F6C4 7F04AB94 25AF0008 */ addiu $t7, $t5, 8 -/* 07F6C8 7F04AB98 AFAF00BC */ sw $t7, 0xbc($sp) -/* 07F6CC 7F04AB9C 3C180400 */ lui $t8, 0x400 -/* 07F6D0 7F04ABA0 ADB80004 */ sw $t8, 4($t5) -/* 07F6D4 7F04ABA4 ADAE0000 */ sw $t6, ($t5) -/* 07F6D8 7F04ABA8 8FA800BC */ lw $t0, 0xbc($sp) -/* 07F6DC 7F04ABAC 3C09B100 */ lui $t1, (0xB1000032 >> 16) # lui $t1, 0xb100 -/* 07F6E0 7F04ABB0 35290032 */ ori $t1, (0xB1000032 & 0xFFFF) # ori $t1, $t1, 0x32 -/* 07F6E4 7F04ABB4 25190008 */ addiu $t9, $t0, 8 -/* 07F6E8 7F04ABB8 AFB900BC */ sw $t9, 0xbc($sp) -/* 07F6EC 7F04ABBC 240C2010 */ li $t4, 8208 -/* 07F6F0 7F04ABC0 AD0C0004 */ sw $t4, 4($t0) -/* 07F6F4 7F04ABC4 AD090000 */ sw $t1, ($t0) -/* 07F6F8 7F04ABC8 8FAA00BC */ lw $t2, 0xbc($sp) -/* 07F6FC 7F04ABCC 3C0DB800 */ lui $t5, 0xb800 -/* 07F700 7F04ABD0 3C0F0601 */ lui $t7, 0x601 -/* 07F704 7F04ABD4 254B0008 */ addiu $t3, $t2, 8 -/* 07F708 7F04ABD8 AFAB00BC */ sw $t3, 0xbc($sp) -/* 07F70C 7F04ABDC AD400004 */ sw $zero, 4($t2) -/* 07F710 7F04ABE0 AD4D0000 */ sw $t5, ($t2) -/* 07F714 7F04ABE4 8FA600A8 */ lw $a2, 0xa8($sp) -/* 07F718 7F04ABE8 ACCF0000 */ sw $t7, ($a2) -/* 07F71C 7F04ABEC 8FAE00BC */ lw $t6, 0xbc($sp) -/* 07F720 7F04ABF0 ACCE0004 */ sw $t6, 4($a2) -.L7F04ABF4: -/* 07F724 7F04ABF4 8FBF004C */ lw $ra, 0x4c($sp) -.L7F04ABF8: -/* 07F728 7F04ABF8 8FA200BC */ lw $v0, 0xbc($sp) -/* 07F72C 7F04ABFC D7B40020 */ ldc1 $f20, 0x20($sp) -/* 07F730 7F04AC00 D7B60028 */ ldc1 $f22, 0x28($sp) -/* 07F734 7F04AC04 D7B80030 */ ldc1 $f24, 0x30($sp) -/* 07F738 7F04AC08 D7BA0038 */ ldc1 $f26, 0x38($sp) -/* 07F73C 7F04AC0C 8FB00040 */ lw $s0, 0x40($sp) -/* 07F740 7F04AC10 8FB10044 */ lw $s1, 0x44($sp) -/* 07F744 7F04AC14 8FB20048 */ lw $s2, 0x48($sp) -/* 07F748 7F04AC18 03E00008 */ jr $ra -/* 07F74C 7F04AC1C 27BD00B0 */ addiu $sp, $sp, 0xb0 -) -#endif -#ifdef VERSION_JP -GLOBAL_ASM( -.late_rodata -glabel D_80052C68 -.word 0x40c90fdb /*6.2831855*/ -/*D:80052C6C*/ -glabel jpt_80052C6C -.word command00_reset_scroll_shift -.word command01_horizontal_scroll -.word command02_vertical_scroll -.word command03_horizontal_pos -.word command04_vertical_pos -.word command05_zoomx -.word command06_zoomy -.word command07_use_image_from_global_monitor_table -.word command08_halt_processing_for_time -.word command09_jump -.word command0A_jump_conditional -.word command0B_restart -.word command0C_break -.word command0D_colour_transition -.word command0E_set_rotation -.word command0F_rotate - -glabel D_80052CAC -.word 0x3fc90fdb /*1.5707964*/ -glabel D_80052CB0 -.word 0x3fb50481 /*1.4141999*/ -glabel D_80052CB4 -.word 0x3f59999a /*0.85000002*/ -glabel D_80052CB8 -.word 0x3e19999a /*0.15000001*/ -glabel D_80052CBC -.word 0x3e19999a /*0.15000001*/ -glabel D_80052CC0 -.word 0x3f666666 /*0.89999998*/ -.text -glabel process_monitor_animation_microcode -/* 07EA78 7F049F48 27BDFF50 */ addiu $sp, $sp, -0xb0 -/* 07EA7C 7F049F4C AFB10044 */ sw $s1, 0x44($sp) -/* 07EA80 7F049F50 AFB00040 */ sw $s0, 0x40($sp) -/* 07EA84 7F049F54 00C08025 */ move $s0, $a2 -/* 07EA88 7F049F58 00A08825 */ move $s1, $a1 -/* 07EA8C 7F049F5C AFBF004C */ sw $ra, 0x4c($sp) -/* 07EA90 7F049F60 AFB20048 */ sw $s2, 0x48($sp) -/* 07EA94 7F049F64 F7BA0038 */ sdc1 $f26, 0x38($sp) -/* 07EA98 7F049F68 F7B80030 */ sdc1 $f24, 0x30($sp) -/* 07EA9C 7F049F6C F7B60028 */ sdc1 $f22, 0x28($sp) -/* 07EAA0 7F049F70 F7B40020 */ sdc1 $f20, 0x20($sp) -/* 07EAA4 7F049F74 AFA400B0 */ sw $a0, 0xb0($sp) -/* 07EAA8 7F049F78 10A0031E */ beqz $a1, .L7F04ABF4 -/* 07EAAC 7F049F7C AFA700BC */ sw $a3, 0xbc($sp) -/* 07EAB0 7F049F80 94AE0000 */ lhu $t6, ($a1) -/* 07EAB4 7F049F84 24010018 */ li $at, 24 -/* 07EAB8 7F049F88 31CF00FF */ andi $t7, $t6, 0xff -/* 07EABC 7F049F8C 55E1031A */ bnel $t7, $at, .L7F04ABF8 -/* 07EAC0 7F049F90 8FBF004C */ lw $ra, 0x4c($sp) -/* 07EAC4 7F049F94 0FC2F5B1 */ jal sub_GAME_7F0BD6C4 -/* 07EAC8 7F049F98 24040004 */ li $a0, 4 -/* 07EACC 7F049F9C 8FB800BC */ lw $t8, 0xbc($sp) -/* 07EAD0 7F049FA0 00409025 */ move $s2, $v0 -/* 07EAD4 7F049FA4 8FA400B0 */ lw $a0, 0xb0($sp) -/* 07EAD8 7F049FA8 27190008 */ addiu $t9, $t8, 8 -/* 07EADC 7F049FAC AFB900BC */ sw $t9, 0xbc($sp) -/* 07EAE0 7F049FB0 AFB800A8 */ sw $t8, 0xa8($sp) -/* 07EAE4 7F049FB4 8E280004 */ lw $t0, 4($s1) -/* 07EAE8 7F049FB8 02202825 */ move $a1, $s1 -/* 07EAEC 7F049FBC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 07EAF0 7F049FC0 AFA800A4 */ sw $t0, 0xa4($sp) -/* 07EAF4 7F049FC4 3C018005 */ lui $at, %hi(D_80052C68) -/* 07EAF8 7F049FC8 C43A2C68 */ lwc1 $f26, %lo(D_80052C68)($at) -/* 07EAFC 7F049FCC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07EB00 7F049FD0 4481C000 */ mtc1 $at, $f24 -/* 07EB04 7F049FD4 3C013A80 */ li $at, 0x3A800000 # 0.000977 -/* 07EB08 7F049FD8 4481B000 */ mtc1 $at, $f22 -/* 07EB0C 7F049FDC 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EB10 7F049FE0 44811000 */ mtc1 $at, $f2 -/* 07EB14 7F049FE4 4480A000 */ mtc1 $zero, $f20 -/* 07EB18 7F049FE8 AFA200A0 */ sw $v0, 0xa0($sp) -/* 07EB1C 7F049FEC 00008825 */ move $s1, $zero -/* 07EB20 7F049FF0 96020004 */ lhu $v0, 4($s0) -.L7F049FF4: -/* 07EB24 7F049FF4 8E090000 */ lw $t1, ($s0) -/* 07EB28 7F049FF8 00025080 */ sll $t2, $v0, 2 -/* 07EB2C 7F049FFC 012A1821 */ addu $v1, $t1, $t2 -/* 07EB30 7F04A000 8C6B0000 */ lw $t3, ($v1) -/* 07EB34 7F04A004 2D610010 */ sltiu $at, $t3, 0x10 -/* 07EB38 7F04A008 10200117 */ beqz $at, .L7F04A468 -/* 07EB3C 7F04A00C 000B5880 */ sll $t3, $t3, 2 -/* 07EB40 7F04A010 3C018005 */ lui $at, %hi(jpt_80052C6C) -/* 07EB44 7F04A014 002B0821 */ addu $at, $at, $t3 -/* 07EB48 7F04A018 8C2B2C6C */ lw $t3, %lo(jpt_80052C6C)($at) -/* 07EB4C 7F04A01C 01600008 */ jr $t3 -/* 07EB50 7F04A020 00000000 */ nop -command00_reset_scroll_shift: -/* 07EB54 7F04A024 244C0001 */ addiu $t4, $v0, 1 -/* 07EB58 7F04A028 E6140040 */ swc1 $f20, 0x40($s0) -/* 07EB5C 7F04A02C E6140054 */ swc1 $f20, 0x54($s0) -/* 07EB60 7F04A030 1000010D */ b .L7F04A468 -/* 07EB64 7F04A034 A60C0004 */ sh $t4, 4($s0) -command01_horizontal_scroll: -/* 07EB68 7F04A038 E614003C */ swc1 $f20, 0x3c($s0) -/* 07EB6C 7F04A03C 8C6D0008 */ lw $t5, 8($v1) -/* 07EB70 7F04A040 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EB74 7F04A044 448D2000 */ mtc1 $t5, $f4 -/* 07EB78 7F04A048 05A10004 */ bgez $t5, .L7F04A05C -/* 07EB7C 7F04A04C 468021A0 */ cvt.s.w $f6, $f4 -/* 07EB80 7F04A050 44814000 */ mtc1 $at, $f8 -/* 07EB84 7F04A054 00000000 */ nop -/* 07EB88 7F04A058 46083180 */ add.s $f6, $f6, $f8 -.L7F04A05C: -/* 07EB8C 7F04A05C 4606C283 */ div.s $f10, $f24, $f6 -/* 07EB90 7F04A060 C6000038 */ lwc1 $f0, 0x38($s0) -/* 07EB94 7F04A064 244F0003 */ addiu $t7, $v0, 3 -/* 07EB98 7F04A068 E6000044 */ swc1 $f0, 0x44($s0) -/* 07EB9C 7F04A06C E60A0040 */ swc1 $f10, 0x40($s0) -/* 07EBA0 7F04A070 8C6E0004 */ lw $t6, 4($v1) -/* 07EBA4 7F04A074 A60F0004 */ sh $t7, 4($s0) -/* 07EBA8 7F04A078 448E9000 */ mtc1 $t6, $f18 -/* 07EBAC 7F04A07C 00000000 */ nop -/* 07EBB0 7F04A080 46809120 */ cvt.s.w $f4, $f18 -/* 07EBB4 7F04A084 46162202 */ mul.s $f8, $f4, $f22 -/* 07EBB8 7F04A088 46080180 */ add.s $f6, $f0, $f8 -/* 07EBBC 7F04A08C 100000F6 */ b .L7F04A468 -/* 07EBC0 7F04A090 E6060048 */ swc1 $f6, 0x48($s0) -command02_vertical_scroll: -/* 07EBC4 7F04A094 E6140050 */ swc1 $f20, 0x50($s0) -/* 07EBC8 7F04A098 8C780008 */ lw $t8, 8($v1) -/* 07EBCC 7F04A09C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EBD0 7F04A0A0 44985000 */ mtc1 $t8, $f10 -/* 07EBD4 7F04A0A4 07010004 */ bgez $t8, .L7F04A0B8 -/* 07EBD8 7F04A0A8 468054A0 */ cvt.s.w $f18, $f10 -/* 07EBDC 7F04A0AC 44812000 */ mtc1 $at, $f4 -/* 07EBE0 7F04A0B0 00000000 */ nop -/* 07EBE4 7F04A0B4 46049480 */ add.s $f18, $f18, $f4 -.L7F04A0B8: -/* 07EBE8 7F04A0B8 4612C203 */ div.s $f8, $f24, $f18 -/* 07EBEC 7F04A0BC C600004C */ lwc1 $f0, 0x4c($s0) -/* 07EBF0 7F04A0C0 24480003 */ addiu $t0, $v0, 3 -/* 07EBF4 7F04A0C4 E6000058 */ swc1 $f0, 0x58($s0) -/* 07EBF8 7F04A0C8 E6080054 */ swc1 $f8, 0x54($s0) -/* 07EBFC 7F04A0CC 8C790004 */ lw $t9, 4($v1) -/* 07EC00 7F04A0D0 A6080004 */ sh $t0, 4($s0) -/* 07EC04 7F04A0D4 44993000 */ mtc1 $t9, $f6 -/* 07EC08 7F04A0D8 00000000 */ nop -/* 07EC0C 7F04A0DC 468032A0 */ cvt.s.w $f10, $f6 -/* 07EC10 7F04A0E0 46165102 */ mul.s $f4, $f10, $f22 -/* 07EC14 7F04A0E4 46040480 */ add.s $f18, $f0, $f4 -/* 07EC18 7F04A0E8 100000DF */ b .L7F04A468 -/* 07EC1C 7F04A0EC E612005C */ swc1 $f18, 0x5c($s0) -command03_horizontal_pos: -/* 07EC20 7F04A0F0 E614003C */ swc1 $f20, 0x3c($s0) -/* 07EC24 7F04A0F4 8C690008 */ lw $t1, 8($v1) -/* 07EC28 7F04A0F8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EC2C 7F04A0FC 44894000 */ mtc1 $t1, $f8 -/* 07EC30 7F04A100 05210004 */ bgez $t1, .L7F04A114 -/* 07EC34 7F04A104 468041A0 */ cvt.s.w $f6, $f8 -/* 07EC38 7F04A108 44815000 */ mtc1 $at, $f10 -/* 07EC3C 7F04A10C 00000000 */ nop -/* 07EC40 7F04A110 460A3180 */ add.s $f6, $f6, $f10 -.L7F04A114: -/* 07EC44 7F04A114 4606C103 */ div.s $f4, $f24, $f6 -/* 07EC48 7F04A118 C6120038 */ lwc1 $f18, 0x38($s0) -/* 07EC4C 7F04A11C 244B0003 */ addiu $t3, $v0, 3 -/* 07EC50 7F04A120 E6120044 */ swc1 $f18, 0x44($s0) -/* 07EC54 7F04A124 E6040040 */ swc1 $f4, 0x40($s0) -/* 07EC58 7F04A128 8C6A0004 */ lw $t2, 4($v1) -/* 07EC5C 7F04A12C A60B0004 */ sh $t3, 4($s0) -/* 07EC60 7F04A130 448A4000 */ mtc1 $t2, $f8 -/* 07EC64 7F04A134 00000000 */ nop -/* 07EC68 7F04A138 468042A0 */ cvt.s.w $f10, $f8 -/* 07EC6C 7F04A13C 46165182 */ mul.s $f6, $f10, $f22 -/* 07EC70 7F04A140 100000C9 */ b .L7F04A468 -/* 07EC74 7F04A144 E6060048 */ swc1 $f6, 0x48($s0) -command04_vertical_pos: -/* 07EC78 7F04A148 E6140050 */ swc1 $f20, 0x50($s0) -/* 07EC7C 7F04A14C 8C6C0008 */ lw $t4, 8($v1) -/* 07EC80 7F04A150 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EC84 7F04A154 448C2000 */ mtc1 $t4, $f4 -/* 07EC88 7F04A158 05810004 */ bgez $t4, .L7F04A16C -/* 07EC8C 7F04A15C 468024A0 */ cvt.s.w $f18, $f4 -/* 07EC90 7F04A160 44814000 */ mtc1 $at, $f8 -/* 07EC94 7F04A164 00000000 */ nop -/* 07EC98 7F04A168 46089480 */ add.s $f18, $f18, $f8 -.L7F04A16C: -/* 07EC9C 7F04A16C 4612C283 */ div.s $f10, $f24, $f18 -/* 07ECA0 7F04A170 C606004C */ lwc1 $f6, 0x4c($s0) -/* 07ECA4 7F04A174 244E0003 */ addiu $t6, $v0, 3 -/* 07ECA8 7F04A178 E6060058 */ swc1 $f6, 0x58($s0) -/* 07ECAC 7F04A17C E60A0054 */ swc1 $f10, 0x54($s0) -/* 07ECB0 7F04A180 8C6D0004 */ lw $t5, 4($v1) -/* 07ECB4 7F04A184 A60E0004 */ sh $t6, 4($s0) -/* 07ECB8 7F04A188 448D2000 */ mtc1 $t5, $f4 -/* 07ECBC 7F04A18C 00000000 */ nop -/* 07ECC0 7F04A190 46802220 */ cvt.s.w $f8, $f4 -/* 07ECC4 7F04A194 46164482 */ mul.s $f18, $f8, $f22 -/* 07ECC8 7F04A198 100000B3 */ b .L7F04A468 -/* 07ECCC 7F04A19C E612005C */ swc1 $f18, 0x5c($s0) -command05_zoomx: -/* 07ECD0 7F04A1A0 E6140014 */ swc1 $f20, 0x14($s0) -/* 07ECD4 7F04A1A4 8C6F0008 */ lw $t7, 8($v1) -/* 07ECD8 7F04A1A8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07ECDC 7F04A1AC 448F5000 */ mtc1 $t7, $f10 -/* 07ECE0 7F04A1B0 05E10004 */ bgez $t7, .L7F04A1C4 -/* 07ECE4 7F04A1B4 468051A0 */ cvt.s.w $f6, $f10 -/* 07ECE8 7F04A1B8 44812000 */ mtc1 $at, $f4 -/* 07ECEC 7F04A1BC 00000000 */ nop -/* 07ECF0 7F04A1C0 46043180 */ add.s $f6, $f6, $f4 -.L7F04A1C4: -/* 07ECF4 7F04A1C4 4606C203 */ div.s $f8, $f24, $f6 -/* 07ECF8 7F04A1C8 C6120010 */ lwc1 $f18, 0x10($s0) -/* 07ECFC 7F04A1CC 24590003 */ addiu $t9, $v0, 3 -/* 07ED00 7F04A1D0 E612001C */ swc1 $f18, 0x1c($s0) -/* 07ED04 7F04A1D4 E6080018 */ swc1 $f8, 0x18($s0) -/* 07ED08 7F04A1D8 8C780004 */ lw $t8, 4($v1) -/* 07ED0C 7F04A1DC A6190004 */ sh $t9, 4($s0) -/* 07ED10 7F04A1E0 44985000 */ mtc1 $t8, $f10 -/* 07ED14 7F04A1E4 00000000 */ nop -/* 07ED18 7F04A1E8 46805120 */ cvt.s.w $f4, $f10 -/* 07ED1C 7F04A1EC 46162182 */ mul.s $f6, $f4, $f22 -/* 07ED20 7F04A1F0 1000009D */ b .L7F04A468 -/* 07ED24 7F04A1F4 E6060020 */ swc1 $f6, 0x20($s0) -command06_zoomy: -/* 07ED28 7F04A1F8 E6140028 */ swc1 $f20, 0x28($s0) -/* 07ED2C 7F04A1FC 8C680008 */ lw $t0, 8($v1) -/* 07ED30 7F04A200 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07ED34 7F04A204 44884000 */ mtc1 $t0, $f8 -/* 07ED38 7F04A208 05010004 */ bgez $t0, .L7F04A21C -/* 07ED3C 7F04A20C 468044A0 */ cvt.s.w $f18, $f8 -/* 07ED40 7F04A210 44815000 */ mtc1 $at, $f10 -/* 07ED44 7F04A214 00000000 */ nop -/* 07ED48 7F04A218 460A9480 */ add.s $f18, $f18, $f10 -.L7F04A21C: -/* 07ED4C 7F04A21C 4612C103 */ div.s $f4, $f24, $f18 -/* 07ED50 7F04A220 C6060024 */ lwc1 $f6, 0x24($s0) -/* 07ED54 7F04A224 244A0003 */ addiu $t2, $v0, 3 -/* 07ED58 7F04A228 E6060030 */ swc1 $f6, 0x30($s0) -/* 07ED5C 7F04A22C E604002C */ swc1 $f4, 0x2c($s0) -/* 07ED60 7F04A230 8C690004 */ lw $t1, 4($v1) -/* 07ED64 7F04A234 A60A0004 */ sh $t2, 4($s0) -/* 07ED68 7F04A238 44894000 */ mtc1 $t1, $f8 -/* 07ED6C 7F04A23C 00000000 */ nop -/* 07ED70 7F04A240 468042A0 */ cvt.s.w $f10, $f8 -/* 07ED74 7F04A244 46165482 */ mul.s $f18, $f10, $f22 -/* 07ED78 7F04A248 10000087 */ b .L7F04A468 -/* 07ED7C 7F04A24C E6120034 */ swc1 $f18, 0x34($s0) -command07_use_image_from_global_monitor_table: -/* 07ED80 7F04A250 02002025 */ move $a0, $s0 -/* 07ED84 7F04A254 0FC127D0 */ jal save_img_index_to_obj_ani_slot -/* 07ED88 7F04A258 8C650004 */ lw $a1, 4($v1) -/* 07ED8C 7F04A25C 960B0004 */ lhu $t3, 4($s0) -/* 07ED90 7F04A260 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07ED94 7F04A264 44811000 */ mtc1 $at, $f2 -/* 07ED98 7F04A268 256C0002 */ addiu $t4, $t3, 2 -/* 07ED9C 7F04A26C 1000007E */ b .L7F04A468 -/* 07EDA0 7F04A270 A60C0004 */ sh $t4, 4($s0) -command08_halt_processing_for_time: -/* 07EDA4 7F04A274 86020006 */ lh $v0, 6($s0) -/* 07EDA8 7F04A278 3C0D8005 */ lui $t5, %hi(clock_timer) -/* 07EDAC 7F04A27C 0442000E */ bltzl $v0, .L7F04A2B8 -/* 07EDB0 7F04A280 8C680004 */ lw $t0, 4($v1) -/* 07EDB4 7F04A284 8DAD8374 */ lw $t5, %lo(clock_timer)($t5) -/* 07EDB8 7F04A288 004D7023 */ subu $t6, $v0, $t5 -/* 07EDBC 7F04A28C A60E0006 */ sh $t6, 6($s0) -/* 07EDC0 7F04A290 860F0006 */ lh $t7, 6($s0) -/* 07EDC4 7F04A294 05E20004 */ bltzl $t7, .L7F04A2A8 -/* 07EDC8 7F04A298 96180004 */ lhu $t8, 4($s0) -/* 07EDCC 7F04A29C 10000072 */ b .L7F04A468 -/* 07EDD0 7F04A2A0 24110001 */ li $s1, 1 -/* 07EDD4 7F04A2A4 96180004 */ lhu $t8, 4($s0) -.L7F04A2A8: -/* 07EDD8 7F04A2A8 27190002 */ addiu $t9, $t8, 2 -/* 07EDDC 7F04A2AC 1000006E */ b .L7F04A468 -/* 07EDE0 7F04A2B0 A6190004 */ sh $t9, 4($s0) -/* 07EDE4 7F04A2B4 8C680004 */ lw $t0, 4($v1) -.L7F04A2B8: -/* 07EDE8 7F04A2B8 24110001 */ li $s1, 1 -/* 07EDEC 7F04A2BC 1000006A */ b .L7F04A468 -/* 07EDF0 7F04A2C0 A6080006 */ sh $t0, 6($s0) -command09_jump: -/* 07EDF4 7F04A2C4 02002025 */ move $a0, $s0 -/* 07EDF8 7F04A2C8 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 07EDFC 7F04A2CC 8C650004 */ lw $a1, 4($v1) -/* 07EE00 7F04A2D0 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EE04 7F04A2D4 44811000 */ mtc1 $at, $f2 -/* 07EE08 7F04A2D8 10000063 */ b .L7F04A468 -/* 07EE0C 7F04A2DC 00000000 */ nop -command0A_jump_conditional: -/* 07EE10 7F04A2E0 0C002914 */ jal get_random_value -/* 07EE14 7F04A2E4 AFA30094 */ sw $v1, 0x94($sp) -/* 07EE18 7F04A2E8 8FA30094 */ lw $v1, 0x94($sp) -/* 07EE1C 7F04A2EC 00024C02 */ srl $t1, $v0, 0x10 -/* 07EE20 7F04A2F0 02002025 */ move $a0, $s0 -/* 07EE24 7F04A2F4 8C6A0008 */ lw $t2, 8($v1) -/* 07EE28 7F04A2F8 012A082B */ sltu $at, $t1, $t2 -/* 07EE2C 7F04A2FC 50200008 */ beql $at, $zero, .L7F04A320 -/* 07EE30 7F04A300 960B0004 */ lhu $t3, 4($s0) -/* 07EE34 7F04A304 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 07EE38 7F04A308 8C650004 */ lw $a1, 4($v1) -/* 07EE3C 7F04A30C 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EE40 7F04A310 44811000 */ mtc1 $at, $f2 -/* 07EE44 7F04A314 10000054 */ b .L7F04A468 -/* 07EE48 7F04A318 00000000 */ nop -/* 07EE4C 7F04A31C 960B0004 */ lhu $t3, 4($s0) -.L7F04A320: -/* 07EE50 7F04A320 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 07EE54 7F04A324 44811000 */ mtc1 $at, $f2 -/* 07EE58 7F04A328 256C0003 */ addiu $t4, $t3, 3 -/* 07EE5C 7F04A32C A60C0004 */ sh $t4, 4($s0) -/* 07EE60 7F04A330 1000004D */ b .L7F04A468 -/* 07EE64 7F04A334 00000000 */ nop -command0B_restart: -/* 07EE68 7F04A338 1000004B */ b .L7F04A468 -/* 07EE6C 7F04A33C A6000004 */ sh $zero, 4($s0) -command0C_break: -/* 07EE70 7F04A340 10000049 */ b .L7F04A468 -/* 07EE74 7F04A344 24110001 */ li $s1, 1 -command0D_colour_transition: -/* 07EE78 7F04A348 E614006C */ swc1 $f20, 0x6c($s0) -/* 07EE7C 7F04A34C 8C6D0008 */ lw $t5, 8($v1) -/* 07EE80 7F04A350 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07EE84 7F04A354 448D2000 */ mtc1 $t5, $f4 -/* 07EE88 7F04A358 05A10004 */ bgez $t5, .L7F04A36C -/* 07EE8C 7F04A35C 468021A0 */ cvt.s.w $f6, $f4 -/* 07EE90 7F04A360 44814000 */ mtc1 $at, $f8 -/* 07EE94 7F04A364 00000000 */ nop -/* 07EE98 7F04A368 46083180 */ add.s $f6, $f6, $f8 -.L7F04A36C: -/* 07EE9C 7F04A36C 4606C283 */ div.s $f10, $f24, $f6 -/* 07EEA0 7F04A370 920E0060 */ lbu $t6, 0x60($s0) -/* 07EEA4 7F04A374 92080063 */ lbu $t0, 0x63($s0) -/* 07EEA8 7F04A378 920C0066 */ lbu $t4, 0x66($s0) -/* 07EEAC 7F04A37C A20E0061 */ sb $t6, 0x61($s0) -/* 07EEB0 7F04A380 92180069 */ lbu $t8, 0x69($s0) -/* 07EEB4 7F04A384 E60A0070 */ swc1 $f10, 0x70($s0) -/* 07EEB8 7F04A388 8C6F0004 */ lw $t7, 4($v1) -/* 07EEBC 7F04A38C A2080064 */ sb $t0, 0x64($s0) -/* 07EEC0 7F04A390 000FCE02 */ srl $t9, $t7, 0x18 -/* 07EEC4 7F04A394 A2190062 */ sb $t9, 0x62($s0) -/* 07EEC8 7F04A398 8C690004 */ lw $t1, 4($v1) -/* 07EECC 7F04A39C A20C0067 */ sb $t4, 0x67($s0) -/* 07EED0 7F04A3A0 00095C02 */ srl $t3, $t1, 0x10 -/* 07EED4 7F04A3A4 A20B0065 */ sb $t3, 0x65($s0) -/* 07EED8 7F04A3A8 8C6D0004 */ lw $t5, 4($v1) -/* 07EEDC 7F04A3AC A218006A */ sb $t8, 0x6a($s0) -/* 07EEE0 7F04A3B0 24490003 */ addiu $t1, $v0, 3 -/* 07EEE4 7F04A3B4 000D7A02 */ srl $t7, $t5, 8 -/* 07EEE8 7F04A3B8 A20F0068 */ sb $t7, 0x68($s0) -/* 07EEEC 7F04A3BC 8C680004 */ lw $t0, 4($v1) -/* 07EEF0 7F04A3C0 A6090004 */ sh $t1, 4($s0) -/* 07EEF4 7F04A3C4 10000028 */ b .L7F04A468 -/* 07EEF8 7F04A3C8 A208006B */ sb $t0, 0x6b($s0) -command0E_set_rotation: -/* 07EEFC 7F04A3CC 8C6A0004 */ lw $t2, 4($v1) -/* 07EF00 7F04A3D0 244B0002 */ addiu $t3, $v0, 2 -/* 07EF04 7F04A3D4 A60B0004 */ sh $t3, 4($s0) -/* 07EF08 7F04A3D8 448A9000 */ mtc1 $t2, $f18 -/* 07EF0C 7F04A3DC 00000000 */ nop -/* 07EF10 7F04A3E0 46809120 */ cvt.s.w $f4, $f18 -/* 07EF14 7F04A3E4 461A2202 */ mul.s $f8, $f4, $f26 -/* 07EF18 7F04A3E8 46024183 */ div.s $f6, $f8, $f2 -/* 07EF1C 7F04A3EC 1000001E */ b .L7F04A468 -/* 07EF20 7F04A3F0 E606000C */ swc1 $f6, 0xc($s0) -command0F_rotate: -/* 07EF24 7F04A3F4 8C6C0004 */ lw $t4, 4($v1) -/* 07EF28 7F04A3F8 3C018005 */ lui $at, %hi(D_jpunk) -/* 07EF2C 7F04A3FC C42A8378 */ lwc1 $f10, %lo(D_jpunk)($at) -/* 07EF30 7F04A400 448C9000 */ mtc1 $t4, $f18 -/* 07EF34 7F04A404 00000000 */ nop -/* 07EF38 7F04A408 46809120 */ cvt.s.w $f4, $f18 -/* 07EF3C 7F04A40C 46045202 */ mul.s $f8, $f10, $f4 -/* 07EF40 7F04A410 C60A000C */ lwc1 $f10, 0xc($s0) -/* 07EF44 7F04A414 461A4182 */ mul.s $f6, $f8, $f26 -/* 07EF48 7F04A418 46023483 */ div.s $f18, $f6, $f2 -/* 07EF4C 7F04A41C 46125100 */ add.s $f4, $f10, $f18 -/* 07EF50 7F04A420 E604000C */ swc1 $f4, 0xc($s0) -/* 07EF54 7F04A424 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07EF58 7F04A428 460CD03E */ c.le.s $f26, $f12 -/* 07EF5C 7F04A42C 00000000 */ nop -/* 07EF60 7F04A430 45020005 */ bc1fl .L7F04A448 -/* 07EF64 7F04A434 4614603C */ c.lt.s $f12, $f20 -/* 07EF68 7F04A438 461A6201 */ sub.s $f8, $f12, $f26 -/* 07EF6C 7F04A43C E608000C */ swc1 $f8, 0xc($s0) -/* 07EF70 7F04A440 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07EF74 7F04A444 4614603C */ c.lt.s $f12, $f20 -.L7F04A448: -/* 07EF78 7F04A448 00000000 */ nop -/* 07EF7C 7F04A44C 45020004 */ bc1fl .L7F04A460 -/* 07EF80 7F04A450 960D0004 */ lhu $t5, 4($s0) -/* 07EF84 7F04A454 461A6180 */ add.s $f6, $f12, $f26 -/* 07EF88 7F04A458 E606000C */ swc1 $f6, 0xc($s0) -/* 07EF8C 7F04A45C 960D0004 */ lhu $t5, 4($s0) -.L7F04A460: -/* 07EF90 7F04A460 25AE0002 */ addiu $t6, $t5, 2 -/* 07EF94 7F04A464 A60E0004 */ sh $t6, 4($s0) -def_7F04A01C: -.L7F04A468: -/* 07EF98 7F04A468 5220FEE2 */ beql $s1, $zero, .L7F049FF4 -/* 07EF9C 7F04A46C 96020004 */ lhu $v0, 4($s0) -/* 07EFA0 7F04A470 C6000018 */ lwc1 $f0, 0x18($s0) -/* 07EFA4 7F04A474 4600A03C */ c.lt.s $f20, $f0 -/* 07EFA8 7F04A478 00000000 */ nop -/* 07EFAC 7F04A47C 45000017 */ bc1f .L7F04A4DC -/* 07EFB0 7F04A480 3C028005 */ lui $v0, %hi(D_jpunk) -/* 07EFB4 7F04A484 24428378 */ addiu $v0, %lo(D_jpunk) # addiu $v0, $v0, -0x7c88 -/* 07EFB8 7F04A488 C4520000 */ lwc1 $f18, ($v0) -/* 07EFBC 7F04A48C C60A0014 */ lwc1 $f10, 0x14($s0) -/* 07EFC0 7F04A490 46120102 */ mul.s $f4, $f0, $f18 -/* 07EFC4 7F04A494 46045200 */ add.s $f8, $f10, $f4 -/* 07EFC8 7F04A498 E6080014 */ swc1 $f8, 0x14($s0) -/* 07EFCC 7F04A49C C6020014 */ lwc1 $f2, 0x14($s0) -/* 07EFD0 7F04A4A0 4618103C */ c.lt.s $f2, $f24 -/* 07EFD4 7F04A4A4 00000000 */ nop -/* 07EFD8 7F04A4A8 45020009 */ bc1fl .L7F04A4D0 -/* 07EFDC 7F04A4AC C6080020 */ lwc1 $f8, 0x20($s0) -/* 07EFE0 7F04A4B0 C600001C */ lwc1 $f0, 0x1c($s0) -/* 07EFE4 7F04A4B4 C6060020 */ lwc1 $f6, 0x20($s0) -/* 07EFE8 7F04A4B8 46003481 */ sub.s $f18, $f6, $f0 -/* 07EFEC 7F04A4BC 46029282 */ mul.s $f10, $f18, $f2 -/* 07EFF0 7F04A4C0 460A0100 */ add.s $f4, $f0, $f10 -/* 07EFF4 7F04A4C4 10000005 */ b .L7F04A4DC -/* 07EFF8 7F04A4C8 E6040010 */ swc1 $f4, 0x10($s0) -/* 07EFFC 7F04A4CC C6080020 */ lwc1 $f8, 0x20($s0) -.L7F04A4D0: -/* 07F000 7F04A4D0 E6180014 */ swc1 $f24, 0x14($s0) -/* 07F004 7F04A4D4 E6140018 */ swc1 $f20, 0x18($s0) -/* 07F008 7F04A4D8 E6080010 */ swc1 $f8, 0x10($s0) -.L7F04A4DC: -/* 07F00C 7F04A4DC C600002C */ lwc1 $f0, 0x2c($s0) -/* 07F010 7F04A4E0 3C028005 */ lui $v0, %hi(D_jpunk) -/* 07F014 7F04A4E4 24428378 */ addiu $v0, %lo(D_jpunk) # addiu $v0, $v0, -0x7c88 -/* 07F018 7F04A4E8 4600A03C */ c.lt.s $f20, $f0 -/* 07F01C 7F04A4EC 00000000 */ nop -/* 07F020 7F04A4F0 45020017 */ bc1fl .L7F04A550 -/* 07F024 7F04A4F4 C6000040 */ lwc1 $f0, 0x40($s0) -/* 07F028 7F04A4F8 C4520000 */ lwc1 $f18, ($v0) -/* 07F02C 7F04A4FC C6060028 */ lwc1 $f6, 0x28($s0) -/* 07F030 7F04A500 46120282 */ mul.s $f10, $f0, $f18 -/* 07F034 7F04A504 460A3100 */ add.s $f4, $f6, $f10 -/* 07F038 7F04A508 E6040028 */ swc1 $f4, 0x28($s0) -/* 07F03C 7F04A50C C6020028 */ lwc1 $f2, 0x28($s0) -/* 07F040 7F04A510 4618103C */ c.lt.s $f2, $f24 -/* 07F044 7F04A514 00000000 */ nop -/* 07F048 7F04A518 45020009 */ bc1fl .L7F04A540 -/* 07F04C 7F04A51C C6040034 */ lwc1 $f4, 0x34($s0) -/* 07F050 7F04A520 C6000030 */ lwc1 $f0, 0x30($s0) -/* 07F054 7F04A524 C6080034 */ lwc1 $f8, 0x34($s0) -/* 07F058 7F04A528 46004481 */ sub.s $f18, $f8, $f0 -/* 07F05C 7F04A52C 46029182 */ mul.s $f6, $f18, $f2 -/* 07F060 7F04A530 46060280 */ add.s $f10, $f0, $f6 -/* 07F064 7F04A534 10000005 */ b .L7F04A54C -/* 07F068 7F04A538 E60A0024 */ swc1 $f10, 0x24($s0) -/* 07F06C 7F04A53C C6040034 */ lwc1 $f4, 0x34($s0) -.L7F04A540: -/* 07F070 7F04A540 E6180028 */ swc1 $f24, 0x28($s0) -/* 07F074 7F04A544 E614002C */ swc1 $f20, 0x2c($s0) -/* 07F078 7F04A548 E6040024 */ swc1 $f4, 0x24($s0) -.L7F04A54C: -/* 07F07C 7F04A54C C6000040 */ lwc1 $f0, 0x40($s0) -.L7F04A550: -/* 07F080 7F04A550 4600A03C */ c.lt.s $f20, $f0 -/* 07F084 7F04A554 00000000 */ nop -/* 07F088 7F04A558 45020017 */ bc1fl .L7F04A5B8 -/* 07F08C 7F04A55C C6000054 */ lwc1 $f0, 0x54($s0) -/* 07F090 7F04A560 C4520000 */ lwc1 $f18, ($v0) -/* 07F094 7F04A564 C608003C */ lwc1 $f8, 0x3c($s0) -/* 07F098 7F04A568 46120182 */ mul.s $f6, $f0, $f18 -/* 07F09C 7F04A56C 46064280 */ add.s $f10, $f8, $f6 -/* 07F0A0 7F04A570 E60A003C */ swc1 $f10, 0x3c($s0) -/* 07F0A4 7F04A574 C602003C */ lwc1 $f2, 0x3c($s0) -/* 07F0A8 7F04A578 4618103C */ c.lt.s $f2, $f24 -/* 07F0AC 7F04A57C 00000000 */ nop -/* 07F0B0 7F04A580 45020009 */ bc1fl .L7F04A5A8 -/* 07F0B4 7F04A584 C60A0048 */ lwc1 $f10, 0x48($s0) -/* 07F0B8 7F04A588 C6000044 */ lwc1 $f0, 0x44($s0) -/* 07F0BC 7F04A58C C6040048 */ lwc1 $f4, 0x48($s0) -/* 07F0C0 7F04A590 46002481 */ sub.s $f18, $f4, $f0 -/* 07F0C4 7F04A594 46029202 */ mul.s $f8, $f18, $f2 -/* 07F0C8 7F04A598 46080180 */ add.s $f6, $f0, $f8 -/* 07F0CC 7F04A59C 10000005 */ b .L7F04A5B4 -/* 07F0D0 7F04A5A0 E6060038 */ swc1 $f6, 0x38($s0) -/* 07F0D4 7F04A5A4 C60A0048 */ lwc1 $f10, 0x48($s0) -.L7F04A5A8: -/* 07F0D8 7F04A5A8 E618003C */ swc1 $f24, 0x3c($s0) -/* 07F0DC 7F04A5AC E6140040 */ swc1 $f20, 0x40($s0) -/* 07F0E0 7F04A5B0 E60A0038 */ swc1 $f10, 0x38($s0) -.L7F04A5B4: -/* 07F0E4 7F04A5B4 C6000054 */ lwc1 $f0, 0x54($s0) -.L7F04A5B8: -/* 07F0E8 7F04A5B8 4600A03C */ c.lt.s $f20, $f0 -/* 07F0EC 7F04A5BC 00000000 */ nop -/* 07F0F0 7F04A5C0 45020017 */ bc1fl .L7F04A620 -/* 07F0F4 7F04A5C4 C6020070 */ lwc1 $f2, 0x70($s0) -/* 07F0F8 7F04A5C8 C4520000 */ lwc1 $f18, ($v0) -/* 07F0FC 7F04A5CC C6040050 */ lwc1 $f4, 0x50($s0) -/* 07F100 7F04A5D0 46120202 */ mul.s $f8, $f0, $f18 -/* 07F104 7F04A5D4 46082180 */ add.s $f6, $f4, $f8 -/* 07F108 7F04A5D8 E6060050 */ swc1 $f6, 0x50($s0) -/* 07F10C 7F04A5DC C6020050 */ lwc1 $f2, 0x50($s0) -/* 07F110 7F04A5E0 4618103C */ c.lt.s $f2, $f24 -/* 07F114 7F04A5E4 00000000 */ nop -/* 07F118 7F04A5E8 45020009 */ bc1fl .L7F04A610 -/* 07F11C 7F04A5EC C606005C */ lwc1 $f6, 0x5c($s0) -/* 07F120 7F04A5F0 C6000058 */ lwc1 $f0, 0x58($s0) -/* 07F124 7F04A5F4 C60A005C */ lwc1 $f10, 0x5c($s0) -/* 07F128 7F04A5F8 46005481 */ sub.s $f18, $f10, $f0 -/* 07F12C 7F04A5FC 46029102 */ mul.s $f4, $f18, $f2 -/* 07F130 7F04A600 46040200 */ add.s $f8, $f0, $f4 -/* 07F134 7F04A604 10000005 */ b .L7F04A61C -/* 07F138 7F04A608 E608004C */ swc1 $f8, 0x4c($s0) -/* 07F13C 7F04A60C C606005C */ lwc1 $f6, 0x5c($s0) -.L7F04A610: -/* 07F140 7F04A610 E6180050 */ swc1 $f24, 0x50($s0) -/* 07F144 7F04A614 E6140054 */ swc1 $f20, 0x54($s0) -/* 07F148 7F04A618 E606004C */ swc1 $f6, 0x4c($s0) -.L7F04A61C: -/* 07F14C 7F04A61C C6020070 */ lwc1 $f2, 0x70($s0) -.L7F04A620: -/* 07F150 7F04A620 4602A03C */ c.lt.s $f20, $f2 -/* 07F154 7F04A624 00000000 */ nop -/* 07F158 7F04A628 4502003F */ bc1fl .L7F04A728 -/* 07F15C 7F04A62C 8FAA00A0 */ lw $t2, 0xa0($sp) -/* 07F160 7F04A630 C4520000 */ lwc1 $f18, ($v0) -/* 07F164 7F04A634 C60A006C */ lwc1 $f10, 0x6c($s0) -/* 07F168 7F04A638 46121102 */ mul.s $f4, $f2, $f18 -/* 07F16C 7F04A63C 46045200 */ add.s $f8, $f10, $f4 -/* 07F170 7F04A640 E608006C */ swc1 $f8, 0x6c($s0) -/* 07F174 7F04A644 C600006C */ lwc1 $f0, 0x6c($s0) -/* 07F178 7F04A648 4618003C */ c.lt.s $f0, $f24 -/* 07F17C 7F04A64C 00000000 */ nop -/* 07F180 7F04A650 4502002B */ bc1fl .L7F04A700 -/* 07F184 7F04A654 920F0062 */ lbu $t7, 0x62($s0) -/* 07F188 7F04A658 92020061 */ lbu $v0, 0x61($s0) -/* 07F18C 7F04A65C 920F0062 */ lbu $t7, 0x62($s0) -/* 07F190 7F04A660 92030064 */ lbu $v1, 0x64($s0) -/* 07F194 7F04A664 920A0065 */ lbu $t2, 0x65($s0) -/* 07F198 7F04A668 01E2C023 */ subu $t8, $t7, $v0 -/* 07F19C 7F04A66C 44983000 */ mtc1 $t8, $f6 -/* 07F1A0 7F04A670 01435823 */ subu $t3, $t2, $v1 -/* 07F1A4 7F04A674 448B4000 */ mtc1 $t3, $f8 -/* 07F1A8 7F04A678 468034A0 */ cvt.s.w $f18, $f6 -/* 07F1AC 7F04A67C 920F0068 */ lbu $t7, 0x68($s0) -/* 07F1B0 7F04A680 92040067 */ lbu $a0, 0x67($s0) -/* 07F1B4 7F04A684 920A006B */ lbu $t2, 0x6b($s0) -/* 07F1B8 7F04A688 9205006A */ lbu $a1, 0x6a($s0) -/* 07F1BC 7F04A68C 468041A0 */ cvt.s.w $f6, $f8 -/* 07F1C0 7F04A690 46009282 */ mul.s $f10, $f18, $f0 -/* 07F1C4 7F04A694 01E4C023 */ subu $t8, $t7, $a0 -/* 07F1C8 7F04A698 01455823 */ subu $t3, $t2, $a1 -/* 07F1CC 7F04A69C 46003482 */ mul.s $f18, $f6, $f0 -/* 07F1D0 7F04A6A0 4600510D */ trunc.w.s $f4, $f10 -/* 07F1D4 7F04A6A4 4600928D */ trunc.w.s $f10, $f18 -/* 07F1D8 7F04A6A8 44082000 */ mfc1 $t0, $f4 -/* 07F1DC 7F04A6AC 44982000 */ mtc1 $t8, $f4 -/* 07F1E0 7F04A6B0 440D5000 */ mfc1 $t5, $f10 -/* 07F1E4 7F04A6B4 46802220 */ cvt.s.w $f8, $f4 -/* 07F1E8 7F04A6B8 448B5000 */ mtc1 $t3, $f10 -/* 07F1EC 7F04A6BC 00484821 */ addu $t1, $v0, $t0 -/* 07F1F0 7F04A6C0 006D7021 */ addu $t6, $v1, $t5 -/* 07F1F4 7F04A6C4 A2090060 */ sb $t1, 0x60($s0) -/* 07F1F8 7F04A6C8 46805120 */ cvt.s.w $f4, $f10 -/* 07F1FC 7F04A6CC 46004182 */ mul.s $f6, $f8, $f0 -/* 07F200 7F04A6D0 A20E0063 */ sb $t6, 0x63($s0) -/* 07F204 7F04A6D4 46002202 */ mul.s $f8, $f4, $f0 -/* 07F208 7F04A6D8 4600348D */ trunc.w.s $f18, $f6 -/* 07F20C 7F04A6DC 4600418D */ trunc.w.s $f6, $f8 -/* 07F210 7F04A6E0 44089000 */ mfc1 $t0, $f18 -/* 07F214 7F04A6E4 440D3000 */ mfc1 $t5, $f6 -/* 07F218 7F04A6E8 00884821 */ addu $t1, $a0, $t0 -/* 07F21C 7F04A6EC A2090066 */ sb $t1, 0x66($s0) -/* 07F220 7F04A6F0 00AD7021 */ addu $t6, $a1, $t5 -/* 07F224 7F04A6F4 1000000B */ b .L7F04A724 -/* 07F228 7F04A6F8 A20E0069 */ sb $t6, 0x69($s0) -/* 07F22C 7F04A6FC 920F0062 */ lbu $t7, 0x62($s0) -.L7F04A700: -/* 07F230 7F04A700 92180065 */ lbu $t8, 0x65($s0) -/* 07F234 7F04A704 92190068 */ lbu $t9, 0x68($s0) -/* 07F238 7F04A708 9208006B */ lbu $t0, 0x6b($s0) -/* 07F23C 7F04A70C E618006C */ swc1 $f24, 0x6c($s0) -/* 07F240 7F04A710 E6140070 */ swc1 $f20, 0x70($s0) -/* 07F244 7F04A714 A20F0060 */ sb $t7, 0x60($s0) -/* 07F248 7F04A718 A2180063 */ sb $t8, 0x63($s0) -/* 07F24C 7F04A71C A2190066 */ sb $t9, 0x66($s0) -/* 07F250 7F04A720 A2080069 */ sb $t0, 0x69($s0) -.L7F04A724: -/* 07F254 7F04A724 8FAA00A0 */ lw $t2, 0xa0($sp) -.L7F04A728: -/* 07F258 7F04A728 8FA300A4 */ lw $v1, 0xa4($sp) -/* 07F25C 7F04A72C 8FA900BC */ lw $t1, 0xbc($sp) -/* 07F260 7F04A730 AD520000 */ sw $s2, ($t2) -/* 07F264 7F04A734 3C0F8009 */ lui $t7, %hi(monitorimages) -/* 07F268 7F04A738 AD490004 */ sw $t1, 4($t2) -/* 07F26C 7F04A73C 8C6B0008 */ lw $t3, 8($v1) -/* 07F270 7F04A740 8D610000 */ lw $at, ($t3) -/* 07F274 7F04A744 AE410000 */ sw $at, ($s2) -/* 07F278 7F04A748 8D6D0004 */ lw $t5, 4($t3) -/* 07F27C 7F04A74C AE4D0004 */ sw $t5, 4($s2) -/* 07F280 7F04A750 8D610008 */ lw $at, 8($t3) -/* 07F284 7F04A754 AE410008 */ sw $at, 8($s2) -/* 07F288 7F04A758 8D6D000C */ lw $t5, 0xc($t3) -/* 07F28C 7F04A75C AE4D000C */ sw $t5, 0xc($s2) -/* 07F290 7F04A760 8C6E0008 */ lw $t6, 8($v1) -/* 07F294 7F04A764 8DC10010 */ lw $at, 0x10($t6) -/* 07F298 7F04A768 AE410010 */ sw $at, 0x10($s2) -/* 07F29C 7F04A76C 8DD80014 */ lw $t8, 0x14($t6) -/* 07F2A0 7F04A770 AE580014 */ sw $t8, 0x14($s2) -/* 07F2A4 7F04A774 8DC10018 */ lw $at, 0x18($t6) -/* 07F2A8 7F04A778 AE410018 */ sw $at, 0x18($s2) -/* 07F2AC 7F04A77C 8DD8001C */ lw $t8, 0x1c($t6) -/* 07F2B0 7F04A780 AE58001C */ sw $t8, 0x1c($s2) -/* 07F2B4 7F04A784 8C790008 */ lw $t9, 8($v1) -/* 07F2B8 7F04A788 8F210020 */ lw $at, 0x20($t9) -/* 07F2BC 7F04A78C AE410020 */ sw $at, 0x20($s2) -/* 07F2C0 7F04A790 8F290024 */ lw $t1, 0x24($t9) -/* 07F2C4 7F04A794 AE490024 */ sw $t1, 0x24($s2) -/* 07F2C8 7F04A798 8F210028 */ lw $at, 0x28($t9) -/* 07F2CC 7F04A79C AE410028 */ sw $at, 0x28($s2) -/* 07F2D0 7F04A7A0 8F29002C */ lw $t1, 0x2c($t9) -/* 07F2D4 7F04A7A4 AE49002C */ sw $t1, 0x2c($s2) -/* 07F2D8 7F04A7A8 8C6A0008 */ lw $t2, 8($v1) -/* 07F2DC 7F04A7AC 8D410030 */ lw $at, 0x30($t2) -/* 07F2E0 7F04A7B0 AE410030 */ sw $at, 0x30($s2) -/* 07F2E4 7F04A7B4 8D4B0034 */ lw $t3, 0x34($t2) -/* 07F2E8 7F04A7B8 AE4B0034 */ sw $t3, 0x34($s2) -/* 07F2EC 7F04A7BC 8D410038 */ lw $at, 0x38($t2) -/* 07F2F0 7F04A7C0 AE410038 */ sw $at, 0x38($s2) -/* 07F2F4 7F04A7C4 8D4B003C */ lw $t3, 0x3c($t2) -/* 07F2F8 7F04A7C8 AE4B003C */ sw $t3, 0x3c($s2) -/* 07F2FC 7F04A7CC 8E020008 */ lw $v0, 8($s0) -/* 07F300 7F04A7D0 2C410064 */ sltiu $at, $v0, 0x64 -/* 07F304 7F04A7D4 10200007 */ beqz $at, .L7F04A7F4 -/* 07F308 7F04A7D8 00408825 */ move $s1, $v0 -/* 07F30C 7F04A7DC 00026880 */ sll $t5, $v0, 2 -/* 07F310 7F04A7E0 8DEFD120 */ lw $t7, %lo(monitorimages)($t7) -/* 07F314 7F04A7E4 01A26823 */ subu $t5, $t5, $v0 -/* 07F318 7F04A7E8 000D6880 */ sll $t5, $t5, 2 -/* 07F31C 7F04A7EC 10000001 */ b .L7F04A7F4 -/* 07F320 7F04A7F0 01AF8821 */ addu $s1, $t5, $t7 -.L7F04A7F4: -/* 07F324 7F04A7F4 122000A9 */ beqz $s1, .L7F04AA9C -/* 07F328 7F04A7F8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 07F32C 7F04A7FC 44810000 */ mtc1 $at, $f0 -/* 07F330 7F04A800 C6120010 */ lwc1 $f18, 0x10($s0) -/* 07F334 7F04A804 C60A0024 */ lwc1 $f10, 0x24($s0) -/* 07F338 7F04A808 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07F33C 7F04A80C 46009582 */ mul.s $f22, $f18, $f0 -/* 07F340 7F04A810 460CA032 */ c.eq.s $f20, $f12 -/* 07F344 7F04A814 46005602 */ mul.s $f24, $f10, $f0 -/* 07F348 7F04A818 4600B386 */ mov.s $f14, $f22 -/* 07F34C 7F04A81C 45010015 */ bc1t .L7F04A874 -/* 07F350 7F04A820 4600C406 */ mov.s $f16, $f24 -/* 07F354 7F04A824 E7AE0054 */ swc1 $f14, 0x54($sp) -/* 07F358 7F04A828 0FC15FA8 */ jal cosf -/* 07F35C 7F04A82C E7B00050 */ swc1 $f16, 0x50($sp) -/* 07F360 7F04A830 3C018005 */ lui $at, %hi(D_80052CB0) -/* 07F364 7F04A834 C43A2CB0 */ lwc1 $f26, %lo(D_80052CB0)($at) -/* 07F368 7F04A838 C60C000C */ lwc1 $f12, 0xc($s0) -/* 07F36C 7F04A83C 461A0502 */ mul.s $f20, $f0, $f26 -/* 07F370 7F04A840 0FC15FAB */ jal sinf -/* 07F374 7F04A844 00000000 */ nop -/* 07F378 7F04A848 4614B582 */ mul.s $f22, $f22, $f20 -/* 07F37C 7F04A84C C7AE0054 */ lwc1 $f14, 0x54($sp) -/* 07F380 7F04A850 C7B00050 */ lwc1 $f16, 0x50($sp) -/* 07F384 7F04A854 461A0082 */ mul.s $f2, $f0, $f26 -/* 07F388 7F04A858 00000000 */ nop -/* 07F38C 7F04A85C 4602C602 */ mul.s $f24, $f24, $f2 -/* 07F390 7F04A860 00000000 */ nop -/* 07F394 7F04A864 46027382 */ mul.s $f14, $f14, $f2 -/* 07F398 7F04A868 00000000 */ nop -/* 07F39C 7F04A86C 46148402 */ mul.s $f16, $f16, $f20 -/* 07F3A0 7F04A870 00000000 */ nop -.L7F04A874: -/* 07F3A4 7F04A874 922E0004 */ lbu $t6, 4($s1) -/* 07F3A8 7F04A878 3C014200 */ li $at, 0x42000000 # 32.000000 -/* 07F3AC 7F04A87C 44810000 */ mtc1 $at, $f0 -/* 07F3B0 7F04A880 448E4000 */ mtc1 $t6, $f8 -/* 07F3B4 7F04A884 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F3B8 7F04A888 05C10004 */ bgez $t6, .L7F04A89C -/* 07F3BC 7F04A88C 468041A0 */ cvt.s.w $f6, $f8 -/* 07F3C0 7F04A890 44819000 */ mtc1 $at, $f18 -/* 07F3C4 7F04A894 00000000 */ nop -/* 07F3C8 7F04A898 46123180 */ add.s $f6, $f6, $f18 -.L7F04A89C: -/* 07F3CC 7F04A89C C60A0038 */ lwc1 $f10, 0x38($s0) -/* 07F3D0 7F04A8A0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F3D4 7F04A8A4 46165100 */ add.s $f4, $f10, $f22 -/* 07F3D8 7F04A8A8 46043202 */ mul.s $f8, $f6, $f4 -/* 07F3DC 7F04A8AC 00000000 */ nop -/* 07F3E0 7F04A8B0 46004482 */ mul.s $f18, $f8, $f0 -/* 07F3E4 7F04A8B4 4600928D */ trunc.w.s $f10, $f18 -/* 07F3E8 7F04A8B8 44085000 */ mfc1 $t0, $f10 -/* 07F3EC 7F04A8BC 00000000 */ nop -/* 07F3F0 7F04A8C0 A6480008 */ sh $t0, 8($s2) -/* 07F3F4 7F04A8C4 92390005 */ lbu $t9, 5($s1) -/* 07F3F8 7F04A8C8 44993000 */ mtc1 $t9, $f6 -/* 07F3FC 7F04A8CC 07210004 */ bgez $t9, .L7F04A8E0 -/* 07F400 7F04A8D0 46803120 */ cvt.s.w $f4, $f6 -/* 07F404 7F04A8D4 44814000 */ mtc1 $at, $f8 -/* 07F408 7F04A8D8 00000000 */ nop -/* 07F40C 7F04A8DC 46082100 */ add.s $f4, $f4, $f8 -.L7F04A8E0: -/* 07F410 7F04A8E0 C612004C */ lwc1 $f18, 0x4c($s0) -/* 07F414 7F04A8E4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F418 7F04A8E8 46189280 */ add.s $f10, $f18, $f24 -/* 07F41C 7F04A8EC 460A2182 */ mul.s $f6, $f4, $f10 -/* 07F420 7F04A8F0 00000000 */ nop -/* 07F424 7F04A8F4 46003202 */ mul.s $f8, $f6, $f0 -/* 07F428 7F04A8F8 4600448D */ trunc.w.s $f18, $f8 -/* 07F42C 7F04A8FC 440C9000 */ mfc1 $t4, $f18 -/* 07F430 7F04A900 00000000 */ nop -/* 07F434 7F04A904 A64C000A */ sh $t4, 0xa($s2) -/* 07F438 7F04A908 922A0004 */ lbu $t2, 4($s1) -/* 07F43C 7F04A90C 448A2000 */ mtc1 $t2, $f4 -/* 07F440 7F04A910 05410004 */ bgez $t2, .L7F04A924 -/* 07F444 7F04A914 468022A0 */ cvt.s.w $f10, $f4 -/* 07F448 7F04A918 44813000 */ mtc1 $at, $f6 -/* 07F44C 7F04A91C 00000000 */ nop -/* 07F450 7F04A920 46065280 */ add.s $f10, $f10, $f6 -.L7F04A924: -/* 07F454 7F04A924 C6080038 */ lwc1 $f8, 0x38($s0) -/* 07F458 7F04A928 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F45C 7F04A92C 460E4481 */ sub.s $f18, $f8, $f14 -/* 07F460 7F04A930 46125102 */ mul.s $f4, $f10, $f18 -/* 07F464 7F04A934 00000000 */ nop -/* 07F468 7F04A938 46002182 */ mul.s $f6, $f4, $f0 -/* 07F46C 7F04A93C 4600320D */ trunc.w.s $f8, $f6 -/* 07F470 7F04A940 440D4000 */ mfc1 $t5, $f8 -/* 07F474 7F04A944 00000000 */ nop -/* 07F478 7F04A948 A64D0018 */ sh $t5, 0x18($s2) -/* 07F47C 7F04A94C 922F0005 */ lbu $t7, 5($s1) -/* 07F480 7F04A950 448F5000 */ mtc1 $t7, $f10 -/* 07F484 7F04A954 05E10004 */ bgez $t7, .L7F04A968 -/* 07F488 7F04A958 468054A0 */ cvt.s.w $f18, $f10 -/* 07F48C 7F04A95C 44812000 */ mtc1 $at, $f4 -/* 07F490 7F04A960 00000000 */ nop -/* 07F494 7F04A964 46049480 */ add.s $f18, $f18, $f4 -.L7F04A968: -/* 07F498 7F04A968 C606004C */ lwc1 $f6, 0x4c($s0) -/* 07F49C 7F04A96C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F4A0 7F04A970 46103200 */ add.s $f8, $f6, $f16 -/* 07F4A4 7F04A974 46089282 */ mul.s $f10, $f18, $f8 -/* 07F4A8 7F04A978 00000000 */ nop -/* 07F4AC 7F04A97C 46005102 */ mul.s $f4, $f10, $f0 -/* 07F4B0 7F04A980 4600218D */ trunc.w.s $f6, $f4 -/* 07F4B4 7F04A984 44183000 */ mfc1 $t8, $f6 -/* 07F4B8 7F04A988 00000000 */ nop -/* 07F4BC 7F04A98C A658001A */ sh $t8, 0x1a($s2) -/* 07F4C0 7F04A990 92280004 */ lbu $t0, 4($s1) -/* 07F4C4 7F04A994 44889000 */ mtc1 $t0, $f18 -/* 07F4C8 7F04A998 05010004 */ bgez $t0, .L7F04A9AC -/* 07F4CC 7F04A99C 46809220 */ cvt.s.w $f8, $f18 -/* 07F4D0 7F04A9A0 44815000 */ mtc1 $at, $f10 -/* 07F4D4 7F04A9A4 00000000 */ nop -/* 07F4D8 7F04A9A8 460A4200 */ add.s $f8, $f8, $f10 -.L7F04A9AC: -/* 07F4DC 7F04A9AC C6040038 */ lwc1 $f4, 0x38($s0) -/* 07F4E0 7F04A9B0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F4E4 7F04A9B4 46162181 */ sub.s $f6, $f4, $f22 -/* 07F4E8 7F04A9B8 46064482 */ mul.s $f18, $f8, $f6 -/* 07F4EC 7F04A9BC 00000000 */ nop -/* 07F4F0 7F04A9C0 46009282 */ mul.s $f10, $f18, $f0 -/* 07F4F4 7F04A9C4 4600510D */ trunc.w.s $f4, $f10 -/* 07F4F8 7F04A9C8 44092000 */ mfc1 $t1, $f4 -/* 07F4FC 7F04A9CC 00000000 */ nop -/* 07F500 7F04A9D0 A6490028 */ sh $t1, 0x28($s2) -/* 07F504 7F04A9D4 922C0005 */ lbu $t4, 5($s1) -/* 07F508 7F04A9D8 448C4000 */ mtc1 $t4, $f8 -/* 07F50C 7F04A9DC 05810004 */ bgez $t4, .L7F04A9F0 -/* 07F510 7F04A9E0 468041A0 */ cvt.s.w $f6, $f8 -/* 07F514 7F04A9E4 44819000 */ mtc1 $at, $f18 -/* 07F518 7F04A9E8 00000000 */ nop -/* 07F51C 7F04A9EC 46123180 */ add.s $f6, $f6, $f18 -.L7F04A9F0: -/* 07F520 7F04A9F0 C60A004C */ lwc1 $f10, 0x4c($s0) -/* 07F524 7F04A9F4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F528 7F04A9F8 46185101 */ sub.s $f4, $f10, $f24 -/* 07F52C 7F04A9FC 46043202 */ mul.s $f8, $f6, $f4 -/* 07F530 7F04AA00 00000000 */ nop -/* 07F534 7F04AA04 46004482 */ mul.s $f18, $f8, $f0 -/* 07F538 7F04AA08 4600928D */ trunc.w.s $f10, $f18 -/* 07F53C 7F04AA0C 440B5000 */ mfc1 $t3, $f10 -/* 07F540 7F04AA10 00000000 */ nop -/* 07F544 7F04AA14 A64B002A */ sh $t3, 0x2a($s2) -/* 07F548 7F04AA18 922D0004 */ lbu $t5, 4($s1) -/* 07F54C 7F04AA1C 448D3000 */ mtc1 $t5, $f6 -/* 07F550 7F04AA20 05A10004 */ bgez $t5, .L7F04AA34 -/* 07F554 7F04AA24 46803120 */ cvt.s.w $f4, $f6 -/* 07F558 7F04AA28 44814000 */ mtc1 $at, $f8 -/* 07F55C 7F04AA2C 00000000 */ nop -/* 07F560 7F04AA30 46082100 */ add.s $f4, $f4, $f8 -.L7F04AA34: -/* 07F564 7F04AA34 C6120038 */ lwc1 $f18, 0x38($s0) -/* 07F568 7F04AA38 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 07F56C 7F04AA3C 460E9280 */ add.s $f10, $f18, $f14 -/* 07F570 7F04AA40 460A2182 */ mul.s $f6, $f4, $f10 -/* 07F574 7F04AA44 00000000 */ nop -/* 07F578 7F04AA48 46003202 */ mul.s $f8, $f6, $f0 -/* 07F57C 7F04AA4C 4600448D */ trunc.w.s $f18, $f8 -/* 07F580 7F04AA50 440E9000 */ mfc1 $t6, $f18 -/* 07F584 7F04AA54 00000000 */ nop -/* 07F588 7F04AA58 A64E0038 */ sh $t6, 0x38($s2) -/* 07F58C 7F04AA5C 92380005 */ lbu $t8, 5($s1) -/* 07F590 7F04AA60 44982000 */ mtc1 $t8, $f4 -/* 07F594 7F04AA64 07010004 */ bgez $t8, .L7F04AA78 -/* 07F598 7F04AA68 468022A0 */ cvt.s.w $f10, $f4 -/* 07F59C 7F04AA6C 44813000 */ mtc1 $at, $f6 -/* 07F5A0 7F04AA70 00000000 */ nop -/* 07F5A4 7F04AA74 46065280 */ add.s $f10, $f10, $f6 -.L7F04AA78: -/* 07F5A8 7F04AA78 C608004C */ lwc1 $f8, 0x4c($s0) -/* 07F5AC 7F04AA7C 46104481 */ sub.s $f18, $f8, $f16 -/* 07F5B0 7F04AA80 46125102 */ mul.s $f4, $f10, $f18 -/* 07F5B4 7F04AA84 00000000 */ nop -/* 07F5B8 7F04AA88 46002182 */ mul.s $f6, $f4, $f0 -/* 07F5BC 7F04AA8C 4600320D */ trunc.w.s $f8, $f6 -/* 07F5C0 7F04AA90 44194000 */ mfc1 $t9, $f8 -/* 07F5C4 7F04AA94 00000000 */ nop -/* 07F5C8 7F04AA98 A659003A */ sh $t9, 0x3a($s2) -.L7F04AA9C: -/* 07F5CC 7F04AA9C 92020060 */ lbu $v0, 0x60($s0) -/* 07F5D0 7F04AAA0 240C0002 */ li $t4, 2 -/* 07F5D4 7F04AAA4 3C0DB700 */ lui $t5, 0xb700 -/* 07F5D8 7F04AAA8 A242003C */ sb $v0, 0x3c($s2) -/* 07F5DC 7F04AAAC A242002C */ sb $v0, 0x2c($s2) -/* 07F5E0 7F04AAB0 A242001C */ sb $v0, 0x1c($s2) -/* 07F5E4 7F04AAB4 A242000C */ sb $v0, 0xc($s2) -/* 07F5E8 7F04AAB8 92020063 */ lbu $v0, 0x63($s0) -/* 07F5EC 7F04AABC 240F2000 */ li $t7, 8192 -/* 07F5F0 7F04AAC0 27A400BC */ addiu $a0, $sp, 0xbc -/* 07F5F4 7F04AAC4 A242003D */ sb $v0, 0x3d($s2) -/* 07F5F8 7F04AAC8 A242002D */ sb $v0, 0x2d($s2) -/* 07F5FC 7F04AACC A242001D */ sb $v0, 0x1d($s2) -/* 07F600 7F04AAD0 A242000D */ sb $v0, 0xd($s2) -/* 07F604 7F04AAD4 92030066 */ lbu $v1, 0x66($s0) -/* 07F608 7F04AAD8 A243003E */ sb $v1, 0x3e($s2) -/* 07F60C 7F04AADC A243002E */ sb $v1, 0x2e($s2) -/* 07F610 7F04AAE0 A243001E */ sb $v1, 0x1e($s2) -/* 07F614 7F04AAE4 A243000E */ sb $v1, 0xe($s2) -/* 07F618 7F04AAE8 92020069 */ lbu $v0, 0x69($s0) -/* 07F61C 7F04AAEC A242003F */ sb $v0, 0x3f($s2) -/* 07F620 7F04AAF0 A242002F */ sb $v0, 0x2f($s2) -/* 07F624 7F04AAF4 A242001F */ sb $v0, 0x1f($s2) -/* 07F628 7F04AAF8 A242000F */ sb $v0, 0xf($s2) -/* 07F62C 7F04AAFC 92090069 */ lbu $t1, 0x69($s0) -/* 07F630 7F04AB00 292100FF */ slti $at, $t1, 0xff -/* 07F634 7F04AB04 50200003 */ beql $at, $zero, .L7F04AB14 -/* 07F638 7F04AB08 8FAA00BC */ lw $t2, 0xbc($sp) -/* 07F63C 7F04AB0C AFAC00C4 */ sw $t4, 0xc4($sp) -/* 07F640 7F04AB10 8FAA00BC */ lw $t2, 0xbc($sp) -.L7F04AB14: -/* 07F644 7F04AB14 240E0002 */ li $t6, 2 -/* 07F648 7F04AB18 02202825 */ move $a1, $s1 -/* 07F64C 7F04AB1C 254B0008 */ addiu $t3, $t2, 8 -/* 07F650 7F04AB20 AFAB00BC */ sw $t3, 0xbc($sp) -/* 07F654 7F04AB24 AD4F0004 */ sw $t7, 4($t2) -/* 07F658 7F04AB28 AD4D0000 */ sw $t5, ($t2) -/* 07F65C 7F04AB2C AFAE0010 */ sw $t6, 0x10($sp) -/* 07F660 7F04AB30 8FA700C0 */ lw $a3, 0xc0($sp) -/* 07F664 7F04AB34 0FC1DB5A */ jal likely_generate_DL_for_image_declaration -/* 07F668 7F04AB38 8FA600C4 */ lw $a2, 0xc4($sp) -/* 07F66C 7F04AB3C 8FB000BC */ lw $s0, 0xbc($sp) -/* 07F670 7F04AB40 3C190102 */ lui $t9, (0x01020040 >> 16) # lui $t9, 0x102 -/* 07F674 7F04AB44 37390040 */ ori $t9, (0x01020040 & 0xFFFF) # ori $t9, $t9, 0x40 -/* 07F678 7F04AB48 26080008 */ addiu $t0, $s0, 8 -/* 07F67C 7F04AB4C AFA800BC */ sw $t0, 0xbc($sp) -/* 07F680 7F04AB50 AE190000 */ sw $t9, ($s0) -/* 07F684 7F04AB54 8FA900B0 */ lw $t1, 0xb0($sp) -/* 07F688 7F04AB58 0C003A2C */ jal osVirtualToPhysical -/* 07F68C 7F04AB5C 8D24000C */ lw $a0, 0xc($t1) -/* 07F690 7F04AB60 AE020004 */ sw $v0, 4($s0) -/* 07F694 7F04AB64 8FB100BC */ lw $s1, 0xbc($sp) -/* 07F698 7F04AB68 3C0BBC00 */ lui $t3, (0xBC001006 >> 16) # lui $t3, 0xbc00 -/* 07F69C 7F04AB6C 356B1006 */ ori $t3, (0xBC001006 & 0xFFFF) # ori $t3, $t3, 0x1006 -/* 07F6A0 7F04AB70 262A0008 */ addiu $t2, $s1, 8 -/* 07F6A4 7F04AB74 AFAA00BC */ sw $t2, 0xbc($sp) -/* 07F6A8 7F04AB78 02402025 */ move $a0, $s2 -/* 07F6AC 7F04AB7C 0C003A2C */ jal osVirtualToPhysical -/* 07F6B0 7F04AB80 AE2B0000 */ sw $t3, ($s1) -/* 07F6B4 7F04AB84 AE220004 */ sw $v0, 4($s1) -/* 07F6B8 7F04AB88 8FAD00BC */ lw $t5, 0xbc($sp) -/* 07F6BC 7F04AB8C 3C0E0430 */ lui $t6, (0x04300040 >> 16) # lui $t6, 0x430 -/* 07F6C0 7F04AB90 35CE0040 */ ori $t6, (0x04300040 & 0xFFFF) # ori $t6, $t6, 0x40 -/* 07F6C4 7F04AB94 25AF0008 */ addiu $t7, $t5, 8 -/* 07F6C8 7F04AB98 AFAF00BC */ sw $t7, 0xbc($sp) -/* 07F6CC 7F04AB9C 3C180400 */ lui $t8, 0x400 -/* 07F6D0 7F04ABA0 ADB80004 */ sw $t8, 4($t5) -/* 07F6D4 7F04ABA4 ADAE0000 */ sw $t6, ($t5) -/* 07F6D8 7F04ABA8 8FA800BC */ lw $t0, 0xbc($sp) -/* 07F6DC 7F04ABAC 3C09B100 */ lui $t1, (0xB1000032 >> 16) # lui $t1, 0xb100 -/* 07F6E0 7F04ABB0 35290032 */ ori $t1, (0xB1000032 & 0xFFFF) # ori $t1, $t1, 0x32 -/* 07F6E4 7F04ABB4 25190008 */ addiu $t9, $t0, 8 -/* 07F6E8 7F04ABB8 AFB900BC */ sw $t9, 0xbc($sp) -/* 07F6EC 7F04ABBC 240C2010 */ li $t4, 8208 -/* 07F6F0 7F04ABC0 AD0C0004 */ sw $t4, 4($t0) -/* 07F6F4 7F04ABC4 AD090000 */ sw $t1, ($t0) -/* 07F6F8 7F04ABC8 8FAA00BC */ lw $t2, 0xbc($sp) -/* 07F6FC 7F04ABCC 3C0DB800 */ lui $t5, 0xb800 -/* 07F700 7F04ABD0 3C0F0601 */ lui $t7, 0x601 -/* 07F704 7F04ABD4 254B0008 */ addiu $t3, $t2, 8 -/* 07F708 7F04ABD8 AFAB00BC */ sw $t3, 0xbc($sp) -/* 07F70C 7F04ABDC AD400004 */ sw $zero, 4($t2) -/* 07F710 7F04ABE0 AD4D0000 */ sw $t5, ($t2) -/* 07F714 7F04ABE4 8FA600A8 */ lw $a2, 0xa8($sp) -/* 07F718 7F04ABE8 ACCF0000 */ sw $t7, ($a2) -/* 07F71C 7F04ABEC 8FAE00BC */ lw $t6, 0xbc($sp) -/* 07F720 7F04ABF0 ACCE0004 */ sw $t6, 4($a2) -.L7F04ABF4: -/* 07F724 7F04ABF4 8FBF004C */ lw $ra, 0x4c($sp) -.L7F04ABF8: -/* 07F728 7F04ABF8 8FA200BC */ lw $v0, 0xbc($sp) -/* 07F72C 7F04ABFC D7B40020 */ ldc1 $f20, 0x20($sp) -/* 07F730 7F04AC00 D7B60028 */ ldc1 $f22, 0x28($sp) -/* 07F734 7F04AC04 D7B80030 */ ldc1 $f24, 0x30($sp) -/* 07F738 7F04AC08 D7BA0038 */ ldc1 $f26, 0x38($sp) -/* 07F73C 7F04AC0C 8FB00040 */ lw $s0, 0x40($sp) -/* 07F740 7F04AC10 8FB10044 */ lw $s1, 0x44($sp) -/* 07F744 7F04AC14 8FB20048 */ lw $s2, 0x48($sp) -/* 07F748 7F04AC18 03E00008 */ jr $ra -/* 07F74C 7F04AC1C 27BD00B0 */ addiu $sp, $sp, 0xb0 -) -#endif -#endif - - - - -#ifdef NONMATCHING -void sub_GAME_7F04AC20(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04AC20 -/* 07F750 7F04AC20 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 07F754 7F04AC24 AFBF0024 */ sw $ra, 0x24($sp) -/* 07F758 7F04AC28 AFB00020 */ sw $s0, 0x20($sp) -/* 07F75C 7F04AC2C AFA40078 */ sw $a0, 0x78($sp) -/* 07F760 7F04AC30 AFA60080 */ sw $a2, 0x80($sp) -/* 07F764 7F04AC34 908F0001 */ lbu $t7, 1($a0) -/* 07F768 7F04AC38 00A08025 */ move $s0, $a1 -/* 07F76C 7F04AC3C 31F80002 */ andi $t8, $t7, 2 -/* 07F770 7F04AC40 5300013F */ beql $t8, $zero, .L7F04B140 -/* 07F774 7F04AC44 8FBF0024 */ lw $ra, 0x24($sp) -/* 07F778 7F04AC48 8C990004 */ lw $t9, 4($a0) -/* 07F77C 7F04AC4C AFB90074 */ sw $t9, 0x74($sp) -/* 07F780 7F04AC50 8F280014 */ lw $t0, 0x14($t9) -/* 07F784 7F04AC54 AFA80070 */ sw $t0, 0x70($sp) -/* 07F788 7F04AC58 8F290008 */ lw $t1, 8($t9) -/* 07F78C 7F04AC5C 312A0200 */ andi $t2, $t1, 0x200 -/* 07F790 7F04AC60 000A582B */ sltu $t3, $zero, $t2 -/* 07F794 7F04AC64 11600005 */ beqz $t3, .L7F04AC7C -/* 07F798 7F04AC68 AFAB0028 */ sw $t3, 0x28($sp) -/* 07F79C 7F04AC6C 0FC1E0E5 */ jal get_BONDdata_field_10E0 -/* 07F7A0 7F04AC70 00000000 */ nop -/* 07F7A4 7F04AC74 0002602B */ sltu $t4, $zero, $v0 -/* 07F7A8 7F04AC78 AFAC0028 */ sw $t4, 0x28($sp) -.L7F04AC7C: -/* 07F7AC 7F04AC7C 8FAD0074 */ lw $t5, 0x74($sp) -/* 07F7B0 7F04AC80 2401000A */ li $at, 10 -/* 07F7B4 7F04AC84 8E07000C */ lw $a3, 0xc($s0) -/* 07F7B8 7F04AC88 91A30003 */ lbu $v1, 3($t5) -/* 07F7BC 7F04AC8C 54610022 */ bnel $v1, $at, .L7F04AD18 -/* 07F7C0 7F04AC90 2401000B */ li $at, 11 -/* 07F7C4 7F04AC94 8E0F0008 */ lw $t7, 8($s0) -/* 07F7C8 7F04AC98 8FA40070 */ lw $a0, 0x70($sp) -/* 07F7CC 7F04AC9C 31F80001 */ andi $t8, $t7, 1 -/* 07F7D0 7F04ACA0 53000075 */ beql $t8, $zero, .L7F04AE78 -/* 07F7D4 7F04ACA4 24010001 */ li $at, 1 -/* 07F7D8 7F04ACA8 8DA8000C */ lw $t0, 0xc($t5) -/* 07F7DC 7F04ACAC 8FAE0078 */ lw $t6, 0x78($sp) -/* 07F7E0 7F04ACB0 8FA90074 */ lw $t1, 0x74($sp) -/* 07F7E4 7F04ACB4 0008CBC0 */ sll $t9, $t0, 0xf -/* 07F7E8 7F04ACB8 07210003 */ bgez $t9, .L7F04ACC8 -/* 07F7EC 7F04ACBC 8DC20004 */ lw $v0, 4($t6) -/* 07F7F0 7F04ACC0 10000008 */ b .L7F04ACE4 -/* 07F7F4 7F04ACC4 00001825 */ move $v1, $zero -.L7F04ACC8: -/* 07F7F8 7F04ACC8 8D2A0008 */ lw $t2, 8($t1) -/* 07F7FC 7F04ACCC 24030001 */ li $v1, 1 -/* 07F800 7F04ACD0 000A58C0 */ sll $t3, $t2, 3 -/* 07F804 7F04ACD4 05610003 */ bgez $t3, .L7F04ACE4 -/* 07F808 7F04ACD8 00000000 */ nop -/* 07F80C 7F04ACDC 10000001 */ b .L7F04ACE4 -/* 07F810 7F04ACE0 24030008 */ li $v1, 8 -.L7F04ACE4: -/* 07F814 7F04ACE4 8C8F0008 */ lw $t7, 8($a0) -/* 07F818 7F04ACE8 240E0001 */ li $t6, 1 -/* 07F81C 7F04ACEC 24460080 */ addiu $a2, $v0, 0x80 -/* 07F820 7F04ACF0 8DF80008 */ lw $t8, 8($t7) -/* 07F824 7F04ACF4 8F050000 */ lw $a1, ($t8) -/* 07F828 7F04ACF8 AFAE0014 */ sw $t6, 0x14($sp) -/* 07F82C 7F04ACFC 0FC127D2 */ jal process_monitor_animation_microcode -/* 07F830 7F04AD00 AFA30010 */ sw $v1, 0x10($sp) -/* 07F834 7F04AD04 8FAD0074 */ lw $t5, 0x74($sp) -/* 07F838 7F04AD08 00403825 */ move $a3, $v0 -/* 07F83C 7F04AD0C 10000059 */ b .L7F04AE74 -/* 07F840 7F04AD10 91A30003 */ lbu $v1, 3($t5) -/* 07F844 7F04AD14 2401000B */ li $at, 11 -.L7F04AD18: -/* 07F848 7F04AD18 54610057 */ bnel $v1, $at, .L7F04AE78 -/* 07F84C 7F04AD1C 24010001 */ li $at, 1 -/* 07F850 7F04AD20 8E080008 */ lw $t0, 8($s0) -/* 07F854 7F04AD24 8FAA0074 */ lw $t2, 0x74($sp) -/* 07F858 7F04AD28 8FA40070 */ lw $a0, 0x70($sp) -/* 07F85C 7F04AD2C 31190001 */ andi $t9, $t0, 1 -/* 07F860 7F04AD30 53200051 */ beql $t9, $zero, .L7F04AE78 -/* 07F864 7F04AD34 24010001 */ li $at, 1 -/* 07F868 7F04AD38 8D4B000C */ lw $t3, 0xc($t2) -/* 07F86C 7F04AD3C 8FA90078 */ lw $t1, 0x78($sp) -/* 07F870 7F04AD40 8FAF0074 */ lw $t7, 0x74($sp) -/* 07F874 7F04AD44 000B63C0 */ sll $t4, $t3, 0xf -/* 07F878 7F04AD48 05810003 */ bgez $t4, .L7F04AD58 -/* 07F87C 7F04AD4C 8D220004 */ lw $v0, 4($t1) -/* 07F880 7F04AD50 10000008 */ b .L7F04AD74 -/* 07F884 7F04AD54 00001825 */ move $v1, $zero -.L7F04AD58: -/* 07F888 7F04AD58 8DF80008 */ lw $t8, 8($t7) -/* 07F88C 7F04AD5C 24030001 */ li $v1, 1 -/* 07F890 7F04AD60 001870C0 */ sll $t6, $t8, 3 -/* 07F894 7F04AD64 05C10003 */ bgez $t6, .L7F04AD74 -/* 07F898 7F04AD68 00000000 */ nop -/* 07F89C 7F04AD6C 10000001 */ b .L7F04AD74 -/* 07F8A0 7F04AD70 24030008 */ li $v1, 8 -.L7F04AD74: -/* 07F8A4 7F04AD74 8C880008 */ lw $t0, 8($a0) -/* 07F8A8 7F04AD78 24090001 */ li $t1, 1 -/* 07F8AC 7F04AD7C 24460080 */ addiu $a2, $v0, 0x80 -/* 07F8B0 7F04AD80 8D190008 */ lw $t9, 8($t0) -/* 07F8B4 7F04AD84 8F250000 */ lw $a1, ($t9) -/* 07F8B8 7F04AD88 AFA20058 */ sw $v0, 0x58($sp) -/* 07F8BC 7F04AD8C AFA90014 */ sw $t1, 0x14($sp) -/* 07F8C0 7F04AD90 0FC127D2 */ jal process_monitor_animation_microcode -/* 07F8C4 7F04AD94 AFA30010 */ sw $v1, 0x10($sp) -/* 07F8C8 7F04AD98 8FAA0074 */ lw $t2, 0x74($sp) -/* 07F8CC 7F04AD9C 00403825 */ move $a3, $v0 -/* 07F8D0 7F04ADA0 8FAF0074 */ lw $t7, 0x74($sp) -/* 07F8D4 7F04ADA4 8D4B000C */ lw $t3, 0xc($t2) -/* 07F8D8 7F04ADA8 8FA40070 */ lw $a0, 0x70($sp) -/* 07F8DC 7F04ADAC 000B63C0 */ sll $t4, $t3, 0xf -/* 07F8E0 7F04ADB0 05830004 */ bgezl $t4, .L7F04ADC4 -/* 07F8E4 7F04ADB4 8DF80008 */ lw $t8, 8($t7) -/* 07F8E8 7F04ADB8 10000009 */ b .L7F04ADE0 -/* 07F8EC 7F04ADBC 00001825 */ move $v1, $zero -/* 07F8F0 7F04ADC0 8DF80008 */ lw $t8, 8($t7) -.L7F04ADC4: -/* 07F8F4 7F04ADC4 3C013000 */ lui $at, 0x3000 -/* 07F8F8 7F04ADC8 24030001 */ li $v1, 1 -/* 07F8FC 7F04ADCC 03017024 */ and $t6, $t8, $at -/* 07F900 7F04ADD0 11C00003 */ beqz $t6, .L7F04ADE0 -/* 07F904 7F04ADD4 00000000 */ nop -/* 07F908 7F04ADD8 10000001 */ b .L7F04ADE0 -/* 07F90C 7F04ADDC 24030008 */ li $v1, 8 -.L7F04ADE0: -/* 07F910 7F04ADE0 8C880008 */ lw $t0, 8($a0) -/* 07F914 7F04ADE4 8FA60058 */ lw $a2, 0x58($sp) -/* 07F918 7F04ADE8 24090001 */ li $t1, 1 -/* 07F91C 7F04ADEC 8D190008 */ lw $t9, 8($t0) -/* 07F920 7F04ADF0 24C600F4 */ addiu $a2, $a2, 0xf4 -/* 07F924 7F04ADF4 8F250004 */ lw $a1, 4($t9) -/* 07F928 7F04ADF8 AFA30060 */ sw $v1, 0x60($sp) -/* 07F92C 7F04ADFC AFA90014 */ sw $t1, 0x14($sp) -/* 07F930 7F04AE00 0FC127D2 */ jal process_monitor_animation_microcode -/* 07F934 7F04AE04 AFA30010 */ sw $v1, 0x10($sp) -/* 07F938 7F04AE08 8FA40070 */ lw $a0, 0x70($sp) -/* 07F93C 7F04AE0C 8FA30060 */ lw $v1, 0x60($sp) -/* 07F940 7F04AE10 8FA60058 */ lw $a2, 0x58($sp) -/* 07F944 7F04AE14 8C8B0008 */ lw $t3, 8($a0) -/* 07F948 7F04AE18 240F0001 */ li $t7, 1 -/* 07F94C 7F04AE1C 00403825 */ move $a3, $v0 -/* 07F950 7F04AE20 8D6C0008 */ lw $t4, 8($t3) -/* 07F954 7F04AE24 24C60168 */ addiu $a2, $a2, 0x168 -/* 07F958 7F04AE28 8D850008 */ lw $a1, 8($t4) -/* 07F95C 7F04AE2C AFAF0014 */ sw $t7, 0x14($sp) -/* 07F960 7F04AE30 0FC127D2 */ jal process_monitor_animation_microcode -/* 07F964 7F04AE34 AFA30010 */ sw $v1, 0x10($sp) -/* 07F968 7F04AE38 8FA40070 */ lw $a0, 0x70($sp) -/* 07F96C 7F04AE3C 8FA30060 */ lw $v1, 0x60($sp) -/* 07F970 7F04AE40 8FA60058 */ lw $a2, 0x58($sp) -/* 07F974 7F04AE44 8C8E0008 */ lw $t6, 8($a0) -/* 07F978 7F04AE48 24080001 */ li $t0, 1 -/* 07F97C 7F04AE4C 00403825 */ move $a3, $v0 -/* 07F980 7F04AE50 8DCD0008 */ lw $t5, 8($t6) -/* 07F984 7F04AE54 24C601DC */ addiu $a2, $a2, 0x1dc -/* 07F988 7F04AE58 8DA5000C */ lw $a1, 0xc($t5) -/* 07F98C 7F04AE5C AFA80014 */ sw $t0, 0x14($sp) -/* 07F990 7F04AE60 0FC127D2 */ jal process_monitor_animation_microcode -/* 07F994 7F04AE64 AFA30010 */ sw $v1, 0x10($sp) -/* 07F998 7F04AE68 8FB90074 */ lw $t9, 0x74($sp) -/* 07F99C 7F04AE6C 00403825 */ move $a3, $v0 -/* 07F9A0 7F04AE70 93230003 */ lbu $v1, 3($t9) -.L7F04AE74: -/* 07F9A4 7F04AE74 24010001 */ li $at, 1 -.L7F04AE78: -/* 07F9A8 7F04AE78 1461001A */ bne $v1, $at, .L7F04AEE4 -/* 07F9AC 7F04AE7C 8FA40074 */ lw $a0, 0x74($sp) -/* 07F9B0 7F04AE80 8FA90078 */ lw $t1, 0x78($sp) -/* 07F9B4 7F04AE84 00E01025 */ move $v0, $a3 -/* 07F9B8 7F04AE88 3C0AB600 */ lui $t2, 0xb600 -/* 07F9BC 7F04AE8C 8D230004 */ lw $v1, 4($t1) -/* 07F9C0 7F04AE90 240B3000 */ li $t3, 12288 -/* 07F9C4 7F04AE94 AC4B0004 */ sw $t3, 4($v0) -/* 07F9C8 7F04AE98 AC4A0000 */ sw $t2, ($v0) -/* 07F9CC 7F04AE9C 946C0098 */ lhu $t4, 0x98($v1) -/* 07F9D0 7F04AEA0 24E70008 */ addiu $a3, $a3, 8 -/* 07F9D4 7F04AEA4 24180002 */ li $t8, 2 -/* 07F9D8 7F04AEA8 318F0008 */ andi $t7, $t4, 8 -/* 07F9DC 7F04AEAC 11E00003 */ beqz $t7, .L7F04AEBC -/* 07F9E0 7F04AEB0 240E0003 */ li $t6, 3 -/* 07F9E4 7F04AEB4 10000002 */ b .L7F04AEC0 -/* 07F9E8 7F04AEB8 AE18003C */ sw $t8, 0x3c($s0) -.L7F04AEBC: -/* 07F9EC 7F04AEBC AE0E003C */ sw $t6, 0x3c($s0) -.L7F04AEC0: -/* 07F9F0 7F04AEC0 8E0D0030 */ lw $t5, 0x30($s0) -/* 07F9F4 7F04AEC4 24010009 */ li $at, 9 -/* 07F9F8 7F04AEC8 55A1004B */ bnel $t5, $at, .L7F04AFF8 -/* 07F9FC 7F04AECC 8FB90028 */ lw $t9, 0x28($sp) -/* 07FA00 7F04AED0 8E080034 */ lw $t0, 0x34($s0) -/* 07FA04 7F04AED4 2401FF00 */ li $at, -256 -/* 07FA08 7F04AED8 0101C824 */ and $t9, $t0, $at -/* 07FA0C 7F04AEDC 10000045 */ b .L7F04AFF4 -/* 07FA10 7F04AEE0 AE190034 */ sw $t9, 0x34($s0) -.L7F04AEE4: -/* 07FA14 7F04AEE4 0FC12D1E */ jal sub_GAME_7F04B478 -/* 07FA18 7F04AEE8 AFA70064 */ sw $a3, 0x64($sp) -/* 07FA1C 7F04AEEC 8FA70064 */ lw $a3, 0x64($sp) -/* 07FA20 7F04AEF0 1040000F */ beqz $v0, .L7F04AF30 -/* 07FA24 7F04AEF4 00002825 */ move $a1, $zero -/* 07FA28 7F04AEF8 8C430004 */ lw $v1, 4($v0) -/* 07FA2C 7F04AEFC 8FA90074 */ lw $t1, 0x74($sp) -/* 07FA30 7F04AF00 5060000C */ beql $v1, $zero, .L7F04AF34 -/* 07FA34 7F04AF04 8FA40074 */ lw $a0, 0x74($sp) -/* 07FA38 7F04AF08 8D2A0014 */ lw $t2, 0x14($t1) -/* 07FA3C 7F04AF0C 946C001A */ lhu $t4, 0x1a($v1) -/* 07FA40 7F04AF10 8C780008 */ lw $t8, 8($v1) -/* 07FA44 7F04AF14 8D4B0010 */ lw $t3, 0x10($t2) -/* 07FA48 7F04AF18 000C7880 */ sll $t7, $t4, 2 -/* 07FA4C 7F04AF1C 016F1021 */ addu $v0, $t3, $t7 -/* 07FA50 7F04AF20 8C4E0000 */ lw $t6, ($v0) -/* 07FA54 7F04AF24 530E0003 */ beql $t8, $t6, .L7F04AF34 -/* 07FA58 7F04AF28 8FA40074 */ lw $a0, 0x74($sp) -/* 07FA5C 7F04AF2C 24050001 */ li $a1, 1 -.L7F04AF30: -/* 07FA60 7F04AF30 8FA40074 */ lw $a0, 0x74($sp) -.L7F04AF34: -/* 07FA64 7F04AF34 AFA50040 */ sw $a1, 0x40($sp) -/* 07FA68 7F04AF38 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 07FA6C 7F04AF3C AFA70064 */ sw $a3, 0x64($sp) -/* 07FA70 7F04AF40 8FA50040 */ lw $a1, 0x40($sp) -/* 07FA74 7F04AF44 10400003 */ beqz $v0, .L7F04AF54 -/* 07FA78 7F04AF48 8FA70064 */ lw $a3, 0x64($sp) -/* 07FA7C 7F04AF4C 14A0000B */ bnez $a1, .L7F04AF7C -/* 07FA80 7F04AF50 8FA40074 */ lw $a0, 0x74($sp) -.L7F04AF54: -/* 07FA84 7F04AF54 8E080030 */ lw $t0, 0x30($s0) -/* 07FA88 7F04AF58 240D0003 */ li $t5, 3 -/* 07FA8C 7F04AF5C 24010009 */ li $at, 9 -/* 07FA90 7F04AF60 15010024 */ bne $t0, $at, .L7F04AFF4 -/* 07FA94 7F04AF64 AE0D003C */ sw $t5, 0x3c($s0) -/* 07FA98 7F04AF68 8E190034 */ lw $t9, 0x34($s0) -/* 07FA9C 7F04AF6C 2401FF00 */ li $at, -256 -/* 07FAA0 7F04AF70 03214824 */ and $t1, $t9, $at -/* 07FAA4 7F04AF74 1000001F */ b .L7F04AFF4 -/* 07FAA8 7F04AF78 AE090034 */ sw $t1, 0x34($s0) -.L7F04AF7C: -/* 07FAAC 7F04AF7C 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 07FAB0 7F04AF80 AFA70064 */ sw $a3, 0x64($sp) -/* 07FAB4 7F04AF84 8E0C0030 */ lw $t4, 0x30($s0) -/* 07FAB8 7F04AF88 8FA70064 */ lw $a3, 0x64($sp) -/* 07FABC 7F04AF8C 240A0001 */ li $t2, 1 -/* 07FAC0 7F04AF90 24010009 */ li $at, 9 -/* 07FAC4 7F04AF94 15810012 */ bne $t4, $at, .L7F04AFE0 -/* 07FAC8 7F04AF98 AE0A003C */ sw $t2, 0x3c($s0) -/* 07FACC 7F04AF9C 00021880 */ sll $v1, $v0, 2 -/* 07FAD0 7F04AFA0 00621823 */ subu $v1, $v1, $v0 -/* 07FAD4 7F04AFA4 000318C0 */ sll $v1, $v1, 3 -/* 07FAD8 7F04AFA8 00621821 */ addu $v1, $v1, $v0 -/* 07FADC 7F04AFAC 00031840 */ sll $v1, $v1, 1 -/* 07FAE0 7F04AFB0 24640064 */ addiu $a0, $v1, 0x64 -/* 07FAE4 7F04AFB4 28810100 */ slti $at, $a0, 0x100 -/* 07FAE8 7F04AFB8 54200003 */ bnezl $at, .L7F04AFC8 -/* 07FAEC 7F04AFBC 8E0B0034 */ lw $t3, 0x34($s0) -/* 07FAF0 7F04AFC0 240400FF */ li $a0, 255 -/* 07FAF4 7F04AFC4 8E0B0034 */ lw $t3, 0x34($s0) -.L7F04AFC8: -/* 07FAF8 7F04AFC8 2401FF00 */ li $at, -256 -/* 07FAFC 7F04AFCC 01617824 */ and $t7, $t3, $at -/* 07FB00 7F04AFD0 AE0F0034 */ sw $t7, 0x34($s0) -/* 07FB04 7F04AFD4 01E47025 */ or $t6, $t7, $a0 -/* 07FB08 7F04AFD8 10000006 */ b .L7F04AFF4 -/* 07FB0C 7F04AFDC AE0E0034 */ sw $t6, 0x34($s0) -.L7F04AFE0: -/* 07FB10 7F04AFE0 58400005 */ blezl $v0, .L7F04AFF8 -/* 07FB14 7F04AFE4 8FB90028 */ lw $t9, 0x28($sp) -/* 07FB18 7F04AFE8 8E0D0034 */ lw $t5, 0x34($s0) -/* 07FB1C 7F04AFEC 35A8FF00 */ ori $t0, $t5, 0xff00 -/* 07FB20 7F04AFF0 AE080034 */ sw $t0, 0x34($s0) -.L7F04AFF4: -/* 07FB24 7F04AFF4 8FB90028 */ lw $t9, 0x28($sp) -.L7F04AFF8: -/* 07FB28 7F04AFF8 3C090103 */ lui $t1, (0x01030040 >> 16) # lui $t1, 0x103 -/* 07FB2C 7F04AFFC 35290040 */ ori $t1, (0x01030040 & 0xFFFF) # ori $t1, $t1, 0x40 -/* 07FB30 7F04B000 13200009 */ beqz $t9, .L7F04B028 -/* 07FB34 7F04B004 00E01825 */ move $v1, $a3 -/* 07FB38 7F04B008 24E70008 */ addiu $a3, $a3, 8 -/* 07FB3C 7F04B00C AC690000 */ sw $t1, ($v1) -/* 07FB40 7F04B010 AFA70064 */ sw $a3, 0x64($sp) -/* 07FB44 7F04B014 0FC1E0E5 */ jal get_BONDdata_field_10E0 -/* 07FB48 7F04B018 AFA30034 */ sw $v1, 0x34($sp) -/* 07FB4C 7F04B01C 8FA30034 */ lw $v1, 0x34($sp) -/* 07FB50 7F04B020 8FA70064 */ lw $a3, 0x64($sp) -/* 07FB54 7F04B024 AC620004 */ sw $v0, 4($v1) -.L7F04B028: -/* 07FB58 7F04B028 AE07000C */ sw $a3, 0xc($s0) -/* 07FB5C 7F04B02C 8FA50070 */ lw $a1, 0x70($sp) -/* 07FB60 7F04B030 0FC1D1A1 */ jal subdraw -/* 07FB64 7F04B034 02002025 */ move $a0, $s0 -/* 07FB68 7F04B038 8FA30074 */ lw $v1, 0x74($sp) -/* 07FB6C 7F04B03C 8E07000C */ lw $a3, 0xc($s0) -/* 07FB70 7F04B040 24010001 */ li $at, 1 -/* 07FB74 7F04B044 906A0003 */ lbu $t2, 3($v1) -/* 07FB78 7F04B048 3C0CB600 */ lui $t4, 0xb600 -/* 07FB7C 7F04B04C 240B3000 */ li $t3, 12288 -/* 07FB80 7F04B050 15410004 */ bne $t2, $at, .L7F04B064 -/* 07FB84 7F04B054 00E01025 */ move $v0, $a3 -/* 07FB88 7F04B058 24E70008 */ addiu $a3, $a3, 8 -/* 07FB8C 7F04B05C AC4C0000 */ sw $t4, ($v0) -/* 07FB90 7F04B060 AC4B0004 */ sw $t3, 4($v0) -.L7F04B064: -/* 07FB94 7F04B064 8FA60080 */ lw $a2, 0x80($sp) -/* 07FB98 7F04B068 906F0002 */ lbu $t7, 2($v1) -/* 07FB9C 7F04B06C 24180001 */ li $t8, 1 -/* 07FBA0 7F04B070 00D87004 */ sllv $t6, $t8, $a2 -/* 07FBA4 7F04B074 01EE6824 */ and $t5, $t7, $t6 -/* 07FBA8 7F04B078 11A00005 */ beqz $t5, .L7F04B090 -/* 07FBAC 7F04B07C 00E02025 */ move $a0, $a3 -/* 07FBB0 7F04B080 0FC286A5 */ jal sub_GAME_7F0A1A94 -/* 07FBB4 7F04B084 8FA50078 */ lw $a1, 0x78($sp) -/* 07FBB8 7F04B088 00403825 */ move $a3, $v0 -/* 07FBBC 7F04B08C 8FA60080 */ lw $a2, 0x80($sp) -.L7F04B090: -/* 07FBC0 7F04B090 8FA80028 */ lw $t0, 0x28($sp) -/* 07FBC4 7F04B094 3C190103 */ lui $t9, (0x01030040 >> 16) # lui $t9, 0x103 -/* 07FBC8 7F04B098 37390040 */ ori $t9, (0x01030040 & 0xFFFF) # ori $t9, $t9, 0x40 -/* 07FBCC 7F04B09C 1100000A */ beqz $t0, .L7F04B0C8 -/* 07FBD0 7F04B0A0 00E01825 */ move $v1, $a3 -/* 07FBD4 7F04B0A4 24E70008 */ addiu $a3, $a3, 8 -/* 07FBD8 7F04B0A8 AC790000 */ sw $t9, ($v1) -/* 07FBDC 7F04B0AC AFA70064 */ sw $a3, 0x64($sp) -/* 07FBE0 7F04B0B0 0FC1E0DD */ jal get_BONDdata_field_10D8 -/* 07FBE4 7F04B0B4 AFA3002C */ sw $v1, 0x2c($sp) -/* 07FBE8 7F04B0B8 8FA3002C */ lw $v1, 0x2c($sp) -/* 07FBEC 7F04B0BC 8FA70064 */ lw $a3, 0x64($sp) -/* 07FBF0 7F04B0C0 AC620004 */ sw $v0, 4($v1) -/* 07FBF4 7F04B0C4 8FA60080 */ lw $a2, 0x80($sp) -.L7F04B0C8: -/* 07FBF8 7F04B0C8 AE07000C */ sw $a3, 0xc($s0) -/* 07FBFC 7F04B0CC 8FA90078 */ lw $t1, 0x78($sp) -/* 07FC00 7F04B0D0 8D240020 */ lw $a0, 0x20($t1) -/* 07FC04 7F04B0D4 1080000A */ beqz $a0, .L7F04B100 -/* 07FC08 7F04B0D8 00000000 */ nop -/* 07FC0C 7F04B0DC 8FA60080 */ lw $a2, 0x80($sp) -.L7F04B0E0: -/* 07FC10 7F04B0E0 02002825 */ move $a1, $s0 -/* 07FC14 7F04B0E4 0FC12B08 */ jal sub_GAME_7F04AC20 -/* 07FC18 7F04B0E8 AFA40068 */ sw $a0, 0x68($sp) -/* 07FC1C 7F04B0EC 8FA40068 */ lw $a0, 0x68($sp) -/* 07FC20 7F04B0F0 8C840024 */ lw $a0, 0x24($a0) -/* 07FC24 7F04B0F4 5480FFFA */ bnezl $a0, .L7F04B0E0 -/* 07FC28 7F04B0F8 8FA60080 */ lw $a2, 0x80($sp) -/* 07FC2C 7F04B0FC 8FA60080 */ lw $a2, 0x80($sp) -.L7F04B100: -/* 07FC30 7F04B100 10C0000E */ beqz $a2, .L7F04B13C -/* 07FC34 7F04B104 8FAA0028 */ lw $t2, 0x28($sp) -/* 07FC38 7F04B108 11400008 */ beqz $t2, .L7F04B12C -/* 07FC3C 7F04B10C 8FA20070 */ lw $v0, 0x70($sp) -/* 07FC40 7F04B110 8FA20070 */ lw $v0, 0x70($sp) -/* 07FC44 7F04B114 8C4C0008 */ lw $t4, 8($v0) -/* 07FC48 7F04B118 8C44000C */ lw $a0, 0xc($v0) -/* 07FC4C 7F04B11C 0FC22FBB */ jal sub_GAME_7F08BEEC -/* 07FC50 7F04B120 8585000E */ lh $a1, 0xe($t4) -/* 07FC54 7F04B124 10000006 */ b .L7F04B140 -/* 07FC58 7F04B128 8FBF0024 */ lw $ra, 0x24($sp) -.L7F04B12C: -/* 07FC5C 7F04B12C 8C4B0008 */ lw $t3, 8($v0) -/* 07FC60 7F04B130 8C44000C */ lw $a0, 0xc($v0) -/* 07FC64 7F04B134 0FC22F52 */ jal sub_GAME_7F08BD48 -/* 07FC68 7F04B138 8565000E */ lh $a1, 0xe($t3) -.L7F04B13C: -/* 07FC6C 7F04B13C 8FBF0024 */ lw $ra, 0x24($sp) -.L7F04B140: -/* 07FC70 7F04B140 8FB00020 */ lw $s0, 0x20($sp) -/* 07FC74 7F04B144 27BD0078 */ addiu $sp, $sp, 0x78 -/* 07FC78 7F04B148 03E00008 */ jr $ra -/* 07FC7C 7F04B14C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04B150(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04B150 -/* 07FC80 7F04B150 27BDFF40 */ addiu $sp, $sp, -0xc0 -/* 07FC84 7F04B154 3C0F8003 */ lui $t7, %hi(D_80031FD0) -/* 07FC88 7F04B158 AFBF0024 */ sw $ra, 0x24($sp) -/* 07FC8C 7F04B15C AFB00020 */ sw $s0, 0x20($sp) -/* 07FC90 7F04B160 AFA500C4 */ sw $a1, 0xc4($sp) -/* 07FC94 7F04B164 AFA600C8 */ sw $a2, 0xc8($sp) -/* 07FC98 7F04B168 25EF1FD0 */ addiu $t7, %lo(D_80031FD0) # addiu $t7, $t7, 0x1fd0 -/* 07FC9C 7F04B16C 8C900004 */ lw $s0, 4($a0) -/* 07FCA0 7F04B170 25E8003C */ addiu $t0, $t7, 0x3c -/* 07FCA4 7F04B174 27AE0068 */ addiu $t6, $sp, 0x68 -.L7F04B178: -/* 07FCA8 7F04B178 8DE10000 */ lw $at, ($t7) -/* 07FCAC 7F04B17C 25EF000C */ addiu $t7, $t7, 0xc -/* 07FCB0 7F04B180 25CE000C */ addiu $t6, $t6, 0xc -/* 07FCB4 7F04B184 ADC1FFF4 */ sw $at, -0xc($t6) -/* 07FCB8 7F04B188 8DE1FFF8 */ lw $at, -8($t7) -/* 07FCBC 7F04B18C ADC1FFF8 */ sw $at, -8($t6) -/* 07FCC0 7F04B190 8DE1FFFC */ lw $at, -4($t7) -/* 07FCC4 7F04B194 15E8FFF8 */ bne $t7, $t0, .L7F04B178 -/* 07FCC8 7F04B198 ADC1FFFC */ sw $at, -4($t6) -/* 07FCCC 7F04B19C 8DE10000 */ lw $at, ($t7) -/* 07FCD0 7F04B1A0 240900FF */ li $t1, 255 -/* 07FCD4 7F04B1A4 27A500B0 */ addiu $a1, $sp, 0xb0 -/* 07FCD8 7F04B1A8 ADC10000 */ sw $at, ($t6) -/* 07FCDC 7F04B1AC AFA9003C */ sw $t1, 0x3c($sp) -/* 07FCE0 7F04B1B0 0FC2ECE9 */ jal if_sky_present_convert_values -/* 07FCE4 7F04B1B4 AFA400C0 */ sw $a0, 0xc0($sp) -/* 07FCE8 7F04B1B8 14400003 */ bnez $v0, .L7F04B1C8 -/* 07FCEC 7F04B1BC AFA200AC */ sw $v0, 0xac($sp) -/* 07FCF0 7F04B1C0 100000A8 */ b .L7F04B464 -/* 07FCF4 7F04B1C4 8FA200C4 */ lw $v0, 0xc4($sp) -.L7F04B1C8: -/* 07FCF8 7F04B1C8 920A0003 */ lbu $t2, 3($s0) -/* 07FCFC 7F04B1CC 2401002F */ li $at, 47 -/* 07FD00 7F04B1D0 51410021 */ beql $t2, $at, .L7F04B258 -/* 07FD04 7F04B1D4 8FAD003C */ lw $t5, 0x3c($sp) -/* 07FD08 7F04B1D8 0FC1B403 */ jal getinstsize -/* 07FD0C 7F04B1DC 8E040014 */ lw $a0, 0x14($s0) -/* 07FD10 7F04B1E0 44050000 */ mfc1 $a1, $f0 -/* 07FD14 7F04B1E4 0FC152E0 */ jal sub_GAME_7F054B80 -/* 07FD18 7F04B1E8 8FA400C0 */ lw $a0, 0xc0($sp) -/* 07FD1C 7F04B1EC 8FAB00C0 */ lw $t3, 0xc0($sp) -/* 07FD20 7F04B1F0 46000086 */ mov.s $f2, $f0 -/* 07FD24 7F04B1F4 85620002 */ lh $v0, 2($t3) -/* 07FD28 7F04B1F8 1840000B */ blez $v0, .L7F04B228 -/* 07FD2C 7F04B1FC 2841003C */ slti $at, $v0, 0x3c -/* 07FD30 7F04B200 5020000A */ beql $at, $zero, .L7F04B22C -/* 07FD34 7F04B204 3C01437F */ lui $at, 0x437f -/* 07FD38 7F04B208 44822000 */ mtc1 $v0, $f4 -/* 07FD3C 7F04B20C 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 07FD40 7F04B210 44816000 */ mtc1 $at, $f12 -/* 07FD44 7F04B214 468021A0 */ cvt.s.w $f6, $f4 -/* 07FD48 7F04B218 46066201 */ sub.s $f8, $f12, $f6 -/* 07FD4C 7F04B21C 460C4283 */ div.s $f10, $f8, $f12 -/* 07FD50 7F04B220 460A0082 */ mul.s $f2, $f0, $f10 -/* 07FD54 7F04B224 00000000 */ nop -.L7F04B228: -/* 07FD58 7F04B228 3C01437F */ li $at, 0x437F0000 # 255.000000 -.L7F04B22C: -/* 07FD5C 7F04B22C 44818000 */ mtc1 $at, $f16 -/* 07FD60 7F04B230 00000000 */ nop -/* 07FD64 7F04B234 46101482 */ mul.s $f18, $f2, $f16 -/* 07FD68 7F04B238 4600910D */ trunc.w.s $f4, $f18 -/* 07FD6C 7F04B23C 44022000 */ mfc1 $v0, $f4 -/* 07FD70 7F04B240 00000000 */ nop -/* 07FD74 7F04B244 1C400003 */ bgtz $v0, .L7F04B254 -/* 07FD78 7F04B248 AFA2003C */ sw $v0, 0x3c($sp) -/* 07FD7C 7F04B24C 10000085 */ b .L7F04B464 -/* 07FD80 7F04B250 8FA200C4 */ lw $v0, 0xc4($sp) -.L7F04B254: -/* 07FD84 7F04B254 8FAD003C */ lw $t5, 0x3c($sp) -.L7F04B258: -/* 07FD88 7F04B258 8FA800C8 */ lw $t0, 0xc8($sp) -/* 07FD8C 7F04B25C 8FA400C0 */ lw $a0, 0xc0($sp) -/* 07FD90 7F04B260 29A100FF */ slti $at, $t5, 0xff -/* 07FD94 7F04B264 14200006 */ bnez $at, .L7F04B280 -/* 07FD98 7F04B268 27A50058 */ addiu $a1, $sp, 0x58 -/* 07FD9C 7F04B26C 8E19000C */ lw $t9, 0xc($s0) -/* 07FDA0 7F04B270 8FAF00C8 */ lw $t7, 0xc8($sp) -/* 07FDA4 7F04B274 0019C3C0 */ sll $t8, $t9, 0xf -/* 07FDA8 7F04B278 07010007 */ bgez $t8, .L7F04B298 -/* 07FDAC 7F04B27C 00000000 */ nop -.L7F04B280: -/* 07FDB0 7F04B280 15000003 */ bnez $t0, .L7F04B290 -/* 07FDB4 7F04B284 00000000 */ nop -/* 07FDB8 7F04B288 10000076 */ b .L7F04B464 -/* 07FDBC 7F04B28C 8FA200C4 */ lw $v0, 0xc4($sp) -.L7F04B290: -/* 07FDC0 7F04B290 10000005 */ b .L7F04B2A8 -/* 07FDC4 7F04B294 24030003 */ li $v1, 3 -.L7F04B298: -/* 07FDC8 7F04B298 15E00003 */ bnez $t7, .L7F04B2A8 -/* 07FDCC 7F04B29C 24030002 */ li $v1, 2 -/* 07FDD0 7F04B2A0 10000001 */ b .L7F04B2A8 -/* 07FDD4 7F04B2A4 24030001 */ li $v1, 1 -.L7F04B2A8: -/* 07FDD8 7F04B2A8 0FC15299 */ jal sub_GAME_7F054A64 -/* 07FDDC 7F04B2AC AFA30044 */ sw $v1, 0x44($sp) -/* 07FDE0 7F04B2B0 1840000E */ blez $v0, .L7F04B2EC -/* 07FDE4 7F04B2B4 8FA30044 */ lw $v1, 0x44($sp) -/* 07FDE8 7F04B2B8 8E0E000C */ lw $t6, 0xc($s0) -/* 07FDEC 7F04B2BC 8FA400C4 */ lw $a0, 0xc4($sp) -/* 07FDF0 7F04B2C0 8FA50058 */ lw $a1, 0x58($sp) -/* 07FDF4 7F04B2C4 000E4940 */ sll $t1, $t6, 5 -/* 07FDF8 7F04B2C8 05200008 */ bltz $t1, .L7F04B2EC -/* 07FDFC 7F04B2CC 8FA6005C */ lw $a2, 0x5c($sp) -/* 07FE00 7F04B2D0 C7A60064 */ lwc1 $f6, 0x64($sp) -/* 07FE04 7F04B2D4 8FA70060 */ lw $a3, 0x60($sp) -/* 07FE08 7F04B2D8 AFA30044 */ sw $v1, 0x44($sp) -/* 07FE0C 7F04B2DC 0FC2D3FD */ jal sub_GAME_7F0B4FF4 -/* 07FE10 7F04B2E0 E7A60010 */ swc1 $f6, 0x10($sp) -/* 07FE14 7F04B2E4 10000005 */ b .L7F04B2FC -/* 07FE18 7F04B2E8 8FA30044 */ lw $v1, 0x44($sp) -.L7F04B2EC: -/* 07FE1C 7F04B2EC 8FA400C4 */ lw $a0, 0xc4($sp) -/* 07FE20 7F04B2F0 0FC2D3ED */ jal sub_GAME_7F0B4FB4 -/* 07FE24 7F04B2F4 AFA30044 */ sw $v1, 0x44($sp) -/* 07FE28 7F04B2F8 8FA30044 */ lw $v1, 0x44($sp) -.L7F04B2FC: -/* 07FE2C 7F04B2FC AFA30070 */ sw $v1, 0x70($sp) -/* 07FE30 7F04B300 8E0A000C */ lw $t2, 0xc($s0) -/* 07FE34 7F04B304 8FAD003C */ lw $t5, 0x3c($sp) -/* 07FE38 7F04B308 3C010001 */ lui $at, 1 -/* 07FE3C 7F04B30C 01415824 */ and $t3, $t2, $at -/* 07FE40 7F04B310 2D6C0001 */ sltiu $t4, $t3, 1 -/* 07FE44 7F04B314 29A100FF */ slti $at, $t5, 0xff -/* 07FE48 7F04B318 AFAC006C */ sw $t4, 0x6c($sp) -/* 07FE4C 7F04B31C 10200005 */ beqz $at, .L7F04B334 -/* 07FE50 7F04B320 AFA20074 */ sw $v0, 0x74($sp) -/* 07FE54 7F04B324 24190005 */ li $t9, 5 -/* 07FE58 7F04B328 AFB90098 */ sw $t9, 0x98($sp) -/* 07FE5C 7F04B32C 10000017 */ b .L7F04B38C -/* 07FE60 7F04B330 AFAD009C */ sw $t5, 0x9c($sp) -.L7F04B334: -/* 07FE64 7F04B334 24180009 */ li $t8, 9 -/* 07FE68 7F04B338 AFB80098 */ sw $t8, 0x98($sp) -/* 07FE6C 7F04B33C 92020003 */ lbu $v0, 3($s0) -/* 07FE70 7F04B340 2401002F */ li $at, 47 -/* 07FE74 7F04B344 54410006 */ bnel $v0, $at, .L7F04B360 -/* 07FE78 7F04B348 24010001 */ li $at, 1 -/* 07FE7C 7F04B34C 8E080088 */ lw $t0, 0x88($s0) -/* 07FE80 7F04B350 00087A00 */ sll $t7, $t0, 8 -/* 07FE84 7F04B354 1000000D */ b .L7F04B38C -/* 07FE88 7F04B358 AFAF009C */ sw $t7, 0x9c($sp) -/* 07FE8C 7F04B35C 24010001 */ li $at, 1 -.L7F04B360: -/* 07FE90 7F04B360 5441000A */ bnel $v0, $at, .L7F04B38C -/* 07FE94 7F04B364 AFA0009C */ sw $zero, 0x9c($sp) -/* 07FE98 7F04B368 960E0098 */ lhu $t6, 0x98($s0) -/* 07FE9C 7F04B36C 31C90002 */ andi $t1, $t6, 2 -/* 07FEA0 7F04B370 51200006 */ beql $t1, $zero, .L7F04B38C -/* 07FEA4 7F04B374 AFA0009C */ sw $zero, 0x9c($sp) -/* 07FEA8 7F04B378 860A00BE */ lh $t2, 0xbe($s0) -/* 07FEAC 7F04B37C 000A5A00 */ sll $t3, $t2, 8 -/* 07FEB0 7F04B380 10000002 */ b .L7F04B38C -/* 07FEB4 7F04B384 AFAB009C */ sw $t3, 0x9c($sp) -/* 07FEB8 7F04B388 AFA0009C */ sw $zero, 0x9c($sp) -.L7F04B38C: -/* 07FEBC 7F04B38C 0FC0FFD8 */ jal sub_GAME_7F03FF60 -/* 07FEC0 7F04B390 02002025 */ move $a0, $s0 -/* 07FEC4 7F04B394 00026080 */ sll $t4, $v0, 2 -/* 07FEC8 7F04B398 01826021 */ addu $t4, $t4, $v0 -/* 07FECC 7F04B39C 000C6080 */ sll $t4, $t4, 2 -/* 07FED0 7F04B3A0 01826021 */ addu $t4, $t4, $v0 -/* 07FED4 7F04B3A4 241900FF */ li $t9, 255 -/* 07FED8 7F04B3A8 032C2023 */ subu $a0, $t9, $t4 -/* 07FEDC 7F04B3AC 04810002 */ bgez $a0, .L7F04B3B8 -/* 07FEE0 7F04B3B0 27A600B0 */ addiu $a2, $sp, 0xb0 -/* 07FEE4 7F04B3B4 00002025 */ move $a0, $zero -.L7F04B3B8: -/* 07FEE8 7F04B3B8 920D0078 */ lbu $t5, 0x78($s0) -/* 07FEEC 7F04B3BC 01A40019 */ multu $t5, $a0 -/* 07FEF0 7F04B3C0 00026900 */ sll $t5, $v0, 4 -/* 07FEF4 7F04B3C4 01A26823 */ subu $t5, $t5, $v0 -/* 07FEF8 7F04B3C8 0000C012 */ mflo $t8 -/* 07FEFC 7F04B3CC 00184203 */ sra $t0, $t8, 8 -/* 07FF00 7F04B3D0 AFA80048 */ sw $t0, 0x48($sp) -/* 07FF04 7F04B3D4 920F0079 */ lbu $t7, 0x79($s0) -/* 07FF08 7F04B3D8 01E40019 */ multu $t7, $a0 -/* 07FF0C 7F04B3DC 240F00FF */ li $t7, 255 -/* 07FF10 7F04B3E0 00007012 */ mflo $t6 -/* 07FF14 7F04B3E4 000E4A03 */ sra $t1, $t6, 8 -/* 07FF18 7F04B3E8 AFA9004C */ sw $t1, 0x4c($sp) -/* 07FF1C 7F04B3EC 920A007A */ lbu $t2, 0x7a($s0) -/* 07FF20 7F04B3F0 01440019 */ multu $t2, $a0 -/* 07FF24 7F04B3F4 27A40048 */ addiu $a0, $sp, 0x48 -/* 07FF28 7F04B3F8 00005812 */ mflo $t3 -/* 07FF2C 7F04B3FC 000BCA03 */ sra $t9, $t3, 8 -/* 07FF30 7F04B400 AFB90050 */ sw $t9, 0x50($sp) -/* 07FF34 7F04B404 920C007B */ lbu $t4, 0x7b($s0) -/* 07FF38 7F04B408 018DC021 */ addu $t8, $t4, $t5 -/* 07FF3C 7F04B40C 2B010100 */ slti $at, $t8, 0x100 -/* 07FF40 7F04B410 14200002 */ bnez $at, .L7F04B41C -/* 07FF44 7F04B414 AFB80054 */ sw $t8, 0x54($sp) -/* 07FF48 7F04B418 AFAF0054 */ sw $t7, 0x54($sp) -.L7F04B41C: -/* 07FF4C 7F04B41C 0FC100E1 */ jal sub_GAME_7F040384 -/* 07FF50 7F04B420 8FA500AC */ lw $a1, 0xac($sp) -/* 07FF54 7F04B424 8FA90048 */ lw $t1, 0x48($sp) -/* 07FF58 7F04B428 8FAE0054 */ lw $t6, 0x54($sp) -/* 07FF5C 7F04B42C 8FB9004C */ lw $t9, 0x4c($sp) -/* 07FF60 7F04B430 8FB80050 */ lw $t8, 0x50($sp) -/* 07FF64 7F04B434 00095600 */ sll $t2, $t1, 0x18 -/* 07FF68 7F04B438 01CA5825 */ or $t3, $t6, $t2 -/* 07FF6C 7F04B43C 00196400 */ sll $t4, $t9, 0x10 -/* 07FF70 7F04B440 016C6825 */ or $t5, $t3, $t4 -/* 07FF74 7F04B444 00184200 */ sll $t0, $t8, 8 -/* 07FF78 7F04B448 01A87825 */ or $t7, $t5, $t0 -/* 07FF7C 7F04B44C AFAF00A0 */ sw $t7, 0xa0($sp) -/* 07FF80 7F04B450 8FA400C0 */ lw $a0, 0xc0($sp) -/* 07FF84 7F04B454 27A50068 */ addiu $a1, $sp, 0x68 -/* 07FF88 7F04B458 0FC12B08 */ jal sub_GAME_7F04AC20 -/* 07FF8C 7F04B45C 8FA600C8 */ lw $a2, 0xc8($sp) -/* 07FF90 7F04B460 8FA20074 */ lw $v0, 0x74($sp) -.L7F04B464: -/* 07FF94 7F04B464 8FBF0024 */ lw $ra, 0x24($sp) -/* 07FF98 7F04B468 8FB00020 */ lw $s0, 0x20($sp) -/* 07FF9C 7F04B46C 27BD00C0 */ addiu $sp, $sp, 0xc0 -/* 07FFA0 7F04B470 03E00008 */ jr $ra -/* 07FFA4 7F04B474 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04B478(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04B478 -/* 07FFA8 7F04B478 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 07FFAC 7F04B47C AFBF002C */ sw $ra, 0x2c($sp) -/* 07FFB0 7F04B480 AFB50028 */ sw $s5, 0x28($sp) -/* 07FFB4 7F04B484 AFB40024 */ sw $s4, 0x24($sp) -/* 07FFB8 7F04B488 AFB30020 */ sw $s3, 0x20($sp) -/* 07FFBC 7F04B48C AFB2001C */ sw $s2, 0x1c($sp) -/* 07FFC0 7F04B490 AFB10018 */ sw $s1, 0x18($sp) -/* 07FFC4 7F04B494 AFB00014 */ sw $s0, 0x14($sp) -/* 07FFC8 7F04B498 8C8E0014 */ lw $t6, 0x14($a0) -/* 07FFCC 7F04B49C 00808825 */ move $s1, $a0 -/* 07FFD0 7F04B4A0 24120008 */ li $s2, 8 -/* 07FFD4 7F04B4A4 8DC20008 */ lw $v0, 8($t6) -/* 07FFD8 7F04B4A8 24130012 */ li $s3, 18 -/* 07FFDC 7F04B4AC 24140017 */ li $s4, 23 -/* 07FFE0 7F04B4B0 8C500000 */ lw $s0, ($v0) -/* 07FFE4 7F04B4B4 24150018 */ li $s5, 24 -/* 07FFE8 7F04B4B8 5200002C */ beql $s0, $zero, .L7F04B56C -/* 07FFEC 7F04B4BC 00001025 */ move $v0, $zero -/* 07FFF0 7F04B4C0 96020000 */ lhu $v0, ($s0) -.L7F04B4C4: -/* 07FFF4 7F04B4C4 02002825 */ move $a1, $s0 -/* 07FFF8 7F04B4C8 304F00FF */ andi $t7, $v0, 0xff -/* 07FFFC 7F04B4CC 11F2000B */ beq $t7, $s2, .L7F04B4FC -/* 080000 7F04B4D0 00000000 */ nop -/* 080004 7F04B4D4 11F3000D */ beq $t7, $s3, .L7F04B50C -/* 080008 7F04B4D8 02002825 */ move $a1, $s0 -/* 08000C 7F04B4DC 11F4000F */ beq $t7, $s4, .L7F04B51C -/* 080010 7F04B4E0 02002825 */ move $a1, $s0 -/* 080014 7F04B4E4 11F50003 */ beq $t7, $s5, .L7F04B4F4 -/* 080018 7F04B4E8 00000000 */ nop -/* 08001C 7F04B4EC 1000000E */ b .L7F04B528 -/* 080020 7F04B4F0 8E020014 */ lw $v0, 0x14($s0) -.L7F04B4F4: -/* 080024 7F04B4F4 1000001D */ b .L7F04B56C -/* 080028 7F04B4F8 02001025 */ move $v0, $s0 -.L7F04B4FC: -/* 08002C 7F04B4FC 0FC1BA5C */ jal sub_GAME_7F06E970 -/* 080030 7F04B500 8E240014 */ lw $a0, 0x14($s1) -/* 080034 7F04B504 10000008 */ b .L7F04B528 -/* 080038 7F04B508 8E020014 */ lw $v0, 0x14($s0) -.L7F04B50C: -/* 08003C 7F04B50C 0FC1BA6F */ jal process_12_handle_switch -/* 080040 7F04B510 8E240014 */ lw $a0, 0x14($s1) -/* 080044 7F04B514 10000004 */ b .L7F04B528 -/* 080048 7F04B518 8E020014 */ lw $v0, 0x14($s0) -.L7F04B51C: -/* 08004C 7F04B51C 0FC1BA82 */ jal process_17_pointer_to_head -/* 080050 7F04B520 8E240014 */ lw $a0, 0x14($s1) -/* 080054 7F04B524 8E020014 */ lw $v0, 0x14($s0) -.L7F04B528: -/* 080058 7F04B528 10400003 */ beqz $v0, .L7F04B538 -/* 08005C 7F04B52C 00000000 */ nop -/* 080060 7F04B530 1000000B */ b .L7F04B560 -/* 080064 7F04B534 00408025 */ move $s0, $v0 -.L7F04B538: -/* 080068 7F04B538 12000009 */ beqz $s0, .L7F04B560 -/* 08006C 7F04B53C 00000000 */ nop -/* 080070 7F04B540 8E02000C */ lw $v0, 0xc($s0) -.L7F04B544: -/* 080074 7F04B544 50400004 */ beql $v0, $zero, .L7F04B558 -/* 080078 7F04B548 8E100008 */ lw $s0, 8($s0) -/* 08007C 7F04B54C 10000004 */ b .L7F04B560 -/* 080080 7F04B550 00408025 */ move $s0, $v0 -/* 080084 7F04B554 8E100008 */ lw $s0, 8($s0) -.L7F04B558: -/* 080088 7F04B558 5600FFFA */ bnezl $s0, .L7F04B544 -/* 08008C 7F04B55C 8E02000C */ lw $v0, 0xc($s0) -.L7F04B560: -/* 080090 7F04B560 5600FFD8 */ bnezl $s0, .L7F04B4C4 -/* 080094 7F04B564 96020000 */ lhu $v0, ($s0) -/* 080098 7F04B568 00001025 */ move $v0, $zero -.L7F04B56C: -/* 08009C 7F04B56C 8FBF002C */ lw $ra, 0x2c($sp) -/* 0800A0 7F04B570 8FB00014 */ lw $s0, 0x14($sp) -/* 0800A4 7F04B574 8FB10018 */ lw $s1, 0x18($sp) -/* 0800A8 7F04B578 8FB2001C */ lw $s2, 0x1c($sp) -/* 0800AC 7F04B57C 8FB30020 */ lw $s3, 0x20($sp) -/* 0800B0 7F04B580 8FB40024 */ lw $s4, 0x24($sp) -/* 0800B4 7F04B584 8FB50028 */ lw $s5, 0x28($sp) -/* 0800B8 7F04B588 03E00008 */ jr $ra -/* 0800BC 7F04B58C 27BD0030 */ addiu $sp, $sp, 0x30 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04B590(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04B590 -/* 0800C0 7F04B590 8C820004 */ lw $v0, 4($a0) -/* 0800C4 7F04B594 3C0E8004 */ lui $t6, %hi(prop_console_one_screen_related) -/* 0800C8 7F04B598 25CEA070 */ addiu $t6, %lo(prop_console_one_screen_related) # addiu $t6, $t6, -0x5f90 -/* 0800CC 7F04B59C 15C20007 */ bne $t6, $v0, .L7F04B5BC -/* 0800D0 7F04B5A0 3C198004 */ lui $t9, %hi(prop_console_four_screen_related) -/* 0800D4 7F04B5A4 8C8F0008 */ lw $t7, 8($a0) -/* 0800D8 7F04B5A8 8DF80000 */ lw $t8, ($t7) -/* 0800DC 7F04B5AC 14B80003 */ bne $a1, $t8, .L7F04B5BC -/* 0800E0 7F04B5B0 00000000 */ nop -/* 0800E4 7F04B5B4 03E00008 */ jr $ra -/* 0800E8 7F04B5B8 00001025 */ move $v0, $zero - -.L7F04B5BC: -/* 0800EC 7F04B5BC 2739A084 */ addiu $t9, $t9, %lo(prop_console_four_screen_related) -/* 0800F0 7F04B5C0 57220011 */ bnel $t9, $v0, .L7F04B608 -/* 0800F4 7F04B5C4 24020001 */ li $v0, 1 -/* 0800F8 7F04B5C8 8C820008 */ lw $v0, 8($a0) -/* 0800FC 7F04B5CC 8C480000 */ lw $t0, ($v0) -/* 080100 7F04B5D0 10A8000A */ beq $a1, $t0, .L7F04B5FC -/* 080104 7F04B5D4 00000000 */ nop -/* 080108 7F04B5D8 8C490004 */ lw $t1, 4($v0) -/* 08010C 7F04B5DC 10A90007 */ beq $a1, $t1, .L7F04B5FC -/* 080110 7F04B5E0 00000000 */ nop -/* 080114 7F04B5E4 8C4A0008 */ lw $t2, 8($v0) -/* 080118 7F04B5E8 10AA0004 */ beq $a1, $t2, .L7F04B5FC -/* 08011C 7F04B5EC 00000000 */ nop -/* 080120 7F04B5F0 8C4B000C */ lw $t3, 0xc($v0) -/* 080124 7F04B5F4 54AB0004 */ bnel $a1, $t3, .L7F04B608 -/* 080128 7F04B5F8 24020001 */ li $v0, 1 -.L7F04B5FC: -/* 08012C 7F04B5FC 03E00008 */ jr $ra -/* 080130 7F04B600 00001025 */ move $v0, $zero - -/* 080134 7F04B604 24020001 */ li $v0, 1 -.L7F04B608: -/* 080138 7F04B608 03E00008 */ jr $ra -/* 08013C 7F04B60C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04B610(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04B610 -/* 080140 7F04B610 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 080144 7F04B614 AFB60030 */ sw $s6, 0x30($sp) -/* 080148 7F04B618 AFB40028 */ sw $s4, 0x28($sp) -/* 08014C 7F04B61C AFBF003C */ sw $ra, 0x3c($sp) -/* 080150 7F04B620 AFBE0038 */ sw $fp, 0x38($sp) -/* 080154 7F04B624 AFB70034 */ sw $s7, 0x34($sp) -/* 080158 7F04B628 AFB5002C */ sw $s5, 0x2c($sp) -/* 08015C 7F04B62C AFB30024 */ sw $s3, 0x24($sp) -/* 080160 7F04B630 AFB20020 */ sw $s2, 0x20($sp) -/* 080164 7F04B634 AFB1001C */ sw $s1, 0x1c($sp) -/* 080168 7F04B638 AFB00018 */ sw $s0, 0x18($sp) -/* 08016C 7F04B63C 3C14FFFE */ lui $s4, (0xFFFE7961 >> 16) # lui $s4, 0xfffe -/* 080170 7F04B640 3C160001 */ li $s6, 0x00010000 # 0.000000 -/* 080174 7F04B644 00A08025 */ move $s0, $a1 -/* 080178 7F04B648 0080F025 */ move $fp, $a0 -/* 08017C 7F04B64C 8C910014 */ lw $s1, 0x14($a0) -/* 080180 7F04B650 36D6869F */ ori $s6, (0x0001869F & 0xFFFF) # ori $s6, $s6, 0x869f -/* 080184 7F04B654 0FC12D1E */ jal sub_GAME_7F04B478 -/* 080188 7F04B658 36947961 */ ori $s4, (0xFFFE7961 & 0xFFFF) # ori $s4, $s4, 0x7961 -/* 08018C 7F04B65C 10400193 */ beqz $v0, .L7F04BCAC -/* 080190 7F04B660 00402825 */ move $a1, $v0 -/* 080194 7F04B664 8C550004 */ lw $s5, 4($v0) -/* 080198 7F04B668 52A00191 */ beql $s5, $zero, .L7F04BCB0 -/* 08019C 7F04B66C 8FBF003C */ lw $ra, 0x3c($sp) -/* 0801A0 7F04B670 8FCE0014 */ lw $t6, 0x14($fp) -/* 0801A4 7F04B674 0FC12D64 */ jal sub_GAME_7F04B590 -/* 0801A8 7F04B678 8DC40008 */ lw $a0, 8($t6) -/* 0801AC 7F04B67C 5040018C */ beql $v0, $zero, .L7F04BCB0 -/* 0801B0 7F04B680 8FBF003C */ lw $ra, 0x3c($sp) -/* 0801B4 7F04B684 96B8001A */ lhu $t8, 0x1a($s5) -/* 0801B8 7F04B688 8E2F0010 */ lw $t7, 0x10($s1) -/* 0801BC 7F04B68C 0018C880 */ sll $t9, $t8, 2 -/* 0801C0 7F04B690 0C002914 */ jal get_random_value -/* 0801C4 7F04B694 01F99821 */ addu $s3, $t7, $t9 -/* 0801C8 7F04B698 30480001 */ andi $t0, $v0, 1 -/* 0801CC 7F04B69C 1100000C */ beqz $t0, .L7F04B6D0 -/* 0801D0 7F04B6A0 00104840 */ sll $t1, $s0, 1 -/* 0801D4 7F04B6A4 AFA90040 */ sw $t1, 0x40($sp) -/* 0801D8 7F04B6A8 87CA0004 */ lh $t2, 4($fp) -/* 0801DC 7F04B6AC 3C0E8004 */ lui $t6, %hi(object_explosion_details+2) -/* 0801E0 7F04B6B0 000A58C0 */ sll $t3, $t2, 3 -/* 0801E4 7F04B6B4 016A5823 */ subu $t3, $t3, $t2 -/* 0801E8 7F04B6B8 000B5840 */ sll $t3, $t3, 1 -/* 0801EC 7F04B6BC 01696821 */ addu $t5, $t3, $t1 -/* 0801F0 7F04B6C0 01CD7021 */ addu $t6, $t6, $t5 -/* 0801F4 7F04B6C4 95CEB226 */ lhu $t6, %lo(object_explosion_details+2)($t6) -/* 0801F8 7F04B6C8 1000000C */ b .L7F04B6FC -/* 0801FC 7F04B6CC AFAE0078 */ sw $t6, 0x78($sp) -.L7F04B6D0: -/* 080200 7F04B6D0 87D80004 */ lh $t8, 4($fp) -/* 080204 7F04B6D4 00101040 */ sll $v0, $s0, 1 -/* 080208 7F04B6D8 3C088004 */ lui $t0, %hi(object_explosion_details+8) -/* 08020C 7F04B6DC 001878C0 */ sll $t7, $t8, 3 -/* 080210 7F04B6E0 01F87823 */ subu $t7, $t7, $t8 -/* 080214 7F04B6E4 000F7840 */ sll $t7, $t7, 1 -/* 080218 7F04B6E8 01E2C821 */ addu $t9, $t7, $v0 -/* 08021C 7F04B6EC 01194021 */ addu $t0, $t0, $t9 -/* 080220 7F04B6F0 9508B22C */ lhu $t0, %lo(object_explosion_details+8)($t0) -/* 080224 7F04B6F4 AFA20040 */ sw $v0, 0x40($sp) -/* 080228 7F04B6F8 AFA80078 */ sw $t0, 0x78($sp) -.L7F04B6FC: -/* 08022C 7F04B6FC 0FC243F1 */ jal get_debug_explosioninfo_flag -/* 080230 7F04B700 00000000 */ nop -/* 080234 7F04B704 14400003 */ bnez $v0, .L7F04B714 -/* 080238 7F04B708 8FA90078 */ lw $t1, 0x78($sp) -/* 08023C 7F04B70C 1520000B */ bnez $t1, .L7F04B73C -/* 080240 7F04B710 00000000 */ nop -.L7F04B714: -/* 080244 7F04B714 0FC243F1 */ jal get_debug_explosioninfo_flag -/* 080248 7F04B718 00000000 */ nop -/* 08024C 7F04B71C 0C002914 */ jal get_random_value -/* 080250 7F04B720 00000000 */ nop -/* 080254 7F04B724 0FC243F1 */ jal get_debug_explosioninfo_flag -/* 080258 7F04B728 AFA20078 */ sw $v0, 0x78($sp) -/* 08025C 7F04B72C 10400003 */ beqz $v0, .L7F04B73C -/* 080260 7F04B730 8FAA0078 */ lw $t2, 0x78($sp) -/* 080264 7F04B734 314BFFFF */ andi $t3, $t2, 0xffff -/* 080268 7F04B738 AFAB0078 */ sw $t3, 0x78($sp) -.L7F04B73C: -/* 08026C 7F04B73C 0FC28364 */ jal sub_GAME_7F0A0D90 -/* 080270 7F04B740 8FC40010 */ lw $a0, 0x10($fp) -/* 080274 7F04B744 87CC0004 */ lh $t4, 4($fp) -/* 080278 7F04B748 2401004C */ li $at, 76 -/* 08027C 7F04B74C 24170001 */ li $s7, 1 -/* 080280 7F04B750 15810003 */ bne $t4, $at, .L7F04B760 -/* 080284 7F04B754 00000000 */ nop -/* 080288 7F04B758 10000001 */ b .L7F04B760 -/* 08028C 7F04B75C 0000B825 */ move $s7, $zero -.L7F04B760: -/* 080290 7F04B760 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 080294 7F04B764 03C02025 */ move $a0, $fp -/* 080298 7F04B768 86A4000C */ lh $a0, 0xc($s5) -/* 08029C 7F04B76C 24050B0B */ li $a1, 2827 -/* 0802A0 7F04B770 8E260008 */ lw $a2, 8($s1) -/* 0802A4 7F04B774 0FC26F93 */ jal sub_GAME_7F09BE4C -/* 0802A8 7F04B778 00403825 */ move $a3, $v0 -/* 0802AC 7F04B77C 1040003A */ beqz $v0, .L7F04B868 -/* 0802B0 7F04B780 00408025 */ move $s0, $v0 -/* 0802B4 7F04B784 8E640000 */ lw $a0, ($s3) -/* 0802B8 7F04B788 8EAD0008 */ lw $t5, 8($s5) -/* 0802BC 7F04B78C 51A4001E */ beql $t5, $a0, .L7F04B808 -/* 0802C0 7F04B790 86AA000C */ lh $t2, 0xc($s5) -/* 0802C4 7F04B794 86AE000C */ lh $t6, 0xc($s5) -/* 0802C8 7F04B798 00009025 */ move $s2, $zero -/* 0802CC 7F04B79C 00008825 */ move $s1, $zero -/* 0802D0 7F04B7A0 19C00014 */ blez $t6, .L7F04B7F4 -/* 0802D4 7F04B7A4 00401825 */ move $v1, $v0 -/* 0802D8 7F04B7A8 8E780000 */ lw $t8, ($s3) -.L7F04B7AC: -/* 0802DC 7F04B7AC 26520001 */ addiu $s2, $s2, 1 -/* 0802E0 7F04B7B0 24630010 */ addiu $v1, $v1, 0x10 -/* 0802E4 7F04B7B4 03117821 */ addu $t7, $t8, $s1 -/* 0802E8 7F04B7B8 8DE10000 */ lw $at, ($t7) -/* 0802EC 7F04B7BC 26310010 */ addiu $s1, $s1, 0x10 -/* 0802F0 7F04B7C0 AC61FFF0 */ sw $at, -0x10($v1) -/* 0802F4 7F04B7C4 8DE80004 */ lw $t0, 4($t7) -/* 0802F8 7F04B7C8 AC68FFF4 */ sw $t0, -0xc($v1) -/* 0802FC 7F04B7CC 8DE10008 */ lw $at, 8($t7) -/* 080300 7F04B7D0 AC61FFF8 */ sw $at, -8($v1) -/* 080304 7F04B7D4 8DE8000C */ lw $t0, 0xc($t7) -/* 080308 7F04B7D8 AC68FFFC */ sw $t0, -4($v1) -/* 08030C 7F04B7DC 86A9000C */ lh $t1, 0xc($s5) -/* 080310 7F04B7E0 0249082A */ slt $at, $s2, $t1 -/* 080314 7F04B7E4 5420FFF1 */ bnezl $at, .L7F04B7AC -/* 080318 7F04B7E8 8E780000 */ lw $t8, ($s3) -/* 08031C 7F04B7EC 8E640000 */ lw $a0, ($s3) -/* 080320 7F04B7F0 00009025 */ move $s2, $zero -.L7F04B7F4: -/* 080324 7F04B7F4 0FC27011 */ jal sub_GAME_7F09C044 -/* 080328 7F04B7F8 00000000 */ nop -/* 08032C 7F04B7FC 10000018 */ b .L7F04B860 -/* 080330 7F04B800 00000000 */ nop -/* 080334 7F04B804 86AA000C */ lh $t2, 0xc($s5) -.L7F04B808: -/* 080338 7F04B808 00009025 */ move $s2, $zero -/* 08033C 7F04B80C 00008825 */ move $s1, $zero -/* 080340 7F04B810 19400013 */ blez $t2, .L7F04B860 -/* 080344 7F04B814 00401825 */ move $v1, $v0 -/* 080348 7F04B818 8EAB0008 */ lw $t3, 8($s5) -.L7F04B81C: -/* 08034C 7F04B81C 26520001 */ addiu $s2, $s2, 1 -/* 080350 7F04B820 24630010 */ addiu $v1, $v1, 0x10 -/* 080354 7F04B824 01716021 */ addu $t4, $t3, $s1 -/* 080358 7F04B828 8D810000 */ lw $at, ($t4) -/* 08035C 7F04B82C 26310010 */ addiu $s1, $s1, 0x10 -/* 080360 7F04B830 AC61FFF0 */ sw $at, -0x10($v1) -/* 080364 7F04B834 8D8E0004 */ lw $t6, 4($t4) -/* 080368 7F04B838 AC6EFFF4 */ sw $t6, -0xc($v1) -/* 08036C 7F04B83C 8D810008 */ lw $at, 8($t4) -/* 080370 7F04B840 AC61FFF8 */ sw $at, -8($v1) -/* 080374 7F04B844 8D8E000C */ lw $t6, 0xc($t4) -/* 080378 7F04B848 AC6EFFFC */ sw $t6, -4($v1) -/* 08037C 7F04B84C 86B8000C */ lh $t8, 0xc($s5) -/* 080380 7F04B850 0258082A */ slt $at, $s2, $t8 -/* 080384 7F04B854 5420FFF1 */ bnezl $at, .L7F04B81C -/* 080388 7F04B858 8EAB0008 */ lw $t3, 8($s5) -/* 08038C 7F04B85C 00009025 */ move $s2, $zero -.L7F04B860: -/* 080390 7F04B860 10000036 */ b .L7F04B93C -/* 080394 7F04B864 AE700000 */ sw $s0, ($s3) -.L7F04B868: -/* 080398 7F04B868 8E640000 */ lw $a0, ($s3) -/* 08039C 7F04B86C 8EB90008 */ lw $t9, 8($s5) -/* 0803A0 7F04B870 13240008 */ beq $t9, $a0, .L7F04B894 -/* 0803A4 7F04B874 00000000 */ nop -/* 0803A8 7F04B878 0FC27011 */ jal sub_GAME_7F09C044 -/* 0803AC 7F04B87C 00000000 */ nop -/* 0803B0 7F04B880 8EAF0008 */ lw $t7, 8($s5) -/* 0803B4 7F04B884 AE6F0000 */ sw $t7, ($s3) -/* 0803B8 7F04B888 8FC80064 */ lw $t0, 0x64($fp) -/* 0803BC 7F04B88C 35090004 */ ori $t1, $t0, 4 -/* 0803C0 7F04B890 AFC90064 */ sw $t1, 0x64($fp) -.L7F04B894: -/* 0803C4 7F04B894 3C018005 */ lui $at, %hi(D_80052CB4) -/* 0803C8 7F04B898 C4202CB4 */ lwc1 $f0, %lo(D_80052CB4)($at) -/* 0803CC 7F04B89C C7C40028 */ lwc1 $f4, 0x28($fp) -/* 0803D0 7F04B8A0 C7C8002C */ lwc1 $f8, 0x2c($fp) -/* 0803D4 7F04B8A4 C7D00030 */ lwc1 $f16, 0x30($fp) -/* 0803D8 7F04B8A8 46002182 */ mul.s $f6, $f4, $f0 -/* 0803DC 7F04B8AC 00000000 */ nop -/* 0803E0 7F04B8B0 46004282 */ mul.s $f10, $f8, $f0 -/* 0803E4 7F04B8B4 00000000 */ nop -/* 0803E8 7F04B8B8 46008482 */ mul.s $f18, $f16, $f0 -/* 0803EC 7F04B8BC E7C60028 */ swc1 $f6, 0x28($fp) -/* 0803F0 7F04B8C0 E7CA002C */ swc1 $f10, 0x2c($fp) -/* 0803F4 7F04B8C4 12E000F9 */ beqz $s7, .L7F04BCAC -/* 0803F8 7F04B8C8 E7D20030 */ swc1 $f18, 0x30($fp) -/* 0803FC 7F04B8CC 8FC20014 */ lw $v0, 0x14($fp) -/* 080400 7F04B8D0 C4440014 */ lwc1 $f4, 0x14($v0) -/* 080404 7F04B8D4 8C440008 */ lw $a0, 8($v0) -/* 080408 7F04B8D8 0FC0FFFE */ jal sub_GAME_7F03FFF8 -/* 08040C 7F04B8DC E7A4005C */ swc1 $f4, 0x5c($sp) -/* 080410 7F04B8E0 00408025 */ move $s0, $v0 -/* 080414 7F04B8E4 0FC0FA19 */ jal sub_GAME_7F03E864 -/* 080418 7F04B8E8 00402025 */ move $a0, $v0 -/* 08041C 7F04B8EC C7A6005C */ lwc1 $f6, 0x5c($sp) -/* 080420 7F04B8F0 3C018005 */ lui $at, %hi(D_80052CB8) -/* 080424 7F04B8F4 C42A2CB8 */ lwc1 $f10, %lo(D_80052CB8)($at) -/* 080428 7F04B8F8 46003202 */ mul.s $f8, $f6, $f0 -/* 08042C 7F04B8FC 8FC20010 */ lw $v0, 0x10($fp) -/* 080430 7F04B900 02002025 */ move $a0, $s0 -/* 080434 7F04B904 C452000C */ lwc1 $f18, 0xc($v0) -/* 080438 7F04B908 460A4402 */ mul.s $f16, $f8, $f10 -/* 08043C 7F04B90C 46109100 */ add.s $f4, $f18, $f16 -/* 080440 7F04B910 0FC0FA19 */ jal sub_GAME_7F03E864 -/* 080444 7F04B914 E444000C */ swc1 $f4, 0xc($v0) -/* 080448 7F04B918 C7A6005C */ lwc1 $f6, 0x5c($sp) -/* 08044C 7F04B91C 3C018005 */ lui $at, %hi(D_80052CBC) -/* 080450 7F04B920 C42A2CBC */ lwc1 $f10, %lo(D_80052CBC)($at) -/* 080454 7F04B924 46003202 */ mul.s $f8, $f6, $f0 -/* 080458 7F04B928 C7D0005C */ lwc1 $f16, 0x5c($fp) -/* 08045C 7F04B92C 460A4482 */ mul.s $f18, $f8, $f10 -/* 080460 7F04B930 46128100 */ add.s $f4, $f16, $f18 -/* 080464 7F04B934 100000DD */ b .L7F04BCAC -/* 080468 7F04B938 E7C4005C */ swc1 $f4, 0x5c($fp) -.L7F04B93C: -/* 08046C 7F04B93C 87C20004 */ lh $v0, 4($fp) -/* 080470 7F04B940 24010026 */ li $at, 38 -/* 080474 7F04B944 00008825 */ move $s1, $zero -/* 080478 7F04B948 10410005 */ beq $v0, $at, .L7F04B960 -/* 08047C 7F04B94C 24010027 */ li $at, 39 -/* 080480 7F04B950 10410003 */ beq $v0, $at, .L7F04B960 -/* 080484 7F04B954 24010055 */ li $at, 85 -/* 080488 7F04B958 14410003 */ bne $v0, $at, .L7F04B968 -/* 08048C 7F04B95C 240A0001 */ li $t2, 1 -.L7F04B960: -/* 080490 7F04B960 10000002 */ b .L7F04B96C -/* 080494 7F04B964 AFA00070 */ sw $zero, 0x70($sp) -.L7F04B968: -/* 080498 7F04B968 AFAA0070 */ sw $t2, 0x70($sp) -.L7F04B96C: -/* 08049C 7F04B96C 86A4000C */ lh $a0, 0xc($s5) -/* 0804A0 7F04B970 8FA50040 */ lw $a1, 0x40($sp) -/* 0804A4 7F04B974 18800010 */ blez $a0, .L7F04B9B8 -/* 0804A8 7F04B978 00041900 */ sll $v1, $a0, 4 -/* 0804AC 7F04B97C 8E700000 */ lw $s0, ($s3) -.L7F04B980: -/* 0804B0 7F04B980 86020002 */ lh $v0, 2($s0) -/* 0804B4 7F04B984 26310010 */ addiu $s1, $s1, 0x10 -/* 0804B8 7F04B988 0056082A */ slt $at, $v0, $s6 -/* 0804BC 7F04B98C 50200003 */ beql $at, $zero, .L7F04B99C -/* 0804C0 7F04B990 0282082A */ slt $at, $s4, $v0 -/* 0804C4 7F04B994 0040B025 */ move $s6, $v0 -/* 0804C8 7F04B998 0282082A */ slt $at, $s4, $v0 -.L7F04B99C: -/* 0804CC 7F04B99C 50200003 */ beql $at, $zero, .L7F04B9AC -/* 0804D0 7F04B9A0 0223082A */ slt $at, $s1, $v1 -/* 0804D4 7F04B9A4 0040A025 */ move $s4, $v0 -/* 0804D8 7F04B9A8 0223082A */ slt $at, $s1, $v1 -.L7F04B9AC: -/* 0804DC 7F04B9AC 1420FFF4 */ bnez $at, .L7F04B980 -/* 0804E0 7F04B9B0 26100010 */ addiu $s0, $s0, 0x10 -/* 0804E4 7F04B9B4 00009025 */ move $s2, $zero -.L7F04B9B8: -/* 0804E8 7F04B9B8 02D41021 */ addu $v0, $s6, $s4 -/* 0804EC 7F04B9BC 00025843 */ sra $t3, $v0, 1 -/* 0804F0 7F04B9C0 24010006 */ li $at, 6 -/* 0804F4 7F04B9C4 14A10006 */ bne $a1, $at, .L7F04B9E0 -/* 0804F8 7F04B9C8 01601825 */ move $v1, $t3 -/* 0804FC 7F04B9CC 01766823 */ subu $t5, $t3, $s6 -/* 080500 7F04B9D0 29A10029 */ slti $at, $t5, 0x29 -/* 080504 7F04B9D4 54200003 */ bnezl $at, .L7F04B9E4 -/* 080508 7F04B9D8 02961023 */ subu $v0, $s4, $s6 -/* 08050C 7F04B9DC 26C30028 */ addiu $v1, $s6, 0x28 -.L7F04B9E0: -/* 080510 7F04B9E0 02961023 */ subu $v0, $s4, $s6 -.L7F04B9E4: -/* 080514 7F04B9E4 2841003D */ slti $at, $v0, 0x3d -/* 080518 7F04B9E8 1420000E */ bnez $at, .L7F04BA24 -/* 08051C 7F04B9EC 28A10006 */ slti $at, $a1, 6 -/* 080520 7F04B9F0 10200005 */ beqz $at, .L7F04BA08 -/* 080524 7F04B9F4 244CFFC4 */ addiu $t4, $v0, -0x3c -/* 080528 7F04B9F8 3C018005 */ lui $at, %hi(D_80052CC0) -/* 08052C 7F04B9FC C4262CC0 */ lwc1 $f6, %lo(D_80052CC0)($at) -/* 080530 7F04BA00 1000000C */ b .L7F04BA34 -/* 080534 7F04BA04 E7A60068 */ swc1 $f6, 0x68($sp) -.L7F04BA08: -/* 080538 7F04BA08 448C4000 */ mtc1 $t4, $f8 -/* 08053C 7F04BA0C 44828000 */ mtc1 $v0, $f16 -/* 080540 7F04BA10 468042A0 */ cvt.s.w $f10, $f8 -/* 080544 7F04BA14 468084A0 */ cvt.s.w $f18, $f16 -/* 080548 7F04BA18 46125103 */ div.s $f4, $f10, $f18 -/* 08054C 7F04BA1C 10000005 */ b .L7F04BA34 -/* 080550 7F04BA20 E7A40068 */ swc1 $f4, 0x68($sp) -.L7F04BA24: -/* 080554 7F04BA24 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 080558 7F04BA28 44813000 */ mtc1 $at, $f6 -/* 08055C 7F04BA2C 00000000 */ nop -/* 080560 7F04BA30 E7A60068 */ swc1 $f6, 0x68($sp) -.L7F04BA34: -/* 080564 7F04BA34 5880009E */ blezl $a0, .L7F04BCB0 -/* 080568 7F04BA38 8FBF003C */ lw $ra, 0x3c($sp) -/* 08056C 7F04BA3C 44964000 */ mtc1 $s6, $f8 -/* 080570 7F04BA40 00008825 */ move $s1, $zero -/* 080574 7F04BA44 AFA3007C */ sw $v1, 0x7c($sp) -/* 080578 7F04BA48 46804420 */ cvt.s.w $f16, $f8 -/* 08057C 7F04BA4C 24140050 */ li $s4, 80 -/* 080580 7F04BA50 E7B00044 */ swc1 $f16, 0x44($sp) -/* 080584 7F04BA54 8EAE0008 */ lw $t6, 8($s5) -.L7F04BA58: -/* 080588 7F04BA58 8FAA0078 */ lw $t2, 0x78($sp) -/* 08058C 7F04BA5C 01D11021 */ addu $v0, $t6, $s1 -/* 080590 7F04BA60 84580004 */ lh $t8, 4($v0) -/* 080594 7F04BA64 84590000 */ lh $t9, ($v0) -/* 080598 7F04BA68 84480002 */ lh $t0, 2($v0) -/* 08059C 7F04BA6C 03197821 */ addu $t7, $t8, $t9 -/* 0805A0 7F04BA70 01E84821 */ addu $t1, $t7, $t0 -/* 0805A4 7F04BA74 0FC26DE2 */ jal sub_GAME_7F09B788 -/* 0805A8 7F04BA78 012A2021 */ addu $a0, $t1, $t2 -/* 0805AC 7F04BA7C 8FAB0070 */ lw $t3, 0x70($sp) -/* 0805B0 7F04BA80 00008025 */ move $s0, $zero -/* 0805B4 7F04BA84 1160002E */ beqz $t3, .L7F04BB40 -/* 0805B8 7F04BA88 00000000 */ nop -/* 0805BC 7F04BA8C C7CA002C */ lwc1 $f10, 0x2c($fp) -/* 0805C0 7F04BA90 44809000 */ mtc1 $zero, $f18 -/* 0805C4 7F04BA94 00000000 */ nop -/* 0805C8 7F04BA98 460A903E */ c.le.s $f18, $f10 -/* 0805CC 7F04BA9C 00000000 */ nop -/* 0805D0 7F04BAA0 45020015 */ bc1fl .L7F04BAF8 -/* 0805D4 7F04BAA4 8E6F0000 */ lw $t7, ($s3) -/* 0805D8 7F04BAA8 8E6D0000 */ lw $t5, ($s3) -/* 0805DC 7F04BAAC 8FB8007C */ lw $t8, 0x7c($sp) -/* 0805E0 7F04BAB0 01B16021 */ addu $t4, $t5, $s1 -/* 0805E4 7F04BAB4 858E0002 */ lh $t6, 2($t4) -/* 0805E8 7F04BAB8 01D8082A */ slt $at, $t6, $t8 -/* 0805EC 7F04BABC 14200007 */ bnez $at, .L7F04BADC -/* 0805F0 7F04BAC0 00000000 */ nop -/* 0805F4 7F04BAC4 12E00003 */ beqz $s7, .L7F04BAD4 -/* 0805F8 7F04BAC8 00000000 */ nop -/* 0805FC 7F04BACC 1000001C */ b .L7F04BB40 -/* 080600 7F04BAD0 2410005A */ li $s0, 90 -.L7F04BAD4: -/* 080604 7F04BAD4 1000001A */ b .L7F04BB40 -/* 080608 7F04BAD8 24100014 */ li $s0, 20 -.L7F04BADC: -/* 08060C 7F04BADC 12E00003 */ beqz $s7, .L7F04BAEC -/* 080610 7F04BAE0 00000000 */ nop -/* 080614 7F04BAE4 10000016 */ b .L7F04BB40 -/* 080618 7F04BAE8 24100014 */ li $s0, 20 -.L7F04BAEC: -/* 08061C 7F04BAEC 10000014 */ b .L7F04BB40 -/* 080620 7F04BAF0 2410005A */ li $s0, 90 -/* 080624 7F04BAF4 8E6F0000 */ lw $t7, ($s3) -.L7F04BAF8: -/* 080628 7F04BAF8 8FB9007C */ lw $t9, 0x7c($sp) -/* 08062C 7F04BAFC 01F14021 */ addu $t0, $t7, $s1 -/* 080630 7F04BB00 85090002 */ lh $t1, 2($t0) -/* 080634 7F04BB04 0329082A */ slt $at, $t9, $t1 -/* 080638 7F04BB08 14200007 */ bnez $at, .L7F04BB28 -/* 08063C 7F04BB0C 00000000 */ nop -/* 080640 7F04BB10 12E00003 */ beqz $s7, .L7F04BB20 -/* 080644 7F04BB14 00000000 */ nop -/* 080648 7F04BB18 10000009 */ b .L7F04BB40 -/* 08064C 7F04BB1C 2410005A */ li $s0, 90 -.L7F04BB20: -/* 080650 7F04BB20 10000007 */ b .L7F04BB40 -/* 080654 7F04BB24 24100014 */ li $s0, 20 -.L7F04BB28: -/* 080658 7F04BB28 12E00003 */ beqz $s7, .L7F04BB38 -/* 08065C 7F04BB2C 00000000 */ nop -/* 080660 7F04BB30 10000003 */ b .L7F04BB40 -/* 080664 7F04BB34 24100014 */ li $s0, 20 -.L7F04BB38: -/* 080668 7F04BB38 10000001 */ b .L7F04BB40 -/* 08066C 7F04BB3C 2410005A */ li $s0, 90 -.L7F04BB40: -/* 080670 7F04BB40 0FC26DD0 */ jal sub_GAME_7F09B740 -/* 080674 7F04BB44 00000000 */ nop -/* 080678 7F04BB48 24010064 */ li $at, 100 -/* 08067C 7F04BB4C 0041001B */ divu $zero, $v0, $at -/* 080680 7F04BB50 00005010 */ mfhi $t2 -/* 080684 7F04BB54 0150082A */ slt $at, $t2, $s0 -/* 080688 7F04BB58 1020000F */ beqz $at, .L7F04BB98 -/* 08068C 7F04BB5C 8FAA0040 */ lw $t2, 0x40($sp) -/* 080690 7F04BB60 8E6B0000 */ lw $t3, ($s3) -/* 080694 7F04BB64 240800FF */ li $t0, 255 -/* 080698 7F04BB68 01716821 */ addu $t5, $t3, $s1 -/* 08069C 7F04BB6C A1A0000C */ sb $zero, 0xc($t5) -/* 0806A0 7F04BB70 8E6C0000 */ lw $t4, ($s3) -/* 0806A4 7F04BB74 01917021 */ addu $t6, $t4, $s1 -/* 0806A8 7F04BB78 A1C0000D */ sb $zero, 0xd($t6) -/* 0806AC 7F04BB7C 8E780000 */ lw $t8, ($s3) -/* 0806B0 7F04BB80 03117821 */ addu $t7, $t8, $s1 -/* 0806B4 7F04BB84 A1E0000E */ sb $zero, 0xe($t7) -/* 0806B8 7F04BB88 8E790000 */ lw $t9, ($s3) -/* 0806BC 7F04BB8C 03314821 */ addu $t1, $t9, $s1 -/* 0806C0 7F04BB90 10000007 */ b .L7F04BBB0 -/* 0806C4 7F04BB94 A128000F */ sb $t0, 0xf($t1) -.L7F04BB98: -/* 0806C8 7F04BB98 24010002 */ li $at, 2 -/* 0806CC 7F04BB9C 55410005 */ bnel $t2, $at, .L7F04BBB4 -/* 0806D0 7F04BBA0 8E6C0000 */ lw $t4, ($s3) -/* 0806D4 7F04BBA4 8E6B0000 */ lw $t3, ($s3) -/* 0806D8 7F04BBA8 01716821 */ addu $t5, $t3, $s1 -/* 0806DC 7F04BBAC A1A0000F */ sb $zero, 0xf($t5) -.L7F04BBB0: -/* 0806E0 7F04BBB0 8E6C0000 */ lw $t4, ($s3) -.L7F04BBB4: -/* 0806E4 7F04BBB4 C7A80068 */ lwc1 $f8, 0x68($sp) -/* 0806E8 7F04BBB8 C7AA0044 */ lwc1 $f10, 0x44($sp) -/* 0806EC 7F04BBBC 01918021 */ addu $s0, $t4, $s1 -/* 0806F0 7F04BBC0 860E0002 */ lh $t6, 2($s0) -/* 0806F4 7F04BBC4 01D6C023 */ subu $t8, $t6, $s6 -/* 0806F8 7F04BBC8 44982000 */ mtc1 $t8, $f4 -/* 0806FC 7F04BBCC 00000000 */ nop -/* 080700 7F04BBD0 468021A0 */ cvt.s.w $f6, $f4 -/* 080704 7F04BBD4 46083402 */ mul.s $f16, $f6, $f8 -/* 080708 7F04BBD8 460A8480 */ add.s $f18, $f16, $f10 -/* 08070C 7F04BBDC 4600910D */ trunc.w.s $f4, $f18 -/* 080710 7F04BBE0 44192000 */ mfc1 $t9, $f4 -/* 080714 7F04BBE4 0FC26DD0 */ jal sub_GAME_7F09B740 -/* 080718 7F04BBE8 A6190002 */ sh $t9, 2($s0) -/* 08071C 7F04BBEC 0054001B */ divu $zero, $v0, $s4 -/* 080720 7F04BBF0 8E680000 */ lw $t0, ($s3) -/* 080724 7F04BBF4 00005010 */ mfhi $t2 -/* 080728 7F04BBF8 01118021 */ addu $s0, $t0, $s1 -/* 08072C 7F04BBFC 86090000 */ lh $t1, ($s0) -/* 080730 7F04BC00 16800002 */ bnez $s4, .L7F04BC0C -/* 080734 7F04BC04 00000000 */ nop -/* 080738 7F04BC08 0007000D */ break 7 -.L7F04BC0C: -/* 08073C 7F04BC0C 012A5821 */ addu $t3, $t1, $t2 -/* 080740 7F04BC10 256DFFD8 */ addiu $t5, $t3, -0x28 -/* 080744 7F04BC14 0FC26DD0 */ jal sub_GAME_7F09B740 -/* 080748 7F04BC18 A60D0000 */ sh $t5, ($s0) -/* 08074C 7F04BC1C 0054001B */ divu $zero, $v0, $s4 -/* 080750 7F04BC20 8E6C0000 */ lw $t4, ($s3) -/* 080754 7F04BC24 0000C010 */ mfhi $t8 -/* 080758 7F04BC28 01918021 */ addu $s0, $t4, $s1 -/* 08075C 7F04BC2C 860E0002 */ lh $t6, 2($s0) -/* 080760 7F04BC30 16800002 */ bnez $s4, .L7F04BC3C -/* 080764 7F04BC34 00000000 */ nop -/* 080768 7F04BC38 0007000D */ break 7 -.L7F04BC3C: -/* 08076C 7F04BC3C 01D87821 */ addu $t7, $t6, $t8 -/* 080770 7F04BC40 25F9FFD8 */ addiu $t9, $t7, -0x28 -/* 080774 7F04BC44 0FC26DD0 */ jal sub_GAME_7F09B740 -/* 080778 7F04BC48 A6190002 */ sh $t9, 2($s0) -/* 08077C 7F04BC4C 0054001B */ divu $zero, $v0, $s4 -/* 080780 7F04BC50 8E680000 */ lw $t0, ($s3) -/* 080784 7F04BC54 00005010 */ mfhi $t2 -/* 080788 7F04BC58 01118021 */ addu $s0, $t0, $s1 -/* 08078C 7F04BC5C 86090004 */ lh $t1, 4($s0) -/* 080790 7F04BC60 16800002 */ bnez $s4, .L7F04BC6C -/* 080794 7F04BC64 00000000 */ nop -/* 080798 7F04BC68 0007000D */ break 7 -.L7F04BC6C: -/* 08079C 7F04BC6C 012A5821 */ addu $t3, $t1, $t2 -/* 0807A0 7F04BC70 256DFFD8 */ addiu $t5, $t3, -0x28 -/* 0807A4 7F04BC74 A60D0004 */ sh $t5, 4($s0) -/* 0807A8 7F04BC78 8E6C0000 */ lw $t4, ($s3) -/* 0807AC 7F04BC7C 01918021 */ addu $s0, $t4, $s1 -/* 0807B0 7F04BC80 860E0002 */ lh $t6, 2($s0) -/* 0807B4 7F04BC84 01D6082A */ slt $at, $t6, $s6 -/* 0807B8 7F04BC88 50200003 */ beql $at, $zero, .L7F04BC98 -/* 0807BC 7F04BC8C 86B8000C */ lh $t8, 0xc($s5) -/* 0807C0 7F04BC90 A6160002 */ sh $s6, 2($s0) -/* 0807C4 7F04BC94 86B8000C */ lh $t8, 0xc($s5) -.L7F04BC98: -/* 0807C8 7F04BC98 26520001 */ addiu $s2, $s2, 1 -/* 0807CC 7F04BC9C 26310010 */ addiu $s1, $s1, 0x10 -/* 0807D0 7F04BCA0 0258082A */ slt $at, $s2, $t8 -/* 0807D4 7F04BCA4 5420FF6C */ bnezl $at, .L7F04BA58 -/* 0807D8 7F04BCA8 8EAE0008 */ lw $t6, 8($s5) -.L7F04BCAC: -/* 0807DC 7F04BCAC 8FBF003C */ lw $ra, 0x3c($sp) -.L7F04BCB0: -/* 0807E0 7F04BCB0 8FB00018 */ lw $s0, 0x18($sp) -/* 0807E4 7F04BCB4 8FB1001C */ lw $s1, 0x1c($sp) -/* 0807E8 7F04BCB8 8FB20020 */ lw $s2, 0x20($sp) -/* 0807EC 7F04BCBC 8FB30024 */ lw $s3, 0x24($sp) -/* 0807F0 7F04BCC0 8FB40028 */ lw $s4, 0x28($sp) -/* 0807F4 7F04BCC4 8FB5002C */ lw $s5, 0x2c($sp) -/* 0807F8 7F04BCC8 8FB60030 */ lw $s6, 0x30($sp) -/* 0807FC 7F04BCCC 8FB70034 */ lw $s7, 0x34($sp) -/* 080800 7F04BCD0 8FBE0038 */ lw $fp, 0x38($sp) -/* 080804 7F04BCD4 03E00008 */ jr $ra -/* 080808 7F04BCD8 27BD0098 */ addiu $sp, $sp, 0x98 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04BCDC(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052CC4 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052CC8 -.word 0x40555555 /*3.3333333*/ -glabel D_80052CCC -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052CD0 -.word 0x40555555 /*3.3333333*/ -glabel D_80052CD4 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052CD8 -.word 0x40555555 /*3.3333333*/ -glabel D_80052CDC -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052CE0 -.word 0x3d490fdb /*0.049087387*/ -glabel D_80052CE4 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052CE8 -.word 0x3d490fdb /*0.049087387*/ -glabel D_80052CEC -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052CF0 -.word 0x3d490fdb /*0.049087387*/ -glabel D_80052CF4 -.word 0x40555555 /*3.3333333*/ -.text -glabel sub_GAME_7F04BCDC -/* 08080C 7F04BCDC 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 080810 7F04BCE0 3C0F8003 */ lui $t7, %hi(D_80032010) -/* 080814 7F04BCE4 AFBF0024 */ sw $ra, 0x24($sp) -/* 080818 7F04BCE8 AFB00020 */ sw $s0, 0x20($sp) -/* 08081C 7F04BCEC F7B40018 */ sdc1 $f20, 0x18($sp) -/* 080820 7F04BCF0 AFA50054 */ sw $a1, 0x54($sp) -/* 080824 7F04BCF4 25EF2010 */ addiu $t7, %lo(D_80032010) # addiu $t7, $t7, 0x2010 -/* 080828 7F04BCF8 8DE10000 */ lw $at, ($t7) -/* 08082C 7F04BCFC 27AE0038 */ addiu $t6, $sp, 0x38 -/* 080830 7F04BD00 8DE80004 */ lw $t0, 4($t7) -/* 080834 7F04BD04 ADC10000 */ sw $at, ($t6) -/* 080838 7F04BD08 8DE10008 */ lw $at, 8($t7) -/* 08083C 7F04BD0C 00803025 */ move $a2, $a0 -/* 080840 7F04BD10 ADC80004 */ sw $t0, 4($t6) -/* 080844 7F04BD14 ADC10008 */ sw $at, 8($t6) -/* 080848 7F04BD18 8C840010 */ lw $a0, 0x10($a0) -/* 08084C 7F04BD1C 00008025 */ move $s0, $zero -/* 080850 7F04BD20 0FC0FF6A */ jal sub_GAME_7F03FDA8 -/* 080854 7F04BD24 AFA60050 */ sw $a2, 0x50($sp) -/* 080858 7F04BD28 8FA60050 */ lw $a2, 0x50($sp) -/* 08085C 7F04BD2C 8CC20064 */ lw $v0, 0x64($a2) -/* 080860 7F04BD30 30490040 */ andi $t1, $v0, 0x40 -/* 080864 7F04BD34 11200004 */ beqz $t1, .L7F04BD48 -/* 080868 7F04BD38 304B0080 */ andi $t3, $v0, 0x80 -/* 08086C 7F04BD3C 8CCA006C */ lw $t2, 0x6c($a2) -/* 080870 7F04BD40 10000004 */ b .L7F04BD54 -/* 080874 7F04BD44 8D500044 */ lw $s0, 0x44($t2) -.L7F04BD48: -/* 080878 7F04BD48 11600002 */ beqz $t3, .L7F04BD54 -/* 08087C 7F04BD4C 00000000 */ nop -/* 080880 7F04BD50 8CD0006C */ lw $s0, 0x6c($a2) -.L7F04BD54: -/* 080884 7F04BD54 5200009A */ beql $s0, $zero, .L7F04BFC0 -/* 080888 7F04BD58 8FBF0024 */ lw $ra, 0x24($sp) -/* 08088C 7F04BD5C 0C002914 */ jal get_random_value -/* 080890 7F04BD60 00000000 */ nop -/* 080894 7F04BD64 44822000 */ mtc1 $v0, $f4 -/* 080898 7F04BD68 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 08089C 7F04BD6C 4481A000 */ mtc1 $at, $f20 -/* 0808A0 7F04BD70 04410005 */ bgez $v0, .L7F04BD88 -/* 0808A4 7F04BD74 468021A0 */ cvt.s.w $f6, $f4 -/* 0808A8 7F04BD78 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0808AC 7F04BD7C 44814000 */ mtc1 $at, $f8 -/* 0808B0 7F04BD80 00000000 */ nop -/* 0808B4 7F04BD84 46083180 */ add.s $f6, $f6, $f8 -.L7F04BD88: -/* 0808B8 7F04BD88 46143282 */ mul.s $f10, $f6, $f20 -/* 0808BC 7F04BD8C 3C018005 */ lui $at, %hi(D_80052CC4) -/* 0808C0 7F04BD90 C4302CC4 */ lwc1 $f16, %lo(D_80052CC4)($at) -/* 0808C4 7F04BD94 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 0808C8 7F04BD98 44812000 */ mtc1 $at, $f4 -/* 0808CC 7F04BD9C 3C018005 */ lui $at, %hi(D_80052CC8) -/* 0808D0 7F04BDA0 C4262CC8 */ lwc1 $f6, %lo(D_80052CC8)($at) -/* 0808D4 7F04BDA4 46105482 */ mul.s $f18, $f10, $f16 -/* 0808D8 7F04BDA8 00000000 */ nop -/* 0808DC 7F04BDAC 46049202 */ mul.s $f8, $f18, $f4 -/* 0808E0 7F04BDB0 46064281 */ sub.s $f10, $f8, $f6 -/* 0808E4 7F04BDB4 0C002914 */ jal get_random_value -/* 0808E8 7F04BDB8 E60A0004 */ swc1 $f10, 4($s0) -/* 0808EC 7F04BDBC 44828000 */ mtc1 $v0, $f16 -/* 0808F0 7F04BDC0 04410005 */ bgez $v0, .L7F04BDD8 -/* 0808F4 7F04BDC4 468084A0 */ cvt.s.w $f18, $f16 -/* 0808F8 7F04BDC8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0808FC 7F04BDCC 44812000 */ mtc1 $at, $f4 -/* 080900 7F04BDD0 00000000 */ nop -/* 080904 7F04BDD4 46049480 */ add.s $f18, $f18, $f4 -.L7F04BDD8: -/* 080908 7F04BDD8 46149202 */ mul.s $f8, $f18, $f20 -/* 08090C 7F04BDDC 3C018005 */ lui $at, %hi(D_80052CCC) -/* 080910 7F04BDE0 C4262CCC */ lwc1 $f6, %lo(D_80052CCC)($at) -/* 080914 7F04BDE4 3C018005 */ lui $at, %hi(D_80052CD0) -/* 080918 7F04BDE8 C4302CD0 */ lwc1 $f16, %lo(D_80052CD0)($at) -/* 08091C 7F04BDEC 46064002 */ mul.s $f0, $f8, $f6 -/* 080920 7F04BDF0 46000280 */ add.s $f10, $f0, $f0 -/* 080924 7F04BDF4 46105100 */ add.s $f4, $f10, $f16 -/* 080928 7F04BDF8 0C002914 */ jal get_random_value -/* 08092C 7F04BDFC E6040008 */ swc1 $f4, 8($s0) -/* 080930 7F04BE00 44829000 */ mtc1 $v0, $f18 -/* 080934 7F04BE04 04410005 */ bgez $v0, .L7F04BE1C -/* 080938 7F04BE08 46809220 */ cvt.s.w $f8, $f18 -/* 08093C 7F04BE0C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080940 7F04BE10 44813000 */ mtc1 $at, $f6 -/* 080944 7F04BE14 00000000 */ nop -/* 080948 7F04BE18 46064200 */ add.s $f8, $f8, $f6 -.L7F04BE1C: -/* 08094C 7F04BE1C 46144282 */ mul.s $f10, $f8, $f20 -/* 080950 7F04BE20 3C018005 */ lui $at, %hi(D_80052CD4) -/* 080954 7F04BE24 C4302CD4 */ lwc1 $f16, %lo(D_80052CD4)($at) -/* 080958 7F04BE28 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 08095C 7F04BE2C 44819000 */ mtc1 $at, $f18 -/* 080960 7F04BE30 3C018005 */ lui $at, %hi(D_80052CD8) -/* 080964 7F04BE34 C4282CD8 */ lwc1 $f8, %lo(D_80052CD8)($at) -/* 080968 7F04BE38 46105102 */ mul.s $f4, $f10, $f16 -/* 08096C 7F04BE3C 00000000 */ nop -/* 080970 7F04BE40 46122182 */ mul.s $f6, $f4, $f18 -/* 080974 7F04BE44 46083281 */ sub.s $f10, $f6, $f8 -/* 080978 7F04BE48 0C002914 */ jal get_random_value -/* 08097C 7F04BE4C E60A000C */ swc1 $f10, 0xc($s0) -/* 080980 7F04BE50 44828000 */ mtc1 $v0, $f16 -/* 080984 7F04BE54 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080988 7F04BE58 04410004 */ bgez $v0, .L7F04BE6C -/* 08098C 7F04BE5C 46808120 */ cvt.s.w $f4, $f16 -/* 080990 7F04BE60 44819000 */ mtc1 $at, $f18 -/* 080994 7F04BE64 00000000 */ nop -/* 080998 7F04BE68 46122100 */ add.s $f4, $f4, $f18 -.L7F04BE6C: -/* 08099C 7F04BE6C 46142182 */ mul.s $f6, $f4, $f20 -/* 0809A0 7F04BE70 3C018005 */ lui $at, %hi(D_80052CDC) -/* 0809A4 7F04BE74 C4282CDC */ lwc1 $f8, %lo(D_80052CDC)($at) -/* 0809A8 7F04BE78 3C013C80 */ li $at, 0x3C800000 # 0.015625 -/* 0809AC 7F04BE7C 44818000 */ mtc1 $at, $f16 -/* 0809B0 7F04BE80 3C018005 */ lui $at, %hi(D_80052CE0) -/* 0809B4 7F04BE84 C4242CE0 */ lwc1 $f4, %lo(D_80052CE0)($at) -/* 0809B8 7F04BE88 46083282 */ mul.s $f10, $f6, $f8 -/* 0809BC 7F04BE8C 00000000 */ nop -/* 0809C0 7F04BE90 46105482 */ mul.s $f18, $f10, $f16 -/* 0809C4 7F04BE94 46049181 */ sub.s $f6, $f18, $f4 -/* 0809C8 7F04BE98 0C002914 */ jal get_random_value -/* 0809CC 7F04BE9C E7A60038 */ swc1 $f6, 0x38($sp) -/* 0809D0 7F04BEA0 44824000 */ mtc1 $v0, $f8 -/* 0809D4 7F04BEA4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0809D8 7F04BEA8 04410004 */ bgez $v0, .L7F04BEBC -/* 0809DC 7F04BEAC 468042A0 */ cvt.s.w $f10, $f8 -/* 0809E0 7F04BEB0 44818000 */ mtc1 $at, $f16 -/* 0809E4 7F04BEB4 00000000 */ nop -/* 0809E8 7F04BEB8 46105280 */ add.s $f10, $f10, $f16 -.L7F04BEBC: -/* 0809EC 7F04BEBC 46145482 */ mul.s $f18, $f10, $f20 -/* 0809F0 7F04BEC0 3C018005 */ lui $at, %hi(D_80052CE4) -/* 0809F4 7F04BEC4 C4242CE4 */ lwc1 $f4, %lo(D_80052CE4)($at) -/* 0809F8 7F04BEC8 3C013C80 */ li $at, 0x3C800000 # 0.015625 -/* 0809FC 7F04BECC 44814000 */ mtc1 $at, $f8 -/* 080A00 7F04BED0 3C018005 */ lui $at, %hi(D_80052CE8) -/* 080A04 7F04BED4 C42A2CE8 */ lwc1 $f10, %lo(D_80052CE8)($at) -/* 080A08 7F04BED8 46049182 */ mul.s $f6, $f18, $f4 -/* 080A0C 7F04BEDC 00000000 */ nop -/* 080A10 7F04BEE0 46083402 */ mul.s $f16, $f6, $f8 -/* 080A14 7F04BEE4 460A8481 */ sub.s $f18, $f16, $f10 -/* 080A18 7F04BEE8 0C002914 */ jal get_random_value -/* 080A1C 7F04BEEC E7B2003C */ swc1 $f18, 0x3c($sp) -/* 080A20 7F04BEF0 44822000 */ mtc1 $v0, $f4 -/* 080A24 7F04BEF4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080A28 7F04BEF8 04410004 */ bgez $v0, .L7F04BF0C -/* 080A2C 7F04BEFC 468021A0 */ cvt.s.w $f6, $f4 -/* 080A30 7F04BF00 44814000 */ mtc1 $at, $f8 -/* 080A34 7F04BF04 00000000 */ nop -/* 080A38 7F04BF08 46083180 */ add.s $f6, $f6, $f8 -.L7F04BF0C: -/* 080A3C 7F04BF0C 46143402 */ mul.s $f16, $f6, $f20 -/* 080A40 7F04BF10 3C018005 */ lui $at, %hi(D_80052CEC) -/* 080A44 7F04BF14 C42A2CEC */ lwc1 $f10, %lo(D_80052CEC)($at) -/* 080A48 7F04BF18 3C013C80 */ li $at, 0x3C800000 # 0.015625 -/* 080A4C 7F04BF1C 44812000 */ mtc1 $at, $f4 -/* 080A50 7F04BF20 3C018005 */ lui $at, %hi(D_80052CF0) -/* 080A54 7F04BF24 C4262CF0 */ lwc1 $f6, %lo(D_80052CF0)($at) -/* 080A58 7F04BF28 460A8482 */ mul.s $f18, $f16, $f10 -/* 080A5C 7F04BF2C 27A40038 */ addiu $a0, $sp, 0x38 -/* 080A60 7F04BF30 26050020 */ addiu $a1, $s0, 0x20 -/* 080A64 7F04BF34 46049202 */ mul.s $f8, $f18, $f4 -/* 080A68 7F04BF38 46064401 */ sub.s $f16, $f8, $f6 -/* 080A6C 7F04BF3C 0FC161C5 */ jal sub_GAME_7F058714 -/* 080A70 7F04BF40 E7B00040 */ swc1 $f16, 0x40($sp) -/* 080A74 7F04BF44 8E0C0000 */ lw $t4, ($s0) -/* 080A78 7F04BF48 8FA20054 */ lw $v0, 0x54($sp) -/* 080A7C 7F04BF4C 358D0001 */ ori $t5, $t4, 1 -/* 080A80 7F04BF50 AE0D0000 */ sw $t5, ($s0) -/* 080A84 7F04BF54 C44A0000 */ lwc1 $f10, ($v0) -/* 080A88 7F04BF58 E7AA0044 */ swc1 $f10, 0x44($sp) -/* 080A8C 7F04BF5C C4520004 */ lwc1 $f18, 4($v0) -/* 080A90 7F04BF60 E7B20048 */ swc1 $f18, 0x48($sp) -/* 080A94 7F04BF64 C4440008 */ lwc1 $f4, 8($v0) -/* 080A98 7F04BF68 0FC1E111 */ jal sub_GAME_7F078444 -/* 080A9C 7F04BF6C E7A4004C */ swc1 $f4, 0x4c($sp) -/* 080AA0 7F04BF70 00402025 */ move $a0, $v0 -/* 080AA4 7F04BF74 0FC160F6 */ jal sub_GAME_7F0583D8 -/* 080AA8 7F04BF78 27A50044 */ addiu $a1, $sp, 0x44 -/* 080AAC 7F04BF7C 3C018005 */ lui $at, %hi(D_80052CF4) -/* 080AB0 7F04BF80 C4202CF4 */ lwc1 $f0, %lo(D_80052CF4)($at) -/* 080AB4 7F04BF84 C7A60044 */ lwc1 $f6, 0x44($sp) -/* 080AB8 7F04BF88 C6080004 */ lwc1 $f8, 4($s0) -/* 080ABC 7F04BF8C C612000C */ lwc1 $f18, 0xc($s0) -/* 080AC0 7F04BF90 46060402 */ mul.s $f16, $f0, $f6 -/* 080AC4 7F04BF94 46104280 */ add.s $f10, $f8, $f16 -/* 080AC8 7F04BF98 E60A0004 */ swc1 $f10, 4($s0) -/* 080ACC 7F04BF9C C7A4004C */ lwc1 $f4, 0x4c($sp) -/* 080AD0 7F04BFA0 46040182 */ mul.s $f6, $f0, $f4 -/* 080AD4 7F04BFA4 46069200 */ add.s $f8, $f18, $f6 -/* 080AD8 7F04BFA8 0FC225E6 */ jal get_curplayer_positiondata -/* 080ADC 7F04BFAC E608000C */ swc1 $f8, 0xc($s0) -/* 080AE0 7F04BFB0 24190001 */ li $t9, 1 -/* 080AE4 7F04BFB4 AE020088 */ sw $v0, 0x88($s0) -/* 080AE8 7F04BFB8 AE190090 */ sw $t9, 0x90($s0) -/* 080AEC 7F04BFBC 8FBF0024 */ lw $ra, 0x24($sp) -.L7F04BFC0: -/* 080AF0 7F04BFC0 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 080AF4 7F04BFC4 8FB00020 */ lw $s0, 0x20($sp) -/* 080AF8 7F04BFC8 03E00008 */ jr $ra -/* 080AFC 7F04BFCC 27BD0050 */ addiu $sp, $sp, 0x50 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04BFD0(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04BFD0 -/* 080B00 7F04BFD0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 080B04 7F04BFD4 AFBF0014 */ sw $ra, 0x14($sp) -/* 080B08 7F04BFD8 8C82001C */ lw $v0, 0x1c($a0) -/* 080B0C 7F04BFDC 50400016 */ beql $v0, $zero, .L7F04C038 -/* 080B10 7F04BFE0 8FBF0014 */ lw $ra, 0x14($sp) -/* 080B14 7F04BFE4 8C820004 */ lw $v0, 4($a0) -/* 080B18 7F04BFE8 AFA50024 */ sw $a1, 0x24($sp) -/* 080B1C 7F04BFEC 0FC0FF6A */ jal sub_GAME_7F03FDA8 -/* 080B20 7F04BFF0 AFA20018 */ sw $v0, 0x18($sp) -/* 080B24 7F04BFF4 8FA20018 */ lw $v0, 0x18($sp) -/* 080B28 7F04BFF8 8FA50024 */ lw $a1, 0x24($sp) -/* 080B2C 7F04BFFC 8C430064 */ lw $v1, 0x64($v0) -/* 080B30 7F04C000 306E0040 */ andi $t6, $v1, 0x40 -/* 080B34 7F04C004 11C00007 */ beqz $t6, .L7F04C024 -/* 080B38 7F04C008 30780080 */ andi $t8, $v1, 0x80 -/* 080B3C 7F04C00C 8C4F006C */ lw $t7, 0x6c($v0) -/* 080B40 7F04C010 8DE40044 */ lw $a0, 0x44($t7) -/* 080B44 7F04C014 10800003 */ beqz $a0, .L7F04C024 -/* 080B48 7F04C018 00000000 */ nop -/* 080B4C 7F04C01C 10000005 */ b .L7F04C034 -/* 080B50 7F04C020 AC8500B8 */ sw $a1, 0xb8($a0) -.L7F04C024: -/* 080B54 7F04C024 53000004 */ beql $t8, $zero, .L7F04C038 -/* 080B58 7F04C028 8FBF0014 */ lw $ra, 0x14($sp) -/* 080B5C 7F04C02C 8C59006C */ lw $t9, 0x6c($v0) -/* 080B60 7F04C030 AF2500B8 */ sw $a1, 0xb8($t9) -.L7F04C034: -/* 080B64 7F04C034 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04C038: -/* 080B68 7F04C038 27BD0020 */ addiu $sp, $sp, 0x20 -/* 080B6C 7F04C03C 03E00008 */ jr $ra -/* 080B70 7F04C040 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04C044(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04C044 -/* 080B74 7F04C044 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 080B78 7F04C048 AFBF0014 */ sw $ra, 0x14($sp) -/* 080B7C 7F04C04C 8C86001C */ lw $a2, 0x1c($a0) -/* 080B80 7F04C050 00802825 */ move $a1, $a0 -/* 080B84 7F04C054 50C00033 */ beql $a2, $zero, .L7F04C124 -/* 080B88 7F04C058 8FBF0014 */ lw $ra, 0x14($sp) -/* 080B8C 7F04C05C 8C820004 */ lw $v0, 4($a0) -/* 080B90 7F04C060 8C4E0014 */ lw $t6, 0x14($v0) -/* 080B94 7F04C064 AFA60024 */ sw $a2, 0x24($sp) -/* 080B98 7F04C068 AFA50028 */ sw $a1, 0x28($sp) -/* 080B9C 7F04C06C AFA20020 */ sw $v0, 0x20($sp) -/* 080BA0 7F04C070 0FC0E974 */ jal sub_GAME_7F03A5D0 -/* 080BA4 7F04C074 AFAE001C */ sw $t6, 0x1c($sp) -/* 080BA8 7F04C078 8FAF001C */ lw $t7, 0x1c($sp) -/* 080BAC 7F04C07C 8FA20020 */ lw $v0, 0x20($sp) -/* 080BB0 7F04C080 8FA60024 */ lw $a2, 0x24($sp) -/* 080BB4 7F04C084 8FA50028 */ lw $a1, 0x28($sp) -/* 080BB8 7F04C088 ADE0001C */ sw $zero, 0x1c($t7) -/* 080BBC 7F04C08C 8C580064 */ lw $t8, 0x64($v0) -/* 080BC0 7F04C090 3C01FFF7 */ lui $at, (0xFFF7FFFF >> 16) # lui $at, 0xfff7 -/* 080BC4 7F04C094 3421FFFF */ ori $at, (0xFFF7FFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 080BC8 7F04C098 0301C824 */ and $t9, $t8, $at -/* 080BCC 7F04C09C AC590064 */ sw $t9, 0x64($v0) -/* 080BD0 7F04C0A0 90C30000 */ lbu $v1, ($a2) -/* 080BD4 7F04C0A4 24010003 */ li $at, 3 -/* 080BD8 7F04C0A8 10610003 */ beq $v1, $at, .L7F04C0B8 -/* 080BDC 7F04C0AC 24010006 */ li $at, 6 -/* 080BE0 7F04C0B0 5461001C */ bnel $v1, $at, .L7F04C124 -/* 080BE4 7F04C0B4 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04C0B8: -/* 080BE8 7F04C0B8 8CC40004 */ lw $a0, 4($a2) -/* 080BEC 7F04C0BC 50800019 */ beql $a0, $zero, .L7F04C124 -/* 080BF0 7F04C0C0 8FBF0014 */ lw $ra, 0x14($sp) -/* 080BF4 7F04C0C4 8C8801D8 */ lw $t0, 0x1d8($a0) -/* 080BF8 7F04C0C8 54A80004 */ bnel $a1, $t0, .L7F04C0DC -/* 080BFC 7F04C0CC 8C890160 */ lw $t1, 0x160($a0) -/* 080C00 7F04C0D0 10000013 */ b .L7F04C120 -/* 080C04 7F04C0D4 AC8001D8 */ sw $zero, 0x1d8($a0) -/* 080C08 7F04C0D8 8C890160 */ lw $t1, 0x160($a0) -.L7F04C0DC: -/* 080C0C 7F04C0DC 00003025 */ move $a2, $zero -/* 080C10 7F04C0E0 54A90008 */ bnel $a1, $t1, .L7F04C104 -/* 080C14 7F04C0E4 8C8A0164 */ lw $t2, 0x164($a0) -/* 080C18 7F04C0E8 00002825 */ move $a1, $zero -/* 080C1C 7F04C0EC 0FC0B446 */ jal sub_GAME_7F02D118 -/* 080C20 7F04C0F0 AFA40018 */ sw $a0, 0x18($sp) -/* 080C24 7F04C0F4 8FA40018 */ lw $a0, 0x18($sp) -/* 080C28 7F04C0F8 10000009 */ b .L7F04C120 -/* 080C2C 7F04C0FC AC800160 */ sw $zero, 0x160($a0) -/* 080C30 7F04C100 8C8A0164 */ lw $t2, 0x164($a0) -.L7F04C104: -/* 080C34 7F04C104 00003025 */ move $a2, $zero -/* 080C38 7F04C108 14AA0005 */ bne $a1, $t2, .L7F04C120 -/* 080C3C 7F04C10C 24050001 */ li $a1, 1 -/* 080C40 7F04C110 0FC0B446 */ jal sub_GAME_7F02D118 -/* 080C44 7F04C114 AFA40018 */ sw $a0, 0x18($sp) -/* 080C48 7F04C118 8FA40018 */ lw $a0, 0x18($sp) -/* 080C4C 7F04C11C AC800164 */ sw $zero, 0x164($a0) -.L7F04C120: -/* 080C50 7F04C120 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04C124: -/* 080C54 7F04C124 27BD0028 */ addiu $sp, $sp, 0x28 -/* 080C58 7F04C128 03E00008 */ jr $ra -/* 080C5C 7F04C12C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04C130(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052CF8 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052CFC -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D00 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D04 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D08 -.word 0x3cc90fdb /*0.024543693*/ -glabel D_80052D0C -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D10 -.word 0x3cc90fdb /*0.024543693*/ -glabel D_80052D14 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D18 -.word 0x3cc90fdb /*0.024543693*/ -glabel D_80052D1C -.word 0x41555555 /*13.333333*/ -glabel D_80052D20 -.word 0x40d55555 /*6.6666665*/ -glabel D_80052D24 -.word 0x41555555 /*13.333333*/ -glabel D_80052D28 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D2C -.word 0x3cc90fdb /*0.024543693*/ -glabel D_80052D30 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D34 -.word 0x3cc90fdb /*0.024543693*/ -glabel D_80052D38 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D3C -.word 0x3cc90fdb /*0.024543693*/ -glabel D_80052D40 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D44 -.word 0x40555555 /*3.3333333*/ -glabel D_80052D48 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D4C -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D50 -.word 0x40555555 /*3.3333333*/ -glabel D_80052D54 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D58 -.word 0x3dc90fdb /*0.098174773*/ -glabel D_80052D5C -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D60 -.word 0x3dc90fdb /*0.098174773*/ -glabel D_80052D64 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D68 -.word 0x3dc90fdb /*0.098174773*/ -.text -glabel sub_GAME_7F04C130 -/* 080C60 7F04C130 27BDFEF8 */ addiu $sp, $sp, -0x108 -/* 080C64 7F04C134 AFBF003C */ sw $ra, 0x3c($sp) -/* 080C68 7F04C138 AFB20038 */ sw $s2, 0x38($sp) -/* 080C6C 7F04C13C AFB10034 */ sw $s1, 0x34($sp) -/* 080C70 7F04C140 AFB00030 */ sw $s0, 0x30($sp) -/* 080C74 7F04C144 AFA40108 */ sw $a0, 0x108($sp) -/* 080C78 7F04C148 8C8F001C */ lw $t7, 0x1c($a0) -/* 080C7C 7F04C14C AFAF0104 */ sw $t7, 0x104($sp) -/* 080C80 7F04C150 8C920004 */ lw $s2, 4($a0) -/* 080C84 7F04C154 8E580064 */ lw $t8, 0x64($s2) -/* 080C88 7F04C158 33190040 */ andi $t9, $t8, 0x40 -/* 080C8C 7F04C15C 5320000F */ beql $t9, $zero, .L7F04C19C -/* 080C90 7F04C160 8FAC0104 */ lw $t4, 0x104($sp) -/* 080C94 7F04C164 8E44006C */ lw $a0, 0x6c($s2) -/* 080C98 7F04C168 8C820044 */ lw $v0, 0x44($a0) -/* 080C9C 7F04C16C 5040000B */ beql $v0, $zero, .L7F04C19C -/* 080CA0 7F04C170 8FAC0104 */ lw $t4, 0x104($sp) -/* 080CA4 7F04C174 0FC0FFA2 */ jal sub_GAME_7F03FE88 -/* 080CA8 7F04C178 00408025 */ move $s0, $v0 -/* 080CAC 7F04C17C 8E480064 */ lw $t0, 0x64($s2) -/* 080CB0 7F04C180 2401FFBF */ li $at, -65 -/* 080CB4 7F04C184 AE50006C */ sw $s0, 0x6c($s2) -/* 080CB8 7F04C188 01014824 */ and $t1, $t0, $at -/* 080CBC 7F04C18C AE490064 */ sw $t1, 0x64($s2) -/* 080CC0 7F04C190 352B0080 */ ori $t3, $t1, 0x80 -/* 080CC4 7F04C194 AE4B0064 */ sw $t3, 0x64($s2) -/* 080CC8 7F04C198 8FAC0104 */ lw $t4, 0x104($sp) -.L7F04C19C: -/* 080CCC 7F04C19C 00001025 */ move $v0, $zero -/* 080CD0 7F04C1A0 11800222 */ beqz $t4, .L7F04CA2C -/* 080CD4 7F04C1A4 00000000 */ nop -/* 080CD8 7F04C1A8 8E4D0064 */ lw $t5, 0x64($s2) -/* 080CDC 7F04C1AC 31AF0080 */ andi $t7, $t5, 0x80 -/* 080CE0 7F04C1B0 11E0021E */ beqz $t7, .L7F04CA2C -/* 080CE4 7F04C1B4 00000000 */ nop -/* 080CE8 7F04C1B8 8E4E0014 */ lw $t6, 0x14($s2) -/* 080CEC 7F04C1BC 24010002 */ li $at, 2 -/* 080CF0 7F04C1C0 01808025 */ move $s0, $t4 -/* 080CF4 7F04C1C4 AFAE00F8 */ sw $t6, 0xf8($sp) -/* 080CF8 7F04C1C8 8E51006C */ lw $s1, 0x6c($s2) -/* 080CFC 7F04C1CC 8E380000 */ lw $t8, ($s1) -/* 080D00 7F04C1D0 8E2200B8 */ lw $v0, 0xb8($s1) -/* 080D04 7F04C1D4 37190001 */ ori $t9, $t8, 1 -/* 080D08 7F04C1D8 AE390000 */ sw $t9, ($s1) -/* 080D0C 7F04C1DC 8FA80104 */ lw $t0, 0x104($sp) -/* 080D10 7F04C1E0 1441007A */ bne $v0, $at, .L7F04C3CC -/* 080D14 7F04C1E4 AE280088 */ sw $t0, 0x88($s1) -/* 080D18 7F04C1E8 8FA90104 */ lw $t1, 0x104($sp) -/* 080D1C 7F04C1EC 24030003 */ li $v1, 3 -/* 080D20 7F04C1F0 3C0D8003 */ lui $t5, %hi(D_8003201C) -/* 080D24 7F04C1F4 912A0000 */ lbu $t2, ($t1) -/* 080D28 7F04C1F8 25AD201C */ addiu $t5, %lo(D_8003201C) # addiu $t5, $t5, 0x201c -/* 080D2C 7F04C1FC 27AB0098 */ addiu $t3, $sp, 0x98 -/* 080D30 7F04C200 546A0073 */ bnel $v1, $t2, .L7F04C3D0 -/* 080D34 7F04C204 24030003 */ li $v1, 3 -/* 080D38 7F04C208 8D220004 */ lw $v0, 4($t1) -/* 080D3C 7F04C20C 8DA10000 */ lw $at, ($t5) -/* 080D40 7F04C210 8DAE0004 */ lw $t6, 4($t5) -/* 080D44 7F04C214 8C44001C */ lw $a0, 0x1c($v0) -/* 080D48 7F04C218 AD610000 */ sw $at, ($t3) -/* 080D4C 7F04C21C 8DA10008 */ lw $at, 8($t5) -/* 080D50 7F04C220 AD6E0004 */ sw $t6, 4($t3) -/* 080D54 7F04C224 0FC1B320 */ jal getsubroty -/* 080D58 7F04C228 AD610008 */ sw $at, 8($t3) -/* 080D5C 7F04C22C E7A00094 */ swc1 $f0, 0x94($sp) -/* 080D60 7F04C230 0FC15FAB */ jal sinf -/* 080D64 7F04C234 46000306 */ mov.s $f12, $f0 -/* 080D68 7F04C238 3C018005 */ lui $at, %hi(D_80052CF8) -/* 080D6C 7F04C23C C4242CF8 */ lwc1 $f4, %lo(D_80052CF8)($at) -/* 080D70 7F04C240 46040182 */ mul.s $f6, $f0, $f4 -/* 080D74 7F04C244 0C002914 */ jal get_random_value -/* 080D78 7F04C248 E6260004 */ swc1 $f6, 4($s1) -/* 080D7C 7F04C24C 44824000 */ mtc1 $v0, $f8 -/* 080D80 7F04C250 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080D84 7F04C254 04410004 */ bgez $v0, .L7F04C268 -/* 080D88 7F04C258 468042A0 */ cvt.s.w $f10, $f8 -/* 080D8C 7F04C25C 44818000 */ mtc1 $at, $f16 -/* 080D90 7F04C260 00000000 */ nop -/* 080D94 7F04C264 46105280 */ add.s $f10, $f10, $f16 -.L7F04C268: -/* 080D98 7F04C268 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 080D9C 7F04C26C 44819000 */ mtc1 $at, $f18 -/* 080DA0 7F04C270 3C018005 */ lui $at, %hi(D_80052CFC) -/* 080DA4 7F04C274 C4282CFC */ lwc1 $f8, %lo(D_80052CFC)($at) -/* 080DA8 7F04C278 46125102 */ mul.s $f4, $f10, $f18 -/* 080DAC 7F04C27C 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 080DB0 7F04C280 44815000 */ mtc1 $at, $f10 -/* 080DB4 7F04C284 46002187 */ neg.s $f6, $f4 -/* 080DB8 7F04C288 46083402 */ mul.s $f16, $f6, $f8 -/* 080DBC 7F04C28C 00000000 */ nop -/* 080DC0 7F04C290 460A8482 */ mul.s $f18, $f16, $f10 -/* 080DC4 7F04C294 E6320008 */ swc1 $f18, 8($s1) -/* 080DC8 7F04C298 0FC15FA8 */ jal cosf -/* 080DCC 7F04C29C C7AC0094 */ lwc1 $f12, 0x94($sp) -/* 080DD0 7F04C2A0 3C018005 */ lui $at, %hi(D_80052D00) -/* 080DD4 7F04C2A4 C4242D00 */ lwc1 $f4, %lo(D_80052D00)($at) -/* 080DD8 7F04C2A8 46040182 */ mul.s $f6, $f0, $f4 -/* 080DDC 7F04C2AC 0C002914 */ jal get_random_value -/* 080DE0 7F04C2B0 E626000C */ swc1 $f6, 0xc($s1) -/* 080DE4 7F04C2B4 44824000 */ mtc1 $v0, $f8 -/* 080DE8 7F04C2B8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080DEC 7F04C2BC 04410004 */ bgez $v0, .L7F04C2D0 -/* 080DF0 7F04C2C0 46804420 */ cvt.s.w $f16, $f8 -/* 080DF4 7F04C2C4 44815000 */ mtc1 $at, $f10 -/* 080DF8 7F04C2C8 00000000 */ nop -/* 080DFC 7F04C2CC 460A8400 */ add.s $f16, $f16, $f10 -.L7F04C2D0: -/* 080E00 7F04C2D0 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 080E04 7F04C2D4 44819000 */ mtc1 $at, $f18 -/* 080E08 7F04C2D8 3C018005 */ lui $at, %hi(D_80052D04) -/* 080E0C 7F04C2DC C4262D04 */ lwc1 $f6, %lo(D_80052D04)($at) -/* 080E10 7F04C2E0 46128102 */ mul.s $f4, $f16, $f18 -/* 080E14 7F04C2E4 3C013C00 */ li $at, 0x3C000000 # 0.007812 -/* 080E18 7F04C2E8 44815000 */ mtc1 $at, $f10 -/* 080E1C 7F04C2EC 3C018005 */ lui $at, %hi(D_80052D08) -/* 080E20 7F04C2F0 C4322D08 */ lwc1 $f18, %lo(D_80052D08)($at) -/* 080E24 7F04C2F4 46062202 */ mul.s $f8, $f4, $f6 -/* 080E28 7F04C2F8 00000000 */ nop -/* 080E2C 7F04C2FC 460A4402 */ mul.s $f16, $f8, $f10 -/* 080E30 7F04C300 46128101 */ sub.s $f4, $f16, $f18 -/* 080E34 7F04C304 0C002914 */ jal get_random_value -/* 080E38 7F04C308 E7A40098 */ swc1 $f4, 0x98($sp) -/* 080E3C 7F04C30C 44823000 */ mtc1 $v0, $f6 -/* 080E40 7F04C310 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080E44 7F04C314 04410004 */ bgez $v0, .L7F04C328 -/* 080E48 7F04C318 46803220 */ cvt.s.w $f8, $f6 -/* 080E4C 7F04C31C 44815000 */ mtc1 $at, $f10 -/* 080E50 7F04C320 00000000 */ nop -/* 080E54 7F04C324 460A4200 */ add.s $f8, $f8, $f10 -.L7F04C328: -/* 080E58 7F04C328 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 080E5C 7F04C32C 44818000 */ mtc1 $at, $f16 -/* 080E60 7F04C330 3C018005 */ lui $at, %hi(D_80052D0C) -/* 080E64 7F04C334 C4242D0C */ lwc1 $f4, %lo(D_80052D0C)($at) -/* 080E68 7F04C338 46104482 */ mul.s $f18, $f8, $f16 -/* 080E6C 7F04C33C 3C013C00 */ li $at, 0x3C000000 # 0.007812 -/* 080E70 7F04C340 44815000 */ mtc1 $at, $f10 -/* 080E74 7F04C344 3C018005 */ lui $at, %hi(D_80052D10) -/* 080E78 7F04C348 C4302D10 */ lwc1 $f16, %lo(D_80052D10)($at) -/* 080E7C 7F04C34C 46049182 */ mul.s $f6, $f18, $f4 -/* 080E80 7F04C350 00000000 */ nop -/* 080E84 7F04C354 460A3202 */ mul.s $f8, $f6, $f10 -/* 080E88 7F04C358 46104481 */ sub.s $f18, $f8, $f16 -/* 080E8C 7F04C35C 0C002914 */ jal get_random_value -/* 080E90 7F04C360 E7B2009C */ swc1 $f18, 0x9c($sp) -/* 080E94 7F04C364 44822000 */ mtc1 $v0, $f4 -/* 080E98 7F04C368 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080E9C 7F04C36C 04410004 */ bgez $v0, .L7F04C380 -/* 080EA0 7F04C370 468021A0 */ cvt.s.w $f6, $f4 -/* 080EA4 7F04C374 44815000 */ mtc1 $at, $f10 -/* 080EA8 7F04C378 00000000 */ nop -/* 080EAC 7F04C37C 460A3180 */ add.s $f6, $f6, $f10 -.L7F04C380: -/* 080EB0 7F04C380 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 080EB4 7F04C384 44814000 */ mtc1 $at, $f8 -/* 080EB8 7F04C388 3C018005 */ lui $at, %hi(D_80052D14) -/* 080EBC 7F04C38C C4322D14 */ lwc1 $f18, %lo(D_80052D14)($at) -/* 080EC0 7F04C390 46083402 */ mul.s $f16, $f6, $f8 -/* 080EC4 7F04C394 3C013C00 */ li $at, 0x3C000000 # 0.007812 -/* 080EC8 7F04C398 44815000 */ mtc1 $at, $f10 -/* 080ECC 7F04C39C 3C018005 */ lui $at, %hi(D_80052D18) -/* 080ED0 7F04C3A0 C4282D18 */ lwc1 $f8, %lo(D_80052D18)($at) -/* 080ED4 7F04C3A4 27A40098 */ addiu $a0, $sp, 0x98 -/* 080ED8 7F04C3A8 26250020 */ addiu $a1, $s1, 0x20 -/* 080EDC 7F04C3AC 46128102 */ mul.s $f4, $f16, $f18 -/* 080EE0 7F04C3B0 00000000 */ nop -/* 080EE4 7F04C3B4 460A2182 */ mul.s $f6, $f4, $f10 -/* 080EE8 7F04C3B8 46083401 */ sub.s $f16, $f6, $f8 -/* 080EEC 7F04C3BC 0FC161C5 */ jal sub_GAME_7F058714 -/* 080EF0 7F04C3C0 E7B000A0 */ swc1 $f16, 0xa0($sp) -/* 080EF4 7F04C3C4 1000010C */ b .L7F04C7F8 -/* 080EF8 7F04C3C8 8FA90104 */ lw $t1, 0x104($sp) -.L7F04C3CC: -/* 080EFC 7F04C3CC 24030003 */ li $v1, 3 -.L7F04C3D0: -/* 080F00 7F04C3D0 14620068 */ bne $v1, $v0, .L7F04C574 -/* 080F04 7F04C3D4 8FAC0104 */ lw $t4, 0x104($sp) -/* 080F08 7F04C3D8 91980000 */ lbu $t8, ($t4) -/* 080F0C 7F04C3DC 3C088003 */ lui $t0, %hi(D_80032028) -/* 080F10 7F04C3E0 25082028 */ addiu $t0, %lo(D_80032028) # addiu $t0, $t0, 0x2028 -/* 080F14 7F04C3E4 14780063 */ bne $v1, $t8, .L7F04C574 -/* 080F18 7F04C3E8 27B90080 */ addiu $t9, $sp, 0x80 -/* 080F1C 7F04C3EC 8D820004 */ lw $v0, 4($t4) -/* 080F20 7F04C3F0 8D010000 */ lw $at, ($t0) -/* 080F24 7F04C3F4 8D090004 */ lw $t1, 4($t0) -/* 080F28 7F04C3F8 8C44001C */ lw $a0, 0x1c($v0) -/* 080F2C 7F04C3FC AF210000 */ sw $at, ($t9) -/* 080F30 7F04C400 8D010008 */ lw $at, 8($t0) -/* 080F34 7F04C404 AF290004 */ sw $t1, 4($t9) -/* 080F38 7F04C408 0FC1B320 */ jal getsubroty -/* 080F3C 7F04C40C AF210008 */ sw $at, 8($t9) -/* 080F40 7F04C410 E7A0007C */ swc1 $f0, 0x7c($sp) -/* 080F44 7F04C414 0FC15FAB */ jal sinf -/* 080F48 7F04C418 46000306 */ mov.s $f12, $f0 -/* 080F4C 7F04C41C 3C018005 */ lui $at, %hi(D_80052D1C) -/* 080F50 7F04C420 C4322D1C */ lwc1 $f18, %lo(D_80052D1C)($at) -/* 080F54 7F04C424 3C018005 */ lui $at, %hi(D_80052D20) -/* 080F58 7F04C428 46120102 */ mul.s $f4, $f0, $f18 -/* 080F5C 7F04C42C E6240004 */ swc1 $f4, 4($s1) -/* 080F60 7F04C430 C42A2D20 */ lwc1 $f10, %lo(D_80052D20)($at) -/* 080F64 7F04C434 E62A0008 */ swc1 $f10, 8($s1) -/* 080F68 7F04C438 0FC15FA8 */ jal cosf -/* 080F6C 7F04C43C C7AC007C */ lwc1 $f12, 0x7c($sp) -/* 080F70 7F04C440 3C018005 */ lui $at, %hi(D_80052D24) -/* 080F74 7F04C444 C4262D24 */ lwc1 $f6, %lo(D_80052D24)($at) -/* 080F78 7F04C448 46060202 */ mul.s $f8, $f0, $f6 -/* 080F7C 7F04C44C 0C002914 */ jal get_random_value -/* 080F80 7F04C450 E628000C */ swc1 $f8, 0xc($s1) -/* 080F84 7F04C454 44828000 */ mtc1 $v0, $f16 -/* 080F88 7F04C458 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080F8C 7F04C45C 04410004 */ bgez $v0, .L7F04C470 -/* 080F90 7F04C460 468084A0 */ cvt.s.w $f18, $f16 -/* 080F94 7F04C464 44812000 */ mtc1 $at, $f4 -/* 080F98 7F04C468 00000000 */ nop -/* 080F9C 7F04C46C 46049480 */ add.s $f18, $f18, $f4 -.L7F04C470: -/* 080FA0 7F04C470 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 080FA4 7F04C474 44815000 */ mtc1 $at, $f10 -/* 080FA8 7F04C478 3C018005 */ lui $at, %hi(D_80052D28) -/* 080FAC 7F04C47C C4282D28 */ lwc1 $f8, %lo(D_80052D28)($at) -/* 080FB0 7F04C480 460A9182 */ mul.s $f6, $f18, $f10 -/* 080FB4 7F04C484 3C013C00 */ li $at, 0x3C000000 # 0.007812 -/* 080FB8 7F04C488 44812000 */ mtc1 $at, $f4 -/* 080FBC 7F04C48C 3C018005 */ lui $at, %hi(D_80052D2C) -/* 080FC0 7F04C490 C42A2D2C */ lwc1 $f10, %lo(D_80052D2C)($at) -/* 080FC4 7F04C494 46083402 */ mul.s $f16, $f6, $f8 -/* 080FC8 7F04C498 00000000 */ nop -/* 080FCC 7F04C49C 46048482 */ mul.s $f18, $f16, $f4 -/* 080FD0 7F04C4A0 460A9181 */ sub.s $f6, $f18, $f10 -/* 080FD4 7F04C4A4 0C002914 */ jal get_random_value -/* 080FD8 7F04C4A8 E7A60080 */ swc1 $f6, 0x80($sp) -/* 080FDC 7F04C4AC 44824000 */ mtc1 $v0, $f8 -/* 080FE0 7F04C4B0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 080FE4 7F04C4B4 04410004 */ bgez $v0, .L7F04C4C8 -/* 080FE8 7F04C4B8 46804420 */ cvt.s.w $f16, $f8 -/* 080FEC 7F04C4BC 44812000 */ mtc1 $at, $f4 -/* 080FF0 7F04C4C0 00000000 */ nop -/* 080FF4 7F04C4C4 46048400 */ add.s $f16, $f16, $f4 -.L7F04C4C8: -/* 080FF8 7F04C4C8 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 080FFC 7F04C4CC 44819000 */ mtc1 $at, $f18 -/* 081000 7F04C4D0 3C018005 */ lui $at, %hi(D_80052D30) -/* 081004 7F04C4D4 C4262D30 */ lwc1 $f6, %lo(D_80052D30)($at) -/* 081008 7F04C4D8 46128282 */ mul.s $f10, $f16, $f18 -/* 08100C 7F04C4DC 3C013C00 */ li $at, 0x3C000000 # 0.007812 -/* 081010 7F04C4E0 44812000 */ mtc1 $at, $f4 -/* 081014 7F04C4E4 3C018005 */ lui $at, %hi(D_80052D34) -/* 081018 7F04C4E8 C4322D34 */ lwc1 $f18, %lo(D_80052D34)($at) -/* 08101C 7F04C4EC 46065202 */ mul.s $f8, $f10, $f6 -/* 081020 7F04C4F0 00000000 */ nop -/* 081024 7F04C4F4 46044402 */ mul.s $f16, $f8, $f4 -/* 081028 7F04C4F8 46128281 */ sub.s $f10, $f16, $f18 -/* 08102C 7F04C4FC 0C002914 */ jal get_random_value -/* 081030 7F04C500 E7AA0084 */ swc1 $f10, 0x84($sp) -/* 081034 7F04C504 44823000 */ mtc1 $v0, $f6 -/* 081038 7F04C508 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 08103C 7F04C50C 04410004 */ bgez $v0, .L7F04C520 -/* 081040 7F04C510 46803220 */ cvt.s.w $f8, $f6 -/* 081044 7F04C514 44812000 */ mtc1 $at, $f4 -/* 081048 7F04C518 00000000 */ nop -/* 08104C 7F04C51C 46044200 */ add.s $f8, $f8, $f4 -.L7F04C520: -/* 081050 7F04C520 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 081054 7F04C524 44818000 */ mtc1 $at, $f16 -/* 081058 7F04C528 3C018005 */ lui $at, %hi(D_80052D38) -/* 08105C 7F04C52C C42A2D38 */ lwc1 $f10, %lo(D_80052D38)($at) -/* 081060 7F04C530 46104482 */ mul.s $f18, $f8, $f16 -/* 081064 7F04C534 3C013C00 */ li $at, 0x3C000000 # 0.007812 -/* 081068 7F04C538 44812000 */ mtc1 $at, $f4 -/* 08106C 7F04C53C 3C018005 */ lui $at, %hi(D_80052D3C) -/* 081070 7F04C540 C4302D3C */ lwc1 $f16, %lo(D_80052D3C)($at) -/* 081074 7F04C544 27A40080 */ addiu $a0, $sp, 0x80 -/* 081078 7F04C548 26250020 */ addiu $a1, $s1, 0x20 -/* 08107C 7F04C54C 460A9182 */ mul.s $f6, $f18, $f10 -/* 081080 7F04C550 00000000 */ nop -/* 081084 7F04C554 46043202 */ mul.s $f8, $f6, $f4 -/* 081088 7F04C558 46104481 */ sub.s $f18, $f8, $f16 -/* 08108C 7F04C55C 0FC161C5 */ jal sub_GAME_7F058714 -/* 081090 7F04C560 E7B20088 */ swc1 $f18, 0x88($sp) -/* 081094 7F04C564 8E2F0000 */ lw $t7, ($s1) -/* 081098 7F04C568 35EB0040 */ ori $t3, $t7, 0x40 -/* 08109C 7F04C56C 100000A1 */ b .L7F04C7F4 -/* 0810A0 7F04C570 AE2B0000 */ sw $t3, ($s1) -.L7F04C574: -/* 0810A4 7F04C574 24010004 */ li $at, 4 -/* 0810A8 7F04C578 1441009C */ bne $v0, $at, .L7F04C7EC -/* 0810AC 7F04C57C 26240004 */ addiu $a0, $s1, 4 -/* 0810B0 7F04C580 3C0E8003 */ lui $t6, %hi(D_80032034) -/* 0810B4 7F04C584 25CE2034 */ addiu $t6, %lo(D_80032034) # addiu $t6, $t6, 0x2034 -/* 0810B8 7F04C588 8DC10000 */ lw $at, ($t6) -/* 0810BC 7F04C58C 27AD0070 */ addiu $t5, $sp, 0x70 -/* 0810C0 7F04C590 8DCC0004 */ lw $t4, 4($t6) -/* 0810C4 7F04C594 ADA10000 */ sw $at, ($t5) -/* 0810C8 7F04C598 8DC10008 */ lw $at, 8($t6) -/* 0810CC 7F04C59C ADAC0004 */ sw $t4, 4($t5) -/* 0810D0 7F04C5A0 0FC225E6 */ jal get_curplayer_positiondata -/* 0810D4 7F04C5A4 ADA10008 */ sw $at, 8($t5) -/* 0810D8 7F04C5A8 8FAA0104 */ lw $t2, 0x104($sp) -/* 0810DC 7F04C5AC C4460008 */ lwc1 $f6, 8($v0) -/* 0810E0 7F04C5B0 C4480010 */ lwc1 $f8, 0x10($v0) -/* 0810E4 7F04C5B4 C54A0008 */ lwc1 $f10, 8($t2) -/* 0810E8 7F04C5B8 C5440010 */ lwc1 $f4, 0x10($t2) -/* 0810EC 7F04C5BC 46065301 */ sub.s $f12, $f10, $f6 -/* 0810F0 7F04C5C0 0FC16A8C */ jal convert_angle_using_inverse -/* 0810F4 7F04C5C4 46082381 */ sub.s $f14, $f4, $f8 -/* 0810F8 7F04C5C8 0C002914 */ jal get_random_value -/* 0810FC 7F04C5CC E7A00060 */ swc1 $f0, 0x60($sp) -/* 081100 7F04C5D0 AFA20050 */ sw $v0, 0x50($sp) -/* 081104 7F04C5D4 0FC15FAB */ jal sinf -/* 081108 7F04C5D8 C7AC0060 */ lwc1 $f12, 0x60($sp) -/* 08110C 7F04C5DC 8FB90050 */ lw $t9, 0x50($sp) -/* 081110 7F04C5E0 44998000 */ mtc1 $t9, $f16 -/* 081114 7F04C5E4 07210005 */ bgez $t9, .L7F04C5FC -/* 081118 7F04C5E8 468084A0 */ cvt.s.w $f18, $f16 -/* 08111C 7F04C5EC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 081120 7F04C5F0 44815000 */ mtc1 $at, $f10 -/* 081124 7F04C5F4 00000000 */ nop -/* 081128 7F04C5F8 460A9480 */ add.s $f18, $f18, $f10 -.L7F04C5FC: -/* 08112C 7F04C5FC 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 081130 7F04C600 44813000 */ mtc1 $at, $f6 -/* 081134 7F04C604 3C018005 */ lui $at, %hi(D_80052D40) -/* 081138 7F04C608 C4282D40 */ lwc1 $f8, %lo(D_80052D40)($at) -/* 08113C 7F04C60C 46069102 */ mul.s $f4, $f18, $f6 -/* 081140 7F04C610 3C018005 */ lui $at, %hi(D_80052D44) -/* 081144 7F04C614 C42A2D44 */ lwc1 $f10, %lo(D_80052D44)($at) -/* 081148 7F04C618 46082082 */ mul.s $f2, $f4, $f8 -/* 08114C 7F04C61C 46021400 */ add.s $f16, $f2, $f2 -/* 081150 7F04C620 460A8480 */ add.s $f18, $f16, $f10 -/* 081154 7F04C624 46120182 */ mul.s $f6, $f0, $f18 -/* 081158 7F04C628 0C002914 */ jal get_random_value -/* 08115C 7F04C62C E6260004 */ swc1 $f6, 4($s1) -/* 081160 7F04C630 44822000 */ mtc1 $v0, $f4 -/* 081164 7F04C634 04410005 */ bgez $v0, .L7F04C64C -/* 081168 7F04C638 46802220 */ cvt.s.w $f8, $f4 -/* 08116C 7F04C63C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 081170 7F04C640 44818000 */ mtc1 $at, $f16 -/* 081174 7F04C644 00000000 */ nop -/* 081178 7F04C648 46104200 */ add.s $f8, $f8, $f16 -.L7F04C64C: -/* 08117C 7F04C64C 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 081180 7F04C650 44815000 */ mtc1 $at, $f10 -/* 081184 7F04C654 3C018005 */ lui $at, %hi(D_80052D48) -/* 081188 7F04C658 C4262D48 */ lwc1 $f6, %lo(D_80052D48)($at) -/* 08118C 7F04C65C 460A4482 */ mul.s $f18, $f8, $f10 -/* 081190 7F04C660 00000000 */ nop -/* 081194 7F04C664 46069002 */ mul.s $f0, $f18, $f6 -/* 081198 7F04C668 46000100 */ add.s $f4, $f0, $f0 -/* 08119C 7F04C66C 0C002914 */ jal get_random_value -/* 0811A0 7F04C670 E6240008 */ swc1 $f4, 8($s1) -/* 0811A4 7F04C674 AFA20050 */ sw $v0, 0x50($sp) -/* 0811A8 7F04C678 0FC15FA8 */ jal cosf -/* 0811AC 7F04C67C C7AC0060 */ lwc1 $f12, 0x60($sp) -/* 0811B0 7F04C680 8FA80050 */ lw $t0, 0x50($sp) -/* 0811B4 7F04C684 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0811B8 7F04C688 44888000 */ mtc1 $t0, $f16 -/* 0811BC 7F04C68C 05010004 */ bgez $t0, .L7F04C6A0 -/* 0811C0 7F04C690 46808220 */ cvt.s.w $f8, $f16 -/* 0811C4 7F04C694 44815000 */ mtc1 $at, $f10 -/* 0811C8 7F04C698 00000000 */ nop -/* 0811CC 7F04C69C 460A4200 */ add.s $f8, $f8, $f10 -.L7F04C6A0: -/* 0811D0 7F04C6A0 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 0811D4 7F04C6A4 44819000 */ mtc1 $at, $f18 -/* 0811D8 7F04C6A8 3C018005 */ lui $at, %hi(D_80052D4C) -/* 0811DC 7F04C6AC C4242D4C */ lwc1 $f4, %lo(D_80052D4C)($at) -/* 0811E0 7F04C6B0 46124182 */ mul.s $f6, $f8, $f18 -/* 0811E4 7F04C6B4 3C018005 */ lui $at, %hi(D_80052D50) -/* 0811E8 7F04C6B8 C42A2D50 */ lwc1 $f10, %lo(D_80052D50)($at) -/* 0811EC 7F04C6BC 46043082 */ mul.s $f2, $f6, $f4 -/* 0811F0 7F04C6C0 46021400 */ add.s $f16, $f2, $f2 -/* 0811F4 7F04C6C4 460A8200 */ add.s $f8, $f16, $f10 -/* 0811F8 7F04C6C8 46080482 */ mul.s $f18, $f0, $f8 -/* 0811FC 7F04C6CC 0C002914 */ jal get_random_value -/* 081200 7F04C6D0 E632000C */ swc1 $f18, 0xc($s1) -/* 081204 7F04C6D4 44823000 */ mtc1 $v0, $f6 -/* 081208 7F04C6D8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 08120C 7F04C6DC 04410004 */ bgez $v0, .L7F04C6F0 -/* 081210 7F04C6E0 46803120 */ cvt.s.w $f4, $f6 -/* 081214 7F04C6E4 44818000 */ mtc1 $at, $f16 -/* 081218 7F04C6E8 00000000 */ nop -/* 08121C 7F04C6EC 46102100 */ add.s $f4, $f4, $f16 -.L7F04C6F0: -/* 081220 7F04C6F0 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 081224 7F04C6F4 44815000 */ mtc1 $at, $f10 -/* 081228 7F04C6F8 3C018005 */ lui $at, %hi(D_80052D54) -/* 08122C 7F04C6FC C4322D54 */ lwc1 $f18, %lo(D_80052D54)($at) -/* 081230 7F04C700 460A2202 */ mul.s $f8, $f4, $f10 -/* 081234 7F04C704 3C013D00 */ li $at, 0x3D000000 # 0.031250 -/* 081238 7F04C708 44818000 */ mtc1 $at, $f16 -/* 08123C 7F04C70C 3C018005 */ lui $at, %hi(D_80052D58) -/* 081240 7F04C710 C42A2D58 */ lwc1 $f10, %lo(D_80052D58)($at) -/* 081244 7F04C714 46124182 */ mul.s $f6, $f8, $f18 -/* 081248 7F04C718 00000000 */ nop -/* 08124C 7F04C71C 46103102 */ mul.s $f4, $f6, $f16 -/* 081250 7F04C720 460A2201 */ sub.s $f8, $f4, $f10 -/* 081254 7F04C724 0C002914 */ jal get_random_value -/* 081258 7F04C728 E7A80070 */ swc1 $f8, 0x70($sp) -/* 08125C 7F04C72C 44829000 */ mtc1 $v0, $f18 -/* 081260 7F04C730 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 081264 7F04C734 04410004 */ bgez $v0, .L7F04C748 -/* 081268 7F04C738 468091A0 */ cvt.s.w $f6, $f18 -/* 08126C 7F04C73C 44818000 */ mtc1 $at, $f16 -/* 081270 7F04C740 00000000 */ nop -/* 081274 7F04C744 46103180 */ add.s $f6, $f6, $f16 -.L7F04C748: -/* 081278 7F04C748 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 08127C 7F04C74C 44812000 */ mtc1 $at, $f4 -/* 081280 7F04C750 3C018005 */ lui $at, %hi(D_80052D5C) -/* 081284 7F04C754 C4282D5C */ lwc1 $f8, %lo(D_80052D5C)($at) -/* 081288 7F04C758 46043282 */ mul.s $f10, $f6, $f4 -/* 08128C 7F04C75C 3C013D00 */ li $at, 0x3D000000 # 0.031250 -/* 081290 7F04C760 44818000 */ mtc1 $at, $f16 -/* 081294 7F04C764 3C018005 */ lui $at, %hi(D_80052D60) -/* 081298 7F04C768 C4242D60 */ lwc1 $f4, %lo(D_80052D60)($at) -/* 08129C 7F04C76C 46085482 */ mul.s $f18, $f10, $f8 -/* 0812A0 7F04C770 00000000 */ nop -/* 0812A4 7F04C774 46109182 */ mul.s $f6, $f18, $f16 -/* 0812A8 7F04C778 46043281 */ sub.s $f10, $f6, $f4 -/* 0812AC 7F04C77C 0C002914 */ jal get_random_value -/* 0812B0 7F04C780 E7AA0074 */ swc1 $f10, 0x74($sp) -/* 0812B4 7F04C784 44824000 */ mtc1 $v0, $f8 -/* 0812B8 7F04C788 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0812BC 7F04C78C 04410004 */ bgez $v0, .L7F04C7A0 -/* 0812C0 7F04C790 468044A0 */ cvt.s.w $f18, $f8 -/* 0812C4 7F04C794 44818000 */ mtc1 $at, $f16 -/* 0812C8 7F04C798 00000000 */ nop -/* 0812CC 7F04C79C 46109480 */ add.s $f18, $f18, $f16 -.L7F04C7A0: -/* 0812D0 7F04C7A0 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 0812D4 7F04C7A4 44813000 */ mtc1 $at, $f6 -/* 0812D8 7F04C7A8 3C018005 */ lui $at, %hi(D_80052D64) -/* 0812DC 7F04C7AC C42A2D64 */ lwc1 $f10, %lo(D_80052D64)($at) -/* 0812E0 7F04C7B0 46069102 */ mul.s $f4, $f18, $f6 -/* 0812E4 7F04C7B4 3C013D00 */ li $at, 0x3D000000 # 0.031250 -/* 0812E8 7F04C7B8 44818000 */ mtc1 $at, $f16 -/* 0812EC 7F04C7BC 3C018005 */ lui $at, %hi(D_80052D68) -/* 0812F0 7F04C7C0 C4262D68 */ lwc1 $f6, %lo(D_80052D68)($at) -/* 0812F4 7F04C7C4 27A40070 */ addiu $a0, $sp, 0x70 -/* 0812F8 7F04C7C8 26250020 */ addiu $a1, $s1, 0x20 -/* 0812FC 7F04C7CC 460A2202 */ mul.s $f8, $f4, $f10 -/* 081300 7F04C7D0 00000000 */ nop -/* 081304 7F04C7D4 46104482 */ mul.s $f18, $f8, $f16 -/* 081308 7F04C7D8 46069101 */ sub.s $f4, $f18, $f6 -/* 08130C 7F04C7DC 0FC161C5 */ jal sub_GAME_7F058714 -/* 081310 7F04C7E0 E7A40078 */ swc1 $f4, 0x78($sp) -/* 081314 7F04C7E4 10000004 */ b .L7F04C7F8 -/* 081318 7F04C7E8 8FA90104 */ lw $t1, 0x104($sp) -.L7F04C7EC: -/* 08131C 7F04C7EC 0FC15F05 */ jal sub_GAME_7F057C14 -/* 081320 7F04C7F0 26250020 */ addiu $a1, $s1, 0x20 -.L7F04C7F4: -/* 081324 7F04C7F4 8FA90104 */ lw $t1, 0x104($sp) -.L7F04C7F8: -/* 081328 7F04C7F8 8D2F001C */ lw $t7, 0x1c($t1) -/* 08132C 7F04C7FC 51E00007 */ beql $t7, $zero, .L7F04C81C -/* 081330 7F04C800 8E0B0014 */ lw $t3, 0x14($s0) -/* 081334 7F04C804 8E02001C */ lw $v0, 0x1c($s0) -/* 081338 7F04C808 00408025 */ move $s0, $v0 -.L7F04C80C: -/* 08133C 7F04C80C 8C42001C */ lw $v0, 0x1c($v0) -/* 081340 7F04C810 5440FFFE */ bnezl $v0, .L7F04C80C -/* 081344 7F04C814 00408025 */ move $s0, $v0 -/* 081348 7F04C818 8E0B0014 */ lw $t3, 0x14($s0) -.L7F04C81C: -/* 08134C 7F04C81C 8FA20108 */ lw $v0, 0x108($sp) -/* 081350 7F04C820 AFAB00B0 */ sw $t3, 0xb0($sp) -/* 081354 7F04C824 90580001 */ lbu $t8, 1($v0) -/* 081358 7F04C828 330D0002 */ andi $t5, $t8, 2 -/* 08135C 7F04C82C 51A0004B */ beql $t5, $zero, .L7F04C95C -/* 081360 7F04C830 8E0A0014 */ lw $t2, 0x14($s0) -/* 081364 7F04C834 0FC10411 */ jal if_a0_plus_3_is_4_then_10_else_20 -/* 081368 7F04C838 02402025 */ move $a0, $s2 -/* 08136C 7F04C83C E7A0005C */ swc1 $f0, 0x5c($sp) -/* 081370 7F04C840 0FC1B1A8 */ jal getsubmatrix -/* 081374 7F04C844 8FA400F8 */ lw $a0, 0xf8($sp) -/* 081378 7F04C848 240E001F */ li $t6, 31 -/* 08137C 7F04C84C AFA20058 */ sw $v0, 0x58($sp) -/* 081380 7F04C850 0FC1E111 */ jal sub_GAME_7F078444 -/* 081384 7F04C854 AFAE0054 */ sw $t6, 0x54($sp) -/* 081388 7F04C858 00402025 */ move $a0, $v0 -/* 08138C 7F04C85C 8FA50058 */ lw $a1, 0x58($sp) -/* 081390 7F04C860 0FC16063 */ jal sub_GAME_7F05818C -/* 081394 7F04C864 27A600B8 */ addiu $a2, $sp, 0xb8 -/* 081398 7F04C868 8E2C0000 */ lw $t4, ($s1) -/* 08139C 7F04C86C 2419001D */ li $t9, 29 -/* 0813A0 7F04C870 02002025 */ move $a0, $s0 -/* 0813A4 7F04C874 318A0040 */ andi $t2, $t4, 0x40 -/* 0813A8 7F04C878 11400002 */ beqz $t2, .L7F04C884 -/* 0813AC 7F04C87C 00000000 */ nop -/* 0813B0 7F04C880 AFB90054 */ sw $t9, 0x54($sp) -.L7F04C884: -/* 0813B4 7F04C884 0FC0F416 */ jal sub_GAME_7F03D058 -/* 0813B8 7F04C888 00002825 */ move $a1, $zero -/* 0813BC 7F04C88C 8E050008 */ lw $a1, 8($s0) -/* 0813C0 7F04C890 8E060010 */ lw $a2, 0x10($s0) -/* 0813C4 7F04C894 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0813C8 7F04C898 44811000 */ mtc1 $at, $f2 -/* 0813CC 7F04C89C 44800000 */ mtc1 $zero, $f0 -/* 0813D0 7F04C8A0 C7AA00F0 */ lwc1 $f10, 0xf0($sp) -/* 0813D4 7F04C8A4 8FA80054 */ lw $t0, 0x54($sp) -/* 0813D8 7F04C8A8 27B100B0 */ addiu $s1, $sp, 0xb0 -/* 0813DC 7F04C8AC 02202025 */ move $a0, $s1 -/* 0813E0 7F04C8B0 8FA700E8 */ lw $a3, 0xe8($sp) -/* 0813E4 7F04C8B4 E7A2001C */ swc1 $f2, 0x1c($sp) -/* 0813E8 7F04C8B8 E7A20024 */ swc1 $f2, 0x24($sp) -/* 0813EC 7F04C8BC E7AA0010 */ swc1 $f10, 0x10($sp) -/* 0813F0 7F04C8C0 E7A00018 */ swc1 $f0, 0x18($sp) -/* 0813F4 7F04C8C4 E7A00020 */ swc1 $f0, 0x20($sp) -/* 0813F8 7F04C8C8 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 0813FC 7F04C8CC AFA80014 */ sw $t0, 0x14($sp) -/* 081400 7F04C8D0 10400011 */ beqz $v0, .L7F04C918 -/* 081404 7F04C8D4 02202025 */ move $a0, $s1 -/* 081408 7F04C8D8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 08140C 7F04C8DC 44818000 */ mtc1 $at, $f16 -/* 081410 7F04C8E0 8FA90054 */ lw $t1, 0x54($sp) -/* 081414 7F04C8E4 44804000 */ mtc1 $zero, $f8 -/* 081418 7F04C8E8 8FA500E8 */ lw $a1, 0xe8($sp) -/* 08141C 7F04C8EC 8FA600F0 */ lw $a2, 0xf0($sp) -/* 081420 7F04C8F0 8FA7005C */ lw $a3, 0x5c($sp) -/* 081424 7F04C8F4 AFA90010 */ sw $t1, 0x10($sp) -/* 081428 7F04C8F8 E7B00018 */ swc1 $f16, 0x18($sp) -/* 08142C 7F04C8FC 0FC2C62E */ jal sub_GAME_7F0B18B8 -/* 081430 7F04C900 E7A80014 */ swc1 $f8, 0x14($sp) -/* 081434 7F04C904 04410004 */ bgez $v0, .L7F04C918 -/* 081438 7F04C908 8FAF00B0 */ lw $t7, 0xb0($sp) -/* 08143C 7F04C90C 8FAB0108 */ lw $t3, 0x108($sp) -/* 081440 7F04C910 10000008 */ b .L7F04C934 -/* 081444 7F04C914 AD6F0014 */ sw $t7, 0x14($t3) -.L7F04C918: -/* 081448 7F04C918 8E180014 */ lw $t8, 0x14($s0) -/* 08144C 7F04C91C 8FAD0108 */ lw $t5, 0x108($sp) -/* 081450 7F04C920 ADB80014 */ sw $t8, 0x14($t5) -/* 081454 7F04C924 C6120008 */ lwc1 $f18, 8($s0) -/* 081458 7F04C928 E7B200E8 */ swc1 $f18, 0xe8($sp) -/* 08145C 7F04C92C C6060010 */ lwc1 $f6, 0x10($s0) -/* 081460 7F04C930 E7A600F0 */ swc1 $f6, 0xf0($sp) -.L7F04C934: -/* 081464 7F04C934 02002025 */ move $a0, $s0 -/* 081468 7F04C938 0FC0F416 */ jal sub_GAME_7F03D058 -/* 08146C 7F04C93C 24050001 */ li $a1, 1 -/* 081470 7F04C940 8FAE0058 */ lw $t6, 0x58($sp) -/* 081474 7F04C944 8FAC0108 */ lw $t4, 0x108($sp) -/* 081478 7F04C948 C5C40038 */ lwc1 $f4, 0x38($t6) -/* 08147C 7F04C94C 46002287 */ neg.s $f10, $f4 -/* 081480 7F04C950 1000000C */ b .L7F04C984 -/* 081484 7F04C954 E58A0018 */ swc1 $f10, 0x18($t4) -/* 081488 7F04C958 8E0A0014 */ lw $t2, 0x14($s0) -.L7F04C95C: -/* 08148C 7F04C95C 27A400B8 */ addiu $a0, $sp, 0xb8 -/* 081490 7F04C960 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 -/* 081494 7F04C964 AC4A0014 */ sw $t2, 0x14($v0) -/* 081498 7F04C968 8FB900F8 */ lw $t9, 0xf8($sp) -/* 08149C 7F04C96C 27A500B8 */ addiu $a1, $sp, 0xb8 -/* 0814A0 7F04C970 0FC1629F */ jal matrix_multiply_A1_by_F12 -/* 0814A4 7F04C974 C72C0014 */ lwc1 $f12, 0x14($t9) -/* 0814A8 7F04C978 26040008 */ addiu $a0, $s0, 8 -/* 0814AC 7F04C97C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 0814B0 7F04C980 27A500B8 */ addiu $a1, $sp, 0xb8 -.L7F04C984: -/* 0814B4 7F04C984 0FC13011 */ jal sub_GAME_7F04C044 -/* 0814B8 7F04C988 8FA40108 */ lw $a0, 0x108($sp) -/* 0814BC 7F04C98C 0FC0E929 */ jal set_current_objposdata_plus_0x28 -/* 0814C0 7F04C990 8FA40108 */ lw $a0, 0x108($sp) -/* 0814C4 7F04C994 0FC0E901 */ jal set_stateflag_0x04_for_posdata -/* 0814C8 7F04C998 8FA40108 */ lw $a0, 0x108($sp) -/* 0814CC 7F04C99C C7A000E8 */ lwc1 $f0, 0xe8($sp) -/* 0814D0 7F04C9A0 8FA80108 */ lw $t0, 0x108($sp) -/* 0814D4 7F04C9A4 44804000 */ mtc1 $zero, $f8 -/* 0814D8 7F04C9A8 44808000 */ mtc1 $zero, $f16 -/* 0814DC 7F04C9AC E5000008 */ swc1 $f0, 8($t0) -/* 0814E0 7F04C9B0 E6400058 */ swc1 $f0, 0x58($s2) -/* 0814E4 7F04C9B4 C7A000EC */ lwc1 $f0, 0xec($sp) -/* 0814E8 7F04C9B8 8FA90108 */ lw $t1, 0x108($sp) -/* 0814EC 7F04C9BC 44809000 */ mtc1 $zero, $f18 -/* 0814F0 7F04C9C0 27A400B8 */ addiu $a0, $sp, 0xb8 -/* 0814F4 7F04C9C4 E520000C */ swc1 $f0, 0xc($t1) -/* 0814F8 7F04C9C8 E640005C */ swc1 $f0, 0x5c($s2) -/* 0814FC 7F04C9CC C7A000F0 */ lwc1 $f0, 0xf0($sp) -/* 081500 7F04C9D0 8FAF0108 */ lw $t7, 0x108($sp) -/* 081504 7F04C9D4 26450018 */ addiu $a1, $s2, 0x18 -/* 081508 7F04C9D8 E5E00010 */ swc1 $f0, 0x10($t7) -/* 08150C 7F04C9DC E6400060 */ swc1 $f0, 0x60($s2) -/* 081510 7F04C9E0 E7A800E8 */ swc1 $f8, 0xe8($sp) -/* 081514 7F04C9E4 E7B000EC */ swc1 $f16, 0xec($sp) -/* 081518 7F04C9E8 0FC16008 */ jal sub_GAME_7F058020 -/* 08151C 7F04C9EC E7B200F0 */ swc1 $f18, 0xf0($sp) -/* 081520 7F04C9F0 8E440010 */ lw $a0, 0x10($s2) -/* 081524 7F04C9F4 0FC100AD */ jal sub_GAME_7F0402B4 -/* 081528 7F04C9F8 2645007C */ addiu $a1, $s2, 0x7c -/* 08152C 7F04C9FC 924B007C */ lbu $t3, 0x7c($s2) -/* 081530 7F04CA00 9258007D */ lbu $t8, 0x7d($s2) -/* 081534 7F04CA04 924D007E */ lbu $t5, 0x7e($s2) -/* 081538 7F04CA08 924E007F */ lbu $t6, 0x7f($s2) -/* 08153C 7F04CA0C 02402025 */ move $a0, $s2 -/* 081540 7F04CA10 A24B0078 */ sb $t3, 0x78($s2) -/* 081544 7F04CA14 A2580079 */ sb $t8, 0x79($s2) -/* 081548 7F04CA18 A24D007A */ sb $t5, 0x7a($s2) -/* 08154C 7F04CA1C 0FC15B28 */ jal sub_GAME_7F056CA0 -/* 081550 7F04CA20 A24E007B */ sb $t6, 0x7b($s2) -/* 081554 7F04CA24 10000001 */ b .L7F04CA2C -/* 081558 7F04CA28 24020001 */ li $v0, 1 -.L7F04CA2C: -/* 08155C 7F04CA2C 8FBF003C */ lw $ra, 0x3c($sp) -/* 081560 7F04CA30 8FB00030 */ lw $s0, 0x30($sp) -/* 081564 7F04CA34 8FB10034 */ lw $s1, 0x34($sp) -/* 081568 7F04CA38 8FB20038 */ lw $s2, 0x38($sp) -/* 08156C 7F04CA3C 03E00008 */ jr $ra -/* 081570 7F04CA40 27BD0108 */ addiu $sp, $sp, 0x108 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04CA44(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052D6C -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D70 -.word 0x3f555555 /*0.83333331*/ -glabel D_80052D74 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D78 -.word 0x3fd55555 /*1.6666666*/ -glabel D_80052D7C -.word 0x3f555555 /*0.83333331*/ -glabel D_80052D80 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D84 -.word 0x3C20D97C /*0.009817477*/ -glabel D_80052D88 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D8C -.word 0x3C20D97C /*0.009817477*/ -glabel D_80052D90 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052D94 -.word 0x3C20D97C /*0.009817477*/ -.text -glabel sub_GAME_7F04CA44 -/* 081574 7F04CA44 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 081578 7F04CA48 AFBF0024 */ sw $ra, 0x24($sp) -/* 08157C 7F04CA4C AFB10020 */ sw $s1, 0x20($sp) -/* 081580 7F04CA50 AFB0001C */ sw $s0, 0x1c($sp) -/* 081584 7F04CA54 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 081588 7F04CA58 8C8E0064 */ lw $t6, 0x64($a0) -/* 08158C 7F04CA5C 3C01FFF9 */ lui $at, (0xFFF9FFFF >> 16) # lui $at, 0xfff9 -/* 081590 7F04CA60 8C89000C */ lw $t1, 0xc($a0) -/* 081594 7F04CA64 3421FFFF */ ori $at, (0xFFF9FFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 081598 7F04CA68 01C17824 */ and $t7, $t6, $at -/* 08159C 7F04CA6C 0005CC40 */ sll $t9, $a1, 0x11 -/* 0815A0 7F04CA70 AC8F0064 */ sw $t7, 0x64($a0) -/* 0815A4 7F04CA74 01F94025 */ or $t0, $t7, $t9 -/* 0815A8 7F04CA78 312A0100 */ andi $t2, $t1, 0x100 -/* 0815AC 7F04CA7C 00808025 */ move $s0, $a0 -/* 0815B0 7F04CA80 1540009A */ bnez $t2, .L7F04CCEC -/* 0815B4 7F04CA84 AC880064 */ sw $t0, 0x64($a0) -/* 0815B8 7F04CA88 8C8B0008 */ lw $t3, 8($a0) -/* 0815BC 7F04CA8C 310E00C0 */ andi $t6, $t0, 0xc0 -/* 0815C0 7F04CA90 316C0001 */ andi $t4, $t3, 1 -/* 0815C4 7F04CA94 51800096 */ beql $t4, $zero, .L7F04CCF0 -/* 0815C8 7F04CA98 8FBF0024 */ lw $ra, 0x24($sp) -/* 0815CC 7F04CA9C 15C00093 */ bnez $t6, .L7F04CCEC -/* 0815D0 7F04CAA0 3C188003 */ lui $t8, %hi(D_80032040) -/* 0815D4 7F04CAA4 27182040 */ addiu $t8, %lo(D_80032040) # addiu $t8, $t8, 0x2040 -/* 0815D8 7F04CAA8 8F010000 */ lw $at, ($t8) -/* 0815DC 7F04CAAC 27AF0034 */ addiu $t7, $sp, 0x34 -/* 0815E0 7F04CAB0 8F080004 */ lw $t0, 4($t8) -/* 0815E4 7F04CAB4 ADE10000 */ sw $at, ($t7) -/* 0815E8 7F04CAB8 8F010008 */ lw $at, 8($t8) -/* 0815EC 7F04CABC ADE80004 */ sw $t0, 4($t7) -/* 0815F0 7F04CAC0 00008825 */ move $s1, $zero -/* 0815F4 7F04CAC4 ADE10008 */ sw $at, 8($t7) -/* 0815F8 7F04CAC8 0FC0FF6A */ jal sub_GAME_7F03FDA8 -/* 0815FC 7F04CACC 8C840010 */ lw $a0, 0x10($a0) -/* 081600 7F04CAD0 8E090064 */ lw $t1, 0x64($s0) -/* 081604 7F04CAD4 312A0080 */ andi $t2, $t1, 0x80 -/* 081608 7F04CAD8 11400002 */ beqz $t2, .L7F04CAE4 -/* 08160C 7F04CADC 00000000 */ nop -/* 081610 7F04CAE0 8E11006C */ lw $s1, 0x6c($s0) -.L7F04CAE4: -/* 081614 7F04CAE4 52200082 */ beql $s1, $zero, .L7F04CCF0 -/* 081618 7F04CAE8 8FBF0024 */ lw $ra, 0x24($sp) -/* 08161C 7F04CAEC 0C002914 */ jal get_random_value -/* 081620 7F04CAF0 00000000 */ nop -/* 081624 7F04CAF4 44822000 */ mtc1 $v0, $f4 -/* 081628 7F04CAF8 3C012F80 */ li $at, 0x2F800000 # 0.000000 -/* 08162C 7F04CAFC 4481A000 */ mtc1 $at, $f20 -/* 081630 7F04CB00 04410005 */ bgez $v0, .L7F04CB18 -/* 081634 7F04CB04 468021A0 */ cvt.s.w $f6, $f4 -/* 081638 7F04CB08 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 08163C 7F04CB0C 44814000 */ mtc1 $at, $f8 -/* 081640 7F04CB10 00000000 */ nop -/* 081644 7F04CB14 46083180 */ add.s $f6, $f6, $f8 -.L7F04CB18: -/* 081648 7F04CB18 46143282 */ mul.s $f10, $f6, $f20 -/* 08164C 7F04CB1C 3C018005 */ lui $at, %hi(D_80052D6C) -/* 081650 7F04CB20 C4302D6C */ lwc1 $f16, %lo(D_80052D6C)($at) -/* 081654 7F04CB24 3C018005 */ lui $at, %hi(D_80052D70) -/* 081658 7F04CB28 C4242D70 */ lwc1 $f4, %lo(D_80052D70)($at) -/* 08165C 7F04CB2C 46105482 */ mul.s $f18, $f10, $f16 -/* 081660 7F04CB30 46049201 */ sub.s $f8, $f18, $f4 -/* 081664 7F04CB34 0C002914 */ jal get_random_value -/* 081668 7F04CB38 E6280004 */ swc1 $f8, 4($s1) -/* 08166C 7F04CB3C 44823000 */ mtc1 $v0, $f6 -/* 081670 7F04CB40 3C018005 */ lui $at, %hi(D_80052D74) -/* 081674 7F04CB44 C4222D74 */ lwc1 $f2, %lo(D_80052D74)($at) -/* 081678 7F04CB48 04410005 */ bgez $v0, .L7F04CB60 -/* 08167C 7F04CB4C 468032A0 */ cvt.s.w $f10, $f6 -/* 081680 7F04CB50 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 081684 7F04CB54 44818000 */ mtc1 $at, $f16 -/* 081688 7F04CB58 00000000 */ nop -/* 08168C 7F04CB5C 46105280 */ add.s $f10, $f10, $f16 -.L7F04CB60: -/* 081690 7F04CB60 46145482 */ mul.s $f18, $f10, $f20 -/* 081694 7F04CB64 00000000 */ nop -/* 081698 7F04CB68 46029002 */ mul.s $f0, $f18, $f2 -/* 08169C 7F04CB6C 46000100 */ add.s $f4, $f0, $f0 -/* 0816A0 7F04CB70 46022200 */ add.s $f8, $f4, $f2 -/* 0816A4 7F04CB74 0C002914 */ jal get_random_value -/* 0816A8 7F04CB78 E6280008 */ swc1 $f8, 8($s1) -/* 0816AC 7F04CB7C 44823000 */ mtc1 $v0, $f6 -/* 0816B0 7F04CB80 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0816B4 7F04CB84 04410004 */ bgez $v0, .L7F04CB98 -/* 0816B8 7F04CB88 46803420 */ cvt.s.w $f16, $f6 -/* 0816BC 7F04CB8C 44815000 */ mtc1 $at, $f10 -/* 0816C0 7F04CB90 00000000 */ nop -/* 0816C4 7F04CB94 460A8400 */ add.s $f16, $f16, $f10 -.L7F04CB98: -/* 0816C8 7F04CB98 46148482 */ mul.s $f18, $f16, $f20 -/* 0816CC 7F04CB9C 3C018005 */ lui $at, %hi(D_80052D78) -/* 0816D0 7F04CBA0 C4242D78 */ lwc1 $f4, %lo(D_80052D78)($at) -/* 0816D4 7F04CBA4 3C018005 */ lui $at, %hi(D_80052D7C) -/* 0816D8 7F04CBA8 C4262D7C */ lwc1 $f6, %lo(D_80052D7C)($at) -/* 0816DC 7F04CBAC 46049202 */ mul.s $f8, $f18, $f4 -/* 0816E0 7F04CBB0 46064281 */ sub.s $f10, $f8, $f6 -/* 0816E4 7F04CBB4 E62A000C */ swc1 $f10, 0xc($s1) -/* 0816E8 7F04CBB8 8E0B000C */ lw $t3, 0xc($s0) -/* 0816EC 7F04CBBC 316C0200 */ andi $t4, $t3, 0x200 -/* 0816F0 7F04CBC0 5580003C */ bnezl $t4, .L7F04CCB4 -/* 0816F4 7F04CBC4 27A40034 */ addiu $a0, $sp, 0x34 -/* 0816F8 7F04CBC8 0C002914 */ jal get_random_value -/* 0816FC 7F04CBCC 00000000 */ nop -/* 081700 7F04CBD0 44828000 */ mtc1 $v0, $f16 -/* 081704 7F04CBD4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 081708 7F04CBD8 04410004 */ bgez $v0, .L7F04CBEC -/* 08170C 7F04CBDC 468084A0 */ cvt.s.w $f18, $f16 -/* 081710 7F04CBE0 44812000 */ mtc1 $at, $f4 -/* 081714 7F04CBE4 00000000 */ nop -/* 081718 7F04CBE8 46049480 */ add.s $f18, $f18, $f4 -.L7F04CBEC: -/* 08171C 7F04CBEC 46149202 */ mul.s $f8, $f18, $f20 -/* 081720 7F04CBF0 3C018005 */ lui $at, %hi(D_80052D80) -/* 081724 7F04CBF4 C4262D80 */ lwc1 $f6, %lo(D_80052D80)($at) -/* 081728 7F04CBF8 3C0143A0 */ li $at, 0x43A00000 # 320.000000 -/* 08172C 7F04CBFC 44818000 */ mtc1 $at, $f16 -/* 081730 7F04CC00 3C018005 */ lui $at, %hi(D_80052D84) -/* 081734 7F04CC04 C4322D84 */ lwc1 $f18, %lo(D_80052D84)($at) -/* 081738 7F04CC08 46064282 */ mul.s $f10, $f8, $f6 -/* 08173C 7F04CC0C 46105103 */ div.s $f4, $f10, $f16 -/* 081740 7F04CC10 46122201 */ sub.s $f8, $f4, $f18 -/* 081744 7F04CC14 0C002914 */ jal get_random_value -/* 081748 7F04CC18 E7A80034 */ swc1 $f8, 0x34($sp) -/* 08174C 7F04CC1C 44823000 */ mtc1 $v0, $f6 -/* 081750 7F04CC20 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 081754 7F04CC24 04410004 */ bgez $v0, .L7F04CC38 -/* 081758 7F04CC28 468032A0 */ cvt.s.w $f10, $f6 -/* 08175C 7F04CC2C 44818000 */ mtc1 $at, $f16 -/* 081760 7F04CC30 00000000 */ nop -/* 081764 7F04CC34 46105280 */ add.s $f10, $f10, $f16 -.L7F04CC38: -/* 081768 7F04CC38 46145102 */ mul.s $f4, $f10, $f20 -/* 08176C 7F04CC3C 3C018005 */ lui $at, %hi(D_80052D88) -/* 081770 7F04CC40 C4322D88 */ lwc1 $f18, %lo(D_80052D88)($at) -/* 081774 7F04CC44 3C0143A0 */ li $at, 0x43A00000 # 320.000000 -/* 081778 7F04CC48 44813000 */ mtc1 $at, $f6 -/* 08177C 7F04CC4C 3C018005 */ lui $at, %hi(D_80052D8C) -/* 081780 7F04CC50 C42A2D8C */ lwc1 $f10, %lo(D_80052D8C)($at) -/* 081784 7F04CC54 46122202 */ mul.s $f8, $f4, $f18 -/* 081788 7F04CC58 46064403 */ div.s $f16, $f8, $f6 -/* 08178C 7F04CC5C 460A8101 */ sub.s $f4, $f16, $f10 -/* 081790 7F04CC60 0C002914 */ jal get_random_value -/* 081794 7F04CC64 E7A40038 */ swc1 $f4, 0x38($sp) -/* 081798 7F04CC68 44829000 */ mtc1 $v0, $f18 -/* 08179C 7F04CC6C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0817A0 7F04CC70 04410004 */ bgez $v0, .L7F04CC84 -/* 0817A4 7F04CC74 46809220 */ cvt.s.w $f8, $f18 -/* 0817A8 7F04CC78 44813000 */ mtc1 $at, $f6 -/* 0817AC 7F04CC7C 00000000 */ nop -/* 0817B0 7F04CC80 46064200 */ add.s $f8, $f8, $f6 -.L7F04CC84: -/* 0817B4 7F04CC84 46144402 */ mul.s $f16, $f8, $f20 -/* 0817B8 7F04CC88 3C018005 */ lui $at, %hi(D_80052D90) -/* 0817BC 7F04CC8C C42A2D90 */ lwc1 $f10, %lo(D_80052D90)($at) -/* 0817C0 7F04CC90 3C0143A0 */ li $at, 0x43A00000 # 320.000000 -/* 0817C4 7F04CC94 44819000 */ mtc1 $at, $f18 -/* 0817C8 7F04CC98 3C018005 */ lui $at, %hi(D_80052D94) -/* 0817CC 7F04CC9C C4282D94 */ lwc1 $f8, %lo(D_80052D94)($at) -/* 0817D0 7F04CCA0 460A8102 */ mul.s $f4, $f16, $f10 -/* 0817D4 7F04CCA4 46122183 */ div.s $f6, $f4, $f18 -/* 0817D8 7F04CCA8 46083401 */ sub.s $f16, $f6, $f8 -/* 0817DC 7F04CCAC E7B0003C */ swc1 $f16, 0x3c($sp) -/* 0817E0 7F04CCB0 27A40034 */ addiu $a0, $sp, 0x34 -.L7F04CCB4: -/* 0817E4 7F04CCB4 0FC161C5 */ jal sub_GAME_7F058714 -/* 0817E8 7F04CCB8 26250020 */ addiu $a1, $s1, 0x20 -/* 0817EC 7F04CCBC 8E2D0000 */ lw $t5, ($s1) -/* 0817F0 7F04CCC0 2401FEFF */ li $at, -257 -/* 0817F4 7F04CCC4 35AE0001 */ ori $t6, $t5, 1 -/* 0817F8 7F04CCC8 AE2E0000 */ sw $t6, ($s1) -/* 0817FC 7F04CCCC 8E190008 */ lw $t9, 8($s0) -/* 081800 7F04CCD0 8E180064 */ lw $t8, 0x64($s0) -/* 081804 7F04CCD4 03217824 */ and $t7, $t9, $at -/* 081808 7F04CCD8 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff -/* 08180C 7F04CCDC 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff -/* 081810 7F04CCE0 03014024 */ and $t0, $t8, $at -/* 081814 7F04CCE4 AE0F0008 */ sw $t7, 8($s0) -/* 081818 7F04CCE8 AE080064 */ sw $t0, 0x64($s0) -.L7F04CCEC: -/* 08181C 7F04CCEC 8FBF0024 */ lw $ra, 0x24($sp) -.L7F04CCF0: -/* 081820 7F04CCF0 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 081824 7F04CCF4 8FB0001C */ lw $s0, 0x1c($sp) -/* 081828 7F04CCF8 8FB10020 */ lw $s1, 0x20($sp) -/* 08182C 7F04CCFC 03E00008 */ jr $ra -/* 081830 7F04CD00 27BD0040 */ addiu $sp, $sp, 0x40 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04CD04(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04CD04 -/* 081834 7F04CD04 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 081838 7F04CD08 AFBF0034 */ sw $ra, 0x34($sp) -/* 08183C 7F04CD0C AFB60030 */ sw $s6, 0x30($sp) -/* 081840 7F04CD10 AFB5002C */ sw $s5, 0x2c($sp) -/* 081844 7F04CD14 AFB40028 */ sw $s4, 0x28($sp) -/* 081848 7F04CD18 AFB30024 */ sw $s3, 0x24($sp) -/* 08184C 7F04CD1C AFB20020 */ sw $s2, 0x20($sp) -/* 081850 7F04CD20 AFB1001C */ sw $s1, 0x1c($sp) -/* 081854 7F04CD24 AFB00018 */ sw $s0, 0x18($sp) -/* 081858 7F04CD28 8C8E0014 */ lw $t6, 0x14($a0) -/* 08185C 7F04CD2C 00A0B025 */ move $s6, $a1 -/* 081860 7F04CD30 8C940004 */ lw $s4, 4($a0) -/* 081864 7F04CD34 27A50048 */ addiu $a1, $sp, 0x48 -/* 081868 7F04CD38 27A60044 */ addiu $a2, $sp, 0x44 -/* 08186C 7F04CD3C 0FC0F32C */ jal sub_GAME_7F03CCB0 -/* 081870 7F04CD40 91D50003 */ lbu $s5, 3($t6) -/* 081874 7F04CD44 8FAF0044 */ lw $t7, 0x44($sp) -/* 081878 7F04CD48 59E00027 */ blezl $t7, .L7F04CDE8 -/* 08187C 7F04CD4C 8FBF0034 */ lw $ra, 0x34($sp) -/* 081880 7F04CD50 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry -/* 081884 7F04CD54 00000000 */ nop -/* 081888 7F04CD58 10400022 */ beqz $v0, .L7F04CDE4 -/* 08188C 7F04CD5C 00408825 */ move $s1, $v0 -/* 081890 7F04CD60 24130004 */ li $s3, 4 -/* 081894 7F04CD64 24120001 */ li $s2, 1 -/* 081898 7F04CD68 92220000 */ lbu $v0, ($s1) -.L7F04CD6C: -/* 08189C 7F04CD6C 52420004 */ beql $s2, $v0, .L7F04CD80 -/* 0818A0 7F04CD70 8E380014 */ lw $t8, 0x14($s1) -/* 0818A4 7F04CD74 56620019 */ bnel $s3, $v0, .L7F04CDDC -/* 0818A8 7F04CD78 8E310024 */ lw $s1, 0x24($s1) -/* 0818AC 7F04CD7C 8E380014 */ lw $t8, 0x14($s1) -.L7F04CD80: -/* 0818B0 7F04CD80 93190003 */ lbu $t9, 3($t8) -/* 0818B4 7F04CD84 56B90015 */ bnel $s5, $t9, .L7F04CDDC -/* 0818B8 7F04CD88 8E310024 */ lw $s1, 0x24($s1) -/* 0818BC 7F04CD8C 8E300004 */ lw $s0, 4($s1) -/* 0818C0 7F04CD90 C684005C */ lwc1 $f4, 0x5c($s4) -/* 0818C4 7F04CD94 C606005C */ lwc1 $f6, 0x5c($s0) -/* 0818C8 7F04CD98 4606203C */ c.lt.s $f4, $f6 -/* 0818CC 7F04CD9C 00000000 */ nop -/* 0818D0 7F04CDA0 4502000E */ bc1fl .L7F04CDDC -/* 0818D4 7F04CDA4 8E310024 */ lw $s1, 0x24($s1) -/* 0818D8 7F04CDA8 8E080064 */ lw $t0, 0x64($s0) -/* 0818DC 7F04CDAC 26040058 */ addiu $a0, $s0, 0x58 -/* 0818E0 7F04CDB0 8FA50048 */ lw $a1, 0x48($sp) -/* 0818E4 7F04CDB4 31098000 */ andi $t1, $t0, 0x8000 -/* 0818E8 7F04CDB8 51200008 */ beql $t1, $zero, .L7F04CDDC -/* 0818EC 7F04CDBC 8E310024 */ lw $s1, 0x24($s1) -/* 0818F0 7F04CDC0 0FC0F336 */ jal sub_GAME_7F03CCD8 -/* 0818F4 7F04CDC4 8FA60044 */ lw $a2, 0x44($sp) -/* 0818F8 7F04CDC8 10400003 */ beqz $v0, .L7F04CDD8 -/* 0818FC 7F04CDCC 02002025 */ move $a0, $s0 -/* 081900 7F04CDD0 0FC13291 */ jal sub_GAME_7F04CA44 -/* 081904 7F04CDD4 02C02825 */ move $a1, $s6 -.L7F04CDD8: -/* 081908 7F04CDD8 8E310024 */ lw $s1, 0x24($s1) -.L7F04CDDC: -/* 08190C 7F04CDDC 5620FFE3 */ bnezl $s1, .L7F04CD6C -/* 081910 7F04CDE0 92220000 */ lbu $v0, ($s1) -.L7F04CDE4: -/* 081914 7F04CDE4 8FBF0034 */ lw $ra, 0x34($sp) -.L7F04CDE8: -/* 081918 7F04CDE8 8FB00018 */ lw $s0, 0x18($sp) -/* 08191C 7F04CDEC 8FB1001C */ lw $s1, 0x1c($sp) -/* 081920 7F04CDF0 8FB20020 */ lw $s2, 0x20($sp) -/* 081924 7F04CDF4 8FB30024 */ lw $s3, 0x24($sp) -/* 081928 7F04CDF8 8FB40028 */ lw $s4, 0x28($sp) -/* 08192C 7F04CDFC 8FB5002C */ lw $s5, 0x2c($sp) -/* 081930 7F04CE00 8FB60030 */ lw $s6, 0x30($sp) -/* 081934 7F04CE04 03E00008 */ jr $ra -/* 081938 7F04CE08 27BD0058 */ addiu $sp, $sp, 0x58 -) -#endif - - - - - -#ifdef NONMATCHING -void object_explosion_related(void) { - -} -#else -GLOBAL_ASM( -.text -glabel object_explosion_related -/* 08193C 7F04CE0C 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 081940 7F04CE10 AFBF002C */ sw $ra, 0x2c($sp) -/* 081944 7F04CE14 AFB10028 */ sw $s1, 0x28($sp) -/* 081948 7F04CE18 AFB00024 */ sw $s0, 0x24($sp) -/* 08194C 7F04CE1C AFA5004C */ sw $a1, 0x4c($sp) -/* 081950 7F04CE20 AFA60050 */ sw $a2, 0x50($sp) -/* 081954 7F04CE24 C4860070 */ lwc1 $f6, 0x70($a0) -/* 081958 7F04CE28 C4840074 */ lwc1 $f4, 0x74($a0) -/* 08195C 7F04CE2C 00808825 */ move $s1, $a0 -/* 081960 7F04CE30 4606203C */ c.lt.s $f4, $f6 -/* 081964 7F04CE34 00000000 */ nop -/* 081968 7F04CE38 45030006 */ bc1tl .L7F04CE54 -/* 08196C 7F04CE3C 862E0004 */ lh $t6, 4($s1) -/* 081970 7F04CE40 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 081974 7F04CE44 00000000 */ nop -/* 081978 7F04CE48 504000C4 */ beql $v0, $zero, .L7F04D15C -/* 08197C 7F04CE4C 8FBF002C */ lw $ra, 0x2c($sp) -/* 081980 7F04CE50 862E0004 */ lh $t6, 4($s1) -.L7F04CE54: -/* 081984 7F04CE54 3C188004 */ lui $t8, %hi(object_explosion_details) -/* 081988 7F04CE58 8E230010 */ lw $v1, 0x10($s1) -/* 08198C 7F04CE5C 000E78C0 */ sll $t7, $t6, 3 -/* 081990 7F04CE60 01EE7823 */ subu $t7, $t7, $t6 -/* 081994 7F04CE64 000F7840 */ sll $t7, $t7, 1 -/* 081998 7F04CE68 030FC021 */ addu $t8, $t8, $t7 -/* 08199C 7F04CE6C 8718B224 */ lh $t8, %lo(object_explosion_details)($t8) -/* 0819A0 7F04CE70 02202025 */ move $a0, $s1 -/* 0819A4 7F04CE74 00608025 */ move $s0, $v1 -/* 0819A8 7F04CE78 A7B8003E */ sh $t8, 0x3e($sp) -/* 0819AC 7F04CE7C 8C79001C */ lw $t9, 0x1c($v1) -/* 0819B0 7F04CE80 53200007 */ beql $t9, $zero, .L7F04CEA0 -/* 0819B4 7F04CE84 8E080014 */ lw $t0, 0x14($s0) -/* 0819B8 7F04CE88 8E02001C */ lw $v0, 0x1c($s0) -/* 0819BC 7F04CE8C 00408025 */ move $s0, $v0 -.L7F04CE90: -/* 0819C0 7F04CE90 8C42001C */ lw $v0, 0x1c($v0) -/* 0819C4 7F04CE94 5440FFFE */ bnezl $v0, .L7F04CE90 -/* 0819C8 7F04CE98 00408025 */ move $s0, $v0 -/* 0819CC 7F04CE9C 8E080014 */ lw $t0, 0x14($s0) -.L7F04CEA0: -/* 0819D0 7F04CEA0 AFA30044 */ sw $v1, 0x44($sp) -/* 0819D4 7F04CEA4 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 0819D8 7F04CEA8 AFA80038 */ sw $t0, 0x38($sp) -/* 0819DC 7F04CEAC 14400056 */ bnez $v0, .L7F04D008 -/* 0819E0 7F04CEB0 00000000 */ nop -/* 0819E4 7F04CEB4 92290002 */ lbu $t1, 2($s1) -/* 0819E8 7F04CEB8 44804000 */ mtc1 $zero, $f8 -/* 0819EC 7F04CEBC 352A0080 */ ori $t2, $t1, 0x80 -/* 0819F0 7F04CEC0 A22A0002 */ sb $t2, 2($s1) -/* 0819F4 7F04CEC4 E6280070 */ swc1 $f8, 0x70($s1) -/* 0819F8 7F04CEC8 8FAB0038 */ lw $t3, 0x38($sp) -/* 0819FC 7F04CECC 5160002B */ beql $t3, $zero, .L7F04CF7C -/* 081A00 7F04CED0 8E2C000C */ lw $t4, 0xc($s1) -/* 081A04 7F04CED4 920C0001 */ lbu $t4, 1($s0) -/* 081A08 7F04CED8 8FA2004C */ lw $v0, 0x4c($sp) -/* 081A0C 7F04CEDC 27A40038 */ addiu $a0, $sp, 0x38 -/* 081A10 7F04CEE0 318D0008 */ andi $t5, $t4, 8 -/* 081A14 7F04CEE4 55A00019 */ bnezl $t5, .L7F04CF4C -/* 081A18 7F04CEE8 8E060014 */ lw $a2, 0x14($s0) -/* 081A1C 7F04CEEC C44A0008 */ lwc1 $f10, 8($v0) -/* 081A20 7F04CEF0 8E050008 */ lw $a1, 8($s0) -/* 081A24 7F04CEF4 8E060010 */ lw $a2, 0x10($s0) -/* 081A28 7F04CEF8 8C470000 */ lw $a3, ($v0) -/* 081A2C 7F04CEFC 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 081A30 7F04CF00 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 081A34 7F04CF04 10400010 */ beqz $v0, .L7F04CF48 -/* 081A38 7F04CF08 8FA40044 */ lw $a0, 0x44($sp) -/* 081A3C 7F04CF0C 8E2E0008 */ lw $t6, 8($s1) -/* 081A40 7F04CF10 8FB90050 */ lw $t9, 0x50($sp) -/* 081A44 7F04CF14 2608002C */ addiu $t0, $s0, 0x2c -/* 081A48 7F04CF18 31CF000E */ andi $t7, $t6, 0xe -/* 081A4C 7F04CF1C 2DF80001 */ sltiu $t8, $t7, 1 -/* 081A50 7F04CF20 AFB80010 */ sw $t8, 0x10($sp) -/* 081A54 7F04CF24 AFA80018 */ sw $t0, 0x18($sp) -/* 081A58 7F04CF28 AFA0001C */ sw $zero, 0x1c($sp) -/* 081A5C 7F04CF2C 8FA5004C */ lw $a1, 0x4c($sp) -/* 081A60 7F04CF30 8FA60038 */ lw $a2, 0x38($sp) -/* 081A64 7F04CF34 87A7003E */ lh $a3, 0x3e($sp) -/* 081A68 7F04CF38 0FC27094 */ jal sub_GAME_7F09C250 -/* 081A6C 7F04CF3C AFB90014 */ sw $t9, 0x14($sp) -/* 081A70 7F04CF40 1000000E */ b .L7F04CF7C -/* 081A74 7F04CF44 8E2C000C */ lw $t4, 0xc($s1) -.L7F04CF48: -/* 081A78 7F04CF48 8E060014 */ lw $a2, 0x14($s0) -.L7F04CF4C: -/* 081A7C 7F04CF4C 8FA90050 */ lw $t1, 0x50($sp) -/* 081A80 7F04CF50 260A002C */ addiu $t2, $s0, 0x2c -/* 081A84 7F04CF54 240B0001 */ li $t3, 1 -/* 081A88 7F04CF58 AFAB001C */ sw $t3, 0x1c($sp) -/* 081A8C 7F04CF5C AFAA0018 */ sw $t2, 0x18($sp) -/* 081A90 7F04CF60 AFA00010 */ sw $zero, 0x10($sp) -/* 081A94 7F04CF64 8FA40044 */ lw $a0, 0x44($sp) -/* 081A98 7F04CF68 8FA5004C */ lw $a1, 0x4c($sp) -/* 081A9C 7F04CF6C 87A7003E */ lh $a3, 0x3e($sp) -/* 081AA0 7F04CF70 0FC27094 */ jal sub_GAME_7F09C250 -/* 081AA4 7F04CF74 AFA90014 */ sw $t1, 0x14($sp) -/* 081AA8 7F04CF78 8E2C000C */ lw $t4, 0xc($s1) -.L7F04CF7C: -/* 081AAC 7F04CF7C 02202025 */ move $a0, $s1 -/* 081AB0 7F04CF80 318D2000 */ andi $t5, $t4, 0x2000 -/* 081AB4 7F04CF84 11A00005 */ beqz $t5, .L7F04CF9C -/* 081AB8 7F04CF88 00000000 */ nop -/* 081ABC 7F04CF8C 8E2E0064 */ lw $t6, 0x64($s1) -/* 081AC0 7F04CF90 35CF0004 */ ori $t7, $t6, 4 -/* 081AC4 7F04CF94 10000070 */ b .L7F04D158 -/* 081AC8 7F04CF98 AE2F0064 */ sw $t7, 0x64($s1) -.L7F04CF9C: -/* 081ACC 7F04CF9C 0FC12D84 */ jal sub_GAME_7F04B610 -/* 081AD0 7F04CFA0 24050001 */ li $a1, 1 -/* 081AD4 7F04CFA4 8FA40044 */ lw $a0, 0x44($sp) -/* 081AD8 7F04CFA8 5604006C */ bnel $s0, $a0, .L7F04D15C -/* 081ADC 7F04CFAC 8FBF002C */ lw $ra, 0x2c($sp) -/* 081AE0 7F04CFB0 0FC13341 */ jal sub_GAME_7F04CD04 -/* 081AE4 7F04CFB4 8FA50050 */ lw $a1, 0x50($sp) -/* 081AE8 7F04CFB8 8E220064 */ lw $v0, 0x64($s1) -/* 081AEC 7F04CFBC 30588000 */ andi $t8, $v0, 0x8000 -/* 081AF0 7F04CFC0 5300000A */ beql $t8, $zero, .L7F04CFEC -/* 081AF4 7F04CFC4 3C010001 */ lui $at, 1 -/* 081AF8 7F04CFC8 0C002914 */ jal get_random_value -/* 081AFC 7F04CFCC 00000000 */ nop -/* 081B00 7F04CFD0 24010003 */ li $at, 3 -/* 081B04 7F04CFD4 0041001B */ divu $zero, $v0, $at -/* 081B08 7F04CFD8 0000C810 */ mfhi $t9 -/* 081B0C 7F04CFDC 5720005F */ bnezl $t9, .L7F04D15C -/* 081B10 7F04CFE0 8FBF002C */ lw $ra, 0x2c($sp) -/* 081B14 7F04CFE4 8E220064 */ lw $v0, 0x64($s1) -/* 081B18 7F04CFE8 3C010001 */ lui $at, 1 -.L7F04CFEC: -/* 081B1C 7F04CFEC 00414025 */ or $t0, $v0, $at -/* 081B20 7F04CFF0 AE280064 */ sw $t0, 0x64($s1) -/* 081B24 7F04CFF4 8FA50050 */ lw $a1, 0x50($sp) -/* 081B28 7F04CFF8 0FC13291 */ jal sub_GAME_7F04CA44 -/* 081B2C 7F04CFFC 02202025 */ move $a0, $s1 -/* 081B30 7F04D000 10000056 */ b .L7F04D15C -/* 081B34 7F04D004 8FBF002C */ lw $ra, 0x2c($sp) -.L7F04D008: -/* 081B38 7F04D008 0FC0FFD8 */ jal sub_GAME_7F03FF60 -/* 081B3C 7F04D00C 02202025 */ move $a0, $s1 -/* 081B40 7F04D010 30490003 */ andi $t1, $v0, 3 -/* 081B44 7F04D014 15200031 */ bnez $t1, .L7F04D0DC -/* 081B48 7F04D018 AFA20034 */ sw $v0, 0x34($sp) -/* 081B4C 7F04D01C 00025083 */ sra $t2, $v0, 2 -/* 081B50 7F04D020 25450001 */ addiu $a1, $t2, 1 -/* 081B54 7F04D024 0FC12D84 */ jal sub_GAME_7F04B610 -/* 081B58 7F04D028 02202025 */ move $a0, $s1 -/* 081B5C 7F04D02C 8FAB0038 */ lw $t3, 0x38($sp) -/* 081B60 7F04D030 1160002A */ beqz $t3, .L7F04D0DC -/* 081B64 7F04D034 00000000 */ nop -/* 081B68 7F04D038 920C0001 */ lbu $t4, 1($s0) -/* 081B6C 7F04D03C 8FA2004C */ lw $v0, 0x4c($sp) -/* 081B70 7F04D040 27A40038 */ addiu $a0, $sp, 0x38 -/* 081B74 7F04D044 318D0008 */ andi $t5, $t4, 8 -/* 081B78 7F04D048 55A00019 */ bnezl $t5, .L7F04D0B0 -/* 081B7C 7F04D04C 8E060014 */ lw $a2, 0x14($s0) -/* 081B80 7F04D050 C4500008 */ lwc1 $f16, 8($v0) -/* 081B84 7F04D054 8E050008 */ lw $a1, 8($s0) -/* 081B88 7F04D058 8E060010 */ lw $a2, 0x10($s0) -/* 081B8C 7F04D05C 8C470000 */ lw $a3, ($v0) -/* 081B90 7F04D060 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 081B94 7F04D064 E7B00010 */ swc1 $f16, 0x10($sp) -/* 081B98 7F04D068 10400010 */ beqz $v0, .L7F04D0AC -/* 081B9C 7F04D06C 8FA40044 */ lw $a0, 0x44($sp) -/* 081BA0 7F04D070 8E2E0008 */ lw $t6, 8($s1) -/* 081BA4 7F04D074 8FB90050 */ lw $t9, 0x50($sp) -/* 081BA8 7F04D078 2608002C */ addiu $t0, $s0, 0x2c -/* 081BAC 7F04D07C 31CF000E */ andi $t7, $t6, 0xe -/* 081BB0 7F04D080 2DF80001 */ sltiu $t8, $t7, 1 -/* 081BB4 7F04D084 AFB80010 */ sw $t8, 0x10($sp) -/* 081BB8 7F04D088 AFA80018 */ sw $t0, 0x18($sp) -/* 081BBC 7F04D08C AFA0001C */ sw $zero, 0x1c($sp) -/* 081BC0 7F04D090 8FA5004C */ lw $a1, 0x4c($sp) -/* 081BC4 7F04D094 8FA60038 */ lw $a2, 0x38($sp) -/* 081BC8 7F04D098 24070010 */ li $a3, 16 -/* 081BCC 7F04D09C 0FC27094 */ jal sub_GAME_7F09C250 -/* 081BD0 7F04D0A0 AFB90014 */ sw $t9, 0x14($sp) -/* 081BD4 7F04D0A4 1000000D */ b .L7F04D0DC -/* 081BD8 7F04D0A8 00000000 */ nop -.L7F04D0AC: -/* 081BDC 7F04D0AC 8E060014 */ lw $a2, 0x14($s0) -.L7F04D0B0: -/* 081BE0 7F04D0B0 8FA90050 */ lw $t1, 0x50($sp) -/* 081BE4 7F04D0B4 260A002C */ addiu $t2, $s0, 0x2c -/* 081BE8 7F04D0B8 240B0001 */ li $t3, 1 -/* 081BEC 7F04D0BC AFAB001C */ sw $t3, 0x1c($sp) -/* 081BF0 7F04D0C0 AFAA0018 */ sw $t2, 0x18($sp) -/* 081BF4 7F04D0C4 AFA00010 */ sw $zero, 0x10($sp) -/* 081BF8 7F04D0C8 8FA40044 */ lw $a0, 0x44($sp) -/* 081BFC 7F04D0CC 8FA5004C */ lw $a1, 0x4c($sp) -/* 081C00 7F04D0D0 24070010 */ li $a3, 16 -/* 081C04 7F04D0D4 0FC27094 */ jal sub_GAME_7F09C250 -/* 081C08 7F04D0D8 AFA90014 */ sw $t1, 0x14($sp) -.L7F04D0DC: -/* 081C0C 7F04D0DC 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 081C10 7F04D0E0 02202025 */ move $a0, $s1 -/* 081C14 7F04D0E4 58400012 */ blezl $v0, .L7F04D130 -/* 081C18 7F04D0E8 8FA90034 */ lw $t1, 0x34($sp) -/* 081C1C 7F04D0EC 92220002 */ lbu $v0, 2($s1) -/* 081C20 7F04D0F0 304C0004 */ andi $t4, $v0, 4 -/* 081C24 7F04D0F4 5180000E */ beql $t4, $zero, .L7F04D130 -/* 081C28 7F04D0F8 8FA90034 */ lw $t1, 0x34($sp) -/* 081C2C 7F04D0FC 8E2D0064 */ lw $t5, 0x64($s1) -/* 081C30 7F04D100 344F0010 */ ori $t7, $v0, 0x10 -/* 081C34 7F04D104 3058FFEF */ andi $t8, $v0, 0xffef -/* 081C38 7F04D108 31AE1000 */ andi $t6, $t5, 0x1000 -/* 081C3C 7F04D10C 51C00004 */ beql $t6, $zero, .L7F04D120 -/* 081C40 7F04D110 A2380002 */ sb $t8, 2($s1) -/* 081C44 7F04D114 10000002 */ b .L7F04D120 -/* 081C48 7F04D118 A22F0002 */ sb $t7, 2($s1) -/* 081C4C 7F04D11C A2380002 */ sb $t8, 2($s1) -.L7F04D120: -/* 081C50 7F04D120 8FA80044 */ lw $t0, 0x44($sp) -/* 081C54 7F04D124 241904B0 */ li $t9, 1200 -/* 081C58 7F04D128 A5190002 */ sh $t9, 2($t0) -/* 081C5C 7F04D12C 8FA90034 */ lw $t1, 0x34($sp) -.L7F04D130: -/* 081C60 7F04D130 2921000C */ slti $at, $t1, 0xc -/* 081C64 7F04D134 54200009 */ bnezl $at, .L7F04D15C -/* 081C68 7F04D138 8FBF002C */ lw $ra, 0x2c($sp) -/* 081C6C 7F04D13C 8E2A0064 */ lw $t2, 0x64($s1) -/* 081C70 7F04D140 8E2C0008 */ lw $t4, 8($s1) -/* 081C74 7F04D144 2401FEFF */ li $at, -257 -/* 081C78 7F04D148 354B1000 */ ori $t3, $t2, 0x1000 -/* 081C7C 7F04D14C 01816824 */ and $t5, $t4, $at -/* 081C80 7F04D150 AE2B0064 */ sw $t3, 0x64($s1) -/* 081C84 7F04D154 AE2D0008 */ sw $t5, 8($s1) -.L7F04D158: -/* 081C88 7F04D158 8FBF002C */ lw $ra, 0x2c($sp) -.L7F04D15C: -/* 081C8C 7F04D15C 8FB00024 */ lw $s0, 0x24($sp) -/* 081C90 7F04D160 8FB10028 */ lw $s1, 0x28($sp) -/* 081C94 7F04D164 03E00008 */ jr $ra -/* 081C98 7F04D168 27BD0048 */ addiu $sp, $sp, 0x48 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04D16C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04D16C -/* 081C9C 7F04D16C 27BDFEB0 */ addiu $sp, $sp, -0x150 -/* 081CA0 7F04D170 F7B40028 */ sdc1 $f20, 0x28($sp) -/* 081CA4 7F04D174 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 081CA8 7F04D178 AFBE0050 */ sw $fp, 0x50($sp) -/* 081CAC 7F04D17C AFB7004C */ sw $s7, 0x4c($sp) -/* 081CB0 7F04D180 AFB60048 */ sw $s6, 0x48($sp) -/* 081CB4 7F04D184 AFB50044 */ sw $s5, 0x44($sp) -/* 081CB8 7F04D188 AFB40040 */ sw $s4, 0x40($sp) -/* 081CBC 7F04D18C AFB3003C */ sw $s3, 0x3c($sp) -/* 081CC0 7F04D190 AFB10034 */ sw $s1, 0x34($sp) -/* 081CC4 7F04D194 AFB00030 */ sw $s0, 0x30($sp) -/* 081CC8 7F04D198 4481A000 */ mtc1 $at, $f20 -/* 081CCC 7F04D19C 00E08825 */ move $s1, $a3 -/* 081CD0 7F04D1A0 0080B825 */ move $s7, $a0 -/* 081CD4 7F04D1A4 00C0F025 */ move $fp, $a2 -/* 081CD8 7F04D1A8 AFBF0054 */ sw $ra, 0x54($sp) -/* 081CDC 7F04D1AC AFB20038 */ sw $s2, 0x38($sp) -/* 081CE0 7F04D1B0 AFA50154 */ sw $a1, 0x154($sp) -/* 081CE4 7F04D1B4 AFA00110 */ sw $zero, 0x110($sp) -/* 081CE8 7F04D1B8 00E09825 */ move $s3, $a3 -/* 081CEC 7F04D1BC 8FB0014C */ lw $s0, 0x14c($sp) -/* 081CF0 7F04D1C0 8FB40168 */ lw $s4, 0x168($sp) -/* 081CF4 7F04D1C4 241500FD */ li $s5, 253 -/* 081CF8 7F04D1C8 27B600B0 */ addiu $s6, $sp, 0xb0 -.L7F04D1CC: -/* 081CFC 7F04D1CC 82220000 */ lb $v0, ($s1) -/* 081D00 7F04D1D0 2401FFB8 */ li $at, -72 -/* 081D04 7F04D1D4 8FAE0160 */ lw $t6, 0x160($sp) -/* 081D08 7F04D1D8 54410007 */ bnel $v0, $at, .L7F04D1F8 -/* 081D0C 7F04D1DC 24010004 */ li $at, 4 -/* 081D10 7F04D1E0 11C001E5 */ beqz $t6, .L7F04D978 -/* 081D14 7F04D1E4 01C09825 */ move $s3, $t6 -/* 081D18 7F04D1E8 01C08825 */ move $s1, $t6 -/* 081D1C 7F04D1EC 1000FFF7 */ b .L7F04D1CC -/* 081D20 7F04D1F0 AFA00160 */ sw $zero, 0x160($sp) -/* 081D24 7F04D1F4 24010004 */ li $at, 4 -.L7F04D1F8: -/* 081D28 7F04D1F8 1441000C */ bne $v0, $at, .L7F04D22C -/* 081D2C 7F04D1FC 8FB90164 */ lw $t9, 0x164($sp) -/* 081D30 7F04D200 92220001 */ lbu $v0, 1($s1) -/* 081D34 7F04D204 8E230004 */ lw $v1, 4($s1) -/* 081D38 7F04D208 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* 081D3C 7F04D20C 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 081D40 7F04D210 304F000F */ andi $t7, $v0, 0xf -/* 081D44 7F04D214 0061C024 */ and $t8, $v1, $at -/* 081D48 7F04D218 03384021 */ addu $t0, $t9, $t8 -/* 081D4C 7F04D21C 000F4900 */ sll $t1, $t7, 4 -/* 081D50 7F04D220 01098023 */ subu $s0, $t0, $t1 -/* 081D54 7F04D224 1000FFE9 */ b .L7F04D1CC -/* 081D58 7F04D228 26310008 */ addiu $s1, $s1, 8 -.L7F04D22C: -/* 081D5C 7F04D22C 2401FFBF */ li $at, -65 -/* 081D60 7F04D230 144100E2 */ bne $v0, $at, .L7F04D5BC -/* 081D64 7F04D234 2403000A */ li $v1, 10 -/* 081D68 7F04D238 3C0B8003 */ lui $t3, %hi(D_8003204C) -/* 081D6C 7F04D23C 256B204C */ addiu $t3, %lo(D_8003204C) # addiu $t3, $t3, 0x204c -/* 081D70 7F04D240 8D610000 */ lw $at, ($t3) -/* 081D74 7F04D244 27AA00E8 */ addiu $t2, $sp, 0xe8 -/* 081D78 7F04D248 8D6D0004 */ lw $t5, 4($t3) -/* 081D7C 7F04D24C AD410000 */ sw $at, ($t2) -/* 081D80 7F04D250 8D610008 */ lw $at, 8($t3) -/* 081D84 7F04D254 3C0F8003 */ lui $t7, %hi(D_80032058) -/* 081D88 7F04D258 25EF2058 */ addiu $t7, %lo(D_80032058) # addiu $t7, $t7, 0x2058 -/* 081D8C 7F04D25C AD4D0004 */ sw $t5, 4($t2) -/* 081D90 7F04D260 AD410008 */ sw $at, 8($t2) -/* 081D94 7F04D264 8DE10000 */ lw $at, ($t7) -/* 081D98 7F04D268 27AE00DC */ addiu $t6, $sp, 0xdc -/* 081D9C 7F04D26C 8DF90004 */ lw $t9, 4($t7) -/* 081DA0 7F04D270 ADC10000 */ sw $at, ($t6) -/* 081DA4 7F04D274 8DE10008 */ lw $at, 8($t7) -/* 081DA8 7F04D278 ADD90004 */ sw $t9, 4($t6) -/* 081DAC 7F04D27C 00001025 */ move $v0, $zero -/* 081DB0 7F04D280 ADC10008 */ sw $at, 8($t6) -/* 081DB4 7F04D284 92280005 */ lbu $t0, 5($s1) -/* 081DB8 7F04D288 27A400F8 */ addiu $a0, $sp, 0xf8 -/* 081DBC 7F04D28C 03C02825 */ move $a1, $fp -/* 081DC0 7F04D290 0103001A */ div $zero, $t0, $v1 -/* 081DC4 7F04D294 00004812 */ mflo $t1 -/* 081DC8 7F04D298 AFA900F8 */ sw $t1, 0xf8($sp) -/* 081DCC 7F04D29C 922C0006 */ lbu $t4, 6($s1) -/* 081DD0 7F04D2A0 14600002 */ bnez $v1, .L7F04D2AC -/* 081DD4 7F04D2A4 00000000 */ nop -/* 081DD8 7F04D2A8 0007000D */ break 7 -.L7F04D2AC: -/* 081DDC 7F04D2AC 2401FFFF */ li $at, -1 -/* 081DE0 7F04D2B0 14610004 */ bne $v1, $at, .L7F04D2C4 -/* 081DE4 7F04D2B4 3C018000 */ lui $at, 0x8000 -/* 081DE8 7F04D2B8 15010002 */ bne $t0, $at, .L7F04D2C4 -/* 081DEC 7F04D2BC 00000000 */ nop -/* 081DF0 7F04D2C0 0006000D */ break 6 -.L7F04D2C4: -/* 081DF4 7F04D2C4 0183001A */ div $zero, $t4, $v1 -/* 081DF8 7F04D2C8 00005012 */ mflo $t2 -/* 081DFC 7F04D2CC AFAA00FC */ sw $t2, 0xfc($sp) -/* 081E00 7F04D2D0 922B0007 */ lbu $t3, 7($s1) -/* 081E04 7F04D2D4 14600002 */ bnez $v1, .L7F04D2E0 -/* 081E08 7F04D2D8 00000000 */ nop -/* 081E0C 7F04D2DC 0007000D */ break 7 -.L7F04D2E0: -/* 081E10 7F04D2E0 2401FFFF */ li $at, -1 -/* 081E14 7F04D2E4 14610004 */ bne $v1, $at, .L7F04D2F8 -/* 081E18 7F04D2E8 3C018000 */ lui $at, 0x8000 -/* 081E1C 7F04D2EC 15810002 */ bne $t4, $at, .L7F04D2F8 -/* 081E20 7F04D2F0 00000000 */ nop -/* 081E24 7F04D2F4 0006000D */ break 6 -.L7F04D2F8: -/* 081E28 7F04D2F8 0163001A */ div $zero, $t3, $v1 -/* 081E2C 7F04D2FC 00006812 */ mflo $t5 -/* 081E30 7F04D300 AFAD0100 */ sw $t5, 0x100($sp) -/* 081E34 7F04D304 14600002 */ bnez $v1, .L7F04D310 -/* 081E38 7F04D308 00000000 */ nop -/* 081E3C 7F04D30C 0007000D */ break 7 -.L7F04D310: -/* 081E40 7F04D310 2401FFFF */ li $at, -1 -/* 081E44 7F04D314 14610004 */ bne $v1, $at, .L7F04D328 -/* 081E48 7F04D318 3C018000 */ lui $at, 0x8000 -/* 081E4C 7F04D31C 15610002 */ bne $t3, $at, .L7F04D328 -/* 081E50 7F04D320 00000000 */ nop -/* 081E54 7F04D324 0006000D */ break 6 -.L7F04D328: -/* 081E58 7F04D328 8C980000 */ lw $t8, ($a0) -.L7F04D32C: -/* 081E5C 7F04D32C 8FAF00E8 */ lw $t7, 0xe8($sp) -/* 081E60 7F04D330 24840004 */ addiu $a0, $a0, 4 -/* 081E64 7F04D334 00187100 */ sll $t6, $t8, 4 -/* 081E68 7F04D338 020E1821 */ addu $v1, $s0, $t6 -/* 081E6C 7F04D33C 84620000 */ lh $v0, ($v1) -/* 081E70 7F04D340 27AB0104 */ addiu $t3, $sp, 0x104 -/* 081E74 7F04D344 004F082A */ slt $at, $v0, $t7 -/* 081E78 7F04D348 50200004 */ beql $at, $zero, .L7F04D35C -/* 081E7C 7F04D34C 8FB900DC */ lw $t9, 0xdc($sp) -/* 081E80 7F04D350 AFA200E8 */ sw $v0, 0xe8($sp) -/* 081E84 7F04D354 84620000 */ lh $v0, ($v1) -/* 081E88 7F04D358 8FB900DC */ lw $t9, 0xdc($sp) -.L7F04D35C: -/* 081E8C 7F04D35C 0322082A */ slt $at, $t9, $v0 -/* 081E90 7F04D360 50200003 */ beql $at, $zero, .L7F04D370 -/* 081E94 7F04D364 84620002 */ lh $v0, 2($v1) -/* 081E98 7F04D368 AFA200DC */ sw $v0, 0xdc($sp) -/* 081E9C 7F04D36C 84620002 */ lh $v0, 2($v1) -.L7F04D370: -/* 081EA0 7F04D370 8FA800EC */ lw $t0, 0xec($sp) -/* 081EA4 7F04D374 0048082A */ slt $at, $v0, $t0 -/* 081EA8 7F04D378 50200004 */ beql $at, $zero, .L7F04D38C -/* 081EAC 7F04D37C 8FA900E0 */ lw $t1, 0xe0($sp) -/* 081EB0 7F04D380 AFA200EC */ sw $v0, 0xec($sp) -/* 081EB4 7F04D384 84620002 */ lh $v0, 2($v1) -/* 081EB8 7F04D388 8FA900E0 */ lw $t1, 0xe0($sp) -.L7F04D38C: -/* 081EBC 7F04D38C 0122082A */ slt $at, $t1, $v0 -/* 081EC0 7F04D390 50200003 */ beql $at, $zero, .L7F04D3A0 -/* 081EC4 7F04D394 84620004 */ lh $v0, 4($v1) -/* 081EC8 7F04D398 AFA200E0 */ sw $v0, 0xe0($sp) -/* 081ECC 7F04D39C 84620004 */ lh $v0, 4($v1) -.L7F04D3A0: -/* 081ED0 7F04D3A0 8FAC00F0 */ lw $t4, 0xf0($sp) -/* 081ED4 7F04D3A4 004C082A */ slt $at, $v0, $t4 -/* 081ED8 7F04D3A8 50200004 */ beql $at, $zero, .L7F04D3BC -/* 081EDC 7F04D3AC 8FAA00E4 */ lw $t2, 0xe4($sp) -/* 081EE0 7F04D3B0 AFA200F0 */ sw $v0, 0xf0($sp) -/* 081EE4 7F04D3B4 84620004 */ lh $v0, 4($v1) -/* 081EE8 7F04D3B8 8FAA00E4 */ lw $t2, 0xe4($sp) -.L7F04D3BC: -/* 081EEC 7F04D3BC 0142082A */ slt $at, $t2, $v0 -/* 081EF0 7F04D3C0 10200002 */ beqz $at, .L7F04D3CC -/* 081EF4 7F04D3C4 00000000 */ nop -/* 081EF8 7F04D3C8 AFA200E4 */ sw $v0, 0xe4($sp) -.L7F04D3CC: -/* 081EFC 7F04D3CC 548BFFD7 */ bnel $a0, $t3, .L7F04D32C -/* 081F00 7F04D3D0 8C980000 */ lw $t8, ($a0) -/* 081F04 7F04D3D4 02E02025 */ move $a0, $s7 -/* 081F08 7F04D3D8 27A600E8 */ addiu $a2, $sp, 0xe8 -/* 081F0C 7F04D3DC 0FC2DB3B */ jal sub_GAME_7F0B6CEC -/* 081F10 7F04D3E0 27A700DC */ addiu $a3, $sp, 0xdc -/* 081F14 7F04D3E4 10400162 */ beqz $v0, .L7F04D970 -/* 081F18 7F04D3E8 3C0D8003 */ lui $t5, %hi(D_80032064) -/* 081F1C 7F04D3EC 25AD2064 */ addiu $t5, %lo(D_80032064) # addiu $t5, $t5, 0x2064 -/* 081F20 7F04D3F0 8DA10000 */ lw $at, ($t5) -/* 081F24 7F04D3F4 27A700C4 */ addiu $a3, $sp, 0xc4 -/* 081F28 7F04D3F8 27B8011C */ addiu $t8, $sp, 0x11c -/* 081F2C 7F04D3FC ACE10000 */ sw $at, ($a3) -/* 081F30 7F04D400 8DAE0004 */ lw $t6, 4($t5) -/* 081F34 7F04D404 ACEE0004 */ sw $t6, 4($a3) -/* 081F38 7F04D408 8DA10008 */ lw $at, 8($t5) -/* 081F3C 7F04D40C ACE10008 */ sw $at, 8($a3) -/* 081F40 7F04D410 8FAC0100 */ lw $t4, 0x100($sp) -/* 081F44 7F04D414 8FA800FC */ lw $t0, 0xfc($sp) -/* 081F48 7F04D418 8FAF00F8 */ lw $t7, 0xf8($sp) -/* 081F4C 7F04D41C 8FAB0154 */ lw $t3, 0x154($sp) -/* 081F50 7F04D420 000C5100 */ sll $t2, $t4, 4 -/* 081F54 7F04D424 00084900 */ sll $t1, $t0, 4 -/* 081F58 7F04D428 000FC900 */ sll $t9, $t7, 4 -/* 081F5C 7F04D42C 02192021 */ addu $a0, $s0, $t9 -/* 081F60 7F04D430 02092821 */ addu $a1, $s0, $t1 -/* 081F64 7F04D434 020A3021 */ addu $a2, $s0, $t2 -/* 081F68 7F04D438 AFB8001C */ sw $t8, 0x1c($sp) -/* 081F6C 7F04D43C AFBE0018 */ sw $fp, 0x18($sp) -/* 081F70 7F04D440 AFB70010 */ sw $s7, 0x10($sp) -/* 081F74 7F04D444 0FC24A24 */ jal sub_GAME_7F092890 -/* 081F78 7F04D448 AFAB0014 */ sw $t3, 0x14($sp) -/* 081F7C 7F04D44C 10400148 */ beqz $v0, .L7F04D970 -/* 081F80 7F04D450 00000000 */ nop -/* 081F84 7F04D454 C7A4011C */ lwc1 $f4, 0x11c($sp) -/* 081F88 7F04D458 C6E80000 */ lwc1 $f8, ($s7) -/* 081F8C 7F04D45C C7B20120 */ lwc1 $f18, 0x120($sp) -/* 081F90 7F04D460 4600218D */ trunc.w.s $f6, $f4 -/* 081F94 7F04D464 92290000 */ lbu $t1, ($s1) -/* 081F98 7F04D468 02201025 */ move $v0, $s1 -/* 081F9C 7F04D46C 4600428D */ trunc.w.s $f10, $f8 -/* 081FA0 7F04D470 440E3000 */ mfc1 $t6, $f6 -/* 081FA4 7F04D474 C6E60004 */ lwc1 $f6, 4($s7) -/* 081FA8 7F04D478 4600910D */ trunc.w.s $f4, $f18 -/* 081FAC 7F04D47C 44195000 */ mfc1 $t9, $f10 -/* 081FB0 7F04D480 0271082B */ sltu $at, $s3, $s1 -/* 081FB4 7F04D484 4600320D */ trunc.w.s $f8, $f6 -/* 081FB8 7F04D488 01D94023 */ subu $t0, $t6, $t9 -/* 081FBC 7F04D48C 44888000 */ mtc1 $t0, $f16 -/* 081FC0 7F04D490 440C2000 */ mfc1 $t4, $f4 -/* 081FC4 7F04D494 440B4000 */ mfc1 $t3, $f8 -/* 081FC8 7F04D498 468080A0 */ cvt.s.w $f2, $f16 -/* 081FCC 7F04D49C C7B00124 */ lwc1 $f16, 0x124($sp) -/* 081FD0 7F04D4A0 C6E40008 */ lwc1 $f4, 8($s7) -/* 081FD4 7F04D4A4 018BC023 */ subu $t8, $t4, $t3 -/* 081FD8 7F04D4A8 44985000 */ mtc1 $t8, $f10 -/* 081FDC 7F04D4AC 4600848D */ trunc.w.s $f18, $f16 -/* 081FE0 7F04D4B0 4600218D */ trunc.w.s $f6, $f4 -/* 081FE4 7F04D4B4 440F9000 */ mfc1 $t7, $f18 -/* 081FE8 7F04D4B8 46805320 */ cvt.s.w $f12, $f10 -/* 081FEC 7F04D4BC 44193000 */ mfc1 $t9, $f6 -/* 081FF0 7F04D4C0 46021282 */ mul.s $f10, $f2, $f2 -/* 081FF4 7F04D4C4 01F94023 */ subu $t0, $t7, $t9 -/* 081FF8 7F04D4C8 44884000 */ mtc1 $t0, $f8 -/* 081FFC 7F04D4CC 460C6402 */ mul.s $f16, $f12, $f12 -/* 082000 7F04D4D0 12A9000A */ beq $s5, $t1, .L7F04D4FC -/* 082004 7F04D4D4 468043A0 */ cvt.s.w $f14, $f8 -/* 082008 7F04D4D8 10200008 */ beqz $at, .L7F04D4FC -/* 08200C 7F04D4DC 00000000 */ nop -/* 082010 7F04D4E0 904AFFF8 */ lbu $t2, -8($v0) -.L7F04D4E4: -/* 082014 7F04D4E4 2442FFF8 */ addiu $v0, $v0, -8 -/* 082018 7F04D4E8 0262082B */ sltu $at, $s3, $v0 -/* 08201C 7F04D4EC 12AA0003 */ beq $s5, $t2, .L7F04D4FC -/* 082020 7F04D4F0 00000000 */ nop -/* 082024 7F04D4F4 5420FFFB */ bnezl $at, .L7F04D4E4 -/* 082028 7F04D4F8 904AFFF8 */ lbu $t2, -8($v0) -.L7F04D4FC: -/* 08202C 7F04D4FC 460E7102 */ mul.s $f4, $f14, $f14 -/* 082030 7F04D500 54530004 */ bnel $v0, $s3, .L7F04D514 -/* 082034 7F04D504 8C430004 */ lw $v1, 4($v0) -/* 082038 7F04D508 10000006 */ b .L7F04D524 -/* 08203C 7F04D50C 2404FFFF */ li $a0, -1 -/* 082040 7F04D510 8C430004 */ lw $v1, 4($v0) -.L7F04D514: -/* 082044 7F04D514 3C018000 */ lui $at, 0x8000 -/* 082048 7F04D518 2463FFF8 */ addiu $v1, $v1, -8 -/* 08204C 7F04D51C 00616025 */ or $t4, $v1, $at -/* 082050 7F04D520 95840000 */ lhu $a0, ($t4) -.L7F04D524: -/* 082054 7F04D524 46105480 */ add.s $f18, $f10, $f16 -/* 082058 7F04D528 46049000 */ add.s $f0, $f18, $f4 -/* 08205C 7F04D52C 4614003C */ c.lt.s $f0, $f20 -/* 082060 7F04D530 00000000 */ nop -/* 082064 7F04D534 4500010E */ bc1f .L7F04D970 -/* 082068 7F04D538 00000000 */ nop -/* 08206C 7F04D53C C7A6011C */ lwc1 $f6, 0x11c($sp) -/* 082070 7F04D540 240C0001 */ li $t4, 1 -/* 082074 7F04D544 46000506 */ mov.s $f20, $f0 -/* 082078 7F04D548 E6860000 */ swc1 $f6, ($s4) -/* 08207C 7F04D54C C7A80120 */ lwc1 $f8, 0x120($sp) -/* 082080 7F04D550 E6880004 */ swc1 $f8, 4($s4) -/* 082084 7F04D554 C7AA0124 */ lwc1 $f10, 0x124($sp) -/* 082088 7F04D558 E68A0008 */ swc1 $f10, 8($s4) -/* 08208C 7F04D55C C7B00128 */ lwc1 $f16, 0x128($sp) -/* 082090 7F04D560 E690000C */ swc1 $f16, 0xc($s4) -/* 082094 7F04D564 C7B2012C */ lwc1 $f18, 0x12c($sp) -/* 082098 7F04D568 E6920010 */ swc1 $f18, 0x10($s4) -/* 08209C 7F04D56C C7A40130 */ lwc1 $f4, 0x130($sp) -/* 0820A0 7F04D570 E6840014 */ swc1 $f4, 0x14($s4) -/* 0820A4 7F04D574 8FAB00F8 */ lw $t3, 0xf8($sp) -/* 0820A8 7F04D578 000BC100 */ sll $t8, $t3, 4 -/* 0820AC 7F04D57C 03106821 */ addu $t5, $t8, $s0 -/* 0820B0 7F04D580 AE8D0018 */ sw $t5, 0x18($s4) -/* 0820B4 7F04D584 8FAE00FC */ lw $t6, 0xfc($sp) -/* 0820B8 7F04D588 000E7900 */ sll $t7, $t6, 4 -/* 0820BC 7F04D58C 01F0C821 */ addu $t9, $t7, $s0 -/* 0820C0 7F04D590 AE99001C */ sw $t9, 0x1c($s4) -/* 0820C4 7F04D594 8FA80100 */ lw $t0, 0x100($sp) -/* 0820C8 7F04D598 A684002A */ sh $a0, 0x2a($s4) -/* 0820CC 7F04D59C AE910024 */ sw $s1, 0x24($s4) -/* 0820D0 7F04D5A0 00084900 */ sll $t1, $t0, 4 -/* 0820D4 7F04D5A4 01305021 */ addu $t2, $t1, $s0 -/* 0820D8 7F04D5A8 AE8A0020 */ sw $t2, 0x20($s4) -/* 0820DC 7F04D5AC A6800028 */ sh $zero, 0x28($s4) -/* 0820E0 7F04D5B0 AFAC0110 */ sw $t4, 0x110($sp) -/* 0820E4 7F04D5B4 1000FF05 */ b .L7F04D1CC -/* 0820E8 7F04D5B8 26310008 */ addiu $s1, $s1, 8 -.L7F04D5BC: -/* 0820EC 7F04D5BC 2401FFB1 */ li $at, -79 -/* 0820F0 7F04D5C0 144100EB */ bne $v0, $at, .L7F04D970 -/* 0820F4 7F04D5C4 00000000 */ nop -/* 0820F8 7F04D5C8 00009025 */ move $s2, $zero -.L7F04D5CC: -/* 0820FC 7F04D5CC 3C188003 */ lui $t8, %hi(D_80032070) -/* 082100 7F04D5D0 27182070 */ addiu $t8, %lo(D_80032070) # addiu $t8, $t8, 0x2070 -/* 082104 7F04D5D4 8F010000 */ lw $at, ($t8) -/* 082108 7F04D5D8 27AB0094 */ addiu $t3, $sp, 0x94 -/* 08210C 7F04D5DC 8F0E0004 */ lw $t6, 4($t8) -/* 082110 7F04D5E0 AD610000 */ sw $at, ($t3) -/* 082114 7F04D5E4 8F010008 */ lw $at, 8($t8) -/* 082118 7F04D5E8 3C198003 */ lui $t9, %hi(D_8003207C) -/* 08211C 7F04D5EC 2739207C */ addiu $t9, %lo(D_8003207C) # addiu $t9, $t9, 0x207c -/* 082120 7F04D5F0 AD6E0004 */ sw $t6, 4($t3) -/* 082124 7F04D5F4 AD610008 */ sw $at, 8($t3) -/* 082128 7F04D5F8 8F210000 */ lw $at, ($t9) -/* 08212C 7F04D5FC 27AF0088 */ addiu $t7, $sp, 0x88 -/* 082130 7F04D600 8F290004 */ lw $t1, 4($t9) -/* 082134 7F04D604 ADE10000 */ sw $at, ($t7) -/* 082138 7F04D608 8F210008 */ lw $at, 8($t9) -/* 08213C 7F04D60C ADE90004 */ sw $t1, 4($t7) -/* 082140 7F04D610 1640000B */ bnez $s2, .L7F04D640 -/* 082144 7F04D614 ADE10008 */ sw $at, 8($t7) -/* 082148 7F04D618 8E2A0004 */ lw $t2, 4($s1) -/* 08214C 7F04D61C 314C000F */ andi $t4, $t2, 0xf -/* 082150 7F04D620 AFAC00A4 */ sw $t4, 0xa4($sp) -/* 082154 7F04D624 922D0007 */ lbu $t5, 7($s1) -/* 082158 7F04D628 000D5902 */ srl $t3, $t5, 4 -/* 08215C 7F04D62C AFAB00A8 */ sw $t3, 0xa8($sp) -/* 082160 7F04D630 8E380000 */ lw $t8, ($s1) -/* 082164 7F04D634 330E000F */ andi $t6, $t8, 0xf -/* 082168 7F04D638 10000024 */ b .L7F04D6CC -/* 08216C 7F04D63C AFAE00AC */ sw $t6, 0xac($sp) -.L7F04D640: -/* 082170 7F04D640 24010001 */ li $at, 1 -/* 082174 7F04D644 5641000C */ bnel $s2, $at, .L7F04D678 -/* 082178 7F04D648 24010002 */ li $at, 2 -/* 08217C 7F04D64C 92280006 */ lbu $t0, 6($s1) -/* 082180 7F04D650 310F000F */ andi $t7, $t0, 0xf -/* 082184 7F04D654 AFAF00A4 */ sw $t7, 0xa4($sp) -/* 082188 7F04D658 96390006 */ lhu $t9, 6($s1) -/* 08218C 7F04D65C 00194B02 */ srl $t1, $t9, 0xc -/* 082190 7F04D660 AFA900A8 */ sw $t1, 0xa8($sp) -/* 082194 7F04D664 922A0003 */ lbu $t2, 3($s1) -/* 082198 7F04D668 000A6102 */ srl $t4, $t2, 4 -/* 08219C 7F04D66C 10000017 */ b .L7F04D6CC -/* 0821A0 7F04D670 AFAC00AC */ sw $t4, 0xac($sp) -/* 0821A4 7F04D674 24010002 */ li $at, 2 -.L7F04D678: -/* 0821A8 7F04D678 5641000C */ bnel $s2, $at, .L7F04D6AC -/* 0821AC 7F04D67C 92390004 */ lbu $t9, 4($s1) -/* 0821B0 7F04D680 962D0004 */ lhu $t5, 4($s1) -/* 0821B4 7F04D684 31AB000F */ andi $t3, $t5, 0xf -/* 0821B8 7F04D688 AFAB00A4 */ sw $t3, 0xa4($sp) -/* 0821BC 7F04D68C 92380005 */ lbu $t8, 5($s1) -/* 0821C0 7F04D690 00187102 */ srl $t6, $t8, 4 -/* 0821C4 7F04D694 AFAE00A8 */ sw $t6, 0xa8($sp) -/* 0821C8 7F04D698 92280002 */ lbu $t0, 2($s1) -/* 0821CC 7F04D69C 310F000F */ andi $t7, $t0, 0xf -/* 0821D0 7F04D6A0 1000000A */ b .L7F04D6CC -/* 0821D4 7F04D6A4 AFAF00AC */ sw $t7, 0xac($sp) -/* 0821D8 7F04D6A8 92390004 */ lbu $t9, 4($s1) -.L7F04D6AC: -/* 0821DC 7F04D6AC 3329000F */ andi $t1, $t9, 0xf -/* 0821E0 7F04D6B0 AFA900A4 */ sw $t1, 0xa4($sp) -/* 0821E4 7F04D6B4 8E2A0004 */ lw $t2, 4($s1) -/* 0821E8 7F04D6B8 000A6702 */ srl $t4, $t2, 0x1c -/* 0821EC 7F04D6BC AFAC00A8 */ sw $t4, 0xa8($sp) -/* 0821F0 7F04D6C0 962D0002 */ lhu $t5, 2($s1) -/* 0821F4 7F04D6C4 000D5B02 */ srl $t3, $t5, 0xc -/* 0821F8 7F04D6C8 AFAB00AC */ sw $t3, 0xac($sp) -.L7F04D6CC: -/* 0821FC 7F04D6CC 27A400A4 */ addiu $a0, $sp, 0xa4 -/* 082200 7F04D6D0 8C980000 */ lw $t8, ($a0) -.L7F04D6D4: -/* 082204 7F04D6D4 8FA80094 */ lw $t0, 0x94($sp) -/* 082208 7F04D6D8 24840004 */ addiu $a0, $a0, 4 -/* 08220C 7F04D6DC 00187100 */ sll $t6, $t8, 4 -/* 082210 7F04D6E0 020E1821 */ addu $v1, $s0, $t6 -/* 082214 7F04D6E4 84620000 */ lh $v0, ($v1) -/* 082218 7F04D6E8 0048082A */ slt $at, $v0, $t0 -/* 08221C 7F04D6EC 50200004 */ beql $at, $zero, .L7F04D700 -/* 082220 7F04D6F0 8FAF0088 */ lw $t7, 0x88($sp) -/* 082224 7F04D6F4 AFA20094 */ sw $v0, 0x94($sp) -/* 082228 7F04D6F8 84620000 */ lh $v0, ($v1) -/* 08222C 7F04D6FC 8FAF0088 */ lw $t7, 0x88($sp) -.L7F04D700: -/* 082230 7F04D700 01E2082A */ slt $at, $t7, $v0 -/* 082234 7F04D704 50200003 */ beql $at, $zero, .L7F04D714 -/* 082238 7F04D708 84620002 */ lh $v0, 2($v1) -/* 08223C 7F04D70C AFA20088 */ sw $v0, 0x88($sp) -/* 082240 7F04D710 84620002 */ lh $v0, 2($v1) -.L7F04D714: -/* 082244 7F04D714 8FB90098 */ lw $t9, 0x98($sp) -/* 082248 7F04D718 0059082A */ slt $at, $v0, $t9 -/* 08224C 7F04D71C 50200004 */ beql $at, $zero, .L7F04D730 -/* 082250 7F04D720 8FA9008C */ lw $t1, 0x8c($sp) -/* 082254 7F04D724 AFA20098 */ sw $v0, 0x98($sp) -/* 082258 7F04D728 84620002 */ lh $v0, 2($v1) -/* 08225C 7F04D72C 8FA9008C */ lw $t1, 0x8c($sp) -.L7F04D730: -/* 082260 7F04D730 0122082A */ slt $at, $t1, $v0 -/* 082264 7F04D734 50200003 */ beql $at, $zero, .L7F04D744 -/* 082268 7F04D738 84620004 */ lh $v0, 4($v1) -/* 08226C 7F04D73C AFA2008C */ sw $v0, 0x8c($sp) -/* 082270 7F04D740 84620004 */ lh $v0, 4($v1) -.L7F04D744: -/* 082274 7F04D744 8FAA009C */ lw $t2, 0x9c($sp) -/* 082278 7F04D748 004A082A */ slt $at, $v0, $t2 -/* 08227C 7F04D74C 50200004 */ beql $at, $zero, .L7F04D760 -/* 082280 7F04D750 8FAC0090 */ lw $t4, 0x90($sp) -/* 082284 7F04D754 AFA2009C */ sw $v0, 0x9c($sp) -/* 082288 7F04D758 84620004 */ lh $v0, 4($v1) -/* 08228C 7F04D75C 8FAC0090 */ lw $t4, 0x90($sp) -.L7F04D760: -/* 082290 7F04D760 0182082A */ slt $at, $t4, $v0 -/* 082294 7F04D764 10200002 */ beqz $at, .L7F04D770 -/* 082298 7F04D768 00000000 */ nop -/* 08229C 7F04D76C AFA20090 */ sw $v0, 0x90($sp) -.L7F04D770: -/* 0822A0 7F04D770 5496FFD8 */ bnel $a0, $s6, .L7F04D6D4 -/* 0822A4 7F04D774 8C980000 */ lw $t8, ($a0) -/* 0822A8 7F04D778 02E02025 */ move $a0, $s7 -/* 0822AC 7F04D77C 03C02825 */ move $a1, $fp -/* 0822B0 7F04D780 27A60094 */ addiu $a2, $sp, 0x94 -/* 0822B4 7F04D784 0FC2DB3B */ jal sub_GAME_7F0B6CEC -/* 0822B8 7F04D788 27A70088 */ addiu $a3, $sp, 0x88 -/* 0822BC 7F04D78C 10400074 */ beqz $v0, .L7F04D960 -/* 0822C0 7F04D790 3C0D8003 */ lui $t5, %hi(D_80032088) -/* 0822C4 7F04D794 25AD2088 */ addiu $t5, %lo(D_80032088) # addiu $t5, $t5, 0x2088 -/* 0822C8 7F04D798 8DA10000 */ lw $at, ($t5) -/* 0822CC 7F04D79C 27A70070 */ addiu $a3, $sp, 0x70 -/* 0822D0 7F04D7A0 27AB011C */ addiu $t3, $sp, 0x11c -/* 0822D4 7F04D7A4 ACE10000 */ sw $at, ($a3) -/* 0822D8 7F04D7A8 8DB80004 */ lw $t8, 4($t5) -/* 0822DC 7F04D7AC ACF80004 */ sw $t8, 4($a3) -/* 0822E0 7F04D7B0 8DA10008 */ lw $at, 8($t5) -/* 0822E4 7F04D7B4 ACE10008 */ sw $at, 8($a3) -/* 0822E8 7F04D7B8 8FA900AC */ lw $t1, 0xac($sp) -/* 0822EC 7F04D7BC 8FAF00A8 */ lw $t7, 0xa8($sp) -/* 0822F0 7F04D7C0 8FAE00A4 */ lw $t6, 0xa4($sp) -/* 0822F4 7F04D7C4 8FAC0154 */ lw $t4, 0x154($sp) -/* 0822F8 7F04D7C8 00095100 */ sll $t2, $t1, 4 -/* 0822FC 7F04D7CC 000FC900 */ sll $t9, $t7, 4 -/* 082300 7F04D7D0 000E4100 */ sll $t0, $t6, 4 -/* 082304 7F04D7D4 02082021 */ addu $a0, $s0, $t0 -/* 082308 7F04D7D8 02192821 */ addu $a1, $s0, $t9 -/* 08230C 7F04D7DC 020A3021 */ addu $a2, $s0, $t2 -/* 082310 7F04D7E0 AFAB001C */ sw $t3, 0x1c($sp) -/* 082314 7F04D7E4 AFBE0018 */ sw $fp, 0x18($sp) -/* 082318 7F04D7E8 AFB70010 */ sw $s7, 0x10($sp) -/* 08231C 7F04D7EC 0FC24A24 */ jal sub_GAME_7F092890 -/* 082320 7F04D7F0 AFAC0014 */ sw $t4, 0x14($sp) -/* 082324 7F04D7F4 5040005B */ beql $v0, $zero, .L7F04D964 -/* 082328 7F04D7F8 26520001 */ addiu $s2, $s2, 1 -/* 08232C 7F04D7FC C7A6011C */ lwc1 $f6, 0x11c($sp) -/* 082330 7F04D800 C6EA0000 */ lwc1 $f10, ($s7) -/* 082334 7F04D804 C7A40120 */ lwc1 $f4, 0x120($sp) -/* 082338 7F04D808 4600320D */ trunc.w.s $f8, $f6 -/* 08233C 7F04D80C 92390000 */ lbu $t9, ($s1) -/* 082340 7F04D810 02201025 */ move $v0, $s1 -/* 082344 7F04D814 4600540D */ trunc.w.s $f16, $f10 -/* 082348 7F04D818 44184000 */ mfc1 $t8, $f8 -/* 08234C 7F04D81C C6E80004 */ lwc1 $f8, 4($s7) -/* 082350 7F04D820 4600218D */ trunc.w.s $f6, $f4 -/* 082354 7F04D824 44088000 */ mfc1 $t0, $f16 -/* 082358 7F04D828 0271082B */ sltu $at, $s3, $s1 -/* 08235C 7F04D82C 4600428D */ trunc.w.s $f10, $f8 -/* 082360 7F04D830 03087823 */ subu $t7, $t8, $t0 -/* 082364 7F04D834 448F9000 */ mtc1 $t7, $f18 -/* 082368 7F04D838 44093000 */ mfc1 $t1, $f6 -/* 08236C 7F04D83C 440C5000 */ mfc1 $t4, $f10 -/* 082370 7F04D840 468090A0 */ cvt.s.w $f2, $f18 -/* 082374 7F04D844 C7B20124 */ lwc1 $f18, 0x124($sp) -/* 082378 7F04D848 C6E60008 */ lwc1 $f6, 8($s7) -/* 08237C 7F04D84C 012C5823 */ subu $t3, $t1, $t4 -/* 082380 7F04D850 448B8000 */ mtc1 $t3, $f16 -/* 082384 7F04D854 4600910D */ trunc.w.s $f4, $f18 -/* 082388 7F04D858 4600320D */ trunc.w.s $f8, $f6 -/* 08238C 7F04D85C 440E2000 */ mfc1 $t6, $f4 -/* 082390 7F04D860 46808320 */ cvt.s.w $f12, $f16 -/* 082394 7F04D864 44084000 */ mfc1 $t0, $f8 -/* 082398 7F04D868 46021402 */ mul.s $f16, $f2, $f2 -/* 08239C 7F04D86C 01C87823 */ subu $t7, $t6, $t0 -/* 0823A0 7F04D870 448F5000 */ mtc1 $t7, $f10 -/* 0823A4 7F04D874 460C6482 */ mul.s $f18, $f12, $f12 -/* 0823A8 7F04D878 12B9000A */ beq $s5, $t9, .L7F04D8A4 -/* 0823AC 7F04D87C 468053A0 */ cvt.s.w $f14, $f10 -/* 0823B0 7F04D880 10200008 */ beqz $at, .L7F04D8A4 -/* 0823B4 7F04D884 00000000 */ nop -/* 0823B8 7F04D888 904AFFF8 */ lbu $t2, -8($v0) -.L7F04D88C: -/* 0823BC 7F04D88C 2442FFF8 */ addiu $v0, $v0, -8 -/* 0823C0 7F04D890 0262082B */ sltu $at, $s3, $v0 -/* 0823C4 7F04D894 12AA0003 */ beq $s5, $t2, .L7F04D8A4 -/* 0823C8 7F04D898 00000000 */ nop -/* 0823CC 7F04D89C 5420FFFB */ bnezl $at, .L7F04D88C -/* 0823D0 7F04D8A0 904AFFF8 */ lbu $t2, -8($v0) -.L7F04D8A4: -/* 0823D4 7F04D8A4 460E7182 */ mul.s $f6, $f14, $f14 -/* 0823D8 7F04D8A8 54530004 */ bnel $v0, $s3, .L7F04D8BC -/* 0823DC 7F04D8AC 8C430004 */ lw $v1, 4($v0) -/* 0823E0 7F04D8B0 10000006 */ b .L7F04D8CC -/* 0823E4 7F04D8B4 2404FFFF */ li $a0, -1 -/* 0823E8 7F04D8B8 8C430004 */ lw $v1, 4($v0) -.L7F04D8BC: -/* 0823EC 7F04D8BC 3C018000 */ lui $at, 0x8000 -/* 0823F0 7F04D8C0 2463FFF8 */ addiu $v1, $v1, -8 -/* 0823F4 7F04D8C4 00614825 */ or $t1, $v1, $at -/* 0823F8 7F04D8C8 95240000 */ lhu $a0, ($t1) -.L7F04D8CC: -/* 0823FC 7F04D8CC 46128100 */ add.s $f4, $f16, $f18 -/* 082400 7F04D8D0 46062000 */ add.s $f0, $f4, $f6 -/* 082404 7F04D8D4 4614003C */ c.lt.s $f0, $f20 -/* 082408 7F04D8D8 00000000 */ nop -/* 08240C 7F04D8DC 45020021 */ bc1fl .L7F04D964 -/* 082410 7F04D8E0 26520001 */ addiu $s2, $s2, 1 -/* 082414 7F04D8E4 C7A8011C */ lwc1 $f8, 0x11c($sp) -/* 082418 7F04D8E8 26490001 */ addiu $t1, $s2, 1 -/* 08241C 7F04D8EC 46000506 */ mov.s $f20, $f0 -/* 082420 7F04D8F0 E6880000 */ swc1 $f8, ($s4) -/* 082424 7F04D8F4 C7AA0120 */ lwc1 $f10, 0x120($sp) -/* 082428 7F04D8F8 E68A0004 */ swc1 $f10, 4($s4) -/* 08242C 7F04D8FC C7B00124 */ lwc1 $f16, 0x124($sp) -/* 082430 7F04D900 E6900008 */ swc1 $f16, 8($s4) -/* 082434 7F04D904 C7B20128 */ lwc1 $f18, 0x128($sp) -/* 082438 7F04D908 E692000C */ swc1 $f18, 0xc($s4) -/* 08243C 7F04D90C C7A4012C */ lwc1 $f4, 0x12c($sp) -/* 082440 7F04D910 E6840010 */ swc1 $f4, 0x10($s4) -/* 082444 7F04D914 C7A60130 */ lwc1 $f6, 0x130($sp) -/* 082448 7F04D918 E6860014 */ swc1 $f6, 0x14($s4) -/* 08244C 7F04D91C 8FAC00A4 */ lw $t4, 0xa4($sp) -/* 082450 7F04D920 000C5900 */ sll $t3, $t4, 4 -/* 082454 7F04D924 01706821 */ addu $t5, $t3, $s0 -/* 082458 7F04D928 AE8D0018 */ sw $t5, 0x18($s4) -/* 08245C 7F04D92C 8FB800A8 */ lw $t8, 0xa8($sp) -/* 082460 7F04D930 240C0001 */ li $t4, 1 -/* 082464 7F04D934 00187100 */ sll $t6, $t8, 4 -/* 082468 7F04D938 01D04021 */ addu $t0, $t6, $s0 -/* 08246C 7F04D93C AE88001C */ sw $t0, 0x1c($s4) -/* 082470 7F04D940 8FAF00AC */ lw $t7, 0xac($sp) -/* 082474 7F04D944 A684002A */ sh $a0, 0x2a($s4) -/* 082478 7F04D948 AE910024 */ sw $s1, 0x24($s4) -/* 08247C 7F04D94C 000FC900 */ sll $t9, $t7, 4 -/* 082480 7F04D950 03305021 */ addu $t2, $t9, $s0 -/* 082484 7F04D954 AE8A0020 */ sw $t2, 0x20($s4) -/* 082488 7F04D958 A6890028 */ sh $t1, 0x28($s4) -/* 08248C 7F04D95C AFAC0110 */ sw $t4, 0x110($sp) -.L7F04D960: -/* 082490 7F04D960 26520001 */ addiu $s2, $s2, 1 -.L7F04D964: -/* 082494 7F04D964 24010004 */ li $at, 4 -/* 082498 7F04D968 1641FF18 */ bne $s2, $at, .L7F04D5CC -/* 08249C 7F04D96C 00000000 */ nop -.L7F04D970: -/* 0824A0 7F04D970 1000FE16 */ b .L7F04D1CC -/* 0824A4 7F04D974 26310008 */ addiu $s1, $s1, 8 -.L7F04D978: -/* 0824A8 7F04D978 8FBF0054 */ lw $ra, 0x54($sp) -/* 0824AC 7F04D97C 8FA20110 */ lw $v0, 0x110($sp) -/* 0824B0 7F04D980 D7B40028 */ ldc1 $f20, 0x28($sp) -/* 0824B4 7F04D984 8FB00030 */ lw $s0, 0x30($sp) -/* 0824B8 7F04D988 8FB10034 */ lw $s1, 0x34($sp) -/* 0824BC 7F04D98C 8FB20038 */ lw $s2, 0x38($sp) -/* 0824C0 7F04D990 8FB3003C */ lw $s3, 0x3c($sp) -/* 0824C4 7F04D994 8FB40040 */ lw $s4, 0x40($sp) -/* 0824C8 7F04D998 8FB50044 */ lw $s5, 0x44($sp) -/* 0824CC 7F04D99C 8FB60048 */ lw $s6, 0x48($sp) -/* 0824D0 7F04D9A0 8FB7004C */ lw $s7, 0x4c($sp) -/* 0824D4 7F04D9A4 8FBE0050 */ lw $fp, 0x50($sp) -/* 0824D8 7F04D9A8 03E00008 */ jr $ra -/* 0824DC 7F04D9AC 27BD0150 */ addiu $sp, $sp, 0x150 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04D9B0(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052D98 -.word 0x46fffe00 /*32767.0*/ -/*D:80052D9C*/ -glabel jpt_80052D9C -.word loc_CODE_7F04DAA4 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word loc_CODE_7F04DAD8 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word loc_CODE_7F04DAEC -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word def_7F04DA40 -.word loc_CODE_7F04DB00 -.word loc_CODE_7F04DA48 - -/*D:80052DF0*/ -/*hack, doesn't fit in own function*/ -glabel jpt_80052DF0 -.word destroyable_object -.word nondestroyable_object -.word destroyable_object -.word nondestroyable_object -.word destroyable_object -.word destroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word destroyable_object -.word destroyable_object -.word destroyable_object -.word destroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word nondestroyable_object -.word destroyable_object -.word nondestroyable_object -.word nondestroyable_object - - -.text -glabel sub_GAME_7F04D9B0 -/* 0824E0 7F04D9B0 27BDFF08 */ addiu $sp, $sp, -0xf8 -/* 0824E4 7F04D9B4 AFBE0050 */ sw $fp, 0x50($sp) -/* 0824E8 7F04D9B8 AFB60048 */ sw $s6, 0x48($sp) -/* 0824EC 7F04D9BC AFB20038 */ sw $s2, 0x38($sp) -/* 0824F0 7F04D9C0 AFB00030 */ sw $s0, 0x30($sp) -/* 0824F4 7F04D9C4 00A09025 */ move $s2, $a1 -/* 0824F8 7F04D9C8 0080B025 */ move $s6, $a0 -/* 0824FC 7F04D9CC AFBF0054 */ sw $ra, 0x54($sp) -/* 082500 7F04D9D0 AFB7004C */ sw $s7, 0x4c($sp) -/* 082504 7F04D9D4 AFB50044 */ sw $s5, 0x44($sp) -/* 082508 7F04D9D8 AFB40040 */ sw $s4, 0x40($sp) -/* 08250C 7F04D9DC AFB3003C */ sw $s3, 0x3c($sp) -/* 082510 7F04D9E0 AFB10034 */ sw $s1, 0x34($sp) -/* 082514 7F04D9E4 F7B40028 */ sdc1 $f20, 0x28($sp) -/* 082518 7F04D9E8 AFA60100 */ sw $a2, 0x100($sp) -/* 08251C 7F04D9EC AFA70104 */ sw $a3, 0x104($sp) -/* 082520 7F04D9F0 AFA000D0 */ sw $zero, 0xd0($sp) -/* 082524 7F04D9F4 AFA000CC */ sw $zero, 0xcc($sp) -/* 082528 7F04D9F8 00A08025 */ move $s0, $a1 -/* 08252C 7F04D9FC 10A0009F */ beqz $a1, .L7F04DC7C -/* 082530 7F04DA00 0000F025 */ move $fp, $zero -/* 082534 7F04DA04 3C018005 */ lui $at, %hi(D_80052D98) -/* 082538 7F04DA08 3C1700FF */ lui $s7, (0x00FFFFFF >> 16) # lui $s7, 0xff -/* 08253C 7F04DA0C 36F7FFFF */ ori $s7, (0x00FFFFFF & 0xFFFF) # ori $s7, $s7, 0xffff -/* 082540 7F04DA10 C4342D98 */ lwc1 $f20, %lo(D_80052D98)($at) -/* 082544 7F04DA14 96020000 */ lhu $v0, ($s0) -.L7F04DA18: -/* 082548 7F04DA18 00009825 */ move $s3, $zero -/* 08254C 7F04DA1C 0000A825 */ move $s5, $zero -/* 082550 7F04DA20 304E00FF */ andi $t6, $v0, 0xff -/* 082554 7F04DA24 25CFFFFC */ addiu $t7, $t6, -4 -/* 082558 7F04DA28 2DE10015 */ sltiu $at, $t7, 0x15 -/* 08255C 7F04DA2C 10200037 */ beqz $at, .L7F04DB0C -/* 082560 7F04DA30 000F7880 */ sll $t7, $t7, 2 -/* 082564 7F04DA34 3C018005 */ lui $at, %hi(jpt_80052D9C) -/* 082568 7F04DA38 002F0821 */ addu $at, $at, $t7 -/* 08256C 7F04DA3C 8C2F2D9C */ lw $t7, %lo(jpt_80052D9C)($at) -/* 082570 7F04DA40 01E00008 */ jr $t7 -/* 082574 7F04DA44 00000000 */ nop -loc_CODE_7F04DA48: -/* 082578 7F04DA48 8E110004 */ lw $s1, 4($s0) -/* 08257C 7F04DA4C 02C02025 */ move $a0, $s6 -/* 082580 7F04DA50 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 082584 7F04DA54 02002825 */ move $a1, $s0 -/* 082588 7F04DA58 8C430004 */ lw $v1, 4($v0) -/* 08258C 7F04DA5C 1060002B */ beqz $v1, .L7F04DB0C -/* 082590 7F04DA60 00000000 */ nop -/* 082594 7F04DA64 8E240000 */ lw $a0, ($s1) -/* 082598 7F04DA68 00609825 */ move $s3, $v1 -/* 08259C 7F04DA6C 14830005 */ bne $a0, $v1, .L7F04DA84 -/* 0825A0 7F04DA70 00000000 */ nop -/* 0825A4 7F04DA74 8E38001C */ lw $t8, 0x1c($s1) -/* 0825A8 7F04DA78 0097C824 */ and $t9, $a0, $s7 -/* 0825AC 7F04DA7C 10000001 */ b .L7F04DA84 -/* 0825B0 7F04DA80 03199821 */ addu $s3, $t8, $t9 -.L7F04DA84: -/* 0825B4 7F04DA84 8E230004 */ lw $v1, 4($s1) -/* 0825B8 7F04DA88 10600004 */ beqz $v1, .L7F04DA9C -/* 0825BC 7F04DA8C 00000000 */ nop -/* 0825C0 7F04DA90 8E28001C */ lw $t0, 0x1c($s1) -/* 0825C4 7F04DA94 00774824 */ and $t1, $v1, $s7 -/* 0825C8 7F04DA98 0109A821 */ addu $s5, $t0, $t1 -.L7F04DA9C: -/* 0825CC 7F04DA9C 1000001B */ b .L7F04DB0C -/* 0825D0 7F04DAA0 8C5E0000 */ lw $fp, ($v0) -loc_CODE_7F04DAA4: -/* 0825D4 7F04DAA4 8E020004 */ lw $v0, 4($s0) -/* 0825D8 7F04DAA8 8C440000 */ lw $a0, ($v0) -/* 0825DC 7F04DAAC 10800017 */ beqz $a0, .L7F04DB0C -/* 0825E0 7F04DAB0 00000000 */ nop -/* 0825E4 7F04DAB4 8C450004 */ lw $a1, 4($v0) -/* 0825E8 7F04DAB8 8C430008 */ lw $v1, 8($v0) -/* 0825EC 7F04DABC 00975024 */ and $t2, $a0, $s7 -/* 0825F0 7F04DAC0 10A00003 */ beqz $a1, .L7F04DAD0 -/* 0825F4 7F04DAC4 006A9821 */ addu $s3, $v1, $t2 -/* 0825F8 7F04DAC8 00B75824 */ and $t3, $a1, $s7 -/* 0825FC 7F04DACC 006BA821 */ addu $s5, $v1, $t3 -.L7F04DAD0: -/* 082600 7F04DAD0 1000000E */ b .L7F04DB0C -/* 082604 7F04DAD4 0060F025 */ move $fp, $v1 -loc_CODE_7F04DAD8: -/* 082608 7F04DAD8 02C02025 */ move $a0, $s6 -/* 08260C 7F04DADC 0FC1BA5C */ jal sub_GAME_7F06E970 -/* 082610 7F04DAE0 02002825 */ move $a1, $s0 -/* 082614 7F04DAE4 10000009 */ b .L7F04DB0C -/* 082618 7F04DAE8 00000000 */ nop -loc_CODE_7F04DAEC: -/* 08261C 7F04DAEC 02C02025 */ move $a0, $s6 -/* 082620 7F04DAF0 0FC1BA6F */ jal process_12_handle_switch -/* 082624 7F04DAF4 02002825 */ move $a1, $s0 -/* 082628 7F04DAF8 10000004 */ b .L7F04DB0C -/* 08262C 7F04DAFC 00000000 */ nop -loc_CODE_7F04DB00: -/* 082630 7F04DB00 02C02025 */ move $a0, $s6 -/* 082634 7F04DB04 0FC1BA82 */ jal process_17_pointer_to_head -/* 082638 7F04DB08 02002825 */ move $a1, $s0 -def_7F04DA40: -.L7F04DB0C: -/* 08263C 7F04DB0C 12600043 */ beqz $s3, .L7F04DC1C -/* 082640 7F04DB10 02002025 */ move $a0, $s0 -/* 082644 7F04DB14 00002825 */ move $a1, $zero -/* 082648 7F04DB18 0FC1B15C */ jal sub_GAME_7F06C570 -/* 08264C 7F04DB1C 00008825 */ move $s1, $zero -/* 082650 7F04DB20 04400004 */ bltz $v0, .L7F04DB34 -/* 082654 7F04DB24 0040A025 */ move $s4, $v0 -/* 082658 7F04DB28 8ECC000C */ lw $t4, 0xc($s6) -/* 08265C 7F04DB2C 00026980 */ sll $t5, $v0, 6 -/* 082660 7F04DB30 018D8821 */ addu $s1, $t4, $t5 -.L7F04DB34: -/* 082664 7F04DB34 12200029 */ beqz $s1, .L7F04DBDC -/* 082668 7F04DB38 8FAE00D0 */ lw $t6, 0xd0($sp) -/* 08266C 7F04DB3C 122E0027 */ beq $s1, $t6, .L7F04DBDC -/* 082670 7F04DB40 02202025 */ move $a0, $s1 -/* 082674 7F04DB44 AFB100D0 */ sw $s1, 0xd0($sp) -/* 082678 7F04DB48 0FC167EE */ jal sub_GAME_7F059FB8 -/* 08267C 7F04DB4C 27A50064 */ addiu $a1, $sp, 0x64 -/* 082680 7F04DB50 8FAF0100 */ lw $t7, 0x100($sp) -/* 082684 7F04DB54 27A40064 */ addiu $a0, $sp, 0x64 -/* 082688 7F04DB58 27A500EC */ addiu $a1, $sp, 0xec -/* 08268C 7F04DB5C C5E40000 */ lwc1 $f4, ($t7) -/* 082690 7F04DB60 E7A400EC */ swc1 $f4, 0xec($sp) -/* 082694 7F04DB64 C5E60004 */ lwc1 $f6, 4($t7) -/* 082698 7F04DB68 E7A600F0 */ swc1 $f6, 0xf0($sp) -/* 08269C 7F04DB6C C5E80008 */ lwc1 $f8, 8($t7) -/* 0826A0 7F04DB70 0FC1611D */ jal sub_GAME_7F058474 -/* 0826A4 7F04DB74 E7A800F4 */ swc1 $f8, 0xf4($sp) -/* 0826A8 7F04DB78 8FB80104 */ lw $t8, 0x104($sp) -/* 0826AC 7F04DB7C 27A40064 */ addiu $a0, $sp, 0x64 -/* 0826B0 7F04DB80 27A500D4 */ addiu $a1, $sp, 0xd4 -/* 0826B4 7F04DB84 C70A0000 */ lwc1 $f10, ($t8) -/* 0826B8 7F04DB88 E7AA00D4 */ swc1 $f10, 0xd4($sp) -/* 0826BC 7F04DB8C C7100004 */ lwc1 $f16, 4($t8) -/* 0826C0 7F04DB90 E7B000D8 */ swc1 $f16, 0xd8($sp) -/* 0826C4 7F04DB94 C7120008 */ lwc1 $f18, 8($t8) -/* 0826C8 7F04DB98 0FC160F6 */ jal sub_GAME_7F0583D8 -/* 0826CC 7F04DB9C E7B200DC */ swc1 $f18, 0xdc($sp) -/* 0826D0 7F04DBA0 C7A400D4 */ lwc1 $f4, 0xd4($sp) -/* 0826D4 7F04DBA4 C7A800EC */ lwc1 $f8, 0xec($sp) -/* 0826D8 7F04DBA8 C7B000D8 */ lwc1 $f16, 0xd8($sp) -/* 0826DC 7F04DBAC 46142182 */ mul.s $f6, $f4, $f20 -/* 0826E0 7F04DBB0 C7A400F0 */ lwc1 $f4, 0xf0($sp) -/* 0826E4 7F04DBB4 46148482 */ mul.s $f18, $f16, $f20 -/* 0826E8 7F04DBB8 C7B000F4 */ lwc1 $f16, 0xf4($sp) -/* 0826EC 7F04DBBC 46083280 */ add.s $f10, $f6, $f8 -/* 0826F0 7F04DBC0 C7A800DC */ lwc1 $f8, 0xdc($sp) -/* 0826F4 7F04DBC4 46049180 */ add.s $f6, $f18, $f4 -/* 0826F8 7F04DBC8 E7AA00E0 */ swc1 $f10, 0xe0($sp) -/* 0826FC 7F04DBCC 46144282 */ mul.s $f10, $f8, $f20 -/* 082700 7F04DBD0 E7A600E4 */ swc1 $f6, 0xe4($sp) -/* 082704 7F04DBD4 46105480 */ add.s $f18, $f10, $f16 -/* 082708 7F04DBD8 E7B200E8 */ swc1 $f18, 0xe8($sp) -.L7F04DBDC: -/* 08270C 7F04DBDC 8FB90108 */ lw $t9, 0x108($sp) -/* 082710 7F04DBE0 27A400EC */ addiu $a0, $sp, 0xec -/* 082714 7F04DBE4 27A500E0 */ addiu $a1, $sp, 0xe0 -/* 082718 7F04DBE8 27A600D4 */ addiu $a2, $sp, 0xd4 -/* 08271C 7F04DBEC 02603825 */ move $a3, $s3 -/* 082720 7F04DBF0 AFB50010 */ sw $s5, 0x10($sp) -/* 082724 7F04DBF4 AFBE0014 */ sw $fp, 0x14($sp) -/* 082728 7F04DBF8 0FC1345B */ jal sub_GAME_7F04D16C -/* 08272C 7F04DBFC AFB90018 */ sw $t9, 0x18($sp) -/* 082730 7F04DC00 10400006 */ beqz $v0, .L7F04DC1C -/* 082734 7F04DC04 8FA8010C */ lw $t0, 0x10c($sp) -/* 082738 7F04DC08 AD140000 */ sw $s4, ($t0) -/* 08273C 7F04DC0C 8FA90110 */ lw $t1, 0x110($sp) -/* 082740 7F04DC10 240A0001 */ li $t2, 1 -/* 082744 7F04DC14 AD300000 */ sw $s0, ($t1) -/* 082748 7F04DC18 AFAA00CC */ sw $t2, 0xcc($sp) -.L7F04DC1C: -/* 08274C 7F04DC1C 8E020014 */ lw $v0, 0x14($s0) -/* 082750 7F04DC20 8FAB00CC */ lw $t3, 0xcc($sp) -/* 082754 7F04DC24 10400003 */ beqz $v0, .L7F04DC34 -/* 082758 7F04DC28 00000000 */ nop -/* 08275C 7F04DC2C 1000000F */ b .L7F04DC6C -/* 082760 7F04DC30 00408025 */ move $s0, $v0 -.L7F04DC34: -/* 082764 7F04DC34 1200000D */ beqz $s0, .L7F04DC6C -/* 082768 7F04DC38 00000000 */ nop -.L7F04DC3C: -/* 08276C 7F04DC3C 56120004 */ bnel $s0, $s2, .L7F04DC50 -/* 082770 7F04DC40 8E02000C */ lw $v0, 0xc($s0) -/* 082774 7F04DC44 10000009 */ b .L7F04DC6C -/* 082778 7F04DC48 00008025 */ move $s0, $zero -/* 08277C 7F04DC4C 8E02000C */ lw $v0, 0xc($s0) -.L7F04DC50: -/* 082780 7F04DC50 50400004 */ beql $v0, $zero, .L7F04DC64 -/* 082784 7F04DC54 8E100008 */ lw $s0, 8($s0) -/* 082788 7F04DC58 10000004 */ b .L7F04DC6C -/* 08278C 7F04DC5C 00408025 */ move $s0, $v0 -/* 082790 7F04DC60 8E100008 */ lw $s0, 8($s0) -.L7F04DC64: -/* 082794 7F04DC64 1600FFF5 */ bnez $s0, .L7F04DC3C -/* 082798 7F04DC68 00000000 */ nop -.L7F04DC6C: -/* 08279C 7F04DC6C 52000004 */ beql $s0, $zero, .L7F04DC80 -/* 0827A0 7F04DC70 8FBF0054 */ lw $ra, 0x54($sp) -/* 0827A4 7F04DC74 5160FF68 */ beql $t3, $zero, .L7F04DA18 -/* 0827A8 7F04DC78 96020000 */ lhu $v0, ($s0) -.L7F04DC7C: -/* 0827AC 7F04DC7C 8FBF0054 */ lw $ra, 0x54($sp) -.L7F04DC80: -/* 0827B0 7F04DC80 8FA200CC */ lw $v0, 0xcc($sp) -/* 0827B4 7F04DC84 D7B40028 */ ldc1 $f20, 0x28($sp) -/* 0827B8 7F04DC88 8FB00030 */ lw $s0, 0x30($sp) -/* 0827BC 7F04DC8C 8FB10034 */ lw $s1, 0x34($sp) -/* 0827C0 7F04DC90 8FB20038 */ lw $s2, 0x38($sp) -/* 0827C4 7F04DC94 8FB3003C */ lw $s3, 0x3c($sp) -/* 0827C8 7F04DC98 8FB40040 */ lw $s4, 0x40($sp) -/* 0827CC 7F04DC9C 8FB50044 */ lw $s5, 0x44($sp) -/* 0827D0 7F04DCA0 8FB60048 */ lw $s6, 0x48($sp) -/* 0827D4 7F04DCA4 8FB7004C */ lw $s7, 0x4c($sp) -/* 0827D8 7F04DCA8 8FBE0050 */ lw $fp, 0x50($sp) -/* 0827DC 7F04DCAC 03E00008 */ jr $ra -/* 0827E0 7F04DCB0 27BD00F8 */ addiu $sp, $sp, 0xf8 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04DCB4(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*hack, doesnt fit in own data above*/ -.word destroyable_object -.word destroyable_object -.word destroyable_object -.word destroyable_object -.word destroyable_object -.word nondestroyable_object -.word destroyable_object -.word nondestroyable_object -.word destroyable_object - -.text -glabel sub_GAME_7F04DCB4 -/* 0827E4 7F04DCB4 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0827E8 7F04DCB8 AFBF0034 */ sw $ra, 0x34($sp) -/* 0827EC 7F04DCBC AFB00030 */ sw $s0, 0x30($sp) -/* 0827F0 7F04DCC0 8C8E0010 */ lw $t6, 0x10($a0) -/* 0827F4 7F04DCC4 00808025 */ move $s0, $a0 -/* 0827F8 7F04DCC8 0FC1001E */ jal sub_GAME_7F040078 -/* 0827FC 7F04DCCC AFAE003C */ sw $t6, 0x3c($sp) -/* 082800 7F04DCD0 8FA4003C */ lw $a0, 0x3c($sp) -/* 082804 7F04DCD4 00002825 */ move $a1, $zero -/* 082808 7F04DCD8 0FC28333 */ jal sub_GAME_7F0A0CCC -/* 08280C 7F04DCDC AFA20038 */ sw $v0, 0x38($sp) -/* 082810 7F04DCE0 8FA4003C */ lw $a0, 0x3c($sp) -/* 082814 7F04DCE4 0FC28333 */ jal sub_GAME_7F0A0CCC -/* 082818 7F04DCE8 24050001 */ li $a1, 1 -/* 08281C 7F04DCEC 8FA30038 */ lw $v1, 0x38($sp) -/* 082820 7F04DCF0 26040058 */ addiu $a0, $s0, 0x58 -/* 082824 7F04DCF4 26050018 */ addiu $a1, $s0, 0x18 -/* 082828 7F04DCF8 C4640004 */ lwc1 $f4, 4($v1) -/* 08282C 7F04DCFC 26060028 */ addiu $a2, $s0, 0x28 -/* 082830 7F04DD00 26070038 */ addiu $a3, $s0, 0x38 -/* 082834 7F04DD04 E7A40010 */ swc1 $f4, 0x10($sp) -/* 082838 7F04DD08 C4660008 */ lwc1 $f6, 8($v1) -/* 08283C 7F04DD0C E7A60014 */ swc1 $f6, 0x14($sp) -/* 082840 7F04DD10 C468000C */ lwc1 $f8, 0xc($v1) -/* 082844 7F04DD14 E7A80018 */ swc1 $f8, 0x18($sp) -/* 082848 7F04DD18 C46A0010 */ lwc1 $f10, 0x10($v1) -/* 08284C 7F04DD1C E7AA001C */ swc1 $f10, 0x1c($sp) -/* 082850 7F04DD20 C4700014 */ lwc1 $f16, 0x14($v1) -/* 082854 7F04DD24 E7B00020 */ swc1 $f16, 0x20($sp) -/* 082858 7F04DD28 C4720018 */ lwc1 $f18, 0x18($v1) -/* 08285C 7F04DD2C 0FC28768 */ jal sub_GAME_7F0A1DA0 -/* 082860 7F04DD30 E7B20024 */ swc1 $f18, 0x24($sp) -/* 082864 7F04DD34 8E0F0064 */ lw $t7, 0x64($s0) -/* 082868 7F04DD38 92190002 */ lbu $t9, 2($s0) -/* 08286C 7F04DD3C 44802000 */ mtc1 $zero, $f4 -/* 082870 7F04DD40 35F80004 */ ori $t8, $t7, 4 -/* 082874 7F04DD44 37280080 */ ori $t0, $t9, 0x80 -/* 082878 7F04DD48 AE180064 */ sw $t8, 0x64($s0) -/* 08287C 7F04DD4C A2080002 */ sb $t0, 2($s0) -/* 082880 7F04DD50 E6040070 */ swc1 $f4, 0x70($s0) -/* 082884 7F04DD54 8FBF0034 */ lw $ra, 0x34($sp) -/* 082888 7F04DD58 8FB00030 */ lw $s0, 0x30($sp) -/* 08288C 7F04DD5C 27BD0040 */ addiu $sp, $sp, 0x40 -/* 082890 7F04DD60 03E00008 */ jr $ra -/* 082894 7F04DD64 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04DD68(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04DD68 -/* 082898 7F04DD68 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 08289C 7F04DD6C AFBF002C */ sw $ra, 0x2c($sp) -/* 0828A0 7F04DD70 8C8E0010 */ lw $t6, 0x10($a0) -/* 0828A4 7F04DD74 27A50030 */ addiu $a1, $sp, 0x30 -/* 0828A8 7F04DD78 AFAE007C */ sw $t6, 0x7c($sp) -/* 0828AC 7F04DD7C 8C830014 */ lw $v1, 0x14($a0) -/* 0828B0 7F04DD80 8C6F0008 */ lw $t7, 8($v1) -/* 0828B4 7F04DD84 8DF80008 */ lw $t8, 8($t7) -/* 0828B8 7F04DD88 8F190008 */ lw $t9, 8($t8) -/* 0828BC 7F04DD8C 8F220004 */ lw $v0, 4($t9) -/* 0828C0 7F04DD90 AFA30078 */ sw $v1, 0x78($sp) -/* 0828C4 7F04DD94 0FC149BB */ jal sub_GAME_7F0526EC -/* 0828C8 7F04DD98 AFA20074 */ sw $v0, 0x74($sp) -/* 0828CC 7F04DD9C 8FA20074 */ lw $v0, 0x74($sp) -/* 0828D0 7F04DDA0 27A40060 */ addiu $a0, $sp, 0x60 -/* 0828D4 7F04DDA4 27A50030 */ addiu $a1, $sp, 0x30 -/* 0828D8 7F04DDA8 C4440004 */ lwc1 $f4, 4($v0) -/* 0828DC 7F04DDAC 27A60040 */ addiu $a2, $sp, 0x40 -/* 0828E0 7F04DDB0 27A70050 */ addiu $a3, $sp, 0x50 -/* 0828E4 7F04DDB4 E7A40010 */ swc1 $f4, 0x10($sp) -/* 0828E8 7F04DDB8 C4460008 */ lwc1 $f6, 8($v0) -/* 0828EC 7F04DDBC E7A60014 */ swc1 $f6, 0x14($sp) -/* 0828F0 7F04DDC0 C448000C */ lwc1 $f8, 0xc($v0) -/* 0828F4 7F04DDC4 E7A80018 */ swc1 $f8, 0x18($sp) -/* 0828F8 7F04DDC8 C44A0010 */ lwc1 $f10, 0x10($v0) -/* 0828FC 7F04DDCC E7AA001C */ swc1 $f10, 0x1c($sp) -/* 082900 7F04DDD0 C4500014 */ lwc1 $f16, 0x14($v0) -/* 082904 7F04DDD4 E7B00020 */ swc1 $f16, 0x20($sp) -/* 082908 7F04DDD8 C4520018 */ lwc1 $f18, 0x18($v0) -/* 08290C 7F04DDDC 0FC28768 */ jal sub_GAME_7F0A1DA0 -/* 082910 7F04DDE0 E7B20024 */ swc1 $f18, 0x24($sp) -/* 082914 7F04DDE4 8FA4007C */ lw $a0, 0x7c($sp) -/* 082918 7F04DDE8 0FC28333 */ jal sub_GAME_7F0A0CCC -/* 08291C 7F04DDEC 24050001 */ li $a1, 1 -/* 082920 7F04DDF0 8FA40078 */ lw $a0, 0x78($sp) -/* 082924 7F04DDF4 8C880008 */ lw $t0, 8($a0) -/* 082928 7F04DDF8 8D090008 */ lw $t1, 8($t0) -/* 08292C 7F04DDFC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 082930 7F04DE00 8D250004 */ lw $a1, 4($t1) -/* 082934 7F04DE04 AC400000 */ sw $zero, ($v0) -/* 082938 7F04DE08 8FBF002C */ lw $ra, 0x2c($sp) -/* 08293C 7F04DE0C 27BD0080 */ addiu $sp, $sp, 0x80 -/* 082940 7F04DE10 03E00008 */ jr $ra -/* 082944 7F04DE14 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04DE18(void) { - -} -#else -GLOBAL_ASM( - .late_rodata -/*hack, part of check_if_collectable_object*/ -/*D:80052EAC*/ -glabel jpt_80052EAC -.word collectable_object -.word notcollectable_object -.word notcollectable_object -.word collectable_object -.word collectable_object -.word notcollectable_object -.word notcollectable_object -.word notcollectable_object -.word notcollectable_object -.word notcollectable_object -.word notcollectable_object -.word notcollectable_object -.word notcollectable_object -.word collectable_object -.word notcollectable_object -.word notcollectable_object -.word collectable_object -.word collectable_object -.text -glabel sub_GAME_7F04DE18 -/* 082948 7F04DE18 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 08294C 7F04DE1C AFBF0034 */ sw $ra, 0x34($sp) -/* 082950 7F04DE20 AFB00030 */ sw $s0, 0x30($sp) -/* 082954 7F04DE24 8C8E0010 */ lw $t6, 0x10($a0) -/* 082958 7F04DE28 AFAE0094 */ sw $t6, 0x94($sp) -/* 08295C 7F04DE2C 91D80001 */ lbu $t8, 1($t6) -/* 082960 7F04DE30 8C900014 */ lw $s0, 0x14($a0) -/* 082964 7F04DE34 33190002 */ andi $t9, $t8, 2 -/* 082968 7F04DE38 53200023 */ beql $t9, $zero, .L7F04DEC8 -/* 08296C 7F04DE3C 8FA40094 */ lw $a0, 0x94($sp) -/* 082970 7F04DE40 8E080008 */ lw $t0, 8($s0) -/* 082974 7F04DE44 02002025 */ move $a0, $s0 -/* 082978 7F04DE48 00003025 */ move $a2, $zero -/* 08297C 7F04DE4C 8D020008 */ lw $v0, 8($t0) -/* 082980 7F04DE50 8C490008 */ lw $t1, 8($v0) -/* 082984 7F04DE54 8C450004 */ lw $a1, 4($v0) -/* 082988 7F04DE58 8D230004 */ lw $v1, 4($t1) -/* 08298C 7F04DE5C 0FC1B198 */ jal sub_GAME_7F06C660 -/* 082990 7F04DE60 AFA30088 */ sw $v1, 0x88($sp) -/* 082994 7F04DE64 0FC1E111 */ jal sub_GAME_7F078444 -/* 082998 7F04DE68 AFA20084 */ sw $v0, 0x84($sp) -/* 08299C 7F04DE6C 00402025 */ move $a0, $v0 -/* 0829A0 7F04DE70 8FA50084 */ lw $a1, 0x84($sp) -/* 0829A4 7F04DE74 0FC16063 */ jal sub_GAME_7F05818C -/* 0829A8 7F04DE78 27A60044 */ addiu $a2, $sp, 0x44 -/* 0829AC 7F04DE7C 8FA30088 */ lw $v1, 0x88($sp) -/* 0829B0 7F04DE80 27A40074 */ addiu $a0, $sp, 0x74 -/* 0829B4 7F04DE84 27A50044 */ addiu $a1, $sp, 0x44 -/* 0829B8 7F04DE88 C4640004 */ lwc1 $f4, 4($v1) -/* 0829BC 7F04DE8C 27A60054 */ addiu $a2, $sp, 0x54 -/* 0829C0 7F04DE90 27A70064 */ addiu $a3, $sp, 0x64 -/* 0829C4 7F04DE94 E7A40010 */ swc1 $f4, 0x10($sp) -/* 0829C8 7F04DE98 C4660008 */ lwc1 $f6, 8($v1) -/* 0829CC 7F04DE9C E7A60014 */ swc1 $f6, 0x14($sp) -/* 0829D0 7F04DEA0 C468000C */ lwc1 $f8, 0xc($v1) -/* 0829D4 7F04DEA4 E7A80018 */ swc1 $f8, 0x18($sp) -/* 0829D8 7F04DEA8 C46A0010 */ lwc1 $f10, 0x10($v1) -/* 0829DC 7F04DEAC E7AA001C */ swc1 $f10, 0x1c($sp) -/* 0829E0 7F04DEB0 C4700014 */ lwc1 $f16, 0x14($v1) -/* 0829E4 7F04DEB4 E7B00020 */ swc1 $f16, 0x20($sp) -/* 0829E8 7F04DEB8 C4720018 */ lwc1 $f18, 0x18($v1) -/* 0829EC 7F04DEBC 0FC28768 */ jal sub_GAME_7F0A1DA0 -/* 0829F0 7F04DEC0 E7B20024 */ swc1 $f18, 0x24($sp) -/* 0829F4 7F04DEC4 8FA40094 */ lw $a0, 0x94($sp) -.L7F04DEC8: -/* 0829F8 7F04DEC8 0FC28333 */ jal sub_GAME_7F0A0CCC -/* 0829FC 7F04DECC 24050001 */ li $a1, 1 -/* 082A00 7F04DED0 8E0A0008 */ lw $t2, 8($s0) -/* 082A04 7F04DED4 02002025 */ move $a0, $s0 -/* 082A08 7F04DED8 8D4B0008 */ lw $t3, 8($t2) -/* 082A0C 7F04DEDC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 082A10 7F04DEE0 8D65000C */ lw $a1, 0xc($t3) -/* 082A14 7F04DEE4 AC400000 */ sw $zero, ($v0) -/* 082A18 7F04DEE8 8FBF0034 */ lw $ra, 0x34($sp) -/* 082A1C 7F04DEEC 8FB00030 */ lw $s0, 0x30($sp) -/* 082A20 7F04DEF0 27BD0098 */ addiu $sp, $sp, 0x98 -/* 082A24 7F04DEF4 03E00008 */ jr $ra -/* 082A28 7F04DEF8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04DEFC(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04DEFC -/* 082A2C 7F04DEFC 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 082A30 7F04DF00 AFBF003C */ sw $ra, 0x3c($sp) -/* 082A34 7F04DF04 AFB40038 */ sw $s4, 0x38($sp) -/* 082A38 7F04DF08 AFB30034 */ sw $s3, 0x34($sp) -/* 082A3C 7F04DF0C AFB20030 */ sw $s2, 0x30($sp) -/* 082A40 7F04DF10 AFB1002C */ sw $s1, 0x2c($sp) -/* 082A44 7F04DF14 AFB00028 */ sw $s0, 0x28($sp) -/* 082A48 7F04DF18 F7B40020 */ sdc1 $f20, 0x20($sp) -/* 082A4C 7F04DF1C AFA40040 */ sw $a0, 0x40($sp) -/* 082A50 7F04DF20 8C820004 */ lw $v0, 4($a0) -/* 082A54 7F04DF24 8FB20050 */ lw $s2, 0x50($sp) -/* 082A58 7F04DF28 3C01FFF9 */ lui $at, (0xFFF9FFFF >> 16) # lui $at, 0xfff9 -/* 082A5C 7F04DF2C 8C4F0064 */ lw $t7, 0x64($v0) -/* 082A60 7F04DF30 3421FFFF */ ori $at, (0xFFF9FFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 082A64 7F04DF34 00124440 */ sll $t0, $s2, 0x11 -/* 082A68 7F04DF38 01E1C024 */ and $t8, $t7, $at -/* 082A6C 7F04DF3C 03084825 */ or $t1, $t8, $t0 -/* 082A70 7F04DF40 4485A000 */ mtc1 $a1, $f20 -/* 082A74 7F04DF44 00095B00 */ sll $t3, $t1, 0xc -/* 082A78 7F04DF48 AC580064 */ sw $t8, 0x64($v0) -/* 082A7C 7F04DF4C 00C09825 */ move $s3, $a2 -/* 082A80 7F04DF50 00E0A025 */ move $s4, $a3 -/* 082A84 7F04DF54 05600015 */ bltz $t3, .L7F04DFAC -/* 082A88 7F04DF58 AC490064 */ sw $t1, 0x64($v0) -/* 082A8C 7F04DF5C 8FAC0040 */ lw $t4, 0x40($sp) -/* 082A90 7F04DF60 8D900020 */ lw $s0, 0x20($t4) -/* 082A94 7F04DF64 5200000B */ beql $s0, $zero, .L7F04DF94 -/* 082A98 7F04DF68 8FAD0040 */ lw $t5, 0x40($sp) -.L7F04DF6C: -/* 082A9C 7F04DF6C 8E110024 */ lw $s1, 0x24($s0) -/* 082AA0 7F04DF70 4405A000 */ mfc1 $a1, $f20 -/* 082AA4 7F04DF74 AFB20010 */ sw $s2, 0x10($sp) -/* 082AA8 7F04DF78 02002025 */ move $a0, $s0 -/* 082AAC 7F04DF7C 02603025 */ move $a2, $s3 -/* 082AB0 7F04DF80 0FC137BF */ jal sub_GAME_7F04DEFC -/* 082AB4 7F04DF84 02803825 */ move $a3, $s4 -/* 082AB8 7F04DF88 1620FFF8 */ bnez $s1, .L7F04DF6C -/* 082ABC 7F04DF8C 02208025 */ move $s0, $s1 -/* 082AC0 7F04DF90 8FAD0040 */ lw $t5, 0x40($sp) -.L7F04DF94: -/* 082AC4 7F04DF94 4405A000 */ mfc1 $a1, $f20 -/* 082AC8 7F04DF98 02603025 */ move $a2, $s3 -/* 082ACC 7F04DF9C 8DA40004 */ lw $a0, 4($t5) -/* 082AD0 7F04DFA0 AFB20010 */ sw $s2, 0x10($sp) -/* 082AD4 7F04DFA4 0FC13842 */ jal maybe_detonate_object -/* 082AD8 7F04DFA8 02803825 */ move $a3, $s4 -.L7F04DFAC: -/* 082ADC 7F04DFAC 8FBF003C */ lw $ra, 0x3c($sp) -/* 082AE0 7F04DFB0 D7B40020 */ ldc1 $f20, 0x20($sp) -/* 082AE4 7F04DFB4 8FB00028 */ lw $s0, 0x28($sp) -/* 082AE8 7F04DFB8 8FB1002C */ lw $s1, 0x2c($sp) -/* 082AEC 7F04DFBC 8FB20030 */ lw $s2, 0x30($sp) -/* 082AF0 7F04DFC0 8FB30034 */ lw $s3, 0x34($sp) -/* 082AF4 7F04DFC4 8FB40038 */ lw $s4, 0x38($sp) -/* 082AF8 7F04DFC8 03E00008 */ jr $ra -/* 082AFC 7F04DFCC 27BD0040 */ addiu $sp, $sp, 0x40 -) -#endif - - - - - -#ifdef NONMATCHING -void check_if_destroyable_object_type(void) { - -} -#else -GLOBAL_ASM( -.late_rodata - - -.text -glabel check_if_destroyable_object_type -/* 082B00 7F04DFD0 908E0003 */ lbu $t6, 3($a0) -/* 082B04 7F04DFD4 25CFFFFF */ addiu $t7, $t6, -1 -/* 082B08 7F04DFD8 2DE1002F */ sltiu $at, $t7, 0x2f -/* 082B0C 7F04DFDC 10200008 */ beqz $at, .L7F04E000 -/* 082B10 7F04DFE0 000F7880 */ sll $t7, $t7, 2 -/* 082B14 7F04DFE4 3C018005 */ lui $at, %hi(jpt_80052DF0) -/* 082B18 7F04DFE8 002F0821 */ addu $at, $at, $t7 -/* 082B1C 7F04DFEC 8C2F2DF0 */ lw $t7, %lo(jpt_80052DF0)($at) -/* 082B20 7F04DFF0 01E00008 */ jr $t7 -/* 082B24 7F04DFF4 00000000 */ nop -destroyable_object: -/* 082B28 7F04DFF8 03E00008 */ jr $ra -/* 082B2C 7F04DFFC 24020001 */ li $v0, 1 - -nondestroyable_object: -.L7F04E000: -/* 082B30 7F04E000 00001025 */ move $v0, $zero -/* 082B34 7F04E004 03E00008 */ jr $ra -/* 082B38 7F04E008 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void check_if_collectable_object(void) { - -} -#else -GLOBAL_ASM( -.text -glabel check_if_collectable_object -/* 082B3C 7F04E00C 908E0003 */ lbu $t6, 3($a0) -/* 082B40 7F04E010 25CFFFFC */ addiu $t7, $t6, -4 -/* 082B44 7F04E014 2DE10012 */ sltiu $at, $t7, 0x12 -/* 082B48 7F04E018 10200008 */ beqz $at, .L7F04E03C -/* 082B4C 7F04E01C 000F7880 */ sll $t7, $t7, 2 -/* 082B50 7F04E020 3C018005 */ lui $at, %hi(jpt_80052EAC) -/* 082B54 7F04E024 002F0821 */ addu $at, $at, $t7 -/* 082B58 7F04E028 8C2F2EAC */ lw $t7, %lo(jpt_80052EAC)($at) -/* 082B5C 7F04E02C 01E00008 */ jr $t7 -/* 082B60 7F04E030 00000000 */ nop -collectable_object: -/* 082B64 7F04E034 03E00008 */ jr $ra -/* 082B68 7F04E038 24020001 */ li $v0, 1 - -notcollectable_object: -.L7F04E03C: -/* 082B6C 7F04E03C 00001025 */ move $v0, $zero -/* 082B70 7F04E040 03E00008 */ jr $ra -/* 082B74 7F04E044 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void check_if_destroyable_not_invincible(void) { - -} -#else -GLOBAL_ASM( -.text -glabel check_if_destroyable_not_invincible -/* 082B78 7F04E048 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 082B7C 7F04E04C AFBF0014 */ sw $ra, 0x14($sp) -/* 082B80 7F04E050 908E0003 */ lbu $t6, 3($a0) -/* 082B84 7F04E054 24010001 */ li $at, 1 -/* 082B88 7F04E058 15C10003 */ bne $t6, $at, .L7F04E068 -/* 082B8C 7F04E05C 00000000 */ nop -/* 082B90 7F04E060 10000016 */ b .L7F04E0BC -/* 082B94 7F04E064 00001025 */ move $v0, $zero -.L7F04E068: -/* 082B98 7F04E068 0FC13803 */ jal check_if_collectable_object -/* 082B9C 7F04E06C AFA40018 */ sw $a0, 0x18($sp) -/* 082BA0 7F04E070 1040000B */ beqz $v0, .L7F04E0A0 -/* 082BA4 7F04E074 8FA40018 */ lw $a0, 0x18($sp) -/* 082BA8 7F04E078 908F0003 */ lbu $t7, 3($a0) -/* 082BAC 7F04E07C 24010015 */ li $at, 21 -/* 082BB0 7F04E080 51E10008 */ beql $t7, $at, .L7F04E0A4 -/* 082BB4 7F04E084 8C880008 */ lw $t0, 8($a0) -/* 082BB8 7F04E088 8C980008 */ lw $t8, 8($a0) -/* 082BBC 7F04E08C 0018CBC0 */ sll $t9, $t8, 0xf -/* 082BC0 7F04E090 0722000A */ bltzl $t9, .L7F04E0BC -/* 082BC4 7F04E094 24020001 */ li $v0, 1 -/* 082BC8 7F04E098 10000008 */ b .L7F04E0BC -/* 082BCC 7F04E09C 00001025 */ move $v0, $zero -.L7F04E0A0: -/* 082BD0 7F04E0A0 8C880008 */ lw $t0, 8($a0) -.L7F04E0A4: -/* 082BD4 7F04E0A4 00084B80 */ sll $t1, $t0, 0xe -/* 082BD8 7F04E0A8 05230004 */ bgezl $t1, .L7F04E0BC -/* 082BDC 7F04E0AC 24020001 */ li $v0, 1 -/* 082BE0 7F04E0B0 10000002 */ b .L7F04E0BC -/* 082BE4 7F04E0B4 00001025 */ move $v0, $zero -/* 082BE8 7F04E0B8 24020001 */ li $v0, 1 -.L7F04E0BC: -/* 082BEC 7F04E0BC 8FBF0014 */ lw $ra, 0x14($sp) -/* 082BF0 7F04E0C0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 082BF4 7F04E0C4 03E00008 */ jr $ra -/* 082BF8 7F04E0C8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04E0CC(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04E0CC -/* 082BFC 7F04E0CC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 082C00 7F04E0D0 AFBF001C */ sw $ra, 0x1c($sp) -/* 082C04 7F04E0D4 8C8E000C */ lw $t6, 0xc($a0) -/* 082C08 7F04E0D8 44856000 */ mtc1 $a1, $f12 -/* 082C0C 7F04E0DC 8FB80030 */ lw $t8, 0x30($sp) -/* 082C10 7F04E0E0 31CF4000 */ andi $t7, $t6, 0x4000 -/* 082C14 7F04E0E4 55E00005 */ bnezl $t7, .L7F04E0FC -/* 082C18 7F04E0E8 8FBF001C */ lw $ra, 0x1c($sp) -/* 082C1C 7F04E0EC 44056000 */ mfc1 $a1, $f12 -/* 082C20 7F04E0F0 0FC13842 */ jal maybe_detonate_object -/* 082C24 7F04E0F4 AFB80010 */ sw $t8, 0x10($sp) -/* 082C28 7F04E0F8 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04E0FC: -/* 082C2C 7F04E0FC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 082C30 7F04E100 03E00008 */ jr $ra -/* 082C34 7F04E104 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void maybe_detonate_object(void) { - -} -#else -GLOBAL_ASM( -.text -glabel maybe_detonate_object -/* 082C38 7F04E108 27BDFF20 */ addiu $sp, $sp, -0xe0 -/* 082C3C 7F04E10C AFBF001C */ sw $ra, 0x1c($sp) -/* 082C40 7F04E110 AFB00018 */ sw $s0, 0x18($sp) -/* 082C44 7F04E114 AFA600E8 */ sw $a2, 0xe8($sp) -/* 082C48 7F04E118 AFA700EC */ sw $a3, 0xec($sp) -/* 082C4C 7F04E11C 8C8E0064 */ lw $t6, 0x64($a0) -/* 082C50 7F04E120 3C01FFF9 */ lui $at, (0xFFF9FFFF >> 16) # lui $at, 0xfff9 -/* 082C54 7F04E124 3421FFFF */ ori $at, (0xFFF9FFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 082C58 7F04E128 01C17824 */ and $t7, $t6, $at -/* 082C5C 7F04E12C AC8F0064 */ sw $t7, 0x64($a0) -/* 082C60 7F04E130 8FB900F0 */ lw $t9, 0xf0($sp) -/* 082C64 7F04E134 908B0003 */ lbu $t3, 3($a0) -/* 082C68 7F04E138 44856000 */ mtc1 $a1, $f12 -/* 082C6C 7F04E13C 00194C40 */ sll $t1, $t9, 0x11 -/* 082C70 7F04E140 01E95025 */ or $t2, $t7, $t1 -/* 082C74 7F04E144 24010024 */ li $at, 36 -/* 082C78 7F04E148 00808025 */ move $s0, $a0 -/* 082C7C 7F04E14C 15610006 */ bne $t3, $at, .L7F04E168 -/* 082C80 7F04E150 AC8A0064 */ sw $t2, 0x64($a0) -/* 082C84 7F04E154 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 082C88 7F04E158 E7AC00E4 */ swc1 $f12, 0xe4($sp) -/* 082C8C 7F04E15C 24010001 */ li $at, 1 -/* 082C90 7F04E160 1041016A */ beq $v0, $at, .L7F04E70C -/* 082C94 7F04E164 C7AC00E4 */ lwc1 $f12, 0xe4($sp) -.L7F04E168: -/* 082C98 7F04E168 8FAC00EC */ lw $t4, 0xec($sp) -/* 082C9C 7F04E16C 02002025 */ move $a0, $s0 -/* 082CA0 7F04E170 55800012 */ bnezl $t4, .L7F04E1BC -/* 082CA4 7F04E174 8E030008 */ lw $v1, 8($s0) -/* 082CA8 7F04E178 0FC13803 */ jal check_if_collectable_object -/* 082CAC 7F04E17C E7AC00E4 */ swc1 $f12, 0xe4($sp) -/* 082CB0 7F04E180 10400007 */ beqz $v0, .L7F04E1A0 -/* 082CB4 7F04E184 C7AC00E4 */ lwc1 $f12, 0xe4($sp) -/* 082CB8 7F04E188 8E0D0008 */ lw $t5, 8($s0) -/* 082CBC 7F04E18C 000D7200 */ sll $t6, $t5, 8 -/* 082CC0 7F04E190 05C20045 */ bltzl $t6, .L7F04E2A8 -/* 082CC4 7F04E194 02002025 */ move $a0, $s0 -/* 082CC8 7F04E198 1000015D */ b .L7F04E710 -/* 082CCC 7F04E19C 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04E1A0: -/* 082CD0 7F04E1A0 8E0F0008 */ lw $t7, 8($s0) -/* 082CD4 7F04E1A4 000FC9C0 */ sll $t9, $t7, 7 -/* 082CD8 7F04E1A8 0723003F */ bgezl $t9, .L7F04E2A8 -/* 082CDC 7F04E1AC 02002025 */ move $a0, $s0 -/* 082CE0 7F04E1B0 10000157 */ b .L7F04E710 -/* 082CE4 7F04E1B4 8FBF001C */ lw $ra, 0x1c($sp) -/* 082CE8 7F04E1B8 8E030008 */ lw $v1, 8($s0) -.L7F04E1BC: -/* 082CEC 7F04E1BC 0003C380 */ sll $t8, $v1, 0xe -/* 082CF0 7F04E1C0 07020153 */ bltzl $t8, .L7F04E710 -/* 082CF4 7F04E1C4 8FBF001C */ lw $ra, 0x1c($sp) -/* 082CF8 7F04E1C8 92020003 */ lbu $v0, 3($s0) -/* 082CFC 7F04E1CC 24050008 */ li $a1, 8 -/* 082D00 7F04E1D0 24040007 */ li $a0, 7 -/* 082D04 7F04E1D4 14A20015 */ bne $a1, $v0, .L7F04E22C -/* 082D08 7F04E1D8 00000000 */ nop -/* 082D0C 7F04E1DC 82020080 */ lb $v0, 0x80($s0) -/* 082D10 7F04E1E0 2401001A */ li $at, 26 -/* 082D14 7F04E1E4 1041000F */ beq $v0, $at, .L7F04E224 -/* 082D18 7F04E1E8 2401001B */ li $at, 27 -/* 082D1C 7F04E1EC 1041000D */ beq $v0, $at, .L7F04E224 -/* 082D20 7F04E1F0 2401001D */ li $at, 29 -/* 082D24 7F04E1F4 1041000B */ beq $v0, $at, .L7F04E224 -/* 082D28 7F04E1F8 2401001C */ li $at, 28 -/* 082D2C 7F04E1FC 10410009 */ beq $v0, $at, .L7F04E224 -/* 082D30 7F04E200 24010056 */ li $at, 86 -/* 082D34 7F04E204 10410007 */ beq $v0, $at, .L7F04E224 -/* 082D38 7F04E208 24010057 */ li $at, 87 -/* 082D3C 7F04E20C 10410005 */ beq $v0, $at, .L7F04E224 -/* 082D40 7F04E210 24010021 */ li $at, 33 -/* 082D44 7F04E214 10410003 */ beq $v0, $at, .L7F04E224 -/* 082D48 7F04E218 24010022 */ li $at, 34 -/* 082D4C 7F04E21C 5441013C */ bnel $v0, $at, .L7F04E710 -/* 082D50 7F04E220 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04E224: -/* 082D54 7F04E224 10000139 */ b .L7F04E70C -/* 082D58 7F04E228 A6000082 */ sh $zero, 0x82($s0) -.L7F04E22C: -/* 082D5C 7F04E22C 54820019 */ bnel $a0, $v0, .L7F04E294 -/* 082D60 7F04E230 02002025 */ move $a0, $s0 -/* 082D64 7F04E234 8E020080 */ lw $v0, 0x80($s0) -/* 082D68 7F04E238 24010005 */ li $at, 5 -/* 082D6C 7F04E23C 10410010 */ beq $v0, $at, .L7F04E280 -/* 082D70 7F04E240 24010006 */ li $at, 6 -/* 082D74 7F04E244 5041000F */ beql $v0, $at, .L7F04E284 -/* 082D78 7F04E248 3C011000 */ lui $at, 0x1000 -/* 082D7C 7F04E24C 5082000D */ beql $a0, $v0, .L7F04E284 -/* 082D80 7F04E250 3C011000 */ lui $at, 0x1000 -/* 082D84 7F04E254 10A2000A */ beq $a1, $v0, .L7F04E280 -/* 082D88 7F04E258 24010009 */ li $at, 9 -/* 082D8C 7F04E25C 10410008 */ beq $v0, $at, .L7F04E280 -/* 082D90 7F04E260 2401000B */ li $at, 11 -/* 082D94 7F04E264 10410006 */ beq $v0, $at, .L7F04E280 -/* 082D98 7F04E268 2401000F */ li $at, 15 -/* 082D9C 7F04E26C 10410004 */ beq $v0, $at, .L7F04E280 -/* 082DA0 7F04E270 24010010 */ li $at, 16 -/* 082DA4 7F04E274 10410002 */ beq $v0, $at, .L7F04E280 -/* 082DA8 7F04E278 24010013 */ li $at, 19 -/* 082DAC 7F04E27C 14410123 */ bne $v0, $at, .L7F04E70C -.L7F04E280: -/* 082DB0 7F04E280 3C011000 */ li $at, 0x10000000 # 0.000000 -.L7F04E284: -/* 082DB4 7F04E284 00614825 */ or $t1, $v1, $at -/* 082DB8 7F04E288 10000120 */ b .L7F04E70C -/* 082DBC 7F04E28C AE090008 */ sw $t1, 8($s0) -/* 082DC0 7F04E290 02002025 */ move $a0, $s0 -.L7F04E294: -/* 082DC4 7F04E294 0FC13812 */ jal check_if_destroyable_not_invincible -/* 082DC8 7F04E298 E7AC00E4 */ swc1 $f12, 0xe4($sp) -/* 082DCC 7F04E29C 1040011B */ beqz $v0, .L7F04E70C -/* 082DD0 7F04E2A0 C7AC00E4 */ lwc1 $f12, 0xe4($sp) -/* 082DD4 7F04E2A4 02002025 */ move $a0, $s0 -.L7F04E2A8: -/* 082DD8 7F04E2A8 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 082DDC 7F04E2AC E7AC00E4 */ swc1 $f12, 0xe4($sp) -/* 082DE0 7F04E2B0 14400008 */ bnez $v0, .L7F04E2D4 -/* 082DE4 7F04E2B4 C7AC00E4 */ lwc1 $f12, 0xe4($sp) -/* 082DE8 7F04E2B8 3C01437A */ li $at, 0x437A0000 # 250.000000 -/* 082DEC 7F04E2BC 44813000 */ mtc1 $at, $f6 -/* 082DF0 7F04E2C0 C6040070 */ lwc1 $f4, 0x70($s0) -/* 082DF4 7F04E2C4 46066202 */ mul.s $f8, $f12, $f6 -/* 082DF8 7F04E2C8 46082280 */ add.s $f10, $f4, $f8 -/* 082DFC 7F04E2CC 1000001F */ b .L7F04E34C -/* 082E00 7F04E2D0 E60A0070 */ swc1 $f10, 0x70($s0) -.L7F04E2D4: -/* 082E04 7F04E2D4 02002025 */ move $a0, $s0 -/* 082E08 7F04E2D8 0FC0FFD8 */ jal sub_GAME_7F03FF60 -/* 082E0C 7F04E2DC E7AC00E4 */ swc1 $f12, 0xe4($sp) -/* 082E10 7F04E2E0 240B0004 */ li $t3, 4 -/* 082E14 7F04E2E4 C7AC00E4 */ lwc1 $f12, 0xe4($sp) -/* 082E18 7F04E2E8 04410004 */ bgez $v0, .L7F04E2FC -/* 082E1C 7F04E2EC 304A0003 */ andi $t2, $v0, 3 -/* 082E20 7F04E2F0 11400002 */ beqz $t2, .L7F04E2FC -/* 082E24 7F04E2F4 00000000 */ nop -/* 082E28 7F04E2F8 254AFFFC */ addiu $t2, $t2, -4 -.L7F04E2FC: -/* 082E2C 7F04E2FC 016A6023 */ subu $t4, $t3, $t2 -/* 082E30 7F04E300 448C8000 */ mtc1 $t4, $f16 -/* 082E34 7F04E304 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 082E38 7F04E308 46808020 */ cvt.s.w $f0, $f16 -/* 082E3C 7F04E30C 460C003C */ c.lt.s $f0, $f12 -/* 082E40 7F04E310 00000000 */ nop -/* 082E44 7F04E314 45020004 */ bc1fl .L7F04E328 -/* 082E48 7F04E318 44810000 */ mtc1 $at, $f0 -/* 082E4C 7F04E31C 10000008 */ b .L7F04E340 -/* 082E50 7F04E320 46000306 */ mov.s $f12, $f0 -/* 082E54 7F04E324 44810000 */ mtc1 $at, $f0 -.L7F04E328: -/* 082E58 7F04E328 00000000 */ nop -/* 082E5C 7F04E32C 4600603C */ c.lt.s $f12, $f0 -/* 082E60 7F04E330 00000000 */ nop -/* 082E64 7F04E334 45020003 */ bc1fl .L7F04E344 -/* 082E68 7F04E338 C6120070 */ lwc1 $f18, 0x70($s0) -/* 082E6C 7F04E33C 46000306 */ mov.s $f12, $f0 -.L7F04E340: -/* 082E70 7F04E340 C6120070 */ lwc1 $f18, 0x70($s0) -.L7F04E344: -/* 082E74 7F04E344 460C9180 */ add.s $f6, $f18, $f12 -/* 082E78 7F04E348 E6060070 */ swc1 $f6, 0x70($s0) -.L7F04E34C: -/* 082E7C 7F04E34C 92020003 */ lbu $v0, 3($s0) -/* 082E80 7F04E350 2401002A */ li $at, 42 -/* 082E84 7F04E354 10410003 */ beq $v0, $at, .L7F04E364 -/* 082E88 7F04E358 2401002F */ li $at, 47 -/* 082E8C 7F04E35C 1441000B */ bne $v0, $at, .L7F04E38C -/* 082E90 7F04E360 24050001 */ li $a1, 1 -.L7F04E364: -/* 082E94 7F04E364 C6040070 */ lwc1 $f4, 0x70($s0) -/* 082E98 7F04E368 C6080074 */ lwc1 $f8, 0x74($s0) -/* 082E9C 7F04E36C 4604403E */ c.le.s $f8, $f4 -/* 082EA0 7F04E370 00000000 */ nop -/* 082EA4 7F04E374 4502000D */ bc1fl .L7F04E3AC -/* 082EA8 7F04E378 24010014 */ li $at, 20 -/* 082EAC 7F04E37C 0FC1372D */ jal sub_GAME_7F04DCB4 -/* 082EB0 7F04E380 02002025 */ move $a0, $s0 -/* 082EB4 7F04E384 10000008 */ b .L7F04E3A8 -/* 082EB8 7F04E388 92020003 */ lbu $v0, 3($s0) -.L7F04E38C: -/* 082EBC 7F04E38C 0FC12FF4 */ jal sub_GAME_7F04BFD0 -/* 082EC0 7F04E390 8E040010 */ lw $a0, 0x10($s0) -/* 082EC4 7F04E394 02002025 */ move $a0, $s0 -/* 082EC8 7F04E398 8FA500E8 */ lw $a1, 0xe8($sp) -/* 082ECC 7F04E39C 0FC13383 */ jal object_explosion_related -/* 082ED0 7F04E3A0 8FA600F0 */ lw $a2, 0xf0($sp) -/* 082ED4 7F04E3A4 92020003 */ lbu $v0, 3($s0) -.L7F04E3A8: -/* 082ED8 7F04E3A8 24010014 */ li $at, 20 -.L7F04E3AC: -/* 082EDC 7F04E3AC 54410065 */ bnel $v0, $at, .L7F04E544 -/* 082EE0 7F04E3B0 92020003 */ lbu $v0, 3($s0) -/* 082EE4 7F04E3B4 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 082EE8 7F04E3B8 02002025 */ move $a0, $s0 -/* 082EEC 7F04E3BC 24010001 */ li $at, 1 -/* 082EF0 7F04E3C0 54410060 */ bnel $v0, $at, .L7F04E544 -/* 082EF4 7F04E3C4 92020003 */ lbu $v0, 3($s0) -/* 082EF8 7F04E3C8 0C002914 */ jal get_random_value -/* 082EFC 7F04E3CC 00000000 */ nop -/* 082F00 7F04E3D0 2401000D */ li $at, 13 -/* 082F04 7F04E3D4 0041001B */ divu $zero, $v0, $at -/* 082F08 7F04E3D8 00002010 */ mfhi $a0 -/* 082F0C 7F04E3DC 00802825 */ move $a1, $a0 -/* 082F10 7F04E3E0 00000000 */ nop -/* 082F14 7F04E3E4 00046880 */ sll $t5, $a0, 2 -.L7F04E3E8: -/* 082F18 7F04E3E8 020D1821 */ addu $v1, $s0, $t5 -/* 082F1C 7F04E3EC 946E0082 */ lhu $t6, 0x82($v1) -/* 082F20 7F04E3F0 59C0004E */ blezl $t6, .L7F04E52C -/* 082F24 7F04E3F4 24840001 */ addiu $a0, $a0, 1 -/* 082F28 7F04E3F8 946F0080 */ lhu $t7, 0x80($v1) -/* 082F2C 7F04E3FC 3401FFFF */ li $at, 65535 -/* 082F30 7F04E400 51E1004A */ beql $t7, $at, .L7F04E52C -/* 082F34 7F04E404 24840001 */ addiu $a0, $a0, 1 -/* 082F38 7F04E408 AFA30024 */ sw $v1, 0x24($sp) -/* 082F3C 7F04E40C AFA400C4 */ sw $a0, 0xc4($sp) -/* 082F40 7F04E410 0FC14634 */ jal sub_GAME_7F0518D0 -/* 082F44 7F04E414 AFA500C8 */ sw $a1, 0xc8($sp) -/* 082F48 7F04E418 8FA30024 */ lw $v1, 0x24($sp) -/* 082F4C 7F04E41C 8FA400C4 */ lw $a0, 0xc4($sp) -/* 082F50 7F04E420 8FA500C8 */ lw $a1, 0xc8($sp) -/* 082F54 7F04E424 10400040 */ beqz $v0, .L7F04E528 -/* 082F58 7F04E428 00403025 */ move $a2, $v0 -/* 082F5C 7F04E42C 3C198003 */ lui $t9, %hi(blank_07_object) -/* 082F60 7F04E430 27A8003C */ addiu $t0, $sp, 0x3c -/* 082F64 7F04E434 27392094 */ addiu $t9, %lo(blank_07_object) # addiu $t9, $t9, 0x2094 -/* 082F68 7F04E438 94670080 */ lhu $a3, 0x80($v1) -/* 082F6C 7F04E43C 27290078 */ addiu $t1, $t9, 0x78 -/* 082F70 7F04E440 01005825 */ move $t3, $t0 -.L7F04E444: -/* 082F74 7F04E444 8F210000 */ lw $at, ($t9) -/* 082F78 7F04E448 2739000C */ addiu $t9, $t9, 0xc -/* 082F7C 7F04E44C 256B000C */ addiu $t3, $t3, 0xc -/* 082F80 7F04E450 AD61FFF4 */ sw $at, -0xc($t3) -/* 082F84 7F04E454 8F21FFF8 */ lw $at, -8($t9) -/* 082F88 7F04E458 AD61FFF8 */ sw $at, -8($t3) -/* 082F8C 7F04E45C 8F21FFFC */ lw $at, -4($t9) -/* 082F90 7F04E460 1729FFF8 */ bne $t9, $t1, .L7F04E444 -/* 082F94 7F04E464 AD61FFFC */ sw $at, -4($t3) -/* 082F98 7F04E468 8F210000 */ lw $at, ($t9) -/* 082F9C 7F04E46C 01006825 */ move $t5, $t0 -/* 082FA0 7F04E470 00407025 */ move $t6, $v0 -/* 082FA4 7F04E474 AD610000 */ sw $at, ($t3) -/* 082FA8 7F04E478 8F290004 */ lw $t1, 4($t9) -/* 082FAC 7F04E47C 250C0078 */ addiu $t4, $t0, 0x78 -/* 082FB0 7F04E480 0007C080 */ sll $t8, $a3, 2 -/* 082FB4 7F04E484 AD690004 */ sw $t1, 4($t3) -.L7F04E488: -/* 082FB8 7F04E488 8DA10000 */ lw $at, ($t5) -/* 082FBC 7F04E48C 25AD000C */ addiu $t5, $t5, 0xc -/* 082FC0 7F04E490 25CE000C */ addiu $t6, $t6, 0xc -/* 082FC4 7F04E494 ADC1FFF4 */ sw $at, -0xc($t6) -/* 082FC8 7F04E498 8DA1FFF8 */ lw $at, -8($t5) -/* 082FCC 7F04E49C ADC1FFF8 */ sw $at, -8($t6) -/* 082FD0 7F04E4A0 8DA1FFFC */ lw $at, -4($t5) -/* 082FD4 7F04E4A4 15ACFFF8 */ bne $t5, $t4, .L7F04E488 -/* 082FD8 7F04E4A8 ADC1FFFC */ sw $at, -4($t6) -/* 082FDC 7F04E4AC 8DA10000 */ lw $at, ($t5) -/* 082FE0 7F04E4B0 24850001 */ addiu $a1, $a0, 1 -/* 082FE4 7F04E4B4 00C02025 */ move $a0, $a2 -/* 082FE8 7F04E4B8 ADC10000 */ sw $at, ($t6) -/* 082FEC 7F04E4BC 8DAC0004 */ lw $t4, 4($t5) -/* 082FF0 7F04E4C0 24010002 */ li $at, 2 -/* 082FF4 7F04E4C4 0307C023 */ subu $t8, $t8, $a3 -/* 082FF8 7F04E4C8 ADCC0004 */ sw $t4, 4($t6) -/* 082FFC 7F04E4CC A4470004 */ sh $a3, 4($v0) -/* 083000 7F04E4D0 14A10003 */ bne $a1, $at, .L7F04E4E0 -/* 083004 7F04E4D4 AC450080 */ sw $a1, 0x80($v0) -/* 083008 7F04E4D8 240F0001 */ li $t7, 1 -/* 08300C 7F04E4DC AC4F0080 */ sw $t7, 0x80($v0) -.L7F04E4E0: -/* 083010 7F04E4E0 0018C080 */ sll $t8, $t8, 2 -/* 083014 7F04E4E4 3C058004 */ lui $a1, %hi(PitemZ_entries) -/* 083018 7F04E4E8 00B82821 */ addu $a1, $a1, $t8 -/* 08301C 7F04E4EC 8CA5A228 */ lw $a1, %lo(PitemZ_entries)($a1) -/* 083020 7F04E4F0 0FC101BE */ jal sub_GAME_7F0406F8 -/* 083024 7F04E4F4 AFA600C0 */ sw $a2, 0xc0($sp) -/* 083028 7F04E4F8 10400011 */ beqz $v0, .L7F04E540 -/* 08302C 7F04E4FC 8FA600C0 */ lw $a2, 0xc0($sp) -/* 083030 7F04E500 8CC40014 */ lw $a0, 0x14($a2) -/* 083034 7F04E504 8C850014 */ lw $a1, 0x14($a0) -/* 083038 7F04E508 0FC1B39E */ jal set_obj_instance_controller_scale -/* 08303C 7F04E50C AFA600C0 */ sw $a2, 0xc0($sp) -/* 083040 7F04E510 8FA600C0 */ lw $a2, 0xc0($sp) -/* 083044 7F04E514 8E050010 */ lw $a1, 0x10($s0) -/* 083048 7F04E518 0FC0E969 */ jal sub_GAME_7F03A5A4 -/* 08304C 7F04E51C 8CC40010 */ lw $a0, 0x10($a2) -/* 083050 7F04E520 10000008 */ b .L7F04E544 -/* 083054 7F04E524 92020003 */ lbu $v0, 3($s0) -.L7F04E528: -/* 083058 7F04E528 24840001 */ addiu $a0, $a0, 1 -.L7F04E52C: -/* 08305C 7F04E52C 2401000D */ li $at, 13 -/* 083060 7F04E530 0081001A */ div $zero, $a0, $at -/* 083064 7F04E534 00002010 */ mfhi $a0 -/* 083068 7F04E538 5485FFAB */ bnel $a0, $a1, .L7F04E3E8 -/* 08306C 7F04E53C 00046880 */ sll $t5, $a0, 2 -.L7F04E540: -/* 083070 7F04E540 92020003 */ lbu $v0, 3($s0) -.L7F04E544: -/* 083074 7F04E544 2401000D */ li $at, 13 -/* 083078 7F04E548 54410010 */ bnel $v0, $at, .L7F04E58C -/* 08307C 7F04E54C 24010006 */ li $at, 6 -/* 083080 7F04E550 8E190008 */ lw $t9, 8($s0) -/* 083084 7F04E554 3C014000 */ lui $at, 0x4000 -/* 083088 7F04E558 02002025 */ move $a0, $s0 -/* 08308C 7F04E55C 03215825 */ or $t3, $t9, $at -/* 083090 7F04E560 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 083094 7F04E564 AE0B0008 */ sw $t3, 8($s0) -/* 083098 7F04E568 24010001 */ li $at, 1 -/* 08309C 7F04E56C 14410057 */ bne $v0, $at, .L7F04E6CC -/* 0830A0 7F04E570 00000000 */ nop -/* 0830A4 7F04E574 8E0A0008 */ lw $t2, 8($s0) -/* 0830A8 7F04E578 3C011000 */ lui $at, 0x1000 -/* 0830AC 7F04E57C 01416025 */ or $t4, $t2, $at -/* 0830B0 7F04E580 10000052 */ b .L7F04E6CC -/* 0830B4 7F04E584 AE0C0008 */ sw $t4, 8($s0) -/* 0830B8 7F04E588 24010006 */ li $at, 6 -.L7F04E58C: -/* 0830BC 7F04E58C 5441000C */ bnel $v0, $at, .L7F04E5C0 -/* 0830C0 7F04E590 2401000A */ li $at, 10 -/* 0830C4 7F04E594 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 0830C8 7F04E598 02002025 */ move $a0, $s0 -/* 0830CC 7F04E59C 24010001 */ li $at, 1 -/* 0830D0 7F04E5A0 1441004A */ bne $v0, $at, .L7F04E6CC -/* 0830D4 7F04E5A4 00000000 */ nop -/* 0830D8 7F04E5A8 8E0D0008 */ lw $t5, 8($s0) -/* 0830DC 7F04E5AC 3C011000 */ lui $at, 0x1000 -/* 0830E0 7F04E5B0 01A17025 */ or $t6, $t5, $at -/* 0830E4 7F04E5B4 10000045 */ b .L7F04E6CC -/* 0830E8 7F04E5B8 AE0E0008 */ sw $t6, 8($s0) -/* 0830EC 7F04E5BC 2401000A */ li $at, 10 -.L7F04E5C0: -/* 0830F0 7F04E5C0 5441000C */ bnel $v0, $at, .L7F04E5F4 -/* 0830F4 7F04E5C4 2401000B */ li $at, 11 -/* 0830F8 7F04E5C8 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 0830FC 7F04E5CC 02002025 */ move $a0, $s0 -/* 083100 7F04E5D0 24010001 */ li $at, 1 -/* 083104 7F04E5D4 1441003D */ bne $v0, $at, .L7F04E6CC -/* 083108 7F04E5D8 26040080 */ addiu $a0, $s0, 0x80 -/* 08310C 7F04E5DC 3C058003 */ lui $a1, %hi(D_80031EE8) -/* 083110 7F04E5E0 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 083114 7F04E5E4 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 -/* 083118 7F04E5E8 10000038 */ b .L7F04E6CC -/* 08311C 7F04E5EC 00000000 */ nop -/* 083120 7F04E5F0 2401000B */ li $at, 11 -.L7F04E5F4: -/* 083124 7F04E5F4 54410018 */ bnel $v0, $at, .L7F04E658 -/* 083128 7F04E5F8 24010024 */ li $at, 36 -/* 08312C 7F04E5FC 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 083130 7F04E600 02002025 */ move $a0, $s0 -/* 083134 7F04E604 24010001 */ li $at, 1 -/* 083138 7F04E608 14410030 */ bne $v0, $at, .L7F04E6CC -/* 08313C 7F04E60C 26040080 */ addiu $a0, $s0, 0x80 -/* 083140 7F04E610 3C058003 */ lui $a1, %hi(D_80031EE8) -/* 083144 7F04E614 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 083148 7F04E618 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 -/* 08314C 7F04E61C 3C058003 */ lui $a1, %hi(D_80031EE8) -/* 083150 7F04E620 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 -/* 083154 7F04E624 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 083158 7F04E628 260400F4 */ addiu $a0, $s0, 0xf4 -/* 08315C 7F04E62C 3C058003 */ lui $a1, %hi(D_80031EE8) -/* 083160 7F04E630 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 -/* 083164 7F04E634 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 083168 7F04E638 26040168 */ addiu $a0, $s0, 0x168 -/* 08316C 7F04E63C 3C058003 */ lui $a1, %hi(D_80031EE8) -/* 083170 7F04E640 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 -/* 083174 7F04E644 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot -/* 083178 7F04E648 260401DC */ addiu $a0, $s0, 0x1dc -/* 08317C 7F04E64C 1000001F */ b .L7F04E6CC -/* 083180 7F04E650 00000000 */ nop -/* 083184 7F04E654 24010024 */ li $at, 36 -.L7F04E658: -/* 083188 7F04E658 5441000B */ bnel $v0, $at, .L7F04E688 -/* 08318C 7F04E65C 24010015 */ li $at, 21 -/* 083190 7F04E660 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 083194 7F04E664 02002025 */ move $a0, $s0 -/* 083198 7F04E668 24010001 */ li $at, 1 -/* 08319C 7F04E66C 14410017 */ bne $v0, $at, .L7F04E6CC -/* 0831A0 7F04E670 00000000 */ nop -/* 0831A4 7F04E674 0FC15799 */ jal init_trigger_toxic_gas_effect -/* 0831A8 7F04E678 26040058 */ addiu $a0, $s0, 0x58 -/* 0831AC 7F04E67C 10000013 */ b .L7F04E6CC -/* 0831B0 7F04E680 00000000 */ nop -/* 0831B4 7F04E684 24010015 */ li $at, 21 -.L7F04E688: -/* 0831B8 7F04E688 14410010 */ bne $v0, $at, .L7F04E6CC -/* 0831BC 7F04E68C 00000000 */ nop -/* 0831C0 7F04E690 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 0831C4 7F04E694 02002025 */ move $a0, $s0 -/* 0831C8 7F04E698 5440000A */ bnezl $v0, .L7F04E6C4 -/* 0831CC 7F04E69C 44804000 */ mtc1 $zero, $f8 -/* 0831D0 7F04E6A0 C6000074 */ lwc1 $f0, 0x74($s0) -/* 0831D4 7F04E6A4 C6100070 */ lwc1 $f16, 0x70($s0) -/* 0831D8 7F04E6A8 C60A0080 */ lwc1 $f10, 0x80($s0) -/* 0831DC 7F04E6AC 46100481 */ sub.s $f18, $f0, $f16 -/* 0831E0 7F04E6B0 46125182 */ mul.s $f6, $f10, $f18 -/* 0831E4 7F04E6B4 46003103 */ div.s $f4, $f6, $f0 -/* 0831E8 7F04E6B8 10000004 */ b .L7F04E6CC -/* 0831EC 7F04E6BC E6040084 */ swc1 $f4, 0x84($s0) -/* 0831F0 7F04E6C0 44804000 */ mtc1 $zero, $f8 -.L7F04E6C4: -/* 0831F4 7F04E6C4 00000000 */ nop -/* 0831F8 7F04E6C8 E6080084 */ swc1 $f8, 0x84($s0) -.L7F04E6CC: -/* 0831FC 7F04E6CC 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 083200 7F04E6D0 02002025 */ move $a0, $s0 -/* 083204 7F04E6D4 24010001 */ li $at, 1 -/* 083208 7F04E6D8 5441000D */ bnel $v0, $at, .L7F04E710 -/* 08320C 7F04E6DC 8FBF001C */ lw $ra, 0x1c($sp) -/* 083210 7F04E6E0 8E0F0010 */ lw $t7, 0x10($s0) -/* 083214 7F04E6E4 8DE40020 */ lw $a0, 0x20($t7) -/* 083218 7F04E6E8 50800009 */ beql $a0, $zero, .L7F04E710 -/* 08321C 7F04E6EC 8FBF001C */ lw $ra, 0x1c($sp) -/* 083220 7F04E6F0 8C820024 */ lw $v0, 0x24($a0) -.L7F04E6F4: -/* 083224 7F04E6F4 24050001 */ li $a1, 1 -/* 083228 7F04E6F8 0FC12FF4 */ jal sub_GAME_7F04BFD0 -/* 08322C 7F04E6FC AFA20028 */ sw $v0, 0x28($sp) -/* 083230 7F04E700 8FA40028 */ lw $a0, 0x28($sp) -/* 083234 7F04E704 5480FFFB */ bnezl $a0, .L7F04E6F4 -/* 083238 7F04E708 8C820024 */ lw $v0, 0x24($a0) -.L7F04E70C: -/* 08323C 7F04E70C 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04E710: -/* 083240 7F04E710 8FB00018 */ lw $s0, 0x18($sp) -/* 083244 7F04E714 27BD00E0 */ addiu $sp, $sp, 0xe0 -/* 083248 7F04E718 03E00008 */ jr $ra -/* 08324C 7F04E71C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04E720(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04E720 -/* 083250 7F04E720 27BDFF40 */ addiu $sp, $sp, -0xc0 -/* 083254 7F04E724 AFBF004C */ sw $ra, 0x4c($sp) -/* 083258 7F04E728 AFB50048 */ sw $s5, 0x48($sp) -/* 08325C 7F04E72C AFB40044 */ sw $s4, 0x44($sp) -/* 083260 7F04E730 AFB30040 */ sw $s3, 0x40($sp) -/* 083264 7F04E734 AFB2003C */ sw $s2, 0x3c($sp) -/* 083268 7F04E738 AFB10038 */ sw $s1, 0x38($sp) -/* 08326C 7F04E73C AFB00034 */ sw $s0, 0x34($sp) -/* 083270 7F04E740 AFA400C0 */ sw $a0, 0xc0($sp) -/* 083274 7F04E744 8C950004 */ lw $s5, 4($a0) -/* 083278 7F04E748 00A09825 */ move $s3, $a1 -/* 08327C 7F04E74C 8EAF0064 */ lw $t7, 0x64($s5) -/* 083280 7F04E750 31F81000 */ andi $t8, $t7, 0x1000 -/* 083284 7F04E754 57000091 */ bnezl $t8, .L7F04E99C -/* 083288 7F04E758 8FBF004C */ lw $ra, 0x4c($sp) -/* 08328C 7F04E75C 90880001 */ lbu $t0, 1($a0) -/* 083290 7F04E760 31090002 */ andi $t1, $t0, 2 -/* 083294 7F04E764 5120008D */ beql $t1, $zero, .L7F04E99C -/* 083298 7F04E768 8FBF004C */ lw $ra, 0x4c($sp) -/* 08329C 7F04E76C 8C900020 */ lw $s0, 0x20($a0) -/* 0832A0 7F04E770 52000008 */ beql $s0, $zero, .L7F04E794 -/* 0832A4 7F04E774 8EB40014 */ lw $s4, 0x14($s5) -.L7F04E778: -/* 0832A8 7F04E778 8E110024 */ lw $s1, 0x24($s0) -/* 0832AC 7F04E77C 02002025 */ move $a0, $s0 -/* 0832B0 7F04E780 0FC139C8 */ jal sub_GAME_7F04E720 -/* 0832B4 7F04E784 02602825 */ move $a1, $s3 -/* 0832B8 7F04E788 1620FFFB */ bnez $s1, .L7F04E778 -/* 0832BC 7F04E78C 02208025 */ move $s0, $s1 -/* 0832C0 7F04E790 8EB40014 */ lw $s4, 0x14($s5) -.L7F04E794: -/* 0832C4 7F04E794 AFA000A8 */ sw $zero, 0xa8($sp) -/* 0832C8 7F04E798 92AB0003 */ lbu $t3, 3($s5) -/* 0832CC 7F04E79C 24010001 */ li $at, 1 -/* 0832D0 7F04E7A0 2670000C */ addiu $s0, $s3, 0xc -/* 0832D4 7F04E7A4 15610025 */ bne $t3, $at, .L7F04E83C -/* 0832D8 7F04E7A8 27B100A8 */ addiu $s1, $sp, 0xa8 -/* 0832DC 7F04E7AC 96AC0098 */ lhu $t4, 0x98($s5) -/* 0832E0 7F04E7B0 26A400D0 */ addiu $a0, $s5, 0xd0 -/* 0832E4 7F04E7B4 02603025 */ move $a2, $s3 -/* 0832E8 7F04E7B8 318D0004 */ andi $t5, $t4, 4 -/* 0832EC 7F04E7BC 55A00008 */ bnezl $t5, .L7F04E7E0 -/* 0832F0 7F04E7C0 2670000C */ addiu $s0, $s3, 0xc -/* 0832F4 7F04E7C4 96A2009A */ lhu $v0, 0x9a($s5) -/* 0832F8 7F04E7C8 24010006 */ li $at, 6 -/* 0832FC 7F04E7CC 10410003 */ beq $v0, $at, .L7F04E7DC -/* 083300 7F04E7D0 24010007 */ li $at, 7 -/* 083304 7F04E7D4 14410019 */ bne $v0, $at, .L7F04E83C -/* 083308 7F04E7D8 00000000 */ nop -.L7F04E7DC: -/* 08330C 7F04E7DC 2670000C */ addiu $s0, $s3, 0xc -.L7F04E7E0: -/* 083310 7F04E7E0 02003825 */ move $a3, $s0 -/* 083314 7F04E7E4 0FC1D1F4 */ jal sub_GAME_7F0747D0 -/* 083318 7F04E7E8 8E85000C */ lw $a1, 0xc($s4) -/* 08331C 7F04E7EC 8E8E0008 */ lw $t6, 8($s4) -/* 083320 7F04E7F0 00409025 */ move $s2, $v0 -/* 083324 7F04E7F4 02802025 */ move $a0, $s4 -/* 083328 7F04E7F8 8DCF0000 */ lw $t7, ($t6) -/* 08332C 7F04E7FC 02603025 */ move $a2, $s3 -/* 083330 7F04E800 18400024 */ blez $v0, .L7F04E894 -/* 083334 7F04E804 AFAF00A8 */ sw $t7, 0xa8($sp) -/* 083338 7F04E808 27B80078 */ addiu $t8, $sp, 0x78 -/* 08333C 7F04E80C 27B90074 */ addiu $t9, $sp, 0x74 -/* 083340 7F04E810 27A80060 */ addiu $t0, $sp, 0x60 -/* 083344 7F04E814 AFA80018 */ sw $t0, 0x18($sp) -/* 083348 7F04E818 AFB90014 */ sw $t9, 0x14($sp) -/* 08334C 7F04E81C AFB80010 */ sw $t8, 0x10($sp) -/* 083350 7F04E820 01E02825 */ move $a1, $t7 -/* 083354 7F04E824 0FC1366C */ jal sub_GAME_7F04D9B0 -/* 083358 7F04E828 02003825 */ move $a3, $s0 -/* 08335C 7F04E82C 14400019 */ bnez $v0, .L7F04E894 -/* 083360 7F04E830 00000000 */ nop -/* 083364 7F04E834 10000017 */ b .L7F04E894 -/* 083368 7F04E838 00009025 */ move $s2, $zero -.L7F04E83C: -/* 08336C 7F04E83C 02802025 */ move $a0, $s4 -.L7F04E840: -/* 083370 7F04E840 02602825 */ move $a1, $s3 -/* 083374 7F04E844 02003025 */ move $a2, $s0 -/* 083378 7F04E848 0FC1D4BF */ jal sub_GAME_7F0752FC -/* 08337C 7F04E84C 02203825 */ move $a3, $s1 -/* 083380 7F04E850 1840000E */ blez $v0, .L7F04E88C -/* 083384 7F04E854 00409025 */ move $s2, $v0 -/* 083388 7F04E858 27A90078 */ addiu $t1, $sp, 0x78 -/* 08338C 7F04E85C 27AA0074 */ addiu $t2, $sp, 0x74 -/* 083390 7F04E860 27AB0060 */ addiu $t3, $sp, 0x60 -/* 083394 7F04E864 AFAB0018 */ sw $t3, 0x18($sp) -/* 083398 7F04E868 AFAA0014 */ sw $t2, 0x14($sp) -/* 08339C 7F04E86C AFA90010 */ sw $t1, 0x10($sp) -/* 0833A0 7F04E870 02802025 */ move $a0, $s4 -/* 0833A4 7F04E874 8FA500A8 */ lw $a1, 0xa8($sp) -/* 0833A8 7F04E878 02603025 */ move $a2, $s3 -/* 0833AC 7F04E87C 0FC1366C */ jal sub_GAME_7F04D9B0 -/* 0833B0 7F04E880 02003825 */ move $a3, $s0 -/* 0833B4 7F04E884 14400003 */ bnez $v0, .L7F04E894 -/* 0833B8 7F04E888 00000000 */ nop -.L7F04E88C: -/* 0833BC 7F04E88C 5E40FFEC */ bgtzl $s2, .L7F04E840 -/* 0833C0 7F04E890 02802025 */ move $a0, $s4 -.L7F04E894: -/* 0833C4 7F04E894 1A400040 */ blez $s2, .L7F04E998 -/* 0833C8 7F04E898 8FAD0074 */ lw $t5, 0x74($sp) -/* 0833CC 7F04E89C 8E8C000C */ lw $t4, 0xc($s4) -/* 0833D0 7F04E8A0 C7A40078 */ lwc1 $f4, 0x78($sp) -/* 0833D4 7F04E8A4 C7A6007C */ lwc1 $f6, 0x7c($sp) -/* 0833D8 7F04E8A8 C7A80080 */ lwc1 $f8, 0x80($sp) -/* 0833DC 7F04E8AC 000D7180 */ sll $t6, $t5, 6 -/* 0833E0 7F04E8B0 27A50068 */ addiu $a1, $sp, 0x68 -/* 0833E4 7F04E8B4 018E2021 */ addu $a0, $t4, $t6 -/* 0833E8 7F04E8B8 E7A40068 */ swc1 $f4, 0x68($sp) -/* 0833EC 7F04E8BC E7A6006C */ swc1 $f6, 0x6c($sp) -/* 0833F0 7F04E8C0 0FC1611D */ jal sub_GAME_7F058474 -/* 0833F4 7F04E8C4 E7A80070 */ swc1 $f8, 0x70($sp) -/* 0833F8 7F04E8C8 C7A00070 */ lwc1 $f0, 0x70($sp) -/* 0833FC 7F04E8CC C66A0034 */ lwc1 $f10, 0x34($s3) -/* 083400 7F04E8D0 02602025 */ move $a0, $s3 -/* 083404 7F04E8D4 46000007 */ neg.s $f0, $f0 -/* 083408 7F04E8D8 8FA500C0 */ lw $a1, 0xc0($sp) -/* 08340C 7F04E8DC 460A003E */ c.le.s $f0, $f10 -/* 083410 7F04E8E0 02403825 */ move $a3, $s2 -/* 083414 7F04E8E4 8FAC00A8 */ lw $t4, 0xa8($sp) -/* 083418 7F04E8E8 27AE0078 */ addiu $t6, $sp, 0x78 -/* 08341C 7F04E8EC 4502002B */ bc1fl .L7F04E99C -/* 083420 7F04E8F0 8FBF004C */ lw $ra, 0x4c($sp) -/* 083424 7F04E8F4 8EAF0008 */ lw $t7, 8($s5) -/* 083428 7F04E8F8 24030001 */ li $v1, 1 -/* 08342C 7F04E8FC 000FC380 */ sll $t8, $t7, 0xe -/* 083430 7F04E900 07020017 */ bltzl $t8, .L7F04E960 -/* 083434 7F04E904 8FAF0074 */ lw $t7, 0x74($sp) -/* 083438 7F04E908 92A20003 */ lbu $v0, 3($s5) -/* 08343C 7F04E90C 2401002A */ li $at, 42 -/* 083440 7F04E910 10410003 */ beq $v0, $at, .L7F04E920 -/* 083444 7F04E914 2401002F */ li $at, 47 -/* 083448 7F04E918 54410004 */ bnel $v0, $at, .L7F04E92C -/* 08344C 7F04E91C 8EB90014 */ lw $t9, 0x14($s5) -.L7F04E920: -/* 083450 7F04E920 1000000E */ b .L7F04E95C -/* 083454 7F04E924 00001825 */ move $v1, $zero -/* 083458 7F04E928 8EB90014 */ lw $t9, 0x14($s5) -.L7F04E92C: -/* 08345C 7F04E92C 3C088004 */ lui $t0, %hi(prop_door_related) -/* 083460 7F04E930 2508A1DC */ addiu $t0, %lo(prop_door_related) # addiu $t0, $t0, -0x5e24 -/* 083464 7F04E934 8F220008 */ lw $v0, 8($t9) -/* 083468 7F04E938 8C490004 */ lw $t1, 4($v0) -/* 08346C 7F04E93C 55090008 */ bnel $t0, $t1, .L7F04E960 -/* 083470 7F04E940 8FAF0074 */ lw $t7, 0x74($sp) -/* 083474 7F04E944 8C4B0008 */ lw $t3, 8($v0) -/* 083478 7F04E948 8FAA0060 */ lw $t2, 0x60($sp) -/* 08347C 7F04E94C 8D6D000C */ lw $t5, 0xc($t3) -/* 083480 7F04E950 554D0003 */ bnel $t2, $t5, .L7F04E960 -/* 083484 7F04E954 8FAF0074 */ lw $t7, 0x74($sp) -/* 083488 7F04E958 00001825 */ move $v1, $zero -.L7F04E95C: -/* 08348C 7F04E95C 8FAF0074 */ lw $t7, 0x74($sp) -.L7F04E960: -/* 083490 7F04E960 8FB80060 */ lw $t8, 0x60($sp) -/* 083494 7F04E964 AFAC0010 */ sw $t4, 0x10($sp) -/* 083498 7F04E968 AFAE0014 */ sw $t6, 0x14($sp) -/* 08349C 7F04E96C AFB40020 */ sw $s4, 0x20($sp) -/* 0834A0 7F04E970 AFA30024 */ sw $v1, 0x24($sp) -/* 0834A4 7F04E974 AFAF0018 */ sw $t7, 0x18($sp) -/* 0834A8 7F04E978 AFB8001C */ sw $t8, 0x1c($sp) -/* 0834AC 7F04E97C 8EB9000C */ lw $t9, 0xc($s5) -/* 0834B0 7F04E980 3C010010 */ lui $at, 0x10 -/* 0834B4 7F04E984 44060000 */ mfc1 $a2, $f0 -/* 0834B8 7F04E988 03214024 */ and $t0, $t9, $at -/* 0834BC 7F04E98C 0008482B */ sltu $t1, $zero, $t0 -/* 0834C0 7F04E990 0FC0EE70 */ jal sub_GAME_7F03B9C0 -/* 0834C4 7F04E994 AFA90028 */ sw $t1, 0x28($sp) -.L7F04E998: -/* 0834C8 7F04E998 8FBF004C */ lw $ra, 0x4c($sp) -.L7F04E99C: -/* 0834CC 7F04E99C 8FB00034 */ lw $s0, 0x34($sp) -/* 0834D0 7F04E9A0 8FB10038 */ lw $s1, 0x38($sp) -/* 0834D4 7F04E9A4 8FB2003C */ lw $s2, 0x3c($sp) -/* 0834D8 7F04E9A8 8FB30040 */ lw $s3, 0x40($sp) -/* 0834DC 7F04E9AC 8FB40044 */ lw $s4, 0x44($sp) -/* 0834E0 7F04E9B0 8FB50048 */ lw $s5, 0x48($sp) -/* 0834E4 7F04E9B4 03E00008 */ jr $ra -/* 0834E8 7F04E9B8 27BD00C0 */ addiu $sp, $sp, 0xc0 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04E9BC(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04E9BC -/* 0834EC 7F04E9BC 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0834F0 7F04E9C0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0834F4 7F04E9C4 AFA40028 */ sw $a0, 0x28($sp) -/* 0834F8 7F04E9C8 AFA5002C */ sw $a1, 0x2c($sp) -/* 0834FC 7F04E9CC 8C840004 */ lw $a0, 4($a0) -/* 083500 7F04E9D0 8C8F0014 */ lw $t7, 0x14($a0) -/* 083504 7F04E9D4 AFA40024 */ sw $a0, 0x24($sp) -/* 083508 7F04E9D8 0FC1001E */ jal sub_GAME_7F040078 -/* 08350C 7F04E9DC AFAF001C */ sw $t7, 0x1c($sp) -/* 083510 7F04E9E0 8FB80028 */ lw $t8, 0x28($sp) -/* 083514 7F04E9E4 8FA40024 */ lw $a0, 0x24($sp) -/* 083518 7F04E9E8 93190001 */ lbu $t9, 1($t8) -/* 08351C 7F04E9EC 33280002 */ andi $t0, $t9, 2 -/* 083520 7F04E9F0 5100001A */ beql $t0, $zero, .L7F04EA5C -/* 083524 7F04E9F4 8FBF0014 */ lw $ra, 0x14($sp) -/* 083528 7F04E9F8 8C890064 */ lw $t1, 0x64($a0) -/* 08352C 7F04E9FC 312A1000 */ andi $t2, $t1, 0x1000 -/* 083530 7F04EA00 55400016 */ bnezl $t2, .L7F04EA5C -/* 083534 7F04EA04 8FBF0014 */ lw $ra, 0x14($sp) -/* 083538 7F04EA08 8C8B000C */ lw $t3, 0xc($a0) -/* 08353C 7F04EA0C 8FAD001C */ lw $t5, 0x1c($sp) -/* 083540 7F04EA10 316C8000 */ andi $t4, $t3, 0x8000 -/* 083544 7F04EA14 15800010 */ bnez $t4, .L7F04EA58 -/* 083548 7F04EA18 00402025 */ move $a0, $v0 -/* 08354C 7F04EA1C 0FC0FAE7 */ jal sub_GAME_7F03EB9C -/* 083550 7F04EA20 8DA5000C */ lw $a1, 0xc($t5) -/* 083554 7F04EA24 8FAE001C */ lw $t6, 0x1c($sp) -/* 083558 7F04EA28 8FA5002C */ lw $a1, 0x2c($sp) -/* 08355C 7F04EA2C 8DCF000C */ lw $t7, 0xc($t6) -/* 083560 7F04EA30 C4A60034 */ lwc1 $f6, 0x34($a1) -/* 083564 7F04EA34 C5E40038 */ lwc1 $f4, 0x38($t7) -/* 083568 7F04EA38 46040080 */ add.s $f2, $f0, $f4 -/* 08356C 7F04EA3C 46001087 */ neg.s $f2, $f2 -/* 083570 7F04EA40 4606103E */ c.le.s $f2, $f6 -/* 083574 7F04EA44 00000000 */ nop -/* 083578 7F04EA48 45020004 */ bc1fl .L7F04EA5C -/* 08357C 7F04EA4C 8FBF0014 */ lw $ra, 0x14($sp) -/* 083580 7F04EA50 0FC139C8 */ jal sub_GAME_7F04E720 -/* 083584 7F04EA54 8FA40028 */ lw $a0, 0x28($sp) -.L7F04EA58: -/* 083588 7F04EA58 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04EA5C: -/* 08358C 7F04EA5C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 083590 7F04EA60 03E00008 */ jr $ra -/* 083594 7F04EA64 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04EA68(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04EA68 -/* 083598 7F04EA68 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 08359C 7F04EA6C AFBF002C */ sw $ra, 0x2c($sp) -/* 0835A0 7F04EA70 AFB10028 */ sw $s1, 0x28($sp) -/* 0835A4 7F04EA74 AFB00024 */ sw $s0, 0x24($sp) -/* 0835A8 7F04EA78 8CA60004 */ lw $a2, 4($a1) -/* 0835AC 7F04EA7C 00A08025 */ move $s0, $a1 -/* 0835B0 7F04EA80 8CC2001C */ lw $v0, 0x1c($a2) -/* 0835B4 7F04EA84 00C01825 */ move $v1, $a2 -/* 0835B8 7F04EA88 50400006 */ beql $v0, $zero, .L7F04EAA4 -/* 0835BC 7F04EA8C C6040000 */ lwc1 $f4, ($s0) -/* 0835C0 7F04EA90 00401825 */ move $v1, $v0 -.L7F04EA94: -/* 0835C4 7F04EA94 8C42001C */ lw $v0, 0x1c($v0) -/* 0835C8 7F04EA98 5440FFFE */ bnezl $v0, .L7F04EA94 -/* 0835CC 7F04EA9C 00401825 */ move $v1, $v0 -/* 0835D0 7F04EAA0 C6040000 */ lwc1 $f4, ($s0) -.L7F04EAA4: -/* 0835D4 7F04EAA4 C486000C */ lwc1 $f6, 0xc($a0) -/* 0835D8 7F04EAA8 C48A0014 */ lwc1 $f10, 0x14($a0) -/* 0835DC 7F04EAAC C4920000 */ lwc1 $f18, ($a0) -/* 0835E0 7F04EAB0 46062202 */ mul.s $f8, $f4, $f6 -/* 0835E4 7F04EAB4 8CD10004 */ lw $s1, 4($a2) -/* 0835E8 7F04EAB8 3C0141D0 */ li $at, 0x41D00000 # 26.000000 -/* 0835EC 7F04EABC 44810000 */ mtc1 $at, $f0 -/* 0835F0 7F04EAC0 460A4403 */ div.s $f16, $f8, $f10 -/* 0835F4 7F04EAC4 46109101 */ sub.s $f4, $f18, $f16 -/* 0835F8 7F04EAC8 E7A40060 */ swc1 $f4, 0x60($sp) -/* 0835FC 7F04EACC C4880010 */ lwc1 $f8, 0x10($a0) -/* 083600 7F04EAD0 C6060000 */ lwc1 $f6, ($s0) -/* 083604 7F04EAD4 C4920014 */ lwc1 $f18, 0x14($a0) -/* 083608 7F04EAD8 C4840004 */ lwc1 $f4, 4($a0) -/* 08360C 7F04EADC 46083282 */ mul.s $f10, $f6, $f8 -/* 083610 7F04EAE0 46125403 */ div.s $f16, $f10, $f18 -/* 083614 7F04EAE4 46102181 */ sub.s $f6, $f4, $f16 -/* 083618 7F04EAE8 C7A40060 */ lwc1 $f4, 0x60($sp) -/* 08361C 7F04EAEC E7A60064 */ swc1 $f6, 0x64($sp) -/* 083620 7F04EAF0 C60A0000 */ lwc1 $f10, ($s0) -/* 083624 7F04EAF4 C4880008 */ lwc1 $f8, 8($a0) -/* 083628 7F04EAF8 460A4481 */ sub.s $f18, $f8, $f10 -/* 08362C 7F04EAFC C7AA0064 */ lwc1 $f10, 0x64($sp) -/* 083630 7F04EB00 E7B20068 */ swc1 $f18, 0x68($sp) -/* 083634 7F04EB04 C490000C */ lwc1 $f16, 0xc($a0) -/* 083638 7F04EB08 46100182 */ mul.s $f6, $f0, $f16 -/* 08363C 7F04EB0C 46062201 */ sub.s $f8, $f4, $f6 -/* 083640 7F04EB10 C7A60068 */ lwc1 $f6, 0x68($sp) -/* 083644 7F04EB14 E7A80060 */ swc1 $f8, 0x60($sp) -/* 083648 7F04EB18 C4920010 */ lwc1 $f18, 0x10($a0) -/* 08364C 7F04EB1C 46120402 */ mul.s $f16, $f0, $f18 -/* 083650 7F04EB20 46105101 */ sub.s $f4, $f10, $f16 -/* 083654 7F04EB24 E7A40064 */ swc1 $f4, 0x64($sp) -/* 083658 7F04EB28 C4880014 */ lwc1 $f8, 0x14($a0) -/* 08365C 7F04EB2C AFA40070 */ sw $a0, 0x70($sp) -/* 083660 7F04EB30 AFA3005C */ sw $v1, 0x5c($sp) -/* 083664 7F04EB34 46080482 */ mul.s $f18, $f0, $f8 -/* 083668 7F04EB38 46123281 */ sub.s $f10, $f6, $f18 -/* 08366C 7F04EB3C 0FC1E111 */ jal sub_GAME_7F078444 -/* 083670 7F04EB40 E7AA0068 */ swc1 $f10, 0x68($sp) -/* 083674 7F04EB44 00402025 */ move $a0, $v0 -/* 083678 7F04EB48 0FC1611D */ jal sub_GAME_7F058474 -/* 08367C 7F04EB4C 27A50060 */ addiu $a1, $sp, 0x60 -/* 083680 7F04EB50 8E0E004C */ lw $t6, 0x4c($s0) -/* 083684 7F04EB54 8FA3005C */ lw $v1, 0x5c($sp) -/* 083688 7F04EB58 11C00004 */ beqz $t6, .L7F04EB6C -/* 08368C 7F04EB5C 27A40060 */ addiu $a0, $sp, 0x60 -/* 083690 7F04EB60 0FC19ED3 */ jal sub_GAME_7F067B4C -/* 083694 7F04EB64 AFA3005C */ sw $v1, 0x5c($sp) -/* 083698 7F04EB68 8FA3005C */ lw $v1, 0x5c($sp) -.L7F04EB6C: -/* 08369C 7F04EB6C 8C6F0014 */ lw $t7, 0x14($v1) -/* 0836A0 7F04EB70 27A40060 */ addiu $a0, $sp, 0x60 -/* 0836A4 7F04EB74 24050001 */ li $a1, 1 -/* 0836A8 7F04EB78 3C0641D0 */ lui $a2, 0x41d0 -/* 0836AC 7F04EB7C 0FC28F87 */ jal sub_GAME_7F0A3E1C -/* 0836B0 7F04EB80 91E70003 */ lbu $a3, 3($t7) -/* 0836B4 7F04EB84 0FC13BCD */ jal check_if_object_has_not_been_destroyed -/* 0836B8 7F04EB88 02202025 */ move $a0, $s1 -/* 0836BC 7F04EB8C 5040000D */ beql $v0, $zero, .L7F04EBC4 -/* 0836C0 7F04EB90 8E0B004C */ lw $t3, 0x4c($s0) -/* 0836C4 7F04EB94 0FC13812 */ jal check_if_destroyable_not_invincible -/* 0836C8 7F04EB98 02202025 */ move $a0, $s1 -/* 0836CC 7F04EB9C 50400009 */ beql $v0, $zero, .L7F04EBC4 -/* 0836D0 7F04EBA0 8E0B004C */ lw $t3, 0x4c($s0) -/* 0836D4 7F04EBA4 8E18004C */ lw $t8, 0x4c($s0) -/* 0836D8 7F04EBA8 8FB90070 */ lw $t9, 0x70($sp) -/* 0836DC 7F04EBAC 24050006 */ li $a1, 6 -/* 0836E0 7F04EBB0 53000004 */ beql $t8, $zero, .L7F04EBC4 -/* 0836E4 7F04EBB4 8E0B004C */ lw $t3, 0x4c($s0) -/* 0836E8 7F04EBB8 0FC1A9BE */ jal inc_curplayer_hitcount_with_weapon -/* 0836EC 7F04EBBC 8F240018 */ lw $a0, 0x18($t9) -/* 0836F0 7F04EBC0 8E0B004C */ lw $t3, 0x4c($s0) -.L7F04EBC4: -/* 0836F4 7F04EBC4 55600007 */ bnezl $t3, .L7F04EBE4 -/* 0836F8 7F04EBC8 8FAC0070 */ lw $t4, 0x70($sp) -/* 0836FC 7F04EBCC 8E040004 */ lw $a0, 4($s0) -/* 083700 7F04EBD0 0FC191C8 */ jal sub_GAME_7F064720 -/* 083704 7F04EBD4 24840008 */ addiu $a0, $a0, 8 -/* 083708 7F04EBD8 10000007 */ b .L7F04EBF8 -/* 08370C 7F04EBDC 8FAD0070 */ lw $t5, 0x70($sp) -/* 083710 7F04EBE0 8FAC0070 */ lw $t4, 0x70($sp) -.L7F04EBE4: -/* 083714 7F04EBE4 8E050004 */ lw $a1, 4($s0) -/* 083718 7F04EBE8 8606003A */ lh $a2, 0x3a($s0) -/* 08371C 7F04EBEC 0FC19107 */ jal recall_joy2_hits_edit_detail_edit_flag -/* 083720 7F04EBF0 8D840018 */ lw $a0, 0x18($t4) -/* 083724 7F04EBF4 8FAD0070 */ lw $t5, 0x70($sp) -.L7F04EBF8: -/* 083728 7F04EBF8 24010017 */ li $at, 23 -/* 08372C 7F04EBFC 8DA40018 */ lw $a0, 0x18($t5) -/* 083730 7F04EC00 10810060 */ beq $a0, $at, .L7F04ED84 -/* 083734 7F04EC04 00000000 */ nop -/* 083738 7F04EC08 8E0E004C */ lw $t6, 0x4c($s0) -/* 08373C 7F04EC0C 55C00022 */ bnezl $t6, .L7F04EC98 -/* 083740 7F04EC10 8602003A */ lh $v0, 0x3a($s0) -/* 083744 7F04EC14 8E380014 */ lw $t8, 0x14($s1) -/* 083748 7F04EC18 3C0F8004 */ lui $t7, %hi(prop_door_related) -/* 08374C 7F04EC1C 25EFA1DC */ addiu $t7, %lo(prop_door_related) # addiu $t7, $t7, -0x5e24 -/* 083750 7F04EC20 8F190008 */ lw $t9, 8($t8) -/* 083754 7F04EC24 8E080004 */ lw $t0, 4($s0) -/* 083758 7F04EC28 00001825 */ move $v1, $zero -/* 08375C 7F04EC2C 8F2B0004 */ lw $t3, 4($t9) -/* 083760 7F04EC30 55EB0003 */ bnel $t7, $t3, .L7F04EC40 -/* 083764 7F04EC34 A3A30057 */ sb $v1, 0x57($sp) -/* 083768 7F04EC38 24030001 */ li $v1, 1 -/* 08376C 7F04EC3C A3A30057 */ sb $v1, 0x57($sp) -.L7F04EC40: -/* 083770 7F04EC40 0C002914 */ jal get_random_value -/* 083774 7F04EC44 AFA80058 */ sw $t0, 0x58($sp) -/* 083778 7F04EC48 24010003 */ li $at, 3 -/* 08377C 7F04EC4C 0041001B */ divu $zero, $v0, $at -/* 083780 7F04EC50 8FA80058 */ lw $t0, 0x58($sp) -/* 083784 7F04EC54 00003010 */ mfhi $a2 -/* 083788 7F04EC58 83A30057 */ lb $v1, 0x57($sp) -/* 08378C 7F04EC5C AFA80010 */ sw $t0, 0x10($sp) -/* 083790 7F04EC60 8E0E0040 */ lw $t6, 0x40($s0) -/* 083794 7F04EC64 24C60011 */ addiu $a2, $a2, 0x11 -/* 083798 7F04EC68 00066400 */ sll $t4, $a2, 0x10 -/* 08379C 7F04EC6C 000C3403 */ sra $a2, $t4, 0x10 -/* 0837A0 7F04EC70 26040010 */ addiu $a0, $s0, 0x10 -/* 0837A4 7F04EC74 2605001C */ addiu $a1, $s0, 0x1c -/* 0837A8 7F04EC78 24070001 */ li $a3, 1 -/* 0837AC 7F04EC7C AFA30018 */ sw $v1, 0x18($sp) -/* 0837B0 7F04EC80 0FC28423 */ jal sub_GAME_7F0A108C -/* 0837B4 7F04EC84 AFAE0014 */ sw $t6, 0x14($sp) -/* 0837B8 7F04EC88 8FB80070 */ lw $t8, 0x70($sp) -/* 0837BC 7F04EC8C 1000003D */ b .L7F04ED84 -/* 0837C0 7F04EC90 8F040018 */ lw $a0, 0x18($t8) -/* 0837C4 7F04EC94 8602003A */ lh $v0, 0x3a($s0) -.L7F04EC98: -/* 0837C8 7F04EC98 00004825 */ move $t1, $zero -/* 0837CC 7F04EC9C 3C0F8005 */ lui $t7, %hi(image_entries) -/* 0837D0 7F04ECA0 04410004 */ bgez $v0, .L7F04ECB4 -/* 0837D4 7F04ECA4 0002C8C0 */ sll $t9, $v0, 3 -/* 0837D8 7F04ECA8 3C088005 */ lui $t0, %hi(D_8004E86C) -/* 0837DC 7F04ECAC 10000008 */ b .L7F04ECD0 -/* 0837E0 7F04ECB0 8D08E86C */ lw $t0, %lo(D_8004E86C)($t0) -.L7F04ECB4: -/* 0837E4 7F04ECB4 01F97821 */ addu $t7, $t7, $t9 -/* 0837E8 7F04ECB8 91EF9300 */ lbu $t7, %lo(image_entries)($t7) -/* 0837EC 7F04ECBC 3C088005 */ lui $t0, %hi(D_8004E86C) -/* 0837F0 7F04ECC0 31EB000F */ andi $t3, $t7, 0xf -/* 0837F4 7F04ECC4 000B6080 */ sll $t4, $t3, 2 -/* 0837F8 7F04ECC8 010C4021 */ addu $t0, $t0, $t4 -/* 0837FC 7F04ECCC 8D08E86C */ lw $t0, %lo(D_8004E86C)($t0) -.L7F04ECD0: -/* 083800 7F04ECD0 AFA80050 */ sw $t0, 0x50($sp) -/* 083804 7F04ECD4 0C002914 */ jal get_random_value -/* 083808 7F04ECD8 A3A9004B */ sb $t1, 0x4b($sp) -/* 08380C 7F04ECDC 8FA80050 */ lw $t0, 0x50($sp) -/* 083810 7F04ECE0 8E2E0014 */ lw $t6, 0x14($s1) -/* 083814 7F04ECE4 3C188004 */ lui $t8, %hi(prop_door_related) -/* 083818 7F04ECE8 850D000A */ lh $t5, 0xa($t0) -/* 08381C 7F04ECEC 8DC30008 */ lw $v1, 8($t6) -/* 083820 7F04ECF0 2718A1DC */ addiu $t8, %lo(prop_door_related) # addiu $t8, $t8, -0x5e24 -/* 083824 7F04ECF4 004D001B */ divu $zero, $v0, $t5 -/* 083828 7F04ECF8 8C640004 */ lw $a0, 4($v1) -/* 08382C 7F04ECFC 00005010 */ mfhi $t2 -/* 083830 7F04ED00 83A9004B */ lb $t1, 0x4b($sp) -/* 083834 7F04ED04 15A00002 */ bnez $t5, .L7F04ED10 -/* 083838 7F04ED08 00000000 */ nop -/* 08383C 7F04ED0C 0007000D */ break 7 -.L7F04ED10: -/* 083840 7F04ED10 2605001C */ addiu $a1, $s0, 0x1c -/* 083844 7F04ED14 17040005 */ bne $t8, $a0, .L7F04ED2C -/* 083848 7F04ED18 24070001 */ li $a3, 1 -/* 08384C 7F04ED1C 8C6F0008 */ lw $t7, 8($v1) -/* 083850 7F04ED20 8E190044 */ lw $t9, 0x44($s0) -/* 083854 7F04ED24 8DEB000C */ lw $t3, 0xc($t7) -/* 083858 7F04ED28 132B0009 */ beq $t9, $t3, .L7F04ED50 -.L7F04ED2C: -/* 08385C 7F04ED2C 3C0C8004 */ lui $t4, %hi(prop_cctv_related) -/* 083860 7F04ED30 258CA05C */ addiu $t4, %lo(prop_cctv_related) # addiu $t4, $t4, -0x5fa4 -/* 083864 7F04ED34 55840008 */ bnel $t4, $a0, .L7F04ED58 -/* 083868 7F04ED38 8D0F0004 */ lw $t7, 4($t0) -/* 08386C 7F04ED3C 8C6E0008 */ lw $t6, 8($v1) -/* 083870 7F04ED40 8E0D0044 */ lw $t5, 0x44($s0) -/* 083874 7F04ED44 8DD80004 */ lw $t8, 4($t6) -/* 083878 7F04ED48 55B80003 */ bnel $t5, $t8, .L7F04ED58 -/* 08387C 7F04ED4C 8D0F0004 */ lw $t7, 4($t0) -.L7F04ED50: -/* 083880 7F04ED50 24090001 */ li $t1, 1 -/* 083884 7F04ED54 8D0F0004 */ lw $t7, 4($t0) -.L7F04ED58: -/* 083888 7F04ED58 8E0B0004 */ lw $t3, 4($s0) -/* 08388C 7F04ED5C 26040010 */ addiu $a0, $s0, 0x10 -/* 083890 7F04ED60 01EAC821 */ addu $t9, $t7, $t2 -/* 083894 7F04ED64 93260000 */ lbu $a2, ($t9) -/* 083898 7F04ED68 AFAB0010 */ sw $t3, 0x10($sp) -/* 08389C 7F04ED6C 8E0C0040 */ lw $t4, 0x40($s0) -/* 0838A0 7F04ED70 AFA90018 */ sw $t1, 0x18($sp) -/* 0838A4 7F04ED74 0FC28423 */ jal sub_GAME_7F0A108C -/* 0838A8 7F04ED78 AFAC0014 */ sw $t4, 0x14($sp) -/* 0838AC 7F04ED7C 8FAE0070 */ lw $t6, 0x70($sp) -/* 0838B0 7F04ED80 8DC40018 */ lw $a0, 0x18($t6) -.L7F04ED84: -/* 0838B4 7F04ED84 0FC177E1 */ jal sub_GAME_7F05DF84 -/* 0838B8 7F04ED88 00000000 */ nop -/* 0838BC 7F04ED8C 92220003 */ lbu $v0, 3($s1) -/* 0838C0 7F04ED90 2401000D */ li $at, 13 -/* 0838C4 7F04ED94 46000086 */ mov.s $f2, $f0 -/* 0838C8 7F04ED98 14410005 */ bne $v0, $at, .L7F04EDB0 -/* 0838CC 7F04ED9C 3C018003 */ lui $at, %hi(D_80030B24) -/* 0838D0 7F04EDA0 C4300B24 */ lwc1 $f16, %lo(D_80030B24)($at) -/* 0838D4 7F04EDA4 46100082 */ mul.s $f2, $f0, $f16 -/* 0838D8 7F04EDA8 1000001B */ b .L7F04EE18 -/* 0838DC 7F04EDAC 00000000 */ nop -.L7F04EDB0: -/* 0838E0 7F04EDB0 24010006 */ li $at, 6 -/* 0838E4 7F04EDB4 14410018 */ bne $v0, $at, .L7F04EE18 -/* 0838E8 7F04EDB8 00000000 */ nop -/* 0838EC 7F04EDBC 8E2D0014 */ lw $t5, 0x14($s1) -/* 0838F0 7F04EDC0 3C188004 */ lui $t8, %hi(prop_cctv_related) -/* 0838F4 7F04EDC4 2718A05C */ addiu $t8, %lo(prop_cctv_related) # addiu $t8, $t8, -0x5fa4 -/* 0838F8 7F04EDC8 8DA30008 */ lw $v1, 8($t5) -/* 0838FC 7F04EDCC 8C6F0004 */ lw $t7, 4($v1) -/* 083900 7F04EDD0 170F000D */ bne $t8, $t7, .L7F04EE08 -/* 083904 7F04EDD4 00000000 */ nop -/* 083908 7F04EDD8 8C6B0008 */ lw $t3, 8($v1) -/* 08390C 7F04EDDC 8E190044 */ lw $t9, 0x44($s0) -/* 083910 7F04EDE0 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 083914 7F04EDE4 8D6C0004 */ lw $t4, 4($t3) -/* 083918 7F04EDE8 172C0007 */ bne $t9, $t4, .L7F04EE08 -/* 08391C 7F04EDEC 00000000 */ nop -/* 083920 7F04EDF0 44812000 */ mtc1 $at, $f4 -/* 083924 7F04EDF4 02202025 */ move $a0, $s1 -/* 083928 7F04EDF8 46041082 */ mul.s $f2, $f2, $f4 -/* 08392C 7F04EDFC 0FC13786 */ jal sub_GAME_7F04DE18 -/* 083930 7F04EE00 E7A20044 */ swc1 $f2, 0x44($sp) -/* 083934 7F04EE04 C7A20044 */ lwc1 $f2, 0x44($sp) -.L7F04EE08: -/* 083938 7F04EE08 3C018003 */ lui $at, %hi(D_80030B18) -/* 08393C 7F04EE0C C4280B18 */ lwc1 $f8, %lo(D_80030B18)($at) -/* 083940 7F04EE10 46081082 */ mul.s $f2, $f2, $f8 -/* 083944 7F04EE14 00000000 */ nop -.L7F04EE18: -/* 083948 7F04EE18 0FC26C54 */ jal get_cur_playernum -/* 08394C 7F04EE1C E7A20044 */ swc1 $f2, 0x44($sp) -/* 083950 7F04EE20 C7A20044 */ lwc1 $f2, 0x44($sp) -/* 083954 7F04EE24 8FAE0070 */ lw $t6, 0x70($sp) -/* 083958 7F04EE28 02202025 */ move $a0, $s1 -/* 08395C 7F04EE2C 44051000 */ mfc1 $a1, $f2 -/* 083960 7F04EE30 8DC70018 */ lw $a3, 0x18($t6) -/* 083964 7F04EE34 AFA20010 */ sw $v0, 0x10($sp) -/* 083968 7F04EE38 0FC13833 */ jal sub_GAME_7F04E0CC -/* 08396C 7F04EE3C 27A60060 */ addiu $a2, $sp, 0x60 -/* 083970 7F04EE40 8E380014 */ lw $t8, 0x14($s1) -/* 083974 7F04EE44 3C0D8004 */ lui $t5, %hi(prop_door_related) -/* 083978 7F04EE48 25ADA1DC */ addiu $t5, %lo(prop_door_related) # addiu $t5, $t5, -0x5e24 -/* 08397C 7F04EE4C 8F0F0008 */ lw $t7, 8($t8) -/* 083980 7F04EE50 8DEB0004 */ lw $t3, 4($t7) -/* 083984 7F04EE54 15AB000D */ bne $t5, $t3, .L7F04EE8C -/* 083988 7F04EE58 00000000 */ nop -/* 08398C 7F04EE5C 8E19004C */ lw $t9, 0x4c($s0) -/* 083990 7F04EE60 1720000A */ bnez $t9, .L7F04EE8C -/* 083994 7F04EE64 00000000 */ nop -/* 083998 7F04EE68 822C00BD */ lb $t4, 0xbd($s1) -/* 08399C 7F04EE6C 258E0001 */ addiu $t6, $t4, 1 -/* 0839A0 7F04EE70 A22E00BD */ sb $t6, 0xbd($s1) -/* 0839A4 7F04EE74 823800BD */ lb $t8, 0xbd($s1) -/* 0839A8 7F04EE78 2B010003 */ slti $at, $t8, 3 -/* 0839AC 7F04EE7C 14200003 */ bnez $at, .L7F04EE8C -/* 0839B0 7F04EE80 00000000 */ nop -/* 0839B4 7F04EE84 0FC1375A */ jal sub_GAME_7F04DD68 -/* 0839B8 7F04EE88 02202025 */ move $a0, $s1 -.L7F04EE8C: -/* 0839BC 7F04EE8C 0FC11080 */ jal sub_GAME_7F044200 -/* 0839C0 7F04EE90 8E040004 */ lw $a0, 4($s0) -/* 0839C4 7F04EE94 00008025 */ move $s0, $zero -/* 0839C8 7F04EE98 0FC13803 */ jal check_if_collectable_object -/* 0839CC 7F04EE9C 02202025 */ move $a0, $s1 -/* 0839D0 7F04EEA0 50400008 */ beql $v0, $zero, .L7F04EEC4 -/* 0839D4 7F04EEA4 8E2B0008 */ lw $t3, 8($s1) -/* 0839D8 7F04EEA8 8E2F0008 */ lw $t7, 8($s1) -/* 0839DC 7F04EEAC 000F6A40 */ sll $t5, $t7, 9 -/* 0839E0 7F04EEB0 05A20009 */ bltzl $t5, .L7F04EED8 -/* 0839E4 7F04EEB4 8E2C000C */ lw $t4, 0xc($s1) -/* 0839E8 7F04EEB8 10000006 */ b .L7F04EED4 -/* 0839EC 7F04EEBC 24100001 */ li $s0, 1 -/* 0839F0 7F04EEC0 8E2B0008 */ lw $t3, 8($s1) -.L7F04EEC4: -/* 0839F4 7F04EEC4 000BCA80 */ sll $t9, $t3, 0xa -/* 0839F8 7F04EEC8 07230003 */ bgezl $t9, .L7F04EED8 -/* 0839FC 7F04EECC 8E2C000C */ lw $t4, 0xc($s1) -/* 083A00 7F04EED0 24100001 */ li $s0, 1 -.L7F04EED4: -/* 083A04 7F04EED4 8E2C000C */ lw $t4, 0xc($s1) -.L7F04EED8: -/* 083A08 7F04EED8 318E0002 */ andi $t6, $t4, 2 -/* 083A0C 7F04EEDC 51C00007 */ beql $t6, $zero, .L7F04EEFC -/* 083A10 7F04EEE0 8E38000C */ lw $t8, 0xc($s1) -/* 083A14 7F04EEE4 0FC13BCD */ jal check_if_object_has_not_been_destroyed -/* 083A18 7F04EEE8 02202025 */ move $a0, $s1 -/* 083A1C 7F04EEEC 54400003 */ bnezl $v0, .L7F04EEFC -/* 083A20 7F04EEF0 8E38000C */ lw $t8, 0xc($s1) -/* 083A24 7F04EEF4 24100001 */ li $s0, 1 -/* 083A28 7F04EEF8 8E38000C */ lw $t8, 0xc($s1) -.L7F04EEFC: -/* 083A2C 7F04EEFC 8FA50070 */ lw $a1, 0x70($sp) -/* 083A30 7F04EF00 330F0400 */ andi $t7, $t8, 0x400 -/* 083A34 7F04EF04 11E00002 */ beqz $t7, .L7F04EF10 -/* 083A38 7F04EF08 24A5000C */ addiu $a1, $a1, 0xc -/* 083A3C 7F04EF0C 00008025 */ move $s0, $zero -.L7F04EF10: -/* 083A40 7F04EF10 52000004 */ beql $s0, $zero, .L7F04EF24 -/* 083A44 7F04EF14 8FBF002C */ lw $ra, 0x2c($sp) -/* 083A48 7F04EF18 0FC12F37 */ jal sub_GAME_7F04BCDC -/* 083A4C 7F04EF1C 02202025 */ move $a0, $s1 -/* 083A50 7F04EF20 8FBF002C */ lw $ra, 0x2c($sp) -.L7F04EF24: -/* 083A54 7F04EF24 8FB00024 */ lw $s0, 0x24($sp) -/* 083A58 7F04EF28 8FB10028 */ lw $s1, 0x28($sp) -/* 083A5C 7F04EF2C 03E00008 */ jr $ra -/* 083A60 7F04EF30 27BD0070 */ addiu $sp, $sp, 0x70 -) -#endif - - - - - -#ifdef NONMATCHING -void check_if_object_has_not_been_destroyed(void) { - -} -#else -GLOBAL_ASM( -.text -glabel check_if_object_has_not_been_destroyed -/* 083A64 7F04EF34 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 083A68 7F04EF38 AFBF0014 */ sw $ra, 0x14($sp) -/* 083A6C 7F04EF3C 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 083A70 7F04EF40 00000000 */ nop -/* 083A74 7F04EF44 8FBF0014 */ lw $ra, 0x14($sp) -/* 083A78 7F04EF48 2C4E0001 */ sltiu $t6, $v0, 1 -/* 083A7C 7F04EF4C 01C01025 */ move $v0, $t6 -/* 083A80 7F04EF50 03E00008 */ jr $ra -/* 083A84 7F04EF54 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04EF58(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80052EF4 -.word 0x481c4000 /*160000.0*/ -glabel D_80052EF8 -.word 0x40060a92 /*2.0943952*/ -glabel D_80052EFC -.word 0x471c4000 /*40000.0*/ -glabel D_80052F00 -.word 0x3ec90fdb /*0.39269909*/ -glabel D_80052F04 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80052F08 -.word 0x40490fdb /*3.1415927*/ -glabel D_80052F0C -.word 0x40c90fdb /*6.2831855*/ -.text -glabel sub_GAME_7F04EF58 -/* 083A88 7F04EF58 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 083A8C 7F04EF5C AFBF001C */ sw $ra, 0x1c($sp) -/* 083A90 7F04EF60 8C850004 */ lw $a1, 4($a0) -/* 083A94 7F04EF64 24010005 */ li $at, 5 -/* 083A98 7F04EF68 00803025 */ move $a2, $a0 -/* 083A9C 7F04EF6C 90AE0003 */ lbu $t6, 3($a1) -/* 083AA0 7F04EF70 51C1000A */ beql $t6, $at, .L7F04EF9C -/* 083AA4 7F04EF74 90C90001 */ lbu $t1, 1($a2) -/* 083AA8 7F04EF78 8CAF0008 */ lw $t7, 8($a1) -/* 083AAC 7F04EF7C 000FC300 */ sll $t8, $t7, 0xc -/* 083AB0 7F04EF80 07020006 */ bltzl $t8, .L7F04EF9C -/* 083AB4 7F04EF84 90C90001 */ lbu $t1, 1($a2) -/* 083AB8 7F04EF88 8CB90064 */ lw $t9, 0x64($a1) -/* 083ABC 7F04EF8C 33280013 */ andi $t0, $t9, 0x13 -/* 083AC0 7F04EF90 51000073 */ beql $t0, $zero, .L7F04F160 -/* 083AC4 7F04EF94 8FBF001C */ lw $ra, 0x1c($sp) -/* 083AC8 7F04EF98 90C90001 */ lbu $t1, 1($a2) -.L7F04EF9C: -/* 083ACC 7F04EF9C 00A02025 */ move $a0, $a1 -/* 083AD0 7F04EFA0 312A0002 */ andi $t2, $t1, 2 -/* 083AD4 7F04EFA4 5140006E */ beql $t2, $zero, .L7F04F160 -/* 083AD8 7F04EFA8 8FBF001C */ lw $ra, 0x1c($sp) -/* 083ADC 7F04EFAC AFA50050 */ sw $a1, 0x50($sp) -/* 083AE0 7F04EFB0 0FC13BCD */ jal check_if_object_has_not_been_destroyed -/* 083AE4 7F04EFB4 AFA60058 */ sw $a2, 0x58($sp) -/* 083AE8 7F04EFB8 10400068 */ beqz $v0, .L7F04F15C -/* 083AEC 7F04EFBC 8FA50050 */ lw $a1, 0x50($sp) -/* 083AF0 7F04EFC0 8CAB0008 */ lw $t3, 8($a1) -/* 083AF4 7F04EFC4 000B6180 */ sll $t4, $t3, 6 -/* 083AF8 7F04EFC8 05820065 */ bltzl $t4, .L7F04F160 -/* 083AFC 7F04EFCC 8FBF001C */ lw $ra, 0x1c($sp) -/* 083B00 7F04EFD0 0FC225E6 */ jal get_curplayer_positiondata -/* 083B04 7F04EFD4 AFA50050 */ sw $a1, 0x50($sp) -/* 083B08 7F04EFD8 8FA50050 */ lw $a1, 0x50($sp) -/* 083B0C 7F04EFDC C4460008 */ lwc1 $f6, 8($v0) -/* 083B10 7F04EFE0 C44A000C */ lwc1 $f10, 0xc($v0) -/* 083B14 7F04EFE4 C4A40058 */ lwc1 $f4, 0x58($a1) -/* 083B18 7F04EFE8 C4A8005C */ lwc1 $f8, 0x5c($a1) -/* 083B1C 7F04EFEC 8C4D0014 */ lw $t5, 0x14($v0) -/* 083B20 7F04EFF0 46062301 */ sub.s $f12, $f4, $f6 -/* 083B24 7F04EFF4 C4460010 */ lwc1 $f6, 0x10($v0) -/* 083B28 7F04EFF8 C4A40060 */ lwc1 $f4, 0x60($a1) -/* 083B2C 7F04EFFC 460A4401 */ sub.s $f16, $f8, $f10 -/* 083B30 7F04F000 460C6202 */ mul.s $f8, $f12, $f12 -/* 083B34 7F04F004 AFAD002C */ sw $t5, 0x2c($sp) -/* 083B38 7F04F008 46062381 */ sub.s $f14, $f4, $f6 -/* 083B3C 7F04F00C 90AE0003 */ lbu $t6, 3($a1) -/* 083B40 7F04F010 24010028 */ li $at, 40 -/* 083B44 7F04F014 00401825 */ move $v1, $v0 -/* 083B48 7F04F018 460E7282 */ mul.s $f10, $f14, $f14 -/* 083B4C 7F04F01C 55C1000D */ bnel $t6, $at, .L7F04F054 -/* 083B50 7F04F020 3C014348 */ lui $at, 0x4348 -/* 083B54 7F04F024 8CAF0008 */ lw $t7, 8($a1) -/* 083B58 7F04F028 3C0143C8 */ lui $at, 0x43c8 -/* 083B5C 7F04F02C 000FC080 */ sll $t8, $t7, 2 -/* 083B60 7F04F030 07030008 */ bgezl $t8, .L7F04F054 -/* 083B64 7F04F034 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 083B68 7F04F038 44810000 */ mtc1 $at, $f0 -/* 083B6C 7F04F03C 3C018005 */ lui $at, %hi(D_80052EF4) -/* 083B70 7F04F040 C4222EF4 */ lwc1 $f2, %lo(D_80052EF4)($at) -/* 083B74 7F04F044 3C018005 */ lui $at, %hi(D_80052EF8) -/* 083B78 7F04F048 10000007 */ b .L7F04F068 -/* 083B7C 7F04F04C C4322EF8 */ lwc1 $f18, %lo(D_80052EF8)($at) -/* 083B80 7F04F050 3C014348 */ li $at, 0x43480000 # 200.000000 -.L7F04F054: -/* 083B84 7F04F054 44810000 */ mtc1 $at, $f0 -/* 083B88 7F04F058 3C018005 */ lui $at, %hi(D_80052EFC) -/* 083B8C 7F04F05C C4222EFC */ lwc1 $f2, %lo(D_80052EFC)($at) -/* 083B90 7F04F060 3C018005 */ lui $at, %hi(D_80052F00) -/* 083B94 7F04F064 C4322F00 */ lwc1 $f18, %lo(D_80052F00)($at) -.L7F04F068: -/* 083B98 7F04F068 460A4100 */ add.s $f4, $f8, $f10 -/* 083B9C 7F04F06C 4602203C */ c.lt.s $f4, $f2 -/* 083BA0 7F04F070 00000000 */ nop -/* 083BA4 7F04F074 4502003A */ bc1fl .L7F04F160 -/* 083BA8 7F04F078 8FBF001C */ lw $ra, 0x1c($sp) -/* 083BAC 7F04F07C 4600803C */ c.lt.s $f16, $f0 -/* 083BB0 7F04F080 00000000 */ nop -/* 083BB4 7F04F084 45020036 */ bc1fl .L7F04F160 -/* 083BB8 7F04F088 8FBF001C */ lw $ra, 0x1c($sp) -/* 083BBC 7F04F08C 46000187 */ neg.s $f6, $f0 -/* 083BC0 7F04F090 4610303C */ c.lt.s $f6, $f16 -/* 083BC4 7F04F094 00000000 */ nop -/* 083BC8 7F04F098 45020031 */ bc1fl .L7F04F160 -/* 083BCC 7F04F09C 8FBF001C */ lw $ra, 0x1c($sp) -/* 083BD0 7F04F0A0 AFA3004C */ sw $v1, 0x4c($sp) -/* 083BD4 7F04F0A4 AFA50050 */ sw $a1, 0x50($sp) -/* 083BD8 7F04F0A8 0FC16A8C */ jal convert_angle_using_inverse -/* 083BDC 7F04F0AC E7B20030 */ swc1 $f18, 0x30($sp) -/* 083BE0 7F04F0B0 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees -/* 083BE4 7F04F0B4 E7A00024 */ swc1 $f0, 0x24($sp) -/* 083BE8 7F04F0B8 C7AC0024 */ lwc1 $f12, 0x24($sp) -/* 083BEC 7F04F0BC 8FA3004C */ lw $v1, 0x4c($sp) -/* 083BF0 7F04F0C0 8FA50050 */ lw $a1, 0x50($sp) -/* 083BF4 7F04F0C4 4600603C */ c.lt.s $f12, $f0 -/* 083BF8 7F04F0C8 C7B20030 */ lwc1 $f18, 0x30($sp) -/* 083BFC 7F04F0CC 46006381 */ sub.s $f14, $f12, $f0 -/* 083C00 7F04F0D0 3C018005 */ lui $at, %hi(D_80052F04) -/* 083C04 7F04F0D4 45000003 */ bc1f .L7F04F0E4 -/* 083C08 7F04F0D8 46007086 */ mov.s $f2, $f14 -/* 083C0C 7F04F0DC C4282F04 */ lwc1 $f8, %lo(D_80052F04)($at) -/* 083C10 7F04F0E0 46087080 */ add.s $f2, $f14, $f8 -.L7F04F0E4: -/* 083C14 7F04F0E4 3C018005 */ lui $at, %hi(D_80052F08) -/* 083C18 7F04F0E8 C42A2F08 */ lwc1 $f10, %lo(D_80052F08)($at) -/* 083C1C 7F04F0EC 3C018005 */ lui $at, %hi(D_80052F0C) -/* 083C20 7F04F0F0 4602503C */ c.lt.s $f10, $f2 -/* 083C24 7F04F0F4 00000000 */ nop -/* 083C28 7F04F0F8 45020004 */ bc1fl .L7F04F10C -/* 083C2C 7F04F0FC 4612103E */ c.le.s $f2, $f18 -/* 083C30 7F04F100 C4242F0C */ lwc1 $f4, %lo(D_80052F0C)($at) -/* 083C34 7F04F104 46022081 */ sub.s $f2, $f4, $f2 -/* 083C38 7F04F108 4612103E */ c.le.s $f2, $f18 -.L7F04F10C: -/* 083C3C 7F04F10C 00000000 */ nop -/* 083C40 7F04F110 45020013 */ bc1fl .L7F04F160 -/* 083C44 7F04F114 8FBF001C */ lw $ra, 0x1c($sp) -/* 083C48 7F04F118 8CB9000C */ lw $t9, 0xc($a1) -/* 083C4C 7F04F11C 8FA20058 */ lw $v0, 0x58($sp) -/* 083C50 7F04F120 27A4002C */ addiu $a0, $sp, 0x2c -/* 083C54 7F04F124 33280800 */ andi $t0, $t9, 0x800 -/* 083C58 7F04F128 5100000A */ beql $t0, $zero, .L7F04F154 -/* 083C5C 7F04F12C 8FA90058 */ lw $t1, 0x58($sp) -/* 083C60 7F04F130 C4460010 */ lwc1 $f6, 0x10($v0) -/* 083C64 7F04F134 8C650008 */ lw $a1, 8($v1) -/* 083C68 7F04F138 8C660010 */ lw $a2, 0x10($v1) -/* 083C6C 7F04F13C 8C470008 */ lw $a3, 8($v0) -/* 083C70 7F04F140 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 -/* 083C74 7F04F144 E7A60010 */ swc1 $f6, 0x10($sp) -/* 083C78 7F04F148 50400005 */ beql $v0, $zero, .L7F04F160 -/* 083C7C 7F04F14C 8FBF001C */ lw $ra, 0x1c($sp) -/* 083C80 7F04F150 8FA90058 */ lw $t1, 0x58($sp) -.L7F04F154: -/* 083C84 7F04F154 3C018007 */ lui $at, %hi(dword_CODE_bss_80071DF8) -/* 083C88 7F04F158 AC291DF8 */ sw $t1, %lo(dword_CODE_bss_80071DF8)($at) -.L7F04F15C: -/* 083C8C 7F04F15C 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04F160: -/* 083C90 7F04F160 27BD0058 */ addiu $sp, $sp, 0x58 -/* 083C94 7F04F164 24020001 */ li $v0, 1 -/* 083C98 7F04F168 03E00008 */ jr $ra -/* 083C9C 7F04F16C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04F170(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*hack, part of append_text_ammo_amount_word*/ -glabel jpt_80052F10 -.word text_some -.word text_some -.word text_some -.word text_a -.word text_a -.word text_a -.word text_a - -.text -glabel sub_GAME_7F04F170 -/* 083CA0 7F04F170 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 083CA4 7F04F174 AFBF001C */ sw $ra, 0x1c($sp) -/* 083CA8 7F04F178 AFB00018 */ sw $s0, 0x18($sp) -/* 083CAC 7F04F17C AFA40028 */ sw $a0, 0x28($sp) -/* 083CB0 7F04F180 8C900004 */ lw $s0, 4($a0) -/* 083CB4 7F04F184 AFA00020 */ sw $zero, 0x20($sp) -/* 083CB8 7F04F188 24010005 */ li $at, 5 -/* 083CBC 7F04F18C 920F0003 */ lbu $t7, 3($s0) -/* 083CC0 7F04F190 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 083CC4 7F04F194 240500BA */ li $a1, 186 -/* 083CC8 7F04F198 15E1000D */ bne $t7, $at, .L7F04F1D0 -/* 083CCC 7F04F19C 00003025 */ move $a2, $zero -/* 083CD0 7F04F1A0 0C002382 */ jal play_sfx_a1 -/* 083CD4 7F04F1A4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 083CD8 7F04F1A8 0FC15794 */ jal is_alarm_on -/* 083CDC 7F04F1AC 00000000 */ nop -/* 083CE0 7F04F1B0 10400005 */ beqz $v0, .L7F04F1C8 -/* 083CE4 7F04F1B4 00000000 */ nop -/* 083CE8 7F04F1B8 0FC1578B */ jal stop_alarm -/* 083CEC 7F04F1BC 00000000 */ nop -/* 083CF0 7F04F1C0 10000004 */ b .L7F04F1D4 -/* 083CF4 7F04F1C4 8E180008 */ lw $t8, 8($s0) -.L7F04F1C8: -/* 083CF8 7F04F1C8 0FC15772 */ jal start_alarm -/* 083CFC 7F04F1CC 00000000 */ nop -.L7F04F1D0: -/* 083D00 7F04F1D0 8E180008 */ lw $t8, 8($s0) -.L7F04F1D4: -/* 083D04 7F04F1D4 8FA40028 */ lw $a0, 0x28($sp) -/* 083D08 7F04F1D8 0018CB00 */ sll $t9, $t8, 0xc -/* 083D0C 7F04F1DC 07230005 */ bgezl $t9, .L7F04F1F4 -/* 083D10 7F04F1E0 8E080064 */ lw $t0, 0x64($s0) -/* 083D14 7F04F1E4 0FC14094 */ jal collect_or_interact_object -/* 083D18 7F04F1E8 24050001 */ li $a1, 1 -/* 083D1C 7F04F1EC AFA20020 */ sw $v0, 0x20($sp) -/* 083D20 7F04F1F0 8E080064 */ lw $t0, 0x64($s0) -.L7F04F1F4: -/* 083D24 7F04F1F4 35094000 */ ori $t1, $t0, 0x4000 -/* 083D28 7F04F1F8 AE090064 */ sw $t1, 0x64($s0) -/* 083D2C 7F04F1FC 0FC0F9A8 */ jal sub_GAME_7F03E6A0 -/* 083D30 7F04F200 8FA40028 */ lw $a0, 0x28($sp) -/* 083D34 7F04F204 8FBF001C */ lw $ra, 0x1c($sp) -/* 083D38 7F04F208 8FA20020 */ lw $v0, 0x20($sp) -/* 083D3C 7F04F20C 8FB00018 */ lw $s0, 0x18($sp) -/* 083D40 7F04F210 03E00008 */ jr $ra -/* 083D44 7F04F214 27BD0028 */ addiu $sp, $sp, 0x28 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04F218(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04F218 -/* 083D48 7F04F218 10A00005 */ beqz $a1, .L7F04F230 -/* 083D4C 7F04F21C 8C820004 */ lw $v0, 4($a0) -/* 083D50 7F04F220 904E0002 */ lbu $t6, 2($v0) -/* 083D54 7F04F224 31CFFFDF */ andi $t7, $t6, 0xffdf -/* 083D58 7F04F228 03E00008 */ jr $ra -/* 083D5C 7F04F22C A04F0002 */ sb $t7, 2($v0) - -.L7F04F230: -/* 083D60 7F04F230 90580002 */ lbu $t8, 2($v0) -/* 083D64 7F04F234 37190020 */ ori $t9, $t8, 0x20 -/* 083D68 7F04F238 A0590002 */ sb $t9, 2($v0) -/* 083D6C 7F04F23C 03E00008 */ jr $ra -/* 083D70 7F04F240 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F04F244(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F04F244 -/* 083D74 7F04F244 8C820004 */ lw $v0, 4($a0) -/* 083D78 7F04F248 8C430068 */ lw $v1, 0x68($v0) -/* 083D7C 7F04F24C 50600017 */ beql $v1, $zero, .L7F04F2AC -/* 083D80 7F04F250 ACC00000 */ sw $zero, ($a2) -/* 083D84 7F04F254 8C4E0008 */ lw $t6, 8($v0) -/* 083D88 7F04F258 31CF0100 */ andi $t7, $t6, 0x100 -/* 083D8C 7F04F25C 51E00013 */ beql $t7, $zero, .L7F04F2AC -/* 083D90 7F04F260 ACC00000 */ sw $zero, ($a2) -/* 083D94 7F04F264 90580002 */ lbu $t8, 2($v0) -/* 083D98 7F04F268 33190020 */ andi $t9, $t8, 0x20 -/* 083D9C 7F04F26C 5720000F */ bnezl $t9, .L7F04F2AC -/* 083DA0 7F04F270 ACC00000 */ sw $zero, ($a2) -/* 083DA4 7F04F274 8C680000 */ lw $t0, ($v1) -/* 083DA8 7F04F278 ACC80000 */ sw $t0, ($a2) -/* 083DAC 7F04F27C 8C490068 */ lw $t1, 0x68($v0) -/* 083DB0 7F04F280 252A0004 */ addiu $t2, $t1, 4 -/* 083DB4 7F04F284 ACAA0000 */ sw $t2, ($a1) -/* 083DB8 7F04F288 8C4B0068 */ lw $t3, 0x68($v0) -/* 083DBC 7F04F28C 8FAC0010 */ lw $t4, 0x10($sp) -/* 083DC0 7F04F290 C5640048 */ lwc1 $f4, 0x48($t3) -/* 083DC4 7F04F294 E5840000 */ swc1 $f4, ($t4) -/* 083DC8 7F04F298 8C4D0068 */ lw $t5, 0x68($v0) -/* 083DCC 7F04F29C C5A60044 */ lwc1 $f6, 0x44($t5) -/* 083DD0 7F04F2A0 03E00008 */ jr $ra -/* 083DD4 7F04F2A4 E4E60000 */ swc1 $f6, ($a3) - -/* 083DD8 7F04F2A8 ACC00000 */ sw $zero, ($a2) -.L7F04F2AC: -/* 083DDC 7F04F2AC 03E00008 */ jr $ra -/* 083DE0 7F04F2B0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void append_text_picked_up(void) { - -} -#else -GLOBAL_ASM( -.text -glabel append_text_picked_up -/* 083DE4 7F04F2B4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 083DE8 7F04F2B8 AFBF0014 */ sw $ra, 0x14($sp) -/* 083DEC 7F04F2BC AFA40018 */ sw $a0, 0x18($sp) -/* 083DF0 7F04F2C0 AFA5001C */ sw $a1, 0x1c($sp) -/* 083DF4 7F04F2C4 AFA60020 */ sw $a2, 0x20($sp) -/* 083DF8 7F04F2C8 0FC30776 */ jal get_textptr_for_textID -/* 083DFC 7F04F2CC 3404A400 */ li $a0, 41984 -/* 083E00 7F04F2D0 8FA40018 */ lw $a0, 0x18($sp) -/* 083E04 7F04F2D4 0C0029FF */ jal string_load_parse_something -/* 083E08 7F04F2D8 00402825 */ move $a1, $v0 -/* 083E0C 7F04F2DC 8FBF0014 */ lw $ra, 0x14($sp) -/* 083E10 7F04F2E0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 083E14 7F04F2E4 03E00008 */ jr $ra -/* 083E18 7F04F2E8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void append_text_ammo_amount_word(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80052F10*/ -/*glabel jpt_80052F10*/ -/*.word text_some*/ -/*.word text_some*/ -/*.word text_some*/ -/*.word text_a*/ -/*.word text_a*/ -/*.word text_a*/ -/*.word text_a*/ -.word text_a -.word text_a -.word text_a -.word text_a -.word text_a -.word text_a -.word text_a -.word text_an -.word text_an -.word text_a -.word text_a -.word text_a -.word text_a -.word text_a -.word text_the -.word text_some -.word text_NONE -.word text_NONE -.word text_NONE -.word text_NONE -.word text_NONE -.word text_the -.text -glabel append_text_ammo_amount_word -/* 083E1C 7F04F2EC 24AEFFFF */ addiu $t6, $a1, -1 -/* 083E20 7F04F2F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 083E24 7F04F2F4 2DC1001D */ sltiu $at, $t6, 0x1d -/* 083E28 7F04F2F8 AFBF0014 */ sw $ra, 0x14($sp) -/* 083E2C 7F04F2FC 1020003F */ beqz $at, .L7F04F3FC -/* 083E30 7F04F300 AFA40018 */ sw $a0, 0x18($sp) -/* 083E34 7F04F304 000E7080 */ sll $t6, $t6, 2 -/* 083E38 7F04F308 3C018005 */ lui $at, %hi(jpt_80052F10) -/* 083E3C 7F04F30C 002E0821 */ addu $at, $at, $t6 -/* 083E40 7F04F310 8C2E2F10 */ lw $t6, %lo(jpt_80052F10)($at) -/* 083E44 7F04F314 01C00008 */ jr $t6 -/* 083E48 7F04F318 00000000 */ nop -text_some: -/* 083E4C 7F04F31C 0FC30776 */ jal get_textptr_for_textID -/* 083E50 7F04F320 3404A401 */ li $a0, 41985 -/* 083E54 7F04F324 8FA40018 */ lw $a0, 0x18($sp) -/* 083E58 7F04F328 0C0029FF */ jal string_load_parse_something -/* 083E5C 7F04F32C 00402825 */ move $a1, $v0 -/* 083E60 7F04F330 10000033 */ b .L7F04F400 -/* 083E64 7F04F334 8FBF0014 */ lw $ra, 0x14($sp) -text_a: -/* 083E68 7F04F338 24010001 */ li $at, 1 -/* 083E6C 7F04F33C 14C10008 */ bne $a2, $at, .L7F04F360 -/* 083E70 7F04F340 00000000 */ nop -/* 083E74 7F04F344 0FC30776 */ jal get_textptr_for_textID -/* 083E78 7F04F348 3404A402 */ li $a0, 41986 -/* 083E7C 7F04F34C 8FA40018 */ lw $a0, 0x18($sp) -/* 083E80 7F04F350 0C0029FF */ jal string_load_parse_something -/* 083E84 7F04F354 00402825 */ move $a1, $v0 -/* 083E88 7F04F358 10000029 */ b .L7F04F400 -/* 083E8C 7F04F35C 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04F360: -/* 083E90 7F04F360 0FC30776 */ jal get_textptr_for_textID -/* 083E94 7F04F364 3404A401 */ li $a0, 41985 -/* 083E98 7F04F368 8FA40018 */ lw $a0, 0x18($sp) -/* 083E9C 7F04F36C 0C0029FF */ jal string_load_parse_something -/* 083EA0 7F04F370 00402825 */ move $a1, $v0 -/* 083EA4 7F04F374 10000022 */ b .L7F04F400 -/* 083EA8 7F04F378 8FBF0014 */ lw $ra, 0x14($sp) -text_an: -/* 083EAC 7F04F37C 24010001 */ li $at, 1 -/* 083EB0 7F04F380 14C10008 */ bne $a2, $at, .L7F04F3A4 -/* 083EB4 7F04F384 00000000 */ nop -/* 083EB8 7F04F388 0FC30776 */ jal get_textptr_for_textID -/* 083EBC 7F04F38C 3404A403 */ li $a0, 41987 -/* 083EC0 7F04F390 8FA40018 */ lw $a0, 0x18($sp) -/* 083EC4 7F04F394 0C0029FF */ jal string_load_parse_something -/* 083EC8 7F04F398 00402825 */ move $a1, $v0 -/* 083ECC 7F04F39C 10000018 */ b .L7F04F400 -/* 083ED0 7F04F3A0 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04F3A4: -/* 083ED4 7F04F3A4 0FC30776 */ jal get_textptr_for_textID -/* 083ED8 7F04F3A8 3404A401 */ li $a0, 41985 -/* 083EDC 7F04F3AC 8FA40018 */ lw $a0, 0x18($sp) -/* 083EE0 7F04F3B0 0C0029FF */ jal string_load_parse_something -/* 083EE4 7F04F3B4 00402825 */ move $a1, $v0 -/* 083EE8 7F04F3B8 10000011 */ b .L7F04F400 -/* 083EEC 7F04F3BC 8FBF0014 */ lw $ra, 0x14($sp) -text_the: -/* 083EF0 7F04F3C0 24010001 */ li $at, 1 -/* 083EF4 7F04F3C4 14C10008 */ bne $a2, $at, .L7F04F3E8 -/* 083EF8 7F04F3C8 00000000 */ nop -/* 083EFC 7F04F3CC 0FC30776 */ jal get_textptr_for_textID -/* 083F00 7F04F3D0 3404A404 */ li $a0, 41988 -/* 083F04 7F04F3D4 8FA40018 */ lw $a0, 0x18($sp) -/* 083F08 7F04F3D8 0C0029FF */ jal string_load_parse_something -/* 083F0C 7F04F3DC 00402825 */ move $a1, $v0 -/* 083F10 7F04F3E0 10000007 */ b .L7F04F400 -/* 083F14 7F04F3E4 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04F3E8: -/* 083F18 7F04F3E8 0FC30776 */ jal get_textptr_for_textID -/* 083F1C 7F04F3EC 3404A401 */ li $a0, 41985 -/* 083F20 7F04F3F0 8FA40018 */ lw $a0, 0x18($sp) -/* 083F24 7F04F3F4 0C0029FF */ jal string_load_parse_something -/* 083F28 7F04F3F8 00402825 */ move $a1, $v0 -text_NONE: -.L7F04F3FC: -/* 083F2C 7F04F3FC 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04F400: -/* 083F30 7F04F400 27BD0018 */ addiu $sp, $sp, 0x18 -/* 083F34 7F04F404 03E00008 */ jr $ra -/* 083F38 7F04F408 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void apped_text_ammotype(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80052F84*/ -glabel jpt_80052F84 -.word text_pickup_shotgun_cartridge -.word text_pickup_hand_grenade -.word text_pickup_rocket -.word text_pickup_remote_mine -.word text_pickup_proximity_mine -.word text_pickup_timed_mine -.word pluralize_multiples -.word text_pickup_grenade_round -.word text_pickup_magnum_bullet -.word text_pickup_golden_bullet -.word text_pickup_dart -.word text_pickup_explosive_pen -.word text_pickup_explosive_case -.word text_pickup_flare -.word text_pickup_piton -.word pluralize_multiples -.word text_pickup_bug -.word text_pickup_micro_camera -.word text_pickup_goldeneye_key -.word text_pickup_plastique -.word pluralize_multiples -.word pluralize_multiples -.word pluralize_multiples -.word pluralize_multiples -.word pluralize_multiples -.word text_pickup_token - -/*D:80052FEC*/ -glabel jpt_80052FEC -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_mine -.word ammo_sfx_pickup_mine -.word ammo_sfx_pickup_mine -.word ammo_sfx_pickup_knife -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_mine -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_mine -.word ammo_sfx_pickup_mine -.word ammo_sfx_pickup_firearm -.word ammo_sfx_pickup_mine -.word ammo_sfx_pickup_default -.word ammo_sfx_pickup_default -.word ammo_sfx_pickup_default -.word ammo_sfx_pickup_default -.word ammo_sfx_pickup_default -.word ammo_sfx_pickup_firearm - -.text -glabel apped_text_ammotype -/* 083F3C 7F04F40C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 083F40 7F04F410 AFB00018 */ sw $s0, 0x18($sp) -/* 083F44 7F04F414 24020001 */ li $v0, 1 -/* 083F48 7F04F418 00808025 */ move $s0, $a0 -/* 083F4C 7F04F41C AFBF001C */ sw $ra, 0x1c($sp) -/* 083F50 7F04F420 10A20006 */ beq $a1, $v0, .L7F04F43C -/* 083F54 7F04F424 AFA60028 */ sw $a2, 0x28($sp) -/* 083F58 7F04F428 24010002 */ li $at, 2 -/* 083F5C 7F04F42C 10A10003 */ beq $a1, $at, .L7F04F43C -/* 083F60 7F04F430 24010003 */ li $at, 3 -/* 083F64 7F04F434 54A10009 */ bnel $a1, $at, .L7F04F45C -/* 083F68 7F04F438 2401000A */ li $at, 10 -.L7F04F43C: -/* 083F6C 7F04F43C 0FC30776 */ jal get_textptr_for_textID -/* 083F70 7F04F440 3404A405 */ li $a0, 41989 -/* 083F74 7F04F444 02002025 */ move $a0, $s0 -/* 083F78 7F04F448 0C0029FF */ jal string_load_parse_something -/* 083F7C 7F04F44C 00402825 */ move $a1, $v0 -/* 083F80 7F04F450 100000C9 */ b .L7F04F778 -/* 083F84 7F04F454 8FBF001C */ lw $ra, 0x1c($sp) -/* 083F88 7F04F458 2401000A */ li $at, 10 -.L7F04F45C: -/* 083F8C 7F04F45C 54A10019 */ bnel $a1, $at, .L7F04F4C4 -/* 083F90 7F04F460 24010013 */ li $at, 19 -/* 083F94 7F04F464 0FC30776 */ jal get_textptr_for_textID -/* 083F98 7F04F468 3404A40F */ li $a0, 41999 -/* 083F9C 7F04F46C 02002025 */ move $a0, $s0 -/* 083FA0 7F04F470 0C0029FF */ jal string_load_parse_something -/* 083FA4 7F04F474 00402825 */ move $a1, $v0 -/* 083FA8 7F04F478 8FAE0028 */ lw $t6, 0x28($sp) -/* 083FAC 7F04F47C 24010001 */ li $at, 1 -/* 083FB0 7F04F480 15C10008 */ bne $t6, $at, .L7F04F4A4 -/* 083FB4 7F04F484 00000000 */ nop -/* 083FB8 7F04F488 0FC30776 */ jal get_textptr_for_textID -/* 083FBC 7F04F48C 3404A410 */ li $a0, 42000 -/* 083FC0 7F04F490 02002025 */ move $a0, $s0 -/* 083FC4 7F04F494 0C0029FF */ jal string_load_parse_something -/* 083FC8 7F04F498 00402825 */ move $a1, $v0 -/* 083FCC 7F04F49C 100000B6 */ b .L7F04F778 -/* 083FD0 7F04F4A0 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04F4A4: -/* 083FD4 7F04F4A4 0FC30776 */ jal get_textptr_for_textID -/* 083FD8 7F04F4A8 3404A411 */ li $a0, 42001 -/* 083FDC 7F04F4AC 02002025 */ move $a0, $s0 -/* 083FE0 7F04F4B0 0C0029FF */ jal string_load_parse_something -/* 083FE4 7F04F4B4 00402825 */ move $a1, $v0 -/* 083FE8 7F04F4B8 100000AF */ b .L7F04F778 -/* 083FEC 7F04F4BC 8FBF001C */ lw $ra, 0x1c($sp) -/* 083FF0 7F04F4C0 24010013 */ li $at, 19 -.L7F04F4C4: -/* 083FF4 7F04F4C4 14A10017 */ bne $a1, $at, .L7F04F524 -/* 083FF8 7F04F4C8 24B8FFFC */ addiu $t8, $a1, -4 -/* 083FFC 7F04F4CC 8FAF0028 */ lw $t7, 0x28($sp) -/* 084000 7F04F4D0 15E20008 */ bne $t7, $v0, .L7F04F4F4 -/* 084004 7F04F4D4 00000000 */ nop -/* 084008 7F04F4D8 0FC30776 */ jal get_textptr_for_textID -/* 08400C 7F04F4DC 3404A419 */ li $a0, 42009 -/* 084010 7F04F4E0 02002025 */ move $a0, $s0 -/* 084014 7F04F4E4 0C0029FF */ jal string_load_parse_something -/* 084018 7F04F4E8 00402825 */ move $a1, $v0 -/* 08401C 7F04F4EC 10000006 */ b .L7F04F508 -/* 084020 7F04F4F0 00000000 */ nop -.L7F04F4F4: -/* 084024 7F04F4F4 0FC30776 */ jal get_textptr_for_textID -/* 084028 7F04F4F8 3404A41A */ li $a0, 42010 -/* 08402C 7F04F4FC 02002025 */ move $a0, $s0 -/* 084030 7F04F500 0C0029FF */ jal string_load_parse_something -/* 084034 7F04F504 00402825 */ move $a1, $v0 -.L7F04F508: -/* 084038 7F04F508 0FC30776 */ jal get_textptr_for_textID -/* 08403C 7F04F50C 3404A418 */ li $a0, 42008 -/* 084040 7F04F510 02002025 */ move $a0, $s0 -/* 084044 7F04F514 0C0029FF */ jal string_load_parse_something -/* 084048 7F04F518 00402825 */ move $a1, $v0 -/* 08404C 7F04F51C 10000096 */ b .L7F04F778 -/* 084050 7F04F520 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04F524: -/* 084054 7F04F524 2F01001A */ sltiu $at, $t8, 0x1a -/* 084058 7F04F528 10200089 */ beqz $at, .L7F04F750 -/* 08405C 7F04F52C 0018C080 */ sll $t8, $t8, 2 -/* 084060 7F04F530 3C018005 */ lui $at, %hi(jpt_80052F84) -/* 084064 7F04F534 00380821 */ addu $at, $at, $t8 -/* 084068 7F04F538 8C382F84 */ lw $t8, %lo(jpt_80052F84)($at) -/* 08406C 7F04F53C 03000008 */ jr $t8 -/* 084070 7F04F540 00000000 */ nop -text_pickup_shotgun_cartridge: -/* 084074 7F04F544 0FC30776 */ jal get_textptr_for_textID -/* 084078 7F04F548 3404A406 */ li $a0, 41990 -/* 08407C 7F04F54C 02002025 */ move $a0, $s0 -/* 084080 7F04F550 0C0029FF */ jal string_load_parse_something -/* 084084 7F04F554 00402825 */ move $a1, $v0 -/* 084088 7F04F558 1000007E */ b .L7F04F754 -/* 08408C 7F04F55C 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_magnum_bullet: -/* 084090 7F04F560 0FC30776 */ jal get_textptr_for_textID -/* 084094 7F04F564 3404A407 */ li $a0, 41991 -/* 084098 7F04F568 02002025 */ move $a0, $s0 -/* 08409C 7F04F56C 0C0029FF */ jal string_load_parse_something -/* 0840A0 7F04F570 00402825 */ move $a1, $v0 -/* 0840A4 7F04F574 10000077 */ b .L7F04F754 -/* 0840A8 7F04F578 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_golden_bullet: -/* 0840AC 7F04F57C 0FC30776 */ jal get_textptr_for_textID -/* 0840B0 7F04F580 3404A408 */ li $a0, 41992 -/* 0840B4 7F04F584 02002025 */ move $a0, $s0 -/* 0840B8 7F04F588 0C0029FF */ jal string_load_parse_something -/* 0840BC 7F04F58C 00402825 */ move $a1, $v0 -/* 0840C0 7F04F590 10000070 */ b .L7F04F754 -/* 0840C4 7F04F594 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_hand_grenade: -/* 0840C8 7F04F598 0FC30776 */ jal get_textptr_for_textID -/* 0840CC 7F04F59C 3404A409 */ li $a0, 41993 -/* 0840D0 7F04F5A0 02002025 */ move $a0, $s0 -/* 0840D4 7F04F5A4 0C0029FF */ jal string_load_parse_something -/* 0840D8 7F04F5A8 00402825 */ move $a1, $v0 -/* 0840DC 7F04F5AC 10000069 */ b .L7F04F754 -/* 0840E0 7F04F5B0 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_grenade_round: -/* 0840E4 7F04F5B4 0FC30776 */ jal get_textptr_for_textID -/* 0840E8 7F04F5B8 3404A40A */ li $a0, 41994 -/* 0840EC 7F04F5BC 02002025 */ move $a0, $s0 -/* 0840F0 7F04F5C0 0C0029FF */ jal string_load_parse_something -/* 0840F4 7F04F5C4 00402825 */ move $a1, $v0 -/* 0840F8 7F04F5C8 10000062 */ b .L7F04F754 -/* 0840FC 7F04F5CC 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_rocket: -/* 084100 7F04F5D0 0FC30776 */ jal get_textptr_for_textID -/* 084104 7F04F5D4 3404A40B */ li $a0, 41995 -/* 084108 7F04F5D8 02002025 */ move $a0, $s0 -/* 08410C 7F04F5DC 0C0029FF */ jal string_load_parse_something -/* 084110 7F04F5E0 00402825 */ move $a1, $v0 -/* 084114 7F04F5E4 1000005B */ b .L7F04F754 -/* 084118 7F04F5E8 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_remote_mine: -/* 08411C 7F04F5EC 0FC30776 */ jal get_textptr_for_textID -/* 084120 7F04F5F0 3404A40C */ li $a0, 41996 -/* 084124 7F04F5F4 02002025 */ move $a0, $s0 -/* 084128 7F04F5F8 0C0029FF */ jal string_load_parse_something -/* 08412C 7F04F5FC 00402825 */ move $a1, $v0 -/* 084130 7F04F600 10000054 */ b .L7F04F754 -/* 084134 7F04F604 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_proximity_mine: -/* 084138 7F04F608 0FC30776 */ jal get_textptr_for_textID -/* 08413C 7F04F60C 3404A40D */ li $a0, 41997 -/* 084140 7F04F610 02002025 */ move $a0, $s0 -/* 084144 7F04F614 0C0029FF */ jal string_load_parse_something -/* 084148 7F04F618 00402825 */ move $a1, $v0 -/* 08414C 7F04F61C 1000004D */ b .L7F04F754 -/* 084150 7F04F620 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_timed_mine: -/* 084154 7F04F624 0FC30776 */ jal get_textptr_for_textID -/* 084158 7F04F628 3404A40E */ li $a0, 41998 -/* 08415C 7F04F62C 02002025 */ move $a0, $s0 -/* 084160 7F04F630 0C0029FF */ jal string_load_parse_something -/* 084164 7F04F634 00402825 */ move $a1, $v0 -/* 084168 7F04F638 10000046 */ b .L7F04F754 -/* 08416C 7F04F63C 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_dart: -/* 084170 7F04F640 0FC30776 */ jal get_textptr_for_textID -/* 084174 7F04F644 3404A413 */ li $a0, 42003 -/* 084178 7F04F648 02002025 */ move $a0, $s0 -/* 08417C 7F04F64C 0C0029FF */ jal string_load_parse_something -/* 084180 7F04F650 00402825 */ move $a1, $v0 -/* 084184 7F04F654 1000003F */ b .L7F04F754 -/* 084188 7F04F658 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_explosive_pen: -/* 08418C 7F04F65C 0FC30776 */ jal get_textptr_for_textID -/* 084190 7F04F660 3404A414 */ li $a0, 42004 -/* 084194 7F04F664 02002025 */ move $a0, $s0 -/* 084198 7F04F668 0C0029FF */ jal string_load_parse_something -/* 08419C 7F04F66C 00402825 */ move $a1, $v0 -/* 0841A0 7F04F670 10000038 */ b .L7F04F754 -/* 0841A4 7F04F674 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_explosive_case: -/* 0841A8 7F04F678 0FC30776 */ jal get_textptr_for_textID -/* 0841AC 7F04F67C 3404A415 */ li $a0, 42005 -/* 0841B0 7F04F680 02002025 */ move $a0, $s0 -/* 0841B4 7F04F684 0C0029FF */ jal string_load_parse_something -/* 0841B8 7F04F688 00402825 */ move $a1, $v0 -/* 0841BC 7F04F68C 10000031 */ b .L7F04F754 -/* 0841C0 7F04F690 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_flare: -/* 0841C4 7F04F694 0FC30776 */ jal get_textptr_for_textID -/* 0841C8 7F04F698 3404A416 */ li $a0, 42006 -/* 0841CC 7F04F69C 02002025 */ move $a0, $s0 -/* 0841D0 7F04F6A0 0C0029FF */ jal string_load_parse_something -/* 0841D4 7F04F6A4 00402825 */ move $a1, $v0 -/* 0841D8 7F04F6A8 1000002A */ b .L7F04F754 -/* 0841DC 7F04F6AC 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_piton: -/* 0841E0 7F04F6B0 0FC30776 */ jal get_textptr_for_textID -/* 0841E4 7F04F6B4 3404A417 */ li $a0, 42007 -/* 0841E8 7F04F6B8 02002025 */ move $a0, $s0 -/* 0841EC 7F04F6BC 0C0029FF */ jal string_load_parse_something -/* 0841F0 7F04F6C0 00402825 */ move $a1, $v0 -/* 0841F4 7F04F6C4 10000023 */ b .L7F04F754 -/* 0841F8 7F04F6C8 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_bug: -/* 0841FC 7F04F6CC 0FC30776 */ jal get_textptr_for_textID -/* 084200 7F04F6D0 3404A41B */ li $a0, 42011 -/* 084204 7F04F6D4 02002025 */ move $a0, $s0 -/* 084208 7F04F6D8 0C0029FF */ jal string_load_parse_something -/* 08420C 7F04F6DC 00402825 */ move $a1, $v0 -/* 084210 7F04F6E0 1000001C */ b .L7F04F754 -/* 084214 7F04F6E4 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_micro_camera: -/* 084218 7F04F6E8 0FC30776 */ jal get_textptr_for_textID -/* 08421C 7F04F6EC 3404A41C */ li $a0, 42012 -/* 084220 7F04F6F0 02002025 */ move $a0, $s0 -/* 084224 7F04F6F4 0C0029FF */ jal string_load_parse_something -/* 084228 7F04F6F8 00402825 */ move $a1, $v0 -/* 08422C 7F04F6FC 10000015 */ b .L7F04F754 -/* 084230 7F04F700 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_goldeneye_key: -/* 084234 7F04F704 0FC30776 */ jal get_textptr_for_textID -/* 084238 7F04F708 3404A41D */ li $a0, 42013 -/* 08423C 7F04F70C 02002025 */ move $a0, $s0 -/* 084240 7F04F710 0C0029FF */ jal string_load_parse_something -/* 084244 7F04F714 00402825 */ move $a1, $v0 -/* 084248 7F04F718 1000000E */ b .L7F04F754 -/* 08424C 7F04F71C 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_token: -/* 084250 7F04F720 0FC30776 */ jal get_textptr_for_textID -/* 084254 7F04F724 3404A41E */ li $a0, 42014 -/* 084258 7F04F728 02002025 */ move $a0, $s0 -/* 08425C 7F04F72C 0C0029FF */ jal string_load_parse_something -/* 084260 7F04F730 00402825 */ move $a1, $v0 -/* 084264 7F04F734 10000007 */ b .L7F04F754 -/* 084268 7F04F738 8FB90028 */ lw $t9, 0x28($sp) -text_pickup_plastique: -/* 08426C 7F04F73C 0FC30776 */ jal get_textptr_for_textID -/* 084270 7F04F740 3404A41F */ li $a0, 42015 -/* 084274 7F04F744 02002025 */ move $a0, $s0 -/* 084278 7F04F748 0C0029FF */ jal string_load_parse_something -/* 08427C 7F04F74C 00402825 */ move $a1, $v0 -pluralize_multiples: -.L7F04F750: -/* 084280 7F04F750 8FB90028 */ lw $t9, 0x28($sp) -.L7F04F754: -/* 084284 7F04F754 2B210002 */ slti $at, $t9, 2 -/* 084288 7F04F758 54200007 */ bnezl $at, .L7F04F778 -/* 08428C 7F04F75C 8FBF001C */ lw $ra, 0x1c($sp) -/* 084290 7F04F760 0FC30776 */ jal get_textptr_for_textID -/* 084294 7F04F764 3404A412 */ li $a0, 42002 -/* 084298 7F04F768 02002025 */ move $a0, $s0 -/* 08429C 7F04F76C 0C0029FF */ jal string_load_parse_something -/* 0842A0 7F04F770 00402825 */ move $a1, $v0 -/* 0842A4 7F04F774 8FBF001C */ lw $ra, 0x1c($sp) -.L7F04F778: -/* 0842A8 7F04F778 8FB00018 */ lw $s0, 0x18($sp) -/* 0842AC 7F04F77C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0842B0 7F04F780 03E00008 */ jr $ra -/* 0842B4 7F04F784 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void set_sound_effect_for_ammo_collection(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80052FEC*/ -/*glabel jpt_80052FEC*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_mine*/ -/*.word ammo_sfx_pickup_mine*/ -/*.word ammo_sfx_pickup_mine*/ -/*.word ammo_sfx_pickup_knife*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_mine*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_mine*/ -/*.word ammo_sfx_pickup_mine*/ -/*.word ammo_sfx_pickup_firearm*/ -/*.word ammo_sfx_pickup_mine*/ -/*.word ammo_sfx_pickup_default*/ -/*.word ammo_sfx_pickup_default*/ -/*.word ammo_sfx_pickup_default*/ -/*.word ammo_sfx_pickup_default*/ -/*.word ammo_sfx_pickup_default*/ -/*.word ammo_sfx_pickup_firearm*/ - -.text -glabel set_sound_effect_for_ammo_collection -/* 0842B8 7F04F788 248EFFFF */ addiu $t6, $a0, -1 -/* 0842BC 7F04F78C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0842C0 7F04F790 2DC1001D */ sltiu $at, $t6, 0x1d -/* 0842C4 7F04F794 1020001A */ beqz $at, .L7F04F800 -/* 0842C8 7F04F798 AFBF0014 */ sw $ra, 0x14($sp) -/* 0842CC 7F04F79C 000E7080 */ sll $t6, $t6, 2 -/* 0842D0 7F04F7A0 3C018005 */ lui $at, %hi(jpt_80052FEC) -/* 0842D4 7F04F7A4 002E0821 */ addu $at, $at, $t6 -/* 0842D8 7F04F7A8 8C2E2FEC */ lw $t6, %lo(jpt_80052FEC)($at) -/* 0842DC 7F04F7AC 01C00008 */ jr $t6 -/* 0842E0 7F04F7B0 00000000 */ nop -ammo_sfx_pickup_firearm: -/* 0842E4 7F04F7B4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0842E8 7F04F7B8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0842EC 7F04F7BC 240500EA */ li $a1, 234 -/* 0842F0 7F04F7C0 0C002382 */ jal play_sfx_a1 -/* 0842F4 7F04F7C4 00003025 */ move $a2, $zero -/* 0842F8 7F04F7C8 1000000E */ b .L7F04F804 -/* 0842FC 7F04F7CC 8FBF0014 */ lw $ra, 0x14($sp) -ammo_sfx_pickup_mine: -/* 084300 7F04F7D0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084304 7F04F7D4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084308 7F04F7D8 240500EB */ li $a1, 235 -/* 08430C 7F04F7DC 0C002382 */ jal play_sfx_a1 -/* 084310 7F04F7E0 00003025 */ move $a2, $zero -/* 084314 7F04F7E4 10000007 */ b .L7F04F804 -/* 084318 7F04F7E8 8FBF0014 */ lw $ra, 0x14($sp) -ammo_sfx_pickup_knife: -/* 08431C 7F04F7EC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084320 7F04F7F0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084324 7F04F7F4 240500E9 */ li $a1, 233 -/* 084328 7F04F7F8 0C002382 */ jal play_sfx_a1 -/* 08432C 7F04F7FC 00003025 */ move $a2, $zero -ammo_sfx_pickup_default: -.L7F04F800: -/* 084330 7F04F800 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04F804: -/* 084334 7F04F804 27BD0018 */ addiu $sp, $sp, 0x18 -/* 084338 7F04F808 03E00008 */ jr $ra -/* 08433C 7F04F80C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void set_sound_effect_for_weapontype_collection(void) { - -} -#else -GLOBAL_ASM( -.text -glabel set_sound_effect_for_weapontype_collection -/* 084340 7F04F810 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 084344 7F04F814 24010002 */ li $at, 2 -/* 084348 7F04F818 10810004 */ beq $a0, $at, .L7F04F82C -/* 08434C 7F04F81C AFBF0014 */ sw $ra, 0x14($sp) -/* 084350 7F04F820 24010003 */ li $at, 3 -/* 084354 7F04F824 54810009 */ bnel $a0, $at, .L7F04F84C -/* 084358 7F04F828 2401001D */ li $at, 29 -.L7F04F82C: -/* 08435C 7F04F82C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084360 7F04F830 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084364 7F04F834 240500E9 */ li $a1, 233 -/* 084368 7F04F838 0C002382 */ jal play_sfx_a1 -/* 08436C 7F04F83C 00003025 */ move $a2, $zero -/* 084370 7F04F840 10000034 */ b .L7F04F914 -/* 084374 7F04F844 8FBF0014 */ lw $ra, 0x14($sp) -/* 084378 7F04F848 2401001D */ li $at, 29 -.L7F04F84C: -/* 08437C 7F04F84C 1081000E */ beq $a0, $at, .L7F04F888 -/* 084380 7F04F850 240500EB */ li $a1, 235 -/* 084384 7F04F854 2401001C */ li $at, 28 -/* 084388 7F04F858 1081000B */ beq $a0, $at, .L7F04F888 -/* 08438C 7F04F85C 2401001B */ li $at, 27 -/* 084390 7F04F860 10810009 */ beq $a0, $at, .L7F04F888 -/* 084394 7F04F864 24010021 */ li $at, 33 -/* 084398 7F04F868 10810007 */ beq $a0, $at, .L7F04F888 -/* 08439C 7F04F86C 2401002F */ li $at, 47 -/* 0843A0 7F04F870 10810005 */ beq $a0, $at, .L7F04F888 -/* 0843A4 7F04F874 24010030 */ li $at, 48 -/* 0843A8 7F04F878 10810003 */ beq $a0, $at, .L7F04F888 -/* 0843AC 7F04F87C 24010022 */ li $at, 34 -/* 0843B0 7F04F880 54810008 */ bnel $a0, $at, .L7F04F8A4 -/* 0843B4 7F04F884 2401001A */ li $at, 26 -.L7F04F888: -/* 0843B8 7F04F888 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0843BC 7F04F88C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0843C0 7F04F890 0C002382 */ jal play_sfx_a1 -/* 0843C4 7F04F894 00003025 */ move $a2, $zero -/* 0843C8 7F04F898 1000001E */ b .L7F04F914 -/* 0843CC 7F04F89C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0843D0 7F04F8A0 2401001A */ li $at, 26 -.L7F04F8A4: -/* 0843D4 7F04F8A4 10810006 */ beq $a0, $at, .L7F04F8C0 -/* 0843D8 7F04F8A8 240500EA */ li $a1, 234 -/* 0843DC 7F04F8AC 24010057 */ li $at, 87 -/* 0843E0 7F04F8B0 10810003 */ beq $a0, $at, .L7F04F8C0 -/* 0843E4 7F04F8B4 24010056 */ li $at, 86 -/* 0843E8 7F04F8B8 54810008 */ bnel $a0, $at, .L7F04F8DC -/* 0843EC 7F04F8BC 24010016 */ li $at, 22 -.L7F04F8C0: -/* 0843F0 7F04F8C0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0843F4 7F04F8C4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0843F8 7F04F8C8 0C002382 */ jal play_sfx_a1 -/* 0843FC 7F04F8CC 00003025 */ move $a2, $zero -/* 084400 7F04F8D0 10000010 */ b .L7F04F914 -/* 084404 7F04F8D4 8FBF0014 */ lw $ra, 0x14($sp) -/* 084408 7F04F8D8 24010016 */ li $at, 22 -.L7F04F8DC: -/* 08440C 7F04F8DC 14810008 */ bne $a0, $at, .L7F04F900 -/* 084410 7F04F8E0 240500E8 */ li $a1, 232 -/* 084414 7F04F8E4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084418 7F04F8E8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08441C 7F04F8EC 240500F2 */ li $a1, 242 -/* 084420 7F04F8F0 0C002382 */ jal play_sfx_a1 -/* 084424 7F04F8F4 00003025 */ move $a2, $zero -/* 084428 7F04F8F8 10000006 */ b .L7F04F914 -/* 08442C 7F04F8FC 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04F900: -/* 084430 7F04F900 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084434 7F04F904 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084438 7F04F908 0C002382 */ jal play_sfx_a1 -/* 08443C 7F04F90C 00003025 */ move $a2, $zero -/* 084440 7F04F910 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04F914: -/* 084444 7F04F914 27BD0018 */ addiu $sp, $sp, 0x18 -/* 084448 7F04F918 03E00008 */ jr $ra -/* 08444C 7F04F91C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void display_ammo_type_collection_text(void) { - -} -#else -GLOBAL_ASM( -.late_rodata - -.text -glabel display_ammo_type_collection_text -/* 084450 7F04F920 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 084454 7F04F924 AFBF0024 */ sw $ra, 0x24($sp) -/* 084458 7F04F928 AFB20020 */ sw $s2, 0x20($sp) -/* 08445C 7F04F92C AFB1001C */ sw $s1, 0x1c($sp) -/* 084460 7F04F930 AFB00018 */ sw $s0, 0x18($sp) -/* 084464 7F04F934 A0800000 */ sb $zero, ($a0) -/* 084468 7F04F938 3C0E8005 */ lui $t6, %hi(j_text_trigger) -/* 08446C 7F04F93C 8DCE84D0 */ lw $t6, %lo(j_text_trigger)($t6) -/* 084470 7F04F940 00808025 */ move $s0, $a0 -/* 084474 7F04F944 00A08825 */ move $s1, $a1 -/* 084478 7F04F948 11C00011 */ beqz $t6, .L7F04F990 -/* 08447C 7F04F94C 00C09025 */ move $s2, $a2 -/* 084480 7F04F950 0FC13D03 */ jal apped_text_ammotype -/* 084484 7F04F954 00000000 */ nop -/* 084488 7F04F958 0FC26919 */ jal get_num_players -/* 08448C 7F04F95C 00000000 */ nop -/* 084490 7F04F960 28410003 */ slti $at, $v0, 3 -/* 084494 7F04F964 10200004 */ beqz $at, .L7F04F978 -/* 084498 7F04F968 02002025 */ move $a0, $s0 -/* 08449C 7F04F96C 02202825 */ move $a1, $s1 -/* 0844A0 7F04F970 0FC13CAD */ jal append_text_picked_up -/* 0844A4 7F04F974 02403025 */ move $a2, $s2 -.L7F04F978: -/* 0844A8 7F04F978 3C058005 */ lui $a1, %hi(D_800529D0) -/* 0844AC 7F04F97C 24A529D0 */ addiu $a1, %lo(D_800529D0) # addiu $a1, $a1, 0x29d0 -/* 0844B0 7F04F980 0C0029FF */ jal string_load_parse_something -/* 0844B4 7F04F984 02002025 */ move $a0, $s0 -/* 0844B8 7F04F988 10000016 */ b .L7F04F9E4 -/* 0844BC 7F04F98C 8FBF0024 */ lw $ra, 0x24($sp) -.L7F04F990: -/* 0844C0 7F04F990 0FC26919 */ jal get_num_players -/* 0844C4 7F04F994 00000000 */ nop -/* 0844C8 7F04F998 28410003 */ slti $at, $v0, 3 -/* 0844CC 7F04F99C 10200008 */ beqz $at, .L7F04F9C0 -/* 0844D0 7F04F9A0 02002025 */ move $a0, $s0 -/* 0844D4 7F04F9A4 02202825 */ move $a1, $s1 -/* 0844D8 7F04F9A8 0FC13CAD */ jal append_text_picked_up -/* 0844DC 7F04F9AC 02403025 */ move $a2, $s2 -/* 0844E0 7F04F9B0 02002025 */ move $a0, $s0 -/* 0844E4 7F04F9B4 02202825 */ move $a1, $s1 -/* 0844E8 7F04F9B8 0FC13CBB */ jal append_text_ammo_amount_word -/* 0844EC 7F04F9BC 02403025 */ move $a2, $s2 -.L7F04F9C0: -/* 0844F0 7F04F9C0 02002025 */ move $a0, $s0 -/* 0844F4 7F04F9C4 02202825 */ move $a1, $s1 -/* 0844F8 7F04F9C8 0FC13D03 */ jal apped_text_ammotype -/* 0844FC 7F04F9CC 02403025 */ move $a2, $s2 -/* 084500 7F04F9D0 3C058005 */ lui $a1, %hi(D_800529D4) -/* 084504 7F04F9D4 24A529D4 */ addiu $a1, %lo(D_800529D4) # addiu $a1, $a1, 0x29d4 -/* 084508 7F04F9D8 0C0029FF */ jal string_load_parse_something -/* 08450C 7F04F9DC 02002025 */ move $a0, $s0 -/* 084510 7F04F9E0 8FBF0024 */ lw $ra, 0x24($sp) -.L7F04F9E4: -/* 084514 7F04F9E4 8FB00018 */ lw $s0, 0x18($sp) -/* 084518 7F04F9E8 8FB1001C */ lw $s1, 0x1c($sp) -/* 08451C 7F04F9EC 8FB20020 */ lw $s2, 0x20($sp) -/* 084520 7F04F9F0 03E00008 */ jr $ra -/* 084524 7F04F9F4 27BD0028 */ addiu $sp, $sp, 0x28 -) -#endif - - - - - -#ifdef NONMATCHING -void display_text_when_ammo_collected(void) { - -} -#else -#ifdef VERSION_US -GLOBAL_ASM( -.late_rodata - - -.text -glabel display_text_when_ammo_collected -/* 084528 7F04F9F8 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 08452C 7F04F9FC AFA40080 */ sw $a0, 0x80($sp) -/* 084530 7F04FA00 3C0E8005 */ lui $t6, %hi(D_800529D8) -/* 084534 7F04FA04 27A4001C */ addiu $a0, $sp, 0x1c -/* 084538 7F04FA08 00A03025 */ move $a2, $a1 -/* 08453C 7F04FA0C 25CE29D8 */ addiu $t6, %lo(D_800529D8) # addiu $t6, $t6, 0x29d8 -/* 084540 7F04FA10 8FA50080 */ lw $a1, 0x80($sp) -/* 084544 7F04FA14 AFBF0014 */ sw $ra, 0x14($sp) -/* 084548 7F04FA18 25D90060 */ addiu $t9, $t6, 0x60 -/* 08454C 7F04FA1C 00804025 */ move $t0, $a0 -.L7F04FA20: -/* 084550 7F04FA20 8DC10000 */ lw $at, ($t6) -/* 084554 7F04FA24 25CE000C */ addiu $t6, $t6, 0xc -/* 084558 7F04FA28 2508000C */ addiu $t0, $t0, 0xc -/* 08455C 7F04FA2C AD01FFF4 */ sw $at, -0xc($t0) -/* 084560 7F04FA30 8DC1FFF8 */ lw $at, -8($t6) -/* 084564 7F04FA34 AD01FFF8 */ sw $at, -8($t0) -/* 084568 7F04FA38 8DC1FFFC */ lw $at, -4($t6) -/* 08456C 7F04FA3C 15D9FFF8 */ bne $t6, $t9, .L7F04FA20 -/* 084570 7F04FA40 AD01FFFC */ sw $at, -4($t0) -/* 084574 7F04FA44 8DC10000 */ lw $at, ($t6) -/* 084578 7F04FA48 0FC13E48 */ jal display_ammo_type_collection_text -/* 08457C 7F04FA4C AD010000 */ sw $at, ($t0) -/* 084580 7F04FA50 0FC228F2 */ jal display_string_in_lower_left_corner -/* 084584 7F04FA54 27A4001C */ addiu $a0, $sp, 0x1c -/* 084588 7F04FA58 8FBF0014 */ lw $ra, 0x14($sp) -/* 08458C 7F04FA5C 27BD0080 */ addiu $sp, $sp, 0x80 -/* 084590 7F04FA60 03E00008 */ jr $ra -/* 084594 7F04FA64 00000000 */ nop -) -#endif -#ifdef VERSION_JP -GLOBAL_ASM( -.late_rodata - - -.text -glabel display_text_when_ammo_collected -/* 084528 7F04F9F8 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 08452C 7F04F9FC AFA40080 */ sw $a0, 0x80($sp) -/* 084530 7F04FA00 3C0E8005 */ lui $t6, %hi(D_800529D8) -/* 084534 7F04FA04 27A4001C */ addiu $a0, $sp, 0x1c -/* 084538 7F04FA08 00A03025 */ move $a2, $a1 -/* 08453C 7F04FA0C 25CE29D8 */ addiu $t6, %lo(D_800529D8) # addiu $t6, $t6, 0x29d8 -/* 084540 7F04FA10 8FA50080 */ lw $a1, 0x80($sp) -/* 084544 7F04FA14 AFBF0014 */ sw $ra, 0x14($sp) -/* 084548 7F04FA18 25D90060 */ addiu $t9, $t6, 0x60 -/* 08454C 7F04FA1C 00804025 */ move $t0, $a0 -.L7F04FA20: -/* 084550 7F04FA20 8DC10000 */ lw $at, ($t6) -/* 084554 7F04FA24 25CE000C */ addiu $t6, $t6, 0xc -/* 084558 7F04FA28 2508000C */ addiu $t0, $t0, 0xc -/* 08455C 7F04FA2C AD01FFF4 */ sw $at, -0xc($t0) -/* 084560 7F04FA30 8DC1FFF8 */ lw $at, -8($t6) -/* 084564 7F04FA34 AD01FFF8 */ sw $at, -8($t0) -/* 084568 7F04FA38 8DC1FFFC */ lw $at, -4($t6) -/* 08456C 7F04FA3C 15D9FFF8 */ bne $t6, $t9, .L7F04FA20 -/* 084570 7F04FA40 AD01FFFC */ sw $at, -4($t0) -/* 084574 7F04FA44 8DC10000 */ lw $at, ($t6) -/* 084578 7F04FA48 0FC13E48 */ jal display_ammo_type_collection_text -/* 08457C 7F04FA4C AD010000 */ sw $at, ($t0) -/* 084580 7F04FA50 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 084584 7F04FA54 27A4001C */ addiu $a0, $sp, 0x1c -/* 084588 7F04FA58 8FBF0014 */ lw $ra, 0x14($sp) -/* 08458C 7F04FA5C 27BD0080 */ addiu $sp, $sp, 0x80 -/* 084590 7F04FA60 03E00008 */ jr $ra -/* 084594 7F04FA64 00000000 */ nop -) -#endif -#endif - - - - -#ifdef NONMATCHING -void add_ammo_to_inventory(void) { - -} -#else -#ifdef VERSION_US -GLOBAL_ASM( -.late_rodata - -.text -glabel add_ammo_to_inventory -/* 084598 7F04FA68 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08459C 7F04FA6C AFBF0014 */ sw $ra, 0x14($sp) -/* 0845A0 7F04FA70 AFA50024 */ sw $a1, 0x24($sp) -/* 0845A4 7F04FA74 AFA60028 */ sw $a2, 0x28($sp) -/* 0845A8 7F04FA78 18A0006C */ blez $a1, .L7F04FC2C -/* 0845AC 7F04FA7C AFA7002C */ sw $a3, 0x2c($sp) -/* 0845B0 7F04FA80 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 0845B4 7F04FA84 AFA40020 */ sw $a0, 0x20($sp) -/* 0845B8 7F04FA88 8FA40020 */ lw $a0, 0x20($sp) -/* 0845BC 7F04FA8C 0FC1A4B5 */ jal get_max_ammo_for_type -/* 0845C0 7F04FA90 AFA2001C */ sw $v0, 0x1c($sp) -/* 0845C4 7F04FA94 8FAF001C */ lw $t7, 0x1c($sp) -/* 0845C8 7F04FA98 8FA40020 */ lw $a0, 0x20($sp) -/* 0845CC 7F04FA9C 01E2082A */ slt $at, $t7, $v0 -/* 0845D0 7F04FAA0 50200063 */ beql $at, $zero, .L7F04FC30 -/* 0845D4 7F04FAA4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0845D8 7F04FAA8 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 0845DC 7F04FAAC AFA40020 */ sw $a0, 0x20($sp) -/* 0845E0 7F04FAB0 8FB80024 */ lw $t8, 0x24($sp) -/* 0845E4 7F04FAB4 8FA40020 */ lw $a0, 0x20($sp) -/* 0845E8 7F04FAB8 0FC1A44C */ jal give_cur_player_ammo -/* 0845EC 7F04FABC 00582821 */ addu $a1, $v0, $t8 -/* 0845F0 7F04FAC0 8FB9002C */ lw $t9, 0x2c($sp) -/* 0845F4 7F04FAC4 8FA40020 */ lw $a0, 0x20($sp) -/* 0845F8 7F04FAC8 8FA50024 */ lw $a1, 0x24($sp) -/* 0845FC 7F04FACC 53200005 */ beql $t9, $zero, .L7F04FAE4 -/* 084600 7F04FAD0 8FA80028 */ lw $t0, 0x28($sp) -/* 084604 7F04FAD4 0FC13E7E */ jal display_text_when_ammo_collected -/* 084608 7F04FAD8 AFA40020 */ sw $a0, 0x20($sp) -/* 08460C 7F04FADC 8FA40020 */ lw $a0, 0x20($sp) -/* 084610 7F04FAE0 8FA80028 */ lw $t0, 0x28($sp) -.L7F04FAE4: -/* 084614 7F04FAE4 51000005 */ beql $t0, $zero, .L7F04FAFC -/* 084618 7F04FAE8 24010005 */ li $at, 5 -/* 08461C 7F04FAEC 0FC13DE2 */ jal set_sound_effect_for_ammo_collection -/* 084620 7F04FAF0 AFA40020 */ sw $a0, 0x20($sp) -/* 084624 7F04FAF4 8FA40020 */ lw $a0, 0x20($sp) -/* 084628 7F04FAF8 24010005 */ li $at, 5 -.L7F04FAFC: -/* 08462C 7F04FAFC 54810006 */ bnel $a0, $at, .L7F04FB18 -/* 084630 7F04FB00 24010007 */ li $at, 7 -/* 084634 7F04FB04 0FC23122 */ jal add_item_to_inventory -/* 084638 7F04FB08 2404001A */ li $a0, 26 -/* 08463C 7F04FB0C 10000048 */ b .L7F04FC30 -/* 084640 7F04FB10 8FBF0014 */ lw $ra, 0x14($sp) -/* 084644 7F04FB14 24010007 */ li $at, 7 -.L7F04FB18: -/* 084648 7F04FB18 54810008 */ bnel $a0, $at, .L7F04FB3C -/* 08464C 7F04FB1C 24010008 */ li $at, 8 -/* 084650 7F04FB20 0FC23122 */ jal add_item_to_inventory -/* 084654 7F04FB24 2404001D */ li $a0, 29 -/* 084658 7F04FB28 0FC23122 */ jal add_item_to_inventory -/* 08465C 7F04FB2C 2404001E */ li $a0, 30 -/* 084660 7F04FB30 1000003F */ b .L7F04FC30 -/* 084664 7F04FB34 8FBF0014 */ lw $ra, 0x14($sp) -/* 084668 7F04FB38 24010008 */ li $at, 8 -.L7F04FB3C: -/* 08466C 7F04FB3C 54810006 */ bnel $a0, $at, .L7F04FB58 -/* 084670 7F04FB40 24010009 */ li $at, 9 -/* 084674 7F04FB44 0FC23122 */ jal add_item_to_inventory -/* 084678 7F04FB48 2404001C */ li $a0, 28 -/* 08467C 7F04FB4C 10000038 */ b .L7F04FC30 -/* 084680 7F04FB50 8FBF0014 */ lw $ra, 0x14($sp) -/* 084684 7F04FB54 24010009 */ li $at, 9 -.L7F04FB58: -/* 084688 7F04FB58 54810006 */ bnel $a0, $at, .L7F04FB74 -/* 08468C 7F04FB5C 2401000A */ li $at, 10 -/* 084690 7F04FB60 0FC23122 */ jal add_item_to_inventory -/* 084694 7F04FB64 2404001B */ li $a0, 27 -/* 084698 7F04FB68 10000031 */ b .L7F04FC30 -/* 08469C 7F04FB6C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0846A0 7F04FB70 2401000A */ li $at, 10 -.L7F04FB74: -/* 0846A4 7F04FB74 54810006 */ bnel $a0, $at, .L7F04FB90 -/* 0846A8 7F04FB78 24010010 */ li $at, 16 -/* 0846AC 7F04FB7C 0FC23122 */ jal add_item_to_inventory -/* 0846B0 7F04FB80 24040003 */ li $a0, 3 -/* 0846B4 7F04FB84 1000002A */ b .L7F04FC30 -/* 0846B8 7F04FB88 8FBF0014 */ lw $ra, 0x14($sp) -/* 0846BC 7F04FB8C 24010010 */ li $at, 16 -.L7F04FB90: -/* 0846C0 7F04FB90 54810006 */ bnel $a0, $at, .L7F04FBAC -/* 0846C4 7F04FB94 24010014 */ li $at, 20 -/* 0846C8 7F04FB98 0FC23122 */ jal add_item_to_inventory -/* 0846CC 7F04FB9C 24040021 */ li $a0, 33 -/* 0846D0 7F04FBA0 10000023 */ b .L7F04FC30 -/* 0846D4 7F04FBA4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0846D8 7F04FBA8 24010014 */ li $at, 20 -.L7F04FBAC: -/* 0846DC 7F04FBAC 54810006 */ bnel $a0, $at, .L7F04FBC8 -/* 0846E0 7F04FBB0 24010015 */ li $at, 21 -/* 0846E4 7F04FBB4 0FC23122 */ jal add_item_to_inventory -/* 0846E8 7F04FBB8 2404002F */ li $a0, 47 -/* 0846EC 7F04FBBC 1000001C */ b .L7F04FC30 -/* 0846F0 7F04FBC0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0846F4 7F04FBC4 24010015 */ li $at, 21 -.L7F04FBC8: -/* 0846F8 7F04FBC8 54810006 */ bnel $a0, $at, .L7F04FBE4 -/* 0846FC 7F04FBCC 24010016 */ li $at, 22 -/* 084700 7F04FBD0 0FC23122 */ jal add_item_to_inventory -/* 084704 7F04FBD4 24040030 */ li $a0, 48 -/* 084708 7F04FBD8 10000015 */ b .L7F04FC30 -/* 08470C 7F04FBDC 8FBF0014 */ lw $ra, 0x14($sp) -/* 084710 7F04FBE0 24010016 */ li $at, 22 -.L7F04FBE4: -/* 084714 7F04FBE4 54810006 */ bnel $a0, $at, .L7F04FC00 -/* 084718 7F04FBE8 2401001D */ li $at, 29 -/* 08471C 7F04FBEC 0FC23122 */ jal add_item_to_inventory -/* 084720 7F04FBF0 2404003D */ li $a0, 61 -/* 084724 7F04FBF4 1000000E */ b .L7F04FC30 -/* 084728 7F04FBF8 8FBF0014 */ lw $ra, 0x14($sp) -/* 08472C 7F04FBFC 2401001D */ li $at, 29 -.L7F04FC00: -/* 084730 7F04FC00 54810006 */ bnel $a0, $at, .L7F04FC1C -/* 084734 7F04FC04 24010017 */ li $at, 23 -/* 084738 7F04FC08 0FC23122 */ jal add_item_to_inventory -/* 08473C 7F04FC0C 24040058 */ li $a0, 88 -/* 084740 7F04FC10 10000007 */ b .L7F04FC30 -/* 084744 7F04FC14 8FBF0014 */ lw $ra, 0x14($sp) -/* 084748 7F04FC18 24010017 */ li $at, 23 -.L7F04FC1C: -/* 08474C 7F04FC1C 54810004 */ bnel $a0, $at, .L7F04FC30 -/* 084750 7F04FC20 8FBF0014 */ lw $ra, 0x14($sp) -/* 084754 7F04FC24 0FC23122 */ jal add_item_to_inventory -/* 084758 7F04FC28 24040022 */ li $a0, 34 -.L7F04FC2C: -/* 08475C 7F04FC2C 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04FC30: -/* 084760 7F04FC30 27BD0020 */ addiu $sp, $sp, 0x20 -/* 084764 7F04FC34 03E00008 */ jr $ra -/* 084768 7F04FC38 00000000 */ nop -) -#endif - -#ifdef VERSION_JP -GLOBAL_ASM( -.text -glabel add_ammo_to_inventory -/* 0849DC 7F04FE6C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0849E0 7F04FE70 AFBF0014 */ sw $ra, 0x14($sp) -/* 0849E4 7F04FE74 AFA50024 */ sw $a1, 0x24($sp) -/* 0849E8 7F04FE78 AFA60028 */ sw $a2, 0x28($sp) -/* 0849EC 7F04FE7C 18A0006C */ blez $a1, .L7F050030 -/* 0849F0 7F04FE80 AFA7002C */ sw $a3, 0x2c($sp) -/* 0849F4 7F04FE84 0FC1A60B */ jal check_cur_player_ammo_amount_in_inventory -/* 0849F8 7F04FE88 AFA40020 */ sw $a0, 0x20($sp) -/* 0849FC 7F04FE8C 8FA40020 */ lw $a0, 0x20($sp) -/* 084A00 7F04FE90 0FC1A630 */ jal get_max_ammo_for_type -/* 084A04 7F04FE94 AFA2001C */ sw $v0, 0x1c($sp) -/* 084A08 7F04FE98 8FAF001C */ lw $t7, 0x1c($sp) -/* 084A0C 7F04FE9C 8FA40020 */ lw $a0, 0x20($sp) -/* 084A10 7F04FEA0 01E2082A */ slt $at, $t7, $v0 -/* 084A14 7F04FEA4 50200009 */ beql $at, $zero, .L7F04FECC -/* 084A18 7F04FEA8 8FB9002C */ lw $t9, 0x2c($sp) -/* 084A1C 7F04FEAC 0FC1A60B */ jal check_cur_player_ammo_amount_in_inventory -/* 084A20 7F04FEB0 AFA40020 */ sw $a0, 0x20($sp) -/* 084A24 7F04FEB4 8FB80024 */ lw $t8, 0x24($sp) -/* 084A28 7F04FEB8 8FA40020 */ lw $a0, 0x20($sp) -/* 084A2C 7F04FEBC 0FC1A5C7 */ jal give_cur_player_ammo -/* 084A30 7F04FEC0 00582821 */ addu $a1, $v0, $t8 -/* 084A34 7F04FEC4 8FA40020 */ lw $a0, 0x20($sp) -/* 084A38 7F04FEC8 8FB9002C */ lw $t9, 0x2c($sp) -.L7F04FECC: -/* 084A3C 7F04FECC 8FA50024 */ lw $a1, 0x24($sp) -/* 084A40 7F04FED0 53200005 */ beql $t9, $zero, .L7F04FEE8 -/* 084A44 7F04FED4 8FA80028 */ lw $t0, 0x28($sp) -/* 084A48 7F04FED8 0FC13F7F */ jal display_text_when_ammo_collected -/* 084A4C 7F04FEDC AFA40020 */ sw $a0, 0x20($sp) -/* 084A50 7F04FEE0 8FA40020 */ lw $a0, 0x20($sp) -/* 084A54 7F04FEE4 8FA80028 */ lw $t0, 0x28($sp) -.L7F04FEE8: -/* 084A58 7F04FEE8 51000005 */ beql $t0, $zero, .L7F04FF00 -/* 084A5C 7F04FEEC 24010005 */ li $at, 5 -/* 084A60 7F04FEF0 0FC13EE3 */ jal set_sound_effect_for_ammo_collection -/* 084A64 7F04FEF4 AFA40020 */ sw $a0, 0x20($sp) -/* 084A68 7F04FEF8 8FA40020 */ lw $a0, 0x20($sp) -/* 084A6C 7F04FEFC 24010005 */ li $at, 5 -.L7F04FF00: -/* 084A70 7F04FF00 54810006 */ bnel $a0, $at, .L7F04FF1C -/* 084A74 7F04FF04 24010007 */ li $at, 7 -/* 084A78 7F04FF08 0FC2335A */ jal add_item_to_inventory -/* 084A7C 7F04FF0C 2404001A */ li $a0, 26 -/* 084A80 7F04FF10 10000048 */ b .L7F050034 -/* 084A84 7F04FF14 8FBF0014 */ lw $ra, 0x14($sp) -/* 084A88 7F04FF18 24010007 */ li $at, 7 -.L7F04FF1C: -/* 084A8C 7F04FF1C 54810008 */ bnel $a0, $at, .L7F04FF40 -/* 084A90 7F04FF20 24010008 */ li $at, 8 -/* 084A94 7F04FF24 0FC2335A */ jal add_item_to_inventory -/* 084A98 7F04FF28 2404001D */ li $a0, 29 -/* 084A9C 7F04FF2C 0FC2335A */ jal add_item_to_inventory -/* 084AA0 7F04FF30 2404001E */ li $a0, 30 -/* 084AA4 7F04FF34 1000003F */ b .L7F050034 -/* 084AA8 7F04FF38 8FBF0014 */ lw $ra, 0x14($sp) -/* 084AAC 7F04FF3C 24010008 */ li $at, 8 -.L7F04FF40: -/* 084AB0 7F04FF40 54810006 */ bnel $a0, $at, .L7F04FF5C -/* 084AB4 7F04FF44 24010009 */ li $at, 9 -/* 084AB8 7F04FF48 0FC2335A */ jal add_item_to_inventory -/* 084ABC 7F04FF4C 2404001C */ li $a0, 28 -/* 084AC0 7F04FF50 10000038 */ b .L7F050034 -/* 084AC4 7F04FF54 8FBF0014 */ lw $ra, 0x14($sp) -/* 084AC8 7F04FF58 24010009 */ li $at, 9 -.L7F04FF5C: -/* 084ACC 7F04FF5C 54810006 */ bnel $a0, $at, .L7F04FF78 -/* 084AD0 7F04FF60 2401000A */ li $at, 10 -/* 084AD4 7F04FF64 0FC2335A */ jal add_item_to_inventory -/* 084AD8 7F04FF68 2404001B */ li $a0, 27 -/* 084ADC 7F04FF6C 10000031 */ b .L7F050034 -/* 084AE0 7F04FF70 8FBF0014 */ lw $ra, 0x14($sp) -/* 084AE4 7F04FF74 2401000A */ li $at, 10 -.L7F04FF78: -/* 084AE8 7F04FF78 54810006 */ bnel $a0, $at, .L7F04FF94 -/* 084AEC 7F04FF7C 24010010 */ li $at, 16 -/* 084AF0 7F04FF80 0FC2335A */ jal add_item_to_inventory -/* 084AF4 7F04FF84 24040003 */ li $a0, 3 -/* 084AF8 7F04FF88 1000002A */ b .L7F050034 -/* 084AFC 7F04FF8C 8FBF0014 */ lw $ra, 0x14($sp) -/* 084B00 7F04FF90 24010010 */ li $at, 16 -.L7F04FF94: -/* 084B04 7F04FF94 54810006 */ bnel $a0, $at, .L7F04FFB0 -/* 084B08 7F04FF98 24010014 */ li $at, 20 -/* 084B0C 7F04FF9C 0FC2335A */ jal add_item_to_inventory -/* 084B10 7F04FFA0 24040021 */ li $a0, 33 -/* 084B14 7F04FFA4 10000023 */ b .L7F050034 -/* 084B18 7F04FFA8 8FBF0014 */ lw $ra, 0x14($sp) -/* 084B1C 7F04FFAC 24010014 */ li $at, 20 -.L7F04FFB0: -/* 084B20 7F04FFB0 54810006 */ bnel $a0, $at, .L7F04FFCC -/* 084B24 7F04FFB4 24010015 */ li $at, 21 -/* 084B28 7F04FFB8 0FC2335A */ jal add_item_to_inventory -/* 084B2C 7F04FFBC 2404002F */ li $a0, 47 -/* 084B30 7F04FFC0 1000001C */ b .L7F050034 -/* 084B34 7F04FFC4 8FBF0014 */ lw $ra, 0x14($sp) -/* 084B38 7F04FFC8 24010015 */ li $at, 21 -.L7F04FFCC: -/* 084B3C 7F04FFCC 54810006 */ bnel $a0, $at, .L7F04FFE8 -/* 084B40 7F04FFD0 24010016 */ li $at, 22 -/* 084B44 7F04FFD4 0FC2335A */ jal add_item_to_inventory -/* 084B48 7F04FFD8 24040030 */ li $a0, 48 -/* 084B4C 7F04FFDC 10000015 */ b .L7F050034 -/* 084B50 7F04FFE0 8FBF0014 */ lw $ra, 0x14($sp) -/* 084B54 7F04FFE4 24010016 */ li $at, 22 -.L7F04FFE8: -/* 084B58 7F04FFE8 54810006 */ bnel $a0, $at, .L7F050004 -/* 084B5C 7F04FFEC 2401001D */ li $at, 29 -/* 084B60 7F04FFF0 0FC2335A */ jal add_item_to_inventory -/* 084B64 7F04FFF4 2404003D */ li $a0, 61 -/* 084B68 7F04FFF8 1000000E */ b .L7F050034 -/* 084B6C 7F04FFFC 8FBF0014 */ lw $ra, 0x14($sp) -/* 084B70 7F050000 2401001D */ li $at, 29 -.L7F050004: -/* 084B74 7F050004 54810006 */ bnel $a0, $at, .L7F050020 -/* 084B78 7F050008 24010017 */ li $at, 23 -/* 084B7C 7F05000C 0FC2335A */ jal add_item_to_inventory -/* 084B80 7F050010 24040058 */ li $a0, 88 -/* 084B84 7F050014 10000007 */ b .L7F050034 -/* 084B88 7F050018 8FBF0014 */ lw $ra, 0x14($sp) -/* 084B8C 7F05001C 24010017 */ li $at, 23 -.L7F050020: -/* 084B90 7F050020 54810004 */ bnel $a0, $at, .L7F050034 -/* 084B94 7F050024 8FBF0014 */ lw $ra, 0x14($sp) -/* 084B98 7F050028 0FC2335A */ jal add_item_to_inventory -/* 084B9C 7F05002C 24040022 */ li $a0, 34 -.L7F050030: -/* 084BA0 7F050030 8FBF0014 */ lw $ra, 0x14($sp) -.L7F050034: -/* 084BA4 7F050034 27BD0020 */ addiu $sp, $sp, 0x20 -/* 084BA8 7F050038 03E00008 */ jr $ra -/* 084BAC 7F05003C 00000000 */ nop -) -#endif - -#endif - - - - -#ifdef NONMATCHING -void get_ammo_in_magazine(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80053060*/ -glabel ammo_collected_from_magazine -.word magazine_has_10_rounds_type1 -.word magazine_has_10_rounds_type2 -.word magazine_has_10_rounds_type3 -.word magazine_has_5_rounds_type4 -.word magazine_has_default_ammo_rounds -.word magazine_has_default_ammo_rounds -.word magazine_has_default_ammo_rounds -.word magazine_has_default_ammo_rounds -.word magazine_has_default_ammo_rounds -.word magazine_has_default_ammo_rounds -.word magazine_has_default_ammo_rounds -.word magazine_has_5_rounds_typeC -.word magazine_has_3_rounds_typeD -.word magazine_has_4_rounds_typeE - -.text -glabel get_ammo_in_magazine -/* 08476C 7F04FC3C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 084770 7F04FC40 AFBF0014 */ sw $ra, 0x14($sp) -/* 084774 7F04FC44 8C8E0080 */ lw $t6, 0x80($a0) -/* 084778 7F04FC48 24030001 */ li $v1, 1 -/* 08477C 7F04FC4C 25CFFFFF */ addiu $t7, $t6, -1 -/* 084780 7F04FC50 2DE1000E */ sltiu $at, $t7, 0xe -/* 084784 7F04FC54 10200013 */ beqz $at, .L7F04FCA4 -/* 084788 7F04FC58 000F7880 */ sll $t7, $t7, 2 -/* 08478C 7F04FC5C 3C018005 */ lui $at, %hi(ammo_collected_from_magazine) -/* 084790 7F04FC60 002F0821 */ addu $at, $at, $t7 -/* 084794 7F04FC64 8C2F3060 */ lw $t7, %lo(ammo_collected_from_magazine)($at) -/* 084798 7F04FC68 01E00008 */ jr $t7 -/* 08479C 7F04FC6C 00000000 */ nop -magazine_has_10_rounds_type1: -/* 0847A0 7F04FC70 1000000C */ b .L7F04FCA4 -/* 0847A4 7F04FC74 2403000A */ li $v1, 10 -magazine_has_10_rounds_type2: -/* 0847A8 7F04FC78 1000000A */ b .L7F04FCA4 -/* 0847AC 7F04FC7C 2403000A */ li $v1, 10 -magazine_has_10_rounds_type3: -/* 0847B0 7F04FC80 10000008 */ b .L7F04FCA4 -/* 0847B4 7F04FC84 2403000A */ li $v1, 10 -magazine_has_5_rounds_type4: -/* 0847B8 7F04FC88 10000006 */ b .L7F04FCA4 -/* 0847BC 7F04FC8C 24030005 */ li $v1, 5 -magazine_has_5_rounds_typeC: -/* 0847C0 7F04FC90 10000004 */ b .L7F04FCA4 -/* 0847C4 7F04FC94 24030005 */ li $v1, 5 -magazine_has_3_rounds_typeD: -/* 0847C8 7F04FC98 10000002 */ b .L7F04FCA4 -/* 0847CC 7F04FC9C 24030003 */ li $v1, 3 -magazine_has_4_rounds_typeE: -/* 0847D0 7F04FCA0 24030004 */ li $v1, 4 -magazine_has_default_ammo_rounds: -.L7F04FCA4: -/* 0847D4 7F04FCA4 28610002 */ slti $at, $v1, 2 -/* 0847D8 7F04FCA8 5420000F */ bnezl $at, .L7F04FCE8 -/* 0847DC 7F04FCAC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0847E0 7F04FCB0 0FC26919 */ jal get_num_players -/* 0847E4 7F04FCB4 AFA3001C */ sw $v1, 0x1c($sp) -/* 0847E8 7F04FCB8 24010001 */ li $at, 1 -/* 0847EC 7F04FCBC 14410009 */ bne $v0, $at, .L7F04FCE4 -/* 0847F0 7F04FCC0 8FA3001C */ lw $v1, 0x1c($sp) -/* 0847F4 7F04FCC4 44832000 */ mtc1 $v1, $f4 -/* 0847F8 7F04FCC8 3C018003 */ lui $at, %hi(solo_ammo_multiplier) -/* 0847FC 7F04FCCC C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) -/* 084800 7F04FCD0 468021A0 */ cvt.s.w $f6, $f4 -/* 084804 7F04FCD4 46083282 */ mul.s $f10, $f6, $f8 -/* 084808 7F04FCD8 4600540D */ trunc.w.s $f16, $f10 -/* 08480C 7F04FCDC 44038000 */ mfc1 $v1, $f16 -/* 084810 7F04FCE0 00000000 */ nop -.L7F04FCE4: -/* 084814 7F04FCE4 8FBF0014 */ lw $ra, 0x14($sp) -.L7F04FCE8: -/* 084818 7F04FCE8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 08481C 7F04FCEC 00601025 */ move $v0, $v1 -/* 084820 7F04FCF0 03E00008 */ jr $ra -/* 084824 7F04FCF4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void ammo_collected_from_weapon(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80053098*/ -glabel ammo_in_weapon -.word weapon_has_10_rounds_type1 -.word weapon_has_10_rounds_type2 -.word weapon_has_10_rounds_type3 -.word weapon_has_5_rounds_type4 -.word weapon_has_default_ammo -.word weapon_has_default_ammo -.word weapon_has_default_ammo -.word weapon_has_default_ammo -.word weapon_has_default_ammo -.word weapon_has_default_ammo -.word weapon_has_3_rounds_typeB -.word weapon_has_5_rounds_typeC -.word weapon_has_3_rounds_typeD -.word weapon_has_4_rounds_typeE - -.text -glabel ammo_collected_from_weapon -/* 084828 7F04FCF8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08482C 7F04FCFC AFBF0014 */ sw $ra, 0x14($sp) -/* 084830 7F04FD00 AFA40020 */ sw $a0, 0x20($sp) -/* 084834 7F04FD04 0FC1A50B */ jal get_ammo_type_for_weapon -/* 084838 7F04FD08 80840080 */ lb $a0, 0x80($a0) -/* 08483C 7F04FD0C 8FAF0020 */ lw $t7, 0x20($sp) -/* 084840 7F04FD10 2448FFFF */ addiu $t0, $v0, -1 -/* 084844 7F04FD14 24030001 */ li $v1, 1 -/* 084848 7F04FD18 8DF80008 */ lw $t8, 8($t7) -/* 08484C 7F04FD1C 2D01000E */ sltiu $at, $t0, 0xe -/* 084850 7F04FD20 0018C840 */ sll $t9, $t8, 1 -/* 084854 7F04FD24 07210003 */ bgez $t9, .L7F04FD34 -/* 084858 7F04FD28 00000000 */ nop -/* 08485C 7F04FD2C 10000028 */ b .L7F04FDD0 -/* 084860 7F04FD30 00001025 */ move $v0, $zero -.L7F04FD34: -/* 084864 7F04FD34 10200015 */ beqz $at, .L7F04FD8C -/* 084868 7F04FD38 00084080 */ sll $t0, $t0, 2 -/* 08486C 7F04FD3C 3C018005 */ lui $at, %hi(ammo_in_weapon) -/* 084870 7F04FD40 00280821 */ addu $at, $at, $t0 -/* 084874 7F04FD44 8C283098 */ lw $t0, %lo(ammo_in_weapon)($at) -/* 084878 7F04FD48 01000008 */ jr $t0 -/* 08487C 7F04FD4C 00000000 */ nop -weapon_has_10_rounds_type1: -/* 084880 7F04FD50 1000000E */ b .L7F04FD8C -/* 084884 7F04FD54 2403000A */ li $v1, 10 -weapon_has_10_rounds_type2: -/* 084888 7F04FD58 1000000C */ b .L7F04FD8C -/* 08488C 7F04FD5C 2403000A */ li $v1, 10 -weapon_has_10_rounds_type3: -/* 084890 7F04FD60 1000000A */ b .L7F04FD8C -/* 084894 7F04FD64 2403000A */ li $v1, 10 -weapon_has_5_rounds_type4: -/* 084898 7F04FD68 10000008 */ b .L7F04FD8C -/* 08489C 7F04FD6C 24030005 */ li $v1, 5 -weapon_has_5_rounds_typeC: -/* 0848A0 7F04FD70 10000006 */ b .L7F04FD8C -/* 0848A4 7F04FD74 24030005 */ li $v1, 5 -weapon_has_3_rounds_typeD: -/* 0848A8 7F04FD78 10000004 */ b .L7F04FD8C -/* 0848AC 7F04FD7C 24030003 */ li $v1, 3 -weapon_has_4_rounds_typeE: -/* 0848B0 7F04FD80 10000002 */ b .L7F04FD8C -/* 0848B4 7F04FD84 24030004 */ li $v1, 4 -weapon_has_3_rounds_typeB: -/* 0848B8 7F04FD88 24030003 */ li $v1, 3 -weapon_has_default_ammo: -.L7F04FD8C: -/* 0848BC 7F04FD8C 28610002 */ slti $at, $v1, 2 -/* 0848C0 7F04FD90 5420000F */ bnezl $at, .L7F04FDD0 -/* 0848C4 7F04FD94 00601025 */ move $v0, $v1 -/* 0848C8 7F04FD98 0FC26919 */ jal get_num_players -/* 0848CC 7F04FD9C AFA30018 */ sw $v1, 0x18($sp) -/* 0848D0 7F04FDA0 24010001 */ li $at, 1 -/* 0848D4 7F04FDA4 14410009 */ bne $v0, $at, .L7F04FDCC -/* 0848D8 7F04FDA8 8FA30018 */ lw $v1, 0x18($sp) -/* 0848DC 7F04FDAC 44832000 */ mtc1 $v1, $f4 -/* 0848E0 7F04FDB0 3C018003 */ lui $at, %hi(solo_ammo_multiplier) -/* 0848E4 7F04FDB4 C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) -/* 0848E8 7F04FDB8 468021A0 */ cvt.s.w $f6, $f4 -/* 0848EC 7F04FDBC 46083282 */ mul.s $f10, $f6, $f8 -/* 0848F0 7F04FDC0 4600540D */ trunc.w.s $f16, $f10 -/* 0848F4 7F04FDC4 44038000 */ mfc1 $v1, $f16 -/* 0848F8 7F04FDC8 00000000 */ nop -.L7F04FDCC: -/* 0848FC 7F04FDCC 00601025 */ move $v0, $v1 -.L7F04FDD0: -/* 084900 7F04FDD0 8FBF0014 */ lw $ra, 0x14($sp) -/* 084904 7F04FDD4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 084908 7F04FDD8 03E00008 */ jr $ra -/* 08490C 7F04FDDC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void generate_language_specific_text_for_weapon(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:800530D0*/ -glabel jpt_800530D0 -.word weapon_collect_msg_a_hunting_knife -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_a_pp7 -.word weapon_collect_msg_a_silenced_pp7 -.word weapon_collect_msg_a_dd44 -.word weapon_collect_msg_a_klobb -.word weapon_collect_msg_a_kf7 -.word weapon_collect_msg_a_zmg -.word weapon_collect_msg_a_d5k -.word weapon_collect_msg_a_silenced_d5k -.word weapon_collect_msg_a_phantom -.word weapon_collect_msg_a_ar33 -.word weapon_collect_msg_a_rcp90 -.word weapon_collect_msg_a_shotgun -.word weapon_collect_msg_an_auto_shotgun -.word weapon_collect_msg_a_sniper -.word weapon_collect_msg_a_cougar_magnum -.word weapon_collect_msg_a_golden_gun -.word weapon_collect_msg_a_silver_pp7 -.word weapon_collect_msg_a_gold_pp7 -.word weapon_collect_msg_a_moonraker_laser -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_grenade_launcher -.word weapon_collect_msg_a_rocket_launcher -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_a_flare_pistol -.word weapon_collect_msg_a_piton_gun -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_keycard -.word weapon_collect_msg_a_yale_key -.word weapon_collect_msg_a_bolt_key -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_a_new_weapon -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_BLANK -.word weapon_collect_msg_BLANK - -.text -glabel generate_language_specific_text_for_weapon -/* 084910 7F04FDE0 3C0E8005 */ lui $t6, %hi(j_text_trigger) -/* 084914 7F04FDE4 8DCE84D0 */ lw $t6, %lo(j_text_trigger)($t6) -/* 084918 7F04FDE8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 08491C 7F04FDEC AFB00018 */ sw $s0, 0x18($sp) -/* 084920 7F04FDF0 00808025 */ move $s0, $a0 -/* 084924 7F04FDF4 AFBF001C */ sw $ra, 0x1c($sp) -/* 084928 7F04FDF8 AFA5002C */ sw $a1, 0x2c($sp) -/* 08492C 7F04FDFC 11C0000B */ beqz $t6, .L7F04FE2C -/* 084930 7F04FE00 AFA00024 */ sw $zero, 0x24($sp) -/* 084934 7F04FE04 3C058005 */ lui $a1, %hi(D_80052A3C) -/* 084938 7F04FE08 0C0029DC */ jal textpointer_load_parse_something -/* 08493C 7F04FE0C 24A52A3C */ addiu $a1, %lo(D_80052A3C) # addiu $a1, $a1, 0x2a3c -/* 084940 7F04FE10 0FC26919 */ jal get_num_players -/* 084944 7F04FE14 00000000 */ nop -/* 084948 7F04FE18 28410003 */ slti $at, $v0, 3 -/* 08494C 7F04FE1C 1420000D */ bnez $at, .L7F04FE54 -/* 084950 7F04FE20 240F0001 */ li $t7, 1 -/* 084954 7F04FE24 1000000B */ b .L7F04FE54 -/* 084958 7F04FE28 AFAF0024 */ sw $t7, 0x24($sp) -.L7F04FE2C: -/* 08495C 7F04FE2C 0FC26919 */ jal get_num_players -/* 084960 7F04FE30 00000000 */ nop -/* 084964 7F04FE34 28410003 */ slti $at, $v0, 3 -/* 084968 7F04FE38 50200007 */ beql $at, $zero, .L7F04FE58 -/* 08496C 7F04FE3C 8FB8002C */ lw $t8, 0x2c($sp) -/* 084970 7F04FE40 0FC30776 */ jal get_textptr_for_textID -/* 084974 7F04FE44 3404A400 */ li $a0, 41984 -/* 084978 7F04FE48 02002025 */ move $a0, $s0 -/* 08497C 7F04FE4C 0C0029DC */ jal textpointer_load_parse_something -/* 084980 7F04FE50 00402825 */ move $a1, $v0 -.L7F04FE54: -/* 084984 7F04FE54 8FB8002C */ lw $t8, 0x2c($sp) -.L7F04FE58: -/* 084988 7F04FE58 2719FFFE */ addiu $t9, $t8, -2 -/* 08498C 7F04FE5C 2F210057 */ sltiu $at, $t9, 0x57 -/* 084990 7F04FE60 102000CB */ beqz $at, .L7F050190 -/* 084994 7F04FE64 0019C880 */ sll $t9, $t9, 2 -/* 084998 7F04FE68 3C018005 */ lui $at, %hi(jpt_800530D0) -/* 08499C 7F04FE6C 00390821 */ addu $at, $at, $t9 -/* 0849A0 7F04FE70 8C3930D0 */ lw $t9, %lo(jpt_800530D0)($at) -/* 0849A4 7F04FE74 03200008 */ jr $t9 -/* 0849A8 7F04FE78 00000000 */ nop -weapon_collect_msg_BLANK: -/* 0849AC 7F04FE7C 0FC1A50B */ jal get_ammo_type_for_weapon -/* 0849B0 7F04FE80 8FA4002C */ lw $a0, 0x2c($sp) -/* 0849B4 7F04FE84 02002025 */ move $a0, $s0 -/* 0849B8 7F04FE88 00402825 */ move $a1, $v0 -/* 0849BC 7F04FE8C 0FC13E48 */ jal display_ammo_type_collection_text -/* 0849C0 7F04FE90 24060001 */ li $a2, 1 -/* 0849C4 7F04FE94 100000DF */ b .L7F050214 -/* 0849C8 7F04FE98 8FBF001C */ lw $ra, 0x1c($sp) -weapon_collect_msg_a_hunting_knife: -/* 0849CC 7F04FE9C 0FC30776 */ jal get_textptr_for_textID -/* 0849D0 7F04FEA0 3404A420 */ li $a0, 42016 -/* 0849D4 7F04FEA4 02002025 */ move $a0, $s0 -/* 0849D8 7F04FEA8 0C0029FF */ jal string_load_parse_something -/* 0849DC 7F04FEAC 00402825 */ move $a1, $v0 -/* 0849E0 7F04FEB0 100000BC */ b .L7F0501A4 -/* 0849E4 7F04FEB4 00000000 */ nop -weapon_collect_msg_a_pp7: -/* 0849E8 7F04FEB8 0FC30776 */ jal get_textptr_for_textID -/* 0849EC 7F04FEBC 3404A421 */ li $a0, 42017 -/* 0849F0 7F04FEC0 02002025 */ move $a0, $s0 -/* 0849F4 7F04FEC4 0C0029FF */ jal string_load_parse_something -/* 0849F8 7F04FEC8 00402825 */ move $a1, $v0 -/* 0849FC 7F04FECC 100000B5 */ b .L7F0501A4 -/* 084A00 7F04FED0 00000000 */ nop -weapon_collect_msg_a_silenced_pp7: -/* 084A04 7F04FED4 0FC30776 */ jal get_textptr_for_textID -/* 084A08 7F04FED8 3404A422 */ li $a0, 42018 -/* 084A0C 7F04FEDC 02002025 */ move $a0, $s0 -/* 084A10 7F04FEE0 0C0029FF */ jal string_load_parse_something -/* 084A14 7F04FEE4 00402825 */ move $a1, $v0 -/* 084A18 7F04FEE8 100000AE */ b .L7F0501A4 -/* 084A1C 7F04FEEC 00000000 */ nop -weapon_collect_msg_a_dd44: -/* 084A20 7F04FEF0 0FC30776 */ jal get_textptr_for_textID -/* 084A24 7F04FEF4 3404A423 */ li $a0, 42019 -/* 084A28 7F04FEF8 02002025 */ move $a0, $s0 -/* 084A2C 7F04FEFC 0C0029FF */ jal string_load_parse_something -/* 084A30 7F04FF00 00402825 */ move $a1, $v0 -/* 084A34 7F04FF04 100000A7 */ b .L7F0501A4 -/* 084A38 7F04FF08 00000000 */ nop -weapon_collect_msg_a_klobb: -/* 084A3C 7F04FF0C 0FC30776 */ jal get_textptr_for_textID -/* 084A40 7F04FF10 3404A424 */ li $a0, 42020 -/* 084A44 7F04FF14 02002025 */ move $a0, $s0 -/* 084A48 7F04FF18 0C0029FF */ jal string_load_parse_something -/* 084A4C 7F04FF1C 00402825 */ move $a1, $v0 -/* 084A50 7F04FF20 100000A0 */ b .L7F0501A4 -/* 084A54 7F04FF24 00000000 */ nop -weapon_collect_msg_a_kf7: -/* 084A58 7F04FF28 0FC30776 */ jal get_textptr_for_textID -/* 084A5C 7F04FF2C 3404A425 */ li $a0, 42021 -/* 084A60 7F04FF30 02002025 */ move $a0, $s0 -/* 084A64 7F04FF34 0C0029FF */ jal string_load_parse_something -/* 084A68 7F04FF38 00402825 */ move $a1, $v0 -/* 084A6C 7F04FF3C 10000099 */ b .L7F0501A4 -/* 084A70 7F04FF40 00000000 */ nop -weapon_collect_msg_a_zmg: -/* 084A74 7F04FF44 0FC30776 */ jal get_textptr_for_textID -/* 084A78 7F04FF48 3404A426 */ li $a0, 42022 -/* 084A7C 7F04FF4C 02002025 */ move $a0, $s0 -/* 084A80 7F04FF50 0C0029FF */ jal string_load_parse_something -/* 084A84 7F04FF54 00402825 */ move $a1, $v0 -/* 084A88 7F04FF58 10000092 */ b .L7F0501A4 -/* 084A8C 7F04FF5C 00000000 */ nop -weapon_collect_msg_a_d5k: -/* 084A90 7F04FF60 0FC30776 */ jal get_textptr_for_textID -/* 084A94 7F04FF64 3404A427 */ li $a0, 42023 -/* 084A98 7F04FF68 02002025 */ move $a0, $s0 -/* 084A9C 7F04FF6C 0C0029FF */ jal string_load_parse_something -/* 084AA0 7F04FF70 00402825 */ move $a1, $v0 -/* 084AA4 7F04FF74 1000008B */ b .L7F0501A4 -/* 084AA8 7F04FF78 00000000 */ nop -weapon_collect_msg_a_silenced_d5k: -/* 084AAC 7F04FF7C 0FC30776 */ jal get_textptr_for_textID -/* 084AB0 7F04FF80 3404A428 */ li $a0, 42024 -/* 084AB4 7F04FF84 02002025 */ move $a0, $s0 -/* 084AB8 7F04FF88 0C0029FF */ jal string_load_parse_something -/* 084ABC 7F04FF8C 00402825 */ move $a1, $v0 -/* 084AC0 7F04FF90 10000084 */ b .L7F0501A4 -/* 084AC4 7F04FF94 00000000 */ nop -weapon_collect_msg_a_phantom: -/* 084AC8 7F04FF98 0FC30776 */ jal get_textptr_for_textID -/* 084ACC 7F04FF9C 3404A429 */ li $a0, 42025 -/* 084AD0 7F04FFA0 02002025 */ move $a0, $s0 -/* 084AD4 7F04FFA4 0C0029FF */ jal string_load_parse_something -/* 084AD8 7F04FFA8 00402825 */ move $a1, $v0 -/* 084ADC 7F04FFAC 1000007D */ b .L7F0501A4 -/* 084AE0 7F04FFB0 00000000 */ nop -weapon_collect_msg_a_ar33: -/* 084AE4 7F04FFB4 0FC30776 */ jal get_textptr_for_textID -/* 084AE8 7F04FFB8 3404A42A */ li $a0, 42026 -/* 084AEC 7F04FFBC 02002025 */ move $a0, $s0 -/* 084AF0 7F04FFC0 0C0029FF */ jal string_load_parse_something -/* 084AF4 7F04FFC4 00402825 */ move $a1, $v0 -/* 084AF8 7F04FFC8 10000076 */ b .L7F0501A4 -/* 084AFC 7F04FFCC 00000000 */ nop -weapon_collect_msg_a_rcp90: -/* 084B00 7F04FFD0 0FC30776 */ jal get_textptr_for_textID -/* 084B04 7F04FFD4 3404A42B */ li $a0, 42027 -/* 084B08 7F04FFD8 02002025 */ move $a0, $s0 -/* 084B0C 7F04FFDC 0C0029FF */ jal string_load_parse_something -/* 084B10 7F04FFE0 00402825 */ move $a1, $v0 -/* 084B14 7F04FFE4 1000006F */ b .L7F0501A4 -/* 084B18 7F04FFE8 00000000 */ nop -weapon_collect_msg_a_shotgun: -/* 084B1C 7F04FFEC 0FC30776 */ jal get_textptr_for_textID -/* 084B20 7F04FFF0 3404A42C */ li $a0, 42028 -/* 084B24 7F04FFF4 02002025 */ move $a0, $s0 -/* 084B28 7F04FFF8 0C0029FF */ jal string_load_parse_something -/* 084B2C 7F04FFFC 00402825 */ move $a1, $v0 -/* 084B30 7F050000 10000068 */ b .L7F0501A4 -/* 084B34 7F050004 00000000 */ nop -weapon_collect_msg_an_auto_shotgun: -/* 084B38 7F050008 0FC30776 */ jal get_textptr_for_textID -/* 084B3C 7F05000C 3404A42D */ li $a0, 42029 -/* 084B40 7F050010 02002025 */ move $a0, $s0 -/* 084B44 7F050014 0C0029FF */ jal string_load_parse_something -/* 084B48 7F050018 00402825 */ move $a1, $v0 -/* 084B4C 7F05001C 10000061 */ b .L7F0501A4 -/* 084B50 7F050020 00000000 */ nop -weapon_collect_msg_a_sniper: -/* 084B54 7F050024 0FC30776 */ jal get_textptr_for_textID -/* 084B58 7F050028 3404A42E */ li $a0, 42030 -/* 084B5C 7F05002C 02002025 */ move $a0, $s0 -/* 084B60 7F050030 0C0029FF */ jal string_load_parse_something -/* 084B64 7F050034 00402825 */ move $a1, $v0 -/* 084B68 7F050038 1000005A */ b .L7F0501A4 -/* 084B6C 7F05003C 00000000 */ nop -weapon_collect_msg_a_grenade_launcher: -/* 084B70 7F050040 0FC30776 */ jal get_textptr_for_textID -/* 084B74 7F050044 3404A42F */ li $a0, 42031 -/* 084B78 7F050048 02002025 */ move $a0, $s0 -/* 084B7C 7F05004C 0C0029FF */ jal string_load_parse_something -/* 084B80 7F050050 00402825 */ move $a1, $v0 -/* 084B84 7F050054 10000053 */ b .L7F0501A4 -/* 084B88 7F050058 00000000 */ nop -weapon_collect_msg_a_rocket_launcher: -/* 084B8C 7F05005C 0FC30776 */ jal get_textptr_for_textID -/* 084B90 7F050060 3404A430 */ li $a0, 42032 -/* 084B94 7F050064 02002025 */ move $a0, $s0 -/* 084B98 7F050068 0C0029FF */ jal string_load_parse_something -/* 084B9C 7F05006C 00402825 */ move $a1, $v0 -/* 084BA0 7F050070 1000004C */ b .L7F0501A4 -/* 084BA4 7F050074 00000000 */ nop -weapon_collect_msg_a_cougar_magnum: -/* 084BA8 7F050078 0FC30776 */ jal get_textptr_for_textID -/* 084BAC 7F05007C 3404A431 */ li $a0, 42033 -/* 084BB0 7F050080 02002025 */ move $a0, $s0 -/* 084BB4 7F050084 0C0029FF */ jal string_load_parse_something -/* 084BB8 7F050088 00402825 */ move $a1, $v0 -/* 084BBC 7F05008C 10000045 */ b .L7F0501A4 -/* 084BC0 7F050090 00000000 */ nop -weapon_collect_msg_a_golden_gun: -/* 084BC4 7F050094 0FC30776 */ jal get_textptr_for_textID -/* 084BC8 7F050098 3404A432 */ li $a0, 42034 -/* 084BCC 7F05009C 02002025 */ move $a0, $s0 -/* 084BD0 7F0500A0 0C0029FF */ jal string_load_parse_something -/* 084BD4 7F0500A4 00402825 */ move $a1, $v0 -/* 084BD8 7F0500A8 1000003E */ b .L7F0501A4 -/* 084BDC 7F0500AC 00000000 */ nop -weapon_collect_msg_a_moonraker_laser: -/* 084BE0 7F0500B0 0FC30776 */ jal get_textptr_for_textID -/* 084BE4 7F0500B4 3404A433 */ li $a0, 42035 -/* 084BE8 7F0500B8 02002025 */ move $a0, $s0 -/* 084BEC 7F0500BC 0C0029FF */ jal string_load_parse_something -/* 084BF0 7F0500C0 00402825 */ move $a1, $v0 -/* 084BF4 7F0500C4 10000037 */ b .L7F0501A4 -/* 084BF8 7F0500C8 00000000 */ nop -weapon_collect_msg_a_flare_pistol: -/* 084BFC 7F0500CC 0FC30776 */ jal get_textptr_for_textID -/* 084C00 7F0500D0 3404A434 */ li $a0, 42036 -/* 084C04 7F0500D4 02002025 */ move $a0, $s0 -/* 084C08 7F0500D8 0C0029FF */ jal string_load_parse_something -/* 084C0C 7F0500DC 00402825 */ move $a1, $v0 -/* 084C10 7F0500E0 10000030 */ b .L7F0501A4 -/* 084C14 7F0500E4 00000000 */ nop -weapon_collect_msg_a_piton_gun: -/* 084C18 7F0500E8 0FC30776 */ jal get_textptr_for_textID -/* 084C1C 7F0500EC 3404A435 */ li $a0, 42037 -/* 084C20 7F0500F0 02002025 */ move $a0, $s0 -/* 084C24 7F0500F4 0C0029FF */ jal string_load_parse_something -/* 084C28 7F0500F8 00402825 */ move $a1, $v0 -/* 084C2C 7F0500FC 10000029 */ b .L7F0501A4 -/* 084C30 7F050100 00000000 */ nop -weapon_collect_msg_a_silver_pp7: -/* 084C34 7F050104 0FC30776 */ jal get_textptr_for_textID -/* 084C38 7F050108 3404A436 */ li $a0, 42038 -/* 084C3C 7F05010C 02002025 */ move $a0, $s0 -/* 084C40 7F050110 0C0029FF */ jal string_load_parse_something -/* 084C44 7F050114 00402825 */ move $a1, $v0 -/* 084C48 7F050118 10000022 */ b .L7F0501A4 -/* 084C4C 7F05011C 00000000 */ nop -weapon_collect_msg_a_gold_pp7: -/* 084C50 7F050120 0FC30776 */ jal get_textptr_for_textID -/* 084C54 7F050124 3404A437 */ li $a0, 42039 -/* 084C58 7F050128 02002025 */ move $a0, $s0 -/* 084C5C 7F05012C 0C0029FF */ jal string_load_parse_something -/* 084C60 7F050130 00402825 */ move $a1, $v0 -/* 084C64 7F050134 1000001B */ b .L7F0501A4 -/* 084C68 7F050138 00000000 */ nop -weapon_collect_msg_a_keycard: -/* 084C6C 7F05013C 0FC30776 */ jal get_textptr_for_textID -/* 084C70 7F050140 3404A438 */ li $a0, 42040 -/* 084C74 7F050144 02002025 */ move $a0, $s0 -/* 084C78 7F050148 0C0029FF */ jal string_load_parse_something -/* 084C7C 7F05014C 00402825 */ move $a1, $v0 -/* 084C80 7F050150 10000014 */ b .L7F0501A4 -/* 084C84 7F050154 00000000 */ nop -weapon_collect_msg_a_yale_key: -/* 084C88 7F050158 0FC30776 */ jal get_textptr_for_textID -/* 084C8C 7F05015C 3404A439 */ li $a0, 42041 -/* 084C90 7F050160 02002025 */ move $a0, $s0 -/* 084C94 7F050164 0C0029FF */ jal string_load_parse_something -/* 084C98 7F050168 00402825 */ move $a1, $v0 -/* 084C9C 7F05016C 1000000D */ b .L7F0501A4 -/* 084CA0 7F050170 00000000 */ nop -weapon_collect_msg_a_bolt_key: -/* 084CA4 7F050174 0FC30776 */ jal get_textptr_for_textID -/* 084CA8 7F050178 3404A43A */ li $a0, 42042 -/* 084CAC 7F05017C 02002025 */ move $a0, $s0 -/* 084CB0 7F050180 0C0029FF */ jal string_load_parse_something -/* 084CB4 7F050184 00402825 */ move $a1, $v0 -/* 084CB8 7F050188 10000006 */ b .L7F0501A4 -/* 084CBC 7F05018C 00000000 */ nop -weapon_collect_msg_a_new_weapon: -.L7F050190: -/* 084CC0 7F050190 0FC30776 */ jal get_textptr_for_textID -/* 084CC4 7F050194 3404A43B */ li $a0, 42043 -/* 084CC8 7F050198 02002025 */ move $a0, $s0 -/* 084CCC 7F05019C 0C0029FF */ jal string_load_parse_something -/* 084CD0 7F0501A0 00402825 */ move $a1, $v0 -.L7F0501A4: -/* 084CD4 7F0501A4 3C088005 */ lui $t0, %hi(j_text_trigger) -/* 084CD8 7F0501A8 8D0884D0 */ lw $t0, %lo(j_text_trigger)($t0) -/* 084CDC 7F0501AC 8FA90024 */ lw $t1, 0x24($sp) -/* 084CE0 7F0501B0 51000018 */ beql $t0, $zero, .L7F050214 -/* 084CE4 7F0501B4 8FBF001C */ lw $ra, 0x1c($sp) -/* 084CE8 7F0501B8 55200016 */ bnezl $t1, .L7F050214 -/* 084CEC 7F0501BC 8FBF001C */ lw $ra, 0x1c($sp) -/* 084CF0 7F0501C0 0C004E1F */ jal strlen -/* 084CF4 7F0501C4 02002025 */ move $a0, $s0 -/* 084CF8 7F0501C8 00505021 */ addu $t2, $v0, $s0 -/* 084CFC 7F0501CC 914BFFFF */ lbu $t3, -1($t2) -/* 084D00 7F0501D0 2401000A */ li $at, 10 -/* 084D04 7F0501D4 15610005 */ bne $t3, $at, .L7F0501EC -/* 084D08 7F0501D8 00000000 */ nop -/* 084D0C 7F0501DC 0C004E1F */ jal strlen -/* 084D10 7F0501E0 02002025 */ move $a0, $s0 -/* 084D14 7F0501E4 02026021 */ addu $t4, $s0, $v0 -/* 084D18 7F0501E8 A180FFFF */ sb $zero, -1($t4) -.L7F0501EC: -/* 084D1C 7F0501EC 0FC30776 */ jal get_textptr_for_textID -/* 084D20 7F0501F0 3404A400 */ li $a0, 41984 -/* 084D24 7F0501F4 02002025 */ move $a0, $s0 -/* 084D28 7F0501F8 0C0029FF */ jal string_load_parse_something -/* 084D2C 7F0501FC 00402825 */ move $a1, $v0 -/* 084D30 7F050200 3C058005 */ lui $a1, %hi(D_80052A40) -/* 084D34 7F050204 24A52A40 */ addiu $a1, %lo(D_80052A40) # addiu $a1, $a1, 0x2a40 -/* 084D38 7F050208 0C0029FF */ jal string_load_parse_something -/* 084D3C 7F05020C 02002025 */ move $a0, $s0 -/* 084D40 7F050210 8FBF001C */ lw $ra, 0x1c($sp) -.L7F050214: -/* 084D44 7F050214 8FB00018 */ lw $s0, 0x18($sp) -/* 084D48 7F050218 27BD0028 */ addiu $sp, $sp, 0x28 -/* 084D4C 7F05021C 03E00008 */ jr $ra -/* 084D50 7F050220 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void display_text_for_weapon_in_lower_left_corner(void) { - -} -#else -#ifdef VERSION_US -GLOBAL_ASM( -.text -glabel display_text_for_weapon_in_lower_left_corner -/* 084D54 7F050224 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 084D58 7F050228 AFBF0014 */ sw $ra, 0x14($sp) -/* 084D5C 7F05022C 00802825 */ move $a1, $a0 -/* 084D60 7F050230 0FC13F78 */ jal generate_language_specific_text_for_weapon -/* 084D64 7F050234 27A4001C */ addiu $a0, $sp, 0x1c -/* 084D68 7F050238 0FC228F2 */ jal display_string_in_lower_left_corner -/* 084D6C 7F05023C 27A4001C */ addiu $a0, $sp, 0x1c -/* 084D70 7F050240 8FBF0014 */ lw $ra, 0x14($sp) -/* 084D74 7F050244 27BD0080 */ addiu $sp, $sp, 0x80 -/* 084D78 7F050248 03E00008 */ jr $ra -/* 084D7C 7F05024C 00000000 */ nop -) -#endif -#ifdef VERSION_JP -GLOBAL_ASM( -.text -glabel display_text_for_weapon_in_lower_left_corner -/* 084D54 7F050224 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 084D58 7F050228 AFBF0014 */ sw $ra, 0x14($sp) -/* 084D5C 7F05022C 00802825 */ move $a1, $a0 -/* 084D60 7F050230 0FC13F78 */ jal generate_language_specific_text_for_weapon -/* 084D64 7F050234 27A4001C */ addiu $a0, $sp, 0x1c -/* 084D68 7F050238 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 084D6C 7F05023C 27A4001C */ addiu $a0, $sp, 0x1c -/* 084D70 7F050240 8FBF0014 */ lw $ra, 0x14($sp) -/* 084D74 7F050244 27BD0080 */ addiu $sp, $sp, 0x80 -/* 084D78 7F050248 03E00008 */ jr $ra -/* 084D7C 7F05024C 00000000 */ nop -) -#endif -#endif - - - - - -#ifdef NONMATCHING -void collect_or_interact_object(void) { - -} -#else -#ifdef VERSION_US -GLOBAL_ASM( -.late_rodata -/*D:8005322C*/ -glabel object_interaction_table -.word interact_default_object -.word interact_key_object -.word interact_default_object -.word interact_default_object -.word interact_magazine_object -.word interact_weapon_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_ammobox_object -.word interact_bodyarmor_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object - -.text -glabel collect_or_interact_object -/* 084D80 7F050250 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 084D84 7F050254 AFBF001C */ sw $ra, 0x1c($sp) -/* 084D88 7F050258 AFB00018 */ sw $s0, 0x18($sp) -/* 084D8C 7F05025C AFA40070 */ sw $a0, 0x70($sp) -/* 084D90 7F050260 AFA50074 */ sw $a1, 0x74($sp) -/* 084D94 7F050264 8C830004 */ lw $v1, 4($a0) -/* 084D98 7F050268 3C0F8008 */ lui $t7, %hi(pPlayer) -/* 084D9C 7F05026C 8DEFA0B0 */ lw $t7, %lo(pPlayer)($t7) -/* 084DA0 7F050270 AFA3006C */ sw $v1, 0x6c($sp) -/* 084DA4 7F050274 3C198005 */ lui $t9, %hi(clock_timer) -/* 084DA8 7F050278 8DF800D8 */ lw $t8, 0xd8($t7) -/* 084DAC 7F05027C 17000005 */ bnez $t8, .L7F050294 -/* 084DB0 7F050280 00000000 */ nop -/* 084DB4 7F050284 8F398374 */ lw $t9, %lo(clock_timer)($t9) -/* 084DB8 7F050288 8FA8006C */ lw $t0, 0x6c($sp) -/* 084DBC 7F05028C 57200004 */ bnezl $t9, .L7F0502A0 -/* 084DC0 7F050290 91090003 */ lbu $t1, 3($t0) -.L7F050294: -/* 084DC4 7F050294 1000010C */ b .L7F0506C8 -/* 084DC8 7F050298 00001025 */ move $v0, $zero -/* 084DCC 7F05029C 91090003 */ lbu $t1, 3($t0) -.L7F0502A0: -/* 084DD0 7F0502A0 252AFFFD */ addiu $t2, $t1, -3 -/* 084DD4 7F0502A4 2D41002D */ sltiu $at, $t2, 0x2d -/* 084DD8 7F0502A8 102000E0 */ beqz $at, .L7F05062C -/* 084DDC 7F0502AC 000A5080 */ sll $t2, $t2, 2 -/* 084DE0 7F0502B0 3C018005 */ lui $at, %hi(object_interaction_table) -/* 084DE4 7F0502B4 002A0821 */ addu $at, $at, $t2 -/* 084DE8 7F0502B8 8C2A322C */ lw $t2, %lo(object_interaction_table)($at) -/* 084DEC 7F0502BC 01400008 */ jr $t2 -/* 084DF0 7F0502C0 00000000 */ nop -interact_key_object: -/* 084DF4 7F0502C4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084DF8 7F0502C8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084DFC 7F0502CC 240500E5 */ li $a1, 229 -/* 084E00 7F0502D0 0C002382 */ jal play_sfx_a1 -/* 084E04 7F0502D4 00003025 */ move $a2, $zero -/* 084E08 7F0502D8 8FAB0074 */ lw $t3, 0x74($sp) -/* 084E0C 7F0502DC 1160000A */ beqz $t3, .L7F050308 -/* 084E10 7F0502E0 00000000 */ nop -/* 084E14 7F0502E4 0FC23657 */ jal sub_GAME_7F08D95C -/* 084E18 7F0502E8 8FA4006C */ lw $a0, 0x6c($sp) -/* 084E1C 7F0502EC 14400004 */ bnez $v0, .L7F050300 -/* 084E20 7F0502F0 00402025 */ move $a0, $v0 -/* 084E24 7F0502F4 0FC30776 */ jal get_textptr_for_textID -/* 084E28 7F0502F8 3404A43C */ li $a0, 42044 -/* 084E2C 7F0502FC 00402025 */ move $a0, $v0 -.L7F050300: -/* 084E30 7F050300 0FC228F2 */ jal display_string_in_lower_left_corner -/* 084E34 7F050304 00000000 */ nop -.L7F050308: -/* 084E38 7F050308 100000DA */ b .L7F050674 -/* 084E3C 7F05030C 24030004 */ li $v1, 4 -interact_magazine_object: -/* 084E40 7F050310 00608025 */ move $s0, $v1 -/* 084E44 7F050314 0FC13F0F */ jal get_ammo_in_magazine -/* 084E48 7F050318 00602025 */ move $a0, $v1 -/* 084E4C 7F05031C 8E040080 */ lw $a0, 0x80($s0) -/* 084E50 7F050320 00402825 */ move $a1, $v0 -/* 084E54 7F050324 24060001 */ li $a2, 1 -/* 084E58 7F050328 0FC13E9A */ jal add_ammo_to_inventory -/* 084E5C 7F05032C 8FA70074 */ lw $a3, 0x74($sp) -/* 084E60 7F050330 100000D0 */ b .L7F050674 -/* 084E64 7F050334 24030001 */ li $v1, 1 -interact_ammobox_object: -/* 084E68 7F050338 00001025 */ move $v0, $zero -/* 084E6C 7F05033C 00608025 */ move $s0, $v1 -/* 084E70 7F050340 24430001 */ addiu $v1, $v0, 1 -.L7F050344: -/* 084E74 7F050344 24010001 */ li $at, 1 -/* 084E78 7F050348 14410002 */ bne $v0, $at, .L7F050354 -/* 084E7C 7F05034C 00602025 */ move $a0, $v1 -/* 084E80 7F050350 24040001 */ li $a0, 1 -.L7F050354: -/* 084E84 7F050354 96050082 */ lhu $a1, 0x82($s0) -/* 084E88 7F050358 AFA4004C */ sw $a0, 0x4c($sp) -/* 084E8C 7F05035C AFA30020 */ sw $v1, 0x20($sp) -/* 084E90 7F050360 0FC26919 */ jal get_num_players -/* 084E94 7F050364 AFA50050 */ sw $a1, 0x50($sp) -/* 084E98 7F050368 24010001 */ li $at, 1 -/* 084E9C 7F05036C 8FA30020 */ lw $v1, 0x20($sp) -/* 084EA0 7F050370 8FA4004C */ lw $a0, 0x4c($sp) -/* 084EA4 7F050374 14410009 */ bne $v0, $at, .L7F05039C -/* 084EA8 7F050378 8FA50050 */ lw $a1, 0x50($sp) -/* 084EAC 7F05037C 44852000 */ mtc1 $a1, $f4 -/* 084EB0 7F050380 3C018003 */ lui $at, %hi(solo_ammo_multiplier) -/* 084EB4 7F050384 C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) -/* 084EB8 7F050388 468021A0 */ cvt.s.w $f6, $f4 -/* 084EBC 7F05038C 46083282 */ mul.s $f10, $f6, $f8 -/* 084EC0 7F050390 4600540D */ trunc.w.s $f16, $f10 -/* 084EC4 7F050394 44058000 */ mfc1 $a1, $f16 -/* 084EC8 7F050398 00000000 */ nop -.L7F05039C: -/* 084ECC 7F05039C 00003025 */ move $a2, $zero -/* 084ED0 7F0503A0 8FA70074 */ lw $a3, 0x74($sp) -/* 084ED4 7F0503A4 0FC13E9A */ jal add_ammo_to_inventory -/* 084ED8 7F0503A8 AFA30020 */ sw $v1, 0x20($sp) -/* 084EDC 7F0503AC 8FA20020 */ lw $v0, 0x20($sp) -/* 084EE0 7F0503B0 2401000D */ li $at, 13 -/* 084EE4 7F0503B4 26100004 */ addiu $s0, $s0, 4 -/* 084EE8 7F0503B8 5441FFE2 */ bnel $v0, $at, .L7F050344 -/* 084EEC 7F0503BC 24430001 */ addiu $v1, $v0, 1 -/* 084EF0 7F0503C0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084EF4 7F0503C4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084EF8 7F0503C8 240500EA */ li $a1, 234 -/* 084EFC 7F0503CC 0C002382 */ jal play_sfx_a1 -/* 084F00 7F0503D0 00003025 */ move $a2, $zero -/* 084F04 7F0503D4 100000A7 */ b .L7F050674 -/* 084F08 7F0503D8 24030001 */ li $v1, 1 -interact_weapon_object: -/* 084F0C 7F0503DC AFA00044 */ sw $zero, 0x44($sp) -/* 084F10 7F0503E0 80640080 */ lb $a0, 0x80($v1) -/* 084F14 7F0503E4 0FC13E04 */ jal set_sound_effect_for_weapontype_collection -/* 084F18 7F0503E8 AFA30048 */ sw $v1, 0x48($sp) -/* 084F1C 7F0503EC 8FAD0048 */ lw $t5, 0x48($sp) -/* 084F20 7F0503F0 2401001D */ li $at, 29 -/* 084F24 7F0503F4 81A40080 */ lb $a0, 0x80($t5) -/* 084F28 7F0503F8 54810006 */ bnel $a0, $at, .L7F050414 -/* 084F2C 7F0503FC 24010058 */ li $at, 88 -/* 084F30 7F050400 0FC23122 */ jal add_item_to_inventory -/* 084F34 7F050404 2404001E */ li $a0, 30 -/* 084F38 7F050408 10000007 */ b .L7F050428 -/* 084F3C 7F05040C 8FAE006C */ lw $t6, 0x6c($sp) -/* 084F40 7F050410 24010058 */ li $at, 88 -.L7F050414: -/* 084F44 7F050414 14810003 */ bne $a0, $at, .L7F050424 -/* 084F48 7F050418 24050058 */ li $a1, 88 -/* 084F4C 7F05041C 0FC17645 */ jal draw_item_in_hand_has_more_ammo -/* 084F50 7F050420 00002025 */ move $a0, $zero -.L7F050424: -/* 084F54 7F050424 8FAE006C */ lw $t6, 0x6c($sp) -.L7F050428: -/* 084F58 7F050428 8FB90048 */ lw $t9, 0x48($sp) -/* 084F5C 7F05042C 8DCF0064 */ lw $t7, 0x64($t6) -/* 084F60 7F050430 31F80400 */ andi $t8, $t7, 0x400 -/* 084F64 7F050434 1300001B */ beqz $t8, .L7F0504A4 -/* 084F68 7F050438 00000000 */ nop -/* 084F6C 7F05043C 83280080 */ lb $t0, 0x80($t9) -/* 084F70 7F050440 29010021 */ slti $at, $t0, 0x21 -/* 084F74 7F050444 50200004 */ beql $at, $zero, .L7F050458 -/* 084F78 7F050448 8FA90074 */ lw $t1, 0x74($sp) -/* 084F7C 7F05044C 0FC231D9 */ jal sub_GAME_7F08C764 -/* 084F80 7F050450 8FA40070 */ lw $a0, 0x70($sp) -/* 084F84 7F050454 8FA90074 */ lw $t1, 0x74($sp) -.L7F050458: -/* 084F88 7F050458 5120000F */ beql $t1, $zero, .L7F050498 -/* 084F8C 7F05045C 8FAC0048 */ lw $t4, 0x48($sp) -/* 084F90 7F050460 0FC23657 */ jal sub_GAME_7F08D95C -/* 084F94 7F050464 8FA4006C */ lw $a0, 0x6c($sp) -/* 084F98 7F050468 10400005 */ beqz $v0, .L7F050480 -/* 084F9C 7F05046C 00402025 */ move $a0, $v0 -/* 084FA0 7F050470 0FC228F2 */ jal display_string_in_lower_left_corner -/* 084FA4 7F050474 00000000 */ nop -/* 084FA8 7F050478 10000005 */ b .L7F050490 -/* 084FAC 7F05047C 240B0001 */ li $t3, 1 -.L7F050480: -/* 084FB0 7F050480 8FAA0048 */ lw $t2, 0x48($sp) -/* 084FB4 7F050484 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner -/* 084FB8 7F050488 81440080 */ lb $a0, 0x80($t2) -/* 084FBC 7F05048C 240B0001 */ li $t3, 1 -.L7F050490: -/* 084FC0 7F050490 AFAB0044 */ sw $t3, 0x44($sp) -/* 084FC4 7F050494 8FAC0048 */ lw $t4, 0x48($sp) -.L7F050498: -/* 084FC8 7F050498 24030004 */ li $v1, 4 -/* 084FCC 7F05049C 1000001C */ b .L7F050510 -/* 084FD0 7F0504A0 81840080 */ lb $a0, 0x80($t4) -.L7F0504A4: -/* 084FD4 7F0504A4 0FC231D9 */ jal sub_GAME_7F08C764 -/* 084FD8 7F0504A8 8FA40070 */ lw $a0, 0x70($sp) -/* 084FDC 7F0504AC 10400002 */ beqz $v0, .L7F0504B8 -/* 084FE0 7F0504B0 240D0001 */ li $t5, 1 -/* 084FE4 7F0504B4 AFAD0044 */ sw $t5, 0x44($sp) -.L7F0504B8: -/* 084FE8 7F0504B8 8FAE0074 */ lw $t6, 0x74($sp) -/* 084FEC 7F0504BC 8FAF0048 */ lw $t7, 0x48($sp) -/* 084FF0 7F0504C0 51C00011 */ beql $t6, $zero, .L7F050508 -/* 084FF4 7F0504C4 8FA90048 */ lw $t1, 0x48($sp) -/* 084FF8 7F0504C8 0FC23669 */ jal sub_GAME_7F08D9A4 -/* 084FFC 7F0504CC 81E40080 */ lb $a0, 0x80($t7) -/* 085000 7F0504D0 10400006 */ beqz $v0, .L7F0504EC -/* 085004 7F0504D4 00402025 */ move $a0, $v0 -/* 085008 7F0504D8 24180001 */ li $t8, 1 -/* 08500C 7F0504DC 0FC228F2 */ jal display_string_in_lower_left_corner -/* 085010 7F0504E0 AFB80044 */ sw $t8, 0x44($sp) -/* 085014 7F0504E4 10000008 */ b .L7F050508 -/* 085018 7F0504E8 8FA90048 */ lw $t1, 0x48($sp) -.L7F0504EC: -/* 08501C 7F0504EC 8FB90044 */ lw $t9, 0x44($sp) -/* 085020 7F0504F0 8FA80048 */ lw $t0, 0x48($sp) -/* 085024 7F0504F4 53200004 */ beql $t9, $zero, .L7F050508 -/* 085028 7F0504F8 8FA90048 */ lw $t1, 0x48($sp) -/* 08502C 7F0504FC 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner -/* 085030 7F050500 81040080 */ lb $a0, 0x80($t0) -/* 085034 7F050504 8FA90048 */ lw $t1, 0x48($sp) -.L7F050508: -/* 085038 7F050508 24030001 */ li $v1, 1 -/* 08503C 7F05050C 81240080 */ lb $a0, 0x80($t1) -.L7F050510: -/* 085040 7F050510 0FC1A50B */ jal get_ammo_type_for_weapon -/* 085044 7F050514 AFA30068 */ sw $v1, 0x68($sp) -/* 085048 7F050518 8FA30068 */ lw $v1, 0x68($sp) -/* 08504C 7F05051C 10400055 */ beqz $v0, .L7F050674 -/* 085050 7F050520 00408025 */ move $s0, $v0 -/* 085054 7F050524 8FA40048 */ lw $a0, 0x48($sp) -/* 085058 7F050528 0FC13F3E */ jal ammo_collected_from_weapon -/* 08505C 7F05052C AFA30068 */ sw $v1, 0x68($sp) -/* 085060 7F050530 8FA30068 */ lw $v1, 0x68($sp) -/* 085064 7F050534 1840004F */ blez $v0, .L7F050674 -/* 085068 7F050538 AFA20034 */ sw $v0, 0x34($sp) -/* 08506C 7F05053C 02002025 */ move $a0, $s0 -/* 085070 7F050540 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 085074 7F050544 AFA30068 */ sw $v1, 0x68($sp) -/* 085078 7F050548 AFA20024 */ sw $v0, 0x24($sp) -/* 08507C 7F05054C 0FC1A4B5 */ jal get_max_ammo_for_type -/* 085080 7F050550 02002025 */ move $a0, $s0 -/* 085084 7F050554 8FAA0024 */ lw $t2, 0x24($sp) -/* 085088 7F050558 8FA30068 */ lw $v1, 0x68($sp) -/* 08508C 7F05055C 02002025 */ move $a0, $s0 -/* 085090 7F050560 0142082A */ slt $at, $t2, $v0 -/* 085094 7F050564 50200044 */ beql $at, $zero, .L7F050678 -/* 085098 7F050568 24010001 */ li $at, 1 -/* 08509C 7F05056C 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 0850A0 7F050570 AFA30068 */ sw $v1, 0x68($sp) -/* 0850A4 7F050574 8FAB0034 */ lw $t3, 0x34($sp) -/* 0850A8 7F050578 02002025 */ move $a0, $s0 -/* 0850AC 7F05057C 0FC1A44C */ jal give_cur_player_ammo -/* 0850B0 7F050580 004B2821 */ addu $a1, $v0, $t3 -/* 0850B4 7F050584 8FAC0044 */ lw $t4, 0x44($sp) -/* 0850B8 7F050588 8FA30068 */ lw $v1, 0x68($sp) -/* 0850BC 7F05058C 8FAD0074 */ lw $t5, 0x74($sp) -/* 0850C0 7F050590 55800039 */ bnezl $t4, .L7F050678 -/* 0850C4 7F050594 24010001 */ li $at, 1 -/* 0850C8 7F050598 11A00036 */ beqz $t5, .L7F050674 -/* 0850CC 7F05059C 02002025 */ move $a0, $s0 -/* 0850D0 7F0505A0 8FA50034 */ lw $a1, 0x34($sp) -/* 0850D4 7F0505A4 0FC13E7E */ jal display_text_when_ammo_collected -/* 0850D8 7F0505A8 AFA30068 */ sw $v1, 0x68($sp) -/* 0850DC 7F0505AC 10000031 */ b .L7F050674 -/* 0850E0 7F0505B0 8FA30068 */ lw $v1, 0x68($sp) -interact_bodyarmor_object: -/* 0850E4 7F0505B4 0FC228C3 */ jal add_BONDdata_watch_armor -/* 0850E8 7F0505B8 C46C0084 */ lwc1 $f12, 0x84($v1) -/* 0850EC 7F0505BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0850F0 7F0505C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0850F4 7F0505C4 24050051 */ li $a1, 81 -/* 0850F8 7F0505C8 0C002382 */ jal play_sfx_a1 -/* 0850FC 7F0505CC 00003025 */ move $a2, $zero -/* 085100 7F0505D0 8FAE0074 */ lw $t6, 0x74($sp) -/* 085104 7F0505D4 11C00013 */ beqz $t6, .L7F050624 -/* 085108 7F0505D8 00000000 */ nop -/* 08510C 7F0505DC 0FC23657 */ jal sub_GAME_7F08D95C -/* 085110 7F0505E0 8FA4006C */ lw $a0, 0x6c($sp) -/* 085114 7F0505E4 1440000D */ bnez $v0, .L7F05061C -/* 085118 7F0505E8 00402025 */ move $a0, $v0 -/* 08511C 7F0505EC 0FC26919 */ jal get_num_players -/* 085120 7F0505F0 00000000 */ nop -/* 085124 7F0505F4 28410003 */ slti $at, $v0, 3 -/* 085128 7F0505F8 10200005 */ beqz $at, .L7F050610 -/* 08512C 7F0505FC 00000000 */ nop -/* 085130 7F050600 0FC30776 */ jal get_textptr_for_textID -/* 085134 7F050604 3404A43D */ li $a0, 42045 -/* 085138 7F050608 10000004 */ b .L7F05061C -/* 08513C 7F05060C 00402025 */ move $a0, $v0 -.L7F050610: -/* 085140 7F050610 0FC30776 */ jal get_textptr_for_textID -/* 085144 7F050614 3404A43E */ li $a0, 42046 -/* 085148 7F050618 00402025 */ move $a0, $v0 -.L7F05061C: -/* 08514C 7F05061C 0FC228F2 */ jal display_string_in_lower_left_corner -/* 085150 7F050620 00000000 */ nop -.L7F050624: -/* 085154 7F050624 10000013 */ b .L7F050674 -/* 085158 7F050628 24030001 */ li $v1, 1 -interact_default_object: -.L7F05062C: -/* 08515C 7F05062C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 085160 7F050630 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 085164 7F050634 240500E5 */ li $a1, 229 -/* 085168 7F050638 0C002382 */ jal play_sfx_a1 -/* 08516C 7F05063C 00003025 */ move $a2, $zero -/* 085170 7F050640 8FAF0074 */ lw $t7, 0x74($sp) -/* 085174 7F050644 51E0000B */ beql $t7, $zero, .L7F050674 -/* 085178 7F050648 24030004 */ li $v1, 4 -/* 08517C 7F05064C 0FC23657 */ jal sub_GAME_7F08D95C -/* 085180 7F050650 8FA4006C */ lw $a0, 0x6c($sp) -/* 085184 7F050654 14400004 */ bnez $v0, .L7F050668 -/* 085188 7F050658 00402025 */ move $a0, $v0 -/* 08518C 7F05065C 0FC30776 */ jal get_textptr_for_textID -/* 085190 7F050660 3404A43F */ li $a0, 42047 -/* 085194 7F050664 00402025 */ move $a0, $v0 -.L7F050668: -/* 085198 7F050668 0FC228F2 */ jal display_string_in_lower_left_corner -/* 08519C 7F05066C 00000000 */ nop -/* 0851A0 7F050670 24030004 */ li $v1, 4 -.L7F050674: -/* 0851A4 7F050674 24010001 */ li $at, 1 -.L7F050678: -/* 0851A8 7F050678 1461000D */ bne $v1, $at, .L7F0506B0 -/* 0851AC 7F05067C 8FB8006C */ lw $t8, 0x6c($sp) -/* 0851B0 7F050680 8F190064 */ lw $t9, 0x64($t8) -/* 0851B4 7F050684 33280010 */ andi $t0, $t9, 0x10 -/* 0851B8 7F050688 15000009 */ bnez $t0, .L7F0506B0 -/* 0851BC 7F05068C 00000000 */ nop -/* 0851C0 7F050690 93060002 */ lbu $a2, 2($t8) -/* 0851C4 7F050694 03002025 */ move $a0, $t8 -/* 0851C8 7F050698 00002825 */ move $a1, $zero -/* 0851CC 7F05069C 30C90004 */ andi $t1, $a2, 4 -/* 0851D0 7F0506A0 0FC10366 */ jal sub_GAME_7F040D98 -/* 0851D4 7F0506A4 01203025 */ move $a2, $t1 -/* 0851D8 7F0506A8 10000007 */ b .L7F0506C8 -/* 0851DC 7F0506AC 24020001 */ li $v0, 1 -.L7F0506B0: -/* 0851E0 7F0506B0 10600005 */ beqz $v1, .L7F0506C8 -/* 0851E4 7F0506B4 00001025 */ move $v0, $zero -/* 0851E8 7F0506B8 0FC231C9 */ jal sub_GAME_7F08C724 -/* 0851EC 7F0506BC 8FA40070 */ lw $a0, 0x70($sp) -/* 0851F0 7F0506C0 10000001 */ b .L7F0506C8 -/* 0851F4 7F0506C4 24020004 */ li $v0, 4 -.L7F0506C8: -/* 0851F8 7F0506C8 8FBF001C */ lw $ra, 0x1c($sp) -/* 0851FC 7F0506CC 8FB00018 */ lw $s0, 0x18($sp) -/* 085200 7F0506D0 27BD0070 */ addiu $sp, $sp, 0x70 -/* 085204 7F0506D4 03E00008 */ jr $ra -/* 085208 7F0506D8 00000000 */ nop -) -#endif -#ifdef VERSION_JP -GLOBAL_ASM( -.late_rodata -/*D:8005322C*/ -glabel object_interaction_table -.word interact_default_object -.word interact_key_object -.word interact_default_object -.word interact_default_object -.word interact_magazine_object -.word interact_weapon_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_ammobox_object -.word interact_bodyarmor_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object -.word interact_default_object - -.text -glabel collect_or_interact_object -/* 084D80 7F050250 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 084D84 7F050254 AFBF001C */ sw $ra, 0x1c($sp) -/* 084D88 7F050258 AFB00018 */ sw $s0, 0x18($sp) -/* 084D8C 7F05025C AFA40070 */ sw $a0, 0x70($sp) -/* 084D90 7F050260 AFA50074 */ sw $a1, 0x74($sp) -/* 084D94 7F050264 8C830004 */ lw $v1, 4($a0) -/* 084D98 7F050268 3C0F8008 */ lui $t7, %hi(pPlayer) -/* 084D9C 7F05026C 8DEFA0B0 */ lw $t7, %lo(pPlayer)($t7) -/* 084DA0 7F050270 AFA3006C */ sw $v1, 0x6c($sp) -/* 084DA4 7F050274 3C198005 */ lui $t9, %hi(clock_timer) -/* 084DA8 7F050278 8DF800D8 */ lw $t8, 0xd8($t7) -/* 084DAC 7F05027C 17000005 */ bnez $t8, .L7F050294 -/* 084DB0 7F050280 00000000 */ nop -/* 084DB4 7F050284 8F398374 */ lw $t9, %lo(clock_timer)($t9) -/* 084DB8 7F050288 8FA8006C */ lw $t0, 0x6c($sp) -/* 084DBC 7F05028C 57200004 */ bnezl $t9, .L7F0502A0 -/* 084DC0 7F050290 91090003 */ lbu $t1, 3($t0) -.L7F050294: -/* 084DC4 7F050294 1000010C */ b .L7F0506C8 -/* 084DC8 7F050298 00001025 */ move $v0, $zero -/* 084DCC 7F05029C 91090003 */ lbu $t1, 3($t0) -.L7F0502A0: -/* 084DD0 7F0502A0 252AFFFD */ addiu $t2, $t1, -3 -/* 084DD4 7F0502A4 2D41002D */ sltiu $at, $t2, 0x2d -/* 084DD8 7F0502A8 102000E0 */ beqz $at, .L7F05062C -/* 084DDC 7F0502AC 000A5080 */ sll $t2, $t2, 2 -/* 084DE0 7F0502B0 3C018005 */ lui $at, %hi(object_interaction_table) -/* 084DE4 7F0502B4 002A0821 */ addu $at, $at, $t2 -/* 084DE8 7F0502B8 8C2A322C */ lw $t2, %lo(object_interaction_table)($at) -/* 084DEC 7F0502BC 01400008 */ jr $t2 -/* 084DF0 7F0502C0 00000000 */ nop -interact_key_object: -/* 084DF4 7F0502C4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084DF8 7F0502C8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084DFC 7F0502CC 240500E5 */ li $a1, 229 -/* 084E00 7F0502D0 0C002382 */ jal play_sfx_a1 -/* 084E04 7F0502D4 00003025 */ move $a2, $zero -/* 084E08 7F0502D8 8FAB0074 */ lw $t3, 0x74($sp) -/* 084E0C 7F0502DC 1160000A */ beqz $t3, .L7F050308 -/* 084E10 7F0502E0 00000000 */ nop -/* 084E14 7F0502E4 0FC23657 */ jal sub_GAME_7F08D95C -/* 084E18 7F0502E8 8FA4006C */ lw $a0, 0x6c($sp) -/* 084E1C 7F0502EC 14400004 */ bnez $v0, .L7F050300 -/* 084E20 7F0502F0 00402025 */ move $a0, $v0 -/* 084E24 7F0502F4 0FC30776 */ jal get_textptr_for_textID -/* 084E28 7F0502F8 3404A43C */ li $a0, 42044 -/* 084E2C 7F0502FC 00402025 */ move $a0, $v0 -.L7F050300: -/* 084E30 7F050300 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 084E34 7F050304 00000000 */ nop -.L7F050308: -/* 084E38 7F050308 100000DA */ b .L7F050674 -/* 084E3C 7F05030C 24030004 */ li $v1, 4 -interact_magazine_object: -/* 084E40 7F050310 00608025 */ move $s0, $v1 -/* 084E44 7F050314 0FC13F0F */ jal get_ammo_in_magazine -/* 084E48 7F050318 00602025 */ move $a0, $v1 -/* 084E4C 7F05031C 8E040080 */ lw $a0, 0x80($s0) -/* 084E50 7F050320 00402825 */ move $a1, $v0 -/* 084E54 7F050324 24060001 */ li $a2, 1 -/* 084E58 7F050328 0FC13E9A */ jal add_ammo_to_inventory -/* 084E5C 7F05032C 8FA70074 */ lw $a3, 0x74($sp) -/* 084E60 7F050330 100000D0 */ b .L7F050674 -/* 084E64 7F050334 24030001 */ li $v1, 1 -interact_ammobox_object: -/* 084E68 7F050338 00001025 */ move $v0, $zero -/* 084E6C 7F05033C 00608025 */ move $s0, $v1 -/* 084E70 7F050340 24430001 */ addiu $v1, $v0, 1 -.L7F050344: -/* 084E74 7F050344 24010001 */ li $at, 1 -/* 084E78 7F050348 14410002 */ bne $v0, $at, .L7F050354 -/* 084E7C 7F05034C 00602025 */ move $a0, $v1 -/* 084E80 7F050350 24040001 */ li $a0, 1 -.L7F050354: -/* 084E84 7F050354 96050082 */ lhu $a1, 0x82($s0) -/* 084E88 7F050358 AFA4004C */ sw $a0, 0x4c($sp) -/* 084E8C 7F05035C AFA30020 */ sw $v1, 0x20($sp) -/* 084E90 7F050360 0FC26919 */ jal get_num_players -/* 084E94 7F050364 AFA50050 */ sw $a1, 0x50($sp) -/* 084E98 7F050368 24010001 */ li $at, 1 -/* 084E9C 7F05036C 8FA30020 */ lw $v1, 0x20($sp) -/* 084EA0 7F050370 8FA4004C */ lw $a0, 0x4c($sp) -/* 084EA4 7F050374 14410009 */ bne $v0, $at, .L7F05039C -/* 084EA8 7F050378 8FA50050 */ lw $a1, 0x50($sp) -/* 084EAC 7F05037C 44852000 */ mtc1 $a1, $f4 -/* 084EB0 7F050380 3C018003 */ lui $at, %hi(solo_ammo_multiplier) -/* 084EB4 7F050384 C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) -/* 084EB8 7F050388 468021A0 */ cvt.s.w $f6, $f4 -/* 084EBC 7F05038C 46083282 */ mul.s $f10, $f6, $f8 -/* 084EC0 7F050390 4600540D */ trunc.w.s $f16, $f10 -/* 084EC4 7F050394 44058000 */ mfc1 $a1, $f16 -/* 084EC8 7F050398 00000000 */ nop -.L7F05039C: -/* 084ECC 7F05039C 00003025 */ move $a2, $zero -/* 084ED0 7F0503A0 8FA70074 */ lw $a3, 0x74($sp) -/* 084ED4 7F0503A4 0FC13E9A */ jal add_ammo_to_inventory -/* 084ED8 7F0503A8 AFA30020 */ sw $v1, 0x20($sp) -/* 084EDC 7F0503AC 8FA20020 */ lw $v0, 0x20($sp) -/* 084EE0 7F0503B0 2401000D */ li $at, 13 -/* 084EE4 7F0503B4 26100004 */ addiu $s0, $s0, 4 -/* 084EE8 7F0503B8 5441FFE2 */ bnel $v0, $at, .L7F050344 -/* 084EEC 7F0503BC 24430001 */ addiu $v1, $v0, 1 -/* 084EF0 7F0503C0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 084EF4 7F0503C4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 084EF8 7F0503C8 240500EA */ li $a1, 234 -/* 084EFC 7F0503CC 0C002382 */ jal play_sfx_a1 -/* 084F00 7F0503D0 00003025 */ move $a2, $zero -/* 084F04 7F0503D4 100000A7 */ b .L7F050674 -/* 084F08 7F0503D8 24030001 */ li $v1, 1 -interact_weapon_object: -/* 084F0C 7F0503DC AFA00044 */ sw $zero, 0x44($sp) -/* 084F10 7F0503E0 80640080 */ lb $a0, 0x80($v1) -/* 084F14 7F0503E4 0FC13E04 */ jal set_sound_effect_for_weapontype_collection -/* 084F18 7F0503E8 AFA30048 */ sw $v1, 0x48($sp) -/* 084F1C 7F0503EC 8FAD0048 */ lw $t5, 0x48($sp) -/* 084F20 7F0503F0 2401001D */ li $at, 29 -/* 084F24 7F0503F4 81A40080 */ lb $a0, 0x80($t5) -/* 084F28 7F0503F8 54810006 */ bnel $a0, $at, .L7F050414 -/* 084F2C 7F0503FC 24010058 */ li $at, 88 -/* 084F30 7F050400 0FC23122 */ jal add_item_to_inventory -/* 084F34 7F050404 2404001E */ li $a0, 30 -/* 084F38 7F050408 10000007 */ b .L7F050428 -/* 084F3C 7F05040C 8FAE006C */ lw $t6, 0x6c($sp) -/* 084F40 7F050410 24010058 */ li $at, 88 -.L7F050414: -/* 084F44 7F050414 14810003 */ bne $a0, $at, .L7F050424 -/* 084F48 7F050418 24050058 */ li $a1, 88 -/* 084F4C 7F05041C 0FC17645 */ jal draw_item_in_hand_has_more_ammo -/* 084F50 7F050420 00002025 */ move $a0, $zero -.L7F050424: -/* 084F54 7F050424 8FAE006C */ lw $t6, 0x6c($sp) -.L7F050428: -/* 084F58 7F050428 8FB90048 */ lw $t9, 0x48($sp) -/* 084F5C 7F05042C 8DCF0064 */ lw $t7, 0x64($t6) -/* 084F60 7F050430 31F80400 */ andi $t8, $t7, 0x400 -/* 084F64 7F050434 1300001B */ beqz $t8, .L7F0504A4 -/* 084F68 7F050438 00000000 */ nop -/* 084F6C 7F05043C 83280080 */ lb $t0, 0x80($t9) -/* 084F70 7F050440 29010021 */ slti $at, $t0, 0x21 -/* 084F74 7F050444 50200004 */ beql $at, $zero, .L7F050458 -/* 084F78 7F050448 8FA90074 */ lw $t1, 0x74($sp) -/* 084F7C 7F05044C 0FC231D9 */ jal sub_GAME_7F08C764 -/* 084F80 7F050450 8FA40070 */ lw $a0, 0x70($sp) -/* 084F84 7F050454 8FA90074 */ lw $t1, 0x74($sp) -.L7F050458: -/* 084F88 7F050458 5120000F */ beql $t1, $zero, .L7F050498 -/* 084F8C 7F05045C 8FAC0048 */ lw $t4, 0x48($sp) -/* 084F90 7F050460 0FC23657 */ jal sub_GAME_7F08D95C -/* 084F94 7F050464 8FA4006C */ lw $a0, 0x6c($sp) -/* 084F98 7F050468 10400005 */ beqz $v0, .L7F050480 -/* 084F9C 7F05046C 00402025 */ move $a0, $v0 -/* 084FA0 7F050470 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 084FA4 7F050474 00000000 */ nop -/* 084FA8 7F050478 10000005 */ b .L7F050490 -/* 084FAC 7F05047C 240B0001 */ li $t3, 1 -.L7F050480: -/* 084FB0 7F050480 8FAA0048 */ lw $t2, 0x48($sp) -/* 084FB4 7F050484 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner -/* 084FB8 7F050488 81440080 */ lb $a0, 0x80($t2) -/* 084FBC 7F05048C 240B0001 */ li $t3, 1 -.L7F050490: -/* 084FC0 7F050490 AFAB0044 */ sw $t3, 0x44($sp) -/* 084FC4 7F050494 8FAC0048 */ lw $t4, 0x48($sp) -.L7F050498: -/* 084FC8 7F050498 24030004 */ li $v1, 4 -/* 084FCC 7F05049C 1000001C */ b .L7F050510 -/* 084FD0 7F0504A0 81840080 */ lb $a0, 0x80($t4) -.L7F0504A4: -/* 084FD4 7F0504A4 0FC231D9 */ jal sub_GAME_7F08C764 -/* 084FD8 7F0504A8 8FA40070 */ lw $a0, 0x70($sp) -/* 084FDC 7F0504AC 10400002 */ beqz $v0, .L7F0504B8 -/* 084FE0 7F0504B0 240D0001 */ li $t5, 1 -/* 084FE4 7F0504B4 AFAD0044 */ sw $t5, 0x44($sp) -.L7F0504B8: -/* 084FE8 7F0504B8 8FAE0074 */ lw $t6, 0x74($sp) -/* 084FEC 7F0504BC 8FAF0048 */ lw $t7, 0x48($sp) -/* 084FF0 7F0504C0 51C00011 */ beql $t6, $zero, .L7F050508 -/* 084FF4 7F0504C4 8FA90048 */ lw $t1, 0x48($sp) -/* 084FF8 7F0504C8 0FC23669 */ jal sub_GAME_7F08D9A4 -/* 084FFC 7F0504CC 81E40080 */ lb $a0, 0x80($t7) -/* 085000 7F0504D0 10400006 */ beqz $v0, .L7F0504EC -/* 085004 7F0504D4 00402025 */ move $a0, $v0 -/* 085008 7F0504D8 24180001 */ li $t8, 1 -/* 08500C 7F0504DC 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 085010 7F0504E0 AFB80044 */ sw $t8, 0x44($sp) -/* 085014 7F0504E4 10000008 */ b .L7F050508 -/* 085018 7F0504E8 8FA90048 */ lw $t1, 0x48($sp) -.L7F0504EC: -/* 08501C 7F0504EC 8FB90044 */ lw $t9, 0x44($sp) -/* 085020 7F0504F0 8FA80048 */ lw $t0, 0x48($sp) -/* 085024 7F0504F4 53200004 */ beql $t9, $zero, .L7F050508 -/* 085028 7F0504F8 8FA90048 */ lw $t1, 0x48($sp) -/* 08502C 7F0504FC 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner -/* 085030 7F050500 81040080 */ lb $a0, 0x80($t0) -/* 085034 7F050504 8FA90048 */ lw $t1, 0x48($sp) -.L7F050508: -/* 085038 7F050508 24030001 */ li $v1, 1 -/* 08503C 7F05050C 81240080 */ lb $a0, 0x80($t1) -.L7F050510: -/* 085040 7F050510 0FC1A50B */ jal get_ammo_type_for_weapon -/* 085044 7F050514 AFA30068 */ sw $v1, 0x68($sp) -/* 085048 7F050518 8FA30068 */ lw $v1, 0x68($sp) -/* 08504C 7F05051C 10400055 */ beqz $v0, .L7F050674 -/* 085050 7F050520 00408025 */ move $s0, $v0 -/* 085054 7F050524 8FA40048 */ lw $a0, 0x48($sp) -/* 085058 7F050528 0FC13F3E */ jal ammo_collected_from_weapon -/* 08505C 7F05052C AFA30068 */ sw $v1, 0x68($sp) -/* 085060 7F050530 8FA30068 */ lw $v1, 0x68($sp) -/* 085064 7F050534 1840004F */ blez $v0, .L7F050674 -/* 085068 7F050538 AFA20034 */ sw $v0, 0x34($sp) -/* 08506C 7F05053C 02002025 */ move $a0, $s0 -/* 085070 7F050540 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 085074 7F050544 AFA30068 */ sw $v1, 0x68($sp) -/* 085078 7F050548 AFA20024 */ sw $v0, 0x24($sp) -/* 08507C 7F05054C 0FC1A4B5 */ jal get_max_ammo_for_type -/* 085080 7F050550 02002025 */ move $a0, $s0 -/* 085084 7F050554 8FAA0024 */ lw $t2, 0x24($sp) -/* 085088 7F050558 8FA30068 */ lw $v1, 0x68($sp) -/* 08508C 7F05055C 02002025 */ move $a0, $s0 -/* 085090 7F050560 0142082A */ slt $at, $t2, $v0 -/* 085094 7F050564 50200044 */ beql $at, $zero, .L7F050678 -/* 085098 7F050568 24010001 */ li $at, 1 -/* 08509C 7F05056C 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 0850A0 7F050570 AFA30068 */ sw $v1, 0x68($sp) -/* 0850A4 7F050574 8FAB0034 */ lw $t3, 0x34($sp) -/* 0850A8 7F050578 02002025 */ move $a0, $s0 -/* 0850AC 7F05057C 0FC1A44C */ jal give_cur_player_ammo -/* 0850B0 7F050580 004B2821 */ addu $a1, $v0, $t3 -/* 0850B4 7F050584 8FAC0044 */ lw $t4, 0x44($sp) -/* 0850B8 7F050588 8FA30068 */ lw $v1, 0x68($sp) -/* 0850BC 7F05058C 8FAD0074 */ lw $t5, 0x74($sp) -/* 0850C0 7F050590 55800039 */ bnezl $t4, .L7F050678 -/* 0850C4 7F050594 24010001 */ li $at, 1 -/* 0850C8 7F050598 11A00036 */ beqz $t5, .L7F050674 -/* 0850CC 7F05059C 02002025 */ move $a0, $s0 -/* 0850D0 7F0505A0 8FA50034 */ lw $a1, 0x34($sp) -/* 0850D4 7F0505A4 0FC13E7E */ jal display_text_when_ammo_collected -/* 0850D8 7F0505A8 AFA30068 */ sw $v1, 0x68($sp) -/* 0850DC 7F0505AC 10000031 */ b .L7F050674 -/* 0850E0 7F0505B0 8FA30068 */ lw $v1, 0x68($sp) -interact_bodyarmor_object: -/* 0850E4 7F0505B4 0FC228C3 */ jal add_BONDdata_watch_armor -/* 0850E8 7F0505B8 C46C0084 */ lwc1 $f12, 0x84($v1) -/* 0850EC 7F0505BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0850F0 7F0505C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0850F4 7F0505C4 24050051 */ li $a1, 81 -/* 0850F8 7F0505C8 0C002382 */ jal play_sfx_a1 -/* 0850FC 7F0505CC 00003025 */ move $a2, $zero -/* 085100 7F0505D0 8FAE0074 */ lw $t6, 0x74($sp) -/* 085104 7F0505D4 11C00013 */ beqz $t6, .L7F050624 -/* 085108 7F0505D8 00000000 */ nop -/* 08510C 7F0505DC 0FC23657 */ jal sub_GAME_7F08D95C -/* 085110 7F0505E0 8FA4006C */ lw $a0, 0x6c($sp) -/* 085114 7F0505E4 1440000D */ bnez $v0, .L7F05061C -/* 085118 7F0505E8 00402025 */ move $a0, $v0 -/* 08511C 7F0505EC 0FC26919 */ jal get_num_players -/* 085120 7F0505F0 00000000 */ nop -/* 085124 7F0505F4 28410003 */ slti $at, $v0, 3 -/* 085128 7F0505F8 10200005 */ beqz $at, .L7F050610 -/* 08512C 7F0505FC 00000000 */ nop -/* 085130 7F050600 0FC30776 */ jal get_textptr_for_textID -/* 085134 7F050604 3404A43D */ li $a0, 42045 -/* 085138 7F050608 10000004 */ b .L7F05061C -/* 08513C 7F05060C 00402025 */ move $a0, $v0 -.L7F050610: -/* 085140 7F050610 0FC30776 */ jal get_textptr_for_textID -/* 085144 7F050614 3404A43E */ li $a0, 42046 -/* 085148 7F050618 00402025 */ move $a0, $v0 -.L7F05061C: -/* 08514C 7F05061C 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 085150 7F050620 00000000 */ nop -.L7F050624: -/* 085154 7F050624 10000013 */ b .L7F050674 -/* 085158 7F050628 24030001 */ li $v1, 1 -interact_default_object: -.L7F05062C: -/* 08515C 7F05062C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 085160 7F050630 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 085164 7F050634 240500E5 */ li $a1, 229 -/* 085168 7F050638 0C002382 */ jal play_sfx_a1 -/* 08516C 7F05063C 00003025 */ move $a2, $zero -/* 085170 7F050640 8FAF0074 */ lw $t7, 0x74($sp) -/* 085174 7F050644 51E0000B */ beql $t7, $zero, .L7F050674 -/* 085178 7F050648 24030004 */ li $v1, 4 -/* 08517C 7F05064C 0FC23657 */ jal sub_GAME_7F08D95C -/* 085180 7F050650 8FA4006C */ lw $a0, 0x6c($sp) -/* 085184 7F050654 14400004 */ bnez $v0, .L7F050668 -/* 085188 7F050658 00402025 */ move $a0, $v0 -/* 08518C 7F05065C 0FC30776 */ jal get_textptr_for_textID -/* 085190 7F050660 3404A43F */ li $a0, 42047 -/* 085194 7F050664 00402025 */ move $a0, $v0 -.L7F050668: -/* 085198 7F050668 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 08519C 7F05066C 00000000 */ nop -/* 0851A0 7F050670 24030004 */ li $v1, 4 -.L7F050674: -/* 0851A4 7F050674 24010001 */ li $at, 1 -.L7F050678: -/* 0851A8 7F050678 1461000D */ bne $v1, $at, .L7F0506B0 -/* 0851AC 7F05067C 8FB8006C */ lw $t8, 0x6c($sp) -/* 0851B0 7F050680 8F190064 */ lw $t9, 0x64($t8) -/* 0851B4 7F050684 33280010 */ andi $t0, $t9, 0x10 -/* 0851B8 7F050688 15000009 */ bnez $t0, .L7F0506B0 -/* 0851BC 7F05068C 00000000 */ nop -/* 0851C0 7F050690 93060002 */ lbu $a2, 2($t8) -/* 0851C4 7F050694 03002025 */ move $a0, $t8 -/* 0851C8 7F050698 00002825 */ move $a1, $zero -/* 0851CC 7F05069C 30C90004 */ andi $t1, $a2, 4 -/* 0851D0 7F0506A0 0FC10366 */ jal sub_GAME_7F040D98 -/* 0851D4 7F0506A4 01203025 */ move $a2, $t1 -/* 0851D8 7F0506A8 10000007 */ b .L7F0506C8 -/* 0851DC 7F0506AC 24020001 */ li $v0, 1 -.L7F0506B0: -/* 0851E0 7F0506B0 10600005 */ beqz $v1, .L7F0506C8 -/* 0851E4 7F0506B4 00001025 */ move $v0, $zero -/* 0851E8 7F0506B8 0FC231C9 */ jal sub_GAME_7F08C724 -/* 0851EC 7F0506BC 8FA40070 */ lw $a0, 0x70($sp) -/* 0851F0 7F0506C0 10000001 */ b .L7F0506C8 -/* 0851F4 7F0506C4 24020004 */ li $v0, 4 -.L7F0506C8: -/* 0851F8 7F0506C8 8FBF001C */ lw $ra, 0x1c($sp) -/* 0851FC 7F0506CC 8FB00018 */ lw $s0, 0x18($sp) -/* 085200 7F0506D0 27BD0070 */ addiu $sp, $sp, 0x70 -/* 085204 7F0506D4 03E00008 */ jr $ra -/* 085208 7F0506D8 00000000 */ nop -) -#endif -#endif - - - - -#ifdef NONMATCHING -void object_collectability_routines(void) { - -} -#else - -#ifdef VERSION_US -GLOBAL_ASM( -.late_rodata -glabel D_800532E0 -.word 0xbf490fdb /*-0.78539819*/ -glabel D_800532E4 -.word 0x47ef4200 /*122500.0*/ -glabel D_800532E8 -.word 0x461c4000 /*10000.0*/ -glabel D_800532EC -.word 0x47742400 /*62500.0*/ -glabel D_800532F0 -.word 0x40490fdb /*3.1415927*/ -.text -glabel object_collectability_routines -/* 08520C 7F0506DC 27BDFF78 */ addiu $sp, $sp, -0x88 -/* 085210 7F0506E0 AFBF002C */ sw $ra, 0x2c($sp) -/* 085214 7F0506E4 AFA40088 */ sw $a0, 0x88($sp) -/* 085218 7F0506E8 8C840004 */ lw $a0, 4($a0) -/* 08521C 7F0506EC 0FC13803 */ jal check_if_collectable_object -/* 085220 7F0506F0 AFA40084 */ sw $a0, 0x84($sp) -/* 085224 7F0506F4 1040000B */ beqz $v0, .L7F050724 -/* 085228 7F0506F8 8FA40084 */ lw $a0, 0x84($sp) -/* 08522C 7F0506FC 908F0003 */ lbu $t7, 3($a0) -/* 085230 7F050700 24010011 */ li $at, 17 -/* 085234 7F050704 51E10008 */ beql $t7, $at, .L7F050728 -/* 085238 7F050708 8FA40084 */ lw $a0, 0x84($sp) -/* 08523C 7F05070C 8C820008 */ lw $v0, 8($a0) -/* 085240 7F050710 0002C2C0 */ sll $t8, $v0, 0xb -/* 085244 7F050714 0703000B */ bgezl $t8, .L7F050744 -/* 085248 7F050718 00024B00 */ sll $t1, $v0, 0xc -/* 08524C 7F05071C 10000180 */ b .L7F050D20 -/* 085250 7F050720 00001025 */ move $v0, $zero -.L7F050724: -/* 085254 7F050724 8FA40084 */ lw $a0, 0x84($sp) -.L7F050728: -/* 085258 7F050728 8C820008 */ lw $v0, 8($a0) -/* 08525C 7F05072C 0002CB40 */ sll $t9, $v0, 0xd -/* 085260 7F050730 07220004 */ bltzl $t9, .L7F050744 -/* 085264 7F050734 00024B00 */ sll $t1, $v0, 0xc -/* 085268 7F050738 10000179 */ b .L7F050D20 -/* 08526C 7F05073C 00001025 */ move $v0, $zero -/* 085270 7F050740 00024B00 */ sll $t1, $v0, 0xc -.L7F050744: -/* 085274 7F050744 05230004 */ bgezl $t1, .L7F050758 -/* 085278 7F050748 8C8A0064 */ lw $t2, 0x64($a0) -/* 08527C 7F05074C 10000174 */ b .L7F050D20 -/* 085280 7F050750 00001025 */ move $v0, $zero -/* 085284 7F050754 8C8A0064 */ lw $t2, 0x64($a0) -.L7F050758: -/* 085288 7F050758 314B0080 */ andi $t3, $t2, 0x80 -/* 08528C 7F05075C 1160000A */ beqz $t3, .L7F050788 -/* 085290 7F050760 00000000 */ nop -/* 085294 7F050764 8C82006C */ lw $v0, 0x6c($a0) -/* 085298 7F050768 8C4C00BC */ lw $t4, 0xbc($v0) -/* 08529C 7F05076C 19800006 */ blez $t4, .L7F050788 -/* 0852A0 7F050770 00000000 */ nop -/* 0852A4 7F050774 8C4D0090 */ lw $t5, 0x90($v0) -/* 0852A8 7F050778 15A00003 */ bnez $t5, .L7F050788 -/* 0852AC 7F05077C 00000000 */ nop -/* 0852B0 7F050780 10000167 */ b .L7F050D20 -/* 0852B4 7F050784 00001025 */ move $v0, $zero -.L7F050788: -/* 0852B8 7F050788 0FC0F9EB */ jal sub_GAME_7F03E7AC -/* 0852BC 7F05078C 00000000 */ nop -/* 0852C0 7F050790 14400003 */ bnez $v0, .L7F0507A0 -/* 0852C4 7F050794 8FA50084 */ lw $a1, 0x84($sp) -/* 0852C8 7F050798 10000161 */ b .L7F050D20 -/* 0852CC 7F05079C 00001025 */ move $v0, $zero -.L7F0507A0: -/* 0852D0 7F0507A0 90A20003 */ lbu $v0, 3($a1) -/* 0852D4 7F0507A4 24010008 */ li $at, 8 -/* 0852D8 7F0507A8 8FAE0088 */ lw $t6, 0x88($sp) -/* 0852DC 7F0507AC 54410064 */ bnel $v0, $at, .L7F050940 -/* 0852E0 7F0507B0 24010007 */ li $at, 7 -/* 0852E4 7F0507B4 8DC30004 */ lw $v1, 4($t6) -/* 0852E8 7F0507B8 2401001A */ li $at, 26 -/* 0852EC 7F0507BC 80640080 */ lb $a0, 0x80($v1) -/* 0852F0 7F0507C0 10810003 */ beq $a0, $at, .L7F0507D0 -/* 0852F4 7F0507C4 24010057 */ li $at, 87 -/* 0852F8 7F0507C8 5481000B */ bnel $a0, $at, .L7F0507F8 -/* 0852FC 7F0507CC 2401001D */ li $at, 29 -.L7F0507D0: -/* 085300 7F0507D0 846F0082 */ lh $t7, 0x82($v1) -/* 085304 7F0507D4 05E10005 */ bgez $t7, .L7F0507EC -/* 085308 7F0507D8 00000000 */ nop -/* 08530C 7F0507DC 8CB80064 */ lw $t8, 0x64($a1) -/* 085310 7F0507E0 33190004 */ andi $t9, $t8, 4 -/* 085314 7F0507E4 53200004 */ beql $t9, $zero, .L7F0507F8 -/* 085318 7F0507E8 2401001D */ li $at, 29 -.L7F0507EC: -/* 08531C 7F0507EC 1000014C */ b .L7F050D20 -/* 085320 7F0507F0 00001025 */ move $v0, $zero -/* 085324 7F0507F4 2401001D */ li $at, 29 -.L7F0507F8: -/* 085328 7F0507F8 1081000D */ beq $a0, $at, .L7F050830 -/* 08532C 7F0507FC 2401001C */ li $at, 28 -/* 085330 7F050800 1081000B */ beq $a0, $at, .L7F050830 -/* 085334 7F050804 2401001B */ li $at, 27 -/* 085338 7F050808 10810009 */ beq $a0, $at, .L7F050830 -/* 08533C 7F05080C 24010021 */ li $at, 33 -/* 085340 7F050810 10810007 */ beq $a0, $at, .L7F050830 -/* 085344 7F050814 2401002F */ li $at, 47 -/* 085348 7F050818 10810005 */ beq $a0, $at, .L7F050830 -/* 08534C 7F05081C 24010030 */ li $at, 48 -/* 085350 7F050820 10810003 */ beq $a0, $at, .L7F050830 -/* 085354 7F050824 24010022 */ li $at, 34 -/* 085358 7F050828 5481000B */ bnel $a0, $at, .L7F050858 -/* 08535C 7F05082C 24010056 */ li $at, 86 -.L7F050830: -/* 085360 7F050830 84690082 */ lh $t1, 0x82($v1) -/* 085364 7F050834 05210005 */ bgez $t1, .L7F05084C -/* 085368 7F050838 00000000 */ nop -/* 08536C 7F05083C 8CAA0064 */ lw $t2, 0x64($a1) -/* 085370 7F050840 314B0004 */ andi $t3, $t2, 4 -/* 085374 7F050844 51600004 */ beql $t3, $zero, .L7F050858 -/* 085378 7F050848 24010056 */ li $at, 86 -.L7F05084C: -/* 08537C 7F05084C 10000134 */ b .L7F050D20 -/* 085380 7F050850 00001025 */ move $v0, $zero -/* 085384 7F050854 24010056 */ li $at, 86 -.L7F050858: -/* 085388 7F050858 14810007 */ bne $a0, $at, .L7F050878 -/* 08538C 7F05085C 00000000 */ nop -/* 085390 7F050860 8CAC0064 */ lw $t4, 0x64($a1) -/* 085394 7F050864 318D0080 */ andi $t5, $t4, 0x80 -/* 085398 7F050868 11A00003 */ beqz $t5, .L7F050878 -/* 08539C 7F05086C 00000000 */ nop -/* 0853A0 7F050870 1000012B */ b .L7F050D20 -/* 0853A4 7F050874 00001025 */ move $v0, $zero -.L7F050878: -/* 0853A8 7F050878 0FC230C5 */ jal is_weapon_in_inv -/* 0853AC 7F05087C AFA30080 */ sw $v1, 0x80($sp) -/* 0853B0 7F050880 1040009B */ beqz $v0, .L7F050AF0 -/* 0853B4 7F050884 8FA30080 */ lw $v1, 0x80($sp) -/* 0853B8 7F050888 80640080 */ lb $a0, 0x80($v1) -/* 0853BC 7F05088C 0FC1A50B */ jal get_ammo_type_for_weapon -/* 0853C0 7F050890 AFA30080 */ sw $v1, 0x80($sp) -/* 0853C4 7F050894 10400096 */ beqz $v0, .L7F050AF0 -/* 0853C8 7F050898 8FA30080 */ lw $v1, 0x80($sp) -/* 0853CC 7F05089C 80640080 */ lb $a0, 0x80($v1) -/* 0853D0 7F0508A0 0FC1A514 */ jal get_ammo_count_for_weapon -/* 0853D4 7F0508A4 AFA30080 */ sw $v1, 0x80($sp) -/* 0853D8 7F0508A8 8FA30080 */ lw $v1, 0x80($sp) -/* 0853DC 7F0508AC 80640080 */ lb $a0, 0x80($v1) -/* 0853E0 7F0508B0 0FC1A52C */ jal get_max_ammo_for_weapon -/* 0853E4 7F0508B4 AFA20038 */ sw $v0, 0x38($sp) -/* 0853E8 7F0508B8 8FA60038 */ lw $a2, 0x38($sp) -/* 0853EC 7F0508BC 8FA30080 */ lw $v1, 0x80($sp) -/* 0853F0 7F0508C0 00C2082A */ slt $at, $a2, $v0 -/* 0853F4 7F0508C4 1420008A */ bnez $at, .L7F050AF0 -/* 0853F8 7F0508C8 00000000 */ nop -/* 0853FC 7F0508CC 8C620084 */ lw $v0, 0x84($v1) -/* 085400 7F0508D0 14400004 */ bnez $v0, .L7F0508E4 -/* 085404 7F0508D4 00000000 */ nop -/* 085408 7F0508D8 806E0081 */ lb $t6, 0x81($v1) -/* 08540C 7F0508DC 05C00015 */ bltz $t6, .L7F050934 -/* 085410 7F0508E0 00000000 */ nop -.L7F0508E4: -/* 085414 7F0508E4 50400005 */ beql $v0, $zero, .L7F0508FC -/* 085418 7F0508E8 80650081 */ lb $a1, 0x81($v1) -/* 08541C 7F0508EC 80450080 */ lb $a1, 0x80($v0) -/* 085420 7F0508F0 10000003 */ b .L7F050900 -/* 085424 7F0508F4 00A02025 */ move $a0, $a1 -/* 085428 7F0508F8 80650081 */ lb $a1, 0x81($v1) -.L7F0508FC: -/* 08542C 7F0508FC 00A02025 */ move $a0, $a1 -.L7F050900: -/* 085430 7F050900 8C6F0008 */ lw $t7, 8($v1) -/* 085434 7F050904 000FC0C0 */ sll $t8, $t7, 3 -/* 085438 7F050908 07030004 */ bgezl $t8, .L7F05091C -/* 08543C 7F05090C 80640080 */ lb $a0, 0x80($v1) -/* 085440 7F050910 10000002 */ b .L7F05091C -/* 085444 7F050914 80650080 */ lb $a1, 0x80($v1) -/* 085448 7F050918 80640080 */ lb $a0, 0x80($v1) -.L7F05091C: -/* 08544C 7F05091C 0FC230E7 */ jal is_item_for_hand_in_inventory -/* 085450 7F050920 00000000 */ nop -/* 085454 7F050924 10400072 */ beqz $v0, .L7F050AF0 -/* 085458 7F050928 00000000 */ nop -/* 08545C 7F05092C 100000FC */ b .L7F050D20 -/* 085460 7F050930 00001025 */ move $v0, $zero -.L7F050934: -/* 085464 7F050934 100000FA */ b .L7F050D20 -/* 085468 7F050938 00001025 */ move $v0, $zero -/* 08546C 7F05093C 24010007 */ li $at, 7 -.L7F050940: -/* 085470 7F050940 1441000F */ bne $v0, $at, .L7F050980 -/* 085474 7F050944 8FB90088 */ lw $t9, 0x88($sp) -/* 085478 7F050948 8F230004 */ lw $v1, 4($t9) -/* 08547C 7F05094C 8C640080 */ lw $a0, 0x80($v1) -/* 085480 7F050950 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 085484 7F050954 AFA30074 */ sw $v1, 0x74($sp) -/* 085488 7F050958 8FA30074 */ lw $v1, 0x74($sp) -/* 08548C 7F05095C 8C640080 */ lw $a0, 0x80($v1) -/* 085490 7F050960 0FC1A4B5 */ jal get_max_ammo_for_type -/* 085494 7F050964 AFA20038 */ sw $v0, 0x38($sp) -/* 085498 7F050968 8FA60038 */ lw $a2, 0x38($sp) -/* 08549C 7F05096C 00C2082A */ slt $at, $a2, $v0 -/* 0854A0 7F050970 1420005F */ bnez $at, .L7F050AF0 -/* 0854A4 7F050974 00000000 */ nop -/* 0854A8 7F050978 100000E9 */ b .L7F050D20 -/* 0854AC 7F05097C 00001025 */ move $v0, $zero -.L7F050980: -/* 0854B0 7F050980 24010014 */ li $at, 20 -/* 0854B4 7F050984 1441002C */ bne $v0, $at, .L7F050A38 -/* 0854B8 7F050988 8FA90088 */ lw $t1, 0x88($sp) -/* 0854BC 7F05098C 8D2A0004 */ lw $t2, 4($t1) -/* 0854C0 7F050990 240B0001 */ li $t3, 1 -/* 0854C4 7F050994 AFAB006C */ sw $t3, 0x6c($sp) -/* 0854C8 7F050998 00A02025 */ move $a0, $a1 -/* 0854CC 7F05099C 0FC0FFF0 */ jal do_something_if_object_destroyed -/* 0854D0 7F0509A0 AFAA0070 */ sw $t2, 0x70($sp) -/* 0854D4 7F0509A4 10400003 */ beqz $v0, .L7F0509B4 -/* 0854D8 7F0509A8 8FA30070 */ lw $v1, 0x70($sp) -/* 0854DC 7F0509AC 100000DC */ b .L7F050D20 -/* 0854E0 7F0509B0 00001025 */ move $v0, $zero -.L7F0509B4: -/* 0854E4 7F0509B4 00001025 */ move $v0, $zero -.L7F0509B8: -/* 0854E8 7F0509B8 24450001 */ addiu $a1, $v0, 1 -/* 0854EC 7F0509BC 24010001 */ li $at, 1 -/* 0854F0 7F0509C0 14410002 */ bne $v0, $at, .L7F0509CC -/* 0854F4 7F0509C4 00A02025 */ move $a0, $a1 -/* 0854F8 7F0509C8 24040001 */ li $a0, 1 -.L7F0509CC: -/* 0854FC 7F0509CC 946C0082 */ lhu $t4, 0x82($v1) -/* 085500 7F0509D0 59800011 */ blezl $t4, .L7F050A18 -/* 085504 7F0509D4 2401000D */ li $at, 13 -/* 085508 7F0509D8 AFA30030 */ sw $v1, 0x30($sp) -/* 08550C 7F0509DC AFA40064 */ sw $a0, 0x64($sp) -/* 085510 7F0509E0 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory -/* 085514 7F0509E4 AFA50034 */ sw $a1, 0x34($sp) -/* 085518 7F0509E8 8FA40064 */ lw $a0, 0x64($sp) -/* 08551C 7F0509EC 0FC1A4B5 */ jal get_max_ammo_for_type -/* 085520 7F0509F0 AFA20038 */ sw $v0, 0x38($sp) -/* 085524 7F0509F4 8FA60038 */ lw $a2, 0x38($sp) -/* 085528 7F0509F8 8FA30030 */ lw $v1, 0x30($sp) -/* 08552C 7F0509FC 8FA50034 */ lw $a1, 0x34($sp) -/* 085530 7F050A00 00C2082A */ slt $at, $a2, $v0 -/* 085534 7F050A04 50200004 */ beql $at, $zero, .L7F050A18 -/* 085538 7F050A08 2401000D */ li $at, 13 -/* 08553C 7F050A0C 10000005 */ b .L7F050A24 -/* 085540 7F050A10 AFA0006C */ sw $zero, 0x6c($sp) -/* 085544 7F050A14 2401000D */ li $at, 13 -.L7F050A18: -/* 085548 7F050A18 00A01025 */ move $v0, $a1 -/* 08554C 7F050A1C 14A1FFE6 */ bne $a1, $at, .L7F0509B8 -/* 085550 7F050A20 24630004 */ addiu $v1, $v1, 4 -.L7F050A24: -/* 085554 7F050A24 8FAD006C */ lw $t5, 0x6c($sp) -/* 085558 7F050A28 11A00031 */ beqz $t5, .L7F050AF0 -/* 08555C 7F050A2C 00000000 */ nop -/* 085560 7F050A30 100000BB */ b .L7F050D20 -/* 085564 7F050A34 00001025 */ move $v0, $zero -.L7F050A38: -/* 085568 7F050A38 24010015 */ li $at, 21 -/* 08556C 7F050A3C 1441002C */ bne $v0, $at, .L7F050AF0 -/* 085570 7F050A40 8FAE0088 */ lw $t6, 0x88($sp) -/* 085574 7F050A44 8DCF0004 */ lw $t7, 4($t6) -/* 085578 7F050A48 AFA0005C */ sw $zero, 0x5c($sp) -/* 08557C 7F050A4C 0FC228BF */ jal get_BONDdata_watch_armor -/* 085580 7F050A50 AFAF0060 */ sw $t7, 0x60($sp) -/* 085584 7F050A54 8FB80060 */ lw $t8, 0x60($sp) -/* 085588 7F050A58 24190001 */ li $t9, 1 -/* 08558C 7F050A5C C7040084 */ lwc1 $f4, 0x84($t8) -/* 085590 7F050A60 4600203E */ c.le.s $f4, $f0 -/* 085594 7F050A64 00000000 */ nop -/* 085598 7F050A68 45000003 */ bc1f .L7F050A78 -/* 08559C 7F050A6C 00000000 */ nop -/* 0855A0 7F050A70 1000001A */ b .L7F050ADC -/* 0855A4 7F050A74 AFB9005C */ sw $t9, 0x5c($sp) -.L7F050A78: -/* 0855A8 7F050A78 0FC26919 */ jal get_num_players -/* 0855AC 7F050A7C 00000000 */ nop -/* 0855B0 7F050A80 28410002 */ slti $at, $v0, 2 -/* 0855B4 7F050A84 54200016 */ bnezl $at, .L7F050AE0 -/* 0855B8 7F050A88 8FAB005C */ lw $t3, 0x5c($sp) -/* 0855BC 7F050A8C 0FC051D6 */ jal get_scenario -/* 0855C0 7F050A90 00000000 */ nop -/* 0855C4 7F050A94 24010002 */ li $at, 2 -/* 0855C8 7F050A98 14410008 */ bne $v0, $at, .L7F050ABC -/* 0855CC 7F050A9C 00401825 */ move $v1, $v0 -/* 0855D0 7F050AA0 0FC233E0 */ jal sub_GAME_7F08CF80 -/* 0855D4 7F050AA4 AFA20058 */ sw $v0, 0x58($sp) -/* 0855D8 7F050AA8 10400004 */ beqz $v0, .L7F050ABC -/* 0855DC 7F050AAC 8FA30058 */ lw $v1, 0x58($sp) -/* 0855E0 7F050AB0 24090001 */ li $t1, 1 -/* 0855E4 7F050AB4 10000009 */ b .L7F050ADC -/* 0855E8 7F050AB8 AFA9005C */ sw $t1, 0x5c($sp) -.L7F050ABC: -/* 0855EC 7F050ABC 24010003 */ li $at, 3 -/* 0855F0 7F050AC0 54610007 */ bnel $v1, $at, .L7F050AE0 -/* 0855F4 7F050AC4 8FAB005C */ lw $t3, 0x5c($sp) -/* 0855F8 7F050AC8 0FC233F0 */ jal sub_GAME_7F08CFC0 -/* 0855FC 7F050ACC 00000000 */ nop -/* 085600 7F050AD0 10400002 */ beqz $v0, .L7F050ADC -/* 085604 7F050AD4 240A0001 */ li $t2, 1 -/* 085608 7F050AD8 AFAA005C */ sw $t2, 0x5c($sp) -.L7F050ADC: -/* 08560C 7F050ADC 8FAB005C */ lw $t3, 0x5c($sp) -.L7F050AE0: -/* 085610 7F050AE0 11600003 */ beqz $t3, .L7F050AF0 -/* 085614 7F050AE4 00000000 */ nop -/* 085618 7F050AE8 1000008D */ b .L7F050D20 -/* 08561C 7F050AEC 00001025 */ move $v0, $zero -.L7F050AF0: -/* 085620 7F050AF0 0FC227C4 */ jal get_curplay_vertical_rotation_in_degrees -/* 085624 7F050AF4 00000000 */ nop -/* 085628 7F050AF8 3C018005 */ lui $at, %hi(D_800532E0) -/* 08562C 7F050AFC C42632E0 */ lwc1 $f6, %lo(D_800532E0)($at) -/* 085630 7F050B00 3C0C8008 */ lui $t4, %hi(pPlayer) -/* 085634 7F050B04 4606003C */ c.lt.s $f0, $f6 -/* 085638 7F050B08 00000000 */ nop -/* 08563C 7F050B0C 45000007 */ bc1f .L7F050B2C -/* 085640 7F050B10 00000000 */ nop -/* 085644 7F050B14 8D8CA0B0 */ lw $t4, %lo(pPlayer)($t4) -/* 085648 7F050B18 8D8D1270 */ lw $t5, 0x1270($t4) -/* 08564C 7F050B1C 05A10003 */ bgez $t5, .L7F050B2C -/* 085650 7F050B20 00000000 */ nop -/* 085654 7F050B24 1000007E */ b .L7F050D20 -/* 085658 7F050B28 00001025 */ move $v0, $zero -.L7F050B2C: -/* 08565C 7F050B2C 0FC225E6 */ jal get_curplayer_positiondata -/* 085660 7F050B30 00000000 */ nop -/* 085664 7F050B34 3C0F8008 */ lui $t7, %hi(pPlayer) -/* 085668 7F050B38 8FAE0084 */ lw $t6, 0x84($sp) -/* 08566C 7F050B3C 8DEFA0B0 */ lw $t7, %lo(pPlayer)($t7) -/* 085670 7F050B40 C44A0008 */ lwc1 $f10, 8($v0) -/* 085674 7F050B44 C452000C */ lwc1 $f18, 0xc($v0) -/* 085678 7F050B48 8DF81270 */ lw $t8, 0x1270($t7) -/* 08567C 7F050B4C C4460010 */ lwc1 $f6, 0x10($v0) -/* 085680 7F050B50 C5C80058 */ lwc1 $f8, 0x58($t6) -/* 085684 7F050B54 C5D0005C */ lwc1 $f16, 0x5c($t6) -/* 085688 7F050B58 C5C40060 */ lwc1 $f4, 0x60($t6) -/* 08568C 7F050B5C 2B01003C */ slti $at, $t8, 0x3c -/* 085690 7F050B60 00404025 */ move $t0, $v0 -/* 085694 7F050B64 460A4001 */ sub.s $f0, $f8, $f10 -/* 085698 7F050B68 46128301 */ sub.s $f12, $f16, $f18 -/* 08569C 7F050B6C 14200022 */ bnez $at, .L7F050BF8 -/* 0856A0 7F050B70 46062081 */ sub.s $f2, $f4, $f6 -/* 0856A4 7F050B74 46000202 */ mul.s $f8, $f0, $f0 -/* 0856A8 7F050B78 3C018005 */ lui $at, %hi(D_800532E4) -/* 0856AC 7F050B7C C43232E4 */ lwc1 $f18, %lo(D_800532E4)($at) -/* 0856B0 7F050B80 46021282 */ mul.s $f10, $f2, $f2 -/* 0856B4 7F050B84 3C01C3FA */ li $at, 0xC3FA0000 # -500.000000 -/* 0856B8 7F050B88 00001025 */ move $v0, $zero -/* 0856BC 7F050B8C 460A4400 */ add.s $f16, $f8, $f10 -/* 0856C0 7F050B90 4612803E */ c.le.s $f16, $f18 -/* 0856C4 7F050B94 00000000 */ nop -/* 0856C8 7F050B98 45000002 */ bc1f .L7F050BA4 -/* 0856CC 7F050B9C 00000000 */ nop -/* 0856D0 7F050BA0 24020001 */ li $v0, 1 -.L7F050BA4: -/* 0856D4 7F050BA4 10400012 */ beqz $v0, .L7F050BF0 -/* 0856D8 7F050BA8 00403025 */ move $a2, $v0 -/* 0856DC 7F050BAC 44812000 */ mtc1 $at, $f4 -/* 0856E0 7F050BB0 3C0143FA */ li $at, 0x43FA0000 # 500.000000 -/* 0856E4 7F050BB4 00001025 */ move $v0, $zero -/* 0856E8 7F050BB8 460C203E */ c.le.s $f4, $f12 -/* 0856EC 7F050BBC 00000000 */ nop -/* 0856F0 7F050BC0 45000002 */ bc1f .L7F050BCC -/* 0856F4 7F050BC4 00000000 */ nop -/* 0856F8 7F050BC8 24020001 */ li $v0, 1 -.L7F050BCC: -/* 0856FC 7F050BCC 10400008 */ beqz $v0, .L7F050BF0 -/* 085700 7F050BD0 00403025 */ move $a2, $v0 -/* 085704 7F050BD4 44813000 */ mtc1 $at, $f6 -/* 085708 7F050BD8 00003025 */ move $a2, $zero -/* 08570C 7F050BDC 4606603E */ c.le.s $f12, $f6 -/* 085710 7F050BE0 00000000 */ nop -/* 085714 7F050BE4 45000002 */ bc1f .L7F050BF0 -/* 085718 7F050BE8 00000000 */ nop -/* 08571C 7F050BEC 24060001 */ li $a2, 1 -.L7F050BF0: -/* 085720 7F050BF0 10000021 */ b .L7F050C78 -/* 085724 7F050BF4 00C01825 */ move $v1, $a2 -.L7F050BF8: -/* 085728 7F050BF8 46000202 */ mul.s $f8, $f0, $f0 -/* 08572C 7F050BFC 3C018005 */ lui $at, %hi(D_800532E8) -/* 085730 7F050C00 C43032E8 */ lwc1 $f16, %lo(D_800532E8)($at) -/* 085734 7F050C04 46021282 */ mul.s $f10, $f2, $f2 -/* 085738 7F050C08 3C01C348 */ li $at, 0xC3480000 # -200.000000 -/* 08573C 7F050C0C 00001025 */ move $v0, $zero -/* 085740 7F050C10 460A4480 */ add.s $f18, $f8, $f10 -/* 085744 7F050C14 4610903E */ c.le.s $f18, $f16 -/* 085748 7F050C18 00000000 */ nop -/* 08574C 7F050C1C 45000002 */ bc1f .L7F050C28 -/* 085750 7F050C20 00000000 */ nop -/* 085754 7F050C24 24020001 */ li $v0, 1 -.L7F050C28: -/* 085758 7F050C28 10400012 */ beqz $v0, .L7F050C74 -/* 08575C 7F050C2C 00403025 */ move $a2, $v0 -/* 085760 7F050C30 44812000 */ mtc1 $at, $f4 -/* 085764 7F050C34 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 085768 7F050C38 00001025 */ move $v0, $zero -/* 08576C 7F050C3C 460C203E */ c.le.s $f4, $f12 -/* 085770 7F050C40 00000000 */ nop -/* 085774 7F050C44 45000002 */ bc1f .L7F050C50 -/* 085778 7F050C48 00000000 */ nop -/* 08577C 7F050C4C 24020001 */ li $v0, 1 -.L7F050C50: -/* 085780 7F050C50 10400008 */ beqz $v0, .L7F050C74 -/* 085784 7F050C54 00403025 */ move $a2, $v0 -/* 085788 7F050C58 44813000 */ mtc1 $at, $f6 -/* 08578C 7F050C5C 00003025 */ move $a2, $zero -/* 085790 7F050C60 4606603E */ c.le.s $f12, $f6 -/* 085794 7F050C64 00000000 */ nop -/* 085798 7F050C68 45020003 */ bc1fl .L7F050C78 -/* 08579C 7F050C6C 00C01825 */ move $v1, $a2 -/* 0857A0 7F050C70 24060001 */ li $a2, 1 -.L7F050C74: -/* 0857A4 7F050C74 00C01825 */ move $v1, $a2 -.L7F050C78: -/* 0857A8 7F050C78 10C00022 */ beqz $a2, .L7F050D04 -/* 0857AC 7F050C7C 8FB90084 */ lw $t9, 0x84($sp) -/* 0857B0 7F050C80 8F29000C */ lw $t1, 0xc($t9) -/* 0857B4 7F050C84 8FA20088 */ lw $v0, 0x88($sp) -/* 0857B8 7F050C88 3C0141F0 */ li $at, 0x41F00000 # 30.000000 -/* 0857BC 7F050C8C 312A1000 */ andi $t2, $t1, 0x1000 -/* 0857C0 7F050C90 1540001C */ bnez $t2, .L7F050D04 -/* 0857C4 7F050C94 27A4003C */ addiu $a0, $sp, 0x3c -/* 0857C8 7F050C98 8D0B0014 */ lw $t3, 0x14($t0) -/* 0857CC 7F050C9C 44810000 */ mtc1 $at, $f0 -/* 0857D0 7F050CA0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0857D4 7F050CA4 AFAB003C */ sw $t3, 0x3c($sp) -/* 0857D8 7F050CA8 C4480010 */ lwc1 $f8, 0x10($v0) -/* 0857DC 7F050CAC 8C470008 */ lw $a3, 8($v0) -/* 0857E0 7F050CB0 8D060010 */ lw $a2, 0x10($t0) -/* 0857E4 7F050CB4 8D050008 */ lw $a1, 8($t0) -/* 0857E8 7F050CB8 44818000 */ mtc1 $at, $f16 -/* 0857EC 7F050CBC 44805000 */ mtc1 $zero, $f10 -/* 0857F0 7F050CC0 240C0002 */ li $t4, 2 -/* 0857F4 7F050CC4 AFAC0014 */ sw $t4, 0x14($sp) -/* 0857F8 7F050CC8 AFA30040 */ sw $v1, 0x40($sp) -/* 0857FC 7F050CCC E7A0001C */ swc1 $f0, 0x1c($sp) -/* 085800 7F050CD0 E7A00018 */ swc1 $f0, 0x18($sp) -/* 085804 7F050CD4 E7A80010 */ swc1 $f8, 0x10($sp) -/* 085808 7F050CD8 E7B00024 */ swc1 $f16, 0x24($sp) -/* 08580C 7F050CDC 0FC2C389 */ jal sub_GAME_7F0B0E24 -/* 085810 7F050CE0 E7AA0020 */ swc1 $f10, 0x20($sp) -/* 085814 7F050CE4 10400006 */ beqz $v0, .L7F050D00 -/* 085818 7F050CE8 8FA30040 */ lw $v1, 0x40($sp) -/* 08581C 7F050CEC 8FAE0088 */ lw $t6, 0x88($sp) -/* 085820 7F050CF0 8FAD003C */ lw $t5, 0x3c($sp) -/* 085824 7F050CF4 8DCF0014 */ lw $t7, 0x14($t6) -/* 085828 7F050CF8 11AF0002 */ beq $t5, $t7, .L7F050D04 -/* 08582C 7F050CFC 00000000 */ nop -.L7F050D00: -/* 085830 7F050D00 00001825 */ move $v1, $zero -.L7F050D04: -/* 085834 7F050D04 10600006 */ beqz $v1, .L7F050D20 -/* 085838 7F050D08 00001025 */ move $v0, $zero -/* 08583C 7F050D0C 8FA40088 */ lw $a0, 0x88($sp) -/* 085840 7F050D10 0FC14094 */ jal collect_or_interact_object -/* 085844 7F050D14 24050001 */ li $a1, 1 -/* 085848 7F050D18 10000002 */ b .L7F050D24 -/* 08584C 7F050D1C 8FBF002C */ lw $ra, 0x2c($sp) -.L7F050D20: -/* 085850 7F050D20 8FBF002C */ lw $ra, 0x2c($sp) -.L7F050D24: -/* 085854 7F050D24 27BD0088 */ addiu $sp, $sp, 0x88 -/* 085858 7F050D28 03E00008 */ jr $ra -/* 08585C 7F050D2C 00000000 */ nop -) -#endif - -#ifdef VERSION_JP -GLOBAL_ASM( -.late_rodata -glabel D_800532E0 -.word 0xbf490fdb /*-0.78539819*/ -glabel D_800532E4 -.word 0x47ef4200 /*122500.0*/ -glabel D_800532E8 -.word 0x461c4000 /*10000.0*/ -glabel D_800532EC -.word 0x47742400 /*62500.0*/ -glabel D_800532F0 -.word 0x40490fdb /*3.1415927*/ -.text -glabel object_collectability_routines -/* 085650 7F050AE0 27BDFF70 */ addiu $sp, $sp, -0x90 -/* 085654 7F050AE4 AFBF0034 */ sw $ra, 0x34($sp) -/* 085658 7F050AE8 AFB00030 */ sw $s0, 0x30($sp) -/* 08565C 7F050AEC AFA40090 */ sw $a0, 0x90($sp) -/* 085660 7F050AF0 8C840004 */ lw $a0, 4($a0) -/* 085664 7F050AF4 0FC13904 */ jal check_if_collectable_object -/* 085668 7F050AF8 AFA4008C */ sw $a0, 0x8c($sp) -/* 08566C 7F050AFC 1040000B */ beqz $v0, .Ljp7F050B2C -/* 085670 7F050B00 8FA4008C */ lw $a0, 0x8c($sp) -/* 085674 7F050B04 908F0003 */ lbu $t7, 3($a0) -/* 085678 7F050B08 24010011 */ li $at, 17 -/* 08567C 7F050B0C 51E10008 */ beql $t7, $at, .Ljp7F050B30 -/* 085680 7F050B10 8FA4008C */ lw $a0, 0x8c($sp) -/* 085684 7F050B14 8C820008 */ lw $v0, 8($a0) -/* 085688 7F050B18 0002C2C0 */ sll $t8, $v0, 0xb -/* 08568C 7F050B1C 0703000B */ bgezl $t8, .Ljp7F050B4C -/* 085690 7F050B20 00024B00 */ sll $t1, $v0, 0xc -/* 085694 7F050B24 100001BC */ b .Ljp7F051218 -/* 085698 7F050B28 00001025 */ move $v0, $zero -.Ljp7F050B2C: -/* 08569C 7F050B2C 8FA4008C */ lw $a0, 0x8c($sp) -.Ljp7F050B30: -/* 0856A0 7F050B30 8C820008 */ lw $v0, 8($a0) -/* 0856A4 7F050B34 0002CB40 */ sll $t9, $v0, 0xd -/* 0856A8 7F050B38 07220004 */ bltzl $t9, .Ljp7F050B4C -/* 0856AC 7F050B3C 00024B00 */ sll $t1, $v0, 0xc -/* 0856B0 7F050B40 100001B5 */ b .Ljp7F051218 -/* 0856B4 7F050B44 00001025 */ move $v0, $zero -/* 0856B8 7F050B48 00024B00 */ sll $t1, $v0, 0xc -.Ljp7F050B4C: -/* 0856BC 7F050B4C 05230004 */ bgezl $t1, .Ljp7F050B60 -/* 0856C0 7F050B50 8C8A0064 */ lw $t2, 0x64($a0) -/* 0856C4 7F050B54 100001B0 */ b .Ljp7F051218 -/* 0856C8 7F050B58 00001025 */ move $v0, $zero -/* 0856CC 7F050B5C 8C8A0064 */ lw $t2, 0x64($a0) -.Ljp7F050B60: -/* 0856D0 7F050B60 314B0080 */ andi $t3, $t2, 0x80 -/* 0856D4 7F050B64 1160000A */ beqz $t3, .Ljp7F050B90 -/* 0856D8 7F050B68 00000000 */ nop -/* 0856DC 7F050B6C 8C82006C */ lw $v0, 0x6c($a0) -/* 0856E0 7F050B70 8C4C00BC */ lw $t4, 0xbc($v0) -/* 0856E4 7F050B74 19800006 */ blez $t4, .Ljp7F050B90 -/* 0856E8 7F050B78 00000000 */ nop -/* 0856EC 7F050B7C 8C4D0090 */ lw $t5, 0x90($v0) -/* 0856F0 7F050B80 15A00003 */ bnez $t5, .Ljp7F050B90 -/* 0856F4 7F050B84 00000000 */ nop -/* 0856F8 7F050B88 100001A3 */ b .Ljp7F051218 -/* 0856FC 7F050B8C 00001025 */ move $v0, $zero -.Ljp7F050B90: -/* 085700 7F050B90 0FC0FAAB */ jal sub_GAME_7F03E7AC -/* 085704 7F050B94 00000000 */ nop -/* 085708 7F050B98 14400003 */ bnez $v0, .Ljp7F050BA8 -/* 08570C 7F050B9C 8FA5008C */ lw $a1, 0x8c($sp) -/* 085710 7F050BA0 1000019D */ b .Ljp7F051218 -/* 085714 7F050BA4 00001025 */ move $v0, $zero -.Ljp7F050BA8: -/* 085718 7F050BA8 90A20003 */ lbu $v0, 3($a1) -/* 08571C 7F050BAC 24010008 */ li $at, 8 -/* 085720 7F050BB0 8FAE0090 */ lw $t6, 0x90($sp) -/* 085724 7F050BB4 54410060 */ bnel $v0, $at, .Ljp7F050D38 -/* 085728 7F050BB8 24010007 */ li $at, 7 -/* 08572C 7F050BBC 8DD00004 */ lw $s0, 4($t6) -/* 085730 7F050BC0 2401001A */ li $at, 26 -/* 085734 7F050BC4 82040080 */ lb $a0, 0x80($s0) -/* 085738 7F050BC8 10810003 */ beq $a0, $at, .Ljp7F050BD8 -/* 08573C 7F050BCC 24010057 */ li $at, 87 -/* 085740 7F050BD0 5481000B */ bnel $a0, $at, .Ljp7F050C00 -/* 085744 7F050BD4 2401001D */ li $at, 29 -.Ljp7F050BD8: -/* 085748 7F050BD8 860F0082 */ lh $t7, 0x82($s0) -/* 08574C 7F050BDC 05E10005 */ bgez $t7, .Ljp7F050BF4 -/* 085750 7F050BE0 00000000 */ nop -/* 085754 7F050BE4 8CB80064 */ lw $t8, 0x64($a1) -/* 085758 7F050BE8 33190004 */ andi $t9, $t8, 4 -/* 08575C 7F050BEC 53200004 */ beql $t9, $zero, .Ljp7F050C00 -/* 085760 7F050BF0 2401001D */ li $at, 29 -.Ljp7F050BF4: -/* 085764 7F050BF4 10000188 */ b .Ljp7F051218 -/* 085768 7F050BF8 00001025 */ move $v0, $zero -/* 08576C 7F050BFC 2401001D */ li $at, 29 -.Ljp7F050C00: -/* 085770 7F050C00 1081000D */ beq $a0, $at, .Ljp7F050C38 -/* 085774 7F050C04 2401001C */ li $at, 28 -/* 085778 7F050C08 1081000B */ beq $a0, $at, .Ljp7F050C38 -/* 08577C 7F050C0C 2401001B */ li $at, 27 -/* 085780 7F050C10 10810009 */ beq $a0, $at, .Ljp7F050C38 -/* 085784 7F050C14 24010021 */ li $at, 33 -/* 085788 7F050C18 10810007 */ beq $a0, $at, .Ljp7F050C38 -/* 08578C 7F050C1C 2401002F */ li $at, 47 -/* 085790 7F050C20 10810005 */ beq $a0, $at, .Ljp7F050C38 -/* 085794 7F050C24 24010030 */ li $at, 48 -/* 085798 7F050C28 10810003 */ beq $a0, $at, .Ljp7F050C38 -/* 08579C 7F050C2C 24010022 */ li $at, 34 -/* 0857A0 7F050C30 5481000B */ bnel $a0, $at, .Ljp7F050C60 -/* 0857A4 7F050C34 24010056 */ li $at, 86 -.Ljp7F050C38: -/* 0857A8 7F050C38 86090082 */ lh $t1, 0x82($s0) -/* 0857AC 7F050C3C 05210005 */ bgez $t1, .Ljp7F050C54 -/* 0857B0 7F050C40 00000000 */ nop -/* 0857B4 7F050C44 8CAA0064 */ lw $t2, 0x64($a1) -/* 0857B8 7F050C48 314B0004 */ andi $t3, $t2, 4 -/* 0857BC 7F050C4C 51600004 */ beql $t3, $zero, .Ljp7F050C60 -/* 0857C0 7F050C50 24010056 */ li $at, 86 -.Ljp7F050C54: -/* 0857C4 7F050C54 10000170 */ b .Ljp7F051218 -/* 0857C8 7F050C58 00001025 */ move $v0, $zero -/* 0857CC 7F050C5C 24010056 */ li $at, 86 -.Ljp7F050C60: -/* 0857D0 7F050C60 14810007 */ bne $a0, $at, .Ljp7F050C80 -/* 0857D4 7F050C64 00000000 */ nop -/* 0857D8 7F050C68 8CAC0064 */ lw $t4, 0x64($a1) -/* 0857DC 7F050C6C 318D0080 */ andi $t5, $t4, 0x80 -/* 0857E0 7F050C70 11A00003 */ beqz $t5, .Ljp7F050C80 -/* 0857E4 7F050C74 00000000 */ nop -/* 0857E8 7F050C78 10000167 */ b .Ljp7F051218 -/* 0857EC 7F050C7C 00001025 */ move $v0, $zero -.Ljp7F050C80: -/* 0857F0 7F050C80 0FC232E9 */ jal is_weapon_in_inv -/* 0857F4 7F050C84 00000000 */ nop -/* 0857F8 7F050C88 104000D9 */ beqz $v0, .Ljp7F050FF0 -/* 0857FC 7F050C8C 00000000 */ nop -/* 085800 7F050C90 0FC1A686 */ jal get_ammo_type_for_weapon -/* 085804 7F050C94 82040080 */ lb $a0, 0x80($s0) -/* 085808 7F050C98 104000D5 */ beqz $v0, .Ljp7F050FF0 -/* 08580C 7F050C9C 00000000 */ nop -/* 085810 7F050CA0 0FC1A68F */ jal get_ammo_count_for_weapon -/* 085814 7F050CA4 82040080 */ lb $a0, 0x80($s0) -/* 085818 7F050CA8 82040080 */ lb $a0, 0x80($s0) -/* 08581C 7F050CAC 0FC1A6A7 */ jal get_max_ammo_for_weapon -/* 085820 7F050CB0 AFA20040 */ sw $v0, 0x40($sp) -/* 085824 7F050CB4 8FA30040 */ lw $v1, 0x40($sp) -/* 085828 7F050CB8 0062082A */ slt $at, $v1, $v0 -/* 08582C 7F050CBC 142000CC */ bnez $at, .Ljp7F050FF0 -/* 085830 7F050CC0 00000000 */ nop -/* 085834 7F050CC4 8E020084 */ lw $v0, 0x84($s0) -/* 085838 7F050CC8 14400004 */ bnez $v0, .Ljp7F050CDC -/* 08583C 7F050CCC 00000000 */ nop -/* 085840 7F050CD0 820E0081 */ lb $t6, 0x81($s0) -/* 085844 7F050CD4 05C00015 */ bltz $t6, .Ljp7F050D2C -/* 085848 7F050CD8 00000000 */ nop -.Ljp7F050CDC: -/* 08584C 7F050CDC 50400005 */ beql $v0, $zero, .Ljp7F050CF4 -/* 085850 7F050CE0 82050081 */ lb $a1, 0x81($s0) -/* 085854 7F050CE4 80450080 */ lb $a1, 0x80($v0) -/* 085858 7F050CE8 10000003 */ b .Ljp7F050CF8 -/* 08585C 7F050CEC 00A02025 */ move $a0, $a1 -/* 085860 7F050CF0 82050081 */ lb $a1, 0x81($s0) -.Ljp7F050CF4: -/* 085864 7F050CF4 00A02025 */ move $a0, $a1 -.Ljp7F050CF8: -/* 085868 7F050CF8 8E0F0008 */ lw $t7, 8($s0) -/* 08586C 7F050CFC 000FC0C0 */ sll $t8, $t7, 3 -/* 085870 7F050D00 07030004 */ bgezl $t8, .Ljp7F050D14 -/* 085874 7F050D04 82040080 */ lb $a0, 0x80($s0) -/* 085878 7F050D08 10000002 */ b .Ljp7F050D14 -/* 08587C 7F050D0C 82050080 */ lb $a1, 0x80($s0) -/* 085880 7F050D10 82040080 */ lb $a0, 0x80($s0) -.Ljp7F050D14: -/* 085884 7F050D14 0FC2330B */ jal is_item_for_hand_in_inventory -/* 085888 7F050D18 00000000 */ nop -/* 08588C 7F050D1C 104000B4 */ beqz $v0, .Ljp7F050FF0 -/* 085890 7F050D20 00000000 */ nop -/* 085894 7F050D24 1000013C */ b .Ljp7F051218 -/* 085898 7F050D28 00001025 */ move $v0, $zero -.Ljp7F050D2C: -/* 08589C 7F050D2C 1000013A */ b .Ljp7F051218 -/* 0858A0 7F050D30 00001025 */ move $v0, $zero -/* 0858A4 7F050D34 24010007 */ li $at, 7 -.Ljp7F050D38: -/* 0858A8 7F050D38 14410035 */ bne $v0, $at, .Ljp7F050E10 -/* 0858AC 7F050D3C 8FB90090 */ lw $t9, 0x90($sp) -/* 0858B0 7F050D40 8F300004 */ lw $s0, 4($t9) -/* 0858B4 7F050D44 0FC1A60B */ jal check_cur_player_ammo_amount_in_inventory -/* 0858B8 7F050D48 8E040080 */ lw $a0, 0x80($s0) -/* 0858BC 7F050D4C 8E040080 */ lw $a0, 0x80($s0) -/* 0858C0 7F050D50 0FC1A630 */ jal get_max_ammo_for_type -/* 0858C4 7F050D54 AFA20040 */ sw $v0, 0x40($sp) -/* 0858C8 7F050D58 8FA30040 */ lw $v1, 0x40($sp) -/* 0858CC 7F050D5C 0062082A */ slt $at, $v1, $v0 -/* 0858D0 7F050D60 142000A3 */ bnez $at, .Ljp7F050FF0 -/* 0858D4 7F050D64 00000000 */ nop -/* 0858D8 7F050D68 8E020080 */ lw $v0, 0x80($s0) -/* 0858DC 7F050D6C 24010005 */ li $at, 5 -/* 0858E0 7F050D70 54410007 */ bnel $v0, $at, .Ljp7F050D90 -/* 0858E4 7F050D74 24010007 */ li $at, 7 -/* 0858E8 7F050D78 0FC232E9 */ jal is_weapon_in_inv -/* 0858EC 7F050D7C 2404001A */ li $a0, 26 -/* 0858F0 7F050D80 1040009B */ beqz $v0, .Ljp7F050FF0 -/* 0858F4 7F050D84 00000000 */ nop -/* 0858F8 7F050D88 8E020080 */ lw $v0, 0x80($s0) -/* 0858FC 7F050D8C 24010007 */ li $at, 7 -.Ljp7F050D90: -/* 085900 7F050D90 54410007 */ bnel $v0, $at, .Ljp7F050DB0 -/* 085904 7F050D94 24010008 */ li $at, 8 -/* 085908 7F050D98 0FC232E9 */ jal is_weapon_in_inv -/* 08590C 7F050D9C 2404001D */ li $a0, 29 -/* 085910 7F050DA0 10400093 */ beqz $v0, .Ljp7F050FF0 -/* 085914 7F050DA4 00000000 */ nop -/* 085918 7F050DA8 8E020080 */ lw $v0, 0x80($s0) -/* 08591C 7F050DAC 24010008 */ li $at, 8 -.Ljp7F050DB0: -/* 085920 7F050DB0 54410007 */ bnel $v0, $at, .Ljp7F050DD0 -/* 085924 7F050DB4 24010009 */ li $at, 9 -/* 085928 7F050DB8 0FC232E9 */ jal is_weapon_in_inv -/* 08592C 7F050DBC 2404001C */ li $a0, 28 -/* 085930 7F050DC0 1040008B */ beqz $v0, .Ljp7F050FF0 -/* 085934 7F050DC4 00000000 */ nop -/* 085938 7F050DC8 8E020080 */ lw $v0, 0x80($s0) -/* 08593C 7F050DCC 24010009 */ li $at, 9 -.Ljp7F050DD0: -/* 085940 7F050DD0 54410007 */ bnel $v0, $at, .Ljp7F050DF0 -/* 085944 7F050DD4 2401000A */ li $at, 10 -/* 085948 7F050DD8 0FC232E9 */ jal is_weapon_in_inv -/* 08594C 7F050DDC 2404001B */ li $a0, 27 -/* 085950 7F050DE0 10400083 */ beqz $v0, .Ljp7F050FF0 -/* 085954 7F050DE4 00000000 */ nop -/* 085958 7F050DE8 8E020080 */ lw $v0, 0x80($s0) -/* 08595C 7F050DEC 2401000A */ li $at, 10 -.Ljp7F050DF0: -/* 085960 7F050DF0 14410005 */ bne $v0, $at, .Ljp7F050E08 -/* 085964 7F050DF4 00000000 */ nop -/* 085968 7F050DF8 0FC232E9 */ jal is_weapon_in_inv -/* 08596C 7F050DFC 24040003 */ li $a0, 3 -/* 085970 7F050E00 1040007B */ beqz $v0, .Ljp7F050FF0 -/* 085974 7F050E04 00000000 */ nop -.Ljp7F050E08: -/* 085978 7F050E08 10000103 */ b .Ljp7F051218 -/* 08597C 7F050E0C 00001025 */ move $v0, $zero -.Ljp7F050E10: -/* 085980 7F050E10 24010014 */ li $at, 20 -/* 085984 7F050E14 1441004B */ bne $v0, $at, .Ljp7F050F44 -/* 085988 7F050E18 8FA90090 */ lw $t1, 0x90($sp) -/* 08598C 7F050E1C 8D300004 */ lw $s0, 4($t1) -/* 085990 7F050E20 240A0001 */ li $t2, 1 -/* 085994 7F050E24 AFAA0074 */ sw $t2, 0x74($sp) -/* 085998 7F050E28 0FC100B0 */ jal do_something_if_object_destroyed -/* 08599C 7F050E2C 00A02025 */ move $a0, $a1 -/* 0859A0 7F050E30 10400003 */ beqz $v0, .Ljp7F050E40 -/* 0859A4 7F050E34 02001825 */ move $v1, $s0 -/* 0859A8 7F050E38 100000F7 */ b .Ljp7F051218 -/* 0859AC 7F050E3C 00001025 */ move $v0, $zero -.Ljp7F050E40: -/* 0859B0 7F050E40 00001025 */ move $v0, $zero -.Ljp7F050E44: -/* 0859B4 7F050E44 24500001 */ addiu $s0, $v0, 1 -/* 0859B8 7F050E48 24010001 */ li $at, 1 -/* 0859BC 7F050E4C 14410002 */ bne $v0, $at, .Ljp7F050E58 -/* 0859C0 7F050E50 AFB0003C */ sw $s0, 0x3c($sp) -/* 0859C4 7F050E54 24100001 */ li $s0, 1 -.Ljp7F050E58: -/* 0859C8 7F050E58 AFA30038 */ sw $v1, 0x38($sp) -/* 0859CC 7F050E5C 946C0082 */ lhu $t4, 0x82($v1) -/* 0859D0 7F050E60 02002025 */ move $a0, $s0 -/* 0859D4 7F050E64 5980002E */ blezl $t4, .Ljp7F050F20 -/* 0859D8 7F050E68 8FA2003C */ lw $v0, 0x3c($sp) -/* 0859DC 7F050E6C 0FC1A60B */ jal check_cur_player_ammo_amount_in_inventory -/* 0859E0 7F050E70 AFA30038 */ sw $v1, 0x38($sp) -/* 0859E4 7F050E74 02002025 */ move $a0, $s0 -/* 0859E8 7F050E78 0FC1A630 */ jal get_max_ammo_for_type -/* 0859EC 7F050E7C AFA20040 */ sw $v0, 0x40($sp) -/* 0859F0 7F050E80 8FA30040 */ lw $v1, 0x40($sp) -/* 0859F4 7F050E84 0062082A */ slt $at, $v1, $v0 -/* 0859F8 7F050E88 50200004 */ beql $at, $zero, .Ljp7F050E9C -/* 0859FC 7F050E8C 24010005 */ li $at, 5 -/* 085A00 7F050E90 10000027 */ b .Ljp7F050F30 -/* 085A04 7F050E94 AFA00074 */ sw $zero, 0x74($sp) -/* 085A08 7F050E98 24010005 */ li $at, 5 -.Ljp7F050E9C: -/* 085A0C 7F050E9C 56010005 */ bnel $s0, $at, .Ljp7F050EB4 -/* 085A10 7F050EA0 24010007 */ li $at, 7 -/* 085A14 7F050EA4 0FC232E9 */ jal is_weapon_in_inv -/* 085A18 7F050EA8 2404001A */ li $a0, 26 -/* 085A1C 7F050EAC 10400019 */ beqz $v0, .Ljp7F050F14 -/* 085A20 7F050EB0 24010007 */ li $at, 7 -.Ljp7F050EB4: -/* 085A24 7F050EB4 56010005 */ bnel $s0, $at, .Ljp7F050ECC -/* 085A28 7F050EB8 24010008 */ li $at, 8 -/* 085A2C 7F050EBC 0FC232E9 */ jal is_weapon_in_inv -/* 085A30 7F050EC0 2404001D */ li $a0, 29 -/* 085A34 7F050EC4 10400013 */ beqz $v0, .Ljp7F050F14 -/* 085A38 7F050EC8 24010008 */ li $at, 8 -.Ljp7F050ECC: -/* 085A3C 7F050ECC 56010005 */ bnel $s0, $at, .Ljp7F050EE4 -/* 085A40 7F050ED0 24010009 */ li $at, 9 -/* 085A44 7F050ED4 0FC232E9 */ jal is_weapon_in_inv -/* 085A48 7F050ED8 2404001C */ li $a0, 28 -/* 085A4C 7F050EDC 1040000D */ beqz $v0, .Ljp7F050F14 -/* 085A50 7F050EE0 24010009 */ li $at, 9 -.Ljp7F050EE4: -/* 085A54 7F050EE4 56010005 */ bnel $s0, $at, .Ljp7F050EFC -/* 085A58 7F050EE8 2401000A */ li $at, 10 -/* 085A5C 7F050EEC 0FC232E9 */ jal is_weapon_in_inv -/* 085A60 7F050EF0 2404001B */ li $a0, 27 -/* 085A64 7F050EF4 10400007 */ beqz $v0, .Ljp7F050F14 -/* 085A68 7F050EF8 2401000A */ li $at, 10 -.Ljp7F050EFC: -/* 085A6C 7F050EFC 56010008 */ bnel $s0, $at, .Ljp7F050F20 -/* 085A70 7F050F00 8FA2003C */ lw $v0, 0x3c($sp) -/* 085A74 7F050F04 0FC232E9 */ jal is_weapon_in_inv -/* 085A78 7F050F08 24040003 */ li $a0, 3 -/* 085A7C 7F050F0C 54400004 */ bnezl $v0, .Ljp7F050F20 -/* 085A80 7F050F10 8FA2003C */ lw $v0, 0x3c($sp) -.Ljp7F050F14: -/* 085A84 7F050F14 10000006 */ b .Ljp7F050F30 -/* 085A88 7F050F18 AFA00074 */ sw $zero, 0x74($sp) -/* 085A8C 7F050F1C 8FA2003C */ lw $v0, 0x3c($sp) -.Ljp7F050F20: -/* 085A90 7F050F20 8FA30038 */ lw $v1, 0x38($sp) -/* 085A94 7F050F24 2401000D */ li $at, 13 -/* 085A98 7F050F28 1441FFC6 */ bne $v0, $at, .Ljp7F050E44 -/* 085A9C 7F050F2C 24630004 */ addiu $v1, $v1, 4 -.Ljp7F050F30: -/* 085AA0 7F050F30 8FAD0074 */ lw $t5, 0x74($sp) -/* 085AA4 7F050F34 11A0002E */ beqz $t5, .Ljp7F050FF0 -/* 085AA8 7F050F38 00000000 */ nop -/* 085AAC 7F050F3C 100000B6 */ b .Ljp7F051218 -/* 085AB0 7F050F40 00001025 */ move $v0, $zero -.Ljp7F050F44: -/* 085AB4 7F050F44 24010015 */ li $at, 21 -/* 085AB8 7F050F48 14410029 */ bne $v0, $at, .Ljp7F050FF0 -/* 085ABC 7F050F4C 8FAE0090 */ lw $t6, 0x90($sp) -/* 085AC0 7F050F50 8DD00004 */ lw $s0, 4($t6) -/* 085AC4 7F050F54 0FC22A8D */ jal get_BONDdata_watch_armor -/* 085AC8 7F050F58 AFA00064 */ sw $zero, 0x64($sp) -/* 085ACC 7F050F5C C6040084 */ lwc1 $f4, 0x84($s0) -/* 085AD0 7F050F60 240F0001 */ li $t7, 1 -/* 085AD4 7F050F64 4600203E */ c.le.s $f4, $f0 -/* 085AD8 7F050F68 00000000 */ nop -/* 085ADC 7F050F6C 45000003 */ bc1f .Ljp7F050F7C -/* 085AE0 7F050F70 00000000 */ nop -/* 085AE4 7F050F74 10000019 */ b .Ljp7F050FDC -/* 085AE8 7F050F78 AFAF0064 */ sw $t7, 0x64($sp) -.Ljp7F050F7C: -/* 085AEC 7F050F7C 0FC26C01 */ jal get_num_players -/* 085AF0 7F050F80 00000000 */ nop -/* 085AF4 7F050F84 28410002 */ slti $at, $v0, 2 -/* 085AF8 7F050F88 54200015 */ bnezl $at, .Ljp7F050FE0 -/* 085AFC 7F050F8C 8FA90064 */ lw $t1, 0x64($sp) -/* 085B00 7F050F90 0FC05202 */ jal get_scenario -/* 085B04 7F050F94 00000000 */ nop -/* 085B08 7F050F98 24010002 */ li $at, 2 -/* 085B0C 7F050F9C 14410007 */ bne $v0, $at, .Ljp7F050FBC -/* 085B10 7F050FA0 00408025 */ move $s0, $v0 -/* 085B14 7F050FA4 0FC23639 */ jal sub_GAME_7F08CF80 -/* 085B18 7F050FA8 00000000 */ nop -/* 085B1C 7F050FAC 10400003 */ beqz $v0, .Ljp7F050FBC -/* 085B20 7F050FB0 24180001 */ li $t8, 1 -/* 085B24 7F050FB4 10000009 */ b .Ljp7F050FDC -/* 085B28 7F050FB8 AFB80064 */ sw $t8, 0x64($sp) -.Ljp7F050FBC: -/* 085B2C 7F050FBC 24010003 */ li $at, 3 -/* 085B30 7F050FC0 56010007 */ bnel $s0, $at, .Ljp7F050FE0 -/* 085B34 7F050FC4 8FA90064 */ lw $t1, 0x64($sp) -/* 085B38 7F050FC8 0FC23649 */ jal sub_GAME_7F08CFC0 -/* 085B3C 7F050FCC 00000000 */ nop -/* 085B40 7F050FD0 10400002 */ beqz $v0, .Ljp7F050FDC -/* 085B44 7F050FD4 24190001 */ li $t9, 1 -/* 085B48 7F050FD8 AFB90064 */ sw $t9, 0x64($sp) -.Ljp7F050FDC: -/* 085B4C 7F050FDC 8FA90064 */ lw $t1, 0x64($sp) -.Ljp7F050FE0: -/* 085B50 7F050FE0 11200003 */ beqz $t1, .Ljp7F050FF0 -/* 085B54 7F050FE4 00000000 */ nop -/* 085B58 7F050FE8 1000008B */ b .Ljp7F051218 -/* 085B5C 7F050FEC 00001025 */ move $v0, $zero -.Ljp7F050FF0: -/* 085B60 7F050FF0 0FC22992 */ jal get_curplay_vertical_rotation_in_degrees -/* 085B64 7F050FF4 00000000 */ nop -/* 085B68 7F050FF8 3C018005 */ lui $at, %hi(D_800532E0) # $at, 0x8005 -/* 085B6C 7F050FFC C4263310 */ lwc1 $f6, %lo(D_800532E0)($at) -/* 085B70 7F051000 3C0A8008 */ lui $t2, %hi(pPlayer) # $t2, 0x8008 -/* 085B74 7F051004 4606003C */ c.lt.s $f0, $f6 -/* 085B78 7F051008 00000000 */ nop -/* 085B7C 7F05100C 45000007 */ bc1f .Ljp7F05102C -/* 085B80 7F051010 00000000 */ nop -/* 085B84 7F051014 8D4AA120 */ lw $t2, %lo(pPlayer)($t2) -/* 085B88 7F051018 8D4B1270 */ lw $t3, 0x1270($t2) -/* 085B8C 7F05101C 05610003 */ bgez $t3, .Ljp7F05102C -/* 085B90 7F051020 00000000 */ nop -/* 085B94 7F051024 1000007C */ b .Ljp7F051218 -/* 085B98 7F051028 00001025 */ move $v0, $zero -.Ljp7F05102C: -/* 085B9C 7F05102C 0FC2279B */ jal get_curplayer_positiondata -/* 085BA0 7F051030 00000000 */ nop -/* 085BA4 7F051034 3C0D8008 */ lui $t5, %hi(pPlayer) # $t5, 0x8008 -/* 085BA8 7F051038 8FAC008C */ lw $t4, 0x8c($sp) -/* 085BAC 7F05103C 8DADA120 */ lw $t5, %lo(pPlayer)($t5) -/* 085BB0 7F051040 C44A0008 */ lwc1 $f10, 8($v0) -/* 085BB4 7F051044 C452000C */ lwc1 $f18, 0xc($v0) -/* 085BB8 7F051048 8DAE1270 */ lw $t6, 0x1270($t5) -/* 085BBC 7F05104C C4460010 */ lwc1 $f6, 0x10($v0) -/* 085BC0 7F051050 C5880058 */ lwc1 $f8, 0x58($t4) -/* 085BC4 7F051054 C590005C */ lwc1 $f16, 0x5c($t4) -/* 085BC8 7F051058 C5840060 */ lwc1 $f4, 0x60($t4) -/* 085BCC 7F05105C 29C1003C */ slti $at, $t6, 0x3c -/* 085BD0 7F051060 00404025 */ move $t0, $v0 -/* 085BD4 7F051064 460A4001 */ sub.s $f0, $f8, $f10 -/* 085BD8 7F051068 46128301 */ sub.s $f12, $f16, $f18 -/* 085BDC 7F05106C 14200022 */ bnez $at, .Ljp7F0510F8 -/* 085BE0 7F051070 46062081 */ sub.s $f2, $f4, $f6 -/* 085BE4 7F051074 46000202 */ mul.s $f8, $f0, $f0 -/* 085BE8 7F051078 3C018005 */ lui $at, %hi(D_800532E4) # $at, 0x8005 -/* 085BEC 7F05107C C4323314 */ lwc1 $f18, %lo(D_800532E4)($at) -/* 085BF0 7F051080 46021282 */ mul.s $f10, $f2, $f2 -/* 085BF4 7F051084 3C01C3FA */ li $at, 0xC3FA0000 # -500.000000 -/* 085BF8 7F051088 00001025 */ move $v0, $zero -/* 085BFC 7F05108C 460A4400 */ add.s $f16, $f8, $f10 -/* 085C00 7F051090 4612803E */ c.le.s $f16, $f18 -/* 085C04 7F051094 00000000 */ nop -/* 085C08 7F051098 45000002 */ bc1f .Ljp7F0510A4 -/* 085C0C 7F05109C 00000000 */ nop -/* 085C10 7F0510A0 24020001 */ li $v0, 1 -.Ljp7F0510A4: -/* 085C14 7F0510A4 10400012 */ beqz $v0, .Ljp7F0510F0 -/* 085C18 7F0510A8 00401825 */ move $v1, $v0 -/* 085C1C 7F0510AC 44812000 */ mtc1 $at, $f4 -/* 085C20 7F0510B0 3C0143FA */ li $at, 0x43FA0000 # 500.000000 -/* 085C24 7F0510B4 00001025 */ move $v0, $zero -/* 085C28 7F0510B8 460C203E */ c.le.s $f4, $f12 -/* 085C2C 7F0510BC 00000000 */ nop -/* 085C30 7F0510C0 45000002 */ bc1f .Ljp7F0510CC -/* 085C34 7F0510C4 00000000 */ nop -/* 085C38 7F0510C8 24020001 */ li $v0, 1 -.Ljp7F0510CC: -/* 085C3C 7F0510CC 10400008 */ beqz $v0, .Ljp7F0510F0 -/* 085C40 7F0510D0 00401825 */ move $v1, $v0 -/* 085C44 7F0510D4 44813000 */ mtc1 $at, $f6 -/* 085C48 7F0510D8 00001825 */ move $v1, $zero -/* 085C4C 7F0510DC 4606603E */ c.le.s $f12, $f6 -/* 085C50 7F0510E0 00000000 */ nop -/* 085C54 7F0510E4 45000002 */ bc1f .Ljp7F0510F0 -/* 085C58 7F0510E8 00000000 */ nop -/* 085C5C 7F0510EC 24030001 */ li $v1, 1 -.Ljp7F0510F0: -/* 085C60 7F0510F0 10000021 */ b .Ljp7F051178 -/* 085C64 7F0510F4 00608025 */ move $s0, $v1 -.Ljp7F0510F8: -/* 085C68 7F0510F8 46000202 */ mul.s $f8, $f0, $f0 -/* 085C6C 7F0510FC 3C018005 */ lui $at, %hi(D_800532E8) # $at, 0x8005 -/* 085C70 7F051100 C4303318 */ lwc1 $f16, %lo(D_800532E8)($at) -/* 085C74 7F051104 46021282 */ mul.s $f10, $f2, $f2 -/* 085C78 7F051108 3C01C348 */ li $at, 0xC3480000 # -200.000000 -/* 085C7C 7F05110C 00001025 */ move $v0, $zero -/* 085C80 7F051110 460A4480 */ add.s $f18, $f8, $f10 -/* 085C84 7F051114 4610903E */ c.le.s $f18, $f16 -/* 085C88 7F051118 00000000 */ nop -/* 085C8C 7F05111C 45000002 */ bc1f .Ljp7F051128 -/* 085C90 7F051120 00000000 */ nop -/* 085C94 7F051124 24020001 */ li $v0, 1 -.Ljp7F051128: -/* 085C98 7F051128 10400012 */ beqz $v0, .Ljp7F051174 -/* 085C9C 7F05112C 00401825 */ move $v1, $v0 -/* 085CA0 7F051130 44812000 */ mtc1 $at, $f4 -/* 085CA4 7F051134 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 085CA8 7F051138 00001025 */ move $v0, $zero -/* 085CAC 7F05113C 460C203E */ c.le.s $f4, $f12 -/* 085CB0 7F051140 00000000 */ nop -/* 085CB4 7F051144 45000002 */ bc1f .Ljp7F051150 -/* 085CB8 7F051148 00000000 */ nop -/* 085CBC 7F05114C 24020001 */ li $v0, 1 -.Ljp7F051150: -/* 085CC0 7F051150 10400008 */ beqz $v0, .Ljp7F051174 -/* 085CC4 7F051154 00401825 */ move $v1, $v0 -/* 085CC8 7F051158 44813000 */ mtc1 $at, $f6 -/* 085CCC 7F05115C 00001825 */ move $v1, $zero -/* 085CD0 7F051160 4606603E */ c.le.s $f12, $f6 -/* 085CD4 7F051164 00000000 */ nop -/* 085CD8 7F051168 45020003 */ bc1fl .Ljp7F051178 -/* 085CDC 7F05116C 00608025 */ move $s0, $v1 -/* 085CE0 7F051170 24030001 */ li $v1, 1 -.Ljp7F051174: -/* 085CE4 7F051174 00608025 */ move $s0, $v1 -.Ljp7F051178: -/* 085CE8 7F051178 10600020 */ beqz $v1, .Ljp7F0511FC -/* 085CEC 7F05117C 8FAF008C */ lw $t7, 0x8c($sp) -/* 085CF0 7F051180 8DF8000C */ lw $t8, 0xc($t7) -/* 085CF4 7F051184 8FA20090 */ lw $v0, 0x90($sp) -/* 085CF8 7F051188 3C0141F0 */ li $at, 0x41F00000 # 30.000000 -/* 085CFC 7F05118C 33191000 */ andi $t9, $t8, 0x1000 -/* 085D00 7F051190 1720001A */ bnez $t9, .Ljp7F0511FC -/* 085D04 7F051194 27A40044 */ addiu $a0, $sp, 0x44 -/* 085D08 7F051198 8D090014 */ lw $t1, 0x14($t0) -/* 085D0C 7F05119C 44810000 */ mtc1 $at, $f0 -/* 085D10 7F0511A0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 085D14 7F0511A4 AFA90044 */ sw $t1, 0x44($sp) -/* 085D18 7F0511A8 C4480010 */ lwc1 $f8, 0x10($v0) -/* 085D1C 7F0511AC 8C470008 */ lw $a3, 8($v0) -/* 085D20 7F0511B0 8D060010 */ lw $a2, 0x10($t0) -/* 085D24 7F0511B4 8D050008 */ lw $a1, 8($t0) -/* 085D28 7F0511B8 44818000 */ mtc1 $at, $f16 -/* 085D2C 7F0511BC 44805000 */ mtc1 $zero, $f10 -/* 085D30 7F0511C0 240A0002 */ li $t2, 2 -/* 085D34 7F0511C4 AFAA0014 */ sw $t2, 0x14($sp) -/* 085D38 7F0511C8 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 085D3C 7F0511CC E7A00018 */ swc1 $f0, 0x18($sp) -/* 085D40 7F0511D0 E7A80010 */ swc1 $f8, 0x10($sp) -/* 085D44 7F0511D4 E7B00024 */ swc1 $f16, 0x24($sp) -/* 085D48 7F0511D8 0FC2C675 */ jal sub_GAME_7F0B0E24 -/* 085D4C 7F0511DC E7AA0020 */ swc1 $f10, 0x20($sp) -/* 085D50 7F0511E0 10400005 */ beqz $v0, .Ljp7F0511F8 -/* 085D54 7F0511E4 8FAC0090 */ lw $t4, 0x90($sp) -/* 085D58 7F0511E8 8FAB0044 */ lw $t3, 0x44($sp) -/* 085D5C 7F0511EC 8D8D0014 */ lw $t5, 0x14($t4) -/* 085D60 7F0511F0 116D0002 */ beq $t3, $t5, .Ljp7F0511FC -/* 085D64 7F0511F4 00000000 */ nop -.Ljp7F0511F8: -/* 085D68 7F0511F8 00008025 */ move $s0, $zero -.Ljp7F0511FC: -/* 085D6C 7F0511FC 12000006 */ beqz $s0, .Ljp7F051218 -/* 085D70 7F051200 00001025 */ move $v0, $zero -/* 085D74 7F051204 8FA40090 */ lw $a0, 0x90($sp) -/* 085D78 7F051208 0FC14195 */ jal collect_or_interact_object -/* 085D7C 7F05120C 24050001 */ li $a1, 1 -/* 085D80 7F051210 10000002 */ b .Ljp7F05121C -/* 085D84 7F051214 8FBF0034 */ lw $ra, 0x34($sp) -.Ljp7F051218: -/* 085D88 7F051218 8FBF0034 */ lw $ra, 0x34($sp) -.Ljp7F05121C: -/* 085D8C 7F05121C 8FB00030 */ lw $s0, 0x30($sp) -/* 085D90 7F051220 27BD0090 */ addiu $sp, $sp, 0x90 -/* 085D94 7F051224 03E00008 */ jr $ra -/* 085D98 7F051228 00000000 */ nop -) -#endif - -#endif - -#ifdef NONMATCHING -void sub_GAME_7F050D30(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F050D30 -/* 085860 7F050D30 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 085864 7F050D34 AFBF001C */ sw $ra, 0x1c($sp) -/* 085868 7F050D38 AFA40028 */ sw $a0, 0x28($sp) -/* 08586C 7F050D3C AFA5002C */ sw $a1, 0x2c($sp) -/* 085870 7F050D40 AFA70034 */ sw $a3, 0x34($sp) -/* 085874 7F050D44 908F0001 */ lbu $t7, 1($a0) -/* 085878 7F050D48 31F80002 */ andi $t8, $t7, 2 -/* 08587C 7F050D4C 53000022 */ beql $t8, $zero, .L7F050DD8 -/* 085880 7F050D50 00001025 */ move $v0, $zero -/* 085884 7F050D54 8C830004 */ lw $v1, 4($a0) -/* 085888 7F050D58 8C640014 */ lw $a0, 0x14($v1) -/* 08588C 7F050D5C AFA60030 */ sw $a2, 0x30($sp) -/* 085890 7F050D60 0FC1B1A8 */ jal getsubmatrix -/* 085894 7F050D64 AFA30024 */ sw $v1, 0x24($sp) -/* 085898 7F050D68 8FA9002C */ lw $t1, 0x2c($sp) -/* 08589C 7F050D6C C4440038 */ lwc1 $f4, 0x38($v0) -/* 0858A0 7F050D70 8FA30024 */ lw $v1, 0x24($sp) -/* 0858A4 7F050D74 8FA60030 */ lw $a2, 0x30($sp) -/* 0858A8 7F050D78 8FAA0034 */ lw $t2, 0x34($sp) -/* 0858AC 7F050D7C E5240008 */ swc1 $f4, 8($t1) -/* 0858B0 7F050D80 44800000 */ mtc1 $zero, $f0 -/* 0858B4 7F050D84 C5260008 */ lwc1 $f6, 8($t1) -/* 0858B8 7F050D88 4600303C */ c.lt.s $f6, $f0 -/* 0858BC 7F050D8C 00000000 */ nop -/* 0858C0 7F050D90 45020011 */ bc1fl .L7F050DD8 -/* 0858C4 7F050D94 00001025 */ move $v0, $zero -/* 0858C8 7F050D98 C4480030 */ lwc1 $f8, 0x30($v0) -/* 0858CC 7F050D9C 24C50004 */ addiu $a1, $a2, 4 -/* 0858D0 7F050DA0 25470004 */ addiu $a3, $t2, 4 -/* 0858D4 7F050DA4 E5280000 */ swc1 $f8, ($t1) -/* 0858D8 7F050DA8 C44A0034 */ lwc1 $f10, 0x34($v0) -/* 0858DC 7F050DAC E52A0004 */ swc1 $f10, 4($t1) -/* 0858E0 7F050DB0 E5400000 */ swc1 $f0, ($t2) -/* 0858E4 7F050DB4 E5400004 */ swc1 $f0, 4($t2) -/* 0858E8 7F050DB8 E4C00000 */ swc1 $f0, ($a2) -/* 0858EC 7F050DBC E4C00004 */ swc1 $f0, 4($a2) -/* 0858F0 7F050DC0 8C640014 */ lw $a0, 0x14($v1) -/* 0858F4 7F050DC4 0FC0FE43 */ jal sub_GAME_7F03F90C -/* 0858F8 7F050DC8 AFAA0010 */ sw $t2, 0x10($sp) -/* 0858FC 7F050DCC 10000002 */ b .L7F050DD8 -/* 085900 7F050DD0 24020001 */ li $v0, 1 -/* 085904 7F050DD4 00001025 */ move $v0, $zero -.L7F050DD8: -/* 085908 7F050DD8 8FBF001C */ lw $ra, 0x1c($sp) -/* 08590C 7F050DDC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 085910 7F050DE0 03E00008 */ jr $ra -/* 085914 7F050DE4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F050DE8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F050DE8 -/* 085918 7F050DE8 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 08591C 7F050DEC AFBF003C */ sw $ra, 0x3c($sp) -/* 085920 7F050DF0 AFBE0038 */ sw $fp, 0x38($sp) -/* 085924 7F050DF4 AFB70034 */ sw $s7, 0x34($sp) -/* 085928 7F050DF8 AFB60030 */ sw $s6, 0x30($sp) -/* 08592C 7F050DFC AFB5002C */ sw $s5, 0x2c($sp) -/* 085930 7F050E00 AFB40028 */ sw $s4, 0x28($sp) -/* 085934 7F050E04 AFB30024 */ sw $s3, 0x24($sp) -/* 085938 7F050E08 AFB20020 */ sw $s2, 0x20($sp) -/* 08593C 7F050E0C AFB1001C */ sw $s1, 0x1c($sp) -/* 085940 7F050E10 AFB00018 */ sw $s0, 0x18($sp) -/* 085944 7F050E14 8C940008 */ lw $s4, 8($a0) -/* 085948 7F050E18 00809825 */ move $s3, $a0 -/* 08594C 7F050E1C 24150008 */ li $s5, 8 -/* 085950 7F050E20 8E900000 */ lw $s0, ($s4) -/* 085954 7F050E24 24160012 */ li $s6, 18 -/* 085958 7F050E28 24170017 */ li $s7, 23 -/* 08595C 7F050E2C 1200003C */ beqz $s0, .L7F050F20 -/* 085960 7F050E30 241E0018 */ li $fp, 24 -/* 085964 7F050E34 96020000 */ lhu $v0, ($s0) -.L7F050E38: -/* 085968 7F050E38 02602025 */ move $a0, $s3 -/* 08596C 7F050E3C 304E00FF */ andi $t6, $v0, 0xff -/* 085970 7F050E40 11D5001C */ beq $t6, $s5, .L7F050EB4 -/* 085974 7F050E44 00000000 */ nop -/* 085978 7F050E48 11D6001E */ beq $t6, $s6, .L7F050EC4 -/* 08597C 7F050E4C 02602025 */ move $a0, $s3 -/* 085980 7F050E50 11D70020 */ beq $t6, $s7, .L7F050ED4 -/* 085984 7F050E54 02602025 */ move $a0, $s3 -/* 085988 7F050E58 11DE0003 */ beq $t6, $fp, .L7F050E68 -/* 08598C 7F050E5C 02602025 */ move $a0, $s3 -/* 085990 7F050E60 1000001F */ b .L7F050EE0 -/* 085994 7F050E64 8E020014 */ lw $v0, 0x14($s0) -.L7F050E68: -/* 085998 7F050E68 8E120004 */ lw $s2, 4($s0) -/* 08599C 7F050E6C 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 0859A0 7F050E70 02002825 */ move $a1, $s0 -/* 0859A4 7F050E74 8E4F0008 */ lw $t7, 8($s2) -/* 0859A8 7F050E78 8C580000 */ lw $t8, ($v0) -/* 0859AC 7F050E7C 00408825 */ move $s1, $v0 -/* 0859B0 7F050E80 02802025 */ move $a0, $s4 -/* 0859B4 7F050E84 11F80009 */ beq $t7, $t8, .L7F050EAC -/* 0859B8 7F050E88 00000000 */ nop -/* 0859BC 7F050E8C 0FC12D64 */ jal sub_GAME_7F04B590 -/* 0859C0 7F050E90 02002825 */ move $a1, $s0 -/* 0859C4 7F050E94 10400005 */ beqz $v0, .L7F050EAC -/* 0859C8 7F050E98 00000000 */ nop -/* 0859CC 7F050E9C 0FC27011 */ jal sub_GAME_7F09C044 -/* 0859D0 7F050EA0 8E240000 */ lw $a0, ($s1) -/* 0859D4 7F050EA4 8E590008 */ lw $t9, 8($s2) -/* 0859D8 7F050EA8 AE390000 */ sw $t9, ($s1) -.L7F050EAC: -/* 0859DC 7F050EAC 1000000C */ b .L7F050EE0 -/* 0859E0 7F050EB0 8E020014 */ lw $v0, 0x14($s0) -.L7F050EB4: -/* 0859E4 7F050EB4 0FC1BA5C */ jal sub_GAME_7F06E970 -/* 0859E8 7F050EB8 02002825 */ move $a1, $s0 -/* 0859EC 7F050EBC 10000008 */ b .L7F050EE0 -/* 0859F0 7F050EC0 8E020014 */ lw $v0, 0x14($s0) -.L7F050EC4: -/* 0859F4 7F050EC4 0FC1BA6F */ jal process_12_handle_switch -/* 0859F8 7F050EC8 02002825 */ move $a1, $s0 -/* 0859FC 7F050ECC 10000004 */ b .L7F050EE0 -/* 085A00 7F050ED0 8E020014 */ lw $v0, 0x14($s0) -.L7F050ED4: -/* 085A04 7F050ED4 0FC1BA82 */ jal process_17_pointer_to_head -/* 085A08 7F050ED8 02002825 */ move $a1, $s0 -/* 085A0C 7F050EDC 8E020014 */ lw $v0, 0x14($s0) -.L7F050EE0: -/* 085A10 7F050EE0 10400003 */ beqz $v0, .L7F050EF0 -/* 085A14 7F050EE4 00000000 */ nop -/* 085A18 7F050EE8 1000000B */ b .L7F050F18 -/* 085A1C 7F050EEC 00408025 */ move $s0, $v0 -.L7F050EF0: -/* 085A20 7F050EF0 12000009 */ beqz $s0, .L7F050F18 -/* 085A24 7F050EF4 00000000 */ nop -/* 085A28 7F050EF8 8E02000C */ lw $v0, 0xc($s0) -.L7F050EFC: -/* 085A2C 7F050EFC 50400004 */ beql $v0, $zero, .L7F050F10 -/* 085A30 7F050F00 8E100008 */ lw $s0, 8($s0) -/* 085A34 7F050F04 10000004 */ b .L7F050F18 -/* 085A38 7F050F08 00408025 */ move $s0, $v0 -/* 085A3C 7F050F0C 8E100008 */ lw $s0, 8($s0) -.L7F050F10: -/* 085A40 7F050F10 5600FFFA */ bnezl $s0, .L7F050EFC -/* 085A44 7F050F14 8E02000C */ lw $v0, 0xc($s0) -.L7F050F18: -/* 085A48 7F050F18 5600FFC7 */ bnezl $s0, .L7F050E38 -/* 085A4C 7F050F1C 96020000 */ lhu $v0, ($s0) -.L7F050F20: -/* 085A50 7F050F20 8FBF003C */ lw $ra, 0x3c($sp) -/* 085A54 7F050F24 8FB00018 */ lw $s0, 0x18($sp) -/* 085A58 7F050F28 8FB1001C */ lw $s1, 0x1c($sp) -/* 085A5C 7F050F2C 8FB20020 */ lw $s2, 0x20($sp) -/* 085A60 7F050F30 8FB30024 */ lw $s3, 0x24($sp) -/* 085A64 7F050F34 8FB40028 */ lw $s4, 0x28($sp) -/* 085A68 7F050F38 8FB5002C */ lw $s5, 0x2c($sp) -/* 085A6C 7F050F3C 8FB60030 */ lw $s6, 0x30($sp) -/* 085A70 7F050F40 8FB70034 */ lw $s7, 0x34($sp) -/* 085A74 7F050F44 8FBE0038 */ lw $fp, 0x38($sp) -/* 085A78 7F050F48 03E00008 */ jr $ra -/* 085A7C 7F050F4C 27BD0040 */ addiu $sp, $sp, 0x40 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F050F50(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F050F50 -/* 085A80 7F050F50 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 085A84 7F050F54 AFA50024 */ sw $a1, 0x24($sp) -/* 085A88 7F050F58 AFA60028 */ sw $a2, 0x28($sp) -/* 085A8C 7F050F5C 00C02825 */ move $a1, $a2 -/* 085A90 7F050F60 AFBF001C */ sw $ra, 0x1c($sp) -/* 085A94 7F050F64 AFB00014 */ sw $s0, 0x14($sp) -/* 085A98 7F050F68 00E03025 */ move $a2, $a3 -/* 085A9C 7F050F6C 00808025 */ move $s0, $a0 -/* 085AA0 7F050F70 AFB10018 */ sw $s1, 0x18($sp) -/* 085AA4 7F050F74 0FC10153 */ jal init_standard_object -/* 085AA8 7F050F78 8FA70030 */ lw $a3, 0x30($sp) -/* 085AAC 7F050F7C 10400024 */ beqz $v0, .L7F051010 -/* 085AB0 7F050F80 00408825 */ move $s1, $v0 -/* 085AB4 7F050F84 8E040014 */ lw $a0, 0x14($s0) -/* 085AB8 7F050F88 50800022 */ beql $a0, $zero, .L7F051014 -/* 085ABC 7F050F8C 8FBF001C */ lw $ra, 0x1c($sp) -/* 085AC0 7F050F90 960E0000 */ lhu $t6, ($s0) -/* 085AC4 7F050F94 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 085AC8 7F050F98 448E2000 */ mtc1 $t6, $f4 -/* 085ACC 7F050F9C 05C10004 */ bgez $t6, .L7F050FB0 -/* 085AD0 7F050FA0 468021A0 */ cvt.s.w $f6, $f4 -/* 085AD4 7F050FA4 44814000 */ mtc1 $at, $f8 -/* 085AD8 7F050FA8 00000000 */ nop -/* 085ADC 7F050FAC 46083180 */ add.s $f6, $f6, $f8 -.L7F050FB0: -/* 085AE0 7F050FB0 3C013B80 */ li $at, 0x3B800000 # 0.003906 -/* 085AE4 7F050FB4 44815000 */ mtc1 $at, $f10 -/* 085AE8 7F050FB8 C4900014 */ lwc1 $f16, 0x14($a0) -/* 085AEC 7F050FBC 460A3002 */ mul.s $f0, $f6, $f10 -/* 085AF0 7F050FC0 00000000 */ nop -/* 085AF4 7F050FC4 46008482 */ mul.s $f18, $f16, $f0 -/* 085AF8 7F050FC8 44059000 */ mfc1 $a1, $f18 -/* 085AFC 7F050FCC 0FC1B39E */ jal set_obj_instance_controller_scale -/* 085B00 7F050FD0 00000000 */ nop -/* 085B04 7F050FD4 8FA20024 */ lw $v0, 0x24($sp) -/* 085B08 7F050FD8 8E180014 */ lw $t8, 0x14($s0) -/* 085B0C 7F050FDC 02202025 */ move $a0, $s1 -/* 085B10 7F050FE0 8C4F001C */ lw $t7, 0x1c($v0) -/* 085B14 7F050FE4 AF0F0018 */ sw $t7, 0x18($t8) -/* 085B18 7F050FE8 8C59001C */ lw $t9, 0x1c($v0) -/* 085B1C 7F050FEC 8E0B0014 */ lw $t3, 0x14($s0) -/* 085B20 7F050FF0 8F280008 */ lw $t0, 8($t9) -/* 085B24 7F050FF4 8D090008 */ lw $t1, 8($t0) -/* 085B28 7F050FF8 8D2A0018 */ lw $t2, 0x18($t1) -/* 085B2C 7F050FFC AD6A001C */ sw $t2, 0x1c($t3) -/* 085B30 7F051000 0FC0E969 */ jal sub_GAME_7F03A5A4 -/* 085B34 7F051004 8C450018 */ lw $a1, 0x18($v0) -/* 085B38 7F051008 8FAC0024 */ lw $t4, 0x24($sp) -/* 085B3C 7F05100C AD9101D8 */ sw $s1, 0x1d8($t4) -.L7F051010: -/* 085B40 7F051010 8FBF001C */ lw $ra, 0x1c($sp) -.L7F051014: -/* 085B44 7F051014 02201025 */ move $v0, $s1 -/* 085B48 7F051018 8FB10018 */ lw $s1, 0x18($sp) -/* 085B4C 7F05101C 8FB00014 */ lw $s0, 0x14($sp) -/* 085B50 7F051020 03E00008 */ jr $ra -/* 085B54 7F051024 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051028(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051028 -/* 085B58 7F051028 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 085B5C 7F05102C AFBF001C */ sw $ra, 0x1c($sp) -/* 085B60 7F051030 AFA40028 */ sw $a0, 0x28($sp) -/* 085B64 7F051034 AFA5002C */ sw $a1, 0x2c($sp) -/* 085B68 7F051038 84840004 */ lh $a0, 4($a0) -/* 085B6C 7F05103C 0FC15B0E */ jal load_model -/* 085B70 7F051040 AFA40020 */ sw $a0, 0x20($sp) -/* 085B74 7F051044 8FAF0020 */ lw $t7, 0x20($sp) -/* 085B78 7F051048 3C068004 */ lui $a2, %hi(PitemZ_entries) -/* 085B7C 7F05104C 8FA40028 */ lw $a0, 0x28($sp) -/* 085B80 7F051050 000FC080 */ sll $t8, $t7, 2 -/* 085B84 7F051054 030FC023 */ subu $t8, $t8, $t7 -/* 085B88 7F051058 0018C080 */ sll $t8, $t8, 2 -/* 085B8C 7F05105C 00D83021 */ addu $a2, $a2, $t8 -/* 085B90 7F051060 8CC6A228 */ lw $a2, %lo(PitemZ_entries)($a2) -/* 085B94 7F051064 8FA5002C */ lw $a1, 0x2c($sp) -/* 085B98 7F051068 00003825 */ move $a3, $zero -/* 085B9C 7F05106C 0FC143D4 */ jal sub_GAME_7F050F50 -/* 085BA0 7F051070 AFA00010 */ sw $zero, 0x10($sp) -/* 085BA4 7F051074 8FBF001C */ lw $ra, 0x1c($sp) -/* 085BA8 7F051078 27BD0028 */ addiu $sp, $sp, 0x28 -/* 085BAC 7F05107C 03E00008 */ jr $ra -/* 085BB0 7F051080 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051084(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051084 -/* 085BB4 7F051084 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 085BB8 7F051088 AFBF0014 */ sw $ra, 0x14($sp) -/* 085BBC 7F05108C 8C8E0074 */ lw $t6, 0x74($a0) -/* 085BC0 7F051090 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 085BC4 7F051094 44814000 */ mtc1 $at, $f8 -/* 085BC8 7F051098 448E2000 */ mtc1 $t6, $f4 -/* 085BCC 7F05109C 00000000 */ nop -/* 085BD0 7F0510A0 468021A0 */ cvt.s.w $f6, $f4 -/* 085BD4 7F0510A4 46083283 */ div.s $f10, $f6, $f8 -/* 085BD8 7F0510A8 0FC1440A */ jal sub_GAME_7F051028 -/* 085BDC 7F0510AC E48A0074 */ swc1 $f10, 0x74($a0) -/* 085BE0 7F0510B0 8FBF0014 */ lw $ra, 0x14($sp) -/* 085BE4 7F0510B4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 085BE8 7F0510B8 03E00008 */ jr $ra -/* 085BEC 7F0510BC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0510C0(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0510C0 -/* 085BF0 7F0510C0 27BDFF40 */ addiu $sp, $sp, -0xc0 -/* 085BF4 7F0510C4 00057080 */ sll $t6, $a1, 2 -/* 085BF8 7F0510C8 01C57023 */ subu $t6, $t6, $a1 -/* 085BFC 7F0510CC 000E7080 */ sll $t6, $t6, 2 -/* 085C00 7F0510D0 3C0F8004 */ lui $t7, %hi(PitemZ_entries) -/* 085C04 7F0510D4 01EE7821 */ addu $t7, $t7, $t6 -/* 085C08 7F0510D8 8DEFA228 */ lw $t7, %lo(PitemZ_entries)($t7) -/* 085C0C 7F0510DC AFBF002C */ sw $ra, 0x2c($sp) -/* 085C10 7F0510E0 AFA400C0 */ sw $a0, 0xc0($sp) -/* 085C14 7F0510E4 AFB20028 */ sw $s2, 0x28($sp) -/* 085C18 7F0510E8 AFB10024 */ sw $s1, 0x24($sp) -/* 085C1C 7F0510EC AFB00020 */ sw $s0, 0x20($sp) -/* 085C20 7F0510F0 AFA600C8 */ sw $a2, 0xc8($sp) -/* 085C24 7F0510F4 00A02025 */ move $a0, $a1 -/* 085C28 7F0510F8 AFA500C4 */ sw $a1, 0xc4($sp) -/* 085C2C 7F0510FC 0FC15B0E */ jal load_model -/* 085C30 7F051100 AFAF00BC */ sw $t7, 0xbc($sp) -/* 085C34 7F051104 0FC0E90C */ jal remove_last_obj_pos_data_entry -/* 085C38 7F051108 00000000 */ nop -/* 085C3C 7F05110C 00408025 */ move $s0, $v0 -/* 085C40 7F051110 0FC1B025 */ jal get_obj_instance_controller_for_header -/* 085C44 7F051114 8FA400BC */ lw $a0, 0xbc($sp) -/* 085C48 7F051118 00408825 */ move $s1, $v0 -/* 085C4C 7F05111C 2E040001 */ sltiu $a0, $s0, 1 -/* 085C50 7F051120 2C450001 */ sltiu $a1, $v0, 1 -/* 085C54 7F051124 0FC1456C */ jal sub_GAME_7F0515B0 -/* 085C58 7F051128 8FA600BC */ lw $a2, 0xbc($sp) -/* 085C5C 7F05112C 16000004 */ bnez $s0, .L7F051140 -/* 085C60 7F051130 00409025 */ move $s2, $v0 -/* 085C64 7F051134 0FC0E90C */ jal remove_last_obj_pos_data_entry -/* 085C68 7F051138 00000000 */ nop -/* 085C6C 7F05113C 00408025 */ move $s0, $v0 -.L7F051140: -/* 085C70 7F051140 16200004 */ bnez $s1, .L7F051154 -/* 085C74 7F051144 00000000 */ nop -/* 085C78 7F051148 0FC1B025 */ jal get_obj_instance_controller_for_header -/* 085C7C 7F05114C 8FA400BC */ lw $a0, 0xbc($sp) -/* 085C80 7F051150 00408825 */ move $s1, $v0 -.L7F051154: -/* 085C84 7F051154 12400035 */ beqz $s2, .L7F05122C -/* 085C88 7F051158 00000000 */ nop -/* 085C8C 7F05115C 12000033 */ beqz $s0, .L7F05122C -/* 085C90 7F051160 00000000 */ nop -/* 085C94 7F051164 12200031 */ beqz $s1, .L7F05122C -/* 085C98 7F051168 27A20030 */ addiu $v0, $sp, 0x30 -/* 085C9C 7F05116C 3C188003 */ lui $t8, %hi(blank_11_object) -/* 085CA0 7F051170 27182114 */ addiu $t8, %lo(blank_11_object) # addiu $t8, $t8, 0x2114 -/* 085CA4 7F051174 8FA500C0 */ lw $a1, 0xc0($sp) -/* 085CA8 7F051178 27080078 */ addiu $t0, $t8, 0x78 -/* 085CAC 7F05117C 00404825 */ move $t1, $v0 -.L7F051180: -/* 085CB0 7F051180 8F010000 */ lw $at, ($t8) -/* 085CB4 7F051184 2718000C */ addiu $t8, $t8, 0xc -/* 085CB8 7F051188 2529000C */ addiu $t1, $t1, 0xc -/* 085CBC 7F05118C AD21FFF4 */ sw $at, -0xc($t1) -/* 085CC0 7F051190 8F01FFF8 */ lw $at, -8($t8) -/* 085CC4 7F051194 AD21FFF8 */ sw $at, -8($t1) -/* 085CC8 7F051198 8F01FFFC */ lw $at, -4($t8) -/* 085CCC 7F05119C 1708FFF8 */ bne $t8, $t0, .L7F051180 -/* 085CD0 7F0511A0 AD21FFFC */ sw $at, -4($t1) -/* 085CD4 7F0511A4 8F010000 */ lw $at, ($t8) -/* 085CD8 7F0511A8 00406025 */ move $t4, $v0 -/* 085CDC 7F0511AC 02406825 */ move $t5, $s2 -/* 085CE0 7F0511B0 AD210000 */ sw $at, ($t1) -/* 085CE4 7F0511B4 8F080004 */ lw $t0, 4($t8) -/* 085CE8 7F0511B8 244B0078 */ addiu $t3, $v0, 0x78 -/* 085CEC 7F0511BC AD280004 */ sw $t0, 4($t1) -.L7F0511C0: -/* 085CF0 7F0511C0 8D810000 */ lw $at, ($t4) -/* 085CF4 7F0511C4 258C000C */ addiu $t4, $t4, 0xc -/* 085CF8 7F0511C8 25AD000C */ addiu $t5, $t5, 0xc -/* 085CFC 7F0511CC ADA1FFF4 */ sw $at, -0xc($t5) -/* 085D00 7F0511D0 8D81FFF8 */ lw $at, -8($t4) -/* 085D04 7F0511D4 ADA1FFF8 */ sw $at, -8($t5) -/* 085D08 7F0511D8 8D81FFFC */ lw $at, -4($t4) -/* 085D0C 7F0511DC 158BFFF8 */ bne $t4, $t3, .L7F0511C0 -/* 085D10 7F0511E0 ADA1FFFC */ sw $at, -4($t5) -/* 085D14 7F0511E4 8D810000 */ lw $at, ($t4) -/* 085D18 7F0511E8 02402025 */ move $a0, $s2 -/* 085D1C 7F0511EC 02003825 */ move $a3, $s0 -/* 085D20 7F0511F0 ADA10000 */ sw $at, ($t5) -/* 085D24 7F0511F4 8D8B0004 */ lw $t3, 4($t4) -/* 085D28 7F0511F8 ADAB0004 */ sw $t3, 4($t5) -/* 085D2C 7F0511FC 8FAE00C4 */ lw $t6, 0xc4($sp) -/* 085D30 7F051200 A64E0004 */ sh $t6, 4($s2) -/* 085D34 7F051204 8FAF00C8 */ lw $t7, 0xc8($sp) -/* 085D38 7F051208 35F94000 */ ori $t9, $t7, 0x4000 -/* 085D3C 7F05120C AE590008 */ sw $t9, 8($s2) -/* 085D40 7F051210 84A80000 */ lh $t0, ($a1) -/* 085D44 7F051214 A6480006 */ sh $t0, 6($s2) -/* 085D48 7F051218 AFB10010 */ sw $s1, 0x10($sp) -/* 085D4C 7F05121C 0FC143D4 */ jal sub_GAME_7F050F50 -/* 085D50 7F051220 8FA600BC */ lw $a2, 0xbc($sp) -/* 085D54 7F051224 1000000A */ b .L7F051250 -/* 085D58 7F051228 00408025 */ move $s0, $v0 -.L7F05122C: -/* 085D5C 7F05122C 12200003 */ beqz $s1, .L7F05123C -/* 085D60 7F051230 00000000 */ nop -/* 085D64 7F051234 0FC1B08D */ jal set_obj_instance_scale_to_zero -/* 085D68 7F051238 02202025 */ move $a0, $s1 -.L7F05123C: -/* 085D6C 7F05123C 52000005 */ beql $s0, $zero, .L7F051254 -/* 085D70 7F051240 8FBF002C */ lw $ra, 0x2c($sp) -/* 085D74 7F051244 0FC0E921 */ jal set_last_obj_pos_data -/* 085D78 7F051248 02002025 */ move $a0, $s0 -/* 085D7C 7F05124C 00008025 */ move $s0, $zero -.L7F051250: -/* 085D80 7F051250 8FBF002C */ lw $ra, 0x2c($sp) -.L7F051254: -/* 085D84 7F051254 02001025 */ move $v0, $s0 -/* 085D88 7F051258 8FB00020 */ lw $s0, 0x20($sp) -/* 085D8C 7F05125C 8FB10024 */ lw $s1, 0x24($sp) -/* 085D90 7F051260 8FB20028 */ lw $s2, 0x28($sp) -/* 085D94 7F051264 03E00008 */ jr $ra -/* 085D98 7F051268 27BD00C0 */ addiu $sp, $sp, 0xc0 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F05126C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05126C -/* 085D9C 7F05126C 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 085DA0 7F051270 AFB10020 */ sw $s1, 0x20($sp) -/* 085DA4 7F051274 240EFFFF */ li $t6, -1 -/* 085DA8 7F051278 3C078003 */ lui $a3, %hi(D_80030AF8) -/* 085DAC 7F05127C 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) -/* 085DB0 7F051280 00A08825 */ move $s1, $a1 -/* 085DB4 7F051284 AFBF0024 */ sw $ra, 0x24($sp) -/* 085DB8 7F051288 AFB0001C */ sw $s0, 0x1c($sp) -/* 085DBC 7F05128C AFA40058 */ sw $a0, 0x58($sp) -/* 085DC0 7F051290 AFA60060 */ sw $a2, 0x60($sp) -/* 085DC4 7F051294 AFA0004C */ sw $zero, 0x4c($sp) -/* 085DC8 7F051298 AFA00048 */ sw $zero, 0x48($sp) -/* 085DCC 7F05129C AFAE0044 */ sw $t6, 0x44($sp) -/* 085DD0 7F0512A0 2408FFFF */ li $t0, -1 -/* 085DD4 7F0512A4 2409FFFF */ li $t1, -1 -/* 085DD8 7F0512A8 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 -/* 085DDC 7F0512AC 8CE70AF8 */ lw $a3, %lo(D_80030AF8)($a3) -/* 085DE0 7F0512B0 240A0088 */ li $t2, 136 -.L7F0512B4: -/* 085DE4 7F0512B4 00EA0019 */ multu $a3, $t2 -/* 085DE8 7F0512B8 8FB80058 */ lw $t8, 0x58($sp) -/* 085DEC 7F0512BC 00007812 */ mflo $t7 -/* 085DF0 7F0512C0 016F8021 */ addu $s0, $t3, $t7 -/* 085DF4 7F0512C4 8E040010 */ lw $a0, 0x10($s0) -/* 085DF8 7F0512C8 54800008 */ bnezl $a0, .L7F0512EC -/* 085DFC 7F0512CC 8E190064 */ lw $t9, 0x64($s0) -/* 085E00 7F0512D0 57000040 */ bnezl $t8, .L7F0513D4 -/* 085E04 7F0512D4 24E70001 */ addiu $a3, $a3, 1 -/* 085E08 7F0512D8 5620003E */ bnezl $s1, .L7F0513D4 -/* 085E0C 7F0512DC 24E70001 */ addiu $a3, $a3, 1 -/* 085E10 7F0512E0 10000043 */ b .L7F0513F0 -/* 085E14 7F0512E4 AFA70044 */ sw $a3, 0x44($sp) -/* 085E18 7F0512E8 8E190064 */ lw $t9, 0x64($s0) -.L7F0512EC: -/* 085E1C 7F0512EC 332C0080 */ andi $t4, $t9, 0x80 -/* 085E20 7F0512F0 55800038 */ bnezl $t4, .L7F0513D4 -/* 085E24 7F0512F4 24E70001 */ addiu $a3, $a3, 1 -/* 085E28 7F0512F8 920D0002 */ lbu $t5, 2($s0) -/* 085E2C 7F0512FC 31AE0004 */ andi $t6, $t5, 4 -/* 085E30 7F051300 55C00034 */ bnezl $t6, .L7F0513D4 -/* 085E34 7F051304 24E70001 */ addiu $a3, $a3, 1 -/* 085E38 7F051308 860F0082 */ lh $t7, 0x82($s0) -/* 085E3C 7F05130C 5DE00005 */ bgtzl $t7, .L7F051324 -/* 085E40 7F051310 82020080 */ lb $v0, 0x80($s0) -/* 085E44 7F051314 8C98001C */ lw $t8, 0x1c($a0) -/* 085E48 7F051318 13000014 */ beqz $t8, .L7F05136C -/* 085E4C 7F05131C 00000000 */ nop -/* 085E50 7F051320 82020080 */ lb $v0, 0x80($s0) -.L7F051324: -/* 085E54 7F051324 2401001D */ li $at, 29 -/* 085E58 7F051328 10410005 */ beq $v0, $at, .L7F051340 -/* 085E5C 7F05132C 2401001C */ li $at, 28 -/* 085E60 7F051330 10410003 */ beq $v0, $at, .L7F051340 -/* 085E64 7F051334 2401001B */ li $at, 27 -/* 085E68 7F051338 54410026 */ bnel $v0, $at, .L7F0513D4 -/* 085E6C 7F05133C 24E70001 */ addiu $a3, $a3, 1 -.L7F051340: -/* 085E70 7F051340 8C83001C */ lw $v1, 0x1c($a0) -/* 085E74 7F051344 10600009 */ beqz $v1, .L7F05136C -/* 085E78 7F051348 00000000 */ nop -/* 085E7C 7F05134C 90620000 */ lbu $v0, ($v1) -/* 085E80 7F051350 24010001 */ li $at, 1 -/* 085E84 7F051354 10410005 */ beq $v0, $at, .L7F05136C -/* 085E88 7F051358 24010002 */ li $at, 2 -/* 085E8C 7F05135C 10410003 */ beq $v0, $at, .L7F05136C -/* 085E90 7F051360 24010004 */ li $at, 4 -/* 085E94 7F051364 5441001B */ bnel $v0, $at, .L7F0513D4 -/* 085E98 7F051368 24E70001 */ addiu $a3, $a3, 1 -.L7F05136C: -/* 085E9C 7F05136C 1220000E */ beqz $s1, .L7F0513A8 -/* 085EA0 7F051370 8FA50060 */ lw $a1, 0x60($sp) -/* 085EA4 7F051374 8E040014 */ lw $a0, 0x14($s0) -/* 085EA8 7F051378 AFA70054 */ sw $a3, 0x54($sp) -/* 085EAC 7F05137C AFA80040 */ sw $t0, 0x40($sp) -/* 085EB0 7F051380 0FC1B018 */ jal sub_GAME_7F06C060 -/* 085EB4 7F051384 AFA9003C */ sw $t1, 0x3c($sp) -/* 085EB8 7F051388 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) -/* 085EBC 7F05138C 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 -/* 085EC0 7F051390 8FA70054 */ lw $a3, 0x54($sp) -/* 085EC4 7F051394 8FA80040 */ lw $t0, 0x40($sp) -/* 085EC8 7F051398 8FA9003C */ lw $t1, 0x3c($sp) -/* 085ECC 7F05139C 1040000C */ beqz $v0, .L7F0513D0 -/* 085ED0 7F0513A0 240A0088 */ li $t2, 136 -/* 085ED4 7F0513A4 8E040010 */ lw $a0, 0x10($s0) -.L7F0513A8: -/* 085ED8 7F0513A8 90990001 */ lbu $t9, 1($a0) -/* 085EDC 7F0513AC 332C0002 */ andi $t4, $t9, 2 -/* 085EE0 7F0513B0 15800004 */ bnez $t4, .L7F0513C4 -/* 085EE4 7F0513B4 00000000 */ nop -/* 085EE8 7F0513B8 05010002 */ bgez $t0, .L7F0513C4 -/* 085EEC 7F0513BC 00000000 */ nop -/* 085EF0 7F0513C0 00E04025 */ move $t0, $a3 -.L7F0513C4: -/* 085EF4 7F0513C4 05230003 */ bgezl $t1, .L7F0513D4 -/* 085EF8 7F0513C8 24E70001 */ addiu $a3, $a3, 1 -/* 085EFC 7F0513CC 00E04825 */ move $t1, $a3 -.L7F0513D0: -/* 085F00 7F0513D0 24E70001 */ addiu $a3, $a3, 1 -.L7F0513D4: -/* 085F04 7F0513D4 2401001E */ li $at, 30 -/* 085F08 7F0513D8 00E1001A */ div $zero, $a3, $at -/* 085F0C 7F0513DC 3C0E8003 */ lui $t6, %hi(D_80030AF8) -/* 085F10 7F0513E0 8DCE0AF8 */ lw $t6, %lo(D_80030AF8)($t6) -/* 085F14 7F0513E4 00003810 */ mfhi $a3 -/* 085F18 7F0513E8 14EEFFB2 */ bne $a3, $t6, .L7F0512B4 -/* 085F1C 7F0513EC 00000000 */ nop -.L7F0513F0: -/* 085F20 7F0513F0 8FAF0044 */ lw $t7, 0x44($sp) -/* 085F24 7F0513F4 24040008 */ li $a0, 8 -/* 085F28 7F0513F8 27A5004C */ addiu $a1, $sp, 0x4c -/* 085F2C 7F0513FC 05E0000C */ bltz $t7, .L7F051430 -/* 085F30 7F051400 27A60048 */ addiu $a2, $sp, 0x48 -/* 085F34 7F051404 25F80001 */ addiu $t8, $t7, 1 -/* 085F38 7F051408 2401001E */ li $at, 30 -/* 085F3C 7F05140C 0301001A */ div $zero, $t8, $at -/* 085F40 7F051410 0000C810 */ mfhi $t9 -/* 085F44 7F051414 3C018003 */ lui $at, %hi(D_80030AF8) -/* 085F48 7F051418 AC390AF8 */ sw $t9, %lo(D_80030AF8)($at) -/* 085F4C 7F05141C 01EA0019 */ multu $t7, $t2 -/* 085F50 7F051420 00006012 */ mflo $t4 -/* 085F54 7F051424 016C1021 */ addu $v0, $t3, $t4 -/* 085F58 7F051428 10000053 */ b .L7F051578 -/* 085F5C 7F05142C 8FBF0024 */ lw $ra, 0x24($sp) -.L7F051430: -/* 085F60 7F051430 8FAD0060 */ lw $t5, 0x60($sp) -/* 085F64 7F051434 8FA70058 */ lw $a3, 0x58($sp) -/* 085F68 7F051438 AFB10010 */ sw $s1, 0x10($sp) -/* 085F6C 7F05143C AFA80040 */ sw $t0, 0x40($sp) -/* 085F70 7F051440 AFA9003C */ sw $t1, 0x3c($sp) -/* 085F74 7F051444 0FC15BC2 */ jal sub_GAME_7F056F08 -/* 085F78 7F051448 AFAD0014 */ sw $t5, 0x14($sp) -/* 085F7C 7F05144C 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) -/* 085F80 7F051450 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 -/* 085F84 7F051454 8FA80040 */ lw $t0, 0x40($sp) -/* 085F88 7F051458 8FA9003C */ lw $t1, 0x3c($sp) -/* 085F8C 7F05145C 10400003 */ beqz $v0, .L7F05146C -/* 085F90 7F051460 240A0088 */ li $t2, 136 -/* 085F94 7F051464 10000044 */ b .L7F051578 -/* 085F98 7F051468 8FBF0024 */ lw $ra, 0x24($sp) -.L7F05146C: -/* 085F9C 7F05146C 05000015 */ bltz $t0, .L7F0514C4 -/* 085FA0 7F051470 8FAF004C */ lw $t7, 0x4c($sp) -/* 085FA4 7F051474 010A0019 */ multu $t0, $t2 -/* 085FA8 7F051478 24050001 */ li $a1, 1 -/* 085FAC 7F05147C 00008012 */ mflo $s0 -/* 085FB0 7F051480 01702021 */ addu $a0, $t3, $s0 -/* 085FB4 7F051484 8C8E0010 */ lw $t6, 0x10($a0) -/* 085FB8 7F051488 51C00007 */ beql $t6, $zero, .L7F0514A8 -/* 085FBC 7F05148C 25180001 */ addiu $t8, $t0, 1 -/* 085FC0 7F051490 0FC10409 */ jal sub_GAME_7F041024 -/* 085FC4 7F051494 AFA80040 */ sw $t0, 0x40($sp) -/* 085FC8 7F051498 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) -/* 085FCC 7F05149C 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 -/* 085FD0 7F0514A0 8FA80040 */ lw $t0, 0x40($sp) -/* 085FD4 7F0514A4 25180001 */ addiu $t8, $t0, 1 -.L7F0514A8: -/* 085FD8 7F0514A8 2401001E */ li $at, 30 -/* 085FDC 7F0514AC 0301001A */ div $zero, $t8, $at -/* 085FE0 7F0514B0 0000C810 */ mfhi $t9 -/* 085FE4 7F0514B4 3C018003 */ lui $at, %hi(D_80030AF8) -/* 085FE8 7F0514B8 AC390AF8 */ sw $t9, %lo(D_80030AF8)($at) -/* 085FEC 7F0514BC 1000002D */ b .L7F051574 -/* 085FF0 7F0514C0 01701021 */ addu $v0, $t3, $s0 -.L7F0514C4: -/* 085FF4 7F0514C4 11E00009 */ beqz $t7, .L7F0514EC -/* 085FF8 7F0514C8 00000000 */ nop -/* 085FFC 7F0514CC 8DEC0010 */ lw $t4, 0x10($t7) -/* 086000 7F0514D0 01E02025 */ move $a0, $t7 -/* 086004 7F0514D4 11800003 */ beqz $t4, .L7F0514E4 -/* 086008 7F0514D8 00000000 */ nop -/* 08600C 7F0514DC 0FC10409 */ jal sub_GAME_7F041024 -/* 086010 7F0514E0 24050001 */ li $a1, 1 -.L7F0514E4: -/* 086014 7F0514E4 10000023 */ b .L7F051574 -/* 086018 7F0514E8 8FA2004C */ lw $v0, 0x4c($sp) -.L7F0514EC: -/* 08601C 7F0514EC 05220016 */ bltzl $t1, .L7F051548 -/* 086020 7F0514F0 8FB90048 */ lw $t9, 0x48($sp) -/* 086024 7F0514F4 012A0019 */ multu $t1, $t2 -/* 086028 7F0514F8 24050001 */ li $a1, 1 -/* 08602C 7F0514FC 00008012 */ mflo $s0 -/* 086030 7F051500 01702021 */ addu $a0, $t3, $s0 -/* 086034 7F051504 8C8D0010 */ lw $t5, 0x10($a0) -/* 086038 7F051508 51A00007 */ beql $t5, $zero, .L7F051528 -/* 08603C 7F05150C 252E0001 */ addiu $t6, $t1, 1 -/* 086040 7F051510 0FC10409 */ jal sub_GAME_7F041024 -/* 086044 7F051514 AFA9003C */ sw $t1, 0x3c($sp) -/* 086048 7F051518 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) -/* 08604C 7F05151C 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 -/* 086050 7F051520 8FA9003C */ lw $t1, 0x3c($sp) -/* 086054 7F051524 252E0001 */ addiu $t6, $t1, 1 -.L7F051528: -/* 086058 7F051528 2401001E */ li $at, 30 -/* 08605C 7F05152C 01C1001A */ div $zero, $t6, $at -/* 086060 7F051530 0000C010 */ mfhi $t8 -/* 086064 7F051534 3C018003 */ lui $at, %hi(D_80030AF8) -/* 086068 7F051538 AC380AF8 */ sw $t8, %lo(D_80030AF8)($at) -/* 08606C 7F05153C 1000000D */ b .L7F051574 -/* 086070 7F051540 01701021 */ addu $v0, $t3, $s0 -/* 086074 7F051544 8FB90048 */ lw $t9, 0x48($sp) -.L7F051548: -/* 086078 7F051548 5320000A */ beql $t9, $zero, .L7F051574 -/* 08607C 7F05154C 00001025 */ move $v0, $zero -/* 086080 7F051550 8F2C0010 */ lw $t4, 0x10($t9) -/* 086084 7F051554 03202025 */ move $a0, $t9 -/* 086088 7F051558 11800003 */ beqz $t4, .L7F051568 -/* 08608C 7F05155C 00000000 */ nop -/* 086090 7F051560 0FC10409 */ jal sub_GAME_7F041024 -/* 086094 7F051564 24050001 */ li $a1, 1 -.L7F051568: -/* 086098 7F051568 10000002 */ b .L7F051574 -/* 08609C 7F05156C 8FA20048 */ lw $v0, 0x48($sp) -/* 0860A0 7F051570 00001025 */ move $v0, $zero -.L7F051574: -/* 0860A4 7F051574 8FBF0024 */ lw $ra, 0x24($sp) -.L7F051578: -/* 0860A8 7F051578 8FB0001C */ lw $s0, 0x1c($sp) -/* 0860AC 7F05157C 8FB10020 */ lw $s1, 0x20($sp) -/* 0860B0 7F051580 03E00008 */ jr $ra -/* 0860B4 7F051584 27BD0058 */ addiu $sp, $sp, 0x58 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051588(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051588 -/* 0860B8 7F051588 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0860BC 7F05158C AFBF0014 */ sw $ra, 0x14($sp) -/* 0860C0 7F051590 00002025 */ move $a0, $zero -/* 0860C4 7F051594 00002825 */ move $a1, $zero -/* 0860C8 7F051598 0FC1449B */ jal sub_GAME_7F05126C -/* 0860CC 7F05159C 00003025 */ move $a2, $zero -/* 0860D0 7F0515A0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0860D4 7F0515A4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0860D8 7F0515A8 03E00008 */ jr $ra -/* 0860DC 7F0515AC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0515B0(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0515B0 -/* 0860E0 7F0515B0 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 0860E4 7F0515B4 AFB50034 */ sw $s5, 0x34($sp) -/* 0860E8 7F0515B8 3C158003 */ lui $s5, %hi(D_80030AFC) -/* 0860EC 7F0515BC AFB40030 */ sw $s4, 0x30($sp) -/* 0860F0 7F0515C0 26B50AFC */ addiu $s5, %lo(D_80030AFC) # addiu $s5, $s5, 0xafc -/* 0860F4 7F0515C4 AFB60038 */ sw $s6, 0x38($sp) -/* 0860F8 7F0515C8 AFB3002C */ sw $s3, 0x2c($sp) -/* 0860FC 7F0515CC AFB20028 */ sw $s2, 0x28($sp) -/* 086100 7F0515D0 AFB10024 */ sw $s1, 0x24($sp) -/* 086104 7F0515D4 240EFFFF */ li $t6, -1 -/* 086108 7F0515D8 3C148007 */ lui $s4, %hi(dword_CODE_bss_80072E70) -/* 08610C 7F0515DC 00A09025 */ move $s2, $a1 -/* 086110 7F0515E0 AFBF003C */ sw $ra, 0x3c($sp) -/* 086114 7F0515E4 AFB00020 */ sw $s0, 0x20($sp) -/* 086118 7F0515E8 AFA60070 */ sw $a2, 0x70($sp) -/* 08611C 7F0515EC 00803825 */ move $a3, $a0 -/* 086120 7F0515F0 AFA0005C */ sw $zero, 0x5c($sp) -/* 086124 7F0515F4 AFA00058 */ sw $zero, 0x58($sp) -/* 086128 7F0515F8 AFAE0054 */ sw $t6, 0x54($sp) -/* 08612C 7F0515FC 2411FFFF */ li $s1, -1 -/* 086130 7F051600 2413FFFF */ li $s3, -1 -/* 086134 7F051604 26942E70 */ addiu $s4, %lo(dword_CODE_bss_80072E70) # addiu $s4, $s4, 0x2e70 -/* 086138 7F051608 2416000A */ li $s6, 10 -/* 08613C 7F05160C 8EA30000 */ lw $v1, ($s5) -/* 086140 7F051610 000379C0 */ sll $t7, $v1, 7 -.L7F051614: -/* 086144 7F051614 028F8021 */ addu $s0, $s4, $t7 -/* 086148 7F051618 8E020010 */ lw $v0, 0x10($s0) -/* 08614C 7F05161C 54400008 */ bnezl $v0, .L7F051640 -/* 086150 7F051620 8E180064 */ lw $t8, 0x64($s0) -/* 086154 7F051624 54E00022 */ bnezl $a3, .L7F0516B0 -/* 086158 7F051628 246B0001 */ addiu $t3, $v1, 1 -/* 08615C 7F05162C 56400020 */ bnezl $s2, .L7F0516B0 -/* 086160 7F051630 246B0001 */ addiu $t3, $v1, 1 -/* 086164 7F051634 1000002C */ b .L7F0516E8 -/* 086168 7F051638 AFA30054 */ sw $v1, 0x54($sp) -/* 08616C 7F05163C 8E180064 */ lw $t8, 0x64($s0) -.L7F051640: -/* 086170 7F051640 33190080 */ andi $t9, $t8, 0x80 -/* 086174 7F051644 5720001A */ bnezl $t9, .L7F0516B0 -/* 086178 7F051648 246B0001 */ addiu $t3, $v1, 1 -/* 08617C 7F05164C 8C48001C */ lw $t0, 0x1c($v0) -/* 086180 7F051650 55000017 */ bnezl $t0, .L7F0516B0 -/* 086184 7F051654 246B0001 */ addiu $t3, $v1, 1 -/* 086188 7F051658 5240000B */ beql $s2, $zero, .L7F051688 -/* 08618C 7F05165C 90490001 */ lbu $t1, 1($v0) -/* 086190 7F051660 8E040014 */ lw $a0, 0x14($s0) -/* 086194 7F051664 8FA50070 */ lw $a1, 0x70($sp) -/* 086198 7F051668 AFA30064 */ sw $v1, 0x64($sp) -/* 08619C 7F05166C 0FC1B018 */ jal sub_GAME_7F06C060 -/* 0861A0 7F051670 AFA70068 */ sw $a3, 0x68($sp) -/* 0861A4 7F051674 8FA30064 */ lw $v1, 0x64($sp) -/* 0861A8 7F051678 1040000C */ beqz $v0, .L7F0516AC -/* 0861AC 7F05167C 8FA70068 */ lw $a3, 0x68($sp) -/* 0861B0 7F051680 8E020010 */ lw $v0, 0x10($s0) -/* 0861B4 7F051684 90490001 */ lbu $t1, 1($v0) -.L7F051688: -/* 0861B8 7F051688 312A0002 */ andi $t2, $t1, 2 -/* 0861BC 7F05168C 15400004 */ bnez $t2, .L7F0516A0 -/* 0861C0 7F051690 00000000 */ nop -/* 0861C4 7F051694 06210002 */ bgez $s1, .L7F0516A0 -/* 0861C8 7F051698 00000000 */ nop -/* 0861CC 7F05169C 00608825 */ move $s1, $v1 -.L7F0516A0: -/* 0861D0 7F0516A0 06630003 */ bgezl $s3, .L7F0516B0 -/* 0861D4 7F0516A4 246B0001 */ addiu $t3, $v1, 1 -/* 0861D8 7F0516A8 00609825 */ move $s3, $v1 -.L7F0516AC: -/* 0861DC 7F0516AC 246B0001 */ addiu $t3, $v1, 1 -.L7F0516B0: -/* 0861E0 7F0516B0 0176001A */ div $zero, $t3, $s6 -/* 0861E4 7F0516B4 8EAC0000 */ lw $t4, ($s5) -/* 0861E8 7F0516B8 00001810 */ mfhi $v1 -/* 0861EC 7F0516BC 16C00002 */ bnez $s6, .L7F0516C8 -/* 0861F0 7F0516C0 00000000 */ nop -/* 0861F4 7F0516C4 0007000D */ break 7 -.L7F0516C8: -/* 0861F8 7F0516C8 2401FFFF */ li $at, -1 -/* 0861FC 7F0516CC 16C10004 */ bne $s6, $at, .L7F0516E0 -/* 086200 7F0516D0 3C018000 */ lui $at, 0x8000 -/* 086204 7F0516D4 15610002 */ bne $t3, $at, .L7F0516E0 -/* 086208 7F0516D8 00000000 */ nop -/* 08620C 7F0516DC 0006000D */ break 6 -.L7F0516E0: -/* 086210 7F0516E0 546CFFCC */ bnel $v1, $t4, .L7F051614 -/* 086214 7F0516E4 000379C0 */ sll $t7, $v1, 7 -.L7F0516E8: -/* 086218 7F0516E8 8FAD0054 */ lw $t5, 0x54($sp) -/* 08621C 7F0516EC 05A00011 */ bltz $t5, .L7F051734 -/* 086220 7F0516F0 25AE0001 */ addiu $t6, $t5, 1 -/* 086224 7F0516F4 01D6001A */ div $zero, $t6, $s6 -/* 086228 7F0516F8 8FB80054 */ lw $t8, 0x54($sp) -/* 08622C 7F0516FC 00007810 */ mfhi $t7 -/* 086230 7F051700 AEAF0000 */ sw $t7, ($s5) -/* 086234 7F051704 16C00002 */ bnez $s6, .L7F051710 -/* 086238 7F051708 00000000 */ nop -/* 08623C 7F05170C 0007000D */ break 7 -.L7F051710: -/* 086240 7F051710 2401FFFF */ li $at, -1 -/* 086244 7F051714 16C10004 */ bne $s6, $at, .L7F051728 -/* 086248 7F051718 3C018000 */ lui $at, 0x8000 -/* 08624C 7F05171C 15C10002 */ bne $t6, $at, .L7F051728 -/* 086250 7F051720 00000000 */ nop -/* 086254 7F051724 0006000D */ break 6 -.L7F051728: -/* 086258 7F051728 0018C9C0 */ sll $t9, $t8, 7 -/* 08625C 7F05172C 10000054 */ b .L7F051880 -/* 086260 7F051730 02991021 */ addu $v0, $s4, $t9 -.L7F051734: -/* 086264 7F051734 8FA80070 */ lw $t0, 0x70($sp) -/* 086268 7F051738 24040011 */ li $a0, 17 -/* 08626C 7F05173C 27A5005C */ addiu $a1, $sp, 0x5c -/* 086270 7F051740 27A60058 */ addiu $a2, $sp, 0x58 -/* 086274 7F051744 AFB20010 */ sw $s2, 0x10($sp) -/* 086278 7F051748 0FC15BC2 */ jal sub_GAME_7F056F08 -/* 08627C 7F05174C AFA80014 */ sw $t0, 0x14($sp) -/* 086280 7F051750 10400003 */ beqz $v0, .L7F051760 -/* 086284 7F051754 00401825 */ move $v1, $v0 -/* 086288 7F051758 10000049 */ b .L7F051880 -/* 08628C 7F05175C 00601025 */ move $v0, $v1 -.L7F051760: -/* 086290 7F051760 06220019 */ bltzl $s1, .L7F0517C8 -/* 086294 7F051764 8FAE005C */ lw $t6, 0x5c($sp) -/* 086298 7F051768 001149C0 */ sll $t1, $s1, 7 -/* 08629C 7F05176C 02892021 */ addu $a0, $s4, $t1 -/* 0862A0 7F051770 8C8A0010 */ lw $t2, 0x10($a0) -/* 0862A4 7F051774 51400004 */ beql $t2, $zero, .L7F051788 -/* 0862A8 7F051778 262B0001 */ addiu $t3, $s1, 1 -/* 0862AC 7F05177C 0FC10409 */ jal sub_GAME_7F041024 -/* 0862B0 7F051780 24050001 */ li $a1, 1 -/* 0862B4 7F051784 262B0001 */ addiu $t3, $s1, 1 -.L7F051788: -/* 0862B8 7F051788 0176001A */ div $zero, $t3, $s6 -/* 0862BC 7F05178C 00006010 */ mfhi $t4 -/* 0862C0 7F051790 001169C0 */ sll $t5, $s1, 7 -/* 0862C4 7F051794 16C00002 */ bnez $s6, .L7F0517A0 -/* 0862C8 7F051798 00000000 */ nop -/* 0862CC 7F05179C 0007000D */ break 7 -.L7F0517A0: -/* 0862D0 7F0517A0 2401FFFF */ li $at, -1 -/* 0862D4 7F0517A4 16C10004 */ bne $s6, $at, .L7F0517B8 -/* 0862D8 7F0517A8 3C018000 */ lui $at, 0x8000 -/* 0862DC 7F0517AC 15610002 */ bne $t3, $at, .L7F0517B8 -/* 0862E0 7F0517B0 00000000 */ nop -/* 0862E4 7F0517B4 0006000D */ break 6 -.L7F0517B8: -/* 0862E8 7F0517B8 AEAC0000 */ sw $t4, ($s5) -/* 0862EC 7F0517BC 10000030 */ b .L7F051880 -/* 0862F0 7F0517C0 028D1021 */ addu $v0, $s4, $t5 -/* 0862F4 7F0517C4 8FAE005C */ lw $t6, 0x5c($sp) -.L7F0517C8: -/* 0862F8 7F0517C8 11C00009 */ beqz $t6, .L7F0517F0 -/* 0862FC 7F0517CC 00000000 */ nop -/* 086300 7F0517D0 8DCF0010 */ lw $t7, 0x10($t6) -/* 086304 7F0517D4 01C02025 */ move $a0, $t6 -/* 086308 7F0517D8 11E00003 */ beqz $t7, .L7F0517E8 -/* 08630C 7F0517DC 00000000 */ nop -/* 086310 7F0517E0 0FC10409 */ jal sub_GAME_7F041024 -/* 086314 7F0517E4 24050001 */ li $a1, 1 -.L7F0517E8: -/* 086318 7F0517E8 10000025 */ b .L7F051880 -/* 08631C 7F0517EC 8FA2005C */ lw $v0, 0x5c($sp) -.L7F0517F0: -/* 086320 7F0517F0 06600017 */ bltz $s3, .L7F051850 -/* 086324 7F0517F4 0013C1C0 */ sll $t8, $s3, 7 -/* 086328 7F0517F8 02982021 */ addu $a0, $s4, $t8 -/* 08632C 7F0517FC 8C990010 */ lw $t9, 0x10($a0) -/* 086330 7F051800 53200004 */ beql $t9, $zero, .L7F051814 -/* 086334 7F051804 26680001 */ addiu $t0, $s3, 1 -/* 086338 7F051808 0FC10409 */ jal sub_GAME_7F041024 -/* 08633C 7F05180C 24050001 */ li $a1, 1 -/* 086340 7F051810 26680001 */ addiu $t0, $s3, 1 -.L7F051814: -/* 086344 7F051814 0116001A */ div $zero, $t0, $s6 -/* 086348 7F051818 00004810 */ mfhi $t1 -/* 08634C 7F05181C 001351C0 */ sll $t2, $s3, 7 -/* 086350 7F051820 16C00002 */ bnez $s6, .L7F05182C -/* 086354 7F051824 00000000 */ nop -/* 086358 7F051828 0007000D */ break 7 -.L7F05182C: -/* 08635C 7F05182C 2401FFFF */ li $at, -1 -/* 086360 7F051830 16C10004 */ bne $s6, $at, .L7F051844 -/* 086364 7F051834 3C018000 */ lui $at, 0x8000 -/* 086368 7F051838 15010002 */ bne $t0, $at, .L7F051844 -/* 08636C 7F05183C 00000000 */ nop -/* 086370 7F051840 0006000D */ break 6 -.L7F051844: -/* 086374 7F051844 AEA90000 */ sw $t1, ($s5) -/* 086378 7F051848 1000000D */ b .L7F051880 -/* 08637C 7F05184C 028A1021 */ addu $v0, $s4, $t2 -.L7F051850: -/* 086380 7F051850 8FAB0058 */ lw $t3, 0x58($sp) -/* 086384 7F051854 5160000A */ beql $t3, $zero, .L7F051880 -/* 086388 7F051858 00001025 */ move $v0, $zero -/* 08638C 7F05185C 8D6C0010 */ lw $t4, 0x10($t3) -/* 086390 7F051860 01602025 */ move $a0, $t3 -/* 086394 7F051864 11800003 */ beqz $t4, .L7F051874 -/* 086398 7F051868 00000000 */ nop -/* 08639C 7F05186C 0FC10409 */ jal sub_GAME_7F041024 -/* 0863A0 7F051870 24050001 */ li $a1, 1 -.L7F051874: -/* 0863A4 7F051874 10000002 */ b .L7F051880 -/* 0863A8 7F051878 8FA20058 */ lw $v0, 0x58($sp) -/* 0863AC 7F05187C 00001025 */ move $v0, $zero -.L7F051880: -/* 0863B0 7F051880 8FBF003C */ lw $ra, 0x3c($sp) -/* 0863B4 7F051884 8FB00020 */ lw $s0, 0x20($sp) -/* 0863B8 7F051888 8FB10024 */ lw $s1, 0x24($sp) -/* 0863BC 7F05188C 8FB20028 */ lw $s2, 0x28($sp) -/* 0863C0 7F051890 8FB3002C */ lw $s3, 0x2c($sp) -/* 0863C4 7F051894 8FB40030 */ lw $s4, 0x30($sp) -/* 0863C8 7F051898 8FB50034 */ lw $s5, 0x34($sp) -/* 0863CC 7F05189C 8FB60038 */ lw $s6, 0x38($sp) -/* 0863D0 7F0518A0 03E00008 */ jr $ra -/* 0863D4 7F0518A4 27BD0068 */ addiu $sp, $sp, 0x68 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0518A8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0518A8 -/* 0863D8 7F0518A8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0863DC 7F0518AC AFBF0014 */ sw $ra, 0x14($sp) -/* 0863E0 7F0518B0 00002025 */ move $a0, $zero -/* 0863E4 7F0518B4 00002825 */ move $a1, $zero -/* 0863E8 7F0518B8 0FC1456C */ jal sub_GAME_7F0515B0 -/* 0863EC 7F0518BC 00003025 */ move $a2, $zero -/* 0863F0 7F0518C0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0863F4 7F0518C4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0863F8 7F0518C8 03E00008 */ jr $ra -/* 0863FC 7F0518CC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0518D0(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0518D0 -/* 086400 7F0518D0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 086404 7F0518D4 3C048007 */ lui $a0, %hi(dword_CODE_bss_80073370) -/* 086408 7F0518D8 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) -/* 08640C 7F0518DC AFBF0014 */ sw $ra, 0x14($sp) -/* 086410 7F0518E0 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 -/* 086414 7F0518E4 24843370 */ addiu $a0, %lo(dword_CODE_bss_80073370) # addiu $a0, $a0, 0x3370 -/* 086418 7F0518E8 00001825 */ move $v1, $zero -.L7F0518EC: -/* 08641C 7F0518EC 8C8E0010 */ lw $t6, 0x10($a0) -/* 086420 7F0518F0 24840084 */ addiu $a0, $a0, 0x84 -/* 086424 7F0518F4 0082082B */ sltu $at, $a0, $v0 -/* 086428 7F0518F8 15C00004 */ bnez $t6, .L7F05190C -/* 08642C 7F0518FC 3C0F8007 */ lui $t7, %hi(dword_CODE_bss_80073370) -/* 086430 7F051900 25EF3370 */ addiu $t7, %lo(dword_CODE_bss_80073370) # addiu $t7, $t7, 0x3370 -/* 086434 7F051904 10000040 */ b .L7F051A08 -/* 086438 7F051908 006F1021 */ addu $v0, $v1, $t7 -.L7F05190C: -/* 08643C 7F05190C 1420FFF7 */ bnez $at, .L7F0518EC -/* 086440 7F051910 24630084 */ addiu $v1, $v1, 0x84 -/* 086444 7F051914 3C048007 */ lui $a0, %hi(dword_CODE_bss_80073370) -/* 086448 7F051918 3C058007 */ lui $a1, %hi(dword_CODE_bss_80073DC0) -/* 08644C 7F05191C 24A53DC0 */ addiu $a1, %lo(dword_CODE_bss_80073DC0) # addiu $a1, $a1, 0x3dc0 -/* 086450 7F051920 24843370 */ addiu $a0, %lo(dword_CODE_bss_80073370) # addiu $a0, $a0, 0x3370 -/* 086454 7F051924 00001825 */ move $v1, $zero -.L7F051928: -/* 086458 7F051928 8C980064 */ lw $t8, 0x64($a0) -/* 08645C 7F05192C 33190080 */ andi $t9, $t8, 0x80 -/* 086460 7F051930 57200016 */ bnezl $t9, .L7F05198C -/* 086464 7F051934 24840084 */ addiu $a0, $a0, 0x84 -/* 086468 7F051938 90880002 */ lbu $t0, 2($a0) -/* 08646C 7F05193C 31090004 */ andi $t1, $t0, 4 -/* 086470 7F051940 55200012 */ bnezl $t1, .L7F05198C -/* 086474 7F051944 24840084 */ addiu $a0, $a0, 0x84 -/* 086478 7F051948 8C820010 */ lw $v0, 0x10($a0) -/* 08647C 7F05194C 8C4A001C */ lw $t2, 0x1c($v0) -/* 086480 7F051950 5540000E */ bnezl $t2, .L7F05198C -/* 086484 7F051954 24840084 */ addiu $a0, $a0, 0x84 -/* 086488 7F051958 904B0001 */ lbu $t3, 1($v0) -/* 08648C 7F05195C 316C0002 */ andi $t4, $t3, 2 -/* 086490 7F051960 5580000A */ bnezl $t4, .L7F05198C -/* 086494 7F051964 24840084 */ addiu $a0, $a0, 0x84 -/* 086498 7F051968 24050001 */ li $a1, 1 -/* 08649C 7F05196C 0FC10409 */ jal sub_GAME_7F041024 -/* 0864A0 7F051970 AFA30018 */ sw $v1, 0x18($sp) -/* 0864A4 7F051974 8FA30018 */ lw $v1, 0x18($sp) -/* 0864A8 7F051978 3C0D8007 */ lui $t5, %hi(dword_CODE_bss_80073370) -/* 0864AC 7F05197C 25AD3370 */ addiu $t5, %lo(dword_CODE_bss_80073370) # addiu $t5, $t5, 0x3370 -/* 0864B0 7F051980 10000021 */ b .L7F051A08 -/* 0864B4 7F051984 006D1021 */ addu $v0, $v1, $t5 -/* 0864B8 7F051988 24840084 */ addiu $a0, $a0, 0x84 -.L7F05198C: -/* 0864BC 7F05198C 0085082B */ sltu $at, $a0, $a1 -/* 0864C0 7F051990 1420FFE5 */ bnez $at, .L7F051928 -/* 0864C4 7F051994 24630084 */ addiu $v1, $v1, 0x84 -/* 0864C8 7F051998 3C048007 */ lui $a0, %hi(dword_CODE_bss_80073370) -/* 0864CC 7F05199C 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) -/* 0864D0 7F0519A0 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 -/* 0864D4 7F0519A4 24843370 */ addiu $a0, %lo(dword_CODE_bss_80073370) # addiu $a0, $a0, 0x3370 -/* 0864D8 7F0519A8 00001825 */ move $v1, $zero -.L7F0519AC: -/* 0864DC 7F0519AC 8C8E0064 */ lw $t6, 0x64($a0) -/* 0864E0 7F0519B0 31CF0080 */ andi $t7, $t6, 0x80 -/* 0864E4 7F0519B4 55E00011 */ bnezl $t7, .L7F0519FC -/* 0864E8 7F0519B8 24840084 */ addiu $a0, $a0, 0x84 -/* 0864EC 7F0519BC 90980002 */ lbu $t8, 2($a0) -/* 0864F0 7F0519C0 33190004 */ andi $t9, $t8, 4 -/* 0864F4 7F0519C4 5720000D */ bnezl $t9, .L7F0519FC -/* 0864F8 7F0519C8 24840084 */ addiu $a0, $a0, 0x84 -/* 0864FC 7F0519CC 8C880010 */ lw $t0, 0x10($a0) -/* 086500 7F0519D0 8D09001C */ lw $t1, 0x1c($t0) -/* 086504 7F0519D4 15200008 */ bnez $t1, .L7F0519F8 -/* 086508 7F0519D8 24050001 */ li $a1, 1 -/* 08650C 7F0519DC 0FC10409 */ jal sub_GAME_7F041024 -/* 086510 7F0519E0 AFA30018 */ sw $v1, 0x18($sp) -/* 086514 7F0519E4 8FA30018 */ lw $v1, 0x18($sp) -/* 086518 7F0519E8 3C0A8007 */ lui $t2, %hi(dword_CODE_bss_80073370) -/* 08651C 7F0519EC 254A3370 */ addiu $t2, %lo(dword_CODE_bss_80073370) # addiu $t2, $t2, 0x3370 -/* 086520 7F0519F0 10000005 */ b .L7F051A08 -/* 086524 7F0519F4 006A1021 */ addu $v0, $v1, $t2 -.L7F0519F8: -/* 086528 7F0519F8 24840084 */ addiu $a0, $a0, 0x84 -.L7F0519FC: -/* 08652C 7F0519FC 1482FFEB */ bne $a0, $v0, .L7F0519AC -/* 086530 7F051A00 24630084 */ addiu $v1, $v1, 0x84 -/* 086534 7F051A04 00001025 */ move $v0, $zero -.L7F051A08: -/* 086538 7F051A08 8FBF0014 */ lw $ra, 0x14($sp) -/* 08653C 7F051A0C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 086540 7F051A10 03E00008 */ jr $ra -/* 086544 7F051A14 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void trigger_remote_mine_detonation(void) { - -} -#else -GLOBAL_ASM( -.text -glabel trigger_remote_mine_detonation -/* 086548 7F051A18 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08654C 7F051A1C AFBF0014 */ sw $ra, 0x14($sp) -/* 086550 7F051A20 0FC26C54 */ jal get_cur_playernum -/* 086554 7F051A24 00000000 */ nop -/* 086558 7F051A28 3C038003 */ lui $v1, %hi(D_80030AF4) -/* 08655C 7F051A2C 24630AF4 */ addiu $v1, %lo(D_80030AF4) # addiu $v1, $v1, 0xaf4 -/* 086560 7F051A30 8C6E0000 */ lw $t6, ($v1) -/* 086564 7F051A34 240F0001 */ li $t7, 1 -/* 086568 7F051A38 004FC004 */ sllv $t8, $t7, $v0 -/* 08656C 7F051A3C 01D8C825 */ or $t9, $t6, $t8 -/* 086570 7F051A40 AC790000 */ sw $t9, ($v1) -/* 086574 7F051A44 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 086578 7F051A48 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08657C 7F051A4C 240500F3 */ li $a1, 243 -/* 086580 7F051A50 0C002382 */ jal play_sfx_a1 -/* 086584 7F051A54 00003025 */ move $a2, $zero -/* 086588 7F051A58 8FBF0014 */ lw $ra, 0x14($sp) -/* 08658C 7F051A5C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 086590 7F051A60 03E00008 */ jr $ra -/* 086594 7F051A64 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void check_if_entry_is_collectable(void) { - -} -#else -GLOBAL_ASM( -.text -glabel check_if_entry_is_collectable -/* 086598 7F051A68 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08659C 7F051A6C AFBF001C */ sw $ra, 0x1c($sp) -/* 0865A0 7F051A70 AFB10018 */ sw $s1, 0x18($sp) -/* 0865A4 7F051A74 AFB00014 */ sw $s0, 0x14($sp) -/* 0865A8 7F051A78 90AE0000 */ lbu $t6, ($a1) -/* 0865AC 7F051A7C 24010004 */ li $at, 4 -/* 0865B0 7F051A80 00808825 */ move $s1, $a0 -/* 0865B4 7F051A84 55C10008 */ bnel $t6, $at, .L7F051AA8 -/* 0865B8 7F051A88 8CB00020 */ lw $s0, 0x20($a1) -/* 0865BC 7F051A8C 8CA30004 */ lw $v1, 4($a1) -/* 0865C0 7F051A90 806F0080 */ lb $t7, 0x80($v1) -/* 0865C4 7F051A94 548F0004 */ bnel $a0, $t7, .L7F051AA8 -/* 0865C8 7F051A98 8CB00020 */ lw $s0, 0x20($a1) -/* 0865CC 7F051A9C 1000000E */ b .L7F051AD8 -/* 0865D0 7F051AA0 00601025 */ move $v0, $v1 -/* 0865D4 7F051AA4 8CB00020 */ lw $s0, 0x20($a1) -.L7F051AA8: -/* 0865D8 7F051AA8 1200000A */ beqz $s0, .L7F051AD4 -/* 0865DC 7F051AAC 02202025 */ move $a0, $s1 -.L7F051AB0: -/* 0865E0 7F051AB0 0FC1469A */ jal check_if_entry_is_collectable -/* 0865E4 7F051AB4 02002825 */ move $a1, $s0 -/* 0865E8 7F051AB8 50400004 */ beql $v0, $zero, .L7F051ACC -/* 0865EC 7F051ABC 8E100024 */ lw $s0, 0x24($s0) -/* 0865F0 7F051AC0 10000006 */ b .L7F051ADC -/* 0865F4 7F051AC4 8FBF001C */ lw $ra, 0x1c($sp) -/* 0865F8 7F051AC8 8E100024 */ lw $s0, 0x24($s0) -.L7F051ACC: -/* 0865FC 7F051ACC 5600FFF8 */ bnezl $s0, .L7F051AB0 -/* 086600 7F051AD0 02202025 */ move $a0, $s1 -.L7F051AD4: -/* 086604 7F051AD4 00001025 */ move $v0, $zero -.L7F051AD8: -/* 086608 7F051AD8 8FBF001C */ lw $ra, 0x1c($sp) -.L7F051ADC: -/* 08660C 7F051ADC 8FB00014 */ lw $s0, 0x14($sp) -/* 086610 7F051AE0 8FB10018 */ lw $s1, 0x18($sp) -/* 086614 7F051AE4 03E00008 */ jr $ra -/* 086618 7F051AE8 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void check_if_item_deposited(void) { - -} -#else -GLOBAL_ASM( -.text -glabel check_if_item_deposited -/* 08661C 7F051AEC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 086620 7F051AF0 AFBF001C */ sw $ra, 0x1c($sp) -/* 086624 7F051AF4 AFB10018 */ sw $s1, 0x18($sp) -/* 086628 7F051AF8 00808825 */ move $s1, $a0 -/* 08662C 7F051AFC 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry -/* 086630 7F051B00 AFB00014 */ sw $s0, 0x14($sp) -/* 086634 7F051B04 1040000F */ beqz $v0, .L7F051B44 -/* 086638 7F051B08 00408025 */ move $s0, $v0 -/* 08663C 7F051B0C 02202025 */ move $a0, $s1 -.L7F051B10: -/* 086640 7F051B10 0FC1469A */ jal check_if_entry_is_collectable -/* 086644 7F051B14 02002825 */ move $a1, $s0 -/* 086648 7F051B18 50400008 */ beql $v0, $zero, .L7F051B3C -/* 08664C 7F051B1C 8E100024 */ lw $s0, 0x24($s0) -/* 086650 7F051B20 8C4E0064 */ lw $t6, 0x64($v0) -/* 086654 7F051B24 31CF0080 */ andi $t7, $t6, 0x80 -/* 086658 7F051B28 55E00004 */ bnezl $t7, .L7F051B3C -/* 08665C 7F051B2C 8E100024 */ lw $s0, 0x24($s0) -/* 086660 7F051B30 10000006 */ b .L7F051B4C -/* 086664 7F051B34 8FBF001C */ lw $ra, 0x1c($sp) -/* 086668 7F051B38 8E100024 */ lw $s0, 0x24($s0) -.L7F051B3C: -/* 08666C 7F051B3C 5600FFF4 */ bnezl $s0, .L7F051B10 -/* 086670 7F051B40 02202025 */ move $a0, $s1 -.L7F051B44: -/* 086674 7F051B44 00001025 */ move $v0, $zero -/* 086678 7F051B48 8FBF001C */ lw $ra, 0x1c($sp) -.L7F051B4C: -/* 08667C 7F051B4C 8FB00014 */ lw $s0, 0x14($sp) -/* 086680 7F051B50 8FB10018 */ lw $s1, 0x18($sp) -/* 086684 7F051B54 03E00008 */ jr $ra -/* 086688 7F051B58 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void add_obj_to_temp_proxmine_table(void) { - -} -#else -GLOBAL_ASM( -.text -glabel add_obj_to_temp_proxmine_table -/* 08668C 7F051B5C 3C038007 */ lui $v1, %hi(dword_CODE_bss_80071E00) -/* 086690 7F051B60 3C028007 */ lui $v0, %hi(gas_damage_flag) -/* 086694 7F051B64 24421E78 */ addiu $v0, %lo(gas_damage_flag) # addiu $v0, $v0, 0x1e78 -/* 086698 7F051B68 24631E00 */ addiu $v1, %lo(dword_CODE_bss_80071E00) # addiu $v1, $v1, 0x1e00 -/* 08669C 7F051B6C 8C6E0000 */ lw $t6, ($v1) -.L7F051B70: -/* 0866A0 7F051B70 55C00004 */ bnezl $t6, .L7F051B84 -/* 0866A4 7F051B74 24630004 */ addiu $v1, $v1, 4 -/* 0866A8 7F051B78 03E00008 */ jr $ra -/* 0866AC 7F051B7C AC640000 */ sw $a0, ($v1) - -/* 0866B0 7F051B80 24630004 */ addiu $v1, $v1, 4 -.L7F051B84: -/* 0866B4 7F051B84 5462FFFA */ bnel $v1, $v0, .L7F051B70 -/* 0866B8 7F051B88 8C6E0000 */ lw $t6, ($v1) -/* 0866BC 7F051B8C 03E00008 */ jr $ra -/* 0866C0 7F051B90 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void remove_obj_from_temp_proxmine_table(void) { - -} -#else -GLOBAL_ASM( -.text -glabel remove_obj_from_temp_proxmine_table -/* 0866C4 7F051B94 3C038007 */ lui $v1, %hi(dword_CODE_bss_80071E00) -/* 0866C8 7F051B98 3C028007 */ lui $v0, %hi(gas_damage_flag) -/* 0866CC 7F051B9C 24421E78 */ addiu $v0, %lo(gas_damage_flag) # addiu $v0, $v0, 0x1e78 -/* 0866D0 7F051BA0 24631E00 */ addiu $v1, %lo(dword_CODE_bss_80071E00) # addiu $v1, $v1, 0x1e00 -/* 0866D4 7F051BA4 8C6E0000 */ lw $t6, ($v1) -.L7F051BA8: -/* 0866D8 7F051BA8 548E0004 */ bnel $a0, $t6, .L7F051BBC -/* 0866DC 7F051BAC 24630004 */ addiu $v1, $v1, 4 -/* 0866E0 7F051BB0 03E00008 */ jr $ra -/* 0866E4 7F051BB4 AC600000 */ sw $zero, ($v1) - -/* 0866E8 7F051BB8 24630004 */ addiu $v1, $v1, 4 -.L7F051BBC: -/* 0866EC 7F051BBC 5462FFFA */ bnel $v1, $v0, .L7F051BA8 -/* 0866F0 7F051BC0 8C6E0000 */ lw $t6, ($v1) -/* 0866F4 7F051BC4 03E00008 */ jr $ra -/* 0866F8 7F051BC8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void detonate_proxmine_In_range(void) { - -} -#else -GLOBAL_ASM( -.text -glabel detonate_proxmine_In_range -/* 0866FC 7F051BCC 3C038007 */ lui $v1, %hi(dword_CODE_bss_80071E00) -/* 086700 7F051BD0 3C018005 */ lui $at, %hi(D_800532EC) -/* 086704 7F051BD4 3C078007 */ lui $a3, %hi(gas_damage_flag) -/* 086708 7F051BD8 00802825 */ move $a1, $a0 -/* 08670C 7F051BDC 24E71E78 */ addiu $a3, %lo(gas_damage_flag) # addiu $a3, $a3, 0x1e78 -/* 086710 7F051BE0 C42E32EC */ lwc1 $f14, %lo(D_800532EC)($at) -/* 086714 7F051BE4 24631E00 */ addiu $v1, %lo(dword_CODE_bss_80071E00) # addiu $v1, $v1, 0x1e00 -/* 086718 7F051BE8 24060001 */ li $a2, 1 -/* 08671C 7F051BEC 8C640000 */ lw $a0, ($v1) -.L7F051BF0: -/* 086720 7F051BF0 50800018 */ beql $a0, $zero, .L7F051C54 -/* 086724 7F051BF4 8C620004 */ lw $v0, 4($v1) -/* 086728 7F051BF8 848E0082 */ lh $t6, 0x82($a0) -/* 08672C 7F051BFC 54CE0015 */ bnel $a2, $t6, .L7F051C54 -/* 086730 7F051C00 8C620004 */ lw $v0, 4($v1) -/* 086734 7F051C04 C4A40000 */ lwc1 $f4, ($a1) -/* 086738 7F051C08 C4860058 */ lwc1 $f6, 0x58($a0) -/* 08673C 7F051C0C C4A80004 */ lwc1 $f8, 4($a1) -/* 086740 7F051C10 C48A005C */ lwc1 $f10, 0x5c($a0) -/* 086744 7F051C14 46062001 */ sub.s $f0, $f4, $f6 -/* 086748 7F051C18 C4B00008 */ lwc1 $f16, 8($a1) -/* 08674C 7F051C1C C4920060 */ lwc1 $f18, 0x60($a0) -/* 086750 7F051C20 460A4081 */ sub.s $f2, $f8, $f10 -/* 086754 7F051C24 46000102 */ mul.s $f4, $f0, $f0 -/* 086758 7F051C28 46128301 */ sub.s $f12, $f16, $f18 -/* 08675C 7F051C2C 46021182 */ mul.s $f6, $f2, $f2 -/* 086760 7F051C30 46062200 */ add.s $f8, $f4, $f6 -/* 086764 7F051C34 460C6282 */ mul.s $f10, $f12, $f12 -/* 086768 7F051C38 460A4400 */ add.s $f16, $f8, $f10 -/* 08676C 7F051C3C 460E803C */ c.lt.s $f16, $f14 -/* 086770 7F051C40 00000000 */ nop -/* 086774 7F051C44 45020003 */ bc1fl .L7F051C54 -/* 086778 7F051C48 8C620004 */ lw $v0, 4($v1) -/* 08677C 7F051C4C A4800082 */ sh $zero, 0x82($a0) -/* 086780 7F051C50 8C620004 */ lw $v0, 4($v1) -.L7F051C54: -/* 086784 7F051C54 24630008 */ addiu $v1, $v1, 8 -/* 086788 7F051C58 10400017 */ beqz $v0, .L7F051CB8 -/* 08678C 7F051C5C 00000000 */ nop -/* 086790 7F051C60 844F0082 */ lh $t7, 0x82($v0) -/* 086794 7F051C64 14CF0014 */ bne $a2, $t7, .L7F051CB8 -/* 086798 7F051C68 00000000 */ nop -/* 08679C 7F051C6C C4B20000 */ lwc1 $f18, ($a1) -/* 0867A0 7F051C70 C4440058 */ lwc1 $f4, 0x58($v0) -/* 0867A4 7F051C74 C4A60004 */ lwc1 $f6, 4($a1) -/* 0867A8 7F051C78 C448005C */ lwc1 $f8, 0x5c($v0) -/* 0867AC 7F051C7C 46049001 */ sub.s $f0, $f18, $f4 -/* 0867B0 7F051C80 C4AA0008 */ lwc1 $f10, 8($a1) -/* 0867B4 7F051C84 C4500060 */ lwc1 $f16, 0x60($v0) -/* 0867B8 7F051C88 46083081 */ sub.s $f2, $f6, $f8 -/* 0867BC 7F051C8C 46000482 */ mul.s $f18, $f0, $f0 -/* 0867C0 7F051C90 46105301 */ sub.s $f12, $f10, $f16 -/* 0867C4 7F051C94 46021102 */ mul.s $f4, $f2, $f2 -/* 0867C8 7F051C98 46049180 */ add.s $f6, $f18, $f4 -/* 0867CC 7F051C9C 460C6202 */ mul.s $f8, $f12, $f12 -/* 0867D0 7F051CA0 46083280 */ add.s $f10, $f6, $f8 -/* 0867D4 7F051CA4 460E503C */ c.lt.s $f10, $f14 -/* 0867D8 7F051CA8 00000000 */ nop -/* 0867DC 7F051CAC 45000002 */ bc1f .L7F051CB8 -/* 0867E0 7F051CB0 00000000 */ nop -/* 0867E4 7F051CB4 A4400082 */ sh $zero, 0x82($v0) -.L7F051CB8: -/* 0867E8 7F051CB8 5467FFCD */ bnel $v1, $a3, .L7F051BF0 -/* 0867EC 7F051CBC 8C640000 */ lw $a0, ($v1) -/* 0867F0 7F051CC0 03E00008 */ jr $ra -/* 0867F4 7F051CC4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051CC8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051CC8 -/* 0867F8 7F051CC8 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 0867FC 7F051CCC AFBF002C */ sw $ra, 0x2c($sp) -/* 086800 7F051CD0 AFB40028 */ sw $s4, 0x28($sp) -/* 086804 7F051CD4 AFB30024 */ sw $s3, 0x24($sp) -/* 086808 7F051CD8 AFB20020 */ sw $s2, 0x20($sp) -/* 08680C 7F051CDC AFB1001C */ sw $s1, 0x1c($sp) -/* 086810 7F051CE0 0FC07D4C */ jal get_numguards -/* 086814 7F051CE4 AFB00018 */ sw $s0, 0x18($sp) -/* 086818 7F051CE8 1840001A */ blez $v0, .L7F051D54 -/* 08681C 7F051CEC 00008025 */ move $s0, $zero -/* 086820 7F051CF0 00029900 */ sll $s3, $v0, 4 -/* 086824 7F051CF4 02629823 */ subu $s3, $s3, $v0 -/* 086828 7F051CF8 001398C0 */ sll $s3, $s3, 3 -/* 08682C 7F051CFC 02629823 */ subu $s3, $s3, $v0 -/* 086830 7F051D00 3C148003 */ lui $s4, %hi(ptr_guard_data) -/* 086834 7F051D04 2694CC64 */ addiu $s4, %lo(ptr_guard_data) # addiu $s4, $s4, -0x339c -/* 086838 7F051D08 00139880 */ sll $s3, $s3, 2 -/* 08683C 7F051D0C 27B10038 */ addiu $s1, $sp, 0x38 -/* 086840 7F051D10 8E8E0000 */ lw $t6, ($s4) -.L7F051D14: -/* 086844 7F051D14 020E2021 */ addu $a0, $s0, $t6 -/* 086848 7F051D18 8C8F001C */ lw $t7, 0x1c($a0) -/* 08684C 7F051D1C 51E0000A */ beql $t7, $zero, .L7F051D48 -/* 086850 7F051D20 261001DC */ addiu $s0, $s0, 0x1dc -/* 086854 7F051D24 94980012 */ lhu $t8, 0x12($a0) -/* 086858 7F051D28 33190200 */ andi $t9, $t8, 0x200 -/* 08685C 7F051D2C 53200006 */ beql $t9, $zero, .L7F051D48 -/* 086860 7F051D30 261001DC */ addiu $s0, $s0, 0x1dc -/* 086864 7F051D34 0FC0A225 */ jal sub_GAME_7F028894 -/* 086868 7F051D38 02202825 */ move $a1, $s1 -/* 08686C 7F051D3C 0FC146F3 */ jal detonate_proxmine_In_range -/* 086870 7F051D40 02202025 */ move $a0, $s1 -/* 086874 7F051D44 261001DC */ addiu $s0, $s0, 0x1dc -.L7F051D48: -/* 086878 7F051D48 0213082A */ slt $at, $s0, $s3 -/* 08687C 7F051D4C 5420FFF1 */ bnezl $at, .L7F051D14 -/* 086880 7F051D50 8E8E0000 */ lw $t6, ($s4) -.L7F051D54: -/* 086884 7F051D54 8FBF002C */ lw $ra, 0x2c($sp) -/* 086888 7F051D58 8FB00018 */ lw $s0, 0x18($sp) -/* 08688C 7F051D5C 8FB1001C */ lw $s1, 0x1c($sp) -/* 086890 7F051D60 8FB20020 */ lw $s2, 0x20($sp) -/* 086894 7F051D64 8FB30024 */ lw $s3, 0x24($sp) -/* 086898 7F051D68 8FB40028 */ lw $s4, 0x28($sp) -/* 08689C 7F051D6C 03E00008 */ jr $ra -/* 0868A0 7F051D70 27BD0050 */ addiu $sp, $sp, 0x50 -) -#endif - - - - - -#ifdef NONMATCHING -void link_objects(void) { - -} -#else -GLOBAL_ASM( -.text -glabel link_objects -/* 0868A4 7F051D74 80AE0080 */ lb $t6, 0x80($a1) -/* 0868A8 7F051D78 808F0080 */ lb $t7, 0x80($a0) -/* 0868AC 7F051D7C AC850084 */ sw $a1, 0x84($a0) -/* 0868B0 7F051D80 A08E0081 */ sb $t6, 0x81($a0) -/* 0868B4 7F051D84 ACA40084 */ sw $a0, 0x84($a1) -/* 0868B8 7F051D88 03E00008 */ jr $ra -/* 0868BC 7F051D8C A0AF0081 */ sb $t7, 0x81($a1) -) -#endif - - - - - -#ifdef NONMATCHING -void complete_object_data_block_return_position_entry(void) { - -} -#else -GLOBAL_ASM( -.text -glabel complete_object_data_block_return_position_entry -/* 0868C0 7F051D90 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0868C4 7F051D94 AFBF0014 */ sw $ra, 0x14($sp) -/* 0868C8 7F051D98 0FC10153 */ jal init_standard_object -/* 0868CC 7F051D9C 00000000 */ nop -/* 0868D0 7F051DA0 10400008 */ beqz $v0, .L7F051DC4 -/* 0868D4 7F051DA4 00403025 */ move $a2, $v0 -/* 0868D8 7F051DA8 240E0004 */ li $t6, 4 -/* 0868DC 7F051DAC A04E0000 */ sb $t6, ($v0) -/* 0868E0 7F051DB0 AFA20020 */ sw $v0, 0x20($sp) -/* 0868E4 7F051DB4 00402025 */ move $a0, $v0 -/* 0868E8 7F051DB8 0FC1495D */ jal sub_GAME_7F052574 -/* 0868EC 7F051DBC 00002825 */ move $a1, $zero -/* 0868F0 7F051DC0 8FA60020 */ lw $a2, 0x20($sp) -.L7F051DC4: -/* 0868F4 7F051DC4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0868F8 7F051DC8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0868FC 7F051DCC 00C01025 */ move $v0, $a2 -/* 086900 7F051DD0 03E00008 */ jr $ra -/* 086904 7F051DD4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051DD8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051DD8 -/* 086908 7F051DD8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08690C 7F051DDC AFBF0014 */ sw $ra, 0x14($sp) -/* 086910 7F051DE0 0FC101BE */ jal sub_GAME_7F0406F8 -/* 086914 7F051DE4 00000000 */ nop -/* 086918 7F051DE8 10400007 */ beqz $v0, .L7F051E08 -/* 08691C 7F051DEC 00402025 */ move $a0, $v0 -/* 086920 7F051DF0 240E0004 */ li $t6, 4 -/* 086924 7F051DF4 A04E0000 */ sb $t6, ($v0) -/* 086928 7F051DF8 AFA2001C */ sw $v0, 0x1c($sp) -/* 08692C 7F051DFC 0FC1495D */ jal sub_GAME_7F052574 -/* 086930 7F051E00 00002825 */ move $a1, $zero -/* 086934 7F051E04 8FA4001C */ lw $a0, 0x1c($sp) -.L7F051E08: -/* 086938 7F051E08 8FBF0014 */ lw $ra, 0x14($sp) -/* 08693C 7F051E0C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 086940 7F051E10 00801025 */ move $v0, $a0 -/* 086944 7F051E14 03E00008 */ jr $ra -/* 086948 7F051E18 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051E1C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051E1C -/* 08694C 7F051E1C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 086950 7F051E20 AFBF0014 */ sw $ra, 0x14($sp) -/* 086954 7F051E24 8C820008 */ lw $v0, 8($a0) -/* 086958 7F051E28 00A03825 */ move $a3, $a1 -/* 08695C 7F051E2C 00803025 */ move $a2, $a0 -/* 086960 7F051E30 000270C0 */ sll $t6, $v0, 3 -/* 086964 7F051E34 05C10003 */ bgez $t6, .L7F051E44 -/* 086968 7F051E38 00002825 */ move $a1, $zero -/* 08696C 7F051E3C 10000001 */ b .L7F051E44 -/* 086970 7F051E40 24050001 */ li $a1, 1 -.L7F051E44: -/* 086974 7F051E44 8CC40010 */ lw $a0, 0x10($a2) -/* 086978 7F051E48 50800035 */ beql $a0, $zero, .L7F051F20 -/* 08697C 7F051E4C 24020001 */ li $v0, 1 -/* 086980 7F051E50 8CC30014 */ lw $v1, 0x14($a2) -/* 086984 7F051E54 00027880 */ sll $t7, $v0, 2 -/* 086988 7F051E58 50600031 */ beql $v1, $zero, .L7F051F20 -/* 08698C 7F051E5C 24020001 */ li $v0, 1 -/* 086990 7F051E60 05E0002C */ bltz $t7, .L7F051F14 -/* 086994 7F051E64 00000000 */ nop -/* 086998 7F051E68 00052080 */ sll $a0, $a1, 2 -/* 08699C 7F051E6C 00E41021 */ addu $v0, $a3, $a0 -/* 0869A0 7F051E70 8C580160 */ lw $t8, 0x160($v0) -/* 0869A4 7F051E74 17000025 */ bnez $t8, .L7F051F0C -/* 0869A8 7F051E78 00000000 */ nop -/* 0869AC 7F051E7C 8CF9001C */ lw $t9, 0x1c($a3) -/* 0869B0 7F051E80 14800008 */ bnez $a0, .L7F051EA4 -/* 0869B4 7F051E84 AC790018 */ sw $t9, 0x18($v1) -/* 0869B8 7F051E88 8CE8001C */ lw $t0, 0x1c($a3) -/* 0869BC 7F051E8C 8CCC0014 */ lw $t4, 0x14($a2) -/* 0869C0 7F051E90 8D090008 */ lw $t1, 8($t0) -/* 0869C4 7F051E94 8D2A0008 */ lw $t2, 8($t1) -/* 0869C8 7F051E98 8D4B000C */ lw $t3, 0xc($t2) -/* 0869CC 7F051E9C 10000007 */ b .L7F051EBC -/* 0869D0 7F051EA0 AD8B001C */ sw $t3, 0x1c($t4) -.L7F051EA4: -/* 0869D4 7F051EA4 8CED001C */ lw $t5, 0x1c($a3) -/* 0869D8 7F051EA8 8CD90014 */ lw $t9, 0x14($a2) -/* 0869DC 7F051EAC 8DAE0008 */ lw $t6, 8($t5) -/* 0869E0 7F051EB0 8DCF0008 */ lw $t7, 8($t6) -/* 0869E4 7F051EB4 8DF80014 */ lw $t8, 0x14($t7) -/* 0869E8 7F051EB8 AF38001C */ sw $t8, 0x1c($t9) -.L7F051EBC: -/* 0869EC 7F051EBC 8CC80010 */ lw $t0, 0x10($a2) -/* 0869F0 7F051EC0 00045823 */ negu $t3, $a0 -/* 0869F4 7F051EC4 00EB6021 */ addu $t4, $a3, $t3 -/* 0869F8 7F051EC8 AC480160 */ sw $t0, 0x160($v0) -/* 0869FC 7F051ECC 8CC90008 */ lw $t1, 8($a2) -/* 086A00 7F051ED0 00095000 */ sll $t2, $t1, 0 -/* 086A04 7F051ED4 0541000B */ bgez $t2, .L7F051F04 -/* 086A08 7F051ED8 00000000 */ nop -/* 086A0C 7F051EDC 8D820164 */ lw $v0, 0x164($t4) -/* 086A10 7F051EE0 00C02025 */ move $a0, $a2 -/* 086A14 7F051EE4 10400007 */ beqz $v0, .L7F051F04 -/* 086A18 7F051EE8 00000000 */ nop -/* 086A1C 7F051EEC 8C450004 */ lw $a1, 4($v0) -/* 086A20 7F051EF0 AFA7001C */ sw $a3, 0x1c($sp) -/* 086A24 7F051EF4 0FC1475D */ jal link_objects -/* 086A28 7F051EF8 AFA60018 */ sw $a2, 0x18($sp) -/* 086A2C 7F051EFC 8FA60018 */ lw $a2, 0x18($sp) -/* 086A30 7F051F00 8FA7001C */ lw $a3, 0x1c($sp) -.L7F051F04: -/* 086A34 7F051F04 10000003 */ b .L7F051F14 -/* 086A38 7F051F08 8CC40010 */ lw $a0, 0x10($a2) -.L7F051F0C: -/* 086A3C 7F051F0C 10000004 */ b .L7F051F20 -/* 086A40 7F051F10 00001025 */ move $v0, $zero -.L7F051F14: -/* 086A44 7F051F14 0FC0E969 */ jal sub_GAME_7F03A5A4 -/* 086A48 7F051F18 8CE50018 */ lw $a1, 0x18($a3) -/* 086A4C 7F051F1C 24020001 */ li $v0, 1 -.L7F051F20: -/* 086A50 7F051F20 8FBF0014 */ lw $ra, 0x14($sp) -/* 086A54 7F051F24 27BD0018 */ addiu $sp, $sp, 0x18 -/* 086A58 7F051F28 03E00008 */ jr $ra -/* 086A5C 7F051F2C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051F30(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051F30 -/* 086A60 7F051F30 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 086A64 7F051F34 AFA50024 */ sw $a1, 0x24($sp) -/* 086A68 7F051F38 AFA60028 */ sw $a2, 0x28($sp) -/* 086A6C 7F051F3C 00C02825 */ move $a1, $a2 -/* 086A70 7F051F40 AFBF001C */ sw $ra, 0x1c($sp) -/* 086A74 7F051F44 AFB00018 */ sw $s0, 0x18($sp) -/* 086A78 7F051F48 AFA7002C */ sw $a3, 0x2c($sp) -/* 086A7C 7F051F4C 00E03025 */ move $a2, $a3 -/* 086A80 7F051F50 00808025 */ move $s0, $a0 -/* 086A84 7F051F54 0FC14764 */ jal complete_object_data_block_return_position_entry -/* 086A88 7F051F58 8FA70030 */ lw $a3, 0x30($sp) -/* 086A8C 7F051F5C 10400018 */ beqz $v0, .L7F051FC0 -/* 086A90 7F051F60 AFA2002C */ sw $v0, 0x2c($sp) -/* 086A94 7F051F64 8E040014 */ lw $a0, 0x14($s0) -/* 086A98 7F051F68 50800016 */ beql $a0, $zero, .L7F051FC4 -/* 086A9C 7F051F6C 8FBF001C */ lw $ra, 0x1c($sp) -/* 086AA0 7F051F70 960E0000 */ lhu $t6, ($s0) -/* 086AA4 7F051F74 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 086AA8 7F051F78 448E2000 */ mtc1 $t6, $f4 -/* 086AAC 7F051F7C 05C10004 */ bgez $t6, .L7F051F90 -/* 086AB0 7F051F80 468021A0 */ cvt.s.w $f6, $f4 -/* 086AB4 7F051F84 44814000 */ mtc1 $at, $f8 -/* 086AB8 7F051F88 00000000 */ nop -/* 086ABC 7F051F8C 46083180 */ add.s $f6, $f6, $f8 -.L7F051F90: -/* 086AC0 7F051F90 3C013B80 */ li $at, 0x3B800000 # 0.003906 -/* 086AC4 7F051F94 44815000 */ mtc1 $at, $f10 -/* 086AC8 7F051F98 C4900014 */ lwc1 $f16, 0x14($a0) -/* 086ACC 7F051F9C 460A3002 */ mul.s $f0, $f6, $f10 -/* 086AD0 7F051FA0 00000000 */ nop -/* 086AD4 7F051FA4 46008482 */ mul.s $f18, $f16, $f0 -/* 086AD8 7F051FA8 44059000 */ mfc1 $a1, $f18 -/* 086ADC 7F051FAC 0FC1B39E */ jal set_obj_instance_controller_scale -/* 086AE0 7F051FB0 00000000 */ nop -/* 086AE4 7F051FB4 02002025 */ move $a0, $s0 -/* 086AE8 7F051FB8 0FC14787 */ jal sub_GAME_7F051E1C -/* 086AEC 7F051FBC 8FA50024 */ lw $a1, 0x24($sp) -.L7F051FC0: -/* 086AF0 7F051FC0 8FBF001C */ lw $ra, 0x1c($sp) -.L7F051FC4: -/* 086AF4 7F051FC4 8FA2002C */ lw $v0, 0x2c($sp) -/* 086AF8 7F051FC8 8FB00018 */ lw $s0, 0x18($sp) -/* 086AFC 7F051FCC 03E00008 */ jr $ra -/* 086B00 7F051FD0 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F051FD4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F051FD4 -/* 086B04 7F051FD4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 086B08 7F051FD8 AFBF001C */ sw $ra, 0x1c($sp) -/* 086B0C 7F051FDC AFA40028 */ sw $a0, 0x28($sp) -/* 086B10 7F051FE0 AFA5002C */ sw $a1, 0x2c($sp) -/* 086B14 7F051FE4 84840004 */ lh $a0, 4($a0) -/* 086B18 7F051FE8 0FC15B0E */ jal load_model -/* 086B1C 7F051FEC AFA40020 */ sw $a0, 0x20($sp) -/* 086B20 7F051FF0 8FAF0020 */ lw $t7, 0x20($sp) -/* 086B24 7F051FF4 3C068004 */ lui $a2, %hi(PitemZ_entries) -/* 086B28 7F051FF8 8FA40028 */ lw $a0, 0x28($sp) -/* 086B2C 7F051FFC 000FC080 */ sll $t8, $t7, 2 -/* 086B30 7F052000 030FC023 */ subu $t8, $t8, $t7 -/* 086B34 7F052004 0018C080 */ sll $t8, $t8, 2 -/* 086B38 7F052008 00D83021 */ addu $a2, $a2, $t8 -/* 086B3C 7F05200C 8CC6A228 */ lw $a2, %lo(PitemZ_entries)($a2) -/* 086B40 7F052010 8FA5002C */ lw $a1, 0x2c($sp) -/* 086B44 7F052014 00003825 */ move $a3, $zero -/* 086B48 7F052018 0FC147CC */ jal sub_GAME_7F051F30 -/* 086B4C 7F05201C AFA00010 */ sw $zero, 0x10($sp) -/* 086B50 7F052020 8FBF001C */ lw $ra, 0x1c($sp) -/* 086B54 7F052024 27BD0028 */ addiu $sp, $sp, 0x28 -/* 086B58 7F052028 03E00008 */ jr $ra -/* 086B5C 7F05202C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F052030(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F052030 -/* 086B60 7F052030 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 086B64 7F052034 AFBF0014 */ sw $ra, 0x14($sp) -/* 086B68 7F052038 8C8E0074 */ lw $t6, 0x74($a0) -/* 086B6C 7F05203C 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 086B70 7F052040 44814000 */ mtc1 $at, $f8 -/* 086B74 7F052044 448E2000 */ mtc1 $t6, $f4 -/* 086B78 7F052048 00000000 */ nop -/* 086B7C 7F05204C 468021A0 */ cvt.s.w $f6, $f4 -/* 086B80 7F052050 46083283 */ div.s $f10, $f6, $f8 -/* 086B84 7F052054 0FC147F5 */ jal sub_GAME_7F051FD4 -/* 086B88 7F052058 E48A0074 */ swc1 $f10, 0x74($a0) -/* 086B8C 7F05205C 8FBF0014 */ lw $ra, 0x14($sp) -/* 086B90 7F052060 27BD0018 */ addiu $sp, $sp, 0x18 -/* 086B94 7F052064 03E00008 */ jr $ra -/* 086B98 7F052068 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void create_new_item_instance_of_model(void) { - -} -#else -GLOBAL_ASM( -.text -glabel create_new_item_instance_of_model -/* 086B9C 7F05206C 00047080 */ sll $t6, $a0, 2 -/* 086BA0 7F052070 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 086BA4 7F052074 01C47023 */ subu $t6, $t6, $a0 -/* 086BA8 7F052078 000E7080 */ sll $t6, $t6, 2 -/* 086BAC 7F05207C 3C0F8004 */ lui $t7, %hi(PitemZ_entries) -/* 086BB0 7F052080 01EE7821 */ addu $t7, $t7, $t6 -/* 086BB4 7F052084 8DEFA228 */ lw $t7, %lo(PitemZ_entries)($t7) -/* 086BB8 7F052088 AFBF001C */ sw $ra, 0x1c($sp) -/* 086BBC 7F05208C AFB10018 */ sw $s1, 0x18($sp) -/* 086BC0 7F052090 AFB00014 */ sw $s0, 0x14($sp) -/* 086BC4 7F052094 AFA500BC */ sw $a1, 0xbc($sp) -/* 086BC8 7F052098 AFA400B8 */ sw $a0, 0xb8($sp) -/* 086BCC 7F05209C 0FC15B0E */ jal load_model -/* 086BD0 7F0520A0 AFAF00B4 */ sw $t7, 0xb4($sp) -/* 086BD4 7F0520A4 0FC0E90C */ jal remove_last_obj_pos_data_entry -/* 086BD8 7F0520A8 00000000 */ nop -/* 086BDC 7F0520AC 00408025 */ move $s0, $v0 -/* 086BE0 7F0520B0 0FC1B025 */ jal get_obj_instance_controller_for_header -/* 086BE4 7F0520B4 8FA400B4 */ lw $a0, 0xb4($sp) -/* 086BE8 7F0520B8 2E040001 */ sltiu $a0, $s0, 1 -/* 086BEC 7F0520BC 2C450001 */ sltiu $a1, $v0, 1 -/* 086BF0 7F0520C0 8FA600B4 */ lw $a2, 0xb4($sp) -/* 086BF4 7F0520C4 0FC1449B */ jal sub_GAME_7F05126C -/* 086BF8 7F0520C8 AFA200AC */ sw $v0, 0xac($sp) -/* 086BFC 7F0520CC 8FA700AC */ lw $a3, 0xac($sp) -/* 086C00 7F0520D0 16000005 */ bnez $s0, .L7F0520E8 -/* 086C04 7F0520D4 00408825 */ move $s1, $v0 -/* 086C08 7F0520D8 0FC0E90C */ jal remove_last_obj_pos_data_entry -/* 086C0C 7F0520DC AFA700AC */ sw $a3, 0xac($sp) -/* 086C10 7F0520E0 8FA700AC */ lw $a3, 0xac($sp) -/* 086C14 7F0520E4 00408025 */ move $s0, $v0 -.L7F0520E8: -/* 086C18 7F0520E8 14E00004 */ bnez $a3, .L7F0520FC -/* 086C1C 7F0520EC 00000000 */ nop -/* 086C20 7F0520F0 0FC1B025 */ jal get_obj_instance_controller_for_header -/* 086C24 7F0520F4 8FA400B4 */ lw $a0, 0xb4($sp) -/* 086C28 7F0520F8 00403825 */ move $a3, $v0 -.L7F0520FC: -/* 086C2C 7F0520FC 1220002C */ beqz $s1, .L7F0521B0 -/* 086C30 7F052100 00000000 */ nop -/* 086C34 7F052104 1200002A */ beqz $s0, .L7F0521B0 -/* 086C38 7F052108 00000000 */ nop -/* 086C3C 7F05210C 10E00028 */ beqz $a3, .L7F0521B0 -/* 086C40 7F052110 27A20020 */ addiu $v0, $sp, 0x20 -/* 086C44 7F052114 3C188003 */ lui $t8, %hi(blank_08_object_preset_1) -/* 086C48 7F052118 27182194 */ addiu $t8, %lo(blank_08_object_preset_1) # addiu $t8, $t8, 0x2194 -/* 086C4C 7F05211C 27080084 */ addiu $t0, $t8, 0x84 -/* 086C50 7F052120 00404825 */ move $t1, $v0 -.L7F052124: -/* 086C54 7F052124 8F010000 */ lw $at, ($t8) -/* 086C58 7F052128 2718000C */ addiu $t8, $t8, 0xc -/* 086C5C 7F05212C 2529000C */ addiu $t1, $t1, 0xc -/* 086C60 7F052130 AD21FFF4 */ sw $at, -0xc($t1) -/* 086C64 7F052134 8F01FFF8 */ lw $at, -8($t8) -/* 086C68 7F052138 AD21FFF8 */ sw $at, -8($t1) -/* 086C6C 7F05213C 8F01FFFC */ lw $at, -4($t8) -/* 086C70 7F052140 1708FFF8 */ bne $t8, $t0, .L7F052124 -/* 086C74 7F052144 AD21FFFC */ sw $at, -4($t1) -/* 086C78 7F052148 8F010000 */ lw $at, ($t8) -/* 086C7C 7F05214C 00406025 */ move $t4, $v0 -/* 086C80 7F052150 02206825 */ move $t5, $s1 -/* 086C84 7F052154 244B0084 */ addiu $t3, $v0, 0x84 -/* 086C88 7F052158 AD210000 */ sw $at, ($t1) -.L7F05215C: -/* 086C8C 7F05215C 8D810000 */ lw $at, ($t4) -/* 086C90 7F052160 258C000C */ addiu $t4, $t4, 0xc -/* 086C94 7F052164 25AD000C */ addiu $t5, $t5, 0xc -/* 086C98 7F052168 ADA1FFF4 */ sw $at, -0xc($t5) -/* 086C9C 7F05216C 8D81FFF8 */ lw $at, -8($t4) -/* 086CA0 7F052170 ADA1FFF8 */ sw $at, -8($t5) -/* 086CA4 7F052174 8D81FFFC */ lw $at, -4($t4) -/* 086CA8 7F052178 158BFFF8 */ bne $t4, $t3, .L7F05215C -/* 086CAC 7F05217C ADA1FFFC */ sw $at, -4($t5) -/* 086CB0 7F052180 8D810000 */ lw $at, ($t4) -/* 086CB4 7F052184 02202025 */ move $a0, $s1 -/* 086CB8 7F052188 02003025 */ move $a2, $s0 -/* 086CBC 7F05218C ADA10000 */ sw $at, ($t5) -/* 086CC0 7F052190 8FAE00BC */ lw $t6, 0xbc($sp) -/* 086CC4 7F052194 A22E0080 */ sb $t6, 0x80($s1) -/* 086CC8 7F052198 8FAF00B8 */ lw $t7, 0xb8($sp) -/* 086CCC 7F05219C A62F0004 */ sh $t7, 4($s1) -/* 086CD0 7F0521A0 0FC14764 */ jal complete_object_data_block_return_position_entry -/* 086CD4 7F0521A4 8FA500B4 */ lw $a1, 0xb4($sp) -/* 086CD8 7F0521A8 1000000A */ b .L7F0521D4 -/* 086CDC 7F0521AC 8FBF001C */ lw $ra, 0x1c($sp) -.L7F0521B0: -/* 086CE0 7F0521B0 10E00003 */ beqz $a3, .L7F0521C0 -/* 086CE4 7F0521B4 00008825 */ move $s1, $zero -/* 086CE8 7F0521B8 0FC1B08D */ jal set_obj_instance_scale_to_zero -/* 086CEC 7F0521BC 00E02025 */ move $a0, $a3 -.L7F0521C0: -/* 086CF0 7F0521C0 52000004 */ beql $s0, $zero, .L7F0521D4 -/* 086CF4 7F0521C4 8FBF001C */ lw $ra, 0x1c($sp) -/* 086CF8 7F0521C8 0FC0E921 */ jal set_last_obj_pos_data -/* 086CFC 7F0521CC 02002025 */ move $a0, $s0 -/* 086D00 7F0521D0 8FBF001C */ lw $ra, 0x1c($sp) -.L7F0521D4: -/* 086D04 7F0521D4 02201025 */ move $v0, $s1 -/* 086D08 7F0521D8 8FB10018 */ lw $s1, 0x18($sp) -/* 086D0C 7F0521DC 8FB00014 */ lw $s0, 0x14($sp) -/* 086D10 7F0521E0 03E00008 */ jr $ra -/* 086D14 7F0521E4 27BD00B8 */ addiu $sp, $sp, 0xb8 -) -#endif - - - - -#ifdef NONMATCHING -void set_0x4_in_runtime_flags_for_item_in_guards_hand(PCHRdata chr, int hand_index) { - // BROKEN: we need to first identify the struct assigned to handle_positiondata ptr - // function used to remove item from right/left hand or something, maybe position holding data? - void **item_in_hand_ptr; - - if (chr->handle_positiondata[hand_index] != 0) - { - item_in_hand_ptr = chr->handle_positiondata[hand_index] + 4; - item_in_hand_ptr[0x19] = (s32)(item_in_hand_ptr[0x19]) | 4; - } -} -#else -GLOBAL_ASM( -.text -glabel set_0x4_in_runtime_flags_for_item_in_guards_hand -/* 086D18 7F0521E8 00057080 */ sll $t6, $a1, 2 -/* 086D1C 7F0521EC 008E7821 */ addu $t7, $a0, $t6 -/* 086D20 7F0521F0 8DE20160 */ lw $v0, 0x160($t7) -/* 086D24 7F0521F4 10400005 */ beqz $v0, .L7F05220C -/* 086D28 7F0521F8 00000000 */ nop -/* 086D2C 7F0521FC 8C430004 */ lw $v1, 4($v0) -/* 086D30 7F052200 8C780064 */ lw $t8, 0x64($v1) -/* 086D34 7F052204 37190004 */ ori $t9, $t8, 4 -/* 086D38 7F052208 AC790064 */ sw $t9, 0x64($v1) -.L7F05220C: -/* 086D3C 7F05220C 03E00008 */ jr $ra -/* 086D40 7F052210 00000000 */ nop -) -#endif - - - - -#ifdef NONMATCHING -void something_with_generating_object(void) { - -} -#else -GLOBAL_ASM( -.text -glabel something_with_generating_object -/* 086D44 7F052214 27BDFF40 */ addiu $sp, $sp, -0xc0 -/* 086D48 7F052218 8FAE00D4 */ lw $t6, 0xd4($sp) -/* 086D4C 7F05221C AFBF002C */ sw $ra, 0x2c($sp) -/* 086D50 7F052220 AFB20028 */ sw $s2, 0x28($sp) -/* 086D54 7F052224 AFB10024 */ sw $s1, 0x24($sp) -/* 086D58 7F052228 AFB00020 */ sw $s0, 0x20($sp) -/* 086D5C 7F05222C AFA400C0 */ sw $a0, 0xc0($sp) -/* 086D60 7F052230 AFA500C4 */ sw $a1, 0xc4($sp) -/* 086D64 7F052234 AFA600C8 */ sw $a2, 0xc8($sp) -/* 086D68 7F052238 15C0000A */ bnez $t6, .L7F052264 -/* 086D6C 7F05223C AFA700CC */ sw $a3, 0xcc($sp) -/* 086D70 7F052240 0005C080 */ sll $t8, $a1, 2 -/* 086D74 7F052244 0305C023 */ subu $t8, $t8, $a1 -/* 086D78 7F052248 0018C080 */ sll $t8, $t8, 2 -/* 086D7C 7F05224C 3C198004 */ lui $t9, %hi(PitemZ_entries) -/* 086D80 7F052250 0338C821 */ addu $t9, $t9, $t8 -/* 086D84 7F052254 8F39A228 */ lw $t9, %lo(PitemZ_entries)($t9) -/* 086D88 7F052258 00A02025 */ move $a0, $a1 -/* 086D8C 7F05225C 0FC15B0E */ jal load_model -/* 086D90 7F052260 AFB900D4 */ sw $t9, 0xd4($sp) -.L7F052264: -/* 086D94 7F052264 0FC0E90C */ jal remove_last_obj_pos_data_entry -/* 086D98 7F052268 00000000 */ nop -/* 086D9C 7F05226C 00408825 */ move $s1, $v0 -/* 086DA0 7F052270 0FC1B025 */ jal get_obj_instance_controller_for_header -/* 086DA4 7F052274 8FA400D4 */ lw $a0, 0xd4($sp) -/* 086DA8 7F052278 8FB000D0 */ lw $s0, 0xd0($sp) -/* 086DAC 7F05227C 00409025 */ move $s2, $v0 -/* 086DB0 7F052280 2E240001 */ sltiu $a0, $s1, 1 -/* 086DB4 7F052284 16000004 */ bnez $s0, .L7F052298 -/* 086DB8 7F052288 2C450001 */ sltiu $a1, $v0, 1 -/* 086DBC 7F05228C 0FC1449B */ jal sub_GAME_7F05126C -/* 086DC0 7F052290 8FA600D4 */ lw $a2, 0xd4($sp) -/* 086DC4 7F052294 00408025 */ move $s0, $v0 -.L7F052298: -/* 086DC8 7F052298 16200004 */ bnez $s1, .L7F0522AC -/* 086DCC 7F05229C 00000000 */ nop -/* 086DD0 7F0522A0 0FC0E90C */ jal remove_last_obj_pos_data_entry -/* 086DD4 7F0522A4 00000000 */ nop -/* 086DD8 7F0522A8 00408825 */ move $s1, $v0 -.L7F0522AC: -/* 086DDC 7F0522AC 16400004 */ bnez $s2, .L7F0522C0 -/* 086DE0 7F0522B0 00000000 */ nop -/* 086DE4 7F0522B4 0FC1B025 */ jal get_obj_instance_controller_for_header -/* 086DE8 7F0522B8 8FA400D4 */ lw $a0, 0xd4($sp) -/* 086DEC 7F0522BC 00409025 */ move $s2, $v0 -.L7F0522C0: -/* 086DF0 7F0522C0 12000034 */ beqz $s0, .L7F052394 -/* 086DF4 7F0522C4 00000000 */ nop -/* 086DF8 7F0522C8 12200032 */ beqz $s1, .L7F052394 -/* 086DFC 7F0522CC 00000000 */ nop -/* 086E00 7F0522D0 12400030 */ beqz $s2, .L7F052394 -/* 086E04 7F0522D4 27A20030 */ addiu $v0, $sp, 0x30 -/* 086E08 7F0522D8 3C088003 */ lui $t0, %hi(blank_08_object_preset_4001) -/* 086E0C 7F0522DC 2508221C */ addiu $t0, %lo(blank_08_object_preset_4001) # addiu $t0, $t0, 0x221c -/* 086E10 7F0522E0 250A0084 */ addiu $t2, $t0, 0x84 -/* 086E14 7F0522E4 00405825 */ move $t3, $v0 -.L7F0522E8: -/* 086E18 7F0522E8 8D010000 */ lw $at, ($t0) -/* 086E1C 7F0522EC 2508000C */ addiu $t0, $t0, 0xc -/* 086E20 7F0522F0 256B000C */ addiu $t3, $t3, 0xc -/* 086E24 7F0522F4 AD61FFF4 */ sw $at, -0xc($t3) -/* 086E28 7F0522F8 8D01FFF8 */ lw $at, -8($t0) -/* 086E2C 7F0522FC AD61FFF8 */ sw $at, -8($t3) -/* 086E30 7F052300 8D01FFFC */ lw $at, -4($t0) -/* 086E34 7F052304 150AFFF8 */ bne $t0, $t2, .L7F0522E8 -/* 086E38 7F052308 AD61FFFC */ sw $at, -4($t3) -/* 086E3C 7F05230C 8D010000 */ lw $at, ($t0) -/* 086E40 7F052310 00407025 */ move $t6, $v0 -/* 086E44 7F052314 0200C025 */ move $t8, $s0 -/* 086E48 7F052318 244D0084 */ addiu $t5, $v0, 0x84 -/* 086E4C 7F05231C AD610000 */ sw $at, ($t3) -.L7F052320: -/* 086E50 7F052320 8DC10000 */ lw $at, ($t6) -/* 086E54 7F052324 25CE000C */ addiu $t6, $t6, 0xc -/* 086E58 7F052328 2718000C */ addiu $t8, $t8, 0xc -/* 086E5C 7F05232C AF01FFF4 */ sw $at, -0xc($t8) -/* 086E60 7F052330 8DC1FFF8 */ lw $at, -8($t6) -/* 086E64 7F052334 AF01FFF8 */ sw $at, -8($t8) -/* 086E68 7F052338 8DC1FFFC */ lw $at, -4($t6) -/* 086E6C 7F05233C 15CDFFF8 */ bne $t6, $t5, .L7F052320 -/* 086E70 7F052340 AF01FFFC */ sw $at, -4($t8) -/* 086E74 7F052344 8DC10000 */ lw $at, ($t6) -/* 086E78 7F052348 02002025 */ move $a0, $s0 -/* 086E7C 7F05234C 02203825 */ move $a3, $s1 -/* 086E80 7F052350 AF010000 */ sw $at, ($t8) -/* 086E84 7F052354 8FB900C8 */ lw $t9, 0xc8($sp) -/* 086E88 7F052358 A2190080 */ sb $t9, 0x80($s0) -/* 086E8C 7F05235C 8FAF00C4 */ lw $t7, 0xc4($sp) -/* 086E90 7F052360 A60F0004 */ sh $t7, 4($s0) -/* 086E94 7F052364 8FA900CC */ lw $t1, 0xcc($sp) -/* 086E98 7F052368 352A4000 */ ori $t2, $t1, 0x4000 -/* 086E9C 7F05236C AE0A0008 */ sw $t2, 8($s0) -/* 086EA0 7F052370 8FA800C0 */ lw $t0, 0xc0($sp) -/* 086EA4 7F052374 850B0000 */ lh $t3, ($t0) -/* 086EA8 7F052378 A60B0006 */ sh $t3, 6($s0) -/* 086EAC 7F05237C AFB20010 */ sw $s2, 0x10($sp) -/* 086EB0 7F052380 8FA600D4 */ lw $a2, 0xd4($sp) -/* 086EB4 7F052384 0FC147CC */ jal sub_GAME_7F051F30 -/* 086EB8 7F052388 8FA500C0 */ lw $a1, 0xc0($sp) -/* 086EBC 7F05238C 1000000A */ b .L7F0523B8 -/* 086EC0 7F052390 00408825 */ move $s1, $v0 -.L7F052394: -/* 086EC4 7F052394 12400003 */ beqz $s2, .L7F0523A4 -/* 086EC8 7F052398 00000000 */ nop -/* 086ECC 7F05239C 0FC1B08D */ jal set_obj_instance_scale_to_zero -/* 086ED0 7F0523A0 02402025 */ move $a0, $s2 -.L7F0523A4: -/* 086ED4 7F0523A4 52200005 */ beql $s1, $zero, .L7F0523BC -/* 086ED8 7F0523A8 8FBF002C */ lw $ra, 0x2c($sp) -/* 086EDC 7F0523AC 0FC0E921 */ jal set_last_obj_pos_data -/* 086EE0 7F0523B0 02202025 */ move $a0, $s1 -/* 086EE4 7F0523B4 00008825 */ move $s1, $zero -.L7F0523B8: -/* 086EE8 7F0523B8 8FBF002C */ lw $ra, 0x2c($sp) -.L7F0523BC: -/* 086EEC 7F0523BC 02201025 */ move $v0, $s1 -/* 086EF0 7F0523C0 8FB10024 */ lw $s1, 0x24($sp) -/* 086EF4 7F0523C4 8FB00020 */ lw $s0, 0x20($sp) -/* 086EF8 7F0523C8 8FB20028 */ lw $s2, 0x28($sp) -/* 086EFC 7F0523CC 03E00008 */ jr $ra -/* 086F00 7F0523D0 27BD00C0 */ addiu $sp, $sp, 0xc0 -) -#endif - - - - - -#ifdef NONMATCHING -void actor_draws_weapon_with_model(void) { - -} -#else -GLOBAL_ASM( -.text -glabel actor_draws_weapon_with_model -/* 086F04 7F0523D4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 086F08 7F0523D8 AFBF001C */ sw $ra, 0x1c($sp) -/* 086F0C 7F0523DC AFA00010 */ sw $zero, 0x10($sp) -/* 086F10 7F0523E0 0FC14885 */ jal something_with_generating_object -/* 086F14 7F0523E4 AFA00014 */ sw $zero, 0x14($sp) -/* 086F18 7F0523E8 8FBF001C */ lw $ra, 0x1c($sp) -/* 086F1C 7F0523EC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 086F20 7F0523F0 03E00008 */ jr $ra -/* 086F24 7F0523F4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0523F8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0523F8 -/* 086F28 7F0523F8 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 086F2C 7F0523FC AFBF001C */ sw $ra, 0x1c($sp) -/* 086F30 7F052400 AFB10018 */ sw $s1, 0x18($sp) -/* 086F34 7F052404 AFB00014 */ sw $s0, 0x14($sp) -/* 086F38 7F052408 AFA500BC */ sw $a1, 0xbc($sp) -/* 086F3C 7F05240C AFA600C0 */ sw $a2, 0xc0($sp) -/* 086F40 7F052410 8C870004 */ lw $a3, 4($a0) -/* 086F44 7F052414 00E02025 */ move $a0, $a3 -/* 086F48 7F052418 0FC08C0B */ jal something_with_weaponpos_of_guarddata_hand -/* 086F4C 7F05241C AFA700B4 */ sw $a3, 0xb4($sp) -/* 086F50 7F052420 8FA700B4 */ lw $a3, 0xb4($sp) -/* 086F54 7F052424 10400046 */ beqz $v0, .L7F052540 -/* 086F58 7F052428 00401825 */ move $v1, $v0 -/* 086F5C 7F05242C 8C500004 */ lw $s0, 4($v0) -/* 086F60 7F052430 8E0E0064 */ lw $t6, 0x64($s0) -/* 086F64 7F052434 31CF0800 */ andi $t7, $t6, 0x800 -/* 086F68 7F052438 55E0003F */ bnezl $t7, .L7F052538 -/* 086F6C 7F05243C 90480001 */ lbu $t0, 1($v0) -/* 086F70 7F052440 8E18000C */ lw $t8, 0xc($s0) -/* 086F74 7F052444 3C098003 */ lui $t1, %hi(D_800322A4) -/* 086F78 7F052448 252922A4 */ addiu $t1, %lo(D_800322A4) # addiu $t1, $t1, 0x22a4 -/* 086F7C 7F05244C 0018CB00 */ sll $t9, $t8, 0xc -/* 086F80 7F052450 07200038 */ bltz $t9, .L7F052534 -/* 086F84 7F052454 27A80068 */ addiu $t0, $sp, 0x68 -/* 086F88 7F052458 8E110014 */ lw $s1, 0x14($s0) -/* 086F8C 7F05245C 252B003C */ addiu $t3, $t1, 0x3c -.L7F052460: -/* 086F90 7F052460 8D210000 */ lw $at, ($t1) -/* 086F94 7F052464 2529000C */ addiu $t1, $t1, 0xc -/* 086F98 7F052468 2508000C */ addiu $t0, $t0, 0xc -/* 086F9C 7F05246C AD01FFF4 */ sw $at, -0xc($t0) -/* 086FA0 7F052470 8D21FFF8 */ lw $at, -8($t1) -/* 086FA4 7F052474 AD01FFF8 */ sw $at, -8($t0) -/* 086FA8 7F052478 8D21FFFC */ lw $at, -4($t1) -/* 086FAC 7F05247C 152BFFF8 */ bne $t1, $t3, .L7F052460 -/* 086FB0 7F052480 AD01FFFC */ sw $at, -4($t0) -/* 086FB4 7F052484 8D210000 */ lw $at, ($t1) -/* 086FB8 7F052488 00003025 */ move $a2, $zero -/* 086FBC 7F05248C AD010000 */ sw $at, ($t0) -/* 086FC0 7F052490 906C0001 */ lbu $t4, 1($v1) -/* 086FC4 7F052494 8CE4001C */ lw $a0, 0x1c($a3) -/* 086FC8 7F052498 358D0002 */ ori $t5, $t4, 2 -/* 086FCC 7F05249C A06D0001 */ sb $t5, 1($v1) -/* 086FD0 7F0524A0 0FC1B198 */ jal sub_GAME_7F06C660 -/* 086FD4 7F0524A4 8E25001C */ lw $a1, 0x1c($s1) -/* 086FD8 7F0524A8 8FAE00BC */ lw $t6, 0xbc($sp) -/* 086FDC 7F0524AC 24010001 */ li $at, 1 -/* 086FE0 7F0524B0 AFA20068 */ sw $v0, 0x68($sp) -/* 086FE4 7F0524B4 15C10009 */ bne $t6, $at, .L7F0524DC -/* 086FE8 7F0524B8 27A50020 */ addiu $a1, $sp, 0x20 -/* 086FEC 7F0524BC 3C018005 */ lui $at, %hi(D_800532F0) -/* 086FF0 7F0524C0 0FC161A2 */ jal sub_GAME_7F058688 -/* 086FF4 7F0524C4 C42C32F0 */ lwc1 $f12, %lo(D_800532F0)($at) -/* 086FF8 7F0524C8 8FA40068 */ lw $a0, 0x68($sp) -/* 086FFC 7F0524CC 0FC1601A */ jal sub_GAME_7F058068 -/* 087000 7F0524D0 27A50020 */ addiu $a1, $sp, 0x20 -/* 087004 7F0524D4 27AF0020 */ addiu $t7, $sp, 0x20 -/* 087008 7F0524D8 AFAF0068 */ sw $t7, 0x68($sp) -.L7F0524DC: -/* 08700C 7F0524DC 8E380008 */ lw $t8, 8($s1) -/* 087010 7F0524E0 8704000E */ lh $a0, 0xe($t8) -/* 087014 7F0524E4 0004C980 */ sll $t9, $a0, 6 -/* 087018 7F0524E8 0FC2F5C5 */ jal sub_GAME_7F0BD714 -/* 08701C 7F0524EC 03202025 */ move $a0, $t9 -/* 087020 7F0524F0 AFA20078 */ sw $v0, 0x78($sp) -/* 087024 7F0524F4 27A40068 */ addiu $a0, $sp, 0x68 -/* 087028 7F0524F8 0FC1BC92 */ jal instcalcmatrices -/* 08702C 7F0524FC 02202825 */ move $a1, $s1 -/* 087030 7F052500 8FA200C0 */ lw $v0, 0xc0($sp) -/* 087034 7F052504 5040000F */ beql $v0, $zero, .L7F052544 -/* 087038 7F052508 8FBF001C */ lw $ra, 0x1c($sp) -/* 08703C 7F05250C 8E0A0064 */ lw $t2, 0x64($s0) -/* 087040 7F052510 02202825 */ move $a1, $s1 -/* 087044 7F052514 314B0080 */ andi $t3, $t2, 0x80 -/* 087048 7F052518 5560000A */ bnezl $t3, .L7F052544 -/* 08704C 7F05251C 8FBF001C */ lw $ra, 0x1c($sp) -/* 087050 7F052520 0FC1AC48 */ jal sub_GAME_7F06B120 -/* 087054 7F052524 8C440000 */ lw $a0, ($v0) -/* 087058 7F052528 8FA900C0 */ lw $t1, 0xc0($sp) -/* 08705C 7F05252C 10000004 */ b .L7F052540 -/* 087060 7F052530 AD220000 */ sw $v0, ($t1) -.L7F052534: -/* 087064 7F052534 90480001 */ lbu $t0, 1($v0) -.L7F052538: -/* 087068 7F052538 310CFFFD */ andi $t4, $t0, 0xfffd -/* 08706C 7F05253C A04C0001 */ sb $t4, 1($v0) -.L7F052540: -/* 087070 7F052540 8FBF001C */ lw $ra, 0x1c($sp) -.L7F052544: -/* 087074 7F052544 8FB00014 */ lw $s0, 0x14($sp) -/* 087078 7F052548 8FB10018 */ lw $s1, 0x18($sp) -/* 08707C 7F05254C 03E00008 */ jr $ra -/* 087080 7F052550 27BD00B8 */ addiu $sp, $sp, 0xb8 -) -#endif - - - - - -#ifdef NONMATCHING -void redirect_object_collectability_routines(void) { - -} -#else -GLOBAL_ASM( -.text -glabel redirect_object_collectability_routines -/* 087084 7F052554 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 087088 7F052558 AFBF0014 */ sw $ra, 0x14($sp) -/* 08708C 7F05255C 0FC141B7 */ jal object_collectability_routines -/* 087090 7F052560 00000000 */ nop -/* 087094 7F052564 8FBF0014 */ lw $ra, 0x14($sp) -/* 087098 7F052568 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08709C 7F05256C 03E00008 */ jr $ra -/* 0870A0 7F052570 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F052574(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F052574 -/* 0870A4 7F052574 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0870A8 7F052578 AFBF0014 */ sw $ra, 0x14($sp) -/* 0870AC 7F05257C AFA50024 */ sw $a1, 0x24($sp) -/* 0870B0 7F052580 8C820004 */ lw $v0, 4($a0) -/* 0870B4 7F052584 8C460014 */ lw $a2, 0x14($v0) -/* 0870B8 7F052588 50C0001B */ beql $a2, $zero, .L7F0525F8 -/* 0870BC 7F05258C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0870C0 7F052590 8CC20008 */ lw $v0, 8($a2) -/* 0870C4 7F052594 3C0E8004 */ lui $t6, %hi(prop_weapon_related) -/* 0870C8 7F052598 25CEC4FC */ addiu $t6, %lo(prop_weapon_related) # addiu $t6, $t6, -0x3b04 -/* 0870CC 7F05259C 8C4F0004 */ lw $t7, 4($v0) -/* 0870D0 7F0525A0 55CF0015 */ bnel $t6, $t7, .L7F0525F8 -/* 0870D4 7F0525A4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0870D8 7F0525A8 8C430008 */ lw $v1, 8($v0) -/* 0870DC 7F0525AC 00C02025 */ move $a0, $a2 -/* 0870E0 7F0525B0 8C650000 */ lw $a1, ($v1) -/* 0870E4 7F0525B4 50A00009 */ beql $a1, $zero, .L7F0525DC -/* 0870E8 7F0525B8 8C650008 */ lw $a1, 8($v1) -/* 0870EC 7F0525BC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 0870F0 7F0525C0 AFA60018 */ sw $a2, 0x18($sp) -/* 0870F4 7F0525C4 8FB80024 */ lw $t8, 0x24($sp) -/* 0870F8 7F0525C8 8FA60018 */ lw $a2, 0x18($sp) -/* 0870FC 7F0525CC A4580000 */ sh $t8, ($v0) -/* 087100 7F0525D0 8CD90008 */ lw $t9, 8($a2) -/* 087104 7F0525D4 8F230008 */ lw $v1, 8($t9) -/* 087108 7F0525D8 8C650008 */ lw $a1, 8($v1) -.L7F0525DC: -/* 08710C 7F0525DC 50A00006 */ beql $a1, $zero, .L7F0525F8 -/* 087110 7F0525E0 8FBF0014 */ lw $ra, 0x14($sp) -/* 087114 7F0525E4 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 087118 7F0525E8 00C02025 */ move $a0, $a2 -/* 08711C 7F0525EC 8FA80024 */ lw $t0, 0x24($sp) -/* 087120 7F0525F0 AC480000 */ sw $t0, ($v0) -/* 087124 7F0525F4 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0525F8: -/* 087128 7F0525F8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 08712C 7F0525FC 03E00008 */ jr $ra -/* 087130 7F052600 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F052604(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*HACK*/ -/*D:800532F4*/ -glabel jpt_hat_worn -.word model_hat_fur -.word model_hat_fur -.word model_hat_fur -.word model_hat_greencap -.word model_hat_greencap -.text -glabel sub_GAME_7F052604 -/* 087134 7F052604 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 087138 7F052608 AFBF0014 */ sw $ra, 0x14($sp) -/* 08713C 7F05260C 8C820004 */ lw $v0, 4($a0) -/* 087140 7F052610 8C460014 */ lw $a2, 0x14($v0) -/* 087144 7F052614 50C00017 */ beql $a2, $zero, .L7F052674 -/* 087148 7F052618 00001025 */ move $v0, $zero -/* 08714C 7F05261C 8CC20008 */ lw $v0, 8($a2) -/* 087150 7F052620 3C0E8004 */ lui $t6, %hi(prop_weapon_related) -/* 087154 7F052624 25CEC4FC */ addiu $t6, %lo(prop_weapon_related) # addiu $t6, $t6, -0x3b04 -/* 087158 7F052628 8C4F0004 */ lw $t7, 4($v0) -/* 08715C 7F05262C 55CF0011 */ bnel $t6, $t7, .L7F052674 -/* 087160 7F052630 00001025 */ move $v0, $zero -/* 087164 7F052634 8C430008 */ lw $v1, 8($v0) -/* 087168 7F052638 8C650000 */ lw $a1, ($v1) -/* 08716C 7F05263C 50A00006 */ beql $a1, $zero, .L7F052658 -/* 087170 7F052640 8C650008 */ lw $a1, 8($v1) -/* 087174 7F052644 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 087178 7F052648 00C02025 */ move $a0, $a2 -/* 08717C 7F05264C 10000009 */ b .L7F052674 -/* 087180 7F052650 84420000 */ lh $v0, ($v0) -/* 087184 7F052654 8C650008 */ lw $a1, 8($v1) -.L7F052658: -/* 087188 7F052658 50A00006 */ beql $a1, $zero, .L7F052674 -/* 08718C 7F05265C 00001025 */ move $v0, $zero -/* 087190 7F052660 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 087194 7F052664 00C02025 */ move $a0, $a2 -/* 087198 7F052668 10000002 */ b .L7F052674 -/* 08719C 7F05266C 8C420000 */ lw $v0, ($v0) -/* 0871A0 7F052670 00001025 */ move $v0, $zero -.L7F052674: -/* 0871A4 7F052674 8FBF0014 */ lw $ra, 0x14($sp) -/* 0871A8 7F052678 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0871AC 7F05267C 03E00008 */ jr $ra -/* 0871B0 7F052680 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void get_hat_model(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:800532F4*/ -/*glabel jpt_hat_worn*/ -/*.word model_hat_fur*/ -/*.word model_hat_fur*/ -/*.word model_hat_fur*/ -/*.word model_hat_greencap*/ -/*.word model_hat_greencap*/ -.word model_hat_combat_helmet -.word model_hat_combat_helmet -.word model_hat_moonraker_headgear -.word model_hat_beret -.word model_hat_beret -.word model_hat_beret -.word model_hat_officerhat - -.text -glabel get_hat_model -/* 0871B4 7F052684 8C820004 */ lw $v0, 4($a0) -/* 0871B8 7F052688 844E0004 */ lh $t6, 4($v0) -/* 0871BC 7F05268C 2402FFFF */ li $v0, -1 -/* 0871C0 7F052690 25CFFF2C */ addiu $t7, $t6, -0xd4 -/* 0871C4 7F052694 2DE1000C */ sltiu $at, $t7, 0xc -/* 0871C8 7F052698 10200012 */ beqz $at, .L7F0526E4 -/* 0871CC 7F05269C 000F7880 */ sll $t7, $t7, 2 -/* 0871D0 7F0526A0 3C018005 */ lui $at, %hi(jpt_hat_worn) -/* 0871D4 7F0526A4 002F0821 */ addu $at, $at, $t7 -/* 0871D8 7F0526A8 8C2F32F4 */ lw $t7, %lo(jpt_hat_worn)($at) -/* 0871DC 7F0526AC 01E00008 */ jr $t7 -/* 0871E0 7F0526B0 00000000 */ nop -model_hat_fur: -/* 0871E4 7F0526B4 03E00008 */ jr $ra -/* 0871E8 7F0526B8 24020004 */ li $v0, 4 - -model_hat_greencap: -/* 0871EC 7F0526BC 03E00008 */ jr $ra -/* 0871F0 7F0526C0 24020001 */ li $v0, 1 - -model_hat_combat_helmet: -/* 0871F4 7F0526C4 03E00008 */ jr $ra -/* 0871F8 7F0526C8 24020003 */ li $v0, 3 - -model_hat_moonraker_headgear: -/* 0871FC 7F0526CC 03E00008 */ jr $ra -/* 087200 7F0526D0 24020005 */ li $v0, 5 - -model_hat_beret: -/* 087204 7F0526D4 03E00008 */ jr $ra -/* 087208 7F0526D8 00001025 */ move $v0, $zero - -model_hat_officerhat: -/* 08720C 7F0526DC 03E00008 */ jr $ra -/* 087210 7F0526E0 24020002 */ li $v0, 2 - -model_hat_default: -.L7F0526E4: -/* 087214 7F0526E4 03E00008 */ jr $ra -/* 087218 7F0526E8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0526EC(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_80053324 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053328 -.word 0x40c90fdb /*6.2831855*/ -glabel D_8005332C -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053330 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053334 -.word 0x461c4000 /*10000.0*/ -glabel D_80053338 -.word 0x3ecccccd /*0.40000001*/ -glabel D_8005333C -.word 0x3ecccccd /*0.40000001*/ -glabel D_80053340 -.word 0x461c4000 /*10000.0*/ -glabel D_80053344 -.word 0x46b1de00 /*22767.0*/ -glabel D_80053348 -.word 0x459c4000 /*5000.0*/ -.text -glabel sub_GAME_7F0526EC -/* 08721C 7F0526EC 27BDFF60 */ addiu $sp, $sp, -0xa0 -/* 087220 7F0526F0 AFBF001C */ sw $ra, 0x1c($sp) -/* 087224 7F0526F4 AFB00018 */ sw $s0, 0x18($sp) -/* 087228 7F0526F8 AFA500A4 */ sw $a1, 0xa4($sp) -/* 08722C 7F0526FC 9482009A */ lhu $v0, 0x9a($a0) -/* 087230 7F052700 24010005 */ li $at, 5 -/* 087234 7F052704 00808025 */ move $s0, $a0 -/* 087238 7F052708 10410003 */ beq $v0, $at, .L7F052718 -/* 08723C 7F05270C 24010009 */ li $at, 9 -/* 087240 7F052710 544100CA */ bnel $v0, $at, .L7F052A3C -/* 087244 7F052714 24010006 */ li $at, 6 -.L7F052718: -/* 087248 7F052718 86190006 */ lh $t9, 6($s0) -/* 08724C 7F05271C 3C098007 */ lui $t1, %hi(ptr_2xxxpresets) -/* 087250 7F052720 8D295D1C */ lw $t1, %lo(ptr_2xxxpresets)($t1) -/* 087254 7F052724 00194100 */ sll $t0, $t9, 4 -/* 087258 7F052728 01194021 */ addu $t0, $t0, $t9 -/* 08725C 7F05272C 00084080 */ sll $t0, $t0, 2 -/* 087260 7F052730 01091021 */ addu $v0, $t0, $t1 -/* 087264 7F052734 C4460010 */ lwc1 $f6, 0x10($v0) -/* 087268 7F052738 C4480020 */ lwc1 $f8, 0x20($v0) -/* 08726C 7F05273C C452001C */ lwc1 $f18, 0x1c($v0) -/* 087270 7F052740 C44A0014 */ lwc1 $f10, 0x14($v0) -/* 087274 7F052744 46083102 */ mul.s $f4, $f6, $f8 -/* 087278 7F052748 24010009 */ li $at, 9 -/* 08727C 7F05274C 460A9402 */ mul.s $f16, $f18, $f10 -/* 087280 7F052750 46102181 */ sub.s $f6, $f4, $f16 -/* 087284 7F052754 E7A60038 */ swc1 $f6, 0x38($sp) -/* 087288 7F052758 C4480014 */ lwc1 $f8, 0x14($v0) -/* 08728C 7F05275C C4520018 */ lwc1 $f18, 0x18($v0) -/* 087290 7F052760 C450000C */ lwc1 $f16, 0xc($v0) -/* 087294 7F052764 C4440020 */ lwc1 $f4, 0x20($v0) -/* 087298 7F052768 46124282 */ mul.s $f10, $f8, $f18 -/* 08729C 7F05276C 00000000 */ nop -/* 0872A0 7F052770 46102202 */ mul.s $f8, $f4, $f16 -/* 0872A4 7F052774 46085481 */ sub.s $f18, $f10, $f8 -/* 0872A8 7F052778 E7B2003C */ swc1 $f18, 0x3c($sp) -/* 0872AC 7F05277C C444000C */ lwc1 $f4, 0xc($v0) -/* 0872B0 7F052780 C450001C */ lwc1 $f16, 0x1c($v0) -/* 0872B4 7F052784 C4480018 */ lwc1 $f8, 0x18($v0) -/* 0872B8 7F052788 46102282 */ mul.s $f10, $f4, $f16 -/* 0872BC 7F05278C C4440010 */ lwc1 $f4, 0x10($v0) -/* 0872C0 7F052790 46044402 */ mul.s $f16, $f8, $f4 -/* 0872C4 7F052794 46105201 */ sub.s $f8, $f10, $f16 -/* 0872C8 7F052798 E7A80040 */ swc1 $f8, 0x40($sp) -/* 0872CC 7F05279C C44A0034 */ lwc1 $f10, 0x34($v0) -/* 0872D0 7F0527A0 C444000C */ lwc1 $f4, 0xc($v0) -/* 0872D4 7F0527A4 460A2402 */ mul.s $f16, $f4, $f10 -/* 0872D8 7F0527A8 C4440000 */ lwc1 $f4, ($v0) -/* 0872DC 7F0527AC 46048280 */ add.s $f10, $f16, $f4 -/* 0872E0 7F0527B0 E7AA0054 */ swc1 $f10, 0x54($sp) -/* 0872E4 7F0527B4 C4440034 */ lwc1 $f4, 0x34($v0) -/* 0872E8 7F0527B8 C4500010 */ lwc1 $f16, 0x10($v0) -/* 0872EC 7F0527BC 46048402 */ mul.s $f16, $f16, $f4 -/* 0872F0 7F0527C0 C4440004 */ lwc1 $f4, 4($v0) -/* 0872F4 7F0527C4 46048400 */ add.s $f16, $f16, $f4 -/* 0872F8 7F0527C8 E7B00058 */ swc1 $f16, 0x58($sp) -/* 0872FC 7F0527CC C4440014 */ lwc1 $f4, 0x14($v0) -/* 087300 7F0527D0 E7A60020 */ swc1 $f6, 0x20($sp) -/* 087304 7F0527D4 C4460034 */ lwc1 $f6, 0x34($v0) -/* 087308 7F0527D8 46062102 */ mul.s $f4, $f4, $f6 -/* 08730C 7F0527DC C4460008 */ lwc1 $f6, 8($v0) -/* 087310 7F0527E0 46062100 */ add.s $f4, $f4, $f6 -/* 087314 7F0527E4 C7A60020 */ lwc1 $f6, 0x20($sp) -/* 087318 7F0527E8 E7A4005C */ swc1 $f4, 0x5c($sp) -/* 08731C 7F0527EC 960A009A */ lhu $t2, 0x9a($s0) -/* 087320 7F0527F0 15410010 */ bne $t2, $at, .L7F052834 -/* 087324 7F0527F4 00000000 */ nop -/* 087328 7F0527F8 E7B20020 */ swc1 $f18, 0x20($sp) -/* 08732C 7F0527FC C4520030 */ lwc1 $f18, 0x30($v0) -/* 087330 7F052800 46123182 */ mul.s $f6, $f6, $f18 -/* 087334 7F052804 46065480 */ add.s $f18, $f10, $f6 -/* 087338 7F052808 C7AA0020 */ lwc1 $f10, 0x20($sp) -/* 08733C 7F05280C E7B20054 */ swc1 $f18, 0x54($sp) -/* 087340 7F052810 C4460030 */ lwc1 $f6, 0x30($v0) -/* 087344 7F052814 46065482 */ mul.s $f18, $f10, $f6 -/* 087348 7F052818 46128280 */ add.s $f10, $f16, $f18 -/* 08734C 7F05281C E7AA0058 */ swc1 $f10, 0x58($sp) -/* 087350 7F052820 C4460030 */ lwc1 $f6, 0x30($v0) -/* 087354 7F052824 46064402 */ mul.s $f16, $f8, $f6 -/* 087358 7F052828 46102480 */ add.s $f18, $f4, $f16 -/* 08735C 7F05282C 1000002A */ b .L7F0528D8 -/* 087360 7F052830 E7B2005C */ swc1 $f18, 0x5c($sp) -.L7F052834: -/* 087364 7F052834 8E0B0008 */ lw $t3, 8($s0) -/* 087368 7F052838 C7AA0038 */ lwc1 $f10, 0x38($sp) -/* 08736C 7F05283C C7A60038 */ lwc1 $f6, 0x38($sp) -/* 087370 7F052840 000B6080 */ sll $t4, $t3, 2 -/* 087374 7F052844 05830014 */ bgezl $t4, .L7F052898 -/* 087378 7F052848 C450002C */ lwc1 $f16, 0x2c($v0) -/* 08737C 7F05284C C4480030 */ lwc1 $f8, 0x30($v0) -/* 087380 7F052850 C7A40054 */ lwc1 $f4, 0x54($sp) -/* 087384 7F052854 C7B2003C */ lwc1 $f18, 0x3c($sp) -/* 087388 7F052858 46085182 */ mul.s $f6, $f10, $f8 -/* 08738C 7F05285C 46062400 */ add.s $f16, $f4, $f6 -/* 087390 7F052860 C7A40058 */ lwc1 $f4, 0x58($sp) -/* 087394 7F052864 E7B00054 */ swc1 $f16, 0x54($sp) -/* 087398 7F052868 C44A0030 */ lwc1 $f10, 0x30($v0) -/* 08739C 7F05286C C7B00040 */ lwc1 $f16, 0x40($sp) -/* 0873A0 7F052870 460A9202 */ mul.s $f8, $f18, $f10 -/* 0873A4 7F052874 46082180 */ add.s $f6, $f4, $f8 -/* 0873A8 7F052878 C7A4005C */ lwc1 $f4, 0x5c($sp) -/* 0873AC 7F05287C E7A60058 */ swc1 $f6, 0x58($sp) -/* 0873B0 7F052880 C4520030 */ lwc1 $f18, 0x30($v0) -/* 0873B4 7F052884 46128282 */ mul.s $f10, $f16, $f18 -/* 0873B8 7F052888 460A2200 */ add.s $f8, $f4, $f10 -/* 0873BC 7F05288C 10000012 */ b .L7F0528D8 -/* 0873C0 7F052890 E7A8005C */ swc1 $f8, 0x5c($sp) -/* 0873C4 7F052894 C450002C */ lwc1 $f16, 0x2c($v0) -.L7F052898: -/* 0873C8 7F052898 C7A40054 */ lwc1 $f4, 0x54($sp) -/* 0873CC 7F05289C C7A8003C */ lwc1 $f8, 0x3c($sp) -/* 0873D0 7F0528A0 46103482 */ mul.s $f18, $f6, $f16 -/* 0873D4 7F0528A4 46122280 */ add.s $f10, $f4, $f18 -/* 0873D8 7F0528A8 C7A40058 */ lwc1 $f4, 0x58($sp) -/* 0873DC 7F0528AC E7AA0054 */ swc1 $f10, 0x54($sp) -/* 0873E0 7F0528B0 C446002C */ lwc1 $f6, 0x2c($v0) -/* 0873E4 7F0528B4 C7AA0040 */ lwc1 $f10, 0x40($sp) -/* 0873E8 7F0528B8 46064402 */ mul.s $f16, $f8, $f6 -/* 0873EC 7F0528BC 46102480 */ add.s $f18, $f4, $f16 -/* 0873F0 7F0528C0 C7A4005C */ lwc1 $f4, 0x5c($sp) -/* 0873F4 7F0528C4 E7B20058 */ swc1 $f18, 0x58($sp) -/* 0873F8 7F0528C8 C448002C */ lwc1 $f8, 0x2c($v0) -/* 0873FC 7F0528CC 46085182 */ mul.s $f6, $f10, $f8 -/* 087400 7F0528D0 46062400 */ add.s $f16, $f4, $f6 -/* 087404 7F0528D4 E7B0005C */ swc1 $f16, 0x5c($sp) -.L7F0528D8: -/* 087408 7F0528D8 C6120058 */ lwc1 $f18, 0x58($s0) -/* 08740C 7F0528DC C7AA0054 */ lwc1 $f10, 0x54($sp) -/* 087410 7F0528E0 C7A60058 */ lwc1 $f6, 0x58($sp) -/* 087414 7F0528E4 26040018 */ addiu $a0, $s0, 0x18 -/* 087418 7F0528E8 460A9201 */ sub.s $f8, $f18, $f10 -/* 08741C 7F0528EC C7AA005C */ lwc1 $f10, 0x5c($sp) -/* 087420 7F0528F0 8FA500A4 */ lw $a1, 0xa4($sp) -/* 087424 7F0528F4 E7A80048 */ swc1 $f8, 0x48($sp) -/* 087428 7F0528F8 C604005C */ lwc1 $f4, 0x5c($s0) -/* 08742C 7F0528FC 46062401 */ sub.s $f16, $f4, $f6 -/* 087430 7F052900 E7B0004C */ swc1 $f16, 0x4c($sp) -/* 087434 7F052904 C6120060 */ lwc1 $f18, 0x60($s0) -/* 087438 7F052908 460A9201 */ sub.s $f8, $f18, $f10 -/* 08743C 7F05290C 0FC16008 */ jal sub_GAME_7F058020 -/* 087440 7F052910 E7A80050 */ swc1 $f8, 0x50($sp) -/* 087444 7F052914 27A40048 */ addiu $a0, $sp, 0x48 -/* 087448 7F052918 0FC16259 */ jal init_something_copy_posdata_to_it -/* 08744C 7F05291C 27A50060 */ addiu $a1, $sp, 0x60 -/* 087450 7F052920 27A40060 */ addiu $a0, $sp, 0x60 -/* 087454 7F052924 0FC1601A */ jal sub_GAME_7F058068 -/* 087458 7F052928 8FA500A4 */ lw $a1, 0xa4($sp) -/* 08745C 7F05292C 960D009A */ lhu $t5, 0x9a($s0) -/* 087460 7F052930 24010009 */ li $at, 9 -/* 087464 7F052934 55A1001D */ bnel $t5, $at, .L7F0529AC -/* 087468 7F052938 8E180008 */ lw $t8, 8($s0) -/* 08746C 7F05293C 8E0E0008 */ lw $t6, 8($s0) -/* 087470 7F052940 3C018005 */ lui $at, %hi(D_80053328) -/* 087474 7F052944 000E7880 */ sll $t7, $t6, 2 -/* 087478 7F052948 05E1000D */ bgez $t7, .L7F052980 -/* 08747C 7F05294C 00000000 */ nop -/* 087480 7F052950 3C018005 */ lui $at, %hi(D_80053324) -/* 087484 7F052954 C4203324 */ lwc1 $f0, %lo(D_80053324)($at) -/* 087488 7F052958 C60400B4 */ lwc1 $f4, 0xb4($s0) -/* 08748C 7F05295C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 087490 7F052960 44818000 */ mtc1 $at, $f16 -/* 087494 7F052964 46002182 */ mul.s $f6, $f4, $f0 -/* 087498 7F052968 27A50060 */ addiu $a1, $sp, 0x60 -/* 08749C 7F05296C 46103483 */ div.s $f18, $f6, $f16 -/* 0874A0 7F052970 0FC161A2 */ jal sub_GAME_7F058688 -/* 0874A4 7F052974 46120301 */ sub.s $f12, $f0, $f18 -/* 0874A8 7F052978 10000025 */ b .L7F052A10 -/* 0874AC 7F05297C 27A40060 */ addiu $a0, $sp, 0x60 -.L7F052980: -/* 0874B0 7F052980 C4203328 */ lwc1 $f0, %lo(D_80053328)($at) -/* 0874B4 7F052984 C60A00B4 */ lwc1 $f10, 0xb4($s0) -/* 0874B8 7F052988 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 0874BC 7F05298C 44812000 */ mtc1 $at, $f4 -/* 0874C0 7F052990 46005202 */ mul.s $f8, $f10, $f0 -/* 0874C4 7F052994 27A50060 */ addiu $a1, $sp, 0x60 -/* 0874C8 7F052998 0FC161A2 */ jal sub_GAME_7F058688 -/* 0874CC 7F05299C 46044303 */ div.s $f12, $f8, $f4 -/* 0874D0 7F0529A0 1000001B */ b .L7F052A10 -/* 0874D4 7F0529A4 27A40060 */ addiu $a0, $sp, 0x60 -/* 0874D8 7F0529A8 8E180008 */ lw $t8, 8($s0) -.L7F0529AC: -/* 0874DC 7F0529AC 3C018005 */ lui $at, %hi(D_80053330) -/* 0874E0 7F0529B0 0018C880 */ sll $t9, $t8, 2 -/* 0874E4 7F0529B4 0721000D */ bgez $t9, .L7F0529EC -/* 0874E8 7F0529B8 00000000 */ nop -/* 0874EC 7F0529BC 3C018005 */ lui $at, %hi(D_8005332C) -/* 0874F0 7F0529C0 C420332C */ lwc1 $f0, %lo(D_8005332C)($at) -/* 0874F4 7F0529C4 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 0874F8 7F0529C8 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 0874FC 7F0529CC 44819000 */ mtc1 $at, $f18 -/* 087500 7F0529D0 46003402 */ mul.s $f16, $f6, $f0 -/* 087504 7F0529D4 27A50060 */ addiu $a1, $sp, 0x60 -/* 087508 7F0529D8 46128283 */ div.s $f10, $f16, $f18 -/* 08750C 7F0529DC 0FC1617F */ jal sub_GAME_7F0585FC -/* 087510 7F0529E0 460A0301 */ sub.s $f12, $f0, $f10 -/* 087514 7F0529E4 1000000A */ b .L7F052A10 -/* 087518 7F0529E8 27A40060 */ addiu $a0, $sp, 0x60 -.L7F0529EC: -/* 08751C 7F0529EC C4203330 */ lwc1 $f0, %lo(D_80053330)($at) -/* 087520 7F0529F0 C60800B4 */ lwc1 $f8, 0xb4($s0) -/* 087524 7F0529F4 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 087528 7F0529F8 44813000 */ mtc1 $at, $f6 -/* 08752C 7F0529FC 46004102 */ mul.s $f4, $f8, $f0 -/* 087530 7F052A00 27A50060 */ addiu $a1, $sp, 0x60 -/* 087534 7F052A04 0FC1617F */ jal sub_GAME_7F0585FC -/* 087538 7F052A08 46062303 */ div.s $f12, $f4, $f6 -/* 08753C 7F052A0C 27A40060 */ addiu $a0, $sp, 0x60 -.L7F052A10: -/* 087540 7F052A10 0FC1601A */ jal sub_GAME_7F058068 -/* 087544 7F052A14 8FA500A4 */ lw $a1, 0xa4($sp) -/* 087548 7F052A18 27A40054 */ addiu $a0, $sp, 0x54 -/* 08754C 7F052A1C 0FC16259 */ jal init_something_copy_posdata_to_it -/* 087550 7F052A20 27A50060 */ addiu $a1, $sp, 0x60 -/* 087554 7F052A24 27A40060 */ addiu $a0, $sp, 0x60 -/* 087558 7F052A28 0FC1601A */ jal sub_GAME_7F058068 -/* 08755C 7F052A2C 8FA500A4 */ lw $a1, 0xa4($sp) -/* 087560 7F052A30 10000027 */ b .L7F052AD0 -/* 087564 7F052A34 96080098 */ lhu $t0, 0x98($s0) -/* 087568 7F052A38 24010006 */ li $at, 6 -.L7F052A3C: -/* 08756C 7F052A3C 10410004 */ beq $v0, $at, .L7F052A50 -/* 087570 7F052A40 26040018 */ addiu $a0, $s0, 0x18 -/* 087574 7F052A44 24010007 */ li $at, 7 -/* 087578 7F052A48 54410009 */ bnel $v0, $at, .L7F052A70 -/* 08757C 7F052A4C C61000A8 */ lwc1 $f16, 0xa8($s0) -.L7F052A50: -/* 087580 7F052A50 0FC16008 */ jal sub_GAME_7F058020 -/* 087584 7F052A54 8FA500A4 */ lw $a1, 0xa4($sp) -/* 087588 7F052A58 26040058 */ addiu $a0, $s0, 0x58 -/* 08758C 7F052A5C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 087590 7F052A60 8FA500A4 */ lw $a1, 0xa4($sp) -/* 087594 7F052A64 1000001A */ b .L7F052AD0 -/* 087598 7F052A68 96080098 */ lhu $t0, 0x98($s0) -/* 08759C 7F052A6C C61000A8 */ lwc1 $f16, 0xa8($s0) -.L7F052A70: -/* 0875A0 7F052A70 C61200B4 */ lwc1 $f18, 0xb4($s0) -/* 0875A4 7F052A74 C6080058 */ lwc1 $f8, 0x58($s0) -/* 0875A8 7F052A78 26040018 */ addiu $a0, $s0, 0x18 -/* 0875AC 7F052A7C 46128282 */ mul.s $f10, $f16, $f18 -/* 0875B0 7F052A80 8FA500A4 */ lw $a1, 0xa4($sp) -/* 0875B4 7F052A84 46085100 */ add.s $f4, $f10, $f8 -/* 0875B8 7F052A88 E7A4002C */ swc1 $f4, 0x2c($sp) -/* 0875BC 7F052A8C C61000B4 */ lwc1 $f16, 0xb4($s0) -/* 0875C0 7F052A90 C60600AC */ lwc1 $f6, 0xac($s0) -/* 0875C4 7F052A94 C60A005C */ lwc1 $f10, 0x5c($s0) -/* 0875C8 7F052A98 46103482 */ mul.s $f18, $f6, $f16 -/* 0875CC 7F052A9C 460A9200 */ add.s $f8, $f18, $f10 -/* 0875D0 7F052AA0 E7A80030 */ swc1 $f8, 0x30($sp) -/* 0875D4 7F052AA4 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 0875D8 7F052AA8 C60400B0 */ lwc1 $f4, 0xb0($s0) -/* 0875DC 7F052AAC C6120060 */ lwc1 $f18, 0x60($s0) -/* 0875E0 7F052AB0 46062402 */ mul.s $f16, $f4, $f6 -/* 0875E4 7F052AB4 46128280 */ add.s $f10, $f16, $f18 -/* 0875E8 7F052AB8 0FC16008 */ jal sub_GAME_7F058020 -/* 0875EC 7F052ABC E7AA0034 */ swc1 $f10, 0x34($sp) -/* 0875F0 7F052AC0 27A4002C */ addiu $a0, $sp, 0x2c -/* 0875F4 7F052AC4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 -/* 0875F8 7F052AC8 8FA500A4 */ lw $a1, 0xa4($sp) -/* 0875FC 7F052ACC 96080098 */ lhu $t0, 0x98($s0) -.L7F052AD0: -/* 087600 7F052AD0 3C01BF80 */ li $at, 0xBF800000 # -1.000000 -/* 087604 7F052AD4 31090008 */ andi $t1, $t0, 8 -/* 087608 7F052AD8 51200005 */ beql $t1, $zero, .L7F052AF0 -/* 08760C 7F052ADC 8FBF001C */ lw $ra, 0x1c($sp) -/* 087610 7F052AE0 44816000 */ mtc1 $at, $f12 -/* 087614 7F052AE4 0FC16293 */ jal sub_GAME_7F058A4C -/* 087618 7F052AE8 8FA500A4 */ lw $a1, 0xa4($sp) -/* 08761C 7F052AEC 8FBF001C */ lw $ra, 0x1c($sp) -.L7F052AF0: -/* 087620 7F052AF0 8FB00018 */ lw $s0, 0x18($sp) -/* 087624 7F052AF4 27BD00A0 */ addiu $sp, $sp, 0xa0 -/* 087628 7F052AF8 03E00008 */ jr $ra -/* 08762C 7F052AFC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F052B00(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F052B00 -/* 087630 7F052B00 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 087634 7F052B04 AFBF001C */ sw $ra, 0x1c($sp) -/* 087638 7F052B08 AFB00018 */ sw $s0, 0x18($sp) -/* 08763C 7F052B0C 8C8E0014 */ lw $t6, 0x14($a0) -/* 087640 7F052B10 248300D0 */ addiu $v1, $a0, 0xd0 -/* 087644 7F052B14 00808025 */ move $s0, $a0 -/* 087648 7F052B18 8DCF0008 */ lw $t7, 8($t6) -/* 08764C 7F052B1C 27A5002C */ addiu $a1, $sp, 0x2c -/* 087650 7F052B20 8DF80000 */ lw $t8, ($t7) -/* 087654 7F052B24 8F190014 */ lw $t9, 0x14($t8) -/* 087658 7F052B28 8F220004 */ lw $v0, 4($t9) -/* 08765C 7F052B2C 8C410000 */ lw $at, ($v0) -/* 087660 7F052B30 AC610000 */ sw $at, ($v1) -/* 087664 7F052B34 8C4A0004 */ lw $t2, 4($v0) -/* 087668 7F052B38 AC6A0004 */ sw $t2, 4($v1) -/* 08766C 7F052B3C 8C410008 */ lw $at, 8($v0) -/* 087670 7F052B40 AC610008 */ sw $at, 8($v1) -/* 087674 7F052B44 8C4A000C */ lw $t2, 0xc($v0) -/* 087678 7F052B48 AC6A000C */ sw $t2, 0xc($v1) -/* 08767C 7F052B4C 8C410010 */ lw $at, 0x10($v0) -/* 087680 7F052B50 AC610010 */ sw $at, 0x10($v1) -/* 087684 7F052B54 8C4A0014 */ lw $t2, 0x14($v0) -/* 087688 7F052B58 AC6A0014 */ sw $t2, 0x14($v1) -/* 08768C 7F052B5C 8C410018 */ lw $at, 0x18($v0) -/* 087690 7F052B60 AC610018 */ sw $at, 0x18($v1) -/* 087694 7F052B64 948B0098 */ lhu $t3, 0x98($a0) -/* 087698 7F052B68 316C0004 */ andi $t4, $t3, 4 -/* 08769C 7F052B6C 51800015 */ beql $t4, $zero, .L7F052BC4 -/* 0876A0 7F052B70 C61000B4 */ lwc1 $f16, 0xb4($s0) -/* 0876A4 7F052B74 948D009A */ lhu $t5, 0x9a($a0) -/* 0876A8 7F052B78 24010004 */ li $at, 4 -/* 0876AC 7F052B7C 55A1000A */ bnel $t5, $at, .L7F052BA8 -/* 0876B0 7F052B80 C4400004 */ lwc1 $f0, 4($v0) -/* 0876B4 7F052B84 C4400010 */ lwc1 $f0, 0x10($v0) -/* 0876B8 7F052B88 C444000C */ lwc1 $f4, 0xc($v0) -/* 0876BC 7F052B8C C48800B4 */ lwc1 $f8, 0xb4($a0) -/* 0876C0 7F052B90 46002181 */ sub.s $f6, $f4, $f0 -/* 0876C4 7F052B94 46083282 */ mul.s $f10, $f6, $f8 -/* 0876C8 7F052B98 460A0400 */ add.s $f16, $f0, $f10 -/* 0876CC 7F052B9C 10000008 */ b .L7F052BC0 -/* 0876D0 7F052BA0 E49000E0 */ swc1 $f16, 0xe0($a0) -/* 0876D4 7F052BA4 C4400004 */ lwc1 $f0, 4($v0) -.L7F052BA8: -/* 0876D8 7F052BA8 C4520008 */ lwc1 $f18, 8($v0) -/* 0876DC 7F052BAC C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 0876E0 7F052BB0 46009101 */ sub.s $f4, $f18, $f0 -/* 0876E4 7F052BB4 46062202 */ mul.s $f8, $f4, $f6 -/* 0876E8 7F052BB8 46080280 */ add.s $f10, $f0, $f8 -/* 0876EC 7F052BBC E60A00D4 */ swc1 $f10, 0xd4($s0) -.L7F052BC0: -/* 0876F0 7F052BC0 C61000B4 */ lwc1 $f16, 0xb4($s0) -.L7F052BC4: -/* 0876F4 7F052BC4 C6120088 */ lwc1 $f18, 0x88($s0) -/* 0876F8 7F052BC8 02002025 */ move $a0, $s0 -/* 0876FC 7F052BCC 4610903E */ c.le.s $f18, $f16 -/* 087700 7F052BD0 00000000 */ nop -/* 087704 7F052BD4 45000004 */ bc1f .L7F052BE8 -/* 087708 7F052BD8 00000000 */ nop -/* 08770C 7F052BDC 8E0E0068 */ lw $t6, 0x68($s0) -/* 087710 7F052BE0 10000065 */ b .L7F052D78 -/* 087714 7F052BE4 ADC00000 */ sw $zero, ($t6) -.L7F052BE8: -/* 087718 7F052BE8 0FC149BB */ jal sub_GAME_7F0526EC -/* 08771C 7F052BEC AFA30028 */ sw $v1, 0x28($sp) -/* 087720 7F052BF0 8E070068 */ lw $a3, 0x68($s0) -/* 087724 7F052BF4 8FA40028 */ lw $a0, 0x28($sp) -/* 087728 7F052BF8 27A5002C */ addiu $a1, $sp, 0x2c -/* 08772C 7F052BFC 0FC0FD50 */ jal sub_GAME_7F03F540 -/* 087730 7F052C00 24E60004 */ addiu $a2, $a3, 4 -/* 087734 7F052C04 9602009A */ lhu $v0, 0x9a($s0) -/* 087738 7F052C08 24010004 */ li $at, 4 -/* 08773C 7F052C0C 8FA40028 */ lw $a0, 0x28($sp) -/* 087740 7F052C10 54410009 */ bnel $v0, $at, .L7F052C38 -/* 087744 7F052C14 24010008 */ li $at, 8 -/* 087748 7F052C18 0FC0FA6F */ jal sub_GAME_7F03E9BC -/* 08774C 7F052C1C 27A5002C */ addiu $a1, $sp, 0x2c -/* 087750 7F052C20 C604005C */ lwc1 $f4, 0x5c($s0) -/* 087754 7F052C24 8E0F0068 */ lw $t7, 0x68($s0) -/* 087758 7F052C28 46040180 */ add.s $f6, $f0, $f4 -/* 08775C 7F052C2C 1000001B */ b .L7F052C9C -/* 087760 7F052C30 E5E60048 */ swc1 $f6, 0x48($t7) -/* 087764 7F052C34 24010008 */ li $at, 8 -.L7F052C38: -/* 087768 7F052C38 14410008 */ bne $v0, $at, .L7F052C5C -/* 08776C 7F052C3C 8FA40028 */ lw $a0, 0x28($sp) -/* 087770 7F052C40 3C018005 */ lui $at, %hi(D_80053334) -/* 087774 7F052C44 C42A3334 */ lwc1 $f10, %lo(D_80053334)($at) -/* 087778 7F052C48 C608005C */ lwc1 $f8, 0x5c($s0) -/* 08777C 7F052C4C 8E180068 */ lw $t8, 0x68($s0) -/* 087780 7F052C50 460A4401 */ sub.s $f16, $f8, $f10 -/* 087784 7F052C54 10000011 */ b .L7F052C9C -/* 087788 7F052C58 E7100048 */ swc1 $f16, 0x48($t8) -.L7F052C5C: -/* 08778C 7F052C5C 0FC0FA6F */ jal sub_GAME_7F03E9BC -/* 087790 7F052C60 27A5002C */ addiu $a1, $sp, 0x2c -/* 087794 7F052C64 C7B20060 */ lwc1 $f18, 0x60($sp) -/* 087798 7F052C68 8E190068 */ lw $t9, 0x68($s0) -/* 08779C 7F052C6C 46120100 */ add.s $f4, $f0, $f18 -/* 0877A0 7F052C70 E7240048 */ swc1 $f4, 0x48($t9) -/* 0877A4 7F052C74 96090098 */ lhu $t1, 0x98($s0) -/* 0877A8 7F052C78 31280001 */ andi $t0, $t1, 1 -/* 0877AC 7F052C7C 51000008 */ beql $t0, $zero, .L7F052CA0 -/* 0877B0 7F052C80 9602009A */ lhu $v0, 0x9a($s0) -/* 0877B4 7F052C84 8E070068 */ lw $a3, 0x68($s0) -/* 0877B8 7F052C88 3C01447A */ li $at, 0x447A0000 # 1000.000000 -/* 0877BC 7F052C8C 44814000 */ mtc1 $at, $f8 -/* 0877C0 7F052C90 C4E60048 */ lwc1 $f6, 0x48($a3) -/* 0877C4 7F052C94 46083281 */ sub.s $f10, $f6, $f8 -/* 0877C8 7F052C98 E4EA0048 */ swc1 $f10, 0x48($a3) -.L7F052C9C: -/* 0877CC 7F052C9C 9602009A */ lhu $v0, 0x9a($s0) -.L7F052CA0: -/* 0877D0 7F052CA0 24010006 */ li $at, 6 -/* 0877D4 7F052CA4 14410008 */ bne $v0, $at, .L7F052CC8 -/* 0877D8 7F052CA8 3C018005 */ lui $at, %hi(D_80053338) -/* 0877DC 7F052CAC C4303338 */ lwc1 $f16, %lo(D_80053338)($at) -/* 0877E0 7F052CB0 C6120084 */ lwc1 $f18, 0x84($s0) -/* 0877E4 7F052CB4 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 0877E8 7F052CB8 46128102 */ mul.s $f4, $f16, $f18 -/* 0877EC 7F052CBC 4606203C */ c.lt.s $f4, $f6 -/* 0877F0 7F052CC0 00000000 */ nop -/* 0877F4 7F052CC4 4501000B */ bc1t .L7F052CF4 -.L7F052CC8: -/* 0877F8 7F052CC8 24010007 */ li $at, 7 -/* 0877FC 7F052CCC 14410010 */ bne $v0, $at, .L7F052D10 -/* 087800 7F052CD0 3C018005 */ lui $at, %hi(D_8005333C) -/* 087804 7F052CD4 C428333C */ lwc1 $f8, %lo(D_8005333C)($at) -/* 087808 7F052CD8 C60A0084 */ lwc1 $f10, 0x84($s0) -/* 08780C 7F052CDC C61200B4 */ lwc1 $f18, 0xb4($s0) -/* 087810 7F052CE0 460A4402 */ mul.s $f16, $f8, $f10 -/* 087814 7F052CE4 4612803C */ c.lt.s $f16, $f18 -/* 087818 7F052CE8 00000000 */ nop -/* 08781C 7F052CEC 45020009 */ bc1fl .L7F052D14 -/* 087820 7F052CF0 24010008 */ li $at, 8 -.L7F052CF4: -/* 087824 7F052CF4 8E070068 */ lw $a3, 0x68($s0) -/* 087828 7F052CF8 3C014248 */ li $at, 0x42480000 # 50.000000 -/* 08782C 7F052CFC 44813000 */ mtc1 $at, $f6 -/* 087830 7F052D00 C4E40048 */ lwc1 $f4, 0x48($a3) -/* 087834 7F052D04 46062200 */ add.s $f8, $f4, $f6 -/* 087838 7F052D08 1000001B */ b .L7F052D78 -/* 08783C 7F052D0C E4E80044 */ swc1 $f8, 0x44($a3) -.L7F052D10: -/* 087840 7F052D10 24010008 */ li $at, 8 -.L7F052D14: -/* 087844 7F052D14 14410008 */ bne $v0, $at, .L7F052D38 -/* 087848 7F052D18 8FA40028 */ lw $a0, 0x28($sp) -/* 08784C 7F052D1C 3C01447A */ li $at, 0x447A0000 # 1000.000000 -/* 087850 7F052D20 44818000 */ mtc1 $at, $f16 -/* 087854 7F052D24 C60A005C */ lwc1 $f10, 0x5c($s0) -/* 087858 7F052D28 8E0A0068 */ lw $t2, 0x68($s0) -/* 08785C 7F052D2C 46105480 */ add.s $f18, $f10, $f16 -/* 087860 7F052D30 10000011 */ b .L7F052D78 -/* 087864 7F052D34 E5520044 */ swc1 $f18, 0x44($t2) -.L7F052D38: -/* 087868 7F052D38 0FC0FA97 */ jal sub_GAME_7F03EA5C -/* 08786C 7F052D3C 27A5002C */ addiu $a1, $sp, 0x2c -/* 087870 7F052D40 C7A40060 */ lwc1 $f4, 0x60($sp) -/* 087874 7F052D44 8E0B0068 */ lw $t3, 0x68($s0) -/* 087878 7F052D48 46040180 */ add.s $f6, $f0, $f4 -/* 08787C 7F052D4C E5660044 */ swc1 $f6, 0x44($t3) -/* 087880 7F052D50 960C0098 */ lhu $t4, 0x98($s0) -/* 087884 7F052D54 318D0001 */ andi $t5, $t4, 1 -/* 087888 7F052D58 51A00008 */ beql $t5, $zero, .L7F052D7C -/* 08788C 7F052D5C 8FBF001C */ lw $ra, 0x1c($sp) -/* 087890 7F052D60 8E070068 */ lw $a3, 0x68($s0) -/* 087894 7F052D64 3C01447A */ li $at, 0x447A0000 # 1000.000000 -/* 087898 7F052D68 44815000 */ mtc1 $at, $f10 -/* 08789C 7F052D6C C4E80044 */ lwc1 $f8, 0x44($a3) -/* 0878A0 7F052D70 460A4400 */ add.s $f16, $f8, $f10 -/* 0878A4 7F052D74 E4F00044 */ swc1 $f16, 0x44($a3) -.L7F052D78: -/* 0878A8 7F052D78 8FBF001C */ lw $ra, 0x1c($sp) -.L7F052D7C: -/* 0878AC 7F052D7C 8FB00018 */ lw $s0, 0x18($sp) -/* 0878B0 7F052D80 27BD0070 */ addiu $sp, $sp, 0x70 -/* 0878B4 7F052D84 03E00008 */ jr $ra -/* 0878B8 7F052D88 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F052D8C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F052D8C -/* 0878BC 7F052D8C 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0878C0 7F052D90 AFBF003C */ sw $ra, 0x3c($sp) -/* 0878C4 7F052D94 AFBE0038 */ sw $fp, 0x38($sp) -/* 0878C8 7F052D98 AFB70034 */ sw $s7, 0x34($sp) -/* 0878CC 7F052D9C AFB60030 */ sw $s6, 0x30($sp) -/* 0878D0 7F052DA0 AFB5002C */ sw $s5, 0x2c($sp) -/* 0878D4 7F052DA4 AFB40028 */ sw $s4, 0x28($sp) -/* 0878D8 7F052DA8 AFB30024 */ sw $s3, 0x24($sp) -/* 0878DC 7F052DAC AFB20020 */ sw $s2, 0x20($sp) -/* 0878E0 7F052DB0 AFB1001C */ sw $s1, 0x1c($sp) -/* 0878E4 7F052DB4 AFB00018 */ sw $s0, 0x18($sp) -/* 0878E8 7F052DB8 948E0098 */ lhu $t6, 0x98($a0) -/* 0878EC 7F052DBC 0080B025 */ move $s6, $a0 -/* 0878F0 7F052DC0 31CF0004 */ andi $t7, $t6, 4 -/* 0878F4 7F052DC4 51E001E9 */ beql $t7, $zero, .L7F05356C -/* 0878F8 7F052DC8 8FBF003C */ lw $ra, 0x3c($sp) -/* 0878FC 7F052DCC 8C840014 */ lw $a0, 0x14($a0) -/* 087900 7F052DD0 8C980008 */ lw $t8, 8($a0) -/* 087904 7F052DD4 8F190000 */ lw $t9, ($t8) -/* 087908 7F052DD8 8F2E0014 */ lw $t6, 0x14($t9) -/* 08790C 7F052DDC 8DC50014 */ lw $a1, 0x14($t6) -/* 087910 7F052DE0 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 087914 7F052DE4 8CB50004 */ lw $s5, 4($a1) -/* 087918 7F052DE8 96CF009A */ lhu $t7, 0x9a($s6) -/* 08791C 7F052DEC 24140004 */ li $s4, 4 -/* 087920 7F052DF0 0040B825 */ move $s7, $v0 -/* 087924 7F052DF4 168F000B */ bne $s4, $t7, .L7F052E24 -/* 087928 7F052DF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 08792C 7F052DFC 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 087930 7F052E00 44813000 */ mtc1 $at, $f6 -/* 087934 7F052E04 C6C400E0 */ lwc1 $f4, 0xe0($s6) -/* 087938 7F052E08 46062200 */ add.s $f8, $f4, $f6 -/* 08793C 7F052E0C 4600428D */ trunc.w.s $f10, $f8 -/* 087940 7F052E10 440D5000 */ mfc1 $t5, $f10 -/* 087944 7F052E14 00000000 */ nop -/* 087948 7F052E18 000DCC00 */ sll $t9, $t5, 0x10 -/* 08794C 7F052E1C 1000000A */ b .L7F052E48 -/* 087950 7F052E20 00196C03 */ sra $t5, $t9, 0x10 -.L7F052E24: -/* 087954 7F052E24 C6D000D4 */ lwc1 $f16, 0xd4($s6) -/* 087958 7F052E28 44819000 */ mtc1 $at, $f18 -/* 08795C 7F052E2C 00000000 */ nop -/* 087960 7F052E30 46128100 */ add.s $f4, $f16, $f18 -/* 087964 7F052E34 4600218D */ trunc.w.s $f6, $f4 -/* 087968 7F052E38 440D3000 */ mfc1 $t5, $f6 -/* 08796C 7F052E3C 00000000 */ nop -/* 087970 7F052E40 000DC400 */ sll $t8, $t5, 0x10 -/* 087974 7F052E44 00186C03 */ sra $t5, $t8, 0x10 -.L7F052E48: -/* 087978 7F052E48 86A4000C */ lh $a0, 0xc($s5) -/* 08797C 7F052E4C 0FC2F5B1 */ jal sub_GAME_7F0BD6C4 -/* 087980 7F052E50 A7AD0042 */ sh $t5, 0x42($sp) -/* 087984 7F052E54 87AD0042 */ lh $t5, 0x42($sp) -/* 087988 7F052E58 AEE20000 */ sw $v0, ($s7) -/* 08798C 7F052E5C 86AE000C */ lh $t6, 0xc($s5) -/* 087990 7F052E60 00001825 */ move $v1, $zero -/* 087994 7F052E64 0000F025 */ move $fp, $zero -/* 087998 7F052E68 05C10003 */ bgez $t6, .L7F052E78 -/* 08799C 7F052E6C 000E7883 */ sra $t7, $t6, 2 -/* 0879A0 7F052E70 25C10003 */ addiu $at, $t6, 3 -/* 0879A4 7F052E74 00017883 */ sra $t7, $at, 2 -.L7F052E78: -/* 0879A8 7F052E78 19E001BB */ blez $t7, .L7F053568 -/* 0879AC 7F052E7C 00001825 */ move $v1, $zero -.L7F052E80: -/* 0879B0 7F052E80 001E9900 */ sll $s3, $fp, 4 -.L7F052E84: -/* 0879B4 7F052E84 8EF80000 */ lw $t8, ($s7) -/* 0879B8 7F052E88 24670002 */ addiu $a3, $v1, 2 -/* 0879BC 7F052E8C 246C0003 */ addiu $t4, $v1, 3 -/* 0879C0 7F052E90 03131021 */ addu $v0, $t8, $s3 -/* 0879C4 7F052E94 24720001 */ addiu $s2, $v1, 1 -/* 0879C8 7F052E98 00032100 */ sll $a0, $v1, 4 -/* 0879CC 7F052E9C 00445821 */ addu $t3, $v0, $a0 -/* 0879D0 7F052EA0 06410004 */ bgez $s2, .L7F052EB4 -/* 0879D4 7F052EA4 32450003 */ andi $a1, $s2, 3 -/* 0879D8 7F052EA8 10A00002 */ beqz $a1, .L7F052EB4 -/* 0879DC 7F052EAC 00000000 */ nop -/* 0879E0 7F052EB0 24A5FFFC */ addiu $a1, $a1, -4 -.L7F052EB4: -/* 0879E4 7F052EB4 0005C900 */ sll $t9, $a1, 4 -/* 0879E8 7F052EB8 03202825 */ move $a1, $t9 -/* 0879EC 7F052EBC 0059F821 */ addu $ra, $v0, $t9 -/* 0879F0 7F052EC0 04E10004 */ bgez $a3, .L7F052ED4 -/* 0879F4 7F052EC4 30EE0003 */ andi $t6, $a3, 3 -/* 0879F8 7F052EC8 11C00002 */ beqz $t6, .L7F052ED4 -/* 0879FC 7F052ECC 00000000 */ nop -/* 087A00 7F052ED0 25CEFFFC */ addiu $t6, $t6, -4 -.L7F052ED4: -/* 087A04 7F052ED4 000E7900 */ sll $t7, $t6, 4 -/* 087A08 7F052ED8 8EAE0008 */ lw $t6, 8($s5) -/* 087A0C 7F052EDC 01E03825 */ move $a3, $t7 -/* 087A10 7F052EE0 004F8021 */ addu $s0, $v0, $t7 -/* 087A14 7F052EE4 01D34821 */ addu $t1, $t6, $s3 -/* 087A18 7F052EE8 05810004 */ bgez $t4, .L7F052EFC -/* 087A1C 7F052EEC 31980003 */ andi $t8, $t4, 3 -/* 087A20 7F052EF0 13000002 */ beqz $t8, .L7F052EFC -/* 087A24 7F052EF4 00000000 */ nop -/* 087A28 7F052EF8 2718FFFC */ addiu $t8, $t8, -4 -.L7F052EFC: -/* 087A2C 7F052EFC 00186100 */ sll $t4, $t8, 4 -/* 087A30 7F052F00 01275021 */ addu $t2, $t1, $a3 -/* 087A34 7F052F04 004C8821 */ addu $s1, $v0, $t4 -/* 087A38 7F052F08 01243021 */ addu $a2, $t1, $a0 -/* 087A3C 7F052F0C 01254021 */ addu $t0, $t1, $a1 -/* 087A40 7F052F10 14600021 */ bnez $v1, .L7F052F98 -/* 087A44 7F052F14 012C3821 */ addu $a3, $t1, $t4 -/* 087A48 7F052F18 8CC10000 */ lw $at, ($a2) -/* 087A4C 7F052F1C AD610000 */ sw $at, ($t3) -/* 087A50 7F052F20 8CD80004 */ lw $t8, 4($a2) -/* 087A54 7F052F24 AD780004 */ sw $t8, 4($t3) -/* 087A58 7F052F28 8CC10008 */ lw $at, 8($a2) -/* 087A5C 7F052F2C AD610008 */ sw $at, 8($t3) -/* 087A60 7F052F30 8CD8000C */ lw $t8, 0xc($a2) -/* 087A64 7F052F34 AD78000C */ sw $t8, 0xc($t3) -/* 087A68 7F052F38 8D010000 */ lw $at, ($t0) -/* 087A6C 7F052F3C AFE10000 */ sw $at, ($ra) -/* 087A70 7F052F40 8D0E0004 */ lw $t6, 4($t0) -/* 087A74 7F052F44 AFEE0004 */ sw $t6, 4($ra) -/* 087A78 7F052F48 8D010008 */ lw $at, 8($t0) -/* 087A7C 7F052F4C AFE10008 */ sw $at, 8($ra) -/* 087A80 7F052F50 8D0E000C */ lw $t6, 0xc($t0) -/* 087A84 7F052F54 AFEE000C */ sw $t6, 0xc($ra) -/* 087A88 7F052F58 8D410000 */ lw $at, ($t2) -/* 087A8C 7F052F5C AE010000 */ sw $at, ($s0) -/* 087A90 7F052F60 8D580004 */ lw $t8, 4($t2) -/* 087A94 7F052F64 AE180004 */ sw $t8, 4($s0) -/* 087A98 7F052F68 8D410008 */ lw $at, 8($t2) -/* 087A9C 7F052F6C AE010008 */ sw $at, 8($s0) -/* 087AA0 7F052F70 8D58000C */ lw $t8, 0xc($t2) -/* 087AA4 7F052F74 AE18000C */ sw $t8, 0xc($s0) -/* 087AA8 7F052F78 8CE10000 */ lw $at, ($a3) -/* 087AAC 7F052F7C AE210000 */ sw $at, ($s1) -/* 087AB0 7F052F80 8CEE0004 */ lw $t6, 4($a3) -/* 087AB4 7F052F84 AE2E0004 */ sw $t6, 4($s1) -/* 087AB8 7F052F88 8CE10008 */ lw $at, 8($a3) -/* 087ABC 7F052F8C AE210008 */ sw $at, 8($s1) -/* 087AC0 7F052F90 8CEE000C */ lw $t6, 0xc($a3) -/* 087AC4 7F052F94 AE2E000C */ sw $t6, 0xc($s1) -.L7F052F98: -/* 087AC8 7F052F98 96CF009A */ lhu $t7, 0x9a($s6) -/* 087ACC 7F052F9C 568F00B5 */ bnel $s4, $t7, .L7F053274 -/* 087AD0 7F052FA0 84C50000 */ lh $a1, ($a2) -/* 087AD4 7F052FA4 84C40002 */ lh $a0, 2($a2) -/* 087AD8 7F052FA8 008D082A */ slt $at, $a0, $t5 -/* 087ADC 7F052FAC 14200162 */ bnez $at, .L7F053538 -/* 087AE0 7F052FB0 00000000 */ nop -/* 087AE4 7F052FB4 84C50000 */ lh $a1, ($a2) -/* 087AE8 7F052FB8 85180000 */ lh $t8, ($t0) -/* 087AEC 7F052FBC 57050039 */ bnel $t8, $a1, .L7F0530A4 -/* 087AF0 7F052FC0 85590000 */ lh $t9, ($t2) -/* 087AF4 7F052FC4 85190004 */ lh $t9, 4($t0) -/* 087AF8 7F052FC8 84CE0004 */ lh $t6, 4($a2) -/* 087AFC 7F052FCC 572E0035 */ bnel $t9, $t6, .L7F0530A4 -/* 087B00 7F052FD0 85590000 */ lh $t9, ($t2) -/* 087B04 7F052FD4 85090002 */ lh $t1, 2($t0) -/* 087B08 7F052FD8 51240032 */ beql $t1, $a0, .L7F0530A4 -/* 087B0C 7F052FDC 85590000 */ lh $t9, ($t2) -/* 087B10 7F052FE0 84C20008 */ lh $v0, 8($a2) -/* 087B14 7F052FE4 85180008 */ lh $t8, 8($t0) -/* 087B18 7F052FE8 008D7823 */ subu $t7, $a0, $t5 -/* 087B1C 7F052FEC 0302C823 */ subu $t9, $t8, $v0 -/* 087B20 7F052FF0 01F90019 */ multu $t7, $t9 -/* 087B24 7F052FF4 0089C023 */ subu $t8, $a0, $t1 -/* 087B28 7F052FF8 00007012 */ mflo $t6 -/* 087B2C 7F052FFC 00000000 */ nop -/* 087B30 7F053000 00000000 */ nop -/* 087B34 7F053004 01D8001A */ div $zero, $t6, $t8 -/* 087B38 7F053008 00007812 */ mflo $t7 -/* 087B3C 7F05300C 01E2C821 */ addu $t9, $t7, $v0 -/* 087B40 7F053010 A5790008 */ sh $t9, 8($t3) -/* 087B44 7F053014 17000002 */ bnez $t8, .L7F053020 -/* 087B48 7F053018 00000000 */ nop -/* 087B4C 7F05301C 0007000D */ break 7 -.L7F053020: -/* 087B50 7F053020 2401FFFF */ li $at, -1 -/* 087B54 7F053024 17010004 */ bne $t8, $at, .L7F053038 -/* 087B58 7F053028 3C018000 */ lui $at, 0x8000 -/* 087B5C 7F05302C 15C10002 */ bne $t6, $at, .L7F053038 -/* 087B60 7F053030 00000000 */ nop -/* 087B64 7F053034 0006000D */ break 6 -.L7F053038: -/* 087B68 7F053038 8518000A */ lh $t8, 0xa($t0) -/* 087B6C 7F05303C 84C3000A */ lh $v1, 0xa($a2) -/* 087B70 7F053040 84C40002 */ lh $a0, 2($a2) -/* 087B74 7F053044 03037823 */ subu $t7, $t8, $v1 -/* 087B78 7F053048 008D7023 */ subu $t6, $a0, $t5 -/* 087B7C 7F05304C 01CF0019 */ multu $t6, $t7 -/* 087B80 7F053050 85180002 */ lh $t8, 2($t0) -/* 087B84 7F053054 00987023 */ subu $t6, $a0, $t8 -/* 087B88 7F053058 0000C812 */ mflo $t9 -/* 087B8C 7F05305C 00000000 */ nop -/* 087B90 7F053060 00000000 */ nop -/* 087B94 7F053064 032E001A */ div $zero, $t9, $t6 -/* 087B98 7F053068 00007812 */ mflo $t7 -/* 087B9C 7F05306C 01E3C021 */ addu $t8, $t7, $v1 -/* 087BA0 7F053070 15C00002 */ bnez $t6, .L7F05307C -/* 087BA4 7F053074 00000000 */ nop -/* 087BA8 7F053078 0007000D */ break 7 -.L7F05307C: -/* 087BAC 7F05307C 2401FFFF */ li $at, -1 -/* 087BB0 7F053080 15C10004 */ bne $t6, $at, .L7F053094 -/* 087BB4 7F053084 3C018000 */ lui $at, 0x8000 -/* 087BB8 7F053088 17210002 */ bne $t9, $at, .L7F053094 -/* 087BBC 7F05308C 00000000 */ nop -/* 087BC0 7F053090 0006000D */ break 6 -.L7F053094: -/* 087BC4 7F053094 A578000A */ sh $t8, 0xa($t3) -/* 087BC8 7F053098 10000073 */ b .L7F053268 -/* 087BCC 7F05309C 00000000 */ nop -/* 087BD0 7F0530A0 85590000 */ lh $t9, ($t2) -.L7F0530A4: -/* 087BD4 7F0530A4 57250039 */ bnel $t9, $a1, .L7F05318C -/* 087BD8 7F0530A8 84EE0000 */ lh $t6, ($a3) -/* 087BDC 7F0530AC 854E0004 */ lh $t6, 4($t2) -/* 087BE0 7F0530B0 84CF0004 */ lh $t7, 4($a2) -/* 087BE4 7F0530B4 55CF0035 */ bnel $t6, $t7, .L7F05318C -/* 087BE8 7F0530B8 84EE0000 */ lh $t6, ($a3) -/* 087BEC 7F0530BC 85480002 */ lh $t0, 2($t2) -/* 087BF0 7F0530C0 51040032 */ beql $t0, $a0, .L7F05318C -/* 087BF4 7F0530C4 84EE0000 */ lh $t6, ($a3) -/* 087BF8 7F0530C8 84C20008 */ lh $v0, 8($a2) -/* 087BFC 7F0530CC 85590008 */ lh $t9, 8($t2) -/* 087C00 7F0530D0 008DC023 */ subu $t8, $a0, $t5 -/* 087C04 7F0530D4 03227023 */ subu $t6, $t9, $v0 -/* 087C08 7F0530D8 030E0019 */ multu $t8, $t6 -/* 087C0C 7F0530DC 0088C823 */ subu $t9, $a0, $t0 -/* 087C10 7F0530E0 00007812 */ mflo $t7 -/* 087C14 7F0530E4 00000000 */ nop -/* 087C18 7F0530E8 00000000 */ nop -/* 087C1C 7F0530EC 01F9001A */ div $zero, $t7, $t9 -/* 087C20 7F0530F0 0000C012 */ mflo $t8 -/* 087C24 7F0530F4 03027021 */ addu $t6, $t8, $v0 -/* 087C28 7F0530F8 A56E0008 */ sh $t6, 8($t3) -/* 087C2C 7F0530FC 17200002 */ bnez $t9, .L7F053108 -/* 087C30 7F053100 00000000 */ nop -/* 087C34 7F053104 0007000D */ break 7 -.L7F053108: -/* 087C38 7F053108 2401FFFF */ li $at, -1 -/* 087C3C 7F05310C 17210004 */ bne $t9, $at, .L7F053120 -/* 087C40 7F053110 3C018000 */ lui $at, 0x8000 -/* 087C44 7F053114 15E10002 */ bne $t7, $at, .L7F053120 -/* 087C48 7F053118 00000000 */ nop -/* 087C4C 7F05311C 0006000D */ break 6 -.L7F053120: -/* 087C50 7F053120 8559000A */ lh $t9, 0xa($t2) -/* 087C54 7F053124 84C3000A */ lh $v1, 0xa($a2) -/* 087C58 7F053128 84C40002 */ lh $a0, 2($a2) -/* 087C5C 7F05312C 0323C023 */ subu $t8, $t9, $v1 -/* 087C60 7F053130 008D7823 */ subu $t7, $a0, $t5 -/* 087C64 7F053134 01F80019 */ multu $t7, $t8 -/* 087C68 7F053138 85590002 */ lh $t9, 2($t2) -/* 087C6C 7F05313C 00997823 */ subu $t7, $a0, $t9 -/* 087C70 7F053140 00007012 */ mflo $t6 -/* 087C74 7F053144 00000000 */ nop -/* 087C78 7F053148 00000000 */ nop -/* 087C7C 7F05314C 01CF001A */ div $zero, $t6, $t7 -/* 087C80 7F053150 0000C012 */ mflo $t8 -/* 087C84 7F053154 0303C821 */ addu $t9, $t8, $v1 -/* 087C88 7F053158 15E00002 */ bnez $t7, .L7F053164 -/* 087C8C 7F05315C 00000000 */ nop -/* 087C90 7F053160 0007000D */ break 7 -.L7F053164: -/* 087C94 7F053164 2401FFFF */ li $at, -1 -/* 087C98 7F053168 15E10004 */ bne $t7, $at, .L7F05317C -/* 087C9C 7F05316C 3C018000 */ lui $at, 0x8000 -/* 087CA0 7F053170 15C10002 */ bne $t6, $at, .L7F05317C -/* 087CA4 7F053174 00000000 */ nop -/* 087CA8 7F053178 0006000D */ break 6 -.L7F05317C: -/* 087CAC 7F05317C A579000A */ sh $t9, 0xa($t3) -/* 087CB0 7F053180 10000039 */ b .L7F053268 -/* 087CB4 7F053184 00000000 */ nop -/* 087CB8 7F053188 84EE0000 */ lh $t6, ($a3) -.L7F05318C: -/* 087CBC 7F05318C 15C50036 */ bne $t6, $a1, .L7F053268 -/* 087CC0 7F053190 00000000 */ nop -/* 087CC4 7F053194 84EF0004 */ lh $t7, 4($a3) -/* 087CC8 7F053198 84D80004 */ lh $t8, 4($a2) -/* 087CCC 7F05319C 15F80032 */ bne $t7, $t8, .L7F053268 -/* 087CD0 7F0531A0 00000000 */ nop -/* 087CD4 7F0531A4 84E50002 */ lh $a1, 2($a3) -/* 087CD8 7F0531A8 10A4002F */ beq $a1, $a0, .L7F053268 -/* 087CDC 7F0531AC 00000000 */ nop -/* 087CE0 7F0531B0 84C20008 */ lh $v0, 8($a2) -/* 087CE4 7F0531B4 84EE0008 */ lh $t6, 8($a3) -/* 087CE8 7F0531B8 008DC823 */ subu $t9, $a0, $t5 -/* 087CEC 7F0531BC 01C27823 */ subu $t7, $t6, $v0 -/* 087CF0 7F0531C0 032F0019 */ multu $t9, $t7 -/* 087CF4 7F0531C4 00857023 */ subu $t6, $a0, $a1 -/* 087CF8 7F0531C8 0000C012 */ mflo $t8 -/* 087CFC 7F0531CC 00000000 */ nop -/* 087D00 7F0531D0 00000000 */ nop -/* 087D04 7F0531D4 030E001A */ div $zero, $t8, $t6 -/* 087D08 7F0531D8 0000C812 */ mflo $t9 -/* 087D0C 7F0531DC 03227821 */ addu $t7, $t9, $v0 -/* 087D10 7F0531E0 A56F0008 */ sh $t7, 8($t3) -/* 087D14 7F0531E4 15C00002 */ bnez $t6, .L7F0531F0 -/* 087D18 7F0531E8 00000000 */ nop -/* 087D1C 7F0531EC 0007000D */ break 7 -.L7F0531F0: -/* 087D20 7F0531F0 2401FFFF */ li $at, -1 -/* 087D24 7F0531F4 15C10004 */ bne $t6, $at, .L7F053208 -/* 087D28 7F0531F8 3C018000 */ lui $at, 0x8000 -/* 087D2C 7F0531FC 17010002 */ bne $t8, $at, .L7F053208 -/* 087D30 7F053200 00000000 */ nop -/* 087D34 7F053204 0006000D */ break 6 -.L7F053208: -/* 087D38 7F053208 84EE000A */ lh $t6, 0xa($a3) -/* 087D3C 7F05320C 84C3000A */ lh $v1, 0xa($a2) -/* 087D40 7F053210 84C40002 */ lh $a0, 2($a2) -/* 087D44 7F053214 01C3C823 */ subu $t9, $t6, $v1 -/* 087D48 7F053218 008DC023 */ subu $t8, $a0, $t5 -/* 087D4C 7F05321C 03190019 */ multu $t8, $t9 -/* 087D50 7F053220 84EE0002 */ lh $t6, 2($a3) -/* 087D54 7F053224 008EC023 */ subu $t8, $a0, $t6 -/* 087D58 7F053228 00007812 */ mflo $t7 -/* 087D5C 7F05322C 00000000 */ nop -/* 087D60 7F053230 00000000 */ nop -/* 087D64 7F053234 01F8001A */ div $zero, $t7, $t8 -/* 087D68 7F053238 0000C812 */ mflo $t9 -/* 087D6C 7F05323C 03237021 */ addu $t6, $t9, $v1 -/* 087D70 7F053240 A56E000A */ sh $t6, 0xa($t3) -/* 087D74 7F053244 17000002 */ bnez $t8, .L7F053250 -/* 087D78 7F053248 00000000 */ nop -/* 087D7C 7F05324C 0007000D */ break 7 -.L7F053250: -/* 087D80 7F053250 2401FFFF */ li $at, -1 -/* 087D84 7F053254 17010004 */ bne $t8, $at, .L7F053268 -/* 087D88 7F053258 3C018000 */ lui $at, 0x8000 -/* 087D8C 7F05325C 15E10002 */ bne $t7, $at, .L7F053268 -/* 087D90 7F053260 00000000 */ nop -/* 087D94 7F053264 0006000D */ break 6 -.L7F053268: -/* 087D98 7F053268 100000B3 */ b .L7F053538 -/* 087D9C 7F05326C A56D0002 */ sh $t5, 2($t3) -/* 087DA0 7F053270 84C50000 */ lh $a1, ($a2) -.L7F053274: -/* 087DA4 7F053274 01A5082A */ slt $at, $t5, $a1 -/* 087DA8 7F053278 142000AF */ bnez $at, .L7F053538 -/* 087DAC 7F05327C 00000000 */ nop -/* 087DB0 7F053280 84C40002 */ lh $a0, 2($a2) -/* 087DB4 7F053284 850F0002 */ lh $t7, 2($t0) -/* 087DB8 7F053288 55E40039 */ bnel $t7, $a0, .L7F053370 -/* 087DBC 7F05328C 85580002 */ lh $t8, 2($t2) -/* 087DC0 7F053290 85180004 */ lh $t8, 4($t0) -/* 087DC4 7F053294 84D90004 */ lh $t9, 4($a2) -/* 087DC8 7F053298 57190035 */ bnel $t8, $t9, .L7F053370 -/* 087DCC 7F05329C 85580002 */ lh $t8, 2($t2) -/* 087DD0 7F0532A0 85090000 */ lh $t1, ($t0) -/* 087DD4 7F0532A4 51250032 */ beql $t1, $a1, .L7F053370 -/* 087DD8 7F0532A8 85580002 */ lh $t8, 2($t2) -/* 087DDC 7F0532AC 84C20008 */ lh $v0, 8($a2) -/* 087DE0 7F0532B0 850F0008 */ lh $t7, 8($t0) -/* 087DE4 7F0532B4 01A57023 */ subu $t6, $t5, $a1 -/* 087DE8 7F0532B8 01E2C023 */ subu $t8, $t7, $v0 -/* 087DEC 7F0532BC 01D80019 */ multu $t6, $t8 -/* 087DF0 7F0532C0 01257823 */ subu $t7, $t1, $a1 -/* 087DF4 7F0532C4 0000C812 */ mflo $t9 -/* 087DF8 7F0532C8 00000000 */ nop -/* 087DFC 7F0532CC 00000000 */ nop -/* 087E00 7F0532D0 032F001A */ div $zero, $t9, $t7 -/* 087E04 7F0532D4 00007012 */ mflo $t6 -/* 087E08 7F0532D8 01C2C021 */ addu $t8, $t6, $v0 -/* 087E0C 7F0532DC A5780008 */ sh $t8, 8($t3) -/* 087E10 7F0532E0 15E00002 */ bnez $t7, .L7F0532EC -/* 087E14 7F0532E4 00000000 */ nop -/* 087E18 7F0532E8 0007000D */ break 7 -.L7F0532EC: -/* 087E1C 7F0532EC 2401FFFF */ li $at, -1 -/* 087E20 7F0532F0 15E10004 */ bne $t7, $at, .L7F053304 -/* 087E24 7F0532F4 3C018000 */ lui $at, 0x8000 -/* 087E28 7F0532F8 17210002 */ bne $t9, $at, .L7F053304 -/* 087E2C 7F0532FC 00000000 */ nop -/* 087E30 7F053300 0006000D */ break 6 -.L7F053304: -/* 087E34 7F053304 850F000A */ lh $t7, 0xa($t0) -/* 087E38 7F053308 84C3000A */ lh $v1, 0xa($a2) -/* 087E3C 7F05330C 84C50000 */ lh $a1, ($a2) -/* 087E40 7F053310 01E37023 */ subu $t6, $t7, $v1 -/* 087E44 7F053314 01A5C823 */ subu $t9, $t5, $a1 -/* 087E48 7F053318 032E0019 */ multu $t9, $t6 -/* 087E4C 7F05331C 850F0000 */ lh $t7, ($t0) -/* 087E50 7F053320 01E5C823 */ subu $t9, $t7, $a1 -/* 087E54 7F053324 0000C012 */ mflo $t8 -/* 087E58 7F053328 00000000 */ nop -/* 087E5C 7F05332C 00000000 */ nop -/* 087E60 7F053330 0319001A */ div $zero, $t8, $t9 -/* 087E64 7F053334 00007012 */ mflo $t6 -/* 087E68 7F053338 01C37821 */ addu $t7, $t6, $v1 -/* 087E6C 7F05333C 17200002 */ bnez $t9, .L7F053348 -/* 087E70 7F053340 00000000 */ nop -/* 087E74 7F053344 0007000D */ break 7 -.L7F053348: -/* 087E78 7F053348 2401FFFF */ li $at, -1 -/* 087E7C 7F05334C 17210004 */ bne $t9, $at, .L7F053360 -/* 087E80 7F053350 3C018000 */ lui $at, 0x8000 -/* 087E84 7F053354 17010002 */ bne $t8, $at, .L7F053360 -/* 087E88 7F053358 00000000 */ nop -/* 087E8C 7F05335C 0006000D */ break 6 -.L7F053360: -/* 087E90 7F053360 A56F000A */ sh $t7, 0xa($t3) -/* 087E94 7F053364 10000074 */ b .L7F053538 -/* 087E98 7F053368 A56D0000 */ sh $t5, ($t3) -/* 087E9C 7F05336C 85580002 */ lh $t8, 2($t2) -.L7F053370: -/* 087EA0 7F053370 57040039 */ bnel $t8, $a0, .L7F053458 -/* 087EA4 7F053374 84F90002 */ lh $t9, 2($a3) -/* 087EA8 7F053378 85590004 */ lh $t9, 4($t2) -/* 087EAC 7F05337C 84CE0004 */ lh $t6, 4($a2) -/* 087EB0 7F053380 572E0035 */ bnel $t9, $t6, .L7F053458 -/* 087EB4 7F053384 84F90002 */ lh $t9, 2($a3) -/* 087EB8 7F053388 85480000 */ lh $t0, ($t2) -/* 087EBC 7F05338C 51050032 */ beql $t0, $a1, .L7F053458 -/* 087EC0 7F053390 84F90002 */ lh $t9, 2($a3) -/* 087EC4 7F053394 84C20008 */ lh $v0, 8($a2) -/* 087EC8 7F053398 85580008 */ lh $t8, 8($t2) -/* 087ECC 7F05339C 01A57823 */ subu $t7, $t5, $a1 -/* 087ED0 7F0533A0 0302C823 */ subu $t9, $t8, $v0 -/* 087ED4 7F0533A4 01F90019 */ multu $t7, $t9 -/* 087ED8 7F0533A8 0105C023 */ subu $t8, $t0, $a1 -/* 087EDC 7F0533AC 00007012 */ mflo $t6 -/* 087EE0 7F0533B0 00000000 */ nop -/* 087EE4 7F0533B4 00000000 */ nop -/* 087EE8 7F0533B8 01D8001A */ div $zero, $t6, $t8 -/* 087EEC 7F0533BC 00007812 */ mflo $t7 -/* 087EF0 7F0533C0 01E2C821 */ addu $t9, $t7, $v0 -/* 087EF4 7F0533C4 A5790008 */ sh $t9, 8($t3) -/* 087EF8 7F0533C8 17000002 */ bnez $t8, .L7F0533D4 -/* 087EFC 7F0533CC 00000000 */ nop -/* 087F00 7F0533D0 0007000D */ break 7 -.L7F0533D4: -/* 087F04 7F0533D4 2401FFFF */ li $at, -1 -/* 087F08 7F0533D8 17010004 */ bne $t8, $at, .L7F0533EC -/* 087F0C 7F0533DC 3C018000 */ lui $at, 0x8000 -/* 087F10 7F0533E0 15C10002 */ bne $t6, $at, .L7F0533EC -/* 087F14 7F0533E4 00000000 */ nop -/* 087F18 7F0533E8 0006000D */ break 6 -.L7F0533EC: -/* 087F1C 7F0533EC 8558000A */ lh $t8, 0xa($t2) -/* 087F20 7F0533F0 84C3000A */ lh $v1, 0xa($a2) -/* 087F24 7F0533F4 84C50000 */ lh $a1, ($a2) -/* 087F28 7F0533F8 03037823 */ subu $t7, $t8, $v1 -/* 087F2C 7F0533FC 01A57023 */ subu $t6, $t5, $a1 -/* 087F30 7F053400 01CF0019 */ multu $t6, $t7 -/* 087F34 7F053404 85580000 */ lh $t8, ($t2) -/* 087F38 7F053408 03057023 */ subu $t6, $t8, $a1 -/* 087F3C 7F05340C 0000C812 */ mflo $t9 -/* 087F40 7F053410 00000000 */ nop -/* 087F44 7F053414 00000000 */ nop -/* 087F48 7F053418 032E001A */ div $zero, $t9, $t6 -/* 087F4C 7F05341C 00007812 */ mflo $t7 -/* 087F50 7F053420 01E3C021 */ addu $t8, $t7, $v1 -/* 087F54 7F053424 15C00002 */ bnez $t6, .L7F053430 -/* 087F58 7F053428 00000000 */ nop -/* 087F5C 7F05342C 0007000D */ break 7 -.L7F053430: -/* 087F60 7F053430 2401FFFF */ li $at, -1 -/* 087F64 7F053434 15C10004 */ bne $t6, $at, .L7F053448 -/* 087F68 7F053438 3C018000 */ lui $at, 0x8000 -/* 087F6C 7F05343C 17210002 */ bne $t9, $at, .L7F053448 -/* 087F70 7F053440 00000000 */ nop -/* 087F74 7F053444 0006000D */ break 6 -.L7F053448: -/* 087F78 7F053448 A578000A */ sh $t8, 0xa($t3) -/* 087F7C 7F05344C 1000003A */ b .L7F053538 -/* 087F80 7F053450 A56D0000 */ sh $t5, ($t3) -/* 087F84 7F053454 84F90002 */ lh $t9, 2($a3) -.L7F053458: -/* 087F88 7F053458 57240037 */ bnel $t9, $a0, .L7F053538 -/* 087F8C 7F05345C A56D0000 */ sh $t5, ($t3) -/* 087F90 7F053460 84EE0004 */ lh $t6, 4($a3) -/* 087F94 7F053464 84CF0004 */ lh $t7, 4($a2) -/* 087F98 7F053468 55CF0033 */ bnel $t6, $t7, .L7F053538 -/* 087F9C 7F05346C A56D0000 */ sh $t5, ($t3) -/* 087FA0 7F053470 84E40000 */ lh $a0, ($a3) -/* 087FA4 7F053474 50850030 */ beql $a0, $a1, .L7F053538 -/* 087FA8 7F053478 A56D0000 */ sh $t5, ($t3) -/* 087FAC 7F05347C 84C20008 */ lh $v0, 8($a2) -/* 087FB0 7F053480 84F90008 */ lh $t9, 8($a3) -/* 087FB4 7F053484 01A5C023 */ subu $t8, $t5, $a1 -/* 087FB8 7F053488 03227023 */ subu $t6, $t9, $v0 -/* 087FBC 7F05348C 030E0019 */ multu $t8, $t6 -/* 087FC0 7F053490 0085C823 */ subu $t9, $a0, $a1 -/* 087FC4 7F053494 00007812 */ mflo $t7 -/* 087FC8 7F053498 00000000 */ nop -/* 087FCC 7F05349C 00000000 */ nop -/* 087FD0 7F0534A0 01F9001A */ div $zero, $t7, $t9 -/* 087FD4 7F0534A4 0000C012 */ mflo $t8 -/* 087FD8 7F0534A8 03027021 */ addu $t6, $t8, $v0 -/* 087FDC 7F0534AC A56E0008 */ sh $t6, 8($t3) -/* 087FE0 7F0534B0 17200002 */ bnez $t9, .L7F0534BC -/* 087FE4 7F0534B4 00000000 */ nop -/* 087FE8 7F0534B8 0007000D */ break 7 -.L7F0534BC: -/* 087FEC 7F0534BC 2401FFFF */ li $at, -1 -/* 087FF0 7F0534C0 17210004 */ bne $t9, $at, .L7F0534D4 -/* 087FF4 7F0534C4 3C018000 */ lui $at, 0x8000 -/* 087FF8 7F0534C8 15E10002 */ bne $t7, $at, .L7F0534D4 -/* 087FFC 7F0534CC 00000000 */ nop -/* 088000 7F0534D0 0006000D */ break 6 -.L7F0534D4: -/* 088004 7F0534D4 84F9000A */ lh $t9, 0xa($a3) -/* 088008 7F0534D8 84C3000A */ lh $v1, 0xa($a2) -/* 08800C 7F0534DC 84C50000 */ lh $a1, ($a2) -/* 088010 7F0534E0 0323C023 */ subu $t8, $t9, $v1 -/* 088014 7F0534E4 01A57823 */ subu $t7, $t5, $a1 -/* 088018 7F0534E8 01F80019 */ multu $t7, $t8 -/* 08801C 7F0534EC 84F90000 */ lh $t9, ($a3) -/* 088020 7F0534F0 03257823 */ subu $t7, $t9, $a1 -/* 088024 7F0534F4 00007012 */ mflo $t6 -/* 088028 7F0534F8 00000000 */ nop -/* 08802C 7F0534FC 00000000 */ nop -/* 088030 7F053500 01CF001A */ div $zero, $t6, $t7 -/* 088034 7F053504 0000C012 */ mflo $t8 -/* 088038 7F053508 0303C821 */ addu $t9, $t8, $v1 -/* 08803C 7F05350C A579000A */ sh $t9, 0xa($t3) -/* 088040 7F053510 15E00002 */ bnez $t7, .L7F05351C -/* 088044 7F053514 00000000 */ nop -/* 088048 7F053518 0007000D */ break 7 -.L7F05351C: -/* 08804C 7F05351C 2401FFFF */ li $at, -1 -/* 088050 7F053520 15E10004 */ bne $t7, $at, .L7F053534 -/* 088054 7F053524 3C018000 */ lui $at, 0x8000 -/* 088058 7F053528 15C10002 */ bne $t6, $at, .L7F053534 -/* 08805C 7F05352C 00000000 */ nop -/* 088060 7F053530 0006000D */ break 6 -.L7F053534: -/* 088064 7F053534 A56D0000 */ sh $t5, ($t3) -.L7F053538: -/* 088068 7F053538 1654FE52 */ bne $s2, $s4, .L7F052E84 -/* 08806C 7F05353C 02401825 */ move $v1, $s2 -/* 088070 7F053540 86A2000C */ lh $v0, 0xc($s5) -/* 088074 7F053544 27DE0004 */ addiu $fp, $fp, 4 -/* 088078 7F053548 04410003 */ bgez $v0, .L7F053558 -/* 08807C 7F05354C 00027083 */ sra $t6, $v0, 2 -/* 088080 7F053550 24410003 */ addiu $at, $v0, 3 -/* 088084 7F053554 00017083 */ sra $t6, $at, 2 -.L7F053558: -/* 088088 7F053558 000E1880 */ sll $v1, $t6, 2 -/* 08808C 7F05355C 03C3082A */ slt $at, $fp, $v1 -/* 088090 7F053560 5420FE47 */ bnezl $at, .L7F052E80 -/* 088094 7F053564 00001825 */ move $v1, $zero -.L7F053568: -/* 088098 7F053568 8FBF003C */ lw $ra, 0x3c($sp) -.L7F05356C: -/* 08809C 7F05356C 8FB00018 */ lw $s0, 0x18($sp) -/* 0880A0 7F053570 8FB1001C */ lw $s1, 0x1c($sp) -/* 0880A4 7F053574 8FB20020 */ lw $s2, 0x20($sp) -/* 0880A8 7F053578 8FB30024 */ lw $s3, 0x24($sp) -/* 0880AC 7F05357C 8FB40028 */ lw $s4, 0x28($sp) -/* 0880B0 7F053580 8FB5002C */ lw $s5, 0x2c($sp) -/* 0880B4 7F053584 8FB60030 */ lw $s6, 0x30($sp) -/* 0880B8 7F053588 8FB70034 */ lw $s7, 0x34($sp) -/* 0880BC 7F05358C 8FBE0038 */ lw $fp, 0x38($sp) -/* 0880C0 7F053590 03E00008 */ jr $ra -/* 0880C4 7F053594 27BD0058 */ addiu $sp, $sp, 0x58 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F053598(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F053598 -/* 0880C8 7F053598 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0880CC 7F05359C AFBF0014 */ sw $ra, 0x14($sp) -/* 0880D0 7F0535A0 8C8600F0 */ lw $a2, 0xf0($a0) -/* 0880D4 7F0535A4 04C00003 */ bltz $a2, .L7F0535B4 -/* 0880D8 7F0535A8 00C02025 */ move $a0, $a2 -/* 0880DC 7F0535AC 0FC2E76F */ jal sub_GAME_7F0B9DBC -/* 0880E0 7F0535B0 24050001 */ li $a1, 1 -.L7F0535B4: -/* 0880E4 7F0535B4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0880E8 7F0535B8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0880EC 7F0535BC 03E00008 */ jr $ra -/* 0880F0 7F0535C0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0535C4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0535C4 -/* 0880F4 7F0535C4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0880F8 7F0535C8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0880FC 7F0535CC 8C8600F0 */ lw $a2, 0xf0($a0) -/* 088100 7F0535D0 04C00003 */ bltz $a2, .L7F0535E0 -/* 088104 7F0535D4 00C02025 */ move $a0, $a2 -/* 088108 7F0535D8 0FC2E76F */ jal sub_GAME_7F0B9DBC -/* 08810C 7F0535DC 00002825 */ move $a1, $zero -.L7F0535E0: -/* 088110 7F0535E0 8FBF0014 */ lw $ra, 0x14($sp) -/* 088114 7F0535E4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 088118 7F0535E8 03E00008 */ jr $ra -/* 08811C 7F0535EC 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void initialize_door(void) { - -} -#else -GLOBAL_ASM( -.text -glabel initialize_door -/* 088120 7F0535F0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 088124 7F0535F4 AFBF001C */ sw $ra, 0x1c($sp) -/* 088128 7F0535F8 AFB00014 */ sw $s0, 0x14($sp) -/* 08812C 7F0535FC 00808025 */ move $s0, $a0 -/* 088130 7F053600 AFB10018 */ sw $s1, 0x18($sp) -/* 088134 7F053604 AFA50034 */ sw $a1, 0x34($sp) -/* 088138 7F053608 AFA60038 */ sw $a2, 0x38($sp) -/* 08813C 7F05360C 0FC101C7 */ jal sub_GAME_7F04071C -/* 088140 7F053610 AFA7003C */ sw $a3, 0x3c($sp) -/* 088144 7F053614 860E0004 */ lh $t6, 4($s0) -/* 088148 7F053618 3C018004 */ lui $at, %hi(PitemZ_entries+8) -/* 08814C 7F05361C 00408825 */ move $s1, $v0 -/* 088150 7F053620 000E7880 */ sll $t7, $t6, 2 -/* 088154 7F053624 01EE7823 */ subu $t7, $t7, $t6 -/* 088158 7F053628 000F7880 */ sll $t7, $t7, 2 -/* 08815C 7F05362C 002F0821 */ addu $at, $at, $t7 -/* 088160 7F053630 C424A230 */ lwc1 $f4, %lo(PitemZ_entries+8)($at) -/* 088164 7F053634 24040050 */ li $a0, 80 -/* 088168 7F053638 24050004 */ li $a1, 4 -/* 08816C 7F05363C 0C0025C8 */ jal allocate_bytes_in_bank -/* 088170 7F053640 E7A40028 */ swc1 $f4, 0x28($sp) -/* 088174 7F053644 AE020068 */ sw $v0, 0x68($s0) -/* 088178 7F053648 26050018 */ addiu $a1, $s0, 0x18 -/* 08817C 7F05364C AFA50020 */ sw $a1, 0x20($sp) -/* 088180 7F053650 0FC16008 */ jal sub_GAME_7F058020 -/* 088184 7F053654 8FA40038 */ lw $a0, 0x38($sp) -/* 088188 7F053658 8FA50020 */ lw $a1, 0x20($sp) -/* 08818C 7F05365C 0FC1629F */ jal matrix_multiply_A1_by_F12 -/* 088190 7F053660 C7AC0028 */ lwc1 $f12, 0x28($sp) -/* 088194 7F053664 8FA20040 */ lw $v0, 0x40($sp) -/* 088198 7F053668 8E180008 */ lw $t8, 8($s0) -/* 08819C 7F05366C 44802000 */ mtc1 $zero, $f4 -/* 0881A0 7F053670 C4460000 */ lwc1 $f6, ($v0) -/* 0881A4 7F053674 0018C800 */ sll $t9, $t8, 0 -/* 0881A8 7F053678 E60600A8 */ swc1 $f6, 0xa8($s0) -/* 0881AC 7F05367C C4480004 */ lwc1 $f8, 4($v0) -/* 0881B0 7F053680 E60800AC */ swc1 $f8, 0xac($s0) -/* 0881B4 7F053684 C44A0008 */ lwc1 $f10, 8($v0) -/* 0881B8 7F053688 07210004 */ bgez $t9, .L7F05369C -/* 0881BC 7F05368C E60A00B0 */ swc1 $f10, 0xb0($s0) -/* 0881C0 7F053690 C6100084 */ lwc1 $f16, 0x84($s0) -/* 0881C4 7F053694 10000004 */ b .L7F0536A8 -/* 0881C8 7F053698 E61000B4 */ swc1 $f16, 0xb4($s0) -.L7F05369C: -/* 0881CC 7F05369C 44809000 */ mtc1 $zero, $f18 -/* 0881D0 7F0536A0 00000000 */ nop -/* 0881D4 7F0536A4 E61200B4 */ swc1 $f18, 0xb4($s0) -.L7F0536A8: -/* 0881D8 7F0536A8 96080098 */ lhu $t0, 0x98($s0) -/* 0881DC 7F0536AC E60400B8 */ swc1 $f4, 0xb8($s0) -/* 0881E0 7F0536B0 A20000BC */ sb $zero, 0xbc($s0) -/* 0881E4 7F0536B4 31090004 */ andi $t1, $t0, 4 -/* 0881E8 7F0536B8 A20000BD */ sb $zero, 0xbd($s0) -/* 0881EC 7F0536BC 1120000E */ beqz $t1, .L7F0536F8 -/* 0881F0 7F0536C0 AE0000C8 */ sw $zero, 0xc8($s0) -/* 0881F4 7F0536C4 8E0A0014 */ lw $t2, 0x14($s0) -/* 0881F8 7F0536C8 24050004 */ li $a1, 4 -/* 0881FC 7F0536CC 8D4B0008 */ lw $t3, 8($t2) -/* 088200 7F0536D0 8D6C0000 */ lw $t4, ($t3) -/* 088204 7F0536D4 8D8D0014 */ lw $t5, 0x14($t4) -/* 088208 7F0536D8 8DAE0014 */ lw $t6, 0x14($t5) -/* 08820C 7F0536DC 8DC20004 */ lw $v0, 4($t6) -/* 088210 7F0536E0 8444000C */ lh $a0, 0xc($v0) -/* 088214 7F0536E4 00047900 */ sll $t7, $a0, 4 -/* 088218 7F0536E8 0C0025C8 */ jal allocate_bytes_in_bank -/* 08821C 7F0536EC 01E02025 */ move $a0, $t7 -/* 088220 7F0536F0 10000002 */ b .L7F0536FC -/* 088224 7F0536F4 AE0200CC */ sw $v0, 0xcc($s0) -.L7F0536F8: -/* 088228 7F0536F8 AE0000CC */ sw $zero, 0xcc($s0) -.L7F0536FC: -/* 08822C 7F0536FC 8FA30034 */ lw $v1, 0x34($sp) -/* 088230 7F053700 8FA20044 */ lw $v0, 0x44($sp) -/* 088234 7F053704 2418FFFF */ li $t8, -1 -/* 088238 7F053708 AE1800F0 */ sw $t8, 0xf0($s0) -/* 08823C 7F05370C AE0000F4 */ sw $zero, 0xf4($s0) -/* 088240 7F053710 AE0000F8 */ sw $zero, 0xf8($s0) -/* 088244 7F053714 24190002 */ li $t9, 2 -/* 088248 7F053718 A2390000 */ sb $t9, ($s1) -/* 08824C 7F05371C AE300004 */ sw $s0, 4($s1) -/* 088250 7F053720 C4660000 */ lwc1 $f6, ($v1) -/* 088254 7F053724 02002025 */ move $a0, $s0 -/* 088258 7F053728 E6260008 */ swc1 $f6, 8($s1) -/* 08825C 7F05372C C4680004 */ lwc1 $f8, 4($v1) -/* 088260 7F053730 E628000C */ swc1 $f8, 0xc($s1) -/* 088264 7F053734 C46A0008 */ lwc1 $f10, 8($v1) -/* 088268 7F053738 E62A0010 */ swc1 $f10, 0x10($s1) -/* 08826C 7F05373C 8FA8003C */ lw $t0, 0x3c($sp) -/* 088270 7F053740 AE280014 */ sw $t0, 0x14($s1) -/* 088274 7F053744 C4500000 */ lwc1 $f16, ($v0) -/* 088278 7F053748 8E090008 */ lw $t1, 8($s0) -/* 08827C 7F05374C E6100058 */ swc1 $f16, 0x58($s0) -/* 088280 7F053750 C4520004 */ lwc1 $f18, 4($v0) -/* 088284 7F053754 352A0100 */ ori $t2, $t1, 0x100 -/* 088288 7F053758 E612005C */ swc1 $f18, 0x5c($s0) -/* 08828C 7F05375C C4440008 */ lwc1 $f4, 8($v0) -/* 088290 7F053760 AE0A0008 */ sw $t2, 8($s0) -/* 088294 7F053764 0FC14AC0 */ jal sub_GAME_7F052B00 -/* 088298 7F053768 E6040060 */ swc1 $f4, 0x60($s0) -/* 08829C 7F05376C 0FC14B63 */ jal sub_GAME_7F052D8C -/* 0882A0 7F053770 02002025 */ move $a0, $s0 -/* 0882A4 7F053774 8E040010 */ lw $a0, 0x10($s0) -/* 0882A8 7F053778 0FC100AD */ jal sub_GAME_7F0402B4 -/* 0882AC 7F05377C 2605007C */ addiu $a1, $s0, 0x7c -/* 0882B0 7F053780 920B007C */ lbu $t3, 0x7c($s0) -/* 0882B4 7F053784 920C007D */ lbu $t4, 0x7d($s0) -/* 0882B8 7F053788 920D007E */ lbu $t5, 0x7e($s0) -/* 0882BC 7F05378C 920E007F */ lbu $t6, 0x7f($s0) -/* 0882C0 7F053790 A20B0078 */ sb $t3, 0x78($s0) -/* 0882C4 7F053794 A20C0079 */ sb $t4, 0x79($s0) -/* 0882C8 7F053798 A20D007A */ sb $t5, 0x7a($s0) -/* 0882CC 7F05379C A20E007B */ sb $t6, 0x7b($s0) -/* 0882D0 7F0537A0 8FBF001C */ lw $ra, 0x1c($sp) -/* 0882D4 7F0537A4 02201025 */ move $v0, $s1 -/* 0882D8 7F0537A8 8FB10018 */ lw $s1, 0x18($sp) -/* 0882DC 7F0537AC 8FB00014 */ lw $s0, 0x14($sp) -/* 0882E0 7F0537B0 03E00008 */ jr $ra -/* 0882E4 7F0537B4 27BD0030 */ addiu $sp, $sp, 0x30 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0537B8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0537B8 -/* 0882E8 7F0537B8 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 0882EC 7F0537BC 44810000 */ mtc1 $at, $f0 -/* 0882F0 7F0537C0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0882F4 7F0537C4 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 0882F8 7F0537C8 4600603E */ c.le.s $f12, $f0 -/* 0882FC 7F0537CC AFA60028 */ sw $a2, 0x28($sp) -/* 088300 7F0537D0 46006506 */ mov.s $f20, $f12 -/* 088304 7F0537D4 AFBF001C */ sw $ra, 0x1c($sp) -/* 088308 7F0537D8 45000003 */ bc1f .L7F0537E8 -/* 08830C 7F0537DC C7A40028 */ lwc1 $f4, 0x28($sp) -/* 088310 7F0537E0 10000027 */ b .L7F053880 -/* 088314 7F0537E4 24037FFF */ li $v1, 32767 -.L7F0537E8: -/* 088318 7F0537E8 4614203E */ c.le.s $f4, $f20 -/* 08831C 7F0537EC 00000000 */ nop -/* 088320 7F0537F0 45020004 */ bc1fl .L7F053804 -/* 088324 7F0537F4 4614703E */ c.le.s $f14, $f20 -/* 088328 7F0537F8 10000021 */ b .L7F053880 -/* 08832C 7F0537FC 00001825 */ move $v1, $zero -/* 088330 7F053800 4614703E */ c.le.s $f14, $f20 -.L7F053804: -/* 088334 7F053804 C7A60028 */ lwc1 $f6, 0x28($sp) -/* 088338 7F053808 3C018005 */ lui $at, %hi(D_80053340) -/* 08833C 7F05380C 4502000B */ bc1fl .L7F05383C -/* 088340 7F053810 4600A301 */ sub.s $f12, $f20, $f0 -/* 088344 7F053814 46143201 */ sub.s $f8, $f6, $f20 -/* 088348 7F053818 C42A3340 */ lwc1 $f10, %lo(D_80053340)($at) -/* 08834C 7F05381C 460E3481 */ sub.s $f18, $f6, $f14 -/* 088350 7F053820 460A4402 */ mul.s $f16, $f8, $f10 -/* 088354 7F053824 46128103 */ div.s $f4, $f16, $f18 -/* 088358 7F053828 4600220D */ trunc.w.s $f8, $f4 -/* 08835C 7F05382C 44034000 */ mfc1 $v1, $f8 -/* 088360 7F053830 10000014 */ b .L7F053884 -/* 088364 7F053834 8FBF001C */ lw $ra, 0x1c($sp) -/* 088368 7F053838 4600A301 */ sub.s $f12, $f20, $f0 -.L7F05383C: -/* 08836C 7F05383C 0C007DF8 */ jal sqrtf -/* 088370 7F053840 E7AE0024 */ swc1 $f14, 0x24($sp) -/* 088374 7F053844 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 088378 7F053848 44815000 */ mtc1 $at, $f10 -/* 08837C 7F05384C C7AE0024 */ lwc1 $f14, 0x24($sp) -/* 088380 7F053850 46000506 */ mov.s $f20, $f0 -/* 088384 7F053854 0C007DF8 */ jal sqrtf -/* 088388 7F053858 460A7301 */ sub.s $f12, $f14, $f10 -/* 08838C 7F05385C 3C018005 */ lui $at, %hi(D_80053344) -/* 088390 7F053860 C4263344 */ lwc1 $f6, %lo(D_80053344)($at) -/* 088394 7F053864 24197FFF */ li $t9, 32767 -/* 088398 7F053868 4606A402 */ mul.s $f16, $f20, $f6 -/* 08839C 7F05386C 46008483 */ div.s $f18, $f16, $f0 -/* 0883A0 7F053870 4600910D */ trunc.w.s $f4, $f18 -/* 0883A4 7F053874 44182000 */ mfc1 $t8, $f4 -/* 0883A8 7F053878 00000000 */ nop -/* 0883AC 7F05387C 03381823 */ subu $v1, $t9, $t8 -.L7F053880: -/* 0883B0 7F053880 8FBF001C */ lw $ra, 0x1c($sp) -.L7F053884: -/* 0883B4 7F053884 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 0883B8 7F053888 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0883BC 7F05388C 03E00008 */ jr $ra -/* 0883C0 7F053890 00601025 */ move $v0, $v1 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F053894(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F053894 -/* 0883C4 7F053894 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0883C8 7F053898 AFBF002C */ sw $ra, 0x2c($sp) -/* 0883CC 7F05389C AFB10020 */ sw $s1, 0x20($sp) -/* 0883D0 7F0538A0 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 0883D4 7F0538A4 AFA60038 */ sw $a2, 0x38($sp) -/* 0883D8 7F0538A8 00808825 */ move $s1, $a0 -/* 0883DC 7F0538AC AFB30028 */ sw $s3, 0x28($sp) -/* 0883E0 7F0538B0 AFB20024 */ sw $s2, 0x24($sp) -/* 0883E4 7F0538B4 AFB0001C */ sw $s0, 0x1c($sp) -/* 0883E8 7F0538B8 AFA50034 */ sw $a1, 0x34($sp) -/* 0883EC 7F0538BC 0FC26919 */ jal get_num_players -/* 0883F0 7F0538C0 C7B40038 */ lwc1 $f20, 0x38($sp) -/* 0883F4 7F0538C4 1840001D */ blez $v0, .L7F05393C -/* 0883F8 7F0538C8 3C0E8008 */ lui $t6, %hi(ptr_BONDdata_p1) -/* 0883FC 7F0538CC 25D09EE0 */ addiu $s0, $t6, %lo(ptr_BONDdata_p1) -/* 088400 7F0538D0 00027880 */ sll $t7, $v0, 2 -/* 088404 7F0538D4 01F09021 */ addu $s2, $t7, $s0 -/* 088408 7F0538D8 8E180000 */ lw $t8, ($s0) -.L7F0538DC: -/* 08840C 7F0538DC C6260000 */ lwc1 $f6, ($s1) -/* 088410 7F0538E0 C62A0004 */ lwc1 $f10, 4($s1) -/* 088414 7F0538E4 8F0200A8 */ lw $v0, 0xa8($t8) -/* 088418 7F0538E8 C6320008 */ lwc1 $f18, 8($s1) -/* 08841C 7F0538EC C4440008 */ lwc1 $f4, 8($v0) -/* 088420 7F0538F0 C448000C */ lwc1 $f8, 0xc($v0) -/* 088424 7F0538F4 C4500010 */ lwc1 $f16, 0x10($v0) -/* 088428 7F0538F8 46062001 */ sub.s $f0, $f4, $f6 -/* 08842C 7F0538FC 460A4081 */ sub.s $f2, $f8, $f10 -/* 088430 7F053900 46000102 */ mul.s $f4, $f0, $f0 -/* 088434 7F053904 46128381 */ sub.s $f14, $f16, $f18 -/* 088438 7F053908 46021182 */ mul.s $f6, $f2, $f2 -/* 08843C 7F05390C 46062200 */ add.s $f8, $f4, $f6 -/* 088440 7F053910 460E7282 */ mul.s $f10, $f14, $f14 -/* 088444 7F053914 0C007DF8 */ jal sqrtf -/* 088448 7F053918 460A4300 */ add.s $f12, $f8, $f10 -/* 08844C 7F05391C 4614003C */ c.lt.s $f0, $f20 -/* 088450 7F053920 26100004 */ addiu $s0, $s0, 4 -/* 088454 7F053924 0212082B */ sltu $at, $s0, $s2 -/* 088458 7F053928 45000002 */ bc1f .L7F053934 -/* 08845C 7F05392C 00000000 */ nop -/* 088460 7F053930 46000506 */ mov.s $f20, $f0 -.L7F053934: -/* 088464 7F053934 5420FFE9 */ bnezl $at, .L7F0538DC -/* 088468 7F053938 8E180000 */ lw $t8, ($s0) -.L7F05393C: -/* 08846C 7F05393C 4600A306 */ mov.s $f12, $f20 -/* 088470 7F053940 C7AE0034 */ lwc1 $f14, 0x34($sp) -/* 088474 7F053944 0FC14DEE */ jal sub_GAME_7F0537B8 -/* 088478 7F053948 8FA60038 */ lw $a2, 0x38($sp) -/* 08847C 7F05394C 8FBF002C */ lw $ra, 0x2c($sp) -/* 088480 7F053950 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 088484 7F053954 8FB0001C */ lw $s0, 0x1c($sp) -/* 088488 7F053958 8FB10020 */ lw $s1, 0x20($sp) -/* 08848C 7F05395C 8FB20024 */ lw $s2, 0x24($sp) -/* 088490 7F053960 8FB30028 */ lw $s3, 0x28($sp) -/* 088494 7F053964 03E00008 */ jr $ra -/* 088498 7F053968 27BD0030 */ addiu $sp, $sp, 0x30 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F05396C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05396C -/* 08849C 7F05396C 44866000 */ mtc1 $a2, $f12 -/* 0884A0 7F053970 44877000 */ mtc1 $a3, $f14 -/* 0884A4 7F053974 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0884A8 7F053978 AFA40018 */ sw $a0, 0x18($sp) -/* 0884AC 7F05397C AFA5001C */ sw $a1, 0x1c($sp) -/* 0884B0 7F053980 00A02025 */ move $a0, $a1 -/* 0884B4 7F053984 AFBF0014 */ sw $ra, 0x14($sp) -/* 0884B8 7F053988 44056000 */ mfc1 $a1, $f12 -/* 0884BC 7F05398C 44067000 */ mfc1 $a2, $f14 -/* 0884C0 7F053990 0FC14E25 */ jal sub_GAME_7F053894 -/* 0884C4 7F053994 00000000 */ nop -/* 0884C8 7F053998 8FA40018 */ lw $a0, 0x18($sp) -/* 0884CC 7F05399C 24050008 */ li $a1, 8 -/* 0884D0 7F0539A0 0C002461 */ jal sfx_c_70009184 -/* 0884D4 7F0539A4 00403025 */ move $a2, $v0 -/* 0884D8 7F0539A8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0884DC 7F0539AC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0884E0 7F0539B0 03E00008 */ jr $ra -/* 0884E4 7F0539B4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0539B8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0539B8 -/* 0884E8 7F0539B8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0884EC 7F0539BC AFBF0014 */ sw $ra, 0x14($sp) -/* 0884F0 7F0539C0 3C018005 */ lui $at, %hi(D_80053348) -/* 0884F4 7F0539C4 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb -/* 0884F8 7F0539C8 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 -/* 0884FC 7F0539CC 0FC14DEE */ jal sub_GAME_7F0537B8 -/* 088500 7F0539D0 C42E3348 */ lwc1 $f14, %lo(D_80053348)($at) -/* 088504 7F0539D4 8FBF0014 */ lw $ra, 0x14($sp) -/* 088508 7F0539D8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08850C 7F0539DC 03E00008 */ jr $ra -/* 088510 7F0539E0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0539E4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0539E4 -/* 088514 7F0539E4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 088518 7F0539E8 AFBF0014 */ sw $ra, 0x14($sp) -/* 08851C 7F0539EC 3C05459C */ lui $a1, (0x459C4000 >> 16) # lui $a1, 0x459c -/* 088520 7F0539F0 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb -/* 088524 7F0539F4 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 -/* 088528 7F0539F8 0FC14E25 */ jal sub_GAME_7F053894 -/* 08852C 7F0539FC 34A54000 */ ori $a1, (0x459C4000 & 0xFFFF) # ori $a1, $a1, 0x4000 -/* 088530 7F053A00 8FBF0014 */ lw $ra, 0x14($sp) -/* 088534 7F053A04 27BD0018 */ addiu $sp, $sp, 0x18 -/* 088538 7F053A08 03E00008 */ jr $ra -/* 08853C 7F053A0C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F053A10(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F053A10 -/* 088540 7F053A10 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 088544 7F053A14 AFBF0014 */ sw $ra, 0x14($sp) -/* 088548 7F053A18 3C06459C */ lui $a2, (0x459C4000 >> 16) # lui $a2, 0x459c -/* 08854C 7F053A1C 3C0745BB */ lui $a3, (0x45BB8000 >> 16) # lui $a3, 0x45bb -/* 088550 7F053A20 34E78000 */ ori $a3, (0x45BB8000 & 0xFFFF) # ori $a3, $a3, 0x8000 -/* 088554 7F053A24 0FC14E5B */ jal sub_GAME_7F05396C -/* 088558 7F053A28 34C64000 */ ori $a2, (0x459C4000 & 0xFFFF) # ori $a2, $a2, 0x4000 -/* 08855C 7F053A2C 8FBF0014 */ lw $ra, 0x14($sp) -/* 088560 7F053A30 27BD0018 */ addiu $sp, $sp, 0x18 -/* 088564 7F053A34 03E00008 */ jr $ra -/* 088568 7F053A38 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F053A3C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F053A3C -/* 08856C 7F053A3C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 088570 7F053A40 AFBF0014 */ sw $ra, 0x14($sp) -/* 088574 7F053A44 AFA40028 */ sw $a0, 0x28($sp) -/* 088578 7F053A48 8C8500F4 */ lw $a1, 0xf4($a0) -/* 08857C 7F053A4C 0005182B */ sltu $v1, $zero, $a1 -/* 088580 7F053A50 50600005 */ beql $v1, $zero, .L7F053A68 -/* 088584 7F053A54 8FAF0028 */ lw $t7, 0x28($sp) -/* 088588 7F053A58 0C00237C */ jal sfxGetArg0Unk3F -/* 08858C 7F053A5C 00A02025 */ move $a0, $a1 -/* 088590 7F053A60 0002182B */ sltu $v1, $zero, $v0 -/* 088594 7F053A64 8FAF0028 */ lw $t7, 0x28($sp) -.L7F053A68: -/* 088598 7F053A68 AFA30024 */ sw $v1, 0x24($sp) -/* 08859C 7F053A6C 8DE400F8 */ lw $a0, 0xf8($t7) -/* 0885A0 7F053A70 0004182B */ sltu $v1, $zero, $a0 -/* 0885A4 7F053A74 50600005 */ beql $v1, $zero, .L7F053A8C -/* 0885A8 7F053A78 8FB80024 */ lw $t8, 0x24($sp) -/* 0885AC 7F053A7C 0C00237C */ jal sfxGetArg0Unk3F -/* 0885B0 7F053A80 00000000 */ nop -/* 0885B4 7F053A84 0002182B */ sltu $v1, $zero, $v0 -/* 0885B8 7F053A88 8FB80024 */ lw $t8, 0x24($sp) -.L7F053A8C: -/* 0885BC 7F053A8C 8FB90028 */ lw $t9, 0x28($sp) -/* 0885C0 7F053A90 57000004 */ bnezl $t8, .L7F053AA4 -/* 0885C4 7F053A94 8F240010 */ lw $a0, 0x10($t9) -/* 0885C8 7F053A98 5060001A */ beql $v1, $zero, .L7F053B04 -/* 0885CC 7F053A9C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0885D0 7F053AA0 8F240010 */ lw $a0, 0x10($t9) -.L7F053AA4: -/* 0885D4 7F053AA4 AFA30018 */ sw $v1, 0x18($sp) -/* 0885D8 7F053AA8 0FC14E79 */ jal sub_GAME_7F0539E4 -/* 0885DC 7F053AAC 24840008 */ addiu $a0, $a0, 8 -/* 0885E0 7F053AB0 0FC2FF01 */ jal get_controls_locked_flag -/* 0885E4 7F053AB4 AFA2001C */ sw $v0, 0x1c($sp) -/* 0885E8 7F053AB8 10400002 */ beqz $v0, .L7F053AC4 -/* 0885EC 7F053ABC 8FA30018 */ lw $v1, 0x18($sp) -/* 0885F0 7F053AC0 AFA0001C */ sw $zero, 0x1c($sp) -.L7F053AC4: -/* 0885F4 7F053AC4 8FA80024 */ lw $t0, 0x24($sp) -/* 0885F8 7F053AC8 8FA90028 */ lw $t1, 0x28($sp) -/* 0885FC 7F053ACC 24050008 */ li $a1, 8 -/* 088600 7F053AD0 11000005 */ beqz $t0, .L7F053AE8 -/* 088604 7F053AD4 8FA6001C */ lw $a2, 0x1c($sp) -/* 088608 7F053AD8 8D2400F4 */ lw $a0, 0xf4($t1) -/* 08860C 7F053ADC 0C002461 */ jal sfx_c_70009184 -/* 088610 7F053AE0 AFA30018 */ sw $v1, 0x18($sp) -/* 088614 7F053AE4 8FA30018 */ lw $v1, 0x18($sp) -.L7F053AE8: -/* 088618 7F053AE8 10600005 */ beqz $v1, .L7F053B00 -/* 08861C 7F053AEC 8FAA0028 */ lw $t2, 0x28($sp) -/* 088620 7F053AF0 8D4400F8 */ lw $a0, 0xf8($t2) -/* 088624 7F053AF4 24050008 */ li $a1, 8 -/* 088628 7F053AF8 0C002461 */ jal sfx_c_70009184 -/* 08862C 7F053AFC 8FA6001C */ lw $a2, 0x1c($sp) -.L7F053B00: -/* 088630 7F053B00 8FBF0014 */ lw $ra, 0x14($sp) -.L7F053B04: -/* 088634 7F053B04 27BD0028 */ addiu $sp, $sp, 0x28 -/* 088638 7F053B08 03E00008 */ jr $ra -/* 08863C 7F053B0C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F053B10(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F053B10 -/* 088640 7F053B10 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 088644 7F053B14 AFBF0014 */ sw $ra, 0x14($sp) -/* 088648 7F053B18 AFA40018 */ sw $a0, 0x18($sp) -/* 08864C 7F053B1C 8C8500F4 */ lw $a1, 0xf4($a0) -/* 088650 7F053B20 50A00008 */ beql $a1, $zero, .L7F053B44 -/* 088654 7F053B24 8FB80018 */ lw $t8, 0x18($sp) -/* 088658 7F053B28 0C00237C */ jal sfxGetArg0Unk3F -/* 08865C 7F053B2C 00A02025 */ move $a0, $a1 -/* 088660 7F053B30 10400003 */ beqz $v0, .L7F053B40 -/* 088664 7F053B34 8FAF0018 */ lw $t7, 0x18($sp) -/* 088668 7F053B38 0C002408 */ jal sfxDeactivate -/* 08866C 7F053B3C 8DE400F4 */ lw $a0, 0xf4($t7) -.L7F053B40: -/* 088670 7F053B40 8FB80018 */ lw $t8, 0x18($sp) -.L7F053B44: -/* 088674 7F053B44 8F0400F8 */ lw $a0, 0xf8($t8) -/* 088678 7F053B48 50800008 */ beql $a0, $zero, .L7F053B6C -/* 08867C 7F053B4C 8FBF0014 */ lw $ra, 0x14($sp) -/* 088680 7F053B50 0C00237C */ jal sfxGetArg0Unk3F -/* 088684 7F053B54 00000000 */ nop -/* 088688 7F053B58 10400003 */ beqz $v0, .L7F053B68 -/* 08868C 7F053B5C 8FB90018 */ lw $t9, 0x18($sp) -/* 088690 7F053B60 0C002408 */ jal sfxDeactivate -/* 088694 7F053B64 8F2400F8 */ lw $a0, 0xf8($t9) -.L7F053B68: -/* 088698 7F053B68 8FBF0014 */ lw $ra, 0x14($sp) -.L7F053B6C: -/* 08869C 7F053B6C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0886A0 7F053B70 03E00008 */ jr $ra -/* 0886A4 7F053B74 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void play_door_opening_soundeffect_0(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:8005334C*/ -glabel door_opening_sound_table_0 -.word .L7F053BEC -.word .L7F053C2C -.word .L7F053C6C -.word .L7F053CAC -.word .L7F053CEC -.word .L7F053D08 -.word .L7F053D24 -.word .L7F053D64 -.word .L7F053DA4 -.word .L7F053DC4 -.word .L7F053DE0 -.word .L7F053DFC -.word .L7F053E18 -.word .L7F053E58 -.word .L7F053E78 -.word .L7F053E98 -.word .L7F053EB4 - -.text -glabel play_door_opening_soundeffect_0 -/* 0886A8 7F053B78 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0886AC 7F053B7C AFBF0014 */ sw $ra, 0x14($sp) -/* 0886B0 7F053B80 AFA40020 */ sw $a0, 0x20($sp) -/* 0886B4 7F053B84 AFA0001C */ sw $zero, 0x1c($sp) -/* 0886B8 7F053B88 0FC14EC4 */ jal sub_GAME_7F053B10 -/* 0886BC 7F053B8C AFA00018 */ sw $zero, 0x18($sp) -/* 0886C0 7F053B90 8FAE0020 */ lw $t6, 0x20($sp) -/* 0886C4 7F053B94 8FA70018 */ lw $a3, 0x18($sp) -/* 0886C8 7F053B98 8FB80020 */ lw $t8, 0x20($sp) -/* 0886CC 7F053B9C 8DCF00F4 */ lw $t7, 0xf4($t6) -/* 0886D0 7F053BA0 8FA80020 */ lw $t0, 0x20($sp) -/* 0886D4 7F053BA4 55E00004 */ bnezl $t7, .L7F053BB8 -/* 0886D8 7F053BA8 8F1900F8 */ lw $t9, 0xf8($t8) -/* 0886DC 7F053BAC 10000005 */ b .L7F053BC4 -/* 0886E0 7F053BB0 25C700F4 */ addiu $a3, $t6, 0xf4 -/* 0886E4 7F053BB4 8F1900F8 */ lw $t9, 0xf8($t8) -.L7F053BB8: -/* 0886E8 7F053BB8 57200003 */ bnezl $t9, .L7F053BC8 -/* 0886EC 7F053BBC 8D0900A4 */ lw $t1, 0xa4($t0) -/* 0886F0 7F053BC0 270700F8 */ addiu $a3, $t8, 0xf8 -.L7F053BC4: -/* 0886F4 7F053BC4 8D0900A4 */ lw $t1, 0xa4($t0) -.L7F053BC8: -/* 0886F8 7F053BC8 252AFFFF */ addiu $t2, $t1, -1 -/* 0886FC 7F053BCC 2D410011 */ sltiu $at, $t2, 0x11 -/* 088700 7F053BD0 102000D6 */ beqz $at, .L7F053F2C -/* 088704 7F053BD4 000A5080 */ sll $t2, $t2, 2 -/* 088708 7F053BD8 3C018005 */ lui $at, %hi(door_opening_sound_table_0) -/* 08870C 7F053BDC 002A0821 */ addu $at, $at, $t2 -/* 088710 7F053BE0 8C2A334C */ lw $t2, %lo(door_opening_sound_table_0)($at) -/* 088714 7F053BE4 01400008 */ jr $t2 -/* 088718 7F053BE8 00000000 */ nop -.L7F053BEC: -/* 08871C 7F053BEC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088720 7F053BF0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088724 7F053BF4 240500D2 */ li $a1, 210 -/* 088728 7F053BF8 00003025 */ move $a2, $zero -/* 08872C 7F053BFC 0C002382 */ jal play_sfx_a1 -/* 088730 7F053C00 AFA70018 */ sw $a3, 0x18($sp) -/* 088734 7F053C04 8FA70018 */ lw $a3, 0x18($sp) -/* 088738 7F053C08 AFA2001C */ sw $v0, 0x1c($sp) -/* 08873C 7F053C0C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088740 7F053C10 10E000C6 */ beqz $a3, .L7F053F2C -/* 088744 7F053C14 240500D3 */ li $a1, 211 -/* 088748 7F053C18 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08874C 7F053C1C 0C002382 */ jal play_sfx_a1 -/* 088750 7F053C20 00E03025 */ move $a2, $a3 -/* 088754 7F053C24 100000C2 */ b .L7F053F30 -/* 088758 7F053C28 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053C2C: -/* 08875C 7F053C2C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088760 7F053C30 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088764 7F053C34 240500D2 */ li $a1, 210 -/* 088768 7F053C38 00003025 */ move $a2, $zero -/* 08876C 7F053C3C 0C002382 */ jal play_sfx_a1 -/* 088770 7F053C40 AFA70018 */ sw $a3, 0x18($sp) -/* 088774 7F053C44 8FA70018 */ lw $a3, 0x18($sp) -/* 088778 7F053C48 AFA2001C */ sw $v0, 0x1c($sp) -/* 08877C 7F053C4C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088780 7F053C50 10E000B6 */ beqz $a3, .L7F053F2C -/* 088784 7F053C54 24050007 */ li $a1, 7 -/* 088788 7F053C58 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08878C 7F053C5C 0C002382 */ jal play_sfx_a1 -/* 088790 7F053C60 00E03025 */ move $a2, $a3 -/* 088794 7F053C64 100000B2 */ b .L7F053F30 -/* 088798 7F053C68 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053C6C: -/* 08879C 7F053C6C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0887A0 7F053C70 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0887A4 7F053C74 240500CA */ li $a1, 202 -/* 0887A8 7F053C78 00003025 */ move $a2, $zero -/* 0887AC 7F053C7C 0C002382 */ jal play_sfx_a1 -/* 0887B0 7F053C80 AFA70018 */ sw $a3, 0x18($sp) -/* 0887B4 7F053C84 8FA70018 */ lw $a3, 0x18($sp) -/* 0887B8 7F053C88 AFA2001C */ sw $v0, 0x1c($sp) -/* 0887BC 7F053C8C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0887C0 7F053C90 10E000A6 */ beqz $a3, .L7F053F2C -/* 0887C4 7F053C94 240500CC */ li $a1, 204 -/* 0887C8 7F053C98 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0887CC 7F053C9C 0C002382 */ jal play_sfx_a1 -/* 0887D0 7F053CA0 00E03025 */ move $a2, $a3 -/* 0887D4 7F053CA4 100000A2 */ b .L7F053F30 -/* 0887D8 7F053CA8 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053CAC: -/* 0887DC 7F053CAC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0887E0 7F053CB0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0887E4 7F053CB4 240500D6 */ li $a1, 214 -/* 0887E8 7F053CB8 00003025 */ move $a2, $zero -/* 0887EC 7F053CBC 0C002382 */ jal play_sfx_a1 -/* 0887F0 7F053CC0 AFA70018 */ sw $a3, 0x18($sp) -/* 0887F4 7F053CC4 8FA70018 */ lw $a3, 0x18($sp) -/* 0887F8 7F053CC8 AFA2001C */ sw $v0, 0x1c($sp) -/* 0887FC 7F053CCC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088800 7F053CD0 10E00096 */ beqz $a3, .L7F053F2C -/* 088804 7F053CD4 240500D8 */ li $a1, 216 -/* 088808 7F053CD8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08880C 7F053CDC 0C002382 */ jal play_sfx_a1 -/* 088810 7F053CE0 00E03025 */ move $a2, $a3 -/* 088814 7F053CE4 10000092 */ b .L7F053F30 -/* 088818 7F053CE8 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053CEC: -/* 08881C 7F053CEC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088820 7F053CF0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088824 7F053CF4 240500BC */ li $a1, 188 -/* 088828 7F053CF8 0C002382 */ jal play_sfx_a1 -/* 08882C 7F053CFC 00003025 */ move $a2, $zero -/* 088830 7F053D00 1000008A */ b .L7F053F2C -/* 088834 7F053D04 AFA2001C */ sw $v0, 0x1c($sp) -.L7F053D08: -/* 088838 7F053D08 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 08883C 7F053D0C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088840 7F053D10 24050007 */ li $a1, 7 -/* 088844 7F053D14 0C002382 */ jal play_sfx_a1 -/* 088848 7F053D18 00003025 */ move $a2, $zero -/* 08884C 7F053D1C 10000083 */ b .L7F053F2C -/* 088850 7F053D20 AFA2001C */ sw $v0, 0x1c($sp) -.L7F053D24: -/* 088854 7F053D24 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088858 7F053D28 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08885C 7F053D2C 240500C0 */ li $a1, 192 -/* 088860 7F053D30 00003025 */ move $a2, $zero -/* 088864 7F053D34 0C002382 */ jal play_sfx_a1 -/* 088868 7F053D38 AFA70018 */ sw $a3, 0x18($sp) -/* 08886C 7F053D3C 8FA70018 */ lw $a3, 0x18($sp) -/* 088870 7F053D40 AFA2001C */ sw $v0, 0x1c($sp) -/* 088874 7F053D44 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088878 7F053D48 10E00078 */ beqz $a3, .L7F053F2C -/* 08887C 7F053D4C 240500BF */ li $a1, 191 -/* 088880 7F053D50 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088884 7F053D54 0C002382 */ jal play_sfx_a1 -/* 088888 7F053D58 00E03025 */ move $a2, $a3 -/* 08888C 7F053D5C 10000074 */ b .L7F053F30 -/* 088890 7F053D60 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053D64: -/* 088894 7F053D64 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088898 7F053D68 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08889C 7F053D6C 240500BC */ li $a1, 188 -/* 0888A0 7F053D70 00003025 */ move $a2, $zero -/* 0888A4 7F053D74 0C002382 */ jal play_sfx_a1 -/* 0888A8 7F053D78 AFA70018 */ sw $a3, 0x18($sp) -/* 0888AC 7F053D7C 8FA70018 */ lw $a3, 0x18($sp) -/* 0888B0 7F053D80 AFA2001C */ sw $v0, 0x1c($sp) -/* 0888B4 7F053D84 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0888B8 7F053D88 10E00068 */ beqz $a3, .L7F053F2C -/* 0888BC 7F053D8C 24050007 */ li $a1, 7 -/* 0888C0 7F053D90 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0888C4 7F053D94 0C002382 */ jal play_sfx_a1 -/* 0888C8 7F053D98 00E03025 */ move $a2, $a3 -/* 0888CC 7F053D9C 10000064 */ b .L7F053F30 -/* 0888D0 7F053DA0 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053DA4: -/* 0888D4 7F053DA4 10E00061 */ beqz $a3, .L7F053F2C -/* 0888D8 7F053DA8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0888DC 7F053DAC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0888E0 7F053DB0 240500C2 */ li $a1, 194 -/* 0888E4 7F053DB4 0C002382 */ jal play_sfx_a1 -/* 0888E8 7F053DB8 00E03025 */ move $a2, $a3 -/* 0888EC 7F053DBC 1000005C */ b .L7F053F30 -/* 0888F0 7F053DC0 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053DC4: -/* 0888F4 7F053DC4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0888F8 7F053DC8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0888FC 7F053DCC 240500C4 */ li $a1, 196 -/* 088900 7F053DD0 0C002382 */ jal play_sfx_a1 -/* 088904 7F053DD4 00003025 */ move $a2, $zero -/* 088908 7F053DD8 10000054 */ b .L7F053F2C -/* 08890C 7F053DDC AFA2001C */ sw $v0, 0x1c($sp) -.L7F053DE0: -/* 088910 7F053DE0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088914 7F053DE4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088918 7F053DE8 24050007 */ li $a1, 7 -/* 08891C 7F053DEC 0C002382 */ jal play_sfx_a1 -/* 088920 7F053DF0 00003025 */ move $a2, $zero -/* 088924 7F053DF4 1000004D */ b .L7F053F2C -/* 088928 7F053DF8 AFA2001C */ sw $v0, 0x1c($sp) -.L7F053DFC: -/* 08892C 7F053DFC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088930 7F053E00 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088934 7F053E04 240500C8 */ li $a1, 200 -/* 088938 7F053E08 0C002382 */ jal play_sfx_a1 -/* 08893C 7F053E0C 00003025 */ move $a2, $zero -/* 088940 7F053E10 10000046 */ b .L7F053F2C -/* 088944 7F053E14 AFA2001C */ sw $v0, 0x1c($sp) -.L7F053E18: -/* 088948 7F053E18 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 08894C 7F053E1C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088950 7F053E20 24050007 */ li $a1, 7 -/* 088954 7F053E24 00003025 */ move $a2, $zero -/* 088958 7F053E28 0C002382 */ jal play_sfx_a1 -/* 08895C 7F053E2C AFA70018 */ sw $a3, 0x18($sp) -/* 088960 7F053E30 8FA70018 */ lw $a3, 0x18($sp) -/* 088964 7F053E34 AFA2001C */ sw $v0, 0x1c($sp) -/* 088968 7F053E38 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 08896C 7F053E3C 10E0003B */ beqz $a3, .L7F053F2C -/* 088970 7F053E40 24050007 */ li $a1, 7 -/* 088974 7F053E44 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088978 7F053E48 0C002382 */ jal play_sfx_a1 -/* 08897C 7F053E4C 00E03025 */ move $a2, $a3 -/* 088980 7F053E50 10000037 */ b .L7F053F30 -/* 088984 7F053E54 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053E58: -/* 088988 7F053E58 10E00034 */ beqz $a3, .L7F053F2C -/* 08898C 7F053E5C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088990 7F053E60 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088994 7F053E64 240500DA */ li $a1, 218 -/* 088998 7F053E68 0C002382 */ jal play_sfx_a1 -/* 08899C 7F053E6C 00E03025 */ move $a2, $a3 -/* 0889A0 7F053E70 1000002F */ b .L7F053F30 -/* 0889A4 7F053E74 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053E78: -/* 0889A8 7F053E78 10E0002C */ beqz $a3, .L7F053F2C -/* 0889AC 7F053E7C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0889B0 7F053E80 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0889B4 7F053E84 240500E1 */ li $a1, 225 -/* 0889B8 7F053E88 0C002382 */ jal play_sfx_a1 -/* 0889BC 7F053E8C 00E03025 */ move $a2, $a3 -/* 0889C0 7F053E90 10000027 */ b .L7F053F30 -/* 0889C4 7F053E94 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053E98: -/* 0889C8 7F053E98 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0889CC 7F053E9C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0889D0 7F053EA0 240500D6 */ li $a1, 214 -/* 0889D4 7F053EA4 0C002382 */ jal play_sfx_a1 -/* 0889D8 7F053EA8 00003025 */ move $a2, $zero -/* 0889DC 7F053EAC 1000001F */ b .L7F053F2C -/* 0889E0 7F053EB0 AFA2001C */ sw $v0, 0x1c($sp) -.L7F053EB4: -/* 0889E4 7F053EB4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0889E8 7F053EB8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0889EC 7F053EBC 24050007 */ li $a1, 7 -/* 0889F0 7F053EC0 00003025 */ move $a2, $zero -/* 0889F4 7F053EC4 0C002382 */ jal play_sfx_a1 -/* 0889F8 7F053EC8 AFA70018 */ sw $a3, 0x18($sp) -/* 0889FC 7F053ECC 8FA70018 */ lw $a3, 0x18($sp) -/* 088A00 7F053ED0 10400008 */ beqz $v0, .L7F053EF4 -/* 088A04 7F053ED4 AFA2001C */ sw $v0, 0x1c($sp) -/* 088A08 7F053ED8 8FAB0020 */ lw $t3, 0x20($sp) -/* 088A0C 7F053EDC 00402025 */ move $a0, $v0 -/* 088A10 7F053EE0 8D650010 */ lw $a1, 0x10($t3) -/* 088A14 7F053EE4 AFA70018 */ sw $a3, 0x18($sp) -/* 088A18 7F053EE8 0FC14E84 */ jal sub_GAME_7F053A10 -/* 088A1C 7F053EEC 24A50008 */ addiu $a1, $a1, 8 -/* 088A20 7F053EF0 8FA70018 */ lw $a3, 0x18($sp) -.L7F053EF4: -/* 088A24 7F053EF4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088A28 7F053EF8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088A2C 7F053EFC 240500CA */ li $a1, 202 -/* 088A30 7F053F00 00003025 */ move $a2, $zero -/* 088A34 7F053F04 0C002382 */ jal play_sfx_a1 -/* 088A38 7F053F08 AFA70018 */ sw $a3, 0x18($sp) -/* 088A3C 7F053F0C 8FA70018 */ lw $a3, 0x18($sp) -/* 088A40 7F053F10 AFA2001C */ sw $v0, 0x1c($sp) -/* 088A44 7F053F14 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088A48 7F053F18 10E00004 */ beqz $a3, .L7F053F2C -/* 088A4C 7F053F1C 240500CC */ li $a1, 204 -/* 088A50 7F053F20 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088A54 7F053F24 0C002382 */ jal play_sfx_a1 -/* 088A58 7F053F28 00E03025 */ move $a2, $a3 -def_7F053BE4: -.L7F053F2C: -/* 088A5C 7F053F2C 8FAC001C */ lw $t4, 0x1c($sp) -.L7F053F30: -/* 088A60 7F053F30 8FAD0020 */ lw $t5, 0x20($sp) -/* 088A64 7F053F34 11800005 */ beqz $t4, .L7F053F4C -/* 088A68 7F053F38 00000000 */ nop -/* 088A6C 7F053F3C 8DA50010 */ lw $a1, 0x10($t5) -/* 088A70 7F053F40 01802025 */ move $a0, $t4 -/* 088A74 7F053F44 0FC14E84 */ jal sub_GAME_7F053A10 -/* 088A78 7F053F48 24A50008 */ addiu $a1, $a1, 8 -.L7F053F4C: -/* 088A7C 7F053F4C 0FC14E8F */ jal sub_GAME_7F053A3C -/* 088A80 7F053F50 8FA40020 */ lw $a0, 0x20($sp) -/* 088A84 7F053F54 8FBF0014 */ lw $ra, 0x14($sp) -/* 088A88 7F053F58 27BD0020 */ addiu $sp, $sp, 0x20 -/* 088A8C 7F053F5C 03E00008 */ jr $ra -/* 088A90 7F053F60 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void play_door_opening_soundeffect_1(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80053390*/ -glabel door_opening_sound_table_1 -.word .L7F053FD8 -.word .L7F054018 -.word .L7F054058 -.word .L7F054098 -.word .L7F05428C -.word .L7F05428C -.word .L7F0540D8 -.word .L7F054118 -.word .L7F054158 -.word .L7F05428C -.word .L7F05428C -.word .L7F05428C -.word .L7F054178 -.word .L7F0541B8 -.word .L7F0541D8 -.word .L7F0541F8 -.word .L7F054214 -.text -glabel play_door_opening_soundeffect_1 -/* 088A94 7F053F64 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 088A98 7F053F68 AFBF0014 */ sw $ra, 0x14($sp) -/* 088A9C 7F053F6C AFA40020 */ sw $a0, 0x20($sp) -/* 088AA0 7F053F70 AFA0001C */ sw $zero, 0x1c($sp) -/* 088AA4 7F053F74 0FC14EC4 */ jal sub_GAME_7F053B10 -/* 088AA8 7F053F78 AFA00018 */ sw $zero, 0x18($sp) -/* 088AAC 7F053F7C 8FAE0020 */ lw $t6, 0x20($sp) -/* 088AB0 7F053F80 8FA70018 */ lw $a3, 0x18($sp) -/* 088AB4 7F053F84 8FB80020 */ lw $t8, 0x20($sp) -/* 088AB8 7F053F88 8DCF00F4 */ lw $t7, 0xf4($t6) -/* 088ABC 7F053F8C 8FA80020 */ lw $t0, 0x20($sp) -/* 088AC0 7F053F90 55E00004 */ bnezl $t7, .L7F053FA4 -/* 088AC4 7F053F94 8F1900F8 */ lw $t9, 0xf8($t8) -/* 088AC8 7F053F98 10000005 */ b .L7F053FB0 -/* 088ACC 7F053F9C 25C700F4 */ addiu $a3, $t6, 0xf4 -/* 088AD0 7F053FA0 8F1900F8 */ lw $t9, 0xf8($t8) -.L7F053FA4: -/* 088AD4 7F053FA4 57200003 */ bnezl $t9, .L7F053FB4 -/* 088AD8 7F053FA8 8D0900A4 */ lw $t1, 0xa4($t0) -/* 088ADC 7F053FAC 270700F8 */ addiu $a3, $t8, 0xf8 -.L7F053FB0: -/* 088AE0 7F053FB0 8D0900A4 */ lw $t1, 0xa4($t0) -.L7F053FB4: -/* 088AE4 7F053FB4 252AFFFF */ addiu $t2, $t1, -1 -/* 088AE8 7F053FB8 2D410011 */ sltiu $at, $t2, 0x11 -/* 088AEC 7F053FBC 102000B3 */ beqz $at, .L7F05428C -/* 088AF0 7F053FC0 000A5080 */ sll $t2, $t2, 2 -/* 088AF4 7F053FC4 3C018005 */ lui $at, %hi(door_opening_sound_table_1) -/* 088AF8 7F053FC8 002A0821 */ addu $at, $at, $t2 -/* 088AFC 7F053FCC 8C2A3390 */ lw $t2, %lo(door_opening_sound_table_1)($at) -.L7F053FD0: -/* 088B00 7F053FD0 01400008 */ jr $t2 -/* 088B04 7F053FD4 00000000 */ nop -.L7F053FD8: -/* 088B08 7F053FD8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088B0C 7F053FDC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088B10 7F053FE0 240500D2 */ li $a1, 210 -/* 088B14 7F053FE4 00003025 */ move $a2, $zero -/* 088B18 7F053FE8 0C002382 */ jal play_sfx_a1 -/* 088B1C 7F053FEC AFA70018 */ sw $a3, 0x18($sp) -/* 088B20 7F053FF0 8FA70018 */ lw $a3, 0x18($sp) -/* 088B24 7F053FF4 AFA2001C */ sw $v0, 0x1c($sp) -/* 088B28 7F053FF8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088B2C 7F053FFC 10E000A3 */ beqz $a3, .L7F05428C -/* 088B30 7F054000 240500D3 */ li $a1, 211 -/* 088B34 7F054004 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088B38 7F054008 0C002382 */ jal play_sfx_a1 -/* 088B3C 7F05400C 00E03025 */ move $a2, $a3 -/* 088B40 7F054010 1000009F */ b .L7F054290 -/* 088B44 7F054014 8FAC001C */ lw $t4, 0x1c($sp) -.L7F054018: -/* 088B48 7F054018 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088B4C 7F05401C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088B50 7F054020 240500D2 */ li $a1, 210 -/* 088B54 7F054024 00003025 */ move $a2, $zero -/* 088B58 7F054028 0C002382 */ jal play_sfx_a1 -/* 088B5C 7F05402C AFA70018 */ sw $a3, 0x18($sp) -/* 088B60 7F054030 8FA70018 */ lw $a3, 0x18($sp) -/* 088B64 7F054034 AFA2001C */ sw $v0, 0x1c($sp) -/* 088B68 7F054038 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088B6C 7F05403C 10E00093 */ beqz $a3, .L7F05428C -/* 088B70 7F054040 24050007 */ li $a1, 7 -/* 088B74 7F054044 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088B78 7F054048 0C002382 */ jal play_sfx_a1 -/* 088B7C 7F05404C 00E03025 */ move $a2, $a3 -/* 088B80 7F054050 1000008F */ b .L7F054290 -/* 088B84 7F054054 8FAC001C */ lw $t4, 0x1c($sp) -.L7F054058: -/* 088B88 7F054058 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088B8C 7F05405C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088B90 7F054060 240500CA */ li $a1, 202 -/* 088B94 7F054064 00003025 */ move $a2, $zero -/* 088B98 7F054068 0C002382 */ jal play_sfx_a1 -/* 088B9C 7F05406C AFA70018 */ sw $a3, 0x18($sp) -/* 088BA0 7F054070 8FA70018 */ lw $a3, 0x18($sp) -/* 088BA4 7F054074 AFA2001C */ sw $v0, 0x1c($sp) -/* 088BA8 7F054078 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088BAC 7F05407C 10E00083 */ beqz $a3, .L7F05428C -/* 088BB0 7F054080 240500CC */ li $a1, 204 -/* 088BB4 7F054084 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088BB8 7F054088 0C002382 */ jal play_sfx_a1 -/* 088BBC 7F05408C 00E03025 */ move $a2, $a3 -/* 088BC0 7F054090 1000007F */ b .L7F054290 -/* 088BC4 7F054094 8FAC001C */ lw $t4, 0x1c($sp) -.L7F054098: -/* 088BC8 7F054098 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088BCC 7F05409C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088BD0 7F0540A0 240500D6 */ li $a1, 214 -/* 088BD4 7F0540A4 00003025 */ move $a2, $zero -/* 088BD8 7F0540A8 0C002382 */ jal play_sfx_a1 -/* 088BDC 7F0540AC AFA70018 */ sw $a3, 0x18($sp) -/* 088BE0 7F0540B0 8FA70018 */ lw $a3, 0x18($sp) -/* 088BE4 7F0540B4 AFA2001C */ sw $v0, 0x1c($sp) -/* 088BE8 7F0540B8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088BEC 7F0540BC 10E00073 */ beqz $a3, .L7F05428C -/* 088BF0 7F0540C0 240500D8 */ li $a1, 216 -/* 088BF4 7F0540C4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088BF8 7F0540C8 0C002382 */ jal play_sfx_a1 -/* 088BFC 7F0540CC 00E03025 */ move $a2, $a3 -/* 088C00 7F0540D0 1000006F */ b .L7F054290 -/* 088C04 7F0540D4 8FAC001C */ lw $t4, 0x1c($sp) -.L7F0540D8: -/* 088C08 7F0540D8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088C0C 7F0540DC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088C10 7F0540E0 240500C0 */ li $a1, 192 -/* 088C14 7F0540E4 00003025 */ move $a2, $zero -/* 088C18 7F0540E8 0C002382 */ jal play_sfx_a1 -/* 088C1C 7F0540EC AFA70018 */ sw $a3, 0x18($sp) -/* 088C20 7F0540F0 8FA70018 */ lw $a3, 0x18($sp) -/* 088C24 7F0540F4 AFA2001C */ sw $v0, 0x1c($sp) -/* 088C28 7F0540F8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088C2C 7F0540FC 10E00063 */ beqz $a3, .L7F05428C -/* 088C30 7F054100 240500BF */ li $a1, 191 -/* 088C34 7F054104 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088C38 7F054108 0C002382 */ jal play_sfx_a1 -/* 088C3C 7F05410C 00E03025 */ move $a2, $a3 -/* 088C40 7F054110 1000005F */ b .L7F054290 -/* 088C44 7F054114 8FAC001C */ lw $t4, 0x1c($sp) -.L7F054118: -/* 088C48 7F054118 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088C4C 7F05411C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088C50 7F054120 240500BC */ li $a1, 188 -/* 088C54 7F054124 00003025 */ move $a2, $zero -/* 088C58 7F054128 0C002382 */ jal play_sfx_a1 -/* 088C5C 7F05412C AFA70018 */ sw $a3, 0x18($sp) -/* 088C60 7F054130 8FA70018 */ lw $a3, 0x18($sp) -/* 088C64 7F054134 AFA2001C */ sw $v0, 0x1c($sp) -/* 088C68 7F054138 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088C6C 7F05413C 10E00053 */ beqz $a3, .L7F05428C -/* 088C70 7F054140 24050007 */ li $a1, 7 -/* 088C74 7F054144 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088C78 7F054148 0C002382 */ jal play_sfx_a1 -/* 088C7C 7F05414C 00E03025 */ move $a2, $a3 -/* 088C80 7F054150 1000004F */ b .L7F054290 -/* 088C84 7F054154 8FAC001C */ lw $t4, 0x1c($sp) -.L7F054158: -/* 088C88 7F054158 10E0004C */ beqz $a3, .L7F05428C -/* 088C8C 7F05415C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088C90 7F054160 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088C94 7F054164 240500C2 */ li $a1, 194 -/* 088C98 7F054168 0C002382 */ jal play_sfx_a1 -/* 088C9C 7F05416C 00E03025 */ move $a2, $a3 -/* 088CA0 7F054170 10000047 */ b .L7F054290 -/* 088CA4 7F054174 8FAC001C */ lw $t4, 0x1c($sp) -.L7F054178: -/* 088CA8 7F054178 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088CAC 7F05417C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088CB0 7F054180 24050007 */ li $a1, 7 -/* 088CB4 7F054184 00003025 */ move $a2, $zero -/* 088CB8 7F054188 0C002382 */ jal play_sfx_a1 -/* 088CBC 7F05418C AFA70018 */ sw $a3, 0x18($sp) -/* 088CC0 7F054190 8FA70018 */ lw $a3, 0x18($sp) -/* 088CC4 7F054194 AFA2001C */ sw $v0, 0x1c($sp) -/* 088CC8 7F054198 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088CCC 7F05419C 10E0003B */ beqz $a3, .L7F05428C -/* 088CD0 7F0541A0 24050007 */ li $a1, 7 -/* 088CD4 7F0541A4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088CD8 7F0541A8 0C002382 */ jal play_sfx_a1 -/* 088CDC 7F0541AC 00E03025 */ move $a2, $a3 -/* 088CE0 7F0541B0 10000037 */ b .L7F054290 -/* 088CE4 7F0541B4 8FAC001C */ lw $t4, 0x1c($sp) -.L7F0541B8: -/* 088CE8 7F0541B8 10E00034 */ beqz $a3, .L7F05428C -/* 088CEC 7F0541BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088CF0 7F0541C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088CF4 7F0541C4 240500DA */ li $a1, 218 -/* 088CF8 7F0541C8 0C002382 */ jal play_sfx_a1 -/* 088CFC 7F0541CC 00E03025 */ move $a2, $a3 -/* 088D00 7F0541D0 1000002F */ b .L7F054290 -/* 088D04 7F0541D4 8FAC001C */ lw $t4, 0x1c($sp) -.L7F0541D8: -/* 088D08 7F0541D8 10E0002C */ beqz $a3, .L7F05428C -/* 088D0C 7F0541DC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088D10 7F0541E0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088D14 7F0541E4 240500E1 */ li $a1, 225 -/* 088D18 7F0541E8 0C002382 */ jal play_sfx_a1 -/* 088D1C 7F0541EC 00E03025 */ move $a2, $a3 -/* 088D20 7F0541F0 10000027 */ b .L7F054290 -/* 088D24 7F0541F4 8FAC001C */ lw $t4, 0x1c($sp) -.L7F0541F8: -/* 088D28 7F0541F8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088D2C 7F0541FC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088D30 7F054200 240500D6 */ li $a1, 214 -/* 088D34 7F054204 0C002382 */ jal play_sfx_a1 -/* 088D38 7F054208 00003025 */ move $a2, $zero -/* 088D3C 7F05420C 1000001F */ b .L7F05428C -/* 088D40 7F054210 AFA2001C */ sw $v0, 0x1c($sp) -.L7F054214: -/* 088D44 7F054214 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088D48 7F054218 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088D4C 7F05421C 24050007 */ li $a1, 7 -/* 088D50 7F054220 00003025 */ move $a2, $zero -/* 088D54 7F054224 0C002382 */ jal play_sfx_a1 -/* 088D58 7F054228 AFA70018 */ sw $a3, 0x18($sp) -/* 088D5C 7F05422C 8FA70018 */ lw $a3, 0x18($sp) -/* 088D60 7F054230 10400008 */ beqz $v0, .L7F054254 -/* 088D64 7F054234 AFA2001C */ sw $v0, 0x1c($sp) -/* 088D68 7F054238 8FAB0020 */ lw $t3, 0x20($sp) -/* 088D6C 7F05423C 00402025 */ move $a0, $v0 -/* 088D70 7F054240 8D650010 */ lw $a1, 0x10($t3) -/* 088D74 7F054244 AFA70018 */ sw $a3, 0x18($sp) -/* 088D78 7F054248 0FC14E84 */ jal sub_GAME_7F053A10 -/* 088D7C 7F05424C 24A50008 */ addiu $a1, $a1, 8 -/* 088D80 7F054250 8FA70018 */ lw $a3, 0x18($sp) -.L7F054254: -/* 088D84 7F054254 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088D88 7F054258 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088D8C 7F05425C 240500CA */ li $a1, 202 -/* 088D90 7F054260 00003025 */ move $a2, $zero -/* 088D94 7F054264 0C002382 */ jal play_sfx_a1 -/* 088D98 7F054268 AFA70018 */ sw $a3, 0x18($sp) -/* 088D9C 7F05426C 8FA70018 */ lw $a3, 0x18($sp) -/* 088DA0 7F054270 AFA2001C */ sw $v0, 0x1c($sp) -/* 088DA4 7F054274 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088DA8 7F054278 10E00004 */ beqz $a3, .L7F05428C -/* 088DAC 7F05427C 240500CC */ li $a1, 204 -/* 088DB0 7F054280 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088DB4 7F054284 0C002382 */ jal play_sfx_a1 -/* 088DB8 7F054288 00E03025 */ move $a2, $a3 -def_7F053FD0: -.L7F05428C: -/* 088DBC 7F05428C 8FAC001C */ lw $t4, 0x1c($sp) -.L7F054290: -/* 088DC0 7F054290 8FAD0020 */ lw $t5, 0x20($sp) -/* 088DC4 7F054294 11800005 */ beqz $t4, .L7F0542AC -/* 088DC8 7F054298 00000000 */ nop -/* 088DCC 7F05429C 8DA50010 */ lw $a1, 0x10($t5) -/* 088DD0 7F0542A0 01802025 */ move $a0, $t4 -/* 088DD4 7F0542A4 0FC14E84 */ jal sub_GAME_7F053A10 -/* 088DD8 7F0542A8 24A50008 */ addiu $a1, $a1, 8 -.L7F0542AC: -/* 088DDC 7F0542AC 0FC14E8F */ jal sub_GAME_7F053A3C -/* 088DE0 7F0542B0 8FA40020 */ lw $a0, 0x20($sp) -/* 088DE4 7F0542B4 8FBF0014 */ lw $ra, 0x14($sp) -/* 088DE8 7F0542B8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 088DEC 7F0542BC 03E00008 */ jr $ra -/* 088DF0 7F0542C0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void play_door_closing_soundeffect_0(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:800533D4*/ -glabel door_closing_sound_table_0 -.word .L7F054308 -.word .L7F054328 -.word .L7F054348 -.word .L7F054368 -.word .L7F054484 -.word .L7F054484 -.word .L7F054388 -.word .L7F0543A8 -.word .L7F0543C8 -.word .L7F054484 -.word .L7F054484 -.word .L7F054484 -.word .L7F0543E8 -.word .L7F054408 -.word .L7F054428 -.word .L7F054448 -.word .L7F054468 -.text -glabel play_door_closing_soundeffect_0 -/* 088DF4 7F0542C4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 088DF8 7F0542C8 AFBF0014 */ sw $ra, 0x14($sp) -/* 088DFC 7F0542CC AFA40020 */ sw $a0, 0x20($sp) -/* 088E00 7F0542D0 0FC14EC4 */ jal sub_GAME_7F053B10 -/* 088E04 7F0542D4 AFA0001C */ sw $zero, 0x1c($sp) -/* 088E08 7F0542D8 8FA70020 */ lw $a3, 0x20($sp) -/* 088E0C 7F0542DC 8FA6001C */ lw $a2, 0x1c($sp) -/* 088E10 7F0542E0 8CEE00A4 */ lw $t6, 0xa4($a3) -/* 088E14 7F0542E4 25CFFFFF */ addiu $t7, $t6, -1 -/* 088E18 7F0542E8 2DE10011 */ sltiu $at, $t7, 0x11 -/* 088E1C 7F0542EC 10200065 */ beqz $at, .L7F054484 -/* 088E20 7F0542F0 000F7880 */ sll $t7, $t7, 2 -/* 088E24 7F0542F4 3C018005 */ lui $at, %hi(door_closing_sound_table_0) -/* 088E28 7F0542F8 002F0821 */ addu $at, $at, $t7 -/* 088E2C 7F0542FC 8C2F33D4 */ lw $t7, %lo(door_closing_sound_table_0)($at) -.L7F054300: -/* 088E30 7F054300 01E00008 */ jr $t7 -/* 088E34 7F054304 00000000 */ nop -.L7F054308: -/* 088E38 7F054308 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088E3C 7F05430C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088E40 7F054310 240500D2 */ li $a1, 210 -/* 088E44 7F054314 0C002382 */ jal play_sfx_a1 -/* 088E48 7F054318 00003025 */ move $a2, $zero -/* 088E4C 7F05431C 00403025 */ move $a2, $v0 -/* 088E50 7F054320 10000058 */ b .L7F054484 -/* 088E54 7F054324 8FA70020 */ lw $a3, 0x20($sp) -.L7F054328: -/* 088E58 7F054328 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088E5C 7F05432C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088E60 7F054330 240500D2 */ li $a1, 210 -/* 088E64 7F054334 0C002382 */ jal play_sfx_a1 -/* 088E68 7F054338 00003025 */ move $a2, $zero -/* 088E6C 7F05433C 00403025 */ move $a2, $v0 -/* 088E70 7F054340 10000050 */ b .L7F054484 -/* 088E74 7F054344 8FA70020 */ lw $a3, 0x20($sp) -.L7F054348: -/* 088E78 7F054348 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088E7C 7F05434C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088E80 7F054350 240500CB */ li $a1, 203 -/* 088E84 7F054354 0C002382 */ jal play_sfx_a1 -/* 088E88 7F054358 00003025 */ move $a2, $zero -/* 088E8C 7F05435C 00403025 */ move $a2, $v0 -/* 088E90 7F054360 10000048 */ b .L7F054484 -/* 088E94 7F054364 8FA70020 */ lw $a3, 0x20($sp) -.L7F054368: -/* 088E98 7F054368 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088E9C 7F05436C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088EA0 7F054370 240500D7 */ li $a1, 215 -/* 088EA4 7F054374 0C002382 */ jal play_sfx_a1 -/* 088EA8 7F054378 00003025 */ move $a2, $zero -/* 088EAC 7F05437C 00403025 */ move $a2, $v0 -/* 088EB0 7F054380 10000040 */ b .L7F054484 -/* 088EB4 7F054384 8FA70020 */ lw $a3, 0x20($sp) -.L7F054388: -/* 088EB8 7F054388 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088EBC 7F05438C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088EC0 7F054390 240500D2 */ li $a1, 210 -/* 088EC4 7F054394 0C002382 */ jal play_sfx_a1 -/* 088EC8 7F054398 00003025 */ move $a2, $zero -/* 088ECC 7F05439C 00403025 */ move $a2, $v0 -/* 088ED0 7F0543A0 10000038 */ b .L7F054484 -/* 088ED4 7F0543A4 8FA70020 */ lw $a3, 0x20($sp) -.L7F0543A8: -/* 088ED8 7F0543A8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088EDC 7F0543AC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088EE0 7F0543B0 240500BB */ li $a1, 187 -/* 088EE4 7F0543B4 0C002382 */ jal play_sfx_a1 -/* 088EE8 7F0543B8 00003025 */ move $a2, $zero -/* 088EEC 7F0543BC 00403025 */ move $a2, $v0 -/* 088EF0 7F0543C0 10000030 */ b .L7F054484 -/* 088EF4 7F0543C4 8FA70020 */ lw $a3, 0x20($sp) -.L7F0543C8: -/* 088EF8 7F0543C8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088EFC 7F0543CC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088F00 7F0543D0 240500C3 */ li $a1, 195 -/* 088F04 7F0543D4 0C002382 */ jal play_sfx_a1 -/* 088F08 7F0543D8 00003025 */ move $a2, $zero -/* 088F0C 7F0543DC 00403025 */ move $a2, $v0 -/* 088F10 7F0543E0 10000028 */ b .L7F054484 -/* 088F14 7F0543E4 8FA70020 */ lw $a3, 0x20($sp) -.L7F0543E8: -/* 088F18 7F0543E8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088F1C 7F0543EC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088F20 7F0543F0 24050007 */ li $a1, 7 -/* 088F24 7F0543F4 0C002382 */ jal play_sfx_a1 -/* 088F28 7F0543F8 00003025 */ move $a2, $zero -/* 088F2C 7F0543FC 00403025 */ move $a2, $v0 -/* 088F30 7F054400 10000020 */ b .L7F054484 -/* 088F34 7F054404 8FA70020 */ lw $a3, 0x20($sp) -.L7F054408: -/* 088F38 7F054408 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088F3C 7F05440C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088F40 7F054410 240500DB */ li $a1, 219 -/* 088F44 7F054414 0C002382 */ jal play_sfx_a1 -/* 088F48 7F054418 00003025 */ move $a2, $zero -/* 088F4C 7F05441C 00403025 */ move $a2, $v0 -/* 088F50 7F054420 10000018 */ b .L7F054484 -/* 088F54 7F054424 8FA70020 */ lw $a3, 0x20($sp) -.L7F054428: -/* 088F58 7F054428 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088F5C 7F05442C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088F60 7F054430 240500E2 */ li $a1, 226 -/* 088F64 7F054434 0C002382 */ jal play_sfx_a1 -/* 088F68 7F054438 00003025 */ move $a2, $zero -/* 088F6C 7F05443C 00403025 */ move $a2, $v0 -/* 088F70 7F054440 10000010 */ b .L7F054484 -/* 088F74 7F054444 8FA70020 */ lw $a3, 0x20($sp) -.L7F054448: -/* 088F78 7F054448 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088F7C 7F05444C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088F80 7F054450 240500D7 */ li $a1, 215 -/* 088F84 7F054454 0C002382 */ jal play_sfx_a1 -/* 088F88 7F054458 00003025 */ move $a2, $zero -/* 088F8C 7F05445C 00403025 */ move $a2, $v0 -/* 088F90 7F054460 10000008 */ b .L7F054484 -/* 088F94 7F054464 8FA70020 */ lw $a3, 0x20($sp) -.L7F054468: -/* 088F98 7F054468 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 088F9C 7F05446C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 088FA0 7F054470 240500CB */ li $a1, 203 -/* 088FA4 7F054474 0C002382 */ jal play_sfx_a1 -/* 088FA8 7F054478 00003025 */ move $a2, $zero -/* 088FAC 7F05447C 00403025 */ move $a2, $v0 -/* 088FB0 7F054480 8FA70020 */ lw $a3, 0x20($sp) -def_7F054300: -.L7F054484: -/* 088FB4 7F054484 10C00006 */ beqz $a2, .L7F0544A0 -/* 088FB8 7F054488 00000000 */ nop -/* 088FBC 7F05448C 8CE50010 */ lw $a1, 0x10($a3) -/* 088FC0 7F054490 00C02025 */ move $a0, $a2 -/* 088FC4 7F054494 0FC14E84 */ jal sub_GAME_7F053A10 -/* 088FC8 7F054498 24A50008 */ addiu $a1, $a1, 8 -/* 088FCC 7F05449C 8FA70020 */ lw $a3, 0x20($sp) -.L7F0544A0: -/* 088FD0 7F0544A0 0FC14E8F */ jal sub_GAME_7F053A3C -/* 088FD4 7F0544A4 00E02025 */ move $a0, $a3 -/* 088FD8 7F0544A8 8FBF0014 */ lw $ra, 0x14($sp) -/* 088FDC 7F0544AC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 088FE0 7F0544B0 03E00008 */ jr $ra -/* 088FE4 7F0544B4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void play_door_closing_soundeffect_1(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -/*D:80053418*/ -glabel door_closing_sound_table_1 -.word .L7F0544FC -.word .L7F05451C -.word .L7F05453C -.word .L7F05455C -.word .L7F05457C -.word .L7F05459C -.word .L7F0545BC -.word .L7F0545DC -.word .L7F0545FC -.word .L7F05461C -.word .L7F05463C -.word .L7F05465C -.word .L7F05467C -.word .L7F05469C -.word .L7F0546BC -.word .L7F0546DC -.word .L7F0546FC - -.text -glabel play_door_closing_soundeffect_1 -/* 088FE8 7F0544B8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 088FEC 7F0544BC AFBF0014 */ sw $ra, 0x14($sp) -/* 088FF0 7F0544C0 AFA40020 */ sw $a0, 0x20($sp) -/* 088FF4 7F0544C4 0FC14EC4 */ jal sub_GAME_7F053B10 -/* 088FF8 7F0544C8 AFA0001C */ sw $zero, 0x1c($sp) -/* 088FFC 7F0544CC 8FA70020 */ lw $a3, 0x20($sp) -/* 089000 7F0544D0 8FA6001C */ lw $a2, 0x1c($sp) -/* 089004 7F0544D4 8CEE00A4 */ lw $t6, 0xa4($a3) -/* 089008 7F0544D8 25CFFFFF */ addiu $t7, $t6, -1 -/* 08900C 7F0544DC 2DE10011 */ sltiu $at, $t7, 0x11 -/* 089010 7F0544E0 1020008D */ beqz $at, .L7F054718 -/* 089014 7F0544E4 000F7880 */ sll $t7, $t7, 2 -/* 089018 7F0544E8 3C018005 */ lui $at, %hi(door_closing_sound_table_1) -/* 08901C 7F0544EC 002F0821 */ addu $at, $at, $t7 -/* 089020 7F0544F0 8C2F3418 */ lw $t7, %lo(door_closing_sound_table_1)($at) -/* 089024 7F0544F4 01E00008 */ jr $t7 -/* 089028 7F0544F8 00000000 */ nop -.L7F0544FC: -/* 08902C 7F0544FC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089030 7F054500 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089034 7F054504 240500D2 */ li $a1, 210 -/* 089038 7F054508 0C002382 */ jal play_sfx_a1 -/* 08903C 7F05450C 00003025 */ move $a2, $zero -/* 089040 7F054510 00403025 */ move $a2, $v0 -/* 089044 7F054514 10000080 */ b .L7F054718 -/* 089048 7F054518 8FA70020 */ lw $a3, 0x20($sp) -.L7F05451C: -/* 08904C 7F05451C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089050 7F054520 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089054 7F054524 240500D2 */ li $a1, 210 -/* 089058 7F054528 0C002382 */ jal play_sfx_a1 -/* 08905C 7F05452C 00003025 */ move $a2, $zero -/* 089060 7F054530 00403025 */ move $a2, $v0 -/* 089064 7F054534 10000078 */ b .L7F054718 -/* 089068 7F054538 8FA70020 */ lw $a3, 0x20($sp) -.L7F05453C: -/* 08906C 7F05453C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089070 7F054540 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089074 7F054544 240500CB */ li $a1, 203 -/* 089078 7F054548 0C002382 */ jal play_sfx_a1 -/* 08907C 7F05454C 00003025 */ move $a2, $zero -/* 089080 7F054550 00403025 */ move $a2, $v0 -/* 089084 7F054554 10000070 */ b .L7F054718 -/* 089088 7F054558 8FA70020 */ lw $a3, 0x20($sp) -.L7F05455C: -/* 08908C 7F05455C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089090 7F054560 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089094 7F054564 240500D7 */ li $a1, 215 -/* 089098 7F054568 0C002382 */ jal play_sfx_a1 -/* 08909C 7F05456C 00003025 */ move $a2, $zero -/* 0890A0 7F054570 00403025 */ move $a2, $v0 -/* 0890A4 7F054574 10000068 */ b .L7F054718 -/* 0890A8 7F054578 8FA70020 */ lw $a3, 0x20($sp) -.L7F05457C: -/* 0890AC 7F05457C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0890B0 7F054580 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0890B4 7F054584 240500BB */ li $a1, 187 -/* 0890B8 7F054588 0C002382 */ jal play_sfx_a1 -/* 0890BC 7F05458C 00003025 */ move $a2, $zero -/* 0890C0 7F054590 00403025 */ move $a2, $v0 -/* 0890C4 7F054594 10000060 */ b .L7F054718 -/* 0890C8 7F054598 8FA70020 */ lw $a3, 0x20($sp) -.L7F05459C: -/* 0890CC 7F05459C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0890D0 7F0545A0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0890D4 7F0545A4 24050007 */ li $a1, 7 -/* 0890D8 7F0545A8 0C002382 */ jal play_sfx_a1 -/* 0890DC 7F0545AC 00003025 */ move $a2, $zero -/* 0890E0 7F0545B0 00403025 */ move $a2, $v0 -/* 0890E4 7F0545B4 10000058 */ b .L7F054718 -/* 0890E8 7F0545B8 8FA70020 */ lw $a3, 0x20($sp) -.L7F0545BC: -/* 0890EC 7F0545BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0890F0 7F0545C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0890F4 7F0545C4 240500D2 */ li $a1, 210 -/* 0890F8 7F0545C8 0C002382 */ jal play_sfx_a1 -/* 0890FC 7F0545CC 00003025 */ move $a2, $zero -/* 089100 7F0545D0 00403025 */ move $a2, $v0 -/* 089104 7F0545D4 10000050 */ b .L7F054718 -/* 089108 7F0545D8 8FA70020 */ lw $a3, 0x20($sp) -.L7F0545DC: -/* 08910C 7F0545DC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089110 7F0545E0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089114 7F0545E4 240500BB */ li $a1, 187 -/* 089118 7F0545E8 0C002382 */ jal play_sfx_a1 -/* 08911C 7F0545EC 00003025 */ move $a2, $zero -/* 089120 7F0545F0 00403025 */ move $a2, $v0 -/* 089124 7F0545F4 10000048 */ b .L7F054718 -/* 089128 7F0545F8 8FA70020 */ lw $a3, 0x20($sp) -.L7F0545FC: -/* 08912C 7F0545FC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089130 7F054600 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089134 7F054604 240500C3 */ li $a1, 195 -/* 089138 7F054608 0C002382 */ jal play_sfx_a1 -/* 08913C 7F05460C 00003025 */ move $a2, $zero -/* 089140 7F054610 00403025 */ move $a2, $v0 -/* 089144 7F054614 10000040 */ b .L7F054718 -/* 089148 7F054618 8FA70020 */ lw $a3, 0x20($sp) -.L7F05461C: -/* 08914C 7F05461C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089150 7F054620 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089154 7F054624 240500C5 */ li $a1, 197 -/* 089158 7F054628 0C002382 */ jal play_sfx_a1 -/* 08915C 7F05462C 00003025 */ move $a2, $zero -/* 089160 7F054630 00403025 */ move $a2, $v0 -/* 089164 7F054634 10000038 */ b .L7F054718 -/* 089168 7F054638 8FA70020 */ lw $a3, 0x20($sp) -.L7F05463C: -/* 08916C 7F05463C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089170 7F054640 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089174 7F054644 240500C7 */ li $a1, 199 -/* 089178 7F054648 0C002382 */ jal play_sfx_a1 -/* 08917C 7F05464C 00003025 */ move $a2, $zero -/* 089180 7F054650 00403025 */ move $a2, $v0 -/* 089184 7F054654 10000030 */ b .L7F054718 -/* 089188 7F054658 8FA70020 */ lw $a3, 0x20($sp) -.L7F05465C: -/* 08918C 7F05465C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089190 7F054660 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089194 7F054664 240500C9 */ li $a1, 201 -/* 089198 7F054668 0C002382 */ jal play_sfx_a1 -/* 08919C 7F05466C 00003025 */ move $a2, $zero -/* 0891A0 7F054670 00403025 */ move $a2, $v0 -/* 0891A4 7F054674 10000028 */ b .L7F054718 -/* 0891A8 7F054678 8FA70020 */ lw $a3, 0x20($sp) -.L7F05467C: -/* 0891AC 7F05467C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0891B0 7F054680 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0891B4 7F054684 24050007 */ li $a1, 7 -/* 0891B8 7F054688 0C002382 */ jal play_sfx_a1 -/* 0891BC 7F05468C 00003025 */ move $a2, $zero -/* 0891C0 7F054690 00403025 */ move $a2, $v0 -/* 0891C4 7F054694 10000020 */ b .L7F054718 -/* 0891C8 7F054698 8FA70020 */ lw $a3, 0x20($sp) -.L7F05469C: -/* 0891CC 7F05469C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0891D0 7F0546A0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0891D4 7F0546A4 240500DB */ li $a1, 219 -/* 0891D8 7F0546A8 0C002382 */ jal play_sfx_a1 -/* 0891DC 7F0546AC 00003025 */ move $a2, $zero -/* 0891E0 7F0546B0 00403025 */ move $a2, $v0 -/* 0891E4 7F0546B4 10000018 */ b .L7F054718 -/* 0891E8 7F0546B8 8FA70020 */ lw $a3, 0x20($sp) -.L7F0546BC: -/* 0891EC 7F0546BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0891F0 7F0546C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0891F4 7F0546C4 240500E2 */ li $a1, 226 -/* 0891F8 7F0546C8 0C002382 */ jal play_sfx_a1 -/* 0891FC 7F0546CC 00003025 */ move $a2, $zero -/* 089200 7F0546D0 00403025 */ move $a2, $v0 -/* 089204 7F0546D4 10000010 */ b .L7F054718 -/* 089208 7F0546D8 8FA70020 */ lw $a3, 0x20($sp) -.L7F0546DC: -/* 08920C 7F0546DC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089210 7F0546E0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089214 7F0546E4 240500D7 */ li $a1, 215 -/* 089218 7F0546E8 0C002382 */ jal play_sfx_a1 -/* 08921C 7F0546EC 00003025 */ move $a2, $zero -/* 089220 7F0546F0 00403025 */ move $a2, $v0 -/* 089224 7F0546F4 10000008 */ b .L7F054718 -/* 089228 7F0546F8 8FA70020 */ lw $a3, 0x20($sp) -.L7F0546FC: -/* 08922C 7F0546FC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 089230 7F054700 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 089234 7F054704 240500CB */ li $a1, 203 -/* 089238 7F054708 0C002382 */ jal play_sfx_a1 -/* 08923C 7F05470C 00003025 */ move $a2, $zero -/* 089240 7F054710 00403025 */ move $a2, $v0 -/* 089244 7F054714 8FA70020 */ lw $a3, 0x20($sp) -def_7F0544F4: -.L7F054718: -/* 089248 7F054718 10C00006 */ beqz $a2, .L7F054734 -/* 08924C 7F05471C 00000000 */ nop -/* 089250 7F054720 8CE50010 */ lw $a1, 0x10($a3) -/* 089254 7F054724 00C02025 */ move $a0, $a2 -/* 089258 7F054728 0FC14E84 */ jal sub_GAME_7F053A10 -/* 08925C 7F05472C 24A50008 */ addiu $a1, $a1, 8 -/* 089260 7F054730 8FA70020 */ lw $a3, 0x20($sp) -.L7F054734: -/* 089264 7F054734 0FC14E8F */ jal sub_GAME_7F053A3C -/* 089268 7F054738 00E02025 */ move $a0, $a3 -/* 08926C 7F05473C 8FBF0014 */ lw $ra, 0x14($sp) -/* 089270 7F054740 27BD0020 */ addiu $sp, $sp, 0x20 -/* 089274 7F054744 03E00008 */ jr $ra -/* 089278 7F054748 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F05474C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05474C -/* 08927C 7F05474C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 089280 7F054750 AFBF0014 */ sw $ra, 0x14($sp) -/* 089284 7F054754 8C8E0008 */ lw $t6, 8($a0) -/* 089288 7F054758 8C980064 */ lw $t8, 0x64($a0) -/* 08928C 7F05475C 3C017FFF */ lui $at, (0x7FFFFFFF >> 16) # lui $at, 0x7fff -/* 089290 7F054760 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 089294 7F054764 01C17824 */ and $t7, $t6, $at -/* 089298 7F054768 37190200 */ ori $t9, $t8, 0x200 -/* 08929C 7F05476C AC8F0008 */ sw $t7, 8($a0) -/* 0892A0 7F054770 AC990064 */ sw $t9, 0x64($a0) -/* 0892A4 7F054774 0FC14EDE */ jal play_door_opening_soundeffect_0 -/* 0892A8 7F054778 AFA40018 */ sw $a0, 0x18($sp) -/* 0892AC 7F05477C 0FC14D66 */ jal sub_GAME_7F053598 -/* 0892B0 7F054780 8FA40018 */ lw $a0, 0x18($sp) -/* 0892B4 7F054784 8FA40018 */ lw $a0, 0x18($sp) -/* 0892B8 7F054788 24010008 */ li $at, 8 -/* 0892BC 7F05478C 9488009A */ lhu $t0, 0x9a($a0) -/* 0892C0 7F054790 5501000F */ bnel $t0, $at, .L7F0547D0 -/* 0892C4 7F054794 8FBF0014 */ lw $ra, 0x14($sp) -/* 0892C8 7F054798 8C890008 */ lw $t1, 8($a0) -/* 0892CC 7F05479C 8C820068 */ lw $v0, 0x68($a0) -/* 0892D0 7F0547A0 44802000 */ mtc1 $zero, $f4 -/* 0892D4 7F0547A4 3C010200 */ lui $at, 0x200 -/* 0892D8 7F0547A8 01215025 */ or $t2, $t1, $at -/* 0892DC 7F0547AC AC8A0008 */ sw $t2, 8($a0) -/* 0892E0 7F0547B0 10400002 */ beqz $v0, .L7F0547BC -/* 0892E4 7F0547B4 E4840088 */ swc1 $f4, 0x88($a0) -/* 0892E8 7F0547B8 AC400000 */ sw $zero, ($v0) -.L7F0547BC: -/* 0892EC 7F0547BC 8C8B0008 */ lw $t3, 8($a0) -/* 0892F0 7F0547C0 2401FEFF */ li $at, -257 -/* 0892F4 7F0547C4 01616024 */ and $t4, $t3, $at -/* 0892F8 7F0547C8 AC8C0008 */ sw $t4, 8($a0) -/* 0892FC 7F0547CC 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0547D0: -/* 089300 7F0547D0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 089304 7F0547D4 03E00008 */ jr $ra -/* 089308 7F0547D8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0547DC(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0547DC -/* 08930C 7F0547DC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 089310 7F0547E0 AFBF0014 */ sw $ra, 0x14($sp) -/* 089314 7F0547E4 8C8E0008 */ lw $t6, 8($a0) -/* 089318 7F0547E8 3C017FFF */ lui $at, (0x7FFFFFFF >> 16) # lui $at, 0x7fff -/* 08931C 7F0547EC 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 089320 7F0547F0 01C17824 */ and $t7, $t6, $at -/* 089324 7F0547F4 0FC14FD9 */ jal play_door_opening_soundeffect_1 -/* 089328 7F0547F8 AC8F0008 */ sw $t7, 8($a0) -/* 08932C 7F0547FC 8FBF0014 */ lw $ra, 0x14($sp) -/* 089330 7F054800 27BD0018 */ addiu $sp, $sp, 0x18 -/* 089334 7F054804 03E00008 */ jr $ra -/* 089338 7F054808 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F05480C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05480C -/* 08933C 7F05480C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 089340 7F054810 AFBF0014 */ sw $ra, 0x14($sp) -/* 089344 7F054814 0FC150B1 */ jal play_door_closing_soundeffect_0 -/* 089348 7F054818 AFA40018 */ sw $a0, 0x18($sp) -/* 08934C 7F05481C 8FA50018 */ lw $a1, 0x18($sp) -/* 089350 7F054820 24010008 */ li $at, 8 -/* 089354 7F054824 94AE009A */ lhu $t6, 0x9a($a1) -/* 089358 7F054828 55C10011 */ bnel $t6, $at, .L7F054870 -/* 08935C 7F05482C 8FBF0014 */ lw $ra, 0x14($sp) -/* 089360 7F054830 8CA40010 */ lw $a0, 0x10($a1) -/* 089364 7F054834 0FC0FF6A */ jal sub_GAME_7F03FDA8 -/* 089368 7F054838 AFA50018 */ sw $a1, 0x18($sp) -/* 08936C 7F05483C 8FA50018 */ lw $a1, 0x18($sp) -/* 089370 7F054840 8CAF0064 */ lw $t7, 0x64($a1) -/* 089374 7F054844 31F80080 */ andi $t8, $t7, 0x80 -/* 089378 7F054848 53000009 */ beql $t8, $zero, .L7F054870 -/* 08937C 7F05484C 8FBF0014 */ lw $ra, 0x14($sp) -/* 089380 7F054850 8CA2006C */ lw $v0, 0x6c($a1) -/* 089384 7F054854 8C590000 */ lw $t9, ($v0) -/* 089388 7F054858 37280001 */ ori $t0, $t9, 1 -/* 08938C 7F05485C AC480000 */ sw $t0, ($v0) -/* 089390 7F054860 8CA4006C */ lw $a0, 0x6c($a1) -/* 089394 7F054864 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 -/* 089398 7F054868 24840020 */ addiu $a0, $a0, 0x20 -/* 08939C 7F05486C 8FBF0014 */ lw $ra, 0x14($sp) -.L7F054870: -/* 0893A0 7F054870 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0893A4 7F054874 03E00008 */ jr $ra -/* 0893A8 7F054878 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F05487C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05487C -/* 0893AC 7F05487C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0893B0 7F054880 AFBF0014 */ sw $ra, 0x14($sp) -/* 0893B4 7F054884 0FC1512E */ jal play_door_closing_soundeffect_1 -/* 0893B8 7F054888 AFA40018 */ sw $a0, 0x18($sp) -/* 0893BC 7F05488C 0FC14D71 */ jal sub_GAME_7F0535C4 -/* 0893C0 7F054890 8FA40018 */ lw $a0, 0x18($sp) -/* 0893C4 7F054894 8FBF0014 */ lw $ra, 0x14($sp) -/* 0893C8 7F054898 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0893CC 7F05489C 03E00008 */ jr $ra -/* 0893D0 7F0548A0 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0548A4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0548A4 -/* 0893D4 7F0548A4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0893D8 7F0548A8 24010001 */ li $at, 1 -/* 0893DC 7F0548AC 14A1000E */ bne $a1, $at, .L7F0548E8 -/* 0893E0 7F0548B0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0893E4 7F0548B4 808200BC */ lb $v0, 0xbc($a0) -/* 0893E8 7F0548B8 24010003 */ li $at, 3 -/* 0893EC 7F0548BC 50400004 */ beql $v0, $zero, .L7F0548D0 -/* 0893F0 7F0548C0 AFA40018 */ sw $a0, 0x18($sp) -/* 0893F4 7F0548C4 14410006 */ bne $v0, $at, .L7F0548E0 -/* 0893F8 7F0548C8 00000000 */ nop -/* 0893FC 7F0548CC AFA40018 */ sw $a0, 0x18($sp) -.L7F0548D0: -/* 089400 7F0548D0 0FC151D3 */ jal sub_GAME_7F05474C -/* 089404 7F0548D4 AFA5001C */ sw $a1, 0x1c($sp) -/* 089408 7F0548D8 8FA40018 */ lw $a0, 0x18($sp) -/* 08940C 7F0548DC 8FA5001C */ lw $a1, 0x1c($sp) -.L7F0548E0: -/* 089410 7F0548E0 10000025 */ b .L7F054978 -/* 089414 7F0548E4 A08500BC */ sb $a1, 0xbc($a0) -.L7F0548E8: -/* 089418 7F0548E8 24010002 */ li $at, 2 -/* 08941C 7F0548EC 54A10022 */ bnel $a1, $at, .L7F054978 -/* 089420 7F0548F0 A08500BC */ sb $a1, 0xbc($a0) -/* 089424 7F0548F4 808200BC */ lb $v0, 0xbc($a0) -/* 089428 7F0548F8 1440000D */ bnez $v0, .L7F054930 -/* 08942C 7F0548FC 00000000 */ nop -/* 089430 7F054900 44802000 */ mtc1 $zero, $f4 -/* 089434 7F054904 C48600B4 */ lwc1 $f6, 0xb4($a0) -/* 089438 7F054908 4606203C */ c.lt.s $f4, $f6 -/* 08943C 7F05490C 00000000 */ nop -/* 089440 7F054910 45000007 */ bc1f .L7F054930 -/* 089444 7F054914 00000000 */ nop -/* 089448 7F054918 AFA40018 */ sw $a0, 0x18($sp) -/* 08944C 7F05491C 0FC151F7 */ jal sub_GAME_7F0547DC -/* 089450 7F054920 AFA5001C */ sw $a1, 0x1c($sp) -/* 089454 7F054924 8FA40018 */ lw $a0, 0x18($sp) -/* 089458 7F054928 8FA5001C */ lw $a1, 0x1c($sp) -/* 08945C 7F05492C 808200BC */ lb $v0, 0xbc($a0) -.L7F054930: -/* 089460 7F054930 10400003 */ beqz $v0, .L7F054940 -/* 089464 7F054934 24010003 */ li $at, 3 -/* 089468 7F054938 14410008 */ bne $v0, $at, .L7F05495C -/* 08946C 7F05493C 00000000 */ nop -.L7F054940: -/* 089470 7F054940 44804000 */ mtc1 $zero, $f8 -/* 089474 7F054944 C48A00B4 */ lwc1 $f10, 0xb4($a0) -/* 089478 7F054948 24010003 */ li $at, 3 -/* 08947C 7F05494C 460A403C */ c.lt.s $f8, $f10 -/* 089480 7F054950 00000000 */ nop -/* 089484 7F054954 45000003 */ bc1f .L7F054964 -/* 089488 7F054958 00000000 */ nop -.L7F05495C: -/* 08948C 7F05495C 10000006 */ b .L7F054978 -/* 089490 7F054960 A08500BC */ sb $a1, 0xbc($a0) -.L7F054964: -/* 089494 7F054964 54410005 */ bnel $v0, $at, .L7F05497C -/* 089498 7F054968 8FBF0014 */ lw $ra, 0x14($sp) -/* 08949C 7F05496C 10000002 */ b .L7F054978 -/* 0894A0 7F054970 A08000BC */ sb $zero, 0xbc($a0) -/* 0894A4 7F054974 A08500BC */ sb $a1, 0xbc($a0) -.L7F054978: -/* 0894A8 7F054978 8FBF0014 */ lw $ra, 0x14($sp) -.L7F05497C: -/* 0894AC 7F05497C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0894B0 7F054980 03E00008 */ jr $ra -/* 0894B4 7F054984 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void set_door_state(void) { - -} -#else -GLOBAL_ASM( -.text -glabel set_door_state -/* 0894B8 7F054988 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0894BC 7F05498C AFBF0024 */ sw $ra, 0x24($sp) -/* 0894C0 7F054990 AFB20020 */ sw $s2, 0x20($sp) -/* 0894C4 7F054994 AFB1001C */ sw $s1, 0x1c($sp) -/* 0894C8 7F054998 AFB00018 */ sw $s0, 0x18($sp) -/* 0894CC 7F05499C 8C8E000C */ lw $t6, 0xc($a0) -/* 0894D0 7F0549A0 00808825 */ move $s1, $a0 -/* 0894D4 7F0549A4 00A09025 */ move $s2, $a1 -/* 0894D8 7F0549A8 000E7840 */ sll $t7, $t6, 1 -/* 0894DC 7F0549AC 05E10008 */ bgez $t7, .L7F0549D0 -/* 0894E0 7F0549B0 24010001 */ li $at, 1 -/* 0894E4 7F0549B4 14A10006 */ bne $a1, $at, .L7F0549D0 -/* 0894E8 7F0549B8 00000000 */ nop -/* 0894EC 7F0549BC 809800BC */ lb $t8, 0xbc($a0) -/* 0894F0 7F0549C0 24120002 */ li $s2, 2 -/* 0894F4 7F0549C4 17000002 */ bnez $t8, .L7F0549D0 -/* 0894F8 7F0549C8 00000000 */ nop -/* 0894FC 7F0549CC 24050003 */ li $a1, 3 -.L7F0549D0: -/* 089500 7F0549D0 0FC15229 */ jal sub_GAME_7F0548A4 -/* 089504 7F0549D4 02202025 */ move $a0, $s1 -/* 089508 7F0549D8 8E3000C8 */ lw $s0, 0xc8($s1) -/* 08950C 7F0549DC 5200000B */ beql $s0, $zero, .L7F054A0C -/* 089510 7F0549E0 8FBF0024 */ lw $ra, 0x24($sp) -/* 089514 7F0549E4 12110008 */ beq $s0, $s1, .L7F054A08 -/* 089518 7F0549E8 02002025 */ move $a0, $s0 -.L7F0549EC: -/* 08951C 7F0549EC 0FC15229 */ jal sub_GAME_7F0548A4 -/* 089520 7F0549F0 02402825 */ move $a1, $s2 -/* 089524 7F0549F4 8E1000C8 */ lw $s0, 0xc8($s0) -/* 089528 7F0549F8 52000004 */ beql $s0, $zero, .L7F054A0C -/* 08952C 7F0549FC 8FBF0024 */ lw $ra, 0x24($sp) -/* 089530 7F054A00 5611FFFA */ bnel $s0, $s1, .L7F0549EC -/* 089534 7F054A04 02002025 */ move $a0, $s0 -.L7F054A08: -/* 089538 7F054A08 8FBF0024 */ lw $ra, 0x24($sp) -.L7F054A0C: -/* 08953C 7F054A0C 8FB00018 */ lw $s0, 0x18($sp) -/* 089540 7F054A10 8FB1001C */ lw $s1, 0x1c($sp) -/* 089544 7F054A14 8FB20020 */ lw $s2, 0x20($sp) -/* 089548 7F054A18 03E00008 */ jr $ra -/* 08954C 7F054A1C 27BD0028 */ addiu $sp, $sp, 0x28 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F054A20(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F054A20 -/* 089550 7F054A20 808300BC */ lb $v1, 0xbc($a0) -/* 089554 7F054A24 2C620001 */ sltiu $v0, $v1, 1 -/* 089558 7F054A28 14400004 */ bnez $v0, .L7F054A3C -/* 08955C 7F054A2C 38620003 */ xori $v0, $v1, 3 -/* 089560 7F054A30 2C420001 */ sltiu $v0, $v0, 1 -/* 089564 7F054A34 10400009 */ beqz $v0, .L7F054A5C -/* 089568 7F054A38 00000000 */ nop -.L7F054A3C: -/* 08956C 7F054A3C 44802000 */ mtc1 $zero, $f4 -/* 089570 7F054A40 C48600B4 */ lwc1 $f6, 0xb4($a0) -/* 089574 7F054A44 00001025 */ move $v0, $zero -/* 089578 7F054A48 4604303E */ c.le.s $f6, $f4 -/* 08957C 7F054A4C 00000000 */ nop -/* 089580 7F054A50 45000002 */ bc1f .L7F054A5C -/* 089584 7F054A54 00000000 */ nop -/* 089588 7F054A58 24020001 */ li $v0, 1 -.L7F054A5C: -/* 08958C 7F054A5C 03E00008 */ jr $ra -/* 089590 7F054A60 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F054A64(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F054A64 -/* 089594 7F054A64 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 089598 7F054A68 AFB30020 */ sw $s3, 0x20($sp) -/* 08959C 7F054A6C AFB00014 */ sw $s0, 0x14($sp) -/* 0895A0 7F054A70 00A08025 */ move $s0, $a1 -/* 0895A4 7F054A74 27B30048 */ addiu $s3, $sp, 0x48 -/* 0895A8 7F054A78 AFBF0024 */ sw $ra, 0x24($sp) -/* 0895AC 7F054A7C AFB2001C */ sw $s2, 0x1c($sp) -/* 0895B0 7F054A80 AFB10018 */ sw $s1, 0x18($sp) -/* 0895B4 7F054A84 00009025 */ move $s2, $zero -/* 0895B8 7F054A88 0FC0F2E3 */ jal sub_GAME_7F03CB8C -/* 0895BC 7F054A8C 02602825 */ move $a1, $s3 -/* 0895C0 7F054A90 8FA40048 */ lw $a0, 0x48($sp) -/* 0895C4 7F054A94 02608825 */ move $s1, $s3 -/* 0895C8 7F054A98 27B3002C */ addiu $s3, $sp, 0x2c -/* 0895CC 7F054A9C 04820031 */ bltzl $a0, .L7F054B64 -/* 0895D0 7F054AA0 8FBF0024 */ lw $ra, 0x24($sp) -.L7F054AA4: -/* 0895D4 7F054AA4 0FC2CF03 */ jal sub_GAME_7F0B3C0C -/* 0895D8 7F054AA8 02602825 */ move $a1, $s3 -/* 0895DC 7F054AAC 10400028 */ beqz $v0, .L7F054B50 -/* 0895E0 7F054AB0 0012102B */ sltu $v0, $zero, $s2 -/* 0895E4 7F054AB4 1040001E */ beqz $v0, .L7F054B30 -/* 0895E8 7F054AB8 24120001 */ li $s2, 1 -/* 0895EC 7F054ABC C7A4002C */ lwc1 $f4, 0x2c($sp) -/* 0895F0 7F054AC0 C6060000 */ lwc1 $f6, ($s0) -/* 0895F4 7F054AC4 4606203C */ c.lt.s $f4, $f6 -/* 0895F8 7F054AC8 00000000 */ nop -/* 0895FC 7F054ACC 45020003 */ bc1fl .L7F054ADC -/* 089600 7F054AD0 C7A80030 */ lwc1 $f8, 0x30($sp) -/* 089604 7F054AD4 E6040000 */ swc1 $f4, ($s0) -/* 089608 7F054AD8 C7A80030 */ lwc1 $f8, 0x30($sp) -.L7F054ADC: -/* 08960C 7F054ADC C60A0004 */ lwc1 $f10, 4($s0) -/* 089610 7F054AE0 460A403C */ c.lt.s $f8, $f10 -/* 089614 7F054AE4 00000000 */ nop -/* 089618 7F054AE8 45020003 */ bc1fl .L7F054AF8 -/* 08961C 7F054AEC C6100008 */ lwc1 $f16, 8($s0) -/* 089620 7F054AF0 E6080004 */ swc1 $f8, 4($s0) -/* 089624 7F054AF4 C6100008 */ lwc1 $f16, 8($s0) -.L7F054AF8: -/* 089628 7F054AF8 C7B20034 */ lwc1 $f18, 0x34($sp) -/* 08962C 7F054AFC 4612803C */ c.lt.s $f16, $f18 -/* 089630 7F054B00 00000000 */ nop -/* 089634 7F054B04 45020003 */ bc1fl .L7F054B14 -/* 089638 7F054B08 C606000C */ lwc1 $f6, 0xc($s0) -/* 08963C 7F054B0C E6120008 */ swc1 $f18, 8($s0) -/* 089640 7F054B10 C606000C */ lwc1 $f6, 0xc($s0) -.L7F054B14: -/* 089644 7F054B14 C7A40038 */ lwc1 $f4, 0x38($sp) -/* 089648 7F054B18 4604303C */ c.lt.s $f6, $f4 -/* 08964C 7F054B1C 00000000 */ nop -/* 089650 7F054B20 4502000C */ bc1fl .L7F054B54 -/* 089654 7F054B24 8E240004 */ lw $a0, 4($s1) -/* 089658 7F054B28 10000009 */ b .L7F054B50 -/* 08965C 7F054B2C E604000C */ swc1 $f4, 0xc($s0) -.L7F054B30: -/* 089660 7F054B30 C7AA002C */ lwc1 $f10, 0x2c($sp) -/* 089664 7F054B34 E60A0000 */ swc1 $f10, ($s0) -/* 089668 7F054B38 C7A80030 */ lwc1 $f8, 0x30($sp) -/* 08966C 7F054B3C E6080004 */ swc1 $f8, 4($s0) -/* 089670 7F054B40 C7B00034 */ lwc1 $f16, 0x34($sp) -/* 089674 7F054B44 E6100008 */ swc1 $f16, 8($s0) -/* 089678 7F054B48 C7B20038 */ lwc1 $f18, 0x38($sp) -/* 08967C 7F054B4C E612000C */ swc1 $f18, 0xc($s0) -.L7F054B50: -/* 089680 7F054B50 8E240004 */ lw $a0, 4($s1) -.L7F054B54: -/* 089684 7F054B54 26310004 */ addiu $s1, $s1, 4 -/* 089688 7F054B58 0481FFD2 */ bgez $a0, .L7F054AA4 -/* 08968C 7F054B5C 00000000 */ nop -/* 089690 7F054B60 8FBF0024 */ lw $ra, 0x24($sp) -.L7F054B64: -/* 089694 7F054B64 02401025 */ move $v0, $s2 -/* 089698 7F054B68 8FB2001C */ lw $s2, 0x1c($sp) -/* 08969C 7F054B6C 8FB00014 */ lw $s0, 0x14($sp) -/* 0896A0 7F054B70 8FB10018 */ lw $s1, 0x18($sp) -/* 0896A4 7F054B74 8FB30020 */ lw $s3, 0x20($sp) -/* 0896A8 7F054B78 03E00008 */ jr $ra -/* 0896AC 7F054B7C 27BD0068 */ addiu $sp, $sp, 0x68 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F054B80(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F054B80 -/* 0896B0 7F054B80 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0896B4 7F054B84 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0896B8 7F054B88 44818000 */ mtc1 $at, $f16 -/* 0896BC 7F054B8C AFBF0014 */ sw $ra, 0x14($sp) -/* 0896C0 7F054B90 AFA40020 */ sw $a0, 0x20($sp) -/* 0896C4 7F054B94 AFA50024 */ sw $a1, 0x24($sp) -/* 0896C8 7F054B98 0FC2ECE6 */ jal return_nearfog_values -/* 0896CC 7F054B9C E7B0001C */ swc1 $f16, 0x1c($sp) -/* 0896D0 7F054BA0 10400028 */ beqz $v0, .L7F054C44 -/* 0896D4 7F054BA4 C7B0001C */ lwc1 $f16, 0x1c($sp) -/* 0896D8 7F054BA8 8FAE0020 */ lw $t6, 0x20($sp) -/* 0896DC 7F054BAC C4440008 */ lwc1 $f4, 8($v0) -/* 0896E0 7F054BB0 C5C60018 */ lwc1 $f6, 0x18($t6) -/* 0896E4 7F054BB4 4606203C */ c.lt.s $f4, $f6 -/* 0896E8 7F054BB8 00000000 */ nop -/* 0896EC 7F054BBC 45020022 */ bc1fl .L7F054C48 -/* 0896F0 7F054BC0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0896F4 7F054BC4 AFA20018 */ sw $v0, 0x18($sp) -/* 0896F8 7F054BC8 0FC1E121 */ jal getPlayer_c_lodscalez -/* 0896FC 7F054BCC E7B0001C */ swc1 $f16, 0x1c($sp) -/* 089700 7F054BD0 8FA30018 */ lw $v1, 0x18($sp) -/* 089704 7F054BD4 8FAF0020 */ lw $t7, 0x20($sp) -/* 089708 7F054BD8 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 08970C 7F054BDC C4620008 */ lwc1 $f2, 8($v1) -/* 089710 7F054BE0 C5E80018 */ lwc1 $f8, 0x18($t7) -/* 089714 7F054BE4 44819000 */ mtc1 $at, $f18 -/* 089718 7F054BE8 C7A60024 */ lwc1 $f6, 0x24($sp) -/* 08971C 7F054BEC 46024281 */ sub.s $f10, $f8, $f2 -/* 089720 7F054BF0 C46E0004 */ lwc1 $f14, 4($v1) -/* 089724 7F054BF4 C7B0001C */ lwc1 $f16, 0x1c($sp) -/* 089728 7F054BF8 46125102 */ mul.s $f4, $f10, $f18 -/* 08972C 7F054BFC 46062203 */ div.s $f8, $f4, $f6 -/* 089730 7F054C00 46024280 */ add.s $f10, $f8, $f2 -/* 089734 7F054C04 46005302 */ mul.s $f12, $f10, $f0 -/* 089738 7F054C08 460C703E */ c.le.s $f14, $f12 -/* 08973C 7F054C0C 00000000 */ nop -/* 089740 7F054C10 45020005 */ bc1fl .L7F054C28 -/* 089744 7F054C14 C4600000 */ lwc1 $f0, ($v1) -/* 089748 7F054C18 44808000 */ mtc1 $zero, $f16 -/* 08974C 7F054C1C 1000000A */ b .L7F054C48 -/* 089750 7F054C20 8FBF0014 */ lw $ra, 0x14($sp) -/* 089754 7F054C24 C4600000 */ lwc1 $f0, ($v1) -.L7F054C28: -/* 089758 7F054C28 460C003C */ c.lt.s $f0, $f12 -/* 08975C 7F054C2C 00000000 */ nop -/* 089760 7F054C30 45020005 */ bc1fl .L7F054C48 -/* 089764 7F054C34 8FBF0014 */ lw $ra, 0x14($sp) -/* 089768 7F054C38 460C7481 */ sub.s $f18, $f14, $f12 -/* 08976C 7F054C3C 46007101 */ sub.s $f4, $f14, $f0 -/* 089770 7F054C40 46049403 */ div.s $f16, $f18, $f4 -.L7F054C44: -/* 089774 7F054C44 8FBF0014 */ lw $ra, 0x14($sp) -.L7F054C48: -/* 089778 7F054C48 27BD0020 */ addiu $sp, $sp, 0x20 -/* 08977C 7F054C4C 46008006 */ mov.s $f0, $f16 -/* 089780 7F054C50 03E00008 */ jr $ra -/* 089784 7F054C54 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F054C58(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F054C58 -/* 089788 7F054C58 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 08978C 7F054C5C AFBF0014 */ sw $ra, 0x14($sp) -/* 089790 7F054C60 240E0001 */ li $t6, 1 -/* 089794 7F054C64 AFA40038 */ sw $a0, 0x38($sp) -/* 089798 7F054C68 AFA5003C */ sw $a1, 0x3c($sp) -/* 08979C 7F054C6C 0FC2ECE6 */ jal return_nearfog_values -/* 0897A0 7F054C70 AFAE0034 */ sw $t6, 0x34($sp) -/* 0897A4 7F054C74 50400039 */ beql $v0, $zero, .L7F054D5C -/* 0897A8 7F054C78 8FBF0014 */ lw $ra, 0x14($sp) -/* 0897AC 7F054C7C 0FC227F5 */ jal get_BONDdata_position -/* 0897B0 7F054C80 AFA20030 */ sw $v0, 0x30($sp) -/* 0897B4 7F054C84 0FC1E0F1 */ jal get_BONDdata_field_10CC -/* 0897B8 7F054C88 AFA2001C */ sw $v0, 0x1c($sp) -/* 0897BC 7F054C8C 8FA3001C */ lw $v1, 0x1c($sp) -/* 0897C0 7F054C90 8FA50038 */ lw $a1, 0x38($sp) -/* 0897C4 7F054C94 8FA40030 */ lw $a0, 0x30($sp) -/* 0897C8 7F054C98 C4660000 */ lwc1 $f6, ($v1) -/* 0897CC 7F054C9C C4A40000 */ lwc1 $f4, ($a1) -/* 0897D0 7F054CA0 46062201 */ sub.s $f8, $f4, $f6 -/* 0897D4 7F054CA4 E7A80024 */ swc1 $f8, 0x24($sp) -/* 0897D8 7F054CA8 C4700004 */ lwc1 $f16, 4($v1) -/* 0897DC 7F054CAC C4AA0004 */ lwc1 $f10, 4($a1) -/* 0897E0 7F054CB0 46105481 */ sub.s $f18, $f10, $f16 -/* 0897E4 7F054CB4 C7AA0024 */ lwc1 $f10, 0x24($sp) -/* 0897E8 7F054CB8 E7B20028 */ swc1 $f18, 0x28($sp) -/* 0897EC 7F054CBC C4660008 */ lwc1 $f6, 8($v1) -/* 0897F0 7F054CC0 C4A40008 */ lwc1 $f4, 8($a1) -/* 0897F4 7F054CC4 46062201 */ sub.s $f8, $f4, $f6 -/* 0897F8 7F054CC8 C7A40028 */ lwc1 $f4, 0x28($sp) -/* 0897FC 7F054CCC E7A8002C */ swc1 $f8, 0x2c($sp) -/* 089800 7F054CD0 C4500000 */ lwc1 $f16, ($v0) -/* 089804 7F054CD4 C4460004 */ lwc1 $f6, 4($v0) -/* 089808 7F054CD8 46105482 */ mul.s $f18, $f10, $f16 -/* 08980C 7F054CDC C4500008 */ lwc1 $f16, 8($v0) -/* 089810 7F054CE0 46062202 */ mul.s $f8, $f4, $f6 -/* 089814 7F054CE4 C7A4002C */ lwc1 $f4, 0x2c($sp) -/* 089818 7F054CE8 46048182 */ mul.s $f6, $f16, $f4 -/* 08981C 7F054CEC 46089280 */ add.s $f10, $f18, $f8 -/* 089820 7F054CF0 C4920008 */ lwc1 $f18, 8($a0) -/* 089824 7F054CF4 460A3300 */ add.s $f12, $f6, $f10 -/* 089828 7F054CF8 460C903C */ c.lt.s $f18, $f12 -/* 08982C 7F054CFC 00000000 */ nop -/* 089830 7F054D00 45020016 */ bc1fl .L7F054D5C -/* 089834 7F054D04 8FBF0014 */ lw $ra, 0x14($sp) -/* 089838 7F054D08 AFA40030 */ sw $a0, 0x30($sp) -/* 08983C 7F054D0C 0FC1E121 */ jal getPlayer_c_lodscalez -/* 089840 7F054D10 E7AC0020 */ swc1 $f12, 0x20($sp) -/* 089844 7F054D14 8FA40030 */ lw $a0, 0x30($sp) -/* 089848 7F054D18 C7AC0020 */ lwc1 $f12, 0x20($sp) -/* 08984C 7F054D1C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 089850 7F054D20 C4820008 */ lwc1 $f2, 8($a0) -/* 089854 7F054D24 44818000 */ mtc1 $at, $f16 -/* 089858 7F054D28 C7A6003C */ lwc1 $f6, 0x3c($sp) -/* 08985C 7F054D2C 46026201 */ sub.s $f8, $f12, $f2 -/* 089860 7F054D30 46104102 */ mul.s $f4, $f8, $f16 -/* 089864 7F054D34 C4880004 */ lwc1 $f8, 4($a0) -/* 089868 7F054D38 46062283 */ div.s $f10, $f4, $f6 -/* 08986C 7F054D3C 46025480 */ add.s $f18, $f10, $f2 -/* 089870 7F054D40 46009302 */ mul.s $f12, $f18, $f0 -/* 089874 7F054D44 460C403E */ c.le.s $f8, $f12 -/* 089878 7F054D48 00000000 */ nop -/* 08987C 7F054D4C 45020003 */ bc1fl .L7F054D5C -/* 089880 7F054D50 8FBF0014 */ lw $ra, 0x14($sp) -/* 089884 7F054D54 AFA00034 */ sw $zero, 0x34($sp) -/* 089888 7F054D58 8FBF0014 */ lw $ra, 0x14($sp) -.L7F054D5C: -/* 08988C 7F054D5C 8FA20034 */ lw $v0, 0x34($sp) -/* 089890 7F054D60 27BD0038 */ addiu $sp, $sp, 0x38 -/* 089894 7F054D64 03E00008 */ jr $ra -/* 089898 7F054D68 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F054D6C(void) { - -} -#else -GLOBAL_ASM( -.late_rodata -glabel D_8005345C -.word 0x4e742400 /*1.024e9*/ -glabel D_80053460 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053464 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053468 -.word 0x40490fdb /*3.1415927*/ -glabel D_8005346C -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053470 -.word 0x40490fdb /*3.1415927*/ -glabel D_80053474 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053478 -.word 0x40c90fdb /*6.2831855*/ -glabel D_8005347C -.word 0x40490fdb /*3.1415927*/ -glabel D_80053480 -.word 0x40c90fdb /*6.2831855*/ -glabel D_80053484 -.word 0x3eb2b8c3 /*0.34906587*/ -glabel D_80053488 -.word 0x40490fdb /*3.1415927*/ -glabel D_8005348C -.word 0x471c4000 /*40000.0*/ -.text -glabel sub_GAME_7F054D6C -/* 08989C 7F054D6C 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 0898A0 7F054D70 AFB10018 */ sw $s1, 0x18($sp) -/* 0898A4 7F054D74 00A08825 */ move $s1, $a1 -/* 0898A8 7F054D78 AFBF001C */ sw $ra, 0x1c($sp) -/* 0898AC 7F054D7C AFB00014 */ sw $s0, 0x14($sp) -/* 0898B0 7F054D80 AFA40070 */ sw $a0, 0x70($sp) -/* 0898B4 7F054D84 AFA60078 */ sw $a2, 0x78($sp) -/* 0898B8 7F054D88 AFA7007C */ sw $a3, 0x7c($sp) -/* 0898BC 7F054D8C AFA00044 */ sw $zero, 0x44($sp) -/* 0898C0 7F054D90 0FC0F2E3 */ jal sub_GAME_7F03CB8C -/* 0898C4 7F054D94 27A50050 */ addiu $a1, $sp, 0x50 -/* 0898C8 7F054D98 8FA40050 */ lw $a0, 0x50($sp) -/* 0898CC 7F054D9C 27B00050 */ addiu $s0, $sp, 0x50 -/* 0898D0 7F054DA0 0482003C */ bltzl $a0, .L7F054E94 -/* 0898D4 7F054DA4 8FBF001C */ lw $ra, 0x1c($sp) -.L7F054DA8: -/* 0898D8 7F054DA8 0FC2D794 */ jal sub_GAME_7F0B5E50 -/* 0898DC 7F054DAC 00000000 */ nop -/* 0898E0 7F054DB0 10400033 */ beqz $v0, .L7F054E80 -/* 0898E4 7F054DB4 02202025 */ move $a0, $s1 -/* 0898E8 7F054DB8 0FC2ECB2 */ jal sub_GAME_7F0BB2C8 -/* 0898EC 7F054DBC 8FA50078 */ lw $a1, 0x78($sp) -/* 0898F0 7F054DC0 10400033 */ beqz $v0, .L7F054E90 -/* 0898F4 7F054DC4 8FAE007C */ lw $t6, 0x7c($sp) -/* 0898F8 7F054DC8 11C00004 */ beqz $t6, .L7F054DDC -/* 0898FC 7F054DCC 02202025 */ move $a0, $s1 -/* 089900 7F054DD0 0FC15316 */ jal sub_GAME_7F054C58 -/* 089904 7F054DD4 8FA50078 */ lw $a1, 0x78($sp) -/* 089908 7F054DD8 1040002D */ beqz $v0, .L7F054E90 -.L7F054DDC: -/* 08990C 7F054DDC 27B00034 */ addiu $s0, $sp, 0x34 -/* 089910 7F054DE0 02002825 */ move $a1, $s0 -/* 089914 7F054DE4 0FC15299 */ jal sub_GAME_7F054A64 -/* 089918 7F054DE8 8FA40070 */ lw $a0, 0x70($sp) -/* 08991C 7F054DEC 10400007 */ beqz $v0, .L7F054E0C -/* 089920 7F054DF0 02202025 */ move $a0, $s1 -/* 089924 7F054DF4 02202025 */ move $a0, $s1 -/* 089928 7F054DF8 8FA50078 */ lw $a1, 0x78($sp) -/* 08992C 7F054DFC 0FC1E2FD */ jal sub_GAME_7F078BF4 -/* 089930 7F054E00 02003025 */ move $a2, $s0 -/* 089934 7F054E04 10000004 */ b .L7F054E18 -/* 089938 7F054E08 AFA20044 */ sw $v0, 0x44($sp) -.L7F054E0C: -/* 08993C 7F054E0C 0FC1E296 */ jal sub_GAME_7F078A58 -/* 089940 7F054E10 8FA50078 */ lw $a1, 0x78($sp) -/* 089944 7F054E14 AFA20044 */ sw $v0, 0x44($sp) -.L7F054E18: -/* 089948 7F054E18 5040001E */ beql $v0, $zero, .L7F054E94 -/* 08994C 7F054E1C 8FBF001C */ lw $ra, 0x1c($sp) -/* 089950 7F054E20 0FC227F5 */ jal get_BONDdata_position -/* 089954 7F054E24 00000000 */ nop -/* 089958 7F054E28 C6240000 */ lwc1 $f4, ($s1) -/* 08995C 7F054E2C C4460000 */ lwc1 $f6, ($v0) -/* 089960 7F054E30 C6280004 */ lwc1 $f8, 4($s1) -/* 089964 7F054E34 C44A0004 */ lwc1 $f10, 4($v0) -/* 089968 7F054E38 46062001 */ sub.s $f0, $f4, $f6 -/* 08996C 7F054E3C C6300008 */ lwc1 $f16, 8($s1) -/* 089970 7F054E40 C4520008 */ lwc1 $f18, 8($v0) -/* 089974 7F054E44 460A4081 */ sub.s $f2, $f8, $f10 -/* 089978 7F054E48 46000182 */ mul.s $f6, $f0, $f0 -/* 08997C 7F054E4C 3C018005 */ lui $at, %hi(D_8005345C) -/* 089980 7F054E50 46128301 */ sub.s $f12, $f16, $f18 -/* 089984 7F054E54 46021202 */ mul.s $f8, $f2, $f2 -/* 089988 7F054E58 C424345C */ lwc1 $f4, %lo(D_8005345C)($at) -/* 08998C 7F054E5C 460C6402 */ mul.s $f16, $f12, $f12 -/* 089990 7F054E60 46083280 */ add.s $f10, $f6, $f8 -/* 089994 7F054E64 46105480 */ add.s $f18, $f10, $f16 -/* 089998 7F054E68 4612203C */ c.lt.s $f4, $f18 -/* 08999C 7F054E6C 00000000 */ nop -/* 0899A0 7F054E70 45020008 */ bc1fl .L7F054E94 -/* 0899A4 7F054E74 8FBF001C */ lw $ra, 0x1c($sp) -/* 0899A8 7F054E78 10000005 */ b .L7F054E90 -/* 0899AC 7F054E7C AFA00044 */ sw $zero, 0x44($sp) -.L7F054E80: -/* 0899B0 7F054E80 8E040004 */ lw $a0, 4($s0) -/* 0899B4 7F054E84 26100004 */ addiu $s0, $s0, 4 -/* 0899B8 7F054E88 0481FFC7 */ bgez $a0, .L7F054DA8 -/* 0899BC 7F054E8C 00000000 */ nop -.L7F054E90: -/* 0899C0 7F054E90 8FBF001C */ lw $ra, 0x1c($sp) -.L7F054E94: -/* 0899C4 7F054E94 8FA20044 */ lw $v0, 0x44($sp) -/* 0899C8 7F054E98 8FB00014 */ lw $s0, 0x14($sp) -/* 0899CC 7F054E9C 8FB10018 */ lw $s1, 0x18($sp) -/* 0899D0 7F054EA0 03E00008 */ jr $ra -/* 0899D4 7F054EA4 27BD0070 */ addiu $sp, $sp, 0x70 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F054EA8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F054EA8 -/* 0899D8 7F054EA8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0899DC 7F054EAC AFBF0024 */ sw $ra, 0x24($sp) -/* 0899E0 7F054EB0 AFB00020 */ sw $s0, 0x20($sp) -/* 0899E4 7F054EB4 808200BC */ lb $v0, 0xbc($a0) -/* 0899E8 7F054EB8 24010001 */ li $at, 1 -/* 0899EC 7F054EBC 00808025 */ move $s0, $a0 -/* 0899F0 7F054EC0 1441001C */ bne $v0, $at, .L7F054F34 -/* 0899F4 7F054EC4 00001825 */ move $v1, $zero -/* 0899F8 7F054EC8 C6040090 */ lwc1 $f4, 0x90($s0) -/* 0899FC 7F054ECC 8E050084 */ lw $a1, 0x84($s0) -/* 089A00 7F054ED0 8E07008C */ lw $a3, 0x8c($s0) -/* 089A04 7F054ED4 E7A40010 */ swc1 $f4, 0x10($sp) -/* 089A08 7F054ED8 C6060094 */ lwc1 $f6, 0x94($s0) -/* 089A0C 7F054EDC 248400B4 */ addiu $a0, $a0, 0xb4 -/* 089A10 7F054EE0 260600B8 */ addiu $a2, $s0, 0xb8 -/* 089A14 7F054EE4 0FC10BC6 */ jal sub_GAME_7F042F18 -/* 089A18 7F054EE8 E7A60014 */ swc1 $f6, 0x14($sp) -/* 089A1C 7F054EEC C60200B4 */ lwc1 $f2, 0xb4($s0) -/* 089A20 7F054EF0 C6000084 */ lwc1 $f0, 0x84($s0) -/* 089A24 7F054EF4 24030001 */ li $v1, 1 -/* 089A28 7F054EF8 4602003E */ c.le.s $f0, $f2 -/* 089A2C 7F054EFC 00000000 */ nop -/* 089A30 7F054F00 45020004 */ bc1fl .L7F054F14 -/* 089A34 7F054F04 44806000 */ mtc1 $zero, $f12 -/* 089A38 7F054F08 10000025 */ b .L7F054FA0 -/* 089A3C 7F054F0C E60000B4 */ swc1 $f0, 0xb4($s0) -/* 089A40 7F054F10 44806000 */ mtc1 $zero, $f12 -.L7F054F14: -/* 089A44 7F054F14 00000000 */ nop -/* 089A48 7F054F18 460C103E */ c.le.s $f2, $f12 -/* 089A4C 7F054F1C 00000000 */ nop -/* 089A50 7F054F20 45000002 */ bc1f .L7F054F2C -/* 089A54 7F054F24 00000000 */ nop -/* 089A58 7F054F28 E60C00B4 */ swc1 $f12, 0xb4($s0) -.L7F054F2C: -/* 089A5C 7F054F2C 1000001C */ b .L7F054FA0 -/* 089A60 7F054F30 24030001 */ li $v1, 1 -.L7F054F34: -/* 089A64 7F054F34 24010002 */ li $at, 2 -/* 089A68 7F054F38 14410019 */ bne $v0, $at, .L7F054FA0 -/* 089A6C 7F054F3C 260400B4 */ addiu $a0, $s0, 0xb4 -/* 089A70 7F054F40 C6080090 */ lwc1 $f8, 0x90($s0) -/* 089A74 7F054F44 44806000 */ mtc1 $zero, $f12 -/* 089A78 7F054F48 8E07008C */ lw $a3, 0x8c($s0) -/* 089A7C 7F054F4C E7A80010 */ swc1 $f8, 0x10($sp) -/* 089A80 7F054F50 C60A0094 */ lwc1 $f10, 0x94($s0) -/* 089A84 7F054F54 44056000 */ mfc1 $a1, $f12 -/* 089A88 7F054F58 260600B8 */ addiu $a2, $s0, 0xb8 -/* 089A8C 7F054F5C 0FC10BC6 */ jal sub_GAME_7F042F18 -/* 089A90 7F054F60 E7AA0014 */ swc1 $f10, 0x14($sp) -/* 089A94 7F054F64 C60200B4 */ lwc1 $f2, 0xb4($s0) -/* 089A98 7F054F68 C6000084 */ lwc1 $f0, 0x84($s0) -/* 089A9C 7F054F6C 44806000 */ mtc1 $zero, $f12 -/* 089AA0 7F054F70 24030001 */ li $v1, 1 -/* 089AA4 7F054F74 4602003E */ c.le.s $f0, $f2 -/* 089AA8 7F054F78 00000000 */ nop -/* 089AAC 7F054F7C 45020004 */ bc1fl .L7F054F90 -/* 089AB0 7F054F80 460C103E */ c.le.s $f2, $f12 -/* 089AB4 7F054F84 10000006 */ b .L7F054FA0 -/* 089AB8 7F054F88 E60000B4 */ swc1 $f0, 0xb4($s0) -/* 089ABC 7F054F8C 460C103E */ c.le.s $f2, $f12 -.L7F054F90: -/* 089AC0 7F054F90 00000000 */ nop -/* 089AC4 7F054F94 45000002 */ bc1f .L7F054FA0 -/* 089AC8 7F054F98 00000000 */ nop -/* 089ACC 7F054F9C E60C00B4 */ swc1 $f12, 0xb4($s0) -.L7F054FA0: -/* 089AD0 7F054FA0 8FBF0024 */ lw $ra, 0x24($sp) -/* 089AD4 7F054FA4 8FB00020 */ lw $s0, 0x20($sp) -/* 089AD8 7F054FA8 27BD0028 */ addiu $sp, $sp, 0x28 -/* 089ADC 7F054FAC 03E00008 */ jr $ra -/* 089AE0 7F054FB0 00601025 */ move $v0, $v1 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F054FB4(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F054FB4 -/* 089AE4 7F054FB4 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 089AE8 7F054FB8 AFB50030 */ sw $s5, 0x30($sp) -/* 089AEC 7F054FBC AFB4002C */ sw $s4, 0x2c($sp) -/* 089AF0 7F054FC0 AFB20024 */ sw $s2, 0x24($sp) -/* 089AF4 7F054FC4 AFB10020 */ sw $s1, 0x20($sp) -/* 089AF8 7F054FC8 00809025 */ move $s2, $a0 -/* 089AFC 7F054FCC AFBF0034 */ sw $ra, 0x34($sp) -/* 089B00 7F054FD0 AFB30028 */ sw $s3, 0x28($sp) -/* 089B04 7F054FD4 AFB0001C */ sw $s0, 0x1c($sp) -/* 089B08 7F054FD8 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 089B0C 7F054FDC 0000A025 */ move $s4, $zero -/* 089B10 7F054FE0 24150001 */ li $s5, 1 -/* 089B14 7F054FE4 10800010 */ beqz $a0, .L7F055028 -/* 089B18 7F054FE8 00808825 */ move $s1, $a0 -/* 089B1C 7F054FEC C62400B4 */ lwc1 $f4, 0xb4($s1) -.L7F054FF0: -/* 089B20 7F054FF0 02202025 */ move $a0, $s1 -/* 089B24 7F054FF4 0FC153AA */ jal sub_GAME_7F054EA8 -/* 089B28 7F054FF8 E62400FC */ swc1 $f4, 0xfc($s1) -/* 089B2C 7F054FFC 50400003 */ beql $v0, $zero, .L7F05500C -/* 089B30 7F055000 8E3100C8 */ lw $s1, 0xc8($s1) -/* 089B34 7F055004 24140001 */ li $s4, 1 -/* 089B38 7F055008 8E3100C8 */ lw $s1, 0xc8($s1) -.L7F05500C: -/* 089B3C 7F05500C 16320003 */ bne $s1, $s2, .L7F05501C -/* 089B40 7F055010 00000000 */ nop -/* 089B44 7F055014 10000004 */ b .L7F055028 -/* 089B48 7F055018 02408825 */ move $s1, $s2 -.L7F05501C: -/* 089B4C 7F05501C 5620FFF4 */ bnezl $s1, .L7F054FF0 -/* 089B50 7F055020 C62400B4 */ lwc1 $f4, 0xb4($s1) -/* 089B54 7F055024 02408825 */ move $s1, $s2 -.L7F055028: -/* 089B58 7F055028 12800013 */ beqz $s4, .L7F055078 -/* 089B5C 7F05502C 00000000 */ nop -/* 089B60 7F055030 12400011 */ beqz $s2, .L7F055078 -/* 089B64 7F055034 00000000 */ nop -.L7F055038: -/* 089B68 7F055038 0FC14AC0 */ jal sub_GAME_7F052B00 -/* 089B6C 7F05503C 02202025 */ move $a0, $s1 -/* 089B70 7F055040 0FC1122A */ jal sub_GAME_7F0448A8 -/* 089B74 7F055044 8E240010 */ lw $a0, 0x10($s1) -/* 089B78 7F055048 14400003 */ bnez $v0, .L7F055058 -/* 089B7C 7F05504C 0040A825 */ move $s5, $v0 -/* 089B80 7F055050 10000009 */ b .L7F055078 -/* 089B84 7F055054 02408825 */ move $s1, $s2 -.L7F055058: -/* 089B88 7F055058 8E3100C8 */ lw $s1, 0xc8($s1) -/* 089B8C 7F05505C 16320003 */ bne $s1, $s2, .L7F05506C -/* 089B90 7F055060 00000000 */ nop -/* 089B94 7F055064 10000004 */ b .L7F055078 -/* 089B98 7F055068 02408825 */ move $s1, $s2 -.L7F05506C: -/* 089B9C 7F05506C 1620FFF2 */ bnez $s1, .L7F055038 -/* 089BA0 7F055070 00000000 */ nop -/* 089BA4 7F055074 02408825 */ move $s1, $s2 -.L7F055078: -/* 089BA8 7F055078 12400062 */ beqz $s2, .L7F055204 -/* 089BAC 7F05507C 3C138005 */ lui $s3, %hi(global_timer) -/* 089BB0 7F055080 4480A000 */ mtc1 $zero, $f20 -/* 089BB4 7F055084 2673837C */ addiu $s3, %lo(global_timer) # addiu $s3, $s3, -0x7c84 -.L7F055088: -/* 089BB8 7F055088 52800030 */ beql $s4, $zero, .L7F05514C -/* 089BBC 7F05508C 962F0098 */ lhu $t7, 0x98($s1) -/* 089BC0 7F055090 12A00025 */ beqz $s5, .L7F055128 -/* 089BC4 7F055094 02202025 */ move $a0, $s1 -/* 089BC8 7F055098 822200BC */ lb $v0, 0xbc($s1) -/* 089BCC 7F05509C 24010001 */ li $at, 1 -/* 089BD0 7F0550A0 54410010 */ bnel $v0, $at, .L7F0550E4 -/* 089BD4 7F0550A4 24010002 */ li $at, 2 -/* 089BD8 7F0550A8 C62600B4 */ lwc1 $f6, 0xb4($s1) -/* 089BDC 7F0550AC C6280084 */ lwc1 $f8, 0x84($s1) -/* 089BE0 7F0550B0 4606403E */ c.le.s $f8, $f6 -/* 089BE4 7F0550B4 00000000 */ nop -/* 089BE8 7F0550B8 45020017 */ bc1fl .L7F055118 -/* 089BEC 7F0550BC 8E240010 */ lw $a0, 0x10($s1) -/* 089BF0 7F0550C0 A22000BC */ sb $zero, 0xbc($s1) -/* 089BF4 7F0550C4 E63400B8 */ swc1 $f20, 0xb8($s1) -/* 089BF8 7F0550C8 8E6E0000 */ lw $t6, ($s3) -/* 089BFC 7F0550CC 02202025 */ move $a0, $s1 -/* 089C00 7F0550D0 0FC15203 */ jal sub_GAME_7F05480C -/* 089C04 7F0550D4 AE2E00EC */ sw $t6, 0xec($s1) -/* 089C08 7F0550D8 1000000F */ b .L7F055118 -/* 089C0C 7F0550DC 8E240010 */ lw $a0, 0x10($s1) -/* 089C10 7F0550E0 24010002 */ li $at, 2 -.L7F0550E4: -/* 089C14 7F0550E4 5441000C */ bnel $v0, $at, .L7F055118 -/* 089C18 7F0550E8 8E240010 */ lw $a0, 0x10($s1) -/* 089C1C 7F0550EC C62A00B4 */ lwc1 $f10, 0xb4($s1) -/* 089C20 7F0550F0 02202025 */ move $a0, $s1 -/* 089C24 7F0550F4 4614503E */ c.le.s $f10, $f20 -/* 089C28 7F0550F8 00000000 */ nop -/* 089C2C 7F0550FC 45020006 */ bc1fl .L7F055118 -/* 089C30 7F055100 8E240010 */ lw $a0, 0x10($s1) -/* 089C34 7F055104 A22000BC */ sb $zero, 0xbc($s1) -/* 089C38 7F055108 E63400B8 */ swc1 $f20, 0xb8($s1) -/* 089C3C 7F05510C 0FC1521F */ jal sub_GAME_7F05487C -/* 089C40 7F055110 AE2000EC */ sw $zero, 0xec($s1) -/* 089C44 7F055114 8E240010 */ lw $a0, 0x10($s1) -.L7F055118: -/* 089C48 7F055118 0FC100AD */ jal sub_GAME_7F0402B4 -/* 089C4C 7F05511C 2625007C */ addiu $a1, $s1, 0x7c -/* 089C50 7F055120 10000005 */ b .L7F055138 -/* 089C54 7F055124 00000000 */ nop -.L7F055128: -/* 089C58 7F055128 C63000FC */ lwc1 $f16, 0xfc($s1) -/* 089C5C 7F05512C E63400B8 */ swc1 $f20, 0xb8($s1) -/* 089C60 7F055130 0FC14AC0 */ jal sub_GAME_7F052B00 -/* 089C64 7F055134 E63000B4 */ swc1 $f16, 0xb4($s1) -.L7F055138: -/* 089C68 7F055138 0FC14B63 */ jal sub_GAME_7F052D8C -/* 089C6C 7F05513C 02202025 */ move $a0, $s1 -/* 089C70 7F055140 1000002A */ b .L7F0551EC -/* 089C74 7F055144 8E690000 */ lw $t1, ($s3) -/* 089C78 7F055148 962F0098 */ lhu $t7, 0x98($s1) -.L7F05514C: -/* 089C7C 7F05514C 31F80004 */ andi $t8, $t7, 4 -/* 089C80 7F055150 53000026 */ beql $t8, $zero, .L7F0551EC -/* 089C84 7F055154 8E690000 */ lw $t1, ($s3) -/* 089C88 7F055158 8E240014 */ lw $a0, 0x14($s1) -/* 089C8C 7F05515C 8C990008 */ lw $t9, 8($a0) -/* 089C90 7F055160 8F280000 */ lw $t0, ($t9) -/* 089C94 7F055164 8D090014 */ lw $t1, 0x14($t0) -/* 089C98 7F055168 8D250014 */ lw $a1, 0x14($t1) -/* 089C9C 7F05516C 0FC1B1E7 */ jal extract_id_from_object_structure_microcode -/* 089CA0 7F055170 8CB00004 */ lw $s0, 4($a1) -/* 089CA4 7F055174 8E2300CC */ lw $v1, 0xcc($s1) -/* 089CA8 7F055178 8C4A0000 */ lw $t2, ($v0) -/* 089CAC 7F05517C 506A001A */ beql $v1, $t2, .L7F0551E8 -/* 089CB0 7F055180 AC430000 */ sw $v1, ($v0) -/* 089CB4 7F055184 860B000C */ lh $t3, 0xc($s0) -/* 089CB8 7F055188 00002025 */ move $a0, $zero -/* 089CBC 7F05518C 59600016 */ blezl $t3, .L7F0551E8 -/* 089CC0 7F055190 AC430000 */ sw $v1, ($v0) -/* 089CC4 7F055194 00001825 */ move $v1, $zero -/* 089CC8 7F055198 8C4E0000 */ lw $t6, ($v0) -.L7F05519C: -/* 089CCC 7F05519C 8E2C00CC */ lw $t4, 0xcc($s1) -/* 089CD0 7F0551A0 24840001 */ addiu $a0, $a0, 1 -/* 089CD4 7F0551A4 01C37821 */ addu $t7, $t6, $v1 -/* 089CD8 7F0551A8 8DE10000 */ lw $at, ($t7) -/* 089CDC 7F0551AC 01836821 */ addu $t5, $t4, $v1 -/* 089CE0 7F0551B0 24630010 */ addiu $v1, $v1, 0x10 -/* 089CE4 7F0551B4 ADA10000 */ sw $at, ($t5) -/* 089CE8 7F0551B8 8DF90004 */ lw $t9, 4($t7) -/* 089CEC 7F0551BC ADB90004 */ sw $t9, 4($t5) -/* 089CF0 7F0551C0 8DE10008 */ lw $at, 8($t7) -/* 089CF4 7F0551C4 ADA10008 */ sw $at, 8($t5) -/* 089CF8 7F0551C8 8DF9000C */ lw $t9, 0xc($t7) -/* 089CFC 7F0551CC ADB9000C */ sw $t9, 0xc($t5) -/* 089D00 7F0551D0 8608000C */ lh $t0, 0xc($s0) -/* 089D04 7F0551D4 0088082A */ slt $at, $a0, $t0 -/* 089D08 7F0551D8 5420FFF0 */ bnezl $at, .L7F05519C -/* 089D0C 7F0551DC 8C4E0000 */ lw $t6, ($v0) -/* 089D10 7F0551E0 8E2300CC */ lw $v1, 0xcc($s1) -/* 089D14 7F0551E4 AC430000 */ sw $v1, ($v0) -.L7F0551E8: -/* 089D18 7F0551E8 8E690000 */ lw $t1, ($s3) -.L7F0551EC: -/* 089D1C 7F0551EC AE2900FC */ sw $t1, 0xfc($s1) -/* 089D20 7F0551F0 8E3100C8 */ lw $s1, 0xc8($s1) -/* 089D24 7F0551F4 52320004 */ beql $s1, $s2, .L7F055208 -/* 089D28 7F0551F8 8FBF0034 */ lw $ra, 0x34($sp) -/* 089D2C 7F0551FC 1620FFA2 */ bnez $s1, .L7F055088 -/* 089D30 7F055200 00000000 */ nop -.L7F055204: -/* 089D34 7F055204 8FBF0034 */ lw $ra, 0x34($sp) -.L7F055208: -/* 089D38 7F055208 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 089D3C 7F05520C 8FB0001C */ lw $s0, 0x1c($sp) -/* 089D40 7F055210 8FB10020 */ lw $s1, 0x20($sp) -/* 089D44 7F055214 8FB20024 */ lw $s2, 0x24($sp) -/* 089D48 7F055218 8FB30028 */ lw $s3, 0x28($sp) -/* 089D4C 7F05521C 8FB4002C */ lw $s4, 0x2c($sp) -/* 089D50 7F055220 8FB50030 */ lw $s5, 0x30($sp) -/* 089D54 7F055224 03E00008 */ jr $ra -/* 089D58 7F055228 27BD0038 */ addiu $sp, $sp, 0x38 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F05522C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05522C -/* 089D5C 7F05522C 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 089D60 7F055230 AFBF0014 */ sw $ra, 0x14($sp) -/* 089D64 7F055234 AFA40068 */ sw $a0, 0x68($sp) -/* 089D68 7F055238 AFA5006C */ sw $a1, 0x6c($sp) -/* 089D6C 7F05523C AFA60070 */ sw $a2, 0x70($sp) -/* 089D70 7F055240 AFA70074 */ sw $a3, 0x74($sp) -/* 089D74 7F055244 84990006 */ lh $t9, 6($a0) -/* 089D78 7F055248 3C098007 */ lui $t1, %hi(ptr_2xxxpresets) -/* 089D7C 7F05524C 8D295D1C */ lw $t1, %lo(ptr_2xxxpresets)($t1) -/* 089D80 7F055250 00194100 */ sll $t0, $t9, 4 -/* 089D84 7F055254 01194021 */ addu $t0, $t0, $t9 -/* 089D88 7F055258 00084080 */ sll $t0, $t0, 2 -/* 089D8C 7F05525C 01091821 */ addu $v1, $t0, $t1 -/* 089D90 7F055260 0FC225E6 */ jal get_curplayer_positiondata -/* 089D94 7F055264 AFA3005C */ sw $v1, 0x5c($sp) -/* 089D98 7F055268 3C048008 */ lui $a0, %hi(pPlayer) -/* 089D9C 7F05526C 8C84A0B0 */ lw $a0, %lo(pPlayer)($a0) -/* 089DA0 7F055270 3C0141F0 */ li $at, 0x41F00000 # 30.000000 -/* 089DA4 7F055274 44810000 */ mtc1 $at, $f0 -/* 089DA8 7F055278 C4840498 */ lwc1 $f4, 0x498($a0) -/* 089DAC 7F05527C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 089DB0 7F055280 44811000 */ mtc1 $at, $f2 -/* 089DB4 7F055284 46002282 */ mul.s $f10, $f4, $f0 -/* 089DB8 7F055288 3C013F40 */ li $at, 0x3F400000 # 0.750000 -/* 089DBC 7F05528C 44816000 */ mtc1 $at, $f12 -/* 089DC0 7F055290 C4440008 */ lwc1 $f4, 8($v0) -/* 089DC4 7F055294 8FAA0074 */ lw $t2, 0x74($sp) -/* 089DC8 7F055298 8FA3005C */ lw $v1, 0x5c($sp) -/* 089DCC 7F05529C 46025202 */ mul.s $f8, $f10, $f2 -/* 089DD0 7F0552A0 00000000 */ nop -/* 089DD4 7F0552A4 460C4182 */ mul.s $f6, $f8, $f12 -/* 089DD8 7F0552A8 46043280 */ add.s $f10, $f6, $f4 -/* 089DDC 7F0552AC E7AA0030 */ swc1 $f10, 0x30($sp) -/* 089DE0 7F0552B0 C448000C */ lwc1 $f8, 0xc($v0) -/* 089DE4 7F0552B4 E7A80034 */ swc1 $f8, 0x34($sp) -/* 089DE8 7F0552B8 C48604A0 */ lwc1 $f6, 0x4a0($a0) -/* 089DEC 7F0552BC 46003102 */ mul.s $f4, $f6, $f0 -/* 089DF0 7F0552C0 C4460010 */ lwc1 $f6, 0x10($v0) -/* 089DF4 7F0552C4 46022282 */ mul.s $f10, $f4, $f2 -/* 089DF8 7F0552C8 00000000 */ nop -/* 089DFC 7F0552CC 460C5202 */ mul.s $f8, $f10, $f12 -/* 089E00 7F0552D0 46064100 */ add.s $f4, $f8, $f6 -/* 089E04 7F0552D4 1140001D */ beqz $t2, .L7F05534C -/* 089E08 7F0552D8 E7A40038 */ swc1 $f4, 0x38($sp) -/* 089E0C 7F0552DC C46A0030 */ lwc1 $f10, 0x30($v1) -/* 089E10 7F0552E0 C472002C */ lwc1 $f18, 0x2c($v1) -/* 089E14 7F0552E4 E7AA003C */ swc1 $f10, 0x3c($sp) -/* 089E18 7F0552E8 C4680010 */ lwc1 $f8, 0x10($v1) -/* 089E1C 7F0552EC C4660020 */ lwc1 $f6, 0x20($v1) -/* 089E20 7F0552F0 C46A001C */ lwc1 $f10, 0x1c($v1) -/* 089E24 7F0552F4 46064102 */ mul.s $f4, $f8, $f6 -/* 089E28 7F0552F8 C4680014 */ lwc1 $f8, 0x14($v1) -/* 089E2C 7F0552FC 46085182 */ mul.s $f6, $f10, $f8 -/* 089E30 7F055300 46062281 */ sub.s $f10, $f4, $f6 -/* 089E34 7F055304 E7AA0044 */ swc1 $f10, 0x44($sp) -/* 089E38 7F055308 C4640018 */ lwc1 $f4, 0x18($v1) -/* 089E3C 7F05530C C4680014 */ lwc1 $f8, 0x14($v1) -/* 089E40 7F055310 C46A0020 */ lwc1 $f10, 0x20($v1) -/* 089E44 7F055314 46044182 */ mul.s $f6, $f8, $f4 -/* 089E48 7F055318 C468000C */ lwc1 $f8, 0xc($v1) -/* 089E4C 7F05531C 46085102 */ mul.s $f4, $f10, $f8 -/* 089E50 7F055320 46043281 */ sub.s $f10, $f6, $f4 -/* 089E54 7F055324 E7AA0048 */ swc1 $f10, 0x48($sp) -/* 089E58 7F055328 C466001C */ lwc1 $f6, 0x1c($v1) -/* 089E5C 7F05532C C468000C */ lwc1 $f8, 0xc($v1) -/* 089E60 7F055330 C46A0018 */ lwc1 $f10, 0x18($v1) -/* 089E64 7F055334 46064102 */ mul.s $f4, $f8, $f6 -/* 089E68 7F055338 C4680010 */ lwc1 $f8, 0x10($v1) -/* 089E6C 7F05533C 46085182 */ mul.s $f6, $f10, $f8 -/* 089E70 7F055340 46062281 */ sub.s $f10, $f4, $f6 -/* 089E74 7F055344 1000000A */ b .L7F055370 -/* 089E78 7F055348 E7AA004C */ swc1 $f10, 0x4c($sp) -.L7F05534C: -/* 089E7C 7F05534C C4680038 */ lwc1 $f8, 0x38($v1) -/* 089E80 7F055350 C4720034 */ lwc1 $f18, 0x34($v1) -/* 089E84 7F055354 E7A8003C */ swc1 $f8, 0x3c($sp) -/* 089E88 7F055358 C464000C */ lwc1 $f4, 0xc($v1) -/* 089E8C 7F05535C E7A40044 */ swc1 $f4, 0x44($sp) -/* 089E90 7F055360 C4660010 */ lwc1 $f6, 0x10($v1) -/* 089E94 7F055364 E7A60048 */ swc1 $f6, 0x48($sp) -/* 089E98 7F055368 C46A0014 */ lwc1 $f10, 0x14($v1) -/* 089E9C 7F05536C E7AA004C */ swc1 $f10, 0x4c($sp) -.L7F055370: -/* 089EA0 7F055370 C7A40044 */ lwc1 $f4, 0x44($sp) -/* 089EA4 7F055374 C4680000 */ lwc1 $f8, ($v1) -/* 089EA8 7F055378 46122182 */ mul.s $f6, $f4, $f18 -/* 089EAC 7F05537C C7A40030 */ lwc1 $f4, 0x30($sp) -/* 089EB0 7F055380 46064280 */ add.s $f10, $f8, $f6 -/* 089EB4 7F055384 C7A6004C */ lwc1 $f6, 0x4c($sp) -/* 089EB8 7F055388 C4680008 */ lwc1 $f8, 8($v1) -/* 089EBC 7F05538C E7B20040 */ swc1 $f18, 0x40($sp) -/* 089EC0 7F055390 46045301 */ sub.s $f12, $f10, $f4 -/* 089EC4 7F055394 46123282 */ mul.s $f10, $f6, $f18 -/* 089EC8 7F055398 C7A60038 */ lwc1 $f6, 0x38($sp) -/* 089ECC 7F05539C AFA3005C */ sw $v1, 0x5c($sp) -/* 089ED0 7F0553A0 460A4100 */ add.s $f4, $f8, $f10 -/* 089ED4 7F0553A4 0FC16A8C */ jal convert_angle_using_inverse -/* 089ED8 7F0553A8 46062381 */ sub.s $f14, $f4, $f6 -/* 089EDC 7F0553AC 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees -/* 089EE0 7F0553B0 E7A00020 */ swc1 $f0, 0x20($sp) -/* 089EE4 7F0553B4 C7AC0020 */ lwc1 $f12, 0x20($sp) -/* 089EE8 7F0553B8 8FA3005C */ lw $v1, 0x5c($sp) -/* 089EEC 7F0553BC C7B20040 */ lwc1 $f18, 0x40($sp) -/* 089EF0 7F0553C0 4600603C */ c.lt.s $f12, $f0 -/* 089EF4 7F0553C4 3C018005 */ lui $at, %hi(D_80053460) -/* 089EF8 7F0553C8 46006381 */ sub.s $f14, $f12, $f0 -/* 089EFC 7F0553CC 8FA20068 */ lw $v0, 0x68($sp) -/* 089F00 7F0553D0 C7B0003C */ lwc1 $f16, 0x3c($sp) -/* 089F04 7F0553D4 45000003 */ bc1f .L7F0553E4 -/* 089F08 7F0553D8 46007086 */ mov.s $f2, $f14 -/* 089F0C 7F0553DC C4203460 */ lwc1 $f0, %lo(D_80053460)($at) -/* 089F10 7F0553E0 46007080 */ add.s $f2, $f14, $f0 -.L7F0553E4: -/* 089F14 7F0553E4 3C018005 */ lui $at, %hi(D_80053464) -/* 089F18 7F0553E8 C4203464 */ lwc1 $f0, %lo(D_80053464)($at) -/* 089F1C 7F0553EC 3C018005 */ lui $at, %hi(D_80053468) -/* 089F20 7F0553F0 C4283468 */ lwc1 $f8, %lo(D_80053468)($at) -/* 089F24 7F0553F4 C7AA0044 */ lwc1 $f10, 0x44($sp) -/* 089F28 7F0553F8 4602403C */ c.lt.s $f8, $f2 -/* 089F2C 7F0553FC 00000000 */ nop -/* 089F30 7F055400 45020003 */ bc1fl .L7F055410 -/* 089F34 7F055404 944B009A */ lhu $t3, 0x9a($v0) -/* 089F38 7F055408 46001081 */ sub.s $f2, $f2, $f0 -/* 089F3C 7F05540C 944B009A */ lhu $t3, 0x9a($v0) -.L7F055410: -/* 089F40 7F055410 24010005 */ li $at, 5 -/* 089F44 7F055414 15610046 */ bne $t3, $at, .L7F055530 -/* 089F48 7F055418 00000000 */ nop -/* 089F4C 7F05541C C44A00B4 */ lwc1 $f10, 0xb4($v0) -/* 089F50 7F055420 8C4C0008 */ lw $t4, 8($v0) -/* 089F54 7F055424 3C0143B4 */ li $at, 0x43B40000 # 360.000000 -/* 089F58 7F055428 46005102 */ mul.s $f4, $f10, $f0 -/* 089F5C 7F05542C 44813000 */ mtc1 $at, $f6 -/* 089F60 7F055430 000C6880 */ sll $t5, $t4, 2 -/* 089F64 7F055434 05A10002 */ bgez $t5, .L7F055440 -/* 089F68 7F055438 46062303 */ div.s $f12, $f4, $f6 -/* 089F6C 7F05543C 460C0301 */ sub.s $f12, $f0, $f12 -.L7F055440: -/* 089F70 7F055440 AFA3005C */ sw $v1, 0x5c($sp) -/* 089F74 7F055444 E7A20064 */ swc1 $f2, 0x64($sp) -/* 089F78 7F055448 E7AC002C */ swc1 $f12, 0x2c($sp) -/* 089F7C 7F05544C 0FC15FA8 */ jal cosf -/* 089F80 7F055450 E7B20040 */ swc1 $f18, 0x40($sp) -/* 089F84 7F055454 C7AC002C */ lwc1 $f12, 0x2c($sp) -/* 089F88 7F055458 0FC15FAB */ jal sinf -/* 089F8C 7F05545C E7A00028 */ swc1 $f0, 0x28($sp) -/* 089F90 7F055460 C7B20040 */ lwc1 $f18, 0x40($sp) -/* 089F94 7F055464 C7A40044 */ lwc1 $f4, 0x44($sp) -/* 089F98 7F055468 8FA3005C */ lw $v1, 0x5c($sp) -/* 089F9C 7F05546C C7A8003C */ lwc1 $f8, 0x3c($sp) -/* 089FA0 7F055470 46122182 */ mul.s $f6, $f4, $f18 -/* 089FA4 7F055474 C46A0000 */ lwc1 $f10, ($v1) -/* 089FA8 7F055478 46124081 */ sub.s $f2, $f8, $f18 -/* 089FAC 7F05547C C7B00028 */ lwc1 $f16, 0x28($sp) -/* 089FB0 7F055480 46065200 */ add.s $f8, $f10, $f6 -/* 089FB4 7F055484 46102282 */ mul.s $f10, $f4, $f16 -/* 089FB8 7F055488 C7A6004C */ lwc1 $f6, 0x4c($sp) -/* 089FBC 7F05548C E7A80018 */ swc1 $f8, 0x18($sp) -/* 089FC0 7F055490 46003202 */ mul.s $f8, $f6, $f0 -/* 089FC4 7F055494 46085280 */ add.s $f10, $f10, $f8 -/* 089FC8 7F055498 460A1202 */ mul.s $f8, $f2, $f10 -/* 089FCC 7F05549C C7AA0018 */ lwc1 $f10, 0x18($sp) -/* 089FD0 7F0554A0 46085280 */ add.s $f10, $f10, $f8 -/* 089FD4 7F0554A4 C7A80030 */ lwc1 $f8, 0x30($sp) -/* 089FD8 7F0554A8 46085301 */ sub.s $f12, $f10, $f8 -/* 089FDC 7F0554AC 46123202 */ mul.s $f8, $f6, $f18 -/* 089FE0 7F0554B0 C46A0008 */ lwc1 $f10, 8($v1) -/* 089FE4 7F0554B4 46085280 */ add.s $f10, $f10, $f8 -/* 089FE8 7F0554B8 46002207 */ neg.s $f8, $f4 -/* 089FEC 7F0554BC 46004102 */ mul.s $f4, $f8, $f0 -/* 089FF0 7F0554C0 00000000 */ nop -/* 089FF4 7F0554C4 46103202 */ mul.s $f8, $f6, $f16 -/* 089FF8 7F0554C8 46082180 */ add.s $f6, $f4, $f8 -/* 089FFC 7F0554CC 46061102 */ mul.s $f4, $f2, $f6 -/* 08A000 7F0554D0 C7A60038 */ lwc1 $f6, 0x38($sp) -/* 08A004 7F0554D4 46045200 */ add.s $f8, $f10, $f4 -/* 08A008 7F0554D8 0FC16A8C */ jal convert_angle_using_inverse -/* 08A00C 7F0554DC 46064381 */ sub.s $f14, $f8, $f6 -/* 08A010 7F0554E0 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees -/* 08A014 7F0554E4 E7A00020 */ swc1 $f0, 0x20($sp) -/* 08A018 7F0554E8 C7AC0020 */ lwc1 $f12, 0x20($sp) -/* 08A01C 7F0554EC 3C018005 */ lui $at, %hi(D_8005346C) -/* 08A020 7F0554F0 4600603C */ c.lt.s $f12, $f0 -/* 08A024 7F0554F4 46006381 */ sub.s $f14, $f12, $f0 -/* 08A028 7F0554F8 45000003 */ bc1f .L7F055508 -/* 08A02C 7F0554FC 46007086 */ mov.s $f2, $f14 -/* 08A030 7F055500 C42A346C */ lwc1 $f10, %lo(D_8005346C)($at) -/* 08A034 7F055504 460A7080 */ add.s $f2, $f14, $f10 -.L7F055508: -/* 08A038 7F055508 3C018005 */ lui $at, %hi(D_80053470) -/* 08A03C 7F05550C C4243470 */ lwc1 $f4, %lo(D_80053470)($at) -/* 08A040 7F055510 3C018005 */ lui $at, %hi(D_80053474) -/* 08A044 7F055514 4602203C */ c.lt.s $f4, $f2 -/* 08A048 7F055518 00000000 */ nop -/* 08A04C 7F05551C 45020025 */ bc1fl .L7F0555B4 -/* 08A050 7F055520 C7A00064 */ lwc1 $f0, 0x64($sp) -/* 08A054 7F055524 C4283474 */ lwc1 $f8, %lo(D_80053474)($at) -/* 08A058 7F055528 10000021 */ b .L7F0555B0 -/* 08A05C 7F05552C 46081081 */ sub.s $f2, $f2, $f8 -.L7F055530: -/* 08A060 7F055530 46105102 */ mul.s $f4, $f10, $f16 -/* 08A064 7F055534 C4660000 */ lwc1 $f6, ($v1) -/* 08A068 7F055538 C7AA0030 */ lwc1 $f10, 0x30($sp) -/* 08A06C 7F05553C 46043200 */ add.s $f8, $f6, $f4 -/* 08A070 7F055540 C7A4004C */ lwc1 $f4, 0x4c($sp) -/* 08A074 7F055544 C4660008 */ lwc1 $f6, 8($v1) -/* 08A078 7F055548 E7A20064 */ swc1 $f2, 0x64($sp) -/* 08A07C 7F05554C 460A4301 */ sub.s $f12, $f8, $f10 -/* 08A080 7F055550 46102202 */ mul.s $f8, $f4, $f16 -/* 08A084 7F055554 C7A40038 */ lwc1 $f4, 0x38($sp) -/* 08A088 7F055558 46083280 */ add.s $f10, $f6, $f8 -/* 08A08C 7F05555C 0FC16A8C */ jal convert_angle_using_inverse -/* 08A090 7F055560 46045381 */ sub.s $f14, $f10, $f4 -/* 08A094 7F055564 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees -/* 08A098 7F055568 E7A00020 */ swc1 $f0, 0x20($sp) -/* 08A09C 7F05556C C7AC0020 */ lwc1 $f12, 0x20($sp) -/* 08A0A0 7F055570 3C018005 */ lui $at, %hi(D_80053478) -/* 08A0A4 7F055574 4600603C */ c.lt.s $f12, $f0 -/* 08A0A8 7F055578 46006381 */ sub.s $f14, $f12, $f0 -/* 08A0AC 7F05557C 45000003 */ bc1f .L7F05558C -/* 08A0B0 7F055580 46007086 */ mov.s $f2, $f14 -/* 08A0B4 7F055584 C4263478 */ lwc1 $f6, %lo(D_80053478)($at) -/* 08A0B8 7F055588 46067080 */ add.s $f2, $f14, $f6 -.L7F05558C: -/* 08A0BC 7F05558C 3C018005 */ lui $at, %hi(D_8005347C) -/* 08A0C0 7F055590 C428347C */ lwc1 $f8, %lo(D_8005347C)($at) -/* 08A0C4 7F055594 3C018005 */ lui $at, %hi(D_80053480) -/* 08A0C8 7F055598 4602403C */ c.lt.s $f8, $f2 -/* 08A0CC 7F05559C 00000000 */ nop -/* 08A0D0 7F0555A0 45020004 */ bc1fl .L7F0555B4 -/* 08A0D4 7F0555A4 C7A00064 */ lwc1 $f0, 0x64($sp) -/* 08A0D8 7F0555A8 C42A3480 */ lwc1 $f10, %lo(D_80053480)($at) -/* 08A0DC 7F0555AC 460A1081 */ sub.s $f2, $f2, $f10 -.L7F0555B0: -/* 08A0E0 7F0555B0 C7A00064 */ lwc1 $f0, 0x64($sp) -.L7F0555B4: -/* 08A0E4 7F0555B4 8FAE006C */ lw $t6, 0x6c($sp) -/* 08A0E8 7F0555B8 8FB8006C */ lw $t8, 0x6c($sp) -/* 08A0EC 7F0555BC 4602003C */ c.lt.s $f0, $f2 -/* 08A0F0 7F0555C0 00000000 */ nop -/* 08A0F4 7F0555C4 45020006 */ bc1fl .L7F0555E0 -/* 08A0F8 7F0555C8 E7020000 */ swc1 $f2, ($t8) -/* 08A0FC 7F0555CC E5C00000 */ swc1 $f0, ($t6) -/* 08A100 7F0555D0 8FAF0070 */ lw $t7, 0x70($sp) -/* 08A104 7F0555D4 10000004 */ b .L7F0555E8 -/* 08A108 7F0555D8 E5E20000 */ swc1 $f2, ($t7) -/* 08A10C 7F0555DC E7020000 */ swc1 $f2, ($t8) -.L7F0555E0: -/* 08A110 7F0555E0 8FB90070 */ lw $t9, 0x70($sp) -/* 08A114 7F0555E4 E7200000 */ swc1 $f0, ($t9) -.L7F0555E8: -/* 08A118 7F0555E8 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A11C 7F0555EC 27BD0068 */ addiu $sp, $sp, 0x68 -/* 08A120 7F0555F0 03E00008 */ jr $ra -/* 08A124 7F0555F4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0555F8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0555F8 -/* 08A128 7F0555F8 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 08A12C 7F0555FC 3C0F8007 */ lui $t7, %hi(dword_CODE_bss_80071DF8) -/* 08A130 7F055600 8DEF1DF8 */ lw $t7, %lo(dword_CODE_bss_80071DF8)($t7) -/* 08A134 7F055604 AFB40030 */ sw $s4, 0x30($sp) -/* 08A138 7F055608 AFB3002C */ sw $s3, 0x2c($sp) -/* 08A13C 7F05560C 240E0001 */ li $t6, 1 -/* 08A140 7F055610 00809825 */ move $s3, $a0 -/* 08A144 7F055614 00A0A025 */ move $s4, $a1 -/* 08A148 7F055618 AFBF0034 */ sw $ra, 0x34($sp) -/* 08A14C 7F05561C AFB20028 */ sw $s2, 0x28($sp) -/* 08A150 7F055620 AFB10024 */ sw $s1, 0x24($sp) -/* 08A154 7F055624 AFB00020 */ sw $s0, 0x20($sp) -/* 08A158 7F055628 F7B40018 */ sdc1 $f20, 0x18($sp) -/* 08A15C 7F05562C 15E0006B */ bnez $t7, .L7F0557DC -/* 08A160 7F055630 AFAE0054 */ sw $t6, 0x54($sp) -/* 08A164 7F055634 27A50050 */ addiu $a1, $sp, 0x50 -/* 08A168 7F055638 27A6004C */ addiu $a2, $sp, 0x4c -/* 08A16C 7F05563C 0FC1548B */ jal sub_GAME_7F05522C -/* 08A170 7F055640 02803825 */ move $a3, $s4 -/* 08A174 7F055644 3C018005 */ lui $at, %hi(D_80053484) -/* 08A178 7F055648 C4223484 */ lwc1 $f2, %lo(D_80053484)($at) -/* 08A17C 7F05564C C7A40050 */ lwc1 $f4, 0x50($sp) -/* 08A180 7F055650 46001007 */ neg.s $f0, $f2 -/* 08A184 7F055654 4604003E */ c.le.s $f0, $f4 -/* 08A188 7F055658 00000000 */ nop -/* 08A18C 7F05565C 45020012 */ bc1fl .L7F0556A8 -/* 08A190 7F055660 8E7000C8 */ lw $s0, 0xc8($s3) -/* 08A194 7F055664 4602203E */ c.le.s $f4, $f2 -/* 08A198 7F055668 C7A6004C */ lwc1 $f6, 0x4c($sp) -/* 08A19C 7F05566C 4502000E */ bc1fl .L7F0556A8 -/* 08A1A0 7F055670 8E7000C8 */ lw $s0, 0xc8($s3) -/* 08A1A4 7F055674 4606003E */ c.le.s $f0, $f6 -/* 08A1A8 7F055678 00000000 */ nop -/* 08A1AC 7F05567C 4502000A */ bc1fl .L7F0556A8 -/* 08A1B0 7F055680 8E7000C8 */ lw $s0, 0xc8($s3) -/* 08A1B4 7F055684 4602303E */ c.le.s $f6, $f2 -/* 08A1B8 7F055688 3C018007 */ lui $at, %hi(dword_CODE_bss_80071DF8) -/* 08A1BC 7F05568C 45020006 */ bc1fl .L7F0556A8 -/* 08A1C0 7F055690 8E7000C8 */ lw $s0, 0xc8($s3) -/* 08A1C4 7F055694 8E780010 */ lw $t8, 0x10($s3) -/* 08A1C8 7F055698 AFA00054 */ sw $zero, 0x54($sp) -/* 08A1CC 7F05569C 1000004F */ b .L7F0557DC -/* 08A1D0 7F0556A0 AC381DF8 */ sw $t8, %lo(dword_CODE_bss_80071DF8)($at) -/* 08A1D4 7F0556A4 8E7000C8 */ lw $s0, 0xc8($s3) -.L7F0556A8: -/* 08A1D8 7F0556A8 52000037 */ beql $s0, $zero, .L7F055788 -/* 08A1DC 7F0556AC C7A8004C */ lwc1 $f8, 0x4c($sp) -/* 08A1E0 7F0556B0 12130034 */ beq $s0, $s3, .L7F055784 -/* 08A1E4 7F0556B4 C7A80050 */ lwc1 $f8, 0x50($sp) -/* 08A1E8 7F0556B8 4480A000 */ mtc1 $zero, $f20 -/* 08A1EC 7F0556BC C7AA004C */ lwc1 $f10, 0x4c($sp) -/* 08A1F0 7F0556C0 4608A03E */ c.le.s $f20, $f8 -/* 08A1F4 7F0556C4 00000000 */ nop -/* 08A1F8 7F0556C8 45030005 */ bc1tl .L7F0556E0 -/* 08A1FC 7F0556CC 27A50040 */ addiu $a1, $sp, 0x40 -/* 08A200 7F0556D0 4614503C */ c.lt.s $f10, $f20 -/* 08A204 7F0556D4 00000000 */ nop -/* 08A208 7F0556D8 4500002A */ bc1f .L7F055784 -/* 08A20C 7F0556DC 27A50040 */ addiu $a1, $sp, 0x40 -.L7F0556E0: -/* 08A210 7F0556E0 27A6003C */ addiu $a2, $sp, 0x3c -/* 08A214 7F0556E4 02002025 */ move $a0, $s0 -/* 08A218 7F0556E8 0FC1548B */ jal sub_GAME_7F05522C -/* 08A21C 7F0556EC 02803825 */ move $a3, $s4 -/* 08A220 7F0556F0 C7B00050 */ lwc1 $f16, 0x50($sp) -/* 08A224 7F0556F4 C7A00040 */ lwc1 $f0, 0x40($sp) -/* 08A228 7F0556F8 4610A03C */ c.lt.s $f20, $f16 -/* 08A22C 7F0556FC 00000000 */ nop -/* 08A230 7F055700 45020007 */ bc1fl .L7F055720 -/* 08A234 7F055704 C7B2004C */ lwc1 $f18, 0x4c($sp) -/* 08A238 7F055708 4610003C */ c.lt.s $f0, $f16 -/* 08A23C 7F05570C 00000000 */ nop -/* 08A240 7F055710 45020003 */ bc1fl .L7F055720 -/* 08A244 7F055714 C7B2004C */ lwc1 $f18, 0x4c($sp) -/* 08A248 7F055718 E7A00050 */ swc1 $f0, 0x50($sp) -/* 08A24C 7F05571C C7B2004C */ lwc1 $f18, 0x4c($sp) -.L7F055720: -/* 08A250 7F055720 C7A0003C */ lwc1 $f0, 0x3c($sp) -/* 08A254 7F055724 4614903C */ c.lt.s $f18, $f20 -/* 08A258 7F055728 00000000 */ nop -/* 08A25C 7F05572C 45020007 */ bc1fl .L7F05574C -/* 08A260 7F055730 8E1000C8 */ lw $s0, 0xc8($s0) -/* 08A264 7F055734 4600903C */ c.lt.s $f18, $f0 -/* 08A268 7F055738 00000000 */ nop -/* 08A26C 7F05573C 45020003 */ bc1fl .L7F05574C -/* 08A270 7F055740 8E1000C8 */ lw $s0, 0xc8($s0) -/* 08A274 7F055744 E7A0004C */ swc1 $f0, 0x4c($sp) -/* 08A278 7F055748 8E1000C8 */ lw $s0, 0xc8($s0) -.L7F05574C: -/* 08A27C 7F05574C C7A40050 */ lwc1 $f4, 0x50($sp) -/* 08A280 7F055750 5200000D */ beql $s0, $zero, .L7F055788 -/* 08A284 7F055754 C7A8004C */ lwc1 $f8, 0x4c($sp) -/* 08A288 7F055758 5213000B */ beql $s0, $s3, .L7F055788 -/* 08A28C 7F05575C C7A8004C */ lwc1 $f8, 0x4c($sp) -/* 08A290 7F055760 4604A03E */ c.le.s $f20, $f4 -/* 08A294 7F055764 00000000 */ nop -/* 08A298 7F055768 4503FFDD */ bc1tl .L7F0556E0 -/* 08A29C 7F05576C 27A50040 */ addiu $a1, $sp, 0x40 -/* 08A2A0 7F055770 C7A6004C */ lwc1 $f6, 0x4c($sp) -/* 08A2A4 7F055774 4614303C */ c.lt.s $f6, $f20 -/* 08A2A8 7F055778 00000000 */ nop -/* 08A2AC 7F05577C 4503FFD8 */ bc1tl .L7F0556E0 -/* 08A2B0 7F055780 27A50040 */ addiu $a1, $sp, 0x40 -.L7F055784: -/* 08A2B4 7F055784 C7A8004C */ lwc1 $f8, 0x4c($sp) -.L7F055788: -/* 08A2B8 7F055788 C7AA0050 */ lwc1 $f10, 0x50($sp) -/* 08A2BC 7F05578C 3C018005 */ lui $at, %hi(D_80053488) -/* 08A2C0 7F055790 C4323488 */ lwc1 $f18, %lo(D_80053488)($at) -/* 08A2C4 7F055794 460A4401 */ sub.s $f16, $f8, $f10 -/* 08A2C8 7F055798 4480A000 */ mtc1 $zero, $f20 -/* 08A2CC 7F05579C 4612803C */ c.lt.s $f16, $f18 -/* 08A2D0 7F0557A0 00000000 */ nop -/* 08A2D4 7F0557A4 4502000E */ bc1fl .L7F0557E0 -/* 08A2D8 7F0557A8 8FBF0034 */ lw $ra, 0x34($sp) -/* 08A2DC 7F0557AC 4614503C */ c.lt.s $f10, $f20 -/* 08A2E0 7F0557B0 00000000 */ nop -/* 08A2E4 7F0557B4 4502000A */ bc1fl .L7F0557E0 -/* 08A2E8 7F0557B8 8FBF0034 */ lw $ra, 0x34($sp) -/* 08A2EC 7F0557BC 4608A03C */ c.lt.s $f20, $f8 -/* 08A2F0 7F0557C0 00000000 */ nop -/* 08A2F4 7F0557C4 45020006 */ bc1fl .L7F0557E0 -/* 08A2F8 7F0557C8 8FBF0034 */ lw $ra, 0x34($sp) -/* 08A2FC 7F0557CC 8E790010 */ lw $t9, 0x10($s3) -/* 08A300 7F0557D0 3C018007 */ lui $at, %hi(dword_CODE_bss_80071DF8) -/* 08A304 7F0557D4 AFA00054 */ sw $zero, 0x54($sp) -/* 08A308 7F0557D8 AC391DF8 */ sw $t9, %lo(dword_CODE_bss_80071DF8)($at) -.L7F0557DC: -/* 08A30C 7F0557DC 8FBF0034 */ lw $ra, 0x34($sp) -.L7F0557E0: -/* 08A310 7F0557E0 8FA20054 */ lw $v0, 0x54($sp) -/* 08A314 7F0557E4 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 08A318 7F0557E8 8FB00020 */ lw $s0, 0x20($sp) -/* 08A31C 7F0557EC 8FB10024 */ lw $s1, 0x24($sp) -/* 08A320 7F0557F0 8FB20028 */ lw $s2, 0x28($sp) -/* 08A324 7F0557F4 8FB3002C */ lw $s3, 0x2c($sp) -/* 08A328 7F0557F8 8FB40030 */ lw $s4, 0x30($sp) -/* 08A32C 7F0557FC 03E00008 */ jr $ra -/* 08A330 7F055800 27BD0058 */ addiu $sp, $sp, 0x58 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F055804(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F055804 -/* 08A334 7F055804 27BDFF78 */ addiu $sp, $sp, -0x88 -/* 08A338 7F055808 240E0001 */ li $t6, 1 -/* 08A33C 7F05580C AFBF001C */ sw $ra, 0x1c($sp) -/* 08A340 7F055810 AFB00018 */ sw $s0, 0x18($sp) -/* 08A344 7F055814 AFAE0084 */ sw $t6, 0x84($sp) -/* 08A348 7F055818 8C900004 */ lw $s0, 4($a0) -/* 08A34C 7F05581C 8E0F0008 */ lw $t7, 8($s0) -/* 08A350 7F055820 000FC180 */ sll $t8, $t7, 6 -/* 08A354 7F055824 07020059 */ bltzl $t8, .L7F05598C -/* 08A358 7F055828 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A35C 7F05582C 44802000 */ mtc1 $zero, $f4 -/* 08A360 7F055830 C6060084 */ lwc1 $f6, 0x84($s0) -/* 08A364 7F055834 4606203C */ c.lt.s $f4, $f6 -/* 08A368 7F055838 00000000 */ nop -/* 08A36C 7F05583C 45020053 */ bc1fl .L7F05598C -/* 08A370 7F055840 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A374 7F055844 90990001 */ lbu $t9, 1($a0) -/* 08A378 7F055848 33280002 */ andi $t0, $t9, 2 -/* 08A37C 7F05584C 5100004F */ beql $t0, $zero, .L7F05598C -/* 08A380 7F055850 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A384 7F055854 AFA0007C */ sw $zero, 0x7c($sp) -/* 08A388 7F055858 0FC225E6 */ jal get_curplayer_positiondata -/* 08A38C 7F05585C AFA40088 */ sw $a0, 0x88($sp) -/* 08A390 7F055860 AFA20078 */ sw $v0, 0x78($sp) -/* 08A394 7F055864 C44A0008 */ lwc1 $f10, 8($v0) -/* 08A398 7F055868 C6080058 */ lwc1 $f8, 0x58($s0) -/* 08A39C 7F05586C C4460010 */ lwc1 $f6, 0x10($v0) -/* 08A3A0 7F055870 C6040060 */ lwc1 $f4, 0x60($s0) -/* 08A3A4 7F055874 460A4001 */ sub.s $f0, $f8, $f10 -/* 08A3A8 7F055878 C452000C */ lwc1 $f18, 0xc($v0) -/* 08A3AC 7F05587C C610005C */ lwc1 $f16, 0x5c($s0) -/* 08A3B0 7F055880 46062081 */ sub.s $f2, $f4, $f6 -/* 08A3B4 7F055884 46000202 */ mul.s $f8, $f0, $f0 -/* 08A3B8 7F055888 3C018005 */ lui $at, %hi(D_8005348C) -/* 08A3BC 7F05588C 46128301 */ sub.s $f12, $f16, $f18 -/* 08A3C0 7F055890 46021282 */ mul.s $f10, $f2, $f2 -/* 08A3C4 7F055894 C432348C */ lwc1 $f18, %lo(D_8005348C)($at) -/* 08A3C8 7F055898 8FA40088 */ lw $a0, 0x88($sp) -/* 08A3CC 7F05589C 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 08A3D0 7F0558A0 460A4400 */ add.s $f16, $f8, $f10 -/* 08A3D4 7F0558A4 4612803C */ c.lt.s $f16, $f18 -/* 08A3D8 7F0558A8 00000000 */ nop -/* 08A3DC 7F0558AC 4500000F */ bc1f .L7F0558EC -/* 08A3E0 7F0558B0 00000000 */ nop -/* 08A3E4 7F0558B4 44812000 */ mtc1 $at, $f4 -/* 08A3E8 7F0558B8 3C01C348 */ li $at, 0xC3480000 # -200.000000 -/* 08A3EC 7F0558BC 4604603C */ c.lt.s $f12, $f4 -/* 08A3F0 7F0558C0 00000000 */ nop -/* 08A3F4 7F0558C4 45000009 */ bc1f .L7F0558EC -/* 08A3F8 7F0558C8 00000000 */ nop -/* 08A3FC 7F0558CC 44813000 */ mtc1 $at, $f6 -/* 08A400 7F0558D0 24090001 */ li $t1, 1 -/* 08A404 7F0558D4 460C303C */ c.lt.s $f6, $f12 -/* 08A408 7F0558D8 00000000 */ nop -/* 08A40C 7F0558DC 45000003 */ bc1f .L7F0558EC -/* 08A410 7F0558E0 00000000 */ nop -/* 08A414 7F0558E4 10000018 */ b .L7F055948 -/* 08A418 7F0558E8 AFA9007C */ sw $t1, 0x7c($sp) -.L7F0558EC: -/* 08A41C 7F0558EC 0FC0F2E3 */ jal sub_GAME_7F03CB8C -/* 08A420 7F0558F0 27A50048 */ addiu $a1, $sp, 0x48 -/* 08A424 7F0558F4 8FA40078 */ lw $a0, 0x78($sp) -/* 08A428 7F0558F8 0FC0F2E3 */ jal sub_GAME_7F03CB8C -/* 08A42C 7F0558FC 27A50028 */ addiu $a1, $sp, 0x28 -/* 08A430 7F055900 27A40048 */ addiu $a0, $sp, 0x48 -/* 08A434 7F055904 0FC0F6DC */ jal sub_GAME_7F03DB70 -/* 08A438 7F055908 27A50028 */ addiu $a1, $sp, 0x28 -/* 08A43C 7F05590C 1040000E */ beqz $v0, .L7F055948 -/* 08A440 7F055910 3C0C8007 */ lui $t4, %hi(ptr_2xxxpresets) -/* 08A444 7F055914 860A0006 */ lh $t2, 6($s0) -/* 08A448 7F055918 8D8C5D1C */ lw $t4, %lo(ptr_2xxxpresets)($t4) -/* 08A44C 7F05591C 8FA40078 */ lw $a0, 0x78($sp) -/* 08A450 7F055920 000A5900 */ sll $t3, $t2, 4 -/* 08A454 7F055924 016A5821 */ addu $t3, $t3, $t2 -/* 08A458 7F055928 000B5880 */ sll $t3, $t3, 2 -/* 08A45C 7F05592C 3C054316 */ lui $a1, 0x4316 -/* 08A460 7F055930 016C3021 */ addu $a2, $t3, $t4 -/* 08A464 7F055934 0FC0FD66 */ jal sub_GAME_7F03F598 -/* 08A468 7F055938 24840008 */ addiu $a0, $a0, 8 -/* 08A46C 7F05593C 10400002 */ beqz $v0, .L7F055948 -/* 08A470 7F055940 240D0001 */ li $t5, 1 -/* 08A474 7F055944 AFAD007C */ sw $t5, 0x7c($sp) -.L7F055948: -/* 08A478 7F055948 8FAE007C */ lw $t6, 0x7c($sp) -/* 08A47C 7F05594C 02002025 */ move $a0, $s0 -/* 08A480 7F055950 51C0000E */ beql $t6, $zero, .L7F05598C -/* 08A484 7F055954 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A488 7F055958 0FC1557E */ jal sub_GAME_7F0555F8 -/* 08A48C 7F05595C 00002825 */ move $a1, $zero -/* 08A490 7F055960 10400009 */ beqz $v0, .L7F055988 -/* 08A494 7F055964 AFA20084 */ sw $v0, 0x84($sp) -/* 08A498 7F055968 8E0F000C */ lw $t7, 0xc($s0) -/* 08A49C 7F05596C 02002025 */ move $a0, $s0 -/* 08A4A0 7F055970 000FC000 */ sll $t8, $t7, 0 -/* 08A4A4 7F055974 07030005 */ bgezl $t8, .L7F05598C -/* 08A4A8 7F055978 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A4AC 7F05597C 0FC1557E */ jal sub_GAME_7F0555F8 -/* 08A4B0 7F055980 24050001 */ li $a1, 1 -/* 08A4B4 7F055984 AFA20084 */ sw $v0, 0x84($sp) -.L7F055988: -/* 08A4B8 7F055988 8FBF001C */ lw $ra, 0x1c($sp) -.L7F05598C: -/* 08A4BC 7F05598C 8FA20084 */ lw $v0, 0x84($sp) -/* 08A4C0 7F055990 8FB00018 */ lw $s0, 0x18($sp) -/* 08A4C4 7F055994 03E00008 */ jr $ra -/* 08A4C8 7F055998 27BD0088 */ addiu $sp, $sp, 0x88 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F05599C(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F05599C -/* 08A4CC 7F05599C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08A4D0 7F0559A0 AFBF001C */ sw $ra, 0x1c($sp) -/* 08A4D4 7F0559A4 AFB00018 */ sw $s0, 0x18($sp) -/* 08A4D8 7F0559A8 AFA40020 */ sw $a0, 0x20($sp) -/* 08A4DC 7F0559AC 8C900004 */ lw $s0, 4($a0) -/* 08A4E0 7F0559B0 24010001 */ li $at, 1 -/* 08A4E4 7F0559B4 820200BC */ lb $v0, 0xbc($s0) -/* 08A4E8 7F0559B8 02002025 */ move $a0, $s0 -/* 08A4EC 7F0559BC 10410003 */ beq $v0, $at, .L7F0559CC -/* 08A4F0 7F0559C0 24010003 */ li $at, 3 -/* 08A4F4 7F0559C4 54410006 */ bnel $v0, $at, .L7F0559E0 -/* 08A4F8 7F0559C8 24010002 */ li $at, 2 -.L7F0559CC: -/* 08A4FC 7F0559CC 0FC15262 */ jal set_door_state -/* 08A500 7F0559D0 24050002 */ li $a1, 2 -/* 08A504 7F0559D4 10000019 */ b .L7F055A3C -/* 08A508 7F0559D8 8E0F0064 */ lw $t7, 0x64($s0) -/* 08A50C 7F0559DC 24010002 */ li $at, 2 -.L7F0559E0: -/* 08A510 7F0559E0 14410005 */ bne $v0, $at, .L7F0559F8 -/* 08A514 7F0559E4 02002025 */ move $a0, $s0 -/* 08A518 7F0559E8 0FC15262 */ jal set_door_state -/* 08A51C 7F0559EC 24050001 */ li $a1, 1 -/* 08A520 7F0559F0 10000012 */ b .L7F055A3C -/* 08A524 7F0559F4 8E0F0064 */ lw $t7, 0x64($s0) -.L7F0559F8: -/* 08A528 7F0559F8 1440000F */ bnez $v0, .L7F055A38 -/* 08A52C 7F0559FC 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 08A530 7F055A00 44812000 */ mtc1 $at, $f4 -/* 08A534 7F055A04 C60600B4 */ lwc1 $f6, 0xb4($s0) -/* 08A538 7F055A08 24050002 */ li $a1, 2 -/* 08A53C 7F055A0C 02002025 */ move $a0, $s0 -/* 08A540 7F055A10 4606203C */ c.lt.s $f4, $f6 -/* 08A544 7F055A14 00000000 */ nop -/* 08A548 7F055A18 45000005 */ bc1f .L7F055A30 -/* 08A54C 7F055A1C 00000000 */ nop -/* 08A550 7F055A20 0FC15262 */ jal set_door_state -/* 08A554 7F055A24 02002025 */ move $a0, $s0 -/* 08A558 7F055A28 10000004 */ b .L7F055A3C -/* 08A55C 7F055A2C 8E0F0064 */ lw $t7, 0x64($s0) -.L7F055A30: -/* 08A560 7F055A30 0FC15262 */ jal set_door_state -/* 08A564 7F055A34 24050001 */ li $a1, 1 -.L7F055A38: -/* 08A568 7F055A38 8E0F0064 */ lw $t7, 0x64($s0) -.L7F055A3C: -/* 08A56C 7F055A3C 8E19000C */ lw $t9, 0xc($s0) -/* 08A570 7F055A40 2401FFF7 */ li $at, -9 -/* 08A574 7F055A44 35F84000 */ ori $t8, $t7, 0x4000 -/* 08A578 7F055A48 03214024 */ and $t0, $t9, $at -/* 08A57C 7F055A4C AE180064 */ sw $t8, 0x64($s0) -/* 08A580 7F055A50 AE08000C */ sw $t0, 0xc($s0) -/* 08A584 7F055A54 0FC0F9A8 */ jal sub_GAME_7F03E6A0 -/* 08A588 7F055A58 8FA40020 */ lw $a0, 0x20($sp) -/* 08A58C 7F055A5C 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A590 7F055A60 8FB00018 */ lw $s0, 0x18($sp) -/* 08A594 7F055A64 27BD0020 */ addiu $sp, $sp, 0x20 -/* 08A598 7F055A68 03E00008 */ jr $ra -/* 08A59C 7F055A6C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F055A70(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F055A70 -/* 08A5A0 7F055A70 84AE0006 */ lh $t6, 6($a1) -/* 08A5A4 7F055A74 3C188007 */ lui $t8, %hi(ptr_2xxxpresets) -/* 08A5A8 7F055A78 8F185D1C */ lw $t8, %lo(ptr_2xxxpresets)($t8) -/* 08A5AC 7F055A7C 000E7900 */ sll $t7, $t6, 4 -/* 08A5B0 7F055A80 01EE7821 */ addu $t7, $t7, $t6 -/* 08A5B4 7F055A84 000F7880 */ sll $t7, $t7, 2 -/* 08A5B8 7F055A88 01F81021 */ addu $v0, $t7, $t8 -/* 08A5BC 7F055A8C C4440010 */ lwc1 $f4, 0x10($v0) -/* 08A5C0 7F055A90 C4460020 */ lwc1 $f6, 0x20($v0) -/* 08A5C4 7F055A94 C44A001C */ lwc1 $f10, 0x1c($v0) -/* 08A5C8 7F055A98 C4520014 */ lwc1 $f18, 0x14($v0) -/* 08A5CC 7F055A9C 46062202 */ mul.s $f8, $f4, $f6 -/* 08A5D0 7F055AA0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08A5D4 7F055AA4 46125102 */ mul.s $f4, $f10, $f18 -/* 08A5D8 7F055AA8 46044181 */ sub.s $f6, $f8, $f4 -/* 08A5DC 7F055AAC E7A60004 */ swc1 $f6, 4($sp) -/* 08A5E0 7F055AB0 C4520018 */ lwc1 $f18, 0x18($v0) -/* 08A5E4 7F055AB4 C44A0014 */ lwc1 $f10, 0x14($v0) -/* 08A5E8 7F055AB8 C4440020 */ lwc1 $f4, 0x20($v0) -/* 08A5EC 7F055ABC 46125202 */ mul.s $f8, $f10, $f18 -/* 08A5F0 7F055AC0 C44A000C */ lwc1 $f10, 0xc($v0) -/* 08A5F4 7F055AC4 460A2482 */ mul.s $f18, $f4, $f10 -/* 08A5F8 7F055AC8 46124101 */ sub.s $f4, $f8, $f18 -/* 08A5FC 7F055ACC E7A40008 */ swc1 $f4, 8($sp) -/* 08A600 7F055AD0 C448001C */ lwc1 $f8, 0x1c($v0) -/* 08A604 7F055AD4 C44A000C */ lwc1 $f10, 0xc($v0) -/* 08A608 7F055AD8 46085482 */ mul.s $f18, $f10, $f8 -/* 08A60C 7F055ADC C4480010 */ lwc1 $f8, 0x10($v0) -/* 08A610 7F055AE0 C44A0018 */ lwc1 $f10, 0x18($v0) -/* 08A614 7F055AE4 46085282 */ mul.s $f10, $f10, $f8 -/* 08A618 7F055AE8 460A9201 */ sub.s $f8, $f18, $f10 -/* 08A61C 7F055AEC E7A8000C */ swc1 $f8, 0xc($sp) -/* 08A620 7F055AF0 C44A0000 */ lwc1 $f10, ($v0) -/* 08A624 7F055AF4 C4920008 */ lwc1 $f18, 8($a0) -/* 08A628 7F055AF8 94B90098 */ lhu $t9, 0x98($a1) -/* 08A62C 7F055AFC 460A9001 */ sub.s $f0, $f18, $f10 -/* 08A630 7F055B00 C44A0004 */ lwc1 $f10, 4($v0) -/* 08A634 7F055B04 C492000C */ lwc1 $f18, 0xc($a0) -/* 08A638 7F055B08 33280008 */ andi $t0, $t9, 8 -/* 08A63C 7F055B0C 460A9081 */ sub.s $f2, $f18, $f10 -/* 08A640 7F055B10 C44A0008 */ lwc1 $f10, 8($v0) -/* 08A644 7F055B14 C4920010 */ lwc1 $f18, 0x10($a0) -/* 08A648 7F055B18 460A9301 */ sub.s $f12, $f18, $f10 -/* 08A64C 7F055B1C 46060482 */ mul.s $f18, $f0, $f6 -/* 08A650 7F055B20 44800000 */ mtc1 $zero, $f0 -/* 08A654 7F055B24 46041282 */ mul.s $f10, $f2, $f4 -/* 08A658 7F055B28 460A9180 */ add.s $f6, $f18, $f10 -/* 08A65C 7F055B2C 460C4102 */ mul.s $f4, $f8, $f12 -/* 08A660 7F055B30 46062400 */ add.s $f16, $f4, $f6 -/* 08A664 7F055B34 11000002 */ beqz $t0, .L7F055B40 -/* 08A668 7F055B38 46008386 */ mov.s $f14, $f16 -/* 08A66C 7F055B3C 46008387 */ neg.s $f14, $f16 -.L7F055B40: -/* 08A670 7F055B40 4600703C */ c.lt.s $f14, $f0 -/* 08A674 7F055B44 00000000 */ nop -/* 08A678 7F055B48 45020004 */ bc1fl .L7F055B5C -/* 08A67C 7F055B4C 460E003C */ c.lt.s $f0, $f14 -/* 08A680 7F055B50 10000007 */ b .L7F055B70 -/* 08A684 7F055B54 00001025 */ move $v0, $zero -/* 08A688 7F055B58 460E003C */ c.lt.s $f0, $f14 -.L7F055B5C: -/* 08A68C 7F055B5C 24020001 */ li $v0, 1 -/* 08A690 7F055B60 45000003 */ bc1f .L7F055B70 -/* 08A694 7F055B64 00000000 */ nop -/* 08A698 7F055B68 10000001 */ b .L7F055B70 -/* 08A69C 7F055B6C 24020001 */ li $v0, 1 -.L7F055B70: -/* 08A6A0 7F055B70 03E00008 */ jr $ra -/* 08A6A4 7F055B74 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F055B78(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F055B78 -/* 08A6A8 7F055B78 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08A6AC 7F055B7C AFBF0014 */ sw $ra, 0x14($sp) -/* 08A6B0 7F055B80 8CAE0008 */ lw $t6, 8($a1) -/* 08A6B4 7F055B84 000E7900 */ sll $t7, $t6, 4 -/* 08A6B8 7F055B88 05E3002A */ bgezl $t7, .L7F055C34 -/* 08A6BC 7F055B8C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A6C0 7F055B90 80B800BC */ lb $t8, 0xbc($a1) -/* 08A6C4 7F055B94 57000027 */ bnezl $t8, .L7F055C34 -/* 08A6C8 7F055B98 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A6CC 7F055B9C 44802000 */ mtc1 $zero, $f4 -/* 08A6D0 7F055BA0 C4A600B4 */ lwc1 $f6, 0xb4($a1) -/* 08A6D4 7F055BA4 46062032 */ c.eq.s $f4, $f6 -/* 08A6D8 7F055BA8 00000000 */ nop -/* 08A6DC 7F055BAC 45020021 */ bc1fl .L7F055C34 -/* 08A6E0 7F055BB0 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A6E4 7F055BB4 0FC1569C */ jal sub_GAME_7F055A70 -/* 08A6E8 7F055BB8 AFA5001C */ sw $a1, 0x1c($sp) -/* 08A6EC 7F055BBC 8FA5001C */ lw $a1, 0x1c($sp) -/* 08A6F0 7F055BC0 00002025 */ move $a0, $zero -/* 08A6F4 7F055BC4 94B90098 */ lhu $t9, 0x98($a1) -/* 08A6F8 7F055BC8 33280008 */ andi $t0, $t9, 8 -/* 08A6FC 7F055BCC 15000006 */ bnez $t0, .L7F055BE8 -/* 08A700 7F055BD0 00000000 */ nop -/* 08A704 7F055BD4 14400002 */ bnez $v0, .L7F055BE0 -/* 08A708 7F055BD8 00000000 */ nop -/* 08A70C 7F055BDC 3C042000 */ lui $a0, 0x2000 -.L7F055BE0: -/* 08A710 7F055BE0 10000005 */ b .L7F055BF8 -/* 08A714 7F055BE4 8CA90008 */ lw $t1, 8($a1) -.L7F055BE8: -/* 08A718 7F055BE8 50400003 */ beql $v0, $zero, .L7F055BF8 -/* 08A71C 7F055BEC 8CA90008 */ lw $t1, 8($a1) -/* 08A720 7F055BF0 3C042000 */ lui $a0, 0x2000 -/* 08A724 7F055BF4 8CA90008 */ lw $t1, 8($a1) -.L7F055BF8: -/* 08A728 7F055BF8 3C032000 */ lui $v1, 0x2000 -/* 08A72C 7F055BFC 00A01025 */ move $v0, $a1 -/* 08A730 7F055C00 01245026 */ xor $t2, $t1, $a0 -/* 08A734 7F055C04 000A5880 */ sll $t3, $t2, 2 -/* 08A738 7F055C08 0563000A */ bgezl $t3, .L7F055C34 -/* 08A73C 7F055C0C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A740 7F055C10 8C4C0008 */ lw $t4, 8($v0) -.L7F055C14: -/* 08A744 7F055C14 01836826 */ xor $t5, $t4, $v1 -/* 08A748 7F055C18 AC4D0008 */ sw $t5, 8($v0) -/* 08A74C 7F055C1C 8C4200C8 */ lw $v0, 0xc8($v0) -/* 08A750 7F055C20 50400004 */ beql $v0, $zero, .L7F055C34 -/* 08A754 7F055C24 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A758 7F055C28 5445FFFA */ bnel $v0, $a1, .L7F055C14 -/* 08A75C 7F055C2C 8C4C0008 */ lw $t4, 8($v0) -/* 08A760 7F055C30 8FBF0014 */ lw $ra, 0x14($sp) -.L7F055C34: -/* 08A764 7F055C34 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08A768 7F055C38 03E00008 */ jr $ra -/* 08A76C 7F055C3C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F055C40(void) { - -} -#else -#ifdef VERSION_US -GLOBAL_ASM( -.text -glabel sub_GAME_7F055C40 -/* 08A770 7F055C40 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 08A774 7F055C44 AFBF001C */ sw $ra, 0x1c($sp) -/* 08A778 7F055C48 AFB00018 */ sw $s0, 0x18($sp) -/* 08A77C 7F055C4C AFA40030 */ sw $a0, 0x30($sp) -/* 08A780 7F055C50 8C900004 */ lw $s0, 4($a0) -/* 08A784 7F055C54 0FC225E6 */ jal get_curplayer_positiondata -/* 08A788 7F055C58 AFA00028 */ sw $zero, 0x28($sp) -/* 08A78C 7F055C5C AFA20024 */ sw $v0, 0x24($sp) -/* 08A790 7F055C60 8E04009C */ lw $a0, 0x9c($s0) -/* 08A794 7F055C64 8FA30028 */ lw $v1, 0x28($sp) -/* 08A798 7F055C68 14800003 */ bnez $a0, .L7F055C78 -/* 08A79C 7F055C6C 00000000 */ nop -/* 08A7A0 7F055C70 1000001C */ b .L7F055CE4 -/* 08A7A4 7F055C74 24030001 */ li $v1, 1 -.L7F055C78: -/* 08A7A8 7F055C78 0FC2339C */ jal sub_GAME_7F08CE70 -/* 08A7AC 7F055C7C AFA30028 */ sw $v1, 0x28($sp) -/* 08A7B0 7F055C80 10400003 */ beqz $v0, .L7F055C90 -/* 08A7B4 7F055C84 8FA30028 */ lw $v1, 0x28($sp) -/* 08A7B8 7F055C88 10000016 */ b .L7F055CE4 -/* 08A7BC 7F055C8C 24030001 */ li $v1, 1 -.L7F055C90: -/* 08A7C0 7F055C90 8FA40024 */ lw $a0, 0x24($sp) -/* 08A7C4 7F055C94 02002825 */ move $a1, $s0 -/* 08A7C8 7F055C98 0FC1569C */ jal sub_GAME_7F055A70 -/* 08A7CC 7F055C9C AFA30028 */ sw $v1, 0x28($sp) -/* 08A7D0 7F055CA0 10400009 */ beqz $v0, .L7F055CC8 -/* 08A7D4 7F055CA4 8FA30028 */ lw $v1, 0x28($sp) -/* 08A7D8 7F055CA8 8E02000C */ lw $v0, 0xc($s0) -/* 08A7DC 7F055CAC 000278C0 */ sll $t7, $v0, 3 -/* 08A7E0 7F055CB0 05E1000C */ bgez $t7, .L7F055CE4 -/* 08A7E4 7F055CB4 0002C100 */ sll $t8, $v0, 4 -/* 08A7E8 7F055CB8 0702000B */ bltzl $t8, .L7F055CE8 -/* 08A7EC 7F055CBC 02002025 */ move $a0, $s0 -/* 08A7F0 7F055CC0 10000008 */ b .L7F055CE4 -/* 08A7F4 7F055CC4 24030001 */ li $v1, 1 -.L7F055CC8: -/* 08A7F8 7F055CC8 8E02000C */ lw $v0, 0xc($s0) -/* 08A7FC 7F055CCC 0002C8C0 */ sll $t9, $v0, 3 -/* 08A800 7F055CD0 07200004 */ bltz $t9, .L7F055CE4 -/* 08A804 7F055CD4 00024100 */ sll $t0, $v0, 4 -/* 08A808 7F055CD8 05030003 */ bgezl $t0, .L7F055CE8 -/* 08A80C 7F055CDC 02002025 */ move $a0, $s0 -/* 08A810 7F055CE0 24030001 */ li $v1, 1 -.L7F055CE4: -/* 08A814 7F055CE4 02002025 */ move $a0, $s0 -.L7F055CE8: -/* 08A818 7F055CE8 0FC0F9C6 */ jal sub_GAME_7F03E718 -/* 08A81C 7F055CEC AFA30028 */ sw $v1, 0x28($sp) -/* 08A820 7F055CF0 14400002 */ bnez $v0, .L7F055CFC -/* 08A824 7F055CF4 8FA30028 */ lw $v1, 0x28($sp) -/* 08A828 7F055CF8 00001825 */ move $v1, $zero -.L7F055CFC: -/* 08A82C 7F055CFC 10600007 */ beqz $v1, .L7F055D1C -/* 08A830 7F055D00 8FA40024 */ lw $a0, 0x24($sp) -/* 08A834 7F055D04 0FC156DE */ jal sub_GAME_7F055B78 -/* 08A838 7F055D08 02002825 */ move $a1, $s0 -/* 08A83C 7F055D0C 0FC15667 */ jal sub_GAME_7F05599C -/* 08A840 7F055D10 8FA40030 */ lw $a0, 0x30($sp) -/* 08A844 7F055D14 10000028 */ b .L7F055DB8 -/* 08A848 7F055D18 8FBF001C */ lw $ra, 0x1c($sp) -.L7F055D1C: -/* 08A84C 7F055D1C 820900BC */ lb $t1, 0xbc($s0) -/* 08A850 7F055D20 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 08A854 7F055D24 55200024 */ bnezl $t1, .L7F055DB8 -/* 08A858 7F055D28 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A85C 7F055D2C C60400B4 */ lwc1 $f4, 0xb4($s0) -/* 08A860 7F055D30 44813000 */ mtc1 $at, $f6 -/* 08A864 7F055D34 00000000 */ nop -/* 08A868 7F055D38 4606203C */ c.lt.s $f4, $f6 -/* 08A86C 7F055D3C 00000000 */ nop -/* 08A870 7F055D40 4502001D */ bc1fl .L7F055DB8 -/* 08A874 7F055D44 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A878 7F055D48 8E02000C */ lw $v0, 0xc($s0) -/* 08A87C 7F055D4C 304A0004 */ andi $t2, $v0, 4 -/* 08A880 7F055D50 55400014 */ bnezl $t2, .L7F055DA4 -/* 08A884 7F055D54 8E0C0064 */ lw $t4, 0x64($s0) -/* 08A888 7F055D58 0FC23487 */ jal sub_GAME_7F08D21C -/* 08A88C 7F055D5C 02002025 */ move $a0, $s0 -/* 08A890 7F055D60 1040000A */ beqz $v0, .L7F055D8C -/* 08A894 7F055D64 00000000 */ nop -/* 08A898 7F055D68 8C4B001C */ lw $t3, 0x1c($v0) -/* 08A89C 7F055D6C 11600007 */ beqz $t3, .L7F055D8C -/* 08A8A0 7F055D70 00000000 */ nop -/* 08A8A4 7F055D74 0FC30776 */ jal get_textptr_for_textID -/* 08A8A8 7F055D78 8C44001C */ lw $a0, 0x1c($v0) -/* 08A8AC 7F055D7C 0FC228F2 */ jal display_string_in_lower_left_corner -/* 08A8B0 7F055D80 00402025 */ move $a0, $v0 -/* 08A8B4 7F055D84 10000006 */ b .L7F055DA0 -/* 08A8B8 7F055D88 8E02000C */ lw $v0, 0xc($s0) -.L7F055D8C: -/* 08A8BC 7F055D8C 0FC30776 */ jal get_textptr_for_textID -/* 08A8C0 7F055D90 3404A440 */ li $a0, 42048 -/* 08A8C4 7F055D94 0FC228F2 */ jal display_string_in_lower_left_corner -/* 08A8C8 7F055D98 00402025 */ move $a0, $v0 -/* 08A8CC 7F055D9C 8E02000C */ lw $v0, 0xc($s0) -.L7F055DA0: -/* 08A8D0 7F055DA0 8E0C0064 */ lw $t4, 0x64($s0) -.L7F055DA4: -/* 08A8D4 7F055DA4 344E0008 */ ori $t6, $v0, 8 -/* 08A8D8 7F055DA8 AE0E000C */ sw $t6, 0xc($s0) -/* 08A8DC 7F055DAC 358D4000 */ ori $t5, $t4, 0x4000 -/* 08A8E0 7F055DB0 AE0D0064 */ sw $t5, 0x64($s0) -/* 08A8E4 7F055DB4 8FBF001C */ lw $ra, 0x1c($sp) -.L7F055DB8: -/* 08A8E8 7F055DB8 8FB00018 */ lw $s0, 0x18($sp) -/* 08A8EC 7F055DBC 27BD0030 */ addiu $sp, $sp, 0x30 -/* 08A8F0 7F055DC0 03E00008 */ jr $ra -/* 08A8F4 7F055DC4 00001025 */ move $v0, $zero -) -#endif -#ifdef VERSION_JP -GLOBAL_ASM( -.text -glabel sub_GAME_7F055C40 -/* 08A770 7F055C40 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 08A774 7F055C44 AFBF001C */ sw $ra, 0x1c($sp) -/* 08A778 7F055C48 AFB00018 */ sw $s0, 0x18($sp) -/* 08A77C 7F055C4C AFA40030 */ sw $a0, 0x30($sp) -/* 08A780 7F055C50 8C900004 */ lw $s0, 4($a0) -/* 08A784 7F055C54 0FC225E6 */ jal get_curplayer_positiondata -/* 08A788 7F055C58 AFA00028 */ sw $zero, 0x28($sp) -/* 08A78C 7F055C5C AFA20024 */ sw $v0, 0x24($sp) -/* 08A790 7F055C60 8E04009C */ lw $a0, 0x9c($s0) -/* 08A794 7F055C64 8FA30028 */ lw $v1, 0x28($sp) -/* 08A798 7F055C68 14800003 */ bnez $a0, .L7F055C78 -/* 08A79C 7F055C6C 00000000 */ nop -/* 08A7A0 7F055C70 1000001C */ b .L7F055CE4 -/* 08A7A4 7F055C74 24030001 */ li $v1, 1 -.L7F055C78: -/* 08A7A8 7F055C78 0FC2339C */ jal sub_GAME_7F08CE70 -/* 08A7AC 7F055C7C AFA30028 */ sw $v1, 0x28($sp) -/* 08A7B0 7F055C80 10400003 */ beqz $v0, .L7F055C90 -/* 08A7B4 7F055C84 8FA30028 */ lw $v1, 0x28($sp) -/* 08A7B8 7F055C88 10000016 */ b .L7F055CE4 -/* 08A7BC 7F055C8C 24030001 */ li $v1, 1 -.L7F055C90: -/* 08A7C0 7F055C90 8FA40024 */ lw $a0, 0x24($sp) -/* 08A7C4 7F055C94 02002825 */ move $a1, $s0 -/* 08A7C8 7F055C98 0FC1569C */ jal sub_GAME_7F055A70 -/* 08A7CC 7F055C9C AFA30028 */ sw $v1, 0x28($sp) -/* 08A7D0 7F055CA0 10400009 */ beqz $v0, .L7F055CC8 -/* 08A7D4 7F055CA4 8FA30028 */ lw $v1, 0x28($sp) -/* 08A7D8 7F055CA8 8E02000C */ lw $v0, 0xc($s0) -/* 08A7DC 7F055CAC 000278C0 */ sll $t7, $v0, 3 -/* 08A7E0 7F055CB0 05E1000C */ bgez $t7, .L7F055CE4 -/* 08A7E4 7F055CB4 0002C100 */ sll $t8, $v0, 4 -/* 08A7E8 7F055CB8 0702000B */ bltzl $t8, .L7F055CE8 -/* 08A7EC 7F055CBC 02002025 */ move $a0, $s0 -/* 08A7F0 7F055CC0 10000008 */ b .L7F055CE4 -/* 08A7F4 7F055CC4 24030001 */ li $v1, 1 -.L7F055CC8: -/* 08A7F8 7F055CC8 8E02000C */ lw $v0, 0xc($s0) -/* 08A7FC 7F055CCC 0002C8C0 */ sll $t9, $v0, 3 -/* 08A800 7F055CD0 07200004 */ bltz $t9, .L7F055CE4 -/* 08A804 7F055CD4 00024100 */ sll $t0, $v0, 4 -/* 08A808 7F055CD8 05030003 */ bgezl $t0, .L7F055CE8 -/* 08A80C 7F055CDC 02002025 */ move $a0, $s0 -/* 08A810 7F055CE0 24030001 */ li $v1, 1 -.L7F055CE4: -/* 08A814 7F055CE4 02002025 */ move $a0, $s0 -.L7F055CE8: -/* 08A818 7F055CE8 0FC0F9C6 */ jal sub_GAME_7F03E718 -/* 08A81C 7F055CEC AFA30028 */ sw $v1, 0x28($sp) -/* 08A820 7F055CF0 14400002 */ bnez $v0, .L7F055CFC -/* 08A824 7F055CF4 8FA30028 */ lw $v1, 0x28($sp) -/* 08A828 7F055CF8 00001825 */ move $v1, $zero -.L7F055CFC: -/* 08A82C 7F055CFC 10600007 */ beqz $v1, .L7F055D1C -/* 08A830 7F055D00 8FA40024 */ lw $a0, 0x24($sp) -/* 08A834 7F055D04 0FC156DE */ jal sub_GAME_7F055B78 -/* 08A838 7F055D08 02002825 */ move $a1, $s0 -/* 08A83C 7F055D0C 0FC15667 */ jal sub_GAME_7F05599C -/* 08A840 7F055D10 8FA40030 */ lw $a0, 0x30($sp) -/* 08A844 7F055D14 10000028 */ b .L7F055DB8 -/* 08A848 7F055D18 8FBF001C */ lw $ra, 0x1c($sp) -.L7F055D1C: -/* 08A84C 7F055D1C 820900BC */ lb $t1, 0xbc($s0) -/* 08A850 7F055D20 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 08A854 7F055D24 55200024 */ bnezl $t1, .L7F055DB8 -/* 08A858 7F055D28 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A85C 7F055D2C C60400B4 */ lwc1 $f4, 0xb4($s0) -/* 08A860 7F055D30 44813000 */ mtc1 $at, $f6 -/* 08A864 7F055D34 00000000 */ nop -/* 08A868 7F055D38 4606203C */ c.lt.s $f4, $f6 -/* 08A86C 7F055D3C 00000000 */ nop -/* 08A870 7F055D40 4502001D */ bc1fl .L7F055DB8 -/* 08A874 7F055D44 8FBF001C */ lw $ra, 0x1c($sp) -/* 08A878 7F055D48 8E02000C */ lw $v0, 0xc($s0) -/* 08A87C 7F055D4C 304A0004 */ andi $t2, $v0, 4 -/* 08A880 7F055D50 55400014 */ bnezl $t2, .L7F055DA4 -/* 08A884 7F055D54 8E0C0064 */ lw $t4, 0x64($s0) -/* 08A888 7F055D58 0FC23487 */ jal sub_GAME_7F08D21C -/* 08A88C 7F055D5C 02002025 */ move $a0, $s0 -/* 08A890 7F055D60 1040000A */ beqz $v0, .L7F055D8C -/* 08A894 7F055D64 00000000 */ nop -/* 08A898 7F055D68 8C4B001C */ lw $t3, 0x1c($v0) -/* 08A89C 7F055D6C 11600007 */ beqz $t3, .L7F055D8C -/* 08A8A0 7F055D70 00000000 */ nop -/* 08A8A4 7F055D74 0FC30776 */ jal get_textptr_for_textID -/* 08A8A8 7F055D78 8C44001C */ lw $a0, 0x1c($v0) -/* 08A8AC 7F055D7C 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 08A8B0 7F055D80 00402025 */ move $a0, $v0 -/* 08A8B4 7F055D84 10000006 */ b .L7F055DA0 -/* 08A8B8 7F055D88 8E02000C */ lw $v0, 0xc($s0) -.L7F055D8C: -/* 08A8BC 7F055D8C 0FC30776 */ jal get_textptr_for_textID -/* 08A8C0 7F055D90 3404A440 */ li $a0, 42048 -/* 08A8C4 7F055D94 0FC228F2 */ jal jp_FUN_7f08ac40 -/* 08A8C8 7F055D98 00402025 */ move $a0, $v0 -/* 08A8CC 7F055D9C 8E02000C */ lw $v0, 0xc($s0) -.L7F055DA0: -/* 08A8D0 7F055DA0 8E0C0064 */ lw $t4, 0x64($s0) -.L7F055DA4: -/* 08A8D4 7F055DA4 344E0008 */ ori $t6, $v0, 8 -/* 08A8D8 7F055DA8 AE0E000C */ sw $t6, 0xc($s0) -/* 08A8DC 7F055DAC 358D4000 */ ori $t5, $t4, 0x4000 -/* 08A8E0 7F055DB0 AE0D0064 */ sw $t5, 0x64($s0) -/* 08A8E4 7F055DB4 8FBF001C */ lw $ra, 0x1c($sp) -.L7F055DB8: -/* 08A8E8 7F055DB8 8FB00018 */ lw $s0, 0x18($sp) -/* 08A8EC 7F055DBC 27BD0030 */ addiu $sp, $sp, 0x30 -/* 08A8F0 7F055DC0 03E00008 */ jr $ra -/* 08A8F4 7F055DC4 00001025 */ move $v0, $zero -) -#endif -#endif - - - - -#ifdef NONMATCHING -void start_alarm(void) { - -} -#else -GLOBAL_ASM( -.text -glabel start_alarm -/* 08A8F8 7F055DC8 3C028003 */ lui $v0, %hi(alarm_timer) -/* 08A8FC 7F055DCC 24420AC0 */ addiu $v0, %lo(alarm_timer) # addiu $v0, $v0, 0xac0 -/* 08A900 7F055DD0 8C4E0000 */ lw $t6, ($v0) -/* 08A904 7F055DD4 240F0001 */ li $t7, 1 -/* 08A908 7F055DD8 1DC00002 */ bgtz $t6, .L7F055DE4 -/* 08A90C 7F055DDC 00000000 */ nop -/* 08A910 7F055DE0 AC4F0000 */ sw $t7, ($v0) -.L7F055DE4: -/* 08A914 7F055DE4 03E00008 */ jr $ra -/* 08A918 7F055DE8 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void deactivate_alarm_sound_effect(void) { - -} -#else -GLOBAL_ASM( -.text -glabel deactivate_alarm_sound_effect -/* 08A91C 7F055DEC 3C048003 */ lui $a0, %hi(ptr_alarm_sfx) -/* 08A920 7F055DF0 8C840AC4 */ lw $a0, %lo(ptr_alarm_sfx)($a0) -/* 08A924 7F055DF4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08A928 7F055DF8 AFBF0014 */ sw $ra, 0x14($sp) -/* 08A92C 7F055DFC 50800008 */ beql $a0, $zero, .L7F055E20 -/* 08A930 7F055E00 8FBF0014 */ lw $ra, 0x14($sp) -/* 08A934 7F055E04 0C00237C */ jal sfxGetArg0Unk3F -/* 08A938 7F055E08 00000000 */ nop -/* 08A93C 7F055E0C 10400003 */ beqz $v0, .L7F055E1C -/* 08A940 7F055E10 3C048003 */ lui $a0, %hi(ptr_alarm_sfx) -/* 08A944 7F055E14 0C002408 */ jal sfxDeactivate -/* 08A948 7F055E18 8C840AC4 */ lw $a0, %lo(ptr_alarm_sfx)($a0) -.L7F055E1C: -/* 08A94C 7F055E1C 8FBF0014 */ lw $ra, 0x14($sp) -.L7F055E20: -/* 08A950 7F055E20 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08A954 7F055E24 03E00008 */ jr $ra -/* 08A958 7F055E28 00000000 */ nop -) -#endif - - - - - - -void stop_alarm(void) -{ - alarm_timer = 0; - deactivate_alarm_sound_effect(); - return; -} - - - - - - -#ifdef NONMATCHING -s32 is_alarm_on(void) -{ - return (0 < alarm_timer); -} -#else -GLOBAL_ASM( -.text -glabel is_alarm_on -/* 08A980 7F055E50 3C028003 */ lui $v0, %hi(alarm_timer) -/* 08A984 7F055E54 8C420AC0 */ lw $v0, %lo(alarm_timer)($v0) -/* 08A988 7F055E58 0002702A */ slt $t6, $zero, $v0 -/* 08A98C 7F055E5C 03E00008 */ jr $ra -/* 08A990 7F055E60 01C01025 */ move $v0, $t6 -) -#endif - - - - - -#ifdef NONMATCHING -void init_trigger_toxic_gas_effect(void) { - -} -#else -GLOBAL_ASM( -.text -glabel init_trigger_toxic_gas_effect -/* 08A994 7F055E64 44802000 */ mtc1 $zero, $f4 -/* 08A998 7F055E68 240E0001 */ li $t6, 1 -/* 08A99C 7F055E6C 3C018003 */ lui $at, %hi(activate_gas_sound_timer) -/* 08A9A0 7F055E70 AC2E0ACC */ sw $t6, %lo(activate_gas_sound_timer)($at) -/* 08A9A4 7F055E74 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08A9A8 7F055E78 3C018003 */ lui $at, %hi(D_80030AE0) -/* 08A9AC 7F055E7C AFBF0014 */ sw $ra, 0x14($sp) -/* 08A9B0 7F055E80 E4240AE0 */ swc1 $f4, %lo(D_80030AE0)($at) -/* 08A9B4 7F055E84 C4860000 */ lwc1 $f6, ($a0) -/* 08A9B8 7F055E88 3C028003 */ lui $v0, %hi(D_80030AD0) -/* 08A9BC 7F055E8C 24420AD0 */ addiu $v0, %lo(D_80030AD0) # addiu $v0, $v0, 0xad0 -/* 08A9C0 7F055E90 E4460000 */ swc1 $f6, ($v0) -/* 08A9C4 7F055E94 C4880004 */ lwc1 $f8, 4($a0) -/* 08A9C8 7F055E98 E4480004 */ swc1 $f8, 4($v0) -/* 08A9CC 7F055E9C C48A0008 */ lwc1 $f10, 8($a0) -/* 08A9D0 7F055EA0 0C001A57 */ jal get_stage_num -/* 08A9D4 7F055EA4 E44A0008 */ swc1 $f10, 8($v0) -/* 08A9D8 7F055EA8 24010020 */ li $at, 32 -/* 08A9DC 7F055EAC 14410007 */ bne $v0, $at, .L7F055ECC -/* 08A9E0 7F055EB0 3C0142F0 */ li $at, 0x42F00000 # 120.000000 -/* 08A9E4 7F055EB4 44818000 */ mtc1 $at, $f16 -/* 08A9E8 7F055EB8 3C018007 */ lui $at, %hi(gas_damage_flag) -/* 08A9EC 7F055EBC E4301E78 */ swc1 $f16, %lo(gas_damage_flag)($at) -/* 08A9F0 7F055EC0 3C018007 */ lui $at, %hi(gas_cutoff_flag) -/* 08A9F4 7F055EC4 10000008 */ b .L7F055EE8 -/* 08A9F8 7F055EC8 AC201E7C */ sw $zero, %lo(gas_cutoff_flag)($at) -.L7F055ECC: -/* 08A9FC 7F055ECC 3C014561 */ li $at, 0x45610000 # 3600.000000 -/* 08AA00 7F055ED0 44819000 */ mtc1 $at, $f18 -/* 08AA04 7F055ED4 3C018007 */ lui $at, %hi(gas_damage_flag) -/* 08AA08 7F055ED8 240F0001 */ li $t7, 1 -/* 08AA0C 7F055EDC E4321E78 */ swc1 $f18, %lo(gas_damage_flag)($at) -/* 08AA10 7F055EE0 3C018007 */ lui $at, %hi(gas_cutoff_flag) -/* 08AA14 7F055EE4 AC2F1E7C */ sw $t7, %lo(gas_cutoff_flag)($at) -.L7F055EE8: -/* 08AA18 7F055EE8 8FBF0014 */ lw $ra, 0x14($sp) -/* 08AA1C 7F055EEC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08AA20 7F055EF0 03E00008 */ jr $ra -/* 08AA24 7F055EF4 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F055EF8(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F055EF8 -/* 08AA28 7F055EF8 3C048003 */ lui $a0, %hi(D_80030AE4) -/* 08AA2C 7F055EFC 8C840AE4 */ lw $a0, %lo(D_80030AE4)($a0) -/* 08AA30 7F055F00 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08AA34 7F055F04 AFBF0014 */ sw $ra, 0x14($sp) -/* 08AA38 7F055F08 50800008 */ beql $a0, $zero, .L7F055F2C -/* 08AA3C 7F055F0C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08AA40 7F055F10 0C00237C */ jal sfxGetArg0Unk3F -/* 08AA44 7F055F14 00000000 */ nop -/* 08AA48 7F055F18 10400003 */ beqz $v0, .L7F055F28 -/* 08AA4C 7F055F1C 3C048003 */ lui $a0, %hi(D_80030AE4) -/* 08AA50 7F055F20 0C002408 */ jal sfxDeactivate -/* 08AA54 7F055F24 8C840AE4 */ lw $a0, %lo(D_80030AE4)($a0) -.L7F055F28: -/* 08AA58 7F055F28 8FBF0014 */ lw $ra, 0x14($sp) -.L7F055F2C: -/* 08AA5C 7F055F2C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08AA60 7F055F30 03E00008 */ jr $ra -/* 08AA64 7F055F34 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void check_if_toxic_gas_activated(void) { - -} -#else -GLOBAL_ASM( -.text -glabel check_if_toxic_gas_activated -/* 08AA68 7F055F38 3C018003 */ lui $at, %hi(toxic_gas_sound_timer) -/* 08AA6C 7F055F3C C4260AC8 */ lwc1 $f6, %lo(toxic_gas_sound_timer)($at) -/* 08AA70 7F055F40 44802000 */ mtc1 $zero, $f4 -/* 08AA74 7F055F44 00001025 */ move $v0, $zero -/* 08AA78 7F055F48 4606203C */ c.lt.s $f4, $f6 -/* 08AA7C 7F055F4C 00000000 */ nop -/* 08AA80 7F055F50 45000002 */ bc1f .L7F055F5C -/* 08AA84 7F055F54 00000000 */ nop -/* 08AA88 7F055F58 24020001 */ li $v0, 1 -.L7F055F5C: -/* 08AA8C 7F055F5C 03E00008 */ jr $ra -/* 08AA90 7F055F60 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F055F64(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F055F64 -/* 08AA94 7F055F64 3C028003 */ lui $v0, %hi(activate_gas_sound_timer) -/* 08AA98 7F055F68 24420ACC */ addiu $v0, %lo(activate_gas_sound_timer) # addiu $v0, $v0, 0xacc -/* 08AA9C 7F055F6C 8C4E0000 */ lw $t6, ($v0) -/* 08AAA0 7F055F70 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08AAA4 7F055F74 44808000 */ mtc1 $zero, $f16 -/* 08AAA8 7F055F78 11C00011 */ beqz $t6, .L7F055FC0 -/* 08AAAC 7F055F7C AFBF001C */ sw $ra, 0x1c($sp) -/* 08AAB0 7F055F80 3C038003 */ lui $v1, %hi(toxic_gas_sound_timer) -/* 08AAB4 7F055F84 24630AC8 */ addiu $v1, %lo(toxic_gas_sound_timer) # addiu $v1, $v1, 0xac8 -/* 08AAB8 7F055F88 3C018005 */ lui $at, %hi(global_timer_delta) -/* 08AABC 7F055F8C C4268378 */ lwc1 $f6, %lo(global_timer_delta)($at) -/* 08AAC0 7F055F90 C4640000 */ lwc1 $f4, ($v1) -/* 08AAC4 7F055F94 3C018007 */ lui $at, %hi(gas_damage_flag) -/* 08AAC8 7F055F98 46062200 */ add.s $f8, $f4, $f6 -/* 08AACC 7F055F9C E4680000 */ swc1 $f8, ($v1) -/* 08AAD0 7F055FA0 C46A0000 */ lwc1 $f10, ($v1) -/* 08AAD4 7F055FA4 C4201E78 */ lwc1 $f0, %lo(gas_damage_flag)($at) -/* 08AAD8 7F055FA8 460A003E */ c.le.s $f0, $f10 -/* 08AADC 7F055FAC 00000000 */ nop -/* 08AAE0 7F055FB0 45000003 */ bc1f .L7F055FC0 -/* 08AAE4 7F055FB4 00000000 */ nop -/* 08AAE8 7F055FB8 E4600000 */ swc1 $f0, ($v1) -/* 08AAEC 7F055FBC AC400000 */ sw $zero, ($v0) -.L7F055FC0: -/* 08AAF0 7F055FC0 3C038003 */ lui $v1, %hi(toxic_gas_sound_timer) -/* 08AAF4 7F055FC4 24630AC8 */ addiu $v1, %lo(toxic_gas_sound_timer) # addiu $v1, $v1, 0xac8 -/* 08AAF8 7F055FC8 C4600000 */ lwc1 $f0, ($v1) -/* 08AAFC 7F055FCC 3C0F8003 */ lui $t7, %hi(disable_player_pickups_flag) -/* 08AB00 7F055FD0 4600803C */ c.lt.s $f16, $f0 -/* 08AB04 7F055FD4 00000000 */ nop -/* 08AB08 7F055FD8 4502005E */ bc1fl .L7F056154 -/* 08AB0C 7F055FDC 8FBF001C */ lw $ra, 0x1c($sp) -/* 08AB10 7F055FE0 8DEF64B4 */ lw $t7, %lo(disable_player_pickups_flag)($t7) -/* 08AB14 7F055FE4 3C018007 */ lui $at, %hi(gas_damage_flag) -/* 08AB18 7F055FE8 55E0005A */ bnezl $t7, .L7F056154 -/* 08AB1C 7F055FEC 8FBF001C */ lw $ra, 0x1c($sp) -/* 08AB20 7F055FF0 C4321E78 */ lwc1 $f18, %lo(gas_damage_flag)($at) -/* 08AB24 7F055FF4 0FC2EB2A */ jal switch_to_solosky2 -/* 08AB28 7F055FF8 46120303 */ div.s $f12, $f0, $f18 -/* 08AB2C 7F055FFC 3C188007 */ lui $t8, %hi(gas_cutoff_flag) -/* 08AB30 7F056000 8F181E7C */ lw $t8, %lo(gas_cutoff_flag)($t8) -/* 08AB34 7F056004 3C038003 */ lui $v1, %hi(toxic_gas_sound_timer) -/* 08AB38 7F056008 24630AC8 */ addiu $v1, %lo(toxic_gas_sound_timer) # addiu $v1, $v1, 0xac8 -/* 08AB3C 7F05600C 13000050 */ beqz $t8, .L7F056150 -/* 08AB40 7F056010 3C048003 */ lui $a0, %hi(D_80030ADC) -/* 08AB44 7F056014 3C028005 */ lui $v0, %hi(global_timer) -/* 08AB48 7F056018 8C42837C */ lw $v0, %lo(global_timer)($v0) -/* 08AB4C 7F05601C 24840ADC */ addiu $a0, %lo(D_80030ADC) # addiu $a0, $a0, 0xadc -/* 08AB50 7F056020 8C990000 */ lw $t9, ($a0) -/* 08AB54 7F056024 2448FF1F */ addiu $t0, $v0, -0xe1 -/* 08AB58 7F056028 0328082A */ slt $at, $t9, $t0 -/* 08AB5C 7F05602C 1020001B */ beqz $at, .L7F05609C -/* 08AB60 7F056030 3C014416 */ li $at, 0x44160000 # 600.000000 -/* 08AB64 7F056034 44812000 */ mtc1 $at, $f4 -/* 08AB68 7F056038 C4600000 */ lwc1 $f0, ($v1) -/* 08AB6C 7F05603C AC820000 */ sw $v0, ($a0) -/* 08AB70 7F056040 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 08AB74 7F056044 4600203E */ c.le.s $f4, $f0 -/* 08AB78 7F056048 24050062 */ li $a1, 98 -/* 08AB7C 7F05604C 00003025 */ move $a2, $zero -/* 08AB80 7F056050 45020006 */ bc1fl .L7F05606C -/* 08AB84 7F056054 3C0144E1 */ lui $at, 0x44e1 -/* 08AB88 7F056058 0C002382 */ jal play_sfx_a1 -/* 08AB8C 7F05605C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08AB90 7F056060 3C018003 */ lui $at, %hi(toxic_gas_sound_timer) -/* 08AB94 7F056064 C4200AC8 */ lwc1 $f0, %lo(toxic_gas_sound_timer)($at) -/* 08AB98 7F056068 3C0144E1 */ li $at, 0x44E10000 # 1800.000000 -.L7F05606C: -/* 08AB9C 7F05606C 44813000 */ mtc1 $at, $f6 -/* 08ABA0 7F056070 3C013E00 */ li $at, 0x3E000000 # 0.125000 -/* 08ABA4 7F056074 4600303E */ c.le.s $f6, $f0 -/* 08ABA8 7F056078 00000000 */ nop -/* 08ABAC 7F05607C 45000007 */ bc1f .L7F05609C -/* 08ABB0 7F056080 00000000 */ nop -/* 08ABB4 7F056084 44807000 */ mtc1 $zero, $f14 -/* 08ABB8 7F056088 44816000 */ mtc1 $at, $f12 -/* 08ABBC 7F05608C 2407FFFF */ li $a3, -1 -/* 08ABC0 7F056090 44067000 */ mfc1 $a2, $f14 -/* 08ABC4 7F056094 0FC22647 */ jal record_damage_kills -/* 08ABC8 7F056098 AFA00010 */ sw $zero, 0x10($sp) -.L7F05609C: -/* 08ABCC 7F05609C 3C028003 */ lui $v0, %hi(D_80030AE0) -/* 08ABD0 7F0560A0 24420AE0 */ addiu $v0, %lo(D_80030AE0) # addiu $v0, $v0, 0xae0 -/* 08ABD4 7F0560A4 3C018007 */ lui $at, %hi(gas_damage_flag) -/* 08ABD8 7F0560A8 C4281E78 */ lwc1 $f8, %lo(gas_damage_flag)($at) -/* 08ABDC 7F0560AC C4400000 */ lwc1 $f0, ($v0) -/* 08ABE0 7F0560B0 3C018005 */ lui $at, %hi(global_timer_delta) -/* 08ABE4 7F0560B4 3C048003 */ lui $a0, %hi(D_80030AE4) -/* 08ABE8 7F0560B8 4608003C */ c.lt.s $f0, $f8 -/* 08ABEC 7F0560BC 00000000 */ nop -/* 08ABF0 7F0560C0 4500001A */ bc1f .L7F05612C -/* 08ABF4 7F0560C4 00000000 */ nop -/* 08ABF8 7F0560C8 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) -/* 08ABFC 7F0560CC 3C098003 */ lui $t1, %hi(D_80030AE4) -/* 08AC00 7F0560D0 460A0400 */ add.s $f16, $f0, $f10 -/* 08AC04 7F0560D4 E4500000 */ swc1 $f16, ($v0) -/* 08AC08 7F0560D8 8D290AE4 */ lw $t1, %lo(D_80030AE4)($t1) -/* 08AC0C 7F0560DC 1520000A */ bnez $t1, .L7F056108 -/* 08AC10 7F0560E0 00000000 */ nop -/* 08AC14 7F0560E4 0FC2FF01 */ jal get_controls_locked_flag -/* 08AC18 7F0560E8 00000000 */ nop -/* 08AC1C 7F0560EC 14400006 */ bnez $v0, .L7F056108 -/* 08AC20 7F0560F0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 08AC24 7F0560F4 3C068003 */ lui $a2, %hi(D_80030AE4) -/* 08AC28 7F0560F8 24C60AE4 */ addiu $a2, %lo(D_80030AE4) # addiu $a2, $a2, 0xae4 -/* 08AC2C 7F0560FC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08AC30 7F056100 0C002382 */ jal play_sfx_a1 -/* 08AC34 7F056104 24050066 */ li $a1, 102 -.L7F056108: -/* 08AC38 7F056108 3C048003 */ lui $a0, %hi(D_80030AE4) -/* 08AC3C 7F05610C 8C840AE4 */ lw $a0, %lo(D_80030AE4)($a0) -/* 08AC40 7F056110 3C058003 */ lui $a1, %hi(D_80030AD0) -/* 08AC44 7F056114 5080000F */ beql $a0, $zero, .L7F056154 -/* 08AC48 7F056118 8FBF001C */ lw $ra, 0x1c($sp) -/* 08AC4C 7F05611C 0FC14E84 */ jal sub_GAME_7F053A10 -/* 08AC50 7F056120 24A50AD0 */ addiu $a1, %lo(D_80030AD0) # addiu $a1, $a1, 0xad0 -/* 08AC54 7F056124 1000000B */ b .L7F056154 -/* 08AC58 7F056128 8FBF001C */ lw $ra, 0x1c($sp) -.L7F05612C: -/* 08AC5C 7F05612C 8C840AE4 */ lw $a0, %lo(D_80030AE4)($a0) -/* 08AC60 7F056130 50800008 */ beql $a0, $zero, .L7F056154 -/* 08AC64 7F056134 8FBF001C */ lw $ra, 0x1c($sp) -/* 08AC68 7F056138 0C00237C */ jal sfxGetArg0Unk3F -/* 08AC6C 7F05613C 00000000 */ nop -/* 08AC70 7F056140 10400003 */ beqz $v0, .L7F056150 -/* 08AC74 7F056144 3C048003 */ lui $a0, %hi(D_80030AE4) -/* 08AC78 7F056148 0C002408 */ jal sfxDeactivate -/* 08AC7C 7F05614C 8C840AE4 */ lw $a0, %lo(D_80030AE4)($a0) -.L7F056150: -/* 08AC80 7F056150 8FBF001C */ lw $ra, 0x1c($sp) -.L7F056154: -/* 08AC84 7F056154 27BD0020 */ addiu $sp, $sp, 0x20 -/* 08AC88 7F056158 03E00008 */ jr $ra -/* 08AC8C 7F05615C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void set_unset_clock_lock_bits(void) { - -} -#else -GLOBAL_ASM( -.text -glabel set_unset_clock_lock_bits -/* 08AC90 7F056160 10A00008 */ beqz $a1, .L7F056184 -/* 08AC94 7F056164 3C028003 */ lui $v0, %hi(clock_drawn_flag) -/* 08AC98 7F056168 3C028003 */ lui $v0, %hi(clock_drawn_flag) -/* 08AC9C 7F05616C 24420AE8 */ addiu $v0, %lo(clock_drawn_flag) # addiu $v0, $v0, 0xae8 -/* 08ACA0 7F056170 8C4E0000 */ lw $t6, ($v0) -/* 08ACA4 7F056174 00807827 */ not $t7, $a0 -/* 08ACA8 7F056178 01CFC024 */ and $t8, $t6, $t7 -/* 08ACAC 7F05617C 03E00008 */ jr $ra -/* 08ACB0 7F056180 AC580000 */ sw $t8, ($v0) - -.L7F056184: -/* 08ACB4 7F056184 24420AE8 */ addiu $v0, $v0, %lo(clock_drawn_flag) -/* 08ACB8 7F056188 8C590000 */ lw $t9, ($v0) -/* 08ACBC 7F05618C 03244025 */ or $t0, $t9, $a0 -/* 08ACC0 7F056190 AC480000 */ sw $t0, ($v0) -/* 08ACC4 7F056194 03E00008 */ jr $ra -/* 08ACC8 7F056198 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void is_clock_drawn_onscreen(void) { - -} -#else -GLOBAL_ASM( -.text -glabel is_clock_drawn_onscreen -/* 08ACCC 7F05619C 3C028003 */ lui $v0, %hi(clock_drawn_flag) -/* 08ACD0 7F0561A0 8C420AE8 */ lw $v0, %lo(clock_drawn_flag)($v0) -/* 08ACD4 7F0561A4 2C4E0001 */ sltiu $t6, $v0, 1 -/* 08ACD8 7F0561A8 03E00008 */ jr $ra -/* 08ACDC 7F0561AC 01C01025 */ move $v0, $t6 -) -#endif - - - - - - -void set_clock_time(f32 time) { - clock_time = time; -} - -f32 get_clock_time(void) { - return clock_time; -} - -void set_clock_enable(s32 enable) { - clock_enable = enable; -} - -s32 get_clock_enable(void) { - return clock_enable; -} - - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0561E0(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0561E0 -/* 08AD10 7F0561E0 3C0E8003 */ lui $t6, %hi(clock_enable) -/* 08AD14 7F0561E4 8DCE0AEC */ lw $t6, %lo(clock_enable)($t6) -/* 08AD18 7F0561E8 3C028003 */ lui $v0, %hi(clock_time) -/* 08AD1C 7F0561EC 24420AF0 */ addiu $v0, %lo(clock_time) # addiu $v0, $v0, 0xaf0 -/* 08AD20 7F0561F0 11C00005 */ beqz $t6, .L7F056208 -/* 08AD24 7F0561F4 3C018005 */ lui $at, %hi(global_timer_delta) -/* 08AD28 7F0561F8 C4440000 */ lwc1 $f4, ($v0) -/* 08AD2C 7F0561FC C4268378 */ lwc1 $f6, %lo(global_timer_delta)($at) -/* 08AD30 7F056200 46062201 */ sub.s $f8, $f4, $f6 -/* 08AD34 7F056204 E4480000 */ swc1 $f8, ($v0) -.L7F056208: -/* 08AD38 7F056208 03E00008 */ jr $ra -/* 08AD3C 7F05620C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F056210(void) { - -} -#else -GLOBAL_ASM( -.late_rodata - -.text -glabel sub_GAME_7F056210 -/* 08AD40 7F056210 3C0E8003 */ lui $t6, %hi(clock_drawn_flag) -/* 08AD44 7F056214 8DCE0AE8 */ lw $t6, %lo(clock_drawn_flag)($t6) -/* 08AD48 7F056218 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 08AD4C 7F05621C AFB10028 */ sw $s1, 0x28($sp) -/* 08AD50 7F056220 00808825 */ move $s1, $a0 -/* 08AD54 7F056224 AFBF002C */ sw $ra, 0x2c($sp) -/* 08AD58 7F056228 15C000EB */ bnez $t6, .L7F0565D8 -/* 08AD5C 7F05622C AFB00024 */ sw $s0, 0x24($sp) -/* 08AD60 7F056230 3C018003 */ lui $at, %hi(clock_time) -/* 08AD64 7F056234 C4220AF0 */ lwc1 $f2, %lo(clock_time)($at) -/* 08AD68 7F056238 44802000 */ mtc1 $zero, $f4 -/* 08AD6C 7F05623C 3C014561 */ li $at, 0x45610000 # 3600.000000 -/* 08AD70 7F056240 44813000 */ mtc1 $at, $f6 -/* 08AD74 7F056244 4604103C */ c.lt.s $f2, $f4 -/* 08AD78 7F056248 00000000 */ nop -/* 08AD7C 7F05624C 45020003 */ bc1fl .L7F05625C -/* 08AD80 7F056250 46061303 */ div.s $f12, $f2, $f6 -/* 08AD84 7F056254 46001087 */ neg.s $f2, $f2 -/* 08AD88 7F056258 46061303 */ div.s $f12, $f2, $f6 -.L7F05625C: -/* 08AD8C 7F05625C 0FC170D8 */ jal truncf -/* 08AD90 7F056260 E7A20030 */ swc1 $f2, 0x30($sp) -/* 08AD94 7F056264 4600020D */ trunc.w.s $f8, $f0 -/* 08AD98 7F056268 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 08AD9C 7F05626C C7A20030 */ lwc1 $f2, 0x30($sp) -/* 08ADA0 7F056270 44815000 */ mtc1 $at, $f10 -/* 08ADA4 7F056274 44184000 */ mfc1 $t8, $f8 -/* 08ADA8 7F056278 460A1303 */ div.s $f12, $f2, $f10 -/* 08ADAC 7F05627C 0FC170D8 */ jal truncf -/* 08ADB0 7F056280 AFB80044 */ sw $t8, 0x44($sp) -/* 08ADB4 7F056284 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 08ADB8 7F056288 C7A20030 */ lwc1 $f2, 0x30($sp) -/* 08ADBC 7F05628C 44819000 */ mtc1 $at, $f18 -/* 08ADC0 7F056290 4600040D */ trunc.w.s $f16, $f0 -/* 08ADC4 7F056294 8FA90044 */ lw $t1, 0x44($sp) -/* 08ADC8 7F056298 46121102 */ mul.s $f4, $f2, $f18 -/* 08ADCC 7F05629C 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 08ADD0 7F0562A0 44088000 */ mfc1 $t0, $f16 -/* 08ADD4 7F0562A4 00095100 */ sll $t2, $t1, 4 -/* 08ADD8 7F0562A8 01495023 */ subu $t2, $t2, $t1 -/* 08ADDC 7F0562AC 44813000 */ mtc1 $at, $f6 -/* 08ADE0 7F0562B0 000A5080 */ sll $t2, $t2, 2 -/* 08ADE4 7F0562B4 010A5823 */ subu $t3, $t0, $t2 -/* 08ADE8 7F0562B8 AFAB0040 */ sw $t3, 0x40($sp) -/* 08ADEC 7F0562BC 0FC170D8 */ jal truncf -/* 08ADF0 7F0562C0 46062303 */ div.s $f12, $f4, $f6 -/* 08ADF4 7F0562C4 8FAE0044 */ lw $t6, 0x44($sp) -/* 08ADF8 7F0562C8 4600020D */ trunc.w.s $f8, $f0 -/* 08ADFC 7F0562CC 8FB90040 */ lw $t9, 0x40($sp) -/* 08AE00 7F0562D0 000E7880 */ sll $t7, $t6, 2 -/* 08AE04 7F0562D4 01EE7823 */ subu $t7, $t7, $t6 -/* 08AE08 7F0562D8 000F7900 */ sll $t7, $t7, 4 -/* 08AE0C 7F0562DC 01EE7823 */ subu $t7, $t7, $t6 -/* 08AE10 7F0562E0 00194880 */ sll $t1, $t9, 2 -/* 08AE14 7F0562E4 440D4000 */ mfc1 $t5, $f8 -/* 08AE18 7F0562E8 000F78C0 */ sll $t7, $t7, 3 -/* 08AE1C 7F0562EC 01394823 */ subu $t1, $t1, $t9 -/* 08AE20 7F0562F0 000948C0 */ sll $t1, $t1, 3 -/* 08AE24 7F0562F4 01EE7823 */ subu $t7, $t7, $t6 -/* 08AE28 7F0562F8 000F7900 */ sll $t7, $t7, 4 -/* 08AE2C 7F0562FC 01394821 */ addu $t1, $t1, $t9 -/* 08AE30 7F056300 00094880 */ sll $t1, $t1, 2 -/* 08AE34 7F056304 01AFC023 */ subu $t8, $t5, $t7 -/* 08AE38 7F056308 03094023 */ subu $t0, $t8, $t1 -/* 08AE3C 7F05630C AFA8003C */ sw $t0, 0x3c($sp) -/* 08AE40 7F056310 0FC2B366 */ jal microcode_constructor -/* 08AE44 7F056314 02202025 */ move $a0, $s1 -/* 08AE48 7F056318 0C001149 */ jal get_video2_settings_uly -/* 08AE4C 7F05631C 00408825 */ move $s1, $v0 -/* 08AE50 7F056320 00028400 */ sll $s0, $v0, 0x10 -/* 08AE54 7F056324 00105403 */ sra $t2, $s0, 0x10 -/* 08AE58 7F056328 0C00112B */ jal get_video2_settings_height -/* 08AE5C 7F05632C 01408025 */ move $s0, $t2 -/* 08AE60 7F056330 8FA50044 */ lw $a1, 0x44($sp) -/* 08AE64 7F056334 24010064 */ li $at, 100 -/* 08AE68 7F056338 00507021 */ addu $t6, $v0, $s0 -/* 08AE6C 7F05633C 00A1001A */ div $zero, $a1, $at -/* 08AE70 7F056340 00005810 */ mfhi $t3 -/* 08AE74 7F056344 2401000A */ li $at, 10 -/* 08AE78 7F056348 25CDFFEE */ addiu $t5, $t6, -0x12 -/* 08AE7C 7F05634C 0161001A */ div $zero, $t3, $at -/* 08AE80 7F056350 00002812 */ mflo $a1 -/* 08AE84 7F056354 240F0002 */ li $t7, 2 -/* 08AE88 7F056358 24190001 */ li $t9, 1 -/* 08AE8C 7F05635C AFB90018 */ sw $t9, 0x18($sp) -/* 08AE90 7F056360 AFAF0014 */ sw $t7, 0x14($sp) -/* 08AE94 7F056364 AFAD0010 */ sw $t5, 0x10($sp) -/* 08AE98 7F056368 02202025 */ move $a0, $s1 -/* 08AE9C 7F05636C 24060082 */ li $a2, 130 -/* 08AEA0 7F056370 0FC1A723 */ jal display_ammo_total_in_a1 -/* 08AEA4 7F056374 24070002 */ li $a3, 2 -/* 08AEA8 7F056378 0C001149 */ jal get_video2_settings_uly -/* 08AEAC 7F05637C 00408825 */ move $s1, $v0 -/* 08AEB0 7F056380 00028400 */ sll $s0, $v0, 0x10 -/* 08AEB4 7F056384 0010C403 */ sra $t8, $s0, 0x10 -/* 08AEB8 7F056388 0C00112B */ jal get_video2_settings_height -/* 08AEBC 7F05638C 03008025 */ move $s0, $t8 -/* 08AEC0 7F056390 8FA50044 */ lw $a1, 0x44($sp) -/* 08AEC4 7F056394 2401000A */ li $at, 10 -/* 08AEC8 7F056398 00504021 */ addu $t0, $v0, $s0 -/* 08AECC 7F05639C 00A1001A */ div $zero, $a1, $at -/* 08AED0 7F0563A0 00002810 */ mfhi $a1 -/* 08AED4 7F0563A4 250AFFEE */ addiu $t2, $t0, -0x12 -/* 08AED8 7F0563A8 240B0002 */ li $t3, 2 -/* 08AEDC 7F0563AC 240C0001 */ li $t4, 1 -/* 08AEE0 7F0563B0 AFAC0018 */ sw $t4, 0x18($sp) -/* 08AEE4 7F0563B4 AFAB0014 */ sw $t3, 0x14($sp) -/* 08AEE8 7F0563B8 AFAA0010 */ sw $t2, 0x10($sp) -/* 08AEEC 7F0563BC 02202025 */ move $a0, $s1 -/* 08AEF0 7F0563C0 2406008A */ li $a2, 138 -/* 08AEF4 7F0563C4 0FC1A723 */ jal display_ammo_total_in_a1 -/* 08AEF8 7F0563C8 24070002 */ li $a3, 2 -/* 08AEFC 7F0563CC 0C001149 */ jal get_video2_settings_uly -/* 08AF00 7F0563D0 00408825 */ move $s1, $v0 -/* 08AF04 7F0563D4 00028400 */ sll $s0, $v0, 0x10 -/* 08AF08 7F0563D8 00107403 */ sra $t6, $s0, 0x10 -/* 08AF0C 7F0563DC 0C00112B */ jal get_video2_settings_height -/* 08AF10 7F0563E0 01C08025 */ move $s0, $t6 -/* 08AF14 7F0563E4 00506821 */ addu $t5, $v0, $s0 -/* 08AF18 7F0563E8 25AFFFEE */ addiu $t7, $t5, -0x12 -/* 08AF1C 7F0563EC 3C058005 */ lui $a1, %hi(D_80052A44) -/* 08AF20 7F0563F0 24190002 */ li $t9, 2 -/* 08AF24 7F0563F4 24180001 */ li $t8, 1 -/* 08AF28 7F0563F8 AFB80018 */ sw $t8, 0x18($sp) -/* 08AF2C 7F0563FC AFB90014 */ sw $t9, 0x14($sp) -/* 08AF30 7F056400 24A52A44 */ addiu $a1, %lo(D_80052A44) # addiu $a1, $a1, 0x2a44 -/* 08AF34 7F056404 AFAF0010 */ sw $t7, 0x10($sp) -/* 08AF38 7F056408 02202025 */ move $a0, $s1 -/* 08AF3C 7F05640C 24060093 */ li $a2, 147 -/* 08AF40 7F056410 0FC1A694 */ jal some_kind_of_display_routine -/* 08AF44 7F056414 24070002 */ li $a3, 2 -/* 08AF48 7F056418 0C001149 */ jal get_video2_settings_uly -/* 08AF4C 7F05641C 00408825 */ move $s1, $v0 -/* 08AF50 7F056420 00028400 */ sll $s0, $v0, 0x10 -/* 08AF54 7F056424 00104C03 */ sra $t1, $s0, 0x10 -/* 08AF58 7F056428 0C00112B */ jal get_video2_settings_height -/* 08AF5C 7F05642C 01208025 */ move $s0, $t1 -/* 08AF60 7F056430 8FA50040 */ lw $a1, 0x40($sp) -/* 08AF64 7F056434 2401003C */ li $at, 60 -/* 08AF68 7F056438 00505821 */ addu $t3, $v0, $s0 -/* 08AF6C 7F05643C 00A1001A */ div $zero, $a1, $at -/* 08AF70 7F056440 00004010 */ mfhi $t0 -/* 08AF74 7F056444 2401000A */ li $at, 10 -/* 08AF78 7F056448 256CFFEE */ addiu $t4, $t3, -0x12 -/* 08AF7C 7F05644C 0101001A */ div $zero, $t0, $at -/* 08AF80 7F056450 00002812 */ mflo $a1 -/* 08AF84 7F056454 240E0002 */ li $t6, 2 -/* 08AF88 7F056458 240D0001 */ li $t5, 1 -/* 08AF8C 7F05645C AFAD0018 */ sw $t5, 0x18($sp) -/* 08AF90 7F056460 AFAE0014 */ sw $t6, 0x14($sp) -/* 08AF94 7F056464 AFAC0010 */ sw $t4, 0x10($sp) -/* 08AF98 7F056468 02202025 */ move $a0, $s1 -/* 08AF9C 7F05646C 2406009C */ li $a2, 156 -/* 08AFA0 7F056470 0FC1A723 */ jal display_ammo_total_in_a1 -/* 08AFA4 7F056474 24070002 */ li $a3, 2 -/* 08AFA8 7F056478 0C001149 */ jal get_video2_settings_uly -/* 08AFAC 7F05647C 00408825 */ move $s1, $v0 -/* 08AFB0 7F056480 00028400 */ sll $s0, $v0, 0x10 -/* 08AFB4 7F056484 00107C03 */ sra $t7, $s0, 0x10 -/* 08AFB8 7F056488 0C00112B */ jal get_video2_settings_height -/* 08AFBC 7F05648C 01E08025 */ move $s0, $t7 -/* 08AFC0 7F056490 8FA50040 */ lw $a1, 0x40($sp) -/* 08AFC4 7F056494 2401000A */ li $at, 10 -/* 08AFC8 7F056498 0050C021 */ addu $t8, $v0, $s0 -/* 08AFCC 7F05649C 00A1001A */ div $zero, $a1, $at -/* 08AFD0 7F0564A0 00002810 */ mfhi $a1 -/* 08AFD4 7F0564A4 2709FFEE */ addiu $t1, $t8, -0x12 -/* 08AFD8 7F0564A8 24080002 */ li $t0, 2 -/* 08AFDC 7F0564AC 240A0001 */ li $t2, 1 -/* 08AFE0 7F0564B0 AFAA0018 */ sw $t2, 0x18($sp) -/* 08AFE4 7F0564B4 AFA80014 */ sw $t0, 0x14($sp) -/* 08AFE8 7F0564B8 AFA90010 */ sw $t1, 0x10($sp) -/* 08AFEC 7F0564BC 02202025 */ move $a0, $s1 -/* 08AFF0 7F0564C0 240600A4 */ li $a2, 164 -/* 08AFF4 7F0564C4 0FC1A723 */ jal display_ammo_total_in_a1 -/* 08AFF8 7F0564C8 24070002 */ li $a3, 2 -/* 08AFFC 7F0564CC 0C001149 */ jal get_video2_settings_uly -/* 08B000 7F0564D0 00408825 */ move $s1, $v0 -/* 08B004 7F0564D4 00028400 */ sll $s0, $v0, 0x10 -/* 08B008 7F0564D8 00105C03 */ sra $t3, $s0, 0x10 -/* 08B00C 7F0564DC 0C00112B */ jal get_video2_settings_height -/* 08B010 7F0564E0 01608025 */ move $s0, $t3 -/* 08B014 7F0564E4 00506021 */ addu $t4, $v0, $s0 -/* 08B018 7F0564E8 258EFFEE */ addiu $t6, $t4, -0x12 -/* 08B01C 7F0564EC 3C058005 */ lui $a1, %hi(D_80052A44) -/* 08B020 7F0564F0 240D0002 */ li $t5, 2 -/* 08B024 7F0564F4 240F0001 */ li $t7, 1 -/* 08B028 7F0564F8 AFAF0018 */ sw $t7, 0x18($sp) -/* 08B02C 7F0564FC AFAD0014 */ sw $t5, 0x14($sp) -/* 08B030 7F056500 24A52A44 */ addiu $a1, %lo(D_80052A44) # addiu $a1, $a1, 0x2a44 -/* 08B034 7F056504 AFAE0010 */ sw $t6, 0x10($sp) -/* 08B038 7F056508 02202025 */ move $a0, $s1 -/* 08B03C 7F05650C 240600AD */ li $a2, 173 -/* 08B040 7F056510 0FC1A694 */ jal some_kind_of_display_routine -/* 08B044 7F056514 24070002 */ li $a3, 2 -/* 08B048 7F056518 0C001149 */ jal get_video2_settings_uly -/* 08B04C 7F05651C 00408825 */ move $s1, $v0 -/* 08B050 7F056520 00028400 */ sll $s0, $v0, 0x10 -/* 08B054 7F056524 0010CC03 */ sra $t9, $s0, 0x10 -/* 08B058 7F056528 0C00112B */ jal get_video2_settings_height -/* 08B05C 7F05652C 03208025 */ move $s0, $t9 -/* 08B060 7F056530 8FA5003C */ lw $a1, 0x3c($sp) -/* 08B064 7F056534 24010064 */ li $at, 100 -/* 08B068 7F056538 00504021 */ addu $t0, $v0, $s0 -/* 08B06C 7F05653C 00A1001A */ div $zero, $a1, $at -/* 08B070 7F056540 0000C010 */ mfhi $t8 -/* 08B074 7F056544 2401000A */ li $at, 10 -/* 08B078 7F056548 250AFFEE */ addiu $t2, $t0, -0x12 -/* 08B07C 7F05654C 0301001A */ div $zero, $t8, $at -/* 08B080 7F056550 00002812 */ mflo $a1 -/* 08B084 7F056554 240B0002 */ li $t3, 2 -/* 08B088 7F056558 240C0001 */ li $t4, 1 -/* 08B08C 7F05655C AFAC0018 */ sw $t4, 0x18($sp) -/* 08B090 7F056560 AFAB0014 */ sw $t3, 0x14($sp) -/* 08B094 7F056564 AFAA0010 */ sw $t2, 0x10($sp) -/* 08B098 7F056568 02202025 */ move $a0, $s1 -/* 08B09C 7F05656C 240600B6 */ li $a2, 182 -/* 08B0A0 7F056570 0FC1A723 */ jal display_ammo_total_in_a1 -/* 08B0A4 7F056574 24070002 */ li $a3, 2 -/* 08B0A8 7F056578 0C001149 */ jal get_video2_settings_uly -/* 08B0AC 7F05657C 00408825 */ move $s1, $v0 -/* 08B0B0 7F056580 00028400 */ sll $s0, $v0, 0x10 -/* 08B0B4 7F056584 00107403 */ sra $t6, $s0, 0x10 -/* 08B0B8 7F056588 0C00112B */ jal get_video2_settings_height -/* 08B0BC 7F05658C 01C08025 */ move $s0, $t6 -/* 08B0C0 7F056590 8FA5003C */ lw $a1, 0x3c($sp) -/* 08B0C4 7F056594 2401000A */ li $at, 10 -/* 08B0C8 7F056598 00507821 */ addu $t7, $v0, $s0 -/* 08B0CC 7F05659C 00A1001A */ div $zero, $a1, $at -/* 08B0D0 7F0565A0 00002810 */ mfhi $a1 -/* 08B0D4 7F0565A4 25F9FFEE */ addiu $t9, $t7, -0x12 -/* 08B0D8 7F0565A8 24180002 */ li $t8, 2 -/* 08B0DC 7F0565AC 24090001 */ li $t1, 1 -/* 08B0E0 7F0565B0 AFA90018 */ sw $t1, 0x18($sp) -/* 08B0E4 7F0565B4 AFB80014 */ sw $t8, 0x14($sp) -/* 08B0E8 7F0565B8 AFB90010 */ sw $t9, 0x10($sp) -/* 08B0EC 7F0565BC 02202025 */ move $a0, $s1 -/* 08B0F0 7F0565C0 240600BE */ li $a2, 190 -/* 08B0F4 7F0565C4 0FC1A723 */ jal display_ammo_total_in_a1 -/* 08B0F8 7F0565C8 24070002 */ li $a3, 2 -/* 08B0FC 7F0565CC 0FC2B3BC */ jal combiner_bayer_lod_perspective -/* 08B100 7F0565D0 00402025 */ move $a0, $v0 -/* 08B104 7F0565D4 00408825 */ move $s1, $v0 -.L7F0565D8: -/* 08B108 7F0565D8 8FBF002C */ lw $ra, 0x2c($sp) -/* 08B10C 7F0565DC 02201025 */ move $v0, $s1 -/* 08B110 7F0565E0 8FB10028 */ lw $s1, 0x28($sp) -/* 08B114 7F0565E4 8FB00024 */ lw $s0, 0x24($sp) -/* 08B118 7F0565E8 03E00008 */ jr $ra -/* 08B11C 7F0565EC 27BD0048 */ addiu $sp, $sp, 0x48 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0565F0(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0565F0 -/* 08B120 7F0565F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08B124 7F0565F4 AFBF0014 */ sw $ra, 0x14($sp) -/* 08B128 7F0565F8 0FC15794 */ jal is_alarm_on -/* 08B12C 7F0565FC 00000000 */ nop -/* 08B130 7F056600 10400018 */ beqz $v0, .L7F056664 -/* 08B134 7F056604 3C0E8003 */ lui $t6, %hi(ptr_alarm_sfx) -/* 08B138 7F056608 8DCE0AC4 */ lw $t6, %lo(ptr_alarm_sfx)($t6) -/* 08B13C 7F05660C 15C0000A */ bnez $t6, .L7F056638 -/* 08B140 7F056610 00000000 */ nop -/* 08B144 7F056614 0FC2FF01 */ jal get_controls_locked_flag -/* 08B148 7F056618 00000000 */ nop -/* 08B14C 7F05661C 14400006 */ bnez $v0, .L7F056638 -/* 08B150 7F056620 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 08B154 7F056624 3C068003 */ lui $a2, %hi(ptr_alarm_sfx) -/* 08B158 7F056628 24C60AC4 */ addiu $a2, %lo(ptr_alarm_sfx) # addiu $a2, $a2, 0xac4 -/* 08B15C 7F05662C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 08B160 7F056630 0C002382 */ jal play_sfx_a1 -/* 08B164 7F056634 240500A3 */ li $a1, 163 -.L7F056638: -/* 08B168 7F056638 3C028003 */ lui $v0, %hi(alarm_timer) -/* 08B16C 7F05663C 24420AC0 */ addiu $v0, %lo(alarm_timer) # addiu $v0, $v0, 0xac0 -/* 08B170 7F056640 3C188005 */ lui $t8, %hi(clock_timer) -/* 08B174 7F056644 8F188374 */ lw $t8, %lo(clock_timer)($t8) -/* 08B178 7F056648 8C4F0000 */ lw $t7, ($v0) -/* 08B17C 7F05664C 01F8C821 */ addu $t9, $t7, $t8 -/* 08B180 7F056650 2B210709 */ slti $at, $t9, 0x709 -/* 08B184 7F056654 14200003 */ bnez $at, .L7F056664 -/* 08B188 7F056658 AC590000 */ sw $t9, ($v0) -/* 08B18C 7F05665C 0FC1578B */ jal stop_alarm -/* 08B190 7F056660 00000000 */ nop -.L7F056664: -/* 08B194 7F056664 0FC157D9 */ jal sub_GAME_7F055F64 -/* 08B198 7F056668 00000000 */ nop -/* 08B19C 7F05666C 0FC15878 */ jal sub_GAME_7F0561E0 -/* 08B1A0 7F056670 00000000 */ nop -/* 08B1A4 7F056674 0FC14732 */ jal sub_GAME_7F051CC8 -/* 08B1A8 7F056678 00000000 */ nop -/* 08B1AC 7F05667C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08B1B0 7F056680 3C018003 */ lui $at, %hi(D_80030AF4) -/* 08B1B4 7F056684 AC200AF4 */ sw $zero, %lo(D_80030AF4)($at) -/* 08B1B8 7F056688 03E00008 */ jr $ra -/* 08B1BC 7F05668C 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F056690(void) { - -} -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F056690 -/* 08B1C0 7F056690 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 08B1C4 7F056694 AFBF002C */ sw $ra, 0x2c($sp) -/* 08B1C8 7F056698 AFB40028 */ sw $s4, 0x28($sp) -/* 08B1CC 7F05669C AFB30024 */ sw $s3, 0x24($sp) -/* 08B1D0 7F0566A0 AFB20020 */ sw $s2, 0x20($sp) -/* 08B1D4 7F0566A4 AFB1001C */ sw $s1, 0x1c($sp) -/* 08B1D8 7F0566A8 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry -/* 08B1DC 7F0566AC AFB00018 */ sw $s0, 0x18($sp) -/* 08B1E0 7F0566B0 1040002A */ beqz $v0, .L7F05675C -/* 08B1E4 7F0566B4 00409025 */ move $s2, $v0 -/* 08B1E8 7F0566B8 24140001 */ li $s4, 1 -/* 08B1EC 7F0566BC 924E0000 */ lbu $t6, ($s2) -.L7F0566C0: -/* 08B1F0 7F0566C0 568E0024 */ bnel $s4, $t6, .L7F056754 -/* 08B1F4 7F0566C4 8E520024 */ lw $s2, 0x24($s2) -/* 08B1F8 7F0566C8 924F0001 */ lbu $t7, 1($s2) -/* 08B1FC 7F0566CC 31F80002 */ andi $t8, $t7, 2 -/* 08B200 7F0566D0 57000020 */ bnezl $t8, .L7F056754 -/* 08B204 7F0566D4 8E520024 */ lw $s2, 0x24($s2) -/* 08B208 7F0566D8 8E510004 */ lw $s1, 4($s2) -/* 08B20C 7F0566DC 92390002 */ lbu $t9, 2($s1) -/* 08B210 7F0566E0 02202025 */ move $a0, $s1 -/* 08B214 7F0566E4 33280080 */ andi $t0, $t9, 0x80 -/* 08B218 7F0566E8 5100001A */ beql $t0, $zero, .L7F056754 -/* 08B21C 7F0566EC 8E520024 */ lw $s2, 0x24($s2) -/* 08B220 7F0566F0 0FC12D1E */ jal sub_GAME_7F04B478 -/* 08B224 7F0566F4 8E330014 */ lw $s3, 0x14($s1) -/* 08B228 7F0566F8 10400018 */ beqz $v0, .L7F05675C -/* 08B22C 7F0566FC 00402825 */ move $a1, $v0 -/* 08B230 7F056700 8C500004 */ lw $s0, 4($v0) -/* 08B234 7F056704 52000016 */ beql $s0, $zero, .L7F056760 -/* 08B238 7F056708 8FBF002C */ lw $ra, 0x2c($sp) -/* 08B23C 7F05670C 8E290014 */ lw $t1, 0x14($s1) -/* 08B240 7F056710 0FC12D64 */ jal sub_GAME_7F04B590 -/* 08B244 7F056714 8D240008 */ lw $a0, 8($t1) -/* 08B248 7F056718 5040000E */ beql $v0, $zero, .L7F056754 -/* 08B24C 7F05671C 8E520024 */ lw $s2, 0x24($s2) -/* 08B250 7F056720 960B001A */ lhu $t3, 0x1a($s0) -/* 08B254 7F056724 8E6A0010 */ lw $t2, 0x10($s3) -/* 08B258 7F056728 8E0D0008 */ lw $t5, 8($s0) -/* 08B25C 7F05672C 000B6080 */ sll $t4, $t3, 2 -/* 08B260 7F056730 014C1021 */ addu $v0, $t2, $t4 -/* 08B264 7F056734 8C4E0000 */ lw $t6, ($v0) -/* 08B268 7F056738 11AE0005 */ beq $t5, $t6, .L7F056750 -/* 08B26C 7F05673C 02202025 */ move $a0, $s1 -/* 08B270 7F056740 0FC10409 */ jal sub_GAME_7F041024 -/* 08B274 7F056744 24050001 */ li $a1, 1 -/* 08B278 7F056748 10000005 */ b .L7F056760 -/* 08B27C 7F05674C 8FBF002C */ lw $ra, 0x2c($sp) -.L7F056750: -/* 08B280 7F056750 8E520024 */ lw $s2, 0x24($s2) -.L7F056754: -/* 08B284 7F056754 5640FFDA */ bnezl $s2, .L7F0566C0 -/* 08B288 7F056758 924E0000 */ lbu $t6, ($s2) -.L7F05675C: -/* 08B28C 7F05675C 8FBF002C */ lw $ra, 0x2c($sp) -.L7F056760: -/* 08B290 7F056760 8FB00018 */ lw $s0, 0x18($sp) -/* 08B294 7F056764 8FB1001C */ lw $s1, 0x1c($sp) -/* 08B298 7F056768 8FB20020 */ lw $s2, 0x20($sp) -/* 08B29C 7F05676C 8FB30024 */ lw $s3, 0x24($sp) -/* 08B2A0 7F056770 8FB40028 */ lw $s4, 0x28($sp) -/* 08B2A4 7F056774 03E00008 */ jr $ra -/* 08B2A8 7F056778 27BD0030 */ addiu $sp, $sp, 0x30 -) -#endif - - - - - -#ifdef NONMATCHING -void drop_inventory(void) { - -} -#else -GLOBAL_ASM( -.text -glabel drop_inventory -/* 08B2AC 7F05677C 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 08B2B0 7F056780 3C0E8008 */ lui $t6, %hi(pPlayer) -/* 08B2B4 7F056784 8DCEA0B0 */ lw $t6, %lo(pPlayer)($t6) -/* 08B2B8 7F056788 AFBF0034 */ sw $ra, 0x34($sp) -/* 08B2BC 7F05678C AFB40030 */ sw $s4, 0x30($sp) -/* 08B2C0 7F056790 AFB3002C */ sw $s3, 0x2c($sp) -/* 08B2C4 7F056794 AFB20028 */ sw $s2, 0x28($sp) -/* 08B2C8 7F056798 AFB10024 */ sw $s1, 0x24($sp) -/* 08B2CC 7F05679C AFB00020 */ sw $s0, 0x20($sp) -/* 08B2D0 7F0567A0 8DCF00A8 */ lw $t7, 0xa8($t6) -/* 08B2D4 7F0567A4 00002825 */ move $a1, $zero -/* 08B2D8 7F0567A8 8DF20004 */ lw $s2, 4($t7) -/* 08B2DC 7F0567AC 0FC1487A */ jal set_0x4_in_runtime_flags_for_item_in_guards_hand -/* 08B2E0 7F0567B0 02402025 */ move $a0, $s2 -/* 08B2E4 7F0567B4 02402025 */ move $a0, $s2 -/* 08B2E8 7F0567B8 0FC1487A */ jal set_0x4_in_runtime_flags_for_item_in_guards_hand -/* 08B2EC 7F0567BC 24050001 */ li $a1, 1 -/* 08B2F0 7F0567C0 24100001 */ li $s0, 1 -/* 08B2F4 7F0567C4 24140059 */ li $s4, 89 -/* 08B2F8 7F0567C8 3C132000 */ lui $s3, 0x2000 -.L7F0567CC: -/* 08B2FC 7F0567CC 0FC26C91 */ jal sub_GAME_7F09B244 -/* 08B300 7F0567D0 02002025 */ move $a0, $s0 -/* 08B304 7F0567D4 04400012 */ bltz $v0, .L7F056820 -/* 08B308 7F0567D8 00408825 */ move $s1, $v0 -/* 08B30C 7F0567DC 0FC230C5 */ jal is_weapon_in_inv -/* 08B310 7F0567E0 02002025 */ move $a0, $s0 -/* 08B314 7F0567E4 1040000E */ beqz $v0, .L7F056820 -/* 08B318 7F0567E8 02402025 */ move $a0, $s2 -/* 08B31C 7F0567EC 02202825 */ move $a1, $s1 -/* 08B320 7F0567F0 02003025 */ move $a2, $s0 -/* 08B324 7F0567F4 02603825 */ move $a3, $s3 -/* 08B328 7F0567F8 AFA00010 */ sw $zero, 0x10($sp) -/* 08B32C 7F0567FC 0FC14885 */ jal something_with_generating_object -/* 08B330 7F056800 AFA00014 */ sw $zero, 0x14($sp) -/* 08B334 7F056804 10400006 */ beqz $v0, .L7F056820 -/* 08B338 7F056808 00408825 */ move $s1, $v0 -/* 08B33C 7F05680C 00402025 */ move $a0, $v0 -/* 08B340 7F056810 0FC12FF4 */ jal sub_GAME_7F04BFD0 -/* 08B344 7F056814 24050001 */ li $a1, 1 -/* 08B348 7F056818 0FC1304C */ jal sub_GAME_7F04C130 -/* 08B34C 7F05681C 02202025 */ move $a0, $s1 -.L7F056820: -/* 08B350 7F056820 26100001 */ addiu $s0, $s0, 1 -/* 08B354 7F056824 1614FFE9 */ bne $s0, $s4, .L7F0567CC -/* 08B358 7F056828 00000000 */ nop -/* 08B35C 7F05682C 8FBF0034 */ lw $ra, 0x34($sp) -/* 08B360 7F056830 8FB00020 */ lw $s0, 0x20($sp) -/* 08B364 7F056834 8FB10024 */ lw $s1, 0x24($sp) -/* 08B368 7F056838 8FB20028 */ lw $s2, 0x28($sp) -/* 08B36C 7F05683C 8FB3002C */ lw $s3, 0x2c($sp) -/* 08B370 7F056840 8FB40030 */ lw $s4, 0x30($sp) -/* 08B374 7F056844 03E00008 */ jr $ra -/* 08B378 7F056848 27BD0038 */ addiu $sp, $sp, 0x38 -) -#endif - - - diff --git a/src/game/chrai.h b/src/game/chrai.h index 5b08d3f..7d273dd 100644 --- a/src/game/chrai.h +++ b/src/game/chrai.h @@ -103,9 +103,11 @@ extern struct struct_20 D_80031D58; extern u32 monitor_animation_microcode[]; extern u32 dword_D_80031F00[]; extern u32 dword_D_80031F44[]; - +extern f32 gas_damage_flag; +extern u32 gas_cutoff_flag; +extern struct object_standard * ptr_setup_objects; void stop_alarm(void); -void sub_GAME_7F055EF8(void); +void check_deactivate_gas_sound(void); #endif diff --git a/src/game/chrobjdata.h b/src/game/chrobjdata.h index 1b7d6eb..49d2c32 100644 --- a/src/game/chrobjdata.h +++ b/src/game/chrobjdata.h @@ -131,6 +131,8 @@ struct headHat float zsize; }; +extern struct p_itementry PitemZ_entries[]; + extern struct item_related prop_cctv_related; extern struct item_related prop_console_one_screen_related; extern struct item_related prop_console_four_screen_related; diff --git a/src/game/chrobjhandler.c b/src/game/chrobjhandler.c new file mode 100644 index 0000000..03db71b --- /dev/null +++ b/src/game/chrobjhandler.c @@ -0,0 +1,37077 @@ +#include "ultra64.h" +#include "bondgame.h" +#include "game/bond.h" +#include "game/chr.h" +#include "game/chrai.h" +#include "snd.h" +#include "music.h" +#include "game/lvl.h" +#include "game/lvl_text.h" + +s32 alarm_timer = 0; +s32 *ptr_alarm_sfx = 0; +f32 toxic_gas_sound_timer = 0.0; +s32 activate_gas_sound_timer = FALSE; +f32 D_80030AD0 = 0.0; +f32 D_80030AD4 = 0.0; +f32 D_80030AD8 = 0.0; +s32 D_80030ADC = 0; +u32 D_80030AE0 = 0; +s32 ptr_gas_sound = 0; +s32 clock_drawn_flag = 1; +s32 clock_enable = 0; +f32 clock_time = 0; +s32 D_80030AF4 = 0; +s32 D_80030AF8 = 0; +s32 D_80030AFC = 0; +s32 D_80030B00 = 0; +s32 D_80030B04 = 0; +s32 D_80030B08 = 0; +s32 D_80030B0C = 0; +s32 bodypartshot = 0xFFFFFFFF; +f32 D_80030B14 = 1.0; +f32 D_80030B18 = 1.0; +f32 D_80030B1C = 1.0; +f32 D_80030B20 = 1.0; +f32 D_80030B24 = 1.0; +f32 solo_ammo_multiplier = 1.0; +s16 Throwing_knife_SFX[] = {0x5F, 0x60, 0x61}; + +u32 D_80030B34[] = { + 0, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; +//80030b74 +u32 monitor_animation_microcode[] = { + 7, 0, 1, 0x400, 0x14, 8, 0x14, 2, + 0x400, 0x14, 0xD, 0xFF, 0x14, 8, 0x14, 5, + 0x200, 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, + 8, 0x14, 5, 0x400, 0x14, 6, 0x400, 0x14, + 8, 0x14, 0xB +}; + +u32 D_80030C00[] = { + 7, 0xC, 1, 0x400, 0x14, + 8, 0x14, 2, 0x400, 0x14, 0xD, 0xFF, 0x14, + 8, 0x14, 5, 0x200, 0x14, 6, 0x200, 0x14, + 0xD,0xFFFFFFFF, 0x14, 8, 0x14, 5, 0x400, 0x14, + 6, 0x400, 0x14, 8, 0x14, 7, 0xD, 1, + 0x400, 0x14, 8, 0x14, 2, 0x400, 0x14, 0xD, + 0xFF, 0x14, 8, 0x14, 5, 0x200, 0x14, 6, + 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, 8, 0x14, 5, + 0x400, 0x14, 6, 0x400, 0x14, 8, 0x14, 7, + 0xE, 1, 0x400, 0x14, 8, 0x14, 2, 0x400, + 0x14, 0xD, 0xFF, 0x14, 8, 0x14, 5, 0x200, + 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, 8, + 0x14, 5, 0x400, 0x14, 6, 0x400, 0x14, 8, + 0x14, 7, 0xF, 1, 0x400, 0x14, 8, 0x14, + 2, 0x400, 0x14, 0xD, 0xFF, 0x14, 8, 0x14, + 5, 0x200, 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, + 0x14, 8, 0x14, 5, 0x400, 0x14, 6, 0x400, + 0x14, 8, 0x14, 0xB, +}; + +u32 D_80030E24[] = { + 7, 0x11, 8, 0x50, + 7, 0x12, 8, 0x50, 7, 0x13, 8, 0x50, + 7, 0x14, 8, 0x50, 7, 0x15, 8, 0x50, + 7, 0x16, 8, 0x50, 7, 0x17, 8, 0x50, + 7, 0x18, 8, 0x50, 7, 0x19, 8, 0x50, + 7, 0x1A, 8, 0x50, 0xB, +}; + +u32 D_80030EC8[] = { + 7, 7, 8, + 0x50, 7, 8, 8, 0x50, 7, 9, 8, + 0x50, 7, 0xC, 8, 0x50, 7, 0xD, 8, + 0x50, 8, 0x50, 7, 0x19, 8, 0x50, 7, + 0x14, 8, 0x50, 0xB +}; + +u32 D_80030F44[] = { + 0xD,0x202020FF, 1, 7, 0x1C, 1, 0x800, 0x78, + 8, 0x78, 5, 0x100, 1, 6, 0x200, 0x3C, + 1,0xFFFFE000, 0x78, 8, 0x78, 5, 0x400, 1, + 6, 0x400, 0x3C, 6, 0x400, 0x3C, 1, 0x800, + 0x78, 8, 0x78, 5, 0x80, 1, 6, 0x800, + 0x3C, 6, 0x400, 0x78, 2, 0x400, 0x3C, 1, + 0x200, 0x78, 8, 0x78, 0xB +}; + +u32 D_80031018[] = { + 0xD, 0x202020FF, 1, 7, 0x1C, 5, 0x80, 1, 6, 0x800, 0x3C, 6, 0x400, 0x78, + 2, 0x400, 0xA, 1, 0x200, 0x28, 8, 0x78, 0xB +}; + +u32 D_80031074[] = { + 7, 0x1D, 0xD, 0x8000FF, 1, 2, 0xFFFFFE00, 0x50, 8, 0x78, 2, 0xFFFFFF00, + 0x14, 8, 0x78, 2, 0xFFFFFF80, 0xA, 8, 0x28, 2, 0xFFFFFE00, 0x28, 8, 0x3C, + 2, 0xFFFFFFC0, 0x1E, 8, 0x78, 0xB +}; + +u32 D_800310F0[] = { + 7, 0x1D, 0xD, 0x280000FF, 1, 2, 0x200, 0x50, 8, 0x78, 2, 0x100, 0x14, + 8, 0x78, 2, 0x80, 0xA, 8, 0x28, 2, 0x200, 0x28, 8, 0x3C, 2, 0x40, 0x1E, + 8, 0x78, 2, 0x100, 0x14, 8, 0x78, 2, 0x80, 0xA, 0xB +}; + +u32 D_8003118C[] = { + 7, 0x1D, 0xD, 0x3C00FF, 1, 2, 0x200, 0x50, 8, 0x78, 2, 0x80, 0xA, 8, + 0x28, 2, 0x100, 0x14, 8, 0x78, 2, 0x80, 0xA, 8, 0x28, 2, 0x200, 0x28, + 8, 0x3C, 2, 0x40, 0x1E, 8, 0x78, 0xB +}; + +u32 D_8003121C[] = { + 7, 0x1E, 0xD, 0x404000FF, 1, 1, 0x280, 1, 8, 0xA, 0xB +}; + +u32 D_80031248[] = { + 7, 0x1E, 0xD, 0x4040FF, 1, 1, 0x280, 1, 8, 0xA, 0xB +}; + +u32 D_80031274[] = { + 7, 0x1E, 0xD,0x406440FF, 1, 1,0xFFFFFD80, + 1, 8, 0xA, 0xB +}; + +u32 D_800312A0[] = { + 0xD, 0xAFF0AFE, 0x14, 9, &D_800312C8 +}; + +u32 D_800312B4[] = { + 0xD, 0xA640AFE, 0x14, 9, (u32)&D_800312C8 +}; + +u32 D_800312C8[] = { + 0xF, 0xB6, 8, 1, 0xA, &D_800312A0, 0x51E, 0xA, &D_800312B4, 0x147A, 0xB +}; + +u32 D_800312F4[] = { + 7, 0x30, 0xD, 0xA960AFE, 1, 9, &D_800312B4 +}; + +u32 D_80031310[] = { + 7, 0x10, 0xD, 0x303080FF, 0x1E, 8, 5, 7, 0x2D, 8, 5, 7, 0x2E, 8, 5, 7, 0x2F, 8, 5, 0xB +}; + +u32 D_80031360[] = { + 7, 0x2C, 0xD,0x308030FF, 0x1E, 1,0xFFFFFC00, 0x400, + 8, 0x5A0, 3, 0x288, 0x168, 4, 0x3AA, 0x168, + 5, 0x80, 0x12C, 6, 0x80, 0x12C, 0xD, 0xFF, + 0x3C, 8, 0x3C, 0xD,0x808080FF, 0xA, 8, 0x5A, + 0xD,0x38C838FF, 0x1E, 8, 0x1E, 0xD,0x803838FF, 0x3C, + 8, 0x3C, 0xD,0x808080FF, 0x3C, 8, 0x3C, 3, + 0x200, 0x168, 4, 0x200, 0x168, 5, 0x400, 0x2D0, + 6, 0x400, 0x2D0, 8, 0x12C, 7, 0x2C, 8, + 0x1A4, 0xD, 0xC800FF, 0x1E, 8, 0x1E, 0xD,0x1E381EFF, + 0x3C, 8, 0x3C, 0xB +}; + +u32 D_80031490[] = { + 0xD, 0xFF, 1, 0xD,0xC8C8C8FF, 0x190, 7, 1, + 8, 0x2A8, 7, 2, 8, 0x2A8, 7, 4, + 8, 0xB4, 0xD,0x808032FF, 1, 7, 4, 8, + 0xC8, 0xB +}; + +u32 D_800314F8[] = { + 5, 0x400, 1, 6, 0x400, 1, 0xD,0xC81414FF, + 1, 7, 6, 8, 0x258, 0xD,0xC8C8C8FF, 5, + 8, 5, 0xD,0x383838FF, 0x3C, 7, 0x1B, 0xD, + 0xA0A0AFF, 0x64, 8, 0x190, 0xB +}; + +u32 D_8003156C[] = { + 0xD, 0xA960AFF, 0, 7, 0x28, 8, 5, 7, + 0x29, 8, 5, 7, 0x2A, 8, 5, 7, + 0x2B, 8, 0xA, 7, 0x29, 8, 5, 0xB +}; + +u32 D_800315CC[] = { + 7, 0x24, 0xD, 0xA960AFF, 0, 8, 3, 0xD, + 0x87808FF, 0, 8, 2, 0xD, 0xA960AFF, 0, 8, + 3, 0xD, 0x87808FF, 0, 8, 2, 1, 0x264, + 0x1E, 7, 0x25, 0xD, 0xA960AFF, 0, 8, 3, + 0xD, 0x87808FF, 0, 8, 2, 7, 0x26, 0xD, + 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, 8, + 2, 7, 0x27, 0xD, 0xA960AFF, 0, 8, 3, + 0xD, 0x87808FF, 0, 8, 2, 0xD, 0xA960AFF, 0, + 8, 3, 0xD, 0x87808FF, 0, 8, 2, 0xD, + 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, 8, + 2, 0xD, 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, + 0, 8, 2, 1, 0x19C, 0x28, 7, 0x26, + 0xD, 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, + 8, 2, 0xD, 0xA960AFF, 0, 8, 3, 0xD, + 0x87808FF, 0, 8, 2, 7, 0x25, 0xD, 0xA960AFF, + 0, 8, 3, 0xD, 0x87808FF, 0, 8, 2, + 0xD, 0xA960AFF, 0, 8, 3, 0xD, 0x87808FF, 0, + 8, 2, 0xD, 0xA960AFF, 0, 8, 3, 0xD, + 0x87808FF, 0, 8, 2, 0xD, 0xA960AFF, 0, 8, + 3, 0xD, 0x87808FF, 0, 8, 2, 0xB +}; + +u32 D_80031848[] = { + 0x0000000D, 0x0A780AFF, + 0x00000000, 0x00000007, + 0x00000020, 0x00000008, + 0x00000005, 0x00000007, + 0x00000021, 0x00000008, + 0x00000005, 0x00000007, + 0x00000022, 0x00000008, + 0x00000005, 0x00000007, + 0x00000023, 0x00000008, + 0x00000005, 0x0000000B +}; + +u32 D_80031898[] = {7, 0x1C, 0xD, 0x800000, 1, 8, 5, 0xB}; + +struct struct_5 D_800318B8[] = { + {0xA, D_80031018, 0x1999}, + {0xA, D_8003156C, 0x1999}, + {0xA, D_8003121C, 0x1999}, + {0xA, D_80031248, 0x1999}, + {0xA, D_80031274, 0x1999}, + {0xA, D_800310F0, 0x3333}, + {0xA, D_8003118C, 0x6666}, + {0xA, D_80031074, 0xFFFF} +}; + +u32 D_80031918 = 0xB; + +struct struct_5 D_8003191C[] = { + {0xA, D_80030F44, 0x51E}, + {0xA, D_8003121C, 0x51E}, + {0xA, D_80031074, 0x51E}, + {0xA, &D_80031950, 0x9999} +}; + +u32 D_8003194C = 0xB; + +struct struct_5 D_80031950[] = { + {0xA, &D_800319D4, 0x1999}, + {0xA, &D_800319F0, 0x1999}, + {0xA, &D_80031A0C, 0x1999}, + {0xA, &D_80031A28, 0x1999}, + {0xA, &D_80031A44, 0x1999}, + {0xA, &D_80031A60, 0x1999}, + {0xA, &D_80031A7C, 0x1999}, + {0xA, &D_80031A98, 0x1999}, + {0xA, &D_80031AB4, 0x1999}, + {0xA, &D_80031AD0, 0x1999} +}; +u32 D_800319C8[] = {8, 0x64, 0xB}; + +struct struct_0 D_800319D4 = {7, 0x11, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_800319F0 = {7, 0x12, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031A0C = {7, 0x13, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031A28 = {7, 0x14, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031A44 = {7, 0x15, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031A60 = {7, 0x16, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031A7C = {7, 0x17, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031A98 = {7, 0x18, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031AB4 = {7, 0x19, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; +struct struct_0 D_80031AD0 = {7, 0x1A, 8, 0x14, 0xA, &D_80031AEC, 0xFFFF}; + +struct struct_5 D_80031AEC[] = { + {0xA, &D_80031B24, 0x1999}, + {0xA, &D_80031B38, 0x1999}, + {0xA, &D_80031B4C, 0x1999} +}; + +struct struct_12 D_80031B10[] = {0xD, 0xC8, 0xC8, 0xC8, 0xFF, 0x3C, 9, D_80031B60}; +struct struct_12 D_80031B24[] = {0xD, 0xC8, 0x32, 0x32, 0xFF, 0x3C, 9, D_80031B60}; +struct struct_12 D_80031B38[] = {0xD, 0x32, 0xC8, 0x32, 0xFF, 0x3C, 9, D_80031B60}; +struct struct_12 D_80031B4C[] = {0xD, 0x32, 0x32, 0xC8, 0xFF, 0x3C, 9, D_80031B60}; +u32 D_80031B60[] = {8, 0x32}; + +//80031B68 +struct struct_5 D_80031B68 = {0xA, &D_80031BB4, 0x1999}; +//80031B74 +struct struct_5 D_80031B74 = {0xA, &D_80031BD0, 0x1999}; +//80031B80 +struct struct_5 D_80031B80 = {0xA, &D_80031BEC, 0x1999}; +//80031B8C +struct struct_5 D_80031B8C = {0xA, &D_80031C08, 0x1999}; +//80031B98 +struct struct_5 D_80031B98 = {0xA, &D_80031C80, 0x1999}; +//80031BA4 +u32 D_80031BA4[] = {8, 0x12C, 9, &D_80031D30}; + +struct struct_16 D_80031BB4 = {1, 0x800, 0x78, 8, 0x78, 9, D_80031D30}; +struct struct_16 D_80031BD0 = {2, 0x2000, 0x32, 8, 0xC8, 9, D_80031D30}; +struct struct_16 D_80031BEC = {2, 0x2000, 0xC8, 8, 0xC8, 9, D_80031D30}; + +u32 D_80031C08[] = { + 3, 0x288, 0x12C, 4, 0x3AA, 0x12C, + 5, 0x80, 0xC8, 6, 0x80, 0xC8, + 8, 0x12C, 3, 0x200, 0x32, + 4, 0x200, 0xC8, 5, 0x400, 0x2D0, + 6, 0x400, 0x2D0, 8, 0x258, 9, D_80031D30 +}; + +u32 D_80031C80[] = { + 3, 0x320, 0x190, 4, 0x190, 0x190, 5, 0x80, + 0xC8, 6, 0x80, 0xC8, 8, 0x12C, 3, 0xC8, + 0xC8, 4, 0x190, 0x320, 5, 0x200, 0x2D0, 6, + 0x200, 0x2D0, 8, 0x320, 5, 0x400, 0x2D0, 6, + 0x400, 0x2D0, 3, 0x200, 0x64, 4, 0x200, 0x3C, + 8, 0x1F4, 9, D_80031D30 +}; + +u32 D_80031D30[] = { + 8, 0x32, 0xA, &D_80031AEC, 0x1999, 0xA, &D_80031D58, 0x3333, + 9, &D_80031950 +}; + +struct struct_20 D_80031D58 = {8, 0x32, 0xD, 0xFFFFFFFF, 0xA, 0xD, 0xFF, 5, 0xD, 0xFFFFFFFF, 0xA, 8, 0x19, 0xD, 0xFF, 0xC8, 8, 0x1F4, 9, D_80031950}; + +u32 D_80031DA8[] = { + 7, 0x31, 5, 0x200, 0, 6, 0x200, 0, + 0xD,0xDC2828FF, 0x3C, 8, 0x3C, 0xD,0x323232FF, 0xA, + 8, 0xA, 0xB +}; + +u32 D_80031DF4[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, + 0xD, 0x32C832FF, 0x3C, 8, 0x3C, + 0xD, 0x323232FF, 0xA, 8, 0xA, 0xB +}; + +u32 D_80031E40[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, + 0xD, 0x323232FF, 0xA, 8, 0xA, 0xB +}; + +u32 D_80031E78[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, + 0xD, 0xDC2828FF, 0xA, 8, 0xA, 0xB +}; + +u32 D_80031EB0[] = {7, 0x31, 5, 0x200, 0, 6, 0x200, 0, + 0xD, 0x32C832FF, 0xA, 8, 0xA, 0xB +}; + +u32 D_80031EE8[] = {7, 0, 0xD, 0xFF, 0, 0xC}; + +u32 dword_D_80031F00[] = { + 5, 0x400, 0, 6, 0x400, 0, 8, 1, + 5, 0x1000, 0x14, 6, 0x1000, 0x14, 8, 0x14, + 0xB +}; + +u32 dword_D_80031F44[] = { + 7, 0, 1, 0x400, 0x14, 8, 0x14, 2, + 0x400, 0x14, 0xD, 0xFF, 0x14, 8, 0x14, 5, + 0x200, 0x14, 6, 0x200, 0x14, 0xD,0xFFFFFFFF, 0x14, + 8, 0x14, 5, 0x400, 0x14, 6, 0x400, 0x14, + 8, 0x14, 0xB +}; + +u32 D_80031FD0[] = { + 0, 1, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +u32 D_80032010 = 0; +u32 D_80032014 = 0; +u32 D_80032018 = 0; +u32 D_8003201C = 0; +u32 D_80032020 = 0; +u32 D_80032024 = 0; +u32 D_80032028 = 0; +u32 D_8003202C = 0; +u32 D_80032030 = 0; +u32 D_80032034 = 0; +u32 D_80032038 = 0; +u32 D_8003203C = 0; +u32 D_80032040 = 0; +u32 D_80032044 = 0; +u32 D_80032048 = 0; + +u32 D_8003204C = 0x7FFF; +u32 D_80032050 = 0x7FFF; +u32 D_80032054 = 0x7FFF; +u32 D_80032058 = 0xFFFF8000; +u32 D_8003205C = 0xFFFF8000; +u32 D_80032060 = 0xFFFF8000; +u32 D_80032064 = 0; +u32 D_80032068 = 0; +u32 D_8003206C = 0; +u32 D_80032070 = 0x7FFF; +u32 D_80032074 = 0x7FFF; +u32 D_80032078 = 0x7FFF; +u32 D_8003207C = 0xFFFF8000; +u32 D_80032080 = 0xFFFF8000; +u32 D_80032084 = 0xFFFF8000; +u32 D_80032088 = 0; +u32 D_8003208C = 0; +u32 D_80032090 = 0; + +u32 blank_07_object[] = { + 0x1000007, 0xFFFF, 1, 0, 0, 0,0x3F800000, 0, + 0, 0, 0,0x3F800000, 0, 0, 0, 0, + 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, + 0, 0, 0, 0, 0,0x447A0000 +}; + +u32 D_8003210C[] = {0xFFFFFF00, 0xFFFFFF00}; + +u32 blank_11_object[] = { + 0x1000011, 0, 0x4000, 0, 0, 0,0x3F800000, 0, + 0, 0, 0,0x3F800000, 0, 0, 0, 0, + 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, + 0, 0, 0, 0, 0,0x447A0000 +}; + +u32 D_8003218C[] = {0xFFFFFF00, 0xFFFFFF00}; + +u32 blank_08_object_preset_1[] = { + 0x1000008, 1, 0, 0, 0, 0,0x3F800000, 0, + 0, 0, 0,0x3F800000, 0, 0, 0, 0, + 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, + 0, 0, 0, 0, 0,0x447A0000,0xFFFFFF00,0xFFFFFF00, + 0xFFFFFF +}; + +u32 D_80032218 = 0; + +u32 blank_08_object_preset_4001[] = { + 0x1000008, 0x4001, 0, 0, 0, 0,0x3F800000, 0, + 0, 0, 0,0x3F800000, 0, 0, 0, 0, + 0x3F800000, 0, 0, 0, 0,0x3F800000, 0, 0, + 0, 0, 0, 0, 0,0x447A0000,0xFFFFFF00,0xFFFFFF00, + 0xFFFFFF +}; + +u32 D_800322A0 = 0; +u32 D_800322A4 = 0; + +u32 D_800322A8[] = {1, 3}; +u32 D_800322B0[] = {0, 0, 0, 0}; +u32 D_800322C0[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +//rodata + + +#ifdef NONMATCHING +void sub_GAME_7F03FB70(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FB70 +/* 0746A0 7F03FB70 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0746A4 7F03FB74 AFBF001C */ sw $ra, 0x1c($sp) +/* 0746A8 7F03FB78 AFB00018 */ sw $s0, 0x18($sp) +/* 0746AC 7F03FB7C 8C8E0000 */ lw $t6, ($a0) +/* 0746B0 7F03FB80 00808025 */ move $s0, $a0 +/* 0746B4 7F03FB84 31CF0080 */ andi $t7, $t6, 0x80 +/* 0746B8 7F03FB88 51E00014 */ beql $t7, $zero, .L7F03FBDC +/* 0746BC 7F03FB8C 8E180000 */ lw $t8, ($s0) +/* 0746C0 7F03FB90 8C840098 */ lw $a0, 0x98($a0) +/* 0746C4 7F03FB94 50800008 */ beql $a0, $zero, .L7F03FBB8 +/* 0746C8 7F03FB98 8E04009C */ lw $a0, 0x9c($s0) +/* 0746CC 7F03FB9C 0C00237C */ jal sfxGetArg0Unk3F +/* 0746D0 7F03FBA0 00000000 */ nop +/* 0746D4 7F03FBA4 50400004 */ beql $v0, $zero, .L7F03FBB8 +/* 0746D8 7F03FBA8 8E04009C */ lw $a0, 0x9c($s0) +/* 0746DC 7F03FBAC 0C002408 */ jal sfxDeactivate +/* 0746E0 7F03FBB0 8E040098 */ lw $a0, 0x98($s0) +/* 0746E4 7F03FBB4 8E04009C */ lw $a0, 0x9c($s0) +.L7F03FBB8: +/* 0746E8 7F03FBB8 50800008 */ beql $a0, $zero, .L7F03FBDC +/* 0746EC 7F03FBBC 8E180000 */ lw $t8, ($s0) +/* 0746F0 7F03FBC0 0C00237C */ jal sfxGetArg0Unk3F +/* 0746F4 7F03FBC4 00000000 */ nop +/* 0746F8 7F03FBC8 50400004 */ beql $v0, $zero, .L7F03FBDC +/* 0746FC 7F03FBCC 8E180000 */ lw $t8, ($s0) +/* 074700 7F03FBD0 0C002408 */ jal sfxDeactivate +/* 074704 7F03FBD4 8E04009C */ lw $a0, 0x9c($s0) +/* 074708 7F03FBD8 8E180000 */ lw $t8, ($s0) +.L7F03FBDC: +/* 07470C 7F03FBDC 3C018000 */ lui $at, 0x8000 +/* 074710 7F03FBE0 0301C825 */ or $t9, $t8, $at +/* 074714 7F03FBE4 AE190000 */ sw $t9, ($s0) +/* 074718 7F03FBE8 8FBF001C */ lw $ra, 0x1c($sp) +/* 07471C 7F03FBEC 8FB00018 */ lw $s0, 0x18($sp) +/* 074720 7F03FBF0 27BD0020 */ addiu $sp, $sp, 0x20 +/* 074724 7F03FBF4 03E00008 */ jr $ra +/* 074728 7F03FBF8 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FBFC(void) { + +} +#else +GLOBAL_ASM( + +.text +glabel sub_GAME_7F03FBFC +/* 07472C 7F03FBFC 44800000 */ mtc1 $zero, $f0 +/* 074730 7F03FC00 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 074734 7F03FC04 44811000 */ mtc1 $at, $f2 +/* 074738 7F03FC08 AC800000 */ sw $zero, ($a0) +/* 07473C 7F03FC0C AC800088 */ sw $zero, 0x88($a0) +/* 074740 7F03FC10 3C018005 */ lui $at, %hi(D_80052A48) +/* 074744 7F03FC14 E4800004 */ swc1 $f0, 4($a0) +/* 074748 7F03FC18 E4800008 */ swc1 $f0, 8($a0) +/* 07474C 7F03FC1C E480000C */ swc1 $f0, 0xc($a0) +/* 074750 7F03FC20 E4800010 */ swc1 $f0, 0x10($a0) +/* 074754 7F03FC24 E4800014 */ swc1 $f0, 0x14($a0) +/* 074758 7F03FC28 E4800018 */ swc1 $f0, 0x18($a0) +/* 07475C 7F03FC2C E480001C */ swc1 $f0, 0x1c($a0) +/* 074760 7F03FC30 E4820060 */ swc1 $f2, 0x60($a0) +/* 074764 7F03FC34 C4242A48 */ lwc1 $f4, %lo(D_80052A48)($at) +/* 074768 7F03FC38 2402FFFF */ li $v0, -1 +/* 07476C 7F03FC3C 240E0001 */ li $t6, 1 +/* 074770 7F03FC40 AC800090 */ sw $zero, 0x90($a0) +/* 074774 7F03FC44 AC8200A0 */ sw $v0, 0xa0($a0) +/* 074778 7F03FC48 AC8000A4 */ sw $zero, 0xa4($a0) +/* 07477C 7F03FC4C AC8000A8 */ sw $zero, 0xa8($a0) +/* 074780 7F03FC50 AC8200AC */ sw $v0, 0xac($a0) +/* 074784 7F03FC54 AC8E00B8 */ sw $t6, 0xb8($a0) +/* 074788 7F03FC58 AC8000BC */ sw $zero, 0xbc($a0) +/* 07478C 7F03FC5C AC8000E0 */ sw $zero, 0xe0($a0) +/* 074790 7F03FC60 AC8000E4 */ sw $zero, 0xe4($a0) +/* 074794 7F03FC64 AC8000E8 */ sw $zero, 0xe8($a0) +/* 074798 7F03FC68 E4800094 */ swc1 $f0, 0x94($a0) +/* 07479C 7F03FC6C E48200C0 */ swc1 $f2, 0xc0($a0) +/* 0747A0 7F03FC70 E48200C4 */ swc1 $f2, 0xc4($a0) +/* 0747A4 7F03FC74 E48200C8 */ swc1 $f2, 0xc8($a0) +/* 0747A8 7F03FC78 03E00008 */ jr $ra +/* 0747AC 7F03FC7C E484008C */ swc1 $f4, 0x8c($a0) +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FC80(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FC80 +/* 0747B0 7F03FC80 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 0747B4 7F03FC84 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) +/* 0747B8 7F03FC88 3C048007 */ lui $a0, %hi(dword_CODE_bss_80075030) +/* 0747BC 7F03FC8C AFBF0014 */ sw $ra, 0x14($sp) +/* 0747C0 7F03FC90 2406FFFF */ li $a2, -1 +/* 0747C4 7F03FC94 24845030 */ addiu $a0, %lo(dword_CODE_bss_80075030) # addiu $a0, $a0, 0x5030 +/* 0747C8 7F03FC98 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 +/* 0747CC 7F03FC9C 00002825 */ move $a1, $zero +/* 0747D0 7F03FCA0 3C038000 */ lui $v1, 0x8000 +.L7F03FCA4: +/* 0747D4 7F03FCA4 8C4E0000 */ lw $t6, ($v0) +/* 0747D8 7F03FCA8 244200EC */ addiu $v0, $v0, 0xec +/* 0747DC 7F03FCAC 0044082B */ sltu $at, $v0, $a0 +/* 0747E0 7F03FCB0 01C37824 */ and $t7, $t6, $v1 +/* 0747E4 7F03FCB4 11E00007 */ beqz $t7, .L7F03FCD4 +/* 0747E8 7F03FCB8 3C078007 */ lui $a3, %hi(dword_CODE_bss_80073DC0) +/* 0747EC 7F03FCBC 24E73DC0 */ addiu $a3, %lo(dword_CODE_bss_80073DC0) # addiu $a3, $a3, 0x3dc0 +/* 0747F0 7F03FCC0 00E52021 */ addu $a0, $a3, $a1 +/* 0747F4 7F03FCC4 0FC0FEFF */ jal sub_GAME_7F03FBFC +/* 0747F8 7F03FCC8 AFA40020 */ sw $a0, 0x20($sp) +/* 0747FC 7F03FCCC 10000032 */ b .L7F03FD98 +/* 074800 7F03FCD0 8FA20020 */ lw $v0, 0x20($sp) +.L7F03FCD4: +/* 074804 7F03FCD4 1420FFF3 */ bnez $at, .L7F03FCA4 +/* 074808 7F03FCD8 24A500EC */ addiu $a1, $a1, 0xec +/* 07480C 7F03FCDC 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) +/* 074810 7F03FCE0 3C078007 */ lui $a3, %hi(dword_CODE_bss_80073DC0) +/* 074814 7F03FCE4 24E73DC0 */ addiu $a3, %lo(dword_CODE_bss_80073DC0) # addiu $a3, $a3, 0x3dc0 +/* 074818 7F03FCE8 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 +/* 07481C 7F03FCEC 00001825 */ move $v1, $zero +/* 074820 7F03FCF0 240500EC */ li $a1, 236 +/* 074824 7F03FCF4 24040014 */ li $a0, 20 +.L7F03FCF8: +/* 074828 7F03FCF8 8C5800E4 */ lw $t8, 0xe4($v0) +/* 07482C 7F03FCFC 5300000D */ beql $t8, $zero, .L7F03FD34 +/* 074830 7F03FD00 24630001 */ addiu $v1, $v1, 1 +/* 074834 7F03FD04 04C2000A */ bltzl $a2, .L7F03FD30 +/* 074838 7F03FD08 00603025 */ move $a2, $v1 +/* 07483C 7F03FD0C 00C50019 */ multu $a2, $a1 +/* 074840 7F03FD10 8C5900E8 */ lw $t9, 0xe8($v0) +/* 074844 7F03FD14 00004812 */ mflo $t1 +/* 074848 7F03FD18 00E95021 */ addu $t2, $a3, $t1 +/* 07484C 7F03FD1C 8D4B00E8 */ lw $t3, 0xe8($t2) +/* 074850 7F03FD20 032B082A */ slt $at, $t9, $t3 +/* 074854 7F03FD24 50200003 */ beql $at, $zero, .L7F03FD34 +/* 074858 7F03FD28 24630001 */ addiu $v1, $v1, 1 +/* 07485C 7F03FD2C 00603025 */ move $a2, $v1 +.L7F03FD30: +/* 074860 7F03FD30 24630001 */ addiu $v1, $v1, 1 +.L7F03FD34: +/* 074864 7F03FD34 1464FFF0 */ bne $v1, $a0, .L7F03FCF8 +/* 074868 7F03FD38 244200EC */ addiu $v0, $v0, 0xec +/* 07486C 7F03FD3C 04C00016 */ bltz $a2, .L7F03FD98 +/* 074870 7F03FD40 00001025 */ move $v0, $zero +/* 074874 7F03FD44 00C50019 */ multu $a2, $a1 +/* 074878 7F03FD48 00001812 */ mflo $v1 +/* 07487C 7F03FD4C 00E34021 */ addu $t0, $a3, $v1 +/* 074880 7F03FD50 8D0C00E4 */ lw $t4, 0xe4($t0) +/* 074884 7F03FD54 8D840010 */ lw $a0, 0x10($t4) +/* 074888 7F03FD58 AFA80020 */ sw $t0, 0x20($sp) +/* 07488C 7F03FD5C 0FC1033C */ jal sub_GAME_7F040CF0 +/* 074890 7F03FD60 AFA30024 */ sw $v1, 0x24($sp) +/* 074894 7F03FD64 8FA80020 */ lw $t0, 0x20($sp) +/* 074898 7F03FD68 8FA30024 */ lw $v1, 0x24($sp) +/* 07489C 7F03FD6C 3C078007 */ lui $a3, %hi(dword_CODE_bss_80073DC0) +/* 0748A0 7F03FD70 8D0200E4 */ lw $v0, 0xe4($t0) +/* 0748A4 7F03FD74 24E73DC0 */ addiu $a3, %lo(dword_CODE_bss_80073DC0) # addiu $a3, $a3, 0x3dc0 +/* 0748A8 7F03FD78 00E32021 */ addu $a0, $a3, $v1 +/* 0748AC 7F03FD7C 8C4D0064 */ lw $t5, 0x64($v0) +/* 0748B0 7F03FD80 35AE0004 */ ori $t6, $t5, 4 +/* 0748B4 7F03FD84 AC4E0064 */ sw $t6, 0x64($v0) +/* 0748B8 7F03FD88 0FC0FEFF */ jal sub_GAME_7F03FBFC +/* 0748BC 7F03FD8C AFA4001C */ sw $a0, 0x1c($sp) +/* 0748C0 7F03FD90 10000001 */ b .L7F03FD98 +/* 0748C4 7F03FD94 8FA2001C */ lw $v0, 0x1c($sp) +.L7F03FD98: +/* 0748C8 7F03FD98 8FBF0014 */ lw $ra, 0x14($sp) +/* 0748CC 7F03FD9C 27BD0030 */ addiu $sp, $sp, 0x30 +/* 0748D0 7F03FDA0 03E00008 */ jr $ra +/* 0748D4 7F03FDA4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FDA8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FDA8 +/* 0748D8 7F03FDA8 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0748DC 7F03FDAC AFBF0014 */ sw $ra, 0x14($sp) +/* 0748E0 7F03FDB0 8C830004 */ lw $v1, 4($a0) +/* 0748E4 7F03FDB4 8C620064 */ lw $v0, 0x64($v1) +/* 0748E8 7F03FDB8 304E0040 */ andi $t6, $v0, 0x40 +/* 0748EC 7F03FDBC 11C00007 */ beqz $t6, .L7F03FDDC +/* 0748F0 7F03FDC0 30580080 */ andi $t8, $v0, 0x80 +/* 0748F4 7F03FDC4 0FC0FF20 */ jal sub_GAME_7F03FC80 +/* 0748F8 7F03FDC8 AFA3001C */ sw $v1, 0x1c($sp) +/* 0748FC 7F03FDCC 8FA3001C */ lw $v1, 0x1c($sp) +/* 074900 7F03FDD0 8C6F006C */ lw $t7, 0x6c($v1) +/* 074904 7F03FDD4 1000000B */ b .L7F03FE04 +/* 074908 7F03FDD8 ADE20044 */ sw $v0, 0x44($t7) +.L7F03FDDC: +/* 07490C 7F03FDDC 5700000A */ bnezl $t8, .L7F03FE08 +/* 074910 7F03FDE0 8FBF0014 */ lw $ra, 0x14($sp) +/* 074914 7F03FDE4 0FC0FF20 */ jal sub_GAME_7F03FC80 +/* 074918 7F03FDE8 AFA3001C */ sw $v1, 0x1c($sp) +/* 07491C 7F03FDEC 8FA3001C */ lw $v1, 0x1c($sp) +/* 074920 7F03FDF0 10400004 */ beqz $v0, .L7F03FE04 +/* 074924 7F03FDF4 AC62006C */ sw $v0, 0x6c($v1) +/* 074928 7F03FDF8 8C790064 */ lw $t9, 0x64($v1) +/* 07492C 7F03FDFC 37280080 */ ori $t0, $t9, 0x80 +/* 074930 7F03FE00 AC680064 */ sw $t0, 0x64($v1) +.L7F03FE04: +/* 074934 7F03FE04 8FBF0014 */ lw $ra, 0x14($sp) +.L7F03FE08: +/* 074938 7F03FE08 27BD0020 */ addiu $sp, $sp, 0x20 +/* 07493C 7F03FE0C 03E00008 */ jr $ra +/* 074940 7F03FE10 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FE14(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FE14 +/* 074944 7F03FE14 8C820004 */ lw $v0, 4($a0) +/* 074948 7F03FE18 00001825 */ move $v1, $zero +/* 07494C 7F03FE1C 8C450064 */ lw $a1, 0x64($v0) +/* 074950 7F03FE20 30AE0040 */ andi $t6, $a1, 0x40 +/* 074954 7F03FE24 11C00004 */ beqz $t6, .L7F03FE38 +/* 074958 7F03FE28 30B80080 */ andi $t8, $a1, 0x80 +/* 07495C 7F03FE2C 8C4F006C */ lw $t7, 0x6c($v0) +/* 074960 7F03FE30 10000004 */ b .L7F03FE44 +/* 074964 7F03FE34 8DE30044 */ lw $v1, 0x44($t7) +.L7F03FE38: +/* 074968 7F03FE38 13000002 */ beqz $t8, .L7F03FE44 +/* 07496C 7F03FE3C 00000000 */ nop +/* 074970 7F03FE40 8C43006C */ lw $v1, 0x6c($v0) +.L7F03FE44: +/* 074974 7F03FE44 1060000E */ beqz $v1, .L7F03FE80 +/* 074978 7F03FE48 00000000 */ nop +/* 07497C 7F03FE4C 8C790000 */ lw $t9, ($v1) +/* 074980 7F03FE50 240A00FF */ li $t2, 255 +/* 074984 7F03FE54 240B00FF */ li $t3, 255 +/* 074988 7F03FE58 37280004 */ ori $t0, $t9, 4 +/* 07498C 7F03FE5C AC680000 */ sw $t0, ($v1) +/* 074990 7F03FE60 8C820014 */ lw $v0, 0x14($a0) +/* 074994 7F03FE64 50400006 */ beql $v0, $zero, .L7F03FE80 +/* 074998 7F03FE68 A06B00CC */ sb $t3, 0xcc($v1) +/* 07499C 7F03FE6C 90490003 */ lbu $t1, 3($v0) +/* 0749A0 7F03FE70 A06A00CD */ sb $t2, 0xcd($v1) +/* 0749A4 7F03FE74 03E00008 */ jr $ra +/* 0749A8 7F03FE78 A06900CC */ sb $t1, 0xcc($v1) + +/* 0749AC 7F03FE7C A06B00CC */ sb $t3, 0xcc($v1) +.L7F03FE80: +/* 0749B0 7F03FE80 03E00008 */ jr $ra +/* 0749B4 7F03FE84 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FE88(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FE88 +/* 0749B8 7F03FE88 8C8E0000 */ lw $t6, ($a0) +/* 0749BC 7F03FE8C 35CF0001 */ ori $t7, $t6, 1 +/* 0749C0 7F03FE90 03E00008 */ jr $ra +/* 0749C4 7F03FE94 AC8F0000 */ sw $t7, ($a0) +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FE98(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FE98 +/* 0749C8 7F03FE98 3C048007 */ lui $a0, %hi(dword_CODE_bss_80075030) +/* 0749CC 7F03FE9C 3C028007 */ lui $v0, %hi(objinst) +/* 0749D0 7F03FEA0 24425B70 */ addiu $v0, %lo(objinst) # addiu $v0, $v0, 0x5b70 +/* 0749D4 7F03FEA4 24845030 */ addiu $a0, %lo(dword_CODE_bss_80075030) # addiu $a0, $a0, 0x5030 +/* 0749D8 7F03FEA8 00001825 */ move $v1, $zero +.L7F03FEAC: +/* 0749DC 7F03FEAC 8C8E0000 */ lw $t6, ($a0) +/* 0749E0 7F03FEB0 31CF0001 */ andi $t7, $t6, 1 +/* 0749E4 7F03FEB4 11E00006 */ beqz $t7, .L7F03FED0 +/* 0749E8 7F03FEB8 3C188007 */ lui $t8, %hi(dword_CODE_bss_80075030) +/* 0749EC 7F03FEBC 27185030 */ addiu $t8, %lo(dword_CODE_bss_80075030) # addiu $t8, $t8, 0x5030 +/* 0749F0 7F03FEC0 AC800000 */ sw $zero, ($a0) +/* 0749F4 7F03FEC4 AC800044 */ sw $zero, 0x44($a0) +/* 0749F8 7F03FEC8 03E00008 */ jr $ra +/* 0749FC 7F03FECC 00781021 */ addu $v0, $v1, $t8 + +.L7F03FED0: +/* 074A00 7F03FED0 8C990048 */ lw $t9, 0x48($a0) +/* 074A04 7F03FED4 33280001 */ andi $t0, $t9, 1 +/* 074A08 7F03FED8 11000007 */ beqz $t0, .L7F03FEF8 +/* 074A0C 7F03FEDC 3C0A8007 */ lui $t2, %hi(dword_CODE_bss_80075030) +/* 074A10 7F03FEE0 254A5030 */ addiu $t2, %lo(dword_CODE_bss_80075030) # addiu $t2, $t2, 0x5030 +/* 074A14 7F03FEE4 24690048 */ addiu $t1, $v1, 0x48 +/* 074A18 7F03FEE8 012A1021 */ addu $v0, $t1, $t2 +/* 074A1C 7F03FEEC AC800048 */ sw $zero, 0x48($a0) +/* 074A20 7F03FEF0 03E00008 */ jr $ra +/* 074A24 7F03FEF4 AC80008C */ sw $zero, 0x8c($a0) + +.L7F03FEF8: +/* 074A28 7F03FEF8 8C8B0090 */ lw $t3, 0x90($a0) +/* 074A2C 7F03FEFC 316C0001 */ andi $t4, $t3, 1 +/* 074A30 7F03FF00 11800007 */ beqz $t4, .L7F03FF20 +/* 074A34 7F03FF04 3C0E8007 */ lui $t6, %hi(dword_CODE_bss_80075030) +/* 074A38 7F03FF08 25CE5030 */ addiu $t6, %lo(dword_CODE_bss_80075030) # addiu $t6, $t6, 0x5030 +/* 074A3C 7F03FF0C 246D0090 */ addiu $t5, $v1, 0x90 +/* 074A40 7F03FF10 01AE1021 */ addu $v0, $t5, $t6 +/* 074A44 7F03FF14 AC800090 */ sw $zero, 0x90($a0) +/* 074A48 7F03FF18 03E00008 */ jr $ra +/* 074A4C 7F03FF1C AC8000D4 */ sw $zero, 0xd4($a0) + +.L7F03FF20: +/* 074A50 7F03FF20 8C8F00D8 */ lw $t7, 0xd8($a0) +/* 074A54 7F03FF24 31F80001 */ andi $t8, $t7, 1 +/* 074A58 7F03FF28 13000007 */ beqz $t8, .L7F03FF48 +/* 074A5C 7F03FF2C 3C088007 */ lui $t0, %hi(dword_CODE_bss_80075030) +/* 074A60 7F03FF30 25085030 */ addiu $t0, %lo(dword_CODE_bss_80075030) # addiu $t0, $t0, 0x5030 +/* 074A64 7F03FF34 247900D8 */ addiu $t9, $v1, 0xd8 +/* 074A68 7F03FF38 03281021 */ addu $v0, $t9, $t0 +/* 074A6C 7F03FF3C AC8000D8 */ sw $zero, 0xd8($a0) +/* 074A70 7F03FF40 03E00008 */ jr $ra +/* 074A74 7F03FF44 AC80011C */ sw $zero, 0x11c($a0) + +.L7F03FF48: +/* 074A78 7F03FF48 24840120 */ addiu $a0, $a0, 0x120 +/* 074A7C 7F03FF4C 1482FFD7 */ bne $a0, $v0, .L7F03FEAC +/* 074A80 7F03FF50 24630120 */ addiu $v1, $v1, 0x120 +/* 074A84 7F03FF54 00001025 */ move $v0, $zero +/* 074A88 7F03FF58 03E00008 */ jr $ra +/* 074A8C 7F03FF5C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FF60(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FF60 +/* 074A90 7F03FF60 908E0002 */ lbu $t6, 2($a0) +/* 074A94 7F03FF64 3C014080 */ lui $at, 0x4080 +/* 074A98 7F03FF68 31CF0080 */ andi $t7, $t6, 0x80 +/* 074A9C 7F03FF6C 55E0000C */ bnezl $t7, .L7F03FFA0 +/* 074AA0 7F03FF70 C4840070 */ lwc1 $f4, 0x70($a0) +/* 074AA4 7F03FF74 3C014040 */ li $at, 0x40400000 # 3.000000 +/* 074AA8 7F03FF78 44813000 */ mtc1 $at, $f6 +/* 074AAC 7F03FF7C C4840070 */ lwc1 $f4, 0x70($a0) +/* 074AB0 7F03FF80 C48A0074 */ lwc1 $f10, 0x74($a0) +/* 074AB4 7F03FF84 46062202 */ mul.s $f8, $f4, $f6 +/* 074AB8 7F03FF88 460A4403 */ div.s $f16, $f8, $f10 +/* 074ABC 7F03FF8C 4600848D */ trunc.w.s $f18, $f16 +/* 074AC0 7F03FF90 44029000 */ mfc1 $v0, $f18 +/* 074AC4 7F03FF94 03E00008 */ jr $ra +/* 074AC8 7F03FF98 00000000 */ nop + +/* 074ACC 7F03FF9C C4840070 */ lwc1 $f4, 0x70($a0) +.L7F03FFA0: +/* 074AD0 7F03FFA0 44813000 */ mtc1 $at, $f6 +/* 074AD4 7F03FFA4 00000000 */ nop +/* 074AD8 7F03FFA8 46062200 */ add.s $f8, $f4, $f6 +/* 074ADC 7F03FFAC 4600428D */ trunc.w.s $f10, $f8 +/* 074AE0 7F03FFB0 44025000 */ mfc1 $v0, $f10 +/* 074AE4 7F03FFB4 00000000 */ nop +/* 074AE8 7F03FFB8 03E00008 */ jr $ra +/* 074AEC 7F03FFBC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void do_something_if_object_destroyed(void) { + +} +#else +GLOBAL_ASM( +.text +glabel do_something_if_object_destroyed +/* 074AF0 7F03FFC0 908E0002 */ lbu $t6, 2($a0) +/* 074AF4 7F03FFC4 31CF0080 */ andi $t7, $t6, 0x80 +/* 074AF8 7F03FFC8 55E00004 */ bnezl $t7, .L7F03FFDC +/* 074AFC 7F03FFCC C4840070 */ lwc1 $f4, 0x70($a0) +/* 074B00 7F03FFD0 03E00008 */ jr $ra +/* 074B04 7F03FFD4 00001025 */ move $v0, $zero + +/* 074B08 7F03FFD8 C4840070 */ lwc1 $f4, 0x70($a0) +.L7F03FFDC: +/* 074B0C 7F03FFDC 4600218D */ trunc.w.s $f6, $f4 +/* 074B10 7F03FFE0 44023000 */ mfc1 $v0, $f6 +/* 074B14 7F03FFE4 00000000 */ nop +/* 074B18 7F03FFE8 0002C883 */ sra $t9, $v0, 2 +/* 074B1C 7F03FFEC 27220001 */ addiu $v0, $t9, 1 +/* 074B20 7F03FFF0 03E00008 */ jr $ra +/* 074B24 7F03FFF4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F03FFF8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F03FFF8 +/* 074B28 7F03FFF8 8C8E0000 */ lw $t6, ($a0) +/* 074B2C 7F03FFFC 8DC20014 */ lw $v0, 0x14($t6) +/* 074B30 7F040000 5040001B */ beql $v0, $zero, .L7F040070 +/* 074B34 7F040004 00001025 */ move $v0, $zero +/* 074B38 7F040008 1040000A */ beqz $v0, .L7F040034 +/* 074B3C 7F04000C 00401825 */ move $v1, $v0 +/* 074B40 7F040010 2405000A */ li $a1, 10 +/* 074B44 7F040014 946F0000 */ lhu $t7, ($v1) +.L7F040018: +/* 074B48 7F040018 54AF0004 */ bnel $a1, $t7, .L7F04002C +/* 074B4C 7F04001C 8C63000C */ lw $v1, 0xc($v1) +/* 074B50 7F040020 03E00008 */ jr $ra +/* 074B54 7F040024 8C620004 */ lw $v0, 4($v1) + +/* 074B58 7F040028 8C63000C */ lw $v1, 0xc($v1) +.L7F04002C: +/* 074B5C 7F04002C 5460FFFA */ bnezl $v1, .L7F040018 +/* 074B60 7F040030 946F0000 */ lhu $t7, ($v1) +.L7F040034: +/* 074B64 7F040034 8C440014 */ lw $a0, 0x14($v0) +/* 074B68 7F040038 2405000A */ li $a1, 10 +/* 074B6C 7F04003C 5080000C */ beql $a0, $zero, .L7F040070 +/* 074B70 7F040040 00001025 */ move $v0, $zero +/* 074B74 7F040044 10800009 */ beqz $a0, .L7F04006C +/* 074B78 7F040048 00801825 */ move $v1, $a0 +/* 074B7C 7F04004C 94780000 */ lhu $t8, ($v1) +.L7F040050: +/* 074B80 7F040050 54B80004 */ bnel $a1, $t8, .L7F040064 +/* 074B84 7F040054 8C63000C */ lw $v1, 0xc($v1) +/* 074B88 7F040058 03E00008 */ jr $ra +/* 074B8C 7F04005C 8C620004 */ lw $v0, 4($v1) + +/* 074B90 7F040060 8C63000C */ lw $v1, 0xc($v1) +.L7F040064: +/* 074B94 7F040064 5460FFFA */ bnezl $v1, .L7F040050 +/* 074B98 7F040068 94780000 */ lhu $t8, ($v1) +.L7F04006C: +/* 074B9C 7F04006C 00001025 */ move $v0, $zero +.L7F040070: +/* 074BA0 7F040070 03E00008 */ jr $ra +/* 074BA4 7F040074 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F040078(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F040078 +/* 074BA8 7F040078 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 074BAC 7F04007C AFBF0014 */ sw $ra, 0x14($sp) +/* 074BB0 7F040080 8C8E0014 */ lw $t6, 0x14($a0) +/* 074BB4 7F040084 0FC0FFFE */ jal sub_GAME_7F03FFF8 +/* 074BB8 7F040088 8DC40008 */ lw $a0, 8($t6) +/* 074BBC 7F04008C 8FBF0014 */ lw $ra, 0x14($sp) +/* 074BC0 7F040090 27BD0018 */ addiu $sp, $sp, 0x18 +/* 074BC4 7F040094 03E00008 */ jr $ra +/* 074BC8 7F040098 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void set_color_shading_from_tile(void) { + +} +#else +GLOBAL_ASM( +.text +glabel set_color_shading_from_tile +/* 074BCC 7F04009C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 074BD0 7F0400A0 AFBF0014 */ sw $ra, 0x14($sp) +/* 074BD4 7F0400A4 AFA40018 */ sw $a0, 0x18($sp) +/* 074BD8 7F0400A8 00807025 */ move $t6, $a0 +/* 074BDC 7F0400AC 00A03825 */ move $a3, $a1 +/* 074BE0 7F0400B0 8DC50008 */ lw $a1, 8($t6) +/* 074BE4 7F0400B4 8DC60010 */ lw $a2, 0x10($t6) +/* 074BE8 7F0400B8 8C840014 */ lw $a0, 0x14($a0) +/* 074BEC 7F0400BC 0FC2CB0B */ jal copy_tile_RGB_as_24bit +/* 074BF0 7F0400C0 AFA7001C */ sw $a3, 0x1c($sp) +/* 074BF4 7F0400C4 8FA7001C */ lw $a3, 0x1c($sp) +/* 074BF8 7F0400C8 3C013F40 */ li $at, 0x3F400000 # 0.750000 +/* 074BFC 7F0400CC 44814000 */ mtc1 $at, $f8 +/* 074C00 7F0400D0 90EB0002 */ lbu $t3, 2($a3) +/* 074C04 7F0400D4 90ED0000 */ lbu $t5, ($a3) +/* 074C08 7F0400D8 90FF0001 */ lbu $ra, 1($a3) +/* 074C0C 7F0400DC 000B7880 */ sll $t7, $t3, 2 +/* 074C10 7F0400E0 000DC080 */ sll $t8, $t5, 2 +/* 074C14 7F0400E4 01EB7821 */ addu $t7, $t7, $t3 +/* 074C18 7F0400E8 030DC021 */ addu $t8, $t8, $t5 +/* 074C1C 7F0400EC 001F7080 */ sll $t6, $ra, 2 +/* 074C20 7F0400F0 0018C100 */ sll $t8, $t8, 4 +/* 074C24 7F0400F4 000F7880 */ sll $t7, $t7, 2 +/* 074C28 7F0400F8 01DF7021 */ addu $t6, $t6, $ra +/* 074C2C 7F0400FC 000E70C0 */ sll $t6, $t6, 3 +/* 074C30 7F040100 01EB7821 */ addu $t7, $t7, $t3 +/* 074C34 7F040104 030DC023 */ subu $t8, $t8, $t5 +/* 074C38 7F040108 01F8C821 */ addu $t9, $t7, $t8 +/* 074C3C 7F04010C 01DF7023 */ subu $t6, $t6, $ra +/* 074C40 7F040110 000E7080 */ sll $t6, $t6, 2 +/* 074C44 7F040114 032E1821 */ addu $v1, $t9, $t6 +/* 074C48 7F040118 00037A03 */ sra $t7, $v1, 8 +/* 074C4C 7F04011C 241800FF */ li $t8, 255 +/* 074C50 7F040120 030FC823 */ subu $t9, $t8, $t7 +/* 074C54 7F040124 44992000 */ mtc1 $t9, $f4 +/* 074C58 7F040128 240F0001 */ li $t7, 1 +/* 074C5C 7F04012C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 +/* 074C60 7F040130 468021A0 */ cvt.s.w $f6, $f4 +/* 074C64 7F040134 00001025 */ move $v0, $zero +/* 074C68 7F040138 00006025 */ move $t4, $zero +/* 074C6C 7F04013C 46083282 */ mul.s $f10, $f6, $f8 +/* 074C70 7F040140 444EF800 */ cfc1 $t6, $31 +/* 074C74 7F040144 44CFF800 */ ctc1 $t7, $31 +/* 074C78 7F040148 00000000 */ nop +/* 074C7C 7F04014C 46005424 */ cvt.w.s $f16, $f10 +/* 074C80 7F040150 444FF800 */ cfc1 $t7, $31 +/* 074C84 7F040154 00000000 */ nop +/* 074C88 7F040158 31EF0078 */ andi $t7, $t7, 0x78 +/* 074C8C 7F04015C 51E00013 */ beql $t7, $zero, .L7F0401AC +/* 074C90 7F040160 440F8000 */ mfc1 $t7, $f16 +/* 074C94 7F040164 44818000 */ mtc1 $at, $f16 +/* 074C98 7F040168 240F0001 */ li $t7, 1 +/* 074C9C 7F04016C 46105401 */ sub.s $f16, $f10, $f16 +/* 074CA0 7F040170 44CFF800 */ ctc1 $t7, $31 +/* 074CA4 7F040174 00000000 */ nop +/* 074CA8 7F040178 46008424 */ cvt.w.s $f16, $f16 +/* 074CAC 7F04017C 444FF800 */ cfc1 $t7, $31 +/* 074CB0 7F040180 00000000 */ nop +/* 074CB4 7F040184 31EF0078 */ andi $t7, $t7, 0x78 +/* 074CB8 7F040188 15E00005 */ bnez $t7, .L7F0401A0 +/* 074CBC 7F04018C 00000000 */ nop +/* 074CC0 7F040190 440F8000 */ mfc1 $t7, $f16 +/* 074CC4 7F040194 3C018000 */ lui $at, 0x8000 +/* 074CC8 7F040198 10000007 */ b .L7F0401B8 +/* 074CCC 7F04019C 01E17825 */ or $t7, $t7, $at +.L7F0401A0: +/* 074CD0 7F0401A0 10000005 */ b .L7F0401B8 +/* 074CD4 7F0401A4 240FFFFF */ li $t7, -1 +/* 074CD8 7F0401A8 440F8000 */ mfc1 $t7, $f16 +.L7F0401AC: +/* 074CDC 7F0401AC 00000000 */ nop +/* 074CE0 7F0401B0 05E0FFFB */ bltz $t7, .L7F0401A0 +/* 074CE4 7F0401B4 00000000 */ nop +.L7F0401B8: +/* 074CE8 7F0401B8 44CEF800 */ ctc1 $t6, $31 +/* 074CEC 7F0401BC 01BF082A */ slt $at, $t5, $ra +/* 074CF0 7F0401C0 10200003 */ beqz $at, .L7F0401D0 +/* 074CF4 7F0401C4 A0EF0003 */ sb $t7, 3($a3) +/* 074CF8 7F0401C8 10000002 */ b .L7F0401D4 +/* 074CFC 7F0401CC 24020001 */ li $v0, 1 +.L7F0401D0: +/* 074D00 7F0401D0 240C0001 */ li $t4, 1 +.L7F0401D4: +/* 074D04 7F0401D4 00E25021 */ addu $t2, $a3, $v0 +/* 074D08 7F0401D8 91460000 */ lbu $a2, ($t2) +/* 074D0C 7F0401DC 00402825 */ move $a1, $v0 +/* 074D10 7F0401E0 00ECC021 */ addu $t8, $a3, $t4 +/* 074D14 7F0401E4 00CB082A */ slt $at, $a2, $t3 +/* 074D18 7F0401E8 50200005 */ beql $at, $zero, .L7F040200 +/* 074D1C 7F0401EC 93190000 */ lbu $t9, ($t8) +/* 074D20 7F0401F0 24EA0002 */ addiu $t2, $a3, 2 +/* 074D24 7F0401F4 10000009 */ b .L7F04021C +/* 074D28 7F0401F8 91460000 */ lbu $a2, ($t2) +/* 074D2C 7F0401FC 93190000 */ lbu $t9, ($t8) +.L7F040200: +/* 074D30 7F040200 01802825 */ move $a1, $t4 +/* 074D34 7F040204 032B082A */ slt $at, $t9, $t3 +/* 074D38 7F040208 50200004 */ beql $at, $zero, .L7F04021C +/* 074D3C 7F04020C 240C0002 */ li $t4, 2 +/* 074D40 7F040210 10000002 */ b .L7F04021C +/* 074D44 7F040214 24050002 */ li $a1, 2 +/* 074D48 7F040218 240C0002 */ li $t4, 2 +.L7F04021C: +/* 074D4C 7F04021C 18C0001B */ blez $a2, .L7F04028C +/* 074D50 7F040220 00E51821 */ addu $v1, $a3, $a1 +/* 074D54 7F040224 00EC1021 */ addu $v0, $a3, $t4 +/* 074D58 7F040228 904E0000 */ lbu $t6, ($v0) +/* 074D5C 7F04022C 906F0000 */ lbu $t7, ($v1) +/* 074D60 7F040230 A0400000 */ sb $zero, ($v0) +/* 074D64 7F040234 00CE2023 */ subu $a0, $a2, $t6 +/* 074D68 7F040238 01E40019 */ multu $t7, $a0 +/* 074D6C 7F04023C 00804825 */ move $t1, $a0 +/* 074D70 7F040240 0000C012 */ mflo $t8 +/* 074D74 7F040244 00000000 */ nop +/* 074D78 7F040248 00000000 */ nop +/* 074D7C 7F04024C 0306001A */ div $zero, $t8, $a2 +/* 074D80 7F040250 00004012 */ mflo $t0 +/* 074D84 7F040254 A0680000 */ sb $t0, ($v1) +/* 074D88 7F040258 A1440000 */ sb $a0, ($t2) +/* 074D8C 7F04025C 14C00002 */ bnez $a2, .L7F040268 +/* 074D90 7F040260 00000000 */ nop +/* 074D94 7F040264 0007000D */ break 7 +.L7F040268: +/* 074D98 7F040268 2401FFFF */ li $at, -1 +/* 074D9C 7F04026C 14C10004 */ bne $a2, $at, .L7F040280 +/* 074DA0 7F040270 3C018000 */ lui $at, 0x8000 +/* 074DA4 7F040274 17010002 */ bne $t8, $at, .L7F040280 +/* 074DA8 7F040278 00000000 */ nop +/* 074DAC 7F04027C 0006000D */ break 6 +.L7F040280: +/* 074DB0 7F040280 90FF0001 */ lbu $ra, 1($a3) +/* 074DB4 7F040284 90ED0000 */ lbu $t5, ($a3) +/* 074DB8 7F040288 90EB0002 */ lbu $t3, 2($a3) +.L7F04028C: +/* 074DBC 7F04028C 000DC842 */ srl $t9, $t5, 1 +/* 074DC0 7F040290 001F7042 */ srl $t6, $ra, 1 +/* 074DC4 7F040294 000B7842 */ srl $t7, $t3, 1 +/* 074DC8 7F040298 A0F90000 */ sb $t9, ($a3) +/* 074DCC 7F04029C A0EE0001 */ sb $t6, 1($a3) +/* 074DD0 7F0402A0 A0EF0002 */ sb $t7, 2($a3) +/* 074DD4 7F0402A4 8FBF0014 */ lw $ra, 0x14($sp) +/* 074DD8 7F0402A8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 074DDC 7F0402AC 03E00008 */ jr $ra +/* 074DE0 7F0402B0 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0402B4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0402B4 +/* 074DE4 7F0402B4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 074DE8 7F0402B8 AFBF0014 */ sw $ra, 0x14($sp) +/* 074DEC 7F0402BC 8C820004 */ lw $v0, 4($a0) +/* 074DF0 7F0402C0 8C4E0008 */ lw $t6, 8($v0) +/* 074DF4 7F0402C4 31CF0400 */ andi $t7, $t6, 0x400 +/* 074DF8 7F0402C8 55E0000E */ bnezl $t7, .L7F040304 +/* 074DFC 7F0402CC 8FBF0014 */ lw $ra, 0x14($sp) +/* 074E00 7F0402D0 0FC10027 */ jal set_color_shading_from_tile +/* 074E04 7F0402D4 AFA5001C */ sw $a1, 0x1c($sp) +/* 074E08 7F0402D8 8FA5001C */ lw $a1, 0x1c($sp) +/* 074E0C 7F0402DC 90B80000 */ lbu $t8, ($a1) +/* 074E10 7F0402E0 90A80001 */ lbu $t0, 1($a1) +/* 074E14 7F0402E4 90AA0002 */ lbu $t2, 2($a1) +/* 074E18 7F0402E8 0018C842 */ srl $t9, $t8, 1 +/* 074E1C 7F0402EC 00084842 */ srl $t1, $t0, 1 +/* 074E20 7F0402F0 000A5842 */ srl $t3, $t2, 1 +/* 074E24 7F0402F4 A0B90000 */ sb $t9, ($a1) +/* 074E28 7F0402F8 A0A90001 */ sb $t1, 1($a1) +/* 074E2C 7F0402FC A0AB0002 */ sb $t3, 2($a1) +/* 074E30 7F040300 8FBF0014 */ lw $ra, 0x14($sp) +.L7F040304: +/* 074E34 7F040304 27BD0018 */ addiu $sp, $sp, 0x18 +/* 074E38 7F040308 03E00008 */ jr $ra +/* 074E3C 7F04030C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void update_color_shading(void) { + +} +#else +GLOBAL_ASM( +.text +glabel update_color_shading +/* 074E40 7F040310 90880000 */ lbu $t0, ($a0) +/* 074E44 7F040314 90AE0000 */ lbu $t6, ($a1) +/* 074E48 7F040318 90890001 */ lbu $t1, 1($a0) +/* 074E4C 7F04031C 908A0002 */ lbu $t2, 2($a0) +/* 074E50 7F040320 01C81023 */ subu $v0, $t6, $t0 +/* 074E54 7F040324 244F0007 */ addiu $t7, $v0, 7 +/* 074E58 7F040328 000FC0C3 */ sra $t8, $t7, 3 +/* 074E5C 7F04032C 01181821 */ addu $v1, $t0, $t8 +/* 074E60 7F040330 A0830000 */ sb $v1, ($a0) +/* 074E64 7F040334 90B90001 */ lbu $t9, 1($a1) +/* 074E68 7F040338 908B0003 */ lbu $t3, 3($a0) +/* 074E6C 7F04033C 03291023 */ subu $v0, $t9, $t1 +/* 074E70 7F040340 244C0007 */ addiu $t4, $v0, 7 +/* 074E74 7F040344 000C68C3 */ sra $t5, $t4, 3 +/* 074E78 7F040348 012D1821 */ addu $v1, $t1, $t5 +/* 074E7C 7F04034C A0830001 */ sb $v1, 1($a0) +/* 074E80 7F040350 90AE0002 */ lbu $t6, 2($a1) +/* 074E84 7F040354 01CA1023 */ subu $v0, $t6, $t2 +/* 074E88 7F040358 244F0007 */ addiu $t7, $v0, 7 +/* 074E8C 7F04035C 000FC0C3 */ sra $t8, $t7, 3 +/* 074E90 7F040360 01581821 */ addu $v1, $t2, $t8 +/* 074E94 7F040364 A0830002 */ sb $v1, 2($a0) +/* 074E98 7F040368 90B90003 */ lbu $t9, 3($a1) +/* 074E9C 7F04036C 032B1023 */ subu $v0, $t9, $t3 +/* 074EA0 7F040370 244C0007 */ addiu $t4, $v0, 7 +/* 074EA4 7F040374 000C68C3 */ sra $t5, $t4, 3 +/* 074EA8 7F040378 016D1821 */ addu $v1, $t3, $t5 +/* 074EAC 7F04037C 03E00008 */ jr $ra +/* 074EB0 7F040380 A0830003 */ sb $v1, 3($a0) +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F040384(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F040384 +/* 074EB4 7F040384 24010001 */ li $at, 1 +/* 074EB8 7F040388 14A1003C */ bne $a1, $at, .L7F04047C +/* 074EBC 7F04038C 3C01437F */ li $at, 0x437F0000 # 255.000000 +/* 074EC0 7F040390 44811000 */ mtc1 $at, $f2 +/* 074EC4 7F040394 C4C40000 */ lwc1 $f4, ($a2) +/* 074EC8 7F040398 C4C80004 */ lwc1 $f8, 4($a2) +/* 074ECC 7F04039C C4D00008 */ lwc1 $f16, 8($a2) +/* 074ED0 7F0403A0 46022182 */ mul.s $f6, $f4, $f2 +/* 074ED4 7F0403A4 00000000 */ nop +/* 074ED8 7F0403A8 46024282 */ mul.s $f10, $f8, $f2 +/* 074EDC 7F0403AC 00000000 */ nop +/* 074EE0 7F0403B0 46028482 */ mul.s $f18, $f16, $f2 +/* 074EE4 7F0403B4 E4C60000 */ swc1 $f6, ($a2) +/* 074EE8 7F0403B8 C4C80000 */ lwc1 $f8, ($a2) +/* 074EEC 7F0403BC C4C6000C */ lwc1 $f6, 0xc($a2) +/* 074EF0 7F0403C0 E4CA0004 */ swc1 $f10, 4($a2) +/* 074EF4 7F0403C4 E4D20008 */ swc1 $f18, 8($a2) +/* 074EF8 7F0403C8 8C8E0000 */ lw $t6, ($a0) +/* 074EFC 7F0403CC 8C990004 */ lw $t9, 4($a0) +/* 074F00 7F0403D0 8C8A0008 */ lw $t2, 8($a0) +/* 074F04 7F0403D4 448E2000 */ mtc1 $t6, $f4 +/* 074F08 7F0403D8 8C8D000C */ lw $t5, 0xc($a0) +/* 074F0C 7F0403DC 46802020 */ cvt.s.w $f0, $f4 +/* 074F10 7F0403E0 46004281 */ sub.s $f10, $f8, $f0 +/* 074F14 7F0403E4 44994000 */ mtc1 $t9, $f8 +/* 074F18 7F0403E8 460A3402 */ mul.s $f16, $f6, $f10 +/* 074F1C 7F0403EC 46008480 */ add.s $f18, $f16, $f0 +/* 074F20 7F0403F0 46804020 */ cvt.s.w $f0, $f8 +/* 074F24 7F0403F4 4600910D */ trunc.w.s $f4, $f18 +/* 074F28 7F0403F8 44182000 */ mfc1 $t8, $f4 +/* 074F2C 7F0403FC 00000000 */ nop +/* 074F30 7F040400 AC980000 */ sw $t8, ($a0) +/* 074F34 7F040404 C4CA0004 */ lwc1 $f10, 4($a2) +/* 074F38 7F040408 C4C6000C */ lwc1 $f6, 0xc($a2) +/* 074F3C 7F04040C 46005401 */ sub.s $f16, $f10, $f0 +/* 074F40 7F040410 448A5000 */ mtc1 $t2, $f10 +/* 074F44 7F040414 46103482 */ mul.s $f18, $f6, $f16 +/* 074F48 7F040418 46009100 */ add.s $f4, $f18, $f0 +/* 074F4C 7F04041C 46805020 */ cvt.s.w $f0, $f10 +/* 074F50 7F040420 4600220D */ trunc.w.s $f8, $f4 +/* 074F54 7F040424 44094000 */ mfc1 $t1, $f8 +/* 074F58 7F040428 00000000 */ nop +/* 074F5C 7F04042C AC890004 */ sw $t1, 4($a0) +/* 074F60 7F040430 C4D00008 */ lwc1 $f16, 8($a2) +/* 074F64 7F040434 C4C6000C */ lwc1 $f6, 0xc($a2) +/* 074F68 7F040438 46008481 */ sub.s $f18, $f16, $f0 +/* 074F6C 7F04043C 448D8000 */ mtc1 $t5, $f16 +/* 074F70 7F040440 46123102 */ mul.s $f4, $f6, $f18 +/* 074F74 7F040444 46002200 */ add.s $f8, $f4, $f0 +/* 074F78 7F040448 46808020 */ cvt.s.w $f0, $f16 +/* 074F7C 7F04044C 4600428D */ trunc.w.s $f10, $f8 +/* 074F80 7F040450 46001481 */ sub.s $f18, $f2, $f0 +/* 074F84 7F040454 440C5000 */ mfc1 $t4, $f10 +/* 074F88 7F040458 00000000 */ nop +/* 074F8C 7F04045C AC8C0008 */ sw $t4, 8($a0) +/* 074F90 7F040460 C4C6000C */ lwc1 $f6, 0xc($a2) +/* 074F94 7F040464 46123102 */ mul.s $f4, $f6, $f18 +/* 074F98 7F040468 46002200 */ add.s $f8, $f4, $f0 +/* 074F9C 7F04046C 4600428D */ trunc.w.s $f10, $f8 +/* 074FA0 7F040470 440F5000 */ mfc1 $t7, $f10 +/* 074FA4 7F040474 00000000 */ nop +/* 074FA8 7F040478 AC8F000C */ sw $t7, 0xc($a0) +.L7F04047C: +/* 074FAC 7F04047C 03E00008 */ jr $ra +/* 074FB0 7F040480 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F040484(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F040484 +/* 074FB4 7F040484 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 074FB8 7F040488 AFBF001C */ sw $ra, 0x1c($sp) +/* 074FBC 7F04048C AFB00018 */ sw $s0, 0x18($sp) +/* 074FC0 7F040490 8C8E0068 */ lw $t6, 0x68($a0) +/* 074FC4 7F040494 00808025 */ move $s0, $a0 +/* 074FC8 7F040498 51C00028 */ beql $t6, $zero, .L7F04053C +/* 074FCC 7F04049C 8FBF001C */ lw $ra, 0x1c($sp) +/* 074FD0 7F0404A0 0FC1001E */ jal sub_GAME_7F040078 +/* 074FD4 7F0404A4 00000000 */ nop +/* 074FD8 7F0404A8 AFA20064 */ sw $v0, 0x64($sp) +/* 074FDC 7F0404AC 26040018 */ addiu $a0, $s0, 0x18 +/* 074FE0 7F0404B0 0FC16008 */ jal sub_GAME_7F058020 +/* 074FE4 7F0404B4 27A50024 */ addiu $a1, $sp, 0x24 +/* 074FE8 7F0404B8 26040058 */ addiu $a0, $s0, 0x58 +/* 074FEC 7F0404BC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 074FF0 7F0404C0 27A50024 */ addiu $a1, $sp, 0x24 +/* 074FF4 7F0404C4 8E070068 */ lw $a3, 0x68($s0) +/* 074FF8 7F0404C8 8FA40064 */ lw $a0, 0x64($sp) +/* 074FFC 7F0404CC 27A50024 */ addiu $a1, $sp, 0x24 +/* 075000 7F0404D0 0FC0FD50 */ jal sub_GAME_7F03F540 +/* 075004 7F0404D4 24E60004 */ addiu $a2, $a3, 4 +/* 075008 7F0404D8 8FA40064 */ lw $a0, 0x64($sp) +/* 07500C 7F0404DC 0FC0FA6F */ jal sub_GAME_7F03E9BC +/* 075010 7F0404E0 27A50024 */ addiu $a1, $sp, 0x24 +/* 075014 7F0404E4 C604005C */ lwc1 $f4, 0x5c($s0) +/* 075018 7F0404E8 8E0F0068 */ lw $t7, 0x68($s0) +/* 07501C 7F0404EC 27A50024 */ addiu $a1, $sp, 0x24 +/* 075020 7F0404F0 46040180 */ add.s $f6, $f0, $f4 +/* 075024 7F0404F4 E5E60048 */ swc1 $f6, 0x48($t7) +/* 075028 7F0404F8 0FC0FA97 */ jal sub_GAME_7F03EA5C +/* 07502C 7F0404FC 8FA40064 */ lw $a0, 0x64($sp) +/* 075030 7F040500 C608005C */ lwc1 $f8, 0x5c($s0) +/* 075034 7F040504 8E180068 */ lw $t8, 0x68($s0) +/* 075038 7F040508 24010028 */ li $at, 40 +/* 07503C 7F04050C 46080280 */ add.s $f10, $f0, $f8 +/* 075040 7F040510 E70A0044 */ swc1 $f10, 0x44($t8) +/* 075044 7F040514 92190003 */ lbu $t9, 3($s0) +/* 075048 7F040518 57210008 */ bnel $t9, $at, .L7F04053C +/* 07504C 7F04051C 8FBF001C */ lw $ra, 0x1c($sp) +/* 075050 7F040520 8E070068 */ lw $a3, 0x68($s0) +/* 075054 7F040524 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 075058 7F040528 44819000 */ mtc1 $at, $f18 +/* 07505C 7F04052C C4F00048 */ lwc1 $f16, 0x48($a3) +/* 075060 7F040530 46128101 */ sub.s $f4, $f16, $f18 +/* 075064 7F040534 E4E40048 */ swc1 $f4, 0x48($a3) +/* 075068 7F040538 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04053C: +/* 07506C 7F04053C 8FB00018 */ lw $s0, 0x18($sp) +/* 075070 7F040540 27BD0068 */ addiu $sp, $sp, 0x68 +/* 075074 7F040544 03E00008 */ jr $ra +/* 075078 7F040548 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void init_standard_object(void) { + +} +#else +GLOBAL_ASM( +.text +glabel init_standard_object +/* 07507C 7F04054C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 075080 7F040550 AFB10018 */ sw $s1, 0x18($sp) +/* 075084 7F040554 AFB00014 */ sw $s0, 0x14($sp) +/* 075088 7F040558 00808025 */ move $s0, $a0 +/* 07508C 7F04055C 00C08825 */ move $s1, $a2 +/* 075090 7F040560 14C00007 */ bnez $a2, .L7F040580 +/* 075094 7F040564 AFBF001C */ sw $ra, 0x1c($sp) +/* 075098 7F040568 AFA50024 */ sw $a1, 0x24($sp) +/* 07509C 7F04056C 0FC0E90C */ jal remove_last_obj_pos_data_entry +/* 0750A0 7F040570 AFA7002C */ sw $a3, 0x2c($sp) +/* 0750A4 7F040574 8FA50024 */ lw $a1, 0x24($sp) +/* 0750A8 7F040578 8FA7002C */ lw $a3, 0x2c($sp) +/* 0750AC 7F04057C 00408825 */ move $s1, $v0 +.L7F040580: +/* 0750B0 7F040580 14E0000C */ bnez $a3, .L7F0405B4 +/* 0750B4 7F040584 00000000 */ nop +/* 0750B8 7F040588 920E0003 */ lbu $t6, 3($s0) +/* 0750BC 7F04058C 24010028 */ li $at, 40 +/* 0750C0 7F040590 15C10005 */ bne $t6, $at, .L7F0405A8 +/* 0750C4 7F040594 00000000 */ nop +/* 0750C8 7F040598 0FC1B08F */ jal get_aircraft_obj_instance_controller +/* 0750CC 7F04059C 00A02025 */ move $a0, $a1 +/* 0750D0 7F0405A0 10000004 */ b .L7F0405B4 +/* 0750D4 7F0405A4 00403825 */ move $a3, $v0 +.L7F0405A8: +/* 0750D8 7F0405A8 0FC1B025 */ jal get_obj_instance_controller_for_header +/* 0750DC 7F0405AC 00A02025 */ move $a0, $a1 +/* 0750E0 7F0405B0 00403825 */ move $a3, $v0 +.L7F0405B4: +/* 0750E4 7F0405B4 12200039 */ beqz $s1, .L7F04069C +/* 0750E8 7F0405B8 00000000 */ nop +/* 0750EC 7F0405BC 10E00037 */ beqz $a3, .L7F04069C +/* 0750F0 7F0405C0 00000000 */ nop +/* 0750F4 7F0405C4 8E0F0008 */ lw $t7, 8($s0) +/* 0750F8 7F0405C8 AE070014 */ sw $a3, 0x14($s0) +/* 0750FC 7F0405CC AE000068 */ sw $zero, 0x68($s0) +/* 075100 7F0405D0 31F80100 */ andi $t8, $t7, 0x100 +/* 075104 7F0405D4 13000008 */ beqz $t8, .L7F0405F8 +/* 075108 7F0405D8 24040050 */ li $a0, 80 +/* 07510C 7F0405DC 0C0025C8 */ jal mempAllocBytesInBank +/* 075110 7F0405E0 24050004 */ li $a1, 4 +/* 075114 7F0405E4 92190002 */ lbu $t9, 2($s0) +/* 075118 7F0405E8 AE020068 */ sw $v0, 0x68($s0) +/* 07511C 7F0405EC 37280008 */ ori $t0, $t9, 8 +/* 075120 7F0405F0 10000004 */ b .L7F040604 +/* 075124 7F0405F4 A2080002 */ sb $t0, 2($s0) +.L7F0405F8: +/* 075128 7F0405F8 92090002 */ lbu $t1, 2($s0) +/* 07512C 7F0405FC 312AFFF7 */ andi $t2, $t1, 0xfff7 +/* 075130 7F040600 A20A0002 */ sb $t2, 2($s0) +.L7F040604: +/* 075134 7F040604 44800000 */ mtc1 $zero, $f0 +/* 075138 7F040608 8E0C0014 */ lw $t4, 0x14($s0) +/* 07513C 7F04060C AE110010 */ sw $s1, 0x10($s0) +/* 075140 7F040610 AE00006C */ sw $zero, 0x6c($s0) +/* 075144 7F040614 A2000078 */ sb $zero, 0x78($s0) +/* 075148 7F040618 A2000079 */ sb $zero, 0x79($s0) +/* 07514C 7F04061C A200007A */ sb $zero, 0x7a($s0) +/* 075150 7F040620 A200007B */ sb $zero, 0x7b($s0) +/* 075154 7F040624 A200007C */ sb $zero, 0x7c($s0) +/* 075158 7F040628 A200007D */ sb $zero, 0x7d($s0) +/* 07515C 7F04062C A200007E */ sb $zero, 0x7e($s0) +/* 075160 7F040630 A200007F */ sb $zero, 0x7f($s0) +/* 075164 7F040634 240BFFFF */ li $t3, -1 +/* 075168 7F040638 E6000070 */ swc1 $f0, 0x70($s0) +/* 07516C 7F04063C A58B0000 */ sh $t3, ($t4) +/* 075170 7F040640 8E0D0014 */ lw $t5, 0x14($s0) +/* 075174 7F040644 3C058004 */ lui $a1, %hi(PitemZ_entries+8) +/* 075178 7F040648 ADA00004 */ sw $zero, 4($t5) +/* 07517C 7F04064C 860E0004 */ lh $t6, 4($s0) +/* 075180 7F040650 8E040014 */ lw $a0, 0x14($s0) +/* 075184 7F040654 000E7880 */ sll $t7, $t6, 2 +/* 075188 7F040658 01EE7823 */ subu $t7, $t7, $t6 +/* 07518C 7F04065C 000F7880 */ sll $t7, $t7, 2 +/* 075190 7F040660 00AF2821 */ addu $a1, $a1, $t7 +/* 075194 7F040664 0FC1B39E */ jal set_obj_instance_controller_scale +/* 075198 7F040668 8CA5A230 */ lw $a1, %lo(PitemZ_entries+8)($a1) +/* 07519C 7F04066C 44800000 */ mtc1 $zero, $f0 +/* 0751A0 7F040670 24180001 */ li $t8, 1 +/* 0751A4 7F040674 A2380000 */ sb $t8, ($s1) +/* 0751A8 7F040678 AE300004 */ sw $s0, 4($s1) +/* 0751AC 7F04067C E6200008 */ swc1 $f0, 8($s1) +/* 0751B0 7F040680 E6000058 */ swc1 $f0, 0x58($s0) +/* 0751B4 7F040684 E620000C */ swc1 $f0, 0xc($s1) +/* 0751B8 7F040688 E600005C */ swc1 $f0, 0x5c($s0) +/* 0751BC 7F04068C E6200010 */ swc1 $f0, 0x10($s1) +/* 0751C0 7F040690 E6000060 */ swc1 $f0, 0x60($s0) +/* 0751C4 7F040694 10000012 */ b .L7F0406E0 +/* 0751C8 7F040698 AE200014 */ sw $zero, 0x14($s1) +.L7F04069C: +/* 0751CC 7F04069C 10E0000B */ beqz $a3, .L7F0406CC +/* 0751D0 7F0406A0 00000000 */ nop +/* 0751D4 7F0406A4 92190003 */ lbu $t9, 3($s0) +/* 0751D8 7F0406A8 24010028 */ li $at, 40 +/* 0751DC 7F0406AC 17210005 */ bne $t9, $at, .L7F0406C4 +/* 0751E0 7F0406B0 00000000 */ nop +/* 0751E4 7F0406B4 0FC1B0FE */ jal set_aircraft_obj_inst_scale_to_zero +/* 0751E8 7F0406B8 00E02025 */ move $a0, $a3 +/* 0751EC 7F0406BC 10000003 */ b .L7F0406CC +/* 0751F0 7F0406C0 00000000 */ nop +.L7F0406C4: +/* 0751F4 7F0406C4 0FC1B08D */ jal set_obj_instance_scale_to_zero +/* 0751F8 7F0406C8 00E02025 */ move $a0, $a3 +.L7F0406CC: +/* 0751FC 7F0406CC 52200005 */ beql $s1, $zero, .L7F0406E4 +/* 075200 7F0406D0 8FBF001C */ lw $ra, 0x1c($sp) +/* 075204 7F0406D4 0FC0E921 */ jal set_last_obj_pos_data +/* 075208 7F0406D8 02202025 */ move $a0, $s1 +/* 07520C 7F0406DC 00008825 */ move $s1, $zero +.L7F0406E0: +/* 075210 7F0406E0 8FBF001C */ lw $ra, 0x1c($sp) +.L7F0406E4: +/* 075214 7F0406E4 02201025 */ move $v0, $s1 +/* 075218 7F0406E8 8FB10018 */ lw $s1, 0x18($sp) +/* 07521C 7F0406EC 8FB00014 */ lw $s0, 0x14($sp) +/* 075220 7F0406F0 03E00008 */ jr $ra +/* 075224 7F0406F4 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0406F8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0406F8 +/* 075228 7F0406F8 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 07522C 7F0406FC AFBF0014 */ sw $ra, 0x14($sp) +/* 075230 7F040700 00003025 */ move $a2, $zero +/* 075234 7F040704 0FC10153 */ jal init_standard_object +/* 075238 7F040708 00003825 */ move $a3, $zero +/* 07523C 7F04070C 8FBF0014 */ lw $ra, 0x14($sp) +/* 075240 7F040710 27BD0018 */ addiu $sp, $sp, 0x18 +/* 075244 7F040714 03E00008 */ jr $ra +/* 075248 7F040718 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04071C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04071C +/* 07524C 7F04071C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 075250 7F040720 AFBF0014 */ sw $ra, 0x14($sp) +/* 075254 7F040724 848E0004 */ lh $t6, 4($a0) +/* 075258 7F040728 3C058004 */ lui $a1, %hi(PitemZ_entries) +/* 07525C 7F04072C 000E7880 */ sll $t7, $t6, 2 +/* 075260 7F040730 01EE7823 */ subu $t7, $t7, $t6 +/* 075264 7F040734 000F7880 */ sll $t7, $t7, 2 +/* 075268 7F040738 00AF2821 */ addu $a1, $a1, $t7 +/* 07526C 7F04073C 0FC101BE */ jal sub_GAME_7F0406F8 +/* 075270 7F040740 8CA5A228 */ lw $a1, %lo(PitemZ_entries)($a1) +/* 075274 7F040744 8FBF0014 */ lw $ra, 0x14($sp) +/* 075278 7F040748 27BD0018 */ addiu $sp, $sp, 0x18 +/* 07527C 7F04074C 03E00008 */ jr $ra +/* 075280 7F040750 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F040754(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F040754 +/* 075284 7F040754 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 075288 7F040758 AFBF001C */ sw $ra, 0x1c($sp) +/* 07528C 7F04075C AFB00018 */ sw $s0, 0x18($sp) +/* 075290 7F040760 AFA5002C */ sw $a1, 0x2c($sp) +/* 075294 7F040764 AFA70034 */ sw $a3, 0x34($sp) +/* 075298 7F040768 8C820010 */ lw $v0, 0x10($a0) +/* 07529C 7F04076C 00808025 */ move $s0, $a0 +/* 0752A0 7F040770 26050018 */ addiu $a1, $s0, 0x18 +/* 0752A4 7F040774 00C02025 */ move $a0, $a2 +/* 0752A8 7F040778 0FC16008 */ jal sub_GAME_7F058020 +/* 0752AC 7F04077C AFA20024 */ sw $v0, 0x24($sp) +/* 0752B0 7F040780 8FA3002C */ lw $v1, 0x2c($sp) +/* 0752B4 7F040784 8FA20024 */ lw $v0, 0x24($sp) +/* 0752B8 7F040788 2605007C */ addiu $a1, $s0, 0x7c +/* 0752BC 7F04078C C4600000 */ lwc1 $f0, ($v1) +/* 0752C0 7F040790 E4400008 */ swc1 $f0, 8($v0) +/* 0752C4 7F040794 E6000058 */ swc1 $f0, 0x58($s0) +/* 0752C8 7F040798 C4600004 */ lwc1 $f0, 4($v1) +/* 0752CC 7F04079C E440000C */ swc1 $f0, 0xc($v0) +/* 0752D0 7F0407A0 E600005C */ swc1 $f0, 0x5c($s0) +/* 0752D4 7F0407A4 C4600008 */ lwc1 $f0, 8($v1) +/* 0752D8 7F0407A8 E4400010 */ swc1 $f0, 0x10($v0) +/* 0752DC 7F0407AC E6000060 */ swc1 $f0, 0x60($s0) +/* 0752E0 7F0407B0 8FAE0034 */ lw $t6, 0x34($sp) +/* 0752E4 7F0407B4 AC4E0014 */ sw $t6, 0x14($v0) +/* 0752E8 7F0407B8 0FC100AD */ jal sub_GAME_7F0402B4 +/* 0752EC 7F0407BC 8E040010 */ lw $a0, 0x10($s0) +/* 0752F0 7F0407C0 920F007C */ lbu $t7, 0x7c($s0) +/* 0752F4 7F0407C4 9218007D */ lbu $t8, 0x7d($s0) +/* 0752F8 7F0407C8 9219007E */ lbu $t9, 0x7e($s0) +/* 0752FC 7F0407CC 9208007F */ lbu $t0, 0x7f($s0) +/* 075300 7F0407D0 A20F0078 */ sb $t7, 0x78($s0) +/* 075304 7F0407D4 A2180079 */ sb $t8, 0x79($s0) +/* 075308 7F0407D8 A219007A */ sb $t9, 0x7a($s0) +/* 07530C 7F0407DC A208007B */ sb $t0, 0x7b($s0) +/* 075310 7F0407E0 8FBF001C */ lw $ra, 0x1c($sp) +/* 075314 7F0407E4 8FB00018 */ lw $s0, 0x18($sp) +/* 075318 7F0407E8 27BD0028 */ addiu $sp, $sp, 0x28 +/* 07531C 7F0407EC 03E00008 */ jr $ra +/* 075320 7F0407F0 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0407F4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0407F4 +/* 075324 7F0407F4 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 075328 7F0407F8 AFBF001C */ sw $ra, 0x1c($sp) +/* 07532C 7F0407FC AFB00018 */ sw $s0, 0x18($sp) +/* 075330 7F040800 AFA40028 */ sw $a0, 0x28($sp) +/* 075334 7F040804 AFA60030 */ sw $a2, 0x30($sp) +/* 075338 7F040808 AFA70034 */ sw $a3, 0x34($sp) +/* 07533C 7F04080C 8C8F0014 */ lw $t7, 0x14($a0) +/* 075340 7F040810 00A08025 */ move $s0, $a1 +/* 075344 7F040814 0FC0FFFE */ jal sub_GAME_7F03FFF8 +/* 075348 7F040818 8DE40008 */ lw $a0, 8($t7) +/* 07534C 7F04081C AFA20020 */ sw $v0, 0x20($sp) +/* 075350 7F040820 8E060008 */ lw $a2, 8($s0) +/* 075354 7F040824 8E050000 */ lw $a1, ($s0) +/* 075358 7F040828 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 07535C 7F04082C 8FA40034 */ lw $a0, 0x34($sp) +/* 075360 7F040830 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 075364 7F040834 44812000 */ mtc1 $at, $f4 +/* 075368 7F040838 00000000 */ nop +/* 07536C 7F04083C 46040180 */ add.s $f6, $f0, $f4 +/* 075370 7F040840 E6060004 */ swc1 $f6, 4($s0) +/* 075374 7F040844 8FA50030 */ lw $a1, 0x30($sp) +/* 075378 7F040848 0FC0FA6F */ jal sub_GAME_7F03E9BC +/* 07537C 7F04084C 8FA40020 */ lw $a0, 0x20($sp) +/* 075380 7F040850 C6080004 */ lwc1 $f8, 4($s0) +/* 075384 7F040854 02002825 */ move $a1, $s0 +/* 075388 7F040858 46004281 */ sub.s $f10, $f8, $f0 +/* 07538C 7F04085C E60A0004 */ swc1 $f10, 4($s0) +/* 075390 7F040860 8FA70034 */ lw $a3, 0x34($sp) +/* 075394 7F040864 8FA60030 */ lw $a2, 0x30($sp) +/* 075398 7F040868 0FC101D5 */ jal sub_GAME_7F040754 +/* 07539C 7F04086C 8FA40028 */ lw $a0, 0x28($sp) +/* 0753A0 7F040870 0FC10121 */ jal sub_GAME_7F040484 +/* 0753A4 7F040874 8FA40028 */ lw $a0, 0x28($sp) +/* 0753A8 7F040878 8FBF001C */ lw $ra, 0x1c($sp) +/* 0753AC 7F04087C 8FB00018 */ lw $s0, 0x18($sp) +/* 0753B0 7F040880 27BD0028 */ addiu $sp, $sp, 0x28 +/* 0753B4 7F040884 03E00008 */ jr $ra +/* 0753B8 7F040888 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04088C(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_800529D0 +.word 0xA000000 /*"\n"*/ +glabel D_800529D4 +.word 0x2E0A0000 /*".\n"*/ +glabel D_800529D8 +.word 0, 0, 0, 0, 0, 0, 0, 0 +.word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +glabel D_80052A38 +.word 0 +glabel D_80052A3C +.word 0 +glabel D_80052A40 +.word 0xA000000 /*"\n"*/ +glabel D_80052A44 +.word 0x3A0A0000 /*":\n"*/ +glabel D_80052A48 +.word 0x3d4ccccd /*0.050000001*/ +.late_rodata +glabel D_80052A4C +.word 0x40490fdb /*3.1415927*/ +.text +glabel sub_GAME_7F04088C +/* 0753BC 7F04088C 27BDFF58 */ addiu $sp, $sp, -0xa8 +/* 0753C0 7F040890 AFBF0024 */ sw $ra, 0x24($sp) +/* 0753C4 7F040894 AFB00020 */ sw $s0, 0x20($sp) +/* 0753C8 7F040898 AFA500AC */ sw $a1, 0xac($sp) +/* 0753CC 7F04089C AFA600B0 */ sw $a2, 0xb0($sp) +/* 0753D0 7F0408A0 AFA700B4 */ sw $a3, 0xb4($sp) +/* 0753D4 7F0408A4 8C8E0014 */ lw $t6, 0x14($a0) +/* 0753D8 7F0408A8 00808025 */ move $s0, $a0 +/* 0753DC 7F0408AC 0FC0FFFE */ jal sub_GAME_7F03FFF8 +/* 0753E0 7F0408B0 8DC40008 */ lw $a0, 8($t6) +/* 0753E4 7F0408B4 AFA200A0 */ sw $v0, 0xa0($sp) +/* 0753E8 7F0408B8 0FC0FA19 */ jal sub_GAME_7F03E864 +/* 0753EC 7F0408BC 00402025 */ move $a0, $v0 +/* 0753F0 7F0408C0 8FA400A0 */ lw $a0, 0xa0($sp) +/* 0753F4 7F0408C4 0FC0FA1B */ jal sub_GAME_7F03E86C +/* 0753F8 7F0408C8 E7A0009C */ swc1 $f0, 0x9c($sp) +/* 0753FC 7F0408CC 8FA700B4 */ lw $a3, 0xb4($sp) +/* 075400 7F0408D0 E7A00098 */ swc1 $f0, 0x98($sp) +/* 075404 7F0408D4 C7A2009C */ lwc1 $f2, 0x9c($sp) +/* 075408 7F0408D8 AFA70088 */ sw $a3, 0x88($sp) +/* 07540C 7F0408DC 8E020008 */ lw $v0, 8($s0) +/* 075410 7F0408E0 3C018005 */ lui $at, %hi(D_80052A4C) +/* 075414 7F0408E4 27A50048 */ addiu $a1, $sp, 0x48 +/* 075418 7F0408E8 304F0004 */ andi $t7, $v0, 4 +/* 07541C 7F0408EC 11E00018 */ beqz $t7, .L7F040950 +/* 075420 7F0408F0 30580008 */ andi $t8, $v0, 8 +/* 075424 7F0408F4 0FC161A2 */ jal sub_GAME_7F058688 +/* 075428 7F0408F8 C42C2A4C */ lwc1 $f12, %lo(D_80052A4C)($at) +/* 07542C 7F0408FC 8FA400B0 */ lw $a0, 0xb0($sp) +/* 075430 7F040900 0FC1601A */ jal sub_GAME_7F058068 +/* 075434 7F040904 27A50048 */ addiu $a1, $sp, 0x48 +/* 075438 7F040908 C7A00098 */ lwc1 $f0, 0x98($sp) +/* 07543C 7F04090C C7A60058 */ lwc1 $f6, 0x58($sp) +/* 075440 7F040910 8FA200B8 */ lw $v0, 0xb8($sp) +/* 075444 7F040914 C7B2005C */ lwc1 $f18, 0x5c($sp) +/* 075448 7F040918 46003202 */ mul.s $f8, $f6, $f0 +/* 07544C 7F04091C C4440000 */ lwc1 $f4, ($v0) +/* 075450 7F040920 46009182 */ mul.s $f6, $f18, $f0 +/* 075454 7F040924 46082281 */ sub.s $f10, $f4, $f8 +/* 075458 7F040928 E7AA008C */ swc1 $f10, 0x8c($sp) +/* 07545C 7F04092C C4500004 */ lwc1 $f16, 4($v0) +/* 075460 7F040930 C7AA0060 */ lwc1 $f10, 0x60($sp) +/* 075464 7F040934 46068101 */ sub.s $f4, $f16, $f6 +/* 075468 7F040938 46005482 */ mul.s $f18, $f10, $f0 +/* 07546C 7F04093C E7A40090 */ swc1 $f4, 0x90($sp) +/* 075470 7F040940 C4480008 */ lwc1 $f8, 8($v0) +/* 075474 7F040944 46124401 */ sub.s $f16, $f8, $f18 +/* 075478 7F040948 10000068 */ b .L7F040AEC +/* 07547C 7F04094C E7B00094 */ swc1 $f16, 0x94($sp) +.L7F040950: +/* 075480 7F040950 13000017 */ beqz $t8, .L7F0409B0 +/* 075484 7F040954 8FA200AC */ lw $v0, 0xac($sp) +/* 075488 7F040958 8FA400B0 */ lw $a0, 0xb0($sp) +/* 07548C 7F04095C 27A50048 */ addiu $a1, $sp, 0x48 +/* 075490 7F040960 0FC16008 */ jal sub_GAME_7F058020 +/* 075494 7F040964 E7A2009C */ swc1 $f2, 0x9c($sp) +/* 075498 7F040968 C7A2009C */ lwc1 $f2, 0x9c($sp) +/* 07549C 7F04096C C7A40058 */ lwc1 $f4, 0x58($sp) +/* 0754A0 7F040970 8FA200B8 */ lw $v0, 0xb8($sp) +/* 0754A4 7F040974 C7B0005C */ lwc1 $f16, 0x5c($sp) +/* 0754A8 7F040978 46022282 */ mul.s $f10, $f4, $f2 +/* 0754AC 7F04097C C4460000 */ lwc1 $f6, ($v0) +/* 0754B0 7F040980 46028102 */ mul.s $f4, $f16, $f2 +/* 0754B4 7F040984 460A3201 */ sub.s $f8, $f6, $f10 +/* 0754B8 7F040988 E7A8008C */ swc1 $f8, 0x8c($sp) +/* 0754BC 7F04098C C4520004 */ lwc1 $f18, 4($v0) +/* 0754C0 7F040990 C7A80060 */ lwc1 $f8, 0x60($sp) +/* 0754C4 7F040994 46049181 */ sub.s $f6, $f18, $f4 +/* 0754C8 7F040998 46024402 */ mul.s $f16, $f8, $f2 +/* 0754CC 7F04099C E7A60090 */ swc1 $f6, 0x90($sp) +/* 0754D0 7F0409A0 C44A0008 */ lwc1 $f10, 8($v0) +/* 0754D4 7F0409A4 46105481 */ sub.s $f18, $f10, $f16 +/* 0754D8 7F0409A8 10000050 */ b .L7F040AEC +/* 0754DC 7F0409AC E7B20094 */ swc1 $f18, 0x94($sp) +.L7F0409B0: +/* 0754E0 7F0409B0 8C450000 */ lw $a1, ($v0) +/* 0754E4 7F0409B4 8C460008 */ lw $a2, 8($v0) +/* 0754E8 7F0409B8 E7A2009C */ swc1 $f2, 0x9c($sp) +/* 0754EC 7F0409BC 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 0754F0 7F0409C0 00E02025 */ move $a0, $a3 +/* 0754F4 7F0409C4 8FA400B0 */ lw $a0, 0xb0($sp) +/* 0754F8 7F0409C8 27A50048 */ addiu $a1, $sp, 0x48 +/* 0754FC 7F0409CC 0FC16008 */ jal sub_GAME_7F058020 +/* 075500 7F0409D0 E7A00040 */ swc1 $f0, 0x40($sp) +/* 075504 7F0409D4 C7A2009C */ lwc1 $f2, 0x9c($sp) +/* 075508 7F0409D8 C7A60058 */ lwc1 $f6, 0x58($sp) +/* 07550C 7F0409DC 8FA200B8 */ lw $v0, 0xb8($sp) +/* 075510 7F0409E0 C7B20060 */ lwc1 $f18, 0x60($sp) +/* 075514 7F0409E4 46023202 */ mul.s $f8, $f6, $f2 +/* 075518 7F0409E8 C4440000 */ lwc1 $f4, ($v0) +/* 07551C 7F0409EC 8FB900B4 */ lw $t9, 0xb4($sp) +/* 075520 7F0409F0 46029182 */ mul.s $f6, $f18, $f2 +/* 075524 7F0409F4 8FA400AC */ lw $a0, 0xac($sp) +/* 075528 7F0409F8 46082281 */ sub.s $f10, $f4, $f8 +/* 07552C 7F0409FC E7AA008C */ swc1 $f10, 0x8c($sp) +/* 075530 7F040A00 C4500008 */ lwc1 $f16, 8($v0) +/* 075534 7F040A04 46068101 */ sub.s $f4, $f16, $f6 +/* 075538 7F040A08 E7A40094 */ swc1 $f4, 0x94($sp) +/* 07553C 7F040A0C 0FC0FEAC */ jal sub_GAME_7F03FAB0 +/* 075540 7F040A10 93250003 */ lbu $a1, 3($t9) +/* 075544 7F040A14 C7A2009C */ lwc1 $f2, 0x9c($sp) +/* 075548 7F040A18 1040002D */ beqz $v0, .L7F040AD0 +/* 07554C 7F040A1C C7AC0040 */ lwc1 $f12, 0x40($sp) +/* 075550 7F040A20 8C440010 */ lw $a0, 0x10($v0) +/* 075554 7F040A24 27A80030 */ addiu $t0, $sp, 0x30 +/* 075558 7F040A28 AFA80010 */ sw $t0, 0x10($sp) +/* 07555C 7F040A2C E7AC0040 */ swc1 $f12, 0x40($sp) +/* 075560 7F040A30 E7A2009C */ swc1 $f2, 0x9c($sp) +/* 075564 7F040A34 27A5003C */ addiu $a1, $sp, 0x3c +/* 075568 7F040A38 27A60038 */ addiu $a2, $sp, 0x38 +/* 07556C 7F040A3C 0FC0F308 */ jal sub_GAME_7F03CC20 +/* 075570 7F040A40 27A70034 */ addiu $a3, $sp, 0x34 +/* 075574 7F040A44 C7AC0040 */ lwc1 $f12, 0x40($sp) +/* 075578 7F040A48 C7A80034 */ lwc1 $f8, 0x34($sp) +/* 07557C 7F040A4C C7A2009C */ lwc1 $f2, 0x9c($sp) +/* 075580 7F040A50 C7B00098 */ lwc1 $f16, 0x98($sp) +/* 075584 7F040A54 4608603C */ c.lt.s $f12, $f8 +/* 075588 7F040A58 00000000 */ nop +/* 07558C 7F040A5C 45020015 */ bc1fl .L7F040AB4 +/* 075590 7F040A60 C7AA005C */ lwc1 $f10, 0x5c($sp) +/* 075594 7F040A64 46028181 */ sub.s $f6, $f16, $f2 +/* 075598 7F040A68 C7B2005C */ lwc1 $f18, 0x5c($sp) +/* 07559C 7F040A6C 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 0755A0 7F040A70 C7AA0030 */ lwc1 $f10, 0x30($sp) +/* 0755A4 7F040A74 46069102 */ mul.s $f4, $f18, $f6 +/* 0755A8 7F040A78 44813000 */ mtc1 $at, $f6 +/* 0755AC 7F040A7C 460C2400 */ add.s $f16, $f4, $f12 +/* 0755B0 7F040A80 46068100 */ add.s $f4, $f16, $f6 +/* 0755B4 7F040A84 4604503C */ c.lt.s $f10, $f4 +/* 0755B8 7F040A88 00000000 */ nop +/* 0755BC 7F040A8C 45020009 */ bc1fl .L7F040AB4 +/* 0755C0 7F040A90 C7AA005C */ lwc1 $f10, 0x5c($sp) +/* 0755C4 7F040A94 46029402 */ mul.s $f16, $f18, $f2 +/* 0755C8 7F040A98 46104181 */ sub.s $f6, $f8, $f16 +/* 0755CC 7F040A9C E7A60090 */ swc1 $f6, 0x90($sp) +/* 0755D0 7F040AA0 8E090064 */ lw $t1, 0x64($s0) +/* 0755D4 7F040AA4 352A8000 */ ori $t2, $t1, 0x8000 +/* 0755D8 7F040AA8 10000010 */ b .L7F040AEC +/* 0755DC 7F040AAC AE0A0064 */ sw $t2, 0x64($s0) +/* 0755E0 7F040AB0 C7AA005C */ lwc1 $f10, 0x5c($sp) +.L7F040AB4: +/* 0755E4 7F040AB4 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 0755E8 7F040AB8 44814000 */ mtc1 $at, $f8 +/* 0755EC 7F040ABC 46025102 */ mul.s $f4, $f10, $f2 +/* 0755F0 7F040AC0 46046481 */ sub.s $f18, $f12, $f4 +/* 0755F4 7F040AC4 46089400 */ add.s $f16, $f18, $f8 +/* 0755F8 7F040AC8 10000008 */ b .L7F040AEC +/* 0755FC 7F040ACC E7B00090 */ swc1 $f16, 0x90($sp) +.L7F040AD0: +/* 075600 7F040AD0 C7A6005C */ lwc1 $f6, 0x5c($sp) +/* 075604 7F040AD4 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 075608 7F040AD8 44819000 */ mtc1 $at, $f18 +/* 07560C 7F040ADC 46023282 */ mul.s $f10, $f6, $f2 +/* 075610 7F040AE0 460A6101 */ sub.s $f4, $f12, $f10 +/* 075614 7F040AE4 46122200 */ add.s $f8, $f4, $f18 +/* 075618 7F040AE8 E7A80090 */ swc1 $f8, 0x90($sp) +.L7F040AEC: +/* 07561C 7F040AEC 8E0B000C */ lw $t3, 0xc($s0) +/* 075620 7F040AF0 8FA200AC */ lw $v0, 0xac($sp) +/* 075624 7F040AF4 27A40088 */ addiu $a0, $sp, 0x88 +/* 075628 7F040AF8 316C0001 */ andi $t4, $t3, 1 +/* 07562C 7F040AFC 1580000E */ bnez $t4, .L7F040B38 +/* 075630 7F040B00 8FA7008C */ lw $a3, 0x8c($sp) +/* 075634 7F040B04 C7B00094 */ lwc1 $f16, 0x94($sp) +/* 075638 7F040B08 8C450000 */ lw $a1, ($v0) +/* 07563C 7F040B0C 8C460008 */ lw $a2, 8($v0) +/* 075640 7F040B10 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 075644 7F040B14 E7B00010 */ swc1 $f16, 0x10($sp) +/* 075648 7F040B18 10400007 */ beqz $v0, .L7F040B38 +/* 07564C 7F040B1C 02002025 */ move $a0, $s0 +/* 075650 7F040B20 27A5008C */ addiu $a1, $sp, 0x8c +/* 075654 7F040B24 27A60048 */ addiu $a2, $sp, 0x48 +/* 075658 7F040B28 0FC101D5 */ jal sub_GAME_7F040754 +/* 07565C 7F040B2C 8FA70088 */ lw $a3, 0x88($sp) +/* 075660 7F040B30 10000014 */ b .L7F040B84 +/* 075664 7F040B34 00000000 */ nop +.L7F040B38: +/* 075668 7F040B38 02002025 */ move $a0, $s0 +/* 07566C 7F040B3C 8FA500AC */ lw $a1, 0xac($sp) +/* 075670 7F040B40 27A60048 */ addiu $a2, $sp, 0x48 +/* 075674 7F040B44 0FC101D5 */ jal sub_GAME_7F040754 +/* 075678 7F040B48 8FA700B4 */ lw $a3, 0xb4($sp) +/* 07567C 7F040B4C 8E0D000C */ lw $t5, 0xc($s0) +/* 075680 7F040B50 C7A6008C */ lwc1 $f6, 0x8c($sp) +/* 075684 7F040B54 31AE0001 */ andi $t6, $t5, 1 +/* 075688 7F040B58 55C00006 */ bnezl $t6, .L7F040B74 +/* 07568C 7F040B5C E6060058 */ swc1 $f6, 0x58($s0) +/* 075690 7F040B60 8E0F0008 */ lw $t7, 8($s0) +/* 075694 7F040B64 31F81000 */ andi $t8, $t7, 0x1000 +/* 075698 7F040B68 13000006 */ beqz $t8, .L7F040B84 +/* 07569C 7F040B6C 00000000 */ nop +/* 0756A0 7F040B70 E6060058 */ swc1 $f6, 0x58($s0) +.L7F040B74: +/* 0756A4 7F040B74 C7AA0090 */ lwc1 $f10, 0x90($sp) +/* 0756A8 7F040B78 E60A005C */ swc1 $f10, 0x5c($s0) +/* 0756AC 7F040B7C C7A40094 */ lwc1 $f4, 0x94($sp) +/* 0756B0 7F040B80 E6040060 */ swc1 $f4, 0x60($s0) +.L7F040B84: +/* 0756B4 7F040B84 0FC10121 */ jal sub_GAME_7F040484 +/* 0756B8 7F040B88 02002025 */ move $a0, $s0 +/* 0756BC 7F040B8C 8FBF0024 */ lw $ra, 0x24($sp) +/* 0756C0 7F040B90 8FB00020 */ lw $s0, 0x20($sp) +/* 0756C4 7F040B94 27BD00A8 */ addiu $sp, $sp, 0xa8 +/* 0756C8 7F040B98 03E00008 */ jr $ra +/* 0756CC 7F040B9C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F040BA0(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052A50 +.word 0x4096cbe4 /*4.712389*/ +glabel D_80052A54 +.word 0x40490fdb /*3.1415927*/ +.text +glabel sub_GAME_7F040BA0 +/* 0756D0 7F040BA0 27BDFF38 */ addiu $sp, $sp, -0xc8 +/* 0756D4 7F040BA4 AFBF0024 */ sw $ra, 0x24($sp) +/* 0756D8 7F040BA8 AFB00020 */ sw $s0, 0x20($sp) +/* 0756DC 7F040BAC AFA500CC */ sw $a1, 0xcc($sp) +/* 0756E0 7F040BB0 AFA600D0 */ sw $a2, 0xd0($sp) +/* 0756E4 7F040BB4 AFA700D4 */ sw $a3, 0xd4($sp) +/* 0756E8 7F040BB8 8C8E0014 */ lw $t6, 0x14($a0) +/* 0756EC 7F040BBC 00808025 */ move $s0, $a0 +/* 0756F0 7F040BC0 0FC0FFFE */ jal sub_GAME_7F03FFF8 +/* 0756F4 7F040BC4 8DC40008 */ lw $a0, 8($t6) +/* 0756F8 7F040BC8 0FC0FA1D */ jal sub_GAME_7F03E874 +/* 0756FC 7F040BCC 00402025 */ move $a0, $v0 +/* 075700 7F040BD0 8FAF00D4 */ lw $t7, 0xd4($sp) +/* 075704 7F040BD4 3C018005 */ lui $at, %hi(D_80052A50) +/* 075708 7F040BD8 E7A000BC */ swc1 $f0, 0xbc($sp) +/* 07570C 7F040BDC C42C2A50 */ lwc1 $f12, %lo(D_80052A50)($at) +/* 075710 7F040BE0 27A5006C */ addiu $a1, $sp, 0x6c +/* 075714 7F040BE4 0FC1615C */ jal sub_GAME_7F058570 +/* 075718 7F040BE8 AFAF00AC */ sw $t7, 0xac($sp) +/* 07571C 7F040BEC 3C018005 */ lui $at, %hi(D_80052A54) +/* 075720 7F040BF0 C42C2A54 */ lwc1 $f12, %lo(D_80052A54)($at) +/* 075724 7F040BF4 0FC1617F */ jal sub_GAME_7F0585FC +/* 075728 7F040BF8 27A5002C */ addiu $a1, $sp, 0x2c +/* 07572C 7F040BFC 27A4002C */ addiu $a0, $sp, 0x2c +/* 075730 7F040C00 0FC1601A */ jal sub_GAME_7F058068 +/* 075734 7F040C04 27A5006C */ addiu $a1, $sp, 0x6c +/* 075738 7F040C08 8FA400D0 */ lw $a0, 0xd0($sp) +/* 07573C 7F040C0C 0FC1601A */ jal sub_GAME_7F058068 +/* 075740 7F040C10 27A5006C */ addiu $a1, $sp, 0x6c +/* 075744 7F040C14 C7A000BC */ lwc1 $f0, 0xbc($sp) +/* 075748 7F040C18 C7A6008C */ lwc1 $f6, 0x8c($sp) +/* 07574C 7F040C1C 8FA200D8 */ lw $v0, 0xd8($sp) +/* 075750 7F040C20 C7B20090 */ lwc1 $f18, 0x90($sp) +/* 075754 7F040C24 46003202 */ mul.s $f8, $f6, $f0 +/* 075758 7F040C28 C4440000 */ lwc1 $f4, ($v0) +/* 07575C 7F040C2C 27A400AC */ addiu $a0, $sp, 0xac +/* 075760 7F040C30 46009182 */ mul.s $f6, $f18, $f0 +/* 075764 7F040C34 46082281 */ sub.s $f10, $f4, $f8 +/* 075768 7F040C38 E7AA00B0 */ swc1 $f10, 0xb0($sp) +/* 07576C 7F040C3C C4500004 */ lwc1 $f16, 4($v0) +/* 075770 7F040C40 C7AA0094 */ lwc1 $f10, 0x94($sp) +/* 075774 7F040C44 8FA700B0 */ lw $a3, 0xb0($sp) +/* 075778 7F040C48 46068101 */ sub.s $f4, $f16, $f6 +/* 07577C 7F040C4C 46005482 */ mul.s $f18, $f10, $f0 +/* 075780 7F040C50 E7A400B4 */ swc1 $f4, 0xb4($sp) +/* 075784 7F040C54 C4480008 */ lwc1 $f8, 8($v0) +/* 075788 7F040C58 8FA200CC */ lw $v0, 0xcc($sp) +/* 07578C 7F040C5C 46124401 */ sub.s $f16, $f8, $f18 +/* 075790 7F040C60 E7B000B8 */ swc1 $f16, 0xb8($sp) +/* 075794 7F040C64 8E18000C */ lw $t8, 0xc($s0) +/* 075798 7F040C68 C7A600B8 */ lwc1 $f6, 0xb8($sp) +/* 07579C 7F040C6C 33190001 */ andi $t9, $t8, 1 +/* 0757A0 7F040C70 5720000E */ bnezl $t9, .L7F040CAC +/* 0757A4 7F040C74 02002025 */ move $a0, $s0 +/* 0757A8 7F040C78 8C450000 */ lw $a1, ($v0) +/* 0757AC 7F040C7C 8C460008 */ lw $a2, 8($v0) +/* 0757B0 7F040C80 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 0757B4 7F040C84 E7A60010 */ swc1 $f6, 0x10($sp) +/* 0757B8 7F040C88 10400007 */ beqz $v0, .L7F040CA8 +/* 0757BC 7F040C8C 02002025 */ move $a0, $s0 +/* 0757C0 7F040C90 27A500B0 */ addiu $a1, $sp, 0xb0 +/* 0757C4 7F040C94 27A6006C */ addiu $a2, $sp, 0x6c +/* 0757C8 7F040C98 0FC101D5 */ jal sub_GAME_7F040754 +/* 0757CC 7F040C9C 8FA700AC */ lw $a3, 0xac($sp) +/* 0757D0 7F040CA0 1000000C */ b .L7F040CD4 +/* 0757D4 7F040CA4 00000000 */ nop +.L7F040CA8: +/* 0757D8 7F040CA8 02002025 */ move $a0, $s0 +.L7F040CAC: +/* 0757DC 7F040CAC 8FA500CC */ lw $a1, 0xcc($sp) +/* 0757E0 7F040CB0 27A6006C */ addiu $a2, $sp, 0x6c +/* 0757E4 7F040CB4 0FC101D5 */ jal sub_GAME_7F040754 +/* 0757E8 7F040CB8 8FA700D4 */ lw $a3, 0xd4($sp) +/* 0757EC 7F040CBC C7A400B0 */ lwc1 $f4, 0xb0($sp) +/* 0757F0 7F040CC0 E6040058 */ swc1 $f4, 0x58($s0) +/* 0757F4 7F040CC4 C7AA00B4 */ lwc1 $f10, 0xb4($sp) +/* 0757F8 7F040CC8 E60A005C */ swc1 $f10, 0x5c($s0) +/* 0757FC 7F040CCC C7A800B8 */ lwc1 $f8, 0xb8($sp) +/* 075800 7F040CD0 E6080060 */ swc1 $f8, 0x60($s0) +.L7F040CD4: +/* 075804 7F040CD4 0FC10121 */ jal sub_GAME_7F040484 +/* 075808 7F040CD8 02002025 */ move $a0, $s0 +/* 07580C 7F040CDC 8FBF0024 */ lw $ra, 0x24($sp) +/* 075810 7F040CE0 8FB00020 */ lw $s0, 0x20($sp) +/* 075814 7F040CE4 27BD00C8 */ addiu $sp, $sp, 0xc8 +/* 075818 7F040CE8 03E00008 */ jr $ra +/* 07581C 7F040CEC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F040CF0(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F040CF0 +/* 075820 7F040CF0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 075824 7F040CF4 AFBF0014 */ sw $ra, 0x14($sp) +/* 075828 7F040CF8 8C820004 */ lw $v0, 4($a0) +/* 07582C 7F040CFC 8C430064 */ lw $v1, 0x64($v0) +/* 075830 7F040D00 306E0040 */ andi $t6, $v1, 0x40 +/* 075834 7F040D04 11C00015 */ beqz $t6, .L7F040D5C +/* 075838 7F040D08 30780080 */ andi $t8, $v1, 0x80 +/* 07583C 7F040D0C 8C44006C */ lw $a0, 0x6c($v0) +/* 075840 7F040D10 5080000E */ beql $a0, $zero, .L7F040D4C +/* 075844 7F040D14 2401FFBF */ li $at, -65 +/* 075848 7F040D18 8C850044 */ lw $a1, 0x44($a0) +/* 07584C 7F040D1C 10A00006 */ beqz $a1, .L7F040D38 +/* 075850 7F040D20 00000000 */ nop +/* 075854 7F040D24 00A02025 */ move $a0, $a1 +/* 075858 7F040D28 0FC0FEDC */ jal sub_GAME_7F03FB70 +/* 07585C 7F040D2C AFA2001C */ sw $v0, 0x1c($sp) +/* 075860 7F040D30 8FA2001C */ lw $v0, 0x1c($sp) +/* 075864 7F040D34 8C44006C */ lw $a0, 0x6c($v0) +.L7F040D38: +/* 075868 7F040D38 0FC0FFA2 */ jal sub_GAME_7F03FE88 +/* 07586C 7F040D3C AFA2001C */ sw $v0, 0x1c($sp) +/* 075870 7F040D40 8FA2001C */ lw $v0, 0x1c($sp) +/* 075874 7F040D44 8C430064 */ lw $v1, 0x64($v0) +/* 075878 7F040D48 2401FFBF */ li $at, -65 +.L7F040D4C: +/* 07587C 7F040D4C 00617824 */ and $t7, $v1, $at +/* 075880 7F040D50 AC40006C */ sw $zero, 0x6c($v0) +/* 075884 7F040D54 1000000C */ b .L7F040D88 +/* 075888 7F040D58 AC4F0064 */ sw $t7, 0x64($v0) +.L7F040D5C: +/* 07588C 7F040D5C 5300000B */ beql $t8, $zero, .L7F040D8C +/* 075890 7F040D60 8FBF0014 */ lw $ra, 0x14($sp) +/* 075894 7F040D64 8C44006C */ lw $a0, 0x6c($v0) +/* 075898 7F040D68 0FC0FEDC */ jal sub_GAME_7F03FB70 +/* 07589C 7F040D6C AFA2001C */ sw $v0, 0x1c($sp) +/* 0758A0 7F040D70 8FA2001C */ lw $v0, 0x1c($sp) +/* 0758A4 7F040D74 2401FF7F */ li $at, -129 +/* 0758A8 7F040D78 8C590064 */ lw $t9, 0x64($v0) +/* 0758AC 7F040D7C AC40006C */ sw $zero, 0x6c($v0) +/* 0758B0 7F040D80 03214024 */ and $t0, $t9, $at +/* 0758B4 7F040D84 AC480064 */ sw $t0, 0x64($v0) +.L7F040D88: +/* 0758B8 7F040D88 8FBF0014 */ lw $ra, 0x14($sp) +.L7F040D8C: +/* 0758BC 7F040D8C 27BD0020 */ addiu $sp, $sp, 0x20 +/* 0758C0 7F040D90 03E00008 */ jr $ra +/* 0758C4 7F040D94 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F040D98(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F040D98 +/* 0758C8 7F040D98 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0758CC 7F040D9C AFBF0024 */ sw $ra, 0x24($sp) +/* 0758D0 7F040DA0 AFB20020 */ sw $s2, 0x20($sp) +/* 0758D4 7F040DA4 AFB1001C */ sw $s1, 0x1c($sp) +/* 0758D8 7F040DA8 AFB00018 */ sw $s0, 0x18($sp) +/* 0758DC 7F040DAC AFA5002C */ sw $a1, 0x2c($sp) +/* 0758E0 7F040DB0 90820003 */ lbu $v0, 3($a0) +/* 0758E4 7F040DB4 2401000D */ li $at, 13 +/* 0758E8 7F040DB8 00C08025 */ move $s0, $a2 +/* 0758EC 7F040DBC 14410015 */ bne $v0, $at, .L7F040E14 +/* 0758F0 7F040DC0 00809025 */ move $s2, $a0 +/* 0758F4 7F040DC4 8C8400C4 */ lw $a0, 0xc4($a0) +/* 0758F8 7F040DC8 50800008 */ beql $a0, $zero, .L7F040DEC +/* 0758FC 7F040DCC 8E4400C8 */ lw $a0, 0xc8($s2) +/* 075900 7F040DD0 0C00237C */ jal sfxGetArg0Unk3F +/* 075904 7F040DD4 00000000 */ nop +/* 075908 7F040DD8 50400004 */ beql $v0, $zero, .L7F040DEC +/* 07590C 7F040DDC 8E4400C8 */ lw $a0, 0xc8($s2) +/* 075910 7F040DE0 0C002408 */ jal sfxDeactivate +/* 075914 7F040DE4 8E4400C4 */ lw $a0, 0xc4($s2) +/* 075918 7F040DE8 8E4400C8 */ lw $a0, 0xc8($s2) +.L7F040DEC: +/* 07591C 7F040DEC 5080004E */ beql $a0, $zero, .L7F040F28 +/* 075920 7F040DF0 8E510010 */ lw $s1, 0x10($s2) +/* 075924 7F040DF4 0C00237C */ jal sfxGetArg0Unk3F +/* 075928 7F040DF8 00000000 */ nop +/* 07592C 7F040DFC 5040004A */ beql $v0, $zero, .L7F040F28 +/* 075930 7F040E00 8E510010 */ lw $s1, 0x10($s2) +/* 075934 7F040E04 0C002408 */ jal sfxDeactivate +/* 075938 7F040E08 8E4400C8 */ lw $a0, 0xc8($s2) +/* 07593C 7F040E0C 10000046 */ b .L7F040F28 +/* 075940 7F040E10 8E510010 */ lw $s1, 0x10($s2) +.L7F040E14: +/* 075944 7F040E14 24010008 */ li $at, 8 +/* 075948 7F040E18 54410008 */ bnel $v0, $at, .L7F040E3C +/* 07594C 7F040E1C 24010001 */ li $at, 1 +/* 075950 7F040E20 8E420084 */ lw $v0, 0x84($s2) +/* 075954 7F040E24 50400040 */ beql $v0, $zero, .L7F040F28 +/* 075958 7F040E28 8E510010 */ lw $s1, 0x10($s2) +/* 07595C 7F040E2C AC400084 */ sw $zero, 0x84($v0) +/* 075960 7F040E30 1000003C */ b .L7F040F24 +/* 075964 7F040E34 AE400084 */ sw $zero, 0x84($s2) +/* 075968 7F040E38 24010001 */ li $at, 1 +.L7F040E3C: +/* 07596C 7F040E3C 54410016 */ bnel $v0, $at, .L7F040E98 +/* 075970 7F040E40 2401002F */ li $at, 47 +/* 075974 7F040E44 8E4400F4 */ lw $a0, 0xf4($s2) +/* 075978 7F040E48 50800008 */ beql $a0, $zero, .L7F040E6C +/* 07597C 7F040E4C 8E4400F8 */ lw $a0, 0xf8($s2) +/* 075980 7F040E50 0C00237C */ jal sfxGetArg0Unk3F +/* 075984 7F040E54 00000000 */ nop +/* 075988 7F040E58 50400004 */ beql $v0, $zero, .L7F040E6C +/* 07598C 7F040E5C 8E4400F8 */ lw $a0, 0xf8($s2) +/* 075990 7F040E60 0C002408 */ jal sfxDeactivate +/* 075994 7F040E64 8E4400F4 */ lw $a0, 0xf4($s2) +/* 075998 7F040E68 8E4400F8 */ lw $a0, 0xf8($s2) +.L7F040E6C: +/* 07599C 7F040E6C 5080002E */ beql $a0, $zero, .L7F040F28 +/* 0759A0 7F040E70 8E510010 */ lw $s1, 0x10($s2) +/* 0759A4 7F040E74 0C00237C */ jal sfxGetArg0Unk3F +/* 0759A8 7F040E78 00000000 */ nop +/* 0759AC 7F040E7C 5040002A */ beql $v0, $zero, .L7F040F28 +/* 0759B0 7F040E80 8E510010 */ lw $s1, 0x10($s2) +/* 0759B4 7F040E84 0C002408 */ jal sfxDeactivate +/* 0759B8 7F040E88 8E4400F8 */ lw $a0, 0xf8($s2) +/* 0759BC 7F040E8C 10000026 */ b .L7F040F28 +/* 0759C0 7F040E90 8E510010 */ lw $s1, 0x10($s2) +/* 0759C4 7F040E94 2401002F */ li $at, 47 +.L7F040E98: +/* 0759C8 7F040E98 54410009 */ bnel $v0, $at, .L7F040EC0 +/* 0759CC 7F040E9C 24010028 */ li $at, 40 +/* 0759D0 7F040EA0 8E44008C */ lw $a0, 0x8c($s2) +/* 0759D4 7F040EA4 04820020 */ bltzl $a0, .L7F040F28 +/* 0759D8 7F040EA8 8E510010 */ lw $s1, 0x10($s2) +/* 0759DC 7F040EAC 0FC2E76F */ jal sub_GAME_7F0B9DBC +/* 0759E0 7F040EB0 24050001 */ li $a1, 1 +/* 0759E4 7F040EB4 1000001C */ b .L7F040F28 +/* 0759E8 7F040EB8 8E510010 */ lw $s1, 0x10($s2) +/* 0759EC 7F040EBC 24010028 */ li $at, 40 +.L7F040EC0: +/* 0759F0 7F040EC0 5441000D */ bnel $v0, $at, .L7F040EF8 +/* 0759F4 7F040EC4 24010027 */ li $at, 39 +/* 0759F8 7F040EC8 8E4400B0 */ lw $a0, 0xb0($s2) +/* 0759FC 7F040ECC 50800016 */ beql $a0, $zero, .L7F040F28 +/* 075A00 7F040ED0 8E510010 */ lw $s1, 0x10($s2) +/* 075A04 7F040ED4 0C00237C */ jal sfxGetArg0Unk3F +/* 075A08 7F040ED8 00000000 */ nop +/* 075A0C 7F040EDC 50400012 */ beql $v0, $zero, .L7F040F28 +/* 075A10 7F040EE0 8E510010 */ lw $s1, 0x10($s2) +/* 075A14 7F040EE4 0C002408 */ jal sfxDeactivate +/* 075A18 7F040EE8 8E4400B0 */ lw $a0, 0xb0($s2) +/* 075A1C 7F040EEC 1000000E */ b .L7F040F28 +/* 075A20 7F040EF0 8E510010 */ lw $s1, 0x10($s2) +/* 075A24 7F040EF4 24010027 */ li $at, 39 +.L7F040EF8: +/* 075A28 7F040EF8 5441000B */ bnel $v0, $at, .L7F040F28 +/* 075A2C 7F040EFC 8E510010 */ lw $s1, 0x10($s2) +/* 075A30 7F040F00 8E4400AC */ lw $a0, 0xac($s2) +/* 075A34 7F040F04 50800008 */ beql $a0, $zero, .L7F040F28 +/* 075A38 7F040F08 8E510010 */ lw $s1, 0x10($s2) +/* 075A3C 7F040F0C 0C00237C */ jal sfxGetArg0Unk3F +/* 075A40 7F040F10 00000000 */ nop +/* 075A44 7F040F14 50400004 */ beql $v0, $zero, .L7F040F28 +/* 075A48 7F040F18 8E510010 */ lw $s1, 0x10($s2) +/* 075A4C 7F040F1C 0C002408 */ jal sfxDeactivate +/* 075A50 7F040F20 8E4400AC */ lw $a0, 0xac($s2) +.L7F040F24: +/* 075A54 7F040F24 8E510010 */ lw $s1, 0x10($s2) +.L7F040F28: +/* 075A58 7F040F28 12200038 */ beqz $s1, .L7F04100C +/* 075A5C 7F040F2C 02202025 */ move $a0, $s1 +/* 075A60 7F040F30 0FC28333 */ jal sub_GAME_7F0A0CCC +/* 075A64 7F040F34 00002825 */ move $a1, $zero +/* 075A68 7F040F38 8E440010 */ lw $a0, 0x10($s2) +/* 075A6C 7F040F3C 0FC28333 */ jal sub_GAME_7F0A0CCC +/* 075A70 7F040F40 24050001 */ li $a1, 1 +/* 075A74 7F040F44 56000032 */ bnezl $s0, .L7F041010 +/* 075A78 7F040F48 8FBF0024 */ lw $ra, 0x24($sp) +/* 075A7C 7F040F4C 0FC1033C */ jal sub_GAME_7F040CF0 +/* 075A80 7F040F50 8E440010 */ lw $a0, 0x10($s2) +/* 075A84 7F040F54 8E510010 */ lw $s1, 0x10($s2) +/* 075A88 7F040F58 8E2E001C */ lw $t6, 0x1c($s1) +/* 075A8C 7F040F5C 11C00004 */ beqz $t6, .L7F040F70 +/* 075A90 7F040F60 00000000 */ nop +/* 075A94 7F040F64 0FC13011 */ jal sub_GAME_7F04C044 +/* 075A98 7F040F68 02202025 */ move $a0, $s1 +/* 075A9C 7F040F6C 8E510010 */ lw $s1, 0x10($s2) +.L7F040F70: +/* 075AA0 7F040F70 0FC0F863 */ jal sub_GAME_7F03E18C +/* 075AA4 7F040F74 02202025 */ move $a0, $s1 +/* 075AA8 7F040F78 8E510010 */ lw $s1, 0x10($s2) +/* 075AAC 7F040F7C 8E300020 */ lw $s0, 0x20($s1) +/* 075AB0 7F040F80 52000009 */ beql $s0, $zero, .L7F040FA8 +/* 075AB4 7F040F84 922F0000 */ lbu $t7, ($s1) +.L7F040F88: +/* 075AB8 7F040F88 8E110024 */ lw $s1, 0x24($s0) +/* 075ABC 7F040F8C 8E040004 */ lw $a0, 4($s0) +/* 075AC0 7F040F90 0FC10409 */ jal sub_GAME_7F041024 +/* 075AC4 7F040F94 24050001 */ li $a1, 1 +/* 075AC8 7F040F98 1620FFFB */ bnez $s1, .L7F040F88 +/* 075ACC 7F040F9C 02208025 */ move $s0, $s1 +/* 075AD0 7F040FA0 8E510010 */ lw $s1, 0x10($s2) +/* 075AD4 7F040FA4 922F0000 */ lbu $t7, ($s1) +.L7F040FA8: +/* 075AD8 7F040FA8 24010002 */ li $at, 2 +/* 075ADC 7F040FAC 51E10004 */ beql $t7, $at, .L7F040FC0 +/* 075AE0 7F040FB0 92580003 */ lbu $t8, 3($s2) +/* 075AE4 7F040FB4 0FC1437A */ jal sub_GAME_7F050DE8 +/* 075AE8 7F040FB8 8E440014 */ lw $a0, 0x14($s2) +/* 075AEC 7F040FBC 92580003 */ lbu $t8, 3($s2) +.L7F040FC0: +/* 075AF0 7F040FC0 24010028 */ li $at, 40 +/* 075AF4 7F040FC4 17010005 */ bne $t8, $at, .L7F040FDC +/* 075AF8 7F040FC8 00000000 */ nop +/* 075AFC 7F040FCC 0FC1B0FE */ jal set_aircraft_obj_inst_scale_to_zero +/* 075B00 7F040FD0 8E440014 */ lw $a0, 0x14($s2) +/* 075B04 7F040FD4 10000004 */ b .L7F040FE8 +/* 075B08 7F040FD8 8FB9002C */ lw $t9, 0x2c($sp) +.L7F040FDC: +/* 075B0C 7F040FDC 0FC1B08D */ jal set_obj_instance_scale_to_zero +/* 075B10 7F040FE0 8E440014 */ lw $a0, 0x14($s2) +/* 075B14 7F040FE4 8FB9002C */ lw $t9, 0x2c($sp) +.L7F040FE8: +/* 075B18 7F040FE8 53200008 */ beql $t9, $zero, .L7F04100C +/* 075B1C 7F040FEC AE400010 */ sw $zero, 0x10($s2) +/* 075B20 7F040FF0 0FC0E94E */ jal sub_GAME_7F03A538 +/* 075B24 7F040FF4 8E440010 */ lw $a0, 0x10($s2) +/* 075B28 7F040FF8 0FC0E905 */ jal unset_stateflag_0x04_for_posdata +/* 075B2C 7F040FFC 8E440010 */ lw $a0, 0x10($s2) +/* 075B30 7F041000 0FC0E921 */ jal set_last_obj_pos_data +/* 075B34 7F041004 8E440010 */ lw $a0, 0x10($s2) +/* 075B38 7F041008 AE400010 */ sw $zero, 0x10($s2) +.L7F04100C: +/* 075B3C 7F04100C 8FBF0024 */ lw $ra, 0x24($sp) +.L7F041010: +/* 075B40 7F041010 8FB00018 */ lw $s0, 0x18($sp) +/* 075B44 7F041014 8FB1001C */ lw $s1, 0x1c($sp) +/* 075B48 7F041018 8FB20020 */ lw $s2, 0x20($sp) +/* 075B4C 7F04101C 03E00008 */ jr $ra +/* 075B50 7F041020 27BD0028 */ addiu $sp, $sp, 0x28 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F041024(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F041024 +/* 075B54 7F041024 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 075B58 7F041028 AFBF0014 */ sw $ra, 0x14($sp) +/* 075B5C 7F04102C 0FC10366 */ jal sub_GAME_7F040D98 +/* 075B60 7F041030 00003025 */ move $a2, $zero +/* 075B64 7F041034 8FBF0014 */ lw $ra, 0x14($sp) +/* 075B68 7F041038 27BD0018 */ addiu $sp, $sp, 0x18 +/* 075B6C 7F04103C 03E00008 */ jr $ra +/* 075B70 7F041040 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void if_a0_plus_3_is_4_then_10_else_20(void) { + +} +#else +GLOBAL_ASM( +.text +glabel if_a0_plus_3_is_4_then_10_else_20 +/* 075B74 7F041044 908E0003 */ lbu $t6, 3($a0) +/* 075B78 7F041048 24010004 */ li $at, 4 +/* 075B7C 7F04104C 15C10004 */ bne $t6, $at, .L7F041060 +/* 075B80 7F041050 3C0141A0 */ li $at, 0x41A00000 # 20.000000 +/* 075B84 7F041054 44810000 */ mtc1 $at, $f0 +/* 075B88 7F041058 03E00008 */ jr $ra +/* 075B8C 7F04105C 00000000 */ nop + +.L7F041060: +/* 075B90 7F041060 3C014120 */ li $at, 0x41200000 # 10.000000 +/* 075B94 7F041064 44810000 */ mtc1 $at, $f0 +/* 075B98 7F041068 00000000 */ nop +/* 075B9C 7F04106C 03E00008 */ jr $ra +/* 075BA0 7F041070 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F041074(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F041074 +/* 075BA4 7F041074 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 075BA8 7F041078 AFA70024 */ sw $a3, 0x24($sp) +/* 075BAC 7F04107C C48A0000 */ lwc1 $f10, ($a0) +/* 075BB0 7F041080 C4C80000 */ lwc1 $f8, ($a2) +/* 075BB4 7F041084 00001025 */ move $v0, $zero +/* 075BB8 7F041088 460A4181 */ sub.s $f6, $f8, $f10 +/* 075BBC 7F04108C E7A6000C */ swc1 $f6, 0xc($sp) +/* 075BC0 7F041090 C4880004 */ lwc1 $f8, 4($a0) +/* 075BC4 7F041094 C4C40004 */ lwc1 $f4, 4($a2) +/* 075BC8 7F041098 46082281 */ sub.s $f10, $f4, $f8 +/* 075BCC 7F04109C E7AA0010 */ swc1 $f10, 0x10($sp) +/* 075BD0 7F0410A0 C4840008 */ lwc1 $f4, 8($a0) +/* 075BD4 7F0410A4 C4C60008 */ lwc1 $f6, 8($a2) +/* 075BD8 7F0410A8 C7AA000C */ lwc1 $f10, 0xc($sp) +/* 075BDC 7F0410AC 46043201 */ sub.s $f8, $f6, $f4 +/* 075BE0 7F0410B0 C7A40010 */ lwc1 $f4, 0x10($sp) +/* 075BE4 7F0410B4 E7A80014 */ swc1 $f8, 0x14($sp) +/* 075BE8 7F0410B8 C4AC0000 */ lwc1 $f12, ($a1) +/* 075BEC 7F0410BC C4AE0004 */ lwc1 $f14, 4($a1) +/* 075BF0 7F0410C0 C4A20008 */ lwc1 $f2, 8($a1) +/* 075BF4 7F0410C4 460A6182 */ mul.s $f6, $f12, $f10 +/* 075BF8 7F0410C8 E7AA0000 */ swc1 $f10, ($sp) +/* 075BFC 7F0410CC 46047202 */ mul.s $f8, $f14, $f4 +/* 075C00 7F0410D0 46083180 */ add.s $f6, $f6, $f8 +/* 075C04 7F0410D4 C7A80014 */ lwc1 $f8, 0x14($sp) +/* 075C08 7F0410D8 46024282 */ mul.s $f10, $f8, $f2 +/* 075C0C 7F0410DC 46065000 */ add.s $f0, $f10, $f6 +/* 075C10 7F0410E0 44805000 */ mtc1 $zero, $f10 +/* 075C14 7F0410E4 00000000 */ nop +/* 075C18 7F0410E8 4600503C */ c.lt.s $f10, $f0 +/* 075C1C 7F0410EC 00000000 */ nop +/* 075C20 7F0410F0 45000019 */ bc1f .L7F041158 +/* 075C24 7F0410F4 00000000 */ nop +/* 075C28 7F0410F8 460C6182 */ mul.s $f6, $f12, $f12 +/* 075C2C 7F0410FC 00000000 */ nop +/* 075C30 7F041100 460E7282 */ mul.s $f10, $f14, $f14 +/* 075C34 7F041104 460A3180 */ add.s $f6, $f6, $f10 +/* 075C38 7F041108 46021282 */ mul.s $f10, $f2, $f2 +/* 075C3C 7F04110C 46065400 */ add.s $f16, $f10, $f6 +/* 075C40 7F041110 C7AA0000 */ lwc1 $f10, ($sp) +/* 075C44 7F041114 460A5182 */ mul.s $f6, $f10, $f10 +/* 075C48 7F041118 00000000 */ nop +/* 075C4C 7F04111C 46042282 */ mul.s $f10, $f4, $f4 +/* 075C50 7F041120 460A3100 */ add.s $f4, $f6, $f10 +/* 075C54 7F041124 46084182 */ mul.s $f6, $f8, $f8 +/* 075C58 7F041128 C7A80024 */ lwc1 $f8, 0x24($sp) +/* 075C5C 7F04112C 46000282 */ mul.s $f10, $f0, $f0 +/* 075C60 7F041130 46043480 */ add.s $f18, $f6, $f4 +/* 075C64 7F041134 46084182 */ mul.s $f6, $f8, $f8 +/* 075C68 7F041138 46069101 */ sub.s $f4, $f18, $f6 +/* 075C6C 7F04113C 46102202 */ mul.s $f8, $f4, $f16 +/* 075C70 7F041140 460A403E */ c.le.s $f8, $f10 +/* 075C74 7F041144 00000000 */ nop +/* 075C78 7F041148 45000003 */ bc1f .L7F041158 +/* 075C7C 7F04114C 00000000 */ nop +/* 075C80 7F041150 10000001 */ b .L7F041158 +/* 075C84 7F041154 24020001 */ li $v0, 1 +.L7F041158: +/* 075C88 7F041158 03E00008 */ jr $ra +/* 075C8C 7F04115C 27BD0018 */ addiu $sp, $sp, 0x18 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F041160(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F041160 +/* 075C90 7F041160 27BDFF58 */ addiu $sp, $sp, -0xa8 +/* 075C94 7F041164 AFBF0044 */ sw $ra, 0x44($sp) +/* 075C98 7F041168 AFB70040 */ sw $s7, 0x40($sp) +/* 075C9C 7F04116C AFB6003C */ sw $s6, 0x3c($sp) +/* 075CA0 7F041170 AFB50038 */ sw $s5, 0x38($sp) +/* 075CA4 7F041174 AFB40034 */ sw $s4, 0x34($sp) +/* 075CA8 7F041178 AFB30030 */ sw $s3, 0x30($sp) +/* 075CAC 7F04117C AFB2002C */ sw $s2, 0x2c($sp) +/* 075CB0 7F041180 AFB10028 */ sw $s1, 0x28($sp) +/* 075CB4 7F041184 AFB00024 */ sw $s0, 0x24($sp) +/* 075CB8 7F041188 AFA700B4 */ sw $a3, 0xb4($sp) +/* 075CBC 7F04118C 8C970014 */ lw $s7, 0x14($a0) +/* 075CC0 7F041190 AFA0009C */ sw $zero, 0x9c($sp) +/* 075CC4 7F041194 AFA00064 */ sw $zero, 0x64($sp) +/* 075CC8 7F041198 908E0003 */ lbu $t6, 3($a0) +/* 075CCC 7F04119C 24010001 */ li $at, 1 +/* 075CD0 7F0411A0 00A08825 */ move $s1, $a1 +/* 075CD4 7F0411A4 15C1001A */ bne $t6, $at, .L7F041210 +/* 075CD8 7F0411A8 00C09825 */ move $s3, $a2 +/* 075CDC 7F0411AC 248400D0 */ addiu $a0, $a0, 0xd0 +/* 075CE0 7F0411B0 8EE5000C */ lw $a1, 0xc($s7) +/* 075CE4 7F0411B4 02203025 */ move $a2, $s1 +/* 075CE8 7F0411B8 0FC1D1F4 */ jal sub_GAME_7F0747D0 +/* 075CEC 7F0411BC 02603825 */ move $a3, $s3 +/* 075CF0 7F0411C0 8EEF0008 */ lw $t7, 8($s7) +/* 075CF4 7F0411C4 00408025 */ move $s0, $v0 +/* 075CF8 7F0411C8 27B4006C */ addiu $s4, $sp, 0x6c +/* 075CFC 7F0411CC 8DF80000 */ lw $t8, ($t7) +/* 075D00 7F0411D0 27B50068 */ addiu $s5, $sp, 0x68 +/* 075D04 7F0411D4 18400025 */ blez $v0, .L7F04126C +/* 075D08 7F0411D8 AFB8009C */ sw $t8, 0x9c($sp) +/* 075D0C 7F0411DC 27B60064 */ addiu $s6, $sp, 0x64 +/* 075D10 7F0411E0 AFB60018 */ sw $s6, 0x18($sp) +/* 075D14 7F0411E4 02E02025 */ move $a0, $s7 +/* 075D18 7F0411E8 03002825 */ move $a1, $t8 +/* 075D1C 7F0411EC 02203025 */ move $a2, $s1 +/* 075D20 7F0411F0 02603825 */ move $a3, $s3 +/* 075D24 7F0411F4 AFB40010 */ sw $s4, 0x10($sp) +/* 075D28 7F0411F8 0FC1366C */ jal sub_GAME_7F04D9B0 +/* 075D2C 7F0411FC AFB50014 */ sw $s5, 0x14($sp) +/* 075D30 7F041200 1440001A */ bnez $v0, .L7F04126C +/* 075D34 7F041204 00000000 */ nop +/* 075D38 7F041208 10000018 */ b .L7F04126C +/* 075D3C 7F04120C 00008025 */ move $s0, $zero +.L7F041210: +/* 075D40 7F041210 27B60064 */ addiu $s6, $sp, 0x64 +/* 075D44 7F041214 27B50068 */ addiu $s5, $sp, 0x68 +/* 075D48 7F041218 27B4006C */ addiu $s4, $sp, 0x6c +/* 075D4C 7F04121C 27B2009C */ addiu $s2, $sp, 0x9c +/* 075D50 7F041220 02E02025 */ move $a0, $s7 +.L7F041224: +/* 075D54 7F041224 02202825 */ move $a1, $s1 +/* 075D58 7F041228 02603025 */ move $a2, $s3 +/* 075D5C 7F04122C 0FC1D4BF */ jal sub_GAME_7F0752FC +/* 075D60 7F041230 02403825 */ move $a3, $s2 +/* 075D64 7F041234 1840000B */ blez $v0, .L7F041264 +/* 075D68 7F041238 00408025 */ move $s0, $v0 +/* 075D6C 7F04123C 02E02025 */ move $a0, $s7 +/* 075D70 7F041240 8FA5009C */ lw $a1, 0x9c($sp) +/* 075D74 7F041244 02203025 */ move $a2, $s1 +/* 075D78 7F041248 02603825 */ move $a3, $s3 +/* 075D7C 7F04124C AFB40010 */ sw $s4, 0x10($sp) +/* 075D80 7F041250 AFB50014 */ sw $s5, 0x14($sp) +/* 075D84 7F041254 0FC1366C */ jal sub_GAME_7F04D9B0 +/* 075D88 7F041258 AFB60018 */ sw $s6, 0x18($sp) +/* 075D8C 7F04125C 14400003 */ bnez $v0, .L7F04126C +/* 075D90 7F041260 00000000 */ nop +.L7F041264: +/* 075D94 7F041264 5E00FFEF */ bgtzl $s0, .L7F041224 +/* 075D98 7F041268 02E02025 */ move $a0, $s7 +.L7F04126C: +/* 075D9C 7F04126C 1A000059 */ blez $s0, .L7F0413D4 +/* 075DA0 7F041270 00001025 */ move $v0, $zero +/* 075DA4 7F041274 C7A4006C */ lwc1 $f4, 0x6c($sp) +/* 075DA8 7F041278 8FA500B4 */ lw $a1, 0xb4($sp) +/* 075DAC 7F04127C 8EF9000C */ lw $t9, 0xc($s7) +/* 075DB0 7F041280 8FA80068 */ lw $t0, 0x68($sp) +/* 075DB4 7F041284 E4A40000 */ swc1 $f4, ($a1) +/* 075DB8 7F041288 C7A60070 */ lwc1 $f6, 0x70($sp) +/* 075DBC 7F04128C 00084980 */ sll $t1, $t0, 6 +/* 075DC0 7F041290 03298821 */ addu $s1, $t9, $t1 +/* 075DC4 7F041294 E4A60004 */ swc1 $f6, 4($a1) +/* 075DC8 7F041298 C7A80074 */ lwc1 $f8, 0x74($sp) +/* 075DCC 7F04129C 02202025 */ move $a0, $s1 +/* 075DD0 7F0412A0 0FC1611D */ jal sub_GAME_7F058474 +/* 075DD4 7F0412A4 E4A80008 */ swc1 $f8, 8($a1) +/* 075DD8 7F0412A8 0FC1E111 */ jal sub_GAME_7F078444 +/* 075DDC 7F0412AC 00000000 */ nop +/* 075DE0 7F0412B0 00402025 */ move $a0, $v0 +/* 075DE4 7F0412B4 0FC1611D */ jal sub_GAME_7F058474 +/* 075DE8 7F0412B8 8FA500B4 */ lw $a1, 0xb4($sp) +/* 075DEC 7F0412BC 8FB000B8 */ lw $s0, 0xb8($sp) +/* 075DF0 7F0412C0 C7AA0078 */ lwc1 $f10, 0x78($sp) +/* 075DF4 7F0412C4 02202025 */ move $a0, $s1 +/* 075DF8 7F0412C8 02002825 */ move $a1, $s0 +/* 075DFC 7F0412CC E60A0000 */ swc1 $f10, ($s0) +/* 075E00 7F0412D0 C7B0007C */ lwc1 $f16, 0x7c($sp) +/* 075E04 7F0412D4 E6100004 */ swc1 $f16, 4($s0) +/* 075E08 7F0412D8 C7B20080 */ lwc1 $f18, 0x80($sp) +/* 075E0C 7F0412DC 0FC160F6 */ jal sub_GAME_7F0583D8 +/* 075E10 7F0412E0 E6120008 */ swc1 $f18, 8($s0) +/* 075E14 7F0412E4 C6020000 */ lwc1 $f2, ($s0) +/* 075E18 7F0412E8 C6640000 */ lwc1 $f4, ($s3) +/* 075E1C 7F0412EC C60C0004 */ lwc1 $f12, 4($s0) +/* 075E20 7F0412F0 C6680004 */ lwc1 $f8, 4($s3) +/* 075E24 7F0412F4 46041182 */ mul.s $f6, $f2, $f4 +/* 075E28 7F0412F8 C6000008 */ lwc1 $f0, 8($s0) +/* 075E2C 7F0412FC C6720008 */ lwc1 $f18, 8($s3) +/* 075E30 7F041300 46086282 */ mul.s $f10, $f12, $f8 +/* 075E34 7F041304 44807000 */ mtc1 $zero, $f14 +/* 075E38 7F041308 46009102 */ mul.s $f4, $f18, $f0 +/* 075E3C 7F04130C 460A3400 */ add.s $f16, $f6, $f10 +/* 075E40 7F041310 46102200 */ add.s $f8, $f4, $f16 +/* 075E44 7F041314 4608703C */ c.lt.s $f14, $f8 +/* 075E48 7F041318 00000000 */ nop +/* 075E4C 7F04131C 45000007 */ bc1f .L7F04133C +/* 075E50 7F041320 00000000 */ nop +/* 075E54 7F041324 46001187 */ neg.s $f6, $f2 +/* 075E58 7F041328 46006287 */ neg.s $f10, $f12 +/* 075E5C 7F04132C 46000487 */ neg.s $f18, $f0 +/* 075E60 7F041330 E6060000 */ swc1 $f6, ($s0) +/* 075E64 7F041334 E60A0004 */ swc1 $f10, 4($s0) +/* 075E68 7F041338 E6120008 */ swc1 $f18, 8($s0) +.L7F04133C: +/* 075E6C 7F04133C 0FC1E111 */ jal sub_GAME_7F078444 +/* 075E70 7F041340 00000000 */ nop +/* 075E74 7F041344 00402025 */ move $a0, $v0 +/* 075E78 7F041348 0FC160F6 */ jal sub_GAME_7F0583D8 +/* 075E7C 7F04134C 02002825 */ move $a1, $s0 +/* 075E80 7F041350 44807000 */ mtc1 $zero, $f14 +/* 075E84 7F041354 C6040000 */ lwc1 $f4, ($s0) +/* 075E88 7F041358 02002025 */ move $a0, $s0 +/* 075E8C 7F04135C 26050004 */ addiu $a1, $s0, 4 +/* 075E90 7F041360 46047032 */ c.eq.s $f14, $f4 +/* 075E94 7F041364 00000000 */ nop +/* 075E98 7F041368 4500000C */ bc1f .L7F04139C +/* 075E9C 7F04136C 00000000 */ nop +/* 075EA0 7F041370 C6100004 */ lwc1 $f16, 4($s0) +/* 075EA4 7F041374 46107032 */ c.eq.s $f14, $f16 +/* 075EA8 7F041378 00000000 */ nop +/* 075EAC 7F04137C 45000007 */ bc1f .L7F04139C +/* 075EB0 7F041380 00000000 */ nop +/* 075EB4 7F041384 C6080008 */ lwc1 $f8, 8($s0) +/* 075EB8 7F041388 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 075EBC 7F04138C 46087032 */ c.eq.s $f14, $f8 +/* 075EC0 7F041390 00000000 */ nop +/* 075EC4 7F041394 45030006 */ bc1tl .L7F0413B0 +/* 075EC8 7F041398 44813000 */ mtc1 $at, $f6 +.L7F04139C: +/* 075ECC 7F04139C 0C007DD4 */ jal guNormalize +/* 075ED0 7F0413A0 26060008 */ addiu $a2, $s0, 8 +/* 075ED4 7F0413A4 10000005 */ b .L7F0413BC +/* 075ED8 7F0413A8 8FAB00BC */ lw $t3, 0xbc($sp) +/* 075EDC 7F0413AC 44813000 */ mtc1 $at, $f6 +.L7F0413B0: +/* 075EE0 7F0413B0 00000000 */ nop +/* 075EE4 7F0413B4 E6060008 */ swc1 $f6, 8($s0) +/* 075EE8 7F0413B8 8FAB00BC */ lw $t3, 0xbc($sp) +.L7F0413BC: +/* 075EEC 7F0413BC 24020001 */ li $v0, 1 +/* 075EF0 7F0413C0 AD770000 */ sw $s7, ($t3) +/* 075EF4 7F0413C4 8FAD00C0 */ lw $t5, 0xc0($sp) +/* 075EF8 7F0413C8 8FAC0064 */ lw $t4, 0x64($sp) +/* 075EFC 7F0413CC 10000001 */ b .L7F0413D4 +/* 075F00 7F0413D0 ADAC0000 */ sw $t4, ($t5) +.L7F0413D4: +/* 075F04 7F0413D4 8FBF0044 */ lw $ra, 0x44($sp) +/* 075F08 7F0413D8 8FB00024 */ lw $s0, 0x24($sp) +/* 075F0C 7F0413DC 8FB10028 */ lw $s1, 0x28($sp) +/* 075F10 7F0413E0 8FB2002C */ lw $s2, 0x2c($sp) +/* 075F14 7F0413E4 8FB30030 */ lw $s3, 0x30($sp) +/* 075F18 7F0413E8 8FB40034 */ lw $s4, 0x34($sp) +/* 075F1C 7F0413EC 8FB50038 */ lw $s5, 0x38($sp) +/* 075F20 7F0413F0 8FB6003C */ lw $s6, 0x3c($sp) +/* 075F24 7F0413F4 8FB70040 */ lw $s7, 0x40($sp) +/* 075F28 7F0413F8 03E00008 */ jr $ra +/* 075F2C 7F0413FC 27BD00A8 */ addiu $sp, $sp, 0xa8 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F041400(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F041400 +/* 075F30 7F041400 27BDFF28 */ addiu $sp, $sp, -0xd8 +/* 075F34 7F041404 AFB50044 */ sw $s5, 0x44($sp) +/* 075F38 7F041408 AFB40040 */ sw $s4, 0x40($sp) +/* 075F3C 7F04140C F7B40028 */ sdc1 $f20, 0x28($sp) +/* 075F40 7F041410 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 075F44 7F041414 00C0A025 */ move $s4, $a2 +/* 075F48 7F041418 00A0A825 */ move $s5, $a1 +/* 075F4C 7F04141C AFBF0054 */ sw $ra, 0x54($sp) +/* 075F50 7F041420 AFA700E4 */ sw $a3, 0xe4($sp) +/* 075F54 7F041424 4481A000 */ mtc1 $at, $f20 +/* 075F58 7F041428 240EFFFF */ li $t6, -1 +/* 075F5C 7F04142C 27AF00C8 */ addiu $t7, $sp, 0xc8 +/* 075F60 7F041430 AFBE0050 */ sw $fp, 0x50($sp) +/* 075F64 7F041434 AFB7004C */ sw $s7, 0x4c($sp) +/* 075F68 7F041438 AFB60048 */ sw $s6, 0x48($sp) +/* 075F6C 7F04143C AFB3003C */ sw $s3, 0x3c($sp) +/* 075F70 7F041440 AFB20038 */ sw $s2, 0x38($sp) +/* 075F74 7F041444 AFB10034 */ sw $s1, 0x34($sp) +/* 075F78 7F041448 AFB00030 */ sw $s0, 0x30($sp) +/* 075F7C 7F04144C AFA400D8 */ sw $a0, 0xd8($sp) +/* 075F80 7F041450 AFAE0094 */ sw $t6, 0x94($sp) +/* 075F84 7F041454 AFAF0010 */ sw $t7, 0x10($sp) +/* 075F88 7F041458 27A700CC */ addiu $a3, $sp, 0xcc +/* 075F8C 7F04145C 27A500D4 */ addiu $a1, $sp, 0xd4 +/* 075F90 7F041460 0FC0F308 */ jal sub_GAME_7F03CC20 +/* 075F94 7F041464 27A600D0 */ addiu $a2, $sp, 0xd0 +/* 075F98 7F041468 8FB800D0 */ lw $t8, 0xd0($sp) +/* 075F9C 7F04146C C7A400CC */ lwc1 $f4, 0xcc($sp) +/* 075FA0 7F041470 5B0000CD */ blezl $t8, .L7F0417A8 +/* 075FA4 7F041474 00001025 */ move $v0, $zero +/* 075FA8 7F041478 C6A00004 */ lwc1 $f0, 4($s5) +/* 075FAC 7F04147C C7A800C8 */ lwc1 $f8, 0xc8($sp) +/* 075FB0 7F041480 4600203C */ c.lt.s $f4, $f0 +/* 075FB4 7F041484 00000000 */ nop +/* 075FB8 7F041488 45020007 */ bc1fl .L7F0414A8 +/* 075FBC 7F04148C 4608003C */ c.lt.s $f0, $f8 +/* 075FC0 7F041490 C6860004 */ lwc1 $f6, 4($s4) +/* 075FC4 7F041494 4606203C */ c.lt.s $f4, $f6 +/* 075FC8 7F041498 00000000 */ nop +/* 075FCC 7F04149C 450300C2 */ bc1tl .L7F0417A8 +/* 075FD0 7F0414A0 00001025 */ move $v0, $zero +/* 075FD4 7F0414A4 4608003C */ c.lt.s $f0, $f8 +.L7F0414A8: +/* 075FD8 7F0414A8 00000000 */ nop +/* 075FDC 7F0414AC 45020007 */ bc1fl .L7F0414CC +/* 075FE0 7F0414B0 C6B00000 */ lwc1 $f16, ($s5) +/* 075FE4 7F0414B4 C68A0004 */ lwc1 $f10, 4($s4) +/* 075FE8 7F0414B8 4608503C */ c.lt.s $f10, $f8 +/* 075FEC 7F0414BC 00000000 */ nop +/* 075FF0 7F0414C0 450300B9 */ bc1tl .L7F0417A8 +/* 075FF4 7F0414C4 00001025 */ move $v0, $zero +/* 075FF8 7F0414C8 C6B00000 */ lwc1 $f16, ($s5) +.L7F0414CC: +/* 075FFC 7F0414CC 8FB900D0 */ lw $t9, 0xd0($sp) +/* 076000 7F0414D0 00008025 */ move $s0, $zero +/* 076004 7F0414D4 E7B000A0 */ swc1 $f16, 0xa0($sp) +/* 076008 7F0414D8 C6B20008 */ lwc1 $f18, 8($s5) +/* 07600C 7F0414DC E7B200A4 */ swc1 $f18, 0xa4($sp) +/* 076010 7F0414E0 C6840000 */ lwc1 $f4, ($s4) +/* 076014 7F0414E4 E7A40098 */ swc1 $f4, 0x98($sp) +/* 076018 7F0414E8 C6860008 */ lwc1 $f6, 8($s4) +/* 07601C 7F0414EC 1B200043 */ blez $t9, .L7F0415FC +/* 076020 7F0414F0 E7A6009C */ swc1 $f6, 0x9c($sp) +/* 076024 7F0414F4 00008825 */ move $s1, $zero +/* 076028 7F0414F8 27BE00B0 */ addiu $fp, $sp, 0xb0 +/* 07602C 7F0414FC 27B70098 */ addiu $s7, $sp, 0x98 +/* 076030 7F041500 27B600A0 */ addiu $s6, $sp, 0xa0 +/* 076034 7F041504 8FA800D0 */ lw $t0, 0xd0($sp) +.L7F041508: +/* 076038 7F041508 26130001 */ addiu $s3, $s0, 1 +/* 07603C 7F04150C 8FA900D4 */ lw $t1, 0xd4($sp) +/* 076040 7F041510 0268001A */ div $zero, $s3, $t0 +/* 076044 7F041514 01311821 */ addu $v1, $t1, $s1 +/* 076048 7F041518 C46A0000 */ lwc1 $f10, ($v1) +/* 07604C 7F04151C C6AC0000 */ lwc1 $f12, ($s5) +/* 076050 7F041520 C6AE0008 */ lwc1 $f14, 8($s5) +/* 076054 7F041524 8E860000 */ lw $a2, ($s4) +/* 076058 7F041528 8E870008 */ lw $a3, 8($s4) +/* 07605C 7F04152C E7AA0010 */ swc1 $f10, 0x10($sp) +/* 076060 7F041530 C4680004 */ lwc1 $f8, 4($v1) +/* 076064 7F041534 00001010 */ mfhi $v0 +/* 076068 7F041538 000250C0 */ sll $t2, $v0, 3 +/* 07606C 7F04153C 012A2021 */ addu $a0, $t1, $t2 +/* 076070 7F041540 E7A80014 */ swc1 $f8, 0x14($sp) +/* 076074 7F041544 C4900000 */ lwc1 $f16, ($a0) +/* 076078 7F041548 15000002 */ bnez $t0, .L7F041554 +/* 07607C 7F04154C 00000000 */ nop +/* 076080 7F041550 0007000D */ break 7 +.L7F041554: +/* 076084 7F041554 2401FFFF */ li $at, -1 +/* 076088 7F041558 15010004 */ bne $t0, $at, .L7F04156C +/* 07608C 7F04155C 3C018000 */ lui $at, 0x8000 +/* 076090 7F041560 16610002 */ bne $s3, $at, .L7F04156C +/* 076094 7F041564 00000000 */ nop +/* 076098 7F041568 0006000D */ break 6 +.L7F04156C: +/* 07609C 7F04156C E7B00018 */ swc1 $f16, 0x18($sp) +/* 0760A0 7F041570 C4920004 */ lwc1 $f18, 4($a0) +/* 0760A4 7F041574 00409025 */ move $s2, $v0 +/* 0760A8 7F041578 0FC2C1A2 */ jal sub_GAME_7F0B0688 +/* 0760AC 7F04157C E7B2001C */ swc1 $f18, 0x1c($sp) +/* 0760B0 7F041580 50400019 */ beql $v0, $zero, .L7F0415E8 +/* 0760B4 7F041584 8FAD00D0 */ lw $t5, 0xd0($sp) +/* 0760B8 7F041588 8FAB00D4 */ lw $t3, 0xd4($sp) +/* 0760BC 7F04158C 001260C0 */ sll $t4, $s2, 3 +/* 0760C0 7F041590 02C02025 */ move $a0, $s6 +/* 0760C4 7F041594 01711821 */ addu $v1, $t3, $s1 +/* 0760C8 7F041598 C4640000 */ lwc1 $f4, ($v1) +/* 0760CC 7F04159C 016C1021 */ addu $v0, $t3, $t4 +/* 0760D0 7F0415A0 02E02825 */ move $a1, $s7 +/* 0760D4 7F0415A4 E7A400B0 */ swc1 $f4, 0xb0($sp) +/* 0760D8 7F0415A8 C4660004 */ lwc1 $f6, 4($v1) +/* 0760DC 7F0415AC 03C03025 */ move $a2, $fp +/* 0760E0 7F0415B0 27A700A8 */ addiu $a3, $sp, 0xa8 +/* 0760E4 7F0415B4 E7A600B4 */ swc1 $f6, 0xb4($sp) +/* 0760E8 7F0415B8 C44A0000 */ lwc1 $f10, ($v0) +/* 0760EC 7F0415BC E7AA00A8 */ swc1 $f10, 0xa8($sp) +/* 0760F0 7F0415C0 C4480004 */ lwc1 $f8, 4($v0) +/* 0760F4 7F0415C4 0FC2CC80 */ jal sub_GAME_7F0B3200 +/* 0760F8 7F0415C8 E7A800AC */ swc1 $f8, 0xac($sp) +/* 0760FC 7F0415CC 4614003C */ c.lt.s $f0, $f20 +/* 076100 7F0415D0 00000000 */ nop +/* 076104 7F0415D4 45020004 */ bc1fl .L7F0415E8 +/* 076108 7F0415D8 8FAD00D0 */ lw $t5, 0xd0($sp) +/* 07610C 7F0415DC 46000506 */ mov.s $f20, $f0 +/* 076110 7F0415E0 AFB00094 */ sw $s0, 0x94($sp) +/* 076114 7F0415E4 8FAD00D0 */ lw $t5, 0xd0($sp) +.L7F0415E8: +/* 076118 7F0415E8 02608025 */ move $s0, $s3 +/* 07611C 7F0415EC 26310008 */ addiu $s1, $s1, 8 +/* 076120 7F0415F0 026D082A */ slt $at, $s3, $t5 +/* 076124 7F0415F4 5420FFC4 */ bnezl $at, .L7F041508 +/* 076128 7F0415F8 8FA800D0 */ lw $t0, 0xd0($sp) +.L7F0415FC: +/* 07612C 7F0415FC 8FAE0094 */ lw $t6, 0x94($sp) +/* 076130 7F041600 8FAF00D4 */ lw $t7, 0xd4($sp) +/* 076134 7F041604 27A40088 */ addiu $a0, $sp, 0x88 +/* 076138 7F041608 19C00066 */ blez $t6, .L7F0417A4 +/* 07613C 7F04160C 000EC0C0 */ sll $t8, $t6, 3 +/* 076140 7F041610 8FA800D0 */ lw $t0, 0xd0($sp) +/* 076144 7F041614 25D90001 */ addiu $t9, $t6, 1 +/* 076148 7F041618 01F81021 */ addu $v0, $t7, $t8 +/* 07614C 7F04161C 0328001A */ div $zero, $t9, $t0 +/* 076150 7F041620 4480A000 */ mtc1 $zero, $f20 +/* 076154 7F041624 C4500000 */ lwc1 $f16, ($v0) +/* 076158 7F041628 00004810 */ mfhi $t1 +/* 07615C 7F04162C E7B4008C */ swc1 $f20, 0x8c($sp) +/* 076160 7F041630 E7B00088 */ swc1 $f16, 0x88($sp) +/* 076164 7F041634 C4520004 */ lwc1 $f18, 4($v0) +/* 076168 7F041638 000950C0 */ sll $t2, $t1, 3 +/* 07616C 7F04163C 01EA1821 */ addu $v1, $t7, $t2 +/* 076170 7F041640 E7B20090 */ swc1 $f18, 0x90($sp) +/* 076174 7F041644 C4640000 */ lwc1 $f4, ($v1) +/* 076178 7F041648 E7B40080 */ swc1 $f20, 0x80($sp) +/* 07617C 7F04164C 27AB006C */ addiu $t3, $sp, 0x6c +/* 076180 7F041650 E7A4007C */ swc1 $f4, 0x7c($sp) +/* 076184 7F041654 C4660004 */ lwc1 $f6, 4($v1) +/* 076188 7F041658 15000002 */ bnez $t0, .L7F041664 +/* 07618C 7F04165C 00000000 */ nop +/* 076190 7F041660 0007000D */ break 7 +.L7F041664: +/* 076194 7F041664 2401FFFF */ li $at, -1 +/* 076198 7F041668 15010004 */ bne $t0, $at, .L7F04167C +/* 07619C 7F04166C 3C018000 */ li $at, 0x80000000 # -0.000000 +/* 0761A0 7F041670 17210002 */ bne $t9, $at, .L7F04167C +/* 0761A4 7F041674 00000000 */ nop +/* 0761A8 7F041678 0006000D */ break 6 +.L7F04167C: +/* 0761AC 7F04167C AFAB0010 */ sw $t3, 0x10($sp) +/* 0761B0 7F041680 27A5007C */ addiu $a1, $sp, 0x7c +/* 0761B4 7F041684 02A03025 */ move $a2, $s5 +/* 0761B8 7F041688 8FA700E4 */ lw $a3, 0xe4($sp) +/* 0761BC 7F04168C 0FC0984C */ jal sub_GAME_7F026130 +/* 0761C0 7F041690 E7A60084 */ swc1 $f6, 0x84($sp) +/* 0761C4 7F041694 C7AA006C */ lwc1 $f10, 0x6c($sp) +/* 0761C8 7F041698 C6A80000 */ lwc1 $f8, ($s5) +/* 0761CC 7F04169C 8FA500E4 */ lw $a1, 0xe4($sp) +/* 0761D0 7F0416A0 C7A60070 */ lwc1 $f6, 0x70($sp) +/* 0761D4 7F0416A4 46085401 */ sub.s $f16, $f10, $f8 +/* 0761D8 7F0416A8 C6AA0004 */ lwc1 $f10, 4($s5) +/* 0761DC 7F0416AC C4B20000 */ lwc1 $f18, ($a1) +/* 0761E0 7F0416B0 8FA300F0 */ lw $v1, 0xf0($sp) +/* 0761E4 7F0416B4 460A3201 */ sub.s $f8, $f6, $f10 +/* 0761E8 7F0416B8 46128102 */ mul.s $f4, $f16, $f18 +/* 0761EC 7F0416BC C4B00004 */ lwc1 $f16, 4($a1) +/* 0761F0 7F0416C0 C7AA0074 */ lwc1 $f10, 0x74($sp) +/* 0761F4 7F0416C4 8FA200E8 */ lw $v0, 0xe8($sp) +/* 0761F8 7F0416C8 46104482 */ mul.s $f18, $f8, $f16 +/* 0761FC 7F0416CC C6A80008 */ lwc1 $f8, 8($s5) +/* 076200 7F0416D0 8FA400EC */ lw $a0, 0xec($sp) +/* 076204 7F0416D4 46085401 */ sub.s $f16, $f10, $f8 +/* 076208 7F0416D8 C46A0000 */ lwc1 $f10, ($v1) +/* 07620C 7F0416DC 46122180 */ add.s $f6, $f4, $f18 +/* 076210 7F0416E0 C4A40008 */ lwc1 $f4, 8($a1) +/* 076214 7F0416E4 46102482 */ mul.s $f18, $f4, $f16 +/* 076218 7F0416E8 46069000 */ add.s $f0, $f18, $f6 +/* 07621C 7F0416EC 460A003C */ c.lt.s $f0, $f10 +/* 076220 7F0416F0 00000000 */ nop +/* 076224 7F0416F4 4502002C */ bc1fl .L7F0417A8 +/* 076228 7F0416F8 00001025 */ move $v0, $zero +/* 07622C 7F0416FC E4600000 */ swc1 $f0, ($v1) +/* 076230 7F041700 C7A8006C */ lwc1 $f8, 0x6c($sp) +/* 076234 7F041704 E4480000 */ swc1 $f8, ($v0) +/* 076238 7F041708 C7A40070 */ lwc1 $f4, 0x70($sp) +/* 07623C 7F04170C E4440004 */ swc1 $f4, 4($v0) +/* 076240 7F041710 C7B00074 */ lwc1 $f16, 0x74($sp) +/* 076244 7F041714 E4500008 */ swc1 $f16, 8($v0) +/* 076248 7F041718 C4B20000 */ lwc1 $f18, ($a1) +/* 07624C 7F04171C E4940004 */ swc1 $f20, 4($a0) +/* 076250 7F041720 46009187 */ neg.s $f6, $f18 +/* 076254 7F041724 E4860000 */ swc1 $f6, ($a0) +/* 076258 7F041728 C4840000 */ lwc1 $f4, ($a0) +/* 07625C 7F04172C C4AA0008 */ lwc1 $f10, 8($a1) +/* 076260 7F041730 24850004 */ addiu $a1, $a0, 4 +/* 076264 7F041734 4604A032 */ c.eq.s $f20, $f4 +/* 076268 7F041738 46005207 */ neg.s $f8, $f10 +/* 07626C 7F04173C 45000007 */ bc1f .L7F04175C +/* 076270 7F041740 E4880008 */ swc1 $f8, 8($a0) +/* 076274 7F041744 C4900008 */ lwc1 $f16, 8($a0) +/* 076278 7F041748 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07627C 7F04174C 4610A032 */ c.eq.s $f20, $f16 +/* 076280 7F041750 00000000 */ nop +/* 076284 7F041754 45030006 */ bc1tl .L7F041770 +/* 076288 7F041758 44819000 */ mtc1 $at, $f18 +.L7F04175C: +/* 07628C 7F04175C 0C007DD4 */ jal guNormalize +/* 076290 7F041760 24860008 */ addiu $a2, $a0, 8 +/* 076294 7F041764 10000005 */ b .L7F04177C +/* 076298 7F041768 8FAC00D8 */ lw $t4, 0xd8($sp) +/* 07629C 7F04176C 44819000 */ mtc1 $at, $f18 +.L7F041770: +/* 0762A0 7F041770 00000000 */ nop +/* 0762A4 7F041774 E4920008 */ swc1 $f18, 8($a0) +/* 0762A8 7F041778 8FAC00D8 */ lw $t4, 0xd8($sp) +.L7F04177C: +/* 0762AC 7F04177C 3C018003 */ lui $at, %hi(D_80030B0C) +/* 0762B0 7F041780 24020001 */ li $v0, 1 +/* 0762B4 7F041784 AC2C0B0C */ sw $t4, %lo(D_80030B0C)($at) +/* 0762B8 7F041788 3C018003 */ lui $at, %hi(bodypartshot) +/* 0762BC 7F04178C AC200B10 */ sw $zero, %lo(bodypartshot)($at) +/* 0762C0 7F041790 3C018007 */ lui $at, %hi(objinst) +/* 0762C4 7F041794 AC205B70 */ sw $zero, %lo(objinst)($at) +/* 0762C8 7F041798 3C018007 */ lui $at, %hi(dword_CODE_bss_80075B74) +/* 0762CC 7F04179C 10000002 */ b .L7F0417A8 +/* 0762D0 7F0417A0 AC205B74 */ sw $zero, %lo(dword_CODE_bss_80075B74)($at) +.L7F0417A4: +/* 0762D4 7F0417A4 00001025 */ move $v0, $zero +.L7F0417A8: +/* 0762D8 7F0417A8 8FBF0054 */ lw $ra, 0x54($sp) +/* 0762DC 7F0417AC D7B40028 */ ldc1 $f20, 0x28($sp) +/* 0762E0 7F0417B0 8FB00030 */ lw $s0, 0x30($sp) +/* 0762E4 7F0417B4 8FB10034 */ lw $s1, 0x34($sp) +/* 0762E8 7F0417B8 8FB20038 */ lw $s2, 0x38($sp) +/* 0762EC 7F0417BC 8FB3003C */ lw $s3, 0x3c($sp) +/* 0762F0 7F0417C0 8FB40040 */ lw $s4, 0x40($sp) +/* 0762F4 7F0417C4 8FB50044 */ lw $s5, 0x44($sp) +/* 0762F8 7F0417C8 8FB60048 */ lw $s6, 0x48($sp) +/* 0762FC 7F0417CC 8FB7004C */ lw $s7, 0x4c($sp) +/* 076300 7F0417D0 8FBE0050 */ lw $fp, 0x50($sp) +/* 076304 7F0417D4 03E00008 */ jr $ra +/* 076308 7F0417D8 27BD00D8 */ addiu $sp, $sp, 0xd8 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0417DC(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0417DC +/* 07630C 7F0417DC 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 076310 7F0417E0 AFB00028 */ sw $s0, 0x28($sp) +/* 076314 7F0417E4 00808025 */ move $s0, $a0 +/* 076318 7F0417E8 AFBF0034 */ sw $ra, 0x34($sp) +/* 07631C 7F0417EC AFB20030 */ sw $s2, 0x30($sp) +/* 076320 7F0417F0 AFB1002C */ sw $s1, 0x2c($sp) +/* 076324 7F0417F4 AFA60060 */ sw $a2, 0x60($sp) +/* 076328 7F0417F8 8C840014 */ lw $a0, 0x14($a0) +/* 07632C 7F0417FC 00A08825 */ move $s1, $a1 +/* 076330 7F041800 00E09025 */ move $s2, $a3 +/* 076334 7F041804 0FC1B403 */ jal getinstsize +/* 076338 7F041808 AFA40054 */ sw $a0, 0x54($sp) +/* 07633C 7F04180C 8E020010 */ lw $v0, 0x10($s0) +/* 076340 7F041810 44801000 */ mtc1 $zero, $f2 +/* 076344 7F041814 8C4E001C */ lw $t6, 0x1c($v0) +/* 076348 7F041818 55C00013 */ bnezl $t6, .L7F041868 +/* 07634C 7F04181C 46000207 */ neg.s $f8, $f0 +/* 076350 7F041820 C6040058 */ lwc1 $f4, 0x58($s0) +/* 076354 7F041824 C6260000 */ lwc1 $f6, ($s1) +/* 076358 7F041828 C608005C */ lwc1 $f8, 0x5c($s0) +/* 07635C 7F04182C C62A0004 */ lwc1 $f10, 4($s1) +/* 076360 7F041830 46062301 */ sub.s $f12, $f4, $f6 +/* 076364 7F041834 C6460000 */ lwc1 $f6, ($s2) +/* 076368 7F041838 C6240008 */ lwc1 $f4, 8($s1) +/* 07636C 7F04183C 460A4381 */ sub.s $f14, $f8, $f10 +/* 076370 7F041840 C6120060 */ lwc1 $f18, 0x60($s0) +/* 076374 7F041844 46066202 */ mul.s $f8, $f12, $f6 +/* 076378 7F041848 C64A0004 */ lwc1 $f10, 4($s2) +/* 07637C 7F04184C 46049401 */ sub.s $f16, $f18, $f4 +/* 076380 7F041850 C6460008 */ lwc1 $f6, 8($s2) +/* 076384 7F041854 460A7482 */ mul.s $f18, $f14, $f10 +/* 076388 7F041858 46124100 */ add.s $f4, $f8, $f18 +/* 07638C 7F04185C 46103282 */ mul.s $f10, $f6, $f16 +/* 076390 7F041860 46045080 */ add.s $f2, $f10, $f4 +/* 076394 7F041864 46000207 */ neg.s $f8, $f0 +.L7F041868: +/* 076398 7F041868 C7B20068 */ lwc1 $f18, 0x68($sp) +/* 07639C 7F04186C 4602403E */ c.le.s $f8, $f2 +/* 0763A0 7F041870 00000000 */ nop +/* 0763A4 7F041874 45020055 */ bc1fl .L7F0419CC +/* 0763A8 7F041878 00001025 */ move $v0, $zero +/* 0763AC 7F04187C 46009180 */ add.s $f6, $f18, $f0 +/* 0763B0 7F041880 4606103E */ c.le.s $f2, $f6 +/* 0763B4 7F041884 00000000 */ nop +/* 0763B8 7F041888 45020050 */ bc1fl .L7F0419CC +/* 0763BC 7F04188C 00001025 */ move $v0, $zero +/* 0763C0 7F041890 904F0001 */ lbu $t7, 1($v0) +/* 0763C4 7F041894 8FA5006C */ lw $a1, 0x6c($sp) +/* 0763C8 7F041898 8FA60070 */ lw $a2, 0x70($sp) +/* 0763CC 7F04189C 31F80002 */ andi $t8, $t7, 2 +/* 0763D0 7F0418A0 1300002A */ beqz $t8, .L7F04194C +/* 0763D4 7F0418A4 8FA40054 */ lw $a0, 0x54($sp) +/* 0763D8 7F0418A8 8FB90078 */ lw $t9, 0x78($sp) +/* 0763DC 7F0418AC 8FA90080 */ lw $t1, 0x80($sp) +/* 0763E0 7F0418B0 8FAA0084 */ lw $t2, 0x84($sp) +/* 0763E4 7F0418B4 02002025 */ move $a0, $s0 +/* 0763E8 7F0418B8 8FA70074 */ lw $a3, 0x74($sp) +/* 0763EC 7F0418BC AFB90010 */ sw $t9, 0x10($sp) +/* 0763F0 7F0418C0 AFA90014 */ sw $t1, 0x14($sp) +/* 0763F4 7F0418C4 0FC10458 */ jal sub_GAME_7F041160 +/* 0763F8 7F0418C8 AFAA0018 */ sw $t2, 0x18($sp) +/* 0763FC 7F0418CC 1040003E */ beqz $v0, .L7F0419C8 +/* 076400 7F0418D0 8FA30074 */ lw $v1, 0x74($sp) +/* 076404 7F0418D4 C46A0000 */ lwc1 $f10, ($v1) +/* 076408 7F0418D8 C6240000 */ lwc1 $f4, ($s1) +/* 07640C 7F0418DC C4680004 */ lwc1 $f8, 4($v1) +/* 076410 7F0418E0 C6320004 */ lwc1 $f18, 4($s1) +/* 076414 7F0418E4 46045301 */ sub.s $f12, $f10, $f4 +/* 076418 7F0418E8 C6440000 */ lwc1 $f4, ($s2) +/* 07641C 7F0418EC C62A0008 */ lwc1 $f10, 8($s1) +/* 076420 7F0418F0 46124381 */ sub.s $f14, $f8, $f18 +/* 076424 7F0418F4 C4660008 */ lwc1 $f6, 8($v1) +/* 076428 7F0418F8 46046202 */ mul.s $f8, $f12, $f4 +/* 07642C 7F0418FC C6520004 */ lwc1 $f18, 4($s2) +/* 076430 7F041900 460A3401 */ sub.s $f16, $f6, $f10 +/* 076434 7F041904 C6440008 */ lwc1 $f4, 8($s2) +/* 076438 7F041908 46127182 */ mul.s $f6, $f14, $f18 +/* 07643C 7F04190C 46064280 */ add.s $f10, $f8, $f6 +/* 076440 7F041910 46102482 */ mul.s $f18, $f4, $f16 +/* 076444 7F041914 44804000 */ mtc1 $zero, $f8 +/* 076448 7F041918 C7A60068 */ lwc1 $f6, 0x68($sp) +/* 07644C 7F04191C 460A9080 */ add.s $f2, $f18, $f10 +/* 076450 7F041920 4602403E */ c.le.s $f8, $f2 +/* 076454 7F041924 00000000 */ nop +/* 076458 7F041928 45020028 */ bc1fl .L7F0419CC +/* 07645C 7F04192C 00001025 */ move $v0, $zero +/* 076460 7F041930 4606103E */ c.le.s $f2, $f6 +/* 076464 7F041934 8FA8007C */ lw $t0, 0x7c($sp) +/* 076468 7F041938 24020001 */ li $v0, 1 +/* 07646C 7F04193C 45020023 */ bc1fl .L7F0419CC +/* 076470 7F041940 00001025 */ move $v0, $zero +/* 076474 7F041944 10000021 */ b .L7F0419CC +/* 076478 7F041948 E5020000 */ swc1 $f2, ($t0) +.L7F04194C: +/* 07647C 7F04194C 0FC1B403 */ jal getinstsize +/* 076480 7F041950 AFA2003C */ sw $v0, 0x3c($sp) +/* 076484 7F041954 44070000 */ mfc1 $a3, $f0 +/* 076488 7F041958 02202025 */ move $a0, $s1 +/* 07648C 7F04195C 02402825 */ move $a1, $s2 +/* 076490 7F041960 0FC1041D */ jal sub_GAME_7F041074 +/* 076494 7F041964 26060058 */ addiu $a2, $s0, 0x58 +/* 076498 7F041968 10400017 */ beqz $v0, .L7F0419C8 +/* 07649C 7F04196C 8FA30074 */ lw $v1, 0x74($sp) +/* 0764A0 7F041970 8FA8007C */ lw $t0, 0x7c($sp) +/* 0764A4 7F041974 C7A40068 */ lwc1 $f4, 0x68($sp) +/* 0764A8 7F041978 02202825 */ move $a1, $s1 +/* 0764AC 7F04197C 02403825 */ move $a3, $s2 +/* 0764B0 7F041980 E5040000 */ swc1 $f4, ($t0) +/* 0764B4 7F041984 8FAB0078 */ lw $t3, 0x78($sp) +/* 0764B8 7F041988 AFA30010 */ sw $v1, 0x10($sp) +/* 0764BC 7F04198C 8FA60060 */ lw $a2, 0x60($sp) +/* 0764C0 7F041990 8FA4003C */ lw $a0, 0x3c($sp) +/* 0764C4 7F041994 AFA80018 */ sw $t0, 0x18($sp) +/* 0764C8 7F041998 0FC10500 */ jal sub_GAME_7F041400 +/* 0764CC 7F04199C AFAB0014 */ sw $t3, 0x14($sp) +/* 0764D0 7F0419A0 10400009 */ beqz $v0, .L7F0419C8 +/* 0764D4 7F0419A4 8FAC0054 */ lw $t4, 0x54($sp) +/* 0764D8 7F0419A8 8FAD0080 */ lw $t5, 0x80($sp) +/* 0764DC 7F0419AC 24020001 */ li $v0, 1 +/* 0764E0 7F0419B0 ADAC0000 */ sw $t4, ($t5) +/* 0764E4 7F0419B4 8D8E0008 */ lw $t6, 8($t4) +/* 0764E8 7F0419B8 8FB80084 */ lw $t8, 0x84($sp) +/* 0764EC 7F0419BC 8DCF0000 */ lw $t7, ($t6) +/* 0764F0 7F0419C0 10000002 */ b .L7F0419CC +/* 0764F4 7F0419C4 AF0F0000 */ sw $t7, ($t8) +.L7F0419C8: +/* 0764F8 7F0419C8 00001025 */ move $v0, $zero +.L7F0419CC: +/* 0764FC 7F0419CC 8FBF0034 */ lw $ra, 0x34($sp) +/* 076500 7F0419D0 8FB00028 */ lw $s0, 0x28($sp) +/* 076504 7F0419D4 8FB1002C */ lw $s1, 0x2c($sp) +/* 076508 7F0419D8 8FB20030 */ lw $s2, 0x30($sp) +/* 07650C 7F0419DC 03E00008 */ jr $ra +/* 076510 7F0419E0 27BD0058 */ addiu $sp, $sp, 0x58 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0419E4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0419E4 +/* 076514 7F0419E4 27BDFF68 */ addiu $sp, $sp, -0x98 +/* 076518 7F0419E8 AFBF0064 */ sw $ra, 0x64($sp) +/* 07651C 7F0419EC AFBE0060 */ sw $fp, 0x60($sp) +/* 076520 7F0419F0 AFB7005C */ sw $s7, 0x5c($sp) +/* 076524 7F0419F4 AFB60058 */ sw $s6, 0x58($sp) +/* 076528 7F0419F8 AFB50054 */ sw $s5, 0x54($sp) +/* 07652C 7F0419FC AFB40050 */ sw $s4, 0x50($sp) +/* 076530 7F041A00 AFB3004C */ sw $s3, 0x4c($sp) +/* 076534 7F041A04 AFB20048 */ sw $s2, 0x48($sp) +/* 076538 7F041A08 AFB10044 */ sw $s1, 0x44($sp) +/* 07653C 7F041A0C AFB00040 */ sw $s0, 0x40($sp) +/* 076540 7F041A10 F7B40038 */ sdc1 $f20, 0x38($sp) +/* 076544 7F041A14 8C830010 */ lw $v1, 0x10($a0) +/* 076548 7F041A18 C7B400A8 */ lwc1 $f20, 0xa8($sp) +/* 07654C 7F041A1C 8FB700AC */ lw $s7, 0xac($sp) +/* 076550 7F041A20 8FBE00B0 */ lw $fp, 0xb0($sp) +/* 076554 7F041A24 27AE008C */ addiu $t6, $sp, 0x8c +/* 076558 7F041A28 27AF0080 */ addiu $t7, $sp, 0x80 +/* 07655C 7F041A2C 27B8007C */ addiu $t8, $sp, 0x7c +/* 076560 7F041A30 27B90078 */ addiu $t9, $sp, 0x78 +/* 076564 7F041A34 27A80074 */ addiu $t0, $sp, 0x74 +/* 076568 7F041A38 00808025 */ move $s0, $a0 +/* 07656C 7F041A3C 00A09825 */ move $s3, $a1 +/* 076570 7F041A40 00C0A025 */ move $s4, $a2 +/* 076574 7F041A44 00E0A825 */ move $s5, $a3 +/* 076578 7F041A48 0000B025 */ move $s6, $zero +/* 07657C 7F041A4C AFA8002C */ sw $t0, 0x2c($sp) +/* 076580 7F041A50 AFB90028 */ sw $t9, 0x28($sp) +/* 076584 7F041A54 AFB80024 */ sw $t8, 0x24($sp) +/* 076588 7F041A58 AFAF0020 */ sw $t7, 0x20($sp) +/* 07658C 7F041A5C AFAE001C */ sw $t6, 0x1c($sp) +/* 076590 7F041A60 AFA3006C */ sw $v1, 0x6c($sp) +/* 076594 7F041A64 E7B40010 */ swc1 $f20, 0x10($sp) +/* 076598 7F041A68 AFB70014 */ sw $s7, 0x14($sp) +/* 07659C 7F041A6C 0FC105F7 */ jal sub_GAME_7F0417DC +/* 0765A0 7F041A70 AFBE0018 */ sw $fp, 0x18($sp) +/* 0765A4 7F041A74 10400024 */ beqz $v0, .L7F041B08 +/* 0765A8 7F041A78 8FA3006C */ lw $v1, 0x6c($sp) +/* 0765AC 7F041A7C 8FA900BC */ lw $t1, 0xbc($sp) +/* 0765B0 7F041A80 C7A4007C */ lwc1 $f4, 0x7c($sp) +/* 0765B4 7F041A84 8FB100B4 */ lw $s1, 0xb4($sp) +/* 0765B8 7F041A88 C5260000 */ lwc1 $f6, ($t1) +/* 0765BC 7F041A8C 8FB200B8 */ lw $s2, 0xb8($sp) +/* 0765C0 7F041A90 4606203C */ c.lt.s $f4, $f6 +/* 0765C4 7F041A94 00000000 */ nop +/* 0765C8 7F041A98 4502001C */ bc1fl .L7F041B0C +/* 0765CC 7F041A9C 906E0001 */ lbu $t6, 1($v1) +/* 0765D0 7F041AA0 E5240000 */ swc1 $f4, ($t1) +/* 0765D4 7F041AA4 C7A8008C */ lwc1 $f8, 0x8c($sp) +/* 0765D8 7F041AA8 3C018003 */ lui $at, %hi(D_80030B0C) +/* 0765DC 7F041AAC 240BFFFF */ li $t3, -1 +/* 0765E0 7F041AB0 E6280000 */ swc1 $f8, ($s1) +/* 0765E4 7F041AB4 C7AA0090 */ lwc1 $f10, 0x90($sp) +/* 0765E8 7F041AB8 24160001 */ li $s6, 1 +/* 0765EC 7F041ABC E62A0004 */ swc1 $f10, 4($s1) +/* 0765F0 7F041AC0 C7B00094 */ lwc1 $f16, 0x94($sp) +/* 0765F4 7F041AC4 E6300008 */ swc1 $f16, 8($s1) +/* 0765F8 7F041AC8 C7B20080 */ lwc1 $f18, 0x80($sp) +/* 0765FC 7F041ACC E6520000 */ swc1 $f18, ($s2) +/* 076600 7F041AD0 C7A60084 */ lwc1 $f6, 0x84($sp) +/* 076604 7F041AD4 E6460004 */ swc1 $f6, 4($s2) +/* 076608 7F041AD8 C7A40088 */ lwc1 $f4, 0x88($sp) +/* 07660C 7F041ADC E6440008 */ swc1 $f4, 8($s2) +/* 076610 7F041AE0 8E0A0010 */ lw $t2, 0x10($s0) +/* 076614 7F041AE4 8FAC0078 */ lw $t4, 0x78($sp) +/* 076618 7F041AE8 8FAD0074 */ lw $t5, 0x74($sp) +/* 07661C 7F041AEC AC2A0B0C */ sw $t2, %lo(D_80030B0C)($at) +/* 076620 7F041AF0 3C018003 */ lui $at, %hi(bodypartshot) +/* 076624 7F041AF4 AC2B0B10 */ sw $t3, %lo(bodypartshot)($at) +/* 076628 7F041AF8 3C018007 */ lui $at, %hi(objinst) +/* 07662C 7F041AFC AC2C5B70 */ sw $t4, %lo(objinst)($at) +/* 076630 7F041B00 3C018007 */ lui $at, %hi(dword_CODE_bss_80075B74) +/* 076634 7F041B04 AC2D5B74 */ sw $t5, %lo(dword_CODE_bss_80075B74)($at) +.L7F041B08: +/* 076638 7F041B08 906E0001 */ lbu $t6, 1($v1) +.L7F041B0C: +/* 07663C 7F041B0C 8FB100B4 */ lw $s1, 0xb4($sp) +/* 076640 7F041B10 8FB200B8 */ lw $s2, 0xb8($sp) +/* 076644 7F041B14 31CF0002 */ andi $t7, $t6, 2 +/* 076648 7F041B18 51E0001A */ beql $t7, $zero, .L7F041B84 +/* 07664C 7F041B1C 8FBF0064 */ lw $ra, 0x64($sp) +/* 076650 7F041B20 8C700020 */ lw $s0, 0x20($v1) +/* 076654 7F041B24 52000017 */ beql $s0, $zero, .L7F041B84 +/* 076658 7F041B28 8FBF0064 */ lw $ra, 0x64($sp) +/* 07665C 7F041B2C 92180001 */ lbu $t8, 1($s0) +.L7F041B30: +/* 076660 7F041B30 02602825 */ move $a1, $s3 +/* 076664 7F041B34 02803025 */ move $a2, $s4 +/* 076668 7F041B38 33190002 */ andi $t9, $t8, 2 +/* 07666C 7F041B3C 1320000D */ beqz $t9, .L7F041B74 +/* 076670 7F041B40 02A03825 */ move $a3, $s5 +/* 076674 7F041B44 8E040004 */ lw $a0, 4($s0) +/* 076678 7F041B48 8FA800BC */ lw $t0, 0xbc($sp) +/* 07667C 7F041B4C AFB20020 */ sw $s2, 0x20($sp) +/* 076680 7F041B50 AFB1001C */ sw $s1, 0x1c($sp) +/* 076684 7F041B54 AFBE0018 */ sw $fp, 0x18($sp) +/* 076688 7F041B58 AFB70014 */ sw $s7, 0x14($sp) +/* 07668C 7F041B5C E7B40010 */ swc1 $f20, 0x10($sp) +/* 076690 7F041B60 0FC10679 */ jal sub_GAME_7F0419E4 +/* 076694 7F041B64 AFA80024 */ sw $t0, 0x24($sp) +/* 076698 7F041B68 50400003 */ beql $v0, $zero, .L7F041B78 +/* 07669C 7F041B6C 8E100024 */ lw $s0, 0x24($s0) +/* 0766A0 7F041B70 24160001 */ li $s6, 1 +.L7F041B74: +/* 0766A4 7F041B74 8E100024 */ lw $s0, 0x24($s0) +.L7F041B78: +/* 0766A8 7F041B78 5600FFED */ bnezl $s0, .L7F041B30 +/* 0766AC 7F041B7C 92180001 */ lbu $t8, 1($s0) +/* 0766B0 7F041B80 8FBF0064 */ lw $ra, 0x64($sp) +.L7F041B84: +/* 0766B4 7F041B84 02C01025 */ move $v0, $s6 +/* 0766B8 7F041B88 8FB60058 */ lw $s6, 0x58($sp) +/* 0766BC 7F041B8C D7B40038 */ ldc1 $f20, 0x38($sp) +/* 0766C0 7F041B90 8FB00040 */ lw $s0, 0x40($sp) +/* 0766C4 7F041B94 8FB10044 */ lw $s1, 0x44($sp) +/* 0766C8 7F041B98 8FB20048 */ lw $s2, 0x48($sp) +/* 0766CC 7F041B9C 8FB3004C */ lw $s3, 0x4c($sp) +/* 0766D0 7F041BA0 8FB40050 */ lw $s4, 0x50($sp) +/* 0766D4 7F041BA4 8FB50054 */ lw $s5, 0x54($sp) +/* 0766D8 7F041BA8 8FB7005C */ lw $s7, 0x5c($sp) +/* 0766DC 7F041BAC 8FBE0060 */ lw $fp, 0x60($sp) +/* 0766E0 7F041BB0 03E00008 */ jr $ra +/* 0766E4 7F041BB4 27BD0098 */ addiu $sp, $sp, 0x98 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F041BB8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F041BB8 +/* 0766E8 7F041BB8 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 0766EC 7F041BBC AFA70074 */ sw $a3, 0x74($sp) +/* 0766F0 7F041BC0 AFBF002C */ sw $ra, 0x2c($sp) +/* 0766F4 7F041BC4 AFB20028 */ sw $s2, 0x28($sp) +/* 0766F8 7F041BC8 AFB10024 */ sw $s1, 0x24($sp) +/* 0766FC 7F041BCC AFB00020 */ sw $s0, 0x20($sp) +/* 076700 7F041BD0 AFA40068 */ sw $a0, 0x68($sp) +/* 076704 7F041BD4 00803825 */ move $a3, $a0 +/* 076708 7F041BD8 8C920018 */ lw $s2, 0x18($a0) +/* 07670C 7F041BDC 8C84001C */ lw $a0, 0x1c($a0) +/* 076710 7F041BE0 00C08025 */ move $s0, $a2 +/* 076714 7F041BE4 00A08825 */ move $s1, $a1 +/* 076718 7F041BE8 0FC1B403 */ jal getinstsize +/* 07671C 7F041BEC AFA70068 */ sw $a3, 0x68($sp) +/* 076720 7F041BF0 C6440008 */ lwc1 $f4, 8($s2) +/* 076724 7F041BF4 C6260000 */ lwc1 $f6, ($s1) +/* 076728 7F041BF8 C648000C */ lwc1 $f8, 0xc($s2) +/* 07672C 7F041BFC C62A0004 */ lwc1 $f10, 4($s1) +/* 076730 7F041C00 46062081 */ sub.s $f2, $f4, $f6 +/* 076734 7F041C04 C6060000 */ lwc1 $f6, ($s0) +/* 076738 7F041C08 C6240008 */ lwc1 $f4, 8($s1) +/* 07673C 7F041C0C 460A4301 */ sub.s $f12, $f8, $f10 +/* 076740 7F041C10 C6520010 */ lwc1 $f18, 0x10($s2) +/* 076744 7F041C14 46061202 */ mul.s $f8, $f2, $f6 +/* 076748 7F041C18 C60A0004 */ lwc1 $f10, 4($s0) +/* 07674C 7F041C1C 46049381 */ sub.s $f14, $f18, $f4 +/* 076750 7F041C20 C6060008 */ lwc1 $f6, 8($s0) +/* 076754 7F041C24 460A6482 */ mul.s $f18, $f12, $f10 +/* 076758 7F041C28 46124100 */ add.s $f4, $f8, $f18 +/* 07675C 7F041C2C 460E3282 */ mul.s $f10, $f6, $f14 +/* 076760 7F041C30 C7B20074 */ lwc1 $f18, 0x74($sp) +/* 076764 7F041C34 46000207 */ neg.s $f8, $f0 +/* 076768 7F041C38 46045400 */ add.s $f16, $f10, $f4 +/* 07676C 7F041C3C 4610403E */ c.le.s $f8, $f16 +/* 076770 7F041C40 00000000 */ nop +/* 076774 7F041C44 4502006B */ bc1fl .L7F041DF4 +/* 076778 7F041C48 00001025 */ move $v0, $zero +/* 07677C 7F041C4C 46009180 */ add.s $f6, $f18, $f0 +/* 076780 7F041C50 4606803E */ c.le.s $f16, $f6 +/* 076784 7F041C54 00000000 */ nop +/* 076788 7F041C58 45020066 */ bc1fl .L7F041DF4 +/* 07678C 7F041C5C 00001025 */ move $v0, $zero +/* 076790 7F041C60 924E0001 */ lbu $t6, 1($s2) +/* 076794 7F041C64 8FB80068 */ lw $t8, 0x68($sp) +/* 076798 7F041C68 27A40038 */ addiu $a0, $sp, 0x38 +/* 07679C 7F041C6C 31CF0002 */ andi $t7, $t6, 2 +/* 0767A0 7F041C70 11E0005F */ beqz $t7, .L7F041DF0 +/* 0767A4 7F041C74 27A70040 */ addiu $a3, $sp, 0x40 +/* 0767A8 7F041C78 8F190020 */ lw $t9, 0x20($t8) +/* 0767AC 7F041C7C 27A8003C */ addiu $t0, $sp, 0x3c +/* 0767B0 7F041C80 AFA80010 */ sw $t0, 0x10($sp) +/* 0767B4 7F041C84 8FA50078 */ lw $a1, 0x78($sp) +/* 0767B8 7F041C88 8FA6007C */ lw $a2, 0x7c($sp) +/* 0767BC 7F041C8C 0FC1B004 */ jal sub_GAME_7F06C010 +/* 0767C0 7F041C90 AFB90038 */ sw $t9, 0x38($sp) +/* 0767C4 7F041C94 18400056 */ blez $v0, .L7F041DF0 +/* 0767C8 7F041C98 AFA20044 */ sw $v0, 0x44($sp) +/* 0767CC 7F041C9C 8FA40040 */ lw $a0, 0x40($sp) +/* 0767D0 7F041CA0 8FA5003C */ lw $a1, 0x3c($sp) +/* 0767D4 7F041CA4 0FC1B198 */ jal sub_GAME_7F06C660 +/* 0767D8 7F041CA8 00003025 */ move $a2, $zero +/* 0767DC 7F041CAC 8FA30078 */ lw $v1, 0x78($sp) +/* 0767E0 7F041CB0 C44A0030 */ lwc1 $f10, 0x30($v0) +/* 0767E4 7F041CB4 8FA7007C */ lw $a3, 0x7c($sp) +/* 0767E8 7F041CB8 C4640000 */ lwc1 $f4, ($v1) +/* 0767EC 7F041CBC C4480034 */ lwc1 $f8, 0x34($v0) +/* 0767F0 7F041CC0 C4720004 */ lwc1 $f18, 4($v1) +/* 0767F4 7F041CC4 46045081 */ sub.s $f2, $f10, $f4 +/* 0767F8 7F041CC8 C4E40000 */ lwc1 $f4, ($a3) +/* 0767FC 7F041CCC C4460038 */ lwc1 $f6, 0x38($v0) +/* 076800 7F041CD0 46124301 */ sub.s $f12, $f8, $f18 +/* 076804 7F041CD4 C46A0008 */ lwc1 $f10, 8($v1) +/* 076808 7F041CD8 46041202 */ mul.s $f8, $f2, $f4 +/* 07680C 7F041CDC C4F20004 */ lwc1 $f18, 4($a3) +/* 076810 7F041CE0 460A3381 */ sub.s $f14, $f6, $f10 +/* 076814 7F041CE4 C4E40008 */ lwc1 $f4, 8($a3) +/* 076818 7F041CE8 46126182 */ mul.s $f6, $f12, $f18 +/* 07681C 7F041CEC 8FA50088 */ lw $a1, 0x88($sp) +/* 076820 7F041CF0 8FA20080 */ lw $v0, 0x80($sp) +/* 076824 7F041CF4 460E2482 */ mul.s $f18, $f4, $f14 +/* 076828 7F041CF8 8FA40084 */ lw $a0, 0x84($sp) +/* 07682C 7F041CFC 46064280 */ add.s $f10, $f8, $f6 +/* 076830 7F041D00 C4A80000 */ lwc1 $f8, ($a1) +/* 076834 7F041D04 460A9000 */ add.s $f0, $f18, $f10 +/* 076838 7F041D08 4608003C */ c.lt.s $f0, $f8 +/* 07683C 7F041D0C 00000000 */ nop +/* 076840 7F041D10 45020038 */ bc1fl .L7F041DF4 +/* 076844 7F041D14 00001025 */ move $v0, $zero +/* 076848 7F041D18 E4A00000 */ swc1 $f0, ($a1) +/* 07684C 7F041D1C C6060000 */ lwc1 $f6, ($s0) +/* 076850 7F041D20 C6320000 */ lwc1 $f18, ($s1) +/* 076854 7F041D24 44801000 */ mtc1 $zero, $f2 +/* 076858 7F041D28 46003102 */ mul.s $f4, $f6, $f0 +/* 07685C 7F041D2C 24850004 */ addiu $a1, $a0, 4 +/* 076860 7F041D30 46122280 */ add.s $f10, $f4, $f18 +/* 076864 7F041D34 E44A0000 */ swc1 $f10, ($v0) +/* 076868 7F041D38 C6080004 */ lwc1 $f8, 4($s0) +/* 07686C 7F041D3C C6240004 */ lwc1 $f4, 4($s1) +/* 076870 7F041D40 46004182 */ mul.s $f6, $f8, $f0 +/* 076874 7F041D44 46043480 */ add.s $f18, $f6, $f4 +/* 076878 7F041D48 E4520004 */ swc1 $f18, 4($v0) +/* 07687C 7F041D4C C60A0008 */ lwc1 $f10, 8($s0) +/* 076880 7F041D50 C6260008 */ lwc1 $f6, 8($s1) +/* 076884 7F041D54 46005202 */ mul.s $f8, $f10, $f0 +/* 076888 7F041D58 46064100 */ add.s $f4, $f8, $f6 +/* 07688C 7F041D5C E4440008 */ swc1 $f4, 8($v0) +/* 076890 7F041D60 C6120000 */ lwc1 $f18, ($s0) +/* 076894 7F041D64 E4820004 */ swc1 $f2, 4($a0) +/* 076898 7F041D68 46009287 */ neg.s $f10, $f18 +/* 07689C 7F041D6C E48A0000 */ swc1 $f10, ($a0) +/* 0768A0 7F041D70 C4840000 */ lwc1 $f4, ($a0) +/* 0768A4 7F041D74 C6080008 */ lwc1 $f8, 8($s0) +/* 0768A8 7F041D78 46041032 */ c.eq.s $f2, $f4 +/* 0768AC 7F041D7C 46004187 */ neg.s $f6, $f8 +/* 0768B0 7F041D80 45000007 */ bc1f .L7F041DA0 +/* 0768B4 7F041D84 E4860008 */ swc1 $f6, 8($a0) +/* 0768B8 7F041D88 C4920008 */ lwc1 $f18, 8($a0) +/* 0768BC 7F041D8C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0768C0 7F041D90 46121032 */ c.eq.s $f2, $f18 +/* 0768C4 7F041D94 00000000 */ nop +/* 0768C8 7F041D98 45030006 */ bc1tl .L7F041DB4 +/* 0768CC 7F041D9C 44815000 */ mtc1 $at, $f10 +.L7F041DA0: +/* 0768D0 7F041DA0 0C007DD4 */ jal guNormalize +/* 0768D4 7F041DA4 24860008 */ addiu $a2, $a0, 8 +/* 0768D8 7F041DA8 10000005 */ b .L7F041DC0 +/* 0768DC 7F041DAC 8FA90044 */ lw $t1, 0x44($sp) +/* 0768E0 7F041DB0 44815000 */ mtc1 $at, $f10 +.L7F041DB4: +/* 0768E4 7F041DB4 00000000 */ nop +/* 0768E8 7F041DB8 E48A0008 */ swc1 $f10, 8($a0) +/* 0768EC 7F041DBC 8FA90044 */ lw $t1, 0x44($sp) +.L7F041DC0: +/* 0768F0 7F041DC0 3C018003 */ lui $at, %hi(D_80030B0C) +/* 0768F4 7F041DC4 AC320B0C */ sw $s2, %lo(D_80030B0C)($at) +/* 0768F8 7F041DC8 8FAA0040 */ lw $t2, 0x40($sp) +/* 0768FC 7F041DCC 3C018003 */ lui $at, %hi(bodypartshot) +/* 076900 7F041DD0 AC290B10 */ sw $t1, %lo(bodypartshot)($at) +/* 076904 7F041DD4 3C018007 */ lui $at, %hi(objinst) +/* 076908 7F041DD8 8FAB003C */ lw $t3, 0x3c($sp) +/* 07690C 7F041DDC AC2A5B70 */ sw $t2, %lo(objinst)($at) +/* 076910 7F041DE0 3C018007 */ lui $at, %hi(dword_CODE_bss_80075B74) +/* 076914 7F041DE4 24020001 */ li $v0, 1 +/* 076918 7F041DE8 10000002 */ b .L7F041DF4 +/* 07691C 7F041DEC AC2B5B74 */ sw $t3, %lo(dword_CODE_bss_80075B74)($at) +.L7F041DF0: +/* 076920 7F041DF0 00001025 */ move $v0, $zero +.L7F041DF4: +/* 076924 7F041DF4 8FBF002C */ lw $ra, 0x2c($sp) +/* 076928 7F041DF8 8FB00020 */ lw $s0, 0x20($sp) +/* 07692C 7F041DFC 8FB10024 */ lw $s1, 0x24($sp) +/* 076930 7F041E00 8FB20028 */ lw $s2, 0x28($sp) +/* 076934 7F041E04 03E00008 */ jr $ra +/* 076938 7F041E08 27BD0068 */ addiu $sp, $sp, 0x68 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F041E0C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F041E0C +/* 07693C 7F041E0C 27BDFF48 */ addiu $sp, $sp, -0xb8 +/* 076940 7F041E10 AFBF005C */ sw $ra, 0x5c($sp) +/* 076944 7F041E14 AFB40048 */ sw $s4, 0x48($sp) +/* 076948 7F041E18 AFB20040 */ sw $s2, 0x40($sp) +/* 07694C 7F041E1C 00E09025 */ move $s2, $a3 +/* 076950 7F041E20 00A0A025 */ move $s4, $a1 +/* 076954 7F041E24 AFBE0058 */ sw $fp, 0x58($sp) +/* 076958 7F041E28 AFB70054 */ sw $s7, 0x54($sp) +/* 07695C 7F041E2C AFB60050 */ sw $s6, 0x50($sp) +/* 076960 7F041E30 AFB5004C */ sw $s5, 0x4c($sp) +/* 076964 7F041E34 AFB30044 */ sw $s3, 0x44($sp) +/* 076968 7F041E38 AFB1003C */ sw $s1, 0x3c($sp) +/* 07696C 7F041E3C AFB00038 */ sw $s0, 0x38($sp) +/* 076970 7F041E40 F7B40030 */ sdc1 $f20, 0x30($sp) +/* 076974 7F041E44 AFA400B8 */ sw $a0, 0xb8($sp) +/* 076978 7F041E48 AFA600C0 */ sw $a2, 0xc0($sp) +/* 07697C 7F041E4C AFA000B4 */ sw $zero, 0xb4($sp) +/* 076980 7F041E50 0FC1F3A1 */ jal get_ptr_for_players_tank +/* 076984 7F041E54 AFA000A4 */ sw $zero, 0xa4($sp) +/* 076988 7F041E58 8FA300C0 */ lw $v1, 0xc0($sp) +/* 07698C 7F041E5C AFA20074 */ sw $v0, 0x74($sp) +/* 076990 7F041E60 C6860000 */ lwc1 $f6, ($s4) +/* 076994 7F041E64 C4640000 */ lwc1 $f4, ($v1) +/* 076998 7F041E68 46062201 */ sub.s $f8, $f4, $f6 +/* 07699C 7F041E6C E7A80098 */ swc1 $f8, 0x98($sp) +/* 0769A0 7F041E70 C6900004 */ lwc1 $f16, 4($s4) +/* 0769A4 7F041E74 C46A0004 */ lwc1 $f10, 4($v1) +/* 0769A8 7F041E78 46105481 */ sub.s $f18, $f10, $f16 +/* 0769AC 7F041E7C C7AA0098 */ lwc1 $f10, 0x98($sp) +/* 0769B0 7F041E80 E7B2009C */ swc1 $f18, 0x9c($sp) +/* 0769B4 7F041E84 C6860008 */ lwc1 $f6, 8($s4) +/* 0769B8 7F041E88 C4640008 */ lwc1 $f4, 8($v1) +/* 0769BC 7F041E8C 460A5402 */ mul.s $f16, $f10, $f10 +/* 0769C0 7F041E90 C7B2009C */ lwc1 $f18, 0x9c($sp) +/* 0769C4 7F041E94 46062201 */ sub.s $f8, $f4, $f6 +/* 0769C8 7F041E98 46129102 */ mul.s $f4, $f18, $f18 +/* 0769CC 7F041E9C E7A800A0 */ swc1 $f8, 0xa0($sp) +/* 0769D0 7F041EA0 C7A800A0 */ lwc1 $f8, 0xa0($sp) +/* 0769D4 7F041EA4 46084282 */ mul.s $f10, $f8, $f8 +/* 0769D8 7F041EA8 46048180 */ add.s $f6, $f16, $f4 +/* 0769DC 7F041EAC 0C007DF8 */ jal sqrtf +/* 0769E0 7F041EB0 46065300 */ add.s $f12, $f10, $f6 +/* 0769E4 7F041EB4 44809000 */ mtc1 $zero, $f18 +/* 0769E8 7F041EB8 46000506 */ mov.s $f20, $f0 +/* 0769EC 7F041EBC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0769F0 7F041EC0 46120032 */ c.eq.s $f0, $f18 +/* 0769F4 7F041EC4 00000000 */ nop +/* 0769F8 7F041EC8 45020004 */ bc1fl .L7F041EDC +/* 0769FC 7F041ECC 44818000 */ mtc1 $at, $f16 +/* 076A00 7F041ED0 100000D1 */ b .L7F042218 +/* 076A04 7F041ED4 00001025 */ move $v0, $zero +/* 076A08 7F041ED8 44818000 */ mtc1 $at, $f16 +.L7F041EDC: +/* 076A0C 7F041EDC C7A40098 */ lwc1 $f4, 0x98($sp) +/* 076A10 7F041EE0 C7AA009C */ lwc1 $f10, 0x9c($sp) +/* 076A14 7F041EE4 46148003 */ div.s $f0, $f16, $f20 +/* 076A18 7F041EE8 C7B200A0 */ lwc1 $f18, 0xa0($sp) +/* 076A1C 7F041EEC 46002202 */ mul.s $f8, $f4, $f0 +/* 076A20 7F041EF0 00000000 */ nop +/* 076A24 7F041EF4 46005182 */ mul.s $f6, $f10, $f0 +/* 076A28 7F041EF8 00000000 */ nop +/* 076A2C 7F041EFC 46009402 */ mul.s $f16, $f18, $f0 +/* 076A30 7F041F00 E7A80098 */ swc1 $f8, 0x98($sp) +/* 076A34 7F041F04 E7A6009C */ swc1 $f6, 0x9c($sp) +/* 076A38 7F041F08 E7B000A0 */ swc1 $f16, 0xa0($sp) +/* 076A3C 7F041F0C C6840000 */ lwc1 $f4, ($s4) +/* 076A40 7F041F10 E7A40088 */ swc1 $f4, 0x88($sp) +/* 076A44 7F041F14 C6880004 */ lwc1 $f8, 4($s4) +/* 076A48 7F041F18 E7A8008C */ swc1 $f8, 0x8c($sp) +/* 076A4C 7F041F1C C68A0008 */ lwc1 $f10, 8($s4) +/* 076A50 7F041F20 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 076A54 7F041F24 E7AA0090 */ swc1 $f10, 0x90($sp) +/* 076A58 7F041F28 00402025 */ move $a0, $v0 +/* 076A5C 7F041F2C 0FC1611D */ jal sub_GAME_7F058474 +/* 076A60 7F041F30 27A50088 */ addiu $a1, $sp, 0x88 +/* 076A64 7F041F34 C7A60098 */ lwc1 $f6, 0x98($sp) +/* 076A68 7F041F38 C7B2009C */ lwc1 $f18, 0x9c($sp) +/* 076A6C 7F041F3C C7B000A0 */ lwc1 $f16, 0xa0($sp) +/* 076A70 7F041F40 E7A6007C */ swc1 $f6, 0x7c($sp) +/* 076A74 7F041F44 E7B20080 */ swc1 $f18, 0x80($sp) +/* 076A78 7F041F48 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 076A7C 7F041F4C E7B00084 */ swc1 $f16, 0x84($sp) +/* 076A80 7F041F50 00402025 */ move $a0, $v0 +/* 076A84 7F041F54 0FC160F6 */ jal sub_GAME_7F0583D8 +/* 076A88 7F041F58 27A5007C */ addiu $a1, $sp, 0x7c +/* 076A8C 7F041F5C 12400099 */ beqz $s2, .L7F0421C4 +/* 076A90 7F041F60 E7B400A8 */ swc1 $f20, 0xa8($sp) +/* 076A94 7F041F64 0FC0F8FF */ jal sub_GAME_7F03E3FC +/* 076A98 7F041F68 8FA400D0 */ lw $a0, 0xd0($sp) +/* 076A9C 7F041F6C 3C138007 */ lui $s3, %hi(ptr_list_object_lookup_indices) +/* 076AA0 7F041F70 8E739C30 */ lw $s3, %lo(ptr_list_object_lookup_indices)($s3) +/* 076AA4 7F041F74 27BE00A8 */ addiu $fp, $sp, 0xa8 +/* 076AA8 7F041F78 27B70098 */ addiu $s7, $sp, 0x98 +/* 076AAC 7F041F7C 86620000 */ lh $v0, ($s3) +/* 076AB0 7F041F80 8FB600CC */ lw $s6, 0xcc($sp) +/* 076AB4 7F041F84 8FB500C8 */ lw $s5, 0xc8($sp) +/* 076AB8 7F041F88 0440008E */ bltz $v0, .L7F0421C4 +/* 076ABC 7F041F8C 00027080 */ sll $t6, $v0, 2 +.L7F041F90: +/* 076AC0 7F041F90 01C27023 */ subu $t6, $t6, $v0 +/* 076AC4 7F041F94 000E7080 */ sll $t6, $t6, 2 +/* 076AC8 7F041F98 8FB800B8 */ lw $t8, 0xb8($sp) +/* 076ACC 7F041F9C 01C27021 */ addu $t6, $t6, $v0 +/* 076AD0 7F041FA0 3C0F8007 */ lui $t7, %hi(pos_data_entry) +/* 076AD4 7F041FA4 25EF9C38 */ addiu $t7, %lo(pos_data_entry) # addiu $t7, $t7, -0x63c8 +/* 076AD8 7F041FA8 000E7080 */ sll $t6, $t6, 2 +/* 076ADC 7F041FAC 01CF8021 */ addu $s0, $t6, $t7 +/* 076AE0 7F041FB0 52180081 */ beql $s0, $t8, .L7F0421B8 +/* 076AE4 7F041FB4 86620002 */ lh $v0, 2($s3) +/* 076AE8 7F041FB8 92020000 */ lbu $v0, ($s0) +/* 076AEC 7F041FBC 24010001 */ li $at, 1 +/* 076AF0 7F041FC0 10410005 */ beq $v0, $at, .L7F041FD8 +/* 076AF4 7F041FC4 24010004 */ li $at, 4 +/* 076AF8 7F041FC8 10410003 */ beq $v0, $at, .L7F041FD8 +/* 076AFC 7F041FCC 24010002 */ li $at, 2 +/* 076B00 7F041FD0 54410030 */ bnel $v0, $at, .L7F042094 +/* 076B04 7F041FD4 24010003 */ li $at, 3 +.L7F041FD8: +/* 076B08 7F041FD8 8E110004 */ lw $s1, 4($s0) +/* 076B0C 7F041FDC 8E390064 */ lw $t9, 0x64($s1) +/* 076B10 7F041FE0 33280008 */ andi $t0, $t9, 8 +/* 076B14 7F041FE4 55000074 */ bnezl $t0, .L7F0421B8 +/* 076B18 7F041FE8 86620002 */ lh $v0, 2($s3) +/* 076B1C 7F041FEC 8E29000C */ lw $t1, 0xc($s1) +/* 076B20 7F041FF0 24010002 */ li $at, 2 +/* 076B24 7F041FF4 00095180 */ sll $t2, $t1, 6 +/* 076B28 7F041FF8 0542006F */ bltzl $t2, .L7F0421B8 +/* 076B2C 7F041FFC 86620002 */ lh $v0, 2($s3) +/* 076B30 7F042000 1441000B */ bne $v0, $at, .L7F042030 +/* 076B34 7F042004 324D0001 */ andi $t5, $s2, 1 +/* 076B38 7F042008 324B0002 */ andi $t3, $s2, 2 +/* 076B3C 7F04200C 5560000B */ bnezl $t3, .L7F04203C +/* 076B40 7F042010 8FAE0074 */ lw $t6, 0x74($sp) +/* 076B44 7F042014 0FC0F67B */ jal sub_GAME_7F03D9EC +/* 076B48 7F042018 02002025 */ move $a0, $s0 +/* 076B4C 7F04201C 00526024 */ and $t4, $v0, $s2 +/* 076B50 7F042020 55800006 */ bnezl $t4, .L7F04203C +/* 076B54 7F042024 8FAE0074 */ lw $t6, 0x74($sp) +/* 076B58 7F042028 10000063 */ b .L7F0421B8 +/* 076B5C 7F04202C 86620002 */ lh $v0, 2($s3) +.L7F042030: +/* 076B60 7F042030 51A00061 */ beql $t5, $zero, .L7F0421B8 +/* 076B64 7F042034 86620002 */ lh $v0, 2($s3) +/* 076B68 7F042038 8FAE0074 */ lw $t6, 0x74($sp) +.L7F04203C: +/* 076B6C 7F04203C 02202025 */ move $a0, $s1 +/* 076B70 7F042040 02802825 */ move $a1, $s4 +/* 076B74 7F042044 160E0004 */ bne $s0, $t6, .L7F042058 +/* 076B78 7F042048 8FA600C0 */ lw $a2, 0xc0($sp) +/* 076B7C 7F04204C 922F0002 */ lbu $t7, 2($s1) +/* 076B80 7F042050 31F80020 */ andi $t8, $t7, 0x20 +/* 076B84 7F042054 17000057 */ bnez $t8, .L7F0421B4 +.L7F042058: +/* 076B88 7F042058 27B90088 */ addiu $t9, $sp, 0x88 +/* 076B8C 7F04205C 27A8007C */ addiu $t0, $sp, 0x7c +/* 076B90 7F042060 AFA80018 */ sw $t0, 0x18($sp) +/* 076B94 7F042064 AFB90014 */ sw $t9, 0x14($sp) +/* 076B98 7F042068 02E03825 */ move $a3, $s7 +/* 076B9C 7F04206C E7B40010 */ swc1 $f20, 0x10($sp) +/* 076BA0 7F042070 AFB5001C */ sw $s5, 0x1c($sp) +/* 076BA4 7F042074 AFB60020 */ sw $s6, 0x20($sp) +/* 076BA8 7F042078 0FC10679 */ jal sub_GAME_7F0419E4 +/* 076BAC 7F04207C AFBE0024 */ sw $fp, 0x24($sp) +/* 076BB0 7F042080 1040004C */ beqz $v0, .L7F0421B4 +/* 076BB4 7F042084 24090001 */ li $t1, 1 +/* 076BB8 7F042088 1000004A */ b .L7F0421B4 +/* 076BBC 7F04208C AFA900A4 */ sw $t1, 0xa4($sp) +/* 076BC0 7F042090 24010003 */ li $at, 3 +.L7F042094: +/* 076BC4 7F042094 10410005 */ beq $v0, $at, .L7F0420AC +/* 076BC8 7F042098 24010006 */ li $at, 6 +/* 076BCC 7F04209C 5441002F */ bnel $v0, $at, .L7F04215C +/* 076BD0 7F0420A0 24010006 */ li $at, 6 +/* 076BD4 7F0420A4 8E0A0004 */ lw $t2, 4($s0) +/* 076BD8 7F0420A8 1140002B */ beqz $t2, .L7F042158 +.L7F0420AC: +/* 076BDC 7F0420AC 24010006 */ li $at, 6 +/* 076BE0 7F0420B0 1441000F */ bne $v0, $at, .L7F0420F0 +/* 076BE4 7F0420B4 8E110004 */ lw $s1, 4($s0) +/* 076BE8 7F0420B8 0FC26C57 */ jal sub_GAME_7F09B15C +/* 076BEC 7F0420BC 02002025 */ move $a0, $s0 +/* 076BF0 7F0420C0 00025880 */ sll $t3, $v0, 2 +/* 076BF4 7F0420C4 3C0C8008 */ lui $t4, %hi(ptr_BONDdata_p1) +/* 076BF8 7F0420C8 018B6021 */ addu $t4, $t4, $t3 +/* 076BFC 7F0420CC 8D8C9EE0 */ lw $t4, %lo(ptr_BONDdata_p1)($t4) +/* 076C00 7F0420D0 324E0004 */ andi $t6, $s2, 4 +/* 076C04 7F0420D4 8D8D00AC */ lw $t5, 0xac($t4) +/* 076C08 7F0420D8 51A00037 */ beql $t5, $zero, .L7F0421B8 +/* 076C0C 7F0420DC 86620002 */ lh $v0, 2($s3) +/* 076C10 7F0420E0 55C0000E */ bnezl $t6, .L7F04211C +/* 076C14 7F0420E4 4407A000 */ mfc1 $a3, $f20 +/* 076C18 7F0420E8 10000033 */ b .L7F0421B8 +/* 076C1C 7F0420EC 86620002 */ lh $v0, 2($s3) +.L7F0420F0: +/* 076C20 7F0420F0 24010003 */ li $at, 3 +/* 076C24 7F0420F4 54410009 */ bnel $v0, $at, .L7F04211C +/* 076C28 7F0420F8 4407A000 */ mfc1 $a3, $f20 +/* 076C2C 7F0420FC 962F0012 */ lhu $t7, 0x12($s1) +/* 076C30 7F042100 32590008 */ andi $t9, $s2, 8 +/* 076C34 7F042104 31F80100 */ andi $t8, $t7, 0x100 +/* 076C38 7F042108 5700002B */ bnezl $t8, .L7F0421B8 +/* 076C3C 7F04210C 86620002 */ lh $v0, 2($s3) +/* 076C40 7F042110 53200029 */ beql $t9, $zero, .L7F0421B8 +/* 076C44 7F042114 86620002 */ lh $v0, 2($s3) +/* 076C48 7F042118 4407A000 */ mfc1 $a3, $f20 +.L7F04211C: +/* 076C4C 7F04211C 27A80088 */ addiu $t0, $sp, 0x88 +/* 076C50 7F042120 27A9007C */ addiu $t1, $sp, 0x7c +/* 076C54 7F042124 AFA90014 */ sw $t1, 0x14($sp) +/* 076C58 7F042128 AFA80010 */ sw $t0, 0x10($sp) +/* 076C5C 7F04212C 02202025 */ move $a0, $s1 +/* 076C60 7F042130 02802825 */ move $a1, $s4 +/* 076C64 7F042134 02E03025 */ move $a2, $s7 +/* 076C68 7F042138 AFB50018 */ sw $s5, 0x18($sp) +/* 076C6C 7F04213C AFB6001C */ sw $s6, 0x1c($sp) +/* 076C70 7F042140 0FC106EE */ jal sub_GAME_7F041BB8 +/* 076C74 7F042144 AFBE0020 */ sw $fp, 0x20($sp) +/* 076C78 7F042148 1040001A */ beqz $v0, .L7F0421B4 +/* 076C7C 7F04214C 240A0001 */ li $t2, 1 +/* 076C80 7F042150 10000018 */ b .L7F0421B4 +/* 076C84 7F042154 AFAA00A4 */ sw $t2, 0xa4($sp) +.L7F042158: +/* 076C88 7F042158 24010006 */ li $at, 6 +.L7F04215C: +/* 076C8C 7F04215C 54410016 */ bnel $v0, $at, .L7F0421B8 +/* 076C90 7F042160 86620002 */ lh $v0, 2($s3) +/* 076C94 7F042164 0FC26C57 */ jal sub_GAME_7F09B15C +/* 076C98 7F042168 02002025 */ move $a0, $s0 +/* 076C9C 7F04216C 00025880 */ sll $t3, $v0, 2 +/* 076CA0 7F042170 3C0C8008 */ lui $t4, %hi(ptr_BONDdata_p1) +/* 076CA4 7F042174 018B6021 */ addu $t4, $t4, $t3 +/* 076CA8 7F042178 8D8C9EE0 */ lw $t4, %lo(ptr_BONDdata_p1)($t4) +/* 076CAC 7F04217C 02002025 */ move $a0, $s0 +/* 076CB0 7F042180 02802825 */ move $a1, $s4 +/* 076CB4 7F042184 8D8D00AC */ lw $t5, 0xac($t4) +/* 076CB8 7F042188 8FA600C0 */ lw $a2, 0xc0($sp) +/* 076CBC 7F04218C 02E03825 */ move $a3, $s7 +/* 076CC0 7F042190 51A00009 */ beql $t5, $zero, .L7F0421B8 +/* 076CC4 7F042194 86620002 */ lh $v0, 2($s3) +/* 076CC8 7F042198 AFB50010 */ sw $s5, 0x10($sp) +/* 076CCC 7F04219C AFB60014 */ sw $s6, 0x14($sp) +/* 076CD0 7F0421A0 0FC10500 */ jal sub_GAME_7F041400 +/* 076CD4 7F0421A4 AFBE0018 */ sw $fp, 0x18($sp) +/* 076CD8 7F0421A8 10400002 */ beqz $v0, .L7F0421B4 +/* 076CDC 7F0421AC 240E0001 */ li $t6, 1 +/* 076CE0 7F0421B0 AFAE00A4 */ sw $t6, 0xa4($sp) +.L7F0421B4: +/* 076CE4 7F0421B4 86620002 */ lh $v0, 2($s3) +.L7F0421B8: +/* 076CE8 7F0421B8 26730002 */ addiu $s3, $s3, 2 +/* 076CEC 7F0421BC 0443FF74 */ bgezl $v0, .L7F041F90 +/* 076CF0 7F0421C0 00027080 */ sll $t6, $v0, 2 +.L7F0421C4: +/* 076CF4 7F0421C4 8FAF00A4 */ lw $t7, 0xa4($sp) +/* 076CF8 7F0421C8 3C028007 */ lui $v0, %hi(flt_CODE_bss_80075B78) +/* 076CFC 7F0421CC 24425B78 */ addiu $v0, %lo(flt_CODE_bss_80075B78) # addiu $v0, $v0, 0x5b78 +/* 076D00 7F0421D0 11E00010 */ beqz $t7, .L7F042214 +/* 076D04 7F0421D4 3C038007 */ lui $v1, %hi(flt_CODE_bss_80075B88) +/* 076D08 7F0421D8 C7A40098 */ lwc1 $f4, 0x98($sp) +/* 076D0C 7F0421DC C7A8009C */ lwc1 $f8, 0x9c($sp) +/* 076D10 7F0421E0 C7AA00A0 */ lwc1 $f10, 0xa0($sp) +/* 076D14 7F0421E4 C7A6007C */ lwc1 $f6, 0x7c($sp) +/* 076D18 7F0421E8 C7B20080 */ lwc1 $f18, 0x80($sp) +/* 076D1C 7F0421EC C7B00084 */ lwc1 $f16, 0x84($sp) +/* 076D20 7F0421F0 24635B88 */ addiu $v1, %lo(flt_CODE_bss_80075B88) # addiu $v1, $v1, 0x5b88 +/* 076D24 7F0421F4 24180001 */ li $t8, 1 +/* 076D28 7F0421F8 AFB800B4 */ sw $t8, 0xb4($sp) +/* 076D2C 7F0421FC E4440000 */ swc1 $f4, ($v0) +/* 076D30 7F042200 E4480004 */ swc1 $f8, 4($v0) +/* 076D34 7F042204 E44A0008 */ swc1 $f10, 8($v0) +/* 076D38 7F042208 E4660000 */ swc1 $f6, ($v1) +/* 076D3C 7F04220C E4720004 */ swc1 $f18, 4($v1) +/* 076D40 7F042210 E4700008 */ swc1 $f16, 8($v1) +.L7F042214: +/* 076D44 7F042214 8FA200B4 */ lw $v0, 0xb4($sp) +.L7F042218: +/* 076D48 7F042218 8FBF005C */ lw $ra, 0x5c($sp) +/* 076D4C 7F04221C D7B40030 */ ldc1 $f20, 0x30($sp) +/* 076D50 7F042220 8FB00038 */ lw $s0, 0x38($sp) +/* 076D54 7F042224 8FB1003C */ lw $s1, 0x3c($sp) +/* 076D58 7F042228 8FB20040 */ lw $s2, 0x40($sp) +/* 076D5C 7F04222C 8FB30044 */ lw $s3, 0x44($sp) +/* 076D60 7F042230 8FB40048 */ lw $s4, 0x48($sp) +/* 076D64 7F042234 8FB5004C */ lw $s5, 0x4c($sp) +/* 076D68 7F042238 8FB60050 */ lw $s6, 0x50($sp) +/* 076D6C 7F04223C 8FB70054 */ lw $s7, 0x54($sp) +/* 076D70 7F042240 8FBE0058 */ lw $fp, 0x58($sp) +/* 076D74 7F042244 03E00008 */ jr $ra +/* 076D78 7F042248 27BD00B8 */ addiu $sp, $sp, 0xb8 +) +#endif + + + + + +#ifdef NONMATCHING +void handles_projectile_motion(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052A58 +.word 0x3dcccccd /*0.1*/ +.text +glabel handles_projectile_motion +/* 076D7C 7F04224C 27BDFD50 */ addiu $sp, $sp, -0x2b0 +/* 076D80 7F042250 AFBF003C */ sw $ra, 0x3c($sp) +/* 076D84 7F042254 AFB30038 */ sw $s3, 0x38($sp) +/* 076D88 7F042258 AFB20034 */ sw $s2, 0x34($sp) +/* 076D8C 7F04225C AFB10030 */ sw $s1, 0x30($sp) +/* 076D90 7F042260 AFB0002C */ sw $s0, 0x2c($sp) +/* 076D94 7F042264 F7B40020 */ sdc1 $f20, 0x20($sp) +/* 076D98 7F042268 8C820010 */ lw $v0, 0x10($a0) +/* 076D9C 7F04226C 240F0001 */ li $t7, 1 +/* 076DA0 7F042270 3C018003 */ lui $at, %hi(D_80030B0C) +/* 076DA4 7F042274 8C4E0014 */ lw $t6, 0x14($v0) +/* 076DA8 7F042278 AFAF02A4 */ sw $t7, 0x2a4($sp) +/* 076DAC 7F04227C AC200B0C */ sw $zero, %lo(D_80030B0C)($at) +/* 076DB0 7F042280 AFAE02A8 */ sw $t6, 0x2a8($sp) +/* 076DB4 7F042284 C4840058 */ lwc1 $f4, 0x58($a0) +/* 076DB8 7F042288 C4A00000 */ lwc1 $f0, ($a1) +/* 076DBC 7F04228C 00E08025 */ move $s0, $a3 +/* 076DC0 7F042290 00A08825 */ move $s1, $a1 +/* 076DC4 7F042294 46040032 */ c.eq.s $f0, $f4 +/* 076DC8 7F042298 00809025 */ move $s2, $a0 +/* 076DCC 7F04229C 00C09825 */ move $s3, $a2 +/* 076DD0 7F0422A0 4502000E */ bc1fl .L7F0422DC +/* 076DD4 7F0422A4 E7A00268 */ swc1 $f0, 0x268($sp) +/* 076DD8 7F0422A8 C4A60004 */ lwc1 $f6, 4($a1) +/* 076DDC 7F0422AC C488005C */ lwc1 $f8, 0x5c($a0) +/* 076DE0 7F0422B0 46083032 */ c.eq.s $f6, $f8 +/* 076DE4 7F0422B4 00000000 */ nop +/* 076DE8 7F0422B8 45020008 */ bc1fl .L7F0422DC +/* 076DEC 7F0422BC E7A00268 */ swc1 $f0, 0x268($sp) +/* 076DF0 7F0422C0 C4AA0008 */ lwc1 $f10, 8($a1) +/* 076DF4 7F0422C4 C4900060 */ lwc1 $f16, 0x60($a0) +/* 076DF8 7F0422C8 46105032 */ c.eq.s $f10, $f16 +/* 076DFC 7F0422CC 00000000 */ nop +/* 076E00 7F0422D0 450301C6 */ bc1tl .L7F0429EC +/* 076E04 7F0422D4 8FBF003C */ lw $ra, 0x3c($sp) +/* 076E08 7F0422D8 E7A00268 */ swc1 $f0, 0x268($sp) +.L7F0422DC: +/* 076E0C 7F0422DC C6320004 */ lwc1 $f18, 4($s1) +/* 076E10 7F0422E0 E7B2026C */ swc1 $f18, 0x26c($sp) +/* 076E14 7F0422E4 C6240008 */ lwc1 $f4, 8($s1) +/* 076E18 7F0422E8 E7A40270 */ swc1 $f4, 0x270($sp) +/* 076E1C 7F0422EC 8E580064 */ lw $t8, 0x64($s2) +/* 076E20 7F0422F0 33190080 */ andi $t9, $t8, 0x80 +/* 076E24 7F0422F4 532001BD */ beql $t9, $zero, .L7F0429EC +/* 076E28 7F0422F8 8FBF003C */ lw $ra, 0x3c($sp) +/* 076E2C 7F0422FC 8E49006C */ lw $t1, 0x6c($s2) +/* 076E30 7F042300 26440058 */ addiu $a0, $s2, 0x58 +/* 076E34 7F042304 27A50268 */ addiu $a1, $sp, 0x268 +/* 076E38 7F042308 8D2A0000 */ lw $t2, ($t1) +/* 076E3C 7F04230C 27A70074 */ addiu $a3, $sp, 0x74 +/* 076E40 7F042310 27AC007C */ addiu $t4, $sp, 0x7c +/* 076E44 7F042314 314B0004 */ andi $t3, $t2, 4 +/* 076E48 7F042318 116001B3 */ beqz $t3, .L7F0429E8 +/* 076E4C 7F04231C 27AD0260 */ addiu $t5, $sp, 0x260 +/* 076E50 7F042320 AFA00260 */ sw $zero, 0x260($sp) +/* 076E54 7F042324 8E46006C */ lw $a2, 0x6c($s2) +/* 076E58 7F042328 240E0014 */ li $t6, 20 +/* 076E5C 7F04232C AFAE0018 */ sw $t6, 0x18($sp) +/* 076E60 7F042330 AFB102B4 */ sw $s1, 0x2b4($sp) +/* 076E64 7F042334 AFA40048 */ sw $a0, 0x48($sp) +/* 076E68 7F042338 AFA202AC */ sw $v0, 0x2ac($sp) +/* 076E6C 7F04233C AFAD0014 */ sw $t5, 0x14($sp) +/* 076E70 7F042340 AFAC0010 */ sw $t4, 0x10($sp) +/* 076E74 7F042344 0FC2D2AD */ jal sub_GAME_7F0B4AB4 +/* 076E78 7F042348 24C600CC */ addiu $a2, $a2, 0xcc +/* 076E7C 7F04234C 8FA30260 */ lw $v1, 0x260($sp) +/* 076E80 7F042350 27B8007C */ addiu $t8, $sp, 0x7c +/* 076E84 7F042354 24050064 */ li $a1, 100 +/* 076E88 7F042358 28610015 */ slti $at, $v1, 0x15 +/* 076E8C 7F04235C 54200003 */ bnezl $at, .L7F04236C +/* 076E90 7F042360 00037880 */ sll $t7, $v1, 2 +/* 076E94 7F042364 24030014 */ li $v1, 20 +/* 076E98 7F042368 00037880 */ sll $t7, $v1, 2 +.L7F04236C: +/* 076E9C 7F04236C 01F82021 */ addu $a0, $t7, $t8 +/* 076EA0 7F042370 0FC2E3A6 */ jal sub_GAME_7F0B8E98 +/* 076EA4 7F042374 AFA30260 */ sw $v1, 0x260($sp) +/* 076EA8 7F042378 8FA30260 */ lw $v1, 0x260($sp) +/* 076EAC 7F04237C 2419FFFF */ li $t9, -1 +/* 076EB0 7F042380 27B1007C */ addiu $s1, $sp, 0x7c +/* 076EB4 7F042384 00621821 */ addu $v1, $v1, $v0 +/* 076EB8 7F042388 00034880 */ sll $t1, $v1, 2 +/* 076EBC 7F04238C 03A95021 */ addu $t2, $sp, $t1 +/* 076EC0 7F042390 AD59007C */ sw $t9, 0x7c($t2) +/* 076EC4 7F042394 8FAB007C */ lw $t3, 0x7c($sp) +/* 076EC8 7F042398 AFA30260 */ sw $v1, 0x260($sp) +/* 076ECC 7F04239C 0562009E */ bltzl $t3, .L7F042618 +/* 076ED0 7F0423A0 8FAD02A4 */ lw $t5, 0x2a4($sp) +/* 076ED4 7F0423A4 4480A000 */ mtc1 $zero, $f20 +/* 076ED8 7F0423A8 8E260000 */ lw $a2, ($s1) +/* 076EDC 7F0423AC 8FA40048 */ lw $a0, 0x48($sp) +.L7F0423B0: +/* 076EE0 7F0423B0 27A50268 */ addiu $a1, $sp, 0x268 +/* 076EE4 7F0423B4 0FC2DE9E */ jal sub_GAME_7F0B7A78 +/* 076EE8 7F0423B8 27A70274 */ addiu $a3, $sp, 0x274 +/* 076EEC 7F0423BC 50400092 */ beql $v0, $zero, .L7F042608 +/* 076EF0 7F0423C0 8E260004 */ lw $a2, 4($s1) +/* 076EF4 7F0423C4 0FC2D20C */ jal get_room_data_float2 +/* 076EF8 7F0423C8 00000000 */ nop +/* 076EFC 7F0423CC C7A60274 */ lwc1 $f6, 0x274($sp) +/* 076F00 7F0423D0 C7AA0278 */ lwc1 $f10, 0x278($sp) +/* 076F04 7F0423D4 C7B2027C */ lwc1 $f18, 0x27c($sp) +/* 076F08 7F0423D8 46003202 */ mul.s $f8, $f6, $f0 +/* 076F0C 7F0423DC C7A60268 */ lwc1 $f6, 0x268($sp) +/* 076F10 7F0423E0 46005402 */ mul.s $f16, $f10, $f0 +/* 076F14 7F0423E4 C7AA0268 */ lwc1 $f10, 0x268($sp) +/* 076F18 7F0423E8 46009102 */ mul.s $f4, $f18, $f0 +/* 076F1C 7F0423EC E7A80274 */ swc1 $f8, 0x274($sp) +/* 076F20 7F0423F0 E7B00278 */ swc1 $f16, 0x278($sp) +/* 076F24 7F0423F4 E7A4027C */ swc1 $f4, 0x27c($sp) +/* 076F28 7F0423F8 C64C0058 */ lwc1 $f12, 0x58($s2) +/* 076F2C 7F0423FC 4606603E */ c.le.s $f12, $f6 +/* 076F30 7F042400 00000000 */ nop +/* 076F34 7F042404 4502000A */ bc1fl .L7F042430 +/* 076F38 7F042408 460C503E */ c.le.s $f10, $f12 +/* 076F3C 7F04240C 4606403E */ c.le.s $f8, $f6 +/* 076F40 7F042410 00000000 */ nop +/* 076F44 7F042414 45020006 */ bc1fl .L7F042430 +/* 076F48 7F042418 460C503E */ c.le.s $f10, $f12 +/* 076F4C 7F04241C 4608603E */ c.le.s $f12, $f8 +/* 076F50 7F042420 00000000 */ nop +/* 076F54 7F042424 4503000E */ bc1tl .L7F042460 +/* 076F58 7F042428 C642005C */ lwc1 $f2, 0x5c($s2) +/* 076F5C 7F04242C 460C503E */ c.le.s $f10, $f12 +.L7F042430: +/* 076F60 7F042430 C7B00274 */ lwc1 $f16, 0x274($sp) +/* 076F64 7F042434 45020074 */ bc1fl .L7F042608 +/* 076F68 7F042438 8E260004 */ lw $a2, 4($s1) +/* 076F6C 7F04243C 4610503E */ c.le.s $f10, $f16 +/* 076F70 7F042440 00000000 */ nop +/* 076F74 7F042444 45020070 */ bc1fl .L7F042608 +/* 076F78 7F042448 8E260004 */ lw $a2, 4($s1) +/* 076F7C 7F04244C 460C803E */ c.le.s $f16, $f12 +/* 076F80 7F042450 00000000 */ nop +/* 076F84 7F042454 4502006C */ bc1fl .L7F042608 +/* 076F88 7F042458 8E260004 */ lw $a2, 4($s1) +/* 076F8C 7F04245C C642005C */ lwc1 $f2, 0x5c($s2) +.L7F042460: +/* 076F90 7F042460 C7B2026C */ lwc1 $f18, 0x26c($sp) +/* 076F94 7F042464 C7A40278 */ lwc1 $f4, 0x278($sp) +/* 076F98 7F042468 C7A6026C */ lwc1 $f6, 0x26c($sp) +/* 076F9C 7F04246C 4612103E */ c.le.s $f2, $f18 +/* 076FA0 7F042470 00000000 */ nop +/* 076FA4 7F042474 4502000A */ bc1fl .L7F0424A0 +/* 076FA8 7F042478 4602303E */ c.le.s $f6, $f2 +/* 076FAC 7F04247C 4612203E */ c.le.s $f4, $f18 +/* 076FB0 7F042480 00000000 */ nop +/* 076FB4 7F042484 45020006 */ bc1fl .L7F0424A0 +/* 076FB8 7F042488 4602303E */ c.le.s $f6, $f2 +/* 076FBC 7F04248C 4604103E */ c.le.s $f2, $f4 +/* 076FC0 7F042490 00000000 */ nop +/* 076FC4 7F042494 4503000E */ bc1tl .L7F0424D0 +/* 076FC8 7F042498 C6400060 */ lwc1 $f0, 0x60($s2) +/* 076FCC 7F04249C 4602303E */ c.le.s $f6, $f2 +.L7F0424A0: +/* 076FD0 7F0424A0 C7A80278 */ lwc1 $f8, 0x278($sp) +/* 076FD4 7F0424A4 45020058 */ bc1fl .L7F042608 +/* 076FD8 7F0424A8 8E260004 */ lw $a2, 4($s1) +/* 076FDC 7F0424AC 4608303E */ c.le.s $f6, $f8 +/* 076FE0 7F0424B0 00000000 */ nop +/* 076FE4 7F0424B4 45020054 */ bc1fl .L7F042608 +/* 076FE8 7F0424B8 8E260004 */ lw $a2, 4($s1) +/* 076FEC 7F0424BC 4602403E */ c.le.s $f8, $f2 +/* 076FF0 7F0424C0 00000000 */ nop +/* 076FF4 7F0424C4 45020050 */ bc1fl .L7F042608 +/* 076FF8 7F0424C8 8E260004 */ lw $a2, 4($s1) +/* 076FFC 7F0424CC C6400060 */ lwc1 $f0, 0x60($s2) +.L7F0424D0: +/* 077000 7F0424D0 C7AA0270 */ lwc1 $f10, 0x270($sp) +/* 077004 7F0424D4 C7B0027C */ lwc1 $f16, 0x27c($sp) +/* 077008 7F0424D8 C7B20270 */ lwc1 $f18, 0x270($sp) +/* 07700C 7F0424DC 460A003E */ c.le.s $f0, $f10 +/* 077010 7F0424E0 00000000 */ nop +/* 077014 7F0424E4 4502000A */ bc1fl .L7F042510 +/* 077018 7F0424E8 4600903E */ c.le.s $f18, $f0 +/* 07701C 7F0424EC 460A803E */ c.le.s $f16, $f10 +/* 077020 7F0424F0 00000000 */ nop +/* 077024 7F0424F4 45020006 */ bc1fl .L7F042510 +/* 077028 7F0424F8 4600903E */ c.le.s $f18, $f0 +/* 07702C 7F0424FC 4610003E */ c.le.s $f0, $f16 +/* 077030 7F042500 00000000 */ nop +/* 077034 7F042504 4503000E */ bc1tl .L7F042540 +/* 077038 7F042508 C7A60274 */ lwc1 $f6, 0x274($sp) +/* 07703C 7F04250C 4600903E */ c.le.s $f18, $f0 +.L7F042510: +/* 077040 7F042510 C7A4027C */ lwc1 $f4, 0x27c($sp) +/* 077044 7F042514 4502003C */ bc1fl .L7F042608 +/* 077048 7F042518 8E260004 */ lw $a2, 4($s1) +/* 07704C 7F04251C 4604903E */ c.le.s $f18, $f4 +/* 077050 7F042520 00000000 */ nop +/* 077054 7F042524 45020038 */ bc1fl .L7F042608 +/* 077058 7F042528 8E260004 */ lw $a2, 4($s1) +/* 07705C 7F04252C 4600203E */ c.le.s $f4, $f0 +/* 077060 7F042530 00000000 */ nop +/* 077064 7F042534 45020034 */ bc1fl .L7F042608 +/* 077068 7F042538 8E260004 */ lw $a2, 4($s1) +/* 07706C 7F04253C C7A60274 */ lwc1 $f6, 0x274($sp) +.L7F042540: +/* 077070 7F042540 C7A80278 */ lwc1 $f8, 0x278($sp) +/* 077074 7F042544 46066032 */ c.eq.s $f12, $f6 +/* 077078 7F042548 00000000 */ nop +/* 07707C 7F04254C 4502000A */ bc1fl .L7F042578 +/* 077080 7F042550 C7B00274 */ lwc1 $f16, 0x274($sp) +/* 077084 7F042554 46081032 */ c.eq.s $f2, $f8 +/* 077088 7F042558 C7AA027C */ lwc1 $f10, 0x27c($sp) +/* 07708C 7F04255C 45020006 */ bc1fl .L7F042578 +/* 077090 7F042560 C7B00274 */ lwc1 $f16, 0x274($sp) +/* 077094 7F042564 460A0032 */ c.eq.s $f0, $f10 +/* 077098 7F042568 00000000 */ nop +/* 07709C 7F04256C 45030026 */ bc1tl .L7F042608 +/* 0770A0 7F042570 8E260004 */ lw $a2, 4($s1) +/* 0770A4 7F042574 C7B00274 */ lwc1 $f16, 0x274($sp) +.L7F042578: +/* 0770A8 7F042578 AFA002A4 */ sw $zero, 0x2a4($sp) +/* 0770AC 7F04257C 02002025 */ move $a0, $s0 +/* 0770B0 7F042580 E6700000 */ swc1 $f16, ($s3) +/* 0770B4 7F042584 C7B20278 */ lwc1 $f18, 0x278($sp) +/* 0770B8 7F042588 26050004 */ addiu $a1, $s0, 4 +/* 0770BC 7F04258C E6720004 */ swc1 $f18, 4($s3) +/* 0770C0 7F042590 C7A4027C */ lwc1 $f4, 0x27c($sp) +/* 0770C4 7F042594 E6640008 */ swc1 $f4, 8($s3) +/* 0770C8 7F042598 C7A60280 */ lwc1 $f6, 0x280($sp) +/* 0770CC 7F04259C E6060000 */ swc1 $f6, ($s0) +/* 0770D0 7F0425A0 C6100000 */ lwc1 $f16, ($s0) +/* 0770D4 7F0425A4 C7A80284 */ lwc1 $f8, 0x284($sp) +/* 0770D8 7F0425A8 4610A032 */ c.eq.s $f20, $f16 +/* 0770DC 7F0425AC E6080004 */ swc1 $f8, 4($s0) +/* 0770E0 7F0425B0 C7AA0288 */ lwc1 $f10, 0x288($sp) +/* 0770E4 7F0425B4 4500000C */ bc1f .L7F0425E8 +/* 0770E8 7F0425B8 E60A0008 */ swc1 $f10, 8($s0) +/* 0770EC 7F0425BC C6120004 */ lwc1 $f18, 4($s0) +/* 0770F0 7F0425C0 4612A032 */ c.eq.s $f20, $f18 +/* 0770F4 7F0425C4 00000000 */ nop +/* 0770F8 7F0425C8 45000007 */ bc1f .L7F0425E8 +/* 0770FC 7F0425CC 00000000 */ nop +/* 077100 7F0425D0 C6040008 */ lwc1 $f4, 8($s0) +/* 077104 7F0425D4 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 077108 7F0425D8 4604A032 */ c.eq.s $f20, $f4 +/* 07710C 7F0425DC 00000000 */ nop +/* 077110 7F0425E0 45030006 */ bc1tl .L7F0425FC +/* 077114 7F0425E4 44813000 */ mtc1 $at, $f6 +.L7F0425E8: +/* 077118 7F0425E8 0C007DD4 */ jal guNormalize +/* 07711C 7F0425EC 26060008 */ addiu $a2, $s0, 8 +/* 077120 7F0425F0 10000005 */ b .L7F042608 +/* 077124 7F0425F4 8E260004 */ lw $a2, 4($s1) +/* 077128 7F0425F8 44813000 */ mtc1 $at, $f6 +.L7F0425FC: +/* 07712C 7F0425FC 00000000 */ nop +/* 077130 7F042600 E6060008 */ swc1 $f6, 8($s0) +/* 077134 7F042604 8E260004 */ lw $a2, 4($s1) +.L7F042608: +/* 077138 7F042608 26310004 */ addiu $s1, $s1, 4 +/* 07713C 7F04260C 04C3FF68 */ bgezl $a2, .L7F0423B0 +/* 077140 7F042610 8FA40048 */ lw $a0, 0x48($sp) +/* 077144 7F042614 8FAD02A4 */ lw $t5, 0x2a4($sp) +.L7F042618: +/* 077148 7F042618 8FA202B4 */ lw $v0, 0x2b4($sp) +/* 07714C 7F04261C 55A00037 */ bnezl $t5, .L7F0426FC +/* 077150 7F042620 27AE007C */ addiu $t6, $sp, 0x7c +/* 077154 7F042624 C4480000 */ lwc1 $f8, ($v0) +/* 077158 7F042628 C64A0058 */ lwc1 $f10, 0x58($s2) +/* 07715C 7F04262C 460A4401 */ sub.s $f16, $f8, $f10 +/* 077160 7F042630 E7B00064 */ swc1 $f16, 0x64($sp) +/* 077164 7F042634 C644005C */ lwc1 $f4, 0x5c($s2) +/* 077168 7F042638 C4520004 */ lwc1 $f18, 4($v0) +/* 07716C 7F04263C 46049181 */ sub.s $f6, $f18, $f4 +/* 077170 7F042640 C7B20064 */ lwc1 $f18, 0x64($sp) +/* 077174 7F042644 E7A60068 */ swc1 $f6, 0x68($sp) +/* 077178 7F042648 C64A0060 */ lwc1 $f10, 0x60($s2) +/* 07717C 7F04264C C4480008 */ lwc1 $f8, 8($v0) +/* 077180 7F042650 46129102 */ mul.s $f4, $f18, $f18 +/* 077184 7F042654 C7A60068 */ lwc1 $f6, 0x68($sp) +/* 077188 7F042658 460A4401 */ sub.s $f16, $f8, $f10 +/* 07718C 7F04265C 46063202 */ mul.s $f8, $f6, $f6 +/* 077190 7F042660 E7B0006C */ swc1 $f16, 0x6c($sp) +/* 077194 7F042664 C7B0006C */ lwc1 $f16, 0x6c($sp) +/* 077198 7F042668 46108482 */ mul.s $f18, $f16, $f16 +/* 07719C 7F04266C 46082280 */ add.s $f10, $f4, $f8 +/* 0771A0 7F042670 0C007DF8 */ jal sqrtf +/* 0771A4 7F042674 460A9300 */ add.s $f12, $f18, $f10 +/* 0771A8 7F042678 3C018005 */ lui $at, %hi(D_80052A58) # -0.000000 +/* 0771AC 7F04267C C42C2A58 */ lwc1 $f12, %lo(D_80052A58)($at) +/* 0771B0 7F042680 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 0771B4 7F042684 C7A40064 */ lwc1 $f4, 0x64($sp) +/* 0771B8 7F042688 4600603C */ c.lt.s $f12, $f0 +/* 0771BC 7F04268C 00000000 */ nop +/* 0771C0 7F042690 45020004 */ bc1fl .L7F0426A4 +/* 0771C4 7F042694 44811000 */ mtc1 $at, $f2 +/* 0771C8 7F042698 10000003 */ b .L7F0426A8 +/* 0771CC 7F04269C 46006083 */ div.s $f2, $f12, $f0 +/* 0771D0 7F0426A0 44811000 */ mtc1 $at, $f2 +.L7F0426A4: +/* 0771D4 7F0426A4 00000000 */ nop +.L7F0426A8: +/* 0771D8 7F0426A8 46041202 */ mul.s $f8, $f2, $f4 +/* 0771DC 7F0426AC C6660000 */ lwc1 $f6, ($s3) +/* 0771E0 7F0426B0 C6720004 */ lwc1 $f18, 4($s3) +/* 0771E4 7F0426B4 46083401 */ sub.s $f16, $f6, $f8 +/* 0771E8 7F0426B8 C6680008 */ lwc1 $f8, 8($s3) +/* 0771EC 7F0426BC E6700000 */ swc1 $f16, ($s3) +/* 0771F0 7F0426C0 C7AA0068 */ lwc1 $f10, 0x68($sp) +/* 0771F4 7F0426C4 460A1102 */ mul.s $f4, $f2, $f10 +/* 0771F8 7F0426C8 46049181 */ sub.s $f6, $f18, $f4 +/* 0771FC 7F0426CC C6640000 */ lwc1 $f4, ($s3) +/* 077200 7F0426D0 E6660004 */ swc1 $f6, 4($s3) +/* 077204 7F0426D4 C7B0006C */ lwc1 $f16, 0x6c($sp) +/* 077208 7F0426D8 46101282 */ mul.s $f10, $f2, $f16 +/* 07720C 7F0426DC 460A4481 */ sub.s $f18, $f8, $f10 +/* 077210 7F0426E0 E6720008 */ swc1 $f18, 8($s3) +/* 077214 7F0426E4 E7A40268 */ swc1 $f4, 0x268($sp) +/* 077218 7F0426E8 C6660004 */ lwc1 $f6, 4($s3) +/* 07721C 7F0426EC E7A6026C */ swc1 $f6, 0x26c($sp) +/* 077220 7F0426F0 C6700008 */ lwc1 $f16, 8($s3) +/* 077224 7F0426F4 E7B00270 */ swc1 $f16, 0x270($sp) +/* 077228 7F0426F8 27AE007C */ addiu $t6, $sp, 0x7c +.L7F0426FC: +/* 07722C 7F0426FC AFAE0018 */ sw $t6, 0x18($sp) +/* 077230 7F042700 8FA402AC */ lw $a0, 0x2ac($sp) +/* 077234 7F042704 8FA50048 */ lw $a1, 0x48($sp) +/* 077238 7F042708 27A60268 */ addiu $a2, $sp, 0x268 +/* 07723C 7F04270C 2407001F */ li $a3, 31 +/* 077240 7F042710 AFB30010 */ sw $s3, 0x10($sp) +/* 077244 7F042714 0FC10783 */ jal sub_GAME_7F041E0C +/* 077248 7F042718 AFB00014 */ sw $s0, 0x14($sp) +/* 07724C 7F04271C 14400036 */ bnez $v0, .L7F0427F8 +/* 077250 7F042720 8FAB02C4 */ lw $t3, 0x2c4($sp) +/* 077254 7F042724 8FAF02A4 */ lw $t7, 0x2a4($sp) +/* 077258 7F042728 8FB802C0 */ lw $t8, 0x2c0($sp) +/* 07725C 7F04272C 8FAD02A4 */ lw $t5, 0x2a4($sp) +/* 077260 7F042730 55E00016 */ bnezl $t7, .L7F04278C +/* 077264 7F042734 24100001 */ li $s0, 1 +/* 077268 7F042738 53000014 */ beql $t8, $zero, .L7F04278C +/* 07726C 7F04273C 24100001 */ li $s0, 1 +/* 077270 7F042740 8FA902C4 */ lw $t1, 0x2c4($sp) +/* 077274 7F042744 24190002 */ li $t9, 2 +/* 077278 7F042748 AFB902A4 */ sw $t9, 0x2a4($sp) +/* 07727C 7F04274C 1520000C */ bnez $t1, .L7F042780 +/* 077280 7F042750 8FA40048 */ lw $a0, 0x48($sp) +/* 077284 7F042754 8E46006C */ lw $a2, 0x6c($s2) +/* 077288 7F042758 27AA007C */ addiu $t2, $sp, 0x7c +/* 07728C 7F04275C 27AB0260 */ addiu $t3, $sp, 0x260 +/* 077290 7F042760 240C0014 */ li $t4, 20 +/* 077294 7F042764 AFAC0018 */ sw $t4, 0x18($sp) +/* 077298 7F042768 AFAB0014 */ sw $t3, 0x14($sp) +/* 07729C 7F04276C AFAA0010 */ sw $t2, 0x10($sp) +/* 0772A0 7F042770 02602825 */ move $a1, $s3 +/* 0772A4 7F042774 27A70074 */ addiu $a3, $sp, 0x74 +/* 0772A8 7F042778 0FC2D2AD */ jal sub_GAME_7F0B4AB4 +/* 0772AC 7F04277C 24C600CC */ addiu $a2, $a2, 0xcc +.L7F042780: +/* 0772B0 7F042780 1000003A */ b .L7F04286C +/* 0772B4 7F042784 8FA902A4 */ lw $t1, 0x2a4($sp) +/* 0772B8 7F042788 24100001 */ li $s0, 1 +.L7F04278C: +/* 0772BC 7F04278C 11B00003 */ beq $t5, $s0, .L7F04279C +/* 0772C0 7F042790 8FAE02C4 */ lw $t6, 0x2c4($sp) +/* 0772C4 7F042794 55C00035 */ bnezl $t6, .L7F04286C +/* 0772C8 7F042798 8FA902A4 */ lw $t1, 0x2a4($sp) +.L7F04279C: +/* 0772CC 7F04279C 8FAF02A4 */ lw $t7, 0x2a4($sp) +/* 0772D0 7F0427A0 8FA40048 */ lw $a0, 0x48($sp) +/* 0772D4 7F0427A4 27A50268 */ addiu $a1, $sp, 0x268 +/* 0772D8 7F0427A8 11F0000A */ beq $t7, $s0, .L7F0427D4 +/* 0772DC 7F0427AC 27A70074 */ addiu $a3, $sp, 0x74 +/* 0772E0 7F0427B0 8E46006C */ lw $a2, 0x6c($s2) +/* 0772E4 7F0427B4 27B8007C */ addiu $t8, $sp, 0x7c +/* 0772E8 7F0427B8 27B90260 */ addiu $t9, $sp, 0x260 +/* 0772EC 7F0427BC 24090014 */ li $t1, 20 +/* 0772F0 7F0427C0 AFA90018 */ sw $t1, 0x18($sp) +/* 0772F4 7F0427C4 AFB90014 */ sw $t9, 0x14($sp) +/* 0772F8 7F0427C8 AFB80010 */ sw $t8, 0x10($sp) +/* 0772FC 7F0427CC 0FC2D2AD */ jal sub_GAME_7F0B4AB4 +/* 077300 7F0427D0 24C600CC */ addiu $a2, $a2, 0xcc +.L7F0427D4: +/* 077304 7F0427D4 C7A80268 */ lwc1 $f8, 0x268($sp) +/* 077308 7F0427D8 E6480058 */ swc1 $f8, 0x58($s2) +/* 07730C 7F0427DC C7AA0270 */ lwc1 $f10, 0x270($sp) +/* 077310 7F0427E0 E64A0060 */ swc1 $f10, 0x60($s2) +/* 077314 7F0427E4 8FAA02AC */ lw $t2, 0x2ac($sp) +/* 077318 7F0427E8 C7A0026C */ lwc1 $f0, 0x26c($sp) +/* 07731C 7F0427EC E540000C */ swc1 $f0, 0xc($t2) +/* 077320 7F0427F0 1000001D */ b .L7F042868 +/* 077324 7F0427F4 E640005C */ swc1 $f0, 0x5c($s2) +.L7F0427F8: +/* 077328 7F0427F8 1560001B */ bnez $t3, .L7F042868 +/* 07732C 7F0427FC 27A50268 */ addiu $a1, $sp, 0x268 +/* 077330 7F042800 C6520058 */ lwc1 $f18, 0x58($s2) +/* 077334 7F042804 27AC007C */ addiu $t4, $sp, 0x7c +/* 077338 7F042808 27AD0260 */ addiu $t5, $sp, 0x260 +/* 07733C 7F04280C E7B20268 */ swc1 $f18, 0x268($sp) +/* 077340 7F042810 C6440060 */ lwc1 $f4, 0x60($s2) +/* 077344 7F042814 240E0014 */ li $t6, 20 +/* 077348 7F042818 8FA40048 */ lw $a0, 0x48($sp) +/* 07734C 7F04281C E7A40270 */ swc1 $f4, 0x270($sp) +/* 077350 7F042820 8E46006C */ lw $a2, 0x6c($s2) +/* 077354 7F042824 AFAE0018 */ sw $t6, 0x18($sp) +/* 077358 7F042828 AFAD0014 */ sw $t5, 0x14($sp) +/* 07735C 7F04282C AFAC0010 */ sw $t4, 0x10($sp) +/* 077360 7F042830 27A70074 */ addiu $a3, $sp, 0x74 +/* 077364 7F042834 0FC2D2AD */ jal sub_GAME_7F0B4AB4 +/* 077368 7F042838 24C600CC */ addiu $a2, $a2, 0xcc +/* 07736C 7F04283C C7A0026C */ lwc1 $f0, 0x26c($sp) +/* 077370 7F042840 8FAF02AC */ lw $t7, 0x2ac($sp) +/* 077374 7F042844 24190002 */ li $t9, 2 +/* 077378 7F042848 E5E0000C */ swc1 $f0, 0xc($t7) +/* 07737C 7F04284C E640005C */ swc1 $f0, 0x5c($s2) +/* 077380 7F042850 8FB802C0 */ lw $t8, 0x2c0($sp) +/* 077384 7F042854 53000004 */ beql $t8, $zero, .L7F042868 +/* 077388 7F042858 AFA002A4 */ sw $zero, 0x2a4($sp) +/* 07738C 7F04285C 10000002 */ b .L7F042868 +/* 077390 7F042860 AFB902A4 */ sw $t9, 0x2a4($sp) +/* 077394 7F042864 AFA002A4 */ sw $zero, 0x2a4($sp) +.L7F042868: +/* 077398 7F042868 8FA902A4 */ lw $t1, 0x2a4($sp) +.L7F04286C: +/* 07739C 7F04286C 24100001 */ li $s0, 1 +/* 0773A0 7F042870 8FAA02C4 */ lw $t2, 0x2c4($sp) +/* 0773A4 7F042874 51300004 */ beql $t1, $s0, .L7F042888 +/* 0773A8 7F042878 8E4B006C */ lw $t3, 0x6c($s2) +/* 0773AC 7F04287C 5540005B */ bnezl $t2, .L7F0429EC +/* 0773B0 7F042880 8FBF003C */ lw $ra, 0x3c($sp) +/* 0773B4 7F042884 8E4B006C */ lw $t3, 0x6c($s2) +.L7F042888: +/* 0773B8 7F042888 00004025 */ move $t0, $zero +/* 0773BC 7F04288C 8D620000 */ lw $v0, ($t3) +/* 0773C0 7F042890 304C0008 */ andi $t4, $v0, 8 +/* 0773C4 7F042894 15800028 */ bnez $t4, .L7F042938 +/* 0773C8 7F042898 01801025 */ move $v0, $t4 +/* 0773CC 7F04289C 8FA202AC */ lw $v0, 0x2ac($sp) +/* 0773D0 7F0428A0 27A402A8 */ addiu $a0, $sp, 0x2a8 +/* 0773D4 7F0428A4 8C4D0014 */ lw $t5, 0x14($v0) +/* 0773D8 7F0428A8 AFAD02A8 */ sw $t5, 0x2a8($sp) +/* 0773DC 7F0428AC C6460060 */ lwc1 $f6, 0x60($s2) +/* 0773E0 7F0428B0 8E470058 */ lw $a3, 0x58($s2) +/* 0773E4 7F0428B4 8C460010 */ lw $a2, 0x10($v0) +/* 0773E8 7F0428B8 8C450008 */ lw $a1, 8($v0) +/* 0773EC 7F0428BC AFA00264 */ sw $zero, 0x264($sp) +/* 0773F0 7F0428C0 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 0773F4 7F0428C4 E7A60010 */ swc1 $f6, 0x10($sp) +/* 0773F8 7F0428C8 1450000F */ bne $v0, $s0, .L7F042908 +/* 0773FC 7F0428CC 8FA80264 */ lw $t0, 0x264($sp) +/* 077400 7F0428D0 8FAE02A8 */ lw $t6, 0x2a8($sp) +/* 077404 7F0428D4 8FA302AC */ lw $v1, 0x2ac($sp) +/* 077408 7F0428D8 51C0000C */ beql $t6, $zero, .L7F04290C +/* 07740C 7F0428DC 8E43006C */ lw $v1, 0x6c($s2) +/* 077410 7F0428E0 AC6E0014 */ sw $t6, 0x14($v1) +/* 077414 7F0428E4 C6500058 */ lwc1 $f16, 0x58($s2) +/* 077418 7F0428E8 E4700008 */ swc1 $f16, 8($v1) +/* 07741C 7F0428EC C6480060 */ lwc1 $f8, 0x60($s2) +/* 077420 7F0428F0 E4680010 */ swc1 $f8, 0x10($v1) +/* 077424 7F0428F4 8E4F006C */ lw $t7, 0x6c($s2) +/* 077428 7F0428F8 8DE20000 */ lw $v0, ($t7) +/* 07742C 7F0428FC 30580008 */ andi $t8, $v0, 8 +/* 077430 7F042900 1000000D */ b .L7F042938 +/* 077434 7F042904 03001025 */ move $v0, $t8 +.L7F042908: +/* 077438 7F042908 8E43006C */ lw $v1, 0x6c($s2) +.L7F04290C: +/* 07743C 7F04290C 8C790000 */ lw $t9, ($v1) +/* 077440 7F042910 37290008 */ ori $t1, $t9, 8 +/* 077444 7F042914 AC690000 */ sw $t1, ($v1) +/* 077448 7F042918 8FAA02AC */ lw $t2, 0x2ac($sp) +/* 07744C 7F04291C 914B0001 */ lbu $t3, 1($t2) +/* 077450 7F042920 356C0008 */ ori $t4, $t3, 8 +/* 077454 7F042924 A14C0001 */ sb $t4, 1($t2) +/* 077458 7F042928 8E4D006C */ lw $t5, 0x6c($s2) +/* 07745C 7F04292C 8DA20000 */ lw $v0, ($t5) +/* 077460 7F042930 304E0008 */ andi $t6, $v0, 8 +/* 077464 7F042934 01C01025 */ move $v0, $t6 +.L7F042938: +/* 077468 7F042938 10400016 */ beqz $v0, .L7F042994 +/* 07746C 7F04293C 8FA40048 */ lw $a0, 0x48($sp) +/* 077470 7F042940 27A50074 */ addiu $a1, $sp, 0x74 +/* 077474 7F042944 00003025 */ move $a2, $zero +/* 077478 7F042948 0FC2BC83 */ jal sub_GAME_7F0AF20C +/* 07747C 7F04294C AFA80264 */ sw $t0, 0x264($sp) +/* 077480 7F042950 8FA80264 */ lw $t0, 0x264($sp) +/* 077484 7F042954 1040000F */ beqz $v0, .L7F042994 +/* 077488 7F042958 AFA202A8 */ sw $v0, 0x2a8($sp) +/* 07748C 7F04295C 8FA402AC */ lw $a0, 0x2ac($sp) +/* 077490 7F042960 2401FFF7 */ li $at, -9 +/* 077494 7F042964 AC820014 */ sw $v0, 0x14($a0) +/* 077498 7F042968 C64A0058 */ lwc1 $f10, 0x58($s2) +/* 07749C 7F04296C E48A0008 */ swc1 $f10, 8($a0) +/* 0774A0 7F042970 C6520060 */ lwc1 $f18, 0x60($s2) +/* 0774A4 7F042974 E4920010 */ swc1 $f18, 0x10($a0) +/* 0774A8 7F042978 8E43006C */ lw $v1, 0x6c($s2) +/* 0774AC 7F04297C 8C6F0000 */ lw $t7, ($v1) +/* 0774B0 7F042980 01E1C024 */ and $t8, $t7, $at +/* 0774B4 7F042984 AC780000 */ sw $t8, ($v1) +/* 0774B8 7F042988 90990001 */ lbu $t9, 1($a0) +/* 0774BC 7F04298C 03214824 */ and $t1, $t9, $at +/* 0774C0 7F042990 A0890001 */ sb $t1, 1($a0) +.L7F042994: +/* 0774C4 7F042994 93AB0074 */ lbu $t3, 0x74($sp) +/* 0774C8 7F042998 240400FF */ li $a0, 255 +/* 0774CC 7F04299C 27AC0074 */ addiu $t4, $sp, 0x74 +/* 0774D0 7F0429A0 108B000D */ beq $a0, $t3, .L7F0429D8 +/* 0774D4 7F0429A4 010C1021 */ addu $v0, $t0, $t4 +/* 0774D8 7F0429A8 90430000 */ lbu $v1, ($v0) +/* 0774DC 7F0429AC 24050007 */ li $a1, 7 +/* 0774E0 7F0429B0 8E4A006C */ lw $t2, 0x6c($s2) +.L7F0429B4: +/* 0774E4 7F0429B4 24420001 */ addiu $v0, $v0, 1 +/* 0774E8 7F0429B8 01486821 */ addu $t5, $t2, $t0 +/* 0774EC 7F0429BC A1A300CC */ sb $v1, 0xcc($t5) +/* 0774F0 7F0429C0 90430000 */ lbu $v1, ($v0) +/* 0774F4 7F0429C4 25080001 */ addiu $t0, $t0, 1 +/* 0774F8 7F0429C8 50830004 */ beql $a0, $v1, .L7F0429DC +/* 0774FC 7F0429CC 8E4F006C */ lw $t7, 0x6c($s2) +/* 077500 7F0429D0 5505FFF8 */ bnel $t0, $a1, .L7F0429B4 +/* 077504 7F0429D4 8E4A006C */ lw $t2, 0x6c($s2) +.L7F0429D8: +/* 077508 7F0429D8 8E4F006C */ lw $t7, 0x6c($s2) +.L7F0429DC: +/* 07750C 7F0429DC 240E00FF */ li $t6, 255 +/* 077510 7F0429E0 01E8C021 */ addu $t8, $t7, $t0 +/* 077514 7F0429E4 A30E00CC */ sb $t6, 0xcc($t8) +.L7F0429E8: +/* 077518 7F0429E8 8FBF003C */ lw $ra, 0x3c($sp) +.L7F0429EC: +/* 07751C 7F0429EC 8FA202A4 */ lw $v0, 0x2a4($sp) +/* 077520 7F0429F0 D7B40020 */ ldc1 $f20, 0x20($sp) +/* 077524 7F0429F4 8FB0002C */ lw $s0, 0x2c($sp) +/* 077528 7F0429F8 8FB10030 */ lw $s1, 0x30($sp) +/* 07752C 7F0429FC 8FB20034 */ lw $s2, 0x34($sp) +/* 077530 7F042A00 8FB30038 */ lw $s3, 0x38($sp) +/* 077534 7F042A04 03E00008 */ jr $ra +/* 077538 7F042A08 27BD02B0 */ addiu $sp, $sp, 0x2b0 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F042A0C(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052A5C +.word 0x3f7d70a4 /*0.99000001*/ +.text +glabel sub_GAME_7F042A0C +/* 07753C 7F042A0C 27BDFF40 */ addiu $sp, $sp, -0xc0 +/* 077540 7F042A10 AFBF0034 */ sw $ra, 0x34($sp) +/* 077544 7F042A14 AFB00030 */ sw $s0, 0x30($sp) +/* 077548 7F042A18 AFA600C8 */ sw $a2, 0xc8($sp) +/* 07754C 7F042A1C AFA700CC */ sw $a3, 0xcc($sp) +/* 077550 7F042A20 8C900010 */ lw $s0, 0x10($a0) +/* 077554 7F042A24 8E0E0014 */ lw $t6, 0x14($s0) +/* 077558 7F042A28 AFA500C4 */ sw $a1, 0xc4($sp) +/* 07755C 7F042A2C AFA400C0 */ sw $a0, 0xc0($sp) +/* 077560 7F042A30 0FC10411 */ jal if_a0_plus_3_is_4_then_10_else_20 +/* 077564 7F042A34 AFAE00B8 */ sw $t6, 0xb8($sp) +/* 077568 7F042A38 8FA500C4 */ lw $a1, 0xc4($sp) +/* 07756C 7F042A3C 240F0001 */ li $t7, 1 +/* 077570 7F042A40 3C018003 */ lui $at, %hi(D_80030B0C) +/* 077574 7F042A44 E7A000B4 */ swc1 $f0, 0xb4($sp) +/* 077578 7F042A48 AFAF00B0 */ sw $t7, 0xb0($sp) +/* 07757C 7F042A4C AC200B0C */ sw $zero, %lo(D_80030B0C)($at) +/* 077580 7F042A50 C6040008 */ lwc1 $f4, 8($s0) +/* 077584 7F042A54 C4A20000 */ lwc1 $f2, ($a1) +/* 077588 7F042A58 46041032 */ c.eq.s $f2, $f4 +/* 07758C 7F042A5C 00000000 */ nop +/* 077590 7F042A60 4502000E */ bc1fl .L7F042A9C +/* 077594 7F042A64 E7A20098 */ swc1 $f2, 0x98($sp) +/* 077598 7F042A68 C4A60004 */ lwc1 $f6, 4($a1) +/* 07759C 7F042A6C C608000C */ lwc1 $f8, 0xc($s0) +/* 0775A0 7F042A70 46083032 */ c.eq.s $f6, $f8 +/* 0775A4 7F042A74 00000000 */ nop +/* 0775A8 7F042A78 45020008 */ bc1fl .L7F042A9C +/* 0775AC 7F042A7C E7A20098 */ swc1 $f2, 0x98($sp) +/* 0775B0 7F042A80 C4AA0008 */ lwc1 $f10, 8($a1) +/* 0775B4 7F042A84 C6100010 */ lwc1 $f16, 0x10($s0) +/* 0775B8 7F042A88 46105032 */ c.eq.s $f10, $f16 +/* 0775BC 7F042A8C 00000000 */ nop +/* 0775C0 7F042A90 45030104 */ bc1tl .L7F042EA4 +/* 0775C4 7F042A94 8FBF0034 */ lw $ra, 0x34($sp) +/* 0775C8 7F042A98 E7A20098 */ swc1 $f2, 0x98($sp) +.L7F042A9C: +/* 0775CC 7F042A9C C4B20004 */ lwc1 $f18, 4($a1) +/* 0775D0 7F042AA0 8FB800C0 */ lw $t8, 0xc0($sp) +/* 0775D4 7F042AA4 E7B2009C */ swc1 $f18, 0x9c($sp) +/* 0775D8 7F042AA8 C4A40008 */ lwc1 $f4, 8($a1) +/* 0775DC 7F042AAC E7A400A0 */ swc1 $f4, 0xa0($sp) +/* 0775E0 7F042AB0 8F190064 */ lw $t9, 0x64($t8) +/* 0775E4 7F042AB4 33280080 */ andi $t0, $t9, 0x80 +/* 0775E8 7F042AB8 510000FA */ beql $t0, $zero, .L7F042EA4 +/* 0775EC 7F042ABC 8FBF0034 */ lw $ra, 0x34($sp) +/* 0775F0 7F042AC0 8E040014 */ lw $a0, 0x14($s0) +/* 0775F4 7F042AC4 8E050008 */ lw $a1, 8($s0) +/* 0775F8 7F042AC8 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 0775FC 7F042ACC 8E060010 */ lw $a2, 0x10($s0) +/* 077600 7F042AD0 8FA900C0 */ lw $t1, 0xc0($sp) +/* 077604 7F042AD4 C7AA009C */ lwc1 $f10, 0x9c($sp) +/* 077608 7F042AD8 8D2A006C */ lw $t2, 0x6c($t1) +/* 07760C 7F042ADC 8D4B0000 */ lw $t3, ($t2) +/* 077610 7F042AE0 316C0040 */ andi $t4, $t3, 0x40 +/* 077614 7F042AE4 55800008 */ bnezl $t4, .L7F042B08 +/* 077618 7F042AE8 C602000C */ lwc1 $f2, 0xc($s0) +/* 07761C 7F042AEC 44809000 */ mtc1 $zero, $f18 +/* 077620 7F042AF0 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 077624 7F042AF4 44818000 */ mtc1 $at, $f16 +/* 077628 7F042AF8 E7B20090 */ swc1 $f18, 0x90($sp) +/* 07762C 7F042AFC 10000010 */ b .L7F042B40 +/* 077630 7F042B00 E7B0008C */ swc1 $f16, 0x8c($sp) +/* 077634 7F042B04 C602000C */ lwc1 $f2, 0xc($s0) +.L7F042B08: +/* 077638 7F042B08 C7A4009C */ lwc1 $f4, 0x9c($sp) +/* 07763C 7F042B0C 4602503C */ c.lt.s $f10, $f2 +/* 077640 7F042B10 00000000 */ nop +/* 077644 7F042B14 45020007 */ bc1fl .L7F042B34 +/* 077648 7F042B18 46002181 */ sub.s $f6, $f4, $f0 +/* 07764C 7F042B1C 46001401 */ sub.s $f16, $f2, $f0 +/* 077650 7F042B20 46005481 */ sub.s $f18, $f10, $f0 +/* 077654 7F042B24 E7B00090 */ swc1 $f16, 0x90($sp) +/* 077658 7F042B28 10000005 */ b .L7F042B40 +/* 07765C 7F042B2C E7B2008C */ swc1 $f18, 0x8c($sp) +/* 077660 7F042B30 46002181 */ sub.s $f6, $f4, $f0 +.L7F042B34: +/* 077664 7F042B34 46001201 */ sub.s $f8, $f2, $f0 +/* 077668 7F042B38 E7A60090 */ swc1 $f6, 0x90($sp) +/* 07766C 7F042B3C E7A8008C */ swc1 $f8, 0x8c($sp) +.L7F042B40: +/* 077670 7F042B40 0FC2C731 */ jal sub_GAME_7F0B1CC4 +/* 077674 7F042B44 00000000 */ nop +/* 077678 7F042B48 8E050008 */ lw $a1, 8($s0) +/* 07767C 7F042B4C 8E060010 */ lw $a2, 0x10($s0) +/* 077680 7F042B50 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 077684 7F042B54 44813000 */ mtc1 $at, $f6 +/* 077688 7F042B58 C7B000A0 */ lwc1 $f16, 0xa0($sp) +/* 07768C 7F042B5C C7AA0090 */ lwc1 $f10, 0x90($sp) +/* 077690 7F042B60 C7B2008C */ lwc1 $f18, 0x8c($sp) +/* 077694 7F042B64 44802000 */ mtc1 $zero, $f4 +/* 077698 7F042B68 240D001F */ li $t5, 31 +/* 07769C 7F042B6C AFAD0014 */ sw $t5, 0x14($sp) +/* 0776A0 7F042B70 27A400B8 */ addiu $a0, $sp, 0xb8 +/* 0776A4 7F042B74 8FA70098 */ lw $a3, 0x98($sp) +/* 0776A8 7F042B78 E7B00010 */ swc1 $f16, 0x10($sp) +/* 0776AC 7F042B7C E7A60024 */ swc1 $f6, 0x24($sp) +/* 0776B0 7F042B80 E7AA0018 */ swc1 $f10, 0x18($sp) +/* 0776B4 7F042B84 E7B2001C */ swc1 $f18, 0x1c($sp) +/* 0776B8 7F042B88 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 0776BC 7F042B8C E7A40020 */ swc1 $f4, 0x20($sp) +/* 0776C0 7F042B90 1040001D */ beqz $v0, .L7F042C08 +/* 0776C4 7F042B94 8FAE00B8 */ lw $t6, 0xb8($sp) +/* 0776C8 7F042B98 11C0001B */ beqz $t6, .L7F042C08 +/* 0776CC 7F042B9C 27A400B8 */ addiu $a0, $sp, 0xb8 +/* 0776D0 7F042BA0 C7A80090 */ lwc1 $f8, 0x90($sp) +/* 0776D4 7F042BA4 C7B0008C */ lwc1 $f16, 0x8c($sp) +/* 0776D8 7F042BA8 240F001F */ li $t7, 31 +/* 0776DC 7F042BAC AFAF0010 */ sw $t7, 0x10($sp) +/* 0776E0 7F042BB0 8FA50098 */ lw $a1, 0x98($sp) +/* 0776E4 7F042BB4 8FA600A0 */ lw $a2, 0xa0($sp) +/* 0776E8 7F042BB8 8FA700B4 */ lw $a3, 0xb4($sp) +/* 0776EC 7F042BBC E7A80014 */ swc1 $f8, 0x14($sp) +/* 0776F0 7F042BC0 0FC2C62E */ jal sub_GAME_7F0B18B8 +/* 0776F4 7F042BC4 E7B00018 */ swc1 $f16, 0x18($sp) +/* 0776F8 7F042BC8 0441000F */ bgez $v0, .L7F042C08 +/* 0776FC 7F042BCC C7AA0098 */ lwc1 $f10, 0x98($sp) +/* 077700 7F042BD0 8FA200C0 */ lw $v0, 0xc0($sp) +/* 077704 7F042BD4 E44A0058 */ swc1 $f10, 0x58($v0) +/* 077708 7F042BD8 C7B200A0 */ lwc1 $f18, 0xa0($sp) +/* 07770C 7F042BDC E4520060 */ swc1 $f18, 0x60($v0) +/* 077710 7F042BE0 8FB800B8 */ lw $t8, 0xb8($sp) +/* 077714 7F042BE4 AE180014 */ sw $t8, 0x14($s0) +/* 077718 7F042BE8 C7A40098 */ lwc1 $f4, 0x98($sp) +/* 07771C 7F042BEC E6040008 */ swc1 $f4, 8($s0) +/* 077720 7F042BF0 C7A600A0 */ lwc1 $f6, 0xa0($sp) +/* 077724 7F042BF4 E6060010 */ swc1 $f6, 0x10($s0) +/* 077728 7F042BF8 C7A0009C */ lwc1 $f0, 0x9c($sp) +/* 07772C 7F042BFC E600000C */ swc1 $f0, 0xc($s0) +/* 077730 7F042C00 100000A7 */ b .L7F042EA0 +/* 077734 7F042C04 E440005C */ swc1 $f0, 0x5c($v0) +.L7F042C08: +/* 077738 7F042C08 27A40080 */ addiu $a0, $sp, 0x80 +/* 07773C 7F042C0C 0FC2CA2C */ jal sub_GAME_7F0B28B0 +/* 077740 7F042C10 27A50074 */ addiu $a1, $sp, 0x74 +/* 077744 7F042C14 C7A8007C */ lwc1 $f8, 0x7c($sp) +/* 077748 7F042C18 C7B00088 */ lwc1 $f16, 0x88($sp) +/* 07774C 7F042C1C 8FA400CC */ lw $a0, 0xcc($sp) +/* 077750 7F042C20 44801000 */ mtc1 $zero, $f2 +/* 077754 7F042C24 46104281 */ sub.s $f10, $f8, $f16 +/* 077758 7F042C28 24850004 */ addiu $a1, $a0, 4 +/* 07775C 7F042C2C E4820004 */ swc1 $f2, 4($a0) +/* 077760 7F042C30 E48A0000 */ swc1 $f10, ($a0) +/* 077764 7F042C34 C4880000 */ lwc1 $f8, ($a0) +/* 077768 7F042C38 C7A40074 */ lwc1 $f4, 0x74($sp) +/* 07776C 7F042C3C C7B20080 */ lwc1 $f18, 0x80($sp) +/* 077770 7F042C40 46081032 */ c.eq.s $f2, $f8 +/* 077774 7F042C44 46049181 */ sub.s $f6, $f18, $f4 +/* 077778 7F042C48 45000007 */ bc1f .L7F042C68 +/* 07777C 7F042C4C E4860008 */ swc1 $f6, 8($a0) +/* 077780 7F042C50 C4900008 */ lwc1 $f16, 8($a0) +/* 077784 7F042C54 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 077788 7F042C58 46101032 */ c.eq.s $f2, $f16 +/* 07778C 7F042C5C 00000000 */ nop +/* 077790 7F042C60 45030006 */ bc1tl .L7F042C7C +/* 077794 7F042C64 44815000 */ mtc1 $at, $f10 +.L7F042C68: +/* 077798 7F042C68 0C007DD4 */ jal guNormalize +/* 07779C 7F042C6C 24860008 */ addiu $a2, $a0, 8 +/* 0777A0 7F042C70 10000005 */ b .L7F042C88 +/* 0777A4 7F042C74 C6000008 */ lwc1 $f0, 8($s0) +/* 0777A8 7F042C78 44815000 */ mtc1 $at, $f10 +.L7F042C7C: +/* 0777AC 7F042C7C 00000000 */ nop +/* 0777B0 7F042C80 E48A0008 */ swc1 $f10, 8($a0) +/* 0777B4 7F042C84 C6000008 */ lwc1 $f0, 8($s0) +.L7F042C88: +/* 0777B8 7F042C88 C7B20098 */ lwc1 $f18, 0x98($sp) +/* 0777BC 7F042C8C C7A4009C */ lwc1 $f4, 0x9c($sp) +/* 0777C0 7F042C90 C7AA0098 */ lwc1 $f10, 0x98($sp) +/* 0777C4 7F042C94 46009032 */ c.eq.s $f18, $f0 +/* 0777C8 7F042C98 00000000 */ nop +/* 0777CC 7F042C9C 4502000F */ bc1fl .L7F042CDC +/* 0777D0 7F042CA0 46005481 */ sub.s $f18, $f10, $f0 +/* 0777D4 7F042CA4 C606000C */ lwc1 $f6, 0xc($s0) +/* 0777D8 7F042CA8 C7A800A0 */ lwc1 $f8, 0xa0($sp) +/* 0777DC 7F042CAC 46062032 */ c.eq.s $f4, $f6 +/* 0777E0 7F042CB0 00000000 */ nop +/* 0777E4 7F042CB4 45020009 */ bc1fl .L7F042CDC +/* 0777E8 7F042CB8 46005481 */ sub.s $f18, $f10, $f0 +/* 0777EC 7F042CBC C6100010 */ lwc1 $f16, 0x10($s0) +/* 0777F0 7F042CC0 8FA200C8 */ lw $v0, 0xc8($sp) +/* 0777F4 7F042CC4 C7B20098 */ lwc1 $f18, 0x98($sp) +/* 0777F8 7F042CC8 46104032 */ c.eq.s $f8, $f16 +/* 0777FC 7F042CCC 00000000 */ nop +/* 077800 7F042CD0 4503006A */ bc1tl .L7F042E7C +/* 077804 7F042CD4 E4520000 */ swc1 $f18, ($v0) +/* 077808 7F042CD8 46005481 */ sub.s $f18, $f10, $f0 +.L7F042CDC: +/* 07780C 7F042CDC C7A4009C */ lwc1 $f4, 0x9c($sp) +/* 077810 7F042CE0 C7B000A0 */ lwc1 $f16, 0xa0($sp) +/* 077814 7F042CE4 26040008 */ addiu $a0, $s0, 8 +/* 077818 7F042CE8 E7B200A4 */ swc1 $f18, 0xa4($sp) +/* 07781C 7F042CEC C606000C */ lwc1 $f6, 0xc($s0) +/* 077820 7F042CF0 27A500A4 */ addiu $a1, $sp, 0xa4 +/* 077824 7F042CF4 8FA600C8 */ lw $a2, 0xc8($sp) +/* 077828 7F042CF8 46062201 */ sub.s $f8, $f4, $f6 +/* 07782C 7F042CFC E7A800A8 */ swc1 $f8, 0xa8($sp) +/* 077830 7F042D00 C60A0010 */ lwc1 $f10, 0x10($s0) +/* 077834 7F042D04 460A8481 */ sub.s $f18, $f16, $f10 +/* 077838 7F042D08 0FC09893 */ jal sub_GAME_7F02624C +/* 07783C 7F042D0C E7B200AC */ swc1 $f18, 0xac($sp) +/* 077840 7F042D10 C7A400B4 */ lwc1 $f4, 0xb4($sp) +/* 077844 7F042D14 C7B00080 */ lwc1 $f16, 0x80($sp) +/* 077848 7F042D18 C7AA0088 */ lwc1 $f10, 0x88($sp) +/* 07784C 7F042D1C E7A4005C */ swc1 $f4, 0x5c($sp) +/* 077850 7F042D20 C6060008 */ lwc1 $f6, 8($s0) +/* 077854 7F042D24 C7B20074 */ lwc1 $f18, 0x74($sp) +/* 077858 7F042D28 C7A4007C */ lwc1 $f4, 0x7c($sp) +/* 07785C 7F042D2C E7A60060 */ swc1 $f6, 0x60($sp) +/* 077860 7F042D30 C6080010 */ lwc1 $f8, 0x10($s0) +/* 077864 7F042D34 E7B00054 */ swc1 $f16, 0x54($sp) +/* 077868 7F042D38 E7AA0058 */ swc1 $f10, 0x58($sp) +/* 07786C 7F042D3C E7B2004C */ swc1 $f18, 0x4c($sp) +/* 077870 7F042D40 E7A40050 */ swc1 $f4, 0x50($sp) +/* 077874 7F042D44 E7A80064 */ swc1 $f8, 0x64($sp) +/* 077878 7F042D48 C6080008 */ lwc1 $f8, 8($s0) +/* 07787C 7F042D4C C7A60098 */ lwc1 $f6, 0x98($sp) +/* 077880 7F042D50 C7AA00A0 */ lwc1 $f10, 0xa0($sp) +/* 077884 7F042D54 27A4005C */ addiu $a0, $sp, 0x5c +/* 077888 7F042D58 46083401 */ sub.s $f16, $f6, $f8 +/* 07788C 7F042D5C 27A50054 */ addiu $a1, $sp, 0x54 +/* 077890 7F042D60 27A6004C */ addiu $a2, $sp, 0x4c +/* 077894 7F042D64 27A70044 */ addiu $a3, $sp, 0x44 +/* 077898 7F042D68 E7B00044 */ swc1 $f16, 0x44($sp) +/* 07789C 7F042D6C C6120010 */ lwc1 $f18, 0x10($s0) +/* 0778A0 7F042D70 46125101 */ sub.s $f4, $f10, $f18 +/* 0778A4 7F042D74 0FC2CCF7 */ jal sub_GAME_7F0B33DC +/* 0778A8 7F042D78 E7A40048 */ swc1 $f4, 0x48($sp) +/* 0778AC 7F042D7C C7A80044 */ lwc1 $f8, 0x44($sp) +/* 0778B0 7F042D80 3C018005 */ lui $at, %hi(D_80052A5C) +/* 0778B4 7F042D84 C4222A5C */ lwc1 $f2, %lo(D_80052A5C)($at) +/* 0778B8 7F042D88 46004402 */ mul.s $f16, $f8, $f0 +/* 0778BC 7F042D8C 8E190014 */ lw $t9, 0x14($s0) +/* 0778C0 7F042D90 C7A4009C */ lwc1 $f4, 0x9c($sp) +/* 0778C4 7F042D94 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0778C8 7F042D98 AFB900B8 */ sw $t9, 0xb8($sp) +/* 0778CC 7F042D9C C6060008 */ lwc1 $f6, 8($s0) +/* 0778D0 7F042DA0 E7A4006C */ swc1 $f4, 0x6c($sp) +/* 0778D4 7F042DA4 46028282 */ mul.s $f10, $f16, $f2 +/* 0778D8 7F042DA8 C7B00048 */ lwc1 $f16, 0x48($sp) +/* 0778DC 7F042DAC 2408001F */ li $t0, 31 +/* 0778E0 7F042DB0 27A400B8 */ addiu $a0, $sp, 0xb8 +/* 0778E4 7F042DB4 460A3480 */ add.s $f18, $f6, $f10 +/* 0778E8 7F042DB8 46008182 */ mul.s $f6, $f16, $f0 +/* 0778EC 7F042DBC C7B00090 */ lwc1 $f16, 0x90($sp) +/* 0778F0 7F042DC0 E7B20068 */ swc1 $f18, 0x68($sp) +/* 0778F4 7F042DC4 C6080010 */ lwc1 $f8, 0x10($s0) +/* 0778F8 7F042DC8 8FA70068 */ lw $a3, 0x68($sp) +/* 0778FC 7F042DCC 46023282 */ mul.s $f10, $f6, $f2 +/* 077900 7F042DD0 C7A6008C */ lwc1 $f6, 0x8c($sp) +/* 077904 7F042DD4 460A4480 */ add.s $f18, $f8, $f10 +/* 077908 7F042DD8 44815000 */ mtc1 $at, $f10 +/* 07790C 7F042DDC 44804000 */ mtc1 $zero, $f8 +/* 077910 7F042DE0 E7B20070 */ swc1 $f18, 0x70($sp) +/* 077914 7F042DE4 8E060010 */ lw $a2, 0x10($s0) +/* 077918 7F042DE8 8E050008 */ lw $a1, 8($s0) +/* 07791C 7F042DEC C7A40070 */ lwc1 $f4, 0x70($sp) +/* 077920 7F042DF0 AFA80014 */ sw $t0, 0x14($sp) +/* 077924 7F042DF4 E7B00018 */ swc1 $f16, 0x18($sp) +/* 077928 7F042DF8 E7A6001C */ swc1 $f6, 0x1c($sp) +/* 07792C 7F042DFC E7AA0024 */ swc1 $f10, 0x24($sp) +/* 077930 7F042E00 E7A80020 */ swc1 $f8, 0x20($sp) +/* 077934 7F042E04 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 077938 7F042E08 E7A40010 */ swc1 $f4, 0x10($sp) +/* 07793C 7F042E0C 1040001F */ beqz $v0, .L7F042E8C +/* 077940 7F042E10 8FA900B8 */ lw $t1, 0xb8($sp) +/* 077944 7F042E14 1120001D */ beqz $t1, .L7F042E8C +/* 077948 7F042E18 27A400B8 */ addiu $a0, $sp, 0xb8 +/* 07794C 7F042E1C C7B20090 */ lwc1 $f18, 0x90($sp) +/* 077950 7F042E20 C7A4008C */ lwc1 $f4, 0x8c($sp) +/* 077954 7F042E24 240A001F */ li $t2, 31 +/* 077958 7F042E28 AFAA0010 */ sw $t2, 0x10($sp) +/* 07795C 7F042E2C 8FA50068 */ lw $a1, 0x68($sp) +/* 077960 7F042E30 8FA60070 */ lw $a2, 0x70($sp) +/* 077964 7F042E34 8FA700B4 */ lw $a3, 0xb4($sp) +/* 077968 7F042E38 E7B20014 */ swc1 $f18, 0x14($sp) +/* 07796C 7F042E3C 0FC2C62E */ jal sub_GAME_7F0B18B8 +/* 077970 7F042E40 E7A40018 */ swc1 $f4, 0x18($sp) +/* 077974 7F042E44 04410011 */ bgez $v0, .L7F042E8C +/* 077978 7F042E48 C7B00068 */ lwc1 $f16, 0x68($sp) +/* 07797C 7F042E4C 8FAB00C0 */ lw $t3, 0xc0($sp) +/* 077980 7F042E50 E5700058 */ swc1 $f16, 0x58($t3) +/* 077984 7F042E54 C7A60070 */ lwc1 $f6, 0x70($sp) +/* 077988 7F042E58 E5660060 */ swc1 $f6, 0x60($t3) +/* 07798C 7F042E5C 8FAC00B8 */ lw $t4, 0xb8($sp) +/* 077990 7F042E60 AE0C0014 */ sw $t4, 0x14($s0) +/* 077994 7F042E64 C7A80068 */ lwc1 $f8, 0x68($sp) +/* 077998 7F042E68 E6080008 */ swc1 $f8, 8($s0) +/* 07799C 7F042E6C C7AA0070 */ lwc1 $f10, 0x70($sp) +/* 0779A0 7F042E70 10000006 */ b .L7F042E8C +/* 0779A4 7F042E74 E60A0010 */ swc1 $f10, 0x10($s0) +/* 0779A8 7F042E78 E4520000 */ swc1 $f18, ($v0) +.L7F042E7C: +/* 0779AC 7F042E7C C7A4009C */ lwc1 $f4, 0x9c($sp) +/* 0779B0 7F042E80 E4440004 */ swc1 $f4, 4($v0) +/* 0779B4 7F042E84 C7B000A0 */ lwc1 $f16, 0xa0($sp) +/* 0779B8 7F042E88 E4500008 */ swc1 $f16, 8($v0) +.L7F042E8C: +/* 0779BC 7F042E8C C7A0006C */ lwc1 $f0, 0x6c($sp) +/* 0779C0 7F042E90 E600000C */ swc1 $f0, 0xc($s0) +/* 0779C4 7F042E94 8FAD00C0 */ lw $t5, 0xc0($sp) +/* 0779C8 7F042E98 E5A0005C */ swc1 $f0, 0x5c($t5) +/* 0779CC 7F042E9C AFA000B0 */ sw $zero, 0xb0($sp) +.L7F042EA0: +/* 0779D0 7F042EA0 8FBF0034 */ lw $ra, 0x34($sp) +.L7F042EA4: +/* 0779D4 7F042EA4 8FA200B0 */ lw $v0, 0xb0($sp) +/* 0779D8 7F042EA8 8FB00030 */ lw $s0, 0x30($sp) +/* 0779DC 7F042EAC 03E00008 */ jr $ra +/* 0779E0 7F042EB0 27BD00C0 */ addiu $sp, $sp, 0xc0 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F042EB4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F042EB4 +/* 0779E4 7F042EB4 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0779E8 7F042EB8 AFBF001C */ sw $ra, 0x1c($sp) +/* 0779EC 7F042EBC 8C8E0064 */ lw $t6, 0x64($a0) +/* 0779F0 7F042EC0 8FAB0030 */ lw $t3, 0x30($sp) +/* 0779F4 7F042EC4 31CF0080 */ andi $t7, $t6, 0x80 +/* 0779F8 7F042EC8 11E0000D */ beqz $t7, .L7F042F00 +/* 0779FC 7F042ECC 00000000 */ nop +/* 077A00 7F042ED0 8C98006C */ lw $t8, 0x6c($a0) +/* 077A04 7F042ED4 8FA90030 */ lw $t1, 0x30($sp) +/* 077A08 7F042ED8 8F190000 */ lw $t9, ($t8) +/* 077A0C 7F042EDC 33280004 */ andi $t0, $t9, 4 +/* 077A10 7F042EE0 11000007 */ beqz $t0, .L7F042F00 +/* 077A14 7F042EE4 00000000 */ nop +/* 077A18 7F042EE8 8FAA0034 */ lw $t2, 0x34($sp) +/* 077A1C 7F042EEC AFA90010 */ sw $t1, 0x10($sp) +/* 077A20 7F042EF0 0FC10893 */ jal handles_projectile_motion +/* 077A24 7F042EF4 AFAA0014 */ sw $t2, 0x14($sp) +/* 077A28 7F042EF8 10000004 */ b .L7F042F0C +/* 077A2C 7F042EFC 8FBF001C */ lw $ra, 0x1c($sp) +.L7F042F00: +/* 077A30 7F042F00 0FC10A83 */ jal sub_GAME_7F042A0C +/* 077A34 7F042F04 AFAB0010 */ sw $t3, 0x10($sp) +/* 077A38 7F042F08 8FBF001C */ lw $ra, 0x1c($sp) +.L7F042F0C: +/* 077A3C 7F042F0C 27BD0020 */ addiu $sp, $sp, 0x20 +/* 077A40 7F042F10 03E00008 */ jr $ra +/* 077A44 7F042F14 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F042F18(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F042F18 +/* 077A48 7F042F18 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 077A4C 7F042F1C 3C038005 */ lui $v1, %hi(clock_timer) +/* 077A50 7F042F20 24638374 */ addiu $v1, %lo(clock_timer) # addiu $v1, $v1, -0x7c8c +/* 077A54 7F042F24 8C6E0000 */ lw $t6, ($v1) +/* 077A58 7F042F28 F7B40008 */ sdc1 $f20, 8($sp) +/* 077A5C 7F042F2C 4487A000 */ mtc1 $a3, $f20 +/* 077A60 7F042F30 F7BA0020 */ sdc1 $f26, 0x20($sp) +/* 077A64 7F042F34 F7B80018 */ sdc1 $f24, 0x18($sp) +/* 077A68 7F042F38 F7B60010 */ sdc1 $f22, 0x10($sp) +/* 077A6C 7F042F3C 44857000 */ mtc1 $a1, $f14 +/* 077A70 7F042F40 C4C00000 */ lwc1 $f0, ($a2) +/* 077A74 7F042F44 19C0006A */ blez $t6, .L7F0430F0 +/* 077A78 7F042F48 00001025 */ move $v0, $zero +/* 077A7C 7F042F4C 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 077A80 7F042F50 4481D000 */ mtc1 $at, $f26 +/* 077A84 7F042F54 4480C000 */ mtc1 $zero, $f24 +/* 077A88 7F042F58 C7B2003C */ lwc1 $f18, 0x3c($sp) +/* 077A8C 7F042F5C C7A20038 */ lwc1 $f2, 0x38($sp) +/* 077A90 7F042F60 C4900000 */ lwc1 $f16, ($a0) +.L7F042F64: +/* 077A94 7F042F64 46107301 */ sub.s $f12, $f14, $f16 +/* 077A98 7F042F68 460CC03C */ c.lt.s $f24, $f12 +/* 077A9C 7F042F6C 00000000 */ nop +/* 077AA0 7F042F70 4502002E */ bc1fl .L7F04302C +/* 077AA4 7F042F74 4618003C */ c.lt.s $f0, $f24 +/* 077AA8 7F042F78 4600C03C */ c.lt.s $f24, $f0 +/* 077AAC 7F042F7C 00000000 */ nop +/* 077AB0 7F042F80 45020011 */ bc1fl .L7F042FC8 +/* 077AB4 7F042F84 4612003C */ c.lt.s $f0, $f18 +/* 077AB8 7F042F88 46000102 */ mul.s $f4, $f0, $f0 +/* 077ABC 7F042F8C 00000000 */ nop +/* 077AC0 7F042F90 461A2182 */ mul.s $f6, $f4, $f26 +/* 077AC4 7F042F94 46023203 */ div.s $f8, $f6, $f2 +/* 077AC8 7F042F98 4608603E */ c.le.s $f12, $f8 +/* 077ACC 7F042F9C 00000000 */ nop +/* 077AD0 7F042FA0 45000008 */ bc1f .L7F042FC4 +/* 077AD4 7F042FA4 00000000 */ nop +/* 077AD8 7F042FA8 46020001 */ sub.s $f0, $f0, $f2 +/* 077ADC 7F042FAC 4602003C */ c.lt.s $f0, $f2 +/* 077AE0 7F042FB0 00000000 */ nop +/* 077AE4 7F042FB4 45020014 */ bc1fl .L7F043008 +/* 077AE8 7F042FB8 4600603E */ c.le.s $f12, $f0 +/* 077AEC 7F042FBC 10000011 */ b .L7F043004 +/* 077AF0 7F042FC0 46001006 */ mov.s $f0, $f2 +.L7F042FC4: +/* 077AF4 7F042FC4 4612003C */ c.lt.s $f0, $f18 +.L7F042FC8: +/* 077AF8 7F042FC8 00000000 */ nop +/* 077AFC 7F042FCC 4502000E */ bc1fl .L7F043008 +/* 077B00 7F042FD0 4600603E */ c.le.s $f12, $f0 +/* 077B04 7F042FD4 4618003C */ c.lt.s $f0, $f24 +/* 077B08 7F042FD8 00000000 */ nop +/* 077B0C 7F042FDC 45020004 */ bc1fl .L7F042FF0 +/* 077B10 7F042FE0 46140000 */ add.s $f0, $f0, $f20 +/* 077B14 7F042FE4 10000002 */ b .L7F042FF0 +/* 077B18 7F042FE8 46020000 */ add.s $f0, $f0, $f2 +/* 077B1C 7F042FEC 46140000 */ add.s $f0, $f0, $f20 +.L7F042FF0: +/* 077B20 7F042FF0 4600903C */ c.lt.s $f18, $f0 +/* 077B24 7F042FF4 00000000 */ nop +/* 077B28 7F042FF8 45020003 */ bc1fl .L7F043008 +/* 077B2C 7F042FFC 4600603E */ c.le.s $f12, $f0 +/* 077B30 7F043000 46009006 */ mov.s $f0, $f18 +.L7F043004: +/* 077B34 7F043004 4600603E */ c.le.s $f12, $f0 +.L7F043008: +/* 077B38 7F043008 00000000 */ nop +/* 077B3C 7F04300C 45020004 */ bc1fl .L7F043020 +/* 077B40 7F043010 46008280 */ add.s $f10, $f16, $f0 +/* 077B44 7F043014 10000036 */ b .L7F0430F0 +/* 077B48 7F043018 E48E0000 */ swc1 $f14, ($a0) +/* 077B4C 7F04301C 46008280 */ add.s $f10, $f16, $f0 +.L7F043020: +/* 077B50 7F043020 1000002E */ b .L7F0430DC +/* 077B54 7F043024 E48A0000 */ swc1 $f10, ($a0) +/* 077B58 7F043028 4618003C */ c.lt.s $f0, $f24 +.L7F04302C: +/* 077B5C 7F04302C 00000000 */ nop +/* 077B60 7F043030 45020012 */ bc1fl .L7F04307C +/* 077B64 7F043034 46009587 */ neg.s $f22, $f18 +/* 077B68 7F043038 46000102 */ mul.s $f4, $f0, $f0 +/* 077B6C 7F04303C 46006287 */ neg.s $f10, $f12 +/* 077B70 7F043040 461A2182 */ mul.s $f6, $f4, $f26 +/* 077B74 7F043044 46023203 */ div.s $f8, $f6, $f2 +/* 077B78 7F043048 4608503E */ c.le.s $f10, $f8 +/* 077B7C 7F04304C 00000000 */ nop +/* 077B80 7F043050 4502000A */ bc1fl .L7F04307C +/* 077B84 7F043054 46009587 */ neg.s $f22, $f18 +/* 077B88 7F043058 46020000 */ add.s $f0, $f0, $f2 +/* 077B8C 7F04305C 46001587 */ neg.s $f22, $f2 +/* 077B90 7F043060 4600B03C */ c.lt.s $f22, $f0 +/* 077B94 7F043064 00000000 */ nop +/* 077B98 7F043068 45020015 */ bc1fl .L7F0430C0 +/* 077B9C 7F04306C 460C003E */ c.le.s $f0, $f12 +/* 077BA0 7F043070 10000012 */ b .L7F0430BC +/* 077BA4 7F043074 4600B006 */ mov.s $f0, $f22 +/* 077BA8 7F043078 46009587 */ neg.s $f22, $f18 +.L7F04307C: +/* 077BAC 7F04307C 4600B03C */ c.lt.s $f22, $f0 +/* 077BB0 7F043080 00000000 */ nop +/* 077BB4 7F043084 4502000E */ bc1fl .L7F0430C0 +/* 077BB8 7F043088 460C003E */ c.le.s $f0, $f12 +/* 077BBC 7F04308C 4600C03C */ c.lt.s $f24, $f0 +/* 077BC0 7F043090 00000000 */ nop +/* 077BC4 7F043094 45020004 */ bc1fl .L7F0430A8 +/* 077BC8 7F043098 46140001 */ sub.s $f0, $f0, $f20 +/* 077BCC 7F04309C 10000002 */ b .L7F0430A8 +/* 077BD0 7F0430A0 46020001 */ sub.s $f0, $f0, $f2 +/* 077BD4 7F0430A4 46140001 */ sub.s $f0, $f0, $f20 +.L7F0430A8: +/* 077BD8 7F0430A8 4616003C */ c.lt.s $f0, $f22 +/* 077BDC 7F0430AC 00000000 */ nop +/* 077BE0 7F0430B0 45020003 */ bc1fl .L7F0430C0 +/* 077BE4 7F0430B4 460C003E */ c.le.s $f0, $f12 +/* 077BE8 7F0430B8 4600B006 */ mov.s $f0, $f22 +.L7F0430BC: +/* 077BEC 7F0430BC 460C003E */ c.le.s $f0, $f12 +.L7F0430C0: +/* 077BF0 7F0430C0 00000000 */ nop +/* 077BF4 7F0430C4 45020004 */ bc1fl .L7F0430D8 +/* 077BF8 7F0430C8 46008100 */ add.s $f4, $f16, $f0 +/* 077BFC 7F0430CC 10000008 */ b .L7F0430F0 +/* 077C00 7F0430D0 E48E0000 */ swc1 $f14, ($a0) +/* 077C04 7F0430D4 46008100 */ add.s $f4, $f16, $f0 +.L7F0430D8: +/* 077C08 7F0430D8 E4840000 */ swc1 $f4, ($a0) +.L7F0430DC: +/* 077C0C 7F0430DC 8C6F0000 */ lw $t7, ($v1) +/* 077C10 7F0430E0 24420001 */ addiu $v0, $v0, 1 +/* 077C14 7F0430E4 004F082A */ slt $at, $v0, $t7 +/* 077C18 7F0430E8 5420FF9E */ bnezl $at, .L7F042F64 +/* 077C1C 7F0430EC C4900000 */ lwc1 $f16, ($a0) +.L7F0430F0: +/* 077C20 7F0430F0 E4C00000 */ swc1 $f0, ($a2) +/* 077C24 7F0430F4 D7BA0020 */ ldc1 $f26, 0x20($sp) +/* 077C28 7F0430F8 D7B80018 */ ldc1 $f24, 0x18($sp) +/* 077C2C 7F0430FC D7B60010 */ ldc1 $f22, 0x10($sp) +/* 077C30 7F043100 D7B40008 */ ldc1 $f20, 8($sp) +/* 077C34 7F043104 03E00008 */ jr $ra +/* 077C38 7F043108 27BD0028 */ addiu $sp, $sp, 0x28 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04310C(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052A60 +.word 0xc0490fdb /*-3.1415927*/ +glabel D_80052A64 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052A68 +.word 0x40490fdb /*3.1415927*/ +glabel D_80052A6C +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052A70 +.word 0x40c90fdb /*6.2831855*/ +.text +glabel sub_GAME_7F04310C +/* 077C3C 7F04310C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 077C40 7F043110 AFBF001C */ sw $ra, 0x1c($sp) +/* 077C44 7F043114 44856000 */ mtc1 $a1, $f12 +/* 077C48 7F043118 C4840000 */ lwc1 $f4, ($a0) +/* 077C4C 7F04311C 3C018005 */ lui $at, %hi(D_80052A60) +/* 077C50 7F043120 C4262A60 */ lwc1 $f6, %lo(D_80052A60)($at) +/* 077C54 7F043124 46046001 */ sub.s $f0, $f12, $f4 +/* 077C58 7F043128 44877000 */ mtc1 $a3, $f14 +/* 077C5C 7F04312C 3C018005 */ lui $at, %hi(D_80052A68) +/* 077C60 7F043130 C7B00030 */ lwc1 $f16, 0x30($sp) +/* 077C64 7F043134 4606003C */ c.lt.s $f0, $f6 +/* 077C68 7F043138 44077000 */ mfc1 $a3, $f14 +/* 077C6C 7F04313C 45000005 */ bc1f .L7F043154 +/* 077C70 7F043140 00000000 */ nop +/* 077C74 7F043144 3C018005 */ lui $at, %hi(D_80052A68) +/* 077C78 7F043148 C4282A64 */ lwc1 $f8, %lo(D_80052A64)($at) +/* 077C7C 7F04314C 10000009 */ b .L7F043174 +/* 077C80 7F043150 46086300 */ add.s $f12, $f12, $f8 +.L7F043154: +/* 077C84 7F043154 C42A2A68 */ lwc1 $f10, %lo(D_80052A68)($at) +/* 077C88 7F043158 3C018005 */ lui $at, %hi(D_80052A6C) +/* 077C8C 7F04315C 4600503E */ c.le.s $f10, $f0 +/* 077C90 7F043160 00000000 */ nop +/* 077C94 7F043164 45020004 */ bc1fl .L7F043178 +/* 077C98 7F043168 C7B20034 */ lwc1 $f18, 0x34($sp) +/* 077C9C 7F04316C C4222A6C */ lwc1 $f2, %lo(D_80052A6C)($at) +/* 077CA0 7F043170 46026301 */ sub.s $f12, $f12, $f2 +.L7F043174: +/* 077CA4 7F043174 C7B20034 */ lwc1 $f18, 0x34($sp) +.L7F043178: +/* 077CA8 7F043178 44056000 */ mfc1 $a1, $f12 +/* 077CAC 7F04317C E7B00010 */ swc1 $f16, 0x10($sp) +/* 077CB0 7F043180 AFA40020 */ sw $a0, 0x20($sp) +/* 077CB4 7F043184 0FC10BC6 */ jal sub_GAME_7F042F18 +/* 077CB8 7F043188 E7B20014 */ swc1 $f18, 0x14($sp) +/* 077CBC 7F04318C 8FA40020 */ lw $a0, 0x20($sp) +/* 077CC0 7F043190 44802000 */ mtc1 $zero, $f4 +/* 077CC4 7F043194 3C018005 */ lui $at, %hi(D_80052A70) +/* 077CC8 7F043198 C4800000 */ lwc1 $f0, ($a0) +/* 077CCC 7F04319C C4222A70 */ lwc1 $f2, %lo(D_80052A70)($at) +/* 077CD0 7F0431A0 4604003C */ c.lt.s $f0, $f4 +/* 077CD4 7F0431A4 00000000 */ nop +/* 077CD8 7F0431A8 45020005 */ bc1fl .L7F0431C0 +/* 077CDC 7F0431AC 4600103E */ c.le.s $f2, $f0 +/* 077CE0 7F0431B0 46020180 */ add.s $f6, $f0, $f2 +/* 077CE4 7F0431B4 E4860000 */ swc1 $f6, ($a0) +/* 077CE8 7F0431B8 C4800000 */ lwc1 $f0, ($a0) +/* 077CEC 7F0431BC 4600103E */ c.le.s $f2, $f0 +.L7F0431C0: +/* 077CF0 7F0431C0 00000000 */ nop +/* 077CF4 7F0431C4 45020004 */ bc1fl .L7F0431D8 +/* 077CF8 7F0431C8 8FBF001C */ lw $ra, 0x1c($sp) +/* 077CFC 7F0431CC 46020201 */ sub.s $f8, $f0, $f2 +/* 077D00 7F0431D0 E4880000 */ swc1 $f8, ($a0) +/* 077D04 7F0431D4 8FBF001C */ lw $ra, 0x1c($sp) +.L7F0431D8: +/* 077D08 7F0431D8 27BD0020 */ addiu $sp, $sp, 0x20 +/* 077D0C 7F0431DC 03E00008 */ jr $ra +/* 077D10 7F0431E0 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0431E4(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052A74 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052A78 +.word 0x3d4ccccd /*0.050000001*/ +glabel D_80052A7C +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052A80 +.word 0x3d4ccccd /*0.050000001*/ +glabel D_80052A84 +.word 0x3cf5c28f /*0.029999999*/ +glabel D_80052A88 +.word 0x3e19999a /*0.15000001*/ +.text +glabel sub_GAME_7F0431E4 +/* 077D14 7F0431E4 27BDFEE8 */ addiu $sp, $sp, -0x118 +/* 077D18 7F0431E8 AFBF001C */ sw $ra, 0x1c($sp) +/* 077D1C 7F0431EC AFB10018 */ sw $s1, 0x18($sp) +/* 077D20 7F0431F0 AFB00014 */ sw $s0, 0x14($sp) +/* 077D24 7F0431F4 AFA5011C */ sw $a1, 0x11c($sp) +/* 077D28 7F0431F8 8C8E0064 */ lw $t6, 0x64($a0) +/* 077D2C 7F0431FC 3C01FFFE */ li $at, 0xFFFE0000 # -nan +/* 077D30 7F043200 3421FFFF */ ori $at, (0xFFFEFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 077D34 7F043204 01C17824 */ and $t7, $t6, $at +/* 077D38 7F043208 31F90080 */ andi $t9, $t7, 0x80 +/* 077D3C 7F04320C 00808825 */ move $s1, $a0 +/* 077D40 7F043210 1320010A */ beqz $t9, .L7F04363C +/* 077D44 7F043214 AC8F0064 */ sw $t7, 0x64($a0) +/* 077D48 7F043218 90880003 */ lbu $t0, 3($a0) +/* 077D4C 7F04321C 8C90006C */ lw $s0, 0x6c($a0) +/* 077D50 7F043220 24010001 */ li $at, 1 +/* 077D54 7F043224 15010009 */ bne $t0, $at, .L7F04324C +/* 077D58 7F043228 26240018 */ addiu $a0, $s1, 0x18 +/* 077D5C 7F04322C 0FC0FEDC */ jal sub_GAME_7F03FB70 +/* 077D60 7F043230 02002025 */ move $a0, $s0 +/* 077D64 7F043234 8E290064 */ lw $t1, 0x64($s1) +/* 077D68 7F043238 2401FF7F */ li $at, -129 +/* 077D6C 7F04323C AE20006C */ sw $zero, 0x6c($s1) +/* 077D70 7F043240 01215024 */ and $t2, $t1, $at +/* 077D74 7F043244 100000FD */ b .L7F04363C +/* 077D78 7F043248 AE2A0064 */ sw $t2, 0x64($s1) +.L7F04324C: +/* 077D7C 7F04324C 8E0B0000 */ lw $t3, ($s0) +/* 077D80 7F043250 2401FFFE */ li $at, -2 +/* 077D84 7F043254 AE000088 */ sw $zero, 0x88($s0) +/* 077D88 7F043258 01616024 */ and $t4, $t3, $at +/* 077D8C 7F04325C 2401FFFB */ li $at, -5 +/* 077D90 7F043260 AE0C0000 */ sw $t4, ($s0) +/* 077D94 7F043264 01817024 */ and $t6, $t4, $at +/* 077D98 7F043268 AE0E0000 */ sw $t6, ($s0) +/* 077D9C 7F04326C AFA40028 */ sw $a0, 0x28($sp) +/* 077DA0 7F043270 0FC16218 */ jal sub_GAME_7F058860 +/* 077DA4 7F043274 27A5010C */ addiu $a1, $sp, 0x10c +/* 077DA8 7F043278 27A4010C */ addiu $a0, $sp, 0x10c +/* 077DAC 7F04327C 0FC161C5 */ jal sub_GAME_7F058714 +/* 077DB0 7F043280 27A500CC */ addiu $a1, $sp, 0xcc +/* 077DB4 7F043284 26050068 */ addiu $a1, $s0, 0x68 +/* 077DB8 7F043288 AFA50024 */ sw $a1, 0x24($sp) +/* 077DBC 7F04328C 0FC16CFD */ jal sub_GAME_7F05B3F4 +/* 077DC0 7F043290 27A4010C */ addiu $a0, $sp, 0x10c +/* 077DC4 7F043294 27A400CC */ addiu $a0, $sp, 0xcc +/* 077DC8 7F043298 0FC1674E */ jal sub_GAME_7F059D38 +/* 077DCC 7F04329C 27A5008C */ addiu $a1, $sp, 0x8c +/* 077DD0 7F0432A0 27A4008C */ addiu $a0, $sp, 0x8c +/* 077DD4 7F0432A4 8FA50028 */ lw $a1, 0x28($sp) +/* 077DD8 7F0432A8 0FC16032 */ jal sub_GAME_7F0580C8 +/* 077DDC 7F0432AC 27A6004C */ addiu $a2, $sp, 0x4c +/* 077DE0 7F0432B0 C7A2004C */ lwc1 $f2, 0x4c($sp) +/* 077DE4 7F0432B4 C7AE0050 */ lwc1 $f14, 0x50($sp) +/* 077DE8 7F0432B8 C7A00054 */ lwc1 $f0, 0x54($sp) +/* 077DEC 7F0432BC 46021102 */ mul.s $f4, $f2, $f2 +/* 077DF0 7F0432C0 00000000 */ nop +/* 077DF4 7F0432C4 460E7182 */ mul.s $f6, $f14, $f14 +/* 077DF8 7F0432C8 46062200 */ add.s $f8, $f4, $f6 +/* 077DFC 7F0432CC 46000282 */ mul.s $f10, $f0, $f0 +/* 077E00 7F0432D0 0C007DF8 */ jal sqrtf +/* 077E04 7F0432D4 46085300 */ add.s $f12, $f10, $f8 +/* 077E08 7F0432D8 E60000C0 */ swc1 $f0, 0xc0($s0) +/* 077E0C 7F0432DC C7A4005C */ lwc1 $f4, 0x5c($sp) +/* 077E10 7F0432E0 C7AA0060 */ lwc1 $f10, 0x60($sp) +/* 077E14 7F0432E4 46042182 */ mul.s $f6, $f4, $f4 +/* 077E18 7F0432E8 00000000 */ nop +/* 077E1C 7F0432EC 460A5202 */ mul.s $f8, $f10, $f10 +/* 077E20 7F0432F0 C7AA0064 */ lwc1 $f10, 0x64($sp) +/* 077E24 7F0432F4 46083100 */ add.s $f4, $f6, $f8 +/* 077E28 7F0432F8 460A5182 */ mul.s $f6, $f10, $f10 +/* 077E2C 7F0432FC 0C007DF8 */ jal sqrtf +/* 077E30 7F043300 46043300 */ add.s $f12, $f6, $f4 +/* 077E34 7F043304 E60000C4 */ swc1 $f0, 0xc4($s0) +/* 077E38 7F043308 C7A8006C */ lwc1 $f8, 0x6c($sp) +/* 077E3C 7F04330C C7A60070 */ lwc1 $f6, 0x70($sp) +/* 077E40 7F043310 46084282 */ mul.s $f10, $f8, $f8 +/* 077E44 7F043314 00000000 */ nop +/* 077E48 7F043318 46063102 */ mul.s $f4, $f6, $f6 +/* 077E4C 7F04331C C7A60074 */ lwc1 $f6, 0x74($sp) +/* 077E50 7F043320 46045200 */ add.s $f8, $f10, $f4 +/* 077E54 7F043324 46063282 */ mul.s $f10, $f6, $f6 +/* 077E58 7F043328 0C007DF8 */ jal sqrtf +/* 077E5C 7F04332C 46085300 */ add.s $f12, $f10, $f8 +/* 077E60 7F043330 E60000C8 */ swc1 $f0, 0xc8($s0) +/* 077E64 7F043334 44808000 */ mtc1 $zero, $f16 +/* 077E68 7F043338 C6220018 */ lwc1 $f2, 0x18($s1) +/* 077E6C 7F04333C C62E0020 */ lwc1 $f14, 0x20($s1) +/* 077E70 7F043340 46101032 */ c.eq.s $f2, $f16 +/* 077E74 7F043344 00000000 */ nop +/* 077E78 7F043348 45000005 */ bc1f .L7F043360 +/* 077E7C 7F04334C 00000000 */ nop +/* 077E80 7F043350 46107032 */ c.eq.s $f14, $f16 +/* 077E84 7F043354 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 077E88 7F043358 45030013 */ bc1tl .L7F0433A8 +/* 077E8C 7F04335C 44817000 */ mtc1 $at, $f14 +.L7F043360: +/* 077E90 7F043360 46021102 */ mul.s $f4, $f2, $f2 +/* 077E94 7F043364 E7A20048 */ swc1 $f2, 0x48($sp) +/* 077E98 7F043368 E7AE0044 */ swc1 $f14, 0x44($sp) +/* 077E9C 7F04336C 460E7182 */ mul.s $f6, $f14, $f14 +/* 077EA0 7F043370 0C007DF8 */ jal sqrtf +/* 077EA4 7F043374 46062300 */ add.s $f12, $f4, $f6 +/* 077EA8 7F043378 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 077EAC 7F04337C 44819000 */ mtc1 $at, $f18 +/* 077EB0 7F043380 C7A20048 */ lwc1 $f2, 0x48($sp) +/* 077EB4 7F043384 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 077EB8 7F043388 46009303 */ div.s $f12, $f18, $f0 +/* 077EBC 7F04338C 44808000 */ mtc1 $zero, $f16 +/* 077EC0 7F043390 460C1082 */ mul.s $f2, $f2, $f12 +/* 077EC4 7F043394 00000000 */ nop +/* 077EC8 7F043398 460C7382 */ mul.s $f14, $f14, $f12 +/* 077ECC 7F04339C 10000004 */ b .L7F0433B0 +/* 077ED0 7F0433A0 00000000 */ nop +/* 077ED4 7F0433A4 44817000 */ mtc1 $at, $f14 +.L7F0433A8: +/* 077ED8 7F0433A8 44819000 */ mtc1 $at, $f18 +/* 077EDC 7F0433AC 46008086 */ mov.s $f2, $f16 +.L7F0433B0: +/* 077EE0 7F0433B0 E7A2008C */ swc1 $f2, 0x8c($sp) +/* 077EE4 7F0433B4 E7B00090 */ swc1 $f16, 0x90($sp) +/* 077EE8 7F0433B8 E7AE0094 */ swc1 $f14, 0x94($sp) +/* 077EEC 7F0433BC E7B00098 */ swc1 $f16, 0x98($sp) +/* 077EF0 7F0433C0 C62A002C */ lwc1 $f10, 0x2c($s1) +/* 077EF4 7F0433C4 3C01BF80 */ li $at, 0xBF800000 # -1.000000 +/* 077EF8 7F0433C8 27A4008C */ addiu $a0, $sp, 0x8c +/* 077EFC 7F0433CC 460A803E */ c.le.s $f16, $f10 +/* 077F00 7F0433D0 27A5010C */ addiu $a1, $sp, 0x10c +/* 077F04 7F0433D4 4502000C */ bc1fl .L7F043408 +/* 077F08 7F0433D8 44812000 */ mtc1 $at, $f4 +/* 077F0C 7F0433DC 46007207 */ neg.s $f8, $f14 +/* 077F10 7F0433E0 E7B0009C */ swc1 $f16, 0x9c($sp) +/* 077F14 7F0433E4 E7B200A0 */ swc1 $f18, 0xa0($sp) +/* 077F18 7F0433E8 E7B000A4 */ swc1 $f16, 0xa4($sp) +/* 077F1C 7F0433EC E7B000A8 */ swc1 $f16, 0xa8($sp) +/* 077F20 7F0433F0 E7A800AC */ swc1 $f8, 0xac($sp) +/* 077F24 7F0433F4 E7B000B0 */ swc1 $f16, 0xb0($sp) +/* 077F28 7F0433F8 E7A200B4 */ swc1 $f2, 0xb4($sp) +/* 077F2C 7F0433FC 1000000B */ b .L7F04342C +/* 077F30 7F043400 E7B000B8 */ swc1 $f16, 0xb8($sp) +/* 077F34 7F043404 44812000 */ mtc1 $at, $f4 +.L7F043408: +/* 077F38 7F043408 46001187 */ neg.s $f6, $f2 +/* 077F3C 7F04340C E7B0009C */ swc1 $f16, 0x9c($sp) +/* 077F40 7F043410 E7B000A4 */ swc1 $f16, 0xa4($sp) +/* 077F44 7F043414 E7B000A8 */ swc1 $f16, 0xa8($sp) +/* 077F48 7F043418 E7AE00AC */ swc1 $f14, 0xac($sp) +/* 077F4C 7F04341C E7B000B0 */ swc1 $f16, 0xb0($sp) +/* 077F50 7F043420 E7A600B4 */ swc1 $f6, 0xb4($sp) +/* 077F54 7F043424 E7B000B8 */ swc1 $f16, 0xb8($sp) +/* 077F58 7F043428 E7A400A0 */ swc1 $f4, 0xa0($sp) +.L7F04342C: +/* 077F5C 7F04342C E7B000BC */ swc1 $f16, 0xbc($sp) +/* 077F60 7F043430 E7B000C0 */ swc1 $f16, 0xc0($sp) +/* 077F64 7F043434 E7B000C4 */ swc1 $f16, 0xc4($sp) +/* 077F68 7F043438 0FC16218 */ jal sub_GAME_7F058860 +/* 077F6C 7F04343C E7B200C8 */ swc1 $f18, 0xc8($sp) +/* 077F70 7F043440 26050078 */ addiu $a1, $s0, 0x78 +/* 077F74 7F043444 AFA50028 */ sw $a1, 0x28($sp) +/* 077F78 7F043448 0FC16CFD */ jal sub_GAME_7F05B3F4 +/* 077F7C 7F04344C 27A4010C */ addiu $a0, $sp, 0x10c +/* 077F80 7F043450 8FA50028 */ lw $a1, 0x28($sp) +/* 077F84 7F043454 0FC16F84 */ jal sub_GAME_7F05BE10 +/* 077F88 7F043458 8FA40024 */ lw $a0, 0x24($sp) +/* 077F8C 7F04345C 44808000 */ mtc1 $zero, $f16 +/* 077F90 7F043460 00000000 */ nop +/* 077F94 7F043464 E6100060 */ swc1 $f16, 0x60($s0) +/* 077F98 7F043468 C7A800CC */ lwc1 $f8, 0xcc($sp) +/* 077F9C 7F04346C C7AA008C */ lwc1 $f10, 0x8c($sp) +/* 077FA0 7F043470 C7A60090 */ lwc1 $f6, 0x90($sp) +/* 077FA4 7F043474 46085102 */ mul.s $f4, $f10, $f8 +/* 077FA8 7F043478 C7AA00D0 */ lwc1 $f10, 0xd0($sp) +/* 077FAC 7F04347C 460A3202 */ mul.s $f8, $f6, $f10 +/* 077FB0 7F043480 C7AA00D4 */ lwc1 $f10, 0xd4($sp) +/* 077FB4 7F043484 46082180 */ add.s $f6, $f4, $f8 +/* 077FB8 7F043488 C7A40094 */ lwc1 $f4, 0x94($sp) +/* 077FBC 7F04348C 46045202 */ mul.s $f8, $f10, $f4 +/* 077FC0 7F043490 0FC16B2C */ jal sub_GAME_7F05ACB0 +/* 077FC4 7F043494 46064300 */ add.s $f12, $f8, $f6 +/* 077FC8 7F043498 44808000 */ mtc1 $zero, $f16 +/* 077FCC 7F04349C 46000486 */ mov.s $f18, $f0 +/* 077FD0 7F0434A0 4600803C */ c.lt.s $f16, $f0 +/* 077FD4 7F0434A4 00000000 */ nop +/* 077FD8 7F0434A8 45020018 */ bc1fl .L7F04350C +/* 077FDC 7F0434AC 4600803C */ c.lt.s $f16, $f0 +/* 077FE0 7F0434B0 C622001C */ lwc1 $f2, 0x1c($s1) +/* 077FE4 7F0434B4 8FA2011C */ lw $v0, 0x11c($sp) +/* 077FE8 7F0434B8 4602803C */ c.lt.s $f16, $f2 +/* 077FEC 7F0434BC 00000000 */ nop +/* 077FF0 7F0434C0 45020012 */ bc1fl .L7F04350C +/* 077FF4 7F0434C4 4600803C */ c.lt.s $f16, $f0 +/* 077FF8 7F0434C8 C44A0004 */ lwc1 $f10, 4($v0) +/* 077FFC 7F0434CC 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 078000 7F0434D0 4602503C */ c.lt.s $f10, $f2 +/* 078004 7F0434D4 00000000 */ nop +/* 078008 7F0434D8 4502000C */ bc1fl .L7F04350C +/* 07800C 7F0434DC 4600803C */ c.lt.s $f16, $f0 +/* 078010 7F0434E0 44812000 */ mtc1 $at, $f4 +/* 078014 7F0434E4 3C018005 */ lui $at, %hi(D_80052A74) +/* 078018 7F0434E8 C4262A74 */ lwc1 $f6, %lo(D_80052A74)($at) +/* 07801C 7F0434EC 46040202 */ mul.s $f8, $f0, $f4 +/* 078020 7F0434F0 3C018005 */ lui $at, %hi(D_80052A78) +/* 078024 7F0434F4 C4242A78 */ lwc1 $f4, %lo(D_80052A78)($at) +/* 078028 7F0434F8 46064283 */ div.s $f10, $f8, $f6 +/* 07802C 7F0434FC 460A2203 */ div.s $f8, $f4, $f10 +/* 078030 7F043500 10000037 */ b .L7F0435E0 +/* 078034 7F043504 E6080064 */ swc1 $f8, 0x64($s0) +/* 078038 7F043508 4600803C */ c.lt.s $f16, $f0 +.L7F04350C: +/* 07803C 7F04350C 8FA2011C */ lw $v0, 0x11c($sp) +/* 078040 7F043510 C622001C */ lwc1 $f2, 0x1c($s1) +/* 078044 7F043514 45000013 */ bc1f .L7F043564 +/* 078048 7F043518 C44E0004 */ lwc1 $f14, 4($v0) +/* 07804C 7F04351C 4610103C */ c.lt.s $f2, $f16 +/* 078050 7F043520 00000000 */ nop +/* 078054 7F043524 45020010 */ bc1fl .L7F043568 +/* 078058 7F043528 C62A0020 */ lwc1 $f10, 0x20($s1) +/* 07805C 7F04352C 460E103C */ c.lt.s $f2, $f14 +/* 078060 7F043530 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 078064 7F043534 4502000C */ bc1fl .L7F043568 +/* 078068 7F043538 C62A0020 */ lwc1 $f10, 0x20($s1) +/* 07806C 7F04353C 44813000 */ mtc1 $at, $f6 +/* 078070 7F043540 3C018005 */ lui $at, %hi(D_80052A7C) +/* 078074 7F043544 C42A2A7C */ lwc1 $f10, %lo(D_80052A7C)($at) +/* 078078 7F043548 46060102 */ mul.s $f4, $f0, $f6 +/* 07807C 7F04354C 3C018005 */ lui $at, %hi(D_80052A80) +/* 078080 7F043550 C4262A80 */ lwc1 $f6, %lo(D_80052A80)($at) +/* 078084 7F043554 460A2203 */ div.s $f8, $f4, $f10 +/* 078088 7F043558 46083103 */ div.s $f4, $f6, $f8 +/* 07808C 7F04355C 10000020 */ b .L7F0435E0 +/* 078090 7F043560 E6040064 */ swc1 $f4, 0x64($s0) +.L7F043564: +/* 078094 7F043564 C62A0020 */ lwc1 $f10, 0x20($s1) +.L7F043568: +/* 078098 7F043568 C4460008 */ lwc1 $f6, 8($v0) +/* 07809C 7F04356C C4440000 */ lwc1 $f4, ($v0) +/* 0780A0 7F043570 8E2F0014 */ lw $t7, 0x14($s1) +/* 0780A4 7F043574 46065202 */ mul.s $f8, $f10, $f6 +/* 0780A8 7F043578 C62A0018 */ lwc1 $f10, 0x18($s1) +/* 0780AC 7F04357C C5E00014 */ lwc1 $f0, 0x14($t7) +/* 0780B0 7F043580 E7B20030 */ swc1 $f18, 0x30($sp) +/* 0780B4 7F043584 460A2182 */ mul.s $f6, $f4, $f10 +/* 0780B8 7F043588 00000000 */ nop +/* 0780BC 7F04358C 46027102 */ mul.s $f4, $f14, $f2 +/* 0780C0 7F043590 46043280 */ add.s $f10, $f6, $f4 +/* 0780C4 7F043594 46000102 */ mul.s $f4, $f0, $f0 +/* 0780C8 7F043598 460A4180 */ add.s $f6, $f8, $f10 +/* 0780CC 7F04359C 0FC16B2C */ jal sub_GAME_7F05ACB0 +/* 0780D0 7F0435A0 46043303 */ div.s $f12, $f6, $f4 +/* 0780D4 7F0435A4 44808000 */ mtc1 $zero, $f16 +/* 0780D8 7F0435A8 C7B20030 */ lwc1 $f18, 0x30($sp) +/* 0780DC 7F0435AC 3C018005 */ lui $at, %hi(global_timer_delta) +/* 0780E0 7F0435B0 C4288378 */ lwc1 $f8, %lo(global_timer_delta)($at) +/* 0780E4 7F0435B4 46109032 */ c.eq.s $f18, $f16 +/* 0780E8 7F0435B8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0780EC 7F0435BC 46080083 */ div.s $f2, $f0, $f8 +/* 0780F0 7F0435C0 45030005 */ bc1tl .L7F0435D8 +/* 0780F4 7F0435C4 44813000 */ mtc1 $at, $f6 +/* 0780F8 7F0435C8 46121283 */ div.s $f10, $f2, $f18 +/* 0780FC 7F0435CC 10000004 */ b .L7F0435E0 +/* 078100 7F0435D0 E60A0064 */ swc1 $f10, 0x64($s0) +/* 078104 7F0435D4 44813000 */ mtc1 $at, $f6 +.L7F0435D8: +/* 078108 7F0435D8 00000000 */ nop +/* 07810C 7F0435DC E6060064 */ swc1 $f6, 0x64($s0) +.L7F0435E0: +/* 078110 7F0435E0 C6000064 */ lwc1 $f0, 0x64($s0) +/* 078114 7F0435E4 3C018005 */ lui $at, %hi(D_80052A84) +/* 078118 7F0435E8 4610003C */ c.lt.s $f0, $f16 +/* 07811C 7F0435EC 00000000 */ nop +/* 078120 7F0435F0 45000004 */ bc1f .L7F043604 +/* 078124 7F0435F4 00000000 */ nop +/* 078128 7F0435F8 46000107 */ neg.s $f4, $f0 +/* 07812C 7F0435FC E6040064 */ swc1 $f4, 0x64($s0) +/* 078130 7F043600 C6000064 */ lwc1 $f0, 0x64($s0) +.L7F043604: +/* 078134 7F043604 C4222A84 */ lwc1 $f2, %lo(D_80052A84)($at) +/* 078138 7F043608 3C018005 */ lui $at, %hi(D_80052A88) +/* 07813C 7F04360C 4602003C */ c.lt.s $f0, $f2 +/* 078140 7F043610 00000000 */ nop +/* 078144 7F043614 45000003 */ bc1f .L7F043624 +/* 078148 7F043618 00000000 */ nop +/* 07814C 7F04361C 10000007 */ b .L7F04363C +/* 078150 7F043620 E6020064 */ swc1 $f2, 0x64($s0) +.L7F043624: +/* 078154 7F043624 C4222A88 */ lwc1 $f2, %lo(D_80052A88)($at) +/* 078158 7F043628 4600103C */ c.lt.s $f2, $f0 +/* 07815C 7F04362C 00000000 */ nop +/* 078160 7F043630 45020003 */ bc1fl .L7F043640 +/* 078164 7F043634 8FBF001C */ lw $ra, 0x1c($sp) +/* 078168 7F043638 E6020064 */ swc1 $f2, 0x64($s0) +.L7F04363C: +/* 07816C 7F04363C 8FBF001C */ lw $ra, 0x1c($sp) +.L7F043640: +/* 078170 7F043640 8FB00014 */ lw $s0, 0x14($sp) +/* 078174 7F043644 8FB10018 */ lw $s1, 0x18($sp) +/* 078178 7F043648 03E00008 */ jr $ra +/* 07817C 7F04364C 27BD0118 */ addiu $sp, $sp, 0x118 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F043650(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F043650 +/* 078180 7F043650 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 078184 7F043654 AFBF001C */ sw $ra, 0x1c($sp) +/* 078188 7F043658 AFB00018 */ sw $s0, 0x18($sp) +/* 07818C 7F04365C 8C820064 */ lw $v0, 0x64($a0) +/* 078190 7F043660 00808025 */ move $s0, $a0 +/* 078194 7F043664 304E0080 */ andi $t6, $v0, 0x80 +/* 078198 7F043668 51C0006F */ beql $t6, $zero, .L7F043828 +/* 07819C 7F04366C 8FBF001C */ lw $ra, 0x1c($sp) +/* 0781A0 7F043670 8C83006C */ lw $v1, 0x6c($a0) +/* 0781A4 7F043674 2401FFDF */ li $at, -33 +/* 0781A8 7F043678 8C6F0000 */ lw $t7, ($v1) +/* 0781AC 7F04367C 31F80001 */ andi $t8, $t7, 1 +/* 0781B0 7F043680 53000052 */ beql $t8, $zero, .L7F0437CC +/* 0781B4 7F043684 00414024 */ and $t0, $v0, $at +/* 0781B8 7F043688 8C790090 */ lw $t9, 0x90($v1) +/* 0781BC 7F04368C 30480020 */ andi $t0, $v0, 0x20 +/* 0781C0 7F043690 5F20004E */ bgtzl $t9, .L7F0437CC +/* 0781C4 7F043694 00414024 */ and $t0, $v0, $at +/* 0781C8 7F043698 1100004B */ beqz $t0, .L7F0437C8 +/* 0781CC 7F04369C 3C0A8003 */ lui $t2, %hi(Throwing_knife_SFX) +/* 0781D0 7F0436A0 254A0B2C */ addiu $t2, %lo(Throwing_knife_SFX) # addiu $t2, $t2, 0xb2c +/* 0781D4 7F0436A4 8D410000 */ lw $at, ($t2) +/* 0781D8 7F0436A8 27A90038 */ addiu $t1, $sp, 0x38 +/* 0781DC 7F0436AC AD210000 */ sw $at, ($t1) +/* 0781E0 7F0436B0 95410004 */ lhu $at, 4($t2) +/* 0781E4 7F0436B4 A5210004 */ sh $at, 4($t1) +/* 0781E8 7F0436B8 8C8D006C */ lw $t5, 0x6c($a0) +/* 0781EC 7F0436BC 8DAE00A4 */ lw $t6, 0xa4($t5) +/* 0781F0 7F0436C0 0C002914 */ jal get_random_value +/* 0781F4 7F0436C4 AFAE0034 */ sw $t6, 0x34($sp) +/* 0781F8 7F0436C8 24010003 */ li $at, 3 +/* 0781FC 7F0436CC 0041001B */ divu $zero, $v0, $at +/* 078200 7F0436D0 00007810 */ mfhi $t7 +/* 078204 7F0436D4 AFAF0030 */ sw $t7, 0x30($sp) +/* 078208 7F0436D8 8E03006C */ lw $v1, 0x6c($s0) +/* 07820C 7F0436DC 3C198005 */ lui $t9, %hi(global_timer) +/* 078210 7F0436E0 8F39837C */ lw $t9, %lo(global_timer)($t9) +/* 078214 7F0436E4 8C7800A0 */ lw $t8, 0xa0($v1) +/* 078218 7F0436E8 8FA70034 */ lw $a3, 0x34($sp) +/* 07821C 7F0436EC 2728FFFA */ addiu $t0, $t9, -6 +/* 078220 7F0436F0 0308082A */ slt $at, $t8, $t0 +/* 078224 7F0436F4 1020000D */ beqz $at, .L7F04372C +/* 078228 7F0436F8 00075880 */ sll $t3, $a3, 2 +/* 07822C 7F0436FC 006B4821 */ addu $t1, $v1, $t3 +/* 078230 7F043700 8D240098 */ lw $a0, 0x98($t1) +/* 078234 7F043704 5080000A */ beql $a0, $zero, .L7F043730 +/* 078238 7F043708 8FA70034 */ lw $a3, 0x34($sp) +/* 07823C 7F04370C 0C00237C */ jal sfxGetArg0Unk3F +/* 078240 7F043710 AFAB002C */ sw $t3, 0x2c($sp) +/* 078244 7F043714 10400005 */ beqz $v0, .L7F04372C +/* 078248 7F043718 8FA7002C */ lw $a3, 0x2c($sp) +/* 07824C 7F04371C 8E0A006C */ lw $t2, 0x6c($s0) +/* 078250 7F043720 01476021 */ addu $t4, $t2, $a3 +/* 078254 7F043724 0C002408 */ jal sfxDeactivate +/* 078258 7F043728 8D840098 */ lw $a0, 0x98($t4) +.L7F04372C: +/* 07825C 7F04372C 8FA70034 */ lw $a3, 0x34($sp) +.L7F043730: +/* 078260 7F043730 8E0E006C */ lw $t6, 0x6c($s0) +/* 078264 7F043734 00076880 */ sll $t5, $a3, 2 +/* 078268 7F043738 01CD7821 */ addu $t7, $t6, $t5 +/* 07826C 7F04373C 8DF90098 */ lw $t9, 0x98($t7) +/* 078270 7F043740 57200039 */ bnezl $t9, .L7F043828 +/* 078274 7F043744 8FBF001C */ lw $ra, 0x1c($sp) +/* 078278 7F043748 0FC2FF01 */ jal get_controls_locked_flag +/* 07827C 7F04374C AFAD002C */ sw $t5, 0x2c($sp) +/* 078280 7F043750 14400034 */ bnez $v0, .L7F043824 +/* 078284 7F043754 8FA7002C */ lw $a3, 0x2c($sp) +/* 078288 7F043758 8FB80030 */ lw $t8, 0x30($sp) +/* 07828C 7F04375C 8E0B006C */ lw $t3, 0x6c($s0) +/* 078290 7F043760 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 078294 7F043764 00184040 */ sll $t0, $t8, 1 +/* 078298 7F043768 03A82821 */ addu $a1, $sp, $t0 +/* 07829C 7F04376C 84A50038 */ lh $a1, 0x38($a1) +/* 0782A0 7F043770 01673021 */ addu $a2, $t3, $a3 +/* 0782A4 7F043774 24C60098 */ addiu $a2, $a2, 0x98 +/* 0782A8 7F043778 AFA7002C */ sw $a3, 0x2c($sp) +/* 0782AC 7F04377C 0C002382 */ jal play_sfx_a1 +/* 0782B0 7F043780 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0782B4 7F043784 8FA7002C */ lw $a3, 0x2c($sp) +/* 0782B8 7F043788 8E09006C */ lw $t1, 0x6c($s0) +/* 0782BC 7F04378C 8E050010 */ lw $a1, 0x10($s0) +/* 0782C0 7F043790 01275021 */ addu $t2, $t1, $a3 +/* 0782C4 7F043794 8D440098 */ lw $a0, 0x98($t2) +/* 0782C8 7F043798 0FC14E84 */ jal sub_GAME_7F053A10 +/* 0782CC 7F04379C 24A50008 */ addiu $a1, $a1, 8 +/* 0782D0 7F0437A0 3C0C8005 */ lui $t4, %hi(global_timer) +/* 0782D4 7F0437A4 8D8C837C */ lw $t4, %lo(global_timer)($t4) +/* 0782D8 7F0437A8 8E0D006C */ lw $t5, 0x6c($s0) +/* 0782DC 7F0437AC 240F0001 */ li $t7, 1 +/* 0782E0 7F0437B0 ADAC00A0 */ sw $t4, 0xa0($t5) +/* 0782E4 7F0437B4 8FAE0034 */ lw $t6, 0x34($sp) +/* 0782E8 7F0437B8 8E18006C */ lw $t8, 0x6c($s0) +/* 0782EC 7F0437BC 01EEC823 */ subu $t9, $t7, $t6 +/* 0782F0 7F0437C0 10000018 */ b .L7F043824 +/* 0782F4 7F0437C4 AF1900A4 */ sw $t9, 0xa4($t8) +.L7F0437C8: +/* 0782F8 7F0437C8 00414024 */ and $t0, $v0, $at +.L7F0437CC: +/* 0782FC 7F0437CC AE080064 */ sw $t0, 0x64($s0) +/* 078300 7F0437D0 8C640098 */ lw $a0, 0x98($v1) +/* 078304 7F0437D4 50800009 */ beql $a0, $zero, .L7F0437FC +/* 078308 7F0437D8 8E09006C */ lw $t1, 0x6c($s0) +/* 07830C 7F0437DC 0C00237C */ jal sfxGetArg0Unk3F +/* 078310 7F0437E0 00000000 */ nop +/* 078314 7F0437E4 50400005 */ beql $v0, $zero, .L7F0437FC +/* 078318 7F0437E8 8E09006C */ lw $t1, 0x6c($s0) +/* 07831C 7F0437EC 8E0B006C */ lw $t3, 0x6c($s0) +/* 078320 7F0437F0 0C002408 */ jal sfxDeactivate +/* 078324 7F0437F4 8D640098 */ lw $a0, 0x98($t3) +/* 078328 7F0437F8 8E09006C */ lw $t1, 0x6c($s0) +.L7F0437FC: +/* 07832C 7F0437FC 8D24009C */ lw $a0, 0x9c($t1) +/* 078330 7F043800 50800009 */ beql $a0, $zero, .L7F043828 +/* 078334 7F043804 8FBF001C */ lw $ra, 0x1c($sp) +/* 078338 7F043808 0C00237C */ jal sfxGetArg0Unk3F +/* 07833C 7F04380C 00000000 */ nop +/* 078340 7F043810 50400005 */ beql $v0, $zero, .L7F043828 +/* 078344 7F043814 8FBF001C */ lw $ra, 0x1c($sp) +/* 078348 7F043818 8E0A006C */ lw $t2, 0x6c($s0) +/* 07834C 7F04381C 0C002408 */ jal sfxDeactivate +/* 078350 7F043820 8D44009C */ lw $a0, 0x9c($t2) +.L7F043824: +/* 078354 7F043824 8FBF001C */ lw $ra, 0x1c($sp) +.L7F043828: +/* 078358 7F043828 8FB00018 */ lw $s0, 0x18($sp) +/* 07835C 7F04382C 27BD0040 */ addiu $sp, $sp, 0x40 +/* 078360 7F043830 03E00008 */ jr $ra +/* 078364 7F043834 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F043838(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052A8C +.word 0xbfc90fdb /*-1.5707964*/ +glabel D_80052A90 +.word 0xbfc90fdb /*-1.5707964*/ +.text +glabel sub_GAME_7F043838 +/* 078368 7F043838 27BDFED8 */ addiu $sp, $sp, -0x128 +/* 07836C 7F04383C AFBF0014 */ sw $ra, 0x14($sp) +/* 078370 7F043840 AFA5012C */ sw $a1, 0x12c($sp) +/* 078374 7F043844 C4820000 */ lwc1 $f2, ($a0) +/* 078378 7F043848 C48E0004 */ lwc1 $f14, 4($a0) +/* 07837C 7F04384C C4800008 */ lwc1 $f0, 8($a0) +/* 078380 7F043850 46021102 */ mul.s $f4, $f2, $f2 +/* 078384 7F043854 AFA40128 */ sw $a0, 0x128($sp) +/* 078388 7F043858 460E7182 */ mul.s $f6, $f14, $f14 +/* 07838C 7F04385C 46062200 */ add.s $f8, $f4, $f6 +/* 078390 7F043860 46000282 */ mul.s $f10, $f0, $f0 +/* 078394 7F043864 0C007DF8 */ jal sqrtf +/* 078398 7F043868 46085300 */ add.s $f12, $f10, $f8 +/* 07839C 7F04386C 8FA40128 */ lw $a0, 0x128($sp) +/* 0783A0 7F043870 44801000 */ mtc1 $zero, $f2 +/* 0783A4 7F043874 C4840000 */ lwc1 $f4, ($a0) +/* 0783A8 7F043878 C4860004 */ lwc1 $f6, 4($a0) +/* 0783AC 7F04387C C48A0008 */ lwc1 $f10, 8($a0) +/* 0783B0 7F043880 46002383 */ div.s $f14, $f4, $f0 +/* 0783B4 7F043884 46003483 */ div.s $f18, $f6, $f0 +/* 0783B8 7F043888 46027032 */ c.eq.s $f14, $f2 +/* 0783BC 7F04388C 00000000 */ nop +/* 0783C0 7F043890 4500000C */ bc1f .L7F0438C4 +/* 0783C4 7F043894 46005403 */ div.s $f16, $f10, $f0 +/* 0783C8 7F043898 46028032 */ c.eq.s $f16, $f2 +/* 0783CC 7F04389C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0783D0 7F0438A0 45000008 */ bc1f .L7F0438C4 +/* 0783D4 7F0438A4 00000000 */ nop +/* 0783D8 7F0438A8 44814000 */ mtc1 $at, $f8 +/* 0783DC 7F0438AC E7A20124 */ swc1 $f2, 0x124($sp) +/* 0783E0 7F0438B0 E7A20120 */ swc1 $f2, 0x120($sp) +/* 0783E4 7F0438B4 E7B2011C */ swc1 $f18, 0x11c($sp) +/* 0783E8 7F0438B8 E7A20114 */ swc1 $f2, 0x114($sp) +/* 0783EC 7F0438BC 10000016 */ b .L7F043918 +/* 0783F0 7F0438C0 E7A80118 */ swc1 $f8, 0x118($sp) +.L7F0438C4: +/* 0783F4 7F0438C4 460E7102 */ mul.s $f4, $f14, $f14 +/* 0783F8 7F0438C8 E7AE010C */ swc1 $f14, 0x10c($sp) +/* 0783FC 7F0438CC E7B00104 */ swc1 $f16, 0x104($sp) +/* 078400 7F0438D0 46108182 */ mul.s $f6, $f16, $f16 +/* 078404 7F0438D4 E7B20108 */ swc1 $f18, 0x108($sp) +/* 078408 7F0438D8 0C007DF8 */ jal sqrtf +/* 07840C 7F0438DC 46062300 */ add.s $f12, $f4, $f6 +/* 078410 7F0438E0 C7AE010C */ lwc1 $f14, 0x10c($sp) +/* 078414 7F0438E4 C7B00104 */ lwc1 $f16, 0x104($sp) +/* 078418 7F0438E8 C7B20108 */ lwc1 $f18, 0x108($sp) +/* 07841C 7F0438EC 46007083 */ div.s $f2, $f14, $f0 +/* 078420 7F0438F0 46000107 */ neg.s $f4, $f0 +/* 078424 7F0438F4 E7A40120 */ swc1 $f4, 0x120($sp) +/* 078428 7F0438F8 46008303 */ div.s $f12, $f16, $f0 +/* 07842C 7F0438FC 46029202 */ mul.s $f8, $f18, $f2 +/* 078430 7F043900 46001287 */ neg.s $f10, $f2 +/* 078434 7F043904 E7AA0114 */ swc1 $f10, 0x114($sp) +/* 078438 7F043908 E7A80124 */ swc1 $f8, 0x124($sp) +/* 07843C 7F04390C 460C9182 */ mul.s $f6, $f18, $f12 +/* 078440 7F043910 E7AC0118 */ swc1 $f12, 0x118($sp) +/* 078444 7F043914 E7A6011C */ swc1 $f6, 0x11c($sp) +.L7F043918: +/* 078448 7F043918 C7AC0118 */ lwc1 $f12, 0x118($sp) +/* 07844C 7F04391C 0FC16A8C */ jal convert_angle_using_inverse +/* 078450 7F043920 C7AE0114 */ lwc1 $f14, 0x114($sp) +/* 078454 7F043924 E7A000F4 */ swc1 $f0, 0xf4($sp) +/* 078458 7F043928 46000307 */ neg.s $f12, $f0 +/* 07845C 7F04392C 0FC1617F */ jal sub_GAME_7F0585FC +/* 078460 7F043930 27A500B0 */ addiu $a1, $sp, 0xb0 +/* 078464 7F043934 C7AA0124 */ lwc1 $f10, 0x124($sp) +/* 078468 7F043938 C7A80120 */ lwc1 $f8, 0x120($sp) +/* 07846C 7F04393C C7A4011C */ lwc1 $f4, 0x11c($sp) +/* 078470 7F043940 27A400B0 */ addiu $a0, $sp, 0xb0 +/* 078474 7F043944 27A50024 */ addiu $a1, $sp, 0x24 +/* 078478 7F043948 E7AA0024 */ swc1 $f10, 0x24($sp) +/* 07847C 7F04394C E7A80028 */ swc1 $f8, 0x28($sp) +/* 078480 7F043950 0FC160F6 */ jal sub_GAME_7F0583D8 +/* 078484 7F043954 E7A4002C */ swc1 $f4, 0x2c($sp) +/* 078488 7F043958 C7AC0024 */ lwc1 $f12, 0x24($sp) +/* 07848C 7F04395C 0FC16A8C */ jal convert_angle_using_inverse +/* 078490 7F043960 C7AE0028 */ lwc1 $f14, 0x28($sp) +/* 078494 7F043964 3C018005 */ lui $at, %hi(D_80052A8C) +/* 078498 7F043968 C4262A8C */ lwc1 $f6, %lo(D_80052A8C)($at) +/* 07849C 7F04396C C7AA00F4 */ lwc1 $f10, 0xf4($sp) +/* 0784A0 7F043970 E7A000F0 */ swc1 $f0, 0xf0($sp) +/* 0784A4 7F043974 27A50070 */ addiu $a1, $sp, 0x70 +/* 0784A8 7F043978 0FC1617F */ jal sub_GAME_7F0585FC +/* 0784AC 7F04397C 460A3300 */ add.s $f12, $f6, $f10 +/* 0784B0 7F043980 3C018005 */ lui $at, %hi(D_80052A90) +/* 0784B4 7F043984 C4282A90 */ lwc1 $f8, %lo(D_80052A90)($at) +/* 0784B8 7F043988 C7A400F0 */ lwc1 $f4, 0xf0($sp) +/* 0784BC 7F04398C 27A50030 */ addiu $a1, $sp, 0x30 +/* 0784C0 7F043990 0FC1615C */ jal sub_GAME_7F058570 +/* 0784C4 7F043994 46044301 */ sub.s $f12, $f8, $f4 +/* 0784C8 7F043998 27A40070 */ addiu $a0, $sp, 0x70 +/* 0784CC 7F04399C 27A50030 */ addiu $a1, $sp, 0x30 +/* 0784D0 7F0439A0 0FC16032 */ jal sub_GAME_7F0580C8 +/* 0784D4 7F0439A4 8FA6012C */ lw $a2, 0x12c($sp) +/* 0784D8 7F0439A8 8FBF0014 */ lw $ra, 0x14($sp) +/* 0784DC 7F0439AC 27BD0128 */ addiu $sp, $sp, 0x128 +/* 0784E0 7F0439B0 03E00008 */ jr $ra +/* 0784E4 7F0439B4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0439B8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0439B8 +/* 0784E8 7F0439B8 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 0784EC 7F0439BC AFB00018 */ sw $s0, 0x18($sp) +/* 0784F0 7F0439C0 00808025 */ move $s0, $a0 +/* 0784F4 7F0439C4 AFBF001C */ sw $ra, 0x1c($sp) +/* 0784F8 7F0439C8 AFA5006C */ sw $a1, 0x6c($sp) +/* 0784FC 7F0439CC AFA60070 */ sw $a2, 0x70($sp) +/* 078500 7F0439D0 27A50028 */ addiu $a1, $sp, 0x28 +/* 078504 7F0439D4 0FC10E0E */ jal sub_GAME_7F043838 +/* 078508 7F0439D8 00E02025 */ move $a0, $a3 +/* 07850C 7F0439DC 8E0E0014 */ lw $t6, 0x14($s0) +/* 078510 7F0439E0 27A50028 */ addiu $a1, $sp, 0x28 +/* 078514 7F0439E4 0FC1629F */ jal matrix_multiply_A1_by_F12 +/* 078518 7F0439E8 C5CC0014 */ lwc1 $f12, 0x14($t6) +/* 07851C 7F0439EC 02002025 */ move $a0, $s0 +/* 078520 7F0439F0 8FA5006C */ lw $a1, 0x6c($sp) +/* 078524 7F0439F4 27A60028 */ addiu $a2, $sp, 0x28 +/* 078528 7F0439F8 0FC101D5 */ jal sub_GAME_7F040754 +/* 07852C 7F0439FC 8FA70070 */ lw $a3, 0x70($sp) +/* 078530 7F043A00 8E0F0014 */ lw $t7, 0x14($s0) +/* 078534 7F043A04 0FC0FFFE */ jal sub_GAME_7F03FFF8 +/* 078538 7F043A08 8DE40008 */ lw $a0, 8($t7) +/* 07853C 7F043A0C 0FC0FA19 */ jal sub_GAME_7F03E864 +/* 078540 7F043A10 00402025 */ move $a0, $v0 +/* 078544 7F043A14 C6060028 */ lwc1 $f6, 0x28($s0) +/* 078548 7F043A18 C6040058 */ lwc1 $f4, 0x58($s0) +/* 07854C 7F043A1C C612002C */ lwc1 $f18, 0x2c($s0) +/* 078550 7F043A20 46060202 */ mul.s $f8, $f0, $f6 +/* 078554 7F043A24 C610005C */ lwc1 $f16, 0x5c($s0) +/* 078558 7F043A28 02002025 */ move $a0, $s0 +/* 07855C 7F043A2C 46120182 */ mul.s $f6, $f0, $f18 +/* 078560 7F043A30 46082281 */ sub.s $f10, $f4, $f8 +/* 078564 7F043A34 C6080060 */ lwc1 $f8, 0x60($s0) +/* 078568 7F043A38 46068101 */ sub.s $f4, $f16, $f6 +/* 07856C 7F043A3C E60A0058 */ swc1 $f10, 0x58($s0) +/* 078570 7F043A40 C60A0030 */ lwc1 $f10, 0x30($s0) +/* 078574 7F043A44 E604005C */ swc1 $f4, 0x5c($s0) +/* 078578 7F043A48 460A0482 */ mul.s $f18, $f0, $f10 +/* 07857C 7F043A4C 46124401 */ sub.s $f16, $f8, $f18 +/* 078580 7F043A50 0FC10121 */ jal sub_GAME_7F040484 +/* 078584 7F043A54 E6100060 */ swc1 $f16, 0x60($s0) +/* 078588 7F043A58 8FBF001C */ lw $ra, 0x1c($sp) +/* 07858C 7F043A5C 8FB00018 */ lw $s0, 0x18($sp) +/* 078590 7F043A60 27BD0068 */ addiu $sp, $sp, 0x68 +/* 078594 7F043A64 03E00008 */ jr $ra +/* 078598 7F043A68 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F043A6C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F043A6C +/* 07859C 7F043A6C 27BDFF10 */ addiu $sp, $sp, -0xf0 +/* 0785A0 7F043A70 AFBF001C */ sw $ra, 0x1c($sp) +/* 0785A4 7F043A74 AFB10018 */ sw $s1, 0x18($sp) +/* 0785A8 7F043A78 AFB00014 */ sw $s0, 0x14($sp) +/* 0785AC 7F043A7C AFA500F4 */ sw $a1, 0xf4($sp) +/* 0785B0 7F043A80 AFA600F8 */ sw $a2, 0xf8($sp) +/* 0785B4 7F043A84 AFA700FC */ sw $a3, 0xfc($sp) +/* 0785B8 7F043A88 90AF0001 */ lbu $t7, 1($a1) +/* 0785BC 7F043A8C 00808825 */ move $s1, $a0 +/* 0785C0 7F043A90 31F80002 */ andi $t8, $t7, 2 +/* 0785C4 7F043A94 53000034 */ beql $t8, $zero, .L7F043B68 +/* 0785C8 7F043A98 00001025 */ move $v0, $zero +/* 0785CC 7F043A9C 0FC0FFA6 */ jal sub_GAME_7F03FE98 +/* 0785D0 7F043AA0 8C900004 */ lw $s0, 4($a0) +/* 0785D4 7F043AA4 1040002F */ beqz $v0, .L7F043B64 +/* 0785D8 7F043AA8 AE02006C */ sw $v0, 0x6c($s0) +/* 0785DC 7F043AAC 8FA400F8 */ lw $a0, 0xf8($sp) +/* 0785E0 7F043AB0 8FA500FC */ lw $a1, 0xfc($sp) +/* 0785E4 7F043AB4 0FC1B198 */ jal sub_GAME_7F06C660 +/* 0785E8 7F043AB8 00003025 */ move $a2, $zero +/* 0785EC 7F043ABC AFA20028 */ sw $v0, 0x28($sp) +/* 0785F0 7F043AC0 8E190064 */ lw $t9, 0x64($s0) +/* 0785F4 7F043AC4 02202025 */ move $a0, $s1 +/* 0785F8 7F043AC8 37280040 */ ori $t0, $t9, 0x40 +/* 0785FC 7F043ACC 0FC0F863 */ jal sub_GAME_7F03E18C +/* 078600 7F043AD0 AE080064 */ sw $t0, 0x64($s0) +/* 078604 7F043AD4 0FC0E94E */ jal sub_GAME_7F03A538 +/* 078608 7F043AD8 02202025 */ move $a0, $s1 +/* 07860C 7F043ADC 0FC0E905 */ jal unset_stateflag_0x04_for_posdata +/* 078610 7F043AE0 02202025 */ move $a0, $s1 +/* 078614 7F043AE4 8FA900F8 */ lw $t1, 0xf8($sp) +/* 078618 7F043AE8 8E0A0014 */ lw $t2, 0x14($s0) +/* 07861C 7F043AEC 02202025 */ move $a0, $s1 +/* 078620 7F043AF0 AD490018 */ sw $t1, 0x18($t2) +/* 078624 7F043AF4 8E0C0014 */ lw $t4, 0x14($s0) +/* 078628 7F043AF8 8FAB00FC */ lw $t3, 0xfc($sp) +/* 07862C 7F043AFC AD8B001C */ sw $t3, 0x1c($t4) +/* 078630 7F043B00 0FC0E969 */ jal sub_GAME_7F03A5A4 +/* 078634 7F043B04 8FA500F4 */ lw $a1, 0xf4($sp) +/* 078638 7F043B08 27B100AC */ addiu $s1, $sp, 0xac +/* 07863C 7F043B0C 02202825 */ move $a1, $s1 +/* 078640 7F043B10 0FC16008 */ jal sub_GAME_7F058020 +/* 078644 7F043B14 26040018 */ addiu $a0, $s0, 0x18 +/* 078648 7F043B18 26040058 */ addiu $a0, $s0, 0x58 +/* 07864C 7F043B1C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 078650 7F043B20 02202825 */ move $a1, $s1 +/* 078654 7F043B24 0FC1E111 */ jal sub_GAME_7F078444 +/* 078658 7F043B28 00000000 */ nop +/* 07865C 7F043B2C 00402025 */ move $a0, $v0 +/* 078660 7F043B30 8FA50028 */ lw $a1, 0x28($sp) +/* 078664 7F043B34 0FC16063 */ jal sub_GAME_7F05818C +/* 078668 7F043B38 27A6006C */ addiu $a2, $sp, 0x6c +/* 07866C 7F043B3C 27A4006C */ addiu $a0, $sp, 0x6c +/* 078670 7F043B40 0FC167EE */ jal sub_GAME_7F059FB8 +/* 078674 7F043B44 27A5002C */ addiu $a1, $sp, 0x2c +/* 078678 7F043B48 8E06006C */ lw $a2, 0x6c($s0) +/* 07867C 7F043B4C 27A4002C */ addiu $a0, $sp, 0x2c +/* 078680 7F043B50 02202825 */ move $a1, $s1 +/* 078684 7F043B54 0FC16063 */ jal sub_GAME_7F05818C +/* 078688 7F043B58 24C60004 */ addiu $a2, $a2, 4 +/* 07868C 7F043B5C 10000002 */ b .L7F043B68 +/* 078690 7F043B60 24020001 */ li $v0, 1 +.L7F043B64: +/* 078694 7F043B64 00001025 */ move $v0, $zero +.L7F043B68: +/* 078698 7F043B68 8FBF001C */ lw $ra, 0x1c($sp) +/* 07869C 7F043B6C 8FB00014 */ lw $s0, 0x14($sp) +/* 0786A0 7F043B70 8FB10018 */ lw $s1, 0x18($sp) +/* 0786A4 7F043B74 03E00008 */ jr $ra +/* 0786A8 7F043B78 27BD00F0 */ addiu $sp, $sp, 0xf0 +) +#endif + + + + + +#ifdef NONMATCHING +void generate_explosion_at_position(void) { + +} +#else + +#ifdef VERSION_US +GLOBAL_ASM( +.text +glabel generate_explosion_at_position +/* 0786AC 7F043B7C 27BDFFA0 */ addiu $sp, $sp, -0x60 +/* 0786B0 7F043B80 AFBF002C */ sw $ra, 0x2c($sp) +/* 0786B4 7F043B84 AFB00028 */ sw $s0, 0x28($sp) +/* 0786B8 7F043B88 AFA50064 */ sw $a1, 0x64($sp) +/* 0786BC 7F043B8C 8C880004 */ lw $t0, 4($a0) +/* 0786C0 7F043B90 3C010006 */ lui $at, 6 +/* 0786C4 7F043B94 00808025 */ move $s0, $a0 +/* 0786C8 7F043B98 8D0E0064 */ lw $t6, 0x64($t0) +/* 0786CC 7F043B9C 2619002C */ addiu $t9, $s0, 0x2c +/* 0786D0 7F043BA0 01C17824 */ and $t7, $t6, $at +/* 0786D4 7F043BA4 000FC442 */ srl $t8, $t7, 0x11 +/* 0786D8 7F043BA8 AFB80058 */ sw $t8, 0x58($sp) +/* 0786DC 7F043BAC 8C86001C */ lw $a2, 0x1c($a0) +/* 0786E0 7F043BB0 00002025 */ move $a0, $zero +/* 0786E4 7F043BB4 50C00056 */ beql $a2, $zero, .L7F043D10 +/* 0786E8 7F043BB8 8D020008 */ lw $v0, 8($t0) +/* 0786EC 7F043BBC 8CC2001C */ lw $v0, 0x1c($a2) +/* 0786F0 7F043BC0 00C01825 */ move $v1, $a2 +/* 0786F4 7F043BC4 50400006 */ beql $v0, $zero, .L7F043BE0 +/* 0786F8 7F043BC8 8C790014 */ lw $t9, 0x14($v1) +/* 0786FC 7F043BCC 00401825 */ move $v1, $v0 +.L7F043BD0: +/* 078700 7F043BD0 8C42001C */ lw $v0, 0x1c($v0) +/* 078704 7F043BD4 5440FFFE */ bnezl $v0, .L7F043BD0 +/* 078708 7F043BD8 00401825 */ move $v1, $v0 +/* 07870C 7F043BDC 8C790014 */ lw $t9, 0x14($v1) +.L7F043BE0: +/* 078710 7F043BE0 AFB90050 */ sw $t9, 0x50($sp) +/* 078714 7F043BE4 92090001 */ lbu $t1, 1($s0) +/* 078718 7F043BE8 312A0002 */ andi $t2, $t1, 2 +/* 07871C 7F043BEC 51400014 */ beql $t2, $zero, .L7F043C40 +/* 078720 7F043BF0 C46A0008 */ lwc1 $f10, 8($v1) +/* 078724 7F043BF4 8D040014 */ lw $a0, 0x14($t0) +/* 078728 7F043BF8 AFA8005C */ sw $t0, 0x5c($sp) +/* 07872C 7F043BFC 0FC1B1A8 */ jal getsubmatrix +/* 078730 7F043C00 AFA30054 */ sw $v1, 0x54($sp) +/* 078734 7F043C04 C4440030 */ lwc1 $f4, 0x30($v0) +/* 078738 7F043C08 E7A40044 */ swc1 $f4, 0x44($sp) +/* 07873C 7F043C0C C4460034 */ lwc1 $f6, 0x34($v0) +/* 078740 7F043C10 E7A60048 */ swc1 $f6, 0x48($sp) +/* 078744 7F043C14 C4480038 */ lwc1 $f8, 0x38($v0) +/* 078748 7F043C18 0FC1E111 */ jal sub_GAME_7F078444 +/* 07874C 7F043C1C E7A8004C */ swc1 $f8, 0x4c($sp) +/* 078750 7F043C20 27B00044 */ addiu $s0, $sp, 0x44 +/* 078754 7F043C24 02002825 */ move $a1, $s0 +/* 078758 7F043C28 0FC1611D */ jal sub_GAME_7F058474 +/* 07875C 7F043C2C 00402025 */ move $a0, $v0 +/* 078760 7F043C30 8FA30054 */ lw $v1, 0x54($sp) +/* 078764 7F043C34 10000008 */ b .L7F043C58 +/* 078768 7F043C38 8FA8005C */ lw $t0, 0x5c($sp) +/* 07876C 7F043C3C C46A0008 */ lwc1 $f10, 8($v1) +.L7F043C40: +/* 078770 7F043C40 27B00044 */ addiu $s0, $sp, 0x44 +/* 078774 7F043C44 E7AA0044 */ swc1 $f10, 0x44($sp) +/* 078778 7F043C48 C470000C */ lwc1 $f16, 0xc($v1) +/* 07877C 7F043C4C E7B00048 */ swc1 $f16, 0x48($sp) +/* 078780 7F043C50 C4720010 */ lwc1 $f18, 0x10($v1) +/* 078784 7F043C54 E7B2004C */ swc1 $f18, 0x4c($sp) +.L7F043C58: +/* 078788 7F043C58 906B0001 */ lbu $t3, 1($v1) +/* 07878C 7F043C5C 27A40050 */ addiu $a0, $sp, 0x50 +/* 078790 7F043C60 8FA70044 */ lw $a3, 0x44($sp) +/* 078794 7F043C64 316C0008 */ andi $t4, $t3, 8 +/* 078798 7F043C68 1580001A */ bnez $t4, .L7F043CD4 +/* 07879C 7F043C6C C7A4004C */ lwc1 $f4, 0x4c($sp) +/* 0787A0 7F043C70 8C650008 */ lw $a1, 8($v1) +/* 0787A4 7F043C74 8C660010 */ lw $a2, 0x10($v1) +/* 0787A8 7F043C78 AFA8005C */ sw $t0, 0x5c($sp) +/* 0787AC 7F043C7C AFA30054 */ sw $v1, 0x54($sp) +/* 0787B0 7F043C80 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 0787B4 7F043C84 E7A40010 */ swc1 $f4, 0x10($sp) +/* 0787B8 7F043C88 8FA30054 */ lw $v1, 0x54($sp) +/* 0787BC 7F043C8C 10400011 */ beqz $v0, .L7F043CD4 +/* 0787C0 7F043C90 8FA8005C */ lw $t0, 0x5c($sp) +/* 0787C4 7F043C94 8D0D0008 */ lw $t5, 8($t0) +/* 0787C8 7F043C98 8FB80058 */ lw $t8, 0x58($sp) +/* 0787CC 7F043C9C 2479002C */ addiu $t9, $v1, 0x2c +/* 0787D0 7F043CA0 31AE000E */ andi $t6, $t5, 0xe +/* 0787D4 7F043CA4 2DCF0001 */ sltiu $t7, $t6, 1 +/* 0787D8 7F043CA8 AFAF0010 */ sw $t7, 0x10($sp) +/* 0787DC 7F043CAC AFB90018 */ sw $t9, 0x18($sp) +/* 0787E0 7F043CB0 AFA0001C */ sw $zero, 0x1c($sp) +/* 0787E4 7F043CB4 00002025 */ move $a0, $zero +/* 0787E8 7F043CB8 02002825 */ move $a1, $s0 +/* 0787EC 7F043CBC 8FA60050 */ lw $a2, 0x50($sp) +/* 0787F0 7F043CC0 87A70066 */ lh $a3, 0x66($sp) +/* 0787F4 7F043CC4 0FC27094 */ jal sub_GAME_7F09C250 +/* 0787F8 7F043CC8 AFB80014 */ sw $t8, 0x14($sp) +/* 0787FC 7F043CCC 10000024 */ b .L7F043D60 +/* 078800 7F043CD0 8FBF002C */ lw $ra, 0x2c($sp) +.L7F043CD4: +/* 078804 7F043CD4 8FA90058 */ lw $t1, 0x58($sp) +/* 078808 7F043CD8 246A002C */ addiu $t2, $v1, 0x2c +/* 07880C 7F043CDC 240B0001 */ li $t3, 1 +/* 078810 7F043CE0 AFAB001C */ sw $t3, 0x1c($sp) +/* 078814 7F043CE4 AFAA0018 */ sw $t2, 0x18($sp) +/* 078818 7F043CE8 00002025 */ move $a0, $zero +/* 07881C 7F043CEC 02002825 */ move $a1, $s0 +/* 078820 7F043CF0 8FA60050 */ lw $a2, 0x50($sp) +/* 078824 7F043CF4 87A70066 */ lh $a3, 0x66($sp) +/* 078828 7F043CF8 AFA00010 */ sw $zero, 0x10($sp) +/* 07882C 7F043CFC 0FC27094 */ jal sub_GAME_7F09C250 +/* 078830 7F043D00 AFA90014 */ sw $t1, 0x14($sp) +/* 078834 7F043D04 10000016 */ b .L7F043D60 +/* 078838 7F043D08 8FBF002C */ lw $ra, 0x2c($sp) +/* 07883C 7F043D0C 8D020008 */ lw $v0, 8($t0) +.L7F043D10: +/* 078840 7F043D10 304C000E */ andi $t4, $v0, 0xe +/* 078844 7F043D14 2D820001 */ sltiu $v0, $t4, 1 +/* 078848 7F043D18 50400005 */ beql $v0, $zero, .L7F043D30 +/* 07884C 7F043D1C 8FB80058 */ lw $t8, 0x58($sp) +/* 078850 7F043D20 92020001 */ lbu $v0, 1($s0) +/* 078854 7F043D24 304E0008 */ andi $t6, $v0, 8 +/* 078858 7F043D28 2DC20001 */ sltiu $v0, $t6, 1 +/* 07885C 7F043D2C 8FB80058 */ lw $t8, 0x58($sp) +.L7F043D30: +/* 078860 7F043D30 8E060014 */ lw $a2, 0x14($s0) +/* 078864 7F043D34 AFB90018 */ sw $t9, 0x18($sp) +/* 078868 7F043D38 AFA20010 */ sw $v0, 0x10($sp) +/* 07886C 7F043D3C AFB80014 */ sw $t8, 0x14($sp) +/* 078870 7F043D40 92090001 */ lbu $t1, 1($s0) +/* 078874 7F043D44 25050058 */ addiu $a1, $t0, 0x58 +/* 078878 7F043D48 87A70066 */ lh $a3, 0x66($sp) +/* 07887C 7F043D4C 312A0008 */ andi $t2, $t1, 8 +/* 078880 7F043D50 000A582B */ sltu $t3, $zero, $t2 +/* 078884 7F043D54 0FC27094 */ jal sub_GAME_7F09C250 +/* 078888 7F043D58 AFAB001C */ sw $t3, 0x1c($sp) +/* 07888C 7F043D5C 8FBF002C */ lw $ra, 0x2c($sp) +.L7F043D60: +/* 078890 7F043D60 8FB00028 */ lw $s0, 0x28($sp) +/* 078894 7F043D64 27BD0060 */ addiu $sp, $sp, 0x60 +/* 078898 7F043D68 03E00008 */ jr $ra +/* 07889C 7F043D6C 00000000 */ nop +) +#endif + +#ifdef VERSION_JP +GLOBAL_ASM( +.text +glabel generate_explosion_at_position +/* 0789EC 7F043E7C 27BDFFA0 */ addiu $sp, $sp, -0x60 +/* 0789F0 7F043E80 AFBF002C */ sw $ra, 0x2c($sp) +/* 0789F4 7F043E84 AFB00028 */ sw $s0, 0x28($sp) +/* 0789F8 7F043E88 AFA50064 */ sw $a1, 0x64($sp) +/* 0789FC 7F043E8C 8C880004 */ lw $t0, 4($a0) +/* 078A00 7F043E90 3C010006 */ lui $at, 6 +/* 078A04 7F043E94 00808025 */ move $s0, $a0 +/* 078A08 7F043E98 8D0E0064 */ lw $t6, 0x64($t0) +/* 078A0C 7F043E9C 2619002C */ addiu $t9, $s0, 0x2c +/* 078A10 7F043EA0 01C17824 */ and $t7, $t6, $at +/* 078A14 7F043EA4 000FC442 */ srl $t8, $t7, 0x11 +/* 078A18 7F043EA8 AFB80058 */ sw $t8, 0x58($sp) +/* 078A1C 7F043EAC 8C86001C */ lw $a2, 0x1c($a0) +/* 078A20 7F043EB0 00002025 */ move $a0, $zero +/* 078A24 7F043EB4 50C00056 */ beql $a2, $zero, .L7F044010 +/* 078A28 7F043EB8 8D020008 */ lw $v0, 8($t0) +/* 078A2C 7F043EBC 8CC2001C */ lw $v0, 0x1c($a2) +/* 078A30 7F043EC0 00C01825 */ move $v1, $a2 +/* 078A34 7F043EC4 50400006 */ beql $v0, $zero, .L7F043EE0 +/* 078A38 7F043EC8 8C790014 */ lw $t9, 0x14($v1) +/* 078A3C 7F043ECC 00401825 */ move $v1, $v0 +.L7F043ED0: +/* 078A40 7F043ED0 8C42001C */ lw $v0, 0x1c($v0) +/* 078A44 7F043ED4 5440FFFE */ bnezl $v0, .L7F043ED0 +/* 078A48 7F043ED8 00401825 */ move $v1, $v0 +/* 078A4C 7F043EDC 8C790014 */ lw $t9, 0x14($v1) +.L7F043EE0: +/* 078A50 7F043EE0 AFB9004C */ sw $t9, 0x4c($sp) +/* 078A54 7F043EE4 92090001 */ lbu $t1, 1($s0) +/* 078A58 7F043EE8 312A0002 */ andi $t2, $t1, 2 +/* 078A5C 7F043EEC 51400014 */ beql $t2, $zero, .L7F043F40 +/* 078A60 7F043EF0 C46A0008 */ lwc1 $f10, 8($v1) +/* 078A64 7F043EF4 8D040014 */ lw $a0, 0x14($t0) +/* 078A68 7F043EF8 AFA8005C */ sw $t0, 0x5c($sp) +/* 078A6C 7F043EFC 0FC1B324 */ jal getsubmatrix +/* 078A70 7F043F00 AFA30050 */ sw $v1, 0x50($sp) +/* 078A74 7F043F04 C4440030 */ lwc1 $f4, 0x30($v0) +/* 078A78 7F043F08 E7A40040 */ swc1 $f4, 0x40($sp) +/* 078A7C 7F043F0C C4460034 */ lwc1 $f6, 0x34($v0) +/* 078A80 7F043F10 E7A60044 */ swc1 $f6, 0x44($sp) +/* 078A84 7F043F14 C4480038 */ lwc1 $f8, 0x38($v0) +/* 078A88 7F043F18 0FC1E28D */ jal sub_GAME_7F078444 +/* 078A8C 7F043F1C E7A80048 */ swc1 $f8, 0x48($sp) +/* 078A90 7F043F20 27B00040 */ addiu $s0, $sp, 0x40 +/* 078A94 7F043F24 02002825 */ move $a1, $s0 +/* 078A98 7F043F28 0FC16265 */ jal sub_GAME_7F058474 +/* 078A9C 7F043F2C 00402025 */ move $a0, $v0 +/* 078AA0 7F043F30 8FA30050 */ lw $v1, 0x50($sp) +/* 078AA4 7F043F34 10000008 */ b .L7F043F58 +/* 078AA8 7F043F38 8FA8005C */ lw $t0, 0x5c($sp) +/* 078AAC 7F043F3C C46A0008 */ lwc1 $f10, 8($v1) +.L7F043F40: +/* 078AB0 7F043F40 27B00040 */ addiu $s0, $sp, 0x40 +/* 078AB4 7F043F44 E7AA0040 */ swc1 $f10, 0x40($sp) +/* 078AB8 7F043F48 C470000C */ lwc1 $f16, 0xc($v1) +/* 078ABC 7F043F4C E7B00044 */ swc1 $f16, 0x44($sp) +/* 078AC0 7F043F50 C4720010 */ lwc1 $f18, 0x10($v1) +/* 078AC4 7F043F54 E7B20048 */ swc1 $f18, 0x48($sp) +.L7F043F58: +/* 078AC8 7F043F58 906B0001 */ lbu $t3, 1($v1) +/* 078ACC 7F043F5C 27A4004C */ addiu $a0, $sp, 0x4c +/* 078AD0 7F043F60 8FA70040 */ lw $a3, 0x40($sp) +/* 078AD4 7F043F64 316C0008 */ andi $t4, $t3, 8 +/* 078AD8 7F043F68 1580001A */ bnez $t4, .L7F043FD4 +/* 078ADC 7F043F6C C7A40048 */ lwc1 $f4, 0x48($sp) +/* 078AE0 7F043F70 8C650008 */ lw $a1, 8($v1) +/* 078AE4 7F043F74 8C660010 */ lw $a2, 0x10($v1) +/* 078AE8 7F043F78 AFA8005C */ sw $t0, 0x5c($sp) +/* 078AEC 7F043F7C AFA30050 */ sw $v1, 0x50($sp) +/* 078AF0 7F043F80 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 +/* 078AF4 7F043F84 E7A40010 */ swc1 $f4, 0x10($sp) +/* 078AF8 7F043F88 8FA30050 */ lw $v1, 0x50($sp) +/* 078AFC 7F043F8C 10400011 */ beqz $v0, .L7F043FD4 +/* 078B00 7F043F90 8FA8005C */ lw $t0, 0x5c($sp) +/* 078B04 7F043F94 8D0D0008 */ lw $t5, 8($t0) +/* 078B08 7F043F98 8FB80058 */ lw $t8, 0x58($sp) +/* 078B0C 7F043F9C 2479002C */ addiu $t9, $v1, 0x2c +/* 078B10 7F043FA0 31AE000E */ andi $t6, $t5, 0xe +/* 078B14 7F043FA4 2DCF0001 */ sltiu $t7, $t6, 1 +/* 078B18 7F043FA8 AFAF0010 */ sw $t7, 0x10($sp) +/* 078B1C 7F043FAC AFB90018 */ sw $t9, 0x18($sp) +/* 078B20 7F043FB0 AFA0001C */ sw $zero, 0x1c($sp) +/* 078B24 7F043FB4 00002025 */ move $a0, $zero +/* 078B28 7F043FB8 02002825 */ move $a1, $s0 +/* 078B2C 7F043FBC 8FA6004C */ lw $a2, 0x4c($sp) +/* 078B30 7F043FC0 87A70066 */ lh $a3, 0x66($sp) +/* 078B34 7F043FC4 0FC2737C */ jal sub_GAME_7F09C250 +/* 078B38 7F043FC8 AFB80014 */ sw $t8, 0x14($sp) +/* 078B3C 7F043FCC 10000024 */ b .L7F044060 +/* 078B40 7F043FD0 00401825 */ move $v1, $v0 +.L7F043FD4: +/* 078B44 7F043FD4 8FA90058 */ lw $t1, 0x58($sp) +/* 078B48 7F043FD8 246A002C */ addiu $t2, $v1, 0x2c +/* 078B4C 7F043FDC 240B0001 */ li $t3, 1 +/* 078B50 7F043FE0 AFAB001C */ sw $t3, 0x1c($sp) +/* 078B54 7F043FE4 AFAA0018 */ sw $t2, 0x18($sp) +/* 078B58 7F043FE8 00002025 */ move $a0, $zero +/* 078B5C 7F043FEC 02002825 */ move $a1, $s0 +/* 078B60 7F043FF0 8FA6004C */ lw $a2, 0x4c($sp) +/* 078B64 7F043FF4 87A70066 */ lh $a3, 0x66($sp) +/* 078B68 7F043FF8 AFA00010 */ sw $zero, 0x10($sp) +/* 078B6C 7F043FFC 0FC2737C */ jal sub_GAME_7F09C250 +/* 078B70 7F044000 AFA90014 */ sw $t1, 0x14($sp) +/* 078B74 7F044004 10000016 */ b .L7F044060 +/* 078B78 7F044008 00401825 */ move $v1, $v0 +/* 078B7C 7F04400C 8D020008 */ lw $v0, 8($t0) +.L7F044010: +/* 078B80 7F044010 304C000E */ andi $t4, $v0, 0xe +/* 078B84 7F044014 2D820001 */ sltiu $v0, $t4, 1 +/* 078B88 7F044018 50400005 */ beql $v0, $zero, .L7F044030 +/* 078B8C 7F04401C 8FB80058 */ lw $t8, 0x58($sp) +/* 078B90 7F044020 92020001 */ lbu $v0, 1($s0) +/* 078B94 7F044024 304E0008 */ andi $t6, $v0, 8 +/* 078B98 7F044028 2DC20001 */ sltiu $v0, $t6, 1 +/* 078B9C 7F04402C 8FB80058 */ lw $t8, 0x58($sp) +.L7F044030: +/* 078BA0 7F044030 8E060014 */ lw $a2, 0x14($s0) +/* 078BA4 7F044034 AFB90018 */ sw $t9, 0x18($sp) +/* 078BA8 7F044038 AFA20010 */ sw $v0, 0x10($sp) +/* 078BAC 7F04403C AFB80014 */ sw $t8, 0x14($sp) +/* 078BB0 7F044040 92090001 */ lbu $t1, 1($s0) +/* 078BB4 7F044044 25050058 */ addiu $a1, $t0, 0x58 +/* 078BB8 7F044048 87A70066 */ lh $a3, 0x66($sp) +/* 078BBC 7F04404C 312A0008 */ andi $t2, $t1, 8 +/* 078BC0 7F044050 000A582B */ sltu $t3, $zero, $t2 +/* 078BC4 7F044054 0FC2737C */ jal sub_GAME_7F09C250 +/* 078BC8 7F044058 AFAB001C */ sw $t3, 0x1c($sp) +/* 078BCC 7F04405C 00401825 */ move $v1, $v0 +.L7F044060: +/* 078BD0 7F044060 8FBF002C */ lw $ra, 0x2c($sp) +/* 078BD4 7F044064 8FB00028 */ lw $s0, 0x28($sp) +/* 078BD8 7F044068 27BD0060 */ addiu $sp, $sp, 0x60 +/* 078BDC 7F04406C 03E00008 */ jr $ra +/* 078BE0 7F044070 00601025 */ move $v0, $v1 + +) +#endif + +#endif + + +#ifdef NONMATCHING +void handle_thrown_explosive_detonation(void) { + +} +#else + +#ifdef VERSION_US +GLOBAL_ASM( +.late_rodata +glabel D_80052A94 +.word 0x47742400 /*62500.0*/ +.text +glabel handle_thrown_explosive_detonation +/* 0788A0 7F043D70 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0788A4 7F043D74 AFBF0014 */ sw $ra, 0x14($sp) +/* 0788A8 7F043D78 AFA40020 */ sw $a0, 0x20($sp) +/* 0788AC 7F043D7C 8C870004 */ lw $a3, 4($a0) +/* 0788B0 7F043D80 0FC26C54 */ jal get_cur_playernum +/* 0788B4 7F043D84 AFA7001C */ sw $a3, 0x1c($sp) +/* 0788B8 7F043D88 0FC26D36 */ jal sub_GAME_7F09B4D8 +/* 0788BC 7F043D8C 00402025 */ move $a0, $v0 +/* 0788C0 7F043D90 14400117 */ bnez $v0, .L7F0441F0 +/* 0788C4 7F043D94 8FA7001C */ lw $a3, 0x1c($sp) +/* 0788C8 7F043D98 90E20003 */ lbu $v0, 3($a3) +/* 0788CC 7F043D9C 24010007 */ li $at, 7 +/* 0788D0 7F043DA0 5441000F */ bnel $v0, $at, .L7F043DE0 +/* 0788D4 7F043DA4 24010008 */ li $at, 8 +/* 0788D8 7F043DA8 8CEF0008 */ lw $t7, 8($a3) +/* 0788DC 7F043DAC 8FA40020 */ lw $a0, 0x20($sp) +/* 0788E0 7F043DB0 2405000C */ li $a1, 12 +/* 0788E4 7F043DB4 000FC0C0 */ sll $t8, $t7, 3 +/* 0788E8 7F043DB8 0703010E */ bgezl $t8, .L7F0441F4 +/* 0788EC 7F043DBC 8FBF0014 */ lw $ra, 0x14($sp) +/* 0788F0 7F043DC0 0FC10EDF */ jal generate_explosion_at_position +/* 0788F4 7F043DC4 AFA7001C */ sw $a3, 0x1c($sp) +/* 0788F8 7F043DC8 8FA7001C */ lw $a3, 0x1c($sp) +/* 0788FC 7F043DCC 8CF90064 */ lw $t9, 0x64($a3) +/* 078900 7F043DD0 37280004 */ ori $t0, $t9, 4 +/* 078904 7F043DD4 10000106 */ b .L7F0441F0 +/* 078908 7F043DD8 ACE80064 */ sw $t0, 0x64($a3) +/* 07890C 7F043DDC 24010008 */ li $at, 8 +.L7F043DE0: +/* 078910 7F043DE0 14410103 */ bne $v0, $at, .L7F0441F0 +/* 078914 7F043DE4 8FA90020 */ lw $t1, 0x20($sp) +/* 078918 7F043DE8 8D260004 */ lw $a2, 4($t1) +/* 07891C 7F043DEC 2401001A */ li $at, 26 +/* 078920 7F043DF0 80C30080 */ lb $v1, 0x80($a2) +/* 078924 7F043DF4 10610003 */ beq $v1, $at, .L7F043E04 +/* 078928 7F043DF8 24010057 */ li $at, 87 +/* 07892C 7F043DFC 5461001B */ bnel $v1, $at, .L7F043E6C +/* 078930 7F043E00 24010056 */ li $at, 86 +.L7F043E04: +/* 078934 7F043E04 84C20082 */ lh $v0, 0x82($a2) +/* 078938 7F043E08 3C0A8005 */ lui $t2, %hi(clock_timer) +/* 07893C 7F043E0C 04420017 */ bltzl $v0, .L7F043E6C +/* 078940 7F043E10 24010056 */ li $at, 86 +/* 078944 7F043E14 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) +/* 078948 7F043E18 004A5823 */ subu $t3, $v0, $t2 +/* 07894C 7F043E1C A4CB0082 */ sh $t3, 0x82($a2) +/* 078950 7F043E20 84CC0082 */ lh $t4, 0x82($a2) +/* 078954 7F043E24 8FA40020 */ lw $a0, 0x20($sp) +/* 078958 7F043E28 058300F2 */ bgezl $t4, .L7F0441F4 +/* 07895C 7F043E2C 8FBF0014 */ lw $ra, 0x14($sp) +/* 078960 7F043E30 8CED000C */ lw $t5, 0xc($a3) +/* 078964 7F043E34 2405000D */ li $a1, 13 +/* 078968 7F043E38 000D7000 */ sll $t6, $t5, 0 +/* 07896C 7F043E3C 05C10003 */ bgez $t6, .L7F043E4C +/* 078970 7F043E40 00000000 */ nop +/* 078974 7F043E44 10000001 */ b .L7F043E4C +/* 078978 7F043E48 24050011 */ li $a1, 17 +.L7F043E4C: +/* 07897C 7F043E4C 0FC10EDF */ jal generate_explosion_at_position +/* 078980 7F043E50 AFA7001C */ sw $a3, 0x1c($sp) +/* 078984 7F043E54 8FA7001C */ lw $a3, 0x1c($sp) +/* 078988 7F043E58 8CEF0064 */ lw $t7, 0x64($a3) +/* 07898C 7F043E5C 35F80004 */ ori $t8, $t7, 4 +/* 078990 7F043E60 100000E3 */ b .L7F0441F0 +/* 078994 7F043E64 ACF80064 */ sw $t8, 0x64($a3) +/* 078998 7F043E68 24010056 */ li $at, 86 +.L7F043E6C: +/* 07899C 7F043E6C 54610014 */ bnel $v1, $at, .L7F043EC0 +/* 0789A0 7F043E70 24010022 */ li $at, 34 +/* 0789A4 7F043E74 84D90082 */ lh $t9, 0x82($a2) +/* 0789A8 7F043E78 8FA40020 */ lw $a0, 0x20($sp) +/* 0789AC 7F043E7C 572000DD */ bnezl $t9, .L7F0441F4 +/* 0789B0 7F043E80 8FBF0014 */ lw $ra, 0x14($sp) +/* 0789B4 7F043E84 8CE8000C */ lw $t0, 0xc($a3) +/* 0789B8 7F043E88 2405000D */ li $a1, 13 +/* 0789BC 7F043E8C 00084800 */ sll $t1, $t0, 0 +/* 0789C0 7F043E90 05210003 */ bgez $t1, .L7F043EA0 +/* 0789C4 7F043E94 00000000 */ nop +/* 0789C8 7F043E98 10000001 */ b .L7F043EA0 +/* 0789CC 7F043E9C 24050011 */ li $a1, 17 +.L7F043EA0: +/* 0789D0 7F043EA0 0FC10EDF */ jal generate_explosion_at_position +/* 0789D4 7F043EA4 AFA7001C */ sw $a3, 0x1c($sp) +/* 0789D8 7F043EA8 8FA7001C */ lw $a3, 0x1c($sp) +/* 0789DC 7F043EAC 8CEA0064 */ lw $t2, 0x64($a3) +/* 0789E0 7F043EB0 354B0004 */ ori $t3, $t2, 4 +/* 0789E4 7F043EB4 100000CE */ b .L7F0441F0 +/* 0789E8 7F043EB8 ACEB0064 */ sw $t3, 0x64($a3) +/* 0789EC 7F043EBC 24010022 */ li $at, 34 +.L7F043EC0: +/* 0789F0 7F043EC0 54610014 */ bnel $v1, $at, .L7F043F14 +/* 0789F4 7F043EC4 2401001B */ li $at, 27 +/* 0789F8 7F043EC8 84CC0082 */ lh $t4, 0x82($a2) +/* 0789FC 7F043ECC 8FA40020 */ lw $a0, 0x20($sp) +/* 078A00 7F043ED0 24050011 */ li $a1, 17 +/* 078A04 7F043ED4 558000C7 */ bnezl $t4, .L7F0441F4 +/* 078A08 7F043ED8 8FBF0014 */ lw $ra, 0x14($sp) +/* 078A0C 7F043EDC 0FC10EDF */ jal generate_explosion_at_position +/* 078A10 7F043EE0 AFA7001C */ sw $a3, 0x1c($sp) +/* 078A14 7F043EE4 8FA7001C */ lw $a3, 0x1c($sp) +/* 078A18 7F043EE8 24040078 */ li $a0, 120 +/* 078A1C 7F043EEC 8CED0064 */ lw $t5, 0x64($a3) +/* 078A20 7F043EF0 35AE0004 */ ori $t6, $t5, 4 +/* 078A24 7F043EF4 0FC22FF1 */ jal trigger_explosions_around_player +/* 078A28 7F043EF8 ACEE0064 */ sw $t6, 0x64($a3) +/* 078A2C 7F043EFC 24040002 */ li $a0, 2 +/* 078A30 7F043F00 0FC15858 */ jal set_unset_clock_lock_bits +/* 078A34 7F043F04 00002825 */ move $a1, $zero +/* 078A38 7F043F08 100000BA */ b .L7F0441F4 +/* 078A3C 7F043F0C 8FBF0014 */ lw $ra, 0x14($sp) +/* 078A40 7F043F10 2401001B */ li $at, 27 +.L7F043F14: +/* 078A44 7F043F14 10610003 */ beq $v1, $at, .L7F043F24 +/* 078A48 7F043F18 24010021 */ li $at, 33 +/* 078A4C 7F043F1C 5461001F */ bnel $v1, $at, .L7F043F9C +/* 078A50 7F043F20 2401001D */ li $at, 29 +.L7F043F24: +/* 078A54 7F043F24 84C20082 */ lh $v0, 0x82($a2) +/* 078A58 7F043F28 3C0F8005 */ lui $t7, %hi(clock_timer) +/* 078A5C 7F043F2C 0442001B */ bltzl $v0, .L7F043F9C +/* 078A60 7F043F30 2401001D */ li $at, 29 +/* 078A64 7F043F34 8DEF8374 */ lw $t7, %lo(clock_timer)($t7) +/* 078A68 7F043F38 004FC023 */ subu $t8, $v0, $t7 +/* 078A6C 7F043F3C A4D80082 */ sh $t8, 0x82($a2) +/* 078A70 7F043F40 84D90082 */ lh $t9, 0x82($a2) +/* 078A74 7F043F44 8FA40020 */ lw $a0, 0x20($sp) +/* 078A78 7F043F48 072300AA */ bgezl $t9, .L7F0441F4 +/* 078A7C 7F043F4C 8FBF0014 */ lw $ra, 0x14($sp) +/* 078A80 7F043F50 8CE8000C */ lw $t0, 0xc($a3) +/* 078A84 7F043F54 2405000D */ li $a1, 13 +/* 078A88 7F043F58 00084800 */ sll $t1, $t0, 0 +/* 078A8C 7F043F5C 05210003 */ bgez $t1, .L7F043F6C +/* 078A90 7F043F60 00000000 */ nop +/* 078A94 7F043F64 10000001 */ b .L7F043F6C +/* 078A98 7F043F68 24050011 */ li $a1, 17 +.L7F043F6C: +/* 078A9C 7F043F6C AFA60018 */ sw $a2, 0x18($sp) +/* 078AA0 7F043F70 0FC10EDF */ jal generate_explosion_at_position +/* 078AA4 7F043F74 AFA7001C */ sw $a3, 0x1c($sp) +/* 078AA8 7F043F78 8FA60018 */ lw $a2, 0x18($sp) +/* 078AAC 7F043F7C 8FA7001C */ lw $a3, 0x1c($sp) +/* 078AB0 7F043F80 240AFFFF */ li $t2, -1 +/* 078AB4 7F043F84 A4CA0082 */ sh $t2, 0x82($a2) +/* 078AB8 7F043F88 8CEB0064 */ lw $t3, 0x64($a3) +/* 078ABC 7F043F8C 356C0004 */ ori $t4, $t3, 4 +/* 078AC0 7F043F90 10000097 */ b .L7F0441F0 +/* 078AC4 7F043F94 ACEC0064 */ sw $t4, 0x64($a3) +/* 078AC8 7F043F98 2401001D */ li $at, 29 +.L7F043F9C: +/* 078ACC 7F043F9C 54610049 */ bnel $v1, $at, .L7F0440C4 +/* 078AD0 7F043FA0 2401001C */ li $at, 28 +/* 078AD4 7F043FA4 3C038003 */ lui $v1, %hi(D_80030AF4) +/* 078AD8 7F043FA8 8C630AF4 */ lw $v1, %lo(D_80030AF4)($v1) +/* 078ADC 7F043FAC 3C088005 */ lui $t0, %hi(clock_timer) +/* 078AE0 7F043FB0 5060000C */ beql $v1, $zero, .L7F043FE4 +/* 078AE4 7F043FB4 84C20082 */ lh $v0, 0x82($a2) +/* 078AE8 7F043FB8 8CE20064 */ lw $v0, 0x64($a3) +/* 078AEC 7F043FBC 3C010006 */ lui $at, 6 +/* 078AF0 7F043FC0 240F0001 */ li $t7, 1 +/* 078AF4 7F043FC4 00416824 */ and $t5, $v0, $at +/* 078AF8 7F043FC8 000D7442 */ srl $t6, $t5, 0x11 +/* 078AFC 7F043FCC 01CFC004 */ sllv $t8, $t7, $t6 +/* 078B00 7F043FD0 0078C824 */ and $t9, $v1, $t8 +/* 078B04 7F043FD4 53200003 */ beql $t9, $zero, .L7F043FE4 +/* 078B08 7F043FD8 84C20082 */ lh $v0, 0x82($a2) +/* 078B0C 7F043FDC A4C00082 */ sh $zero, 0x82($a2) +/* 078B10 7F043FE0 84C20082 */ lh $v0, 0x82($a2) +.L7F043FE4: +/* 078B14 7F043FE4 28410002 */ slti $at, $v0, 2 +/* 078B18 7F043FE8 1420000B */ bnez $at, .L7F044018 +/* 078B1C 7F043FEC 00000000 */ nop +/* 078B20 7F043FF0 8D088374 */ lw $t0, %lo(clock_timer)($t0) +/* 078B24 7F043FF4 240B0001 */ li $t3, 1 +/* 078B28 7F043FF8 00484823 */ subu $t1, $v0, $t0 +/* 078B2C 7F043FFC A4C90082 */ sh $t1, 0x82($a2) +/* 078B30 7F044000 84CA0082 */ lh $t2, 0x82($a2) +/* 078B34 7F044004 29410002 */ slti $at, $t2, 2 +/* 078B38 7F044008 5020007A */ beql $at, $zero, .L7F0441F4 +/* 078B3C 7F04400C 8FBF0014 */ lw $ra, 0x14($sp) +/* 078B40 7F044010 10000077 */ b .L7F0441F0 +/* 078B44 7F044014 A4CB0082 */ sh $t3, 0x82($a2) +.L7F044018: +/* 078B48 7F044018 54400076 */ bnezl $v0, .L7F0441F4 +/* 078B4C 7F04401C 8FBF0014 */ lw $ra, 0x14($sp) +/* 078B50 7F044020 8CEC000C */ lw $t4, 0xc($a3) +/* 078B54 7F044024 8FA40020 */ lw $a0, 0x20($sp) +/* 078B58 7F044028 24050011 */ li $a1, 17 +/* 078B5C 7F04402C 000C6800 */ sll $t5, $t4, 0 +/* 078B60 7F044030 05A30008 */ bgezl $t5, .L7F044054 +/* 078B64 7F044034 AFA60018 */ sw $a2, 0x18($sp) +/* 078B68 7F044038 AFA60018 */ sw $a2, 0x18($sp) +/* 078B6C 7F04403C 0FC10EDF */ jal generate_explosion_at_position +/* 078B70 7F044040 AFA7001C */ sw $a3, 0x1c($sp) +/* 078B74 7F044044 8FA60018 */ lw $a2, 0x18($sp) +/* 078B78 7F044048 10000017 */ b .L7F0440A8 +/* 078B7C 7F04404C 8FA7001C */ lw $a3, 0x1c($sp) +/* 078B80 7F044050 AFA60018 */ sw $a2, 0x18($sp) +.L7F044054: +/* 078B84 7F044054 0C001A57 */ jal get_stage_num +/* 078B88 7F044058 AFA7001C */ sw $a3, 0x1c($sp) +/* 078B8C 7F04405C 24010022 */ li $at, 34 +/* 078B90 7F044060 8FA60018 */ lw $a2, 0x18($sp) +/* 078B94 7F044064 14410009 */ bne $v0, $at, .L7F04408C +/* 078B98 7F044068 8FA7001C */ lw $a3, 0x1c($sp) +/* 078B9C 7F04406C 8FA40020 */ lw $a0, 0x20($sp) +/* 078BA0 7F044070 24050013 */ li $a1, 19 +/* 078BA4 7F044074 AFA60018 */ sw $a2, 0x18($sp) +/* 078BA8 7F044078 0FC10EDF */ jal generate_explosion_at_position +/* 078BAC 7F04407C AFA7001C */ sw $a3, 0x1c($sp) +/* 078BB0 7F044080 8FA60018 */ lw $a2, 0x18($sp) +/* 078BB4 7F044084 10000008 */ b .L7F0440A8 +/* 078BB8 7F044088 8FA7001C */ lw $a3, 0x1c($sp) +.L7F04408C: +/* 078BBC 7F04408C 8FA40020 */ lw $a0, 0x20($sp) +/* 078BC0 7F044090 2405000D */ li $a1, 13 +/* 078BC4 7F044094 AFA60018 */ sw $a2, 0x18($sp) +/* 078BC8 7F044098 0FC10EDF */ jal generate_explosion_at_position +/* 078BCC 7F04409C AFA7001C */ sw $a3, 0x1c($sp) +/* 078BD0 7F0440A0 8FA60018 */ lw $a2, 0x18($sp) +/* 078BD4 7F0440A4 8FA7001C */ lw $a3, 0x1c($sp) +.L7F0440A8: +/* 078BD8 7F0440A8 240EFFFF */ li $t6, -1 +/* 078BDC 7F0440AC A4CE0082 */ sh $t6, 0x82($a2) +/* 078BE0 7F0440B0 8CEF0064 */ lw $t7, 0x64($a3) +/* 078BE4 7F0440B4 35F80004 */ ori $t8, $t7, 4 +/* 078BE8 7F0440B8 1000004D */ b .L7F0441F0 +/* 078BEC 7F0440BC ACF80064 */ sw $t8, 0x64($a3) +/* 078BF0 7F0440C0 2401001C */ li $at, 28 +.L7F0440C4: +/* 078BF4 7F0440C4 5461004B */ bnel $v1, $at, .L7F0441F4 +/* 078BF8 7F0440C8 8FBF0014 */ lw $ra, 0x14($sp) +/* 078BFC 7F0440CC 84C20082 */ lh $v0, 0x82($a2) +/* 078C00 7F0440D0 3C198005 */ lui $t9, %hi(clock_timer) +/* 078C04 7F0440D4 28410002 */ slti $at, $v0, 2 +/* 078C08 7F0440D8 54200012 */ bnezl $at, .L7F044124 +/* 078C0C 7F0440DC 24010001 */ li $at, 1 +/* 078C10 7F0440E0 8F398374 */ lw $t9, %lo(clock_timer)($t9) +/* 078C14 7F0440E4 240A0001 */ li $t2, 1 +/* 078C18 7F0440E8 00C02025 */ move $a0, $a2 +/* 078C1C 7F0440EC 00594023 */ subu $t0, $v0, $t9 +/* 078C20 7F0440F0 A4C80082 */ sh $t0, 0x82($a2) +/* 078C24 7F0440F4 84C90082 */ lh $t1, 0x82($a2) +/* 078C28 7F0440F8 29210002 */ slti $at, $t1, 2 +/* 078C2C 7F0440FC 50200027 */ beql $at, $zero, .L7F04419C +/* 078C30 7F044100 84CC0082 */ lh $t4, 0x82($a2) +/* 078C34 7F044104 A4CA0082 */ sh $t2, 0x82($a2) +/* 078C38 7F044108 AFA7001C */ sw $a3, 0x1c($sp) +/* 078C3C 7F04410C 0FC146D7 */ jal add_obj_to_temp_proxmine_table +/* 078C40 7F044110 AFA60018 */ sw $a2, 0x18($sp) +/* 078C44 7F044114 8FA60018 */ lw $a2, 0x18($sp) +/* 078C48 7F044118 1000001F */ b .L7F044198 +/* 078C4C 7F04411C 8FA7001C */ lw $a3, 0x1c($sp) +/* 078C50 7F044120 24010001 */ li $at, 1 +.L7F044124: +/* 078C54 7F044124 5441001D */ bnel $v0, $at, .L7F04419C +/* 078C58 7F044128 84CC0082 */ lh $t4, 0x82($a2) +/* 078C5C 7F04412C AFA60018 */ sw $a2, 0x18($sp) +/* 078C60 7F044130 0FC225E6 */ jal get_curplayer_positiondata +/* 078C64 7F044134 AFA7001C */ sw $a3, 0x1c($sp) +/* 078C68 7F044138 8FAB0020 */ lw $t3, 0x20($sp) +/* 078C6C 7F04413C C4440008 */ lwc1 $f4, 8($v0) +/* 078C70 7F044140 C448000C */ lwc1 $f8, 0xc($v0) +/* 078C74 7F044144 C5660008 */ lwc1 $f6, 8($t3) +/* 078C78 7F044148 C56A000C */ lwc1 $f10, 0xc($t3) +/* 078C7C 7F04414C C4500010 */ lwc1 $f16, 0x10($v0) +/* 078C80 7F044150 46062001 */ sub.s $f0, $f4, $f6 +/* 078C84 7F044154 C5720010 */ lwc1 $f18, 0x10($t3) +/* 078C88 7F044158 3C018005 */ lui $at, %hi(D_80052A94) +/* 078C8C 7F04415C 460A4081 */ sub.s $f2, $f8, $f10 +/* 078C90 7F044160 46000102 */ mul.s $f4, $f0, $f0 +/* 078C94 7F044164 8FA60018 */ lw $a2, 0x18($sp) +/* 078C98 7F044168 46128301 */ sub.s $f12, $f16, $f18 +/* 078C9C 7F04416C 46021182 */ mul.s $f6, $f2, $f2 +/* 078CA0 7F044170 C4322A94 */ lwc1 $f18, %lo(D_80052A94)($at) +/* 078CA4 7F044174 8FA7001C */ lw $a3, 0x1c($sp) +/* 078CA8 7F044178 460C6282 */ mul.s $f10, $f12, $f12 +/* 078CAC 7F04417C 46062200 */ add.s $f8, $f4, $f6 +/* 078CB0 7F044180 460A4400 */ add.s $f16, $f8, $f10 +/* 078CB4 7F044184 4612803C */ c.lt.s $f16, $f18 +/* 078CB8 7F044188 00000000 */ nop +/* 078CBC 7F04418C 45020003 */ bc1fl .L7F04419C +/* 078CC0 7F044190 84CC0082 */ lh $t4, 0x82($a2) +/* 078CC4 7F044194 A4C00082 */ sh $zero, 0x82($a2) +.L7F044198: +/* 078CC8 7F044198 84CC0082 */ lh $t4, 0x82($a2) +.L7F04419C: +/* 078CCC 7F04419C 8FA40020 */ lw $a0, 0x20($sp) +/* 078CD0 7F0441A0 55800014 */ bnezl $t4, .L7F0441F4 +/* 078CD4 7F0441A4 8FBF0014 */ lw $ra, 0x14($sp) +/* 078CD8 7F0441A8 8CED000C */ lw $t5, 0xc($a3) +/* 078CDC 7F0441AC 2405000D */ li $a1, 13 +/* 078CE0 7F0441B0 000D7000 */ sll $t6, $t5, 0 +/* 078CE4 7F0441B4 05C10003 */ bgez $t6, .L7F0441C4 +/* 078CE8 7F0441B8 00000000 */ nop +/* 078CEC 7F0441BC 10000001 */ b .L7F0441C4 +/* 078CF0 7F0441C0 24050011 */ li $a1, 17 +.L7F0441C4: +/* 078CF4 7F0441C4 AFA60018 */ sw $a2, 0x18($sp) +/* 078CF8 7F0441C8 0FC10EDF */ jal generate_explosion_at_position +/* 078CFC 7F0441CC AFA7001C */ sw $a3, 0x1c($sp) +/* 078D00 7F0441D0 8FA40018 */ lw $a0, 0x18($sp) +/* 078D04 7F0441D4 8FA7001C */ lw $a3, 0x1c($sp) +/* 078D08 7F0441D8 240FFFFF */ li $t7, -1 +/* 078D0C 7F0441DC A48F0082 */ sh $t7, 0x82($a0) +/* 078D10 7F0441E0 8CF80064 */ lw $t8, 0x64($a3) +/* 078D14 7F0441E4 37190004 */ ori $t9, $t8, 4 +/* 078D18 7F0441E8 0FC146E5 */ jal remove_obj_from_temp_proxmine_table +/* 078D1C 7F0441EC ACF90064 */ sw $t9, 0x64($a3) +.L7F0441F0: +/* 078D20 7F0441F0 8FBF0014 */ lw $ra, 0x14($sp) +.L7F0441F4: +/* 078D24 7F0441F4 27BD0020 */ addiu $sp, $sp, 0x20 +/* 078D28 7F0441F8 03E00008 */ jr $ra +/* 078D2C 7F0441FC 00000000 */ nop +) +#endif + +#ifdef VERSION_JP +GLOBAL_ASM( +.late_rodata +glabel D_80052A94 +.word 0x47742400 /*62500.0*/ +.text +glabel handle_thrown_explosive_detonation +/* 078BE4 7F044074 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 078BE8 7F044078 AFBF0014 */ sw $ra, 0x14($sp) +/* 078BEC 7F04407C AFA40030 */ sw $a0, 0x30($sp) +/* 078BF0 7F044080 8C870004 */ lw $a3, 4($a0) +/* 078BF4 7F044084 0FC26F3C */ jal get_cur_playernum +/* 078BF8 7F044088 AFA7002C */ sw $a3, 0x2c($sp) +/* 078BFC 7F04408C 0FC2701E */ jal sub_GAME_7F09B4D8 +/* 078C00 7F044090 00402025 */ move $a0, $v0 +/* 078C04 7F044094 14400110 */ bnez $v0, .L7F0444D8 +/* 078C08 7F044098 8FA7002C */ lw $a3, 0x2c($sp) +/* 078C0C 7F04409C 90E20003 */ lbu $v0, 3($a3) +/* 078C10 7F0440A0 24010007 */ li $at, 7 +/* 078C14 7F0440A4 5441000F */ bnel $v0, $at, .L7F0440E4 +/* 078C18 7F0440A8 24010008 */ li $at, 8 +/* 078C1C 7F0440AC 8CEF0008 */ lw $t7, 8($a3) +/* 078C20 7F0440B0 8FA40030 */ lw $a0, 0x30($sp) +/* 078C24 7F0440B4 2405000C */ li $a1, 12 +/* 078C28 7F0440B8 000FC0C0 */ sll $t8, $t7, 3 +/* 078C2C 7F0440BC 07030107 */ bgezl $t8, .L7F0444DC +/* 078C30 7F0440C0 8FBF0014 */ lw $ra, 0x14($sp) +/* 078C34 7F0440C4 0FC10F9F */ jal generate_explosion_at_position +/* 078C38 7F0440C8 AFA7002C */ sw $a3, 0x2c($sp) +/* 078C3C 7F0440CC 8FA7002C */ lw $a3, 0x2c($sp) +/* 078C40 7F0440D0 8CF90064 */ lw $t9, 0x64($a3) +/* 078C44 7F0440D4 37280004 */ ori $t0, $t9, 4 +/* 078C48 7F0440D8 100000FF */ b .L7F0444D8 +/* 078C4C 7F0440DC ACE80064 */ sw $t0, 0x64($a3) +/* 078C50 7F0440E0 24010008 */ li $at, 8 +.L7F0440E4: +/* 078C54 7F0440E4 144100FC */ bne $v0, $at, .L7F0444D8 +/* 078C58 7F0440E8 8FA90030 */ lw $t1, 0x30($sp) +/* 078C5C 7F0440EC 8D260004 */ lw $a2, 4($t1) +/* 078C60 7F0440F0 2401001A */ li $at, 26 +/* 078C64 7F0440F4 80C30080 */ lb $v1, 0x80($a2) +/* 078C68 7F0440F8 10610003 */ beq $v1, $at, .L7F044108 +/* 078C6C 7F0440FC 24010057 */ li $at, 87 +/* 078C70 7F044100 5461001B */ bnel $v1, $at, .L7F044170 +/* 078C74 7F044104 24010056 */ li $at, 86 +.L7F044108: +/* 078C78 7F044108 84C20082 */ lh $v0, 0x82($a2) +/* 078C7C 7F04410C 3C0A8005 */ lui $t2, %hi(clock_timer) # $t2, 0x8005 +/* 078C80 7F044110 04420017 */ bltzl $v0, .L7F044170 +/* 078C84 7F044114 24010056 */ li $at, 86 +/* 078C88 7F044118 8D4A83A4 */ lw $t2, %lo(clock_timer)($t2) +/* 078C8C 7F04411C 004A5823 */ subu $t3, $v0, $t2 +/* 078C90 7F044120 A4CB0082 */ sh $t3, 0x82($a2) +/* 078C94 7F044124 84CC0082 */ lh $t4, 0x82($a2) +/* 078C98 7F044128 8FA40030 */ lw $a0, 0x30($sp) +/* 078C9C 7F04412C 058300EB */ bgezl $t4, .L7F0444DC +/* 078CA0 7F044130 8FBF0014 */ lw $ra, 0x14($sp) +/* 078CA4 7F044134 8CED000C */ lw $t5, 0xc($a3) +/* 078CA8 7F044138 2405000D */ li $a1, 13 +/* 078CAC 7F04413C 000D7000 */ sll $t6, $t5, 0 +/* 078CB0 7F044140 05C10003 */ bgez $t6, .L7F044150 +/* 078CB4 7F044144 00000000 */ nop +/* 078CB8 7F044148 10000001 */ b .L7F044150 +/* 078CBC 7F04414C 24050011 */ li $a1, 17 +.L7F044150: +/* 078CC0 7F044150 0FC10F9F */ jal generate_explosion_at_position +/* 078CC4 7F044154 AFA7002C */ sw $a3, 0x2c($sp) +/* 078CC8 7F044158 8FA7002C */ lw $a3, 0x2c($sp) +/* 078CCC 7F04415C 8CEF0064 */ lw $t7, 0x64($a3) +/* 078CD0 7F044160 35F80004 */ ori $t8, $t7, 4 +/* 078CD4 7F044164 100000DC */ b .L7F0444D8 +/* 078CD8 7F044168 ACF80064 */ sw $t8, 0x64($a3) +/* 078CDC 7F04416C 24010056 */ li $at, 86 +.L7F044170: +/* 078CE0 7F044170 54610014 */ bnel $v1, $at, .L7F0441C4 +/* 078CE4 7F044174 24010022 */ li $at, 34 +/* 078CE8 7F044178 84D90082 */ lh $t9, 0x82($a2) +/* 078CEC 7F04417C 8FA40030 */ lw $a0, 0x30($sp) +/* 078CF0 7F044180 572000D6 */ bnezl $t9, .L7F0444DC +/* 078CF4 7F044184 8FBF0014 */ lw $ra, 0x14($sp) +/* 078CF8 7F044188 8CE8000C */ lw $t0, 0xc($a3) +/* 078CFC 7F04418C 2405000D */ li $a1, 13 +/* 078D00 7F044190 00084800 */ sll $t1, $t0, 0 +/* 078D04 7F044194 05210003 */ bgez $t1, .L7F0441A4 +/* 078D08 7F044198 00000000 */ nop +/* 078D0C 7F04419C 10000001 */ b .L7F0441A4 +/* 078D10 7F0441A0 24050011 */ li $a1, 17 +.L7F0441A4: +/* 078D14 7F0441A4 0FC10F9F */ jal generate_explosion_at_position +/* 078D18 7F0441A8 AFA7002C */ sw $a3, 0x2c($sp) +/* 078D1C 7F0441AC 8FA7002C */ lw $a3, 0x2c($sp) +/* 078D20 7F0441B0 8CEA0064 */ lw $t2, 0x64($a3) +/* 078D24 7F0441B4 354B0004 */ ori $t3, $t2, 4 +/* 078D28 7F0441B8 100000C7 */ b .L7F0444D8 +/* 078D2C 7F0441BC ACEB0064 */ sw $t3, 0x64($a3) +/* 078D30 7F0441C0 24010022 */ li $at, 34 +.L7F0441C4: +/* 078D34 7F0441C4 54610014 */ bnel $v1, $at, .L7F044218 +/* 078D38 7F0441C8 2401001B */ li $at, 27 +/* 078D3C 7F0441CC 84CC0082 */ lh $t4, 0x82($a2) +/* 078D40 7F0441D0 8FA40030 */ lw $a0, 0x30($sp) +/* 078D44 7F0441D4 24050011 */ li $a1, 17 +/* 078D48 7F0441D8 558000C0 */ bnezl $t4, .L7F0444DC +/* 078D4C 7F0441DC 8FBF0014 */ lw $ra, 0x14($sp) +/* 078D50 7F0441E0 0FC10F9F */ jal generate_explosion_at_position +/* 078D54 7F0441E4 AFA7002C */ sw $a3, 0x2c($sp) +/* 078D58 7F0441E8 8FA7002C */ lw $a3, 0x2c($sp) +/* 078D5C 7F0441EC 24040078 */ li $a0, 120 +/* 078D60 7F0441F0 8CED0064 */ lw $t5, 0x64($a3) +/* 078D64 7F0441F4 35AE0004 */ ori $t6, $t5, 4 +/* 078D68 7F0441F8 0FC23213 */ jal trigger_explosions_around_player +/* 078D6C 7F0441FC ACEE0064 */ sw $t6, 0x64($a3) +/* 078D70 7F044200 24040002 */ li $a0, 2 +/* 078D74 7F044204 0FC15997 */ jal set_unset_clock_lock_bits +/* 078D78 7F044208 00002825 */ move $a1, $zero +/* 078D7C 7F04420C 100000B3 */ b .L7F0444DC +/* 078D80 7F044210 8FBF0014 */ lw $ra, 0x14($sp) +/* 078D84 7F044214 2401001B */ li $at, 27 +.L7F044218: +/* 078D88 7F044218 10610003 */ beq $v1, $at, .L7F044228 +/* 078D8C 7F04421C 24010021 */ li $at, 33 +/* 078D90 7F044220 54610020 */ bnel $v1, $at, .L7F0442A4 +/* 078D94 7F044224 2401001D */ li $at, 29 +.L7F044228: +/* 078D98 7F044228 84C20082 */ lh $v0, 0x82($a2) +/* 078D9C 7F04422C 3C0F8005 */ lui $t7, %hi(clock_timer) # $t7, 0x8005 +/* 078DA0 7F044230 0442001C */ bltzl $v0, .L7F0442A4 +/* 078DA4 7F044234 2401001D */ li $at, 29 +/* 078DA8 7F044238 8DEF83A4 */ lw $t7, %lo(clock_timer)($t7) +/* 078DAC 7F04423C 004FC023 */ subu $t8, $v0, $t7 +/* 078DB0 7F044240 A4D80082 */ sh $t8, 0x82($a2) +/* 078DB4 7F044244 84D90082 */ lh $t9, 0x82($a2) +/* 078DB8 7F044248 8FA40030 */ lw $a0, 0x30($sp) +/* 078DBC 7F04424C 072300A3 */ bgezl $t9, .L7F0444DC +/* 078DC0 7F044250 8FBF0014 */ lw $ra, 0x14($sp) +/* 078DC4 7F044254 8CE8000C */ lw $t0, 0xc($a3) +/* 078DC8 7F044258 2405000D */ li $a1, 13 +/* 078DCC 7F04425C 00084800 */ sll $t1, $t0, 0 +/* 078DD0 7F044260 05210003 */ bgez $t1, .L7F044270 +/* 078DD4 7F044264 00000000 */ nop +/* 078DD8 7F044268 10000001 */ b .L7F044270 +/* 078DDC 7F04426C 24050011 */ li $a1, 17 +.L7F044270: +/* 078DE0 7F044270 AFA60028 */ sw $a2, 0x28($sp) +/* 078DE4 7F044274 0FC10F9F */ jal generate_explosion_at_position +/* 078DE8 7F044278 AFA7002C */ sw $a3, 0x2c($sp) +/* 078DEC 7F04427C 8FA60028 */ lw $a2, 0x28($sp) +/* 078DF0 7F044280 10400095 */ beqz $v0, .L7F0444D8 +/* 078DF4 7F044284 8FA7002C */ lw $a3, 0x2c($sp) +/* 078DF8 7F044288 240AFFFF */ li $t2, -1 +/* 078DFC 7F04428C A4CA0082 */ sh $t2, 0x82($a2) +/* 078E00 7F044290 8CEB0064 */ lw $t3, 0x64($a3) +/* 078E04 7F044294 356C0004 */ ori $t4, $t3, 4 +/* 078E08 7F044298 1000008F */ b .L7F0444D8 +/* 078E0C 7F04429C ACEC0064 */ sw $t4, 0x64($a3) +/* 078E10 7F0442A0 2401001D */ li $at, 29 +.L7F0442A4: +/* 078E14 7F0442A4 5461003F */ bnel $v1, $at, .L7F0443A4 +/* 078E18 7F0442A8 2401001C */ li $at, 28 +/* 078E1C 7F0442AC 3C038003 */ lui $v1, %hi(D_80030AF4) # $v1, 0x8003 +/* 078E20 7F0442B0 8C630B34 */ lw $v1, %lo(D_80030AF4)($v1) +/* 078E24 7F0442B4 3C088005 */ lui $t0, %hi(clock_timer) # $t0, 0x8005 +/* 078E28 7F0442B8 5060000C */ beql $v1, $zero, .L7F0442EC +/* 078E2C 7F0442BC 84C20082 */ lh $v0, 0x82($a2) +/* 078E30 7F0442C0 8CE20064 */ lw $v0, 0x64($a3) +/* 078E34 7F0442C4 3C010006 */ lui $at, 6 +/* 078E38 7F0442C8 240F0001 */ li $t7, 1 +/* 078E3C 7F0442CC 00416824 */ and $t5, $v0, $at +/* 078E40 7F0442D0 000D7442 */ srl $t6, $t5, 0x11 +/* 078E44 7F0442D4 01CFC004 */ sllv $t8, $t7, $t6 +/* 078E48 7F0442D8 0078C824 */ and $t9, $v1, $t8 +/* 078E4C 7F0442DC 53200003 */ beql $t9, $zero, .L7F0442EC +/* 078E50 7F0442E0 84C20082 */ lh $v0, 0x82($a2) +/* 078E54 7F0442E4 A4C00082 */ sh $zero, 0x82($a2) +/* 078E58 7F0442E8 84C20082 */ lh $v0, 0x82($a2) +.L7F0442EC: +/* 078E5C 7F0442EC 28410002 */ slti $at, $v0, 2 +/* 078E60 7F0442F0 1420000B */ bnez $at, .L7F044320 +/* 078E64 7F0442F4 00000000 */ nop +/* 078E68 7F0442F8 8D0883A4 */ lw $t0, %lo(clock_timer)($t0) +/* 078E6C 7F0442FC 240B0001 */ li $t3, 1 +/* 078E70 7F044300 00484823 */ subu $t1, $v0, $t0 +/* 078E74 7F044304 A4C90082 */ sh $t1, 0x82($a2) +/* 078E78 7F044308 84CA0082 */ lh $t2, 0x82($a2) +/* 078E7C 7F04430C 29410002 */ slti $at, $t2, 2 +/* 078E80 7F044310 50200072 */ beql $at, $zero, .L7F0444DC +/* 078E84 7F044314 8FBF0014 */ lw $ra, 0x14($sp) +/* 078E88 7F044318 1000006F */ b .L7F0444D8 +/* 078E8C 7F04431C A4CB0082 */ sh $t3, 0x82($a2) +.L7F044320: +/* 078E90 7F044320 5440006E */ bnezl $v0, .L7F0444DC +/* 078E94 7F044324 8FBF0014 */ lw $ra, 0x14($sp) +/* 078E98 7F044328 8CEC000C */ lw $t4, 0xc($a3) +/* 078E9C 7F04432C 2405000D */ li $a1, 13 +/* 078EA0 7F044330 000C6800 */ sll $t5, $t4, 0 +/* 078EA4 7F044334 05A30004 */ bgezl $t5, .L7F044348 +/* 078EA8 7F044338 AFA5001C */ sw $a1, 0x1c($sp) +/* 078EAC 7F04433C 1000000B */ b .L7F04436C +/* 078EB0 7F044340 24050011 */ li $a1, 17 +/* 078EB4 7F044344 AFA5001C */ sw $a1, 0x1c($sp) +.L7F044348: +/* 078EB8 7F044348 AFA60028 */ sw $a2, 0x28($sp) +/* 078EBC 7F04434C 0C001A57 */ jal get_stage_num +/* 078EC0 7F044350 AFA7002C */ sw $a3, 0x2c($sp) +/* 078EC4 7F044354 24010022 */ li $at, 34 +/* 078EC8 7F044358 8FA5001C */ lw $a1, 0x1c($sp) +/* 078ECC 7F04435C 8FA60028 */ lw $a2, 0x28($sp) +/* 078ED0 7F044360 14410002 */ bne $v0, $at, .L7F04436C +/* 078ED4 7F044364 8FA7002C */ lw $a3, 0x2c($sp) +/* 078ED8 7F044368 24050013 */ li $a1, 19 +.L7F04436C: +/* 078EDC 7F04436C 8FA40030 */ lw $a0, 0x30($sp) +/* 078EE0 7F044370 AFA60028 */ sw $a2, 0x28($sp) +/* 078EE4 7F044374 0FC10F9F */ jal generate_explosion_at_position +/* 078EE8 7F044378 AFA7002C */ sw $a3, 0x2c($sp) +/* 078EEC 7F04437C 8FA60028 */ lw $a2, 0x28($sp) +/* 078EF0 7F044380 10400055 */ beqz $v0, .L7F0444D8 +/* 078EF4 7F044384 8FA7002C */ lw $a3, 0x2c($sp) +/* 078EF8 7F044388 240EFFFF */ li $t6, -1 +/* 078EFC 7F04438C A4CE0082 */ sh $t6, 0x82($a2) +/* 078F00 7F044390 8CEF0064 */ lw $t7, 0x64($a3) +/* 078F04 7F044394 35F80004 */ ori $t8, $t7, 4 +/* 078F08 7F044398 1000004F */ b .L7F0444D8 +/* 078F0C 7F04439C ACF80064 */ sw $t8, 0x64($a3) +/* 078F10 7F0443A0 2401001C */ li $at, 28 +.L7F0443A4: +/* 078F14 7F0443A4 5461004D */ bnel $v1, $at, .L7F0444DC +/* 078F18 7F0443A8 8FBF0014 */ lw $ra, 0x14($sp) +/* 078F1C 7F0443AC 84C20082 */ lh $v0, 0x82($a2) +/* 078F20 7F0443B0 3C198005 */ lui $t9, %hi(clock_timer) # $t9, 0x8005 +/* 078F24 7F0443B4 28410002 */ slti $at, $v0, 2 +/* 078F28 7F0443B8 54200012 */ bnezl $at, .L7F044404 +/* 078F2C 7F0443BC 24010001 */ li $at, 1 +/* 078F30 7F0443C0 8F3983A4 */ lw $t9, %lo(clock_timer)($t9) +/* 078F34 7F0443C4 240A0001 */ li $t2, 1 +/* 078F38 7F0443C8 00C02025 */ move $a0, $a2 +/* 078F3C 7F0443CC 00594023 */ subu $t0, $v0, $t9 +/* 078F40 7F0443D0 A4C80082 */ sh $t0, 0x82($a2) +/* 078F44 7F0443D4 84C90082 */ lh $t1, 0x82($a2) +/* 078F48 7F0443D8 29210002 */ slti $at, $t1, 2 +/* 078F4C 7F0443DC 50200027 */ beql $at, $zero, .L7F04447C +/* 078F50 7F0443E0 84CC0082 */ lh $t4, 0x82($a2) +/* 078F54 7F0443E4 A4CA0082 */ sh $t2, 0x82($a2) +/* 078F58 7F0443E8 AFA7002C */ sw $a3, 0x2c($sp) +/* 078F5C 7F0443EC 0FC14816 */ jal add_obj_to_temp_proxmine_table +/* 078F60 7F0443F0 AFA60028 */ sw $a2, 0x28($sp) +/* 078F64 7F0443F4 8FA60028 */ lw $a2, 0x28($sp) +/* 078F68 7F0443F8 1000001F */ b .L7F044478 +/* 078F6C 7F0443FC 8FA7002C */ lw $a3, 0x2c($sp) +/* 078F70 7F044400 24010001 */ li $at, 1 +.L7F044404: +/* 078F74 7F044404 5441001D */ bnel $v0, $at, .L7F04447C +/* 078F78 7F044408 84CC0082 */ lh $t4, 0x82($a2) +/* 078F7C 7F04440C AFA60028 */ sw $a2, 0x28($sp) +/* 078F80 7F044410 0FC2279B */ jal get_curplayer_positiondata +/* 078F84 7F044414 AFA7002C */ sw $a3, 0x2c($sp) +/* 078F88 7F044418 8FAB0030 */ lw $t3, 0x30($sp) +/* 078F8C 7F04441C C4440008 */ lwc1 $f4, 8($v0) +/* 078F90 7F044420 C448000C */ lwc1 $f8, 0xc($v0) +/* 078F94 7F044424 C5660008 */ lwc1 $f6, 8($t3) +/* 078F98 7F044428 C56A000C */ lwc1 $f10, 0xc($t3) +/* 078F9C 7F04442C C4500010 */ lwc1 $f16, 0x10($v0) +/* 078FA0 7F044430 46062001 */ sub.s $f0, $f4, $f6 +/* 078FA4 7F044434 C5720010 */ lwc1 $f18, 0x10($t3) +/* 078FA8 7F044438 3C018005 */ lui $at, %hi(D_80052A94) # $at, 0x8005 +/* 078FAC 7F04443C 460A4081 */ sub.s $f2, $f8, $f10 +/* 078FB0 7F044440 46000102 */ mul.s $f4, $f0, $f0 +/* 078FB4 7F044444 8FA60028 */ lw $a2, 0x28($sp) +/* 078FB8 7F044448 46128301 */ sub.s $f12, $f16, $f18 +/* 078FBC 7F04444C 46021182 */ mul.s $f6, $f2, $f2 +/* 078FC0 7F044450 C4322AC4 */ lwc1 $f18, %lo(D_80052A94)($at) +/* 078FC4 7F044454 8FA7002C */ lw $a3, 0x2c($sp) +/* 078FC8 7F044458 460C6282 */ mul.s $f10, $f12, $f12 +/* 078FCC 7F04445C 46062200 */ add.s $f8, $f4, $f6 +/* 078FD0 7F044460 460A4400 */ add.s $f16, $f8, $f10 +/* 078FD4 7F044464 4612803C */ c.lt.s $f16, $f18 +/* 078FD8 7F044468 00000000 */ nop +/* 078FDC 7F04446C 45020003 */ bc1fl .L7F04447C +/* 078FE0 7F044470 84CC0082 */ lh $t4, 0x82($a2) +/* 078FE4 7F044474 A4C00082 */ sh $zero, 0x82($a2) +.L7F044478: +/* 078FE8 7F044478 84CC0082 */ lh $t4, 0x82($a2) +.L7F04447C: +/* 078FEC 7F04447C 8FA40030 */ lw $a0, 0x30($sp) +/* 078FF0 7F044480 55800016 */ bnezl $t4, .L7F0444DC +/* 078FF4 7F044484 8FBF0014 */ lw $ra, 0x14($sp) +/* 078FF8 7F044488 8CED000C */ lw $t5, 0xc($a3) +/* 078FFC 7F04448C 2405000D */ li $a1, 13 +/* 079000 7F044490 000D7000 */ sll $t6, $t5, 0 +/* 079004 7F044494 05C10003 */ bgez $t6, .L7F0444A4 +/* 079008 7F044498 00000000 */ nop +/* 07900C 7F04449C 10000001 */ b .L7F0444A4 +/* 079010 7F0444A0 24050011 */ li $a1, 17 +.L7F0444A4: +/* 079014 7F0444A4 AFA60028 */ sw $a2, 0x28($sp) +/* 079018 7F0444A8 0FC10F9F */ jal generate_explosion_at_position +/* 07901C 7F0444AC AFA7002C */ sw $a3, 0x2c($sp) +/* 079020 7F0444B0 8FA60028 */ lw $a2, 0x28($sp) +/* 079024 7F0444B4 10400008 */ beqz $v0, .L7F0444D8 +/* 079028 7F0444B8 8FA7002C */ lw $a3, 0x2c($sp) +/* 07902C 7F0444BC 240FFFFF */ li $t7, -1 +/* 079030 7F0444C0 A4CF0082 */ sh $t7, 0x82($a2) +/* 079034 7F0444C4 8CF80064 */ lw $t8, 0x64($a3) +/* 079038 7F0444C8 00C02025 */ move $a0, $a2 +/* 07903C 7F0444CC 37190004 */ ori $t9, $t8, 4 +/* 079040 7F0444D0 0FC14824 */ jal remove_obj_from_temp_proxmine_table +/* 079044 7F0444D4 ACF90064 */ sw $t9, 0x64($a3) +.L7F0444D8: +/* 079048 7F0444D8 8FBF0014 */ lw $ra, 0x14($sp) +.L7F0444DC: +/* 07904C 7F0444DC 27BD0030 */ addiu $sp, $sp, 0x30 +/* 079050 7F0444E0 03E00008 */ jr $ra +/* 079054 7F0444E4 00000000 */ nop +) +#endif + +#endif + + + +#ifdef NONMATCHING +void sub_GAME_7F044200(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F044200 +/* 078D30 7F044200 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 078D34 7F044204 AFBF001C */ sw $ra, 0x1c($sp) +/* 078D38 7F044208 AFB10018 */ sw $s1, 0x18($sp) +/* 078D3C 7F04420C AFB00014 */ sw $s0, 0x14($sp) +/* 078D40 7F044210 8C900020 */ lw $s0, 0x20($a0) +/* 078D44 7F044214 52000009 */ beql $s0, $zero, .L7F04423C +/* 078D48 7F044218 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04421C: +/* 078D4C 7F04421C 8E110024 */ lw $s1, 0x24($s0) +/* 078D50 7F044220 0FC11080 */ jal sub_GAME_7F044200 +/* 078D54 7F044224 02002025 */ move $a0, $s0 +/* 078D58 7F044228 0FC1304C */ jal sub_GAME_7F04C130 +/* 078D5C 7F04422C 02002025 */ move $a0, $s0 +/* 078D60 7F044230 1620FFFA */ bnez $s1, .L7F04421C +/* 078D64 7F044234 02208025 */ move $s0, $s1 +/* 078D68 7F044238 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04423C: +/* 078D6C 7F04423C 8FB00014 */ lw $s0, 0x14($sp) +/* 078D70 7F044240 8FB10018 */ lw $s1, 0x18($sp) +/* 078D74 7F044244 03E00008 */ jr $ra +/* 078D78 7F044248 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04424C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04424C +/* 078D7C 7F04424C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 078D80 7F044250 AFBF001C */ sw $ra, 0x1c($sp) +/* 078D84 7F044254 AFB10018 */ sw $s1, 0x18($sp) +/* 078D88 7F044258 AFB00014 */ sw $s0, 0x14($sp) +/* 078D8C 7F04425C 8C870004 */ lw $a3, 4($a0) +/* 078D90 7F044260 00808825 */ move $s1, $a0 +/* 078D94 7F044264 8CEE0064 */ lw $t6, 0x64($a3) +/* 078D98 7F044268 31CF0004 */ andi $t7, $t6, 4 +/* 078D9C 7F04426C 51E0000A */ beql $t7, $zero, .L7F044298 +/* 078DA0 7F044270 92390001 */ lbu $t9, 1($s1) +/* 078DA4 7F044274 90E60002 */ lbu $a2, 2($a3) +/* 078DA8 7F044278 00E02025 */ move $a0, $a3 +/* 078DAC 7F04427C 24050001 */ li $a1, 1 +/* 078DB0 7F044280 30D80004 */ andi $t8, $a2, 4 +/* 078DB4 7F044284 0FC10366 */ jal sub_GAME_7F040D98 +/* 078DB8 7F044288 03003025 */ move $a2, $t8 +/* 078DBC 7F04428C 1000000F */ b .L7F0442CC +/* 078DC0 7F044290 8FBF001C */ lw $ra, 0x1c($sp) +/* 078DC4 7F044294 92390001 */ lbu $t9, 1($s1) +.L7F044298: +/* 078DC8 7F044298 02202025 */ move $a0, $s1 +/* 078DCC 7F04429C 3328FFFD */ andi $t0, $t9, 0xfffd +/* 078DD0 7F0442A0 0FC10F5C */ jal handle_thrown_explosive_detonation +/* 078DD4 7F0442A4 A2280001 */ sb $t0, 1($s1) +/* 078DD8 7F0442A8 8E300020 */ lw $s0, 0x20($s1) +/* 078DDC 7F0442AC 52000007 */ beql $s0, $zero, .L7F0442CC +/* 078DE0 7F0442B0 8FBF001C */ lw $ra, 0x1c($sp) +.L7F0442B4: +/* 078DE4 7F0442B4 8E110024 */ lw $s1, 0x24($s0) +/* 078DE8 7F0442B8 0FC11093 */ jal sub_GAME_7F04424C +/* 078DEC 7F0442BC 02002025 */ move $a0, $s0 +/* 078DF0 7F0442C0 1620FFFC */ bnez $s1, .L7F0442B4 +/* 078DF4 7F0442C4 02208025 */ move $s0, $s1 +/* 078DF8 7F0442C8 8FBF001C */ lw $ra, 0x1c($sp) +.L7F0442CC: +/* 078DFC 7F0442CC 8FB00014 */ lw $s0, 0x14($sp) +/* 078E00 7F0442D0 8FB10018 */ lw $s1, 0x18($sp) +/* 078E04 7F0442D4 03E00008 */ jr $ra +/* 078E08 7F0442D8 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0442DC(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0442DC +/* 078E0C 7F0442DC 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 078E10 7F0442E0 AFBF0024 */ sw $ra, 0x24($sp) +/* 078E14 7F0442E4 AFB20020 */ sw $s2, 0x20($sp) +/* 078E18 7F0442E8 AFB1001C */ sw $s1, 0x1c($sp) +/* 078E1C 7F0442EC AFB00018 */ sw $s0, 0x18($sp) +/* 078E20 7F0442F0 8C910004 */ lw $s1, 4($a0) +/* 078E24 7F0442F4 00809025 */ move $s2, $a0 +/* 078E28 7F0442F8 8E220064 */ lw $v0, 0x64($s1) +/* 078E2C 7F0442FC 8E300014 */ lw $s0, 0x14($s1) +/* 078E30 7F044300 304E0004 */ andi $t6, $v0, 4 +/* 078E34 7F044304 51C0000A */ beql $t6, $zero, .L7F044330 +/* 078E38 7F044308 8E05001C */ lw $a1, 0x1c($s0) +/* 078E3C 7F04430C 92260002 */ lbu $a2, 2($s1) +/* 078E40 7F044310 02202025 */ move $a0, $s1 +/* 078E44 7F044314 24050001 */ li $a1, 1 +/* 078E48 7F044318 30CF0004 */ andi $t7, $a2, 4 +/* 078E4C 7F04431C 0FC10366 */ jal sub_GAME_7F040D98 +/* 078E50 7F044320 01E03025 */ move $a2, $t7 +/* 078E54 7F044324 10000036 */ b .L7F044400 +/* 078E58 7F044328 8FBF0024 */ lw $ra, 0x24($sp) +/* 078E5C 7F04432C 8E05001C */ lw $a1, 0x1c($s0) +.L7F044330: +/* 078E60 7F044330 30580040 */ andi $t8, $v0, 0x40 +/* 078E64 7F044334 50A00025 */ beql $a1, $zero, .L7F0443CC +/* 078E68 7F044338 924C0001 */ lbu $t4, 1($s2) +/* 078E6C 7F04433C 13000022 */ beqz $t8, .L7F0443C8 +/* 078E70 7F044340 00003025 */ move $a2, $zero +/* 078E74 7F044344 0FC1B198 */ jal sub_GAME_7F06C660 +/* 078E78 7F044348 8E040018 */ lw $a0, 0x18($s0) +/* 078E7C 7F04434C AFA2002C */ sw $v0, 0x2c($sp) +/* 078E80 7F044350 92590001 */ lbu $t9, 1($s2) +/* 078E84 7F044354 37280002 */ ori $t0, $t9, 2 +/* 078E88 7F044358 A2480001 */ sb $t0, 1($s2) +/* 078E8C 7F04435C 8E090008 */ lw $t1, 8($s0) +/* 078E90 7F044360 8524000E */ lh $a0, 0xe($t1) +/* 078E94 7F044364 00045180 */ sll $t2, $a0, 6 +/* 078E98 7F044368 0FC2F5C5 */ jal sub_GAME_7F0BD714 +/* 078E9C 7F04436C 01402025 */ move $a0, $t2 +/* 078EA0 7F044370 AE02000C */ sw $v0, 0xc($s0) +/* 078EA4 7F044374 8E25006C */ lw $a1, 0x6c($s1) +/* 078EA8 7F044378 8FA4002C */ lw $a0, 0x2c($sp) +/* 078EAC 7F04437C 00403025 */ move $a2, $v0 +/* 078EB0 7F044380 0FC16063 */ jal sub_GAME_7F05818C +/* 078EB4 7F044384 24A50004 */ addiu $a1, $a1, 4 +/* 078EB8 7F044388 8E0B0008 */ lw $t3, 8($s0) +/* 078EBC 7F04438C 02002025 */ move $a0, $s0 +/* 078EC0 7F044390 0FC1BBA9 */ jal sub_GAME_7F06EEA4 +/* 078EC4 7F044394 8D650000 */ lw $a1, ($t3) +/* 078EC8 7F044398 0FC10F5C */ jal handle_thrown_explosive_detonation +/* 078ECC 7F04439C 02402025 */ move $a0, $s2 +/* 078ED0 7F0443A0 8E510020 */ lw $s1, 0x20($s2) +/* 078ED4 7F0443A4 52200016 */ beql $s1, $zero, .L7F044400 +/* 078ED8 7F0443A8 8FBF0024 */ lw $ra, 0x24($sp) +.L7F0443AC: +/* 078EDC 7F0443AC 8E300024 */ lw $s0, 0x24($s1) +/* 078EE0 7F0443B0 0FC110B7 */ jal sub_GAME_7F0442DC +/* 078EE4 7F0443B4 02202025 */ move $a0, $s1 +/* 078EE8 7F0443B8 1600FFFC */ bnez $s0, .L7F0443AC +/* 078EEC 7F0443BC 02008825 */ move $s1, $s0 +/* 078EF0 7F0443C0 1000000F */ b .L7F044400 +/* 078EF4 7F0443C4 8FBF0024 */ lw $ra, 0x24($sp) +.L7F0443C8: +/* 078EF8 7F0443C8 924C0001 */ lbu $t4, 1($s2) +.L7F0443CC: +/* 078EFC 7F0443CC 02402025 */ move $a0, $s2 +/* 078F00 7F0443D0 318DFFFD */ andi $t5, $t4, 0xfffd +/* 078F04 7F0443D4 0FC10F5C */ jal handle_thrown_explosive_detonation +/* 078F08 7F0443D8 A24D0001 */ sb $t5, 1($s2) +/* 078F0C 7F0443DC 8E510020 */ lw $s1, 0x20($s2) +/* 078F10 7F0443E0 52200007 */ beql $s1, $zero, .L7F044400 +/* 078F14 7F0443E4 8FBF0024 */ lw $ra, 0x24($sp) +.L7F0443E8: +/* 078F18 7F0443E8 8E300024 */ lw $s0, 0x24($s1) +/* 078F1C 7F0443EC 0FC11093 */ jal sub_GAME_7F04424C +/* 078F20 7F0443F0 02202025 */ move $a0, $s1 +/* 078F24 7F0443F4 1600FFFC */ bnez $s0, .L7F0443E8 +/* 078F28 7F0443F8 02008825 */ move $s1, $s0 +/* 078F2C 7F0443FC 8FBF0024 */ lw $ra, 0x24($sp) +.L7F044400: +/* 078F30 7F044400 8FB00018 */ lw $s0, 0x18($sp) +/* 078F34 7F044404 8FB1001C */ lw $s1, 0x1c($sp) +/* 078F38 7F044408 8FB20020 */ lw $s2, 0x20($sp) +/* 078F3C 7F04440C 03E00008 */ jr $ra +/* 078F40 7F044410 27BD0040 */ addiu $sp, $sp, 0x40 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F044414(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F044414 +/* 078F44 7F044414 27BDFF48 */ addiu $sp, $sp, -0xb8 +/* 078F48 7F044418 AFB50044 */ sw $s5, 0x44($sp) +/* 078F4C 7F04441C AFB20038 */ sw $s2, 0x38($sp) +/* 078F50 7F044420 AFB10034 */ sw $s1, 0x34($sp) +/* 078F54 7F044424 AFB00030 */ sw $s0, 0x30($sp) +/* 078F58 7F044428 00A08025 */ move $s0, $a1 +/* 078F5C 7F04442C 00E08825 */ move $s1, $a3 +/* 078F60 7F044430 00809025 */ move $s2, $a0 +/* 078F64 7F044434 00C0A825 */ move $s5, $a2 +/* 078F68 7F044438 AFBF004C */ sw $ra, 0x4c($sp) +/* 078F6C 7F04443C AFB60048 */ sw $s6, 0x48($sp) +/* 078F70 7F044440 AFB40040 */ sw $s4, 0x40($sp) +/* 078F74 7F044444 AFB3003C */ sw $s3, 0x3c($sp) +/* 078F78 7F044448 F7B80028 */ sdc1 $f24, 0x28($sp) +/* 078F7C 7F04444C F7B60020 */ sdc1 $f22, 0x20($sp) +/* 078F80 7F044450 F7B40018 */ sdc1 $f20, 0x18($sp) +/* 078F84 7F044454 18A0008A */ blez $a1, .L7F044680 +/* 078F88 7F044458 00004025 */ move $t0, $zero +/* 078F8C 7F04445C 4480C000 */ mtc1 $zero, $f24 +/* 078F90 7F044460 4480B800 */ mtc1 $zero, $f23 +/* 078F94 7F044464 4480B000 */ mtc1 $zero, $f22 +/* 078F98 7F044468 00809825 */ move $s3, $a0 +/* 078F9C 7F04446C D7B40088 */ ldc1 $f20, 0x88($sp) +/* 078FA0 7F044470 27B60074 */ addiu $s6, $sp, 0x74 +.L7F044474: +/* 078FA4 7F044474 25140001 */ addiu $s4, $t0, 1 +/* 078FA8 7F044478 0290001A */ div $zero, $s4, $s0 +/* 078FAC 7F04447C 00002810 */ mfhi $a1 +/* 078FB0 7F044480 000570C0 */ sll $t6, $a1, 3 +/* 078FB4 7F044484 024E1021 */ addu $v0, $s2, $t6 +/* 078FB8 7F044488 C4460004 */ lwc1 $f6, 4($v0) +/* 078FBC 7F04448C C6640004 */ lwc1 $f4, 4($s3) +/* 078FC0 7F044490 C44A0000 */ lwc1 $f10, ($v0) +/* 078FC4 7F044494 46003221 */ cvt.d.s $f8, $f6 +/* 078FC8 7F044498 46002021 */ cvt.d.s $f0, $f4 +/* 078FCC 7F04449C C6620000 */ lwc1 $f2, ($s3) +/* 078FD0 7F0444A0 46204301 */ sub.d $f12, $f8, $f0 +/* 078FD4 7F0444A4 16000002 */ bnez $s0, .L7F0444B0 +/* 078FD8 7F0444A8 00000000 */ nop +/* 078FDC 7F0444AC 0007000D */ break 7 +.L7F0444B0: +/* 078FE0 7F0444B0 2401FFFF */ li $at, -1 +/* 078FE4 7F0444B4 16010004 */ bne $s0, $at, .L7F0444C8 +/* 078FE8 7F0444B8 3C018000 */ lui $at, 0x8000 +/* 078FEC 7F0444BC 16810002 */ bne $s4, $at, .L7F0444C8 +/* 078FF0 7F0444C0 00000000 */ nop +/* 078FF4 7F0444C4 0006000D */ break 6 +.L7F0444C8: +/* 078FF8 7F0444C8 46366032 */ c.eq.d $f12, $f22 +/* 078FFC 7F0444CC 24AF0001 */ addiu $t7, $a1, 1 +/* 079000 7F0444D0 460054A1 */ cvt.d.s $f18, $f10 +/* 079004 7F0444D4 46001421 */ cvt.d.s $f16, $f2 +/* 079008 7F0444D8 45000011 */ bc1f .L7F044520 +/* 07900C 7F0444DC 46328381 */ sub.d $f14, $f16, $f18 +/* 079010 7F0444E0 46367032 */ c.eq.d $f14, $f22 +/* 079014 7F0444E4 00000000 */ nop +/* 079018 7F0444E8 4500000D */ bc1f .L7F044520 +/* 07901C 7F0444EC 00000000 */ nop +/* 079020 7F0444F0 E7A20074 */ swc1 $f2, 0x74($sp) +/* 079024 7F0444F4 E7B80078 */ swc1 $f24, 0x78($sp) +/* 079028 7F0444F8 C6640004 */ lwc1 $f4, 4($s3) +/* 07902C 7F0444FC 02C02025 */ move $a0, $s6 +/* 079030 7F044500 02A02825 */ move $a1, $s5 +/* 079034 7F044504 02203025 */ move $a2, $s1 +/* 079038 7F044508 0FC0F336 */ jal sub_GAME_7F03CCD8 +/* 07903C 7F04450C E7A4007C */ swc1 $f4, 0x7c($sp) +/* 079040 7F044510 50400058 */ beql $v0, $zero, .L7F044674 +/* 079044 7F044514 02804025 */ move $t0, $s4 +/* 079048 7F044518 1000005A */ b .L7F044684 +/* 07904C 7F04451C 00001025 */ move $v0, $zero +.L7F044520: +/* 079050 7F044520 01F0001A */ div $zero, $t7, $s0 +/* 079054 7F044524 462E0182 */ mul.d $f6, $f0, $f14 +/* 079058 7F044528 00001010 */ mfhi $v0 +/* 07905C 7F04452C 00401825 */ move $v1, $v0 +/* 079060 7F044530 00002025 */ move $a0, $zero +/* 079064 7F044534 462C8202 */ mul.d $f8, $f16, $f12 +/* 079068 7F044538 46283080 */ add.d $f2, $f6, $f8 +/* 07906C 7F04453C 16000002 */ bnez $s0, .L7F044548 +/* 079070 7F044540 00000000 */ nop +/* 079074 7F044544 0007000D */ break 7 +.L7F044548: +/* 079078 7F044548 2401FFFF */ li $at, -1 +/* 07907C 7F04454C 16010004 */ bne $s0, $at, .L7F044560 +/* 079080 7F044550 3C018000 */ lui $at, 0x8000 +/* 079084 7F044554 15E10002 */ bne $t7, $at, .L7F044560 +/* 079088 7F044558 00000000 */ nop +/* 07908C 7F04455C 0006000D */ break 6 +.L7F044560: +/* 079090 7F044560 1102001D */ beq $t0, $v0, .L7F0445D8 +/* 079094 7F044564 00000000 */ nop +/* 079098 7F044568 0003C0C0 */ sll $t8, $v1, 3 +.L7F04456C: +/* 07909C 7F04456C 02581021 */ addu $v0, $s2, $t8 +/* 0790A0 7F044570 C44A0004 */ lwc1 $f10, 4($v0) +/* 0790A4 7F044574 C4460000 */ lwc1 $f6, ($v0) +/* 0790A8 7F044578 460054A1 */ cvt.d.s $f18, $f10 +/* 0790AC 7F04457C 46003221 */ cvt.d.s $f8, $f6 +/* 0790B0 7F044580 462E9102 */ mul.d $f4, $f18, $f14 +/* 0790B4 7F044584 00000000 */ nop +/* 0790B8 7F044588 462C4282 */ mul.d $f10, $f8, $f12 +/* 0790BC 7F04458C 462A2500 */ add.d $f20, $f4, $f10 +/* 0790C0 7F044590 4622A032 */ c.eq.d $f20, $f2 +/* 0790C4 7F044594 00000000 */ nop +/* 0790C8 7F044598 4500000F */ bc1f .L7F0445D8 +/* 0790CC 7F04459C 00000000 */ nop +/* 0790D0 7F0445A0 24790001 */ addiu $t9, $v1, 1 +/* 0790D4 7F0445A4 0330001A */ div $zero, $t9, $s0 +/* 0790D8 7F0445A8 00001810 */ mfhi $v1 +/* 0790DC 7F0445AC 16000002 */ bnez $s0, .L7F0445B8 +/* 0790E0 7F0445B0 00000000 */ nop +/* 0790E4 7F0445B4 0007000D */ break 7 +.L7F0445B8: +/* 0790E8 7F0445B8 2401FFFF */ li $at, -1 +/* 0790EC 7F0445BC 16010004 */ bne $s0, $at, .L7F0445D0 +/* 0790F0 7F0445C0 3C018000 */ lui $at, 0x8000 +/* 0790F4 7F0445C4 17210002 */ bne $t9, $at, .L7F0445D0 +/* 0790F8 7F0445C8 00000000 */ nop +/* 0790FC 7F0445CC 0006000D */ break 6 +.L7F0445D0: +/* 079100 7F0445D0 5468FFE6 */ bnel $v1, $t0, .L7F04456C +/* 079104 7F0445D4 0003C0C0 */ sll $t8, $v1, 3 +.L7F0445D8: +/* 079108 7F0445D8 1A200021 */ blez $s1, .L7F044660 +/* 07910C 7F0445DC 00000000 */ nop +/* 079110 7F0445E0 02A01025 */ move $v0, $s5 +.L7F0445E4: +/* 079114 7F0445E4 C4520004 */ lwc1 $f18, 4($v0) +/* 079118 7F0445E8 C4440000 */ lwc1 $f4, ($v0) +/* 07911C 7F0445EC 4622A032 */ c.eq.d $f20, $f2 +/* 079120 7F0445F0 460091A1 */ cvt.d.s $f6, $f18 +/* 079124 7F0445F4 460022A1 */ cvt.d.s $f10, $f4 +/* 079128 7F0445F8 462E3202 */ mul.d $f8, $f6, $f14 +/* 07912C 7F0445FC 00000000 */ nop +/* 079130 7F044600 462C5482 */ mul.d $f18, $f10, $f12 +/* 079134 7F044604 45000003 */ bc1f .L7F044614 +/* 079138 7F044608 46324000 */ add.d $f0, $f8, $f18 +/* 07913C 7F04460C 46201181 */ sub.d $f6, $f2, $f0 +/* 079140 7F044610 46223500 */ add.d $f20, $f6, $f2 +.L7F044614: +/* 079144 7F044614 4622003C */ c.lt.d $f0, $f2 +/* 079148 7F044618 00000000 */ nop +/* 07914C 7F04461C 45020006 */ bc1fl .L7F044638 +/* 079150 7F044620 4620103C */ c.lt.d $f2, $f0 +/* 079154 7F044624 4622A03C */ c.lt.d $f20, $f2 +/* 079158 7F044628 00000000 */ nop +/* 07915C 7F04462C 4501000C */ bc1t .L7F044660 +/* 079160 7F044630 00000000 */ nop +/* 079164 7F044634 4620103C */ c.lt.d $f2, $f0 +.L7F044638: +/* 079168 7F044638 00000000 */ nop +/* 07916C 7F04463C 45020006 */ bc1fl .L7F044658 +/* 079170 7F044640 24840001 */ addiu $a0, $a0, 1 +/* 079174 7F044644 4634103C */ c.lt.d $f2, $f20 +/* 079178 7F044648 00000000 */ nop +/* 07917C 7F04464C 45010004 */ bc1t .L7F044660 +/* 079180 7F044650 00000000 */ nop +/* 079184 7F044654 24840001 */ addiu $a0, $a0, 1 +.L7F044658: +/* 079188 7F044658 1491FFE2 */ bne $a0, $s1, .L7F0445E4 +/* 07918C 7F04465C 24420008 */ addiu $v0, $v0, 8 +.L7F044660: +/* 079190 7F044660 54910004 */ bnel $a0, $s1, .L7F044674 +/* 079194 7F044664 02804025 */ move $t0, $s4 +/* 079198 7F044668 10000006 */ b .L7F044684 +/* 07919C 7F04466C 24020001 */ li $v0, 1 +/* 0791A0 7F044670 02804025 */ move $t0, $s4 +.L7F044674: +/* 0791A4 7F044674 1690FF7F */ bne $s4, $s0, .L7F044474 +/* 0791A8 7F044678 26730008 */ addiu $s3, $s3, 8 +/* 0791AC 7F04467C F7B40088 */ sdc1 $f20, 0x88($sp) +.L7F044680: +/* 0791B0 7F044680 00001025 */ move $v0, $zero +.L7F044684: +/* 0791B4 7F044684 8FBF004C */ lw $ra, 0x4c($sp) +/* 0791B8 7F044688 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 0791BC 7F04468C D7B60020 */ ldc1 $f22, 0x20($sp) +/* 0791C0 7F044690 D7B80028 */ ldc1 $f24, 0x28($sp) +/* 0791C4 7F044694 8FB00030 */ lw $s0, 0x30($sp) +/* 0791C8 7F044698 8FB10034 */ lw $s1, 0x34($sp) +/* 0791CC 7F04469C 8FB20038 */ lw $s2, 0x38($sp) +/* 0791D0 7F0446A0 8FB3003C */ lw $s3, 0x3c($sp) +/* 0791D4 7F0446A4 8FB40040 */ lw $s4, 0x40($sp) +/* 0791D8 7F0446A8 8FB50044 */ lw $s5, 0x44($sp) +/* 0791DC 7F0446AC 8FB60048 */ lw $s6, 0x48($sp) +/* 0791E0 7F0446B0 03E00008 */ jr $ra +/* 0791E4 7F0446B4 27BD00B8 */ addiu $sp, $sp, 0xb8 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0446B8(void) { + +} +#else + +#ifdef VERSION_US +GLOBAL_ASM( +.text +glabel sub_GAME_7F0446B8 +/* 0791E8 7F0446B8 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0791EC 7F0446BC AFBF0014 */ sw $ra, 0x14($sp) +/* 0791F0 7F0446C0 AFA40018 */ sw $a0, 0x18($sp) +/* 0791F4 7F0446C4 AFA5001C */ sw $a1, 0x1c($sp) +/* 0791F8 7F0446C8 AFA60020 */ sw $a2, 0x20($sp) +/* 0791FC 7F0446CC 0FC11105 */ jal sub_GAME_7F044414 +/* 079200 7F0446D0 AFA70024 */ sw $a3, 0x24($sp) +/* 079204 7F0446D4 10400003 */ beqz $v0, .L7F0446E4 +/* 079208 7F0446D8 8FA40020 */ lw $a0, 0x20($sp) +/* 07920C 7F0446DC 1000000A */ b .L7F044708 +/* 079210 7F0446E0 00001025 */ move $v0, $zero +.L7F0446E4: +/* 079214 7F0446E4 8FA50024 */ lw $a1, 0x24($sp) +/* 079218 7F0446E8 8FA60018 */ lw $a2, 0x18($sp) +/* 07921C 7F0446EC 0FC11105 */ jal sub_GAME_7F044414 +/* 079220 7F0446F0 8FA7001C */ lw $a3, 0x1c($sp) +/* 079224 7F0446F4 50400004 */ beql $v0, $zero, .L7F044708 +/* 079228 7F0446F8 24020001 */ li $v0, 1 +/* 07922C 7F0446FC 10000002 */ b .L7F044708 +/* 079230 7F044700 00001025 */ move $v0, $zero +/* 079234 7F044704 24020001 */ li $v0, 1 +.L7F044708: +/* 079238 7F044708 8FBF0014 */ lw $ra, 0x14($sp) +/* 07923C 7F04470C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 079240 7F044710 03E00008 */ jr $ra +/* 079244 7F044714 00000000 */ nop +) +#endif + +#ifdef VERSION_JP +GLOBAL_ASM( +.text +glabel sub_GAME_7F0446B8 +/* 079510 7F0449A0 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 079514 7F0449A4 AFB60038 */ sw $s6, 0x38($sp) +/* 079518 7F0449A8 AFB50034 */ sw $s5, 0x34($sp) +/* 07951C 7F0449AC AFB40030 */ sw $s4, 0x30($sp) +/* 079520 7F0449B0 AFB3002C */ sw $s3, 0x2c($sp) +/* 079524 7F0449B4 AFB10024 */ sw $s1, 0x24($sp) +/* 079528 7F0449B8 00A09825 */ move $s3, $a1 +/* 07952C 7F0449BC 00E0A025 */ move $s4, $a3 +/* 079530 7F0449C0 0080A825 */ move $s5, $a0 +/* 079534 7F0449C4 00C0B025 */ move $s6, $a2 +/* 079538 7F0449C8 AFBF003C */ sw $ra, 0x3c($sp) +/* 07953C 7F0449CC AFB20028 */ sw $s2, 0x28($sp) +/* 079540 7F0449D0 AFB00020 */ sw $s0, 0x20($sp) +/* 079544 7F0449D4 F7B40018 */ sdc1 $f20, 0x18($sp) +/* 079548 7F0449D8 18A00014 */ blez $a1, .Ljp7F044A2C +/* 07954C 7F0449DC 00008825 */ move $s1, $zero +/* 079550 7F0449E0 4480A000 */ mtc1 $zero, $f20 +/* 079554 7F0449E4 00808025 */ move $s0, $a0 +/* 079558 7F0449E8 27B20048 */ addiu $s2, $sp, 0x48 +.Ljp7F0449EC: +/* 07955C 7F0449EC C6040000 */ lwc1 $f4, ($s0) +/* 079560 7F0449F0 E7B4004C */ swc1 $f20, 0x4c($sp) +/* 079564 7F0449F4 02402025 */ move $a0, $s2 +/* 079568 7F0449F8 E7A40048 */ swc1 $f4, 0x48($sp) +/* 07956C 7F0449FC C6060004 */ lwc1 $f6, 4($s0) +/* 079570 7F044A00 02C02825 */ move $a1, $s6 +/* 079574 7F044A04 02803025 */ move $a2, $s4 +/* 079578 7F044A08 0FC0F3F6 */ jal sub_GAME_7F03CCD8 +/* 07957C 7F044A0C E7A60050 */ swc1 $f6, 0x50($sp) +/* 079580 7F044A10 10400003 */ beqz $v0, .Ljp7F044A20 +/* 079584 7F044A14 26310001 */ addiu $s1, $s1, 1 +/* 079588 7F044A18 10000029 */ b .Ljp7F044AC0 +/* 07958C 7F044A1C 24020001 */ li $v0, 1 +.Ljp7F044A20: +/* 079590 7F044A20 1633FFF2 */ bne $s1, $s3, .Ljp7F0449EC +/* 079594 7F044A24 26100008 */ addiu $s0, $s0, 8 +/* 079598 7F044A28 00008825 */ move $s1, $zero +.Ljp7F044A2C: +/* 07959C 7F044A2C 4480A000 */ mtc1 $zero, $f20 +/* 0795A0 7F044A30 1A800011 */ blez $s4, .Ljp7F044A78 +/* 0795A4 7F044A34 27B20048 */ addiu $s2, $sp, 0x48 +/* 0795A8 7F044A38 02C08025 */ move $s0, $s6 +.Ljp7F044A3C: +/* 0795AC 7F044A3C C6080000 */ lwc1 $f8, ($s0) +/* 0795B0 7F044A40 E7B4004C */ swc1 $f20, 0x4c($sp) +/* 0795B4 7F044A44 02402025 */ move $a0, $s2 +/* 0795B8 7F044A48 E7A80048 */ swc1 $f8, 0x48($sp) +/* 0795BC 7F044A4C C60A0004 */ lwc1 $f10, 4($s0) +/* 0795C0 7F044A50 02A02825 */ move $a1, $s5 +/* 0795C4 7F044A54 02603025 */ move $a2, $s3 +/* 0795C8 7F044A58 0FC0F3F6 */ jal sub_GAME_7F03CCD8 +/* 0795CC 7F044A5C E7AA0050 */ swc1 $f10, 0x50($sp) +/* 0795D0 7F044A60 10400003 */ beqz $v0, .Ljp7F044A70 +/* 0795D4 7F044A64 26310001 */ addiu $s1, $s1, 1 +/* 0795D8 7F044A68 10000015 */ b .Ljp7F044AC0 +/* 0795DC 7F044A6C 24020001 */ li $v0, 1 +.Ljp7F044A70: +/* 0795E0 7F044A70 1634FFF2 */ bne $s1, $s4, .Ljp7F044A3C +/* 0795E4 7F044A74 26100008 */ addiu $s0, $s0, 8 +.Ljp7F044A78: +/* 0795E8 7F044A78 02A02025 */ move $a0, $s5 +/* 0795EC 7F044A7C 02602825 */ move $a1, $s3 +/* 0795F0 7F044A80 02C03025 */ move $a2, $s6 +/* 0795F4 7F044A84 0FC111BF */ jal sub_GAME_7F044414 +/* 0795F8 7F044A88 02803825 */ move $a3, $s4 +/* 0795FC 7F044A8C 10400003 */ beqz $v0, .Ljp7F044A9C +/* 079600 7F044A90 02C02025 */ move $a0, $s6 +/* 079604 7F044A94 1000000A */ b .Ljp7F044AC0 +/* 079608 7F044A98 00001025 */ move $v0, $zero +.Ljp7F044A9C: +/* 07960C 7F044A9C 02802825 */ move $a1, $s4 +/* 079610 7F044AA0 02A03025 */ move $a2, $s5 +/* 079614 7F044AA4 0FC111BF */ jal sub_GAME_7F044414 +/* 079618 7F044AA8 02603825 */ move $a3, $s3 +/* 07961C 7F044AAC 50400004 */ beql $v0, $zero, .Ljp7F044AC0 +/* 079620 7F044AB0 24020001 */ li $v0, 1 +/* 079624 7F044AB4 10000002 */ b .Ljp7F044AC0 +/* 079628 7F044AB8 00001025 */ move $v0, $zero +/* 07962C 7F044ABC 24020001 */ li $v0, 1 +.Ljp7F044AC0: +/* 079630 7F044AC0 8FBF003C */ lw $ra, 0x3c($sp) +/* 079634 7F044AC4 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 079638 7F044AC8 8FB00020 */ lw $s0, 0x20($sp) +/* 07963C 7F044ACC 8FB10024 */ lw $s1, 0x24($sp) +/* 079640 7F044AD0 8FB20028 */ lw $s2, 0x28($sp) +/* 079644 7F044AD4 8FB3002C */ lw $s3, 0x2c($sp) +/* 079648 7F044AD8 8FB40030 */ lw $s4, 0x30($sp) +/* 07964C 7F044ADC 8FB50034 */ lw $s5, 0x34($sp) +/* 079650 7F044AE0 8FB60038 */ lw $s6, 0x38($sp) +/* 079654 7F044AE4 03E00008 */ jr $ra +/* 079658 7F044AE8 27BD0058 */ addiu $sp, $sp, 0x58 +) +#endif + +#endif + + + +#ifdef NONMATCHING +void sub_GAME_7F044718(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F044718 +/* 079248 7F044718 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 07924C 7F04471C AFB40060 */ sw $s4, 0x60($sp) +/* 079250 7F044720 AFB3005C */ sw $s3, 0x5c($sp) +/* 079254 7F044724 F7BC0040 */ sdc1 $f28, 0x40($sp) +/* 079258 7F044728 4485E000 */ mtc1 $a1, $f28 +/* 07925C 7F04472C AFBF0064 */ sw $ra, 0x64($sp) +/* 079260 7F044730 AFB20058 */ sw $s2, 0x58($sp) +/* 079264 7F044734 AFB10054 */ sw $s1, 0x54($sp) +/* 079268 7F044738 AFB00050 */ sw $s0, 0x50($sp) +/* 07926C 7F04473C F7BE0048 */ sdc1 $f30, 0x48($sp) +/* 079270 7F044740 F7BA0038 */ sdc1 $f26, 0x38($sp) +/* 079274 7F044744 F7B80030 */ sdc1 $f24, 0x30($sp) +/* 079278 7F044748 F7B60028 */ sdc1 $f22, 0x28($sp) +/* 07927C 7F04474C F7B40020 */ sdc1 $f20, 0x20($sp) +/* 079280 7F044750 00E09825 */ move $s3, $a3 +/* 079284 7F044754 00C0A025 */ move $s4, $a2 +/* 079288 7F044758 C4960000 */ lwc1 $f22, ($a0) +/* 07928C 7F04475C C4980008 */ lwc1 $f24, 8($a0) +/* 079290 7F044760 18E00042 */ blez $a3, .L7F04486C +/* 079294 7F044764 00001025 */ move $v0, $zero +/* 079298 7F044768 4480F000 */ mtc1 $zero, $f30 +/* 07929C 7F04476C 00C08825 */ move $s1, $a2 +.L7F044770: +/* 0792A0 7F044770 24520001 */ addiu $s2, $v0, 1 +/* 0792A4 7F044774 0253001A */ div $zero, $s2, $s3 +/* 0792A8 7F044778 00007010 */ mfhi $t6 +/* 0792AC 7F04477C 000E78C0 */ sll $t7, $t6, 3 +/* 0792B0 7F044780 028F8021 */ addu $s0, $s4, $t7 +/* 0792B4 7F044784 8E060000 */ lw $a2, ($s0) +/* 0792B8 7F044788 8E070004 */ lw $a3, 4($s0) +/* 0792BC 7F04478C C62C0000 */ lwc1 $f12, ($s1) +/* 0792C0 7F044790 C62E0004 */ lwc1 $f14, 4($s1) +/* 0792C4 7F044794 16600002 */ bnez $s3, .L7F0447A0 +/* 0792C8 7F044798 00000000 */ nop +/* 0792CC 7F04479C 0007000D */ break 7 +.L7F0447A0: +/* 0792D0 7F0447A0 2401FFFF */ li $at, -1 +/* 0792D4 7F0447A4 16610004 */ bne $s3, $at, .L7F0447B8 +/* 0792D8 7F0447A8 3C018000 */ lui $at, 0x8000 +/* 0792DC 7F0447AC 16410002 */ bne $s2, $at, .L7F0447B8 +/* 0792E0 7F0447B0 00000000 */ nop +/* 0792E4 7F0447B4 0006000D */ break 6 +.L7F0447B8: +/* 0792E8 7F0447B8 E7B80014 */ swc1 $f24, 0x14($sp) +/* 0792EC 7F0447BC 0FC2C5B1 */ jal sub_GAME_7F0B16C4 +/* 0792F0 7F0447C0 E7B60010 */ swc1 $f22, 0x10($sp) +/* 0792F4 7F0447C4 461E003C */ c.lt.s $f0, $f30 +/* 0792F8 7F0447C8 4406B000 */ mfc1 $a2, $f22 +/* 0792FC 7F0447CC 4407C000 */ mfc1 $a3, $f24 +/* 079300 7F0447D0 46000506 */ mov.s $f20, $f0 +/* 079304 7F0447D4 45020003 */ bc1fl .L7F0447E4 +/* 079308 7F0447D8 C62C0000 */ lwc1 $f12, ($s1) +/* 07930C 7F0447DC 46000507 */ neg.s $f20, $f0 +/* 079310 7F0447E0 C62C0000 */ lwc1 $f12, ($s1) +.L7F0447E4: +/* 079314 7F0447E4 0FC2C5E5 */ jal sub_GAME_7F0B1794 +/* 079318 7F0447E8 C62E0004 */ lwc1 $f14, 4($s1) +/* 07931C 7F0447EC 4406B000 */ mfc1 $a2, $f22 +/* 079320 7F0447F0 4407C000 */ mfc1 $a3, $f24 +/* 079324 7F0447F4 46000686 */ mov.s $f26, $f0 +/* 079328 7F0447F8 C60C0000 */ lwc1 $f12, ($s0) +/* 07932C 7F0447FC 0FC2C5E5 */ jal sub_GAME_7F0B1794 +/* 079330 7F044800 C60E0004 */ lwc1 $f14, 4($s0) +/* 079334 7F044804 461CA03C */ c.lt.s $f20, $f28 +/* 079338 7F044808 00000000 */ nop +/* 07933C 7F04480C 45020015 */ bc1fl .L7F044864 +/* 079340 7F044810 02401025 */ move $v0, $s2 +/* 079344 7F044814 461CD03C */ c.lt.s $f26, $f28 +/* 079348 7F044818 00000000 */ nop +/* 07934C 7F04481C 4501000E */ bc1t .L7F044858 +/* 079350 7F044820 00000000 */ nop +/* 079354 7F044824 461C003C */ c.lt.s $f0, $f28 +/* 079358 7F044828 00000000 */ nop +/* 07935C 7F04482C 4501000A */ bc1t .L7F044858 +/* 079360 7F044830 00000000 */ nop +/* 079364 7F044834 C62C0000 */ lwc1 $f12, ($s1) +/* 079368 7F044838 C62E0004 */ lwc1 $f14, 4($s1) +/* 07936C 7F04483C 8E060000 */ lw $a2, ($s0) +/* 079370 7F044840 8E070004 */ lw $a3, 4($s0) +/* 079374 7F044844 E7B80014 */ swc1 $f24, 0x14($sp) +/* 079378 7F044848 0FC2C5F9 */ jal sub_GAME_7F0B17E4 +/* 07937C 7F04484C E7B60010 */ swc1 $f22, 0x10($sp) +/* 079380 7F044850 50400004 */ beql $v0, $zero, .L7F044864 +/* 079384 7F044854 02401025 */ move $v0, $s2 +.L7F044858: +/* 079388 7F044858 10000005 */ b .L7F044870 +/* 07938C 7F04485C 24020001 */ li $v0, 1 +/* 079390 7F044860 02401025 */ move $v0, $s2 +.L7F044864: +/* 079394 7F044864 1653FFC2 */ bne $s2, $s3, .L7F044770 +/* 079398 7F044868 26310008 */ addiu $s1, $s1, 8 +.L7F04486C: +/* 07939C 7F04486C 00001025 */ move $v0, $zero +.L7F044870: +/* 0793A0 7F044870 8FBF0064 */ lw $ra, 0x64($sp) +/* 0793A4 7F044874 D7B40020 */ ldc1 $f20, 0x20($sp) +/* 0793A8 7F044878 D7B60028 */ ldc1 $f22, 0x28($sp) +/* 0793AC 7F04487C D7B80030 */ ldc1 $f24, 0x30($sp) +/* 0793B0 7F044880 D7BA0038 */ ldc1 $f26, 0x38($sp) +/* 0793B4 7F044884 D7BC0040 */ ldc1 $f28, 0x40($sp) +/* 0793B8 7F044888 D7BE0048 */ ldc1 $f30, 0x48($sp) +/* 0793BC 7F04488C 8FB00050 */ lw $s0, 0x50($sp) +/* 0793C0 7F044890 8FB10054 */ lw $s1, 0x54($sp) +/* 0793C4 7F044894 8FB20058 */ lw $s2, 0x58($sp) +/* 0793C8 7F044898 8FB3005C */ lw $s3, 0x5c($sp) +/* 0793CC 7F04489C 8FB40060 */ lw $s4, 0x60($sp) +/* 0793D0 7F0448A0 03E00008 */ jr $ra +/* 0793D4 7F0448A4 27BD0068 */ addiu $sp, $sp, 0x68 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0448A8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0448A8 +/* 0793D8 7F0448A8 27BDFF60 */ addiu $sp, $sp, -0xa0 +/* 0793DC 7F0448AC AFBF0034 */ sw $ra, 0x34($sp) +/* 0793E0 7F0448B0 AFB50030 */ sw $s5, 0x30($sp) +/* 0793E4 7F0448B4 27AE008C */ addiu $t6, $sp, 0x8c +/* 0793E8 7F0448B8 0080A825 */ move $s5, $a0 +/* 0793EC 7F0448BC AFB4002C */ sw $s4, 0x2c($sp) +/* 0793F0 7F0448C0 AFB30028 */ sw $s3, 0x28($sp) +/* 0793F4 7F0448C4 AFB20024 */ sw $s2, 0x24($sp) +/* 0793F8 7F0448C8 AFB10020 */ sw $s1, 0x20($sp) +/* 0793FC 7F0448CC AFB0001C */ sw $s0, 0x1c($sp) +/* 079400 7F0448D0 AFAE0010 */ sw $t6, 0x10($sp) +/* 079404 7F0448D4 27A50098 */ addiu $a1, $sp, 0x98 +/* 079408 7F0448D8 27A60094 */ addiu $a2, $sp, 0x94 +/* 07940C 7F0448DC 0FC0F308 */ jal sub_GAME_7F03CC20 +/* 079410 7F0448E0 27A70090 */ addiu $a3, $sp, 0x90 +/* 079414 7F0448E4 8FAF0094 */ lw $t7, 0x94($sp) +/* 079418 7F0448E8 27B0006C */ addiu $s0, $sp, 0x6c +/* 07941C 7F0448EC 02A02025 */ move $a0, $s5 +/* 079420 7F0448F0 1DE00003 */ bgtz $t7, .L7F044900 +/* 079424 7F0448F4 00000000 */ nop +/* 079428 7F0448F8 10000086 */ b .L7F044B14 +/* 07942C 7F0448FC 24020001 */ li $v0, 1 +.L7F044900: +/* 079430 7F044900 0FC0F2E3 */ jal sub_GAME_7F03CB8C +/* 079434 7F044904 02002825 */ move $a1, $s0 +/* 079438 7F044908 0FC0F8FF */ jal sub_GAME_7F03E3FC +/* 07943C 7F04490C 02002025 */ move $a0, $s0 +/* 079440 7F044910 3C138007 */ lui $s3, %hi(ptr_list_object_lookup_indices) +/* 079444 7F044914 8E739C30 */ lw $s3, %lo(ptr_list_object_lookup_indices)($s3) +/* 079448 7F044918 24140002 */ li $s4, 2 +/* 07944C 7F04491C 86620000 */ lh $v0, ($s3) +/* 079450 7F044920 0440007B */ bltz $v0, .L7F044B10 +/* 079454 7F044924 0002C080 */ sll $t8, $v0, 2 +.L7F044928: +/* 079458 7F044928 0302C023 */ subu $t8, $t8, $v0 +/* 07945C 7F04492C 0018C080 */ sll $t8, $t8, 2 +/* 079460 7F044930 0302C021 */ addu $t8, $t8, $v0 +/* 079464 7F044934 3C198007 */ lui $t9, %hi(pos_data_entry) +/* 079468 7F044938 27399C38 */ addiu $t9, %lo(pos_data_entry) # addiu $t9, $t9, -0x63c8 +/* 07946C 7F04493C 0018C080 */ sll $t8, $t8, 2 +/* 079470 7F044940 03199021 */ addu $s2, $t8, $t9 +/* 079474 7F044944 5255006F */ beql $s2, $s5, .L7F044B04 +/* 079478 7F044948 86620002 */ lh $v0, 2($s3) +/* 07947C 7F04494C 92420000 */ lbu $v0, ($s2) +/* 079480 7F044950 24010006 */ li $at, 6 +/* 079484 7F044954 10410003 */ beq $v0, $at, .L7F044964 +/* 079488 7F044958 24010003 */ li $at, 3 +/* 07948C 7F04495C 5441003C */ bnel $v0, $at, .L7F044A50 +/* 079490 7F044960 24010001 */ li $at, 1 +.L7F044964: +/* 079494 7F044964 8E420004 */ lw $v0, 4($s2) +/* 079498 7F044968 02402025 */ move $a0, $s2 +/* 07949C 7F04496C 27A5005C */ addiu $a1, $sp, 0x5c +/* 0794A0 7F044970 10400005 */ beqz $v0, .L7F044988 +/* 0794A4 7F044974 27A60064 */ addiu $a2, $sp, 0x64 +/* 0794A8 7F044978 8C480014 */ lw $t0, 0x14($v0) +/* 0794AC 7F04497C 31090400 */ andi $t1, $t0, 0x400 +/* 0794B0 7F044980 55200060 */ bnezl $t1, .L7F044B04 +/* 0794B4 7F044984 86620002 */ lh $v0, 2($s3) +.L7F044988: +/* 0794B8 7F044988 0FC0F3E2 */ jal sub_GAME_7F03CF88 +/* 0794BC 7F04498C 27A70060 */ addiu $a3, $sp, 0x60 +/* 0794C0 7F044990 0FC0F3FA */ jal sub_GAME_7F03CFE8 +/* 0794C4 7F044994 02402025 */ move $a0, $s2 +/* 0794C8 7F044998 C7A20060 */ lwc1 $f2, 0x60($sp) +/* 0794CC 7F04499C C7A80090 */ lwc1 $f8, 0x90($sp) +/* 0794D0 7F0449A0 C7A40064 */ lwc1 $f4, 0x64($sp) +/* 0794D4 7F0449A4 46001080 */ add.s $f2, $f2, $f0 +/* 0794D8 7F0449A8 C7AA008C */ lwc1 $f10, 0x8c($sp) +/* 0794DC 7F0449AC 46002180 */ add.s $f6, $f4, $f0 +/* 0794E0 7F0449B0 E7A20060 */ swc1 $f2, 0x60($sp) +/* 0794E4 7F0449B4 4608103E */ c.le.s $f2, $f8 +/* 0794E8 7F0449B8 E7A60064 */ swc1 $f6, 0x64($sp) +/* 0794EC 7F0449BC 45020051 */ bc1fl .L7F044B04 +/* 0794F0 7F0449C0 86620002 */ lh $v0, 2($s3) +/* 0794F4 7F0449C4 4606503E */ c.le.s $f10, $f6 +/* 0794F8 7F0449C8 26510008 */ addiu $s1, $s2, 8 +/* 0794FC 7F0449CC 24100001 */ li $s0, 1 +/* 079500 7F0449D0 02202025 */ move $a0, $s1 +/* 079504 7F0449D4 4500004A */ bc1f .L7F044B00 +/* 079508 7F0449D8 8FA50098 */ lw $a1, 0x98($sp) +/* 07950C 7F0449DC 0FC0F336 */ jal sub_GAME_7F03CCD8 +/* 079510 7F0449E0 8FA60094 */ lw $a2, 0x94($sp) +/* 079514 7F0449E4 10400002 */ beqz $v0, .L7F0449F0 +/* 079518 7F0449E8 02202025 */ move $a0, $s1 +/* 07951C 7F0449EC 00008025 */ move $s0, $zero +.L7F0449F0: +/* 079520 7F0449F0 12000007 */ beqz $s0, .L7F044A10 +/* 079524 7F0449F4 8FA5005C */ lw $a1, 0x5c($sp) +/* 079528 7F0449F8 8FA60098 */ lw $a2, 0x98($sp) +/* 07952C 7F0449FC 0FC111C6 */ jal sub_GAME_7F044718 +/* 079530 7F044A00 8FA70094 */ lw $a3, 0x94($sp) +/* 079534 7F044A04 10400002 */ beqz $v0, .L7F044A10 +/* 079538 7F044A08 00000000 */ nop +/* 07953C 7F044A0C 00008025 */ move $s0, $zero +.L7F044A10: +/* 079540 7F044A10 5600003C */ bnezl $s0, .L7F044B04 +/* 079544 7F044A14 86620002 */ lh $v0, 2($s3) +/* 079548 7F044A18 924A0000 */ lbu $t2, ($s2) +/* 07954C 7F044A1C 24010003 */ li $at, 3 +/* 079550 7F044A20 15410008 */ bne $t2, $at, .L7F044A44 +/* 079554 7F044A24 00000000 */ nop +/* 079558 7F044A28 92AB0000 */ lbu $t3, ($s5) +/* 07955C 7F044A2C 168B0005 */ bne $s4, $t3, .L7F044A44 +/* 079560 7F044A30 00000000 */ nop +/* 079564 7F044A34 8E420004 */ lw $v0, 4($s2) +/* 079568 7F044A38 944C0012 */ lhu $t4, 0x12($v0) +/* 07956C 7F044A3C 358D0010 */ ori $t5, $t4, 0x10 +/* 079570 7F044A40 A44D0012 */ sh $t5, 0x12($v0) +.L7F044A44: +/* 079574 7F044A44 10000033 */ b .L7F044B14 +/* 079578 7F044A48 00001025 */ move $v0, $zero +/* 07957C 7F044A4C 24010001 */ li $at, 1 +.L7F044A50: +/* 079580 7F044A50 10410005 */ beq $v0, $at, .L7F044A68 +/* 079584 7F044A54 24010004 */ li $at, 4 +/* 079588 7F044A58 50410004 */ beql $v0, $at, .L7F044A6C +/* 07958C 7F044A5C 92AE0000 */ lbu $t6, ($s5) +/* 079590 7F044A60 56820028 */ bnel $s4, $v0, .L7F044B04 +/* 079594 7F044A64 86620002 */ lh $v0, 2($s3) +.L7F044A68: +/* 079598 7F044A68 92AE0000 */ lbu $t6, ($s5) +.L7F044A6C: +/* 07959C 7F044A6C 02402025 */ move $a0, $s2 +/* 0795A0 7F044A70 27A5004C */ addiu $a1, $sp, 0x4c +/* 0795A4 7F044A74 168E0009 */ bne $s4, $t6, .L7F044A9C +/* 0795A8 7F044A78 27A60048 */ addiu $a2, $sp, 0x48 +/* 0795AC 7F044A7C 52820021 */ beql $s4, $v0, .L7F044B04 +/* 0795B0 7F044A80 86620002 */ lh $v0, 2($s3) +/* 0795B4 7F044A84 8E4F0004 */ lw $t7, 4($s2) +/* 0795B8 7F044A88 2401002B */ li $at, 43 +/* 0795BC 7F044A8C 91E20003 */ lbu $v0, 3($t7) +/* 0795C0 7F044A90 1041001B */ beq $v0, $at, .L7F044B00 +/* 0795C4 7F044A94 24010028 */ li $at, 40 +/* 0795C8 7F044A98 10410019 */ beq $v0, $at, .L7F044B00 +.L7F044A9C: +/* 0795CC 7F044A9C 27B80040 */ addiu $t8, $sp, 0x40 +/* 0795D0 7F044AA0 AFB80010 */ sw $t8, 0x10($sp) +/* 0795D4 7F044AA4 0FC0F308 */ jal sub_GAME_7F03CC20 +/* 0795D8 7F044AA8 27A70044 */ addiu $a3, $sp, 0x44 +/* 0795DC 7F044AAC 8FA50048 */ lw $a1, 0x48($sp) +/* 0795E0 7F044AB0 C7B00090 */ lwc1 $f16, 0x90($sp) +/* 0795E4 7F044AB4 C7B20040 */ lwc1 $f18, 0x40($sp) +/* 0795E8 7F044AB8 58A00012 */ blezl $a1, .L7F044B04 +/* 0795EC 7F044ABC 86620002 */ lh $v0, 2($s3) +/* 0795F0 7F044AC0 4610903E */ c.le.s $f18, $f16 +/* 0795F4 7F044AC4 C7A40044 */ lwc1 $f4, 0x44($sp) +/* 0795F8 7F044AC8 C7A8008C */ lwc1 $f8, 0x8c($sp) +/* 0795FC 7F044ACC 4502000D */ bc1fl .L7F044B04 +/* 079600 7F044AD0 86620002 */ lh $v0, 2($s3) +/* 079604 7F044AD4 4604403E */ c.le.s $f8, $f4 +/* 079608 7F044AD8 8FA4004C */ lw $a0, 0x4c($sp) +/* 07960C 7F044ADC 8FA60098 */ lw $a2, 0x98($sp) +/* 079610 7F044AE0 45020008 */ bc1fl .L7F044B04 +/* 079614 7F044AE4 86620002 */ lh $v0, 2($s3) +/* 079618 7F044AE8 0FC111AE */ jal sub_GAME_7F0446B8 +/* 07961C 7F044AEC 8FA70094 */ lw $a3, 0x94($sp) +/* 079620 7F044AF0 50400004 */ beql $v0, $zero, .L7F044B04 +/* 079624 7F044AF4 86620002 */ lh $v0, 2($s3) +/* 079628 7F044AF8 10000006 */ b .L7F044B14 +/* 07962C 7F044AFC 00001025 */ move $v0, $zero +.L7F044B00: +/* 079630 7F044B00 86620002 */ lh $v0, 2($s3) +.L7F044B04: +/* 079634 7F044B04 26730002 */ addiu $s3, $s3, 2 +/* 079638 7F044B08 0443FF87 */ bgezl $v0, .L7F044928 +/* 07963C 7F044B0C 0002C080 */ sll $t8, $v0, 2 +.L7F044B10: +/* 079640 7F044B10 24020001 */ li $v0, 1 +.L7F044B14: +/* 079644 7F044B14 8FBF0034 */ lw $ra, 0x34($sp) +/* 079648 7F044B18 8FB0001C */ lw $s0, 0x1c($sp) +/* 07964C 7F044B1C 8FB10020 */ lw $s1, 0x20($sp) +/* 079650 7F044B20 8FB20024 */ lw $s2, 0x24($sp) +/* 079654 7F044B24 8FB30028 */ lw $s3, 0x28($sp) +/* 079658 7F044B28 8FB4002C */ lw $s4, 0x2c($sp) +/* 07965C 7F044B2C 8FB50030 */ lw $s5, 0x30($sp) +/* 079660 7F044B30 03E00008 */ jr $ra +/* 079664 7F044B34 27BD00A0 */ addiu $sp, $sp, 0xa0 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F044B38(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F044B38 +/* 079668 7F044B38 27BDFEA8 */ addiu $sp, $sp, -0x158 +/* 07966C 7F044B3C AFBF0024 */ sw $ra, 0x24($sp) +/* 079670 7F044B40 AFB10020 */ sw $s1, 0x20($sp) +/* 079674 7F044B44 AFB0001C */ sw $s0, 0x1c($sp) +/* 079678 7F044B48 8C830014 */ lw $v1, 0x14($a0) +/* 07967C 7F044B4C 8C910010 */ lw $s1, 0x10($a0) +/* 079680 7F044B50 24180001 */ li $t8, 1 +/* 079684 7F044B54 8C790008 */ lw $t9, 8($v1) +/* 079688 7F044B58 00808025 */ move $s0, $a0 +/* 07968C 7F044B5C 27A500C8 */ addiu $a1, $sp, 0xc8 +/* 079690 7F044B60 8F220008 */ lw $v0, 8($t9) +/* 079694 7F044B64 8C480004 */ lw $t0, 4($v0) +/* 079698 7F044B68 8D090004 */ lw $t1, 4($t0) +/* 07969C 7F044B6C AFA90148 */ sw $t1, 0x148($sp) +/* 0796A0 7F044B70 8C4A0008 */ lw $t2, 8($v0) +/* 0796A4 7F044B74 8D4B0004 */ lw $t3, 4($t2) +/* 0796A8 7F044B78 AFAB0144 */ sw $t3, 0x144($sp) +/* 0796AC 7F044B7C 8C4C000C */ lw $t4, 0xc($v0) +/* 0796B0 7F044B80 8D8D0004 */ lw $t5, 4($t4) +/* 0796B4 7F044B84 AFAD0140 */ sw $t5, 0x140($sp) +/* 0796B8 7F044B88 8C4E0010 */ lw $t6, 0x10($v0) +/* 0796BC 7F044B8C 8DCF0004 */ lw $t7, 4($t6) +/* 0796C0 7F044B90 AFB80108 */ sw $t8, 0x108($sp) +/* 0796C4 7F044B94 AFAF013C */ sw $t7, 0x13c($sp) +/* 0796C8 7F044B98 8C590018 */ lw $t9, 0x18($v0) +/* 0796CC 7F044B9C 8F280004 */ lw $t0, 4($t9) +/* 0796D0 7F044BA0 AFA800C0 */ sw $t0, 0xc0($sp) +/* 0796D4 7F044BA4 C48C00A0 */ lwc1 $f12, 0xa0($a0) +/* 0796D8 7F044BA8 0FC1617F */ jal sub_GAME_7F0585FC +/* 0796DC 7F044BAC AFA30154 */ sw $v1, 0x154($sp) +/* 0796E0 7F044BB0 8FA90154 */ lw $t1, 0x154($sp) +/* 0796E4 7F044BB4 27A500C8 */ addiu $a1, $sp, 0xc8 +/* 0796E8 7F044BB8 0FC1629F */ jal matrix_multiply_A1_by_F12 +/* 0796EC 7F044BBC C52C0014 */ lwc1 $f12, 0x14($t1) +/* 0796F0 7F044BC0 26040058 */ addiu $a0, $s0, 0x58 +/* 0796F4 7F044BC4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 0796F8 7F044BC8 27A500C8 */ addiu $a1, $sp, 0xc8 +/* 0796FC 7F044BCC 27A400C8 */ addiu $a0, $sp, 0xc8 +/* 079700 7F044BD0 8FA50148 */ lw $a1, 0x148($sp) +/* 079704 7F044BD4 0FC16106 */ jal sub_GAME_7F058418 +/* 079708 7F044BD8 27A60130 */ addiu $a2, $sp, 0x130 +/* 07970C 7F044BDC 27A400C8 */ addiu $a0, $sp, 0xc8 +/* 079710 7F044BE0 8FA50144 */ lw $a1, 0x144($sp) +/* 079714 7F044BE4 0FC16106 */ jal sub_GAME_7F058418 +/* 079718 7F044BE8 27A60124 */ addiu $a2, $sp, 0x124 +/* 07971C 7F044BEC 27A400C8 */ addiu $a0, $sp, 0xc8 +/* 079720 7F044BF0 8FA50140 */ lw $a1, 0x140($sp) +/* 079724 7F044BF4 0FC16106 */ jal sub_GAME_7F058418 +/* 079728 7F044BF8 27A60118 */ addiu $a2, $sp, 0x118 +/* 07972C 7F044BFC 27A400C8 */ addiu $a0, $sp, 0xc8 +/* 079730 7F044C00 8FA5013C */ lw $a1, 0x13c($sp) +/* 079734 7F044C04 0FC16106 */ jal sub_GAME_7F058418 +/* 079738 7F044C08 27A6010C */ addiu $a2, $sp, 0x10c +/* 07973C 7F044C0C 8E2A0014 */ lw $t2, 0x14($s1) +/* 079740 7F044C10 C7A80138 */ lwc1 $f8, 0x138($sp) +/* 079744 7F044C14 27A400C4 */ addiu $a0, $sp, 0xc4 +/* 079748 7F044C18 AFAA00C4 */ sw $t2, 0xc4($sp) +/* 07974C 7F044C1C 8E260010 */ lw $a2, 0x10($s1) +/* 079750 7F044C20 8E250008 */ lw $a1, 8($s1) +/* 079754 7F044C24 8FA70130 */ lw $a3, 0x130($sp) +/* 079758 7F044C28 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 07975C 7F044C2C E7A80010 */ swc1 $f8, 0x10($sp) +/* 079760 7F044C30 10400006 */ beqz $v0, .L7F044C4C +/* 079764 7F044C34 8FA400C4 */ lw $a0, 0xc4($sp) +/* 079768 7F044C38 8FA50130 */ lw $a1, 0x130($sp) +/* 07976C 7F044C3C 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 079770 7F044C40 8FA60138 */ lw $a2, 0x138($sp) +/* 079774 7F044C44 10000002 */ b .L7F044C50 +/* 079778 7F044C48 E7A00134 */ swc1 $f0, 0x134($sp) +.L7F044C4C: +/* 07977C 7F044C4C AFA00108 */ sw $zero, 0x108($sp) +.L7F044C50: +/* 079780 7F044C50 8E2B0014 */ lw $t3, 0x14($s1) +/* 079784 7F044C54 C7A6012C */ lwc1 $f6, 0x12c($sp) +/* 079788 7F044C58 27A400C4 */ addiu $a0, $sp, 0xc4 +/* 07978C 7F044C5C AFAB00C4 */ sw $t3, 0xc4($sp) +/* 079790 7F044C60 8E260010 */ lw $a2, 0x10($s1) +/* 079794 7F044C64 8E250008 */ lw $a1, 8($s1) +/* 079798 7F044C68 8FA70124 */ lw $a3, 0x124($sp) +/* 07979C 7F044C6C 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 0797A0 7F044C70 E7A60010 */ swc1 $f6, 0x10($sp) +/* 0797A4 7F044C74 10400006 */ beqz $v0, .L7F044C90 +/* 0797A8 7F044C78 8FA400C4 */ lw $a0, 0xc4($sp) +/* 0797AC 7F044C7C 8FA50124 */ lw $a1, 0x124($sp) +/* 0797B0 7F044C80 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 0797B4 7F044C84 8FA6012C */ lw $a2, 0x12c($sp) +/* 0797B8 7F044C88 10000002 */ b .L7F044C94 +/* 0797BC 7F044C8C E7A00128 */ swc1 $f0, 0x128($sp) +.L7F044C90: +/* 0797C0 7F044C90 AFA00108 */ sw $zero, 0x108($sp) +.L7F044C94: +/* 0797C4 7F044C94 8E2C0014 */ lw $t4, 0x14($s1) +/* 0797C8 7F044C98 C7A40120 */ lwc1 $f4, 0x120($sp) +/* 0797CC 7F044C9C 27A400C4 */ addiu $a0, $sp, 0xc4 +/* 0797D0 7F044CA0 AFAC00C4 */ sw $t4, 0xc4($sp) +/* 0797D4 7F044CA4 8E260010 */ lw $a2, 0x10($s1) +/* 0797D8 7F044CA8 8E250008 */ lw $a1, 8($s1) +/* 0797DC 7F044CAC 8FA70118 */ lw $a3, 0x118($sp) +/* 0797E0 7F044CB0 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 0797E4 7F044CB4 E7A40010 */ swc1 $f4, 0x10($sp) +/* 0797E8 7F044CB8 10400006 */ beqz $v0, .L7F044CD4 +/* 0797EC 7F044CBC 8FA400C4 */ lw $a0, 0xc4($sp) +/* 0797F0 7F044CC0 8FA50118 */ lw $a1, 0x118($sp) +/* 0797F4 7F044CC4 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 0797F8 7F044CC8 8FA60120 */ lw $a2, 0x120($sp) +/* 0797FC 7F044CCC 10000002 */ b .L7F044CD8 +/* 079800 7F044CD0 E7A0011C */ swc1 $f0, 0x11c($sp) +.L7F044CD4: +/* 079804 7F044CD4 AFA00108 */ sw $zero, 0x108($sp) +.L7F044CD8: +/* 079808 7F044CD8 8E2D0014 */ lw $t5, 0x14($s1) +/* 07980C 7F044CDC C7AA0114 */ lwc1 $f10, 0x114($sp) +/* 079810 7F044CE0 27A400C4 */ addiu $a0, $sp, 0xc4 +/* 079814 7F044CE4 AFAD00C4 */ sw $t5, 0xc4($sp) +/* 079818 7F044CE8 8E260010 */ lw $a2, 0x10($s1) +/* 07981C 7F044CEC 8E250008 */ lw $a1, 8($s1) +/* 079820 7F044CF0 8FA7010C */ lw $a3, 0x10c($sp) +/* 079824 7F044CF4 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 079828 7F044CF8 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07982C 7F044CFC 10400006 */ beqz $v0, .L7F044D18 +/* 079830 7F044D00 8FA400C4 */ lw $a0, 0xc4($sp) +/* 079834 7F044D04 8FA5010C */ lw $a1, 0x10c($sp) +/* 079838 7F044D08 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 07983C 7F044D0C 8FA60114 */ lw $a2, 0x114($sp) +/* 079840 7F044D10 10000002 */ b .L7F044D1C +/* 079844 7F044D14 E7A00110 */ swc1 $f0, 0x110($sp) +.L7F044D18: +/* 079848 7F044D18 AFA00108 */ sw $zero, 0x108($sp) +.L7F044D1C: +/* 07984C 7F044D1C 8FAE0108 */ lw $t6, 0x108($sp) +/* 079850 7F044D20 26040018 */ addiu $a0, $s0, 0x18 +/* 079854 7F044D24 27A600BC */ addiu $a2, $sp, 0xbc +/* 079858 7F044D28 11C0010E */ beqz $t6, .L7F045164 +/* 07985C 7F044D2C 00802825 */ move $a1, $a0 +/* 079860 7F044D30 C7B20124 */ lwc1 $f18, 0x124($sp) +/* 079864 7F044D34 C7B00130 */ lwc1 $f16, 0x130($sp) +/* 079868 7F044D38 C7AE0128 */ lwc1 $f14, 0x128($sp) +/* 07986C 7F044D3C C7AC0134 */ lwc1 $f12, 0x134($sp) +/* 079870 7F044D40 46109401 */ sub.s $f16, $f18, $f16 +/* 079874 7F044D44 C7B2012C */ lwc1 $f18, 0x12c($sp) +/* 079878 7F044D48 C7AA0138 */ lwc1 $f10, 0x138($sp) +/* 07987C 7F044D4C 460C7301 */ sub.s $f12, $f14, $f12 +/* 079880 7F044D50 E7B000B4 */ swc1 $f16, 0xb4($sp) +/* 079884 7F044D54 27A400B4 */ addiu $a0, $sp, 0xb4 +/* 079888 7F044D58 460A9281 */ sub.s $f10, $f18, $f10 +/* 07988C 7F044D5C E7AC00B8 */ swc1 $f12, 0xb8($sp) +/* 079890 7F044D60 27A500B8 */ addiu $a1, $sp, 0xb8 +/* 079894 7F044D64 0C007DD4 */ jal guNormalize +/* 079898 7F044D68 E7AA00BC */ swc1 $f10, 0xbc($sp) +/* 07989C 7F044D6C C7B2010C */ lwc1 $f18, 0x10c($sp) +/* 0798A0 7F044D70 C7B00124 */ lwc1 $f16, 0x124($sp) +/* 0798A4 7F044D74 C7AE0110 */ lwc1 $f14, 0x110($sp) +/* 0798A8 7F044D78 C7AC0128 */ lwc1 $f12, 0x128($sp) +/* 0798AC 7F044D7C 46109401 */ sub.s $f16, $f18, $f16 +/* 0798B0 7F044D80 C7B20114 */ lwc1 $f18, 0x114($sp) +/* 0798B4 7F044D84 C7AA012C */ lwc1 $f10, 0x12c($sp) +/* 0798B8 7F044D88 460C7301 */ sub.s $f12, $f14, $f12 +/* 0798BC 7F044D8C E7B000A8 */ swc1 $f16, 0xa8($sp) +/* 0798C0 7F044D90 27A400A8 */ addiu $a0, $sp, 0xa8 +/* 0798C4 7F044D94 460A9281 */ sub.s $f10, $f18, $f10 +/* 0798C8 7F044D98 E7AC00AC */ swc1 $f12, 0xac($sp) +/* 0798CC 7F044D9C 27A500AC */ addiu $a1, $sp, 0xac +/* 0798D0 7F044DA0 27A600B0 */ addiu $a2, $sp, 0xb0 +/* 0798D4 7F044DA4 0C007DD4 */ jal guNormalize +/* 0798D8 7F044DA8 E7AA00B0 */ swc1 $f10, 0xb0($sp) +/* 0798DC 7F044DAC C7B20118 */ lwc1 $f18, 0x118($sp) +/* 0798E0 7F044DB0 C7B0010C */ lwc1 $f16, 0x10c($sp) +/* 0798E4 7F044DB4 C7AE011C */ lwc1 $f14, 0x11c($sp) +/* 0798E8 7F044DB8 C7AC0110 */ lwc1 $f12, 0x110($sp) +/* 0798EC 7F044DBC 46109401 */ sub.s $f16, $f18, $f16 +/* 0798F0 7F044DC0 C7B20120 */ lwc1 $f18, 0x120($sp) +/* 0798F4 7F044DC4 C7AA0114 */ lwc1 $f10, 0x114($sp) +/* 0798F8 7F044DC8 460C7301 */ sub.s $f12, $f14, $f12 +/* 0798FC 7F044DCC E7B0009C */ swc1 $f16, 0x9c($sp) +/* 079900 7F044DD0 27A4009C */ addiu $a0, $sp, 0x9c +/* 079904 7F044DD4 460A9281 */ sub.s $f10, $f18, $f10 +/* 079908 7F044DD8 E7AC00A0 */ swc1 $f12, 0xa0($sp) +/* 07990C 7F044DDC 27A500A0 */ addiu $a1, $sp, 0xa0 +/* 079910 7F044DE0 27A600A4 */ addiu $a2, $sp, 0xa4 +/* 079914 7F044DE4 0C007DD4 */ jal guNormalize +/* 079918 7F044DE8 E7AA00A4 */ swc1 $f10, 0xa4($sp) +/* 07991C 7F044DEC C7B20130 */ lwc1 $f18, 0x130($sp) +/* 079920 7F044DF0 C7B00118 */ lwc1 $f16, 0x118($sp) +/* 079924 7F044DF4 C7AE0134 */ lwc1 $f14, 0x134($sp) +/* 079928 7F044DF8 C7AC011C */ lwc1 $f12, 0x11c($sp) +/* 07992C 7F044DFC 46109401 */ sub.s $f16, $f18, $f16 +/* 079930 7F044E00 C7B20138 */ lwc1 $f18, 0x138($sp) +/* 079934 7F044E04 C7AA0120 */ lwc1 $f10, 0x120($sp) +/* 079938 7F044E08 460C7301 */ sub.s $f12, $f14, $f12 +/* 07993C 7F044E0C E7B00090 */ swc1 $f16, 0x90($sp) +/* 079940 7F044E10 27A40090 */ addiu $a0, $sp, 0x90 +/* 079944 7F044E14 460A9281 */ sub.s $f10, $f18, $f10 +/* 079948 7F044E18 E7AC0094 */ swc1 $f12, 0x94($sp) +/* 07994C 7F044E1C 27A50094 */ addiu $a1, $sp, 0x94 +/* 079950 7F044E20 27A60098 */ addiu $a2, $sp, 0x98 +/* 079954 7F044E24 0C007DD4 */ jal guNormalize +/* 079958 7F044E28 E7AA0098 */ swc1 $f10, 0x98($sp) +/* 07995C 7F044E2C C7A800BC */ lwc1 $f8, 0xbc($sp) +/* 079960 7F044E30 C7A600A8 */ lwc1 $f6, 0xa8($sp) +/* 079964 7F044E34 C7AA00B0 */ lwc1 $f10, 0xb0($sp) +/* 079968 7F044E38 E7A80028 */ swc1 $f8, 0x28($sp) +/* 07996C 7F044E3C 46064102 */ mul.s $f4, $f8, $f6 +/* 079970 7F044E40 C7A800B4 */ lwc1 $f8, 0xb4($sp) +/* 079974 7F044E44 E7A6002C */ swc1 $f6, 0x2c($sp) +/* 079978 7F044E48 E7AA0034 */ swc1 $f10, 0x34($sp) +/* 07997C 7F044E4C 46085182 */ mul.s $f6, $f10, $f8 +/* 079980 7F044E50 E7A80030 */ swc1 $f8, 0x30($sp) +/* 079984 7F044E54 C7A800A4 */ lwc1 $f8, 0xa4($sp) +/* 079988 7F044E58 46062001 */ sub.s $f0, $f4, $f6 +/* 07998C 7F044E5C C7A4009C */ lwc1 $f4, 0x9c($sp) +/* 079990 7F044E60 46045182 */ mul.s $f6, $f10, $f4 +/* 079994 7F044E64 C7AA002C */ lwc1 $f10, 0x2c($sp) +/* 079998 7F044E68 E7A4002C */ swc1 $f4, 0x2c($sp) +/* 07999C 7F044E6C 460A4102 */ mul.s $f4, $f8, $f10 +/* 0799A0 7F044E70 46043381 */ sub.s $f14, $f6, $f4 +/* 0799A4 7F044E74 C7A60090 */ lwc1 $f6, 0x90($sp) +/* 0799A8 7F044E78 4600703E */ c.le.s $f14, $f0 +/* 0799AC 7F044E7C 00000000 */ nop +/* 0799B0 7F044E80 45020023 */ bc1fl .L7F044F10 +/* 0799B4 7F044E84 C7A600A4 */ lwc1 $f6, 0xa4($sp) +/* 0799B8 7F044E88 46064102 */ mul.s $f4, $f8, $f6 +/* 0799BC 7F044E8C E7AA0038 */ swc1 $f10, 0x38($sp) +/* 0799C0 7F044E90 C7AA002C */ lwc1 $f10, 0x2c($sp) +/* 0799C4 7F044E94 C7A80098 */ lwc1 $f8, 0x98($sp) +/* 0799C8 7F044E98 460A4282 */ mul.s $f10, $f8, $f10 +/* 0799CC 7F044E9C 460A2101 */ sub.s $f4, $f4, $f10 +/* 0799D0 7F044EA0 C7AA0030 */ lwc1 $f10, 0x30($sp) +/* 0799D4 7F044EA4 4600203E */ c.le.s $f4, $f0 +/* 0799D8 7F044EA8 00000000 */ nop +/* 0799DC 7F044EAC 45020018 */ bc1fl .L7F044F10 +/* 0799E0 7F044EB0 C7A600A4 */ lwc1 $f6, 0xa4($sp) +/* 0799E4 7F044EB4 460A4102 */ mul.s $f4, $f8, $f10 +/* 0799E8 7F044EB8 C7A80028 */ lwc1 $f8, 0x28($sp) +/* 0799EC 7F044EBC C7AC00B8 */ lwc1 $f12, 0xb8($sp) +/* 0799F0 7F044EC0 46064182 */ mul.s $f6, $f8, $f6 +/* 0799F4 7F044EC4 46062101 */ sub.s $f4, $f4, $f6 +/* 0799F8 7F044EC8 C7A60034 */ lwc1 $f6, 0x34($sp) +/* 0799FC 7F044ECC 4600203E */ c.le.s $f4, $f0 +/* 079A00 7F044ED0 00000000 */ nop +/* 079A04 7F044ED4 4502000E */ bc1fl .L7F044F10 +/* 079A08 7F044ED8 C7A600A4 */ lwc1 $f6, 0xa4($sp) +/* 079A0C 7F044EDC 46066102 */ mul.s $f4, $f12, $f6 +/* 079A10 7F044EE0 C7A200AC */ lwc1 $f2, 0xac($sp) +/* 079A14 7F044EE4 E7A00078 */ swc1 $f0, 0x78($sp) +/* 079A18 7F044EE8 46081182 */ mul.s $f6, $f2, $f8 +/* 079A1C 7F044EEC 46062201 */ sub.s $f8, $f4, $f6 +/* 079A20 7F044EF0 46025102 */ mul.s $f4, $f10, $f2 +/* 079A24 7F044EF4 C7A60038 */ lwc1 $f6, 0x38($sp) +/* 079A28 7F044EF8 E7A80074 */ swc1 $f8, 0x74($sp) +/* 079A2C 7F044EFC 460C3202 */ mul.s $f8, $f6, $f12 +/* 079A30 7F044F00 46082281 */ sub.s $f10, $f4, $f8 +/* 079A34 7F044F04 10000045 */ b .L7F04501C +/* 079A38 7F044F08 E7AA007C */ swc1 $f10, 0x7c($sp) +/* 079A3C 7F044F0C C7A600A4 */ lwc1 $f6, 0xa4($sp) +.L7F044F10: +/* 079A40 7F044F10 C7A40090 */ lwc1 $f4, 0x90($sp) +/* 079A44 7F044F14 C7AA0098 */ lwc1 $f10, 0x98($sp) +/* 079A48 7F044F18 E7A60038 */ swc1 $f6, 0x38($sp) +/* 079A4C 7F044F1C 46043202 */ mul.s $f8, $f6, $f4 +/* 079A50 7F044F20 C7A6009C */ lwc1 $f6, 0x9c($sp) +/* 079A54 7F044F24 E7A40034 */ swc1 $f4, 0x34($sp) +/* 079A58 7F044F28 46065102 */ mul.s $f4, $f10, $f6 +/* 079A5C 7F044F2C 46044001 */ sub.s $f0, $f8, $f4 +/* 079A60 7F044F30 C7A800B4 */ lwc1 $f8, 0xb4($sp) +/* 079A64 7F044F34 46085102 */ mul.s $f4, $f10, $f8 +/* 079A68 7F044F38 C7A80034 */ lwc1 $f8, 0x34($sp) +/* 079A6C 7F044F3C C7AA00BC */ lwc1 $f10, 0xbc($sp) +/* 079A70 7F044F40 460E003E */ c.le.s $f0, $f14 +/* 079A74 7F044F44 46085282 */ mul.s $f10, $f10, $f8 +/* 079A78 7F044F48 45000013 */ bc1f .L7F044F98 +/* 079A7C 7F044F4C 460A2081 */ sub.s $f2, $f4, $f10 +/* 079A80 7F044F50 460E103E */ c.le.s $f2, $f14 +/* 079A84 7F044F54 C7A80038 */ lwc1 $f8, 0x38($sp) +/* 079A88 7F044F58 45020010 */ bc1fl .L7F044F9C +/* 079A8C 7F044F5C 4600103E */ c.le.s $f2, $f0 +/* 079A90 7F044F60 C7A200AC */ lwc1 $f2, 0xac($sp) +/* 079A94 7F044F64 C7AC00A0 */ lwc1 $f12, 0xa0($sp) +/* 079A98 7F044F68 C7AA00B0 */ lwc1 $f10, 0xb0($sp) +/* 079A9C 7F044F6C 46081102 */ mul.s $f4, $f2, $f8 +/* 079AA0 7F044F70 E7AE0078 */ swc1 $f14, 0x78($sp) +/* 079AA4 7F044F74 460A6202 */ mul.s $f8, $f12, $f10 +/* 079AA8 7F044F78 46082281 */ sub.s $f10, $f4, $f8 +/* 079AAC 7F044F7C C7A400A8 */ lwc1 $f4, 0xa8($sp) +/* 079AB0 7F044F80 460C2202 */ mul.s $f8, $f4, $f12 +/* 079AB4 7F044F84 E7AA0074 */ swc1 $f10, 0x74($sp) +/* 079AB8 7F044F88 46023282 */ mul.s $f10, $f6, $f2 +/* 079ABC 7F044F8C 460A4101 */ sub.s $f4, $f8, $f10 +/* 079AC0 7F044F90 10000022 */ b .L7F04501C +/* 079AC4 7F044F94 E7A4007C */ swc1 $f4, 0x7c($sp) +.L7F044F98: +/* 079AC8 7F044F98 4600103E */ c.le.s $f2, $f0 +.L7F044F9C: +/* 079ACC 7F044F9C C7AC00A0 */ lwc1 $f12, 0xa0($sp) +/* 079AD0 7F044FA0 C7AE0094 */ lwc1 $f14, 0x94($sp) +/* 079AD4 7F044FA4 C7A400BC */ lwc1 $f4, 0xbc($sp) +/* 079AD8 7F044FA8 45000010 */ bc1f .L7F044FEC +/* 079ADC 7F044FAC C7A60098 */ lwc1 $f6, 0x98($sp) +/* 079AE0 7F044FB0 C7A60098 */ lwc1 $f6, 0x98($sp) +/* 079AE4 7F044FB4 C7AE0094 */ lwc1 $f14, 0x94($sp) +/* 079AE8 7F044FB8 C7AA00A4 */ lwc1 $f10, 0xa4($sp) +/* 079AEC 7F044FBC 46066202 */ mul.s $f8, $f12, $f6 +/* 079AF0 7F044FC0 E7A00078 */ swc1 $f0, 0x78($sp) +/* 079AF4 7F044FC4 460A7102 */ mul.s $f4, $f14, $f10 +/* 079AF8 7F044FC8 C7AA009C */ lwc1 $f10, 0x9c($sp) +/* 079AFC 7F044FCC 46044181 */ sub.s $f6, $f8, $f4 +/* 079B00 7F044FD0 460E5202 */ mul.s $f8, $f10, $f14 +/* 079B04 7F044FD4 C7A40090 */ lwc1 $f4, 0x90($sp) +/* 079B08 7F044FD8 E7A60074 */ swc1 $f6, 0x74($sp) +/* 079B0C 7F044FDC 460C2182 */ mul.s $f6, $f4, $f12 +/* 079B10 7F044FE0 46064281 */ sub.s $f10, $f8, $f6 +/* 079B14 7F044FE4 1000000D */ b .L7F04501C +/* 079B18 7F044FE8 E7AA007C */ swc1 $f10, 0x7c($sp) +.L7F044FEC: +/* 079B1C 7F044FEC 46047202 */ mul.s $f8, $f14, $f4 +/* 079B20 7F044FF0 C7AC00B8 */ lwc1 $f12, 0xb8($sp) +/* 079B24 7F044FF4 E7A20078 */ swc1 $f2, 0x78($sp) +/* 079B28 7F044FF8 46066282 */ mul.s $f10, $f12, $f6 +/* 079B2C 7F044FFC C7A60090 */ lwc1 $f6, 0x90($sp) +/* 079B30 7F045000 460A4101 */ sub.s $f4, $f8, $f10 +/* 079B34 7F045004 460C3202 */ mul.s $f8, $f6, $f12 +/* 079B38 7F045008 C7AA00B4 */ lwc1 $f10, 0xb4($sp) +/* 079B3C 7F04500C E7A40074 */ swc1 $f4, 0x74($sp) +/* 079B40 7F045010 460E5102 */ mul.s $f4, $f10, $f14 +/* 079B44 7F045014 46044181 */ sub.s $f6, $f8, $f4 +/* 079B48 7F045018 E7A6007C */ swc1 $f6, 0x7c($sp) +.L7F04501C: +/* 079B4C 7F04501C 0FC15FAB */ jal sinf +/* 079B50 7F045020 C60C00A0 */ lwc1 $f12, 0xa0($s0) +/* 079B54 7F045024 44805000 */ mtc1 $zero, $f10 +/* 079B58 7F045028 E7A00068 */ swc1 $f0, 0x68($sp) +/* 079B5C 7F04502C E7AA006C */ swc1 $f10, 0x6c($sp) +/* 079B60 7F045030 0FC15FA8 */ jal cosf +/* 079B64 7F045034 C60C00A0 */ lwc1 $f12, 0xa0($s0) +/* 079B68 7F045038 26040018 */ addiu $a0, $s0, 0x18 +/* 079B6C 7F04503C E7A00070 */ swc1 $f0, 0x70($sp) +/* 079B70 7F045040 0FC15FF4 */ jal reset_array_of_0x10_floats +/* 079B74 7F045044 AFA40058 */ sw $a0, 0x58($sp) +/* 079B78 7F045048 C7A80074 */ lwc1 $f8, 0x74($sp) +/* 079B7C 7F04504C 8FA50058 */ lw $a1, 0x58($sp) +/* 079B80 7F045050 E6080028 */ swc1 $f8, 0x28($s0) +/* 079B84 7F045054 C7A40078 */ lwc1 $f4, 0x78($sp) +/* 079B88 7F045058 C6100028 */ lwc1 $f16, 0x28($s0) +/* 079B8C 7F04505C E604002C */ swc1 $f4, 0x2c($s0) +/* 079B90 7F045060 C7A6007C */ lwc1 $f6, 0x7c($sp) +/* 079B94 7F045064 C60E002C */ lwc1 $f14, 0x2c($s0) +/* 079B98 7F045068 E6060030 */ swc1 $f6, 0x30($s0) +/* 079B9C 7F04506C C7AA0070 */ lwc1 $f10, 0x70($sp) +/* 079BA0 7F045070 C7A4006C */ lwc1 $f4, 0x6c($sp) +/* 079BA4 7F045074 C6000030 */ lwc1 $f0, 0x30($s0) +/* 079BA8 7F045078 460A7202 */ mul.s $f8, $f14, $f10 +/* 079BAC 7F04507C 00000000 */ nop +/* 079BB0 7F045080 46002182 */ mul.s $f6, $f4, $f0 +/* 079BB4 7F045084 46064281 */ sub.s $f10, $f8, $f6 +/* 079BB8 7F045088 E60A0018 */ swc1 $f10, 0x18($s0) +/* 079BBC 7F04508C C7A40068 */ lwc1 $f4, 0x68($sp) +/* 079BC0 7F045090 C7A60070 */ lwc1 $f6, 0x70($sp) +/* 079BC4 7F045094 46040202 */ mul.s $f8, $f0, $f4 +/* 079BC8 7F045098 00000000 */ nop +/* 079BCC 7F04509C 46103282 */ mul.s $f10, $f6, $f16 +/* 079BD0 7F0450A0 460A4101 */ sub.s $f4, $f8, $f10 +/* 079BD4 7F0450A4 E604001C */ swc1 $f4, 0x1c($s0) +/* 079BD8 7F0450A8 C7A6006C */ lwc1 $f6, 0x6c($sp) +/* 079BDC 7F0450AC C7AA0068 */ lwc1 $f10, 0x68($sp) +/* 079BE0 7F0450B0 46068202 */ mul.s $f8, $f16, $f6 +/* 079BE4 7F0450B4 00000000 */ nop +/* 079BE8 7F0450B8 460E5102 */ mul.s $f4, $f10, $f14 +/* 079BEC 7F0450BC C60A001C */ lwc1 $f10, 0x1c($s0) +/* 079BF0 7F0450C0 46044181 */ sub.s $f6, $f8, $f4 +/* 079BF4 7F0450C4 E6060020 */ swc1 $f6, 0x20($s0) +/* 079BF8 7F0450C8 E7AA0048 */ swc1 $f10, 0x48($sp) +/* 079BFC 7F0450CC C7A80048 */ lwc1 $f8, 0x48($sp) +/* 079C00 7F0450D0 C6020020 */ lwc1 $f2, 0x20($s0) +/* 079C04 7F0450D4 C6120018 */ lwc1 $f18, 0x18($s0) +/* 079C08 7F0450D8 46004102 */ mul.s $f4, $f8, $f0 +/* 079C0C 7F0450DC 00000000 */ nop +/* 079C10 7F0450E0 46027182 */ mul.s $f6, $f14, $f2 +/* 079C14 7F0450E4 46062281 */ sub.s $f10, $f4, $f6 +/* 079C18 7F0450E8 46101202 */ mul.s $f8, $f2, $f16 +/* 079C1C 7F0450EC 00000000 */ nop +/* 079C20 7F0450F0 46120102 */ mul.s $f4, $f0, $f18 +/* 079C24 7F0450F4 E60A0038 */ swc1 $f10, 0x38($s0) +/* 079C28 7F0450F8 460E9282 */ mul.s $f10, $f18, $f14 +/* 079C2C 7F0450FC 46044181 */ sub.s $f6, $f8, $f4 +/* 079C30 7F045100 E606003C */ swc1 $f6, 0x3c($s0) +/* 079C34 7F045104 C7A80048 */ lwc1 $f8, 0x48($sp) +/* 079C38 7F045108 46088102 */ mul.s $f4, $f16, $f8 +/* 079C3C 7F04510C 46045181 */ sub.s $f6, $f10, $f4 +/* 079C40 7F045110 E6060040 */ swc1 $f6, 0x40($s0) +/* 079C44 7F045114 8FAF0154 */ lw $t7, 0x154($sp) +/* 079C48 7F045118 C5EC0014 */ lwc1 $f12, 0x14($t7) +/* 079C4C 7F04511C 0FC1629F */ jal matrix_multiply_A1_by_F12 +/* 079C50 7F045120 AFA50058 */ sw $a1, 0x58($sp) +/* 079C54 7F045124 8FA40058 */ lw $a0, 0x58($sp) +/* 079C58 7F045128 8FA50148 */ lw $a1, 0x148($sp) +/* 079C5C 7F04512C 0FC16106 */ jal sub_GAME_7F058418 +/* 079C60 7F045130 27A60124 */ addiu $a2, $sp, 0x124 +/* 079C64 7F045134 0FC0FA19 */ jal sub_GAME_7F03E864 +/* 079C68 7F045138 8FA400C0 */ lw $a0, 0xc0($sp) +/* 079C6C 7F04513C 8FB80154 */ lw $t8, 0x154($sp) +/* 079C70 7F045140 C7A80134 */ lwc1 $f8, 0x134($sp) +/* 079C74 7F045144 C70A0014 */ lwc1 $f10, 0x14($t8) +/* 079C78 7F045148 460A0102 */ mul.s $f4, $f0, $f10 +/* 079C7C 7F04514C C7AA0128 */ lwc1 $f10, 0x128($sp) +/* 079C80 7F045150 46044181 */ sub.s $f6, $f8, $f4 +/* 079C84 7F045154 460A3081 */ sub.s $f2, $f6, $f10 +/* 079C88 7F045158 E622000C */ swc1 $f2, 0xc($s1) +/* 079C8C 7F04515C 10000019 */ b .L7F0451C4 +/* 079C90 7F045160 E602005C */ swc1 $f2, 0x5c($s0) +.L7F045164: +/* 079C94 7F045164 C60C00A0 */ lwc1 $f12, 0xa0($s0) +/* 079C98 7F045168 0FC1617F */ jal sub_GAME_7F0585FC +/* 079C9C 7F04516C AFA40058 */ sw $a0, 0x58($sp) +/* 079CA0 7F045170 8FB90154 */ lw $t9, 0x154($sp) +/* 079CA4 7F045174 8FA50058 */ lw $a1, 0x58($sp) +/* 079CA8 7F045178 0FC1629F */ jal matrix_multiply_A1_by_F12 +/* 079CAC 7F04517C C72C0014 */ lwc1 $f12, 0x14($t9) +/* 079CB0 7F045180 8E240014 */ lw $a0, 0x14($s1) +/* 079CB4 7F045184 8E250008 */ lw $a1, 8($s1) +/* 079CB8 7F045188 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 079CBC 7F04518C 8E260010 */ lw $a2, 0x10($s1) +/* 079CC0 7F045190 E7A0005C */ swc1 $f0, 0x5c($sp) +/* 079CC4 7F045194 0FC0FA19 */ jal sub_GAME_7F03E864 +/* 079CC8 7F045198 8FA400C0 */ lw $a0, 0xc0($sp) +/* 079CCC 7F04519C 8FA80148 */ lw $t0, 0x148($sp) +/* 079CD0 7F0451A0 8FA90154 */ lw $t1, 0x154($sp) +/* 079CD4 7F0451A4 C5080004 */ lwc1 $f8, 4($t0) +/* 079CD8 7F0451A8 C5260014 */ lwc1 $f6, 0x14($t1) +/* 079CDC 7F0451AC 46004100 */ add.s $f4, $f8, $f0 +/* 079CE0 7F0451B0 C7A8005C */ lwc1 $f8, 0x5c($sp) +/* 079CE4 7F0451B4 46062282 */ mul.s $f10, $f4, $f6 +/* 079CE8 7F0451B8 460A4081 */ sub.s $f2, $f8, $f10 +/* 079CEC 7F0451BC E622000C */ swc1 $f2, 0xc($s1) +/* 079CF0 7F0451C0 E602005C */ swc1 $f2, 0x5c($s0) +.L7F0451C4: +/* 079CF4 7F0451C4 8FBF0024 */ lw $ra, 0x24($sp) +/* 079CF8 7F0451C8 8FA20108 */ lw $v0, 0x108($sp) +/* 079CFC 7F0451CC 8FB0001C */ lw $s0, 0x1c($sp) +/* 079D00 7F0451D0 8FB10020 */ lw $s1, 0x20($sp) +/* 079D04 7F0451D4 03E00008 */ jr $ra +/* 079D08 7F0451D8 27BD0158 */ addiu $sp, $sp, 0x158 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0451DC(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0451DC +/* 079D0C 7F0451DC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 079D10 7F0451E0 AFBF0014 */ sw $ra, 0x14($sp) +/* 079D14 7F0451E4 AFA5001C */ sw $a1, 0x1c($sp) +/* 079D18 7F0451E8 AFA60020 */ sw $a2, 0x20($sp) +/* 079D1C 7F0451EC AFA70024 */ sw $a3, 0x24($sp) +/* 079D20 7F0451F0 0FC225E6 */ jal get_curplayer_positiondata +/* 079D24 7F0451F4 AFA40018 */ sw $a0, 0x18($sp) +/* 079D28 7F0451F8 8FA40018 */ lw $a0, 0x18($sp) +/* 079D2C 7F0451FC C4460008 */ lwc1 $f6, 8($v0) +/* 079D30 7F045200 C44A000C */ lwc1 $f10, 0xc($v0) +/* 079D34 7F045204 C4840000 */ lwc1 $f4, ($a0) +/* 079D38 7F045208 C4880004 */ lwc1 $f8, 4($a0) +/* 079D3C 7F04520C C4520010 */ lwc1 $f18, 0x10($v0) +/* 079D40 7F045210 46062001 */ sub.s $f0, $f4, $f6 +/* 079D44 7F045214 C4900008 */ lwc1 $f16, 8($a0) +/* 079D48 7F045218 460A4081 */ sub.s $f2, $f8, $f10 +/* 079D4C 7F04521C 46000102 */ mul.s $f4, $f0, $f0 +/* 079D50 7F045220 46128381 */ sub.s $f14, $f16, $f18 +/* 079D54 7F045224 46021182 */ mul.s $f6, $f2, $f2 +/* 079D58 7F045228 46062200 */ add.s $f8, $f4, $f6 +/* 079D5C 7F04522C 460E7282 */ mul.s $f10, $f14, $f14 +/* 079D60 7F045230 0C007DF8 */ jal sqrtf +/* 079D64 7F045234 460A4300 */ add.s $f12, $f8, $f10 +/* 079D68 7F045238 C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 079D6C 7F04523C C7A2001C */ lwc1 $f2, 0x1c($sp) +/* 079D70 7F045240 8FBF0014 */ lw $ra, 0x14($sp) +/* 079D74 7F045244 4600603C */ c.lt.s $f12, $f0 +/* 079D78 7F045248 00000000 */ nop +/* 079D7C 7F04524C 45020004 */ bc1fl .L7F045260 +/* 079D80 7F045250 4602003C */ c.lt.s $f0, $f2 +/* 079D84 7F045254 1000001C */ b .L7F0452C8 +/* 079D88 7F045258 240300FF */ li $v1, 255 +/* 079D8C 7F04525C 4602003C */ c.lt.s $f0, $f2 +.L7F045260: +/* 079D90 7F045260 C7AE0024 */ lwc1 $f14, 0x24($sp) +/* 079D94 7F045264 C7B00024 */ lwc1 $f16, 0x24($sp) +/* 079D98 7F045268 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 079D9C 7F04526C 4502000A */ bc1fl .L7F045298 +/* 079DA0 7F045270 44815000 */ mtc1 $at, $f10 +/* 079DA4 7F045274 3C01437F */ li $at, 0x437F0000 # 255.000000 +/* 079DA8 7F045278 44819000 */ mtc1 $at, $f18 +/* 079DAC 7F04527C 00000000 */ nop +/* 079DB0 7F045280 46128102 */ mul.s $f4, $f16, $f18 +/* 079DB4 7F045284 4600218D */ trunc.w.s $f6, $f4 +/* 079DB8 7F045288 44033000 */ mfc1 $v1, $f6 +/* 079DBC 7F04528C 1000000F */ b .L7F0452CC +/* 079DC0 7F045290 00601025 */ move $v0, $v1 +/* 079DC4 7F045294 44815000 */ mtc1 $at, $f10 +.L7F045298: +/* 079DC8 7F045298 46020201 */ sub.s $f8, $f0, $f2 +/* 079DCC 7F04529C 3C01437F */ li $at, 0x437F0000 # 255.000000 +/* 079DD0 7F0452A0 460E5401 */ sub.s $f16, $f10, $f14 +/* 079DD4 7F0452A4 46026101 */ sub.s $f4, $f12, $f2 +/* 079DD8 7F0452A8 46104482 */ mul.s $f18, $f8, $f16 +/* 079DDC 7F0452AC 44814000 */ mtc1 $at, $f8 +/* 079DE0 7F0452B0 46049183 */ div.s $f6, $f18, $f4 +/* 079DE4 7F0452B4 460E3280 */ add.s $f10, $f6, $f14 +/* 079DE8 7F0452B8 46085402 */ mul.s $f16, $f10, $f8 +/* 079DEC 7F0452BC 4600848D */ trunc.w.s $f18, $f16 +/* 079DF0 7F0452C0 44039000 */ mfc1 $v1, $f18 +/* 079DF4 7F0452C4 00000000 */ nop +.L7F0452C8: +/* 079DF8 7F0452C8 00601025 */ move $v0, $v1 +.L7F0452CC: +/* 079DFC 7F0452CC 03E00008 */ jr $ra +/* 079E00 7F0452D0 27BD0018 */ addiu $sp, $sp, 0x18 +) +#endif + + + + + +#ifdef NONMATCHING +void object_interaction(void) { + +} +#else + +#ifdef VERSION_US +GLOBAL_ASM( +.late_rodata +glabel rocket_initial_gravity_modifier +.word 0x3e8e38e4 /*0.27777779*/ +glabel D_80052A9C +.word 0x3c360b61 /*0.011111111*/ +glabel D_80052AA0 +.word 0x3d8f5c29 /*0.07*/ +glabel prop_projectile_gravity_modifier +.word 0x3e8e38e4 /*0.27777779*/ +glabel D_80052AA8 +.word 0x400e38e4 /*2.2222223*/ +glabel D_80052AAC +.word 0x46d9038c /*27777.773*/ +glabel D_80052AB0 +.word 0x3f8ccccd /*1.1*/ +glabel D_80052AB4 +.word 0x3f666666 /*0.89999998*/ +glabel D_80052AB8 +.word 0x3f666666 /*0.89999998*/ +glabel D_80052ABC +.word 0x3dcccccd /*0.1*/ +glabel D_80052AC0 +.word 0xbdcccccd /*-0.1*/ +glabel D_80052AC4 +.word 0xbdcccccd /*-0.1*/ +glabel D_80052AC8 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052ACC +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AD0 +.word 0x40490fdb /*3.1415927*/ +glabel D_80052AD4 +.word 0x3f490fdb /*0.78539819*/ +glabel D_80052AD8 +.word 0xbf490fdb /*-0.78539819*/ +glabel D_80052ADC +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AE0 +.word 0x3a2b92a6 /*0.00065449846*/ +glabel D_80052AE4 +.word 0x3a2b92a6 /*0.00065449846*/ +glabel D_80052AE8 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AEC +.word 0x37433637 /*0.000011635529*/ +glabel D_80052AF0 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AF4 +.word 0x3a3702d4 /*0.00069813174*/ +glabel D_80052AF8 +.word 0x36c33637 /*0.0000058177643*/ +glabel D_80052AFC +.word 0x39b702d4 /*0.00034906587*/ +glabel D_80052B00 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B04 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B08 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B0C +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B10 +.word 0x3f9c61ab /*1.2217306*/ +glabel D_80052B14 +.word 0xbf9c61ab /*-1.2217306*/ +glabel D_80052B18 +.word 0xc0490fdb /*-3.1415927*/ +glabel D_80052B1C +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B20 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B24 +.word 0x3f4ccccd /*0.80000001*/ +glabel D_80052B28 +.word 0xc0490fdb /*-3.1415927*/ +glabel D_80052B2C +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B30 +.word 0x3a64c389 /*0.00087266468*/ +glabel D_80052B34 +.word 0x3a64c389 /*0.00087266468*/ +glabel D_80052B38 +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B3C +.word 0x3f1930a7 /*0.59839863*/ +glabel D_80052B40 +.word 0x3c236719 /*0.0099733109*/ +glabel D_80052B44 +.word 0x3f7d70a4 /*0.99000001*/ +glabel D_80052B48 +.word 0x38d1b717 /*0.000099999997*/ +glabel D_80052B4C +.word 0x3964c389 /*0.00021816617*/ +glabel D_80052B50 +.word 0x3bd67750 /*0.0065449849*/ +glabel D_80052B54 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B58 +.word 0x3964c389 /*0.00021816617*/ +glabel D_80052B5C +.word 0xb964c389 /*-0.00021816617*/ +glabel D_80052B60 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B64 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B68 +.word 0x3e99999a /*0.30000001*/ +glabel D_80052B6C +.word 0x3fc90fdb /*1.5707964*/ +glabel D_80052B70 +.word 0x3fc90fdb /*1.5707964*/ +glabel D_80052B74 +.word 0x3e23d70a /*0.16*/ +glabel D_80052B78 +.word 0x461c4000 /*10000.0*/ +glabel D_80052B7C +.word 0x453b8000 /*3000.0*/ +glabel D_80052B80 +.word 0x3f19999a /*0.60000002*/ +glabel D_80052B84 +.word 0x3e99999a /*0.30000001*/ +glabel D_80052B88 +.word 0xbdcccccd /*-0.1*/ +glabel D_80052B8C +.word 0x3e4ccccd /*0.2*/ +glabel D_80052B90 +.word 0x453b8000 /*3000.0*/ +glabel D_80052B94 +.word 0x453b8000 /*3000.0*/ +.text +glabel object_interaction +/* 079E04 7F0452D4 27BDF958 */ addiu $sp, $sp, -0x6a8 +/* 079E08 7F0452D8 AFBF0054 */ sw $ra, 0x54($sp) +/* 079E0C 7F0452DC AFB40050 */ sw $s4, 0x50($sp) +/* 079E10 7F0452E0 AFB3004C */ sw $s3, 0x4c($sp) +/* 079E14 7F0452E4 AFB20048 */ sw $s2, 0x48($sp) +/* 079E18 7F0452E8 AFB10044 */ sw $s1, 0x44($sp) +/* 079E1C 7F0452EC AFB00040 */ sw $s0, 0x40($sp) +/* 079E20 7F0452F0 F7B60038 */ sdc1 $f22, 0x38($sp) +/* 079E24 7F0452F4 F7B40030 */ sdc1 $f20, 0x30($sp) +/* 079E28 7F0452F8 8C910004 */ lw $s1, 4($a0) +/* 079E2C 7F0452FC 4480B000 */ mtc1 $zero, $f22 +/* 079E30 7F045300 00809825 */ move $s3, $a0 +/* 079E34 7F045304 8E340014 */ lw $s4, 0x14($s1) +/* 079E38 7F045308 AFA00690 */ sw $zero, 0x690($sp) +/* 079E3C 7F04530C AFA00680 */ sw $zero, 0x680($sp) +/* 079E40 7F045310 0FC26919 */ jal get_num_players +/* 079E44 7F045314 E7B6067C */ swc1 $f22, 0x67c($sp) +/* 079E48 7F045318 240C0001 */ li $t4, 1 +/* 079E4C 7F04531C AFA20674 */ sw $v0, 0x674($sp) +/* 079E50 7F045320 AFAC0670 */ sw $t4, 0x670($sp) +/* 079E54 7F045324 8E230064 */ lw $v1, 0x64($s1) +/* 079E58 7F045328 306E0004 */ andi $t6, $v1, 4 +/* 079E5C 7F04532C 11C00009 */ beqz $t6, .L7F045354 +/* 079E60 7F045330 306F0008 */ andi $t7, $v1, 8 +/* 079E64 7F045334 92260002 */ lbu $a2, 2($s1) +/* 079E68 7F045338 02202025 */ move $a0, $s1 +/* 079E6C 7F04533C 00002825 */ move $a1, $zero +/* 079E70 7F045340 30CD0004 */ andi $t5, $a2, 4 +/* 079E74 7F045344 0FC10366 */ jal sub_GAME_7F040D98 +/* 079E78 7F045348 01A03025 */ move $a2, $t5 +/* 079E7C 7F04534C 100011F8 */ b .L7F049B30 +/* 079E80 7F045350 24020001 */ li $v0, 1 +.L7F045354: +/* 079E84 7F045354 11E00005 */ beqz $t7, .L7F04536C +/* 079E88 7F045358 30680080 */ andi $t0, $v1, 0x80 +/* 079E8C 7F04535C 2401FFF7 */ li $at, -9 +/* 079E90 7F045360 0061C024 */ and $t8, $v1, $at +/* 079E94 7F045364 1000000B */ b .L7F045394 +/* 079E98 7F045368 AE380064 */ sw $t8, 0x64($s1) +.L7F04536C: +/* 079E9C 7F04536C 5100000A */ beql $t0, $zero, .L7F045398 +/* 079EA0 7F045370 24010001 */ li $at, 1 +/* 079EA4 7F045374 92690001 */ lbu $t1, 1($s3) +/* 079EA8 7F045378 24020003 */ li $v0, 3 +/* 079EAC 7F04537C 312BFFFD */ andi $t3, $t1, 0xfffd +/* 079EB0 7F045380 A26B0001 */ sb $t3, 1($s3) +/* 079EB4 7F045384 8E390064 */ lw $t9, 0x64($s1) +/* 079EB8 7F045388 372A0008 */ ori $t2, $t9, 8 +/* 079EBC 7F04538C 100011E8 */ b .L7F049B30 +/* 079EC0 7F045390 AE2A0064 */ sw $t2, 0x64($s1) +.L7F045394: +/* 079EC4 7F045394 24010001 */ li $at, 1 +.L7F045398: +/* 079EC8 7F045398 14410003 */ bne $v0, $at, .L7F0453A8 +/* 079ECC 7F04539C 240C0001 */ li $t4, 1 +/* 079ED0 7F0453A0 10000015 */ b .L7F0453F8 +/* 079ED4 7F0453A4 AFAC0678 */ sw $t4, 0x678($sp) +.L7F0453A8: +/* 079ED8 7F0453A8 0FC26C54 */ jal get_cur_playernum +/* 079EDC 7F0453AC 00000000 */ nop +/* 079EE0 7F0453B0 0FC26D36 */ jal sub_GAME_7F09B4D8 +/* 079EE4 7F0453B4 00402025 */ move $a0, $v0 +/* 079EE8 7F0453B8 2C4E0001 */ sltiu $t6, $v0, 1 +/* 079EEC 7F0453BC AFAE0678 */ sw $t6, 0x678($sp) +/* 079EF0 7F0453C0 8E2D0064 */ lw $t5, 0x64($s1) +/* 079EF4 7F0453C4 31AF0080 */ andi $t7, $t5, 0x80 +/* 079EF8 7F0453C8 51E0000C */ beql $t7, $zero, .L7F0453FC +/* 079EFC 7F0453CC 8FAB0678 */ lw $t3, 0x678($sp) +/* 079F00 7F0453D0 8E22006C */ lw $v0, 0x6c($s1) +/* 079F04 7F0453D4 3C188008 */ lui $t8, %hi(pPlayer) +/* 079F08 7F0453D8 8C430088 */ lw $v1, 0x88($v0) +/* 079F0C 7F0453DC 50600007 */ beql $v1, $zero, .L7F0453FC +/* 079F10 7F0453E0 8FAB0678 */ lw $t3, 0x678($sp) +/* 079F14 7F0453E4 8F18A0B0 */ lw $t8, %lo(pPlayer)($t8) +/* 079F18 7F0453E8 8F0800A8 */ lw $t0, 0xa8($t8) +/* 079F1C 7F0453EC 01034826 */ xor $t1, $t0, $v1 +/* 079F20 7F0453F0 2D290001 */ sltiu $t1, $t1, 1 +/* 079F24 7F0453F4 AFA90678 */ sw $t1, 0x678($sp) +.L7F0453F8: +/* 079F28 7F0453F8 8FAB0678 */ lw $t3, 0x678($sp) +.L7F0453FC: +/* 079F2C 7F0453FC 51600B8C */ beql $t3, $zero, .L7F048230 +/* 079F30 7F045400 92220003 */ lbu $v0, 3($s1) +/* 079F34 7F045404 8E390064 */ lw $t9, 0x64($s1) +/* 079F38 7F045408 332A0080 */ andi $t2, $t9, 0x80 +/* 079F3C 7F04540C 51400483 */ beql $t2, $zero, .L7F04661C +/* 079F40 7F045410 8FAD0690 */ lw $t5, 0x690($sp) +/* 079F44 7F045414 8E30006C */ lw $s0, 0x6c($s1) +/* 079F48 7F045418 3C0E8005 */ lui $t6, %hi(clock_timer) +/* 079F4C 7F04541C 8DCE8374 */ lw $t6, %lo(clock_timer)($t6) +/* 079F50 7F045420 8E0C00E0 */ lw $t4, 0xe0($s0) +/* 079F54 7F045424 018E6821 */ addu $t5, $t4, $t6 +/* 079F58 7F045428 29A10961 */ slti $at, $t5, 0x961 +/* 079F5C 7F04542C 14200004 */ bnez $at, .L7F045440 +/* 079F60 7F045430 AE0D00E0 */ sw $t5, 0xe0($s0) +/* 079F64 7F045434 8E380064 */ lw $t8, 0x64($s1) +/* 079F68 7F045438 37080004 */ ori $t0, $t8, 4 +/* 079F6C 7F04543C AE280064 */ sw $t0, 0x64($s1) +.L7F045440: +/* 079F70 7F045440 8E090000 */ lw $t1, ($s0) +/* 079F74 7F045444 312B0100 */ andi $t3, $t1, 0x100 +/* 079F78 7F045448 5160002F */ beql $t3, $zero, .L7F045508 +/* 079F7C 7F04544C C6260058 */ lwc1 $f6, 0x58($s1) +/* 079F80 7F045450 92390003 */ lbu $t9, 3($s1) +/* 079F84 7F045454 24010008 */ li $at, 8 +/* 079F88 7F045458 24120001 */ li $s2, 1 +/* 079F8C 7F04545C 57210008 */ bnel $t9, $at, .L7F045480 +/* 079F90 7F045460 8E040088 */ lw $a0, 0x88($s0) +/* 079F94 7F045464 AFB10648 */ sw $s1, 0x648($sp) +/* 079F98 7F045468 822A0080 */ lb $t2, 0x80($s1) +/* 079F9C 7F04546C 24010056 */ li $at, 86 +/* 079FA0 7F045470 55410003 */ bnel $t2, $at, .L7F045480 +/* 079FA4 7F045474 8E040088 */ lw $a0, 0x88($s0) +/* 079FA8 7F045478 00009025 */ move $s2, $zero +/* 079FAC 7F04547C 8E040088 */ lw $a0, 0x88($s0) +.L7F045480: +/* 079FB0 7F045480 50800004 */ beql $a0, $zero, .L7F045494 +/* 079FB4 7F045484 02202025 */ move $a0, $s1 +/* 079FB8 7F045488 0FC0F416 */ jal sub_GAME_7F03D058 +/* 079FBC 7F04548C 00002825 */ move $a1, $zero +/* 079FC0 7F045490 02202025 */ move $a0, $s1 +.L7F045494: +/* 079FC4 7F045494 260500D4 */ addiu $a1, $s0, 0xd4 +/* 079FC8 7F045498 27A6064C */ addiu $a2, $sp, 0x64c +/* 079FCC 7F04549C 27A70658 */ addiu $a3, $sp, 0x658 +/* 079FD0 7F0454A0 AFA00010 */ sw $zero, 0x10($sp) +/* 079FD4 7F0454A4 0FC10BAD */ jal sub_GAME_7F042EB4 +/* 079FD8 7F0454A8 AFB20014 */ sw $s2, 0x14($sp) +/* 079FDC 7F0454AC AFA20664 */ sw $v0, 0x664($sp) +/* 079FE0 7F0454B0 8E040088 */ lw $a0, 0x88($s0) +/* 079FE4 7F0454B4 50800004 */ beql $a0, $zero, .L7F0454C8 +/* 079FE8 7F0454B8 8FAC0664 */ lw $t4, 0x664($sp) +/* 079FEC 7F0454BC 0FC0F416 */ jal sub_GAME_7F03D058 +/* 079FF0 7F0454C0 24050001 */ li $a1, 1 +/* 079FF4 7F0454C4 8FAC0664 */ lw $t4, 0x664($sp) +.L7F0454C8: +/* 079FF8 7F0454C8 24010001 */ li $at, 1 +/* 079FFC 7F0454CC 8FA20648 */ lw $v0, 0x648($sp) +/* 07A000 7F0454D0 51810009 */ beql $t4, $at, .L7F0454F8 +/* 07A004 7F0454D4 8E0D0000 */ lw $t5, ($s0) +/* 07A008 7F0454D8 50400007 */ beql $v0, $zero, .L7F0454F8 +/* 07A00C 7F0454DC 8E0D0000 */ lw $t5, ($s0) +/* 07A010 7F0454E0 804E0080 */ lb $t6, 0x80($v0) +/* 07A014 7F0454E4 24010056 */ li $at, 86 +/* 07A018 7F0454E8 55C10003 */ bnel $t6, $at, .L7F0454F8 +/* 07A01C 7F0454EC 8E0D0000 */ lw $t5, ($s0) +/* 07A020 7F0454F0 A4400082 */ sh $zero, 0x82($v0) +/* 07A024 7F0454F4 8E0D0000 */ lw $t5, ($s0) +.L7F0454F8: +/* 07A028 7F0454F8 2401FEFF */ li $at, -257 +/* 07A02C 7F0454FC 01A17824 */ and $t7, $t5, $at +/* 07A030 7F045500 AE0F0000 */ sw $t7, ($s0) +/* 07A034 7F045504 C6260058 */ lwc1 $f6, 0x58($s1) +.L7F045508: +/* 07A038 7F045508 3C188005 */ lui $t8, %hi(clock_timer) +/* 07A03C 7F04550C 3C013F80 */ lui $at, 0x3f80 +/* 07A040 7F045510 E7A60694 */ swc1 $f6, 0x694($sp) +/* 07A044 7F045514 C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07A048 7F045518 E7AA0698 */ swc1 $f10, 0x698($sp) +/* 07A04C 7F04551C C6240060 */ lwc1 $f4, 0x60($s1) +/* 07A050 7F045520 E7A4069C */ swc1 $f4, 0x69c($sp) +/* 07A054 7F045524 8E0200BC */ lw $v0, 0xbc($s0) +/* 07A058 7F045528 58400005 */ blezl $v0, .L7F045540 +/* 07A05C 7F04552C 8E29006C */ lw $t1, 0x6c($s1) +/* 07A060 7F045530 8F188374 */ lw $t8, %lo(clock_timer)($t8) +/* 07A064 7F045534 00584023 */ subu $t0, $v0, $t8 +/* 07A068 7F045538 AE0800BC */ sw $t0, 0xbc($s0) +/* 07A06C 7F04553C 8E29006C */ lw $t1, 0x6c($s1) +.L7F045540: +/* 07A070 7F045540 8D2B0000 */ lw $t3, ($t1) +/* 07A074 7F045544 31790001 */ andi $t9, $t3, 1 +/* 07A078 7F045548 53200351 */ beql $t9, $zero, .L7F046290 +/* 07A07C 7F04554C C6000060 */ lwc1 $f0, 0x60($s0) +/* 07A080 7F045550 0FC1001E */ jal sub_GAME_7F040078 +/* 07A084 7F045554 02202025 */ move $a0, $s1 +/* 07A088 7F045558 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07A08C 7F04555C 44814000 */ mtc1 $at, $f8 +/* 07A090 7F045560 3C078005 */ lui $a3, %hi(clock_timer) +/* 07A094 7F045564 24E78374 */ addiu $a3, %lo(clock_timer) # addiu $a3, $a3, -0x7c8c +/* 07A098 7F045568 AFA20640 */ sw $v0, 0x640($sp) +/* 07A09C 7F04556C AFA00610 */ sw $zero, 0x610($sp) +/* 07A0A0 7F045570 AFA0060C */ sw $zero, 0x60c($sp) +/* 07A0A4 7F045574 AFA00604 */ sw $zero, 0x604($sp) +/* 07A0A8 7F045578 E7A80638 */ swc1 $f8, 0x638($sp) +/* 07A0AC 7F04557C 8E0A00A8 */ lw $t2, 0xa8($s0) +/* 07A0B0 7F045580 8CEC0000 */ lw $t4, ($a3) +/* 07A0B4 7F045584 C634005C */ lwc1 $f20, 0x5c($s1) +/* 07A0B8 7F045588 00009025 */ move $s2, $zero +/* 07A0BC 7F04558C 014C7021 */ addu $t6, $t2, $t4 +/* 07A0C0 7F045590 AE0E00A8 */ sw $t6, 0xa8($s0) +/* 07A0C4 7F045594 C6260018 */ lwc1 $f6, 0x18($s1) +/* 07A0C8 7F045598 3C018005 */ lui $at, %hi(rocket_initial_gravity_modifier) +/* 07A0CC 7F04559C E7A6062C */ swc1 $f6, 0x62c($sp) +/* 07A0D0 7F0455A0 C62A001C */ lwc1 $f10, 0x1c($s1) +/* 07A0D4 7F0455A4 E7AA0630 */ swc1 $f10, 0x630($sp) +/* 07A0D8 7F0455A8 C6240020 */ lwc1 $f4, 0x20($s1) +/* 07A0DC 7F0455AC E7A40634 */ swc1 $f4, 0x634($sp) +/* 07A0E0 7F0455B0 8E030000 */ lw $v1, ($s0) +/* 07A0E4 7F0455B4 306D0020 */ andi $t5, $v1, 0x20 +/* 07A0E8 7F0455B8 11A0004B */ beqz $t5, .L7F0456E8 +/* 07A0EC 7F0455BC 00000000 */ nop +/* 07A0F0 7F0455C0 C4322A98 */ lwc1 $f18, %lo(rocket_initial_gravity_modifier)($at) +/* 07A0F4 7F0455C4 C600001C */ lwc1 $f0, 0x1c($s0) +/* 07A0F8 7F0455C8 3C028005 */ lui $v0, %hi(global_timer_delta) +/* 07A0FC 7F0455CC 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 +/* 07A100 7F0455D0 4612003C */ c.lt.s $f0, $f18 +/* 07A104 7F0455D4 00000000 */ nop +/* 07A108 7F0455D8 4502001C */ bc1fl .L7F04564C +/* 07A10C 7F0455DC C60000B0 */ lwc1 $f0, 0xb0($s0) +/* 07A110 7F0455E0 C6080014 */ lwc1 $f8, 0x14($s0) +/* 07A114 7F0455E4 C4460000 */ lwc1 $f6, ($v0) +/* 07A118 7F0455E8 C60400B4 */ lwc1 $f4, 0xb4($s0) +/* 07A11C 7F0455EC 3C018005 */ lui $at, %hi(D_80052A9C) +/* 07A120 7F0455F0 46064282 */ mul.s $f10, $f8, $f6 +/* 07A124 7F0455F4 460A2200 */ add.s $f8, $f4, $f10 +/* 07A128 7F0455F8 E60800B4 */ swc1 $f8, 0xb4($s0) +/* 07A12C 7F0455FC C4440000 */ lwc1 $f4, ($v0) +/* 07A130 7F045600 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07A134 7F045604 C60800B0 */ lwc1 $f8, 0xb0($s0) +/* 07A138 7F045608 46043282 */ mul.s $f10, $f6, $f4 +/* 07A13C 7F04560C 460A4180 */ add.s $f6, $f8, $f10 +/* 07A140 7F045610 E60600B0 */ swc1 $f6, 0xb0($s0) +/* 07A144 7F045614 C4480000 */ lwc1 $f8, ($v0) +/* 07A148 7F045618 C4242A9C */ lwc1 $f4, %lo(D_80052A9C)($at) +/* 07A14C 7F04561C 46082282 */ mul.s $f10, $f4, $f8 +/* 07A150 7F045620 460A0180 */ add.s $f6, $f0, $f10 +/* 07A154 7F045624 E606001C */ swc1 $f6, 0x1c($s0) +/* 07A158 7F045628 C604001C */ lwc1 $f4, 0x1c($s0) +/* 07A15C 7F04562C 4604903C */ c.lt.s $f18, $f4 +/* 07A160 7F045630 00000000 */ nop +/* 07A164 7F045634 45000002 */ bc1f .L7F045640 +/* 07A168 7F045638 00000000 */ nop +/* 07A16C 7F04563C E612001C */ swc1 $f18, 0x1c($s0) +.L7F045640: +/* 07A170 7F045640 10000029 */ b .L7F0456E8 +/* 07A174 7F045644 8E030000 */ lw $v1, ($s0) +/* 07A178 7F045648 C60000B0 */ lwc1 $f0, 0xb0($s0) +.L7F04564C: +/* 07A17C 7F04564C C7A80698 */ lwc1 $f8, 0x698($sp) +/* 07A180 7F045650 4600403C */ c.lt.s $f8, $f0 +/* 07A184 7F045654 00000000 */ nop +/* 07A188 7F045658 45000019 */ bc1f .L7F0456C0 +/* 07A18C 7F04565C 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07A190 7F045660 C4268378 */ lwc1 $f6, %lo(global_timer_delta)($at) +/* 07A194 7F045664 C60A0014 */ lwc1 $f10, 0x14($s0) +/* 07A198 7F045668 C60800B4 */ lwc1 $f8, 0xb4($s0) +/* 07A19C 7F04566C 46065102 */ mul.s $f4, $f10, $f6 +/* 07A1A0 7F045670 46044280 */ add.s $f10, $f8, $f4 +/* 07A1A4 7F045674 E60A00B4 */ swc1 $f10, 0xb4($s0) +/* 07A1A8 7F045678 C4288378 */ lwc1 $f8, %lo(global_timer_delta)($at) +/* 07A1AC 7F04567C C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07A1B0 7F045680 3C018005 */ lui $at, %hi(D_80052AA0) +/* 07A1B4 7F045684 46083102 */ mul.s $f4, $f6, $f8 +/* 07A1B8 7F045688 46040280 */ add.s $f10, $f0, $f4 +/* 07A1BC 7F04568C E60A00B0 */ swc1 $f10, 0xb0($s0) +/* 07A1C0 7F045690 C7A80698 */ lwc1 $f8, 0x698($sp) +/* 07A1C4 7F045694 C60600B0 */ lwc1 $f6, 0xb0($s0) +/* 07A1C8 7F045698 C42A2AA0 */ lwc1 $f10, %lo(D_80052AA0)($at) +/* 07A1CC 7F04569C 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07A1D0 7F0456A0 46083101 */ sub.s $f4, $f6, $f8 +/* 07A1D4 7F0456A4 46045182 */ mul.s $f6, $f10, $f4 +/* 07A1D8 7F0456A8 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07A1DC 7F0456AC 460A3102 */ mul.s $f4, $f6, $f10 +/* 07A1E0 7F0456B0 46044180 */ add.s $f6, $f8, $f4 +/* 07A1E4 7F0456B4 E7A60698 */ swc1 $f6, 0x698($sp) +/* 07A1E8 7F0456B8 1000000B */ b .L7F0456E8 +/* 07A1EC 7F0456BC 8E030000 */ lw $v1, ($s0) +.L7F0456C0: +/* 07A1F0 7F0456C0 E7A00698 */ swc1 $f0, 0x698($sp) +/* 07A1F4 7F0456C4 8E0F0000 */ lw $t7, ($s0) +/* 07A1F8 7F0456C8 2401FFDF */ li $at, -33 +/* 07A1FC 7F0456CC C60A00B4 */ lwc1 $f10, 0xb4($s0) +/* 07A200 7F0456D0 01E1C024 */ and $t8, $t7, $at +/* 07A204 7F0456D4 AE180000 */ sw $t8, ($s0) +/* 07A208 7F0456D8 37030010 */ ori $v1, $t8, 0x10 +/* 07A20C 7F0456DC E616001C */ swc1 $f22, 0x1c($s0) +/* 07A210 7F0456E0 AE030000 */ sw $v1, ($s0) +/* 07A214 7F0456E4 E60A0008 */ swc1 $f10, 8($s0) +.L7F0456E8: +/* 07A218 7F0456E8 3C028005 */ lui $v0, %hi(global_timer_delta) +/* 07A21C 7F0456EC 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 +/* 07A220 7F0456F0 3C018005 */ lui $at, %hi(prop_projectile_gravity_modifier) +/* 07A224 7F0456F4 306B0010 */ andi $t3, $v1, 0x10 +/* 07A228 7F0456F8 C4322AA4 */ lwc1 $f18, %lo(prop_projectile_gravity_modifier)($at) +/* 07A22C 7F0456FC C4420000 */ lwc1 $f2, ($v0) +/* 07A230 7F045700 C600001C */ lwc1 $f0, 0x1c($s0) +/* 07A234 7F045704 15600015 */ bnez $t3, .L7F04575C +/* 07A238 7F045708 C6100014 */ lwc1 $f16, 0x14($s0) +/* 07A23C 7F04570C 46008100 */ add.s $f4, $f16, $f0 +/* 07A240 7F045710 C6080008 */ lwc1 $f8, 8($s0) +/* 07A244 7F045714 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07A248 7F045718 46022182 */ mul.s $f6, $f4, $f2 +/* 07A24C 7F04571C 46064280 */ add.s $f10, $f8, $f6 +/* 07A250 7F045720 E60A0008 */ swc1 $f10, 8($s0) +/* 07A254 7F045724 C4420000 */ lwc1 $f2, ($v0) +/* 07A258 7F045728 C60C0008 */ lwc1 $f12, 8($s0) +/* 07A25C 7F04572C 44815000 */ mtc1 $at, $f10 +/* 07A260 7F045730 46029102 */ mul.s $f4, $f18, $f2 +/* 07A264 7F045734 46046381 */ sub.s $f14, $f12, $f4 +/* 07A268 7F045738 460E6200 */ add.s $f8, $f12, $f14 +/* 07A26C 7F04573C 46081182 */ mul.s $f6, $f2, $f8 +/* 07A270 7F045740 C7A80698 */ lwc1 $f8, 0x698($sp) +/* 07A274 7F045744 460A3102 */ mul.s $f4, $f6, $f10 +/* 07A278 7F045748 46044180 */ add.s $f6, $f8, $f4 +/* 07A27C 7F04574C E7A60698 */ swc1 $f6, 0x698($sp) +/* 07A280 7F045750 E60E0008 */ swc1 $f14, 8($s0) +/* 07A284 7F045754 1000000C */ b .L7F045788 +/* 07A288 7F045758 C4420000 */ lwc1 $f2, ($v0) +.L7F04575C: +/* 07A28C 7F04575C 46008200 */ add.s $f8, $f16, $f0 +/* 07A290 7F045760 C60A0008 */ lwc1 $f10, 8($s0) +/* 07A294 7F045764 46024102 */ mul.s $f4, $f8, $f2 +/* 07A298 7F045768 46045180 */ add.s $f6, $f10, $f4 +/* 07A29C 7F04576C E6060008 */ swc1 $f6, 8($s0) +/* 07A2A0 7F045770 C60A0008 */ lwc1 $f10, 8($s0) +/* 07A2A4 7F045774 C4420000 */ lwc1 $f2, ($v0) +/* 07A2A8 7F045778 C7A80698 */ lwc1 $f8, 0x698($sp) +/* 07A2AC 7F04577C 46025102 */ mul.s $f4, $f10, $f2 +/* 07A2B0 7F045780 46044180 */ add.s $f6, $f8, $f4 +/* 07A2B4 7F045784 E7A60698 */ swc1 $f6, 0x698($sp) +.L7F045788: +/* 07A2B8 7F045788 C6080010 */ lwc1 $f8, 0x10($s0) +/* 07A2BC 7F04578C C60A0004 */ lwc1 $f10, 4($s0) +/* 07A2C0 7F045790 26240018 */ addiu $a0, $s1, 0x18 +/* 07A2C4 7F045794 46024102 */ mul.s $f4, $f8, $f2 +/* 07A2C8 7F045798 C6080018 */ lwc1 $f8, 0x18($s0) +/* 07A2CC 7F04579C 26050020 */ addiu $a1, $s0, 0x20 +/* 07A2D0 7F0457A0 46045180 */ add.s $f6, $f10, $f4 +/* 07A2D4 7F0457A4 E6060004 */ swc1 $f6, 4($s0) +/* 07A2D8 7F0457A8 C44A0000 */ lwc1 $f10, ($v0) +/* 07A2DC 7F0457AC C606000C */ lwc1 $f6, 0xc($s0) +/* 07A2E0 7F0457B0 460A4102 */ mul.s $f4, $f8, $f10 +/* 07A2E4 7F0457B4 46043200 */ add.s $f8, $f6, $f4 +/* 07A2E8 7F0457B8 C6060004 */ lwc1 $f6, 4($s0) +/* 07A2EC 7F0457BC E608000C */ swc1 $f8, 0xc($s0) +/* 07A2F0 7F0457C0 C4420000 */ lwc1 $f2, ($v0) +/* 07A2F4 7F0457C4 C7AA0694 */ lwc1 $f10, 0x694($sp) +/* 07A2F8 7F0457C8 8CE60000 */ lw $a2, ($a3) +/* 07A2FC 7F0457CC 46023102 */ mul.s $f4, $f6, $f2 +/* 07A300 7F0457D0 C7A6069C */ lwc1 $f6, 0x69c($sp) +/* 07A304 7F0457D4 46045200 */ add.s $f8, $f10, $f4 +/* 07A308 7F0457D8 E7A80694 */ swc1 $f8, 0x694($sp) +/* 07A30C 7F0457DC C60A000C */ lwc1 $f10, 0xc($s0) +/* 07A310 7F0457E0 AFA5006C */ sw $a1, 0x6c($sp) +/* 07A314 7F0457E4 AFA40070 */ sw $a0, 0x70($sp) +/* 07A318 7F0457E8 46025102 */ mul.s $f4, $f10, $f2 +/* 07A31C 7F0457EC 46043200 */ add.s $f8, $f6, $f4 +/* 07A320 7F0457F0 0FC15F7E */ jal sub_GAME_7F057DF8 +/* 07A324 7F0457F4 E7A8069C */ swc1 $f8, 0x69c($sp) +/* 07A328 7F0457F8 92390003 */ lbu $t9, 3($s1) +/* 07A32C 7F0457FC 24010008 */ li $at, 8 +/* 07A330 7F045800 57210013 */ bnel $t9, $at, .L7F045850 +/* 07A334 7F045804 8E040088 */ lw $a0, 0x88($s0) +/* 07A338 7F045808 82220080 */ lb $v0, 0x80($s1) +/* 07A33C 7F04580C 2401001D */ li $at, 29 +/* 07A340 7F045810 1041000D */ beq $v0, $at, .L7F045848 +/* 07A344 7F045814 2401001B */ li $at, 27 +/* 07A348 7F045818 1041000B */ beq $v0, $at, .L7F045848 +/* 07A34C 7F04581C 2401001C */ li $at, 28 +/* 07A350 7F045820 10410009 */ beq $v0, $at, .L7F045848 +/* 07A354 7F045824 24010021 */ li $at, 33 +/* 07A358 7F045828 10410007 */ beq $v0, $at, .L7F045848 +/* 07A35C 7F04582C 2401002F */ li $at, 47 +/* 07A360 7F045830 10410005 */ beq $v0, $at, .L7F045848 +/* 07A364 7F045834 24010030 */ li $at, 48 +/* 07A368 7F045838 10410003 */ beq $v0, $at, .L7F045848 +/* 07A36C 7F04583C 24010022 */ li $at, 34 +/* 07A370 7F045840 54410003 */ bnel $v0, $at, .L7F045850 +/* 07A374 7F045844 8E040088 */ lw $a0, 0x88($s0) +.L7F045848: +/* 07A378 7F045848 24120001 */ li $s2, 1 +/* 07A37C 7F04584C 8E040088 */ lw $a0, 0x88($s0) +.L7F045850: +/* 07A380 7F045850 50800004 */ beql $a0, $zero, .L7F045864 +/* 07A384 7F045854 02202025 */ move $a0, $s1 +/* 07A388 7F045858 0FC0F416 */ jal sub_GAME_7F03D058 +/* 07A38C 7F04585C 00002825 */ move $a1, $zero +/* 07A390 7F045860 02202025 */ move $a0, $s1 +.L7F045864: +/* 07A394 7F045864 27A50694 */ addiu $a1, $sp, 0x694 +/* 07A398 7F045868 27A60614 */ addiu $a2, $sp, 0x614 +/* 07A39C 7F04586C 27A70620 */ addiu $a3, $sp, 0x620 +/* 07A3A0 7F045870 AFB20010 */ sw $s2, 0x10($sp) +/* 07A3A4 7F045874 0FC10BAD */ jal sub_GAME_7F042EB4 +/* 07A3A8 7F045878 AFA00014 */ sw $zero, 0x14($sp) +/* 07A3AC 7F04587C AFA20664 */ sw $v0, 0x664($sp) +/* 07A3B0 7F045880 8E040088 */ lw $a0, 0x88($s0) +/* 07A3B4 7F045884 50800004 */ beql $a0, $zero, .L7F045898 +/* 07A3B8 7F045888 8FAC0664 */ lw $t4, 0x664($sp) +/* 07A3BC 7F04588C 0FC0F416 */ jal sub_GAME_7F03D058 +/* 07A3C0 7F045890 24050001 */ li $a1, 1 +/* 07A3C4 7F045894 8FAC0664 */ lw $t4, 0x664($sp) +.L7F045898: +/* 07A3C8 7F045898 240A0001 */ li $t2, 1 +/* 07A3CC 7F04589C 24010002 */ li $at, 2 +/* 07A3D0 7F0458A0 15810042 */ bne $t4, $at, .L7F0459AC +/* 07A3D4 7F0458A4 AFAA0690 */ sw $t2, 0x690($sp) +/* 07A3D8 7F0458A8 3C038003 */ lui $v1, %hi(D_80030B0C) +/* 07A3DC 7F0458AC 8C630B0C */ lw $v1, %lo(D_80030B0C)($v1) +/* 07A3E0 7F0458B0 10600007 */ beqz $v1, .L7F0458D0 +/* 07A3E4 7F0458B4 00000000 */ nop +/* 07A3E8 7F0458B8 90620000 */ lbu $v0, ($v1) +/* 07A3EC 7F0458BC 24010003 */ li $at, 3 +/* 07A3F0 7F0458C0 1041003A */ beq $v0, $at, .L7F0459AC +/* 07A3F4 7F0458C4 24010006 */ li $at, 6 +/* 07A3F8 7F0458C8 50410039 */ beql $v0, $at, .L7F0459B0 +/* 07A3FC 7F0458CC 8FAC0604 */ lw $t4, 0x604($sp) +.L7F0458D0: +/* 07A400 7F0458D0 10600007 */ beqz $v1, .L7F0458F0 +/* 07A404 7F0458D4 00002025 */ move $a0, $zero +/* 07A408 7F0458D8 8C620004 */ lw $v0, 4($v1) +/* 07A40C 7F0458DC 8C4E0064 */ lw $t6, 0x64($v0) +/* 07A410 7F0458E0 31CD0080 */ andi $t5, $t6, 0x80 +/* 07A414 7F0458E4 11A00002 */ beqz $t5, .L7F0458F0 +/* 07A418 7F0458E8 00000000 */ nop +/* 07A41C 7F0458EC 24040001 */ li $a0, 1 +.L7F0458F0: +/* 07A420 7F0458F0 5480002F */ bnezl $a0, .L7F0459B0 +/* 07A424 7F0458F4 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A428 7F0458F8 0FC0FEDC */ jal sub_GAME_7F03FB70 +/* 07A42C 7F0458FC 02002025 */ move $a0, $s0 +/* 07A430 7F045900 8E2F0064 */ lw $t7, 0x64($s1) +/* 07A434 7F045904 2401FF7F */ li $at, -129 +/* 07A438 7F045908 AE20006C */ sw $zero, 0x6c($s1) +/* 07A43C 7F04590C 01E1C024 */ and $t8, $t7, $at +/* 07A440 7F045910 AE380064 */ sw $t8, 0x64($s1) +/* 07A444 7F045914 92620001 */ lbu $v0, 1($s3) +/* 07A448 7F045918 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07A44C 7F04591C 240500F1 */ li $a1, 241 +/* 07A450 7F045920 30480008 */ andi $t0, $v0, 8 +/* 07A454 7F045924 11000003 */ beqz $t0, .L7F045934 +/* 07A458 7F045928 00003025 */ move $a2, $zero +/* 07A45C 7F04592C 34490010 */ ori $t1, $v0, 0x10 +/* 07A460 7F045930 A2690001 */ sb $t1, 1($s3) +.L7F045934: +/* 07A464 7F045934 0C002382 */ jal play_sfx_a1 +/* 07A468 7F045938 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07A46C 7F04593C 00402025 */ move $a0, $v0 +/* 07A470 7F045940 0FC14E84 */ jal sub_GAME_7F053A10 +/* 07A474 7F045944 26650008 */ addiu $a1, $s3, 8 +/* 07A478 7F045948 8E6B0014 */ lw $t3, 0x14($s3) +/* 07A47C 7F04594C 82240080 */ lb $a0, 0x80($s1) +/* 07A480 7F045950 0FC15DFA */ jal sub_GAME_7F0577E8 +/* 07A484 7F045954 91650003 */ lbu $a1, 3($t3) +/* 07A488 7F045958 02202025 */ move $a0, $s1 +/* 07A48C 7F04595C 27A50614 */ addiu $a1, $sp, 0x614 +/* 07A490 7F045960 8E660014 */ lw $a2, 0x14($s3) +/* 07A494 7F045964 0FC10E6E */ jal sub_GAME_7F0439B8 +/* 07A498 7F045968 27A70620 */ addiu $a3, $sp, 0x620 +/* 07A49C 7F04596C 3C058003 */ lui $a1, %hi(D_80030B0C) +/* 07A4A0 7F045970 8CA50B0C */ lw $a1, %lo(D_80030B0C)($a1) +/* 07A4A4 7F045974 02602025 */ move $a0, $s3 +/* 07A4A8 7F045978 3C068007 */ lui $a2, %hi(objinst) +/* 07A4AC 7F04597C 10A0000B */ beqz $a1, .L7F0459AC +/* 07A4B0 7F045980 3C078007 */ lui $a3, %hi(dword_CODE_bss_80075B74) +/* 07A4B4 7F045984 8E720014 */ lw $s2, 0x14($s3) +/* 07A4B8 7F045988 8CC65B70 */ lw $a2, %lo(objinst)($a2) +/* 07A4BC 7F04598C 0FC10E9B */ jal sub_GAME_7F043A6C +/* 07A4C0 7F045990 8CE75B74 */ lw $a3, %lo(dword_CODE_bss_80075B74)($a3) +/* 07A4C4 7F045994 10400005 */ beqz $v0, .L7F0459AC +/* 07A4C8 7F045998 24190005 */ li $t9, 5 +/* 07A4CC 7F04599C AE720014 */ sw $s2, 0x14($s3) +/* 07A4D0 7F0459A0 240A0001 */ li $t2, 1 +/* 07A4D4 7F0459A4 AFB90680 */ sw $t9, 0x680($sp) +/* 07A4D8 7F0459A8 AFAA0604 */ sw $t2, 0x604($sp) +.L7F0459AC: +/* 07A4DC 7F0459AC 8FAC0604 */ lw $t4, 0x604($sp) +.L7F0459B0: +/* 07A4E0 7F0459B0 158000EC */ bnez $t4, .L7F045D64 +/* 07A4E4 7F0459B4 3C128003 */ lui $s2, %hi(D_80030B0C) +/* 07A4E8 7F0459B8 8E520B0C */ lw $s2, %lo(D_80030B0C)($s2) +/* 07A4EC 7F0459BC 524000EA */ beql $s2, $zero, .L7F045D68 +/* 07A4F0 7F0459C0 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A4F4 7F0459C4 922E0003 */ lbu $t6, 3($s1) +/* 07A4F8 7F0459C8 24010008 */ li $at, 8 +/* 07A4FC 7F0459CC 55C100E6 */ bnel $t6, $at, .L7F045D68 +/* 07A500 7F0459D0 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A504 7F0459D4 82220080 */ lb $v0, 0x80($s1) +/* 07A508 7F0459D8 24010003 */ li $at, 3 +/* 07A50C 7F0459DC 544100C3 */ bnel $v0, $at, .L7F045CEC +/* 07A510 7F0459E0 24010056 */ li $at, 86 +/* 07A514 7F0459E4 92420000 */ lbu $v0, ($s2) +/* 07A518 7F0459E8 24010003 */ li $at, 3 +/* 07A51C 7F0459EC 1041000D */ beq $v0, $at, .L7F045A24 +/* 07A520 7F0459F0 24010006 */ li $at, 6 +/* 07A524 7F0459F4 544100DC */ bnel $v0, $at, .L7F045D68 +/* 07A528 7F0459F8 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A52C 7F0459FC 8E4D0004 */ lw $t5, 4($s2) +/* 07A530 7F045A00 51A000D9 */ beql $t5, $zero, .L7F045D68 +/* 07A534 7F045A04 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A538 7F045A08 0FC26C57 */ jal sub_GAME_7F09B15C +/* 07A53C 7F045A0C 02402025 */ move $a0, $s2 +/* 07A540 7F045A10 0FC26C54 */ jal get_cur_playernum +/* 07A544 7F045A14 00409025 */ move $s2, $v0 +/* 07A548 7F045A18 105200D2 */ beq $v0, $s2, .L7F045D64 +/* 07A54C 7F045A1C 3C128003 */ lui $s2, %hi(D_80030B0C) +/* 07A550 7F045A20 8E520B0C */ lw $s2, %lo(D_80030B0C)($s2) +.L7F045A24: +/* 07A554 7F045A24 8E22006C */ lw $v0, 0x6c($s1) +/* 07A558 7F045A28 8E440004 */ lw $a0, 4($s2) +/* 07A55C 7F045A2C 8C4F0000 */ lw $t7, ($v0) +/* 07A560 7F045A30 31F80001 */ andi $t8, $t7, 1 +/* 07A564 7F045A34 530000CC */ beql $t8, $zero, .L7F045D68 +/* 07A568 7F045A38 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A56C 7F045A3C 8C480090 */ lw $t0, 0x90($v0) +/* 07A570 7F045A40 5D0000C9 */ bgtzl $t0, .L7F045D68 +/* 07A574 7F045A44 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A578 7F045A48 8E290064 */ lw $t1, 0x64($s1) +/* 07A57C 7F045A4C 3C068007 */ lui $a2, %hi(flt_CODE_bss_80075B78) +/* 07A580 7F045A50 24C65B78 */ addiu $a2, %lo(flt_CODE_bss_80075B78) # addiu $a2, $a2, 0x5b78 +/* 07A584 7F045A54 312B0020 */ andi $t3, $t1, 0x20 +/* 07A588 7F045A58 116000C2 */ beqz $t3, .L7F045D64 +/* 07A58C 7F045A5C 3C058003 */ lui $a1, %hi(bodypartshot) +/* 07A590 7F045A60 82270080 */ lb $a3, 0x80($s1) +/* 07A594 7F045A64 24190001 */ li $t9, 1 +/* 07A598 7F045A68 AFB90010 */ sw $t9, 0x10($sp) +/* 07A59C 7F045A6C 0FC09C9F */ jal handles_shot_actors +/* 07A5A0 7F045A70 8CA50B10 */ lw $a1, %lo(bodypartshot)($a1) +/* 07A5A4 7F045A74 104000BB */ beqz $v0, .L7F045D64 +/* 07A5A8 7F045A78 240A0001 */ li $t2, 1 +/* 07A5AC 7F045A7C AFAA0604 */ sw $t2, 0x604($sp) +/* 07A5B0 7F045A80 C610008C */ lwc1 $f16, 0x8c($s0) +/* 07A5B4 7F045A84 C7AA0620 */ lwc1 $f10, 0x620($sp) +/* 07A5B8 7F045A88 4610B03C */ c.lt.s $f22, $f16 +/* 07A5BC 7F045A8C 00000000 */ nop +/* 07A5C0 7F045A90 4502001D */ bc1fl .L7F045B08 +/* 07A5C4 7F045A94 8E0C0000 */ lw $t4, ($s0) +/* 07A5C8 7F045A98 C6020004 */ lwc1 $f2, 4($s0) +/* 07A5CC 7F045A9C C60C0008 */ lwc1 $f12, 8($s0) +/* 07A5D0 7F045AA0 C7A40624 */ lwc1 $f4, 0x624($sp) +/* 07A5D4 7F045AA4 460A1182 */ mul.s $f6, $f2, $f10 +/* 07A5D8 7F045AA8 C600000C */ lwc1 $f0, 0xc($s0) +/* 07A5DC 7F045AAC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07A5E0 7F045AB0 46046202 */ mul.s $f8, $f12, $f4 +/* 07A5E4 7F045AB4 46083100 */ add.s $f4, $f6, $f8 +/* 07A5E8 7F045AB8 C7A60628 */ lwc1 $f6, 0x628($sp) +/* 07A5EC 7F045ABC 46003202 */ mul.s $f8, $f6, $f0 +/* 07A5F0 7F045AC0 44813000 */ mtc1 $at, $f6 +/* 07A5F4 7F045AC4 46044380 */ add.s $f14, $f8, $f4 +/* 07A5F8 7F045AC8 46068200 */ add.s $f8, $f16, $f6 +/* 07A5FC 7F045ACC 46004107 */ neg.s $f4, $f8 +/* 07A600 7F045AD0 46047382 */ mul.s $f14, $f14, $f4 +/* 07A604 7F045AD4 00000000 */ nop +/* 07A608 7F045AD8 460A7182 */ mul.s $f6, $f14, $f10 +/* 07A60C 7F045ADC 46061200 */ add.s $f8, $f2, $f6 +/* 07A610 7F045AE0 E6080004 */ swc1 $f8, 4($s0) +/* 07A614 7F045AE4 C7A40624 */ lwc1 $f4, 0x624($sp) +/* 07A618 7F045AE8 46047282 */ mul.s $f10, $f14, $f4 +/* 07A61C 7F045AEC 460A6180 */ add.s $f6, $f12, $f10 +/* 07A620 7F045AF0 E6060008 */ swc1 $f6, 8($s0) +/* 07A624 7F045AF4 C7A80628 */ lwc1 $f8, 0x628($sp) +/* 07A628 7F045AF8 46087102 */ mul.s $f4, $f14, $f8 +/* 07A62C 7F045AFC 46040280 */ add.s $f10, $f0, $f4 +/* 07A630 7F045B00 E60A000C */ swc1 $f10, 0xc($s0) +/* 07A634 7F045B04 8E0C0000 */ lw $t4, ($s0) +.L7F045B08: +/* 07A638 7F045B08 318E0200 */ andi $t6, $t4, 0x200 +/* 07A63C 7F045B0C 55C00004 */ bnezl $t6, .L7F045B20 +/* 07A640 7F045B10 8E0D0090 */ lw $t5, 0x90($s0) +/* 07A644 7F045B14 0FC15EB0 */ jal sub_GAME_7F057AC0 +/* 07A648 7F045B18 8FA4006C */ lw $a0, 0x6c($sp) +/* 07A64C 7F045B1C 8E0D0090 */ lw $t5, 0x90($s0) +.L7F045B20: +/* 07A650 7F045B20 3C058003 */ lui $a1, %hi(D_80030B0C) +/* 07A654 7F045B24 2406FFFF */ li $a2, -1 +/* 07A658 7F045B28 25AF0001 */ addiu $t7, $t5, 1 +/* 07A65C 7F045B2C AE0F0090 */ sw $t7, 0x90($s0) +/* 07A660 7F045B30 8CA50B0C */ lw $a1, %lo(D_80030B0C)($a1) +/* 07A664 7F045B34 0FC19107 */ jal recall_joy2_hits_edit_detail_edit_flag +/* 07A668 7F045B38 82240080 */ lb $a0, 0x80($s1) +/* 07A66C 7F045B3C 3C188003 */ lui $t8, %hi(D_80030B0C) +/* 07A670 7F045B40 8F180B0C */ lw $t8, %lo(D_80030B0C)($t8) +/* 07A674 7F045B44 3C028003 */ lui $v0, %hi(bodypartshot) +/* 07A678 7F045B48 93080001 */ lbu $t0, 1($t8) +/* 07A67C 7F045B4C 31090002 */ andi $t1, $t0, 2 +/* 07A680 7F045B50 51200085 */ beql $t1, $zero, .L7F045D68 +/* 07A684 7F045B54 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A688 7F045B58 8C420B10 */ lw $v0, %lo(bodypartshot)($v0) +/* 07A68C 7F045B5C 24010064 */ li $at, 100 +/* 07A690 7F045B60 10410080 */ beq $v0, $at, .L7F045D64 +/* 07A694 7F045B64 2401006E */ li $at, 110 +/* 07A698 7F045B68 1041007E */ beq $v0, $at, .L7F045D64 +/* 07A69C 7F045B6C 3C048007 */ lui $a0, %hi(objinst) +/* 07A6A0 7F045B70 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) +/* 07A6A4 7F045B74 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07A6A8 7F045B78 8C845B70 */ lw $a0, %lo(objinst)($a0) +/* 07A6AC 7F045B7C 0FC1B198 */ jal sub_GAME_7F06C660 +/* 07A6B0 7F045B80 00003025 */ move $a2, $zero +/* 07A6B4 7F045B84 C7A60614 */ lwc1 $f6, 0x614($sp) +/* 07A6B8 7F045B88 C7A80618 */ lwc1 $f8, 0x618($sp) +/* 07A6BC 7F045B8C C7A4061C */ lwc1 $f4, 0x61c($sp) +/* 07A6C0 7F045B90 00409025 */ move $s2, $v0 +/* 07A6C4 7F045B94 E7A605CC */ swc1 $f6, 0x5cc($sp) +/* 07A6C8 7F045B98 E7A805D0 */ swc1 $f8, 0x5d0($sp) +/* 07A6CC 7F045B9C 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 07A6D0 7F045BA0 E7A405D4 */ swc1 $f4, 0x5d4($sp) +/* 07A6D4 7F045BA4 00402025 */ move $a0, $v0 +/* 07A6D8 7F045BA8 0FC1611D */ jal sub_GAME_7F058474 +/* 07A6DC 7F045BAC 27A505CC */ addiu $a1, $sp, 0x5cc +/* 07A6E0 7F045BB0 C7AA05CC */ lwc1 $f10, 0x5cc($sp) +/* 07A6E4 7F045BB4 C6460030 */ lwc1 $f6, 0x30($s2) +/* 07A6E8 7F045BB8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07A6EC 7F045BBC 44810000 */ mtc1 $at, $f0 +/* 07A6F0 7F045BC0 46065201 */ sub.s $f8, $f10, $f6 +/* 07A6F4 7F045BC4 3C048007 */ lui $a0, %hi(objinst) +/* 07A6F8 7F045BC8 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) +/* 07A6FC 7F045BCC 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07A700 7F045BD0 46004102 */ mul.s $f4, $f8, $f0 +/* 07A704 7F045BD4 C7A805D0 */ lwc1 $f8, 0x5d0($sp) +/* 07A708 7F045BD8 8C845B70 */ lw $a0, %lo(objinst)($a0) +/* 07A70C 7F045BDC 46045180 */ add.s $f6, $f10, $f4 +/* 07A710 7F045BE0 E7A605CC */ swc1 $f6, 0x5cc($sp) +/* 07A714 7F045BE4 C64A0034 */ lwc1 $f10, 0x34($s2) +/* 07A718 7F045BE8 460A4101 */ sub.s $f4, $f8, $f10 +/* 07A71C 7F045BEC 46002182 */ mul.s $f6, $f4, $f0 +/* 07A720 7F045BF0 C7A405D4 */ lwc1 $f4, 0x5d4($sp) +/* 07A724 7F045BF4 46064280 */ add.s $f10, $f8, $f6 +/* 07A728 7F045BF8 E7AA05D0 */ swc1 $f10, 0x5d0($sp) +/* 07A72C 7F045BFC C6480038 */ lwc1 $f8, 0x38($s2) +/* 07A730 7F045C00 46082181 */ sub.s $f6, $f4, $f8 +/* 07A734 7F045C04 46003282 */ mul.s $f10, $f6, $f0 +/* 07A738 7F045C08 460A2200 */ add.s $f8, $f4, $f10 +/* 07A73C 7F045C0C 0FC1B3A4 */ jal getjointsize +/* 07A740 7F045C10 E7A805D4 */ swc1 $f8, 0x5d4($sp) +/* 07A744 7F045C14 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07A748 7F045C18 44813000 */ mtc1 $at, $f6 +/* 07A74C 7F045C1C 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B88) +/* 07A750 7F045C20 C42A5B88 */ lwc1 $f10, %lo(flt_CODE_bss_80075B88)($at) +/* 07A754 7F045C24 46060102 */ mul.s $f4, $f0, $f6 +/* 07A758 7F045C28 C7A605CC */ lwc1 $f6, 0x5cc($sp) +/* 07A75C 7F045C2C 3C048007 */ lui $a0, %hi(objinst) +/* 07A760 7F045C30 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) +/* 07A764 7F045C34 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07A768 7F045C38 8C845B70 */ lw $a0, %lo(objinst)($a0) +/* 07A76C 7F045C3C 460A2202 */ mul.s $f8, $f4, $f10 +/* 07A770 7F045C40 46083101 */ sub.s $f4, $f6, $f8 +/* 07A774 7F045C44 0FC1B3A4 */ jal getjointsize +/* 07A778 7F045C48 E7A405CC */ swc1 $f4, 0x5cc($sp) +/* 07A77C 7F045C4C 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07A780 7F045C50 44815000 */ mtc1 $at, $f10 +/* 07A784 7F045C54 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B8C) +/* 07A788 7F045C58 C4285B8C */ lwc1 $f8, %lo(flt_CODE_bss_80075B8C)($at) +/* 07A78C 7F045C5C 460A0182 */ mul.s $f6, $f0, $f10 +/* 07A790 7F045C60 C7AA05D0 */ lwc1 $f10, 0x5d0($sp) +/* 07A794 7F045C64 3C048007 */ lui $a0, %hi(objinst) +/* 07A798 7F045C68 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) +/* 07A79C 7F045C6C 8CA55B74 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07A7A0 7F045C70 8C845B70 */ lw $a0, %lo(objinst)($a0) +/* 07A7A4 7F045C74 46083102 */ mul.s $f4, $f6, $f8 +/* 07A7A8 7F045C78 46045181 */ sub.s $f6, $f10, $f4 +/* 07A7AC 7F045C7C 0FC1B3A4 */ jal getjointsize +/* 07A7B0 7F045C80 E7A605D0 */ swc1 $f6, 0x5d0($sp) +/* 07A7B4 7F045C84 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07A7B8 7F045C88 44814000 */ mtc1 $at, $f8 +/* 07A7BC 7F045C8C 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B90) +/* 07A7C0 7F045C90 C4245B90 */ lwc1 $f4, %lo(flt_CODE_bss_80075B90)($at) +/* 07A7C4 7F045C94 46080282 */ mul.s $f10, $f0, $f8 +/* 07A7C8 7F045C98 C7A805D4 */ lwc1 $f8, 0x5d4($sp) +/* 07A7CC 7F045C9C 02402025 */ move $a0, $s2 +/* 07A7D0 7F045CA0 27A5058C */ addiu $a1, $sp, 0x58c +/* 07A7D4 7F045CA4 46045182 */ mul.s $f6, $f10, $f4 +/* 07A7D8 7F045CA8 46064281 */ sub.s $f10, $f8, $f6 +/* 07A7DC 7F045CAC 0FC16799 */ jal sub_GAME_7F059E64 +/* 07A7E0 7F045CB0 E7AA05D4 */ swc1 $f10, 0x5d4($sp) +/* 07A7E4 7F045CB4 27A4058C */ addiu $a0, $sp, 0x58c +/* 07A7E8 7F045CB8 0FC1611D */ jal sub_GAME_7F058474 +/* 07A7EC 7F045CBC 27A505CC */ addiu $a1, $sp, 0x5cc +/* 07A7F0 7F045CC0 3C048007 */ lui $a0, %hi(objinst) +/* 07A7F4 7F045CC4 3C058003 */ lui $a1, %hi(bodypartshot) +/* 07A7F8 7F045CC8 3C068007 */ lui $a2, %hi(dword_CODE_bss_80075B74) +/* 07A7FC 7F045CCC 8CC65B74 */ lw $a2, %lo(dword_CODE_bss_80075B74)($a2) +/* 07A800 7F045CD0 8CA50B10 */ lw $a1, %lo(bodypartshot)($a1) +/* 07A804 7F045CD4 8C845B70 */ lw $a0, %lo(objinst)($a0) +/* 07A808 7F045CD8 0FC08877 */ jal sub_GAME_7F0221DC +/* 07A80C 7F045CDC 27A705CC */ addiu $a3, $sp, 0x5cc +/* 07A810 7F045CE0 10000021 */ b .L7F045D68 +/* 07A814 7F045CE4 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A818 7F045CE8 24010056 */ li $at, 86 +.L7F045CEC: +/* 07A81C 7F045CEC 5441001E */ bnel $v0, $at, .L7F045D68 +/* 07A820 7F045CF0 8FAC0604 */ lw $t4, 0x604($sp) +/* 07A824 7F045CF4 92420000 */ lbu $v0, ($s2) +/* 07A828 7F045CF8 240B0001 */ li $t3, 1 +/* 07A82C 7F045CFC 24010003 */ li $at, 3 +/* 07A830 7F045D00 14410008 */ bne $v0, $at, .L7F045D24 +/* 07A834 7F045D04 AFAB0604 */ sw $t3, 0x604($sp) +/* 07A838 7F045D08 8E440004 */ lw $a0, 4($s2) +/* 07A83C 7F045D0C 26250058 */ addiu $a1, $s1, 0x58 +/* 07A840 7F045D10 3C064000 */ lui $a2, 0x4000 +/* 07A844 7F045D14 0FC09E01 */ jal sub_GAME_7F027804 +/* 07A848 7F045D18 24070001 */ li $a3, 1 +/* 07A84C 7F045D1C 10000011 */ b .L7F045D64 +/* 07A850 7F045D20 A6200082 */ sh $zero, 0x82($s1) +.L7F045D24: +/* 07A854 7F045D24 24010001 */ li $at, 1 +/* 07A858 7F045D28 10410004 */ beq $v0, $at, .L7F045D3C +/* 07A85C 7F045D2C 3C0542C8 */ lui $a1, 0x42c8 +/* 07A860 7F045D30 24010004 */ li $at, 4 +/* 07A864 7F045D34 5441000B */ bnel $v0, $at, .L7F045D64 +/* 07A868 7F045D38 A6200082 */ sh $zero, 0x82($s1) +.L7F045D3C: +/* 07A86C 7F045D3C 8E220064 */ lw $v0, 0x64($s1) +/* 07A870 7F045D40 3C010006 */ lui $at, 6 +/* 07A874 7F045D44 8E440004 */ lw $a0, 4($s2) +/* 07A878 7F045D48 0041C824 */ and $t9, $v0, $at +/* 07A87C 7F045D4C 00195442 */ srl $t2, $t9, 0x11 +/* 07A880 7F045D50 AFAA0010 */ sw $t2, 0x10($sp) +/* 07A884 7F045D54 26260058 */ addiu $a2, $s1, 0x58 +/* 07A888 7F045D58 0FC13842 */ jal maybe_detonate_object +/* 07A88C 7F045D5C 24070056 */ li $a3, 86 +/* 07A890 7F045D60 A6200082 */ sh $zero, 0x82($s1) +.L7F045D64: +/* 07A894 7F045D64 8FAC0604 */ lw $t4, 0x604($sp) +.L7F045D68: +/* 07A898 7F045D68 5580010B */ bnezl $t4, .L7F046198 +/* 07A89C 7F045D6C 8E2A0064 */ lw $t2, 0x64($s1) +/* 07A8A0 7F045D70 8FAE0664 */ lw $t6, 0x664($sp) +/* 07A8A4 7F045D74 55C00031 */ bnezl $t6, .L7F045E3C +/* 07A8A8 7F045D78 8E0F0000 */ lw $t7, ($s0) +/* 07A8AC 7F045D7C C610008C */ lwc1 $f16, 0x8c($s0) +/* 07A8B0 7F045D80 C7A40620 */ lwc1 $f4, 0x620($sp) +/* 07A8B4 7F045D84 4610B03C */ c.lt.s $f22, $f16 +/* 07A8B8 7F045D88 00000000 */ nop +/* 07A8BC 7F045D8C 4502002B */ bc1fl .L7F045E3C +/* 07A8C0 7F045D90 8E0F0000 */ lw $t7, ($s0) +/* 07A8C4 7F045D94 C6020004 */ lwc1 $f2, 4($s0) +/* 07A8C8 7F045D98 C60C0008 */ lwc1 $f12, 8($s0) +/* 07A8CC 7F045D9C C7A60624 */ lwc1 $f6, 0x624($sp) +/* 07A8D0 7F045DA0 46041202 */ mul.s $f8, $f2, $f4 +/* 07A8D4 7F045DA4 C600000C */ lwc1 $f0, 0xc($s0) +/* 07A8D8 7F045DA8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07A8DC 7F045DAC 46066282 */ mul.s $f10, $f12, $f6 +/* 07A8E0 7F045DB0 4616603E */ c.le.s $f12, $f22 +/* 07A8E4 7F045DB4 460A4180 */ add.s $f6, $f8, $f10 +/* 07A8E8 7F045DB8 C7A80628 */ lwc1 $f8, 0x628($sp) +/* 07A8EC 7F045DBC 46004282 */ mul.s $f10, $f8, $f0 +/* 07A8F0 7F045DC0 44814000 */ mtc1 $at, $f8 +/* 07A8F4 7F045DC4 46065380 */ add.s $f14, $f10, $f6 +/* 07A8F8 7F045DC8 46088280 */ add.s $f10, $f16, $f8 +/* 07A8FC 7F045DCC 46005187 */ neg.s $f6, $f10 +/* 07A900 7F045DD0 46067382 */ mul.s $f14, $f14, $f6 +/* 07A904 7F045DD4 00000000 */ nop +/* 07A908 7F045DD8 46047202 */ mul.s $f8, $f14, $f4 +/* 07A90C 7F045DDC 46081280 */ add.s $f10, $f2, $f8 +/* 07A910 7F045DE0 E60A0004 */ swc1 $f10, 4($s0) +/* 07A914 7F045DE4 C7A60624 */ lwc1 $f6, 0x624($sp) +/* 07A918 7F045DE8 46067102 */ mul.s $f4, $f14, $f6 +/* 07A91C 7F045DEC 46046200 */ add.s $f8, $f12, $f4 +/* 07A920 7F045DF0 E6080008 */ swc1 $f8, 8($s0) +/* 07A924 7F045DF4 C7AA0628 */ lwc1 $f10, 0x628($sp) +/* 07A928 7F045DF8 460A7182 */ mul.s $f6, $f14, $f10 +/* 07A92C 7F045DFC 46060100 */ add.s $f4, $f0, $f6 +/* 07A930 7F045E00 4500000D */ bc1f .L7F045E38 +/* 07A934 7F045E04 E604000C */ swc1 $f4, 0xc($s0) +/* 07A938 7F045E08 C6080008 */ lwc1 $f8, 8($s0) +/* 07A93C 7F045E0C 240D0001 */ li $t5, 1 +/* 07A940 7F045E10 4608B03E */ c.le.s $f22, $f8 +/* 07A944 7F045E14 00000000 */ nop +/* 07A948 7F045E18 45030007 */ bc1tl .L7F045E38 +/* 07A94C 7F045E1C AFAD060C */ sw $t5, 0x60c($sp) +/* 07A950 7F045E20 C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07A954 7F045E24 460AA03E */ c.le.s $f20, $f10 +/* 07A958 7F045E28 00000000 */ nop +/* 07A95C 7F045E2C 45020003 */ bc1fl .L7F045E3C +/* 07A960 7F045E30 8E0F0000 */ lw $t7, ($s0) +/* 07A964 7F045E34 AFAD060C */ sw $t5, 0x60c($sp) +.L7F045E38: +/* 07A968 7F045E38 8E0F0000 */ lw $t7, ($s0) +.L7F045E3C: +/* 07A96C 7F045E3C C7B4063C */ lwc1 $f20, 0x63c($sp) +/* 07A970 7F045E40 31F80008 */ andi $t8, $t7, 8 +/* 07A974 7F045E44 17000014 */ bnez $t8, .L7F045E98 +/* 07A978 7F045E48 00000000 */ nop +/* 07A97C 7F045E4C 8E640014 */ lw $a0, 0x14($s3) +/* 07A980 7F045E50 8E650008 */ lw $a1, 8($s3) +/* 07A984 7F045E54 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 07A988 7F045E58 8E660010 */ lw $a2, 0x10($s3) +/* 07A98C 7F045E5C 46000506 */ mov.s $f20, $f0 +/* 07A990 7F045E60 8FA40640 */ lw $a0, 0x640($sp) +/* 07A994 7F045E64 0FC0FA6F */ jal sub_GAME_7F03E9BC +/* 07A998 7F045E68 8FA50070 */ lw $a1, 0x70($sp) +/* 07A99C 7F045E6C 4600A101 */ sub.s $f4, $f20, $f0 +/* 07A9A0 7F045E70 E7A00638 */ swc1 $f0, 0x638($sp) +/* 07A9A4 7F045E74 C666000C */ lwc1 $f6, 0xc($s3) +/* 07A9A8 7F045E78 00004025 */ move $t0, $zero +/* 07A9AC 7F045E7C 4604303C */ c.lt.s $f6, $f4 +/* 07A9B0 7F045E80 00000000 */ nop +/* 07A9B4 7F045E84 45000002 */ bc1f .L7F045E90 +/* 07A9B8 7F045E88 00000000 */ nop +/* 07A9BC 7F045E8C 24080001 */ li $t0, 1 +.L7F045E90: +/* 07A9C0 7F045E90 10000001 */ b .L7F045E98 +/* 07A9C4 7F045E94 AFA80610 */ sw $t0, 0x610($sp) +.L7F045E98: +/* 07A9C8 7F045E98 8FA90610 */ lw $t1, 0x610($sp) +/* 07A9CC 7F045E9C 8FAB0664 */ lw $t3, 0x664($sp) +/* 07A9D0 7F045EA0 55200004 */ bnezl $t1, .L7F045EB4 +/* 07A9D4 7F045EA4 8E190000 */ lw $t9, ($s0) +/* 07A9D8 7F045EA8 5560000B */ bnezl $t3, .L7F045ED8 +/* 07A9DC 7F045EAC 8FAD0610 */ lw $t5, 0x610($sp) +/* 07A9E0 7F045EB0 8E190000 */ lw $t9, ($s0) +.L7F045EB4: +/* 07A9E4 7F045EB4 332A0200 */ andi $t2, $t9, 0x200 +/* 07A9E8 7F045EB8 55400004 */ bnezl $t2, .L7F045ECC +/* 07A9EC 7F045EBC 8E0C0090 */ lw $t4, 0x90($s0) +/* 07A9F0 7F045EC0 0FC15EB0 */ jal sub_GAME_7F057AC0 +/* 07A9F4 7F045EC4 8FA4006C */ lw $a0, 0x6c($sp) +/* 07A9F8 7F045EC8 8E0C0090 */ lw $t4, 0x90($s0) +.L7F045ECC: +/* 07A9FC 7F045ECC 258E0001 */ addiu $t6, $t4, 1 +/* 07AA00 7F045ED0 AE0E0090 */ sw $t6, 0x90($s0) +/* 07AA04 7F045ED4 8FAD0610 */ lw $t5, 0x610($sp) +.L7F045ED8: +/* 07AA08 7F045ED8 8FAF060C */ lw $t7, 0x60c($sp) +/* 07AA0C 7F045EDC 8FB80610 */ lw $t8, 0x610($sp) +/* 07AA10 7F045EE0 15A00003 */ bnez $t5, .L7F045EF0 +/* 07AA14 7F045EE4 00000000 */ nop +/* 07AA18 7F045EE8 51E0003A */ beql $t7, $zero, .L7F045FD4 +/* 07AA1C 7F045EEC 922C0003 */ lbu $t4, 3($s1) +.L7F045EF0: +/* 07AA20 7F045EF0 13000009 */ beqz $t8, .L7F045F18 +/* 07AA24 7F045EF4 C7A40618 */ lwc1 $f4, 0x618($sp) +/* 07AA28 7F045EF8 C7A80638 */ lwc1 $f8, 0x638($sp) +/* 07AA2C 7F045EFC 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07AA30 7F045F00 44813000 */ mtc1 $at, $f6 +/* 07AA34 7F045F04 4608A281 */ sub.s $f10, $f20, $f8 +/* 07AA38 7F045F08 46065000 */ add.s $f0, $f10, $f6 +/* 07AA3C 7F045F0C E660000C */ swc1 $f0, 0xc($s3) +/* 07AA40 7F045F10 10000008 */ b .L7F045F34 +/* 07AA44 7F045F14 E620005C */ swc1 $f0, 0x5c($s1) +.L7F045F18: +/* 07AA48 7F045F18 C7A80638 */ lwc1 $f8, 0x638($sp) +/* 07AA4C 7F045F1C 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07AA50 7F045F20 44813000 */ mtc1 $at, $f6 +/* 07AA54 7F045F24 46082281 */ sub.s $f10, $f4, $f8 +/* 07AA58 7F045F28 46065080 */ add.s $f2, $f10, $f6 +/* 07AA5C 7F045F2C E662000C */ swc1 $f2, 0xc($s3) +/* 07AA60 7F045F30 E622005C */ swc1 $f2, 0x5c($s1) +.L7F045F34: +/* 07AA64 7F045F34 8E230064 */ lw $v1, 0x64($s1) +/* 07AA68 7F045F38 02202025 */ move $a0, $s1 +/* 07AA6C 7F045F3C 000343C0 */ sll $t0, $v1, 0xf +/* 07AA70 7F045F40 05000002 */ bltz $t0, .L7F045F4C +/* 07AA74 7F045F44 34690100 */ ori $t1, $v1, 0x100 +/* 07AA78 7F045F48 AE290064 */ sw $t1, 0x64($s1) +.L7F045F4C: +/* 07AA7C 7F045F4C C610008C */ lwc1 $f16, 0x8c($s0) +/* 07AA80 7F045F50 4610B03C */ c.lt.s $f22, $f16 +/* 07AA84 7F045F54 00000000 */ nop +/* 07AA88 7F045F58 4500001B */ bc1f .L7F045FC8 +/* 07AA8C 7F045F5C 00000000 */ nop +/* 07AA90 7F045F60 C6040008 */ lwc1 $f4, 8($s0) +/* 07AA94 7F045F64 46008207 */ neg.s $f8, $f16 +/* 07AA98 7F045F68 3C018005 */ lui $at, %hi(D_80052AA8) +/* 07AA9C 7F045F6C 46082282 */ mul.s $f10, $f4, $f8 +/* 07AAA0 7F045F70 C4202AA8 */ lwc1 $f0, %lo(D_80052AA8)($at) +/* 07AAA4 7F045F74 E60A0008 */ swc1 $f10, 8($s0) +/* 07AAA8 7F045F78 C6060008 */ lwc1 $f6, 8($s0) +/* 07AAAC 7F045F7C 4600303C */ c.lt.s $f6, $f0 +/* 07AAB0 7F045F80 00000000 */ nop +/* 07AAB4 7F045F84 45020013 */ bc1fl .L7F045FD4 +/* 07AAB8 7F045F88 922C0003 */ lbu $t4, 3($s1) +/* 07AABC 7F045F8C 8E0B0000 */ lw $t3, ($s0) +/* 07AAC0 7F045F90 02202025 */ move $a0, $s1 +/* 07AAC4 7F045F94 31790002 */ andi $t9, $t3, 2 +/* 07AAC8 7F045F98 13200007 */ beqz $t9, .L7F045FB8 +/* 07AACC 7F045F9C 00000000 */ nop +/* 07AAD0 7F045FA0 8E0A0090 */ lw $t2, 0x90($s0) +/* 07AAD4 7F045FA4 24010001 */ li $at, 1 +/* 07AAD8 7F045FA8 15410003 */ bne $t2, $at, .L7F045FB8 +/* 07AADC 7F045FAC 00000000 */ nop +/* 07AAE0 7F045FB0 10000007 */ b .L7F045FD0 +/* 07AAE4 7F045FB4 E6000008 */ swc1 $f0, 8($s0) +.L7F045FB8: +/* 07AAE8 7F045FB8 0FC10C79 */ jal sub_GAME_7F0431E4 +/* 07AAEC 7F045FBC 27A5062C */ addiu $a1, $sp, 0x62c +/* 07AAF0 7F045FC0 10000004 */ b .L7F045FD4 +/* 07AAF4 7F045FC4 922C0003 */ lbu $t4, 3($s1) +.L7F045FC8: +/* 07AAF8 7F045FC8 0FC10C79 */ jal sub_GAME_7F0431E4 +/* 07AAFC 7F045FCC 27A5062C */ addiu $a1, $sp, 0x62c +.L7F045FD0: +/* 07AB00 7F045FD0 922C0003 */ lbu $t4, 3($s1) +.L7F045FD4: +/* 07AB04 7F045FD4 24010008 */ li $at, 8 +/* 07AB08 7F045FD8 5581006F */ bnel $t4, $at, .L7F046198 +/* 07AB0C 7F045FDC 8E2A0064 */ lw $t2, 0x64($s1) +/* 07AB10 7F045FE0 82220080 */ lb $v0, 0x80($s1) +/* 07AB14 7F045FE4 24010003 */ li $at, 3 +/* 07AB18 7F045FE8 54410006 */ bnel $v0, $at, .L7F046004 +/* 07AB1C 7F045FEC 24010056 */ li $at, 86 +/* 07AB20 7F045FF0 0FC10D94 */ jal sub_GAME_7F043650 +/* 07AB24 7F045FF4 02202025 */ move $a0, $s1 +/* 07AB28 7F045FF8 10000042 */ b .L7F046104 +/* 07AB2C 7F045FFC 8FB80664 */ lw $t8, 0x664($sp) +/* 07AB30 7F046000 24010056 */ li $at, 86 +.L7F046004: +/* 07AB34 7F046004 1441002D */ bne $v0, $at, .L7F0460BC +/* 07AB38 7F046008 8FAE0664 */ lw $t6, 0x664($sp) +/* 07AB3C 7F04600C 11C00003 */ beqz $t6, .L7F04601C +/* 07AB40 7F046010 8FAD0610 */ lw $t5, 0x610($sp) +/* 07AB44 7F046014 51A00004 */ beql $t5, $zero, .L7F046028 +/* 07AB48 7F046018 C6020004 */ lwc1 $f2, 4($s0) +.L7F04601C: +/* 07AB4C 7F04601C 10000038 */ b .L7F046100 +/* 07AB50 7F046020 A6200082 */ sh $zero, 0x82($s1) +/* 07AB54 7F046024 C6020004 */ lwc1 $f2, 4($s0) +.L7F046028: +/* 07AB58 7F046028 C60C0008 */ lwc1 $f12, 8($s0) +/* 07AB5C 7F04602C C600000C */ lwc1 $f0, 0xc($s0) +/* 07AB60 7F046030 46021102 */ mul.s $f4, $f2, $f2 +/* 07AB64 7F046034 3C018005 */ lui $at, %hi(D_80052AAC) +/* 07AB68 7F046038 26240058 */ addiu $a0, $s1, 0x58 +/* 07AB6C 7F04603C 460C6202 */ mul.s $f8, $f12, $f12 +/* 07AB70 7F046040 24060008 */ li $a2, 8 +/* 07AB74 7F046044 46000182 */ mul.s $f6, $f0, $f0 +/* 07AB78 7F046048 46082280 */ add.s $f10, $f4, $f8 +/* 07AB7C 7F04604C C4242AAC */ lwc1 $f4, %lo(D_80052AAC)($at) +/* 07AB80 7F046050 460A3380 */ add.s $f14, $f6, $f10 +/* 07AB84 7F046054 460E203C */ c.lt.s $f4, $f14 +/* 07AB88 7F046058 00000000 */ nop +/* 07AB8C 7F04605C 45020005 */ bc1fl .L7F046074 +/* 07AB90 7F046060 8E0F00A8 */ lw $t7, 0xa8($s0) +/* 07AB94 7F046064 E6160010 */ swc1 $f22, 0x10($s0) +/* 07AB98 7F046068 E6160014 */ swc1 $f22, 0x14($s0) +/* 07AB9C 7F04606C E6160018 */ swc1 $f22, 0x18($s0) +/* 07ABA0 7F046070 8E0F00A8 */ lw $t7, 0xa8($s0) +.L7F046074: +/* 07ABA4 7F046074 29E1012D */ slti $at, $t7, 0x12d +/* 07ABA8 7F046078 54200008 */ bnezl $at, .L7F04609C +/* 07ABAC 7F04607C 92690001 */ lbu $t1, 1($s3) +/* 07ABB0 7F046080 8E180000 */ lw $t8, ($s0) +/* 07ABB4 7F046084 2401FFCF */ li $at, -49 +/* 07ABB8 7F046088 E616001C */ swc1 $f22, 0x1c($s0) +/* 07ABBC 7F04608C 03014024 */ and $t0, $t8, $at +/* 07ABC0 7F046090 1000001B */ b .L7F046100 +/* 07ABC4 7F046094 AE080000 */ sw $t0, ($s0) +/* 07ABC8 7F046098 92690001 */ lbu $t1, 1($s3) +.L7F04609C: +/* 07ABCC 7F04609C 8E650014 */ lw $a1, 0x14($s3) +/* 07ABD0 7F0460A0 2667002C */ addiu $a3, $s3, 0x2c +/* 07ABD4 7F0460A4 312B0008 */ andi $t3, $t1, 8 +/* 07ABD8 7F0460A8 000BC82B */ sltu $t9, $zero, $t3 +/* 07ABDC 7F0460AC 0FC279C0 */ jal sub_GAME_7F09E700 +/* 07ABE0 7F0460B0 AFB90010 */ sw $t9, 0x10($sp) +/* 07ABE4 7F0460B4 10000013 */ b .L7F046104 +/* 07ABE8 7F0460B8 8FB80664 */ lw $t8, 0x664($sp) +.L7F0460BC: +/* 07ABEC 7F0460BC 24010057 */ li $at, 87 +/* 07ABF0 7F0460C0 1441000F */ bne $v0, $at, .L7F046100 +/* 07ABF4 7F0460C4 8FAA0610 */ lw $t2, 0x610($sp) +/* 07ABF8 7F0460C8 15400003 */ bnez $t2, .L7F0460D8 +/* 07ABFC 7F0460CC 8FAC060C */ lw $t4, 0x60c($sp) +/* 07AC00 7F0460D0 11800003 */ beqz $t4, .L7F0460E0 +/* 07AC04 7F0460D4 26240058 */ addiu $a0, $s1, 0x58 +.L7F0460D8: +/* 07AC08 7F0460D8 10000009 */ b .L7F046100 +/* 07AC0C 7F0460DC A6200082 */ sh $zero, 0x82($s1) +.L7F0460E0: +/* 07AC10 7F0460E0 926E0001 */ lbu $t6, 1($s3) +/* 07AC14 7F0460E4 8E650014 */ lw $a1, 0x14($s3) +/* 07AC18 7F0460E8 24060009 */ li $a2, 9 +/* 07AC1C 7F0460EC 31CD0008 */ andi $t5, $t6, 8 +/* 07AC20 7F0460F0 000D782B */ sltu $t7, $zero, $t5 +/* 07AC24 7F0460F4 AFAF0010 */ sw $t7, 0x10($sp) +/* 07AC28 7F0460F8 0FC279C0 */ jal sub_GAME_7F09E700 +/* 07AC2C 7F0460FC 2667002C */ addiu $a3, $s3, 0x2c +.L7F046100: +/* 07AC30 7F046100 8FB80664 */ lw $t8, 0x664($sp) +.L7F046104: +/* 07AC34 7F046104 3C128005 */ lui $s2, %hi(D_80048380) +/* 07AC38 7F046108 26528380 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c80 +/* 07AC3C 7F04610C 13000003 */ beqz $t8, .L7F04611C +/* 07AC40 7F046110 8FA80610 */ lw $t0, 0x610($sp) +/* 07AC44 7F046114 51000020 */ beql $t0, $zero, .L7F046198 +/* 07AC48 7F046118 8E2A0064 */ lw $t2, 0x64($s1) +.L7F04611C: +/* 07AC4C 7F04611C 8E420000 */ lw $v0, ($s2) +/* 07AC50 7F046120 8E0900AC */ lw $t1, 0xac($s0) +/* 07AC54 7F046124 244BFFFE */ addiu $t3, $v0, -2 +/* 07AC58 7F046128 012B082A */ slt $at, $t1, $t3 +/* 07AC5C 7F04612C 50200019 */ beql $at, $zero, .L7F046194 +/* 07AC60 7F046130 AE0200AC */ sw $v0, 0xac($s0) +/* 07AC64 7F046134 82220080 */ lb $v0, 0x80($s1) +/* 07AC68 7F046138 26790008 */ addiu $t9, $s3, 8 +/* 07AC6C 7F04613C 24010003 */ li $at, 3 +/* 07AC70 7F046140 10410004 */ beq $v0, $at, .L7F046154 +/* 07AC74 7F046144 AFB90070 */ sw $t9, 0x70($sp) +/* 07AC78 7F046148 24010002 */ li $at, 2 +/* 07AC7C 7F04614C 14410008 */ bne $v0, $at, .L7F046170 +/* 07AC80 7F046150 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +.L7F046154: +/* 07AC84 7F046154 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07AC88 7F046158 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07AC8C 7F04615C 24050003 */ li $a1, 3 +/* 07AC90 7F046160 0C002382 */ jal play_sfx_a1 +/* 07AC94 7F046164 00003025 */ move $a2, $zero +/* 07AC98 7F046168 10000006 */ b .L7F046184 +/* 07AC9C 7F04616C 00402025 */ move $a0, $v0 +.L7F046170: +/* 07ACA0 7F046170 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07ACA4 7F046174 2405002D */ li $a1, 45 +/* 07ACA8 7F046178 0C002382 */ jal play_sfx_a1 +/* 07ACAC 7F04617C 00003025 */ move $a2, $zero +/* 07ACB0 7F046180 00402025 */ move $a0, $v0 +.L7F046184: +/* 07ACB4 7F046184 0FC14E84 */ jal sub_GAME_7F053A10 +/* 07ACB8 7F046188 8FA50070 */ lw $a1, 0x70($sp) +/* 07ACBC 7F04618C 8E420000 */ lw $v0, ($s2) +/* 07ACC0 7F046190 AE0200AC */ sw $v0, 0xac($s0) +.L7F046194: +/* 07ACC4 7F046194 8E2A0064 */ lw $t2, 0x64($s1) +.L7F046198: +/* 07ACC8 7F046198 3C128005 */ lui $s2, %hi(D_80048380) +/* 07ACCC 7F04619C 26528380 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c80 +/* 07ACD0 7F0461A0 314C0080 */ andi $t4, $t2, 0x80 +/* 07ACD4 7F0461A4 5180011D */ beql $t4, $zero, .L7F04661C +/* 07ACD8 7F0461A8 8FAD0690 */ lw $t5, 0x690($sp) +/* 07ACDC 7F0461AC 8E0E0000 */ lw $t6, ($s0) +/* 07ACE0 7F0461B0 31CD0400 */ andi $t5, $t6, 0x400 +/* 07ACE4 7F0461B4 51A00119 */ beql $t5, $zero, .L7F04661C +/* 07ACE8 7F0461B8 8FAD0690 */ lw $t5, 0x690($sp) +/* 07ACEC 7F0461BC 8E420000 */ lw $v0, ($s2) +/* 07ACF0 7F0461C0 3C0143C8 */ li $at, 0x43C80000 # 400.000000 +/* 07ACF4 7F0461C4 27B00564 */ addiu $s0, $sp, 0x564 +/* 07ACF8 7F0461C8 304F0007 */ andi $t7, $v0, 7 +/* 07ACFC 7F0461CC 15E00112 */ bnez $t7, .L7F046618 +/* 07AD00 7F0461D0 00002025 */ move $a0, $zero +/* 07AD04 7F0461D4 44810000 */ mtc1 $at, $f0 +/* 07AD08 7F0461D8 C6280058 */ lwc1 $f8, 0x58($s1) +/* 07AD0C 7F0461DC 3C0144E1 */ li $at, 0x44E10000 # 1800.000000 +/* 07AD10 7F0461E0 44812000 */ mtc1 $at, $f4 +/* 07AD14 7F0461E4 46004180 */ add.s $f6, $f8, $f0 +/* 07AD18 7F0461E8 3058000F */ andi $t8, $v0, 0xf +/* 07AD1C 7F0461EC E7A60564 */ swc1 $f6, 0x564($sp) +/* 07AD20 7F0461F0 C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07AD24 7F0461F4 46045201 */ sub.s $f8, $f10, $f4 +/* 07AD28 7F0461F8 E7A80568 */ swc1 $f8, 0x568($sp) +/* 07AD2C 7F0461FC C6260060 */ lwc1 $f6, 0x60($s1) +/* 07AD30 7F046200 17000005 */ bnez $t8, .L7F046218 +/* 07AD34 7F046204 E7A6056C */ swc1 $f6, 0x56c($sp) +/* 07AD38 7F046208 C7AA056C */ lwc1 $f10, 0x56c($sp) +/* 07AD3C 7F04620C 46005100 */ add.s $f4, $f10, $f0 +/* 07AD40 7F046210 10000004 */ b .L7F046224 +/* 07AD44 7F046214 E7A4056C */ swc1 $f4, 0x56c($sp) +.L7F046218: +/* 07AD48 7F046218 C7A8056C */ lwc1 $f8, 0x56c($sp) +/* 07AD4C 7F04621C 46004181 */ sub.s $f6, $f8, $f0 +/* 07AD50 7F046220 E7A6056C */ swc1 $f6, 0x56c($sp) +.L7F046224: +/* 07AD54 7F046224 8E220010 */ lw $v0, 0x10($s1) +/* 07AD58 7F046228 02002825 */ move $a1, $s0 +/* 07AD5C 7F04622C 24070014 */ li $a3, 20 +/* 07AD60 7F046230 8C460014 */ lw $a2, 0x14($v0) +/* 07AD64 7F046234 2448002C */ addiu $t0, $v0, 0x2c +/* 07AD68 7F046238 AFA80018 */ sw $t0, 0x18($sp) +/* 07AD6C 7F04623C AFA0001C */ sw $zero, 0x1c($sp) +/* 07AD70 7F046240 AFA00014 */ sw $zero, 0x14($sp) +/* 07AD74 7F046244 0FC27094 */ jal sub_GAME_7F09C250 +/* 07AD78 7F046248 AFA00010 */ sw $zero, 0x10($sp) +/* 07AD7C 7F04624C 8E490000 */ lw $t1, ($s2) +/* 07AD80 7F046250 24010028 */ li $at, 40 +/* 07AD84 7F046254 02002025 */ move $a0, $s0 +/* 07AD88 7F046258 0121001A */ div $zero, $t1, $at +/* 07AD8C 7F04625C 00005810 */ mfhi $t3 +/* 07AD90 7F046260 556000EE */ bnezl $t3, .L7F04661C +/* 07AD94 7F046264 8FAD0690 */ lw $t5, 0x690($sp) +/* 07AD98 7F046268 8E220010 */ lw $v0, 0x10($s1) +/* 07AD9C 7F04626C 24190001 */ li $t9, 1 +/* 07ADA0 7F046270 2406000A */ li $a2, 10 +/* 07ADA4 7F046274 8C450014 */ lw $a1, 0x14($v0) +/* 07ADA8 7F046278 AFB90010 */ sw $t9, 0x10($sp) +/* 07ADAC 7F04627C 0FC279C0 */ jal sub_GAME_7F09E700 +/* 07ADB0 7F046280 2447002C */ addiu $a3, $v0, 0x2c +/* 07ADB4 7F046284 100000E5 */ b .L7F04661C +/* 07ADB8 7F046288 8FAD0690 */ lw $t5, 0x690($sp) +/* 07ADBC 7F04628C C6000060 */ lwc1 $f0, 0x60($s0) +.L7F046290: +/* 07ADC0 7F046290 44815000 */ mtc1 $at, $f10 +/* 07ADC4 7F046294 24120001 */ li $s2, 1 +/* 07ADC8 7F046298 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07ADCC 7F04629C 460A003C */ c.lt.s $f0, $f10 +/* 07ADD0 7F0462A0 26040068 */ addiu $a0, $s0, 0x68 +/* 07ADD4 7F0462A4 26050078 */ addiu $a1, $s0, 0x78 +/* 07ADD8 7F0462A8 45020031 */ bc1fl .L7F046370 +/* 07ADDC 7F0462AC C60A0004 */ lwc1 $f10, 4($s0) +/* 07ADE0 7F0462B0 C6020064 */ lwc1 $f2, 0x64($s0) +/* 07ADE4 7F0462B4 C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07ADE8 7F0462B8 3C0A8005 */ lui $t2, %hi(clock_timer) +/* 07ADEC 7F0462BC 3C018005 */ lui $at, %hi(D_80052AB0) +/* 07ADF0 7F0462C0 46041202 */ mul.s $f8, $f2, $f4 +/* 07ADF4 7F0462C4 27B20550 */ addiu $s2, $sp, 0x550 +/* 07ADF8 7F0462C8 46080180 */ add.s $f6, $f0, $f8 +/* 07ADFC 7F0462CC E6060060 */ swc1 $f6, 0x60($s0) +/* 07AE00 7F0462D0 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) +/* 07AE04 7F0462D4 59400005 */ blezl $t2, .L7F0462EC +/* 07AE08 7F0462D8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07AE0C 7F0462DC C42A2AB0 */ lwc1 $f10, %lo(D_80052AB0)($at) +/* 07AE10 7F0462E0 460A1102 */ mul.s $f4, $f2, $f10 +/* 07AE14 7F0462E4 E6040064 */ swc1 $f4, 0x64($s0) +/* 07AE18 7F0462E8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +.L7F0462EC: +/* 07AE1C 7F0462EC 44814000 */ mtc1 $at, $f8 +/* 07AE20 7F0462F0 C6000060 */ lwc1 $f0, 0x60($s0) +/* 07AE24 7F0462F4 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07AE28 7F0462F8 4600403C */ c.lt.s $f8, $f0 +/* 07AE2C 7F0462FC 00000000 */ nop +/* 07AE30 7F046300 45030006 */ bc1tl .L7F04631C +/* 07AE34 7F046304 44813000 */ mtc1 $at, $f6 +/* 07AE38 7F046308 8E0C0000 */ lw $t4, ($s0) +/* 07AE3C 7F04630C 318E0008 */ andi $t6, $t4, 8 +/* 07AE40 7F046310 51C00006 */ beql $t6, $zero, .L7F04632C +/* 07AE44 7F046314 44060000 */ mfc1 $a2, $f0 +/* 07AE48 7F046318 44813000 */ mtc1 $at, $f6 +.L7F04631C: +/* 07AE4C 7F04631C 00000000 */ nop +/* 07AE50 7F046320 E6060060 */ swc1 $f6, 0x60($s0) +/* 07AE54 7F046324 C6000060 */ lwc1 $f0, 0x60($s0) +/* 07AE58 7F046328 44060000 */ mfc1 $a2, $f0 +.L7F04632C: +/* 07AE5C 7F04632C 0FC16E82 */ jal sub_GAME_7F05BA08 +/* 07AE60 7F046330 02403825 */ move $a3, $s2 +/* 07AE64 7F046334 26250018 */ addiu $a1, $s1, 0x18 +/* 07AE68 7F046338 AFA50070 */ sw $a1, 0x70($sp) +/* 07AE6C 7F04633C 0FC16D8A */ jal sub_GAME_7F05B628 +/* 07AE70 7F046340 02402025 */ move $a0, $s2 +/* 07AE74 7F046344 C60C00C0 */ lwc1 $f12, 0xc0($s0) +/* 07AE78 7F046348 0FC1626D */ jal sub_GAME_7F0589B4 +/* 07AE7C 7F04634C 8FA50070 */ lw $a1, 0x70($sp) +/* 07AE80 7F046350 C60C00C4 */ lwc1 $f12, 0xc4($s0) +/* 07AE84 7F046354 0FC16279 */ jal sub_GAME_7F0589E4 +/* 07AE88 7F046358 8FA50070 */ lw $a1, 0x70($sp) +/* 07AE8C 7F04635C C60C00C8 */ lwc1 $f12, 0xc8($s0) +/* 07AE90 7F046360 0FC16293 */ jal sub_GAME_7F058A4C +/* 07AE94 7F046364 8FA50070 */ lw $a1, 0x70($sp) +/* 07AE98 7F046368 00009025 */ move $s2, $zero +/* 07AE9C 7F04636C C60A0004 */ lwc1 $f10, 4($s0) +.L7F046370: +/* 07AEA0 7F046370 460AB032 */ c.eq.s $f22, $f10 +/* 07AEA4 7F046374 00000000 */ nop +/* 07AEA8 7F046378 4502000F */ bc1fl .L7F0463B8 +/* 07AEAC 7F04637C 8E0D0000 */ lw $t5, ($s0) +/* 07AEB0 7F046380 C604000C */ lwc1 $f4, 0xc($s0) +/* 07AEB4 7F046384 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07AEB8 7F046388 4604B032 */ c.eq.s $f22, $f4 +/* 07AEBC 7F04638C 00000000 */ nop +/* 07AEC0 7F046390 45020009 */ bc1fl .L7F0463B8 +/* 07AEC4 7F046394 8E0D0000 */ lw $t5, ($s0) +/* 07AEC8 7F046398 C6080060 */ lwc1 $f8, 0x60($s0) +/* 07AECC 7F04639C 44813000 */ mtc1 $at, $f6 +/* 07AED0 7F0463A0 00000000 */ nop +/* 07AED4 7F0463A4 4606403C */ c.lt.s $f8, $f6 +/* 07AED8 7F0463A8 00000000 */ nop +/* 07AEDC 7F0463AC 45000088 */ bc1f .L7F0465D0 +/* 07AEE0 7F0463B0 00000000 */ nop +/* 07AEE4 7F0463B4 8E0D0000 */ lw $t5, ($s0) +.L7F0463B8: +/* 07AEE8 7F0463B8 02202025 */ move $a0, $s1 +/* 07AEEC 7F0463BC 26380018 */ addiu $t8, $s1, 0x18 +/* 07AEF0 7F0463C0 31AF0008 */ andi $t7, $t5, 8 +/* 07AEF4 7F0463C4 15E00082 */ bnez $t7, .L7F0465D0 +/* 07AEF8 7F0463C8 00000000 */ nop +/* 07AEFC 7F0463CC AFB80070 */ sw $t8, 0x70($sp) +/* 07AF00 7F0463D0 0FC1001E */ jal sub_GAME_7F040078 +/* 07AF04 7F0463D4 00009025 */ move $s2, $zero +/* 07AF08 7F0463D8 3C038005 */ lui $v1, %hi(clock_timer) +/* 07AF0C 7F0463DC 8C638374 */ lw $v1, %lo(clock_timer)($v1) +/* 07AF10 7F0463E0 AFA2054C */ sw $v0, 0x54c($sp) +/* 07AF14 7F0463E4 00002025 */ move $a0, $zero +/* 07AF18 7F0463E8 18600048 */ blez $v1, .L7F04650C +/* 07AF1C 7F0463EC 3C018005 */ lui $at, %hi(D_80052AB4) +/* 07AF20 7F0463F0 C42E2AB4 */ lwc1 $f14, %lo(D_80052AB4)($at) +/* 07AF24 7F0463F4 C7AA0694 */ lwc1 $f10, 0x694($sp) +.L7F0463F8: +/* 07AF28 7F0463F8 C6040004 */ lwc1 $f4, 4($s0) +/* 07AF2C 7F0463FC C7A6069C */ lwc1 $f6, 0x69c($sp) +/* 07AF30 7F046400 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07AF34 7F046404 46045200 */ add.s $f8, $f10, $f4 +/* 07AF38 7F046408 E7A80694 */ swc1 $f8, 0x694($sp) +/* 07AF3C 7F04640C C60A000C */ lwc1 $f10, 0xc($s0) +/* 07AF40 7F046410 460A3100 */ add.s $f4, $f6, $f10 +/* 07AF44 7F046414 44813000 */ mtc1 $at, $f6 +/* 07AF48 7F046418 E7A4069C */ swc1 $f4, 0x69c($sp) +/* 07AF4C 7F04641C C6080060 */ lwc1 $f8, 0x60($s0) +/* 07AF50 7F046420 4608303E */ c.le.s $f6, $f8 +/* 07AF54 7F046424 00000000 */ nop +/* 07AF58 7F046428 45020035 */ bc1fl .L7F046500 +/* 07AF5C 7F04642C 24840001 */ addiu $a0, $a0, 1 +/* 07AF60 7F046430 C60A0094 */ lwc1 $f10, 0x94($s0) +/* 07AF64 7F046434 460AB03C */ c.lt.s $f22, $f10 +/* 07AF68 7F046438 00000000 */ nop +/* 07AF6C 7F04643C 45020027 */ bc1fl .L7F0464DC +/* 07AF70 7F046440 C6060004 */ lwc1 $f6, 4($s0) +/* 07AF74 7F046444 C600000C */ lwc1 $f0, 0xc($s0) +/* 07AF78 7F046448 C6020004 */ lwc1 $f2, 4($s0) +/* 07AF7C 7F04644C AFA40548 */ sw $a0, 0x548($sp) +/* 07AF80 7F046450 46000102 */ mul.s $f4, $f0, $f0 +/* 07AF84 7F046454 00000000 */ nop +/* 07AF88 7F046458 46021202 */ mul.s $f8, $f2, $f2 +/* 07AF8C 7F04645C 0C007DF8 */ jal sqrtf +/* 07AF90 7F046460 46082300 */ add.s $f12, $f4, $f8 +/* 07AF94 7F046464 3C018005 */ lui $at, %hi(D_80052AB8) +/* 07AF98 7F046468 C42E2AB8 */ lwc1 $f14, %lo(D_80052AB8)($at) +/* 07AF9C 7F04646C 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07AFA0 7F046470 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07AFA4 7F046474 C6060094 */ lwc1 $f6, 0x94($s0) +/* 07AFA8 7F046478 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07AFAC 7F04647C 44814000 */ mtc1 $at, $f8 +/* 07AFB0 7F046480 460A3102 */ mul.s $f4, $f6, $f10 +/* 07AFB4 7F046484 8FA40548 */ lw $a0, 0x548($sp) +/* 07AFB8 7F046488 3C038005 */ lui $v1, %hi(clock_timer) +/* 07AFBC 7F04648C 46002303 */ div.s $f12, $f4, $f0 +/* 07AFC0 7F046490 460C403E */ c.le.s $f8, $f12 +/* 07AFC4 7F046494 00000000 */ nop +/* 07AFC8 7F046498 45020005 */ bc1fl .L7F0464B0 +/* 07AFCC 7F04649C C6020004 */ lwc1 $f2, 4($s0) +/* 07AFD0 7F0464A0 E6160004 */ swc1 $f22, 4($s0) +/* 07AFD4 7F0464A4 1000000A */ b .L7F0464D0 +/* 07AFD8 7F0464A8 E616000C */ swc1 $f22, 0xc($s0) +/* 07AFDC 7F0464AC C6020004 */ lwc1 $f2, 4($s0) +.L7F0464B0: +/* 07AFE0 7F0464B0 C600000C */ lwc1 $f0, 0xc($s0) +/* 07AFE4 7F0464B4 460C1182 */ mul.s $f6, $f2, $f12 +/* 07AFE8 7F0464B8 00000000 */ nop +/* 07AFEC 7F0464BC 460C0102 */ mul.s $f4, $f0, $f12 +/* 07AFF0 7F0464C0 46061281 */ sub.s $f10, $f2, $f6 +/* 07AFF4 7F0464C4 46040201 */ sub.s $f8, $f0, $f4 +/* 07AFF8 7F0464C8 E60A0004 */ swc1 $f10, 4($s0) +/* 07AFFC 7F0464CC E608000C */ swc1 $f8, 0xc($s0) +.L7F0464D0: +/* 07B000 7F0464D0 1000000A */ b .L7F0464FC +/* 07B004 7F0464D4 8C638374 */ lw $v1, %lo(clock_timer)($v1) +/* 07B008 7F0464D8 C6060004 */ lwc1 $f6, 4($s0) +.L7F0464DC: +/* 07B00C 7F0464DC C604000C */ lwc1 $f4, 0xc($s0) +/* 07B010 7F0464E0 3C038005 */ lui $v1, %hi(clock_timer) +/* 07B014 7F0464E4 460E3282 */ mul.s $f10, $f6, $f14 +/* 07B018 7F0464E8 00000000 */ nop +/* 07B01C 7F0464EC 460E2202 */ mul.s $f8, $f4, $f14 +/* 07B020 7F0464F0 E60A0004 */ swc1 $f10, 4($s0) +/* 07B024 7F0464F4 E608000C */ swc1 $f8, 0xc($s0) +/* 07B028 7F0464F8 8C638374 */ lw $v1, %lo(clock_timer)($v1) +.L7F0464FC: +/* 07B02C 7F0464FC 24840001 */ addiu $a0, $a0, 1 +.L7F046500: +/* 07B030 7F046500 0083082A */ slt $at, $a0, $v1 +/* 07B034 7F046504 5420FFBC */ bnezl $at, .L7F0463F8 +/* 07B038 7F046508 C7AA0694 */ lwc1 $f10, 0x694($sp) +.L7F04650C: +/* 07B03C 7F04650C 02202025 */ move $a0, $s1 +/* 07B040 7F046510 27A50694 */ addiu $a1, $sp, 0x694 +/* 07B044 7F046514 27A60530 */ addiu $a2, $sp, 0x530 +/* 07B048 7F046518 27A7053C */ addiu $a3, $sp, 0x53c +/* 07B04C 7F04651C AFA00010 */ sw $zero, 0x10($sp) +/* 07B050 7F046520 0FC10BAD */ jal sub_GAME_7F042EB4 +/* 07B054 7F046524 AFA00014 */ sw $zero, 0x14($sp) +/* 07B058 7F046528 24080001 */ li $t0, 1 +/* 07B05C 7F04652C AFA80690 */ sw $t0, 0x690($sp) +/* 07B060 7F046530 8E660010 */ lw $a2, 0x10($s3) +/* 07B064 7F046534 8E650008 */ lw $a1, 8($s3) +/* 07B068 7F046538 0FC2CA5C */ jal sub_GAME_7F0B2970 +/* 07B06C 7F04653C 8E640014 */ lw $a0, 0x14($s3) +/* 07B070 7F046540 46000506 */ mov.s $f20, $f0 +/* 07B074 7F046544 8FA4054C */ lw $a0, 0x54c($sp) +/* 07B078 7F046548 0FC0FA6F */ jal sub_GAME_7F03E9BC +/* 07B07C 7F04654C 8FA50070 */ lw $a1, 0x70($sp) +/* 07B080 7F046550 3C018005 */ lui $at, %hi(D_80052ABC) +/* 07B084 7F046554 C42E2ABC */ lwc1 $f14, %lo(D_80052ABC)($at) +/* 07B088 7F046558 4600A181 */ sub.s $f6, $f20, $f0 +/* 07B08C 7F04655C 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07B090 7F046560 44815000 */ mtc1 $at, $f10 +/* 07B094 7F046564 3C018005 */ lui $at, %hi(D_80052AC0) +/* 07B098 7F046568 460A3300 */ add.s $f12, $f6, $f10 +/* 07B09C 7F04656C E66C000C */ swc1 $f12, 0xc($s3) +/* 07B0A0 7F046570 E62C005C */ swc1 $f12, 0x5c($s1) +/* 07B0A4 7F046574 C6020004 */ lwc1 $f2, 4($s0) +/* 07B0A8 7F046578 460E103C */ c.lt.s $f2, $f14 +/* 07B0AC 7F04657C 00000000 */ nop +/* 07B0B0 7F046580 45000013 */ bc1f .L7F0465D0 +/* 07B0B4 7F046584 00000000 */ nop +/* 07B0B8 7F046588 C4242AC0 */ lwc1 $f4, %lo(D_80052AC0)($at) +/* 07B0BC 7F04658C 4602203C */ c.lt.s $f4, $f2 +/* 07B0C0 7F046590 00000000 */ nop +/* 07B0C4 7F046594 4500000E */ bc1f .L7F0465D0 +/* 07B0C8 7F046598 00000000 */ nop +/* 07B0CC 7F04659C C600000C */ lwc1 $f0, 0xc($s0) +/* 07B0D0 7F0465A0 3C018005 */ lui $at, %hi(D_80052AC4) +/* 07B0D4 7F0465A4 460E003C */ c.lt.s $f0, $f14 +/* 07B0D8 7F0465A8 00000000 */ nop +/* 07B0DC 7F0465AC 45000008 */ bc1f .L7F0465D0 +/* 07B0E0 7F0465B0 00000000 */ nop +/* 07B0E4 7F0465B4 C4282AC4 */ lwc1 $f8, %lo(D_80052AC4)($at) +/* 07B0E8 7F0465B8 4600403C */ c.lt.s $f8, $f0 +/* 07B0EC 7F0465BC 00000000 */ nop +/* 07B0F0 7F0465C0 45000003 */ bc1f .L7F0465D0 +/* 07B0F4 7F0465C4 00000000 */ nop +/* 07B0F8 7F0465C8 E616000C */ swc1 $f22, 0xc($s0) +/* 07B0FC 7F0465CC E6160004 */ swc1 $f22, 4($s0) +.L7F0465D0: +/* 07B100 7F0465D0 16400005 */ bnez $s2, .L7F0465E8 +/* 07B104 7F0465D4 00000000 */ nop +/* 07B108 7F0465D8 8E090000 */ lw $t1, ($s0) +/* 07B10C 7F0465DC 312B0008 */ andi $t3, $t1, 8 +/* 07B110 7F0465E0 5160000E */ beql $t3, $zero, .L7F04661C +/* 07B114 7F0465E4 8FAD0690 */ lw $t5, 0x690($sp) +.L7F0465E8: +/* 07B118 7F0465E8 0FC0FEDC */ jal sub_GAME_7F03FB70 +/* 07B11C 7F0465EC 02002025 */ move $a0, $s0 +/* 07B120 7F0465F0 8E390064 */ lw $t9, 0x64($s1) +/* 07B124 7F0465F4 2401FF7F */ li $at, -129 +/* 07B128 7F0465F8 AE20006C */ sw $zero, 0x6c($s1) +/* 07B12C 7F0465FC 03215024 */ and $t2, $t9, $at +/* 07B130 7F046600 AE2A0064 */ sw $t2, 0x64($s1) +/* 07B134 7F046604 92620001 */ lbu $v0, 1($s3) +/* 07B138 7F046608 304C0008 */ andi $t4, $v0, 8 +/* 07B13C 7F04660C 11800002 */ beqz $t4, .L7F046618 +/* 07B140 7F046610 344E0010 */ ori $t6, $v0, 0x10 +/* 07B144 7F046614 A26E0001 */ sb $t6, 1($s3) +.L7F046618: +/* 07B148 7F046618 8FAD0690 */ lw $t5, 0x690($sp) +.L7F04661C: +/* 07B14C 7F04661C 11A0000B */ beqz $t5, .L7F04664C +/* 07B150 7F046620 262F0058 */ addiu $t7, $s1, 0x58 +/* 07B154 7F046624 AFAF0070 */ sw $t7, 0x70($sp) +/* 07B158 7F046628 0FC10121 */ jal sub_GAME_7F040484 +/* 07B15C 7F04662C 02202025 */ move $a0, $s1 +/* 07B160 7F046630 0FC15B28 */ jal sub_GAME_7F056CA0 +/* 07B164 7F046634 02202025 */ move $a0, $s1 +/* 07B168 7F046638 8E240010 */ lw $a0, 0x10($s1) +/* 07B16C 7F04663C 0FC100AD */ jal sub_GAME_7F0402B4 +/* 07B170 7F046640 2625007C */ addiu $a1, $s1, 0x7c +/* 07B174 7F046644 0FC146F3 */ jal detonate_proxmine_In_range +/* 07B178 7F046648 8FA40070 */ lw $a0, 0x70($sp) +.L7F04664C: +/* 07B17C 7F04664C 92220003 */ lbu $v0, 3($s1) +/* 07B180 7F046650 24010001 */ li $at, 1 +/* 07B184 7F046654 54410052 */ bnel $v0, $at, .L7F0467A0 +/* 07B188 7F046658 24010006 */ li $at, 6 +/* 07B18C 7F04665C 8E700004 */ lw $s0, 4($s3) +/* 07B190 7F046660 3C188005 */ lui $t8, %hi(global_timer) +/* 07B194 7F046664 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07B198 7F046668 E7A6067C */ swc1 $f6, 0x67c($sp) +/* 07B19C 7F04666C 8E0200EC */ lw $v0, 0xec($s0) +/* 07B1A0 7F046670 58400012 */ blezl $v0, .L7F0466BC +/* 07B1A4 7F046674 820C00BC */ lb $t4, 0xbc($s0) +/* 07B1A8 7F046678 8F18837C */ lw $t8, %lo(global_timer)($t8) +/* 07B1AC 7F04667C 8E0800A0 */ lw $t0, 0xa0($s0) +/* 07B1B0 7F046680 03084823 */ subu $t1, $t8, $t0 +/* 07B1B4 7F046684 0049082A */ slt $at, $v0, $t1 +/* 07B1B8 7F046688 5020000C */ beql $at, $zero, .L7F0466BC +/* 07B1BC 7F04668C 820C00BC */ lb $t4, 0xbc($s0) +/* 07B1C0 7F046690 820B00BC */ lb $t3, 0xbc($s0) +/* 07B1C4 7F046694 55600009 */ bnezl $t3, .L7F0466BC +/* 07B1C8 7F046698 820C00BC */ lb $t4, 0xbc($s0) +/* 07B1CC 7F04669C 8E190008 */ lw $t9, 8($s0) +/* 07B1D0 7F0466A0 02002025 */ move $a0, $s0 +/* 07B1D4 7F0466A4 00195000 */ sll $t2, $t9, 0 +/* 07B1D8 7F0466A8 05420004 */ bltzl $t2, .L7F0466BC +/* 07B1DC 7F0466AC 820C00BC */ lb $t4, 0xbc($s0) +/* 07B1E0 7F0466B0 0FC15262 */ jal set_door_state +/* 07B1E4 7F0466B4 24050002 */ li $a1, 2 +/* 07B1E8 7F0466B8 820C00BC */ lb $t4, 0xbc($s0) +.L7F0466BC: +/* 07B1EC 7F0466BC 24010003 */ li $at, 3 +/* 07B1F0 7F0466C0 5581001B */ bnel $t4, $at, .L7F046730 +/* 07B1F4 7F0466C4 960D009A */ lhu $t5, 0x9a($s0) +/* 07B1F8 7F0466C8 8E0200C8 */ lw $v0, 0xc8($s0) +/* 07B1FC 7F0466CC 24030001 */ li $v1, 1 +/* 07B200 7F0466D0 02002025 */ move $a0, $s0 +/* 07B204 7F0466D4 10400011 */ beqz $v0, .L7F04671C +/* 07B208 7F0466D8 00000000 */ nop +/* 07B20C 7F0466DC 1050000F */ beq $v0, $s0, .L7F04671C +/* 07B210 7F0466E0 00000000 */ nop +/* 07B214 7F0466E4 804E00BC */ lb $t6, 0xbc($v0) +.L7F0466E8: +/* 07B218 7F0466E8 55C00007 */ bnezl $t6, .L7F046708 +/* 07B21C 7F0466EC 00001825 */ move $v1, $zero +/* 07B220 7F0466F0 C44A00B4 */ lwc1 $f10, 0xb4($v0) +/* 07B224 7F0466F4 460AB03C */ c.lt.s $f22, $f10 +/* 07B228 7F0466F8 00000000 */ nop +/* 07B22C 7F0466FC 45020003 */ bc1fl .L7F04670C +/* 07B230 7F046700 8C4200C8 */ lw $v0, 0xc8($v0) +/* 07B234 7F046704 00001825 */ move $v1, $zero +.L7F046708: +/* 07B238 7F046708 8C4200C8 */ lw $v0, 0xc8($v0) +.L7F04670C: +/* 07B23C 7F04670C 10400003 */ beqz $v0, .L7F04671C +/* 07B240 7F046710 00000000 */ nop +/* 07B244 7F046714 5450FFF4 */ bnel $v0, $s0, .L7F0466E8 +/* 07B248 7F046718 804E00BC */ lb $t6, 0xbc($v0) +.L7F04671C: +/* 07B24C 7F04671C 50600004 */ beql $v1, $zero, .L7F046730 +/* 07B250 7F046720 960D009A */ lhu $t5, 0x9a($s0) +/* 07B254 7F046724 0FC15229 */ jal sub_GAME_7F0548A4 +/* 07B258 7F046728 24050001 */ li $a1, 1 +/* 07B25C 7F04672C 960D009A */ lhu $t5, 0x9a($s0) +.L7F046730: +/* 07B260 7F046730 24010008 */ li $at, 8 +/* 07B264 7F046734 15A1000B */ bne $t5, $at, .L7F046764 +/* 07B268 7F046738 00000000 */ nop +/* 07B26C 7F04673C 0FC15288 */ jal sub_GAME_7F054A20 +/* 07B270 7F046740 02002025 */ move $a0, $s0 +/* 07B274 7F046744 10400007 */ beqz $v0, .L7F046764 +/* 07B278 7F046748 00000000 */ nop +/* 07B27C 7F04674C 0FC0F9C6 */ jal sub_GAME_7F03E718 +/* 07B280 7F046750 02002025 */ move $a0, $s0 +/* 07B284 7F046754 10400003 */ beqz $v0, .L7F046764 +/* 07B288 7F046758 00000000 */ nop +/* 07B28C 7F04675C 0FC15667 */ jal sub_GAME_7F05599C +/* 07B290 7F046760 02602025 */ move $a0, $s3 +.L7F046764: +/* 07B294 7F046764 3C188005 */ lui $t8, %hi(global_timer) +/* 07B298 7F046768 8F18837C */ lw $t8, %lo(global_timer)($t8) +/* 07B29C 7F04676C 8E0F00FC */ lw $t7, 0xfc($s0) +/* 07B2A0 7F046770 3C088005 */ lui $t0, %hi(clock_timer) +/* 07B2A4 7F046774 01F8082A */ slt $at, $t7, $t8 +/* 07B2A8 7F046778 14200004 */ bnez $at, .L7F04678C +/* 07B2AC 7F04677C 00000000 */ nop +/* 07B2B0 7F046780 8D088374 */ lw $t0, %lo(clock_timer)($t0) +/* 07B2B4 7F046784 550006AA */ bnezl $t0, .L7F048230 +/* 07B2B8 7F046788 92220003 */ lbu $v0, 3($s1) +.L7F04678C: +/* 07B2BC 7F04678C 0FC153ED */ jal sub_GAME_7F054FB4 +/* 07B2C0 7F046790 02002025 */ move $a0, $s0 +/* 07B2C4 7F046794 100006A6 */ b .L7F048230 +/* 07B2C8 7F046798 92220003 */ lbu $v0, 3($s1) +/* 07B2CC 7F04679C 24010006 */ li $at, 6 +.L7F0467A0: +/* 07B2D0 7F0467A0 54410130 */ bnel $v0, $at, .L7F046C64 +/* 07B2D4 7F0467A4 2401000D */ li $at, 13 +/* 07B2D8 7F0467A8 8E290008 */ lw $t1, 8($s1) +/* 07B2DC 7F0467AC 000958C0 */ sll $t3, $t1, 3 +/* 07B2E0 7F0467B0 0562012C */ bltzl $t3, .L7F046C64 +/* 07B2E4 7F0467B4 2401000D */ li $at, 13 +/* 07B2E8 7F0467B8 8E700004 */ lw $s0, 4($s3) +/* 07B2EC 7F0467BC 8E1900D4 */ lw $t9, 0xd4($s0) +/* 07B2F0 7F0467C0 53200004 */ beql $t9, $zero, .L7F0467D4 +/* 07B2F4 7F0467C4 C61200D0 */ lwc1 $f18, 0xd0($s0) +/* 07B2F8 7F0467C8 10000002 */ b .L7F0467D4 +/* 07B2FC 7F0467CC C61200CC */ lwc1 $f18, 0xcc($s0) +/* 07B300 7F0467D0 C61200D0 */ lwc1 $f18, 0xd0($s0) +.L7F0467D4: +/* 07B304 7F0467D4 0FC225E6 */ jal get_curplayer_positiondata +/* 07B308 7F0467D8 E7B20518 */ swc1 $f18, 0x518($sp) +/* 07B30C 7F0467DC AFA20514 */ sw $v0, 0x514($sp) +/* 07B310 7F0467E0 C6280058 */ lwc1 $f8, 0x58($s1) +/* 07B314 7F0467E4 C4440008 */ lwc1 $f4, 8($v0) +/* 07B318 7F0467E8 C60000E8 */ lwc1 $f0, 0xe8($s0) +/* 07B31C 7F0467EC C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07B320 7F0467F0 46082301 */ sub.s $f12, $f4, $f8 +/* 07B324 7F0467F4 C446000C */ lwc1 $f6, 0xc($v0) +/* 07B328 7F0467F8 C6280060 */ lwc1 $f8, 0x60($s1) +/* 07B32C 7F0467FC 4600B03C */ c.lt.s $f22, $f0 +/* 07B330 7F046800 C4440010 */ lwc1 $f4, 0x10($v0) +/* 07B334 7F046804 C7B20518 */ lwc1 $f18, 0x518($sp) +/* 07B338 7F046808 24120001 */ li $s2, 1 +/* 07B33C 7F04680C 460A3081 */ sub.s $f2, $f6, $f10 +/* 07B340 7F046810 4500000E */ bc1f .L7F04684C +/* 07B344 7F046814 46082381 */ sub.s $f14, $f4, $f8 +/* 07B348 7F046818 46000182 */ mul.s $f6, $f0, $f0 +/* 07B34C 7F04681C 00000000 */ nop +/* 07B350 7F046820 460C6282 */ mul.s $f10, $f12, $f12 +/* 07B354 7F046824 00000000 */ nop +/* 07B358 7F046828 46021102 */ mul.s $f4, $f2, $f2 +/* 07B35C 7F04682C 46045200 */ add.s $f8, $f10, $f4 +/* 07B360 7F046830 460E7282 */ mul.s $f10, $f14, $f14 +/* 07B364 7F046834 460A4100 */ add.s $f4, $f8, $f10 +/* 07B368 7F046838 4604303C */ c.lt.s $f6, $f4 +/* 07B36C 7F04683C 00000000 */ nop +/* 07B370 7F046840 45000002 */ bc1f .L7F04684C +/* 07B374 7F046844 00000000 */ nop +/* 07B378 7F046848 00009025 */ move $s2, $zero +.L7F04684C: +/* 07B37C 7F04684C 8E2A0008 */ lw $t2, 8($s1) +/* 07B380 7F046850 000A6080 */ sll $t4, $t2, 2 +/* 07B384 7F046854 05810002 */ bgez $t4, .L7F046860 +/* 07B388 7F046858 00000000 */ nop +/* 07B38C 7F04685C 00009025 */ move $s2, $zero +.L7F046860: +/* 07B390 7F046860 1240003A */ beqz $s2, .L7F04694C +/* 07B394 7F046864 00000000 */ nop +/* 07B398 7F046868 0FC16A8C */ jal convert_angle_using_inverse +/* 07B39C 7F04686C E7B20518 */ swc1 $f18, 0x518($sp) +/* 07B3A0 7F046870 C60200C8 */ lwc1 $f2, 0xc8($s0) +/* 07B3A4 7F046874 C7B20518 */ lwc1 $f18, 0x518($sp) +/* 07B3A8 7F046878 3C018005 */ lui $at, %hi(D_80052ACC) +/* 07B3AC 7F04687C 4616103C */ c.lt.s $f2, $f22 +/* 07B3B0 7F046880 00000000 */ nop +/* 07B3B4 7F046884 45000005 */ bc1f .L7F04689C +/* 07B3B8 7F046888 00000000 */ nop +/* 07B3BC 7F04688C 3C018005 */ lui $at, %hi(D_80052AC8) +/* 07B3C0 7F046890 C4342AC8 */ lwc1 $f20, %lo(D_80052AC8)($at) +/* 07B3C4 7F046894 10000007 */ b .L7F0468B4 +/* 07B3C8 7F046898 46141080 */ add.s $f2, $f2, $f20 +.L7F04689C: +/* 07B3CC 7F04689C C4342ACC */ lwc1 $f20, %lo(D_80052ACC)($at) +/* 07B3D0 7F0468A0 4602A03E */ c.le.s $f20, $f2 +/* 07B3D4 7F0468A4 00000000 */ nop +/* 07B3D8 7F0468A8 45020003 */ bc1fl .L7F0468B8 +/* 07B3DC 7F0468AC C60800C4 */ lwc1 $f8, 0xc4($s0) +/* 07B3E0 7F0468B0 46141081 */ sub.s $f2, $f2, $f20 +.L7F0468B4: +/* 07B3E4 7F0468B4 C60800C4 */ lwc1 $f8, 0xc4($s0) +.L7F0468B8: +/* 07B3E8 7F0468B8 3C018005 */ lui $at, %hi(D_80052AD0) +/* 07B3EC 7F0468BC 46081080 */ add.s $f2, $f2, $f8 +/* 07B3F0 7F0468C0 4602A03E */ c.le.s $f20, $f2 +/* 07B3F4 7F0468C4 00000000 */ nop +/* 07B3F8 7F0468C8 45020003 */ bc1fl .L7F0468D8 +/* 07B3FC 7F0468CC 4602003C */ c.lt.s $f0, $f2 +/* 07B400 7F0468D0 46141081 */ sub.s $f2, $f2, $f20 +/* 07B404 7F0468D4 4602003C */ c.lt.s $f0, $f2 +.L7F0468D8: +/* 07B408 7F0468D8 46020381 */ sub.s $f14, $f0, $f2 +/* 07B40C 7F0468DC 45000002 */ bc1f .L7F0468E8 +/* 07B410 7F0468E0 46007306 */ mov.s $f12, $f14 +/* 07B414 7F0468E4 46147300 */ add.s $f12, $f14, $f20 +.L7F0468E8: +/* 07B418 7F0468E8 C4202AD0 */ lwc1 $f0, %lo(D_80052AD0)($at) +/* 07B41C 7F0468EC 3C018005 */ lui $at, %hi(D_80052AD4) +/* 07B420 7F0468F0 46006301 */ sub.s $f12, $f12, $f0 +/* 07B424 7F0468F4 4616603C */ c.lt.s $f12, $f22 +/* 07B428 7F0468F8 00000000 */ nop +/* 07B42C 7F0468FC 45020003 */ bc1fl .L7F04690C +/* 07B430 7F046900 460C003C */ c.lt.s $f0, $f12 +/* 07B434 7F046904 46146300 */ add.s $f12, $f12, $f20 +/* 07B438 7F046908 460C003C */ c.lt.s $f0, $f12 +.L7F04690C: +/* 07B43C 7F04690C 00000000 */ nop +/* 07B440 7F046910 45000002 */ bc1f .L7F04691C +/* 07B444 7F046914 00000000 */ nop +/* 07B448 7F046918 46146301 */ sub.s $f12, $f12, $f20 +.L7F04691C: +/* 07B44C 7F04691C C42A2AD4 */ lwc1 $f10, %lo(D_80052AD4)($at) +/* 07B450 7F046920 3C018005 */ lui $at, %hi(D_80052AD8) +/* 07B454 7F046924 460C503C */ c.lt.s $f10, $f12 +/* 07B458 7F046928 00000000 */ nop +/* 07B45C 7F04692C 45030007 */ bc1tl .L7F04694C +/* 07B460 7F046930 00009025 */ move $s2, $zero +/* 07B464 7F046934 C4262AD8 */ lwc1 $f6, %lo(D_80052AD8)($at) +/* 07B468 7F046938 4606603C */ c.lt.s $f12, $f6 +/* 07B46C 7F04693C 00000000 */ nop +/* 07B470 7F046940 45000002 */ bc1f .L7F04694C +/* 07B474 7F046944 00000000 */ nop +/* 07B478 7F046948 00009025 */ move $s2, $zero +.L7F04694C: +/* 07B47C 7F04694C 12400034 */ beqz $s2, .L7F046A20 +/* 07B480 7F046950 00002825 */ move $a1, $zero +/* 07B484 7F046954 8E6E0014 */ lw $t6, 0x14($s3) +/* 07B488 7F046958 E7B20518 */ swc1 $f18, 0x518($sp) +/* 07B48C 7F04695C 8FA40514 */ lw $a0, 0x514($sp) +/* 07B490 7F046960 0FC2280F */ jal sub_GAME_7F08A03C +/* 07B494 7F046964 AFAE04F0 */ sw $t6, 0x4f0($sp) +/* 07B498 7F046968 8FA20514 */ lw $v0, 0x514($sp) +/* 07B49C 7F04696C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 07B4A0 7F046970 8E650008 */ lw $a1, 8($s3) +/* 07B4A4 7F046974 C4440010 */ lwc1 $f4, 0x10($v0) +/* 07B4A8 7F046978 8E660010 */ lw $a2, 0x10($s3) +/* 07B4AC 7F04697C 8C470008 */ lw $a3, 8($v0) +/* 07B4B0 7F046980 44814000 */ mtc1 $at, $f8 +/* 07B4B4 7F046984 44815000 */ mtc1 $at, $f10 +/* 07B4B8 7F046988 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B4BC 7F04698C 44813000 */ mtc1 $at, $f6 +/* 07B4C0 7F046990 240D001B */ li $t5, 27 +/* 07B4C4 7F046994 AFAD0014 */ sw $t5, 0x14($sp) +/* 07B4C8 7F046998 E7B60020 */ swc1 $f22, 0x20($sp) +/* 07B4CC 7F04699C 27A404F0 */ addiu $a0, $sp, 0x4f0 +/* 07B4D0 7F0469A0 E7A40010 */ swc1 $f4, 0x10($sp) +/* 07B4D4 7F0469A4 E7A80018 */ swc1 $f8, 0x18($sp) +/* 07B4D8 7F0469A8 E7AA001C */ swc1 $f10, 0x1c($sp) +/* 07B4DC 7F0469AC 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 07B4E0 7F0469B0 E7A60024 */ swc1 $f6, 0x24($sp) +/* 07B4E4 7F0469B4 10400015 */ beqz $v0, .L7F046A0C +/* 07B4E8 7F0469B8 C7B20518 */ lwc1 $f18, 0x518($sp) +/* 07B4EC 7F0469BC 3C188005 */ lui $t8, %hi(clock_timer) +/* 07B4F0 7F0469C0 8F188374 */ lw $t8, %lo(clock_timer)($t8) +/* 07B4F4 7F0469C4 8E0F00E0 */ lw $t7, 0xe0($s0) +/* 07B4F8 7F0469C8 3C014396 */ li $at, 0x43960000 # 300.000000 +/* 07B4FC 7F0469CC 44812000 */ mtc1 $at, $f4 +/* 07B500 7F0469D0 01F84021 */ addu $t0, $t7, $t8 +/* 07B504 7F0469D4 AE0800E0 */ sw $t0, 0xe0($s0) +/* 07B508 7F0469D8 3C018003 */ lui $at, %hi(D_80030B14) +/* 07B50C 7F0469DC C4280B14 */ lwc1 $f8, %lo(D_80030B14)($at) +/* 07B510 7F0469E0 46082282 */ mul.s $f10, $f4, $f8 +/* 07B514 7F0469E4 4600518D */ trunc.w.s $f6, $f10 +/* 07B518 7F0469E8 44193000 */ mfc1 $t9, $f6 +/* 07B51C 7F0469EC 00000000 */ nop +/* 07B520 7F0469F0 0119082A */ slt $at, $t0, $t9 +/* 07B524 7F0469F4 54200006 */ bnezl $at, .L7F046A10 +/* 07B528 7F0469F8 8FA40514 */ lw $a0, 0x514($sp) +/* 07B52C 7F0469FC 0FC15772 */ jal start_alarm +/* 07B530 7F046A00 E7B20518 */ swc1 $f18, 0x518($sp) +/* 07B534 7F046A04 C7B20518 */ lwc1 $f18, 0x518($sp) +/* 07B538 7F046A08 AE0000E0 */ sw $zero, 0xe0($s0) +.L7F046A0C: +/* 07B53C 7F046A0C 8FA40514 */ lw $a0, 0x514($sp) +.L7F046A10: +/* 07B540 7F046A10 24050001 */ li $a1, 1 +/* 07B544 7F046A14 0FC2280F */ jal sub_GAME_7F08A03C +/* 07B548 7F046A18 E7B20518 */ swc1 $f18, 0x518($sp) +/* 07B54C 7F046A1C C7B20518 */ lwc1 $f18, 0x518($sp) +.L7F046A20: +/* 07B550 7F046A20 C60E00C8 */ lwc1 $f14, 0xc8($s0) +/* 07B554 7F046A24 4612703C */ c.lt.s $f14, $f18 +/* 07B558 7F046A28 00000000 */ nop +/* 07B55C 7F046A2C 45020047 */ bc1fl .L7F046B4C +/* 07B560 7F046A30 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B564 7F046A34 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B568 7F046A38 3C018005 */ lui $at, %hi(D_80052AE0) +/* 07B56C 7F046A3C C4302AE0 */ lwc1 $f16, %lo(D_80052AE0)($at) +/* 07B570 7F046A40 46000102 */ mul.s $f4, $f0, $f0 +/* 07B574 7F046A44 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07B578 7F046A48 44814000 */ mtc1 $at, $f8 +/* 07B57C 7F046A4C 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07B580 7F046A50 46082282 */ mul.s $f10, $f4, $f8 +/* 07B584 7F046A54 46105083 */ div.s $f2, $f10, $f16 +/* 07B588 7F046A58 46029181 */ sub.s $f6, $f18, $f2 +/* 07B58C 7F046A5C 460E303E */ c.le.s $f6, $f14 +/* 07B590 7F046A60 00000000 */ nop +/* 07B594 7F046A64 4502000F */ bc1fl .L7F046AA4 +/* 07B598 7F046A68 C60C00DC */ lwc1 $f12, 0xdc($s0) +/* 07B59C 7F046A6C C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07B5A0 7F046A70 46048202 */ mul.s $f8, $f16, $f4 +/* 07B5A4 7F046A74 46080281 */ sub.s $f10, $f0, $f8 +/* 07B5A8 7F046A78 E60A00D8 */ swc1 $f10, 0xd8($s0) +/* 07B5AC 7F046A7C C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B5B0 7F046A80 4610003C */ c.lt.s $f0, $f16 +/* 07B5B4 7F046A84 00000000 */ nop +/* 07B5B8 7F046A88 45000003 */ bc1f .L7F046A98 +/* 07B5BC 7F046A8C 00000000 */ nop +/* 07B5C0 7F046A90 E61000D8 */ swc1 $f16, 0xd8($s0) +/* 07B5C4 7F046A94 C60000D8 */ lwc1 $f0, 0xd8($s0) +.L7F046A98: +/* 07B5C8 7F046A98 1000001D */ b .L7F046B10 +/* 07B5CC 7F046A9C C60E00C8 */ lwc1 $f14, 0xc8($s0) +/* 07B5D0 7F046AA0 C60C00DC */ lwc1 $f12, 0xdc($s0) +.L7F046AA4: +/* 07B5D4 7F046AA4 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07B5D8 7F046AA8 460C003C */ c.lt.s $f0, $f12 +/* 07B5DC 7F046AAC 00000000 */ nop +/* 07B5E0 7F046AB0 45000017 */ bc1f .L7F046B10 +/* 07B5E4 7F046AB4 00000000 */ nop +/* 07B5E8 7F046AB8 C4268378 */ lwc1 $f6, %lo(global_timer_delta)($at) +/* 07B5EC 7F046ABC 46068102 */ mul.s $f4, $f16, $f6 +/* 07B5F0 7F046AC0 46040080 */ add.s $f2, $f0, $f4 +/* 07B5F4 7F046AC4 4602603C */ c.lt.s $f12, $f2 +/* 07B5F8 7F046AC8 00000000 */ nop +/* 07B5FC 7F046ACC 45000002 */ bc1f .L7F046AD8 +/* 07B600 7F046AD0 00000000 */ nop +/* 07B604 7F046AD4 46006086 */ mov.s $f2, $f12 +.L7F046AD8: +/* 07B608 7F046AD8 46021202 */ mul.s $f8, $f2, $f2 +/* 07B60C 7F046ADC 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07B610 7F046AE0 44815000 */ mtc1 $at, $f10 +/* 07B614 7F046AE4 00000000 */ nop +/* 07B618 7F046AE8 460A4182 */ mul.s $f6, $f8, $f10 +/* 07B61C 7F046AEC 46103103 */ div.s $f4, $f6, $f16 +/* 07B620 7F046AF0 46049201 */ sub.s $f8, $f18, $f4 +/* 07B624 7F046AF4 4608703C */ c.lt.s $f14, $f8 +/* 07B628 7F046AF8 00000000 */ nop +/* 07B62C 7F046AFC 45000004 */ bc1f .L7F046B10 +/* 07B630 7F046B00 00000000 */ nop +/* 07B634 7F046B04 E60200D8 */ swc1 $f2, 0xd8($s0) +/* 07B638 7F046B08 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B63C 7F046B0C C60E00C8 */ lwc1 $f14, 0xc8($s0) +.L7F046B10: +/* 07B640 7F046B10 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07B644 7F046B14 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07B648 7F046B18 460A0182 */ mul.s $f6, $f0, $f10 +/* 07B64C 7F046B1C 46067100 */ add.s $f4, $f14, $f6 +/* 07B650 7F046B20 E60400C8 */ swc1 $f4, 0xc8($s0) +/* 07B654 7F046B24 C60800C8 */ lwc1 $f8, 0xc8($s0) +/* 07B658 7F046B28 4608903E */ c.le.s $f18, $f8 +/* 07B65C 7F046B2C 00000000 */ nop +/* 07B660 7F046B30 450205BF */ bc1fl .L7F048230 +/* 07B664 7F046B34 92220003 */ lbu $v0, 3($s1) +/* 07B668 7F046B38 E61200C8 */ swc1 $f18, 0xc8($s0) +/* 07B66C 7F046B3C E61600D8 */ swc1 $f22, 0xd8($s0) +/* 07B670 7F046B40 100005BA */ b .L7F04822C +/* 07B674 7F046B44 AE0000D4 */ sw $zero, 0xd4($s0) +/* 07B678 7F046B48 C60000D8 */ lwc1 $f0, 0xd8($s0) +.L7F046B4C: +/* 07B67C 7F046B4C 3C018005 */ lui $at, %hi(D_80052AE4) +/* 07B680 7F046B50 C4302AE4 */ lwc1 $f16, %lo(D_80052AE4)($at) +/* 07B684 7F046B54 46000282 */ mul.s $f10, $f0, $f0 +/* 07B688 7F046B58 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07B68C 7F046B5C 44813000 */ mtc1 $at, $f6 +/* 07B690 7F046B60 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07B694 7F046B64 240A0001 */ li $t2, 1 +/* 07B698 7F046B68 46065102 */ mul.s $f4, $f10, $f6 +/* 07B69C 7F046B6C 46102083 */ div.s $f2, $f4, $f16 +/* 07B6A0 7F046B70 46029200 */ add.s $f8, $f18, $f2 +/* 07B6A4 7F046B74 4608703E */ c.le.s $f14, $f8 +/* 07B6A8 7F046B78 00000000 */ nop +/* 07B6AC 7F046B7C 4502000F */ bc1fl .L7F046BBC +/* 07B6B0 7F046B80 C60C00DC */ lwc1 $f12, 0xdc($s0) +/* 07B6B4 7F046B84 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07B6B8 7F046B88 460A8182 */ mul.s $f6, $f16, $f10 +/* 07B6BC 7F046B8C 46060101 */ sub.s $f4, $f0, $f6 +/* 07B6C0 7F046B90 E60400D8 */ swc1 $f4, 0xd8($s0) +/* 07B6C4 7F046B94 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B6C8 7F046B98 4610003C */ c.lt.s $f0, $f16 +/* 07B6CC 7F046B9C 00000000 */ nop +/* 07B6D0 7F046BA0 45000003 */ bc1f .L7F046BB0 +/* 07B6D4 7F046BA4 00000000 */ nop +/* 07B6D8 7F046BA8 E61000D8 */ swc1 $f16, 0xd8($s0) +/* 07B6DC 7F046BAC C60000D8 */ lwc1 $f0, 0xd8($s0) +.L7F046BB0: +/* 07B6E0 7F046BB0 1000001D */ b .L7F046C28 +/* 07B6E4 7F046BB4 C60E00C8 */ lwc1 $f14, 0xc8($s0) +/* 07B6E8 7F046BB8 C60C00DC */ lwc1 $f12, 0xdc($s0) +.L7F046BBC: +/* 07B6EC 7F046BBC 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07B6F0 7F046BC0 460C003C */ c.lt.s $f0, $f12 +/* 07B6F4 7F046BC4 00000000 */ nop +/* 07B6F8 7F046BC8 45000017 */ bc1f .L7F046C28 +/* 07B6FC 7F046BCC 00000000 */ nop +/* 07B700 7F046BD0 C4288378 */ lwc1 $f8, %lo(global_timer_delta)($at) +/* 07B704 7F046BD4 46088282 */ mul.s $f10, $f16, $f8 +/* 07B708 7F046BD8 460A0080 */ add.s $f2, $f0, $f10 +/* 07B70C 7F046BDC 4602603C */ c.lt.s $f12, $f2 +/* 07B710 7F046BE0 00000000 */ nop +/* 07B714 7F046BE4 45000002 */ bc1f .L7F046BF0 +/* 07B718 7F046BE8 00000000 */ nop +/* 07B71C 7F046BEC 46006086 */ mov.s $f2, $f12 +.L7F046BF0: +/* 07B720 7F046BF0 46021182 */ mul.s $f6, $f2, $f2 +/* 07B724 7F046BF4 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07B728 7F046BF8 44812000 */ mtc1 $at, $f4 +/* 07B72C 7F046BFC 00000000 */ nop +/* 07B730 7F046C00 46043202 */ mul.s $f8, $f6, $f4 +/* 07B734 7F046C04 46104283 */ div.s $f10, $f8, $f16 +/* 07B738 7F046C08 460A9180 */ add.s $f6, $f18, $f10 +/* 07B73C 7F046C0C 460E303C */ c.lt.s $f6, $f14 +/* 07B740 7F046C10 00000000 */ nop +/* 07B744 7F046C14 45000004 */ bc1f .L7F046C28 +/* 07B748 7F046C18 00000000 */ nop +/* 07B74C 7F046C1C E60200D8 */ swc1 $f2, 0xd8($s0) +/* 07B750 7F046C20 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B754 7F046C24 C60E00C8 */ lwc1 $f14, 0xc8($s0) +.L7F046C28: +/* 07B758 7F046C28 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07B75C 7F046C2C C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07B760 7F046C30 46040202 */ mul.s $f8, $f0, $f4 +/* 07B764 7F046C34 46087281 */ sub.s $f10, $f14, $f8 +/* 07B768 7F046C38 E60A00C8 */ swc1 $f10, 0xc8($s0) +/* 07B76C 7F046C3C C60600C8 */ lwc1 $f6, 0xc8($s0) +/* 07B770 7F046C40 4612303E */ c.le.s $f6, $f18 +/* 07B774 7F046C44 00000000 */ nop +/* 07B778 7F046C48 45020579 */ bc1fl .L7F048230 +/* 07B77C 7F046C4C 92220003 */ lbu $v0, 3($s1) +/* 07B780 7F046C50 E61200C8 */ swc1 $f18, 0xc8($s0) +/* 07B784 7F046C54 E61600D8 */ swc1 $f22, 0xd8($s0) +/* 07B788 7F046C58 10000574 */ b .L7F04822C +/* 07B78C 7F046C5C AE0A00D4 */ sw $t2, 0xd4($s0) +/* 07B790 7F046C60 2401000D */ li $at, 13 +.L7F046C64: +/* 07B794 7F046C64 5441023F */ bnel $v0, $at, .L7F047564 +/* 07B798 7F046C68 24010027 */ li $at, 39 +/* 07B79C 7F046C6C 8E2C0008 */ lw $t4, 8($s1) +/* 07B7A0 7F046C70 000C70C0 */ sll $t6, $t4, 3 +/* 07B7A4 7F046C74 05C2023B */ bltzl $t6, .L7F047564 +/* 07B7A8 7F046C78 24010027 */ li $at, 39 +/* 07B7AC 7F046C7C 0FC225E6 */ jal get_curplayer_positiondata +/* 07B7B0 7F046C80 8E700004 */ lw $s0, 4($s3) +/* 07B7B4 7F046C84 AFA004AC */ sw $zero, 0x4ac($sp) +/* 07B7B8 7F046C88 AFA004A8 */ sw $zero, 0x4a8($sp) +/* 07B7BC 7F046C8C AFA004A4 */ sw $zero, 0x4a4($sp) +/* 07B7C0 7F046C90 8E23000C */ lw $v1, 0xc($s1) +/* 07B7C4 7F046C94 00409025 */ move $s2, $v0 +/* 07B7C8 7F046C98 00036800 */ sll $t5, $v1, 0 +/* 07B7CC 7F046C9C 05A10056 */ bgez $t5, .L7F046DF8 +/* 07B7D0 7F046CA0 00037840 */ sll $t7, $v1, 1 +/* 07B7D4 7F046CA4 05E30008 */ bgezl $t7, .L7F046CC8 +/* 07B7D8 7F046CA8 C6020084 */ lwc1 $f2, 0x84($s0) +/* 07B7DC 7F046CAC C6080090 */ lwc1 $f8, 0x90($s0) +/* 07B7E0 7F046CB0 C604009C */ lwc1 $f4, 0x9c($s0) +/* 07B7E4 7F046CB4 E6080084 */ swc1 $f8, 0x84($s0) +/* 07B7E8 7F046CB8 C6020084 */ lwc1 $f2, 0x84($s0) +/* 07B7EC 7F046CBC 10000036 */ b .L7F046D98 +/* 07B7F0 7F046CC0 E6040098 */ swc1 $f4, 0x98($s0) +/* 07B7F4 7F046CC4 C6020084 */ lwc1 $f2, 0x84($s0) +.L7F046CC8: +/* 07B7F8 7F046CC8 C60A0090 */ lwc1 $f10, 0x90($s0) +/* 07B7FC 7F046CCC 460A1032 */ c.eq.s $f2, $f10 +/* 07B800 7F046CD0 00000000 */ nop +/* 07B804 7F046CD4 45000030 */ bc1f .L7F046D98 +/* 07B808 7F046CD8 00000000 */ nop +/* 07B80C 7F046CDC C6060098 */ lwc1 $f6, 0x98($s0) +/* 07B810 7F046CE0 C604009C */ lwc1 $f4, 0x9c($s0) +/* 07B814 7F046CE4 46043032 */ c.eq.s $f6, $f4 +/* 07B818 7F046CE8 00000000 */ nop +/* 07B81C 7F046CEC 4500002A */ bc1f .L7F046D98 +/* 07B820 7F046CF0 00000000 */ nop +/* 07B824 7F046CF4 0C002914 */ jal get_random_value +/* 07B828 7F046CF8 00000000 */ nop +/* 07B82C 7F046CFC 44824000 */ mtc1 $v0, $f8 +/* 07B830 7F046D00 3C018005 */ lui $at, %hi(D_80052AE8) +/* 07B834 7F046D04 C4342AE8 */ lwc1 $f20, %lo(D_80052AE8)($at) +/* 07B838 7F046D08 04410005 */ bgez $v0, .L7F046D20 +/* 07B83C 7F046D0C 468042A0 */ cvt.s.w $f10, $f8 +/* 07B840 7F046D10 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07B844 7F046D14 44813000 */ mtc1 $at, $f6 +/* 07B848 7F046D18 00000000 */ nop +/* 07B84C 7F046D1C 46065280 */ add.s $f10, $f10, $f6 +.L7F046D20: +/* 07B850 7F046D20 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07B854 7F046D24 44812000 */ mtc1 $at, $f4 +/* 07B858 7F046D28 3C01421C */ li $at, 0x421C0000 # 39.000000 +/* 07B85C 7F046D2C 44813000 */ mtc1 $at, $f6 +/* 07B860 7F046D30 46045202 */ mul.s $f8, $f10, $f4 +/* 07B864 7F046D34 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B868 7F046D38 44812000 */ mtc1 $at, $f4 +/* 07B86C 7F046D3C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07B870 7F046D40 46064282 */ mul.s $f10, $f8, $f6 +/* 07B874 7F046D44 46045200 */ add.s $f8, $f10, $f4 +/* 07B878 7F046D48 44815000 */ mtc1 $at, $f10 +/* 07B87C 7F046D4C 46144182 */ mul.s $f6, $f8, $f20 +/* 07B880 7F046D50 460A3103 */ div.s $f4, $f6, $f10 +/* 07B884 7F046D54 0C002914 */ jal get_random_value +/* 07B888 7F046D58 E6040098 */ swc1 $f4, 0x98($s0) +/* 07B88C 7F046D5C 44824000 */ mtc1 $v0, $f8 +/* 07B890 7F046D60 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07B894 7F046D64 04410004 */ bgez $v0, .L7F046D78 +/* 07B898 7F046D68 468041A0 */ cvt.s.w $f6, $f8 +/* 07B89C 7F046D6C 44815000 */ mtc1 $at, $f10 +/* 07B8A0 7F046D70 00000000 */ nop +/* 07B8A4 7F046D74 460A3180 */ add.s $f6, $f6, $f10 +.L7F046D78: +/* 07B8A8 7F046D78 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07B8AC 7F046D7C 44812000 */ mtc1 $at, $f4 +/* 07B8B0 7F046D80 00000000 */ nop +/* 07B8B4 7F046D84 46043202 */ mul.s $f8, $f6, $f4 +/* 07B8B8 7F046D88 00000000 */ nop +/* 07B8BC 7F046D8C 46144282 */ mul.s $f10, $f8, $f20 +/* 07B8C0 7F046D90 E60A0084 */ swc1 $f10, 0x84($s0) +/* 07B8C4 7F046D94 C6020084 */ lwc1 $f2, 0x84($s0) +.L7F046D98: +/* 07B8C8 7F046D98 3C018005 */ lui $at, %hi(D_80052AEC) +/* 07B8CC 7F046D9C C4202AEC */ lwc1 $f0, %lo(D_80052AEC)($at) +/* 07B8D0 7F046DA0 3C018005 */ lui $at, %hi(D_80052AF4) +/* 07B8D4 7F046DA4 C4262AF4 */ lwc1 $f6, %lo(D_80052AF4)($at) +/* 07B8D8 7F046DA8 44051000 */ mfc1 $a1, $f2 +/* 07B8DC 7F046DAC 44070000 */ mfc1 $a3, $f0 +/* 07B8E0 7F046DB0 26040090 */ addiu $a0, $s0, 0x90 +/* 07B8E4 7F046DB4 26060094 */ addiu $a2, $s0, 0x94 +/* 07B8E8 7F046DB8 E7A00010 */ swc1 $f0, 0x10($sp) +/* 07B8EC 7F046DBC 0FC10C43 */ jal sub_GAME_7F04310C +/* 07B8F0 7F046DC0 E7A60014 */ swc1 $f6, 0x14($sp) +/* 07B8F4 7F046DC4 3C018005 */ lui $at, %hi(D_80052AF8) +/* 07B8F8 7F046DC8 C4202AF8 */ lwc1 $f0, %lo(D_80052AF8)($at) +/* 07B8FC 7F046DCC 3C018005 */ lui $at, %hi(D_80052AFC) +/* 07B900 7F046DD0 C4242AFC */ lwc1 $f4, %lo(D_80052AFC)($at) +/* 07B904 7F046DD4 8E050098 */ lw $a1, 0x98($s0) +/* 07B908 7F046DD8 44070000 */ mfc1 $a3, $f0 +/* 07B90C 7F046DDC 2604009C */ addiu $a0, $s0, 0x9c +/* 07B910 7F046DE0 260600A0 */ addiu $a2, $s0, 0xa0 +/* 07B914 7F046DE4 E7A00010 */ swc1 $f0, 0x10($sp) +/* 07B918 7F046DE8 0FC10C43 */ jal sub_GAME_7F04310C +/* 07B91C 7F046DEC E7A40014 */ swc1 $f4, 0x14($sp) +/* 07B920 7F046DF0 1000050F */ b .L7F048230 +/* 07B924 7F046DF4 92220003 */ lbu $v0, 3($s1) +.L7F046DF8: +/* 07B928 7F046DF8 C6480008 */ lwc1 $f8, 8($s2) +/* 07B92C 7F046DFC C62A0058 */ lwc1 $f10, 0x58($s1) +/* 07B930 7F046E00 C646000C */ lwc1 $f6, 0xc($s2) +/* 07B934 7F046E04 C624005C */ lwc1 $f4, 0x5c($s1) +/* 07B938 7F046E08 460A4001 */ sub.s $f0, $f8, $f10 +/* 07B93C 7F046E0C 3C0141A0 */ li $at, 0x41A00000 # 20.000000 +/* 07B940 7F046E10 44815000 */ mtc1 $at, $f10 +/* 07B944 7F046E14 46043201 */ sub.s $f8, $f6, $f4 +/* 07B948 7F046E18 460A4181 */ sub.s $f6, $f8, $f10 +/* 07B94C 7F046E1C 46000282 */ mul.s $f10, $f0, $f0 +/* 07B950 7F046E20 E7A604C0 */ swc1 $f6, 0x4c0($sp) +/* 07B954 7F046E24 C6280060 */ lwc1 $f8, 0x60($s1) +/* 07B958 7F046E28 C6440010 */ lwc1 $f4, 0x10($s2) +/* 07B95C 7F046E2C E7A004C4 */ swc1 $f0, 0x4c4($sp) +/* 07B960 7F046E30 46082081 */ sub.s $f2, $f4, $f8 +/* 07B964 7F046E34 46021182 */ mul.s $f6, $f2, $f2 +/* 07B968 7F046E38 E7A204BC */ swc1 $f2, 0x4bc($sp) +/* 07B96C 7F046E3C 46065500 */ add.s $f20, $f10, $f6 +/* 07B970 7F046E40 E7B404B8 */ swc1 $f20, 0x4b8($sp) +/* 07B974 7F046E44 0C007DF8 */ jal sqrtf +/* 07B978 7F046E48 4600A306 */ mov.s $f12, $f20 +/* 07B97C 7F046E4C E7A004B0 */ swc1 $f0, 0x4b0($sp) +/* 07B980 7F046E50 8E380008 */ lw $t8, 8($s1) +/* 07B984 7F046E54 46000086 */ mov.s $f2, $f0 +/* 07B988 7F046E58 00184100 */ sll $t0, $t8, 4 +/* 07B98C 7F046E5C 05030008 */ bgezl $t0, .L7F046E80 +/* 07B990 7F046E60 C7AC04B8 */ lwc1 $f12, 0x4b8($sp) +/* 07B994 7F046E64 C7A004C0 */ lwc1 $f0, 0x4c0($sp) +/* 07B998 7F046E68 46000102 */ mul.s $f4, $f0, $f0 +/* 07B99C 7F046E6C 4604A300 */ add.s $f12, $f20, $f4 +/* 07B9A0 7F046E70 0C007DF8 */ jal sqrtf +/* 07B9A4 7F046E74 E7AC04B8 */ swc1 $f12, 0x4b8($sp) +/* 07B9A8 7F046E78 46000086 */ mov.s $f2, $f0 +/* 07B9AC 7F046E7C C7AC04B8 */ lwc1 $f12, 0x4b8($sp) +.L7F046E80: +/* 07B9B0 7F046E80 0FC0B491 */ jal sub_GAME_7F02D244 +/* 07B9B4 7F046E84 E7A204B4 */ swc1 $f2, 0x4b4($sp) +/* 07B9B8 7F046E88 E7A004A0 */ swc1 $f0, 0x4a0($sp) +/* 07B9BC 7F046E8C C6080098 */ lwc1 $f8, 0x98($s0) +/* 07B9C0 7F046E90 C6100084 */ lwc1 $f16, 0x84($s0) +/* 07B9C4 7F046E94 C7A204B4 */ lwc1 $f2, 0x4b4($sp) +/* 07B9C8 7F046E98 E7A804D4 */ swc1 $f8, 0x4d4($sp) +/* 07B9CC 7F046E9C C60A00A8 */ lwc1 $f10, 0xa8($s0) +/* 07B9D0 7F046EA0 460A103E */ c.le.s $f2, $f10 +/* 07B9D4 7F046EA4 00000000 */ nop +/* 07B9D8 7F046EA8 45020096 */ bc1fl .L7F047104 +/* 07B9DC 7F046EAC 8FAC04AC */ lw $t4, 0x4ac($sp) +/* 07B9E0 7F046EB0 C7AC04C4 */ lwc1 $f12, 0x4c4($sp) +/* 07B9E4 7F046EB4 C7AE04BC */ lwc1 $f14, 0x4bc($sp) +/* 07B9E8 7F046EB8 0FC16A8C */ jal convert_angle_using_inverse +/* 07B9EC 7F046EBC E7B004D8 */ swc1 $f16, 0x4d8($sp) +/* 07B9F0 7F046EC0 E7A0049C */ swc1 $f0, 0x49c($sp) +/* 07B9F4 7F046EC4 C7AC04C0 */ lwc1 $f12, 0x4c0($sp) +/* 07B9F8 7F046EC8 0FC16A8C */ jal convert_angle_using_inverse +/* 07B9FC 7F046ECC C7AE04B0 */ lwc1 $f14, 0x4b0($sp) +/* 07BA00 7F046ED0 E7A00498 */ swc1 $f0, 0x498($sp) +/* 07BA04 7F046ED4 8E220008 */ lw $v0, 8($s1) +/* 07BA08 7F046ED8 C7B004D8 */ lwc1 $f16, 0x4d8($sp) +/* 07BA0C 7F046EDC 24190001 */ li $t9, 1 +/* 07BA10 7F046EE0 00025840 */ sll $t3, $v0, 1 +/* 07BA14 7F046EE4 05600003 */ bltz $t3, .L7F046EF4 +/* 07BA18 7F046EE8 00024880 */ sll $t1, $v0, 2 +/* 07BA1C 7F046EEC 05210005 */ bgez $t1, .L7F046F04 +/* 07BA20 7F046EF0 C7A6049C */ lwc1 $f6, 0x49c($sp) +.L7F046EF4: +/* 07BA24 7F046EF4 3C018005 */ lui $at, %hi(D_80052B00) +/* 07BA28 7F046EF8 C4342B00 */ lwc1 $f20, %lo(D_80052B00)($at) +/* 07BA2C 7F046EFC 10000027 */ b .L7F046F9C +/* 07BA30 7F046F00 AFB904AC */ sw $t9, 0x4ac($sp) +.L7F046F04: +/* 07BA34 7F046F04 C6040090 */ lwc1 $f4, 0x90($s0) +/* 07BA38 7F046F08 3C018005 */ lui $at, %hi(D_80052B04) +/* 07BA3C 7F046F0C 46043301 */ sub.s $f12, $f6, $f4 +/* 07BA40 7F046F10 4616603C */ c.lt.s $f12, $f22 +/* 07BA44 7F046F14 00000000 */ nop +/* 07BA48 7F046F18 45000003 */ bc1f .L7F046F28 +/* 07BA4C 7F046F1C 00000000 */ nop +/* 07BA50 7F046F20 C4342B04 */ lwc1 $f20, %lo(D_80052B04)($at) +/* 07BA54 7F046F24 46146300 */ add.s $f12, $f12, $f20 +.L7F046F28: +/* 07BA58 7F046F28 3C018005 */ lui $at, %hi(D_80052B08) +/* 07BA5C 7F046F2C C4342B08 */ lwc1 $f20, %lo(D_80052B08)($at) +/* 07BA60 7F046F30 3C018005 */ lui $at, %hi(D_80052B0C) +/* 07BA64 7F046F34 C4282B0C */ lwc1 $f8, %lo(D_80052B0C)($at) +/* 07BA68 7F046F38 3C018005 */ lui $at, %hi(D_80052B10) +/* 07BA6C 7F046F3C 460C403C */ c.lt.s $f8, $f12 +/* 07BA70 7F046F40 00000000 */ nop +/* 07BA74 7F046F44 45020003 */ bc1fl .L7F046F54 +/* 07BA78 7F046F48 C60A009C */ lwc1 $f10, 0x9c($s0) +/* 07BA7C 7F046F4C 46146301 */ sub.s $f12, $f12, $f20 +/* 07BA80 7F046F50 C60A009C */ lwc1 $f10, 0x9c($s0) +.L7F046F54: +/* 07BA84 7F046F54 460A0081 */ sub.s $f2, $f0, $f10 +/* 07BA88 7F046F58 4616103C */ c.lt.s $f2, $f22 +/* 07BA8C 7F046F5C 00000000 */ nop +/* 07BA90 7F046F60 45000001 */ bc1f .L7F046F68 +/* 07BA94 7F046F64 00000000 */ nop +.L7F046F68: +/* 07BA98 7F046F68 C4262B10 */ lwc1 $f6, %lo(D_80052B10)($at) +/* 07BA9C 7F046F6C 3C018005 */ lui $at, %hi(D_80052B14) +/* 07BAA0 7F046F70 4606603C */ c.lt.s $f12, $f6 +/* 07BAA4 7F046F74 00000000 */ nop +/* 07BAA8 7F046F78 45020009 */ bc1fl .L7F046FA0 +/* 07BAAC 7F046F7C 8FAC04AC */ lw $t4, 0x4ac($sp) +/* 07BAB0 7F046F80 C4242B14 */ lwc1 $f4, %lo(D_80052B14)($at) +/* 07BAB4 7F046F84 240A0001 */ li $t2, 1 +/* 07BAB8 7F046F88 460C203C */ c.lt.s $f4, $f12 +/* 07BABC 7F046F8C 00000000 */ nop +/* 07BAC0 7F046F90 45020003 */ bc1fl .L7F046FA0 +/* 07BAC4 7F046F94 8FAC04AC */ lw $t4, 0x4ac($sp) +/* 07BAC8 7F046F98 AFAA04AC */ sw $t2, 0x4ac($sp) +.L7F046F9C: +/* 07BACC 7F046F9C 8FAC04AC */ lw $t4, 0x4ac($sp) +.L7F046FA0: +/* 07BAD0 7F046FA0 C7A8049C */ lwc1 $f8, 0x49c($sp) +/* 07BAD4 7F046FA4 02402025 */ move $a0, $s2 +/* 07BAD8 7F046FA8 11800055 */ beqz $t4, .L7F047100 +/* 07BADC 7F046FAC 00002825 */ move $a1, $zero +/* 07BAE0 7F046FB0 C60A0084 */ lwc1 $f10, 0x84($s0) +/* 07BAE4 7F046FB4 3C018005 */ lui $at, %hi(D_80052B18) +/* 07BAE8 7F046FB8 C4262B18 */ lwc1 $f6, %lo(D_80052B18)($at) +/* 07BAEC 7F046FBC 460A4001 */ sub.s $f0, $f8, $f10 +/* 07BAF0 7F046FC0 8E6E0014 */ lw $t6, 0x14($s3) +/* 07BAF4 7F046FC4 3C018005 */ lui $at, %hi(D_80052B1C) +/* 07BAF8 7F046FC8 4606003C */ c.lt.s $f0, $f6 +/* 07BAFC 7F046FCC AFAE0490 */ sw $t6, 0x490($sp) +/* 07BB00 7F046FD0 45000003 */ bc1f .L7F046FE0 +/* 07BB04 7F046FD4 00000000 */ nop +/* 07BB08 7F046FD8 10000007 */ b .L7F046FF8 +/* 07BB0C 7F046FDC 46140000 */ add.s $f0, $f0, $f20 +.L7F046FE0: +/* 07BB10 7F046FE0 C4242B1C */ lwc1 $f4, %lo(D_80052B1C)($at) +/* 07BB14 7F046FE4 4600203E */ c.le.s $f4, $f0 +/* 07BB18 7F046FE8 00000000 */ nop +/* 07BB1C 7F046FEC 45020003 */ bc1fl .L7F046FFC +/* 07BB20 7F046FF0 E7A00494 */ swc1 $f0, 0x494($sp) +/* 07BB24 7F046FF4 46140001 */ sub.s $f0, $f0, $f20 +.L7F046FF8: +/* 07BB28 7F046FF8 E7A00494 */ swc1 $f0, 0x494($sp) +.L7F046FFC: +/* 07BB2C 7F046FFC 0FC2280F */ jal sub_GAME_7F08A03C +/* 07BB30 7F047000 E7B004D8 */ swc1 $f16, 0x4d8($sp) +/* 07BB34 7F047004 C7A00494 */ lwc1 $f0, 0x494($sp) +/* 07BB38 7F047008 C6080088 */ lwc1 $f8, 0x88($s0) +/* 07BB3C 7F04700C C7B004D8 */ lwc1 $f16, 0x4d8($sp) +/* 07BB40 7F047010 4608003E */ c.le.s $f0, $f8 +/* 07BB44 7F047014 00000000 */ nop +/* 07BB48 7F047018 45020027 */ bc1fl .L7F0470B8 +/* 07BB4C 7F04701C 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BB50 7F047020 C60A008C */ lwc1 $f10, 0x8c($s0) +/* 07BB54 7F047024 240D001B */ li $t5, 27 +/* 07BB58 7F047028 4600503E */ c.le.s $f10, $f0 +/* 07BB5C 7F04702C 00000000 */ nop +/* 07BB60 7F047030 45020021 */ bc1fl .L7F0470B8 +/* 07BB64 7F047034 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BB68 7F047038 C6460010 */ lwc1 $f6, 0x10($s2) +/* 07BB6C 7F04703C 8E650008 */ lw $a1, 8($s3) +/* 07BB70 7F047040 8E660010 */ lw $a2, 0x10($s3) +/* 07BB74 7F047044 8E470008 */ lw $a3, 8($s2) +/* 07BB78 7F047048 AFAD0014 */ sw $t5, 0x14($sp) +/* 07BB7C 7F04704C E7A60010 */ swc1 $f6, 0x10($sp) +/* 07BB80 7F047050 C660000C */ lwc1 $f0, 0xc($s3) +/* 07BB84 7F047054 27A40490 */ addiu $a0, $sp, 0x490 +/* 07BB88 7F047058 E7A00018 */ swc1 $f0, 0x18($sp) +/* 07BB8C 7F04705C E7A0001C */ swc1 $f0, 0x1c($sp) +/* 07BB90 7F047060 C642000C */ lwc1 $f2, 0xc($s2) +/* 07BB94 7F047064 E7B004D8 */ swc1 $f16, 0x4d8($sp) +/* 07BB98 7F047068 E7A20020 */ swc1 $f2, 0x20($sp) +/* 07BB9C 7F04706C 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 07BBA0 7F047070 E7A20024 */ swc1 $f2, 0x24($sp) +/* 07BBA4 7F047074 1040000F */ beqz $v0, .L7F0470B4 +/* 07BBA8 7F047078 C7B004D8 */ lwc1 $f16, 0x4d8($sp) +/* 07BBAC 7F04707C 8FAF0490 */ lw $t7, 0x490($sp) +/* 07BBB0 7F047080 8E580014 */ lw $t8, 0x14($s2) +/* 07BBB4 7F047084 55F8000C */ bnel $t7, $t8, .L7F0470B8 +/* 07BBB8 7F047088 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BBBC 7F04708C 8E280008 */ lw $t0, 8($s1) +/* 07BBC0 7F047090 3C012000 */ lui $at, 0x2000 +/* 07BBC4 7F047094 24090001 */ li $t1, 1 +/* 07BBC8 7F047098 01015825 */ or $t3, $t0, $at +/* 07BBCC 7F04709C AE2B0008 */ sw $t3, 8($s1) +/* 07BBD0 7F0470A0 C7A40498 */ lwc1 $f4, 0x498($sp) +/* 07BBD4 7F0470A4 AFA904A4 */ sw $t1, 0x4a4($sp) +/* 07BBD8 7F0470A8 C7B0049C */ lwc1 $f16, 0x49c($sp) +/* 07BBDC 7F0470AC 1000000F */ b .L7F0470EC +/* 07BBE0 7F0470B0 E7A404D4 */ swc1 $f4, 0x4d4($sp) +.L7F0470B4: +/* 07BBE4 7F0470B4 8E0200B8 */ lw $v0, 0xb8($s0) +.L7F0470B8: +/* 07BBE8 7F0470B8 3C198005 */ lui $t9, %hi(global_timer) +/* 07BBEC 7F0470BC 0442000B */ bltzl $v0, .L7F0470EC +/* 07BBF0 7F0470C0 AFA004AC */ sw $zero, 0x4ac($sp) +/* 07BBF4 7F0470C4 8F39837C */ lw $t9, %lo(global_timer)($t9) +/* 07BBF8 7F0470C8 272AFF88 */ addiu $t2, $t9, -0x78 +/* 07BBFC 7F0470CC 0142082A */ slt $at, $t2, $v0 +/* 07BC00 7F0470D0 50200006 */ beql $at, $zero, .L7F0470EC +/* 07BC04 7F0470D4 AFA004AC */ sw $zero, 0x4ac($sp) +/* 07BC08 7F0470D8 C608009C */ lwc1 $f8, 0x9c($s0) +/* 07BC0C 7F0470DC C6100090 */ lwc1 $f16, 0x90($s0) +/* 07BC10 7F0470E0 10000002 */ b .L7F0470EC +/* 07BC14 7F0470E4 E7A804D4 */ swc1 $f8, 0x4d4($sp) +/* 07BC18 7F0470E8 AFA004AC */ sw $zero, 0x4ac($sp) +.L7F0470EC: +/* 07BC1C 7F0470EC 02402025 */ move $a0, $s2 +/* 07BC20 7F0470F0 24050001 */ li $a1, 1 +/* 07BC24 7F0470F4 0FC2280F */ jal sub_GAME_7F08A03C +/* 07BC28 7F0470F8 E7B004D8 */ swc1 $f16, 0x4d8($sp) +/* 07BC2C 7F0470FC C7B004D8 */ lwc1 $f16, 0x4d8($sp) +.L7F047100: +/* 07BC30 7F047100 8FAC04AC */ lw $t4, 0x4ac($sp) +.L7F047104: +/* 07BC34 7F047104 3C018005 */ lui $at, %hi(D_80052B20) +/* 07BC38 7F047108 C4342B20 */ lwc1 $f20, %lo(D_80052B20)($at) +/* 07BC3C 7F04710C 51800007 */ beql $t4, $zero, .L7F04712C +/* 07BC40 7F047110 8E0E00D0 */ lw $t6, 0xd0($s0) +/* 07BC44 7F047114 C7AC04B8 */ lwc1 $f12, 0x4b8($sp) +/* 07BC48 7F047118 0FC0B491 */ jal sub_GAME_7F02D244 +/* 07BC4C 7F04711C E7B004D8 */ swc1 $f16, 0x4d8($sp) +/* 07BC50 7F047120 C7B004D8 */ lwc1 $f16, 0x4d8($sp) +/* 07BC54 7F047124 E7A004A0 */ swc1 $f0, 0x4a0($sp) +/* 07BC58 7F047128 8E0E00D0 */ lw $t6, 0xd0($s0) +.L7F04712C: +/* 07BC5C 7F04712C 11C0001F */ beqz $t6, .L7F0471AC +/* 07BC60 7F047130 3C0D8005 */ lui $t5, %hi(global_timer) +/* 07BC64 7F047134 8DAD837C */ lw $t5, %lo(global_timer)($t5) +/* 07BC68 7F047138 24010078 */ li $at, 120 +/* 07BC6C 7F04713C E7B004D8 */ swc1 $f16, 0x4d8($sp) +/* 07BC70 7F047140 01A1001A */ div $zero, $t5, $at +/* 07BC74 7F047144 00007810 */ mfhi $t7 +/* 07BC78 7F047148 448F5000 */ mtc1 $t7, $f10 +/* 07BC7C 7F04714C 3C0142F0 */ li $at, 0x42F00000 # 120.000000 +/* 07BC80 7F047150 44814000 */ mtc1 $at, $f8 +/* 07BC84 7F047154 468051A0 */ cvt.s.w $f6, $f10 +/* 07BC88 7F047158 46143102 */ mul.s $f4, $f6, $f20 +/* 07BC8C 7F04715C 0FC15FAB */ jal sinf +/* 07BC90 7F047160 46082303 */ div.s $f12, $f4, $f8 +/* 07BC94 7F047164 3C018005 */ lui $at, %hi(D_80052B24) +/* 07BC98 7F047168 C4262B24 */ lwc1 $f6, %lo(D_80052B24)($at) +/* 07BC9C 7F04716C C7AA04A0 */ lwc1 $f10, 0x4a0($sp) +/* 07BCA0 7F047170 C7B004D8 */ lwc1 $f16, 0x4d8($sp) +/* 07BCA4 7F047174 46065102 */ mul.s $f4, $f10, $f6 +/* 07BCA8 7F047178 00000000 */ nop +/* 07BCAC 7F04717C 46002202 */ mul.s $f8, $f4, $f0 +/* 07BCB0 7F047180 46088400 */ add.s $f16, $f16, $f8 +/* 07BCB4 7F047184 4616803C */ c.lt.s $f16, $f22 +/* 07BCB8 7F047188 00000000 */ nop +/* 07BCBC 7F04718C 45000002 */ bc1f .L7F047198 +/* 07BCC0 7F047190 00000000 */ nop +/* 07BCC4 7F047194 46148400 */ add.s $f16, $f16, $f20 +.L7F047198: +/* 07BCC8 7F047198 4610A03E */ c.le.s $f20, $f16 +/* 07BCCC 7F04719C 00000000 */ nop +/* 07BCD0 7F0471A0 45020003 */ bc1fl .L7F0471B0 +/* 07BCD4 7F0471A4 C6020084 */ lwc1 $f2, 0x84($s0) +/* 07BCD8 7F0471A8 46148401 */ sub.s $f16, $f16, $f20 +.L7F0471AC: +/* 07BCDC 7F0471AC C6020084 */ lwc1 $f2, 0x84($s0) +.L7F0471B0: +/* 07BCE0 7F0471B0 3C018005 */ lui $at, %hi(D_80052B28) +/* 07BCE4 7F0471B4 C42A2B28 */ lwc1 $f10, %lo(D_80052B28)($at) +/* 07BCE8 7F0471B8 46028001 */ sub.s $f0, $f16, $f2 +/* 07BCEC 7F0471BC 26040090 */ addiu $a0, $s0, 0x90 +/* 07BCF0 7F0471C0 460A003C */ c.lt.s $f0, $f10 +/* 07BCF4 7F0471C4 00000000 */ nop +/* 07BCF8 7F0471C8 45000003 */ bc1f .L7F0471D8 +/* 07BCFC 7F0471CC 00000000 */ nop +/* 07BD00 7F0471D0 10000008 */ b .L7F0471F4 +/* 07BD04 7F0471D4 46140000 */ add.s $f0, $f0, $f20 +.L7F0471D8: +/* 07BD08 7F0471D8 3C018005 */ lui $at, %hi(D_80052B2C) +/* 07BD0C 7F0471DC C4262B2C */ lwc1 $f6, %lo(D_80052B2C)($at) +/* 07BD10 7F0471E0 4600303E */ c.le.s $f6, $f0 +/* 07BD14 7F0471E4 00000000 */ nop +/* 07BD18 7F0471E8 45020003 */ bc1fl .L7F0471F8 +/* 07BD1C 7F0471EC C60C0088 */ lwc1 $f12, 0x88($s0) +/* 07BD20 7F0471F0 46140001 */ sub.s $f0, $f0, $f20 +.L7F0471F4: +/* 07BD24 7F0471F4 C60C0088 */ lwc1 $f12, 0x88($s0) +.L7F0471F8: +/* 07BD28 7F0471F8 3C018005 */ lui $at, %hi(D_80052B30) +/* 07BD2C 7F0471FC 4600603C */ c.lt.s $f12, $f0 +/* 07BD30 7F047200 00000000 */ nop +/* 07BD34 7F047204 45020004 */ bc1fl .L7F047218 +/* 07BD38 7F047208 C60C008C */ lwc1 $f12, 0x8c($s0) +/* 07BD3C 7F04720C 10000007 */ b .L7F04722C +/* 07BD40 7F047210 460C1400 */ add.s $f16, $f2, $f12 +/* 07BD44 7F047214 C60C008C */ lwc1 $f12, 0x8c($s0) +.L7F047218: +/* 07BD48 7F047218 460C003C */ c.lt.s $f0, $f12 +/* 07BD4C 7F04721C 00000000 */ nop +/* 07BD50 7F047220 45020003 */ bc1fl .L7F047230 +/* 07BD54 7F047224 4616803C */ c.lt.s $f16, $f22 +/* 07BD58 7F047228 460C1400 */ add.s $f16, $f2, $f12 +.L7F04722C: +/* 07BD5C 7F04722C 4616803C */ c.lt.s $f16, $f22 +.L7F047230: +/* 07BD60 7F047230 00000000 */ nop +/* 07BD64 7F047234 45020003 */ bc1fl .L7F047244 +/* 07BD68 7F047238 4610A03E */ c.le.s $f20, $f16 +/* 07BD6C 7F04723C 46148400 */ add.s $f16, $f16, $f20 +/* 07BD70 7F047240 4610A03E */ c.le.s $f20, $f16 +.L7F047244: +/* 07BD74 7F047244 00000000 */ nop +/* 07BD78 7F047248 45000002 */ bc1f .L7F047254 +/* 07BD7C 7F04724C 00000000 */ nop +/* 07BD80 7F047250 46148401 */ sub.s $f16, $f16, $f20 +.L7F047254: +/* 07BD84 7F047254 C4202B30 */ lwc1 $f0, %lo(D_80052B30)($at) +/* 07BD88 7F047258 44058000 */ mfc1 $a1, $f16 +/* 07BD8C 7F04725C 26060094 */ addiu $a2, $s0, 0x94 +/* 07BD90 7F047260 E7A00010 */ swc1 $f0, 0x10($sp) +/* 07BD94 7F047264 C60400A4 */ lwc1 $f4, 0xa4($s0) +/* 07BD98 7F047268 44070000 */ mfc1 $a3, $f0 +/* 07BD9C 7F04726C E7B004D8 */ swc1 $f16, 0x4d8($sp) +/* 07BDA0 7F047270 0FC10C43 */ jal sub_GAME_7F04310C +/* 07BDA4 7F047274 E7A40014 */ swc1 $f4, 0x14($sp) +/* 07BDA8 7F047278 3C018005 */ lui $at, %hi(D_80052B34) +/* 07BDAC 7F04727C C4202B34 */ lwc1 $f0, %lo(D_80052B34)($at) +/* 07BDB0 7F047280 2604009C */ addiu $a0, $s0, 0x9c +/* 07BDB4 7F047284 8FA504D4 */ lw $a1, 0x4d4($sp) +/* 07BDB8 7F047288 E7A00010 */ swc1 $f0, 0x10($sp) +/* 07BDBC 7F04728C C60800A4 */ lwc1 $f8, 0xa4($s0) +/* 07BDC0 7F047290 44070000 */ mfc1 $a3, $f0 +/* 07BDC4 7F047294 260600A0 */ addiu $a2, $s0, 0xa0 +/* 07BDC8 7F047298 0FC10C43 */ jal sub_GAME_7F04310C +/* 07BDCC 7F04729C E7A80014 */ swc1 $f8, 0x14($sp) +/* 07BDD0 7F0472A0 C7B004D8 */ lwc1 $f16, 0x4d8($sp) +/* 07BDD4 7F0472A4 C60A0090 */ lwc1 $f10, 0x90($s0) +/* 07BDD8 7F0472A8 3C018005 */ lui $at, %hi(D_80052B38) +/* 07BDDC 7F0472AC C7A604D4 */ lwc1 $f6, 0x4d4($sp) +/* 07BDE0 7F0472B0 460A8301 */ sub.s $f12, $f16, $f10 +/* 07BDE4 7F0472B4 4616603C */ c.lt.s $f12, $f22 +/* 07BDE8 7F0472B8 00000000 */ nop +/* 07BDEC 7F0472BC 45000002 */ bc1f .L7F0472C8 +/* 07BDF0 7F0472C0 00000000 */ nop +/* 07BDF4 7F0472C4 46146300 */ add.s $f12, $f12, $f20 +.L7F0472C8: +/* 07BDF8 7F0472C8 C4202B38 */ lwc1 $f0, %lo(D_80052B38)($at) +/* 07BDFC 7F0472CC 460C003C */ c.lt.s $f0, $f12 +/* 07BE00 7F0472D0 00000000 */ nop +/* 07BE04 7F0472D4 45020003 */ bc1fl .L7F0472E4 +/* 07BE08 7F0472D8 C604009C */ lwc1 $f4, 0x9c($s0) +/* 07BE0C 7F0472DC 46146301 */ sub.s $f12, $f12, $f20 +/* 07BE10 7F0472E0 C604009C */ lwc1 $f4, 0x9c($s0) +.L7F0472E4: +/* 07BE14 7F0472E4 46043081 */ sub.s $f2, $f6, $f4 +/* 07BE18 7F0472E8 4616103C */ c.lt.s $f2, $f22 +/* 07BE1C 7F0472EC 00000000 */ nop +/* 07BE20 7F0472F0 45020003 */ bc1fl .L7F047300 +/* 07BE24 7F0472F4 4602003C */ c.lt.s $f0, $f2 +/* 07BE28 7F0472F8 46141080 */ add.s $f2, $f2, $f20 +/* 07BE2C 7F0472FC 4602003C */ c.lt.s $f0, $f2 +.L7F047300: +/* 07BE30 7F047300 00000000 */ nop +/* 07BE34 7F047304 45020003 */ bc1fl .L7F047314 +/* 07BE38 7F047308 AE0000D0 */ sw $zero, 0xd0($s0) +/* 07BE3C 7F04730C 46141081 */ sub.s $f2, $f2, $f20 +/* 07BE40 7F047310 AE0000D0 */ sw $zero, 0xd0($s0) +.L7F047314: +/* 07BE44 7F047314 8FB804AC */ lw $t8, 0x4ac($sp) +/* 07BE48 7F047318 C7A804A0 */ lwc1 $f8, 0x4a0($sp) +/* 07BE4C 7F04731C 53000047 */ beql $t8, $zero, .L7F04743C +/* 07BE50 7F047320 8FB904A8 */ lw $t9, 0x4a8($sp) +/* 07BE54 7F047324 4608603C */ c.lt.s $f12, $f8 +/* 07BE58 7F047328 C7AA04A0 */ lwc1 $f10, 0x4a0($sp) +/* 07BE5C 7F04732C 4502001B */ bc1fl .L7F04739C +/* 07BE60 7F047330 460A5000 */ add.s $f0, $f10, $f10 +/* 07BE64 7F047334 46004007 */ neg.s $f0, $f8 +/* 07BE68 7F047338 460C003C */ c.lt.s $f0, $f12 +/* 07BE6C 7F04733C 00000000 */ nop +/* 07BE70 7F047340 45020016 */ bc1fl .L7F04739C +/* 07BE74 7F047344 460A5000 */ add.s $f0, $f10, $f10 +/* 07BE78 7F047348 4608103C */ c.lt.s $f2, $f8 +/* 07BE7C 7F04734C 00000000 */ nop +/* 07BE80 7F047350 45020012 */ bc1fl .L7F04739C +/* 07BE84 7F047354 460A5000 */ add.s $f0, $f10, $f10 +/* 07BE88 7F047358 4602003C */ c.lt.s $f0, $f2 +/* 07BE8C 7F04735C 24080001 */ li $t0, 1 +/* 07BE90 7F047360 4502000E */ bc1fl .L7F04739C +/* 07BE94 7F047364 460A5000 */ add.s $f0, $f10, $f10 +/* 07BE98 7F047368 AE0800D0 */ sw $t0, 0xd0($s0) +/* 07BE9C 7F04736C 8FA904A4 */ lw $t1, 0x4a4($sp) +/* 07BEA0 7F047370 240B0001 */ li $t3, 1 +/* 07BEA4 7F047374 AFAB04A8 */ sw $t3, 0x4a8($sp) +/* 07BEA8 7F047378 1120002F */ beqz $t1, .L7F047438 +/* 07BEAC 7F04737C 3C198005 */ lui $t9, %hi(global_timer) +/* 07BEB0 7F047380 8F39837C */ lw $t9, %lo(global_timer)($t9) +/* 07BEB4 7F047384 3C0A8005 */ lui $t2, %hi(global_timer) +/* 07BEB8 7F047388 AE1900B8 */ sw $t9, 0xb8($s0) +/* 07BEBC 7F04738C 8D4A837C */ lw $t2, %lo(global_timer)($t2) +/* 07BEC0 7F047390 10000029 */ b .L7F047438 +/* 07BEC4 7F047394 AE0A00BC */ sw $t2, 0xbc($s0) +/* 07BEC8 7F047398 460A5000 */ add.s $f0, $f10, $f10 +.L7F04739C: +/* 07BECC 7F04739C 4600603C */ c.lt.s $f12, $f0 +/* 07BED0 7F0473A0 00000000 */ nop +/* 07BED4 7F0473A4 45020018 */ bc1fl .L7F047408 +/* 07BED8 7F0473A8 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BEDC 7F0473AC 46000387 */ neg.s $f14, $f0 +/* 07BEE0 7F0473B0 460C703C */ c.lt.s $f14, $f12 +/* 07BEE4 7F0473B4 00000000 */ nop +/* 07BEE8 7F0473B8 45020013 */ bc1fl .L7F047408 +/* 07BEEC 7F0473BC 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BEF0 7F0473C0 4600103C */ c.lt.s $f2, $f0 +/* 07BEF4 7F0473C4 00000000 */ nop +/* 07BEF8 7F0473C8 4502000F */ bc1fl .L7F047408 +/* 07BEFC 7F0473CC 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BF00 7F0473D0 4602703C */ c.lt.s $f14, $f2 +/* 07BF04 7F0473D4 240C0001 */ li $t4, 1 +/* 07BF08 7F0473D8 4502000B */ bc1fl .L7F047408 +/* 07BF0C 7F0473DC 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BF10 7F0473E0 AE0C00D0 */ sw $t4, 0xd0($s0) +/* 07BF14 7F0473E4 8FAD04A4 */ lw $t5, 0x4a4($sp) +/* 07BF18 7F0473E8 240E0001 */ li $t6, 1 +/* 07BF1C 7F0473EC AFAE04A8 */ sw $t6, 0x4a8($sp) +/* 07BF20 7F0473F0 11A00011 */ beqz $t5, .L7F047438 +/* 07BF24 7F0473F4 3C0F8005 */ lui $t7, %hi(global_timer) +/* 07BF28 7F0473F8 8DEF837C */ lw $t7, %lo(global_timer)($t7) +/* 07BF2C 7F0473FC 1000000E */ b .L7F047438 +/* 07BF30 7F047400 AE0F00B8 */ sw $t7, 0xb8($s0) +/* 07BF34 7F047404 8E0200B8 */ lw $v0, 0xb8($s0) +.L7F047408: +/* 07BF38 7F047408 3C188005 */ lui $t8, %hi(global_timer) +/* 07BF3C 7F04740C 0442000B */ bltzl $v0, .L7F04743C +/* 07BF40 7F047410 8FB904A8 */ lw $t9, 0x4a8($sp) +/* 07BF44 7F047414 8F18837C */ lw $t8, %lo(global_timer)($t8) +/* 07BF48 7F047418 240B0001 */ li $t3, 1 +/* 07BF4C 7F04741C 24090001 */ li $t1, 1 +/* 07BF50 7F047420 2708FF88 */ addiu $t0, $t8, -0x78 +/* 07BF54 7F047424 0102082A */ slt $at, $t0, $v0 +/* 07BF58 7F047428 50200004 */ beql $at, $zero, .L7F04743C +/* 07BF5C 7F04742C 8FB904A8 */ lw $t9, 0x4a8($sp) +/* 07BF60 7F047430 AE0B00D0 */ sw $t3, 0xd0($s0) +/* 07BF64 7F047434 AFA904A8 */ sw $t1, 0x4a8($sp) +.L7F047438: +/* 07BF68 7F047438 8FB904A8 */ lw $t9, 0x4a8($sp) +.L7F04743C: +/* 07BF6C 7F04743C 3C018005 */ lui $at, %hi(D_80052B3C) +/* 07BF70 7F047440 53200013 */ beql $t9, $zero, .L7F047490 +/* 07BF74 7F047444 C60200B0 */ lwc1 $f2, 0xb0($s0) +/* 07BF78 7F047448 C4202B3C */ lwc1 $f0, %lo(D_80052B3C)($at) +/* 07BF7C 7F04744C 3C018005 */ lui $at, %hi(D_80052B40) +/* 07BF80 7F047450 C4262B40 */ lwc1 $f6, %lo(D_80052B40)($at) +/* 07BF84 7F047454 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07BF88 7F047458 C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07BF8C 7F04745C C60A00B0 */ lwc1 $f10, 0xb0($s0) +/* 07BF90 7F047460 46043202 */ mul.s $f8, $f6, $f4 +/* 07BF94 7F047464 46085180 */ add.s $f6, $f10, $f8 +/* 07BF98 7F047468 E60600B0 */ swc1 $f6, 0xb0($s0) +/* 07BF9C 7F04746C C60200B0 */ lwc1 $f2, 0xb0($s0) +/* 07BFA0 7F047470 4602003C */ c.lt.s $f0, $f2 +/* 07BFA4 7F047474 00000000 */ nop +/* 07BFA8 7F047478 45020023 */ bc1fl .L7F047508 +/* 07BFAC 7F04747C 4602B03C */ c.lt.s $f22, $f2 +/* 07BFB0 7F047480 E60000B0 */ swc1 $f0, 0xb0($s0) +/* 07BFB4 7F047484 1000001F */ b .L7F047504 +/* 07BFB8 7F047488 C60200B0 */ lwc1 $f2, 0xb0($s0) +/* 07BFBC 7F04748C C60200B0 */ lwc1 $f2, 0xb0($s0) +.L7F047490: +/* 07BFC0 7F047490 3C0A8005 */ lui $t2, %hi(clock_timer) +/* 07BFC4 7F047494 4602B03C */ c.lt.s $f22, $f2 +/* 07BFC8 7F047498 00000000 */ nop +/* 07BFCC 7F04749C 4502001A */ bc1fl .L7F047508 +/* 07BFD0 7F0474A0 4602B03C */ c.lt.s $f22, $f2 +/* 07BFD4 7F0474A4 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) +/* 07BFD8 7F0474A8 00001025 */ move $v0, $zero +/* 07BFDC 7F0474AC 3C018005 */ lui $at, %hi(D_80052B44) +/* 07BFE0 7F0474B0 1940000C */ blez $t2, .L7F0474E4 +/* 07BFE4 7F0474B4 00000000 */ nop +/* 07BFE8 7F0474B8 C4202B44 */ lwc1 $f0, %lo(D_80052B44)($at) +/* 07BFEC 7F0474BC C60400B0 */ lwc1 $f4, 0xb0($s0) +.L7F0474C0: +/* 07BFF0 7F0474C0 3C0C8005 */ lui $t4, %hi(clock_timer) +/* 07BFF4 7F0474C4 24420001 */ addiu $v0, $v0, 1 +/* 07BFF8 7F0474C8 46002282 */ mul.s $f10, $f4, $f0 +/* 07BFFC 7F0474CC E60A00B0 */ swc1 $f10, 0xb0($s0) +/* 07C000 7F0474D0 8D8C8374 */ lw $t4, %lo(clock_timer)($t4) +/* 07C004 7F0474D4 004C082A */ slt $at, $v0, $t4 +/* 07C008 7F0474D8 5420FFF9 */ bnezl $at, .L7F0474C0 +/* 07C00C 7F0474DC C60400B0 */ lwc1 $f4, 0xb0($s0) +/* 07C010 7F0474E0 C60200B0 */ lwc1 $f2, 0xb0($s0) +.L7F0474E4: +/* 07C014 7F0474E4 3C018005 */ lui $at, %hi(D_80052B48) +/* 07C018 7F0474E8 C4282B48 */ lwc1 $f8, %lo(D_80052B48)($at) +/* 07C01C 7F0474EC 4608103E */ c.le.s $f2, $f8 +/* 07C020 7F0474F0 00000000 */ nop +/* 07C024 7F0474F4 45020004 */ bc1fl .L7F047508 +/* 07C028 7F0474F8 4602B03C */ c.lt.s $f22, $f2 +/* 07C02C 7F0474FC E61600B0 */ swc1 $f22, 0xb0($s0) +/* 07C030 7F047500 C60200B0 */ lwc1 $f2, 0xb0($s0) +.L7F047504: +/* 07C034 7F047504 4602B03C */ c.lt.s $f22, $f2 +.L7F047508: +/* 07C038 7F047508 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07C03C 7F04750C 45020348 */ bc1fl .L7F048230 +/* 07C040 7F047510 92220003 */ lbu $v0, 3($s1) +/* 07C044 7F047514 C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07C048 7F047518 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07C04C 7F04751C 46041282 */ mul.s $f10, $f2, $f4 +/* 07C050 7F047520 460A3200 */ add.s $f8, $f6, $f10 +/* 07C054 7F047524 E60800B4 */ swc1 $f8, 0xb4($s0) +/* 07C058 7F047528 C60000B4 */ lwc1 $f0, 0xb4($s0) +/* 07C05C 7F04752C 4600A03E */ c.le.s $f20, $f0 +/* 07C060 7F047530 00000000 */ nop +/* 07C064 7F047534 4502033E */ bc1fl .L7F048230 +/* 07C068 7F047538 92220003 */ lbu $v0, 3($s1) +/* 07C06C 7F04753C 46140101 */ sub.s $f4, $f0, $f20 +.L7F047540: +/* 07C070 7F047540 E60400B4 */ swc1 $f4, 0xb4($s0) +/* 07C074 7F047544 C60000B4 */ lwc1 $f0, 0xb4($s0) +/* 07C078 7F047548 4600A03E */ c.le.s $f20, $f0 +/* 07C07C 7F04754C 00000000 */ nop +/* 07C080 7F047550 4503FFFB */ bc1tl .L7F047540 +/* 07C084 7F047554 46140101 */ sub.s $f4, $f0, $f20 +/* 07C088 7F047558 10000335 */ b .L7F048230 +/* 07C08C 7F04755C 92220003 */ lbu $v0, 3($s1) +/* 07C090 7F047560 24010027 */ li $at, 39 +.L7F047564: +/* 07C094 7F047564 14410255 */ bne $v0, $at, .L7F047EBC +/* 07C098 7F047568 02202025 */ move $a0, $s1 +/* 07C09C 7F04756C C62600A0 */ lwc1 $f6, 0xa0($s1) +/* 07C0A0 7F047570 AFA00478 */ sw $zero, 0x478($sp) +/* 07C0A4 7F047574 24050001 */ li $a1, 1 +/* 07C0A8 7F047578 0FC0D521 */ jal parse_handle_actionblocks +/* 07C0AC 7F04757C E7A6047C */ swc1 $f6, 0x47c($sp) +/* 07C0B0 7F047580 C62E0098 */ lwc1 $f14, 0x98($s1) +/* 07C0B4 7F047584 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07C0B8 7F047588 460EB03E */ c.le.s $f22, $f14 +/* 07C0BC 7F04758C 00000000 */ nop +/* 07C0C0 7F047590 45020016 */ bc1fl .L7F0475EC +/* 07C0C4 7F047594 8E2E000C */ lw $t6, 0xc($s1) +/* 07C0C8 7F047598 C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07C0CC 7F04759C 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07C0D0 7F0475A0 4602703E */ c.le.s $f14, $f2 +/* 07C0D4 7F0475A4 00000000 */ nop +/* 07C0D8 7F0475A8 45020006 */ bc1fl .L7F0475C4 +/* 07C0DC 7F0475AC C6200088 */ lwc1 $f0, 0x88($s1) +/* 07C0E0 7F0475B0 C62A0094 */ lwc1 $f10, 0x94($s1) +/* 07C0E4 7F0475B4 C62E0098 */ lwc1 $f14, 0x98($s1) +/* 07C0E8 7F0475B8 10000008 */ b .L7F0475DC +/* 07C0EC 7F0475BC E62A0088 */ swc1 $f10, 0x88($s1) +/* 07C0F0 7F0475C0 C6200088 */ lwc1 $f0, 0x88($s1) +.L7F0475C4: +/* 07C0F4 7F0475C4 C6280094 */ lwc1 $f8, 0x94($s1) +/* 07C0F8 7F0475C8 46004101 */ sub.s $f4, $f8, $f0 +/* 07C0FC 7F0475CC 46022182 */ mul.s $f6, $f4, $f2 +/* 07C100 7F0475D0 460E3283 */ div.s $f10, $f6, $f14 +/* 07C104 7F0475D4 460A0200 */ add.s $f8, $f0, $f10 +/* 07C108 7F0475D8 E6280088 */ swc1 $f8, 0x88($s1) +.L7F0475DC: +/* 07C10C 7F0475DC C4248378 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07C110 7F0475E0 46047181 */ sub.s $f6, $f14, $f4 +/* 07C114 7F0475E4 E6260098 */ swc1 $f6, 0x98($s1) +/* 07C118 7F0475E8 8E2E000C */ lw $t6, 0xc($s1) +.L7F0475EC: +/* 07C11C 7F0475EC 00008025 */ move $s0, $zero +/* 07C120 7F0475F0 000E6B00 */ sll $t5, $t6, 0xc +/* 07C124 7F0475F4 05A00014 */ bltz $t5, .L7F047648 +/* 07C128 7F0475F8 00000000 */ nop +/* 07C12C 7F0475FC 0FC13BCD */ jal check_if_object_has_not_been_destroyed +/* 07C130 7F047600 02202025 */ move $a0, $s1 +/* 07C134 7F047604 10400010 */ beqz $v0, .L7F047648 +/* 07C138 7F047608 00000000 */ nop +/* 07C13C 7F04760C C62A0088 */ lwc1 $f10, 0x88($s1) +/* 07C140 7F047610 26240058 */ addiu $a0, $s1, 0x58 +/* 07C144 7F047614 3C0544FA */ lui $a1, 0x44fa +/* 07C148 7F047618 460AB03C */ c.lt.s $f22, $f10 +/* 07C14C 7F04761C 3C06453B */ lui $a2, (0x453B8000 >> 16) # lui $a2, 0x453b +/* 07C150 7F047620 45010006 */ bc1t .L7F04763C +/* 07C154 7F047624 00000000 */ nop +/* 07C158 7F047628 C6280094 */ lwc1 $f8, 0x94($s1) +/* 07C15C 7F04762C 4608B03C */ c.lt.s $f22, $f8 +/* 07C160 7F047630 00000000 */ nop +/* 07C164 7F047634 45000004 */ bc1f .L7F047648 +/* 07C168 7F047638 00000000 */ nop +.L7F04763C: +/* 07C16C 7F04763C 0FC14E25 */ jal sub_GAME_7F053894 +/* 07C170 7F047640 34C68000 */ ori $a2, (0x453B8000 & 0xFFFF) # ori $a2, $a2, 0x8000 +/* 07C174 7F047644 00408025 */ move $s0, $v0 +.L7F047648: +/* 07C178 7F047648 5A000019 */ blezl $s0, .L7F0476B0 +/* 07C17C 7F04764C 8E2400AC */ lw $a0, 0xac($s1) +/* 07C180 7F047650 8E2400AC */ lw $a0, 0xac($s1) +/* 07C184 7F047654 10800005 */ beqz $a0, .L7F04766C +/* 07C188 7F047658 00000000 */ nop +/* 07C18C 7F04765C 0C00237C */ jal sfxGetArg0Unk3F +/* 07C190 7F047660 00000000 */ nop +/* 07C194 7F047664 5440000A */ bnezl $v0, .L7F047690 +/* 07C198 7F047668 8E2400AC */ lw $a0, 0xac($s1) +.L7F04766C: +/* 07C19C 7F04766C 0FC2FF01 */ jal get_controls_locked_flag +/* 07C1A0 7F047670 00000000 */ nop +/* 07C1A4 7F047674 14400005 */ bnez $v0, .L7F04768C +/* 07C1A8 7F047678 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07C1AC 7F04767C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07C1B0 7F047680 24050041 */ li $a1, 65 +/* 07C1B4 7F047684 0C002382 */ jal play_sfx_a1 +/* 07C1B8 7F047688 262600AC */ addiu $a2, $s1, 0xac +.L7F04768C: +/* 07C1BC 7F04768C 8E2400AC */ lw $a0, 0xac($s1) +.L7F047690: +/* 07C1C0 7F047690 24050008 */ li $a1, 8 +/* 07C1C4 7F047694 5080000F */ beql $a0, $zero, .L7F0476D4 +/* 07C1C8 7F047698 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C1CC 7F04769C 0C002461 */ jal sfx_c_70009184 +/* 07C1D0 7F0476A0 02003025 */ move $a2, $s0 +/* 07C1D4 7F0476A4 1000000B */ b .L7F0476D4 +/* 07C1D8 7F0476A8 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C1DC 7F0476AC 8E2400AC */ lw $a0, 0xac($s1) +.L7F0476B0: +/* 07C1E0 7F0476B0 50800008 */ beql $a0, $zero, .L7F0476D4 +/* 07C1E4 7F0476B4 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C1E8 7F0476B8 0C00237C */ jal sfxGetArg0Unk3F +/* 07C1EC 7F0476BC 00000000 */ nop +/* 07C1F0 7F0476C0 50400004 */ beql $v0, $zero, .L7F0476D4 +/* 07C1F4 7F0476C4 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C1F8 7F0476C8 0C002408 */ jal sfxDeactivate +/* 07C1FC 7F0476CC 8E2400AC */ lw $a0, 0xac($s1) +/* 07C200 7F0476D0 8E2400A4 */ lw $a0, 0xa4($s1) +.L7F0476D4: +/* 07C204 7F0476D4 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) +/* 07C208 7F0476D8 5080002A */ beql $a0, $zero, .L7F047784 +/* 07C20C 7F0476DC 8E2B0008 */ lw $t3, 8($s1) +/* 07C210 7F0476E0 8E3800A8 */ lw $t8, 0xa8($s1) +/* 07C214 7F0476E4 8C8F0000 */ lw $t7, ($a0) +/* 07C218 7F0476E8 24A55D00 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d00 +/* 07C21C 7F0476EC 00184080 */ sll $t0, $t8, 2 +/* 07C220 7F0476F0 01E81021 */ addu $v0, $t7, $t0 +/* 07C224 7F0476F4 8C4B0000 */ lw $t3, ($v0) +/* 07C228 7F0476F8 8CB90000 */ lw $t9, ($a1) +/* 07C22C 7F0476FC 8CAE0018 */ lw $t6, 0x18($a1) +/* 07C230 7F047700 000B4900 */ sll $t1, $t3, 4 +/* 07C234 7F047704 01391821 */ addu $v1, $t1, $t9 +/* 07C238 7F047708 8C6A0000 */ lw $t2, ($v1) +/* 07C23C 7F04770C C6260058 */ lwc1 $f6, 0x58($s1) +/* 07C240 7F047710 C6280060 */ lwc1 $f8, 0x60($s1) +/* 07C244 7F047714 000A6080 */ sll $t4, $t2, 2 +/* 07C248 7F047718 018A6023 */ subu $t4, $t4, $t2 +/* 07C24C 7F04771C 000C6080 */ sll $t4, $t4, 2 +/* 07C250 7F047720 018A6023 */ subu $t4, $t4, $t2 +/* 07C254 7F047724 000C6080 */ sll $t4, $t4, 2 +/* 07C258 7F047728 018E3021 */ addu $a2, $t4, $t6 +/* 07C25C 7F04772C C4C40000 */ lwc1 $f4, ($a2) +/* 07C260 7F047730 C4CA0008 */ lwc1 $f10, 8($a2) +/* 07C264 7F047734 AFA60478 */ sw $a2, 0x478($sp) +/* 07C268 7F047738 46062301 */ sub.s $f12, $f4, $f6 +/* 07C26C 7F04773C 0FC16A8C */ jal convert_angle_using_inverse +/* 07C270 7F047740 46085381 */ sub.s $f14, $f10, $f8 +/* 07C274 7F047744 E7A0047C */ swc1 $f0, 0x47c($sp) +/* 07C278 7F047748 8E2D0008 */ lw $t5, 8($s1) +/* 07C27C 7F04774C 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff +/* 07C280 7F047750 C7A4047C */ lwc1 $f4, 0x47c($sp) +/* 07C284 7F047754 000DC080 */ sll $t8, $t5, 2 +/* 07C288 7F047758 07010018 */ bgez $t8, .L7F0477BC +/* 07C28C 7F04775C 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 07C290 7F047760 8E2F0008 */ lw $t7, 8($s1) +/* 07C294 7F047764 E62400A0 */ swc1 $f4, 0xa0($s1) +/* 07C298 7F047768 02202025 */ move $a0, $s1 +/* 07C29C 7F04776C 01E14024 */ and $t0, $t7, $at +/* 07C2A0 7F047770 0FC112CE */ jal sub_GAME_7F044B38 +/* 07C2A4 7F047774 AE280008 */ sw $t0, 8($s1) +/* 07C2A8 7F047778 10000011 */ b .L7F0477C0 +/* 07C2AC 7F04777C C6260088 */ lwc1 $f6, 0x88($s1) +/* 07C2B0 7F047780 8E2B0008 */ lw $t3, 8($s1) +.L7F047784: +/* 07C2B4 7F047784 000B4880 */ sll $t1, $t3, 2 +/* 07C2B8 7F047788 0523000D */ bgezl $t1, .L7F0477C0 +/* 07C2BC 7F04778C C6260088 */ lwc1 $f6, 0x88($s1) +/* 07C2C0 7F047790 C62C0038 */ lwc1 $f12, 0x38($s1) +/* 07C2C4 7F047794 0FC16A8C */ jal convert_angle_using_inverse +/* 07C2C8 7F047798 C62E0040 */ lwc1 $f14, 0x40($s1) +/* 07C2CC 7F04779C 8E390008 */ lw $t9, 8($s1) +/* 07C2D0 7F0477A0 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff +/* 07C2D4 7F0477A4 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 07C2D8 7F0477A8 03215024 */ and $t2, $t9, $at +/* 07C2DC 7F0477AC E62000A0 */ swc1 $f0, 0xa0($s1) +/* 07C2E0 7F0477B0 AE2A0008 */ sw $t2, 8($s1) +/* 07C2E4 7F0477B4 0FC112CE */ jal sub_GAME_7F044B38 +/* 07C2E8 7F0477B8 02202025 */ move $a0, $s1 +.L7F0477BC: +/* 07C2EC 7F0477BC C6260088 */ lwc1 $f6, 0x88($s1) +.L7F0477C0: +/* 07C2F0 7F0477C0 4606B03C */ c.lt.s $f22, $f6 +/* 07C2F4 7F0477C4 00000000 */ nop +/* 07C2F8 7F0477C8 450201AC */ bc1fl .L7F047E7C +/* 07C2FC 7F0477CC 8E280008 */ lw $t0, 8($s1) +/* 07C300 7F0477D0 8E6C0014 */ lw $t4, 0x14($s3) +/* 07C304 7F0477D4 8FAE0478 */ lw $t6, 0x478($sp) +/* 07C308 7F0477D8 4600B386 */ mov.s $f14, $f22 +/* 07C30C 7F0477DC AFAC0468 */ sw $t4, 0x468($sp) +/* 07C310 7F0477E0 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C314 7F0477E4 E7AC0438 */ swc1 $f12, 0x438($sp) +/* 07C318 7F0477E8 C62A009C */ lwc1 $f10, 0x9c($s1) +/* 07C31C 7F0477EC 11C00013 */ beqz $t6, .L7F04783C +/* 07C320 7F0477F0 E7AA0434 */ swc1 $f10, 0x434($sp) +/* 07C324 7F0477F4 262D0058 */ addiu $t5, $s1, 0x58 +/* 07C328 7F0477F8 AFAD0070 */ sw $t5, 0x70($sp) +/* 07C32C 7F0477FC 0FC15FAB */ jal sinf +/* 07C330 7F047800 E7AE0430 */ swc1 $f14, 0x430($sp) +/* 07C334 7F047804 E7A0043C */ swc1 $f0, 0x43c($sp) +/* 07C338 7F047808 E7B60440 */ swc1 $f22, 0x440($sp) +/* 07C33C 7F04780C 0FC15FA8 */ jal cosf +/* 07C340 7F047810 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C344 7F047814 E7A00444 */ swc1 $f0, 0x444($sp) +/* 07C348 7F047818 8FA40070 */ lw $a0, 0x70($sp) +/* 07C34C 7F04781C 27A5043C */ addiu $a1, $sp, 0x43c +/* 07C350 7F047820 8FA60478 */ lw $a2, 0x478($sp) +/* 07C354 7F047824 0FC0BF0D */ jal sub_GAME_7F02FC34 +/* 07C358 7F047828 3C074120 */ lui $a3, 0x4120 +/* 07C35C 7F04782C 10400003 */ beqz $v0, .L7F04783C +/* 07C360 7F047830 C7AE0430 */ lwc1 $f14, 0x430($sp) +/* 07C364 7F047834 C62800A0 */ lwc1 $f8, 0xa0($s1) +/* 07C368 7F047838 E7A8047C */ swc1 $f8, 0x47c($sp) +.L7F04783C: +/* 07C36C 7F04783C 3C018005 */ lui $at, %hi(D_80052B4C) +/* 07C370 7F047840 C4242B4C */ lwc1 $f4, %lo(D_80052B4C)($at) +/* 07C374 7F047844 3C018005 */ lui $at, %hi(D_80052B50) +/* 07C378 7F047848 C4262B50 */ lwc1 $f6, %lo(D_80052B50)($at) +/* 07C37C 7F04784C 3C0738E4 */ lui $a3, (0x38E4C389 >> 16) # lui $a3, 0x38e4 +/* 07C380 7F047850 34E7C389 */ ori $a3, (0x38E4C389 & 0xFFFF) # ori $a3, $a3, 0xc389 +/* 07C384 7F047854 262400A0 */ addiu $a0, $s1, 0xa0 +/* 07C388 7F047858 8FA5047C */ lw $a1, 0x47c($sp) +/* 07C38C 7F04785C 2626009C */ addiu $a2, $s1, 0x9c +/* 07C390 7F047860 E7AE0430 */ swc1 $f14, 0x430($sp) +/* 07C394 7F047864 E7A40010 */ swc1 $f4, 0x10($sp) +/* 07C398 7F047868 0FC10C43 */ jal sub_GAME_7F04310C +/* 07C39C 7F04786C E7A60014 */ swc1 $f6, 0x14($sp) +/* 07C3A0 7F047870 3C018005 */ lui $at, %hi(D_80052B54) +/* 07C3A4 7F047874 C4342B54 */ lwc1 $f20, %lo(D_80052B54)($at) +/* 07C3A8 7F047878 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C3AC 7F04787C C7AE0430 */ lwc1 $f14, 0x430($sp) +/* 07C3B0 7F047880 3C018005 */ lui $at, %hi(D_80052B58) +/* 07C3B4 7F047884 460CA03E */ c.le.s $f20, $f12 +/* 07C3B8 7F047888 00000000 */ nop +/* 07C3BC 7F04788C 45020009 */ bc1fl .L7F0478B4 +/* 07C3C0 7F047890 4616603C */ c.lt.s $f12, $f22 +/* 07C3C4 7F047894 46146281 */ sub.s $f10, $f12, $f20 +.L7F047898: +/* 07C3C8 7F047898 E62A00A0 */ swc1 $f10, 0xa0($s1) +/* 07C3CC 7F04789C C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C3D0 7F0478A0 460CA03E */ c.le.s $f20, $f12 +/* 07C3D4 7F0478A4 00000000 */ nop +/* 07C3D8 7F0478A8 4503FFFB */ bc1tl .L7F047898 +/* 07C3DC 7F0478AC 46146281 */ sub.s $f10, $f12, $f20 +/* 07C3E0 7F0478B0 4616603C */ c.lt.s $f12, $f22 +.L7F0478B4: +/* 07C3E4 7F0478B4 00000000 */ nop +/* 07C3E8 7F0478B8 45020009 */ bc1fl .L7F0478E0 +/* 07C3EC 7F0478BC C7A4047C */ lwc1 $f4, 0x47c($sp) +/* 07C3F0 7F0478C0 46146200 */ add.s $f8, $f12, $f20 +.L7F0478C4: +/* 07C3F4 7F0478C4 E62800A0 */ swc1 $f8, 0xa0($s1) +/* 07C3F8 7F0478C8 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C3FC 7F0478CC 4616603C */ c.lt.s $f12, $f22 +/* 07C400 7F0478D0 00000000 */ nop +/* 07C404 7F0478D4 4503FFFB */ bc1tl .L7F0478C4 +/* 07C408 7F0478D8 46146200 */ add.s $f8, $f12, $f20 +/* 07C40C 7F0478DC C7A4047C */ lwc1 $f4, 0x47c($sp) +.L7F0478E0: +/* 07C410 7F0478E0 460C2032 */ c.eq.s $f4, $f12 +/* 07C414 7F0478E4 00000000 */ nop +/* 07C418 7F0478E8 4502000F */ bc1fl .L7F047928 +/* 07C41C 7F0478EC 8E980008 */ lw $t8, 8($s4) +/* 07C420 7F0478F0 C620009C */ lwc1 $f0, 0x9c($s1) +/* 07C424 7F0478F4 C4262B58 */ lwc1 $f6, %lo(D_80052B58)($at) +/* 07C428 7F0478F8 3C018005 */ lui $at, %hi(D_80052B5C) +/* 07C42C 7F0478FC 4606003E */ c.le.s $f0, $f6 +/* 07C430 7F047900 00000000 */ nop +/* 07C434 7F047904 45020008 */ bc1fl .L7F047928 +/* 07C438 7F047908 8E980008 */ lw $t8, 8($s4) +/* 07C43C 7F04790C C42A2B5C */ lwc1 $f10, %lo(D_80052B5C)($at) +/* 07C440 7F047910 4600503E */ c.le.s $f10, $f0 +/* 07C444 7F047914 00000000 */ nop +/* 07C448 7F047918 45020003 */ bc1fl .L7F047928 +/* 07C44C 7F04791C 8E980008 */ lw $t8, 8($s4) +/* 07C450 7F047920 E636009C */ swc1 $f22, 0x9c($s1) +/* 07C454 7F047924 8E980008 */ lw $t8, 8($s4) +.L7F047928: +/* 07C458 7F047928 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07C45C 7F04792C C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07C460 7F047930 8F0F0008 */ lw $t7, 8($t8) +/* 07C464 7F047934 C7A40438 */ lwc1 $f4, 0x438($sp) +/* 07C468 7F047938 4602B03C */ c.lt.s $f22, $f2 +/* 07C46C 7F04793C 8DE8000C */ lw $t0, 0xc($t7) +/* 07C470 7F047940 45000004 */ bc1f .L7F047954 +/* 07C474 7F047944 8D100004 */ lw $s0, 4($t0) +/* 07C478 7F047948 C62800A0 */ lwc1 $f8, 0xa0($s1) +/* 07C47C 7F04794C 46044181 */ sub.s $f6, $f8, $f4 +/* 07C480 7F047950 46023383 */ div.s $f14, $f6, $f2 +.L7F047954: +/* 07C484 7F047954 4616703C */ c.lt.s $f14, $f22 +/* 07C488 7F047958 00000000 */ nop +/* 07C48C 7F04795C 45000002 */ bc1f .L7F047968 +/* 07C490 7F047960 00000000 */ nop +/* 07C494 7F047964 46147380 */ add.s $f14, $f14, $f20 +.L7F047968: +/* 07C498 7F047968 0FC15FAB */ jal sinf +/* 07C49C 7F04796C 46007306 */ mov.s $f12, $f14 +/* 07C4A0 7F047970 C60A0008 */ lwc1 $f10, 8($s0) +/* 07C4A4 7F047974 C6880014 */ lwc1 $f8, 0x14($s4) +/* 07C4A8 7F047978 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07C4AC 7F04797C 46085102 */ mul.s $f4, $f10, $f8 +/* 07C4B0 7F047980 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07C4B4 7F047984 46040182 */ mul.s $f6, $f0, $f4 +/* 07C4B8 7F047988 00000000 */ nop +/* 07C4BC 7F04798C 460A3202 */ mul.s $f8, $f6, $f10 +/* 07C4C0 7F047990 E7A80460 */ swc1 $f8, 0x460($sp) +/* 07C4C4 7F047994 0FC15FAB */ jal sinf +/* 07C4C8 7F047998 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C4CC 7F04799C E7A0043C */ swc1 $f0, 0x43c($sp) +/* 07C4D0 7F0479A0 E7B60440 */ swc1 $f22, 0x440($sp) +/* 07C4D4 7F0479A4 0FC15FA8 */ jal cosf +/* 07C4D8 7F0479A8 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C4DC 7F0479AC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07C4E0 7F0479B0 44817000 */ mtc1 $at, $f14 +/* 07C4E4 7F0479B4 E7A00444 */ swc1 $f0, 0x444($sp) +/* 07C4E8 7F0479B8 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07C4EC 7F0479BC C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07C4F0 7F0479C0 C6240088 */ lwc1 $f4, 0x88($s1) +/* 07C4F4 7F0479C4 C7AA043C */ lwc1 $f10, 0x43c($sp) +/* 07C4F8 7F0479C8 C7AC0460 */ lwc1 $f12, 0x460($sp) +/* 07C4FC 7F0479CC 46022182 */ mul.s $f6, $f4, $f2 +/* 07C500 7F0479D0 C6240058 */ lwc1 $f4, 0x58($s1) +/* 07C504 7F0479D4 27B00468 */ addiu $s0, $sp, 0x468 +/* 07C508 7F0479D8 240B001F */ li $t3, 31 +/* 07C50C 7F0479DC 02002025 */ move $a0, $s0 +/* 07C510 7F0479E0 460A3202 */ mul.s $f8, $f6, $f10 +/* 07C514 7F0479E4 46082180 */ add.s $f6, $f4, $f8 +/* 07C518 7F0479E8 C7A40444 */ lwc1 $f4, 0x444($sp) +/* 07C51C 7F0479EC 460C2202 */ mul.s $f8, $f4, $f12 +/* 07C520 7F0479F0 46083181 */ sub.s $f6, $f6, $f8 +/* 07C524 7F0479F4 E7A60694 */ swc1 $f6, 0x694($sp) +/* 07C528 7F0479F8 C628005C */ lwc1 $f8, 0x5c($s1) +/* 07C52C 7F0479FC 44073000 */ mfc1 $a3, $f6 +/* 07C530 7F047A00 E7A80698 */ swc1 $f8, 0x698($sp) +/* 07C534 7F047A04 C6280088 */ lwc1 $f8, 0x88($s1) +/* 07C538 7F047A08 46024202 */ mul.s $f8, $f8, $f2 +/* 07C53C 7F047A0C 00000000 */ nop +/* 07C540 7F047A10 46044202 */ mul.s $f8, $f8, $f4 +/* 07C544 7F047A14 C6240060 */ lwc1 $f4, 0x60($s1) +/* 07C548 7F047A18 46082100 */ add.s $f4, $f4, $f8 +/* 07C54C 7F047A1C 460C5202 */ mul.s $f8, $f10, $f12 +/* 07C550 7F047A20 46044280 */ add.s $f10, $f8, $f4 +/* 07C554 7F047A24 E7AA069C */ swc1 $f10, 0x69c($sp) +/* 07C558 7F047A28 8E660010 */ lw $a2, 0x10($s3) +/* 07C55C 7F047A2C 8E650008 */ lw $a1, 8($s3) +/* 07C560 7F047A30 E7B60020 */ swc1 $f22, 0x20($sp) +/* 07C564 7F047A34 E7B60018 */ swc1 $f22, 0x18($sp) +/* 07C568 7F047A38 AFAB0014 */ sw $t3, 0x14($sp) +/* 07C56C 7F047A3C E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07C570 7F047A40 E7AE0024 */ swc1 $f14, 0x24($sp) +/* 07C574 7F047A44 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 07C578 7F047A48 E7AE001C */ swc1 $f14, 0x1c($sp) +/* 07C57C 7F047A4C 104000FA */ beqz $v0, .L7F047E38 +/* 07C580 7F047A50 02002025 */ move $a0, $s0 +/* 07C584 7F047A54 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07C588 7F047A58 44814000 */ mtc1 $at, $f8 +/* 07C58C 7F047A5C 2409001F */ li $t1, 31 +/* 07C590 7F047A60 AFA90010 */ sw $t1, 0x10($sp) +/* 07C594 7F047A64 8FA50694 */ lw $a1, 0x694($sp) +/* 07C598 7F047A68 8FA6069C */ lw $a2, 0x69c($sp) +/* 07C59C 7F047A6C 3C074120 */ lui $a3, 0x4120 +/* 07C5A0 7F047A70 E7B60014 */ swc1 $f22, 0x14($sp) +/* 07C5A4 7F047A74 0FC2C62E */ jal sub_GAME_7F0B18B8 +/* 07C5A8 7F047A78 E7A80018 */ swc1 $f8, 0x18($sp) +/* 07C5AC 7F047A7C 044300EF */ bgezl $v0, .L7F047E3C +/* 07C5B0 7F047A80 C6260098 */ lwc1 $f6, 0x98($s1) +/* 07C5B4 7F047A84 8E790014 */ lw $t9, 0x14($s3) +/* 07C5B8 7F047A88 8FAA0468 */ lw $t2, 0x468($sp) +/* 07C5BC 7F047A8C 02202025 */ move $a0, $s1 +/* 07C5C0 7F047A90 AFB9044C */ sw $t9, 0x44c($sp) +/* 07C5C4 7F047A94 C6640008 */ lwc1 $f4, 8($s3) +/* 07C5C8 7F047A98 E7A40450 */ swc1 $f4, 0x450($sp) +/* 07C5CC 7F047A9C C666000C */ lwc1 $f6, 0xc($s3) +/* 07C5D0 7F047AA0 E7A60454 */ swc1 $f6, 0x454($sp) +/* 07C5D4 7F047AA4 C66A0010 */ lwc1 $f10, 0x10($s3) +/* 07C5D8 7F047AA8 E7AA0458 */ swc1 $f10, 0x458($sp) +/* 07C5DC 7F047AAC AE6A0014 */ sw $t2, 0x14($s3) +/* 07C5E0 7F047AB0 C7A20694 */ lwc1 $f2, 0x694($sp) +/* 07C5E4 7F047AB4 E6620008 */ swc1 $f2, 8($s3) +/* 07C5E8 7F047AB8 E6220058 */ swc1 $f2, 0x58($s1) +/* 07C5EC 7F047ABC C7A2069C */ lwc1 $f2, 0x69c($sp) +/* 07C5F0 7F047AC0 E6620010 */ swc1 $f2, 0x10($s3) +/* 07C5F4 7F047AC4 0FC10121 */ jal sub_GAME_7F040484 +/* 07C5F8 7F047AC8 E6220060 */ swc1 $f2, 0x60($s1) +/* 07C5FC 7F047ACC 0FC15B28 */ jal sub_GAME_7F056CA0 +/* 07C600 7F047AD0 02202025 */ move $a0, $s1 +/* 07C604 7F047AD4 0FC1122A */ jal sub_GAME_7F0448A8 +/* 07C608 7F047AD8 02602025 */ move $a0, $s3 +/* 07C60C 7F047ADC 10400092 */ beqz $v0, .L7F047D28 +/* 07C610 7F047AE0 00409025 */ move $s2, $v0 +/* 07C614 7F047AE4 8E8C0008 */ lw $t4, 8($s4) +/* 07C618 7F047AE8 C6280018 */ lwc1 $f8, 0x18($s1) +/* 07C61C 7F047AEC 02002025 */ move $a0, $s0 +/* 07C620 7F047AF0 8D8E0008 */ lw $t6, 8($t4) +/* 07C624 7F047AF4 8DCD0028 */ lw $t5, 0x28($t6) +/* 07C628 7F047AF8 8DA20004 */ lw $v0, 4($t5) +/* 07C62C 7F047AFC C4440004 */ lwc1 $f4, 4($v0) +/* 07C630 7F047B00 46044182 */ mul.s $f6, $f8, $f4 +/* 07C634 7F047B04 E7A60424 */ swc1 $f6, 0x424($sp) +/* 07C638 7F047B08 C62A0020 */ lwc1 $f10, 0x20($s1) +/* 07C63C 7F047B0C C4480004 */ lwc1 $f8, 4($v0) +/* 07C640 7F047B10 46085102 */ mul.s $f4, $f10, $f8 +/* 07C644 7F047B14 E7A4042C */ swc1 $f4, 0x42c($sp) +/* 07C648 7F047B18 C6260018 */ lwc1 $f6, 0x18($s1) +/* 07C64C 7F047B1C C44A0008 */ lwc1 $f10, 8($v0) +/* 07C650 7F047B20 460A3202 */ mul.s $f8, $f6, $f10 +/* 07C654 7F047B24 E7A80418 */ swc1 $f8, 0x418($sp) +/* 07C658 7F047B28 C6240020 */ lwc1 $f4, 0x20($s1) +/* 07C65C 7F047B2C C4460008 */ lwc1 $f6, 8($v0) +/* 07C660 7F047B30 46062282 */ mul.s $f10, $f4, $f6 +/* 07C664 7F047B34 E7AA0420 */ swc1 $f10, 0x420($sp) +/* 07C668 7F047B38 C6280038 */ lwc1 $f8, 0x38($s1) +/* 07C66C 7F047B3C C4440014 */ lwc1 $f4, 0x14($v0) +/* 07C670 7F047B40 46044182 */ mul.s $f6, $f8, $f4 +/* 07C674 7F047B44 E7A6040C */ swc1 $f6, 0x40c($sp) +/* 07C678 7F047B48 C62A0040 */ lwc1 $f10, 0x40($s1) +/* 07C67C 7F047B4C C4480014 */ lwc1 $f8, 0x14($v0) +/* 07C680 7F047B50 46085102 */ mul.s $f4, $f10, $f8 +/* 07C684 7F047B54 E7A40414 */ swc1 $f4, 0x414($sp) +/* 07C688 7F047B58 C6260038 */ lwc1 $f6, 0x38($s1) +/* 07C68C 7F047B5C C44A0018 */ lwc1 $f10, 0x18($v0) +/* 07C690 7F047B60 460A3202 */ mul.s $f8, $f6, $f10 +/* 07C694 7F047B64 E7A80400 */ swc1 $f8, 0x400($sp) +/* 07C698 7F047B68 C6240040 */ lwc1 $f4, 0x40($s1) +/* 07C69C 7F047B6C C4460018 */ lwc1 $f6, 0x18($v0) +/* 07C6A0 7F047B70 C7A8040C */ lwc1 $f8, 0x40c($sp) +/* 07C6A4 7F047B74 46062282 */ mul.s $f10, $f4, $f6 +/* 07C6A8 7F047B78 C7A40424 */ lwc1 $f4, 0x424($sp) +/* 07C6AC 7F047B7C E7AA0408 */ swc1 $f10, 0x408($sp) +/* 07C6B0 7F047B80 8E780014 */ lw $t8, 0x14($s3) +/* 07C6B4 7F047B84 AFB80468 */ sw $t8, 0x468($sp) +/* 07C6B8 7F047B88 C6600008 */ lwc1 $f0, 8($s3) +/* 07C6BC 7F047B8C C6620010 */ lwc1 $f2, 0x10($s3) +/* 07C6C0 7F047B90 46040180 */ add.s $f6, $f0, $f4 +/* 07C6C4 7F047B94 C7A40414 */ lwc1 $f4, 0x414($sp) +/* 07C6C8 7F047B98 44050000 */ mfc1 $a1, $f0 +/* 07C6CC 7F047B9C 44061000 */ mfc1 $a2, $f2 +/* 07C6D0 7F047BA0 46064280 */ add.s $f10, $f8, $f6 +/* 07C6D4 7F047BA4 C7A8042C */ lwc1 $f8, 0x42c($sp) +/* 07C6D8 7F047BA8 46081180 */ add.s $f6, $f2, $f8 +/* 07C6DC 7F047BAC 44075000 */ mfc1 $a3, $f10 +/* 07C6E0 7F047BB0 46062280 */ add.s $f10, $f4, $f6 +/* 07C6E4 7F047BB4 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 07C6E8 7F047BB8 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07C6EC 7F047BBC 10400059 */ beqz $v0, .L7F047D24 +/* 07C6F0 7F047BC0 C7A40424 */ lwc1 $f4, 0x424($sp) +/* 07C6F4 7F047BC4 C6600008 */ lwc1 $f0, 8($s3) +/* 07C6F8 7F047BC8 C7A8040C */ lwc1 $f8, 0x40c($sp) +/* 07C6FC 7F047BCC C6620010 */ lwc1 $f2, 0x10($s3) +/* 07C700 7F047BD0 46040180 */ add.s $f6, $f0, $f4 +/* 07C704 7F047BD4 C7A40414 */ lwc1 $f4, 0x414($sp) +/* 07C708 7F047BD8 02002025 */ move $a0, $s0 +/* 07C70C 7F047BDC 46064280 */ add.s $f10, $f8, $f6 +/* 07C710 7F047BE0 C7A6042C */ lwc1 $f6, 0x42c($sp) +/* 07C714 7F047BE4 44055000 */ mfc1 $a1, $f10 +/* 07C718 7F047BE8 46061280 */ add.s $f10, $f2, $f6 +/* 07C71C 7F047BEC 460A2180 */ add.s $f6, $f4, $f10 +/* 07C720 7F047BF0 C7AA0418 */ lwc1 $f10, 0x418($sp) +/* 07C724 7F047BF4 44063000 */ mfc1 $a2, $f6 +/* 07C728 7F047BF8 460A0180 */ add.s $f6, $f0, $f10 +/* 07C72C 7F047BFC 46064280 */ add.s $f10, $f8, $f6 +/* 07C730 7F047C00 C7A80420 */ lwc1 $f8, 0x420($sp) +/* 07C734 7F047C04 46081180 */ add.s $f6, $f2, $f8 +/* 07C738 7F047C08 44075000 */ mfc1 $a3, $f10 +/* 07C73C 7F047C0C 46062280 */ add.s $f10, $f4, $f6 +/* 07C740 7F047C10 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 07C744 7F047C14 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07C748 7F047C18 10400042 */ beqz $v0, .L7F047D24 +/* 07C74C 7F047C1C C7A40418 */ lwc1 $f4, 0x418($sp) +/* 07C750 7F047C20 C6680008 */ lwc1 $f8, 8($s3) +/* 07C754 7F047C24 C7A6040C */ lwc1 $f6, 0x40c($sp) +/* 07C758 7F047C28 02002025 */ move $a0, $s0 +/* 07C75C 7F047C2C 46044000 */ add.s $f0, $f8, $f4 +/* 07C760 7F047C30 C7A40420 */ lwc1 $f4, 0x420($sp) +/* 07C764 7F047C34 C6680010 */ lwc1 $f8, 0x10($s3) +/* 07C768 7F047C38 46003280 */ add.s $f10, $f6, $f0 +/* 07C76C 7F047C3C C7A60414 */ lwc1 $f6, 0x414($sp) +/* 07C770 7F047C40 46044080 */ add.s $f2, $f8, $f4 +/* 07C774 7F047C44 44055000 */ mfc1 $a1, $f10 +/* 07C778 7F047C48 C7A80400 */ lwc1 $f8, 0x400($sp) +/* 07C77C 7F047C4C 46023280 */ add.s $f10, $f6, $f2 +/* 07C780 7F047C50 C7A60408 */ lwc1 $f6, 0x408($sp) +/* 07C784 7F047C54 46004100 */ add.s $f4, $f8, $f0 +/* 07C788 7F047C58 44065000 */ mfc1 $a2, $f10 +/* 07C78C 7F047C5C 46023280 */ add.s $f10, $f6, $f2 +/* 07C790 7F047C60 44072000 */ mfc1 $a3, $f4 +/* 07C794 7F047C64 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 07C798 7F047C68 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07C79C 7F047C6C 1040002D */ beqz $v0, .L7F047D24 +/* 07C7A0 7F047C70 C7A40418 */ lwc1 $f4, 0x418($sp) +/* 07C7A4 7F047C74 C6600008 */ lwc1 $f0, 8($s3) +/* 07C7A8 7F047C78 C7A80400 */ lwc1 $f8, 0x400($sp) +/* 07C7AC 7F047C7C C6620010 */ lwc1 $f2, 0x10($s3) +/* 07C7B0 7F047C80 46040180 */ add.s $f6, $f0, $f4 +/* 07C7B4 7F047C84 C7A40408 */ lwc1 $f4, 0x408($sp) +/* 07C7B8 7F047C88 02002025 */ move $a0, $s0 +/* 07C7BC 7F047C8C 46064280 */ add.s $f10, $f8, $f6 +/* 07C7C0 7F047C90 C7A60420 */ lwc1 $f6, 0x420($sp) +/* 07C7C4 7F047C94 44055000 */ mfc1 $a1, $f10 +/* 07C7C8 7F047C98 46061280 */ add.s $f10, $f2, $f6 +/* 07C7CC 7F047C9C 460A2180 */ add.s $f6, $f4, $f10 +/* 07C7D0 7F047CA0 C7AA0424 */ lwc1 $f10, 0x424($sp) +/* 07C7D4 7F047CA4 44063000 */ mfc1 $a2, $f6 +/* 07C7D8 7F047CA8 460A0180 */ add.s $f6, $f0, $f10 +/* 07C7DC 7F047CAC 46064280 */ add.s $f10, $f8, $f6 +/* 07C7E0 7F047CB0 C7A8042C */ lwc1 $f8, 0x42c($sp) +/* 07C7E4 7F047CB4 46081180 */ add.s $f6, $f2, $f8 +/* 07C7E8 7F047CB8 44075000 */ mfc1 $a3, $f10 +/* 07C7EC 7F047CBC 46062280 */ add.s $f10, $f4, $f6 +/* 07C7F0 7F047CC0 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 07C7F4 7F047CC4 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07C7F8 7F047CC8 10400016 */ beqz $v0, .L7F047D24 +/* 07C7FC 7F047CCC C7A40424 */ lwc1 $f4, 0x424($sp) +/* 07C800 7F047CD0 C6680008 */ lwc1 $f8, 8($s3) +/* 07C804 7F047CD4 C7A60400 */ lwc1 $f6, 0x400($sp) +/* 07C808 7F047CD8 02002025 */ move $a0, $s0 +/* 07C80C 7F047CDC 46044000 */ add.s $f0, $f8, $f4 +/* 07C810 7F047CE0 C7A4042C */ lwc1 $f4, 0x42c($sp) +/* 07C814 7F047CE4 C6680010 */ lwc1 $f8, 0x10($s3) +/* 07C818 7F047CE8 46003280 */ add.s $f10, $f6, $f0 +/* 07C81C 7F047CEC C7A60408 */ lwc1 $f6, 0x408($sp) +/* 07C820 7F047CF0 46044080 */ add.s $f2, $f8, $f4 +/* 07C824 7F047CF4 44055000 */ mfc1 $a1, $f10 +/* 07C828 7F047CF8 C7A8040C */ lwc1 $f8, 0x40c($sp) +/* 07C82C 7F047CFC 46023280 */ add.s $f10, $f6, $f2 +/* 07C830 7F047D00 C7A60414 */ lwc1 $f6, 0x414($sp) +/* 07C834 7F047D04 46004100 */ add.s $f4, $f8, $f0 +/* 07C838 7F047D08 44065000 */ mfc1 $a2, $f10 +/* 07C83C 7F047D0C 46023280 */ add.s $f10, $f6, $f2 +/* 07C840 7F047D10 44072000 */ mfc1 $a3, $f4 +/* 07C844 7F047D14 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 07C848 7F047D18 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07C84C 7F047D1C 14400002 */ bnez $v0, .L7F047D28 +/* 07C850 7F047D20 00000000 */ nop +.L7F047D24: +/* 07C854 7F047D24 00009025 */ move $s2, $zero +.L7F047D28: +/* 07C858 7F047D28 12400023 */ beqz $s2, .L7F047DB8 +/* 07C85C 7F047D2C 02202025 */ move $a0, $s1 +/* 07C860 7F047D30 262F0058 */ addiu $t7, $s1, 0x58 +/* 07C864 7F047D34 AFAF0070 */ sw $t7, 0x70($sp) +/* 07C868 7F047D38 0FC112CE */ jal sub_GAME_7F044B38 +/* 07C86C 7F047D3C 2630007C */ addiu $s0, $s1, 0x7c +/* 07C870 7F047D40 02602025 */ move $a0, $s3 +/* 07C874 7F047D44 0FC100AD */ jal sub_GAME_7F0402B4 +/* 07C878 7F047D48 02002825 */ move $a1, $s0 +/* 07C87C 7F047D4C 0FC146F3 */ jal detonate_proxmine_In_range +/* 07C880 7F047D50 8FA40070 */ lw $a0, 0x70($sp) +/* 07C884 7F047D54 8FA80478 */ lw $t0, 0x478($sp) +/* 07C888 7F047D58 27A40450 */ addiu $a0, $sp, 0x450 +/* 07C88C 7F047D5C 27A50694 */ addiu $a1, $sp, 0x694 +/* 07C890 7F047D60 11000054 */ beqz $t0, .L7F047EB4 +/* 07C894 7F047D64 01003025 */ move $a2, $t0 +/* 07C898 7F047D68 0FC0BF54 */ jal sub_GAME_7F02FD50 +/* 07C89C 7F047D6C 3C0742C8 */ lui $a3, 0x42c8 +/* 07C8A0 7F047D70 10400050 */ beqz $v0, .L7F047EB4 +/* 07C8A4 7F047D74 00000000 */ nop +/* 07C8A8 7F047D78 8E2B00A8 */ lw $t3, 0xa8($s1) +/* 07C8AC 7F047D7C 8E3900A4 */ lw $t9, 0xa4($s1) +/* 07C8B0 7F047D80 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 07C8B4 7F047D84 25690001 */ addiu $t1, $t3, 1 +/* 07C8B8 7F047D88 AE2900A8 */ sw $t1, 0xa8($s1) +/* 07C8BC 7F047D8C 8F2A0000 */ lw $t2, ($t9) +/* 07C8C0 7F047D90 00097080 */ sll $t6, $t1, 2 +/* 07C8C4 7F047D94 014E6821 */ addu $t5, $t2, $t6 +/* 07C8C8 7F047D98 8DB80000 */ lw $t8, ($t5) +/* 07C8CC 7F047D9C 07010045 */ bgez $t8, .L7F047EB4 +/* 07C8D0 7F047DA0 00000000 */ nop +/* 07C8D4 7F047DA4 44814000 */ mtc1 $at, $f8 +/* 07C8D8 7F047DA8 AE2000A4 */ sw $zero, 0xa4($s1) +/* 07C8DC 7F047DAC E6360094 */ swc1 $f22, 0x94($s1) +/* 07C8E0 7F047DB0 10000040 */ b .L7F047EB4 +/* 07C8E4 7F047DB4 E6280098 */ swc1 $f8, 0x98($s1) +.L7F047DB8: +/* 07C8E8 7F047DB8 C6240098 */ lwc1 $f4, 0x98($s1) +/* 07C8EC 7F047DBC 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 07C8F0 7F047DC0 4616203C */ c.lt.s $f4, $f22 +/* 07C8F4 7F047DC4 00000000 */ nop +/* 07C8F8 7F047DC8 45020006 */ bc1fl .L7F047DE4 +/* 07C8FC 7F047DCC E6360088 */ swc1 $f22, 0x88($s1) +/* 07C900 7F047DD0 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07C904 7F047DD4 44815000 */ mtc1 $at, $f10 +/* 07C908 7F047DD8 E6260094 */ swc1 $f6, 0x94($s1) +/* 07C90C 7F047DDC E62A0098 */ swc1 $f10, 0x98($s1) +/* 07C910 7F047DE0 E6360088 */ swc1 $f22, 0x88($s1) +.L7F047DE4: +/* 07C914 7F047DE4 C7A80438 */ lwc1 $f8, 0x438($sp) +/* 07C918 7F047DE8 02202025 */ move $a0, $s1 +/* 07C91C 7F047DEC E62800A0 */ swc1 $f8, 0xa0($s1) +/* 07C920 7F047DF0 C7A40434 */ lwc1 $f4, 0x434($sp) +/* 07C924 7F047DF4 E624009C */ swc1 $f4, 0x9c($s1) +/* 07C928 7F047DF8 8FAF044C */ lw $t7, 0x44c($sp) +/* 07C92C 7F047DFC AE6F0014 */ sw $t7, 0x14($s3) +/* 07C930 7F047E00 C7A20450 */ lwc1 $f2, 0x450($sp) +/* 07C934 7F047E04 E6620008 */ swc1 $f2, 8($s3) +/* 07C938 7F047E08 E6220058 */ swc1 $f2, 0x58($s1) +/* 07C93C 7F047E0C C7A20454 */ lwc1 $f2, 0x454($sp) +/* 07C940 7F047E10 E662000C */ swc1 $f2, 0xc($s3) +/* 07C944 7F047E14 E622005C */ swc1 $f2, 0x5c($s1) +/* 07C948 7F047E18 C7A20458 */ lwc1 $f2, 0x458($sp) +/* 07C94C 7F047E1C E6620010 */ swc1 $f2, 0x10($s3) +/* 07C950 7F047E20 0FC10121 */ jal sub_GAME_7F040484 +/* 07C954 7F047E24 E6220060 */ swc1 $f2, 0x60($s1) +/* 07C958 7F047E28 0FC15B28 */ jal sub_GAME_7F056CA0 +/* 07C95C 7F047E2C 02202025 */ move $a0, $s1 +/* 07C960 7F047E30 10000020 */ b .L7F047EB4 +/* 07C964 7F047E34 00000000 */ nop +.L7F047E38: +/* 07C968 7F047E38 C6260098 */ lwc1 $f6, 0x98($s1) +.L7F047E3C: +/* 07C96C 7F047E3C 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 07C970 7F047E40 4616303C */ c.lt.s $f6, $f22 +/* 07C974 7F047E44 00000000 */ nop +/* 07C978 7F047E48 45020006 */ bc1fl .L7F047E64 +/* 07C97C 7F047E4C E6360088 */ swc1 $f22, 0x88($s1) +/* 07C980 7F047E50 C62A0088 */ lwc1 $f10, 0x88($s1) +/* 07C984 7F047E54 44814000 */ mtc1 $at, $f8 +/* 07C988 7F047E58 E62A0094 */ swc1 $f10, 0x94($s1) +/* 07C98C 7F047E5C E6280098 */ swc1 $f8, 0x98($s1) +/* 07C990 7F047E60 E6360088 */ swc1 $f22, 0x88($s1) +.L7F047E64: +/* 07C994 7F047E64 C7A40438 */ lwc1 $f4, 0x438($sp) +/* 07C998 7F047E68 E62400A0 */ swc1 $f4, 0xa0($s1) +/* 07C99C 7F047E6C C7A60434 */ lwc1 $f6, 0x434($sp) +/* 07C9A0 7F047E70 10000010 */ b .L7F047EB4 +/* 07C9A4 7F047E74 E626009C */ swc1 $f6, 0x9c($s1) +/* 07C9A8 7F047E78 8E280008 */ lw $t0, 8($s1) +.L7F047E7C: +/* 07C9AC 7F047E7C 00085880 */ sll $t3, $t0, 2 +/* 07C9B0 7F047E80 0561000C */ bgez $t3, .L7F047EB4 +/* 07C9B4 7F047E84 00000000 */ nop +/* 07C9B8 7F047E88 C62C0038 */ lwc1 $f12, 0x38($s1) +/* 07C9BC 7F047E8C 0FC16A8C */ jal convert_angle_using_inverse +/* 07C9C0 7F047E90 C62E0040 */ lwc1 $f14, 0x40($s1) +/* 07C9C4 7F047E94 8E290008 */ lw $t1, 8($s1) +/* 07C9C8 7F047E98 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff +/* 07C9CC 7F047E9C 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 07C9D0 7F047EA0 0121C824 */ and $t9, $t1, $at +/* 07C9D4 7F047EA4 E62000A0 */ swc1 $f0, 0xa0($s1) +/* 07C9D8 7F047EA8 AE390008 */ sw $t9, 8($s1) +/* 07C9DC 7F047EAC 0FC112CE */ jal sub_GAME_7F044B38 +/* 07C9E0 7F047EB0 02202025 */ move $a0, $s1 +.L7F047EB4: +/* 07C9E4 7F047EB4 100000DE */ b .L7F048230 +/* 07C9E8 7F047EB8 92220003 */ lbu $v0, 3($s1) +.L7F047EBC: +/* 07C9EC 7F047EBC 24010028 */ li $at, 40 +/* 07C9F0 7F047EC0 144100DA */ bne $v0, $at, .L7F04822C +/* 07C9F4 7F047EC4 02202025 */ move $a0, $s1 +/* 07C9F8 7F047EC8 0FC0D521 */ jal parse_handle_actionblocks +/* 07C9FC 7F047ECC 24050001 */ li $a1, 1 +/* 07CA00 7F047ED0 8E300014 */ lw $s0, 0x14($s1) +/* 07CA04 7F047ED4 26250058 */ addiu $a1, $s1, 0x58 +/* 07CA08 7F047ED8 8E0C0020 */ lw $t4, 0x20($s0) +/* 07CA0C 7F047EDC 02002025 */ move $a0, $s0 +/* 07CA10 7F047EE0 51800065 */ beql $t4, $zero, .L7F048078 +/* 07CA14 7F047EE4 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07CA18 7F047EE8 0FC1B303 */ jal setsuboffset +/* 07CA1C 7F047EEC AFA50070 */ sw $a1, 0x70($sp) +/* 07CA20 7F047EF0 8E300014 */ lw $s0, 0x14($s1) +/* 07CA24 7F047EF4 3C0E8003 */ lui $t6, %hi(animation_table_ptrs2+4) +/* 07CA28 7F047EF8 8DCEA050 */ lw $t6, %lo(animation_table_ptrs2+4)($t6) +/* 07CA2C 7F047EFC 8E0A0020 */ lw $t2, 0x20($s0) +/* 07CA30 7F047F00 3C054127 */ lui $a1, (0x4127020C >> 16) # lui $a1, 0x4127 +/* 07CA34 7F047F04 02002025 */ move $a0, $s0 +/* 07CA38 7F047F08 154E0009 */ bne $t2, $t6, .L7F047F30 +/* 07CA3C 7F047F0C 00000000 */ nop +/* 07CA40 7F047F10 0FC1B3A1 */ jal sub_GAME_7F06CE84 +/* 07CA44 7F047F14 34A5020C */ ori $a1, (0x4127020C & 0xFFFF) # ori $a1, $a1, 0x20c +/* 07CA48 7F047F18 3C054049 */ lui $a1, (0x40490FDB >> 16) # lui $a1, 0x4049 +/* 07CA4C 7F047F1C 34A50FDB */ ori $a1, (0x40490FDB & 0xFFFF) # ori $a1, $a1, 0xfdb +/* 07CA50 7F047F20 0FC1B34F */ jal setsubroty +/* 07CA54 7F047F24 8E240014 */ lw $a0, 0x14($s1) +/* 07CA58 7F047F28 10000024 */ b .L7F047FBC +/* 07CA5C 7F047F2C 00000000 */ nop +.L7F047F30: +/* 07CA60 7F047F30 0C001A57 */ jal get_stage_num +/* 07CA64 7F047F34 00000000 */ nop +/* 07CA68 7F047F38 24010016 */ li $at, 22 +/* 07CA6C 7F047F3C 1441000A */ bne $v0, $at, .L7F047F68 +/* 07CA70 7F047F40 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 +/* 07CA74 7F047F44 8E240014 */ lw $a0, 0x14($s1) +/* 07CA78 7F047F48 0FC1B3A1 */ jal sub_GAME_7F06CE84 +/* 07CA7C 7F047F4C 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d +/* 07CA80 7F047F50 3C054016 */ lui $a1, (0x4016CBE4 >> 16) # lui $a1, 0x4016 +/* 07CA84 7F047F54 34A5CBE4 */ ori $a1, (0x4016CBE4 & 0xFFFF) # ori $a1, $a1, 0xcbe4 +/* 07CA88 7F047F58 0FC1B34F */ jal setsubroty +/* 07CA8C 7F047F5C 8E240014 */ lw $a0, 0x14($s1) +/* 07CA90 7F047F60 10000016 */ b .L7F047FBC +/* 07CA94 7F047F64 00000000 */ nop +.L7F047F68: +/* 07CA98 7F047F68 0C001A57 */ jal get_stage_num +/* 07CA9C 7F047F6C 00000000 */ nop +/* 07CAA0 7F047F70 2401001A */ li $at, 26 +/* 07CAA4 7F047F74 1441000B */ bne $v0, $at, .L7F047FA4 +/* 07CAA8 7F047F78 3C053F85 */ lui $a1, 0x3f85 +/* 07CAAC 7F047F7C 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 +/* 07CAB0 7F047F80 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d +/* 07CAB4 7F047F84 0FC1B3A1 */ jal sub_GAME_7F06CE84 +/* 07CAB8 7F047F88 8E240014 */ lw $a0, 0x14($s1) +/* 07CABC 7F047F8C 3C05407B */ lui $a1, (0x407B9B3D >> 16) # lui $a1, 0x407b +/* 07CAC0 7F047F90 34A553D1 */ ori $a1, (0x407B53D1 & 0xFFFF) # ori $a1, $a1, 0x53d1 +/* 07CAC4 7F047F94 0FC1B34F */ jal setsubroty +/* 07CAC8 7F047F98 8E240014 */ lw $a0, 0x14($s1) +/* 07CACC 7F047F9C 10000007 */ b .L7F047FBC +/* 07CAD0 7F047FA0 00000000 */ nop +.L7F047FA4: +/* 07CAD4 7F047FA4 8E240014 */ lw $a0, 0x14($s1) +/* 07CAD8 7F047FA8 0FC1B3A1 */ jal sub_GAME_7F06CE84 +/* 07CADC 7F047FAC 34A59B3D */ ori $a1, (0x407B9B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d +/* 07CAE0 7F047FB0 4405B000 */ mfc1 $a1, $f22 +/* 07CAE4 7F047FB4 0FC1B34F */ jal setsubroty +/* 07CAE8 7F047FB8 8E240014 */ lw $a0, 0x14($s1) +.L7F047FBC: +/* 07CAEC 7F047FBC 3C058005 */ lui $a1, %hi(clock_timer) +/* 07CAF0 7F047FC0 8CA58374 */ lw $a1, %lo(clock_timer)($a1) +/* 07CAF4 7F047FC4 8E240014 */ lw $a0, 0x14($s1) +/* 07CAF8 7F047FC8 0FC1C2BB */ jal sub_GAME_7F070AEC +/* 07CAFC 7F047FCC 24060001 */ li $a2, 1 +/* 07CB00 7F047FD0 0FC1B5AC */ jal subcalcpos +/* 07CB04 7F047FD4 8E240014 */ lw $a0, 0x14($s1) +/* 07CB08 7F047FD8 8E240014 */ lw $a0, 0x14($s1) +/* 07CB0C 7F047FDC 0FC1B2E6 */ jal getsuboffset +/* 07CB10 7F047FE0 8FA50070 */ lw $a1, 0x70($sp) +/* 07CB14 7F047FE4 C62A0058 */ lwc1 $f10, 0x58($s1) +/* 07CB18 7F047FE8 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) +/* 07CB1C 7F047FEC 24A55D00 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d00 +/* 07CB20 7F047FF0 E66A0008 */ swc1 $f10, 8($s3) +/* 07CB24 7F047FF4 C6280060 */ lwc1 $f8, 0x60($s1) +/* 07CB28 7F047FF8 E6680010 */ swc1 $f8, 0x10($s3) +/* 07CB2C 7F047FFC 86220006 */ lh $v0, 6($s1) +/* 07CB30 7F048000 28412710 */ slti $at, $v0, 0x2710 +/* 07CB34 7F048004 1020000B */ beqz $at, .L7F048034 +/* 07CB38 7F048008 00027900 */ sll $t7, $v0, 4 +/* 07CB3C 7F04800C 00026880 */ sll $t5, $v0, 2 +/* 07CB40 7F048010 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) +/* 07CB44 7F048014 01A26823 */ subu $t5, $t5, $v0 +/* 07CB48 7F048018 24A55D00 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d00 +/* 07CB4C 7F04801C 000D6880 */ sll $t5, $t5, 2 +/* 07CB50 7F048020 8CB80018 */ lw $t8, 0x18($a1) +/* 07CB54 7F048024 01A26823 */ subu $t5, $t5, $v0 +/* 07CB58 7F048028 000D6880 */ sll $t5, $t5, 2 +/* 07CB5C 7F04802C 10000008 */ b .L7F048050 +/* 07CB60 7F048030 01B81821 */ addu $v1, $t5, $t8 +.L7F048034: +/* 07CB64 7F048034 8CA8001C */ lw $t0, 0x1c($a1) +/* 07CB68 7F048038 01E27821 */ addu $t7, $t7, $v0 +/* 07CB6C 7F04803C 000F7880 */ sll $t7, $t7, 2 +/* 07CB70 7F048040 3C01FFF5 */ lui $at, (0xFFF59FC0 >> 16) # lui $at, 0xfff5 +/* 07CB74 7F048044 34219FC0 */ ori $at, (0xFFF59FC0 & 0xFFFF) # ori $at, $at, 0x9fc0 +/* 07CB78 7F048048 01E81821 */ addu $v1, $t7, $t0 +/* 07CB7C 7F04804C 00611821 */ addu $v1, $v1, $at +.L7F048050: +/* 07CB80 7F048050 C624005C */ lwc1 $f4, 0x5c($s1) +/* 07CB84 7F048054 C4660004 */ lwc1 $f6, 4($v1) +/* 07CB88 7F048058 46062280 */ add.s $f10, $f4, $f6 +/* 07CB8C 7F04805C E66A000C */ swc1 $f10, 0xc($s3) +/* 07CB90 7F048060 C668000C */ lwc1 $f8, 0xc($s3) +/* 07CB94 7F048064 8E240014 */ lw $a0, 0x14($s1) +/* 07CB98 7F048068 E628005C */ swc1 $f8, 0x5c($s1) +/* 07CB9C 7F04806C 0FC1B303 */ jal setsuboffset +/* 07CBA0 7F048070 8FA50070 */ lw $a1, 0x70($sp) +/* 07CBA4 7F048074 C62C00A0 */ lwc1 $f12, 0xa0($s1) +.L7F048078: +/* 07CBA8 7F048078 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07CBAC 7F04807C 460CB03E */ c.le.s $f22, $f12 +/* 07CBB0 7F048080 00000000 */ nop +/* 07CBB4 7F048084 45020016 */ bc1fl .L7F0480E0 +/* 07CBB8 7F048088 C6200094 */ lwc1 $f0, 0x94($s1) +/* 07CBBC 7F04808C C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07CBC0 7F048090 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07CBC4 7F048094 4602603E */ c.le.s $f12, $f2 +/* 07CBC8 7F048098 00000000 */ nop +/* 07CBCC 7F04809C 45020006 */ bc1fl .L7F0480B8 +/* 07CBD0 7F0480A0 C62E0098 */ lwc1 $f14, 0x98($s1) +/* 07CBD4 7F0480A4 C624009C */ lwc1 $f4, 0x9c($s1) +/* 07CBD8 7F0480A8 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07CBDC 7F0480AC 10000008 */ b .L7F0480D0 +/* 07CBE0 7F0480B0 E6240098 */ swc1 $f4, 0x98($s1) +/* 07CBE4 7F0480B4 C62E0098 */ lwc1 $f14, 0x98($s1) +.L7F0480B8: +/* 07CBE8 7F0480B8 C626009C */ lwc1 $f6, 0x9c($s1) +/* 07CBEC 7F0480BC 460E3281 */ sub.s $f10, $f6, $f14 +/* 07CBF0 7F0480C0 46025202 */ mul.s $f8, $f10, $f2 +/* 07CBF4 7F0480C4 460C4103 */ div.s $f4, $f8, $f12 +/* 07CBF8 7F0480C8 46047180 */ add.s $f6, $f14, $f4 +/* 07CBFC 7F0480CC E6260098 */ swc1 $f6, 0x98($s1) +.L7F0480D0: +/* 07CC00 7F0480D0 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07CC04 7F0480D4 460A6201 */ sub.s $f8, $f12, $f10 +/* 07CC08 7F0480D8 E62800A0 */ swc1 $f8, 0xa0($s1) +/* 07CC0C 7F0480DC C6200094 */ lwc1 $f0, 0x94($s1) +.L7F0480E0: +/* 07CC10 7F0480E0 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07CC14 7F0480E4 4600B03E */ c.le.s $f22, $f0 +/* 07CC18 7F0480E8 00000000 */ nop +/* 07CC1C 7F0480EC 45020016 */ bc1fl .L7F048148 +/* 07CC20 7F0480F0 8E2B000C */ lw $t3, 0xc($s1) +/* 07CC24 7F0480F4 C4228378 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07CC28 7F0480F8 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07CC2C 7F0480FC 4602003E */ c.le.s $f0, $f2 +/* 07CC30 7F048100 00000000 */ nop +/* 07CC34 7F048104 45020006 */ bc1fl .L7F048120 +/* 07CC38 7F048108 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07CC3C 7F04810C C6240090 */ lwc1 $f4, 0x90($s1) +/* 07CC40 7F048110 C6200094 */ lwc1 $f0, 0x94($s1) +/* 07CC44 7F048114 10000008 */ b .L7F048138 +/* 07CC48 7F048118 E624008C */ swc1 $f4, 0x8c($s1) +/* 07CC4C 7F04811C C62C008C */ lwc1 $f12, 0x8c($s1) +.L7F048120: +/* 07CC50 7F048120 C6260090 */ lwc1 $f6, 0x90($s1) +/* 07CC54 7F048124 460C3281 */ sub.s $f10, $f6, $f12 +/* 07CC58 7F048128 46025202 */ mul.s $f8, $f10, $f2 +/* 07CC5C 7F04812C 46004103 */ div.s $f4, $f8, $f0 +/* 07CC60 7F048130 46046180 */ add.s $f6, $f12, $f4 +/* 07CC64 7F048134 E626008C */ swc1 $f6, 0x8c($s1) +.L7F048138: +/* 07CC68 7F048138 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07CC6C 7F04813C 460A0201 */ sub.s $f8, $f0, $f10 +/* 07CC70 7F048140 E6280094 */ swc1 $f8, 0x94($s1) +/* 07CC74 7F048144 8E2B000C */ lw $t3, 0xc($s1) +.L7F048148: +/* 07CC78 7F048148 00008025 */ move $s0, $zero +/* 07CC7C 7F04814C 000B4B00 */ sll $t1, $t3, 0xc +/* 07CC80 7F048150 05200014 */ bltz $t1, .L7F0481A4 +/* 07CC84 7F048154 00000000 */ nop +/* 07CC88 7F048158 0FC13BCD */ jal check_if_object_has_not_been_destroyed +/* 07CC8C 7F04815C 02202025 */ move $a0, $s1 +/* 07CC90 7F048160 10400010 */ beqz $v0, .L7F0481A4 +/* 07CC94 7F048164 00000000 */ nop +/* 07CC98 7F048168 C624008C */ lwc1 $f4, 0x8c($s1) +/* 07CC9C 7F04816C 4604B032 */ c.eq.s $f22, $f4 +/* 07CCA0 7F048170 00000000 */ nop +/* 07CCA4 7F048174 4501000B */ bc1t .L7F0481A4 +/* 07CCA8 7F048178 00000000 */ nop +/* 07CCAC 7F04817C 8E390008 */ lw $t9, 8($s1) +/* 07CCB0 7F048180 3C05459C */ lui $a1, (0x459C4000 >> 16) # lui $a1, 0x459c +/* 07CCB4 7F048184 34A54000 */ ori $a1, (0x459C4000 & 0xFFFF) # ori $a1, $a1, 0x4000 +/* 07CCB8 7F048188 00196080 */ sll $t4, $t9, 2 +/* 07CCBC 7F04818C 05800005 */ bltz $t4, .L7F0481A4 +/* 07CCC0 7F048190 26240058 */ addiu $a0, $s1, 0x58 +/* 07CCC4 7F048194 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb +/* 07CCC8 7F048198 0FC14E25 */ jal sub_GAME_7F053894 +/* 07CCCC 7F04819C 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 +/* 07CCD0 7F0481A0 00408025 */ move $s0, $v0 +.L7F0481A4: +/* 07CCD4 7F0481A4 5A000019 */ blezl $s0, .L7F04820C +/* 07CCD8 7F0481A8 8E2400B0 */ lw $a0, 0xb0($s1) +/* 07CCDC 7F0481AC 8E2400B0 */ lw $a0, 0xb0($s1) +/* 07CCE0 7F0481B0 10800005 */ beqz $a0, .L7F0481C8 +/* 07CCE4 7F0481B4 00000000 */ nop +/* 07CCE8 7F0481B8 0C00237C */ jal sfxGetArg0Unk3F +/* 07CCEC 7F0481BC 00000000 */ nop +/* 07CCF0 7F0481C0 5440000A */ bnezl $v0, .L7F0481EC +/* 07CCF4 7F0481C4 8E2400B0 */ lw $a0, 0xb0($s1) +.L7F0481C8: +/* 07CCF8 7F0481C8 0FC2FF01 */ jal get_controls_locked_flag +/* 07CCFC 7F0481CC 00000000 */ nop +/* 07CD00 7F0481D0 14400005 */ bnez $v0, .L7F0481E8 +/* 07CD04 7F0481D4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07CD08 7F0481D8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07CD0C 7F0481DC 2405003A */ li $a1, 58 +/* 07CD10 7F0481E0 0C002382 */ jal play_sfx_a1 +/* 07CD14 7F0481E4 262600B0 */ addiu $a2, $s1, 0xb0 +.L7F0481E8: +/* 07CD18 7F0481E8 8E2400B0 */ lw $a0, 0xb0($s1) +.L7F0481EC: +/* 07CD1C 7F0481EC 24050008 */ li $a1, 8 +/* 07CD20 7F0481F0 5080000F */ beql $a0, $zero, .L7F048230 +/* 07CD24 7F0481F4 92220003 */ lbu $v0, 3($s1) +/* 07CD28 7F0481F8 0C002461 */ jal sfx_c_70009184 +/* 07CD2C 7F0481FC 02003025 */ move $a2, $s0 +/* 07CD30 7F048200 1000000B */ b .L7F048230 +/* 07CD34 7F048204 92220003 */ lbu $v0, 3($s1) +/* 07CD38 7F048208 8E2400B0 */ lw $a0, 0xb0($s1) +.L7F04820C: +/* 07CD3C 7F04820C 50800008 */ beql $a0, $zero, .L7F048230 +/* 07CD40 7F048210 92220003 */ lbu $v0, 3($s1) +/* 07CD44 7F048214 0C00237C */ jal sfxGetArg0Unk3F +/* 07CD48 7F048218 00000000 */ nop +/* 07CD4C 7F04821C 50400004 */ beql $v0, $zero, .L7F048230 +/* 07CD50 7F048220 92220003 */ lbu $v0, 3($s1) +/* 07CD54 7F048224 0C002408 */ jal sfxDeactivate +/* 07CD58 7F048228 8E2400B0 */ lw $a0, 0xb0($s1) +.L7F04822C: +/* 07CD5C 7F04822C 92220003 */ lbu $v0, 3($s1) +.L7F048230: +/* 07CD60 7F048230 3C018005 */ lui $at, %hi(D_80052B64) +/* 07CD64 7F048234 C4342B64 */ lwc1 $f20, %lo(D_80052B64)($at) +/* 07CD68 7F048238 2401002F */ li $at, 47 +/* 07CD6C 7F04823C 54410020 */ bnel $v0, $at, .L7F0482C0 +/* 07CD70 7F048240 24010001 */ li $at, 1 +/* 07CD74 7F048244 8E700004 */ lw $s0, 4($s3) +/* 07CD78 7F048248 26240058 */ addiu $a0, $s1, 0x58 +/* 07CD7C 7F04824C 8E0A0080 */ lw $t2, 0x80($s0) +/* 07CD80 7F048250 8E0E0084 */ lw $t6, 0x84($s0) +/* 07CD84 7F048254 8E070090 */ lw $a3, 0x90($s0) +/* 07CD88 7F048258 448A3000 */ mtc1 $t2, $f6 +/* 07CD8C 7F04825C 448E5000 */ mtc1 $t6, $f10 +/* 07CD90 7F048260 468031A0 */ cvt.s.w $f6, $f6 +/* 07CD94 7F048264 468052A0 */ cvt.s.w $f10, $f10 +/* 07CD98 7F048268 44053000 */ mfc1 $a1, $f6 +/* 07CD9C 7F04826C 44065000 */ mfc1 $a2, $f10 +/* 07CDA0 7F048270 0FC11477 */ jal sub_GAME_7F0451DC +/* 07CDA4 7F048274 00000000 */ nop +/* 07CDA8 7F048278 8E04008C */ lw $a0, 0x8c($s0) +/* 07CDAC 7F04827C AE020088 */ sw $v0, 0x88($s0) +/* 07CDB0 7F048280 8FAD0674 */ lw $t5, 0x674($sp) +/* 07CDB4 7F048284 0480000B */ bltz $a0, .L7F0482B4 +/* 07CDB8 7F048288 24010001 */ li $at, 1 +/* 07CDBC 7F04828C 15A10009 */ bne $t5, $at, .L7F0482B4 +/* 07CDC0 7F048290 240100FF */ li $at, 255 +/* 07CDC4 7F048294 14410005 */ bne $v0, $at, .L7F0482AC +/* 07CDC8 7F048298 00000000 */ nop +/* 07CDCC 7F04829C 0FC2E76F */ jal sub_GAME_7F0B9DBC +/* 07CDD0 7F0482A0 00002825 */ move $a1, $zero +/* 07CDD4 7F0482A4 10000003 */ b .L7F0482B4 +/* 07CDD8 7F0482A8 00000000 */ nop +.L7F0482AC: +/* 07CDDC 7F0482AC 0FC2E76F */ jal sub_GAME_7F0B9DBC +/* 07CDE0 7F0482B0 24050001 */ li $a1, 1 +.L7F0482B4: +/* 07CDE4 7F0482B4 1000003B */ b .L7F0483A4 +/* 07CDE8 7F0482B8 AFA00670 */ sw $zero, 0x670($sp) +/* 07CDEC 7F0482BC 24010001 */ li $at, 1 +.L7F0482C0: +/* 07CDF0 7F0482C0 54410039 */ bnel $v0, $at, .L7F0483A8 +/* 07CDF4 7F0482C4 922F0003 */ lbu $t7, 3($s1) +/* 07CDF8 7F0482C8 962F0098 */ lhu $t7, 0x98($s1) +/* 07CDFC 7F0482CC 31E80002 */ andi $t0, $t7, 2 +/* 07CE00 7F0482D0 51000035 */ beql $t0, $zero, .L7F0483A8 +/* 07CE04 7F0482D4 922F0003 */ lbu $t7, 3($s1) +/* 07CE08 7F0482D8 8E700004 */ lw $s0, 4($s3) +/* 07CE0C 7F0482DC 4407B000 */ mfc1 $a3, $f22 +/* 07CE10 7F0482E0 24120001 */ li $s2, 1 +/* 07CE14 7F0482E4 8E0B00C0 */ lw $t3, 0xc0($s0) +/* 07CE18 7F0482E8 8E0900C4 */ lw $t1, 0xc4($s0) +/* 07CE1C 7F0482EC 26240058 */ addiu $a0, $s1, 0x58 +/* 07CE20 7F0482F0 448B4000 */ mtc1 $t3, $f8 +/* 07CE24 7F0482F4 44892000 */ mtc1 $t1, $f4 +/* 07CE28 7F0482F8 46804220 */ cvt.s.w $f8, $f8 +/* 07CE2C 7F0482FC 46802120 */ cvt.s.w $f4, $f4 +/* 07CE30 7F048300 44054000 */ mfc1 $a1, $f8 +/* 07CE34 7F048304 44062000 */ mfc1 $a2, $f4 +/* 07CE38 7F048308 0FC11477 */ jal sub_GAME_7F0451DC +/* 07CE3C 7F04830C 00000000 */ nop +/* 07CE40 7F048310 A60200BE */ sh $v0, 0xbe($s0) +/* 07CE44 7F048314 8FB90674 */ lw $t9, 0x674($sp) +/* 07CE48 7F048318 24010001 */ li $at, 1 +/* 07CE4C 7F04831C 57210022 */ bnel $t9, $at, .L7F0483A8 +/* 07CE50 7F048320 922F0003 */ lbu $t7, 3($s1) +/* 07CE54 7F048324 860C00BE */ lh $t4, 0xbe($s0) +/* 07CE58 7F048328 240100FF */ li $at, 255 +/* 07CE5C 7F04832C 55810007 */ bnel $t4, $at, .L7F04834C +/* 07CE60 7F048330 00009025 */ move $s2, $zero +/* 07CE64 7F048334 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07CE68 7F048338 4606B03C */ c.lt.s $f22, $f6 +/* 07CE6C 7F04833C 00000000 */ nop +/* 07CE70 7F048340 45020003 */ bc1fl .L7F048350 +/* 07CE74 7F048344 8E820008 */ lw $v0, 8($s4) +/* 07CE78 7F048348 00009025 */ move $s2, $zero +.L7F04834C: +/* 07CE7C 7F04834C 8E820008 */ lw $v0, 8($s4) +.L7F048350: +/* 07CE80 7F048350 3C0A8004 */ lui $t2, %hi(prop_door_related) +/* 07CE84 7F048354 254AA1DC */ addiu $t2, %lo(prop_door_related) # addiu $t2, $t2, -0x5e24 +/* 07CE88 7F048358 8C4E0004 */ lw $t6, 4($v0) +/* 07CE8C 7F04835C 154E0009 */ bne $t2, $t6, .L7F048384 +/* 07CE90 7F048360 00000000 */ nop +/* 07CE94 7F048364 8C4D0008 */ lw $t5, 8($v0) +/* 07CE98 7F048368 02802025 */ move $a0, $s4 +/* 07CE9C 7F04836C 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 07CEA0 7F048370 8DA50004 */ lw $a1, 4($t5) +/* 07CEA4 7F048374 8C580000 */ lw $t8, ($v0) +/* 07CEA8 7F048378 17000002 */ bnez $t8, .L7F048384 +/* 07CEAC 7F04837C 00000000 */ nop +/* 07CEB0 7F048380 00009025 */ move $s2, $zero +.L7F048384: +/* 07CEB4 7F048384 12400005 */ beqz $s2, .L7F04839C +/* 07CEB8 7F048388 00000000 */ nop +/* 07CEBC 7F04838C 0FC14D71 */ jal sub_GAME_7F0535C4 +/* 07CEC0 7F048390 02002025 */ move $a0, $s0 +/* 07CEC4 7F048394 10000004 */ b .L7F0483A8 +/* 07CEC8 7F048398 922F0003 */ lbu $t7, 3($s1) +.L7F04839C: +/* 07CECC 7F04839C 0FC14D66 */ jal sub_GAME_7F053598 +/* 07CED0 7F0483A0 02002025 */ move $a0, $s0 +.L7F0483A4: +/* 07CED4 7F0483A4 922F0003 */ lbu $t7, 3($s1) +.L7F0483A8: +/* 07CED8 7F0483A8 2410002D */ li $s0, 45 +/* 07CEDC 7F0483AC 560F0008 */ bnel $s0, $t7, .L7F0483D0 +/* 07CEE0 7F0483B0 8E23000C */ lw $v1, 0xc($s1) +/* 07CEE4 7F0483B4 0FC1F3A1 */ jal get_ptr_for_players_tank +/* 07CEE8 7F0483B8 00000000 */ nop +/* 07CEEC 7F0483BC 54530004 */ bnel $v0, $s3, .L7F0483D0 +/* 07CEF0 7F0483C0 8E23000C */ lw $v1, 0xc($s1) +/* 07CEF4 7F0483C4 10000019 */ b .L7F04842C +/* 07CEF8 7F0483C8 24030001 */ li $v1, 1 +/* 07CEFC 7F0483CC 8E23000C */ lw $v1, 0xc($s1) +.L7F0483D0: +/* 07CF00 7F0483D0 00034140 */ sll $t0, $v1, 5 +/* 07CF04 7F0483D4 05030004 */ bgezl $t0, .L7F0483E8 +/* 07CF08 7F0483D8 8E2B0064 */ lw $t3, 0x64($s1) +/* 07CF0C 7F0483DC 10000013 */ b .L7F04842C +/* 07CF10 7F0483E0 24030001 */ li $v1, 1 +/* 07CF14 7F0483E4 8E2B0064 */ lw $t3, 0x64($s1) +.L7F0483E8: +/* 07CF18 7F0483E8 0003CB00 */ sll $t9, $v1, 0xc +/* 07CF1C 7F0483EC 00001825 */ move $v1, $zero +/* 07CF20 7F0483F0 31690800 */ andi $t1, $t3, 0x800 +/* 07CF24 7F0483F4 1520000D */ bnez $t1, .L7F04842C +/* 07CF28 7F0483F8 00000000 */ nop +/* 07CF2C 7F0483FC 0720000B */ bltz $t9, .L7F04842C +/* 07CF30 7F048400 02802025 */ move $a0, $s4 +/* 07CF34 7F048404 262C0058 */ addiu $t4, $s1, 0x58 +/* 07CF38 7F048408 0FC1B403 */ jal getinstsize +/* 07CF3C 7F04840C AFAC0070 */ sw $t4, 0x70($sp) +/* 07CF40 7F048410 44060000 */ mfc1 $a2, $f0 +/* 07CF44 7F048414 02602025 */ move $a0, $s3 +/* 07CF48 7F048418 8FA50070 */ lw $a1, 0x70($sp) +/* 07CF4C 7F04841C 0FC1535B */ jal sub_GAME_7F054D6C +/* 07CF50 7F048420 8FA70670 */ lw $a3, 0x670($sp) +/* 07CF54 7F048424 10000001 */ b .L7F04842C +/* 07CF58 7F048428 00401825 */ move $v1, $v0 +.L7F04842C: +/* 07CF5C 7F04842C 1060037A */ beqz $v1, .L7F049218 +/* 07CF60 7F048430 8FAA0678 */ lw $t2, 0x678($sp) +/* 07CF64 7F048434 11400003 */ beqz $t2, .L7F048444 +/* 07CF68 7F048438 26240078 */ addiu $a0, $s1, 0x78 +/* 07CF6C 7F04843C 0FC100C4 */ jal update_color_shading +/* 07CF70 7F048440 2625007C */ addiu $a1, $s1, 0x7c +.L7F048444: +/* 07CF74 7F048444 926E0001 */ lbu $t6, 1($s3) +/* 07CF78 7F048448 35CD0002 */ ori $t5, $t6, 2 +/* 07CF7C 7F04844C A26D0001 */ sb $t5, 1($s3) +/* 07CF80 7F048450 8E980008 */ lw $t8, 8($s4) +/* 07CF84 7F048454 8704000E */ lh $a0, 0xe($t8) +/* 07CF88 7F048458 00047980 */ sll $t7, $a0, 6 +/* 07CF8C 7F04845C 0FC2F5C5 */ jal sub_GAME_7F0BD714 +/* 07CF90 7F048460 01E02025 */ move $a0, $t7 +/* 07CF94 7F048464 AE82000C */ sw $v0, 0xc($s4) +/* 07CF98 7F048468 92280003 */ lbu $t0, 3($s1) +/* 07CF9C 7F04846C 24010001 */ li $at, 1 +/* 07CFA0 7F048470 00409025 */ move $s2, $v0 +/* 07CFA4 7F048474 150100AD */ bne $t0, $at, .L7F04872C +/* 07CFA8 7F048478 26240018 */ addiu $a0, $s1, 0x18 +/* 07CFAC 7F04847C 8E640004 */ lw $a0, 4($s3) +/* 07CFB0 7F048480 00402825 */ move $a1, $v0 +/* 07CFB4 7F048484 0FC149BB */ jal sub_GAME_7F0526EC +/* 07CFB8 7F048488 AFA4039C */ sw $a0, 0x39c($sp) +/* 07CFBC 7F04848C 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 07CFC0 7F048490 00000000 */ nop +/* 07CFC4 7F048494 00402025 */ move $a0, $v0 +/* 07CFC8 7F048498 0FC16026 */ jal sub_GAME_7F058098 +/* 07CFCC 7F04849C 02402825 */ move $a1, $s2 +/* 07CFD0 7F0484A0 8E820008 */ lw $v0, 8($s4) +/* 07CFD4 7F0484A4 3C0B8004 */ lui $t3, %hi(prop_eyelid_door_related) +/* 07CFD8 7F0484A8 256BA100 */ addiu $t3, %lo(prop_eyelid_door_related) # addiu $t3, $t3, -0x5f00 +/* 07CFDC 7F0484AC 8C430004 */ lw $v1, 4($v0) +/* 07CFE0 7F0484B0 3C0D8004 */ lui $t5, %hi(prop_iris_door_related) +/* 07CFE4 7F0484B4 8FA6039C */ lw $a2, 0x39c($sp) +/* 07CFE8 7F0484B8 15630025 */ bne $t3, $v1, .L7F048550 +/* 07CFEC 7F0484BC 25ADA15C */ addiu $t5, %lo(prop_iris_door_related) # addiu $t5, $t5, -0x5ea4 +/* 07CFF0 7F0484C0 C4CA00B4 */ lwc1 $f10, 0xb4($a2) +/* 07CFF4 7F0484C4 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07CFF8 7F0484C8 44812000 */ mtc1 $at, $f4 +/* 07CFFC 7F0484CC 46145202 */ mul.s $f8, $f10, $f20 +/* 07D000 7F0484D0 8C490008 */ lw $t1, 8($v0) +/* 07D004 7F0484D4 26450040 */ addiu $a1, $s2, 0x40 +/* 07D008 7F0484D8 8D390004 */ lw $t9, 4($t1) +/* 07D00C 7F0484DC 46044183 */ div.s $f6, $f8, $f4 +/* 07D010 7F0484E0 8F300004 */ lw $s0, 4($t9) +/* 07D014 7F0484E4 AFA5006C */ sw $a1, 0x6c($sp) +/* 07D018 7F0484E8 4606A301 */ sub.s $f12, $f20, $f6 +/* 07D01C 7F0484EC 0FC1615C */ jal sub_GAME_7F058570 +/* 07D020 7F0484F0 E7AC0394 */ swc1 $f12, 0x394($sp) +/* 07D024 7F0484F4 02002025 */ move $a0, $s0 +/* 07D028 7F0484F8 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D02C 7F0484FC 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D030 7F048500 02402025 */ move $a0, $s2 +/* 07D034 7F048504 0FC1601A */ jal sub_GAME_7F058068 +/* 07D038 7F048508 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D03C 7F04850C 8E8C0008 */ lw $t4, 8($s4) +/* 07D040 7F048510 C7AA0394 */ lwc1 $f10, 0x394($sp) +/* 07D044 7F048514 26450080 */ addiu $a1, $s2, 0x80 +/* 07D048 7F048518 8D8A0008 */ lw $t2, 8($t4) +/* 07D04C 7F04851C 460AA301 */ sub.s $f12, $f20, $f10 +/* 07D050 7F048520 8D4E0008 */ lw $t6, 8($t2) +/* 07D054 7F048524 8DD00004 */ lw $s0, 4($t6) +/* 07D058 7F048528 0FC1615C */ jal sub_GAME_7F058570 +/* 07D05C 7F04852C AFA50068 */ sw $a1, 0x68($sp) +/* 07D060 7F048530 02002025 */ move $a0, $s0 +/* 07D064 7F048534 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D068 7F048538 8FA50068 */ lw $a1, 0x68($sp) +/* 07D06C 7F04853C 02402025 */ move $a0, $s2 +/* 07D070 7F048540 0FC1601A */ jal sub_GAME_7F058068 +/* 07D074 7F048544 8FA50068 */ lw $a1, 0x68($sp) +/* 07D078 7F048548 1000031F */ b .L7F0491C8 +/* 07D07C 7F04854C 8E8F0008 */ lw $t7, 8($s4) +.L7F048550: +/* 07D080 7F048550 55A3031D */ bnel $t5, $v1, .L7F0491C8 +/* 07D084 7F048554 8E8F0008 */ lw $t7, 8($s4) +/* 07D088 7F048558 C4C200B4 */ lwc1 $f2, 0xb4($a2) +/* 07D08C 7F04855C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07D090 7F048560 44812000 */ mtc1 $at, $f4 +/* 07D094 7F048564 46141202 */ mul.s $f8, $f2, $f20 +/* 07D098 7F048568 3C018005 */ lui $at, %hi(D_80052B68) +/* 07D09C 7F04856C C42A2B68 */ lwc1 $f10, %lo(D_80052B68)($at) +/* 07D0A0 7F048570 4600B386 */ mov.s $f14, $f22 +/* 07D0A4 7F048574 46044183 */ div.s $f6, $f8, $f4 +/* 07D0A8 7F048578 E7A60384 */ swc1 $f6, 0x384($sp) +/* 07D0AC 7F04857C C4CC0084 */ lwc1 $f12, 0x84($a2) +/* 07D0B0 7F048580 460A6002 */ mul.s $f0, $f12, $f10 +/* 07D0B4 7F048584 4602003C */ c.lt.s $f0, $f2 +/* 07D0B8 7F048588 00000000 */ nop +/* 07D0BC 7F04858C 4502001F */ bc1fl .L7F04860C +/* 07D0C0 7F048590 8FA80678 */ lw $t0, 0x678($sp) +/* 07D0C4 7F048594 46001201 */ sub.s $f8, $f2, $f0 +/* 07D0C8 7F048598 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07D0CC 7F04859C 8FB80678 */ lw $t8, 0x678($sp) +/* 07D0D0 7F0485A0 46006181 */ sub.s $f6, $f12, $f0 +/* 07D0D4 7F0485A4 46086102 */ mul.s $f4, $f12, $f8 +/* 07D0D8 7F0485A8 46062283 */ div.s $f10, $f4, $f6 +/* 07D0DC 7F0485AC 44812000 */ mtc1 $at, $f4 +/* 07D0E0 7F0485B0 46145202 */ mul.s $f8, $f10, $f20 +/* 07D0E4 7F0485B4 46044383 */ div.s $f14, $f8, $f4 +/* 07D0E8 7F0485B8 13000011 */ beqz $t8, .L7F048600 +/* 07D0EC 7F0485BC E7AE0380 */ swc1 $f14, 0x380($sp) +/* 07D0F0 7F0485C0 C7A6067C */ lwc1 $f6, 0x67c($sp) +/* 07D0F4 7F0485C4 E7AE0380 */ swc1 $f14, 0x380($sp) +/* 07D0F8 7F0485C8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07D0FC 7F0485CC 4600303E */ c.le.s $f6, $f0 +/* 07D100 7F0485D0 240500CA */ li $a1, 202 +/* 07D104 7F0485D4 00003025 */ move $a2, $zero +/* 07D108 7F0485D8 266F0008 */ addiu $t7, $s3, 8 +/* 07D10C 7F0485DC 45000008 */ bc1f .L7F048600 +/* 07D110 7F0485E0 00000000 */ nop +/* 07D114 7F0485E4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07D118 7F0485E8 AFAF0070 */ sw $t7, 0x70($sp) +/* 07D11C 7F0485EC 0C002382 */ jal play_sfx_a1 +/* 07D120 7F0485F0 E7AE0380 */ swc1 $f14, 0x380($sp) +/* 07D124 7F0485F4 00402025 */ move $a0, $v0 +/* 07D128 7F0485F8 0FC14E84 */ jal sub_GAME_7F053A10 +/* 07D12C 7F0485FC 8FA50070 */ lw $a1, 0x70($sp) +.L7F048600: +/* 07D130 7F048600 10000016 */ b .L7F04865C +/* 07D134 7F048604 AFA0038C */ sw $zero, 0x38c($sp) +/* 07D138 7F048608 8FA80678 */ lw $t0, 0x678($sp) +.L7F04860C: +/* 07D13C 7F04860C E7AE0380 */ swc1 $f14, 0x380($sp) +/* 07D140 7F048610 51000012 */ beql $t0, $zero, .L7F04865C +/* 07D144 7F048614 AFA0038C */ sw $zero, 0x38c($sp) +/* 07D148 7F048618 C7AA067C */ lwc1 $f10, 0x67c($sp) +/* 07D14C 7F04861C E7AE0380 */ swc1 $f14, 0x380($sp) +/* 07D150 7F048620 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07D154 7F048624 460A003C */ c.lt.s $f0, $f10 +/* 07D158 7F048628 240500CB */ li $a1, 203 +/* 07D15C 7F04862C 00003025 */ move $a2, $zero +/* 07D160 7F048630 266B0008 */ addiu $t3, $s3, 8 +/* 07D164 7F048634 45020009 */ bc1fl .L7F04865C +/* 07D168 7F048638 AFA0038C */ sw $zero, 0x38c($sp) +/* 07D16C 7F04863C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07D170 7F048640 AFAB0070 */ sw $t3, 0x70($sp) +/* 07D174 7F048644 0C002382 */ jal play_sfx_a1 +/* 07D178 7F048648 E7AE0380 */ swc1 $f14, 0x380($sp) +/* 07D17C 7F04864C 00402025 */ move $a0, $v0 +/* 07D180 7F048650 0FC14E84 */ jal sub_GAME_7F053A10 +/* 07D184 7F048654 8FA50070 */ lw $a1, 0x70($sp) +/* 07D188 7F048658 AFA0038C */ sw $zero, 0x38c($sp) +.L7F04865C: +/* 07D18C 7F04865C 8E890008 */ lw $t1, 8($s4) +/* 07D190 7F048660 8FA3038C */ lw $v1, 0x38c($sp) +/* 07D194 7F048664 C7AC0380 */ lwc1 $f12, 0x380($sp) +/* 07D198 7F048668 8D390008 */ lw $t9, 8($t1) +/* 07D19C 7F04866C 00031040 */ sll $v0, $v1, 1 +/* 07D1A0 7F048670 00026080 */ sll $t4, $v0, 2 +/* 07D1A4 7F048674 032C5021 */ addu $t2, $t9, $t4 +/* 07D1A8 7F048678 8D4E0004 */ lw $t6, 4($t2) +/* 07D1AC 7F04867C 0002C180 */ sll $t8, $v0, 6 +/* 07D1B0 7F048680 02582821 */ addu $a1, $s2, $t8 +/* 07D1B4 7F048684 8DCD0004 */ lw $t5, 4($t6) +/* 07D1B8 7F048688 AFA20074 */ sw $v0, 0x74($sp) +/* 07D1BC 7F04868C 24A50040 */ addiu $a1, $a1, 0x40 +/* 07D1C0 7F048690 0FC161A2 */ jal sub_GAME_7F058688 +/* 07D1C4 7F048694 AFAD0390 */ sw $t5, 0x390($sp) +/* 07D1C8 7F048698 8FAF0074 */ lw $t7, 0x74($sp) +/* 07D1CC 7F04869C 8FB0038C */ lw $s0, 0x38c($sp) +/* 07D1D0 7F0486A0 8FA40390 */ lw $a0, 0x390($sp) +/* 07D1D4 7F0486A4 000F4180 */ sll $t0, $t7, 6 +/* 07D1D8 7F0486A8 02482821 */ addu $a1, $s2, $t0 +/* 07D1DC 7F0486AC 24A50040 */ addiu $a1, $a1, 0x40 +/* 07D1E0 7F0486B0 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D1E4 7F0486B4 AFA50070 */ sw $a1, 0x70($sp) +/* 07D1E8 7F0486B8 02402025 */ move $a0, $s2 +/* 07D1EC 7F0486BC 0FC1601A */ jal sub_GAME_7F058068 +/* 07D1F0 7F0486C0 8FA50070 */ lw $a1, 0x70($sp) +/* 07D1F4 7F0486C4 8E8B0008 */ lw $t3, 8($s4) +/* 07D1F8 7F0486C8 8FA20074 */ lw $v0, 0x74($sp) +/* 07D1FC 7F0486CC C7AC0384 */ lwc1 $f12, 0x384($sp) +/* 07D200 7F0486D0 8D690008 */ lw $t1, 8($t3) +/* 07D204 7F0486D4 24420002 */ addiu $v0, $v0, 2 +/* 07D208 7F0486D8 0002C880 */ sll $t9, $v0, 2 +/* 07D20C 7F0486DC 01396021 */ addu $t4, $t1, $t9 +/* 07D210 7F0486E0 8D8A0000 */ lw $t2, ($t4) +/* 07D214 7F0486E4 00026980 */ sll $t5, $v0, 6 +/* 07D218 7F0486E8 024D2821 */ addu $a1, $s2, $t5 +/* 07D21C 7F0486EC 8D4E0004 */ lw $t6, 4($t2) +/* 07D220 7F0486F0 AFA5006C */ sw $a1, 0x6c($sp) +/* 07D224 7F0486F4 0FC161A2 */ jal sub_GAME_7F058688 +/* 07D228 7F0486F8 AFAE0390 */ sw $t6, 0x390($sp) +/* 07D22C 7F0486FC 8FA40390 */ lw $a0, 0x390($sp) +/* 07D230 7F048700 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D234 7F048704 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D238 7F048708 8FA40070 */ lw $a0, 0x70($sp) +/* 07D23C 7F04870C 0FC1601A */ jal sub_GAME_7F058068 +/* 07D240 7F048710 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D244 7F048714 26100001 */ addiu $s0, $s0, 1 +/* 07D248 7F048718 24010006 */ li $at, 6 +/* 07D24C 7F04871C 1601FFCF */ bne $s0, $at, .L7F04865C +/* 07D250 7F048720 AFB0038C */ sw $s0, 0x38c($sp) +/* 07D254 7F048724 100002A8 */ b .L7F0491C8 +/* 07D258 7F048728 8E8F0008 */ lw $t7, 8($s4) +.L7F04872C: +/* 07D25C 7F04872C 26380058 */ addiu $t8, $s1, 0x58 +/* 07D260 7F048730 AFB80070 */ sw $t8, 0x70($sp) +/* 07D264 7F048734 0FC16008 */ jal sub_GAME_7F058020 +/* 07D268 7F048738 27A503A4 */ addiu $a1, $sp, 0x3a4 +/* 07D26C 7F04873C 8FA40070 */ lw $a0, 0x70($sp) +/* 07D270 7F048740 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D274 7F048744 27A503A4 */ addiu $a1, $sp, 0x3a4 +/* 07D278 7F048748 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 07D27C 7F04874C 00000000 */ nop +/* 07D280 7F048750 00402025 */ move $a0, $v0 +/* 07D284 7F048754 27A503A4 */ addiu $a1, $sp, 0x3a4 +/* 07D288 7F048758 0FC16063 */ jal sub_GAME_7F05818C +/* 07D28C 7F04875C 02403025 */ move $a2, $s2 +/* 07D290 7F048760 92220003 */ lbu $v0, 3($s1) +/* 07D294 7F048764 24010006 */ li $at, 6 +/* 07D298 7F048768 27A50320 */ addiu $a1, $sp, 0x320 +/* 07D29C 7F04876C 5441002D */ bnel $v0, $at, .L7F048824 +/* 07D2A0 7F048770 2401000D */ li $at, 13 +/* 07D2A4 7F048774 8E620004 */ lw $v0, 4($s3) +/* 07D2A8 7F048778 8E8F0008 */ lw $t7, 8($s4) +/* 07D2AC 7F04877C C44C00C8 */ lwc1 $f12, 0xc8($v0) +/* 07D2B0 7F048780 8DE80008 */ lw $t0, 8($t7) +/* 07D2B4 7F048784 4616603C */ c.lt.s $f12, $f22 +/* 07D2B8 7F048788 8D0B0000 */ lw $t3, ($t0) +/* 07D2BC 7F04878C 45000003 */ bc1f .L7F04879C +/* 07D2C0 7F048790 8D700004 */ lw $s0, 4($t3) +/* 07D2C4 7F048794 10000006 */ b .L7F0487B0 +/* 07D2C8 7F048798 46146300 */ add.s $f12, $f12, $f20 +.L7F04879C: +/* 07D2CC 7F04879C 460CA03E */ c.le.s $f20, $f12 +/* 07D2D0 7F0487A0 00000000 */ nop +/* 07D2D4 7F0487A4 45000002 */ bc1f .L7F0487B0 +/* 07D2D8 7F0487A8 00000000 */ nop +/* 07D2DC 7F0487AC 46146301 */ sub.s $f12, $f12, $f20 +.L7F0487B0: +/* 07D2E0 7F0487B0 0FC1617F */ jal sub_GAME_7F0585FC +/* 07D2E4 7F0487B4 AFA20370 */ sw $v0, 0x370($sp) +/* 07D2E8 7F0487B8 8FA20370 */ lw $v0, 0x370($sp) +/* 07D2EC 7F0487BC 26460040 */ addiu $a2, $s2, 0x40 +/* 07D2F0 7F0487C0 AFA6006C */ sw $a2, 0x6c($sp) +/* 07D2F4 7F0487C4 27A40320 */ addiu $a0, $sp, 0x320 +/* 07D2F8 7F0487C8 0FC16032 */ jal sub_GAME_7F0580C8 +/* 07D2FC 7F0487CC 24450084 */ addiu $a1, $v0, 0x84 +/* 07D300 7F0487D0 C6080000 */ lwc1 $f8, ($s0) +/* 07D304 7F0487D4 27B20360 */ addiu $s2, $sp, 0x360 +/* 07D308 7F0487D8 02402825 */ move $a1, $s2 +/* 07D30C 7F0487DC E7A80360 */ swc1 $f8, 0x360($sp) +/* 07D310 7F0487E0 C6040004 */ lwc1 $f4, 4($s0) +/* 07D314 7F0487E4 27A403A4 */ addiu $a0, $sp, 0x3a4 +/* 07D318 7F0487E8 E7A40364 */ swc1 $f4, 0x364($sp) +/* 07D31C 7F0487EC C6060008 */ lwc1 $f6, 8($s0) +/* 07D320 7F0487F0 0FC1611D */ jal sub_GAME_7F058474 +/* 07D324 7F0487F4 E7A60368 */ swc1 $f6, 0x368($sp) +/* 07D328 7F0487F8 02402025 */ move $a0, $s2 +/* 07D32C 7F0487FC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D330 7F048800 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D334 7F048804 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 07D338 7F048808 00000000 */ nop +/* 07D33C 7F04880C 00402025 */ move $a0, $v0 +/* 07D340 7F048810 0FC16026 */ jal sub_GAME_7F058098 +/* 07D344 7F048814 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D348 7F048818 1000026B */ b .L7F0491C8 +/* 07D34C 7F04881C 8E8F0008 */ lw $t7, 8($s4) +/* 07D350 7F048820 2401000D */ li $at, 13 +.L7F048824: +/* 07D354 7F048824 5441007F */ bnel $v0, $at, .L7F048A24 +/* 07D358 7F048828 24010008 */ li $at, 8 +/* 07D35C 7F04882C 8E620004 */ lw $v0, 4($s3) +/* 07D360 7F048830 3C018005 */ lui $at, %hi(D_80052B6C) +/* 07D364 7F048834 C4282B6C */ lwc1 $f8, %lo(D_80052B6C)($at) +/* 07D368 7F048838 C44A0090 */ lwc1 $f10, 0x90($v0) +/* 07D36C 7F04883C C444009C */ lwc1 $f4, 0x9c($v0) +/* 07D370 7F048840 46085300 */ add.s $f12, $f10, $f8 +/* 07D374 7F048844 46002187 */ neg.s $f6, $f4 +/* 07D378 7F048848 460CA03E */ c.le.s $f20, $f12 +/* 07D37C 7F04884C E7A60300 */ swc1 $f6, 0x300($sp) +/* 07D380 7F048850 45020003 */ bc1fl .L7F048860 +/* 07D384 7F048854 8E890008 */ lw $t1, 8($s4) +/* 07D388 7F048858 46146301 */ sub.s $f12, $f12, $f20 +/* 07D38C 7F04885C 8E890008 */ lw $t1, 8($s4) +.L7F048860: +/* 07D390 7F048860 27A403A4 */ addiu $a0, $sp, 0x3a4 +/* 07D394 7F048864 27A50308 */ addiu $a1, $sp, 0x308 +/* 07D398 7F048868 8D390008 */ lw $t9, 8($t1) +/* 07D39C 7F04886C 8F2C0004 */ lw $t4, 4($t9) +/* 07D3A0 7F048870 8D900004 */ lw $s0, 4($t4) +/* 07D3A4 7F048874 C60A0000 */ lwc1 $f10, ($s0) +/* 07D3A8 7F048878 E7AA0308 */ swc1 $f10, 0x308($sp) +/* 07D3AC 7F04887C C6080004 */ lwc1 $f8, 4($s0) +/* 07D3B0 7F048880 E7A8030C */ swc1 $f8, 0x30c($sp) +/* 07D3B4 7F048884 C6040008 */ lwc1 $f4, 8($s0) +/* 07D3B8 7F048888 E7AC0304 */ swc1 $f12, 0x304($sp) +/* 07D3BC 7F04888C AFA20318 */ sw $v0, 0x318($sp) +/* 07D3C0 7F048890 0FC1611D */ jal sub_GAME_7F058474 +/* 07D3C4 7F048894 E7A40310 */ swc1 $f4, 0x310($sp) +/* 07D3C8 7F048898 26450040 */ addiu $a1, $s2, 0x40 +/* 07D3CC 7F04889C C7AC0304 */ lwc1 $f12, 0x304($sp) +/* 07D3D0 7F0488A0 0FC1617F */ jal sub_GAME_7F0585FC +/* 07D3D4 7F0488A4 AFA5006C */ sw $a1, 0x6c($sp) +/* 07D3D8 7F0488A8 27A40308 */ addiu $a0, $sp, 0x308 +/* 07D3DC 7F0488AC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D3E0 7F0488B0 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D3E4 7F0488B4 8FAA0318 */ lw $t2, 0x318($sp) +/* 07D3E8 7F0488B8 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D3EC 7F0488BC 8D4E0014 */ lw $t6, 0x14($t2) +/* 07D3F0 7F0488C0 0FC1629F */ jal matrix_multiply_A1_by_F12 +/* 07D3F4 7F0488C4 C5CC0014 */ lwc1 $f12, 0x14($t6) +/* 07D3F8 7F0488C8 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 07D3FC 7F0488CC 00000000 */ nop +/* 07D400 7F0488D0 00402025 */ move $a0, $v0 +/* 07D404 7F0488D4 0FC16026 */ jal sub_GAME_7F058098 +/* 07D408 7F0488D8 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D40C 7F0488DC 8E8D0008 */ lw $t5, 8($s4) +/* 07D410 7F0488E0 26450080 */ addiu $a1, $s2, 0x80 +/* 07D414 7F0488E4 C7AC0300 */ lwc1 $f12, 0x300($sp) +/* 07D418 7F0488E8 8DB80008 */ lw $t8, 8($t5) +/* 07D41C 7F0488EC 8F0F0008 */ lw $t7, 8($t8) +/* 07D420 7F0488F0 8DF00004 */ lw $s0, 4($t7) +/* 07D424 7F0488F4 0FC161A2 */ jal sub_GAME_7F058688 +/* 07D428 7F0488F8 AFA50068 */ sw $a1, 0x68($sp) +/* 07D42C 7F0488FC 02002025 */ move $a0, $s0 +/* 07D430 7F048900 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D434 7F048904 8FA50068 */ lw $a1, 0x68($sp) +/* 07D438 7F048908 8FA4006C */ lw $a0, 0x6c($sp) +/* 07D43C 7F04890C 0FC16026 */ jal sub_GAME_7F058098 +/* 07D440 7F048910 8FA50068 */ lw $a1, 0x68($sp) +/* 07D444 7F048914 8E880008 */ lw $t0, 8($s4) +/* 07D448 7F048918 02802025 */ move $a0, $s4 +/* 07D44C 7F04891C 8D030008 */ lw $v1, 8($t0) +/* 07D450 7F048920 8C65000C */ lw $a1, 0xc($v1) +/* 07D454 7F048924 50A00016 */ beql $a1, $zero, .L7F048980 +/* 07D458 7F048928 8C650010 */ lw $a1, 0x10($v1) +/* 07D45C 7F04892C 0FC1B198 */ jal sub_GAME_7F06C660 +/* 07D460 7F048930 00003025 */ move $a2, $zero +/* 07D464 7F048934 AFA202FC */ sw $v0, 0x2fc($sp) +/* 07D468 7F048938 8E8B0008 */ lw $t3, 8($s4) +/* 07D46C 7F04893C 8FAC0318 */ lw $t4, 0x318($sp) +/* 07D470 7F048940 00402825 */ move $a1, $v0 +/* 07D474 7F048944 8D690008 */ lw $t1, 8($t3) +/* 07D478 7F048948 C58C00B4 */ lwc1 $f12, 0xb4($t4) +/* 07D47C 7F04894C 8D39000C */ lw $t9, 0xc($t1) +/* 07D480 7F048950 0FC1615C */ jal sub_GAME_7F058570 +/* 07D484 7F048954 8F300004 */ lw $s0, 4($t9) +/* 07D488 7F048958 8FB202FC */ lw $s2, 0x2fc($sp) +/* 07D48C 7F04895C 02002025 */ move $a0, $s0 +/* 07D490 7F048960 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D494 7F048964 02402825 */ move $a1, $s2 +/* 07D498 7F048968 8FA40068 */ lw $a0, 0x68($sp) +/* 07D49C 7F04896C 0FC16026 */ jal sub_GAME_7F058098 +/* 07D4A0 7F048970 02402825 */ move $a1, $s2 +/* 07D4A4 7F048974 8E8A0008 */ lw $t2, 8($s4) +/* 07D4A8 7F048978 8D430008 */ lw $v1, 8($t2) +/* 07D4AC 7F04897C 8C650010 */ lw $a1, 0x10($v1) +.L7F048980: +/* 07D4B0 7F048980 02802025 */ move $a0, $s4 +/* 07D4B4 7F048984 50A00010 */ beql $a1, $zero, .L7F0489C8 +/* 07D4B8 7F048988 8C650018 */ lw $a1, 0x18($v1) +/* 07D4BC 7F04898C 0FC1B198 */ jal sub_GAME_7F06C660 +/* 07D4C0 7F048990 00003025 */ move $a2, $zero +/* 07D4C4 7F048994 8E8E0008 */ lw $t6, 8($s4) +/* 07D4C8 7F048998 00409025 */ move $s2, $v0 +/* 07D4CC 7F04899C 00402825 */ move $a1, $v0 +/* 07D4D0 7F0489A0 8DCD0008 */ lw $t5, 8($t6) +/* 07D4D4 7F0489A4 8DB80010 */ lw $t8, 0x10($t5) +/* 07D4D8 7F0489A8 0FC16259 */ jal init_something_copy_posdata_to_it +/* 07D4DC 7F0489AC 8F040004 */ lw $a0, 4($t8) +/* 07D4E0 7F0489B0 8FA40068 */ lw $a0, 0x68($sp) +/* 07D4E4 7F0489B4 0FC16026 */ jal sub_GAME_7F058098 +/* 07D4E8 7F0489B8 02402825 */ move $a1, $s2 +/* 07D4EC 7F0489BC 8E8F0008 */ lw $t7, 8($s4) +/* 07D4F0 7F0489C0 8DE30008 */ lw $v1, 8($t7) +/* 07D4F4 7F0489C4 8C650018 */ lw $a1, 0x18($v1) +.L7F0489C8: +/* 07D4F8 7F0489C8 02802025 */ move $a0, $s4 +/* 07D4FC 7F0489CC 50A001FE */ beql $a1, $zero, .L7F0491C8 +/* 07D500 7F0489D0 8E8F0008 */ lw $t7, 8($s4) +/* 07D504 7F0489D4 0FC1B198 */ jal sub_GAME_7F06C660 +/* 07D508 7F0489D8 00003025 */ move $a2, $zero +/* 07D50C 7F0489DC 8E880008 */ lw $t0, 8($s4) +/* 07D510 7F0489E0 8FB90318 */ lw $t9, 0x318($sp) +/* 07D514 7F0489E4 00409025 */ move $s2, $v0 +/* 07D518 7F0489E8 8D0B0008 */ lw $t3, 8($t0) +/* 07D51C 7F0489EC 00402825 */ move $a1, $v0 +/* 07D520 7F0489F0 C72C00B4 */ lwc1 $f12, 0xb4($t9) +/* 07D524 7F0489F4 8D690018 */ lw $t1, 0x18($t3) +/* 07D528 7F0489F8 0FC1615C */ jal sub_GAME_7F058570 +/* 07D52C 7F0489FC 8D300004 */ lw $s0, 4($t1) +/* 07D530 7F048A00 02002025 */ move $a0, $s0 +/* 07D534 7F048A04 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D538 7F048A08 02402825 */ move $a1, $s2 +/* 07D53C 7F048A0C 8FA40068 */ lw $a0, 0x68($sp) +/* 07D540 7F048A10 0FC16026 */ jal sub_GAME_7F058098 +/* 07D544 7F048A14 02402825 */ move $a1, $s2 +/* 07D548 7F048A18 100001EB */ b .L7F0491C8 +/* 07D54C 7F048A1C 8E8F0008 */ lw $t7, 8($s4) +/* 07D550 7F048A20 24010008 */ li $at, 8 +.L7F048A24: +/* 07D554 7F048A24 54410017 */ bnel $v0, $at, .L7F048A84 +/* 07D558 7F048A28 2401000C */ li $at, 12 +/* 07D55C 7F048A2C 8E8C0008 */ lw $t4, 8($s4) +/* 07D560 7F048A30 24020001 */ li $v0, 1 +/* 07D564 7F048A34 26440040 */ addiu $a0, $s2, 0x40 +/* 07D568 7F048A38 858A000E */ lh $t2, 0xe($t4) +/* 07D56C 7F048A3C 29410002 */ slti $at, $t2, 2 +/* 07D570 7F048A40 542001E1 */ bnezl $at, .L7F0491C8 +/* 07D574 7F048A44 8E8F0008 */ lw $t7, 8($s4) +/* 07D578 7F048A48 AFA202F8 */ sw $v0, 0x2f8($sp) +.L7F048A4C: +/* 07D57C 7F048A4C 0FC15FF4 */ jal reset_array_of_0x10_floats +/* 07D580 7F048A50 AFA40074 */ sw $a0, 0x74($sp) +/* 07D584 7F048A54 8E8E0008 */ lw $t6, 8($s4) +/* 07D588 7F048A58 8FA202F8 */ lw $v0, 0x2f8($sp) +/* 07D58C 7F048A5C 8FA40074 */ lw $a0, 0x74($sp) +/* 07D590 7F048A60 85CD000E */ lh $t5, 0xe($t6) +/* 07D594 7F048A64 24420001 */ addiu $v0, $v0, 1 +/* 07D598 7F048A68 24840040 */ addiu $a0, $a0, 0x40 +/* 07D59C 7F048A6C 004D082A */ slt $at, $v0, $t5 +/* 07D5A0 7F048A70 5420FFF6 */ bnezl $at, .L7F048A4C +/* 07D5A4 7F048A74 AFA202F8 */ sw $v0, 0x2f8($sp) +/* 07D5A8 7F048A78 100001D3 */ b .L7F0491C8 +/* 07D5AC 7F048A7C 8E8F0008 */ lw $t7, 8($s4) +/* 07D5B0 7F048A80 2401000C */ li $at, 12 +.L7F048A84: +/* 07D5B4 7F048A84 5441002C */ bnel $v0, $at, .L7F048B38 +/* 07D5B8 7F048A88 24010027 */ li $at, 39 +/* 07D5BC 7F048A8C 8E980008 */ lw $t8, 8($s4) +/* 07D5C0 7F048A90 26450040 */ addiu $a1, $s2, 0x40 +/* 07D5C4 7F048A94 8F0F0008 */ lw $t7, 8($t8) +/* 07D5C8 7F048A98 8DE80000 */ lw $t0, ($t7) +/* 07D5CC 7F048A9C 8D040004 */ lw $a0, 4($t0) +/* 07D5D0 7F048AA0 0FC16259 */ jal init_something_copy_posdata_to_it +/* 07D5D4 7F048AA4 AFA5006C */ sw $a1, 0x6c($sp) +/* 07D5D8 7F048AA8 02402025 */ move $a0, $s2 +/* 07D5DC 7F048AAC 0FC16026 */ jal sub_GAME_7F058098 +/* 07D5E0 7F048AB0 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D5E4 7F048AB4 8E8B0008 */ lw $t3, 8($s4) +/* 07D5E8 7F048AB8 26450080 */ addiu $a1, $s2, 0x80 +/* 07D5EC 7F048ABC 8D690008 */ lw $t1, 8($t3) +/* 07D5F0 7F048AC0 8D390004 */ lw $t9, 4($t1) +/* 07D5F4 7F048AC4 8F240004 */ lw $a0, 4($t9) +/* 07D5F8 7F048AC8 0FC16259 */ jal init_something_copy_posdata_to_it +/* 07D5FC 7F048ACC AFA50068 */ sw $a1, 0x68($sp) +/* 07D600 7F048AD0 02402025 */ move $a0, $s2 +/* 07D604 7F048AD4 0FC16026 */ jal sub_GAME_7F058098 +/* 07D608 7F048AD8 8FA50068 */ lw $a1, 0x68($sp) +/* 07D60C 7F048ADC 8E8C0008 */ lw $t4, 8($s4) +/* 07D610 7F048AE0 264500C0 */ addiu $a1, $s2, 0xc0 +/* 07D614 7F048AE4 8D8A0008 */ lw $t2, 8($t4) +/* 07D618 7F048AE8 8D4E0008 */ lw $t6, 8($t2) +/* 07D61C 7F048AEC 8DC40004 */ lw $a0, 4($t6) +/* 07D620 7F048AF0 0FC16259 */ jal init_something_copy_posdata_to_it +/* 07D624 7F048AF4 AFA50074 */ sw $a1, 0x74($sp) +/* 07D628 7F048AF8 02402025 */ move $a0, $s2 +/* 07D62C 7F048AFC 0FC16026 */ jal sub_GAME_7F058098 +/* 07D630 7F048B00 8FA50074 */ lw $a1, 0x74($sp) +/* 07D634 7F048B04 8E8D0008 */ lw $t5, 8($s4) +/* 07D638 7F048B08 26500100 */ addiu $s0, $s2, 0x100 +/* 07D63C 7F048B0C 02002825 */ move $a1, $s0 +/* 07D640 7F048B10 8DB80008 */ lw $t8, 8($t5) +/* 07D644 7F048B14 8F0F000C */ lw $t7, 0xc($t8) +/* 07D648 7F048B18 0FC16259 */ jal init_something_copy_posdata_to_it +/* 07D64C 7F048B1C 8DE40004 */ lw $a0, 4($t7) +/* 07D650 7F048B20 02402025 */ move $a0, $s2 +/* 07D654 7F048B24 0FC16026 */ jal sub_GAME_7F058098 +/* 07D658 7F048B28 02002825 */ move $a1, $s0 +/* 07D65C 7F048B2C 100001A6 */ b .L7F0491C8 +/* 07D660 7F048B30 8E8F0008 */ lw $t7, 8($s4) +/* 07D664 7F048B34 24010027 */ li $at, 39 +.L7F048B38: +/* 07D668 7F048B38 544100B9 */ bnel $v0, $at, .L7F048E20 +/* 07D66C 7F048B3C 24010028 */ li $at, 40 +/* 07D670 7F048B40 8E880008 */ lw $t0, 8($s4) +/* 07D674 7F048B44 8FAF0678 */ lw $t7, 0x678($sp) +/* 07D678 7F048B48 4600B006 */ mov.s $f0, $f22 +/* 07D67C 7F048B4C 8D030008 */ lw $v1, 8($t0) +/* 07D680 7F048B50 8C6B0004 */ lw $t3, 4($v1) +/* 07D684 7F048B54 8D690004 */ lw $t1, 4($t3) +/* 07D688 7F048B58 AFA90260 */ sw $t1, 0x260($sp) +/* 07D68C 7F048B5C 8C790008 */ lw $t9, 8($v1) +/* 07D690 7F048B60 8F2C0004 */ lw $t4, 4($t9) +/* 07D694 7F048B64 AFAC025C */ sw $t4, 0x25c($sp) +/* 07D698 7F048B68 8C6E0010 */ lw $t6, 0x10($v1) +/* 07D69C 7F048B6C 8C6A000C */ lw $t2, 0xc($v1) +/* 07D6A0 7F048B70 8DCD0004 */ lw $t5, 4($t6) +/* 07D6A4 7F048B74 8D500004 */ lw $s0, 4($t2) +/* 07D6A8 7F048B78 AFAD0254 */ sw $t5, 0x254($sp) +/* 07D6AC 7F048B7C 8C780018 */ lw $t8, 0x18($v1) +/* 07D6B0 7F048B80 C6840014 */ lwc1 $f4, 0x14($s4) +/* 07D6B4 7F048B84 8F020004 */ lw $v0, 4($t8) +/* 07D6B8 7F048B88 C4460010 */ lwc1 $f6, 0x10($v0) +/* 07D6BC 7F048B8C C44A000C */ lwc1 $f10, 0xc($v0) +/* 07D6C0 7F048B90 460A3201 */ sub.s $f8, $f6, $f10 +/* 07D6C4 7F048B94 46044082 */ mul.s $f2, $f8, $f4 +/* 07D6C8 7F048B98 11E00026 */ beqz $t7, .L7F048C34 +/* 07D6CC 7F048B9C 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07D6D0 7F048BA0 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07D6D4 7F048BA4 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07D6D8 7F048BA8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07D6DC 7F048BAC 460A3202 */ mul.s $f8, $f6, $f10 +/* 07D6E0 7F048BB0 44815000 */ mtc1 $at, $f10 +/* 07D6E4 7F048BB4 46144102 */ mul.s $f4, $f8, $f20 +/* 07D6E8 7F048BB8 00000000 */ nop +/* 07D6EC 7F048BBC 46141182 */ mul.s $f6, $f2, $f20 +/* 07D6F0 7F048BC0 00000000 */ nop +/* 07D6F4 7F048BC4 460A3202 */ mul.s $f8, $f6, $f10 +/* 07D6F8 7F048BC8 C626008C */ lwc1 $f6, 0x8c($s1) +/* 07D6FC 7F048BCC 46082003 */ div.s $f0, $f4, $f8 +/* 07D700 7F048BD0 46003280 */ add.s $f10, $f6, $f0 +/* 07D704 7F048BD4 E62A008C */ swc1 $f10, 0x8c($s1) +/* 07D708 7F048BD8 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07D70C 7F048BDC 460CA03E */ c.le.s $f20, $f12 +/* 07D710 7F048BE0 00000000 */ nop +/* 07D714 7F048BE4 45000008 */ bc1f .L7F048C08 +/* 07D718 7F048BE8 00000000 */ nop +/* 07D71C 7F048BEC 46146101 */ sub.s $f4, $f12, $f20 +.L7F048BF0: +/* 07D720 7F048BF0 E624008C */ swc1 $f4, 0x8c($s1) +/* 07D724 7F048BF4 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07D728 7F048BF8 460CA03E */ c.le.s $f20, $f12 +/* 07D72C 7F048BFC 00000000 */ nop +/* 07D730 7F048C00 4503FFFB */ bc1tl .L7F048BF0 +/* 07D734 7F048C04 46146101 */ sub.s $f4, $f12, $f20 +.L7F048C08: +/* 07D738 7F048C08 4616603C */ c.lt.s $f12, $f22 +/* 07D73C 7F048C0C 00000000 */ nop +/* 07D740 7F048C10 45020009 */ bc1fl .L7F048C38 +/* 07D744 7F048C14 C626008C */ lwc1 $f6, 0x8c($s1) +/* 07D748 7F048C18 46146200 */ add.s $f8, $f12, $f20 +.L7F048C1C: +/* 07D74C 7F048C1C E628008C */ swc1 $f8, 0x8c($s1) +/* 07D750 7F048C20 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07D754 7F048C24 4616603C */ c.lt.s $f12, $f22 +/* 07D758 7F048C28 00000000 */ nop +/* 07D75C 7F048C2C 4503FFFB */ bc1tl .L7F048C1C +/* 07D760 7F048C30 46146200 */ add.s $f8, $f12, $f20 +.L7F048C34: +/* 07D764 7F048C34 C626008C */ lwc1 $f6, 0x8c($s1) +.L7F048C38: +/* 07D768 7F048C38 46003280 */ add.s $f10, $f6, $f0 +/* 07D76C 7F048C3C E62A008C */ swc1 $f10, 0x8c($s1) +/* 07D770 7F048C40 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07D774 7F048C44 460CA03E */ c.le.s $f20, $f12 +/* 07D778 7F048C48 00000000 */ nop +/* 07D77C 7F048C4C 45020009 */ bc1fl .L7F048C74 +/* 07D780 7F048C50 4616603C */ c.lt.s $f12, $f22 +/* 07D784 7F048C54 46146101 */ sub.s $f4, $f12, $f20 +.L7F048C58: +/* 07D788 7F048C58 E624008C */ swc1 $f4, 0x8c($s1) +/* 07D78C 7F048C5C C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07D790 7F048C60 460CA03E */ c.le.s $f20, $f12 +/* 07D794 7F048C64 00000000 */ nop +/* 07D798 7F048C68 4503FFFB */ bc1tl .L7F048C58 +/* 07D79C 7F048C6C 46146101 */ sub.s $f4, $f12, $f20 +/* 07D7A0 7F048C70 4616603C */ c.lt.s $f12, $f22 +.L7F048C74: +/* 07D7A4 7F048C74 00000000 */ nop +/* 07D7A8 7F048C78 45000008 */ bc1f .L7F048C9C +/* 07D7AC 7F048C7C 00000000 */ nop +/* 07D7B0 7F048C80 46146200 */ add.s $f8, $f12, $f20 +.L7F048C84: +/* 07D7B4 7F048C84 E628008C */ swc1 $f8, 0x8c($s1) +/* 07D7B8 7F048C88 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07D7BC 7F048C8C 4616603C */ c.lt.s $f12, $f22 +/* 07D7C0 7F048C90 00000000 */ nop +/* 07D7C4 7F048C94 4503FFFB */ bc1tl .L7F048C84 +/* 07D7C8 7F048C98 46146200 */ add.s $f8, $f12, $f20 +.L7F048C9C: +/* 07D7CC 7F048C9C 0FC1615C */ jal sub_GAME_7F058570 +/* 07D7D0 7F048CA0 27A502AC */ addiu $a1, $sp, 0x2ac +/* 07D7D4 7F048CA4 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07D7D8 7F048CA8 4606B03C */ c.lt.s $f22, $f6 +/* 07D7DC 7F048CAC 00000000 */ nop +/* 07D7E0 7F048CB0 4502002B */ bc1fl .L7F048D60 +/* 07D7E4 7F048CB4 C62C0090 */ lwc1 $f12, 0x90($s1) +/* 07D7E8 7F048CB8 8FA80260 */ lw $t0, 0x260($sp) +/* 07D7EC 7F048CBC C60A0008 */ lwc1 $f10, 8($s0) +/* 07D7F0 7F048CC0 C62C009C */ lwc1 $f12, 0x9c($s1) +/* 07D7F4 7F048CC4 C5040008 */ lwc1 $f4, 8($t0) +/* 07D7F8 7F048CC8 C6860014 */ lwc1 $f6, 0x14($s4) +/* 07D7FC 7F048CCC 4616603C */ c.lt.s $f12, $f22 +/* 07D800 7F048CD0 46045201 */ sub.s $f8, $f10, $f4 +/* 07D804 7F048CD4 46064082 */ mul.s $f2, $f8, $f6 +/* 07D808 7F048CD8 45020003 */ bc1fl .L7F048CE8 +/* 07D80C 7F048CDC E7A20250 */ swc1 $f2, 0x250($sp) +/* 07D810 7F048CE0 46006307 */ neg.s $f12, $f12 +/* 07D814 7F048CE4 E7A20250 */ swc1 $f2, 0x250($sp) +.L7F048CE8: +/* 07D818 7F048CE8 0FC15FAB */ jal sinf +/* 07D81C 7F048CEC E7AC024C */ swc1 $f12, 0x24c($sp) +/* 07D820 7F048CF0 C7A20250 */ lwc1 $f2, 0x250($sp) +/* 07D824 7F048CF4 C7AC024C */ lwc1 $f12, 0x24c($sp) +/* 07D828 7F048CF8 46020282 */ mul.s $f10, $f0, $f2 +/* 07D82C 7F048CFC 0FC15FA8 */ jal cosf +/* 07D830 7F048D00 E7AA0248 */ swc1 $f10, 0x248($sp) +/* 07D834 7F048D04 C7A20250 */ lwc1 $f2, 0x250($sp) +/* 07D838 7F048D08 C6280088 */ lwc1 $f8, 0x88($s1) +/* 07D83C 7F048D0C C7AC0248 */ lwc1 $f12, 0x248($sp) +/* 07D840 7F048D10 46020102 */ mul.s $f4, $f0, $f2 +/* 07D844 7F048D14 46081181 */ sub.s $f6, $f2, $f8 +/* 07D848 7F048D18 0FC16A8C */ jal convert_angle_using_inverse +/* 07D84C 7F048D1C 46062381 */ sub.s $f14, $f4, $f6 +/* 07D850 7F048D20 C7A2024C */ lwc1 $f2, 0x24c($sp) +/* 07D854 7F048D24 E6200090 */ swc1 $f0, 0x90($s1) +/* 07D858 7F048D28 4602003C */ c.lt.s $f0, $f2 +/* 07D85C 7F048D2C 00000000 */ nop +/* 07D860 7F048D30 45020003 */ bc1fl .L7F048D40 +/* 07D864 7F048D34 C62A009C */ lwc1 $f10, 0x9c($s1) +/* 07D868 7F048D38 E6220090 */ swc1 $f2, 0x90($s1) +/* 07D86C 7F048D3C C62A009C */ lwc1 $f10, 0x9c($s1) +.L7F048D40: +/* 07D870 7F048D40 460AB03C */ c.lt.s $f22, $f10 +/* 07D874 7F048D44 00000000 */ nop +/* 07D878 7F048D48 45020005 */ bc1fl .L7F048D60 +/* 07D87C 7F048D4C C62C0090 */ lwc1 $f12, 0x90($s1) +/* 07D880 7F048D50 C6280090 */ lwc1 $f8, 0x90($s1) +/* 07D884 7F048D54 4608A101 */ sub.s $f4, $f20, $f8 +/* 07D888 7F048D58 E6240090 */ swc1 $f4, 0x90($s1) +/* 07D88C 7F048D5C C62C0090 */ lwc1 $f12, 0x90($s1) +.L7F048D60: +/* 07D890 7F048D60 0FC1617F */ jal sub_GAME_7F0585FC +/* 07D894 7F048D64 27A5026C */ addiu $a1, $sp, 0x26c +/* 07D898 7F048D68 264500C0 */ addiu $a1, $s2, 0xc0 +/* 07D89C 7F048D6C AFA50074 */ sw $a1, 0x74($sp) +/* 07D8A0 7F048D70 0FC16008 */ jal sub_GAME_7F058020 +/* 07D8A4 7F048D74 27A402AC */ addiu $a0, $sp, 0x2ac +/* 07D8A8 7F048D78 02002025 */ move $a0, $s0 +/* 07D8AC 7F048D7C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D8B0 7F048D80 8FA50074 */ lw $a1, 0x74($sp) +/* 07D8B4 7F048D84 02402025 */ move $a0, $s2 +/* 07D8B8 7F048D88 0FC16026 */ jal sub_GAME_7F058098 +/* 07D8BC 7F048D8C 8FA50074 */ lw $a1, 0x74($sp) +/* 07D8C0 7F048D90 26500100 */ addiu $s0, $s2, 0x100 +/* 07D8C4 7F048D94 02002825 */ move $a1, $s0 +/* 07D8C8 7F048D98 0FC16008 */ jal sub_GAME_7F058020 +/* 07D8CC 7F048D9C 27A402AC */ addiu $a0, $sp, 0x2ac +/* 07D8D0 7F048DA0 8FA40254 */ lw $a0, 0x254($sp) +/* 07D8D4 7F048DA4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D8D8 7F048DA8 02002825 */ move $a1, $s0 +/* 07D8DC 7F048DAC 02402025 */ move $a0, $s2 +/* 07D8E0 7F048DB0 0FC16026 */ jal sub_GAME_7F058098 +/* 07D8E4 7F048DB4 02002825 */ move $a1, $s0 +/* 07D8E8 7F048DB8 27A4026C */ addiu $a0, $sp, 0x26c +/* 07D8EC 7F048DBC 0FC16026 */ jal sub_GAME_7F058098 +/* 07D8F0 7F048DC0 27A502AC */ addiu $a1, $sp, 0x2ac +/* 07D8F4 7F048DC4 26450040 */ addiu $a1, $s2, 0x40 +/* 07D8F8 7F048DC8 AFA5006C */ sw $a1, 0x6c($sp) +/* 07D8FC 7F048DCC 0FC16008 */ jal sub_GAME_7F058020 +/* 07D900 7F048DD0 27A402AC */ addiu $a0, $sp, 0x2ac +/* 07D904 7F048DD4 8FA40260 */ lw $a0, 0x260($sp) +/* 07D908 7F048DD8 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D90C 7F048DDC 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D910 7F048DE0 02402025 */ move $a0, $s2 +/* 07D914 7F048DE4 0FC16026 */ jal sub_GAME_7F058098 +/* 07D918 7F048DE8 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D91C 7F048DEC 26450080 */ addiu $a1, $s2, 0x80 +/* 07D920 7F048DF0 AFA50068 */ sw $a1, 0x68($sp) +/* 07D924 7F048DF4 0FC16008 */ jal sub_GAME_7F058020 +/* 07D928 7F048DF8 27A402AC */ addiu $a0, $sp, 0x2ac +/* 07D92C 7F048DFC 8FA4025C */ lw $a0, 0x25c($sp) +/* 07D930 7F048E00 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D934 7F048E04 8FA50068 */ lw $a1, 0x68($sp) +/* 07D938 7F048E08 02402025 */ move $a0, $s2 +/* 07D93C 7F048E0C 0FC16026 */ jal sub_GAME_7F058098 +/* 07D940 7F048E10 8FA50068 */ lw $a1, 0x68($sp) +/* 07D944 7F048E14 100000EC */ b .L7F0491C8 +/* 07D948 7F048E18 8E8F0008 */ lw $t7, 8($s4) +/* 07D94C 7F048E1C 24010028 */ li $at, 40 +.L7F048E20: +/* 07D950 7F048E20 14410086 */ bne $v0, $at, .L7F04903C +/* 07D954 7F048E24 00000000 */ nop +/* 07D958 7F048E28 8E8B0008 */ lw $t3, 8($s4) +/* 07D95C 7F048E2C 3C0A8005 */ lui $t2, %hi(clock_timer) +/* 07D960 7F048E30 8D4A8374 */ lw $t2, %lo(clock_timer)($t2) +/* 07D964 7F048E34 8D690008 */ lw $t1, 8($t3) +/* 07D968 7F048E38 8FAE0678 */ lw $t6, 0x678($sp) +/* 07D96C 7F048E3C 27B001B0 */ addiu $s0, $sp, 0x1b0 +/* 07D970 7F048E40 8D390008 */ lw $t9, 8($t1) +/* 07D974 7F048E44 3C0F8003 */ lui $t7, %hi(D_80030B34) +/* 07D978 7F048E48 02402025 */ move $a0, $s2 +/* 07D97C 7F048E4C 8F2C0004 */ lw $t4, 4($t9) +/* 07D980 7F048E50 26450040 */ addiu $a1, $s2, 0x40 +/* 07D984 7F048E54 1940001E */ blez $t2, .L7F048ED0 +/* 07D988 7F048E58 AFAC01FC */ sw $t4, 0x1fc($sp) +/* 07D98C 7F048E5C 51C0001D */ beql $t6, $zero, .L7F048ED4 +/* 07D990 7F048E60 8E2D0014 */ lw $t5, 0x14($s1) +/* 07D994 7F048E64 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07D998 7F048E68 C62A008C */ lwc1 $f10, 0x8c($s1) +/* 07D99C 7F048E6C 460A3200 */ add.s $f8, $f6, $f10 +/* 07D9A0 7F048E70 E6280088 */ swc1 $f8, 0x88($s1) +/* 07D9A4 7F048E74 C6200088 */ lwc1 $f0, 0x88($s1) +/* 07D9A8 7F048E78 4600A03E */ c.le.s $f20, $f0 +/* 07D9AC 7F048E7C 00000000 */ nop +/* 07D9B0 7F048E80 45020009 */ bc1fl .L7F048EA8 +/* 07D9B4 7F048E84 4616003C */ c.lt.s $f0, $f22 +/* 07D9B8 7F048E88 46140101 */ sub.s $f4, $f0, $f20 +.L7F048E8C: +/* 07D9BC 7F048E8C E6240088 */ swc1 $f4, 0x88($s1) +/* 07D9C0 7F048E90 C6200088 */ lwc1 $f0, 0x88($s1) +/* 07D9C4 7F048E94 4600A03E */ c.le.s $f20, $f0 +/* 07D9C8 7F048E98 00000000 */ nop +/* 07D9CC 7F048E9C 4503FFFB */ bc1tl .L7F048E8C +/* 07D9D0 7F048EA0 46140101 */ sub.s $f4, $f0, $f20 +/* 07D9D4 7F048EA4 4616003C */ c.lt.s $f0, $f22 +.L7F048EA8: +/* 07D9D8 7F048EA8 00000000 */ nop +/* 07D9DC 7F048EAC 45020009 */ bc1fl .L7F048ED4 +/* 07D9E0 7F048EB0 8E2D0014 */ lw $t5, 0x14($s1) +/* 07D9E4 7F048EB4 46140180 */ add.s $f6, $f0, $f20 +.L7F048EB8: +/* 07D9E8 7F048EB8 E6260088 */ swc1 $f6, 0x88($s1) +/* 07D9EC 7F048EBC C6200088 */ lwc1 $f0, 0x88($s1) +/* 07D9F0 7F048EC0 4616003C */ c.lt.s $f0, $f22 +/* 07D9F4 7F048EC4 00000000 */ nop +/* 07D9F8 7F048EC8 4503FFFB */ bc1tl .L7F048EB8 +/* 07D9FC 7F048ECC 46140180 */ add.s $f6, $f0, $f20 +.L7F048ED0: +/* 07DA00 7F048ED0 8E2D0014 */ lw $t5, 0x14($s1) +.L7F048ED4: +/* 07DA04 7F048ED4 25EF0B34 */ addiu $t7, %lo(D_80030B34) # addiu $t7, $t7, 0xb34 +/* 07DA08 7F048ED8 25EB003C */ addiu $t3, $t7, 0x3c +/* 07DA0C 7F048EDC 8DB80020 */ lw $t8, 0x20($t5) +/* 07DA10 7F048EE0 02004825 */ move $t1, $s0 +/* 07DA14 7F048EE4 13000015 */ beqz $t8, .L7F048F3C +/* 07DA18 7F048EE8 00000000 */ nop +.L7F048EEC: +/* 07DA1C 7F048EEC 8DE10000 */ lw $at, ($t7) +/* 07DA20 7F048EF0 25EF000C */ addiu $t7, $t7, 0xc +/* 07DA24 7F048EF4 2529000C */ addiu $t1, $t1, 0xc +/* 07DA28 7F048EF8 AD21FFF4 */ sw $at, -0xc($t1) +/* 07DA2C 7F048EFC 8DE1FFF8 */ lw $at, -8($t7) +/* 07DA30 7F048F00 AD21FFF8 */ sw $at, -8($t1) +/* 07DA34 7F048F04 8DE1FFFC */ lw $at, -4($t7) +/* 07DA38 7F048F08 15EBFFF8 */ bne $t7, $t3, .L7F048EEC +/* 07DA3C 7F048F0C AD21FFFC */ sw $at, -4($t1) +/* 07DA40 7F048F10 8DE10000 */ lw $at, ($t7) +/* 07DA44 7F048F14 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 07DA48 7F048F18 AD210000 */ sw $at, ($t1) +/* 07DA4C 7F048F1C AFA201B0 */ sw $v0, 0x1b0($sp) +/* 07DA50 7F048F20 AFB201C0 */ sw $s2, 0x1c0($sp) +/* 07DA54 7F048F24 8E250014 */ lw $a1, 0x14($s1) +/* 07DA58 7F048F28 0FC1BCBE */ jal subcalcmatrices +/* 07DA5C 7F048F2C 02002025 */ move $a0, $s0 +/* 07DA60 7F048F30 26590040 */ addiu $t9, $s2, 0x40 +/* 07DA64 7F048F34 10000003 */ b .L7F048F44 +/* 07DA68 7F048F38 AFB9006C */ sw $t9, 0x6c($sp) +.L7F048F3C: +/* 07DA6C 7F048F3C 0FC16008 */ jal sub_GAME_7F058020 +/* 07DA70 7F048F40 AFA5006C */ sw $a1, 0x6c($sp) +.L7F048F44: +/* 07DA74 7F048F44 8E2C0008 */ lw $t4, 8($s1) +/* 07DA78 7F048F48 27A50200 */ addiu $a1, $sp, 0x200 +/* 07DA7C 7F048F4C 000C5080 */ sll $t2, $t4, 2 +/* 07DA80 7F048F50 05410006 */ bgez $t2, .L7F048F6C +/* 07DA84 7F048F54 00000000 */ nop +/* 07DA88 7F048F58 C62C0088 */ lwc1 $f12, 0x88($s1) +/* 07DA8C 7F048F5C 0FC161A2 */ jal sub_GAME_7F058688 +/* 07DA90 7F048F60 27A50200 */ addiu $a1, $sp, 0x200 +/* 07DA94 7F048F64 10000004 */ b .L7F048F78 +/* 07DA98 7F048F68 26450080 */ addiu $a1, $s2, 0x80 +.L7F048F6C: +/* 07DA9C 7F048F6C 0FC1617F */ jal sub_GAME_7F0585FC +/* 07DAA0 7F048F70 C62C0088 */ lwc1 $f12, 0x88($s1) +/* 07DAA4 7F048F74 26450080 */ addiu $a1, $s2, 0x80 +.L7F048F78: +/* 07DAA8 7F048F78 AFA50068 */ sw $a1, 0x68($sp) +/* 07DAAC 7F048F7C 0FC16008 */ jal sub_GAME_7F058020 +/* 07DAB0 7F048F80 27A40200 */ addiu $a0, $sp, 0x200 +/* 07DAB4 7F048F84 8FA401FC */ lw $a0, 0x1fc($sp) +/* 07DAB8 7F048F88 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DABC 7F048F8C 8FA50068 */ lw $a1, 0x68($sp) +/* 07DAC0 7F048F90 8FA4006C */ lw $a0, 0x6c($sp) +/* 07DAC4 7F048F94 0FC16026 */ jal sub_GAME_7F058098 +/* 07DAC8 7F048F98 8FA50068 */ lw $a1, 0x68($sp) +/* 07DACC 7F048F9C 8E8E0008 */ lw $t6, 8($s4) +/* 07DAD0 7F048FA0 02802025 */ move $a0, $s4 +/* 07DAD4 7F048FA4 00003025 */ move $a2, $zero +/* 07DAD8 7F048FA8 8DC30008 */ lw $v1, 8($t6) +/* 07DADC 7F048FAC 8C65000C */ lw $a1, 0xc($v1) +/* 07DAE0 7F048FB0 50A00013 */ beql $a1, $zero, .L7F049000 +/* 07DAE4 7F048FB4 8C650010 */ lw $a1, 0x10($v1) +/* 07DAE8 7F048FB8 0FC1B198 */ jal sub_GAME_7F06C660 +/* 07DAEC 7F048FBC 8CB20004 */ lw $s2, 4($a1) +/* 07DAF0 7F048FC0 00408025 */ move $s0, $v0 +/* 07DAF4 7F048FC4 C62C0088 */ lwc1 $f12, 0x88($s1) +/* 07DAF8 7F048FC8 0FC1615C */ jal sub_GAME_7F058570 +/* 07DAFC 7F048FCC 27A50200 */ addiu $a1, $sp, 0x200 +/* 07DB00 7F048FD0 27A40200 */ addiu $a0, $sp, 0x200 +/* 07DB04 7F048FD4 0FC16008 */ jal sub_GAME_7F058020 +/* 07DB08 7F048FD8 02002825 */ move $a1, $s0 +/* 07DB0C 7F048FDC 02402025 */ move $a0, $s2 +/* 07DB10 7F048FE0 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DB14 7F048FE4 02002825 */ move $a1, $s0 +/* 07DB18 7F048FE8 8FA4006C */ lw $a0, 0x6c($sp) +/* 07DB1C 7F048FEC 0FC16026 */ jal sub_GAME_7F058098 +/* 07DB20 7F048FF0 02002825 */ move $a1, $s0 +/* 07DB24 7F048FF4 8E8D0008 */ lw $t5, 8($s4) +/* 07DB28 7F048FF8 8DA30008 */ lw $v1, 8($t5) +/* 07DB2C 7F048FFC 8C650010 */ lw $a1, 0x10($v1) +.L7F049000: +/* 07DB30 7F049000 02802025 */ move $a0, $s4 +/* 07DB34 7F049004 00003025 */ move $a2, $zero +/* 07DB38 7F049008 50A0006F */ beql $a1, $zero, .L7F0491C8 +/* 07DB3C 7F04900C 8E8F0008 */ lw $t7, 8($s4) +/* 07DB40 7F049010 0FC1B198 */ jal sub_GAME_7F06C660 +/* 07DB44 7F049014 8CB20004 */ lw $s2, 4($a1) +/* 07DB48 7F049018 00408025 */ move $s0, $v0 +/* 07DB4C 7F04901C 02402025 */ move $a0, $s2 +/* 07DB50 7F049020 0FC16259 */ jal init_something_copy_posdata_to_it +/* 07DB54 7F049024 00402825 */ move $a1, $v0 +/* 07DB58 7F049028 8FA4006C */ lw $a0, 0x6c($sp) +/* 07DB5C 7F04902C 0FC16026 */ jal sub_GAME_7F058098 +/* 07DB60 7F049030 02002825 */ move $a1, $s0 +/* 07DB64 7F049034 10000064 */ b .L7F0491C8 +/* 07DB68 7F049038 8E8F0008 */ lw $t7, 8($s4) +.L7F04903C: +/* 07DB6C 7F04903C 16020061 */ bne $s0, $v0, .L7F0491C4 +/* 07DB70 7F049040 26450040 */ addiu $a1, $s2, 0x40 +/* 07DB74 7F049044 8E980008 */ lw $t8, 8($s4) +/* 07DB78 7F049048 8F030008 */ lw $v1, 8($t8) +/* 07DB7C 7F04904C 8C6B000C */ lw $t3, 0xc($v1) +/* 07DB80 7F049050 8C680004 */ lw $t0, 4($v1) +/* 07DB84 7F049054 8D6F0004 */ lw $t7, 4($t3) +/* 07DB88 7F049058 8D100004 */ lw $s0, 4($t0) +/* 07DB8C 7F04905C AFAF0164 */ sw $t7, 0x164($sp) +/* 07DB90 7F049060 8C690010 */ lw $t1, 0x10($v1) +/* 07DB94 7F049064 8D390004 */ lw $t9, 4($t1) +/* 07DB98 7F049068 AFB90160 */ sw $t9, 0x160($sp) +/* 07DB9C 7F04906C 8C6C0008 */ lw $t4, 8($v1) +/* 07DBA0 7F049070 8D8A0004 */ lw $t2, 4($t4) +/* 07DBA4 7F049074 AFAA015C */ sw $t2, 0x15c($sp) +/* 07DBA8 7F049078 8C6E0018 */ lw $t6, 0x18($v1) +/* 07DBAC 7F04907C 8DCD0004 */ lw $t5, 4($t6) +/* 07DBB0 7F049080 AFAD0158 */ sw $t5, 0x158($sp) +/* 07DBB4 7F049084 C62E00C8 */ lwc1 $f14, 0xc8($s1) +/* 07DBB8 7F049088 46007387 */ neg.s $f14, $f14 +/* 07DBBC 7F04908C 4616703C */ c.lt.s $f14, $f22 +/* 07DBC0 7F049090 00000000 */ nop +/* 07DBC4 7F049094 45020003 */ bc1fl .L7F0490A4 +/* 07DBC8 7F049098 C62C00CC */ lwc1 $f12, 0xcc($s1) +/* 07DBCC 7F04909C 46147380 */ add.s $f14, $f14, $f20 +/* 07DBD0 7F0490A0 C62C00CC */ lwc1 $f12, 0xcc($s1) +.L7F0490A4: +/* 07DBD4 7F0490A4 46006307 */ neg.s $f12, $f12 +/* 07DBD8 7F0490A8 4616603C */ c.lt.s $f12, $f22 +/* 07DBDC 7F0490AC 00000000 */ nop +/* 07DBE0 7F0490B0 45020003 */ bc1fl .L7F0490C0 +/* 07DBE4 7F0490B4 AFA5006C */ sw $a1, 0x6c($sp) +/* 07DBE8 7F0490B8 46146300 */ add.s $f12, $f12, $f20 +/* 07DBEC 7F0490BC AFA5006C */ sw $a1, 0x6c($sp) +.L7F0490C0: +/* 07DBF0 7F0490C0 0FC1617F */ jal sub_GAME_7F0585FC +/* 07DBF4 7F0490C4 E7AE0154 */ swc1 $f14, 0x154($sp) +/* 07DBF8 7F0490C8 02002025 */ move $a0, $s0 +/* 07DBFC 7F0490CC 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DC00 7F0490D0 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DC04 7F0490D4 02402025 */ move $a0, $s2 +/* 07DC08 7F0490D8 0FC16026 */ jal sub_GAME_7F058098 +/* 07DC0C 7F0490DC 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DC10 7F0490E0 264500C0 */ addiu $a1, $s2, 0xc0 +/* 07DC14 7F0490E4 C7AC0154 */ lwc1 $f12, 0x154($sp) +/* 07DC18 7F0490E8 0FC1615C */ jal sub_GAME_7F058570 +/* 07DC1C 7F0490EC AFA50074 */ sw $a1, 0x74($sp) +/* 07DC20 7F0490F0 8FA40164 */ lw $a0, 0x164($sp) +/* 07DC24 7F0490F4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DC28 7F0490F8 8FA50074 */ lw $a1, 0x74($sp) +/* 07DC2C 7F0490FC 8FA4006C */ lw $a0, 0x6c($sp) +/* 07DC30 7F049100 0FC16026 */ jal sub_GAME_7F058098 +/* 07DC34 7F049104 8FA50074 */ lw $a1, 0x74($sp) +/* 07DC38 7F049108 3C018005 */ lui $at, %hi(D_80052B70) +/* 07DC3C 7F04910C 26500100 */ addiu $s0, $s2, 0x100 +/* 07DC40 7F049110 02002825 */ move $a1, $s0 +/* 07DC44 7F049114 0FC1617F */ jal sub_GAME_7F0585FC +/* 07DC48 7F049118 C42C2B70 */ lwc1 $f12, %lo(D_80052B70)($at) +/* 07DC4C 7F04911C 8FA40160 */ lw $a0, 0x160($sp) +/* 07DC50 7F049120 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DC54 7F049124 02002825 */ move $a1, $s0 +/* 07DC58 7F049128 8FA40074 */ lw $a0, 0x74($sp) +/* 07DC5C 7F04912C 0FC16026 */ jal sub_GAME_7F058098 +/* 07DC60 7F049130 02002825 */ move $a1, $s0 +/* 07DC64 7F049134 26450080 */ addiu $a1, $s2, 0x80 +/* 07DC68 7F049138 AFA50068 */ sw $a1, 0x68($sp) +/* 07DC6C 7F04913C 0FC16259 */ jal init_something_copy_posdata_to_it +/* 07DC70 7F049140 8FA4015C */ lw $a0, 0x15c($sp) +/* 07DC74 7F049144 8FA4006C */ lw $a0, 0x6c($sp) +/* 07DC78 7F049148 0FC16026 */ jal sub_GAME_7F058098 +/* 07DC7C 7F04914C 8FA50068 */ lw $a1, 0x68($sp) +/* 07DC80 7F049150 0FC1E111 */ jal sub_GAME_7F078444 +/* 07DC84 7F049154 00000000 */ nop +/* 07DC88 7F049158 27B0016C */ addiu $s0, $sp, 0x16c +/* 07DC8C 7F04915C 02003025 */ move $a2, $s0 +/* 07DC90 7F049160 00402025 */ move $a0, $v0 +/* 07DC94 7F049164 0FC16063 */ jal sub_GAME_7F05818C +/* 07DC98 7F049168 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DC9C 7F04916C 8FA40158 */ lw $a0, 0x158($sp) +/* 07DCA0 7F049170 02002825 */ move $a1, $s0 +/* 07DCA4 7F049174 26260084 */ addiu $a2, $s1, 0x84 +/* 07DCA8 7F049178 0FC0FD50 */ jal sub_GAME_7F03F540 +/* 07DCAC 7F04917C 26270080 */ addiu $a3, $s1, 0x80 +/* 07DCB0 7F049180 8E980008 */ lw $t8, 8($s4) +/* 07DCB4 7F049184 8F030008 */ lw $v1, 8($t8) +/* 07DCB8 7F049188 8C65001C */ lw $a1, 0x1c($v1) +/* 07DCBC 7F04918C 50A00008 */ beql $a1, $zero, .L7F0491B0 +/* 07DCC0 7F049190 8C650020 */ lw $a1, 0x20($v1) +/* 07DCC4 7F049194 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 07DCC8 7F049198 02802025 */ move $a0, $s4 +/* 07DCCC 7F04919C 8E2800C4 */ lw $t0, 0xc4($s1) +/* 07DCD0 7F0491A0 A4480000 */ sh $t0, ($v0) +/* 07DCD4 7F0491A4 8E8B0008 */ lw $t3, 8($s4) +/* 07DCD8 7F0491A8 8D630008 */ lw $v1, 8($t3) +/* 07DCDC 7F0491AC 8C650020 */ lw $a1, 0x20($v1) +.L7F0491B0: +/* 07DCE0 7F0491B0 50A00005 */ beql $a1, $zero, .L7F0491C8 +/* 07DCE4 7F0491B4 8E8F0008 */ lw $t7, 8($s4) +/* 07DCE8 7F0491B8 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 07DCEC 7F0491BC 02802025 */ move $a0, $s4 +/* 07DCF0 7F0491C0 AC400000 */ sw $zero, ($v0) +.L7F0491C4: +/* 07DCF4 7F0491C4 8E8F0008 */ lw $t7, 8($s4) +.L7F0491C8: +/* 07DCF8 7F0491C8 02802025 */ move $a0, $s4 +/* 07DCFC 7F0491CC 0FC1BBA9 */ jal sub_GAME_7F06EEA4 +/* 07DD00 7F0491D0 8DE50000 */ lw $a1, ($t7) +/* 07DD04 7F0491D4 8E89000C */ lw $t1, 0xc($s4) +/* 07DD08 7F0491D8 02602025 */ move $a0, $s3 +/* 07DD0C 7F0491DC C52A0038 */ lwc1 $f10, 0x38($t1) +/* 07DD10 7F0491E0 46005207 */ neg.s $f8, $f10 +/* 07DD14 7F0491E4 0FC10F5C */ jal handle_thrown_explosive_detonation +/* 07DD18 7F0491E8 E6680018 */ swc1 $f8, 0x18($s3) +/* 07DD1C 7F0491EC 8E640020 */ lw $a0, 0x20($s3) +/* 07DD20 7F0491F0 50800018 */ beql $a0, $zero, .L7F049254 +/* 07DD24 7F0491F4 8E230064 */ lw $v1, 0x64($s1) +/* 07DD28 7F0491F8 8C820024 */ lw $v0, 0x24($a0) +.L7F0491FC: +/* 07DD2C 7F0491FC 0FC110B7 */ jal sub_GAME_7F0442DC +/* 07DD30 7F049200 AFA20684 */ sw $v0, 0x684($sp) +/* 07DD34 7F049204 8FA40684 */ lw $a0, 0x684($sp) +/* 07DD38 7F049208 5480FFFC */ bnezl $a0, .L7F0491FC +/* 07DD3C 7F04920C 8C820024 */ lw $v0, 0x24($a0) +/* 07DD40 7F049210 10000010 */ b .L7F049254 +/* 07DD44 7F049214 8E230064 */ lw $v1, 0x64($s1) +.L7F049218: +/* 07DD48 7F049218 92790001 */ lbu $t9, 1($s3) +/* 07DD4C 7F04921C 02602025 */ move $a0, $s3 +/* 07DD50 7F049220 332CFFFD */ andi $t4, $t9, 0xfffd +/* 07DD54 7F049224 0FC10F5C */ jal handle_thrown_explosive_detonation +/* 07DD58 7F049228 A26C0001 */ sb $t4, 1($s3) +/* 07DD5C 7F04922C 8E640020 */ lw $a0, 0x20($s3) +/* 07DD60 7F049230 50800008 */ beql $a0, $zero, .L7F049254 +/* 07DD64 7F049234 8E230064 */ lw $v1, 0x64($s1) +/* 07DD68 7F049238 8C820024 */ lw $v0, 0x24($a0) +.L7F04923C: +/* 07DD6C 7F04923C 0FC11093 */ jal sub_GAME_7F04424C +/* 07DD70 7F049240 AFA20684 */ sw $v0, 0x684($sp) +/* 07DD74 7F049244 8FA40684 */ lw $a0, 0x684($sp) +/* 07DD78 7F049248 5480FFFC */ bnezl $a0, .L7F04923C +/* 07DD7C 7F04924C 8C820024 */ lw $v0, 0x24($a0) +/* 07DD80 7F049250 8E230064 */ lw $v1, 0x64($s1) +.L7F049254: +/* 07DD84 7F049254 2401FEFF */ li $at, -257 +/* 07DD88 7F049258 266D0008 */ addiu $t5, $s3, 8 +/* 07DD8C 7F04925C 306A0100 */ andi $t2, $v1, 0x100 +/* 07DD90 7F049260 1140001F */ beqz $t2, .L7F0492E0 +/* 07DD94 7F049264 00617024 */ and $t6, $v1, $at +/* 07DD98 7F049268 AE2E0064 */ sw $t6, 0x64($s1) +/* 07DD9C 7F04926C 0C002914 */ jal get_random_value +/* 07DDA0 7F049270 AFAD0070 */ sw $t5, 0x70($sp) +/* 07DDA4 7F049274 44822000 */ mtc1 $v0, $f4 +/* 07DDA8 7F049278 02202025 */ move $a0, $s1 +/* 07DDAC 7F04927C 04410005 */ bgez $v0, .L7F049294 +/* 07DDB0 7F049280 468021A0 */ cvt.s.w $f6, $f4 +/* 07DDB4 7F049284 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07DDB8 7F049288 44815000 */ mtc1 $at, $f10 +/* 07DDBC 7F04928C 00000000 */ nop +/* 07DDC0 7F049290 460A3180 */ add.s $f6, $f6, $f10 +.L7F049294: +/* 07DDC4 7F049294 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07DDC8 7F049298 44814000 */ mtc1 $at, $f8 +/* 07DDCC 7F04929C 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07DDD0 7F0492A0 44815000 */ mtc1 $at, $f10 +/* 07DDD4 7F0492A4 46083102 */ mul.s $f4, $f6, $f8 +/* 07DDD8 7F0492A8 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 07DDDC 7F0492AC 44814000 */ mtc1 $at, $f8 +/* 07DDE0 7F0492B0 8E380064 */ lw $t8, 0x64($s1) +/* 07DDE4 7F0492B4 3C010006 */ lui $at, 6 +/* 07DDE8 7F0492B8 8FA60070 */ lw $a2, 0x70($sp) +/* 07DDEC 7F0492BC 03014024 */ and $t0, $t8, $at +/* 07DDF0 7F0492C0 460A2182 */ mul.s $f6, $f4, $f10 +/* 07DDF4 7F0492C4 00003825 */ move $a3, $zero +/* 07DDF8 7F0492C8 00085C42 */ srl $t3, $t0, 0x11 +/* 07DDFC 7F0492CC AFAB0010 */ sw $t3, 0x10($sp) +/* 07DE00 7F0492D0 46083100 */ add.s $f4, $f6, $f8 +/* 07DE04 7F0492D4 44052000 */ mfc1 $a1, $f4 +/* 07DE08 7F0492D8 0FC13842 */ jal maybe_detonate_object +/* 07DE0C 7F0492DC 00000000 */ nop +.L7F0492E0: +/* 07DE10 7F0492E0 8FAF0678 */ lw $t7, 0x678($sp) +/* 07DE14 7F0492E4 51E0020D */ beql $t7, $zero, .L7F049B1C +/* 07DE18 7F0492E8 8FA90680 */ lw $t1, 0x680($sp) +/* 07DE1C 7F0492EC 92220003 */ lbu $v0, 3($s1) +/* 07DE20 7F0492F0 24010001 */ li $at, 1 +/* 07DE24 7F0492F4 54410006 */ bnel $v0, $at, .L7F049310 +/* 07DE28 7F0492F8 2401000D */ li $at, 13 +/* 07DE2C 7F0492FC 0FC14E8F */ jal sub_GAME_7F053A3C +/* 07DE30 7F049300 8E640004 */ lw $a0, 4($s3) +/* 07DE34 7F049304 10000202 */ b .L7F049B10 +/* 07DE38 7F049308 00000000 */ nop +/* 07DE3C 7F04930C 2401000D */ li $at, 13 +.L7F049310: +/* 07DE40 7F049310 144101FF */ bne $v0, $at, .L7F049B10 +/* 07DE44 7F049314 00000000 */ nop +/* 07DE48 7F049318 0FC2FF01 */ jal get_controls_locked_flag +/* 07DE4C 7F04931C 00000000 */ nop +/* 07DE50 7F049320 144001FB */ bnez $v0, .L7F049B10 +/* 07DE54 7F049324 00000000 */ nop +/* 07DE58 7F049328 8E700004 */ lw $s0, 4($s3) +/* 07DE5C 7F04932C AFA0013C */ sw $zero, 0x13c($sp) +/* 07DE60 7F049330 AFA00138 */ sw $zero, 0x138($sp) +/* 07DE64 7F049334 8E0900D0 */ lw $t1, 0xd0($s0) +/* 07DE68 7F049338 512001E4 */ beql $t1, $zero, .L7F049ACC +/* 07DE6C 7F04933C 8E980008 */ lw $t8, 8($s4) +/* 07DE70 7F049340 8E390008 */ lw $t9, 8($s1) +/* 07DE74 7F049344 001960C0 */ sll $t4, $t9, 3 +/* 07DE78 7F049348 058201E0 */ bltzl $t4, .L7F049ACC +/* 07DE7C 7F04934C 8E980008 */ lw $t8, 8($s4) +/* 07DE80 7F049350 8E0A00AC */ lw $t2, 0xac($s0) +/* 07DE84 7F049354 3C0C8005 */ lui $t4, %hi(global_timer) +/* 07DE88 7F049358 254E0001 */ addiu $t6, $t2, 1 +/* 07DE8C 7F04935C 31CD0001 */ andi $t5, $t6, 1 +/* 07DE90 7F049360 AE0E00AC */ sw $t6, 0xac($s0) +/* 07DE94 7F049364 2DB80001 */ sltiu $t8, $t5, 1 +/* 07DE98 7F049368 AFB8013C */ sw $t8, 0x13c($sp) +/* 07DE9C 7F04936C 8E880008 */ lw $t0, 8($s4) +/* 07DEA0 7F049370 39A90001 */ xori $t1, $t5, 1 +/* 07DEA4 7F049374 2D290001 */ sltiu $t1, $t1, 1 +/* 07DEA8 7F049378 8D0B0008 */ lw $t3, 8($t0) +/* 07DEAC 7F04937C 8D6F0014 */ lw $t7, 0x14($t3) +/* 07DEB0 7F049380 51E00003 */ beql $t7, $zero, .L7F049390 +/* 07DEB4 7F049384 8E1900C0 */ lw $t9, 0xc0($s0) +/* 07DEB8 7F049388 AFA90138 */ sw $t1, 0x138($sp) +/* 07DEBC 7F04938C 8E1900C0 */ lw $t9, 0xc0($s0) +.L7F049390: +/* 07DEC0 7F049390 8D8C837C */ lw $t4, %lo(global_timer)($t4) +/* 07DEC4 7F049394 032C082A */ slt $at, $t9, $t4 +/* 07DEC8 7F049398 50200032 */ beql $at, $zero, .L7F049464 +/* 07DECC 7F04939C 8FAF013C */ lw $t7, 0x13c($sp) +/* 07DED0 7F0493A0 8E0400C4 */ lw $a0, 0xc4($s0) +/* 07DED4 7F0493A4 50800008 */ beql $a0, $zero, .L7F0493C8 +/* 07DED8 7F0493A8 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07DEDC 7F0493AC 0C00237C */ jal sfxGetArg0Unk3F +/* 07DEE0 7F0493B0 00000000 */ nop +/* 07DEE4 7F0493B4 50400004 */ beql $v0, $zero, .L7F0493C8 +/* 07DEE8 7F0493B8 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07DEEC 7F0493BC 0C002408 */ jal sfxDeactivate +/* 07DEF0 7F0493C0 8E0400C4 */ lw $a0, 0xc4($s0) +/* 07DEF4 7F0493C4 8E0400C8 */ lw $a0, 0xc8($s0) +.L7F0493C8: +/* 07DEF8 7F0493C8 50800008 */ beql $a0, $zero, .L7F0493EC +/* 07DEFC 7F0493CC 8E0A00C4 */ lw $t2, 0xc4($s0) +/* 07DF00 7F0493D0 0C00237C */ jal sfxGetArg0Unk3F +/* 07DF04 7F0493D4 00000000 */ nop +/* 07DF08 7F0493D8 50400004 */ beql $v0, $zero, .L7F0493EC +/* 07DF0C 7F0493DC 8E0A00C4 */ lw $t2, 0xc4($s0) +/* 07DF10 7F0493E0 0C002408 */ jal sfxDeactivate +/* 07DF14 7F0493E4 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07DF18 7F0493E8 8E0A00C4 */ lw $t2, 0xc4($s0) +.L7F0493EC: +/* 07DF1C 7F0493EC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07DF20 7F0493F0 240500FD */ li $a1, 253 +/* 07DF24 7F0493F4 1540000A */ bnez $t2, .L7F049420 +/* 07DF28 7F0493F8 260600C4 */ addiu $a2, $s0, 0xc4 +/* 07DF2C 7F0493FC 266E0008 */ addiu $t6, $s3, 8 +/* 07DF30 7F049400 AFAE0070 */ sw $t6, 0x70($sp) +/* 07DF34 7F049404 0C002382 */ jal play_sfx_a1 +/* 07DF38 7F049408 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07DF3C 7F04940C 8E0400C4 */ lw $a0, 0xc4($s0) +/* 07DF40 7F049410 0FC14E84 */ jal sub_GAME_7F053A10 +/* 07DF44 7F049414 8FA50070 */ lw $a1, 0x70($sp) +/* 07DF48 7F049418 1000000D */ b .L7F049450 +/* 07DF4C 7F04941C 00000000 */ nop +.L7F049420: +/* 07DF50 7F049420 8E0D00C8 */ lw $t5, 0xc8($s0) +/* 07DF54 7F049424 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 07DF58 7F049428 240500FD */ li $a1, 253 +/* 07DF5C 7F04942C 15A00008 */ bnez $t5, .L7F049450 +/* 07DF60 7F049430 260600C8 */ addiu $a2, $s0, 0xc8 +/* 07DF64 7F049434 26780008 */ addiu $t8, $s3, 8 +/* 07DF68 7F049438 AFB80070 */ sw $t8, 0x70($sp) +/* 07DF6C 7F04943C 0C002382 */ jal play_sfx_a1 +/* 07DF70 7F049440 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07DF74 7F049444 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07DF78 7F049448 0FC14E84 */ jal sub_GAME_7F053A10 +/* 07DF7C 7F04944C 8FA50070 */ lw $a1, 0x70($sp) +.L7F049450: +/* 07DF80 7F049450 3C088005 */ lui $t0, %hi(global_timer) +/* 07DF84 7F049454 8D08837C */ lw $t0, %lo(global_timer)($t0) +/* 07DF88 7F049458 250B0002 */ addiu $t3, $t0, 2 +/* 07DF8C 7F04945C AE0B00C0 */ sw $t3, 0xc0($s0) +/* 07DF90 7F049460 8FAF013C */ lw $t7, 0x13c($sp) +.L7F049464: +/* 07DF94 7F049464 8FA90138 */ lw $t1, 0x138($sp) +/* 07DF98 7F049468 24190001 */ li $t9, 1 +/* 07DF9C 7F04946C 55E00004 */ bnezl $t7, .L7F049480 +/* 07DFA0 7F049470 AFB9011C */ sw $t9, 0x11c($sp) +/* 07DFA4 7F049474 51200195 */ beql $t1, $zero, .L7F049ACC +/* 07DFA8 7F049478 8E980008 */ lw $t8, 8($s4) +/* 07DFAC 7F04947C AFB9011C */ sw $t9, 0x11c($sp) +.L7F049480: +/* 07DFB0 7F049480 AFA0010C */ sw $zero, 0x10c($sp) +/* 07DFB4 7F049484 8E6C0014 */ lw $t4, 0x14($s3) +/* 07DFB8 7F049488 AFAC0108 */ sw $t4, 0x108($sp) +/* 07DFBC 7F04948C 8E0A00AC */ lw $t2, 0xac($s0) +/* 07DFC0 7F049490 314E0003 */ andi $t6, $t2, 3 +/* 07DFC4 7F049494 2DCD0001 */ sltiu $t5, $t6, 1 +/* 07DFC8 7F049498 0FC225E6 */ jal get_curplayer_positiondata +/* 07DFCC 7F04949C AFAD0104 */ sw $t5, 0x104($sp) +/* 07DFD0 7F0494A0 AFA20100 */ sw $v0, 0x100($sp) +/* 07DFD4 7F0494A4 8E980008 */ lw $t8, 8($s4) +/* 07DFD8 7F0494A8 24040005 */ li $a0, 5 +/* 07DFDC 7F0494AC 8F030008 */ lw $v1, 8($t8) +/* 07DFE0 7F0494B0 8C68001C */ lw $t0, 0x1c($v1) +/* 07DFE4 7F0494B4 51000007 */ beql $t0, $zero, .L7F0494D4 +/* 07DFE8 7F0494B8 92690001 */ lbu $t1, 1($s3) +/* 07DFEC 7F0494BC 8E0B00AC */ lw $t3, 0xac($s0) +/* 07DFF0 7F0494C0 316F0007 */ andi $t7, $t3, 7 +/* 07DFF4 7F0494C4 55E00003 */ bnezl $t7, .L7F0494D4 +/* 07DFF8 7F0494C8 92690001 */ lbu $t1, 1($s3) +/* 07DFFC 7F0494CC 24040007 */ li $a0, 7 +/* 07E000 7F0494D0 92690001 */ lbu $t1, 1($s3) +.L7F0494D4: +/* 07E004 7F0494D4 31390002 */ andi $t9, $t1, 2 +/* 07E008 7F0494D8 1320002D */ beqz $t9, .L7F049590 +/* 07E00C 7F0494DC 00048880 */ sll $s1, $a0, 2 +/* 07E010 7F0494E0 00716021 */ addu $t4, $v1, $s1 +/* 07E014 7F0494E4 8D850000 */ lw $a1, ($t4) +/* 07E018 7F0494E8 02802025 */ move $a0, $s4 +/* 07E01C 7F0494EC 50A00029 */ beql $a1, $zero, .L7F049594 +/* 07E020 7F0494F0 C6640008 */ lwc1 $f4, 8($s3) +/* 07E024 7F0494F4 0FC1B198 */ jal sub_GAME_7F06C660 +/* 07E028 7F0494F8 00003025 */ move $a2, $zero +/* 07E02C 7F0494FC 8E8A0008 */ lw $t2, 8($s4) +/* 07E030 7F049500 00409025 */ move $s2, $v0 +/* 07E034 7F049504 8D4E0008 */ lw $t6, 8($t2) +/* 07E038 7F049508 01D16821 */ addu $t5, $t6, $s1 +/* 07E03C 7F04950C 8DB80000 */ lw $t8, ($t5) +/* 07E040 7F049510 8F030004 */ lw $v1, 4($t8) +/* 07E044 7F049514 C46A0000 */ lwc1 $f10, ($v1) +/* 07E048 7F049518 E7AA012C */ swc1 $f10, 0x12c($sp) +/* 07E04C 7F04951C C4660004 */ lwc1 $f6, 4($v1) +/* 07E050 7F049520 E7A60130 */ swc1 $f6, 0x130($sp) +/* 07E054 7F049524 C4680008 */ lwc1 $f8, 8($v1) +/* 07E058 7F049528 0FC1E111 */ jal sub_GAME_7F078444 +/* 07E05C 7F04952C E7A80134 */ swc1 $f8, 0x134($sp) +/* 07E060 7F049530 27B100B8 */ addiu $s1, $sp, 0xb8 +/* 07E064 7F049534 02203025 */ move $a2, $s1 +/* 07E068 7F049538 00402025 */ move $a0, $v0 +/* 07E06C 7F04953C 0FC16063 */ jal sub_GAME_7F05818C +/* 07E070 7F049540 02402825 */ move $a1, $s2 +/* 07E074 7F049544 02202025 */ move $a0, $s1 +/* 07E078 7F049548 0FC1611D */ jal sub_GAME_7F058474 +/* 07E07C 7F04954C 27A5012C */ addiu $a1, $sp, 0x12c +/* 07E080 7F049550 C7A40134 */ lwc1 $f4, 0x134($sp) +/* 07E084 7F049554 8E650008 */ lw $a1, 8($s3) +/* 07E088 7F049558 8E660010 */ lw $a2, 0x10($s3) +/* 07E08C 7F04955C 27A40108 */ addiu $a0, $sp, 0x108 +/* 07E090 7F049560 8FA7012C */ lw $a3, 0x12c($sp) +/* 07E094 7F049564 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 07E098 7F049568 E7A40010 */ swc1 $f4, 0x10($sp) +/* 07E09C 7F04956C 1440000E */ bnez $v0, .L7F0495A8 +/* 07E0A0 7F049570 00000000 */ nop +/* 07E0A4 7F049574 C66A0008 */ lwc1 $f10, 8($s3) +/* 07E0A8 7F049578 E7AA012C */ swc1 $f10, 0x12c($sp) +/* 07E0AC 7F04957C C666000C */ lwc1 $f6, 0xc($s3) +/* 07E0B0 7F049580 E7A60130 */ swc1 $f6, 0x130($sp) +/* 07E0B4 7F049584 C6680010 */ lwc1 $f8, 0x10($s3) +/* 07E0B8 7F049588 10000007 */ b .L7F0495A8 +/* 07E0BC 7F04958C E7A80134 */ swc1 $f8, 0x134($sp) +.L7F049590: +/* 07E0C0 7F049590 C6640008 */ lwc1 $f4, 8($s3) +.L7F049594: +/* 07E0C4 7F049594 E7A4012C */ swc1 $f4, 0x12c($sp) +/* 07E0C8 7F049598 C66A000C */ lwc1 $f10, 0xc($s3) +/* 07E0CC 7F04959C E7AA0130 */ swc1 $f10, 0x130($sp) +/* 07E0D0 7F0495A0 C6660010 */ lwc1 $f6, 0x10($s3) +/* 07E0D4 7F0495A4 E7A60134 */ swc1 $f6, 0x134($sp) +.L7F0495A8: +/* 07E0D8 7F0495A8 0FC15FA8 */ jal cosf +/* 07E0DC 7F0495AC C60C009C */ lwc1 $f12, 0x9c($s0) +/* 07E0E0 7F0495B0 C60C0090 */ lwc1 $f12, 0x90($s0) +/* 07E0E4 7F0495B4 0FC15FAB */ jal sinf +/* 07E0E8 7F0495B8 E7A0007C */ swc1 $f0, 0x7c($sp) +/* 07E0EC 7F0495BC C7A2007C */ lwc1 $f2, 0x7c($sp) +/* 07E0F0 7F0495C0 46020202 */ mul.s $f8, $f0, $f2 +/* 07E0F4 7F0495C4 E7A80120 */ swc1 $f8, 0x120($sp) +/* 07E0F8 7F0495C8 0FC15FAB */ jal sinf +/* 07E0FC 7F0495CC C60C009C */ lwc1 $f12, 0x9c($s0) +/* 07E100 7F0495D0 E7A00124 */ swc1 $f0, 0x124($sp) +/* 07E104 7F0495D4 0FC15FA8 */ jal cosf +/* 07E108 7F0495D8 C60C009C */ lwc1 $f12, 0x9c($s0) +/* 07E10C 7F0495DC C60C0090 */ lwc1 $f12, 0x90($s0) +/* 07E110 7F0495E0 0FC15FA8 */ jal cosf +/* 07E114 7F0495E4 E7A0007C */ swc1 $f0, 0x7c($sp) +/* 07E118 7F0495E8 C7A2007C */ lwc1 $f2, 0x7c($sp) +/* 07E11C 7F0495EC 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07E120 7F0495F0 44816000 */ mtc1 $at, $f12 +/* 07E124 7F0495F4 46020382 */ mul.s $f14, $f0, $f2 +/* 07E128 7F0495F8 C7A40120 */ lwc1 $f4, 0x120($sp) +/* 07E12C 7F0495FC C7A6012C */ lwc1 $f6, 0x12c($sp) +/* 07E130 7F049600 460C2282 */ mul.s $f10, $f4, $f12 +/* 07E134 7F049604 C7A40124 */ lwc1 $f4, 0x124($sp) +/* 07E138 7F049608 E7AE0128 */ swc1 $f14, 0x128($sp) +/* 07E13C 7F04960C 46065200 */ add.s $f8, $f10, $f6 +/* 07E140 7F049610 460C2282 */ mul.s $f10, $f4, $f12 +/* 07E144 7F049614 C7A60130 */ lwc1 $f6, 0x130($sp) +/* 07E148 7F049618 460C7102 */ mul.s $f4, $f14, $f12 +/* 07E14C 7F04961C E7A80110 */ swc1 $f8, 0x110($sp) +/* 07E150 7F049620 46065200 */ add.s $f8, $f10, $f6 +/* 07E154 7F049624 C7AA0134 */ lwc1 $f10, 0x134($sp) +/* 07E158 7F049628 460A2180 */ add.s $f6, $f4, $f10 +/* 07E15C 7F04962C E7A80114 */ swc1 $f8, 0x114($sp) +/* 07E160 7F049630 0FC2C731 */ jal sub_GAME_7F0B1CC4 +/* 07E164 7F049634 E7A60118 */ swc1 $f6, 0x118($sp) +/* 07E168 7F049638 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 07E16C 7F04963C 44810000 */ mtc1 $at, $f0 +/* 07E170 7F049640 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07E174 7F049644 44812000 */ mtc1 $at, $f4 +/* 07E178 7F049648 C7A80118 */ lwc1 $f8, 0x118($sp) +/* 07E17C 7F04964C 24080002 */ li $t0, 2 +/* 07E180 7F049650 AFA80014 */ sw $t0, 0x14($sp) +/* 07E184 7F049654 27A40108 */ addiu $a0, $sp, 0x108 +/* 07E188 7F049658 8FA5012C */ lw $a1, 0x12c($sp) +/* 07E18C 7F04965C 8FA60134 */ lw $a2, 0x134($sp) +/* 07E190 7F049660 8FA70110 */ lw $a3, 0x110($sp) +/* 07E194 7F049664 E7B60020 */ swc1 $f22, 0x20($sp) +/* 07E198 7F049668 E7A00018 */ swc1 $f0, 0x18($sp) +/* 07E19C 7F04966C E7A0001C */ swc1 $f0, 0x1c($sp) +/* 07E1A0 7F049670 E7A80010 */ swc1 $f8, 0x10($sp) +/* 07E1A4 7F049674 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 07E1A8 7F049678 E7A40024 */ swc1 $f4, 0x24($sp) +/* 07E1AC 7F04967C 14400017 */ bnez $v0, .L7F0496DC +/* 07E1B0 7F049680 27A60110 */ addiu $a2, $sp, 0x110 +/* 07E1B4 7F049684 27A4012C */ addiu $a0, $sp, 0x12c +/* 07E1B8 7F049688 0FC09893 */ jal sub_GAME_7F02624C +/* 07E1BC 7F04968C 27A50120 */ addiu $a1, $sp, 0x120 +/* 07E1C0 7F049690 3C0141D0 */ li $at, 0x41D00000 # 26.000000 +/* 07E1C4 7F049694 44818000 */ mtc1 $at, $f16 +/* 07E1C8 7F049698 C7A60120 */ lwc1 $f6, 0x120($sp) +/* 07E1CC 7F04969C C7AA0110 */ lwc1 $f10, 0x110($sp) +/* 07E1D0 7F0496A0 C7AE0128 */ lwc1 $f14, 0x128($sp) +/* 07E1D4 7F0496A4 46068202 */ mul.s $f8, $f16, $f6 +/* 07E1D8 7F0496A8 C7A60114 */ lwc1 $f6, 0x114($sp) +/* 07E1DC 7F0496AC 8FAB0108 */ lw $t3, 0x108($sp) +/* 07E1E0 7F0496B0 AFAB010C */ sw $t3, 0x10c($sp) +/* 07E1E4 7F0496B4 46085101 */ sub.s $f4, $f10, $f8 +/* 07E1E8 7F0496B8 C7AA0124 */ lwc1 $f10, 0x124($sp) +/* 07E1EC 7F0496BC 460A8202 */ mul.s $f8, $f16, $f10 +/* 07E1F0 7F0496C0 E7A40110 */ swc1 $f4, 0x110($sp) +/* 07E1F4 7F0496C4 C7AA0118 */ lwc1 $f10, 0x118($sp) +/* 07E1F8 7F0496C8 46083101 */ sub.s $f4, $f6, $f8 +/* 07E1FC 7F0496CC 460E8182 */ mul.s $f6, $f16, $f14 +/* 07E200 7F0496D0 E7A40114 */ swc1 $f4, 0x114($sp) +/* 07E204 7F0496D4 46065201 */ sub.s $f8, $f10, $f6 +/* 07E208 7F0496D8 E7A80118 */ swc1 $f8, 0x118($sp) +.L7F0496DC: +/* 07E20C 7F0496DC 3C0F8005 */ lui $t7, %hi(global_timer) +/* 07E210 7F0496E0 8DEF837C */ lw $t7, %lo(global_timer)($t7) +/* 07E214 7F0496E4 8E0900BC */ lw $t1, 0xbc($s0) +/* 07E218 7F0496E8 27B10110 */ addiu $s1, $sp, 0x110 +/* 07E21C 7F0496EC 8FA50100 */ lw $a1, 0x100($sp) +/* 07E220 7F0496F0 15E90052 */ bne $t7, $t1, .L7F04983C +/* 07E224 7F0496F4 C7AA012C */ lwc1 $f10, 0x12c($sp) +/* 07E228 7F0496F8 C4A40008 */ lwc1 $f4, 8($a1) +/* 07E22C 7F0496FC C4A6000C */ lwc1 $f6, 0xc($a1) +/* 07E230 7F049700 C7A80130 */ lwc1 $f8, 0x130($sp) +/* 07E234 7F049704 460A2001 */ sub.s $f0, $f4, $f10 +/* 07E238 7F049708 C4A40010 */ lwc1 $f4, 0x10($a1) +/* 07E23C 7F04970C E7AA0058 */ swc1 $f10, 0x58($sp) +/* 07E240 7F049710 46083081 */ sub.s $f2, $f6, $f8 +/* 07E244 7F049714 C7A60134 */ lwc1 $f6, 0x134($sp) +/* 07E248 7F049718 46062301 */ sub.s $f12, $f4, $f6 +/* 07E24C 7F04971C 46000102 */ mul.s $f4, $f0, $f0 +/* 07E250 7F049720 00000000 */ nop +/* 07E254 7F049724 46021282 */ mul.s $f10, $f2, $f2 +/* 07E258 7F049728 460A2100 */ add.s $f4, $f4, $f10 +/* 07E25C 7F04972C 460C6282 */ mul.s $f10, $f12, $f12 +/* 07E260 7F049730 460A2500 */ add.s $f20, $f4, $f10 +/* 07E264 7F049734 C7AA0058 */ lwc1 $f10, 0x58($sp) +/* 07E268 7F049738 C7A40110 */ lwc1 $f4, 0x110($sp) +/* 07E26C 7F04973C 460A2001 */ sub.s $f0, $f4, $f10 +/* 07E270 7F049740 C7A40114 */ lwc1 $f4, 0x114($sp) +/* 07E274 7F049744 C7AA0118 */ lwc1 $f10, 0x118($sp) +/* 07E278 7F049748 46082081 */ sub.s $f2, $f4, $f8 +/* 07E27C 7F04974C 46000102 */ mul.s $f4, $f0, $f0 +/* 07E280 7F049750 46065301 */ sub.s $f12, $f10, $f6 +/* 07E284 7F049754 46021202 */ mul.s $f8, $f2, $f2 +/* 07E288 7F049758 46082280 */ add.s $f10, $f4, $f8 +/* 07E28C 7F04975C 460C6182 */ mul.s $f6, $f12, $f12 +/* 07E290 7F049760 46065100 */ add.s $f4, $f10, $f6 +/* 07E294 7F049764 4604A03E */ c.le.s $f20, $f4 +/* 07E298 7F049768 00000000 */ nop +/* 07E29C 7F04976C 45000033 */ bc1f .L7F04983C +/* 07E2A0 7F049770 00000000 */ nop +/* 07E2A4 7F049774 0FC227A9 */ jal check_if_bond_is_invincible +/* 07E2A8 7F049778 00000000 */ nop +/* 07E2AC 7F04977C 54400030 */ bnezl $v0, .L7F049840 +/* 07E2B0 7F049780 8FB9011C */ lw $t9, 0x11c($sp) +/* 07E2B4 7F049784 0C007DF8 */ jal sqrtf +/* 07E2B8 7F049788 4600A306 */ mov.s $f12, $f20 +/* 07E2BC 7F04978C 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 07E2C0 7F049790 44816000 */ mtc1 $at, $f12 +/* 07E2C4 7F049794 3C018005 */ lui $at, %hi(D_80052B74) +/* 07E2C8 7F049798 C4282B74 */ lwc1 $f8, %lo(D_80052B74)($at) +/* 07E2CC 7F04979C 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07E2D0 7F0497A0 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07E2D4 7F0497A4 3C018003 */ lui $at, %hi(D_80030B1C) +/* 07E2D8 7F0497A8 4600603C */ c.lt.s $f12, $f0 +/* 07E2DC 7F0497AC 460A4182 */ mul.s $f6, $f8, $f10 +/* 07E2E0 7F0497B0 C4240B1C */ lwc1 $f4, %lo(D_80030B1C)($at) +/* 07E2E4 7F0497B4 46043082 */ mul.s $f2, $f6, $f4 +/* 07E2E8 7F0497B8 45020005 */ bc1fl .L7F0497D0 +/* 07E2EC 7F0497BC C60A00D4 */ lwc1 $f10, 0xd4($s0) +/* 07E2F0 7F0497C0 46006203 */ div.s $f8, $f12, $f0 +/* 07E2F4 7F0497C4 46081082 */ mul.s $f2, $f2, $f8 +/* 07E2F8 7F0497C8 00000000 */ nop +/* 07E2FC 7F0497CC C60A00D4 */ lwc1 $f10, 0xd4($s0) +.L7F0497D0: +/* 07E300 7F0497D0 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07E304 7F0497D4 44814000 */ mtc1 $at, $f8 +/* 07E308 7F0497D8 46025180 */ add.s $f6, $f10, $f2 +/* 07E30C 7F0497DC E60600D4 */ swc1 $f6, 0xd4($s0) +/* 07E310 7F0497E0 C60400D4 */ lwc1 $f4, 0xd4($s0) +/* 07E314 7F0497E4 4604403E */ c.le.s $f8, $f4 +/* 07E318 7F0497E8 00000000 */ nop +/* 07E31C 7F0497EC 45020014 */ bc1fl .L7F049840 +/* 07E320 7F0497F0 8FB9011C */ lw $t9, 0x11c($sp) +/* 07E324 7F0497F4 0FC177E1 */ jal sub_GAME_7F05DF84 +/* 07E328 7F0497F8 2404000E */ li $a0, 14 +/* 07E32C 7F0497FC 3C013E00 */ li $at, 0x3E000000 # 0.125000 +/* 07E330 7F049800 44815000 */ mtc1 $at, $f10 +/* 07E334 7F049804 3C018003 */ lui $at, %hi(D_80030B20) +/* 07E338 7F049808 C4240B20 */ lwc1 $f4, %lo(D_80030B20)($at) +/* 07E33C 7F04980C 460A0182 */ mul.s $f6, $f0, $f10 +/* 07E340 7F049810 C60E0090 */ lwc1 $f14, 0x90($s0) +/* 07E344 7F049814 2406FFFF */ li $a2, -1 +/* 07E348 7F049818 24070001 */ li $a3, 1 +/* 07E34C 7F04981C 46043302 */ mul.s $f12, $f6, $f4 +/* 07E350 7F049820 0FC22793 */ jal sub_GAME_7F089E4C +/* 07E354 7F049824 00000000 */ nop +/* 07E358 7F049828 0FC227A9 */ jal check_if_bond_is_invincible +/* 07E35C 7F04982C E61600D4 */ swc1 $f22, 0xd4($s0) +/* 07E360 7F049830 50400003 */ beql $v0, $zero, .L7F049840 +/* 07E364 7F049834 8FB9011C */ lw $t9, 0x11c($sp) +/* 07E368 7F049838 AFA0011C */ sw $zero, 0x11c($sp) +.L7F04983C: +/* 07E36C 7F04983C 8FB9011C */ lw $t9, 0x11c($sp) +.L7F049840: +/* 07E370 7F049840 3C0141D0 */ li $at, 0x41D00000 # 26.000000 +/* 07E374 7F049844 44818000 */ mtc1 $at, $f16 +/* 07E378 7F049848 1320000F */ beqz $t9, .L7F049888 +/* 07E37C 7F04984C 8FA50100 */ lw $a1, 0x100($sp) +/* 07E380 7F049850 8FAC010C */ lw $t4, 0x10c($sp) +/* 07E384 7F049854 02202025 */ move $a0, $s1 +/* 07E388 7F049858 24050001 */ li $a1, 1 +/* 07E38C 7F04985C 51800005 */ beql $t4, $zero, .L7F049874 +/* 07E390 7F049860 2404000E */ li $a0, 14 +/* 07E394 7F049864 44068000 */ mfc1 $a2, $f16 +/* 07E398 7F049868 0FC28F87 */ jal sub_GAME_7F0A3E1C +/* 07E39C 7F04986C 91870003 */ lbu $a3, 3($t4) +/* 07E3A0 7F049870 2404000E */ li $a0, 14 +.L7F049874: +/* 07E3A4 7F049874 02202825 */ move $a1, $s1 +/* 07E3A8 7F049878 0FC191DD */ jal recall_joy2_hits_edit_flag +/* 07E3AC 7F04987C 2406FFFF */ li $a2, -1 +/* 07E3B0 7F049880 1000000B */ b .L7F0498B0 +/* 07E3B4 7F049884 8FAA0104 */ lw $t2, 0x104($sp) +.L7F049888: +/* 07E3B8 7F049888 C4A80008 */ lwc1 $f8, 8($a1) +/* 07E3BC 7F04988C 2404000E */ li $a0, 14 +/* 07E3C0 7F049890 2406FFFF */ li $a2, -1 +/* 07E3C4 7F049894 E7A80110 */ swc1 $f8, 0x110($sp) +/* 07E3C8 7F049898 C4AA000C */ lwc1 $f10, 0xc($a1) +/* 07E3CC 7F04989C E7AA0114 */ swc1 $f10, 0x114($sp) +/* 07E3D0 7F0498A0 C4A60010 */ lwc1 $f6, 0x10($a1) +/* 07E3D4 7F0498A4 0FC19107 */ jal recall_joy2_hits_edit_detail_edit_flag +/* 07E3D8 7F0498A8 E7A60118 */ swc1 $f6, 0x118($sp) +/* 07E3DC 7F0498AC 8FAA0104 */ lw $t2, 0x104($sp) +.L7F0498B0: +/* 07E3E0 7F0498B0 C7A4012C */ lwc1 $f4, 0x12c($sp) +/* 07E3E4 7F0498B4 51400085 */ beql $t2, $zero, .L7F049ACC +/* 07E3E8 7F0498B8 8E980008 */ lw $t8, 8($s4) +/* 07E3EC 7F0498BC 8E0300CC */ lw $v1, 0xcc($s0) +/* 07E3F0 7F0498C0 E4640004 */ swc1 $f4, 4($v1) +/* 07E3F4 7F0498C4 C7A80130 */ lwc1 $f8, 0x130($sp) +/* 07E3F8 7F0498C8 C4640004 */ lwc1 $f4, 4($v1) +/* 07E3FC 7F0498CC E4680008 */ swc1 $f8, 8($v1) +/* 07E400 7F0498D0 C7AA0134 */ lwc1 $f10, 0x134($sp) +/* 07E404 7F0498D4 E46A000C */ swc1 $f10, 0xc($v1) +/* 07E408 7F0498D8 C7A60110 */ lwc1 $f6, 0x110($sp) +/* 07E40C 7F0498DC 46043201 */ sub.s $f8, $f6, $f4 +/* 07E410 7F0498E0 C4660008 */ lwc1 $f6, 8($v1) +/* 07E414 7F0498E4 E4680010 */ swc1 $f8, 0x10($v1) +/* 07E418 7F0498E8 C7AA0114 */ lwc1 $f10, 0x114($sp) +/* 07E41C 7F0498EC C4620010 */ lwc1 $f2, 0x10($v1) +/* 07E420 7F0498F0 46065101 */ sub.s $f4, $f10, $f6 +/* 07E424 7F0498F4 C46A000C */ lwc1 $f10, 0xc($v1) +/* 07E428 7F0498F8 E4640014 */ swc1 $f4, 0x14($v1) +/* 07E42C 7F0498FC C7A80118 */ lwc1 $f8, 0x118($sp) +/* 07E430 7F049900 46021102 */ mul.s $f4, $f2, $f2 +/* 07E434 7F049904 C46E0014 */ lwc1 $f14, 0x14($v1) +/* 07E438 7F049908 460A4181 */ sub.s $f6, $f8, $f10 +/* 07E43C 7F04990C 460E7202 */ mul.s $f8, $f14, $f14 +/* 07E440 7F049910 E4660018 */ swc1 $f6, 0x18($v1) +/* 07E444 7F049914 C4600018 */ lwc1 $f0, 0x18($v1) +/* 07E448 7F049918 AFA30090 */ sw $v1, 0x90($sp) +/* 07E44C 7F04991C 46000182 */ mul.s $f6, $f0, $f0 +/* 07E450 7F049920 46082280 */ add.s $f10, $f4, $f8 +/* 07E454 7F049924 0C007DF8 */ jal sqrtf +/* 07E458 7F049928 460A3300 */ add.s $f12, $f6, $f10 +/* 07E45C 7F04992C 3C018005 */ lui $at, %hi(D_80052B78) +/* 07E460 7F049930 C42E2B78 */ lwc1 $f14, %lo(D_80052B78)($at) +/* 07E464 7F049934 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07E468 7F049938 44812000 */ mtc1 $at, $f4 +/* 07E46C 7F04993C 8FA30090 */ lw $v1, 0x90($sp) +/* 07E470 7F049940 4600703C */ c.lt.s $f14, $f0 +/* 07E474 7F049944 46000306 */ mov.s $f12, $f0 +/* 07E478 7F049948 46002083 */ div.s $f2, $f4, $f0 +/* 07E47C 7F04994C C4680010 */ lwc1 $f8, 0x10($v1) +/* 07E480 7F049950 C46A0014 */ lwc1 $f10, 0x14($v1) +/* 07E484 7F049954 3C0143FA */ li $at, 0x43FA0000 # 500.000000 +/* 07E488 7F049958 44810000 */ mtc1 $at, $f0 +/* 07E48C 7F04995C 46024182 */ mul.s $f6, $f8, $f2 +/* 07E490 7F049960 C4680018 */ lwc1 $f8, 0x18($v1) +/* 07E494 7F049964 46025102 */ mul.s $f4, $f10, $f2 +/* 07E498 7F049968 E4660010 */ swc1 $f6, 0x10($v1) +/* 07E49C 7F04996C 46024182 */ mul.s $f6, $f8, $f2 +/* 07E4A0 7F049970 E4640014 */ swc1 $f4, 0x14($v1) +/* 07E4A4 7F049974 45000002 */ bc1f .L7F049980 +/* 07E4A8 7F049978 E4660018 */ swc1 $f6, 0x18($v1) +/* 07E4AC 7F04997C 46007306 */ mov.s $f12, $f14 +.L7F049980: +/* 07E4B0 7F049980 4600603C */ c.lt.s $f12, $f0 +/* 07E4B4 7F049984 240E000E */ li $t6, 14 +/* 07E4B8 7F049988 A0600000 */ sb $zero, ($v1) +/* 07E4BC 7F04998C A06E0001 */ sb $t6, 1($v1) +/* 07E4C0 7F049990 45000002 */ bc1f .L7F04999C +/* 07E4C4 7F049994 E46C001C */ swc1 $f12, 0x1c($v1) +/* 07E4C8 7F049998 46000306 */ mov.s $f12, $f0 +.L7F04999C: +/* 07E4CC 7F04999C 806D0001 */ lb $t5, 1($v1) +/* 07E4D0 7F0499A0 24010016 */ li $at, 22 +/* 07E4D4 7F0499A4 15A10026 */ bne $t5, $at, .L7F049A40 +/* 07E4D8 7F0499A8 3C018005 */ lui $at, %hi(D_80052B7C) +/* 07E4DC 7F0499AC C4222B7C */ lwc1 $f2, %lo(D_80052B7C)($at) +/* 07E4E0 7F0499B0 3C013E80 */ li $at, 0x3E800000 # 0.250000 +/* 07E4E4 7F0499B4 44815000 */ mtc1 $at, $f10 +/* 07E4E8 7F0499B8 3C018005 */ lui $at, %hi(D_80052B80) +/* 07E4EC 7F0499BC 460C5102 */ mul.s $f4, $f10, $f12 +/* 07E4F0 7F0499C0 E4640020 */ swc1 $f4, 0x20($v1) +/* 07E4F4 7F0499C4 C4282B80 */ lwc1 $f8, %lo(D_80052B80)($at) +/* 07E4F8 7F0499C8 460C4002 */ mul.s $f0, $f8, $f12 +/* 07E4FC 7F0499CC 4600103C */ c.lt.s $f2, $f0 +/* 07E500 7F0499D0 E4600024 */ swc1 $f0, 0x24($v1) +/* 07E504 7F0499D4 45020003 */ bc1fl .L7F0499E4 +/* 07E508 7F0499D8 AFA30090 */ sw $v1, 0x90($sp) +/* 07E50C 7F0499DC E4620024 */ swc1 $f2, 0x24($v1) +/* 07E510 7F0499E0 AFA30090 */ sw $v1, 0x90($sp) +.L7F0499E4: +/* 07E514 7F0499E4 0C002914 */ jal get_random_value +/* 07E518 7F0499E8 E7AC0094 */ swc1 $f12, 0x94($sp) +/* 07E51C 7F0499EC 44823000 */ mtc1 $v0, $f6 +/* 07E520 7F0499F0 8FA30090 */ lw $v1, 0x90($sp) +/* 07E524 7F0499F4 C7AC0094 */ lwc1 $f12, 0x94($sp) +/* 07E528 7F0499F8 04410005 */ bgez $v0, .L7F049A10 +/* 07E52C 7F0499FC 468032A0 */ cvt.s.w $f10, $f6 +/* 07E530 7F049A00 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07E534 7F049A04 44812000 */ mtc1 $at, $f4 +/* 07E538 7F049A08 00000000 */ nop +/* 07E53C 7F049A0C 46045280 */ add.s $f10, $f10, $f4 +.L7F049A10: +/* 07E540 7F049A10 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07E544 7F049A14 44814000 */ mtc1 $at, $f8 +/* 07E548 7F049A18 3C018005 */ lui $at, %hi(D_80052B84) +/* 07E54C 7F049A1C C4242B84 */ lwc1 $f4, %lo(D_80052B84)($at) +/* 07E550 7F049A20 46085182 */ mul.s $f6, $f10, $f8 +/* 07E554 7F049A24 3C018005 */ lui $at, %hi(D_80052B88) +/* 07E558 7F049A28 C4282B88 */ lwc1 $f8, %lo(D_80052B88)($at) +/* 07E55C 7F049A2C 46043282 */ mul.s $f10, $f6, $f4 +/* 07E560 7F049A30 460A4181 */ sub.s $f6, $f8, $f10 +/* 07E564 7F049A34 460C3102 */ mul.s $f4, $f6, $f12 +/* 07E568 7F049A38 10000023 */ b .L7F049AC8 +/* 07E56C 7F049A3C E4640028 */ swc1 $f4, 0x28($v1) +.L7F049A40: +/* 07E570 7F049A40 3C018005 */ lui $at, %hi(D_80052B8C) +/* 07E574 7F049A44 C4282B8C */ lwc1 $f8, %lo(D_80052B8C)($at) +/* 07E578 7F049A48 3C018005 */ lui $at, %hi(D_80052B90) +/* 07E57C 7F049A4C 460C4002 */ mul.s $f0, $f8, $f12 +/* 07E580 7F049A50 E4600020 */ swc1 $f0, 0x20($v1) +/* 07E584 7F049A54 E4600024 */ swc1 $f0, 0x24($v1) +/* 07E588 7F049A58 C42A2B90 */ lwc1 $f10, %lo(D_80052B90)($at) +/* 07E58C 7F049A5C 3C018005 */ lui $at, %hi(D_80052B94) +/* 07E590 7F049A60 4600503C */ c.lt.s $f10, $f0 +/* 07E594 7F049A64 00000000 */ nop +/* 07E598 7F049A68 45000003 */ bc1f .L7F049A78 +/* 07E59C 7F049A6C 00000000 */ nop +/* 07E5A0 7F049A70 C4262B94 */ lwc1 $f6, %lo(D_80052B94)($at) +/* 07E5A4 7F049A74 E4660024 */ swc1 $f6, 0x24($v1) +.L7F049A78: +/* 07E5A8 7F049A78 0C002914 */ jal get_random_value +/* 07E5AC 7F049A7C AFA30090 */ sw $v1, 0x90($sp) +/* 07E5B0 7F049A80 44822000 */ mtc1 $v0, $f4 +/* 07E5B4 7F049A84 8FA30090 */ lw $v1, 0x90($sp) +/* 07E5B8 7F049A88 04410005 */ bgez $v0, .L7F049AA0 +/* 07E5BC 7F049A8C 46802220 */ cvt.s.w $f8, $f4 +/* 07E5C0 7F049A90 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07E5C4 7F049A94 44815000 */ mtc1 $at, $f10 +/* 07E5C8 7F049A98 00000000 */ nop +/* 07E5CC 7F049A9C 460A4200 */ add.s $f8, $f8, $f10 +.L7F049AA0: +/* 07E5D0 7F049AA0 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07E5D4 7F049AA4 44813000 */ mtc1 $at, $f6 +/* 07E5D8 7F049AA8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07E5DC 7F049AAC 44815000 */ mtc1 $at, $f10 +/* 07E5E0 7F049AB0 46064002 */ mul.s $f0, $f8, $f6 +/* 07E5E4 7F049AB4 C4660020 */ lwc1 $f6, 0x20($v1) +/* 07E5E8 7F049AB8 46000100 */ add.s $f4, $f0, $f0 +/* 07E5EC 7F049ABC 460A2201 */ sub.s $f8, $f4, $f10 +/* 07E5F0 7F049AC0 46064102 */ mul.s $f4, $f8, $f6 +/* 07E5F4 7F049AC4 E4640028 */ swc1 $f4, 0x28($v1) +.L7F049AC8: +/* 07E5F8 7F049AC8 8E980008 */ lw $t8, 8($s4) +.L7F049ACC: +/* 07E5FC 7F049ACC 8F030008 */ lw $v1, 8($t8) +/* 07E600 7F049AD0 8C650014 */ lw $a1, 0x14($v1) +/* 07E604 7F049AD4 50A00008 */ beql $a1, $zero, .L7F049AF8 +/* 07E608 7F049AD8 8C65001C */ lw $a1, 0x1c($v1) +/* 07E60C 7F049ADC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 07E610 7F049AE0 02802025 */ move $a0, $s4 +/* 07E614 7F049AE4 8FA8013C */ lw $t0, 0x13c($sp) +/* 07E618 7F049AE8 A4480000 */ sh $t0, ($v0) +/* 07E61C 7F049AEC 8E8B0008 */ lw $t3, 8($s4) +/* 07E620 7F049AF0 8D630008 */ lw $v1, 8($t3) +/* 07E624 7F049AF4 8C65001C */ lw $a1, 0x1c($v1) +.L7F049AF8: +/* 07E628 7F049AF8 10A00005 */ beqz $a1, .L7F049B10 +/* 07E62C 7F049AFC 00000000 */ nop +/* 07E630 7F049B00 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 07E634 7F049B04 02802025 */ move $a0, $s4 +/* 07E638 7F049B08 8FAF0138 */ lw $t7, 0x138($sp) +/* 07E63C 7F049B0C A44F0000 */ sh $t7, ($v0) +.L7F049B10: +/* 07E640 7F049B10 0FC11080 */ jal sub_GAME_7F044200 +/* 07E644 7F049B14 02602025 */ move $a0, $s3 +/* 07E648 7F049B18 8FA90680 */ lw $t1, 0x680($sp) +.L7F049B1C: +/* 07E64C 7F049B1C 24010005 */ li $at, 5 +/* 07E650 7F049B20 55210003 */ bnel $t1, $at, .L7F049B30 +/* 07E654 7F049B24 8FA20680 */ lw $v0, 0x680($sp) +/* 07E658 7F049B28 AE600014 */ sw $zero, 0x14($s3) +/* 07E65C 7F049B2C 8FA20680 */ lw $v0, 0x680($sp) +.L7F049B30: +/* 07E660 7F049B30 8FBF0054 */ lw $ra, 0x54($sp) +/* 07E664 7F049B34 D7B40030 */ ldc1 $f20, 0x30($sp) +/* 07E668 7F049B38 D7B60038 */ ldc1 $f22, 0x38($sp) +/* 07E66C 7F049B3C 8FB00040 */ lw $s0, 0x40($sp) +/* 07E670 7F049B40 8FB10044 */ lw $s1, 0x44($sp) +/* 07E674 7F049B44 8FB20048 */ lw $s2, 0x48($sp) +/* 07E678 7F049B48 8FB3004C */ lw $s3, 0x4c($sp) +/* 07E67C 7F049B4C 8FB40050 */ lw $s4, 0x50($sp) +/* 07E680 7F049B50 03E00008 */ jr $ra +/* 07E684 7F049B54 27BD06A8 */ addiu $sp, $sp, 0x6a8 +) +#endif + +#ifdef VERSION_JP +GLOBAL_ASM( +.late_rodata +glabel rocket_initial_gravity_modifier +.word 0x3e8e38e4 /*0.27777779*/ +glabel D_80052A9C +.word 0x3c360b61 /*0.011111111*/ +glabel D_80052AA0 +.word 0x3d8f5c29 /*0.07*/ +glabel prop_projectile_gravity_modifier +.word 0x3e8e38e4 /*0.27777779*/ +glabel D_80052AA8 +.word 0x400e38e4 /*2.2222223*/ +glabel D_80052AAC +.word 0x46d9038c /*27777.773*/ +glabel D_80052AB0 +.word 0x3f8ccccd /*1.1*/ +glabel D_80052AB4 +.word 0x3f666666 /*0.89999998*/ +glabel D_80052AB8 +.word 0x3f666666 /*0.89999998*/ +glabel D_80052ABC +.word 0x3dcccccd /*0.1*/ +glabel D_80052AC0 +.word 0xbdcccccd /*-0.1*/ +glabel D_80052AC4 +.word 0xbdcccccd /*-0.1*/ +glabel D_80052AC8 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052ACC +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AD0 +.word 0x40490fdb /*3.1415927*/ +glabel D_80052AD4 +.word 0x3f490fdb /*0.78539819*/ +glabel D_80052AD8 +.word 0xbf490fdb /*-0.78539819*/ +glabel D_80052ADC +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AE0 +.word 0x3a2b92a6 /*0.00065449846*/ +glabel D_80052AE4 +.word 0x3a2b92a6 /*0.00065449846*/ +glabel D_80052AE8 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AEC +.word 0x37433637 /*0.000011635529*/ +glabel D_80052AF0 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052AF4 +.word 0x3a3702d4 /*0.00069813174*/ +glabel D_80052AF8 +.word 0x36c33637 /*0.0000058177643*/ +glabel D_80052AFC +.word 0x39b702d4 /*0.00034906587*/ +glabel D_80052B00 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B04 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B08 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B0C +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B10 +.word 0x3f9c61ab /*1.2217306*/ +glabel D_80052B14 +.word 0xbf9c61ab /*-1.2217306*/ +glabel D_80052B18 +.word 0xc0490fdb /*-3.1415927*/ +glabel D_80052B1C +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B20 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B24 +.word 0x3f4ccccd /*0.80000001*/ +glabel D_80052B28 +.word 0xc0490fdb /*-3.1415927*/ +glabel D_80052B2C +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B30 +.word 0x3a64c389 /*0.00087266468*/ +glabel D_80052B34 +.word 0x3a64c389 /*0.00087266468*/ +glabel D_80052B38 +.word 0x40490fdb /*3.1415927*/ +glabel D_80052B3C +.word 0x3f1930a7 /*0.59839863*/ +glabel D_80052B40 +.word 0x3c236719 /*0.0099733109*/ +glabel D_80052B44 +.word 0x3f7d70a4 /*0.99000001*/ +glabel D_80052B48 +.word 0x38d1b717 /*0.000099999997*/ +glabel D_80052B4C +.word 0x3964c389 /*0.00021816617*/ +glabel D_80052B50 +.word 0x3bd67750 /*0.0065449849*/ +glabel D_80052B54 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B58 +.word 0x3964c389 /*0.00021816617*/ +glabel D_80052B5C +.word 0xb964c389 /*-0.00021816617*/ +glabel D_80052B60 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B64 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052B68 +.word 0x3e99999a /*0.30000001*/ +glabel D_80052B6C +.word 0x3fc90fdb /*1.5707964*/ +glabel D_80052B70 +.word 0x3fc90fdb /*1.5707964*/ +glabel D_80052B74 +.word 0x3e23d70a /*0.16*/ +glabel D_80052B78 +.word 0x461c4000 /*10000.0*/ +glabel D_80052B7C +.word 0x453b8000 /*3000.0*/ +glabel D_80052B80 +.word 0x3f19999a /*0.60000002*/ +glabel D_80052B84 +.word 0x3e99999a /*0.30000001*/ +glabel D_80052B88 +.word 0xbdcccccd /*-0.1*/ +glabel D_80052B8C +.word 0x3e4ccccd /*0.2*/ +glabel D_80052B90 +.word 0x453b8000 /*3000.0*/ +glabel D_80052B94 +.word 0x453b8000 /*3000.0*/ +.text +glabel object_interaction +/* 07A218 7F0456A8 27BDF950 */ addiu $sp, $sp, -0x6b0 +/* 07A21C 7F0456AC AFBF0054 */ sw $ra, 0x54($sp) +/* 07A220 7F0456B0 AFB40050 */ sw $s4, 0x50($sp) +/* 07A224 7F0456B4 AFB3004C */ sw $s3, 0x4c($sp) +/* 07A228 7F0456B8 AFB20048 */ sw $s2, 0x48($sp) +/* 07A22C 7F0456BC AFB10044 */ sw $s1, 0x44($sp) +/* 07A230 7F0456C0 AFB00040 */ sw $s0, 0x40($sp) +/* 07A234 7F0456C4 F7B60038 */ sdc1 $f22, 0x38($sp) +/* 07A238 7F0456C8 F7B40030 */ sdc1 $f20, 0x30($sp) +/* 07A23C 7F0456CC 8C910004 */ lw $s1, 4($a0) +/* 07A240 7F0456D0 4480B000 */ mtc1 $zero, $f22 +/* 07A244 7F0456D4 00809825 */ move $s3, $a0 +/* 07A248 7F0456D8 8E340014 */ lw $s4, 0x14($s1) +/* 07A24C 7F0456DC AFA00698 */ sw $zero, 0x698($sp) +/* 07A250 7F0456E0 AFA00688 */ sw $zero, 0x688($sp) +/* 07A254 7F0456E4 0FC26C01 */ jal get_num_players +/* 07A258 7F0456E8 E7B60684 */ swc1 $f22, 0x684($sp) +/* 07A25C 7F0456EC 240F0001 */ li $t7, 1 +/* 07A260 7F0456F0 AFA2067C */ sw $v0, 0x67c($sp) +/* 07A264 7F0456F4 AFAF0678 */ sw $t7, 0x678($sp) +/* 07A268 7F0456F8 8E230064 */ lw $v1, 0x64($s1) +/* 07A26C 7F0456FC 30790004 */ andi $t9, $v1, 4 +/* 07A270 7F045700 13200009 */ beqz $t9, .Ljp7F045728 +/* 07A274 7F045704 30680008 */ andi $t0, $v1, 8 +/* 07A278 7F045708 92260002 */ lbu $a2, 2($s1) +/* 07A27C 7F04570C 02202025 */ move $a0, $s1 +/* 07A280 7F045710 00002825 */ move $a1, $zero +/* 07A284 7F045714 30D80004 */ andi $t8, $a2, 4 +/* 07A288 7F045718 0FC10426 */ jal sub_GAME_7F040D98 +/* 07A28C 7F04571C 03003025 */ move $a2, $t8 +/* 07A290 7F045720 10001204 */ b .Ljp7F049F34 +/* 07A294 7F045724 24020001 */ li $v0, 1 +.Ljp7F045728: +/* 07A298 7F045728 11000005 */ beqz $t0, .Ljp7F045740 +/* 07A29C 7F04572C 306B0080 */ andi $t3, $v1, 0x80 +/* 07A2A0 7F045730 2401FFF7 */ li $at, -9 +/* 07A2A4 7F045734 00614824 */ and $t1, $v1, $at +/* 07A2A8 7F045738 1000000B */ b .Ljp7F045768 +/* 07A2AC 7F04573C AE290064 */ sw $t1, 0x64($s1) +.Ljp7F045740: +/* 07A2B0 7F045740 5160000A */ beql $t3, $zero, .Ljp7F04576C +/* 07A2B4 7F045744 24010001 */ li $at, 1 +/* 07A2B8 7F045748 926C0001 */ lbu $t4, 1($s3) +/* 07A2BC 7F04574C 24020003 */ li $v0, 3 +/* 07A2C0 7F045750 318EFFFD */ andi $t6, $t4, 0xfffd +/* 07A2C4 7F045754 A26E0001 */ sb $t6, 1($s3) +/* 07A2C8 7F045758 8E2A0064 */ lw $t2, 0x64($s1) +/* 07A2CC 7F04575C 354D0008 */ ori $t5, $t2, 8 +/* 07A2D0 7F045760 100011F4 */ b .Ljp7F049F34 +/* 07A2D4 7F045764 AE2D0064 */ sw $t5, 0x64($s1) +.Ljp7F045768: +/* 07A2D8 7F045768 24010001 */ li $at, 1 +.Ljp7F04576C: +/* 07A2DC 7F04576C 14410003 */ bne $v0, $at, .Ljp7F04577C +/* 07A2E0 7F045770 240F0001 */ li $t7, 1 +/* 07A2E4 7F045774 10000019 */ b .Ljp7F0457DC +/* 07A2E8 7F045778 AFAF0680 */ sw $t7, 0x680($sp) +.Ljp7F04577C: +/* 07A2EC 7F04577C 0FC26F3C */ jal get_cur_playernum +/* 07A2F0 7F045780 00000000 */ nop +/* 07A2F4 7F045784 0FC2701E */ jal sub_GAME_7F09B4D8 +/* 07A2F8 7F045788 00402025 */ move $a0, $v0 +/* 07A2FC 7F04578C 2C590001 */ sltiu $t9, $v0, 1 +/* 07A300 7F045790 AFB90680 */ sw $t9, 0x680($sp) +/* 07A304 7F045794 8E380064 */ lw $t8, 0x64($s1) +/* 07A308 7F045798 33080080 */ andi $t0, $t8, 0x80 +/* 07A30C 7F04579C 51000010 */ beql $t0, $zero, .Ljp7F0457E0 +/* 07A310 7F0457A0 8FAA0680 */ lw $t2, 0x680($sp) +/* 07A314 7F0457A4 8E30006C */ lw $s0, 0x6c($s1) +/* 07A318 7F0457A8 8E040088 */ lw $a0, 0x88($s0) +/* 07A31C 7F0457AC 5080000C */ beql $a0, $zero, .Ljp7F0457E0 +/* 07A320 7F0457B0 8FAA0680 */ lw $t2, 0x680($sp) +/* 07A324 7F0457B4 0FC26F3F */ jal sub_GAME_7F09B15C +/* 07A328 7F0457B8 00000000 */ nop +/* 07A32C 7F0457BC 04400007 */ bltz $v0, .Ljp7F0457DC +/* 07A330 7F0457C0 3C098008 */ lui $t1, %hi(pPlayer) # $t1, 0x8008 +/* 07A334 7F0457C4 8D29A120 */ lw $t1, %lo(pPlayer)($t1) +/* 07A338 7F0457C8 8E0C0088 */ lw $t4, 0x88($s0) +/* 07A33C 7F0457CC 8D2B00A8 */ lw $t3, 0xa8($t1) +/* 07A340 7F0457D0 016C7026 */ xor $t6, $t3, $t4 +/* 07A344 7F0457D4 2DCE0001 */ sltiu $t6, $t6, 1 +/* 07A348 7F0457D8 AFAE0680 */ sw $t6, 0x680($sp) +.Ljp7F0457DC: +/* 07A34C 7F0457DC 8FAA0680 */ lw $t2, 0x680($sp) +.Ljp7F0457E0: +/* 07A350 7F0457E0 51400B94 */ beql $t2, $zero, .Ljp7F048634 +/* 07A354 7F0457E4 92220003 */ lbu $v0, 3($s1) +/* 07A358 7F0457E8 8E2D0064 */ lw $t5, 0x64($s1) +/* 07A35C 7F0457EC 31AF0080 */ andi $t7, $t5, 0x80 +/* 07A360 7F0457F0 51E0048B */ beql $t7, $zero, .Ljp7F046A20 +/* 07A364 7F0457F4 8FAB0698 */ lw $t3, 0x698($sp) +/* 07A368 7F0457F8 8E30006C */ lw $s0, 0x6c($s1) +/* 07A36C 7F0457FC 3C188005 */ lui $t8, %hi(clock_timer) # $t8, 0x8005 +/* 07A370 7F045800 8F1883A4 */ lw $t8, %lo(clock_timer)($t8) +/* 07A374 7F045804 8E1900E0 */ lw $t9, 0xe0($s0) +/* 07A378 7F045808 03384021 */ addu $t0, $t9, $t8 +/* 07A37C 7F04580C 29010961 */ slti $at, $t0, 0x961 +/* 07A380 7F045810 14200004 */ bnez $at, .Ljp7F045824 +/* 07A384 7F045814 AE0800E0 */ sw $t0, 0xe0($s0) +/* 07A388 7F045818 8E2B0064 */ lw $t3, 0x64($s1) +/* 07A38C 7F04581C 356C0004 */ ori $t4, $t3, 4 +/* 07A390 7F045820 AE2C0064 */ sw $t4, 0x64($s1) +.Ljp7F045824: +/* 07A394 7F045824 8E0E0000 */ lw $t6, ($s0) +/* 07A398 7F045828 31CA0100 */ andi $t2, $t6, 0x100 +/* 07A39C 7F04582C 5140002F */ beql $t2, $zero, .Ljp7F0458EC +/* 07A3A0 7F045830 C6260058 */ lwc1 $f6, 0x58($s1) +/* 07A3A4 7F045834 922D0003 */ lbu $t5, 3($s1) +/* 07A3A8 7F045838 24010008 */ li $at, 8 +/* 07A3AC 7F04583C 24120001 */ li $s2, 1 +/* 07A3B0 7F045840 55A10008 */ bnel $t5, $at, .Ljp7F045864 +/* 07A3B4 7F045844 8E040088 */ lw $a0, 0x88($s0) +/* 07A3B8 7F045848 AFB10650 */ sw $s1, 0x650($sp) +/* 07A3BC 7F04584C 822F0080 */ lb $t7, 0x80($s1) +/* 07A3C0 7F045850 24010056 */ li $at, 86 +/* 07A3C4 7F045854 55E10003 */ bnel $t7, $at, .Ljp7F045864 +/* 07A3C8 7F045858 8E040088 */ lw $a0, 0x88($s0) +/* 07A3CC 7F04585C 00009025 */ move $s2, $zero +/* 07A3D0 7F045860 8E040088 */ lw $a0, 0x88($s0) +.Ljp7F045864: +/* 07A3D4 7F045864 50800004 */ beql $a0, $zero, .Ljp7F045878 +/* 07A3D8 7F045868 02202025 */ move $a0, $s1 +/* 07A3DC 7F04586C 0FC0F4D6 */ jal sub_GAME_7F03D058 +/* 07A3E0 7F045870 00002825 */ move $a1, $zero +/* 07A3E4 7F045874 02202025 */ move $a0, $s1 +.Ljp7F045878: +/* 07A3E8 7F045878 260500D4 */ addiu $a1, $s0, 0xd4 +/* 07A3EC 7F04587C 27A60654 */ addiu $a2, $sp, 0x654 +/* 07A3F0 7F045880 27A70660 */ addiu $a3, $sp, 0x660 +/* 07A3F4 7F045884 AFA00010 */ sw $zero, 0x10($sp) +/* 07A3F8 7F045888 0FC10C6D */ jal sub_GAME_7F042EB4 +/* 07A3FC 7F04588C AFB20014 */ sw $s2, 0x14($sp) +/* 07A400 7F045890 AFA2066C */ sw $v0, 0x66c($sp) +/* 07A404 7F045894 8E040088 */ lw $a0, 0x88($s0) +/* 07A408 7F045898 50800004 */ beql $a0, $zero, .Ljp7F0458AC +/* 07A40C 7F04589C 8FB9066C */ lw $t9, 0x66c($sp) +/* 07A410 7F0458A0 0FC0F4D6 */ jal sub_GAME_7F03D058 +/* 07A414 7F0458A4 24050001 */ li $a1, 1 +/* 07A418 7F0458A8 8FB9066C */ lw $t9, 0x66c($sp) +.Ljp7F0458AC: +/* 07A41C 7F0458AC 24010001 */ li $at, 1 +/* 07A420 7F0458B0 8FA20650 */ lw $v0, 0x650($sp) +/* 07A424 7F0458B4 53210009 */ beql $t9, $at, .Ljp7F0458DC +/* 07A428 7F0458B8 8E080000 */ lw $t0, ($s0) +/* 07A42C 7F0458BC 50400007 */ beql $v0, $zero, .Ljp7F0458DC +/* 07A430 7F0458C0 8E080000 */ lw $t0, ($s0) +/* 07A434 7F0458C4 80580080 */ lb $t8, 0x80($v0) +/* 07A438 7F0458C8 24010056 */ li $at, 86 +/* 07A43C 7F0458CC 57010003 */ bnel $t8, $at, .Ljp7F0458DC +/* 07A440 7F0458D0 8E080000 */ lw $t0, ($s0) +/* 07A444 7F0458D4 A4400082 */ sh $zero, 0x82($v0) +/* 07A448 7F0458D8 8E080000 */ lw $t0, ($s0) +.Ljp7F0458DC: +/* 07A44C 7F0458DC 2401FEFF */ li $at, -257 +/* 07A450 7F0458E0 01014824 */ and $t1, $t0, $at +/* 07A454 7F0458E4 AE090000 */ sw $t1, ($s0) +/* 07A458 7F0458E8 C6260058 */ lwc1 $f6, 0x58($s1) +.Ljp7F0458EC: +/* 07A45C 7F0458EC 3C0B8005 */ lui $t3, %hi(clock_timer) # $t3, 0x8005 +/* 07A460 7F0458F0 3C013F80 */ lui $at, 0x3f80 +/* 07A464 7F0458F4 E7A6069C */ swc1 $f6, 0x69c($sp) +/* 07A468 7F0458F8 C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07A46C 7F0458FC E7AA06A0 */ swc1 $f10, 0x6a0($sp) +/* 07A470 7F045900 C6240060 */ lwc1 $f4, 0x60($s1) +/* 07A474 7F045904 E7A406A4 */ swc1 $f4, 0x6a4($sp) +/* 07A478 7F045908 8E0200BC */ lw $v0, 0xbc($s0) +/* 07A47C 7F04590C 58400005 */ blezl $v0, .Ljp7F045924 +/* 07A480 7F045910 8E2E006C */ lw $t6, 0x6c($s1) +/* 07A484 7F045914 8D6B83A4 */ lw $t3, %lo(clock_timer)($t3) +/* 07A488 7F045918 004B6023 */ subu $t4, $v0, $t3 +/* 07A48C 7F04591C AE0C00BC */ sw $t4, 0xbc($s0) +/* 07A490 7F045920 8E2E006C */ lw $t6, 0x6c($s1) +.Ljp7F045924: +/* 07A494 7F045924 8DCA0000 */ lw $t2, ($t6) +/* 07A498 7F045928 314D0001 */ andi $t5, $t2, 1 +/* 07A49C 7F04592C 51A00351 */ beql $t5, $zero, .Ljp7F046674 +/* 07A4A0 7F045930 C6000060 */ lwc1 $f0, 0x60($s0) +/* 07A4A4 7F045934 0FC100DE */ jal sub_GAME_7F040078 +/* 07A4A8 7F045938 02202025 */ move $a0, $s1 +/* 07A4AC 7F04593C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07A4B0 7F045940 44814000 */ mtc1 $at, $f8 +/* 07A4B4 7F045944 3C078005 */ lui $a3, %hi(clock_timer) # $a3, 0x8005 +/* 07A4B8 7F045948 24E783A4 */ addiu $a3, %lo(clock_timer) # addiu $a3, $a3, -0x7c5c +/* 07A4BC 7F04594C AFA20648 */ sw $v0, 0x648($sp) +/* 07A4C0 7F045950 AFA00618 */ sw $zero, 0x618($sp) +/* 07A4C4 7F045954 AFA00614 */ sw $zero, 0x614($sp) +/* 07A4C8 7F045958 AFA0060C */ sw $zero, 0x60c($sp) +/* 07A4CC 7F04595C E7A80640 */ swc1 $f8, 0x640($sp) +/* 07A4D0 7F045960 8E0F00A8 */ lw $t7, 0xa8($s0) +/* 07A4D4 7F045964 8CF90000 */ lw $t9, ($a3) +/* 07A4D8 7F045968 C634005C */ lwc1 $f20, 0x5c($s1) +/* 07A4DC 7F04596C 00009025 */ move $s2, $zero +/* 07A4E0 7F045970 01F9C021 */ addu $t8, $t7, $t9 +/* 07A4E4 7F045974 AE1800A8 */ sw $t8, 0xa8($s0) +/* 07A4E8 7F045978 C6260018 */ lwc1 $f6, 0x18($s1) +/* 07A4EC 7F04597C 3C018005 */ lui $at, %hi(rocket_initial_gravity_modifier) # $at, 0x8005 +/* 07A4F0 7F045980 E7A60634 */ swc1 $f6, 0x634($sp) +/* 07A4F4 7F045984 C62A001C */ lwc1 $f10, 0x1c($s1) +/* 07A4F8 7F045988 E7AA0638 */ swc1 $f10, 0x638($sp) +/* 07A4FC 7F04598C C6240020 */ lwc1 $f4, 0x20($s1) +/* 07A500 7F045990 E7A4063C */ swc1 $f4, 0x63c($sp) +/* 07A504 7F045994 8E030000 */ lw $v1, ($s0) +/* 07A508 7F045998 30680020 */ andi $t0, $v1, 0x20 +/* 07A50C 7F04599C 1100004B */ beqz $t0, .Ljp7F045ACC +/* 07A510 7F0459A0 00000000 */ nop +/* 07A514 7F0459A4 C4322AC8 */ lwc1 $f18, %lo(rocket_initial_gravity_modifier)($at) +/* 07A518 7F0459A8 C600001C */ lwc1 $f0, 0x1c($s0) +/* 07A51C 7F0459AC 3C028005 */ lui $v0, %hi(global_timer_delta) # $v0, 0x8005 +/* 07A520 7F0459B0 244283B4 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c4c +/* 07A524 7F0459B4 4612003C */ c.lt.s $f0, $f18 +/* 07A528 7F0459B8 00000000 */ nop +/* 07A52C 7F0459BC 4502001C */ bc1fl .Ljp7F045A30 +/* 07A530 7F0459C0 C60000B0 */ lwc1 $f0, 0xb0($s0) +/* 07A534 7F0459C4 C6080014 */ lwc1 $f8, 0x14($s0) +/* 07A538 7F0459C8 C4460000 */ lwc1 $f6, ($v0) +/* 07A53C 7F0459CC C60400B4 */ lwc1 $f4, 0xb4($s0) +/* 07A540 7F0459D0 3C018005 */ lui $at, %hi(D_80052A9C) # $at, 0x8005 +/* 07A544 7F0459D4 46064282 */ mul.s $f10, $f8, $f6 +/* 07A548 7F0459D8 460A2200 */ add.s $f8, $f4, $f10 +/* 07A54C 7F0459DC E60800B4 */ swc1 $f8, 0xb4($s0) +/* 07A550 7F0459E0 C4440000 */ lwc1 $f4, ($v0) +/* 07A554 7F0459E4 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07A558 7F0459E8 C60800B0 */ lwc1 $f8, 0xb0($s0) +/* 07A55C 7F0459EC 46043282 */ mul.s $f10, $f6, $f4 +/* 07A560 7F0459F0 460A4180 */ add.s $f6, $f8, $f10 +/* 07A564 7F0459F4 E60600B0 */ swc1 $f6, 0xb0($s0) +/* 07A568 7F0459F8 C4480000 */ lwc1 $f8, ($v0) +/* 07A56C 7F0459FC C4242ACC */ lwc1 $f4, %lo(D_80052A9C)($at) +/* 07A570 7F045A00 46082282 */ mul.s $f10, $f4, $f8 +/* 07A574 7F045A04 460A0180 */ add.s $f6, $f0, $f10 +/* 07A578 7F045A08 E606001C */ swc1 $f6, 0x1c($s0) +/* 07A57C 7F045A0C C604001C */ lwc1 $f4, 0x1c($s0) +/* 07A580 7F045A10 4604903C */ c.lt.s $f18, $f4 +/* 07A584 7F045A14 00000000 */ nop +/* 07A588 7F045A18 45000002 */ bc1f .Ljp7F045A24 +/* 07A58C 7F045A1C 00000000 */ nop +/* 07A590 7F045A20 E612001C */ swc1 $f18, 0x1c($s0) +.Ljp7F045A24: +/* 07A594 7F045A24 10000029 */ b .Ljp7F045ACC +/* 07A598 7F045A28 8E030000 */ lw $v1, ($s0) +/* 07A59C 7F045A2C C60000B0 */ lwc1 $f0, 0xb0($s0) +.Ljp7F045A30: +/* 07A5A0 7F045A30 C7A806A0 */ lwc1 $f8, 0x6a0($sp) +/* 07A5A4 7F045A34 4600403C */ c.lt.s $f8, $f0 +/* 07A5A8 7F045A38 00000000 */ nop +/* 07A5AC 7F045A3C 45000019 */ bc1f .Ljp7F045AA4 +/* 07A5B0 7F045A40 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07A5B4 7F045A44 C42683B4 */ lwc1 $f6, %lo(global_timer_delta)($at) +/* 07A5B8 7F045A48 C60A0014 */ lwc1 $f10, 0x14($s0) +/* 07A5BC 7F045A4C C60800B4 */ lwc1 $f8, 0xb4($s0) +/* 07A5C0 7F045A50 46065102 */ mul.s $f4, $f10, $f6 +/* 07A5C4 7F045A54 46044280 */ add.s $f10, $f8, $f4 +/* 07A5C8 7F045A58 E60A00B4 */ swc1 $f10, 0xb4($s0) +/* 07A5CC 7F045A5C C42883B4 */ lwc1 $f8, %lo(global_timer_delta)($at) +/* 07A5D0 7F045A60 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07A5D4 7F045A64 3C018005 */ lui $at, %hi(D_80052AA0) # $at, 0x8005 +/* 07A5D8 7F045A68 46083102 */ mul.s $f4, $f6, $f8 +/* 07A5DC 7F045A6C 46040280 */ add.s $f10, $f0, $f4 +/* 07A5E0 7F045A70 E60A00B0 */ swc1 $f10, 0xb0($s0) +/* 07A5E4 7F045A74 C7A806A0 */ lwc1 $f8, 0x6a0($sp) +/* 07A5E8 7F045A78 C60600B0 */ lwc1 $f6, 0xb0($s0) +/* 07A5EC 7F045A7C C42A2AD0 */ lwc1 $f10, %lo(D_80052AA0)($at) +/* 07A5F0 7F045A80 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07A5F4 7F045A84 46083101 */ sub.s $f4, $f6, $f8 +/* 07A5F8 7F045A88 46045182 */ mul.s $f6, $f10, $f4 +/* 07A5FC 7F045A8C C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07A600 7F045A90 460A3102 */ mul.s $f4, $f6, $f10 +/* 07A604 7F045A94 46044180 */ add.s $f6, $f8, $f4 +/* 07A608 7F045A98 E7A606A0 */ swc1 $f6, 0x6a0($sp) +/* 07A60C 7F045A9C 1000000B */ b .Ljp7F045ACC +/* 07A610 7F045AA0 8E030000 */ lw $v1, ($s0) +.Ljp7F045AA4: +/* 07A614 7F045AA4 E7A006A0 */ swc1 $f0, 0x6a0($sp) +/* 07A618 7F045AA8 8E090000 */ lw $t1, ($s0) +/* 07A61C 7F045AAC 2401FFDF */ li $at, -33 +/* 07A620 7F045AB0 C60A00B4 */ lwc1 $f10, 0xb4($s0) +/* 07A624 7F045AB4 01215824 */ and $t3, $t1, $at +/* 07A628 7F045AB8 AE0B0000 */ sw $t3, ($s0) +/* 07A62C 7F045ABC 35630010 */ ori $v1, $t3, 0x10 +/* 07A630 7F045AC0 E616001C */ swc1 $f22, 0x1c($s0) +/* 07A634 7F045AC4 AE030000 */ sw $v1, ($s0) +/* 07A638 7F045AC8 E60A0008 */ swc1 $f10, 8($s0) +.Ljp7F045ACC: +/* 07A63C 7F045ACC 3C028005 */ lui $v0, %hi(global_timer_delta) # $v0, 0x8005 +/* 07A640 7F045AD0 244283B4 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c4c +/* 07A644 7F045AD4 3C018005 */ lui $at, %hi(prop_projectile_gravity_modifier) # $at, 0x8005 +/* 07A648 7F045AD8 306A0010 */ andi $t2, $v1, 0x10 +/* 07A64C 7F045ADC C4322AD4 */ lwc1 $f18, %lo(prop_projectile_gravity_modifier)($at) +/* 07A650 7F045AE0 C4420000 */ lwc1 $f2, ($v0) +/* 07A654 7F045AE4 C600001C */ lwc1 $f0, 0x1c($s0) +/* 07A658 7F045AE8 15400015 */ bnez $t2, .Ljp7F045B40 +/* 07A65C 7F045AEC C6100014 */ lwc1 $f16, 0x14($s0) +/* 07A660 7F045AF0 46008100 */ add.s $f4, $f16, $f0 +/* 07A664 7F045AF4 C6080008 */ lwc1 $f8, 8($s0) +/* 07A668 7F045AF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07A66C 7F045AFC 46022182 */ mul.s $f6, $f4, $f2 +/* 07A670 7F045B00 46064280 */ add.s $f10, $f8, $f6 +/* 07A674 7F045B04 E60A0008 */ swc1 $f10, 8($s0) +/* 07A678 7F045B08 C4420000 */ lwc1 $f2, ($v0) +/* 07A67C 7F045B0C C60C0008 */ lwc1 $f12, 8($s0) +/* 07A680 7F045B10 44815000 */ mtc1 $at, $f10 +/* 07A684 7F045B14 46029102 */ mul.s $f4, $f18, $f2 +/* 07A688 7F045B18 46046381 */ sub.s $f14, $f12, $f4 +/* 07A68C 7F045B1C 460E6200 */ add.s $f8, $f12, $f14 +/* 07A690 7F045B20 46081182 */ mul.s $f6, $f2, $f8 +/* 07A694 7F045B24 C7A806A0 */ lwc1 $f8, 0x6a0($sp) +/* 07A698 7F045B28 460A3102 */ mul.s $f4, $f6, $f10 +/* 07A69C 7F045B2C 46044180 */ add.s $f6, $f8, $f4 +/* 07A6A0 7F045B30 E7A606A0 */ swc1 $f6, 0x6a0($sp) +/* 07A6A4 7F045B34 E60E0008 */ swc1 $f14, 8($s0) +/* 07A6A8 7F045B38 1000000C */ b .Ljp7F045B6C +/* 07A6AC 7F045B3C C4420000 */ lwc1 $f2, ($v0) +.Ljp7F045B40: +/* 07A6B0 7F045B40 46008200 */ add.s $f8, $f16, $f0 +/* 07A6B4 7F045B44 C60A0008 */ lwc1 $f10, 8($s0) +/* 07A6B8 7F045B48 46024102 */ mul.s $f4, $f8, $f2 +/* 07A6BC 7F045B4C 46045180 */ add.s $f6, $f10, $f4 +/* 07A6C0 7F045B50 E6060008 */ swc1 $f6, 8($s0) +/* 07A6C4 7F045B54 C60A0008 */ lwc1 $f10, 8($s0) +/* 07A6C8 7F045B58 C4420000 */ lwc1 $f2, ($v0) +/* 07A6CC 7F045B5C C7A806A0 */ lwc1 $f8, 0x6a0($sp) +/* 07A6D0 7F045B60 46025102 */ mul.s $f4, $f10, $f2 +/* 07A6D4 7F045B64 46044180 */ add.s $f6, $f8, $f4 +/* 07A6D8 7F045B68 E7A606A0 */ swc1 $f6, 0x6a0($sp) +.Ljp7F045B6C: +/* 07A6DC 7F045B6C C6080010 */ lwc1 $f8, 0x10($s0) +/* 07A6E0 7F045B70 C60A0004 */ lwc1 $f10, 4($s0) +/* 07A6E4 7F045B74 26240018 */ addiu $a0, $s1, 0x18 +/* 07A6E8 7F045B78 46024102 */ mul.s $f4, $f8, $f2 +/* 07A6EC 7F045B7C C6080018 */ lwc1 $f8, 0x18($s0) +/* 07A6F0 7F045B80 26050020 */ addiu $a1, $s0, 0x20 +/* 07A6F4 7F045B84 46045180 */ add.s $f6, $f10, $f4 +/* 07A6F8 7F045B88 E6060004 */ swc1 $f6, 4($s0) +/* 07A6FC 7F045B8C C44A0000 */ lwc1 $f10, ($v0) +/* 07A700 7F045B90 C606000C */ lwc1 $f6, 0xc($s0) +/* 07A704 7F045B94 460A4102 */ mul.s $f4, $f8, $f10 +/* 07A708 7F045B98 46043200 */ add.s $f8, $f6, $f4 +/* 07A70C 7F045B9C C6060004 */ lwc1 $f6, 4($s0) +/* 07A710 7F045BA0 E608000C */ swc1 $f8, 0xc($s0) +/* 07A714 7F045BA4 C4420000 */ lwc1 $f2, ($v0) +/* 07A718 7F045BA8 C7AA069C */ lwc1 $f10, 0x69c($sp) +/* 07A71C 7F045BAC 8CE60000 */ lw $a2, ($a3) +/* 07A720 7F045BB0 46023102 */ mul.s $f4, $f6, $f2 +/* 07A724 7F045BB4 C7A606A4 */ lwc1 $f6, 0x6a4($sp) +/* 07A728 7F045BB8 46045200 */ add.s $f8, $f10, $f4 +/* 07A72C 7F045BBC E7A8069C */ swc1 $f8, 0x69c($sp) +/* 07A730 7F045BC0 C60A000C */ lwc1 $f10, 0xc($s0) +/* 07A734 7F045BC4 AFA50070 */ sw $a1, 0x70($sp) +/* 07A738 7F045BC8 AFA40074 */ sw $a0, 0x74($sp) +/* 07A73C 7F045BCC 46025102 */ mul.s $f4, $f10, $f2 +/* 07A740 7F045BD0 46043200 */ add.s $f8, $f6, $f4 +/* 07A744 7F045BD4 0FC160C6 */ jal sub_GAME_7F057DF8 +/* 07A748 7F045BD8 E7A806A4 */ swc1 $f8, 0x6a4($sp) +/* 07A74C 7F045BDC 922D0003 */ lbu $t5, 3($s1) +/* 07A750 7F045BE0 24010008 */ li $at, 8 +/* 07A754 7F045BE4 55A10013 */ bnel $t5, $at, .Ljp7F045C34 +/* 07A758 7F045BE8 8E040088 */ lw $a0, 0x88($s0) +/* 07A75C 7F045BEC 82220080 */ lb $v0, 0x80($s1) +/* 07A760 7F045BF0 2401001D */ li $at, 29 +/* 07A764 7F045BF4 1041000D */ beq $v0, $at, .Ljp7F045C2C +/* 07A768 7F045BF8 2401001B */ li $at, 27 +/* 07A76C 7F045BFC 1041000B */ beq $v0, $at, .Ljp7F045C2C +/* 07A770 7F045C00 2401001C */ li $at, 28 +/* 07A774 7F045C04 10410009 */ beq $v0, $at, .Ljp7F045C2C +/* 07A778 7F045C08 24010021 */ li $at, 33 +/* 07A77C 7F045C0C 10410007 */ beq $v0, $at, .Ljp7F045C2C +/* 07A780 7F045C10 2401002F */ li $at, 47 +/* 07A784 7F045C14 10410005 */ beq $v0, $at, .Ljp7F045C2C +/* 07A788 7F045C18 24010030 */ li $at, 48 +/* 07A78C 7F045C1C 10410003 */ beq $v0, $at, .Ljp7F045C2C +/* 07A790 7F045C20 24010022 */ li $at, 34 +/* 07A794 7F045C24 54410003 */ bnel $v0, $at, .Ljp7F045C34 +/* 07A798 7F045C28 8E040088 */ lw $a0, 0x88($s0) +.Ljp7F045C2C: +/* 07A79C 7F045C2C 24120001 */ li $s2, 1 +/* 07A7A0 7F045C30 8E040088 */ lw $a0, 0x88($s0) +.Ljp7F045C34: +/* 07A7A4 7F045C34 50800004 */ beql $a0, $zero, .Ljp7F045C48 +/* 07A7A8 7F045C38 02202025 */ move $a0, $s1 +/* 07A7AC 7F045C3C 0FC0F4D6 */ jal sub_GAME_7F03D058 +/* 07A7B0 7F045C40 00002825 */ move $a1, $zero +/* 07A7B4 7F045C44 02202025 */ move $a0, $s1 +.Ljp7F045C48: +/* 07A7B8 7F045C48 27A5069C */ addiu $a1, $sp, 0x69c +/* 07A7BC 7F045C4C 27A6061C */ addiu $a2, $sp, 0x61c +/* 07A7C0 7F045C50 27A70628 */ addiu $a3, $sp, 0x628 +/* 07A7C4 7F045C54 AFB20010 */ sw $s2, 0x10($sp) +/* 07A7C8 7F045C58 0FC10C6D */ jal sub_GAME_7F042EB4 +/* 07A7CC 7F045C5C AFA00014 */ sw $zero, 0x14($sp) +/* 07A7D0 7F045C60 AFA2066C */ sw $v0, 0x66c($sp) +/* 07A7D4 7F045C64 8E040088 */ lw $a0, 0x88($s0) +/* 07A7D8 7F045C68 50800004 */ beql $a0, $zero, .Ljp7F045C7C +/* 07A7DC 7F045C6C 8FB9066C */ lw $t9, 0x66c($sp) +/* 07A7E0 7F045C70 0FC0F4D6 */ jal sub_GAME_7F03D058 +/* 07A7E4 7F045C74 24050001 */ li $a1, 1 +/* 07A7E8 7F045C78 8FB9066C */ lw $t9, 0x66c($sp) +.Ljp7F045C7C: +/* 07A7EC 7F045C7C 240F0001 */ li $t7, 1 +/* 07A7F0 7F045C80 24010002 */ li $at, 2 +/* 07A7F4 7F045C84 17210042 */ bne $t9, $at, .Ljp7F045D90 +/* 07A7F8 7F045C88 AFAF0698 */ sw $t7, 0x698($sp) +/* 07A7FC 7F045C8C 3C038003 */ lui $v1, %hi(D_80030B0C) # $v1, 0x8003 +/* 07A800 7F045C90 8C630B4C */ lw $v1, %lo(D_80030B0C)($v1) +/* 07A804 7F045C94 10600007 */ beqz $v1, .Ljp7F045CB4 +/* 07A808 7F045C98 00000000 */ nop +/* 07A80C 7F045C9C 90620000 */ lbu $v0, ($v1) +/* 07A810 7F045CA0 24010003 */ li $at, 3 +/* 07A814 7F045CA4 1041003A */ beq $v0, $at, .Ljp7F045D90 +/* 07A818 7F045CA8 24010006 */ li $at, 6 +/* 07A81C 7F045CAC 50410039 */ beql $v0, $at, .Ljp7F045D94 +/* 07A820 7F045CB0 8FB9060C */ lw $t9, 0x60c($sp) +.Ljp7F045CB4: +/* 07A824 7F045CB4 10600007 */ beqz $v1, .Ljp7F045CD4 +/* 07A828 7F045CB8 00002025 */ move $a0, $zero +/* 07A82C 7F045CBC 8C620004 */ lw $v0, 4($v1) +/* 07A830 7F045CC0 8C580064 */ lw $t8, 0x64($v0) +/* 07A834 7F045CC4 33080080 */ andi $t0, $t8, 0x80 +/* 07A838 7F045CC8 11000002 */ beqz $t0, .Ljp7F045CD4 +/* 07A83C 7F045CCC 00000000 */ nop +/* 07A840 7F045CD0 24040001 */ li $a0, 1 +.Ljp7F045CD4: +/* 07A844 7F045CD4 5480002F */ bnezl $a0, .Ljp7F045D94 +/* 07A848 7F045CD8 8FB9060C */ lw $t9, 0x60c($sp) +/* 07A84C 7F045CDC 0FC0FF9C */ jal sub_GAME_7F03FB70 +/* 07A850 7F045CE0 02002025 */ move $a0, $s0 +/* 07A854 7F045CE4 8E290064 */ lw $t1, 0x64($s1) +/* 07A858 7F045CE8 2401FF7F */ li $at, -129 +/* 07A85C 7F045CEC AE20006C */ sw $zero, 0x6c($s1) +/* 07A860 7F045CF0 01215824 */ and $t3, $t1, $at +/* 07A864 7F045CF4 AE2B0064 */ sw $t3, 0x64($s1) +/* 07A868 7F045CF8 92620001 */ lbu $v0, 1($s3) +/* 07A86C 7F045CFC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07A870 7F045D00 240500F1 */ li $a1, 241 +/* 07A874 7F045D04 304C0008 */ andi $t4, $v0, 8 +/* 07A878 7F045D08 11800003 */ beqz $t4, .Ljp7F045D18 +/* 07A87C 7F045D0C 00003025 */ move $a2, $zero +/* 07A880 7F045D10 344E0010 */ ori $t6, $v0, 0x10 +/* 07A884 7F045D14 A26E0001 */ sb $t6, 1($s3) +.Ljp7F045D18: +/* 07A888 7F045D18 0C002386 */ jal play_sfx_a1 +/* 07A88C 7F045D1C 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07A890 7F045D20 00402025 */ move $a0, $v0 +/* 07A894 7F045D24 0FC14FC3 */ jal sub_GAME_7F053A10 +/* 07A898 7F045D28 26650008 */ addiu $a1, $s3, 8 +/* 07A89C 7F045D2C 8E6A0014 */ lw $t2, 0x14($s3) +/* 07A8A0 7F045D30 82240080 */ lb $a0, 0x80($s1) +/* 07A8A4 7F045D34 0FC15F41 */ jal sub_GAME_7F0577E8 +/* 07A8A8 7F045D38 91450003 */ lbu $a1, 3($t2) +/* 07A8AC 7F045D3C 02202025 */ move $a0, $s1 +/* 07A8B0 7F045D40 27A5061C */ addiu $a1, $sp, 0x61c +/* 07A8B4 7F045D44 8E660014 */ lw $a2, 0x14($s3) +/* 07A8B8 7F045D48 0FC10F2E */ jal sub_GAME_7F0439B8 +/* 07A8BC 7F045D4C 27A70628 */ addiu $a3, $sp, 0x628 +/* 07A8C0 7F045D50 3C058003 */ lui $a1, %hi(D_80030B0C) # $a1, 0x8003 +/* 07A8C4 7F045D54 8CA50B4C */ lw $a1, %lo(D_80030B0C)($a1) +/* 07A8C8 7F045D58 02602025 */ move $a0, $s3 +/* 07A8CC 7F045D5C 3C068007 */ lui $a2, %hi(objinst) # $a2, 0x8007 +/* 07A8D0 7F045D60 10A0000B */ beqz $a1, .Ljp7F045D90 +/* 07A8D4 7F045D64 3C078007 */ lui $a3, %hi(dword_CODE_bss_80075B74) # $a3, 0x8007 +/* 07A8D8 7F045D68 8E720014 */ lw $s2, 0x14($s3) +/* 07A8DC 7F045D6C 8CC65BB0 */ lw $a2, %lo(objinst)($a2) +/* 07A8E0 7F045D70 0FC10F5B */ jal sub_GAME_7F043A6C +/* 07A8E4 7F045D74 8CE75BB4 */ lw $a3, %lo(dword_CODE_bss_80075B74)($a3) +/* 07A8E8 7F045D78 10400005 */ beqz $v0, .Ljp7F045D90 +/* 07A8EC 7F045D7C 240D0005 */ li $t5, 5 +/* 07A8F0 7F045D80 AE720014 */ sw $s2, 0x14($s3) +/* 07A8F4 7F045D84 240F0001 */ li $t7, 1 +/* 07A8F8 7F045D88 AFAD0688 */ sw $t5, 0x688($sp) +/* 07A8FC 7F045D8C AFAF060C */ sw $t7, 0x60c($sp) +.Ljp7F045D90: +/* 07A900 7F045D90 8FB9060C */ lw $t9, 0x60c($sp) +.Ljp7F045D94: +/* 07A904 7F045D94 172000EC */ bnez $t9, .Ljp7F046148 +/* 07A908 7F045D98 3C128003 */ lui $s2, %hi(D_80030B0C) # $s2, 0x8003 +/* 07A90C 7F045D9C 8E520B4C */ lw $s2, %lo(D_80030B0C)($s2) +/* 07A910 7F045DA0 524000EA */ beql $s2, $zero, .Ljp7F04614C +/* 07A914 7F045DA4 8FB9060C */ lw $t9, 0x60c($sp) +/* 07A918 7F045DA8 92380003 */ lbu $t8, 3($s1) +/* 07A91C 7F045DAC 24010008 */ li $at, 8 +/* 07A920 7F045DB0 570100E6 */ bnel $t8, $at, .Ljp7F04614C +/* 07A924 7F045DB4 8FB9060C */ lw $t9, 0x60c($sp) +/* 07A928 7F045DB8 82220080 */ lb $v0, 0x80($s1) +/* 07A92C 7F045DBC 24010003 */ li $at, 3 +/* 07A930 7F045DC0 544100C3 */ bnel $v0, $at, .Ljp7F0460D0 +/* 07A934 7F045DC4 24010056 */ li $at, 86 +/* 07A938 7F045DC8 92420000 */ lbu $v0, ($s2) +/* 07A93C 7F045DCC 24010003 */ li $at, 3 +/* 07A940 7F045DD0 1041000D */ beq $v0, $at, .Ljp7F045E08 +/* 07A944 7F045DD4 24010006 */ li $at, 6 +/* 07A948 7F045DD8 544100DC */ bnel $v0, $at, .Ljp7F04614C +/* 07A94C 7F045DDC 8FB9060C */ lw $t9, 0x60c($sp) +/* 07A950 7F045DE0 8E480004 */ lw $t0, 4($s2) +/* 07A954 7F045DE4 510000D9 */ beql $t0, $zero, .Ljp7F04614C +/* 07A958 7F045DE8 8FB9060C */ lw $t9, 0x60c($sp) +/* 07A95C 7F045DEC 0FC26F3F */ jal sub_GAME_7F09B15C +/* 07A960 7F045DF0 02402025 */ move $a0, $s2 +/* 07A964 7F045DF4 0FC26F3C */ jal get_cur_playernum +/* 07A968 7F045DF8 00409025 */ move $s2, $v0 +/* 07A96C 7F045DFC 105200D2 */ beq $v0, $s2, .Ljp7F046148 +/* 07A970 7F045E00 3C128003 */ lui $s2, %hi(D_80030B0C) # $s2, 0x8003 +/* 07A974 7F045E04 8E520B4C */ lw $s2, %lo(D_80030B0C)($s2) +.Ljp7F045E08: +/* 07A978 7F045E08 8E22006C */ lw $v0, 0x6c($s1) +/* 07A97C 7F045E0C 8E440004 */ lw $a0, 4($s2) +/* 07A980 7F045E10 8C490000 */ lw $t1, ($v0) +/* 07A984 7F045E14 312B0001 */ andi $t3, $t1, 1 +/* 07A988 7F045E18 516000CC */ beql $t3, $zero, .Ljp7F04614C +/* 07A98C 7F045E1C 8FB9060C */ lw $t9, 0x60c($sp) +/* 07A990 7F045E20 8C4C0090 */ lw $t4, 0x90($v0) +/* 07A994 7F045E24 5D8000C9 */ bgtzl $t4, .Ljp7F04614C +/* 07A998 7F045E28 8FB9060C */ lw $t9, 0x60c($sp) +/* 07A99C 7F045E2C 8E2E0064 */ lw $t6, 0x64($s1) +/* 07A9A0 7F045E30 3C068007 */ lui $a2, %hi(flt_CODE_bss_80075B78) # $a2, 0x8007 +/* 07A9A4 7F045E34 24C65BB8 */ addiu $a2, %lo(flt_CODE_bss_80075B78) # addiu $a2, $a2, 0x5bb8 +/* 07A9A8 7F045E38 31CA0020 */ andi $t2, $t6, 0x20 +/* 07A9AC 7F045E3C 114000C2 */ beqz $t2, .Ljp7F046148 +/* 07A9B0 7F045E40 3C058003 */ lui $a1, %hi(bodypartshot) # $a1, 0x8003 +/* 07A9B4 7F045E44 82270080 */ lb $a3, 0x80($s1) +/* 07A9B8 7F045E48 240D0001 */ li $t5, 1 +/* 07A9BC 7F045E4C AFAD0010 */ sw $t5, 0x10($sp) +/* 07A9C0 7F045E50 0FC09D61 */ jal handles_shot_actors +/* 07A9C4 7F045E54 8CA50B50 */ lw $a1, %lo(bodypartshot)($a1) +/* 07A9C8 7F045E58 104000BB */ beqz $v0, .Ljp7F046148 +/* 07A9CC 7F045E5C 240F0001 */ li $t7, 1 +/* 07A9D0 7F045E60 AFAF060C */ sw $t7, 0x60c($sp) +/* 07A9D4 7F045E64 C610008C */ lwc1 $f16, 0x8c($s0) +/* 07A9D8 7F045E68 C7AA0628 */ lwc1 $f10, 0x628($sp) +/* 07A9DC 7F045E6C 4610B03C */ c.lt.s $f22, $f16 +/* 07A9E0 7F045E70 00000000 */ nop +/* 07A9E4 7F045E74 4502001D */ bc1fl .Ljp7F045EEC +/* 07A9E8 7F045E78 8E190000 */ lw $t9, ($s0) +/* 07A9EC 7F045E7C C6020004 */ lwc1 $f2, 4($s0) +/* 07A9F0 7F045E80 C60C0008 */ lwc1 $f12, 8($s0) +/* 07A9F4 7F045E84 C7A4062C */ lwc1 $f4, 0x62c($sp) +/* 07A9F8 7F045E88 460A1182 */ mul.s $f6, $f2, $f10 +/* 07A9FC 7F045E8C C600000C */ lwc1 $f0, 0xc($s0) +/* 07AA00 7F045E90 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07AA04 7F045E94 46046202 */ mul.s $f8, $f12, $f4 +/* 07AA08 7F045E98 46083100 */ add.s $f4, $f6, $f8 +/* 07AA0C 7F045E9C C7A60630 */ lwc1 $f6, 0x630($sp) +/* 07AA10 7F045EA0 46003202 */ mul.s $f8, $f6, $f0 +/* 07AA14 7F045EA4 44813000 */ mtc1 $at, $f6 +/* 07AA18 7F045EA8 46044380 */ add.s $f14, $f8, $f4 +/* 07AA1C 7F045EAC 46068200 */ add.s $f8, $f16, $f6 +/* 07AA20 7F045EB0 46004107 */ neg.s $f4, $f8 +/* 07AA24 7F045EB4 46047382 */ mul.s $f14, $f14, $f4 +/* 07AA28 7F045EB8 00000000 */ nop +/* 07AA2C 7F045EBC 460A7182 */ mul.s $f6, $f14, $f10 +/* 07AA30 7F045EC0 46061200 */ add.s $f8, $f2, $f6 +/* 07AA34 7F045EC4 E6080004 */ swc1 $f8, 4($s0) +/* 07AA38 7F045EC8 C7A4062C */ lwc1 $f4, 0x62c($sp) +/* 07AA3C 7F045ECC 46047282 */ mul.s $f10, $f14, $f4 +/* 07AA40 7F045ED0 460A6180 */ add.s $f6, $f12, $f10 +/* 07AA44 7F045ED4 E6060008 */ swc1 $f6, 8($s0) +/* 07AA48 7F045ED8 C7A80630 */ lwc1 $f8, 0x630($sp) +/* 07AA4C 7F045EDC 46087102 */ mul.s $f4, $f14, $f8 +/* 07AA50 7F045EE0 46040280 */ add.s $f10, $f0, $f4 +/* 07AA54 7F045EE4 E60A000C */ swc1 $f10, 0xc($s0) +/* 07AA58 7F045EE8 8E190000 */ lw $t9, ($s0) +.Ljp7F045EEC: +/* 07AA5C 7F045EEC 33380200 */ andi $t8, $t9, 0x200 +/* 07AA60 7F045EF0 57000004 */ bnezl $t8, .Ljp7F045F04 +/* 07AA64 7F045EF4 8E080090 */ lw $t0, 0x90($s0) +/* 07AA68 7F045EF8 0FC15FF8 */ jal sub_GAME_7F057AC0 +/* 07AA6C 7F045EFC 8FA40070 */ lw $a0, 0x70($sp) +/* 07AA70 7F045F00 8E080090 */ lw $t0, 0x90($s0) +.Ljp7F045F04: +/* 07AA74 7F045F04 3C058003 */ lui $a1, %hi(D_80030B0C) # $a1, 0x8003 +/* 07AA78 7F045F08 2406FFFF */ li $a2, -1 +/* 07AA7C 7F045F0C 25090001 */ addiu $t1, $t0, 1 +/* 07AA80 7F045F10 AE090090 */ sw $t1, 0x90($s0) +/* 07AA84 7F045F14 8CA50B4C */ lw $a1, %lo(D_80030B0C)($a1) +/* 07AA88 7F045F18 0FC19252 */ jal recall_joy2_hits_edit_detail_edit_flag +/* 07AA8C 7F045F1C 82240080 */ lb $a0, 0x80($s1) +/* 07AA90 7F045F20 3C0B8003 */ lui $t3, %hi(D_80030B0C) # $t3, 0x8003 +/* 07AA94 7F045F24 8D6B0B4C */ lw $t3, %lo(D_80030B0C)($t3) +/* 07AA98 7F045F28 3C028003 */ lui $v0, %hi(bodypartshot) # $v0, 0x8003 +/* 07AA9C 7F045F2C 916C0001 */ lbu $t4, 1($t3) +/* 07AAA0 7F045F30 318E0002 */ andi $t6, $t4, 2 +/* 07AAA4 7F045F34 51C00085 */ beql $t6, $zero, .Ljp7F04614C +/* 07AAA8 7F045F38 8FB9060C */ lw $t9, 0x60c($sp) +/* 07AAAC 7F045F3C 8C420B50 */ lw $v0, %lo(bodypartshot)($v0) +/* 07AAB0 7F045F40 24010064 */ li $at, 100 +/* 07AAB4 7F045F44 10410080 */ beq $v0, $at, .Ljp7F046148 +/* 07AAB8 7F045F48 2401006E */ li $at, 110 +/* 07AABC 7F045F4C 1041007E */ beq $v0, $at, .Ljp7F046148 +/* 07AAC0 7F045F50 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 +/* 07AAC4 7F045F54 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 +/* 07AAC8 7F045F58 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07AACC 7F045F5C 8C845BB0 */ lw $a0, %lo(objinst)($a0) +/* 07AAD0 7F045F60 0FC1B314 */ jal sub_GAME_7F06C660 +/* 07AAD4 7F045F64 00003025 */ move $a2, $zero +/* 07AAD8 7F045F68 C7A6061C */ lwc1 $f6, 0x61c($sp) +/* 07AADC 7F045F6C C7A80620 */ lwc1 $f8, 0x620($sp) +/* 07AAE0 7F045F70 C7A40624 */ lwc1 $f4, 0x624($sp) +/* 07AAE4 7F045F74 00409025 */ move $s2, $v0 +/* 07AAE8 7F045F78 E7A605D4 */ swc1 $f6, 0x5d4($sp) +/* 07AAEC 7F045F7C E7A805D8 */ swc1 $f8, 0x5d8($sp) +/* 07AAF0 7F045F80 0FC1E26D */ jal get_BONDdata_field_10CC +/* 07AAF4 7F045F84 E7A405DC */ swc1 $f4, 0x5dc($sp) +/* 07AAF8 7F045F88 00402025 */ move $a0, $v0 +/* 07AAFC 7F045F8C 0FC16265 */ jal sub_GAME_7F058474 +/* 07AB00 7F045F90 27A505D4 */ addiu $a1, $sp, 0x5d4 +/* 07AB04 7F045F94 C7AA05D4 */ lwc1 $f10, 0x5d4($sp) +/* 07AB08 7F045F98 C6460030 */ lwc1 $f6, 0x30($s2) +/* 07AB0C 7F045F9C 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07AB10 7F045FA0 44810000 */ mtc1 $at, $f0 +/* 07AB14 7F045FA4 46065201 */ sub.s $f8, $f10, $f6 +/* 07AB18 7F045FA8 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 +/* 07AB1C 7F045FAC 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 +/* 07AB20 7F045FB0 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07AB24 7F045FB4 46004102 */ mul.s $f4, $f8, $f0 +/* 07AB28 7F045FB8 C7A805D8 */ lwc1 $f8, 0x5d8($sp) +/* 07AB2C 7F045FBC 8C845BB0 */ lw $a0, %lo(objinst)($a0) +/* 07AB30 7F045FC0 46045180 */ add.s $f6, $f10, $f4 +/* 07AB34 7F045FC4 E7A605D4 */ swc1 $f6, 0x5d4($sp) +/* 07AB38 7F045FC8 C64A0034 */ lwc1 $f10, 0x34($s2) +/* 07AB3C 7F045FCC 460A4101 */ sub.s $f4, $f8, $f10 +/* 07AB40 7F045FD0 46002182 */ mul.s $f6, $f4, $f0 +/* 07AB44 7F045FD4 C7A405DC */ lwc1 $f4, 0x5dc($sp) +/* 07AB48 7F045FD8 46064280 */ add.s $f10, $f8, $f6 +/* 07AB4C 7F045FDC E7AA05D8 */ swc1 $f10, 0x5d8($sp) +/* 07AB50 7F045FE0 C6480038 */ lwc1 $f8, 0x38($s2) +/* 07AB54 7F045FE4 46082181 */ sub.s $f6, $f4, $f8 +/* 07AB58 7F045FE8 46003282 */ mul.s $f10, $f6, $f0 +/* 07AB5C 7F045FEC 460A2200 */ add.s $f8, $f4, $f10 +/* 07AB60 7F045FF0 0FC1B520 */ jal getjointsize +/* 07AB64 7F045FF4 E7A805DC */ swc1 $f8, 0x5dc($sp) +/* 07AB68 7F045FF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07AB6C 7F045FFC 44813000 */ mtc1 $at, $f6 +/* 07AB70 7F046000 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B88) # $at, 0x8007 +/* 07AB74 7F046004 C42A5BC8 */ lwc1 $f10, %lo(flt_CODE_bss_80075B88)($at) +/* 07AB78 7F046008 46060102 */ mul.s $f4, $f0, $f6 +/* 07AB7C 7F04600C C7A605D4 */ lwc1 $f6, 0x5d4($sp) +/* 07AB80 7F046010 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 +/* 07AB84 7F046014 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 +/* 07AB88 7F046018 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07AB8C 7F04601C 8C845BB0 */ lw $a0, %lo(objinst)($a0) +/* 07AB90 7F046020 460A2202 */ mul.s $f8, $f4, $f10 +/* 07AB94 7F046024 46083101 */ sub.s $f4, $f6, $f8 +/* 07AB98 7F046028 0FC1B520 */ jal getjointsize +/* 07AB9C 7F04602C E7A405D4 */ swc1 $f4, 0x5d4($sp) +/* 07ABA0 7F046030 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07ABA4 7F046034 44815000 */ mtc1 $at, $f10 +/* 07ABA8 7F046038 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B8C) # $at, 0x8007 +/* 07ABAC 7F04603C C4285BCC */ lwc1 $f8, %lo(flt_CODE_bss_80075B8C)($at) +/* 07ABB0 7F046040 460A0182 */ mul.s $f6, $f0, $f10 +/* 07ABB4 7F046044 C7AA05D8 */ lwc1 $f10, 0x5d8($sp) +/* 07ABB8 7F046048 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 +/* 07ABBC 7F04604C 3C058007 */ lui $a1, %hi(dword_CODE_bss_80075B74) # $a1, 0x8007 +/* 07ABC0 7F046050 8CA55BB4 */ lw $a1, %lo(dword_CODE_bss_80075B74)($a1) +/* 07ABC4 7F046054 8C845BB0 */ lw $a0, %lo(objinst)($a0) +/* 07ABC8 7F046058 46083102 */ mul.s $f4, $f6, $f8 +/* 07ABCC 7F04605C 46045181 */ sub.s $f6, $f10, $f4 +/* 07ABD0 7F046060 0FC1B520 */ jal getjointsize +/* 07ABD4 7F046064 E7A605D8 */ swc1 $f6, 0x5d8($sp) +/* 07ABD8 7F046068 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07ABDC 7F04606C 44814000 */ mtc1 $at, $f8 +/* 07ABE0 7F046070 3C018007 */ lui $at, %hi(flt_CODE_bss_80075B90) # $at, 0x8007 +/* 07ABE4 7F046074 C4245BD0 */ lwc1 $f4, %lo(flt_CODE_bss_80075B90)($at) +/* 07ABE8 7F046078 46080282 */ mul.s $f10, $f0, $f8 +/* 07ABEC 7F04607C C7A805DC */ lwc1 $f8, 0x5dc($sp) +/* 07ABF0 7F046080 02402025 */ move $a0, $s2 +/* 07ABF4 7F046084 27A50594 */ addiu $a1, $sp, 0x594 +/* 07ABF8 7F046088 46045182 */ mul.s $f6, $f10, $f4 +/* 07ABFC 7F04608C 46064281 */ sub.s $f10, $f8, $f6 +/* 07AC00 7F046090 0FC168E1 */ jal sub_GAME_7F059E64 +/* 07AC04 7F046094 E7AA05DC */ swc1 $f10, 0x5dc($sp) +/* 07AC08 7F046098 27A40594 */ addiu $a0, $sp, 0x594 +/* 07AC0C 7F04609C 0FC16265 */ jal sub_GAME_7F058474 +/* 07AC10 7F0460A0 27A505D4 */ addiu $a1, $sp, 0x5d4 +/* 07AC14 7F0460A4 3C048007 */ lui $a0, %hi(objinst) # $a0, 0x8007 +/* 07AC18 7F0460A8 3C058003 */ lui $a1, %hi(bodypartshot) # $a1, 0x8003 +/* 07AC1C 7F0460AC 3C068007 */ lui $a2, %hi(dword_CODE_bss_80075B74) # $a2, 0x8007 +/* 07AC20 7F0460B0 8CC65BB4 */ lw $a2, %lo(dword_CODE_bss_80075B74)($a2) +/* 07AC24 7F0460B4 8CA50B50 */ lw $a1, %lo(bodypartshot)($a1) +/* 07AC28 7F0460B8 8C845BB0 */ lw $a0, %lo(objinst)($a0) +/* 07AC2C 7F0460BC 0FC08931 */ jal sub_GAME_7F0221DC +/* 07AC30 7F0460C0 27A705D4 */ addiu $a3, $sp, 0x5d4 +/* 07AC34 7F0460C4 10000021 */ b .Ljp7F04614C +/* 07AC38 7F0460C8 8FB9060C */ lw $t9, 0x60c($sp) +/* 07AC3C 7F0460CC 24010056 */ li $at, 86 +.Ljp7F0460D0: +/* 07AC40 7F0460D0 5441001E */ bnel $v0, $at, .Ljp7F04614C +/* 07AC44 7F0460D4 8FB9060C */ lw $t9, 0x60c($sp) +/* 07AC48 7F0460D8 92420000 */ lbu $v0, ($s2) +/* 07AC4C 7F0460DC 240A0001 */ li $t2, 1 +/* 07AC50 7F0460E0 24010003 */ li $at, 3 +/* 07AC54 7F0460E4 14410008 */ bne $v0, $at, .Ljp7F046108 +/* 07AC58 7F0460E8 AFAA060C */ sw $t2, 0x60c($sp) +/* 07AC5C 7F0460EC 8E440004 */ lw $a0, 4($s2) +/* 07AC60 7F0460F0 26250058 */ addiu $a1, $s1, 0x58 +/* 07AC64 7F0460F4 3C064000 */ lui $a2, 0x4000 +/* 07AC68 7F0460F8 0FC09EC3 */ jal sub_GAME_7F027804 +/* 07AC6C 7F0460FC 24070001 */ li $a3, 1 +/* 07AC70 7F046100 10000011 */ b .Ljp7F046148 +/* 07AC74 7F046104 A6200082 */ sh $zero, 0x82($s1) +.Ljp7F046108: +/* 07AC78 7F046108 24010001 */ li $at, 1 +/* 07AC7C 7F04610C 10410004 */ beq $v0, $at, .Ljp7F046120 +/* 07AC80 7F046110 3C0542C8 */ lui $a1, 0x42c8 +/* 07AC84 7F046114 24010004 */ li $at, 4 +/* 07AC88 7F046118 5441000B */ bnel $v0, $at, .Ljp7F046148 +/* 07AC8C 7F04611C A6200082 */ sh $zero, 0x82($s1) +.Ljp7F046120: +/* 07AC90 7F046120 8E220064 */ lw $v0, 0x64($s1) +/* 07AC94 7F046124 3C010006 */ lui $at, 6 +/* 07AC98 7F046128 8E440004 */ lw $a0, 4($s2) +/* 07AC9C 7F04612C 00416824 */ and $t5, $v0, $at +/* 07ACA0 7F046130 000D7C42 */ srl $t7, $t5, 0x11 +/* 07ACA4 7F046134 AFAF0010 */ sw $t7, 0x10($sp) +/* 07ACA8 7F046138 26260058 */ addiu $a2, $s1, 0x58 +/* 07ACAC 7F04613C 0FC13943 */ jal maybe_detonate_object +/* 07ACB0 7F046140 24070056 */ li $a3, 86 +/* 07ACB4 7F046144 A6200082 */ sh $zero, 0x82($s1) +.Ljp7F046148: +/* 07ACB8 7F046148 8FB9060C */ lw $t9, 0x60c($sp) +.Ljp7F04614C: +/* 07ACBC 7F04614C 5720010B */ bnezl $t9, .Ljp7F04657C +/* 07ACC0 7F046150 8E2F0064 */ lw $t7, 0x64($s1) +/* 07ACC4 7F046154 8FB8066C */ lw $t8, 0x66c($sp) +/* 07ACC8 7F046158 57000031 */ bnezl $t8, .Ljp7F046220 +/* 07ACCC 7F04615C 8E090000 */ lw $t1, ($s0) +/* 07ACD0 7F046160 C610008C */ lwc1 $f16, 0x8c($s0) +/* 07ACD4 7F046164 C7A40628 */ lwc1 $f4, 0x628($sp) +/* 07ACD8 7F046168 4610B03C */ c.lt.s $f22, $f16 +/* 07ACDC 7F04616C 00000000 */ nop +/* 07ACE0 7F046170 4502002B */ bc1fl .Ljp7F046220 +/* 07ACE4 7F046174 8E090000 */ lw $t1, ($s0) +/* 07ACE8 7F046178 C6020004 */ lwc1 $f2, 4($s0) +/* 07ACEC 7F04617C C60C0008 */ lwc1 $f12, 8($s0) +/* 07ACF0 7F046180 C7A6062C */ lwc1 $f6, 0x62c($sp) +/* 07ACF4 7F046184 46041202 */ mul.s $f8, $f2, $f4 +/* 07ACF8 7F046188 C600000C */ lwc1 $f0, 0xc($s0) +/* 07ACFC 7F04618C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07AD00 7F046190 46066282 */ mul.s $f10, $f12, $f6 +/* 07AD04 7F046194 4616603E */ c.le.s $f12, $f22 +/* 07AD08 7F046198 460A4180 */ add.s $f6, $f8, $f10 +/* 07AD0C 7F04619C C7A80630 */ lwc1 $f8, 0x630($sp) +/* 07AD10 7F0461A0 46004282 */ mul.s $f10, $f8, $f0 +/* 07AD14 7F0461A4 44814000 */ mtc1 $at, $f8 +/* 07AD18 7F0461A8 46065380 */ add.s $f14, $f10, $f6 +/* 07AD1C 7F0461AC 46088280 */ add.s $f10, $f16, $f8 +/* 07AD20 7F0461B0 46005187 */ neg.s $f6, $f10 +/* 07AD24 7F0461B4 46067382 */ mul.s $f14, $f14, $f6 +/* 07AD28 7F0461B8 00000000 */ nop +/* 07AD2C 7F0461BC 46047202 */ mul.s $f8, $f14, $f4 +/* 07AD30 7F0461C0 46081280 */ add.s $f10, $f2, $f8 +/* 07AD34 7F0461C4 E60A0004 */ swc1 $f10, 4($s0) +/* 07AD38 7F0461C8 C7A6062C */ lwc1 $f6, 0x62c($sp) +/* 07AD3C 7F0461CC 46067102 */ mul.s $f4, $f14, $f6 +/* 07AD40 7F0461D0 46046200 */ add.s $f8, $f12, $f4 +/* 07AD44 7F0461D4 E6080008 */ swc1 $f8, 8($s0) +/* 07AD48 7F0461D8 C7AA0630 */ lwc1 $f10, 0x630($sp) +/* 07AD4C 7F0461DC 460A7182 */ mul.s $f6, $f14, $f10 +/* 07AD50 7F0461E0 46060100 */ add.s $f4, $f0, $f6 +/* 07AD54 7F0461E4 4500000D */ bc1f .Ljp7F04621C +/* 07AD58 7F0461E8 E604000C */ swc1 $f4, 0xc($s0) +/* 07AD5C 7F0461EC C6080008 */ lwc1 $f8, 8($s0) +/* 07AD60 7F0461F0 24080001 */ li $t0, 1 +/* 07AD64 7F0461F4 4608B03E */ c.le.s $f22, $f8 +/* 07AD68 7F0461F8 00000000 */ nop +/* 07AD6C 7F0461FC 45030007 */ bc1tl .Ljp7F04621C +/* 07AD70 7F046200 AFA80614 */ sw $t0, 0x614($sp) +/* 07AD74 7F046204 C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07AD78 7F046208 460AA03E */ c.le.s $f20, $f10 +/* 07AD7C 7F04620C 00000000 */ nop +/* 07AD80 7F046210 45020003 */ bc1fl .Ljp7F046220 +/* 07AD84 7F046214 8E090000 */ lw $t1, ($s0) +/* 07AD88 7F046218 AFA80614 */ sw $t0, 0x614($sp) +.Ljp7F04621C: +/* 07AD8C 7F04621C 8E090000 */ lw $t1, ($s0) +.Ljp7F046220: +/* 07AD90 7F046220 C7B40644 */ lwc1 $f20, 0x644($sp) +/* 07AD94 7F046224 312B0008 */ andi $t3, $t1, 8 +/* 07AD98 7F046228 15600014 */ bnez $t3, .Ljp7F04627C +/* 07AD9C 7F04622C 00000000 */ nop +/* 07ADA0 7F046230 8E640014 */ lw $a0, 0x14($s3) +/* 07ADA4 7F046234 8E650008 */ lw $a1, 8($s3) +/* 07ADA8 7F046238 0FC2CD48 */ jal sub_GAME_7F0B2970 +/* 07ADAC 7F04623C 8E660010 */ lw $a2, 0x10($s3) +/* 07ADB0 7F046240 46000506 */ mov.s $f20, $f0 +/* 07ADB4 7F046244 8FA40648 */ lw $a0, 0x648($sp) +/* 07ADB8 7F046248 0FC0FB2F */ jal sub_GAME_7F03E9BC +/* 07ADBC 7F04624C 8FA50074 */ lw $a1, 0x74($sp) +/* 07ADC0 7F046250 4600A101 */ sub.s $f4, $f20, $f0 +/* 07ADC4 7F046254 E7A00640 */ swc1 $f0, 0x640($sp) +/* 07ADC8 7F046258 C666000C */ lwc1 $f6, 0xc($s3) +/* 07ADCC 7F04625C 00006025 */ move $t4, $zero +/* 07ADD0 7F046260 4604303C */ c.lt.s $f6, $f4 +/* 07ADD4 7F046264 00000000 */ nop +/* 07ADD8 7F046268 45000002 */ bc1f .Ljp7F046274 +/* 07ADDC 7F04626C 00000000 */ nop +/* 07ADE0 7F046270 240C0001 */ li $t4, 1 +.Ljp7F046274: +/* 07ADE4 7F046274 10000001 */ b .Ljp7F04627C +/* 07ADE8 7F046278 AFAC0618 */ sw $t4, 0x618($sp) +.Ljp7F04627C: +/* 07ADEC 7F04627C 8FAE0618 */ lw $t6, 0x618($sp) +/* 07ADF0 7F046280 8FAA066C */ lw $t2, 0x66c($sp) +/* 07ADF4 7F046284 55C00004 */ bnezl $t6, .Ljp7F046298 +/* 07ADF8 7F046288 8E0D0000 */ lw $t5, ($s0) +/* 07ADFC 7F04628C 5540000B */ bnezl $t2, .Ljp7F0462BC +/* 07AE00 7F046290 8FA80618 */ lw $t0, 0x618($sp) +/* 07AE04 7F046294 8E0D0000 */ lw $t5, ($s0) +.Ljp7F046298: +/* 07AE08 7F046298 31AF0200 */ andi $t7, $t5, 0x200 +/* 07AE0C 7F04629C 55E00004 */ bnezl $t7, .Ljp7F0462B0 +/* 07AE10 7F0462A0 8E190090 */ lw $t9, 0x90($s0) +/* 07AE14 7F0462A4 0FC15FF8 */ jal sub_GAME_7F057AC0 +/* 07AE18 7F0462A8 8FA40070 */ lw $a0, 0x70($sp) +/* 07AE1C 7F0462AC 8E190090 */ lw $t9, 0x90($s0) +.Ljp7F0462B0: +/* 07AE20 7F0462B0 27380001 */ addiu $t8, $t9, 1 +/* 07AE24 7F0462B4 AE180090 */ sw $t8, 0x90($s0) +/* 07AE28 7F0462B8 8FA80618 */ lw $t0, 0x618($sp) +.Ljp7F0462BC: +/* 07AE2C 7F0462BC 8FA90614 */ lw $t1, 0x614($sp) +/* 07AE30 7F0462C0 8FAB0618 */ lw $t3, 0x618($sp) +/* 07AE34 7F0462C4 15000003 */ bnez $t0, .Ljp7F0462D4 +/* 07AE38 7F0462C8 00000000 */ nop +/* 07AE3C 7F0462CC 5120003A */ beql $t1, $zero, .Ljp7F0463B8 +/* 07AE40 7F0462D0 92390003 */ lbu $t9, 3($s1) +.Ljp7F0462D4: +/* 07AE44 7F0462D4 11600009 */ beqz $t3, .Ljp7F0462FC +/* 07AE48 7F0462D8 C7A40620 */ lwc1 $f4, 0x620($sp) +/* 07AE4C 7F0462DC C7A80640 */ lwc1 $f8, 0x640($sp) +/* 07AE50 7F0462E0 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07AE54 7F0462E4 44813000 */ mtc1 $at, $f6 +/* 07AE58 7F0462E8 4608A281 */ sub.s $f10, $f20, $f8 +/* 07AE5C 7F0462EC 46065000 */ add.s $f0, $f10, $f6 +/* 07AE60 7F0462F0 E660000C */ swc1 $f0, 0xc($s3) +/* 07AE64 7F0462F4 10000008 */ b .Ljp7F046318 +/* 07AE68 7F0462F8 E620005C */ swc1 $f0, 0x5c($s1) +.Ljp7F0462FC: +/* 07AE6C 7F0462FC C7A80640 */ lwc1 $f8, 0x640($sp) +/* 07AE70 7F046300 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07AE74 7F046304 44813000 */ mtc1 $at, $f6 +/* 07AE78 7F046308 46082281 */ sub.s $f10, $f4, $f8 +/* 07AE7C 7F04630C 46065080 */ add.s $f2, $f10, $f6 +/* 07AE80 7F046310 E662000C */ swc1 $f2, 0xc($s3) +/* 07AE84 7F046314 E622005C */ swc1 $f2, 0x5c($s1) +.Ljp7F046318: +/* 07AE88 7F046318 8E230064 */ lw $v1, 0x64($s1) +/* 07AE8C 7F04631C 02202025 */ move $a0, $s1 +/* 07AE90 7F046320 000363C0 */ sll $t4, $v1, 0xf +/* 07AE94 7F046324 05800002 */ bltz $t4, .Ljp7F046330 +/* 07AE98 7F046328 346E0100 */ ori $t6, $v1, 0x100 +/* 07AE9C 7F04632C AE2E0064 */ sw $t6, 0x64($s1) +.Ljp7F046330: +/* 07AEA0 7F046330 C610008C */ lwc1 $f16, 0x8c($s0) +/* 07AEA4 7F046334 4610B03C */ c.lt.s $f22, $f16 +/* 07AEA8 7F046338 00000000 */ nop +/* 07AEAC 7F04633C 4500001B */ bc1f .Ljp7F0463AC +/* 07AEB0 7F046340 00000000 */ nop +/* 07AEB4 7F046344 C6040008 */ lwc1 $f4, 8($s0) +/* 07AEB8 7F046348 46008207 */ neg.s $f8, $f16 +/* 07AEBC 7F04634C 3C018005 */ lui $at, %hi(D_80052AA8) # $at, 0x8005 +/* 07AEC0 7F046350 46082282 */ mul.s $f10, $f4, $f8 +/* 07AEC4 7F046354 C4202AD8 */ lwc1 $f0, %lo(D_80052AA8)($at) +/* 07AEC8 7F046358 E60A0008 */ swc1 $f10, 8($s0) +/* 07AECC 7F04635C C6060008 */ lwc1 $f6, 8($s0) +/* 07AED0 7F046360 4600303C */ c.lt.s $f6, $f0 +/* 07AED4 7F046364 00000000 */ nop +/* 07AED8 7F046368 45020013 */ bc1fl .Ljp7F0463B8 +/* 07AEDC 7F04636C 92390003 */ lbu $t9, 3($s1) +/* 07AEE0 7F046370 8E0A0000 */ lw $t2, ($s0) +/* 07AEE4 7F046374 02202025 */ move $a0, $s1 +/* 07AEE8 7F046378 314D0002 */ andi $t5, $t2, 2 +/* 07AEEC 7F04637C 11A00007 */ beqz $t5, .Ljp7F04639C +/* 07AEF0 7F046380 00000000 */ nop +/* 07AEF4 7F046384 8E0F0090 */ lw $t7, 0x90($s0) +/* 07AEF8 7F046388 24010001 */ li $at, 1 +/* 07AEFC 7F04638C 15E10003 */ bne $t7, $at, .Ljp7F04639C +/* 07AF00 7F046390 00000000 */ nop +/* 07AF04 7F046394 10000007 */ b .Ljp7F0463B4 +/* 07AF08 7F046398 E6000008 */ swc1 $f0, 8($s0) +.Ljp7F04639C: +/* 07AF0C 7F04639C 0FC10D39 */ jal sub_GAME_7F0431E4 +/* 07AF10 7F0463A0 27A50634 */ addiu $a1, $sp, 0x634 +/* 07AF14 7F0463A4 10000004 */ b .Ljp7F0463B8 +/* 07AF18 7F0463A8 92390003 */ lbu $t9, 3($s1) +.Ljp7F0463AC: +/* 07AF1C 7F0463AC 0FC10D39 */ jal sub_GAME_7F0431E4 +/* 07AF20 7F0463B0 27A50634 */ addiu $a1, $sp, 0x634 +.Ljp7F0463B4: +/* 07AF24 7F0463B4 92390003 */ lbu $t9, 3($s1) +.Ljp7F0463B8: +/* 07AF28 7F0463B8 24010008 */ li $at, 8 +/* 07AF2C 7F0463BC 5721006F */ bnel $t9, $at, .Ljp7F04657C +/* 07AF30 7F0463C0 8E2F0064 */ lw $t7, 0x64($s1) +/* 07AF34 7F0463C4 82220080 */ lb $v0, 0x80($s1) +/* 07AF38 7F0463C8 24010003 */ li $at, 3 +/* 07AF3C 7F0463CC 54410006 */ bnel $v0, $at, .Ljp7F0463E8 +/* 07AF40 7F0463D0 24010056 */ li $at, 86 +/* 07AF44 7F0463D4 0FC10E54 */ jal sub_GAME_7F043650 +/* 07AF48 7F0463D8 02202025 */ move $a0, $s1 +/* 07AF4C 7F0463DC 10000042 */ b .Ljp7F0464E8 +/* 07AF50 7F0463E0 8FAB066C */ lw $t3, 0x66c($sp) +/* 07AF54 7F0463E4 24010056 */ li $at, 86 +.Ljp7F0463E8: +/* 07AF58 7F0463E8 1441002D */ bne $v0, $at, .Ljp7F0464A0 +/* 07AF5C 7F0463EC 8FB8066C */ lw $t8, 0x66c($sp) +/* 07AF60 7F0463F0 13000003 */ beqz $t8, .Ljp7F046400 +/* 07AF64 7F0463F4 8FA80618 */ lw $t0, 0x618($sp) +/* 07AF68 7F0463F8 51000004 */ beql $t0, $zero, .Ljp7F04640C +/* 07AF6C 7F0463FC C6020004 */ lwc1 $f2, 4($s0) +.Ljp7F046400: +/* 07AF70 7F046400 10000038 */ b .Ljp7F0464E4 +/* 07AF74 7F046404 A6200082 */ sh $zero, 0x82($s1) +/* 07AF78 7F046408 C6020004 */ lwc1 $f2, 4($s0) +.Ljp7F04640C: +/* 07AF7C 7F04640C C60C0008 */ lwc1 $f12, 8($s0) +/* 07AF80 7F046410 C600000C */ lwc1 $f0, 0xc($s0) +/* 07AF84 7F046414 46021102 */ mul.s $f4, $f2, $f2 +/* 07AF88 7F046418 3C018005 */ lui $at, %hi(D_80052AAC) +/* 07AF8C 7F04641C 26240058 */ addiu $a0, $s1, 0x58 +/* 07AF90 7F046420 460C6202 */ mul.s $f8, $f12, $f12 +/* 07AF94 7F046424 24060008 */ li $a2, 8 +/* 07AF98 7F046428 46000182 */ mul.s $f6, $f0, $f0 +/* 07AF9C 7F04642C 46082280 */ add.s $f10, $f4, $f8 +/* 07AFA0 7F046430 C4242ADC */ lwc1 $f4, %lo(D_80052AAC)($at) +/* 07AFA4 7F046434 460A3380 */ add.s $f14, $f6, $f10 +/* 07AFA8 7F046438 460E203C */ c.lt.s $f4, $f14 +/* 07AFAC 7F04643C 00000000 */ nop +/* 07AFB0 7F046440 45020005 */ bc1fl .Ljp7F046458 +/* 07AFB4 7F046444 8E0900A8 */ lw $t1, 0xa8($s0) +/* 07AFB8 7F046448 E6160010 */ swc1 $f22, 0x10($s0) +/* 07AFBC 7F04644C E6160014 */ swc1 $f22, 0x14($s0) +/* 07AFC0 7F046450 E6160018 */ swc1 $f22, 0x18($s0) +/* 07AFC4 7F046454 8E0900A8 */ lw $t1, 0xa8($s0) +.Ljp7F046458: +/* 07AFC8 7F046458 2921012D */ slti $at, $t1, 0x12d +/* 07AFCC 7F04645C 54200008 */ bnezl $at, .Ljp7F046480 +/* 07AFD0 7F046460 926E0001 */ lbu $t6, 1($s3) +/* 07AFD4 7F046464 8E0B0000 */ lw $t3, ($s0) +/* 07AFD8 7F046468 2401FFCF */ li $at, -49 +/* 07AFDC 7F04646C E616001C */ swc1 $f22, 0x1c($s0) +/* 07AFE0 7F046470 01616024 */ and $t4, $t3, $at +/* 07AFE4 7F046474 1000001B */ b .Ljp7F0464E4 +/* 07AFE8 7F046478 AE0C0000 */ sw $t4, ($s0) +/* 07AFEC 7F04647C 926E0001 */ lbu $t6, 1($s3) +.Ljp7F046480: +/* 07AFF0 7F046480 8E650014 */ lw $a1, 0x14($s3) +/* 07AFF4 7F046484 2667002C */ addiu $a3, $s3, 0x2c +/* 07AFF8 7F046488 31CA0008 */ andi $t2, $t6, 8 +/* 07AFFC 7F04648C 000A682B */ sltu $t5, $zero, $t2 +/* 07B000 7F046490 0FC27CA9 */ jal sub_GAME_7F09E700 +/* 07B004 7F046494 AFAD0010 */ sw $t5, 0x10($sp) +/* 07B008 7F046498 10000013 */ b .Ljp7F0464E8 +/* 07B00C 7F04649C 8FAB066C */ lw $t3, 0x66c($sp) +.Ljp7F0464A0: +/* 07B010 7F0464A0 24010057 */ li $at, 87 +/* 07B014 7F0464A4 1441000F */ bne $v0, $at, .Ljp7F0464E4 +/* 07B018 7F0464A8 8FAF0618 */ lw $t7, 0x618($sp) +/* 07B01C 7F0464AC 15E00003 */ bnez $t7, .Ljp7F0464BC +/* 07B020 7F0464B0 8FB90614 */ lw $t9, 0x614($sp) +/* 07B024 7F0464B4 13200003 */ beqz $t9, .Ljp7F0464C4 +/* 07B028 7F0464B8 26240058 */ addiu $a0, $s1, 0x58 +.Ljp7F0464BC: +/* 07B02C 7F0464BC 10000009 */ b .Ljp7F0464E4 +/* 07B030 7F0464C0 A6200082 */ sh $zero, 0x82($s1) +.Ljp7F0464C4: +/* 07B034 7F0464C4 92780001 */ lbu $t8, 1($s3) +/* 07B038 7F0464C8 8E650014 */ lw $a1, 0x14($s3) +/* 07B03C 7F0464CC 24060009 */ li $a2, 9 +/* 07B040 7F0464D0 33080008 */ andi $t0, $t8, 8 +/* 07B044 7F0464D4 0008482B */ sltu $t1, $zero, $t0 +/* 07B048 7F0464D8 AFA90010 */ sw $t1, 0x10($sp) +/* 07B04C 7F0464DC 0FC27CA9 */ jal sub_GAME_7F09E700 +/* 07B050 7F0464E0 2667002C */ addiu $a3, $s3, 0x2c +.Ljp7F0464E4: +/* 07B054 7F0464E4 8FAB066C */ lw $t3, 0x66c($sp) +.Ljp7F0464E8: +/* 07B058 7F0464E8 3C128005 */ lui $s2, %hi(D_80048380) # $s2, 0x8005 +/* 07B05C 7F0464EC 265283B0 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c50 +/* 07B060 7F0464F0 11600003 */ beqz $t3, .Ljp7F046500 +/* 07B064 7F0464F4 8FAC0618 */ lw $t4, 0x618($sp) +/* 07B068 7F0464F8 51800020 */ beql $t4, $zero, .Ljp7F04657C +/* 07B06C 7F0464FC 8E2F0064 */ lw $t7, 0x64($s1) +.Ljp7F046500: +/* 07B070 7F046500 8E420000 */ lw $v0, ($s2) +/* 07B074 7F046504 8E0E00AC */ lw $t6, 0xac($s0) +/* 07B078 7F046508 244AFFFE */ addiu $t2, $v0, -2 +/* 07B07C 7F04650C 01CA082A */ slt $at, $t6, $t2 +/* 07B080 7F046510 50200019 */ beql $at, $zero, .Ljp7F046578 +/* 07B084 7F046514 AE0200AC */ sw $v0, 0xac($s0) +/* 07B088 7F046518 82220080 */ lb $v0, 0x80($s1) +/* 07B08C 7F04651C 266D0008 */ addiu $t5, $s3, 8 +/* 07B090 7F046520 24010003 */ li $at, 3 +/* 07B094 7F046524 10410004 */ beq $v0, $at, .Ljp7F046538 +/* 07B098 7F046528 AFAD0074 */ sw $t5, 0x74($sp) +/* 07B09C 7F04652C 24010002 */ li $at, 2 +/* 07B0A0 7F046530 14410008 */ bne $v0, $at, .Ljp7F046554 +/* 07B0A4 7F046534 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +.Ljp7F046538: +/* 07B0A8 7F046538 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07B0AC 7F04653C 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07B0B0 7F046540 24050003 */ li $a1, 3 +/* 07B0B4 7F046544 0C002386 */ jal play_sfx_a1 +/* 07B0B8 7F046548 00003025 */ move $a2, $zero +/* 07B0BC 7F04654C 10000006 */ b .Ljp7F046568 +/* 07B0C0 7F046550 00402025 */ move $a0, $v0 +.Ljp7F046554: +/* 07B0C4 7F046554 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07B0C8 7F046558 2405002D */ li $a1, 45 +/* 07B0CC 7F04655C 0C002386 */ jal play_sfx_a1 +/* 07B0D0 7F046560 00003025 */ move $a2, $zero +/* 07B0D4 7F046564 00402025 */ move $a0, $v0 +.Ljp7F046568: +/* 07B0D8 7F046568 0FC14FC3 */ jal sub_GAME_7F053A10 +/* 07B0DC 7F04656C 8FA50074 */ lw $a1, 0x74($sp) +/* 07B0E0 7F046570 8E420000 */ lw $v0, ($s2) +/* 07B0E4 7F046574 AE0200AC */ sw $v0, 0xac($s0) +.Ljp7F046578: +/* 07B0E8 7F046578 8E2F0064 */ lw $t7, 0x64($s1) +.Ljp7F04657C: +/* 07B0EC 7F04657C 3C128005 */ lui $s2, %hi(D_80048380) # $s2, 0x8005 +/* 07B0F0 7F046580 265283B0 */ addiu $s2, %lo(D_80048380) # addiu $s2, $s2, -0x7c50 +/* 07B0F4 7F046584 31F90080 */ andi $t9, $t7, 0x80 +/* 07B0F8 7F046588 53200125 */ beql $t9, $zero, .Ljp7F046A20 +/* 07B0FC 7F04658C 8FAB0698 */ lw $t3, 0x698($sp) +/* 07B100 7F046590 8E180000 */ lw $t8, ($s0) +/* 07B104 7F046594 33080400 */ andi $t0, $t8, 0x400 +/* 07B108 7F046598 51000121 */ beql $t0, $zero, .Ljp7F046A20 +/* 07B10C 7F04659C 8FAB0698 */ lw $t3, 0x698($sp) +/* 07B110 7F0465A0 8E420000 */ lw $v0, ($s2) +/* 07B114 7F0465A4 3C0143C8 */ li $at, 0x43C80000 # 400.000000 +/* 07B118 7F0465A8 27B0056C */ addiu $s0, $sp, 0x56c +/* 07B11C 7F0465AC 30490007 */ andi $t1, $v0, 7 +/* 07B120 7F0465B0 1520011A */ bnez $t1, .Ljp7F046A1C +/* 07B124 7F0465B4 00002025 */ move $a0, $zero +/* 07B128 7F0465B8 44810000 */ mtc1 $at, $f0 +/* 07B12C 7F0465BC C6280058 */ lwc1 $f8, 0x58($s1) +/* 07B130 7F0465C0 3C0144E1 */ li $at, 0x44E10000 # 1800.000000 +/* 07B134 7F0465C4 44812000 */ mtc1 $at, $f4 +/* 07B138 7F0465C8 46004180 */ add.s $f6, $f8, $f0 +/* 07B13C 7F0465CC 304B000F */ andi $t3, $v0, 0xf +/* 07B140 7F0465D0 E7A6056C */ swc1 $f6, 0x56c($sp) +/* 07B144 7F0465D4 C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07B148 7F0465D8 46045201 */ sub.s $f8, $f10, $f4 +/* 07B14C 7F0465DC E7A80570 */ swc1 $f8, 0x570($sp) +/* 07B150 7F0465E0 C6260060 */ lwc1 $f6, 0x60($s1) +/* 07B154 7F0465E4 15600005 */ bnez $t3, .Ljp7F0465FC +/* 07B158 7F0465E8 E7A60574 */ swc1 $f6, 0x574($sp) +/* 07B15C 7F0465EC C7AA0574 */ lwc1 $f10, 0x574($sp) +/* 07B160 7F0465F0 46005100 */ add.s $f4, $f10, $f0 +/* 07B164 7F0465F4 10000004 */ b .Ljp7F046608 +/* 07B168 7F0465F8 E7A40574 */ swc1 $f4, 0x574($sp) +.Ljp7F0465FC: +/* 07B16C 7F0465FC C7A80574 */ lwc1 $f8, 0x574($sp) +/* 07B170 7F046600 46004181 */ sub.s $f6, $f8, $f0 +/* 07B174 7F046604 E7A60574 */ swc1 $f6, 0x574($sp) +.Ljp7F046608: +/* 07B178 7F046608 8E220010 */ lw $v0, 0x10($s1) +/* 07B17C 7F04660C 02002825 */ move $a1, $s0 +/* 07B180 7F046610 24070014 */ li $a3, 20 +/* 07B184 7F046614 8C460014 */ lw $a2, 0x14($v0) +/* 07B188 7F046618 244C002C */ addiu $t4, $v0, 0x2c +/* 07B18C 7F04661C AFAC0018 */ sw $t4, 0x18($sp) +/* 07B190 7F046620 AFA0001C */ sw $zero, 0x1c($sp) +/* 07B194 7F046624 AFA00014 */ sw $zero, 0x14($sp) +/* 07B198 7F046628 0FC2737C */ jal sub_GAME_7F09C250 +/* 07B19C 7F04662C AFA00010 */ sw $zero, 0x10($sp) +/* 07B1A0 7F046630 8E4E0000 */ lw $t6, ($s2) +/* 07B1A4 7F046634 24010028 */ li $at, 40 +/* 07B1A8 7F046638 02002025 */ move $a0, $s0 +/* 07B1AC 7F04663C 01C1001A */ div $zero, $t6, $at +/* 07B1B0 7F046640 00005010 */ mfhi $t2 +/* 07B1B4 7F046644 554000F6 */ bnezl $t2, .Ljp7F046A20 +/* 07B1B8 7F046648 8FAB0698 */ lw $t3, 0x698($sp) +/* 07B1BC 7F04664C 8E220010 */ lw $v0, 0x10($s1) +/* 07B1C0 7F046650 240D0001 */ li $t5, 1 +/* 07B1C4 7F046654 2406000A */ li $a2, 10 +/* 07B1C8 7F046658 8C450014 */ lw $a1, 0x14($v0) +/* 07B1CC 7F04665C AFAD0010 */ sw $t5, 0x10($sp) +/* 07B1D0 7F046660 0FC27CA9 */ jal sub_GAME_7F09E700 +/* 07B1D4 7F046664 2447002C */ addiu $a3, $v0, 0x2c +/* 07B1D8 7F046668 100000ED */ b .Ljp7F046A20 +/* 07B1DC 7F04666C 8FAB0698 */ lw $t3, 0x698($sp) +/* 07B1E0 7F046670 C6000060 */ lwc1 $f0, 0x60($s0) +.Ljp7F046674: +/* 07B1E4 7F046674 44815000 */ mtc1 $at, $f10 +/* 07B1E8 7F046678 24120001 */ li $s2, 1 +/* 07B1EC 7F04667C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07B1F0 7F046680 460A003C */ c.lt.s $f0, $f10 +/* 07B1F4 7F046684 26040068 */ addiu $a0, $s0, 0x68 +/* 07B1F8 7F046688 26050078 */ addiu $a1, $s0, 0x78 +/* 07B1FC 7F04668C 45020031 */ bc1fl .Ljp7F046754 +/* 07B200 7F046690 C60A0004 */ lwc1 $f10, 4($s0) +/* 07B204 7F046694 C6020064 */ lwc1 $f2, 0x64($s0) +/* 07B208 7F046698 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07B20C 7F04669C 3C0F8005 */ lui $t7, %hi(clock_timer) # $t7, 0x8005 +/* 07B210 7F0466A0 3C018005 */ lui $at, %hi(D_80052AB0) +/* 07B214 7F0466A4 46041202 */ mul.s $f8, $f2, $f4 +/* 07B218 7F0466A8 27B20558 */ addiu $s2, $sp, 0x558 +/* 07B21C 7F0466AC 46080180 */ add.s $f6, $f0, $f8 +/* 07B220 7F0466B0 E6060060 */ swc1 $f6, 0x60($s0) +/* 07B224 7F0466B4 8DEF83A4 */ lw $t7, %lo(clock_timer)($t7) +/* 07B228 7F0466B8 59E00005 */ blezl $t7, .Ljp7F0466D0 +/* 07B22C 7F0466BC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B230 7F0466C0 C42A2AE0 */ lwc1 $f10, %lo(D_80052AB0)($at) +/* 07B234 7F0466C4 460A1102 */ mul.s $f4, $f2, $f10 +/* 07B238 7F0466C8 E6040064 */ swc1 $f4, 0x64($s0) +/* 07B23C 7F0466CC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +.Ljp7F0466D0: +/* 07B240 7F0466D0 44814000 */ mtc1 $at, $f8 +/* 07B244 7F0466D4 C6000060 */ lwc1 $f0, 0x60($s0) +/* 07B248 7F0466D8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B24C 7F0466DC 4600403C */ c.lt.s $f8, $f0 +/* 07B250 7F0466E0 00000000 */ nop +/* 07B254 7F0466E4 45030006 */ bc1tl .Ljp7F046700 +/* 07B258 7F0466E8 44813000 */ mtc1 $at, $f6 +/* 07B25C 7F0466EC 8E190000 */ lw $t9, ($s0) +/* 07B260 7F0466F0 33380008 */ andi $t8, $t9, 8 +/* 07B264 7F0466F4 53000006 */ beql $t8, $zero, .Ljp7F046710 +/* 07B268 7F0466F8 44060000 */ mfc1 $a2, $f0 +/* 07B26C 7F0466FC 44813000 */ mtc1 $at, $f6 +.Ljp7F046700: +/* 07B270 7F046700 00000000 */ nop +/* 07B274 7F046704 E6060060 */ swc1 $f6, 0x60($s0) +/* 07B278 7F046708 C6000060 */ lwc1 $f0, 0x60($s0) +/* 07B27C 7F04670C 44060000 */ mfc1 $a2, $f0 +.Ljp7F046710: +/* 07B280 7F046710 0FC16FCA */ jal sub_GAME_7F05BA08 +/* 07B284 7F046714 02403825 */ move $a3, $s2 +/* 07B288 7F046718 26250018 */ addiu $a1, $s1, 0x18 +/* 07B28C 7F04671C AFA50074 */ sw $a1, 0x74($sp) +/* 07B290 7F046720 0FC16ED2 */ jal sub_GAME_7F05B628 +/* 07B294 7F046724 02402025 */ move $a0, $s2 +/* 07B298 7F046728 C60C00C0 */ lwc1 $f12, 0xc0($s0) +/* 07B29C 7F04672C 0FC163B5 */ jal sub_GAME_7F0589B4 +/* 07B2A0 7F046730 8FA50074 */ lw $a1, 0x74($sp) +/* 07B2A4 7F046734 C60C00C4 */ lwc1 $f12, 0xc4($s0) +/* 07B2A8 7F046738 0FC163C1 */ jal sub_GAME_7F0589E4 +/* 07B2AC 7F04673C 8FA50074 */ lw $a1, 0x74($sp) +/* 07B2B0 7F046740 C60C00C8 */ lwc1 $f12, 0xc8($s0) +/* 07B2B4 7F046744 0FC163DB */ jal sub_GAME_7F058A4C +/* 07B2B8 7F046748 8FA50074 */ lw $a1, 0x74($sp) +/* 07B2BC 7F04674C 00009025 */ move $s2, $zero +/* 07B2C0 7F046750 C60A0004 */ lwc1 $f10, 4($s0) +.Ljp7F046754: +/* 07B2C4 7F046754 460AB032 */ c.eq.s $f22, $f10 +/* 07B2C8 7F046758 00000000 */ nop +/* 07B2CC 7F04675C 4502000F */ bc1fl .Ljp7F04679C +/* 07B2D0 7F046760 8E080000 */ lw $t0, ($s0) +/* 07B2D4 7F046764 C604000C */ lwc1 $f4, 0xc($s0) +/* 07B2D8 7F046768 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B2DC 7F04676C 4604B032 */ c.eq.s $f22, $f4 +/* 07B2E0 7F046770 00000000 */ nop +/* 07B2E4 7F046774 45020009 */ bc1fl .Ljp7F04679C +/* 07B2E8 7F046778 8E080000 */ lw $t0, ($s0) +/* 07B2EC 7F04677C C6080060 */ lwc1 $f8, 0x60($s0) +/* 07B2F0 7F046780 44813000 */ mtc1 $at, $f6 +/* 07B2F4 7F046784 00000000 */ nop +/* 07B2F8 7F046788 4606403C */ c.lt.s $f8, $f6 +/* 07B2FC 7F04678C 00000000 */ nop +/* 07B300 7F046790 45000088 */ bc1f .Ljp7F0469B4 +/* 07B304 7F046794 00000000 */ nop +/* 07B308 7F046798 8E080000 */ lw $t0, ($s0) +.Ljp7F04679C: +/* 07B30C 7F04679C 02202025 */ move $a0, $s1 +/* 07B310 7F0467A0 262B0018 */ addiu $t3, $s1, 0x18 +/* 07B314 7F0467A4 31090008 */ andi $t1, $t0, 8 +/* 07B318 7F0467A8 15200082 */ bnez $t1, .Ljp7F0469B4 +/* 07B31C 7F0467AC 00000000 */ nop +/* 07B320 7F0467B0 AFAB0074 */ sw $t3, 0x74($sp) +/* 07B324 7F0467B4 0FC100DE */ jal sub_GAME_7F040078 +/* 07B328 7F0467B8 00009025 */ move $s2, $zero +/* 07B32C 7F0467BC 3C038005 */ lui $v1, %hi(clock_timer) # $v1, 0x8005 +/* 07B330 7F0467C0 8C6383A4 */ lw $v1, %lo(clock_timer)($v1) +/* 07B334 7F0467C4 AFA20554 */ sw $v0, 0x554($sp) +/* 07B338 7F0467C8 00002025 */ move $a0, $zero +/* 07B33C 7F0467CC 18600048 */ blez $v1, .Ljp7F0468F0 +/* 07B340 7F0467D0 3C018005 */ lui $at, %hi(D_80052AB4) # $at, 0x8005 +/* 07B344 7F0467D4 C42E2AE4 */ lwc1 $f14, %lo(D_80052AB4)($at) +/* 07B348 7F0467D8 C7AA069C */ lwc1 $f10, 0x69c($sp) +.Ljp7F0467DC: +/* 07B34C 7F0467DC C6040004 */ lwc1 $f4, 4($s0) +/* 07B350 7F0467E0 C7A606A4 */ lwc1 $f6, 0x6a4($sp) +/* 07B354 7F0467E4 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B358 7F0467E8 46045200 */ add.s $f8, $f10, $f4 +/* 07B35C 7F0467EC E7A8069C */ swc1 $f8, 0x69c($sp) +/* 07B360 7F0467F0 C60A000C */ lwc1 $f10, 0xc($s0) +/* 07B364 7F0467F4 460A3100 */ add.s $f4, $f6, $f10 +/* 07B368 7F0467F8 44813000 */ mtc1 $at, $f6 +/* 07B36C 7F0467FC E7A406A4 */ swc1 $f4, 0x6a4($sp) +/* 07B370 7F046800 C6080060 */ lwc1 $f8, 0x60($s0) +/* 07B374 7F046804 4608303E */ c.le.s $f6, $f8 +/* 07B378 7F046808 00000000 */ nop +/* 07B37C 7F04680C 45020035 */ bc1fl .Ljp7F0468E4 +/* 07B380 7F046810 24840001 */ addiu $a0, $a0, 1 +/* 07B384 7F046814 C60A0094 */ lwc1 $f10, 0x94($s0) +/* 07B388 7F046818 460AB03C */ c.lt.s $f22, $f10 +/* 07B38C 7F04681C 00000000 */ nop +/* 07B390 7F046820 45020027 */ bc1fl .Ljp7F0468C0 +/* 07B394 7F046824 C6060004 */ lwc1 $f6, 4($s0) +/* 07B398 7F046828 C600000C */ lwc1 $f0, 0xc($s0) +/* 07B39C 7F04682C C6020004 */ lwc1 $f2, 4($s0) +/* 07B3A0 7F046830 AFA40550 */ sw $a0, 0x550($sp) +/* 07B3A4 7F046834 46000102 */ mul.s $f4, $f0, $f0 +/* 07B3A8 7F046838 00000000 */ nop +/* 07B3AC 7F04683C 46021202 */ mul.s $f8, $f2, $f2 +/* 07B3B0 7F046840 0C007E08 */ jal sqrtf +/* 07B3B4 7F046844 46082300 */ add.s $f12, $f4, $f8 +/* 07B3B8 7F046848 3C018005 */ lui $at, %hi(D_80052AB8) # $at, 0x8005 +/* 07B3BC 7F04684C C42E2AE8 */ lwc1 $f14, %lo(D_80052AB8)($at) +/* 07B3C0 7F046850 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07B3C4 7F046854 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07B3C8 7F046858 C6060094 */ lwc1 $f6, 0x94($s0) +/* 07B3CC 7F04685C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B3D0 7F046860 44814000 */ mtc1 $at, $f8 +/* 07B3D4 7F046864 460A3102 */ mul.s $f4, $f6, $f10 +/* 07B3D8 7F046868 8FA40550 */ lw $a0, 0x550($sp) +/* 07B3DC 7F04686C 3C038005 */ lui $v1, %hi(clock_timer) # $v1, 0x8005 +/* 07B3E0 7F046870 46002303 */ div.s $f12, $f4, $f0 +/* 07B3E4 7F046874 460C403E */ c.le.s $f8, $f12 +/* 07B3E8 7F046878 00000000 */ nop +/* 07B3EC 7F04687C 45020005 */ bc1fl .Ljp7F046894 +/* 07B3F0 7F046880 C6020004 */ lwc1 $f2, 4($s0) +/* 07B3F4 7F046884 E6160004 */ swc1 $f22, 4($s0) +/* 07B3F8 7F046888 1000000A */ b .Ljp7F0468B4 +/* 07B3FC 7F04688C E616000C */ swc1 $f22, 0xc($s0) +/* 07B400 7F046890 C6020004 */ lwc1 $f2, 4($s0) +.Ljp7F046894: +/* 07B404 7F046894 C600000C */ lwc1 $f0, 0xc($s0) +/* 07B408 7F046898 460C1182 */ mul.s $f6, $f2, $f12 +/* 07B40C 7F04689C 00000000 */ nop +/* 07B410 7F0468A0 460C0102 */ mul.s $f4, $f0, $f12 +/* 07B414 7F0468A4 46061281 */ sub.s $f10, $f2, $f6 +/* 07B418 7F0468A8 46040201 */ sub.s $f8, $f0, $f4 +/* 07B41C 7F0468AC E60A0004 */ swc1 $f10, 4($s0) +/* 07B420 7F0468B0 E608000C */ swc1 $f8, 0xc($s0) +.Ljp7F0468B4: +/* 07B424 7F0468B4 1000000A */ b .Ljp7F0468E0 +/* 07B428 7F0468B8 8C6383A4 */ lw $v1, %lo(clock_timer)($v1) +/* 07B42C 7F0468BC C6060004 */ lwc1 $f6, 4($s0) +.Ljp7F0468C0: +/* 07B430 7F0468C0 C604000C */ lwc1 $f4, 0xc($s0) +/* 07B434 7F0468C4 3C038005 */ lui $v1, %hi(clock_timer) # $v1, 0x8005 +/* 07B438 7F0468C8 460E3282 */ mul.s $f10, $f6, $f14 +/* 07B43C 7F0468CC 00000000 */ nop +/* 07B440 7F0468D0 460E2202 */ mul.s $f8, $f4, $f14 +/* 07B444 7F0468D4 E60A0004 */ swc1 $f10, 4($s0) +/* 07B448 7F0468D8 E608000C */ swc1 $f8, 0xc($s0) +/* 07B44C 7F0468DC 8C6383A4 */ lw $v1, %lo(clock_timer)($v1) +.Ljp7F0468E0: +/* 07B450 7F0468E0 24840001 */ addiu $a0, $a0, 1 +.Ljp7F0468E4: +/* 07B454 7F0468E4 0083082A */ slt $at, $a0, $v1 +/* 07B458 7F0468E8 5420FFBC */ bnezl $at, .Ljp7F0467DC +/* 07B45C 7F0468EC C7AA069C */ lwc1 $f10, 0x69c($sp) +.Ljp7F0468F0: +/* 07B460 7F0468F0 02202025 */ move $a0, $s1 +/* 07B464 7F0468F4 27A5069C */ addiu $a1, $sp, 0x69c +/* 07B468 7F0468F8 27A60538 */ addiu $a2, $sp, 0x538 +/* 07B46C 7F0468FC 27A70544 */ addiu $a3, $sp, 0x544 +/* 07B470 7F046900 AFA00010 */ sw $zero, 0x10($sp) +/* 07B474 7F046904 0FC10C6D */ jal sub_GAME_7F042EB4 +/* 07B478 7F046908 AFA00014 */ sw $zero, 0x14($sp) +/* 07B47C 7F04690C 240C0001 */ li $t4, 1 +/* 07B480 7F046910 AFAC0698 */ sw $t4, 0x698($sp) +/* 07B484 7F046914 8E660010 */ lw $a2, 0x10($s3) +/* 07B488 7F046918 8E650008 */ lw $a1, 8($s3) +/* 07B48C 7F04691C 0FC2CD48 */ jal sub_GAME_7F0B2970 +/* 07B490 7F046920 8E640014 */ lw $a0, 0x14($s3) +/* 07B494 7F046924 46000506 */ mov.s $f20, $f0 +/* 07B498 7F046928 8FA40554 */ lw $a0, 0x554($sp) +/* 07B49C 7F04692C 0FC0FB2F */ jal sub_GAME_7F03E9BC +/* 07B4A0 7F046930 8FA50074 */ lw $a1, 0x74($sp) +/* 07B4A4 7F046934 3C018005 */ lui $at, %hi(D_80052ABC) # $at, 0x8005 +/* 07B4A8 7F046938 C42E2AEC */ lwc1 $f14, %lo(D_80052ABC)($at) +/* 07B4AC 7F04693C 4600A181 */ sub.s $f6, $f20, $f0 +/* 07B4B0 7F046940 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07B4B4 7F046944 44815000 */ mtc1 $at, $f10 +/* 07B4B8 7F046948 3C018005 */ lui $at, %hi(D_80052AC0) # $at, 0x8005 +/* 07B4BC 7F04694C 460A3300 */ add.s $f12, $f6, $f10 +/* 07B4C0 7F046950 E66C000C */ swc1 $f12, 0xc($s3) +/* 07B4C4 7F046954 E62C005C */ swc1 $f12, 0x5c($s1) +/* 07B4C8 7F046958 C6020004 */ lwc1 $f2, 4($s0) +/* 07B4CC 7F04695C 460E103C */ c.lt.s $f2, $f14 +/* 07B4D0 7F046960 00000000 */ nop +/* 07B4D4 7F046964 45000013 */ bc1f .Ljp7F0469B4 +/* 07B4D8 7F046968 00000000 */ nop +/* 07B4DC 7F04696C C4242AF0 */ lwc1 $f4, %lo(D_80052AC0)($at) +/* 07B4E0 7F046970 4602203C */ c.lt.s $f4, $f2 +/* 07B4E4 7F046974 00000000 */ nop +/* 07B4E8 7F046978 4500000E */ bc1f .Ljp7F0469B4 +/* 07B4EC 7F04697C 00000000 */ nop +/* 07B4F0 7F046980 C600000C */ lwc1 $f0, 0xc($s0) +/* 07B4F4 7F046984 3C018005 */ lui $at, %hi(D_80052AC4) # $at, 0x8005 +/* 07B4F8 7F046988 460E003C */ c.lt.s $f0, $f14 +/* 07B4FC 7F04698C 00000000 */ nop +/* 07B500 7F046990 45000008 */ bc1f .Ljp7F0469B4 +/* 07B504 7F046994 00000000 */ nop +/* 07B508 7F046998 C4282AF4 */ lwc1 $f8, %lo(D_80052AC4)($at) +/* 07B50C 7F04699C 4600403C */ c.lt.s $f8, $f0 +/* 07B510 7F0469A0 00000000 */ nop +/* 07B514 7F0469A4 45000003 */ bc1f .Ljp7F0469B4 +/* 07B518 7F0469A8 00000000 */ nop +/* 07B51C 7F0469AC E616000C */ swc1 $f22, 0xc($s0) +/* 07B520 7F0469B0 E6160004 */ swc1 $f22, 4($s0) +.Ljp7F0469B4: +/* 07B524 7F0469B4 16400005 */ bnez $s2, .Ljp7F0469CC +/* 07B528 7F0469B8 00000000 */ nop +/* 07B52C 7F0469BC 8E0E0000 */ lw $t6, ($s0) +/* 07B530 7F0469C0 31CA0008 */ andi $t2, $t6, 8 +/* 07B534 7F0469C4 51400016 */ beql $t2, $zero, .Ljp7F046A20 +/* 07B538 7F0469C8 8FAB0698 */ lw $t3, 0x698($sp) +.Ljp7F0469CC: +/* 07B53C 7F0469CC 0FC0FF9C */ jal sub_GAME_7F03FB70 +/* 07B540 7F0469D0 02002025 */ move $a0, $s0 +/* 07B544 7F0469D4 8E2D0064 */ lw $t5, 0x64($s1) +/* 07B548 7F0469D8 2401FF7F */ li $at, -129 +/* 07B54C 7F0469DC AE20006C */ sw $zero, 0x6c($s1) +/* 07B550 7F0469E0 01A17824 */ and $t7, $t5, $at +/* 07B554 7F0469E4 AE2F0064 */ sw $t7, 0x64($s1) +/* 07B558 7F0469E8 92620001 */ lbu $v0, 1($s3) +/* 07B55C 7F0469EC 30590008 */ andi $t9, $v0, 8 +/* 07B560 7F0469F0 13200002 */ beqz $t9, .Ljp7F0469FC +/* 07B564 7F0469F4 34580010 */ ori $t8, $v0, 0x10 +/* 07B568 7F0469F8 A2780001 */ sb $t8, 1($s3) +.Ljp7F0469FC: +/* 07B56C 7F0469FC 92280003 */ lbu $t0, 3($s1) +/* 07B570 7F046A00 24010008 */ li $at, 8 +/* 07B574 7F046A04 55010006 */ bnel $t0, $at, .Ljp7F046A20 +/* 07B578 7F046A08 8FAB0698 */ lw $t3, 0x698($sp) +/* 07B57C 7F046A0C 8E690014 */ lw $t1, 0x14($s3) +/* 07B580 7F046A10 82240080 */ lb $a0, 0x80($s1) +/* 07B584 7F046A14 0FC15F41 */ jal sub_GAME_7F0577E8 +/* 07B588 7F046A18 91250003 */ lbu $a1, 3($t1) +.Ljp7F046A1C: +/* 07B58C 7F046A1C 8FAB0698 */ lw $t3, 0x698($sp) +.Ljp7F046A20: +/* 07B590 7F046A20 1160000B */ beqz $t3, .Ljp7F046A50 +/* 07B594 7F046A24 262C0058 */ addiu $t4, $s1, 0x58 +/* 07B598 7F046A28 AFAC0074 */ sw $t4, 0x74($sp) +/* 07B59C 7F046A2C 0FC101E1 */ jal sub_GAME_7F040484 +/* 07B5A0 7F046A30 02202025 */ move $a0, $s1 +/* 07B5A4 7F046A34 0FC15C68 */ jal sub_GAME_7F056CA0 +/* 07B5A8 7F046A38 02202025 */ move $a0, $s1 +/* 07B5AC 7F046A3C 8E240010 */ lw $a0, 0x10($s1) +/* 07B5B0 7F046A40 0FC1016D */ jal sub_GAME_7F0402B4 +/* 07B5B4 7F046A44 2625007C */ addiu $a1, $s1, 0x7c +/* 07B5B8 7F046A48 0FC14832 */ jal detonate_proxmine_In_range +/* 07B5BC 7F046A4C 8FA40074 */ lw $a0, 0x74($sp) +.Ljp7F046A50: +/* 07B5C0 7F046A50 92220003 */ lbu $v0, 3($s1) +/* 07B5C4 7F046A54 24010001 */ li $at, 1 +/* 07B5C8 7F046A58 54410052 */ bnel $v0, $at, .Ljp7F046BA4 +/* 07B5CC 7F046A5C 24010006 */ li $at, 6 +/* 07B5D0 7F046A60 8E700004 */ lw $s0, 4($s3) +/* 07B5D4 7F046A64 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07B5D8 7F046A68 E7A60684 */ swc1 $f6, 0x684($sp) +/* 07B5DC 7F046A6C 8E0200EC */ lw $v0, 0xec($s0) +/* 07B5E0 7F046A70 58400013 */ blezl $v0, .Ljp7F046AC0 +/* 07B5E4 7F046A74 820800BC */ lb $t0, 0xbc($s0) +/* 07B5E8 7F046A78 820E00BC */ lb $t6, 0xbc($s0) +/* 07B5EC 7F046A7C 55C00010 */ bnezl $t6, .Ljp7F046AC0 +/* 07B5F0 7F046A80 820800BC */ lb $t0, 0xbc($s0) +/* 07B5F4 7F046A84 8E0A0008 */ lw $t2, 8($s0) +/* 07B5F8 7F046A88 3C0F8005 */ lui $t7, %hi(global_timer) # $t7, 0x8005 +/* 07B5FC 7F046A8C 000A6800 */ sll $t5, $t2, 0 +/* 07B600 7F046A90 05A2000B */ bltzl $t5, .Ljp7F046AC0 +/* 07B604 7F046A94 820800BC */ lb $t0, 0xbc($s0) +/* 07B608 7F046A98 8DEF83AC */ lw $t7, %lo(global_timer)($t7) +/* 07B60C 7F046A9C 8E1900A0 */ lw $t9, 0xa0($s0) +/* 07B610 7F046AA0 02002025 */ move $a0, $s0 +/* 07B614 7F046AA4 01F9C023 */ subu $t8, $t7, $t9 +/* 07B618 7F046AA8 0058082A */ slt $at, $v0, $t8 +/* 07B61C 7F046AAC 50200004 */ beql $at, $zero, .Ljp7F046AC0 +/* 07B620 7F046AB0 820800BC */ lb $t0, 0xbc($s0) +/* 07B624 7F046AB4 0FC153A1 */ jal set_door_state +/* 07B628 7F046AB8 24050002 */ li $a1, 2 +/* 07B62C 7F046ABC 820800BC */ lb $t0, 0xbc($s0) +.Ljp7F046AC0: +/* 07B630 7F046AC0 24010003 */ li $at, 3 +/* 07B634 7F046AC4 5501001B */ bnel $t0, $at, .Ljp7F046B34 +/* 07B638 7F046AC8 960B009A */ lhu $t3, 0x9a($s0) +/* 07B63C 7F046ACC 8E0200C8 */ lw $v0, 0xc8($s0) +/* 07B640 7F046AD0 24030001 */ li $v1, 1 +/* 07B644 7F046AD4 02002025 */ move $a0, $s0 +/* 07B648 7F046AD8 10400011 */ beqz $v0, .Ljp7F046B20 +/* 07B64C 7F046ADC 00000000 */ nop +/* 07B650 7F046AE0 1050000F */ beq $v0, $s0, .Ljp7F046B20 +/* 07B654 7F046AE4 00000000 */ nop +/* 07B658 7F046AE8 804900BC */ lb $t1, 0xbc($v0) +.Ljp7F046AEC: +/* 07B65C 7F046AEC 55200007 */ bnezl $t1, .Ljp7F046B0C +/* 07B660 7F046AF0 00001825 */ move $v1, $zero +/* 07B664 7F046AF4 C44A00B4 */ lwc1 $f10, 0xb4($v0) +/* 07B668 7F046AF8 460AB03C */ c.lt.s $f22, $f10 +/* 07B66C 7F046AFC 00000000 */ nop +/* 07B670 7F046B00 45020003 */ bc1fl .Ljp7F046B10 +/* 07B674 7F046B04 8C4200C8 */ lw $v0, 0xc8($v0) +/* 07B678 7F046B08 00001825 */ move $v1, $zero +.Ljp7F046B0C: +/* 07B67C 7F046B0C 8C4200C8 */ lw $v0, 0xc8($v0) +.Ljp7F046B10: +/* 07B680 7F046B10 10400003 */ beqz $v0, .Ljp7F046B20 +/* 07B684 7F046B14 00000000 */ nop +/* 07B688 7F046B18 5450FFF4 */ bnel $v0, $s0, .Ljp7F046AEC +/* 07B68C 7F046B1C 804900BC */ lb $t1, 0xbc($v0) +.Ljp7F046B20: +/* 07B690 7F046B20 50600004 */ beql $v1, $zero, .Ljp7F046B34 +/* 07B694 7F046B24 960B009A */ lhu $t3, 0x9a($s0) +/* 07B698 7F046B28 0FC15368 */ jal sub_GAME_7F0548A4 +/* 07B69C 7F046B2C 24050001 */ li $a1, 1 +/* 07B6A0 7F046B30 960B009A */ lhu $t3, 0x9a($s0) +.Ljp7F046B34: +/* 07B6A4 7F046B34 24010008 */ li $at, 8 +/* 07B6A8 7F046B38 1561000B */ bne $t3, $at, .Ljp7F046B68 +/* 07B6AC 7F046B3C 00000000 */ nop +/* 07B6B0 7F046B40 0FC153C7 */ jal sub_GAME_7F054A20 +/* 07B6B4 7F046B44 02002025 */ move $a0, $s0 +/* 07B6B8 7F046B48 10400007 */ beqz $v0, .Ljp7F046B68 +/* 07B6BC 7F046B4C 00000000 */ nop +/* 07B6C0 7F046B50 0FC0FA86 */ jal sub_GAME_7F03E718 +/* 07B6C4 7F046B54 02002025 */ move $a0, $s0 +/* 07B6C8 7F046B58 10400003 */ beqz $v0, .Ljp7F046B68 +/* 07B6CC 7F046B5C 00000000 */ nop +/* 07B6D0 7F046B60 0FC157A6 */ jal sub_GAME_7F05599C +/* 07B6D4 7F046B64 02602025 */ move $a0, $s3 +.Ljp7F046B68: +/* 07B6D8 7F046B68 3C0E8005 */ lui $t6, %hi(global_timer) # $t6, 0x8005 +/* 07B6DC 7F046B6C 8DCE83AC */ lw $t6, %lo(global_timer)($t6) +/* 07B6E0 7F046B70 8E0C00FC */ lw $t4, 0xfc($s0) +/* 07B6E4 7F046B74 3C0A8005 */ lui $t2, %hi(clock_timer) # $t2, 0x8005 +/* 07B6E8 7F046B78 018E082A */ slt $at, $t4, $t6 +/* 07B6EC 7F046B7C 14200004 */ bnez $at, .Ljp7F046B90 +/* 07B6F0 7F046B80 00000000 */ nop +/* 07B6F4 7F046B84 8D4A83A4 */ lw $t2, %lo(clock_timer)($t2) +/* 07B6F8 7F046B88 554006AA */ bnezl $t2, .Ljp7F048634 +/* 07B6FC 7F046B8C 92220003 */ lbu $v0, 3($s1) +.Ljp7F046B90: +/* 07B700 7F046B90 0FC1552C */ jal sub_GAME_7F054FB4 +/* 07B704 7F046B94 02002025 */ move $a0, $s0 +/* 07B708 7F046B98 100006A6 */ b .Ljp7F048634 +/* 07B70C 7F046B9C 92220003 */ lbu $v0, 3($s1) +/* 07B710 7F046BA0 24010006 */ li $at, 6 +.Ljp7F046BA4: +/* 07B714 7F046BA4 54410130 */ bnel $v0, $at, .Ljp7F047068 +/* 07B718 7F046BA8 2401000D */ li $at, 13 +/* 07B71C 7F046BAC 8E2D0008 */ lw $t5, 8($s1) +/* 07B720 7F046BB0 000D78C0 */ sll $t7, $t5, 3 +/* 07B724 7F046BB4 05E2012C */ bltzl $t7, .Ljp7F047068 +/* 07B728 7F046BB8 2401000D */ li $at, 13 +/* 07B72C 7F046BBC 8E700004 */ lw $s0, 4($s3) +/* 07B730 7F046BC0 8E1900D4 */ lw $t9, 0xd4($s0) +/* 07B734 7F046BC4 53200004 */ beql $t9, $zero, .Ljp7F046BD8 +/* 07B738 7F046BC8 C61200D0 */ lwc1 $f18, 0xd0($s0) +/* 07B73C 7F046BCC 10000002 */ b .Ljp7F046BD8 +/* 07B740 7F046BD0 C61200CC */ lwc1 $f18, 0xcc($s0) +/* 07B744 7F046BD4 C61200D0 */ lwc1 $f18, 0xd0($s0) +.Ljp7F046BD8: +/* 07B748 7F046BD8 0FC2279B */ jal get_curplayer_positiondata +/* 07B74C 7F046BDC E7B2051C */ swc1 $f18, 0x51c($sp) +/* 07B750 7F046BE0 AFA20518 */ sw $v0, 0x518($sp) +/* 07B754 7F046BE4 C6280058 */ lwc1 $f8, 0x58($s1) +/* 07B758 7F046BE8 C4440008 */ lwc1 $f4, 8($v0) +/* 07B75C 7F046BEC C60000E8 */ lwc1 $f0, 0xe8($s0) +/* 07B760 7F046BF0 C62A005C */ lwc1 $f10, 0x5c($s1) +/* 07B764 7F046BF4 46082301 */ sub.s $f12, $f4, $f8 +/* 07B768 7F046BF8 C446000C */ lwc1 $f6, 0xc($v0) +/* 07B76C 7F046BFC C6280060 */ lwc1 $f8, 0x60($s1) +/* 07B770 7F046C00 4600B03C */ c.lt.s $f22, $f0 +/* 07B774 7F046C04 C4440010 */ lwc1 $f4, 0x10($v0) +/* 07B778 7F046C08 C7B2051C */ lwc1 $f18, 0x51c($sp) +/* 07B77C 7F046C0C 24120001 */ li $s2, 1 +/* 07B780 7F046C10 460A3081 */ sub.s $f2, $f6, $f10 +/* 07B784 7F046C14 4500000E */ bc1f .Ljp7F046C50 +/* 07B788 7F046C18 46082381 */ sub.s $f14, $f4, $f8 +/* 07B78C 7F046C1C 46000182 */ mul.s $f6, $f0, $f0 +/* 07B790 7F046C20 00000000 */ nop +/* 07B794 7F046C24 460C6282 */ mul.s $f10, $f12, $f12 +/* 07B798 7F046C28 00000000 */ nop +/* 07B79C 7F046C2C 46021102 */ mul.s $f4, $f2, $f2 +/* 07B7A0 7F046C30 46045200 */ add.s $f8, $f10, $f4 +/* 07B7A4 7F046C34 460E7282 */ mul.s $f10, $f14, $f14 +/* 07B7A8 7F046C38 460A4100 */ add.s $f4, $f8, $f10 +/* 07B7AC 7F046C3C 4604303C */ c.lt.s $f6, $f4 +/* 07B7B0 7F046C40 00000000 */ nop +/* 07B7B4 7F046C44 45000002 */ bc1f .Ljp7F046C50 +/* 07B7B8 7F046C48 00000000 */ nop +/* 07B7BC 7F046C4C 00009025 */ move $s2, $zero +.Ljp7F046C50: +/* 07B7C0 7F046C50 8E380008 */ lw $t8, 8($s1) +/* 07B7C4 7F046C54 00184080 */ sll $t0, $t8, 2 +/* 07B7C8 7F046C58 05010002 */ bgez $t0, .Ljp7F046C64 +/* 07B7CC 7F046C5C 00000000 */ nop +/* 07B7D0 7F046C60 00009025 */ move $s2, $zero +.Ljp7F046C64: +/* 07B7D4 7F046C64 1240003A */ beqz $s2, .Ljp7F046D50 +/* 07B7D8 7F046C68 00000000 */ nop +/* 07B7DC 7F046C6C 0FC16BD4 */ jal convert_angle_using_inverse +/* 07B7E0 7F046C70 E7B2051C */ swc1 $f18, 0x51c($sp) +/* 07B7E4 7F046C74 C60200C8 */ lwc1 $f2, 0xc8($s0) +/* 07B7E8 7F046C78 C7B2051C */ lwc1 $f18, 0x51c($sp) +/* 07B7EC 7F046C7C 3C018005 */ lui $at, %hi(D_80052ACC) +/* 07B7F0 7F046C80 4616103C */ c.lt.s $f2, $f22 +/* 07B7F4 7F046C84 00000000 */ nop +/* 07B7F8 7F046C88 45000005 */ bc1f .Ljp7F046CA0 +/* 07B7FC 7F046C8C 00000000 */ nop +/* 07B800 7F046C90 3C018005 */ lui $at, %hi(D_80052AC8) # $at, 0x8005 +/* 07B804 7F046C94 C4342AF8 */ lwc1 $f20, %lo(D_80052AC8)($at) +/* 07B808 7F046C98 10000007 */ b .Ljp7F046CB8 +/* 07B80C 7F046C9C 46141080 */ add.s $f2, $f2, $f20 +.Ljp7F046CA0: +/* 07B810 7F046CA0 C4342AFC */ lwc1 $f20, %lo(D_80052ACC)($at) +/* 07B814 7F046CA4 4602A03E */ c.le.s $f20, $f2 +/* 07B818 7F046CA8 00000000 */ nop +/* 07B81C 7F046CAC 45020003 */ bc1fl .Ljp7F046CBC +/* 07B820 7F046CB0 C60800C4 */ lwc1 $f8, 0xc4($s0) +/* 07B824 7F046CB4 46141081 */ sub.s $f2, $f2, $f20 +.Ljp7F046CB8: +/* 07B828 7F046CB8 C60800C4 */ lwc1 $f8, 0xc4($s0) +.Ljp7F046CBC: +/* 07B82C 7F046CBC 3C018005 */ lui $at, %hi(D_80052AD0) # $at, 0x8005 +/* 07B830 7F046CC0 46081080 */ add.s $f2, $f2, $f8 +/* 07B834 7F046CC4 4602A03E */ c.le.s $f20, $f2 +/* 07B838 7F046CC8 00000000 */ nop +/* 07B83C 7F046CCC 45020003 */ bc1fl .Ljp7F046CDC +/* 07B840 7F046CD0 4602003C */ c.lt.s $f0, $f2 +/* 07B844 7F046CD4 46141081 */ sub.s $f2, $f2, $f20 +/* 07B848 7F046CD8 4602003C */ c.lt.s $f0, $f2 +.Ljp7F046CDC: +/* 07B84C 7F046CDC 46020381 */ sub.s $f14, $f0, $f2 +/* 07B850 7F046CE0 45000002 */ bc1f .Ljp7F046CEC +/* 07B854 7F046CE4 46007306 */ mov.s $f12, $f14 +/* 07B858 7F046CE8 46147300 */ add.s $f12, $f14, $f20 +.Ljp7F046CEC: +/* 07B85C 7F046CEC C4202B00 */ lwc1 $f0, %lo(D_80052AD0)($at) +/* 07B860 7F046CF0 3C018005 */ lui $at, %hi(D_80052AD4) # $at, 0x8005 +/* 07B864 7F046CF4 46006301 */ sub.s $f12, $f12, $f0 +/* 07B868 7F046CF8 4616603C */ c.lt.s $f12, $f22 +/* 07B86C 7F046CFC 00000000 */ nop +/* 07B870 7F046D00 45020003 */ bc1fl .Ljp7F046D10 +/* 07B874 7F046D04 460C003C */ c.lt.s $f0, $f12 +/* 07B878 7F046D08 46146300 */ add.s $f12, $f12, $f20 +/* 07B87C 7F046D0C 460C003C */ c.lt.s $f0, $f12 +.Ljp7F046D10: +/* 07B880 7F046D10 00000000 */ nop +/* 07B884 7F046D14 45000002 */ bc1f .Ljp7F046D20 +/* 07B888 7F046D18 00000000 */ nop +/* 07B88C 7F046D1C 46146301 */ sub.s $f12, $f12, $f20 +.Ljp7F046D20: +/* 07B890 7F046D20 C42A2B04 */ lwc1 $f10, %lo(D_80052AD4)($at) +/* 07B894 7F046D24 3C018005 */ lui $at, %hi(D_80052AD8) +/* 07B898 7F046D28 460C503C */ c.lt.s $f10, $f12 +/* 07B89C 7F046D2C 00000000 */ nop +/* 07B8A0 7F046D30 45030007 */ bc1tl .Ljp7F046D50 +/* 07B8A4 7F046D34 00009025 */ move $s2, $zero +/* 07B8A8 7F046D38 C4262B08 */ lwc1 $f6, %lo(D_80052AD8)($at) +/* 07B8AC 7F046D3C 4606603C */ c.lt.s $f12, $f6 +/* 07B8B0 7F046D40 00000000 */ nop +/* 07B8B4 7F046D44 45000002 */ bc1f .Ljp7F046D50 +/* 07B8B8 7F046D48 00000000 */ nop +/* 07B8BC 7F046D4C 00009025 */ move $s2, $zero +.Ljp7F046D50: +/* 07B8C0 7F046D50 12400034 */ beqz $s2, .Ljp7F046E24 +/* 07B8C4 7F046D54 00002825 */ move $a1, $zero +/* 07B8C8 7F046D58 8E690014 */ lw $t1, 0x14($s3) +/* 07B8CC 7F046D5C E7B2051C */ swc1 $f18, 0x51c($sp) +/* 07B8D0 7F046D60 8FA40518 */ lw $a0, 0x518($sp) +/* 07B8D4 7F046D64 0FC229DD */ jal sub_GAME_7F08A03C +/* 07B8D8 7F046D68 AFA904F4 */ sw $t1, 0x4f4($sp) +/* 07B8DC 7F046D6C 8FA20518 */ lw $v0, 0x518($sp) +/* 07B8E0 7F046D70 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 07B8E4 7F046D74 8E650008 */ lw $a1, 8($s3) +/* 07B8E8 7F046D78 C4440010 */ lwc1 $f4, 0x10($v0) +/* 07B8EC 7F046D7C 8E660010 */ lw $a2, 0x10($s3) +/* 07B8F0 7F046D80 8C470008 */ lw $a3, 8($v0) +/* 07B8F4 7F046D84 44814000 */ mtc1 $at, $f8 +/* 07B8F8 7F046D88 44815000 */ mtc1 $at, $f10 +/* 07B8FC 7F046D8C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07B900 7F046D90 44813000 */ mtc1 $at, $f6 +/* 07B904 7F046D94 240B001B */ li $t3, 27 +/* 07B908 7F046D98 AFAB0014 */ sw $t3, 0x14($sp) +/* 07B90C 7F046D9C E7B60020 */ swc1 $f22, 0x20($sp) +/* 07B910 7F046DA0 27A404F4 */ addiu $a0, $sp, 0x4f4 +/* 07B914 7F046DA4 E7A40010 */ swc1 $f4, 0x10($sp) +/* 07B918 7F046DA8 E7A80018 */ swc1 $f8, 0x18($sp) +/* 07B91C 7F046DAC E7AA001C */ swc1 $f10, 0x1c($sp) +/* 07B920 7F046DB0 0FC2C675 */ jal sub_GAME_7F0B0E24 +/* 07B924 7F046DB4 E7A60024 */ swc1 $f6, 0x24($sp) +/* 07B928 7F046DB8 10400015 */ beqz $v0, .Ljp7F046E10 +/* 07B92C 7F046DBC C7B2051C */ lwc1 $f18, 0x51c($sp) +/* 07B930 7F046DC0 3C0E8005 */ lui $t6, %hi(clock_timer) # $t6, 0x8005 +/* 07B934 7F046DC4 8DCE83A4 */ lw $t6, %lo(clock_timer)($t6) +/* 07B938 7F046DC8 8E0C00E0 */ lw $t4, 0xe0($s0) +/* 07B93C 7F046DCC 3C014396 */ li $at, 0x43960000 # 300.000000 +/* 07B940 7F046DD0 44812000 */ mtc1 $at, $f4 +/* 07B944 7F046DD4 018E5021 */ addu $t2, $t4, $t6 +/* 07B948 7F046DD8 AE0A00E0 */ sw $t2, 0xe0($s0) +/* 07B94C 7F046DDC 3C018003 */ lui $at, %hi(D_80030B14) # $at, 0x8003 +/* 07B950 7F046DE0 C4280B54 */ lwc1 $f8, %lo(D_80030B14)($at) +/* 07B954 7F046DE4 46082282 */ mul.s $f10, $f4, $f8 +/* 07B958 7F046DE8 4600518D */ trunc.w.s $f6, $f10 +/* 07B95C 7F046DEC 44193000 */ mfc1 $t9, $f6 +/* 07B960 7F046DF0 00000000 */ nop +/* 07B964 7F046DF4 0159082A */ slt $at, $t2, $t9 +/* 07B968 7F046DF8 54200006 */ bnezl $at, .Ljp7F046E14 +/* 07B96C 7F046DFC 8FA40518 */ lw $a0, 0x518($sp) +/* 07B970 7F046E00 0FC158B1 */ jal start_alarm +/* 07B974 7F046E04 E7B2051C */ swc1 $f18, 0x51c($sp) +/* 07B978 7F046E08 C7B2051C */ lwc1 $f18, 0x51c($sp) +/* 07B97C 7F046E0C AE0000E0 */ sw $zero, 0xe0($s0) +.Ljp7F046E10: +/* 07B980 7F046E10 8FA40518 */ lw $a0, 0x518($sp) +.Ljp7F046E14: +/* 07B984 7F046E14 24050001 */ li $a1, 1 +/* 07B988 7F046E18 0FC229DD */ jal sub_GAME_7F08A03C +/* 07B98C 7F046E1C E7B2051C */ swc1 $f18, 0x51c($sp) +/* 07B990 7F046E20 C7B2051C */ lwc1 $f18, 0x51c($sp) +.Ljp7F046E24: +/* 07B994 7F046E24 C60E00C8 */ lwc1 $f14, 0xc8($s0) +/* 07B998 7F046E28 4612703C */ c.lt.s $f14, $f18 +/* 07B99C 7F046E2C 00000000 */ nop +/* 07B9A0 7F046E30 45020047 */ bc1fl .Ljp7F046F50 +/* 07B9A4 7F046E34 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B9A8 7F046E38 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B9AC 7F046E3C 3C018005 */ lui $at, %hi(D_80052AE0) # $at, 0x8005 +/* 07B9B0 7F046E40 C4302B10 */ lwc1 $f16, %lo(D_80052AE0)($at) +/* 07B9B4 7F046E44 46000102 */ mul.s $f4, $f0, $f0 +/* 07B9B8 7F046E48 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07B9BC 7F046E4C 44814000 */ mtc1 $at, $f8 +/* 07B9C0 7F046E50 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07B9C4 7F046E54 46082282 */ mul.s $f10, $f4, $f8 +/* 07B9C8 7F046E58 46105083 */ div.s $f2, $f10, $f16 +/* 07B9CC 7F046E5C 46029181 */ sub.s $f6, $f18, $f2 +/* 07B9D0 7F046E60 460E303E */ c.le.s $f6, $f14 +/* 07B9D4 7F046E64 00000000 */ nop +/* 07B9D8 7F046E68 4502000F */ bc1fl .Ljp7F046EA8 +/* 07B9DC 7F046E6C C60C00DC */ lwc1 $f12, 0xdc($s0) +/* 07B9E0 7F046E70 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07B9E4 7F046E74 46048202 */ mul.s $f8, $f16, $f4 +/* 07B9E8 7F046E78 46080281 */ sub.s $f10, $f0, $f8 +/* 07B9EC 7F046E7C E60A00D8 */ swc1 $f10, 0xd8($s0) +/* 07B9F0 7F046E80 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07B9F4 7F046E84 4610003C */ c.lt.s $f0, $f16 +/* 07B9F8 7F046E88 00000000 */ nop +/* 07B9FC 7F046E8C 45000003 */ bc1f .Ljp7F046E9C +/* 07BA00 7F046E90 00000000 */ nop +/* 07BA04 7F046E94 E61000D8 */ swc1 $f16, 0xd8($s0) +/* 07BA08 7F046E98 C60000D8 */ lwc1 $f0, 0xd8($s0) +.Ljp7F046E9C: +/* 07BA0C 7F046E9C 1000001D */ b .Ljp7F046F14 +/* 07BA10 7F046EA0 C60E00C8 */ lwc1 $f14, 0xc8($s0) +/* 07BA14 7F046EA4 C60C00DC */ lwc1 $f12, 0xdc($s0) +.Ljp7F046EA8: +/* 07BA18 7F046EA8 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07BA1C 7F046EAC 460C003C */ c.lt.s $f0, $f12 +/* 07BA20 7F046EB0 00000000 */ nop +/* 07BA24 7F046EB4 45000017 */ bc1f .Ljp7F046F14 +/* 07BA28 7F046EB8 00000000 */ nop +/* 07BA2C 7F046EBC C42683B4 */ lwc1 $f6, %lo(global_timer_delta)($at) +/* 07BA30 7F046EC0 46068102 */ mul.s $f4, $f16, $f6 +/* 07BA34 7F046EC4 46040080 */ add.s $f2, $f0, $f4 +/* 07BA38 7F046EC8 4602603C */ c.lt.s $f12, $f2 +/* 07BA3C 7F046ECC 00000000 */ nop +/* 07BA40 7F046ED0 45000002 */ bc1f .Ljp7F046EDC +/* 07BA44 7F046ED4 00000000 */ nop +/* 07BA48 7F046ED8 46006086 */ mov.s $f2, $f12 +.Ljp7F046EDC: +/* 07BA4C 7F046EDC 46021202 */ mul.s $f8, $f2, $f2 +/* 07BA50 7F046EE0 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07BA54 7F046EE4 44815000 */ mtc1 $at, $f10 +/* 07BA58 7F046EE8 00000000 */ nop +/* 07BA5C 7F046EEC 460A4182 */ mul.s $f6, $f8, $f10 +/* 07BA60 7F046EF0 46103103 */ div.s $f4, $f6, $f16 +/* 07BA64 7F046EF4 46049201 */ sub.s $f8, $f18, $f4 +/* 07BA68 7F046EF8 4608703C */ c.lt.s $f14, $f8 +/* 07BA6C 7F046EFC 00000000 */ nop +/* 07BA70 7F046F00 45000004 */ bc1f .Ljp7F046F14 +/* 07BA74 7F046F04 00000000 */ nop +/* 07BA78 7F046F08 E60200D8 */ swc1 $f2, 0xd8($s0) +/* 07BA7C 7F046F0C C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07BA80 7F046F10 C60E00C8 */ lwc1 $f14, 0xc8($s0) +.Ljp7F046F14: +/* 07BA84 7F046F14 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07BA88 7F046F18 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07BA8C 7F046F1C 460A0182 */ mul.s $f6, $f0, $f10 +/* 07BA90 7F046F20 46067100 */ add.s $f4, $f14, $f6 +/* 07BA94 7F046F24 E60400C8 */ swc1 $f4, 0xc8($s0) +/* 07BA98 7F046F28 C60800C8 */ lwc1 $f8, 0xc8($s0) +/* 07BA9C 7F046F2C 4608903E */ c.le.s $f18, $f8 +/* 07BAA0 7F046F30 00000000 */ nop +/* 07BAA4 7F046F34 450205BF */ bc1fl .Ljp7F048634 +/* 07BAA8 7F046F38 92220003 */ lbu $v0, 3($s1) +/* 07BAAC 7F046F3C E61200C8 */ swc1 $f18, 0xc8($s0) +/* 07BAB0 7F046F40 E61600D8 */ swc1 $f22, 0xd8($s0) +/* 07BAB4 7F046F44 100005BA */ b .Ljp7F048630 +/* 07BAB8 7F046F48 AE0000D4 */ sw $zero, 0xd4($s0) +/* 07BABC 7F046F4C C60000D8 */ lwc1 $f0, 0xd8($s0) +.Ljp7F046F50: +/* 07BAC0 7F046F50 3C018005 */ lui $at, %hi(D_80052AE4) # $at, 0x8005 +/* 07BAC4 7F046F54 C4302B14 */ lwc1 $f16, %lo(D_80052AE4)($at) +/* 07BAC8 7F046F58 46000282 */ mul.s $f10, $f0, $f0 +/* 07BACC 7F046F5C 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07BAD0 7F046F60 44813000 */ mtc1 $at, $f6 +/* 07BAD4 7F046F64 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07BAD8 7F046F68 24180001 */ li $t8, 1 +/* 07BADC 7F046F6C 46065102 */ mul.s $f4, $f10, $f6 +/* 07BAE0 7F046F70 46102083 */ div.s $f2, $f4, $f16 +/* 07BAE4 7F046F74 46029200 */ add.s $f8, $f18, $f2 +/* 07BAE8 7F046F78 4608703E */ c.le.s $f14, $f8 +/* 07BAEC 7F046F7C 00000000 */ nop +/* 07BAF0 7F046F80 4502000F */ bc1fl .Ljp7F046FC0 +/* 07BAF4 7F046F84 C60C00DC */ lwc1 $f12, 0xdc($s0) +/* 07BAF8 7F046F88 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07BAFC 7F046F8C 460A8182 */ mul.s $f6, $f16, $f10 +/* 07BB00 7F046F90 46060101 */ sub.s $f4, $f0, $f6 +/* 07BB04 7F046F94 E60400D8 */ swc1 $f4, 0xd8($s0) +/* 07BB08 7F046F98 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07BB0C 7F046F9C 4610003C */ c.lt.s $f0, $f16 +/* 07BB10 7F046FA0 00000000 */ nop +/* 07BB14 7F046FA4 45000003 */ bc1f .Ljp7F046FB4 +/* 07BB18 7F046FA8 00000000 */ nop +/* 07BB1C 7F046FAC E61000D8 */ swc1 $f16, 0xd8($s0) +/* 07BB20 7F046FB0 C60000D8 */ lwc1 $f0, 0xd8($s0) +.Ljp7F046FB4: +/* 07BB24 7F046FB4 1000001D */ b .Ljp7F04702C +/* 07BB28 7F046FB8 C60E00C8 */ lwc1 $f14, 0xc8($s0) +/* 07BB2C 7F046FBC C60C00DC */ lwc1 $f12, 0xdc($s0) +.Ljp7F046FC0: +/* 07BB30 7F046FC0 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07BB34 7F046FC4 460C003C */ c.lt.s $f0, $f12 +/* 07BB38 7F046FC8 00000000 */ nop +/* 07BB3C 7F046FCC 45000017 */ bc1f .Ljp7F04702C +/* 07BB40 7F046FD0 00000000 */ nop +/* 07BB44 7F046FD4 C42883B4 */ lwc1 $f8, %lo(global_timer_delta)($at) +/* 07BB48 7F046FD8 46088282 */ mul.s $f10, $f16, $f8 +/* 07BB4C 7F046FDC 460A0080 */ add.s $f2, $f0, $f10 +/* 07BB50 7F046FE0 4602603C */ c.lt.s $f12, $f2 +/* 07BB54 7F046FE4 00000000 */ nop +/* 07BB58 7F046FE8 45000002 */ bc1f .Ljp7F046FF4 +/* 07BB5C 7F046FEC 00000000 */ nop +/* 07BB60 7F046FF0 46006086 */ mov.s $f2, $f12 +.Ljp7F046FF4: +/* 07BB64 7F046FF4 46021182 */ mul.s $f6, $f2, $f2 +/* 07BB68 7F046FF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07BB6C 7F046FFC 44812000 */ mtc1 $at, $f4 +/* 07BB70 7F047000 00000000 */ nop +/* 07BB74 7F047004 46043202 */ mul.s $f8, $f6, $f4 +/* 07BB78 7F047008 46104283 */ div.s $f10, $f8, $f16 +/* 07BB7C 7F04700C 460A9180 */ add.s $f6, $f18, $f10 +/* 07BB80 7F047010 460E303C */ c.lt.s $f6, $f14 +/* 07BB84 7F047014 00000000 */ nop +/* 07BB88 7F047018 45000004 */ bc1f .Ljp7F04702C +/* 07BB8C 7F04701C 00000000 */ nop +/* 07BB90 7F047020 E60200D8 */ swc1 $f2, 0xd8($s0) +/* 07BB94 7F047024 C60000D8 */ lwc1 $f0, 0xd8($s0) +/* 07BB98 7F047028 C60E00C8 */ lwc1 $f14, 0xc8($s0) +.Ljp7F04702C: +/* 07BB9C 7F04702C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07BBA0 7F047030 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07BBA4 7F047034 46040202 */ mul.s $f8, $f0, $f4 +/* 07BBA8 7F047038 46087281 */ sub.s $f10, $f14, $f8 +/* 07BBAC 7F04703C E60A00C8 */ swc1 $f10, 0xc8($s0) +/* 07BBB0 7F047040 C60600C8 */ lwc1 $f6, 0xc8($s0) +/* 07BBB4 7F047044 4612303E */ c.le.s $f6, $f18 +/* 07BBB8 7F047048 00000000 */ nop +/* 07BBBC 7F04704C 45020579 */ bc1fl .Ljp7F048634 +/* 07BBC0 7F047050 92220003 */ lbu $v0, 3($s1) +/* 07BBC4 7F047054 E61200C8 */ swc1 $f18, 0xc8($s0) +/* 07BBC8 7F047058 E61600D8 */ swc1 $f22, 0xd8($s0) +/* 07BBCC 7F04705C 10000574 */ b .Ljp7F048630 +/* 07BBD0 7F047060 AE1800D4 */ sw $t8, 0xd4($s0) +/* 07BBD4 7F047064 2401000D */ li $at, 13 +.Ljp7F047068: +/* 07BBD8 7F047068 5441023F */ bnel $v0, $at, .Ljp7F047968 +/* 07BBDC 7F04706C 24010027 */ li $at, 39 +/* 07BBE0 7F047070 8E280008 */ lw $t0, 8($s1) +/* 07BBE4 7F047074 000848C0 */ sll $t1, $t0, 3 +/* 07BBE8 7F047078 0522023B */ bltzl $t1, .Ljp7F047968 +/* 07BBEC 7F04707C 24010027 */ li $at, 39 +/* 07BBF0 7F047080 0FC2279B */ jal get_curplayer_positiondata +/* 07BBF4 7F047084 8E700004 */ lw $s0, 4($s3) +/* 07BBF8 7F047088 AFA004B0 */ sw $zero, 0x4b0($sp) +/* 07BBFC 7F04708C AFA004AC */ sw $zero, 0x4ac($sp) +/* 07BC00 7F047090 AFA004A8 */ sw $zero, 0x4a8($sp) +/* 07BC04 7F047094 8E23000C */ lw $v1, 0xc($s1) +/* 07BC08 7F047098 00409025 */ move $s2, $v0 +/* 07BC0C 7F04709C 00035800 */ sll $t3, $v1, 0 +/* 07BC10 7F0470A0 05610056 */ bgez $t3, .Ljp7F0471FC +/* 07BC14 7F0470A4 00036040 */ sll $t4, $v1, 1 +/* 07BC18 7F0470A8 05830008 */ bgezl $t4, .Ljp7F0470CC +/* 07BC1C 7F0470AC C6020084 */ lwc1 $f2, 0x84($s0) +/* 07BC20 7F0470B0 C6080090 */ lwc1 $f8, 0x90($s0) +/* 07BC24 7F0470B4 C604009C */ lwc1 $f4, 0x9c($s0) +/* 07BC28 7F0470B8 E6080084 */ swc1 $f8, 0x84($s0) +/* 07BC2C 7F0470BC C6020084 */ lwc1 $f2, 0x84($s0) +/* 07BC30 7F0470C0 10000036 */ b .Ljp7F04719C +/* 07BC34 7F0470C4 E6040098 */ swc1 $f4, 0x98($s0) +/* 07BC38 7F0470C8 C6020084 */ lwc1 $f2, 0x84($s0) +.Ljp7F0470CC: +/* 07BC3C 7F0470CC C60A0090 */ lwc1 $f10, 0x90($s0) +/* 07BC40 7F0470D0 460A1032 */ c.eq.s $f2, $f10 +/* 07BC44 7F0470D4 00000000 */ nop +/* 07BC48 7F0470D8 45000030 */ bc1f .Ljp7F04719C +/* 07BC4C 7F0470DC 00000000 */ nop +/* 07BC50 7F0470E0 C6060098 */ lwc1 $f6, 0x98($s0) +/* 07BC54 7F0470E4 C604009C */ lwc1 $f4, 0x9c($s0) +/* 07BC58 7F0470E8 46043032 */ c.eq.s $f6, $f4 +/* 07BC5C 7F0470EC 00000000 */ nop +/* 07BC60 7F0470F0 4500002A */ bc1f .Ljp7F04719C +/* 07BC64 7F0470F4 00000000 */ nop +/* 07BC68 7F0470F8 0C002918 */ jal get_random_value +/* 07BC6C 7F0470FC 00000000 */ nop +/* 07BC70 7F047100 44824000 */ mtc1 $v0, $f8 +/* 07BC74 7F047104 3C018005 */ lui $at, %hi(D_80052AE8) # $at, 0x8005 +/* 07BC78 7F047108 C4342B18 */ lwc1 $f20, %lo(D_80052AE8)($at) +/* 07BC7C 7F04710C 04410005 */ bgez $v0, .Ljp7F047124 +/* 07BC80 7F047110 468042A0 */ cvt.s.w $f10, $f8 +/* 07BC84 7F047114 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07BC88 7F047118 44813000 */ mtc1 $at, $f6 +/* 07BC8C 7F04711C 00000000 */ nop +/* 07BC90 7F047120 46065280 */ add.s $f10, $f10, $f6 +.Ljp7F047124: +/* 07BC94 7F047124 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07BC98 7F047128 44812000 */ mtc1 $at, $f4 +/* 07BC9C 7F04712C 3C01421C */ li $at, 0x421C0000 # 39.000000 +/* 07BCA0 7F047130 44813000 */ mtc1 $at, $f6 +/* 07BCA4 7F047134 46045202 */ mul.s $f8, $f10, $f4 +/* 07BCA8 7F047138 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07BCAC 7F04713C 44812000 */ mtc1 $at, $f4 +/* 07BCB0 7F047140 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07BCB4 7F047144 46064282 */ mul.s $f10, $f8, $f6 +/* 07BCB8 7F047148 46045200 */ add.s $f8, $f10, $f4 +/* 07BCBC 7F04714C 44815000 */ mtc1 $at, $f10 +/* 07BCC0 7F047150 46144182 */ mul.s $f6, $f8, $f20 +/* 07BCC4 7F047154 460A3103 */ div.s $f4, $f6, $f10 +/* 07BCC8 7F047158 0C002918 */ jal get_random_value +/* 07BCCC 7F04715C E6040098 */ swc1 $f4, 0x98($s0) +/* 07BCD0 7F047160 44824000 */ mtc1 $v0, $f8 +/* 07BCD4 7F047164 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07BCD8 7F047168 04410004 */ bgez $v0, .Ljp7F04717C +/* 07BCDC 7F04716C 468041A0 */ cvt.s.w $f6, $f8 +/* 07BCE0 7F047170 44815000 */ mtc1 $at, $f10 +/* 07BCE4 7F047174 00000000 */ nop +/* 07BCE8 7F047178 460A3180 */ add.s $f6, $f6, $f10 +.Ljp7F04717C: +/* 07BCEC 7F04717C 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07BCF0 7F047180 44812000 */ mtc1 $at, $f4 +/* 07BCF4 7F047184 00000000 */ nop +/* 07BCF8 7F047188 46043202 */ mul.s $f8, $f6, $f4 +/* 07BCFC 7F04718C 00000000 */ nop +/* 07BD00 7F047190 46144282 */ mul.s $f10, $f8, $f20 +/* 07BD04 7F047194 E60A0084 */ swc1 $f10, 0x84($s0) +/* 07BD08 7F047198 C6020084 */ lwc1 $f2, 0x84($s0) +.Ljp7F04719C: +/* 07BD0C 7F04719C 3C018005 */ lui $at, %hi(D_80052AEC) # $at, 0x8005 +/* 07BD10 7F0471A0 C4202B1C */ lwc1 $f0, %lo(D_80052AEC)($at) +/* 07BD14 7F0471A4 3C018005 */ lui $at, %hi(D_80052AF4) # $at, 0x8005 +/* 07BD18 7F0471A8 C4262B24 */ lwc1 $f6, %lo(D_80052AF4)($at) +/* 07BD1C 7F0471AC 44051000 */ mfc1 $a1, $f2 +/* 07BD20 7F0471B0 44070000 */ mfc1 $a3, $f0 +/* 07BD24 7F0471B4 26040090 */ addiu $a0, $s0, 0x90 +/* 07BD28 7F0471B8 26060094 */ addiu $a2, $s0, 0x94 +/* 07BD2C 7F0471BC E7A00010 */ swc1 $f0, 0x10($sp) +/* 07BD30 7F0471C0 0FC10D03 */ jal sub_GAME_7F04310C +/* 07BD34 7F0471C4 E7A60014 */ swc1 $f6, 0x14($sp) +/* 07BD38 7F0471C8 3C018005 */ lui $at, %hi(D_80052AF8) # $at, 0x8005 +/* 07BD3C 7F0471CC C4202B28 */ lwc1 $f0, %lo(D_80052AF8)($at) +/* 07BD40 7F0471D0 3C018005 */ lui $at, %hi(D_80052AFC) # $at, 0x8005 +/* 07BD44 7F0471D4 C4242B2C */ lwc1 $f4, %lo(D_80052AFC)($at) +/* 07BD48 7F0471D8 8E050098 */ lw $a1, 0x98($s0) +/* 07BD4C 7F0471DC 44070000 */ mfc1 $a3, $f0 +/* 07BD50 7F0471E0 2604009C */ addiu $a0, $s0, 0x9c +/* 07BD54 7F0471E4 260600A0 */ addiu $a2, $s0, 0xa0 +/* 07BD58 7F0471E8 E7A00010 */ swc1 $f0, 0x10($sp) +/* 07BD5C 7F0471EC 0FC10D03 */ jal sub_GAME_7F04310C +/* 07BD60 7F0471F0 E7A40014 */ swc1 $f4, 0x14($sp) +/* 07BD64 7F0471F4 1000050F */ b .Ljp7F048634 +/* 07BD68 7F0471F8 92220003 */ lbu $v0, 3($s1) +.Ljp7F0471FC: +/* 07BD6C 7F0471FC C6480008 */ lwc1 $f8, 8($s2) +/* 07BD70 7F047200 C62A0058 */ lwc1 $f10, 0x58($s1) +/* 07BD74 7F047204 C646000C */ lwc1 $f6, 0xc($s2) +/* 07BD78 7F047208 C624005C */ lwc1 $f4, 0x5c($s1) +/* 07BD7C 7F04720C 460A4001 */ sub.s $f0, $f8, $f10 +/* 07BD80 7F047210 3C0141A0 */ li $at, 0x41A00000 # 20.000000 +/* 07BD84 7F047214 44815000 */ mtc1 $at, $f10 +/* 07BD88 7F047218 46043201 */ sub.s $f8, $f6, $f4 +/* 07BD8C 7F04721C 460A4181 */ sub.s $f6, $f8, $f10 +/* 07BD90 7F047220 46000282 */ mul.s $f10, $f0, $f0 +/* 07BD94 7F047224 E7A604C4 */ swc1 $f6, 0x4c4($sp) +/* 07BD98 7F047228 C6280060 */ lwc1 $f8, 0x60($s1) +/* 07BD9C 7F04722C C6440010 */ lwc1 $f4, 0x10($s2) +/* 07BDA0 7F047230 E7A004C8 */ swc1 $f0, 0x4c8($sp) +/* 07BDA4 7F047234 46082081 */ sub.s $f2, $f4, $f8 +/* 07BDA8 7F047238 46021182 */ mul.s $f6, $f2, $f2 +/* 07BDAC 7F04723C E7A204C0 */ swc1 $f2, 0x4c0($sp) +/* 07BDB0 7F047240 46065500 */ add.s $f20, $f10, $f6 +/* 07BDB4 7F047244 E7B404BC */ swc1 $f20, 0x4bc($sp) +/* 07BDB8 7F047248 0C007E08 */ jal sqrtf +/* 07BDBC 7F04724C 4600A306 */ mov.s $f12, $f20 +/* 07BDC0 7F047250 E7A004B4 */ swc1 $f0, 0x4b4($sp) +/* 07BDC4 7F047254 8E2E0008 */ lw $t6, 8($s1) +/* 07BDC8 7F047258 46000086 */ mov.s $f2, $f0 +/* 07BDCC 7F04725C 000E5100 */ sll $t2, $t6, 4 +/* 07BDD0 7F047260 05430008 */ bgezl $t2, .Ljp7F047284 +/* 07BDD4 7F047264 C7AC04BC */ lwc1 $f12, 0x4bc($sp) +/* 07BDD8 7F047268 C7A004C4 */ lwc1 $f0, 0x4c4($sp) +/* 07BDDC 7F04726C 46000102 */ mul.s $f4, $f0, $f0 +/* 07BDE0 7F047270 4604A300 */ add.s $f12, $f20, $f4 +/* 07BDE4 7F047274 0C007E08 */ jal sqrtf +/* 07BDE8 7F047278 E7AC04BC */ swc1 $f12, 0x4bc($sp) +/* 07BDEC 7F04727C 46000086 */ mov.s $f2, $f0 +/* 07BDF0 7F047280 C7AC04BC */ lwc1 $f12, 0x4bc($sp) +.Ljp7F047284: +/* 07BDF4 7F047284 0FC0B553 */ jal sub_GAME_7F02D244 +/* 07BDF8 7F047288 E7A204B8 */ swc1 $f2, 0x4b8($sp) +/* 07BDFC 7F04728C E7A004A4 */ swc1 $f0, 0x4a4($sp) +/* 07BE00 7F047290 C6080098 */ lwc1 $f8, 0x98($s0) +/* 07BE04 7F047294 C6100084 */ lwc1 $f16, 0x84($s0) +/* 07BE08 7F047298 C7A204B8 */ lwc1 $f2, 0x4b8($sp) +/* 07BE0C 7F04729C E7A804D8 */ swc1 $f8, 0x4d8($sp) +/* 07BE10 7F0472A0 C60A00A8 */ lwc1 $f10, 0xa8($s0) +/* 07BE14 7F0472A4 460A103E */ c.le.s $f2, $f10 +/* 07BE18 7F0472A8 00000000 */ nop +/* 07BE1C 7F0472AC 45020096 */ bc1fl .Ljp7F047508 +/* 07BE20 7F0472B0 8FA804B0 */ lw $t0, 0x4b0($sp) +/* 07BE24 7F0472B4 C7AC04C8 */ lwc1 $f12, 0x4c8($sp) +/* 07BE28 7F0472B8 C7AE04C0 */ lwc1 $f14, 0x4c0($sp) +/* 07BE2C 7F0472BC 0FC16BD4 */ jal convert_angle_using_inverse +/* 07BE30 7F0472C0 E7B004DC */ swc1 $f16, 0x4dc($sp) +/* 07BE34 7F0472C4 E7A004A0 */ swc1 $f0, 0x4a0($sp) +/* 07BE38 7F0472C8 C7AC04C4 */ lwc1 $f12, 0x4c4($sp) +/* 07BE3C 7F0472CC 0FC16BD4 */ jal convert_angle_using_inverse +/* 07BE40 7F0472D0 C7AE04B4 */ lwc1 $f14, 0x4b4($sp) +/* 07BE44 7F0472D4 E7A0049C */ swc1 $f0, 0x49c($sp) +/* 07BE48 7F0472D8 8E220008 */ lw $v0, 8($s1) +/* 07BE4C 7F0472DC C7B004DC */ lwc1 $f16, 0x4dc($sp) +/* 07BE50 7F0472E0 24190001 */ li $t9, 1 +/* 07BE54 7F0472E4 00027840 */ sll $t7, $v0, 1 +/* 07BE58 7F0472E8 05E00003 */ bltz $t7, .Ljp7F0472F8 +/* 07BE5C 7F0472EC 00026880 */ sll $t5, $v0, 2 +/* 07BE60 7F0472F0 05A10005 */ bgez $t5, .Ljp7F047308 +/* 07BE64 7F0472F4 C7A604A0 */ lwc1 $f6, 0x4a0($sp) +.Ljp7F0472F8: +/* 07BE68 7F0472F8 3C018005 */ lui $at, %hi(D_80052B00) # $at, 0x8005 +/* 07BE6C 7F0472FC C4342B30 */ lwc1 $f20, %lo(D_80052B00)($at) +/* 07BE70 7F047300 10000027 */ b .Ljp7F0473A0 +/* 07BE74 7F047304 AFB904B0 */ sw $t9, 0x4b0($sp) +.Ljp7F047308: +/* 07BE78 7F047308 C6040090 */ lwc1 $f4, 0x90($s0) +/* 07BE7C 7F04730C 3C018005 */ lui $at, %hi(D_80052B04) # $at, 0x8005 +/* 07BE80 7F047310 46043301 */ sub.s $f12, $f6, $f4 +/* 07BE84 7F047314 4616603C */ c.lt.s $f12, $f22 +/* 07BE88 7F047318 00000000 */ nop +/* 07BE8C 7F04731C 45000003 */ bc1f .Ljp7F04732C +/* 07BE90 7F047320 00000000 */ nop +/* 07BE94 7F047324 C4342B34 */ lwc1 $f20, %lo(D_80052B04)($at) +/* 07BE98 7F047328 46146300 */ add.s $f12, $f12, $f20 +.Ljp7F04732C: +/* 07BE9C 7F04732C 3C018005 */ lui $at, %hi(D_80052B08) # $at, 0x8005 +/* 07BEA0 7F047330 C4342B38 */ lwc1 $f20, %lo(D_80052B08)($at) +/* 07BEA4 7F047334 3C018005 */ lui $at, %hi(D_80052B0C) # $at, 0x8005 +/* 07BEA8 7F047338 C4282B3C */ lwc1 $f8, %lo(D_80052B0C)($at) +/* 07BEAC 7F04733C 3C018005 */ lui $at, %hi(D_80052B10) # $at, 0x8005 +/* 07BEB0 7F047340 460C403C */ c.lt.s $f8, $f12 +/* 07BEB4 7F047344 00000000 */ nop +/* 07BEB8 7F047348 45020003 */ bc1fl .Ljp7F047358 +/* 07BEBC 7F04734C C60A009C */ lwc1 $f10, 0x9c($s0) +/* 07BEC0 7F047350 46146301 */ sub.s $f12, $f12, $f20 +/* 07BEC4 7F047354 C60A009C */ lwc1 $f10, 0x9c($s0) +.Ljp7F047358: +/* 07BEC8 7F047358 460A0081 */ sub.s $f2, $f0, $f10 +/* 07BECC 7F04735C 4616103C */ c.lt.s $f2, $f22 +/* 07BED0 7F047360 00000000 */ nop +/* 07BED4 7F047364 45000001 */ bc1f .Ljp7F04736C +/* 07BED8 7F047368 00000000 */ nop +.Ljp7F04736C: +/* 07BEDC 7F04736C C4262B40 */ lwc1 $f6, %lo(D_80052B10)($at) +/* 07BEE0 7F047370 3C018005 */ lui $at, %hi(D_80052B14) # $at, 0x8005 +/* 07BEE4 7F047374 4606603C */ c.lt.s $f12, $f6 +/* 07BEE8 7F047378 00000000 */ nop +/* 07BEEC 7F04737C 45020009 */ bc1fl .Ljp7F0473A4 +/* 07BEF0 7F047380 8FA804B0 */ lw $t0, 0x4b0($sp) +/* 07BEF4 7F047384 C4242B44 */ lwc1 $f4, %lo(D_80052B14)($at) +/* 07BEF8 7F047388 24180001 */ li $t8, 1 +/* 07BEFC 7F04738C 460C203C */ c.lt.s $f4, $f12 +/* 07BF00 7F047390 00000000 */ nop +/* 07BF04 7F047394 45020003 */ bc1fl .Ljp7F0473A4 +/* 07BF08 7F047398 8FA804B0 */ lw $t0, 0x4b0($sp) +/* 07BF0C 7F04739C AFB804B0 */ sw $t8, 0x4b0($sp) +.Ljp7F0473A0: +/* 07BF10 7F0473A0 8FA804B0 */ lw $t0, 0x4b0($sp) +.Ljp7F0473A4: +/* 07BF14 7F0473A4 C7A804A0 */ lwc1 $f8, 0x4a0($sp) +/* 07BF18 7F0473A8 02402025 */ move $a0, $s2 +/* 07BF1C 7F0473AC 11000055 */ beqz $t0, .Ljp7F047504 +/* 07BF20 7F0473B0 00002825 */ move $a1, $zero +/* 07BF24 7F0473B4 C60A0084 */ lwc1 $f10, 0x84($s0) +/* 07BF28 7F0473B8 3C018005 */ lui $at, %hi(D_80052B18) # $at, 0x8005 +/* 07BF2C 7F0473BC C4262B48 */ lwc1 $f6, %lo(D_80052B18)($at) +/* 07BF30 7F0473C0 460A4001 */ sub.s $f0, $f8, $f10 +/* 07BF34 7F0473C4 8E690014 */ lw $t1, 0x14($s3) +/* 07BF38 7F0473C8 3C018005 */ lui $at, %hi(D_80052B1C) # $at, 0x8005 +/* 07BF3C 7F0473CC 4606003C */ c.lt.s $f0, $f6 +/* 07BF40 7F0473D0 AFA90494 */ sw $t1, 0x494($sp) +/* 07BF44 7F0473D4 45000003 */ bc1f .Ljp7F0473E4 +/* 07BF48 7F0473D8 00000000 */ nop +/* 07BF4C 7F0473DC 10000007 */ b .Ljp7F0473FC +/* 07BF50 7F0473E0 46140000 */ add.s $f0, $f0, $f20 +.Ljp7F0473E4: +/* 07BF54 7F0473E4 C4242B4C */ lwc1 $f4, %lo(D_80052B1C)($at) +/* 07BF58 7F0473E8 4600203E */ c.le.s $f4, $f0 +/* 07BF5C 7F0473EC 00000000 */ nop +/* 07BF60 7F0473F0 45020003 */ bc1fl .Ljp7F047400 +/* 07BF64 7F0473F4 E7A00498 */ swc1 $f0, 0x498($sp) +/* 07BF68 7F0473F8 46140001 */ sub.s $f0, $f0, $f20 +.Ljp7F0473FC: +/* 07BF6C 7F0473FC E7A00498 */ swc1 $f0, 0x498($sp) +.Ljp7F047400: +/* 07BF70 7F047400 0FC229DD */ jal sub_GAME_7F08A03C +/* 07BF74 7F047404 E7B004DC */ swc1 $f16, 0x4dc($sp) +/* 07BF78 7F047408 C7A00498 */ lwc1 $f0, 0x498($sp) +/* 07BF7C 7F04740C C6080088 */ lwc1 $f8, 0x88($s0) +/* 07BF80 7F047410 C7B004DC */ lwc1 $f16, 0x4dc($sp) +/* 07BF84 7F047414 4608003E */ c.le.s $f0, $f8 +/* 07BF88 7F047418 00000000 */ nop +/* 07BF8C 7F04741C 45020027 */ bc1fl .Ljp7F0474BC +/* 07BF90 7F047420 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BF94 7F047424 C60A008C */ lwc1 $f10, 0x8c($s0) +/* 07BF98 7F047428 240B001B */ li $t3, 27 +/* 07BF9C 7F04742C 4600503E */ c.le.s $f10, $f0 +/* 07BFA0 7F047430 00000000 */ nop +/* 07BFA4 7F047434 45020021 */ bc1fl .Ljp7F0474BC +/* 07BFA8 7F047438 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07BFAC 7F04743C C6460010 */ lwc1 $f6, 0x10($s2) +/* 07BFB0 7F047440 8E650008 */ lw $a1, 8($s3) +/* 07BFB4 7F047444 8E660010 */ lw $a2, 0x10($s3) +/* 07BFB8 7F047448 8E470008 */ lw $a3, 8($s2) +/* 07BFBC 7F04744C AFAB0014 */ sw $t3, 0x14($sp) +/* 07BFC0 7F047450 E7A60010 */ swc1 $f6, 0x10($sp) +/* 07BFC4 7F047454 C660000C */ lwc1 $f0, 0xc($s3) +/* 07BFC8 7F047458 27A40494 */ addiu $a0, $sp, 0x494 +/* 07BFCC 7F04745C E7A00018 */ swc1 $f0, 0x18($sp) +/* 07BFD0 7F047460 E7A0001C */ swc1 $f0, 0x1c($sp) +/* 07BFD4 7F047464 C642000C */ lwc1 $f2, 0xc($s2) +/* 07BFD8 7F047468 E7B004DC */ swc1 $f16, 0x4dc($sp) +/* 07BFDC 7F04746C E7A20020 */ swc1 $f2, 0x20($sp) +/* 07BFE0 7F047470 0FC2C675 */ jal sub_GAME_7F0B0E24 +/* 07BFE4 7F047474 E7A20024 */ swc1 $f2, 0x24($sp) +/* 07BFE8 7F047478 1040000F */ beqz $v0, .Ljp7F0474B8 +/* 07BFEC 7F04747C C7B004DC */ lwc1 $f16, 0x4dc($sp) +/* 07BFF0 7F047480 8FAC0494 */ lw $t4, 0x494($sp) +/* 07BFF4 7F047484 8E4E0014 */ lw $t6, 0x14($s2) +/* 07BFF8 7F047488 558E000C */ bnel $t4, $t6, .Ljp7F0474BC +/* 07BFFC 7F04748C 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07C000 7F047490 8E2A0008 */ lw $t2, 8($s1) +/* 07C004 7F047494 3C012000 */ lui $at, 0x2000 +/* 07C008 7F047498 240D0001 */ li $t5, 1 +/* 07C00C 7F04749C 01417825 */ or $t7, $t2, $at +/* 07C010 7F0474A0 AE2F0008 */ sw $t7, 8($s1) +/* 07C014 7F0474A4 C7A4049C */ lwc1 $f4, 0x49c($sp) +/* 07C018 7F0474A8 AFAD04A8 */ sw $t5, 0x4a8($sp) +/* 07C01C 7F0474AC C7B004A0 */ lwc1 $f16, 0x4a0($sp) +/* 07C020 7F0474B0 1000000F */ b .Ljp7F0474F0 +/* 07C024 7F0474B4 E7A404D8 */ swc1 $f4, 0x4d8($sp) +.Ljp7F0474B8: +/* 07C028 7F0474B8 8E0200B8 */ lw $v0, 0xb8($s0) +.Ljp7F0474BC: +/* 07C02C 7F0474BC 3C198005 */ lui $t9, %hi(global_timer) # $t9, 0x8005 +/* 07C030 7F0474C0 0442000B */ bltzl $v0, .Ljp7F0474F0 +/* 07C034 7F0474C4 AFA004B0 */ sw $zero, 0x4b0($sp) +/* 07C038 7F0474C8 8F3983AC */ lw $t9, %lo(global_timer)($t9) +/* 07C03C 7F0474CC 2738FF88 */ addiu $t8, $t9, -0x78 +/* 07C040 7F0474D0 0302082A */ slt $at, $t8, $v0 +/* 07C044 7F0474D4 50200006 */ beql $at, $zero, .Ljp7F0474F0 +/* 07C048 7F0474D8 AFA004B0 */ sw $zero, 0x4b0($sp) +/* 07C04C 7F0474DC C608009C */ lwc1 $f8, 0x9c($s0) +/* 07C050 7F0474E0 C6100090 */ lwc1 $f16, 0x90($s0) +/* 07C054 7F0474E4 10000002 */ b .Ljp7F0474F0 +/* 07C058 7F0474E8 E7A804D8 */ swc1 $f8, 0x4d8($sp) +/* 07C05C 7F0474EC AFA004B0 */ sw $zero, 0x4b0($sp) +.Ljp7F0474F0: +/* 07C060 7F0474F0 02402025 */ move $a0, $s2 +/* 07C064 7F0474F4 24050001 */ li $a1, 1 +/* 07C068 7F0474F8 0FC229DD */ jal sub_GAME_7F08A03C +/* 07C06C 7F0474FC E7B004DC */ swc1 $f16, 0x4dc($sp) +/* 07C070 7F047500 C7B004DC */ lwc1 $f16, 0x4dc($sp) +.Ljp7F047504: +/* 07C074 7F047504 8FA804B0 */ lw $t0, 0x4b0($sp) +.Ljp7F047508: +/* 07C078 7F047508 3C018005 */ lui $at, %hi(D_80052B20) # $at, 0x8005 +/* 07C07C 7F04750C C4342B50 */ lwc1 $f20, %lo(D_80052B20)($at) +/* 07C080 7F047510 51000007 */ beql $t0, $zero, .Ljp7F047530 +/* 07C084 7F047514 8E0900D0 */ lw $t1, 0xd0($s0) +/* 07C088 7F047518 C7AC04BC */ lwc1 $f12, 0x4bc($sp) +/* 07C08C 7F04751C 0FC0B553 */ jal sub_GAME_7F02D244 +/* 07C090 7F047520 E7B004DC */ swc1 $f16, 0x4dc($sp) +/* 07C094 7F047524 C7B004DC */ lwc1 $f16, 0x4dc($sp) +/* 07C098 7F047528 E7A004A4 */ swc1 $f0, 0x4a4($sp) +/* 07C09C 7F04752C 8E0900D0 */ lw $t1, 0xd0($s0) +.Ljp7F047530: +/* 07C0A0 7F047530 1120001F */ beqz $t1, .Ljp7F0475B0 +/* 07C0A4 7F047534 3C0B8005 */ lui $t3, %hi(global_timer) # $t3, 0x8005 +/* 07C0A8 7F047538 8D6B83AC */ lw $t3, %lo(global_timer)($t3) +/* 07C0AC 7F04753C 24010078 */ li $at, 120 +/* 07C0B0 7F047540 E7B004DC */ swc1 $f16, 0x4dc($sp) +/* 07C0B4 7F047544 0161001A */ div $zero, $t3, $at +/* 07C0B8 7F047548 00006010 */ mfhi $t4 +/* 07C0BC 7F04754C 448C5000 */ mtc1 $t4, $f10 +/* 07C0C0 7F047550 3C0142F0 */ li $at, 0x42F00000 # 120.000000 +/* 07C0C4 7F047554 44814000 */ mtc1 $at, $f8 +/* 07C0C8 7F047558 468051A0 */ cvt.s.w $f6, $f10 +/* 07C0CC 7F04755C 46143102 */ mul.s $f4, $f6, $f20 +/* 07C0D0 7F047560 0FC160F3 */ jal sinf +/* 07C0D4 7F047564 46082303 */ div.s $f12, $f4, $f8 +/* 07C0D8 7F047568 3C018005 */ lui $at, %hi(D_80052B24) # $at, 0x8005 +/* 07C0DC 7F04756C C4262B54 */ lwc1 $f6, %lo(D_80052B24)($at) +/* 07C0E0 7F047570 C7AA04A4 */ lwc1 $f10, 0x4a4($sp) +/* 07C0E4 7F047574 C7B004DC */ lwc1 $f16, 0x4dc($sp) +/* 07C0E8 7F047578 46065102 */ mul.s $f4, $f10, $f6 +/* 07C0EC 7F04757C 00000000 */ nop +/* 07C0F0 7F047580 46002202 */ mul.s $f8, $f4, $f0 +/* 07C0F4 7F047584 46088400 */ add.s $f16, $f16, $f8 +/* 07C0F8 7F047588 4616803C */ c.lt.s $f16, $f22 +/* 07C0FC 7F04758C 00000000 */ nop +/* 07C100 7F047590 45000002 */ bc1f .Ljp7F04759C +/* 07C104 7F047594 00000000 */ nop +/* 07C108 7F047598 46148400 */ add.s $f16, $f16, $f20 +.Ljp7F04759C: +/* 07C10C 7F04759C 4610A03E */ c.le.s $f20, $f16 +/* 07C110 7F0475A0 00000000 */ nop +/* 07C114 7F0475A4 45020003 */ bc1fl .Ljp7F0475B4 +/* 07C118 7F0475A8 C6020084 */ lwc1 $f2, 0x84($s0) +/* 07C11C 7F0475AC 46148401 */ sub.s $f16, $f16, $f20 +.Ljp7F0475B0: +/* 07C120 7F0475B0 C6020084 */ lwc1 $f2, 0x84($s0) +.Ljp7F0475B4: +/* 07C124 7F0475B4 3C018005 */ lui $at, %hi(D_80052B28) # $at, 0x8005 +/* 07C128 7F0475B8 C42A2B58 */ lwc1 $f10, %lo(D_80052B28)($at) +/* 07C12C 7F0475BC 46028001 */ sub.s $f0, $f16, $f2 +/* 07C130 7F0475C0 26040090 */ addiu $a0, $s0, 0x90 +/* 07C134 7F0475C4 460A003C */ c.lt.s $f0, $f10 +/* 07C138 7F0475C8 00000000 */ nop +/* 07C13C 7F0475CC 45000003 */ bc1f .Ljp7F0475DC +/* 07C140 7F0475D0 00000000 */ nop +/* 07C144 7F0475D4 10000008 */ b .Ljp7F0475F8 +/* 07C148 7F0475D8 46140000 */ add.s $f0, $f0, $f20 +.Ljp7F0475DC: +/* 07C14C 7F0475DC 3C018005 */ lui $at, %hi(D_80052B2C) # $at, 0x8005 +/* 07C150 7F0475E0 C4262B5C */ lwc1 $f6, %lo(D_80052B2C)($at) +/* 07C154 7F0475E4 4600303E */ c.le.s $f6, $f0 +/* 07C158 7F0475E8 00000000 */ nop +/* 07C15C 7F0475EC 45020003 */ bc1fl .Ljp7F0475FC +/* 07C160 7F0475F0 C60C0088 */ lwc1 $f12, 0x88($s0) +/* 07C164 7F0475F4 46140001 */ sub.s $f0, $f0, $f20 +.Ljp7F0475F8: +/* 07C168 7F0475F8 C60C0088 */ lwc1 $f12, 0x88($s0) +.Ljp7F0475FC: +/* 07C16C 7F0475FC 3C018005 */ lui $at, %hi(D_80052B30) # $at, 0x8005 +/* 07C170 7F047600 4600603C */ c.lt.s $f12, $f0 +/* 07C174 7F047604 00000000 */ nop +/* 07C178 7F047608 45020004 */ bc1fl .Ljp7F04761C +/* 07C17C 7F04760C C60C008C */ lwc1 $f12, 0x8c($s0) +/* 07C180 7F047610 10000007 */ b .Ljp7F047630 +/* 07C184 7F047614 460C1400 */ add.s $f16, $f2, $f12 +/* 07C188 7F047618 C60C008C */ lwc1 $f12, 0x8c($s0) +.Ljp7F04761C: +/* 07C18C 7F04761C 460C003C */ c.lt.s $f0, $f12 +/* 07C190 7F047620 00000000 */ nop +/* 07C194 7F047624 45020003 */ bc1fl .Ljp7F047634 +/* 07C198 7F047628 4616803C */ c.lt.s $f16, $f22 +/* 07C19C 7F04762C 460C1400 */ add.s $f16, $f2, $f12 +.Ljp7F047630: +/* 07C1A0 7F047630 4616803C */ c.lt.s $f16, $f22 +.Ljp7F047634: +/* 07C1A4 7F047634 00000000 */ nop +/* 07C1A8 7F047638 45020003 */ bc1fl .Ljp7F047648 +/* 07C1AC 7F04763C 4610A03E */ c.le.s $f20, $f16 +/* 07C1B0 7F047640 46148400 */ add.s $f16, $f16, $f20 +/* 07C1B4 7F047644 4610A03E */ c.le.s $f20, $f16 +.Ljp7F047648: +/* 07C1B8 7F047648 00000000 */ nop +/* 07C1BC 7F04764C 45000002 */ bc1f .Ljp7F047658 +/* 07C1C0 7F047650 00000000 */ nop +/* 07C1C4 7F047654 46148401 */ sub.s $f16, $f16, $f20 +.Ljp7F047658: +/* 07C1C8 7F047658 C4202B60 */ lwc1 $f0, %lo(D_80052B30)($at) +/* 07C1CC 7F04765C 44058000 */ mfc1 $a1, $f16 +/* 07C1D0 7F047660 26060094 */ addiu $a2, $s0, 0x94 +/* 07C1D4 7F047664 E7A00010 */ swc1 $f0, 0x10($sp) +/* 07C1D8 7F047668 C60400A4 */ lwc1 $f4, 0xa4($s0) +/* 07C1DC 7F04766C 44070000 */ mfc1 $a3, $f0 +/* 07C1E0 7F047670 E7B004DC */ swc1 $f16, 0x4dc($sp) +/* 07C1E4 7F047674 0FC10D03 */ jal sub_GAME_7F04310C +/* 07C1E8 7F047678 E7A40014 */ swc1 $f4, 0x14($sp) +/* 07C1EC 7F04767C 3C018005 */ lui $at, %hi(D_80052B34) # $at, 0x8005 +/* 07C1F0 7F047680 C4202B64 */ lwc1 $f0, %lo(D_80052B34)($at) +/* 07C1F4 7F047684 2604009C */ addiu $a0, $s0, 0x9c +/* 07C1F8 7F047688 8FA504D8 */ lw $a1, 0x4d8($sp) +/* 07C1FC 7F04768C E7A00010 */ swc1 $f0, 0x10($sp) +/* 07C200 7F047690 C60800A4 */ lwc1 $f8, 0xa4($s0) +/* 07C204 7F047694 44070000 */ mfc1 $a3, $f0 +/* 07C208 7F047698 260600A0 */ addiu $a2, $s0, 0xa0 +/* 07C20C 7F04769C 0FC10D03 */ jal sub_GAME_7F04310C +/* 07C210 7F0476A0 E7A80014 */ swc1 $f8, 0x14($sp) +/* 07C214 7F0476A4 C7B004DC */ lwc1 $f16, 0x4dc($sp) +/* 07C218 7F0476A8 C60A0090 */ lwc1 $f10, 0x90($s0) +/* 07C21C 7F0476AC 3C018005 */ lui $at, %hi(D_80052B38) # $at, 0x8005 +/* 07C220 7F0476B0 C7A604D8 */ lwc1 $f6, 0x4d8($sp) +/* 07C224 7F0476B4 460A8301 */ sub.s $f12, $f16, $f10 +/* 07C228 7F0476B8 4616603C */ c.lt.s $f12, $f22 +/* 07C22C 7F0476BC 00000000 */ nop +/* 07C230 7F0476C0 45000002 */ bc1f .Ljp7F0476CC +/* 07C234 7F0476C4 00000000 */ nop +/* 07C238 7F0476C8 46146300 */ add.s $f12, $f12, $f20 +.Ljp7F0476CC: +/* 07C23C 7F0476CC C4202B68 */ lwc1 $f0, %lo(D_80052B38)($at) +/* 07C240 7F0476D0 460C003C */ c.lt.s $f0, $f12 +/* 07C244 7F0476D4 00000000 */ nop +/* 07C248 7F0476D8 45020003 */ bc1fl .Ljp7F0476E8 +/* 07C24C 7F0476DC C604009C */ lwc1 $f4, 0x9c($s0) +/* 07C250 7F0476E0 46146301 */ sub.s $f12, $f12, $f20 +/* 07C254 7F0476E4 C604009C */ lwc1 $f4, 0x9c($s0) +.Ljp7F0476E8: +/* 07C258 7F0476E8 46043081 */ sub.s $f2, $f6, $f4 +/* 07C25C 7F0476EC 4616103C */ c.lt.s $f2, $f22 +/* 07C260 7F0476F0 00000000 */ nop +/* 07C264 7F0476F4 45020003 */ bc1fl .Ljp7F047704 +/* 07C268 7F0476F8 4602003C */ c.lt.s $f0, $f2 +/* 07C26C 7F0476FC 46141080 */ add.s $f2, $f2, $f20 +/* 07C270 7F047700 4602003C */ c.lt.s $f0, $f2 +.Ljp7F047704: +/* 07C274 7F047704 00000000 */ nop +/* 07C278 7F047708 45020003 */ bc1fl .Ljp7F047718 +/* 07C27C 7F04770C AE0000D0 */ sw $zero, 0xd0($s0) +/* 07C280 7F047710 46141081 */ sub.s $f2, $f2, $f20 +/* 07C284 7F047714 AE0000D0 */ sw $zero, 0xd0($s0) +.Ljp7F047718: +/* 07C288 7F047718 8FAE04B0 */ lw $t6, 0x4b0($sp) +/* 07C28C 7F04771C C7A804A4 */ lwc1 $f8, 0x4a4($sp) +/* 07C290 7F047720 51C00047 */ beql $t6, $zero, .Ljp7F047840 +/* 07C294 7F047724 8FB904AC */ lw $t9, 0x4ac($sp) +/* 07C298 7F047728 4608603C */ c.lt.s $f12, $f8 +/* 07C29C 7F04772C C7AA04A4 */ lwc1 $f10, 0x4a4($sp) +/* 07C2A0 7F047730 4502001B */ bc1fl .Ljp7F0477A0 +/* 07C2A4 7F047734 460A5000 */ add.s $f0, $f10, $f10 +/* 07C2A8 7F047738 46004007 */ neg.s $f0, $f8 +/* 07C2AC 7F04773C 460C003C */ c.lt.s $f0, $f12 +/* 07C2B0 7F047740 00000000 */ nop +/* 07C2B4 7F047744 45020016 */ bc1fl .Ljp7F0477A0 +/* 07C2B8 7F047748 460A5000 */ add.s $f0, $f10, $f10 +/* 07C2BC 7F04774C 4608103C */ c.lt.s $f2, $f8 +/* 07C2C0 7F047750 00000000 */ nop +/* 07C2C4 7F047754 45020012 */ bc1fl .Ljp7F0477A0 +/* 07C2C8 7F047758 460A5000 */ add.s $f0, $f10, $f10 +/* 07C2CC 7F04775C 4602003C */ c.lt.s $f0, $f2 +/* 07C2D0 7F047760 240A0001 */ li $t2, 1 +/* 07C2D4 7F047764 4502000E */ bc1fl .Ljp7F0477A0 +/* 07C2D8 7F047768 460A5000 */ add.s $f0, $f10, $f10 +/* 07C2DC 7F04776C AE0A00D0 */ sw $t2, 0xd0($s0) +/* 07C2E0 7F047770 8FAD04A8 */ lw $t5, 0x4a8($sp) +/* 07C2E4 7F047774 240F0001 */ li $t7, 1 +/* 07C2E8 7F047778 AFAF04AC */ sw $t7, 0x4ac($sp) +/* 07C2EC 7F04777C 11A0002F */ beqz $t5, .Ljp7F04783C +/* 07C2F0 7F047780 3C198005 */ lui $t9, %hi(global_timer) # $t9, 0x8005 +/* 07C2F4 7F047784 8F3983AC */ lw $t9, %lo(global_timer)($t9) +/* 07C2F8 7F047788 3C188005 */ lui $t8, %hi(global_timer) # $t8, 0x8005 +/* 07C2FC 7F04778C AE1900B8 */ sw $t9, 0xb8($s0) +/* 07C300 7F047790 8F1883AC */ lw $t8, %lo(global_timer)($t8) +/* 07C304 7F047794 10000029 */ b .Ljp7F04783C +/* 07C308 7F047798 AE1800BC */ sw $t8, 0xbc($s0) +/* 07C30C 7F04779C 460A5000 */ add.s $f0, $f10, $f10 +.Ljp7F0477A0: +/* 07C310 7F0477A0 4600603C */ c.lt.s $f12, $f0 +/* 07C314 7F0477A4 00000000 */ nop +/* 07C318 7F0477A8 45020018 */ bc1fl .Ljp7F04780C +/* 07C31C 7F0477AC 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07C320 7F0477B0 46000387 */ neg.s $f14, $f0 +/* 07C324 7F0477B4 460C703C */ c.lt.s $f14, $f12 +/* 07C328 7F0477B8 00000000 */ nop +/* 07C32C 7F0477BC 45020013 */ bc1fl .Ljp7F04780C +/* 07C330 7F0477C0 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07C334 7F0477C4 4600103C */ c.lt.s $f2, $f0 +/* 07C338 7F0477C8 00000000 */ nop +/* 07C33C 7F0477CC 4502000F */ bc1fl .Ljp7F04780C +/* 07C340 7F0477D0 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07C344 7F0477D4 4602703C */ c.lt.s $f14, $f2 +/* 07C348 7F0477D8 24080001 */ li $t0, 1 +/* 07C34C 7F0477DC 4502000B */ bc1fl .Ljp7F04780C +/* 07C350 7F0477E0 8E0200B8 */ lw $v0, 0xb8($s0) +/* 07C354 7F0477E4 AE0800D0 */ sw $t0, 0xd0($s0) +/* 07C358 7F0477E8 8FAB04A8 */ lw $t3, 0x4a8($sp) +/* 07C35C 7F0477EC 24090001 */ li $t1, 1 +/* 07C360 7F0477F0 AFA904AC */ sw $t1, 0x4ac($sp) +/* 07C364 7F0477F4 11600011 */ beqz $t3, .Ljp7F04783C +/* 07C368 7F0477F8 3C0C8005 */ lui $t4, %hi(global_timer) # $t4, 0x8005 +/* 07C36C 7F0477FC 8D8C83AC */ lw $t4, %lo(global_timer)($t4) +/* 07C370 7F047800 1000000E */ b .Ljp7F04783C +/* 07C374 7F047804 AE0C00B8 */ sw $t4, 0xb8($s0) +/* 07C378 7F047808 8E0200B8 */ lw $v0, 0xb8($s0) +.Ljp7F04780C: +/* 07C37C 7F04780C 3C0E8005 */ lui $t6, %hi(global_timer) # $t6, 0x8005 +/* 07C380 7F047810 0442000B */ bltzl $v0, .Ljp7F047840 +/* 07C384 7F047814 8FB904AC */ lw $t9, 0x4ac($sp) +/* 07C388 7F047818 8DCE83AC */ lw $t6, %lo(global_timer)($t6) +/* 07C38C 7F04781C 240F0001 */ li $t7, 1 +/* 07C390 7F047820 240D0001 */ li $t5, 1 +/* 07C394 7F047824 25CAFF88 */ addiu $t2, $t6, -0x78 +/* 07C398 7F047828 0142082A */ slt $at, $t2, $v0 +/* 07C39C 7F04782C 50200004 */ beql $at, $zero, .Ljp7F047840 +/* 07C3A0 7F047830 8FB904AC */ lw $t9, 0x4ac($sp) +/* 07C3A4 7F047834 AE0F00D0 */ sw $t7, 0xd0($s0) +/* 07C3A8 7F047838 AFAD04AC */ sw $t5, 0x4ac($sp) +.Ljp7F04783C: +/* 07C3AC 7F04783C 8FB904AC */ lw $t9, 0x4ac($sp) +.Ljp7F047840: +/* 07C3B0 7F047840 3C018005 */ lui $at, %hi(D_80052B3C) # $at, 0x8005 +/* 07C3B4 7F047844 53200013 */ beql $t9, $zero, .Ljp7F047894 +/* 07C3B8 7F047848 C60200B0 */ lwc1 $f2, 0xb0($s0) +/* 07C3BC 7F04784C C4202B6C */ lwc1 $f0, %lo(D_80052B3C)($at) +/* 07C3C0 7F047850 3C018005 */ lui $at, %hi(D_80052B40) # $at, 0x8005 +/* 07C3C4 7F047854 C4262B70 */ lwc1 $f6, %lo(D_80052B40)($at) +/* 07C3C8 7F047858 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07C3CC 7F04785C C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07C3D0 7F047860 C60A00B0 */ lwc1 $f10, 0xb0($s0) +/* 07C3D4 7F047864 46043202 */ mul.s $f8, $f6, $f4 +/* 07C3D8 7F047868 46085180 */ add.s $f6, $f10, $f8 +/* 07C3DC 7F04786C E60600B0 */ swc1 $f6, 0xb0($s0) +/* 07C3E0 7F047870 C60200B0 */ lwc1 $f2, 0xb0($s0) +/* 07C3E4 7F047874 4602003C */ c.lt.s $f0, $f2 +/* 07C3E8 7F047878 00000000 */ nop +/* 07C3EC 7F04787C 45020023 */ bc1fl .Ljp7F04790C +/* 07C3F0 7F047880 4602B03C */ c.lt.s $f22, $f2 +/* 07C3F4 7F047884 E60000B0 */ swc1 $f0, 0xb0($s0) +/* 07C3F8 7F047888 1000001F */ b .Ljp7F047908 +/* 07C3FC 7F04788C C60200B0 */ lwc1 $f2, 0xb0($s0) +/* 07C400 7F047890 C60200B0 */ lwc1 $f2, 0xb0($s0) +.Ljp7F047894: +/* 07C404 7F047894 3C188005 */ lui $t8, %hi(clock_timer) # $t8, 0x8005 +/* 07C408 7F047898 4602B03C */ c.lt.s $f22, $f2 +/* 07C40C 7F04789C 00000000 */ nop +/* 07C410 7F0478A0 4502001A */ bc1fl .Ljp7F04790C +/* 07C414 7F0478A4 4602B03C */ c.lt.s $f22, $f2 +/* 07C418 7F0478A8 8F1883A4 */ lw $t8, %lo(clock_timer)($t8) +/* 07C41C 7F0478AC 00001025 */ move $v0, $zero +/* 07C420 7F0478B0 3C018005 */ lui $at, %hi(D_80052B44) # $at, 0x8005 +/* 07C424 7F0478B4 1B00000C */ blez $t8, .Ljp7F0478E8 +/* 07C428 7F0478B8 00000000 */ nop +/* 07C42C 7F0478BC C4202B74 */ lwc1 $f0, %lo(D_80052B44)($at) +/* 07C430 7F0478C0 C60400B0 */ lwc1 $f4, 0xb0($s0) +.Ljp7F0478C4: +/* 07C434 7F0478C4 3C088005 */ lui $t0, %hi(clock_timer) # $t0, 0x8005 +/* 07C438 7F0478C8 24420001 */ addiu $v0, $v0, 1 +/* 07C43C 7F0478CC 46002282 */ mul.s $f10, $f4, $f0 +/* 07C440 7F0478D0 E60A00B0 */ swc1 $f10, 0xb0($s0) +/* 07C444 7F0478D4 8D0883A4 */ lw $t0, %lo(clock_timer)($t0) +/* 07C448 7F0478D8 0048082A */ slt $at, $v0, $t0 +/* 07C44C 7F0478DC 5420FFF9 */ bnezl $at, .Ljp7F0478C4 +/* 07C450 7F0478E0 C60400B0 */ lwc1 $f4, 0xb0($s0) +/* 07C454 7F0478E4 C60200B0 */ lwc1 $f2, 0xb0($s0) +.Ljp7F0478E8: +/* 07C458 7F0478E8 3C018005 */ lui $at, %hi(D_80052B48) # $at, 0x8005 +/* 07C45C 7F0478EC C4282B78 */ lwc1 $f8, %lo(D_80052B48)($at) +/* 07C460 7F0478F0 4608103E */ c.le.s $f2, $f8 +/* 07C464 7F0478F4 00000000 */ nop +/* 07C468 7F0478F8 45020004 */ bc1fl .Ljp7F04790C +/* 07C46C 7F0478FC 4602B03C */ c.lt.s $f22, $f2 +/* 07C470 7F047900 E61600B0 */ swc1 $f22, 0xb0($s0) +/* 07C474 7F047904 C60200B0 */ lwc1 $f2, 0xb0($s0) +.Ljp7F047908: +/* 07C478 7F047908 4602B03C */ c.lt.s $f22, $f2 +.Ljp7F04790C: +/* 07C47C 7F04790C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07C480 7F047910 45020348 */ bc1fl .Ljp7F048634 +/* 07C484 7F047914 92220003 */ lbu $v0, 3($s1) +/* 07C488 7F047918 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07C48C 7F04791C C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07C490 7F047920 46041282 */ mul.s $f10, $f2, $f4 +/* 07C494 7F047924 460A3200 */ add.s $f8, $f6, $f10 +/* 07C498 7F047928 E60800B4 */ swc1 $f8, 0xb4($s0) +/* 07C49C 7F04792C C60000B4 */ lwc1 $f0, 0xb4($s0) +/* 07C4A0 7F047930 4600A03E */ c.le.s $f20, $f0 +/* 07C4A4 7F047934 00000000 */ nop +/* 07C4A8 7F047938 4502033E */ bc1fl .Ljp7F048634 +/* 07C4AC 7F04793C 92220003 */ lbu $v0, 3($s1) +/* 07C4B0 7F047940 46140101 */ sub.s $f4, $f0, $f20 +.Ljp7F047944: +/* 07C4B4 7F047944 E60400B4 */ swc1 $f4, 0xb4($s0) +/* 07C4B8 7F047948 C60000B4 */ lwc1 $f0, 0xb4($s0) +/* 07C4BC 7F04794C 4600A03E */ c.le.s $f20, $f0 +/* 07C4C0 7F047950 00000000 */ nop +/* 07C4C4 7F047954 4503FFFB */ bc1tl .Ljp7F047944 +/* 07C4C8 7F047958 46140101 */ sub.s $f4, $f0, $f20 +/* 07C4CC 7F04795C 10000335 */ b .Ljp7F048634 +/* 07C4D0 7F047960 92220003 */ lbu $v0, 3($s1) +/* 07C4D4 7F047964 24010027 */ li $at, 39 +.Ljp7F047968: +/* 07C4D8 7F047968 14410255 */ bne $v0, $at, .Ljp7F0482C0 +/* 07C4DC 7F04796C 02202025 */ move $a0, $s1 +/* 07C4E0 7F047970 C62600A0 */ lwc1 $f6, 0xa0($s1) +/* 07C4E4 7F047974 AFA0047C */ sw $zero, 0x47c($sp) +/* 07C4E8 7F047978 24050001 */ li $a1, 1 +/* 07C4EC 7F04797C 0FC0D5E1 */ jal parse_handle_actionblocks +/* 07C4F0 7F047980 E7A60480 */ swc1 $f6, 0x480($sp) +/* 07C4F4 7F047984 C62E0098 */ lwc1 $f14, 0x98($s1) +/* 07C4F8 7F047988 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07C4FC 7F04798C 460EB03E */ c.le.s $f22, $f14 +/* 07C500 7F047990 00000000 */ nop +/* 07C504 7F047994 45020016 */ bc1fl .Ljp7F0479F0 +/* 07C508 7F047998 8E29000C */ lw $t1, 0xc($s1) +/* 07C50C 7F04799C C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07C510 7F0479A0 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07C514 7F0479A4 4602703E */ c.le.s $f14, $f2 +/* 07C518 7F0479A8 00000000 */ nop +/* 07C51C 7F0479AC 45020006 */ bc1fl .Ljp7F0479C8 +/* 07C520 7F0479B0 C6200088 */ lwc1 $f0, 0x88($s1) +/* 07C524 7F0479B4 C62A0094 */ lwc1 $f10, 0x94($s1) +/* 07C528 7F0479B8 C62E0098 */ lwc1 $f14, 0x98($s1) +/* 07C52C 7F0479BC 10000008 */ b .Ljp7F0479E0 +/* 07C530 7F0479C0 E62A0088 */ swc1 $f10, 0x88($s1) +/* 07C534 7F0479C4 C6200088 */ lwc1 $f0, 0x88($s1) +.Ljp7F0479C8: +/* 07C538 7F0479C8 C6280094 */ lwc1 $f8, 0x94($s1) +/* 07C53C 7F0479CC 46004101 */ sub.s $f4, $f8, $f0 +/* 07C540 7F0479D0 46022182 */ mul.s $f6, $f4, $f2 +/* 07C544 7F0479D4 460E3283 */ div.s $f10, $f6, $f14 +/* 07C548 7F0479D8 460A0200 */ add.s $f8, $f0, $f10 +/* 07C54C 7F0479DC E6280088 */ swc1 $f8, 0x88($s1) +.Ljp7F0479E0: +/* 07C550 7F0479E0 C42483B4 */ lwc1 $f4, %lo(global_timer_delta)($at) +/* 07C554 7F0479E4 46047181 */ sub.s $f6, $f14, $f4 +/* 07C558 7F0479E8 E6260098 */ swc1 $f6, 0x98($s1) +/* 07C55C 7F0479EC 8E29000C */ lw $t1, 0xc($s1) +.Ljp7F0479F0: +/* 07C560 7F0479F0 00008025 */ move $s0, $zero +/* 07C564 7F0479F4 00095B00 */ sll $t3, $t1, 0xc +/* 07C568 7F0479F8 05600014 */ bltz $t3, .Ljp7F047A4C +/* 07C56C 7F0479FC 00000000 */ nop +/* 07C570 7F047A00 0FC13CCE */ jal check_if_object_has_not_been_destroyed +/* 07C574 7F047A04 02202025 */ move $a0, $s1 +/* 07C578 7F047A08 10400010 */ beqz $v0, .Ljp7F047A4C +/* 07C57C 7F047A0C 00000000 */ nop +/* 07C580 7F047A10 C62A0088 */ lwc1 $f10, 0x88($s1) +/* 07C584 7F047A14 26240058 */ addiu $a0, $s1, 0x58 +/* 07C588 7F047A18 3C0544FA */ lui $a1, 0x44fa +/* 07C58C 7F047A1C 460AB03C */ c.lt.s $f22, $f10 +/* 07C590 7F047A20 3C06453B */ lui $a2, (0x453B8000 >> 16) # lui $a2, 0x453b +/* 07C594 7F047A24 45010006 */ bc1t .Ljp7F047A40 +/* 07C598 7F047A28 00000000 */ nop +/* 07C59C 7F047A2C C6280094 */ lwc1 $f8, 0x94($s1) +/* 07C5A0 7F047A30 4608B03C */ c.lt.s $f22, $f8 +/* 07C5A4 7F047A34 00000000 */ nop +/* 07C5A8 7F047A38 45000004 */ bc1f .Ljp7F047A4C +/* 07C5AC 7F047A3C 00000000 */ nop +.Ljp7F047A40: +/* 07C5B0 7F047A40 0FC14F64 */ jal sub_GAME_7F053894 +/* 07C5B4 7F047A44 34C68000 */ ori $a2, (0x453B8000 & 0xFFFF) # ori $a2, $a2, 0x8000 +/* 07C5B8 7F047A48 00408025 */ move $s0, $v0 +.Ljp7F047A4C: +/* 07C5BC 7F047A4C 5A000019 */ blezl $s0, .Ljp7F047AB4 +/* 07C5C0 7F047A50 8E2400AC */ lw $a0, 0xac($s1) +/* 07C5C4 7F047A54 8E2400AC */ lw $a0, 0xac($s1) +/* 07C5C8 7F047A58 10800005 */ beqz $a0, .Ljp7F047A70 +/* 07C5CC 7F047A5C 00000000 */ nop +/* 07C5D0 7F047A60 0C002380 */ jal sfxGetArg0Unk3F +/* 07C5D4 7F047A64 00000000 */ nop +/* 07C5D8 7F047A68 5440000A */ bnezl $v0, .Ljp7F047A94 +/* 07C5DC 7F047A6C 8E2400AC */ lw $a0, 0xac($s1) +.Ljp7F047A70: +/* 07C5E0 7F047A70 0FC3021B */ jal get_controls_locked_flag +/* 07C5E4 7F047A74 00000000 */ nop +/* 07C5E8 7F047A78 14400005 */ bnez $v0, .Ljp7F047A90 +/* 07C5EC 7F047A7C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07C5F0 7F047A80 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07C5F4 7F047A84 24050041 */ li $a1, 65 +/* 07C5F8 7F047A88 0C002386 */ jal play_sfx_a1 +/* 07C5FC 7F047A8C 262600AC */ addiu $a2, $s1, 0xac +.Ljp7F047A90: +/* 07C600 7F047A90 8E2400AC */ lw $a0, 0xac($s1) +.Ljp7F047A94: +/* 07C604 7F047A94 24050008 */ li $a1, 8 +/* 07C608 7F047A98 5080000F */ beql $a0, $zero, .Ljp7F047AD8 +/* 07C60C 7F047A9C 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C610 7F047AA0 0C002465 */ jal sfx_c_70009184 +/* 07C614 7F047AA4 02003025 */ move $a2, $s0 +/* 07C618 7F047AA8 1000000B */ b .Ljp7F047AD8 +/* 07C61C 7F047AAC 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C620 7F047AB0 8E2400AC */ lw $a0, 0xac($s1) +.Ljp7F047AB4: +/* 07C624 7F047AB4 50800008 */ beql $a0, $zero, .Ljp7F047AD8 +/* 07C628 7F047AB8 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C62C 7F047ABC 0C002380 */ jal sfxGetArg0Unk3F +/* 07C630 7F047AC0 00000000 */ nop +/* 07C634 7F047AC4 50400004 */ beql $v0, $zero, .Ljp7F047AD8 +/* 07C638 7F047AC8 8E2400A4 */ lw $a0, 0xa4($s1) +/* 07C63C 7F047ACC 0C00240C */ jal sfxDeactivate +/* 07C640 7F047AD0 8E2400AC */ lw $a0, 0xac($s1) +/* 07C644 7F047AD4 8E2400A4 */ lw $a0, 0xa4($s1) +.Ljp7F047AD8: +/* 07C648 7F047AD8 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) # $a1, 0x8007 +/* 07C64C 7F047ADC 5080002A */ beql $a0, $zero, .Ljp7F047B88 +/* 07C650 7F047AE0 8E2F0008 */ lw $t7, 8($s1) +/* 07C654 7F047AE4 8E2E00A8 */ lw $t6, 0xa8($s1) +/* 07C658 7F047AE8 8C8C0000 */ lw $t4, ($a0) +/* 07C65C 7F047AEC 24A55D40 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d40 +/* 07C660 7F047AF0 000E5080 */ sll $t2, $t6, 2 +/* 07C664 7F047AF4 018A1021 */ addu $v0, $t4, $t2 +/* 07C668 7F047AF8 8C4F0000 */ lw $t7, ($v0) +/* 07C66C 7F047AFC 8CB90000 */ lw $t9, ($a1) +/* 07C670 7F047B00 8CA90018 */ lw $t1, 0x18($a1) +/* 07C674 7F047B04 000F6900 */ sll $t5, $t7, 4 +/* 07C678 7F047B08 01B91821 */ addu $v1, $t5, $t9 +/* 07C67C 7F047B0C 8C780000 */ lw $t8, ($v1) +/* 07C680 7F047B10 C6260058 */ lwc1 $f6, 0x58($s1) +/* 07C684 7F047B14 C6280060 */ lwc1 $f8, 0x60($s1) +/* 07C688 7F047B18 00184080 */ sll $t0, $t8, 2 +/* 07C68C 7F047B1C 01184023 */ subu $t0, $t0, $t8 +/* 07C690 7F047B20 00084080 */ sll $t0, $t0, 2 +/* 07C694 7F047B24 01184023 */ subu $t0, $t0, $t8 +/* 07C698 7F047B28 00084080 */ sll $t0, $t0, 2 +/* 07C69C 7F047B2C 01093021 */ addu $a2, $t0, $t1 +/* 07C6A0 7F047B30 C4C40000 */ lwc1 $f4, ($a2) +/* 07C6A4 7F047B34 C4CA0008 */ lwc1 $f10, 8($a2) +/* 07C6A8 7F047B38 AFA6047C */ sw $a2, 0x47c($sp) +/* 07C6AC 7F047B3C 46062301 */ sub.s $f12, $f4, $f6 +/* 07C6B0 7F047B40 0FC16BD4 */ jal convert_angle_using_inverse +/* 07C6B4 7F047B44 46085381 */ sub.s $f14, $f10, $f8 +/* 07C6B8 7F047B48 E7A00480 */ swc1 $f0, 0x480($sp) +/* 07C6BC 7F047B4C 8E2B0008 */ lw $t3, 8($s1) +/* 07C6C0 7F047B50 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff +/* 07C6C4 7F047B54 C7A40480 */ lwc1 $f4, 0x480($sp) +/* 07C6C8 7F047B58 000B7080 */ sll $t6, $t3, 2 +/* 07C6CC 7F047B5C 05C10018 */ bgez $t6, .Ljp7F047BC0 +/* 07C6D0 7F047B60 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 07C6D4 7F047B64 8E2C0008 */ lw $t4, 8($s1) +/* 07C6D8 7F047B68 E62400A0 */ swc1 $f4, 0xa0($s1) +/* 07C6DC 7F047B6C 02202025 */ move $a0, $s1 +/* 07C6E0 7F047B70 01815024 */ and $t2, $t4, $at +/* 07C6E4 7F047B74 0FC113C3 */ jal sub_GAME_7F044B38 +/* 07C6E8 7F047B78 AE2A0008 */ sw $t2, 8($s1) +/* 07C6EC 7F047B7C 10000011 */ b .Ljp7F047BC4 +/* 07C6F0 7F047B80 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07C6F4 7F047B84 8E2F0008 */ lw $t7, 8($s1) +.Ljp7F047B88: +/* 07C6F8 7F047B88 000F6880 */ sll $t5, $t7, 2 +/* 07C6FC 7F047B8C 05A3000D */ bgezl $t5, .Ljp7F047BC4 +/* 07C700 7F047B90 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07C704 7F047B94 C62C0038 */ lwc1 $f12, 0x38($s1) +/* 07C708 7F047B98 0FC16BD4 */ jal convert_angle_using_inverse +/* 07C70C 7F047B9C C62E0040 */ lwc1 $f14, 0x40($s1) +/* 07C710 7F047BA0 8E390008 */ lw $t9, 8($s1) +/* 07C714 7F047BA4 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff +/* 07C718 7F047BA8 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 07C71C 7F047BAC 0321C024 */ and $t8, $t9, $at +/* 07C720 7F047BB0 E62000A0 */ swc1 $f0, 0xa0($s1) +/* 07C724 7F047BB4 AE380008 */ sw $t8, 8($s1) +/* 07C728 7F047BB8 0FC113C3 */ jal sub_GAME_7F044B38 +/* 07C72C 7F047BBC 02202025 */ move $a0, $s1 +.Ljp7F047BC0: +/* 07C730 7F047BC0 C6260088 */ lwc1 $f6, 0x88($s1) +.Ljp7F047BC4: +/* 07C734 7F047BC4 4606B03C */ c.lt.s $f22, $f6 +/* 07C738 7F047BC8 00000000 */ nop +/* 07C73C 7F047BCC 450201AC */ bc1fl .Ljp7F048280 +/* 07C740 7F047BD0 8E2A0008 */ lw $t2, 8($s1) +/* 07C744 7F047BD4 8E680014 */ lw $t0, 0x14($s3) +/* 07C748 7F047BD8 8FA9047C */ lw $t1, 0x47c($sp) +/* 07C74C 7F047BDC 4600B386 */ mov.s $f14, $f22 +/* 07C750 7F047BE0 AFA8046C */ sw $t0, 0x46c($sp) +/* 07C754 7F047BE4 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C758 7F047BE8 E7AC043C */ swc1 $f12, 0x43c($sp) +/* 07C75C 7F047BEC C62A009C */ lwc1 $f10, 0x9c($s1) +/* 07C760 7F047BF0 11200013 */ beqz $t1, .Ljp7F047C40 +/* 07C764 7F047BF4 E7AA0438 */ swc1 $f10, 0x438($sp) +/* 07C768 7F047BF8 262B0058 */ addiu $t3, $s1, 0x58 +/* 07C76C 7F047BFC AFAB0074 */ sw $t3, 0x74($sp) +/* 07C770 7F047C00 0FC160F3 */ jal sinf +/* 07C774 7F047C04 E7AE0434 */ swc1 $f14, 0x434($sp) +/* 07C778 7F047C08 E7A00440 */ swc1 $f0, 0x440($sp) +/* 07C77C 7F047C0C E7B60444 */ swc1 $f22, 0x444($sp) +/* 07C780 7F047C10 0FC160F0 */ jal cosf +/* 07C784 7F047C14 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C788 7F047C18 E7A00448 */ swc1 $f0, 0x448($sp) +/* 07C78C 7F047C1C 8FA40074 */ lw $a0, 0x74($sp) +/* 07C790 7F047C20 27A50440 */ addiu $a1, $sp, 0x440 +/* 07C794 7F047C24 8FA6047C */ lw $a2, 0x47c($sp) +/* 07C798 7F047C28 0FC0BFCD */ jal sub_GAME_7F02FC34 +/* 07C79C 7F047C2C 3C074120 */ lui $a3, 0x4120 +/* 07C7A0 7F047C30 10400003 */ beqz $v0, .Ljp7F047C40 +/* 07C7A4 7F047C34 C7AE0434 */ lwc1 $f14, 0x434($sp) +/* 07C7A8 7F047C38 C62800A0 */ lwc1 $f8, 0xa0($s1) +/* 07C7AC 7F047C3C E7A80480 */ swc1 $f8, 0x480($sp) +.Ljp7F047C40: +/* 07C7B0 7F047C40 3C018005 */ lui $at, %hi(D_80052B4C) # $at, 0x8005 +/* 07C7B4 7F047C44 C4242B7C */ lwc1 $f4, %lo(D_80052B4C)($at) +/* 07C7B8 7F047C48 3C018005 */ lui $at, %hi(D_80052B50) # $at, 0x8005 +/* 07C7BC 7F047C4C C4262B80 */ lwc1 $f6, %lo(D_80052B50)($at) +/* 07C7C0 7F047C50 3C0738E4 */ lui $a3, (0x38E4C389 >> 16) # lui $a3, 0x38e4 +/* 07C7C4 7F047C54 34E7C389 */ ori $a3, (0x38E4C389 & 0xFFFF) # ori $a3, $a3, 0xc389 +/* 07C7C8 7F047C58 262400A0 */ addiu $a0, $s1, 0xa0 +/* 07C7CC 7F047C5C 8FA50480 */ lw $a1, 0x480($sp) +/* 07C7D0 7F047C60 2626009C */ addiu $a2, $s1, 0x9c +/* 07C7D4 7F047C64 E7AE0434 */ swc1 $f14, 0x434($sp) +/* 07C7D8 7F047C68 E7A40010 */ swc1 $f4, 0x10($sp) +/* 07C7DC 7F047C6C 0FC10D03 */ jal sub_GAME_7F04310C +/* 07C7E0 7F047C70 E7A60014 */ swc1 $f6, 0x14($sp) +/* 07C7E4 7F047C74 3C018005 */ lui $at, %hi(D_80052B54) # $at, 0x8005 +/* 07C7E8 7F047C78 C4342B84 */ lwc1 $f20, %lo(D_80052B54)($at) +/* 07C7EC 7F047C7C C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C7F0 7F047C80 C7AE0434 */ lwc1 $f14, 0x434($sp) +/* 07C7F4 7F047C84 3C018005 */ lui $at, %hi(D_80052B58) # $at, 0x8005 +/* 07C7F8 7F047C88 460CA03E */ c.le.s $f20, $f12 +/* 07C7FC 7F047C8C 00000000 */ nop +/* 07C800 7F047C90 45020009 */ bc1fl .Ljp7F047CB8 +/* 07C804 7F047C94 4616603C */ c.lt.s $f12, $f22 +/* 07C808 7F047C98 46146281 */ sub.s $f10, $f12, $f20 +.Ljp7F047C9C: +/* 07C80C 7F047C9C E62A00A0 */ swc1 $f10, 0xa0($s1) +/* 07C810 7F047CA0 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C814 7F047CA4 460CA03E */ c.le.s $f20, $f12 +/* 07C818 7F047CA8 00000000 */ nop +/* 07C81C 7F047CAC 4503FFFB */ bc1tl .Ljp7F047C9C +/* 07C820 7F047CB0 46146281 */ sub.s $f10, $f12, $f20 +/* 07C824 7F047CB4 4616603C */ c.lt.s $f12, $f22 +.Ljp7F047CB8: +/* 07C828 7F047CB8 00000000 */ nop +/* 07C82C 7F047CBC 45020009 */ bc1fl .Ljp7F047CE4 +/* 07C830 7F047CC0 C7A40480 */ lwc1 $f4, 0x480($sp) +/* 07C834 7F047CC4 46146200 */ add.s $f8, $f12, $f20 +.Ljp7F047CC8: +/* 07C838 7F047CC8 E62800A0 */ swc1 $f8, 0xa0($s1) +/* 07C83C 7F047CCC C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C840 7F047CD0 4616603C */ c.lt.s $f12, $f22 +/* 07C844 7F047CD4 00000000 */ nop +/* 07C848 7F047CD8 4503FFFB */ bc1tl .Ljp7F047CC8 +/* 07C84C 7F047CDC 46146200 */ add.s $f8, $f12, $f20 +/* 07C850 7F047CE0 C7A40480 */ lwc1 $f4, 0x480($sp) +.Ljp7F047CE4: +/* 07C854 7F047CE4 460C2032 */ c.eq.s $f4, $f12 +/* 07C858 7F047CE8 00000000 */ nop +/* 07C85C 7F047CEC 4502000F */ bc1fl .Ljp7F047D2C +/* 07C860 7F047CF0 8E8E0008 */ lw $t6, 8($s4) +/* 07C864 7F047CF4 C620009C */ lwc1 $f0, 0x9c($s1) +/* 07C868 7F047CF8 C4262B88 */ lwc1 $f6, %lo(D_80052B58)($at) +/* 07C86C 7F047CFC 3C018005 */ lui $at, %hi(D_80052B5C) # $at, 0x8005 +/* 07C870 7F047D00 4606003E */ c.le.s $f0, $f6 +/* 07C874 7F047D04 00000000 */ nop +/* 07C878 7F047D08 45020008 */ bc1fl .Ljp7F047D2C +/* 07C87C 7F047D0C 8E8E0008 */ lw $t6, 8($s4) +/* 07C880 7F047D10 C42A2B8C */ lwc1 $f10, %lo(D_80052B5C)($at) +/* 07C884 7F047D14 4600503E */ c.le.s $f10, $f0 +/* 07C888 7F047D18 00000000 */ nop +/* 07C88C 7F047D1C 45020003 */ bc1fl .Ljp7F047D2C +/* 07C890 7F047D20 8E8E0008 */ lw $t6, 8($s4) +/* 07C894 7F047D24 E636009C */ swc1 $f22, 0x9c($s1) +/* 07C898 7F047D28 8E8E0008 */ lw $t6, 8($s4) +.Ljp7F047D2C: +/* 07C89C 7F047D2C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07C8A0 7F047D30 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07C8A4 7F047D34 8DCC0008 */ lw $t4, 8($t6) +/* 07C8A8 7F047D38 C7A4043C */ lwc1 $f4, 0x43c($sp) +/* 07C8AC 7F047D3C 4602B03C */ c.lt.s $f22, $f2 +/* 07C8B0 7F047D40 8D8A000C */ lw $t2, 0xc($t4) +/* 07C8B4 7F047D44 45000004 */ bc1f .Ljp7F047D58 +/* 07C8B8 7F047D48 8D500004 */ lw $s0, 4($t2) +/* 07C8BC 7F047D4C C62800A0 */ lwc1 $f8, 0xa0($s1) +/* 07C8C0 7F047D50 46044181 */ sub.s $f6, $f8, $f4 +/* 07C8C4 7F047D54 46023383 */ div.s $f14, $f6, $f2 +.Ljp7F047D58: +/* 07C8C8 7F047D58 4616703C */ c.lt.s $f14, $f22 +/* 07C8CC 7F047D5C 00000000 */ nop +/* 07C8D0 7F047D60 45000002 */ bc1f .Ljp7F047D6C +/* 07C8D4 7F047D64 00000000 */ nop +/* 07C8D8 7F047D68 46147380 */ add.s $f14, $f14, $f20 +.Ljp7F047D6C: +/* 07C8DC 7F047D6C 0FC160F3 */ jal sinf +/* 07C8E0 7F047D70 46007306 */ mov.s $f12, $f14 +/* 07C8E4 7F047D74 C60A0008 */ lwc1 $f10, 8($s0) +/* 07C8E8 7F047D78 C6880014 */ lwc1 $f8, 0x14($s4) +/* 07C8EC 7F047D7C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07C8F0 7F047D80 46085102 */ mul.s $f4, $f10, $f8 +/* 07C8F4 7F047D84 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07C8F8 7F047D88 46040182 */ mul.s $f6, $f0, $f4 +/* 07C8FC 7F047D8C 00000000 */ nop +/* 07C900 7F047D90 460A3202 */ mul.s $f8, $f6, $f10 +/* 07C904 7F047D94 E7A80464 */ swc1 $f8, 0x464($sp) +/* 07C908 7F047D98 0FC160F3 */ jal sinf +/* 07C90C 7F047D9C C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C910 7F047DA0 E7A00440 */ swc1 $f0, 0x440($sp) +/* 07C914 7F047DA4 E7B60444 */ swc1 $f22, 0x444($sp) +/* 07C918 7F047DA8 0FC160F0 */ jal cosf +/* 07C91C 7F047DAC C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07C920 7F047DB0 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07C924 7F047DB4 44817000 */ mtc1 $at, $f14 +/* 07C928 7F047DB8 E7A00448 */ swc1 $f0, 0x448($sp) +/* 07C92C 7F047DBC 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07C930 7F047DC0 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07C934 7F047DC4 C6240088 */ lwc1 $f4, 0x88($s1) +/* 07C938 7F047DC8 C7AA0440 */ lwc1 $f10, 0x440($sp) +/* 07C93C 7F047DCC C7AC0464 */ lwc1 $f12, 0x464($sp) +/* 07C940 7F047DD0 46022182 */ mul.s $f6, $f4, $f2 +/* 07C944 7F047DD4 C6240058 */ lwc1 $f4, 0x58($s1) +/* 07C948 7F047DD8 27B0046C */ addiu $s0, $sp, 0x46c +/* 07C94C 7F047DDC 240F001F */ li $t7, 31 +/* 07C950 7F047DE0 02002025 */ move $a0, $s0 +/* 07C954 7F047DE4 460A3202 */ mul.s $f8, $f6, $f10 +/* 07C958 7F047DE8 46082180 */ add.s $f6, $f4, $f8 +/* 07C95C 7F047DEC C7A40448 */ lwc1 $f4, 0x448($sp) +/* 07C960 7F047DF0 460C2202 */ mul.s $f8, $f4, $f12 +/* 07C964 7F047DF4 46083181 */ sub.s $f6, $f6, $f8 +/* 07C968 7F047DF8 E7A6069C */ swc1 $f6, 0x69c($sp) +/* 07C96C 7F047DFC C628005C */ lwc1 $f8, 0x5c($s1) +/* 07C970 7F047E00 44073000 */ mfc1 $a3, $f6 +/* 07C974 7F047E04 E7A806A0 */ swc1 $f8, 0x6a0($sp) +/* 07C978 7F047E08 C6280088 */ lwc1 $f8, 0x88($s1) +/* 07C97C 7F047E0C 46024202 */ mul.s $f8, $f8, $f2 +/* 07C980 7F047E10 00000000 */ nop +/* 07C984 7F047E14 46044202 */ mul.s $f8, $f8, $f4 +/* 07C988 7F047E18 C6240060 */ lwc1 $f4, 0x60($s1) +/* 07C98C 7F047E1C 46082100 */ add.s $f4, $f4, $f8 +/* 07C990 7F047E20 460C5202 */ mul.s $f8, $f10, $f12 +/* 07C994 7F047E24 46044280 */ add.s $f10, $f8, $f4 +/* 07C998 7F047E28 E7AA06A4 */ swc1 $f10, 0x6a4($sp) +/* 07C99C 7F047E2C 8E660010 */ lw $a2, 0x10($s3) +/* 07C9A0 7F047E30 8E650008 */ lw $a1, 8($s3) +/* 07C9A4 7F047E34 E7B60020 */ swc1 $f22, 0x20($sp) +/* 07C9A8 7F047E38 E7B60018 */ swc1 $f22, 0x18($sp) +/* 07C9AC 7F047E3C AFAF0014 */ sw $t7, 0x14($sp) +/* 07C9B0 7F047E40 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07C9B4 7F047E44 E7AE0024 */ swc1 $f14, 0x24($sp) +/* 07C9B8 7F047E48 0FC2C675 */ jal sub_GAME_7F0B0E24 +/* 07C9BC 7F047E4C E7AE001C */ swc1 $f14, 0x1c($sp) +/* 07C9C0 7F047E50 104000FA */ beqz $v0, .Ljp7F04823C +/* 07C9C4 7F047E54 02002025 */ move $a0, $s0 +/* 07C9C8 7F047E58 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07C9CC 7F047E5C 44814000 */ mtc1 $at, $f8 +/* 07C9D0 7F047E60 240D001F */ li $t5, 31 +/* 07C9D4 7F047E64 AFAD0010 */ sw $t5, 0x10($sp) +/* 07C9D8 7F047E68 8FA5069C */ lw $a1, 0x69c($sp) +/* 07C9DC 7F047E6C 8FA606A4 */ lw $a2, 0x6a4($sp) +/* 07C9E0 7F047E70 3C074120 */ lui $a3, 0x4120 +/* 07C9E4 7F047E74 E7B60014 */ swc1 $f22, 0x14($sp) +/* 07C9E8 7F047E78 0FC2C91A */ jal sub_GAME_7F0B18B8 +/* 07C9EC 7F047E7C E7A80018 */ swc1 $f8, 0x18($sp) +/* 07C9F0 7F047E80 044300EF */ bgezl $v0, .Ljp7F048240 +/* 07C9F4 7F047E84 C6260098 */ lwc1 $f6, 0x98($s1) +/* 07C9F8 7F047E88 8E790014 */ lw $t9, 0x14($s3) +/* 07C9FC 7F047E8C 8FB8046C */ lw $t8, 0x46c($sp) +/* 07CA00 7F047E90 02202025 */ move $a0, $s1 +/* 07CA04 7F047E94 AFB90450 */ sw $t9, 0x450($sp) +/* 07CA08 7F047E98 C6640008 */ lwc1 $f4, 8($s3) +/* 07CA0C 7F047E9C E7A40454 */ swc1 $f4, 0x454($sp) +/* 07CA10 7F047EA0 C666000C */ lwc1 $f6, 0xc($s3) +/* 07CA14 7F047EA4 E7A60458 */ swc1 $f6, 0x458($sp) +/* 07CA18 7F047EA8 C66A0010 */ lwc1 $f10, 0x10($s3) +/* 07CA1C 7F047EAC E7AA045C */ swc1 $f10, 0x45c($sp) +/* 07CA20 7F047EB0 AE780014 */ sw $t8, 0x14($s3) +/* 07CA24 7F047EB4 C7A2069C */ lwc1 $f2, 0x69c($sp) +/* 07CA28 7F047EB8 E6620008 */ swc1 $f2, 8($s3) +/* 07CA2C 7F047EBC E6220058 */ swc1 $f2, 0x58($s1) +/* 07CA30 7F047EC0 C7A206A4 */ lwc1 $f2, 0x6a4($sp) +/* 07CA34 7F047EC4 E6620010 */ swc1 $f2, 0x10($s3) +/* 07CA38 7F047EC8 0FC101E1 */ jal sub_GAME_7F040484 +/* 07CA3C 7F047ECC E6220060 */ swc1 $f2, 0x60($s1) +/* 07CA40 7F047ED0 0FC15C68 */ jal sub_GAME_7F056CA0 +/* 07CA44 7F047ED4 02202025 */ move $a0, $s1 +/* 07CA48 7F047ED8 0FC1131F */ jal sub_GAME_7F0448A8 +/* 07CA4C 7F047EDC 02602025 */ move $a0, $s3 +/* 07CA50 7F047EE0 10400092 */ beqz $v0, .Ljp7F04812C +/* 07CA54 7F047EE4 00409025 */ move $s2, $v0 +/* 07CA58 7F047EE8 8E880008 */ lw $t0, 8($s4) +/* 07CA5C 7F047EEC C6280018 */ lwc1 $f8, 0x18($s1) +/* 07CA60 7F047EF0 02002025 */ move $a0, $s0 +/* 07CA64 7F047EF4 8D090008 */ lw $t1, 8($t0) +/* 07CA68 7F047EF8 8D2B0028 */ lw $t3, 0x28($t1) +/* 07CA6C 7F047EFC 8D620004 */ lw $v0, 4($t3) +/* 07CA70 7F047F00 C4440004 */ lwc1 $f4, 4($v0) +/* 07CA74 7F047F04 46044182 */ mul.s $f6, $f8, $f4 +/* 07CA78 7F047F08 E7A60428 */ swc1 $f6, 0x428($sp) +/* 07CA7C 7F047F0C C62A0020 */ lwc1 $f10, 0x20($s1) +/* 07CA80 7F047F10 C4480004 */ lwc1 $f8, 4($v0) +/* 07CA84 7F047F14 46085102 */ mul.s $f4, $f10, $f8 +/* 07CA88 7F047F18 E7A40430 */ swc1 $f4, 0x430($sp) +/* 07CA8C 7F047F1C C6260018 */ lwc1 $f6, 0x18($s1) +/* 07CA90 7F047F20 C44A0008 */ lwc1 $f10, 8($v0) +/* 07CA94 7F047F24 460A3202 */ mul.s $f8, $f6, $f10 +/* 07CA98 7F047F28 E7A8041C */ swc1 $f8, 0x41c($sp) +/* 07CA9C 7F047F2C C6240020 */ lwc1 $f4, 0x20($s1) +/* 07CAA0 7F047F30 C4460008 */ lwc1 $f6, 8($v0) +/* 07CAA4 7F047F34 46062282 */ mul.s $f10, $f4, $f6 +/* 07CAA8 7F047F38 E7AA0424 */ swc1 $f10, 0x424($sp) +/* 07CAAC 7F047F3C C6280038 */ lwc1 $f8, 0x38($s1) +/* 07CAB0 7F047F40 C4440014 */ lwc1 $f4, 0x14($v0) +/* 07CAB4 7F047F44 46044182 */ mul.s $f6, $f8, $f4 +/* 07CAB8 7F047F48 E7A60410 */ swc1 $f6, 0x410($sp) +/* 07CABC 7F047F4C C62A0040 */ lwc1 $f10, 0x40($s1) +/* 07CAC0 7F047F50 C4480014 */ lwc1 $f8, 0x14($v0) +/* 07CAC4 7F047F54 46085102 */ mul.s $f4, $f10, $f8 +/* 07CAC8 7F047F58 E7A40418 */ swc1 $f4, 0x418($sp) +/* 07CACC 7F047F5C C6260038 */ lwc1 $f6, 0x38($s1) +/* 07CAD0 7F047F60 C44A0018 */ lwc1 $f10, 0x18($v0) +/* 07CAD4 7F047F64 460A3202 */ mul.s $f8, $f6, $f10 +/* 07CAD8 7F047F68 E7A80404 */ swc1 $f8, 0x404($sp) +/* 07CADC 7F047F6C C6240040 */ lwc1 $f4, 0x40($s1) +/* 07CAE0 7F047F70 C4460018 */ lwc1 $f6, 0x18($v0) +/* 07CAE4 7F047F74 C7A80410 */ lwc1 $f8, 0x410($sp) +/* 07CAE8 7F047F78 46062282 */ mul.s $f10, $f4, $f6 +/* 07CAEC 7F047F7C C7A40428 */ lwc1 $f4, 0x428($sp) +/* 07CAF0 7F047F80 E7AA040C */ swc1 $f10, 0x40c($sp) +/* 07CAF4 7F047F84 8E6E0014 */ lw $t6, 0x14($s3) +/* 07CAF8 7F047F88 AFAE046C */ sw $t6, 0x46c($sp) +/* 07CAFC 7F047F8C C6600008 */ lwc1 $f0, 8($s3) +/* 07CB00 7F047F90 C6620010 */ lwc1 $f2, 0x10($s3) +/* 07CB04 7F047F94 46040180 */ add.s $f6, $f0, $f4 +/* 07CB08 7F047F98 C7A40418 */ lwc1 $f4, 0x418($sp) +/* 07CB0C 7F047F9C 44050000 */ mfc1 $a1, $f0 +/* 07CB10 7F047FA0 44061000 */ mfc1 $a2, $f2 +/* 07CB14 7F047FA4 46064280 */ add.s $f10, $f8, $f6 +/* 07CB18 7F047FA8 C7A80430 */ lwc1 $f8, 0x430($sp) +/* 07CB1C 7F047FAC 46081180 */ add.s $f6, $f2, $f8 +/* 07CB20 7F047FB0 44075000 */ mfc1 $a3, $f10 +/* 07CB24 7F047FB4 46062280 */ add.s $f10, $f4, $f6 +/* 07CB28 7F047FB8 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 +/* 07CB2C 7F047FBC E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07CB30 7F047FC0 10400059 */ beqz $v0, .Ljp7F048128 +/* 07CB34 7F047FC4 C7A40428 */ lwc1 $f4, 0x428($sp) +/* 07CB38 7F047FC8 C6600008 */ lwc1 $f0, 8($s3) +/* 07CB3C 7F047FCC C7A80410 */ lwc1 $f8, 0x410($sp) +/* 07CB40 7F047FD0 C6620010 */ lwc1 $f2, 0x10($s3) +/* 07CB44 7F047FD4 46040180 */ add.s $f6, $f0, $f4 +/* 07CB48 7F047FD8 C7A40418 */ lwc1 $f4, 0x418($sp) +/* 07CB4C 7F047FDC 02002025 */ move $a0, $s0 +/* 07CB50 7F047FE0 46064280 */ add.s $f10, $f8, $f6 +/* 07CB54 7F047FE4 C7A60430 */ lwc1 $f6, 0x430($sp) +/* 07CB58 7F047FE8 44055000 */ mfc1 $a1, $f10 +/* 07CB5C 7F047FEC 46061280 */ add.s $f10, $f2, $f6 +/* 07CB60 7F047FF0 460A2180 */ add.s $f6, $f4, $f10 +/* 07CB64 7F047FF4 C7AA041C */ lwc1 $f10, 0x41c($sp) +/* 07CB68 7F047FF8 44063000 */ mfc1 $a2, $f6 +/* 07CB6C 7F047FFC 460A0180 */ add.s $f6, $f0, $f10 +/* 07CB70 7F048000 46064280 */ add.s $f10, $f8, $f6 +/* 07CB74 7F048004 C7A80424 */ lwc1 $f8, 0x424($sp) +/* 07CB78 7F048008 46081180 */ add.s $f6, $f2, $f8 +/* 07CB7C 7F04800C 44075000 */ mfc1 $a3, $f10 +/* 07CB80 7F048010 46062280 */ add.s $f10, $f4, $f6 +/* 07CB84 7F048014 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 +/* 07CB88 7F048018 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07CB8C 7F04801C 10400042 */ beqz $v0, .Ljp7F048128 +/* 07CB90 7F048020 C7A4041C */ lwc1 $f4, 0x41c($sp) +/* 07CB94 7F048024 C6680008 */ lwc1 $f8, 8($s3) +/* 07CB98 7F048028 C7A60410 */ lwc1 $f6, 0x410($sp) +/* 07CB9C 7F04802C 02002025 */ move $a0, $s0 +/* 07CBA0 7F048030 46044000 */ add.s $f0, $f8, $f4 +/* 07CBA4 7F048034 C7A40424 */ lwc1 $f4, 0x424($sp) +/* 07CBA8 7F048038 C6680010 */ lwc1 $f8, 0x10($s3) +/* 07CBAC 7F04803C 46003280 */ add.s $f10, $f6, $f0 +/* 07CBB0 7F048040 C7A60418 */ lwc1 $f6, 0x418($sp) +/* 07CBB4 7F048044 46044080 */ add.s $f2, $f8, $f4 +/* 07CBB8 7F048048 44055000 */ mfc1 $a1, $f10 +/* 07CBBC 7F04804C C7A80404 */ lwc1 $f8, 0x404($sp) +/* 07CBC0 7F048050 46023280 */ add.s $f10, $f6, $f2 +/* 07CBC4 7F048054 C7A6040C */ lwc1 $f6, 0x40c($sp) +/* 07CBC8 7F048058 46004100 */ add.s $f4, $f8, $f0 +/* 07CBCC 7F04805C 44065000 */ mfc1 $a2, $f10 +/* 07CBD0 7F048060 46023280 */ add.s $f10, $f6, $f2 +/* 07CBD4 7F048064 44072000 */ mfc1 $a3, $f4 +/* 07CBD8 7F048068 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 +/* 07CBDC 7F04806C E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07CBE0 7F048070 1040002D */ beqz $v0, .Ljp7F048128 +/* 07CBE4 7F048074 C7A4041C */ lwc1 $f4, 0x41c($sp) +/* 07CBE8 7F048078 C6600008 */ lwc1 $f0, 8($s3) +/* 07CBEC 7F04807C C7A80404 */ lwc1 $f8, 0x404($sp) +/* 07CBF0 7F048080 C6620010 */ lwc1 $f2, 0x10($s3) +/* 07CBF4 7F048084 46040180 */ add.s $f6, $f0, $f4 +/* 07CBF8 7F048088 C7A4040C */ lwc1 $f4, 0x40c($sp) +/* 07CBFC 7F04808C 02002025 */ move $a0, $s0 +/* 07CC00 7F048090 46064280 */ add.s $f10, $f8, $f6 +/* 07CC04 7F048094 C7A60424 */ lwc1 $f6, 0x424($sp) +/* 07CC08 7F048098 44055000 */ mfc1 $a1, $f10 +/* 07CC0C 7F04809C 46061280 */ add.s $f10, $f2, $f6 +/* 07CC10 7F0480A0 460A2180 */ add.s $f6, $f4, $f10 +/* 07CC14 7F0480A4 C7AA0428 */ lwc1 $f10, 0x428($sp) +/* 07CC18 7F0480A8 44063000 */ mfc1 $a2, $f6 +/* 07CC1C 7F0480AC 460A0180 */ add.s $f6, $f0, $f10 +/* 07CC20 7F0480B0 46064280 */ add.s $f10, $f8, $f6 +/* 07CC24 7F0480B4 C7A80430 */ lwc1 $f8, 0x430($sp) +/* 07CC28 7F0480B8 46081180 */ add.s $f6, $f2, $f8 +/* 07CC2C 7F0480BC 44075000 */ mfc1 $a3, $f10 +/* 07CC30 7F0480C0 46062280 */ add.s $f10, $f4, $f6 +/* 07CC34 7F0480C4 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 +/* 07CC38 7F0480C8 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07CC3C 7F0480CC 10400016 */ beqz $v0, .Ljp7F048128 +/* 07CC40 7F0480D0 C7A40428 */ lwc1 $f4, 0x428($sp) +/* 07CC44 7F0480D4 C6680008 */ lwc1 $f8, 8($s3) +/* 07CC48 7F0480D8 C7A60404 */ lwc1 $f6, 0x404($sp) +/* 07CC4C 7F0480DC 02002025 */ move $a0, $s0 +/* 07CC50 7F0480E0 46044000 */ add.s $f0, $f8, $f4 +/* 07CC54 7F0480E4 C7A40430 */ lwc1 $f4, 0x430($sp) +/* 07CC58 7F0480E8 C6680010 */ lwc1 $f8, 0x10($s3) +/* 07CC5C 7F0480EC 46003280 */ add.s $f10, $f6, $f0 +/* 07CC60 7F0480F0 C7A6040C */ lwc1 $f6, 0x40c($sp) +/* 07CC64 7F0480F4 46044080 */ add.s $f2, $f8, $f4 +/* 07CC68 7F0480F8 44055000 */ mfc1 $a1, $f10 +/* 07CC6C 7F0480FC C7A80410 */ lwc1 $f8, 0x410($sp) +/* 07CC70 7F048100 46023280 */ add.s $f10, $f6, $f2 +/* 07CC74 7F048104 C7A60418 */ lwc1 $f6, 0x418($sp) +/* 07CC78 7F048108 46004100 */ add.s $f4, $f8, $f0 +/* 07CC7C 7F04810C 44065000 */ mfc1 $a2, $f10 +/* 07CC80 7F048110 46023280 */ add.s $f10, $f6, $f2 +/* 07CC84 7F048114 44072000 */ mfc1 $a3, $f4 +/* 07CC88 7F048118 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 +/* 07CC8C 7F04811C E7AA0010 */ swc1 $f10, 0x10($sp) +/* 07CC90 7F048120 14400002 */ bnez $v0, .Ljp7F04812C +/* 07CC94 7F048124 00000000 */ nop +.Ljp7F048128: +/* 07CC98 7F048128 00009025 */ move $s2, $zero +.Ljp7F04812C: +/* 07CC9C 7F04812C 12400023 */ beqz $s2, .Ljp7F0481BC +/* 07CCA0 7F048130 02202025 */ move $a0, $s1 +/* 07CCA4 7F048134 262C0058 */ addiu $t4, $s1, 0x58 +/* 07CCA8 7F048138 AFAC0074 */ sw $t4, 0x74($sp) +/* 07CCAC 7F04813C 0FC113C3 */ jal sub_GAME_7F044B38 +/* 07CCB0 7F048140 2630007C */ addiu $s0, $s1, 0x7c +/* 07CCB4 7F048144 02602025 */ move $a0, $s3 +/* 07CCB8 7F048148 0FC1016D */ jal sub_GAME_7F0402B4 +/* 07CCBC 7F04814C 02002825 */ move $a1, $s0 +/* 07CCC0 7F048150 0FC14832 */ jal detonate_proxmine_In_range +/* 07CCC4 7F048154 8FA40074 */ lw $a0, 0x74($sp) +/* 07CCC8 7F048158 8FAA047C */ lw $t2, 0x47c($sp) +/* 07CCCC 7F04815C 27A40454 */ addiu $a0, $sp, 0x454 +/* 07CCD0 7F048160 27A5069C */ addiu $a1, $sp, 0x69c +/* 07CCD4 7F048164 11400054 */ beqz $t2, .Ljp7F0482B8 +/* 07CCD8 7F048168 01403025 */ move $a2, $t2 +/* 07CCDC 7F04816C 0FC0C014 */ jal sub_GAME_7F02FD50 +/* 07CCE0 7F048170 3C0742C8 */ lui $a3, 0x42c8 +/* 07CCE4 7F048174 10400050 */ beqz $v0, .Ljp7F0482B8 +/* 07CCE8 7F048178 00000000 */ nop +/* 07CCEC 7F04817C 8E2F00A8 */ lw $t7, 0xa8($s1) +/* 07CCF0 7F048180 8E3900A4 */ lw $t9, 0xa4($s1) +/* 07CCF4 7F048184 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 07CCF8 7F048188 25ED0001 */ addiu $t5, $t7, 1 +/* 07CCFC 7F04818C AE2D00A8 */ sw $t5, 0xa8($s1) +/* 07CD00 7F048190 8F380000 */ lw $t8, ($t9) +/* 07CD04 7F048194 000D4880 */ sll $t1, $t5, 2 +/* 07CD08 7F048198 03095821 */ addu $t3, $t8, $t1 +/* 07CD0C 7F04819C 8D6E0000 */ lw $t6, ($t3) +/* 07CD10 7F0481A0 05C10045 */ bgez $t6, .Ljp7F0482B8 +/* 07CD14 7F0481A4 00000000 */ nop +/* 07CD18 7F0481A8 44814000 */ mtc1 $at, $f8 +/* 07CD1C 7F0481AC AE2000A4 */ sw $zero, 0xa4($s1) +/* 07CD20 7F0481B0 E6360094 */ swc1 $f22, 0x94($s1) +/* 07CD24 7F0481B4 10000040 */ b .Ljp7F0482B8 +/* 07CD28 7F0481B8 E6280098 */ swc1 $f8, 0x98($s1) +.Ljp7F0481BC: +/* 07CD2C 7F0481BC C6240098 */ lwc1 $f4, 0x98($s1) +/* 07CD30 7F0481C0 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 07CD34 7F0481C4 4616203C */ c.lt.s $f4, $f22 +/* 07CD38 7F0481C8 00000000 */ nop +/* 07CD3C 7F0481CC 45020006 */ bc1fl .Ljp7F0481E8 +/* 07CD40 7F0481D0 E6360088 */ swc1 $f22, 0x88($s1) +/* 07CD44 7F0481D4 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07CD48 7F0481D8 44815000 */ mtc1 $at, $f10 +/* 07CD4C 7F0481DC E6260094 */ swc1 $f6, 0x94($s1) +/* 07CD50 7F0481E0 E62A0098 */ swc1 $f10, 0x98($s1) +/* 07CD54 7F0481E4 E6360088 */ swc1 $f22, 0x88($s1) +.Ljp7F0481E8: +/* 07CD58 7F0481E8 C7A8043C */ lwc1 $f8, 0x43c($sp) +/* 07CD5C 7F0481EC 02202025 */ move $a0, $s1 +/* 07CD60 7F0481F0 E62800A0 */ swc1 $f8, 0xa0($s1) +/* 07CD64 7F0481F4 C7A40438 */ lwc1 $f4, 0x438($sp) +/* 07CD68 7F0481F8 E624009C */ swc1 $f4, 0x9c($s1) +/* 07CD6C 7F0481FC 8FAC0450 */ lw $t4, 0x450($sp) +/* 07CD70 7F048200 AE6C0014 */ sw $t4, 0x14($s3) +/* 07CD74 7F048204 C7A20454 */ lwc1 $f2, 0x454($sp) +/* 07CD78 7F048208 E6620008 */ swc1 $f2, 8($s3) +/* 07CD7C 7F04820C E6220058 */ swc1 $f2, 0x58($s1) +/* 07CD80 7F048210 C7A20458 */ lwc1 $f2, 0x458($sp) +/* 07CD84 7F048214 E662000C */ swc1 $f2, 0xc($s3) +/* 07CD88 7F048218 E622005C */ swc1 $f2, 0x5c($s1) +/* 07CD8C 7F04821C C7A2045C */ lwc1 $f2, 0x45c($sp) +/* 07CD90 7F048220 E6620010 */ swc1 $f2, 0x10($s3) +/* 07CD94 7F048224 0FC101E1 */ jal sub_GAME_7F040484 +/* 07CD98 7F048228 E6220060 */ swc1 $f2, 0x60($s1) +/* 07CD9C 7F04822C 0FC15C68 */ jal sub_GAME_7F056CA0 +/* 07CDA0 7F048230 02202025 */ move $a0, $s1 +/* 07CDA4 7F048234 10000020 */ b .Ljp7F0482B8 +/* 07CDA8 7F048238 00000000 */ nop +.Ljp7F04823C: +/* 07CDAC 7F04823C C6260098 */ lwc1 $f6, 0x98($s1) +.Ljp7F048240: +/* 07CDB0 7F048240 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 07CDB4 7F048244 4616303C */ c.lt.s $f6, $f22 +/* 07CDB8 7F048248 00000000 */ nop +/* 07CDBC 7F04824C 45020006 */ bc1fl .Ljp7F048268 +/* 07CDC0 7F048250 E6360088 */ swc1 $f22, 0x88($s1) +/* 07CDC4 7F048254 C62A0088 */ lwc1 $f10, 0x88($s1) +/* 07CDC8 7F048258 44814000 */ mtc1 $at, $f8 +/* 07CDCC 7F04825C E62A0094 */ swc1 $f10, 0x94($s1) +/* 07CDD0 7F048260 E6280098 */ swc1 $f8, 0x98($s1) +/* 07CDD4 7F048264 E6360088 */ swc1 $f22, 0x88($s1) +.Ljp7F048268: +/* 07CDD8 7F048268 C7A4043C */ lwc1 $f4, 0x43c($sp) +/* 07CDDC 7F04826C E62400A0 */ swc1 $f4, 0xa0($s1) +/* 07CDE0 7F048270 C7A60438 */ lwc1 $f6, 0x438($sp) +/* 07CDE4 7F048274 10000010 */ b .Ljp7F0482B8 +/* 07CDE8 7F048278 E626009C */ swc1 $f6, 0x9c($s1) +/* 07CDEC 7F04827C 8E2A0008 */ lw $t2, 8($s1) +.Ljp7F048280: +/* 07CDF0 7F048280 000A7880 */ sll $t7, $t2, 2 +/* 07CDF4 7F048284 05E1000C */ bgez $t7, .Ljp7F0482B8 +/* 07CDF8 7F048288 00000000 */ nop +/* 07CDFC 7F04828C C62C0038 */ lwc1 $f12, 0x38($s1) +/* 07CE00 7F048290 0FC16BD4 */ jal convert_angle_using_inverse +/* 07CE04 7F048294 C62E0040 */ lwc1 $f14, 0x40($s1) +/* 07CE08 7F048298 8E2D0008 */ lw $t5, 8($s1) +/* 07CE0C 7F04829C 3C01DFFF */ lui $at, (0xDFFFFFFF >> 16) # lui $at, 0xdfff +/* 07CE10 7F0482A0 3421FFFF */ ori $at, (0xDFFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 07CE14 7F0482A4 01A1C824 */ and $t9, $t5, $at +/* 07CE18 7F0482A8 E62000A0 */ swc1 $f0, 0xa0($s1) +/* 07CE1C 7F0482AC AE390008 */ sw $t9, 8($s1) +/* 07CE20 7F0482B0 0FC113C3 */ jal sub_GAME_7F044B38 +/* 07CE24 7F0482B4 02202025 */ move $a0, $s1 +.Ljp7F0482B8: +/* 07CE28 7F0482B8 100000DE */ b .Ljp7F048634 +/* 07CE2C 7F0482BC 92220003 */ lbu $v0, 3($s1) +.Ljp7F0482C0: +/* 07CE30 7F0482C0 24010028 */ li $at, 40 +/* 07CE34 7F0482C4 144100DA */ bne $v0, $at, .Ljp7F048630 +/* 07CE38 7F0482C8 02202025 */ move $a0, $s1 +/* 07CE3C 7F0482CC 0FC0D5E1 */ jal parse_handle_actionblocks +/* 07CE40 7F0482D0 24050001 */ li $a1, 1 +/* 07CE44 7F0482D4 8E300014 */ lw $s0, 0x14($s1) +/* 07CE48 7F0482D8 26250058 */ addiu $a1, $s1, 0x58 +/* 07CE4C 7F0482DC 8E080020 */ lw $t0, 0x20($s0) +/* 07CE50 7F0482E0 02002025 */ move $a0, $s0 +/* 07CE54 7F0482E4 51000065 */ beql $t0, $zero, .Ljp7F04847C +/* 07CE58 7F0482E8 C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07CE5C 7F0482EC 0FC1B47F */ jal setsuboffset +/* 07CE60 7F0482F0 AFA50074 */ sw $a1, 0x74($sp) +/* 07CE64 7F0482F4 8E300014 */ lw $s0, 0x14($s1) +/* 07CE68 7F0482F8 3C098003 */ lui $t1, %hi(animation_table_ptrs2+4) # $t1, 0x8003 +/* 07CE6C 7F0482FC 8D29A090 */ lw $t1, %lo(animation_table_ptrs2+4)($t1) +/* 07CE70 7F048300 8E180020 */ lw $t8, 0x20($s0) +/* 07CE74 7F048304 3C054127 */ lui $a1, (0x4127020C >> 16) # lui $a1, 0x4127 +/* 07CE78 7F048308 02002025 */ move $a0, $s0 +/* 07CE7C 7F04830C 17090009 */ bne $t8, $t1, .Ljp7F048334 +/* 07CE80 7F048310 00000000 */ nop +/* 07CE84 7F048314 0FC1B51D */ jal sub_GAME_7F06CE84 +/* 07CE88 7F048318 34A5020C */ ori $a1, (0x4127020C & 0xFFFF) # ori $a1, $a1, 0x20c +/* 07CE8C 7F04831C 3C054049 */ lui $a1, (0x40490FDB >> 16) # lui $a1, 0x4049 +/* 07CE90 7F048320 34A50FDB */ ori $a1, (0x40490FDB & 0xFFFF) # ori $a1, $a1, 0xfdb +/* 07CE94 7F048324 0FC1B4CB */ jal setsubroty +/* 07CE98 7F048328 8E240014 */ lw $a0, 0x14($s1) +/* 07CE9C 7F04832C 10000024 */ b .Ljp7F0483C0 +/* 07CEA0 7F048330 00000000 */ nop +.Ljp7F048334: +/* 07CEA4 7F048334 0C001A57 */ jal get_stage_num +/* 07CEA8 7F048338 00000000 */ nop +/* 07CEAC 7F04833C 24010016 */ li $at, 22 +/* 07CEB0 7F048340 1441000A */ bne $v0, $at, .Ljp7F04836C +/* 07CEB4 7F048344 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 +/* 07CEB8 7F048348 8E240014 */ lw $a0, 0x14($s1) +/* 07CEBC 7F04834C 0FC1B51D */ jal sub_GAME_7F06CE84 +/* 07CEC0 7F048350 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d +/* 07CEC4 7F048354 3C054016 */ lui $a1, (0x4016CBE4 >> 16) # lui $a1, 0x4016 +/* 07CEC8 7F048358 34A5CBE4 */ ori $a1, (0x4016CBE4 & 0xFFFF) # ori $a1, $a1, 0xcbe4 +/* 07CECC 7F04835C 0FC1B4CB */ jal setsubroty +/* 07CED0 7F048360 8E240014 */ lw $a0, 0x14($s1) +/* 07CED4 7F048364 10000016 */ b .Ljp7F0483C0 +/* 07CED8 7F048368 00000000 */ nop +.Ljp7F04836C: +/* 07CEDC 7F04836C 0C001A57 */ jal get_stage_num +/* 07CEE0 7F048370 00000000 */ nop +/* 07CEE4 7F048374 2401001A */ li $at, 26 +/* 07CEE8 7F048378 1441000B */ bne $v0, $at, .Ljp7F0483A8 +/* 07CEEC 7F04837C 3C053F85 */ lui $a1, 0x3f85 +/* 07CEF0 7F048380 3C053F85 */ lui $a1, (0x3F859B3D >> 16) # lui $a1, 0x3f85 +/* 07CEF4 7F048384 34A59B3D */ ori $a1, (0x3F859B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d +/* 07CEF8 7F048388 0FC1B51D */ jal sub_GAME_7F06CE84 +/* 07CEFC 7F04838C 8E240014 */ lw $a0, 0x14($s1) +/* 07CF00 7F048390 3C05407B */ lui $a1, (0x407B9B3D >> 16) # lui $a1, 0x407b +/* 07CF04 7F048394 34A553D1 */ ori $a1, (0x407B53D1 & 0xFFFF) # ori $a1, $a1, 0x53d1 +/* 07CF08 7F048398 0FC1B4CB */ jal setsubroty +/* 07CF0C 7F04839C 8E240014 */ lw $a0, 0x14($s1) +/* 07CF10 7F0483A0 10000007 */ b .Ljp7F0483C0 +/* 07CF14 7F0483A4 00000000 */ nop +.Ljp7F0483A8: +/* 07CF18 7F0483A8 8E240014 */ lw $a0, 0x14($s1) +/* 07CF1C 7F0483AC 0FC1B51D */ jal sub_GAME_7F06CE84 +/* 07CF20 7F0483B0 34A59B3D */ ori $a1, (0x407B9B3D & 0xFFFF) # ori $a1, $a1, 0x9b3d +/* 07CF24 7F0483B4 4405B000 */ mfc1 $a1, $f22 +/* 07CF28 7F0483B8 0FC1B4CB */ jal setsubroty +/* 07CF2C 7F0483BC 8E240014 */ lw $a0, 0x14($s1) +.Ljp7F0483C0: +/* 07CF30 7F0483C0 3C058005 */ lui $a1, %hi(clock_timer) # $a1, 0x8005 +/* 07CF34 7F0483C4 8CA583A4 */ lw $a1, %lo(clock_timer)($a1) +/* 07CF38 7F0483C8 8E240014 */ lw $a0, 0x14($s1) +/* 07CF3C 7F0483CC 0FC1C437 */ jal sub_GAME_7F070AEC +/* 07CF40 7F0483D0 24060001 */ li $a2, 1 +/* 07CF44 7F0483D4 0FC1B728 */ jal subcalcpos +/* 07CF48 7F0483D8 8E240014 */ lw $a0, 0x14($s1) +/* 07CF4C 7F0483DC 8E240014 */ lw $a0, 0x14($s1) +/* 07CF50 7F0483E0 0FC1B462 */ jal getsuboffset +/* 07CF54 7F0483E4 8FA50074 */ lw $a1, 0x74($sp) +/* 07CF58 7F0483E8 C62A0058 */ lwc1 $f10, 0x58($s1) +/* 07CF5C 7F0483EC 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) # $a1, 0x8007 +/* 07CF60 7F0483F0 24A55D40 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d40 +/* 07CF64 7F0483F4 E66A0008 */ swc1 $f10, 8($s3) +/* 07CF68 7F0483F8 C6280060 */ lwc1 $f8, 0x60($s1) +/* 07CF6C 7F0483FC E6680010 */ swc1 $f8, 0x10($s3) +/* 07CF70 7F048400 86220006 */ lh $v0, 6($s1) +/* 07CF74 7F048404 28412710 */ slti $at, $v0, 0x2710 +/* 07CF78 7F048408 1020000B */ beqz $at, .Ljp7F048438 +/* 07CF7C 7F04840C 00026100 */ sll $t4, $v0, 4 +/* 07CF80 7F048410 00025880 */ sll $t3, $v0, 2 +/* 07CF84 7F048414 3C058007 */ lui $a1, %hi(ptr_setup_path_tbl) # $a1, 0x8007 +/* 07CF88 7F048418 01625823 */ subu $t3, $t3, $v0 +/* 07CF8C 7F04841C 24A55D40 */ addiu $a1, %lo(ptr_setup_path_tbl) # addiu $a1, $a1, 0x5d40 +/* 07CF90 7F048420 000B5880 */ sll $t3, $t3, 2 +/* 07CF94 7F048424 8CAE0018 */ lw $t6, 0x18($a1) +/* 07CF98 7F048428 01625823 */ subu $t3, $t3, $v0 +/* 07CF9C 7F04842C 000B5880 */ sll $t3, $t3, 2 +/* 07CFA0 7F048430 10000008 */ b .Ljp7F048454 +/* 07CFA4 7F048434 016E1821 */ addu $v1, $t3, $t6 +.Ljp7F048438: +/* 07CFA8 7F048438 8CAA001C */ lw $t2, 0x1c($a1) +/* 07CFAC 7F04843C 01826021 */ addu $t4, $t4, $v0 +/* 07CFB0 7F048440 000C6080 */ sll $t4, $t4, 2 +/* 07CFB4 7F048444 3C01FFF5 */ lui $at, (0xFFF59FC0 >> 16) # lui $at, 0xfff5 +/* 07CFB8 7F048448 34219FC0 */ ori $at, (0xFFF59FC0 & 0xFFFF) # ori $at, $at, 0x9fc0 +/* 07CFBC 7F04844C 018A1821 */ addu $v1, $t4, $t2 +/* 07CFC0 7F048450 00611821 */ addu $v1, $v1, $at +.Ljp7F048454: +/* 07CFC4 7F048454 C624005C */ lwc1 $f4, 0x5c($s1) +/* 07CFC8 7F048458 C4660004 */ lwc1 $f6, 4($v1) +/* 07CFCC 7F04845C 46062280 */ add.s $f10, $f4, $f6 +/* 07CFD0 7F048460 E66A000C */ swc1 $f10, 0xc($s3) +/* 07CFD4 7F048464 C668000C */ lwc1 $f8, 0xc($s3) +/* 07CFD8 7F048468 8E240014 */ lw $a0, 0x14($s1) +/* 07CFDC 7F04846C E628005C */ swc1 $f8, 0x5c($s1) +/* 07CFE0 7F048470 0FC1B47F */ jal setsuboffset +/* 07CFE4 7F048474 8FA50074 */ lw $a1, 0x74($sp) +/* 07CFE8 7F048478 C62C00A0 */ lwc1 $f12, 0xa0($s1) +.Ljp7F04847C: +/* 07CFEC 7F04847C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07CFF0 7F048480 460CB03E */ c.le.s $f22, $f12 +/* 07CFF4 7F048484 00000000 */ nop +/* 07CFF8 7F048488 45020016 */ bc1fl .Ljp7F0484E4 +/* 07CFFC 7F04848C C6200094 */ lwc1 $f0, 0x94($s1) +/* 07D000 7F048490 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07D004 7F048494 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07D008 7F048498 4602603E */ c.le.s $f12, $f2 +/* 07D00C 7F04849C 00000000 */ nop +/* 07D010 7F0484A0 45020006 */ bc1fl .Ljp7F0484BC +/* 07D014 7F0484A4 C62E0098 */ lwc1 $f14, 0x98($s1) +/* 07D018 7F0484A8 C624009C */ lwc1 $f4, 0x9c($s1) +/* 07D01C 7F0484AC C62C00A0 */ lwc1 $f12, 0xa0($s1) +/* 07D020 7F0484B0 10000008 */ b .Ljp7F0484D4 +/* 07D024 7F0484B4 E6240098 */ swc1 $f4, 0x98($s1) +/* 07D028 7F0484B8 C62E0098 */ lwc1 $f14, 0x98($s1) +.Ljp7F0484BC: +/* 07D02C 7F0484BC C626009C */ lwc1 $f6, 0x9c($s1) +/* 07D030 7F0484C0 460E3281 */ sub.s $f10, $f6, $f14 +/* 07D034 7F0484C4 46025202 */ mul.s $f8, $f10, $f2 +/* 07D038 7F0484C8 460C4103 */ div.s $f4, $f8, $f12 +/* 07D03C 7F0484CC 46047180 */ add.s $f6, $f14, $f4 +/* 07D040 7F0484D0 E6260098 */ swc1 $f6, 0x98($s1) +.Ljp7F0484D4: +/* 07D044 7F0484D4 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07D048 7F0484D8 460A6201 */ sub.s $f8, $f12, $f10 +/* 07D04C 7F0484DC E62800A0 */ swc1 $f8, 0xa0($s1) +/* 07D050 7F0484E0 C6200094 */ lwc1 $f0, 0x94($s1) +.Ljp7F0484E4: +/* 07D054 7F0484E4 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07D058 7F0484E8 4600B03E */ c.le.s $f22, $f0 +/* 07D05C 7F0484EC 00000000 */ nop +/* 07D060 7F0484F0 45020016 */ bc1fl .Ljp7F04854C +/* 07D064 7F0484F4 8E2F000C */ lw $t7, 0xc($s1) +/* 07D068 7F0484F8 C42283B4 */ lwc1 $f2, %lo(global_timer_delta)($at) +/* 07D06C 7F0484FC 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07D070 7F048500 4602003E */ c.le.s $f0, $f2 +/* 07D074 7F048504 00000000 */ nop +/* 07D078 7F048508 45020006 */ bc1fl .Ljp7F048524 +/* 07D07C 7F04850C C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07D080 7F048510 C6240090 */ lwc1 $f4, 0x90($s1) +/* 07D084 7F048514 C6200094 */ lwc1 $f0, 0x94($s1) +/* 07D088 7F048518 10000008 */ b .Ljp7F04853C +/* 07D08C 7F04851C E624008C */ swc1 $f4, 0x8c($s1) +/* 07D090 7F048520 C62C008C */ lwc1 $f12, 0x8c($s1) +.Ljp7F048524: +/* 07D094 7F048524 C6260090 */ lwc1 $f6, 0x90($s1) +/* 07D098 7F048528 460C3281 */ sub.s $f10, $f6, $f12 +/* 07D09C 7F04852C 46025202 */ mul.s $f8, $f10, $f2 +/* 07D0A0 7F048530 46004103 */ div.s $f4, $f8, $f0 +/* 07D0A4 7F048534 46046180 */ add.s $f6, $f12, $f4 +/* 07D0A8 7F048538 E626008C */ swc1 $f6, 0x8c($s1) +.Ljp7F04853C: +/* 07D0AC 7F04853C C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07D0B0 7F048540 460A0201 */ sub.s $f8, $f0, $f10 +/* 07D0B4 7F048544 E6280094 */ swc1 $f8, 0x94($s1) +/* 07D0B8 7F048548 8E2F000C */ lw $t7, 0xc($s1) +.Ljp7F04854C: +/* 07D0BC 7F04854C 00008025 */ move $s0, $zero +/* 07D0C0 7F048550 000F6B00 */ sll $t5, $t7, 0xc +/* 07D0C4 7F048554 05A00014 */ bltz $t5, .Ljp7F0485A8 +/* 07D0C8 7F048558 00000000 */ nop +/* 07D0CC 7F04855C 0FC13CCE */ jal check_if_object_has_not_been_destroyed +/* 07D0D0 7F048560 02202025 */ move $a0, $s1 +/* 07D0D4 7F048564 10400010 */ beqz $v0, .Ljp7F0485A8 +/* 07D0D8 7F048568 00000000 */ nop +/* 07D0DC 7F04856C C624008C */ lwc1 $f4, 0x8c($s1) +/* 07D0E0 7F048570 4604B032 */ c.eq.s $f22, $f4 +/* 07D0E4 7F048574 00000000 */ nop +/* 07D0E8 7F048578 4501000B */ bc1t .Ljp7F0485A8 +/* 07D0EC 7F04857C 00000000 */ nop +/* 07D0F0 7F048580 8E390008 */ lw $t9, 8($s1) +/* 07D0F4 7F048584 3C05459C */ lui $a1, (0x459C4000 >> 16) # lui $a1, 0x459c +/* 07D0F8 7F048588 34A54000 */ ori $a1, (0x459C4000 & 0xFFFF) # ori $a1, $a1, 0x4000 +/* 07D0FC 7F04858C 00194080 */ sll $t0, $t9, 2 +/* 07D100 7F048590 05000005 */ bltz $t0, .Ljp7F0485A8 +/* 07D104 7F048594 26240058 */ addiu $a0, $s1, 0x58 +/* 07D108 7F048598 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb +/* 07D10C 7F04859C 0FC14F64 */ jal sub_GAME_7F053894 +/* 07D110 7F0485A0 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 +/* 07D114 7F0485A4 00408025 */ move $s0, $v0 +.Ljp7F0485A8: +/* 07D118 7F0485A8 5A000019 */ blezl $s0, .Ljp7F048610 +/* 07D11C 7F0485AC 8E2400B0 */ lw $a0, 0xb0($s1) +/* 07D120 7F0485B0 8E2400B0 */ lw $a0, 0xb0($s1) +/* 07D124 7F0485B4 10800005 */ beqz $a0, .Ljp7F0485CC +/* 07D128 7F0485B8 00000000 */ nop +/* 07D12C 7F0485BC 0C002380 */ jal sfxGetArg0Unk3F +/* 07D130 7F0485C0 00000000 */ nop +/* 07D134 7F0485C4 5440000A */ bnezl $v0, .Ljp7F0485F0 +/* 07D138 7F0485C8 8E2400B0 */ lw $a0, 0xb0($s1) +.Ljp7F0485CC: +/* 07D13C 7F0485CC 0FC3021B */ jal get_controls_locked_flag +/* 07D140 7F0485D0 00000000 */ nop +/* 07D144 7F0485D4 14400005 */ bnez $v0, .Ljp7F0485EC +/* 07D148 7F0485D8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07D14C 7F0485DC 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07D150 7F0485E0 2405003A */ li $a1, 58 +/* 07D154 7F0485E4 0C002386 */ jal play_sfx_a1 +/* 07D158 7F0485E8 262600B0 */ addiu $a2, $s1, 0xb0 +.Ljp7F0485EC: +/* 07D15C 7F0485EC 8E2400B0 */ lw $a0, 0xb0($s1) +.Ljp7F0485F0: +/* 07D160 7F0485F0 24050008 */ li $a1, 8 +/* 07D164 7F0485F4 5080000F */ beql $a0, $zero, .Ljp7F048634 +/* 07D168 7F0485F8 92220003 */ lbu $v0, 3($s1) +/* 07D16C 7F0485FC 0C002465 */ jal sfx_c_70009184 +/* 07D170 7F048600 02003025 */ move $a2, $s0 +/* 07D174 7F048604 1000000B */ b .Ljp7F048634 +/* 07D178 7F048608 92220003 */ lbu $v0, 3($s1) +/* 07D17C 7F04860C 8E2400B0 */ lw $a0, 0xb0($s1) +.Ljp7F048610: +/* 07D180 7F048610 50800008 */ beql $a0, $zero, .Ljp7F048634 +/* 07D184 7F048614 92220003 */ lbu $v0, 3($s1) +/* 07D188 7F048618 0C002380 */ jal sfxGetArg0Unk3F +/* 07D18C 7F04861C 00000000 */ nop +/* 07D190 7F048620 50400004 */ beql $v0, $zero, .Ljp7F048634 +/* 07D194 7F048624 92220003 */ lbu $v0, 3($s1) +/* 07D198 7F048628 0C00240C */ jal sfxDeactivate +/* 07D19C 7F04862C 8E2400B0 */ lw $a0, 0xb0($s1) +.Ljp7F048630: +/* 07D1A0 7F048630 92220003 */ lbu $v0, 3($s1) +.Ljp7F048634: +/* 07D1A4 7F048634 3C018005 */ lui $at, %hi(D_80052B64) # $at, 0x8005 +/* 07D1A8 7F048638 C4342B94 */ lwc1 $f20, %lo(D_80052B64)($at) +/* 07D1AC 7F04863C 2401002F */ li $at, 47 +/* 07D1B0 7F048640 54410020 */ bnel $v0, $at, .Ljp7F0486C4 +/* 07D1B4 7F048644 24010001 */ li $at, 1 +/* 07D1B8 7F048648 8E700004 */ lw $s0, 4($s3) +/* 07D1BC 7F04864C 26240058 */ addiu $a0, $s1, 0x58 +/* 07D1C0 7F048650 8E180080 */ lw $t8, 0x80($s0) +/* 07D1C4 7F048654 8E090084 */ lw $t1, 0x84($s0) +/* 07D1C8 7F048658 8E070090 */ lw $a3, 0x90($s0) +/* 07D1CC 7F04865C 44983000 */ mtc1 $t8, $f6 +/* 07D1D0 7F048660 44895000 */ mtc1 $t1, $f10 +/* 07D1D4 7F048664 468031A0 */ cvt.s.w $f6, $f6 +/* 07D1D8 7F048668 468052A0 */ cvt.s.w $f10, $f10 +/* 07D1DC 7F04866C 44053000 */ mfc1 $a1, $f6 +/* 07D1E0 7F048670 44065000 */ mfc1 $a2, $f10 +/* 07D1E4 7F048674 0FC1156C */ jal sub_GAME_7F0451DC +/* 07D1E8 7F048678 00000000 */ nop +/* 07D1EC 7F04867C 8E04008C */ lw $a0, 0x8c($s0) +/* 07D1F0 7F048680 AE020088 */ sw $v0, 0x88($s0) +/* 07D1F4 7F048684 8FAB067C */ lw $t3, 0x67c($sp) +/* 07D1F8 7F048688 0480000B */ bltz $a0, .Ljp7F0486B8 +/* 07D1FC 7F04868C 24010001 */ li $at, 1 +/* 07D200 7F048690 15610009 */ bne $t3, $at, .Ljp7F0486B8 +/* 07D204 7F048694 240100FF */ li $at, 255 +/* 07D208 7F048698 14410005 */ bne $v0, $at, .Ljp7F0486B0 +/* 07D20C 7F04869C 00000000 */ nop +/* 07D210 7F0486A0 0FC2EA5B */ jal sub_GAME_7F0B9DBC +/* 07D214 7F0486A4 00002825 */ move $a1, $zero +/* 07D218 7F0486A8 10000003 */ b .Ljp7F0486B8 +/* 07D21C 7F0486AC 00000000 */ nop +.Ljp7F0486B0: +/* 07D220 7F0486B0 0FC2EA5B */ jal sub_GAME_7F0B9DBC +/* 07D224 7F0486B4 24050001 */ li $a1, 1 +.Ljp7F0486B8: +/* 07D228 7F0486B8 1000003B */ b .Ljp7F0487A8 +/* 07D22C 7F0486BC AFA00678 */ sw $zero, 0x678($sp) +/* 07D230 7F0486C0 24010001 */ li $at, 1 +.Ljp7F0486C4: +/* 07D234 7F0486C4 54410039 */ bnel $v0, $at, .Ljp7F0487AC +/* 07D238 7F0486C8 922C0003 */ lbu $t4, 3($s1) +/* 07D23C 7F0486CC 962C0098 */ lhu $t4, 0x98($s1) +/* 07D240 7F0486D0 318A0002 */ andi $t2, $t4, 2 +/* 07D244 7F0486D4 51400035 */ beql $t2, $zero, .Ljp7F0487AC +/* 07D248 7F0486D8 922C0003 */ lbu $t4, 3($s1) +/* 07D24C 7F0486DC 8E700004 */ lw $s0, 4($s3) +/* 07D250 7F0486E0 4407B000 */ mfc1 $a3, $f22 +/* 07D254 7F0486E4 24120001 */ li $s2, 1 +/* 07D258 7F0486E8 8E0F00C0 */ lw $t7, 0xc0($s0) +/* 07D25C 7F0486EC 8E0D00C4 */ lw $t5, 0xc4($s0) +/* 07D260 7F0486F0 26240058 */ addiu $a0, $s1, 0x58 +/* 07D264 7F0486F4 448F4000 */ mtc1 $t7, $f8 +/* 07D268 7F0486F8 448D2000 */ mtc1 $t5, $f4 +/* 07D26C 7F0486FC 46804220 */ cvt.s.w $f8, $f8 +/* 07D270 7F048700 46802120 */ cvt.s.w $f4, $f4 +/* 07D274 7F048704 44054000 */ mfc1 $a1, $f8 +/* 07D278 7F048708 44062000 */ mfc1 $a2, $f4 +/* 07D27C 7F04870C 0FC1156C */ jal sub_GAME_7F0451DC +/* 07D280 7F048710 00000000 */ nop +/* 07D284 7F048714 A60200BE */ sh $v0, 0xbe($s0) +/* 07D288 7F048718 8FB9067C */ lw $t9, 0x67c($sp) +/* 07D28C 7F04871C 24010001 */ li $at, 1 +/* 07D290 7F048720 57210022 */ bnel $t9, $at, .Ljp7F0487AC +/* 07D294 7F048724 922C0003 */ lbu $t4, 3($s1) +/* 07D298 7F048728 860800BE */ lh $t0, 0xbe($s0) +/* 07D29C 7F04872C 240100FF */ li $at, 255 +/* 07D2A0 7F048730 55010007 */ bnel $t0, $at, .Ljp7F048750 +/* 07D2A4 7F048734 00009025 */ move $s2, $zero +/* 07D2A8 7F048738 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 07D2AC 7F04873C 4606B03C */ c.lt.s $f22, $f6 +/* 07D2B0 7F048740 00000000 */ nop +/* 07D2B4 7F048744 45020003 */ bc1fl .Ljp7F048754 +/* 07D2B8 7F048748 8E820008 */ lw $v0, 8($s4) +/* 07D2BC 7F04874C 00009025 */ move $s2, $zero +.Ljp7F048750: +/* 07D2C0 7F048750 8E820008 */ lw $v0, 8($s4) +.Ljp7F048754: +/* 07D2C4 7F048754 3C188004 */ lui $t8, %hi(prop_door_related) # $t8, 0x8004 +/* 07D2C8 7F048758 2718A20C */ addiu $t8, %lo(prop_door_related) # addiu $t8, $t8, -0x5df4 +/* 07D2CC 7F04875C 8C490004 */ lw $t1, 4($v0) +/* 07D2D0 7F048760 17090009 */ bne $t8, $t1, .Ljp7F048788 +/* 07D2D4 7F048764 00000000 */ nop +/* 07D2D8 7F048768 8C4B0008 */ lw $t3, 8($v0) +/* 07D2DC 7F04876C 02802025 */ move $a0, $s4 +/* 07D2E0 7F048770 0FC1B363 */ jal extract_id_from_object_structure_microcode +/* 07D2E4 7F048774 8D650004 */ lw $a1, 4($t3) +/* 07D2E8 7F048778 8C4E0000 */ lw $t6, ($v0) +/* 07D2EC 7F04877C 15C00002 */ bnez $t6, .Ljp7F048788 +/* 07D2F0 7F048780 00000000 */ nop +/* 07D2F4 7F048784 00009025 */ move $s2, $zero +.Ljp7F048788: +/* 07D2F8 7F048788 12400005 */ beqz $s2, .Ljp7F0487A0 +/* 07D2FC 7F04878C 00000000 */ nop +/* 07D300 7F048790 0FC14EB0 */ jal sub_GAME_7F0535C4 +/* 07D304 7F048794 02002025 */ move $a0, $s0 +/* 07D308 7F048798 10000004 */ b .Ljp7F0487AC +/* 07D30C 7F04879C 922C0003 */ lbu $t4, 3($s1) +.Ljp7F0487A0: +/* 07D310 7F0487A0 0FC14EA5 */ jal sub_GAME_7F053598 +/* 07D314 7F0487A4 02002025 */ move $a0, $s0 +.Ljp7F0487A8: +/* 07D318 7F0487A8 922C0003 */ lbu $t4, 3($s1) +.Ljp7F0487AC: +/* 07D31C 7F0487AC 2410002D */ li $s0, 45 +/* 07D320 7F0487B0 560C0008 */ bnel $s0, $t4, .Ljp7F0487D4 +/* 07D324 7F0487B4 8E23000C */ lw $v1, 0xc($s1) +/* 07D328 7F0487B8 0FC1F52A */ jal get_ptr_for_players_tank +/* 07D32C 7F0487BC 00000000 */ nop +/* 07D330 7F0487C0 54530004 */ bnel $v0, $s3, .Ljp7F0487D4 +/* 07D334 7F0487C4 8E23000C */ lw $v1, 0xc($s1) +/* 07D338 7F0487C8 10000019 */ b .Ljp7F048830 +/* 07D33C 7F0487CC 24030001 */ li $v1, 1 +/* 07D340 7F0487D0 8E23000C */ lw $v1, 0xc($s1) +.Ljp7F0487D4: +/* 07D344 7F0487D4 00035140 */ sll $t2, $v1, 5 +/* 07D348 7F0487D8 05430004 */ bgezl $t2, .Ljp7F0487EC +/* 07D34C 7F0487DC 8E2F0064 */ lw $t7, 0x64($s1) +/* 07D350 7F0487E0 10000013 */ b .Ljp7F048830 +/* 07D354 7F0487E4 24030001 */ li $v1, 1 +/* 07D358 7F0487E8 8E2F0064 */ lw $t7, 0x64($s1) +.Ljp7F0487EC: +/* 07D35C 7F0487EC 0003CB00 */ sll $t9, $v1, 0xc +/* 07D360 7F0487F0 00001825 */ move $v1, $zero +/* 07D364 7F0487F4 31ED0800 */ andi $t5, $t7, 0x800 +/* 07D368 7F0487F8 15A0000D */ bnez $t5, .Ljp7F048830 +/* 07D36C 7F0487FC 00000000 */ nop +/* 07D370 7F048800 0720000B */ bltz $t9, .Ljp7F048830 +/* 07D374 7F048804 02802025 */ move $a0, $s4 +/* 07D378 7F048808 26280058 */ addiu $t0, $s1, 0x58 +/* 07D37C 7F04880C 0FC1B57F */ jal getinstsize +/* 07D380 7F048810 AFA80074 */ sw $t0, 0x74($sp) +/* 07D384 7F048814 44060000 */ mfc1 $a2, $f0 +/* 07D388 7F048818 02602025 */ move $a0, $s3 +/* 07D38C 7F04881C 8FA50074 */ lw $a1, 0x74($sp) +/* 07D390 7F048820 0FC1549A */ jal sub_GAME_7F054D6C +/* 07D394 7F048824 8FA70678 */ lw $a3, 0x678($sp) +/* 07D398 7F048828 10000001 */ b .Ljp7F048830 +/* 07D39C 7F04882C 00401825 */ move $v1, $v0 +.Ljp7F048830: +/* 07D3A0 7F048830 1060037A */ beqz $v1, .Ljp7F04961C +/* 07D3A4 7F048834 8FB80680 */ lw $t8, 0x680($sp) +/* 07D3A8 7F048838 13000003 */ beqz $t8, .Ljp7F048848 +/* 07D3AC 7F04883C 26240078 */ addiu $a0, $s1, 0x78 +/* 07D3B0 7F048840 0FC10184 */ jal update_color_shading +/* 07D3B4 7F048844 2625007C */ addiu $a1, $s1, 0x7c +.Ljp7F048848: +/* 07D3B8 7F048848 92690001 */ lbu $t1, 1($s3) +/* 07D3BC 7F04884C 352B0002 */ ori $t3, $t1, 2 +/* 07D3C0 7F048850 A26B0001 */ sb $t3, 1($s3) +/* 07D3C4 7F048854 8E8E0008 */ lw $t6, 8($s4) +/* 07D3C8 7F048858 85C4000E */ lh $a0, 0xe($t6) +/* 07D3CC 7F04885C 00046180 */ sll $t4, $a0, 6 +/* 07D3D0 7F048860 0FC2F8B1 */ jal sub_GAME_7F0BD714 +/* 07D3D4 7F048864 01802025 */ move $a0, $t4 +/* 07D3D8 7F048868 AE82000C */ sw $v0, 0xc($s4) +/* 07D3DC 7F04886C 922A0003 */ lbu $t2, 3($s1) +/* 07D3E0 7F048870 24010001 */ li $at, 1 +/* 07D3E4 7F048874 00409025 */ move $s2, $v0 +/* 07D3E8 7F048878 154100AD */ bne $t2, $at, .Ljp7F048B30 +/* 07D3EC 7F04887C 26240018 */ addiu $a0, $s1, 0x18 +/* 07D3F0 7F048880 8E640004 */ lw $a0, 4($s3) +/* 07D3F4 7F048884 00402825 */ move $a1, $v0 +/* 07D3F8 7F048888 0FC14AFA */ jal sub_GAME_7F0526EC +/* 07D3FC 7F04888C AFA403A0 */ sw $a0, 0x3a0($sp) +/* 07D400 7F048890 0FC1E26D */ jal get_BONDdata_field_10CC +/* 07D404 7F048894 00000000 */ nop +/* 07D408 7F048898 00402025 */ move $a0, $v0 +/* 07D40C 7F04889C 0FC1616E */ jal sub_GAME_7F058098 +/* 07D410 7F0488A0 02402825 */ move $a1, $s2 +/* 07D414 7F0488A4 8E820008 */ lw $v0, 8($s4) +/* 07D418 7F0488A8 3C0F8004 */ lui $t7, %hi(prop_eyelid_door_related) # $t7, 0x8004 +/* 07D41C 7F0488AC 25EFA130 */ addiu $t7, %lo(prop_eyelid_door_related) # addiu $t7, $t7, -0x5ed0 +/* 07D420 7F0488B0 8C430004 */ lw $v1, 4($v0) +/* 07D424 7F0488B4 3C0B8004 */ lui $t3, %hi(prop_iris_door_related) # $t3, 0x8004 +/* 07D428 7F0488B8 8FA603A0 */ lw $a2, 0x3a0($sp) +/* 07D42C 7F0488BC 15E30025 */ bne $t7, $v1, .Ljp7F048954 +/* 07D430 7F0488C0 256BA18C */ addiu $t3, %lo(prop_iris_door_related) # addiu $t3, $t3, -0x5e74 +/* 07D434 7F0488C4 C4CA00B4 */ lwc1 $f10, 0xb4($a2) +/* 07D438 7F0488C8 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07D43C 7F0488CC 44812000 */ mtc1 $at, $f4 +/* 07D440 7F0488D0 46145202 */ mul.s $f8, $f10, $f20 +/* 07D444 7F0488D4 8C4D0008 */ lw $t5, 8($v0) +/* 07D448 7F0488D8 26450040 */ addiu $a1, $s2, 0x40 +/* 07D44C 7F0488DC 8DB90004 */ lw $t9, 4($t5) +/* 07D450 7F0488E0 46044183 */ div.s $f6, $f8, $f4 +/* 07D454 7F0488E4 8F300004 */ lw $s0, 4($t9) +/* 07D458 7F0488E8 AFA50070 */ sw $a1, 0x70($sp) +/* 07D45C 7F0488EC 4606A301 */ sub.s $f12, $f20, $f6 +/* 07D460 7F0488F0 0FC162A4 */ jal sub_GAME_7F058570 +/* 07D464 7F0488F4 E7AC0398 */ swc1 $f12, 0x398($sp) +/* 07D468 7F0488F8 02002025 */ move $a0, $s0 +/* 07D46C 7F0488FC 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D470 7F048900 8FA50070 */ lw $a1, 0x70($sp) +/* 07D474 7F048904 02402025 */ move $a0, $s2 +/* 07D478 7F048908 0FC16162 */ jal sub_GAME_7F058068 +/* 07D47C 7F04890C 8FA50070 */ lw $a1, 0x70($sp) +/* 07D480 7F048910 8E880008 */ lw $t0, 8($s4) +/* 07D484 7F048914 C7AA0398 */ lwc1 $f10, 0x398($sp) +/* 07D488 7F048918 26450080 */ addiu $a1, $s2, 0x80 +/* 07D48C 7F04891C 8D180008 */ lw $t8, 8($t0) +/* 07D490 7F048920 460AA301 */ sub.s $f12, $f20, $f10 +/* 07D494 7F048924 8F090008 */ lw $t1, 8($t8) +/* 07D498 7F048928 8D300004 */ lw $s0, 4($t1) +/* 07D49C 7F04892C 0FC162A4 */ jal sub_GAME_7F058570 +/* 07D4A0 7F048930 AFA5006C */ sw $a1, 0x6c($sp) +/* 07D4A4 7F048934 02002025 */ move $a0, $s0 +/* 07D4A8 7F048938 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D4AC 7F04893C 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D4B0 7F048940 02402025 */ move $a0, $s2 +/* 07D4B4 7F048944 0FC16162 */ jal sub_GAME_7F058068 +/* 07D4B8 7F048948 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D4BC 7F04894C 1000031F */ b .Ljp7F0495CC +/* 07D4C0 7F048950 8E8C0008 */ lw $t4, 8($s4) +.Ljp7F048954: +/* 07D4C4 7F048954 5563031D */ bnel $t3, $v1, .Ljp7F0495CC +/* 07D4C8 7F048958 8E8C0008 */ lw $t4, 8($s4) +/* 07D4CC 7F04895C C4C200B4 */ lwc1 $f2, 0xb4($a2) +/* 07D4D0 7F048960 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07D4D4 7F048964 44812000 */ mtc1 $at, $f4 +/* 07D4D8 7F048968 46141202 */ mul.s $f8, $f2, $f20 +/* 07D4DC 7F04896C 3C018005 */ lui $at, %hi(D_80052B68) # $at, 0x8005 +/* 07D4E0 7F048970 C42A2B98 */ lwc1 $f10, %lo(D_80052B68)($at) +/* 07D4E4 7F048974 4600B386 */ mov.s $f14, $f22 +/* 07D4E8 7F048978 46044183 */ div.s $f6, $f8, $f4 +/* 07D4EC 7F04897C E7A60388 */ swc1 $f6, 0x388($sp) +/* 07D4F0 7F048980 C4CC0084 */ lwc1 $f12, 0x84($a2) +/* 07D4F4 7F048984 460A6002 */ mul.s $f0, $f12, $f10 +/* 07D4F8 7F048988 4602003C */ c.lt.s $f0, $f2 +/* 07D4FC 7F04898C 00000000 */ nop +/* 07D500 7F048990 4502001F */ bc1fl .Ljp7F048A10 +/* 07D504 7F048994 8FAA0680 */ lw $t2, 0x680($sp) +/* 07D508 7F048998 46001201 */ sub.s $f8, $f2, $f0 +/* 07D50C 7F04899C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 07D510 7F0489A0 8FAE0680 */ lw $t6, 0x680($sp) +/* 07D514 7F0489A4 46006181 */ sub.s $f6, $f12, $f0 +/* 07D518 7F0489A8 46086102 */ mul.s $f4, $f12, $f8 +/* 07D51C 7F0489AC 46062283 */ div.s $f10, $f4, $f6 +/* 07D520 7F0489B0 44812000 */ mtc1 $at, $f4 +/* 07D524 7F0489B4 46145202 */ mul.s $f8, $f10, $f20 +/* 07D528 7F0489B8 46044383 */ div.s $f14, $f8, $f4 +/* 07D52C 7F0489BC 11C00011 */ beqz $t6, .Ljp7F048A04 +/* 07D530 7F0489C0 E7AE0384 */ swc1 $f14, 0x384($sp) +/* 07D534 7F0489C4 C7A60684 */ lwc1 $f6, 0x684($sp) +/* 07D538 7F0489C8 E7AE0384 */ swc1 $f14, 0x384($sp) +/* 07D53C 7F0489CC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07D540 7F0489D0 4600303E */ c.le.s $f6, $f0 +/* 07D544 7F0489D4 240500CA */ li $a1, 202 +/* 07D548 7F0489D8 00003025 */ move $a2, $zero +/* 07D54C 7F0489DC 266C0008 */ addiu $t4, $s3, 8 +/* 07D550 7F0489E0 45000008 */ bc1f .Ljp7F048A04 +/* 07D554 7F0489E4 00000000 */ nop +/* 07D558 7F0489E8 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07D55C 7F0489EC AFAC0074 */ sw $t4, 0x74($sp) +/* 07D560 7F0489F0 0C002386 */ jal play_sfx_a1 +/* 07D564 7F0489F4 E7AE0384 */ swc1 $f14, 0x384($sp) +/* 07D568 7F0489F8 00402025 */ move $a0, $v0 +/* 07D56C 7F0489FC 0FC14FC3 */ jal sub_GAME_7F053A10 +/* 07D570 7F048A00 8FA50074 */ lw $a1, 0x74($sp) +.Ljp7F048A04: +/* 07D574 7F048A04 10000016 */ b .Ljp7F048A60 +/* 07D578 7F048A08 AFA00390 */ sw $zero, 0x390($sp) +/* 07D57C 7F048A0C 8FAA0680 */ lw $t2, 0x680($sp) +.Ljp7F048A10: +/* 07D580 7F048A10 E7AE0384 */ swc1 $f14, 0x384($sp) +/* 07D584 7F048A14 51400012 */ beql $t2, $zero, .Ljp7F048A60 +/* 07D588 7F048A18 AFA00390 */ sw $zero, 0x390($sp) +/* 07D58C 7F048A1C C7AA0684 */ lwc1 $f10, 0x684($sp) +/* 07D590 7F048A20 E7AE0384 */ swc1 $f14, 0x384($sp) +/* 07D594 7F048A24 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07D598 7F048A28 460A003C */ c.lt.s $f0, $f10 +/* 07D59C 7F048A2C 240500CB */ li $a1, 203 +/* 07D5A0 7F048A30 00003025 */ move $a2, $zero +/* 07D5A4 7F048A34 266F0008 */ addiu $t7, $s3, 8 +/* 07D5A8 7F048A38 45020009 */ bc1fl .Ljp7F048A60 +/* 07D5AC 7F048A3C AFA00390 */ sw $zero, 0x390($sp) +/* 07D5B0 7F048A40 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07D5B4 7F048A44 AFAF0074 */ sw $t7, 0x74($sp) +/* 07D5B8 7F048A48 0C002386 */ jal play_sfx_a1 +/* 07D5BC 7F048A4C E7AE0384 */ swc1 $f14, 0x384($sp) +/* 07D5C0 7F048A50 00402025 */ move $a0, $v0 +/* 07D5C4 7F048A54 0FC14FC3 */ jal sub_GAME_7F053A10 +/* 07D5C8 7F048A58 8FA50074 */ lw $a1, 0x74($sp) +/* 07D5CC 7F048A5C AFA00390 */ sw $zero, 0x390($sp) +.Ljp7F048A60: +/* 07D5D0 7F048A60 8E8D0008 */ lw $t5, 8($s4) +/* 07D5D4 7F048A64 8FA30390 */ lw $v1, 0x390($sp) +/* 07D5D8 7F048A68 C7AC0384 */ lwc1 $f12, 0x384($sp) +/* 07D5DC 7F048A6C 8DB90008 */ lw $t9, 8($t5) +/* 07D5E0 7F048A70 00031040 */ sll $v0, $v1, 1 +/* 07D5E4 7F048A74 00024080 */ sll $t0, $v0, 2 +/* 07D5E8 7F048A78 0328C021 */ addu $t8, $t9, $t0 +/* 07D5EC 7F048A7C 8F090004 */ lw $t1, 4($t8) +/* 07D5F0 7F048A80 00027180 */ sll $t6, $v0, 6 +/* 07D5F4 7F048A84 024E2821 */ addu $a1, $s2, $t6 +/* 07D5F8 7F048A88 8D2B0004 */ lw $t3, 4($t1) +/* 07D5FC 7F048A8C AFA20078 */ sw $v0, 0x78($sp) +/* 07D600 7F048A90 24A50040 */ addiu $a1, $a1, 0x40 +/* 07D604 7F048A94 0FC162EA */ jal sub_GAME_7F058688 +/* 07D608 7F048A98 AFAB0394 */ sw $t3, 0x394($sp) +/* 07D60C 7F048A9C 8FAC0078 */ lw $t4, 0x78($sp) +/* 07D610 7F048AA0 8FB00390 */ lw $s0, 0x390($sp) +/* 07D614 7F048AA4 8FA40394 */ lw $a0, 0x394($sp) +/* 07D618 7F048AA8 000C5180 */ sll $t2, $t4, 6 +/* 07D61C 7F048AAC 024A2821 */ addu $a1, $s2, $t2 +/* 07D620 7F048AB0 24A50040 */ addiu $a1, $a1, 0x40 +/* 07D624 7F048AB4 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D628 7F048AB8 AFA50074 */ sw $a1, 0x74($sp) +/* 07D62C 7F048ABC 02402025 */ move $a0, $s2 +/* 07D630 7F048AC0 0FC16162 */ jal sub_GAME_7F058068 +/* 07D634 7F048AC4 8FA50074 */ lw $a1, 0x74($sp) +/* 07D638 7F048AC8 8E8F0008 */ lw $t7, 8($s4) +/* 07D63C 7F048ACC 8FA20078 */ lw $v0, 0x78($sp) +/* 07D640 7F048AD0 C7AC0388 */ lwc1 $f12, 0x388($sp) +/* 07D644 7F048AD4 8DED0008 */ lw $t5, 8($t7) +/* 07D648 7F048AD8 24420002 */ addiu $v0, $v0, 2 +/* 07D64C 7F048ADC 0002C880 */ sll $t9, $v0, 2 +/* 07D650 7F048AE0 01B94021 */ addu $t0, $t5, $t9 +/* 07D654 7F048AE4 8D180000 */ lw $t8, ($t0) +/* 07D658 7F048AE8 00025980 */ sll $t3, $v0, 6 +/* 07D65C 7F048AEC 024B2821 */ addu $a1, $s2, $t3 +/* 07D660 7F048AF0 8F090004 */ lw $t1, 4($t8) +/* 07D664 7F048AF4 AFA50070 */ sw $a1, 0x70($sp) +/* 07D668 7F048AF8 0FC162EA */ jal sub_GAME_7F058688 +/* 07D66C 7F048AFC AFA90394 */ sw $t1, 0x394($sp) +/* 07D670 7F048B00 8FA40394 */ lw $a0, 0x394($sp) +/* 07D674 7F048B04 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D678 7F048B08 8FA50070 */ lw $a1, 0x70($sp) +/* 07D67C 7F048B0C 8FA40074 */ lw $a0, 0x74($sp) +/* 07D680 7F048B10 0FC16162 */ jal sub_GAME_7F058068 +/* 07D684 7F048B14 8FA50070 */ lw $a1, 0x70($sp) +/* 07D688 7F048B18 26100001 */ addiu $s0, $s0, 1 +/* 07D68C 7F048B1C 24010006 */ li $at, 6 +/* 07D690 7F048B20 1601FFCF */ bne $s0, $at, .Ljp7F048A60 +/* 07D694 7F048B24 AFB00390 */ sw $s0, 0x390($sp) +/* 07D698 7F048B28 100002A8 */ b .Ljp7F0495CC +/* 07D69C 7F048B2C 8E8C0008 */ lw $t4, 8($s4) +.Ljp7F048B30: +/* 07D6A0 7F048B30 262E0058 */ addiu $t6, $s1, 0x58 +/* 07D6A4 7F048B34 AFAE0074 */ sw $t6, 0x74($sp) +/* 07D6A8 7F048B38 0FC16150 */ jal sub_GAME_7F058020 +/* 07D6AC 7F048B3C 27A503A8 */ addiu $a1, $sp, 0x3a8 +/* 07D6B0 7F048B40 8FA40074 */ lw $a0, 0x74($sp) +/* 07D6B4 7F048B44 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D6B8 7F048B48 27A503A8 */ addiu $a1, $sp, 0x3a8 +/* 07D6BC 7F048B4C 0FC1E26D */ jal get_BONDdata_field_10CC +/* 07D6C0 7F048B50 00000000 */ nop +/* 07D6C4 7F048B54 00402025 */ move $a0, $v0 +/* 07D6C8 7F048B58 27A503A8 */ addiu $a1, $sp, 0x3a8 +/* 07D6CC 7F048B5C 0FC161AB */ jal sub_GAME_7F05818C +/* 07D6D0 7F048B60 02403025 */ move $a2, $s2 +/* 07D6D4 7F048B64 92220003 */ lbu $v0, 3($s1) +/* 07D6D8 7F048B68 24010006 */ li $at, 6 +/* 07D6DC 7F048B6C 27A50324 */ addiu $a1, $sp, 0x324 +/* 07D6E0 7F048B70 5441002D */ bnel $v0, $at, .Ljp7F048C28 +/* 07D6E4 7F048B74 2401000D */ li $at, 13 +/* 07D6E8 7F048B78 8E620004 */ lw $v0, 4($s3) +/* 07D6EC 7F048B7C 8E8C0008 */ lw $t4, 8($s4) +/* 07D6F0 7F048B80 C44C00C8 */ lwc1 $f12, 0xc8($v0) +/* 07D6F4 7F048B84 8D8A0008 */ lw $t2, 8($t4) +/* 07D6F8 7F048B88 4616603C */ c.lt.s $f12, $f22 +/* 07D6FC 7F048B8C 8D4F0000 */ lw $t7, ($t2) +/* 07D700 7F048B90 45000003 */ bc1f .Ljp7F048BA0 +/* 07D704 7F048B94 8DF00004 */ lw $s0, 4($t7) +/* 07D708 7F048B98 10000006 */ b .Ljp7F048BB4 +/* 07D70C 7F048B9C 46146300 */ add.s $f12, $f12, $f20 +.Ljp7F048BA0: +/* 07D710 7F048BA0 460CA03E */ c.le.s $f20, $f12 +/* 07D714 7F048BA4 00000000 */ nop +/* 07D718 7F048BA8 45000002 */ bc1f .Ljp7F048BB4 +/* 07D71C 7F048BAC 00000000 */ nop +/* 07D720 7F048BB0 46146301 */ sub.s $f12, $f12, $f20 +.Ljp7F048BB4: +/* 07D724 7F048BB4 0FC162C7 */ jal sub_GAME_7F0585FC +/* 07D728 7F048BB8 AFA20374 */ sw $v0, 0x374($sp) +/* 07D72C 7F048BBC 8FA20374 */ lw $v0, 0x374($sp) +/* 07D730 7F048BC0 26460040 */ addiu $a2, $s2, 0x40 +/* 07D734 7F048BC4 AFA60070 */ sw $a2, 0x70($sp) +/* 07D738 7F048BC8 27A40324 */ addiu $a0, $sp, 0x324 +/* 07D73C 7F048BCC 0FC1617A */ jal sub_GAME_7F0580C8 +/* 07D740 7F048BD0 24450084 */ addiu $a1, $v0, 0x84 +/* 07D744 7F048BD4 C6080000 */ lwc1 $f8, ($s0) +/* 07D748 7F048BD8 27B20364 */ addiu $s2, $sp, 0x364 +/* 07D74C 7F048BDC 02402825 */ move $a1, $s2 +/* 07D750 7F048BE0 E7A80364 */ swc1 $f8, 0x364($sp) +/* 07D754 7F048BE4 C6040004 */ lwc1 $f4, 4($s0) +/* 07D758 7F048BE8 27A403A8 */ addiu $a0, $sp, 0x3a8 +/* 07D75C 7F048BEC E7A40368 */ swc1 $f4, 0x368($sp) +/* 07D760 7F048BF0 C6060008 */ lwc1 $f6, 8($s0) +/* 07D764 7F048BF4 0FC16265 */ jal sub_GAME_7F058474 +/* 07D768 7F048BF8 E7A6036C */ swc1 $f6, 0x36c($sp) +/* 07D76C 7F048BFC 02402025 */ move $a0, $s2 +/* 07D770 7F048C00 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D774 7F048C04 8FA50070 */ lw $a1, 0x70($sp) +/* 07D778 7F048C08 0FC1E26D */ jal get_BONDdata_field_10CC +/* 07D77C 7F048C0C 00000000 */ nop +/* 07D780 7F048C10 00402025 */ move $a0, $v0 +/* 07D784 7F048C14 0FC1616E */ jal sub_GAME_7F058098 +/* 07D788 7F048C18 8FA50070 */ lw $a1, 0x70($sp) +/* 07D78C 7F048C1C 1000026B */ b .Ljp7F0495CC +/* 07D790 7F048C20 8E8C0008 */ lw $t4, 8($s4) +/* 07D794 7F048C24 2401000D */ li $at, 13 +.Ljp7F048C28: +/* 07D798 7F048C28 5441007F */ bnel $v0, $at, .Ljp7F048E28 +/* 07D79C 7F048C2C 24010008 */ li $at, 8 +/* 07D7A0 7F048C30 8E620004 */ lw $v0, 4($s3) +/* 07D7A4 7F048C34 3C018005 */ lui $at, %hi(D_80052B6C) # $at, 0x8005 +/* 07D7A8 7F048C38 C4282B9C */ lwc1 $f8, %lo(D_80052B6C)($at) +/* 07D7AC 7F048C3C C44A0090 */ lwc1 $f10, 0x90($v0) +/* 07D7B0 7F048C40 C444009C */ lwc1 $f4, 0x9c($v0) +/* 07D7B4 7F048C44 46085300 */ add.s $f12, $f10, $f8 +/* 07D7B8 7F048C48 46002187 */ neg.s $f6, $f4 +/* 07D7BC 7F048C4C 460CA03E */ c.le.s $f20, $f12 +/* 07D7C0 7F048C50 E7A60304 */ swc1 $f6, 0x304($sp) +/* 07D7C4 7F048C54 45020003 */ bc1fl .Ljp7F048C64 +/* 07D7C8 7F048C58 8E8D0008 */ lw $t5, 8($s4) +/* 07D7CC 7F048C5C 46146301 */ sub.s $f12, $f12, $f20 +/* 07D7D0 7F048C60 8E8D0008 */ lw $t5, 8($s4) +.Ljp7F048C64: +/* 07D7D4 7F048C64 27A403A8 */ addiu $a0, $sp, 0x3a8 +/* 07D7D8 7F048C68 27A5030C */ addiu $a1, $sp, 0x30c +/* 07D7DC 7F048C6C 8DB90008 */ lw $t9, 8($t5) +/* 07D7E0 7F048C70 8F280004 */ lw $t0, 4($t9) +/* 07D7E4 7F048C74 8D100004 */ lw $s0, 4($t0) +/* 07D7E8 7F048C78 C60A0000 */ lwc1 $f10, ($s0) +/* 07D7EC 7F048C7C E7AA030C */ swc1 $f10, 0x30c($sp) +/* 07D7F0 7F048C80 C6080004 */ lwc1 $f8, 4($s0) +/* 07D7F4 7F048C84 E7A80310 */ swc1 $f8, 0x310($sp) +/* 07D7F8 7F048C88 C6040008 */ lwc1 $f4, 8($s0) +/* 07D7FC 7F048C8C E7AC0308 */ swc1 $f12, 0x308($sp) +/* 07D800 7F048C90 AFA2031C */ sw $v0, 0x31c($sp) +/* 07D804 7F048C94 0FC16265 */ jal sub_GAME_7F058474 +/* 07D808 7F048C98 E7A40314 */ swc1 $f4, 0x314($sp) +/* 07D80C 7F048C9C 26450040 */ addiu $a1, $s2, 0x40 +/* 07D810 7F048CA0 C7AC0308 */ lwc1 $f12, 0x308($sp) +/* 07D814 7F048CA4 0FC162C7 */ jal sub_GAME_7F0585FC +/* 07D818 7F048CA8 AFA50070 */ sw $a1, 0x70($sp) +/* 07D81C 7F048CAC 27A4030C */ addiu $a0, $sp, 0x30c +/* 07D820 7F048CB0 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D824 7F048CB4 8FA50070 */ lw $a1, 0x70($sp) +/* 07D828 7F048CB8 8FB8031C */ lw $t8, 0x31c($sp) +/* 07D82C 7F048CBC 8FA50070 */ lw $a1, 0x70($sp) +/* 07D830 7F048CC0 8F090014 */ lw $t1, 0x14($t8) +/* 07D834 7F048CC4 0FC163E7 */ jal matrix_multiply_A1_by_F12 +/* 07D838 7F048CC8 C52C0014 */ lwc1 $f12, 0x14($t1) +/* 07D83C 7F048CCC 0FC1E26D */ jal get_BONDdata_field_10CC +/* 07D840 7F048CD0 00000000 */ nop +/* 07D844 7F048CD4 00402025 */ move $a0, $v0 +/* 07D848 7F048CD8 0FC1616E */ jal sub_GAME_7F058098 +/* 07D84C 7F048CDC 8FA50070 */ lw $a1, 0x70($sp) +/* 07D850 7F048CE0 8E8B0008 */ lw $t3, 8($s4) +/* 07D854 7F048CE4 26450080 */ addiu $a1, $s2, 0x80 +/* 07D858 7F048CE8 C7AC0304 */ lwc1 $f12, 0x304($sp) +/* 07D85C 7F048CEC 8D6E0008 */ lw $t6, 8($t3) +/* 07D860 7F048CF0 8DCC0008 */ lw $t4, 8($t6) +/* 07D864 7F048CF4 8D900004 */ lw $s0, 4($t4) +/* 07D868 7F048CF8 0FC162EA */ jal sub_GAME_7F058688 +/* 07D86C 7F048CFC AFA5006C */ sw $a1, 0x6c($sp) +/* 07D870 7F048D00 02002025 */ move $a0, $s0 +/* 07D874 7F048D04 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D878 7F048D08 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D87C 7F048D0C 8FA40070 */ lw $a0, 0x70($sp) +/* 07D880 7F048D10 0FC1616E */ jal sub_GAME_7F058098 +/* 07D884 7F048D14 8FA5006C */ lw $a1, 0x6c($sp) +/* 07D888 7F048D18 8E8A0008 */ lw $t2, 8($s4) +/* 07D88C 7F048D1C 02802025 */ move $a0, $s4 +/* 07D890 7F048D20 8D430008 */ lw $v1, 8($t2) +/* 07D894 7F048D24 8C65000C */ lw $a1, 0xc($v1) +/* 07D898 7F048D28 50A00016 */ beql $a1, $zero, .Ljp7F048D84 +/* 07D89C 7F048D2C 8C650010 */ lw $a1, 0x10($v1) +/* 07D8A0 7F048D30 0FC1B314 */ jal sub_GAME_7F06C660 +/* 07D8A4 7F048D34 00003025 */ move $a2, $zero +/* 07D8A8 7F048D38 AFA20300 */ sw $v0, 0x300($sp) +/* 07D8AC 7F048D3C 8E8F0008 */ lw $t7, 8($s4) +/* 07D8B0 7F048D40 8FA8031C */ lw $t0, 0x31c($sp) +/* 07D8B4 7F048D44 00402825 */ move $a1, $v0 +/* 07D8B8 7F048D48 8DED0008 */ lw $t5, 8($t7) +/* 07D8BC 7F048D4C C50C00B4 */ lwc1 $f12, 0xb4($t0) +/* 07D8C0 7F048D50 8DB9000C */ lw $t9, 0xc($t5) +/* 07D8C4 7F048D54 0FC162A4 */ jal sub_GAME_7F058570 +/* 07D8C8 7F048D58 8F300004 */ lw $s0, 4($t9) +/* 07D8CC 7F048D5C 8FB20300 */ lw $s2, 0x300($sp) +/* 07D8D0 7F048D60 02002025 */ move $a0, $s0 +/* 07D8D4 7F048D64 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D8D8 7F048D68 02402825 */ move $a1, $s2 +/* 07D8DC 7F048D6C 8FA4006C */ lw $a0, 0x6c($sp) +/* 07D8E0 7F048D70 0FC1616E */ jal sub_GAME_7F058098 +/* 07D8E4 7F048D74 02402825 */ move $a1, $s2 +/* 07D8E8 7F048D78 8E980008 */ lw $t8, 8($s4) +/* 07D8EC 7F048D7C 8F030008 */ lw $v1, 8($t8) +/* 07D8F0 7F048D80 8C650010 */ lw $a1, 0x10($v1) +.Ljp7F048D84: +/* 07D8F4 7F048D84 02802025 */ move $a0, $s4 +/* 07D8F8 7F048D88 50A00010 */ beql $a1, $zero, .Ljp7F048DCC +/* 07D8FC 7F048D8C 8C650018 */ lw $a1, 0x18($v1) +/* 07D900 7F048D90 0FC1B314 */ jal sub_GAME_7F06C660 +/* 07D904 7F048D94 00003025 */ move $a2, $zero +/* 07D908 7F048D98 8E890008 */ lw $t1, 8($s4) +/* 07D90C 7F048D9C 00409025 */ move $s2, $v0 +/* 07D910 7F048DA0 00402825 */ move $a1, $v0 +/* 07D914 7F048DA4 8D2B0008 */ lw $t3, 8($t1) +/* 07D918 7F048DA8 8D6E0010 */ lw $t6, 0x10($t3) +/* 07D91C 7F048DAC 0FC163A1 */ jal init_something_copy_posdata_to_it +/* 07D920 7F048DB0 8DC40004 */ lw $a0, 4($t6) +/* 07D924 7F048DB4 8FA4006C */ lw $a0, 0x6c($sp) +/* 07D928 7F048DB8 0FC1616E */ jal sub_GAME_7F058098 +/* 07D92C 7F048DBC 02402825 */ move $a1, $s2 +/* 07D930 7F048DC0 8E8C0008 */ lw $t4, 8($s4) +/* 07D934 7F048DC4 8D830008 */ lw $v1, 8($t4) +/* 07D938 7F048DC8 8C650018 */ lw $a1, 0x18($v1) +.Ljp7F048DCC: +/* 07D93C 7F048DCC 02802025 */ move $a0, $s4 +/* 07D940 7F048DD0 50A001FE */ beql $a1, $zero, .Ljp7F0495CC +/* 07D944 7F048DD4 8E8C0008 */ lw $t4, 8($s4) +/* 07D948 7F048DD8 0FC1B314 */ jal sub_GAME_7F06C660 +/* 07D94C 7F048DDC 00003025 */ move $a2, $zero +/* 07D950 7F048DE0 8E8A0008 */ lw $t2, 8($s4) +/* 07D954 7F048DE4 8FB9031C */ lw $t9, 0x31c($sp) +/* 07D958 7F048DE8 00409025 */ move $s2, $v0 +/* 07D95C 7F048DEC 8D4F0008 */ lw $t7, 8($t2) +/* 07D960 7F048DF0 00402825 */ move $a1, $v0 +/* 07D964 7F048DF4 C72C00B4 */ lwc1 $f12, 0xb4($t9) +/* 07D968 7F048DF8 8DED0018 */ lw $t5, 0x18($t7) +/* 07D96C 7F048DFC 0FC162A4 */ jal sub_GAME_7F058570 +/* 07D970 7F048E00 8DB00004 */ lw $s0, 4($t5) +/* 07D974 7F048E04 02002025 */ move $a0, $s0 +/* 07D978 7F048E08 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07D97C 7F048E0C 02402825 */ move $a1, $s2 +/* 07D980 7F048E10 8FA4006C */ lw $a0, 0x6c($sp) +/* 07D984 7F048E14 0FC1616E */ jal sub_GAME_7F058098 +/* 07D988 7F048E18 02402825 */ move $a1, $s2 +/* 07D98C 7F048E1C 100001EB */ b .Ljp7F0495CC +/* 07D990 7F048E20 8E8C0008 */ lw $t4, 8($s4) +/* 07D994 7F048E24 24010008 */ li $at, 8 +.Ljp7F048E28: +/* 07D998 7F048E28 54410017 */ bnel $v0, $at, .Ljp7F048E88 +/* 07D99C 7F048E2C 2401000C */ li $at, 12 +/* 07D9A0 7F048E30 8E880008 */ lw $t0, 8($s4) +/* 07D9A4 7F048E34 24020001 */ li $v0, 1 +/* 07D9A8 7F048E38 26440040 */ addiu $a0, $s2, 0x40 +/* 07D9AC 7F048E3C 8518000E */ lh $t8, 0xe($t0) +/* 07D9B0 7F048E40 2B010002 */ slti $at, $t8, 2 +/* 07D9B4 7F048E44 542001E1 */ bnezl $at, .Ljp7F0495CC +/* 07D9B8 7F048E48 8E8C0008 */ lw $t4, 8($s4) +/* 07D9BC 7F048E4C AFA202FC */ sw $v0, 0x2fc($sp) +.Ljp7F048E50: +/* 07D9C0 7F048E50 0FC1613C */ jal reset_array_of_0x10_floats +/* 07D9C4 7F048E54 AFA40078 */ sw $a0, 0x78($sp) +/* 07D9C8 7F048E58 8E890008 */ lw $t1, 8($s4) +/* 07D9CC 7F048E5C 8FA202FC */ lw $v0, 0x2fc($sp) +/* 07D9D0 7F048E60 8FA40078 */ lw $a0, 0x78($sp) +/* 07D9D4 7F048E64 852B000E */ lh $t3, 0xe($t1) +/* 07D9D8 7F048E68 24420001 */ addiu $v0, $v0, 1 +/* 07D9DC 7F048E6C 24840040 */ addiu $a0, $a0, 0x40 +/* 07D9E0 7F048E70 004B082A */ slt $at, $v0, $t3 +/* 07D9E4 7F048E74 5420FFF6 */ bnezl $at, .Ljp7F048E50 +/* 07D9E8 7F048E78 AFA202FC */ sw $v0, 0x2fc($sp) +/* 07D9EC 7F048E7C 100001D3 */ b .Ljp7F0495CC +/* 07D9F0 7F048E80 8E8C0008 */ lw $t4, 8($s4) +/* 07D9F4 7F048E84 2401000C */ li $at, 12 +.Ljp7F048E88: +/* 07D9F8 7F048E88 5441002C */ bnel $v0, $at, .Ljp7F048F3C +/* 07D9FC 7F048E8C 24010027 */ li $at, 39 +/* 07DA00 7F048E90 8E8E0008 */ lw $t6, 8($s4) +/* 07DA04 7F048E94 26450040 */ addiu $a1, $s2, 0x40 +/* 07DA08 7F048E98 8DCC0008 */ lw $t4, 8($t6) +/* 07DA0C 7F048E9C 8D8A0000 */ lw $t2, ($t4) +/* 07DA10 7F048EA0 8D440004 */ lw $a0, 4($t2) +/* 07DA14 7F048EA4 0FC163A1 */ jal init_something_copy_posdata_to_it +/* 07DA18 7F048EA8 AFA50070 */ sw $a1, 0x70($sp) +/* 07DA1C 7F048EAC 02402025 */ move $a0, $s2 +/* 07DA20 7F048EB0 0FC1616E */ jal sub_GAME_7F058098 +/* 07DA24 7F048EB4 8FA50070 */ lw $a1, 0x70($sp) +/* 07DA28 7F048EB8 8E8F0008 */ lw $t7, 8($s4) +/* 07DA2C 7F048EBC 26450080 */ addiu $a1, $s2, 0x80 +/* 07DA30 7F048EC0 8DED0008 */ lw $t5, 8($t7) +/* 07DA34 7F048EC4 8DB90004 */ lw $t9, 4($t5) +/* 07DA38 7F048EC8 8F240004 */ lw $a0, 4($t9) +/* 07DA3C 7F048ECC 0FC163A1 */ jal init_something_copy_posdata_to_it +/* 07DA40 7F048ED0 AFA5006C */ sw $a1, 0x6c($sp) +/* 07DA44 7F048ED4 02402025 */ move $a0, $s2 +/* 07DA48 7F048ED8 0FC1616E */ jal sub_GAME_7F058098 +/* 07DA4C 7F048EDC 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DA50 7F048EE0 8E880008 */ lw $t0, 8($s4) +/* 07DA54 7F048EE4 264500C0 */ addiu $a1, $s2, 0xc0 +/* 07DA58 7F048EE8 8D180008 */ lw $t8, 8($t0) +/* 07DA5C 7F048EEC 8F090008 */ lw $t1, 8($t8) +/* 07DA60 7F048EF0 8D240004 */ lw $a0, 4($t1) +/* 07DA64 7F048EF4 0FC163A1 */ jal init_something_copy_posdata_to_it +/* 07DA68 7F048EF8 AFA50078 */ sw $a1, 0x78($sp) +/* 07DA6C 7F048EFC 02402025 */ move $a0, $s2 +/* 07DA70 7F048F00 0FC1616E */ jal sub_GAME_7F058098 +/* 07DA74 7F048F04 8FA50078 */ lw $a1, 0x78($sp) +/* 07DA78 7F048F08 8E8B0008 */ lw $t3, 8($s4) +/* 07DA7C 7F048F0C 26500100 */ addiu $s0, $s2, 0x100 +/* 07DA80 7F048F10 02002825 */ move $a1, $s0 +/* 07DA84 7F048F14 8D6E0008 */ lw $t6, 8($t3) +/* 07DA88 7F048F18 8DCC000C */ lw $t4, 0xc($t6) +/* 07DA8C 7F048F1C 0FC163A1 */ jal init_something_copy_posdata_to_it +/* 07DA90 7F048F20 8D840004 */ lw $a0, 4($t4) +/* 07DA94 7F048F24 02402025 */ move $a0, $s2 +/* 07DA98 7F048F28 0FC1616E */ jal sub_GAME_7F058098 +/* 07DA9C 7F048F2C 02002825 */ move $a1, $s0 +/* 07DAA0 7F048F30 100001A6 */ b .Ljp7F0495CC +/* 07DAA4 7F048F34 8E8C0008 */ lw $t4, 8($s4) +/* 07DAA8 7F048F38 24010027 */ li $at, 39 +.Ljp7F048F3C: +/* 07DAAC 7F048F3C 544100B9 */ bnel $v0, $at, .Ljp7F049224 +/* 07DAB0 7F048F40 24010028 */ li $at, 40 +/* 07DAB4 7F048F44 8E8A0008 */ lw $t2, 8($s4) +/* 07DAB8 7F048F48 8FAC0680 */ lw $t4, 0x680($sp) +/* 07DABC 7F048F4C 4600B006 */ mov.s $f0, $f22 +/* 07DAC0 7F048F50 8D430008 */ lw $v1, 8($t2) +/* 07DAC4 7F048F54 8C6F0004 */ lw $t7, 4($v1) +/* 07DAC8 7F048F58 8DED0004 */ lw $t5, 4($t7) +/* 07DACC 7F048F5C AFAD0264 */ sw $t5, 0x264($sp) +/* 07DAD0 7F048F60 8C790008 */ lw $t9, 8($v1) +/* 07DAD4 7F048F64 8F280004 */ lw $t0, 4($t9) +/* 07DAD8 7F048F68 AFA80260 */ sw $t0, 0x260($sp) +/* 07DADC 7F048F6C 8C690010 */ lw $t1, 0x10($v1) +/* 07DAE0 7F048F70 8C78000C */ lw $t8, 0xc($v1) +/* 07DAE4 7F048F74 8D2B0004 */ lw $t3, 4($t1) +/* 07DAE8 7F048F78 8F100004 */ lw $s0, 4($t8) +/* 07DAEC 7F048F7C AFAB0258 */ sw $t3, 0x258($sp) +/* 07DAF0 7F048F80 8C6E0018 */ lw $t6, 0x18($v1) +/* 07DAF4 7F048F84 C6840014 */ lwc1 $f4, 0x14($s4) +/* 07DAF8 7F048F88 8DC20004 */ lw $v0, 4($t6) +/* 07DAFC 7F048F8C C4460010 */ lwc1 $f6, 0x10($v0) +/* 07DB00 7F048F90 C44A000C */ lwc1 $f10, 0xc($v0) +/* 07DB04 7F048F94 460A3201 */ sub.s $f8, $f6, $f10 +/* 07DB08 7F048F98 46044082 */ mul.s $f2, $f8, $f4 +/* 07DB0C 7F048F9C 11800026 */ beqz $t4, .Ljp7F049038 +/* 07DB10 7F048FA0 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 +/* 07DB14 7F048FA4 C42A83B4 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07DB18 7F048FA8 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07DB1C 7F048FAC 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07DB20 7F048FB0 460A3202 */ mul.s $f8, $f6, $f10 +/* 07DB24 7F048FB4 44815000 */ mtc1 $at, $f10 +/* 07DB28 7F048FB8 46144102 */ mul.s $f4, $f8, $f20 +/* 07DB2C 7F048FBC 00000000 */ nop +/* 07DB30 7F048FC0 46141182 */ mul.s $f6, $f2, $f20 +/* 07DB34 7F048FC4 00000000 */ nop +/* 07DB38 7F048FC8 460A3202 */ mul.s $f8, $f6, $f10 +/* 07DB3C 7F048FCC C626008C */ lwc1 $f6, 0x8c($s1) +/* 07DB40 7F048FD0 46082003 */ div.s $f0, $f4, $f8 +/* 07DB44 7F048FD4 46003280 */ add.s $f10, $f6, $f0 +/* 07DB48 7F048FD8 E62A008C */ swc1 $f10, 0x8c($s1) +/* 07DB4C 7F048FDC C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07DB50 7F048FE0 460CA03E */ c.le.s $f20, $f12 +/* 07DB54 7F048FE4 00000000 */ nop +/* 07DB58 7F048FE8 45000008 */ bc1f .Ljp7F04900C +/* 07DB5C 7F048FEC 00000000 */ nop +/* 07DB60 7F048FF0 46146101 */ sub.s $f4, $f12, $f20 +.Ljp7F048FF4: +/* 07DB64 7F048FF4 E624008C */ swc1 $f4, 0x8c($s1) +/* 07DB68 7F048FF8 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07DB6C 7F048FFC 460CA03E */ c.le.s $f20, $f12 +/* 07DB70 7F049000 00000000 */ nop +/* 07DB74 7F049004 4503FFFB */ bc1tl .Ljp7F048FF4 +/* 07DB78 7F049008 46146101 */ sub.s $f4, $f12, $f20 +.Ljp7F04900C: +/* 07DB7C 7F04900C 4616603C */ c.lt.s $f12, $f22 +/* 07DB80 7F049010 00000000 */ nop +/* 07DB84 7F049014 45020009 */ bc1fl .Ljp7F04903C +/* 07DB88 7F049018 C626008C */ lwc1 $f6, 0x8c($s1) +/* 07DB8C 7F04901C 46146200 */ add.s $f8, $f12, $f20 +.Ljp7F049020: +/* 07DB90 7F049020 E628008C */ swc1 $f8, 0x8c($s1) +/* 07DB94 7F049024 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07DB98 7F049028 4616603C */ c.lt.s $f12, $f22 +/* 07DB9C 7F04902C 00000000 */ nop +/* 07DBA0 7F049030 4503FFFB */ bc1tl .Ljp7F049020 +/* 07DBA4 7F049034 46146200 */ add.s $f8, $f12, $f20 +.Ljp7F049038: +/* 07DBA8 7F049038 C626008C */ lwc1 $f6, 0x8c($s1) +.Ljp7F04903C: +/* 07DBAC 7F04903C 46003280 */ add.s $f10, $f6, $f0 +/* 07DBB0 7F049040 E62A008C */ swc1 $f10, 0x8c($s1) +/* 07DBB4 7F049044 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07DBB8 7F049048 460CA03E */ c.le.s $f20, $f12 +/* 07DBBC 7F04904C 00000000 */ nop +/* 07DBC0 7F049050 45020009 */ bc1fl .Ljp7F049078 +/* 07DBC4 7F049054 4616603C */ c.lt.s $f12, $f22 +/* 07DBC8 7F049058 46146101 */ sub.s $f4, $f12, $f20 +.Ljp7F04905C: +/* 07DBCC 7F04905C E624008C */ swc1 $f4, 0x8c($s1) +/* 07DBD0 7F049060 C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07DBD4 7F049064 460CA03E */ c.le.s $f20, $f12 +/* 07DBD8 7F049068 00000000 */ nop +/* 07DBDC 7F04906C 4503FFFB */ bc1tl .Ljp7F04905C +/* 07DBE0 7F049070 46146101 */ sub.s $f4, $f12, $f20 +/* 07DBE4 7F049074 4616603C */ c.lt.s $f12, $f22 +.Ljp7F049078: +/* 07DBE8 7F049078 00000000 */ nop +/* 07DBEC 7F04907C 45000008 */ bc1f .Ljp7F0490A0 +/* 07DBF0 7F049080 00000000 */ nop +/* 07DBF4 7F049084 46146200 */ add.s $f8, $f12, $f20 +.Ljp7F049088: +/* 07DBF8 7F049088 E628008C */ swc1 $f8, 0x8c($s1) +/* 07DBFC 7F04908C C62C008C */ lwc1 $f12, 0x8c($s1) +/* 07DC00 7F049090 4616603C */ c.lt.s $f12, $f22 +/* 07DC04 7F049094 00000000 */ nop +/* 07DC08 7F049098 4503FFFB */ bc1tl .Ljp7F049088 +/* 07DC0C 7F04909C 46146200 */ add.s $f8, $f12, $f20 +.Ljp7F0490A0: +/* 07DC10 7F0490A0 0FC162A4 */ jal sub_GAME_7F058570 +/* 07DC14 7F0490A4 27A502B0 */ addiu $a1, $sp, 0x2b0 +/* 07DC18 7F0490A8 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07DC1C 7F0490AC 4606B03C */ c.lt.s $f22, $f6 +/* 07DC20 7F0490B0 00000000 */ nop +/* 07DC24 7F0490B4 4502002B */ bc1fl .Ljp7F049164 +/* 07DC28 7F0490B8 C62C0090 */ lwc1 $f12, 0x90($s1) +/* 07DC2C 7F0490BC 8FAA0264 */ lw $t2, 0x264($sp) +/* 07DC30 7F0490C0 C60A0008 */ lwc1 $f10, 8($s0) +/* 07DC34 7F0490C4 C62C009C */ lwc1 $f12, 0x9c($s1) +/* 07DC38 7F0490C8 C5440008 */ lwc1 $f4, 8($t2) +/* 07DC3C 7F0490CC C6860014 */ lwc1 $f6, 0x14($s4) +/* 07DC40 7F0490D0 4616603C */ c.lt.s $f12, $f22 +/* 07DC44 7F0490D4 46045201 */ sub.s $f8, $f10, $f4 +/* 07DC48 7F0490D8 46064082 */ mul.s $f2, $f8, $f6 +/* 07DC4C 7F0490DC 45020003 */ bc1fl .Ljp7F0490EC +/* 07DC50 7F0490E0 E7A20254 */ swc1 $f2, 0x254($sp) +/* 07DC54 7F0490E4 46006307 */ neg.s $f12, $f12 +/* 07DC58 7F0490E8 E7A20254 */ swc1 $f2, 0x254($sp) +.Ljp7F0490EC: +/* 07DC5C 7F0490EC 0FC160F3 */ jal sinf +/* 07DC60 7F0490F0 E7AC0250 */ swc1 $f12, 0x250($sp) +/* 07DC64 7F0490F4 C7A20254 */ lwc1 $f2, 0x254($sp) +/* 07DC68 7F0490F8 C7AC0250 */ lwc1 $f12, 0x250($sp) +/* 07DC6C 7F0490FC 46020282 */ mul.s $f10, $f0, $f2 +/* 07DC70 7F049100 0FC160F0 */ jal cosf +/* 07DC74 7F049104 E7AA024C */ swc1 $f10, 0x24c($sp) +/* 07DC78 7F049108 C7A20254 */ lwc1 $f2, 0x254($sp) +/* 07DC7C 7F04910C C6280088 */ lwc1 $f8, 0x88($s1) +/* 07DC80 7F049110 C7AC024C */ lwc1 $f12, 0x24c($sp) +/* 07DC84 7F049114 46020102 */ mul.s $f4, $f0, $f2 +/* 07DC88 7F049118 46081181 */ sub.s $f6, $f2, $f8 +/* 07DC8C 7F04911C 0FC16BD4 */ jal convert_angle_using_inverse +/* 07DC90 7F049120 46062381 */ sub.s $f14, $f4, $f6 +/* 07DC94 7F049124 C7A20250 */ lwc1 $f2, 0x250($sp) +/* 07DC98 7F049128 E6200090 */ swc1 $f0, 0x90($s1) +/* 07DC9C 7F04912C 4602003C */ c.lt.s $f0, $f2 +/* 07DCA0 7F049130 00000000 */ nop +/* 07DCA4 7F049134 45020003 */ bc1fl .Ljp7F049144 +/* 07DCA8 7F049138 C62A009C */ lwc1 $f10, 0x9c($s1) +/* 07DCAC 7F04913C E6220090 */ swc1 $f2, 0x90($s1) +/* 07DCB0 7F049140 C62A009C */ lwc1 $f10, 0x9c($s1) +.Ljp7F049144: +/* 07DCB4 7F049144 460AB03C */ c.lt.s $f22, $f10 +/* 07DCB8 7F049148 00000000 */ nop +/* 07DCBC 7F04914C 45020005 */ bc1fl .Ljp7F049164 +/* 07DCC0 7F049150 C62C0090 */ lwc1 $f12, 0x90($s1) +/* 07DCC4 7F049154 C6280090 */ lwc1 $f8, 0x90($s1) +/* 07DCC8 7F049158 4608A101 */ sub.s $f4, $f20, $f8 +/* 07DCCC 7F04915C E6240090 */ swc1 $f4, 0x90($s1) +/* 07DCD0 7F049160 C62C0090 */ lwc1 $f12, 0x90($s1) +.Ljp7F049164: +/* 07DCD4 7F049164 0FC162C7 */ jal sub_GAME_7F0585FC +/* 07DCD8 7F049168 27A50270 */ addiu $a1, $sp, 0x270 +/* 07DCDC 7F04916C 264500C0 */ addiu $a1, $s2, 0xc0 +/* 07DCE0 7F049170 AFA50078 */ sw $a1, 0x78($sp) +/* 07DCE4 7F049174 0FC16150 */ jal sub_GAME_7F058020 +/* 07DCE8 7F049178 27A402B0 */ addiu $a0, $sp, 0x2b0 +/* 07DCEC 7F04917C 02002025 */ move $a0, $s0 +/* 07DCF0 7F049180 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DCF4 7F049184 8FA50078 */ lw $a1, 0x78($sp) +/* 07DCF8 7F049188 02402025 */ move $a0, $s2 +/* 07DCFC 7F04918C 0FC1616E */ jal sub_GAME_7F058098 +/* 07DD00 7F049190 8FA50078 */ lw $a1, 0x78($sp) +/* 07DD04 7F049194 26500100 */ addiu $s0, $s2, 0x100 +/* 07DD08 7F049198 02002825 */ move $a1, $s0 +/* 07DD0C 7F04919C 0FC16150 */ jal sub_GAME_7F058020 +/* 07DD10 7F0491A0 27A402B0 */ addiu $a0, $sp, 0x2b0 +/* 07DD14 7F0491A4 8FA40258 */ lw $a0, 0x258($sp) +/* 07DD18 7F0491A8 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DD1C 7F0491AC 02002825 */ move $a1, $s0 +/* 07DD20 7F0491B0 02402025 */ move $a0, $s2 +/* 07DD24 7F0491B4 0FC1616E */ jal sub_GAME_7F058098 +/* 07DD28 7F0491B8 02002825 */ move $a1, $s0 +/* 07DD2C 7F0491BC 27A40270 */ addiu $a0, $sp, 0x270 +/* 07DD30 7F0491C0 0FC1616E */ jal sub_GAME_7F058098 +/* 07DD34 7F0491C4 27A502B0 */ addiu $a1, $sp, 0x2b0 +/* 07DD38 7F0491C8 26450040 */ addiu $a1, $s2, 0x40 +/* 07DD3C 7F0491CC AFA50070 */ sw $a1, 0x70($sp) +/* 07DD40 7F0491D0 0FC16150 */ jal sub_GAME_7F058020 +/* 07DD44 7F0491D4 27A402B0 */ addiu $a0, $sp, 0x2b0 +/* 07DD48 7F0491D8 8FA40264 */ lw $a0, 0x264($sp) +/* 07DD4C 7F0491DC 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DD50 7F0491E0 8FA50070 */ lw $a1, 0x70($sp) +/* 07DD54 7F0491E4 02402025 */ move $a0, $s2 +/* 07DD58 7F0491E8 0FC1616E */ jal sub_GAME_7F058098 +/* 07DD5C 7F0491EC 8FA50070 */ lw $a1, 0x70($sp) +/* 07DD60 7F0491F0 26450080 */ addiu $a1, $s2, 0x80 +/* 07DD64 7F0491F4 AFA5006C */ sw $a1, 0x6c($sp) +/* 07DD68 7F0491F8 0FC16150 */ jal sub_GAME_7F058020 +/* 07DD6C 7F0491FC 27A402B0 */ addiu $a0, $sp, 0x2b0 +/* 07DD70 7F049200 8FA40260 */ lw $a0, 0x260($sp) +/* 07DD74 7F049204 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DD78 7F049208 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DD7C 7F04920C 02402025 */ move $a0, $s2 +/* 07DD80 7F049210 0FC1616E */ jal sub_GAME_7F058098 +/* 07DD84 7F049214 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DD88 7F049218 100000EC */ b .Ljp7F0495CC +/* 07DD8C 7F04921C 8E8C0008 */ lw $t4, 8($s4) +/* 07DD90 7F049220 24010028 */ li $at, 40 +.Ljp7F049224: +/* 07DD94 7F049224 14410086 */ bne $v0, $at, .Ljp7F049440 +/* 07DD98 7F049228 00000000 */ nop +/* 07DD9C 7F04922C 8E8F0008 */ lw $t7, 8($s4) +/* 07DDA0 7F049230 3C188005 */ lui $t8, %hi(clock_timer) # $t8, 0x8005 +/* 07DDA4 7F049234 8F1883A4 */ lw $t8, %lo(clock_timer)($t8) +/* 07DDA8 7F049238 8DED0008 */ lw $t5, 8($t7) +/* 07DDAC 7F04923C 8FA90680 */ lw $t1, 0x680($sp) +/* 07DDB0 7F049240 27B001B4 */ addiu $s0, $sp, 0x1b4 +/* 07DDB4 7F049244 8DB90008 */ lw $t9, 8($t5) +/* 07DDB8 7F049248 3C0C8003 */ lui $t4, %hi(D_80030B34) # $t4, 0x8003 +/* 07DDBC 7F04924C 02402025 */ move $a0, $s2 +/* 07DDC0 7F049250 8F280004 */ lw $t0, 4($t9) +/* 07DDC4 7F049254 26450040 */ addiu $a1, $s2, 0x40 +/* 07DDC8 7F049258 1B00001E */ blez $t8, .Ljp7F0492D4 +/* 07DDCC 7F04925C AFA80200 */ sw $t0, 0x200($sp) +/* 07DDD0 7F049260 5120001D */ beql $t1, $zero, .Ljp7F0492D8 +/* 07DDD4 7F049264 8E2B0014 */ lw $t3, 0x14($s1) +/* 07DDD8 7F049268 C6260088 */ lwc1 $f6, 0x88($s1) +/* 07DDDC 7F04926C C62A008C */ lwc1 $f10, 0x8c($s1) +/* 07DDE0 7F049270 460A3200 */ add.s $f8, $f6, $f10 +/* 07DDE4 7F049274 E6280088 */ swc1 $f8, 0x88($s1) +/* 07DDE8 7F049278 C6200088 */ lwc1 $f0, 0x88($s1) +/* 07DDEC 7F04927C 4600A03E */ c.le.s $f20, $f0 +/* 07DDF0 7F049280 00000000 */ nop +/* 07DDF4 7F049284 45020009 */ bc1fl .Ljp7F0492AC +/* 07DDF8 7F049288 4616003C */ c.lt.s $f0, $f22 +/* 07DDFC 7F04928C 46140101 */ sub.s $f4, $f0, $f20 +.Ljp7F049290: +/* 07DE00 7F049290 E6240088 */ swc1 $f4, 0x88($s1) +/* 07DE04 7F049294 C6200088 */ lwc1 $f0, 0x88($s1) +/* 07DE08 7F049298 4600A03E */ c.le.s $f20, $f0 +/* 07DE0C 7F04929C 00000000 */ nop +/* 07DE10 7F0492A0 4503FFFB */ bc1tl .Ljp7F049290 +/* 07DE14 7F0492A4 46140101 */ sub.s $f4, $f0, $f20 +/* 07DE18 7F0492A8 4616003C */ c.lt.s $f0, $f22 +.Ljp7F0492AC: +/* 07DE1C 7F0492AC 00000000 */ nop +/* 07DE20 7F0492B0 45020009 */ bc1fl .Ljp7F0492D8 +/* 07DE24 7F0492B4 8E2B0014 */ lw $t3, 0x14($s1) +/* 07DE28 7F0492B8 46140180 */ add.s $f6, $f0, $f20 +.Ljp7F0492BC: +/* 07DE2C 7F0492BC E6260088 */ swc1 $f6, 0x88($s1) +/* 07DE30 7F0492C0 C6200088 */ lwc1 $f0, 0x88($s1) +/* 07DE34 7F0492C4 4616003C */ c.lt.s $f0, $f22 +/* 07DE38 7F0492C8 00000000 */ nop +/* 07DE3C 7F0492CC 4503FFFB */ bc1tl .Ljp7F0492BC +/* 07DE40 7F0492D0 46140180 */ add.s $f6, $f0, $f20 +.Ljp7F0492D4: +/* 07DE44 7F0492D4 8E2B0014 */ lw $t3, 0x14($s1) +.Ljp7F0492D8: +/* 07DE48 7F0492D8 258C0B74 */ addiu $t4, %lo(D_80030B34) # addiu $t4, $t4, 0xb74 +/* 07DE4C 7F0492DC 258F003C */ addiu $t7, $t4, 0x3c +/* 07DE50 7F0492E0 8D6E0020 */ lw $t6, 0x20($t3) +/* 07DE54 7F0492E4 02006825 */ move $t5, $s0 +/* 07DE58 7F0492E8 11C00015 */ beqz $t6, .Ljp7F049340 +/* 07DE5C 7F0492EC 00000000 */ nop +.Ljp7F0492F0: +/* 07DE60 7F0492F0 8D810000 */ lw $at, ($t4) +/* 07DE64 7F0492F4 258C000C */ addiu $t4, $t4, 0xc +/* 07DE68 7F0492F8 25AD000C */ addiu $t5, $t5, 0xc +/* 07DE6C 7F0492FC ADA1FFF4 */ sw $at, -0xc($t5) +/* 07DE70 7F049300 8D81FFF8 */ lw $at, -8($t4) +/* 07DE74 7F049304 ADA1FFF8 */ sw $at, -8($t5) +/* 07DE78 7F049308 8D81FFFC */ lw $at, -4($t4) +/* 07DE7C 7F04930C 158FFFF8 */ bne $t4, $t7, .Ljp7F0492F0 +/* 07DE80 7F049310 ADA1FFFC */ sw $at, -4($t5) +/* 07DE84 7F049314 8D810000 */ lw $at, ($t4) +/* 07DE88 7F049318 0FC1E26D */ jal get_BONDdata_field_10CC +/* 07DE8C 7F04931C ADA10000 */ sw $at, ($t5) +/* 07DE90 7F049320 AFA201B4 */ sw $v0, 0x1b4($sp) +/* 07DE94 7F049324 AFB201C4 */ sw $s2, 0x1c4($sp) +/* 07DE98 7F049328 8E250014 */ lw $a1, 0x14($s1) +/* 07DE9C 7F04932C 0FC1BE3A */ jal subcalcmatrices +/* 07DEA0 7F049330 02002025 */ move $a0, $s0 +/* 07DEA4 7F049334 26590040 */ addiu $t9, $s2, 0x40 +/* 07DEA8 7F049338 10000003 */ b .Ljp7F049348 +/* 07DEAC 7F04933C AFB90070 */ sw $t9, 0x70($sp) +.Ljp7F049340: +/* 07DEB0 7F049340 0FC16150 */ jal sub_GAME_7F058020 +/* 07DEB4 7F049344 AFA50070 */ sw $a1, 0x70($sp) +.Ljp7F049348: +/* 07DEB8 7F049348 8E280008 */ lw $t0, 8($s1) +/* 07DEBC 7F04934C 27A50204 */ addiu $a1, $sp, 0x204 +/* 07DEC0 7F049350 0008C080 */ sll $t8, $t0, 2 +/* 07DEC4 7F049354 07010006 */ bgez $t8, .Ljp7F049370 +/* 07DEC8 7F049358 00000000 */ nop +/* 07DECC 7F04935C C62C0088 */ lwc1 $f12, 0x88($s1) +/* 07DED0 7F049360 0FC162EA */ jal sub_GAME_7F058688 +/* 07DED4 7F049364 27A50204 */ addiu $a1, $sp, 0x204 +/* 07DED8 7F049368 10000004 */ b .Ljp7F04937C +/* 07DEDC 7F04936C 26450080 */ addiu $a1, $s2, 0x80 +.Ljp7F049370: +/* 07DEE0 7F049370 0FC162C7 */ jal sub_GAME_7F0585FC +/* 07DEE4 7F049374 C62C0088 */ lwc1 $f12, 0x88($s1) +/* 07DEE8 7F049378 26450080 */ addiu $a1, $s2, 0x80 +.Ljp7F04937C: +/* 07DEEC 7F04937C AFA5006C */ sw $a1, 0x6c($sp) +/* 07DEF0 7F049380 0FC16150 */ jal sub_GAME_7F058020 +/* 07DEF4 7F049384 27A40204 */ addiu $a0, $sp, 0x204 +/* 07DEF8 7F049388 8FA40200 */ lw $a0, 0x200($sp) +/* 07DEFC 7F04938C 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DF00 7F049390 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DF04 7F049394 8FA40070 */ lw $a0, 0x70($sp) +/* 07DF08 7F049398 0FC1616E */ jal sub_GAME_7F058098 +/* 07DF0C 7F04939C 8FA5006C */ lw $a1, 0x6c($sp) +/* 07DF10 7F0493A0 8E890008 */ lw $t1, 8($s4) +/* 07DF14 7F0493A4 02802025 */ move $a0, $s4 +/* 07DF18 7F0493A8 00003025 */ move $a2, $zero +/* 07DF1C 7F0493AC 8D230008 */ lw $v1, 8($t1) +/* 07DF20 7F0493B0 8C65000C */ lw $a1, 0xc($v1) +/* 07DF24 7F0493B4 50A00013 */ beql $a1, $zero, .Ljp7F049404 +/* 07DF28 7F0493B8 8C650010 */ lw $a1, 0x10($v1) +/* 07DF2C 7F0493BC 0FC1B314 */ jal sub_GAME_7F06C660 +/* 07DF30 7F0493C0 8CB20004 */ lw $s2, 4($a1) +/* 07DF34 7F0493C4 00408025 */ move $s0, $v0 +/* 07DF38 7F0493C8 C62C0088 */ lwc1 $f12, 0x88($s1) +/* 07DF3C 7F0493CC 0FC162A4 */ jal sub_GAME_7F058570 +/* 07DF40 7F0493D0 27A50204 */ addiu $a1, $sp, 0x204 +/* 07DF44 7F0493D4 27A40204 */ addiu $a0, $sp, 0x204 +/* 07DF48 7F0493D8 0FC16150 */ jal sub_GAME_7F058020 +/* 07DF4C 7F0493DC 02002825 */ move $a1, $s0 +/* 07DF50 7F0493E0 02402025 */ move $a0, $s2 +/* 07DF54 7F0493E4 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07DF58 7F0493E8 02002825 */ move $a1, $s0 +/* 07DF5C 7F0493EC 8FA40070 */ lw $a0, 0x70($sp) +/* 07DF60 7F0493F0 0FC1616E */ jal sub_GAME_7F058098 +/* 07DF64 7F0493F4 02002825 */ move $a1, $s0 +/* 07DF68 7F0493F8 8E8B0008 */ lw $t3, 8($s4) +/* 07DF6C 7F0493FC 8D630008 */ lw $v1, 8($t3) +/* 07DF70 7F049400 8C650010 */ lw $a1, 0x10($v1) +.Ljp7F049404: +/* 07DF74 7F049404 02802025 */ move $a0, $s4 +/* 07DF78 7F049408 00003025 */ move $a2, $zero +/* 07DF7C 7F04940C 50A0006F */ beql $a1, $zero, .Ljp7F0495CC +/* 07DF80 7F049410 8E8C0008 */ lw $t4, 8($s4) +/* 07DF84 7F049414 0FC1B314 */ jal sub_GAME_7F06C660 +/* 07DF88 7F049418 8CB20004 */ lw $s2, 4($a1) +/* 07DF8C 7F04941C 00408025 */ move $s0, $v0 +/* 07DF90 7F049420 02402025 */ move $a0, $s2 +/* 07DF94 7F049424 0FC163A1 */ jal init_something_copy_posdata_to_it +/* 07DF98 7F049428 00402825 */ move $a1, $v0 +/* 07DF9C 7F04942C 8FA40070 */ lw $a0, 0x70($sp) +/* 07DFA0 7F049430 0FC1616E */ jal sub_GAME_7F058098 +/* 07DFA4 7F049434 02002825 */ move $a1, $s0 +/* 07DFA8 7F049438 10000064 */ b .Ljp7F0495CC +/* 07DFAC 7F04943C 8E8C0008 */ lw $t4, 8($s4) +.Ljp7F049440: +/* 07DFB0 7F049440 16020061 */ bne $s0, $v0, .Ljp7F0495C8 +/* 07DFB4 7F049444 26450040 */ addiu $a1, $s2, 0x40 +/* 07DFB8 7F049448 8E8E0008 */ lw $t6, 8($s4) +/* 07DFBC 7F04944C 8DC30008 */ lw $v1, 8($t6) +/* 07DFC0 7F049450 8C6F000C */ lw $t7, 0xc($v1) +/* 07DFC4 7F049454 8C6A0004 */ lw $t2, 4($v1) +/* 07DFC8 7F049458 8DEC0004 */ lw $t4, 4($t7) +/* 07DFCC 7F04945C 8D500004 */ lw $s0, 4($t2) +/* 07DFD0 7F049460 AFAC0168 */ sw $t4, 0x168($sp) +/* 07DFD4 7F049464 8C6D0010 */ lw $t5, 0x10($v1) +/* 07DFD8 7F049468 8DB90004 */ lw $t9, 4($t5) +/* 07DFDC 7F04946C AFB90164 */ sw $t9, 0x164($sp) +/* 07DFE0 7F049470 8C680008 */ lw $t0, 8($v1) +/* 07DFE4 7F049474 8D180004 */ lw $t8, 4($t0) +/* 07DFE8 7F049478 AFB80160 */ sw $t8, 0x160($sp) +/* 07DFEC 7F04947C 8C690018 */ lw $t1, 0x18($v1) +/* 07DFF0 7F049480 8D2B0004 */ lw $t3, 4($t1) +/* 07DFF4 7F049484 AFAB015C */ sw $t3, 0x15c($sp) +/* 07DFF8 7F049488 C62E00C8 */ lwc1 $f14, 0xc8($s1) +/* 07DFFC 7F04948C 46007387 */ neg.s $f14, $f14 +/* 07E000 7F049490 4616703C */ c.lt.s $f14, $f22 +/* 07E004 7F049494 00000000 */ nop +/* 07E008 7F049498 45020003 */ bc1fl .Ljp7F0494A8 +/* 07E00C 7F04949C C62C00CC */ lwc1 $f12, 0xcc($s1) +/* 07E010 7F0494A0 46147380 */ add.s $f14, $f14, $f20 +/* 07E014 7F0494A4 C62C00CC */ lwc1 $f12, 0xcc($s1) +.Ljp7F0494A8: +/* 07E018 7F0494A8 46006307 */ neg.s $f12, $f12 +/* 07E01C 7F0494AC 4616603C */ c.lt.s $f12, $f22 +/* 07E020 7F0494B0 00000000 */ nop +/* 07E024 7F0494B4 45020003 */ bc1fl .Ljp7F0494C4 +/* 07E028 7F0494B8 AFA50070 */ sw $a1, 0x70($sp) +/* 07E02C 7F0494BC 46146300 */ add.s $f12, $f12, $f20 +/* 07E030 7F0494C0 AFA50070 */ sw $a1, 0x70($sp) +.Ljp7F0494C4: +/* 07E034 7F0494C4 0FC162C7 */ jal sub_GAME_7F0585FC +/* 07E038 7F0494C8 E7AE0158 */ swc1 $f14, 0x158($sp) +/* 07E03C 7F0494CC 02002025 */ move $a0, $s0 +/* 07E040 7F0494D0 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07E044 7F0494D4 8FA50070 */ lw $a1, 0x70($sp) +/* 07E048 7F0494D8 02402025 */ move $a0, $s2 +/* 07E04C 7F0494DC 0FC1616E */ jal sub_GAME_7F058098 +/* 07E050 7F0494E0 8FA50070 */ lw $a1, 0x70($sp) +/* 07E054 7F0494E4 264500C0 */ addiu $a1, $s2, 0xc0 +/* 07E058 7F0494E8 C7AC0158 */ lwc1 $f12, 0x158($sp) +/* 07E05C 7F0494EC 0FC162A4 */ jal sub_GAME_7F058570 +/* 07E060 7F0494F0 AFA50078 */ sw $a1, 0x78($sp) +/* 07E064 7F0494F4 8FA40168 */ lw $a0, 0x168($sp) +/* 07E068 7F0494F8 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07E06C 7F0494FC 8FA50078 */ lw $a1, 0x78($sp) +/* 07E070 7F049500 8FA40070 */ lw $a0, 0x70($sp) +/* 07E074 7F049504 0FC1616E */ jal sub_GAME_7F058098 +/* 07E078 7F049508 8FA50078 */ lw $a1, 0x78($sp) +/* 07E07C 7F04950C 3C018005 */ lui $at, %hi(D_80052B70) # $at, 0x8005 +/* 07E080 7F049510 26500100 */ addiu $s0, $s2, 0x100 +/* 07E084 7F049514 02002825 */ move $a1, $s0 +/* 07E088 7F049518 0FC162C7 */ jal sub_GAME_7F0585FC +/* 07E08C 7F04951C C42C2BA0 */ lwc1 $f12, %lo(D_80052B70)($at) +/* 07E090 7F049520 8FA40164 */ lw $a0, 0x164($sp) +/* 07E094 7F049524 0FC163AE */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 07E098 7F049528 02002825 */ move $a1, $s0 +/* 07E09C 7F04952C 8FA40078 */ lw $a0, 0x78($sp) +/* 07E0A0 7F049530 0FC1616E */ jal sub_GAME_7F058098 +/* 07E0A4 7F049534 02002825 */ move $a1, $s0 +/* 07E0A8 7F049538 26450080 */ addiu $a1, $s2, 0x80 +/* 07E0AC 7F04953C AFA5006C */ sw $a1, 0x6c($sp) +/* 07E0B0 7F049540 0FC163A1 */ jal init_something_copy_posdata_to_it +/* 07E0B4 7F049544 8FA40160 */ lw $a0, 0x160($sp) +/* 07E0B8 7F049548 8FA40070 */ lw $a0, 0x70($sp) +/* 07E0BC 7F04954C 0FC1616E */ jal sub_GAME_7F058098 +/* 07E0C0 7F049550 8FA5006C */ lw $a1, 0x6c($sp) +/* 07E0C4 7F049554 0FC1E28D */ jal sub_GAME_7F078444 +/* 07E0C8 7F049558 00000000 */ nop +/* 07E0CC 7F04955C 27B00170 */ addiu $s0, $sp, 0x170 +/* 07E0D0 7F049560 02003025 */ move $a2, $s0 +/* 07E0D4 7F049564 00402025 */ move $a0, $v0 +/* 07E0D8 7F049568 0FC161AB */ jal sub_GAME_7F05818C +/* 07E0DC 7F04956C 8FA50070 */ lw $a1, 0x70($sp) +/* 07E0E0 7F049570 8FA4015C */ lw $a0, 0x15c($sp) +/* 07E0E4 7F049574 02002825 */ move $a1, $s0 +/* 07E0E8 7F049578 26260084 */ addiu $a2, $s1, 0x84 +/* 07E0EC 7F04957C 0FC0FE10 */ jal sub_GAME_7F03F540 +/* 07E0F0 7F049580 26270080 */ addiu $a3, $s1, 0x80 +/* 07E0F4 7F049584 8E8E0008 */ lw $t6, 8($s4) +/* 07E0F8 7F049588 8DC30008 */ lw $v1, 8($t6) +/* 07E0FC 7F04958C 8C65001C */ lw $a1, 0x1c($v1) +/* 07E100 7F049590 50A00008 */ beql $a1, $zero, .Ljp7F0495B4 +/* 07E104 7F049594 8C650020 */ lw $a1, 0x20($v1) +/* 07E108 7F049598 0FC1B363 */ jal extract_id_from_object_structure_microcode +/* 07E10C 7F04959C 02802025 */ move $a0, $s4 +/* 07E110 7F0495A0 8E2A00C4 */ lw $t2, 0xc4($s1) +/* 07E114 7F0495A4 A44A0000 */ sh $t2, ($v0) +/* 07E118 7F0495A8 8E8F0008 */ lw $t7, 8($s4) +/* 07E11C 7F0495AC 8DE30008 */ lw $v1, 8($t7) +/* 07E120 7F0495B0 8C650020 */ lw $a1, 0x20($v1) +.Ljp7F0495B4: +/* 07E124 7F0495B4 50A00005 */ beql $a1, $zero, .Ljp7F0495CC +/* 07E128 7F0495B8 8E8C0008 */ lw $t4, 8($s4) +/* 07E12C 7F0495BC 0FC1B363 */ jal extract_id_from_object_structure_microcode +/* 07E130 7F0495C0 02802025 */ move $a0, $s4 +/* 07E134 7F0495C4 AC400000 */ sw $zero, ($v0) +.Ljp7F0495C8: +/* 07E138 7F0495C8 8E8C0008 */ lw $t4, 8($s4) +.Ljp7F0495CC: +/* 07E13C 7F0495CC 02802025 */ move $a0, $s4 +/* 07E140 7F0495D0 0FC1BD25 */ jal sub_GAME_7F06EEA4 +/* 07E144 7F0495D4 8D850000 */ lw $a1, ($t4) +/* 07E148 7F0495D8 8E8D000C */ lw $t5, 0xc($s4) +/* 07E14C 7F0495DC 02602025 */ move $a0, $s3 +/* 07E150 7F0495E0 C5AA0038 */ lwc1 $f10, 0x38($t5) +/* 07E154 7F0495E4 46005207 */ neg.s $f8, $f10 +/* 07E158 7F0495E8 0FC1101D */ jal handle_thrown_explosive_detonation +/* 07E15C 7F0495EC E6680018 */ swc1 $f8, 0x18($s3) +/* 07E160 7F0495F0 8E640020 */ lw $a0, 0x20($s3) +/* 07E164 7F0495F4 50800018 */ beql $a0, $zero, .Ljp7F049658 +/* 07E168 7F0495F8 8E230064 */ lw $v1, 0x64($s1) +/* 07E16C 7F0495FC 8C820024 */ lw $v0, 0x24($a0) +.Ljp7F049600: +/* 07E170 7F049600 0FC11171 */ jal sub_GAME_7F0442DC +/* 07E174 7F049604 AFA2068C */ sw $v0, 0x68c($sp) +/* 07E178 7F049608 8FA4068C */ lw $a0, 0x68c($sp) +/* 07E17C 7F04960C 5480FFFC */ bnezl $a0, .Ljp7F049600 +/* 07E180 7F049610 8C820024 */ lw $v0, 0x24($a0) +/* 07E184 7F049614 10000010 */ b .Ljp7F049658 +/* 07E188 7F049618 8E230064 */ lw $v1, 0x64($s1) +.Ljp7F04961C: +/* 07E18C 7F04961C 92790001 */ lbu $t9, 1($s3) +/* 07E190 7F049620 02602025 */ move $a0, $s3 +/* 07E194 7F049624 3328FFFD */ andi $t0, $t9, 0xfffd +/* 07E198 7F049628 0FC1101D */ jal handle_thrown_explosive_detonation +/* 07E19C 7F04962C A2680001 */ sb $t0, 1($s3) +/* 07E1A0 7F049630 8E640020 */ lw $a0, 0x20($s3) +/* 07E1A4 7F049634 50800008 */ beql $a0, $zero, .Ljp7F049658 +/* 07E1A8 7F049638 8E230064 */ lw $v1, 0x64($s1) +/* 07E1AC 7F04963C 8C820024 */ lw $v0, 0x24($a0) +.Ljp7F049640: +/* 07E1B0 7F049640 0FC1114D */ jal sub_GAME_7F04424C +/* 07E1B4 7F049644 AFA2068C */ sw $v0, 0x68c($sp) +/* 07E1B8 7F049648 8FA4068C */ lw $a0, 0x68c($sp) +/* 07E1BC 7F04964C 5480FFFC */ bnezl $a0, .Ljp7F049640 +/* 07E1C0 7F049650 8C820024 */ lw $v0, 0x24($a0) +/* 07E1C4 7F049654 8E230064 */ lw $v1, 0x64($s1) +.Ljp7F049658: +/* 07E1C8 7F049658 2401FEFF */ li $at, -257 +/* 07E1CC 7F04965C 266B0008 */ addiu $t3, $s3, 8 +/* 07E1D0 7F049660 30780100 */ andi $t8, $v1, 0x100 +/* 07E1D4 7F049664 1300001F */ beqz $t8, .Ljp7F0496E4 +/* 07E1D8 7F049668 00614824 */ and $t1, $v1, $at +/* 07E1DC 7F04966C AE290064 */ sw $t1, 0x64($s1) +/* 07E1E0 7F049670 0C002918 */ jal get_random_value +/* 07E1E4 7F049674 AFAB0074 */ sw $t3, 0x74($sp) +/* 07E1E8 7F049678 44822000 */ mtc1 $v0, $f4 +/* 07E1EC 7F04967C 02202025 */ move $a0, $s1 +/* 07E1F0 7F049680 04410005 */ bgez $v0, .Ljp7F049698 +/* 07E1F4 7F049684 468021A0 */ cvt.s.w $f6, $f4 +/* 07E1F8 7F049688 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07E1FC 7F04968C 44815000 */ mtc1 $at, $f10 +/* 07E200 7F049690 00000000 */ nop +/* 07E204 7F049694 460A3180 */ add.s $f6, $f6, $f10 +.Ljp7F049698: +/* 07E208 7F049698 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07E20C 7F04969C 44814000 */ mtc1 $at, $f8 +/* 07E210 7F0496A0 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 07E214 7F0496A4 44815000 */ mtc1 $at, $f10 +/* 07E218 7F0496A8 46083102 */ mul.s $f4, $f6, $f8 +/* 07E21C 7F0496AC 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 07E220 7F0496B0 44814000 */ mtc1 $at, $f8 +/* 07E224 7F0496B4 8E2E0064 */ lw $t6, 0x64($s1) +/* 07E228 7F0496B8 3C010006 */ lui $at, 6 +/* 07E22C 7F0496BC 8FA60074 */ lw $a2, 0x74($sp) +/* 07E230 7F0496C0 01C15024 */ and $t2, $t6, $at +/* 07E234 7F0496C4 460A2182 */ mul.s $f6, $f4, $f10 +/* 07E238 7F0496C8 00003825 */ move $a3, $zero +/* 07E23C 7F0496CC 000A7C42 */ srl $t7, $t2, 0x11 +/* 07E240 7F0496D0 AFAF0010 */ sw $t7, 0x10($sp) +/* 07E244 7F0496D4 46083100 */ add.s $f4, $f6, $f8 +/* 07E248 7F0496D8 44052000 */ mfc1 $a1, $f4 +/* 07E24C 7F0496DC 0FC13943 */ jal maybe_detonate_object +/* 07E250 7F0496E0 00000000 */ nop +.Ljp7F0496E4: +/* 07E254 7F0496E4 8FAC0680 */ lw $t4, 0x680($sp) +/* 07E258 7F0496E8 5180020D */ beql $t4, $zero, .Ljp7F049F20 +/* 07E25C 7F0496EC 8FAD0688 */ lw $t5, 0x688($sp) +/* 07E260 7F0496F0 92220003 */ lbu $v0, 3($s1) +/* 07E264 7F0496F4 24010001 */ li $at, 1 +/* 07E268 7F0496F8 54410006 */ bnel $v0, $at, .Ljp7F049714 +/* 07E26C 7F0496FC 2401000D */ li $at, 13 +/* 07E270 7F049700 0FC14FCE */ jal sub_GAME_7F053A3C +/* 07E274 7F049704 8E640004 */ lw $a0, 4($s3) +/* 07E278 7F049708 10000202 */ b .Ljp7F049F14 +/* 07E27C 7F04970C 00000000 */ nop +/* 07E280 7F049710 2401000D */ li $at, 13 +.Ljp7F049714: +/* 07E284 7F049714 144101FF */ bne $v0, $at, .Ljp7F049F14 +/* 07E288 7F049718 00000000 */ nop +/* 07E28C 7F04971C 0FC3021B */ jal get_controls_locked_flag +/* 07E290 7F049720 00000000 */ nop +/* 07E294 7F049724 144001FB */ bnez $v0, .Ljp7F049F14 +/* 07E298 7F049728 00000000 */ nop +/* 07E29C 7F04972C 8E700004 */ lw $s0, 4($s3) +/* 07E2A0 7F049730 AFA00140 */ sw $zero, 0x140($sp) +/* 07E2A4 7F049734 AFA0013C */ sw $zero, 0x13c($sp) +/* 07E2A8 7F049738 8E0D00D0 */ lw $t5, 0xd0($s0) +/* 07E2AC 7F04973C 51A001E4 */ beql $t5, $zero, .Ljp7F049ED0 +/* 07E2B0 7F049740 8E8E0008 */ lw $t6, 8($s4) +/* 07E2B4 7F049744 8E390008 */ lw $t9, 8($s1) +/* 07E2B8 7F049748 001940C0 */ sll $t0, $t9, 3 +/* 07E2BC 7F04974C 050201E0 */ bltzl $t0, .Ljp7F049ED0 +/* 07E2C0 7F049750 8E8E0008 */ lw $t6, 8($s4) +/* 07E2C4 7F049754 8E1800AC */ lw $t8, 0xac($s0) +/* 07E2C8 7F049758 3C088005 */ lui $t0, %hi(global_timer) # $t0, 0x8005 +/* 07E2CC 7F04975C 27090001 */ addiu $t1, $t8, 1 +/* 07E2D0 7F049760 312B0001 */ andi $t3, $t1, 1 +/* 07E2D4 7F049764 AE0900AC */ sw $t1, 0xac($s0) +/* 07E2D8 7F049768 2D6E0001 */ sltiu $t6, $t3, 1 +/* 07E2DC 7F04976C AFAE0140 */ sw $t6, 0x140($sp) +/* 07E2E0 7F049770 8E8A0008 */ lw $t2, 8($s4) +/* 07E2E4 7F049774 396D0001 */ xori $t5, $t3, 1 +/* 07E2E8 7F049778 2DAD0001 */ sltiu $t5, $t5, 1 +/* 07E2EC 7F04977C 8D4F0008 */ lw $t7, 8($t2) +/* 07E2F0 7F049780 8DEC0014 */ lw $t4, 0x14($t7) +/* 07E2F4 7F049784 51800003 */ beql $t4, $zero, .Ljp7F049794 +/* 07E2F8 7F049788 8E1900C0 */ lw $t9, 0xc0($s0) +/* 07E2FC 7F04978C AFAD013C */ sw $t5, 0x13c($sp) +/* 07E300 7F049790 8E1900C0 */ lw $t9, 0xc0($s0) +.Ljp7F049794: +/* 07E304 7F049794 8D0883AC */ lw $t0, %lo(global_timer)($t0) +/* 07E308 7F049798 0328082A */ slt $at, $t9, $t0 +/* 07E30C 7F04979C 50200032 */ beql $at, $zero, .Ljp7F049868 +/* 07E310 7F0497A0 8FAC0140 */ lw $t4, 0x140($sp) +/* 07E314 7F0497A4 8E0400C4 */ lw $a0, 0xc4($s0) +/* 07E318 7F0497A8 50800008 */ beql $a0, $zero, .Ljp7F0497CC +/* 07E31C 7F0497AC 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07E320 7F0497B0 0C002380 */ jal sfxGetArg0Unk3F +/* 07E324 7F0497B4 00000000 */ nop +/* 07E328 7F0497B8 50400004 */ beql $v0, $zero, .Ljp7F0497CC +/* 07E32C 7F0497BC 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07E330 7F0497C0 0C00240C */ jal sfxDeactivate +/* 07E334 7F0497C4 8E0400C4 */ lw $a0, 0xc4($s0) +/* 07E338 7F0497C8 8E0400C8 */ lw $a0, 0xc8($s0) +.Ljp7F0497CC: +/* 07E33C 7F0497CC 50800008 */ beql $a0, $zero, .Ljp7F0497F0 +/* 07E340 7F0497D0 8E1800C4 */ lw $t8, 0xc4($s0) +/* 07E344 7F0497D4 0C002380 */ jal sfxGetArg0Unk3F +/* 07E348 7F0497D8 00000000 */ nop +/* 07E34C 7F0497DC 50400004 */ beql $v0, $zero, .Ljp7F0497F0 +/* 07E350 7F0497E0 8E1800C4 */ lw $t8, 0xc4($s0) +/* 07E354 7F0497E4 0C00240C */ jal sfxDeactivate +/* 07E358 7F0497E8 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07E35C 7F0497EC 8E1800C4 */ lw $t8, 0xc4($s0) +.Ljp7F0497F0: +/* 07E360 7F0497F0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07E364 7F0497F4 240500FD */ li $a1, 253 +/* 07E368 7F0497F8 1700000A */ bnez $t8, .Ljp7F049824 +/* 07E36C 7F0497FC 260600C4 */ addiu $a2, $s0, 0xc4 +/* 07E370 7F049800 26690008 */ addiu $t1, $s3, 8 +/* 07E374 7F049804 AFA90074 */ sw $t1, 0x74($sp) +/* 07E378 7F049808 0C002386 */ jal play_sfx_a1 +/* 07E37C 7F04980C 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07E380 7F049810 8E0400C4 */ lw $a0, 0xc4($s0) +/* 07E384 7F049814 0FC14FC3 */ jal sub_GAME_7F053A10 +/* 07E388 7F049818 8FA50074 */ lw $a1, 0x74($sp) +/* 07E38C 7F04981C 1000000D */ b .Ljp7F049854 +/* 07E390 7F049820 00000000 */ nop +.Ljp7F049824: +/* 07E394 7F049824 8E0B00C8 */ lw $t3, 0xc8($s0) +/* 07E398 7F049828 3C048006 */ lui $a0, %hi(ptr_sfx_buf) # $a0, 0x8006 +/* 07E39C 7F04982C 240500FD */ li $a1, 253 +/* 07E3A0 7F049830 15600008 */ bnez $t3, .Ljp7F049854 +/* 07E3A4 7F049834 260600C8 */ addiu $a2, $s0, 0xc8 +/* 07E3A8 7F049838 266E0008 */ addiu $t6, $s3, 8 +/* 07E3AC 7F04983C AFAE0074 */ sw $t6, 0x74($sp) +/* 07E3B0 7F049840 0C002386 */ jal play_sfx_a1 +/* 07E3B4 7F049844 8C843760 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 07E3B8 7F049848 8E0400C8 */ lw $a0, 0xc8($s0) +/* 07E3BC 7F04984C 0FC14FC3 */ jal sub_GAME_7F053A10 +/* 07E3C0 7F049850 8FA50074 */ lw $a1, 0x74($sp) +.Ljp7F049854: +/* 07E3C4 7F049854 3C0A8005 */ lui $t2, %hi(global_timer) # $t2, 0x8005 +/* 07E3C8 7F049858 8D4A83AC */ lw $t2, %lo(global_timer)($t2) +/* 07E3CC 7F04985C 254F0002 */ addiu $t7, $t2, 2 +/* 07E3D0 7F049860 AE0F00C0 */ sw $t7, 0xc0($s0) +/* 07E3D4 7F049864 8FAC0140 */ lw $t4, 0x140($sp) +.Ljp7F049868: +/* 07E3D8 7F049868 8FAD013C */ lw $t5, 0x13c($sp) +/* 07E3DC 7F04986C 24190001 */ li $t9, 1 +/* 07E3E0 7F049870 55800004 */ bnezl $t4, .Ljp7F049884 +/* 07E3E4 7F049874 AFB90120 */ sw $t9, 0x120($sp) +/* 07E3E8 7F049878 51A00195 */ beql $t5, $zero, .Ljp7F049ED0 +/* 07E3EC 7F04987C 8E8E0008 */ lw $t6, 8($s4) +/* 07E3F0 7F049880 AFB90120 */ sw $t9, 0x120($sp) +.Ljp7F049884: +/* 07E3F4 7F049884 AFA00110 */ sw $zero, 0x110($sp) +/* 07E3F8 7F049888 8E680014 */ lw $t0, 0x14($s3) +/* 07E3FC 7F04988C AFA8010C */ sw $t0, 0x10c($sp) +/* 07E400 7F049890 8E1800AC */ lw $t8, 0xac($s0) +/* 07E404 7F049894 33090003 */ andi $t1, $t8, 3 +/* 07E408 7F049898 2D2B0001 */ sltiu $t3, $t1, 1 +/* 07E40C 7F04989C 0FC2279B */ jal get_curplayer_positiondata +/* 07E410 7F0498A0 AFAB0108 */ sw $t3, 0x108($sp) +/* 07E414 7F0498A4 AFA20104 */ sw $v0, 0x104($sp) +/* 07E418 7F0498A8 8E8E0008 */ lw $t6, 8($s4) +/* 07E41C 7F0498AC 24040005 */ li $a0, 5 +/* 07E420 7F0498B0 8DC30008 */ lw $v1, 8($t6) +/* 07E424 7F0498B4 8C6A001C */ lw $t2, 0x1c($v1) +/* 07E428 7F0498B8 51400007 */ beql $t2, $zero, .Ljp7F0498D8 +/* 07E42C 7F0498BC 926D0001 */ lbu $t5, 1($s3) +/* 07E430 7F0498C0 8E0F00AC */ lw $t7, 0xac($s0) +/* 07E434 7F0498C4 31EC0007 */ andi $t4, $t7, 7 +/* 07E438 7F0498C8 55800003 */ bnezl $t4, .Ljp7F0498D8 +/* 07E43C 7F0498CC 926D0001 */ lbu $t5, 1($s3) +/* 07E440 7F0498D0 24040007 */ li $a0, 7 +/* 07E444 7F0498D4 926D0001 */ lbu $t5, 1($s3) +.Ljp7F0498D8: +/* 07E448 7F0498D8 31B90002 */ andi $t9, $t5, 2 +/* 07E44C 7F0498DC 1320002D */ beqz $t9, .Ljp7F049994 +/* 07E450 7F0498E0 00048880 */ sll $s1, $a0, 2 +/* 07E454 7F0498E4 00714021 */ addu $t0, $v1, $s1 +/* 07E458 7F0498E8 8D050000 */ lw $a1, ($t0) +/* 07E45C 7F0498EC 02802025 */ move $a0, $s4 +/* 07E460 7F0498F0 50A00029 */ beql $a1, $zero, .Ljp7F049998 +/* 07E464 7F0498F4 C6640008 */ lwc1 $f4, 8($s3) +/* 07E468 7F0498F8 0FC1B314 */ jal sub_GAME_7F06C660 +/* 07E46C 7F0498FC 00003025 */ move $a2, $zero +/* 07E470 7F049900 8E980008 */ lw $t8, 8($s4) +/* 07E474 7F049904 00409025 */ move $s2, $v0 +/* 07E478 7F049908 8F090008 */ lw $t1, 8($t8) +/* 07E47C 7F04990C 01315821 */ addu $t3, $t1, $s1 +/* 07E480 7F049910 8D6E0000 */ lw $t6, ($t3) +/* 07E484 7F049914 8DC30004 */ lw $v1, 4($t6) +/* 07E488 7F049918 C46A0000 */ lwc1 $f10, ($v1) +/* 07E48C 7F04991C E7AA0130 */ swc1 $f10, 0x130($sp) +/* 07E490 7F049920 C4660004 */ lwc1 $f6, 4($v1) +/* 07E494 7F049924 E7A60134 */ swc1 $f6, 0x134($sp) +/* 07E498 7F049928 C4680008 */ lwc1 $f8, 8($v1) +/* 07E49C 7F04992C 0FC1E28D */ jal sub_GAME_7F078444 +/* 07E4A0 7F049930 E7A80138 */ swc1 $f8, 0x138($sp) +/* 07E4A4 7F049934 27B100BC */ addiu $s1, $sp, 0xbc +/* 07E4A8 7F049938 02203025 */ move $a2, $s1 +/* 07E4AC 7F04993C 00402025 */ move $a0, $v0 +/* 07E4B0 7F049940 0FC161AB */ jal sub_GAME_7F05818C +/* 07E4B4 7F049944 02402825 */ move $a1, $s2 +/* 07E4B8 7F049948 02202025 */ move $a0, $s1 +/* 07E4BC 7F04994C 0FC16265 */ jal sub_GAME_7F058474 +/* 07E4C0 7F049950 27A50130 */ addiu $a1, $sp, 0x130 +/* 07E4C4 7F049954 C7A40138 */ lwc1 $f4, 0x138($sp) +/* 07E4C8 7F049958 8E650008 */ lw $a1, 8($s3) +/* 07E4CC 7F04995C 8E660010 */ lw $a2, 0x10($s3) +/* 07E4D0 7F049960 27A4010C */ addiu $a0, $sp, 0x10c +/* 07E4D4 7F049964 8FA70130 */ lw $a3, 0x130($sp) +/* 07E4D8 7F049968 0FC2C5E5 */ jal sub_GAME_7F0B0BE4 +/* 07E4DC 7F04996C E7A40010 */ swc1 $f4, 0x10($sp) +/* 07E4E0 7F049970 1440000E */ bnez $v0, .Ljp7F0499AC +/* 07E4E4 7F049974 00000000 */ nop +/* 07E4E8 7F049978 C66A0008 */ lwc1 $f10, 8($s3) +/* 07E4EC 7F04997C E7AA0130 */ swc1 $f10, 0x130($sp) +/* 07E4F0 7F049980 C666000C */ lwc1 $f6, 0xc($s3) +/* 07E4F4 7F049984 E7A60134 */ swc1 $f6, 0x134($sp) +/* 07E4F8 7F049988 C6680010 */ lwc1 $f8, 0x10($s3) +/* 07E4FC 7F04998C 10000007 */ b .Ljp7F0499AC +/* 07E500 7F049990 E7A80138 */ swc1 $f8, 0x138($sp) +.Ljp7F049994: +/* 07E504 7F049994 C6640008 */ lwc1 $f4, 8($s3) +.Ljp7F049998: +/* 07E508 7F049998 E7A40130 */ swc1 $f4, 0x130($sp) +/* 07E50C 7F04999C C66A000C */ lwc1 $f10, 0xc($s3) +/* 07E510 7F0499A0 E7AA0134 */ swc1 $f10, 0x134($sp) +/* 07E514 7F0499A4 C6660010 */ lwc1 $f6, 0x10($s3) +/* 07E518 7F0499A8 E7A60138 */ swc1 $f6, 0x138($sp) +.Ljp7F0499AC: +/* 07E51C 7F0499AC 0FC160F0 */ jal cosf +/* 07E520 7F0499B0 C60C009C */ lwc1 $f12, 0x9c($s0) +/* 07E524 7F0499B4 C60C0090 */ lwc1 $f12, 0x90($s0) +/* 07E528 7F0499B8 0FC160F3 */ jal sinf +/* 07E52C 7F0499BC E7A00080 */ swc1 $f0, 0x80($sp) +/* 07E530 7F0499C0 C7A20080 */ lwc1 $f2, 0x80($sp) +/* 07E534 7F0499C4 46020202 */ mul.s $f8, $f0, $f2 +/* 07E538 7F0499C8 E7A80124 */ swc1 $f8, 0x124($sp) +/* 07E53C 7F0499CC 0FC160F3 */ jal sinf +/* 07E540 7F0499D0 C60C009C */ lwc1 $f12, 0x9c($s0) +/* 07E544 7F0499D4 E7A00128 */ swc1 $f0, 0x128($sp) +/* 07E548 7F0499D8 0FC160F0 */ jal cosf +/* 07E54C 7F0499DC C60C009C */ lwc1 $f12, 0x9c($s0) +/* 07E550 7F0499E0 C60C0090 */ lwc1 $f12, 0x90($s0) +/* 07E554 7F0499E4 0FC160F0 */ jal cosf +/* 07E558 7F0499E8 E7A00080 */ swc1 $f0, 0x80($sp) +/* 07E55C 7F0499EC C7A20080 */ lwc1 $f2, 0x80($sp) +/* 07E560 7F0499F0 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07E564 7F0499F4 44816000 */ mtc1 $at, $f12 +/* 07E568 7F0499F8 46020382 */ mul.s $f14, $f0, $f2 +/* 07E56C 7F0499FC C7A40124 */ lwc1 $f4, 0x124($sp) +/* 07E570 7F049A00 C7A60130 */ lwc1 $f6, 0x130($sp) +/* 07E574 7F049A04 460C2282 */ mul.s $f10, $f4, $f12 +/* 07E578 7F049A08 C7A40128 */ lwc1 $f4, 0x128($sp) +/* 07E57C 7F049A0C E7AE012C */ swc1 $f14, 0x12c($sp) +/* 07E580 7F049A10 46065200 */ add.s $f8, $f10, $f6 +/* 07E584 7F049A14 460C2282 */ mul.s $f10, $f4, $f12 +/* 07E588 7F049A18 C7A60134 */ lwc1 $f6, 0x134($sp) +/* 07E58C 7F049A1C 460C7102 */ mul.s $f4, $f14, $f12 +/* 07E590 7F049A20 E7A80114 */ swc1 $f8, 0x114($sp) +/* 07E594 7F049A24 46065200 */ add.s $f8, $f10, $f6 +/* 07E598 7F049A28 C7AA0138 */ lwc1 $f10, 0x138($sp) +/* 07E59C 7F049A2C 460A2180 */ add.s $f6, $f4, $f10 +/* 07E5A0 7F049A30 E7A80118 */ swc1 $f8, 0x118($sp) +/* 07E5A4 7F049A34 0FC2CA1D */ jal sub_GAME_7F0B1CC4 +/* 07E5A8 7F049A38 E7A6011C */ swc1 $f6, 0x11c($sp) +/* 07E5AC 7F049A3C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 07E5B0 7F049A40 44810000 */ mtc1 $at, $f0 +/* 07E5B4 7F049A44 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07E5B8 7F049A48 44812000 */ mtc1 $at, $f4 +/* 07E5BC 7F049A4C C7A8011C */ lwc1 $f8, 0x11c($sp) +/* 07E5C0 7F049A50 240A0002 */ li $t2, 2 +/* 07E5C4 7F049A54 AFAA0014 */ sw $t2, 0x14($sp) +/* 07E5C8 7F049A58 27A4010C */ addiu $a0, $sp, 0x10c +/* 07E5CC 7F049A5C 8FA50130 */ lw $a1, 0x130($sp) +/* 07E5D0 7F049A60 8FA60138 */ lw $a2, 0x138($sp) +/* 07E5D4 7F049A64 8FA70114 */ lw $a3, 0x114($sp) +/* 07E5D8 7F049A68 E7B60020 */ swc1 $f22, 0x20($sp) +/* 07E5DC 7F049A6C E7A00018 */ swc1 $f0, 0x18($sp) +/* 07E5E0 7F049A70 E7A0001C */ swc1 $f0, 0x1c($sp) +/* 07E5E4 7F049A74 E7A80010 */ swc1 $f8, 0x10($sp) +/* 07E5E8 7F049A78 0FC2C675 */ jal sub_GAME_7F0B0E24 +/* 07E5EC 7F049A7C E7A40024 */ swc1 $f4, 0x24($sp) +/* 07E5F0 7F049A80 14400017 */ bnez $v0, .Ljp7F049AE0 +/* 07E5F4 7F049A84 27A60114 */ addiu $a2, $sp, 0x114 +/* 07E5F8 7F049A88 27A40130 */ addiu $a0, $sp, 0x130 +/* 07E5FC 7F049A8C 0FC09955 */ jal sub_GAME_7F02624C +/* 07E600 7F049A90 27A50124 */ addiu $a1, $sp, 0x124 +/* 07E604 7F049A94 3C0141D0 */ li $at, 0x41D00000 # 26.000000 +/* 07E608 7F049A98 44818000 */ mtc1 $at, $f16 +/* 07E60C 7F049A9C C7A60124 */ lwc1 $f6, 0x124($sp) +/* 07E610 7F049AA0 C7AA0114 */ lwc1 $f10, 0x114($sp) +/* 07E614 7F049AA4 C7AE012C */ lwc1 $f14, 0x12c($sp) +/* 07E618 7F049AA8 46068202 */ mul.s $f8, $f16, $f6 +/* 07E61C 7F049AAC C7A60118 */ lwc1 $f6, 0x118($sp) +/* 07E620 7F049AB0 8FAF010C */ lw $t7, 0x10c($sp) +/* 07E624 7F049AB4 AFAF0110 */ sw $t7, 0x110($sp) +/* 07E628 7F049AB8 46085101 */ sub.s $f4, $f10, $f8 +/* 07E62C 7F049ABC C7AA0128 */ lwc1 $f10, 0x128($sp) +/* 07E630 7F049AC0 460A8202 */ mul.s $f8, $f16, $f10 +/* 07E634 7F049AC4 E7A40114 */ swc1 $f4, 0x114($sp) +/* 07E638 7F049AC8 C7AA011C */ lwc1 $f10, 0x11c($sp) +/* 07E63C 7F049ACC 46083101 */ sub.s $f4, $f6, $f8 +/* 07E640 7F049AD0 460E8182 */ mul.s $f6, $f16, $f14 +/* 07E644 7F049AD4 E7A40118 */ swc1 $f4, 0x118($sp) +/* 07E648 7F049AD8 46065201 */ sub.s $f8, $f10, $f6 +/* 07E64C 7F049ADC E7A8011C */ swc1 $f8, 0x11c($sp) +.Ljp7F049AE0: +/* 07E650 7F049AE0 3C0C8005 */ lui $t4, %hi(global_timer) # $t4, 0x8005 +/* 07E654 7F049AE4 8D8C83AC */ lw $t4, %lo(global_timer)($t4) +/* 07E658 7F049AE8 8E0D00BC */ lw $t5, 0xbc($s0) +/* 07E65C 7F049AEC 27B10114 */ addiu $s1, $sp, 0x114 +/* 07E660 7F049AF0 8FA50104 */ lw $a1, 0x104($sp) +/* 07E664 7F049AF4 158D0052 */ bne $t4, $t5, .Ljp7F049C40 +/* 07E668 7F049AF8 C7AA0130 */ lwc1 $f10, 0x130($sp) +/* 07E66C 7F049AFC C4A40008 */ lwc1 $f4, 8($a1) +/* 07E670 7F049B00 C4A6000C */ lwc1 $f6, 0xc($a1) +/* 07E674 7F049B04 C7A80134 */ lwc1 $f8, 0x134($sp) +/* 07E678 7F049B08 460A2001 */ sub.s $f0, $f4, $f10 +/* 07E67C 7F049B0C C4A40010 */ lwc1 $f4, 0x10($a1) +/* 07E680 7F049B10 E7AA0058 */ swc1 $f10, 0x58($sp) +/* 07E684 7F049B14 46083081 */ sub.s $f2, $f6, $f8 +/* 07E688 7F049B18 C7A60138 */ lwc1 $f6, 0x138($sp) +/* 07E68C 7F049B1C 46062301 */ sub.s $f12, $f4, $f6 +/* 07E690 7F049B20 46000102 */ mul.s $f4, $f0, $f0 +/* 07E694 7F049B24 00000000 */ nop +/* 07E698 7F049B28 46021282 */ mul.s $f10, $f2, $f2 +/* 07E69C 7F049B2C 460A2100 */ add.s $f4, $f4, $f10 +/* 07E6A0 7F049B30 460C6282 */ mul.s $f10, $f12, $f12 +/* 07E6A4 7F049B34 460A2500 */ add.s $f20, $f4, $f10 +/* 07E6A8 7F049B38 C7AA0058 */ lwc1 $f10, 0x58($sp) +/* 07E6AC 7F049B3C C7A40114 */ lwc1 $f4, 0x114($sp) +/* 07E6B0 7F049B40 460A2001 */ sub.s $f0, $f4, $f10 +/* 07E6B4 7F049B44 C7A40118 */ lwc1 $f4, 0x118($sp) +/* 07E6B8 7F049B48 C7AA011C */ lwc1 $f10, 0x11c($sp) +/* 07E6BC 7F049B4C 46082081 */ sub.s $f2, $f4, $f8 +/* 07E6C0 7F049B50 46000102 */ mul.s $f4, $f0, $f0 +/* 07E6C4 7F049B54 46065301 */ sub.s $f12, $f10, $f6 +/* 07E6C8 7F049B58 46021202 */ mul.s $f8, $f2, $f2 +/* 07E6CC 7F049B5C 46082280 */ add.s $f10, $f4, $f8 +/* 07E6D0 7F049B60 460C6182 */ mul.s $f6, $f12, $f12 +/* 07E6D4 7F049B64 46065100 */ add.s $f4, $f10, $f6 +/* 07E6D8 7F049B68 4604A03E */ c.le.s $f20, $f4 +/* 07E6DC 7F049B6C 00000000 */ nop +/* 07E6E0 7F049B70 45000033 */ bc1f .Ljp7F049C40 +/* 07E6E4 7F049B74 00000000 */ nop +/* 07E6E8 7F049B78 0FC2296B */ jal check_if_bond_is_invincible +/* 07E6EC 7F049B7C 00000000 */ nop +/* 07E6F0 7F049B80 54400030 */ bnezl $v0, .Ljp7F049C44 +/* 07E6F4 7F049B84 8FB90120 */ lw $t9, 0x120($sp) +/* 07E6F8 7F049B88 0C007E08 */ jal sqrtf +/* 07E6FC 7F049B8C 4600A306 */ mov.s $f12, $f20 +/* 07E700 7F049B90 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 07E704 7F049B94 44816000 */ mtc1 $at, $f12 +/* 07E708 7F049B98 3C018005 */ lui $at, %hi(D_80052B74) # $at, 0x8005 +/* 07E70C 7F049B9C C4282BA4 */ lwc1 $f8, %lo(D_80052B74)($at) +/* 07E710 7F049BA0 3C018005 */ lui $at, %hi(jp_global_timer_delta) # $at, 0x8005 +/* 07E714 7F049BA4 C42A83A8 */ lwc1 $f10, %lo(jp_global_timer_delta)($at) +/* 07E718 7F049BA8 3C018003 */ lui $at, %hi(D_80030B1C) # $at, 0x8003 +/* 07E71C 7F049BAC 4600603C */ c.lt.s $f12, $f0 +/* 07E720 7F049BB0 460A4182 */ mul.s $f6, $f8, $f10 +/* 07E724 7F049BB4 C4240B5C */ lwc1 $f4, %lo(D_80030B1C)($at) +/* 07E728 7F049BB8 46043082 */ mul.s $f2, $f6, $f4 +/* 07E72C 7F049BBC 45020005 */ bc1fl .Ljp7F049BD4 +/* 07E730 7F049BC0 C60A00D4 */ lwc1 $f10, 0xd4($s0) +/* 07E734 7F049BC4 46006203 */ div.s $f8, $f12, $f0 +/* 07E738 7F049BC8 46081082 */ mul.s $f2, $f2, $f8 +/* 07E73C 7F049BCC 00000000 */ nop +/* 07E740 7F049BD0 C60A00D4 */ lwc1 $f10, 0xd4($s0) +.Ljp7F049BD4: +/* 07E744 7F049BD4 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07E748 7F049BD8 44814000 */ mtc1 $at, $f8 +/* 07E74C 7F049BDC 46025180 */ add.s $f6, $f10, $f2 +/* 07E750 7F049BE0 E60600D4 */ swc1 $f6, 0xd4($s0) +/* 07E754 7F049BE4 C60400D4 */ lwc1 $f4, 0xd4($s0) +/* 07E758 7F049BE8 4604403E */ c.le.s $f8, $f4 +/* 07E75C 7F049BEC 00000000 */ nop +/* 07E760 7F049BF0 45020014 */ bc1fl .Ljp7F049C44 +/* 07E764 7F049BF4 8FB90120 */ lw $t9, 0x120($sp) +/* 07E768 7F049BF8 0FC17929 */ jal sub_GAME_7F05DF84 +/* 07E76C 7F049BFC 2404000E */ li $a0, 14 +/* 07E770 7F049C00 3C013E00 */ li $at, 0x3E000000 # 0.125000 +/* 07E774 7F049C04 44815000 */ mtc1 $at, $f10 +/* 07E778 7F049C08 3C018003 */ lui $at, %hi(D_80030B20) # $at, 0x8003 +/* 07E77C 7F049C0C C4240B60 */ lwc1 $f4, %lo(D_80030B20)($at) +/* 07E780 7F049C10 460A0182 */ mul.s $f6, $f0, $f10 +/* 07E784 7F049C14 C60E0090 */ lwc1 $f14, 0x90($s0) +/* 07E788 7F049C18 2406FFFF */ li $a2, -1 +/* 07E78C 7F049C1C 24070001 */ li $a3, 1 +/* 07E790 7F049C20 46043302 */ mul.s $f12, $f6, $f4 +/* 07E794 7F049C24 0FC22955 */ jal sub_GAME_7F089E4C +/* 07E798 7F049C28 00000000 */ nop +/* 07E79C 7F049C2C 0FC2296B */ jal check_if_bond_is_invincible +/* 07E7A0 7F049C30 E61600D4 */ swc1 $f22, 0xd4($s0) +/* 07E7A4 7F049C34 50400003 */ beql $v0, $zero, .Ljp7F049C44 +/* 07E7A8 7F049C38 8FB90120 */ lw $t9, 0x120($sp) +/* 07E7AC 7F049C3C AFA00120 */ sw $zero, 0x120($sp) +.Ljp7F049C40: +/* 07E7B0 7F049C40 8FB90120 */ lw $t9, 0x120($sp) +.Ljp7F049C44: +/* 07E7B4 7F049C44 3C0141D0 */ li $at, 0x41D00000 # 26.000000 +/* 07E7B8 7F049C48 44818000 */ mtc1 $at, $f16 +/* 07E7BC 7F049C4C 1320000F */ beqz $t9, .Ljp7F049C8C +/* 07E7C0 7F049C50 8FA50104 */ lw $a1, 0x104($sp) +/* 07E7C4 7F049C54 8FA80110 */ lw $t0, 0x110($sp) +/* 07E7C8 7F049C58 02202025 */ move $a0, $s1 +/* 07E7CC 7F049C5C 24050001 */ li $a1, 1 +/* 07E7D0 7F049C60 51000005 */ beql $t0, $zero, .Ljp7F049C78 +/* 07E7D4 7F049C64 2404000E */ li $a0, 14 +/* 07E7D8 7F049C68 44068000 */ mfc1 $a2, $f16 +/* 07E7DC 7F049C6C 0FC2926F */ jal sub_GAME_7F0A3E1C +/* 07E7E0 7F049C70 91070003 */ lbu $a3, 3($t0) +/* 07E7E4 7F049C74 2404000E */ li $a0, 14 +.Ljp7F049C78: +/* 07E7E8 7F049C78 02202825 */ move $a1, $s1 +/* 07E7EC 7F049C7C 0FC1932F */ jal recall_joy2_hits_edit_flag +/* 07E7F0 7F049C80 2406FFFF */ li $a2, -1 +/* 07E7F4 7F049C84 1000000B */ b .Ljp7F049CB4 +/* 07E7F8 7F049C88 8FB80108 */ lw $t8, 0x108($sp) +.Ljp7F049C8C: +/* 07E7FC 7F049C8C C4A80008 */ lwc1 $f8, 8($a1) +/* 07E800 7F049C90 2404000E */ li $a0, 14 +/* 07E804 7F049C94 2406FFFF */ li $a2, -1 +/* 07E808 7F049C98 E7A80114 */ swc1 $f8, 0x114($sp) +/* 07E80C 7F049C9C C4AA000C */ lwc1 $f10, 0xc($a1) +/* 07E810 7F049CA0 E7AA0118 */ swc1 $f10, 0x118($sp) +/* 07E814 7F049CA4 C4A60010 */ lwc1 $f6, 0x10($a1) +/* 07E818 7F049CA8 0FC19252 */ jal recall_joy2_hits_edit_detail_edit_flag +/* 07E81C 7F049CAC E7A6011C */ swc1 $f6, 0x11c($sp) +/* 07E820 7F049CB0 8FB80108 */ lw $t8, 0x108($sp) +.Ljp7F049CB4: +/* 07E824 7F049CB4 C7A40130 */ lwc1 $f4, 0x130($sp) +/* 07E828 7F049CB8 53000085 */ beql $t8, $zero, .Ljp7F049ED0 +/* 07E82C 7F049CBC 8E8E0008 */ lw $t6, 8($s4) +/* 07E830 7F049CC0 8E0300CC */ lw $v1, 0xcc($s0) +/* 07E834 7F049CC4 E4640004 */ swc1 $f4, 4($v1) +/* 07E838 7F049CC8 C7A80134 */ lwc1 $f8, 0x134($sp) +/* 07E83C 7F049CCC C4640004 */ lwc1 $f4, 4($v1) +/* 07E840 7F049CD0 E4680008 */ swc1 $f8, 8($v1) +/* 07E844 7F049CD4 C7AA0138 */ lwc1 $f10, 0x138($sp) +/* 07E848 7F049CD8 E46A000C */ swc1 $f10, 0xc($v1) +/* 07E84C 7F049CDC C7A60114 */ lwc1 $f6, 0x114($sp) +/* 07E850 7F049CE0 46043201 */ sub.s $f8, $f6, $f4 +/* 07E854 7F049CE4 C4660008 */ lwc1 $f6, 8($v1) +/* 07E858 7F049CE8 E4680010 */ swc1 $f8, 0x10($v1) +/* 07E85C 7F049CEC C7AA0118 */ lwc1 $f10, 0x118($sp) +/* 07E860 7F049CF0 C4620010 */ lwc1 $f2, 0x10($v1) +/* 07E864 7F049CF4 46065101 */ sub.s $f4, $f10, $f6 +/* 07E868 7F049CF8 C46A000C */ lwc1 $f10, 0xc($v1) +/* 07E86C 7F049CFC E4640014 */ swc1 $f4, 0x14($v1) +/* 07E870 7F049D00 C7A8011C */ lwc1 $f8, 0x11c($sp) +/* 07E874 7F049D04 46021102 */ mul.s $f4, $f2, $f2 +/* 07E878 7F049D08 C46E0014 */ lwc1 $f14, 0x14($v1) +/* 07E87C 7F049D0C 460A4181 */ sub.s $f6, $f8, $f10 +/* 07E880 7F049D10 460E7202 */ mul.s $f8, $f14, $f14 +/* 07E884 7F049D14 E4660018 */ swc1 $f6, 0x18($v1) +/* 07E888 7F049D18 C4600018 */ lwc1 $f0, 0x18($v1) +/* 07E88C 7F049D1C AFA30094 */ sw $v1, 0x94($sp) +/* 07E890 7F049D20 46000182 */ mul.s $f6, $f0, $f0 +/* 07E894 7F049D24 46082280 */ add.s $f10, $f4, $f8 +/* 07E898 7F049D28 0C007E08 */ jal sqrtf +/* 07E89C 7F049D2C 460A3300 */ add.s $f12, $f6, $f10 +/* 07E8A0 7F049D30 3C018005 */ lui $at, %hi(D_80052B78) # $at, 0x8005 +/* 07E8A4 7F049D34 C42E2BA8 */ lwc1 $f14, %lo(D_80052B78)($at) +/* 07E8A8 7F049D38 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07E8AC 7F049D3C 44812000 */ mtc1 $at, $f4 +/* 07E8B0 7F049D40 8FA30094 */ lw $v1, 0x94($sp) +/* 07E8B4 7F049D44 4600703C */ c.lt.s $f14, $f0 +/* 07E8B8 7F049D48 46000306 */ mov.s $f12, $f0 +/* 07E8BC 7F049D4C 46002083 */ div.s $f2, $f4, $f0 +/* 07E8C0 7F049D50 C4680010 */ lwc1 $f8, 0x10($v1) +/* 07E8C4 7F049D54 C46A0014 */ lwc1 $f10, 0x14($v1) +/* 07E8C8 7F049D58 3C0143FA */ li $at, 0x43FA0000 # 500.000000 +/* 07E8CC 7F049D5C 44810000 */ mtc1 $at, $f0 +/* 07E8D0 7F049D60 46024182 */ mul.s $f6, $f8, $f2 +/* 07E8D4 7F049D64 C4680018 */ lwc1 $f8, 0x18($v1) +/* 07E8D8 7F049D68 46025102 */ mul.s $f4, $f10, $f2 +/* 07E8DC 7F049D6C E4660010 */ swc1 $f6, 0x10($v1) +/* 07E8E0 7F049D70 46024182 */ mul.s $f6, $f8, $f2 +/* 07E8E4 7F049D74 E4640014 */ swc1 $f4, 0x14($v1) +/* 07E8E8 7F049D78 45000002 */ bc1f .Ljp7F049D84 +/* 07E8EC 7F049D7C E4660018 */ swc1 $f6, 0x18($v1) +/* 07E8F0 7F049D80 46007306 */ mov.s $f12, $f14 +.Ljp7F049D84: +/* 07E8F4 7F049D84 4600603C */ c.lt.s $f12, $f0 +/* 07E8F8 7F049D88 2409000E */ li $t1, 14 +/* 07E8FC 7F049D8C A0600000 */ sb $zero, ($v1) +/* 07E900 7F049D90 A0690001 */ sb $t1, 1($v1) +/* 07E904 7F049D94 45000002 */ bc1f .Ljp7F049DA0 +/* 07E908 7F049D98 E46C001C */ swc1 $f12, 0x1c($v1) +/* 07E90C 7F049D9C 46000306 */ mov.s $f12, $f0 +.Ljp7F049DA0: +/* 07E910 7F049DA0 806B0001 */ lb $t3, 1($v1) +/* 07E914 7F049DA4 24010016 */ li $at, 22 +/* 07E918 7F049DA8 15610026 */ bne $t3, $at, .Ljp7F049E44 +/* 07E91C 7F049DAC 3C018005 */ lui $at, %hi(D_80052B7C) # $at, 0x8005 +/* 07E920 7F049DB0 C4222BAC */ lwc1 $f2, %lo(D_80052B7C)($at) +/* 07E924 7F049DB4 3C013E80 */ li $at, 0x3E800000 # 0.250000 +/* 07E928 7F049DB8 44815000 */ mtc1 $at, $f10 +/* 07E92C 7F049DBC 3C018005 */ lui $at, %hi(D_80052B80) # $at, 0x8005 +/* 07E930 7F049DC0 460C5102 */ mul.s $f4, $f10, $f12 +/* 07E934 7F049DC4 E4640020 */ swc1 $f4, 0x20($v1) +/* 07E938 7F049DC8 C4282BB0 */ lwc1 $f8, %lo(D_80052B80)($at) +/* 07E93C 7F049DCC 460C4002 */ mul.s $f0, $f8, $f12 +/* 07E940 7F049DD0 4600103C */ c.lt.s $f2, $f0 +/* 07E944 7F049DD4 E4600024 */ swc1 $f0, 0x24($v1) +/* 07E948 7F049DD8 45020003 */ bc1fl .Ljp7F049DE8 +/* 07E94C 7F049DDC AFA30094 */ sw $v1, 0x94($sp) +/* 07E950 7F049DE0 E4620024 */ swc1 $f2, 0x24($v1) +/* 07E954 7F049DE4 AFA30094 */ sw $v1, 0x94($sp) +.Ljp7F049DE8: +/* 07E958 7F049DE8 0C002918 */ jal get_random_value +/* 07E95C 7F049DEC E7AC0098 */ swc1 $f12, 0x98($sp) +/* 07E960 7F049DF0 44823000 */ mtc1 $v0, $f6 +/* 07E964 7F049DF4 8FA30094 */ lw $v1, 0x94($sp) +/* 07E968 7F049DF8 C7AC0098 */ lwc1 $f12, 0x98($sp) +/* 07E96C 7F049DFC 04410005 */ bgez $v0, .Ljp7F049E14 +/* 07E970 7F049E00 468032A0 */ cvt.s.w $f10, $f6 +/* 07E974 7F049E04 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07E978 7F049E08 44812000 */ mtc1 $at, $f4 +/* 07E97C 7F049E0C 00000000 */ nop +/* 07E980 7F049E10 46045280 */ add.s $f10, $f10, $f4 +.Ljp7F049E14: +/* 07E984 7F049E14 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07E988 7F049E18 44814000 */ mtc1 $at, $f8 +/* 07E98C 7F049E1C 3C018005 */ lui $at, %hi(D_80052B84) # $at, 0x8005 +/* 07E990 7F049E20 C4242BB4 */ lwc1 $f4, %lo(D_80052B84)($at) +/* 07E994 7F049E24 46085182 */ mul.s $f6, $f10, $f8 +/* 07E998 7F049E28 3C018005 */ lui $at, %hi(D_80052B88) # $at, 0x8005 +/* 07E99C 7F049E2C C4282BB8 */ lwc1 $f8, %lo(D_80052B88)($at) +/* 07E9A0 7F049E30 46043282 */ mul.s $f10, $f6, $f4 +/* 07E9A4 7F049E34 460A4181 */ sub.s $f6, $f8, $f10 +/* 07E9A8 7F049E38 460C3102 */ mul.s $f4, $f6, $f12 +/* 07E9AC 7F049E3C 10000023 */ b .Ljp7F049ECC +/* 07E9B0 7F049E40 E4640028 */ swc1 $f4, 0x28($v1) +.Ljp7F049E44: +/* 07E9B4 7F049E44 3C018005 */ lui $at, %hi(D_80052B8C) # $at, 0x8005 +/* 07E9B8 7F049E48 C4282BBC */ lwc1 $f8, %lo(D_80052B8C)($at) +/* 07E9BC 7F049E4C 3C018005 */ lui $at, %hi(D_80052B90) # $at, 0x8005 +/* 07E9C0 7F049E50 460C4002 */ mul.s $f0, $f8, $f12 +/* 07E9C4 7F049E54 E4600020 */ swc1 $f0, 0x20($v1) +/* 07E9C8 7F049E58 E4600024 */ swc1 $f0, 0x24($v1) +/* 07E9CC 7F049E5C C42A2BC0 */ lwc1 $f10, %lo(D_80052B90)($at) +/* 07E9D0 7F049E60 3C018005 */ lui $at, %hi(D_80052B94) # $at, 0x8005 +/* 07E9D4 7F049E64 4600503C */ c.lt.s $f10, $f0 +/* 07E9D8 7F049E68 00000000 */ nop +/* 07E9DC 7F049E6C 45000003 */ bc1f .Ljp7F049E7C +/* 07E9E0 7F049E70 00000000 */ nop +/* 07E9E4 7F049E74 C4262BC4 */ lwc1 $f6, %lo(D_80052B94)($at) +/* 07E9E8 7F049E78 E4660024 */ swc1 $f6, 0x24($v1) +.Ljp7F049E7C: +/* 07E9EC 7F049E7C 0C002918 */ jal get_random_value +/* 07E9F0 7F049E80 AFA30094 */ sw $v1, 0x94($sp) +/* 07E9F4 7F049E84 44822000 */ mtc1 $v0, $f4 +/* 07E9F8 7F049E88 8FA30094 */ lw $v1, 0x94($sp) +/* 07E9FC 7F049E8C 04410005 */ bgez $v0, .Ljp7F049EA4 +/* 07EA00 7F049E90 46802220 */ cvt.s.w $f8, $f4 +/* 07EA04 7F049E94 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EA08 7F049E98 44815000 */ mtc1 $at, $f10 +/* 07EA0C 7F049E9C 00000000 */ nop +/* 07EA10 7F049EA0 460A4200 */ add.s $f8, $f8, $f10 +.Ljp7F049EA4: +/* 07EA14 7F049EA4 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 07EA18 7F049EA8 44813000 */ mtc1 $at, $f6 +/* 07EA1C 7F049EAC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07EA20 7F049EB0 44815000 */ mtc1 $at, $f10 +/* 07EA24 7F049EB4 46064002 */ mul.s $f0, $f8, $f6 +/* 07EA28 7F049EB8 C4660020 */ lwc1 $f6, 0x20($v1) +/* 07EA2C 7F049EBC 46000100 */ add.s $f4, $f0, $f0 +/* 07EA30 7F049EC0 460A2201 */ sub.s $f8, $f4, $f10 +/* 07EA34 7F049EC4 46064102 */ mul.s $f4, $f8, $f6 +/* 07EA38 7F049EC8 E4640028 */ swc1 $f4, 0x28($v1) +.Ljp7F049ECC: +/* 07EA3C 7F049ECC 8E8E0008 */ lw $t6, 8($s4) +.Ljp7F049ED0: +/* 07EA40 7F049ED0 8DC30008 */ lw $v1, 8($t6) +/* 07EA44 7F049ED4 8C650014 */ lw $a1, 0x14($v1) +/* 07EA48 7F049ED8 50A00008 */ beql $a1, $zero, .Ljp7F049EFC +/* 07EA4C 7F049EDC 8C65001C */ lw $a1, 0x1c($v1) +/* 07EA50 7F049EE0 0FC1B363 */ jal extract_id_from_object_structure_microcode +/* 07EA54 7F049EE4 02802025 */ move $a0, $s4 +/* 07EA58 7F049EE8 8FAA0140 */ lw $t2, 0x140($sp) +/* 07EA5C 7F049EEC A44A0000 */ sh $t2, ($v0) +/* 07EA60 7F049EF0 8E8F0008 */ lw $t7, 8($s4) +/* 07EA64 7F049EF4 8DE30008 */ lw $v1, 8($t7) +/* 07EA68 7F049EF8 8C65001C */ lw $a1, 0x1c($v1) +.Ljp7F049EFC: +/* 07EA6C 7F049EFC 10A00005 */ beqz $a1, .Ljp7F049F14 +/* 07EA70 7F049F00 00000000 */ nop +/* 07EA74 7F049F04 0FC1B363 */ jal extract_id_from_object_structure_microcode +/* 07EA78 7F049F08 02802025 */ move $a0, $s4 +/* 07EA7C 7F049F0C 8FAC013C */ lw $t4, 0x13c($sp) +/* 07EA80 7F049F10 A44C0000 */ sh $t4, ($v0) +.Ljp7F049F14: +/* 07EA84 7F049F14 0FC1113A */ jal sub_GAME_7F044200 +/* 07EA88 7F049F18 02602025 */ move $a0, $s3 +/* 07EA8C 7F049F1C 8FAD0688 */ lw $t5, 0x688($sp) +.Ljp7F049F20: +/* 07EA90 7F049F20 24010005 */ li $at, 5 +/* 07EA94 7F049F24 55A10003 */ bnel $t5, $at, .Ljp7F049F34 +/* 07EA98 7F049F28 8FA20688 */ lw $v0, 0x688($sp) +/* 07EA9C 7F049F2C AE600014 */ sw $zero, 0x14($s3) +/* 07EAA0 7F049F30 8FA20688 */ lw $v0, 0x688($sp) +.Ljp7F049F34: +/* 07EAA4 7F049F34 8FBF0054 */ lw $ra, 0x54($sp) +/* 07EAA8 7F049F38 D7B40030 */ ldc1 $f20, 0x30($sp) +/* 07EAAC 7F049F3C D7B60038 */ ldc1 $f22, 0x38($sp) +/* 07EAB0 7F049F40 8FB00040 */ lw $s0, 0x40($sp) +/* 07EAB4 7F049F44 8FB10044 */ lw $s1, 0x44($sp) +/* 07EAB8 7F049F48 8FB20048 */ lw $s2, 0x48($sp) +/* 07EABC 7F049F4C 8FB3004C */ lw $s3, 0x4c($sp) +/* 07EAC0 7F049F50 8FB40050 */ lw $s4, 0x50($sp) +/* 07EAC4 7F049F54 03E00008 */ jr $ra +/* 07EAC8 7F049F58 27BD06B0 */ addiu $sp, $sp, 0x6b0 +) +#endif + +#endif + + +#ifdef NONMATCHING +void sub_GAME_7F049B58(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F049B58 +/* 07E688 7F049B58 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 07E68C 7F049B5C AFBF0034 */ sw $ra, 0x34($sp) +/* 07E690 7F049B60 AFB20020 */ sw $s2, 0x20($sp) +/* 07E694 7F049B64 00809025 */ move $s2, $a0 +/* 07E698 7F049B68 AFB60030 */ sw $s6, 0x30($sp) +/* 07E69C 7F049B6C AFB5002C */ sw $s5, 0x2c($sp) +/* 07E6A0 7F049B70 AFB40028 */ sw $s4, 0x28($sp) +/* 07E6A4 7F049B74 AFB30024 */ sw $s3, 0x24($sp) +/* 07E6A8 7F049B78 AFB1001C */ sw $s1, 0x1c($sp) +/* 07E6AC 7F049B7C 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry +/* 07E6B0 7F049B80 AFB00018 */ sw $s0, 0x18($sp) +/* 07E6B4 7F049B84 10400036 */ beqz $v0, .L7F049C60 +/* 07E6B8 7F049B88 00408025 */ move $s0, $v0 +/* 07E6BC 7F049B8C 24160006 */ li $s6, 6 +/* 07E6C0 7F049B90 2415000D */ li $s5, 13 +/* 07E6C4 7F049B94 24140001 */ li $s4, 1 +/* 07E6C8 7F049B98 24130003 */ li $s3, 3 +/* 07E6CC 7F049B9C 92020000 */ lbu $v0, ($s0) +.L7F049BA0: +/* 07E6D0 7F049BA0 02402025 */ move $a0, $s2 +/* 07E6D4 7F049BA4 1662000B */ bne $s3, $v0, .L7F049BD4 +/* 07E6D8 7F049BA8 00000000 */ nop +/* 07E6DC 7F049BAC 8E110004 */ lw $s1, 4($s0) +/* 07E6E0 7F049BB0 02803025 */ move $a2, $s4 +/* 07E6E4 7F049BB4 0FC18786 */ jal sub_GAME_7F061E18 +/* 07E6E8 7F049BB8 26250180 */ addiu $a1, $s1, 0x180 +/* 07E6EC 7F049BBC 00402025 */ move $a0, $v0 +/* 07E6F0 7F049BC0 262501AC */ addiu $a1, $s1, 0x1ac +/* 07E6F4 7F049BC4 0FC18786 */ jal sub_GAME_7F061E18 +/* 07E6F8 7F049BC8 02803025 */ move $a2, $s4 +/* 07E6FC 7F049BCC 10000021 */ b .L7F049C54 +/* 07E700 7F049BD0 00409025 */ move $s2, $v0 +.L7F049BD4: +/* 07E704 7F049BD4 1682000B */ bne $s4, $v0, .L7F049C04 +/* 07E708 7F049BD8 00000000 */ nop +/* 07E70C 7F049BDC 8E030004 */ lw $v1, 4($s0) +/* 07E710 7F049BE0 02402025 */ move $a0, $s2 +/* 07E714 7F049BE4 02803025 */ move $a2, $s4 +/* 07E718 7F049BE8 906E0003 */ lbu $t6, 3($v1) +/* 07E71C 7F049BEC 56AE001A */ bnel $s5, $t6, .L7F049C58 +/* 07E720 7F049BF0 8E100024 */ lw $s0, 0x24($s0) +/* 07E724 7F049BF4 0FC18786 */ jal sub_GAME_7F061E18 +/* 07E728 7F049BF8 8C6500CC */ lw $a1, 0xcc($v1) +/* 07E72C 7F049BFC 10000015 */ b .L7F049C54 +/* 07E730 7F049C00 00409025 */ move $s2, $v0 +.L7F049C04: +/* 07E734 7F049C04 56C20014 */ bnel $s6, $v0, .L7F049C58 +/* 07E738 7F049C08 8E100024 */ lw $s0, 0x24($s0) +/* 07E73C 7F049C0C 8E0F0004 */ lw $t7, 4($s0) +/* 07E740 7F049C10 51E00011 */ beql $t7, $zero, .L7F049C58 +/* 07E744 7F049C14 8E100024 */ lw $s0, 0x24($s0) +/* 07E748 7F049C18 0FC26C57 */ jal sub_GAME_7F09B15C +/* 07E74C 7F049C1C 02002025 */ move $a0, $s0 +/* 07E750 7F049C20 0FC26C54 */ jal get_cur_playernum +/* 07E754 7F049C24 00408825 */ move $s1, $v0 +/* 07E758 7F049C28 1051000A */ beq $v0, $s1, .L7F049C54 +/* 07E75C 7F049C2C 02402025 */ move $a0, $s2 +/* 07E760 7F049C30 8E110004 */ lw $s1, 4($s0) +/* 07E764 7F049C34 02803025 */ move $a2, $s4 +/* 07E768 7F049C38 0FC18786 */ jal sub_GAME_7F061E18 +/* 07E76C 7F049C3C 26250180 */ addiu $a1, $s1, 0x180 +/* 07E770 7F049C40 00402025 */ move $a0, $v0 +/* 07E774 7F049C44 262501AC */ addiu $a1, $s1, 0x1ac +/* 07E778 7F049C48 0FC18786 */ jal sub_GAME_7F061E18 +/* 07E77C 7F049C4C 02803025 */ move $a2, $s4 +/* 07E780 7F049C50 00409025 */ move $s2, $v0 +.L7F049C54: +/* 07E784 7F049C54 8E100024 */ lw $s0, 0x24($s0) +.L7F049C58: +/* 07E788 7F049C58 5600FFD1 */ bnezl $s0, .L7F049BA0 +/* 07E78C 7F049C5C 92020000 */ lbu $v0, ($s0) +.L7F049C60: +/* 07E790 7F049C60 8FBF0034 */ lw $ra, 0x34($sp) +/* 07E794 7F049C64 02401025 */ move $v0, $s2 +/* 07E798 7F049C68 8FB20020 */ lw $s2, 0x20($sp) +/* 07E79C 7F049C6C 8FB00018 */ lw $s0, 0x18($sp) +/* 07E7A0 7F049C70 8FB1001C */ lw $s1, 0x1c($sp) +/* 07E7A4 7F049C74 8FB30024 */ lw $s3, 0x24($sp) +/* 07E7A8 7F049C78 8FB40028 */ lw $s4, 0x28($sp) +/* 07E7AC 7F049C7C 8FB5002C */ lw $s5, 0x2c($sp) +/* 07E7B0 7F049C80 8FB60030 */ lw $s6, 0x30($sp) +/* 07E7B4 7F049C84 03E00008 */ jr $ra +/* 07E7B8 7F049C88 27BD0038 */ addiu $sp, $sp, 0x38 +) +#endif + + + + + +#ifdef NONMATCHING +void save_ptr_monitor_ani_code_to_obj_ani_slot(void) { + +} +#else +GLOBAL_ASM( +.text +glabel save_ptr_monitor_ani_code_to_obj_ani_slot +/* 07E7BC 7F049C8C AC850000 */ sw $a1, ($a0) +/* 07E7C0 7F049C90 03E00008 */ jr $ra +/* 07E7C4 7F049C94 A4800004 */ sh $zero, 4($a0) +) +#endif + + + + + +#ifdef NONMATCHING +void set_ptr_monitor_img_to_obj_ani_slot(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:80052B98*/ +glabel jpt_80052B98 +.word def_7F049CC0 +.word .L7F049CC8 +.word .L7F049CD4 +.word .L7F049CE0 +.word .L7F049CEC +.word .L7F049CF8 +.word .L7F049D04 +.word .L7F049D10 +.word .L7F049D1C +.word .L7F049D28 +.word .L7F049D34 +.word .L7F049D40 +.word .L7F049D4C +.word .L7F049D58 +.word .L7F049D64 +.word .L7F049D70 +.word .L7F049D7C +.word .L7F049D88 +.word .L7F049D94 +.word .L7F049DA0 +.word .L7F049DAC +.word .L7F049DB8 +.word .L7F049DC4 +.word .L7F049DD0 +.word .L7F049DDC +.word .L7F049DE8 +.word .L7F049DF4 +.word .L7F049E00 +.word .L7F049E0C +.word .L7F049E18 +.word .L7F049E24 +.word .L7F049E30 +.word .L7F049E3C +.word .L7F049E48 +.word .L7F049E54 +.word .L7F049E60 +.word .L7F049E6C +.word .L7F049E78 +.word .L7F049E84 +.word .L7F049E90 +.word .L7F049E9C +.word .L7F049EA8 +.word .L7F049EB4 +.word .L7F049EC0 +.word .L7F049ECC +.word .L7F049ED8 +.word .L7F049EE4 +.word .L7F049EF0 +.word .L7F049EFC +.word .L7F049F08 +.word .L7F049F14 +.word .L7F049F20 + +.text +glabel set_ptr_monitor_img_to_obj_ani_slot +/* 07E7C8 7F049C98 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 07E7CC 7F049C9C 3C068003 */ lui $a2, %hi(monitor_animation_microcode) +/* 07E7D0 7F049CA0 2CA10034 */ sltiu $at, $a1, 0x34 +/* 07E7D4 7F049CA4 AFBF0014 */ sw $ra, 0x14($sp) +/* 07E7D8 7F049CA8 1020009F */ beqz $at, .L7F049F28 +/* 07E7DC 7F049CAC 24C60B74 */ addiu $a2, %lo(monitor_animation_microcode) # addiu $a2, $a2, 0xb74 +/* 07E7E0 7F049CB0 00057080 */ sll $t6, $a1, 2 +/* 07E7E4 7F049CB4 3C018005 */ lui $at, %hi(jpt_80052B98) +/* 07E7E8 7F049CB8 002E0821 */ addu $at, $at, $t6 +/* 07E7EC 7F049CBC 8C2E2B98 */ lw $t6, %lo(jpt_80052B98)($at) +/* 07E7F0 7F049CC0 01C00008 */ jr $t6 +/* 07E7F4 7F049CC4 00000000 */ nop +.L7F049CC8: +/* 07E7F8 7F049CC8 3C068003 */ lui $a2, %hi(D_80030C00) +/* 07E7FC 7F049CCC 10000096 */ b .L7F049F28 +/* 07E800 7F049CD0 24C60C00 */ addiu $a2, %lo(D_80030C00) # addiu $a2, $a2, 0xc00 +.L7F049CD4: +/* 07E804 7F049CD4 3C068003 */ lui $a2, %hi(D_80030E24) +/* 07E808 7F049CD8 10000093 */ b .L7F049F28 +/* 07E80C 7F049CDC 24C60E24 */ addiu $a2, %lo(D_80030E24) # addiu $a2, $a2, 0xe24 +.L7F049CE0: +/* 07E810 7F049CE0 3C068003 */ lui $a2, %hi(D_80030F44) +/* 07E814 7F049CE4 10000090 */ b .L7F049F28 +/* 07E818 7F049CE8 24C60F44 */ addiu $a2, %lo(D_80030F44) # addiu $a2, $a2, 0xf44 +.L7F049CEC: +/* 07E81C 7F049CEC 3C068003 */ lui $a2, %hi(D_80031018) +/* 07E820 7F049CF0 1000008D */ b .L7F049F28 +/* 07E824 7F049CF4 24C61018 */ addiu $a2, %lo(D_80031018) # addiu $a2, $a2, 0x1018 +.L7F049CF8: +/* 07E828 7F049CF8 3C068003 */ lui $a2, %hi(D_80031074) +/* 07E82C 7F049CFC 1000008A */ b .L7F049F28 +/* 07E830 7F049D00 24C61074 */ addiu $a2, %lo(D_80031074) # addiu $a2, $a2, 0x1074 +.L7F049D04: +/* 07E834 7F049D04 3C068003 */ lui $a2, %hi(D_800310F0) +/* 07E838 7F049D08 10000087 */ b .L7F049F28 +/* 07E83C 7F049D0C 24C610F0 */ addiu $a2, %lo(D_800310F0) # addiu $a2, $a2, 0x10f0 +.L7F049D10: +/* 07E840 7F049D10 3C068003 */ lui $a2, %hi(D_8003118C) +/* 07E844 7F049D14 10000084 */ b .L7F049F28 +/* 07E848 7F049D18 24C6118C */ addiu $a2, %lo(D_8003118C) # addiu $a2, $a2, 0x118c +.L7F049D1C: +/* 07E84C 7F049D1C 3C068003 */ lui $a2, %hi(D_8003121C) +/* 07E850 7F049D20 10000081 */ b .L7F049F28 +/* 07E854 7F049D24 24C6121C */ addiu $a2, %lo(D_8003121C) # addiu $a2, $a2, 0x121c +.L7F049D28: +/* 07E858 7F049D28 3C068003 */ lui $a2, %hi(D_80031248) +/* 07E85C 7F049D2C 1000007E */ b .L7F049F28 +/* 07E860 7F049D30 24C61248 */ addiu $a2, %lo(D_80031248) # addiu $a2, $a2, 0x1248 +.L7F049D34: +/* 07E864 7F049D34 3C068003 */ lui $a2, %hi(D_80031274) +/* 07E868 7F049D38 1000007B */ b .L7F049F28 +/* 07E86C 7F049D3C 24C61274 */ addiu $a2, %lo(D_80031274) # addiu $a2, $a2, 0x1274 +.L7F049D40: +/* 07E870 7F049D40 3C068003 */ lui $a2, %hi(D_800312F4) +/* 07E874 7F049D44 10000078 */ b .L7F049F28 +/* 07E878 7F049D48 24C612F4 */ addiu $a2, %lo(D_800312F4) # addiu $a2, $a2, 0x12f4 +.L7F049D4C: +/* 07E87C 7F049D4C 3C068003 */ lui $a2, %hi(D_80031310) +/* 07E880 7F049D50 10000075 */ b .L7F049F28 +/* 07E884 7F049D54 24C61310 */ addiu $a2, %lo(D_80031310) # addiu $a2, $a2, 0x1310 +.L7F049D58: +/* 07E888 7F049D58 3C068003 */ lui $a2, %hi(D_80031490) +/* 07E88C 7F049D5C 10000072 */ b .L7F049F28 +/* 07E890 7F049D60 24C61490 */ addiu $a2, %lo(D_80031490) # addiu $a2, $a2, 0x1490 +.L7F049D64: +/* 07E894 7F049D64 3C068003 */ lui $a2, %hi(D_800314F8) +/* 07E898 7F049D68 1000006F */ b .L7F049F28 +/* 07E89C 7F049D6C 24C614F8 */ addiu $a2, %lo(D_800314F8) # addiu $a2, $a2, 0x14f8 +.L7F049D70: +/* 07E8A0 7F049D70 3C068003 */ lui $a2, %hi(D_80030EC8) +/* 07E8A4 7F049D74 1000006C */ b .L7F049F28 +/* 07E8A8 7F049D78 24C60EC8 */ addiu $a2, %lo(D_80030EC8) # addiu $a2, $a2, 0xec8 +.L7F049D7C: +/* 07E8AC 7F049D7C 3C068003 */ lui $a2, %hi(D_80031360) +/* 07E8B0 7F049D80 10000069 */ b .L7F049F28 +/* 07E8B4 7F049D84 24C61360 */ addiu $a2, %lo(D_80031360) # addiu $a2, $a2, 0x1360 +.L7F049D88: +/* 07E8B8 7F049D88 3C068003 */ lui $a2, %hi(D_8003156C) +/* 07E8BC 7F049D8C 10000066 */ b .L7F049F28 +/* 07E8C0 7F049D90 24C6156C */ addiu $a2, %lo(D_8003156C) # addiu $a2, $a2, 0x156c +.L7F049D94: +/* 07E8C4 7F049D94 3C068003 */ lui $a2, %hi(D_800315CC) +/* 07E8C8 7F049D98 10000063 */ b .L7F049F28 +/* 07E8CC 7F049D9C 24C615CC */ addiu $a2, %lo(D_800315CC) # addiu $a2, $a2, 0x15cc +.L7F049DA0: +/* 07E8D0 7F049DA0 3C068003 */ lui $a2, %hi(D_80031848) +/* 07E8D4 7F049DA4 10000060 */ b .L7F049F28 +/* 07E8D8 7F049DA8 24C61848 */ addiu $a2, %lo(D_80031848) # addiu $a2, $a2, 0x1848 +.L7F049DAC: +/* 07E8DC 7F049DAC 3C068003 */ lui $a2, %hi(D_80031898) +/* 07E8E0 7F049DB0 1000005D */ b .L7F049F28 +/* 07E8E4 7F049DB4 24C61898 */ addiu $a2, %lo(D_80031898) # addiu $a2, $a2, 0x1898 +.L7F049DB8: +/* 07E8E8 7F049DB8 3C068003 */ lui $a2, %hi(D_800318B8) +/* 07E8EC 7F049DBC 1000005A */ b .L7F049F28 +/* 07E8F0 7F049DC0 24C618B8 */ addiu $a2, %lo(D_800318B8) # addiu $a2, $a2, 0x18b8 +.L7F049DC4: +/* 07E8F4 7F049DC4 3C068003 */ lui $a2, %hi(D_8003191C) +/* 07E8F8 7F049DC8 10000057 */ b .L7F049F28 +/* 07E8FC 7F049DCC 24C6191C */ addiu $a2, %lo(D_8003191C) # addiu $a2, $a2, 0x191c +.L7F049DD0: +/* 07E900 7F049DD0 3C068003 */ lui $a2, %hi(D_80031950) +/* 07E904 7F049DD4 10000054 */ b .L7F049F28 +/* 07E908 7F049DD8 24C61950 */ addiu $a2, %lo(D_80031950) # addiu $a2, $a2, 0x1950 +.L7F049DDC: +/* 07E90C 7F049DDC 3C068003 */ lui $a2, %hi(D_800319D4) +/* 07E910 7F049DE0 10000051 */ b .L7F049F28 +/* 07E914 7F049DE4 24C619D4 */ addiu $a2, %lo(D_800319D4) # addiu $a2, $a2, 0x19d4 +.L7F049DE8: +/* 07E918 7F049DE8 3C068003 */ lui $a2, %hi(D_800319F0) +/* 07E91C 7F049DEC 1000004E */ b .L7F049F28 +/* 07E920 7F049DF0 24C619F0 */ addiu $a2, %lo(D_800319F0) # addiu $a2, $a2, 0x19f0 +.L7F049DF4: +/* 07E924 7F049DF4 3C068003 */ lui $a2, %hi(D_80031A0C) +/* 07E928 7F049DF8 1000004B */ b .L7F049F28 +/* 07E92C 7F049DFC 24C61A0C */ addiu $a2, %lo(D_80031A0C) # addiu $a2, $a2, 0x1a0c +.L7F049E00: +/* 07E930 7F049E00 3C068003 */ lui $a2, %hi(D_80031A28) +/* 07E934 7F049E04 10000048 */ b .L7F049F28 +/* 07E938 7F049E08 24C61A28 */ addiu $a2, %lo(D_80031A28) # addiu $a2, $a2, 0x1a28 +.L7F049E0C: +/* 07E93C 7F049E0C 3C068003 */ lui $a2, %hi(D_80031A44) +/* 07E940 7F049E10 10000045 */ b .L7F049F28 +/* 07E944 7F049E14 24C61A44 */ addiu $a2, %lo(D_80031A44) # addiu $a2, $a2, 0x1a44 +.L7F049E18: +/* 07E948 7F049E18 3C068003 */ lui $a2, %hi(D_80031A60) +/* 07E94C 7F049E1C 10000042 */ b .L7F049F28 +/* 07E950 7F049E20 24C61A60 */ addiu $a2, %lo(D_80031A60) # addiu $a2, $a2, 0x1a60 +.L7F049E24: +/* 07E954 7F049E24 3C068003 */ lui $a2, %hi(D_80031A7C) +/* 07E958 7F049E28 1000003F */ b .L7F049F28 +/* 07E95C 7F049E2C 24C61A7C */ addiu $a2, %lo(D_80031A7C) # addiu $a2, $a2, 0x1a7c +.L7F049E30: +/* 07E960 7F049E30 3C068003 */ lui $a2, %hi(D_80031A98) +/* 07E964 7F049E34 1000003C */ b .L7F049F28 +/* 07E968 7F049E38 24C61A98 */ addiu $a2, %lo(D_80031A98) # addiu $a2, $a2, 0x1a98 +.L7F049E3C: +/* 07E96C 7F049E3C 3C068003 */ lui $a2, %hi(D_80031AB4) +/* 07E970 7F049E40 10000039 */ b .L7F049F28 +/* 07E974 7F049E44 24C61AB4 */ addiu $a2, %lo(D_80031AB4) # addiu $a2, $a2, 0x1ab4 +.L7F049E48: +/* 07E978 7F049E48 3C068003 */ lui $a2, %hi(D_80031AD0) +/* 07E97C 7F049E4C 10000036 */ b .L7F049F28 +/* 07E980 7F049E50 24C61AD0 */ addiu $a2, %lo(D_80031AD0) # addiu $a2, $a2, 0x1ad0 +.L7F049E54: +/* 07E984 7F049E54 3C068003 */ lui $a2, %hi(D_80031AEC) +/* 07E988 7F049E58 10000033 */ b .L7F049F28 +/* 07E98C 7F049E5C 24C61AEC */ addiu $a2, %lo(D_80031AEC) # addiu $a2, $a2, 0x1aec +.L7F049E60: +/* 07E990 7F049E60 3C068003 */ lui $a2, %hi(D_80031B24) +/* 07E994 7F049E64 10000030 */ b .L7F049F28 +/* 07E998 7F049E68 24C61B24 */ addiu $a2, %lo(D_80031B24) # addiu $a2, $a2, 0x1b24 +.L7F049E6C: +/* 07E99C 7F049E6C 3C068003 */ lui $a2, %hi(D_80031B38) +/* 07E9A0 7F049E70 1000002D */ b .L7F049F28 +/* 07E9A4 7F049E74 24C61B38 */ addiu $a2, %lo(D_80031B38) # addiu $a2, $a2, 0x1b38 +.L7F049E78: +/* 07E9A8 7F049E78 3C068003 */ lui $a2, %hi(D_80031B4C) +/* 07E9AC 7F049E7C 1000002A */ b .L7F049F28 +/* 07E9B0 7F049E80 24C61B4C */ addiu $a2, %lo(D_80031B4C) # addiu $a2, $a2, 0x1b4c +.L7F049E84: +/* 07E9B4 7F049E84 3C068003 */ lui $a2, %hi(D_80031B60) +/* 07E9B8 7F049E88 10000027 */ b .L7F049F28 +/* 07E9BC 7F049E8C 24C61B60 */ addiu $a2, %lo(D_80031B60) # addiu $a2, $a2, 0x1b60 +.L7F049E90: +/* 07E9C0 7F049E90 3C068003 */ lui $a2, %hi(D_80031BB4) +/* 07E9C4 7F049E94 10000024 */ b .L7F049F28 +/* 07E9C8 7F049E98 24C61BB4 */ addiu $a2, %lo(D_80031BB4) # addiu $a2, $a2, 0x1bb4 +.L7F049E9C: +/* 07E9CC 7F049E9C 3C068003 */ lui $a2, %hi(D_80031BD0) +/* 07E9D0 7F049EA0 10000021 */ b .L7F049F28 +/* 07E9D4 7F049EA4 24C61BD0 */ addiu $a2, %lo(D_80031BD0) # addiu $a2, $a2, 0x1bd0 +.L7F049EA8: +/* 07E9D8 7F049EA8 3C068003 */ lui $a2, %hi(D_80031BEC) +/* 07E9DC 7F049EAC 1000001E */ b .L7F049F28 +/* 07E9E0 7F049EB0 24C61BEC */ addiu $a2, %lo(D_80031BEC) # addiu $a2, $a2, 0x1bec +.L7F049EB4: +/* 07E9E4 7F049EB4 3C068003 */ lui $a2, %hi(D_80031C08) +/* 07E9E8 7F049EB8 1000001B */ b .L7F049F28 +/* 07E9EC 7F049EBC 24C61C08 */ addiu $a2, %lo(D_80031C08) # addiu $a2, $a2, 0x1c08 +.L7F049EC0: +/* 07E9F0 7F049EC0 3C068003 */ lui $a2, %hi(D_80031C80) +/* 07E9F4 7F049EC4 10000018 */ b .L7F049F28 +/* 07E9F8 7F049EC8 24C61C80 */ addiu $a2, %lo(D_80031C80) # addiu $a2, $a2, 0x1c80 +.L7F049ECC: +/* 07E9FC 7F049ECC 3C068003 */ lui $a2, %hi(D_80031D30) +/* 07EA00 7F049ED0 10000015 */ b .L7F049F28 +/* 07EA04 7F049ED4 24C61D30 */ addiu $a2, %lo(D_80031D30) # addiu $a2, $a2, 0x1d30 +.L7F049ED8: +/* 07EA08 7F049ED8 3C068003 */ lui $a2, %hi(D_80031D58) +/* 07EA0C 7F049EDC 10000012 */ b .L7F049F28 +/* 07EA10 7F049EE0 24C61D58 */ addiu $a2, %lo(D_80031D58) # addiu $a2, $a2, 0x1d58 +.L7F049EE4: +/* 07EA14 7F049EE4 3C068003 */ lui $a2, %hi(D_80031DA8) +/* 07EA18 7F049EE8 1000000F */ b .L7F049F28 +/* 07EA1C 7F049EEC 24C61DA8 */ addiu $a2, %lo(D_80031DA8) # addiu $a2, $a2, 0x1da8 +.L7F049EF0: +/* 07EA20 7F049EF0 3C068003 */ lui $a2, %hi(D_80031DF4) +/* 07EA24 7F049EF4 1000000C */ b .L7F049F28 +/* 07EA28 7F049EF8 24C61DF4 */ addiu $a2, %lo(D_80031DF4) # addiu $a2, $a2, 0x1df4 +.L7F049EFC: +/* 07EA2C 7F049EFC 3C068003 */ lui $a2, %hi(D_80031E40) +/* 07EA30 7F049F00 10000009 */ b .L7F049F28 +/* 07EA34 7F049F04 24C61E40 */ addiu $a2, %lo(D_80031E40) # addiu $a2, $a2, 0x1e40 +.L7F049F08: +/* 07EA38 7F049F08 3C068003 */ lui $a2, %hi(D_80031E78) +/* 07EA3C 7F049F0C 10000006 */ b .L7F049F28 +/* 07EA40 7F049F10 24C61E78 */ addiu $a2, %lo(D_80031E78) # addiu $a2, $a2, 0x1e78 +.L7F049F14: +/* 07EA44 7F049F14 3C068003 */ lui $a2, %hi(D_80031EB0) +/* 07EA48 7F049F18 10000003 */ b .L7F049F28 +/* 07EA4C 7F049F1C 24C61EB0 */ addiu $a2, %lo(D_80031EB0) # addiu $a2, $a2, 0x1eb0 +.L7F049F20: +/* 07EA50 7F049F20 3C068003 */ lui $a2, %hi(D_80031EE8) +/* 07EA54 7F049F24 24C61EE8 */ addiu $a2, %lo(D_80031EE8) # addiu $a2, $a2, 0x1ee8 +def_7F049CC0: +.L7F049F28: +/* 07EA58 7F049F28 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 07EA5C 7F049F2C 00C02825 */ move $a1, $a2 +/* 07EA60 7F049F30 8FBF0014 */ lw $ra, 0x14($sp) +/* 07EA64 7F049F34 27BD0018 */ addiu $sp, $sp, 0x18 +/* 07EA68 7F049F38 03E00008 */ jr $ra +/* 07EA6C 7F049F3C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void save_img_index_to_obj_ani_slot(void) { + +} +#else +GLOBAL_ASM( +.text +glabel save_img_index_to_obj_ani_slot +/* 07EA70 7F049F40 03E00008 */ jr $ra +/* 07EA74 7F049F44 AC850008 */ sw $a1, 8($a0) +) +#endif + + + + + +#ifdef NONMATCHING +void process_monitor_animation_microcode(void) { + +} +#else +#ifdef VERSION_US +GLOBAL_ASM( +.late_rodata +glabel D_80052C68 +.word 0x40c90fdb /*6.2831855*/ +/*D:80052C6C*/ +glabel jpt_80052C6C +.word command00_reset_scroll_shift +.word command01_horizontal_scroll +.word command02_vertical_scroll +.word command03_horizontal_pos +.word command04_vertical_pos +.word command05_zoomx +.word command06_zoomy +.word command07_use_image_from_global_monitor_table +.word command08_halt_processing_for_time +.word command09_jump +.word command0A_jump_conditional +.word command0B_restart +.word command0C_break +.word command0D_colour_transition +.word command0E_set_rotation +.word command0F_rotate + +glabel D_80052CAC +.word 0x3fc90fdb /*1.5707964*/ +glabel D_80052CB0 +.word 0x3fb50481 /*1.4141999*/ +glabel D_80052CB4 +.word 0x3f59999a /*0.85000002*/ +glabel D_80052CB8 +.word 0x3e19999a /*0.15000001*/ +glabel D_80052CBC +.word 0x3e19999a /*0.15000001*/ +glabel D_80052CC0 +.word 0x3f666666 /*0.89999998*/ +.text +glabel process_monitor_animation_microcode +/* 07EA78 7F049F48 27BDFF50 */ addiu $sp, $sp, -0xb0 +/* 07EA7C 7F049F4C AFB10044 */ sw $s1, 0x44($sp) +/* 07EA80 7F049F50 AFB00040 */ sw $s0, 0x40($sp) +/* 07EA84 7F049F54 00C08025 */ move $s0, $a2 +/* 07EA88 7F049F58 00A08825 */ move $s1, $a1 +/* 07EA8C 7F049F5C AFBF004C */ sw $ra, 0x4c($sp) +/* 07EA90 7F049F60 AFB20048 */ sw $s2, 0x48($sp) +/* 07EA94 7F049F64 F7BA0038 */ sdc1 $f26, 0x38($sp) +/* 07EA98 7F049F68 F7B80030 */ sdc1 $f24, 0x30($sp) +/* 07EA9C 7F049F6C F7B60028 */ sdc1 $f22, 0x28($sp) +/* 07EAA0 7F049F70 F7B40020 */ sdc1 $f20, 0x20($sp) +/* 07EAA4 7F049F74 AFA400B0 */ sw $a0, 0xb0($sp) +/* 07EAA8 7F049F78 10A0031E */ beqz $a1, .L7F04ABF4 +/* 07EAAC 7F049F7C AFA700BC */ sw $a3, 0xbc($sp) +/* 07EAB0 7F049F80 94AE0000 */ lhu $t6, ($a1) +/* 07EAB4 7F049F84 24010018 */ li $at, 24 +/* 07EAB8 7F049F88 31CF00FF */ andi $t7, $t6, 0xff +/* 07EABC 7F049F8C 55E1031A */ bnel $t7, $at, .L7F04ABF8 +/* 07EAC0 7F049F90 8FBF004C */ lw $ra, 0x4c($sp) +/* 07EAC4 7F049F94 0FC2F5B1 */ jal sub_GAME_7F0BD6C4 +/* 07EAC8 7F049F98 24040004 */ li $a0, 4 +/* 07EACC 7F049F9C 8FB800BC */ lw $t8, 0xbc($sp) +/* 07EAD0 7F049FA0 00409025 */ move $s2, $v0 +/* 07EAD4 7F049FA4 8FA400B0 */ lw $a0, 0xb0($sp) +/* 07EAD8 7F049FA8 27190008 */ addiu $t9, $t8, 8 +/* 07EADC 7F049FAC AFB900BC */ sw $t9, 0xbc($sp) +/* 07EAE0 7F049FB0 AFB800A8 */ sw $t8, 0xa8($sp) +/* 07EAE4 7F049FB4 8E280004 */ lw $t0, 4($s1) +/* 07EAE8 7F049FB8 02202825 */ move $a1, $s1 +/* 07EAEC 7F049FBC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 07EAF0 7F049FC0 AFA800A4 */ sw $t0, 0xa4($sp) +/* 07EAF4 7F049FC4 3C018005 */ lui $at, %hi(D_80052C68) +/* 07EAF8 7F049FC8 C43A2C68 */ lwc1 $f26, %lo(D_80052C68)($at) +/* 07EAFC 7F049FCC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07EB00 7F049FD0 4481C000 */ mtc1 $at, $f24 +/* 07EB04 7F049FD4 3C013A80 */ li $at, 0x3A800000 # 0.000977 +/* 07EB08 7F049FD8 4481B000 */ mtc1 $at, $f22 +/* 07EB0C 7F049FDC 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EB10 7F049FE0 44811000 */ mtc1 $at, $f2 +/* 07EB14 7F049FE4 4480A000 */ mtc1 $zero, $f20 +/* 07EB18 7F049FE8 AFA200A0 */ sw $v0, 0xa0($sp) +/* 07EB1C 7F049FEC 00008825 */ move $s1, $zero +/* 07EB20 7F049FF0 96020004 */ lhu $v0, 4($s0) +.L7F049FF4: +/* 07EB24 7F049FF4 8E090000 */ lw $t1, ($s0) +/* 07EB28 7F049FF8 00025080 */ sll $t2, $v0, 2 +/* 07EB2C 7F049FFC 012A1821 */ addu $v1, $t1, $t2 +/* 07EB30 7F04A000 8C6B0000 */ lw $t3, ($v1) +/* 07EB34 7F04A004 2D610010 */ sltiu $at, $t3, 0x10 +/* 07EB38 7F04A008 10200117 */ beqz $at, .L7F04A468 +/* 07EB3C 7F04A00C 000B5880 */ sll $t3, $t3, 2 +/* 07EB40 7F04A010 3C018005 */ lui $at, %hi(jpt_80052C6C) +/* 07EB44 7F04A014 002B0821 */ addu $at, $at, $t3 +/* 07EB48 7F04A018 8C2B2C6C */ lw $t3, %lo(jpt_80052C6C)($at) +/* 07EB4C 7F04A01C 01600008 */ jr $t3 +/* 07EB50 7F04A020 00000000 */ nop +command00_reset_scroll_shift: +/* 07EB54 7F04A024 244C0001 */ addiu $t4, $v0, 1 +/* 07EB58 7F04A028 E6140040 */ swc1 $f20, 0x40($s0) +/* 07EB5C 7F04A02C E6140054 */ swc1 $f20, 0x54($s0) +/* 07EB60 7F04A030 1000010D */ b .L7F04A468 +/* 07EB64 7F04A034 A60C0004 */ sh $t4, 4($s0) +command01_horizontal_scroll: +/* 07EB68 7F04A038 E614003C */ swc1 $f20, 0x3c($s0) +/* 07EB6C 7F04A03C 8C6D0008 */ lw $t5, 8($v1) +/* 07EB70 7F04A040 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EB74 7F04A044 448D2000 */ mtc1 $t5, $f4 +/* 07EB78 7F04A048 05A10004 */ bgez $t5, .L7F04A05C +/* 07EB7C 7F04A04C 468021A0 */ cvt.s.w $f6, $f4 +/* 07EB80 7F04A050 44814000 */ mtc1 $at, $f8 +/* 07EB84 7F04A054 00000000 */ nop +/* 07EB88 7F04A058 46083180 */ add.s $f6, $f6, $f8 +.L7F04A05C: +/* 07EB8C 7F04A05C 4606C283 */ div.s $f10, $f24, $f6 +/* 07EB90 7F04A060 C6000038 */ lwc1 $f0, 0x38($s0) +/* 07EB94 7F04A064 244F0003 */ addiu $t7, $v0, 3 +/* 07EB98 7F04A068 E6000044 */ swc1 $f0, 0x44($s0) +/* 07EB9C 7F04A06C E60A0040 */ swc1 $f10, 0x40($s0) +/* 07EBA0 7F04A070 8C6E0004 */ lw $t6, 4($v1) +/* 07EBA4 7F04A074 A60F0004 */ sh $t7, 4($s0) +/* 07EBA8 7F04A078 448E9000 */ mtc1 $t6, $f18 +/* 07EBAC 7F04A07C 00000000 */ nop +/* 07EBB0 7F04A080 46809120 */ cvt.s.w $f4, $f18 +/* 07EBB4 7F04A084 46162202 */ mul.s $f8, $f4, $f22 +/* 07EBB8 7F04A088 46080180 */ add.s $f6, $f0, $f8 +/* 07EBBC 7F04A08C 100000F6 */ b .L7F04A468 +/* 07EBC0 7F04A090 E6060048 */ swc1 $f6, 0x48($s0) +command02_vertical_scroll: +/* 07EBC4 7F04A094 E6140050 */ swc1 $f20, 0x50($s0) +/* 07EBC8 7F04A098 8C780008 */ lw $t8, 8($v1) +/* 07EBCC 7F04A09C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EBD0 7F04A0A0 44985000 */ mtc1 $t8, $f10 +/* 07EBD4 7F04A0A4 07010004 */ bgez $t8, .L7F04A0B8 +/* 07EBD8 7F04A0A8 468054A0 */ cvt.s.w $f18, $f10 +/* 07EBDC 7F04A0AC 44812000 */ mtc1 $at, $f4 +/* 07EBE0 7F04A0B0 00000000 */ nop +/* 07EBE4 7F04A0B4 46049480 */ add.s $f18, $f18, $f4 +.L7F04A0B8: +/* 07EBE8 7F04A0B8 4612C203 */ div.s $f8, $f24, $f18 +/* 07EBEC 7F04A0BC C600004C */ lwc1 $f0, 0x4c($s0) +/* 07EBF0 7F04A0C0 24480003 */ addiu $t0, $v0, 3 +/* 07EBF4 7F04A0C4 E6000058 */ swc1 $f0, 0x58($s0) +/* 07EBF8 7F04A0C8 E6080054 */ swc1 $f8, 0x54($s0) +/* 07EBFC 7F04A0CC 8C790004 */ lw $t9, 4($v1) +/* 07EC00 7F04A0D0 A6080004 */ sh $t0, 4($s0) +/* 07EC04 7F04A0D4 44993000 */ mtc1 $t9, $f6 +/* 07EC08 7F04A0D8 00000000 */ nop +/* 07EC0C 7F04A0DC 468032A0 */ cvt.s.w $f10, $f6 +/* 07EC10 7F04A0E0 46165102 */ mul.s $f4, $f10, $f22 +/* 07EC14 7F04A0E4 46040480 */ add.s $f18, $f0, $f4 +/* 07EC18 7F04A0E8 100000DF */ b .L7F04A468 +/* 07EC1C 7F04A0EC E612005C */ swc1 $f18, 0x5c($s0) +command03_horizontal_pos: +/* 07EC20 7F04A0F0 E614003C */ swc1 $f20, 0x3c($s0) +/* 07EC24 7F04A0F4 8C690008 */ lw $t1, 8($v1) +/* 07EC28 7F04A0F8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EC2C 7F04A0FC 44894000 */ mtc1 $t1, $f8 +/* 07EC30 7F04A100 05210004 */ bgez $t1, .L7F04A114 +/* 07EC34 7F04A104 468041A0 */ cvt.s.w $f6, $f8 +/* 07EC38 7F04A108 44815000 */ mtc1 $at, $f10 +/* 07EC3C 7F04A10C 00000000 */ nop +/* 07EC40 7F04A110 460A3180 */ add.s $f6, $f6, $f10 +.L7F04A114: +/* 07EC44 7F04A114 4606C103 */ div.s $f4, $f24, $f6 +/* 07EC48 7F04A118 C6120038 */ lwc1 $f18, 0x38($s0) +/* 07EC4C 7F04A11C 244B0003 */ addiu $t3, $v0, 3 +/* 07EC50 7F04A120 E6120044 */ swc1 $f18, 0x44($s0) +/* 07EC54 7F04A124 E6040040 */ swc1 $f4, 0x40($s0) +/* 07EC58 7F04A128 8C6A0004 */ lw $t2, 4($v1) +/* 07EC5C 7F04A12C A60B0004 */ sh $t3, 4($s0) +/* 07EC60 7F04A130 448A4000 */ mtc1 $t2, $f8 +/* 07EC64 7F04A134 00000000 */ nop +/* 07EC68 7F04A138 468042A0 */ cvt.s.w $f10, $f8 +/* 07EC6C 7F04A13C 46165182 */ mul.s $f6, $f10, $f22 +/* 07EC70 7F04A140 100000C9 */ b .L7F04A468 +/* 07EC74 7F04A144 E6060048 */ swc1 $f6, 0x48($s0) +command04_vertical_pos: +/* 07EC78 7F04A148 E6140050 */ swc1 $f20, 0x50($s0) +/* 07EC7C 7F04A14C 8C6C0008 */ lw $t4, 8($v1) +/* 07EC80 7F04A150 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EC84 7F04A154 448C2000 */ mtc1 $t4, $f4 +/* 07EC88 7F04A158 05810004 */ bgez $t4, .L7F04A16C +/* 07EC8C 7F04A15C 468024A0 */ cvt.s.w $f18, $f4 +/* 07EC90 7F04A160 44814000 */ mtc1 $at, $f8 +/* 07EC94 7F04A164 00000000 */ nop +/* 07EC98 7F04A168 46089480 */ add.s $f18, $f18, $f8 +.L7F04A16C: +/* 07EC9C 7F04A16C 4612C283 */ div.s $f10, $f24, $f18 +/* 07ECA0 7F04A170 C606004C */ lwc1 $f6, 0x4c($s0) +/* 07ECA4 7F04A174 244E0003 */ addiu $t6, $v0, 3 +/* 07ECA8 7F04A178 E6060058 */ swc1 $f6, 0x58($s0) +/* 07ECAC 7F04A17C E60A0054 */ swc1 $f10, 0x54($s0) +/* 07ECB0 7F04A180 8C6D0004 */ lw $t5, 4($v1) +/* 07ECB4 7F04A184 A60E0004 */ sh $t6, 4($s0) +/* 07ECB8 7F04A188 448D2000 */ mtc1 $t5, $f4 +/* 07ECBC 7F04A18C 00000000 */ nop +/* 07ECC0 7F04A190 46802220 */ cvt.s.w $f8, $f4 +/* 07ECC4 7F04A194 46164482 */ mul.s $f18, $f8, $f22 +/* 07ECC8 7F04A198 100000B3 */ b .L7F04A468 +/* 07ECCC 7F04A19C E612005C */ swc1 $f18, 0x5c($s0) +command05_zoomx: +/* 07ECD0 7F04A1A0 E6140014 */ swc1 $f20, 0x14($s0) +/* 07ECD4 7F04A1A4 8C6F0008 */ lw $t7, 8($v1) +/* 07ECD8 7F04A1A8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07ECDC 7F04A1AC 448F5000 */ mtc1 $t7, $f10 +/* 07ECE0 7F04A1B0 05E10004 */ bgez $t7, .L7F04A1C4 +/* 07ECE4 7F04A1B4 468051A0 */ cvt.s.w $f6, $f10 +/* 07ECE8 7F04A1B8 44812000 */ mtc1 $at, $f4 +/* 07ECEC 7F04A1BC 00000000 */ nop +/* 07ECF0 7F04A1C0 46043180 */ add.s $f6, $f6, $f4 +.L7F04A1C4: +/* 07ECF4 7F04A1C4 4606C203 */ div.s $f8, $f24, $f6 +/* 07ECF8 7F04A1C8 C6120010 */ lwc1 $f18, 0x10($s0) +/* 07ECFC 7F04A1CC 24590003 */ addiu $t9, $v0, 3 +/* 07ED00 7F04A1D0 E612001C */ swc1 $f18, 0x1c($s0) +/* 07ED04 7F04A1D4 E6080018 */ swc1 $f8, 0x18($s0) +/* 07ED08 7F04A1D8 8C780004 */ lw $t8, 4($v1) +/* 07ED0C 7F04A1DC A6190004 */ sh $t9, 4($s0) +/* 07ED10 7F04A1E0 44985000 */ mtc1 $t8, $f10 +/* 07ED14 7F04A1E4 00000000 */ nop +/* 07ED18 7F04A1E8 46805120 */ cvt.s.w $f4, $f10 +/* 07ED1C 7F04A1EC 46162182 */ mul.s $f6, $f4, $f22 +/* 07ED20 7F04A1F0 1000009D */ b .L7F04A468 +/* 07ED24 7F04A1F4 E6060020 */ swc1 $f6, 0x20($s0) +command06_zoomy: +/* 07ED28 7F04A1F8 E6140028 */ swc1 $f20, 0x28($s0) +/* 07ED2C 7F04A1FC 8C680008 */ lw $t0, 8($v1) +/* 07ED30 7F04A200 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07ED34 7F04A204 44884000 */ mtc1 $t0, $f8 +/* 07ED38 7F04A208 05010004 */ bgez $t0, .L7F04A21C +/* 07ED3C 7F04A20C 468044A0 */ cvt.s.w $f18, $f8 +/* 07ED40 7F04A210 44815000 */ mtc1 $at, $f10 +/* 07ED44 7F04A214 00000000 */ nop +/* 07ED48 7F04A218 460A9480 */ add.s $f18, $f18, $f10 +.L7F04A21C: +/* 07ED4C 7F04A21C 4612C103 */ div.s $f4, $f24, $f18 +/* 07ED50 7F04A220 C6060024 */ lwc1 $f6, 0x24($s0) +/* 07ED54 7F04A224 244A0003 */ addiu $t2, $v0, 3 +/* 07ED58 7F04A228 E6060030 */ swc1 $f6, 0x30($s0) +/* 07ED5C 7F04A22C E604002C */ swc1 $f4, 0x2c($s0) +/* 07ED60 7F04A230 8C690004 */ lw $t1, 4($v1) +/* 07ED64 7F04A234 A60A0004 */ sh $t2, 4($s0) +/* 07ED68 7F04A238 44894000 */ mtc1 $t1, $f8 +/* 07ED6C 7F04A23C 00000000 */ nop +/* 07ED70 7F04A240 468042A0 */ cvt.s.w $f10, $f8 +/* 07ED74 7F04A244 46165482 */ mul.s $f18, $f10, $f22 +/* 07ED78 7F04A248 10000087 */ b .L7F04A468 +/* 07ED7C 7F04A24C E6120034 */ swc1 $f18, 0x34($s0) +command07_use_image_from_global_monitor_table: +/* 07ED80 7F04A250 02002025 */ move $a0, $s0 +/* 07ED84 7F04A254 0FC127D0 */ jal save_img_index_to_obj_ani_slot +/* 07ED88 7F04A258 8C650004 */ lw $a1, 4($v1) +/* 07ED8C 7F04A25C 960B0004 */ lhu $t3, 4($s0) +/* 07ED90 7F04A260 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07ED94 7F04A264 44811000 */ mtc1 $at, $f2 +/* 07ED98 7F04A268 256C0002 */ addiu $t4, $t3, 2 +/* 07ED9C 7F04A26C 1000007E */ b .L7F04A468 +/* 07EDA0 7F04A270 A60C0004 */ sh $t4, 4($s0) +command08_halt_processing_for_time: +/* 07EDA4 7F04A274 86020006 */ lh $v0, 6($s0) +/* 07EDA8 7F04A278 3C0D8005 */ lui $t5, %hi(clock_timer) +/* 07EDAC 7F04A27C 0442000E */ bltzl $v0, .L7F04A2B8 +/* 07EDB0 7F04A280 8C680004 */ lw $t0, 4($v1) +/* 07EDB4 7F04A284 8DAD8374 */ lw $t5, %lo(clock_timer)($t5) +/* 07EDB8 7F04A288 004D7023 */ subu $t6, $v0, $t5 +/* 07EDBC 7F04A28C A60E0006 */ sh $t6, 6($s0) +/* 07EDC0 7F04A290 860F0006 */ lh $t7, 6($s0) +/* 07EDC4 7F04A294 05E20004 */ bltzl $t7, .L7F04A2A8 +/* 07EDC8 7F04A298 96180004 */ lhu $t8, 4($s0) +/* 07EDCC 7F04A29C 10000072 */ b .L7F04A468 +/* 07EDD0 7F04A2A0 24110001 */ li $s1, 1 +/* 07EDD4 7F04A2A4 96180004 */ lhu $t8, 4($s0) +.L7F04A2A8: +/* 07EDD8 7F04A2A8 27190002 */ addiu $t9, $t8, 2 +/* 07EDDC 7F04A2AC 1000006E */ b .L7F04A468 +/* 07EDE0 7F04A2B0 A6190004 */ sh $t9, 4($s0) +/* 07EDE4 7F04A2B4 8C680004 */ lw $t0, 4($v1) +.L7F04A2B8: +/* 07EDE8 7F04A2B8 24110001 */ li $s1, 1 +/* 07EDEC 7F04A2BC 1000006A */ b .L7F04A468 +/* 07EDF0 7F04A2C0 A6080006 */ sh $t0, 6($s0) +command09_jump: +/* 07EDF4 7F04A2C4 02002025 */ move $a0, $s0 +/* 07EDF8 7F04A2C8 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 07EDFC 7F04A2CC 8C650004 */ lw $a1, 4($v1) +/* 07EE00 7F04A2D0 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EE04 7F04A2D4 44811000 */ mtc1 $at, $f2 +/* 07EE08 7F04A2D8 10000063 */ b .L7F04A468 +/* 07EE0C 7F04A2DC 00000000 */ nop +command0A_jump_conditional: +/* 07EE10 7F04A2E0 0C002914 */ jal get_random_value +/* 07EE14 7F04A2E4 AFA30094 */ sw $v1, 0x94($sp) +/* 07EE18 7F04A2E8 8FA30094 */ lw $v1, 0x94($sp) +/* 07EE1C 7F04A2EC 00024C02 */ srl $t1, $v0, 0x10 +/* 07EE20 7F04A2F0 02002025 */ move $a0, $s0 +/* 07EE24 7F04A2F4 8C6A0008 */ lw $t2, 8($v1) +/* 07EE28 7F04A2F8 012A082B */ sltu $at, $t1, $t2 +/* 07EE2C 7F04A2FC 50200008 */ beql $at, $zero, .L7F04A320 +/* 07EE30 7F04A300 960B0004 */ lhu $t3, 4($s0) +/* 07EE34 7F04A304 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 07EE38 7F04A308 8C650004 */ lw $a1, 4($v1) +/* 07EE3C 7F04A30C 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EE40 7F04A310 44811000 */ mtc1 $at, $f2 +/* 07EE44 7F04A314 10000054 */ b .L7F04A468 +/* 07EE48 7F04A318 00000000 */ nop +/* 07EE4C 7F04A31C 960B0004 */ lhu $t3, 4($s0) +.L7F04A320: +/* 07EE50 7F04A320 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EE54 7F04A324 44811000 */ mtc1 $at, $f2 +/* 07EE58 7F04A328 256C0003 */ addiu $t4, $t3, 3 +/* 07EE5C 7F04A32C A60C0004 */ sh $t4, 4($s0) +/* 07EE60 7F04A330 1000004D */ b .L7F04A468 +/* 07EE64 7F04A334 00000000 */ nop +command0B_restart: +/* 07EE68 7F04A338 1000004B */ b .L7F04A468 +/* 07EE6C 7F04A33C A6000004 */ sh $zero, 4($s0) +command0C_break: +/* 07EE70 7F04A340 10000049 */ b .L7F04A468 +/* 07EE74 7F04A344 24110001 */ li $s1, 1 +command0D_colour_transition: +/* 07EE78 7F04A348 E614006C */ swc1 $f20, 0x6c($s0) +/* 07EE7C 7F04A34C 8C6D0008 */ lw $t5, 8($v1) +/* 07EE80 7F04A350 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EE84 7F04A354 448D2000 */ mtc1 $t5, $f4 +/* 07EE88 7F04A358 05A10004 */ bgez $t5, .L7F04A36C +/* 07EE8C 7F04A35C 468021A0 */ cvt.s.w $f6, $f4 +/* 07EE90 7F04A360 44814000 */ mtc1 $at, $f8 +/* 07EE94 7F04A364 00000000 */ nop +/* 07EE98 7F04A368 46083180 */ add.s $f6, $f6, $f8 +.L7F04A36C: +/* 07EE9C 7F04A36C 4606C283 */ div.s $f10, $f24, $f6 +/* 07EEA0 7F04A370 920E0060 */ lbu $t6, 0x60($s0) +/* 07EEA4 7F04A374 92080063 */ lbu $t0, 0x63($s0) +/* 07EEA8 7F04A378 920C0066 */ lbu $t4, 0x66($s0) +/* 07EEAC 7F04A37C A20E0061 */ sb $t6, 0x61($s0) +/* 07EEB0 7F04A380 92180069 */ lbu $t8, 0x69($s0) +/* 07EEB4 7F04A384 E60A0070 */ swc1 $f10, 0x70($s0) +/* 07EEB8 7F04A388 8C6F0004 */ lw $t7, 4($v1) +/* 07EEBC 7F04A38C A2080064 */ sb $t0, 0x64($s0) +/* 07EEC0 7F04A390 000FCE02 */ srl $t9, $t7, 0x18 +/* 07EEC4 7F04A394 A2190062 */ sb $t9, 0x62($s0) +/* 07EEC8 7F04A398 8C690004 */ lw $t1, 4($v1) +/* 07EECC 7F04A39C A20C0067 */ sb $t4, 0x67($s0) +/* 07EED0 7F04A3A0 00095C02 */ srl $t3, $t1, 0x10 +/* 07EED4 7F04A3A4 A20B0065 */ sb $t3, 0x65($s0) +/* 07EED8 7F04A3A8 8C6D0004 */ lw $t5, 4($v1) +/* 07EEDC 7F04A3AC A218006A */ sb $t8, 0x6a($s0) +/* 07EEE0 7F04A3B0 24490003 */ addiu $t1, $v0, 3 +/* 07EEE4 7F04A3B4 000D7A02 */ srl $t7, $t5, 8 +/* 07EEE8 7F04A3B8 A20F0068 */ sb $t7, 0x68($s0) +/* 07EEEC 7F04A3BC 8C680004 */ lw $t0, 4($v1) +/* 07EEF0 7F04A3C0 A6090004 */ sh $t1, 4($s0) +/* 07EEF4 7F04A3C4 10000028 */ b .L7F04A468 +/* 07EEF8 7F04A3C8 A208006B */ sb $t0, 0x6b($s0) +command0E_set_rotation: +/* 07EEFC 7F04A3CC 8C6A0004 */ lw $t2, 4($v1) +/* 07EF00 7F04A3D0 244B0002 */ addiu $t3, $v0, 2 +/* 07EF04 7F04A3D4 A60B0004 */ sh $t3, 4($s0) +/* 07EF08 7F04A3D8 448A9000 */ mtc1 $t2, $f18 +/* 07EF0C 7F04A3DC 00000000 */ nop +/* 07EF10 7F04A3E0 46809120 */ cvt.s.w $f4, $f18 +/* 07EF14 7F04A3E4 461A2202 */ mul.s $f8, $f4, $f26 +/* 07EF18 7F04A3E8 46024183 */ div.s $f6, $f8, $f2 +/* 07EF1C 7F04A3EC 1000001E */ b .L7F04A468 +/* 07EF20 7F04A3F0 E606000C */ swc1 $f6, 0xc($s0) +command0F_rotate: +/* 07EF24 7F04A3F4 8C6C0004 */ lw $t4, 4($v1) +/* 07EF28 7F04A3F8 3C018005 */ lui $at, %hi(global_timer_delta) +/* 07EF2C 7F04A3FC C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 07EF30 7F04A400 448C9000 */ mtc1 $t4, $f18 +/* 07EF34 7F04A404 00000000 */ nop +/* 07EF38 7F04A408 46809120 */ cvt.s.w $f4, $f18 +/* 07EF3C 7F04A40C 46045202 */ mul.s $f8, $f10, $f4 +/* 07EF40 7F04A410 C60A000C */ lwc1 $f10, 0xc($s0) +/* 07EF44 7F04A414 461A4182 */ mul.s $f6, $f8, $f26 +/* 07EF48 7F04A418 46023483 */ div.s $f18, $f6, $f2 +/* 07EF4C 7F04A41C 46125100 */ add.s $f4, $f10, $f18 +/* 07EF50 7F04A420 E604000C */ swc1 $f4, 0xc($s0) +/* 07EF54 7F04A424 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07EF58 7F04A428 460CD03E */ c.le.s $f26, $f12 +/* 07EF5C 7F04A42C 00000000 */ nop +/* 07EF60 7F04A430 45020005 */ bc1fl .L7F04A448 +/* 07EF64 7F04A434 4614603C */ c.lt.s $f12, $f20 +/* 07EF68 7F04A438 461A6201 */ sub.s $f8, $f12, $f26 +/* 07EF6C 7F04A43C E608000C */ swc1 $f8, 0xc($s0) +/* 07EF70 7F04A440 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07EF74 7F04A444 4614603C */ c.lt.s $f12, $f20 +.L7F04A448: +/* 07EF78 7F04A448 00000000 */ nop +/* 07EF7C 7F04A44C 45020004 */ bc1fl .L7F04A460 +/* 07EF80 7F04A450 960D0004 */ lhu $t5, 4($s0) +/* 07EF84 7F04A454 461A6180 */ add.s $f6, $f12, $f26 +/* 07EF88 7F04A458 E606000C */ swc1 $f6, 0xc($s0) +/* 07EF8C 7F04A45C 960D0004 */ lhu $t5, 4($s0) +.L7F04A460: +/* 07EF90 7F04A460 25AE0002 */ addiu $t6, $t5, 2 +/* 07EF94 7F04A464 A60E0004 */ sh $t6, 4($s0) +def_7F04A01C: +.L7F04A468: +/* 07EF98 7F04A468 5220FEE2 */ beql $s1, $zero, .L7F049FF4 +/* 07EF9C 7F04A46C 96020004 */ lhu $v0, 4($s0) +/* 07EFA0 7F04A470 C6000018 */ lwc1 $f0, 0x18($s0) +/* 07EFA4 7F04A474 4600A03C */ c.lt.s $f20, $f0 +/* 07EFA8 7F04A478 00000000 */ nop +/* 07EFAC 7F04A47C 45000017 */ bc1f .L7F04A4DC +/* 07EFB0 7F04A480 3C028005 */ lui $v0, %hi(global_timer_delta) +/* 07EFB4 7F04A484 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 +/* 07EFB8 7F04A488 C4520000 */ lwc1 $f18, ($v0) +/* 07EFBC 7F04A48C C60A0014 */ lwc1 $f10, 0x14($s0) +/* 07EFC0 7F04A490 46120102 */ mul.s $f4, $f0, $f18 +/* 07EFC4 7F04A494 46045200 */ add.s $f8, $f10, $f4 +/* 07EFC8 7F04A498 E6080014 */ swc1 $f8, 0x14($s0) +/* 07EFCC 7F04A49C C6020014 */ lwc1 $f2, 0x14($s0) +/* 07EFD0 7F04A4A0 4618103C */ c.lt.s $f2, $f24 +/* 07EFD4 7F04A4A4 00000000 */ nop +/* 07EFD8 7F04A4A8 45020009 */ bc1fl .L7F04A4D0 +/* 07EFDC 7F04A4AC C6080020 */ lwc1 $f8, 0x20($s0) +/* 07EFE0 7F04A4B0 C600001C */ lwc1 $f0, 0x1c($s0) +/* 07EFE4 7F04A4B4 C6060020 */ lwc1 $f6, 0x20($s0) +/* 07EFE8 7F04A4B8 46003481 */ sub.s $f18, $f6, $f0 +/* 07EFEC 7F04A4BC 46029282 */ mul.s $f10, $f18, $f2 +/* 07EFF0 7F04A4C0 460A0100 */ add.s $f4, $f0, $f10 +/* 07EFF4 7F04A4C4 10000005 */ b .L7F04A4DC +/* 07EFF8 7F04A4C8 E6040010 */ swc1 $f4, 0x10($s0) +/* 07EFFC 7F04A4CC C6080020 */ lwc1 $f8, 0x20($s0) +.L7F04A4D0: +/* 07F000 7F04A4D0 E6180014 */ swc1 $f24, 0x14($s0) +/* 07F004 7F04A4D4 E6140018 */ swc1 $f20, 0x18($s0) +/* 07F008 7F04A4D8 E6080010 */ swc1 $f8, 0x10($s0) +.L7F04A4DC: +/* 07F00C 7F04A4DC C600002C */ lwc1 $f0, 0x2c($s0) +/* 07F010 7F04A4E0 3C028005 */ lui $v0, %hi(global_timer_delta) +/* 07F014 7F04A4E4 24428378 */ addiu $v0, %lo(global_timer_delta) # addiu $v0, $v0, -0x7c88 +/* 07F018 7F04A4E8 4600A03C */ c.lt.s $f20, $f0 +/* 07F01C 7F04A4EC 00000000 */ nop +/* 07F020 7F04A4F0 45020017 */ bc1fl .L7F04A550 +/* 07F024 7F04A4F4 C6000040 */ lwc1 $f0, 0x40($s0) +/* 07F028 7F04A4F8 C4520000 */ lwc1 $f18, ($v0) +/* 07F02C 7F04A4FC C6060028 */ lwc1 $f6, 0x28($s0) +/* 07F030 7F04A500 46120282 */ mul.s $f10, $f0, $f18 +/* 07F034 7F04A504 460A3100 */ add.s $f4, $f6, $f10 +/* 07F038 7F04A508 E6040028 */ swc1 $f4, 0x28($s0) +/* 07F03C 7F04A50C C6020028 */ lwc1 $f2, 0x28($s0) +/* 07F040 7F04A510 4618103C */ c.lt.s $f2, $f24 +/* 07F044 7F04A514 00000000 */ nop +/* 07F048 7F04A518 45020009 */ bc1fl .L7F04A540 +/* 07F04C 7F04A51C C6040034 */ lwc1 $f4, 0x34($s0) +/* 07F050 7F04A520 C6000030 */ lwc1 $f0, 0x30($s0) +/* 07F054 7F04A524 C6080034 */ lwc1 $f8, 0x34($s0) +/* 07F058 7F04A528 46004481 */ sub.s $f18, $f8, $f0 +/* 07F05C 7F04A52C 46029182 */ mul.s $f6, $f18, $f2 +/* 07F060 7F04A530 46060280 */ add.s $f10, $f0, $f6 +/* 07F064 7F04A534 10000005 */ b .L7F04A54C +/* 07F068 7F04A538 E60A0024 */ swc1 $f10, 0x24($s0) +/* 07F06C 7F04A53C C6040034 */ lwc1 $f4, 0x34($s0) +.L7F04A540: +/* 07F070 7F04A540 E6180028 */ swc1 $f24, 0x28($s0) +/* 07F074 7F04A544 E614002C */ swc1 $f20, 0x2c($s0) +/* 07F078 7F04A548 E6040024 */ swc1 $f4, 0x24($s0) +.L7F04A54C: +/* 07F07C 7F04A54C C6000040 */ lwc1 $f0, 0x40($s0) +.L7F04A550: +/* 07F080 7F04A550 4600A03C */ c.lt.s $f20, $f0 +/* 07F084 7F04A554 00000000 */ nop +/* 07F088 7F04A558 45020017 */ bc1fl .L7F04A5B8 +/* 07F08C 7F04A55C C6000054 */ lwc1 $f0, 0x54($s0) +/* 07F090 7F04A560 C4520000 */ lwc1 $f18, ($v0) +/* 07F094 7F04A564 C608003C */ lwc1 $f8, 0x3c($s0) +/* 07F098 7F04A568 46120182 */ mul.s $f6, $f0, $f18 +/* 07F09C 7F04A56C 46064280 */ add.s $f10, $f8, $f6 +/* 07F0A0 7F04A570 E60A003C */ swc1 $f10, 0x3c($s0) +/* 07F0A4 7F04A574 C602003C */ lwc1 $f2, 0x3c($s0) +/* 07F0A8 7F04A578 4618103C */ c.lt.s $f2, $f24 +/* 07F0AC 7F04A57C 00000000 */ nop +/* 07F0B0 7F04A580 45020009 */ bc1fl .L7F04A5A8 +/* 07F0B4 7F04A584 C60A0048 */ lwc1 $f10, 0x48($s0) +/* 07F0B8 7F04A588 C6000044 */ lwc1 $f0, 0x44($s0) +/* 07F0BC 7F04A58C C6040048 */ lwc1 $f4, 0x48($s0) +/* 07F0C0 7F04A590 46002481 */ sub.s $f18, $f4, $f0 +/* 07F0C4 7F04A594 46029202 */ mul.s $f8, $f18, $f2 +/* 07F0C8 7F04A598 46080180 */ add.s $f6, $f0, $f8 +/* 07F0CC 7F04A59C 10000005 */ b .L7F04A5B4 +/* 07F0D0 7F04A5A0 E6060038 */ swc1 $f6, 0x38($s0) +/* 07F0D4 7F04A5A4 C60A0048 */ lwc1 $f10, 0x48($s0) +.L7F04A5A8: +/* 07F0D8 7F04A5A8 E618003C */ swc1 $f24, 0x3c($s0) +/* 07F0DC 7F04A5AC E6140040 */ swc1 $f20, 0x40($s0) +/* 07F0E0 7F04A5B0 E60A0038 */ swc1 $f10, 0x38($s0) +.L7F04A5B4: +/* 07F0E4 7F04A5B4 C6000054 */ lwc1 $f0, 0x54($s0) +.L7F04A5B8: +/* 07F0E8 7F04A5B8 4600A03C */ c.lt.s $f20, $f0 +/* 07F0EC 7F04A5BC 00000000 */ nop +/* 07F0F0 7F04A5C0 45020017 */ bc1fl .L7F04A620 +/* 07F0F4 7F04A5C4 C6020070 */ lwc1 $f2, 0x70($s0) +/* 07F0F8 7F04A5C8 C4520000 */ lwc1 $f18, ($v0) +/* 07F0FC 7F04A5CC C6040050 */ lwc1 $f4, 0x50($s0) +/* 07F100 7F04A5D0 46120202 */ mul.s $f8, $f0, $f18 +/* 07F104 7F04A5D4 46082180 */ add.s $f6, $f4, $f8 +/* 07F108 7F04A5D8 E6060050 */ swc1 $f6, 0x50($s0) +/* 07F10C 7F04A5DC C6020050 */ lwc1 $f2, 0x50($s0) +/* 07F110 7F04A5E0 4618103C */ c.lt.s $f2, $f24 +/* 07F114 7F04A5E4 00000000 */ nop +/* 07F118 7F04A5E8 45020009 */ bc1fl .L7F04A610 +/* 07F11C 7F04A5EC C606005C */ lwc1 $f6, 0x5c($s0) +/* 07F120 7F04A5F0 C6000058 */ lwc1 $f0, 0x58($s0) +/* 07F124 7F04A5F4 C60A005C */ lwc1 $f10, 0x5c($s0) +/* 07F128 7F04A5F8 46005481 */ sub.s $f18, $f10, $f0 +/* 07F12C 7F04A5FC 46029102 */ mul.s $f4, $f18, $f2 +/* 07F130 7F04A600 46040200 */ add.s $f8, $f0, $f4 +/* 07F134 7F04A604 10000005 */ b .L7F04A61C +/* 07F138 7F04A608 E608004C */ swc1 $f8, 0x4c($s0) +/* 07F13C 7F04A60C C606005C */ lwc1 $f6, 0x5c($s0) +.L7F04A610: +/* 07F140 7F04A610 E6180050 */ swc1 $f24, 0x50($s0) +/* 07F144 7F04A614 E6140054 */ swc1 $f20, 0x54($s0) +/* 07F148 7F04A618 E606004C */ swc1 $f6, 0x4c($s0) +.L7F04A61C: +/* 07F14C 7F04A61C C6020070 */ lwc1 $f2, 0x70($s0) +.L7F04A620: +/* 07F150 7F04A620 4602A03C */ c.lt.s $f20, $f2 +/* 07F154 7F04A624 00000000 */ nop +/* 07F158 7F04A628 4502003F */ bc1fl .L7F04A728 +/* 07F15C 7F04A62C 8FAA00A0 */ lw $t2, 0xa0($sp) +/* 07F160 7F04A630 C4520000 */ lwc1 $f18, ($v0) +/* 07F164 7F04A634 C60A006C */ lwc1 $f10, 0x6c($s0) +/* 07F168 7F04A638 46121102 */ mul.s $f4, $f2, $f18 +/* 07F16C 7F04A63C 46045200 */ add.s $f8, $f10, $f4 +/* 07F170 7F04A640 E608006C */ swc1 $f8, 0x6c($s0) +/* 07F174 7F04A644 C600006C */ lwc1 $f0, 0x6c($s0) +/* 07F178 7F04A648 4618003C */ c.lt.s $f0, $f24 +/* 07F17C 7F04A64C 00000000 */ nop +/* 07F180 7F04A650 4502002B */ bc1fl .L7F04A700 +/* 07F184 7F04A654 920F0062 */ lbu $t7, 0x62($s0) +/* 07F188 7F04A658 92020061 */ lbu $v0, 0x61($s0) +/* 07F18C 7F04A65C 920F0062 */ lbu $t7, 0x62($s0) +/* 07F190 7F04A660 92030064 */ lbu $v1, 0x64($s0) +/* 07F194 7F04A664 920A0065 */ lbu $t2, 0x65($s0) +/* 07F198 7F04A668 01E2C023 */ subu $t8, $t7, $v0 +/* 07F19C 7F04A66C 44983000 */ mtc1 $t8, $f6 +/* 07F1A0 7F04A670 01435823 */ subu $t3, $t2, $v1 +/* 07F1A4 7F04A674 448B4000 */ mtc1 $t3, $f8 +/* 07F1A8 7F04A678 468034A0 */ cvt.s.w $f18, $f6 +/* 07F1AC 7F04A67C 920F0068 */ lbu $t7, 0x68($s0) +/* 07F1B0 7F04A680 92040067 */ lbu $a0, 0x67($s0) +/* 07F1B4 7F04A684 920A006B */ lbu $t2, 0x6b($s0) +/* 07F1B8 7F04A688 9205006A */ lbu $a1, 0x6a($s0) +/* 07F1BC 7F04A68C 468041A0 */ cvt.s.w $f6, $f8 +/* 07F1C0 7F04A690 46009282 */ mul.s $f10, $f18, $f0 +/* 07F1C4 7F04A694 01E4C023 */ subu $t8, $t7, $a0 +/* 07F1C8 7F04A698 01455823 */ subu $t3, $t2, $a1 +/* 07F1CC 7F04A69C 46003482 */ mul.s $f18, $f6, $f0 +/* 07F1D0 7F04A6A0 4600510D */ trunc.w.s $f4, $f10 +/* 07F1D4 7F04A6A4 4600928D */ trunc.w.s $f10, $f18 +/* 07F1D8 7F04A6A8 44082000 */ mfc1 $t0, $f4 +/* 07F1DC 7F04A6AC 44982000 */ mtc1 $t8, $f4 +/* 07F1E0 7F04A6B0 440D5000 */ mfc1 $t5, $f10 +/* 07F1E4 7F04A6B4 46802220 */ cvt.s.w $f8, $f4 +/* 07F1E8 7F04A6B8 448B5000 */ mtc1 $t3, $f10 +/* 07F1EC 7F04A6BC 00484821 */ addu $t1, $v0, $t0 +/* 07F1F0 7F04A6C0 006D7021 */ addu $t6, $v1, $t5 +/* 07F1F4 7F04A6C4 A2090060 */ sb $t1, 0x60($s0) +/* 07F1F8 7F04A6C8 46805120 */ cvt.s.w $f4, $f10 +/* 07F1FC 7F04A6CC 46004182 */ mul.s $f6, $f8, $f0 +/* 07F200 7F04A6D0 A20E0063 */ sb $t6, 0x63($s0) +/* 07F204 7F04A6D4 46002202 */ mul.s $f8, $f4, $f0 +/* 07F208 7F04A6D8 4600348D */ trunc.w.s $f18, $f6 +/* 07F20C 7F04A6DC 4600418D */ trunc.w.s $f6, $f8 +/* 07F210 7F04A6E0 44089000 */ mfc1 $t0, $f18 +/* 07F214 7F04A6E4 440D3000 */ mfc1 $t5, $f6 +/* 07F218 7F04A6E8 00884821 */ addu $t1, $a0, $t0 +/* 07F21C 7F04A6EC A2090066 */ sb $t1, 0x66($s0) +/* 07F220 7F04A6F0 00AD7021 */ addu $t6, $a1, $t5 +/* 07F224 7F04A6F4 1000000B */ b .L7F04A724 +/* 07F228 7F04A6F8 A20E0069 */ sb $t6, 0x69($s0) +/* 07F22C 7F04A6FC 920F0062 */ lbu $t7, 0x62($s0) +.L7F04A700: +/* 07F230 7F04A700 92180065 */ lbu $t8, 0x65($s0) +/* 07F234 7F04A704 92190068 */ lbu $t9, 0x68($s0) +/* 07F238 7F04A708 9208006B */ lbu $t0, 0x6b($s0) +/* 07F23C 7F04A70C E618006C */ swc1 $f24, 0x6c($s0) +/* 07F240 7F04A710 E6140070 */ swc1 $f20, 0x70($s0) +/* 07F244 7F04A714 A20F0060 */ sb $t7, 0x60($s0) +/* 07F248 7F04A718 A2180063 */ sb $t8, 0x63($s0) +/* 07F24C 7F04A71C A2190066 */ sb $t9, 0x66($s0) +/* 07F250 7F04A720 A2080069 */ sb $t0, 0x69($s0) +.L7F04A724: +/* 07F254 7F04A724 8FAA00A0 */ lw $t2, 0xa0($sp) +.L7F04A728: +/* 07F258 7F04A728 8FA300A4 */ lw $v1, 0xa4($sp) +/* 07F25C 7F04A72C 8FA900BC */ lw $t1, 0xbc($sp) +/* 07F260 7F04A730 AD520000 */ sw $s2, ($t2) +/* 07F264 7F04A734 3C0F8009 */ lui $t7, %hi(monitorimages) +/* 07F268 7F04A738 AD490004 */ sw $t1, 4($t2) +/* 07F26C 7F04A73C 8C6B0008 */ lw $t3, 8($v1) +/* 07F270 7F04A740 8D610000 */ lw $at, ($t3) +/* 07F274 7F04A744 AE410000 */ sw $at, ($s2) +/* 07F278 7F04A748 8D6D0004 */ lw $t5, 4($t3) +/* 07F27C 7F04A74C AE4D0004 */ sw $t5, 4($s2) +/* 07F280 7F04A750 8D610008 */ lw $at, 8($t3) +/* 07F284 7F04A754 AE410008 */ sw $at, 8($s2) +/* 07F288 7F04A758 8D6D000C */ lw $t5, 0xc($t3) +/* 07F28C 7F04A75C AE4D000C */ sw $t5, 0xc($s2) +/* 07F290 7F04A760 8C6E0008 */ lw $t6, 8($v1) +/* 07F294 7F04A764 8DC10010 */ lw $at, 0x10($t6) +/* 07F298 7F04A768 AE410010 */ sw $at, 0x10($s2) +/* 07F29C 7F04A76C 8DD80014 */ lw $t8, 0x14($t6) +/* 07F2A0 7F04A770 AE580014 */ sw $t8, 0x14($s2) +/* 07F2A4 7F04A774 8DC10018 */ lw $at, 0x18($t6) +/* 07F2A8 7F04A778 AE410018 */ sw $at, 0x18($s2) +/* 07F2AC 7F04A77C 8DD8001C */ lw $t8, 0x1c($t6) +/* 07F2B0 7F04A780 AE58001C */ sw $t8, 0x1c($s2) +/* 07F2B4 7F04A784 8C790008 */ lw $t9, 8($v1) +/* 07F2B8 7F04A788 8F210020 */ lw $at, 0x20($t9) +/* 07F2BC 7F04A78C AE410020 */ sw $at, 0x20($s2) +/* 07F2C0 7F04A790 8F290024 */ lw $t1, 0x24($t9) +/* 07F2C4 7F04A794 AE490024 */ sw $t1, 0x24($s2) +/* 07F2C8 7F04A798 8F210028 */ lw $at, 0x28($t9) +/* 07F2CC 7F04A79C AE410028 */ sw $at, 0x28($s2) +/* 07F2D0 7F04A7A0 8F29002C */ lw $t1, 0x2c($t9) +/* 07F2D4 7F04A7A4 AE49002C */ sw $t1, 0x2c($s2) +/* 07F2D8 7F04A7A8 8C6A0008 */ lw $t2, 8($v1) +/* 07F2DC 7F04A7AC 8D410030 */ lw $at, 0x30($t2) +/* 07F2E0 7F04A7B0 AE410030 */ sw $at, 0x30($s2) +/* 07F2E4 7F04A7B4 8D4B0034 */ lw $t3, 0x34($t2) +/* 07F2E8 7F04A7B8 AE4B0034 */ sw $t3, 0x34($s2) +/* 07F2EC 7F04A7BC 8D410038 */ lw $at, 0x38($t2) +/* 07F2F0 7F04A7C0 AE410038 */ sw $at, 0x38($s2) +/* 07F2F4 7F04A7C4 8D4B003C */ lw $t3, 0x3c($t2) +/* 07F2F8 7F04A7C8 AE4B003C */ sw $t3, 0x3c($s2) +/* 07F2FC 7F04A7CC 8E020008 */ lw $v0, 8($s0) +/* 07F300 7F04A7D0 2C410064 */ sltiu $at, $v0, 0x64 +/* 07F304 7F04A7D4 10200007 */ beqz $at, .L7F04A7F4 +/* 07F308 7F04A7D8 00408825 */ move $s1, $v0 +/* 07F30C 7F04A7DC 00026880 */ sll $t5, $v0, 2 +/* 07F310 7F04A7E0 8DEFD120 */ lw $t7, %lo(monitorimages)($t7) +/* 07F314 7F04A7E4 01A26823 */ subu $t5, $t5, $v0 +/* 07F318 7F04A7E8 000D6880 */ sll $t5, $t5, 2 +/* 07F31C 7F04A7EC 10000001 */ b .L7F04A7F4 +/* 07F320 7F04A7F0 01AF8821 */ addu $s1, $t5, $t7 +.L7F04A7F4: +/* 07F324 7F04A7F4 122000A9 */ beqz $s1, .L7F04AA9C +/* 07F328 7F04A7F8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07F32C 7F04A7FC 44810000 */ mtc1 $at, $f0 +/* 07F330 7F04A800 C6120010 */ lwc1 $f18, 0x10($s0) +/* 07F334 7F04A804 C60A0024 */ lwc1 $f10, 0x24($s0) +/* 07F338 7F04A808 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07F33C 7F04A80C 46009582 */ mul.s $f22, $f18, $f0 +/* 07F340 7F04A810 460CA032 */ c.eq.s $f20, $f12 +/* 07F344 7F04A814 46005602 */ mul.s $f24, $f10, $f0 +/* 07F348 7F04A818 4600B386 */ mov.s $f14, $f22 +/* 07F34C 7F04A81C 45010015 */ bc1t .L7F04A874 +/* 07F350 7F04A820 4600C406 */ mov.s $f16, $f24 +/* 07F354 7F04A824 E7AE0054 */ swc1 $f14, 0x54($sp) +/* 07F358 7F04A828 0FC15FA8 */ jal cosf +/* 07F35C 7F04A82C E7B00050 */ swc1 $f16, 0x50($sp) +/* 07F360 7F04A830 3C018005 */ lui $at, %hi(D_80052CB0) +/* 07F364 7F04A834 C43A2CB0 */ lwc1 $f26, %lo(D_80052CB0)($at) +/* 07F368 7F04A838 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07F36C 7F04A83C 461A0502 */ mul.s $f20, $f0, $f26 +/* 07F370 7F04A840 0FC15FAB */ jal sinf +/* 07F374 7F04A844 00000000 */ nop +/* 07F378 7F04A848 4614B582 */ mul.s $f22, $f22, $f20 +/* 07F37C 7F04A84C C7AE0054 */ lwc1 $f14, 0x54($sp) +/* 07F380 7F04A850 C7B00050 */ lwc1 $f16, 0x50($sp) +/* 07F384 7F04A854 461A0082 */ mul.s $f2, $f0, $f26 +/* 07F388 7F04A858 00000000 */ nop +/* 07F38C 7F04A85C 4602C602 */ mul.s $f24, $f24, $f2 +/* 07F390 7F04A860 00000000 */ nop +/* 07F394 7F04A864 46027382 */ mul.s $f14, $f14, $f2 +/* 07F398 7F04A868 00000000 */ nop +/* 07F39C 7F04A86C 46148402 */ mul.s $f16, $f16, $f20 +/* 07F3A0 7F04A870 00000000 */ nop +.L7F04A874: +/* 07F3A4 7F04A874 922E0004 */ lbu $t6, 4($s1) +/* 07F3A8 7F04A878 3C014200 */ li $at, 0x42000000 # 32.000000 +/* 07F3AC 7F04A87C 44810000 */ mtc1 $at, $f0 +/* 07F3B0 7F04A880 448E4000 */ mtc1 $t6, $f8 +/* 07F3B4 7F04A884 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F3B8 7F04A888 05C10004 */ bgez $t6, .L7F04A89C +/* 07F3BC 7F04A88C 468041A0 */ cvt.s.w $f6, $f8 +/* 07F3C0 7F04A890 44819000 */ mtc1 $at, $f18 +/* 07F3C4 7F04A894 00000000 */ nop +/* 07F3C8 7F04A898 46123180 */ add.s $f6, $f6, $f18 +.L7F04A89C: +/* 07F3CC 7F04A89C C60A0038 */ lwc1 $f10, 0x38($s0) +/* 07F3D0 7F04A8A0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F3D4 7F04A8A4 46165100 */ add.s $f4, $f10, $f22 +/* 07F3D8 7F04A8A8 46043202 */ mul.s $f8, $f6, $f4 +/* 07F3DC 7F04A8AC 00000000 */ nop +/* 07F3E0 7F04A8B0 46004482 */ mul.s $f18, $f8, $f0 +/* 07F3E4 7F04A8B4 4600928D */ trunc.w.s $f10, $f18 +/* 07F3E8 7F04A8B8 44085000 */ mfc1 $t0, $f10 +/* 07F3EC 7F04A8BC 00000000 */ nop +/* 07F3F0 7F04A8C0 A6480008 */ sh $t0, 8($s2) +/* 07F3F4 7F04A8C4 92390005 */ lbu $t9, 5($s1) +/* 07F3F8 7F04A8C8 44993000 */ mtc1 $t9, $f6 +/* 07F3FC 7F04A8CC 07210004 */ bgez $t9, .L7F04A8E0 +/* 07F400 7F04A8D0 46803120 */ cvt.s.w $f4, $f6 +/* 07F404 7F04A8D4 44814000 */ mtc1 $at, $f8 +/* 07F408 7F04A8D8 00000000 */ nop +/* 07F40C 7F04A8DC 46082100 */ add.s $f4, $f4, $f8 +.L7F04A8E0: +/* 07F410 7F04A8E0 C612004C */ lwc1 $f18, 0x4c($s0) +/* 07F414 7F04A8E4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F418 7F04A8E8 46189280 */ add.s $f10, $f18, $f24 +/* 07F41C 7F04A8EC 460A2182 */ mul.s $f6, $f4, $f10 +/* 07F420 7F04A8F0 00000000 */ nop +/* 07F424 7F04A8F4 46003202 */ mul.s $f8, $f6, $f0 +/* 07F428 7F04A8F8 4600448D */ trunc.w.s $f18, $f8 +/* 07F42C 7F04A8FC 440C9000 */ mfc1 $t4, $f18 +/* 07F430 7F04A900 00000000 */ nop +/* 07F434 7F04A904 A64C000A */ sh $t4, 0xa($s2) +/* 07F438 7F04A908 922A0004 */ lbu $t2, 4($s1) +/* 07F43C 7F04A90C 448A2000 */ mtc1 $t2, $f4 +/* 07F440 7F04A910 05410004 */ bgez $t2, .L7F04A924 +/* 07F444 7F04A914 468022A0 */ cvt.s.w $f10, $f4 +/* 07F448 7F04A918 44813000 */ mtc1 $at, $f6 +/* 07F44C 7F04A91C 00000000 */ nop +/* 07F450 7F04A920 46065280 */ add.s $f10, $f10, $f6 +.L7F04A924: +/* 07F454 7F04A924 C6080038 */ lwc1 $f8, 0x38($s0) +/* 07F458 7F04A928 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F45C 7F04A92C 460E4481 */ sub.s $f18, $f8, $f14 +/* 07F460 7F04A930 46125102 */ mul.s $f4, $f10, $f18 +/* 07F464 7F04A934 00000000 */ nop +/* 07F468 7F04A938 46002182 */ mul.s $f6, $f4, $f0 +/* 07F46C 7F04A93C 4600320D */ trunc.w.s $f8, $f6 +/* 07F470 7F04A940 440D4000 */ mfc1 $t5, $f8 +/* 07F474 7F04A944 00000000 */ nop +/* 07F478 7F04A948 A64D0018 */ sh $t5, 0x18($s2) +/* 07F47C 7F04A94C 922F0005 */ lbu $t7, 5($s1) +/* 07F480 7F04A950 448F5000 */ mtc1 $t7, $f10 +/* 07F484 7F04A954 05E10004 */ bgez $t7, .L7F04A968 +/* 07F488 7F04A958 468054A0 */ cvt.s.w $f18, $f10 +/* 07F48C 7F04A95C 44812000 */ mtc1 $at, $f4 +/* 07F490 7F04A960 00000000 */ nop +/* 07F494 7F04A964 46049480 */ add.s $f18, $f18, $f4 +.L7F04A968: +/* 07F498 7F04A968 C606004C */ lwc1 $f6, 0x4c($s0) +/* 07F49C 7F04A96C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F4A0 7F04A970 46103200 */ add.s $f8, $f6, $f16 +/* 07F4A4 7F04A974 46089282 */ mul.s $f10, $f18, $f8 +/* 07F4A8 7F04A978 00000000 */ nop +/* 07F4AC 7F04A97C 46005102 */ mul.s $f4, $f10, $f0 +/* 07F4B0 7F04A980 4600218D */ trunc.w.s $f6, $f4 +/* 07F4B4 7F04A984 44183000 */ mfc1 $t8, $f6 +/* 07F4B8 7F04A988 00000000 */ nop +/* 07F4BC 7F04A98C A658001A */ sh $t8, 0x1a($s2) +/* 07F4C0 7F04A990 92280004 */ lbu $t0, 4($s1) +/* 07F4C4 7F04A994 44889000 */ mtc1 $t0, $f18 +/* 07F4C8 7F04A998 05010004 */ bgez $t0, .L7F04A9AC +/* 07F4CC 7F04A99C 46809220 */ cvt.s.w $f8, $f18 +/* 07F4D0 7F04A9A0 44815000 */ mtc1 $at, $f10 +/* 07F4D4 7F04A9A4 00000000 */ nop +/* 07F4D8 7F04A9A8 460A4200 */ add.s $f8, $f8, $f10 +.L7F04A9AC: +/* 07F4DC 7F04A9AC C6040038 */ lwc1 $f4, 0x38($s0) +/* 07F4E0 7F04A9B0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F4E4 7F04A9B4 46162181 */ sub.s $f6, $f4, $f22 +/* 07F4E8 7F04A9B8 46064482 */ mul.s $f18, $f8, $f6 +/* 07F4EC 7F04A9BC 00000000 */ nop +/* 07F4F0 7F04A9C0 46009282 */ mul.s $f10, $f18, $f0 +/* 07F4F4 7F04A9C4 4600510D */ trunc.w.s $f4, $f10 +/* 07F4F8 7F04A9C8 44092000 */ mfc1 $t1, $f4 +/* 07F4FC 7F04A9CC 00000000 */ nop +/* 07F500 7F04A9D0 A6490028 */ sh $t1, 0x28($s2) +/* 07F504 7F04A9D4 922C0005 */ lbu $t4, 5($s1) +/* 07F508 7F04A9D8 448C4000 */ mtc1 $t4, $f8 +/* 07F50C 7F04A9DC 05810004 */ bgez $t4, .L7F04A9F0 +/* 07F510 7F04A9E0 468041A0 */ cvt.s.w $f6, $f8 +/* 07F514 7F04A9E4 44819000 */ mtc1 $at, $f18 +/* 07F518 7F04A9E8 00000000 */ nop +/* 07F51C 7F04A9EC 46123180 */ add.s $f6, $f6, $f18 +.L7F04A9F0: +/* 07F520 7F04A9F0 C60A004C */ lwc1 $f10, 0x4c($s0) +/* 07F524 7F04A9F4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F528 7F04A9F8 46185101 */ sub.s $f4, $f10, $f24 +/* 07F52C 7F04A9FC 46043202 */ mul.s $f8, $f6, $f4 +/* 07F530 7F04AA00 00000000 */ nop +/* 07F534 7F04AA04 46004482 */ mul.s $f18, $f8, $f0 +/* 07F538 7F04AA08 4600928D */ trunc.w.s $f10, $f18 +/* 07F53C 7F04AA0C 440B5000 */ mfc1 $t3, $f10 +/* 07F540 7F04AA10 00000000 */ nop +/* 07F544 7F04AA14 A64B002A */ sh $t3, 0x2a($s2) +/* 07F548 7F04AA18 922D0004 */ lbu $t5, 4($s1) +/* 07F54C 7F04AA1C 448D3000 */ mtc1 $t5, $f6 +/* 07F550 7F04AA20 05A10004 */ bgez $t5, .L7F04AA34 +/* 07F554 7F04AA24 46803120 */ cvt.s.w $f4, $f6 +/* 07F558 7F04AA28 44814000 */ mtc1 $at, $f8 +/* 07F55C 7F04AA2C 00000000 */ nop +/* 07F560 7F04AA30 46082100 */ add.s $f4, $f4, $f8 +.L7F04AA34: +/* 07F564 7F04AA34 C6120038 */ lwc1 $f18, 0x38($s0) +/* 07F568 7F04AA38 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F56C 7F04AA3C 460E9280 */ add.s $f10, $f18, $f14 +/* 07F570 7F04AA40 460A2182 */ mul.s $f6, $f4, $f10 +/* 07F574 7F04AA44 00000000 */ nop +/* 07F578 7F04AA48 46003202 */ mul.s $f8, $f6, $f0 +/* 07F57C 7F04AA4C 4600448D */ trunc.w.s $f18, $f8 +/* 07F580 7F04AA50 440E9000 */ mfc1 $t6, $f18 +/* 07F584 7F04AA54 00000000 */ nop +/* 07F588 7F04AA58 A64E0038 */ sh $t6, 0x38($s2) +/* 07F58C 7F04AA5C 92380005 */ lbu $t8, 5($s1) +/* 07F590 7F04AA60 44982000 */ mtc1 $t8, $f4 +/* 07F594 7F04AA64 07010004 */ bgez $t8, .L7F04AA78 +/* 07F598 7F04AA68 468022A0 */ cvt.s.w $f10, $f4 +/* 07F59C 7F04AA6C 44813000 */ mtc1 $at, $f6 +/* 07F5A0 7F04AA70 00000000 */ nop +/* 07F5A4 7F04AA74 46065280 */ add.s $f10, $f10, $f6 +.L7F04AA78: +/* 07F5A8 7F04AA78 C608004C */ lwc1 $f8, 0x4c($s0) +/* 07F5AC 7F04AA7C 46104481 */ sub.s $f18, $f8, $f16 +/* 07F5B0 7F04AA80 46125102 */ mul.s $f4, $f10, $f18 +/* 07F5B4 7F04AA84 00000000 */ nop +/* 07F5B8 7F04AA88 46002182 */ mul.s $f6, $f4, $f0 +/* 07F5BC 7F04AA8C 4600320D */ trunc.w.s $f8, $f6 +/* 07F5C0 7F04AA90 44194000 */ mfc1 $t9, $f8 +/* 07F5C4 7F04AA94 00000000 */ nop +/* 07F5C8 7F04AA98 A659003A */ sh $t9, 0x3a($s2) +.L7F04AA9C: +/* 07F5CC 7F04AA9C 92020060 */ lbu $v0, 0x60($s0) +/* 07F5D0 7F04AAA0 240C0002 */ li $t4, 2 +/* 07F5D4 7F04AAA4 3C0DB700 */ lui $t5, 0xb700 +/* 07F5D8 7F04AAA8 A242003C */ sb $v0, 0x3c($s2) +/* 07F5DC 7F04AAAC A242002C */ sb $v0, 0x2c($s2) +/* 07F5E0 7F04AAB0 A242001C */ sb $v0, 0x1c($s2) +/* 07F5E4 7F04AAB4 A242000C */ sb $v0, 0xc($s2) +/* 07F5E8 7F04AAB8 92020063 */ lbu $v0, 0x63($s0) +/* 07F5EC 7F04AABC 240F2000 */ li $t7, 8192 +/* 07F5F0 7F04AAC0 27A400BC */ addiu $a0, $sp, 0xbc +/* 07F5F4 7F04AAC4 A242003D */ sb $v0, 0x3d($s2) +/* 07F5F8 7F04AAC8 A242002D */ sb $v0, 0x2d($s2) +/* 07F5FC 7F04AACC A242001D */ sb $v0, 0x1d($s2) +/* 07F600 7F04AAD0 A242000D */ sb $v0, 0xd($s2) +/* 07F604 7F04AAD4 92030066 */ lbu $v1, 0x66($s0) +/* 07F608 7F04AAD8 A243003E */ sb $v1, 0x3e($s2) +/* 07F60C 7F04AADC A243002E */ sb $v1, 0x2e($s2) +/* 07F610 7F04AAE0 A243001E */ sb $v1, 0x1e($s2) +/* 07F614 7F04AAE4 A243000E */ sb $v1, 0xe($s2) +/* 07F618 7F04AAE8 92020069 */ lbu $v0, 0x69($s0) +/* 07F61C 7F04AAEC A242003F */ sb $v0, 0x3f($s2) +/* 07F620 7F04AAF0 A242002F */ sb $v0, 0x2f($s2) +/* 07F624 7F04AAF4 A242001F */ sb $v0, 0x1f($s2) +/* 07F628 7F04AAF8 A242000F */ sb $v0, 0xf($s2) +/* 07F62C 7F04AAFC 92090069 */ lbu $t1, 0x69($s0) +/* 07F630 7F04AB00 292100FF */ slti $at, $t1, 0xff +/* 07F634 7F04AB04 50200003 */ beql $at, $zero, .L7F04AB14 +/* 07F638 7F04AB08 8FAA00BC */ lw $t2, 0xbc($sp) +/* 07F63C 7F04AB0C AFAC00C4 */ sw $t4, 0xc4($sp) +/* 07F640 7F04AB10 8FAA00BC */ lw $t2, 0xbc($sp) +.L7F04AB14: +/* 07F644 7F04AB14 240E0002 */ li $t6, 2 +/* 07F648 7F04AB18 02202825 */ move $a1, $s1 +/* 07F64C 7F04AB1C 254B0008 */ addiu $t3, $t2, 8 +/* 07F650 7F04AB20 AFAB00BC */ sw $t3, 0xbc($sp) +/* 07F654 7F04AB24 AD4F0004 */ sw $t7, 4($t2) +/* 07F658 7F04AB28 AD4D0000 */ sw $t5, ($t2) +/* 07F65C 7F04AB2C AFAE0010 */ sw $t6, 0x10($sp) +/* 07F660 7F04AB30 8FA700C0 */ lw $a3, 0xc0($sp) +/* 07F664 7F04AB34 0FC1DB5A */ jal likely_generate_DL_for_image_declaration +/* 07F668 7F04AB38 8FA600C4 */ lw $a2, 0xc4($sp) +/* 07F66C 7F04AB3C 8FB000BC */ lw $s0, 0xbc($sp) +/* 07F670 7F04AB40 3C190102 */ lui $t9, (0x01020040 >> 16) # lui $t9, 0x102 +/* 07F674 7F04AB44 37390040 */ ori $t9, (0x01020040 & 0xFFFF) # ori $t9, $t9, 0x40 +/* 07F678 7F04AB48 26080008 */ addiu $t0, $s0, 8 +/* 07F67C 7F04AB4C AFA800BC */ sw $t0, 0xbc($sp) +/* 07F680 7F04AB50 AE190000 */ sw $t9, ($s0) +/* 07F684 7F04AB54 8FA900B0 */ lw $t1, 0xb0($sp) +/* 07F688 7F04AB58 0C003A2C */ jal osVirtualToPhysical +/* 07F68C 7F04AB5C 8D24000C */ lw $a0, 0xc($t1) +/* 07F690 7F04AB60 AE020004 */ sw $v0, 4($s0) +/* 07F694 7F04AB64 8FB100BC */ lw $s1, 0xbc($sp) +/* 07F698 7F04AB68 3C0BBC00 */ lui $t3, (0xBC001006 >> 16) # lui $t3, 0xbc00 +/* 07F69C 7F04AB6C 356B1006 */ ori $t3, (0xBC001006 & 0xFFFF) # ori $t3, $t3, 0x1006 +/* 07F6A0 7F04AB70 262A0008 */ addiu $t2, $s1, 8 +/* 07F6A4 7F04AB74 AFAA00BC */ sw $t2, 0xbc($sp) +/* 07F6A8 7F04AB78 02402025 */ move $a0, $s2 +/* 07F6AC 7F04AB7C 0C003A2C */ jal osVirtualToPhysical +/* 07F6B0 7F04AB80 AE2B0000 */ sw $t3, ($s1) +/* 07F6B4 7F04AB84 AE220004 */ sw $v0, 4($s1) +/* 07F6B8 7F04AB88 8FAD00BC */ lw $t5, 0xbc($sp) +/* 07F6BC 7F04AB8C 3C0E0430 */ lui $t6, (0x04300040 >> 16) # lui $t6, 0x430 +/* 07F6C0 7F04AB90 35CE0040 */ ori $t6, (0x04300040 & 0xFFFF) # ori $t6, $t6, 0x40 +/* 07F6C4 7F04AB94 25AF0008 */ addiu $t7, $t5, 8 +/* 07F6C8 7F04AB98 AFAF00BC */ sw $t7, 0xbc($sp) +/* 07F6CC 7F04AB9C 3C180400 */ lui $t8, 0x400 +/* 07F6D0 7F04ABA0 ADB80004 */ sw $t8, 4($t5) +/* 07F6D4 7F04ABA4 ADAE0000 */ sw $t6, ($t5) +/* 07F6D8 7F04ABA8 8FA800BC */ lw $t0, 0xbc($sp) +/* 07F6DC 7F04ABAC 3C09B100 */ lui $t1, (0xB1000032 >> 16) # lui $t1, 0xb100 +/* 07F6E0 7F04ABB0 35290032 */ ori $t1, (0xB1000032 & 0xFFFF) # ori $t1, $t1, 0x32 +/* 07F6E4 7F04ABB4 25190008 */ addiu $t9, $t0, 8 +/* 07F6E8 7F04ABB8 AFB900BC */ sw $t9, 0xbc($sp) +/* 07F6EC 7F04ABBC 240C2010 */ li $t4, 8208 +/* 07F6F0 7F04ABC0 AD0C0004 */ sw $t4, 4($t0) +/* 07F6F4 7F04ABC4 AD090000 */ sw $t1, ($t0) +/* 07F6F8 7F04ABC8 8FAA00BC */ lw $t2, 0xbc($sp) +/* 07F6FC 7F04ABCC 3C0DB800 */ lui $t5, 0xb800 +/* 07F700 7F04ABD0 3C0F0601 */ lui $t7, 0x601 +/* 07F704 7F04ABD4 254B0008 */ addiu $t3, $t2, 8 +/* 07F708 7F04ABD8 AFAB00BC */ sw $t3, 0xbc($sp) +/* 07F70C 7F04ABDC AD400004 */ sw $zero, 4($t2) +/* 07F710 7F04ABE0 AD4D0000 */ sw $t5, ($t2) +/* 07F714 7F04ABE4 8FA600A8 */ lw $a2, 0xa8($sp) +/* 07F718 7F04ABE8 ACCF0000 */ sw $t7, ($a2) +/* 07F71C 7F04ABEC 8FAE00BC */ lw $t6, 0xbc($sp) +/* 07F720 7F04ABF0 ACCE0004 */ sw $t6, 4($a2) +.L7F04ABF4: +/* 07F724 7F04ABF4 8FBF004C */ lw $ra, 0x4c($sp) +.L7F04ABF8: +/* 07F728 7F04ABF8 8FA200BC */ lw $v0, 0xbc($sp) +/* 07F72C 7F04ABFC D7B40020 */ ldc1 $f20, 0x20($sp) +/* 07F730 7F04AC00 D7B60028 */ ldc1 $f22, 0x28($sp) +/* 07F734 7F04AC04 D7B80030 */ ldc1 $f24, 0x30($sp) +/* 07F738 7F04AC08 D7BA0038 */ ldc1 $f26, 0x38($sp) +/* 07F73C 7F04AC0C 8FB00040 */ lw $s0, 0x40($sp) +/* 07F740 7F04AC10 8FB10044 */ lw $s1, 0x44($sp) +/* 07F744 7F04AC14 8FB20048 */ lw $s2, 0x48($sp) +/* 07F748 7F04AC18 03E00008 */ jr $ra +/* 07F74C 7F04AC1C 27BD00B0 */ addiu $sp, $sp, 0xb0 +) +#endif +#ifdef VERSION_JP +GLOBAL_ASM( +.late_rodata +glabel D_80052C68 +.word 0x40c90fdb /*6.2831855*/ +/*D:80052C6C*/ +glabel jpt_80052C6C +.word command00_reset_scroll_shift +.word command01_horizontal_scroll +.word command02_vertical_scroll +.word command03_horizontal_pos +.word command04_vertical_pos +.word command05_zoomx +.word command06_zoomy +.word command07_use_image_from_global_monitor_table +.word command08_halt_processing_for_time +.word command09_jump +.word command0A_jump_conditional +.word command0B_restart +.word command0C_break +.word command0D_colour_transition +.word command0E_set_rotation +.word command0F_rotate + +glabel D_80052CAC +.word 0x3fc90fdb /*1.5707964*/ +glabel D_80052CB0 +.word 0x3fb50481 /*1.4141999*/ +glabel D_80052CB4 +.word 0x3f59999a /*0.85000002*/ +glabel D_80052CB8 +.word 0x3e19999a /*0.15000001*/ +glabel D_80052CBC +.word 0x3e19999a /*0.15000001*/ +glabel D_80052CC0 +.word 0x3f666666 /*0.89999998*/ +.text +glabel process_monitor_animation_microcode +/* 07EA78 7F049F48 27BDFF50 */ addiu $sp, $sp, -0xb0 +/* 07EA7C 7F049F4C AFB10044 */ sw $s1, 0x44($sp) +/* 07EA80 7F049F50 AFB00040 */ sw $s0, 0x40($sp) +/* 07EA84 7F049F54 00C08025 */ move $s0, $a2 +/* 07EA88 7F049F58 00A08825 */ move $s1, $a1 +/* 07EA8C 7F049F5C AFBF004C */ sw $ra, 0x4c($sp) +/* 07EA90 7F049F60 AFB20048 */ sw $s2, 0x48($sp) +/* 07EA94 7F049F64 F7BA0038 */ sdc1 $f26, 0x38($sp) +/* 07EA98 7F049F68 F7B80030 */ sdc1 $f24, 0x30($sp) +/* 07EA9C 7F049F6C F7B60028 */ sdc1 $f22, 0x28($sp) +/* 07EAA0 7F049F70 F7B40020 */ sdc1 $f20, 0x20($sp) +/* 07EAA4 7F049F74 AFA400B0 */ sw $a0, 0xb0($sp) +/* 07EAA8 7F049F78 10A0031E */ beqz $a1, .L7F04ABF4 +/* 07EAAC 7F049F7C AFA700BC */ sw $a3, 0xbc($sp) +/* 07EAB0 7F049F80 94AE0000 */ lhu $t6, ($a1) +/* 07EAB4 7F049F84 24010018 */ li $at, 24 +/* 07EAB8 7F049F88 31CF00FF */ andi $t7, $t6, 0xff +/* 07EABC 7F049F8C 55E1031A */ bnel $t7, $at, .L7F04ABF8 +/* 07EAC0 7F049F90 8FBF004C */ lw $ra, 0x4c($sp) +/* 07EAC4 7F049F94 0FC2F5B1 */ jal sub_GAME_7F0BD6C4 +/* 07EAC8 7F049F98 24040004 */ li $a0, 4 +/* 07EACC 7F049F9C 8FB800BC */ lw $t8, 0xbc($sp) +/* 07EAD0 7F049FA0 00409025 */ move $s2, $v0 +/* 07EAD4 7F049FA4 8FA400B0 */ lw $a0, 0xb0($sp) +/* 07EAD8 7F049FA8 27190008 */ addiu $t9, $t8, 8 +/* 07EADC 7F049FAC AFB900BC */ sw $t9, 0xbc($sp) +/* 07EAE0 7F049FB0 AFB800A8 */ sw $t8, 0xa8($sp) +/* 07EAE4 7F049FB4 8E280004 */ lw $t0, 4($s1) +/* 07EAE8 7F049FB8 02202825 */ move $a1, $s1 +/* 07EAEC 7F049FBC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 07EAF0 7F049FC0 AFA800A4 */ sw $t0, 0xa4($sp) +/* 07EAF4 7F049FC4 3C018005 */ lui $at, %hi(D_80052C68) +/* 07EAF8 7F049FC8 C43A2C68 */ lwc1 $f26, %lo(D_80052C68)($at) +/* 07EAFC 7F049FCC 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 07EB00 7F049FD0 4481C000 */ mtc1 $at, $f24 +/* 07EB04 7F049FD4 3C013A80 */ li $at, 0x3A800000 # 0.000977 +/* 07EB08 7F049FD8 4481B000 */ mtc1 $at, $f22 +/* 07EB0C 7F049FDC 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EB10 7F049FE0 44811000 */ mtc1 $at, $f2 +/* 07EB14 7F049FE4 4480A000 */ mtc1 $zero, $f20 +/* 07EB18 7F049FE8 AFA200A0 */ sw $v0, 0xa0($sp) +/* 07EB1C 7F049FEC 00008825 */ move $s1, $zero +/* 07EB20 7F049FF0 96020004 */ lhu $v0, 4($s0) +.L7F049FF4: +/* 07EB24 7F049FF4 8E090000 */ lw $t1, ($s0) +/* 07EB28 7F049FF8 00025080 */ sll $t2, $v0, 2 +/* 07EB2C 7F049FFC 012A1821 */ addu $v1, $t1, $t2 +/* 07EB30 7F04A000 8C6B0000 */ lw $t3, ($v1) +/* 07EB34 7F04A004 2D610010 */ sltiu $at, $t3, 0x10 +/* 07EB38 7F04A008 10200117 */ beqz $at, .L7F04A468 +/* 07EB3C 7F04A00C 000B5880 */ sll $t3, $t3, 2 +/* 07EB40 7F04A010 3C018005 */ lui $at, %hi(jpt_80052C6C) +/* 07EB44 7F04A014 002B0821 */ addu $at, $at, $t3 +/* 07EB48 7F04A018 8C2B2C6C */ lw $t3, %lo(jpt_80052C6C)($at) +/* 07EB4C 7F04A01C 01600008 */ jr $t3 +/* 07EB50 7F04A020 00000000 */ nop +command00_reset_scroll_shift: +/* 07EB54 7F04A024 244C0001 */ addiu $t4, $v0, 1 +/* 07EB58 7F04A028 E6140040 */ swc1 $f20, 0x40($s0) +/* 07EB5C 7F04A02C E6140054 */ swc1 $f20, 0x54($s0) +/* 07EB60 7F04A030 1000010D */ b .L7F04A468 +/* 07EB64 7F04A034 A60C0004 */ sh $t4, 4($s0) +command01_horizontal_scroll: +/* 07EB68 7F04A038 E614003C */ swc1 $f20, 0x3c($s0) +/* 07EB6C 7F04A03C 8C6D0008 */ lw $t5, 8($v1) +/* 07EB70 7F04A040 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EB74 7F04A044 448D2000 */ mtc1 $t5, $f4 +/* 07EB78 7F04A048 05A10004 */ bgez $t5, .L7F04A05C +/* 07EB7C 7F04A04C 468021A0 */ cvt.s.w $f6, $f4 +/* 07EB80 7F04A050 44814000 */ mtc1 $at, $f8 +/* 07EB84 7F04A054 00000000 */ nop +/* 07EB88 7F04A058 46083180 */ add.s $f6, $f6, $f8 +.L7F04A05C: +/* 07EB8C 7F04A05C 4606C283 */ div.s $f10, $f24, $f6 +/* 07EB90 7F04A060 C6000038 */ lwc1 $f0, 0x38($s0) +/* 07EB94 7F04A064 244F0003 */ addiu $t7, $v0, 3 +/* 07EB98 7F04A068 E6000044 */ swc1 $f0, 0x44($s0) +/* 07EB9C 7F04A06C E60A0040 */ swc1 $f10, 0x40($s0) +/* 07EBA0 7F04A070 8C6E0004 */ lw $t6, 4($v1) +/* 07EBA4 7F04A074 A60F0004 */ sh $t7, 4($s0) +/* 07EBA8 7F04A078 448E9000 */ mtc1 $t6, $f18 +/* 07EBAC 7F04A07C 00000000 */ nop +/* 07EBB0 7F04A080 46809120 */ cvt.s.w $f4, $f18 +/* 07EBB4 7F04A084 46162202 */ mul.s $f8, $f4, $f22 +/* 07EBB8 7F04A088 46080180 */ add.s $f6, $f0, $f8 +/* 07EBBC 7F04A08C 100000F6 */ b .L7F04A468 +/* 07EBC0 7F04A090 E6060048 */ swc1 $f6, 0x48($s0) +command02_vertical_scroll: +/* 07EBC4 7F04A094 E6140050 */ swc1 $f20, 0x50($s0) +/* 07EBC8 7F04A098 8C780008 */ lw $t8, 8($v1) +/* 07EBCC 7F04A09C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EBD0 7F04A0A0 44985000 */ mtc1 $t8, $f10 +/* 07EBD4 7F04A0A4 07010004 */ bgez $t8, .L7F04A0B8 +/* 07EBD8 7F04A0A8 468054A0 */ cvt.s.w $f18, $f10 +/* 07EBDC 7F04A0AC 44812000 */ mtc1 $at, $f4 +/* 07EBE0 7F04A0B0 00000000 */ nop +/* 07EBE4 7F04A0B4 46049480 */ add.s $f18, $f18, $f4 +.L7F04A0B8: +/* 07EBE8 7F04A0B8 4612C203 */ div.s $f8, $f24, $f18 +/* 07EBEC 7F04A0BC C600004C */ lwc1 $f0, 0x4c($s0) +/* 07EBF0 7F04A0C0 24480003 */ addiu $t0, $v0, 3 +/* 07EBF4 7F04A0C4 E6000058 */ swc1 $f0, 0x58($s0) +/* 07EBF8 7F04A0C8 E6080054 */ swc1 $f8, 0x54($s0) +/* 07EBFC 7F04A0CC 8C790004 */ lw $t9, 4($v1) +/* 07EC00 7F04A0D0 A6080004 */ sh $t0, 4($s0) +/* 07EC04 7F04A0D4 44993000 */ mtc1 $t9, $f6 +/* 07EC08 7F04A0D8 00000000 */ nop +/* 07EC0C 7F04A0DC 468032A0 */ cvt.s.w $f10, $f6 +/* 07EC10 7F04A0E0 46165102 */ mul.s $f4, $f10, $f22 +/* 07EC14 7F04A0E4 46040480 */ add.s $f18, $f0, $f4 +/* 07EC18 7F04A0E8 100000DF */ b .L7F04A468 +/* 07EC1C 7F04A0EC E612005C */ swc1 $f18, 0x5c($s0) +command03_horizontal_pos: +/* 07EC20 7F04A0F0 E614003C */ swc1 $f20, 0x3c($s0) +/* 07EC24 7F04A0F4 8C690008 */ lw $t1, 8($v1) +/* 07EC28 7F04A0F8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EC2C 7F04A0FC 44894000 */ mtc1 $t1, $f8 +/* 07EC30 7F04A100 05210004 */ bgez $t1, .L7F04A114 +/* 07EC34 7F04A104 468041A0 */ cvt.s.w $f6, $f8 +/* 07EC38 7F04A108 44815000 */ mtc1 $at, $f10 +/* 07EC3C 7F04A10C 00000000 */ nop +/* 07EC40 7F04A110 460A3180 */ add.s $f6, $f6, $f10 +.L7F04A114: +/* 07EC44 7F04A114 4606C103 */ div.s $f4, $f24, $f6 +/* 07EC48 7F04A118 C6120038 */ lwc1 $f18, 0x38($s0) +/* 07EC4C 7F04A11C 244B0003 */ addiu $t3, $v0, 3 +/* 07EC50 7F04A120 E6120044 */ swc1 $f18, 0x44($s0) +/* 07EC54 7F04A124 E6040040 */ swc1 $f4, 0x40($s0) +/* 07EC58 7F04A128 8C6A0004 */ lw $t2, 4($v1) +/* 07EC5C 7F04A12C A60B0004 */ sh $t3, 4($s0) +/* 07EC60 7F04A130 448A4000 */ mtc1 $t2, $f8 +/* 07EC64 7F04A134 00000000 */ nop +/* 07EC68 7F04A138 468042A0 */ cvt.s.w $f10, $f8 +/* 07EC6C 7F04A13C 46165182 */ mul.s $f6, $f10, $f22 +/* 07EC70 7F04A140 100000C9 */ b .L7F04A468 +/* 07EC74 7F04A144 E6060048 */ swc1 $f6, 0x48($s0) +command04_vertical_pos: +/* 07EC78 7F04A148 E6140050 */ swc1 $f20, 0x50($s0) +/* 07EC7C 7F04A14C 8C6C0008 */ lw $t4, 8($v1) +/* 07EC80 7F04A150 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EC84 7F04A154 448C2000 */ mtc1 $t4, $f4 +/* 07EC88 7F04A158 05810004 */ bgez $t4, .L7F04A16C +/* 07EC8C 7F04A15C 468024A0 */ cvt.s.w $f18, $f4 +/* 07EC90 7F04A160 44814000 */ mtc1 $at, $f8 +/* 07EC94 7F04A164 00000000 */ nop +/* 07EC98 7F04A168 46089480 */ add.s $f18, $f18, $f8 +.L7F04A16C: +/* 07EC9C 7F04A16C 4612C283 */ div.s $f10, $f24, $f18 +/* 07ECA0 7F04A170 C606004C */ lwc1 $f6, 0x4c($s0) +/* 07ECA4 7F04A174 244E0003 */ addiu $t6, $v0, 3 +/* 07ECA8 7F04A178 E6060058 */ swc1 $f6, 0x58($s0) +/* 07ECAC 7F04A17C E60A0054 */ swc1 $f10, 0x54($s0) +/* 07ECB0 7F04A180 8C6D0004 */ lw $t5, 4($v1) +/* 07ECB4 7F04A184 A60E0004 */ sh $t6, 4($s0) +/* 07ECB8 7F04A188 448D2000 */ mtc1 $t5, $f4 +/* 07ECBC 7F04A18C 00000000 */ nop +/* 07ECC0 7F04A190 46802220 */ cvt.s.w $f8, $f4 +/* 07ECC4 7F04A194 46164482 */ mul.s $f18, $f8, $f22 +/* 07ECC8 7F04A198 100000B3 */ b .L7F04A468 +/* 07ECCC 7F04A19C E612005C */ swc1 $f18, 0x5c($s0) +command05_zoomx: +/* 07ECD0 7F04A1A0 E6140014 */ swc1 $f20, 0x14($s0) +/* 07ECD4 7F04A1A4 8C6F0008 */ lw $t7, 8($v1) +/* 07ECD8 7F04A1A8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07ECDC 7F04A1AC 448F5000 */ mtc1 $t7, $f10 +/* 07ECE0 7F04A1B0 05E10004 */ bgez $t7, .L7F04A1C4 +/* 07ECE4 7F04A1B4 468051A0 */ cvt.s.w $f6, $f10 +/* 07ECE8 7F04A1B8 44812000 */ mtc1 $at, $f4 +/* 07ECEC 7F04A1BC 00000000 */ nop +/* 07ECF0 7F04A1C0 46043180 */ add.s $f6, $f6, $f4 +.L7F04A1C4: +/* 07ECF4 7F04A1C4 4606C203 */ div.s $f8, $f24, $f6 +/* 07ECF8 7F04A1C8 C6120010 */ lwc1 $f18, 0x10($s0) +/* 07ECFC 7F04A1CC 24590003 */ addiu $t9, $v0, 3 +/* 07ED00 7F04A1D0 E612001C */ swc1 $f18, 0x1c($s0) +/* 07ED04 7F04A1D4 E6080018 */ swc1 $f8, 0x18($s0) +/* 07ED08 7F04A1D8 8C780004 */ lw $t8, 4($v1) +/* 07ED0C 7F04A1DC A6190004 */ sh $t9, 4($s0) +/* 07ED10 7F04A1E0 44985000 */ mtc1 $t8, $f10 +/* 07ED14 7F04A1E4 00000000 */ nop +/* 07ED18 7F04A1E8 46805120 */ cvt.s.w $f4, $f10 +/* 07ED1C 7F04A1EC 46162182 */ mul.s $f6, $f4, $f22 +/* 07ED20 7F04A1F0 1000009D */ b .L7F04A468 +/* 07ED24 7F04A1F4 E6060020 */ swc1 $f6, 0x20($s0) +command06_zoomy: +/* 07ED28 7F04A1F8 E6140028 */ swc1 $f20, 0x28($s0) +/* 07ED2C 7F04A1FC 8C680008 */ lw $t0, 8($v1) +/* 07ED30 7F04A200 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07ED34 7F04A204 44884000 */ mtc1 $t0, $f8 +/* 07ED38 7F04A208 05010004 */ bgez $t0, .L7F04A21C +/* 07ED3C 7F04A20C 468044A0 */ cvt.s.w $f18, $f8 +/* 07ED40 7F04A210 44815000 */ mtc1 $at, $f10 +/* 07ED44 7F04A214 00000000 */ nop +/* 07ED48 7F04A218 460A9480 */ add.s $f18, $f18, $f10 +.L7F04A21C: +/* 07ED4C 7F04A21C 4612C103 */ div.s $f4, $f24, $f18 +/* 07ED50 7F04A220 C6060024 */ lwc1 $f6, 0x24($s0) +/* 07ED54 7F04A224 244A0003 */ addiu $t2, $v0, 3 +/* 07ED58 7F04A228 E6060030 */ swc1 $f6, 0x30($s0) +/* 07ED5C 7F04A22C E604002C */ swc1 $f4, 0x2c($s0) +/* 07ED60 7F04A230 8C690004 */ lw $t1, 4($v1) +/* 07ED64 7F04A234 A60A0004 */ sh $t2, 4($s0) +/* 07ED68 7F04A238 44894000 */ mtc1 $t1, $f8 +/* 07ED6C 7F04A23C 00000000 */ nop +/* 07ED70 7F04A240 468042A0 */ cvt.s.w $f10, $f8 +/* 07ED74 7F04A244 46165482 */ mul.s $f18, $f10, $f22 +/* 07ED78 7F04A248 10000087 */ b .L7F04A468 +/* 07ED7C 7F04A24C E6120034 */ swc1 $f18, 0x34($s0) +command07_use_image_from_global_monitor_table: +/* 07ED80 7F04A250 02002025 */ move $a0, $s0 +/* 07ED84 7F04A254 0FC127D0 */ jal save_img_index_to_obj_ani_slot +/* 07ED88 7F04A258 8C650004 */ lw $a1, 4($v1) +/* 07ED8C 7F04A25C 960B0004 */ lhu $t3, 4($s0) +/* 07ED90 7F04A260 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07ED94 7F04A264 44811000 */ mtc1 $at, $f2 +/* 07ED98 7F04A268 256C0002 */ addiu $t4, $t3, 2 +/* 07ED9C 7F04A26C 1000007E */ b .L7F04A468 +/* 07EDA0 7F04A270 A60C0004 */ sh $t4, 4($s0) +command08_halt_processing_for_time: +/* 07EDA4 7F04A274 86020006 */ lh $v0, 6($s0) +/* 07EDA8 7F04A278 3C0D8005 */ lui $t5, %hi(clock_timer) +/* 07EDAC 7F04A27C 0442000E */ bltzl $v0, .L7F04A2B8 +/* 07EDB0 7F04A280 8C680004 */ lw $t0, 4($v1) +/* 07EDB4 7F04A284 8DAD8374 */ lw $t5, %lo(clock_timer)($t5) +/* 07EDB8 7F04A288 004D7023 */ subu $t6, $v0, $t5 +/* 07EDBC 7F04A28C A60E0006 */ sh $t6, 6($s0) +/* 07EDC0 7F04A290 860F0006 */ lh $t7, 6($s0) +/* 07EDC4 7F04A294 05E20004 */ bltzl $t7, .L7F04A2A8 +/* 07EDC8 7F04A298 96180004 */ lhu $t8, 4($s0) +/* 07EDCC 7F04A29C 10000072 */ b .L7F04A468 +/* 07EDD0 7F04A2A0 24110001 */ li $s1, 1 +/* 07EDD4 7F04A2A4 96180004 */ lhu $t8, 4($s0) +.L7F04A2A8: +/* 07EDD8 7F04A2A8 27190002 */ addiu $t9, $t8, 2 +/* 07EDDC 7F04A2AC 1000006E */ b .L7F04A468 +/* 07EDE0 7F04A2B0 A6190004 */ sh $t9, 4($s0) +/* 07EDE4 7F04A2B4 8C680004 */ lw $t0, 4($v1) +.L7F04A2B8: +/* 07EDE8 7F04A2B8 24110001 */ li $s1, 1 +/* 07EDEC 7F04A2BC 1000006A */ b .L7F04A468 +/* 07EDF0 7F04A2C0 A6080006 */ sh $t0, 6($s0) +command09_jump: +/* 07EDF4 7F04A2C4 02002025 */ move $a0, $s0 +/* 07EDF8 7F04A2C8 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 07EDFC 7F04A2CC 8C650004 */ lw $a1, 4($v1) +/* 07EE00 7F04A2D0 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EE04 7F04A2D4 44811000 */ mtc1 $at, $f2 +/* 07EE08 7F04A2D8 10000063 */ b .L7F04A468 +/* 07EE0C 7F04A2DC 00000000 */ nop +command0A_jump_conditional: +/* 07EE10 7F04A2E0 0C002914 */ jal get_random_value +/* 07EE14 7F04A2E4 AFA30094 */ sw $v1, 0x94($sp) +/* 07EE18 7F04A2E8 8FA30094 */ lw $v1, 0x94($sp) +/* 07EE1C 7F04A2EC 00024C02 */ srl $t1, $v0, 0x10 +/* 07EE20 7F04A2F0 02002025 */ move $a0, $s0 +/* 07EE24 7F04A2F4 8C6A0008 */ lw $t2, 8($v1) +/* 07EE28 7F04A2F8 012A082B */ sltu $at, $t1, $t2 +/* 07EE2C 7F04A2FC 50200008 */ beql $at, $zero, .L7F04A320 +/* 07EE30 7F04A300 960B0004 */ lhu $t3, 4($s0) +/* 07EE34 7F04A304 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 07EE38 7F04A308 8C650004 */ lw $a1, 4($v1) +/* 07EE3C 7F04A30C 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EE40 7F04A310 44811000 */ mtc1 $at, $f2 +/* 07EE44 7F04A314 10000054 */ b .L7F04A468 +/* 07EE48 7F04A318 00000000 */ nop +/* 07EE4C 7F04A31C 960B0004 */ lhu $t3, 4($s0) +.L7F04A320: +/* 07EE50 7F04A320 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 07EE54 7F04A324 44811000 */ mtc1 $at, $f2 +/* 07EE58 7F04A328 256C0003 */ addiu $t4, $t3, 3 +/* 07EE5C 7F04A32C A60C0004 */ sh $t4, 4($s0) +/* 07EE60 7F04A330 1000004D */ b .L7F04A468 +/* 07EE64 7F04A334 00000000 */ nop +command0B_restart: +/* 07EE68 7F04A338 1000004B */ b .L7F04A468 +/* 07EE6C 7F04A33C A6000004 */ sh $zero, 4($s0) +command0C_break: +/* 07EE70 7F04A340 10000049 */ b .L7F04A468 +/* 07EE74 7F04A344 24110001 */ li $s1, 1 +command0D_colour_transition: +/* 07EE78 7F04A348 E614006C */ swc1 $f20, 0x6c($s0) +/* 07EE7C 7F04A34C 8C6D0008 */ lw $t5, 8($v1) +/* 07EE80 7F04A350 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07EE84 7F04A354 448D2000 */ mtc1 $t5, $f4 +/* 07EE88 7F04A358 05A10004 */ bgez $t5, .L7F04A36C +/* 07EE8C 7F04A35C 468021A0 */ cvt.s.w $f6, $f4 +/* 07EE90 7F04A360 44814000 */ mtc1 $at, $f8 +/* 07EE94 7F04A364 00000000 */ nop +/* 07EE98 7F04A368 46083180 */ add.s $f6, $f6, $f8 +.L7F04A36C: +/* 07EE9C 7F04A36C 4606C283 */ div.s $f10, $f24, $f6 +/* 07EEA0 7F04A370 920E0060 */ lbu $t6, 0x60($s0) +/* 07EEA4 7F04A374 92080063 */ lbu $t0, 0x63($s0) +/* 07EEA8 7F04A378 920C0066 */ lbu $t4, 0x66($s0) +/* 07EEAC 7F04A37C A20E0061 */ sb $t6, 0x61($s0) +/* 07EEB0 7F04A380 92180069 */ lbu $t8, 0x69($s0) +/* 07EEB4 7F04A384 E60A0070 */ swc1 $f10, 0x70($s0) +/* 07EEB8 7F04A388 8C6F0004 */ lw $t7, 4($v1) +/* 07EEBC 7F04A38C A2080064 */ sb $t0, 0x64($s0) +/* 07EEC0 7F04A390 000FCE02 */ srl $t9, $t7, 0x18 +/* 07EEC4 7F04A394 A2190062 */ sb $t9, 0x62($s0) +/* 07EEC8 7F04A398 8C690004 */ lw $t1, 4($v1) +/* 07EECC 7F04A39C A20C0067 */ sb $t4, 0x67($s0) +/* 07EED0 7F04A3A0 00095C02 */ srl $t3, $t1, 0x10 +/* 07EED4 7F04A3A4 A20B0065 */ sb $t3, 0x65($s0) +/* 07EED8 7F04A3A8 8C6D0004 */ lw $t5, 4($v1) +/* 07EEDC 7F04A3AC A218006A */ sb $t8, 0x6a($s0) +/* 07EEE0 7F04A3B0 24490003 */ addiu $t1, $v0, 3 +/* 07EEE4 7F04A3B4 000D7A02 */ srl $t7, $t5, 8 +/* 07EEE8 7F04A3B8 A20F0068 */ sb $t7, 0x68($s0) +/* 07EEEC 7F04A3BC 8C680004 */ lw $t0, 4($v1) +/* 07EEF0 7F04A3C0 A6090004 */ sh $t1, 4($s0) +/* 07EEF4 7F04A3C4 10000028 */ b .L7F04A468 +/* 07EEF8 7F04A3C8 A208006B */ sb $t0, 0x6b($s0) +command0E_set_rotation: +/* 07EEFC 7F04A3CC 8C6A0004 */ lw $t2, 4($v1) +/* 07EF00 7F04A3D0 244B0002 */ addiu $t3, $v0, 2 +/* 07EF04 7F04A3D4 A60B0004 */ sh $t3, 4($s0) +/* 07EF08 7F04A3D8 448A9000 */ mtc1 $t2, $f18 +/* 07EF0C 7F04A3DC 00000000 */ nop +/* 07EF10 7F04A3E0 46809120 */ cvt.s.w $f4, $f18 +/* 07EF14 7F04A3E4 461A2202 */ mul.s $f8, $f4, $f26 +/* 07EF18 7F04A3E8 46024183 */ div.s $f6, $f8, $f2 +/* 07EF1C 7F04A3EC 1000001E */ b .L7F04A468 +/* 07EF20 7F04A3F0 E606000C */ swc1 $f6, 0xc($s0) +command0F_rotate: +/* 07EF24 7F04A3F4 8C6C0004 */ lw $t4, 4($v1) +/* 07EF28 7F04A3F8 3C018005 */ lui $at, %hi(jp_global_timer_delta) +/* 07EF2C 7F04A3FC C42A8378 */ lwc1 $f10, %lo(jp_global_timer_delta)($at) +/* 07EF30 7F04A400 448C9000 */ mtc1 $t4, $f18 +/* 07EF34 7F04A404 00000000 */ nop +/* 07EF38 7F04A408 46809120 */ cvt.s.w $f4, $f18 +/* 07EF3C 7F04A40C 46045202 */ mul.s $f8, $f10, $f4 +/* 07EF40 7F04A410 C60A000C */ lwc1 $f10, 0xc($s0) +/* 07EF44 7F04A414 461A4182 */ mul.s $f6, $f8, $f26 +/* 07EF48 7F04A418 46023483 */ div.s $f18, $f6, $f2 +/* 07EF4C 7F04A41C 46125100 */ add.s $f4, $f10, $f18 +/* 07EF50 7F04A420 E604000C */ swc1 $f4, 0xc($s0) +/* 07EF54 7F04A424 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07EF58 7F04A428 460CD03E */ c.le.s $f26, $f12 +/* 07EF5C 7F04A42C 00000000 */ nop +/* 07EF60 7F04A430 45020005 */ bc1fl .L7F04A448 +/* 07EF64 7F04A434 4614603C */ c.lt.s $f12, $f20 +/* 07EF68 7F04A438 461A6201 */ sub.s $f8, $f12, $f26 +/* 07EF6C 7F04A43C E608000C */ swc1 $f8, 0xc($s0) +/* 07EF70 7F04A440 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07EF74 7F04A444 4614603C */ c.lt.s $f12, $f20 +.L7F04A448: +/* 07EF78 7F04A448 00000000 */ nop +/* 07EF7C 7F04A44C 45020004 */ bc1fl .L7F04A460 +/* 07EF80 7F04A450 960D0004 */ lhu $t5, 4($s0) +/* 07EF84 7F04A454 461A6180 */ add.s $f6, $f12, $f26 +/* 07EF88 7F04A458 E606000C */ swc1 $f6, 0xc($s0) +/* 07EF8C 7F04A45C 960D0004 */ lhu $t5, 4($s0) +.L7F04A460: +/* 07EF90 7F04A460 25AE0002 */ addiu $t6, $t5, 2 +/* 07EF94 7F04A464 A60E0004 */ sh $t6, 4($s0) +def_7F04A01C: +.L7F04A468: +/* 07EF98 7F04A468 5220FEE2 */ beql $s1, $zero, .L7F049FF4 +/* 07EF9C 7F04A46C 96020004 */ lhu $v0, 4($s0) +/* 07EFA0 7F04A470 C6000018 */ lwc1 $f0, 0x18($s0) +/* 07EFA4 7F04A474 4600A03C */ c.lt.s $f20, $f0 +/* 07EFA8 7F04A478 00000000 */ nop +/* 07EFAC 7F04A47C 45000017 */ bc1f .L7F04A4DC +/* 07EFB0 7F04A480 3C028005 */ lui $v0, %hi(jp_global_timer_delta) +/* 07EFB4 7F04A484 24428378 */ addiu $v0, %lo(jp_global_timer_delta) # addiu $v0, $v0, -0x7c88 +/* 07EFB8 7F04A488 C4520000 */ lwc1 $f18, ($v0) +/* 07EFBC 7F04A48C C60A0014 */ lwc1 $f10, 0x14($s0) +/* 07EFC0 7F04A490 46120102 */ mul.s $f4, $f0, $f18 +/* 07EFC4 7F04A494 46045200 */ add.s $f8, $f10, $f4 +/* 07EFC8 7F04A498 E6080014 */ swc1 $f8, 0x14($s0) +/* 07EFCC 7F04A49C C6020014 */ lwc1 $f2, 0x14($s0) +/* 07EFD0 7F04A4A0 4618103C */ c.lt.s $f2, $f24 +/* 07EFD4 7F04A4A4 00000000 */ nop +/* 07EFD8 7F04A4A8 45020009 */ bc1fl .L7F04A4D0 +/* 07EFDC 7F04A4AC C6080020 */ lwc1 $f8, 0x20($s0) +/* 07EFE0 7F04A4B0 C600001C */ lwc1 $f0, 0x1c($s0) +/* 07EFE4 7F04A4B4 C6060020 */ lwc1 $f6, 0x20($s0) +/* 07EFE8 7F04A4B8 46003481 */ sub.s $f18, $f6, $f0 +/* 07EFEC 7F04A4BC 46029282 */ mul.s $f10, $f18, $f2 +/* 07EFF0 7F04A4C0 460A0100 */ add.s $f4, $f0, $f10 +/* 07EFF4 7F04A4C4 10000005 */ b .L7F04A4DC +/* 07EFF8 7F04A4C8 E6040010 */ swc1 $f4, 0x10($s0) +/* 07EFFC 7F04A4CC C6080020 */ lwc1 $f8, 0x20($s0) +.L7F04A4D0: +/* 07F000 7F04A4D0 E6180014 */ swc1 $f24, 0x14($s0) +/* 07F004 7F04A4D4 E6140018 */ swc1 $f20, 0x18($s0) +/* 07F008 7F04A4D8 E6080010 */ swc1 $f8, 0x10($s0) +.L7F04A4DC: +/* 07F00C 7F04A4DC C600002C */ lwc1 $f0, 0x2c($s0) +/* 07F010 7F04A4E0 3C028005 */ lui $v0, %hi(jp_global_timer_delta) +/* 07F014 7F04A4E4 24428378 */ addiu $v0, %lo(jp_global_timer_delta) # addiu $v0, $v0, -0x7c88 +/* 07F018 7F04A4E8 4600A03C */ c.lt.s $f20, $f0 +/* 07F01C 7F04A4EC 00000000 */ nop +/* 07F020 7F04A4F0 45020017 */ bc1fl .L7F04A550 +/* 07F024 7F04A4F4 C6000040 */ lwc1 $f0, 0x40($s0) +/* 07F028 7F04A4F8 C4520000 */ lwc1 $f18, ($v0) +/* 07F02C 7F04A4FC C6060028 */ lwc1 $f6, 0x28($s0) +/* 07F030 7F04A500 46120282 */ mul.s $f10, $f0, $f18 +/* 07F034 7F04A504 460A3100 */ add.s $f4, $f6, $f10 +/* 07F038 7F04A508 E6040028 */ swc1 $f4, 0x28($s0) +/* 07F03C 7F04A50C C6020028 */ lwc1 $f2, 0x28($s0) +/* 07F040 7F04A510 4618103C */ c.lt.s $f2, $f24 +/* 07F044 7F04A514 00000000 */ nop +/* 07F048 7F04A518 45020009 */ bc1fl .L7F04A540 +/* 07F04C 7F04A51C C6040034 */ lwc1 $f4, 0x34($s0) +/* 07F050 7F04A520 C6000030 */ lwc1 $f0, 0x30($s0) +/* 07F054 7F04A524 C6080034 */ lwc1 $f8, 0x34($s0) +/* 07F058 7F04A528 46004481 */ sub.s $f18, $f8, $f0 +/* 07F05C 7F04A52C 46029182 */ mul.s $f6, $f18, $f2 +/* 07F060 7F04A530 46060280 */ add.s $f10, $f0, $f6 +/* 07F064 7F04A534 10000005 */ b .L7F04A54C +/* 07F068 7F04A538 E60A0024 */ swc1 $f10, 0x24($s0) +/* 07F06C 7F04A53C C6040034 */ lwc1 $f4, 0x34($s0) +.L7F04A540: +/* 07F070 7F04A540 E6180028 */ swc1 $f24, 0x28($s0) +/* 07F074 7F04A544 E614002C */ swc1 $f20, 0x2c($s0) +/* 07F078 7F04A548 E6040024 */ swc1 $f4, 0x24($s0) +.L7F04A54C: +/* 07F07C 7F04A54C C6000040 */ lwc1 $f0, 0x40($s0) +.L7F04A550: +/* 07F080 7F04A550 4600A03C */ c.lt.s $f20, $f0 +/* 07F084 7F04A554 00000000 */ nop +/* 07F088 7F04A558 45020017 */ bc1fl .L7F04A5B8 +/* 07F08C 7F04A55C C6000054 */ lwc1 $f0, 0x54($s0) +/* 07F090 7F04A560 C4520000 */ lwc1 $f18, ($v0) +/* 07F094 7F04A564 C608003C */ lwc1 $f8, 0x3c($s0) +/* 07F098 7F04A568 46120182 */ mul.s $f6, $f0, $f18 +/* 07F09C 7F04A56C 46064280 */ add.s $f10, $f8, $f6 +/* 07F0A0 7F04A570 E60A003C */ swc1 $f10, 0x3c($s0) +/* 07F0A4 7F04A574 C602003C */ lwc1 $f2, 0x3c($s0) +/* 07F0A8 7F04A578 4618103C */ c.lt.s $f2, $f24 +/* 07F0AC 7F04A57C 00000000 */ nop +/* 07F0B0 7F04A580 45020009 */ bc1fl .L7F04A5A8 +/* 07F0B4 7F04A584 C60A0048 */ lwc1 $f10, 0x48($s0) +/* 07F0B8 7F04A588 C6000044 */ lwc1 $f0, 0x44($s0) +/* 07F0BC 7F04A58C C6040048 */ lwc1 $f4, 0x48($s0) +/* 07F0C0 7F04A590 46002481 */ sub.s $f18, $f4, $f0 +/* 07F0C4 7F04A594 46029202 */ mul.s $f8, $f18, $f2 +/* 07F0C8 7F04A598 46080180 */ add.s $f6, $f0, $f8 +/* 07F0CC 7F04A59C 10000005 */ b .L7F04A5B4 +/* 07F0D0 7F04A5A0 E6060038 */ swc1 $f6, 0x38($s0) +/* 07F0D4 7F04A5A4 C60A0048 */ lwc1 $f10, 0x48($s0) +.L7F04A5A8: +/* 07F0D8 7F04A5A8 E618003C */ swc1 $f24, 0x3c($s0) +/* 07F0DC 7F04A5AC E6140040 */ swc1 $f20, 0x40($s0) +/* 07F0E0 7F04A5B0 E60A0038 */ swc1 $f10, 0x38($s0) +.L7F04A5B4: +/* 07F0E4 7F04A5B4 C6000054 */ lwc1 $f0, 0x54($s0) +.L7F04A5B8: +/* 07F0E8 7F04A5B8 4600A03C */ c.lt.s $f20, $f0 +/* 07F0EC 7F04A5BC 00000000 */ nop +/* 07F0F0 7F04A5C0 45020017 */ bc1fl .L7F04A620 +/* 07F0F4 7F04A5C4 C6020070 */ lwc1 $f2, 0x70($s0) +/* 07F0F8 7F04A5C8 C4520000 */ lwc1 $f18, ($v0) +/* 07F0FC 7F04A5CC C6040050 */ lwc1 $f4, 0x50($s0) +/* 07F100 7F04A5D0 46120202 */ mul.s $f8, $f0, $f18 +/* 07F104 7F04A5D4 46082180 */ add.s $f6, $f4, $f8 +/* 07F108 7F04A5D8 E6060050 */ swc1 $f6, 0x50($s0) +/* 07F10C 7F04A5DC C6020050 */ lwc1 $f2, 0x50($s0) +/* 07F110 7F04A5E0 4618103C */ c.lt.s $f2, $f24 +/* 07F114 7F04A5E4 00000000 */ nop +/* 07F118 7F04A5E8 45020009 */ bc1fl .L7F04A610 +/* 07F11C 7F04A5EC C606005C */ lwc1 $f6, 0x5c($s0) +/* 07F120 7F04A5F0 C6000058 */ lwc1 $f0, 0x58($s0) +/* 07F124 7F04A5F4 C60A005C */ lwc1 $f10, 0x5c($s0) +/* 07F128 7F04A5F8 46005481 */ sub.s $f18, $f10, $f0 +/* 07F12C 7F04A5FC 46029102 */ mul.s $f4, $f18, $f2 +/* 07F130 7F04A600 46040200 */ add.s $f8, $f0, $f4 +/* 07F134 7F04A604 10000005 */ b .L7F04A61C +/* 07F138 7F04A608 E608004C */ swc1 $f8, 0x4c($s0) +/* 07F13C 7F04A60C C606005C */ lwc1 $f6, 0x5c($s0) +.L7F04A610: +/* 07F140 7F04A610 E6180050 */ swc1 $f24, 0x50($s0) +/* 07F144 7F04A614 E6140054 */ swc1 $f20, 0x54($s0) +/* 07F148 7F04A618 E606004C */ swc1 $f6, 0x4c($s0) +.L7F04A61C: +/* 07F14C 7F04A61C C6020070 */ lwc1 $f2, 0x70($s0) +.L7F04A620: +/* 07F150 7F04A620 4602A03C */ c.lt.s $f20, $f2 +/* 07F154 7F04A624 00000000 */ nop +/* 07F158 7F04A628 4502003F */ bc1fl .L7F04A728 +/* 07F15C 7F04A62C 8FAA00A0 */ lw $t2, 0xa0($sp) +/* 07F160 7F04A630 C4520000 */ lwc1 $f18, ($v0) +/* 07F164 7F04A634 C60A006C */ lwc1 $f10, 0x6c($s0) +/* 07F168 7F04A638 46121102 */ mul.s $f4, $f2, $f18 +/* 07F16C 7F04A63C 46045200 */ add.s $f8, $f10, $f4 +/* 07F170 7F04A640 E608006C */ swc1 $f8, 0x6c($s0) +/* 07F174 7F04A644 C600006C */ lwc1 $f0, 0x6c($s0) +/* 07F178 7F04A648 4618003C */ c.lt.s $f0, $f24 +/* 07F17C 7F04A64C 00000000 */ nop +/* 07F180 7F04A650 4502002B */ bc1fl .L7F04A700 +/* 07F184 7F04A654 920F0062 */ lbu $t7, 0x62($s0) +/* 07F188 7F04A658 92020061 */ lbu $v0, 0x61($s0) +/* 07F18C 7F04A65C 920F0062 */ lbu $t7, 0x62($s0) +/* 07F190 7F04A660 92030064 */ lbu $v1, 0x64($s0) +/* 07F194 7F04A664 920A0065 */ lbu $t2, 0x65($s0) +/* 07F198 7F04A668 01E2C023 */ subu $t8, $t7, $v0 +/* 07F19C 7F04A66C 44983000 */ mtc1 $t8, $f6 +/* 07F1A0 7F04A670 01435823 */ subu $t3, $t2, $v1 +/* 07F1A4 7F04A674 448B4000 */ mtc1 $t3, $f8 +/* 07F1A8 7F04A678 468034A0 */ cvt.s.w $f18, $f6 +/* 07F1AC 7F04A67C 920F0068 */ lbu $t7, 0x68($s0) +/* 07F1B0 7F04A680 92040067 */ lbu $a0, 0x67($s0) +/* 07F1B4 7F04A684 920A006B */ lbu $t2, 0x6b($s0) +/* 07F1B8 7F04A688 9205006A */ lbu $a1, 0x6a($s0) +/* 07F1BC 7F04A68C 468041A0 */ cvt.s.w $f6, $f8 +/* 07F1C0 7F04A690 46009282 */ mul.s $f10, $f18, $f0 +/* 07F1C4 7F04A694 01E4C023 */ subu $t8, $t7, $a0 +/* 07F1C8 7F04A698 01455823 */ subu $t3, $t2, $a1 +/* 07F1CC 7F04A69C 46003482 */ mul.s $f18, $f6, $f0 +/* 07F1D0 7F04A6A0 4600510D */ trunc.w.s $f4, $f10 +/* 07F1D4 7F04A6A4 4600928D */ trunc.w.s $f10, $f18 +/* 07F1D8 7F04A6A8 44082000 */ mfc1 $t0, $f4 +/* 07F1DC 7F04A6AC 44982000 */ mtc1 $t8, $f4 +/* 07F1E0 7F04A6B0 440D5000 */ mfc1 $t5, $f10 +/* 07F1E4 7F04A6B4 46802220 */ cvt.s.w $f8, $f4 +/* 07F1E8 7F04A6B8 448B5000 */ mtc1 $t3, $f10 +/* 07F1EC 7F04A6BC 00484821 */ addu $t1, $v0, $t0 +/* 07F1F0 7F04A6C0 006D7021 */ addu $t6, $v1, $t5 +/* 07F1F4 7F04A6C4 A2090060 */ sb $t1, 0x60($s0) +/* 07F1F8 7F04A6C8 46805120 */ cvt.s.w $f4, $f10 +/* 07F1FC 7F04A6CC 46004182 */ mul.s $f6, $f8, $f0 +/* 07F200 7F04A6D0 A20E0063 */ sb $t6, 0x63($s0) +/* 07F204 7F04A6D4 46002202 */ mul.s $f8, $f4, $f0 +/* 07F208 7F04A6D8 4600348D */ trunc.w.s $f18, $f6 +/* 07F20C 7F04A6DC 4600418D */ trunc.w.s $f6, $f8 +/* 07F210 7F04A6E0 44089000 */ mfc1 $t0, $f18 +/* 07F214 7F04A6E4 440D3000 */ mfc1 $t5, $f6 +/* 07F218 7F04A6E8 00884821 */ addu $t1, $a0, $t0 +/* 07F21C 7F04A6EC A2090066 */ sb $t1, 0x66($s0) +/* 07F220 7F04A6F0 00AD7021 */ addu $t6, $a1, $t5 +/* 07F224 7F04A6F4 1000000B */ b .L7F04A724 +/* 07F228 7F04A6F8 A20E0069 */ sb $t6, 0x69($s0) +/* 07F22C 7F04A6FC 920F0062 */ lbu $t7, 0x62($s0) +.L7F04A700: +/* 07F230 7F04A700 92180065 */ lbu $t8, 0x65($s0) +/* 07F234 7F04A704 92190068 */ lbu $t9, 0x68($s0) +/* 07F238 7F04A708 9208006B */ lbu $t0, 0x6b($s0) +/* 07F23C 7F04A70C E618006C */ swc1 $f24, 0x6c($s0) +/* 07F240 7F04A710 E6140070 */ swc1 $f20, 0x70($s0) +/* 07F244 7F04A714 A20F0060 */ sb $t7, 0x60($s0) +/* 07F248 7F04A718 A2180063 */ sb $t8, 0x63($s0) +/* 07F24C 7F04A71C A2190066 */ sb $t9, 0x66($s0) +/* 07F250 7F04A720 A2080069 */ sb $t0, 0x69($s0) +.L7F04A724: +/* 07F254 7F04A724 8FAA00A0 */ lw $t2, 0xa0($sp) +.L7F04A728: +/* 07F258 7F04A728 8FA300A4 */ lw $v1, 0xa4($sp) +/* 07F25C 7F04A72C 8FA900BC */ lw $t1, 0xbc($sp) +/* 07F260 7F04A730 AD520000 */ sw $s2, ($t2) +/* 07F264 7F04A734 3C0F8009 */ lui $t7, %hi(monitorimages) +/* 07F268 7F04A738 AD490004 */ sw $t1, 4($t2) +/* 07F26C 7F04A73C 8C6B0008 */ lw $t3, 8($v1) +/* 07F270 7F04A740 8D610000 */ lw $at, ($t3) +/* 07F274 7F04A744 AE410000 */ sw $at, ($s2) +/* 07F278 7F04A748 8D6D0004 */ lw $t5, 4($t3) +/* 07F27C 7F04A74C AE4D0004 */ sw $t5, 4($s2) +/* 07F280 7F04A750 8D610008 */ lw $at, 8($t3) +/* 07F284 7F04A754 AE410008 */ sw $at, 8($s2) +/* 07F288 7F04A758 8D6D000C */ lw $t5, 0xc($t3) +/* 07F28C 7F04A75C AE4D000C */ sw $t5, 0xc($s2) +/* 07F290 7F04A760 8C6E0008 */ lw $t6, 8($v1) +/* 07F294 7F04A764 8DC10010 */ lw $at, 0x10($t6) +/* 07F298 7F04A768 AE410010 */ sw $at, 0x10($s2) +/* 07F29C 7F04A76C 8DD80014 */ lw $t8, 0x14($t6) +/* 07F2A0 7F04A770 AE580014 */ sw $t8, 0x14($s2) +/* 07F2A4 7F04A774 8DC10018 */ lw $at, 0x18($t6) +/* 07F2A8 7F04A778 AE410018 */ sw $at, 0x18($s2) +/* 07F2AC 7F04A77C 8DD8001C */ lw $t8, 0x1c($t6) +/* 07F2B0 7F04A780 AE58001C */ sw $t8, 0x1c($s2) +/* 07F2B4 7F04A784 8C790008 */ lw $t9, 8($v1) +/* 07F2B8 7F04A788 8F210020 */ lw $at, 0x20($t9) +/* 07F2BC 7F04A78C AE410020 */ sw $at, 0x20($s2) +/* 07F2C0 7F04A790 8F290024 */ lw $t1, 0x24($t9) +/* 07F2C4 7F04A794 AE490024 */ sw $t1, 0x24($s2) +/* 07F2C8 7F04A798 8F210028 */ lw $at, 0x28($t9) +/* 07F2CC 7F04A79C AE410028 */ sw $at, 0x28($s2) +/* 07F2D0 7F04A7A0 8F29002C */ lw $t1, 0x2c($t9) +/* 07F2D4 7F04A7A4 AE49002C */ sw $t1, 0x2c($s2) +/* 07F2D8 7F04A7A8 8C6A0008 */ lw $t2, 8($v1) +/* 07F2DC 7F04A7AC 8D410030 */ lw $at, 0x30($t2) +/* 07F2E0 7F04A7B0 AE410030 */ sw $at, 0x30($s2) +/* 07F2E4 7F04A7B4 8D4B0034 */ lw $t3, 0x34($t2) +/* 07F2E8 7F04A7B8 AE4B0034 */ sw $t3, 0x34($s2) +/* 07F2EC 7F04A7BC 8D410038 */ lw $at, 0x38($t2) +/* 07F2F0 7F04A7C0 AE410038 */ sw $at, 0x38($s2) +/* 07F2F4 7F04A7C4 8D4B003C */ lw $t3, 0x3c($t2) +/* 07F2F8 7F04A7C8 AE4B003C */ sw $t3, 0x3c($s2) +/* 07F2FC 7F04A7CC 8E020008 */ lw $v0, 8($s0) +/* 07F300 7F04A7D0 2C410064 */ sltiu $at, $v0, 0x64 +/* 07F304 7F04A7D4 10200007 */ beqz $at, .L7F04A7F4 +/* 07F308 7F04A7D8 00408825 */ move $s1, $v0 +/* 07F30C 7F04A7DC 00026880 */ sll $t5, $v0, 2 +/* 07F310 7F04A7E0 8DEFD120 */ lw $t7, %lo(monitorimages)($t7) +/* 07F314 7F04A7E4 01A26823 */ subu $t5, $t5, $v0 +/* 07F318 7F04A7E8 000D6880 */ sll $t5, $t5, 2 +/* 07F31C 7F04A7EC 10000001 */ b .L7F04A7F4 +/* 07F320 7F04A7F0 01AF8821 */ addu $s1, $t5, $t7 +.L7F04A7F4: +/* 07F324 7F04A7F4 122000A9 */ beqz $s1, .L7F04AA9C +/* 07F328 7F04A7F8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 07F32C 7F04A7FC 44810000 */ mtc1 $at, $f0 +/* 07F330 7F04A800 C6120010 */ lwc1 $f18, 0x10($s0) +/* 07F334 7F04A804 C60A0024 */ lwc1 $f10, 0x24($s0) +/* 07F338 7F04A808 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07F33C 7F04A80C 46009582 */ mul.s $f22, $f18, $f0 +/* 07F340 7F04A810 460CA032 */ c.eq.s $f20, $f12 +/* 07F344 7F04A814 46005602 */ mul.s $f24, $f10, $f0 +/* 07F348 7F04A818 4600B386 */ mov.s $f14, $f22 +/* 07F34C 7F04A81C 45010015 */ bc1t .L7F04A874 +/* 07F350 7F04A820 4600C406 */ mov.s $f16, $f24 +/* 07F354 7F04A824 E7AE0054 */ swc1 $f14, 0x54($sp) +/* 07F358 7F04A828 0FC15FA8 */ jal cosf +/* 07F35C 7F04A82C E7B00050 */ swc1 $f16, 0x50($sp) +/* 07F360 7F04A830 3C018005 */ lui $at, %hi(D_80052CB0) +/* 07F364 7F04A834 C43A2CB0 */ lwc1 $f26, %lo(D_80052CB0)($at) +/* 07F368 7F04A838 C60C000C */ lwc1 $f12, 0xc($s0) +/* 07F36C 7F04A83C 461A0502 */ mul.s $f20, $f0, $f26 +/* 07F370 7F04A840 0FC15FAB */ jal sinf +/* 07F374 7F04A844 00000000 */ nop +/* 07F378 7F04A848 4614B582 */ mul.s $f22, $f22, $f20 +/* 07F37C 7F04A84C C7AE0054 */ lwc1 $f14, 0x54($sp) +/* 07F380 7F04A850 C7B00050 */ lwc1 $f16, 0x50($sp) +/* 07F384 7F04A854 461A0082 */ mul.s $f2, $f0, $f26 +/* 07F388 7F04A858 00000000 */ nop +/* 07F38C 7F04A85C 4602C602 */ mul.s $f24, $f24, $f2 +/* 07F390 7F04A860 00000000 */ nop +/* 07F394 7F04A864 46027382 */ mul.s $f14, $f14, $f2 +/* 07F398 7F04A868 00000000 */ nop +/* 07F39C 7F04A86C 46148402 */ mul.s $f16, $f16, $f20 +/* 07F3A0 7F04A870 00000000 */ nop +.L7F04A874: +/* 07F3A4 7F04A874 922E0004 */ lbu $t6, 4($s1) +/* 07F3A8 7F04A878 3C014200 */ li $at, 0x42000000 # 32.000000 +/* 07F3AC 7F04A87C 44810000 */ mtc1 $at, $f0 +/* 07F3B0 7F04A880 448E4000 */ mtc1 $t6, $f8 +/* 07F3B4 7F04A884 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F3B8 7F04A888 05C10004 */ bgez $t6, .L7F04A89C +/* 07F3BC 7F04A88C 468041A0 */ cvt.s.w $f6, $f8 +/* 07F3C0 7F04A890 44819000 */ mtc1 $at, $f18 +/* 07F3C4 7F04A894 00000000 */ nop +/* 07F3C8 7F04A898 46123180 */ add.s $f6, $f6, $f18 +.L7F04A89C: +/* 07F3CC 7F04A89C C60A0038 */ lwc1 $f10, 0x38($s0) +/* 07F3D0 7F04A8A0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F3D4 7F04A8A4 46165100 */ add.s $f4, $f10, $f22 +/* 07F3D8 7F04A8A8 46043202 */ mul.s $f8, $f6, $f4 +/* 07F3DC 7F04A8AC 00000000 */ nop +/* 07F3E0 7F04A8B0 46004482 */ mul.s $f18, $f8, $f0 +/* 07F3E4 7F04A8B4 4600928D */ trunc.w.s $f10, $f18 +/* 07F3E8 7F04A8B8 44085000 */ mfc1 $t0, $f10 +/* 07F3EC 7F04A8BC 00000000 */ nop +/* 07F3F0 7F04A8C0 A6480008 */ sh $t0, 8($s2) +/* 07F3F4 7F04A8C4 92390005 */ lbu $t9, 5($s1) +/* 07F3F8 7F04A8C8 44993000 */ mtc1 $t9, $f6 +/* 07F3FC 7F04A8CC 07210004 */ bgez $t9, .L7F04A8E0 +/* 07F400 7F04A8D0 46803120 */ cvt.s.w $f4, $f6 +/* 07F404 7F04A8D4 44814000 */ mtc1 $at, $f8 +/* 07F408 7F04A8D8 00000000 */ nop +/* 07F40C 7F04A8DC 46082100 */ add.s $f4, $f4, $f8 +.L7F04A8E0: +/* 07F410 7F04A8E0 C612004C */ lwc1 $f18, 0x4c($s0) +/* 07F414 7F04A8E4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F418 7F04A8E8 46189280 */ add.s $f10, $f18, $f24 +/* 07F41C 7F04A8EC 460A2182 */ mul.s $f6, $f4, $f10 +/* 07F420 7F04A8F0 00000000 */ nop +/* 07F424 7F04A8F4 46003202 */ mul.s $f8, $f6, $f0 +/* 07F428 7F04A8F8 4600448D */ trunc.w.s $f18, $f8 +/* 07F42C 7F04A8FC 440C9000 */ mfc1 $t4, $f18 +/* 07F430 7F04A900 00000000 */ nop +/* 07F434 7F04A904 A64C000A */ sh $t4, 0xa($s2) +/* 07F438 7F04A908 922A0004 */ lbu $t2, 4($s1) +/* 07F43C 7F04A90C 448A2000 */ mtc1 $t2, $f4 +/* 07F440 7F04A910 05410004 */ bgez $t2, .L7F04A924 +/* 07F444 7F04A914 468022A0 */ cvt.s.w $f10, $f4 +/* 07F448 7F04A918 44813000 */ mtc1 $at, $f6 +/* 07F44C 7F04A91C 00000000 */ nop +/* 07F450 7F04A920 46065280 */ add.s $f10, $f10, $f6 +.L7F04A924: +/* 07F454 7F04A924 C6080038 */ lwc1 $f8, 0x38($s0) +/* 07F458 7F04A928 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F45C 7F04A92C 460E4481 */ sub.s $f18, $f8, $f14 +/* 07F460 7F04A930 46125102 */ mul.s $f4, $f10, $f18 +/* 07F464 7F04A934 00000000 */ nop +/* 07F468 7F04A938 46002182 */ mul.s $f6, $f4, $f0 +/* 07F46C 7F04A93C 4600320D */ trunc.w.s $f8, $f6 +/* 07F470 7F04A940 440D4000 */ mfc1 $t5, $f8 +/* 07F474 7F04A944 00000000 */ nop +/* 07F478 7F04A948 A64D0018 */ sh $t5, 0x18($s2) +/* 07F47C 7F04A94C 922F0005 */ lbu $t7, 5($s1) +/* 07F480 7F04A950 448F5000 */ mtc1 $t7, $f10 +/* 07F484 7F04A954 05E10004 */ bgez $t7, .L7F04A968 +/* 07F488 7F04A958 468054A0 */ cvt.s.w $f18, $f10 +/* 07F48C 7F04A95C 44812000 */ mtc1 $at, $f4 +/* 07F490 7F04A960 00000000 */ nop +/* 07F494 7F04A964 46049480 */ add.s $f18, $f18, $f4 +.L7F04A968: +/* 07F498 7F04A968 C606004C */ lwc1 $f6, 0x4c($s0) +/* 07F49C 7F04A96C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F4A0 7F04A970 46103200 */ add.s $f8, $f6, $f16 +/* 07F4A4 7F04A974 46089282 */ mul.s $f10, $f18, $f8 +/* 07F4A8 7F04A978 00000000 */ nop +/* 07F4AC 7F04A97C 46005102 */ mul.s $f4, $f10, $f0 +/* 07F4B0 7F04A980 4600218D */ trunc.w.s $f6, $f4 +/* 07F4B4 7F04A984 44183000 */ mfc1 $t8, $f6 +/* 07F4B8 7F04A988 00000000 */ nop +/* 07F4BC 7F04A98C A658001A */ sh $t8, 0x1a($s2) +/* 07F4C0 7F04A990 92280004 */ lbu $t0, 4($s1) +/* 07F4C4 7F04A994 44889000 */ mtc1 $t0, $f18 +/* 07F4C8 7F04A998 05010004 */ bgez $t0, .L7F04A9AC +/* 07F4CC 7F04A99C 46809220 */ cvt.s.w $f8, $f18 +/* 07F4D0 7F04A9A0 44815000 */ mtc1 $at, $f10 +/* 07F4D4 7F04A9A4 00000000 */ nop +/* 07F4D8 7F04A9A8 460A4200 */ add.s $f8, $f8, $f10 +.L7F04A9AC: +/* 07F4DC 7F04A9AC C6040038 */ lwc1 $f4, 0x38($s0) +/* 07F4E0 7F04A9B0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F4E4 7F04A9B4 46162181 */ sub.s $f6, $f4, $f22 +/* 07F4E8 7F04A9B8 46064482 */ mul.s $f18, $f8, $f6 +/* 07F4EC 7F04A9BC 00000000 */ nop +/* 07F4F0 7F04A9C0 46009282 */ mul.s $f10, $f18, $f0 +/* 07F4F4 7F04A9C4 4600510D */ trunc.w.s $f4, $f10 +/* 07F4F8 7F04A9C8 44092000 */ mfc1 $t1, $f4 +/* 07F4FC 7F04A9CC 00000000 */ nop +/* 07F500 7F04A9D0 A6490028 */ sh $t1, 0x28($s2) +/* 07F504 7F04A9D4 922C0005 */ lbu $t4, 5($s1) +/* 07F508 7F04A9D8 448C4000 */ mtc1 $t4, $f8 +/* 07F50C 7F04A9DC 05810004 */ bgez $t4, .L7F04A9F0 +/* 07F510 7F04A9E0 468041A0 */ cvt.s.w $f6, $f8 +/* 07F514 7F04A9E4 44819000 */ mtc1 $at, $f18 +/* 07F518 7F04A9E8 00000000 */ nop +/* 07F51C 7F04A9EC 46123180 */ add.s $f6, $f6, $f18 +.L7F04A9F0: +/* 07F520 7F04A9F0 C60A004C */ lwc1 $f10, 0x4c($s0) +/* 07F524 7F04A9F4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F528 7F04A9F8 46185101 */ sub.s $f4, $f10, $f24 +/* 07F52C 7F04A9FC 46043202 */ mul.s $f8, $f6, $f4 +/* 07F530 7F04AA00 00000000 */ nop +/* 07F534 7F04AA04 46004482 */ mul.s $f18, $f8, $f0 +/* 07F538 7F04AA08 4600928D */ trunc.w.s $f10, $f18 +/* 07F53C 7F04AA0C 440B5000 */ mfc1 $t3, $f10 +/* 07F540 7F04AA10 00000000 */ nop +/* 07F544 7F04AA14 A64B002A */ sh $t3, 0x2a($s2) +/* 07F548 7F04AA18 922D0004 */ lbu $t5, 4($s1) +/* 07F54C 7F04AA1C 448D3000 */ mtc1 $t5, $f6 +/* 07F550 7F04AA20 05A10004 */ bgez $t5, .L7F04AA34 +/* 07F554 7F04AA24 46803120 */ cvt.s.w $f4, $f6 +/* 07F558 7F04AA28 44814000 */ mtc1 $at, $f8 +/* 07F55C 7F04AA2C 00000000 */ nop +/* 07F560 7F04AA30 46082100 */ add.s $f4, $f4, $f8 +.L7F04AA34: +/* 07F564 7F04AA34 C6120038 */ lwc1 $f18, 0x38($s0) +/* 07F568 7F04AA38 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 07F56C 7F04AA3C 460E9280 */ add.s $f10, $f18, $f14 +/* 07F570 7F04AA40 460A2182 */ mul.s $f6, $f4, $f10 +/* 07F574 7F04AA44 00000000 */ nop +/* 07F578 7F04AA48 46003202 */ mul.s $f8, $f6, $f0 +/* 07F57C 7F04AA4C 4600448D */ trunc.w.s $f18, $f8 +/* 07F580 7F04AA50 440E9000 */ mfc1 $t6, $f18 +/* 07F584 7F04AA54 00000000 */ nop +/* 07F588 7F04AA58 A64E0038 */ sh $t6, 0x38($s2) +/* 07F58C 7F04AA5C 92380005 */ lbu $t8, 5($s1) +/* 07F590 7F04AA60 44982000 */ mtc1 $t8, $f4 +/* 07F594 7F04AA64 07010004 */ bgez $t8, .L7F04AA78 +/* 07F598 7F04AA68 468022A0 */ cvt.s.w $f10, $f4 +/* 07F59C 7F04AA6C 44813000 */ mtc1 $at, $f6 +/* 07F5A0 7F04AA70 00000000 */ nop +/* 07F5A4 7F04AA74 46065280 */ add.s $f10, $f10, $f6 +.L7F04AA78: +/* 07F5A8 7F04AA78 C608004C */ lwc1 $f8, 0x4c($s0) +/* 07F5AC 7F04AA7C 46104481 */ sub.s $f18, $f8, $f16 +/* 07F5B0 7F04AA80 46125102 */ mul.s $f4, $f10, $f18 +/* 07F5B4 7F04AA84 00000000 */ nop +/* 07F5B8 7F04AA88 46002182 */ mul.s $f6, $f4, $f0 +/* 07F5BC 7F04AA8C 4600320D */ trunc.w.s $f8, $f6 +/* 07F5C0 7F04AA90 44194000 */ mfc1 $t9, $f8 +/* 07F5C4 7F04AA94 00000000 */ nop +/* 07F5C8 7F04AA98 A659003A */ sh $t9, 0x3a($s2) +.L7F04AA9C: +/* 07F5CC 7F04AA9C 92020060 */ lbu $v0, 0x60($s0) +/* 07F5D0 7F04AAA0 240C0002 */ li $t4, 2 +/* 07F5D4 7F04AAA4 3C0DB700 */ lui $t5, 0xb700 +/* 07F5D8 7F04AAA8 A242003C */ sb $v0, 0x3c($s2) +/* 07F5DC 7F04AAAC A242002C */ sb $v0, 0x2c($s2) +/* 07F5E0 7F04AAB0 A242001C */ sb $v0, 0x1c($s2) +/* 07F5E4 7F04AAB4 A242000C */ sb $v0, 0xc($s2) +/* 07F5E8 7F04AAB8 92020063 */ lbu $v0, 0x63($s0) +/* 07F5EC 7F04AABC 240F2000 */ li $t7, 8192 +/* 07F5F0 7F04AAC0 27A400BC */ addiu $a0, $sp, 0xbc +/* 07F5F4 7F04AAC4 A242003D */ sb $v0, 0x3d($s2) +/* 07F5F8 7F04AAC8 A242002D */ sb $v0, 0x2d($s2) +/* 07F5FC 7F04AACC A242001D */ sb $v0, 0x1d($s2) +/* 07F600 7F04AAD0 A242000D */ sb $v0, 0xd($s2) +/* 07F604 7F04AAD4 92030066 */ lbu $v1, 0x66($s0) +/* 07F608 7F04AAD8 A243003E */ sb $v1, 0x3e($s2) +/* 07F60C 7F04AADC A243002E */ sb $v1, 0x2e($s2) +/* 07F610 7F04AAE0 A243001E */ sb $v1, 0x1e($s2) +/* 07F614 7F04AAE4 A243000E */ sb $v1, 0xe($s2) +/* 07F618 7F04AAE8 92020069 */ lbu $v0, 0x69($s0) +/* 07F61C 7F04AAEC A242003F */ sb $v0, 0x3f($s2) +/* 07F620 7F04AAF0 A242002F */ sb $v0, 0x2f($s2) +/* 07F624 7F04AAF4 A242001F */ sb $v0, 0x1f($s2) +/* 07F628 7F04AAF8 A242000F */ sb $v0, 0xf($s2) +/* 07F62C 7F04AAFC 92090069 */ lbu $t1, 0x69($s0) +/* 07F630 7F04AB00 292100FF */ slti $at, $t1, 0xff +/* 07F634 7F04AB04 50200003 */ beql $at, $zero, .L7F04AB14 +/* 07F638 7F04AB08 8FAA00BC */ lw $t2, 0xbc($sp) +/* 07F63C 7F04AB0C AFAC00C4 */ sw $t4, 0xc4($sp) +/* 07F640 7F04AB10 8FAA00BC */ lw $t2, 0xbc($sp) +.L7F04AB14: +/* 07F644 7F04AB14 240E0002 */ li $t6, 2 +/* 07F648 7F04AB18 02202825 */ move $a1, $s1 +/* 07F64C 7F04AB1C 254B0008 */ addiu $t3, $t2, 8 +/* 07F650 7F04AB20 AFAB00BC */ sw $t3, 0xbc($sp) +/* 07F654 7F04AB24 AD4F0004 */ sw $t7, 4($t2) +/* 07F658 7F04AB28 AD4D0000 */ sw $t5, ($t2) +/* 07F65C 7F04AB2C AFAE0010 */ sw $t6, 0x10($sp) +/* 07F660 7F04AB30 8FA700C0 */ lw $a3, 0xc0($sp) +/* 07F664 7F04AB34 0FC1DB5A */ jal likely_generate_DL_for_image_declaration +/* 07F668 7F04AB38 8FA600C4 */ lw $a2, 0xc4($sp) +/* 07F66C 7F04AB3C 8FB000BC */ lw $s0, 0xbc($sp) +/* 07F670 7F04AB40 3C190102 */ lui $t9, (0x01020040 >> 16) # lui $t9, 0x102 +/* 07F674 7F04AB44 37390040 */ ori $t9, (0x01020040 & 0xFFFF) # ori $t9, $t9, 0x40 +/* 07F678 7F04AB48 26080008 */ addiu $t0, $s0, 8 +/* 07F67C 7F04AB4C AFA800BC */ sw $t0, 0xbc($sp) +/* 07F680 7F04AB50 AE190000 */ sw $t9, ($s0) +/* 07F684 7F04AB54 8FA900B0 */ lw $t1, 0xb0($sp) +/* 07F688 7F04AB58 0C003A2C */ jal osVirtualToPhysical +/* 07F68C 7F04AB5C 8D24000C */ lw $a0, 0xc($t1) +/* 07F690 7F04AB60 AE020004 */ sw $v0, 4($s0) +/* 07F694 7F04AB64 8FB100BC */ lw $s1, 0xbc($sp) +/* 07F698 7F04AB68 3C0BBC00 */ lui $t3, (0xBC001006 >> 16) # lui $t3, 0xbc00 +/* 07F69C 7F04AB6C 356B1006 */ ori $t3, (0xBC001006 & 0xFFFF) # ori $t3, $t3, 0x1006 +/* 07F6A0 7F04AB70 262A0008 */ addiu $t2, $s1, 8 +/* 07F6A4 7F04AB74 AFAA00BC */ sw $t2, 0xbc($sp) +/* 07F6A8 7F04AB78 02402025 */ move $a0, $s2 +/* 07F6AC 7F04AB7C 0C003A2C */ jal osVirtualToPhysical +/* 07F6B0 7F04AB80 AE2B0000 */ sw $t3, ($s1) +/* 07F6B4 7F04AB84 AE220004 */ sw $v0, 4($s1) +/* 07F6B8 7F04AB88 8FAD00BC */ lw $t5, 0xbc($sp) +/* 07F6BC 7F04AB8C 3C0E0430 */ lui $t6, (0x04300040 >> 16) # lui $t6, 0x430 +/* 07F6C0 7F04AB90 35CE0040 */ ori $t6, (0x04300040 & 0xFFFF) # ori $t6, $t6, 0x40 +/* 07F6C4 7F04AB94 25AF0008 */ addiu $t7, $t5, 8 +/* 07F6C8 7F04AB98 AFAF00BC */ sw $t7, 0xbc($sp) +/* 07F6CC 7F04AB9C 3C180400 */ lui $t8, 0x400 +/* 07F6D0 7F04ABA0 ADB80004 */ sw $t8, 4($t5) +/* 07F6D4 7F04ABA4 ADAE0000 */ sw $t6, ($t5) +/* 07F6D8 7F04ABA8 8FA800BC */ lw $t0, 0xbc($sp) +/* 07F6DC 7F04ABAC 3C09B100 */ lui $t1, (0xB1000032 >> 16) # lui $t1, 0xb100 +/* 07F6E0 7F04ABB0 35290032 */ ori $t1, (0xB1000032 & 0xFFFF) # ori $t1, $t1, 0x32 +/* 07F6E4 7F04ABB4 25190008 */ addiu $t9, $t0, 8 +/* 07F6E8 7F04ABB8 AFB900BC */ sw $t9, 0xbc($sp) +/* 07F6EC 7F04ABBC 240C2010 */ li $t4, 8208 +/* 07F6F0 7F04ABC0 AD0C0004 */ sw $t4, 4($t0) +/* 07F6F4 7F04ABC4 AD090000 */ sw $t1, ($t0) +/* 07F6F8 7F04ABC8 8FAA00BC */ lw $t2, 0xbc($sp) +/* 07F6FC 7F04ABCC 3C0DB800 */ lui $t5, 0xb800 +/* 07F700 7F04ABD0 3C0F0601 */ lui $t7, 0x601 +/* 07F704 7F04ABD4 254B0008 */ addiu $t3, $t2, 8 +/* 07F708 7F04ABD8 AFAB00BC */ sw $t3, 0xbc($sp) +/* 07F70C 7F04ABDC AD400004 */ sw $zero, 4($t2) +/* 07F710 7F04ABE0 AD4D0000 */ sw $t5, ($t2) +/* 07F714 7F04ABE4 8FA600A8 */ lw $a2, 0xa8($sp) +/* 07F718 7F04ABE8 ACCF0000 */ sw $t7, ($a2) +/* 07F71C 7F04ABEC 8FAE00BC */ lw $t6, 0xbc($sp) +/* 07F720 7F04ABF0 ACCE0004 */ sw $t6, 4($a2) +.L7F04ABF4: +/* 07F724 7F04ABF4 8FBF004C */ lw $ra, 0x4c($sp) +.L7F04ABF8: +/* 07F728 7F04ABF8 8FA200BC */ lw $v0, 0xbc($sp) +/* 07F72C 7F04ABFC D7B40020 */ ldc1 $f20, 0x20($sp) +/* 07F730 7F04AC00 D7B60028 */ ldc1 $f22, 0x28($sp) +/* 07F734 7F04AC04 D7B80030 */ ldc1 $f24, 0x30($sp) +/* 07F738 7F04AC08 D7BA0038 */ ldc1 $f26, 0x38($sp) +/* 07F73C 7F04AC0C 8FB00040 */ lw $s0, 0x40($sp) +/* 07F740 7F04AC10 8FB10044 */ lw $s1, 0x44($sp) +/* 07F744 7F04AC14 8FB20048 */ lw $s2, 0x48($sp) +/* 07F748 7F04AC18 03E00008 */ jr $ra +/* 07F74C 7F04AC1C 27BD00B0 */ addiu $sp, $sp, 0xb0 +) +#endif +#endif + + + + +#ifdef NONMATCHING +void sub_GAME_7F04AC20(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04AC20 +/* 07F750 7F04AC20 27BDFF88 */ addiu $sp, $sp, -0x78 +/* 07F754 7F04AC24 AFBF0024 */ sw $ra, 0x24($sp) +/* 07F758 7F04AC28 AFB00020 */ sw $s0, 0x20($sp) +/* 07F75C 7F04AC2C AFA40078 */ sw $a0, 0x78($sp) +/* 07F760 7F04AC30 AFA60080 */ sw $a2, 0x80($sp) +/* 07F764 7F04AC34 908F0001 */ lbu $t7, 1($a0) +/* 07F768 7F04AC38 00A08025 */ move $s0, $a1 +/* 07F76C 7F04AC3C 31F80002 */ andi $t8, $t7, 2 +/* 07F770 7F04AC40 5300013F */ beql $t8, $zero, .L7F04B140 +/* 07F774 7F04AC44 8FBF0024 */ lw $ra, 0x24($sp) +/* 07F778 7F04AC48 8C990004 */ lw $t9, 4($a0) +/* 07F77C 7F04AC4C AFB90074 */ sw $t9, 0x74($sp) +/* 07F780 7F04AC50 8F280014 */ lw $t0, 0x14($t9) +/* 07F784 7F04AC54 AFA80070 */ sw $t0, 0x70($sp) +/* 07F788 7F04AC58 8F290008 */ lw $t1, 8($t9) +/* 07F78C 7F04AC5C 312A0200 */ andi $t2, $t1, 0x200 +/* 07F790 7F04AC60 000A582B */ sltu $t3, $zero, $t2 +/* 07F794 7F04AC64 11600005 */ beqz $t3, .L7F04AC7C +/* 07F798 7F04AC68 AFAB0028 */ sw $t3, 0x28($sp) +/* 07F79C 7F04AC6C 0FC1E0E5 */ jal get_BONDdata_field_10E0 +/* 07F7A0 7F04AC70 00000000 */ nop +/* 07F7A4 7F04AC74 0002602B */ sltu $t4, $zero, $v0 +/* 07F7A8 7F04AC78 AFAC0028 */ sw $t4, 0x28($sp) +.L7F04AC7C: +/* 07F7AC 7F04AC7C 8FAD0074 */ lw $t5, 0x74($sp) +/* 07F7B0 7F04AC80 2401000A */ li $at, 10 +/* 07F7B4 7F04AC84 8E07000C */ lw $a3, 0xc($s0) +/* 07F7B8 7F04AC88 91A30003 */ lbu $v1, 3($t5) +/* 07F7BC 7F04AC8C 54610022 */ bnel $v1, $at, .L7F04AD18 +/* 07F7C0 7F04AC90 2401000B */ li $at, 11 +/* 07F7C4 7F04AC94 8E0F0008 */ lw $t7, 8($s0) +/* 07F7C8 7F04AC98 8FA40070 */ lw $a0, 0x70($sp) +/* 07F7CC 7F04AC9C 31F80001 */ andi $t8, $t7, 1 +/* 07F7D0 7F04ACA0 53000075 */ beql $t8, $zero, .L7F04AE78 +/* 07F7D4 7F04ACA4 24010001 */ li $at, 1 +/* 07F7D8 7F04ACA8 8DA8000C */ lw $t0, 0xc($t5) +/* 07F7DC 7F04ACAC 8FAE0078 */ lw $t6, 0x78($sp) +/* 07F7E0 7F04ACB0 8FA90074 */ lw $t1, 0x74($sp) +/* 07F7E4 7F04ACB4 0008CBC0 */ sll $t9, $t0, 0xf +/* 07F7E8 7F04ACB8 07210003 */ bgez $t9, .L7F04ACC8 +/* 07F7EC 7F04ACBC 8DC20004 */ lw $v0, 4($t6) +/* 07F7F0 7F04ACC0 10000008 */ b .L7F04ACE4 +/* 07F7F4 7F04ACC4 00001825 */ move $v1, $zero +.L7F04ACC8: +/* 07F7F8 7F04ACC8 8D2A0008 */ lw $t2, 8($t1) +/* 07F7FC 7F04ACCC 24030001 */ li $v1, 1 +/* 07F800 7F04ACD0 000A58C0 */ sll $t3, $t2, 3 +/* 07F804 7F04ACD4 05610003 */ bgez $t3, .L7F04ACE4 +/* 07F808 7F04ACD8 00000000 */ nop +/* 07F80C 7F04ACDC 10000001 */ b .L7F04ACE4 +/* 07F810 7F04ACE0 24030008 */ li $v1, 8 +.L7F04ACE4: +/* 07F814 7F04ACE4 8C8F0008 */ lw $t7, 8($a0) +/* 07F818 7F04ACE8 240E0001 */ li $t6, 1 +/* 07F81C 7F04ACEC 24460080 */ addiu $a2, $v0, 0x80 +/* 07F820 7F04ACF0 8DF80008 */ lw $t8, 8($t7) +/* 07F824 7F04ACF4 8F050000 */ lw $a1, ($t8) +/* 07F828 7F04ACF8 AFAE0014 */ sw $t6, 0x14($sp) +/* 07F82C 7F04ACFC 0FC127D2 */ jal process_monitor_animation_microcode +/* 07F830 7F04AD00 AFA30010 */ sw $v1, 0x10($sp) +/* 07F834 7F04AD04 8FAD0074 */ lw $t5, 0x74($sp) +/* 07F838 7F04AD08 00403825 */ move $a3, $v0 +/* 07F83C 7F04AD0C 10000059 */ b .L7F04AE74 +/* 07F840 7F04AD10 91A30003 */ lbu $v1, 3($t5) +/* 07F844 7F04AD14 2401000B */ li $at, 11 +.L7F04AD18: +/* 07F848 7F04AD18 54610057 */ bnel $v1, $at, .L7F04AE78 +/* 07F84C 7F04AD1C 24010001 */ li $at, 1 +/* 07F850 7F04AD20 8E080008 */ lw $t0, 8($s0) +/* 07F854 7F04AD24 8FAA0074 */ lw $t2, 0x74($sp) +/* 07F858 7F04AD28 8FA40070 */ lw $a0, 0x70($sp) +/* 07F85C 7F04AD2C 31190001 */ andi $t9, $t0, 1 +/* 07F860 7F04AD30 53200051 */ beql $t9, $zero, .L7F04AE78 +/* 07F864 7F04AD34 24010001 */ li $at, 1 +/* 07F868 7F04AD38 8D4B000C */ lw $t3, 0xc($t2) +/* 07F86C 7F04AD3C 8FA90078 */ lw $t1, 0x78($sp) +/* 07F870 7F04AD40 8FAF0074 */ lw $t7, 0x74($sp) +/* 07F874 7F04AD44 000B63C0 */ sll $t4, $t3, 0xf +/* 07F878 7F04AD48 05810003 */ bgez $t4, .L7F04AD58 +/* 07F87C 7F04AD4C 8D220004 */ lw $v0, 4($t1) +/* 07F880 7F04AD50 10000008 */ b .L7F04AD74 +/* 07F884 7F04AD54 00001825 */ move $v1, $zero +.L7F04AD58: +/* 07F888 7F04AD58 8DF80008 */ lw $t8, 8($t7) +/* 07F88C 7F04AD5C 24030001 */ li $v1, 1 +/* 07F890 7F04AD60 001870C0 */ sll $t6, $t8, 3 +/* 07F894 7F04AD64 05C10003 */ bgez $t6, .L7F04AD74 +/* 07F898 7F04AD68 00000000 */ nop +/* 07F89C 7F04AD6C 10000001 */ b .L7F04AD74 +/* 07F8A0 7F04AD70 24030008 */ li $v1, 8 +.L7F04AD74: +/* 07F8A4 7F04AD74 8C880008 */ lw $t0, 8($a0) +/* 07F8A8 7F04AD78 24090001 */ li $t1, 1 +/* 07F8AC 7F04AD7C 24460080 */ addiu $a2, $v0, 0x80 +/* 07F8B0 7F04AD80 8D190008 */ lw $t9, 8($t0) +/* 07F8B4 7F04AD84 8F250000 */ lw $a1, ($t9) +/* 07F8B8 7F04AD88 AFA20058 */ sw $v0, 0x58($sp) +/* 07F8BC 7F04AD8C AFA90014 */ sw $t1, 0x14($sp) +/* 07F8C0 7F04AD90 0FC127D2 */ jal process_monitor_animation_microcode +/* 07F8C4 7F04AD94 AFA30010 */ sw $v1, 0x10($sp) +/* 07F8C8 7F04AD98 8FAA0074 */ lw $t2, 0x74($sp) +/* 07F8CC 7F04AD9C 00403825 */ move $a3, $v0 +/* 07F8D0 7F04ADA0 8FAF0074 */ lw $t7, 0x74($sp) +/* 07F8D4 7F04ADA4 8D4B000C */ lw $t3, 0xc($t2) +/* 07F8D8 7F04ADA8 8FA40070 */ lw $a0, 0x70($sp) +/* 07F8DC 7F04ADAC 000B63C0 */ sll $t4, $t3, 0xf +/* 07F8E0 7F04ADB0 05830004 */ bgezl $t4, .L7F04ADC4 +/* 07F8E4 7F04ADB4 8DF80008 */ lw $t8, 8($t7) +/* 07F8E8 7F04ADB8 10000009 */ b .L7F04ADE0 +/* 07F8EC 7F04ADBC 00001825 */ move $v1, $zero +/* 07F8F0 7F04ADC0 8DF80008 */ lw $t8, 8($t7) +.L7F04ADC4: +/* 07F8F4 7F04ADC4 3C013000 */ lui $at, 0x3000 +/* 07F8F8 7F04ADC8 24030001 */ li $v1, 1 +/* 07F8FC 7F04ADCC 03017024 */ and $t6, $t8, $at +/* 07F900 7F04ADD0 11C00003 */ beqz $t6, .L7F04ADE0 +/* 07F904 7F04ADD4 00000000 */ nop +/* 07F908 7F04ADD8 10000001 */ b .L7F04ADE0 +/* 07F90C 7F04ADDC 24030008 */ li $v1, 8 +.L7F04ADE0: +/* 07F910 7F04ADE0 8C880008 */ lw $t0, 8($a0) +/* 07F914 7F04ADE4 8FA60058 */ lw $a2, 0x58($sp) +/* 07F918 7F04ADE8 24090001 */ li $t1, 1 +/* 07F91C 7F04ADEC 8D190008 */ lw $t9, 8($t0) +/* 07F920 7F04ADF0 24C600F4 */ addiu $a2, $a2, 0xf4 +/* 07F924 7F04ADF4 8F250004 */ lw $a1, 4($t9) +/* 07F928 7F04ADF8 AFA30060 */ sw $v1, 0x60($sp) +/* 07F92C 7F04ADFC AFA90014 */ sw $t1, 0x14($sp) +/* 07F930 7F04AE00 0FC127D2 */ jal process_monitor_animation_microcode +/* 07F934 7F04AE04 AFA30010 */ sw $v1, 0x10($sp) +/* 07F938 7F04AE08 8FA40070 */ lw $a0, 0x70($sp) +/* 07F93C 7F04AE0C 8FA30060 */ lw $v1, 0x60($sp) +/* 07F940 7F04AE10 8FA60058 */ lw $a2, 0x58($sp) +/* 07F944 7F04AE14 8C8B0008 */ lw $t3, 8($a0) +/* 07F948 7F04AE18 240F0001 */ li $t7, 1 +/* 07F94C 7F04AE1C 00403825 */ move $a3, $v0 +/* 07F950 7F04AE20 8D6C0008 */ lw $t4, 8($t3) +/* 07F954 7F04AE24 24C60168 */ addiu $a2, $a2, 0x168 +/* 07F958 7F04AE28 8D850008 */ lw $a1, 8($t4) +/* 07F95C 7F04AE2C AFAF0014 */ sw $t7, 0x14($sp) +/* 07F960 7F04AE30 0FC127D2 */ jal process_monitor_animation_microcode +/* 07F964 7F04AE34 AFA30010 */ sw $v1, 0x10($sp) +/* 07F968 7F04AE38 8FA40070 */ lw $a0, 0x70($sp) +/* 07F96C 7F04AE3C 8FA30060 */ lw $v1, 0x60($sp) +/* 07F970 7F04AE40 8FA60058 */ lw $a2, 0x58($sp) +/* 07F974 7F04AE44 8C8E0008 */ lw $t6, 8($a0) +/* 07F978 7F04AE48 24080001 */ li $t0, 1 +/* 07F97C 7F04AE4C 00403825 */ move $a3, $v0 +/* 07F980 7F04AE50 8DCD0008 */ lw $t5, 8($t6) +/* 07F984 7F04AE54 24C601DC */ addiu $a2, $a2, 0x1dc +/* 07F988 7F04AE58 8DA5000C */ lw $a1, 0xc($t5) +/* 07F98C 7F04AE5C AFA80014 */ sw $t0, 0x14($sp) +/* 07F990 7F04AE60 0FC127D2 */ jal process_monitor_animation_microcode +/* 07F994 7F04AE64 AFA30010 */ sw $v1, 0x10($sp) +/* 07F998 7F04AE68 8FB90074 */ lw $t9, 0x74($sp) +/* 07F99C 7F04AE6C 00403825 */ move $a3, $v0 +/* 07F9A0 7F04AE70 93230003 */ lbu $v1, 3($t9) +.L7F04AE74: +/* 07F9A4 7F04AE74 24010001 */ li $at, 1 +.L7F04AE78: +/* 07F9A8 7F04AE78 1461001A */ bne $v1, $at, .L7F04AEE4 +/* 07F9AC 7F04AE7C 8FA40074 */ lw $a0, 0x74($sp) +/* 07F9B0 7F04AE80 8FA90078 */ lw $t1, 0x78($sp) +/* 07F9B4 7F04AE84 00E01025 */ move $v0, $a3 +/* 07F9B8 7F04AE88 3C0AB600 */ lui $t2, 0xb600 +/* 07F9BC 7F04AE8C 8D230004 */ lw $v1, 4($t1) +/* 07F9C0 7F04AE90 240B3000 */ li $t3, 12288 +/* 07F9C4 7F04AE94 AC4B0004 */ sw $t3, 4($v0) +/* 07F9C8 7F04AE98 AC4A0000 */ sw $t2, ($v0) +/* 07F9CC 7F04AE9C 946C0098 */ lhu $t4, 0x98($v1) +/* 07F9D0 7F04AEA0 24E70008 */ addiu $a3, $a3, 8 +/* 07F9D4 7F04AEA4 24180002 */ li $t8, 2 +/* 07F9D8 7F04AEA8 318F0008 */ andi $t7, $t4, 8 +/* 07F9DC 7F04AEAC 11E00003 */ beqz $t7, .L7F04AEBC +/* 07F9E0 7F04AEB0 240E0003 */ li $t6, 3 +/* 07F9E4 7F04AEB4 10000002 */ b .L7F04AEC0 +/* 07F9E8 7F04AEB8 AE18003C */ sw $t8, 0x3c($s0) +.L7F04AEBC: +/* 07F9EC 7F04AEBC AE0E003C */ sw $t6, 0x3c($s0) +.L7F04AEC0: +/* 07F9F0 7F04AEC0 8E0D0030 */ lw $t5, 0x30($s0) +/* 07F9F4 7F04AEC4 24010009 */ li $at, 9 +/* 07F9F8 7F04AEC8 55A1004B */ bnel $t5, $at, .L7F04AFF8 +/* 07F9FC 7F04AECC 8FB90028 */ lw $t9, 0x28($sp) +/* 07FA00 7F04AED0 8E080034 */ lw $t0, 0x34($s0) +/* 07FA04 7F04AED4 2401FF00 */ li $at, -256 +/* 07FA08 7F04AED8 0101C824 */ and $t9, $t0, $at +/* 07FA0C 7F04AEDC 10000045 */ b .L7F04AFF4 +/* 07FA10 7F04AEE0 AE190034 */ sw $t9, 0x34($s0) +.L7F04AEE4: +/* 07FA14 7F04AEE4 0FC12D1E */ jal sub_GAME_7F04B478 +/* 07FA18 7F04AEE8 AFA70064 */ sw $a3, 0x64($sp) +/* 07FA1C 7F04AEEC 8FA70064 */ lw $a3, 0x64($sp) +/* 07FA20 7F04AEF0 1040000F */ beqz $v0, .L7F04AF30 +/* 07FA24 7F04AEF4 00002825 */ move $a1, $zero +/* 07FA28 7F04AEF8 8C430004 */ lw $v1, 4($v0) +/* 07FA2C 7F04AEFC 8FA90074 */ lw $t1, 0x74($sp) +/* 07FA30 7F04AF00 5060000C */ beql $v1, $zero, .L7F04AF34 +/* 07FA34 7F04AF04 8FA40074 */ lw $a0, 0x74($sp) +/* 07FA38 7F04AF08 8D2A0014 */ lw $t2, 0x14($t1) +/* 07FA3C 7F04AF0C 946C001A */ lhu $t4, 0x1a($v1) +/* 07FA40 7F04AF10 8C780008 */ lw $t8, 8($v1) +/* 07FA44 7F04AF14 8D4B0010 */ lw $t3, 0x10($t2) +/* 07FA48 7F04AF18 000C7880 */ sll $t7, $t4, 2 +/* 07FA4C 7F04AF1C 016F1021 */ addu $v0, $t3, $t7 +/* 07FA50 7F04AF20 8C4E0000 */ lw $t6, ($v0) +/* 07FA54 7F04AF24 530E0003 */ beql $t8, $t6, .L7F04AF34 +/* 07FA58 7F04AF28 8FA40074 */ lw $a0, 0x74($sp) +/* 07FA5C 7F04AF2C 24050001 */ li $a1, 1 +.L7F04AF30: +/* 07FA60 7F04AF30 8FA40074 */ lw $a0, 0x74($sp) +.L7F04AF34: +/* 07FA64 7F04AF34 AFA50040 */ sw $a1, 0x40($sp) +/* 07FA68 7F04AF38 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 07FA6C 7F04AF3C AFA70064 */ sw $a3, 0x64($sp) +/* 07FA70 7F04AF40 8FA50040 */ lw $a1, 0x40($sp) +/* 07FA74 7F04AF44 10400003 */ beqz $v0, .L7F04AF54 +/* 07FA78 7F04AF48 8FA70064 */ lw $a3, 0x64($sp) +/* 07FA7C 7F04AF4C 14A0000B */ bnez $a1, .L7F04AF7C +/* 07FA80 7F04AF50 8FA40074 */ lw $a0, 0x74($sp) +.L7F04AF54: +/* 07FA84 7F04AF54 8E080030 */ lw $t0, 0x30($s0) +/* 07FA88 7F04AF58 240D0003 */ li $t5, 3 +/* 07FA8C 7F04AF5C 24010009 */ li $at, 9 +/* 07FA90 7F04AF60 15010024 */ bne $t0, $at, .L7F04AFF4 +/* 07FA94 7F04AF64 AE0D003C */ sw $t5, 0x3c($s0) +/* 07FA98 7F04AF68 8E190034 */ lw $t9, 0x34($s0) +/* 07FA9C 7F04AF6C 2401FF00 */ li $at, -256 +/* 07FAA0 7F04AF70 03214824 */ and $t1, $t9, $at +/* 07FAA4 7F04AF74 1000001F */ b .L7F04AFF4 +/* 07FAA8 7F04AF78 AE090034 */ sw $t1, 0x34($s0) +.L7F04AF7C: +/* 07FAAC 7F04AF7C 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 07FAB0 7F04AF80 AFA70064 */ sw $a3, 0x64($sp) +/* 07FAB4 7F04AF84 8E0C0030 */ lw $t4, 0x30($s0) +/* 07FAB8 7F04AF88 8FA70064 */ lw $a3, 0x64($sp) +/* 07FABC 7F04AF8C 240A0001 */ li $t2, 1 +/* 07FAC0 7F04AF90 24010009 */ li $at, 9 +/* 07FAC4 7F04AF94 15810012 */ bne $t4, $at, .L7F04AFE0 +/* 07FAC8 7F04AF98 AE0A003C */ sw $t2, 0x3c($s0) +/* 07FACC 7F04AF9C 00021880 */ sll $v1, $v0, 2 +/* 07FAD0 7F04AFA0 00621823 */ subu $v1, $v1, $v0 +/* 07FAD4 7F04AFA4 000318C0 */ sll $v1, $v1, 3 +/* 07FAD8 7F04AFA8 00621821 */ addu $v1, $v1, $v0 +/* 07FADC 7F04AFAC 00031840 */ sll $v1, $v1, 1 +/* 07FAE0 7F04AFB0 24640064 */ addiu $a0, $v1, 0x64 +/* 07FAE4 7F04AFB4 28810100 */ slti $at, $a0, 0x100 +/* 07FAE8 7F04AFB8 54200003 */ bnezl $at, .L7F04AFC8 +/* 07FAEC 7F04AFBC 8E0B0034 */ lw $t3, 0x34($s0) +/* 07FAF0 7F04AFC0 240400FF */ li $a0, 255 +/* 07FAF4 7F04AFC4 8E0B0034 */ lw $t3, 0x34($s0) +.L7F04AFC8: +/* 07FAF8 7F04AFC8 2401FF00 */ li $at, -256 +/* 07FAFC 7F04AFCC 01617824 */ and $t7, $t3, $at +/* 07FB00 7F04AFD0 AE0F0034 */ sw $t7, 0x34($s0) +/* 07FB04 7F04AFD4 01E47025 */ or $t6, $t7, $a0 +/* 07FB08 7F04AFD8 10000006 */ b .L7F04AFF4 +/* 07FB0C 7F04AFDC AE0E0034 */ sw $t6, 0x34($s0) +.L7F04AFE0: +/* 07FB10 7F04AFE0 58400005 */ blezl $v0, .L7F04AFF8 +/* 07FB14 7F04AFE4 8FB90028 */ lw $t9, 0x28($sp) +/* 07FB18 7F04AFE8 8E0D0034 */ lw $t5, 0x34($s0) +/* 07FB1C 7F04AFEC 35A8FF00 */ ori $t0, $t5, 0xff00 +/* 07FB20 7F04AFF0 AE080034 */ sw $t0, 0x34($s0) +.L7F04AFF4: +/* 07FB24 7F04AFF4 8FB90028 */ lw $t9, 0x28($sp) +.L7F04AFF8: +/* 07FB28 7F04AFF8 3C090103 */ lui $t1, (0x01030040 >> 16) # lui $t1, 0x103 +/* 07FB2C 7F04AFFC 35290040 */ ori $t1, (0x01030040 & 0xFFFF) # ori $t1, $t1, 0x40 +/* 07FB30 7F04B000 13200009 */ beqz $t9, .L7F04B028 +/* 07FB34 7F04B004 00E01825 */ move $v1, $a3 +/* 07FB38 7F04B008 24E70008 */ addiu $a3, $a3, 8 +/* 07FB3C 7F04B00C AC690000 */ sw $t1, ($v1) +/* 07FB40 7F04B010 AFA70064 */ sw $a3, 0x64($sp) +/* 07FB44 7F04B014 0FC1E0E5 */ jal get_BONDdata_field_10E0 +/* 07FB48 7F04B018 AFA30034 */ sw $v1, 0x34($sp) +/* 07FB4C 7F04B01C 8FA30034 */ lw $v1, 0x34($sp) +/* 07FB50 7F04B020 8FA70064 */ lw $a3, 0x64($sp) +/* 07FB54 7F04B024 AC620004 */ sw $v0, 4($v1) +.L7F04B028: +/* 07FB58 7F04B028 AE07000C */ sw $a3, 0xc($s0) +/* 07FB5C 7F04B02C 8FA50070 */ lw $a1, 0x70($sp) +/* 07FB60 7F04B030 0FC1D1A1 */ jal subdraw +/* 07FB64 7F04B034 02002025 */ move $a0, $s0 +/* 07FB68 7F04B038 8FA30074 */ lw $v1, 0x74($sp) +/* 07FB6C 7F04B03C 8E07000C */ lw $a3, 0xc($s0) +/* 07FB70 7F04B040 24010001 */ li $at, 1 +/* 07FB74 7F04B044 906A0003 */ lbu $t2, 3($v1) +/* 07FB78 7F04B048 3C0CB600 */ lui $t4, 0xb600 +/* 07FB7C 7F04B04C 240B3000 */ li $t3, 12288 +/* 07FB80 7F04B050 15410004 */ bne $t2, $at, .L7F04B064 +/* 07FB84 7F04B054 00E01025 */ move $v0, $a3 +/* 07FB88 7F04B058 24E70008 */ addiu $a3, $a3, 8 +/* 07FB8C 7F04B05C AC4C0000 */ sw $t4, ($v0) +/* 07FB90 7F04B060 AC4B0004 */ sw $t3, 4($v0) +.L7F04B064: +/* 07FB94 7F04B064 8FA60080 */ lw $a2, 0x80($sp) +/* 07FB98 7F04B068 906F0002 */ lbu $t7, 2($v1) +/* 07FB9C 7F04B06C 24180001 */ li $t8, 1 +/* 07FBA0 7F04B070 00D87004 */ sllv $t6, $t8, $a2 +/* 07FBA4 7F04B074 01EE6824 */ and $t5, $t7, $t6 +/* 07FBA8 7F04B078 11A00005 */ beqz $t5, .L7F04B090 +/* 07FBAC 7F04B07C 00E02025 */ move $a0, $a3 +/* 07FBB0 7F04B080 0FC286A5 */ jal sub_GAME_7F0A1A94 +/* 07FBB4 7F04B084 8FA50078 */ lw $a1, 0x78($sp) +/* 07FBB8 7F04B088 00403825 */ move $a3, $v0 +/* 07FBBC 7F04B08C 8FA60080 */ lw $a2, 0x80($sp) +.L7F04B090: +/* 07FBC0 7F04B090 8FA80028 */ lw $t0, 0x28($sp) +/* 07FBC4 7F04B094 3C190103 */ lui $t9, (0x01030040 >> 16) # lui $t9, 0x103 +/* 07FBC8 7F04B098 37390040 */ ori $t9, (0x01030040 & 0xFFFF) # ori $t9, $t9, 0x40 +/* 07FBCC 7F04B09C 1100000A */ beqz $t0, .L7F04B0C8 +/* 07FBD0 7F04B0A0 00E01825 */ move $v1, $a3 +/* 07FBD4 7F04B0A4 24E70008 */ addiu $a3, $a3, 8 +/* 07FBD8 7F04B0A8 AC790000 */ sw $t9, ($v1) +/* 07FBDC 7F04B0AC AFA70064 */ sw $a3, 0x64($sp) +/* 07FBE0 7F04B0B0 0FC1E0DD */ jal get_BONDdata_field_10D8 +/* 07FBE4 7F04B0B4 AFA3002C */ sw $v1, 0x2c($sp) +/* 07FBE8 7F04B0B8 8FA3002C */ lw $v1, 0x2c($sp) +/* 07FBEC 7F04B0BC 8FA70064 */ lw $a3, 0x64($sp) +/* 07FBF0 7F04B0C0 AC620004 */ sw $v0, 4($v1) +/* 07FBF4 7F04B0C4 8FA60080 */ lw $a2, 0x80($sp) +.L7F04B0C8: +/* 07FBF8 7F04B0C8 AE07000C */ sw $a3, 0xc($s0) +/* 07FBFC 7F04B0CC 8FA90078 */ lw $t1, 0x78($sp) +/* 07FC00 7F04B0D0 8D240020 */ lw $a0, 0x20($t1) +/* 07FC04 7F04B0D4 1080000A */ beqz $a0, .L7F04B100 +/* 07FC08 7F04B0D8 00000000 */ nop +/* 07FC0C 7F04B0DC 8FA60080 */ lw $a2, 0x80($sp) +.L7F04B0E0: +/* 07FC10 7F04B0E0 02002825 */ move $a1, $s0 +/* 07FC14 7F04B0E4 0FC12B08 */ jal sub_GAME_7F04AC20 +/* 07FC18 7F04B0E8 AFA40068 */ sw $a0, 0x68($sp) +/* 07FC1C 7F04B0EC 8FA40068 */ lw $a0, 0x68($sp) +/* 07FC20 7F04B0F0 8C840024 */ lw $a0, 0x24($a0) +/* 07FC24 7F04B0F4 5480FFFA */ bnezl $a0, .L7F04B0E0 +/* 07FC28 7F04B0F8 8FA60080 */ lw $a2, 0x80($sp) +/* 07FC2C 7F04B0FC 8FA60080 */ lw $a2, 0x80($sp) +.L7F04B100: +/* 07FC30 7F04B100 10C0000E */ beqz $a2, .L7F04B13C +/* 07FC34 7F04B104 8FAA0028 */ lw $t2, 0x28($sp) +/* 07FC38 7F04B108 11400008 */ beqz $t2, .L7F04B12C +/* 07FC3C 7F04B10C 8FA20070 */ lw $v0, 0x70($sp) +/* 07FC40 7F04B110 8FA20070 */ lw $v0, 0x70($sp) +/* 07FC44 7F04B114 8C4C0008 */ lw $t4, 8($v0) +/* 07FC48 7F04B118 8C44000C */ lw $a0, 0xc($v0) +/* 07FC4C 7F04B11C 0FC22FBB */ jal sub_GAME_7F08BEEC +/* 07FC50 7F04B120 8585000E */ lh $a1, 0xe($t4) +/* 07FC54 7F04B124 10000006 */ b .L7F04B140 +/* 07FC58 7F04B128 8FBF0024 */ lw $ra, 0x24($sp) +.L7F04B12C: +/* 07FC5C 7F04B12C 8C4B0008 */ lw $t3, 8($v0) +/* 07FC60 7F04B130 8C44000C */ lw $a0, 0xc($v0) +/* 07FC64 7F04B134 0FC22F52 */ jal sub_GAME_7F08BD48 +/* 07FC68 7F04B138 8565000E */ lh $a1, 0xe($t3) +.L7F04B13C: +/* 07FC6C 7F04B13C 8FBF0024 */ lw $ra, 0x24($sp) +.L7F04B140: +/* 07FC70 7F04B140 8FB00020 */ lw $s0, 0x20($sp) +/* 07FC74 7F04B144 27BD0078 */ addiu $sp, $sp, 0x78 +/* 07FC78 7F04B148 03E00008 */ jr $ra +/* 07FC7C 7F04B14C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04B150(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04B150 +/* 07FC80 7F04B150 27BDFF40 */ addiu $sp, $sp, -0xc0 +/* 07FC84 7F04B154 3C0F8003 */ lui $t7, %hi(D_80031FD0) +/* 07FC88 7F04B158 AFBF0024 */ sw $ra, 0x24($sp) +/* 07FC8C 7F04B15C AFB00020 */ sw $s0, 0x20($sp) +/* 07FC90 7F04B160 AFA500C4 */ sw $a1, 0xc4($sp) +/* 07FC94 7F04B164 AFA600C8 */ sw $a2, 0xc8($sp) +/* 07FC98 7F04B168 25EF1FD0 */ addiu $t7, %lo(D_80031FD0) # addiu $t7, $t7, 0x1fd0 +/* 07FC9C 7F04B16C 8C900004 */ lw $s0, 4($a0) +/* 07FCA0 7F04B170 25E8003C */ addiu $t0, $t7, 0x3c +/* 07FCA4 7F04B174 27AE0068 */ addiu $t6, $sp, 0x68 +.L7F04B178: +/* 07FCA8 7F04B178 8DE10000 */ lw $at, ($t7) +/* 07FCAC 7F04B17C 25EF000C */ addiu $t7, $t7, 0xc +/* 07FCB0 7F04B180 25CE000C */ addiu $t6, $t6, 0xc +/* 07FCB4 7F04B184 ADC1FFF4 */ sw $at, -0xc($t6) +/* 07FCB8 7F04B188 8DE1FFF8 */ lw $at, -8($t7) +/* 07FCBC 7F04B18C ADC1FFF8 */ sw $at, -8($t6) +/* 07FCC0 7F04B190 8DE1FFFC */ lw $at, -4($t7) +/* 07FCC4 7F04B194 15E8FFF8 */ bne $t7, $t0, .L7F04B178 +/* 07FCC8 7F04B198 ADC1FFFC */ sw $at, -4($t6) +/* 07FCCC 7F04B19C 8DE10000 */ lw $at, ($t7) +/* 07FCD0 7F04B1A0 240900FF */ li $t1, 255 +/* 07FCD4 7F04B1A4 27A500B0 */ addiu $a1, $sp, 0xb0 +/* 07FCD8 7F04B1A8 ADC10000 */ sw $at, ($t6) +/* 07FCDC 7F04B1AC AFA9003C */ sw $t1, 0x3c($sp) +/* 07FCE0 7F04B1B0 0FC2ECE9 */ jal if_sky_present_convert_values +/* 07FCE4 7F04B1B4 AFA400C0 */ sw $a0, 0xc0($sp) +/* 07FCE8 7F04B1B8 14400003 */ bnez $v0, .L7F04B1C8 +/* 07FCEC 7F04B1BC AFA200AC */ sw $v0, 0xac($sp) +/* 07FCF0 7F04B1C0 100000A8 */ b .L7F04B464 +/* 07FCF4 7F04B1C4 8FA200C4 */ lw $v0, 0xc4($sp) +.L7F04B1C8: +/* 07FCF8 7F04B1C8 920A0003 */ lbu $t2, 3($s0) +/* 07FCFC 7F04B1CC 2401002F */ li $at, 47 +/* 07FD00 7F04B1D0 51410021 */ beql $t2, $at, .L7F04B258 +/* 07FD04 7F04B1D4 8FAD003C */ lw $t5, 0x3c($sp) +/* 07FD08 7F04B1D8 0FC1B403 */ jal getinstsize +/* 07FD0C 7F04B1DC 8E040014 */ lw $a0, 0x14($s0) +/* 07FD10 7F04B1E0 44050000 */ mfc1 $a1, $f0 +/* 07FD14 7F04B1E4 0FC152E0 */ jal sub_GAME_7F054B80 +/* 07FD18 7F04B1E8 8FA400C0 */ lw $a0, 0xc0($sp) +/* 07FD1C 7F04B1EC 8FAB00C0 */ lw $t3, 0xc0($sp) +/* 07FD20 7F04B1F0 46000086 */ mov.s $f2, $f0 +/* 07FD24 7F04B1F4 85620002 */ lh $v0, 2($t3) +/* 07FD28 7F04B1F8 1840000B */ blez $v0, .L7F04B228 +/* 07FD2C 7F04B1FC 2841003C */ slti $at, $v0, 0x3c +/* 07FD30 7F04B200 5020000A */ beql $at, $zero, .L7F04B22C +/* 07FD34 7F04B204 3C01437F */ lui $at, 0x437f +/* 07FD38 7F04B208 44822000 */ mtc1 $v0, $f4 +/* 07FD3C 7F04B20C 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 07FD40 7F04B210 44816000 */ mtc1 $at, $f12 +/* 07FD44 7F04B214 468021A0 */ cvt.s.w $f6, $f4 +/* 07FD48 7F04B218 46066201 */ sub.s $f8, $f12, $f6 +/* 07FD4C 7F04B21C 460C4283 */ div.s $f10, $f8, $f12 +/* 07FD50 7F04B220 460A0082 */ mul.s $f2, $f0, $f10 +/* 07FD54 7F04B224 00000000 */ nop +.L7F04B228: +/* 07FD58 7F04B228 3C01437F */ li $at, 0x437F0000 # 255.000000 +.L7F04B22C: +/* 07FD5C 7F04B22C 44818000 */ mtc1 $at, $f16 +/* 07FD60 7F04B230 00000000 */ nop +/* 07FD64 7F04B234 46101482 */ mul.s $f18, $f2, $f16 +/* 07FD68 7F04B238 4600910D */ trunc.w.s $f4, $f18 +/* 07FD6C 7F04B23C 44022000 */ mfc1 $v0, $f4 +/* 07FD70 7F04B240 00000000 */ nop +/* 07FD74 7F04B244 1C400003 */ bgtz $v0, .L7F04B254 +/* 07FD78 7F04B248 AFA2003C */ sw $v0, 0x3c($sp) +/* 07FD7C 7F04B24C 10000085 */ b .L7F04B464 +/* 07FD80 7F04B250 8FA200C4 */ lw $v0, 0xc4($sp) +.L7F04B254: +/* 07FD84 7F04B254 8FAD003C */ lw $t5, 0x3c($sp) +.L7F04B258: +/* 07FD88 7F04B258 8FA800C8 */ lw $t0, 0xc8($sp) +/* 07FD8C 7F04B25C 8FA400C0 */ lw $a0, 0xc0($sp) +/* 07FD90 7F04B260 29A100FF */ slti $at, $t5, 0xff +/* 07FD94 7F04B264 14200006 */ bnez $at, .L7F04B280 +/* 07FD98 7F04B268 27A50058 */ addiu $a1, $sp, 0x58 +/* 07FD9C 7F04B26C 8E19000C */ lw $t9, 0xc($s0) +/* 07FDA0 7F04B270 8FAF00C8 */ lw $t7, 0xc8($sp) +/* 07FDA4 7F04B274 0019C3C0 */ sll $t8, $t9, 0xf +/* 07FDA8 7F04B278 07010007 */ bgez $t8, .L7F04B298 +/* 07FDAC 7F04B27C 00000000 */ nop +.L7F04B280: +/* 07FDB0 7F04B280 15000003 */ bnez $t0, .L7F04B290 +/* 07FDB4 7F04B284 00000000 */ nop +/* 07FDB8 7F04B288 10000076 */ b .L7F04B464 +/* 07FDBC 7F04B28C 8FA200C4 */ lw $v0, 0xc4($sp) +.L7F04B290: +/* 07FDC0 7F04B290 10000005 */ b .L7F04B2A8 +/* 07FDC4 7F04B294 24030003 */ li $v1, 3 +.L7F04B298: +/* 07FDC8 7F04B298 15E00003 */ bnez $t7, .L7F04B2A8 +/* 07FDCC 7F04B29C 24030002 */ li $v1, 2 +/* 07FDD0 7F04B2A0 10000001 */ b .L7F04B2A8 +/* 07FDD4 7F04B2A4 24030001 */ li $v1, 1 +.L7F04B2A8: +/* 07FDD8 7F04B2A8 0FC15299 */ jal sub_GAME_7F054A64 +/* 07FDDC 7F04B2AC AFA30044 */ sw $v1, 0x44($sp) +/* 07FDE0 7F04B2B0 1840000E */ blez $v0, .L7F04B2EC +/* 07FDE4 7F04B2B4 8FA30044 */ lw $v1, 0x44($sp) +/* 07FDE8 7F04B2B8 8E0E000C */ lw $t6, 0xc($s0) +/* 07FDEC 7F04B2BC 8FA400C4 */ lw $a0, 0xc4($sp) +/* 07FDF0 7F04B2C0 8FA50058 */ lw $a1, 0x58($sp) +/* 07FDF4 7F04B2C4 000E4940 */ sll $t1, $t6, 5 +/* 07FDF8 7F04B2C8 05200008 */ bltz $t1, .L7F04B2EC +/* 07FDFC 7F04B2CC 8FA6005C */ lw $a2, 0x5c($sp) +/* 07FE00 7F04B2D0 C7A60064 */ lwc1 $f6, 0x64($sp) +/* 07FE04 7F04B2D4 8FA70060 */ lw $a3, 0x60($sp) +/* 07FE08 7F04B2D8 AFA30044 */ sw $v1, 0x44($sp) +/* 07FE0C 7F04B2DC 0FC2D3FD */ jal sub_GAME_7F0B4FF4 +/* 07FE10 7F04B2E0 E7A60010 */ swc1 $f6, 0x10($sp) +/* 07FE14 7F04B2E4 10000005 */ b .L7F04B2FC +/* 07FE18 7F04B2E8 8FA30044 */ lw $v1, 0x44($sp) +.L7F04B2EC: +/* 07FE1C 7F04B2EC 8FA400C4 */ lw $a0, 0xc4($sp) +/* 07FE20 7F04B2F0 0FC2D3ED */ jal sub_GAME_7F0B4FB4 +/* 07FE24 7F04B2F4 AFA30044 */ sw $v1, 0x44($sp) +/* 07FE28 7F04B2F8 8FA30044 */ lw $v1, 0x44($sp) +.L7F04B2FC: +/* 07FE2C 7F04B2FC AFA30070 */ sw $v1, 0x70($sp) +/* 07FE30 7F04B300 8E0A000C */ lw $t2, 0xc($s0) +/* 07FE34 7F04B304 8FAD003C */ lw $t5, 0x3c($sp) +/* 07FE38 7F04B308 3C010001 */ lui $at, 1 +/* 07FE3C 7F04B30C 01415824 */ and $t3, $t2, $at +/* 07FE40 7F04B310 2D6C0001 */ sltiu $t4, $t3, 1 +/* 07FE44 7F04B314 29A100FF */ slti $at, $t5, 0xff +/* 07FE48 7F04B318 AFAC006C */ sw $t4, 0x6c($sp) +/* 07FE4C 7F04B31C 10200005 */ beqz $at, .L7F04B334 +/* 07FE50 7F04B320 AFA20074 */ sw $v0, 0x74($sp) +/* 07FE54 7F04B324 24190005 */ li $t9, 5 +/* 07FE58 7F04B328 AFB90098 */ sw $t9, 0x98($sp) +/* 07FE5C 7F04B32C 10000017 */ b .L7F04B38C +/* 07FE60 7F04B330 AFAD009C */ sw $t5, 0x9c($sp) +.L7F04B334: +/* 07FE64 7F04B334 24180009 */ li $t8, 9 +/* 07FE68 7F04B338 AFB80098 */ sw $t8, 0x98($sp) +/* 07FE6C 7F04B33C 92020003 */ lbu $v0, 3($s0) +/* 07FE70 7F04B340 2401002F */ li $at, 47 +/* 07FE74 7F04B344 54410006 */ bnel $v0, $at, .L7F04B360 +/* 07FE78 7F04B348 24010001 */ li $at, 1 +/* 07FE7C 7F04B34C 8E080088 */ lw $t0, 0x88($s0) +/* 07FE80 7F04B350 00087A00 */ sll $t7, $t0, 8 +/* 07FE84 7F04B354 1000000D */ b .L7F04B38C +/* 07FE88 7F04B358 AFAF009C */ sw $t7, 0x9c($sp) +/* 07FE8C 7F04B35C 24010001 */ li $at, 1 +.L7F04B360: +/* 07FE90 7F04B360 5441000A */ bnel $v0, $at, .L7F04B38C +/* 07FE94 7F04B364 AFA0009C */ sw $zero, 0x9c($sp) +/* 07FE98 7F04B368 960E0098 */ lhu $t6, 0x98($s0) +/* 07FE9C 7F04B36C 31C90002 */ andi $t1, $t6, 2 +/* 07FEA0 7F04B370 51200006 */ beql $t1, $zero, .L7F04B38C +/* 07FEA4 7F04B374 AFA0009C */ sw $zero, 0x9c($sp) +/* 07FEA8 7F04B378 860A00BE */ lh $t2, 0xbe($s0) +/* 07FEAC 7F04B37C 000A5A00 */ sll $t3, $t2, 8 +/* 07FEB0 7F04B380 10000002 */ b .L7F04B38C +/* 07FEB4 7F04B384 AFAB009C */ sw $t3, 0x9c($sp) +/* 07FEB8 7F04B388 AFA0009C */ sw $zero, 0x9c($sp) +.L7F04B38C: +/* 07FEBC 7F04B38C 0FC0FFD8 */ jal sub_GAME_7F03FF60 +/* 07FEC0 7F04B390 02002025 */ move $a0, $s0 +/* 07FEC4 7F04B394 00026080 */ sll $t4, $v0, 2 +/* 07FEC8 7F04B398 01826021 */ addu $t4, $t4, $v0 +/* 07FECC 7F04B39C 000C6080 */ sll $t4, $t4, 2 +/* 07FED0 7F04B3A0 01826021 */ addu $t4, $t4, $v0 +/* 07FED4 7F04B3A4 241900FF */ li $t9, 255 +/* 07FED8 7F04B3A8 032C2023 */ subu $a0, $t9, $t4 +/* 07FEDC 7F04B3AC 04810002 */ bgez $a0, .L7F04B3B8 +/* 07FEE0 7F04B3B0 27A600B0 */ addiu $a2, $sp, 0xb0 +/* 07FEE4 7F04B3B4 00002025 */ move $a0, $zero +.L7F04B3B8: +/* 07FEE8 7F04B3B8 920D0078 */ lbu $t5, 0x78($s0) +/* 07FEEC 7F04B3BC 01A40019 */ multu $t5, $a0 +/* 07FEF0 7F04B3C0 00026900 */ sll $t5, $v0, 4 +/* 07FEF4 7F04B3C4 01A26823 */ subu $t5, $t5, $v0 +/* 07FEF8 7F04B3C8 0000C012 */ mflo $t8 +/* 07FEFC 7F04B3CC 00184203 */ sra $t0, $t8, 8 +/* 07FF00 7F04B3D0 AFA80048 */ sw $t0, 0x48($sp) +/* 07FF04 7F04B3D4 920F0079 */ lbu $t7, 0x79($s0) +/* 07FF08 7F04B3D8 01E40019 */ multu $t7, $a0 +/* 07FF0C 7F04B3DC 240F00FF */ li $t7, 255 +/* 07FF10 7F04B3E0 00007012 */ mflo $t6 +/* 07FF14 7F04B3E4 000E4A03 */ sra $t1, $t6, 8 +/* 07FF18 7F04B3E8 AFA9004C */ sw $t1, 0x4c($sp) +/* 07FF1C 7F04B3EC 920A007A */ lbu $t2, 0x7a($s0) +/* 07FF20 7F04B3F0 01440019 */ multu $t2, $a0 +/* 07FF24 7F04B3F4 27A40048 */ addiu $a0, $sp, 0x48 +/* 07FF28 7F04B3F8 00005812 */ mflo $t3 +/* 07FF2C 7F04B3FC 000BCA03 */ sra $t9, $t3, 8 +/* 07FF30 7F04B400 AFB90050 */ sw $t9, 0x50($sp) +/* 07FF34 7F04B404 920C007B */ lbu $t4, 0x7b($s0) +/* 07FF38 7F04B408 018DC021 */ addu $t8, $t4, $t5 +/* 07FF3C 7F04B40C 2B010100 */ slti $at, $t8, 0x100 +/* 07FF40 7F04B410 14200002 */ bnez $at, .L7F04B41C +/* 07FF44 7F04B414 AFB80054 */ sw $t8, 0x54($sp) +/* 07FF48 7F04B418 AFAF0054 */ sw $t7, 0x54($sp) +.L7F04B41C: +/* 07FF4C 7F04B41C 0FC100E1 */ jal sub_GAME_7F040384 +/* 07FF50 7F04B420 8FA500AC */ lw $a1, 0xac($sp) +/* 07FF54 7F04B424 8FA90048 */ lw $t1, 0x48($sp) +/* 07FF58 7F04B428 8FAE0054 */ lw $t6, 0x54($sp) +/* 07FF5C 7F04B42C 8FB9004C */ lw $t9, 0x4c($sp) +/* 07FF60 7F04B430 8FB80050 */ lw $t8, 0x50($sp) +/* 07FF64 7F04B434 00095600 */ sll $t2, $t1, 0x18 +/* 07FF68 7F04B438 01CA5825 */ or $t3, $t6, $t2 +/* 07FF6C 7F04B43C 00196400 */ sll $t4, $t9, 0x10 +/* 07FF70 7F04B440 016C6825 */ or $t5, $t3, $t4 +/* 07FF74 7F04B444 00184200 */ sll $t0, $t8, 8 +/* 07FF78 7F04B448 01A87825 */ or $t7, $t5, $t0 +/* 07FF7C 7F04B44C AFAF00A0 */ sw $t7, 0xa0($sp) +/* 07FF80 7F04B450 8FA400C0 */ lw $a0, 0xc0($sp) +/* 07FF84 7F04B454 27A50068 */ addiu $a1, $sp, 0x68 +/* 07FF88 7F04B458 0FC12B08 */ jal sub_GAME_7F04AC20 +/* 07FF8C 7F04B45C 8FA600C8 */ lw $a2, 0xc8($sp) +/* 07FF90 7F04B460 8FA20074 */ lw $v0, 0x74($sp) +.L7F04B464: +/* 07FF94 7F04B464 8FBF0024 */ lw $ra, 0x24($sp) +/* 07FF98 7F04B468 8FB00020 */ lw $s0, 0x20($sp) +/* 07FF9C 7F04B46C 27BD00C0 */ addiu $sp, $sp, 0xc0 +/* 07FFA0 7F04B470 03E00008 */ jr $ra +/* 07FFA4 7F04B474 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04B478(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04B478 +/* 07FFA8 7F04B478 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 07FFAC 7F04B47C AFBF002C */ sw $ra, 0x2c($sp) +/* 07FFB0 7F04B480 AFB50028 */ sw $s5, 0x28($sp) +/* 07FFB4 7F04B484 AFB40024 */ sw $s4, 0x24($sp) +/* 07FFB8 7F04B488 AFB30020 */ sw $s3, 0x20($sp) +/* 07FFBC 7F04B48C AFB2001C */ sw $s2, 0x1c($sp) +/* 07FFC0 7F04B490 AFB10018 */ sw $s1, 0x18($sp) +/* 07FFC4 7F04B494 AFB00014 */ sw $s0, 0x14($sp) +/* 07FFC8 7F04B498 8C8E0014 */ lw $t6, 0x14($a0) +/* 07FFCC 7F04B49C 00808825 */ move $s1, $a0 +/* 07FFD0 7F04B4A0 24120008 */ li $s2, 8 +/* 07FFD4 7F04B4A4 8DC20008 */ lw $v0, 8($t6) +/* 07FFD8 7F04B4A8 24130012 */ li $s3, 18 +/* 07FFDC 7F04B4AC 24140017 */ li $s4, 23 +/* 07FFE0 7F04B4B0 8C500000 */ lw $s0, ($v0) +/* 07FFE4 7F04B4B4 24150018 */ li $s5, 24 +/* 07FFE8 7F04B4B8 5200002C */ beql $s0, $zero, .L7F04B56C +/* 07FFEC 7F04B4BC 00001025 */ move $v0, $zero +/* 07FFF0 7F04B4C0 96020000 */ lhu $v0, ($s0) +.L7F04B4C4: +/* 07FFF4 7F04B4C4 02002825 */ move $a1, $s0 +/* 07FFF8 7F04B4C8 304F00FF */ andi $t7, $v0, 0xff +/* 07FFFC 7F04B4CC 11F2000B */ beq $t7, $s2, .L7F04B4FC +/* 080000 7F04B4D0 00000000 */ nop +/* 080004 7F04B4D4 11F3000D */ beq $t7, $s3, .L7F04B50C +/* 080008 7F04B4D8 02002825 */ move $a1, $s0 +/* 08000C 7F04B4DC 11F4000F */ beq $t7, $s4, .L7F04B51C +/* 080010 7F04B4E0 02002825 */ move $a1, $s0 +/* 080014 7F04B4E4 11F50003 */ beq $t7, $s5, .L7F04B4F4 +/* 080018 7F04B4E8 00000000 */ nop +/* 08001C 7F04B4EC 1000000E */ b .L7F04B528 +/* 080020 7F04B4F0 8E020014 */ lw $v0, 0x14($s0) +.L7F04B4F4: +/* 080024 7F04B4F4 1000001D */ b .L7F04B56C +/* 080028 7F04B4F8 02001025 */ move $v0, $s0 +.L7F04B4FC: +/* 08002C 7F04B4FC 0FC1BA5C */ jal sub_GAME_7F06E970 +/* 080030 7F04B500 8E240014 */ lw $a0, 0x14($s1) +/* 080034 7F04B504 10000008 */ b .L7F04B528 +/* 080038 7F04B508 8E020014 */ lw $v0, 0x14($s0) +.L7F04B50C: +/* 08003C 7F04B50C 0FC1BA6F */ jal process_12_handle_switch +/* 080040 7F04B510 8E240014 */ lw $a0, 0x14($s1) +/* 080044 7F04B514 10000004 */ b .L7F04B528 +/* 080048 7F04B518 8E020014 */ lw $v0, 0x14($s0) +.L7F04B51C: +/* 08004C 7F04B51C 0FC1BA82 */ jal process_17_pointer_to_head +/* 080050 7F04B520 8E240014 */ lw $a0, 0x14($s1) +/* 080054 7F04B524 8E020014 */ lw $v0, 0x14($s0) +.L7F04B528: +/* 080058 7F04B528 10400003 */ beqz $v0, .L7F04B538 +/* 08005C 7F04B52C 00000000 */ nop +/* 080060 7F04B530 1000000B */ b .L7F04B560 +/* 080064 7F04B534 00408025 */ move $s0, $v0 +.L7F04B538: +/* 080068 7F04B538 12000009 */ beqz $s0, .L7F04B560 +/* 08006C 7F04B53C 00000000 */ nop +/* 080070 7F04B540 8E02000C */ lw $v0, 0xc($s0) +.L7F04B544: +/* 080074 7F04B544 50400004 */ beql $v0, $zero, .L7F04B558 +/* 080078 7F04B548 8E100008 */ lw $s0, 8($s0) +/* 08007C 7F04B54C 10000004 */ b .L7F04B560 +/* 080080 7F04B550 00408025 */ move $s0, $v0 +/* 080084 7F04B554 8E100008 */ lw $s0, 8($s0) +.L7F04B558: +/* 080088 7F04B558 5600FFFA */ bnezl $s0, .L7F04B544 +/* 08008C 7F04B55C 8E02000C */ lw $v0, 0xc($s0) +.L7F04B560: +/* 080090 7F04B560 5600FFD8 */ bnezl $s0, .L7F04B4C4 +/* 080094 7F04B564 96020000 */ lhu $v0, ($s0) +/* 080098 7F04B568 00001025 */ move $v0, $zero +.L7F04B56C: +/* 08009C 7F04B56C 8FBF002C */ lw $ra, 0x2c($sp) +/* 0800A0 7F04B570 8FB00014 */ lw $s0, 0x14($sp) +/* 0800A4 7F04B574 8FB10018 */ lw $s1, 0x18($sp) +/* 0800A8 7F04B578 8FB2001C */ lw $s2, 0x1c($sp) +/* 0800AC 7F04B57C 8FB30020 */ lw $s3, 0x20($sp) +/* 0800B0 7F04B580 8FB40024 */ lw $s4, 0x24($sp) +/* 0800B4 7F04B584 8FB50028 */ lw $s5, 0x28($sp) +/* 0800B8 7F04B588 03E00008 */ jr $ra +/* 0800BC 7F04B58C 27BD0030 */ addiu $sp, $sp, 0x30 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04B590(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04B590 +/* 0800C0 7F04B590 8C820004 */ lw $v0, 4($a0) +/* 0800C4 7F04B594 3C0E8004 */ lui $t6, %hi(prop_console_one_screen_related) +/* 0800C8 7F04B598 25CEA070 */ addiu $t6, %lo(prop_console_one_screen_related) # addiu $t6, $t6, -0x5f90 +/* 0800CC 7F04B59C 15C20007 */ bne $t6, $v0, .L7F04B5BC +/* 0800D0 7F04B5A0 3C198004 */ lui $t9, %hi(prop_console_four_screen_related) +/* 0800D4 7F04B5A4 8C8F0008 */ lw $t7, 8($a0) +/* 0800D8 7F04B5A8 8DF80000 */ lw $t8, ($t7) +/* 0800DC 7F04B5AC 14B80003 */ bne $a1, $t8, .L7F04B5BC +/* 0800E0 7F04B5B0 00000000 */ nop +/* 0800E4 7F04B5B4 03E00008 */ jr $ra +/* 0800E8 7F04B5B8 00001025 */ move $v0, $zero + +.L7F04B5BC: +/* 0800EC 7F04B5BC 2739A084 */ addiu $t9, $t9, %lo(prop_console_four_screen_related) +/* 0800F0 7F04B5C0 57220011 */ bnel $t9, $v0, .L7F04B608 +/* 0800F4 7F04B5C4 24020001 */ li $v0, 1 +/* 0800F8 7F04B5C8 8C820008 */ lw $v0, 8($a0) +/* 0800FC 7F04B5CC 8C480000 */ lw $t0, ($v0) +/* 080100 7F04B5D0 10A8000A */ beq $a1, $t0, .L7F04B5FC +/* 080104 7F04B5D4 00000000 */ nop +/* 080108 7F04B5D8 8C490004 */ lw $t1, 4($v0) +/* 08010C 7F04B5DC 10A90007 */ beq $a1, $t1, .L7F04B5FC +/* 080110 7F04B5E0 00000000 */ nop +/* 080114 7F04B5E4 8C4A0008 */ lw $t2, 8($v0) +/* 080118 7F04B5E8 10AA0004 */ beq $a1, $t2, .L7F04B5FC +/* 08011C 7F04B5EC 00000000 */ nop +/* 080120 7F04B5F0 8C4B000C */ lw $t3, 0xc($v0) +/* 080124 7F04B5F4 54AB0004 */ bnel $a1, $t3, .L7F04B608 +/* 080128 7F04B5F8 24020001 */ li $v0, 1 +.L7F04B5FC: +/* 08012C 7F04B5FC 03E00008 */ jr $ra +/* 080130 7F04B600 00001025 */ move $v0, $zero + +/* 080134 7F04B604 24020001 */ li $v0, 1 +.L7F04B608: +/* 080138 7F04B608 03E00008 */ jr $ra +/* 08013C 7F04B60C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04B610(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04B610 +/* 080140 7F04B610 27BDFF68 */ addiu $sp, $sp, -0x98 +/* 080144 7F04B614 AFB60030 */ sw $s6, 0x30($sp) +/* 080148 7F04B618 AFB40028 */ sw $s4, 0x28($sp) +/* 08014C 7F04B61C AFBF003C */ sw $ra, 0x3c($sp) +/* 080150 7F04B620 AFBE0038 */ sw $fp, 0x38($sp) +/* 080154 7F04B624 AFB70034 */ sw $s7, 0x34($sp) +/* 080158 7F04B628 AFB5002C */ sw $s5, 0x2c($sp) +/* 08015C 7F04B62C AFB30024 */ sw $s3, 0x24($sp) +/* 080160 7F04B630 AFB20020 */ sw $s2, 0x20($sp) +/* 080164 7F04B634 AFB1001C */ sw $s1, 0x1c($sp) +/* 080168 7F04B638 AFB00018 */ sw $s0, 0x18($sp) +/* 08016C 7F04B63C 3C14FFFE */ lui $s4, (0xFFFE7961 >> 16) # lui $s4, 0xfffe +/* 080170 7F04B640 3C160001 */ li $s6, 0x00010000 # 0.000000 +/* 080174 7F04B644 00A08025 */ move $s0, $a1 +/* 080178 7F04B648 0080F025 */ move $fp, $a0 +/* 08017C 7F04B64C 8C910014 */ lw $s1, 0x14($a0) +/* 080180 7F04B650 36D6869F */ ori $s6, (0x0001869F & 0xFFFF) # ori $s6, $s6, 0x869f +/* 080184 7F04B654 0FC12D1E */ jal sub_GAME_7F04B478 +/* 080188 7F04B658 36947961 */ ori $s4, (0xFFFE7961 & 0xFFFF) # ori $s4, $s4, 0x7961 +/* 08018C 7F04B65C 10400193 */ beqz $v0, .L7F04BCAC +/* 080190 7F04B660 00402825 */ move $a1, $v0 +/* 080194 7F04B664 8C550004 */ lw $s5, 4($v0) +/* 080198 7F04B668 52A00191 */ beql $s5, $zero, .L7F04BCB0 +/* 08019C 7F04B66C 8FBF003C */ lw $ra, 0x3c($sp) +/* 0801A0 7F04B670 8FCE0014 */ lw $t6, 0x14($fp) +/* 0801A4 7F04B674 0FC12D64 */ jal sub_GAME_7F04B590 +/* 0801A8 7F04B678 8DC40008 */ lw $a0, 8($t6) +/* 0801AC 7F04B67C 5040018C */ beql $v0, $zero, .L7F04BCB0 +/* 0801B0 7F04B680 8FBF003C */ lw $ra, 0x3c($sp) +/* 0801B4 7F04B684 96B8001A */ lhu $t8, 0x1a($s5) +/* 0801B8 7F04B688 8E2F0010 */ lw $t7, 0x10($s1) +/* 0801BC 7F04B68C 0018C880 */ sll $t9, $t8, 2 +/* 0801C0 7F04B690 0C002914 */ jal get_random_value +/* 0801C4 7F04B694 01F99821 */ addu $s3, $t7, $t9 +/* 0801C8 7F04B698 30480001 */ andi $t0, $v0, 1 +/* 0801CC 7F04B69C 1100000C */ beqz $t0, .L7F04B6D0 +/* 0801D0 7F04B6A0 00104840 */ sll $t1, $s0, 1 +/* 0801D4 7F04B6A4 AFA90040 */ sw $t1, 0x40($sp) +/* 0801D8 7F04B6A8 87CA0004 */ lh $t2, 4($fp) +/* 0801DC 7F04B6AC 3C0E8004 */ lui $t6, %hi(object_explosion_details+2) +/* 0801E0 7F04B6B0 000A58C0 */ sll $t3, $t2, 3 +/* 0801E4 7F04B6B4 016A5823 */ subu $t3, $t3, $t2 +/* 0801E8 7F04B6B8 000B5840 */ sll $t3, $t3, 1 +/* 0801EC 7F04B6BC 01696821 */ addu $t5, $t3, $t1 +/* 0801F0 7F04B6C0 01CD7021 */ addu $t6, $t6, $t5 +/* 0801F4 7F04B6C4 95CEB226 */ lhu $t6, %lo(object_explosion_details+2)($t6) +/* 0801F8 7F04B6C8 1000000C */ b .L7F04B6FC +/* 0801FC 7F04B6CC AFAE0078 */ sw $t6, 0x78($sp) +.L7F04B6D0: +/* 080200 7F04B6D0 87D80004 */ lh $t8, 4($fp) +/* 080204 7F04B6D4 00101040 */ sll $v0, $s0, 1 +/* 080208 7F04B6D8 3C088004 */ lui $t0, %hi(object_explosion_details+8) +/* 08020C 7F04B6DC 001878C0 */ sll $t7, $t8, 3 +/* 080210 7F04B6E0 01F87823 */ subu $t7, $t7, $t8 +/* 080214 7F04B6E4 000F7840 */ sll $t7, $t7, 1 +/* 080218 7F04B6E8 01E2C821 */ addu $t9, $t7, $v0 +/* 08021C 7F04B6EC 01194021 */ addu $t0, $t0, $t9 +/* 080220 7F04B6F0 9508B22C */ lhu $t0, %lo(object_explosion_details+8)($t0) +/* 080224 7F04B6F4 AFA20040 */ sw $v0, 0x40($sp) +/* 080228 7F04B6F8 AFA80078 */ sw $t0, 0x78($sp) +.L7F04B6FC: +/* 08022C 7F04B6FC 0FC243F1 */ jal get_debug_explosioninfo_flag +/* 080230 7F04B700 00000000 */ nop +/* 080234 7F04B704 14400003 */ bnez $v0, .L7F04B714 +/* 080238 7F04B708 8FA90078 */ lw $t1, 0x78($sp) +/* 08023C 7F04B70C 1520000B */ bnez $t1, .L7F04B73C +/* 080240 7F04B710 00000000 */ nop +.L7F04B714: +/* 080244 7F04B714 0FC243F1 */ jal get_debug_explosioninfo_flag +/* 080248 7F04B718 00000000 */ nop +/* 08024C 7F04B71C 0C002914 */ jal get_random_value +/* 080250 7F04B720 00000000 */ nop +/* 080254 7F04B724 0FC243F1 */ jal get_debug_explosioninfo_flag +/* 080258 7F04B728 AFA20078 */ sw $v0, 0x78($sp) +/* 08025C 7F04B72C 10400003 */ beqz $v0, .L7F04B73C +/* 080260 7F04B730 8FAA0078 */ lw $t2, 0x78($sp) +/* 080264 7F04B734 314BFFFF */ andi $t3, $t2, 0xffff +/* 080268 7F04B738 AFAB0078 */ sw $t3, 0x78($sp) +.L7F04B73C: +/* 08026C 7F04B73C 0FC28364 */ jal sub_GAME_7F0A0D90 +/* 080270 7F04B740 8FC40010 */ lw $a0, 0x10($fp) +/* 080274 7F04B744 87CC0004 */ lh $t4, 4($fp) +/* 080278 7F04B748 2401004C */ li $at, 76 +/* 08027C 7F04B74C 24170001 */ li $s7, 1 +/* 080280 7F04B750 15810003 */ bne $t4, $at, .L7F04B760 +/* 080284 7F04B754 00000000 */ nop +/* 080288 7F04B758 10000001 */ b .L7F04B760 +/* 08028C 7F04B75C 0000B825 */ move $s7, $zero +.L7F04B760: +/* 080290 7F04B760 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 080294 7F04B764 03C02025 */ move $a0, $fp +/* 080298 7F04B768 86A4000C */ lh $a0, 0xc($s5) +/* 08029C 7F04B76C 24050B0B */ li $a1, 2827 +/* 0802A0 7F04B770 8E260008 */ lw $a2, 8($s1) +/* 0802A4 7F04B774 0FC26F93 */ jal sub_GAME_7F09BE4C +/* 0802A8 7F04B778 00403825 */ move $a3, $v0 +/* 0802AC 7F04B77C 1040003A */ beqz $v0, .L7F04B868 +/* 0802B0 7F04B780 00408025 */ move $s0, $v0 +/* 0802B4 7F04B784 8E640000 */ lw $a0, ($s3) +/* 0802B8 7F04B788 8EAD0008 */ lw $t5, 8($s5) +/* 0802BC 7F04B78C 51A4001E */ beql $t5, $a0, .L7F04B808 +/* 0802C0 7F04B790 86AA000C */ lh $t2, 0xc($s5) +/* 0802C4 7F04B794 86AE000C */ lh $t6, 0xc($s5) +/* 0802C8 7F04B798 00009025 */ move $s2, $zero +/* 0802CC 7F04B79C 00008825 */ move $s1, $zero +/* 0802D0 7F04B7A0 19C00014 */ blez $t6, .L7F04B7F4 +/* 0802D4 7F04B7A4 00401825 */ move $v1, $v0 +/* 0802D8 7F04B7A8 8E780000 */ lw $t8, ($s3) +.L7F04B7AC: +/* 0802DC 7F04B7AC 26520001 */ addiu $s2, $s2, 1 +/* 0802E0 7F04B7B0 24630010 */ addiu $v1, $v1, 0x10 +/* 0802E4 7F04B7B4 03117821 */ addu $t7, $t8, $s1 +/* 0802E8 7F04B7B8 8DE10000 */ lw $at, ($t7) +/* 0802EC 7F04B7BC 26310010 */ addiu $s1, $s1, 0x10 +/* 0802F0 7F04B7C0 AC61FFF0 */ sw $at, -0x10($v1) +/* 0802F4 7F04B7C4 8DE80004 */ lw $t0, 4($t7) +/* 0802F8 7F04B7C8 AC68FFF4 */ sw $t0, -0xc($v1) +/* 0802FC 7F04B7CC 8DE10008 */ lw $at, 8($t7) +/* 080300 7F04B7D0 AC61FFF8 */ sw $at, -8($v1) +/* 080304 7F04B7D4 8DE8000C */ lw $t0, 0xc($t7) +/* 080308 7F04B7D8 AC68FFFC */ sw $t0, -4($v1) +/* 08030C 7F04B7DC 86A9000C */ lh $t1, 0xc($s5) +/* 080310 7F04B7E0 0249082A */ slt $at, $s2, $t1 +/* 080314 7F04B7E4 5420FFF1 */ bnezl $at, .L7F04B7AC +/* 080318 7F04B7E8 8E780000 */ lw $t8, ($s3) +/* 08031C 7F04B7EC 8E640000 */ lw $a0, ($s3) +/* 080320 7F04B7F0 00009025 */ move $s2, $zero +.L7F04B7F4: +/* 080324 7F04B7F4 0FC27011 */ jal sub_GAME_7F09C044 +/* 080328 7F04B7F8 00000000 */ nop +/* 08032C 7F04B7FC 10000018 */ b .L7F04B860 +/* 080330 7F04B800 00000000 */ nop +/* 080334 7F04B804 86AA000C */ lh $t2, 0xc($s5) +.L7F04B808: +/* 080338 7F04B808 00009025 */ move $s2, $zero +/* 08033C 7F04B80C 00008825 */ move $s1, $zero +/* 080340 7F04B810 19400013 */ blez $t2, .L7F04B860 +/* 080344 7F04B814 00401825 */ move $v1, $v0 +/* 080348 7F04B818 8EAB0008 */ lw $t3, 8($s5) +.L7F04B81C: +/* 08034C 7F04B81C 26520001 */ addiu $s2, $s2, 1 +/* 080350 7F04B820 24630010 */ addiu $v1, $v1, 0x10 +/* 080354 7F04B824 01716021 */ addu $t4, $t3, $s1 +/* 080358 7F04B828 8D810000 */ lw $at, ($t4) +/* 08035C 7F04B82C 26310010 */ addiu $s1, $s1, 0x10 +/* 080360 7F04B830 AC61FFF0 */ sw $at, -0x10($v1) +/* 080364 7F04B834 8D8E0004 */ lw $t6, 4($t4) +/* 080368 7F04B838 AC6EFFF4 */ sw $t6, -0xc($v1) +/* 08036C 7F04B83C 8D810008 */ lw $at, 8($t4) +/* 080370 7F04B840 AC61FFF8 */ sw $at, -8($v1) +/* 080374 7F04B844 8D8E000C */ lw $t6, 0xc($t4) +/* 080378 7F04B848 AC6EFFFC */ sw $t6, -4($v1) +/* 08037C 7F04B84C 86B8000C */ lh $t8, 0xc($s5) +/* 080380 7F04B850 0258082A */ slt $at, $s2, $t8 +/* 080384 7F04B854 5420FFF1 */ bnezl $at, .L7F04B81C +/* 080388 7F04B858 8EAB0008 */ lw $t3, 8($s5) +/* 08038C 7F04B85C 00009025 */ move $s2, $zero +.L7F04B860: +/* 080390 7F04B860 10000036 */ b .L7F04B93C +/* 080394 7F04B864 AE700000 */ sw $s0, ($s3) +.L7F04B868: +/* 080398 7F04B868 8E640000 */ lw $a0, ($s3) +/* 08039C 7F04B86C 8EB90008 */ lw $t9, 8($s5) +/* 0803A0 7F04B870 13240008 */ beq $t9, $a0, .L7F04B894 +/* 0803A4 7F04B874 00000000 */ nop +/* 0803A8 7F04B878 0FC27011 */ jal sub_GAME_7F09C044 +/* 0803AC 7F04B87C 00000000 */ nop +/* 0803B0 7F04B880 8EAF0008 */ lw $t7, 8($s5) +/* 0803B4 7F04B884 AE6F0000 */ sw $t7, ($s3) +/* 0803B8 7F04B888 8FC80064 */ lw $t0, 0x64($fp) +/* 0803BC 7F04B88C 35090004 */ ori $t1, $t0, 4 +/* 0803C0 7F04B890 AFC90064 */ sw $t1, 0x64($fp) +.L7F04B894: +/* 0803C4 7F04B894 3C018005 */ lui $at, %hi(D_80052CB4) +/* 0803C8 7F04B898 C4202CB4 */ lwc1 $f0, %lo(D_80052CB4)($at) +/* 0803CC 7F04B89C C7C40028 */ lwc1 $f4, 0x28($fp) +/* 0803D0 7F04B8A0 C7C8002C */ lwc1 $f8, 0x2c($fp) +/* 0803D4 7F04B8A4 C7D00030 */ lwc1 $f16, 0x30($fp) +/* 0803D8 7F04B8A8 46002182 */ mul.s $f6, $f4, $f0 +/* 0803DC 7F04B8AC 00000000 */ nop +/* 0803E0 7F04B8B0 46004282 */ mul.s $f10, $f8, $f0 +/* 0803E4 7F04B8B4 00000000 */ nop +/* 0803E8 7F04B8B8 46008482 */ mul.s $f18, $f16, $f0 +/* 0803EC 7F04B8BC E7C60028 */ swc1 $f6, 0x28($fp) +/* 0803F0 7F04B8C0 E7CA002C */ swc1 $f10, 0x2c($fp) +/* 0803F4 7F04B8C4 12E000F9 */ beqz $s7, .L7F04BCAC +/* 0803F8 7F04B8C8 E7D20030 */ swc1 $f18, 0x30($fp) +/* 0803FC 7F04B8CC 8FC20014 */ lw $v0, 0x14($fp) +/* 080400 7F04B8D0 C4440014 */ lwc1 $f4, 0x14($v0) +/* 080404 7F04B8D4 8C440008 */ lw $a0, 8($v0) +/* 080408 7F04B8D8 0FC0FFFE */ jal sub_GAME_7F03FFF8 +/* 08040C 7F04B8DC E7A4005C */ swc1 $f4, 0x5c($sp) +/* 080410 7F04B8E0 00408025 */ move $s0, $v0 +/* 080414 7F04B8E4 0FC0FA19 */ jal sub_GAME_7F03E864 +/* 080418 7F04B8E8 00402025 */ move $a0, $v0 +/* 08041C 7F04B8EC C7A6005C */ lwc1 $f6, 0x5c($sp) +/* 080420 7F04B8F0 3C018005 */ lui $at, %hi(D_80052CB8) +/* 080424 7F04B8F4 C42A2CB8 */ lwc1 $f10, %lo(D_80052CB8)($at) +/* 080428 7F04B8F8 46003202 */ mul.s $f8, $f6, $f0 +/* 08042C 7F04B8FC 8FC20010 */ lw $v0, 0x10($fp) +/* 080430 7F04B900 02002025 */ move $a0, $s0 +/* 080434 7F04B904 C452000C */ lwc1 $f18, 0xc($v0) +/* 080438 7F04B908 460A4402 */ mul.s $f16, $f8, $f10 +/* 08043C 7F04B90C 46109100 */ add.s $f4, $f18, $f16 +/* 080440 7F04B910 0FC0FA19 */ jal sub_GAME_7F03E864 +/* 080444 7F04B914 E444000C */ swc1 $f4, 0xc($v0) +/* 080448 7F04B918 C7A6005C */ lwc1 $f6, 0x5c($sp) +/* 08044C 7F04B91C 3C018005 */ lui $at, %hi(D_80052CBC) +/* 080450 7F04B920 C42A2CBC */ lwc1 $f10, %lo(D_80052CBC)($at) +/* 080454 7F04B924 46003202 */ mul.s $f8, $f6, $f0 +/* 080458 7F04B928 C7D0005C */ lwc1 $f16, 0x5c($fp) +/* 08045C 7F04B92C 460A4482 */ mul.s $f18, $f8, $f10 +/* 080460 7F04B930 46128100 */ add.s $f4, $f16, $f18 +/* 080464 7F04B934 100000DD */ b .L7F04BCAC +/* 080468 7F04B938 E7C4005C */ swc1 $f4, 0x5c($fp) +.L7F04B93C: +/* 08046C 7F04B93C 87C20004 */ lh $v0, 4($fp) +/* 080470 7F04B940 24010026 */ li $at, 38 +/* 080474 7F04B944 00008825 */ move $s1, $zero +/* 080478 7F04B948 10410005 */ beq $v0, $at, .L7F04B960 +/* 08047C 7F04B94C 24010027 */ li $at, 39 +/* 080480 7F04B950 10410003 */ beq $v0, $at, .L7F04B960 +/* 080484 7F04B954 24010055 */ li $at, 85 +/* 080488 7F04B958 14410003 */ bne $v0, $at, .L7F04B968 +/* 08048C 7F04B95C 240A0001 */ li $t2, 1 +.L7F04B960: +/* 080490 7F04B960 10000002 */ b .L7F04B96C +/* 080494 7F04B964 AFA00070 */ sw $zero, 0x70($sp) +.L7F04B968: +/* 080498 7F04B968 AFAA0070 */ sw $t2, 0x70($sp) +.L7F04B96C: +/* 08049C 7F04B96C 86A4000C */ lh $a0, 0xc($s5) +/* 0804A0 7F04B970 8FA50040 */ lw $a1, 0x40($sp) +/* 0804A4 7F04B974 18800010 */ blez $a0, .L7F04B9B8 +/* 0804A8 7F04B978 00041900 */ sll $v1, $a0, 4 +/* 0804AC 7F04B97C 8E700000 */ lw $s0, ($s3) +.L7F04B980: +/* 0804B0 7F04B980 86020002 */ lh $v0, 2($s0) +/* 0804B4 7F04B984 26310010 */ addiu $s1, $s1, 0x10 +/* 0804B8 7F04B988 0056082A */ slt $at, $v0, $s6 +/* 0804BC 7F04B98C 50200003 */ beql $at, $zero, .L7F04B99C +/* 0804C0 7F04B990 0282082A */ slt $at, $s4, $v0 +/* 0804C4 7F04B994 0040B025 */ move $s6, $v0 +/* 0804C8 7F04B998 0282082A */ slt $at, $s4, $v0 +.L7F04B99C: +/* 0804CC 7F04B99C 50200003 */ beql $at, $zero, .L7F04B9AC +/* 0804D0 7F04B9A0 0223082A */ slt $at, $s1, $v1 +/* 0804D4 7F04B9A4 0040A025 */ move $s4, $v0 +/* 0804D8 7F04B9A8 0223082A */ slt $at, $s1, $v1 +.L7F04B9AC: +/* 0804DC 7F04B9AC 1420FFF4 */ bnez $at, .L7F04B980 +/* 0804E0 7F04B9B0 26100010 */ addiu $s0, $s0, 0x10 +/* 0804E4 7F04B9B4 00009025 */ move $s2, $zero +.L7F04B9B8: +/* 0804E8 7F04B9B8 02D41021 */ addu $v0, $s6, $s4 +/* 0804EC 7F04B9BC 00025843 */ sra $t3, $v0, 1 +/* 0804F0 7F04B9C0 24010006 */ li $at, 6 +/* 0804F4 7F04B9C4 14A10006 */ bne $a1, $at, .L7F04B9E0 +/* 0804F8 7F04B9C8 01601825 */ move $v1, $t3 +/* 0804FC 7F04B9CC 01766823 */ subu $t5, $t3, $s6 +/* 080500 7F04B9D0 29A10029 */ slti $at, $t5, 0x29 +/* 080504 7F04B9D4 54200003 */ bnezl $at, .L7F04B9E4 +/* 080508 7F04B9D8 02961023 */ subu $v0, $s4, $s6 +/* 08050C 7F04B9DC 26C30028 */ addiu $v1, $s6, 0x28 +.L7F04B9E0: +/* 080510 7F04B9E0 02961023 */ subu $v0, $s4, $s6 +.L7F04B9E4: +/* 080514 7F04B9E4 2841003D */ slti $at, $v0, 0x3d +/* 080518 7F04B9E8 1420000E */ bnez $at, .L7F04BA24 +/* 08051C 7F04B9EC 28A10006 */ slti $at, $a1, 6 +/* 080520 7F04B9F0 10200005 */ beqz $at, .L7F04BA08 +/* 080524 7F04B9F4 244CFFC4 */ addiu $t4, $v0, -0x3c +/* 080528 7F04B9F8 3C018005 */ lui $at, %hi(D_80052CC0) +/* 08052C 7F04B9FC C4262CC0 */ lwc1 $f6, %lo(D_80052CC0)($at) +/* 080530 7F04BA00 1000000C */ b .L7F04BA34 +/* 080534 7F04BA04 E7A60068 */ swc1 $f6, 0x68($sp) +.L7F04BA08: +/* 080538 7F04BA08 448C4000 */ mtc1 $t4, $f8 +/* 08053C 7F04BA0C 44828000 */ mtc1 $v0, $f16 +/* 080540 7F04BA10 468042A0 */ cvt.s.w $f10, $f8 +/* 080544 7F04BA14 468084A0 */ cvt.s.w $f18, $f16 +/* 080548 7F04BA18 46125103 */ div.s $f4, $f10, $f18 +/* 08054C 7F04BA1C 10000005 */ b .L7F04BA34 +/* 080550 7F04BA20 E7A40068 */ swc1 $f4, 0x68($sp) +.L7F04BA24: +/* 080554 7F04BA24 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 080558 7F04BA28 44813000 */ mtc1 $at, $f6 +/* 08055C 7F04BA2C 00000000 */ nop +/* 080560 7F04BA30 E7A60068 */ swc1 $f6, 0x68($sp) +.L7F04BA34: +/* 080564 7F04BA34 5880009E */ blezl $a0, .L7F04BCB0 +/* 080568 7F04BA38 8FBF003C */ lw $ra, 0x3c($sp) +/* 08056C 7F04BA3C 44964000 */ mtc1 $s6, $f8 +/* 080570 7F04BA40 00008825 */ move $s1, $zero +/* 080574 7F04BA44 AFA3007C */ sw $v1, 0x7c($sp) +/* 080578 7F04BA48 46804420 */ cvt.s.w $f16, $f8 +/* 08057C 7F04BA4C 24140050 */ li $s4, 80 +/* 080580 7F04BA50 E7B00044 */ swc1 $f16, 0x44($sp) +/* 080584 7F04BA54 8EAE0008 */ lw $t6, 8($s5) +.L7F04BA58: +/* 080588 7F04BA58 8FAA0078 */ lw $t2, 0x78($sp) +/* 08058C 7F04BA5C 01D11021 */ addu $v0, $t6, $s1 +/* 080590 7F04BA60 84580004 */ lh $t8, 4($v0) +/* 080594 7F04BA64 84590000 */ lh $t9, ($v0) +/* 080598 7F04BA68 84480002 */ lh $t0, 2($v0) +/* 08059C 7F04BA6C 03197821 */ addu $t7, $t8, $t9 +/* 0805A0 7F04BA70 01E84821 */ addu $t1, $t7, $t0 +/* 0805A4 7F04BA74 0FC26DE2 */ jal sub_GAME_7F09B788 +/* 0805A8 7F04BA78 012A2021 */ addu $a0, $t1, $t2 +/* 0805AC 7F04BA7C 8FAB0070 */ lw $t3, 0x70($sp) +/* 0805B0 7F04BA80 00008025 */ move $s0, $zero +/* 0805B4 7F04BA84 1160002E */ beqz $t3, .L7F04BB40 +/* 0805B8 7F04BA88 00000000 */ nop +/* 0805BC 7F04BA8C C7CA002C */ lwc1 $f10, 0x2c($fp) +/* 0805C0 7F04BA90 44809000 */ mtc1 $zero, $f18 +/* 0805C4 7F04BA94 00000000 */ nop +/* 0805C8 7F04BA98 460A903E */ c.le.s $f18, $f10 +/* 0805CC 7F04BA9C 00000000 */ nop +/* 0805D0 7F04BAA0 45020015 */ bc1fl .L7F04BAF8 +/* 0805D4 7F04BAA4 8E6F0000 */ lw $t7, ($s3) +/* 0805D8 7F04BAA8 8E6D0000 */ lw $t5, ($s3) +/* 0805DC 7F04BAAC 8FB8007C */ lw $t8, 0x7c($sp) +/* 0805E0 7F04BAB0 01B16021 */ addu $t4, $t5, $s1 +/* 0805E4 7F04BAB4 858E0002 */ lh $t6, 2($t4) +/* 0805E8 7F04BAB8 01D8082A */ slt $at, $t6, $t8 +/* 0805EC 7F04BABC 14200007 */ bnez $at, .L7F04BADC +/* 0805F0 7F04BAC0 00000000 */ nop +/* 0805F4 7F04BAC4 12E00003 */ beqz $s7, .L7F04BAD4 +/* 0805F8 7F04BAC8 00000000 */ nop +/* 0805FC 7F04BACC 1000001C */ b .L7F04BB40 +/* 080600 7F04BAD0 2410005A */ li $s0, 90 +.L7F04BAD4: +/* 080604 7F04BAD4 1000001A */ b .L7F04BB40 +/* 080608 7F04BAD8 24100014 */ li $s0, 20 +.L7F04BADC: +/* 08060C 7F04BADC 12E00003 */ beqz $s7, .L7F04BAEC +/* 080610 7F04BAE0 00000000 */ nop +/* 080614 7F04BAE4 10000016 */ b .L7F04BB40 +/* 080618 7F04BAE8 24100014 */ li $s0, 20 +.L7F04BAEC: +/* 08061C 7F04BAEC 10000014 */ b .L7F04BB40 +/* 080620 7F04BAF0 2410005A */ li $s0, 90 +/* 080624 7F04BAF4 8E6F0000 */ lw $t7, ($s3) +.L7F04BAF8: +/* 080628 7F04BAF8 8FB9007C */ lw $t9, 0x7c($sp) +/* 08062C 7F04BAFC 01F14021 */ addu $t0, $t7, $s1 +/* 080630 7F04BB00 85090002 */ lh $t1, 2($t0) +/* 080634 7F04BB04 0329082A */ slt $at, $t9, $t1 +/* 080638 7F04BB08 14200007 */ bnez $at, .L7F04BB28 +/* 08063C 7F04BB0C 00000000 */ nop +/* 080640 7F04BB10 12E00003 */ beqz $s7, .L7F04BB20 +/* 080644 7F04BB14 00000000 */ nop +/* 080648 7F04BB18 10000009 */ b .L7F04BB40 +/* 08064C 7F04BB1C 2410005A */ li $s0, 90 +.L7F04BB20: +/* 080650 7F04BB20 10000007 */ b .L7F04BB40 +/* 080654 7F04BB24 24100014 */ li $s0, 20 +.L7F04BB28: +/* 080658 7F04BB28 12E00003 */ beqz $s7, .L7F04BB38 +/* 08065C 7F04BB2C 00000000 */ nop +/* 080660 7F04BB30 10000003 */ b .L7F04BB40 +/* 080664 7F04BB34 24100014 */ li $s0, 20 +.L7F04BB38: +/* 080668 7F04BB38 10000001 */ b .L7F04BB40 +/* 08066C 7F04BB3C 2410005A */ li $s0, 90 +.L7F04BB40: +/* 080670 7F04BB40 0FC26DD0 */ jal sub_GAME_7F09B740 +/* 080674 7F04BB44 00000000 */ nop +/* 080678 7F04BB48 24010064 */ li $at, 100 +/* 08067C 7F04BB4C 0041001B */ divu $zero, $v0, $at +/* 080680 7F04BB50 00005010 */ mfhi $t2 +/* 080684 7F04BB54 0150082A */ slt $at, $t2, $s0 +/* 080688 7F04BB58 1020000F */ beqz $at, .L7F04BB98 +/* 08068C 7F04BB5C 8FAA0040 */ lw $t2, 0x40($sp) +/* 080690 7F04BB60 8E6B0000 */ lw $t3, ($s3) +/* 080694 7F04BB64 240800FF */ li $t0, 255 +/* 080698 7F04BB68 01716821 */ addu $t5, $t3, $s1 +/* 08069C 7F04BB6C A1A0000C */ sb $zero, 0xc($t5) +/* 0806A0 7F04BB70 8E6C0000 */ lw $t4, ($s3) +/* 0806A4 7F04BB74 01917021 */ addu $t6, $t4, $s1 +/* 0806A8 7F04BB78 A1C0000D */ sb $zero, 0xd($t6) +/* 0806AC 7F04BB7C 8E780000 */ lw $t8, ($s3) +/* 0806B0 7F04BB80 03117821 */ addu $t7, $t8, $s1 +/* 0806B4 7F04BB84 A1E0000E */ sb $zero, 0xe($t7) +/* 0806B8 7F04BB88 8E790000 */ lw $t9, ($s3) +/* 0806BC 7F04BB8C 03314821 */ addu $t1, $t9, $s1 +/* 0806C0 7F04BB90 10000007 */ b .L7F04BBB0 +/* 0806C4 7F04BB94 A128000F */ sb $t0, 0xf($t1) +.L7F04BB98: +/* 0806C8 7F04BB98 24010002 */ li $at, 2 +/* 0806CC 7F04BB9C 55410005 */ bnel $t2, $at, .L7F04BBB4 +/* 0806D0 7F04BBA0 8E6C0000 */ lw $t4, ($s3) +/* 0806D4 7F04BBA4 8E6B0000 */ lw $t3, ($s3) +/* 0806D8 7F04BBA8 01716821 */ addu $t5, $t3, $s1 +/* 0806DC 7F04BBAC A1A0000F */ sb $zero, 0xf($t5) +.L7F04BBB0: +/* 0806E0 7F04BBB0 8E6C0000 */ lw $t4, ($s3) +.L7F04BBB4: +/* 0806E4 7F04BBB4 C7A80068 */ lwc1 $f8, 0x68($sp) +/* 0806E8 7F04BBB8 C7AA0044 */ lwc1 $f10, 0x44($sp) +/* 0806EC 7F04BBBC 01918021 */ addu $s0, $t4, $s1 +/* 0806F0 7F04BBC0 860E0002 */ lh $t6, 2($s0) +/* 0806F4 7F04BBC4 01D6C023 */ subu $t8, $t6, $s6 +/* 0806F8 7F04BBC8 44982000 */ mtc1 $t8, $f4 +/* 0806FC 7F04BBCC 00000000 */ nop +/* 080700 7F04BBD0 468021A0 */ cvt.s.w $f6, $f4 +/* 080704 7F04BBD4 46083402 */ mul.s $f16, $f6, $f8 +/* 080708 7F04BBD8 460A8480 */ add.s $f18, $f16, $f10 +/* 08070C 7F04BBDC 4600910D */ trunc.w.s $f4, $f18 +/* 080710 7F04BBE0 44192000 */ mfc1 $t9, $f4 +/* 080714 7F04BBE4 0FC26DD0 */ jal sub_GAME_7F09B740 +/* 080718 7F04BBE8 A6190002 */ sh $t9, 2($s0) +/* 08071C 7F04BBEC 0054001B */ divu $zero, $v0, $s4 +/* 080720 7F04BBF0 8E680000 */ lw $t0, ($s3) +/* 080724 7F04BBF4 00005010 */ mfhi $t2 +/* 080728 7F04BBF8 01118021 */ addu $s0, $t0, $s1 +/* 08072C 7F04BBFC 86090000 */ lh $t1, ($s0) +/* 080730 7F04BC00 16800002 */ bnez $s4, .L7F04BC0C +/* 080734 7F04BC04 00000000 */ nop +/* 080738 7F04BC08 0007000D */ break 7 +.L7F04BC0C: +/* 08073C 7F04BC0C 012A5821 */ addu $t3, $t1, $t2 +/* 080740 7F04BC10 256DFFD8 */ addiu $t5, $t3, -0x28 +/* 080744 7F04BC14 0FC26DD0 */ jal sub_GAME_7F09B740 +/* 080748 7F04BC18 A60D0000 */ sh $t5, ($s0) +/* 08074C 7F04BC1C 0054001B */ divu $zero, $v0, $s4 +/* 080750 7F04BC20 8E6C0000 */ lw $t4, ($s3) +/* 080754 7F04BC24 0000C010 */ mfhi $t8 +/* 080758 7F04BC28 01918021 */ addu $s0, $t4, $s1 +/* 08075C 7F04BC2C 860E0002 */ lh $t6, 2($s0) +/* 080760 7F04BC30 16800002 */ bnez $s4, .L7F04BC3C +/* 080764 7F04BC34 00000000 */ nop +/* 080768 7F04BC38 0007000D */ break 7 +.L7F04BC3C: +/* 08076C 7F04BC3C 01D87821 */ addu $t7, $t6, $t8 +/* 080770 7F04BC40 25F9FFD8 */ addiu $t9, $t7, -0x28 +/* 080774 7F04BC44 0FC26DD0 */ jal sub_GAME_7F09B740 +/* 080778 7F04BC48 A6190002 */ sh $t9, 2($s0) +/* 08077C 7F04BC4C 0054001B */ divu $zero, $v0, $s4 +/* 080780 7F04BC50 8E680000 */ lw $t0, ($s3) +/* 080784 7F04BC54 00005010 */ mfhi $t2 +/* 080788 7F04BC58 01118021 */ addu $s0, $t0, $s1 +/* 08078C 7F04BC5C 86090004 */ lh $t1, 4($s0) +/* 080790 7F04BC60 16800002 */ bnez $s4, .L7F04BC6C +/* 080794 7F04BC64 00000000 */ nop +/* 080798 7F04BC68 0007000D */ break 7 +.L7F04BC6C: +/* 08079C 7F04BC6C 012A5821 */ addu $t3, $t1, $t2 +/* 0807A0 7F04BC70 256DFFD8 */ addiu $t5, $t3, -0x28 +/* 0807A4 7F04BC74 A60D0004 */ sh $t5, 4($s0) +/* 0807A8 7F04BC78 8E6C0000 */ lw $t4, ($s3) +/* 0807AC 7F04BC7C 01918021 */ addu $s0, $t4, $s1 +/* 0807B0 7F04BC80 860E0002 */ lh $t6, 2($s0) +/* 0807B4 7F04BC84 01D6082A */ slt $at, $t6, $s6 +/* 0807B8 7F04BC88 50200003 */ beql $at, $zero, .L7F04BC98 +/* 0807BC 7F04BC8C 86B8000C */ lh $t8, 0xc($s5) +/* 0807C0 7F04BC90 A6160002 */ sh $s6, 2($s0) +/* 0807C4 7F04BC94 86B8000C */ lh $t8, 0xc($s5) +.L7F04BC98: +/* 0807C8 7F04BC98 26520001 */ addiu $s2, $s2, 1 +/* 0807CC 7F04BC9C 26310010 */ addiu $s1, $s1, 0x10 +/* 0807D0 7F04BCA0 0258082A */ slt $at, $s2, $t8 +/* 0807D4 7F04BCA4 5420FF6C */ bnezl $at, .L7F04BA58 +/* 0807D8 7F04BCA8 8EAE0008 */ lw $t6, 8($s5) +.L7F04BCAC: +/* 0807DC 7F04BCAC 8FBF003C */ lw $ra, 0x3c($sp) +.L7F04BCB0: +/* 0807E0 7F04BCB0 8FB00018 */ lw $s0, 0x18($sp) +/* 0807E4 7F04BCB4 8FB1001C */ lw $s1, 0x1c($sp) +/* 0807E8 7F04BCB8 8FB20020 */ lw $s2, 0x20($sp) +/* 0807EC 7F04BCBC 8FB30024 */ lw $s3, 0x24($sp) +/* 0807F0 7F04BCC0 8FB40028 */ lw $s4, 0x28($sp) +/* 0807F4 7F04BCC4 8FB5002C */ lw $s5, 0x2c($sp) +/* 0807F8 7F04BCC8 8FB60030 */ lw $s6, 0x30($sp) +/* 0807FC 7F04BCCC 8FB70034 */ lw $s7, 0x34($sp) +/* 080800 7F04BCD0 8FBE0038 */ lw $fp, 0x38($sp) +/* 080804 7F04BCD4 03E00008 */ jr $ra +/* 080808 7F04BCD8 27BD0098 */ addiu $sp, $sp, 0x98 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04BCDC(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052CC4 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052CC8 +.word 0x40555555 /*3.3333333*/ +glabel D_80052CCC +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052CD0 +.word 0x40555555 /*3.3333333*/ +glabel D_80052CD4 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052CD8 +.word 0x40555555 /*3.3333333*/ +glabel D_80052CDC +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052CE0 +.word 0x3d490fdb /*0.049087387*/ +glabel D_80052CE4 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052CE8 +.word 0x3d490fdb /*0.049087387*/ +glabel D_80052CEC +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052CF0 +.word 0x3d490fdb /*0.049087387*/ +glabel D_80052CF4 +.word 0x40555555 /*3.3333333*/ +.text +glabel sub_GAME_7F04BCDC +/* 08080C 7F04BCDC 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 080810 7F04BCE0 3C0F8003 */ lui $t7, %hi(D_80032010) +/* 080814 7F04BCE4 AFBF0024 */ sw $ra, 0x24($sp) +/* 080818 7F04BCE8 AFB00020 */ sw $s0, 0x20($sp) +/* 08081C 7F04BCEC F7B40018 */ sdc1 $f20, 0x18($sp) +/* 080820 7F04BCF0 AFA50054 */ sw $a1, 0x54($sp) +/* 080824 7F04BCF4 25EF2010 */ addiu $t7, %lo(D_80032010) # addiu $t7, $t7, 0x2010 +/* 080828 7F04BCF8 8DE10000 */ lw $at, ($t7) +/* 08082C 7F04BCFC 27AE0038 */ addiu $t6, $sp, 0x38 +/* 080830 7F04BD00 8DE80004 */ lw $t0, 4($t7) +/* 080834 7F04BD04 ADC10000 */ sw $at, ($t6) +/* 080838 7F04BD08 8DE10008 */ lw $at, 8($t7) +/* 08083C 7F04BD0C 00803025 */ move $a2, $a0 +/* 080840 7F04BD10 ADC80004 */ sw $t0, 4($t6) +/* 080844 7F04BD14 ADC10008 */ sw $at, 8($t6) +/* 080848 7F04BD18 8C840010 */ lw $a0, 0x10($a0) +/* 08084C 7F04BD1C 00008025 */ move $s0, $zero +/* 080850 7F04BD20 0FC0FF6A */ jal sub_GAME_7F03FDA8 +/* 080854 7F04BD24 AFA60050 */ sw $a2, 0x50($sp) +/* 080858 7F04BD28 8FA60050 */ lw $a2, 0x50($sp) +/* 08085C 7F04BD2C 8CC20064 */ lw $v0, 0x64($a2) +/* 080860 7F04BD30 30490040 */ andi $t1, $v0, 0x40 +/* 080864 7F04BD34 11200004 */ beqz $t1, .L7F04BD48 +/* 080868 7F04BD38 304B0080 */ andi $t3, $v0, 0x80 +/* 08086C 7F04BD3C 8CCA006C */ lw $t2, 0x6c($a2) +/* 080870 7F04BD40 10000004 */ b .L7F04BD54 +/* 080874 7F04BD44 8D500044 */ lw $s0, 0x44($t2) +.L7F04BD48: +/* 080878 7F04BD48 11600002 */ beqz $t3, .L7F04BD54 +/* 08087C 7F04BD4C 00000000 */ nop +/* 080880 7F04BD50 8CD0006C */ lw $s0, 0x6c($a2) +.L7F04BD54: +/* 080884 7F04BD54 5200009A */ beql $s0, $zero, .L7F04BFC0 +/* 080888 7F04BD58 8FBF0024 */ lw $ra, 0x24($sp) +/* 08088C 7F04BD5C 0C002914 */ jal get_random_value +/* 080890 7F04BD60 00000000 */ nop +/* 080894 7F04BD64 44822000 */ mtc1 $v0, $f4 +/* 080898 7F04BD68 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 08089C 7F04BD6C 4481A000 */ mtc1 $at, $f20 +/* 0808A0 7F04BD70 04410005 */ bgez $v0, .L7F04BD88 +/* 0808A4 7F04BD74 468021A0 */ cvt.s.w $f6, $f4 +/* 0808A8 7F04BD78 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 0808AC 7F04BD7C 44814000 */ mtc1 $at, $f8 +/* 0808B0 7F04BD80 00000000 */ nop +/* 0808B4 7F04BD84 46083180 */ add.s $f6, $f6, $f8 +.L7F04BD88: +/* 0808B8 7F04BD88 46143282 */ mul.s $f10, $f6, $f20 +/* 0808BC 7F04BD8C 3C018005 */ lui $at, %hi(D_80052CC4) +/* 0808C0 7F04BD90 C4302CC4 */ lwc1 $f16, %lo(D_80052CC4)($at) +/* 0808C4 7F04BD94 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 0808C8 7F04BD98 44812000 */ mtc1 $at, $f4 +/* 0808CC 7F04BD9C 3C018005 */ lui $at, %hi(D_80052CC8) +/* 0808D0 7F04BDA0 C4262CC8 */ lwc1 $f6, %lo(D_80052CC8)($at) +/* 0808D4 7F04BDA4 46105482 */ mul.s $f18, $f10, $f16 +/* 0808D8 7F04BDA8 00000000 */ nop +/* 0808DC 7F04BDAC 46049202 */ mul.s $f8, $f18, $f4 +/* 0808E0 7F04BDB0 46064281 */ sub.s $f10, $f8, $f6 +/* 0808E4 7F04BDB4 0C002914 */ jal get_random_value +/* 0808E8 7F04BDB8 E60A0004 */ swc1 $f10, 4($s0) +/* 0808EC 7F04BDBC 44828000 */ mtc1 $v0, $f16 +/* 0808F0 7F04BDC0 04410005 */ bgez $v0, .L7F04BDD8 +/* 0808F4 7F04BDC4 468084A0 */ cvt.s.w $f18, $f16 +/* 0808F8 7F04BDC8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 0808FC 7F04BDCC 44812000 */ mtc1 $at, $f4 +/* 080900 7F04BDD0 00000000 */ nop +/* 080904 7F04BDD4 46049480 */ add.s $f18, $f18, $f4 +.L7F04BDD8: +/* 080908 7F04BDD8 46149202 */ mul.s $f8, $f18, $f20 +/* 08090C 7F04BDDC 3C018005 */ lui $at, %hi(D_80052CCC) +/* 080910 7F04BDE0 C4262CCC */ lwc1 $f6, %lo(D_80052CCC)($at) +/* 080914 7F04BDE4 3C018005 */ lui $at, %hi(D_80052CD0) +/* 080918 7F04BDE8 C4302CD0 */ lwc1 $f16, %lo(D_80052CD0)($at) +/* 08091C 7F04BDEC 46064002 */ mul.s $f0, $f8, $f6 +/* 080920 7F04BDF0 46000280 */ add.s $f10, $f0, $f0 +/* 080924 7F04BDF4 46105100 */ add.s $f4, $f10, $f16 +/* 080928 7F04BDF8 0C002914 */ jal get_random_value +/* 08092C 7F04BDFC E6040008 */ swc1 $f4, 8($s0) +/* 080930 7F04BE00 44829000 */ mtc1 $v0, $f18 +/* 080934 7F04BE04 04410005 */ bgez $v0, .L7F04BE1C +/* 080938 7F04BE08 46809220 */ cvt.s.w $f8, $f18 +/* 08093C 7F04BE0C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080940 7F04BE10 44813000 */ mtc1 $at, $f6 +/* 080944 7F04BE14 00000000 */ nop +/* 080948 7F04BE18 46064200 */ add.s $f8, $f8, $f6 +.L7F04BE1C: +/* 08094C 7F04BE1C 46144282 */ mul.s $f10, $f8, $f20 +/* 080950 7F04BE20 3C018005 */ lui $at, %hi(D_80052CD4) +/* 080954 7F04BE24 C4302CD4 */ lwc1 $f16, %lo(D_80052CD4)($at) +/* 080958 7F04BE28 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 08095C 7F04BE2C 44819000 */ mtc1 $at, $f18 +/* 080960 7F04BE30 3C018005 */ lui $at, %hi(D_80052CD8) +/* 080964 7F04BE34 C4282CD8 */ lwc1 $f8, %lo(D_80052CD8)($at) +/* 080968 7F04BE38 46105102 */ mul.s $f4, $f10, $f16 +/* 08096C 7F04BE3C 00000000 */ nop +/* 080970 7F04BE40 46122182 */ mul.s $f6, $f4, $f18 +/* 080974 7F04BE44 46083281 */ sub.s $f10, $f6, $f8 +/* 080978 7F04BE48 0C002914 */ jal get_random_value +/* 08097C 7F04BE4C E60A000C */ swc1 $f10, 0xc($s0) +/* 080980 7F04BE50 44828000 */ mtc1 $v0, $f16 +/* 080984 7F04BE54 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080988 7F04BE58 04410004 */ bgez $v0, .L7F04BE6C +/* 08098C 7F04BE5C 46808120 */ cvt.s.w $f4, $f16 +/* 080990 7F04BE60 44819000 */ mtc1 $at, $f18 +/* 080994 7F04BE64 00000000 */ nop +/* 080998 7F04BE68 46122100 */ add.s $f4, $f4, $f18 +.L7F04BE6C: +/* 08099C 7F04BE6C 46142182 */ mul.s $f6, $f4, $f20 +/* 0809A0 7F04BE70 3C018005 */ lui $at, %hi(D_80052CDC) +/* 0809A4 7F04BE74 C4282CDC */ lwc1 $f8, %lo(D_80052CDC)($at) +/* 0809A8 7F04BE78 3C013C80 */ li $at, 0x3C800000 # 0.015625 +/* 0809AC 7F04BE7C 44818000 */ mtc1 $at, $f16 +/* 0809B0 7F04BE80 3C018005 */ lui $at, %hi(D_80052CE0) +/* 0809B4 7F04BE84 C4242CE0 */ lwc1 $f4, %lo(D_80052CE0)($at) +/* 0809B8 7F04BE88 46083282 */ mul.s $f10, $f6, $f8 +/* 0809BC 7F04BE8C 00000000 */ nop +/* 0809C0 7F04BE90 46105482 */ mul.s $f18, $f10, $f16 +/* 0809C4 7F04BE94 46049181 */ sub.s $f6, $f18, $f4 +/* 0809C8 7F04BE98 0C002914 */ jal get_random_value +/* 0809CC 7F04BE9C E7A60038 */ swc1 $f6, 0x38($sp) +/* 0809D0 7F04BEA0 44824000 */ mtc1 $v0, $f8 +/* 0809D4 7F04BEA4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 0809D8 7F04BEA8 04410004 */ bgez $v0, .L7F04BEBC +/* 0809DC 7F04BEAC 468042A0 */ cvt.s.w $f10, $f8 +/* 0809E0 7F04BEB0 44818000 */ mtc1 $at, $f16 +/* 0809E4 7F04BEB4 00000000 */ nop +/* 0809E8 7F04BEB8 46105280 */ add.s $f10, $f10, $f16 +.L7F04BEBC: +/* 0809EC 7F04BEBC 46145482 */ mul.s $f18, $f10, $f20 +/* 0809F0 7F04BEC0 3C018005 */ lui $at, %hi(D_80052CE4) +/* 0809F4 7F04BEC4 C4242CE4 */ lwc1 $f4, %lo(D_80052CE4)($at) +/* 0809F8 7F04BEC8 3C013C80 */ li $at, 0x3C800000 # 0.015625 +/* 0809FC 7F04BECC 44814000 */ mtc1 $at, $f8 +/* 080A00 7F04BED0 3C018005 */ lui $at, %hi(D_80052CE8) +/* 080A04 7F04BED4 C42A2CE8 */ lwc1 $f10, %lo(D_80052CE8)($at) +/* 080A08 7F04BED8 46049182 */ mul.s $f6, $f18, $f4 +/* 080A0C 7F04BEDC 00000000 */ nop +/* 080A10 7F04BEE0 46083402 */ mul.s $f16, $f6, $f8 +/* 080A14 7F04BEE4 460A8481 */ sub.s $f18, $f16, $f10 +/* 080A18 7F04BEE8 0C002914 */ jal get_random_value +/* 080A1C 7F04BEEC E7B2003C */ swc1 $f18, 0x3c($sp) +/* 080A20 7F04BEF0 44822000 */ mtc1 $v0, $f4 +/* 080A24 7F04BEF4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080A28 7F04BEF8 04410004 */ bgez $v0, .L7F04BF0C +/* 080A2C 7F04BEFC 468021A0 */ cvt.s.w $f6, $f4 +/* 080A30 7F04BF00 44814000 */ mtc1 $at, $f8 +/* 080A34 7F04BF04 00000000 */ nop +/* 080A38 7F04BF08 46083180 */ add.s $f6, $f6, $f8 +.L7F04BF0C: +/* 080A3C 7F04BF0C 46143402 */ mul.s $f16, $f6, $f20 +/* 080A40 7F04BF10 3C018005 */ lui $at, %hi(D_80052CEC) +/* 080A44 7F04BF14 C42A2CEC */ lwc1 $f10, %lo(D_80052CEC)($at) +/* 080A48 7F04BF18 3C013C80 */ li $at, 0x3C800000 # 0.015625 +/* 080A4C 7F04BF1C 44812000 */ mtc1 $at, $f4 +/* 080A50 7F04BF20 3C018005 */ lui $at, %hi(D_80052CF0) +/* 080A54 7F04BF24 C4262CF0 */ lwc1 $f6, %lo(D_80052CF0)($at) +/* 080A58 7F04BF28 460A8482 */ mul.s $f18, $f16, $f10 +/* 080A5C 7F04BF2C 27A40038 */ addiu $a0, $sp, 0x38 +/* 080A60 7F04BF30 26050020 */ addiu $a1, $s0, 0x20 +/* 080A64 7F04BF34 46049202 */ mul.s $f8, $f18, $f4 +/* 080A68 7F04BF38 46064401 */ sub.s $f16, $f8, $f6 +/* 080A6C 7F04BF3C 0FC161C5 */ jal sub_GAME_7F058714 +/* 080A70 7F04BF40 E7B00040 */ swc1 $f16, 0x40($sp) +/* 080A74 7F04BF44 8E0C0000 */ lw $t4, ($s0) +/* 080A78 7F04BF48 8FA20054 */ lw $v0, 0x54($sp) +/* 080A7C 7F04BF4C 358D0001 */ ori $t5, $t4, 1 +/* 080A80 7F04BF50 AE0D0000 */ sw $t5, ($s0) +/* 080A84 7F04BF54 C44A0000 */ lwc1 $f10, ($v0) +/* 080A88 7F04BF58 E7AA0044 */ swc1 $f10, 0x44($sp) +/* 080A8C 7F04BF5C C4520004 */ lwc1 $f18, 4($v0) +/* 080A90 7F04BF60 E7B20048 */ swc1 $f18, 0x48($sp) +/* 080A94 7F04BF64 C4440008 */ lwc1 $f4, 8($v0) +/* 080A98 7F04BF68 0FC1E111 */ jal sub_GAME_7F078444 +/* 080A9C 7F04BF6C E7A4004C */ swc1 $f4, 0x4c($sp) +/* 080AA0 7F04BF70 00402025 */ move $a0, $v0 +/* 080AA4 7F04BF74 0FC160F6 */ jal sub_GAME_7F0583D8 +/* 080AA8 7F04BF78 27A50044 */ addiu $a1, $sp, 0x44 +/* 080AAC 7F04BF7C 3C018005 */ lui $at, %hi(D_80052CF4) +/* 080AB0 7F04BF80 C4202CF4 */ lwc1 $f0, %lo(D_80052CF4)($at) +/* 080AB4 7F04BF84 C7A60044 */ lwc1 $f6, 0x44($sp) +/* 080AB8 7F04BF88 C6080004 */ lwc1 $f8, 4($s0) +/* 080ABC 7F04BF8C C612000C */ lwc1 $f18, 0xc($s0) +/* 080AC0 7F04BF90 46060402 */ mul.s $f16, $f0, $f6 +/* 080AC4 7F04BF94 46104280 */ add.s $f10, $f8, $f16 +/* 080AC8 7F04BF98 E60A0004 */ swc1 $f10, 4($s0) +/* 080ACC 7F04BF9C C7A4004C */ lwc1 $f4, 0x4c($sp) +/* 080AD0 7F04BFA0 46040182 */ mul.s $f6, $f0, $f4 +/* 080AD4 7F04BFA4 46069200 */ add.s $f8, $f18, $f6 +/* 080AD8 7F04BFA8 0FC225E6 */ jal get_curplayer_positiondata +/* 080ADC 7F04BFAC E608000C */ swc1 $f8, 0xc($s0) +/* 080AE0 7F04BFB0 24190001 */ li $t9, 1 +/* 080AE4 7F04BFB4 AE020088 */ sw $v0, 0x88($s0) +/* 080AE8 7F04BFB8 AE190090 */ sw $t9, 0x90($s0) +/* 080AEC 7F04BFBC 8FBF0024 */ lw $ra, 0x24($sp) +.L7F04BFC0: +/* 080AF0 7F04BFC0 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 080AF4 7F04BFC4 8FB00020 */ lw $s0, 0x20($sp) +/* 080AF8 7F04BFC8 03E00008 */ jr $ra +/* 080AFC 7F04BFCC 27BD0050 */ addiu $sp, $sp, 0x50 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04BFD0(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04BFD0 +/* 080B00 7F04BFD0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 080B04 7F04BFD4 AFBF0014 */ sw $ra, 0x14($sp) +/* 080B08 7F04BFD8 8C82001C */ lw $v0, 0x1c($a0) +/* 080B0C 7F04BFDC 50400016 */ beql $v0, $zero, .L7F04C038 +/* 080B10 7F04BFE0 8FBF0014 */ lw $ra, 0x14($sp) +/* 080B14 7F04BFE4 8C820004 */ lw $v0, 4($a0) +/* 080B18 7F04BFE8 AFA50024 */ sw $a1, 0x24($sp) +/* 080B1C 7F04BFEC 0FC0FF6A */ jal sub_GAME_7F03FDA8 +/* 080B20 7F04BFF0 AFA20018 */ sw $v0, 0x18($sp) +/* 080B24 7F04BFF4 8FA20018 */ lw $v0, 0x18($sp) +/* 080B28 7F04BFF8 8FA50024 */ lw $a1, 0x24($sp) +/* 080B2C 7F04BFFC 8C430064 */ lw $v1, 0x64($v0) +/* 080B30 7F04C000 306E0040 */ andi $t6, $v1, 0x40 +/* 080B34 7F04C004 11C00007 */ beqz $t6, .L7F04C024 +/* 080B38 7F04C008 30780080 */ andi $t8, $v1, 0x80 +/* 080B3C 7F04C00C 8C4F006C */ lw $t7, 0x6c($v0) +/* 080B40 7F04C010 8DE40044 */ lw $a0, 0x44($t7) +/* 080B44 7F04C014 10800003 */ beqz $a0, .L7F04C024 +/* 080B48 7F04C018 00000000 */ nop +/* 080B4C 7F04C01C 10000005 */ b .L7F04C034 +/* 080B50 7F04C020 AC8500B8 */ sw $a1, 0xb8($a0) +.L7F04C024: +/* 080B54 7F04C024 53000004 */ beql $t8, $zero, .L7F04C038 +/* 080B58 7F04C028 8FBF0014 */ lw $ra, 0x14($sp) +/* 080B5C 7F04C02C 8C59006C */ lw $t9, 0x6c($v0) +/* 080B60 7F04C030 AF2500B8 */ sw $a1, 0xb8($t9) +.L7F04C034: +/* 080B64 7F04C034 8FBF0014 */ lw $ra, 0x14($sp) +.L7F04C038: +/* 080B68 7F04C038 27BD0020 */ addiu $sp, $sp, 0x20 +/* 080B6C 7F04C03C 03E00008 */ jr $ra +/* 080B70 7F04C040 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04C044(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04C044 +/* 080B74 7F04C044 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 080B78 7F04C048 AFBF0014 */ sw $ra, 0x14($sp) +/* 080B7C 7F04C04C 8C86001C */ lw $a2, 0x1c($a0) +/* 080B80 7F04C050 00802825 */ move $a1, $a0 +/* 080B84 7F04C054 50C00033 */ beql $a2, $zero, .L7F04C124 +/* 080B88 7F04C058 8FBF0014 */ lw $ra, 0x14($sp) +/* 080B8C 7F04C05C 8C820004 */ lw $v0, 4($a0) +/* 080B90 7F04C060 8C4E0014 */ lw $t6, 0x14($v0) +/* 080B94 7F04C064 AFA60024 */ sw $a2, 0x24($sp) +/* 080B98 7F04C068 AFA50028 */ sw $a1, 0x28($sp) +/* 080B9C 7F04C06C AFA20020 */ sw $v0, 0x20($sp) +/* 080BA0 7F04C070 0FC0E974 */ jal sub_GAME_7F03A5D0 +/* 080BA4 7F04C074 AFAE001C */ sw $t6, 0x1c($sp) +/* 080BA8 7F04C078 8FAF001C */ lw $t7, 0x1c($sp) +/* 080BAC 7F04C07C 8FA20020 */ lw $v0, 0x20($sp) +/* 080BB0 7F04C080 8FA60024 */ lw $a2, 0x24($sp) +/* 080BB4 7F04C084 8FA50028 */ lw $a1, 0x28($sp) +/* 080BB8 7F04C088 ADE0001C */ sw $zero, 0x1c($t7) +/* 080BBC 7F04C08C 8C580064 */ lw $t8, 0x64($v0) +/* 080BC0 7F04C090 3C01FFF7 */ lui $at, (0xFFF7FFFF >> 16) # lui $at, 0xfff7 +/* 080BC4 7F04C094 3421FFFF */ ori $at, (0xFFF7FFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 080BC8 7F04C098 0301C824 */ and $t9, $t8, $at +/* 080BCC 7F04C09C AC590064 */ sw $t9, 0x64($v0) +/* 080BD0 7F04C0A0 90C30000 */ lbu $v1, ($a2) +/* 080BD4 7F04C0A4 24010003 */ li $at, 3 +/* 080BD8 7F04C0A8 10610003 */ beq $v1, $at, .L7F04C0B8 +/* 080BDC 7F04C0AC 24010006 */ li $at, 6 +/* 080BE0 7F04C0B0 5461001C */ bnel $v1, $at, .L7F04C124 +/* 080BE4 7F04C0B4 8FBF0014 */ lw $ra, 0x14($sp) +.L7F04C0B8: +/* 080BE8 7F04C0B8 8CC40004 */ lw $a0, 4($a2) +/* 080BEC 7F04C0BC 50800019 */ beql $a0, $zero, .L7F04C124 +/* 080BF0 7F04C0C0 8FBF0014 */ lw $ra, 0x14($sp) +/* 080BF4 7F04C0C4 8C8801D8 */ lw $t0, 0x1d8($a0) +/* 080BF8 7F04C0C8 54A80004 */ bnel $a1, $t0, .L7F04C0DC +/* 080BFC 7F04C0CC 8C890160 */ lw $t1, 0x160($a0) +/* 080C00 7F04C0D0 10000013 */ b .L7F04C120 +/* 080C04 7F04C0D4 AC8001D8 */ sw $zero, 0x1d8($a0) +/* 080C08 7F04C0D8 8C890160 */ lw $t1, 0x160($a0) +.L7F04C0DC: +/* 080C0C 7F04C0DC 00003025 */ move $a2, $zero +/* 080C10 7F04C0E0 54A90008 */ bnel $a1, $t1, .L7F04C104 +/* 080C14 7F04C0E4 8C8A0164 */ lw $t2, 0x164($a0) +/* 080C18 7F04C0E8 00002825 */ move $a1, $zero +/* 080C1C 7F04C0EC 0FC0B446 */ jal sub_GAME_7F02D118 +/* 080C20 7F04C0F0 AFA40018 */ sw $a0, 0x18($sp) +/* 080C24 7F04C0F4 8FA40018 */ lw $a0, 0x18($sp) +/* 080C28 7F04C0F8 10000009 */ b .L7F04C120 +/* 080C2C 7F04C0FC AC800160 */ sw $zero, 0x160($a0) +/* 080C30 7F04C100 8C8A0164 */ lw $t2, 0x164($a0) +.L7F04C104: +/* 080C34 7F04C104 00003025 */ move $a2, $zero +/* 080C38 7F04C108 14AA0005 */ bne $a1, $t2, .L7F04C120 +/* 080C3C 7F04C10C 24050001 */ li $a1, 1 +/* 080C40 7F04C110 0FC0B446 */ jal sub_GAME_7F02D118 +/* 080C44 7F04C114 AFA40018 */ sw $a0, 0x18($sp) +/* 080C48 7F04C118 8FA40018 */ lw $a0, 0x18($sp) +/* 080C4C 7F04C11C AC800164 */ sw $zero, 0x164($a0) +.L7F04C120: +/* 080C50 7F04C120 8FBF0014 */ lw $ra, 0x14($sp) +.L7F04C124: +/* 080C54 7F04C124 27BD0028 */ addiu $sp, $sp, 0x28 +/* 080C58 7F04C128 03E00008 */ jr $ra +/* 080C5C 7F04C12C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04C130(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052CF8 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052CFC +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D00 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D04 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D08 +.word 0x3cc90fdb /*0.024543693*/ +glabel D_80052D0C +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D10 +.word 0x3cc90fdb /*0.024543693*/ +glabel D_80052D14 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D18 +.word 0x3cc90fdb /*0.024543693*/ +glabel D_80052D1C +.word 0x41555555 /*13.333333*/ +glabel D_80052D20 +.word 0x40d55555 /*6.6666665*/ +glabel D_80052D24 +.word 0x41555555 /*13.333333*/ +glabel D_80052D28 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D2C +.word 0x3cc90fdb /*0.024543693*/ +glabel D_80052D30 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D34 +.word 0x3cc90fdb /*0.024543693*/ +glabel D_80052D38 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D3C +.word 0x3cc90fdb /*0.024543693*/ +glabel D_80052D40 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D44 +.word 0x40555555 /*3.3333333*/ +glabel D_80052D48 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D4C +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D50 +.word 0x40555555 /*3.3333333*/ +glabel D_80052D54 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D58 +.word 0x3dc90fdb /*0.098174773*/ +glabel D_80052D5C +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D60 +.word 0x3dc90fdb /*0.098174773*/ +glabel D_80052D64 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D68 +.word 0x3dc90fdb /*0.098174773*/ +.text +glabel sub_GAME_7F04C130 +/* 080C60 7F04C130 27BDFEF8 */ addiu $sp, $sp, -0x108 +/* 080C64 7F04C134 AFBF003C */ sw $ra, 0x3c($sp) +/* 080C68 7F04C138 AFB20038 */ sw $s2, 0x38($sp) +/* 080C6C 7F04C13C AFB10034 */ sw $s1, 0x34($sp) +/* 080C70 7F04C140 AFB00030 */ sw $s0, 0x30($sp) +/* 080C74 7F04C144 AFA40108 */ sw $a0, 0x108($sp) +/* 080C78 7F04C148 8C8F001C */ lw $t7, 0x1c($a0) +/* 080C7C 7F04C14C AFAF0104 */ sw $t7, 0x104($sp) +/* 080C80 7F04C150 8C920004 */ lw $s2, 4($a0) +/* 080C84 7F04C154 8E580064 */ lw $t8, 0x64($s2) +/* 080C88 7F04C158 33190040 */ andi $t9, $t8, 0x40 +/* 080C8C 7F04C15C 5320000F */ beql $t9, $zero, .L7F04C19C +/* 080C90 7F04C160 8FAC0104 */ lw $t4, 0x104($sp) +/* 080C94 7F04C164 8E44006C */ lw $a0, 0x6c($s2) +/* 080C98 7F04C168 8C820044 */ lw $v0, 0x44($a0) +/* 080C9C 7F04C16C 5040000B */ beql $v0, $zero, .L7F04C19C +/* 080CA0 7F04C170 8FAC0104 */ lw $t4, 0x104($sp) +/* 080CA4 7F04C174 0FC0FFA2 */ jal sub_GAME_7F03FE88 +/* 080CA8 7F04C178 00408025 */ move $s0, $v0 +/* 080CAC 7F04C17C 8E480064 */ lw $t0, 0x64($s2) +/* 080CB0 7F04C180 2401FFBF */ li $at, -65 +/* 080CB4 7F04C184 AE50006C */ sw $s0, 0x6c($s2) +/* 080CB8 7F04C188 01014824 */ and $t1, $t0, $at +/* 080CBC 7F04C18C AE490064 */ sw $t1, 0x64($s2) +/* 080CC0 7F04C190 352B0080 */ ori $t3, $t1, 0x80 +/* 080CC4 7F04C194 AE4B0064 */ sw $t3, 0x64($s2) +/* 080CC8 7F04C198 8FAC0104 */ lw $t4, 0x104($sp) +.L7F04C19C: +/* 080CCC 7F04C19C 00001025 */ move $v0, $zero +/* 080CD0 7F04C1A0 11800222 */ beqz $t4, .L7F04CA2C +/* 080CD4 7F04C1A4 00000000 */ nop +/* 080CD8 7F04C1A8 8E4D0064 */ lw $t5, 0x64($s2) +/* 080CDC 7F04C1AC 31AF0080 */ andi $t7, $t5, 0x80 +/* 080CE0 7F04C1B0 11E0021E */ beqz $t7, .L7F04CA2C +/* 080CE4 7F04C1B4 00000000 */ nop +/* 080CE8 7F04C1B8 8E4E0014 */ lw $t6, 0x14($s2) +/* 080CEC 7F04C1BC 24010002 */ li $at, 2 +/* 080CF0 7F04C1C0 01808025 */ move $s0, $t4 +/* 080CF4 7F04C1C4 AFAE00F8 */ sw $t6, 0xf8($sp) +/* 080CF8 7F04C1C8 8E51006C */ lw $s1, 0x6c($s2) +/* 080CFC 7F04C1CC 8E380000 */ lw $t8, ($s1) +/* 080D00 7F04C1D0 8E2200B8 */ lw $v0, 0xb8($s1) +/* 080D04 7F04C1D4 37190001 */ ori $t9, $t8, 1 +/* 080D08 7F04C1D8 AE390000 */ sw $t9, ($s1) +/* 080D0C 7F04C1DC 8FA80104 */ lw $t0, 0x104($sp) +/* 080D10 7F04C1E0 1441007A */ bne $v0, $at, .L7F04C3CC +/* 080D14 7F04C1E4 AE280088 */ sw $t0, 0x88($s1) +/* 080D18 7F04C1E8 8FA90104 */ lw $t1, 0x104($sp) +/* 080D1C 7F04C1EC 24030003 */ li $v1, 3 +/* 080D20 7F04C1F0 3C0D8003 */ lui $t5, %hi(D_8003201C) +/* 080D24 7F04C1F4 912A0000 */ lbu $t2, ($t1) +/* 080D28 7F04C1F8 25AD201C */ addiu $t5, %lo(D_8003201C) # addiu $t5, $t5, 0x201c +/* 080D2C 7F04C1FC 27AB0098 */ addiu $t3, $sp, 0x98 +/* 080D30 7F04C200 546A0073 */ bnel $v1, $t2, .L7F04C3D0 +/* 080D34 7F04C204 24030003 */ li $v1, 3 +/* 080D38 7F04C208 8D220004 */ lw $v0, 4($t1) +/* 080D3C 7F04C20C 8DA10000 */ lw $at, ($t5) +/* 080D40 7F04C210 8DAE0004 */ lw $t6, 4($t5) +/* 080D44 7F04C214 8C44001C */ lw $a0, 0x1c($v0) +/* 080D48 7F04C218 AD610000 */ sw $at, ($t3) +/* 080D4C 7F04C21C 8DA10008 */ lw $at, 8($t5) +/* 080D50 7F04C220 AD6E0004 */ sw $t6, 4($t3) +/* 080D54 7F04C224 0FC1B320 */ jal getsubroty +/* 080D58 7F04C228 AD610008 */ sw $at, 8($t3) +/* 080D5C 7F04C22C E7A00094 */ swc1 $f0, 0x94($sp) +/* 080D60 7F04C230 0FC15FAB */ jal sinf +/* 080D64 7F04C234 46000306 */ mov.s $f12, $f0 +/* 080D68 7F04C238 3C018005 */ lui $at, %hi(D_80052CF8) +/* 080D6C 7F04C23C C4242CF8 */ lwc1 $f4, %lo(D_80052CF8)($at) +/* 080D70 7F04C240 46040182 */ mul.s $f6, $f0, $f4 +/* 080D74 7F04C244 0C002914 */ jal get_random_value +/* 080D78 7F04C248 E6260004 */ swc1 $f6, 4($s1) +/* 080D7C 7F04C24C 44824000 */ mtc1 $v0, $f8 +/* 080D80 7F04C250 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080D84 7F04C254 04410004 */ bgez $v0, .L7F04C268 +/* 080D88 7F04C258 468042A0 */ cvt.s.w $f10, $f8 +/* 080D8C 7F04C25C 44818000 */ mtc1 $at, $f16 +/* 080D90 7F04C260 00000000 */ nop +/* 080D94 7F04C264 46105280 */ add.s $f10, $f10, $f16 +.L7F04C268: +/* 080D98 7F04C268 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 080D9C 7F04C26C 44819000 */ mtc1 $at, $f18 +/* 080DA0 7F04C270 3C018005 */ lui $at, %hi(D_80052CFC) +/* 080DA4 7F04C274 C4282CFC */ lwc1 $f8, %lo(D_80052CFC)($at) +/* 080DA8 7F04C278 46125102 */ mul.s $f4, $f10, $f18 +/* 080DAC 7F04C27C 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 080DB0 7F04C280 44815000 */ mtc1 $at, $f10 +/* 080DB4 7F04C284 46002187 */ neg.s $f6, $f4 +/* 080DB8 7F04C288 46083402 */ mul.s $f16, $f6, $f8 +/* 080DBC 7F04C28C 00000000 */ nop +/* 080DC0 7F04C290 460A8482 */ mul.s $f18, $f16, $f10 +/* 080DC4 7F04C294 E6320008 */ swc1 $f18, 8($s1) +/* 080DC8 7F04C298 0FC15FA8 */ jal cosf +/* 080DCC 7F04C29C C7AC0094 */ lwc1 $f12, 0x94($sp) +/* 080DD0 7F04C2A0 3C018005 */ lui $at, %hi(D_80052D00) +/* 080DD4 7F04C2A4 C4242D00 */ lwc1 $f4, %lo(D_80052D00)($at) +/* 080DD8 7F04C2A8 46040182 */ mul.s $f6, $f0, $f4 +/* 080DDC 7F04C2AC 0C002914 */ jal get_random_value +/* 080DE0 7F04C2B0 E626000C */ swc1 $f6, 0xc($s1) +/* 080DE4 7F04C2B4 44824000 */ mtc1 $v0, $f8 +/* 080DE8 7F04C2B8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080DEC 7F04C2BC 04410004 */ bgez $v0, .L7F04C2D0 +/* 080DF0 7F04C2C0 46804420 */ cvt.s.w $f16, $f8 +/* 080DF4 7F04C2C4 44815000 */ mtc1 $at, $f10 +/* 080DF8 7F04C2C8 00000000 */ nop +/* 080DFC 7F04C2CC 460A8400 */ add.s $f16, $f16, $f10 +.L7F04C2D0: +/* 080E00 7F04C2D0 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 080E04 7F04C2D4 44819000 */ mtc1 $at, $f18 +/* 080E08 7F04C2D8 3C018005 */ lui $at, %hi(D_80052D04) +/* 080E0C 7F04C2DC C4262D04 */ lwc1 $f6, %lo(D_80052D04)($at) +/* 080E10 7F04C2E0 46128102 */ mul.s $f4, $f16, $f18 +/* 080E14 7F04C2E4 3C013C00 */ li $at, 0x3C000000 # 0.007812 +/* 080E18 7F04C2E8 44815000 */ mtc1 $at, $f10 +/* 080E1C 7F04C2EC 3C018005 */ lui $at, %hi(D_80052D08) +/* 080E20 7F04C2F0 C4322D08 */ lwc1 $f18, %lo(D_80052D08)($at) +/* 080E24 7F04C2F4 46062202 */ mul.s $f8, $f4, $f6 +/* 080E28 7F04C2F8 00000000 */ nop +/* 080E2C 7F04C2FC 460A4402 */ mul.s $f16, $f8, $f10 +/* 080E30 7F04C300 46128101 */ sub.s $f4, $f16, $f18 +/* 080E34 7F04C304 0C002914 */ jal get_random_value +/* 080E38 7F04C308 E7A40098 */ swc1 $f4, 0x98($sp) +/* 080E3C 7F04C30C 44823000 */ mtc1 $v0, $f6 +/* 080E40 7F04C310 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080E44 7F04C314 04410004 */ bgez $v0, .L7F04C328 +/* 080E48 7F04C318 46803220 */ cvt.s.w $f8, $f6 +/* 080E4C 7F04C31C 44815000 */ mtc1 $at, $f10 +/* 080E50 7F04C320 00000000 */ nop +/* 080E54 7F04C324 460A4200 */ add.s $f8, $f8, $f10 +.L7F04C328: +/* 080E58 7F04C328 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 080E5C 7F04C32C 44818000 */ mtc1 $at, $f16 +/* 080E60 7F04C330 3C018005 */ lui $at, %hi(D_80052D0C) +/* 080E64 7F04C334 C4242D0C */ lwc1 $f4, %lo(D_80052D0C)($at) +/* 080E68 7F04C338 46104482 */ mul.s $f18, $f8, $f16 +/* 080E6C 7F04C33C 3C013C00 */ li $at, 0x3C000000 # 0.007812 +/* 080E70 7F04C340 44815000 */ mtc1 $at, $f10 +/* 080E74 7F04C344 3C018005 */ lui $at, %hi(D_80052D10) +/* 080E78 7F04C348 C4302D10 */ lwc1 $f16, %lo(D_80052D10)($at) +/* 080E7C 7F04C34C 46049182 */ mul.s $f6, $f18, $f4 +/* 080E80 7F04C350 00000000 */ nop +/* 080E84 7F04C354 460A3202 */ mul.s $f8, $f6, $f10 +/* 080E88 7F04C358 46104481 */ sub.s $f18, $f8, $f16 +/* 080E8C 7F04C35C 0C002914 */ jal get_random_value +/* 080E90 7F04C360 E7B2009C */ swc1 $f18, 0x9c($sp) +/* 080E94 7F04C364 44822000 */ mtc1 $v0, $f4 +/* 080E98 7F04C368 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080E9C 7F04C36C 04410004 */ bgez $v0, .L7F04C380 +/* 080EA0 7F04C370 468021A0 */ cvt.s.w $f6, $f4 +/* 080EA4 7F04C374 44815000 */ mtc1 $at, $f10 +/* 080EA8 7F04C378 00000000 */ nop +/* 080EAC 7F04C37C 460A3180 */ add.s $f6, $f6, $f10 +.L7F04C380: +/* 080EB0 7F04C380 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 080EB4 7F04C384 44814000 */ mtc1 $at, $f8 +/* 080EB8 7F04C388 3C018005 */ lui $at, %hi(D_80052D14) +/* 080EBC 7F04C38C C4322D14 */ lwc1 $f18, %lo(D_80052D14)($at) +/* 080EC0 7F04C390 46083402 */ mul.s $f16, $f6, $f8 +/* 080EC4 7F04C394 3C013C00 */ li $at, 0x3C000000 # 0.007812 +/* 080EC8 7F04C398 44815000 */ mtc1 $at, $f10 +/* 080ECC 7F04C39C 3C018005 */ lui $at, %hi(D_80052D18) +/* 080ED0 7F04C3A0 C4282D18 */ lwc1 $f8, %lo(D_80052D18)($at) +/* 080ED4 7F04C3A4 27A40098 */ addiu $a0, $sp, 0x98 +/* 080ED8 7F04C3A8 26250020 */ addiu $a1, $s1, 0x20 +/* 080EDC 7F04C3AC 46128102 */ mul.s $f4, $f16, $f18 +/* 080EE0 7F04C3B0 00000000 */ nop +/* 080EE4 7F04C3B4 460A2182 */ mul.s $f6, $f4, $f10 +/* 080EE8 7F04C3B8 46083401 */ sub.s $f16, $f6, $f8 +/* 080EEC 7F04C3BC 0FC161C5 */ jal sub_GAME_7F058714 +/* 080EF0 7F04C3C0 E7B000A0 */ swc1 $f16, 0xa0($sp) +/* 080EF4 7F04C3C4 1000010C */ b .L7F04C7F8 +/* 080EF8 7F04C3C8 8FA90104 */ lw $t1, 0x104($sp) +.L7F04C3CC: +/* 080EFC 7F04C3CC 24030003 */ li $v1, 3 +.L7F04C3D0: +/* 080F00 7F04C3D0 14620068 */ bne $v1, $v0, .L7F04C574 +/* 080F04 7F04C3D4 8FAC0104 */ lw $t4, 0x104($sp) +/* 080F08 7F04C3D8 91980000 */ lbu $t8, ($t4) +/* 080F0C 7F04C3DC 3C088003 */ lui $t0, %hi(D_80032028) +/* 080F10 7F04C3E0 25082028 */ addiu $t0, %lo(D_80032028) # addiu $t0, $t0, 0x2028 +/* 080F14 7F04C3E4 14780063 */ bne $v1, $t8, .L7F04C574 +/* 080F18 7F04C3E8 27B90080 */ addiu $t9, $sp, 0x80 +/* 080F1C 7F04C3EC 8D820004 */ lw $v0, 4($t4) +/* 080F20 7F04C3F0 8D010000 */ lw $at, ($t0) +/* 080F24 7F04C3F4 8D090004 */ lw $t1, 4($t0) +/* 080F28 7F04C3F8 8C44001C */ lw $a0, 0x1c($v0) +/* 080F2C 7F04C3FC AF210000 */ sw $at, ($t9) +/* 080F30 7F04C400 8D010008 */ lw $at, 8($t0) +/* 080F34 7F04C404 AF290004 */ sw $t1, 4($t9) +/* 080F38 7F04C408 0FC1B320 */ jal getsubroty +/* 080F3C 7F04C40C AF210008 */ sw $at, 8($t9) +/* 080F40 7F04C410 E7A0007C */ swc1 $f0, 0x7c($sp) +/* 080F44 7F04C414 0FC15FAB */ jal sinf +/* 080F48 7F04C418 46000306 */ mov.s $f12, $f0 +/* 080F4C 7F04C41C 3C018005 */ lui $at, %hi(D_80052D1C) +/* 080F50 7F04C420 C4322D1C */ lwc1 $f18, %lo(D_80052D1C)($at) +/* 080F54 7F04C424 3C018005 */ lui $at, %hi(D_80052D20) +/* 080F58 7F04C428 46120102 */ mul.s $f4, $f0, $f18 +/* 080F5C 7F04C42C E6240004 */ swc1 $f4, 4($s1) +/* 080F60 7F04C430 C42A2D20 */ lwc1 $f10, %lo(D_80052D20)($at) +/* 080F64 7F04C434 E62A0008 */ swc1 $f10, 8($s1) +/* 080F68 7F04C438 0FC15FA8 */ jal cosf +/* 080F6C 7F04C43C C7AC007C */ lwc1 $f12, 0x7c($sp) +/* 080F70 7F04C440 3C018005 */ lui $at, %hi(D_80052D24) +/* 080F74 7F04C444 C4262D24 */ lwc1 $f6, %lo(D_80052D24)($at) +/* 080F78 7F04C448 46060202 */ mul.s $f8, $f0, $f6 +/* 080F7C 7F04C44C 0C002914 */ jal get_random_value +/* 080F80 7F04C450 E628000C */ swc1 $f8, 0xc($s1) +/* 080F84 7F04C454 44828000 */ mtc1 $v0, $f16 +/* 080F88 7F04C458 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080F8C 7F04C45C 04410004 */ bgez $v0, .L7F04C470 +/* 080F90 7F04C460 468084A0 */ cvt.s.w $f18, $f16 +/* 080F94 7F04C464 44812000 */ mtc1 $at, $f4 +/* 080F98 7F04C468 00000000 */ nop +/* 080F9C 7F04C46C 46049480 */ add.s $f18, $f18, $f4 +.L7F04C470: +/* 080FA0 7F04C470 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 080FA4 7F04C474 44815000 */ mtc1 $at, $f10 +/* 080FA8 7F04C478 3C018005 */ lui $at, %hi(D_80052D28) +/* 080FAC 7F04C47C C4282D28 */ lwc1 $f8, %lo(D_80052D28)($at) +/* 080FB0 7F04C480 460A9182 */ mul.s $f6, $f18, $f10 +/* 080FB4 7F04C484 3C013C00 */ li $at, 0x3C000000 # 0.007812 +/* 080FB8 7F04C488 44812000 */ mtc1 $at, $f4 +/* 080FBC 7F04C48C 3C018005 */ lui $at, %hi(D_80052D2C) +/* 080FC0 7F04C490 C42A2D2C */ lwc1 $f10, %lo(D_80052D2C)($at) +/* 080FC4 7F04C494 46083402 */ mul.s $f16, $f6, $f8 +/* 080FC8 7F04C498 00000000 */ nop +/* 080FCC 7F04C49C 46048482 */ mul.s $f18, $f16, $f4 +/* 080FD0 7F04C4A0 460A9181 */ sub.s $f6, $f18, $f10 +/* 080FD4 7F04C4A4 0C002914 */ jal get_random_value +/* 080FD8 7F04C4A8 E7A60080 */ swc1 $f6, 0x80($sp) +/* 080FDC 7F04C4AC 44824000 */ mtc1 $v0, $f8 +/* 080FE0 7F04C4B0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 080FE4 7F04C4B4 04410004 */ bgez $v0, .L7F04C4C8 +/* 080FE8 7F04C4B8 46804420 */ cvt.s.w $f16, $f8 +/* 080FEC 7F04C4BC 44812000 */ mtc1 $at, $f4 +/* 080FF0 7F04C4C0 00000000 */ nop +/* 080FF4 7F04C4C4 46048400 */ add.s $f16, $f16, $f4 +.L7F04C4C8: +/* 080FF8 7F04C4C8 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 080FFC 7F04C4CC 44819000 */ mtc1 $at, $f18 +/* 081000 7F04C4D0 3C018005 */ lui $at, %hi(D_80052D30) +/* 081004 7F04C4D4 C4262D30 */ lwc1 $f6, %lo(D_80052D30)($at) +/* 081008 7F04C4D8 46128282 */ mul.s $f10, $f16, $f18 +/* 08100C 7F04C4DC 3C013C00 */ li $at, 0x3C000000 # 0.007812 +/* 081010 7F04C4E0 44812000 */ mtc1 $at, $f4 +/* 081014 7F04C4E4 3C018005 */ lui $at, %hi(D_80052D34) +/* 081018 7F04C4E8 C4322D34 */ lwc1 $f18, %lo(D_80052D34)($at) +/* 08101C 7F04C4EC 46065202 */ mul.s $f8, $f10, $f6 +/* 081020 7F04C4F0 00000000 */ nop +/* 081024 7F04C4F4 46044402 */ mul.s $f16, $f8, $f4 +/* 081028 7F04C4F8 46128281 */ sub.s $f10, $f16, $f18 +/* 08102C 7F04C4FC 0C002914 */ jal get_random_value +/* 081030 7F04C500 E7AA0084 */ swc1 $f10, 0x84($sp) +/* 081034 7F04C504 44823000 */ mtc1 $v0, $f6 +/* 081038 7F04C508 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 08103C 7F04C50C 04410004 */ bgez $v0, .L7F04C520 +/* 081040 7F04C510 46803220 */ cvt.s.w $f8, $f6 +/* 081044 7F04C514 44812000 */ mtc1 $at, $f4 +/* 081048 7F04C518 00000000 */ nop +/* 08104C 7F04C51C 46044200 */ add.s $f8, $f8, $f4 +.L7F04C520: +/* 081050 7F04C520 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 081054 7F04C524 44818000 */ mtc1 $at, $f16 +/* 081058 7F04C528 3C018005 */ lui $at, %hi(D_80052D38) +/* 08105C 7F04C52C C42A2D38 */ lwc1 $f10, %lo(D_80052D38)($at) +/* 081060 7F04C530 46104482 */ mul.s $f18, $f8, $f16 +/* 081064 7F04C534 3C013C00 */ li $at, 0x3C000000 # 0.007812 +/* 081068 7F04C538 44812000 */ mtc1 $at, $f4 +/* 08106C 7F04C53C 3C018005 */ lui $at, %hi(D_80052D3C) +/* 081070 7F04C540 C4302D3C */ lwc1 $f16, %lo(D_80052D3C)($at) +/* 081074 7F04C544 27A40080 */ addiu $a0, $sp, 0x80 +/* 081078 7F04C548 26250020 */ addiu $a1, $s1, 0x20 +/* 08107C 7F04C54C 460A9182 */ mul.s $f6, $f18, $f10 +/* 081080 7F04C550 00000000 */ nop +/* 081084 7F04C554 46043202 */ mul.s $f8, $f6, $f4 +/* 081088 7F04C558 46104481 */ sub.s $f18, $f8, $f16 +/* 08108C 7F04C55C 0FC161C5 */ jal sub_GAME_7F058714 +/* 081090 7F04C560 E7B20088 */ swc1 $f18, 0x88($sp) +/* 081094 7F04C564 8E2F0000 */ lw $t7, ($s1) +/* 081098 7F04C568 35EB0040 */ ori $t3, $t7, 0x40 +/* 08109C 7F04C56C 100000A1 */ b .L7F04C7F4 +/* 0810A0 7F04C570 AE2B0000 */ sw $t3, ($s1) +.L7F04C574: +/* 0810A4 7F04C574 24010004 */ li $at, 4 +/* 0810A8 7F04C578 1441009C */ bne $v0, $at, .L7F04C7EC +/* 0810AC 7F04C57C 26240004 */ addiu $a0, $s1, 4 +/* 0810B0 7F04C580 3C0E8003 */ lui $t6, %hi(D_80032034) +/* 0810B4 7F04C584 25CE2034 */ addiu $t6, %lo(D_80032034) # addiu $t6, $t6, 0x2034 +/* 0810B8 7F04C588 8DC10000 */ lw $at, ($t6) +/* 0810BC 7F04C58C 27AD0070 */ addiu $t5, $sp, 0x70 +/* 0810C0 7F04C590 8DCC0004 */ lw $t4, 4($t6) +/* 0810C4 7F04C594 ADA10000 */ sw $at, ($t5) +/* 0810C8 7F04C598 8DC10008 */ lw $at, 8($t6) +/* 0810CC 7F04C59C ADAC0004 */ sw $t4, 4($t5) +/* 0810D0 7F04C5A0 0FC225E6 */ jal get_curplayer_positiondata +/* 0810D4 7F04C5A4 ADA10008 */ sw $at, 8($t5) +/* 0810D8 7F04C5A8 8FAA0104 */ lw $t2, 0x104($sp) +/* 0810DC 7F04C5AC C4460008 */ lwc1 $f6, 8($v0) +/* 0810E0 7F04C5B0 C4480010 */ lwc1 $f8, 0x10($v0) +/* 0810E4 7F04C5B4 C54A0008 */ lwc1 $f10, 8($t2) +/* 0810E8 7F04C5B8 C5440010 */ lwc1 $f4, 0x10($t2) +/* 0810EC 7F04C5BC 46065301 */ sub.s $f12, $f10, $f6 +/* 0810F0 7F04C5C0 0FC16A8C */ jal convert_angle_using_inverse +/* 0810F4 7F04C5C4 46082381 */ sub.s $f14, $f4, $f8 +/* 0810F8 7F04C5C8 0C002914 */ jal get_random_value +/* 0810FC 7F04C5CC E7A00060 */ swc1 $f0, 0x60($sp) +/* 081100 7F04C5D0 AFA20050 */ sw $v0, 0x50($sp) +/* 081104 7F04C5D4 0FC15FAB */ jal sinf +/* 081108 7F04C5D8 C7AC0060 */ lwc1 $f12, 0x60($sp) +/* 08110C 7F04C5DC 8FB90050 */ lw $t9, 0x50($sp) +/* 081110 7F04C5E0 44998000 */ mtc1 $t9, $f16 +/* 081114 7F04C5E4 07210005 */ bgez $t9, .L7F04C5FC +/* 081118 7F04C5E8 468084A0 */ cvt.s.w $f18, $f16 +/* 08111C 7F04C5EC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 081120 7F04C5F0 44815000 */ mtc1 $at, $f10 +/* 081124 7F04C5F4 00000000 */ nop +/* 081128 7F04C5F8 460A9480 */ add.s $f18, $f18, $f10 +.L7F04C5FC: +/* 08112C 7F04C5FC 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 081130 7F04C600 44813000 */ mtc1 $at, $f6 +/* 081134 7F04C604 3C018005 */ lui $at, %hi(D_80052D40) +/* 081138 7F04C608 C4282D40 */ lwc1 $f8, %lo(D_80052D40)($at) +/* 08113C 7F04C60C 46069102 */ mul.s $f4, $f18, $f6 +/* 081140 7F04C610 3C018005 */ lui $at, %hi(D_80052D44) +/* 081144 7F04C614 C42A2D44 */ lwc1 $f10, %lo(D_80052D44)($at) +/* 081148 7F04C618 46082082 */ mul.s $f2, $f4, $f8 +/* 08114C 7F04C61C 46021400 */ add.s $f16, $f2, $f2 +/* 081150 7F04C620 460A8480 */ add.s $f18, $f16, $f10 +/* 081154 7F04C624 46120182 */ mul.s $f6, $f0, $f18 +/* 081158 7F04C628 0C002914 */ jal get_random_value +/* 08115C 7F04C62C E6260004 */ swc1 $f6, 4($s1) +/* 081160 7F04C630 44822000 */ mtc1 $v0, $f4 +/* 081164 7F04C634 04410005 */ bgez $v0, .L7F04C64C +/* 081168 7F04C638 46802220 */ cvt.s.w $f8, $f4 +/* 08116C 7F04C63C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 081170 7F04C640 44818000 */ mtc1 $at, $f16 +/* 081174 7F04C644 00000000 */ nop +/* 081178 7F04C648 46104200 */ add.s $f8, $f8, $f16 +.L7F04C64C: +/* 08117C 7F04C64C 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 081180 7F04C650 44815000 */ mtc1 $at, $f10 +/* 081184 7F04C654 3C018005 */ lui $at, %hi(D_80052D48) +/* 081188 7F04C658 C4262D48 */ lwc1 $f6, %lo(D_80052D48)($at) +/* 08118C 7F04C65C 460A4482 */ mul.s $f18, $f8, $f10 +/* 081190 7F04C660 00000000 */ nop +/* 081194 7F04C664 46069002 */ mul.s $f0, $f18, $f6 +/* 081198 7F04C668 46000100 */ add.s $f4, $f0, $f0 +/* 08119C 7F04C66C 0C002914 */ jal get_random_value +/* 0811A0 7F04C670 E6240008 */ swc1 $f4, 8($s1) +/* 0811A4 7F04C674 AFA20050 */ sw $v0, 0x50($sp) +/* 0811A8 7F04C678 0FC15FA8 */ jal cosf +/* 0811AC 7F04C67C C7AC0060 */ lwc1 $f12, 0x60($sp) +/* 0811B0 7F04C680 8FA80050 */ lw $t0, 0x50($sp) +/* 0811B4 7F04C684 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 0811B8 7F04C688 44888000 */ mtc1 $t0, $f16 +/* 0811BC 7F04C68C 05010004 */ bgez $t0, .L7F04C6A0 +/* 0811C0 7F04C690 46808220 */ cvt.s.w $f8, $f16 +/* 0811C4 7F04C694 44815000 */ mtc1 $at, $f10 +/* 0811C8 7F04C698 00000000 */ nop +/* 0811CC 7F04C69C 460A4200 */ add.s $f8, $f8, $f10 +.L7F04C6A0: +/* 0811D0 7F04C6A0 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 0811D4 7F04C6A4 44819000 */ mtc1 $at, $f18 +/* 0811D8 7F04C6A8 3C018005 */ lui $at, %hi(D_80052D4C) +/* 0811DC 7F04C6AC C4242D4C */ lwc1 $f4, %lo(D_80052D4C)($at) +/* 0811E0 7F04C6B0 46124182 */ mul.s $f6, $f8, $f18 +/* 0811E4 7F04C6B4 3C018005 */ lui $at, %hi(D_80052D50) +/* 0811E8 7F04C6B8 C42A2D50 */ lwc1 $f10, %lo(D_80052D50)($at) +/* 0811EC 7F04C6BC 46043082 */ mul.s $f2, $f6, $f4 +/* 0811F0 7F04C6C0 46021400 */ add.s $f16, $f2, $f2 +/* 0811F4 7F04C6C4 460A8200 */ add.s $f8, $f16, $f10 +/* 0811F8 7F04C6C8 46080482 */ mul.s $f18, $f0, $f8 +/* 0811FC 7F04C6CC 0C002914 */ jal get_random_value +/* 081200 7F04C6D0 E632000C */ swc1 $f18, 0xc($s1) +/* 081204 7F04C6D4 44823000 */ mtc1 $v0, $f6 +/* 081208 7F04C6D8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 08120C 7F04C6DC 04410004 */ bgez $v0, .L7F04C6F0 +/* 081210 7F04C6E0 46803120 */ cvt.s.w $f4, $f6 +/* 081214 7F04C6E4 44818000 */ mtc1 $at, $f16 +/* 081218 7F04C6E8 00000000 */ nop +/* 08121C 7F04C6EC 46102100 */ add.s $f4, $f4, $f16 +.L7F04C6F0: +/* 081220 7F04C6F0 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 081224 7F04C6F4 44815000 */ mtc1 $at, $f10 +/* 081228 7F04C6F8 3C018005 */ lui $at, %hi(D_80052D54) +/* 08122C 7F04C6FC C4322D54 */ lwc1 $f18, %lo(D_80052D54)($at) +/* 081230 7F04C700 460A2202 */ mul.s $f8, $f4, $f10 +/* 081234 7F04C704 3C013D00 */ li $at, 0x3D000000 # 0.031250 +/* 081238 7F04C708 44818000 */ mtc1 $at, $f16 +/* 08123C 7F04C70C 3C018005 */ lui $at, %hi(D_80052D58) +/* 081240 7F04C710 C42A2D58 */ lwc1 $f10, %lo(D_80052D58)($at) +/* 081244 7F04C714 46124182 */ mul.s $f6, $f8, $f18 +/* 081248 7F04C718 00000000 */ nop +/* 08124C 7F04C71C 46103102 */ mul.s $f4, $f6, $f16 +/* 081250 7F04C720 460A2201 */ sub.s $f8, $f4, $f10 +/* 081254 7F04C724 0C002914 */ jal get_random_value +/* 081258 7F04C728 E7A80070 */ swc1 $f8, 0x70($sp) +/* 08125C 7F04C72C 44829000 */ mtc1 $v0, $f18 +/* 081260 7F04C730 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 081264 7F04C734 04410004 */ bgez $v0, .L7F04C748 +/* 081268 7F04C738 468091A0 */ cvt.s.w $f6, $f18 +/* 08126C 7F04C73C 44818000 */ mtc1 $at, $f16 +/* 081270 7F04C740 00000000 */ nop +/* 081274 7F04C744 46103180 */ add.s $f6, $f6, $f16 +.L7F04C748: +/* 081278 7F04C748 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 08127C 7F04C74C 44812000 */ mtc1 $at, $f4 +/* 081280 7F04C750 3C018005 */ lui $at, %hi(D_80052D5C) +/* 081284 7F04C754 C4282D5C */ lwc1 $f8, %lo(D_80052D5C)($at) +/* 081288 7F04C758 46043282 */ mul.s $f10, $f6, $f4 +/* 08128C 7F04C75C 3C013D00 */ li $at, 0x3D000000 # 0.031250 +/* 081290 7F04C760 44818000 */ mtc1 $at, $f16 +/* 081294 7F04C764 3C018005 */ lui $at, %hi(D_80052D60) +/* 081298 7F04C768 C4242D60 */ lwc1 $f4, %lo(D_80052D60)($at) +/* 08129C 7F04C76C 46085482 */ mul.s $f18, $f10, $f8 +/* 0812A0 7F04C770 00000000 */ nop +/* 0812A4 7F04C774 46109182 */ mul.s $f6, $f18, $f16 +/* 0812A8 7F04C778 46043281 */ sub.s $f10, $f6, $f4 +/* 0812AC 7F04C77C 0C002914 */ jal get_random_value +/* 0812B0 7F04C780 E7AA0074 */ swc1 $f10, 0x74($sp) +/* 0812B4 7F04C784 44824000 */ mtc1 $v0, $f8 +/* 0812B8 7F04C788 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 0812BC 7F04C78C 04410004 */ bgez $v0, .L7F04C7A0 +/* 0812C0 7F04C790 468044A0 */ cvt.s.w $f18, $f8 +/* 0812C4 7F04C794 44818000 */ mtc1 $at, $f16 +/* 0812C8 7F04C798 00000000 */ nop +/* 0812CC 7F04C79C 46109480 */ add.s $f18, $f18, $f16 +.L7F04C7A0: +/* 0812D0 7F04C7A0 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 0812D4 7F04C7A4 44813000 */ mtc1 $at, $f6 +/* 0812D8 7F04C7A8 3C018005 */ lui $at, %hi(D_80052D64) +/* 0812DC 7F04C7AC C42A2D64 */ lwc1 $f10, %lo(D_80052D64)($at) +/* 0812E0 7F04C7B0 46069102 */ mul.s $f4, $f18, $f6 +/* 0812E4 7F04C7B4 3C013D00 */ li $at, 0x3D000000 # 0.031250 +/* 0812E8 7F04C7B8 44818000 */ mtc1 $at, $f16 +/* 0812EC 7F04C7BC 3C018005 */ lui $at, %hi(D_80052D68) +/* 0812F0 7F04C7C0 C4262D68 */ lwc1 $f6, %lo(D_80052D68)($at) +/* 0812F4 7F04C7C4 27A40070 */ addiu $a0, $sp, 0x70 +/* 0812F8 7F04C7C8 26250020 */ addiu $a1, $s1, 0x20 +/* 0812FC 7F04C7CC 460A2202 */ mul.s $f8, $f4, $f10 +/* 081300 7F04C7D0 00000000 */ nop +/* 081304 7F04C7D4 46104482 */ mul.s $f18, $f8, $f16 +/* 081308 7F04C7D8 46069101 */ sub.s $f4, $f18, $f6 +/* 08130C 7F04C7DC 0FC161C5 */ jal sub_GAME_7F058714 +/* 081310 7F04C7E0 E7A40078 */ swc1 $f4, 0x78($sp) +/* 081314 7F04C7E4 10000004 */ b .L7F04C7F8 +/* 081318 7F04C7E8 8FA90104 */ lw $t1, 0x104($sp) +.L7F04C7EC: +/* 08131C 7F04C7EC 0FC15F05 */ jal sub_GAME_7F057C14 +/* 081320 7F04C7F0 26250020 */ addiu $a1, $s1, 0x20 +.L7F04C7F4: +/* 081324 7F04C7F4 8FA90104 */ lw $t1, 0x104($sp) +.L7F04C7F8: +/* 081328 7F04C7F8 8D2F001C */ lw $t7, 0x1c($t1) +/* 08132C 7F04C7FC 51E00007 */ beql $t7, $zero, .L7F04C81C +/* 081330 7F04C800 8E0B0014 */ lw $t3, 0x14($s0) +/* 081334 7F04C804 8E02001C */ lw $v0, 0x1c($s0) +/* 081338 7F04C808 00408025 */ move $s0, $v0 +.L7F04C80C: +/* 08133C 7F04C80C 8C42001C */ lw $v0, 0x1c($v0) +/* 081340 7F04C810 5440FFFE */ bnezl $v0, .L7F04C80C +/* 081344 7F04C814 00408025 */ move $s0, $v0 +/* 081348 7F04C818 8E0B0014 */ lw $t3, 0x14($s0) +.L7F04C81C: +/* 08134C 7F04C81C 8FA20108 */ lw $v0, 0x108($sp) +/* 081350 7F04C820 AFAB00B0 */ sw $t3, 0xb0($sp) +/* 081354 7F04C824 90580001 */ lbu $t8, 1($v0) +/* 081358 7F04C828 330D0002 */ andi $t5, $t8, 2 +/* 08135C 7F04C82C 51A0004B */ beql $t5, $zero, .L7F04C95C +/* 081360 7F04C830 8E0A0014 */ lw $t2, 0x14($s0) +/* 081364 7F04C834 0FC10411 */ jal if_a0_plus_3_is_4_then_10_else_20 +/* 081368 7F04C838 02402025 */ move $a0, $s2 +/* 08136C 7F04C83C E7A0005C */ swc1 $f0, 0x5c($sp) +/* 081370 7F04C840 0FC1B1A8 */ jal getsubmatrix +/* 081374 7F04C844 8FA400F8 */ lw $a0, 0xf8($sp) +/* 081378 7F04C848 240E001F */ li $t6, 31 +/* 08137C 7F04C84C AFA20058 */ sw $v0, 0x58($sp) +/* 081380 7F04C850 0FC1E111 */ jal sub_GAME_7F078444 +/* 081384 7F04C854 AFAE0054 */ sw $t6, 0x54($sp) +/* 081388 7F04C858 00402025 */ move $a0, $v0 +/* 08138C 7F04C85C 8FA50058 */ lw $a1, 0x58($sp) +/* 081390 7F04C860 0FC16063 */ jal sub_GAME_7F05818C +/* 081394 7F04C864 27A600B8 */ addiu $a2, $sp, 0xb8 +/* 081398 7F04C868 8E2C0000 */ lw $t4, ($s1) +/* 08139C 7F04C86C 2419001D */ li $t9, 29 +/* 0813A0 7F04C870 02002025 */ move $a0, $s0 +/* 0813A4 7F04C874 318A0040 */ andi $t2, $t4, 0x40 +/* 0813A8 7F04C878 11400002 */ beqz $t2, .L7F04C884 +/* 0813AC 7F04C87C 00000000 */ nop +/* 0813B0 7F04C880 AFB90054 */ sw $t9, 0x54($sp) +.L7F04C884: +/* 0813B4 7F04C884 0FC0F416 */ jal sub_GAME_7F03D058 +/* 0813B8 7F04C888 00002825 */ move $a1, $zero +/* 0813BC 7F04C88C 8E050008 */ lw $a1, 8($s0) +/* 0813C0 7F04C890 8E060010 */ lw $a2, 0x10($s0) +/* 0813C4 7F04C894 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0813C8 7F04C898 44811000 */ mtc1 $at, $f2 +/* 0813CC 7F04C89C 44800000 */ mtc1 $zero, $f0 +/* 0813D0 7F04C8A0 C7AA00F0 */ lwc1 $f10, 0xf0($sp) +/* 0813D4 7F04C8A4 8FA80054 */ lw $t0, 0x54($sp) +/* 0813D8 7F04C8A8 27B100B0 */ addiu $s1, $sp, 0xb0 +/* 0813DC 7F04C8AC 02202025 */ move $a0, $s1 +/* 0813E0 7F04C8B0 8FA700E8 */ lw $a3, 0xe8($sp) +/* 0813E4 7F04C8B4 E7A2001C */ swc1 $f2, 0x1c($sp) +/* 0813E8 7F04C8B8 E7A20024 */ swc1 $f2, 0x24($sp) +/* 0813EC 7F04C8BC E7AA0010 */ swc1 $f10, 0x10($sp) +/* 0813F0 7F04C8C0 E7A00018 */ swc1 $f0, 0x18($sp) +/* 0813F4 7F04C8C4 E7A00020 */ swc1 $f0, 0x20($sp) +/* 0813F8 7F04C8C8 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 0813FC 7F04C8CC AFA80014 */ sw $t0, 0x14($sp) +/* 081400 7F04C8D0 10400011 */ beqz $v0, .L7F04C918 +/* 081404 7F04C8D4 02202025 */ move $a0, $s1 +/* 081408 7F04C8D8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 08140C 7F04C8DC 44818000 */ mtc1 $at, $f16 +/* 081410 7F04C8E0 8FA90054 */ lw $t1, 0x54($sp) +/* 081414 7F04C8E4 44804000 */ mtc1 $zero, $f8 +/* 081418 7F04C8E8 8FA500E8 */ lw $a1, 0xe8($sp) +/* 08141C 7F04C8EC 8FA600F0 */ lw $a2, 0xf0($sp) +/* 081420 7F04C8F0 8FA7005C */ lw $a3, 0x5c($sp) +/* 081424 7F04C8F4 AFA90010 */ sw $t1, 0x10($sp) +/* 081428 7F04C8F8 E7B00018 */ swc1 $f16, 0x18($sp) +/* 08142C 7F04C8FC 0FC2C62E */ jal sub_GAME_7F0B18B8 +/* 081430 7F04C900 E7A80014 */ swc1 $f8, 0x14($sp) +/* 081434 7F04C904 04410004 */ bgez $v0, .L7F04C918 +/* 081438 7F04C908 8FAF00B0 */ lw $t7, 0xb0($sp) +/* 08143C 7F04C90C 8FAB0108 */ lw $t3, 0x108($sp) +/* 081440 7F04C910 10000008 */ b .L7F04C934 +/* 081444 7F04C914 AD6F0014 */ sw $t7, 0x14($t3) +.L7F04C918: +/* 081448 7F04C918 8E180014 */ lw $t8, 0x14($s0) +/* 08144C 7F04C91C 8FAD0108 */ lw $t5, 0x108($sp) +/* 081450 7F04C920 ADB80014 */ sw $t8, 0x14($t5) +/* 081454 7F04C924 C6120008 */ lwc1 $f18, 8($s0) +/* 081458 7F04C928 E7B200E8 */ swc1 $f18, 0xe8($sp) +/* 08145C 7F04C92C C6060010 */ lwc1 $f6, 0x10($s0) +/* 081460 7F04C930 E7A600F0 */ swc1 $f6, 0xf0($sp) +.L7F04C934: +/* 081464 7F04C934 02002025 */ move $a0, $s0 +/* 081468 7F04C938 0FC0F416 */ jal sub_GAME_7F03D058 +/* 08146C 7F04C93C 24050001 */ li $a1, 1 +/* 081470 7F04C940 8FAE0058 */ lw $t6, 0x58($sp) +/* 081474 7F04C944 8FAC0108 */ lw $t4, 0x108($sp) +/* 081478 7F04C948 C5C40038 */ lwc1 $f4, 0x38($t6) +/* 08147C 7F04C94C 46002287 */ neg.s $f10, $f4 +/* 081480 7F04C950 1000000C */ b .L7F04C984 +/* 081484 7F04C954 E58A0018 */ swc1 $f10, 0x18($t4) +/* 081488 7F04C958 8E0A0014 */ lw $t2, 0x14($s0) +.L7F04C95C: +/* 08148C 7F04C95C 27A400B8 */ addiu $a0, $sp, 0xb8 +/* 081490 7F04C960 0FC15FF4 */ jal reset_array_of_0x10_floats +/* 081494 7F04C964 AC4A0014 */ sw $t2, 0x14($v0) +/* 081498 7F04C968 8FB900F8 */ lw $t9, 0xf8($sp) +/* 08149C 7F04C96C 27A500B8 */ addiu $a1, $sp, 0xb8 +/* 0814A0 7F04C970 0FC1629F */ jal matrix_multiply_A1_by_F12 +/* 0814A4 7F04C974 C72C0014 */ lwc1 $f12, 0x14($t9) +/* 0814A8 7F04C978 26040008 */ addiu $a0, $s0, 8 +/* 0814AC 7F04C97C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 0814B0 7F04C980 27A500B8 */ addiu $a1, $sp, 0xb8 +.L7F04C984: +/* 0814B4 7F04C984 0FC13011 */ jal sub_GAME_7F04C044 +/* 0814B8 7F04C988 8FA40108 */ lw $a0, 0x108($sp) +/* 0814BC 7F04C98C 0FC0E929 */ jal set_current_objposdata_plus_0x28 +/* 0814C0 7F04C990 8FA40108 */ lw $a0, 0x108($sp) +/* 0814C4 7F04C994 0FC0E901 */ jal set_stateflag_0x04_for_posdata +/* 0814C8 7F04C998 8FA40108 */ lw $a0, 0x108($sp) +/* 0814CC 7F04C99C C7A000E8 */ lwc1 $f0, 0xe8($sp) +/* 0814D0 7F04C9A0 8FA80108 */ lw $t0, 0x108($sp) +/* 0814D4 7F04C9A4 44804000 */ mtc1 $zero, $f8 +/* 0814D8 7F04C9A8 44808000 */ mtc1 $zero, $f16 +/* 0814DC 7F04C9AC E5000008 */ swc1 $f0, 8($t0) +/* 0814E0 7F04C9B0 E6400058 */ swc1 $f0, 0x58($s2) +/* 0814E4 7F04C9B4 C7A000EC */ lwc1 $f0, 0xec($sp) +/* 0814E8 7F04C9B8 8FA90108 */ lw $t1, 0x108($sp) +/* 0814EC 7F04C9BC 44809000 */ mtc1 $zero, $f18 +/* 0814F0 7F04C9C0 27A400B8 */ addiu $a0, $sp, 0xb8 +/* 0814F4 7F04C9C4 E520000C */ swc1 $f0, 0xc($t1) +/* 0814F8 7F04C9C8 E640005C */ swc1 $f0, 0x5c($s2) +/* 0814FC 7F04C9CC C7A000F0 */ lwc1 $f0, 0xf0($sp) +/* 081500 7F04C9D0 8FAF0108 */ lw $t7, 0x108($sp) +/* 081504 7F04C9D4 26450018 */ addiu $a1, $s2, 0x18 +/* 081508 7F04C9D8 E5E00010 */ swc1 $f0, 0x10($t7) +/* 08150C 7F04C9DC E6400060 */ swc1 $f0, 0x60($s2) +/* 081510 7F04C9E0 E7A800E8 */ swc1 $f8, 0xe8($sp) +/* 081514 7F04C9E4 E7B000EC */ swc1 $f16, 0xec($sp) +/* 081518 7F04C9E8 0FC16008 */ jal sub_GAME_7F058020 +/* 08151C 7F04C9EC E7B200F0 */ swc1 $f18, 0xf0($sp) +/* 081520 7F04C9F0 8E440010 */ lw $a0, 0x10($s2) +/* 081524 7F04C9F4 0FC100AD */ jal sub_GAME_7F0402B4 +/* 081528 7F04C9F8 2645007C */ addiu $a1, $s2, 0x7c +/* 08152C 7F04C9FC 924B007C */ lbu $t3, 0x7c($s2) +/* 081530 7F04CA00 9258007D */ lbu $t8, 0x7d($s2) +/* 081534 7F04CA04 924D007E */ lbu $t5, 0x7e($s2) +/* 081538 7F04CA08 924E007F */ lbu $t6, 0x7f($s2) +/* 08153C 7F04CA0C 02402025 */ move $a0, $s2 +/* 081540 7F04CA10 A24B0078 */ sb $t3, 0x78($s2) +/* 081544 7F04CA14 A2580079 */ sb $t8, 0x79($s2) +/* 081548 7F04CA18 A24D007A */ sb $t5, 0x7a($s2) +/* 08154C 7F04CA1C 0FC15B28 */ jal sub_GAME_7F056CA0 +/* 081550 7F04CA20 A24E007B */ sb $t6, 0x7b($s2) +/* 081554 7F04CA24 10000001 */ b .L7F04CA2C +/* 081558 7F04CA28 24020001 */ li $v0, 1 +.L7F04CA2C: +/* 08155C 7F04CA2C 8FBF003C */ lw $ra, 0x3c($sp) +/* 081560 7F04CA30 8FB00030 */ lw $s0, 0x30($sp) +/* 081564 7F04CA34 8FB10034 */ lw $s1, 0x34($sp) +/* 081568 7F04CA38 8FB20038 */ lw $s2, 0x38($sp) +/* 08156C 7F04CA3C 03E00008 */ jr $ra +/* 081570 7F04CA40 27BD0108 */ addiu $sp, $sp, 0x108 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04CA44(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052D6C +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D70 +.word 0x3f555555 /*0.83333331*/ +glabel D_80052D74 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D78 +.word 0x3fd55555 /*1.6666666*/ +glabel D_80052D7C +.word 0x3f555555 /*0.83333331*/ +glabel D_80052D80 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D84 +.word 0x3C20D97C /*0.009817477*/ +glabel D_80052D88 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D8C +.word 0x3C20D97C /*0.009817477*/ +glabel D_80052D90 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052D94 +.word 0x3C20D97C /*0.009817477*/ +.text +glabel sub_GAME_7F04CA44 +/* 081574 7F04CA44 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 081578 7F04CA48 AFBF0024 */ sw $ra, 0x24($sp) +/* 08157C 7F04CA4C AFB10020 */ sw $s1, 0x20($sp) +/* 081580 7F04CA50 AFB0001C */ sw $s0, 0x1c($sp) +/* 081584 7F04CA54 F7B40010 */ sdc1 $f20, 0x10($sp) +/* 081588 7F04CA58 8C8E0064 */ lw $t6, 0x64($a0) +/* 08158C 7F04CA5C 3C01FFF9 */ lui $at, (0xFFF9FFFF >> 16) # lui $at, 0xfff9 +/* 081590 7F04CA60 8C89000C */ lw $t1, 0xc($a0) +/* 081594 7F04CA64 3421FFFF */ ori $at, (0xFFF9FFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 081598 7F04CA68 01C17824 */ and $t7, $t6, $at +/* 08159C 7F04CA6C 0005CC40 */ sll $t9, $a1, 0x11 +/* 0815A0 7F04CA70 AC8F0064 */ sw $t7, 0x64($a0) +/* 0815A4 7F04CA74 01F94025 */ or $t0, $t7, $t9 +/* 0815A8 7F04CA78 312A0100 */ andi $t2, $t1, 0x100 +/* 0815AC 7F04CA7C 00808025 */ move $s0, $a0 +/* 0815B0 7F04CA80 1540009A */ bnez $t2, .L7F04CCEC +/* 0815B4 7F04CA84 AC880064 */ sw $t0, 0x64($a0) +/* 0815B8 7F04CA88 8C8B0008 */ lw $t3, 8($a0) +/* 0815BC 7F04CA8C 310E00C0 */ andi $t6, $t0, 0xc0 +/* 0815C0 7F04CA90 316C0001 */ andi $t4, $t3, 1 +/* 0815C4 7F04CA94 51800096 */ beql $t4, $zero, .L7F04CCF0 +/* 0815C8 7F04CA98 8FBF0024 */ lw $ra, 0x24($sp) +/* 0815CC 7F04CA9C 15C00093 */ bnez $t6, .L7F04CCEC +/* 0815D0 7F04CAA0 3C188003 */ lui $t8, %hi(D_80032040) +/* 0815D4 7F04CAA4 27182040 */ addiu $t8, %lo(D_80032040) # addiu $t8, $t8, 0x2040 +/* 0815D8 7F04CAA8 8F010000 */ lw $at, ($t8) +/* 0815DC 7F04CAAC 27AF0034 */ addiu $t7, $sp, 0x34 +/* 0815E0 7F04CAB0 8F080004 */ lw $t0, 4($t8) +/* 0815E4 7F04CAB4 ADE10000 */ sw $at, ($t7) +/* 0815E8 7F04CAB8 8F010008 */ lw $at, 8($t8) +/* 0815EC 7F04CABC ADE80004 */ sw $t0, 4($t7) +/* 0815F0 7F04CAC0 00008825 */ move $s1, $zero +/* 0815F4 7F04CAC4 ADE10008 */ sw $at, 8($t7) +/* 0815F8 7F04CAC8 0FC0FF6A */ jal sub_GAME_7F03FDA8 +/* 0815FC 7F04CACC 8C840010 */ lw $a0, 0x10($a0) +/* 081600 7F04CAD0 8E090064 */ lw $t1, 0x64($s0) +/* 081604 7F04CAD4 312A0080 */ andi $t2, $t1, 0x80 +/* 081608 7F04CAD8 11400002 */ beqz $t2, .L7F04CAE4 +/* 08160C 7F04CADC 00000000 */ nop +/* 081610 7F04CAE0 8E11006C */ lw $s1, 0x6c($s0) +.L7F04CAE4: +/* 081614 7F04CAE4 52200082 */ beql $s1, $zero, .L7F04CCF0 +/* 081618 7F04CAE8 8FBF0024 */ lw $ra, 0x24($sp) +/* 08161C 7F04CAEC 0C002914 */ jal get_random_value +/* 081620 7F04CAF0 00000000 */ nop +/* 081624 7F04CAF4 44822000 */ mtc1 $v0, $f4 +/* 081628 7F04CAF8 3C012F80 */ li $at, 0x2F800000 # 0.000000 +/* 08162C 7F04CAFC 4481A000 */ mtc1 $at, $f20 +/* 081630 7F04CB00 04410005 */ bgez $v0, .L7F04CB18 +/* 081634 7F04CB04 468021A0 */ cvt.s.w $f6, $f4 +/* 081638 7F04CB08 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 08163C 7F04CB0C 44814000 */ mtc1 $at, $f8 +/* 081640 7F04CB10 00000000 */ nop +/* 081644 7F04CB14 46083180 */ add.s $f6, $f6, $f8 +.L7F04CB18: +/* 081648 7F04CB18 46143282 */ mul.s $f10, $f6, $f20 +/* 08164C 7F04CB1C 3C018005 */ lui $at, %hi(D_80052D6C) +/* 081650 7F04CB20 C4302D6C */ lwc1 $f16, %lo(D_80052D6C)($at) +/* 081654 7F04CB24 3C018005 */ lui $at, %hi(D_80052D70) +/* 081658 7F04CB28 C4242D70 */ lwc1 $f4, %lo(D_80052D70)($at) +/* 08165C 7F04CB2C 46105482 */ mul.s $f18, $f10, $f16 +/* 081660 7F04CB30 46049201 */ sub.s $f8, $f18, $f4 +/* 081664 7F04CB34 0C002914 */ jal get_random_value +/* 081668 7F04CB38 E6280004 */ swc1 $f8, 4($s1) +/* 08166C 7F04CB3C 44823000 */ mtc1 $v0, $f6 +/* 081670 7F04CB40 3C018005 */ lui $at, %hi(D_80052D74) +/* 081674 7F04CB44 C4222D74 */ lwc1 $f2, %lo(D_80052D74)($at) +/* 081678 7F04CB48 04410005 */ bgez $v0, .L7F04CB60 +/* 08167C 7F04CB4C 468032A0 */ cvt.s.w $f10, $f6 +/* 081680 7F04CB50 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 081684 7F04CB54 44818000 */ mtc1 $at, $f16 +/* 081688 7F04CB58 00000000 */ nop +/* 08168C 7F04CB5C 46105280 */ add.s $f10, $f10, $f16 +.L7F04CB60: +/* 081690 7F04CB60 46145482 */ mul.s $f18, $f10, $f20 +/* 081694 7F04CB64 00000000 */ nop +/* 081698 7F04CB68 46029002 */ mul.s $f0, $f18, $f2 +/* 08169C 7F04CB6C 46000100 */ add.s $f4, $f0, $f0 +/* 0816A0 7F04CB70 46022200 */ add.s $f8, $f4, $f2 +/* 0816A4 7F04CB74 0C002914 */ jal get_random_value +/* 0816A8 7F04CB78 E6280008 */ swc1 $f8, 8($s1) +/* 0816AC 7F04CB7C 44823000 */ mtc1 $v0, $f6 +/* 0816B0 7F04CB80 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 0816B4 7F04CB84 04410004 */ bgez $v0, .L7F04CB98 +/* 0816B8 7F04CB88 46803420 */ cvt.s.w $f16, $f6 +/* 0816BC 7F04CB8C 44815000 */ mtc1 $at, $f10 +/* 0816C0 7F04CB90 00000000 */ nop +/* 0816C4 7F04CB94 460A8400 */ add.s $f16, $f16, $f10 +.L7F04CB98: +/* 0816C8 7F04CB98 46148482 */ mul.s $f18, $f16, $f20 +/* 0816CC 7F04CB9C 3C018005 */ lui $at, %hi(D_80052D78) +/* 0816D0 7F04CBA0 C4242D78 */ lwc1 $f4, %lo(D_80052D78)($at) +/* 0816D4 7F04CBA4 3C018005 */ lui $at, %hi(D_80052D7C) +/* 0816D8 7F04CBA8 C4262D7C */ lwc1 $f6, %lo(D_80052D7C)($at) +/* 0816DC 7F04CBAC 46049202 */ mul.s $f8, $f18, $f4 +/* 0816E0 7F04CBB0 46064281 */ sub.s $f10, $f8, $f6 +/* 0816E4 7F04CBB4 E62A000C */ swc1 $f10, 0xc($s1) +/* 0816E8 7F04CBB8 8E0B000C */ lw $t3, 0xc($s0) +/* 0816EC 7F04CBBC 316C0200 */ andi $t4, $t3, 0x200 +/* 0816F0 7F04CBC0 5580003C */ bnezl $t4, .L7F04CCB4 +/* 0816F4 7F04CBC4 27A40034 */ addiu $a0, $sp, 0x34 +/* 0816F8 7F04CBC8 0C002914 */ jal get_random_value +/* 0816FC 7F04CBCC 00000000 */ nop +/* 081700 7F04CBD0 44828000 */ mtc1 $v0, $f16 +/* 081704 7F04CBD4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 081708 7F04CBD8 04410004 */ bgez $v0, .L7F04CBEC +/* 08170C 7F04CBDC 468084A0 */ cvt.s.w $f18, $f16 +/* 081710 7F04CBE0 44812000 */ mtc1 $at, $f4 +/* 081714 7F04CBE4 00000000 */ nop +/* 081718 7F04CBE8 46049480 */ add.s $f18, $f18, $f4 +.L7F04CBEC: +/* 08171C 7F04CBEC 46149202 */ mul.s $f8, $f18, $f20 +/* 081720 7F04CBF0 3C018005 */ lui $at, %hi(D_80052D80) +/* 081724 7F04CBF4 C4262D80 */ lwc1 $f6, %lo(D_80052D80)($at) +/* 081728 7F04CBF8 3C0143A0 */ li $at, 0x43A00000 # 320.000000 +/* 08172C 7F04CBFC 44818000 */ mtc1 $at, $f16 +/* 081730 7F04CC00 3C018005 */ lui $at, %hi(D_80052D84) +/* 081734 7F04CC04 C4322D84 */ lwc1 $f18, %lo(D_80052D84)($at) +/* 081738 7F04CC08 46064282 */ mul.s $f10, $f8, $f6 +/* 08173C 7F04CC0C 46105103 */ div.s $f4, $f10, $f16 +/* 081740 7F04CC10 46122201 */ sub.s $f8, $f4, $f18 +/* 081744 7F04CC14 0C002914 */ jal get_random_value +/* 081748 7F04CC18 E7A80034 */ swc1 $f8, 0x34($sp) +/* 08174C 7F04CC1C 44823000 */ mtc1 $v0, $f6 +/* 081750 7F04CC20 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 081754 7F04CC24 04410004 */ bgez $v0, .L7F04CC38 +/* 081758 7F04CC28 468032A0 */ cvt.s.w $f10, $f6 +/* 08175C 7F04CC2C 44818000 */ mtc1 $at, $f16 +/* 081760 7F04CC30 00000000 */ nop +/* 081764 7F04CC34 46105280 */ add.s $f10, $f10, $f16 +.L7F04CC38: +/* 081768 7F04CC38 46145102 */ mul.s $f4, $f10, $f20 +/* 08176C 7F04CC3C 3C018005 */ lui $at, %hi(D_80052D88) +/* 081770 7F04CC40 C4322D88 */ lwc1 $f18, %lo(D_80052D88)($at) +/* 081774 7F04CC44 3C0143A0 */ li $at, 0x43A00000 # 320.000000 +/* 081778 7F04CC48 44813000 */ mtc1 $at, $f6 +/* 08177C 7F04CC4C 3C018005 */ lui $at, %hi(D_80052D8C) +/* 081780 7F04CC50 C42A2D8C */ lwc1 $f10, %lo(D_80052D8C)($at) +/* 081784 7F04CC54 46122202 */ mul.s $f8, $f4, $f18 +/* 081788 7F04CC58 46064403 */ div.s $f16, $f8, $f6 +/* 08178C 7F04CC5C 460A8101 */ sub.s $f4, $f16, $f10 +/* 081790 7F04CC60 0C002914 */ jal get_random_value +/* 081794 7F04CC64 E7A40038 */ swc1 $f4, 0x38($sp) +/* 081798 7F04CC68 44829000 */ mtc1 $v0, $f18 +/* 08179C 7F04CC6C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 0817A0 7F04CC70 04410004 */ bgez $v0, .L7F04CC84 +/* 0817A4 7F04CC74 46809220 */ cvt.s.w $f8, $f18 +/* 0817A8 7F04CC78 44813000 */ mtc1 $at, $f6 +/* 0817AC 7F04CC7C 00000000 */ nop +/* 0817B0 7F04CC80 46064200 */ add.s $f8, $f8, $f6 +.L7F04CC84: +/* 0817B4 7F04CC84 46144402 */ mul.s $f16, $f8, $f20 +/* 0817B8 7F04CC88 3C018005 */ lui $at, %hi(D_80052D90) +/* 0817BC 7F04CC8C C42A2D90 */ lwc1 $f10, %lo(D_80052D90)($at) +/* 0817C0 7F04CC90 3C0143A0 */ li $at, 0x43A00000 # 320.000000 +/* 0817C4 7F04CC94 44819000 */ mtc1 $at, $f18 +/* 0817C8 7F04CC98 3C018005 */ lui $at, %hi(D_80052D94) +/* 0817CC 7F04CC9C C4282D94 */ lwc1 $f8, %lo(D_80052D94)($at) +/* 0817D0 7F04CCA0 460A8102 */ mul.s $f4, $f16, $f10 +/* 0817D4 7F04CCA4 46122183 */ div.s $f6, $f4, $f18 +/* 0817D8 7F04CCA8 46083401 */ sub.s $f16, $f6, $f8 +/* 0817DC 7F04CCAC E7B0003C */ swc1 $f16, 0x3c($sp) +/* 0817E0 7F04CCB0 27A40034 */ addiu $a0, $sp, 0x34 +.L7F04CCB4: +/* 0817E4 7F04CCB4 0FC161C5 */ jal sub_GAME_7F058714 +/* 0817E8 7F04CCB8 26250020 */ addiu $a1, $s1, 0x20 +/* 0817EC 7F04CCBC 8E2D0000 */ lw $t5, ($s1) +/* 0817F0 7F04CCC0 2401FEFF */ li $at, -257 +/* 0817F4 7F04CCC4 35AE0001 */ ori $t6, $t5, 1 +/* 0817F8 7F04CCC8 AE2E0000 */ sw $t6, ($s1) +/* 0817FC 7F04CCCC 8E190008 */ lw $t9, 8($s0) +/* 081800 7F04CCD0 8E180064 */ lw $t8, 0x64($s0) +/* 081804 7F04CCD4 03217824 */ and $t7, $t9, $at +/* 081808 7F04CCD8 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff +/* 08180C 7F04CCDC 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff +/* 081810 7F04CCE0 03014024 */ and $t0, $t8, $at +/* 081814 7F04CCE4 AE0F0008 */ sw $t7, 8($s0) +/* 081818 7F04CCE8 AE080064 */ sw $t0, 0x64($s0) +.L7F04CCEC: +/* 08181C 7F04CCEC 8FBF0024 */ lw $ra, 0x24($sp) +.L7F04CCF0: +/* 081820 7F04CCF0 D7B40010 */ ldc1 $f20, 0x10($sp) +/* 081824 7F04CCF4 8FB0001C */ lw $s0, 0x1c($sp) +/* 081828 7F04CCF8 8FB10020 */ lw $s1, 0x20($sp) +/* 08182C 7F04CCFC 03E00008 */ jr $ra +/* 081830 7F04CD00 27BD0040 */ addiu $sp, $sp, 0x40 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04CD04(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04CD04 +/* 081834 7F04CD04 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 081838 7F04CD08 AFBF0034 */ sw $ra, 0x34($sp) +/* 08183C 7F04CD0C AFB60030 */ sw $s6, 0x30($sp) +/* 081840 7F04CD10 AFB5002C */ sw $s5, 0x2c($sp) +/* 081844 7F04CD14 AFB40028 */ sw $s4, 0x28($sp) +/* 081848 7F04CD18 AFB30024 */ sw $s3, 0x24($sp) +/* 08184C 7F04CD1C AFB20020 */ sw $s2, 0x20($sp) +/* 081850 7F04CD20 AFB1001C */ sw $s1, 0x1c($sp) +/* 081854 7F04CD24 AFB00018 */ sw $s0, 0x18($sp) +/* 081858 7F04CD28 8C8E0014 */ lw $t6, 0x14($a0) +/* 08185C 7F04CD2C 00A0B025 */ move $s6, $a1 +/* 081860 7F04CD30 8C940004 */ lw $s4, 4($a0) +/* 081864 7F04CD34 27A50048 */ addiu $a1, $sp, 0x48 +/* 081868 7F04CD38 27A60044 */ addiu $a2, $sp, 0x44 +/* 08186C 7F04CD3C 0FC0F32C */ jal sub_GAME_7F03CCB0 +/* 081870 7F04CD40 91D50003 */ lbu $s5, 3($t6) +/* 081874 7F04CD44 8FAF0044 */ lw $t7, 0x44($sp) +/* 081878 7F04CD48 59E00027 */ blezl $t7, .L7F04CDE8 +/* 08187C 7F04CD4C 8FBF0034 */ lw $ra, 0x34($sp) +/* 081880 7F04CD50 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry +/* 081884 7F04CD54 00000000 */ nop +/* 081888 7F04CD58 10400022 */ beqz $v0, .L7F04CDE4 +/* 08188C 7F04CD5C 00408825 */ move $s1, $v0 +/* 081890 7F04CD60 24130004 */ li $s3, 4 +/* 081894 7F04CD64 24120001 */ li $s2, 1 +/* 081898 7F04CD68 92220000 */ lbu $v0, ($s1) +.L7F04CD6C: +/* 08189C 7F04CD6C 52420004 */ beql $s2, $v0, .L7F04CD80 +/* 0818A0 7F04CD70 8E380014 */ lw $t8, 0x14($s1) +/* 0818A4 7F04CD74 56620019 */ bnel $s3, $v0, .L7F04CDDC +/* 0818A8 7F04CD78 8E310024 */ lw $s1, 0x24($s1) +/* 0818AC 7F04CD7C 8E380014 */ lw $t8, 0x14($s1) +.L7F04CD80: +/* 0818B0 7F04CD80 93190003 */ lbu $t9, 3($t8) +/* 0818B4 7F04CD84 56B90015 */ bnel $s5, $t9, .L7F04CDDC +/* 0818B8 7F04CD88 8E310024 */ lw $s1, 0x24($s1) +/* 0818BC 7F04CD8C 8E300004 */ lw $s0, 4($s1) +/* 0818C0 7F04CD90 C684005C */ lwc1 $f4, 0x5c($s4) +/* 0818C4 7F04CD94 C606005C */ lwc1 $f6, 0x5c($s0) +/* 0818C8 7F04CD98 4606203C */ c.lt.s $f4, $f6 +/* 0818CC 7F04CD9C 00000000 */ nop +/* 0818D0 7F04CDA0 4502000E */ bc1fl .L7F04CDDC +/* 0818D4 7F04CDA4 8E310024 */ lw $s1, 0x24($s1) +/* 0818D8 7F04CDA8 8E080064 */ lw $t0, 0x64($s0) +/* 0818DC 7F04CDAC 26040058 */ addiu $a0, $s0, 0x58 +/* 0818E0 7F04CDB0 8FA50048 */ lw $a1, 0x48($sp) +/* 0818E4 7F04CDB4 31098000 */ andi $t1, $t0, 0x8000 +/* 0818E8 7F04CDB8 51200008 */ beql $t1, $zero, .L7F04CDDC +/* 0818EC 7F04CDBC 8E310024 */ lw $s1, 0x24($s1) +/* 0818F0 7F04CDC0 0FC0F336 */ jal sub_GAME_7F03CCD8 +/* 0818F4 7F04CDC4 8FA60044 */ lw $a2, 0x44($sp) +/* 0818F8 7F04CDC8 10400003 */ beqz $v0, .L7F04CDD8 +/* 0818FC 7F04CDCC 02002025 */ move $a0, $s0 +/* 081900 7F04CDD0 0FC13291 */ jal sub_GAME_7F04CA44 +/* 081904 7F04CDD4 02C02825 */ move $a1, $s6 +.L7F04CDD8: +/* 081908 7F04CDD8 8E310024 */ lw $s1, 0x24($s1) +.L7F04CDDC: +/* 08190C 7F04CDDC 5620FFE3 */ bnezl $s1, .L7F04CD6C +/* 081910 7F04CDE0 92220000 */ lbu $v0, ($s1) +.L7F04CDE4: +/* 081914 7F04CDE4 8FBF0034 */ lw $ra, 0x34($sp) +.L7F04CDE8: +/* 081918 7F04CDE8 8FB00018 */ lw $s0, 0x18($sp) +/* 08191C 7F04CDEC 8FB1001C */ lw $s1, 0x1c($sp) +/* 081920 7F04CDF0 8FB20020 */ lw $s2, 0x20($sp) +/* 081924 7F04CDF4 8FB30024 */ lw $s3, 0x24($sp) +/* 081928 7F04CDF8 8FB40028 */ lw $s4, 0x28($sp) +/* 08192C 7F04CDFC 8FB5002C */ lw $s5, 0x2c($sp) +/* 081930 7F04CE00 8FB60030 */ lw $s6, 0x30($sp) +/* 081934 7F04CE04 03E00008 */ jr $ra +/* 081938 7F04CE08 27BD0058 */ addiu $sp, $sp, 0x58 +) +#endif + + + + + +#ifdef NONMATCHING +void object_explosion_related(void) { + +} +#else +GLOBAL_ASM( +.text +glabel object_explosion_related +/* 08193C 7F04CE0C 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 081940 7F04CE10 AFBF002C */ sw $ra, 0x2c($sp) +/* 081944 7F04CE14 AFB10028 */ sw $s1, 0x28($sp) +/* 081948 7F04CE18 AFB00024 */ sw $s0, 0x24($sp) +/* 08194C 7F04CE1C AFA5004C */ sw $a1, 0x4c($sp) +/* 081950 7F04CE20 AFA60050 */ sw $a2, 0x50($sp) +/* 081954 7F04CE24 C4860070 */ lwc1 $f6, 0x70($a0) +/* 081958 7F04CE28 C4840074 */ lwc1 $f4, 0x74($a0) +/* 08195C 7F04CE2C 00808825 */ move $s1, $a0 +/* 081960 7F04CE30 4606203C */ c.lt.s $f4, $f6 +/* 081964 7F04CE34 00000000 */ nop +/* 081968 7F04CE38 45030006 */ bc1tl .L7F04CE54 +/* 08196C 7F04CE3C 862E0004 */ lh $t6, 4($s1) +/* 081970 7F04CE40 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 081974 7F04CE44 00000000 */ nop +/* 081978 7F04CE48 504000C4 */ beql $v0, $zero, .L7F04D15C +/* 08197C 7F04CE4C 8FBF002C */ lw $ra, 0x2c($sp) +/* 081980 7F04CE50 862E0004 */ lh $t6, 4($s1) +.L7F04CE54: +/* 081984 7F04CE54 3C188004 */ lui $t8, %hi(object_explosion_details) +/* 081988 7F04CE58 8E230010 */ lw $v1, 0x10($s1) +/* 08198C 7F04CE5C 000E78C0 */ sll $t7, $t6, 3 +/* 081990 7F04CE60 01EE7823 */ subu $t7, $t7, $t6 +/* 081994 7F04CE64 000F7840 */ sll $t7, $t7, 1 +/* 081998 7F04CE68 030FC021 */ addu $t8, $t8, $t7 +/* 08199C 7F04CE6C 8718B224 */ lh $t8, %lo(object_explosion_details)($t8) +/* 0819A0 7F04CE70 02202025 */ move $a0, $s1 +/* 0819A4 7F04CE74 00608025 */ move $s0, $v1 +/* 0819A8 7F04CE78 A7B8003E */ sh $t8, 0x3e($sp) +/* 0819AC 7F04CE7C 8C79001C */ lw $t9, 0x1c($v1) +/* 0819B0 7F04CE80 53200007 */ beql $t9, $zero, .L7F04CEA0 +/* 0819B4 7F04CE84 8E080014 */ lw $t0, 0x14($s0) +/* 0819B8 7F04CE88 8E02001C */ lw $v0, 0x1c($s0) +/* 0819BC 7F04CE8C 00408025 */ move $s0, $v0 +.L7F04CE90: +/* 0819C0 7F04CE90 8C42001C */ lw $v0, 0x1c($v0) +/* 0819C4 7F04CE94 5440FFFE */ bnezl $v0, .L7F04CE90 +/* 0819C8 7F04CE98 00408025 */ move $s0, $v0 +/* 0819CC 7F04CE9C 8E080014 */ lw $t0, 0x14($s0) +.L7F04CEA0: +/* 0819D0 7F04CEA0 AFA30044 */ sw $v1, 0x44($sp) +/* 0819D4 7F04CEA4 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 0819D8 7F04CEA8 AFA80038 */ sw $t0, 0x38($sp) +/* 0819DC 7F04CEAC 14400056 */ bnez $v0, .L7F04D008 +/* 0819E0 7F04CEB0 00000000 */ nop +/* 0819E4 7F04CEB4 92290002 */ lbu $t1, 2($s1) +/* 0819E8 7F04CEB8 44804000 */ mtc1 $zero, $f8 +/* 0819EC 7F04CEBC 352A0080 */ ori $t2, $t1, 0x80 +/* 0819F0 7F04CEC0 A22A0002 */ sb $t2, 2($s1) +/* 0819F4 7F04CEC4 E6280070 */ swc1 $f8, 0x70($s1) +/* 0819F8 7F04CEC8 8FAB0038 */ lw $t3, 0x38($sp) +/* 0819FC 7F04CECC 5160002B */ beql $t3, $zero, .L7F04CF7C +/* 081A00 7F04CED0 8E2C000C */ lw $t4, 0xc($s1) +/* 081A04 7F04CED4 920C0001 */ lbu $t4, 1($s0) +/* 081A08 7F04CED8 8FA2004C */ lw $v0, 0x4c($sp) +/* 081A0C 7F04CEDC 27A40038 */ addiu $a0, $sp, 0x38 +/* 081A10 7F04CEE0 318D0008 */ andi $t5, $t4, 8 +/* 081A14 7F04CEE4 55A00019 */ bnezl $t5, .L7F04CF4C +/* 081A18 7F04CEE8 8E060014 */ lw $a2, 0x14($s0) +/* 081A1C 7F04CEEC C44A0008 */ lwc1 $f10, 8($v0) +/* 081A20 7F04CEF0 8E050008 */ lw $a1, 8($s0) +/* 081A24 7F04CEF4 8E060010 */ lw $a2, 0x10($s0) +/* 081A28 7F04CEF8 8C470000 */ lw $a3, ($v0) +/* 081A2C 7F04CEFC 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 081A30 7F04CF00 E7AA0010 */ swc1 $f10, 0x10($sp) +/* 081A34 7F04CF04 10400010 */ beqz $v0, .L7F04CF48 +/* 081A38 7F04CF08 8FA40044 */ lw $a0, 0x44($sp) +/* 081A3C 7F04CF0C 8E2E0008 */ lw $t6, 8($s1) +/* 081A40 7F04CF10 8FB90050 */ lw $t9, 0x50($sp) +/* 081A44 7F04CF14 2608002C */ addiu $t0, $s0, 0x2c +/* 081A48 7F04CF18 31CF000E */ andi $t7, $t6, 0xe +/* 081A4C 7F04CF1C 2DF80001 */ sltiu $t8, $t7, 1 +/* 081A50 7F04CF20 AFB80010 */ sw $t8, 0x10($sp) +/* 081A54 7F04CF24 AFA80018 */ sw $t0, 0x18($sp) +/* 081A58 7F04CF28 AFA0001C */ sw $zero, 0x1c($sp) +/* 081A5C 7F04CF2C 8FA5004C */ lw $a1, 0x4c($sp) +/* 081A60 7F04CF30 8FA60038 */ lw $a2, 0x38($sp) +/* 081A64 7F04CF34 87A7003E */ lh $a3, 0x3e($sp) +/* 081A68 7F04CF38 0FC27094 */ jal sub_GAME_7F09C250 +/* 081A6C 7F04CF3C AFB90014 */ sw $t9, 0x14($sp) +/* 081A70 7F04CF40 1000000E */ b .L7F04CF7C +/* 081A74 7F04CF44 8E2C000C */ lw $t4, 0xc($s1) +.L7F04CF48: +/* 081A78 7F04CF48 8E060014 */ lw $a2, 0x14($s0) +.L7F04CF4C: +/* 081A7C 7F04CF4C 8FA90050 */ lw $t1, 0x50($sp) +/* 081A80 7F04CF50 260A002C */ addiu $t2, $s0, 0x2c +/* 081A84 7F04CF54 240B0001 */ li $t3, 1 +/* 081A88 7F04CF58 AFAB001C */ sw $t3, 0x1c($sp) +/* 081A8C 7F04CF5C AFAA0018 */ sw $t2, 0x18($sp) +/* 081A90 7F04CF60 AFA00010 */ sw $zero, 0x10($sp) +/* 081A94 7F04CF64 8FA40044 */ lw $a0, 0x44($sp) +/* 081A98 7F04CF68 8FA5004C */ lw $a1, 0x4c($sp) +/* 081A9C 7F04CF6C 87A7003E */ lh $a3, 0x3e($sp) +/* 081AA0 7F04CF70 0FC27094 */ jal sub_GAME_7F09C250 +/* 081AA4 7F04CF74 AFA90014 */ sw $t1, 0x14($sp) +/* 081AA8 7F04CF78 8E2C000C */ lw $t4, 0xc($s1) +.L7F04CF7C: +/* 081AAC 7F04CF7C 02202025 */ move $a0, $s1 +/* 081AB0 7F04CF80 318D2000 */ andi $t5, $t4, 0x2000 +/* 081AB4 7F04CF84 11A00005 */ beqz $t5, .L7F04CF9C +/* 081AB8 7F04CF88 00000000 */ nop +/* 081ABC 7F04CF8C 8E2E0064 */ lw $t6, 0x64($s1) +/* 081AC0 7F04CF90 35CF0004 */ ori $t7, $t6, 4 +/* 081AC4 7F04CF94 10000070 */ b .L7F04D158 +/* 081AC8 7F04CF98 AE2F0064 */ sw $t7, 0x64($s1) +.L7F04CF9C: +/* 081ACC 7F04CF9C 0FC12D84 */ jal sub_GAME_7F04B610 +/* 081AD0 7F04CFA0 24050001 */ li $a1, 1 +/* 081AD4 7F04CFA4 8FA40044 */ lw $a0, 0x44($sp) +/* 081AD8 7F04CFA8 5604006C */ bnel $s0, $a0, .L7F04D15C +/* 081ADC 7F04CFAC 8FBF002C */ lw $ra, 0x2c($sp) +/* 081AE0 7F04CFB0 0FC13341 */ jal sub_GAME_7F04CD04 +/* 081AE4 7F04CFB4 8FA50050 */ lw $a1, 0x50($sp) +/* 081AE8 7F04CFB8 8E220064 */ lw $v0, 0x64($s1) +/* 081AEC 7F04CFBC 30588000 */ andi $t8, $v0, 0x8000 +/* 081AF0 7F04CFC0 5300000A */ beql $t8, $zero, .L7F04CFEC +/* 081AF4 7F04CFC4 3C010001 */ lui $at, 1 +/* 081AF8 7F04CFC8 0C002914 */ jal get_random_value +/* 081AFC 7F04CFCC 00000000 */ nop +/* 081B00 7F04CFD0 24010003 */ li $at, 3 +/* 081B04 7F04CFD4 0041001B */ divu $zero, $v0, $at +/* 081B08 7F04CFD8 0000C810 */ mfhi $t9 +/* 081B0C 7F04CFDC 5720005F */ bnezl $t9, .L7F04D15C +/* 081B10 7F04CFE0 8FBF002C */ lw $ra, 0x2c($sp) +/* 081B14 7F04CFE4 8E220064 */ lw $v0, 0x64($s1) +/* 081B18 7F04CFE8 3C010001 */ lui $at, 1 +.L7F04CFEC: +/* 081B1C 7F04CFEC 00414025 */ or $t0, $v0, $at +/* 081B20 7F04CFF0 AE280064 */ sw $t0, 0x64($s1) +/* 081B24 7F04CFF4 8FA50050 */ lw $a1, 0x50($sp) +/* 081B28 7F04CFF8 0FC13291 */ jal sub_GAME_7F04CA44 +/* 081B2C 7F04CFFC 02202025 */ move $a0, $s1 +/* 081B30 7F04D000 10000056 */ b .L7F04D15C +/* 081B34 7F04D004 8FBF002C */ lw $ra, 0x2c($sp) +.L7F04D008: +/* 081B38 7F04D008 0FC0FFD8 */ jal sub_GAME_7F03FF60 +/* 081B3C 7F04D00C 02202025 */ move $a0, $s1 +/* 081B40 7F04D010 30490003 */ andi $t1, $v0, 3 +/* 081B44 7F04D014 15200031 */ bnez $t1, .L7F04D0DC +/* 081B48 7F04D018 AFA20034 */ sw $v0, 0x34($sp) +/* 081B4C 7F04D01C 00025083 */ sra $t2, $v0, 2 +/* 081B50 7F04D020 25450001 */ addiu $a1, $t2, 1 +/* 081B54 7F04D024 0FC12D84 */ jal sub_GAME_7F04B610 +/* 081B58 7F04D028 02202025 */ move $a0, $s1 +/* 081B5C 7F04D02C 8FAB0038 */ lw $t3, 0x38($sp) +/* 081B60 7F04D030 1160002A */ beqz $t3, .L7F04D0DC +/* 081B64 7F04D034 00000000 */ nop +/* 081B68 7F04D038 920C0001 */ lbu $t4, 1($s0) +/* 081B6C 7F04D03C 8FA2004C */ lw $v0, 0x4c($sp) +/* 081B70 7F04D040 27A40038 */ addiu $a0, $sp, 0x38 +/* 081B74 7F04D044 318D0008 */ andi $t5, $t4, 8 +/* 081B78 7F04D048 55A00019 */ bnezl $t5, .L7F04D0B0 +/* 081B7C 7F04D04C 8E060014 */ lw $a2, 0x14($s0) +/* 081B80 7F04D050 C4500008 */ lwc1 $f16, 8($v0) +/* 081B84 7F04D054 8E050008 */ lw $a1, 8($s0) +/* 081B88 7F04D058 8E060010 */ lw $a2, 0x10($s0) +/* 081B8C 7F04D05C 8C470000 */ lw $a3, ($v0) +/* 081B90 7F04D060 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 081B94 7F04D064 E7B00010 */ swc1 $f16, 0x10($sp) +/* 081B98 7F04D068 10400010 */ beqz $v0, .L7F04D0AC +/* 081B9C 7F04D06C 8FA40044 */ lw $a0, 0x44($sp) +/* 081BA0 7F04D070 8E2E0008 */ lw $t6, 8($s1) +/* 081BA4 7F04D074 8FB90050 */ lw $t9, 0x50($sp) +/* 081BA8 7F04D078 2608002C */ addiu $t0, $s0, 0x2c +/* 081BAC 7F04D07C 31CF000E */ andi $t7, $t6, 0xe +/* 081BB0 7F04D080 2DF80001 */ sltiu $t8, $t7, 1 +/* 081BB4 7F04D084 AFB80010 */ sw $t8, 0x10($sp) +/* 081BB8 7F04D088 AFA80018 */ sw $t0, 0x18($sp) +/* 081BBC 7F04D08C AFA0001C */ sw $zero, 0x1c($sp) +/* 081BC0 7F04D090 8FA5004C */ lw $a1, 0x4c($sp) +/* 081BC4 7F04D094 8FA60038 */ lw $a2, 0x38($sp) +/* 081BC8 7F04D098 24070010 */ li $a3, 16 +/* 081BCC 7F04D09C 0FC27094 */ jal sub_GAME_7F09C250 +/* 081BD0 7F04D0A0 AFB90014 */ sw $t9, 0x14($sp) +/* 081BD4 7F04D0A4 1000000D */ b .L7F04D0DC +/* 081BD8 7F04D0A8 00000000 */ nop +.L7F04D0AC: +/* 081BDC 7F04D0AC 8E060014 */ lw $a2, 0x14($s0) +.L7F04D0B0: +/* 081BE0 7F04D0B0 8FA90050 */ lw $t1, 0x50($sp) +/* 081BE4 7F04D0B4 260A002C */ addiu $t2, $s0, 0x2c +/* 081BE8 7F04D0B8 240B0001 */ li $t3, 1 +/* 081BEC 7F04D0BC AFAB001C */ sw $t3, 0x1c($sp) +/* 081BF0 7F04D0C0 AFAA0018 */ sw $t2, 0x18($sp) +/* 081BF4 7F04D0C4 AFA00010 */ sw $zero, 0x10($sp) +/* 081BF8 7F04D0C8 8FA40044 */ lw $a0, 0x44($sp) +/* 081BFC 7F04D0CC 8FA5004C */ lw $a1, 0x4c($sp) +/* 081C00 7F04D0D0 24070010 */ li $a3, 16 +/* 081C04 7F04D0D4 0FC27094 */ jal sub_GAME_7F09C250 +/* 081C08 7F04D0D8 AFA90014 */ sw $t1, 0x14($sp) +.L7F04D0DC: +/* 081C0C 7F04D0DC 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 081C10 7F04D0E0 02202025 */ move $a0, $s1 +/* 081C14 7F04D0E4 58400012 */ blezl $v0, .L7F04D130 +/* 081C18 7F04D0E8 8FA90034 */ lw $t1, 0x34($sp) +/* 081C1C 7F04D0EC 92220002 */ lbu $v0, 2($s1) +/* 081C20 7F04D0F0 304C0004 */ andi $t4, $v0, 4 +/* 081C24 7F04D0F4 5180000E */ beql $t4, $zero, .L7F04D130 +/* 081C28 7F04D0F8 8FA90034 */ lw $t1, 0x34($sp) +/* 081C2C 7F04D0FC 8E2D0064 */ lw $t5, 0x64($s1) +/* 081C30 7F04D100 344F0010 */ ori $t7, $v0, 0x10 +/* 081C34 7F04D104 3058FFEF */ andi $t8, $v0, 0xffef +/* 081C38 7F04D108 31AE1000 */ andi $t6, $t5, 0x1000 +/* 081C3C 7F04D10C 51C00004 */ beql $t6, $zero, .L7F04D120 +/* 081C40 7F04D110 A2380002 */ sb $t8, 2($s1) +/* 081C44 7F04D114 10000002 */ b .L7F04D120 +/* 081C48 7F04D118 A22F0002 */ sb $t7, 2($s1) +/* 081C4C 7F04D11C A2380002 */ sb $t8, 2($s1) +.L7F04D120: +/* 081C50 7F04D120 8FA80044 */ lw $t0, 0x44($sp) +/* 081C54 7F04D124 241904B0 */ li $t9, 1200 +/* 081C58 7F04D128 A5190002 */ sh $t9, 2($t0) +/* 081C5C 7F04D12C 8FA90034 */ lw $t1, 0x34($sp) +.L7F04D130: +/* 081C60 7F04D130 2921000C */ slti $at, $t1, 0xc +/* 081C64 7F04D134 54200009 */ bnezl $at, .L7F04D15C +/* 081C68 7F04D138 8FBF002C */ lw $ra, 0x2c($sp) +/* 081C6C 7F04D13C 8E2A0064 */ lw $t2, 0x64($s1) +/* 081C70 7F04D140 8E2C0008 */ lw $t4, 8($s1) +/* 081C74 7F04D144 2401FEFF */ li $at, -257 +/* 081C78 7F04D148 354B1000 */ ori $t3, $t2, 0x1000 +/* 081C7C 7F04D14C 01816824 */ and $t5, $t4, $at +/* 081C80 7F04D150 AE2B0064 */ sw $t3, 0x64($s1) +/* 081C84 7F04D154 AE2D0008 */ sw $t5, 8($s1) +.L7F04D158: +/* 081C88 7F04D158 8FBF002C */ lw $ra, 0x2c($sp) +.L7F04D15C: +/* 081C8C 7F04D15C 8FB00024 */ lw $s0, 0x24($sp) +/* 081C90 7F04D160 8FB10028 */ lw $s1, 0x28($sp) +/* 081C94 7F04D164 03E00008 */ jr $ra +/* 081C98 7F04D168 27BD0048 */ addiu $sp, $sp, 0x48 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04D16C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04D16C +/* 081C9C 7F04D16C 27BDFEB0 */ addiu $sp, $sp, -0x150 +/* 081CA0 7F04D170 F7B40028 */ sdc1 $f20, 0x28($sp) +/* 081CA4 7F04D174 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 081CA8 7F04D178 AFBE0050 */ sw $fp, 0x50($sp) +/* 081CAC 7F04D17C AFB7004C */ sw $s7, 0x4c($sp) +/* 081CB0 7F04D180 AFB60048 */ sw $s6, 0x48($sp) +/* 081CB4 7F04D184 AFB50044 */ sw $s5, 0x44($sp) +/* 081CB8 7F04D188 AFB40040 */ sw $s4, 0x40($sp) +/* 081CBC 7F04D18C AFB3003C */ sw $s3, 0x3c($sp) +/* 081CC0 7F04D190 AFB10034 */ sw $s1, 0x34($sp) +/* 081CC4 7F04D194 AFB00030 */ sw $s0, 0x30($sp) +/* 081CC8 7F04D198 4481A000 */ mtc1 $at, $f20 +/* 081CCC 7F04D19C 00E08825 */ move $s1, $a3 +/* 081CD0 7F04D1A0 0080B825 */ move $s7, $a0 +/* 081CD4 7F04D1A4 00C0F025 */ move $fp, $a2 +/* 081CD8 7F04D1A8 AFBF0054 */ sw $ra, 0x54($sp) +/* 081CDC 7F04D1AC AFB20038 */ sw $s2, 0x38($sp) +/* 081CE0 7F04D1B0 AFA50154 */ sw $a1, 0x154($sp) +/* 081CE4 7F04D1B4 AFA00110 */ sw $zero, 0x110($sp) +/* 081CE8 7F04D1B8 00E09825 */ move $s3, $a3 +/* 081CEC 7F04D1BC 8FB0014C */ lw $s0, 0x14c($sp) +/* 081CF0 7F04D1C0 8FB40168 */ lw $s4, 0x168($sp) +/* 081CF4 7F04D1C4 241500FD */ li $s5, 253 +/* 081CF8 7F04D1C8 27B600B0 */ addiu $s6, $sp, 0xb0 +.L7F04D1CC: +/* 081CFC 7F04D1CC 82220000 */ lb $v0, ($s1) +/* 081D00 7F04D1D0 2401FFB8 */ li $at, -72 +/* 081D04 7F04D1D4 8FAE0160 */ lw $t6, 0x160($sp) +/* 081D08 7F04D1D8 54410007 */ bnel $v0, $at, .L7F04D1F8 +/* 081D0C 7F04D1DC 24010004 */ li $at, 4 +/* 081D10 7F04D1E0 11C001E5 */ beqz $t6, .L7F04D978 +/* 081D14 7F04D1E4 01C09825 */ move $s3, $t6 +/* 081D18 7F04D1E8 01C08825 */ move $s1, $t6 +/* 081D1C 7F04D1EC 1000FFF7 */ b .L7F04D1CC +/* 081D20 7F04D1F0 AFA00160 */ sw $zero, 0x160($sp) +/* 081D24 7F04D1F4 24010004 */ li $at, 4 +.L7F04D1F8: +/* 081D28 7F04D1F8 1441000C */ bne $v0, $at, .L7F04D22C +/* 081D2C 7F04D1FC 8FB90164 */ lw $t9, 0x164($sp) +/* 081D30 7F04D200 92220001 */ lbu $v0, 1($s1) +/* 081D34 7F04D204 8E230004 */ lw $v1, 4($s1) +/* 081D38 7F04D208 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff +/* 081D3C 7F04D20C 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 081D40 7F04D210 304F000F */ andi $t7, $v0, 0xf +/* 081D44 7F04D214 0061C024 */ and $t8, $v1, $at +/* 081D48 7F04D218 03384021 */ addu $t0, $t9, $t8 +/* 081D4C 7F04D21C 000F4900 */ sll $t1, $t7, 4 +/* 081D50 7F04D220 01098023 */ subu $s0, $t0, $t1 +/* 081D54 7F04D224 1000FFE9 */ b .L7F04D1CC +/* 081D58 7F04D228 26310008 */ addiu $s1, $s1, 8 +.L7F04D22C: +/* 081D5C 7F04D22C 2401FFBF */ li $at, -65 +/* 081D60 7F04D230 144100E2 */ bne $v0, $at, .L7F04D5BC +/* 081D64 7F04D234 2403000A */ li $v1, 10 +/* 081D68 7F04D238 3C0B8003 */ lui $t3, %hi(D_8003204C) +/* 081D6C 7F04D23C 256B204C */ addiu $t3, %lo(D_8003204C) # addiu $t3, $t3, 0x204c +/* 081D70 7F04D240 8D610000 */ lw $at, ($t3) +/* 081D74 7F04D244 27AA00E8 */ addiu $t2, $sp, 0xe8 +/* 081D78 7F04D248 8D6D0004 */ lw $t5, 4($t3) +/* 081D7C 7F04D24C AD410000 */ sw $at, ($t2) +/* 081D80 7F04D250 8D610008 */ lw $at, 8($t3) +/* 081D84 7F04D254 3C0F8003 */ lui $t7, %hi(D_80032058) +/* 081D88 7F04D258 25EF2058 */ addiu $t7, %lo(D_80032058) # addiu $t7, $t7, 0x2058 +/* 081D8C 7F04D25C AD4D0004 */ sw $t5, 4($t2) +/* 081D90 7F04D260 AD410008 */ sw $at, 8($t2) +/* 081D94 7F04D264 8DE10000 */ lw $at, ($t7) +/* 081D98 7F04D268 27AE00DC */ addiu $t6, $sp, 0xdc +/* 081D9C 7F04D26C 8DF90004 */ lw $t9, 4($t7) +/* 081DA0 7F04D270 ADC10000 */ sw $at, ($t6) +/* 081DA4 7F04D274 8DE10008 */ lw $at, 8($t7) +/* 081DA8 7F04D278 ADD90004 */ sw $t9, 4($t6) +/* 081DAC 7F04D27C 00001025 */ move $v0, $zero +/* 081DB0 7F04D280 ADC10008 */ sw $at, 8($t6) +/* 081DB4 7F04D284 92280005 */ lbu $t0, 5($s1) +/* 081DB8 7F04D288 27A400F8 */ addiu $a0, $sp, 0xf8 +/* 081DBC 7F04D28C 03C02825 */ move $a1, $fp +/* 081DC0 7F04D290 0103001A */ div $zero, $t0, $v1 +/* 081DC4 7F04D294 00004812 */ mflo $t1 +/* 081DC8 7F04D298 AFA900F8 */ sw $t1, 0xf8($sp) +/* 081DCC 7F04D29C 922C0006 */ lbu $t4, 6($s1) +/* 081DD0 7F04D2A0 14600002 */ bnez $v1, .L7F04D2AC +/* 081DD4 7F04D2A4 00000000 */ nop +/* 081DD8 7F04D2A8 0007000D */ break 7 +.L7F04D2AC: +/* 081DDC 7F04D2AC 2401FFFF */ li $at, -1 +/* 081DE0 7F04D2B0 14610004 */ bne $v1, $at, .L7F04D2C4 +/* 081DE4 7F04D2B4 3C018000 */ lui $at, 0x8000 +/* 081DE8 7F04D2B8 15010002 */ bne $t0, $at, .L7F04D2C4 +/* 081DEC 7F04D2BC 00000000 */ nop +/* 081DF0 7F04D2C0 0006000D */ break 6 +.L7F04D2C4: +/* 081DF4 7F04D2C4 0183001A */ div $zero, $t4, $v1 +/* 081DF8 7F04D2C8 00005012 */ mflo $t2 +/* 081DFC 7F04D2CC AFAA00FC */ sw $t2, 0xfc($sp) +/* 081E00 7F04D2D0 922B0007 */ lbu $t3, 7($s1) +/* 081E04 7F04D2D4 14600002 */ bnez $v1, .L7F04D2E0 +/* 081E08 7F04D2D8 00000000 */ nop +/* 081E0C 7F04D2DC 0007000D */ break 7 +.L7F04D2E0: +/* 081E10 7F04D2E0 2401FFFF */ li $at, -1 +/* 081E14 7F04D2E4 14610004 */ bne $v1, $at, .L7F04D2F8 +/* 081E18 7F04D2E8 3C018000 */ lui $at, 0x8000 +/* 081E1C 7F04D2EC 15810002 */ bne $t4, $at, .L7F04D2F8 +/* 081E20 7F04D2F0 00000000 */ nop +/* 081E24 7F04D2F4 0006000D */ break 6 +.L7F04D2F8: +/* 081E28 7F04D2F8 0163001A */ div $zero, $t3, $v1 +/* 081E2C 7F04D2FC 00006812 */ mflo $t5 +/* 081E30 7F04D300 AFAD0100 */ sw $t5, 0x100($sp) +/* 081E34 7F04D304 14600002 */ bnez $v1, .L7F04D310 +/* 081E38 7F04D308 00000000 */ nop +/* 081E3C 7F04D30C 0007000D */ break 7 +.L7F04D310: +/* 081E40 7F04D310 2401FFFF */ li $at, -1 +/* 081E44 7F04D314 14610004 */ bne $v1, $at, .L7F04D328 +/* 081E48 7F04D318 3C018000 */ lui $at, 0x8000 +/* 081E4C 7F04D31C 15610002 */ bne $t3, $at, .L7F04D328 +/* 081E50 7F04D320 00000000 */ nop +/* 081E54 7F04D324 0006000D */ break 6 +.L7F04D328: +/* 081E58 7F04D328 8C980000 */ lw $t8, ($a0) +.L7F04D32C: +/* 081E5C 7F04D32C 8FAF00E8 */ lw $t7, 0xe8($sp) +/* 081E60 7F04D330 24840004 */ addiu $a0, $a0, 4 +/* 081E64 7F04D334 00187100 */ sll $t6, $t8, 4 +/* 081E68 7F04D338 020E1821 */ addu $v1, $s0, $t6 +/* 081E6C 7F04D33C 84620000 */ lh $v0, ($v1) +/* 081E70 7F04D340 27AB0104 */ addiu $t3, $sp, 0x104 +/* 081E74 7F04D344 004F082A */ slt $at, $v0, $t7 +/* 081E78 7F04D348 50200004 */ beql $at, $zero, .L7F04D35C +/* 081E7C 7F04D34C 8FB900DC */ lw $t9, 0xdc($sp) +/* 081E80 7F04D350 AFA200E8 */ sw $v0, 0xe8($sp) +/* 081E84 7F04D354 84620000 */ lh $v0, ($v1) +/* 081E88 7F04D358 8FB900DC */ lw $t9, 0xdc($sp) +.L7F04D35C: +/* 081E8C 7F04D35C 0322082A */ slt $at, $t9, $v0 +/* 081E90 7F04D360 50200003 */ beql $at, $zero, .L7F04D370 +/* 081E94 7F04D364 84620002 */ lh $v0, 2($v1) +/* 081E98 7F04D368 AFA200DC */ sw $v0, 0xdc($sp) +/* 081E9C 7F04D36C 84620002 */ lh $v0, 2($v1) +.L7F04D370: +/* 081EA0 7F04D370 8FA800EC */ lw $t0, 0xec($sp) +/* 081EA4 7F04D374 0048082A */ slt $at, $v0, $t0 +/* 081EA8 7F04D378 50200004 */ beql $at, $zero, .L7F04D38C +/* 081EAC 7F04D37C 8FA900E0 */ lw $t1, 0xe0($sp) +/* 081EB0 7F04D380 AFA200EC */ sw $v0, 0xec($sp) +/* 081EB4 7F04D384 84620002 */ lh $v0, 2($v1) +/* 081EB8 7F04D388 8FA900E0 */ lw $t1, 0xe0($sp) +.L7F04D38C: +/* 081EBC 7F04D38C 0122082A */ slt $at, $t1, $v0 +/* 081EC0 7F04D390 50200003 */ beql $at, $zero, .L7F04D3A0 +/* 081EC4 7F04D394 84620004 */ lh $v0, 4($v1) +/* 081EC8 7F04D398 AFA200E0 */ sw $v0, 0xe0($sp) +/* 081ECC 7F04D39C 84620004 */ lh $v0, 4($v1) +.L7F04D3A0: +/* 081ED0 7F04D3A0 8FAC00F0 */ lw $t4, 0xf0($sp) +/* 081ED4 7F04D3A4 004C082A */ slt $at, $v0, $t4 +/* 081ED8 7F04D3A8 50200004 */ beql $at, $zero, .L7F04D3BC +/* 081EDC 7F04D3AC 8FAA00E4 */ lw $t2, 0xe4($sp) +/* 081EE0 7F04D3B0 AFA200F0 */ sw $v0, 0xf0($sp) +/* 081EE4 7F04D3B4 84620004 */ lh $v0, 4($v1) +/* 081EE8 7F04D3B8 8FAA00E4 */ lw $t2, 0xe4($sp) +.L7F04D3BC: +/* 081EEC 7F04D3BC 0142082A */ slt $at, $t2, $v0 +/* 081EF0 7F04D3C0 10200002 */ beqz $at, .L7F04D3CC +/* 081EF4 7F04D3C4 00000000 */ nop +/* 081EF8 7F04D3C8 AFA200E4 */ sw $v0, 0xe4($sp) +.L7F04D3CC: +/* 081EFC 7F04D3CC 548BFFD7 */ bnel $a0, $t3, .L7F04D32C +/* 081F00 7F04D3D0 8C980000 */ lw $t8, ($a0) +/* 081F04 7F04D3D4 02E02025 */ move $a0, $s7 +/* 081F08 7F04D3D8 27A600E8 */ addiu $a2, $sp, 0xe8 +/* 081F0C 7F04D3DC 0FC2DB3B */ jal sub_GAME_7F0B6CEC +/* 081F10 7F04D3E0 27A700DC */ addiu $a3, $sp, 0xdc +/* 081F14 7F04D3E4 10400162 */ beqz $v0, .L7F04D970 +/* 081F18 7F04D3E8 3C0D8003 */ lui $t5, %hi(D_80032064) +/* 081F1C 7F04D3EC 25AD2064 */ addiu $t5, %lo(D_80032064) # addiu $t5, $t5, 0x2064 +/* 081F20 7F04D3F0 8DA10000 */ lw $at, ($t5) +/* 081F24 7F04D3F4 27A700C4 */ addiu $a3, $sp, 0xc4 +/* 081F28 7F04D3F8 27B8011C */ addiu $t8, $sp, 0x11c +/* 081F2C 7F04D3FC ACE10000 */ sw $at, ($a3) +/* 081F30 7F04D400 8DAE0004 */ lw $t6, 4($t5) +/* 081F34 7F04D404 ACEE0004 */ sw $t6, 4($a3) +/* 081F38 7F04D408 8DA10008 */ lw $at, 8($t5) +/* 081F3C 7F04D40C ACE10008 */ sw $at, 8($a3) +/* 081F40 7F04D410 8FAC0100 */ lw $t4, 0x100($sp) +/* 081F44 7F04D414 8FA800FC */ lw $t0, 0xfc($sp) +/* 081F48 7F04D418 8FAF00F8 */ lw $t7, 0xf8($sp) +/* 081F4C 7F04D41C 8FAB0154 */ lw $t3, 0x154($sp) +/* 081F50 7F04D420 000C5100 */ sll $t2, $t4, 4 +/* 081F54 7F04D424 00084900 */ sll $t1, $t0, 4 +/* 081F58 7F04D428 000FC900 */ sll $t9, $t7, 4 +/* 081F5C 7F04D42C 02192021 */ addu $a0, $s0, $t9 +/* 081F60 7F04D430 02092821 */ addu $a1, $s0, $t1 +/* 081F64 7F04D434 020A3021 */ addu $a2, $s0, $t2 +/* 081F68 7F04D438 AFB8001C */ sw $t8, 0x1c($sp) +/* 081F6C 7F04D43C AFBE0018 */ sw $fp, 0x18($sp) +/* 081F70 7F04D440 AFB70010 */ sw $s7, 0x10($sp) +/* 081F74 7F04D444 0FC24A24 */ jal sub_GAME_7F092890 +/* 081F78 7F04D448 AFAB0014 */ sw $t3, 0x14($sp) +/* 081F7C 7F04D44C 10400148 */ beqz $v0, .L7F04D970 +/* 081F80 7F04D450 00000000 */ nop +/* 081F84 7F04D454 C7A4011C */ lwc1 $f4, 0x11c($sp) +/* 081F88 7F04D458 C6E80000 */ lwc1 $f8, ($s7) +/* 081F8C 7F04D45C C7B20120 */ lwc1 $f18, 0x120($sp) +/* 081F90 7F04D460 4600218D */ trunc.w.s $f6, $f4 +/* 081F94 7F04D464 92290000 */ lbu $t1, ($s1) +/* 081F98 7F04D468 02201025 */ move $v0, $s1 +/* 081F9C 7F04D46C 4600428D */ trunc.w.s $f10, $f8 +/* 081FA0 7F04D470 440E3000 */ mfc1 $t6, $f6 +/* 081FA4 7F04D474 C6E60004 */ lwc1 $f6, 4($s7) +/* 081FA8 7F04D478 4600910D */ trunc.w.s $f4, $f18 +/* 081FAC 7F04D47C 44195000 */ mfc1 $t9, $f10 +/* 081FB0 7F04D480 0271082B */ sltu $at, $s3, $s1 +/* 081FB4 7F04D484 4600320D */ trunc.w.s $f8, $f6 +/* 081FB8 7F04D488 01D94023 */ subu $t0, $t6, $t9 +/* 081FBC 7F04D48C 44888000 */ mtc1 $t0, $f16 +/* 081FC0 7F04D490 440C2000 */ mfc1 $t4, $f4 +/* 081FC4 7F04D494 440B4000 */ mfc1 $t3, $f8 +/* 081FC8 7F04D498 468080A0 */ cvt.s.w $f2, $f16 +/* 081FCC 7F04D49C C7B00124 */ lwc1 $f16, 0x124($sp) +/* 081FD0 7F04D4A0 C6E40008 */ lwc1 $f4, 8($s7) +/* 081FD4 7F04D4A4 018BC023 */ subu $t8, $t4, $t3 +/* 081FD8 7F04D4A8 44985000 */ mtc1 $t8, $f10 +/* 081FDC 7F04D4AC 4600848D */ trunc.w.s $f18, $f16 +/* 081FE0 7F04D4B0 4600218D */ trunc.w.s $f6, $f4 +/* 081FE4 7F04D4B4 440F9000 */ mfc1 $t7, $f18 +/* 081FE8 7F04D4B8 46805320 */ cvt.s.w $f12, $f10 +/* 081FEC 7F04D4BC 44193000 */ mfc1 $t9, $f6 +/* 081FF0 7F04D4C0 46021282 */ mul.s $f10, $f2, $f2 +/* 081FF4 7F04D4C4 01F94023 */ subu $t0, $t7, $t9 +/* 081FF8 7F04D4C8 44884000 */ mtc1 $t0, $f8 +/* 081FFC 7F04D4CC 460C6402 */ mul.s $f16, $f12, $f12 +/* 082000 7F04D4D0 12A9000A */ beq $s5, $t1, .L7F04D4FC +/* 082004 7F04D4D4 468043A0 */ cvt.s.w $f14, $f8 +/* 082008 7F04D4D8 10200008 */ beqz $at, .L7F04D4FC +/* 08200C 7F04D4DC 00000000 */ nop +/* 082010 7F04D4E0 904AFFF8 */ lbu $t2, -8($v0) +.L7F04D4E4: +/* 082014 7F04D4E4 2442FFF8 */ addiu $v0, $v0, -8 +/* 082018 7F04D4E8 0262082B */ sltu $at, $s3, $v0 +/* 08201C 7F04D4EC 12AA0003 */ beq $s5, $t2, .L7F04D4FC +/* 082020 7F04D4F0 00000000 */ nop +/* 082024 7F04D4F4 5420FFFB */ bnezl $at, .L7F04D4E4 +/* 082028 7F04D4F8 904AFFF8 */ lbu $t2, -8($v0) +.L7F04D4FC: +/* 08202C 7F04D4FC 460E7102 */ mul.s $f4, $f14, $f14 +/* 082030 7F04D500 54530004 */ bnel $v0, $s3, .L7F04D514 +/* 082034 7F04D504 8C430004 */ lw $v1, 4($v0) +/* 082038 7F04D508 10000006 */ b .L7F04D524 +/* 08203C 7F04D50C 2404FFFF */ li $a0, -1 +/* 082040 7F04D510 8C430004 */ lw $v1, 4($v0) +.L7F04D514: +/* 082044 7F04D514 3C018000 */ lui $at, 0x8000 +/* 082048 7F04D518 2463FFF8 */ addiu $v1, $v1, -8 +/* 08204C 7F04D51C 00616025 */ or $t4, $v1, $at +/* 082050 7F04D520 95840000 */ lhu $a0, ($t4) +.L7F04D524: +/* 082054 7F04D524 46105480 */ add.s $f18, $f10, $f16 +/* 082058 7F04D528 46049000 */ add.s $f0, $f18, $f4 +/* 08205C 7F04D52C 4614003C */ c.lt.s $f0, $f20 +/* 082060 7F04D530 00000000 */ nop +/* 082064 7F04D534 4500010E */ bc1f .L7F04D970 +/* 082068 7F04D538 00000000 */ nop +/* 08206C 7F04D53C C7A6011C */ lwc1 $f6, 0x11c($sp) +/* 082070 7F04D540 240C0001 */ li $t4, 1 +/* 082074 7F04D544 46000506 */ mov.s $f20, $f0 +/* 082078 7F04D548 E6860000 */ swc1 $f6, ($s4) +/* 08207C 7F04D54C C7A80120 */ lwc1 $f8, 0x120($sp) +/* 082080 7F04D550 E6880004 */ swc1 $f8, 4($s4) +/* 082084 7F04D554 C7AA0124 */ lwc1 $f10, 0x124($sp) +/* 082088 7F04D558 E68A0008 */ swc1 $f10, 8($s4) +/* 08208C 7F04D55C C7B00128 */ lwc1 $f16, 0x128($sp) +/* 082090 7F04D560 E690000C */ swc1 $f16, 0xc($s4) +/* 082094 7F04D564 C7B2012C */ lwc1 $f18, 0x12c($sp) +/* 082098 7F04D568 E6920010 */ swc1 $f18, 0x10($s4) +/* 08209C 7F04D56C C7A40130 */ lwc1 $f4, 0x130($sp) +/* 0820A0 7F04D570 E6840014 */ swc1 $f4, 0x14($s4) +/* 0820A4 7F04D574 8FAB00F8 */ lw $t3, 0xf8($sp) +/* 0820A8 7F04D578 000BC100 */ sll $t8, $t3, 4 +/* 0820AC 7F04D57C 03106821 */ addu $t5, $t8, $s0 +/* 0820B0 7F04D580 AE8D0018 */ sw $t5, 0x18($s4) +/* 0820B4 7F04D584 8FAE00FC */ lw $t6, 0xfc($sp) +/* 0820B8 7F04D588 000E7900 */ sll $t7, $t6, 4 +/* 0820BC 7F04D58C 01F0C821 */ addu $t9, $t7, $s0 +/* 0820C0 7F04D590 AE99001C */ sw $t9, 0x1c($s4) +/* 0820C4 7F04D594 8FA80100 */ lw $t0, 0x100($sp) +/* 0820C8 7F04D598 A684002A */ sh $a0, 0x2a($s4) +/* 0820CC 7F04D59C AE910024 */ sw $s1, 0x24($s4) +/* 0820D0 7F04D5A0 00084900 */ sll $t1, $t0, 4 +/* 0820D4 7F04D5A4 01305021 */ addu $t2, $t1, $s0 +/* 0820D8 7F04D5A8 AE8A0020 */ sw $t2, 0x20($s4) +/* 0820DC 7F04D5AC A6800028 */ sh $zero, 0x28($s4) +/* 0820E0 7F04D5B0 AFAC0110 */ sw $t4, 0x110($sp) +/* 0820E4 7F04D5B4 1000FF05 */ b .L7F04D1CC +/* 0820E8 7F04D5B8 26310008 */ addiu $s1, $s1, 8 +.L7F04D5BC: +/* 0820EC 7F04D5BC 2401FFB1 */ li $at, -79 +/* 0820F0 7F04D5C0 144100EB */ bne $v0, $at, .L7F04D970 +/* 0820F4 7F04D5C4 00000000 */ nop +/* 0820F8 7F04D5C8 00009025 */ move $s2, $zero +.L7F04D5CC: +/* 0820FC 7F04D5CC 3C188003 */ lui $t8, %hi(D_80032070) +/* 082100 7F04D5D0 27182070 */ addiu $t8, %lo(D_80032070) # addiu $t8, $t8, 0x2070 +/* 082104 7F04D5D4 8F010000 */ lw $at, ($t8) +/* 082108 7F04D5D8 27AB0094 */ addiu $t3, $sp, 0x94 +/* 08210C 7F04D5DC 8F0E0004 */ lw $t6, 4($t8) +/* 082110 7F04D5E0 AD610000 */ sw $at, ($t3) +/* 082114 7F04D5E4 8F010008 */ lw $at, 8($t8) +/* 082118 7F04D5E8 3C198003 */ lui $t9, %hi(D_8003207C) +/* 08211C 7F04D5EC 2739207C */ addiu $t9, %lo(D_8003207C) # addiu $t9, $t9, 0x207c +/* 082120 7F04D5F0 AD6E0004 */ sw $t6, 4($t3) +/* 082124 7F04D5F4 AD610008 */ sw $at, 8($t3) +/* 082128 7F04D5F8 8F210000 */ lw $at, ($t9) +/* 08212C 7F04D5FC 27AF0088 */ addiu $t7, $sp, 0x88 +/* 082130 7F04D600 8F290004 */ lw $t1, 4($t9) +/* 082134 7F04D604 ADE10000 */ sw $at, ($t7) +/* 082138 7F04D608 8F210008 */ lw $at, 8($t9) +/* 08213C 7F04D60C ADE90004 */ sw $t1, 4($t7) +/* 082140 7F04D610 1640000B */ bnez $s2, .L7F04D640 +/* 082144 7F04D614 ADE10008 */ sw $at, 8($t7) +/* 082148 7F04D618 8E2A0004 */ lw $t2, 4($s1) +/* 08214C 7F04D61C 314C000F */ andi $t4, $t2, 0xf +/* 082150 7F04D620 AFAC00A4 */ sw $t4, 0xa4($sp) +/* 082154 7F04D624 922D0007 */ lbu $t5, 7($s1) +/* 082158 7F04D628 000D5902 */ srl $t3, $t5, 4 +/* 08215C 7F04D62C AFAB00A8 */ sw $t3, 0xa8($sp) +/* 082160 7F04D630 8E380000 */ lw $t8, ($s1) +/* 082164 7F04D634 330E000F */ andi $t6, $t8, 0xf +/* 082168 7F04D638 10000024 */ b .L7F04D6CC +/* 08216C 7F04D63C AFAE00AC */ sw $t6, 0xac($sp) +.L7F04D640: +/* 082170 7F04D640 24010001 */ li $at, 1 +/* 082174 7F04D644 5641000C */ bnel $s2, $at, .L7F04D678 +/* 082178 7F04D648 24010002 */ li $at, 2 +/* 08217C 7F04D64C 92280006 */ lbu $t0, 6($s1) +/* 082180 7F04D650 310F000F */ andi $t7, $t0, 0xf +/* 082184 7F04D654 AFAF00A4 */ sw $t7, 0xa4($sp) +/* 082188 7F04D658 96390006 */ lhu $t9, 6($s1) +/* 08218C 7F04D65C 00194B02 */ srl $t1, $t9, 0xc +/* 082190 7F04D660 AFA900A8 */ sw $t1, 0xa8($sp) +/* 082194 7F04D664 922A0003 */ lbu $t2, 3($s1) +/* 082198 7F04D668 000A6102 */ srl $t4, $t2, 4 +/* 08219C 7F04D66C 10000017 */ b .L7F04D6CC +/* 0821A0 7F04D670 AFAC00AC */ sw $t4, 0xac($sp) +/* 0821A4 7F04D674 24010002 */ li $at, 2 +.L7F04D678: +/* 0821A8 7F04D678 5641000C */ bnel $s2, $at, .L7F04D6AC +/* 0821AC 7F04D67C 92390004 */ lbu $t9, 4($s1) +/* 0821B0 7F04D680 962D0004 */ lhu $t5, 4($s1) +/* 0821B4 7F04D684 31AB000F */ andi $t3, $t5, 0xf +/* 0821B8 7F04D688 AFAB00A4 */ sw $t3, 0xa4($sp) +/* 0821BC 7F04D68C 92380005 */ lbu $t8, 5($s1) +/* 0821C0 7F04D690 00187102 */ srl $t6, $t8, 4 +/* 0821C4 7F04D694 AFAE00A8 */ sw $t6, 0xa8($sp) +/* 0821C8 7F04D698 92280002 */ lbu $t0, 2($s1) +/* 0821CC 7F04D69C 310F000F */ andi $t7, $t0, 0xf +/* 0821D0 7F04D6A0 1000000A */ b .L7F04D6CC +/* 0821D4 7F04D6A4 AFAF00AC */ sw $t7, 0xac($sp) +/* 0821D8 7F04D6A8 92390004 */ lbu $t9, 4($s1) +.L7F04D6AC: +/* 0821DC 7F04D6AC 3329000F */ andi $t1, $t9, 0xf +/* 0821E0 7F04D6B0 AFA900A4 */ sw $t1, 0xa4($sp) +/* 0821E4 7F04D6B4 8E2A0004 */ lw $t2, 4($s1) +/* 0821E8 7F04D6B8 000A6702 */ srl $t4, $t2, 0x1c +/* 0821EC 7F04D6BC AFAC00A8 */ sw $t4, 0xa8($sp) +/* 0821F0 7F04D6C0 962D0002 */ lhu $t5, 2($s1) +/* 0821F4 7F04D6C4 000D5B02 */ srl $t3, $t5, 0xc +/* 0821F8 7F04D6C8 AFAB00AC */ sw $t3, 0xac($sp) +.L7F04D6CC: +/* 0821FC 7F04D6CC 27A400A4 */ addiu $a0, $sp, 0xa4 +/* 082200 7F04D6D0 8C980000 */ lw $t8, ($a0) +.L7F04D6D4: +/* 082204 7F04D6D4 8FA80094 */ lw $t0, 0x94($sp) +/* 082208 7F04D6D8 24840004 */ addiu $a0, $a0, 4 +/* 08220C 7F04D6DC 00187100 */ sll $t6, $t8, 4 +/* 082210 7F04D6E0 020E1821 */ addu $v1, $s0, $t6 +/* 082214 7F04D6E4 84620000 */ lh $v0, ($v1) +/* 082218 7F04D6E8 0048082A */ slt $at, $v0, $t0 +/* 08221C 7F04D6EC 50200004 */ beql $at, $zero, .L7F04D700 +/* 082220 7F04D6F0 8FAF0088 */ lw $t7, 0x88($sp) +/* 082224 7F04D6F4 AFA20094 */ sw $v0, 0x94($sp) +/* 082228 7F04D6F8 84620000 */ lh $v0, ($v1) +/* 08222C 7F04D6FC 8FAF0088 */ lw $t7, 0x88($sp) +.L7F04D700: +/* 082230 7F04D700 01E2082A */ slt $at, $t7, $v0 +/* 082234 7F04D704 50200003 */ beql $at, $zero, .L7F04D714 +/* 082238 7F04D708 84620002 */ lh $v0, 2($v1) +/* 08223C 7F04D70C AFA20088 */ sw $v0, 0x88($sp) +/* 082240 7F04D710 84620002 */ lh $v0, 2($v1) +.L7F04D714: +/* 082244 7F04D714 8FB90098 */ lw $t9, 0x98($sp) +/* 082248 7F04D718 0059082A */ slt $at, $v0, $t9 +/* 08224C 7F04D71C 50200004 */ beql $at, $zero, .L7F04D730 +/* 082250 7F04D720 8FA9008C */ lw $t1, 0x8c($sp) +/* 082254 7F04D724 AFA20098 */ sw $v0, 0x98($sp) +/* 082258 7F04D728 84620002 */ lh $v0, 2($v1) +/* 08225C 7F04D72C 8FA9008C */ lw $t1, 0x8c($sp) +.L7F04D730: +/* 082260 7F04D730 0122082A */ slt $at, $t1, $v0 +/* 082264 7F04D734 50200003 */ beql $at, $zero, .L7F04D744 +/* 082268 7F04D738 84620004 */ lh $v0, 4($v1) +/* 08226C 7F04D73C AFA2008C */ sw $v0, 0x8c($sp) +/* 082270 7F04D740 84620004 */ lh $v0, 4($v1) +.L7F04D744: +/* 082274 7F04D744 8FAA009C */ lw $t2, 0x9c($sp) +/* 082278 7F04D748 004A082A */ slt $at, $v0, $t2 +/* 08227C 7F04D74C 50200004 */ beql $at, $zero, .L7F04D760 +/* 082280 7F04D750 8FAC0090 */ lw $t4, 0x90($sp) +/* 082284 7F04D754 AFA2009C */ sw $v0, 0x9c($sp) +/* 082288 7F04D758 84620004 */ lh $v0, 4($v1) +/* 08228C 7F04D75C 8FAC0090 */ lw $t4, 0x90($sp) +.L7F04D760: +/* 082290 7F04D760 0182082A */ slt $at, $t4, $v0 +/* 082294 7F04D764 10200002 */ beqz $at, .L7F04D770 +/* 082298 7F04D768 00000000 */ nop +/* 08229C 7F04D76C AFA20090 */ sw $v0, 0x90($sp) +.L7F04D770: +/* 0822A0 7F04D770 5496FFD8 */ bnel $a0, $s6, .L7F04D6D4 +/* 0822A4 7F04D774 8C980000 */ lw $t8, ($a0) +/* 0822A8 7F04D778 02E02025 */ move $a0, $s7 +/* 0822AC 7F04D77C 03C02825 */ move $a1, $fp +/* 0822B0 7F04D780 27A60094 */ addiu $a2, $sp, 0x94 +/* 0822B4 7F04D784 0FC2DB3B */ jal sub_GAME_7F0B6CEC +/* 0822B8 7F04D788 27A70088 */ addiu $a3, $sp, 0x88 +/* 0822BC 7F04D78C 10400074 */ beqz $v0, .L7F04D960 +/* 0822C0 7F04D790 3C0D8003 */ lui $t5, %hi(D_80032088) +/* 0822C4 7F04D794 25AD2088 */ addiu $t5, %lo(D_80032088) # addiu $t5, $t5, 0x2088 +/* 0822C8 7F04D798 8DA10000 */ lw $at, ($t5) +/* 0822CC 7F04D79C 27A70070 */ addiu $a3, $sp, 0x70 +/* 0822D0 7F04D7A0 27AB011C */ addiu $t3, $sp, 0x11c +/* 0822D4 7F04D7A4 ACE10000 */ sw $at, ($a3) +/* 0822D8 7F04D7A8 8DB80004 */ lw $t8, 4($t5) +/* 0822DC 7F04D7AC ACF80004 */ sw $t8, 4($a3) +/* 0822E0 7F04D7B0 8DA10008 */ lw $at, 8($t5) +/* 0822E4 7F04D7B4 ACE10008 */ sw $at, 8($a3) +/* 0822E8 7F04D7B8 8FA900AC */ lw $t1, 0xac($sp) +/* 0822EC 7F04D7BC 8FAF00A8 */ lw $t7, 0xa8($sp) +/* 0822F0 7F04D7C0 8FAE00A4 */ lw $t6, 0xa4($sp) +/* 0822F4 7F04D7C4 8FAC0154 */ lw $t4, 0x154($sp) +/* 0822F8 7F04D7C8 00095100 */ sll $t2, $t1, 4 +/* 0822FC 7F04D7CC 000FC900 */ sll $t9, $t7, 4 +/* 082300 7F04D7D0 000E4100 */ sll $t0, $t6, 4 +/* 082304 7F04D7D4 02082021 */ addu $a0, $s0, $t0 +/* 082308 7F04D7D8 02192821 */ addu $a1, $s0, $t9 +/* 08230C 7F04D7DC 020A3021 */ addu $a2, $s0, $t2 +/* 082310 7F04D7E0 AFAB001C */ sw $t3, 0x1c($sp) +/* 082314 7F04D7E4 AFBE0018 */ sw $fp, 0x18($sp) +/* 082318 7F04D7E8 AFB70010 */ sw $s7, 0x10($sp) +/* 08231C 7F04D7EC 0FC24A24 */ jal sub_GAME_7F092890 +/* 082320 7F04D7F0 AFAC0014 */ sw $t4, 0x14($sp) +/* 082324 7F04D7F4 5040005B */ beql $v0, $zero, .L7F04D964 +/* 082328 7F04D7F8 26520001 */ addiu $s2, $s2, 1 +/* 08232C 7F04D7FC C7A6011C */ lwc1 $f6, 0x11c($sp) +/* 082330 7F04D800 C6EA0000 */ lwc1 $f10, ($s7) +/* 082334 7F04D804 C7A40120 */ lwc1 $f4, 0x120($sp) +/* 082338 7F04D808 4600320D */ trunc.w.s $f8, $f6 +/* 08233C 7F04D80C 92390000 */ lbu $t9, ($s1) +/* 082340 7F04D810 02201025 */ move $v0, $s1 +/* 082344 7F04D814 4600540D */ trunc.w.s $f16, $f10 +/* 082348 7F04D818 44184000 */ mfc1 $t8, $f8 +/* 08234C 7F04D81C C6E80004 */ lwc1 $f8, 4($s7) +/* 082350 7F04D820 4600218D */ trunc.w.s $f6, $f4 +/* 082354 7F04D824 44088000 */ mfc1 $t0, $f16 +/* 082358 7F04D828 0271082B */ sltu $at, $s3, $s1 +/* 08235C 7F04D82C 4600428D */ trunc.w.s $f10, $f8 +/* 082360 7F04D830 03087823 */ subu $t7, $t8, $t0 +/* 082364 7F04D834 448F9000 */ mtc1 $t7, $f18 +/* 082368 7F04D838 44093000 */ mfc1 $t1, $f6 +/* 08236C 7F04D83C 440C5000 */ mfc1 $t4, $f10 +/* 082370 7F04D840 468090A0 */ cvt.s.w $f2, $f18 +/* 082374 7F04D844 C7B20124 */ lwc1 $f18, 0x124($sp) +/* 082378 7F04D848 C6E60008 */ lwc1 $f6, 8($s7) +/* 08237C 7F04D84C 012C5823 */ subu $t3, $t1, $t4 +/* 082380 7F04D850 448B8000 */ mtc1 $t3, $f16 +/* 082384 7F04D854 4600910D */ trunc.w.s $f4, $f18 +/* 082388 7F04D858 4600320D */ trunc.w.s $f8, $f6 +/* 08238C 7F04D85C 440E2000 */ mfc1 $t6, $f4 +/* 082390 7F04D860 46808320 */ cvt.s.w $f12, $f16 +/* 082394 7F04D864 44084000 */ mfc1 $t0, $f8 +/* 082398 7F04D868 46021402 */ mul.s $f16, $f2, $f2 +/* 08239C 7F04D86C 01C87823 */ subu $t7, $t6, $t0 +/* 0823A0 7F04D870 448F5000 */ mtc1 $t7, $f10 +/* 0823A4 7F04D874 460C6482 */ mul.s $f18, $f12, $f12 +/* 0823A8 7F04D878 12B9000A */ beq $s5, $t9, .L7F04D8A4 +/* 0823AC 7F04D87C 468053A0 */ cvt.s.w $f14, $f10 +/* 0823B0 7F04D880 10200008 */ beqz $at, .L7F04D8A4 +/* 0823B4 7F04D884 00000000 */ nop +/* 0823B8 7F04D888 904AFFF8 */ lbu $t2, -8($v0) +.L7F04D88C: +/* 0823BC 7F04D88C 2442FFF8 */ addiu $v0, $v0, -8 +/* 0823C0 7F04D890 0262082B */ sltu $at, $s3, $v0 +/* 0823C4 7F04D894 12AA0003 */ beq $s5, $t2, .L7F04D8A4 +/* 0823C8 7F04D898 00000000 */ nop +/* 0823CC 7F04D89C 5420FFFB */ bnezl $at, .L7F04D88C +/* 0823D0 7F04D8A0 904AFFF8 */ lbu $t2, -8($v0) +.L7F04D8A4: +/* 0823D4 7F04D8A4 460E7182 */ mul.s $f6, $f14, $f14 +/* 0823D8 7F04D8A8 54530004 */ bnel $v0, $s3, .L7F04D8BC +/* 0823DC 7F04D8AC 8C430004 */ lw $v1, 4($v0) +/* 0823E0 7F04D8B0 10000006 */ b .L7F04D8CC +/* 0823E4 7F04D8B4 2404FFFF */ li $a0, -1 +/* 0823E8 7F04D8B8 8C430004 */ lw $v1, 4($v0) +.L7F04D8BC: +/* 0823EC 7F04D8BC 3C018000 */ lui $at, 0x8000 +/* 0823F0 7F04D8C0 2463FFF8 */ addiu $v1, $v1, -8 +/* 0823F4 7F04D8C4 00614825 */ or $t1, $v1, $at +/* 0823F8 7F04D8C8 95240000 */ lhu $a0, ($t1) +.L7F04D8CC: +/* 0823FC 7F04D8CC 46128100 */ add.s $f4, $f16, $f18 +/* 082400 7F04D8D0 46062000 */ add.s $f0, $f4, $f6 +/* 082404 7F04D8D4 4614003C */ c.lt.s $f0, $f20 +/* 082408 7F04D8D8 00000000 */ nop +/* 08240C 7F04D8DC 45020021 */ bc1fl .L7F04D964 +/* 082410 7F04D8E0 26520001 */ addiu $s2, $s2, 1 +/* 082414 7F04D8E4 C7A8011C */ lwc1 $f8, 0x11c($sp) +/* 082418 7F04D8E8 26490001 */ addiu $t1, $s2, 1 +/* 08241C 7F04D8EC 46000506 */ mov.s $f20, $f0 +/* 082420 7F04D8F0 E6880000 */ swc1 $f8, ($s4) +/* 082424 7F04D8F4 C7AA0120 */ lwc1 $f10, 0x120($sp) +/* 082428 7F04D8F8 E68A0004 */ swc1 $f10, 4($s4) +/* 08242C 7F04D8FC C7B00124 */ lwc1 $f16, 0x124($sp) +/* 082430 7F04D900 E6900008 */ swc1 $f16, 8($s4) +/* 082434 7F04D904 C7B20128 */ lwc1 $f18, 0x128($sp) +/* 082438 7F04D908 E692000C */ swc1 $f18, 0xc($s4) +/* 08243C 7F04D90C C7A4012C */ lwc1 $f4, 0x12c($sp) +/* 082440 7F04D910 E6840010 */ swc1 $f4, 0x10($s4) +/* 082444 7F04D914 C7A60130 */ lwc1 $f6, 0x130($sp) +/* 082448 7F04D918 E6860014 */ swc1 $f6, 0x14($s4) +/* 08244C 7F04D91C 8FAC00A4 */ lw $t4, 0xa4($sp) +/* 082450 7F04D920 000C5900 */ sll $t3, $t4, 4 +/* 082454 7F04D924 01706821 */ addu $t5, $t3, $s0 +/* 082458 7F04D928 AE8D0018 */ sw $t5, 0x18($s4) +/* 08245C 7F04D92C 8FB800A8 */ lw $t8, 0xa8($sp) +/* 082460 7F04D930 240C0001 */ li $t4, 1 +/* 082464 7F04D934 00187100 */ sll $t6, $t8, 4 +/* 082468 7F04D938 01D04021 */ addu $t0, $t6, $s0 +/* 08246C 7F04D93C AE88001C */ sw $t0, 0x1c($s4) +/* 082470 7F04D940 8FAF00AC */ lw $t7, 0xac($sp) +/* 082474 7F04D944 A684002A */ sh $a0, 0x2a($s4) +/* 082478 7F04D948 AE910024 */ sw $s1, 0x24($s4) +/* 08247C 7F04D94C 000FC900 */ sll $t9, $t7, 4 +/* 082480 7F04D950 03305021 */ addu $t2, $t9, $s0 +/* 082484 7F04D954 AE8A0020 */ sw $t2, 0x20($s4) +/* 082488 7F04D958 A6890028 */ sh $t1, 0x28($s4) +/* 08248C 7F04D95C AFAC0110 */ sw $t4, 0x110($sp) +.L7F04D960: +/* 082490 7F04D960 26520001 */ addiu $s2, $s2, 1 +.L7F04D964: +/* 082494 7F04D964 24010004 */ li $at, 4 +/* 082498 7F04D968 1641FF18 */ bne $s2, $at, .L7F04D5CC +/* 08249C 7F04D96C 00000000 */ nop +.L7F04D970: +/* 0824A0 7F04D970 1000FE16 */ b .L7F04D1CC +/* 0824A4 7F04D974 26310008 */ addiu $s1, $s1, 8 +.L7F04D978: +/* 0824A8 7F04D978 8FBF0054 */ lw $ra, 0x54($sp) +/* 0824AC 7F04D97C 8FA20110 */ lw $v0, 0x110($sp) +/* 0824B0 7F04D980 D7B40028 */ ldc1 $f20, 0x28($sp) +/* 0824B4 7F04D984 8FB00030 */ lw $s0, 0x30($sp) +/* 0824B8 7F04D988 8FB10034 */ lw $s1, 0x34($sp) +/* 0824BC 7F04D98C 8FB20038 */ lw $s2, 0x38($sp) +/* 0824C0 7F04D990 8FB3003C */ lw $s3, 0x3c($sp) +/* 0824C4 7F04D994 8FB40040 */ lw $s4, 0x40($sp) +/* 0824C8 7F04D998 8FB50044 */ lw $s5, 0x44($sp) +/* 0824CC 7F04D99C 8FB60048 */ lw $s6, 0x48($sp) +/* 0824D0 7F04D9A0 8FB7004C */ lw $s7, 0x4c($sp) +/* 0824D4 7F04D9A4 8FBE0050 */ lw $fp, 0x50($sp) +/* 0824D8 7F04D9A8 03E00008 */ jr $ra +/* 0824DC 7F04D9AC 27BD0150 */ addiu $sp, $sp, 0x150 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04D9B0(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052D98 +.word 0x46fffe00 /*32767.0*/ +/*D:80052D9C*/ +glabel jpt_80052D9C +.word loc_CODE_7F04DAA4 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word loc_CODE_7F04DAD8 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word loc_CODE_7F04DAEC +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word def_7F04DA40 +.word loc_CODE_7F04DB00 +.word loc_CODE_7F04DA48 + +/*D:80052DF0*/ +/*hack, doesn't fit in own function*/ +glabel jpt_80052DF0 +.word destroyable_object +.word nondestroyable_object +.word destroyable_object +.word nondestroyable_object +.word destroyable_object +.word destroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word destroyable_object +.word destroyable_object +.word destroyable_object +.word destroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word nondestroyable_object +.word destroyable_object +.word nondestroyable_object +.word nondestroyable_object + + +.text +glabel sub_GAME_7F04D9B0 +/* 0824E0 7F04D9B0 27BDFF08 */ addiu $sp, $sp, -0xf8 +/* 0824E4 7F04D9B4 AFBE0050 */ sw $fp, 0x50($sp) +/* 0824E8 7F04D9B8 AFB60048 */ sw $s6, 0x48($sp) +/* 0824EC 7F04D9BC AFB20038 */ sw $s2, 0x38($sp) +/* 0824F0 7F04D9C0 AFB00030 */ sw $s0, 0x30($sp) +/* 0824F4 7F04D9C4 00A09025 */ move $s2, $a1 +/* 0824F8 7F04D9C8 0080B025 */ move $s6, $a0 +/* 0824FC 7F04D9CC AFBF0054 */ sw $ra, 0x54($sp) +/* 082500 7F04D9D0 AFB7004C */ sw $s7, 0x4c($sp) +/* 082504 7F04D9D4 AFB50044 */ sw $s5, 0x44($sp) +/* 082508 7F04D9D8 AFB40040 */ sw $s4, 0x40($sp) +/* 08250C 7F04D9DC AFB3003C */ sw $s3, 0x3c($sp) +/* 082510 7F04D9E0 AFB10034 */ sw $s1, 0x34($sp) +/* 082514 7F04D9E4 F7B40028 */ sdc1 $f20, 0x28($sp) +/* 082518 7F04D9E8 AFA60100 */ sw $a2, 0x100($sp) +/* 08251C 7F04D9EC AFA70104 */ sw $a3, 0x104($sp) +/* 082520 7F04D9F0 AFA000D0 */ sw $zero, 0xd0($sp) +/* 082524 7F04D9F4 AFA000CC */ sw $zero, 0xcc($sp) +/* 082528 7F04D9F8 00A08025 */ move $s0, $a1 +/* 08252C 7F04D9FC 10A0009F */ beqz $a1, .L7F04DC7C +/* 082530 7F04DA00 0000F025 */ move $fp, $zero +/* 082534 7F04DA04 3C018005 */ lui $at, %hi(D_80052D98) +/* 082538 7F04DA08 3C1700FF */ lui $s7, (0x00FFFFFF >> 16) # lui $s7, 0xff +/* 08253C 7F04DA0C 36F7FFFF */ ori $s7, (0x00FFFFFF & 0xFFFF) # ori $s7, $s7, 0xffff +/* 082540 7F04DA10 C4342D98 */ lwc1 $f20, %lo(D_80052D98)($at) +/* 082544 7F04DA14 96020000 */ lhu $v0, ($s0) +.L7F04DA18: +/* 082548 7F04DA18 00009825 */ move $s3, $zero +/* 08254C 7F04DA1C 0000A825 */ move $s5, $zero +/* 082550 7F04DA20 304E00FF */ andi $t6, $v0, 0xff +/* 082554 7F04DA24 25CFFFFC */ addiu $t7, $t6, -4 +/* 082558 7F04DA28 2DE10015 */ sltiu $at, $t7, 0x15 +/* 08255C 7F04DA2C 10200037 */ beqz $at, .L7F04DB0C +/* 082560 7F04DA30 000F7880 */ sll $t7, $t7, 2 +/* 082564 7F04DA34 3C018005 */ lui $at, %hi(jpt_80052D9C) +/* 082568 7F04DA38 002F0821 */ addu $at, $at, $t7 +/* 08256C 7F04DA3C 8C2F2D9C */ lw $t7, %lo(jpt_80052D9C)($at) +/* 082570 7F04DA40 01E00008 */ jr $t7 +/* 082574 7F04DA44 00000000 */ nop +loc_CODE_7F04DA48: +/* 082578 7F04DA48 8E110004 */ lw $s1, 4($s0) +/* 08257C 7F04DA4C 02C02025 */ move $a0, $s6 +/* 082580 7F04DA50 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 082584 7F04DA54 02002825 */ move $a1, $s0 +/* 082588 7F04DA58 8C430004 */ lw $v1, 4($v0) +/* 08258C 7F04DA5C 1060002B */ beqz $v1, .L7F04DB0C +/* 082590 7F04DA60 00000000 */ nop +/* 082594 7F04DA64 8E240000 */ lw $a0, ($s1) +/* 082598 7F04DA68 00609825 */ move $s3, $v1 +/* 08259C 7F04DA6C 14830005 */ bne $a0, $v1, .L7F04DA84 +/* 0825A0 7F04DA70 00000000 */ nop +/* 0825A4 7F04DA74 8E38001C */ lw $t8, 0x1c($s1) +/* 0825A8 7F04DA78 0097C824 */ and $t9, $a0, $s7 +/* 0825AC 7F04DA7C 10000001 */ b .L7F04DA84 +/* 0825B0 7F04DA80 03199821 */ addu $s3, $t8, $t9 +.L7F04DA84: +/* 0825B4 7F04DA84 8E230004 */ lw $v1, 4($s1) +/* 0825B8 7F04DA88 10600004 */ beqz $v1, .L7F04DA9C +/* 0825BC 7F04DA8C 00000000 */ nop +/* 0825C0 7F04DA90 8E28001C */ lw $t0, 0x1c($s1) +/* 0825C4 7F04DA94 00774824 */ and $t1, $v1, $s7 +/* 0825C8 7F04DA98 0109A821 */ addu $s5, $t0, $t1 +.L7F04DA9C: +/* 0825CC 7F04DA9C 1000001B */ b .L7F04DB0C +/* 0825D0 7F04DAA0 8C5E0000 */ lw $fp, ($v0) +loc_CODE_7F04DAA4: +/* 0825D4 7F04DAA4 8E020004 */ lw $v0, 4($s0) +/* 0825D8 7F04DAA8 8C440000 */ lw $a0, ($v0) +/* 0825DC 7F04DAAC 10800017 */ beqz $a0, .L7F04DB0C +/* 0825E0 7F04DAB0 00000000 */ nop +/* 0825E4 7F04DAB4 8C450004 */ lw $a1, 4($v0) +/* 0825E8 7F04DAB8 8C430008 */ lw $v1, 8($v0) +/* 0825EC 7F04DABC 00975024 */ and $t2, $a0, $s7 +/* 0825F0 7F04DAC0 10A00003 */ beqz $a1, .L7F04DAD0 +/* 0825F4 7F04DAC4 006A9821 */ addu $s3, $v1, $t2 +/* 0825F8 7F04DAC8 00B75824 */ and $t3, $a1, $s7 +/* 0825FC 7F04DACC 006BA821 */ addu $s5, $v1, $t3 +.L7F04DAD0: +/* 082600 7F04DAD0 1000000E */ b .L7F04DB0C +/* 082604 7F04DAD4 0060F025 */ move $fp, $v1 +loc_CODE_7F04DAD8: +/* 082608 7F04DAD8 02C02025 */ move $a0, $s6 +/* 08260C 7F04DADC 0FC1BA5C */ jal sub_GAME_7F06E970 +/* 082610 7F04DAE0 02002825 */ move $a1, $s0 +/* 082614 7F04DAE4 10000009 */ b .L7F04DB0C +/* 082618 7F04DAE8 00000000 */ nop +loc_CODE_7F04DAEC: +/* 08261C 7F04DAEC 02C02025 */ move $a0, $s6 +/* 082620 7F04DAF0 0FC1BA6F */ jal process_12_handle_switch +/* 082624 7F04DAF4 02002825 */ move $a1, $s0 +/* 082628 7F04DAF8 10000004 */ b .L7F04DB0C +/* 08262C 7F04DAFC 00000000 */ nop +loc_CODE_7F04DB00: +/* 082630 7F04DB00 02C02025 */ move $a0, $s6 +/* 082634 7F04DB04 0FC1BA82 */ jal process_17_pointer_to_head +/* 082638 7F04DB08 02002825 */ move $a1, $s0 +def_7F04DA40: +.L7F04DB0C: +/* 08263C 7F04DB0C 12600043 */ beqz $s3, .L7F04DC1C +/* 082640 7F04DB10 02002025 */ move $a0, $s0 +/* 082644 7F04DB14 00002825 */ move $a1, $zero +/* 082648 7F04DB18 0FC1B15C */ jal sub_GAME_7F06C570 +/* 08264C 7F04DB1C 00008825 */ move $s1, $zero +/* 082650 7F04DB20 04400004 */ bltz $v0, .L7F04DB34 +/* 082654 7F04DB24 0040A025 */ move $s4, $v0 +/* 082658 7F04DB28 8ECC000C */ lw $t4, 0xc($s6) +/* 08265C 7F04DB2C 00026980 */ sll $t5, $v0, 6 +/* 082660 7F04DB30 018D8821 */ addu $s1, $t4, $t5 +.L7F04DB34: +/* 082664 7F04DB34 12200029 */ beqz $s1, .L7F04DBDC +/* 082668 7F04DB38 8FAE00D0 */ lw $t6, 0xd0($sp) +/* 08266C 7F04DB3C 122E0027 */ beq $s1, $t6, .L7F04DBDC +/* 082670 7F04DB40 02202025 */ move $a0, $s1 +/* 082674 7F04DB44 AFB100D0 */ sw $s1, 0xd0($sp) +/* 082678 7F04DB48 0FC167EE */ jal sub_GAME_7F059FB8 +/* 08267C 7F04DB4C 27A50064 */ addiu $a1, $sp, 0x64 +/* 082680 7F04DB50 8FAF0100 */ lw $t7, 0x100($sp) +/* 082684 7F04DB54 27A40064 */ addiu $a0, $sp, 0x64 +/* 082688 7F04DB58 27A500EC */ addiu $a1, $sp, 0xec +/* 08268C 7F04DB5C C5E40000 */ lwc1 $f4, ($t7) +/* 082690 7F04DB60 E7A400EC */ swc1 $f4, 0xec($sp) +/* 082694 7F04DB64 C5E60004 */ lwc1 $f6, 4($t7) +/* 082698 7F04DB68 E7A600F0 */ swc1 $f6, 0xf0($sp) +/* 08269C 7F04DB6C C5E80008 */ lwc1 $f8, 8($t7) +/* 0826A0 7F04DB70 0FC1611D */ jal sub_GAME_7F058474 +/* 0826A4 7F04DB74 E7A800F4 */ swc1 $f8, 0xf4($sp) +/* 0826A8 7F04DB78 8FB80104 */ lw $t8, 0x104($sp) +/* 0826AC 7F04DB7C 27A40064 */ addiu $a0, $sp, 0x64 +/* 0826B0 7F04DB80 27A500D4 */ addiu $a1, $sp, 0xd4 +/* 0826B4 7F04DB84 C70A0000 */ lwc1 $f10, ($t8) +/* 0826B8 7F04DB88 E7AA00D4 */ swc1 $f10, 0xd4($sp) +/* 0826BC 7F04DB8C C7100004 */ lwc1 $f16, 4($t8) +/* 0826C0 7F04DB90 E7B000D8 */ swc1 $f16, 0xd8($sp) +/* 0826C4 7F04DB94 C7120008 */ lwc1 $f18, 8($t8) +/* 0826C8 7F04DB98 0FC160F6 */ jal sub_GAME_7F0583D8 +/* 0826CC 7F04DB9C E7B200DC */ swc1 $f18, 0xdc($sp) +/* 0826D0 7F04DBA0 C7A400D4 */ lwc1 $f4, 0xd4($sp) +/* 0826D4 7F04DBA4 C7A800EC */ lwc1 $f8, 0xec($sp) +/* 0826D8 7F04DBA8 C7B000D8 */ lwc1 $f16, 0xd8($sp) +/* 0826DC 7F04DBAC 46142182 */ mul.s $f6, $f4, $f20 +/* 0826E0 7F04DBB0 C7A400F0 */ lwc1 $f4, 0xf0($sp) +/* 0826E4 7F04DBB4 46148482 */ mul.s $f18, $f16, $f20 +/* 0826E8 7F04DBB8 C7B000F4 */ lwc1 $f16, 0xf4($sp) +/* 0826EC 7F04DBBC 46083280 */ add.s $f10, $f6, $f8 +/* 0826F0 7F04DBC0 C7A800DC */ lwc1 $f8, 0xdc($sp) +/* 0826F4 7F04DBC4 46049180 */ add.s $f6, $f18, $f4 +/* 0826F8 7F04DBC8 E7AA00E0 */ swc1 $f10, 0xe0($sp) +/* 0826FC 7F04DBCC 46144282 */ mul.s $f10, $f8, $f20 +/* 082700 7F04DBD0 E7A600E4 */ swc1 $f6, 0xe4($sp) +/* 082704 7F04DBD4 46105480 */ add.s $f18, $f10, $f16 +/* 082708 7F04DBD8 E7B200E8 */ swc1 $f18, 0xe8($sp) +.L7F04DBDC: +/* 08270C 7F04DBDC 8FB90108 */ lw $t9, 0x108($sp) +/* 082710 7F04DBE0 27A400EC */ addiu $a0, $sp, 0xec +/* 082714 7F04DBE4 27A500E0 */ addiu $a1, $sp, 0xe0 +/* 082718 7F04DBE8 27A600D4 */ addiu $a2, $sp, 0xd4 +/* 08271C 7F04DBEC 02603825 */ move $a3, $s3 +/* 082720 7F04DBF0 AFB50010 */ sw $s5, 0x10($sp) +/* 082724 7F04DBF4 AFBE0014 */ sw $fp, 0x14($sp) +/* 082728 7F04DBF8 0FC1345B */ jal sub_GAME_7F04D16C +/* 08272C 7F04DBFC AFB90018 */ sw $t9, 0x18($sp) +/* 082730 7F04DC00 10400006 */ beqz $v0, .L7F04DC1C +/* 082734 7F04DC04 8FA8010C */ lw $t0, 0x10c($sp) +/* 082738 7F04DC08 AD140000 */ sw $s4, ($t0) +/* 08273C 7F04DC0C 8FA90110 */ lw $t1, 0x110($sp) +/* 082740 7F04DC10 240A0001 */ li $t2, 1 +/* 082744 7F04DC14 AD300000 */ sw $s0, ($t1) +/* 082748 7F04DC18 AFAA00CC */ sw $t2, 0xcc($sp) +.L7F04DC1C: +/* 08274C 7F04DC1C 8E020014 */ lw $v0, 0x14($s0) +/* 082750 7F04DC20 8FAB00CC */ lw $t3, 0xcc($sp) +/* 082754 7F04DC24 10400003 */ beqz $v0, .L7F04DC34 +/* 082758 7F04DC28 00000000 */ nop +/* 08275C 7F04DC2C 1000000F */ b .L7F04DC6C +/* 082760 7F04DC30 00408025 */ move $s0, $v0 +.L7F04DC34: +/* 082764 7F04DC34 1200000D */ beqz $s0, .L7F04DC6C +/* 082768 7F04DC38 00000000 */ nop +.L7F04DC3C: +/* 08276C 7F04DC3C 56120004 */ bnel $s0, $s2, .L7F04DC50 +/* 082770 7F04DC40 8E02000C */ lw $v0, 0xc($s0) +/* 082774 7F04DC44 10000009 */ b .L7F04DC6C +/* 082778 7F04DC48 00008025 */ move $s0, $zero +/* 08277C 7F04DC4C 8E02000C */ lw $v0, 0xc($s0) +.L7F04DC50: +/* 082780 7F04DC50 50400004 */ beql $v0, $zero, .L7F04DC64 +/* 082784 7F04DC54 8E100008 */ lw $s0, 8($s0) +/* 082788 7F04DC58 10000004 */ b .L7F04DC6C +/* 08278C 7F04DC5C 00408025 */ move $s0, $v0 +/* 082790 7F04DC60 8E100008 */ lw $s0, 8($s0) +.L7F04DC64: +/* 082794 7F04DC64 1600FFF5 */ bnez $s0, .L7F04DC3C +/* 082798 7F04DC68 00000000 */ nop +.L7F04DC6C: +/* 08279C 7F04DC6C 52000004 */ beql $s0, $zero, .L7F04DC80 +/* 0827A0 7F04DC70 8FBF0054 */ lw $ra, 0x54($sp) +/* 0827A4 7F04DC74 5160FF68 */ beql $t3, $zero, .L7F04DA18 +/* 0827A8 7F04DC78 96020000 */ lhu $v0, ($s0) +.L7F04DC7C: +/* 0827AC 7F04DC7C 8FBF0054 */ lw $ra, 0x54($sp) +.L7F04DC80: +/* 0827B0 7F04DC80 8FA200CC */ lw $v0, 0xcc($sp) +/* 0827B4 7F04DC84 D7B40028 */ ldc1 $f20, 0x28($sp) +/* 0827B8 7F04DC88 8FB00030 */ lw $s0, 0x30($sp) +/* 0827BC 7F04DC8C 8FB10034 */ lw $s1, 0x34($sp) +/* 0827C0 7F04DC90 8FB20038 */ lw $s2, 0x38($sp) +/* 0827C4 7F04DC94 8FB3003C */ lw $s3, 0x3c($sp) +/* 0827C8 7F04DC98 8FB40040 */ lw $s4, 0x40($sp) +/* 0827CC 7F04DC9C 8FB50044 */ lw $s5, 0x44($sp) +/* 0827D0 7F04DCA0 8FB60048 */ lw $s6, 0x48($sp) +/* 0827D4 7F04DCA4 8FB7004C */ lw $s7, 0x4c($sp) +/* 0827D8 7F04DCA8 8FBE0050 */ lw $fp, 0x50($sp) +/* 0827DC 7F04DCAC 03E00008 */ jr $ra +/* 0827E0 7F04DCB0 27BD00F8 */ addiu $sp, $sp, 0xf8 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04DCB4(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*hack, doesnt fit in own data above*/ +.word destroyable_object +.word destroyable_object +.word destroyable_object +.word destroyable_object +.word destroyable_object +.word nondestroyable_object +.word destroyable_object +.word nondestroyable_object +.word destroyable_object + +.text +glabel sub_GAME_7F04DCB4 +/* 0827E4 7F04DCB4 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 0827E8 7F04DCB8 AFBF0034 */ sw $ra, 0x34($sp) +/* 0827EC 7F04DCBC AFB00030 */ sw $s0, 0x30($sp) +/* 0827F0 7F04DCC0 8C8E0010 */ lw $t6, 0x10($a0) +/* 0827F4 7F04DCC4 00808025 */ move $s0, $a0 +/* 0827F8 7F04DCC8 0FC1001E */ jal sub_GAME_7F040078 +/* 0827FC 7F04DCCC AFAE003C */ sw $t6, 0x3c($sp) +/* 082800 7F04DCD0 8FA4003C */ lw $a0, 0x3c($sp) +/* 082804 7F04DCD4 00002825 */ move $a1, $zero +/* 082808 7F04DCD8 0FC28333 */ jal sub_GAME_7F0A0CCC +/* 08280C 7F04DCDC AFA20038 */ sw $v0, 0x38($sp) +/* 082810 7F04DCE0 8FA4003C */ lw $a0, 0x3c($sp) +/* 082814 7F04DCE4 0FC28333 */ jal sub_GAME_7F0A0CCC +/* 082818 7F04DCE8 24050001 */ li $a1, 1 +/* 08281C 7F04DCEC 8FA30038 */ lw $v1, 0x38($sp) +/* 082820 7F04DCF0 26040058 */ addiu $a0, $s0, 0x58 +/* 082824 7F04DCF4 26050018 */ addiu $a1, $s0, 0x18 +/* 082828 7F04DCF8 C4640004 */ lwc1 $f4, 4($v1) +/* 08282C 7F04DCFC 26060028 */ addiu $a2, $s0, 0x28 +/* 082830 7F04DD00 26070038 */ addiu $a3, $s0, 0x38 +/* 082834 7F04DD04 E7A40010 */ swc1 $f4, 0x10($sp) +/* 082838 7F04DD08 C4660008 */ lwc1 $f6, 8($v1) +/* 08283C 7F04DD0C E7A60014 */ swc1 $f6, 0x14($sp) +/* 082840 7F04DD10 C468000C */ lwc1 $f8, 0xc($v1) +/* 082844 7F04DD14 E7A80018 */ swc1 $f8, 0x18($sp) +/* 082848 7F04DD18 C46A0010 */ lwc1 $f10, 0x10($v1) +/* 08284C 7F04DD1C E7AA001C */ swc1 $f10, 0x1c($sp) +/* 082850 7F04DD20 C4700014 */ lwc1 $f16, 0x14($v1) +/* 082854 7F04DD24 E7B00020 */ swc1 $f16, 0x20($sp) +/* 082858 7F04DD28 C4720018 */ lwc1 $f18, 0x18($v1) +/* 08285C 7F04DD2C 0FC28768 */ jal sub_GAME_7F0A1DA0 +/* 082860 7F04DD30 E7B20024 */ swc1 $f18, 0x24($sp) +/* 082864 7F04DD34 8E0F0064 */ lw $t7, 0x64($s0) +/* 082868 7F04DD38 92190002 */ lbu $t9, 2($s0) +/* 08286C 7F04DD3C 44802000 */ mtc1 $zero, $f4 +/* 082870 7F04DD40 35F80004 */ ori $t8, $t7, 4 +/* 082874 7F04DD44 37280080 */ ori $t0, $t9, 0x80 +/* 082878 7F04DD48 AE180064 */ sw $t8, 0x64($s0) +/* 08287C 7F04DD4C A2080002 */ sb $t0, 2($s0) +/* 082880 7F04DD50 E6040070 */ swc1 $f4, 0x70($s0) +/* 082884 7F04DD54 8FBF0034 */ lw $ra, 0x34($sp) +/* 082888 7F04DD58 8FB00030 */ lw $s0, 0x30($sp) +/* 08288C 7F04DD5C 27BD0040 */ addiu $sp, $sp, 0x40 +/* 082890 7F04DD60 03E00008 */ jr $ra +/* 082894 7F04DD64 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04DD68(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04DD68 +/* 082898 7F04DD68 27BDFF80 */ addiu $sp, $sp, -0x80 +/* 08289C 7F04DD6C AFBF002C */ sw $ra, 0x2c($sp) +/* 0828A0 7F04DD70 8C8E0010 */ lw $t6, 0x10($a0) +/* 0828A4 7F04DD74 27A50030 */ addiu $a1, $sp, 0x30 +/* 0828A8 7F04DD78 AFAE007C */ sw $t6, 0x7c($sp) +/* 0828AC 7F04DD7C 8C830014 */ lw $v1, 0x14($a0) +/* 0828B0 7F04DD80 8C6F0008 */ lw $t7, 8($v1) +/* 0828B4 7F04DD84 8DF80008 */ lw $t8, 8($t7) +/* 0828B8 7F04DD88 8F190008 */ lw $t9, 8($t8) +/* 0828BC 7F04DD8C 8F220004 */ lw $v0, 4($t9) +/* 0828C0 7F04DD90 AFA30078 */ sw $v1, 0x78($sp) +/* 0828C4 7F04DD94 0FC149BB */ jal sub_GAME_7F0526EC +/* 0828C8 7F04DD98 AFA20074 */ sw $v0, 0x74($sp) +/* 0828CC 7F04DD9C 8FA20074 */ lw $v0, 0x74($sp) +/* 0828D0 7F04DDA0 27A40060 */ addiu $a0, $sp, 0x60 +/* 0828D4 7F04DDA4 27A50030 */ addiu $a1, $sp, 0x30 +/* 0828D8 7F04DDA8 C4440004 */ lwc1 $f4, 4($v0) +/* 0828DC 7F04DDAC 27A60040 */ addiu $a2, $sp, 0x40 +/* 0828E0 7F04DDB0 27A70050 */ addiu $a3, $sp, 0x50 +/* 0828E4 7F04DDB4 E7A40010 */ swc1 $f4, 0x10($sp) +/* 0828E8 7F04DDB8 C4460008 */ lwc1 $f6, 8($v0) +/* 0828EC 7F04DDBC E7A60014 */ swc1 $f6, 0x14($sp) +/* 0828F0 7F04DDC0 C448000C */ lwc1 $f8, 0xc($v0) +/* 0828F4 7F04DDC4 E7A80018 */ swc1 $f8, 0x18($sp) +/* 0828F8 7F04DDC8 C44A0010 */ lwc1 $f10, 0x10($v0) +/* 0828FC 7F04DDCC E7AA001C */ swc1 $f10, 0x1c($sp) +/* 082900 7F04DDD0 C4500014 */ lwc1 $f16, 0x14($v0) +/* 082904 7F04DDD4 E7B00020 */ swc1 $f16, 0x20($sp) +/* 082908 7F04DDD8 C4520018 */ lwc1 $f18, 0x18($v0) +/* 08290C 7F04DDDC 0FC28768 */ jal sub_GAME_7F0A1DA0 +/* 082910 7F04DDE0 E7B20024 */ swc1 $f18, 0x24($sp) +/* 082914 7F04DDE4 8FA4007C */ lw $a0, 0x7c($sp) +/* 082918 7F04DDE8 0FC28333 */ jal sub_GAME_7F0A0CCC +/* 08291C 7F04DDEC 24050001 */ li $a1, 1 +/* 082920 7F04DDF0 8FA40078 */ lw $a0, 0x78($sp) +/* 082924 7F04DDF4 8C880008 */ lw $t0, 8($a0) +/* 082928 7F04DDF8 8D090008 */ lw $t1, 8($t0) +/* 08292C 7F04DDFC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 082930 7F04DE00 8D250004 */ lw $a1, 4($t1) +/* 082934 7F04DE04 AC400000 */ sw $zero, ($v0) +/* 082938 7F04DE08 8FBF002C */ lw $ra, 0x2c($sp) +/* 08293C 7F04DE0C 27BD0080 */ addiu $sp, $sp, 0x80 +/* 082940 7F04DE10 03E00008 */ jr $ra +/* 082944 7F04DE14 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04DE18(void) { + +} +#else +GLOBAL_ASM( + .late_rodata +/*hack, part of check_if_collectable_object*/ +/*D:80052EAC*/ +glabel jpt_80052EAC +.word collectable_object +.word notcollectable_object +.word notcollectable_object +.word collectable_object +.word collectable_object +.word notcollectable_object +.word notcollectable_object +.word notcollectable_object +.word notcollectable_object +.word notcollectable_object +.word notcollectable_object +.word notcollectable_object +.word notcollectable_object +.word collectable_object +.word notcollectable_object +.word notcollectable_object +.word collectable_object +.word collectable_object +.text +glabel sub_GAME_7F04DE18 +/* 082948 7F04DE18 27BDFF68 */ addiu $sp, $sp, -0x98 +/* 08294C 7F04DE1C AFBF0034 */ sw $ra, 0x34($sp) +/* 082950 7F04DE20 AFB00030 */ sw $s0, 0x30($sp) +/* 082954 7F04DE24 8C8E0010 */ lw $t6, 0x10($a0) +/* 082958 7F04DE28 AFAE0094 */ sw $t6, 0x94($sp) +/* 08295C 7F04DE2C 91D80001 */ lbu $t8, 1($t6) +/* 082960 7F04DE30 8C900014 */ lw $s0, 0x14($a0) +/* 082964 7F04DE34 33190002 */ andi $t9, $t8, 2 +/* 082968 7F04DE38 53200023 */ beql $t9, $zero, .L7F04DEC8 +/* 08296C 7F04DE3C 8FA40094 */ lw $a0, 0x94($sp) +/* 082970 7F04DE40 8E080008 */ lw $t0, 8($s0) +/* 082974 7F04DE44 02002025 */ move $a0, $s0 +/* 082978 7F04DE48 00003025 */ move $a2, $zero +/* 08297C 7F04DE4C 8D020008 */ lw $v0, 8($t0) +/* 082980 7F04DE50 8C490008 */ lw $t1, 8($v0) +/* 082984 7F04DE54 8C450004 */ lw $a1, 4($v0) +/* 082988 7F04DE58 8D230004 */ lw $v1, 4($t1) +/* 08298C 7F04DE5C 0FC1B198 */ jal sub_GAME_7F06C660 +/* 082990 7F04DE60 AFA30088 */ sw $v1, 0x88($sp) +/* 082994 7F04DE64 0FC1E111 */ jal sub_GAME_7F078444 +/* 082998 7F04DE68 AFA20084 */ sw $v0, 0x84($sp) +/* 08299C 7F04DE6C 00402025 */ move $a0, $v0 +/* 0829A0 7F04DE70 8FA50084 */ lw $a1, 0x84($sp) +/* 0829A4 7F04DE74 0FC16063 */ jal sub_GAME_7F05818C +/* 0829A8 7F04DE78 27A60044 */ addiu $a2, $sp, 0x44 +/* 0829AC 7F04DE7C 8FA30088 */ lw $v1, 0x88($sp) +/* 0829B0 7F04DE80 27A40074 */ addiu $a0, $sp, 0x74 +/* 0829B4 7F04DE84 27A50044 */ addiu $a1, $sp, 0x44 +/* 0829B8 7F04DE88 C4640004 */ lwc1 $f4, 4($v1) +/* 0829BC 7F04DE8C 27A60054 */ addiu $a2, $sp, 0x54 +/* 0829C0 7F04DE90 27A70064 */ addiu $a3, $sp, 0x64 +/* 0829C4 7F04DE94 E7A40010 */ swc1 $f4, 0x10($sp) +/* 0829C8 7F04DE98 C4660008 */ lwc1 $f6, 8($v1) +/* 0829CC 7F04DE9C E7A60014 */ swc1 $f6, 0x14($sp) +/* 0829D0 7F04DEA0 C468000C */ lwc1 $f8, 0xc($v1) +/* 0829D4 7F04DEA4 E7A80018 */ swc1 $f8, 0x18($sp) +/* 0829D8 7F04DEA8 C46A0010 */ lwc1 $f10, 0x10($v1) +/* 0829DC 7F04DEAC E7AA001C */ swc1 $f10, 0x1c($sp) +/* 0829E0 7F04DEB0 C4700014 */ lwc1 $f16, 0x14($v1) +/* 0829E4 7F04DEB4 E7B00020 */ swc1 $f16, 0x20($sp) +/* 0829E8 7F04DEB8 C4720018 */ lwc1 $f18, 0x18($v1) +/* 0829EC 7F04DEBC 0FC28768 */ jal sub_GAME_7F0A1DA0 +/* 0829F0 7F04DEC0 E7B20024 */ swc1 $f18, 0x24($sp) +/* 0829F4 7F04DEC4 8FA40094 */ lw $a0, 0x94($sp) +.L7F04DEC8: +/* 0829F8 7F04DEC8 0FC28333 */ jal sub_GAME_7F0A0CCC +/* 0829FC 7F04DECC 24050001 */ li $a1, 1 +/* 082A00 7F04DED0 8E0A0008 */ lw $t2, 8($s0) +/* 082A04 7F04DED4 02002025 */ move $a0, $s0 +/* 082A08 7F04DED8 8D4B0008 */ lw $t3, 8($t2) +/* 082A0C 7F04DEDC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 082A10 7F04DEE0 8D65000C */ lw $a1, 0xc($t3) +/* 082A14 7F04DEE4 AC400000 */ sw $zero, ($v0) +/* 082A18 7F04DEE8 8FBF0034 */ lw $ra, 0x34($sp) +/* 082A1C 7F04DEEC 8FB00030 */ lw $s0, 0x30($sp) +/* 082A20 7F04DEF0 27BD0098 */ addiu $sp, $sp, 0x98 +/* 082A24 7F04DEF4 03E00008 */ jr $ra +/* 082A28 7F04DEF8 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04DEFC(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04DEFC +/* 082A2C 7F04DEFC 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 082A30 7F04DF00 AFBF003C */ sw $ra, 0x3c($sp) +/* 082A34 7F04DF04 AFB40038 */ sw $s4, 0x38($sp) +/* 082A38 7F04DF08 AFB30034 */ sw $s3, 0x34($sp) +/* 082A3C 7F04DF0C AFB20030 */ sw $s2, 0x30($sp) +/* 082A40 7F04DF10 AFB1002C */ sw $s1, 0x2c($sp) +/* 082A44 7F04DF14 AFB00028 */ sw $s0, 0x28($sp) +/* 082A48 7F04DF18 F7B40020 */ sdc1 $f20, 0x20($sp) +/* 082A4C 7F04DF1C AFA40040 */ sw $a0, 0x40($sp) +/* 082A50 7F04DF20 8C820004 */ lw $v0, 4($a0) +/* 082A54 7F04DF24 8FB20050 */ lw $s2, 0x50($sp) +/* 082A58 7F04DF28 3C01FFF9 */ lui $at, (0xFFF9FFFF >> 16) # lui $at, 0xfff9 +/* 082A5C 7F04DF2C 8C4F0064 */ lw $t7, 0x64($v0) +/* 082A60 7F04DF30 3421FFFF */ ori $at, (0xFFF9FFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 082A64 7F04DF34 00124440 */ sll $t0, $s2, 0x11 +/* 082A68 7F04DF38 01E1C024 */ and $t8, $t7, $at +/* 082A6C 7F04DF3C 03084825 */ or $t1, $t8, $t0 +/* 082A70 7F04DF40 4485A000 */ mtc1 $a1, $f20 +/* 082A74 7F04DF44 00095B00 */ sll $t3, $t1, 0xc +/* 082A78 7F04DF48 AC580064 */ sw $t8, 0x64($v0) +/* 082A7C 7F04DF4C 00C09825 */ move $s3, $a2 +/* 082A80 7F04DF50 00E0A025 */ move $s4, $a3 +/* 082A84 7F04DF54 05600015 */ bltz $t3, .L7F04DFAC +/* 082A88 7F04DF58 AC490064 */ sw $t1, 0x64($v0) +/* 082A8C 7F04DF5C 8FAC0040 */ lw $t4, 0x40($sp) +/* 082A90 7F04DF60 8D900020 */ lw $s0, 0x20($t4) +/* 082A94 7F04DF64 5200000B */ beql $s0, $zero, .L7F04DF94 +/* 082A98 7F04DF68 8FAD0040 */ lw $t5, 0x40($sp) +.L7F04DF6C: +/* 082A9C 7F04DF6C 8E110024 */ lw $s1, 0x24($s0) +/* 082AA0 7F04DF70 4405A000 */ mfc1 $a1, $f20 +/* 082AA4 7F04DF74 AFB20010 */ sw $s2, 0x10($sp) +/* 082AA8 7F04DF78 02002025 */ move $a0, $s0 +/* 082AAC 7F04DF7C 02603025 */ move $a2, $s3 +/* 082AB0 7F04DF80 0FC137BF */ jal sub_GAME_7F04DEFC +/* 082AB4 7F04DF84 02803825 */ move $a3, $s4 +/* 082AB8 7F04DF88 1620FFF8 */ bnez $s1, .L7F04DF6C +/* 082ABC 7F04DF8C 02208025 */ move $s0, $s1 +/* 082AC0 7F04DF90 8FAD0040 */ lw $t5, 0x40($sp) +.L7F04DF94: +/* 082AC4 7F04DF94 4405A000 */ mfc1 $a1, $f20 +/* 082AC8 7F04DF98 02603025 */ move $a2, $s3 +/* 082ACC 7F04DF9C 8DA40004 */ lw $a0, 4($t5) +/* 082AD0 7F04DFA0 AFB20010 */ sw $s2, 0x10($sp) +/* 082AD4 7F04DFA4 0FC13842 */ jal maybe_detonate_object +/* 082AD8 7F04DFA8 02803825 */ move $a3, $s4 +.L7F04DFAC: +/* 082ADC 7F04DFAC 8FBF003C */ lw $ra, 0x3c($sp) +/* 082AE0 7F04DFB0 D7B40020 */ ldc1 $f20, 0x20($sp) +/* 082AE4 7F04DFB4 8FB00028 */ lw $s0, 0x28($sp) +/* 082AE8 7F04DFB8 8FB1002C */ lw $s1, 0x2c($sp) +/* 082AEC 7F04DFBC 8FB20030 */ lw $s2, 0x30($sp) +/* 082AF0 7F04DFC0 8FB30034 */ lw $s3, 0x34($sp) +/* 082AF4 7F04DFC4 8FB40038 */ lw $s4, 0x38($sp) +/* 082AF8 7F04DFC8 03E00008 */ jr $ra +/* 082AFC 7F04DFCC 27BD0040 */ addiu $sp, $sp, 0x40 +) +#endif + + + + + +#ifdef NONMATCHING +void check_if_destroyable_object_type(void) { + +} +#else +GLOBAL_ASM( +.late_rodata + + +.text +glabel check_if_destroyable_object_type +/* 082B00 7F04DFD0 908E0003 */ lbu $t6, 3($a0) +/* 082B04 7F04DFD4 25CFFFFF */ addiu $t7, $t6, -1 +/* 082B08 7F04DFD8 2DE1002F */ sltiu $at, $t7, 0x2f +/* 082B0C 7F04DFDC 10200008 */ beqz $at, .L7F04E000 +/* 082B10 7F04DFE0 000F7880 */ sll $t7, $t7, 2 +/* 082B14 7F04DFE4 3C018005 */ lui $at, %hi(jpt_80052DF0) +/* 082B18 7F04DFE8 002F0821 */ addu $at, $at, $t7 +/* 082B1C 7F04DFEC 8C2F2DF0 */ lw $t7, %lo(jpt_80052DF0)($at) +/* 082B20 7F04DFF0 01E00008 */ jr $t7 +/* 082B24 7F04DFF4 00000000 */ nop +destroyable_object: +/* 082B28 7F04DFF8 03E00008 */ jr $ra +/* 082B2C 7F04DFFC 24020001 */ li $v0, 1 + +nondestroyable_object: +.L7F04E000: +/* 082B30 7F04E000 00001025 */ move $v0, $zero +/* 082B34 7F04E004 03E00008 */ jr $ra +/* 082B38 7F04E008 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void check_if_collectable_object(void) { + +} +#else +GLOBAL_ASM( +.text +glabel check_if_collectable_object +/* 082B3C 7F04E00C 908E0003 */ lbu $t6, 3($a0) +/* 082B40 7F04E010 25CFFFFC */ addiu $t7, $t6, -4 +/* 082B44 7F04E014 2DE10012 */ sltiu $at, $t7, 0x12 +/* 082B48 7F04E018 10200008 */ beqz $at, .L7F04E03C +/* 082B4C 7F04E01C 000F7880 */ sll $t7, $t7, 2 +/* 082B50 7F04E020 3C018005 */ lui $at, %hi(jpt_80052EAC) +/* 082B54 7F04E024 002F0821 */ addu $at, $at, $t7 +/* 082B58 7F04E028 8C2F2EAC */ lw $t7, %lo(jpt_80052EAC)($at) +/* 082B5C 7F04E02C 01E00008 */ jr $t7 +/* 082B60 7F04E030 00000000 */ nop +collectable_object: +/* 082B64 7F04E034 03E00008 */ jr $ra +/* 082B68 7F04E038 24020001 */ li $v0, 1 + +notcollectable_object: +.L7F04E03C: +/* 082B6C 7F04E03C 00001025 */ move $v0, $zero +/* 082B70 7F04E040 03E00008 */ jr $ra +/* 082B74 7F04E044 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void check_if_destroyable_not_invincible(void) { + +} +#else +GLOBAL_ASM( +.text +glabel check_if_destroyable_not_invincible +/* 082B78 7F04E048 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 082B7C 7F04E04C AFBF0014 */ sw $ra, 0x14($sp) +/* 082B80 7F04E050 908E0003 */ lbu $t6, 3($a0) +/* 082B84 7F04E054 24010001 */ li $at, 1 +/* 082B88 7F04E058 15C10003 */ bne $t6, $at, .L7F04E068 +/* 082B8C 7F04E05C 00000000 */ nop +/* 082B90 7F04E060 10000016 */ b .L7F04E0BC +/* 082B94 7F04E064 00001025 */ move $v0, $zero +.L7F04E068: +/* 082B98 7F04E068 0FC13803 */ jal check_if_collectable_object +/* 082B9C 7F04E06C AFA40018 */ sw $a0, 0x18($sp) +/* 082BA0 7F04E070 1040000B */ beqz $v0, .L7F04E0A0 +/* 082BA4 7F04E074 8FA40018 */ lw $a0, 0x18($sp) +/* 082BA8 7F04E078 908F0003 */ lbu $t7, 3($a0) +/* 082BAC 7F04E07C 24010015 */ li $at, 21 +/* 082BB0 7F04E080 51E10008 */ beql $t7, $at, .L7F04E0A4 +/* 082BB4 7F04E084 8C880008 */ lw $t0, 8($a0) +/* 082BB8 7F04E088 8C980008 */ lw $t8, 8($a0) +/* 082BBC 7F04E08C 0018CBC0 */ sll $t9, $t8, 0xf +/* 082BC0 7F04E090 0722000A */ bltzl $t9, .L7F04E0BC +/* 082BC4 7F04E094 24020001 */ li $v0, 1 +/* 082BC8 7F04E098 10000008 */ b .L7F04E0BC +/* 082BCC 7F04E09C 00001025 */ move $v0, $zero +.L7F04E0A0: +/* 082BD0 7F04E0A0 8C880008 */ lw $t0, 8($a0) +.L7F04E0A4: +/* 082BD4 7F04E0A4 00084B80 */ sll $t1, $t0, 0xe +/* 082BD8 7F04E0A8 05230004 */ bgezl $t1, .L7F04E0BC +/* 082BDC 7F04E0AC 24020001 */ li $v0, 1 +/* 082BE0 7F04E0B0 10000002 */ b .L7F04E0BC +/* 082BE4 7F04E0B4 00001025 */ move $v0, $zero +/* 082BE8 7F04E0B8 24020001 */ li $v0, 1 +.L7F04E0BC: +/* 082BEC 7F04E0BC 8FBF0014 */ lw $ra, 0x14($sp) +/* 082BF0 7F04E0C0 27BD0018 */ addiu $sp, $sp, 0x18 +/* 082BF4 7F04E0C4 03E00008 */ jr $ra +/* 082BF8 7F04E0C8 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04E0CC(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04E0CC +/* 082BFC 7F04E0CC 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 082C00 7F04E0D0 AFBF001C */ sw $ra, 0x1c($sp) +/* 082C04 7F04E0D4 8C8E000C */ lw $t6, 0xc($a0) +/* 082C08 7F04E0D8 44856000 */ mtc1 $a1, $f12 +/* 082C0C 7F04E0DC 8FB80030 */ lw $t8, 0x30($sp) +/* 082C10 7F04E0E0 31CF4000 */ andi $t7, $t6, 0x4000 +/* 082C14 7F04E0E4 55E00005 */ bnezl $t7, .L7F04E0FC +/* 082C18 7F04E0E8 8FBF001C */ lw $ra, 0x1c($sp) +/* 082C1C 7F04E0EC 44056000 */ mfc1 $a1, $f12 +/* 082C20 7F04E0F0 0FC13842 */ jal maybe_detonate_object +/* 082C24 7F04E0F4 AFB80010 */ sw $t8, 0x10($sp) +/* 082C28 7F04E0F8 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04E0FC: +/* 082C2C 7F04E0FC 27BD0020 */ addiu $sp, $sp, 0x20 +/* 082C30 7F04E100 03E00008 */ jr $ra +/* 082C34 7F04E104 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void maybe_detonate_object(void) { + +} +#else +GLOBAL_ASM( +.text +glabel maybe_detonate_object +/* 082C38 7F04E108 27BDFF20 */ addiu $sp, $sp, -0xe0 +/* 082C3C 7F04E10C AFBF001C */ sw $ra, 0x1c($sp) +/* 082C40 7F04E110 AFB00018 */ sw $s0, 0x18($sp) +/* 082C44 7F04E114 AFA600E8 */ sw $a2, 0xe8($sp) +/* 082C48 7F04E118 AFA700EC */ sw $a3, 0xec($sp) +/* 082C4C 7F04E11C 8C8E0064 */ lw $t6, 0x64($a0) +/* 082C50 7F04E120 3C01FFF9 */ lui $at, (0xFFF9FFFF >> 16) # lui $at, 0xfff9 +/* 082C54 7F04E124 3421FFFF */ ori $at, (0xFFF9FFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 082C58 7F04E128 01C17824 */ and $t7, $t6, $at +/* 082C5C 7F04E12C AC8F0064 */ sw $t7, 0x64($a0) +/* 082C60 7F04E130 8FB900F0 */ lw $t9, 0xf0($sp) +/* 082C64 7F04E134 908B0003 */ lbu $t3, 3($a0) +/* 082C68 7F04E138 44856000 */ mtc1 $a1, $f12 +/* 082C6C 7F04E13C 00194C40 */ sll $t1, $t9, 0x11 +/* 082C70 7F04E140 01E95025 */ or $t2, $t7, $t1 +/* 082C74 7F04E144 24010024 */ li $at, 36 +/* 082C78 7F04E148 00808025 */ move $s0, $a0 +/* 082C7C 7F04E14C 15610006 */ bne $t3, $at, .L7F04E168 +/* 082C80 7F04E150 AC8A0064 */ sw $t2, 0x64($a0) +/* 082C84 7F04E154 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 082C88 7F04E158 E7AC00E4 */ swc1 $f12, 0xe4($sp) +/* 082C8C 7F04E15C 24010001 */ li $at, 1 +/* 082C90 7F04E160 1041016A */ beq $v0, $at, .L7F04E70C +/* 082C94 7F04E164 C7AC00E4 */ lwc1 $f12, 0xe4($sp) +.L7F04E168: +/* 082C98 7F04E168 8FAC00EC */ lw $t4, 0xec($sp) +/* 082C9C 7F04E16C 02002025 */ move $a0, $s0 +/* 082CA0 7F04E170 55800012 */ bnezl $t4, .L7F04E1BC +/* 082CA4 7F04E174 8E030008 */ lw $v1, 8($s0) +/* 082CA8 7F04E178 0FC13803 */ jal check_if_collectable_object +/* 082CAC 7F04E17C E7AC00E4 */ swc1 $f12, 0xe4($sp) +/* 082CB0 7F04E180 10400007 */ beqz $v0, .L7F04E1A0 +/* 082CB4 7F04E184 C7AC00E4 */ lwc1 $f12, 0xe4($sp) +/* 082CB8 7F04E188 8E0D0008 */ lw $t5, 8($s0) +/* 082CBC 7F04E18C 000D7200 */ sll $t6, $t5, 8 +/* 082CC0 7F04E190 05C20045 */ bltzl $t6, .L7F04E2A8 +/* 082CC4 7F04E194 02002025 */ move $a0, $s0 +/* 082CC8 7F04E198 1000015D */ b .L7F04E710 +/* 082CCC 7F04E19C 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04E1A0: +/* 082CD0 7F04E1A0 8E0F0008 */ lw $t7, 8($s0) +/* 082CD4 7F04E1A4 000FC9C0 */ sll $t9, $t7, 7 +/* 082CD8 7F04E1A8 0723003F */ bgezl $t9, .L7F04E2A8 +/* 082CDC 7F04E1AC 02002025 */ move $a0, $s0 +/* 082CE0 7F04E1B0 10000157 */ b .L7F04E710 +/* 082CE4 7F04E1B4 8FBF001C */ lw $ra, 0x1c($sp) +/* 082CE8 7F04E1B8 8E030008 */ lw $v1, 8($s0) +.L7F04E1BC: +/* 082CEC 7F04E1BC 0003C380 */ sll $t8, $v1, 0xe +/* 082CF0 7F04E1C0 07020153 */ bltzl $t8, .L7F04E710 +/* 082CF4 7F04E1C4 8FBF001C */ lw $ra, 0x1c($sp) +/* 082CF8 7F04E1C8 92020003 */ lbu $v0, 3($s0) +/* 082CFC 7F04E1CC 24050008 */ li $a1, 8 +/* 082D00 7F04E1D0 24040007 */ li $a0, 7 +/* 082D04 7F04E1D4 14A20015 */ bne $a1, $v0, .L7F04E22C +/* 082D08 7F04E1D8 00000000 */ nop +/* 082D0C 7F04E1DC 82020080 */ lb $v0, 0x80($s0) +/* 082D10 7F04E1E0 2401001A */ li $at, 26 +/* 082D14 7F04E1E4 1041000F */ beq $v0, $at, .L7F04E224 +/* 082D18 7F04E1E8 2401001B */ li $at, 27 +/* 082D1C 7F04E1EC 1041000D */ beq $v0, $at, .L7F04E224 +/* 082D20 7F04E1F0 2401001D */ li $at, 29 +/* 082D24 7F04E1F4 1041000B */ beq $v0, $at, .L7F04E224 +/* 082D28 7F04E1F8 2401001C */ li $at, 28 +/* 082D2C 7F04E1FC 10410009 */ beq $v0, $at, .L7F04E224 +/* 082D30 7F04E200 24010056 */ li $at, 86 +/* 082D34 7F04E204 10410007 */ beq $v0, $at, .L7F04E224 +/* 082D38 7F04E208 24010057 */ li $at, 87 +/* 082D3C 7F04E20C 10410005 */ beq $v0, $at, .L7F04E224 +/* 082D40 7F04E210 24010021 */ li $at, 33 +/* 082D44 7F04E214 10410003 */ beq $v0, $at, .L7F04E224 +/* 082D48 7F04E218 24010022 */ li $at, 34 +/* 082D4C 7F04E21C 5441013C */ bnel $v0, $at, .L7F04E710 +/* 082D50 7F04E220 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04E224: +/* 082D54 7F04E224 10000139 */ b .L7F04E70C +/* 082D58 7F04E228 A6000082 */ sh $zero, 0x82($s0) +.L7F04E22C: +/* 082D5C 7F04E22C 54820019 */ bnel $a0, $v0, .L7F04E294 +/* 082D60 7F04E230 02002025 */ move $a0, $s0 +/* 082D64 7F04E234 8E020080 */ lw $v0, 0x80($s0) +/* 082D68 7F04E238 24010005 */ li $at, 5 +/* 082D6C 7F04E23C 10410010 */ beq $v0, $at, .L7F04E280 +/* 082D70 7F04E240 24010006 */ li $at, 6 +/* 082D74 7F04E244 5041000F */ beql $v0, $at, .L7F04E284 +/* 082D78 7F04E248 3C011000 */ lui $at, 0x1000 +/* 082D7C 7F04E24C 5082000D */ beql $a0, $v0, .L7F04E284 +/* 082D80 7F04E250 3C011000 */ lui $at, 0x1000 +/* 082D84 7F04E254 10A2000A */ beq $a1, $v0, .L7F04E280 +/* 082D88 7F04E258 24010009 */ li $at, 9 +/* 082D8C 7F04E25C 10410008 */ beq $v0, $at, .L7F04E280 +/* 082D90 7F04E260 2401000B */ li $at, 11 +/* 082D94 7F04E264 10410006 */ beq $v0, $at, .L7F04E280 +/* 082D98 7F04E268 2401000F */ li $at, 15 +/* 082D9C 7F04E26C 10410004 */ beq $v0, $at, .L7F04E280 +/* 082DA0 7F04E270 24010010 */ li $at, 16 +/* 082DA4 7F04E274 10410002 */ beq $v0, $at, .L7F04E280 +/* 082DA8 7F04E278 24010013 */ li $at, 19 +/* 082DAC 7F04E27C 14410123 */ bne $v0, $at, .L7F04E70C +.L7F04E280: +/* 082DB0 7F04E280 3C011000 */ li $at, 0x10000000 # 0.000000 +.L7F04E284: +/* 082DB4 7F04E284 00614825 */ or $t1, $v1, $at +/* 082DB8 7F04E288 10000120 */ b .L7F04E70C +/* 082DBC 7F04E28C AE090008 */ sw $t1, 8($s0) +/* 082DC0 7F04E290 02002025 */ move $a0, $s0 +.L7F04E294: +/* 082DC4 7F04E294 0FC13812 */ jal check_if_destroyable_not_invincible +/* 082DC8 7F04E298 E7AC00E4 */ swc1 $f12, 0xe4($sp) +/* 082DCC 7F04E29C 1040011B */ beqz $v0, .L7F04E70C +/* 082DD0 7F04E2A0 C7AC00E4 */ lwc1 $f12, 0xe4($sp) +/* 082DD4 7F04E2A4 02002025 */ move $a0, $s0 +.L7F04E2A8: +/* 082DD8 7F04E2A8 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 082DDC 7F04E2AC E7AC00E4 */ swc1 $f12, 0xe4($sp) +/* 082DE0 7F04E2B0 14400008 */ bnez $v0, .L7F04E2D4 +/* 082DE4 7F04E2B4 C7AC00E4 */ lwc1 $f12, 0xe4($sp) +/* 082DE8 7F04E2B8 3C01437A */ li $at, 0x437A0000 # 250.000000 +/* 082DEC 7F04E2BC 44813000 */ mtc1 $at, $f6 +/* 082DF0 7F04E2C0 C6040070 */ lwc1 $f4, 0x70($s0) +/* 082DF4 7F04E2C4 46066202 */ mul.s $f8, $f12, $f6 +/* 082DF8 7F04E2C8 46082280 */ add.s $f10, $f4, $f8 +/* 082DFC 7F04E2CC 1000001F */ b .L7F04E34C +/* 082E00 7F04E2D0 E60A0070 */ swc1 $f10, 0x70($s0) +.L7F04E2D4: +/* 082E04 7F04E2D4 02002025 */ move $a0, $s0 +/* 082E08 7F04E2D8 0FC0FFD8 */ jal sub_GAME_7F03FF60 +/* 082E0C 7F04E2DC E7AC00E4 */ swc1 $f12, 0xe4($sp) +/* 082E10 7F04E2E0 240B0004 */ li $t3, 4 +/* 082E14 7F04E2E4 C7AC00E4 */ lwc1 $f12, 0xe4($sp) +/* 082E18 7F04E2E8 04410004 */ bgez $v0, .L7F04E2FC +/* 082E1C 7F04E2EC 304A0003 */ andi $t2, $v0, 3 +/* 082E20 7F04E2F0 11400002 */ beqz $t2, .L7F04E2FC +/* 082E24 7F04E2F4 00000000 */ nop +/* 082E28 7F04E2F8 254AFFFC */ addiu $t2, $t2, -4 +.L7F04E2FC: +/* 082E2C 7F04E2FC 016A6023 */ subu $t4, $t3, $t2 +/* 082E30 7F04E300 448C8000 */ mtc1 $t4, $f16 +/* 082E34 7F04E304 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 082E38 7F04E308 46808020 */ cvt.s.w $f0, $f16 +/* 082E3C 7F04E30C 460C003C */ c.lt.s $f0, $f12 +/* 082E40 7F04E310 00000000 */ nop +/* 082E44 7F04E314 45020004 */ bc1fl .L7F04E328 +/* 082E48 7F04E318 44810000 */ mtc1 $at, $f0 +/* 082E4C 7F04E31C 10000008 */ b .L7F04E340 +/* 082E50 7F04E320 46000306 */ mov.s $f12, $f0 +/* 082E54 7F04E324 44810000 */ mtc1 $at, $f0 +.L7F04E328: +/* 082E58 7F04E328 00000000 */ nop +/* 082E5C 7F04E32C 4600603C */ c.lt.s $f12, $f0 +/* 082E60 7F04E330 00000000 */ nop +/* 082E64 7F04E334 45020003 */ bc1fl .L7F04E344 +/* 082E68 7F04E338 C6120070 */ lwc1 $f18, 0x70($s0) +/* 082E6C 7F04E33C 46000306 */ mov.s $f12, $f0 +.L7F04E340: +/* 082E70 7F04E340 C6120070 */ lwc1 $f18, 0x70($s0) +.L7F04E344: +/* 082E74 7F04E344 460C9180 */ add.s $f6, $f18, $f12 +/* 082E78 7F04E348 E6060070 */ swc1 $f6, 0x70($s0) +.L7F04E34C: +/* 082E7C 7F04E34C 92020003 */ lbu $v0, 3($s0) +/* 082E80 7F04E350 2401002A */ li $at, 42 +/* 082E84 7F04E354 10410003 */ beq $v0, $at, .L7F04E364 +/* 082E88 7F04E358 2401002F */ li $at, 47 +/* 082E8C 7F04E35C 1441000B */ bne $v0, $at, .L7F04E38C +/* 082E90 7F04E360 24050001 */ li $a1, 1 +.L7F04E364: +/* 082E94 7F04E364 C6040070 */ lwc1 $f4, 0x70($s0) +/* 082E98 7F04E368 C6080074 */ lwc1 $f8, 0x74($s0) +/* 082E9C 7F04E36C 4604403E */ c.le.s $f8, $f4 +/* 082EA0 7F04E370 00000000 */ nop +/* 082EA4 7F04E374 4502000D */ bc1fl .L7F04E3AC +/* 082EA8 7F04E378 24010014 */ li $at, 20 +/* 082EAC 7F04E37C 0FC1372D */ jal sub_GAME_7F04DCB4 +/* 082EB0 7F04E380 02002025 */ move $a0, $s0 +/* 082EB4 7F04E384 10000008 */ b .L7F04E3A8 +/* 082EB8 7F04E388 92020003 */ lbu $v0, 3($s0) +.L7F04E38C: +/* 082EBC 7F04E38C 0FC12FF4 */ jal sub_GAME_7F04BFD0 +/* 082EC0 7F04E390 8E040010 */ lw $a0, 0x10($s0) +/* 082EC4 7F04E394 02002025 */ move $a0, $s0 +/* 082EC8 7F04E398 8FA500E8 */ lw $a1, 0xe8($sp) +/* 082ECC 7F04E39C 0FC13383 */ jal object_explosion_related +/* 082ED0 7F04E3A0 8FA600F0 */ lw $a2, 0xf0($sp) +/* 082ED4 7F04E3A4 92020003 */ lbu $v0, 3($s0) +.L7F04E3A8: +/* 082ED8 7F04E3A8 24010014 */ li $at, 20 +.L7F04E3AC: +/* 082EDC 7F04E3AC 54410065 */ bnel $v0, $at, .L7F04E544 +/* 082EE0 7F04E3B0 92020003 */ lbu $v0, 3($s0) +/* 082EE4 7F04E3B4 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 082EE8 7F04E3B8 02002025 */ move $a0, $s0 +/* 082EEC 7F04E3BC 24010001 */ li $at, 1 +/* 082EF0 7F04E3C0 54410060 */ bnel $v0, $at, .L7F04E544 +/* 082EF4 7F04E3C4 92020003 */ lbu $v0, 3($s0) +/* 082EF8 7F04E3C8 0C002914 */ jal get_random_value +/* 082EFC 7F04E3CC 00000000 */ nop +/* 082F00 7F04E3D0 2401000D */ li $at, 13 +/* 082F04 7F04E3D4 0041001B */ divu $zero, $v0, $at +/* 082F08 7F04E3D8 00002010 */ mfhi $a0 +/* 082F0C 7F04E3DC 00802825 */ move $a1, $a0 +/* 082F10 7F04E3E0 00000000 */ nop +/* 082F14 7F04E3E4 00046880 */ sll $t5, $a0, 2 +.L7F04E3E8: +/* 082F18 7F04E3E8 020D1821 */ addu $v1, $s0, $t5 +/* 082F1C 7F04E3EC 946E0082 */ lhu $t6, 0x82($v1) +/* 082F20 7F04E3F0 59C0004E */ blezl $t6, .L7F04E52C +/* 082F24 7F04E3F4 24840001 */ addiu $a0, $a0, 1 +/* 082F28 7F04E3F8 946F0080 */ lhu $t7, 0x80($v1) +/* 082F2C 7F04E3FC 3401FFFF */ li $at, 65535 +/* 082F30 7F04E400 51E1004A */ beql $t7, $at, .L7F04E52C +/* 082F34 7F04E404 24840001 */ addiu $a0, $a0, 1 +/* 082F38 7F04E408 AFA30024 */ sw $v1, 0x24($sp) +/* 082F3C 7F04E40C AFA400C4 */ sw $a0, 0xc4($sp) +/* 082F40 7F04E410 0FC14634 */ jal sub_GAME_7F0518D0 +/* 082F44 7F04E414 AFA500C8 */ sw $a1, 0xc8($sp) +/* 082F48 7F04E418 8FA30024 */ lw $v1, 0x24($sp) +/* 082F4C 7F04E41C 8FA400C4 */ lw $a0, 0xc4($sp) +/* 082F50 7F04E420 8FA500C8 */ lw $a1, 0xc8($sp) +/* 082F54 7F04E424 10400040 */ beqz $v0, .L7F04E528 +/* 082F58 7F04E428 00403025 */ move $a2, $v0 +/* 082F5C 7F04E42C 3C198003 */ lui $t9, %hi(blank_07_object) +/* 082F60 7F04E430 27A8003C */ addiu $t0, $sp, 0x3c +/* 082F64 7F04E434 27392094 */ addiu $t9, %lo(blank_07_object) # addiu $t9, $t9, 0x2094 +/* 082F68 7F04E438 94670080 */ lhu $a3, 0x80($v1) +/* 082F6C 7F04E43C 27290078 */ addiu $t1, $t9, 0x78 +/* 082F70 7F04E440 01005825 */ move $t3, $t0 +.L7F04E444: +/* 082F74 7F04E444 8F210000 */ lw $at, ($t9) +/* 082F78 7F04E448 2739000C */ addiu $t9, $t9, 0xc +/* 082F7C 7F04E44C 256B000C */ addiu $t3, $t3, 0xc +/* 082F80 7F04E450 AD61FFF4 */ sw $at, -0xc($t3) +/* 082F84 7F04E454 8F21FFF8 */ lw $at, -8($t9) +/* 082F88 7F04E458 AD61FFF8 */ sw $at, -8($t3) +/* 082F8C 7F04E45C 8F21FFFC */ lw $at, -4($t9) +/* 082F90 7F04E460 1729FFF8 */ bne $t9, $t1, .L7F04E444 +/* 082F94 7F04E464 AD61FFFC */ sw $at, -4($t3) +/* 082F98 7F04E468 8F210000 */ lw $at, ($t9) +/* 082F9C 7F04E46C 01006825 */ move $t5, $t0 +/* 082FA0 7F04E470 00407025 */ move $t6, $v0 +/* 082FA4 7F04E474 AD610000 */ sw $at, ($t3) +/* 082FA8 7F04E478 8F290004 */ lw $t1, 4($t9) +/* 082FAC 7F04E47C 250C0078 */ addiu $t4, $t0, 0x78 +/* 082FB0 7F04E480 0007C080 */ sll $t8, $a3, 2 +/* 082FB4 7F04E484 AD690004 */ sw $t1, 4($t3) +.L7F04E488: +/* 082FB8 7F04E488 8DA10000 */ lw $at, ($t5) +/* 082FBC 7F04E48C 25AD000C */ addiu $t5, $t5, 0xc +/* 082FC0 7F04E490 25CE000C */ addiu $t6, $t6, 0xc +/* 082FC4 7F04E494 ADC1FFF4 */ sw $at, -0xc($t6) +/* 082FC8 7F04E498 8DA1FFF8 */ lw $at, -8($t5) +/* 082FCC 7F04E49C ADC1FFF8 */ sw $at, -8($t6) +/* 082FD0 7F04E4A0 8DA1FFFC */ lw $at, -4($t5) +/* 082FD4 7F04E4A4 15ACFFF8 */ bne $t5, $t4, .L7F04E488 +/* 082FD8 7F04E4A8 ADC1FFFC */ sw $at, -4($t6) +/* 082FDC 7F04E4AC 8DA10000 */ lw $at, ($t5) +/* 082FE0 7F04E4B0 24850001 */ addiu $a1, $a0, 1 +/* 082FE4 7F04E4B4 00C02025 */ move $a0, $a2 +/* 082FE8 7F04E4B8 ADC10000 */ sw $at, ($t6) +/* 082FEC 7F04E4BC 8DAC0004 */ lw $t4, 4($t5) +/* 082FF0 7F04E4C0 24010002 */ li $at, 2 +/* 082FF4 7F04E4C4 0307C023 */ subu $t8, $t8, $a3 +/* 082FF8 7F04E4C8 ADCC0004 */ sw $t4, 4($t6) +/* 082FFC 7F04E4CC A4470004 */ sh $a3, 4($v0) +/* 083000 7F04E4D0 14A10003 */ bne $a1, $at, .L7F04E4E0 +/* 083004 7F04E4D4 AC450080 */ sw $a1, 0x80($v0) +/* 083008 7F04E4D8 240F0001 */ li $t7, 1 +/* 08300C 7F04E4DC AC4F0080 */ sw $t7, 0x80($v0) +.L7F04E4E0: +/* 083010 7F04E4E0 0018C080 */ sll $t8, $t8, 2 +/* 083014 7F04E4E4 3C058004 */ lui $a1, %hi(PitemZ_entries) +/* 083018 7F04E4E8 00B82821 */ addu $a1, $a1, $t8 +/* 08301C 7F04E4EC 8CA5A228 */ lw $a1, %lo(PitemZ_entries)($a1) +/* 083020 7F04E4F0 0FC101BE */ jal sub_GAME_7F0406F8 +/* 083024 7F04E4F4 AFA600C0 */ sw $a2, 0xc0($sp) +/* 083028 7F04E4F8 10400011 */ beqz $v0, .L7F04E540 +/* 08302C 7F04E4FC 8FA600C0 */ lw $a2, 0xc0($sp) +/* 083030 7F04E500 8CC40014 */ lw $a0, 0x14($a2) +/* 083034 7F04E504 8C850014 */ lw $a1, 0x14($a0) +/* 083038 7F04E508 0FC1B39E */ jal set_obj_instance_controller_scale +/* 08303C 7F04E50C AFA600C0 */ sw $a2, 0xc0($sp) +/* 083040 7F04E510 8FA600C0 */ lw $a2, 0xc0($sp) +/* 083044 7F04E514 8E050010 */ lw $a1, 0x10($s0) +/* 083048 7F04E518 0FC0E969 */ jal sub_GAME_7F03A5A4 +/* 08304C 7F04E51C 8CC40010 */ lw $a0, 0x10($a2) +/* 083050 7F04E520 10000008 */ b .L7F04E544 +/* 083054 7F04E524 92020003 */ lbu $v0, 3($s0) +.L7F04E528: +/* 083058 7F04E528 24840001 */ addiu $a0, $a0, 1 +.L7F04E52C: +/* 08305C 7F04E52C 2401000D */ li $at, 13 +/* 083060 7F04E530 0081001A */ div $zero, $a0, $at +/* 083064 7F04E534 00002010 */ mfhi $a0 +/* 083068 7F04E538 5485FFAB */ bnel $a0, $a1, .L7F04E3E8 +/* 08306C 7F04E53C 00046880 */ sll $t5, $a0, 2 +.L7F04E540: +/* 083070 7F04E540 92020003 */ lbu $v0, 3($s0) +.L7F04E544: +/* 083074 7F04E544 2401000D */ li $at, 13 +/* 083078 7F04E548 54410010 */ bnel $v0, $at, .L7F04E58C +/* 08307C 7F04E54C 24010006 */ li $at, 6 +/* 083080 7F04E550 8E190008 */ lw $t9, 8($s0) +/* 083084 7F04E554 3C014000 */ lui $at, 0x4000 +/* 083088 7F04E558 02002025 */ move $a0, $s0 +/* 08308C 7F04E55C 03215825 */ or $t3, $t9, $at +/* 083090 7F04E560 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 083094 7F04E564 AE0B0008 */ sw $t3, 8($s0) +/* 083098 7F04E568 24010001 */ li $at, 1 +/* 08309C 7F04E56C 14410057 */ bne $v0, $at, .L7F04E6CC +/* 0830A0 7F04E570 00000000 */ nop +/* 0830A4 7F04E574 8E0A0008 */ lw $t2, 8($s0) +/* 0830A8 7F04E578 3C011000 */ lui $at, 0x1000 +/* 0830AC 7F04E57C 01416025 */ or $t4, $t2, $at +/* 0830B0 7F04E580 10000052 */ b .L7F04E6CC +/* 0830B4 7F04E584 AE0C0008 */ sw $t4, 8($s0) +/* 0830B8 7F04E588 24010006 */ li $at, 6 +.L7F04E58C: +/* 0830BC 7F04E58C 5441000C */ bnel $v0, $at, .L7F04E5C0 +/* 0830C0 7F04E590 2401000A */ li $at, 10 +/* 0830C4 7F04E594 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 0830C8 7F04E598 02002025 */ move $a0, $s0 +/* 0830CC 7F04E59C 24010001 */ li $at, 1 +/* 0830D0 7F04E5A0 1441004A */ bne $v0, $at, .L7F04E6CC +/* 0830D4 7F04E5A4 00000000 */ nop +/* 0830D8 7F04E5A8 8E0D0008 */ lw $t5, 8($s0) +/* 0830DC 7F04E5AC 3C011000 */ lui $at, 0x1000 +/* 0830E0 7F04E5B0 01A17025 */ or $t6, $t5, $at +/* 0830E4 7F04E5B4 10000045 */ b .L7F04E6CC +/* 0830E8 7F04E5B8 AE0E0008 */ sw $t6, 8($s0) +/* 0830EC 7F04E5BC 2401000A */ li $at, 10 +.L7F04E5C0: +/* 0830F0 7F04E5C0 5441000C */ bnel $v0, $at, .L7F04E5F4 +/* 0830F4 7F04E5C4 2401000B */ li $at, 11 +/* 0830F8 7F04E5C8 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 0830FC 7F04E5CC 02002025 */ move $a0, $s0 +/* 083100 7F04E5D0 24010001 */ li $at, 1 +/* 083104 7F04E5D4 1441003D */ bne $v0, $at, .L7F04E6CC +/* 083108 7F04E5D8 26040080 */ addiu $a0, $s0, 0x80 +/* 08310C 7F04E5DC 3C058003 */ lui $a1, %hi(D_80031EE8) +/* 083110 7F04E5E0 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 083114 7F04E5E4 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 +/* 083118 7F04E5E8 10000038 */ b .L7F04E6CC +/* 08311C 7F04E5EC 00000000 */ nop +/* 083120 7F04E5F0 2401000B */ li $at, 11 +.L7F04E5F4: +/* 083124 7F04E5F4 54410018 */ bnel $v0, $at, .L7F04E658 +/* 083128 7F04E5F8 24010024 */ li $at, 36 +/* 08312C 7F04E5FC 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 083130 7F04E600 02002025 */ move $a0, $s0 +/* 083134 7F04E604 24010001 */ li $at, 1 +/* 083138 7F04E608 14410030 */ bne $v0, $at, .L7F04E6CC +/* 08313C 7F04E60C 26040080 */ addiu $a0, $s0, 0x80 +/* 083140 7F04E610 3C058003 */ lui $a1, %hi(D_80031EE8) +/* 083144 7F04E614 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 083148 7F04E618 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 +/* 08314C 7F04E61C 3C058003 */ lui $a1, %hi(D_80031EE8) +/* 083150 7F04E620 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 +/* 083154 7F04E624 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 083158 7F04E628 260400F4 */ addiu $a0, $s0, 0xf4 +/* 08315C 7F04E62C 3C058003 */ lui $a1, %hi(D_80031EE8) +/* 083160 7F04E630 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 +/* 083164 7F04E634 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 083168 7F04E638 26040168 */ addiu $a0, $s0, 0x168 +/* 08316C 7F04E63C 3C058003 */ lui $a1, %hi(D_80031EE8) +/* 083170 7F04E640 24A51EE8 */ addiu $a1, %lo(D_80031EE8) # addiu $a1, $a1, 0x1ee8 +/* 083174 7F04E644 0FC12723 */ jal save_ptr_monitor_ani_code_to_obj_ani_slot +/* 083178 7F04E648 260401DC */ addiu $a0, $s0, 0x1dc +/* 08317C 7F04E64C 1000001F */ b .L7F04E6CC +/* 083180 7F04E650 00000000 */ nop +/* 083184 7F04E654 24010024 */ li $at, 36 +.L7F04E658: +/* 083188 7F04E658 5441000B */ bnel $v0, $at, .L7F04E688 +/* 08318C 7F04E65C 24010015 */ li $at, 21 +/* 083190 7F04E660 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 083194 7F04E664 02002025 */ move $a0, $s0 +/* 083198 7F04E668 24010001 */ li $at, 1 +/* 08319C 7F04E66C 14410017 */ bne $v0, $at, .L7F04E6CC +/* 0831A0 7F04E670 00000000 */ nop +/* 0831A4 7F04E674 0FC15799 */ jal init_trigger_toxic_gas_effect +/* 0831A8 7F04E678 26040058 */ addiu $a0, $s0, 0x58 +/* 0831AC 7F04E67C 10000013 */ b .L7F04E6CC +/* 0831B0 7F04E680 00000000 */ nop +/* 0831B4 7F04E684 24010015 */ li $at, 21 +.L7F04E688: +/* 0831B8 7F04E688 14410010 */ bne $v0, $at, .L7F04E6CC +/* 0831BC 7F04E68C 00000000 */ nop +/* 0831C0 7F04E690 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 0831C4 7F04E694 02002025 */ move $a0, $s0 +/* 0831C8 7F04E698 5440000A */ bnezl $v0, .L7F04E6C4 +/* 0831CC 7F04E69C 44804000 */ mtc1 $zero, $f8 +/* 0831D0 7F04E6A0 C6000074 */ lwc1 $f0, 0x74($s0) +/* 0831D4 7F04E6A4 C6100070 */ lwc1 $f16, 0x70($s0) +/* 0831D8 7F04E6A8 C60A0080 */ lwc1 $f10, 0x80($s0) +/* 0831DC 7F04E6AC 46100481 */ sub.s $f18, $f0, $f16 +/* 0831E0 7F04E6B0 46125182 */ mul.s $f6, $f10, $f18 +/* 0831E4 7F04E6B4 46003103 */ div.s $f4, $f6, $f0 +/* 0831E8 7F04E6B8 10000004 */ b .L7F04E6CC +/* 0831EC 7F04E6BC E6040084 */ swc1 $f4, 0x84($s0) +/* 0831F0 7F04E6C0 44804000 */ mtc1 $zero, $f8 +.L7F04E6C4: +/* 0831F4 7F04E6C4 00000000 */ nop +/* 0831F8 7F04E6C8 E6080084 */ swc1 $f8, 0x84($s0) +.L7F04E6CC: +/* 0831FC 7F04E6CC 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 083200 7F04E6D0 02002025 */ move $a0, $s0 +/* 083204 7F04E6D4 24010001 */ li $at, 1 +/* 083208 7F04E6D8 5441000D */ bnel $v0, $at, .L7F04E710 +/* 08320C 7F04E6DC 8FBF001C */ lw $ra, 0x1c($sp) +/* 083210 7F04E6E0 8E0F0010 */ lw $t7, 0x10($s0) +/* 083214 7F04E6E4 8DE40020 */ lw $a0, 0x20($t7) +/* 083218 7F04E6E8 50800009 */ beql $a0, $zero, .L7F04E710 +/* 08321C 7F04E6EC 8FBF001C */ lw $ra, 0x1c($sp) +/* 083220 7F04E6F0 8C820024 */ lw $v0, 0x24($a0) +.L7F04E6F4: +/* 083224 7F04E6F4 24050001 */ li $a1, 1 +/* 083228 7F04E6F8 0FC12FF4 */ jal sub_GAME_7F04BFD0 +/* 08322C 7F04E6FC AFA20028 */ sw $v0, 0x28($sp) +/* 083230 7F04E700 8FA40028 */ lw $a0, 0x28($sp) +/* 083234 7F04E704 5480FFFB */ bnezl $a0, .L7F04E6F4 +/* 083238 7F04E708 8C820024 */ lw $v0, 0x24($a0) +.L7F04E70C: +/* 08323C 7F04E70C 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04E710: +/* 083240 7F04E710 8FB00018 */ lw $s0, 0x18($sp) +/* 083244 7F04E714 27BD00E0 */ addiu $sp, $sp, 0xe0 +/* 083248 7F04E718 03E00008 */ jr $ra +/* 08324C 7F04E71C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04E720(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04E720 +/* 083250 7F04E720 27BDFF40 */ addiu $sp, $sp, -0xc0 +/* 083254 7F04E724 AFBF004C */ sw $ra, 0x4c($sp) +/* 083258 7F04E728 AFB50048 */ sw $s5, 0x48($sp) +/* 08325C 7F04E72C AFB40044 */ sw $s4, 0x44($sp) +/* 083260 7F04E730 AFB30040 */ sw $s3, 0x40($sp) +/* 083264 7F04E734 AFB2003C */ sw $s2, 0x3c($sp) +/* 083268 7F04E738 AFB10038 */ sw $s1, 0x38($sp) +/* 08326C 7F04E73C AFB00034 */ sw $s0, 0x34($sp) +/* 083270 7F04E740 AFA400C0 */ sw $a0, 0xc0($sp) +/* 083274 7F04E744 8C950004 */ lw $s5, 4($a0) +/* 083278 7F04E748 00A09825 */ move $s3, $a1 +/* 08327C 7F04E74C 8EAF0064 */ lw $t7, 0x64($s5) +/* 083280 7F04E750 31F81000 */ andi $t8, $t7, 0x1000 +/* 083284 7F04E754 57000091 */ bnezl $t8, .L7F04E99C +/* 083288 7F04E758 8FBF004C */ lw $ra, 0x4c($sp) +/* 08328C 7F04E75C 90880001 */ lbu $t0, 1($a0) +/* 083290 7F04E760 31090002 */ andi $t1, $t0, 2 +/* 083294 7F04E764 5120008D */ beql $t1, $zero, .L7F04E99C +/* 083298 7F04E768 8FBF004C */ lw $ra, 0x4c($sp) +/* 08329C 7F04E76C 8C900020 */ lw $s0, 0x20($a0) +/* 0832A0 7F04E770 52000008 */ beql $s0, $zero, .L7F04E794 +/* 0832A4 7F04E774 8EB40014 */ lw $s4, 0x14($s5) +.L7F04E778: +/* 0832A8 7F04E778 8E110024 */ lw $s1, 0x24($s0) +/* 0832AC 7F04E77C 02002025 */ move $a0, $s0 +/* 0832B0 7F04E780 0FC139C8 */ jal sub_GAME_7F04E720 +/* 0832B4 7F04E784 02602825 */ move $a1, $s3 +/* 0832B8 7F04E788 1620FFFB */ bnez $s1, .L7F04E778 +/* 0832BC 7F04E78C 02208025 */ move $s0, $s1 +/* 0832C0 7F04E790 8EB40014 */ lw $s4, 0x14($s5) +.L7F04E794: +/* 0832C4 7F04E794 AFA000A8 */ sw $zero, 0xa8($sp) +/* 0832C8 7F04E798 92AB0003 */ lbu $t3, 3($s5) +/* 0832CC 7F04E79C 24010001 */ li $at, 1 +/* 0832D0 7F04E7A0 2670000C */ addiu $s0, $s3, 0xc +/* 0832D4 7F04E7A4 15610025 */ bne $t3, $at, .L7F04E83C +/* 0832D8 7F04E7A8 27B100A8 */ addiu $s1, $sp, 0xa8 +/* 0832DC 7F04E7AC 96AC0098 */ lhu $t4, 0x98($s5) +/* 0832E0 7F04E7B0 26A400D0 */ addiu $a0, $s5, 0xd0 +/* 0832E4 7F04E7B4 02603025 */ move $a2, $s3 +/* 0832E8 7F04E7B8 318D0004 */ andi $t5, $t4, 4 +/* 0832EC 7F04E7BC 55A00008 */ bnezl $t5, .L7F04E7E0 +/* 0832F0 7F04E7C0 2670000C */ addiu $s0, $s3, 0xc +/* 0832F4 7F04E7C4 96A2009A */ lhu $v0, 0x9a($s5) +/* 0832F8 7F04E7C8 24010006 */ li $at, 6 +/* 0832FC 7F04E7CC 10410003 */ beq $v0, $at, .L7F04E7DC +/* 083300 7F04E7D0 24010007 */ li $at, 7 +/* 083304 7F04E7D4 14410019 */ bne $v0, $at, .L7F04E83C +/* 083308 7F04E7D8 00000000 */ nop +.L7F04E7DC: +/* 08330C 7F04E7DC 2670000C */ addiu $s0, $s3, 0xc +.L7F04E7E0: +/* 083310 7F04E7E0 02003825 */ move $a3, $s0 +/* 083314 7F04E7E4 0FC1D1F4 */ jal sub_GAME_7F0747D0 +/* 083318 7F04E7E8 8E85000C */ lw $a1, 0xc($s4) +/* 08331C 7F04E7EC 8E8E0008 */ lw $t6, 8($s4) +/* 083320 7F04E7F0 00409025 */ move $s2, $v0 +/* 083324 7F04E7F4 02802025 */ move $a0, $s4 +/* 083328 7F04E7F8 8DCF0000 */ lw $t7, ($t6) +/* 08332C 7F04E7FC 02603025 */ move $a2, $s3 +/* 083330 7F04E800 18400024 */ blez $v0, .L7F04E894 +/* 083334 7F04E804 AFAF00A8 */ sw $t7, 0xa8($sp) +/* 083338 7F04E808 27B80078 */ addiu $t8, $sp, 0x78 +/* 08333C 7F04E80C 27B90074 */ addiu $t9, $sp, 0x74 +/* 083340 7F04E810 27A80060 */ addiu $t0, $sp, 0x60 +/* 083344 7F04E814 AFA80018 */ sw $t0, 0x18($sp) +/* 083348 7F04E818 AFB90014 */ sw $t9, 0x14($sp) +/* 08334C 7F04E81C AFB80010 */ sw $t8, 0x10($sp) +/* 083350 7F04E820 01E02825 */ move $a1, $t7 +/* 083354 7F04E824 0FC1366C */ jal sub_GAME_7F04D9B0 +/* 083358 7F04E828 02003825 */ move $a3, $s0 +/* 08335C 7F04E82C 14400019 */ bnez $v0, .L7F04E894 +/* 083360 7F04E830 00000000 */ nop +/* 083364 7F04E834 10000017 */ b .L7F04E894 +/* 083368 7F04E838 00009025 */ move $s2, $zero +.L7F04E83C: +/* 08336C 7F04E83C 02802025 */ move $a0, $s4 +.L7F04E840: +/* 083370 7F04E840 02602825 */ move $a1, $s3 +/* 083374 7F04E844 02003025 */ move $a2, $s0 +/* 083378 7F04E848 0FC1D4BF */ jal sub_GAME_7F0752FC +/* 08337C 7F04E84C 02203825 */ move $a3, $s1 +/* 083380 7F04E850 1840000E */ blez $v0, .L7F04E88C +/* 083384 7F04E854 00409025 */ move $s2, $v0 +/* 083388 7F04E858 27A90078 */ addiu $t1, $sp, 0x78 +/* 08338C 7F04E85C 27AA0074 */ addiu $t2, $sp, 0x74 +/* 083390 7F04E860 27AB0060 */ addiu $t3, $sp, 0x60 +/* 083394 7F04E864 AFAB0018 */ sw $t3, 0x18($sp) +/* 083398 7F04E868 AFAA0014 */ sw $t2, 0x14($sp) +/* 08339C 7F04E86C AFA90010 */ sw $t1, 0x10($sp) +/* 0833A0 7F04E870 02802025 */ move $a0, $s4 +/* 0833A4 7F04E874 8FA500A8 */ lw $a1, 0xa8($sp) +/* 0833A8 7F04E878 02603025 */ move $a2, $s3 +/* 0833AC 7F04E87C 0FC1366C */ jal sub_GAME_7F04D9B0 +/* 0833B0 7F04E880 02003825 */ move $a3, $s0 +/* 0833B4 7F04E884 14400003 */ bnez $v0, .L7F04E894 +/* 0833B8 7F04E888 00000000 */ nop +.L7F04E88C: +/* 0833BC 7F04E88C 5E40FFEC */ bgtzl $s2, .L7F04E840 +/* 0833C0 7F04E890 02802025 */ move $a0, $s4 +.L7F04E894: +/* 0833C4 7F04E894 1A400040 */ blez $s2, .L7F04E998 +/* 0833C8 7F04E898 8FAD0074 */ lw $t5, 0x74($sp) +/* 0833CC 7F04E89C 8E8C000C */ lw $t4, 0xc($s4) +/* 0833D0 7F04E8A0 C7A40078 */ lwc1 $f4, 0x78($sp) +/* 0833D4 7F04E8A4 C7A6007C */ lwc1 $f6, 0x7c($sp) +/* 0833D8 7F04E8A8 C7A80080 */ lwc1 $f8, 0x80($sp) +/* 0833DC 7F04E8AC 000D7180 */ sll $t6, $t5, 6 +/* 0833E0 7F04E8B0 27A50068 */ addiu $a1, $sp, 0x68 +/* 0833E4 7F04E8B4 018E2021 */ addu $a0, $t4, $t6 +/* 0833E8 7F04E8B8 E7A40068 */ swc1 $f4, 0x68($sp) +/* 0833EC 7F04E8BC E7A6006C */ swc1 $f6, 0x6c($sp) +/* 0833F0 7F04E8C0 0FC1611D */ jal sub_GAME_7F058474 +/* 0833F4 7F04E8C4 E7A80070 */ swc1 $f8, 0x70($sp) +/* 0833F8 7F04E8C8 C7A00070 */ lwc1 $f0, 0x70($sp) +/* 0833FC 7F04E8CC C66A0034 */ lwc1 $f10, 0x34($s3) +/* 083400 7F04E8D0 02602025 */ move $a0, $s3 +/* 083404 7F04E8D4 46000007 */ neg.s $f0, $f0 +/* 083408 7F04E8D8 8FA500C0 */ lw $a1, 0xc0($sp) +/* 08340C 7F04E8DC 460A003E */ c.le.s $f0, $f10 +/* 083410 7F04E8E0 02403825 */ move $a3, $s2 +/* 083414 7F04E8E4 8FAC00A8 */ lw $t4, 0xa8($sp) +/* 083418 7F04E8E8 27AE0078 */ addiu $t6, $sp, 0x78 +/* 08341C 7F04E8EC 4502002B */ bc1fl .L7F04E99C +/* 083420 7F04E8F0 8FBF004C */ lw $ra, 0x4c($sp) +/* 083424 7F04E8F4 8EAF0008 */ lw $t7, 8($s5) +/* 083428 7F04E8F8 24030001 */ li $v1, 1 +/* 08342C 7F04E8FC 000FC380 */ sll $t8, $t7, 0xe +/* 083430 7F04E900 07020017 */ bltzl $t8, .L7F04E960 +/* 083434 7F04E904 8FAF0074 */ lw $t7, 0x74($sp) +/* 083438 7F04E908 92A20003 */ lbu $v0, 3($s5) +/* 08343C 7F04E90C 2401002A */ li $at, 42 +/* 083440 7F04E910 10410003 */ beq $v0, $at, .L7F04E920 +/* 083444 7F04E914 2401002F */ li $at, 47 +/* 083448 7F04E918 54410004 */ bnel $v0, $at, .L7F04E92C +/* 08344C 7F04E91C 8EB90014 */ lw $t9, 0x14($s5) +.L7F04E920: +/* 083450 7F04E920 1000000E */ b .L7F04E95C +/* 083454 7F04E924 00001825 */ move $v1, $zero +/* 083458 7F04E928 8EB90014 */ lw $t9, 0x14($s5) +.L7F04E92C: +/* 08345C 7F04E92C 3C088004 */ lui $t0, %hi(prop_door_related) +/* 083460 7F04E930 2508A1DC */ addiu $t0, %lo(prop_door_related) # addiu $t0, $t0, -0x5e24 +/* 083464 7F04E934 8F220008 */ lw $v0, 8($t9) +/* 083468 7F04E938 8C490004 */ lw $t1, 4($v0) +/* 08346C 7F04E93C 55090008 */ bnel $t0, $t1, .L7F04E960 +/* 083470 7F04E940 8FAF0074 */ lw $t7, 0x74($sp) +/* 083474 7F04E944 8C4B0008 */ lw $t3, 8($v0) +/* 083478 7F04E948 8FAA0060 */ lw $t2, 0x60($sp) +/* 08347C 7F04E94C 8D6D000C */ lw $t5, 0xc($t3) +/* 083480 7F04E950 554D0003 */ bnel $t2, $t5, .L7F04E960 +/* 083484 7F04E954 8FAF0074 */ lw $t7, 0x74($sp) +/* 083488 7F04E958 00001825 */ move $v1, $zero +.L7F04E95C: +/* 08348C 7F04E95C 8FAF0074 */ lw $t7, 0x74($sp) +.L7F04E960: +/* 083490 7F04E960 8FB80060 */ lw $t8, 0x60($sp) +/* 083494 7F04E964 AFAC0010 */ sw $t4, 0x10($sp) +/* 083498 7F04E968 AFAE0014 */ sw $t6, 0x14($sp) +/* 08349C 7F04E96C AFB40020 */ sw $s4, 0x20($sp) +/* 0834A0 7F04E970 AFA30024 */ sw $v1, 0x24($sp) +/* 0834A4 7F04E974 AFAF0018 */ sw $t7, 0x18($sp) +/* 0834A8 7F04E978 AFB8001C */ sw $t8, 0x1c($sp) +/* 0834AC 7F04E97C 8EB9000C */ lw $t9, 0xc($s5) +/* 0834B0 7F04E980 3C010010 */ lui $at, 0x10 +/* 0834B4 7F04E984 44060000 */ mfc1 $a2, $f0 +/* 0834B8 7F04E988 03214024 */ and $t0, $t9, $at +/* 0834BC 7F04E98C 0008482B */ sltu $t1, $zero, $t0 +/* 0834C0 7F04E990 0FC0EE70 */ jal sub_GAME_7F03B9C0 +/* 0834C4 7F04E994 AFA90028 */ sw $t1, 0x28($sp) +.L7F04E998: +/* 0834C8 7F04E998 8FBF004C */ lw $ra, 0x4c($sp) +.L7F04E99C: +/* 0834CC 7F04E99C 8FB00034 */ lw $s0, 0x34($sp) +/* 0834D0 7F04E9A0 8FB10038 */ lw $s1, 0x38($sp) +/* 0834D4 7F04E9A4 8FB2003C */ lw $s2, 0x3c($sp) +/* 0834D8 7F04E9A8 8FB30040 */ lw $s3, 0x40($sp) +/* 0834DC 7F04E9AC 8FB40044 */ lw $s4, 0x44($sp) +/* 0834E0 7F04E9B0 8FB50048 */ lw $s5, 0x48($sp) +/* 0834E4 7F04E9B4 03E00008 */ jr $ra +/* 0834E8 7F04E9B8 27BD00C0 */ addiu $sp, $sp, 0xc0 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04E9BC(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04E9BC +/* 0834EC 7F04E9BC 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0834F0 7F04E9C0 AFBF0014 */ sw $ra, 0x14($sp) +/* 0834F4 7F04E9C4 AFA40028 */ sw $a0, 0x28($sp) +/* 0834F8 7F04E9C8 AFA5002C */ sw $a1, 0x2c($sp) +/* 0834FC 7F04E9CC 8C840004 */ lw $a0, 4($a0) +/* 083500 7F04E9D0 8C8F0014 */ lw $t7, 0x14($a0) +/* 083504 7F04E9D4 AFA40024 */ sw $a0, 0x24($sp) +/* 083508 7F04E9D8 0FC1001E */ jal sub_GAME_7F040078 +/* 08350C 7F04E9DC AFAF001C */ sw $t7, 0x1c($sp) +/* 083510 7F04E9E0 8FB80028 */ lw $t8, 0x28($sp) +/* 083514 7F04E9E4 8FA40024 */ lw $a0, 0x24($sp) +/* 083518 7F04E9E8 93190001 */ lbu $t9, 1($t8) +/* 08351C 7F04E9EC 33280002 */ andi $t0, $t9, 2 +/* 083520 7F04E9F0 5100001A */ beql $t0, $zero, .L7F04EA5C +/* 083524 7F04E9F4 8FBF0014 */ lw $ra, 0x14($sp) +/* 083528 7F04E9F8 8C890064 */ lw $t1, 0x64($a0) +/* 08352C 7F04E9FC 312A1000 */ andi $t2, $t1, 0x1000 +/* 083530 7F04EA00 55400016 */ bnezl $t2, .L7F04EA5C +/* 083534 7F04EA04 8FBF0014 */ lw $ra, 0x14($sp) +/* 083538 7F04EA08 8C8B000C */ lw $t3, 0xc($a0) +/* 08353C 7F04EA0C 8FAD001C */ lw $t5, 0x1c($sp) +/* 083540 7F04EA10 316C8000 */ andi $t4, $t3, 0x8000 +/* 083544 7F04EA14 15800010 */ bnez $t4, .L7F04EA58 +/* 083548 7F04EA18 00402025 */ move $a0, $v0 +/* 08354C 7F04EA1C 0FC0FAE7 */ jal sub_GAME_7F03EB9C +/* 083550 7F04EA20 8DA5000C */ lw $a1, 0xc($t5) +/* 083554 7F04EA24 8FAE001C */ lw $t6, 0x1c($sp) +/* 083558 7F04EA28 8FA5002C */ lw $a1, 0x2c($sp) +/* 08355C 7F04EA2C 8DCF000C */ lw $t7, 0xc($t6) +/* 083560 7F04EA30 C4A60034 */ lwc1 $f6, 0x34($a1) +/* 083564 7F04EA34 C5E40038 */ lwc1 $f4, 0x38($t7) +/* 083568 7F04EA38 46040080 */ add.s $f2, $f0, $f4 +/* 08356C 7F04EA3C 46001087 */ neg.s $f2, $f2 +/* 083570 7F04EA40 4606103E */ c.le.s $f2, $f6 +/* 083574 7F04EA44 00000000 */ nop +/* 083578 7F04EA48 45020004 */ bc1fl .L7F04EA5C +/* 08357C 7F04EA4C 8FBF0014 */ lw $ra, 0x14($sp) +/* 083580 7F04EA50 0FC139C8 */ jal sub_GAME_7F04E720 +/* 083584 7F04EA54 8FA40028 */ lw $a0, 0x28($sp) +.L7F04EA58: +/* 083588 7F04EA58 8FBF0014 */ lw $ra, 0x14($sp) +.L7F04EA5C: +/* 08358C 7F04EA5C 27BD0028 */ addiu $sp, $sp, 0x28 +/* 083590 7F04EA60 03E00008 */ jr $ra +/* 083594 7F04EA64 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04EA68(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04EA68 +/* 083598 7F04EA68 27BDFF90 */ addiu $sp, $sp, -0x70 +/* 08359C 7F04EA6C AFBF002C */ sw $ra, 0x2c($sp) +/* 0835A0 7F04EA70 AFB10028 */ sw $s1, 0x28($sp) +/* 0835A4 7F04EA74 AFB00024 */ sw $s0, 0x24($sp) +/* 0835A8 7F04EA78 8CA60004 */ lw $a2, 4($a1) +/* 0835AC 7F04EA7C 00A08025 */ move $s0, $a1 +/* 0835B0 7F04EA80 8CC2001C */ lw $v0, 0x1c($a2) +/* 0835B4 7F04EA84 00C01825 */ move $v1, $a2 +/* 0835B8 7F04EA88 50400006 */ beql $v0, $zero, .L7F04EAA4 +/* 0835BC 7F04EA8C C6040000 */ lwc1 $f4, ($s0) +/* 0835C0 7F04EA90 00401825 */ move $v1, $v0 +.L7F04EA94: +/* 0835C4 7F04EA94 8C42001C */ lw $v0, 0x1c($v0) +/* 0835C8 7F04EA98 5440FFFE */ bnezl $v0, .L7F04EA94 +/* 0835CC 7F04EA9C 00401825 */ move $v1, $v0 +/* 0835D0 7F04EAA0 C6040000 */ lwc1 $f4, ($s0) +.L7F04EAA4: +/* 0835D4 7F04EAA4 C486000C */ lwc1 $f6, 0xc($a0) +/* 0835D8 7F04EAA8 C48A0014 */ lwc1 $f10, 0x14($a0) +/* 0835DC 7F04EAAC C4920000 */ lwc1 $f18, ($a0) +/* 0835E0 7F04EAB0 46062202 */ mul.s $f8, $f4, $f6 +/* 0835E4 7F04EAB4 8CD10004 */ lw $s1, 4($a2) +/* 0835E8 7F04EAB8 3C0141D0 */ li $at, 0x41D00000 # 26.000000 +/* 0835EC 7F04EABC 44810000 */ mtc1 $at, $f0 +/* 0835F0 7F04EAC0 460A4403 */ div.s $f16, $f8, $f10 +/* 0835F4 7F04EAC4 46109101 */ sub.s $f4, $f18, $f16 +/* 0835F8 7F04EAC8 E7A40060 */ swc1 $f4, 0x60($sp) +/* 0835FC 7F04EACC C4880010 */ lwc1 $f8, 0x10($a0) +/* 083600 7F04EAD0 C6060000 */ lwc1 $f6, ($s0) +/* 083604 7F04EAD4 C4920014 */ lwc1 $f18, 0x14($a0) +/* 083608 7F04EAD8 C4840004 */ lwc1 $f4, 4($a0) +/* 08360C 7F04EADC 46083282 */ mul.s $f10, $f6, $f8 +/* 083610 7F04EAE0 46125403 */ div.s $f16, $f10, $f18 +/* 083614 7F04EAE4 46102181 */ sub.s $f6, $f4, $f16 +/* 083618 7F04EAE8 C7A40060 */ lwc1 $f4, 0x60($sp) +/* 08361C 7F04EAEC E7A60064 */ swc1 $f6, 0x64($sp) +/* 083620 7F04EAF0 C60A0000 */ lwc1 $f10, ($s0) +/* 083624 7F04EAF4 C4880008 */ lwc1 $f8, 8($a0) +/* 083628 7F04EAF8 460A4481 */ sub.s $f18, $f8, $f10 +/* 08362C 7F04EAFC C7AA0064 */ lwc1 $f10, 0x64($sp) +/* 083630 7F04EB00 E7B20068 */ swc1 $f18, 0x68($sp) +/* 083634 7F04EB04 C490000C */ lwc1 $f16, 0xc($a0) +/* 083638 7F04EB08 46100182 */ mul.s $f6, $f0, $f16 +/* 08363C 7F04EB0C 46062201 */ sub.s $f8, $f4, $f6 +/* 083640 7F04EB10 C7A60068 */ lwc1 $f6, 0x68($sp) +/* 083644 7F04EB14 E7A80060 */ swc1 $f8, 0x60($sp) +/* 083648 7F04EB18 C4920010 */ lwc1 $f18, 0x10($a0) +/* 08364C 7F04EB1C 46120402 */ mul.s $f16, $f0, $f18 +/* 083650 7F04EB20 46105101 */ sub.s $f4, $f10, $f16 +/* 083654 7F04EB24 E7A40064 */ swc1 $f4, 0x64($sp) +/* 083658 7F04EB28 C4880014 */ lwc1 $f8, 0x14($a0) +/* 08365C 7F04EB2C AFA40070 */ sw $a0, 0x70($sp) +/* 083660 7F04EB30 AFA3005C */ sw $v1, 0x5c($sp) +/* 083664 7F04EB34 46080482 */ mul.s $f18, $f0, $f8 +/* 083668 7F04EB38 46123281 */ sub.s $f10, $f6, $f18 +/* 08366C 7F04EB3C 0FC1E111 */ jal sub_GAME_7F078444 +/* 083670 7F04EB40 E7AA0068 */ swc1 $f10, 0x68($sp) +/* 083674 7F04EB44 00402025 */ move $a0, $v0 +/* 083678 7F04EB48 0FC1611D */ jal sub_GAME_7F058474 +/* 08367C 7F04EB4C 27A50060 */ addiu $a1, $sp, 0x60 +/* 083680 7F04EB50 8E0E004C */ lw $t6, 0x4c($s0) +/* 083684 7F04EB54 8FA3005C */ lw $v1, 0x5c($sp) +/* 083688 7F04EB58 11C00004 */ beqz $t6, .L7F04EB6C +/* 08368C 7F04EB5C 27A40060 */ addiu $a0, $sp, 0x60 +/* 083690 7F04EB60 0FC19ED3 */ jal sub_GAME_7F067B4C +/* 083694 7F04EB64 AFA3005C */ sw $v1, 0x5c($sp) +/* 083698 7F04EB68 8FA3005C */ lw $v1, 0x5c($sp) +.L7F04EB6C: +/* 08369C 7F04EB6C 8C6F0014 */ lw $t7, 0x14($v1) +/* 0836A0 7F04EB70 27A40060 */ addiu $a0, $sp, 0x60 +/* 0836A4 7F04EB74 24050001 */ li $a1, 1 +/* 0836A8 7F04EB78 3C0641D0 */ lui $a2, 0x41d0 +/* 0836AC 7F04EB7C 0FC28F87 */ jal sub_GAME_7F0A3E1C +/* 0836B0 7F04EB80 91E70003 */ lbu $a3, 3($t7) +/* 0836B4 7F04EB84 0FC13BCD */ jal check_if_object_has_not_been_destroyed +/* 0836B8 7F04EB88 02202025 */ move $a0, $s1 +/* 0836BC 7F04EB8C 5040000D */ beql $v0, $zero, .L7F04EBC4 +/* 0836C0 7F04EB90 8E0B004C */ lw $t3, 0x4c($s0) +/* 0836C4 7F04EB94 0FC13812 */ jal check_if_destroyable_not_invincible +/* 0836C8 7F04EB98 02202025 */ move $a0, $s1 +/* 0836CC 7F04EB9C 50400009 */ beql $v0, $zero, .L7F04EBC4 +/* 0836D0 7F04EBA0 8E0B004C */ lw $t3, 0x4c($s0) +/* 0836D4 7F04EBA4 8E18004C */ lw $t8, 0x4c($s0) +/* 0836D8 7F04EBA8 8FB90070 */ lw $t9, 0x70($sp) +/* 0836DC 7F04EBAC 24050006 */ li $a1, 6 +/* 0836E0 7F04EBB0 53000004 */ beql $t8, $zero, .L7F04EBC4 +/* 0836E4 7F04EBB4 8E0B004C */ lw $t3, 0x4c($s0) +/* 0836E8 7F04EBB8 0FC1A9BE */ jal inc_curplayer_hitcount_with_weapon +/* 0836EC 7F04EBBC 8F240018 */ lw $a0, 0x18($t9) +/* 0836F0 7F04EBC0 8E0B004C */ lw $t3, 0x4c($s0) +.L7F04EBC4: +/* 0836F4 7F04EBC4 55600007 */ bnezl $t3, .L7F04EBE4 +/* 0836F8 7F04EBC8 8FAC0070 */ lw $t4, 0x70($sp) +/* 0836FC 7F04EBCC 8E040004 */ lw $a0, 4($s0) +/* 083700 7F04EBD0 0FC191C8 */ jal sub_GAME_7F064720 +/* 083704 7F04EBD4 24840008 */ addiu $a0, $a0, 8 +/* 083708 7F04EBD8 10000007 */ b .L7F04EBF8 +/* 08370C 7F04EBDC 8FAD0070 */ lw $t5, 0x70($sp) +/* 083710 7F04EBE0 8FAC0070 */ lw $t4, 0x70($sp) +.L7F04EBE4: +/* 083714 7F04EBE4 8E050004 */ lw $a1, 4($s0) +/* 083718 7F04EBE8 8606003A */ lh $a2, 0x3a($s0) +/* 08371C 7F04EBEC 0FC19107 */ jal recall_joy2_hits_edit_detail_edit_flag +/* 083720 7F04EBF0 8D840018 */ lw $a0, 0x18($t4) +/* 083724 7F04EBF4 8FAD0070 */ lw $t5, 0x70($sp) +.L7F04EBF8: +/* 083728 7F04EBF8 24010017 */ li $at, 23 +/* 08372C 7F04EBFC 8DA40018 */ lw $a0, 0x18($t5) +/* 083730 7F04EC00 10810060 */ beq $a0, $at, .L7F04ED84 +/* 083734 7F04EC04 00000000 */ nop +/* 083738 7F04EC08 8E0E004C */ lw $t6, 0x4c($s0) +/* 08373C 7F04EC0C 55C00022 */ bnezl $t6, .L7F04EC98 +/* 083740 7F04EC10 8602003A */ lh $v0, 0x3a($s0) +/* 083744 7F04EC14 8E380014 */ lw $t8, 0x14($s1) +/* 083748 7F04EC18 3C0F8004 */ lui $t7, %hi(prop_door_related) +/* 08374C 7F04EC1C 25EFA1DC */ addiu $t7, %lo(prop_door_related) # addiu $t7, $t7, -0x5e24 +/* 083750 7F04EC20 8F190008 */ lw $t9, 8($t8) +/* 083754 7F04EC24 8E080004 */ lw $t0, 4($s0) +/* 083758 7F04EC28 00001825 */ move $v1, $zero +/* 08375C 7F04EC2C 8F2B0004 */ lw $t3, 4($t9) +/* 083760 7F04EC30 55EB0003 */ bnel $t7, $t3, .L7F04EC40 +/* 083764 7F04EC34 A3A30057 */ sb $v1, 0x57($sp) +/* 083768 7F04EC38 24030001 */ li $v1, 1 +/* 08376C 7F04EC3C A3A30057 */ sb $v1, 0x57($sp) +.L7F04EC40: +/* 083770 7F04EC40 0C002914 */ jal get_random_value +/* 083774 7F04EC44 AFA80058 */ sw $t0, 0x58($sp) +/* 083778 7F04EC48 24010003 */ li $at, 3 +/* 08377C 7F04EC4C 0041001B */ divu $zero, $v0, $at +/* 083780 7F04EC50 8FA80058 */ lw $t0, 0x58($sp) +/* 083784 7F04EC54 00003010 */ mfhi $a2 +/* 083788 7F04EC58 83A30057 */ lb $v1, 0x57($sp) +/* 08378C 7F04EC5C AFA80010 */ sw $t0, 0x10($sp) +/* 083790 7F04EC60 8E0E0040 */ lw $t6, 0x40($s0) +/* 083794 7F04EC64 24C60011 */ addiu $a2, $a2, 0x11 +/* 083798 7F04EC68 00066400 */ sll $t4, $a2, 0x10 +/* 08379C 7F04EC6C 000C3403 */ sra $a2, $t4, 0x10 +/* 0837A0 7F04EC70 26040010 */ addiu $a0, $s0, 0x10 +/* 0837A4 7F04EC74 2605001C */ addiu $a1, $s0, 0x1c +/* 0837A8 7F04EC78 24070001 */ li $a3, 1 +/* 0837AC 7F04EC7C AFA30018 */ sw $v1, 0x18($sp) +/* 0837B0 7F04EC80 0FC28423 */ jal sub_GAME_7F0A108C +/* 0837B4 7F04EC84 AFAE0014 */ sw $t6, 0x14($sp) +/* 0837B8 7F04EC88 8FB80070 */ lw $t8, 0x70($sp) +/* 0837BC 7F04EC8C 1000003D */ b .L7F04ED84 +/* 0837C0 7F04EC90 8F040018 */ lw $a0, 0x18($t8) +/* 0837C4 7F04EC94 8602003A */ lh $v0, 0x3a($s0) +.L7F04EC98: +/* 0837C8 7F04EC98 00004825 */ move $t1, $zero +/* 0837CC 7F04EC9C 3C0F8005 */ lui $t7, %hi(image_entries) +/* 0837D0 7F04ECA0 04410004 */ bgez $v0, .L7F04ECB4 +/* 0837D4 7F04ECA4 0002C8C0 */ sll $t9, $v0, 3 +/* 0837D8 7F04ECA8 3C088005 */ lui $t0, %hi(D_8004E86C) +/* 0837DC 7F04ECAC 10000008 */ b .L7F04ECD0 +/* 0837E0 7F04ECB0 8D08E86C */ lw $t0, %lo(D_8004E86C)($t0) +.L7F04ECB4: +/* 0837E4 7F04ECB4 01F97821 */ addu $t7, $t7, $t9 +/* 0837E8 7F04ECB8 91EF9300 */ lbu $t7, %lo(image_entries)($t7) +/* 0837EC 7F04ECBC 3C088005 */ lui $t0, %hi(D_8004E86C) +/* 0837F0 7F04ECC0 31EB000F */ andi $t3, $t7, 0xf +/* 0837F4 7F04ECC4 000B6080 */ sll $t4, $t3, 2 +/* 0837F8 7F04ECC8 010C4021 */ addu $t0, $t0, $t4 +/* 0837FC 7F04ECCC 8D08E86C */ lw $t0, %lo(D_8004E86C)($t0) +.L7F04ECD0: +/* 083800 7F04ECD0 AFA80050 */ sw $t0, 0x50($sp) +/* 083804 7F04ECD4 0C002914 */ jal get_random_value +/* 083808 7F04ECD8 A3A9004B */ sb $t1, 0x4b($sp) +/* 08380C 7F04ECDC 8FA80050 */ lw $t0, 0x50($sp) +/* 083810 7F04ECE0 8E2E0014 */ lw $t6, 0x14($s1) +/* 083814 7F04ECE4 3C188004 */ lui $t8, %hi(prop_door_related) +/* 083818 7F04ECE8 850D000A */ lh $t5, 0xa($t0) +/* 08381C 7F04ECEC 8DC30008 */ lw $v1, 8($t6) +/* 083820 7F04ECF0 2718A1DC */ addiu $t8, %lo(prop_door_related) # addiu $t8, $t8, -0x5e24 +/* 083824 7F04ECF4 004D001B */ divu $zero, $v0, $t5 +/* 083828 7F04ECF8 8C640004 */ lw $a0, 4($v1) +/* 08382C 7F04ECFC 00005010 */ mfhi $t2 +/* 083830 7F04ED00 83A9004B */ lb $t1, 0x4b($sp) +/* 083834 7F04ED04 15A00002 */ bnez $t5, .L7F04ED10 +/* 083838 7F04ED08 00000000 */ nop +/* 08383C 7F04ED0C 0007000D */ break 7 +.L7F04ED10: +/* 083840 7F04ED10 2605001C */ addiu $a1, $s0, 0x1c +/* 083844 7F04ED14 17040005 */ bne $t8, $a0, .L7F04ED2C +/* 083848 7F04ED18 24070001 */ li $a3, 1 +/* 08384C 7F04ED1C 8C6F0008 */ lw $t7, 8($v1) +/* 083850 7F04ED20 8E190044 */ lw $t9, 0x44($s0) +/* 083854 7F04ED24 8DEB000C */ lw $t3, 0xc($t7) +/* 083858 7F04ED28 132B0009 */ beq $t9, $t3, .L7F04ED50 +.L7F04ED2C: +/* 08385C 7F04ED2C 3C0C8004 */ lui $t4, %hi(prop_cctv_related) +/* 083860 7F04ED30 258CA05C */ addiu $t4, %lo(prop_cctv_related) # addiu $t4, $t4, -0x5fa4 +/* 083864 7F04ED34 55840008 */ bnel $t4, $a0, .L7F04ED58 +/* 083868 7F04ED38 8D0F0004 */ lw $t7, 4($t0) +/* 08386C 7F04ED3C 8C6E0008 */ lw $t6, 8($v1) +/* 083870 7F04ED40 8E0D0044 */ lw $t5, 0x44($s0) +/* 083874 7F04ED44 8DD80004 */ lw $t8, 4($t6) +/* 083878 7F04ED48 55B80003 */ bnel $t5, $t8, .L7F04ED58 +/* 08387C 7F04ED4C 8D0F0004 */ lw $t7, 4($t0) +.L7F04ED50: +/* 083880 7F04ED50 24090001 */ li $t1, 1 +/* 083884 7F04ED54 8D0F0004 */ lw $t7, 4($t0) +.L7F04ED58: +/* 083888 7F04ED58 8E0B0004 */ lw $t3, 4($s0) +/* 08388C 7F04ED5C 26040010 */ addiu $a0, $s0, 0x10 +/* 083890 7F04ED60 01EAC821 */ addu $t9, $t7, $t2 +/* 083894 7F04ED64 93260000 */ lbu $a2, ($t9) +/* 083898 7F04ED68 AFAB0010 */ sw $t3, 0x10($sp) +/* 08389C 7F04ED6C 8E0C0040 */ lw $t4, 0x40($s0) +/* 0838A0 7F04ED70 AFA90018 */ sw $t1, 0x18($sp) +/* 0838A4 7F04ED74 0FC28423 */ jal sub_GAME_7F0A108C +/* 0838A8 7F04ED78 AFAC0014 */ sw $t4, 0x14($sp) +/* 0838AC 7F04ED7C 8FAE0070 */ lw $t6, 0x70($sp) +/* 0838B0 7F04ED80 8DC40018 */ lw $a0, 0x18($t6) +.L7F04ED84: +/* 0838B4 7F04ED84 0FC177E1 */ jal sub_GAME_7F05DF84 +/* 0838B8 7F04ED88 00000000 */ nop +/* 0838BC 7F04ED8C 92220003 */ lbu $v0, 3($s1) +/* 0838C0 7F04ED90 2401000D */ li $at, 13 +/* 0838C4 7F04ED94 46000086 */ mov.s $f2, $f0 +/* 0838C8 7F04ED98 14410005 */ bne $v0, $at, .L7F04EDB0 +/* 0838CC 7F04ED9C 3C018003 */ lui $at, %hi(D_80030B24) +/* 0838D0 7F04EDA0 C4300B24 */ lwc1 $f16, %lo(D_80030B24)($at) +/* 0838D4 7F04EDA4 46100082 */ mul.s $f2, $f0, $f16 +/* 0838D8 7F04EDA8 1000001B */ b .L7F04EE18 +/* 0838DC 7F04EDAC 00000000 */ nop +.L7F04EDB0: +/* 0838E0 7F04EDB0 24010006 */ li $at, 6 +/* 0838E4 7F04EDB4 14410018 */ bne $v0, $at, .L7F04EE18 +/* 0838E8 7F04EDB8 00000000 */ nop +/* 0838EC 7F04EDBC 8E2D0014 */ lw $t5, 0x14($s1) +/* 0838F0 7F04EDC0 3C188004 */ lui $t8, %hi(prop_cctv_related) +/* 0838F4 7F04EDC4 2718A05C */ addiu $t8, %lo(prop_cctv_related) # addiu $t8, $t8, -0x5fa4 +/* 0838F8 7F04EDC8 8DA30008 */ lw $v1, 8($t5) +/* 0838FC 7F04EDCC 8C6F0004 */ lw $t7, 4($v1) +/* 083900 7F04EDD0 170F000D */ bne $t8, $t7, .L7F04EE08 +/* 083904 7F04EDD4 00000000 */ nop +/* 083908 7F04EDD8 8C6B0008 */ lw $t3, 8($v1) +/* 08390C 7F04EDDC 8E190044 */ lw $t9, 0x44($s0) +/* 083910 7F04EDE0 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 083914 7F04EDE4 8D6C0004 */ lw $t4, 4($t3) +/* 083918 7F04EDE8 172C0007 */ bne $t9, $t4, .L7F04EE08 +/* 08391C 7F04EDEC 00000000 */ nop +/* 083920 7F04EDF0 44812000 */ mtc1 $at, $f4 +/* 083924 7F04EDF4 02202025 */ move $a0, $s1 +/* 083928 7F04EDF8 46041082 */ mul.s $f2, $f2, $f4 +/* 08392C 7F04EDFC 0FC13786 */ jal sub_GAME_7F04DE18 +/* 083930 7F04EE00 E7A20044 */ swc1 $f2, 0x44($sp) +/* 083934 7F04EE04 C7A20044 */ lwc1 $f2, 0x44($sp) +.L7F04EE08: +/* 083938 7F04EE08 3C018003 */ lui $at, %hi(D_80030B18) +/* 08393C 7F04EE0C C4280B18 */ lwc1 $f8, %lo(D_80030B18)($at) +/* 083940 7F04EE10 46081082 */ mul.s $f2, $f2, $f8 +/* 083944 7F04EE14 00000000 */ nop +.L7F04EE18: +/* 083948 7F04EE18 0FC26C54 */ jal get_cur_playernum +/* 08394C 7F04EE1C E7A20044 */ swc1 $f2, 0x44($sp) +/* 083950 7F04EE20 C7A20044 */ lwc1 $f2, 0x44($sp) +/* 083954 7F04EE24 8FAE0070 */ lw $t6, 0x70($sp) +/* 083958 7F04EE28 02202025 */ move $a0, $s1 +/* 08395C 7F04EE2C 44051000 */ mfc1 $a1, $f2 +/* 083960 7F04EE30 8DC70018 */ lw $a3, 0x18($t6) +/* 083964 7F04EE34 AFA20010 */ sw $v0, 0x10($sp) +/* 083968 7F04EE38 0FC13833 */ jal sub_GAME_7F04E0CC +/* 08396C 7F04EE3C 27A60060 */ addiu $a2, $sp, 0x60 +/* 083970 7F04EE40 8E380014 */ lw $t8, 0x14($s1) +/* 083974 7F04EE44 3C0D8004 */ lui $t5, %hi(prop_door_related) +/* 083978 7F04EE48 25ADA1DC */ addiu $t5, %lo(prop_door_related) # addiu $t5, $t5, -0x5e24 +/* 08397C 7F04EE4C 8F0F0008 */ lw $t7, 8($t8) +/* 083980 7F04EE50 8DEB0004 */ lw $t3, 4($t7) +/* 083984 7F04EE54 15AB000D */ bne $t5, $t3, .L7F04EE8C +/* 083988 7F04EE58 00000000 */ nop +/* 08398C 7F04EE5C 8E19004C */ lw $t9, 0x4c($s0) +/* 083990 7F04EE60 1720000A */ bnez $t9, .L7F04EE8C +/* 083994 7F04EE64 00000000 */ nop +/* 083998 7F04EE68 822C00BD */ lb $t4, 0xbd($s1) +/* 08399C 7F04EE6C 258E0001 */ addiu $t6, $t4, 1 +/* 0839A0 7F04EE70 A22E00BD */ sb $t6, 0xbd($s1) +/* 0839A4 7F04EE74 823800BD */ lb $t8, 0xbd($s1) +/* 0839A8 7F04EE78 2B010003 */ slti $at, $t8, 3 +/* 0839AC 7F04EE7C 14200003 */ bnez $at, .L7F04EE8C +/* 0839B0 7F04EE80 00000000 */ nop +/* 0839B4 7F04EE84 0FC1375A */ jal sub_GAME_7F04DD68 +/* 0839B8 7F04EE88 02202025 */ move $a0, $s1 +.L7F04EE8C: +/* 0839BC 7F04EE8C 0FC11080 */ jal sub_GAME_7F044200 +/* 0839C0 7F04EE90 8E040004 */ lw $a0, 4($s0) +/* 0839C4 7F04EE94 00008025 */ move $s0, $zero +/* 0839C8 7F04EE98 0FC13803 */ jal check_if_collectable_object +/* 0839CC 7F04EE9C 02202025 */ move $a0, $s1 +/* 0839D0 7F04EEA0 50400008 */ beql $v0, $zero, .L7F04EEC4 +/* 0839D4 7F04EEA4 8E2B0008 */ lw $t3, 8($s1) +/* 0839D8 7F04EEA8 8E2F0008 */ lw $t7, 8($s1) +/* 0839DC 7F04EEAC 000F6A40 */ sll $t5, $t7, 9 +/* 0839E0 7F04EEB0 05A20009 */ bltzl $t5, .L7F04EED8 +/* 0839E4 7F04EEB4 8E2C000C */ lw $t4, 0xc($s1) +/* 0839E8 7F04EEB8 10000006 */ b .L7F04EED4 +/* 0839EC 7F04EEBC 24100001 */ li $s0, 1 +/* 0839F0 7F04EEC0 8E2B0008 */ lw $t3, 8($s1) +.L7F04EEC4: +/* 0839F4 7F04EEC4 000BCA80 */ sll $t9, $t3, 0xa +/* 0839F8 7F04EEC8 07230003 */ bgezl $t9, .L7F04EED8 +/* 0839FC 7F04EECC 8E2C000C */ lw $t4, 0xc($s1) +/* 083A00 7F04EED0 24100001 */ li $s0, 1 +.L7F04EED4: +/* 083A04 7F04EED4 8E2C000C */ lw $t4, 0xc($s1) +.L7F04EED8: +/* 083A08 7F04EED8 318E0002 */ andi $t6, $t4, 2 +/* 083A0C 7F04EEDC 51C00007 */ beql $t6, $zero, .L7F04EEFC +/* 083A10 7F04EEE0 8E38000C */ lw $t8, 0xc($s1) +/* 083A14 7F04EEE4 0FC13BCD */ jal check_if_object_has_not_been_destroyed +/* 083A18 7F04EEE8 02202025 */ move $a0, $s1 +/* 083A1C 7F04EEEC 54400003 */ bnezl $v0, .L7F04EEFC +/* 083A20 7F04EEF0 8E38000C */ lw $t8, 0xc($s1) +/* 083A24 7F04EEF4 24100001 */ li $s0, 1 +/* 083A28 7F04EEF8 8E38000C */ lw $t8, 0xc($s1) +.L7F04EEFC: +/* 083A2C 7F04EEFC 8FA50070 */ lw $a1, 0x70($sp) +/* 083A30 7F04EF00 330F0400 */ andi $t7, $t8, 0x400 +/* 083A34 7F04EF04 11E00002 */ beqz $t7, .L7F04EF10 +/* 083A38 7F04EF08 24A5000C */ addiu $a1, $a1, 0xc +/* 083A3C 7F04EF0C 00008025 */ move $s0, $zero +.L7F04EF10: +/* 083A40 7F04EF10 52000004 */ beql $s0, $zero, .L7F04EF24 +/* 083A44 7F04EF14 8FBF002C */ lw $ra, 0x2c($sp) +/* 083A48 7F04EF18 0FC12F37 */ jal sub_GAME_7F04BCDC +/* 083A4C 7F04EF1C 02202025 */ move $a0, $s1 +/* 083A50 7F04EF20 8FBF002C */ lw $ra, 0x2c($sp) +.L7F04EF24: +/* 083A54 7F04EF24 8FB00024 */ lw $s0, 0x24($sp) +/* 083A58 7F04EF28 8FB10028 */ lw $s1, 0x28($sp) +/* 083A5C 7F04EF2C 03E00008 */ jr $ra +/* 083A60 7F04EF30 27BD0070 */ addiu $sp, $sp, 0x70 +) +#endif + + + + + +#ifdef NONMATCHING +void check_if_object_has_not_been_destroyed(void) { + +} +#else +GLOBAL_ASM( +.text +glabel check_if_object_has_not_been_destroyed +/* 083A64 7F04EF34 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 083A68 7F04EF38 AFBF0014 */ sw $ra, 0x14($sp) +/* 083A6C 7F04EF3C 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 083A70 7F04EF40 00000000 */ nop +/* 083A74 7F04EF44 8FBF0014 */ lw $ra, 0x14($sp) +/* 083A78 7F04EF48 2C4E0001 */ sltiu $t6, $v0, 1 +/* 083A7C 7F04EF4C 01C01025 */ move $v0, $t6 +/* 083A80 7F04EF50 03E00008 */ jr $ra +/* 083A84 7F04EF54 27BD0018 */ addiu $sp, $sp, 0x18 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04EF58(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80052EF4 +.word 0x481c4000 /*160000.0*/ +glabel D_80052EF8 +.word 0x40060a92 /*2.0943952*/ +glabel D_80052EFC +.word 0x471c4000 /*40000.0*/ +glabel D_80052F00 +.word 0x3ec90fdb /*0.39269909*/ +glabel D_80052F04 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80052F08 +.word 0x40490fdb /*3.1415927*/ +glabel D_80052F0C +.word 0x40c90fdb /*6.2831855*/ +.text +glabel sub_GAME_7F04EF58 +/* 083A88 7F04EF58 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 083A8C 7F04EF5C AFBF001C */ sw $ra, 0x1c($sp) +/* 083A90 7F04EF60 8C850004 */ lw $a1, 4($a0) +/* 083A94 7F04EF64 24010005 */ li $at, 5 +/* 083A98 7F04EF68 00803025 */ move $a2, $a0 +/* 083A9C 7F04EF6C 90AE0003 */ lbu $t6, 3($a1) +/* 083AA0 7F04EF70 51C1000A */ beql $t6, $at, .L7F04EF9C +/* 083AA4 7F04EF74 90C90001 */ lbu $t1, 1($a2) +/* 083AA8 7F04EF78 8CAF0008 */ lw $t7, 8($a1) +/* 083AAC 7F04EF7C 000FC300 */ sll $t8, $t7, 0xc +/* 083AB0 7F04EF80 07020006 */ bltzl $t8, .L7F04EF9C +/* 083AB4 7F04EF84 90C90001 */ lbu $t1, 1($a2) +/* 083AB8 7F04EF88 8CB90064 */ lw $t9, 0x64($a1) +/* 083ABC 7F04EF8C 33280013 */ andi $t0, $t9, 0x13 +/* 083AC0 7F04EF90 51000073 */ beql $t0, $zero, .L7F04F160 +/* 083AC4 7F04EF94 8FBF001C */ lw $ra, 0x1c($sp) +/* 083AC8 7F04EF98 90C90001 */ lbu $t1, 1($a2) +.L7F04EF9C: +/* 083ACC 7F04EF9C 00A02025 */ move $a0, $a1 +/* 083AD0 7F04EFA0 312A0002 */ andi $t2, $t1, 2 +/* 083AD4 7F04EFA4 5140006E */ beql $t2, $zero, .L7F04F160 +/* 083AD8 7F04EFA8 8FBF001C */ lw $ra, 0x1c($sp) +/* 083ADC 7F04EFAC AFA50050 */ sw $a1, 0x50($sp) +/* 083AE0 7F04EFB0 0FC13BCD */ jal check_if_object_has_not_been_destroyed +/* 083AE4 7F04EFB4 AFA60058 */ sw $a2, 0x58($sp) +/* 083AE8 7F04EFB8 10400068 */ beqz $v0, .L7F04F15C +/* 083AEC 7F04EFBC 8FA50050 */ lw $a1, 0x50($sp) +/* 083AF0 7F04EFC0 8CAB0008 */ lw $t3, 8($a1) +/* 083AF4 7F04EFC4 000B6180 */ sll $t4, $t3, 6 +/* 083AF8 7F04EFC8 05820065 */ bltzl $t4, .L7F04F160 +/* 083AFC 7F04EFCC 8FBF001C */ lw $ra, 0x1c($sp) +/* 083B00 7F04EFD0 0FC225E6 */ jal get_curplayer_positiondata +/* 083B04 7F04EFD4 AFA50050 */ sw $a1, 0x50($sp) +/* 083B08 7F04EFD8 8FA50050 */ lw $a1, 0x50($sp) +/* 083B0C 7F04EFDC C4460008 */ lwc1 $f6, 8($v0) +/* 083B10 7F04EFE0 C44A000C */ lwc1 $f10, 0xc($v0) +/* 083B14 7F04EFE4 C4A40058 */ lwc1 $f4, 0x58($a1) +/* 083B18 7F04EFE8 C4A8005C */ lwc1 $f8, 0x5c($a1) +/* 083B1C 7F04EFEC 8C4D0014 */ lw $t5, 0x14($v0) +/* 083B20 7F04EFF0 46062301 */ sub.s $f12, $f4, $f6 +/* 083B24 7F04EFF4 C4460010 */ lwc1 $f6, 0x10($v0) +/* 083B28 7F04EFF8 C4A40060 */ lwc1 $f4, 0x60($a1) +/* 083B2C 7F04EFFC 460A4401 */ sub.s $f16, $f8, $f10 +/* 083B30 7F04F000 460C6202 */ mul.s $f8, $f12, $f12 +/* 083B34 7F04F004 AFAD002C */ sw $t5, 0x2c($sp) +/* 083B38 7F04F008 46062381 */ sub.s $f14, $f4, $f6 +/* 083B3C 7F04F00C 90AE0003 */ lbu $t6, 3($a1) +/* 083B40 7F04F010 24010028 */ li $at, 40 +/* 083B44 7F04F014 00401825 */ move $v1, $v0 +/* 083B48 7F04F018 460E7282 */ mul.s $f10, $f14, $f14 +/* 083B4C 7F04F01C 55C1000D */ bnel $t6, $at, .L7F04F054 +/* 083B50 7F04F020 3C014348 */ lui $at, 0x4348 +/* 083B54 7F04F024 8CAF0008 */ lw $t7, 8($a1) +/* 083B58 7F04F028 3C0143C8 */ lui $at, 0x43c8 +/* 083B5C 7F04F02C 000FC080 */ sll $t8, $t7, 2 +/* 083B60 7F04F030 07030008 */ bgezl $t8, .L7F04F054 +/* 083B64 7F04F034 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 083B68 7F04F038 44810000 */ mtc1 $at, $f0 +/* 083B6C 7F04F03C 3C018005 */ lui $at, %hi(D_80052EF4) +/* 083B70 7F04F040 C4222EF4 */ lwc1 $f2, %lo(D_80052EF4)($at) +/* 083B74 7F04F044 3C018005 */ lui $at, %hi(D_80052EF8) +/* 083B78 7F04F048 10000007 */ b .L7F04F068 +/* 083B7C 7F04F04C C4322EF8 */ lwc1 $f18, %lo(D_80052EF8)($at) +/* 083B80 7F04F050 3C014348 */ li $at, 0x43480000 # 200.000000 +.L7F04F054: +/* 083B84 7F04F054 44810000 */ mtc1 $at, $f0 +/* 083B88 7F04F058 3C018005 */ lui $at, %hi(D_80052EFC) +/* 083B8C 7F04F05C C4222EFC */ lwc1 $f2, %lo(D_80052EFC)($at) +/* 083B90 7F04F060 3C018005 */ lui $at, %hi(D_80052F00) +/* 083B94 7F04F064 C4322F00 */ lwc1 $f18, %lo(D_80052F00)($at) +.L7F04F068: +/* 083B98 7F04F068 460A4100 */ add.s $f4, $f8, $f10 +/* 083B9C 7F04F06C 4602203C */ c.lt.s $f4, $f2 +/* 083BA0 7F04F070 00000000 */ nop +/* 083BA4 7F04F074 4502003A */ bc1fl .L7F04F160 +/* 083BA8 7F04F078 8FBF001C */ lw $ra, 0x1c($sp) +/* 083BAC 7F04F07C 4600803C */ c.lt.s $f16, $f0 +/* 083BB0 7F04F080 00000000 */ nop +/* 083BB4 7F04F084 45020036 */ bc1fl .L7F04F160 +/* 083BB8 7F04F088 8FBF001C */ lw $ra, 0x1c($sp) +/* 083BBC 7F04F08C 46000187 */ neg.s $f6, $f0 +/* 083BC0 7F04F090 4610303C */ c.lt.s $f6, $f16 +/* 083BC4 7F04F094 00000000 */ nop +/* 083BC8 7F04F098 45020031 */ bc1fl .L7F04F160 +/* 083BCC 7F04F09C 8FBF001C */ lw $ra, 0x1c($sp) +/* 083BD0 7F04F0A0 AFA3004C */ sw $v1, 0x4c($sp) +/* 083BD4 7F04F0A4 AFA50050 */ sw $a1, 0x50($sp) +/* 083BD8 7F04F0A8 0FC16A8C */ jal convert_angle_using_inverse +/* 083BDC 7F04F0AC E7B20030 */ swc1 $f18, 0x30($sp) +/* 083BE0 7F04F0B0 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees +/* 083BE4 7F04F0B4 E7A00024 */ swc1 $f0, 0x24($sp) +/* 083BE8 7F04F0B8 C7AC0024 */ lwc1 $f12, 0x24($sp) +/* 083BEC 7F04F0BC 8FA3004C */ lw $v1, 0x4c($sp) +/* 083BF0 7F04F0C0 8FA50050 */ lw $a1, 0x50($sp) +/* 083BF4 7F04F0C4 4600603C */ c.lt.s $f12, $f0 +/* 083BF8 7F04F0C8 C7B20030 */ lwc1 $f18, 0x30($sp) +/* 083BFC 7F04F0CC 46006381 */ sub.s $f14, $f12, $f0 +/* 083C00 7F04F0D0 3C018005 */ lui $at, %hi(D_80052F04) +/* 083C04 7F04F0D4 45000003 */ bc1f .L7F04F0E4 +/* 083C08 7F04F0D8 46007086 */ mov.s $f2, $f14 +/* 083C0C 7F04F0DC C4282F04 */ lwc1 $f8, %lo(D_80052F04)($at) +/* 083C10 7F04F0E0 46087080 */ add.s $f2, $f14, $f8 +.L7F04F0E4: +/* 083C14 7F04F0E4 3C018005 */ lui $at, %hi(D_80052F08) +/* 083C18 7F04F0E8 C42A2F08 */ lwc1 $f10, %lo(D_80052F08)($at) +/* 083C1C 7F04F0EC 3C018005 */ lui $at, %hi(D_80052F0C) +/* 083C20 7F04F0F0 4602503C */ c.lt.s $f10, $f2 +/* 083C24 7F04F0F4 00000000 */ nop +/* 083C28 7F04F0F8 45020004 */ bc1fl .L7F04F10C +/* 083C2C 7F04F0FC 4612103E */ c.le.s $f2, $f18 +/* 083C30 7F04F100 C4242F0C */ lwc1 $f4, %lo(D_80052F0C)($at) +/* 083C34 7F04F104 46022081 */ sub.s $f2, $f4, $f2 +/* 083C38 7F04F108 4612103E */ c.le.s $f2, $f18 +.L7F04F10C: +/* 083C3C 7F04F10C 00000000 */ nop +/* 083C40 7F04F110 45020013 */ bc1fl .L7F04F160 +/* 083C44 7F04F114 8FBF001C */ lw $ra, 0x1c($sp) +/* 083C48 7F04F118 8CB9000C */ lw $t9, 0xc($a1) +/* 083C4C 7F04F11C 8FA20058 */ lw $v0, 0x58($sp) +/* 083C50 7F04F120 27A4002C */ addiu $a0, $sp, 0x2c +/* 083C54 7F04F124 33280800 */ andi $t0, $t9, 0x800 +/* 083C58 7F04F128 5100000A */ beql $t0, $zero, .L7F04F154 +/* 083C5C 7F04F12C 8FA90058 */ lw $t1, 0x58($sp) +/* 083C60 7F04F130 C4460010 */ lwc1 $f6, 0x10($v0) +/* 083C64 7F04F134 8C650008 */ lw $a1, 8($v1) +/* 083C68 7F04F138 8C660010 */ lw $a2, 0x10($v1) +/* 083C6C 7F04F13C 8C470008 */ lw $a3, 8($v0) +/* 083C70 7F04F140 0FC2C2F9 */ jal sub_GAME_7F0B0BE4 +/* 083C74 7F04F144 E7A60010 */ swc1 $f6, 0x10($sp) +/* 083C78 7F04F148 50400005 */ beql $v0, $zero, .L7F04F160 +/* 083C7C 7F04F14C 8FBF001C */ lw $ra, 0x1c($sp) +/* 083C80 7F04F150 8FA90058 */ lw $t1, 0x58($sp) +.L7F04F154: +/* 083C84 7F04F154 3C018007 */ lui $at, %hi(dword_CODE_bss_80071DF8) +/* 083C88 7F04F158 AC291DF8 */ sw $t1, %lo(dword_CODE_bss_80071DF8)($at) +.L7F04F15C: +/* 083C8C 7F04F15C 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04F160: +/* 083C90 7F04F160 27BD0058 */ addiu $sp, $sp, 0x58 +/* 083C94 7F04F164 24020001 */ li $v0, 1 +/* 083C98 7F04F168 03E00008 */ jr $ra +/* 083C9C 7F04F16C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04F170(void) { + +} +#else +GLOBAL_ASM( +.late_rodata + + +.text +glabel sub_GAME_7F04F170 +/* 083CA0 7F04F170 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 083CA4 7F04F174 AFBF001C */ sw $ra, 0x1c($sp) +/* 083CA8 7F04F178 AFB00018 */ sw $s0, 0x18($sp) +/* 083CAC 7F04F17C AFA40028 */ sw $a0, 0x28($sp) +/* 083CB0 7F04F180 8C900004 */ lw $s0, 4($a0) +/* 083CB4 7F04F184 AFA00020 */ sw $zero, 0x20($sp) +/* 083CB8 7F04F188 24010005 */ li $at, 5 +/* 083CBC 7F04F18C 920F0003 */ lbu $t7, 3($s0) +/* 083CC0 7F04F190 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 083CC4 7F04F194 240500BA */ li $a1, 186 +/* 083CC8 7F04F198 15E1000D */ bne $t7, $at, .L7F04F1D0 +/* 083CCC 7F04F19C 00003025 */ move $a2, $zero +/* 083CD0 7F04F1A0 0C002382 */ jal play_sfx_a1 +/* 083CD4 7F04F1A4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 083CD8 7F04F1A8 0FC15794 */ jal is_alarm_on +/* 083CDC 7F04F1AC 00000000 */ nop +/* 083CE0 7F04F1B0 10400005 */ beqz $v0, .L7F04F1C8 +/* 083CE4 7F04F1B4 00000000 */ nop +/* 083CE8 7F04F1B8 0FC1578B */ jal stop_alarm +/* 083CEC 7F04F1BC 00000000 */ nop +/* 083CF0 7F04F1C0 10000004 */ b .L7F04F1D4 +/* 083CF4 7F04F1C4 8E180008 */ lw $t8, 8($s0) +.L7F04F1C8: +/* 083CF8 7F04F1C8 0FC15772 */ jal start_alarm +/* 083CFC 7F04F1CC 00000000 */ nop +.L7F04F1D0: +/* 083D00 7F04F1D0 8E180008 */ lw $t8, 8($s0) +.L7F04F1D4: +/* 083D04 7F04F1D4 8FA40028 */ lw $a0, 0x28($sp) +/* 083D08 7F04F1D8 0018CB00 */ sll $t9, $t8, 0xc +/* 083D0C 7F04F1DC 07230005 */ bgezl $t9, .L7F04F1F4 +/* 083D10 7F04F1E0 8E080064 */ lw $t0, 0x64($s0) +/* 083D14 7F04F1E4 0FC14094 */ jal collect_or_interact_object +/* 083D18 7F04F1E8 24050001 */ li $a1, 1 +/* 083D1C 7F04F1EC AFA20020 */ sw $v0, 0x20($sp) +/* 083D20 7F04F1F0 8E080064 */ lw $t0, 0x64($s0) +.L7F04F1F4: +/* 083D24 7F04F1F4 35094000 */ ori $t1, $t0, 0x4000 +/* 083D28 7F04F1F8 AE090064 */ sw $t1, 0x64($s0) +/* 083D2C 7F04F1FC 0FC0F9A8 */ jal sub_GAME_7F03E6A0 +/* 083D30 7F04F200 8FA40028 */ lw $a0, 0x28($sp) +/* 083D34 7F04F204 8FBF001C */ lw $ra, 0x1c($sp) +/* 083D38 7F04F208 8FA20020 */ lw $v0, 0x20($sp) +/* 083D3C 7F04F20C 8FB00018 */ lw $s0, 0x18($sp) +/* 083D40 7F04F210 03E00008 */ jr $ra +/* 083D44 7F04F214 27BD0028 */ addiu $sp, $sp, 0x28 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04F218(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04F218 +/* 083D48 7F04F218 10A00005 */ beqz $a1, .L7F04F230 +/* 083D4C 7F04F21C 8C820004 */ lw $v0, 4($a0) +/* 083D50 7F04F220 904E0002 */ lbu $t6, 2($v0) +/* 083D54 7F04F224 31CFFFDF */ andi $t7, $t6, 0xffdf +/* 083D58 7F04F228 03E00008 */ jr $ra +/* 083D5C 7F04F22C A04F0002 */ sb $t7, 2($v0) + +.L7F04F230: +/* 083D60 7F04F230 90580002 */ lbu $t8, 2($v0) +/* 083D64 7F04F234 37190020 */ ori $t9, $t8, 0x20 +/* 083D68 7F04F238 A0590002 */ sb $t9, 2($v0) +/* 083D6C 7F04F23C 03E00008 */ jr $ra +/* 083D70 7F04F240 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F04F244(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F04F244 +/* 083D74 7F04F244 8C820004 */ lw $v0, 4($a0) +/* 083D78 7F04F248 8C430068 */ lw $v1, 0x68($v0) +/* 083D7C 7F04F24C 50600017 */ beql $v1, $zero, .L7F04F2AC +/* 083D80 7F04F250 ACC00000 */ sw $zero, ($a2) +/* 083D84 7F04F254 8C4E0008 */ lw $t6, 8($v0) +/* 083D88 7F04F258 31CF0100 */ andi $t7, $t6, 0x100 +/* 083D8C 7F04F25C 51E00013 */ beql $t7, $zero, .L7F04F2AC +/* 083D90 7F04F260 ACC00000 */ sw $zero, ($a2) +/* 083D94 7F04F264 90580002 */ lbu $t8, 2($v0) +/* 083D98 7F04F268 33190020 */ andi $t9, $t8, 0x20 +/* 083D9C 7F04F26C 5720000F */ bnezl $t9, .L7F04F2AC +/* 083DA0 7F04F270 ACC00000 */ sw $zero, ($a2) +/* 083DA4 7F04F274 8C680000 */ lw $t0, ($v1) +/* 083DA8 7F04F278 ACC80000 */ sw $t0, ($a2) +/* 083DAC 7F04F27C 8C490068 */ lw $t1, 0x68($v0) +/* 083DB0 7F04F280 252A0004 */ addiu $t2, $t1, 4 +/* 083DB4 7F04F284 ACAA0000 */ sw $t2, ($a1) +/* 083DB8 7F04F288 8C4B0068 */ lw $t3, 0x68($v0) +/* 083DBC 7F04F28C 8FAC0010 */ lw $t4, 0x10($sp) +/* 083DC0 7F04F290 C5640048 */ lwc1 $f4, 0x48($t3) +/* 083DC4 7F04F294 E5840000 */ swc1 $f4, ($t4) +/* 083DC8 7F04F298 8C4D0068 */ lw $t5, 0x68($v0) +/* 083DCC 7F04F29C C5A60044 */ lwc1 $f6, 0x44($t5) +/* 083DD0 7F04F2A0 03E00008 */ jr $ra +/* 083DD4 7F04F2A4 E4E60000 */ swc1 $f6, ($a3) + +/* 083DD8 7F04F2A8 ACC00000 */ sw $zero, ($a2) +.L7F04F2AC: +/* 083DDC 7F04F2AC 03E00008 */ jr $ra +/* 083DE0 7F04F2B0 00000000 */ nop +) +#endif + + + + + + +void append_text_picked_up(u8 *buffer,u8 * param2,u8 * param3) +{ + u8 *puVar1; + + puVar1 = get_textptr_for_textID(0xa400); + string_append_from_obseg_textbank(buffer,puVar1); + return; +} + + + + + +void append_text_ammo_amount_word(u8 *buffer,AMMOTYPES ammotype,u32 amount) + +{ + u8 *textfiletext; + + switch(ammotype) { + case AMMO_9MM: + case AMMO_9MM_2: + case AMMO_RIFLE: + case AMMO_PLASTIQUE: + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_SHOTGUN: + case AMMO_GRENADE: + case AMMO_ROCKETS: + case AMMO_REMOTEMINE: + case AMMO_PROXMINE: + case AMMO_TIMEDMINE: + case AMMO_KNIFE: + case AMMO_GRENADEROUND: + case AMMO_MAGNUM: + case AMMO_GGUN: + case AMMO_DARTS: + case AMMO_FLARE: + case AMMO_PITON: + case AMMO_DYNAMITE: + case AMMO_BUG: + case AMMO_MICRO_CAMERA: + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa402); + string_append_from_obseg_textbank(buffer,textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank(buffer,textfiletext); + } + break; + case AMMO_EXPLOSIVEPEN: + case AMMO_BOMBCASE: + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa403); + string_append_from_obseg_textbank(buffer,textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank(buffer,textfiletext); + } + break; + case AMMO_GEKEY: + case AMMO_TOKEN: + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa404); + string_append_from_obseg_textbank(buffer,textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa401); + string_append_from_obseg_textbank(buffer,textfiletext); + } + } + return; +} + + + + + + + +#ifdef NONMATCHING// +void apped_text_ammotype(u8 *buffer,AMMOTYPES ammotype,u32 amount) +{ + u8 *textfiletext; + + if (((ammotype == AMMO_9MM) || (ammotype == AMMO_9MM_2)) || (ammotype == AMMO_RIFLE)) { + textfiletext = get_textptr_for_textID(0xa405); + string_append_from_obseg_textbank(buffer,textfiletext); + } + else { + if (ammotype == AMMO_KNIFE) { + textfiletext = get_textptr_for_textID(41999); + string_append_from_obseg_textbank(buffer,textfiletext); + if (amount == 1) { + textfiletext = get_textptr_for_textID(42000); + string_append_from_obseg_textbank(buffer,textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa411); + string_append_from_obseg_textbank(buffer,textfiletext); + } + } + else { + if (ammotype == AMMO_DYNAMITE) { + if (amount == 1) { + textfiletext = get_textptr_for_textID(0xa419); + string_append_from_obseg_textbank(buffer,textfiletext); + } + else { + textfiletext = get_textptr_for_textID(0xa41a); + string_append_from_obseg_textbank(buffer,textfiletext); + } + textfiletext = get_textptr_for_textID(0xa418); + string_append_from_obseg_textbank(buffer,textfiletext); + } + else { + switch(ammotype) { + case AMMO_SHOTGUN: + textfiletext = get_textptr_for_textID(0xa406); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_GRENADE: + textfiletext = get_textptr_for_textID(0xa409); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_ROCKETS: + textfiletext = get_textptr_for_textID(0xa40b); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_REMOTEMINE: + textfiletext = get_textptr_for_textID(0xa40c); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_PROXMINE: + textfiletext = get_textptr_for_textID(0xa40d); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_TIMEDMINE: + textfiletext = get_textptr_for_textID(0xa40e); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_GRENADEROUND: + textfiletext = get_textptr_for_textID(0xa40a); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_MAGNUM: + textfiletext = get_textptr_for_textID(0xa407); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_GGUN: + textfiletext = get_textptr_for_textID(0xa408); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_DARTS: + textfiletext = get_textptr_for_textID(0xa413); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_EXPLOSIVEPEN: + textfiletext = get_textptr_for_textID(0xa414); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_BOMBCASE: + textfiletext = get_textptr_for_textID(0xa415); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_FLARE: + textfiletext = get_textptr_for_textID(0xa416); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_PITON: + textfiletext = get_textptr_for_textID(0xa417); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_BUG: + textfiletext = get_textptr_for_textID(0xa41b); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_MICRO_CAMERA: + textfiletext = get_textptr_for_textID(0xa41c); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_GEKEY: + textfiletext = get_textptr_for_textID(0xa41d); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_PLASTIQUE: + textfiletext = get_textptr_for_textID(0xa41f); + string_append_from_obseg_textbank(buffer,textfiletext); + break; + case AMMO_TOKEN: + textfiletext = get_textptr_for_textID(0xa41e); + string_append_from_obseg_textbank(buffer,textfiletext); + } + if (1 < (int)amount) { + textfiletext = get_textptr_for_textID(0xa412); + string_append_from_obseg_textbank(buffer,textfiletext); + } + } + } + } + return; +} +#else +GLOBAL_ASM( +.late_rodata +/*D:80052F84*/ +glabel jpt_80052F84 +.word text_pickup_shotgun_cartridge +.word text_pickup_hand_grenade +.word text_pickup_rocket +.word text_pickup_remote_mine +.word text_pickup_proximity_mine +.word text_pickup_timed_mine +.word pluralize_multiples +.word text_pickup_grenade_round +.word text_pickup_magnum_bullet +.word text_pickup_golden_bullet +.word text_pickup_dart +.word text_pickup_explosive_pen +.word text_pickup_explosive_case +.word text_pickup_flare +.word text_pickup_piton +.word pluralize_multiples +.word text_pickup_bug +.word text_pickup_micro_camera +.word text_pickup_goldeneye_key +.word text_pickup_plastique +.word pluralize_multiples +.word pluralize_multiples +.word pluralize_multiples +.word pluralize_multiples +.word pluralize_multiples +.word text_pickup_token + + + +.text +glabel apped_text_ammotype +/* 083F3C 7F04F40C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 083F40 7F04F410 AFB00018 */ sw $s0, 0x18($sp) +/* 083F44 7F04F414 24020001 */ li $v0, 1 +/* 083F48 7F04F418 00808025 */ move $s0, $a0 +/* 083F4C 7F04F41C AFBF001C */ sw $ra, 0x1c($sp) +/* 083F50 7F04F420 10A20006 */ beq $a1, $v0, .L7F04F43C +/* 083F54 7F04F424 AFA60028 */ sw $a2, 0x28($sp) +/* 083F58 7F04F428 24010002 */ li $at, 2 +/* 083F5C 7F04F42C 10A10003 */ beq $a1, $at, .L7F04F43C +/* 083F60 7F04F430 24010003 */ li $at, 3 +/* 083F64 7F04F434 54A10009 */ bnel $a1, $at, .L7F04F45C +/* 083F68 7F04F438 2401000A */ li $at, 10 +.L7F04F43C: +/* 083F6C 7F04F43C 0FC30776 */ jal get_textptr_for_textID +/* 083F70 7F04F440 3404A405 */ li $a0, 41989 +/* 083F74 7F04F444 02002025 */ move $a0, $s0 +/* 083F78 7F04F448 0C0029FF */ jal string_append_from_obseg_textbank +/* 083F7C 7F04F44C 00402825 */ move $a1, $v0 +/* 083F80 7F04F450 100000C9 */ b .L7F04F778 +/* 083F84 7F04F454 8FBF001C */ lw $ra, 0x1c($sp) +/* 083F88 7F04F458 2401000A */ li $at, 10 +.L7F04F45C: +/* 083F8C 7F04F45C 54A10019 */ bnel $a1, $at, .L7F04F4C4 +/* 083F90 7F04F460 24010013 */ li $at, 19 +/* 083F94 7F04F464 0FC30776 */ jal get_textptr_for_textID +/* 083F98 7F04F468 3404A40F */ li $a0, 41999 +/* 083F9C 7F04F46C 02002025 */ move $a0, $s0 +/* 083FA0 7F04F470 0C0029FF */ jal string_append_from_obseg_textbank +/* 083FA4 7F04F474 00402825 */ move $a1, $v0 +/* 083FA8 7F04F478 8FAE0028 */ lw $t6, 0x28($sp) +/* 083FAC 7F04F47C 24010001 */ li $at, 1 +/* 083FB0 7F04F480 15C10008 */ bne $t6, $at, .L7F04F4A4 +/* 083FB4 7F04F484 00000000 */ nop +/* 083FB8 7F04F488 0FC30776 */ jal get_textptr_for_textID +/* 083FBC 7F04F48C 3404A410 */ li $a0, 42000 +/* 083FC0 7F04F490 02002025 */ move $a0, $s0 +/* 083FC4 7F04F494 0C0029FF */ jal string_append_from_obseg_textbank +/* 083FC8 7F04F498 00402825 */ move $a1, $v0 +/* 083FCC 7F04F49C 100000B6 */ b .L7F04F778 +/* 083FD0 7F04F4A0 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04F4A4: +/* 083FD4 7F04F4A4 0FC30776 */ jal get_textptr_for_textID +/* 083FD8 7F04F4A8 3404A411 */ li $a0, 42001 +/* 083FDC 7F04F4AC 02002025 */ move $a0, $s0 +/* 083FE0 7F04F4B0 0C0029FF */ jal string_append_from_obseg_textbank +/* 083FE4 7F04F4B4 00402825 */ move $a1, $v0 +/* 083FE8 7F04F4B8 100000AF */ b .L7F04F778 +/* 083FEC 7F04F4BC 8FBF001C */ lw $ra, 0x1c($sp) +/* 083FF0 7F04F4C0 24010013 */ li $at, 19 +.L7F04F4C4: +/* 083FF4 7F04F4C4 14A10017 */ bne $a1, $at, .L7F04F524 +/* 083FF8 7F04F4C8 24B8FFFC */ addiu $t8, $a1, -4 +/* 083FFC 7F04F4CC 8FAF0028 */ lw $t7, 0x28($sp) +/* 084000 7F04F4D0 15E20008 */ bne $t7, $v0, .L7F04F4F4 +/* 084004 7F04F4D4 00000000 */ nop +/* 084008 7F04F4D8 0FC30776 */ jal get_textptr_for_textID +/* 08400C 7F04F4DC 3404A419 */ li $a0, 42009 +/* 084010 7F04F4E0 02002025 */ move $a0, $s0 +/* 084014 7F04F4E4 0C0029FF */ jal string_append_from_obseg_textbank +/* 084018 7F04F4E8 00402825 */ move $a1, $v0 +/* 08401C 7F04F4EC 10000006 */ b .L7F04F508 +/* 084020 7F04F4F0 00000000 */ nop +.L7F04F4F4: +/* 084024 7F04F4F4 0FC30776 */ jal get_textptr_for_textID +/* 084028 7F04F4F8 3404A41A */ li $a0, 42010 +/* 08402C 7F04F4FC 02002025 */ move $a0, $s0 +/* 084030 7F04F500 0C0029FF */ jal string_append_from_obseg_textbank +/* 084034 7F04F504 00402825 */ move $a1, $v0 +.L7F04F508: +/* 084038 7F04F508 0FC30776 */ jal get_textptr_for_textID +/* 08403C 7F04F50C 3404A418 */ li $a0, 42008 +/* 084040 7F04F510 02002025 */ move $a0, $s0 +/* 084044 7F04F514 0C0029FF */ jal string_append_from_obseg_textbank +/* 084048 7F04F518 00402825 */ move $a1, $v0 +/* 08404C 7F04F51C 10000096 */ b .L7F04F778 +/* 084050 7F04F520 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04F524: +/* 084054 7F04F524 2F01001A */ sltiu $at, $t8, 0x1a +/* 084058 7F04F528 10200089 */ beqz $at, .L7F04F750 +/* 08405C 7F04F52C 0018C080 */ sll $t8, $t8, 2 +/* 084060 7F04F530 3C018005 */ lui $at, %hi(jpt_80052F84) +/* 084064 7F04F534 00380821 */ addu $at, $at, $t8 +/* 084068 7F04F538 8C382F84 */ lw $t8, %lo(jpt_80052F84)($at) +/* 08406C 7F04F53C 03000008 */ jr $t8 +/* 084070 7F04F540 00000000 */ nop +text_pickup_shotgun_cartridge: +/* 084074 7F04F544 0FC30776 */ jal get_textptr_for_textID +/* 084078 7F04F548 3404A406 */ li $a0, 41990 +/* 08407C 7F04F54C 02002025 */ move $a0, $s0 +/* 084080 7F04F550 0C0029FF */ jal string_append_from_obseg_textbank +/* 084084 7F04F554 00402825 */ move $a1, $v0 +/* 084088 7F04F558 1000007E */ b .L7F04F754 +/* 08408C 7F04F55C 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_magnum_bullet: +/* 084090 7F04F560 0FC30776 */ jal get_textptr_for_textID +/* 084094 7F04F564 3404A407 */ li $a0, 41991 +/* 084098 7F04F568 02002025 */ move $a0, $s0 +/* 08409C 7F04F56C 0C0029FF */ jal string_append_from_obseg_textbank +/* 0840A0 7F04F570 00402825 */ move $a1, $v0 +/* 0840A4 7F04F574 10000077 */ b .L7F04F754 +/* 0840A8 7F04F578 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_golden_bullet: +/* 0840AC 7F04F57C 0FC30776 */ jal get_textptr_for_textID +/* 0840B0 7F04F580 3404A408 */ li $a0, 41992 +/* 0840B4 7F04F584 02002025 */ move $a0, $s0 +/* 0840B8 7F04F588 0C0029FF */ jal string_append_from_obseg_textbank +/* 0840BC 7F04F58C 00402825 */ move $a1, $v0 +/* 0840C0 7F04F590 10000070 */ b .L7F04F754 +/* 0840C4 7F04F594 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_hand_grenade: +/* 0840C8 7F04F598 0FC30776 */ jal get_textptr_for_textID +/* 0840CC 7F04F59C 3404A409 */ li $a0, 41993 +/* 0840D0 7F04F5A0 02002025 */ move $a0, $s0 +/* 0840D4 7F04F5A4 0C0029FF */ jal string_append_from_obseg_textbank +/* 0840D8 7F04F5A8 00402825 */ move $a1, $v0 +/* 0840DC 7F04F5AC 10000069 */ b .L7F04F754 +/* 0840E0 7F04F5B0 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_grenade_round: +/* 0840E4 7F04F5B4 0FC30776 */ jal get_textptr_for_textID +/* 0840E8 7F04F5B8 3404A40A */ li $a0, 41994 +/* 0840EC 7F04F5BC 02002025 */ move $a0, $s0 +/* 0840F0 7F04F5C0 0C0029FF */ jal string_append_from_obseg_textbank +/* 0840F4 7F04F5C4 00402825 */ move $a1, $v0 +/* 0840F8 7F04F5C8 10000062 */ b .L7F04F754 +/* 0840FC 7F04F5CC 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_rocket: +/* 084100 7F04F5D0 0FC30776 */ jal get_textptr_for_textID +/* 084104 7F04F5D4 3404A40B */ li $a0, 41995 +/* 084108 7F04F5D8 02002025 */ move $a0, $s0 +/* 08410C 7F04F5DC 0C0029FF */ jal string_append_from_obseg_textbank +/* 084110 7F04F5E0 00402825 */ move $a1, $v0 +/* 084114 7F04F5E4 1000005B */ b .L7F04F754 +/* 084118 7F04F5E8 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_remote_mine: +/* 08411C 7F04F5EC 0FC30776 */ jal get_textptr_for_textID +/* 084120 7F04F5F0 3404A40C */ li $a0, 41996 +/* 084124 7F04F5F4 02002025 */ move $a0, $s0 +/* 084128 7F04F5F8 0C0029FF */ jal string_append_from_obseg_textbank +/* 08412C 7F04F5FC 00402825 */ move $a1, $v0 +/* 084130 7F04F600 10000054 */ b .L7F04F754 +/* 084134 7F04F604 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_proximity_mine: +/* 084138 7F04F608 0FC30776 */ jal get_textptr_for_textID +/* 08413C 7F04F60C 3404A40D */ li $a0, 41997 +/* 084140 7F04F610 02002025 */ move $a0, $s0 +/* 084144 7F04F614 0C0029FF */ jal string_append_from_obseg_textbank +/* 084148 7F04F618 00402825 */ move $a1, $v0 +/* 08414C 7F04F61C 1000004D */ b .L7F04F754 +/* 084150 7F04F620 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_timed_mine: +/* 084154 7F04F624 0FC30776 */ jal get_textptr_for_textID +/* 084158 7F04F628 3404A40E */ li $a0, 41998 +/* 08415C 7F04F62C 02002025 */ move $a0, $s0 +/* 084160 7F04F630 0C0029FF */ jal string_append_from_obseg_textbank +/* 084164 7F04F634 00402825 */ move $a1, $v0 +/* 084168 7F04F638 10000046 */ b .L7F04F754 +/* 08416C 7F04F63C 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_dart: +/* 084170 7F04F640 0FC30776 */ jal get_textptr_for_textID +/* 084174 7F04F644 3404A413 */ li $a0, 42003 +/* 084178 7F04F648 02002025 */ move $a0, $s0 +/* 08417C 7F04F64C 0C0029FF */ jal string_append_from_obseg_textbank +/* 084180 7F04F650 00402825 */ move $a1, $v0 +/* 084184 7F04F654 1000003F */ b .L7F04F754 +/* 084188 7F04F658 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_explosive_pen: +/* 08418C 7F04F65C 0FC30776 */ jal get_textptr_for_textID +/* 084190 7F04F660 3404A414 */ li $a0, 42004 +/* 084194 7F04F664 02002025 */ move $a0, $s0 +/* 084198 7F04F668 0C0029FF */ jal string_append_from_obseg_textbank +/* 08419C 7F04F66C 00402825 */ move $a1, $v0 +/* 0841A0 7F04F670 10000038 */ b .L7F04F754 +/* 0841A4 7F04F674 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_explosive_case: +/* 0841A8 7F04F678 0FC30776 */ jal get_textptr_for_textID +/* 0841AC 7F04F67C 3404A415 */ li $a0, 42005 +/* 0841B0 7F04F680 02002025 */ move $a0, $s0 +/* 0841B4 7F04F684 0C0029FF */ jal string_append_from_obseg_textbank +/* 0841B8 7F04F688 00402825 */ move $a1, $v0 +/* 0841BC 7F04F68C 10000031 */ b .L7F04F754 +/* 0841C0 7F04F690 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_flare: +/* 0841C4 7F04F694 0FC30776 */ jal get_textptr_for_textID +/* 0841C8 7F04F698 3404A416 */ li $a0, 42006 +/* 0841CC 7F04F69C 02002025 */ move $a0, $s0 +/* 0841D0 7F04F6A0 0C0029FF */ jal string_append_from_obseg_textbank +/* 0841D4 7F04F6A4 00402825 */ move $a1, $v0 +/* 0841D8 7F04F6A8 1000002A */ b .L7F04F754 +/* 0841DC 7F04F6AC 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_piton: +/* 0841E0 7F04F6B0 0FC30776 */ jal get_textptr_for_textID +/* 0841E4 7F04F6B4 3404A417 */ li $a0, 42007 +/* 0841E8 7F04F6B8 02002025 */ move $a0, $s0 +/* 0841EC 7F04F6BC 0C0029FF */ jal string_append_from_obseg_textbank +/* 0841F0 7F04F6C0 00402825 */ move $a1, $v0 +/* 0841F4 7F04F6C4 10000023 */ b .L7F04F754 +/* 0841F8 7F04F6C8 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_bug: +/* 0841FC 7F04F6CC 0FC30776 */ jal get_textptr_for_textID +/* 084200 7F04F6D0 3404A41B */ li $a0, 42011 +/* 084204 7F04F6D4 02002025 */ move $a0, $s0 +/* 084208 7F04F6D8 0C0029FF */ jal string_append_from_obseg_textbank +/* 08420C 7F04F6DC 00402825 */ move $a1, $v0 +/* 084210 7F04F6E0 1000001C */ b .L7F04F754 +/* 084214 7F04F6E4 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_micro_camera: +/* 084218 7F04F6E8 0FC30776 */ jal get_textptr_for_textID +/* 08421C 7F04F6EC 3404A41C */ li $a0, 42012 +/* 084220 7F04F6F0 02002025 */ move $a0, $s0 +/* 084224 7F04F6F4 0C0029FF */ jal string_append_from_obseg_textbank +/* 084228 7F04F6F8 00402825 */ move $a1, $v0 +/* 08422C 7F04F6FC 10000015 */ b .L7F04F754 +/* 084230 7F04F700 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_goldeneye_key: +/* 084234 7F04F704 0FC30776 */ jal get_textptr_for_textID +/* 084238 7F04F708 3404A41D */ li $a0, 42013 +/* 08423C 7F04F70C 02002025 */ move $a0, $s0 +/* 084240 7F04F710 0C0029FF */ jal string_append_from_obseg_textbank +/* 084244 7F04F714 00402825 */ move $a1, $v0 +/* 084248 7F04F718 1000000E */ b .L7F04F754 +/* 08424C 7F04F71C 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_token: +/* 084250 7F04F720 0FC30776 */ jal get_textptr_for_textID +/* 084254 7F04F724 3404A41E */ li $a0, 42014 +/* 084258 7F04F728 02002025 */ move $a0, $s0 +/* 08425C 7F04F72C 0C0029FF */ jal string_append_from_obseg_textbank +/* 084260 7F04F730 00402825 */ move $a1, $v0 +/* 084264 7F04F734 10000007 */ b .L7F04F754 +/* 084268 7F04F738 8FB90028 */ lw $t9, 0x28($sp) +text_pickup_plastique: +/* 08426C 7F04F73C 0FC30776 */ jal get_textptr_for_textID +/* 084270 7F04F740 3404A41F */ li $a0, 42015 +/* 084274 7F04F744 02002025 */ move $a0, $s0 +/* 084278 7F04F748 0C0029FF */ jal string_append_from_obseg_textbank +/* 08427C 7F04F74C 00402825 */ move $a1, $v0 +pluralize_multiples: +.L7F04F750: +/* 084280 7F04F750 8FB90028 */ lw $t9, 0x28($sp) +.L7F04F754: +/* 084284 7F04F754 2B210002 */ slti $at, $t9, 2 +/* 084288 7F04F758 54200007 */ bnezl $at, .L7F04F778 +/* 08428C 7F04F75C 8FBF001C */ lw $ra, 0x1c($sp) +/* 084290 7F04F760 0FC30776 */ jal get_textptr_for_textID +/* 084294 7F04F764 3404A412 */ li $a0, 42002 +/* 084298 7F04F768 02002025 */ move $a0, $s0 +/* 08429C 7F04F76C 0C0029FF */ jal string_append_from_obseg_textbank +/* 0842A0 7F04F770 00402825 */ move $a1, $v0 +/* 0842A4 7F04F774 8FBF001C */ lw $ra, 0x1c($sp) +.L7F04F778: +/* 0842A8 7F04F778 8FB00018 */ lw $s0, 0x18($sp) +/* 0842AC 7F04F77C 27BD0020 */ addiu $sp, $sp, 0x20 +/* 0842B0 7F04F780 03E00008 */ jr $ra +/* 0842B4 7F04F784 00000000 */ nop +) +#endif + + + + + + +void set_sound_effect_for_ammo_collection(AMMOTYPES ammotype) + +{ + switch(ammotype) { + case AMMO_9MM: + case AMMO_9MM_2: + case AMMO_RIFLE: + case AMMO_SHOTGUN: + case AMMO_GRENADE: + case AMMO_ROCKETS: + case AMMO_GRENADEROUND: + case AMMO_MAGNUM: + case AMMO_GGUN: + case AMMO_DARTS: + case AMMO_EXPLOSIVEPEN: + case AMMO_FLARE: + case AMMO_PITON: + case AMMO_DYNAMITE: + case AMMO_GEKEY: + case AMMO_TOKEN: + play_sfx_a1(ptr_sfx_buf,0xea,0); + break; + case AMMO_REMOTEMINE: + case AMMO_PROXMINE: + case AMMO_TIMEDMINE: + case AMMO_BOMBCASE: + case AMMO_BUG: + case AMMO_MICRO_CAMERA: + case AMMO_PLASTIQUE: + play_sfx_a1(ptr_sfx_buf,0xeb,0); + break; + case AMMO_KNIFE: + play_sfx_a1(ptr_sfx_buf,0xe9,0); + } + return; +} + + + + + + +void set_sound_effect_for_weapontype_collection(ITEM_IDS weapontype) +{ + if ((weapontype == ITEM_KNIFE) || (weapontype == ITEM_THROWKNIFE)) { + play_sfx_a1(ptr_sfx_buf,0xe9,0); + } + else { + if (((((weapontype == ITEM_REMOTEMINE) || (weapontype == ITEM_PROXIMITYMINE)) || + (weapontype == ITEM_TIMEDMINE)) || + ((weapontype == ITEM_BOMBCASE || (weapontype == ITEM_BUG)))) || + ((weapontype == ITEM_MICROCAMERA || (weapontype == ITEM_PLASTIQUE)))) { + play_sfx_a1(ptr_sfx_buf,0xeb,0); + } + else { + if (((weapontype == ITEM_GRENADE) || (weapontype == ITEM_57)) || (weapontype == ITEM_56) + ) { + play_sfx_a1(ptr_sfx_buf,0xea,0); + } + else { + if (weapontype == ITEM_LASER) { + play_sfx_a1(ptr_sfx_buf,0xf2,0); + } + else { + play_sfx_a1(ptr_sfx_buf,0xe8,0); + } + } + } + } + return; +} + + + +//!FIXME, i need to be properly split from chrai.c +#ifdef NONMATCHING +extern char * D_800529D0; +extern char * D_800529D4; + +void prepare_ammo_type_collection_text(u8 *finaltext, AMMOTYPES ammotype, u32 quantity) +{ + *finaltext = 0; + if (j_text_trigger != 0) + { + apped_text_ammotype(finaltext,ammotype,quantity); + if (get_num_players() < 3) + { + append_text_picked_up(finaltext, ammotype, quantity); + } + string_append_from_obseg_textbank(finaltext, (char *)D_800529D0); + return; + } + if (get_num_players() < 3) + { + append_text_picked_up(finaltext, ammotype, quantity); + append_text_ammo_amount_word(finaltext, ammotype, quantity); + } + apped_text_ammotype(finaltext, ammotype, quantity); + string_append_from_obseg_textbank(finaltext, (char *)D_800529D4); +} +#else +GLOBAL_ASM( +.late_rodata + +.text +glabel prepare_ammo_type_collection_text +/* 084450 7F04F920 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 084454 7F04F924 AFBF0024 */ sw $ra, 0x24($sp) +/* 084458 7F04F928 AFB20020 */ sw $s2, 0x20($sp) +/* 08445C 7F04F92C AFB1001C */ sw $s1, 0x1c($sp) +/* 084460 7F04F930 AFB00018 */ sw $s0, 0x18($sp) +/* 084464 7F04F934 A0800000 */ sb $zero, ($a0) +/* 084468 7F04F938 3C0E8005 */ lui $t6, %hi(j_text_trigger) +/* 08446C 7F04F93C 8DCE84D0 */ lw $t6, %lo(j_text_trigger)($t6) +/* 084470 7F04F940 00808025 */ move $s0, $a0 +/* 084474 7F04F944 00A08825 */ move $s1, $a1 +/* 084478 7F04F948 11C00011 */ beqz $t6, .L7F04F990 +/* 08447C 7F04F94C 00C09025 */ move $s2, $a2 +/* 084480 7F04F950 0FC13D03 */ jal apped_text_ammotype +/* 084484 7F04F954 00000000 */ nop +/* 084488 7F04F958 0FC26919 */ jal get_num_players +/* 08448C 7F04F95C 00000000 */ nop +/* 084490 7F04F960 28410003 */ slti $at, $v0, 3 +/* 084494 7F04F964 10200004 */ beqz $at, .L7F04F978 +/* 084498 7F04F968 02002025 */ move $a0, $s0 +/* 08449C 7F04F96C 02202825 */ move $a1, $s1 +/* 0844A0 7F04F970 0FC13CAD */ jal append_text_picked_up +/* 0844A4 7F04F974 02403025 */ move $a2, $s2 +.L7F04F978: +/* 0844A8 7F04F978 3C058005 */ lui $a1, %hi(D_800529D0) +/* 0844AC 7F04F97C 24A529D0 */ addiu $a1, %lo(D_800529D0) # addiu $a1, $a1, 0x29d0 +/* 0844B0 7F04F980 0C0029FF */ jal string_append_from_obseg_textbank +/* 0844B4 7F04F984 02002025 */ move $a0, $s0 +/* 0844B8 7F04F988 10000016 */ b .L7F04F9E4 +/* 0844BC 7F04F98C 8FBF0024 */ lw $ra, 0x24($sp) +.L7F04F990: +/* 0844C0 7F04F990 0FC26919 */ jal get_num_players +/* 0844C4 7F04F994 00000000 */ nop +/* 0844C8 7F04F998 28410003 */ slti $at, $v0, 3 +/* 0844CC 7F04F99C 10200008 */ beqz $at, .L7F04F9C0 +/* 0844D0 7F04F9A0 02002025 */ move $a0, $s0 +/* 0844D4 7F04F9A4 02202825 */ move $a1, $s1 +/* 0844D8 7F04F9A8 0FC13CAD */ jal append_text_picked_up +/* 0844DC 7F04F9AC 02403025 */ move $a2, $s2 +/* 0844E0 7F04F9B0 02002025 */ move $a0, $s0 +/* 0844E4 7F04F9B4 02202825 */ move $a1, $s1 +/* 0844E8 7F04F9B8 0FC13CBB */ jal append_text_ammo_amount_word +/* 0844EC 7F04F9BC 02403025 */ move $a2, $s2 +.L7F04F9C0: +/* 0844F0 7F04F9C0 02002025 */ move $a0, $s0 +/* 0844F4 7F04F9C4 02202825 */ move $a1, $s1 +/* 0844F8 7F04F9C8 0FC13D03 */ jal apped_text_ammotype +/* 0844FC 7F04F9CC 02403025 */ move $a2, $s2 +/* 084500 7F04F9D0 3C058005 */ lui $a1, %hi(D_800529D4) +/* 084504 7F04F9D4 24A529D4 */ addiu $a1, %lo(D_800529D4) # addiu $a1, $a1, 0x29d4 +/* 084508 7F04F9D8 0C0029FF */ jal string_append_from_obseg_textbank +/* 08450C 7F04F9DC 02002025 */ move $a0, $s0 +/* 084510 7F04F9E0 8FBF0024 */ lw $ra, 0x24($sp) +.L7F04F9E4: +/* 084514 7F04F9E4 8FB00018 */ lw $s0, 0x18($sp) +/* 084518 7F04F9E8 8FB1001C */ lw $s1, 0x1c($sp) +/* 08451C 7F04F9EC 8FB20020 */ lw $s2, 0x20($sp) +/* 084520 7F04F9F0 03E00008 */ jr $ra +/* 084524 7F04F9F4 27BD0028 */ addiu $sp, $sp, 0x28 +) +#endif + + + + + +#ifdef NONMATCHING +void display_text_when_ammo_collected(void) { + +} +#else +#ifdef VERSION_US +GLOBAL_ASM( +.late_rodata + + +.text +glabel display_text_when_ammo_collected +/* 084528 7F04F9F8 27BDFF80 */ addiu $sp, $sp, -0x80 +/* 08452C 7F04F9FC AFA40080 */ sw $a0, 0x80($sp) +/* 084530 7F04FA00 3C0E8005 */ lui $t6, %hi(D_800529D8) +/* 084534 7F04FA04 27A4001C */ addiu $a0, $sp, 0x1c +/* 084538 7F04FA08 00A03025 */ move $a2, $a1 +/* 08453C 7F04FA0C 25CE29D8 */ addiu $t6, %lo(D_800529D8) # addiu $t6, $t6, 0x29d8 +/* 084540 7F04FA10 8FA50080 */ lw $a1, 0x80($sp) +/* 084544 7F04FA14 AFBF0014 */ sw $ra, 0x14($sp) +/* 084548 7F04FA18 25D90060 */ addiu $t9, $t6, 0x60 +/* 08454C 7F04FA1C 00804025 */ move $t0, $a0 +.L7F04FA20: +/* 084550 7F04FA20 8DC10000 */ lw $at, ($t6) +/* 084554 7F04FA24 25CE000C */ addiu $t6, $t6, 0xc +/* 084558 7F04FA28 2508000C */ addiu $t0, $t0, 0xc +/* 08455C 7F04FA2C AD01FFF4 */ sw $at, -0xc($t0) +/* 084560 7F04FA30 8DC1FFF8 */ lw $at, -8($t6) +/* 084564 7F04FA34 AD01FFF8 */ sw $at, -8($t0) +/* 084568 7F04FA38 8DC1FFFC */ lw $at, -4($t6) +/* 08456C 7F04FA3C 15D9FFF8 */ bne $t6, $t9, .L7F04FA20 +/* 084570 7F04FA40 AD01FFFC */ sw $at, -4($t0) +/* 084574 7F04FA44 8DC10000 */ lw $at, ($t6) +/* 084578 7F04FA48 0FC13E48 */ jal prepare_ammo_type_collection_text +/* 08457C 7F04FA4C AD010000 */ sw $at, ($t0) +/* 084580 7F04FA50 0FC228F2 */ jal display_string_in_lower_left_corner +/* 084584 7F04FA54 27A4001C */ addiu $a0, $sp, 0x1c +/* 084588 7F04FA58 8FBF0014 */ lw $ra, 0x14($sp) +/* 08458C 7F04FA5C 27BD0080 */ addiu $sp, $sp, 0x80 +/* 084590 7F04FA60 03E00008 */ jr $ra +/* 084594 7F04FA64 00000000 */ nop +) +#endif +#ifdef VERSION_JP +GLOBAL_ASM( +.late_rodata + + +.text +glabel display_text_when_ammo_collected +/* 084528 7F04F9F8 27BDFF80 */ addiu $sp, $sp, -0x80 +/* 08452C 7F04F9FC AFA40080 */ sw $a0, 0x80($sp) +/* 084530 7F04FA00 3C0E8005 */ lui $t6, %hi(D_800529D8) +/* 084534 7F04FA04 27A4001C */ addiu $a0, $sp, 0x1c +/* 084538 7F04FA08 00A03025 */ move $a2, $a1 +/* 08453C 7F04FA0C 25CE29D8 */ addiu $t6, %lo(D_800529D8) # addiu $t6, $t6, 0x29d8 +/* 084540 7F04FA10 8FA50080 */ lw $a1, 0x80($sp) +/* 084544 7F04FA14 AFBF0014 */ sw $ra, 0x14($sp) +/* 084548 7F04FA18 25D90060 */ addiu $t9, $t6, 0x60 +/* 08454C 7F04FA1C 00804025 */ move $t0, $a0 +.L7F04FA20: +/* 084550 7F04FA20 8DC10000 */ lw $at, ($t6) +/* 084554 7F04FA24 25CE000C */ addiu $t6, $t6, 0xc +/* 084558 7F04FA28 2508000C */ addiu $t0, $t0, 0xc +/* 08455C 7F04FA2C AD01FFF4 */ sw $at, -0xc($t0) +/* 084560 7F04FA30 8DC1FFF8 */ lw $at, -8($t6) +/* 084564 7F04FA34 AD01FFF8 */ sw $at, -8($t0) +/* 084568 7F04FA38 8DC1FFFC */ lw $at, -4($t6) +/* 08456C 7F04FA3C 15D9FFF8 */ bne $t6, $t9, .L7F04FA20 +/* 084570 7F04FA40 AD01FFFC */ sw $at, -4($t0) +/* 084574 7F04FA44 8DC10000 */ lw $at, ($t6) +/* 084578 7F04FA48 0FC13E48 */ jal prepare_ammo_type_collection_text +/* 08457C 7F04FA4C AD010000 */ sw $at, ($t0) +/* 084580 7F04FA50 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 084584 7F04FA54 27A4001C */ addiu $a0, $sp, 0x1c +/* 084588 7F04FA58 8FBF0014 */ lw $ra, 0x14($sp) +/* 08458C 7F04FA5C 27BD0080 */ addiu $sp, $sp, 0x80 +/* 084590 7F04FA60 03E00008 */ jr $ra +/* 084594 7F04FA64 00000000 */ nop +) +#endif +#endif + + + + +void add_ammo_to_inventory(AMMOTYPES ammotype,int amount,int doplaysound,int dodisplaytext) +{ + int curammo; + int maxammo; + + if (0 < amount) { + curammo = check_cur_player_ammo_amount_in_inventory(ammotype); + maxammo = get_max_ammo_for_type(ammotype); + if (curammo < maxammo) { + curammo = check_cur_player_ammo_amount_in_inventory(ammotype); + give_cur_player_ammo(ammotype,curammo + amount); + #ifdef VERSION_JP + } + #endif + if (dodisplaytext != 0) { + display_text_when_ammo_collected(ammotype,amount); + } + if (doplaysound != 0) { + set_sound_effect_for_ammo_collection(ammotype); + } + if (ammotype == AMMO_GRENADE) { + add_item_to_inventory(ITEM_GRENADE); + } + else if (ammotype == AMMO_REMOTEMINE) { + add_item_to_inventory(ITEM_REMOTEMINE); + add_item_to_inventory(ITEM_TRIGGER); + } + else if (ammotype == AMMO_PROXMINE) { + add_item_to_inventory(ITEM_PROXIMITYMINE); + } + else if (ammotype == AMMO_TIMEDMINE) { + add_item_to_inventory(ITEM_TIMEDMINE); + } + else if (ammotype == AMMO_KNIFE) { + add_item_to_inventory(ITEM_THROWKNIFE); + } + else if (ammotype == AMMO_BOMBCASE) { + add_item_to_inventory(ITEM_BOMBCASE); + } + else if (ammotype == AMMO_BUG) { + add_item_to_inventory(ITEM_BUG); + } + else if (ammotype == AMMO_MICRO_CAMERA) { + add_item_to_inventory(ITEM_MICROCAMERA); + } + else if (ammotype == AMMO_GEKEY) { + add_item_to_inventory(ITEM_GOLDENEYEKEY); + } + else if (ammotype == AMMO_TOKEN) { + add_item_to_inventory(ITEM_TOKEN); + } + else if (ammotype == AMMO_PLASTIQUE) { + add_item_to_inventory(ITEM_PLASTIQUE); + } + #ifndef VERSION_JP + } + #endif + } +} + + + + +#ifdef NONMATCHING +void get_ammo_in_magazine(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:80053060*/ +glabel ammo_collected_from_magazine +.word magazine_has_10_rounds_type1 +.word magazine_has_10_rounds_type2 +.word magazine_has_10_rounds_type3 +.word magazine_has_5_rounds_type4 +.word magazine_has_default_ammo_rounds +.word magazine_has_default_ammo_rounds +.word magazine_has_default_ammo_rounds +.word magazine_has_default_ammo_rounds +.word magazine_has_default_ammo_rounds +.word magazine_has_default_ammo_rounds +.word magazine_has_default_ammo_rounds +.word magazine_has_5_rounds_typeC +.word magazine_has_3_rounds_typeD +.word magazine_has_4_rounds_typeE + +.text +glabel get_ammo_in_magazine +/* 08476C 7F04FC3C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 084770 7F04FC40 AFBF0014 */ sw $ra, 0x14($sp) +/* 084774 7F04FC44 8C8E0080 */ lw $t6, 0x80($a0) +/* 084778 7F04FC48 24030001 */ li $v1, 1 +/* 08477C 7F04FC4C 25CFFFFF */ addiu $t7, $t6, -1 +/* 084780 7F04FC50 2DE1000E */ sltiu $at, $t7, 0xe +/* 084784 7F04FC54 10200013 */ beqz $at, .L7F04FCA4 +/* 084788 7F04FC58 000F7880 */ sll $t7, $t7, 2 +/* 08478C 7F04FC5C 3C018005 */ lui $at, %hi(ammo_collected_from_magazine) +/* 084790 7F04FC60 002F0821 */ addu $at, $at, $t7 +/* 084794 7F04FC64 8C2F3060 */ lw $t7, %lo(ammo_collected_from_magazine)($at) +/* 084798 7F04FC68 01E00008 */ jr $t7 +/* 08479C 7F04FC6C 00000000 */ nop +magazine_has_10_rounds_type1: +/* 0847A0 7F04FC70 1000000C */ b .L7F04FCA4 +/* 0847A4 7F04FC74 2403000A */ li $v1, 10 +magazine_has_10_rounds_type2: +/* 0847A8 7F04FC78 1000000A */ b .L7F04FCA4 +/* 0847AC 7F04FC7C 2403000A */ li $v1, 10 +magazine_has_10_rounds_type3: +/* 0847B0 7F04FC80 10000008 */ b .L7F04FCA4 +/* 0847B4 7F04FC84 2403000A */ li $v1, 10 +magazine_has_5_rounds_type4: +/* 0847B8 7F04FC88 10000006 */ b .L7F04FCA4 +/* 0847BC 7F04FC8C 24030005 */ li $v1, 5 +magazine_has_5_rounds_typeC: +/* 0847C0 7F04FC90 10000004 */ b .L7F04FCA4 +/* 0847C4 7F04FC94 24030005 */ li $v1, 5 +magazine_has_3_rounds_typeD: +/* 0847C8 7F04FC98 10000002 */ b .L7F04FCA4 +/* 0847CC 7F04FC9C 24030003 */ li $v1, 3 +magazine_has_4_rounds_typeE: +/* 0847D0 7F04FCA0 24030004 */ li $v1, 4 +magazine_has_default_ammo_rounds: +.L7F04FCA4: +/* 0847D4 7F04FCA4 28610002 */ slti $at, $v1, 2 +/* 0847D8 7F04FCA8 5420000F */ bnezl $at, .L7F04FCE8 +/* 0847DC 7F04FCAC 8FBF0014 */ lw $ra, 0x14($sp) +/* 0847E0 7F04FCB0 0FC26919 */ jal get_num_players +/* 0847E4 7F04FCB4 AFA3001C */ sw $v1, 0x1c($sp) +/* 0847E8 7F04FCB8 24010001 */ li $at, 1 +/* 0847EC 7F04FCBC 14410009 */ bne $v0, $at, .L7F04FCE4 +/* 0847F0 7F04FCC0 8FA3001C */ lw $v1, 0x1c($sp) +/* 0847F4 7F04FCC4 44832000 */ mtc1 $v1, $f4 +/* 0847F8 7F04FCC8 3C018003 */ lui $at, %hi(solo_ammo_multiplier) +/* 0847FC 7F04FCCC C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) +/* 084800 7F04FCD0 468021A0 */ cvt.s.w $f6, $f4 +/* 084804 7F04FCD4 46083282 */ mul.s $f10, $f6, $f8 +/* 084808 7F04FCD8 4600540D */ trunc.w.s $f16, $f10 +/* 08480C 7F04FCDC 44038000 */ mfc1 $v1, $f16 +/* 084810 7F04FCE0 00000000 */ nop +.L7F04FCE4: +/* 084814 7F04FCE4 8FBF0014 */ lw $ra, 0x14($sp) +.L7F04FCE8: +/* 084818 7F04FCE8 27BD0020 */ addiu $sp, $sp, 0x20 +/* 08481C 7F04FCEC 00601025 */ move $v0, $v1 +/* 084820 7F04FCF0 03E00008 */ jr $ra +/* 084824 7F04FCF4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void ammo_collected_from_weapon(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:80053098*/ +glabel ammo_in_weapon +.word weapon_has_10_rounds_type1 +.word weapon_has_10_rounds_type2 +.word weapon_has_10_rounds_type3 +.word weapon_has_5_rounds_type4 +.word weapon_has_default_ammo +.word weapon_has_default_ammo +.word weapon_has_default_ammo +.word weapon_has_default_ammo +.word weapon_has_default_ammo +.word weapon_has_default_ammo +.word weapon_has_3_rounds_typeB +.word weapon_has_5_rounds_typeC +.word weapon_has_3_rounds_typeD +.word weapon_has_4_rounds_typeE + +.text +glabel ammo_collected_from_weapon +/* 084828 7F04FCF8 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 08482C 7F04FCFC AFBF0014 */ sw $ra, 0x14($sp) +/* 084830 7F04FD00 AFA40020 */ sw $a0, 0x20($sp) +/* 084834 7F04FD04 0FC1A50B */ jal get_ammo_type_for_weapon +/* 084838 7F04FD08 80840080 */ lb $a0, 0x80($a0) +/* 08483C 7F04FD0C 8FAF0020 */ lw $t7, 0x20($sp) +/* 084840 7F04FD10 2448FFFF */ addiu $t0, $v0, -1 +/* 084844 7F04FD14 24030001 */ li $v1, 1 +/* 084848 7F04FD18 8DF80008 */ lw $t8, 8($t7) +/* 08484C 7F04FD1C 2D01000E */ sltiu $at, $t0, 0xe +/* 084850 7F04FD20 0018C840 */ sll $t9, $t8, 1 +/* 084854 7F04FD24 07210003 */ bgez $t9, .L7F04FD34 +/* 084858 7F04FD28 00000000 */ nop +/* 08485C 7F04FD2C 10000028 */ b .L7F04FDD0 +/* 084860 7F04FD30 00001025 */ move $v0, $zero +.L7F04FD34: +/* 084864 7F04FD34 10200015 */ beqz $at, .L7F04FD8C +/* 084868 7F04FD38 00084080 */ sll $t0, $t0, 2 +/* 08486C 7F04FD3C 3C018005 */ lui $at, %hi(ammo_in_weapon) +/* 084870 7F04FD40 00280821 */ addu $at, $at, $t0 +/* 084874 7F04FD44 8C283098 */ lw $t0, %lo(ammo_in_weapon)($at) +/* 084878 7F04FD48 01000008 */ jr $t0 +/* 08487C 7F04FD4C 00000000 */ nop +weapon_has_10_rounds_type1: +/* 084880 7F04FD50 1000000E */ b .L7F04FD8C +/* 084884 7F04FD54 2403000A */ li $v1, 10 +weapon_has_10_rounds_type2: +/* 084888 7F04FD58 1000000C */ b .L7F04FD8C +/* 08488C 7F04FD5C 2403000A */ li $v1, 10 +weapon_has_10_rounds_type3: +/* 084890 7F04FD60 1000000A */ b .L7F04FD8C +/* 084894 7F04FD64 2403000A */ li $v1, 10 +weapon_has_5_rounds_type4: +/* 084898 7F04FD68 10000008 */ b .L7F04FD8C +/* 08489C 7F04FD6C 24030005 */ li $v1, 5 +weapon_has_5_rounds_typeC: +/* 0848A0 7F04FD70 10000006 */ b .L7F04FD8C +/* 0848A4 7F04FD74 24030005 */ li $v1, 5 +weapon_has_3_rounds_typeD: +/* 0848A8 7F04FD78 10000004 */ b .L7F04FD8C +/* 0848AC 7F04FD7C 24030003 */ li $v1, 3 +weapon_has_4_rounds_typeE: +/* 0848B0 7F04FD80 10000002 */ b .L7F04FD8C +/* 0848B4 7F04FD84 24030004 */ li $v1, 4 +weapon_has_3_rounds_typeB: +/* 0848B8 7F04FD88 24030003 */ li $v1, 3 +weapon_has_default_ammo: +.L7F04FD8C: +/* 0848BC 7F04FD8C 28610002 */ slti $at, $v1, 2 +/* 0848C0 7F04FD90 5420000F */ bnezl $at, .L7F04FDD0 +/* 0848C4 7F04FD94 00601025 */ move $v0, $v1 +/* 0848C8 7F04FD98 0FC26919 */ jal get_num_players +/* 0848CC 7F04FD9C AFA30018 */ sw $v1, 0x18($sp) +/* 0848D0 7F04FDA0 24010001 */ li $at, 1 +/* 0848D4 7F04FDA4 14410009 */ bne $v0, $at, .L7F04FDCC +/* 0848D8 7F04FDA8 8FA30018 */ lw $v1, 0x18($sp) +/* 0848DC 7F04FDAC 44832000 */ mtc1 $v1, $f4 +/* 0848E0 7F04FDB0 3C018003 */ lui $at, %hi(solo_ammo_multiplier) +/* 0848E4 7F04FDB4 C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) +/* 0848E8 7F04FDB8 468021A0 */ cvt.s.w $f6, $f4 +/* 0848EC 7F04FDBC 46083282 */ mul.s $f10, $f6, $f8 +/* 0848F0 7F04FDC0 4600540D */ trunc.w.s $f16, $f10 +/* 0848F4 7F04FDC4 44038000 */ mfc1 $v1, $f16 +/* 0848F8 7F04FDC8 00000000 */ nop +.L7F04FDCC: +/* 0848FC 7F04FDCC 00601025 */ move $v0, $v1 +.L7F04FDD0: +/* 084900 7F04FDD0 8FBF0014 */ lw $ra, 0x14($sp) +/* 084904 7F04FDD4 27BD0020 */ addiu $sp, $sp, 0x20 +/* 084908 7F04FDD8 03E00008 */ jr $ra +/* 08490C 7F04FDDC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void generate_language_specific_text_for_weapon(char *finalstring,ITEM_IDS itemtype) +{ + bool morethan2players; + u32 numplayers; + AMMOTYPES ammotype; + char *textfiletext; + size_t strlen; + + morethan2players = false; + if (j_text_trigger == 0) { + numplayers = get_num_players(); + if ((int)numplayers < 3) { + textfiletext = get_textptr_for_textID(0xa400); + textpointer_load_parse_something(finalstring,textfiletext); + } + } + else { + textpointer_load_parse_something(finalstring,""); + numplayers = get_num_players(); + if (2 < (int)numplayers) { + morethan2players = true; + } + } + switch(itemtype) { + case ITEM_KNIFE: + textfiletext = get_textptr_for_textID(0xa420); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_THROWKNIFE: + case ITEM_GRENADE: + case ITEM_TIMEDMINE: + case ITEM_PROXIMITYMINE: + case ITEM_REMOTEMINE: + case ITEM_BOMBCASE: + case ITEM_PLASTIQUE: + case ITEM_BUG: + case ITEM_MICROCAMERA: + case ITEM_GOLDENEYEKEY: + case ITEM_56: + case ITEM_57: + case ITEM_TOKEN: + ammotype = get_ammo_type_for_weapon(itemtype); + prepare_ammo_type_collection_text((u8 *)finalstring,ammotype,1); + return; + case ITEM_WPPK: + textfiletext = get_textptr_for_textID(0xa421); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_WPPKSIL: + textfiletext = get_textptr_for_textID(0xa422); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_TT33: + textfiletext = get_textptr_for_textID(0xa423); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_SKORPION: + textfiletext = get_textptr_for_textID(0xa424); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_AK47: + textfiletext = get_textptr_for_textID(0xa425); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_UZI: + textfiletext = get_textptr_for_textID(0xa426); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_MP5K: + textfiletext = get_textptr_for_textID(0xa427); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_MP5KSIL: + textfiletext = get_textptr_for_textID(0xa428); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_SPECTRE: + textfiletext = get_textptr_for_textID(0xa429); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_M16: + textfiletext = get_textptr_for_textID(0xa42a); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_FNP90: + textfiletext = get_textptr_for_textID(0xa42b); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_SHOTGUN: + textfiletext = get_textptr_for_textID(0xa42c); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_AUTOSHOT: + textfiletext = get_textptr_for_textID(0xa42d); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_SNIPERRIFLE: + textfiletext = get_textptr_for_textID(0xa42e); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_RUGER: + textfiletext = get_textptr_for_textID(0xa431); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_GOLDENGUN: + textfiletext = get_textptr_for_textID(0xa432); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_SILVERWPPK: + textfiletext = get_textptr_for_textID(0xa436); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_GOLDWPPK: + textfiletext = get_textptr_for_textID(0xa437); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_LASER: + textfiletext = get_textptr_for_textID(0xa433); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + default: + textfiletext = get_textptr_for_textID(0xa43b); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_GRENADELAUNCH: + textfiletext = get_textptr_for_textID(0xa42f); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_ROCKETLAUNCH: + textfiletext = get_textptr_for_textID(0xa430); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_FLAREPISTOL: + textfiletext = get_textptr_for_textID(0xa434); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_PITONGUN: + textfiletext = get_textptr_for_textID(0xa435); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_KEYCARD: + textfiletext = get_textptr_for_textID(0xa438); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_KEYYALE: + textfiletext = get_textptr_for_textID(0xa439); + string_append_from_obseg_textbank(finalstring,textfiletext); + break; + case ITEM_KEYBOLT: + textfiletext = get_textptr_for_textID(0xa43a); + string_append_from_obseg_textbank(finalstring,textfiletext); + } + if ((j_text_trigger != 0) && (!morethan2players)) { + strlen = strlen(finalstring); + if (finalstring[strlen - 1] == '\n') { + strlen = strlen(finalstring); + finalstring[strlen - 1] = '\0'; + } + textfiletext = get_textptr_for_textID(0xa400); + string_append_from_obseg_textbank(finalstring,textfiletext); + string_append_from_obseg_textbank(finalstring,"\n"); + } + return; +} +#else +GLOBAL_ASM( +.late_rodata +/*D:800530D0*/ +glabel jpt_800530D0 +.word weapon_collect_msg_a_hunting_knife +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_a_pp7 +.word weapon_collect_msg_a_silenced_pp7 +.word weapon_collect_msg_a_dd44 +.word weapon_collect_msg_a_klobb +.word weapon_collect_msg_a_kf7 +.word weapon_collect_msg_a_zmg +.word weapon_collect_msg_a_d5k +.word weapon_collect_msg_a_silenced_d5k +.word weapon_collect_msg_a_phantom +.word weapon_collect_msg_a_ar33 +.word weapon_collect_msg_a_rcp90 +.word weapon_collect_msg_a_shotgun +.word weapon_collect_msg_an_auto_shotgun +.word weapon_collect_msg_a_sniper +.word weapon_collect_msg_a_cougar_magnum +.word weapon_collect_msg_a_golden_gun +.word weapon_collect_msg_a_silver_pp7 +.word weapon_collect_msg_a_gold_pp7 +.word weapon_collect_msg_a_moonraker_laser +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_grenade_launcher +.word weapon_collect_msg_a_rocket_launcher +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_a_flare_pistol +.word weapon_collect_msg_a_piton_gun +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_keycard +.word weapon_collect_msg_a_yale_key +.word weapon_collect_msg_a_bolt_key +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_a_new_weapon +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_BLANK +.word weapon_collect_msg_BLANK + +.text +glabel generate_language_specific_text_for_weapon +/* 084910 7F04FDE0 3C0E8005 */ lui $t6, %hi(j_text_trigger) +/* 084914 7F04FDE4 8DCE84D0 */ lw $t6, %lo(j_text_trigger)($t6) +/* 084918 7F04FDE8 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 08491C 7F04FDEC AFB00018 */ sw $s0, 0x18($sp) +/* 084920 7F04FDF0 00808025 */ move $s0, $a0 +/* 084924 7F04FDF4 AFBF001C */ sw $ra, 0x1c($sp) +/* 084928 7F04FDF8 AFA5002C */ sw $a1, 0x2c($sp) +/* 08492C 7F04FDFC 11C0000B */ beqz $t6, .L7F04FE2C +/* 084930 7F04FE00 AFA00024 */ sw $zero, 0x24($sp) +/* 084934 7F04FE04 3C058005 */ lui $a1, %hi(D_80052A3C) +/* 084938 7F04FE08 0C0029DC */ jal textpointer_load_parse_something +/* 08493C 7F04FE0C 24A52A3C */ addiu $a1, %lo(D_80052A3C) # addiu $a1, $a1, 0x2a3c +/* 084940 7F04FE10 0FC26919 */ jal get_num_players +/* 084944 7F04FE14 00000000 */ nop +/* 084948 7F04FE18 28410003 */ slti $at, $v0, 3 +/* 08494C 7F04FE1C 1420000D */ bnez $at, .L7F04FE54 +/* 084950 7F04FE20 240F0001 */ li $t7, 1 +/* 084954 7F04FE24 1000000B */ b .L7F04FE54 +/* 084958 7F04FE28 AFAF0024 */ sw $t7, 0x24($sp) +.L7F04FE2C: +/* 08495C 7F04FE2C 0FC26919 */ jal get_num_players +/* 084960 7F04FE30 00000000 */ nop +/* 084964 7F04FE34 28410003 */ slti $at, $v0, 3 +/* 084968 7F04FE38 50200007 */ beql $at, $zero, .L7F04FE58 +/* 08496C 7F04FE3C 8FB8002C */ lw $t8, 0x2c($sp) +/* 084970 7F04FE40 0FC30776 */ jal get_textptr_for_textID +/* 084974 7F04FE44 3404A400 */ li $a0, 41984 +/* 084978 7F04FE48 02002025 */ move $a0, $s0 +/* 08497C 7F04FE4C 0C0029DC */ jal textpointer_load_parse_something +/* 084980 7F04FE50 00402825 */ move $a1, $v0 +.L7F04FE54: +/* 084984 7F04FE54 8FB8002C */ lw $t8, 0x2c($sp) +.L7F04FE58: +/* 084988 7F04FE58 2719FFFE */ addiu $t9, $t8, -2 +/* 08498C 7F04FE5C 2F210057 */ sltiu $at, $t9, 0x57 +/* 084990 7F04FE60 102000CB */ beqz $at, .L7F050190 +/* 084994 7F04FE64 0019C880 */ sll $t9, $t9, 2 +/* 084998 7F04FE68 3C018005 */ lui $at, %hi(jpt_800530D0) +/* 08499C 7F04FE6C 00390821 */ addu $at, $at, $t9 +/* 0849A0 7F04FE70 8C3930D0 */ lw $t9, %lo(jpt_800530D0)($at) +/* 0849A4 7F04FE74 03200008 */ jr $t9 +/* 0849A8 7F04FE78 00000000 */ nop +weapon_collect_msg_BLANK: +/* 0849AC 7F04FE7C 0FC1A50B */ jal get_ammo_type_for_weapon +/* 0849B0 7F04FE80 8FA4002C */ lw $a0, 0x2c($sp) +/* 0849B4 7F04FE84 02002025 */ move $a0, $s0 +/* 0849B8 7F04FE88 00402825 */ move $a1, $v0 +/* 0849BC 7F04FE8C 0FC13E48 */ jal prepare_ammo_type_collection_text +/* 0849C0 7F04FE90 24060001 */ li $a2, 1 +/* 0849C4 7F04FE94 100000DF */ b .L7F050214 +/* 0849C8 7F04FE98 8FBF001C */ lw $ra, 0x1c($sp) +weapon_collect_msg_a_hunting_knife: +/* 0849CC 7F04FE9C 0FC30776 */ jal get_textptr_for_textID +/* 0849D0 7F04FEA0 3404A420 */ li $a0, 42016 +/* 0849D4 7F04FEA4 02002025 */ move $a0, $s0 +/* 0849D8 7F04FEA8 0C0029FF */ jal string_append_from_obseg_textbank +/* 0849DC 7F04FEAC 00402825 */ move $a1, $v0 +/* 0849E0 7F04FEB0 100000BC */ b .L7F0501A4 +/* 0849E4 7F04FEB4 00000000 */ nop +weapon_collect_msg_a_pp7: +/* 0849E8 7F04FEB8 0FC30776 */ jal get_textptr_for_textID +/* 0849EC 7F04FEBC 3404A421 */ li $a0, 42017 +/* 0849F0 7F04FEC0 02002025 */ move $a0, $s0 +/* 0849F4 7F04FEC4 0C0029FF */ jal string_append_from_obseg_textbank +/* 0849F8 7F04FEC8 00402825 */ move $a1, $v0 +/* 0849FC 7F04FECC 100000B5 */ b .L7F0501A4 +/* 084A00 7F04FED0 00000000 */ nop +weapon_collect_msg_a_silenced_pp7: +/* 084A04 7F04FED4 0FC30776 */ jal get_textptr_for_textID +/* 084A08 7F04FED8 3404A422 */ li $a0, 42018 +/* 084A0C 7F04FEDC 02002025 */ move $a0, $s0 +/* 084A10 7F04FEE0 0C0029FF */ jal string_append_from_obseg_textbank +/* 084A14 7F04FEE4 00402825 */ move $a1, $v0 +/* 084A18 7F04FEE8 100000AE */ b .L7F0501A4 +/* 084A1C 7F04FEEC 00000000 */ nop +weapon_collect_msg_a_dd44: +/* 084A20 7F04FEF0 0FC30776 */ jal get_textptr_for_textID +/* 084A24 7F04FEF4 3404A423 */ li $a0, 42019 +/* 084A28 7F04FEF8 02002025 */ move $a0, $s0 +/* 084A2C 7F04FEFC 0C0029FF */ jal string_append_from_obseg_textbank +/* 084A30 7F04FF00 00402825 */ move $a1, $v0 +/* 084A34 7F04FF04 100000A7 */ b .L7F0501A4 +/* 084A38 7F04FF08 00000000 */ nop +weapon_collect_msg_a_klobb: +/* 084A3C 7F04FF0C 0FC30776 */ jal get_textptr_for_textID +/* 084A40 7F04FF10 3404A424 */ li $a0, 42020 +/* 084A44 7F04FF14 02002025 */ move $a0, $s0 +/* 084A48 7F04FF18 0C0029FF */ jal string_append_from_obseg_textbank +/* 084A4C 7F04FF1C 00402825 */ move $a1, $v0 +/* 084A50 7F04FF20 100000A0 */ b .L7F0501A4 +/* 084A54 7F04FF24 00000000 */ nop +weapon_collect_msg_a_kf7: +/* 084A58 7F04FF28 0FC30776 */ jal get_textptr_for_textID +/* 084A5C 7F04FF2C 3404A425 */ li $a0, 42021 +/* 084A60 7F04FF30 02002025 */ move $a0, $s0 +/* 084A64 7F04FF34 0C0029FF */ jal string_append_from_obseg_textbank +/* 084A68 7F04FF38 00402825 */ move $a1, $v0 +/* 084A6C 7F04FF3C 10000099 */ b .L7F0501A4 +/* 084A70 7F04FF40 00000000 */ nop +weapon_collect_msg_a_zmg: +/* 084A74 7F04FF44 0FC30776 */ jal get_textptr_for_textID +/* 084A78 7F04FF48 3404A426 */ li $a0, 42022 +/* 084A7C 7F04FF4C 02002025 */ move $a0, $s0 +/* 084A80 7F04FF50 0C0029FF */ jal string_append_from_obseg_textbank +/* 084A84 7F04FF54 00402825 */ move $a1, $v0 +/* 084A88 7F04FF58 10000092 */ b .L7F0501A4 +/* 084A8C 7F04FF5C 00000000 */ nop +weapon_collect_msg_a_d5k: +/* 084A90 7F04FF60 0FC30776 */ jal get_textptr_for_textID +/* 084A94 7F04FF64 3404A427 */ li $a0, 42023 +/* 084A98 7F04FF68 02002025 */ move $a0, $s0 +/* 084A9C 7F04FF6C 0C0029FF */ jal string_append_from_obseg_textbank +/* 084AA0 7F04FF70 00402825 */ move $a1, $v0 +/* 084AA4 7F04FF74 1000008B */ b .L7F0501A4 +/* 084AA8 7F04FF78 00000000 */ nop +weapon_collect_msg_a_silenced_d5k: +/* 084AAC 7F04FF7C 0FC30776 */ jal get_textptr_for_textID +/* 084AB0 7F04FF80 3404A428 */ li $a0, 42024 +/* 084AB4 7F04FF84 02002025 */ move $a0, $s0 +/* 084AB8 7F04FF88 0C0029FF */ jal string_append_from_obseg_textbank +/* 084ABC 7F04FF8C 00402825 */ move $a1, $v0 +/* 084AC0 7F04FF90 10000084 */ b .L7F0501A4 +/* 084AC4 7F04FF94 00000000 */ nop +weapon_collect_msg_a_phantom: +/* 084AC8 7F04FF98 0FC30776 */ jal get_textptr_for_textID +/* 084ACC 7F04FF9C 3404A429 */ li $a0, 42025 +/* 084AD0 7F04FFA0 02002025 */ move $a0, $s0 +/* 084AD4 7F04FFA4 0C0029FF */ jal string_append_from_obseg_textbank +/* 084AD8 7F04FFA8 00402825 */ move $a1, $v0 +/* 084ADC 7F04FFAC 1000007D */ b .L7F0501A4 +/* 084AE0 7F04FFB0 00000000 */ nop +weapon_collect_msg_a_ar33: +/* 084AE4 7F04FFB4 0FC30776 */ jal get_textptr_for_textID +/* 084AE8 7F04FFB8 3404A42A */ li $a0, 42026 +/* 084AEC 7F04FFBC 02002025 */ move $a0, $s0 +/* 084AF0 7F04FFC0 0C0029FF */ jal string_append_from_obseg_textbank +/* 084AF4 7F04FFC4 00402825 */ move $a1, $v0 +/* 084AF8 7F04FFC8 10000076 */ b .L7F0501A4 +/* 084AFC 7F04FFCC 00000000 */ nop +weapon_collect_msg_a_rcp90: +/* 084B00 7F04FFD0 0FC30776 */ jal get_textptr_for_textID +/* 084B04 7F04FFD4 3404A42B */ li $a0, 42027 +/* 084B08 7F04FFD8 02002025 */ move $a0, $s0 +/* 084B0C 7F04FFDC 0C0029FF */ jal string_append_from_obseg_textbank +/* 084B10 7F04FFE0 00402825 */ move $a1, $v0 +/* 084B14 7F04FFE4 1000006F */ b .L7F0501A4 +/* 084B18 7F04FFE8 00000000 */ nop +weapon_collect_msg_a_shotgun: +/* 084B1C 7F04FFEC 0FC30776 */ jal get_textptr_for_textID +/* 084B20 7F04FFF0 3404A42C */ li $a0, 42028 +/* 084B24 7F04FFF4 02002025 */ move $a0, $s0 +/* 084B28 7F04FFF8 0C0029FF */ jal string_append_from_obseg_textbank +/* 084B2C 7F04FFFC 00402825 */ move $a1, $v0 +/* 084B30 7F050000 10000068 */ b .L7F0501A4 +/* 084B34 7F050004 00000000 */ nop +weapon_collect_msg_an_auto_shotgun: +/* 084B38 7F050008 0FC30776 */ jal get_textptr_for_textID +/* 084B3C 7F05000C 3404A42D */ li $a0, 42029 +/* 084B40 7F050010 02002025 */ move $a0, $s0 +/* 084B44 7F050014 0C0029FF */ jal string_append_from_obseg_textbank +/* 084B48 7F050018 00402825 */ move $a1, $v0 +/* 084B4C 7F05001C 10000061 */ b .L7F0501A4 +/* 084B50 7F050020 00000000 */ nop +weapon_collect_msg_a_sniper: +/* 084B54 7F050024 0FC30776 */ jal get_textptr_for_textID +/* 084B58 7F050028 3404A42E */ li $a0, 42030 +/* 084B5C 7F05002C 02002025 */ move $a0, $s0 +/* 084B60 7F050030 0C0029FF */ jal string_append_from_obseg_textbank +/* 084B64 7F050034 00402825 */ move $a1, $v0 +/* 084B68 7F050038 1000005A */ b .L7F0501A4 +/* 084B6C 7F05003C 00000000 */ nop +weapon_collect_msg_a_grenade_launcher: +/* 084B70 7F050040 0FC30776 */ jal get_textptr_for_textID +/* 084B74 7F050044 3404A42F */ li $a0, 42031 +/* 084B78 7F050048 02002025 */ move $a0, $s0 +/* 084B7C 7F05004C 0C0029FF */ jal string_append_from_obseg_textbank +/* 084B80 7F050050 00402825 */ move $a1, $v0 +/* 084B84 7F050054 10000053 */ b .L7F0501A4 +/* 084B88 7F050058 00000000 */ nop +weapon_collect_msg_a_rocket_launcher: +/* 084B8C 7F05005C 0FC30776 */ jal get_textptr_for_textID +/* 084B90 7F050060 3404A430 */ li $a0, 42032 +/* 084B94 7F050064 02002025 */ move $a0, $s0 +/* 084B98 7F050068 0C0029FF */ jal string_append_from_obseg_textbank +/* 084B9C 7F05006C 00402825 */ move $a1, $v0 +/* 084BA0 7F050070 1000004C */ b .L7F0501A4 +/* 084BA4 7F050074 00000000 */ nop +weapon_collect_msg_a_cougar_magnum: +/* 084BA8 7F050078 0FC30776 */ jal get_textptr_for_textID +/* 084BAC 7F05007C 3404A431 */ li $a0, 42033 +/* 084BB0 7F050080 02002025 */ move $a0, $s0 +/* 084BB4 7F050084 0C0029FF */ jal string_append_from_obseg_textbank +/* 084BB8 7F050088 00402825 */ move $a1, $v0 +/* 084BBC 7F05008C 10000045 */ b .L7F0501A4 +/* 084BC0 7F050090 00000000 */ nop +weapon_collect_msg_a_golden_gun: +/* 084BC4 7F050094 0FC30776 */ jal get_textptr_for_textID +/* 084BC8 7F050098 3404A432 */ li $a0, 42034 +/* 084BCC 7F05009C 02002025 */ move $a0, $s0 +/* 084BD0 7F0500A0 0C0029FF */ jal string_append_from_obseg_textbank +/* 084BD4 7F0500A4 00402825 */ move $a1, $v0 +/* 084BD8 7F0500A8 1000003E */ b .L7F0501A4 +/* 084BDC 7F0500AC 00000000 */ nop +weapon_collect_msg_a_moonraker_laser: +/* 084BE0 7F0500B0 0FC30776 */ jal get_textptr_for_textID +/* 084BE4 7F0500B4 3404A433 */ li $a0, 42035 +/* 084BE8 7F0500B8 02002025 */ move $a0, $s0 +/* 084BEC 7F0500BC 0C0029FF */ jal string_append_from_obseg_textbank +/* 084BF0 7F0500C0 00402825 */ move $a1, $v0 +/* 084BF4 7F0500C4 10000037 */ b .L7F0501A4 +/* 084BF8 7F0500C8 00000000 */ nop +weapon_collect_msg_a_flare_pistol: +/* 084BFC 7F0500CC 0FC30776 */ jal get_textptr_for_textID +/* 084C00 7F0500D0 3404A434 */ li $a0, 42036 +/* 084C04 7F0500D4 02002025 */ move $a0, $s0 +/* 084C08 7F0500D8 0C0029FF */ jal string_append_from_obseg_textbank +/* 084C0C 7F0500DC 00402825 */ move $a1, $v0 +/* 084C10 7F0500E0 10000030 */ b .L7F0501A4 +/* 084C14 7F0500E4 00000000 */ nop +weapon_collect_msg_a_piton_gun: +/* 084C18 7F0500E8 0FC30776 */ jal get_textptr_for_textID +/* 084C1C 7F0500EC 3404A435 */ li $a0, 42037 +/* 084C20 7F0500F0 02002025 */ move $a0, $s0 +/* 084C24 7F0500F4 0C0029FF */ jal string_append_from_obseg_textbank +/* 084C28 7F0500F8 00402825 */ move $a1, $v0 +/* 084C2C 7F0500FC 10000029 */ b .L7F0501A4 +/* 084C30 7F050100 00000000 */ nop +weapon_collect_msg_a_silver_pp7: +/* 084C34 7F050104 0FC30776 */ jal get_textptr_for_textID +/* 084C38 7F050108 3404A436 */ li $a0, 42038 +/* 084C3C 7F05010C 02002025 */ move $a0, $s0 +/* 084C40 7F050110 0C0029FF */ jal string_append_from_obseg_textbank +/* 084C44 7F050114 00402825 */ move $a1, $v0 +/* 084C48 7F050118 10000022 */ b .L7F0501A4 +/* 084C4C 7F05011C 00000000 */ nop +weapon_collect_msg_a_gold_pp7: +/* 084C50 7F050120 0FC30776 */ jal get_textptr_for_textID +/* 084C54 7F050124 3404A437 */ li $a0, 42039 +/* 084C58 7F050128 02002025 */ move $a0, $s0 +/* 084C5C 7F05012C 0C0029FF */ jal string_append_from_obseg_textbank +/* 084C60 7F050130 00402825 */ move $a1, $v0 +/* 084C64 7F050134 1000001B */ b .L7F0501A4 +/* 084C68 7F050138 00000000 */ nop +weapon_collect_msg_a_keycard: +/* 084C6C 7F05013C 0FC30776 */ jal get_textptr_for_textID +/* 084C70 7F050140 3404A438 */ li $a0, 42040 +/* 084C74 7F050144 02002025 */ move $a0, $s0 +/* 084C78 7F050148 0C0029FF */ jal string_append_from_obseg_textbank +/* 084C7C 7F05014C 00402825 */ move $a1, $v0 +/* 084C80 7F050150 10000014 */ b .L7F0501A4 +/* 084C84 7F050154 00000000 */ nop +weapon_collect_msg_a_yale_key: +/* 084C88 7F050158 0FC30776 */ jal get_textptr_for_textID +/* 084C8C 7F05015C 3404A439 */ li $a0, 42041 +/* 084C90 7F050160 02002025 */ move $a0, $s0 +/* 084C94 7F050164 0C0029FF */ jal string_append_from_obseg_textbank +/* 084C98 7F050168 00402825 */ move $a1, $v0 +/* 084C9C 7F05016C 1000000D */ b .L7F0501A4 +/* 084CA0 7F050170 00000000 */ nop +weapon_collect_msg_a_bolt_key: +/* 084CA4 7F050174 0FC30776 */ jal get_textptr_for_textID +/* 084CA8 7F050178 3404A43A */ li $a0, 42042 +/* 084CAC 7F05017C 02002025 */ move $a0, $s0 +/* 084CB0 7F050180 0C0029FF */ jal string_append_from_obseg_textbank +/* 084CB4 7F050184 00402825 */ move $a1, $v0 +/* 084CB8 7F050188 10000006 */ b .L7F0501A4 +/* 084CBC 7F05018C 00000000 */ nop +weapon_collect_msg_a_new_weapon: +.L7F050190: +/* 084CC0 7F050190 0FC30776 */ jal get_textptr_for_textID +/* 084CC4 7F050194 3404A43B */ li $a0, 42043 +/* 084CC8 7F050198 02002025 */ move $a0, $s0 +/* 084CCC 7F05019C 0C0029FF */ jal string_append_from_obseg_textbank +/* 084CD0 7F0501A0 00402825 */ move $a1, $v0 +.L7F0501A4: +/* 084CD4 7F0501A4 3C088005 */ lui $t0, %hi(j_text_trigger) +/* 084CD8 7F0501A8 8D0884D0 */ lw $t0, %lo(j_text_trigger)($t0) +/* 084CDC 7F0501AC 8FA90024 */ lw $t1, 0x24($sp) +/* 084CE0 7F0501B0 51000018 */ beql $t0, $zero, .L7F050214 +/* 084CE4 7F0501B4 8FBF001C */ lw $ra, 0x1c($sp) +/* 084CE8 7F0501B8 55200016 */ bnezl $t1, .L7F050214 +/* 084CEC 7F0501BC 8FBF001C */ lw $ra, 0x1c($sp) +/* 084CF0 7F0501C0 0C004E1F */ jal strlen +/* 084CF4 7F0501C4 02002025 */ move $a0, $s0 +/* 084CF8 7F0501C8 00505021 */ addu $t2, $v0, $s0 +/* 084CFC 7F0501CC 914BFFFF */ lbu $t3, -1($t2) +/* 084D00 7F0501D0 2401000A */ li $at, 10 +/* 084D04 7F0501D4 15610005 */ bne $t3, $at, .L7F0501EC +/* 084D08 7F0501D8 00000000 */ nop +/* 084D0C 7F0501DC 0C004E1F */ jal strlen +/* 084D10 7F0501E0 02002025 */ move $a0, $s0 +/* 084D14 7F0501E4 02026021 */ addu $t4, $s0, $v0 +/* 084D18 7F0501E8 A180FFFF */ sb $zero, -1($t4) +.L7F0501EC: +/* 084D1C 7F0501EC 0FC30776 */ jal get_textptr_for_textID +/* 084D20 7F0501F0 3404A400 */ li $a0, 41984 +/* 084D24 7F0501F4 02002025 */ move $a0, $s0 +/* 084D28 7F0501F8 0C0029FF */ jal string_append_from_obseg_textbank +/* 084D2C 7F0501FC 00402825 */ move $a1, $v0 +/* 084D30 7F050200 3C058005 */ lui $a1, %hi(D_80052A40) +/* 084D34 7F050204 24A52A40 */ addiu $a1, %lo(D_80052A40) # addiu $a1, $a1, 0x2a40 +/* 084D38 7F050208 0C0029FF */ jal string_append_from_obseg_textbank +/* 084D3C 7F05020C 02002025 */ move $a0, $s0 +/* 084D40 7F050210 8FBF001C */ lw $ra, 0x1c($sp) +.L7F050214: +/* 084D44 7F050214 8FB00018 */ lw $s0, 0x18($sp) +/* 084D48 7F050218 27BD0028 */ addiu $sp, $sp, 0x28 +/* 084D4C 7F05021C 03E00008 */ jr $ra +/* 084D50 7F050220 00000000 */ nop +) +#endif + + + + + + +void display_text_for_weapon_in_lower_left_corner(ITEM_IDS weaponid) +{ + char acStack100 [100]; + + generate_language_specific_text_for_weapon(acStack100,weaponid); +#ifdef VERSION_JP + jp_display_string_in_lower_left_corner(acStack100); +#else + display_string_in_lower_left_corner(acStack100); +#endif + return; +} + + + + + + +#ifdef NONMATCHING +void collect_or_interact_object(void) { + +} +#else +#ifdef VERSION_US +GLOBAL_ASM( +.late_rodata +/*D:8005322C*/ +glabel object_interaction_table +.word interact_default_object +.word interact_key_object +.word interact_default_object +.word interact_default_object +.word interact_magazine_object +.word interact_weapon_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_ammobox_object +.word interact_bodyarmor_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object + +.text +glabel collect_or_interact_object +/* 084D80 7F050250 27BDFF90 */ addiu $sp, $sp, -0x70 +/* 084D84 7F050254 AFBF001C */ sw $ra, 0x1c($sp) +/* 084D88 7F050258 AFB00018 */ sw $s0, 0x18($sp) +/* 084D8C 7F05025C AFA40070 */ sw $a0, 0x70($sp) +/* 084D90 7F050260 AFA50074 */ sw $a1, 0x74($sp) +/* 084D94 7F050264 8C830004 */ lw $v1, 4($a0) +/* 084D98 7F050268 3C0F8008 */ lui $t7, %hi(pPlayer) +/* 084D9C 7F05026C 8DEFA0B0 */ lw $t7, %lo(pPlayer)($t7) +/* 084DA0 7F050270 AFA3006C */ sw $v1, 0x6c($sp) +/* 084DA4 7F050274 3C198005 */ lui $t9, %hi(clock_timer) +/* 084DA8 7F050278 8DF800D8 */ lw $t8, 0xd8($t7) +/* 084DAC 7F05027C 17000005 */ bnez $t8, .L7F050294 +/* 084DB0 7F050280 00000000 */ nop +/* 084DB4 7F050284 8F398374 */ lw $t9, %lo(clock_timer)($t9) +/* 084DB8 7F050288 8FA8006C */ lw $t0, 0x6c($sp) +/* 084DBC 7F05028C 57200004 */ bnezl $t9, .L7F0502A0 +/* 084DC0 7F050290 91090003 */ lbu $t1, 3($t0) +.L7F050294: +/* 084DC4 7F050294 1000010C */ b .L7F0506C8 +/* 084DC8 7F050298 00001025 */ move $v0, $zero +/* 084DCC 7F05029C 91090003 */ lbu $t1, 3($t0) +.L7F0502A0: +/* 084DD0 7F0502A0 252AFFFD */ addiu $t2, $t1, -3 +/* 084DD4 7F0502A4 2D41002D */ sltiu $at, $t2, 0x2d +/* 084DD8 7F0502A8 102000E0 */ beqz $at, .L7F05062C +/* 084DDC 7F0502AC 000A5080 */ sll $t2, $t2, 2 +/* 084DE0 7F0502B0 3C018005 */ lui $at, %hi(object_interaction_table) +/* 084DE4 7F0502B4 002A0821 */ addu $at, $at, $t2 +/* 084DE8 7F0502B8 8C2A322C */ lw $t2, %lo(object_interaction_table)($at) +/* 084DEC 7F0502BC 01400008 */ jr $t2 +/* 084DF0 7F0502C0 00000000 */ nop +interact_key_object: +/* 084DF4 7F0502C4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 084DF8 7F0502C8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 084DFC 7F0502CC 240500E5 */ li $a1, 229 +/* 084E00 7F0502D0 0C002382 */ jal play_sfx_a1 +/* 084E04 7F0502D4 00003025 */ move $a2, $zero +/* 084E08 7F0502D8 8FAB0074 */ lw $t3, 0x74($sp) +/* 084E0C 7F0502DC 1160000A */ beqz $t3, .L7F050308 +/* 084E10 7F0502E0 00000000 */ nop +/* 084E14 7F0502E4 0FC23657 */ jal sub_GAME_7F08D95C +/* 084E18 7F0502E8 8FA4006C */ lw $a0, 0x6c($sp) +/* 084E1C 7F0502EC 14400004 */ bnez $v0, .L7F050300 +/* 084E20 7F0502F0 00402025 */ move $a0, $v0 +/* 084E24 7F0502F4 0FC30776 */ jal get_textptr_for_textID +/* 084E28 7F0502F8 3404A43C */ li $a0, 42044 +/* 084E2C 7F0502FC 00402025 */ move $a0, $v0 +.L7F050300: +/* 084E30 7F050300 0FC228F2 */ jal display_string_in_lower_left_corner +/* 084E34 7F050304 00000000 */ nop +.L7F050308: +/* 084E38 7F050308 100000DA */ b .L7F050674 +/* 084E3C 7F05030C 24030004 */ li $v1, 4 +interact_magazine_object: +/* 084E40 7F050310 00608025 */ move $s0, $v1 +/* 084E44 7F050314 0FC13F0F */ jal get_ammo_in_magazine +/* 084E48 7F050318 00602025 */ move $a0, $v1 +/* 084E4C 7F05031C 8E040080 */ lw $a0, 0x80($s0) +/* 084E50 7F050320 00402825 */ move $a1, $v0 +/* 084E54 7F050324 24060001 */ li $a2, 1 +/* 084E58 7F050328 0FC13E9A */ jal add_ammo_to_inventory +/* 084E5C 7F05032C 8FA70074 */ lw $a3, 0x74($sp) +/* 084E60 7F050330 100000D0 */ b .L7F050674 +/* 084E64 7F050334 24030001 */ li $v1, 1 +interact_ammobox_object: +/* 084E68 7F050338 00001025 */ move $v0, $zero +/* 084E6C 7F05033C 00608025 */ move $s0, $v1 +/* 084E70 7F050340 24430001 */ addiu $v1, $v0, 1 +.L7F050344: +/* 084E74 7F050344 24010001 */ li $at, 1 +/* 084E78 7F050348 14410002 */ bne $v0, $at, .L7F050354 +/* 084E7C 7F05034C 00602025 */ move $a0, $v1 +/* 084E80 7F050350 24040001 */ li $a0, 1 +.L7F050354: +/* 084E84 7F050354 96050082 */ lhu $a1, 0x82($s0) +/* 084E88 7F050358 AFA4004C */ sw $a0, 0x4c($sp) +/* 084E8C 7F05035C AFA30020 */ sw $v1, 0x20($sp) +/* 084E90 7F050360 0FC26919 */ jal get_num_players +/* 084E94 7F050364 AFA50050 */ sw $a1, 0x50($sp) +/* 084E98 7F050368 24010001 */ li $at, 1 +/* 084E9C 7F05036C 8FA30020 */ lw $v1, 0x20($sp) +/* 084EA0 7F050370 8FA4004C */ lw $a0, 0x4c($sp) +/* 084EA4 7F050374 14410009 */ bne $v0, $at, .L7F05039C +/* 084EA8 7F050378 8FA50050 */ lw $a1, 0x50($sp) +/* 084EAC 7F05037C 44852000 */ mtc1 $a1, $f4 +/* 084EB0 7F050380 3C018003 */ lui $at, %hi(solo_ammo_multiplier) +/* 084EB4 7F050384 C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) +/* 084EB8 7F050388 468021A0 */ cvt.s.w $f6, $f4 +/* 084EBC 7F05038C 46083282 */ mul.s $f10, $f6, $f8 +/* 084EC0 7F050390 4600540D */ trunc.w.s $f16, $f10 +/* 084EC4 7F050394 44058000 */ mfc1 $a1, $f16 +/* 084EC8 7F050398 00000000 */ nop +.L7F05039C: +/* 084ECC 7F05039C 00003025 */ move $a2, $zero +/* 084ED0 7F0503A0 8FA70074 */ lw $a3, 0x74($sp) +/* 084ED4 7F0503A4 0FC13E9A */ jal add_ammo_to_inventory +/* 084ED8 7F0503A8 AFA30020 */ sw $v1, 0x20($sp) +/* 084EDC 7F0503AC 8FA20020 */ lw $v0, 0x20($sp) +/* 084EE0 7F0503B0 2401000D */ li $at, 13 +/* 084EE4 7F0503B4 26100004 */ addiu $s0, $s0, 4 +/* 084EE8 7F0503B8 5441FFE2 */ bnel $v0, $at, .L7F050344 +/* 084EEC 7F0503BC 24430001 */ addiu $v1, $v0, 1 +/* 084EF0 7F0503C0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 084EF4 7F0503C4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 084EF8 7F0503C8 240500EA */ li $a1, 234 +/* 084EFC 7F0503CC 0C002382 */ jal play_sfx_a1 +/* 084F00 7F0503D0 00003025 */ move $a2, $zero +/* 084F04 7F0503D4 100000A7 */ b .L7F050674 +/* 084F08 7F0503D8 24030001 */ li $v1, 1 +interact_weapon_object: +/* 084F0C 7F0503DC AFA00044 */ sw $zero, 0x44($sp) +/* 084F10 7F0503E0 80640080 */ lb $a0, 0x80($v1) +/* 084F14 7F0503E4 0FC13E04 */ jal set_sound_effect_for_weapontype_collection +/* 084F18 7F0503E8 AFA30048 */ sw $v1, 0x48($sp) +/* 084F1C 7F0503EC 8FAD0048 */ lw $t5, 0x48($sp) +/* 084F20 7F0503F0 2401001D */ li $at, 29 +/* 084F24 7F0503F4 81A40080 */ lb $a0, 0x80($t5) +/* 084F28 7F0503F8 54810006 */ bnel $a0, $at, .L7F050414 +/* 084F2C 7F0503FC 24010058 */ li $at, 88 +/* 084F30 7F050400 0FC23122 */ jal add_item_to_inventory +/* 084F34 7F050404 2404001E */ li $a0, 30 +/* 084F38 7F050408 10000007 */ b .L7F050428 +/* 084F3C 7F05040C 8FAE006C */ lw $t6, 0x6c($sp) +/* 084F40 7F050410 24010058 */ li $at, 88 +.L7F050414: +/* 084F44 7F050414 14810003 */ bne $a0, $at, .L7F050424 +/* 084F48 7F050418 24050058 */ li $a1, 88 +/* 084F4C 7F05041C 0FC17645 */ jal draw_item_in_hand_has_more_ammo +/* 084F50 7F050420 00002025 */ move $a0, $zero +.L7F050424: +/* 084F54 7F050424 8FAE006C */ lw $t6, 0x6c($sp) +.L7F050428: +/* 084F58 7F050428 8FB90048 */ lw $t9, 0x48($sp) +/* 084F5C 7F05042C 8DCF0064 */ lw $t7, 0x64($t6) +/* 084F60 7F050430 31F80400 */ andi $t8, $t7, 0x400 +/* 084F64 7F050434 1300001B */ beqz $t8, .L7F0504A4 +/* 084F68 7F050438 00000000 */ nop +/* 084F6C 7F05043C 83280080 */ lb $t0, 0x80($t9) +/* 084F70 7F050440 29010021 */ slti $at, $t0, 0x21 +/* 084F74 7F050444 50200004 */ beql $at, $zero, .L7F050458 +/* 084F78 7F050448 8FA90074 */ lw $t1, 0x74($sp) +/* 084F7C 7F05044C 0FC231D9 */ jal sub_GAME_7F08C764 +/* 084F80 7F050450 8FA40070 */ lw $a0, 0x70($sp) +/* 084F84 7F050454 8FA90074 */ lw $t1, 0x74($sp) +.L7F050458: +/* 084F88 7F050458 5120000F */ beql $t1, $zero, .L7F050498 +/* 084F8C 7F05045C 8FAC0048 */ lw $t4, 0x48($sp) +/* 084F90 7F050460 0FC23657 */ jal sub_GAME_7F08D95C +/* 084F94 7F050464 8FA4006C */ lw $a0, 0x6c($sp) +/* 084F98 7F050468 10400005 */ beqz $v0, .L7F050480 +/* 084F9C 7F05046C 00402025 */ move $a0, $v0 +/* 084FA0 7F050470 0FC228F2 */ jal display_string_in_lower_left_corner +/* 084FA4 7F050474 00000000 */ nop +/* 084FA8 7F050478 10000005 */ b .L7F050490 +/* 084FAC 7F05047C 240B0001 */ li $t3, 1 +.L7F050480: +/* 084FB0 7F050480 8FAA0048 */ lw $t2, 0x48($sp) +/* 084FB4 7F050484 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner +/* 084FB8 7F050488 81440080 */ lb $a0, 0x80($t2) +/* 084FBC 7F05048C 240B0001 */ li $t3, 1 +.L7F050490: +/* 084FC0 7F050490 AFAB0044 */ sw $t3, 0x44($sp) +/* 084FC4 7F050494 8FAC0048 */ lw $t4, 0x48($sp) +.L7F050498: +/* 084FC8 7F050498 24030004 */ li $v1, 4 +/* 084FCC 7F05049C 1000001C */ b .L7F050510 +/* 084FD0 7F0504A0 81840080 */ lb $a0, 0x80($t4) +.L7F0504A4: +/* 084FD4 7F0504A4 0FC231D9 */ jal sub_GAME_7F08C764 +/* 084FD8 7F0504A8 8FA40070 */ lw $a0, 0x70($sp) +/* 084FDC 7F0504AC 10400002 */ beqz $v0, .L7F0504B8 +/* 084FE0 7F0504B0 240D0001 */ li $t5, 1 +/* 084FE4 7F0504B4 AFAD0044 */ sw $t5, 0x44($sp) +.L7F0504B8: +/* 084FE8 7F0504B8 8FAE0074 */ lw $t6, 0x74($sp) +/* 084FEC 7F0504BC 8FAF0048 */ lw $t7, 0x48($sp) +/* 084FF0 7F0504C0 51C00011 */ beql $t6, $zero, .L7F050508 +/* 084FF4 7F0504C4 8FA90048 */ lw $t1, 0x48($sp) +/* 084FF8 7F0504C8 0FC23669 */ jal sub_GAME_7F08D9A4 +/* 084FFC 7F0504CC 81E40080 */ lb $a0, 0x80($t7) +/* 085000 7F0504D0 10400006 */ beqz $v0, .L7F0504EC +/* 085004 7F0504D4 00402025 */ move $a0, $v0 +/* 085008 7F0504D8 24180001 */ li $t8, 1 +/* 08500C 7F0504DC 0FC228F2 */ jal display_string_in_lower_left_corner +/* 085010 7F0504E0 AFB80044 */ sw $t8, 0x44($sp) +/* 085014 7F0504E4 10000008 */ b .L7F050508 +/* 085018 7F0504E8 8FA90048 */ lw $t1, 0x48($sp) +.L7F0504EC: +/* 08501C 7F0504EC 8FB90044 */ lw $t9, 0x44($sp) +/* 085020 7F0504F0 8FA80048 */ lw $t0, 0x48($sp) +/* 085024 7F0504F4 53200004 */ beql $t9, $zero, .L7F050508 +/* 085028 7F0504F8 8FA90048 */ lw $t1, 0x48($sp) +/* 08502C 7F0504FC 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner +/* 085030 7F050500 81040080 */ lb $a0, 0x80($t0) +/* 085034 7F050504 8FA90048 */ lw $t1, 0x48($sp) +.L7F050508: +/* 085038 7F050508 24030001 */ li $v1, 1 +/* 08503C 7F05050C 81240080 */ lb $a0, 0x80($t1) +.L7F050510: +/* 085040 7F050510 0FC1A50B */ jal get_ammo_type_for_weapon +/* 085044 7F050514 AFA30068 */ sw $v1, 0x68($sp) +/* 085048 7F050518 8FA30068 */ lw $v1, 0x68($sp) +/* 08504C 7F05051C 10400055 */ beqz $v0, .L7F050674 +/* 085050 7F050520 00408025 */ move $s0, $v0 +/* 085054 7F050524 8FA40048 */ lw $a0, 0x48($sp) +/* 085058 7F050528 0FC13F3E */ jal ammo_collected_from_weapon +/* 08505C 7F05052C AFA30068 */ sw $v1, 0x68($sp) +/* 085060 7F050530 8FA30068 */ lw $v1, 0x68($sp) +/* 085064 7F050534 1840004F */ blez $v0, .L7F050674 +/* 085068 7F050538 AFA20034 */ sw $v0, 0x34($sp) +/* 08506C 7F05053C 02002025 */ move $a0, $s0 +/* 085070 7F050540 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory +/* 085074 7F050544 AFA30068 */ sw $v1, 0x68($sp) +/* 085078 7F050548 AFA20024 */ sw $v0, 0x24($sp) +/* 08507C 7F05054C 0FC1A4B5 */ jal get_max_ammo_for_type +/* 085080 7F050550 02002025 */ move $a0, $s0 +/* 085084 7F050554 8FAA0024 */ lw $t2, 0x24($sp) +/* 085088 7F050558 8FA30068 */ lw $v1, 0x68($sp) +/* 08508C 7F05055C 02002025 */ move $a0, $s0 +/* 085090 7F050560 0142082A */ slt $at, $t2, $v0 +/* 085094 7F050564 50200044 */ beql $at, $zero, .L7F050678 +/* 085098 7F050568 24010001 */ li $at, 1 +/* 08509C 7F05056C 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory +/* 0850A0 7F050570 AFA30068 */ sw $v1, 0x68($sp) +/* 0850A4 7F050574 8FAB0034 */ lw $t3, 0x34($sp) +/* 0850A8 7F050578 02002025 */ move $a0, $s0 +/* 0850AC 7F05057C 0FC1A44C */ jal give_cur_player_ammo +/* 0850B0 7F050580 004B2821 */ addu $a1, $v0, $t3 +/* 0850B4 7F050584 8FAC0044 */ lw $t4, 0x44($sp) +/* 0850B8 7F050588 8FA30068 */ lw $v1, 0x68($sp) +/* 0850BC 7F05058C 8FAD0074 */ lw $t5, 0x74($sp) +/* 0850C0 7F050590 55800039 */ bnezl $t4, .L7F050678 +/* 0850C4 7F050594 24010001 */ li $at, 1 +/* 0850C8 7F050598 11A00036 */ beqz $t5, .L7F050674 +/* 0850CC 7F05059C 02002025 */ move $a0, $s0 +/* 0850D0 7F0505A0 8FA50034 */ lw $a1, 0x34($sp) +/* 0850D4 7F0505A4 0FC13E7E */ jal display_text_when_ammo_collected +/* 0850D8 7F0505A8 AFA30068 */ sw $v1, 0x68($sp) +/* 0850DC 7F0505AC 10000031 */ b .L7F050674 +/* 0850E0 7F0505B0 8FA30068 */ lw $v1, 0x68($sp) +interact_bodyarmor_object: +/* 0850E4 7F0505B4 0FC228C3 */ jal add_BONDdata_watch_armor +/* 0850E8 7F0505B8 C46C0084 */ lwc1 $f12, 0x84($v1) +/* 0850EC 7F0505BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0850F0 7F0505C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0850F4 7F0505C4 24050051 */ li $a1, 81 +/* 0850F8 7F0505C8 0C002382 */ jal play_sfx_a1 +/* 0850FC 7F0505CC 00003025 */ move $a2, $zero +/* 085100 7F0505D0 8FAE0074 */ lw $t6, 0x74($sp) +/* 085104 7F0505D4 11C00013 */ beqz $t6, .L7F050624 +/* 085108 7F0505D8 00000000 */ nop +/* 08510C 7F0505DC 0FC23657 */ jal sub_GAME_7F08D95C +/* 085110 7F0505E0 8FA4006C */ lw $a0, 0x6c($sp) +/* 085114 7F0505E4 1440000D */ bnez $v0, .L7F05061C +/* 085118 7F0505E8 00402025 */ move $a0, $v0 +/* 08511C 7F0505EC 0FC26919 */ jal get_num_players +/* 085120 7F0505F0 00000000 */ nop +/* 085124 7F0505F4 28410003 */ slti $at, $v0, 3 +/* 085128 7F0505F8 10200005 */ beqz $at, .L7F050610 +/* 08512C 7F0505FC 00000000 */ nop +/* 085130 7F050600 0FC30776 */ jal get_textptr_for_textID +/* 085134 7F050604 3404A43D */ li $a0, 42045 +/* 085138 7F050608 10000004 */ b .L7F05061C +/* 08513C 7F05060C 00402025 */ move $a0, $v0 +.L7F050610: +/* 085140 7F050610 0FC30776 */ jal get_textptr_for_textID +/* 085144 7F050614 3404A43E */ li $a0, 42046 +/* 085148 7F050618 00402025 */ move $a0, $v0 +.L7F05061C: +/* 08514C 7F05061C 0FC228F2 */ jal display_string_in_lower_left_corner +/* 085150 7F050620 00000000 */ nop +.L7F050624: +/* 085154 7F050624 10000013 */ b .L7F050674 +/* 085158 7F050628 24030001 */ li $v1, 1 +interact_default_object: +.L7F05062C: +/* 08515C 7F05062C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 085160 7F050630 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 085164 7F050634 240500E5 */ li $a1, 229 +/* 085168 7F050638 0C002382 */ jal play_sfx_a1 +/* 08516C 7F05063C 00003025 */ move $a2, $zero +/* 085170 7F050640 8FAF0074 */ lw $t7, 0x74($sp) +/* 085174 7F050644 51E0000B */ beql $t7, $zero, .L7F050674 +/* 085178 7F050648 24030004 */ li $v1, 4 +/* 08517C 7F05064C 0FC23657 */ jal sub_GAME_7F08D95C +/* 085180 7F050650 8FA4006C */ lw $a0, 0x6c($sp) +/* 085184 7F050654 14400004 */ bnez $v0, .L7F050668 +/* 085188 7F050658 00402025 */ move $a0, $v0 +/* 08518C 7F05065C 0FC30776 */ jal get_textptr_for_textID +/* 085190 7F050660 3404A43F */ li $a0, 42047 +/* 085194 7F050664 00402025 */ move $a0, $v0 +.L7F050668: +/* 085198 7F050668 0FC228F2 */ jal display_string_in_lower_left_corner +/* 08519C 7F05066C 00000000 */ nop +/* 0851A0 7F050670 24030004 */ li $v1, 4 +.L7F050674: +/* 0851A4 7F050674 24010001 */ li $at, 1 +.L7F050678: +/* 0851A8 7F050678 1461000D */ bne $v1, $at, .L7F0506B0 +/* 0851AC 7F05067C 8FB8006C */ lw $t8, 0x6c($sp) +/* 0851B0 7F050680 8F190064 */ lw $t9, 0x64($t8) +/* 0851B4 7F050684 33280010 */ andi $t0, $t9, 0x10 +/* 0851B8 7F050688 15000009 */ bnez $t0, .L7F0506B0 +/* 0851BC 7F05068C 00000000 */ nop +/* 0851C0 7F050690 93060002 */ lbu $a2, 2($t8) +/* 0851C4 7F050694 03002025 */ move $a0, $t8 +/* 0851C8 7F050698 00002825 */ move $a1, $zero +/* 0851CC 7F05069C 30C90004 */ andi $t1, $a2, 4 +/* 0851D0 7F0506A0 0FC10366 */ jal sub_GAME_7F040D98 +/* 0851D4 7F0506A4 01203025 */ move $a2, $t1 +/* 0851D8 7F0506A8 10000007 */ b .L7F0506C8 +/* 0851DC 7F0506AC 24020001 */ li $v0, 1 +.L7F0506B0: +/* 0851E0 7F0506B0 10600005 */ beqz $v1, .L7F0506C8 +/* 0851E4 7F0506B4 00001025 */ move $v0, $zero +/* 0851E8 7F0506B8 0FC231C9 */ jal sub_GAME_7F08C724 +/* 0851EC 7F0506BC 8FA40070 */ lw $a0, 0x70($sp) +/* 0851F0 7F0506C0 10000001 */ b .L7F0506C8 +/* 0851F4 7F0506C4 24020004 */ li $v0, 4 +.L7F0506C8: +/* 0851F8 7F0506C8 8FBF001C */ lw $ra, 0x1c($sp) +/* 0851FC 7F0506CC 8FB00018 */ lw $s0, 0x18($sp) +/* 085200 7F0506D0 27BD0070 */ addiu $sp, $sp, 0x70 +/* 085204 7F0506D4 03E00008 */ jr $ra +/* 085208 7F0506D8 00000000 */ nop +) +#endif +#ifdef VERSION_JP +GLOBAL_ASM( +.late_rodata +/*D:8005322C*/ +glabel object_interaction_table +.word interact_default_object +.word interact_key_object +.word interact_default_object +.word interact_default_object +.word interact_magazine_object +.word interact_weapon_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_ammobox_object +.word interact_bodyarmor_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object +.word interact_default_object + +.text +glabel collect_or_interact_object +/* 084D80 7F050250 27BDFF90 */ addiu $sp, $sp, -0x70 +/* 084D84 7F050254 AFBF001C */ sw $ra, 0x1c($sp) +/* 084D88 7F050258 AFB00018 */ sw $s0, 0x18($sp) +/* 084D8C 7F05025C AFA40070 */ sw $a0, 0x70($sp) +/* 084D90 7F050260 AFA50074 */ sw $a1, 0x74($sp) +/* 084D94 7F050264 8C830004 */ lw $v1, 4($a0) +/* 084D98 7F050268 3C0F8008 */ lui $t7, %hi(pPlayer) +/* 084D9C 7F05026C 8DEFA0B0 */ lw $t7, %lo(pPlayer)($t7) +/* 084DA0 7F050270 AFA3006C */ sw $v1, 0x6c($sp) +/* 084DA4 7F050274 3C198005 */ lui $t9, %hi(clock_timer) +/* 084DA8 7F050278 8DF800D8 */ lw $t8, 0xd8($t7) +/* 084DAC 7F05027C 17000005 */ bnez $t8, .L7F050294 +/* 084DB0 7F050280 00000000 */ nop +/* 084DB4 7F050284 8F398374 */ lw $t9, %lo(clock_timer)($t9) +/* 084DB8 7F050288 8FA8006C */ lw $t0, 0x6c($sp) +/* 084DBC 7F05028C 57200004 */ bnezl $t9, .L7F0502A0 +/* 084DC0 7F050290 91090003 */ lbu $t1, 3($t0) +.L7F050294: +/* 084DC4 7F050294 1000010C */ b .L7F0506C8 +/* 084DC8 7F050298 00001025 */ move $v0, $zero +/* 084DCC 7F05029C 91090003 */ lbu $t1, 3($t0) +.L7F0502A0: +/* 084DD0 7F0502A0 252AFFFD */ addiu $t2, $t1, -3 +/* 084DD4 7F0502A4 2D41002D */ sltiu $at, $t2, 0x2d +/* 084DD8 7F0502A8 102000E0 */ beqz $at, .L7F05062C +/* 084DDC 7F0502AC 000A5080 */ sll $t2, $t2, 2 +/* 084DE0 7F0502B0 3C018005 */ lui $at, %hi(object_interaction_table) +/* 084DE4 7F0502B4 002A0821 */ addu $at, $at, $t2 +/* 084DE8 7F0502B8 8C2A322C */ lw $t2, %lo(object_interaction_table)($at) +/* 084DEC 7F0502BC 01400008 */ jr $t2 +/* 084DF0 7F0502C0 00000000 */ nop +interact_key_object: +/* 084DF4 7F0502C4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 084DF8 7F0502C8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 084DFC 7F0502CC 240500E5 */ li $a1, 229 +/* 084E00 7F0502D0 0C002382 */ jal play_sfx_a1 +/* 084E04 7F0502D4 00003025 */ move $a2, $zero +/* 084E08 7F0502D8 8FAB0074 */ lw $t3, 0x74($sp) +/* 084E0C 7F0502DC 1160000A */ beqz $t3, .L7F050308 +/* 084E10 7F0502E0 00000000 */ nop +/* 084E14 7F0502E4 0FC23657 */ jal sub_GAME_7F08D95C +/* 084E18 7F0502E8 8FA4006C */ lw $a0, 0x6c($sp) +/* 084E1C 7F0502EC 14400004 */ bnez $v0, .L7F050300 +/* 084E20 7F0502F0 00402025 */ move $a0, $v0 +/* 084E24 7F0502F4 0FC30776 */ jal get_textptr_for_textID +/* 084E28 7F0502F8 3404A43C */ li $a0, 42044 +/* 084E2C 7F0502FC 00402025 */ move $a0, $v0 +.L7F050300: +/* 084E30 7F050300 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 084E34 7F050304 00000000 */ nop +.L7F050308: +/* 084E38 7F050308 100000DA */ b .L7F050674 +/* 084E3C 7F05030C 24030004 */ li $v1, 4 +interact_magazine_object: +/* 084E40 7F050310 00608025 */ move $s0, $v1 +/* 084E44 7F050314 0FC13F0F */ jal get_ammo_in_magazine +/* 084E48 7F050318 00602025 */ move $a0, $v1 +/* 084E4C 7F05031C 8E040080 */ lw $a0, 0x80($s0) +/* 084E50 7F050320 00402825 */ move $a1, $v0 +/* 084E54 7F050324 24060001 */ li $a2, 1 +/* 084E58 7F050328 0FC13E9A */ jal add_ammo_to_inventory +/* 084E5C 7F05032C 8FA70074 */ lw $a3, 0x74($sp) +/* 084E60 7F050330 100000D0 */ b .L7F050674 +/* 084E64 7F050334 24030001 */ li $v1, 1 +interact_ammobox_object: +/* 084E68 7F050338 00001025 */ move $v0, $zero +/* 084E6C 7F05033C 00608025 */ move $s0, $v1 +/* 084E70 7F050340 24430001 */ addiu $v1, $v0, 1 +.L7F050344: +/* 084E74 7F050344 24010001 */ li $at, 1 +/* 084E78 7F050348 14410002 */ bne $v0, $at, .L7F050354 +/* 084E7C 7F05034C 00602025 */ move $a0, $v1 +/* 084E80 7F050350 24040001 */ li $a0, 1 +.L7F050354: +/* 084E84 7F050354 96050082 */ lhu $a1, 0x82($s0) +/* 084E88 7F050358 AFA4004C */ sw $a0, 0x4c($sp) +/* 084E8C 7F05035C AFA30020 */ sw $v1, 0x20($sp) +/* 084E90 7F050360 0FC26919 */ jal get_num_players +/* 084E94 7F050364 AFA50050 */ sw $a1, 0x50($sp) +/* 084E98 7F050368 24010001 */ li $at, 1 +/* 084E9C 7F05036C 8FA30020 */ lw $v1, 0x20($sp) +/* 084EA0 7F050370 8FA4004C */ lw $a0, 0x4c($sp) +/* 084EA4 7F050374 14410009 */ bne $v0, $at, .L7F05039C +/* 084EA8 7F050378 8FA50050 */ lw $a1, 0x50($sp) +/* 084EAC 7F05037C 44852000 */ mtc1 $a1, $f4 +/* 084EB0 7F050380 3C018003 */ lui $at, %hi(solo_ammo_multiplier) +/* 084EB4 7F050384 C4280B28 */ lwc1 $f8, %lo(solo_ammo_multiplier)($at) +/* 084EB8 7F050388 468021A0 */ cvt.s.w $f6, $f4 +/* 084EBC 7F05038C 46083282 */ mul.s $f10, $f6, $f8 +/* 084EC0 7F050390 4600540D */ trunc.w.s $f16, $f10 +/* 084EC4 7F050394 44058000 */ mfc1 $a1, $f16 +/* 084EC8 7F050398 00000000 */ nop +.L7F05039C: +/* 084ECC 7F05039C 00003025 */ move $a2, $zero +/* 084ED0 7F0503A0 8FA70074 */ lw $a3, 0x74($sp) +/* 084ED4 7F0503A4 0FC13E9A */ jal add_ammo_to_inventory +/* 084ED8 7F0503A8 AFA30020 */ sw $v1, 0x20($sp) +/* 084EDC 7F0503AC 8FA20020 */ lw $v0, 0x20($sp) +/* 084EE0 7F0503B0 2401000D */ li $at, 13 +/* 084EE4 7F0503B4 26100004 */ addiu $s0, $s0, 4 +/* 084EE8 7F0503B8 5441FFE2 */ bnel $v0, $at, .L7F050344 +/* 084EEC 7F0503BC 24430001 */ addiu $v1, $v0, 1 +/* 084EF0 7F0503C0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 084EF4 7F0503C4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 084EF8 7F0503C8 240500EA */ li $a1, 234 +/* 084EFC 7F0503CC 0C002382 */ jal play_sfx_a1 +/* 084F00 7F0503D0 00003025 */ move $a2, $zero +/* 084F04 7F0503D4 100000A7 */ b .L7F050674 +/* 084F08 7F0503D8 24030001 */ li $v1, 1 +interact_weapon_object: +/* 084F0C 7F0503DC AFA00044 */ sw $zero, 0x44($sp) +/* 084F10 7F0503E0 80640080 */ lb $a0, 0x80($v1) +/* 084F14 7F0503E4 0FC13E04 */ jal set_sound_effect_for_weapontype_collection +/* 084F18 7F0503E8 AFA30048 */ sw $v1, 0x48($sp) +/* 084F1C 7F0503EC 8FAD0048 */ lw $t5, 0x48($sp) +/* 084F20 7F0503F0 2401001D */ li $at, 29 +/* 084F24 7F0503F4 81A40080 */ lb $a0, 0x80($t5) +/* 084F28 7F0503F8 54810006 */ bnel $a0, $at, .L7F050414 +/* 084F2C 7F0503FC 24010058 */ li $at, 88 +/* 084F30 7F050400 0FC23122 */ jal add_item_to_inventory +/* 084F34 7F050404 2404001E */ li $a0, 30 +/* 084F38 7F050408 10000007 */ b .L7F050428 +/* 084F3C 7F05040C 8FAE006C */ lw $t6, 0x6c($sp) +/* 084F40 7F050410 24010058 */ li $at, 88 +.L7F050414: +/* 084F44 7F050414 14810003 */ bne $a0, $at, .L7F050424 +/* 084F48 7F050418 24050058 */ li $a1, 88 +/* 084F4C 7F05041C 0FC17645 */ jal draw_item_in_hand_has_more_ammo +/* 084F50 7F050420 00002025 */ move $a0, $zero +.L7F050424: +/* 084F54 7F050424 8FAE006C */ lw $t6, 0x6c($sp) +.L7F050428: +/* 084F58 7F050428 8FB90048 */ lw $t9, 0x48($sp) +/* 084F5C 7F05042C 8DCF0064 */ lw $t7, 0x64($t6) +/* 084F60 7F050430 31F80400 */ andi $t8, $t7, 0x400 +/* 084F64 7F050434 1300001B */ beqz $t8, .L7F0504A4 +/* 084F68 7F050438 00000000 */ nop +/* 084F6C 7F05043C 83280080 */ lb $t0, 0x80($t9) +/* 084F70 7F050440 29010021 */ slti $at, $t0, 0x21 +/* 084F74 7F050444 50200004 */ beql $at, $zero, .L7F050458 +/* 084F78 7F050448 8FA90074 */ lw $t1, 0x74($sp) +/* 084F7C 7F05044C 0FC231D9 */ jal sub_GAME_7F08C764 +/* 084F80 7F050450 8FA40070 */ lw $a0, 0x70($sp) +/* 084F84 7F050454 8FA90074 */ lw $t1, 0x74($sp) +.L7F050458: +/* 084F88 7F050458 5120000F */ beql $t1, $zero, .L7F050498 +/* 084F8C 7F05045C 8FAC0048 */ lw $t4, 0x48($sp) +/* 084F90 7F050460 0FC23657 */ jal sub_GAME_7F08D95C +/* 084F94 7F050464 8FA4006C */ lw $a0, 0x6c($sp) +/* 084F98 7F050468 10400005 */ beqz $v0, .L7F050480 +/* 084F9C 7F05046C 00402025 */ move $a0, $v0 +/* 084FA0 7F050470 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 084FA4 7F050474 00000000 */ nop +/* 084FA8 7F050478 10000005 */ b .L7F050490 +/* 084FAC 7F05047C 240B0001 */ li $t3, 1 +.L7F050480: +/* 084FB0 7F050480 8FAA0048 */ lw $t2, 0x48($sp) +/* 084FB4 7F050484 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner +/* 084FB8 7F050488 81440080 */ lb $a0, 0x80($t2) +/* 084FBC 7F05048C 240B0001 */ li $t3, 1 +.L7F050490: +/* 084FC0 7F050490 AFAB0044 */ sw $t3, 0x44($sp) +/* 084FC4 7F050494 8FAC0048 */ lw $t4, 0x48($sp) +.L7F050498: +/* 084FC8 7F050498 24030004 */ li $v1, 4 +/* 084FCC 7F05049C 1000001C */ b .L7F050510 +/* 084FD0 7F0504A0 81840080 */ lb $a0, 0x80($t4) +.L7F0504A4: +/* 084FD4 7F0504A4 0FC231D9 */ jal sub_GAME_7F08C764 +/* 084FD8 7F0504A8 8FA40070 */ lw $a0, 0x70($sp) +/* 084FDC 7F0504AC 10400002 */ beqz $v0, .L7F0504B8 +/* 084FE0 7F0504B0 240D0001 */ li $t5, 1 +/* 084FE4 7F0504B4 AFAD0044 */ sw $t5, 0x44($sp) +.L7F0504B8: +/* 084FE8 7F0504B8 8FAE0074 */ lw $t6, 0x74($sp) +/* 084FEC 7F0504BC 8FAF0048 */ lw $t7, 0x48($sp) +/* 084FF0 7F0504C0 51C00011 */ beql $t6, $zero, .L7F050508 +/* 084FF4 7F0504C4 8FA90048 */ lw $t1, 0x48($sp) +/* 084FF8 7F0504C8 0FC23669 */ jal sub_GAME_7F08D9A4 +/* 084FFC 7F0504CC 81E40080 */ lb $a0, 0x80($t7) +/* 085000 7F0504D0 10400006 */ beqz $v0, .L7F0504EC +/* 085004 7F0504D4 00402025 */ move $a0, $v0 +/* 085008 7F0504D8 24180001 */ li $t8, 1 +/* 08500C 7F0504DC 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 085010 7F0504E0 AFB80044 */ sw $t8, 0x44($sp) +/* 085014 7F0504E4 10000008 */ b .L7F050508 +/* 085018 7F0504E8 8FA90048 */ lw $t1, 0x48($sp) +.L7F0504EC: +/* 08501C 7F0504EC 8FB90044 */ lw $t9, 0x44($sp) +/* 085020 7F0504F0 8FA80048 */ lw $t0, 0x48($sp) +/* 085024 7F0504F4 53200004 */ beql $t9, $zero, .L7F050508 +/* 085028 7F0504F8 8FA90048 */ lw $t1, 0x48($sp) +/* 08502C 7F0504FC 0FC14089 */ jal display_text_for_weapon_in_lower_left_corner +/* 085030 7F050500 81040080 */ lb $a0, 0x80($t0) +/* 085034 7F050504 8FA90048 */ lw $t1, 0x48($sp) +.L7F050508: +/* 085038 7F050508 24030001 */ li $v1, 1 +/* 08503C 7F05050C 81240080 */ lb $a0, 0x80($t1) +.L7F050510: +/* 085040 7F050510 0FC1A50B */ jal get_ammo_type_for_weapon +/* 085044 7F050514 AFA30068 */ sw $v1, 0x68($sp) +/* 085048 7F050518 8FA30068 */ lw $v1, 0x68($sp) +/* 08504C 7F05051C 10400055 */ beqz $v0, .L7F050674 +/* 085050 7F050520 00408025 */ move $s0, $v0 +/* 085054 7F050524 8FA40048 */ lw $a0, 0x48($sp) +/* 085058 7F050528 0FC13F3E */ jal ammo_collected_from_weapon +/* 08505C 7F05052C AFA30068 */ sw $v1, 0x68($sp) +/* 085060 7F050530 8FA30068 */ lw $v1, 0x68($sp) +/* 085064 7F050534 1840004F */ blez $v0, .L7F050674 +/* 085068 7F050538 AFA20034 */ sw $v0, 0x34($sp) +/* 08506C 7F05053C 02002025 */ move $a0, $s0 +/* 085070 7F050540 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory +/* 085074 7F050544 AFA30068 */ sw $v1, 0x68($sp) +/* 085078 7F050548 AFA20024 */ sw $v0, 0x24($sp) +/* 08507C 7F05054C 0FC1A4B5 */ jal get_max_ammo_for_type +/* 085080 7F050550 02002025 */ move $a0, $s0 +/* 085084 7F050554 8FAA0024 */ lw $t2, 0x24($sp) +/* 085088 7F050558 8FA30068 */ lw $v1, 0x68($sp) +/* 08508C 7F05055C 02002025 */ move $a0, $s0 +/* 085090 7F050560 0142082A */ slt $at, $t2, $v0 +/* 085094 7F050564 50200044 */ beql $at, $zero, .L7F050678 +/* 085098 7F050568 24010001 */ li $at, 1 +/* 08509C 7F05056C 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory +/* 0850A0 7F050570 AFA30068 */ sw $v1, 0x68($sp) +/* 0850A4 7F050574 8FAB0034 */ lw $t3, 0x34($sp) +/* 0850A8 7F050578 02002025 */ move $a0, $s0 +/* 0850AC 7F05057C 0FC1A44C */ jal give_cur_player_ammo +/* 0850B0 7F050580 004B2821 */ addu $a1, $v0, $t3 +/* 0850B4 7F050584 8FAC0044 */ lw $t4, 0x44($sp) +/* 0850B8 7F050588 8FA30068 */ lw $v1, 0x68($sp) +/* 0850BC 7F05058C 8FAD0074 */ lw $t5, 0x74($sp) +/* 0850C0 7F050590 55800039 */ bnezl $t4, .L7F050678 +/* 0850C4 7F050594 24010001 */ li $at, 1 +/* 0850C8 7F050598 11A00036 */ beqz $t5, .L7F050674 +/* 0850CC 7F05059C 02002025 */ move $a0, $s0 +/* 0850D0 7F0505A0 8FA50034 */ lw $a1, 0x34($sp) +/* 0850D4 7F0505A4 0FC13E7E */ jal display_text_when_ammo_collected +/* 0850D8 7F0505A8 AFA30068 */ sw $v1, 0x68($sp) +/* 0850DC 7F0505AC 10000031 */ b .L7F050674 +/* 0850E0 7F0505B0 8FA30068 */ lw $v1, 0x68($sp) +interact_bodyarmor_object: +/* 0850E4 7F0505B4 0FC228C3 */ jal add_BONDdata_watch_armor +/* 0850E8 7F0505B8 C46C0084 */ lwc1 $f12, 0x84($v1) +/* 0850EC 7F0505BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0850F0 7F0505C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0850F4 7F0505C4 24050051 */ li $a1, 81 +/* 0850F8 7F0505C8 0C002382 */ jal play_sfx_a1 +/* 0850FC 7F0505CC 00003025 */ move $a2, $zero +/* 085100 7F0505D0 8FAE0074 */ lw $t6, 0x74($sp) +/* 085104 7F0505D4 11C00013 */ beqz $t6, .L7F050624 +/* 085108 7F0505D8 00000000 */ nop +/* 08510C 7F0505DC 0FC23657 */ jal sub_GAME_7F08D95C +/* 085110 7F0505E0 8FA4006C */ lw $a0, 0x6c($sp) +/* 085114 7F0505E4 1440000D */ bnez $v0, .L7F05061C +/* 085118 7F0505E8 00402025 */ move $a0, $v0 +/* 08511C 7F0505EC 0FC26919 */ jal get_num_players +/* 085120 7F0505F0 00000000 */ nop +/* 085124 7F0505F4 28410003 */ slti $at, $v0, 3 +/* 085128 7F0505F8 10200005 */ beqz $at, .L7F050610 +/* 08512C 7F0505FC 00000000 */ nop +/* 085130 7F050600 0FC30776 */ jal get_textptr_for_textID +/* 085134 7F050604 3404A43D */ li $a0, 42045 +/* 085138 7F050608 10000004 */ b .L7F05061C +/* 08513C 7F05060C 00402025 */ move $a0, $v0 +.L7F050610: +/* 085140 7F050610 0FC30776 */ jal get_textptr_for_textID +/* 085144 7F050614 3404A43E */ li $a0, 42046 +/* 085148 7F050618 00402025 */ move $a0, $v0 +.L7F05061C: +/* 08514C 7F05061C 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 085150 7F050620 00000000 */ nop +.L7F050624: +/* 085154 7F050624 10000013 */ b .L7F050674 +/* 085158 7F050628 24030001 */ li $v1, 1 +interact_default_object: +.L7F05062C: +/* 08515C 7F05062C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 085160 7F050630 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 085164 7F050634 240500E5 */ li $a1, 229 +/* 085168 7F050638 0C002382 */ jal play_sfx_a1 +/* 08516C 7F05063C 00003025 */ move $a2, $zero +/* 085170 7F050640 8FAF0074 */ lw $t7, 0x74($sp) +/* 085174 7F050644 51E0000B */ beql $t7, $zero, .L7F050674 +/* 085178 7F050648 24030004 */ li $v1, 4 +/* 08517C 7F05064C 0FC23657 */ jal sub_GAME_7F08D95C +/* 085180 7F050650 8FA4006C */ lw $a0, 0x6c($sp) +/* 085184 7F050654 14400004 */ bnez $v0, .L7F050668 +/* 085188 7F050658 00402025 */ move $a0, $v0 +/* 08518C 7F05065C 0FC30776 */ jal get_textptr_for_textID +/* 085190 7F050660 3404A43F */ li $a0, 42047 +/* 085194 7F050664 00402025 */ move $a0, $v0 +.L7F050668: +/* 085198 7F050668 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 08519C 7F05066C 00000000 */ nop +/* 0851A0 7F050670 24030004 */ li $v1, 4 +.L7F050674: +/* 0851A4 7F050674 24010001 */ li $at, 1 +.L7F050678: +/* 0851A8 7F050678 1461000D */ bne $v1, $at, .L7F0506B0 +/* 0851AC 7F05067C 8FB8006C */ lw $t8, 0x6c($sp) +/* 0851B0 7F050680 8F190064 */ lw $t9, 0x64($t8) +/* 0851B4 7F050684 33280010 */ andi $t0, $t9, 0x10 +/* 0851B8 7F050688 15000009 */ bnez $t0, .L7F0506B0 +/* 0851BC 7F05068C 00000000 */ nop +/* 0851C0 7F050690 93060002 */ lbu $a2, 2($t8) +/* 0851C4 7F050694 03002025 */ move $a0, $t8 +/* 0851C8 7F050698 00002825 */ move $a1, $zero +/* 0851CC 7F05069C 30C90004 */ andi $t1, $a2, 4 +/* 0851D0 7F0506A0 0FC10366 */ jal sub_GAME_7F040D98 +/* 0851D4 7F0506A4 01203025 */ move $a2, $t1 +/* 0851D8 7F0506A8 10000007 */ b .L7F0506C8 +/* 0851DC 7F0506AC 24020001 */ li $v0, 1 +.L7F0506B0: +/* 0851E0 7F0506B0 10600005 */ beqz $v1, .L7F0506C8 +/* 0851E4 7F0506B4 00001025 */ move $v0, $zero +/* 0851E8 7F0506B8 0FC231C9 */ jal sub_GAME_7F08C724 +/* 0851EC 7F0506BC 8FA40070 */ lw $a0, 0x70($sp) +/* 0851F0 7F0506C0 10000001 */ b .L7F0506C8 +/* 0851F4 7F0506C4 24020004 */ li $v0, 4 +.L7F0506C8: +/* 0851F8 7F0506C8 8FBF001C */ lw $ra, 0x1c($sp) +/* 0851FC 7F0506CC 8FB00018 */ lw $s0, 0x18($sp) +/* 085200 7F0506D0 27BD0070 */ addiu $sp, $sp, 0x70 +/* 085204 7F0506D4 03E00008 */ jr $ra +/* 085208 7F0506D8 00000000 */ nop +) +#endif +#endif + + + + +#ifdef NONMATCHING +void object_collectability_routines(void) { + +} +#else + +#ifdef VERSION_US +GLOBAL_ASM( +.late_rodata +glabel D_800532E0 +.word 0xbf490fdb /*-0.78539819*/ +glabel D_800532E4 +.word 0x47ef4200 /*122500.0*/ +glabel D_800532E8 +.word 0x461c4000 /*10000.0*/ +glabel D_800532EC +.word 0x47742400 /*62500.0*/ +glabel D_800532F0 +.word 0x40490fdb /*3.1415927*/ +.text +glabel object_collectability_routines +/* 08520C 7F0506DC 27BDFF78 */ addiu $sp, $sp, -0x88 +/* 085210 7F0506E0 AFBF002C */ sw $ra, 0x2c($sp) +/* 085214 7F0506E4 AFA40088 */ sw $a0, 0x88($sp) +/* 085218 7F0506E8 8C840004 */ lw $a0, 4($a0) +/* 08521C 7F0506EC 0FC13803 */ jal check_if_collectable_object +/* 085220 7F0506F0 AFA40084 */ sw $a0, 0x84($sp) +/* 085224 7F0506F4 1040000B */ beqz $v0, .L7F050724 +/* 085228 7F0506F8 8FA40084 */ lw $a0, 0x84($sp) +/* 08522C 7F0506FC 908F0003 */ lbu $t7, 3($a0) +/* 085230 7F050700 24010011 */ li $at, 17 +/* 085234 7F050704 51E10008 */ beql $t7, $at, .L7F050728 +/* 085238 7F050708 8FA40084 */ lw $a0, 0x84($sp) +/* 08523C 7F05070C 8C820008 */ lw $v0, 8($a0) +/* 085240 7F050710 0002C2C0 */ sll $t8, $v0, 0xb +/* 085244 7F050714 0703000B */ bgezl $t8, .L7F050744 +/* 085248 7F050718 00024B00 */ sll $t1, $v0, 0xc +/* 08524C 7F05071C 10000180 */ b .L7F050D20 +/* 085250 7F050720 00001025 */ move $v0, $zero +.L7F050724: +/* 085254 7F050724 8FA40084 */ lw $a0, 0x84($sp) +.L7F050728: +/* 085258 7F050728 8C820008 */ lw $v0, 8($a0) +/* 08525C 7F05072C 0002CB40 */ sll $t9, $v0, 0xd +/* 085260 7F050730 07220004 */ bltzl $t9, .L7F050744 +/* 085264 7F050734 00024B00 */ sll $t1, $v0, 0xc +/* 085268 7F050738 10000179 */ b .L7F050D20 +/* 08526C 7F05073C 00001025 */ move $v0, $zero +/* 085270 7F050740 00024B00 */ sll $t1, $v0, 0xc +.L7F050744: +/* 085274 7F050744 05230004 */ bgezl $t1, .L7F050758 +/* 085278 7F050748 8C8A0064 */ lw $t2, 0x64($a0) +/* 08527C 7F05074C 10000174 */ b .L7F050D20 +/* 085280 7F050750 00001025 */ move $v0, $zero +/* 085284 7F050754 8C8A0064 */ lw $t2, 0x64($a0) +.L7F050758: +/* 085288 7F050758 314B0080 */ andi $t3, $t2, 0x80 +/* 08528C 7F05075C 1160000A */ beqz $t3, .L7F050788 +/* 085290 7F050760 00000000 */ nop +/* 085294 7F050764 8C82006C */ lw $v0, 0x6c($a0) +/* 085298 7F050768 8C4C00BC */ lw $t4, 0xbc($v0) +/* 08529C 7F05076C 19800006 */ blez $t4, .L7F050788 +/* 0852A0 7F050770 00000000 */ nop +/* 0852A4 7F050774 8C4D0090 */ lw $t5, 0x90($v0) +/* 0852A8 7F050778 15A00003 */ bnez $t5, .L7F050788 +/* 0852AC 7F05077C 00000000 */ nop +/* 0852B0 7F050780 10000167 */ b .L7F050D20 +/* 0852B4 7F050784 00001025 */ move $v0, $zero +.L7F050788: +/* 0852B8 7F050788 0FC0F9EB */ jal sub_GAME_7F03E7AC +/* 0852BC 7F05078C 00000000 */ nop +/* 0852C0 7F050790 14400003 */ bnez $v0, .L7F0507A0 +/* 0852C4 7F050794 8FA50084 */ lw $a1, 0x84($sp) +/* 0852C8 7F050798 10000161 */ b .L7F050D20 +/* 0852CC 7F05079C 00001025 */ move $v0, $zero +.L7F0507A0: +/* 0852D0 7F0507A0 90A20003 */ lbu $v0, 3($a1) +/* 0852D4 7F0507A4 24010008 */ li $at, 8 +/* 0852D8 7F0507A8 8FAE0088 */ lw $t6, 0x88($sp) +/* 0852DC 7F0507AC 54410064 */ bnel $v0, $at, .L7F050940 +/* 0852E0 7F0507B0 24010007 */ li $at, 7 +/* 0852E4 7F0507B4 8DC30004 */ lw $v1, 4($t6) +/* 0852E8 7F0507B8 2401001A */ li $at, 26 +/* 0852EC 7F0507BC 80640080 */ lb $a0, 0x80($v1) +/* 0852F0 7F0507C0 10810003 */ beq $a0, $at, .L7F0507D0 +/* 0852F4 7F0507C4 24010057 */ li $at, 87 +/* 0852F8 7F0507C8 5481000B */ bnel $a0, $at, .L7F0507F8 +/* 0852FC 7F0507CC 2401001D */ li $at, 29 +.L7F0507D0: +/* 085300 7F0507D0 846F0082 */ lh $t7, 0x82($v1) +/* 085304 7F0507D4 05E10005 */ bgez $t7, .L7F0507EC +/* 085308 7F0507D8 00000000 */ nop +/* 08530C 7F0507DC 8CB80064 */ lw $t8, 0x64($a1) +/* 085310 7F0507E0 33190004 */ andi $t9, $t8, 4 +/* 085314 7F0507E4 53200004 */ beql $t9, $zero, .L7F0507F8 +/* 085318 7F0507E8 2401001D */ li $at, 29 +.L7F0507EC: +/* 08531C 7F0507EC 1000014C */ b .L7F050D20 +/* 085320 7F0507F0 00001025 */ move $v0, $zero +/* 085324 7F0507F4 2401001D */ li $at, 29 +.L7F0507F8: +/* 085328 7F0507F8 1081000D */ beq $a0, $at, .L7F050830 +/* 08532C 7F0507FC 2401001C */ li $at, 28 +/* 085330 7F050800 1081000B */ beq $a0, $at, .L7F050830 +/* 085334 7F050804 2401001B */ li $at, 27 +/* 085338 7F050808 10810009 */ beq $a0, $at, .L7F050830 +/* 08533C 7F05080C 24010021 */ li $at, 33 +/* 085340 7F050810 10810007 */ beq $a0, $at, .L7F050830 +/* 085344 7F050814 2401002F */ li $at, 47 +/* 085348 7F050818 10810005 */ beq $a0, $at, .L7F050830 +/* 08534C 7F05081C 24010030 */ li $at, 48 +/* 085350 7F050820 10810003 */ beq $a0, $at, .L7F050830 +/* 085354 7F050824 24010022 */ li $at, 34 +/* 085358 7F050828 5481000B */ bnel $a0, $at, .L7F050858 +/* 08535C 7F05082C 24010056 */ li $at, 86 +.L7F050830: +/* 085360 7F050830 84690082 */ lh $t1, 0x82($v1) +/* 085364 7F050834 05210005 */ bgez $t1, .L7F05084C +/* 085368 7F050838 00000000 */ nop +/* 08536C 7F05083C 8CAA0064 */ lw $t2, 0x64($a1) +/* 085370 7F050840 314B0004 */ andi $t3, $t2, 4 +/* 085374 7F050844 51600004 */ beql $t3, $zero, .L7F050858 +/* 085378 7F050848 24010056 */ li $at, 86 +.L7F05084C: +/* 08537C 7F05084C 10000134 */ b .L7F050D20 +/* 085380 7F050850 00001025 */ move $v0, $zero +/* 085384 7F050854 24010056 */ li $at, 86 +.L7F050858: +/* 085388 7F050858 14810007 */ bne $a0, $at, .L7F050878 +/* 08538C 7F05085C 00000000 */ nop +/* 085390 7F050860 8CAC0064 */ lw $t4, 0x64($a1) +/* 085394 7F050864 318D0080 */ andi $t5, $t4, 0x80 +/* 085398 7F050868 11A00003 */ beqz $t5, .L7F050878 +/* 08539C 7F05086C 00000000 */ nop +/* 0853A0 7F050870 1000012B */ b .L7F050D20 +/* 0853A4 7F050874 00001025 */ move $v0, $zero +.L7F050878: +/* 0853A8 7F050878 0FC230C5 */ jal is_weapon_in_inv +/* 0853AC 7F05087C AFA30080 */ sw $v1, 0x80($sp) +/* 0853B0 7F050880 1040009B */ beqz $v0, .L7F050AF0 +/* 0853B4 7F050884 8FA30080 */ lw $v1, 0x80($sp) +/* 0853B8 7F050888 80640080 */ lb $a0, 0x80($v1) +/* 0853BC 7F05088C 0FC1A50B */ jal get_ammo_type_for_weapon +/* 0853C0 7F050890 AFA30080 */ sw $v1, 0x80($sp) +/* 0853C4 7F050894 10400096 */ beqz $v0, .L7F050AF0 +/* 0853C8 7F050898 8FA30080 */ lw $v1, 0x80($sp) +/* 0853CC 7F05089C 80640080 */ lb $a0, 0x80($v1) +/* 0853D0 7F0508A0 0FC1A514 */ jal get_ammo_count_for_weapon +/* 0853D4 7F0508A4 AFA30080 */ sw $v1, 0x80($sp) +/* 0853D8 7F0508A8 8FA30080 */ lw $v1, 0x80($sp) +/* 0853DC 7F0508AC 80640080 */ lb $a0, 0x80($v1) +/* 0853E0 7F0508B0 0FC1A52C */ jal get_max_ammo_for_weapon +/* 0853E4 7F0508B4 AFA20038 */ sw $v0, 0x38($sp) +/* 0853E8 7F0508B8 8FA60038 */ lw $a2, 0x38($sp) +/* 0853EC 7F0508BC 8FA30080 */ lw $v1, 0x80($sp) +/* 0853F0 7F0508C0 00C2082A */ slt $at, $a2, $v0 +/* 0853F4 7F0508C4 1420008A */ bnez $at, .L7F050AF0 +/* 0853F8 7F0508C8 00000000 */ nop +/* 0853FC 7F0508CC 8C620084 */ lw $v0, 0x84($v1) +/* 085400 7F0508D0 14400004 */ bnez $v0, .L7F0508E4 +/* 085404 7F0508D4 00000000 */ nop +/* 085408 7F0508D8 806E0081 */ lb $t6, 0x81($v1) +/* 08540C 7F0508DC 05C00015 */ bltz $t6, .L7F050934 +/* 085410 7F0508E0 00000000 */ nop +.L7F0508E4: +/* 085414 7F0508E4 50400005 */ beql $v0, $zero, .L7F0508FC +/* 085418 7F0508E8 80650081 */ lb $a1, 0x81($v1) +/* 08541C 7F0508EC 80450080 */ lb $a1, 0x80($v0) +/* 085420 7F0508F0 10000003 */ b .L7F050900 +/* 085424 7F0508F4 00A02025 */ move $a0, $a1 +/* 085428 7F0508F8 80650081 */ lb $a1, 0x81($v1) +.L7F0508FC: +/* 08542C 7F0508FC 00A02025 */ move $a0, $a1 +.L7F050900: +/* 085430 7F050900 8C6F0008 */ lw $t7, 8($v1) +/* 085434 7F050904 000FC0C0 */ sll $t8, $t7, 3 +/* 085438 7F050908 07030004 */ bgezl $t8, .L7F05091C +/* 08543C 7F05090C 80640080 */ lb $a0, 0x80($v1) +/* 085440 7F050910 10000002 */ b .L7F05091C +/* 085444 7F050914 80650080 */ lb $a1, 0x80($v1) +/* 085448 7F050918 80640080 */ lb $a0, 0x80($v1) +.L7F05091C: +/* 08544C 7F05091C 0FC230E7 */ jal is_item_for_hand_in_inventory +/* 085450 7F050920 00000000 */ nop +/* 085454 7F050924 10400072 */ beqz $v0, .L7F050AF0 +/* 085458 7F050928 00000000 */ nop +/* 08545C 7F05092C 100000FC */ b .L7F050D20 +/* 085460 7F050930 00001025 */ move $v0, $zero +.L7F050934: +/* 085464 7F050934 100000FA */ b .L7F050D20 +/* 085468 7F050938 00001025 */ move $v0, $zero +/* 08546C 7F05093C 24010007 */ li $at, 7 +.L7F050940: +/* 085470 7F050940 1441000F */ bne $v0, $at, .L7F050980 +/* 085474 7F050944 8FB90088 */ lw $t9, 0x88($sp) +/* 085478 7F050948 8F230004 */ lw $v1, 4($t9) +/* 08547C 7F05094C 8C640080 */ lw $a0, 0x80($v1) +/* 085480 7F050950 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory +/* 085484 7F050954 AFA30074 */ sw $v1, 0x74($sp) +/* 085488 7F050958 8FA30074 */ lw $v1, 0x74($sp) +/* 08548C 7F05095C 8C640080 */ lw $a0, 0x80($v1) +/* 085490 7F050960 0FC1A4B5 */ jal get_max_ammo_for_type +/* 085494 7F050964 AFA20038 */ sw $v0, 0x38($sp) +/* 085498 7F050968 8FA60038 */ lw $a2, 0x38($sp) +/* 08549C 7F05096C 00C2082A */ slt $at, $a2, $v0 +/* 0854A0 7F050970 1420005F */ bnez $at, .L7F050AF0 +/* 0854A4 7F050974 00000000 */ nop +/* 0854A8 7F050978 100000E9 */ b .L7F050D20 +/* 0854AC 7F05097C 00001025 */ move $v0, $zero +.L7F050980: +/* 0854B0 7F050980 24010014 */ li $at, 20 +/* 0854B4 7F050984 1441002C */ bne $v0, $at, .L7F050A38 +/* 0854B8 7F050988 8FA90088 */ lw $t1, 0x88($sp) +/* 0854BC 7F05098C 8D2A0004 */ lw $t2, 4($t1) +/* 0854C0 7F050990 240B0001 */ li $t3, 1 +/* 0854C4 7F050994 AFAB006C */ sw $t3, 0x6c($sp) +/* 0854C8 7F050998 00A02025 */ move $a0, $a1 +/* 0854CC 7F05099C 0FC0FFF0 */ jal do_something_if_object_destroyed +/* 0854D0 7F0509A0 AFAA0070 */ sw $t2, 0x70($sp) +/* 0854D4 7F0509A4 10400003 */ beqz $v0, .L7F0509B4 +/* 0854D8 7F0509A8 8FA30070 */ lw $v1, 0x70($sp) +/* 0854DC 7F0509AC 100000DC */ b .L7F050D20 +/* 0854E0 7F0509B0 00001025 */ move $v0, $zero +.L7F0509B4: +/* 0854E4 7F0509B4 00001025 */ move $v0, $zero +.L7F0509B8: +/* 0854E8 7F0509B8 24450001 */ addiu $a1, $v0, 1 +/* 0854EC 7F0509BC 24010001 */ li $at, 1 +/* 0854F0 7F0509C0 14410002 */ bne $v0, $at, .L7F0509CC +/* 0854F4 7F0509C4 00A02025 */ move $a0, $a1 +/* 0854F8 7F0509C8 24040001 */ li $a0, 1 +.L7F0509CC: +/* 0854FC 7F0509CC 946C0082 */ lhu $t4, 0x82($v1) +/* 085500 7F0509D0 59800011 */ blezl $t4, .L7F050A18 +/* 085504 7F0509D4 2401000D */ li $at, 13 +/* 085508 7F0509D8 AFA30030 */ sw $v1, 0x30($sp) +/* 08550C 7F0509DC AFA40064 */ sw $a0, 0x64($sp) +/* 085510 7F0509E0 0FC1A490 */ jal check_cur_player_ammo_amount_in_inventory +/* 085514 7F0509E4 AFA50034 */ sw $a1, 0x34($sp) +/* 085518 7F0509E8 8FA40064 */ lw $a0, 0x64($sp) +/* 08551C 7F0509EC 0FC1A4B5 */ jal get_max_ammo_for_type +/* 085520 7F0509F0 AFA20038 */ sw $v0, 0x38($sp) +/* 085524 7F0509F4 8FA60038 */ lw $a2, 0x38($sp) +/* 085528 7F0509F8 8FA30030 */ lw $v1, 0x30($sp) +/* 08552C 7F0509FC 8FA50034 */ lw $a1, 0x34($sp) +/* 085530 7F050A00 00C2082A */ slt $at, $a2, $v0 +/* 085534 7F050A04 50200004 */ beql $at, $zero, .L7F050A18 +/* 085538 7F050A08 2401000D */ li $at, 13 +/* 08553C 7F050A0C 10000005 */ b .L7F050A24 +/* 085540 7F050A10 AFA0006C */ sw $zero, 0x6c($sp) +/* 085544 7F050A14 2401000D */ li $at, 13 +.L7F050A18: +/* 085548 7F050A18 00A01025 */ move $v0, $a1 +/* 08554C 7F050A1C 14A1FFE6 */ bne $a1, $at, .L7F0509B8 +/* 085550 7F050A20 24630004 */ addiu $v1, $v1, 4 +.L7F050A24: +/* 085554 7F050A24 8FAD006C */ lw $t5, 0x6c($sp) +/* 085558 7F050A28 11A00031 */ beqz $t5, .L7F050AF0 +/* 08555C 7F050A2C 00000000 */ nop +/* 085560 7F050A30 100000BB */ b .L7F050D20 +/* 085564 7F050A34 00001025 */ move $v0, $zero +.L7F050A38: +/* 085568 7F050A38 24010015 */ li $at, 21 +/* 08556C 7F050A3C 1441002C */ bne $v0, $at, .L7F050AF0 +/* 085570 7F050A40 8FAE0088 */ lw $t6, 0x88($sp) +/* 085574 7F050A44 8DCF0004 */ lw $t7, 4($t6) +/* 085578 7F050A48 AFA0005C */ sw $zero, 0x5c($sp) +/* 08557C 7F050A4C 0FC228BF */ jal get_BONDdata_watch_armor +/* 085580 7F050A50 AFAF0060 */ sw $t7, 0x60($sp) +/* 085584 7F050A54 8FB80060 */ lw $t8, 0x60($sp) +/* 085588 7F050A58 24190001 */ li $t9, 1 +/* 08558C 7F050A5C C7040084 */ lwc1 $f4, 0x84($t8) +/* 085590 7F050A60 4600203E */ c.le.s $f4, $f0 +/* 085594 7F050A64 00000000 */ nop +/* 085598 7F050A68 45000003 */ bc1f .L7F050A78 +/* 08559C 7F050A6C 00000000 */ nop +/* 0855A0 7F050A70 1000001A */ b .L7F050ADC +/* 0855A4 7F050A74 AFB9005C */ sw $t9, 0x5c($sp) +.L7F050A78: +/* 0855A8 7F050A78 0FC26919 */ jal get_num_players +/* 0855AC 7F050A7C 00000000 */ nop +/* 0855B0 7F050A80 28410002 */ slti $at, $v0, 2 +/* 0855B4 7F050A84 54200016 */ bnezl $at, .L7F050AE0 +/* 0855B8 7F050A88 8FAB005C */ lw $t3, 0x5c($sp) +/* 0855BC 7F050A8C 0FC051D6 */ jal get_scenario +/* 0855C0 7F050A90 00000000 */ nop +/* 0855C4 7F050A94 24010002 */ li $at, 2 +/* 0855C8 7F050A98 14410008 */ bne $v0, $at, .L7F050ABC +/* 0855CC 7F050A9C 00401825 */ move $v1, $v0 +/* 0855D0 7F050AA0 0FC233E0 */ jal sub_GAME_7F08CF80 +/* 0855D4 7F050AA4 AFA20058 */ sw $v0, 0x58($sp) +/* 0855D8 7F050AA8 10400004 */ beqz $v0, .L7F050ABC +/* 0855DC 7F050AAC 8FA30058 */ lw $v1, 0x58($sp) +/* 0855E0 7F050AB0 24090001 */ li $t1, 1 +/* 0855E4 7F050AB4 10000009 */ b .L7F050ADC +/* 0855E8 7F050AB8 AFA9005C */ sw $t1, 0x5c($sp) +.L7F050ABC: +/* 0855EC 7F050ABC 24010003 */ li $at, 3 +/* 0855F0 7F050AC0 54610007 */ bnel $v1, $at, .L7F050AE0 +/* 0855F4 7F050AC4 8FAB005C */ lw $t3, 0x5c($sp) +/* 0855F8 7F050AC8 0FC233F0 */ jal checkforgoldengun +/* 0855FC 7F050ACC 00000000 */ nop +/* 085600 7F050AD0 10400002 */ beqz $v0, .L7F050ADC +/* 085604 7F050AD4 240A0001 */ li $t2, 1 +/* 085608 7F050AD8 AFAA005C */ sw $t2, 0x5c($sp) +.L7F050ADC: +/* 08560C 7F050ADC 8FAB005C */ lw $t3, 0x5c($sp) +.L7F050AE0: +/* 085610 7F050AE0 11600003 */ beqz $t3, .L7F050AF0 +/* 085614 7F050AE4 00000000 */ nop +/* 085618 7F050AE8 1000008D */ b .L7F050D20 +/* 08561C 7F050AEC 00001025 */ move $v0, $zero +.L7F050AF0: +/* 085620 7F050AF0 0FC227C4 */ jal get_curplay_vertical_rotation_in_degrees +/* 085624 7F050AF4 00000000 */ nop +/* 085628 7F050AF8 3C018005 */ lui $at, %hi(D_800532E0) +/* 08562C 7F050AFC C42632E0 */ lwc1 $f6, %lo(D_800532E0)($at) +/* 085630 7F050B00 3C0C8008 */ lui $t4, %hi(pPlayer) +/* 085634 7F050B04 4606003C */ c.lt.s $f0, $f6 +/* 085638 7F050B08 00000000 */ nop +/* 08563C 7F050B0C 45000007 */ bc1f .L7F050B2C +/* 085640 7F050B10 00000000 */ nop +/* 085644 7F050B14 8D8CA0B0 */ lw $t4, %lo(pPlayer)($t4) +/* 085648 7F050B18 8D8D1270 */ lw $t5, 0x1270($t4) +/* 08564C 7F050B1C 05A10003 */ bgez $t5, .L7F050B2C +/* 085650 7F050B20 00000000 */ nop +/* 085654 7F050B24 1000007E */ b .L7F050D20 +/* 085658 7F050B28 00001025 */ move $v0, $zero +.L7F050B2C: +/* 08565C 7F050B2C 0FC225E6 */ jal get_curplayer_positiondata +/* 085660 7F050B30 00000000 */ nop +/* 085664 7F050B34 3C0F8008 */ lui $t7, %hi(pPlayer) +/* 085668 7F050B38 8FAE0084 */ lw $t6, 0x84($sp) +/* 08566C 7F050B3C 8DEFA0B0 */ lw $t7, %lo(pPlayer)($t7) +/* 085670 7F050B40 C44A0008 */ lwc1 $f10, 8($v0) +/* 085674 7F050B44 C452000C */ lwc1 $f18, 0xc($v0) +/* 085678 7F050B48 8DF81270 */ lw $t8, 0x1270($t7) +/* 08567C 7F050B4C C4460010 */ lwc1 $f6, 0x10($v0) +/* 085680 7F050B50 C5C80058 */ lwc1 $f8, 0x58($t6) +/* 085684 7F050B54 C5D0005C */ lwc1 $f16, 0x5c($t6) +/* 085688 7F050B58 C5C40060 */ lwc1 $f4, 0x60($t6) +/* 08568C 7F050B5C 2B01003C */ slti $at, $t8, 0x3c +/* 085690 7F050B60 00404025 */ move $t0, $v0 +/* 085694 7F050B64 460A4001 */ sub.s $f0, $f8, $f10 +/* 085698 7F050B68 46128301 */ sub.s $f12, $f16, $f18 +/* 08569C 7F050B6C 14200022 */ bnez $at, .L7F050BF8 +/* 0856A0 7F050B70 46062081 */ sub.s $f2, $f4, $f6 +/* 0856A4 7F050B74 46000202 */ mul.s $f8, $f0, $f0 +/* 0856A8 7F050B78 3C018005 */ lui $at, %hi(D_800532E4) +/* 0856AC 7F050B7C C43232E4 */ lwc1 $f18, %lo(D_800532E4)($at) +/* 0856B0 7F050B80 46021282 */ mul.s $f10, $f2, $f2 +/* 0856B4 7F050B84 3C01C3FA */ li $at, 0xC3FA0000 # -500.000000 +/* 0856B8 7F050B88 00001025 */ move $v0, $zero +/* 0856BC 7F050B8C 460A4400 */ add.s $f16, $f8, $f10 +/* 0856C0 7F050B90 4612803E */ c.le.s $f16, $f18 +/* 0856C4 7F050B94 00000000 */ nop +/* 0856C8 7F050B98 45000002 */ bc1f .L7F050BA4 +/* 0856CC 7F050B9C 00000000 */ nop +/* 0856D0 7F050BA0 24020001 */ li $v0, 1 +.L7F050BA4: +/* 0856D4 7F050BA4 10400012 */ beqz $v0, .L7F050BF0 +/* 0856D8 7F050BA8 00403025 */ move $a2, $v0 +/* 0856DC 7F050BAC 44812000 */ mtc1 $at, $f4 +/* 0856E0 7F050BB0 3C0143FA */ li $at, 0x43FA0000 # 500.000000 +/* 0856E4 7F050BB4 00001025 */ move $v0, $zero +/* 0856E8 7F050BB8 460C203E */ c.le.s $f4, $f12 +/* 0856EC 7F050BBC 00000000 */ nop +/* 0856F0 7F050BC0 45000002 */ bc1f .L7F050BCC +/* 0856F4 7F050BC4 00000000 */ nop +/* 0856F8 7F050BC8 24020001 */ li $v0, 1 +.L7F050BCC: +/* 0856FC 7F050BCC 10400008 */ beqz $v0, .L7F050BF0 +/* 085700 7F050BD0 00403025 */ move $a2, $v0 +/* 085704 7F050BD4 44813000 */ mtc1 $at, $f6 +/* 085708 7F050BD8 00003025 */ move $a2, $zero +/* 08570C 7F050BDC 4606603E */ c.le.s $f12, $f6 +/* 085710 7F050BE0 00000000 */ nop +/* 085714 7F050BE4 45000002 */ bc1f .L7F050BF0 +/* 085718 7F050BE8 00000000 */ nop +/* 08571C 7F050BEC 24060001 */ li $a2, 1 +.L7F050BF0: +/* 085720 7F050BF0 10000021 */ b .L7F050C78 +/* 085724 7F050BF4 00C01825 */ move $v1, $a2 +.L7F050BF8: +/* 085728 7F050BF8 46000202 */ mul.s $f8, $f0, $f0 +/* 08572C 7F050BFC 3C018005 */ lui $at, %hi(D_800532E8) +/* 085730 7F050C00 C43032E8 */ lwc1 $f16, %lo(D_800532E8)($at) +/* 085734 7F050C04 46021282 */ mul.s $f10, $f2, $f2 +/* 085738 7F050C08 3C01C348 */ li $at, 0xC3480000 # -200.000000 +/* 08573C 7F050C0C 00001025 */ move $v0, $zero +/* 085740 7F050C10 460A4480 */ add.s $f18, $f8, $f10 +/* 085744 7F050C14 4610903E */ c.le.s $f18, $f16 +/* 085748 7F050C18 00000000 */ nop +/* 08574C 7F050C1C 45000002 */ bc1f .L7F050C28 +/* 085750 7F050C20 00000000 */ nop +/* 085754 7F050C24 24020001 */ li $v0, 1 +.L7F050C28: +/* 085758 7F050C28 10400012 */ beqz $v0, .L7F050C74 +/* 08575C 7F050C2C 00403025 */ move $a2, $v0 +/* 085760 7F050C30 44812000 */ mtc1 $at, $f4 +/* 085764 7F050C34 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 085768 7F050C38 00001025 */ move $v0, $zero +/* 08576C 7F050C3C 460C203E */ c.le.s $f4, $f12 +/* 085770 7F050C40 00000000 */ nop +/* 085774 7F050C44 45000002 */ bc1f .L7F050C50 +/* 085778 7F050C48 00000000 */ nop +/* 08577C 7F050C4C 24020001 */ li $v0, 1 +.L7F050C50: +/* 085780 7F050C50 10400008 */ beqz $v0, .L7F050C74 +/* 085784 7F050C54 00403025 */ move $a2, $v0 +/* 085788 7F050C58 44813000 */ mtc1 $at, $f6 +/* 08578C 7F050C5C 00003025 */ move $a2, $zero +/* 085790 7F050C60 4606603E */ c.le.s $f12, $f6 +/* 085794 7F050C64 00000000 */ nop +/* 085798 7F050C68 45020003 */ bc1fl .L7F050C78 +/* 08579C 7F050C6C 00C01825 */ move $v1, $a2 +/* 0857A0 7F050C70 24060001 */ li $a2, 1 +.L7F050C74: +/* 0857A4 7F050C74 00C01825 */ move $v1, $a2 +.L7F050C78: +/* 0857A8 7F050C78 10C00022 */ beqz $a2, .L7F050D04 +/* 0857AC 7F050C7C 8FB90084 */ lw $t9, 0x84($sp) +/* 0857B0 7F050C80 8F29000C */ lw $t1, 0xc($t9) +/* 0857B4 7F050C84 8FA20088 */ lw $v0, 0x88($sp) +/* 0857B8 7F050C88 3C0141F0 */ li $at, 0x41F00000 # 30.000000 +/* 0857BC 7F050C8C 312A1000 */ andi $t2, $t1, 0x1000 +/* 0857C0 7F050C90 1540001C */ bnez $t2, .L7F050D04 +/* 0857C4 7F050C94 27A4003C */ addiu $a0, $sp, 0x3c +/* 0857C8 7F050C98 8D0B0014 */ lw $t3, 0x14($t0) +/* 0857CC 7F050C9C 44810000 */ mtc1 $at, $f0 +/* 0857D0 7F050CA0 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0857D4 7F050CA4 AFAB003C */ sw $t3, 0x3c($sp) +/* 0857D8 7F050CA8 C4480010 */ lwc1 $f8, 0x10($v0) +/* 0857DC 7F050CAC 8C470008 */ lw $a3, 8($v0) +/* 0857E0 7F050CB0 8D060010 */ lw $a2, 0x10($t0) +/* 0857E4 7F050CB4 8D050008 */ lw $a1, 8($t0) +/* 0857E8 7F050CB8 44818000 */ mtc1 $at, $f16 +/* 0857EC 7F050CBC 44805000 */ mtc1 $zero, $f10 +/* 0857F0 7F050CC0 240C0002 */ li $t4, 2 +/* 0857F4 7F050CC4 AFAC0014 */ sw $t4, 0x14($sp) +/* 0857F8 7F050CC8 AFA30040 */ sw $v1, 0x40($sp) +/* 0857FC 7F050CCC E7A0001C */ swc1 $f0, 0x1c($sp) +/* 085800 7F050CD0 E7A00018 */ swc1 $f0, 0x18($sp) +/* 085804 7F050CD4 E7A80010 */ swc1 $f8, 0x10($sp) +/* 085808 7F050CD8 E7B00024 */ swc1 $f16, 0x24($sp) +/* 08580C 7F050CDC 0FC2C389 */ jal sub_GAME_7F0B0E24 +/* 085810 7F050CE0 E7AA0020 */ swc1 $f10, 0x20($sp) +/* 085814 7F050CE4 10400006 */ beqz $v0, .L7F050D00 +/* 085818 7F050CE8 8FA30040 */ lw $v1, 0x40($sp) +/* 08581C 7F050CEC 8FAE0088 */ lw $t6, 0x88($sp) +/* 085820 7F050CF0 8FAD003C */ lw $t5, 0x3c($sp) +/* 085824 7F050CF4 8DCF0014 */ lw $t7, 0x14($t6) +/* 085828 7F050CF8 11AF0002 */ beq $t5, $t7, .L7F050D04 +/* 08582C 7F050CFC 00000000 */ nop +.L7F050D00: +/* 085830 7F050D00 00001825 */ move $v1, $zero +.L7F050D04: +/* 085834 7F050D04 10600006 */ beqz $v1, .L7F050D20 +/* 085838 7F050D08 00001025 */ move $v0, $zero +/* 08583C 7F050D0C 8FA40088 */ lw $a0, 0x88($sp) +/* 085840 7F050D10 0FC14094 */ jal collect_or_interact_object +/* 085844 7F050D14 24050001 */ li $a1, 1 +/* 085848 7F050D18 10000002 */ b .L7F050D24 +/* 08584C 7F050D1C 8FBF002C */ lw $ra, 0x2c($sp) +.L7F050D20: +/* 085850 7F050D20 8FBF002C */ lw $ra, 0x2c($sp) +.L7F050D24: +/* 085854 7F050D24 27BD0088 */ addiu $sp, $sp, 0x88 +/* 085858 7F050D28 03E00008 */ jr $ra +/* 08585C 7F050D2C 00000000 */ nop +) +#endif + +#ifdef VERSION_JP +GLOBAL_ASM( +.late_rodata +glabel D_800532E0 +.word 0xbf490fdb /*-0.78539819*/ +glabel D_800532E4 +.word 0x47ef4200 /*122500.0*/ +glabel D_800532E8 +.word 0x461c4000 /*10000.0*/ +glabel D_800532EC +.word 0x47742400 /*62500.0*/ +glabel D_800532F0 +.word 0x40490fdb /*3.1415927*/ +.text +glabel object_collectability_routines +/* 085650 7F050AE0 27BDFF70 */ addiu $sp, $sp, -0x90 +/* 085654 7F050AE4 AFBF0034 */ sw $ra, 0x34($sp) +/* 085658 7F050AE8 AFB00030 */ sw $s0, 0x30($sp) +/* 08565C 7F050AEC AFA40090 */ sw $a0, 0x90($sp) +/* 085660 7F050AF0 8C840004 */ lw $a0, 4($a0) +/* 085664 7F050AF4 0FC13904 */ jal check_if_collectable_object +/* 085668 7F050AF8 AFA4008C */ sw $a0, 0x8c($sp) +/* 08566C 7F050AFC 1040000B */ beqz $v0, .Ljp7F050B2C +/* 085670 7F050B00 8FA4008C */ lw $a0, 0x8c($sp) +/* 085674 7F050B04 908F0003 */ lbu $t7, 3($a0) +/* 085678 7F050B08 24010011 */ li $at, 17 +/* 08567C 7F050B0C 51E10008 */ beql $t7, $at, .Ljp7F050B30 +/* 085680 7F050B10 8FA4008C */ lw $a0, 0x8c($sp) +/* 085684 7F050B14 8C820008 */ lw $v0, 8($a0) +/* 085688 7F050B18 0002C2C0 */ sll $t8, $v0, 0xb +/* 08568C 7F050B1C 0703000B */ bgezl $t8, .Ljp7F050B4C +/* 085690 7F050B20 00024B00 */ sll $t1, $v0, 0xc +/* 085694 7F050B24 100001BC */ b .Ljp7F051218 +/* 085698 7F050B28 00001025 */ move $v0, $zero +.Ljp7F050B2C: +/* 08569C 7F050B2C 8FA4008C */ lw $a0, 0x8c($sp) +.Ljp7F050B30: +/* 0856A0 7F050B30 8C820008 */ lw $v0, 8($a0) +/* 0856A4 7F050B34 0002CB40 */ sll $t9, $v0, 0xd +/* 0856A8 7F050B38 07220004 */ bltzl $t9, .Ljp7F050B4C +/* 0856AC 7F050B3C 00024B00 */ sll $t1, $v0, 0xc +/* 0856B0 7F050B40 100001B5 */ b .Ljp7F051218 +/* 0856B4 7F050B44 00001025 */ move $v0, $zero +/* 0856B8 7F050B48 00024B00 */ sll $t1, $v0, 0xc +.Ljp7F050B4C: +/* 0856BC 7F050B4C 05230004 */ bgezl $t1, .Ljp7F050B60 +/* 0856C0 7F050B50 8C8A0064 */ lw $t2, 0x64($a0) +/* 0856C4 7F050B54 100001B0 */ b .Ljp7F051218 +/* 0856C8 7F050B58 00001025 */ move $v0, $zero +/* 0856CC 7F050B5C 8C8A0064 */ lw $t2, 0x64($a0) +.Ljp7F050B60: +/* 0856D0 7F050B60 314B0080 */ andi $t3, $t2, 0x80 +/* 0856D4 7F050B64 1160000A */ beqz $t3, .Ljp7F050B90 +/* 0856D8 7F050B68 00000000 */ nop +/* 0856DC 7F050B6C 8C82006C */ lw $v0, 0x6c($a0) +/* 0856E0 7F050B70 8C4C00BC */ lw $t4, 0xbc($v0) +/* 0856E4 7F050B74 19800006 */ blez $t4, .Ljp7F050B90 +/* 0856E8 7F050B78 00000000 */ nop +/* 0856EC 7F050B7C 8C4D0090 */ lw $t5, 0x90($v0) +/* 0856F0 7F050B80 15A00003 */ bnez $t5, .Ljp7F050B90 +/* 0856F4 7F050B84 00000000 */ nop +/* 0856F8 7F050B88 100001A3 */ b .Ljp7F051218 +/* 0856FC 7F050B8C 00001025 */ move $v0, $zero +.Ljp7F050B90: +/* 085700 7F050B90 0FC0FAAB */ jal sub_GAME_7F03E7AC +/* 085704 7F050B94 00000000 */ nop +/* 085708 7F050B98 14400003 */ bnez $v0, .Ljp7F050BA8 +/* 08570C 7F050B9C 8FA5008C */ lw $a1, 0x8c($sp) +/* 085710 7F050BA0 1000019D */ b .Ljp7F051218 +/* 085714 7F050BA4 00001025 */ move $v0, $zero +.Ljp7F050BA8: +/* 085718 7F050BA8 90A20003 */ lbu $v0, 3($a1) +/* 08571C 7F050BAC 24010008 */ li $at, 8 +/* 085720 7F050BB0 8FAE0090 */ lw $t6, 0x90($sp) +/* 085724 7F050BB4 54410060 */ bnel $v0, $at, .Ljp7F050D38 +/* 085728 7F050BB8 24010007 */ li $at, 7 +/* 08572C 7F050BBC 8DD00004 */ lw $s0, 4($t6) +/* 085730 7F050BC0 2401001A */ li $at, 26 +/* 085734 7F050BC4 82040080 */ lb $a0, 0x80($s0) +/* 085738 7F050BC8 10810003 */ beq $a0, $at, .Ljp7F050BD8 +/* 08573C 7F050BCC 24010057 */ li $at, 87 +/* 085740 7F050BD0 5481000B */ bnel $a0, $at, .Ljp7F050C00 +/* 085744 7F050BD4 2401001D */ li $at, 29 +.Ljp7F050BD8: +/* 085748 7F050BD8 860F0082 */ lh $t7, 0x82($s0) +/* 08574C 7F050BDC 05E10005 */ bgez $t7, .Ljp7F050BF4 +/* 085750 7F050BE0 00000000 */ nop +/* 085754 7F050BE4 8CB80064 */ lw $t8, 0x64($a1) +/* 085758 7F050BE8 33190004 */ andi $t9, $t8, 4 +/* 08575C 7F050BEC 53200004 */ beql $t9, $zero, .Ljp7F050C00 +/* 085760 7F050BF0 2401001D */ li $at, 29 +.Ljp7F050BF4: +/* 085764 7F050BF4 10000188 */ b .Ljp7F051218 +/* 085768 7F050BF8 00001025 */ move $v0, $zero +/* 08576C 7F050BFC 2401001D */ li $at, 29 +.Ljp7F050C00: +/* 085770 7F050C00 1081000D */ beq $a0, $at, .Ljp7F050C38 +/* 085774 7F050C04 2401001C */ li $at, 28 +/* 085778 7F050C08 1081000B */ beq $a0, $at, .Ljp7F050C38 +/* 08577C 7F050C0C 2401001B */ li $at, 27 +/* 085780 7F050C10 10810009 */ beq $a0, $at, .Ljp7F050C38 +/* 085784 7F050C14 24010021 */ li $at, 33 +/* 085788 7F050C18 10810007 */ beq $a0, $at, .Ljp7F050C38 +/* 08578C 7F050C1C 2401002F */ li $at, 47 +/* 085790 7F050C20 10810005 */ beq $a0, $at, .Ljp7F050C38 +/* 085794 7F050C24 24010030 */ li $at, 48 +/* 085798 7F050C28 10810003 */ beq $a0, $at, .Ljp7F050C38 +/* 08579C 7F050C2C 24010022 */ li $at, 34 +/* 0857A0 7F050C30 5481000B */ bnel $a0, $at, .Ljp7F050C60 +/* 0857A4 7F050C34 24010056 */ li $at, 86 +.Ljp7F050C38: +/* 0857A8 7F050C38 86090082 */ lh $t1, 0x82($s0) +/* 0857AC 7F050C3C 05210005 */ bgez $t1, .Ljp7F050C54 +/* 0857B0 7F050C40 00000000 */ nop +/* 0857B4 7F050C44 8CAA0064 */ lw $t2, 0x64($a1) +/* 0857B8 7F050C48 314B0004 */ andi $t3, $t2, 4 +/* 0857BC 7F050C4C 51600004 */ beql $t3, $zero, .Ljp7F050C60 +/* 0857C0 7F050C50 24010056 */ li $at, 86 +.Ljp7F050C54: +/* 0857C4 7F050C54 10000170 */ b .Ljp7F051218 +/* 0857C8 7F050C58 00001025 */ move $v0, $zero +/* 0857CC 7F050C5C 24010056 */ li $at, 86 +.Ljp7F050C60: +/* 0857D0 7F050C60 14810007 */ bne $a0, $at, .Ljp7F050C80 +/* 0857D4 7F050C64 00000000 */ nop +/* 0857D8 7F050C68 8CAC0064 */ lw $t4, 0x64($a1) +/* 0857DC 7F050C6C 318D0080 */ andi $t5, $t4, 0x80 +/* 0857E0 7F050C70 11A00003 */ beqz $t5, .Ljp7F050C80 +/* 0857E4 7F050C74 00000000 */ nop +/* 0857E8 7F050C78 10000167 */ b .Ljp7F051218 +/* 0857EC 7F050C7C 00001025 */ move $v0, $zero +.Ljp7F050C80: +/* 0857F0 7F050C80 0FC232E9 */ jal is_weapon_in_inv +/* 0857F4 7F050C84 00000000 */ nop +/* 0857F8 7F050C88 104000D9 */ beqz $v0, .Ljp7F050FF0 +/* 0857FC 7F050C8C 00000000 */ nop +/* 085800 7F050C90 0FC1A686 */ jal get_ammo_type_for_weapon +/* 085804 7F050C94 82040080 */ lb $a0, 0x80($s0) +/* 085808 7F050C98 104000D5 */ beqz $v0, .Ljp7F050FF0 +/* 08580C 7F050C9C 00000000 */ nop +/* 085810 7F050CA0 0FC1A68F */ jal get_ammo_count_for_weapon +/* 085814 7F050CA4 82040080 */ lb $a0, 0x80($s0) +/* 085818 7F050CA8 82040080 */ lb $a0, 0x80($s0) +/* 08581C 7F050CAC 0FC1A6A7 */ jal get_max_ammo_for_weapon +/* 085820 7F050CB0 AFA20040 */ sw $v0, 0x40($sp) +/* 085824 7F050CB4 8FA30040 */ lw $v1, 0x40($sp) +/* 085828 7F050CB8 0062082A */ slt $at, $v1, $v0 +/* 08582C 7F050CBC 142000CC */ bnez $at, .Ljp7F050FF0 +/* 085830 7F050CC0 00000000 */ nop +/* 085834 7F050CC4 8E020084 */ lw $v0, 0x84($s0) +/* 085838 7F050CC8 14400004 */ bnez $v0, .Ljp7F050CDC +/* 08583C 7F050CCC 00000000 */ nop +/* 085840 7F050CD0 820E0081 */ lb $t6, 0x81($s0) +/* 085844 7F050CD4 05C00015 */ bltz $t6, .Ljp7F050D2C +/* 085848 7F050CD8 00000000 */ nop +.Ljp7F050CDC: +/* 08584C 7F050CDC 50400005 */ beql $v0, $zero, .Ljp7F050CF4 +/* 085850 7F050CE0 82050081 */ lb $a1, 0x81($s0) +/* 085854 7F050CE4 80450080 */ lb $a1, 0x80($v0) +/* 085858 7F050CE8 10000003 */ b .Ljp7F050CF8 +/* 08585C 7F050CEC 00A02025 */ move $a0, $a1 +/* 085860 7F050CF0 82050081 */ lb $a1, 0x81($s0) +.Ljp7F050CF4: +/* 085864 7F050CF4 00A02025 */ move $a0, $a1 +.Ljp7F050CF8: +/* 085868 7F050CF8 8E0F0008 */ lw $t7, 8($s0) +/* 08586C 7F050CFC 000FC0C0 */ sll $t8, $t7, 3 +/* 085870 7F050D00 07030004 */ bgezl $t8, .Ljp7F050D14 +/* 085874 7F050D04 82040080 */ lb $a0, 0x80($s0) +/* 085878 7F050D08 10000002 */ b .Ljp7F050D14 +/* 08587C 7F050D0C 82050080 */ lb $a1, 0x80($s0) +/* 085880 7F050D10 82040080 */ lb $a0, 0x80($s0) +.Ljp7F050D14: +/* 085884 7F050D14 0FC2330B */ jal is_item_for_hand_in_inventory +/* 085888 7F050D18 00000000 */ nop +/* 08588C 7F050D1C 104000B4 */ beqz $v0, .Ljp7F050FF0 +/* 085890 7F050D20 00000000 */ nop +/* 085894 7F050D24 1000013C */ b .Ljp7F051218 +/* 085898 7F050D28 00001025 */ move $v0, $zero +.Ljp7F050D2C: +/* 08589C 7F050D2C 1000013A */ b .Ljp7F051218 +/* 0858A0 7F050D30 00001025 */ move $v0, $zero +/* 0858A4 7F050D34 24010007 */ li $at, 7 +.Ljp7F050D38: +/* 0858A8 7F050D38 14410035 */ bne $v0, $at, .Ljp7F050E10 +/* 0858AC 7F050D3C 8FB90090 */ lw $t9, 0x90($sp) +/* 0858B0 7F050D40 8F300004 */ lw $s0, 4($t9) +/* 0858B4 7F050D44 0FC1A60B */ jal check_cur_player_ammo_amount_in_inventory +/* 0858B8 7F050D48 8E040080 */ lw $a0, 0x80($s0) +/* 0858BC 7F050D4C 8E040080 */ lw $a0, 0x80($s0) +/* 0858C0 7F050D50 0FC1A630 */ jal get_max_ammo_for_type +/* 0858C4 7F050D54 AFA20040 */ sw $v0, 0x40($sp) +/* 0858C8 7F050D58 8FA30040 */ lw $v1, 0x40($sp) +/* 0858CC 7F050D5C 0062082A */ slt $at, $v1, $v0 +/* 0858D0 7F050D60 142000A3 */ bnez $at, .Ljp7F050FF0 +/* 0858D4 7F050D64 00000000 */ nop +/* 0858D8 7F050D68 8E020080 */ lw $v0, 0x80($s0) +/* 0858DC 7F050D6C 24010005 */ li $at, 5 +/* 0858E0 7F050D70 54410007 */ bnel $v0, $at, .Ljp7F050D90 +/* 0858E4 7F050D74 24010007 */ li $at, 7 +/* 0858E8 7F050D78 0FC232E9 */ jal is_weapon_in_inv +/* 0858EC 7F050D7C 2404001A */ li $a0, 26 +/* 0858F0 7F050D80 1040009B */ beqz $v0, .Ljp7F050FF0 +/* 0858F4 7F050D84 00000000 */ nop +/* 0858F8 7F050D88 8E020080 */ lw $v0, 0x80($s0) +/* 0858FC 7F050D8C 24010007 */ li $at, 7 +.Ljp7F050D90: +/* 085900 7F050D90 54410007 */ bnel $v0, $at, .Ljp7F050DB0 +/* 085904 7F050D94 24010008 */ li $at, 8 +/* 085908 7F050D98 0FC232E9 */ jal is_weapon_in_inv +/* 08590C 7F050D9C 2404001D */ li $a0, 29 +/* 085910 7F050DA0 10400093 */ beqz $v0, .Ljp7F050FF0 +/* 085914 7F050DA4 00000000 */ nop +/* 085918 7F050DA8 8E020080 */ lw $v0, 0x80($s0) +/* 08591C 7F050DAC 24010008 */ li $at, 8 +.Ljp7F050DB0: +/* 085920 7F050DB0 54410007 */ bnel $v0, $at, .Ljp7F050DD0 +/* 085924 7F050DB4 24010009 */ li $at, 9 +/* 085928 7F050DB8 0FC232E9 */ jal is_weapon_in_inv +/* 08592C 7F050DBC 2404001C */ li $a0, 28 +/* 085930 7F050DC0 1040008B */ beqz $v0, .Ljp7F050FF0 +/* 085934 7F050DC4 00000000 */ nop +/* 085938 7F050DC8 8E020080 */ lw $v0, 0x80($s0) +/* 08593C 7F050DCC 24010009 */ li $at, 9 +.Ljp7F050DD0: +/* 085940 7F050DD0 54410007 */ bnel $v0, $at, .Ljp7F050DF0 +/* 085944 7F050DD4 2401000A */ li $at, 10 +/* 085948 7F050DD8 0FC232E9 */ jal is_weapon_in_inv +/* 08594C 7F050DDC 2404001B */ li $a0, 27 +/* 085950 7F050DE0 10400083 */ beqz $v0, .Ljp7F050FF0 +/* 085954 7F050DE4 00000000 */ nop +/* 085958 7F050DE8 8E020080 */ lw $v0, 0x80($s0) +/* 08595C 7F050DEC 2401000A */ li $at, 10 +.Ljp7F050DF0: +/* 085960 7F050DF0 14410005 */ bne $v0, $at, .Ljp7F050E08 +/* 085964 7F050DF4 00000000 */ nop +/* 085968 7F050DF8 0FC232E9 */ jal is_weapon_in_inv +/* 08596C 7F050DFC 24040003 */ li $a0, 3 +/* 085970 7F050E00 1040007B */ beqz $v0, .Ljp7F050FF0 +/* 085974 7F050E04 00000000 */ nop +.Ljp7F050E08: +/* 085978 7F050E08 10000103 */ b .Ljp7F051218 +/* 08597C 7F050E0C 00001025 */ move $v0, $zero +.Ljp7F050E10: +/* 085980 7F050E10 24010014 */ li $at, 20 +/* 085984 7F050E14 1441004B */ bne $v0, $at, .Ljp7F050F44 +/* 085988 7F050E18 8FA90090 */ lw $t1, 0x90($sp) +/* 08598C 7F050E1C 8D300004 */ lw $s0, 4($t1) +/* 085990 7F050E20 240A0001 */ li $t2, 1 +/* 085994 7F050E24 AFAA0074 */ sw $t2, 0x74($sp) +/* 085998 7F050E28 0FC100B0 */ jal do_something_if_object_destroyed +/* 08599C 7F050E2C 00A02025 */ move $a0, $a1 +/* 0859A0 7F050E30 10400003 */ beqz $v0, .Ljp7F050E40 +/* 0859A4 7F050E34 02001825 */ move $v1, $s0 +/* 0859A8 7F050E38 100000F7 */ b .Ljp7F051218 +/* 0859AC 7F050E3C 00001025 */ move $v0, $zero +.Ljp7F050E40: +/* 0859B0 7F050E40 00001025 */ move $v0, $zero +.Ljp7F050E44: +/* 0859B4 7F050E44 24500001 */ addiu $s0, $v0, 1 +/* 0859B8 7F050E48 24010001 */ li $at, 1 +/* 0859BC 7F050E4C 14410002 */ bne $v0, $at, .Ljp7F050E58 +/* 0859C0 7F050E50 AFB0003C */ sw $s0, 0x3c($sp) +/* 0859C4 7F050E54 24100001 */ li $s0, 1 +.Ljp7F050E58: +/* 0859C8 7F050E58 AFA30038 */ sw $v1, 0x38($sp) +/* 0859CC 7F050E5C 946C0082 */ lhu $t4, 0x82($v1) +/* 0859D0 7F050E60 02002025 */ move $a0, $s0 +/* 0859D4 7F050E64 5980002E */ blezl $t4, .Ljp7F050F20 +/* 0859D8 7F050E68 8FA2003C */ lw $v0, 0x3c($sp) +/* 0859DC 7F050E6C 0FC1A60B */ jal check_cur_player_ammo_amount_in_inventory +/* 0859E0 7F050E70 AFA30038 */ sw $v1, 0x38($sp) +/* 0859E4 7F050E74 02002025 */ move $a0, $s0 +/* 0859E8 7F050E78 0FC1A630 */ jal get_max_ammo_for_type +/* 0859EC 7F050E7C AFA20040 */ sw $v0, 0x40($sp) +/* 0859F0 7F050E80 8FA30040 */ lw $v1, 0x40($sp) +/* 0859F4 7F050E84 0062082A */ slt $at, $v1, $v0 +/* 0859F8 7F050E88 50200004 */ beql $at, $zero, .Ljp7F050E9C +/* 0859FC 7F050E8C 24010005 */ li $at, 5 +/* 085A00 7F050E90 10000027 */ b .Ljp7F050F30 +/* 085A04 7F050E94 AFA00074 */ sw $zero, 0x74($sp) +/* 085A08 7F050E98 24010005 */ li $at, 5 +.Ljp7F050E9C: +/* 085A0C 7F050E9C 56010005 */ bnel $s0, $at, .Ljp7F050EB4 +/* 085A10 7F050EA0 24010007 */ li $at, 7 +/* 085A14 7F050EA4 0FC232E9 */ jal is_weapon_in_inv +/* 085A18 7F050EA8 2404001A */ li $a0, 26 +/* 085A1C 7F050EAC 10400019 */ beqz $v0, .Ljp7F050F14 +/* 085A20 7F050EB0 24010007 */ li $at, 7 +.Ljp7F050EB4: +/* 085A24 7F050EB4 56010005 */ bnel $s0, $at, .Ljp7F050ECC +/* 085A28 7F050EB8 24010008 */ li $at, 8 +/* 085A2C 7F050EBC 0FC232E9 */ jal is_weapon_in_inv +/* 085A30 7F050EC0 2404001D */ li $a0, 29 +/* 085A34 7F050EC4 10400013 */ beqz $v0, .Ljp7F050F14 +/* 085A38 7F050EC8 24010008 */ li $at, 8 +.Ljp7F050ECC: +/* 085A3C 7F050ECC 56010005 */ bnel $s0, $at, .Ljp7F050EE4 +/* 085A40 7F050ED0 24010009 */ li $at, 9 +/* 085A44 7F050ED4 0FC232E9 */ jal is_weapon_in_inv +/* 085A48 7F050ED8 2404001C */ li $a0, 28 +/* 085A4C 7F050EDC 1040000D */ beqz $v0, .Ljp7F050F14 +/* 085A50 7F050EE0 24010009 */ li $at, 9 +.Ljp7F050EE4: +/* 085A54 7F050EE4 56010005 */ bnel $s0, $at, .Ljp7F050EFC +/* 085A58 7F050EE8 2401000A */ li $at, 10 +/* 085A5C 7F050EEC 0FC232E9 */ jal is_weapon_in_inv +/* 085A60 7F050EF0 2404001B */ li $a0, 27 +/* 085A64 7F050EF4 10400007 */ beqz $v0, .Ljp7F050F14 +/* 085A68 7F050EF8 2401000A */ li $at, 10 +.Ljp7F050EFC: +/* 085A6C 7F050EFC 56010008 */ bnel $s0, $at, .Ljp7F050F20 +/* 085A70 7F050F00 8FA2003C */ lw $v0, 0x3c($sp) +/* 085A74 7F050F04 0FC232E9 */ jal is_weapon_in_inv +/* 085A78 7F050F08 24040003 */ li $a0, 3 +/* 085A7C 7F050F0C 54400004 */ bnezl $v0, .Ljp7F050F20 +/* 085A80 7F050F10 8FA2003C */ lw $v0, 0x3c($sp) +.Ljp7F050F14: +/* 085A84 7F050F14 10000006 */ b .Ljp7F050F30 +/* 085A88 7F050F18 AFA00074 */ sw $zero, 0x74($sp) +/* 085A8C 7F050F1C 8FA2003C */ lw $v0, 0x3c($sp) +.Ljp7F050F20: +/* 085A90 7F050F20 8FA30038 */ lw $v1, 0x38($sp) +/* 085A94 7F050F24 2401000D */ li $at, 13 +/* 085A98 7F050F28 1441FFC6 */ bne $v0, $at, .Ljp7F050E44 +/* 085A9C 7F050F2C 24630004 */ addiu $v1, $v1, 4 +.Ljp7F050F30: +/* 085AA0 7F050F30 8FAD0074 */ lw $t5, 0x74($sp) +/* 085AA4 7F050F34 11A0002E */ beqz $t5, .Ljp7F050FF0 +/* 085AA8 7F050F38 00000000 */ nop +/* 085AAC 7F050F3C 100000B6 */ b .Ljp7F051218 +/* 085AB0 7F050F40 00001025 */ move $v0, $zero +.Ljp7F050F44: +/* 085AB4 7F050F44 24010015 */ li $at, 21 +/* 085AB8 7F050F48 14410029 */ bne $v0, $at, .Ljp7F050FF0 +/* 085ABC 7F050F4C 8FAE0090 */ lw $t6, 0x90($sp) +/* 085AC0 7F050F50 8DD00004 */ lw $s0, 4($t6) +/* 085AC4 7F050F54 0FC22A8D */ jal get_BONDdata_watch_armor +/* 085AC8 7F050F58 AFA00064 */ sw $zero, 0x64($sp) +/* 085ACC 7F050F5C C6040084 */ lwc1 $f4, 0x84($s0) +/* 085AD0 7F050F60 240F0001 */ li $t7, 1 +/* 085AD4 7F050F64 4600203E */ c.le.s $f4, $f0 +/* 085AD8 7F050F68 00000000 */ nop +/* 085ADC 7F050F6C 45000003 */ bc1f .Ljp7F050F7C +/* 085AE0 7F050F70 00000000 */ nop +/* 085AE4 7F050F74 10000019 */ b .Ljp7F050FDC +/* 085AE8 7F050F78 AFAF0064 */ sw $t7, 0x64($sp) +.Ljp7F050F7C: +/* 085AEC 7F050F7C 0FC26C01 */ jal get_num_players +/* 085AF0 7F050F80 00000000 */ nop +/* 085AF4 7F050F84 28410002 */ slti $at, $v0, 2 +/* 085AF8 7F050F88 54200015 */ bnezl $at, .Ljp7F050FE0 +/* 085AFC 7F050F8C 8FA90064 */ lw $t1, 0x64($sp) +/* 085B00 7F050F90 0FC05202 */ jal get_scenario +/* 085B04 7F050F94 00000000 */ nop +/* 085B08 7F050F98 24010002 */ li $at, 2 +/* 085B0C 7F050F9C 14410007 */ bne $v0, $at, .Ljp7F050FBC +/* 085B10 7F050FA0 00408025 */ move $s0, $v0 +/* 085B14 7F050FA4 0FC23639 */ jal sub_GAME_7F08CF80 +/* 085B18 7F050FA8 00000000 */ nop +/* 085B1C 7F050FAC 10400003 */ beqz $v0, .Ljp7F050FBC +/* 085B20 7F050FB0 24180001 */ li $t8, 1 +/* 085B24 7F050FB4 10000009 */ b .Ljp7F050FDC +/* 085B28 7F050FB8 AFB80064 */ sw $t8, 0x64($sp) +.Ljp7F050FBC: +/* 085B2C 7F050FBC 24010003 */ li $at, 3 +/* 085B30 7F050FC0 56010007 */ bnel $s0, $at, .Ljp7F050FE0 +/* 085B34 7F050FC4 8FA90064 */ lw $t1, 0x64($sp) +/* 085B38 7F050FC8 0FC23649 */ jal checkforgoldengun +/* 085B3C 7F050FCC 00000000 */ nop +/* 085B40 7F050FD0 10400002 */ beqz $v0, .Ljp7F050FDC +/* 085B44 7F050FD4 24190001 */ li $t9, 1 +/* 085B48 7F050FD8 AFB90064 */ sw $t9, 0x64($sp) +.Ljp7F050FDC: +/* 085B4C 7F050FDC 8FA90064 */ lw $t1, 0x64($sp) +.Ljp7F050FE0: +/* 085B50 7F050FE0 11200003 */ beqz $t1, .Ljp7F050FF0 +/* 085B54 7F050FE4 00000000 */ nop +/* 085B58 7F050FE8 1000008B */ b .Ljp7F051218 +/* 085B5C 7F050FEC 00001025 */ move $v0, $zero +.Ljp7F050FF0: +/* 085B60 7F050FF0 0FC22992 */ jal get_curplay_vertical_rotation_in_degrees +/* 085B64 7F050FF4 00000000 */ nop +/* 085B68 7F050FF8 3C018005 */ lui $at, %hi(D_800532E0) # $at, 0x8005 +/* 085B6C 7F050FFC C4263310 */ lwc1 $f6, %lo(D_800532E0)($at) +/* 085B70 7F051000 3C0A8008 */ lui $t2, %hi(pPlayer) # $t2, 0x8008 +/* 085B74 7F051004 4606003C */ c.lt.s $f0, $f6 +/* 085B78 7F051008 00000000 */ nop +/* 085B7C 7F05100C 45000007 */ bc1f .Ljp7F05102C +/* 085B80 7F051010 00000000 */ nop +/* 085B84 7F051014 8D4AA120 */ lw $t2, %lo(pPlayer)($t2) +/* 085B88 7F051018 8D4B1270 */ lw $t3, 0x1270($t2) +/* 085B8C 7F05101C 05610003 */ bgez $t3, .Ljp7F05102C +/* 085B90 7F051020 00000000 */ nop +/* 085B94 7F051024 1000007C */ b .Ljp7F051218 +/* 085B98 7F051028 00001025 */ move $v0, $zero +.Ljp7F05102C: +/* 085B9C 7F05102C 0FC2279B */ jal get_curplayer_positiondata +/* 085BA0 7F051030 00000000 */ nop +/* 085BA4 7F051034 3C0D8008 */ lui $t5, %hi(pPlayer) # $t5, 0x8008 +/* 085BA8 7F051038 8FAC008C */ lw $t4, 0x8c($sp) +/* 085BAC 7F05103C 8DADA120 */ lw $t5, %lo(pPlayer)($t5) +/* 085BB0 7F051040 C44A0008 */ lwc1 $f10, 8($v0) +/* 085BB4 7F051044 C452000C */ lwc1 $f18, 0xc($v0) +/* 085BB8 7F051048 8DAE1270 */ lw $t6, 0x1270($t5) +/* 085BBC 7F05104C C4460010 */ lwc1 $f6, 0x10($v0) +/* 085BC0 7F051050 C5880058 */ lwc1 $f8, 0x58($t4) +/* 085BC4 7F051054 C590005C */ lwc1 $f16, 0x5c($t4) +/* 085BC8 7F051058 C5840060 */ lwc1 $f4, 0x60($t4) +/* 085BCC 7F05105C 29C1003C */ slti $at, $t6, 0x3c +/* 085BD0 7F051060 00404025 */ move $t0, $v0 +/* 085BD4 7F051064 460A4001 */ sub.s $f0, $f8, $f10 +/* 085BD8 7F051068 46128301 */ sub.s $f12, $f16, $f18 +/* 085BDC 7F05106C 14200022 */ bnez $at, .Ljp7F0510F8 +/* 085BE0 7F051070 46062081 */ sub.s $f2, $f4, $f6 +/* 085BE4 7F051074 46000202 */ mul.s $f8, $f0, $f0 +/* 085BE8 7F051078 3C018005 */ lui $at, %hi(D_800532E4) # $at, 0x8005 +/* 085BEC 7F05107C C4323314 */ lwc1 $f18, %lo(D_800532E4)($at) +/* 085BF0 7F051080 46021282 */ mul.s $f10, $f2, $f2 +/* 085BF4 7F051084 3C01C3FA */ li $at, 0xC3FA0000 # -500.000000 +/* 085BF8 7F051088 00001025 */ move $v0, $zero +/* 085BFC 7F05108C 460A4400 */ add.s $f16, $f8, $f10 +/* 085C00 7F051090 4612803E */ c.le.s $f16, $f18 +/* 085C04 7F051094 00000000 */ nop +/* 085C08 7F051098 45000002 */ bc1f .Ljp7F0510A4 +/* 085C0C 7F05109C 00000000 */ nop +/* 085C10 7F0510A0 24020001 */ li $v0, 1 +.Ljp7F0510A4: +/* 085C14 7F0510A4 10400012 */ beqz $v0, .Ljp7F0510F0 +/* 085C18 7F0510A8 00401825 */ move $v1, $v0 +/* 085C1C 7F0510AC 44812000 */ mtc1 $at, $f4 +/* 085C20 7F0510B0 3C0143FA */ li $at, 0x43FA0000 # 500.000000 +/* 085C24 7F0510B4 00001025 */ move $v0, $zero +/* 085C28 7F0510B8 460C203E */ c.le.s $f4, $f12 +/* 085C2C 7F0510BC 00000000 */ nop +/* 085C30 7F0510C0 45000002 */ bc1f .Ljp7F0510CC +/* 085C34 7F0510C4 00000000 */ nop +/* 085C38 7F0510C8 24020001 */ li $v0, 1 +.Ljp7F0510CC: +/* 085C3C 7F0510CC 10400008 */ beqz $v0, .Ljp7F0510F0 +/* 085C40 7F0510D0 00401825 */ move $v1, $v0 +/* 085C44 7F0510D4 44813000 */ mtc1 $at, $f6 +/* 085C48 7F0510D8 00001825 */ move $v1, $zero +/* 085C4C 7F0510DC 4606603E */ c.le.s $f12, $f6 +/* 085C50 7F0510E0 00000000 */ nop +/* 085C54 7F0510E4 45000002 */ bc1f .Ljp7F0510F0 +/* 085C58 7F0510E8 00000000 */ nop +/* 085C5C 7F0510EC 24030001 */ li $v1, 1 +.Ljp7F0510F0: +/* 085C60 7F0510F0 10000021 */ b .Ljp7F051178 +/* 085C64 7F0510F4 00608025 */ move $s0, $v1 +.Ljp7F0510F8: +/* 085C68 7F0510F8 46000202 */ mul.s $f8, $f0, $f0 +/* 085C6C 7F0510FC 3C018005 */ lui $at, %hi(D_800532E8) # $at, 0x8005 +/* 085C70 7F051100 C4303318 */ lwc1 $f16, %lo(D_800532E8)($at) +/* 085C74 7F051104 46021282 */ mul.s $f10, $f2, $f2 +/* 085C78 7F051108 3C01C348 */ li $at, 0xC3480000 # -200.000000 +/* 085C7C 7F05110C 00001025 */ move $v0, $zero +/* 085C80 7F051110 460A4480 */ add.s $f18, $f8, $f10 +/* 085C84 7F051114 4610903E */ c.le.s $f18, $f16 +/* 085C88 7F051118 00000000 */ nop +/* 085C8C 7F05111C 45000002 */ bc1f .Ljp7F051128 +/* 085C90 7F051120 00000000 */ nop +/* 085C94 7F051124 24020001 */ li $v0, 1 +.Ljp7F051128: +/* 085C98 7F051128 10400012 */ beqz $v0, .Ljp7F051174 +/* 085C9C 7F05112C 00401825 */ move $v1, $v0 +/* 085CA0 7F051130 44812000 */ mtc1 $at, $f4 +/* 085CA4 7F051134 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 085CA8 7F051138 00001025 */ move $v0, $zero +/* 085CAC 7F05113C 460C203E */ c.le.s $f4, $f12 +/* 085CB0 7F051140 00000000 */ nop +/* 085CB4 7F051144 45000002 */ bc1f .Ljp7F051150 +/* 085CB8 7F051148 00000000 */ nop +/* 085CBC 7F05114C 24020001 */ li $v0, 1 +.Ljp7F051150: +/* 085CC0 7F051150 10400008 */ beqz $v0, .Ljp7F051174 +/* 085CC4 7F051154 00401825 */ move $v1, $v0 +/* 085CC8 7F051158 44813000 */ mtc1 $at, $f6 +/* 085CCC 7F05115C 00001825 */ move $v1, $zero +/* 085CD0 7F051160 4606603E */ c.le.s $f12, $f6 +/* 085CD4 7F051164 00000000 */ nop +/* 085CD8 7F051168 45020003 */ bc1fl .Ljp7F051178 +/* 085CDC 7F05116C 00608025 */ move $s0, $v1 +/* 085CE0 7F051170 24030001 */ li $v1, 1 +.Ljp7F051174: +/* 085CE4 7F051174 00608025 */ move $s0, $v1 +.Ljp7F051178: +/* 085CE8 7F051178 10600020 */ beqz $v1, .Ljp7F0511FC +/* 085CEC 7F05117C 8FAF008C */ lw $t7, 0x8c($sp) +/* 085CF0 7F051180 8DF8000C */ lw $t8, 0xc($t7) +/* 085CF4 7F051184 8FA20090 */ lw $v0, 0x90($sp) +/* 085CF8 7F051188 3C0141F0 */ li $at, 0x41F00000 # 30.000000 +/* 085CFC 7F05118C 33191000 */ andi $t9, $t8, 0x1000 +/* 085D00 7F051190 1720001A */ bnez $t9, .Ljp7F0511FC +/* 085D04 7F051194 27A40044 */ addiu $a0, $sp, 0x44 +/* 085D08 7F051198 8D090014 */ lw $t1, 0x14($t0) +/* 085D0C 7F05119C 44810000 */ mtc1 $at, $f0 +/* 085D10 7F0511A0 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 085D14 7F0511A4 AFA90044 */ sw $t1, 0x44($sp) +/* 085D18 7F0511A8 C4480010 */ lwc1 $f8, 0x10($v0) +/* 085D1C 7F0511AC 8C470008 */ lw $a3, 8($v0) +/* 085D20 7F0511B0 8D060010 */ lw $a2, 0x10($t0) +/* 085D24 7F0511B4 8D050008 */ lw $a1, 8($t0) +/* 085D28 7F0511B8 44818000 */ mtc1 $at, $f16 +/* 085D2C 7F0511BC 44805000 */ mtc1 $zero, $f10 +/* 085D30 7F0511C0 240A0002 */ li $t2, 2 +/* 085D34 7F0511C4 AFAA0014 */ sw $t2, 0x14($sp) +/* 085D38 7F0511C8 E7A0001C */ swc1 $f0, 0x1c($sp) +/* 085D3C 7F0511CC E7A00018 */ swc1 $f0, 0x18($sp) +/* 085D40 7F0511D0 E7A80010 */ swc1 $f8, 0x10($sp) +/* 085D44 7F0511D4 E7B00024 */ swc1 $f16, 0x24($sp) +/* 085D48 7F0511D8 0FC2C675 */ jal sub_GAME_7F0B0E24 +/* 085D4C 7F0511DC E7AA0020 */ swc1 $f10, 0x20($sp) +/* 085D50 7F0511E0 10400005 */ beqz $v0, .Ljp7F0511F8 +/* 085D54 7F0511E4 8FAC0090 */ lw $t4, 0x90($sp) +/* 085D58 7F0511E8 8FAB0044 */ lw $t3, 0x44($sp) +/* 085D5C 7F0511EC 8D8D0014 */ lw $t5, 0x14($t4) +/* 085D60 7F0511F0 116D0002 */ beq $t3, $t5, .Ljp7F0511FC +/* 085D64 7F0511F4 00000000 */ nop +.Ljp7F0511F8: +/* 085D68 7F0511F8 00008025 */ move $s0, $zero +.Ljp7F0511FC: +/* 085D6C 7F0511FC 12000006 */ beqz $s0, .Ljp7F051218 +/* 085D70 7F051200 00001025 */ move $v0, $zero +/* 085D74 7F051204 8FA40090 */ lw $a0, 0x90($sp) +/* 085D78 7F051208 0FC14195 */ jal collect_or_interact_object +/* 085D7C 7F05120C 24050001 */ li $a1, 1 +/* 085D80 7F051210 10000002 */ b .Ljp7F05121C +/* 085D84 7F051214 8FBF0034 */ lw $ra, 0x34($sp) +.Ljp7F051218: +/* 085D88 7F051218 8FBF0034 */ lw $ra, 0x34($sp) +.Ljp7F05121C: +/* 085D8C 7F05121C 8FB00030 */ lw $s0, 0x30($sp) +/* 085D90 7F051220 27BD0090 */ addiu $sp, $sp, 0x90 +/* 085D94 7F051224 03E00008 */ jr $ra +/* 085D98 7F051228 00000000 */ nop +) +#endif + +#endif + +#ifdef NONMATCHING +void sub_GAME_7F050D30(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F050D30 +/* 085860 7F050D30 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 085864 7F050D34 AFBF001C */ sw $ra, 0x1c($sp) +/* 085868 7F050D38 AFA40028 */ sw $a0, 0x28($sp) +/* 08586C 7F050D3C AFA5002C */ sw $a1, 0x2c($sp) +/* 085870 7F050D40 AFA70034 */ sw $a3, 0x34($sp) +/* 085874 7F050D44 908F0001 */ lbu $t7, 1($a0) +/* 085878 7F050D48 31F80002 */ andi $t8, $t7, 2 +/* 08587C 7F050D4C 53000022 */ beql $t8, $zero, .L7F050DD8 +/* 085880 7F050D50 00001025 */ move $v0, $zero +/* 085884 7F050D54 8C830004 */ lw $v1, 4($a0) +/* 085888 7F050D58 8C640014 */ lw $a0, 0x14($v1) +/* 08588C 7F050D5C AFA60030 */ sw $a2, 0x30($sp) +/* 085890 7F050D60 0FC1B1A8 */ jal getsubmatrix +/* 085894 7F050D64 AFA30024 */ sw $v1, 0x24($sp) +/* 085898 7F050D68 8FA9002C */ lw $t1, 0x2c($sp) +/* 08589C 7F050D6C C4440038 */ lwc1 $f4, 0x38($v0) +/* 0858A0 7F050D70 8FA30024 */ lw $v1, 0x24($sp) +/* 0858A4 7F050D74 8FA60030 */ lw $a2, 0x30($sp) +/* 0858A8 7F050D78 8FAA0034 */ lw $t2, 0x34($sp) +/* 0858AC 7F050D7C E5240008 */ swc1 $f4, 8($t1) +/* 0858B0 7F050D80 44800000 */ mtc1 $zero, $f0 +/* 0858B4 7F050D84 C5260008 */ lwc1 $f6, 8($t1) +/* 0858B8 7F050D88 4600303C */ c.lt.s $f6, $f0 +/* 0858BC 7F050D8C 00000000 */ nop +/* 0858C0 7F050D90 45020011 */ bc1fl .L7F050DD8 +/* 0858C4 7F050D94 00001025 */ move $v0, $zero +/* 0858C8 7F050D98 C4480030 */ lwc1 $f8, 0x30($v0) +/* 0858CC 7F050D9C 24C50004 */ addiu $a1, $a2, 4 +/* 0858D0 7F050DA0 25470004 */ addiu $a3, $t2, 4 +/* 0858D4 7F050DA4 E5280000 */ swc1 $f8, ($t1) +/* 0858D8 7F050DA8 C44A0034 */ lwc1 $f10, 0x34($v0) +/* 0858DC 7F050DAC E52A0004 */ swc1 $f10, 4($t1) +/* 0858E0 7F050DB0 E5400000 */ swc1 $f0, ($t2) +/* 0858E4 7F050DB4 E5400004 */ swc1 $f0, 4($t2) +/* 0858E8 7F050DB8 E4C00000 */ swc1 $f0, ($a2) +/* 0858EC 7F050DBC E4C00004 */ swc1 $f0, 4($a2) +/* 0858F0 7F050DC0 8C640014 */ lw $a0, 0x14($v1) +/* 0858F4 7F050DC4 0FC0FE43 */ jal sub_GAME_7F03F90C +/* 0858F8 7F050DC8 AFAA0010 */ sw $t2, 0x10($sp) +/* 0858FC 7F050DCC 10000002 */ b .L7F050DD8 +/* 085900 7F050DD0 24020001 */ li $v0, 1 +/* 085904 7F050DD4 00001025 */ move $v0, $zero +.L7F050DD8: +/* 085908 7F050DD8 8FBF001C */ lw $ra, 0x1c($sp) +/* 08590C 7F050DDC 27BD0028 */ addiu $sp, $sp, 0x28 +/* 085910 7F050DE0 03E00008 */ jr $ra +/* 085914 7F050DE4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F050DE8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F050DE8 +/* 085918 7F050DE8 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 08591C 7F050DEC AFBF003C */ sw $ra, 0x3c($sp) +/* 085920 7F050DF0 AFBE0038 */ sw $fp, 0x38($sp) +/* 085924 7F050DF4 AFB70034 */ sw $s7, 0x34($sp) +/* 085928 7F050DF8 AFB60030 */ sw $s6, 0x30($sp) +/* 08592C 7F050DFC AFB5002C */ sw $s5, 0x2c($sp) +/* 085930 7F050E00 AFB40028 */ sw $s4, 0x28($sp) +/* 085934 7F050E04 AFB30024 */ sw $s3, 0x24($sp) +/* 085938 7F050E08 AFB20020 */ sw $s2, 0x20($sp) +/* 08593C 7F050E0C AFB1001C */ sw $s1, 0x1c($sp) +/* 085940 7F050E10 AFB00018 */ sw $s0, 0x18($sp) +/* 085944 7F050E14 8C940008 */ lw $s4, 8($a0) +/* 085948 7F050E18 00809825 */ move $s3, $a0 +/* 08594C 7F050E1C 24150008 */ li $s5, 8 +/* 085950 7F050E20 8E900000 */ lw $s0, ($s4) +/* 085954 7F050E24 24160012 */ li $s6, 18 +/* 085958 7F050E28 24170017 */ li $s7, 23 +/* 08595C 7F050E2C 1200003C */ beqz $s0, .L7F050F20 +/* 085960 7F050E30 241E0018 */ li $fp, 24 +/* 085964 7F050E34 96020000 */ lhu $v0, ($s0) +.L7F050E38: +/* 085968 7F050E38 02602025 */ move $a0, $s3 +/* 08596C 7F050E3C 304E00FF */ andi $t6, $v0, 0xff +/* 085970 7F050E40 11D5001C */ beq $t6, $s5, .L7F050EB4 +/* 085974 7F050E44 00000000 */ nop +/* 085978 7F050E48 11D6001E */ beq $t6, $s6, .L7F050EC4 +/* 08597C 7F050E4C 02602025 */ move $a0, $s3 +/* 085980 7F050E50 11D70020 */ beq $t6, $s7, .L7F050ED4 +/* 085984 7F050E54 02602025 */ move $a0, $s3 +/* 085988 7F050E58 11DE0003 */ beq $t6, $fp, .L7F050E68 +/* 08598C 7F050E5C 02602025 */ move $a0, $s3 +/* 085990 7F050E60 1000001F */ b .L7F050EE0 +/* 085994 7F050E64 8E020014 */ lw $v0, 0x14($s0) +.L7F050E68: +/* 085998 7F050E68 8E120004 */ lw $s2, 4($s0) +/* 08599C 7F050E6C 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 0859A0 7F050E70 02002825 */ move $a1, $s0 +/* 0859A4 7F050E74 8E4F0008 */ lw $t7, 8($s2) +/* 0859A8 7F050E78 8C580000 */ lw $t8, ($v0) +/* 0859AC 7F050E7C 00408825 */ move $s1, $v0 +/* 0859B0 7F050E80 02802025 */ move $a0, $s4 +/* 0859B4 7F050E84 11F80009 */ beq $t7, $t8, .L7F050EAC +/* 0859B8 7F050E88 00000000 */ nop +/* 0859BC 7F050E8C 0FC12D64 */ jal sub_GAME_7F04B590 +/* 0859C0 7F050E90 02002825 */ move $a1, $s0 +/* 0859C4 7F050E94 10400005 */ beqz $v0, .L7F050EAC +/* 0859C8 7F050E98 00000000 */ nop +/* 0859CC 7F050E9C 0FC27011 */ jal sub_GAME_7F09C044 +/* 0859D0 7F050EA0 8E240000 */ lw $a0, ($s1) +/* 0859D4 7F050EA4 8E590008 */ lw $t9, 8($s2) +/* 0859D8 7F050EA8 AE390000 */ sw $t9, ($s1) +.L7F050EAC: +/* 0859DC 7F050EAC 1000000C */ b .L7F050EE0 +/* 0859E0 7F050EB0 8E020014 */ lw $v0, 0x14($s0) +.L7F050EB4: +/* 0859E4 7F050EB4 0FC1BA5C */ jal sub_GAME_7F06E970 +/* 0859E8 7F050EB8 02002825 */ move $a1, $s0 +/* 0859EC 7F050EBC 10000008 */ b .L7F050EE0 +/* 0859F0 7F050EC0 8E020014 */ lw $v0, 0x14($s0) +.L7F050EC4: +/* 0859F4 7F050EC4 0FC1BA6F */ jal process_12_handle_switch +/* 0859F8 7F050EC8 02002825 */ move $a1, $s0 +/* 0859FC 7F050ECC 10000004 */ b .L7F050EE0 +/* 085A00 7F050ED0 8E020014 */ lw $v0, 0x14($s0) +.L7F050ED4: +/* 085A04 7F050ED4 0FC1BA82 */ jal process_17_pointer_to_head +/* 085A08 7F050ED8 02002825 */ move $a1, $s0 +/* 085A0C 7F050EDC 8E020014 */ lw $v0, 0x14($s0) +.L7F050EE0: +/* 085A10 7F050EE0 10400003 */ beqz $v0, .L7F050EF0 +/* 085A14 7F050EE4 00000000 */ nop +/* 085A18 7F050EE8 1000000B */ b .L7F050F18 +/* 085A1C 7F050EEC 00408025 */ move $s0, $v0 +.L7F050EF0: +/* 085A20 7F050EF0 12000009 */ beqz $s0, .L7F050F18 +/* 085A24 7F050EF4 00000000 */ nop +/* 085A28 7F050EF8 8E02000C */ lw $v0, 0xc($s0) +.L7F050EFC: +/* 085A2C 7F050EFC 50400004 */ beql $v0, $zero, .L7F050F10 +/* 085A30 7F050F00 8E100008 */ lw $s0, 8($s0) +/* 085A34 7F050F04 10000004 */ b .L7F050F18 +/* 085A38 7F050F08 00408025 */ move $s0, $v0 +/* 085A3C 7F050F0C 8E100008 */ lw $s0, 8($s0) +.L7F050F10: +/* 085A40 7F050F10 5600FFFA */ bnezl $s0, .L7F050EFC +/* 085A44 7F050F14 8E02000C */ lw $v0, 0xc($s0) +.L7F050F18: +/* 085A48 7F050F18 5600FFC7 */ bnezl $s0, .L7F050E38 +/* 085A4C 7F050F1C 96020000 */ lhu $v0, ($s0) +.L7F050F20: +/* 085A50 7F050F20 8FBF003C */ lw $ra, 0x3c($sp) +/* 085A54 7F050F24 8FB00018 */ lw $s0, 0x18($sp) +/* 085A58 7F050F28 8FB1001C */ lw $s1, 0x1c($sp) +/* 085A5C 7F050F2C 8FB20020 */ lw $s2, 0x20($sp) +/* 085A60 7F050F30 8FB30024 */ lw $s3, 0x24($sp) +/* 085A64 7F050F34 8FB40028 */ lw $s4, 0x28($sp) +/* 085A68 7F050F38 8FB5002C */ lw $s5, 0x2c($sp) +/* 085A6C 7F050F3C 8FB60030 */ lw $s6, 0x30($sp) +/* 085A70 7F050F40 8FB70034 */ lw $s7, 0x34($sp) +/* 085A74 7F050F44 8FBE0038 */ lw $fp, 0x38($sp) +/* 085A78 7F050F48 03E00008 */ jr $ra +/* 085A7C 7F050F4C 27BD0040 */ addiu $sp, $sp, 0x40 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F050F50(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F050F50 +/* 085A80 7F050F50 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 085A84 7F050F54 AFA50024 */ sw $a1, 0x24($sp) +/* 085A88 7F050F58 AFA60028 */ sw $a2, 0x28($sp) +/* 085A8C 7F050F5C 00C02825 */ move $a1, $a2 +/* 085A90 7F050F60 AFBF001C */ sw $ra, 0x1c($sp) +/* 085A94 7F050F64 AFB00014 */ sw $s0, 0x14($sp) +/* 085A98 7F050F68 00E03025 */ move $a2, $a3 +/* 085A9C 7F050F6C 00808025 */ move $s0, $a0 +/* 085AA0 7F050F70 AFB10018 */ sw $s1, 0x18($sp) +/* 085AA4 7F050F74 0FC10153 */ jal init_standard_object +/* 085AA8 7F050F78 8FA70030 */ lw $a3, 0x30($sp) +/* 085AAC 7F050F7C 10400024 */ beqz $v0, .L7F051010 +/* 085AB0 7F050F80 00408825 */ move $s1, $v0 +/* 085AB4 7F050F84 8E040014 */ lw $a0, 0x14($s0) +/* 085AB8 7F050F88 50800022 */ beql $a0, $zero, .L7F051014 +/* 085ABC 7F050F8C 8FBF001C */ lw $ra, 0x1c($sp) +/* 085AC0 7F050F90 960E0000 */ lhu $t6, ($s0) +/* 085AC4 7F050F94 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 085AC8 7F050F98 448E2000 */ mtc1 $t6, $f4 +/* 085ACC 7F050F9C 05C10004 */ bgez $t6, .L7F050FB0 +/* 085AD0 7F050FA0 468021A0 */ cvt.s.w $f6, $f4 +/* 085AD4 7F050FA4 44814000 */ mtc1 $at, $f8 +/* 085AD8 7F050FA8 00000000 */ nop +/* 085ADC 7F050FAC 46083180 */ add.s $f6, $f6, $f8 +.L7F050FB0: +/* 085AE0 7F050FB0 3C013B80 */ li $at, 0x3B800000 # 0.003906 +/* 085AE4 7F050FB4 44815000 */ mtc1 $at, $f10 +/* 085AE8 7F050FB8 C4900014 */ lwc1 $f16, 0x14($a0) +/* 085AEC 7F050FBC 460A3002 */ mul.s $f0, $f6, $f10 +/* 085AF0 7F050FC0 00000000 */ nop +/* 085AF4 7F050FC4 46008482 */ mul.s $f18, $f16, $f0 +/* 085AF8 7F050FC8 44059000 */ mfc1 $a1, $f18 +/* 085AFC 7F050FCC 0FC1B39E */ jal set_obj_instance_controller_scale +/* 085B00 7F050FD0 00000000 */ nop +/* 085B04 7F050FD4 8FA20024 */ lw $v0, 0x24($sp) +/* 085B08 7F050FD8 8E180014 */ lw $t8, 0x14($s0) +/* 085B0C 7F050FDC 02202025 */ move $a0, $s1 +/* 085B10 7F050FE0 8C4F001C */ lw $t7, 0x1c($v0) +/* 085B14 7F050FE4 AF0F0018 */ sw $t7, 0x18($t8) +/* 085B18 7F050FE8 8C59001C */ lw $t9, 0x1c($v0) +/* 085B1C 7F050FEC 8E0B0014 */ lw $t3, 0x14($s0) +/* 085B20 7F050FF0 8F280008 */ lw $t0, 8($t9) +/* 085B24 7F050FF4 8D090008 */ lw $t1, 8($t0) +/* 085B28 7F050FF8 8D2A0018 */ lw $t2, 0x18($t1) +/* 085B2C 7F050FFC AD6A001C */ sw $t2, 0x1c($t3) +/* 085B30 7F051000 0FC0E969 */ jal sub_GAME_7F03A5A4 +/* 085B34 7F051004 8C450018 */ lw $a1, 0x18($v0) +/* 085B38 7F051008 8FAC0024 */ lw $t4, 0x24($sp) +/* 085B3C 7F05100C AD9101D8 */ sw $s1, 0x1d8($t4) +.L7F051010: +/* 085B40 7F051010 8FBF001C */ lw $ra, 0x1c($sp) +.L7F051014: +/* 085B44 7F051014 02201025 */ move $v0, $s1 +/* 085B48 7F051018 8FB10018 */ lw $s1, 0x18($sp) +/* 085B4C 7F05101C 8FB00014 */ lw $s0, 0x14($sp) +/* 085B50 7F051020 03E00008 */ jr $ra +/* 085B54 7F051024 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F051028(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F051028 +/* 085B58 7F051028 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 085B5C 7F05102C AFBF001C */ sw $ra, 0x1c($sp) +/* 085B60 7F051030 AFA40028 */ sw $a0, 0x28($sp) +/* 085B64 7F051034 AFA5002C */ sw $a1, 0x2c($sp) +/* 085B68 7F051038 84840004 */ lh $a0, 4($a0) +/* 085B6C 7F05103C 0FC15B0E */ jal load_model +/* 085B70 7F051040 AFA40020 */ sw $a0, 0x20($sp) +/* 085B74 7F051044 8FAF0020 */ lw $t7, 0x20($sp) +/* 085B78 7F051048 3C068004 */ lui $a2, %hi(PitemZ_entries) +/* 085B7C 7F05104C 8FA40028 */ lw $a0, 0x28($sp) +/* 085B80 7F051050 000FC080 */ sll $t8, $t7, 2 +/* 085B84 7F051054 030FC023 */ subu $t8, $t8, $t7 +/* 085B88 7F051058 0018C080 */ sll $t8, $t8, 2 +/* 085B8C 7F05105C 00D83021 */ addu $a2, $a2, $t8 +/* 085B90 7F051060 8CC6A228 */ lw $a2, %lo(PitemZ_entries)($a2) +/* 085B94 7F051064 8FA5002C */ lw $a1, 0x2c($sp) +/* 085B98 7F051068 00003825 */ move $a3, $zero +/* 085B9C 7F05106C 0FC143D4 */ jal sub_GAME_7F050F50 +/* 085BA0 7F051070 AFA00010 */ sw $zero, 0x10($sp) +/* 085BA4 7F051074 8FBF001C */ lw $ra, 0x1c($sp) +/* 085BA8 7F051078 27BD0028 */ addiu $sp, $sp, 0x28 +/* 085BAC 7F05107C 03E00008 */ jr $ra +/* 085BB0 7F051080 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F051084(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F051084 +/* 085BB4 7F051084 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 085BB8 7F051088 AFBF0014 */ sw $ra, 0x14($sp) +/* 085BBC 7F05108C 8C8E0074 */ lw $t6, 0x74($a0) +/* 085BC0 7F051090 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 085BC4 7F051094 44814000 */ mtc1 $at, $f8 +/* 085BC8 7F051098 448E2000 */ mtc1 $t6, $f4 +/* 085BCC 7F05109C 00000000 */ nop +/* 085BD0 7F0510A0 468021A0 */ cvt.s.w $f6, $f4 +/* 085BD4 7F0510A4 46083283 */ div.s $f10, $f6, $f8 +/* 085BD8 7F0510A8 0FC1440A */ jal sub_GAME_7F051028 +/* 085BDC 7F0510AC E48A0074 */ swc1 $f10, 0x74($a0) +/* 085BE0 7F0510B0 8FBF0014 */ lw $ra, 0x14($sp) +/* 085BE4 7F0510B4 27BD0018 */ addiu $sp, $sp, 0x18 +/* 085BE8 7F0510B8 03E00008 */ jr $ra +/* 085BEC 7F0510BC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0510C0(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0510C0 +/* 085BF0 7F0510C0 27BDFF40 */ addiu $sp, $sp, -0xc0 +/* 085BF4 7F0510C4 00057080 */ sll $t6, $a1, 2 +/* 085BF8 7F0510C8 01C57023 */ subu $t6, $t6, $a1 +/* 085BFC 7F0510CC 000E7080 */ sll $t6, $t6, 2 +/* 085C00 7F0510D0 3C0F8004 */ lui $t7, %hi(PitemZ_entries) +/* 085C04 7F0510D4 01EE7821 */ addu $t7, $t7, $t6 +/* 085C08 7F0510D8 8DEFA228 */ lw $t7, %lo(PitemZ_entries)($t7) +/* 085C0C 7F0510DC AFBF002C */ sw $ra, 0x2c($sp) +/* 085C10 7F0510E0 AFA400C0 */ sw $a0, 0xc0($sp) +/* 085C14 7F0510E4 AFB20028 */ sw $s2, 0x28($sp) +/* 085C18 7F0510E8 AFB10024 */ sw $s1, 0x24($sp) +/* 085C1C 7F0510EC AFB00020 */ sw $s0, 0x20($sp) +/* 085C20 7F0510F0 AFA600C8 */ sw $a2, 0xc8($sp) +/* 085C24 7F0510F4 00A02025 */ move $a0, $a1 +/* 085C28 7F0510F8 AFA500C4 */ sw $a1, 0xc4($sp) +/* 085C2C 7F0510FC 0FC15B0E */ jal load_model +/* 085C30 7F051100 AFAF00BC */ sw $t7, 0xbc($sp) +/* 085C34 7F051104 0FC0E90C */ jal remove_last_obj_pos_data_entry +/* 085C38 7F051108 00000000 */ nop +/* 085C3C 7F05110C 00408025 */ move $s0, $v0 +/* 085C40 7F051110 0FC1B025 */ jal get_obj_instance_controller_for_header +/* 085C44 7F051114 8FA400BC */ lw $a0, 0xbc($sp) +/* 085C48 7F051118 00408825 */ move $s1, $v0 +/* 085C4C 7F05111C 2E040001 */ sltiu $a0, $s0, 1 +/* 085C50 7F051120 2C450001 */ sltiu $a1, $v0, 1 +/* 085C54 7F051124 0FC1456C */ jal sub_GAME_7F0515B0 +/* 085C58 7F051128 8FA600BC */ lw $a2, 0xbc($sp) +/* 085C5C 7F05112C 16000004 */ bnez $s0, .L7F051140 +/* 085C60 7F051130 00409025 */ move $s2, $v0 +/* 085C64 7F051134 0FC0E90C */ jal remove_last_obj_pos_data_entry +/* 085C68 7F051138 00000000 */ nop +/* 085C6C 7F05113C 00408025 */ move $s0, $v0 +.L7F051140: +/* 085C70 7F051140 16200004 */ bnez $s1, .L7F051154 +/* 085C74 7F051144 00000000 */ nop +/* 085C78 7F051148 0FC1B025 */ jal get_obj_instance_controller_for_header +/* 085C7C 7F05114C 8FA400BC */ lw $a0, 0xbc($sp) +/* 085C80 7F051150 00408825 */ move $s1, $v0 +.L7F051154: +/* 085C84 7F051154 12400035 */ beqz $s2, .L7F05122C +/* 085C88 7F051158 00000000 */ nop +/* 085C8C 7F05115C 12000033 */ beqz $s0, .L7F05122C +/* 085C90 7F051160 00000000 */ nop +/* 085C94 7F051164 12200031 */ beqz $s1, .L7F05122C +/* 085C98 7F051168 27A20030 */ addiu $v0, $sp, 0x30 +/* 085C9C 7F05116C 3C188003 */ lui $t8, %hi(blank_11_object) +/* 085CA0 7F051170 27182114 */ addiu $t8, %lo(blank_11_object) # addiu $t8, $t8, 0x2114 +/* 085CA4 7F051174 8FA500C0 */ lw $a1, 0xc0($sp) +/* 085CA8 7F051178 27080078 */ addiu $t0, $t8, 0x78 +/* 085CAC 7F05117C 00404825 */ move $t1, $v0 +.L7F051180: +/* 085CB0 7F051180 8F010000 */ lw $at, ($t8) +/* 085CB4 7F051184 2718000C */ addiu $t8, $t8, 0xc +/* 085CB8 7F051188 2529000C */ addiu $t1, $t1, 0xc +/* 085CBC 7F05118C AD21FFF4 */ sw $at, -0xc($t1) +/* 085CC0 7F051190 8F01FFF8 */ lw $at, -8($t8) +/* 085CC4 7F051194 AD21FFF8 */ sw $at, -8($t1) +/* 085CC8 7F051198 8F01FFFC */ lw $at, -4($t8) +/* 085CCC 7F05119C 1708FFF8 */ bne $t8, $t0, .L7F051180 +/* 085CD0 7F0511A0 AD21FFFC */ sw $at, -4($t1) +/* 085CD4 7F0511A4 8F010000 */ lw $at, ($t8) +/* 085CD8 7F0511A8 00406025 */ move $t4, $v0 +/* 085CDC 7F0511AC 02406825 */ move $t5, $s2 +/* 085CE0 7F0511B0 AD210000 */ sw $at, ($t1) +/* 085CE4 7F0511B4 8F080004 */ lw $t0, 4($t8) +/* 085CE8 7F0511B8 244B0078 */ addiu $t3, $v0, 0x78 +/* 085CEC 7F0511BC AD280004 */ sw $t0, 4($t1) +.L7F0511C0: +/* 085CF0 7F0511C0 8D810000 */ lw $at, ($t4) +/* 085CF4 7F0511C4 258C000C */ addiu $t4, $t4, 0xc +/* 085CF8 7F0511C8 25AD000C */ addiu $t5, $t5, 0xc +/* 085CFC 7F0511CC ADA1FFF4 */ sw $at, -0xc($t5) +/* 085D00 7F0511D0 8D81FFF8 */ lw $at, -8($t4) +/* 085D04 7F0511D4 ADA1FFF8 */ sw $at, -8($t5) +/* 085D08 7F0511D8 8D81FFFC */ lw $at, -4($t4) +/* 085D0C 7F0511DC 158BFFF8 */ bne $t4, $t3, .L7F0511C0 +/* 085D10 7F0511E0 ADA1FFFC */ sw $at, -4($t5) +/* 085D14 7F0511E4 8D810000 */ lw $at, ($t4) +/* 085D18 7F0511E8 02402025 */ move $a0, $s2 +/* 085D1C 7F0511EC 02003825 */ move $a3, $s0 +/* 085D20 7F0511F0 ADA10000 */ sw $at, ($t5) +/* 085D24 7F0511F4 8D8B0004 */ lw $t3, 4($t4) +/* 085D28 7F0511F8 ADAB0004 */ sw $t3, 4($t5) +/* 085D2C 7F0511FC 8FAE00C4 */ lw $t6, 0xc4($sp) +/* 085D30 7F051200 A64E0004 */ sh $t6, 4($s2) +/* 085D34 7F051204 8FAF00C8 */ lw $t7, 0xc8($sp) +/* 085D38 7F051208 35F94000 */ ori $t9, $t7, 0x4000 +/* 085D3C 7F05120C AE590008 */ sw $t9, 8($s2) +/* 085D40 7F051210 84A80000 */ lh $t0, ($a1) +/* 085D44 7F051214 A6480006 */ sh $t0, 6($s2) +/* 085D48 7F051218 AFB10010 */ sw $s1, 0x10($sp) +/* 085D4C 7F05121C 0FC143D4 */ jal sub_GAME_7F050F50 +/* 085D50 7F051220 8FA600BC */ lw $a2, 0xbc($sp) +/* 085D54 7F051224 1000000A */ b .L7F051250 +/* 085D58 7F051228 00408025 */ move $s0, $v0 +.L7F05122C: +/* 085D5C 7F05122C 12200003 */ beqz $s1, .L7F05123C +/* 085D60 7F051230 00000000 */ nop +/* 085D64 7F051234 0FC1B08D */ jal set_obj_instance_scale_to_zero +/* 085D68 7F051238 02202025 */ move $a0, $s1 +.L7F05123C: +/* 085D6C 7F05123C 52000005 */ beql $s0, $zero, .L7F051254 +/* 085D70 7F051240 8FBF002C */ lw $ra, 0x2c($sp) +/* 085D74 7F051244 0FC0E921 */ jal set_last_obj_pos_data +/* 085D78 7F051248 02002025 */ move $a0, $s0 +/* 085D7C 7F05124C 00008025 */ move $s0, $zero +.L7F051250: +/* 085D80 7F051250 8FBF002C */ lw $ra, 0x2c($sp) +.L7F051254: +/* 085D84 7F051254 02001025 */ move $v0, $s0 +/* 085D88 7F051258 8FB00020 */ lw $s0, 0x20($sp) +/* 085D8C 7F05125C 8FB10024 */ lw $s1, 0x24($sp) +/* 085D90 7F051260 8FB20028 */ lw $s2, 0x28($sp) +/* 085D94 7F051264 03E00008 */ jr $ra +/* 085D98 7F051268 27BD00C0 */ addiu $sp, $sp, 0xc0 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F05126C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F05126C +/* 085D9C 7F05126C 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 085DA0 7F051270 AFB10020 */ sw $s1, 0x20($sp) +/* 085DA4 7F051274 240EFFFF */ li $t6, -1 +/* 085DA8 7F051278 3C078003 */ lui $a3, %hi(D_80030AF8) +/* 085DAC 7F05127C 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) +/* 085DB0 7F051280 00A08825 */ move $s1, $a1 +/* 085DB4 7F051284 AFBF0024 */ sw $ra, 0x24($sp) +/* 085DB8 7F051288 AFB0001C */ sw $s0, 0x1c($sp) +/* 085DBC 7F05128C AFA40058 */ sw $a0, 0x58($sp) +/* 085DC0 7F051290 AFA60060 */ sw $a2, 0x60($sp) +/* 085DC4 7F051294 AFA0004C */ sw $zero, 0x4c($sp) +/* 085DC8 7F051298 AFA00048 */ sw $zero, 0x48($sp) +/* 085DCC 7F05129C AFAE0044 */ sw $t6, 0x44($sp) +/* 085DD0 7F0512A0 2408FFFF */ li $t0, -1 +/* 085DD4 7F0512A4 2409FFFF */ li $t1, -1 +/* 085DD8 7F0512A8 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 +/* 085DDC 7F0512AC 8CE70AF8 */ lw $a3, %lo(D_80030AF8)($a3) +/* 085DE0 7F0512B0 240A0088 */ li $t2, 136 +.L7F0512B4: +/* 085DE4 7F0512B4 00EA0019 */ multu $a3, $t2 +/* 085DE8 7F0512B8 8FB80058 */ lw $t8, 0x58($sp) +/* 085DEC 7F0512BC 00007812 */ mflo $t7 +/* 085DF0 7F0512C0 016F8021 */ addu $s0, $t3, $t7 +/* 085DF4 7F0512C4 8E040010 */ lw $a0, 0x10($s0) +/* 085DF8 7F0512C8 54800008 */ bnezl $a0, .L7F0512EC +/* 085DFC 7F0512CC 8E190064 */ lw $t9, 0x64($s0) +/* 085E00 7F0512D0 57000040 */ bnezl $t8, .L7F0513D4 +/* 085E04 7F0512D4 24E70001 */ addiu $a3, $a3, 1 +/* 085E08 7F0512D8 5620003E */ bnezl $s1, .L7F0513D4 +/* 085E0C 7F0512DC 24E70001 */ addiu $a3, $a3, 1 +/* 085E10 7F0512E0 10000043 */ b .L7F0513F0 +/* 085E14 7F0512E4 AFA70044 */ sw $a3, 0x44($sp) +/* 085E18 7F0512E8 8E190064 */ lw $t9, 0x64($s0) +.L7F0512EC: +/* 085E1C 7F0512EC 332C0080 */ andi $t4, $t9, 0x80 +/* 085E20 7F0512F0 55800038 */ bnezl $t4, .L7F0513D4 +/* 085E24 7F0512F4 24E70001 */ addiu $a3, $a3, 1 +/* 085E28 7F0512F8 920D0002 */ lbu $t5, 2($s0) +/* 085E2C 7F0512FC 31AE0004 */ andi $t6, $t5, 4 +/* 085E30 7F051300 55C00034 */ bnezl $t6, .L7F0513D4 +/* 085E34 7F051304 24E70001 */ addiu $a3, $a3, 1 +/* 085E38 7F051308 860F0082 */ lh $t7, 0x82($s0) +/* 085E3C 7F05130C 5DE00005 */ bgtzl $t7, .L7F051324 +/* 085E40 7F051310 82020080 */ lb $v0, 0x80($s0) +/* 085E44 7F051314 8C98001C */ lw $t8, 0x1c($a0) +/* 085E48 7F051318 13000014 */ beqz $t8, .L7F05136C +/* 085E4C 7F05131C 00000000 */ nop +/* 085E50 7F051320 82020080 */ lb $v0, 0x80($s0) +.L7F051324: +/* 085E54 7F051324 2401001D */ li $at, 29 +/* 085E58 7F051328 10410005 */ beq $v0, $at, .L7F051340 +/* 085E5C 7F05132C 2401001C */ li $at, 28 +/* 085E60 7F051330 10410003 */ beq $v0, $at, .L7F051340 +/* 085E64 7F051334 2401001B */ li $at, 27 +/* 085E68 7F051338 54410026 */ bnel $v0, $at, .L7F0513D4 +/* 085E6C 7F05133C 24E70001 */ addiu $a3, $a3, 1 +.L7F051340: +/* 085E70 7F051340 8C83001C */ lw $v1, 0x1c($a0) +/* 085E74 7F051344 10600009 */ beqz $v1, .L7F05136C +/* 085E78 7F051348 00000000 */ nop +/* 085E7C 7F05134C 90620000 */ lbu $v0, ($v1) +/* 085E80 7F051350 24010001 */ li $at, 1 +/* 085E84 7F051354 10410005 */ beq $v0, $at, .L7F05136C +/* 085E88 7F051358 24010002 */ li $at, 2 +/* 085E8C 7F05135C 10410003 */ beq $v0, $at, .L7F05136C +/* 085E90 7F051360 24010004 */ li $at, 4 +/* 085E94 7F051364 5441001B */ bnel $v0, $at, .L7F0513D4 +/* 085E98 7F051368 24E70001 */ addiu $a3, $a3, 1 +.L7F05136C: +/* 085E9C 7F05136C 1220000E */ beqz $s1, .L7F0513A8 +/* 085EA0 7F051370 8FA50060 */ lw $a1, 0x60($sp) +/* 085EA4 7F051374 8E040014 */ lw $a0, 0x14($s0) +/* 085EA8 7F051378 AFA70054 */ sw $a3, 0x54($sp) +/* 085EAC 7F05137C AFA80040 */ sw $t0, 0x40($sp) +/* 085EB0 7F051380 0FC1B018 */ jal sub_GAME_7F06C060 +/* 085EB4 7F051384 AFA9003C */ sw $t1, 0x3c($sp) +/* 085EB8 7F051388 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) +/* 085EBC 7F05138C 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 +/* 085EC0 7F051390 8FA70054 */ lw $a3, 0x54($sp) +/* 085EC4 7F051394 8FA80040 */ lw $t0, 0x40($sp) +/* 085EC8 7F051398 8FA9003C */ lw $t1, 0x3c($sp) +/* 085ECC 7F05139C 1040000C */ beqz $v0, .L7F0513D0 +/* 085ED0 7F0513A0 240A0088 */ li $t2, 136 +/* 085ED4 7F0513A4 8E040010 */ lw $a0, 0x10($s0) +.L7F0513A8: +/* 085ED8 7F0513A8 90990001 */ lbu $t9, 1($a0) +/* 085EDC 7F0513AC 332C0002 */ andi $t4, $t9, 2 +/* 085EE0 7F0513B0 15800004 */ bnez $t4, .L7F0513C4 +/* 085EE4 7F0513B4 00000000 */ nop +/* 085EE8 7F0513B8 05010002 */ bgez $t0, .L7F0513C4 +/* 085EEC 7F0513BC 00000000 */ nop +/* 085EF0 7F0513C0 00E04025 */ move $t0, $a3 +.L7F0513C4: +/* 085EF4 7F0513C4 05230003 */ bgezl $t1, .L7F0513D4 +/* 085EF8 7F0513C8 24E70001 */ addiu $a3, $a3, 1 +/* 085EFC 7F0513CC 00E04825 */ move $t1, $a3 +.L7F0513D0: +/* 085F00 7F0513D0 24E70001 */ addiu $a3, $a3, 1 +.L7F0513D4: +/* 085F04 7F0513D4 2401001E */ li $at, 30 +/* 085F08 7F0513D8 00E1001A */ div $zero, $a3, $at +/* 085F0C 7F0513DC 3C0E8003 */ lui $t6, %hi(D_80030AF8) +/* 085F10 7F0513E0 8DCE0AF8 */ lw $t6, %lo(D_80030AF8)($t6) +/* 085F14 7F0513E4 00003810 */ mfhi $a3 +/* 085F18 7F0513E8 14EEFFB2 */ bne $a3, $t6, .L7F0512B4 +/* 085F1C 7F0513EC 00000000 */ nop +.L7F0513F0: +/* 085F20 7F0513F0 8FAF0044 */ lw $t7, 0x44($sp) +/* 085F24 7F0513F4 24040008 */ li $a0, 8 +/* 085F28 7F0513F8 27A5004C */ addiu $a1, $sp, 0x4c +/* 085F2C 7F0513FC 05E0000C */ bltz $t7, .L7F051430 +/* 085F30 7F051400 27A60048 */ addiu $a2, $sp, 0x48 +/* 085F34 7F051404 25F80001 */ addiu $t8, $t7, 1 +/* 085F38 7F051408 2401001E */ li $at, 30 +/* 085F3C 7F05140C 0301001A */ div $zero, $t8, $at +/* 085F40 7F051410 0000C810 */ mfhi $t9 +/* 085F44 7F051414 3C018003 */ lui $at, %hi(D_80030AF8) +/* 085F48 7F051418 AC390AF8 */ sw $t9, %lo(D_80030AF8)($at) +/* 085F4C 7F05141C 01EA0019 */ multu $t7, $t2 +/* 085F50 7F051420 00006012 */ mflo $t4 +/* 085F54 7F051424 016C1021 */ addu $v0, $t3, $t4 +/* 085F58 7F051428 10000053 */ b .L7F051578 +/* 085F5C 7F05142C 8FBF0024 */ lw $ra, 0x24($sp) +.L7F051430: +/* 085F60 7F051430 8FAD0060 */ lw $t5, 0x60($sp) +/* 085F64 7F051434 8FA70058 */ lw $a3, 0x58($sp) +/* 085F68 7F051438 AFB10010 */ sw $s1, 0x10($sp) +/* 085F6C 7F05143C AFA80040 */ sw $t0, 0x40($sp) +/* 085F70 7F051440 AFA9003C */ sw $t1, 0x3c($sp) +/* 085F74 7F051444 0FC15BC2 */ jal sub_GAME_7F056F08 +/* 085F78 7F051448 AFAD0014 */ sw $t5, 0x14($sp) +/* 085F7C 7F05144C 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) +/* 085F80 7F051450 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 +/* 085F84 7F051454 8FA80040 */ lw $t0, 0x40($sp) +/* 085F88 7F051458 8FA9003C */ lw $t1, 0x3c($sp) +/* 085F8C 7F05145C 10400003 */ beqz $v0, .L7F05146C +/* 085F90 7F051460 240A0088 */ li $t2, 136 +/* 085F94 7F051464 10000044 */ b .L7F051578 +/* 085F98 7F051468 8FBF0024 */ lw $ra, 0x24($sp) +.L7F05146C: +/* 085F9C 7F05146C 05000015 */ bltz $t0, .L7F0514C4 +/* 085FA0 7F051470 8FAF004C */ lw $t7, 0x4c($sp) +/* 085FA4 7F051474 010A0019 */ multu $t0, $t2 +/* 085FA8 7F051478 24050001 */ li $a1, 1 +/* 085FAC 7F05147C 00008012 */ mflo $s0 +/* 085FB0 7F051480 01702021 */ addu $a0, $t3, $s0 +/* 085FB4 7F051484 8C8E0010 */ lw $t6, 0x10($a0) +/* 085FB8 7F051488 51C00007 */ beql $t6, $zero, .L7F0514A8 +/* 085FBC 7F05148C 25180001 */ addiu $t8, $t0, 1 +/* 085FC0 7F051490 0FC10409 */ jal sub_GAME_7F041024 +/* 085FC4 7F051494 AFA80040 */ sw $t0, 0x40($sp) +/* 085FC8 7F051498 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) +/* 085FCC 7F05149C 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 +/* 085FD0 7F0514A0 8FA80040 */ lw $t0, 0x40($sp) +/* 085FD4 7F0514A4 25180001 */ addiu $t8, $t0, 1 +.L7F0514A8: +/* 085FD8 7F0514A8 2401001E */ li $at, 30 +/* 085FDC 7F0514AC 0301001A */ div $zero, $t8, $at +/* 085FE0 7F0514B0 0000C810 */ mfhi $t9 +/* 085FE4 7F0514B4 3C018003 */ lui $at, %hi(D_80030AF8) +/* 085FE8 7F0514B8 AC390AF8 */ sw $t9, %lo(D_80030AF8)($at) +/* 085FEC 7F0514BC 1000002D */ b .L7F051574 +/* 085FF0 7F0514C0 01701021 */ addu $v0, $t3, $s0 +.L7F0514C4: +/* 085FF4 7F0514C4 11E00009 */ beqz $t7, .L7F0514EC +/* 085FF8 7F0514C8 00000000 */ nop +/* 085FFC 7F0514CC 8DEC0010 */ lw $t4, 0x10($t7) +/* 086000 7F0514D0 01E02025 */ move $a0, $t7 +/* 086004 7F0514D4 11800003 */ beqz $t4, .L7F0514E4 +/* 086008 7F0514D8 00000000 */ nop +/* 08600C 7F0514DC 0FC10409 */ jal sub_GAME_7F041024 +/* 086010 7F0514E0 24050001 */ li $a1, 1 +.L7F0514E4: +/* 086014 7F0514E4 10000023 */ b .L7F051574 +/* 086018 7F0514E8 8FA2004C */ lw $v0, 0x4c($sp) +.L7F0514EC: +/* 08601C 7F0514EC 05220016 */ bltzl $t1, .L7F051548 +/* 086020 7F0514F0 8FB90048 */ lw $t9, 0x48($sp) +/* 086024 7F0514F4 012A0019 */ multu $t1, $t2 +/* 086028 7F0514F8 24050001 */ li $a1, 1 +/* 08602C 7F0514FC 00008012 */ mflo $s0 +/* 086030 7F051500 01702021 */ addu $a0, $t3, $s0 +/* 086034 7F051504 8C8D0010 */ lw $t5, 0x10($a0) +/* 086038 7F051508 51A00007 */ beql $t5, $zero, .L7F051528 +/* 08603C 7F05150C 252E0001 */ addiu $t6, $t1, 1 +/* 086040 7F051510 0FC10409 */ jal sub_GAME_7F041024 +/* 086044 7F051514 AFA9003C */ sw $t1, 0x3c($sp) +/* 086048 7F051518 3C0B8007 */ lui $t3, %hi(ProjectileData_start_address) +/* 08604C 7F05151C 256B1E80 */ addiu $t3, %lo(ProjectileData_start_address) # addiu $t3, $t3, 0x1e80 +/* 086050 7F051520 8FA9003C */ lw $t1, 0x3c($sp) +/* 086054 7F051524 252E0001 */ addiu $t6, $t1, 1 +.L7F051528: +/* 086058 7F051528 2401001E */ li $at, 30 +/* 08605C 7F05152C 01C1001A */ div $zero, $t6, $at +/* 086060 7F051530 0000C010 */ mfhi $t8 +/* 086064 7F051534 3C018003 */ lui $at, %hi(D_80030AF8) +/* 086068 7F051538 AC380AF8 */ sw $t8, %lo(D_80030AF8)($at) +/* 08606C 7F05153C 1000000D */ b .L7F051574 +/* 086070 7F051540 01701021 */ addu $v0, $t3, $s0 +/* 086074 7F051544 8FB90048 */ lw $t9, 0x48($sp) +.L7F051548: +/* 086078 7F051548 5320000A */ beql $t9, $zero, .L7F051574 +/* 08607C 7F05154C 00001025 */ move $v0, $zero +/* 086080 7F051550 8F2C0010 */ lw $t4, 0x10($t9) +/* 086084 7F051554 03202025 */ move $a0, $t9 +/* 086088 7F051558 11800003 */ beqz $t4, .L7F051568 +/* 08608C 7F05155C 00000000 */ nop +/* 086090 7F051560 0FC10409 */ jal sub_GAME_7F041024 +/* 086094 7F051564 24050001 */ li $a1, 1 +.L7F051568: +/* 086098 7F051568 10000002 */ b .L7F051574 +/* 08609C 7F05156C 8FA20048 */ lw $v0, 0x48($sp) +/* 0860A0 7F051570 00001025 */ move $v0, $zero +.L7F051574: +/* 0860A4 7F051574 8FBF0024 */ lw $ra, 0x24($sp) +.L7F051578: +/* 0860A8 7F051578 8FB0001C */ lw $s0, 0x1c($sp) +/* 0860AC 7F05157C 8FB10020 */ lw $s1, 0x20($sp) +/* 0860B0 7F051580 03E00008 */ jr $ra +/* 0860B4 7F051584 27BD0058 */ addiu $sp, $sp, 0x58 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F051588(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F051588 +/* 0860B8 7F051588 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0860BC 7F05158C AFBF0014 */ sw $ra, 0x14($sp) +/* 0860C0 7F051590 00002025 */ move $a0, $zero +/* 0860C4 7F051594 00002825 */ move $a1, $zero +/* 0860C8 7F051598 0FC1449B */ jal sub_GAME_7F05126C +/* 0860CC 7F05159C 00003025 */ move $a2, $zero +/* 0860D0 7F0515A0 8FBF0014 */ lw $ra, 0x14($sp) +/* 0860D4 7F0515A4 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0860D8 7F0515A8 03E00008 */ jr $ra +/* 0860DC 7F0515AC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0515B0(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0515B0 +/* 0860E0 7F0515B0 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 0860E4 7F0515B4 AFB50034 */ sw $s5, 0x34($sp) +/* 0860E8 7F0515B8 3C158003 */ lui $s5, %hi(D_80030AFC) +/* 0860EC 7F0515BC AFB40030 */ sw $s4, 0x30($sp) +/* 0860F0 7F0515C0 26B50AFC */ addiu $s5, %lo(D_80030AFC) # addiu $s5, $s5, 0xafc +/* 0860F4 7F0515C4 AFB60038 */ sw $s6, 0x38($sp) +/* 0860F8 7F0515C8 AFB3002C */ sw $s3, 0x2c($sp) +/* 0860FC 7F0515CC AFB20028 */ sw $s2, 0x28($sp) +/* 086100 7F0515D0 AFB10024 */ sw $s1, 0x24($sp) +/* 086104 7F0515D4 240EFFFF */ li $t6, -1 +/* 086108 7F0515D8 3C148007 */ lui $s4, %hi(dword_CODE_bss_80072E70) +/* 08610C 7F0515DC 00A09025 */ move $s2, $a1 +/* 086110 7F0515E0 AFBF003C */ sw $ra, 0x3c($sp) +/* 086114 7F0515E4 AFB00020 */ sw $s0, 0x20($sp) +/* 086118 7F0515E8 AFA60070 */ sw $a2, 0x70($sp) +/* 08611C 7F0515EC 00803825 */ move $a3, $a0 +/* 086120 7F0515F0 AFA0005C */ sw $zero, 0x5c($sp) +/* 086124 7F0515F4 AFA00058 */ sw $zero, 0x58($sp) +/* 086128 7F0515F8 AFAE0054 */ sw $t6, 0x54($sp) +/* 08612C 7F0515FC 2411FFFF */ li $s1, -1 +/* 086130 7F051600 2413FFFF */ li $s3, -1 +/* 086134 7F051604 26942E70 */ addiu $s4, %lo(dword_CODE_bss_80072E70) # addiu $s4, $s4, 0x2e70 +/* 086138 7F051608 2416000A */ li $s6, 10 +/* 08613C 7F05160C 8EA30000 */ lw $v1, ($s5) +/* 086140 7F051610 000379C0 */ sll $t7, $v1, 7 +.L7F051614: +/* 086144 7F051614 028F8021 */ addu $s0, $s4, $t7 +/* 086148 7F051618 8E020010 */ lw $v0, 0x10($s0) +/* 08614C 7F05161C 54400008 */ bnezl $v0, .L7F051640 +/* 086150 7F051620 8E180064 */ lw $t8, 0x64($s0) +/* 086154 7F051624 54E00022 */ bnezl $a3, .L7F0516B0 +/* 086158 7F051628 246B0001 */ addiu $t3, $v1, 1 +/* 08615C 7F05162C 56400020 */ bnezl $s2, .L7F0516B0 +/* 086160 7F051630 246B0001 */ addiu $t3, $v1, 1 +/* 086164 7F051634 1000002C */ b .L7F0516E8 +/* 086168 7F051638 AFA30054 */ sw $v1, 0x54($sp) +/* 08616C 7F05163C 8E180064 */ lw $t8, 0x64($s0) +.L7F051640: +/* 086170 7F051640 33190080 */ andi $t9, $t8, 0x80 +/* 086174 7F051644 5720001A */ bnezl $t9, .L7F0516B0 +/* 086178 7F051648 246B0001 */ addiu $t3, $v1, 1 +/* 08617C 7F05164C 8C48001C */ lw $t0, 0x1c($v0) +/* 086180 7F051650 55000017 */ bnezl $t0, .L7F0516B0 +/* 086184 7F051654 246B0001 */ addiu $t3, $v1, 1 +/* 086188 7F051658 5240000B */ beql $s2, $zero, .L7F051688 +/* 08618C 7F05165C 90490001 */ lbu $t1, 1($v0) +/* 086190 7F051660 8E040014 */ lw $a0, 0x14($s0) +/* 086194 7F051664 8FA50070 */ lw $a1, 0x70($sp) +/* 086198 7F051668 AFA30064 */ sw $v1, 0x64($sp) +/* 08619C 7F05166C 0FC1B018 */ jal sub_GAME_7F06C060 +/* 0861A0 7F051670 AFA70068 */ sw $a3, 0x68($sp) +/* 0861A4 7F051674 8FA30064 */ lw $v1, 0x64($sp) +/* 0861A8 7F051678 1040000C */ beqz $v0, .L7F0516AC +/* 0861AC 7F05167C 8FA70068 */ lw $a3, 0x68($sp) +/* 0861B0 7F051680 8E020010 */ lw $v0, 0x10($s0) +/* 0861B4 7F051684 90490001 */ lbu $t1, 1($v0) +.L7F051688: +/* 0861B8 7F051688 312A0002 */ andi $t2, $t1, 2 +/* 0861BC 7F05168C 15400004 */ bnez $t2, .L7F0516A0 +/* 0861C0 7F051690 00000000 */ nop +/* 0861C4 7F051694 06210002 */ bgez $s1, .L7F0516A0 +/* 0861C8 7F051698 00000000 */ nop +/* 0861CC 7F05169C 00608825 */ move $s1, $v1 +.L7F0516A0: +/* 0861D0 7F0516A0 06630003 */ bgezl $s3, .L7F0516B0 +/* 0861D4 7F0516A4 246B0001 */ addiu $t3, $v1, 1 +/* 0861D8 7F0516A8 00609825 */ move $s3, $v1 +.L7F0516AC: +/* 0861DC 7F0516AC 246B0001 */ addiu $t3, $v1, 1 +.L7F0516B0: +/* 0861E0 7F0516B0 0176001A */ div $zero, $t3, $s6 +/* 0861E4 7F0516B4 8EAC0000 */ lw $t4, ($s5) +/* 0861E8 7F0516B8 00001810 */ mfhi $v1 +/* 0861EC 7F0516BC 16C00002 */ bnez $s6, .L7F0516C8 +/* 0861F0 7F0516C0 00000000 */ nop +/* 0861F4 7F0516C4 0007000D */ break 7 +.L7F0516C8: +/* 0861F8 7F0516C8 2401FFFF */ li $at, -1 +/* 0861FC 7F0516CC 16C10004 */ bne $s6, $at, .L7F0516E0 +/* 086200 7F0516D0 3C018000 */ lui $at, 0x8000 +/* 086204 7F0516D4 15610002 */ bne $t3, $at, .L7F0516E0 +/* 086208 7F0516D8 00000000 */ nop +/* 08620C 7F0516DC 0006000D */ break 6 +.L7F0516E0: +/* 086210 7F0516E0 546CFFCC */ bnel $v1, $t4, .L7F051614 +/* 086214 7F0516E4 000379C0 */ sll $t7, $v1, 7 +.L7F0516E8: +/* 086218 7F0516E8 8FAD0054 */ lw $t5, 0x54($sp) +/* 08621C 7F0516EC 05A00011 */ bltz $t5, .L7F051734 +/* 086220 7F0516F0 25AE0001 */ addiu $t6, $t5, 1 +/* 086224 7F0516F4 01D6001A */ div $zero, $t6, $s6 +/* 086228 7F0516F8 8FB80054 */ lw $t8, 0x54($sp) +/* 08622C 7F0516FC 00007810 */ mfhi $t7 +/* 086230 7F051700 AEAF0000 */ sw $t7, ($s5) +/* 086234 7F051704 16C00002 */ bnez $s6, .L7F051710 +/* 086238 7F051708 00000000 */ nop +/* 08623C 7F05170C 0007000D */ break 7 +.L7F051710: +/* 086240 7F051710 2401FFFF */ li $at, -1 +/* 086244 7F051714 16C10004 */ bne $s6, $at, .L7F051728 +/* 086248 7F051718 3C018000 */ lui $at, 0x8000 +/* 08624C 7F05171C 15C10002 */ bne $t6, $at, .L7F051728 +/* 086250 7F051720 00000000 */ nop +/* 086254 7F051724 0006000D */ break 6 +.L7F051728: +/* 086258 7F051728 0018C9C0 */ sll $t9, $t8, 7 +/* 08625C 7F05172C 10000054 */ b .L7F051880 +/* 086260 7F051730 02991021 */ addu $v0, $s4, $t9 +.L7F051734: +/* 086264 7F051734 8FA80070 */ lw $t0, 0x70($sp) +/* 086268 7F051738 24040011 */ li $a0, 17 +/* 08626C 7F05173C 27A5005C */ addiu $a1, $sp, 0x5c +/* 086270 7F051740 27A60058 */ addiu $a2, $sp, 0x58 +/* 086274 7F051744 AFB20010 */ sw $s2, 0x10($sp) +/* 086278 7F051748 0FC15BC2 */ jal sub_GAME_7F056F08 +/* 08627C 7F05174C AFA80014 */ sw $t0, 0x14($sp) +/* 086280 7F051750 10400003 */ beqz $v0, .L7F051760 +/* 086284 7F051754 00401825 */ move $v1, $v0 +/* 086288 7F051758 10000049 */ b .L7F051880 +/* 08628C 7F05175C 00601025 */ move $v0, $v1 +.L7F051760: +/* 086290 7F051760 06220019 */ bltzl $s1, .L7F0517C8 +/* 086294 7F051764 8FAE005C */ lw $t6, 0x5c($sp) +/* 086298 7F051768 001149C0 */ sll $t1, $s1, 7 +/* 08629C 7F05176C 02892021 */ addu $a0, $s4, $t1 +/* 0862A0 7F051770 8C8A0010 */ lw $t2, 0x10($a0) +/* 0862A4 7F051774 51400004 */ beql $t2, $zero, .L7F051788 +/* 0862A8 7F051778 262B0001 */ addiu $t3, $s1, 1 +/* 0862AC 7F05177C 0FC10409 */ jal sub_GAME_7F041024 +/* 0862B0 7F051780 24050001 */ li $a1, 1 +/* 0862B4 7F051784 262B0001 */ addiu $t3, $s1, 1 +.L7F051788: +/* 0862B8 7F051788 0176001A */ div $zero, $t3, $s6 +/* 0862BC 7F05178C 00006010 */ mfhi $t4 +/* 0862C0 7F051790 001169C0 */ sll $t5, $s1, 7 +/* 0862C4 7F051794 16C00002 */ bnez $s6, .L7F0517A0 +/* 0862C8 7F051798 00000000 */ nop +/* 0862CC 7F05179C 0007000D */ break 7 +.L7F0517A0: +/* 0862D0 7F0517A0 2401FFFF */ li $at, -1 +/* 0862D4 7F0517A4 16C10004 */ bne $s6, $at, .L7F0517B8 +/* 0862D8 7F0517A8 3C018000 */ lui $at, 0x8000 +/* 0862DC 7F0517AC 15610002 */ bne $t3, $at, .L7F0517B8 +/* 0862E0 7F0517B0 00000000 */ nop +/* 0862E4 7F0517B4 0006000D */ break 6 +.L7F0517B8: +/* 0862E8 7F0517B8 AEAC0000 */ sw $t4, ($s5) +/* 0862EC 7F0517BC 10000030 */ b .L7F051880 +/* 0862F0 7F0517C0 028D1021 */ addu $v0, $s4, $t5 +/* 0862F4 7F0517C4 8FAE005C */ lw $t6, 0x5c($sp) +.L7F0517C8: +/* 0862F8 7F0517C8 11C00009 */ beqz $t6, .L7F0517F0 +/* 0862FC 7F0517CC 00000000 */ nop +/* 086300 7F0517D0 8DCF0010 */ lw $t7, 0x10($t6) +/* 086304 7F0517D4 01C02025 */ move $a0, $t6 +/* 086308 7F0517D8 11E00003 */ beqz $t7, .L7F0517E8 +/* 08630C 7F0517DC 00000000 */ nop +/* 086310 7F0517E0 0FC10409 */ jal sub_GAME_7F041024 +/* 086314 7F0517E4 24050001 */ li $a1, 1 +.L7F0517E8: +/* 086318 7F0517E8 10000025 */ b .L7F051880 +/* 08631C 7F0517EC 8FA2005C */ lw $v0, 0x5c($sp) +.L7F0517F0: +/* 086320 7F0517F0 06600017 */ bltz $s3, .L7F051850 +/* 086324 7F0517F4 0013C1C0 */ sll $t8, $s3, 7 +/* 086328 7F0517F8 02982021 */ addu $a0, $s4, $t8 +/* 08632C 7F0517FC 8C990010 */ lw $t9, 0x10($a0) +/* 086330 7F051800 53200004 */ beql $t9, $zero, .L7F051814 +/* 086334 7F051804 26680001 */ addiu $t0, $s3, 1 +/* 086338 7F051808 0FC10409 */ jal sub_GAME_7F041024 +/* 08633C 7F05180C 24050001 */ li $a1, 1 +/* 086340 7F051810 26680001 */ addiu $t0, $s3, 1 +.L7F051814: +/* 086344 7F051814 0116001A */ div $zero, $t0, $s6 +/* 086348 7F051818 00004810 */ mfhi $t1 +/* 08634C 7F05181C 001351C0 */ sll $t2, $s3, 7 +/* 086350 7F051820 16C00002 */ bnez $s6, .L7F05182C +/* 086354 7F051824 00000000 */ nop +/* 086358 7F051828 0007000D */ break 7 +.L7F05182C: +/* 08635C 7F05182C 2401FFFF */ li $at, -1 +/* 086360 7F051830 16C10004 */ bne $s6, $at, .L7F051844 +/* 086364 7F051834 3C018000 */ lui $at, 0x8000 +/* 086368 7F051838 15010002 */ bne $t0, $at, .L7F051844 +/* 08636C 7F05183C 00000000 */ nop +/* 086370 7F051840 0006000D */ break 6 +.L7F051844: +/* 086374 7F051844 AEA90000 */ sw $t1, ($s5) +/* 086378 7F051848 1000000D */ b .L7F051880 +/* 08637C 7F05184C 028A1021 */ addu $v0, $s4, $t2 +.L7F051850: +/* 086380 7F051850 8FAB0058 */ lw $t3, 0x58($sp) +/* 086384 7F051854 5160000A */ beql $t3, $zero, .L7F051880 +/* 086388 7F051858 00001025 */ move $v0, $zero +/* 08638C 7F05185C 8D6C0010 */ lw $t4, 0x10($t3) +/* 086390 7F051860 01602025 */ move $a0, $t3 +/* 086394 7F051864 11800003 */ beqz $t4, .L7F051874 +/* 086398 7F051868 00000000 */ nop +/* 08639C 7F05186C 0FC10409 */ jal sub_GAME_7F041024 +/* 0863A0 7F051870 24050001 */ li $a1, 1 +.L7F051874: +/* 0863A4 7F051874 10000002 */ b .L7F051880 +/* 0863A8 7F051878 8FA20058 */ lw $v0, 0x58($sp) +/* 0863AC 7F05187C 00001025 */ move $v0, $zero +.L7F051880: +/* 0863B0 7F051880 8FBF003C */ lw $ra, 0x3c($sp) +/* 0863B4 7F051884 8FB00020 */ lw $s0, 0x20($sp) +/* 0863B8 7F051888 8FB10024 */ lw $s1, 0x24($sp) +/* 0863BC 7F05188C 8FB20028 */ lw $s2, 0x28($sp) +/* 0863C0 7F051890 8FB3002C */ lw $s3, 0x2c($sp) +/* 0863C4 7F051894 8FB40030 */ lw $s4, 0x30($sp) +/* 0863C8 7F051898 8FB50034 */ lw $s5, 0x34($sp) +/* 0863CC 7F05189C 8FB60038 */ lw $s6, 0x38($sp) +/* 0863D0 7F0518A0 03E00008 */ jr $ra +/* 0863D4 7F0518A4 27BD0068 */ addiu $sp, $sp, 0x68 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0518A8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0518A8 +/* 0863D8 7F0518A8 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0863DC 7F0518AC AFBF0014 */ sw $ra, 0x14($sp) +/* 0863E0 7F0518B0 00002025 */ move $a0, $zero +/* 0863E4 7F0518B4 00002825 */ move $a1, $zero +/* 0863E8 7F0518B8 0FC1456C */ jal sub_GAME_7F0515B0 +/* 0863EC 7F0518BC 00003025 */ move $a2, $zero +/* 0863F0 7F0518C0 8FBF0014 */ lw $ra, 0x14($sp) +/* 0863F4 7F0518C4 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0863F8 7F0518C8 03E00008 */ jr $ra +/* 0863FC 7F0518CC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0518D0(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0518D0 +/* 086400 7F0518D0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 086404 7F0518D4 3C048007 */ lui $a0, %hi(dword_CODE_bss_80073370) +/* 086408 7F0518D8 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) +/* 08640C 7F0518DC AFBF0014 */ sw $ra, 0x14($sp) +/* 086410 7F0518E0 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 +/* 086414 7F0518E4 24843370 */ addiu $a0, %lo(dword_CODE_bss_80073370) # addiu $a0, $a0, 0x3370 +/* 086418 7F0518E8 00001825 */ move $v1, $zero +.L7F0518EC: +/* 08641C 7F0518EC 8C8E0010 */ lw $t6, 0x10($a0) +/* 086420 7F0518F0 24840084 */ addiu $a0, $a0, 0x84 +/* 086424 7F0518F4 0082082B */ sltu $at, $a0, $v0 +/* 086428 7F0518F8 15C00004 */ bnez $t6, .L7F05190C +/* 08642C 7F0518FC 3C0F8007 */ lui $t7, %hi(dword_CODE_bss_80073370) +/* 086430 7F051900 25EF3370 */ addiu $t7, %lo(dword_CODE_bss_80073370) # addiu $t7, $t7, 0x3370 +/* 086434 7F051904 10000040 */ b .L7F051A08 +/* 086438 7F051908 006F1021 */ addu $v0, $v1, $t7 +.L7F05190C: +/* 08643C 7F05190C 1420FFF7 */ bnez $at, .L7F0518EC +/* 086440 7F051910 24630084 */ addiu $v1, $v1, 0x84 +/* 086444 7F051914 3C048007 */ lui $a0, %hi(dword_CODE_bss_80073370) +/* 086448 7F051918 3C058007 */ lui $a1, %hi(dword_CODE_bss_80073DC0) +/* 08644C 7F05191C 24A53DC0 */ addiu $a1, %lo(dword_CODE_bss_80073DC0) # addiu $a1, $a1, 0x3dc0 +/* 086450 7F051920 24843370 */ addiu $a0, %lo(dword_CODE_bss_80073370) # addiu $a0, $a0, 0x3370 +/* 086454 7F051924 00001825 */ move $v1, $zero +.L7F051928: +/* 086458 7F051928 8C980064 */ lw $t8, 0x64($a0) +/* 08645C 7F05192C 33190080 */ andi $t9, $t8, 0x80 +/* 086460 7F051930 57200016 */ bnezl $t9, .L7F05198C +/* 086464 7F051934 24840084 */ addiu $a0, $a0, 0x84 +/* 086468 7F051938 90880002 */ lbu $t0, 2($a0) +/* 08646C 7F05193C 31090004 */ andi $t1, $t0, 4 +/* 086470 7F051940 55200012 */ bnezl $t1, .L7F05198C +/* 086474 7F051944 24840084 */ addiu $a0, $a0, 0x84 +/* 086478 7F051948 8C820010 */ lw $v0, 0x10($a0) +/* 08647C 7F05194C 8C4A001C */ lw $t2, 0x1c($v0) +/* 086480 7F051950 5540000E */ bnezl $t2, .L7F05198C +/* 086484 7F051954 24840084 */ addiu $a0, $a0, 0x84 +/* 086488 7F051958 904B0001 */ lbu $t3, 1($v0) +/* 08648C 7F05195C 316C0002 */ andi $t4, $t3, 2 +/* 086490 7F051960 5580000A */ bnezl $t4, .L7F05198C +/* 086494 7F051964 24840084 */ addiu $a0, $a0, 0x84 +/* 086498 7F051968 24050001 */ li $a1, 1 +/* 08649C 7F05196C 0FC10409 */ jal sub_GAME_7F041024 +/* 0864A0 7F051970 AFA30018 */ sw $v1, 0x18($sp) +/* 0864A4 7F051974 8FA30018 */ lw $v1, 0x18($sp) +/* 0864A8 7F051978 3C0D8007 */ lui $t5, %hi(dword_CODE_bss_80073370) +/* 0864AC 7F05197C 25AD3370 */ addiu $t5, %lo(dword_CODE_bss_80073370) # addiu $t5, $t5, 0x3370 +/* 0864B0 7F051980 10000021 */ b .L7F051A08 +/* 0864B4 7F051984 006D1021 */ addu $v0, $v1, $t5 +/* 0864B8 7F051988 24840084 */ addiu $a0, $a0, 0x84 +.L7F05198C: +/* 0864BC 7F05198C 0085082B */ sltu $at, $a0, $a1 +/* 0864C0 7F051990 1420FFE5 */ bnez $at, .L7F051928 +/* 0864C4 7F051994 24630084 */ addiu $v1, $v1, 0x84 +/* 0864C8 7F051998 3C048007 */ lui $a0, %hi(dword_CODE_bss_80073370) +/* 0864CC 7F05199C 3C028007 */ lui $v0, %hi(dword_CODE_bss_80073DC0) +/* 0864D0 7F0519A0 24423DC0 */ addiu $v0, %lo(dword_CODE_bss_80073DC0) # addiu $v0, $v0, 0x3dc0 +/* 0864D4 7F0519A4 24843370 */ addiu $a0, %lo(dword_CODE_bss_80073370) # addiu $a0, $a0, 0x3370 +/* 0864D8 7F0519A8 00001825 */ move $v1, $zero +.L7F0519AC: +/* 0864DC 7F0519AC 8C8E0064 */ lw $t6, 0x64($a0) +/* 0864E0 7F0519B0 31CF0080 */ andi $t7, $t6, 0x80 +/* 0864E4 7F0519B4 55E00011 */ bnezl $t7, .L7F0519FC +/* 0864E8 7F0519B8 24840084 */ addiu $a0, $a0, 0x84 +/* 0864EC 7F0519BC 90980002 */ lbu $t8, 2($a0) +/* 0864F0 7F0519C0 33190004 */ andi $t9, $t8, 4 +/* 0864F4 7F0519C4 5720000D */ bnezl $t9, .L7F0519FC +/* 0864F8 7F0519C8 24840084 */ addiu $a0, $a0, 0x84 +/* 0864FC 7F0519CC 8C880010 */ lw $t0, 0x10($a0) +/* 086500 7F0519D0 8D09001C */ lw $t1, 0x1c($t0) +/* 086504 7F0519D4 15200008 */ bnez $t1, .L7F0519F8 +/* 086508 7F0519D8 24050001 */ li $a1, 1 +/* 08650C 7F0519DC 0FC10409 */ jal sub_GAME_7F041024 +/* 086510 7F0519E0 AFA30018 */ sw $v1, 0x18($sp) +/* 086514 7F0519E4 8FA30018 */ lw $v1, 0x18($sp) +/* 086518 7F0519E8 3C0A8007 */ lui $t2, %hi(dword_CODE_bss_80073370) +/* 08651C 7F0519EC 254A3370 */ addiu $t2, %lo(dword_CODE_bss_80073370) # addiu $t2, $t2, 0x3370 +/* 086520 7F0519F0 10000005 */ b .L7F051A08 +/* 086524 7F0519F4 006A1021 */ addu $v0, $v1, $t2 +.L7F0519F8: +/* 086528 7F0519F8 24840084 */ addiu $a0, $a0, 0x84 +.L7F0519FC: +/* 08652C 7F0519FC 1482FFEB */ bne $a0, $v0, .L7F0519AC +/* 086530 7F051A00 24630084 */ addiu $v1, $v1, 0x84 +/* 086534 7F051A04 00001025 */ move $v0, $zero +.L7F051A08: +/* 086538 7F051A08 8FBF0014 */ lw $ra, 0x14($sp) +/* 08653C 7F051A0C 27BD0020 */ addiu $sp, $sp, 0x20 +/* 086540 7F051A10 03E00008 */ jr $ra +/* 086544 7F051A14 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void trigger_remote_mine_detonation(void) +{ + u32 uVar1; + + uVar1 = get_cur_playernum(); + D_80030AF4 = D_80030AF4 | 1 << (uVar1 & 0x1f); + play_sfx_a1(ptr_sfx_buf,0xf3,0x0); +} +#else +GLOBAL_ASM( +.text +glabel trigger_remote_mine_detonation +/* 086548 7F051A18 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 08654C 7F051A1C AFBF0014 */ sw $ra, 0x14($sp) +/* 086550 7F051A20 0FC26C54 */ jal get_cur_playernum +/* 086554 7F051A24 00000000 */ nop +/* 086558 7F051A28 3C038003 */ lui $v1, %hi(D_80030AF4) +/* 08655C 7F051A2C 24630AF4 */ addiu $v1, %lo(D_80030AF4) # addiu $v1, $v1, 0xaf4 +/* 086560 7F051A30 8C6E0000 */ lw $t6, ($v1) +/* 086564 7F051A34 240F0001 */ li $t7, 1 +/* 086568 7F051A38 004FC004 */ sllv $t8, $t7, $v0 +/* 08656C 7F051A3C 01D8C825 */ or $t9, $t6, $t8 +/* 086570 7F051A40 AC790000 */ sw $t9, ($v1) +/* 086574 7F051A44 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 086578 7F051A48 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08657C 7F051A4C 240500F3 */ li $a1, 243 +/* 086580 7F051A50 0C002382 */ jal play_sfx_a1 +/* 086584 7F051A54 00003025 */ move $a2, $zero +/* 086588 7F051A58 8FBF0014 */ lw $ra, 0x14($sp) +/* 08658C 7F051A5C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 086590 7F051A60 03E00008 */ jr $ra +/* 086594 7F051A64 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void check_if_entry_is_collectable(void) { + +} +#else +GLOBAL_ASM( +.text +glabel check_if_entry_is_collectable +/* 086598 7F051A68 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 08659C 7F051A6C AFBF001C */ sw $ra, 0x1c($sp) +/* 0865A0 7F051A70 AFB10018 */ sw $s1, 0x18($sp) +/* 0865A4 7F051A74 AFB00014 */ sw $s0, 0x14($sp) +/* 0865A8 7F051A78 90AE0000 */ lbu $t6, ($a1) +/* 0865AC 7F051A7C 24010004 */ li $at, 4 +/* 0865B0 7F051A80 00808825 */ move $s1, $a0 +/* 0865B4 7F051A84 55C10008 */ bnel $t6, $at, .L7F051AA8 +/* 0865B8 7F051A88 8CB00020 */ lw $s0, 0x20($a1) +/* 0865BC 7F051A8C 8CA30004 */ lw $v1, 4($a1) +/* 0865C0 7F051A90 806F0080 */ lb $t7, 0x80($v1) +/* 0865C4 7F051A94 548F0004 */ bnel $a0, $t7, .L7F051AA8 +/* 0865C8 7F051A98 8CB00020 */ lw $s0, 0x20($a1) +/* 0865CC 7F051A9C 1000000E */ b .L7F051AD8 +/* 0865D0 7F051AA0 00601025 */ move $v0, $v1 +/* 0865D4 7F051AA4 8CB00020 */ lw $s0, 0x20($a1) +.L7F051AA8: +/* 0865D8 7F051AA8 1200000A */ beqz $s0, .L7F051AD4 +/* 0865DC 7F051AAC 02202025 */ move $a0, $s1 +.L7F051AB0: +/* 0865E0 7F051AB0 0FC1469A */ jal check_if_entry_is_collectable +/* 0865E4 7F051AB4 02002825 */ move $a1, $s0 +/* 0865E8 7F051AB8 50400004 */ beql $v0, $zero, .L7F051ACC +/* 0865EC 7F051ABC 8E100024 */ lw $s0, 0x24($s0) +/* 0865F0 7F051AC0 10000006 */ b .L7F051ADC +/* 0865F4 7F051AC4 8FBF001C */ lw $ra, 0x1c($sp) +/* 0865F8 7F051AC8 8E100024 */ lw $s0, 0x24($s0) +.L7F051ACC: +/* 0865FC 7F051ACC 5600FFF8 */ bnezl $s0, .L7F051AB0 +/* 086600 7F051AD0 02202025 */ move $a0, $s1 +.L7F051AD4: +/* 086604 7F051AD4 00001025 */ move $v0, $zero +.L7F051AD8: +/* 086608 7F051AD8 8FBF001C */ lw $ra, 0x1c($sp) +.L7F051ADC: +/* 08660C 7F051ADC 8FB00014 */ lw $s0, 0x14($sp) +/* 086610 7F051AE0 8FB10018 */ lw $s1, 0x18($sp) +/* 086614 7F051AE4 03E00008 */ jr $ra +/* 086618 7F051AE8 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void check_if_item_deposited(void) { + +} +#else +GLOBAL_ASM( +.text +glabel check_if_item_deposited +/* 08661C 7F051AEC 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 086620 7F051AF0 AFBF001C */ sw $ra, 0x1c($sp) +/* 086624 7F051AF4 AFB10018 */ sw $s1, 0x18($sp) +/* 086628 7F051AF8 00808825 */ move $s1, $a0 +/* 08662C 7F051AFC 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry +/* 086630 7F051B00 AFB00014 */ sw $s0, 0x14($sp) +/* 086634 7F051B04 1040000F */ beqz $v0, .L7F051B44 +/* 086638 7F051B08 00408025 */ move $s0, $v0 +/* 08663C 7F051B0C 02202025 */ move $a0, $s1 +.L7F051B10: +/* 086640 7F051B10 0FC1469A */ jal check_if_entry_is_collectable +/* 086644 7F051B14 02002825 */ move $a1, $s0 +/* 086648 7F051B18 50400008 */ beql $v0, $zero, .L7F051B3C +/* 08664C 7F051B1C 8E100024 */ lw $s0, 0x24($s0) +/* 086650 7F051B20 8C4E0064 */ lw $t6, 0x64($v0) +/* 086654 7F051B24 31CF0080 */ andi $t7, $t6, 0x80 +/* 086658 7F051B28 55E00004 */ bnezl $t7, .L7F051B3C +/* 08665C 7F051B2C 8E100024 */ lw $s0, 0x24($s0) +/* 086660 7F051B30 10000006 */ b .L7F051B4C +/* 086664 7F051B34 8FBF001C */ lw $ra, 0x1c($sp) +/* 086668 7F051B38 8E100024 */ lw $s0, 0x24($s0) +.L7F051B3C: +/* 08666C 7F051B3C 5600FFF4 */ bnezl $s0, .L7F051B10 +/* 086670 7F051B40 02202025 */ move $a0, $s1 +.L7F051B44: +/* 086674 7F051B44 00001025 */ move $v0, $zero +/* 086678 7F051B48 8FBF001C */ lw $ra, 0x1c($sp) +.L7F051B4C: +/* 08667C 7F051B4C 8FB00014 */ lw $s0, 0x14($sp) +/* 086680 7F051B50 8FB10018 */ lw $s1, 0x18($sp) +/* 086684 7F051B54 03E00008 */ jr $ra +/* 086688 7F051B58 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void add_obj_to_temp_proxmine_table(void) { + +} +#else +GLOBAL_ASM( +.text +glabel add_obj_to_temp_proxmine_table +/* 08668C 7F051B5C 3C038007 */ lui $v1, %hi(temp_mine_table) +/* 086690 7F051B60 3C028007 */ lui $v0, %hi(gas_damage_flag) +/* 086694 7F051B64 24421E78 */ addiu $v0, %lo(gas_damage_flag) # addiu $v0, $v0, 0x1e78 +/* 086698 7F051B68 24631E00 */ addiu $v1, %lo(temp_mine_table) # addiu $v1, $v1, 0x1e00 +/* 08669C 7F051B6C 8C6E0000 */ lw $t6, ($v1) +.L7F051B70: +/* 0866A0 7F051B70 55C00004 */ bnezl $t6, .L7F051B84 +/* 0866A4 7F051B74 24630004 */ addiu $v1, $v1, 4 +/* 0866A8 7F051B78 03E00008 */ jr $ra +/* 0866AC 7F051B7C AC640000 */ sw $a0, ($v1) + +/* 0866B0 7F051B80 24630004 */ addiu $v1, $v1, 4 +.L7F051B84: +/* 0866B4 7F051B84 5462FFFA */ bnel $v1, $v0, .L7F051B70 +/* 0866B8 7F051B88 8C6E0000 */ lw $t6, ($v1) +/* 0866BC 7F051B8C 03E00008 */ jr $ra +/* 0866C0 7F051B90 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void remove_obj_from_temp_proxmine_table(void) { + +} +#else +GLOBAL_ASM( +.text +glabel remove_obj_from_temp_proxmine_table +/* 0866C4 7F051B94 3C038007 */ lui $v1, %hi(temp_mine_table) +/* 0866C8 7F051B98 3C028007 */ lui $v0, %hi(gas_damage_flag) +/* 0866CC 7F051B9C 24421E78 */ addiu $v0, %lo(gas_damage_flag) # addiu $v0, $v0, 0x1e78 +/* 0866D0 7F051BA0 24631E00 */ addiu $v1, %lo(temp_mine_table) # addiu $v1, $v1, 0x1e00 +/* 0866D4 7F051BA4 8C6E0000 */ lw $t6, ($v1) +.L7F051BA8: +/* 0866D8 7F051BA8 548E0004 */ bnel $a0, $t6, .L7F051BBC +/* 0866DC 7F051BAC 24630004 */ addiu $v1, $v1, 4 +/* 0866E0 7F051BB0 03E00008 */ jr $ra +/* 0866E4 7F051BB4 AC600000 */ sw $zero, ($v1) + +/* 0866E8 7F051BB8 24630004 */ addiu $v1, $v1, 4 +.L7F051BBC: +/* 0866EC 7F051BBC 5462FFFA */ bnel $v1, $v0, .L7F051BA8 +/* 0866F0 7F051BC0 8C6E0000 */ lw $t6, ($v1) +/* 0866F4 7F051BC4 03E00008 */ jr $ra +/* 0866F8 7F051BC8 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void detonate_proxmine_In_range(void) { + +} +#else +GLOBAL_ASM( +.text +glabel detonate_proxmine_In_range +/* 0866FC 7F051BCC 3C038007 */ lui $v1, %hi(temp_mine_table) +/* 086700 7F051BD0 3C018005 */ lui $at, %hi(D_800532EC) +/* 086704 7F051BD4 3C078007 */ lui $a3, %hi(gas_damage_flag) +/* 086708 7F051BD8 00802825 */ move $a1, $a0 +/* 08670C 7F051BDC 24E71E78 */ addiu $a3, %lo(gas_damage_flag) # addiu $a3, $a3, 0x1e78 +/* 086710 7F051BE0 C42E32EC */ lwc1 $f14, %lo(D_800532EC)($at) +/* 086714 7F051BE4 24631E00 */ addiu $v1, %lo(temp_mine_table) # addiu $v1, $v1, 0x1e00 +/* 086718 7F051BE8 24060001 */ li $a2, 1 +/* 08671C 7F051BEC 8C640000 */ lw $a0, ($v1) +.L7F051BF0: +/* 086720 7F051BF0 50800018 */ beql $a0, $zero, .L7F051C54 +/* 086724 7F051BF4 8C620004 */ lw $v0, 4($v1) +/* 086728 7F051BF8 848E0082 */ lh $t6, 0x82($a0) +/* 08672C 7F051BFC 54CE0015 */ bnel $a2, $t6, .L7F051C54 +/* 086730 7F051C00 8C620004 */ lw $v0, 4($v1) +/* 086734 7F051C04 C4A40000 */ lwc1 $f4, ($a1) +/* 086738 7F051C08 C4860058 */ lwc1 $f6, 0x58($a0) +/* 08673C 7F051C0C C4A80004 */ lwc1 $f8, 4($a1) +/* 086740 7F051C10 C48A005C */ lwc1 $f10, 0x5c($a0) +/* 086744 7F051C14 46062001 */ sub.s $f0, $f4, $f6 +/* 086748 7F051C18 C4B00008 */ lwc1 $f16, 8($a1) +/* 08674C 7F051C1C C4920060 */ lwc1 $f18, 0x60($a0) +/* 086750 7F051C20 460A4081 */ sub.s $f2, $f8, $f10 +/* 086754 7F051C24 46000102 */ mul.s $f4, $f0, $f0 +/* 086758 7F051C28 46128301 */ sub.s $f12, $f16, $f18 +/* 08675C 7F051C2C 46021182 */ mul.s $f6, $f2, $f2 +/* 086760 7F051C30 46062200 */ add.s $f8, $f4, $f6 +/* 086764 7F051C34 460C6282 */ mul.s $f10, $f12, $f12 +/* 086768 7F051C38 460A4400 */ add.s $f16, $f8, $f10 +/* 08676C 7F051C3C 460E803C */ c.lt.s $f16, $f14 +/* 086770 7F051C40 00000000 */ nop +/* 086774 7F051C44 45020003 */ bc1fl .L7F051C54 +/* 086778 7F051C48 8C620004 */ lw $v0, 4($v1) +/* 08677C 7F051C4C A4800082 */ sh $zero, 0x82($a0) +/* 086780 7F051C50 8C620004 */ lw $v0, 4($v1) +.L7F051C54: +/* 086784 7F051C54 24630008 */ addiu $v1, $v1, 8 +/* 086788 7F051C58 10400017 */ beqz $v0, .L7F051CB8 +/* 08678C 7F051C5C 00000000 */ nop +/* 086790 7F051C60 844F0082 */ lh $t7, 0x82($v0) +/* 086794 7F051C64 14CF0014 */ bne $a2, $t7, .L7F051CB8 +/* 086798 7F051C68 00000000 */ nop +/* 08679C 7F051C6C C4B20000 */ lwc1 $f18, ($a1) +/* 0867A0 7F051C70 C4440058 */ lwc1 $f4, 0x58($v0) +/* 0867A4 7F051C74 C4A60004 */ lwc1 $f6, 4($a1) +/* 0867A8 7F051C78 C448005C */ lwc1 $f8, 0x5c($v0) +/* 0867AC 7F051C7C 46049001 */ sub.s $f0, $f18, $f4 +/* 0867B0 7F051C80 C4AA0008 */ lwc1 $f10, 8($a1) +/* 0867B4 7F051C84 C4500060 */ lwc1 $f16, 0x60($v0) +/* 0867B8 7F051C88 46083081 */ sub.s $f2, $f6, $f8 +/* 0867BC 7F051C8C 46000482 */ mul.s $f18, $f0, $f0 +/* 0867C0 7F051C90 46105301 */ sub.s $f12, $f10, $f16 +/* 0867C4 7F051C94 46021102 */ mul.s $f4, $f2, $f2 +/* 0867C8 7F051C98 46049180 */ add.s $f6, $f18, $f4 +/* 0867CC 7F051C9C 460C6202 */ mul.s $f8, $f12, $f12 +/* 0867D0 7F051CA0 46083280 */ add.s $f10, $f6, $f8 +/* 0867D4 7F051CA4 460E503C */ c.lt.s $f10, $f14 +/* 0867D8 7F051CA8 00000000 */ nop +/* 0867DC 7F051CAC 45000002 */ bc1f .L7F051CB8 +/* 0867E0 7F051CB0 00000000 */ nop +/* 0867E4 7F051CB4 A4400082 */ sh $zero, 0x82($v0) +.L7F051CB8: +/* 0867E8 7F051CB8 5467FFCD */ bnel $v1, $a3, .L7F051BF0 +/* 0867EC 7F051CBC 8C640000 */ lw $a0, ($v1) +/* 0867F0 7F051CC0 03E00008 */ jr $ra +/* 0867F4 7F051CC4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void check_guard_detonate_proxmine(void) { + +} +#else +GLOBAL_ASM( +.text +glabel check_guard_detonate_proxmine +/* 0867F8 7F051CC8 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 0867FC 7F051CCC AFBF002C */ sw $ra, 0x2c($sp) +/* 086800 7F051CD0 AFB40028 */ sw $s4, 0x28($sp) +/* 086804 7F051CD4 AFB30024 */ sw $s3, 0x24($sp) +/* 086808 7F051CD8 AFB20020 */ sw $s2, 0x20($sp) +/* 08680C 7F051CDC AFB1001C */ sw $s1, 0x1c($sp) +/* 086810 7F051CE0 0FC07D4C */ jal get_numguards +/* 086814 7F051CE4 AFB00018 */ sw $s0, 0x18($sp) +/* 086818 7F051CE8 1840001A */ blez $v0, .L7F051D54 +/* 08681C 7F051CEC 00008025 */ move $s0, $zero +/* 086820 7F051CF0 00029900 */ sll $s3, $v0, 4 +/* 086824 7F051CF4 02629823 */ subu $s3, $s3, $v0 +/* 086828 7F051CF8 001398C0 */ sll $s3, $s3, 3 +/* 08682C 7F051CFC 02629823 */ subu $s3, $s3, $v0 +/* 086830 7F051D00 3C148003 */ lui $s4, %hi(ptr_guard_data) +/* 086834 7F051D04 2694CC64 */ addiu $s4, %lo(ptr_guard_data) # addiu $s4, $s4, -0x339c +/* 086838 7F051D08 00139880 */ sll $s3, $s3, 2 +/* 08683C 7F051D0C 27B10038 */ addiu $s1, $sp, 0x38 +/* 086840 7F051D10 8E8E0000 */ lw $t6, ($s4) +.L7F051D14: +/* 086844 7F051D14 020E2021 */ addu $a0, $s0, $t6 +/* 086848 7F051D18 8C8F001C */ lw $t7, 0x1c($a0) +/* 08684C 7F051D1C 51E0000A */ beql $t7, $zero, .L7F051D48 +/* 086850 7F051D20 261001DC */ addiu $s0, $s0, 0x1dc +/* 086854 7F051D24 94980012 */ lhu $t8, 0x12($a0) +/* 086858 7F051D28 33190200 */ andi $t9, $t8, 0x200 +/* 08685C 7F051D2C 53200006 */ beql $t9, $zero, .L7F051D48 +/* 086860 7F051D30 261001DC */ addiu $s0, $s0, 0x1dc +/* 086864 7F051D34 0FC0A225 */ jal sub_GAME_7F028894 +/* 086868 7F051D38 02202825 */ move $a1, $s1 +/* 08686C 7F051D3C 0FC146F3 */ jal detonate_proxmine_In_range +/* 086870 7F051D40 02202025 */ move $a0, $s1 +/* 086874 7F051D44 261001DC */ addiu $s0, $s0, 0x1dc +.L7F051D48: +/* 086878 7F051D48 0213082A */ slt $at, $s0, $s3 +/* 08687C 7F051D4C 5420FFF1 */ bnezl $at, .L7F051D14 +/* 086880 7F051D50 8E8E0000 */ lw $t6, ($s4) +.L7F051D54: +/* 086884 7F051D54 8FBF002C */ lw $ra, 0x2c($sp) +/* 086888 7F051D58 8FB00018 */ lw $s0, 0x18($sp) +/* 08688C 7F051D5C 8FB1001C */ lw $s1, 0x1c($sp) +/* 086890 7F051D60 8FB20020 */ lw $s2, 0x20($sp) +/* 086894 7F051D64 8FB30024 */ lw $s3, 0x24($sp) +/* 086898 7F051D68 8FB40028 */ lw $s4, 0x28($sp) +/* 08689C 7F051D6C 03E00008 */ jr $ra +/* 0868A0 7F051D70 27BD0050 */ addiu $sp, $sp, 0x50 +) +#endif + + + + + +#ifdef NONMATCHING +void link_objects(void) { + +} +#else +GLOBAL_ASM( +.text +glabel link_objects +/* 0868A4 7F051D74 80AE0080 */ lb $t6, 0x80($a1) +/* 0868A8 7F051D78 808F0080 */ lb $t7, 0x80($a0) +/* 0868AC 7F051D7C AC850084 */ sw $a1, 0x84($a0) +/* 0868B0 7F051D80 A08E0081 */ sb $t6, 0x81($a0) +/* 0868B4 7F051D84 ACA40084 */ sw $a0, 0x84($a1) +/* 0868B8 7F051D88 03E00008 */ jr $ra +/* 0868BC 7F051D8C A0AF0081 */ sb $t7, 0x81($a1) +) +#endif + + + + + +#ifdef NONMATCHING +void complete_object_data_block_return_position_entry(void) { + +} +#else +GLOBAL_ASM( +.text +glabel complete_object_data_block_return_position_entry +/* 0868C0 7F051D90 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0868C4 7F051D94 AFBF0014 */ sw $ra, 0x14($sp) +/* 0868C8 7F051D98 0FC10153 */ jal init_standard_object +/* 0868CC 7F051D9C 00000000 */ nop +/* 0868D0 7F051DA0 10400008 */ beqz $v0, .L7F051DC4 +/* 0868D4 7F051DA4 00403025 */ move $a2, $v0 +/* 0868D8 7F051DA8 240E0004 */ li $t6, 4 +/* 0868DC 7F051DAC A04E0000 */ sb $t6, ($v0) +/* 0868E0 7F051DB0 AFA20020 */ sw $v0, 0x20($sp) +/* 0868E4 7F051DB4 00402025 */ move $a0, $v0 +/* 0868E8 7F051DB8 0FC1495D */ jal sub_GAME_7F052574 +/* 0868EC 7F051DBC 00002825 */ move $a1, $zero +/* 0868F0 7F051DC0 8FA60020 */ lw $a2, 0x20($sp) +.L7F051DC4: +/* 0868F4 7F051DC4 8FBF0014 */ lw $ra, 0x14($sp) +/* 0868F8 7F051DC8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0868FC 7F051DCC 00C01025 */ move $v0, $a2 +/* 086900 7F051DD0 03E00008 */ jr $ra +/* 086904 7F051DD4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F051DD8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F051DD8 +/* 086908 7F051DD8 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 08690C 7F051DDC AFBF0014 */ sw $ra, 0x14($sp) +/* 086910 7F051DE0 0FC101BE */ jal sub_GAME_7F0406F8 +/* 086914 7F051DE4 00000000 */ nop +/* 086918 7F051DE8 10400007 */ beqz $v0, .L7F051E08 +/* 08691C 7F051DEC 00402025 */ move $a0, $v0 +/* 086920 7F051DF0 240E0004 */ li $t6, 4 +/* 086924 7F051DF4 A04E0000 */ sb $t6, ($v0) +/* 086928 7F051DF8 AFA2001C */ sw $v0, 0x1c($sp) +/* 08692C 7F051DFC 0FC1495D */ jal sub_GAME_7F052574 +/* 086930 7F051E00 00002825 */ move $a1, $zero +/* 086934 7F051E04 8FA4001C */ lw $a0, 0x1c($sp) +.L7F051E08: +/* 086938 7F051E08 8FBF0014 */ lw $ra, 0x14($sp) +/* 08693C 7F051E0C 27BD0020 */ addiu $sp, $sp, 0x20 +/* 086940 7F051E10 00801025 */ move $v0, $a0 +/* 086944 7F051E14 03E00008 */ jr $ra +/* 086948 7F051E18 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F051E1C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F051E1C +/* 08694C 7F051E1C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 086950 7F051E20 AFBF0014 */ sw $ra, 0x14($sp) +/* 086954 7F051E24 8C820008 */ lw $v0, 8($a0) +/* 086958 7F051E28 00A03825 */ move $a3, $a1 +/* 08695C 7F051E2C 00803025 */ move $a2, $a0 +/* 086960 7F051E30 000270C0 */ sll $t6, $v0, 3 +/* 086964 7F051E34 05C10003 */ bgez $t6, .L7F051E44 +/* 086968 7F051E38 00002825 */ move $a1, $zero +/* 08696C 7F051E3C 10000001 */ b .L7F051E44 +/* 086970 7F051E40 24050001 */ li $a1, 1 +.L7F051E44: +/* 086974 7F051E44 8CC40010 */ lw $a0, 0x10($a2) +/* 086978 7F051E48 50800035 */ beql $a0, $zero, .L7F051F20 +/* 08697C 7F051E4C 24020001 */ li $v0, 1 +/* 086980 7F051E50 8CC30014 */ lw $v1, 0x14($a2) +/* 086984 7F051E54 00027880 */ sll $t7, $v0, 2 +/* 086988 7F051E58 50600031 */ beql $v1, $zero, .L7F051F20 +/* 08698C 7F051E5C 24020001 */ li $v0, 1 +/* 086990 7F051E60 05E0002C */ bltz $t7, .L7F051F14 +/* 086994 7F051E64 00000000 */ nop +/* 086998 7F051E68 00052080 */ sll $a0, $a1, 2 +/* 08699C 7F051E6C 00E41021 */ addu $v0, $a3, $a0 +/* 0869A0 7F051E70 8C580160 */ lw $t8, 0x160($v0) +/* 0869A4 7F051E74 17000025 */ bnez $t8, .L7F051F0C +/* 0869A8 7F051E78 00000000 */ nop +/* 0869AC 7F051E7C 8CF9001C */ lw $t9, 0x1c($a3) +/* 0869B0 7F051E80 14800008 */ bnez $a0, .L7F051EA4 +/* 0869B4 7F051E84 AC790018 */ sw $t9, 0x18($v1) +/* 0869B8 7F051E88 8CE8001C */ lw $t0, 0x1c($a3) +/* 0869BC 7F051E8C 8CCC0014 */ lw $t4, 0x14($a2) +/* 0869C0 7F051E90 8D090008 */ lw $t1, 8($t0) +/* 0869C4 7F051E94 8D2A0008 */ lw $t2, 8($t1) +/* 0869C8 7F051E98 8D4B000C */ lw $t3, 0xc($t2) +/* 0869CC 7F051E9C 10000007 */ b .L7F051EBC +/* 0869D0 7F051EA0 AD8B001C */ sw $t3, 0x1c($t4) +.L7F051EA4: +/* 0869D4 7F051EA4 8CED001C */ lw $t5, 0x1c($a3) +/* 0869D8 7F051EA8 8CD90014 */ lw $t9, 0x14($a2) +/* 0869DC 7F051EAC 8DAE0008 */ lw $t6, 8($t5) +/* 0869E0 7F051EB0 8DCF0008 */ lw $t7, 8($t6) +/* 0869E4 7F051EB4 8DF80014 */ lw $t8, 0x14($t7) +/* 0869E8 7F051EB8 AF38001C */ sw $t8, 0x1c($t9) +.L7F051EBC: +/* 0869EC 7F051EBC 8CC80010 */ lw $t0, 0x10($a2) +/* 0869F0 7F051EC0 00045823 */ negu $t3, $a0 +/* 0869F4 7F051EC4 00EB6021 */ addu $t4, $a3, $t3 +/* 0869F8 7F051EC8 AC480160 */ sw $t0, 0x160($v0) +/* 0869FC 7F051ECC 8CC90008 */ lw $t1, 8($a2) +/* 086A00 7F051ED0 00095000 */ sll $t2, $t1, 0 +/* 086A04 7F051ED4 0541000B */ bgez $t2, .L7F051F04 +/* 086A08 7F051ED8 00000000 */ nop +/* 086A0C 7F051EDC 8D820164 */ lw $v0, 0x164($t4) +/* 086A10 7F051EE0 00C02025 */ move $a0, $a2 +/* 086A14 7F051EE4 10400007 */ beqz $v0, .L7F051F04 +/* 086A18 7F051EE8 00000000 */ nop +/* 086A1C 7F051EEC 8C450004 */ lw $a1, 4($v0) +/* 086A20 7F051EF0 AFA7001C */ sw $a3, 0x1c($sp) +/* 086A24 7F051EF4 0FC1475D */ jal link_objects +/* 086A28 7F051EF8 AFA60018 */ sw $a2, 0x18($sp) +/* 086A2C 7F051EFC 8FA60018 */ lw $a2, 0x18($sp) +/* 086A30 7F051F00 8FA7001C */ lw $a3, 0x1c($sp) +.L7F051F04: +/* 086A34 7F051F04 10000003 */ b .L7F051F14 +/* 086A38 7F051F08 8CC40010 */ lw $a0, 0x10($a2) +.L7F051F0C: +/* 086A3C 7F051F0C 10000004 */ b .L7F051F20 +/* 086A40 7F051F10 00001025 */ move $v0, $zero +.L7F051F14: +/* 086A44 7F051F14 0FC0E969 */ jal sub_GAME_7F03A5A4 +/* 086A48 7F051F18 8CE50018 */ lw $a1, 0x18($a3) +/* 086A4C 7F051F1C 24020001 */ li $v0, 1 +.L7F051F20: +/* 086A50 7F051F20 8FBF0014 */ lw $ra, 0x14($sp) +/* 086A54 7F051F24 27BD0018 */ addiu $sp, $sp, 0x18 +/* 086A58 7F051F28 03E00008 */ jr $ra +/* 086A5C 7F051F2C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F051F30(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F051F30 +/* 086A60 7F051F30 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 086A64 7F051F34 AFA50024 */ sw $a1, 0x24($sp) +/* 086A68 7F051F38 AFA60028 */ sw $a2, 0x28($sp) +/* 086A6C 7F051F3C 00C02825 */ move $a1, $a2 +/* 086A70 7F051F40 AFBF001C */ sw $ra, 0x1c($sp) +/* 086A74 7F051F44 AFB00018 */ sw $s0, 0x18($sp) +/* 086A78 7F051F48 AFA7002C */ sw $a3, 0x2c($sp) +/* 086A7C 7F051F4C 00E03025 */ move $a2, $a3 +/* 086A80 7F051F50 00808025 */ move $s0, $a0 +/* 086A84 7F051F54 0FC14764 */ jal complete_object_data_block_return_position_entry +/* 086A88 7F051F58 8FA70030 */ lw $a3, 0x30($sp) +/* 086A8C 7F051F5C 10400018 */ beqz $v0, .L7F051FC0 +/* 086A90 7F051F60 AFA2002C */ sw $v0, 0x2c($sp) +/* 086A94 7F051F64 8E040014 */ lw $a0, 0x14($s0) +/* 086A98 7F051F68 50800016 */ beql $a0, $zero, .L7F051FC4 +/* 086A9C 7F051F6C 8FBF001C */ lw $ra, 0x1c($sp) +/* 086AA0 7F051F70 960E0000 */ lhu $t6, ($s0) +/* 086AA4 7F051F74 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 086AA8 7F051F78 448E2000 */ mtc1 $t6, $f4 +/* 086AAC 7F051F7C 05C10004 */ bgez $t6, .L7F051F90 +/* 086AB0 7F051F80 468021A0 */ cvt.s.w $f6, $f4 +/* 086AB4 7F051F84 44814000 */ mtc1 $at, $f8 +/* 086AB8 7F051F88 00000000 */ nop +/* 086ABC 7F051F8C 46083180 */ add.s $f6, $f6, $f8 +.L7F051F90: +/* 086AC0 7F051F90 3C013B80 */ li $at, 0x3B800000 # 0.003906 +/* 086AC4 7F051F94 44815000 */ mtc1 $at, $f10 +/* 086AC8 7F051F98 C4900014 */ lwc1 $f16, 0x14($a0) +/* 086ACC 7F051F9C 460A3002 */ mul.s $f0, $f6, $f10 +/* 086AD0 7F051FA0 00000000 */ nop +/* 086AD4 7F051FA4 46008482 */ mul.s $f18, $f16, $f0 +/* 086AD8 7F051FA8 44059000 */ mfc1 $a1, $f18 +/* 086ADC 7F051FAC 0FC1B39E */ jal set_obj_instance_controller_scale +/* 086AE0 7F051FB0 00000000 */ nop +/* 086AE4 7F051FB4 02002025 */ move $a0, $s0 +/* 086AE8 7F051FB8 0FC14787 */ jal sub_GAME_7F051E1C +/* 086AEC 7F051FBC 8FA50024 */ lw $a1, 0x24($sp) +.L7F051FC0: +/* 086AF0 7F051FC0 8FBF001C */ lw $ra, 0x1c($sp) +.L7F051FC4: +/* 086AF4 7F051FC4 8FA2002C */ lw $v0, 0x2c($sp) +/* 086AF8 7F051FC8 8FB00018 */ lw $s0, 0x18($sp) +/* 086AFC 7F051FCC 03E00008 */ jr $ra +/* 086B00 7F051FD0 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F051FD4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F051FD4 +/* 086B04 7F051FD4 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 086B08 7F051FD8 AFBF001C */ sw $ra, 0x1c($sp) +/* 086B0C 7F051FDC AFA40028 */ sw $a0, 0x28($sp) +/* 086B10 7F051FE0 AFA5002C */ sw $a1, 0x2c($sp) +/* 086B14 7F051FE4 84840004 */ lh $a0, 4($a0) +/* 086B18 7F051FE8 0FC15B0E */ jal load_model +/* 086B1C 7F051FEC AFA40020 */ sw $a0, 0x20($sp) +/* 086B20 7F051FF0 8FAF0020 */ lw $t7, 0x20($sp) +/* 086B24 7F051FF4 3C068004 */ lui $a2, %hi(PitemZ_entries) +/* 086B28 7F051FF8 8FA40028 */ lw $a0, 0x28($sp) +/* 086B2C 7F051FFC 000FC080 */ sll $t8, $t7, 2 +/* 086B30 7F052000 030FC023 */ subu $t8, $t8, $t7 +/* 086B34 7F052004 0018C080 */ sll $t8, $t8, 2 +/* 086B38 7F052008 00D83021 */ addu $a2, $a2, $t8 +/* 086B3C 7F05200C 8CC6A228 */ lw $a2, %lo(PitemZ_entries)($a2) +/* 086B40 7F052010 8FA5002C */ lw $a1, 0x2c($sp) +/* 086B44 7F052014 00003825 */ move $a3, $zero +/* 086B48 7F052018 0FC147CC */ jal sub_GAME_7F051F30 +/* 086B4C 7F05201C AFA00010 */ sw $zero, 0x10($sp) +/* 086B50 7F052020 8FBF001C */ lw $ra, 0x1c($sp) +/* 086B54 7F052024 27BD0028 */ addiu $sp, $sp, 0x28 +/* 086B58 7F052028 03E00008 */ jr $ra +/* 086B5C 7F05202C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F052030(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F052030 +/* 086B60 7F052030 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 086B64 7F052034 AFBF0014 */ sw $ra, 0x14($sp) +/* 086B68 7F052038 8C8E0074 */ lw $t6, 0x74($a0) +/* 086B6C 7F05203C 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 086B70 7F052040 44814000 */ mtc1 $at, $f8 +/* 086B74 7F052044 448E2000 */ mtc1 $t6, $f4 +/* 086B78 7F052048 00000000 */ nop +/* 086B7C 7F05204C 468021A0 */ cvt.s.w $f6, $f4 +/* 086B80 7F052050 46083283 */ div.s $f10, $f6, $f8 +/* 086B84 7F052054 0FC147F5 */ jal sub_GAME_7F051FD4 +/* 086B88 7F052058 E48A0074 */ swc1 $f10, 0x74($a0) +/* 086B8C 7F05205C 8FBF0014 */ lw $ra, 0x14($sp) +/* 086B90 7F052060 27BD0018 */ addiu $sp, $sp, 0x18 +/* 086B94 7F052064 03E00008 */ jr $ra +/* 086B98 7F052068 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void create_new_item_instance_of_model(void) { + +} +#else +GLOBAL_ASM( +.text +glabel create_new_item_instance_of_model +/* 086B9C 7F05206C 00047080 */ sll $t6, $a0, 2 +/* 086BA0 7F052070 27BDFF48 */ addiu $sp, $sp, -0xb8 +/* 086BA4 7F052074 01C47023 */ subu $t6, $t6, $a0 +/* 086BA8 7F052078 000E7080 */ sll $t6, $t6, 2 +/* 086BAC 7F05207C 3C0F8004 */ lui $t7, %hi(PitemZ_entries) +/* 086BB0 7F052080 01EE7821 */ addu $t7, $t7, $t6 +/* 086BB4 7F052084 8DEFA228 */ lw $t7, %lo(PitemZ_entries)($t7) +/* 086BB8 7F052088 AFBF001C */ sw $ra, 0x1c($sp) +/* 086BBC 7F05208C AFB10018 */ sw $s1, 0x18($sp) +/* 086BC0 7F052090 AFB00014 */ sw $s0, 0x14($sp) +/* 086BC4 7F052094 AFA500BC */ sw $a1, 0xbc($sp) +/* 086BC8 7F052098 AFA400B8 */ sw $a0, 0xb8($sp) +/* 086BCC 7F05209C 0FC15B0E */ jal load_model +/* 086BD0 7F0520A0 AFAF00B4 */ sw $t7, 0xb4($sp) +/* 086BD4 7F0520A4 0FC0E90C */ jal remove_last_obj_pos_data_entry +/* 086BD8 7F0520A8 00000000 */ nop +/* 086BDC 7F0520AC 00408025 */ move $s0, $v0 +/* 086BE0 7F0520B0 0FC1B025 */ jal get_obj_instance_controller_for_header +/* 086BE4 7F0520B4 8FA400B4 */ lw $a0, 0xb4($sp) +/* 086BE8 7F0520B8 2E040001 */ sltiu $a0, $s0, 1 +/* 086BEC 7F0520BC 2C450001 */ sltiu $a1, $v0, 1 +/* 086BF0 7F0520C0 8FA600B4 */ lw $a2, 0xb4($sp) +/* 086BF4 7F0520C4 0FC1449B */ jal sub_GAME_7F05126C +/* 086BF8 7F0520C8 AFA200AC */ sw $v0, 0xac($sp) +/* 086BFC 7F0520CC 8FA700AC */ lw $a3, 0xac($sp) +/* 086C00 7F0520D0 16000005 */ bnez $s0, .L7F0520E8 +/* 086C04 7F0520D4 00408825 */ move $s1, $v0 +/* 086C08 7F0520D8 0FC0E90C */ jal remove_last_obj_pos_data_entry +/* 086C0C 7F0520DC AFA700AC */ sw $a3, 0xac($sp) +/* 086C10 7F0520E0 8FA700AC */ lw $a3, 0xac($sp) +/* 086C14 7F0520E4 00408025 */ move $s0, $v0 +.L7F0520E8: +/* 086C18 7F0520E8 14E00004 */ bnez $a3, .L7F0520FC +/* 086C1C 7F0520EC 00000000 */ nop +/* 086C20 7F0520F0 0FC1B025 */ jal get_obj_instance_controller_for_header +/* 086C24 7F0520F4 8FA400B4 */ lw $a0, 0xb4($sp) +/* 086C28 7F0520F8 00403825 */ move $a3, $v0 +.L7F0520FC: +/* 086C2C 7F0520FC 1220002C */ beqz $s1, .L7F0521B0 +/* 086C30 7F052100 00000000 */ nop +/* 086C34 7F052104 1200002A */ beqz $s0, .L7F0521B0 +/* 086C38 7F052108 00000000 */ nop +/* 086C3C 7F05210C 10E00028 */ beqz $a3, .L7F0521B0 +/* 086C40 7F052110 27A20020 */ addiu $v0, $sp, 0x20 +/* 086C44 7F052114 3C188003 */ lui $t8, %hi(blank_08_object_preset_1) +/* 086C48 7F052118 27182194 */ addiu $t8, %lo(blank_08_object_preset_1) # addiu $t8, $t8, 0x2194 +/* 086C4C 7F05211C 27080084 */ addiu $t0, $t8, 0x84 +/* 086C50 7F052120 00404825 */ move $t1, $v0 +.L7F052124: +/* 086C54 7F052124 8F010000 */ lw $at, ($t8) +/* 086C58 7F052128 2718000C */ addiu $t8, $t8, 0xc +/* 086C5C 7F05212C 2529000C */ addiu $t1, $t1, 0xc +/* 086C60 7F052130 AD21FFF4 */ sw $at, -0xc($t1) +/* 086C64 7F052134 8F01FFF8 */ lw $at, -8($t8) +/* 086C68 7F052138 AD21FFF8 */ sw $at, -8($t1) +/* 086C6C 7F05213C 8F01FFFC */ lw $at, -4($t8) +/* 086C70 7F052140 1708FFF8 */ bne $t8, $t0, .L7F052124 +/* 086C74 7F052144 AD21FFFC */ sw $at, -4($t1) +/* 086C78 7F052148 8F010000 */ lw $at, ($t8) +/* 086C7C 7F05214C 00406025 */ move $t4, $v0 +/* 086C80 7F052150 02206825 */ move $t5, $s1 +/* 086C84 7F052154 244B0084 */ addiu $t3, $v0, 0x84 +/* 086C88 7F052158 AD210000 */ sw $at, ($t1) +.L7F05215C: +/* 086C8C 7F05215C 8D810000 */ lw $at, ($t4) +/* 086C90 7F052160 258C000C */ addiu $t4, $t4, 0xc +/* 086C94 7F052164 25AD000C */ addiu $t5, $t5, 0xc +/* 086C98 7F052168 ADA1FFF4 */ sw $at, -0xc($t5) +/* 086C9C 7F05216C 8D81FFF8 */ lw $at, -8($t4) +/* 086CA0 7F052170 ADA1FFF8 */ sw $at, -8($t5) +/* 086CA4 7F052174 8D81FFFC */ lw $at, -4($t4) +/* 086CA8 7F052178 158BFFF8 */ bne $t4, $t3, .L7F05215C +/* 086CAC 7F05217C ADA1FFFC */ sw $at, -4($t5) +/* 086CB0 7F052180 8D810000 */ lw $at, ($t4) +/* 086CB4 7F052184 02202025 */ move $a0, $s1 +/* 086CB8 7F052188 02003025 */ move $a2, $s0 +/* 086CBC 7F05218C ADA10000 */ sw $at, ($t5) +/* 086CC0 7F052190 8FAE00BC */ lw $t6, 0xbc($sp) +/* 086CC4 7F052194 A22E0080 */ sb $t6, 0x80($s1) +/* 086CC8 7F052198 8FAF00B8 */ lw $t7, 0xb8($sp) +/* 086CCC 7F05219C A62F0004 */ sh $t7, 4($s1) +/* 086CD0 7F0521A0 0FC14764 */ jal complete_object_data_block_return_position_entry +/* 086CD4 7F0521A4 8FA500B4 */ lw $a1, 0xb4($sp) +/* 086CD8 7F0521A8 1000000A */ b .L7F0521D4 +/* 086CDC 7F0521AC 8FBF001C */ lw $ra, 0x1c($sp) +.L7F0521B0: +/* 086CE0 7F0521B0 10E00003 */ beqz $a3, .L7F0521C0 +/* 086CE4 7F0521B4 00008825 */ move $s1, $zero +/* 086CE8 7F0521B8 0FC1B08D */ jal set_obj_instance_scale_to_zero +/* 086CEC 7F0521BC 00E02025 */ move $a0, $a3 +.L7F0521C0: +/* 086CF0 7F0521C0 52000004 */ beql $s0, $zero, .L7F0521D4 +/* 086CF4 7F0521C4 8FBF001C */ lw $ra, 0x1c($sp) +/* 086CF8 7F0521C8 0FC0E921 */ jal set_last_obj_pos_data +/* 086CFC 7F0521CC 02002025 */ move $a0, $s0 +/* 086D00 7F0521D0 8FBF001C */ lw $ra, 0x1c($sp) +.L7F0521D4: +/* 086D04 7F0521D4 02201025 */ move $v0, $s1 +/* 086D08 7F0521D8 8FB10018 */ lw $s1, 0x18($sp) +/* 086D0C 7F0521DC 8FB00014 */ lw $s0, 0x14($sp) +/* 086D10 7F0521E0 03E00008 */ jr $ra +/* 086D14 7F0521E4 27BD00B8 */ addiu $sp, $sp, 0xb8 +) +#endif + + + + +#ifdef NONMATCHING +void set_0x4_in_runtime_flags_for_item_in_guards_hand(PCHRdata chr, int hand_index) { + // BROKEN: we need to first identify the struct assigned to handle_positiondata ptr + // function used to remove item from right/left hand or something, maybe position holding data? + void **item_in_hand_ptr; + + if (chr->handle_positiondata[hand_index] != 0) + { + item_in_hand_ptr = chr->handle_positiondata[hand_index] + 4; + item_in_hand_ptr[0x19] = (s32)(item_in_hand_ptr[0x19]) | 4; + } +} +#else +GLOBAL_ASM( +.text +glabel set_0x4_in_runtime_flags_for_item_in_guards_hand +/* 086D18 7F0521E8 00057080 */ sll $t6, $a1, 2 +/* 086D1C 7F0521EC 008E7821 */ addu $t7, $a0, $t6 +/* 086D20 7F0521F0 8DE20160 */ lw $v0, 0x160($t7) +/* 086D24 7F0521F4 10400005 */ beqz $v0, .L7F05220C +/* 086D28 7F0521F8 00000000 */ nop +/* 086D2C 7F0521FC 8C430004 */ lw $v1, 4($v0) +/* 086D30 7F052200 8C780064 */ lw $t8, 0x64($v1) +/* 086D34 7F052204 37190004 */ ori $t9, $t8, 4 +/* 086D38 7F052208 AC790064 */ sw $t9, 0x64($v1) +.L7F05220C: +/* 086D3C 7F05220C 03E00008 */ jr $ra +/* 086D40 7F052210 00000000 */ nop +) +#endif + + + + +#ifdef NONMATCHING +void something_with_generating_object(void) { + +} +#else +GLOBAL_ASM( +.text +glabel something_with_generating_object +/* 086D44 7F052214 27BDFF40 */ addiu $sp, $sp, -0xc0 +/* 086D48 7F052218 8FAE00D4 */ lw $t6, 0xd4($sp) +/* 086D4C 7F05221C AFBF002C */ sw $ra, 0x2c($sp) +/* 086D50 7F052220 AFB20028 */ sw $s2, 0x28($sp) +/* 086D54 7F052224 AFB10024 */ sw $s1, 0x24($sp) +/* 086D58 7F052228 AFB00020 */ sw $s0, 0x20($sp) +/* 086D5C 7F05222C AFA400C0 */ sw $a0, 0xc0($sp) +/* 086D60 7F052230 AFA500C4 */ sw $a1, 0xc4($sp) +/* 086D64 7F052234 AFA600C8 */ sw $a2, 0xc8($sp) +/* 086D68 7F052238 15C0000A */ bnez $t6, .L7F052264 +/* 086D6C 7F05223C AFA700CC */ sw $a3, 0xcc($sp) +/* 086D70 7F052240 0005C080 */ sll $t8, $a1, 2 +/* 086D74 7F052244 0305C023 */ subu $t8, $t8, $a1 +/* 086D78 7F052248 0018C080 */ sll $t8, $t8, 2 +/* 086D7C 7F05224C 3C198004 */ lui $t9, %hi(PitemZ_entries) +/* 086D80 7F052250 0338C821 */ addu $t9, $t9, $t8 +/* 086D84 7F052254 8F39A228 */ lw $t9, %lo(PitemZ_entries)($t9) +/* 086D88 7F052258 00A02025 */ move $a0, $a1 +/* 086D8C 7F05225C 0FC15B0E */ jal load_model +/* 086D90 7F052260 AFB900D4 */ sw $t9, 0xd4($sp) +.L7F052264: +/* 086D94 7F052264 0FC0E90C */ jal remove_last_obj_pos_data_entry +/* 086D98 7F052268 00000000 */ nop +/* 086D9C 7F05226C 00408825 */ move $s1, $v0 +/* 086DA0 7F052270 0FC1B025 */ jal get_obj_instance_controller_for_header +/* 086DA4 7F052274 8FA400D4 */ lw $a0, 0xd4($sp) +/* 086DA8 7F052278 8FB000D0 */ lw $s0, 0xd0($sp) +/* 086DAC 7F05227C 00409025 */ move $s2, $v0 +/* 086DB0 7F052280 2E240001 */ sltiu $a0, $s1, 1 +/* 086DB4 7F052284 16000004 */ bnez $s0, .L7F052298 +/* 086DB8 7F052288 2C450001 */ sltiu $a1, $v0, 1 +/* 086DBC 7F05228C 0FC1449B */ jal sub_GAME_7F05126C +/* 086DC0 7F052290 8FA600D4 */ lw $a2, 0xd4($sp) +/* 086DC4 7F052294 00408025 */ move $s0, $v0 +.L7F052298: +/* 086DC8 7F052298 16200004 */ bnez $s1, .L7F0522AC +/* 086DCC 7F05229C 00000000 */ nop +/* 086DD0 7F0522A0 0FC0E90C */ jal remove_last_obj_pos_data_entry +/* 086DD4 7F0522A4 00000000 */ nop +/* 086DD8 7F0522A8 00408825 */ move $s1, $v0 +.L7F0522AC: +/* 086DDC 7F0522AC 16400004 */ bnez $s2, .L7F0522C0 +/* 086DE0 7F0522B0 00000000 */ nop +/* 086DE4 7F0522B4 0FC1B025 */ jal get_obj_instance_controller_for_header +/* 086DE8 7F0522B8 8FA400D4 */ lw $a0, 0xd4($sp) +/* 086DEC 7F0522BC 00409025 */ move $s2, $v0 +.L7F0522C0: +/* 086DF0 7F0522C0 12000034 */ beqz $s0, .L7F052394 +/* 086DF4 7F0522C4 00000000 */ nop +/* 086DF8 7F0522C8 12200032 */ beqz $s1, .L7F052394 +/* 086DFC 7F0522CC 00000000 */ nop +/* 086E00 7F0522D0 12400030 */ beqz $s2, .L7F052394 +/* 086E04 7F0522D4 27A20030 */ addiu $v0, $sp, 0x30 +/* 086E08 7F0522D8 3C088003 */ lui $t0, %hi(blank_08_object_preset_4001) +/* 086E0C 7F0522DC 2508221C */ addiu $t0, %lo(blank_08_object_preset_4001) # addiu $t0, $t0, 0x221c +/* 086E10 7F0522E0 250A0084 */ addiu $t2, $t0, 0x84 +/* 086E14 7F0522E4 00405825 */ move $t3, $v0 +.L7F0522E8: +/* 086E18 7F0522E8 8D010000 */ lw $at, ($t0) +/* 086E1C 7F0522EC 2508000C */ addiu $t0, $t0, 0xc +/* 086E20 7F0522F0 256B000C */ addiu $t3, $t3, 0xc +/* 086E24 7F0522F4 AD61FFF4 */ sw $at, -0xc($t3) +/* 086E28 7F0522F8 8D01FFF8 */ lw $at, -8($t0) +/* 086E2C 7F0522FC AD61FFF8 */ sw $at, -8($t3) +/* 086E30 7F052300 8D01FFFC */ lw $at, -4($t0) +/* 086E34 7F052304 150AFFF8 */ bne $t0, $t2, .L7F0522E8 +/* 086E38 7F052308 AD61FFFC */ sw $at, -4($t3) +/* 086E3C 7F05230C 8D010000 */ lw $at, ($t0) +/* 086E40 7F052310 00407025 */ move $t6, $v0 +/* 086E44 7F052314 0200C025 */ move $t8, $s0 +/* 086E48 7F052318 244D0084 */ addiu $t5, $v0, 0x84 +/* 086E4C 7F05231C AD610000 */ sw $at, ($t3) +.L7F052320: +/* 086E50 7F052320 8DC10000 */ lw $at, ($t6) +/* 086E54 7F052324 25CE000C */ addiu $t6, $t6, 0xc +/* 086E58 7F052328 2718000C */ addiu $t8, $t8, 0xc +/* 086E5C 7F05232C AF01FFF4 */ sw $at, -0xc($t8) +/* 086E60 7F052330 8DC1FFF8 */ lw $at, -8($t6) +/* 086E64 7F052334 AF01FFF8 */ sw $at, -8($t8) +/* 086E68 7F052338 8DC1FFFC */ lw $at, -4($t6) +/* 086E6C 7F05233C 15CDFFF8 */ bne $t6, $t5, .L7F052320 +/* 086E70 7F052340 AF01FFFC */ sw $at, -4($t8) +/* 086E74 7F052344 8DC10000 */ lw $at, ($t6) +/* 086E78 7F052348 02002025 */ move $a0, $s0 +/* 086E7C 7F05234C 02203825 */ move $a3, $s1 +/* 086E80 7F052350 AF010000 */ sw $at, ($t8) +/* 086E84 7F052354 8FB900C8 */ lw $t9, 0xc8($sp) +/* 086E88 7F052358 A2190080 */ sb $t9, 0x80($s0) +/* 086E8C 7F05235C 8FAF00C4 */ lw $t7, 0xc4($sp) +/* 086E90 7F052360 A60F0004 */ sh $t7, 4($s0) +/* 086E94 7F052364 8FA900CC */ lw $t1, 0xcc($sp) +/* 086E98 7F052368 352A4000 */ ori $t2, $t1, 0x4000 +/* 086E9C 7F05236C AE0A0008 */ sw $t2, 8($s0) +/* 086EA0 7F052370 8FA800C0 */ lw $t0, 0xc0($sp) +/* 086EA4 7F052374 850B0000 */ lh $t3, ($t0) +/* 086EA8 7F052378 A60B0006 */ sh $t3, 6($s0) +/* 086EAC 7F05237C AFB20010 */ sw $s2, 0x10($sp) +/* 086EB0 7F052380 8FA600D4 */ lw $a2, 0xd4($sp) +/* 086EB4 7F052384 0FC147CC */ jal sub_GAME_7F051F30 +/* 086EB8 7F052388 8FA500C0 */ lw $a1, 0xc0($sp) +/* 086EBC 7F05238C 1000000A */ b .L7F0523B8 +/* 086EC0 7F052390 00408825 */ move $s1, $v0 +.L7F052394: +/* 086EC4 7F052394 12400003 */ beqz $s2, .L7F0523A4 +/* 086EC8 7F052398 00000000 */ nop +/* 086ECC 7F05239C 0FC1B08D */ jal set_obj_instance_scale_to_zero +/* 086ED0 7F0523A0 02402025 */ move $a0, $s2 +.L7F0523A4: +/* 086ED4 7F0523A4 52200005 */ beql $s1, $zero, .L7F0523BC +/* 086ED8 7F0523A8 8FBF002C */ lw $ra, 0x2c($sp) +/* 086EDC 7F0523AC 0FC0E921 */ jal set_last_obj_pos_data +/* 086EE0 7F0523B0 02202025 */ move $a0, $s1 +/* 086EE4 7F0523B4 00008825 */ move $s1, $zero +.L7F0523B8: +/* 086EE8 7F0523B8 8FBF002C */ lw $ra, 0x2c($sp) +.L7F0523BC: +/* 086EEC 7F0523BC 02201025 */ move $v0, $s1 +/* 086EF0 7F0523C0 8FB10024 */ lw $s1, 0x24($sp) +/* 086EF4 7F0523C4 8FB00020 */ lw $s0, 0x20($sp) +/* 086EF8 7F0523C8 8FB20028 */ lw $s2, 0x28($sp) +/* 086EFC 7F0523CC 03E00008 */ jr $ra +/* 086F00 7F0523D0 27BD00C0 */ addiu $sp, $sp, 0xc0 +) +#endif + + + + + +#ifdef NONMATCHING +void actor_draws_weapon_with_model(void) { + +} +#else +GLOBAL_ASM( +.text +glabel actor_draws_weapon_with_model +/* 086F04 7F0523D4 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 086F08 7F0523D8 AFBF001C */ sw $ra, 0x1c($sp) +/* 086F0C 7F0523DC AFA00010 */ sw $zero, 0x10($sp) +/* 086F10 7F0523E0 0FC14885 */ jal something_with_generating_object +/* 086F14 7F0523E4 AFA00014 */ sw $zero, 0x14($sp) +/* 086F18 7F0523E8 8FBF001C */ lw $ra, 0x1c($sp) +/* 086F1C 7F0523EC 27BD0020 */ addiu $sp, $sp, 0x20 +/* 086F20 7F0523F0 03E00008 */ jr $ra +/* 086F24 7F0523F4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0523F8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0523F8 +/* 086F28 7F0523F8 27BDFF48 */ addiu $sp, $sp, -0xb8 +/* 086F2C 7F0523FC AFBF001C */ sw $ra, 0x1c($sp) +/* 086F30 7F052400 AFB10018 */ sw $s1, 0x18($sp) +/* 086F34 7F052404 AFB00014 */ sw $s0, 0x14($sp) +/* 086F38 7F052408 AFA500BC */ sw $a1, 0xbc($sp) +/* 086F3C 7F05240C AFA600C0 */ sw $a2, 0xc0($sp) +/* 086F40 7F052410 8C870004 */ lw $a3, 4($a0) +/* 086F44 7F052414 00E02025 */ move $a0, $a3 +/* 086F48 7F052418 0FC08C0B */ jal something_with_weaponpos_of_guarddata_hand +/* 086F4C 7F05241C AFA700B4 */ sw $a3, 0xb4($sp) +/* 086F50 7F052420 8FA700B4 */ lw $a3, 0xb4($sp) +/* 086F54 7F052424 10400046 */ beqz $v0, .L7F052540 +/* 086F58 7F052428 00401825 */ move $v1, $v0 +/* 086F5C 7F05242C 8C500004 */ lw $s0, 4($v0) +/* 086F60 7F052430 8E0E0064 */ lw $t6, 0x64($s0) +/* 086F64 7F052434 31CF0800 */ andi $t7, $t6, 0x800 +/* 086F68 7F052438 55E0003F */ bnezl $t7, .L7F052538 +/* 086F6C 7F05243C 90480001 */ lbu $t0, 1($v0) +/* 086F70 7F052440 8E18000C */ lw $t8, 0xc($s0) +/* 086F74 7F052444 3C098003 */ lui $t1, %hi(D_800322A4) +/* 086F78 7F052448 252922A4 */ addiu $t1, %lo(D_800322A4) # addiu $t1, $t1, 0x22a4 +/* 086F7C 7F05244C 0018CB00 */ sll $t9, $t8, 0xc +/* 086F80 7F052450 07200038 */ bltz $t9, .L7F052534 +/* 086F84 7F052454 27A80068 */ addiu $t0, $sp, 0x68 +/* 086F88 7F052458 8E110014 */ lw $s1, 0x14($s0) +/* 086F8C 7F05245C 252B003C */ addiu $t3, $t1, 0x3c +.L7F052460: +/* 086F90 7F052460 8D210000 */ lw $at, ($t1) +/* 086F94 7F052464 2529000C */ addiu $t1, $t1, 0xc +/* 086F98 7F052468 2508000C */ addiu $t0, $t0, 0xc +/* 086F9C 7F05246C AD01FFF4 */ sw $at, -0xc($t0) +/* 086FA0 7F052470 8D21FFF8 */ lw $at, -8($t1) +/* 086FA4 7F052474 AD01FFF8 */ sw $at, -8($t0) +/* 086FA8 7F052478 8D21FFFC */ lw $at, -4($t1) +/* 086FAC 7F05247C 152BFFF8 */ bne $t1, $t3, .L7F052460 +/* 086FB0 7F052480 AD01FFFC */ sw $at, -4($t0) +/* 086FB4 7F052484 8D210000 */ lw $at, ($t1) +/* 086FB8 7F052488 00003025 */ move $a2, $zero +/* 086FBC 7F05248C AD010000 */ sw $at, ($t0) +/* 086FC0 7F052490 906C0001 */ lbu $t4, 1($v1) +/* 086FC4 7F052494 8CE4001C */ lw $a0, 0x1c($a3) +/* 086FC8 7F052498 358D0002 */ ori $t5, $t4, 2 +/* 086FCC 7F05249C A06D0001 */ sb $t5, 1($v1) +/* 086FD0 7F0524A0 0FC1B198 */ jal sub_GAME_7F06C660 +/* 086FD4 7F0524A4 8E25001C */ lw $a1, 0x1c($s1) +/* 086FD8 7F0524A8 8FAE00BC */ lw $t6, 0xbc($sp) +/* 086FDC 7F0524AC 24010001 */ li $at, 1 +/* 086FE0 7F0524B0 AFA20068 */ sw $v0, 0x68($sp) +/* 086FE4 7F0524B4 15C10009 */ bne $t6, $at, .L7F0524DC +/* 086FE8 7F0524B8 27A50020 */ addiu $a1, $sp, 0x20 +/* 086FEC 7F0524BC 3C018005 */ lui $at, %hi(D_800532F0) +/* 086FF0 7F0524C0 0FC161A2 */ jal sub_GAME_7F058688 +/* 086FF4 7F0524C4 C42C32F0 */ lwc1 $f12, %lo(D_800532F0)($at) +/* 086FF8 7F0524C8 8FA40068 */ lw $a0, 0x68($sp) +/* 086FFC 7F0524CC 0FC1601A */ jal sub_GAME_7F058068 +/* 087000 7F0524D0 27A50020 */ addiu $a1, $sp, 0x20 +/* 087004 7F0524D4 27AF0020 */ addiu $t7, $sp, 0x20 +/* 087008 7F0524D8 AFAF0068 */ sw $t7, 0x68($sp) +.L7F0524DC: +/* 08700C 7F0524DC 8E380008 */ lw $t8, 8($s1) +/* 087010 7F0524E0 8704000E */ lh $a0, 0xe($t8) +/* 087014 7F0524E4 0004C980 */ sll $t9, $a0, 6 +/* 087018 7F0524E8 0FC2F5C5 */ jal sub_GAME_7F0BD714 +/* 08701C 7F0524EC 03202025 */ move $a0, $t9 +/* 087020 7F0524F0 AFA20078 */ sw $v0, 0x78($sp) +/* 087024 7F0524F4 27A40068 */ addiu $a0, $sp, 0x68 +/* 087028 7F0524F8 0FC1BC92 */ jal instcalcmatrices +/* 08702C 7F0524FC 02202825 */ move $a1, $s1 +/* 087030 7F052500 8FA200C0 */ lw $v0, 0xc0($sp) +/* 087034 7F052504 5040000F */ beql $v0, $zero, .L7F052544 +/* 087038 7F052508 8FBF001C */ lw $ra, 0x1c($sp) +/* 08703C 7F05250C 8E0A0064 */ lw $t2, 0x64($s0) +/* 087040 7F052510 02202825 */ move $a1, $s1 +/* 087044 7F052514 314B0080 */ andi $t3, $t2, 0x80 +/* 087048 7F052518 5560000A */ bnezl $t3, .L7F052544 +/* 08704C 7F05251C 8FBF001C */ lw $ra, 0x1c($sp) +/* 087050 7F052520 0FC1AC48 */ jal sub_GAME_7F06B120 +/* 087054 7F052524 8C440000 */ lw $a0, ($v0) +/* 087058 7F052528 8FA900C0 */ lw $t1, 0xc0($sp) +/* 08705C 7F05252C 10000004 */ b .L7F052540 +/* 087060 7F052530 AD220000 */ sw $v0, ($t1) +.L7F052534: +/* 087064 7F052534 90480001 */ lbu $t0, 1($v0) +.L7F052538: +/* 087068 7F052538 310CFFFD */ andi $t4, $t0, 0xfffd +/* 08706C 7F05253C A04C0001 */ sb $t4, 1($v0) +.L7F052540: +/* 087070 7F052540 8FBF001C */ lw $ra, 0x1c($sp) +.L7F052544: +/* 087074 7F052544 8FB00014 */ lw $s0, 0x14($sp) +/* 087078 7F052548 8FB10018 */ lw $s1, 0x18($sp) +/* 08707C 7F05254C 03E00008 */ jr $ra +/* 087080 7F052550 27BD00B8 */ addiu $sp, $sp, 0xb8 +) +#endif + + + + + +#ifdef NONMATCHING +void redirect_object_collectability_routines(void) { + +} +#else +GLOBAL_ASM( +.text +glabel redirect_object_collectability_routines +/* 087084 7F052554 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 087088 7F052558 AFBF0014 */ sw $ra, 0x14($sp) +/* 08708C 7F05255C 0FC141B7 */ jal object_collectability_routines +/* 087090 7F052560 00000000 */ nop +/* 087094 7F052564 8FBF0014 */ lw $ra, 0x14($sp) +/* 087098 7F052568 27BD0018 */ addiu $sp, $sp, 0x18 +/* 08709C 7F05256C 03E00008 */ jr $ra +/* 0870A0 7F052570 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F052574(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F052574 +/* 0870A4 7F052574 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0870A8 7F052578 AFBF0014 */ sw $ra, 0x14($sp) +/* 0870AC 7F05257C AFA50024 */ sw $a1, 0x24($sp) +/* 0870B0 7F052580 8C820004 */ lw $v0, 4($a0) +/* 0870B4 7F052584 8C460014 */ lw $a2, 0x14($v0) +/* 0870B8 7F052588 50C0001B */ beql $a2, $zero, .L7F0525F8 +/* 0870BC 7F05258C 8FBF0014 */ lw $ra, 0x14($sp) +/* 0870C0 7F052590 8CC20008 */ lw $v0, 8($a2) +/* 0870C4 7F052594 3C0E8004 */ lui $t6, %hi(prop_weapon_related) +/* 0870C8 7F052598 25CEC4FC */ addiu $t6, %lo(prop_weapon_related) # addiu $t6, $t6, -0x3b04 +/* 0870CC 7F05259C 8C4F0004 */ lw $t7, 4($v0) +/* 0870D0 7F0525A0 55CF0015 */ bnel $t6, $t7, .L7F0525F8 +/* 0870D4 7F0525A4 8FBF0014 */ lw $ra, 0x14($sp) +/* 0870D8 7F0525A8 8C430008 */ lw $v1, 8($v0) +/* 0870DC 7F0525AC 00C02025 */ move $a0, $a2 +/* 0870E0 7F0525B0 8C650000 */ lw $a1, ($v1) +/* 0870E4 7F0525B4 50A00009 */ beql $a1, $zero, .L7F0525DC +/* 0870E8 7F0525B8 8C650008 */ lw $a1, 8($v1) +/* 0870EC 7F0525BC 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 0870F0 7F0525C0 AFA60018 */ sw $a2, 0x18($sp) +/* 0870F4 7F0525C4 8FB80024 */ lw $t8, 0x24($sp) +/* 0870F8 7F0525C8 8FA60018 */ lw $a2, 0x18($sp) +/* 0870FC 7F0525CC A4580000 */ sh $t8, ($v0) +/* 087100 7F0525D0 8CD90008 */ lw $t9, 8($a2) +/* 087104 7F0525D4 8F230008 */ lw $v1, 8($t9) +/* 087108 7F0525D8 8C650008 */ lw $a1, 8($v1) +.L7F0525DC: +/* 08710C 7F0525DC 50A00006 */ beql $a1, $zero, .L7F0525F8 +/* 087110 7F0525E0 8FBF0014 */ lw $ra, 0x14($sp) +/* 087114 7F0525E4 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 087118 7F0525E8 00C02025 */ move $a0, $a2 +/* 08711C 7F0525EC 8FA80024 */ lw $t0, 0x24($sp) +/* 087120 7F0525F0 AC480000 */ sw $t0, ($v0) +/* 087124 7F0525F4 8FBF0014 */ lw $ra, 0x14($sp) +.L7F0525F8: +/* 087128 7F0525F8 27BD0020 */ addiu $sp, $sp, 0x20 +/* 08712C 7F0525FC 03E00008 */ jr $ra +/* 087130 7F052600 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F052604(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*HACK*/ +/*D:800532F4*/ +glabel jpt_hat_worn +.word model_hat_fur +.word model_hat_fur +.word model_hat_fur +.word model_hat_greencap +.word model_hat_greencap +.text +glabel sub_GAME_7F052604 +/* 087134 7F052604 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 087138 7F052608 AFBF0014 */ sw $ra, 0x14($sp) +/* 08713C 7F05260C 8C820004 */ lw $v0, 4($a0) +/* 087140 7F052610 8C460014 */ lw $a2, 0x14($v0) +/* 087144 7F052614 50C00017 */ beql $a2, $zero, .L7F052674 +/* 087148 7F052618 00001025 */ move $v0, $zero +/* 08714C 7F05261C 8CC20008 */ lw $v0, 8($a2) +/* 087150 7F052620 3C0E8004 */ lui $t6, %hi(prop_weapon_related) +/* 087154 7F052624 25CEC4FC */ addiu $t6, %lo(prop_weapon_related) # addiu $t6, $t6, -0x3b04 +/* 087158 7F052628 8C4F0004 */ lw $t7, 4($v0) +/* 08715C 7F05262C 55CF0011 */ bnel $t6, $t7, .L7F052674 +/* 087160 7F052630 00001025 */ move $v0, $zero +/* 087164 7F052634 8C430008 */ lw $v1, 8($v0) +/* 087168 7F052638 8C650000 */ lw $a1, ($v1) +/* 08716C 7F05263C 50A00006 */ beql $a1, $zero, .L7F052658 +/* 087170 7F052640 8C650008 */ lw $a1, 8($v1) +/* 087174 7F052644 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 087178 7F052648 00C02025 */ move $a0, $a2 +/* 08717C 7F05264C 10000009 */ b .L7F052674 +/* 087180 7F052650 84420000 */ lh $v0, ($v0) +/* 087184 7F052654 8C650008 */ lw $a1, 8($v1) +.L7F052658: +/* 087188 7F052658 50A00006 */ beql $a1, $zero, .L7F052674 +/* 08718C 7F05265C 00001025 */ move $v0, $zero +/* 087190 7F052660 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 087194 7F052664 00C02025 */ move $a0, $a2 +/* 087198 7F052668 10000002 */ b .L7F052674 +/* 08719C 7F05266C 8C420000 */ lw $v0, ($v0) +/* 0871A0 7F052670 00001025 */ move $v0, $zero +.L7F052674: +/* 0871A4 7F052674 8FBF0014 */ lw $ra, 0x14($sp) +/* 0871A8 7F052678 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0871AC 7F05267C 03E00008 */ jr $ra +/* 0871B0 7F052680 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void get_hat_model(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:800532F4*/ +/*glabel jpt_hat_worn*/ +/*.word model_hat_fur*/ +/*.word model_hat_fur*/ +/*.word model_hat_fur*/ +/*.word model_hat_greencap*/ +/*.word model_hat_greencap*/ +.word model_hat_combat_helmet +.word model_hat_combat_helmet +.word model_hat_moonraker_headgear +.word model_hat_beret +.word model_hat_beret +.word model_hat_beret +.word model_hat_officerhat + +.text +glabel get_hat_model +/* 0871B4 7F052684 8C820004 */ lw $v0, 4($a0) +/* 0871B8 7F052688 844E0004 */ lh $t6, 4($v0) +/* 0871BC 7F05268C 2402FFFF */ li $v0, -1 +/* 0871C0 7F052690 25CFFF2C */ addiu $t7, $t6, -0xd4 +/* 0871C4 7F052694 2DE1000C */ sltiu $at, $t7, 0xc +/* 0871C8 7F052698 10200012 */ beqz $at, .L7F0526E4 +/* 0871CC 7F05269C 000F7880 */ sll $t7, $t7, 2 +/* 0871D0 7F0526A0 3C018005 */ lui $at, %hi(jpt_hat_worn) +/* 0871D4 7F0526A4 002F0821 */ addu $at, $at, $t7 +/* 0871D8 7F0526A8 8C2F32F4 */ lw $t7, %lo(jpt_hat_worn)($at) +/* 0871DC 7F0526AC 01E00008 */ jr $t7 +/* 0871E0 7F0526B0 00000000 */ nop +model_hat_fur: +/* 0871E4 7F0526B4 03E00008 */ jr $ra +/* 0871E8 7F0526B8 24020004 */ li $v0, 4 + +model_hat_greencap: +/* 0871EC 7F0526BC 03E00008 */ jr $ra +/* 0871F0 7F0526C0 24020001 */ li $v0, 1 + +model_hat_combat_helmet: +/* 0871F4 7F0526C4 03E00008 */ jr $ra +/* 0871F8 7F0526C8 24020003 */ li $v0, 3 + +model_hat_moonraker_headgear: +/* 0871FC 7F0526CC 03E00008 */ jr $ra +/* 087200 7F0526D0 24020005 */ li $v0, 5 + +model_hat_beret: +/* 087204 7F0526D4 03E00008 */ jr $ra +/* 087208 7F0526D8 00001025 */ move $v0, $zero + +model_hat_officerhat: +/* 08720C 7F0526DC 03E00008 */ jr $ra +/* 087210 7F0526E0 24020002 */ li $v0, 2 + +model_hat_default: +.L7F0526E4: +/* 087214 7F0526E4 03E00008 */ jr $ra +/* 087218 7F0526E8 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0526EC(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_80053324 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053328 +.word 0x40c90fdb /*6.2831855*/ +glabel D_8005332C +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053330 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053334 +.word 0x461c4000 /*10000.0*/ +glabel D_80053338 +.word 0x3ecccccd /*0.40000001*/ +glabel D_8005333C +.word 0x3ecccccd /*0.40000001*/ +glabel D_80053340 +.word 0x461c4000 /*10000.0*/ +glabel D_80053344 +.word 0x46b1de00 /*22767.0*/ +glabel D_80053348 +.word 0x459c4000 /*5000.0*/ +.text +glabel sub_GAME_7F0526EC +/* 08721C 7F0526EC 27BDFF60 */ addiu $sp, $sp, -0xa0 +/* 087220 7F0526F0 AFBF001C */ sw $ra, 0x1c($sp) +/* 087224 7F0526F4 AFB00018 */ sw $s0, 0x18($sp) +/* 087228 7F0526F8 AFA500A4 */ sw $a1, 0xa4($sp) +/* 08722C 7F0526FC 9482009A */ lhu $v0, 0x9a($a0) +/* 087230 7F052700 24010005 */ li $at, 5 +/* 087234 7F052704 00808025 */ move $s0, $a0 +/* 087238 7F052708 10410003 */ beq $v0, $at, .L7F052718 +/* 08723C 7F05270C 24010009 */ li $at, 9 +/* 087240 7F052710 544100CA */ bnel $v0, $at, .L7F052A3C +/* 087244 7F052714 24010006 */ li $at, 6 +.L7F052718: +/* 087248 7F052718 86190006 */ lh $t9, 6($s0) +/* 08724C 7F05271C 3C098007 */ lui $t1, %hi(ptr_2xxxpresets) +/* 087250 7F052720 8D295D1C */ lw $t1, %lo(ptr_2xxxpresets)($t1) +/* 087254 7F052724 00194100 */ sll $t0, $t9, 4 +/* 087258 7F052728 01194021 */ addu $t0, $t0, $t9 +/* 08725C 7F05272C 00084080 */ sll $t0, $t0, 2 +/* 087260 7F052730 01091021 */ addu $v0, $t0, $t1 +/* 087264 7F052734 C4460010 */ lwc1 $f6, 0x10($v0) +/* 087268 7F052738 C4480020 */ lwc1 $f8, 0x20($v0) +/* 08726C 7F05273C C452001C */ lwc1 $f18, 0x1c($v0) +/* 087270 7F052740 C44A0014 */ lwc1 $f10, 0x14($v0) +/* 087274 7F052744 46083102 */ mul.s $f4, $f6, $f8 +/* 087278 7F052748 24010009 */ li $at, 9 +/* 08727C 7F05274C 460A9402 */ mul.s $f16, $f18, $f10 +/* 087280 7F052750 46102181 */ sub.s $f6, $f4, $f16 +/* 087284 7F052754 E7A60038 */ swc1 $f6, 0x38($sp) +/* 087288 7F052758 C4480014 */ lwc1 $f8, 0x14($v0) +/* 08728C 7F05275C C4520018 */ lwc1 $f18, 0x18($v0) +/* 087290 7F052760 C450000C */ lwc1 $f16, 0xc($v0) +/* 087294 7F052764 C4440020 */ lwc1 $f4, 0x20($v0) +/* 087298 7F052768 46124282 */ mul.s $f10, $f8, $f18 +/* 08729C 7F05276C 00000000 */ nop +/* 0872A0 7F052770 46102202 */ mul.s $f8, $f4, $f16 +/* 0872A4 7F052774 46085481 */ sub.s $f18, $f10, $f8 +/* 0872A8 7F052778 E7B2003C */ swc1 $f18, 0x3c($sp) +/* 0872AC 7F05277C C444000C */ lwc1 $f4, 0xc($v0) +/* 0872B0 7F052780 C450001C */ lwc1 $f16, 0x1c($v0) +/* 0872B4 7F052784 C4480018 */ lwc1 $f8, 0x18($v0) +/* 0872B8 7F052788 46102282 */ mul.s $f10, $f4, $f16 +/* 0872BC 7F05278C C4440010 */ lwc1 $f4, 0x10($v0) +/* 0872C0 7F052790 46044402 */ mul.s $f16, $f8, $f4 +/* 0872C4 7F052794 46105201 */ sub.s $f8, $f10, $f16 +/* 0872C8 7F052798 E7A80040 */ swc1 $f8, 0x40($sp) +/* 0872CC 7F05279C C44A0034 */ lwc1 $f10, 0x34($v0) +/* 0872D0 7F0527A0 C444000C */ lwc1 $f4, 0xc($v0) +/* 0872D4 7F0527A4 460A2402 */ mul.s $f16, $f4, $f10 +/* 0872D8 7F0527A8 C4440000 */ lwc1 $f4, ($v0) +/* 0872DC 7F0527AC 46048280 */ add.s $f10, $f16, $f4 +/* 0872E0 7F0527B0 E7AA0054 */ swc1 $f10, 0x54($sp) +/* 0872E4 7F0527B4 C4440034 */ lwc1 $f4, 0x34($v0) +/* 0872E8 7F0527B8 C4500010 */ lwc1 $f16, 0x10($v0) +/* 0872EC 7F0527BC 46048402 */ mul.s $f16, $f16, $f4 +/* 0872F0 7F0527C0 C4440004 */ lwc1 $f4, 4($v0) +/* 0872F4 7F0527C4 46048400 */ add.s $f16, $f16, $f4 +/* 0872F8 7F0527C8 E7B00058 */ swc1 $f16, 0x58($sp) +/* 0872FC 7F0527CC C4440014 */ lwc1 $f4, 0x14($v0) +/* 087300 7F0527D0 E7A60020 */ swc1 $f6, 0x20($sp) +/* 087304 7F0527D4 C4460034 */ lwc1 $f6, 0x34($v0) +/* 087308 7F0527D8 46062102 */ mul.s $f4, $f4, $f6 +/* 08730C 7F0527DC C4460008 */ lwc1 $f6, 8($v0) +/* 087310 7F0527E0 46062100 */ add.s $f4, $f4, $f6 +/* 087314 7F0527E4 C7A60020 */ lwc1 $f6, 0x20($sp) +/* 087318 7F0527E8 E7A4005C */ swc1 $f4, 0x5c($sp) +/* 08731C 7F0527EC 960A009A */ lhu $t2, 0x9a($s0) +/* 087320 7F0527F0 15410010 */ bne $t2, $at, .L7F052834 +/* 087324 7F0527F4 00000000 */ nop +/* 087328 7F0527F8 E7B20020 */ swc1 $f18, 0x20($sp) +/* 08732C 7F0527FC C4520030 */ lwc1 $f18, 0x30($v0) +/* 087330 7F052800 46123182 */ mul.s $f6, $f6, $f18 +/* 087334 7F052804 46065480 */ add.s $f18, $f10, $f6 +/* 087338 7F052808 C7AA0020 */ lwc1 $f10, 0x20($sp) +/* 08733C 7F05280C E7B20054 */ swc1 $f18, 0x54($sp) +/* 087340 7F052810 C4460030 */ lwc1 $f6, 0x30($v0) +/* 087344 7F052814 46065482 */ mul.s $f18, $f10, $f6 +/* 087348 7F052818 46128280 */ add.s $f10, $f16, $f18 +/* 08734C 7F05281C E7AA0058 */ swc1 $f10, 0x58($sp) +/* 087350 7F052820 C4460030 */ lwc1 $f6, 0x30($v0) +/* 087354 7F052824 46064402 */ mul.s $f16, $f8, $f6 +/* 087358 7F052828 46102480 */ add.s $f18, $f4, $f16 +/* 08735C 7F05282C 1000002A */ b .L7F0528D8 +/* 087360 7F052830 E7B2005C */ swc1 $f18, 0x5c($sp) +.L7F052834: +/* 087364 7F052834 8E0B0008 */ lw $t3, 8($s0) +/* 087368 7F052838 C7AA0038 */ lwc1 $f10, 0x38($sp) +/* 08736C 7F05283C C7A60038 */ lwc1 $f6, 0x38($sp) +/* 087370 7F052840 000B6080 */ sll $t4, $t3, 2 +/* 087374 7F052844 05830014 */ bgezl $t4, .L7F052898 +/* 087378 7F052848 C450002C */ lwc1 $f16, 0x2c($v0) +/* 08737C 7F05284C C4480030 */ lwc1 $f8, 0x30($v0) +/* 087380 7F052850 C7A40054 */ lwc1 $f4, 0x54($sp) +/* 087384 7F052854 C7B2003C */ lwc1 $f18, 0x3c($sp) +/* 087388 7F052858 46085182 */ mul.s $f6, $f10, $f8 +/* 08738C 7F05285C 46062400 */ add.s $f16, $f4, $f6 +/* 087390 7F052860 C7A40058 */ lwc1 $f4, 0x58($sp) +/* 087394 7F052864 E7B00054 */ swc1 $f16, 0x54($sp) +/* 087398 7F052868 C44A0030 */ lwc1 $f10, 0x30($v0) +/* 08739C 7F05286C C7B00040 */ lwc1 $f16, 0x40($sp) +/* 0873A0 7F052870 460A9202 */ mul.s $f8, $f18, $f10 +/* 0873A4 7F052874 46082180 */ add.s $f6, $f4, $f8 +/* 0873A8 7F052878 C7A4005C */ lwc1 $f4, 0x5c($sp) +/* 0873AC 7F05287C E7A60058 */ swc1 $f6, 0x58($sp) +/* 0873B0 7F052880 C4520030 */ lwc1 $f18, 0x30($v0) +/* 0873B4 7F052884 46128282 */ mul.s $f10, $f16, $f18 +/* 0873B8 7F052888 460A2200 */ add.s $f8, $f4, $f10 +/* 0873BC 7F05288C 10000012 */ b .L7F0528D8 +/* 0873C0 7F052890 E7A8005C */ swc1 $f8, 0x5c($sp) +/* 0873C4 7F052894 C450002C */ lwc1 $f16, 0x2c($v0) +.L7F052898: +/* 0873C8 7F052898 C7A40054 */ lwc1 $f4, 0x54($sp) +/* 0873CC 7F05289C C7A8003C */ lwc1 $f8, 0x3c($sp) +/* 0873D0 7F0528A0 46103482 */ mul.s $f18, $f6, $f16 +/* 0873D4 7F0528A4 46122280 */ add.s $f10, $f4, $f18 +/* 0873D8 7F0528A8 C7A40058 */ lwc1 $f4, 0x58($sp) +/* 0873DC 7F0528AC E7AA0054 */ swc1 $f10, 0x54($sp) +/* 0873E0 7F0528B0 C446002C */ lwc1 $f6, 0x2c($v0) +/* 0873E4 7F0528B4 C7AA0040 */ lwc1 $f10, 0x40($sp) +/* 0873E8 7F0528B8 46064402 */ mul.s $f16, $f8, $f6 +/* 0873EC 7F0528BC 46102480 */ add.s $f18, $f4, $f16 +/* 0873F0 7F0528C0 C7A4005C */ lwc1 $f4, 0x5c($sp) +/* 0873F4 7F0528C4 E7B20058 */ swc1 $f18, 0x58($sp) +/* 0873F8 7F0528C8 C448002C */ lwc1 $f8, 0x2c($v0) +/* 0873FC 7F0528CC 46085182 */ mul.s $f6, $f10, $f8 +/* 087400 7F0528D0 46062400 */ add.s $f16, $f4, $f6 +/* 087404 7F0528D4 E7B0005C */ swc1 $f16, 0x5c($sp) +.L7F0528D8: +/* 087408 7F0528D8 C6120058 */ lwc1 $f18, 0x58($s0) +/* 08740C 7F0528DC C7AA0054 */ lwc1 $f10, 0x54($sp) +/* 087410 7F0528E0 C7A60058 */ lwc1 $f6, 0x58($sp) +/* 087414 7F0528E4 26040018 */ addiu $a0, $s0, 0x18 +/* 087418 7F0528E8 460A9201 */ sub.s $f8, $f18, $f10 +/* 08741C 7F0528EC C7AA005C */ lwc1 $f10, 0x5c($sp) +/* 087420 7F0528F0 8FA500A4 */ lw $a1, 0xa4($sp) +/* 087424 7F0528F4 E7A80048 */ swc1 $f8, 0x48($sp) +/* 087428 7F0528F8 C604005C */ lwc1 $f4, 0x5c($s0) +/* 08742C 7F0528FC 46062401 */ sub.s $f16, $f4, $f6 +/* 087430 7F052900 E7B0004C */ swc1 $f16, 0x4c($sp) +/* 087434 7F052904 C6120060 */ lwc1 $f18, 0x60($s0) +/* 087438 7F052908 460A9201 */ sub.s $f8, $f18, $f10 +/* 08743C 7F05290C 0FC16008 */ jal sub_GAME_7F058020 +/* 087440 7F052910 E7A80050 */ swc1 $f8, 0x50($sp) +/* 087444 7F052914 27A40048 */ addiu $a0, $sp, 0x48 +/* 087448 7F052918 0FC16259 */ jal init_something_copy_posdata_to_it +/* 08744C 7F05291C 27A50060 */ addiu $a1, $sp, 0x60 +/* 087450 7F052920 27A40060 */ addiu $a0, $sp, 0x60 +/* 087454 7F052924 0FC1601A */ jal sub_GAME_7F058068 +/* 087458 7F052928 8FA500A4 */ lw $a1, 0xa4($sp) +/* 08745C 7F05292C 960D009A */ lhu $t5, 0x9a($s0) +/* 087460 7F052930 24010009 */ li $at, 9 +/* 087464 7F052934 55A1001D */ bnel $t5, $at, .L7F0529AC +/* 087468 7F052938 8E180008 */ lw $t8, 8($s0) +/* 08746C 7F05293C 8E0E0008 */ lw $t6, 8($s0) +/* 087470 7F052940 3C018005 */ lui $at, %hi(D_80053328) +/* 087474 7F052944 000E7880 */ sll $t7, $t6, 2 +/* 087478 7F052948 05E1000D */ bgez $t7, .L7F052980 +/* 08747C 7F05294C 00000000 */ nop +/* 087480 7F052950 3C018005 */ lui $at, %hi(D_80053324) +/* 087484 7F052954 C4203324 */ lwc1 $f0, %lo(D_80053324)($at) +/* 087488 7F052958 C60400B4 */ lwc1 $f4, 0xb4($s0) +/* 08748C 7F05295C 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 087490 7F052960 44818000 */ mtc1 $at, $f16 +/* 087494 7F052964 46002182 */ mul.s $f6, $f4, $f0 +/* 087498 7F052968 27A50060 */ addiu $a1, $sp, 0x60 +/* 08749C 7F05296C 46103483 */ div.s $f18, $f6, $f16 +/* 0874A0 7F052970 0FC161A2 */ jal sub_GAME_7F058688 +/* 0874A4 7F052974 46120301 */ sub.s $f12, $f0, $f18 +/* 0874A8 7F052978 10000025 */ b .L7F052A10 +/* 0874AC 7F05297C 27A40060 */ addiu $a0, $sp, 0x60 +.L7F052980: +/* 0874B0 7F052980 C4203328 */ lwc1 $f0, %lo(D_80053328)($at) +/* 0874B4 7F052984 C60A00B4 */ lwc1 $f10, 0xb4($s0) +/* 0874B8 7F052988 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 0874BC 7F05298C 44812000 */ mtc1 $at, $f4 +/* 0874C0 7F052990 46005202 */ mul.s $f8, $f10, $f0 +/* 0874C4 7F052994 27A50060 */ addiu $a1, $sp, 0x60 +/* 0874C8 7F052998 0FC161A2 */ jal sub_GAME_7F058688 +/* 0874CC 7F05299C 46044303 */ div.s $f12, $f8, $f4 +/* 0874D0 7F0529A0 1000001B */ b .L7F052A10 +/* 0874D4 7F0529A4 27A40060 */ addiu $a0, $sp, 0x60 +/* 0874D8 7F0529A8 8E180008 */ lw $t8, 8($s0) +.L7F0529AC: +/* 0874DC 7F0529AC 3C018005 */ lui $at, %hi(D_80053330) +/* 0874E0 7F0529B0 0018C880 */ sll $t9, $t8, 2 +/* 0874E4 7F0529B4 0721000D */ bgez $t9, .L7F0529EC +/* 0874E8 7F0529B8 00000000 */ nop +/* 0874EC 7F0529BC 3C018005 */ lui $at, %hi(D_8005332C) +/* 0874F0 7F0529C0 C420332C */ lwc1 $f0, %lo(D_8005332C)($at) +/* 0874F4 7F0529C4 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 0874F8 7F0529C8 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 0874FC 7F0529CC 44819000 */ mtc1 $at, $f18 +/* 087500 7F0529D0 46003402 */ mul.s $f16, $f6, $f0 +/* 087504 7F0529D4 27A50060 */ addiu $a1, $sp, 0x60 +/* 087508 7F0529D8 46128283 */ div.s $f10, $f16, $f18 +/* 08750C 7F0529DC 0FC1617F */ jal sub_GAME_7F0585FC +/* 087510 7F0529E0 460A0301 */ sub.s $f12, $f0, $f10 +/* 087514 7F0529E4 1000000A */ b .L7F052A10 +/* 087518 7F0529E8 27A40060 */ addiu $a0, $sp, 0x60 +.L7F0529EC: +/* 08751C 7F0529EC C4203330 */ lwc1 $f0, %lo(D_80053330)($at) +/* 087520 7F0529F0 C60800B4 */ lwc1 $f8, 0xb4($s0) +/* 087524 7F0529F4 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 087528 7F0529F8 44813000 */ mtc1 $at, $f6 +/* 08752C 7F0529FC 46004102 */ mul.s $f4, $f8, $f0 +/* 087530 7F052A00 27A50060 */ addiu $a1, $sp, 0x60 +/* 087534 7F052A04 0FC1617F */ jal sub_GAME_7F0585FC +/* 087538 7F052A08 46062303 */ div.s $f12, $f4, $f6 +/* 08753C 7F052A0C 27A40060 */ addiu $a0, $sp, 0x60 +.L7F052A10: +/* 087540 7F052A10 0FC1601A */ jal sub_GAME_7F058068 +/* 087544 7F052A14 8FA500A4 */ lw $a1, 0xa4($sp) +/* 087548 7F052A18 27A40054 */ addiu $a0, $sp, 0x54 +/* 08754C 7F052A1C 0FC16259 */ jal init_something_copy_posdata_to_it +/* 087550 7F052A20 27A50060 */ addiu $a1, $sp, 0x60 +/* 087554 7F052A24 27A40060 */ addiu $a0, $sp, 0x60 +/* 087558 7F052A28 0FC1601A */ jal sub_GAME_7F058068 +/* 08755C 7F052A2C 8FA500A4 */ lw $a1, 0xa4($sp) +/* 087560 7F052A30 10000027 */ b .L7F052AD0 +/* 087564 7F052A34 96080098 */ lhu $t0, 0x98($s0) +/* 087568 7F052A38 24010006 */ li $at, 6 +.L7F052A3C: +/* 08756C 7F052A3C 10410004 */ beq $v0, $at, .L7F052A50 +/* 087570 7F052A40 26040018 */ addiu $a0, $s0, 0x18 +/* 087574 7F052A44 24010007 */ li $at, 7 +/* 087578 7F052A48 54410009 */ bnel $v0, $at, .L7F052A70 +/* 08757C 7F052A4C C61000A8 */ lwc1 $f16, 0xa8($s0) +.L7F052A50: +/* 087580 7F052A50 0FC16008 */ jal sub_GAME_7F058020 +/* 087584 7F052A54 8FA500A4 */ lw $a1, 0xa4($sp) +/* 087588 7F052A58 26040058 */ addiu $a0, $s0, 0x58 +/* 08758C 7F052A5C 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 087590 7F052A60 8FA500A4 */ lw $a1, 0xa4($sp) +/* 087594 7F052A64 1000001A */ b .L7F052AD0 +/* 087598 7F052A68 96080098 */ lhu $t0, 0x98($s0) +/* 08759C 7F052A6C C61000A8 */ lwc1 $f16, 0xa8($s0) +.L7F052A70: +/* 0875A0 7F052A70 C61200B4 */ lwc1 $f18, 0xb4($s0) +/* 0875A4 7F052A74 C6080058 */ lwc1 $f8, 0x58($s0) +/* 0875A8 7F052A78 26040018 */ addiu $a0, $s0, 0x18 +/* 0875AC 7F052A7C 46128282 */ mul.s $f10, $f16, $f18 +/* 0875B0 7F052A80 8FA500A4 */ lw $a1, 0xa4($sp) +/* 0875B4 7F052A84 46085100 */ add.s $f4, $f10, $f8 +/* 0875B8 7F052A88 E7A4002C */ swc1 $f4, 0x2c($sp) +/* 0875BC 7F052A8C C61000B4 */ lwc1 $f16, 0xb4($s0) +/* 0875C0 7F052A90 C60600AC */ lwc1 $f6, 0xac($s0) +/* 0875C4 7F052A94 C60A005C */ lwc1 $f10, 0x5c($s0) +/* 0875C8 7F052A98 46103482 */ mul.s $f18, $f6, $f16 +/* 0875CC 7F052A9C 460A9200 */ add.s $f8, $f18, $f10 +/* 0875D0 7F052AA0 E7A80030 */ swc1 $f8, 0x30($sp) +/* 0875D4 7F052AA4 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 0875D8 7F052AA8 C60400B0 */ lwc1 $f4, 0xb0($s0) +/* 0875DC 7F052AAC C6120060 */ lwc1 $f18, 0x60($s0) +/* 0875E0 7F052AB0 46062402 */ mul.s $f16, $f4, $f6 +/* 0875E4 7F052AB4 46128280 */ add.s $f10, $f16, $f18 +/* 0875E8 7F052AB8 0FC16008 */ jal sub_GAME_7F058020 +/* 0875EC 7F052ABC E7AA0034 */ swc1 $f10, 0x34($sp) +/* 0875F0 7F052AC0 27A4002C */ addiu $a0, $sp, 0x2c +/* 0875F4 7F052AC4 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 +/* 0875F8 7F052AC8 8FA500A4 */ lw $a1, 0xa4($sp) +/* 0875FC 7F052ACC 96080098 */ lhu $t0, 0x98($s0) +.L7F052AD0: +/* 087600 7F052AD0 3C01BF80 */ li $at, 0xBF800000 # -1.000000 +/* 087604 7F052AD4 31090008 */ andi $t1, $t0, 8 +/* 087608 7F052AD8 51200005 */ beql $t1, $zero, .L7F052AF0 +/* 08760C 7F052ADC 8FBF001C */ lw $ra, 0x1c($sp) +/* 087610 7F052AE0 44816000 */ mtc1 $at, $f12 +/* 087614 7F052AE4 0FC16293 */ jal sub_GAME_7F058A4C +/* 087618 7F052AE8 8FA500A4 */ lw $a1, 0xa4($sp) +/* 08761C 7F052AEC 8FBF001C */ lw $ra, 0x1c($sp) +.L7F052AF0: +/* 087620 7F052AF0 8FB00018 */ lw $s0, 0x18($sp) +/* 087624 7F052AF4 27BD00A0 */ addiu $sp, $sp, 0xa0 +/* 087628 7F052AF8 03E00008 */ jr $ra +/* 08762C 7F052AFC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F052B00(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F052B00 +/* 087630 7F052B00 27BDFF90 */ addiu $sp, $sp, -0x70 +/* 087634 7F052B04 AFBF001C */ sw $ra, 0x1c($sp) +/* 087638 7F052B08 AFB00018 */ sw $s0, 0x18($sp) +/* 08763C 7F052B0C 8C8E0014 */ lw $t6, 0x14($a0) +/* 087640 7F052B10 248300D0 */ addiu $v1, $a0, 0xd0 +/* 087644 7F052B14 00808025 */ move $s0, $a0 +/* 087648 7F052B18 8DCF0008 */ lw $t7, 8($t6) +/* 08764C 7F052B1C 27A5002C */ addiu $a1, $sp, 0x2c +/* 087650 7F052B20 8DF80000 */ lw $t8, ($t7) +/* 087654 7F052B24 8F190014 */ lw $t9, 0x14($t8) +/* 087658 7F052B28 8F220004 */ lw $v0, 4($t9) +/* 08765C 7F052B2C 8C410000 */ lw $at, ($v0) +/* 087660 7F052B30 AC610000 */ sw $at, ($v1) +/* 087664 7F052B34 8C4A0004 */ lw $t2, 4($v0) +/* 087668 7F052B38 AC6A0004 */ sw $t2, 4($v1) +/* 08766C 7F052B3C 8C410008 */ lw $at, 8($v0) +/* 087670 7F052B40 AC610008 */ sw $at, 8($v1) +/* 087674 7F052B44 8C4A000C */ lw $t2, 0xc($v0) +/* 087678 7F052B48 AC6A000C */ sw $t2, 0xc($v1) +/* 08767C 7F052B4C 8C410010 */ lw $at, 0x10($v0) +/* 087680 7F052B50 AC610010 */ sw $at, 0x10($v1) +/* 087684 7F052B54 8C4A0014 */ lw $t2, 0x14($v0) +/* 087688 7F052B58 AC6A0014 */ sw $t2, 0x14($v1) +/* 08768C 7F052B5C 8C410018 */ lw $at, 0x18($v0) +/* 087690 7F052B60 AC610018 */ sw $at, 0x18($v1) +/* 087694 7F052B64 948B0098 */ lhu $t3, 0x98($a0) +/* 087698 7F052B68 316C0004 */ andi $t4, $t3, 4 +/* 08769C 7F052B6C 51800015 */ beql $t4, $zero, .L7F052BC4 +/* 0876A0 7F052B70 C61000B4 */ lwc1 $f16, 0xb4($s0) +/* 0876A4 7F052B74 948D009A */ lhu $t5, 0x9a($a0) +/* 0876A8 7F052B78 24010004 */ li $at, 4 +/* 0876AC 7F052B7C 55A1000A */ bnel $t5, $at, .L7F052BA8 +/* 0876B0 7F052B80 C4400004 */ lwc1 $f0, 4($v0) +/* 0876B4 7F052B84 C4400010 */ lwc1 $f0, 0x10($v0) +/* 0876B8 7F052B88 C444000C */ lwc1 $f4, 0xc($v0) +/* 0876BC 7F052B8C C48800B4 */ lwc1 $f8, 0xb4($a0) +/* 0876C0 7F052B90 46002181 */ sub.s $f6, $f4, $f0 +/* 0876C4 7F052B94 46083282 */ mul.s $f10, $f6, $f8 +/* 0876C8 7F052B98 460A0400 */ add.s $f16, $f0, $f10 +/* 0876CC 7F052B9C 10000008 */ b .L7F052BC0 +/* 0876D0 7F052BA0 E49000E0 */ swc1 $f16, 0xe0($a0) +/* 0876D4 7F052BA4 C4400004 */ lwc1 $f0, 4($v0) +.L7F052BA8: +/* 0876D8 7F052BA8 C4520008 */ lwc1 $f18, 8($v0) +/* 0876DC 7F052BAC C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 0876E0 7F052BB0 46009101 */ sub.s $f4, $f18, $f0 +/* 0876E4 7F052BB4 46062202 */ mul.s $f8, $f4, $f6 +/* 0876E8 7F052BB8 46080280 */ add.s $f10, $f0, $f8 +/* 0876EC 7F052BBC E60A00D4 */ swc1 $f10, 0xd4($s0) +.L7F052BC0: +/* 0876F0 7F052BC0 C61000B4 */ lwc1 $f16, 0xb4($s0) +.L7F052BC4: +/* 0876F4 7F052BC4 C6120088 */ lwc1 $f18, 0x88($s0) +/* 0876F8 7F052BC8 02002025 */ move $a0, $s0 +/* 0876FC 7F052BCC 4610903E */ c.le.s $f18, $f16 +/* 087700 7F052BD0 00000000 */ nop +/* 087704 7F052BD4 45000004 */ bc1f .L7F052BE8 +/* 087708 7F052BD8 00000000 */ nop +/* 08770C 7F052BDC 8E0E0068 */ lw $t6, 0x68($s0) +/* 087710 7F052BE0 10000065 */ b .L7F052D78 +/* 087714 7F052BE4 ADC00000 */ sw $zero, ($t6) +.L7F052BE8: +/* 087718 7F052BE8 0FC149BB */ jal sub_GAME_7F0526EC +/* 08771C 7F052BEC AFA30028 */ sw $v1, 0x28($sp) +/* 087720 7F052BF0 8E070068 */ lw $a3, 0x68($s0) +/* 087724 7F052BF4 8FA40028 */ lw $a0, 0x28($sp) +/* 087728 7F052BF8 27A5002C */ addiu $a1, $sp, 0x2c +/* 08772C 7F052BFC 0FC0FD50 */ jal sub_GAME_7F03F540 +/* 087730 7F052C00 24E60004 */ addiu $a2, $a3, 4 +/* 087734 7F052C04 9602009A */ lhu $v0, 0x9a($s0) +/* 087738 7F052C08 24010004 */ li $at, 4 +/* 08773C 7F052C0C 8FA40028 */ lw $a0, 0x28($sp) +/* 087740 7F052C10 54410009 */ bnel $v0, $at, .L7F052C38 +/* 087744 7F052C14 24010008 */ li $at, 8 +/* 087748 7F052C18 0FC0FA6F */ jal sub_GAME_7F03E9BC +/* 08774C 7F052C1C 27A5002C */ addiu $a1, $sp, 0x2c +/* 087750 7F052C20 C604005C */ lwc1 $f4, 0x5c($s0) +/* 087754 7F052C24 8E0F0068 */ lw $t7, 0x68($s0) +/* 087758 7F052C28 46040180 */ add.s $f6, $f0, $f4 +/* 08775C 7F052C2C 1000001B */ b .L7F052C9C +/* 087760 7F052C30 E5E60048 */ swc1 $f6, 0x48($t7) +/* 087764 7F052C34 24010008 */ li $at, 8 +.L7F052C38: +/* 087768 7F052C38 14410008 */ bne $v0, $at, .L7F052C5C +/* 08776C 7F052C3C 8FA40028 */ lw $a0, 0x28($sp) +/* 087770 7F052C40 3C018005 */ lui $at, %hi(D_80053334) +/* 087774 7F052C44 C42A3334 */ lwc1 $f10, %lo(D_80053334)($at) +/* 087778 7F052C48 C608005C */ lwc1 $f8, 0x5c($s0) +/* 08777C 7F052C4C 8E180068 */ lw $t8, 0x68($s0) +/* 087780 7F052C50 460A4401 */ sub.s $f16, $f8, $f10 +/* 087784 7F052C54 10000011 */ b .L7F052C9C +/* 087788 7F052C58 E7100048 */ swc1 $f16, 0x48($t8) +.L7F052C5C: +/* 08778C 7F052C5C 0FC0FA6F */ jal sub_GAME_7F03E9BC +/* 087790 7F052C60 27A5002C */ addiu $a1, $sp, 0x2c +/* 087794 7F052C64 C7B20060 */ lwc1 $f18, 0x60($sp) +/* 087798 7F052C68 8E190068 */ lw $t9, 0x68($s0) +/* 08779C 7F052C6C 46120100 */ add.s $f4, $f0, $f18 +/* 0877A0 7F052C70 E7240048 */ swc1 $f4, 0x48($t9) +/* 0877A4 7F052C74 96090098 */ lhu $t1, 0x98($s0) +/* 0877A8 7F052C78 31280001 */ andi $t0, $t1, 1 +/* 0877AC 7F052C7C 51000008 */ beql $t0, $zero, .L7F052CA0 +/* 0877B0 7F052C80 9602009A */ lhu $v0, 0x9a($s0) +/* 0877B4 7F052C84 8E070068 */ lw $a3, 0x68($s0) +/* 0877B8 7F052C88 3C01447A */ li $at, 0x447A0000 # 1000.000000 +/* 0877BC 7F052C8C 44814000 */ mtc1 $at, $f8 +/* 0877C0 7F052C90 C4E60048 */ lwc1 $f6, 0x48($a3) +/* 0877C4 7F052C94 46083281 */ sub.s $f10, $f6, $f8 +/* 0877C8 7F052C98 E4EA0048 */ swc1 $f10, 0x48($a3) +.L7F052C9C: +/* 0877CC 7F052C9C 9602009A */ lhu $v0, 0x9a($s0) +.L7F052CA0: +/* 0877D0 7F052CA0 24010006 */ li $at, 6 +/* 0877D4 7F052CA4 14410008 */ bne $v0, $at, .L7F052CC8 +/* 0877D8 7F052CA8 3C018005 */ lui $at, %hi(D_80053338) +/* 0877DC 7F052CAC C4303338 */ lwc1 $f16, %lo(D_80053338)($at) +/* 0877E0 7F052CB0 C6120084 */ lwc1 $f18, 0x84($s0) +/* 0877E4 7F052CB4 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 0877E8 7F052CB8 46128102 */ mul.s $f4, $f16, $f18 +/* 0877EC 7F052CBC 4606203C */ c.lt.s $f4, $f6 +/* 0877F0 7F052CC0 00000000 */ nop +/* 0877F4 7F052CC4 4501000B */ bc1t .L7F052CF4 +.L7F052CC8: +/* 0877F8 7F052CC8 24010007 */ li $at, 7 +/* 0877FC 7F052CCC 14410010 */ bne $v0, $at, .L7F052D10 +/* 087800 7F052CD0 3C018005 */ lui $at, %hi(D_8005333C) +/* 087804 7F052CD4 C428333C */ lwc1 $f8, %lo(D_8005333C)($at) +/* 087808 7F052CD8 C60A0084 */ lwc1 $f10, 0x84($s0) +/* 08780C 7F052CDC C61200B4 */ lwc1 $f18, 0xb4($s0) +/* 087810 7F052CE0 460A4402 */ mul.s $f16, $f8, $f10 +/* 087814 7F052CE4 4612803C */ c.lt.s $f16, $f18 +/* 087818 7F052CE8 00000000 */ nop +/* 08781C 7F052CEC 45020009 */ bc1fl .L7F052D14 +/* 087820 7F052CF0 24010008 */ li $at, 8 +.L7F052CF4: +/* 087824 7F052CF4 8E070068 */ lw $a3, 0x68($s0) +/* 087828 7F052CF8 3C014248 */ li $at, 0x42480000 # 50.000000 +/* 08782C 7F052CFC 44813000 */ mtc1 $at, $f6 +/* 087830 7F052D00 C4E40048 */ lwc1 $f4, 0x48($a3) +/* 087834 7F052D04 46062200 */ add.s $f8, $f4, $f6 +/* 087838 7F052D08 1000001B */ b .L7F052D78 +/* 08783C 7F052D0C E4E80044 */ swc1 $f8, 0x44($a3) +.L7F052D10: +/* 087840 7F052D10 24010008 */ li $at, 8 +.L7F052D14: +/* 087844 7F052D14 14410008 */ bne $v0, $at, .L7F052D38 +/* 087848 7F052D18 8FA40028 */ lw $a0, 0x28($sp) +/* 08784C 7F052D1C 3C01447A */ li $at, 0x447A0000 # 1000.000000 +/* 087850 7F052D20 44818000 */ mtc1 $at, $f16 +/* 087854 7F052D24 C60A005C */ lwc1 $f10, 0x5c($s0) +/* 087858 7F052D28 8E0A0068 */ lw $t2, 0x68($s0) +/* 08785C 7F052D2C 46105480 */ add.s $f18, $f10, $f16 +/* 087860 7F052D30 10000011 */ b .L7F052D78 +/* 087864 7F052D34 E5520044 */ swc1 $f18, 0x44($t2) +.L7F052D38: +/* 087868 7F052D38 0FC0FA97 */ jal sub_GAME_7F03EA5C +/* 08786C 7F052D3C 27A5002C */ addiu $a1, $sp, 0x2c +/* 087870 7F052D40 C7A40060 */ lwc1 $f4, 0x60($sp) +/* 087874 7F052D44 8E0B0068 */ lw $t3, 0x68($s0) +/* 087878 7F052D48 46040180 */ add.s $f6, $f0, $f4 +/* 08787C 7F052D4C E5660044 */ swc1 $f6, 0x44($t3) +/* 087880 7F052D50 960C0098 */ lhu $t4, 0x98($s0) +/* 087884 7F052D54 318D0001 */ andi $t5, $t4, 1 +/* 087888 7F052D58 51A00008 */ beql $t5, $zero, .L7F052D7C +/* 08788C 7F052D5C 8FBF001C */ lw $ra, 0x1c($sp) +/* 087890 7F052D60 8E070068 */ lw $a3, 0x68($s0) +/* 087894 7F052D64 3C01447A */ li $at, 0x447A0000 # 1000.000000 +/* 087898 7F052D68 44815000 */ mtc1 $at, $f10 +/* 08789C 7F052D6C C4E80044 */ lwc1 $f8, 0x44($a3) +/* 0878A0 7F052D70 460A4400 */ add.s $f16, $f8, $f10 +/* 0878A4 7F052D74 E4F00044 */ swc1 $f16, 0x44($a3) +.L7F052D78: +/* 0878A8 7F052D78 8FBF001C */ lw $ra, 0x1c($sp) +.L7F052D7C: +/* 0878AC 7F052D7C 8FB00018 */ lw $s0, 0x18($sp) +/* 0878B0 7F052D80 27BD0070 */ addiu $sp, $sp, 0x70 +/* 0878B4 7F052D84 03E00008 */ jr $ra +/* 0878B8 7F052D88 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F052D8C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F052D8C +/* 0878BC 7F052D8C 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 0878C0 7F052D90 AFBF003C */ sw $ra, 0x3c($sp) +/* 0878C4 7F052D94 AFBE0038 */ sw $fp, 0x38($sp) +/* 0878C8 7F052D98 AFB70034 */ sw $s7, 0x34($sp) +/* 0878CC 7F052D9C AFB60030 */ sw $s6, 0x30($sp) +/* 0878D0 7F052DA0 AFB5002C */ sw $s5, 0x2c($sp) +/* 0878D4 7F052DA4 AFB40028 */ sw $s4, 0x28($sp) +/* 0878D8 7F052DA8 AFB30024 */ sw $s3, 0x24($sp) +/* 0878DC 7F052DAC AFB20020 */ sw $s2, 0x20($sp) +/* 0878E0 7F052DB0 AFB1001C */ sw $s1, 0x1c($sp) +/* 0878E4 7F052DB4 AFB00018 */ sw $s0, 0x18($sp) +/* 0878E8 7F052DB8 948E0098 */ lhu $t6, 0x98($a0) +/* 0878EC 7F052DBC 0080B025 */ move $s6, $a0 +/* 0878F0 7F052DC0 31CF0004 */ andi $t7, $t6, 4 +/* 0878F4 7F052DC4 51E001E9 */ beql $t7, $zero, .L7F05356C +/* 0878F8 7F052DC8 8FBF003C */ lw $ra, 0x3c($sp) +/* 0878FC 7F052DCC 8C840014 */ lw $a0, 0x14($a0) +/* 087900 7F052DD0 8C980008 */ lw $t8, 8($a0) +/* 087904 7F052DD4 8F190000 */ lw $t9, ($t8) +/* 087908 7F052DD8 8F2E0014 */ lw $t6, 0x14($t9) +/* 08790C 7F052DDC 8DC50014 */ lw $a1, 0x14($t6) +/* 087910 7F052DE0 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 087914 7F052DE4 8CB50004 */ lw $s5, 4($a1) +/* 087918 7F052DE8 96CF009A */ lhu $t7, 0x9a($s6) +/* 08791C 7F052DEC 24140004 */ li $s4, 4 +/* 087920 7F052DF0 0040B825 */ move $s7, $v0 +/* 087924 7F052DF4 168F000B */ bne $s4, $t7, .L7F052E24 +/* 087928 7F052DF8 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 08792C 7F052DFC 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 087930 7F052E00 44813000 */ mtc1 $at, $f6 +/* 087934 7F052E04 C6C400E0 */ lwc1 $f4, 0xe0($s6) +/* 087938 7F052E08 46062200 */ add.s $f8, $f4, $f6 +/* 08793C 7F052E0C 4600428D */ trunc.w.s $f10, $f8 +/* 087940 7F052E10 440D5000 */ mfc1 $t5, $f10 +/* 087944 7F052E14 00000000 */ nop +/* 087948 7F052E18 000DCC00 */ sll $t9, $t5, 0x10 +/* 08794C 7F052E1C 1000000A */ b .L7F052E48 +/* 087950 7F052E20 00196C03 */ sra $t5, $t9, 0x10 +.L7F052E24: +/* 087954 7F052E24 C6D000D4 */ lwc1 $f16, 0xd4($s6) +/* 087958 7F052E28 44819000 */ mtc1 $at, $f18 +/* 08795C 7F052E2C 00000000 */ nop +/* 087960 7F052E30 46128100 */ add.s $f4, $f16, $f18 +/* 087964 7F052E34 4600218D */ trunc.w.s $f6, $f4 +/* 087968 7F052E38 440D3000 */ mfc1 $t5, $f6 +/* 08796C 7F052E3C 00000000 */ nop +/* 087970 7F052E40 000DC400 */ sll $t8, $t5, 0x10 +/* 087974 7F052E44 00186C03 */ sra $t5, $t8, 0x10 +.L7F052E48: +/* 087978 7F052E48 86A4000C */ lh $a0, 0xc($s5) +/* 08797C 7F052E4C 0FC2F5B1 */ jal sub_GAME_7F0BD6C4 +/* 087980 7F052E50 A7AD0042 */ sh $t5, 0x42($sp) +/* 087984 7F052E54 87AD0042 */ lh $t5, 0x42($sp) +/* 087988 7F052E58 AEE20000 */ sw $v0, ($s7) +/* 08798C 7F052E5C 86AE000C */ lh $t6, 0xc($s5) +/* 087990 7F052E60 00001825 */ move $v1, $zero +/* 087994 7F052E64 0000F025 */ move $fp, $zero +/* 087998 7F052E68 05C10003 */ bgez $t6, .L7F052E78 +/* 08799C 7F052E6C 000E7883 */ sra $t7, $t6, 2 +/* 0879A0 7F052E70 25C10003 */ addiu $at, $t6, 3 +/* 0879A4 7F052E74 00017883 */ sra $t7, $at, 2 +.L7F052E78: +/* 0879A8 7F052E78 19E001BB */ blez $t7, .L7F053568 +/* 0879AC 7F052E7C 00001825 */ move $v1, $zero +.L7F052E80: +/* 0879B0 7F052E80 001E9900 */ sll $s3, $fp, 4 +.L7F052E84: +/* 0879B4 7F052E84 8EF80000 */ lw $t8, ($s7) +/* 0879B8 7F052E88 24670002 */ addiu $a3, $v1, 2 +/* 0879BC 7F052E8C 246C0003 */ addiu $t4, $v1, 3 +/* 0879C0 7F052E90 03131021 */ addu $v0, $t8, $s3 +/* 0879C4 7F052E94 24720001 */ addiu $s2, $v1, 1 +/* 0879C8 7F052E98 00032100 */ sll $a0, $v1, 4 +/* 0879CC 7F052E9C 00445821 */ addu $t3, $v0, $a0 +/* 0879D0 7F052EA0 06410004 */ bgez $s2, .L7F052EB4 +/* 0879D4 7F052EA4 32450003 */ andi $a1, $s2, 3 +/* 0879D8 7F052EA8 10A00002 */ beqz $a1, .L7F052EB4 +/* 0879DC 7F052EAC 00000000 */ nop +/* 0879E0 7F052EB0 24A5FFFC */ addiu $a1, $a1, -4 +.L7F052EB4: +/* 0879E4 7F052EB4 0005C900 */ sll $t9, $a1, 4 +/* 0879E8 7F052EB8 03202825 */ move $a1, $t9 +/* 0879EC 7F052EBC 0059F821 */ addu $ra, $v0, $t9 +/* 0879F0 7F052EC0 04E10004 */ bgez $a3, .L7F052ED4 +/* 0879F4 7F052EC4 30EE0003 */ andi $t6, $a3, 3 +/* 0879F8 7F052EC8 11C00002 */ beqz $t6, .L7F052ED4 +/* 0879FC 7F052ECC 00000000 */ nop +/* 087A00 7F052ED0 25CEFFFC */ addiu $t6, $t6, -4 +.L7F052ED4: +/* 087A04 7F052ED4 000E7900 */ sll $t7, $t6, 4 +/* 087A08 7F052ED8 8EAE0008 */ lw $t6, 8($s5) +/* 087A0C 7F052EDC 01E03825 */ move $a3, $t7 +/* 087A10 7F052EE0 004F8021 */ addu $s0, $v0, $t7 +/* 087A14 7F052EE4 01D34821 */ addu $t1, $t6, $s3 +/* 087A18 7F052EE8 05810004 */ bgez $t4, .L7F052EFC +/* 087A1C 7F052EEC 31980003 */ andi $t8, $t4, 3 +/* 087A20 7F052EF0 13000002 */ beqz $t8, .L7F052EFC +/* 087A24 7F052EF4 00000000 */ nop +/* 087A28 7F052EF8 2718FFFC */ addiu $t8, $t8, -4 +.L7F052EFC: +/* 087A2C 7F052EFC 00186100 */ sll $t4, $t8, 4 +/* 087A30 7F052F00 01275021 */ addu $t2, $t1, $a3 +/* 087A34 7F052F04 004C8821 */ addu $s1, $v0, $t4 +/* 087A38 7F052F08 01243021 */ addu $a2, $t1, $a0 +/* 087A3C 7F052F0C 01254021 */ addu $t0, $t1, $a1 +/* 087A40 7F052F10 14600021 */ bnez $v1, .L7F052F98 +/* 087A44 7F052F14 012C3821 */ addu $a3, $t1, $t4 +/* 087A48 7F052F18 8CC10000 */ lw $at, ($a2) +/* 087A4C 7F052F1C AD610000 */ sw $at, ($t3) +/* 087A50 7F052F20 8CD80004 */ lw $t8, 4($a2) +/* 087A54 7F052F24 AD780004 */ sw $t8, 4($t3) +/* 087A58 7F052F28 8CC10008 */ lw $at, 8($a2) +/* 087A5C 7F052F2C AD610008 */ sw $at, 8($t3) +/* 087A60 7F052F30 8CD8000C */ lw $t8, 0xc($a2) +/* 087A64 7F052F34 AD78000C */ sw $t8, 0xc($t3) +/* 087A68 7F052F38 8D010000 */ lw $at, ($t0) +/* 087A6C 7F052F3C AFE10000 */ sw $at, ($ra) +/* 087A70 7F052F40 8D0E0004 */ lw $t6, 4($t0) +/* 087A74 7F052F44 AFEE0004 */ sw $t6, 4($ra) +/* 087A78 7F052F48 8D010008 */ lw $at, 8($t0) +/* 087A7C 7F052F4C AFE10008 */ sw $at, 8($ra) +/* 087A80 7F052F50 8D0E000C */ lw $t6, 0xc($t0) +/* 087A84 7F052F54 AFEE000C */ sw $t6, 0xc($ra) +/* 087A88 7F052F58 8D410000 */ lw $at, ($t2) +/* 087A8C 7F052F5C AE010000 */ sw $at, ($s0) +/* 087A90 7F052F60 8D580004 */ lw $t8, 4($t2) +/* 087A94 7F052F64 AE180004 */ sw $t8, 4($s0) +/* 087A98 7F052F68 8D410008 */ lw $at, 8($t2) +/* 087A9C 7F052F6C AE010008 */ sw $at, 8($s0) +/* 087AA0 7F052F70 8D58000C */ lw $t8, 0xc($t2) +/* 087AA4 7F052F74 AE18000C */ sw $t8, 0xc($s0) +/* 087AA8 7F052F78 8CE10000 */ lw $at, ($a3) +/* 087AAC 7F052F7C AE210000 */ sw $at, ($s1) +/* 087AB0 7F052F80 8CEE0004 */ lw $t6, 4($a3) +/* 087AB4 7F052F84 AE2E0004 */ sw $t6, 4($s1) +/* 087AB8 7F052F88 8CE10008 */ lw $at, 8($a3) +/* 087ABC 7F052F8C AE210008 */ sw $at, 8($s1) +/* 087AC0 7F052F90 8CEE000C */ lw $t6, 0xc($a3) +/* 087AC4 7F052F94 AE2E000C */ sw $t6, 0xc($s1) +.L7F052F98: +/* 087AC8 7F052F98 96CF009A */ lhu $t7, 0x9a($s6) +/* 087ACC 7F052F9C 568F00B5 */ bnel $s4, $t7, .L7F053274 +/* 087AD0 7F052FA0 84C50000 */ lh $a1, ($a2) +/* 087AD4 7F052FA4 84C40002 */ lh $a0, 2($a2) +/* 087AD8 7F052FA8 008D082A */ slt $at, $a0, $t5 +/* 087ADC 7F052FAC 14200162 */ bnez $at, .L7F053538 +/* 087AE0 7F052FB0 00000000 */ nop +/* 087AE4 7F052FB4 84C50000 */ lh $a1, ($a2) +/* 087AE8 7F052FB8 85180000 */ lh $t8, ($t0) +/* 087AEC 7F052FBC 57050039 */ bnel $t8, $a1, .L7F0530A4 +/* 087AF0 7F052FC0 85590000 */ lh $t9, ($t2) +/* 087AF4 7F052FC4 85190004 */ lh $t9, 4($t0) +/* 087AF8 7F052FC8 84CE0004 */ lh $t6, 4($a2) +/* 087AFC 7F052FCC 572E0035 */ bnel $t9, $t6, .L7F0530A4 +/* 087B00 7F052FD0 85590000 */ lh $t9, ($t2) +/* 087B04 7F052FD4 85090002 */ lh $t1, 2($t0) +/* 087B08 7F052FD8 51240032 */ beql $t1, $a0, .L7F0530A4 +/* 087B0C 7F052FDC 85590000 */ lh $t9, ($t2) +/* 087B10 7F052FE0 84C20008 */ lh $v0, 8($a2) +/* 087B14 7F052FE4 85180008 */ lh $t8, 8($t0) +/* 087B18 7F052FE8 008D7823 */ subu $t7, $a0, $t5 +/* 087B1C 7F052FEC 0302C823 */ subu $t9, $t8, $v0 +/* 087B20 7F052FF0 01F90019 */ multu $t7, $t9 +/* 087B24 7F052FF4 0089C023 */ subu $t8, $a0, $t1 +/* 087B28 7F052FF8 00007012 */ mflo $t6 +/* 087B2C 7F052FFC 00000000 */ nop +/* 087B30 7F053000 00000000 */ nop +/* 087B34 7F053004 01D8001A */ div $zero, $t6, $t8 +/* 087B38 7F053008 00007812 */ mflo $t7 +/* 087B3C 7F05300C 01E2C821 */ addu $t9, $t7, $v0 +/* 087B40 7F053010 A5790008 */ sh $t9, 8($t3) +/* 087B44 7F053014 17000002 */ bnez $t8, .L7F053020 +/* 087B48 7F053018 00000000 */ nop +/* 087B4C 7F05301C 0007000D */ break 7 +.L7F053020: +/* 087B50 7F053020 2401FFFF */ li $at, -1 +/* 087B54 7F053024 17010004 */ bne $t8, $at, .L7F053038 +/* 087B58 7F053028 3C018000 */ lui $at, 0x8000 +/* 087B5C 7F05302C 15C10002 */ bne $t6, $at, .L7F053038 +/* 087B60 7F053030 00000000 */ nop +/* 087B64 7F053034 0006000D */ break 6 +.L7F053038: +/* 087B68 7F053038 8518000A */ lh $t8, 0xa($t0) +/* 087B6C 7F05303C 84C3000A */ lh $v1, 0xa($a2) +/* 087B70 7F053040 84C40002 */ lh $a0, 2($a2) +/* 087B74 7F053044 03037823 */ subu $t7, $t8, $v1 +/* 087B78 7F053048 008D7023 */ subu $t6, $a0, $t5 +/* 087B7C 7F05304C 01CF0019 */ multu $t6, $t7 +/* 087B80 7F053050 85180002 */ lh $t8, 2($t0) +/* 087B84 7F053054 00987023 */ subu $t6, $a0, $t8 +/* 087B88 7F053058 0000C812 */ mflo $t9 +/* 087B8C 7F05305C 00000000 */ nop +/* 087B90 7F053060 00000000 */ nop +/* 087B94 7F053064 032E001A */ div $zero, $t9, $t6 +/* 087B98 7F053068 00007812 */ mflo $t7 +/* 087B9C 7F05306C 01E3C021 */ addu $t8, $t7, $v1 +/* 087BA0 7F053070 15C00002 */ bnez $t6, .L7F05307C +/* 087BA4 7F053074 00000000 */ nop +/* 087BA8 7F053078 0007000D */ break 7 +.L7F05307C: +/* 087BAC 7F05307C 2401FFFF */ li $at, -1 +/* 087BB0 7F053080 15C10004 */ bne $t6, $at, .L7F053094 +/* 087BB4 7F053084 3C018000 */ lui $at, 0x8000 +/* 087BB8 7F053088 17210002 */ bne $t9, $at, .L7F053094 +/* 087BBC 7F05308C 00000000 */ nop +/* 087BC0 7F053090 0006000D */ break 6 +.L7F053094: +/* 087BC4 7F053094 A578000A */ sh $t8, 0xa($t3) +/* 087BC8 7F053098 10000073 */ b .L7F053268 +/* 087BCC 7F05309C 00000000 */ nop +/* 087BD0 7F0530A0 85590000 */ lh $t9, ($t2) +.L7F0530A4: +/* 087BD4 7F0530A4 57250039 */ bnel $t9, $a1, .L7F05318C +/* 087BD8 7F0530A8 84EE0000 */ lh $t6, ($a3) +/* 087BDC 7F0530AC 854E0004 */ lh $t6, 4($t2) +/* 087BE0 7F0530B0 84CF0004 */ lh $t7, 4($a2) +/* 087BE4 7F0530B4 55CF0035 */ bnel $t6, $t7, .L7F05318C +/* 087BE8 7F0530B8 84EE0000 */ lh $t6, ($a3) +/* 087BEC 7F0530BC 85480002 */ lh $t0, 2($t2) +/* 087BF0 7F0530C0 51040032 */ beql $t0, $a0, .L7F05318C +/* 087BF4 7F0530C4 84EE0000 */ lh $t6, ($a3) +/* 087BF8 7F0530C8 84C20008 */ lh $v0, 8($a2) +/* 087BFC 7F0530CC 85590008 */ lh $t9, 8($t2) +/* 087C00 7F0530D0 008DC023 */ subu $t8, $a0, $t5 +/* 087C04 7F0530D4 03227023 */ subu $t6, $t9, $v0 +/* 087C08 7F0530D8 030E0019 */ multu $t8, $t6 +/* 087C0C 7F0530DC 0088C823 */ subu $t9, $a0, $t0 +/* 087C10 7F0530E0 00007812 */ mflo $t7 +/* 087C14 7F0530E4 00000000 */ nop +/* 087C18 7F0530E8 00000000 */ nop +/* 087C1C 7F0530EC 01F9001A */ div $zero, $t7, $t9 +/* 087C20 7F0530F0 0000C012 */ mflo $t8 +/* 087C24 7F0530F4 03027021 */ addu $t6, $t8, $v0 +/* 087C28 7F0530F8 A56E0008 */ sh $t6, 8($t3) +/* 087C2C 7F0530FC 17200002 */ bnez $t9, .L7F053108 +/* 087C30 7F053100 00000000 */ nop +/* 087C34 7F053104 0007000D */ break 7 +.L7F053108: +/* 087C38 7F053108 2401FFFF */ li $at, -1 +/* 087C3C 7F05310C 17210004 */ bne $t9, $at, .L7F053120 +/* 087C40 7F053110 3C018000 */ lui $at, 0x8000 +/* 087C44 7F053114 15E10002 */ bne $t7, $at, .L7F053120 +/* 087C48 7F053118 00000000 */ nop +/* 087C4C 7F05311C 0006000D */ break 6 +.L7F053120: +/* 087C50 7F053120 8559000A */ lh $t9, 0xa($t2) +/* 087C54 7F053124 84C3000A */ lh $v1, 0xa($a2) +/* 087C58 7F053128 84C40002 */ lh $a0, 2($a2) +/* 087C5C 7F05312C 0323C023 */ subu $t8, $t9, $v1 +/* 087C60 7F053130 008D7823 */ subu $t7, $a0, $t5 +/* 087C64 7F053134 01F80019 */ multu $t7, $t8 +/* 087C68 7F053138 85590002 */ lh $t9, 2($t2) +/* 087C6C 7F05313C 00997823 */ subu $t7, $a0, $t9 +/* 087C70 7F053140 00007012 */ mflo $t6 +/* 087C74 7F053144 00000000 */ nop +/* 087C78 7F053148 00000000 */ nop +/* 087C7C 7F05314C 01CF001A */ div $zero, $t6, $t7 +/* 087C80 7F053150 0000C012 */ mflo $t8 +/* 087C84 7F053154 0303C821 */ addu $t9, $t8, $v1 +/* 087C88 7F053158 15E00002 */ bnez $t7, .L7F053164 +/* 087C8C 7F05315C 00000000 */ nop +/* 087C90 7F053160 0007000D */ break 7 +.L7F053164: +/* 087C94 7F053164 2401FFFF */ li $at, -1 +/* 087C98 7F053168 15E10004 */ bne $t7, $at, .L7F05317C +/* 087C9C 7F05316C 3C018000 */ lui $at, 0x8000 +/* 087CA0 7F053170 15C10002 */ bne $t6, $at, .L7F05317C +/* 087CA4 7F053174 00000000 */ nop +/* 087CA8 7F053178 0006000D */ break 6 +.L7F05317C: +/* 087CAC 7F05317C A579000A */ sh $t9, 0xa($t3) +/* 087CB0 7F053180 10000039 */ b .L7F053268 +/* 087CB4 7F053184 00000000 */ nop +/* 087CB8 7F053188 84EE0000 */ lh $t6, ($a3) +.L7F05318C: +/* 087CBC 7F05318C 15C50036 */ bne $t6, $a1, .L7F053268 +/* 087CC0 7F053190 00000000 */ nop +/* 087CC4 7F053194 84EF0004 */ lh $t7, 4($a3) +/* 087CC8 7F053198 84D80004 */ lh $t8, 4($a2) +/* 087CCC 7F05319C 15F80032 */ bne $t7, $t8, .L7F053268 +/* 087CD0 7F0531A0 00000000 */ nop +/* 087CD4 7F0531A4 84E50002 */ lh $a1, 2($a3) +/* 087CD8 7F0531A8 10A4002F */ beq $a1, $a0, .L7F053268 +/* 087CDC 7F0531AC 00000000 */ nop +/* 087CE0 7F0531B0 84C20008 */ lh $v0, 8($a2) +/* 087CE4 7F0531B4 84EE0008 */ lh $t6, 8($a3) +/* 087CE8 7F0531B8 008DC823 */ subu $t9, $a0, $t5 +/* 087CEC 7F0531BC 01C27823 */ subu $t7, $t6, $v0 +/* 087CF0 7F0531C0 032F0019 */ multu $t9, $t7 +/* 087CF4 7F0531C4 00857023 */ subu $t6, $a0, $a1 +/* 087CF8 7F0531C8 0000C012 */ mflo $t8 +/* 087CFC 7F0531CC 00000000 */ nop +/* 087D00 7F0531D0 00000000 */ nop +/* 087D04 7F0531D4 030E001A */ div $zero, $t8, $t6 +/* 087D08 7F0531D8 0000C812 */ mflo $t9 +/* 087D0C 7F0531DC 03227821 */ addu $t7, $t9, $v0 +/* 087D10 7F0531E0 A56F0008 */ sh $t7, 8($t3) +/* 087D14 7F0531E4 15C00002 */ bnez $t6, .L7F0531F0 +/* 087D18 7F0531E8 00000000 */ nop +/* 087D1C 7F0531EC 0007000D */ break 7 +.L7F0531F0: +/* 087D20 7F0531F0 2401FFFF */ li $at, -1 +/* 087D24 7F0531F4 15C10004 */ bne $t6, $at, .L7F053208 +/* 087D28 7F0531F8 3C018000 */ lui $at, 0x8000 +/* 087D2C 7F0531FC 17010002 */ bne $t8, $at, .L7F053208 +/* 087D30 7F053200 00000000 */ nop +/* 087D34 7F053204 0006000D */ break 6 +.L7F053208: +/* 087D38 7F053208 84EE000A */ lh $t6, 0xa($a3) +/* 087D3C 7F05320C 84C3000A */ lh $v1, 0xa($a2) +/* 087D40 7F053210 84C40002 */ lh $a0, 2($a2) +/* 087D44 7F053214 01C3C823 */ subu $t9, $t6, $v1 +/* 087D48 7F053218 008DC023 */ subu $t8, $a0, $t5 +/* 087D4C 7F05321C 03190019 */ multu $t8, $t9 +/* 087D50 7F053220 84EE0002 */ lh $t6, 2($a3) +/* 087D54 7F053224 008EC023 */ subu $t8, $a0, $t6 +/* 087D58 7F053228 00007812 */ mflo $t7 +/* 087D5C 7F05322C 00000000 */ nop +/* 087D60 7F053230 00000000 */ nop +/* 087D64 7F053234 01F8001A */ div $zero, $t7, $t8 +/* 087D68 7F053238 0000C812 */ mflo $t9 +/* 087D6C 7F05323C 03237021 */ addu $t6, $t9, $v1 +/* 087D70 7F053240 A56E000A */ sh $t6, 0xa($t3) +/* 087D74 7F053244 17000002 */ bnez $t8, .L7F053250 +/* 087D78 7F053248 00000000 */ nop +/* 087D7C 7F05324C 0007000D */ break 7 +.L7F053250: +/* 087D80 7F053250 2401FFFF */ li $at, -1 +/* 087D84 7F053254 17010004 */ bne $t8, $at, .L7F053268 +/* 087D88 7F053258 3C018000 */ lui $at, 0x8000 +/* 087D8C 7F05325C 15E10002 */ bne $t7, $at, .L7F053268 +/* 087D90 7F053260 00000000 */ nop +/* 087D94 7F053264 0006000D */ break 6 +.L7F053268: +/* 087D98 7F053268 100000B3 */ b .L7F053538 +/* 087D9C 7F05326C A56D0002 */ sh $t5, 2($t3) +/* 087DA0 7F053270 84C50000 */ lh $a1, ($a2) +.L7F053274: +/* 087DA4 7F053274 01A5082A */ slt $at, $t5, $a1 +/* 087DA8 7F053278 142000AF */ bnez $at, .L7F053538 +/* 087DAC 7F05327C 00000000 */ nop +/* 087DB0 7F053280 84C40002 */ lh $a0, 2($a2) +/* 087DB4 7F053284 850F0002 */ lh $t7, 2($t0) +/* 087DB8 7F053288 55E40039 */ bnel $t7, $a0, .L7F053370 +/* 087DBC 7F05328C 85580002 */ lh $t8, 2($t2) +/* 087DC0 7F053290 85180004 */ lh $t8, 4($t0) +/* 087DC4 7F053294 84D90004 */ lh $t9, 4($a2) +/* 087DC8 7F053298 57190035 */ bnel $t8, $t9, .L7F053370 +/* 087DCC 7F05329C 85580002 */ lh $t8, 2($t2) +/* 087DD0 7F0532A0 85090000 */ lh $t1, ($t0) +/* 087DD4 7F0532A4 51250032 */ beql $t1, $a1, .L7F053370 +/* 087DD8 7F0532A8 85580002 */ lh $t8, 2($t2) +/* 087DDC 7F0532AC 84C20008 */ lh $v0, 8($a2) +/* 087DE0 7F0532B0 850F0008 */ lh $t7, 8($t0) +/* 087DE4 7F0532B4 01A57023 */ subu $t6, $t5, $a1 +/* 087DE8 7F0532B8 01E2C023 */ subu $t8, $t7, $v0 +/* 087DEC 7F0532BC 01D80019 */ multu $t6, $t8 +/* 087DF0 7F0532C0 01257823 */ subu $t7, $t1, $a1 +/* 087DF4 7F0532C4 0000C812 */ mflo $t9 +/* 087DF8 7F0532C8 00000000 */ nop +/* 087DFC 7F0532CC 00000000 */ nop +/* 087E00 7F0532D0 032F001A */ div $zero, $t9, $t7 +/* 087E04 7F0532D4 00007012 */ mflo $t6 +/* 087E08 7F0532D8 01C2C021 */ addu $t8, $t6, $v0 +/* 087E0C 7F0532DC A5780008 */ sh $t8, 8($t3) +/* 087E10 7F0532E0 15E00002 */ bnez $t7, .L7F0532EC +/* 087E14 7F0532E4 00000000 */ nop +/* 087E18 7F0532E8 0007000D */ break 7 +.L7F0532EC: +/* 087E1C 7F0532EC 2401FFFF */ li $at, -1 +/* 087E20 7F0532F0 15E10004 */ bne $t7, $at, .L7F053304 +/* 087E24 7F0532F4 3C018000 */ lui $at, 0x8000 +/* 087E28 7F0532F8 17210002 */ bne $t9, $at, .L7F053304 +/* 087E2C 7F0532FC 00000000 */ nop +/* 087E30 7F053300 0006000D */ break 6 +.L7F053304: +/* 087E34 7F053304 850F000A */ lh $t7, 0xa($t0) +/* 087E38 7F053308 84C3000A */ lh $v1, 0xa($a2) +/* 087E3C 7F05330C 84C50000 */ lh $a1, ($a2) +/* 087E40 7F053310 01E37023 */ subu $t6, $t7, $v1 +/* 087E44 7F053314 01A5C823 */ subu $t9, $t5, $a1 +/* 087E48 7F053318 032E0019 */ multu $t9, $t6 +/* 087E4C 7F05331C 850F0000 */ lh $t7, ($t0) +/* 087E50 7F053320 01E5C823 */ subu $t9, $t7, $a1 +/* 087E54 7F053324 0000C012 */ mflo $t8 +/* 087E58 7F053328 00000000 */ nop +/* 087E5C 7F05332C 00000000 */ nop +/* 087E60 7F053330 0319001A */ div $zero, $t8, $t9 +/* 087E64 7F053334 00007012 */ mflo $t6 +/* 087E68 7F053338 01C37821 */ addu $t7, $t6, $v1 +/* 087E6C 7F05333C 17200002 */ bnez $t9, .L7F053348 +/* 087E70 7F053340 00000000 */ nop +/* 087E74 7F053344 0007000D */ break 7 +.L7F053348: +/* 087E78 7F053348 2401FFFF */ li $at, -1 +/* 087E7C 7F05334C 17210004 */ bne $t9, $at, .L7F053360 +/* 087E80 7F053350 3C018000 */ lui $at, 0x8000 +/* 087E84 7F053354 17010002 */ bne $t8, $at, .L7F053360 +/* 087E88 7F053358 00000000 */ nop +/* 087E8C 7F05335C 0006000D */ break 6 +.L7F053360: +/* 087E90 7F053360 A56F000A */ sh $t7, 0xa($t3) +/* 087E94 7F053364 10000074 */ b .L7F053538 +/* 087E98 7F053368 A56D0000 */ sh $t5, ($t3) +/* 087E9C 7F05336C 85580002 */ lh $t8, 2($t2) +.L7F053370: +/* 087EA0 7F053370 57040039 */ bnel $t8, $a0, .L7F053458 +/* 087EA4 7F053374 84F90002 */ lh $t9, 2($a3) +/* 087EA8 7F053378 85590004 */ lh $t9, 4($t2) +/* 087EAC 7F05337C 84CE0004 */ lh $t6, 4($a2) +/* 087EB0 7F053380 572E0035 */ bnel $t9, $t6, .L7F053458 +/* 087EB4 7F053384 84F90002 */ lh $t9, 2($a3) +/* 087EB8 7F053388 85480000 */ lh $t0, ($t2) +/* 087EBC 7F05338C 51050032 */ beql $t0, $a1, .L7F053458 +/* 087EC0 7F053390 84F90002 */ lh $t9, 2($a3) +/* 087EC4 7F053394 84C20008 */ lh $v0, 8($a2) +/* 087EC8 7F053398 85580008 */ lh $t8, 8($t2) +/* 087ECC 7F05339C 01A57823 */ subu $t7, $t5, $a1 +/* 087ED0 7F0533A0 0302C823 */ subu $t9, $t8, $v0 +/* 087ED4 7F0533A4 01F90019 */ multu $t7, $t9 +/* 087ED8 7F0533A8 0105C023 */ subu $t8, $t0, $a1 +/* 087EDC 7F0533AC 00007012 */ mflo $t6 +/* 087EE0 7F0533B0 00000000 */ nop +/* 087EE4 7F0533B4 00000000 */ nop +/* 087EE8 7F0533B8 01D8001A */ div $zero, $t6, $t8 +/* 087EEC 7F0533BC 00007812 */ mflo $t7 +/* 087EF0 7F0533C0 01E2C821 */ addu $t9, $t7, $v0 +/* 087EF4 7F0533C4 A5790008 */ sh $t9, 8($t3) +/* 087EF8 7F0533C8 17000002 */ bnez $t8, .L7F0533D4 +/* 087EFC 7F0533CC 00000000 */ nop +/* 087F00 7F0533D0 0007000D */ break 7 +.L7F0533D4: +/* 087F04 7F0533D4 2401FFFF */ li $at, -1 +/* 087F08 7F0533D8 17010004 */ bne $t8, $at, .L7F0533EC +/* 087F0C 7F0533DC 3C018000 */ lui $at, 0x8000 +/* 087F10 7F0533E0 15C10002 */ bne $t6, $at, .L7F0533EC +/* 087F14 7F0533E4 00000000 */ nop +/* 087F18 7F0533E8 0006000D */ break 6 +.L7F0533EC: +/* 087F1C 7F0533EC 8558000A */ lh $t8, 0xa($t2) +/* 087F20 7F0533F0 84C3000A */ lh $v1, 0xa($a2) +/* 087F24 7F0533F4 84C50000 */ lh $a1, ($a2) +/* 087F28 7F0533F8 03037823 */ subu $t7, $t8, $v1 +/* 087F2C 7F0533FC 01A57023 */ subu $t6, $t5, $a1 +/* 087F30 7F053400 01CF0019 */ multu $t6, $t7 +/* 087F34 7F053404 85580000 */ lh $t8, ($t2) +/* 087F38 7F053408 03057023 */ subu $t6, $t8, $a1 +/* 087F3C 7F05340C 0000C812 */ mflo $t9 +/* 087F40 7F053410 00000000 */ nop +/* 087F44 7F053414 00000000 */ nop +/* 087F48 7F053418 032E001A */ div $zero, $t9, $t6 +/* 087F4C 7F05341C 00007812 */ mflo $t7 +/* 087F50 7F053420 01E3C021 */ addu $t8, $t7, $v1 +/* 087F54 7F053424 15C00002 */ bnez $t6, .L7F053430 +/* 087F58 7F053428 00000000 */ nop +/* 087F5C 7F05342C 0007000D */ break 7 +.L7F053430: +/* 087F60 7F053430 2401FFFF */ li $at, -1 +/* 087F64 7F053434 15C10004 */ bne $t6, $at, .L7F053448 +/* 087F68 7F053438 3C018000 */ lui $at, 0x8000 +/* 087F6C 7F05343C 17210002 */ bne $t9, $at, .L7F053448 +/* 087F70 7F053440 00000000 */ nop +/* 087F74 7F053444 0006000D */ break 6 +.L7F053448: +/* 087F78 7F053448 A578000A */ sh $t8, 0xa($t3) +/* 087F7C 7F05344C 1000003A */ b .L7F053538 +/* 087F80 7F053450 A56D0000 */ sh $t5, ($t3) +/* 087F84 7F053454 84F90002 */ lh $t9, 2($a3) +.L7F053458: +/* 087F88 7F053458 57240037 */ bnel $t9, $a0, .L7F053538 +/* 087F8C 7F05345C A56D0000 */ sh $t5, ($t3) +/* 087F90 7F053460 84EE0004 */ lh $t6, 4($a3) +/* 087F94 7F053464 84CF0004 */ lh $t7, 4($a2) +/* 087F98 7F053468 55CF0033 */ bnel $t6, $t7, .L7F053538 +/* 087F9C 7F05346C A56D0000 */ sh $t5, ($t3) +/* 087FA0 7F053470 84E40000 */ lh $a0, ($a3) +/* 087FA4 7F053474 50850030 */ beql $a0, $a1, .L7F053538 +/* 087FA8 7F053478 A56D0000 */ sh $t5, ($t3) +/* 087FAC 7F05347C 84C20008 */ lh $v0, 8($a2) +/* 087FB0 7F053480 84F90008 */ lh $t9, 8($a3) +/* 087FB4 7F053484 01A5C023 */ subu $t8, $t5, $a1 +/* 087FB8 7F053488 03227023 */ subu $t6, $t9, $v0 +/* 087FBC 7F05348C 030E0019 */ multu $t8, $t6 +/* 087FC0 7F053490 0085C823 */ subu $t9, $a0, $a1 +/* 087FC4 7F053494 00007812 */ mflo $t7 +/* 087FC8 7F053498 00000000 */ nop +/* 087FCC 7F05349C 00000000 */ nop +/* 087FD0 7F0534A0 01F9001A */ div $zero, $t7, $t9 +/* 087FD4 7F0534A4 0000C012 */ mflo $t8 +/* 087FD8 7F0534A8 03027021 */ addu $t6, $t8, $v0 +/* 087FDC 7F0534AC A56E0008 */ sh $t6, 8($t3) +/* 087FE0 7F0534B0 17200002 */ bnez $t9, .L7F0534BC +/* 087FE4 7F0534B4 00000000 */ nop +/* 087FE8 7F0534B8 0007000D */ break 7 +.L7F0534BC: +/* 087FEC 7F0534BC 2401FFFF */ li $at, -1 +/* 087FF0 7F0534C0 17210004 */ bne $t9, $at, .L7F0534D4 +/* 087FF4 7F0534C4 3C018000 */ lui $at, 0x8000 +/* 087FF8 7F0534C8 15E10002 */ bne $t7, $at, .L7F0534D4 +/* 087FFC 7F0534CC 00000000 */ nop +/* 088000 7F0534D0 0006000D */ break 6 +.L7F0534D4: +/* 088004 7F0534D4 84F9000A */ lh $t9, 0xa($a3) +/* 088008 7F0534D8 84C3000A */ lh $v1, 0xa($a2) +/* 08800C 7F0534DC 84C50000 */ lh $a1, ($a2) +/* 088010 7F0534E0 0323C023 */ subu $t8, $t9, $v1 +/* 088014 7F0534E4 01A57823 */ subu $t7, $t5, $a1 +/* 088018 7F0534E8 01F80019 */ multu $t7, $t8 +/* 08801C 7F0534EC 84F90000 */ lh $t9, ($a3) +/* 088020 7F0534F0 03257823 */ subu $t7, $t9, $a1 +/* 088024 7F0534F4 00007012 */ mflo $t6 +/* 088028 7F0534F8 00000000 */ nop +/* 08802C 7F0534FC 00000000 */ nop +/* 088030 7F053500 01CF001A */ div $zero, $t6, $t7 +/* 088034 7F053504 0000C012 */ mflo $t8 +/* 088038 7F053508 0303C821 */ addu $t9, $t8, $v1 +/* 08803C 7F05350C A579000A */ sh $t9, 0xa($t3) +/* 088040 7F053510 15E00002 */ bnez $t7, .L7F05351C +/* 088044 7F053514 00000000 */ nop +/* 088048 7F053518 0007000D */ break 7 +.L7F05351C: +/* 08804C 7F05351C 2401FFFF */ li $at, -1 +/* 088050 7F053520 15E10004 */ bne $t7, $at, .L7F053534 +/* 088054 7F053524 3C018000 */ lui $at, 0x8000 +/* 088058 7F053528 15C10002 */ bne $t6, $at, .L7F053534 +/* 08805C 7F05352C 00000000 */ nop +/* 088060 7F053530 0006000D */ break 6 +.L7F053534: +/* 088064 7F053534 A56D0000 */ sh $t5, ($t3) +.L7F053538: +/* 088068 7F053538 1654FE52 */ bne $s2, $s4, .L7F052E84 +/* 08806C 7F05353C 02401825 */ move $v1, $s2 +/* 088070 7F053540 86A2000C */ lh $v0, 0xc($s5) +/* 088074 7F053544 27DE0004 */ addiu $fp, $fp, 4 +/* 088078 7F053548 04410003 */ bgez $v0, .L7F053558 +/* 08807C 7F05354C 00027083 */ sra $t6, $v0, 2 +/* 088080 7F053550 24410003 */ addiu $at, $v0, 3 +/* 088084 7F053554 00017083 */ sra $t6, $at, 2 +.L7F053558: +/* 088088 7F053558 000E1880 */ sll $v1, $t6, 2 +/* 08808C 7F05355C 03C3082A */ slt $at, $fp, $v1 +/* 088090 7F053560 5420FE47 */ bnezl $at, .L7F052E80 +/* 088094 7F053564 00001825 */ move $v1, $zero +.L7F053568: +/* 088098 7F053568 8FBF003C */ lw $ra, 0x3c($sp) +.L7F05356C: +/* 08809C 7F05356C 8FB00018 */ lw $s0, 0x18($sp) +/* 0880A0 7F053570 8FB1001C */ lw $s1, 0x1c($sp) +/* 0880A4 7F053574 8FB20020 */ lw $s2, 0x20($sp) +/* 0880A8 7F053578 8FB30024 */ lw $s3, 0x24($sp) +/* 0880AC 7F05357C 8FB40028 */ lw $s4, 0x28($sp) +/* 0880B0 7F053580 8FB5002C */ lw $s5, 0x2c($sp) +/* 0880B4 7F053584 8FB60030 */ lw $s6, 0x30($sp) +/* 0880B8 7F053588 8FB70034 */ lw $s7, 0x34($sp) +/* 0880BC 7F05358C 8FBE0038 */ lw $fp, 0x38($sp) +/* 0880C0 7F053590 03E00008 */ jr $ra +/* 0880C4 7F053594 27BD0058 */ addiu $sp, $sp, 0x58 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F053598(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F053598 +/* 0880C8 7F053598 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0880CC 7F05359C AFBF0014 */ sw $ra, 0x14($sp) +/* 0880D0 7F0535A0 8C8600F0 */ lw $a2, 0xf0($a0) +/* 0880D4 7F0535A4 04C00003 */ bltz $a2, .L7F0535B4 +/* 0880D8 7F0535A8 00C02025 */ move $a0, $a2 +/* 0880DC 7F0535AC 0FC2E76F */ jal sub_GAME_7F0B9DBC +/* 0880E0 7F0535B0 24050001 */ li $a1, 1 +.L7F0535B4: +/* 0880E4 7F0535B4 8FBF0014 */ lw $ra, 0x14($sp) +/* 0880E8 7F0535B8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0880EC 7F0535BC 03E00008 */ jr $ra +/* 0880F0 7F0535C0 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0535C4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0535C4 +/* 0880F4 7F0535C4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0880F8 7F0535C8 AFBF0014 */ sw $ra, 0x14($sp) +/* 0880FC 7F0535CC 8C8600F0 */ lw $a2, 0xf0($a0) +/* 088100 7F0535D0 04C00003 */ bltz $a2, .L7F0535E0 +/* 088104 7F0535D4 00C02025 */ move $a0, $a2 +/* 088108 7F0535D8 0FC2E76F */ jal sub_GAME_7F0B9DBC +/* 08810C 7F0535DC 00002825 */ move $a1, $zero +.L7F0535E0: +/* 088110 7F0535E0 8FBF0014 */ lw $ra, 0x14($sp) +/* 088114 7F0535E4 27BD0018 */ addiu $sp, $sp, 0x18 +/* 088118 7F0535E8 03E00008 */ jr $ra +/* 08811C 7F0535EC 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void initialize_door(void) { + +} +#else +GLOBAL_ASM( +.text +glabel initialize_door +/* 088120 7F0535F0 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 088124 7F0535F4 AFBF001C */ sw $ra, 0x1c($sp) +/* 088128 7F0535F8 AFB00014 */ sw $s0, 0x14($sp) +/* 08812C 7F0535FC 00808025 */ move $s0, $a0 +/* 088130 7F053600 AFB10018 */ sw $s1, 0x18($sp) +/* 088134 7F053604 AFA50034 */ sw $a1, 0x34($sp) +/* 088138 7F053608 AFA60038 */ sw $a2, 0x38($sp) +/* 08813C 7F05360C 0FC101C7 */ jal sub_GAME_7F04071C +/* 088140 7F053610 AFA7003C */ sw $a3, 0x3c($sp) +/* 088144 7F053614 860E0004 */ lh $t6, 4($s0) +/* 088148 7F053618 3C018004 */ lui $at, %hi(PitemZ_entries+8) +/* 08814C 7F05361C 00408825 */ move $s1, $v0 +/* 088150 7F053620 000E7880 */ sll $t7, $t6, 2 +/* 088154 7F053624 01EE7823 */ subu $t7, $t7, $t6 +/* 088158 7F053628 000F7880 */ sll $t7, $t7, 2 +/* 08815C 7F05362C 002F0821 */ addu $at, $at, $t7 +/* 088160 7F053630 C424A230 */ lwc1 $f4, %lo(PitemZ_entries+8)($at) +/* 088164 7F053634 24040050 */ li $a0, 80 +/* 088168 7F053638 24050004 */ li $a1, 4 +/* 08816C 7F05363C 0C0025C8 */ jal mempAllocBytesInBank +/* 088170 7F053640 E7A40028 */ swc1 $f4, 0x28($sp) +/* 088174 7F053644 AE020068 */ sw $v0, 0x68($s0) +/* 088178 7F053648 26050018 */ addiu $a1, $s0, 0x18 +/* 08817C 7F05364C AFA50020 */ sw $a1, 0x20($sp) +/* 088180 7F053650 0FC16008 */ jal sub_GAME_7F058020 +/* 088184 7F053654 8FA40038 */ lw $a0, 0x38($sp) +/* 088188 7F053658 8FA50020 */ lw $a1, 0x20($sp) +/* 08818C 7F05365C 0FC1629F */ jal matrix_multiply_A1_by_F12 +/* 088190 7F053660 C7AC0028 */ lwc1 $f12, 0x28($sp) +/* 088194 7F053664 8FA20040 */ lw $v0, 0x40($sp) +/* 088198 7F053668 8E180008 */ lw $t8, 8($s0) +/* 08819C 7F05366C 44802000 */ mtc1 $zero, $f4 +/* 0881A0 7F053670 C4460000 */ lwc1 $f6, ($v0) +/* 0881A4 7F053674 0018C800 */ sll $t9, $t8, 0 +/* 0881A8 7F053678 E60600A8 */ swc1 $f6, 0xa8($s0) +/* 0881AC 7F05367C C4480004 */ lwc1 $f8, 4($v0) +/* 0881B0 7F053680 E60800AC */ swc1 $f8, 0xac($s0) +/* 0881B4 7F053684 C44A0008 */ lwc1 $f10, 8($v0) +/* 0881B8 7F053688 07210004 */ bgez $t9, .L7F05369C +/* 0881BC 7F05368C E60A00B0 */ swc1 $f10, 0xb0($s0) +/* 0881C0 7F053690 C6100084 */ lwc1 $f16, 0x84($s0) +/* 0881C4 7F053694 10000004 */ b .L7F0536A8 +/* 0881C8 7F053698 E61000B4 */ swc1 $f16, 0xb4($s0) +.L7F05369C: +/* 0881CC 7F05369C 44809000 */ mtc1 $zero, $f18 +/* 0881D0 7F0536A0 00000000 */ nop +/* 0881D4 7F0536A4 E61200B4 */ swc1 $f18, 0xb4($s0) +.L7F0536A8: +/* 0881D8 7F0536A8 96080098 */ lhu $t0, 0x98($s0) +/* 0881DC 7F0536AC E60400B8 */ swc1 $f4, 0xb8($s0) +/* 0881E0 7F0536B0 A20000BC */ sb $zero, 0xbc($s0) +/* 0881E4 7F0536B4 31090004 */ andi $t1, $t0, 4 +/* 0881E8 7F0536B8 A20000BD */ sb $zero, 0xbd($s0) +/* 0881EC 7F0536BC 1120000E */ beqz $t1, .L7F0536F8 +/* 0881F0 7F0536C0 AE0000C8 */ sw $zero, 0xc8($s0) +/* 0881F4 7F0536C4 8E0A0014 */ lw $t2, 0x14($s0) +/* 0881F8 7F0536C8 24050004 */ li $a1, 4 +/* 0881FC 7F0536CC 8D4B0008 */ lw $t3, 8($t2) +/* 088200 7F0536D0 8D6C0000 */ lw $t4, ($t3) +/* 088204 7F0536D4 8D8D0014 */ lw $t5, 0x14($t4) +/* 088208 7F0536D8 8DAE0014 */ lw $t6, 0x14($t5) +/* 08820C 7F0536DC 8DC20004 */ lw $v0, 4($t6) +/* 088210 7F0536E0 8444000C */ lh $a0, 0xc($v0) +/* 088214 7F0536E4 00047900 */ sll $t7, $a0, 4 +/* 088218 7F0536E8 0C0025C8 */ jal mempAllocBytesInBank +/* 08821C 7F0536EC 01E02025 */ move $a0, $t7 +/* 088220 7F0536F0 10000002 */ b .L7F0536FC +/* 088224 7F0536F4 AE0200CC */ sw $v0, 0xcc($s0) +.L7F0536F8: +/* 088228 7F0536F8 AE0000CC */ sw $zero, 0xcc($s0) +.L7F0536FC: +/* 08822C 7F0536FC 8FA30034 */ lw $v1, 0x34($sp) +/* 088230 7F053700 8FA20044 */ lw $v0, 0x44($sp) +/* 088234 7F053704 2418FFFF */ li $t8, -1 +/* 088238 7F053708 AE1800F0 */ sw $t8, 0xf0($s0) +/* 08823C 7F05370C AE0000F4 */ sw $zero, 0xf4($s0) +/* 088240 7F053710 AE0000F8 */ sw $zero, 0xf8($s0) +/* 088244 7F053714 24190002 */ li $t9, 2 +/* 088248 7F053718 A2390000 */ sb $t9, ($s1) +/* 08824C 7F05371C AE300004 */ sw $s0, 4($s1) +/* 088250 7F053720 C4660000 */ lwc1 $f6, ($v1) +/* 088254 7F053724 02002025 */ move $a0, $s0 +/* 088258 7F053728 E6260008 */ swc1 $f6, 8($s1) +/* 08825C 7F05372C C4680004 */ lwc1 $f8, 4($v1) +/* 088260 7F053730 E628000C */ swc1 $f8, 0xc($s1) +/* 088264 7F053734 C46A0008 */ lwc1 $f10, 8($v1) +/* 088268 7F053738 E62A0010 */ swc1 $f10, 0x10($s1) +/* 08826C 7F05373C 8FA8003C */ lw $t0, 0x3c($sp) +/* 088270 7F053740 AE280014 */ sw $t0, 0x14($s1) +/* 088274 7F053744 C4500000 */ lwc1 $f16, ($v0) +/* 088278 7F053748 8E090008 */ lw $t1, 8($s0) +/* 08827C 7F05374C E6100058 */ swc1 $f16, 0x58($s0) +/* 088280 7F053750 C4520004 */ lwc1 $f18, 4($v0) +/* 088284 7F053754 352A0100 */ ori $t2, $t1, 0x100 +/* 088288 7F053758 E612005C */ swc1 $f18, 0x5c($s0) +/* 08828C 7F05375C C4440008 */ lwc1 $f4, 8($v0) +/* 088290 7F053760 AE0A0008 */ sw $t2, 8($s0) +/* 088294 7F053764 0FC14AC0 */ jal sub_GAME_7F052B00 +/* 088298 7F053768 E6040060 */ swc1 $f4, 0x60($s0) +/* 08829C 7F05376C 0FC14B63 */ jal sub_GAME_7F052D8C +/* 0882A0 7F053770 02002025 */ move $a0, $s0 +/* 0882A4 7F053774 8E040010 */ lw $a0, 0x10($s0) +/* 0882A8 7F053778 0FC100AD */ jal sub_GAME_7F0402B4 +/* 0882AC 7F05377C 2605007C */ addiu $a1, $s0, 0x7c +/* 0882B0 7F053780 920B007C */ lbu $t3, 0x7c($s0) +/* 0882B4 7F053784 920C007D */ lbu $t4, 0x7d($s0) +/* 0882B8 7F053788 920D007E */ lbu $t5, 0x7e($s0) +/* 0882BC 7F05378C 920E007F */ lbu $t6, 0x7f($s0) +/* 0882C0 7F053790 A20B0078 */ sb $t3, 0x78($s0) +/* 0882C4 7F053794 A20C0079 */ sb $t4, 0x79($s0) +/* 0882C8 7F053798 A20D007A */ sb $t5, 0x7a($s0) +/* 0882CC 7F05379C A20E007B */ sb $t6, 0x7b($s0) +/* 0882D0 7F0537A0 8FBF001C */ lw $ra, 0x1c($sp) +/* 0882D4 7F0537A4 02201025 */ move $v0, $s1 +/* 0882D8 7F0537A8 8FB10018 */ lw $s1, 0x18($sp) +/* 0882DC 7F0537AC 8FB00014 */ lw $s0, 0x14($sp) +/* 0882E0 7F0537B0 03E00008 */ jr $ra +/* 0882E4 7F0537B4 27BD0030 */ addiu $sp, $sp, 0x30 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0537B8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0537B8 +/* 0882E8 7F0537B8 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 0882EC 7F0537BC 44810000 */ mtc1 $at, $f0 +/* 0882F0 7F0537C0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0882F4 7F0537C4 F7B40010 */ sdc1 $f20, 0x10($sp) +/* 0882F8 7F0537C8 4600603E */ c.le.s $f12, $f0 +/* 0882FC 7F0537CC AFA60028 */ sw $a2, 0x28($sp) +/* 088300 7F0537D0 46006506 */ mov.s $f20, $f12 +/* 088304 7F0537D4 AFBF001C */ sw $ra, 0x1c($sp) +/* 088308 7F0537D8 45000003 */ bc1f .L7F0537E8 +/* 08830C 7F0537DC C7A40028 */ lwc1 $f4, 0x28($sp) +/* 088310 7F0537E0 10000027 */ b .L7F053880 +/* 088314 7F0537E4 24037FFF */ li $v1, 32767 +.L7F0537E8: +/* 088318 7F0537E8 4614203E */ c.le.s $f4, $f20 +/* 08831C 7F0537EC 00000000 */ nop +/* 088320 7F0537F0 45020004 */ bc1fl .L7F053804 +/* 088324 7F0537F4 4614703E */ c.le.s $f14, $f20 +/* 088328 7F0537F8 10000021 */ b .L7F053880 +/* 08832C 7F0537FC 00001825 */ move $v1, $zero +/* 088330 7F053800 4614703E */ c.le.s $f14, $f20 +.L7F053804: +/* 088334 7F053804 C7A60028 */ lwc1 $f6, 0x28($sp) +/* 088338 7F053808 3C018005 */ lui $at, %hi(D_80053340) +/* 08833C 7F05380C 4502000B */ bc1fl .L7F05383C +/* 088340 7F053810 4600A301 */ sub.s $f12, $f20, $f0 +/* 088344 7F053814 46143201 */ sub.s $f8, $f6, $f20 +/* 088348 7F053818 C42A3340 */ lwc1 $f10, %lo(D_80053340)($at) +/* 08834C 7F05381C 460E3481 */ sub.s $f18, $f6, $f14 +/* 088350 7F053820 460A4402 */ mul.s $f16, $f8, $f10 +/* 088354 7F053824 46128103 */ div.s $f4, $f16, $f18 +/* 088358 7F053828 4600220D */ trunc.w.s $f8, $f4 +/* 08835C 7F05382C 44034000 */ mfc1 $v1, $f8 +/* 088360 7F053830 10000014 */ b .L7F053884 +/* 088364 7F053834 8FBF001C */ lw $ra, 0x1c($sp) +/* 088368 7F053838 4600A301 */ sub.s $f12, $f20, $f0 +.L7F05383C: +/* 08836C 7F05383C 0C007DF8 */ jal sqrtf +/* 088370 7F053840 E7AE0024 */ swc1 $f14, 0x24($sp) +/* 088374 7F053844 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 088378 7F053848 44815000 */ mtc1 $at, $f10 +/* 08837C 7F05384C C7AE0024 */ lwc1 $f14, 0x24($sp) +/* 088380 7F053850 46000506 */ mov.s $f20, $f0 +/* 088384 7F053854 0C007DF8 */ jal sqrtf +/* 088388 7F053858 460A7301 */ sub.s $f12, $f14, $f10 +/* 08838C 7F05385C 3C018005 */ lui $at, %hi(D_80053344) +/* 088390 7F053860 C4263344 */ lwc1 $f6, %lo(D_80053344)($at) +/* 088394 7F053864 24197FFF */ li $t9, 32767 +/* 088398 7F053868 4606A402 */ mul.s $f16, $f20, $f6 +/* 08839C 7F05386C 46008483 */ div.s $f18, $f16, $f0 +/* 0883A0 7F053870 4600910D */ trunc.w.s $f4, $f18 +/* 0883A4 7F053874 44182000 */ mfc1 $t8, $f4 +/* 0883A8 7F053878 00000000 */ nop +/* 0883AC 7F05387C 03381823 */ subu $v1, $t9, $t8 +.L7F053880: +/* 0883B0 7F053880 8FBF001C */ lw $ra, 0x1c($sp) +.L7F053884: +/* 0883B4 7F053884 D7B40010 */ ldc1 $f20, 0x10($sp) +/* 0883B8 7F053888 27BD0020 */ addiu $sp, $sp, 0x20 +/* 0883BC 7F05388C 03E00008 */ jr $ra +/* 0883C0 7F053890 00601025 */ move $v0, $v1 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F053894(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F053894 +/* 0883C4 7F053894 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 0883C8 7F053898 AFBF002C */ sw $ra, 0x2c($sp) +/* 0883CC 7F05389C AFB10020 */ sw $s1, 0x20($sp) +/* 0883D0 7F0538A0 F7B40010 */ sdc1 $f20, 0x10($sp) +/* 0883D4 7F0538A4 AFA60038 */ sw $a2, 0x38($sp) +/* 0883D8 7F0538A8 00808825 */ move $s1, $a0 +/* 0883DC 7F0538AC AFB30028 */ sw $s3, 0x28($sp) +/* 0883E0 7F0538B0 AFB20024 */ sw $s2, 0x24($sp) +/* 0883E4 7F0538B4 AFB0001C */ sw $s0, 0x1c($sp) +/* 0883E8 7F0538B8 AFA50034 */ sw $a1, 0x34($sp) +/* 0883EC 7F0538BC 0FC26919 */ jal get_num_players +/* 0883F0 7F0538C0 C7B40038 */ lwc1 $f20, 0x38($sp) +/* 0883F4 7F0538C4 1840001D */ blez $v0, .L7F05393C +/* 0883F8 7F0538C8 3C0E8008 */ lui $t6, %hi(ptr_BONDdata_p1) +/* 0883FC 7F0538CC 25D09EE0 */ addiu $s0, $t6, %lo(ptr_BONDdata_p1) +/* 088400 7F0538D0 00027880 */ sll $t7, $v0, 2 +/* 088404 7F0538D4 01F09021 */ addu $s2, $t7, $s0 +/* 088408 7F0538D8 8E180000 */ lw $t8, ($s0) +.L7F0538DC: +/* 08840C 7F0538DC C6260000 */ lwc1 $f6, ($s1) +/* 088410 7F0538E0 C62A0004 */ lwc1 $f10, 4($s1) +/* 088414 7F0538E4 8F0200A8 */ lw $v0, 0xa8($t8) +/* 088418 7F0538E8 C6320008 */ lwc1 $f18, 8($s1) +/* 08841C 7F0538EC C4440008 */ lwc1 $f4, 8($v0) +/* 088420 7F0538F0 C448000C */ lwc1 $f8, 0xc($v0) +/* 088424 7F0538F4 C4500010 */ lwc1 $f16, 0x10($v0) +/* 088428 7F0538F8 46062001 */ sub.s $f0, $f4, $f6 +/* 08842C 7F0538FC 460A4081 */ sub.s $f2, $f8, $f10 +/* 088430 7F053900 46000102 */ mul.s $f4, $f0, $f0 +/* 088434 7F053904 46128381 */ sub.s $f14, $f16, $f18 +/* 088438 7F053908 46021182 */ mul.s $f6, $f2, $f2 +/* 08843C 7F05390C 46062200 */ add.s $f8, $f4, $f6 +/* 088440 7F053910 460E7282 */ mul.s $f10, $f14, $f14 +/* 088444 7F053914 0C007DF8 */ jal sqrtf +/* 088448 7F053918 460A4300 */ add.s $f12, $f8, $f10 +/* 08844C 7F05391C 4614003C */ c.lt.s $f0, $f20 +/* 088450 7F053920 26100004 */ addiu $s0, $s0, 4 +/* 088454 7F053924 0212082B */ sltu $at, $s0, $s2 +/* 088458 7F053928 45000002 */ bc1f .L7F053934 +/* 08845C 7F05392C 00000000 */ nop +/* 088460 7F053930 46000506 */ mov.s $f20, $f0 +.L7F053934: +/* 088464 7F053934 5420FFE9 */ bnezl $at, .L7F0538DC +/* 088468 7F053938 8E180000 */ lw $t8, ($s0) +.L7F05393C: +/* 08846C 7F05393C 4600A306 */ mov.s $f12, $f20 +/* 088470 7F053940 C7AE0034 */ lwc1 $f14, 0x34($sp) +/* 088474 7F053944 0FC14DEE */ jal sub_GAME_7F0537B8 +/* 088478 7F053948 8FA60038 */ lw $a2, 0x38($sp) +/* 08847C 7F05394C 8FBF002C */ lw $ra, 0x2c($sp) +/* 088480 7F053950 D7B40010 */ ldc1 $f20, 0x10($sp) +/* 088484 7F053954 8FB0001C */ lw $s0, 0x1c($sp) +/* 088488 7F053958 8FB10020 */ lw $s1, 0x20($sp) +/* 08848C 7F05395C 8FB20024 */ lw $s2, 0x24($sp) +/* 088490 7F053960 8FB30028 */ lw $s3, 0x28($sp) +/* 088494 7F053964 03E00008 */ jr $ra +/* 088498 7F053968 27BD0030 */ addiu $sp, $sp, 0x30 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F05396C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F05396C +/* 08849C 7F05396C 44866000 */ mtc1 $a2, $f12 +/* 0884A0 7F053970 44877000 */ mtc1 $a3, $f14 +/* 0884A4 7F053974 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0884A8 7F053978 AFA40018 */ sw $a0, 0x18($sp) +/* 0884AC 7F05397C AFA5001C */ sw $a1, 0x1c($sp) +/* 0884B0 7F053980 00A02025 */ move $a0, $a1 +/* 0884B4 7F053984 AFBF0014 */ sw $ra, 0x14($sp) +/* 0884B8 7F053988 44056000 */ mfc1 $a1, $f12 +/* 0884BC 7F05398C 44067000 */ mfc1 $a2, $f14 +/* 0884C0 7F053990 0FC14E25 */ jal sub_GAME_7F053894 +/* 0884C4 7F053994 00000000 */ nop +/* 0884C8 7F053998 8FA40018 */ lw $a0, 0x18($sp) +/* 0884CC 7F05399C 24050008 */ li $a1, 8 +/* 0884D0 7F0539A0 0C002461 */ jal sfx_c_70009184 +/* 0884D4 7F0539A4 00403025 */ move $a2, $v0 +/* 0884D8 7F0539A8 8FBF0014 */ lw $ra, 0x14($sp) +/* 0884DC 7F0539AC 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0884E0 7F0539B0 03E00008 */ jr $ra +/* 0884E4 7F0539B4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0539B8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0539B8 +/* 0884E8 7F0539B8 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0884EC 7F0539BC AFBF0014 */ sw $ra, 0x14($sp) +/* 0884F0 7F0539C0 3C018005 */ lui $at, %hi(D_80053348) +/* 0884F4 7F0539C4 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb +/* 0884F8 7F0539C8 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 +/* 0884FC 7F0539CC 0FC14DEE */ jal sub_GAME_7F0537B8 +/* 088500 7F0539D0 C42E3348 */ lwc1 $f14, %lo(D_80053348)($at) +/* 088504 7F0539D4 8FBF0014 */ lw $ra, 0x14($sp) +/* 088508 7F0539D8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 08850C 7F0539DC 03E00008 */ jr $ra +/* 088510 7F0539E0 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0539E4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0539E4 +/* 088514 7F0539E4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 088518 7F0539E8 AFBF0014 */ sw $ra, 0x14($sp) +/* 08851C 7F0539EC 3C05459C */ lui $a1, (0x459C4000 >> 16) # lui $a1, 0x459c +/* 088520 7F0539F0 3C0645BB */ lui $a2, (0x45BB8000 >> 16) # lui $a2, 0x45bb +/* 088524 7F0539F4 34C68000 */ ori $a2, (0x45BB8000 & 0xFFFF) # ori $a2, $a2, 0x8000 +/* 088528 7F0539F8 0FC14E25 */ jal sub_GAME_7F053894 +/* 08852C 7F0539FC 34A54000 */ ori $a1, (0x459C4000 & 0xFFFF) # ori $a1, $a1, 0x4000 +/* 088530 7F053A00 8FBF0014 */ lw $ra, 0x14($sp) +/* 088534 7F053A04 27BD0018 */ addiu $sp, $sp, 0x18 +/* 088538 7F053A08 03E00008 */ jr $ra +/* 08853C 7F053A0C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F053A10(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F053A10 +/* 088540 7F053A10 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 088544 7F053A14 AFBF0014 */ sw $ra, 0x14($sp) +/* 088548 7F053A18 3C06459C */ lui $a2, (0x459C4000 >> 16) # lui $a2, 0x459c +/* 08854C 7F053A1C 3C0745BB */ lui $a3, (0x45BB8000 >> 16) # lui $a3, 0x45bb +/* 088550 7F053A20 34E78000 */ ori $a3, (0x45BB8000 & 0xFFFF) # ori $a3, $a3, 0x8000 +/* 088554 7F053A24 0FC14E5B */ jal sub_GAME_7F05396C +/* 088558 7F053A28 34C64000 */ ori $a2, (0x459C4000 & 0xFFFF) # ori $a2, $a2, 0x4000 +/* 08855C 7F053A2C 8FBF0014 */ lw $ra, 0x14($sp) +/* 088560 7F053A30 27BD0018 */ addiu $sp, $sp, 0x18 +/* 088564 7F053A34 03E00008 */ jr $ra +/* 088568 7F053A38 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F053A3C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F053A3C +/* 08856C 7F053A3C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 088570 7F053A40 AFBF0014 */ sw $ra, 0x14($sp) +/* 088574 7F053A44 AFA40028 */ sw $a0, 0x28($sp) +/* 088578 7F053A48 8C8500F4 */ lw $a1, 0xf4($a0) +/* 08857C 7F053A4C 0005182B */ sltu $v1, $zero, $a1 +/* 088580 7F053A50 50600005 */ beql $v1, $zero, .L7F053A68 +/* 088584 7F053A54 8FAF0028 */ lw $t7, 0x28($sp) +/* 088588 7F053A58 0C00237C */ jal sfxGetArg0Unk3F +/* 08858C 7F053A5C 00A02025 */ move $a0, $a1 +/* 088590 7F053A60 0002182B */ sltu $v1, $zero, $v0 +/* 088594 7F053A64 8FAF0028 */ lw $t7, 0x28($sp) +.L7F053A68: +/* 088598 7F053A68 AFA30024 */ sw $v1, 0x24($sp) +/* 08859C 7F053A6C 8DE400F8 */ lw $a0, 0xf8($t7) +/* 0885A0 7F053A70 0004182B */ sltu $v1, $zero, $a0 +/* 0885A4 7F053A74 50600005 */ beql $v1, $zero, .L7F053A8C +/* 0885A8 7F053A78 8FB80024 */ lw $t8, 0x24($sp) +/* 0885AC 7F053A7C 0C00237C */ jal sfxGetArg0Unk3F +/* 0885B0 7F053A80 00000000 */ nop +/* 0885B4 7F053A84 0002182B */ sltu $v1, $zero, $v0 +/* 0885B8 7F053A88 8FB80024 */ lw $t8, 0x24($sp) +.L7F053A8C: +/* 0885BC 7F053A8C 8FB90028 */ lw $t9, 0x28($sp) +/* 0885C0 7F053A90 57000004 */ bnezl $t8, .L7F053AA4 +/* 0885C4 7F053A94 8F240010 */ lw $a0, 0x10($t9) +/* 0885C8 7F053A98 5060001A */ beql $v1, $zero, .L7F053B04 +/* 0885CC 7F053A9C 8FBF0014 */ lw $ra, 0x14($sp) +/* 0885D0 7F053AA0 8F240010 */ lw $a0, 0x10($t9) +.L7F053AA4: +/* 0885D4 7F053AA4 AFA30018 */ sw $v1, 0x18($sp) +/* 0885D8 7F053AA8 0FC14E79 */ jal sub_GAME_7F0539E4 +/* 0885DC 7F053AAC 24840008 */ addiu $a0, $a0, 8 +/* 0885E0 7F053AB0 0FC2FF01 */ jal get_controls_locked_flag +/* 0885E4 7F053AB4 AFA2001C */ sw $v0, 0x1c($sp) +/* 0885E8 7F053AB8 10400002 */ beqz $v0, .L7F053AC4 +/* 0885EC 7F053ABC 8FA30018 */ lw $v1, 0x18($sp) +/* 0885F0 7F053AC0 AFA0001C */ sw $zero, 0x1c($sp) +.L7F053AC4: +/* 0885F4 7F053AC4 8FA80024 */ lw $t0, 0x24($sp) +/* 0885F8 7F053AC8 8FA90028 */ lw $t1, 0x28($sp) +/* 0885FC 7F053ACC 24050008 */ li $a1, 8 +/* 088600 7F053AD0 11000005 */ beqz $t0, .L7F053AE8 +/* 088604 7F053AD4 8FA6001C */ lw $a2, 0x1c($sp) +/* 088608 7F053AD8 8D2400F4 */ lw $a0, 0xf4($t1) +/* 08860C 7F053ADC 0C002461 */ jal sfx_c_70009184 +/* 088610 7F053AE0 AFA30018 */ sw $v1, 0x18($sp) +/* 088614 7F053AE4 8FA30018 */ lw $v1, 0x18($sp) +.L7F053AE8: +/* 088618 7F053AE8 10600005 */ beqz $v1, .L7F053B00 +/* 08861C 7F053AEC 8FAA0028 */ lw $t2, 0x28($sp) +/* 088620 7F053AF0 8D4400F8 */ lw $a0, 0xf8($t2) +/* 088624 7F053AF4 24050008 */ li $a1, 8 +/* 088628 7F053AF8 0C002461 */ jal sfx_c_70009184 +/* 08862C 7F053AFC 8FA6001C */ lw $a2, 0x1c($sp) +.L7F053B00: +/* 088630 7F053B00 8FBF0014 */ lw $ra, 0x14($sp) +.L7F053B04: +/* 088634 7F053B04 27BD0028 */ addiu $sp, $sp, 0x28 +/* 088638 7F053B08 03E00008 */ jr $ra +/* 08863C 7F053B0C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F053B10(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F053B10 +/* 088640 7F053B10 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 088644 7F053B14 AFBF0014 */ sw $ra, 0x14($sp) +/* 088648 7F053B18 AFA40018 */ sw $a0, 0x18($sp) +/* 08864C 7F053B1C 8C8500F4 */ lw $a1, 0xf4($a0) +/* 088650 7F053B20 50A00008 */ beql $a1, $zero, .L7F053B44 +/* 088654 7F053B24 8FB80018 */ lw $t8, 0x18($sp) +/* 088658 7F053B28 0C00237C */ jal sfxGetArg0Unk3F +/* 08865C 7F053B2C 00A02025 */ move $a0, $a1 +/* 088660 7F053B30 10400003 */ beqz $v0, .L7F053B40 +/* 088664 7F053B34 8FAF0018 */ lw $t7, 0x18($sp) +/* 088668 7F053B38 0C002408 */ jal sfxDeactivate +/* 08866C 7F053B3C 8DE400F4 */ lw $a0, 0xf4($t7) +.L7F053B40: +/* 088670 7F053B40 8FB80018 */ lw $t8, 0x18($sp) +.L7F053B44: +/* 088674 7F053B44 8F0400F8 */ lw $a0, 0xf8($t8) +/* 088678 7F053B48 50800008 */ beql $a0, $zero, .L7F053B6C +/* 08867C 7F053B4C 8FBF0014 */ lw $ra, 0x14($sp) +/* 088680 7F053B50 0C00237C */ jal sfxGetArg0Unk3F +/* 088684 7F053B54 00000000 */ nop +/* 088688 7F053B58 10400003 */ beqz $v0, .L7F053B68 +/* 08868C 7F053B5C 8FB90018 */ lw $t9, 0x18($sp) +/* 088690 7F053B60 0C002408 */ jal sfxDeactivate +/* 088694 7F053B64 8F2400F8 */ lw $a0, 0xf8($t9) +.L7F053B68: +/* 088698 7F053B68 8FBF0014 */ lw $ra, 0x14($sp) +.L7F053B6C: +/* 08869C 7F053B6C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0886A0 7F053B70 03E00008 */ jr $ra +/* 0886A4 7F053B74 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void play_door_opening_soundeffect_0(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:8005334C*/ +glabel door_opening_sound_table_0 +.word .L7F053BEC +.word .L7F053C2C +.word .L7F053C6C +.word .L7F053CAC +.word .L7F053CEC +.word .L7F053D08 +.word .L7F053D24 +.word .L7F053D64 +.word .L7F053DA4 +.word .L7F053DC4 +.word .L7F053DE0 +.word .L7F053DFC +.word .L7F053E18 +.word .L7F053E58 +.word .L7F053E78 +.word .L7F053E98 +.word .L7F053EB4 + +.text +glabel play_door_opening_soundeffect_0 +/* 0886A8 7F053B78 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0886AC 7F053B7C AFBF0014 */ sw $ra, 0x14($sp) +/* 0886B0 7F053B80 AFA40020 */ sw $a0, 0x20($sp) +/* 0886B4 7F053B84 AFA0001C */ sw $zero, 0x1c($sp) +/* 0886B8 7F053B88 0FC14EC4 */ jal sub_GAME_7F053B10 +/* 0886BC 7F053B8C AFA00018 */ sw $zero, 0x18($sp) +/* 0886C0 7F053B90 8FAE0020 */ lw $t6, 0x20($sp) +/* 0886C4 7F053B94 8FA70018 */ lw $a3, 0x18($sp) +/* 0886C8 7F053B98 8FB80020 */ lw $t8, 0x20($sp) +/* 0886CC 7F053B9C 8DCF00F4 */ lw $t7, 0xf4($t6) +/* 0886D0 7F053BA0 8FA80020 */ lw $t0, 0x20($sp) +/* 0886D4 7F053BA4 55E00004 */ bnezl $t7, .L7F053BB8 +/* 0886D8 7F053BA8 8F1900F8 */ lw $t9, 0xf8($t8) +/* 0886DC 7F053BAC 10000005 */ b .L7F053BC4 +/* 0886E0 7F053BB0 25C700F4 */ addiu $a3, $t6, 0xf4 +/* 0886E4 7F053BB4 8F1900F8 */ lw $t9, 0xf8($t8) +.L7F053BB8: +/* 0886E8 7F053BB8 57200003 */ bnezl $t9, .L7F053BC8 +/* 0886EC 7F053BBC 8D0900A4 */ lw $t1, 0xa4($t0) +/* 0886F0 7F053BC0 270700F8 */ addiu $a3, $t8, 0xf8 +.L7F053BC4: +/* 0886F4 7F053BC4 8D0900A4 */ lw $t1, 0xa4($t0) +.L7F053BC8: +/* 0886F8 7F053BC8 252AFFFF */ addiu $t2, $t1, -1 +/* 0886FC 7F053BCC 2D410011 */ sltiu $at, $t2, 0x11 +/* 088700 7F053BD0 102000D6 */ beqz $at, .L7F053F2C +/* 088704 7F053BD4 000A5080 */ sll $t2, $t2, 2 +/* 088708 7F053BD8 3C018005 */ lui $at, %hi(door_opening_sound_table_0) +/* 08870C 7F053BDC 002A0821 */ addu $at, $at, $t2 +/* 088710 7F053BE0 8C2A334C */ lw $t2, %lo(door_opening_sound_table_0)($at) +/* 088714 7F053BE4 01400008 */ jr $t2 +/* 088718 7F053BE8 00000000 */ nop +.L7F053BEC: +/* 08871C 7F053BEC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088720 7F053BF0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088724 7F053BF4 240500D2 */ li $a1, 210 +/* 088728 7F053BF8 00003025 */ move $a2, $zero +/* 08872C 7F053BFC 0C002382 */ jal play_sfx_a1 +/* 088730 7F053C00 AFA70018 */ sw $a3, 0x18($sp) +/* 088734 7F053C04 8FA70018 */ lw $a3, 0x18($sp) +/* 088738 7F053C08 AFA2001C */ sw $v0, 0x1c($sp) +/* 08873C 7F053C0C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088740 7F053C10 10E000C6 */ beqz $a3, .L7F053F2C +/* 088744 7F053C14 240500D3 */ li $a1, 211 +/* 088748 7F053C18 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08874C 7F053C1C 0C002382 */ jal play_sfx_a1 +/* 088750 7F053C20 00E03025 */ move $a2, $a3 +/* 088754 7F053C24 100000C2 */ b .L7F053F30 +/* 088758 7F053C28 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053C2C: +/* 08875C 7F053C2C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088760 7F053C30 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088764 7F053C34 240500D2 */ li $a1, 210 +/* 088768 7F053C38 00003025 */ move $a2, $zero +/* 08876C 7F053C3C 0C002382 */ jal play_sfx_a1 +/* 088770 7F053C40 AFA70018 */ sw $a3, 0x18($sp) +/* 088774 7F053C44 8FA70018 */ lw $a3, 0x18($sp) +/* 088778 7F053C48 AFA2001C */ sw $v0, 0x1c($sp) +/* 08877C 7F053C4C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088780 7F053C50 10E000B6 */ beqz $a3, .L7F053F2C +/* 088784 7F053C54 24050007 */ li $a1, 7 +/* 088788 7F053C58 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08878C 7F053C5C 0C002382 */ jal play_sfx_a1 +/* 088790 7F053C60 00E03025 */ move $a2, $a3 +/* 088794 7F053C64 100000B2 */ b .L7F053F30 +/* 088798 7F053C68 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053C6C: +/* 08879C 7F053C6C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0887A0 7F053C70 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0887A4 7F053C74 240500CA */ li $a1, 202 +/* 0887A8 7F053C78 00003025 */ move $a2, $zero +/* 0887AC 7F053C7C 0C002382 */ jal play_sfx_a1 +/* 0887B0 7F053C80 AFA70018 */ sw $a3, 0x18($sp) +/* 0887B4 7F053C84 8FA70018 */ lw $a3, 0x18($sp) +/* 0887B8 7F053C88 AFA2001C */ sw $v0, 0x1c($sp) +/* 0887BC 7F053C8C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0887C0 7F053C90 10E000A6 */ beqz $a3, .L7F053F2C +/* 0887C4 7F053C94 240500CC */ li $a1, 204 +/* 0887C8 7F053C98 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0887CC 7F053C9C 0C002382 */ jal play_sfx_a1 +/* 0887D0 7F053CA0 00E03025 */ move $a2, $a3 +/* 0887D4 7F053CA4 100000A2 */ b .L7F053F30 +/* 0887D8 7F053CA8 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053CAC: +/* 0887DC 7F053CAC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0887E0 7F053CB0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0887E4 7F053CB4 240500D6 */ li $a1, 214 +/* 0887E8 7F053CB8 00003025 */ move $a2, $zero +/* 0887EC 7F053CBC 0C002382 */ jal play_sfx_a1 +/* 0887F0 7F053CC0 AFA70018 */ sw $a3, 0x18($sp) +/* 0887F4 7F053CC4 8FA70018 */ lw $a3, 0x18($sp) +/* 0887F8 7F053CC8 AFA2001C */ sw $v0, 0x1c($sp) +/* 0887FC 7F053CCC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088800 7F053CD0 10E00096 */ beqz $a3, .L7F053F2C +/* 088804 7F053CD4 240500D8 */ li $a1, 216 +/* 088808 7F053CD8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08880C 7F053CDC 0C002382 */ jal play_sfx_a1 +/* 088810 7F053CE0 00E03025 */ move $a2, $a3 +/* 088814 7F053CE4 10000092 */ b .L7F053F30 +/* 088818 7F053CE8 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053CEC: +/* 08881C 7F053CEC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088820 7F053CF0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088824 7F053CF4 240500BC */ li $a1, 188 +/* 088828 7F053CF8 0C002382 */ jal play_sfx_a1 +/* 08882C 7F053CFC 00003025 */ move $a2, $zero +/* 088830 7F053D00 1000008A */ b .L7F053F2C +/* 088834 7F053D04 AFA2001C */ sw $v0, 0x1c($sp) +.L7F053D08: +/* 088838 7F053D08 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 08883C 7F053D0C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088840 7F053D10 24050007 */ li $a1, 7 +/* 088844 7F053D14 0C002382 */ jal play_sfx_a1 +/* 088848 7F053D18 00003025 */ move $a2, $zero +/* 08884C 7F053D1C 10000083 */ b .L7F053F2C +/* 088850 7F053D20 AFA2001C */ sw $v0, 0x1c($sp) +.L7F053D24: +/* 088854 7F053D24 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088858 7F053D28 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08885C 7F053D2C 240500C0 */ li $a1, 192 +/* 088860 7F053D30 00003025 */ move $a2, $zero +/* 088864 7F053D34 0C002382 */ jal play_sfx_a1 +/* 088868 7F053D38 AFA70018 */ sw $a3, 0x18($sp) +/* 08886C 7F053D3C 8FA70018 */ lw $a3, 0x18($sp) +/* 088870 7F053D40 AFA2001C */ sw $v0, 0x1c($sp) +/* 088874 7F053D44 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088878 7F053D48 10E00078 */ beqz $a3, .L7F053F2C +/* 08887C 7F053D4C 240500BF */ li $a1, 191 +/* 088880 7F053D50 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088884 7F053D54 0C002382 */ jal play_sfx_a1 +/* 088888 7F053D58 00E03025 */ move $a2, $a3 +/* 08888C 7F053D5C 10000074 */ b .L7F053F30 +/* 088890 7F053D60 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053D64: +/* 088894 7F053D64 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088898 7F053D68 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08889C 7F053D6C 240500BC */ li $a1, 188 +/* 0888A0 7F053D70 00003025 */ move $a2, $zero +/* 0888A4 7F053D74 0C002382 */ jal play_sfx_a1 +/* 0888A8 7F053D78 AFA70018 */ sw $a3, 0x18($sp) +/* 0888AC 7F053D7C 8FA70018 */ lw $a3, 0x18($sp) +/* 0888B0 7F053D80 AFA2001C */ sw $v0, 0x1c($sp) +/* 0888B4 7F053D84 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0888B8 7F053D88 10E00068 */ beqz $a3, .L7F053F2C +/* 0888BC 7F053D8C 24050007 */ li $a1, 7 +/* 0888C0 7F053D90 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0888C4 7F053D94 0C002382 */ jal play_sfx_a1 +/* 0888C8 7F053D98 00E03025 */ move $a2, $a3 +/* 0888CC 7F053D9C 10000064 */ b .L7F053F30 +/* 0888D0 7F053DA0 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053DA4: +/* 0888D4 7F053DA4 10E00061 */ beqz $a3, .L7F053F2C +/* 0888D8 7F053DA8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0888DC 7F053DAC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0888E0 7F053DB0 240500C2 */ li $a1, 194 +/* 0888E4 7F053DB4 0C002382 */ jal play_sfx_a1 +/* 0888E8 7F053DB8 00E03025 */ move $a2, $a3 +/* 0888EC 7F053DBC 1000005C */ b .L7F053F30 +/* 0888F0 7F053DC0 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053DC4: +/* 0888F4 7F053DC4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0888F8 7F053DC8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0888FC 7F053DCC 240500C4 */ li $a1, 196 +/* 088900 7F053DD0 0C002382 */ jal play_sfx_a1 +/* 088904 7F053DD4 00003025 */ move $a2, $zero +/* 088908 7F053DD8 10000054 */ b .L7F053F2C +/* 08890C 7F053DDC AFA2001C */ sw $v0, 0x1c($sp) +.L7F053DE0: +/* 088910 7F053DE0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088914 7F053DE4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088918 7F053DE8 24050007 */ li $a1, 7 +/* 08891C 7F053DEC 0C002382 */ jal play_sfx_a1 +/* 088920 7F053DF0 00003025 */ move $a2, $zero +/* 088924 7F053DF4 1000004D */ b .L7F053F2C +/* 088928 7F053DF8 AFA2001C */ sw $v0, 0x1c($sp) +.L7F053DFC: +/* 08892C 7F053DFC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088930 7F053E00 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088934 7F053E04 240500C8 */ li $a1, 200 +/* 088938 7F053E08 0C002382 */ jal play_sfx_a1 +/* 08893C 7F053E0C 00003025 */ move $a2, $zero +/* 088940 7F053E10 10000046 */ b .L7F053F2C +/* 088944 7F053E14 AFA2001C */ sw $v0, 0x1c($sp) +.L7F053E18: +/* 088948 7F053E18 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 08894C 7F053E1C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088950 7F053E20 24050007 */ li $a1, 7 +/* 088954 7F053E24 00003025 */ move $a2, $zero +/* 088958 7F053E28 0C002382 */ jal play_sfx_a1 +/* 08895C 7F053E2C AFA70018 */ sw $a3, 0x18($sp) +/* 088960 7F053E30 8FA70018 */ lw $a3, 0x18($sp) +/* 088964 7F053E34 AFA2001C */ sw $v0, 0x1c($sp) +/* 088968 7F053E38 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 08896C 7F053E3C 10E0003B */ beqz $a3, .L7F053F2C +/* 088970 7F053E40 24050007 */ li $a1, 7 +/* 088974 7F053E44 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088978 7F053E48 0C002382 */ jal play_sfx_a1 +/* 08897C 7F053E4C 00E03025 */ move $a2, $a3 +/* 088980 7F053E50 10000037 */ b .L7F053F30 +/* 088984 7F053E54 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053E58: +/* 088988 7F053E58 10E00034 */ beqz $a3, .L7F053F2C +/* 08898C 7F053E5C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088990 7F053E60 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088994 7F053E64 240500DA */ li $a1, 218 +/* 088998 7F053E68 0C002382 */ jal play_sfx_a1 +/* 08899C 7F053E6C 00E03025 */ move $a2, $a3 +/* 0889A0 7F053E70 1000002F */ b .L7F053F30 +/* 0889A4 7F053E74 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053E78: +/* 0889A8 7F053E78 10E0002C */ beqz $a3, .L7F053F2C +/* 0889AC 7F053E7C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0889B0 7F053E80 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0889B4 7F053E84 240500E1 */ li $a1, 225 +/* 0889B8 7F053E88 0C002382 */ jal play_sfx_a1 +/* 0889BC 7F053E8C 00E03025 */ move $a2, $a3 +/* 0889C0 7F053E90 10000027 */ b .L7F053F30 +/* 0889C4 7F053E94 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053E98: +/* 0889C8 7F053E98 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0889CC 7F053E9C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0889D0 7F053EA0 240500D6 */ li $a1, 214 +/* 0889D4 7F053EA4 0C002382 */ jal play_sfx_a1 +/* 0889D8 7F053EA8 00003025 */ move $a2, $zero +/* 0889DC 7F053EAC 1000001F */ b .L7F053F2C +/* 0889E0 7F053EB0 AFA2001C */ sw $v0, 0x1c($sp) +.L7F053EB4: +/* 0889E4 7F053EB4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0889E8 7F053EB8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0889EC 7F053EBC 24050007 */ li $a1, 7 +/* 0889F0 7F053EC0 00003025 */ move $a2, $zero +/* 0889F4 7F053EC4 0C002382 */ jal play_sfx_a1 +/* 0889F8 7F053EC8 AFA70018 */ sw $a3, 0x18($sp) +/* 0889FC 7F053ECC 8FA70018 */ lw $a3, 0x18($sp) +/* 088A00 7F053ED0 10400008 */ beqz $v0, .L7F053EF4 +/* 088A04 7F053ED4 AFA2001C */ sw $v0, 0x1c($sp) +/* 088A08 7F053ED8 8FAB0020 */ lw $t3, 0x20($sp) +/* 088A0C 7F053EDC 00402025 */ move $a0, $v0 +/* 088A10 7F053EE0 8D650010 */ lw $a1, 0x10($t3) +/* 088A14 7F053EE4 AFA70018 */ sw $a3, 0x18($sp) +/* 088A18 7F053EE8 0FC14E84 */ jal sub_GAME_7F053A10 +/* 088A1C 7F053EEC 24A50008 */ addiu $a1, $a1, 8 +/* 088A20 7F053EF0 8FA70018 */ lw $a3, 0x18($sp) +.L7F053EF4: +/* 088A24 7F053EF4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088A28 7F053EF8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088A2C 7F053EFC 240500CA */ li $a1, 202 +/* 088A30 7F053F00 00003025 */ move $a2, $zero +/* 088A34 7F053F04 0C002382 */ jal play_sfx_a1 +/* 088A38 7F053F08 AFA70018 */ sw $a3, 0x18($sp) +/* 088A3C 7F053F0C 8FA70018 */ lw $a3, 0x18($sp) +/* 088A40 7F053F10 AFA2001C */ sw $v0, 0x1c($sp) +/* 088A44 7F053F14 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088A48 7F053F18 10E00004 */ beqz $a3, .L7F053F2C +/* 088A4C 7F053F1C 240500CC */ li $a1, 204 +/* 088A50 7F053F20 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088A54 7F053F24 0C002382 */ jal play_sfx_a1 +/* 088A58 7F053F28 00E03025 */ move $a2, $a3 +def_7F053BE4: +.L7F053F2C: +/* 088A5C 7F053F2C 8FAC001C */ lw $t4, 0x1c($sp) +.L7F053F30: +/* 088A60 7F053F30 8FAD0020 */ lw $t5, 0x20($sp) +/* 088A64 7F053F34 11800005 */ beqz $t4, .L7F053F4C +/* 088A68 7F053F38 00000000 */ nop +/* 088A6C 7F053F3C 8DA50010 */ lw $a1, 0x10($t5) +/* 088A70 7F053F40 01802025 */ move $a0, $t4 +/* 088A74 7F053F44 0FC14E84 */ jal sub_GAME_7F053A10 +/* 088A78 7F053F48 24A50008 */ addiu $a1, $a1, 8 +.L7F053F4C: +/* 088A7C 7F053F4C 0FC14E8F */ jal sub_GAME_7F053A3C +/* 088A80 7F053F50 8FA40020 */ lw $a0, 0x20($sp) +/* 088A84 7F053F54 8FBF0014 */ lw $ra, 0x14($sp) +/* 088A88 7F053F58 27BD0020 */ addiu $sp, $sp, 0x20 +/* 088A8C 7F053F5C 03E00008 */ jr $ra +/* 088A90 7F053F60 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void play_door_opening_soundeffect_1(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:80053390*/ +glabel door_opening_sound_table_1 +.word .L7F053FD8 +.word .L7F054018 +.word .L7F054058 +.word .L7F054098 +.word .L7F05428C +.word .L7F05428C +.word .L7F0540D8 +.word .L7F054118 +.word .L7F054158 +.word .L7F05428C +.word .L7F05428C +.word .L7F05428C +.word .L7F054178 +.word .L7F0541B8 +.word .L7F0541D8 +.word .L7F0541F8 +.word .L7F054214 +.text +glabel play_door_opening_soundeffect_1 +/* 088A94 7F053F64 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 088A98 7F053F68 AFBF0014 */ sw $ra, 0x14($sp) +/* 088A9C 7F053F6C AFA40020 */ sw $a0, 0x20($sp) +/* 088AA0 7F053F70 AFA0001C */ sw $zero, 0x1c($sp) +/* 088AA4 7F053F74 0FC14EC4 */ jal sub_GAME_7F053B10 +/* 088AA8 7F053F78 AFA00018 */ sw $zero, 0x18($sp) +/* 088AAC 7F053F7C 8FAE0020 */ lw $t6, 0x20($sp) +/* 088AB0 7F053F80 8FA70018 */ lw $a3, 0x18($sp) +/* 088AB4 7F053F84 8FB80020 */ lw $t8, 0x20($sp) +/* 088AB8 7F053F88 8DCF00F4 */ lw $t7, 0xf4($t6) +/* 088ABC 7F053F8C 8FA80020 */ lw $t0, 0x20($sp) +/* 088AC0 7F053F90 55E00004 */ bnezl $t7, .L7F053FA4 +/* 088AC4 7F053F94 8F1900F8 */ lw $t9, 0xf8($t8) +/* 088AC8 7F053F98 10000005 */ b .L7F053FB0 +/* 088ACC 7F053F9C 25C700F4 */ addiu $a3, $t6, 0xf4 +/* 088AD0 7F053FA0 8F1900F8 */ lw $t9, 0xf8($t8) +.L7F053FA4: +/* 088AD4 7F053FA4 57200003 */ bnezl $t9, .L7F053FB4 +/* 088AD8 7F053FA8 8D0900A4 */ lw $t1, 0xa4($t0) +/* 088ADC 7F053FAC 270700F8 */ addiu $a3, $t8, 0xf8 +.L7F053FB0: +/* 088AE0 7F053FB0 8D0900A4 */ lw $t1, 0xa4($t0) +.L7F053FB4: +/* 088AE4 7F053FB4 252AFFFF */ addiu $t2, $t1, -1 +/* 088AE8 7F053FB8 2D410011 */ sltiu $at, $t2, 0x11 +/* 088AEC 7F053FBC 102000B3 */ beqz $at, .L7F05428C +/* 088AF0 7F053FC0 000A5080 */ sll $t2, $t2, 2 +/* 088AF4 7F053FC4 3C018005 */ lui $at, %hi(door_opening_sound_table_1) +/* 088AF8 7F053FC8 002A0821 */ addu $at, $at, $t2 +/* 088AFC 7F053FCC 8C2A3390 */ lw $t2, %lo(door_opening_sound_table_1)($at) +.L7F053FD0: +/* 088B00 7F053FD0 01400008 */ jr $t2 +/* 088B04 7F053FD4 00000000 */ nop +.L7F053FD8: +/* 088B08 7F053FD8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088B0C 7F053FDC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088B10 7F053FE0 240500D2 */ li $a1, 210 +/* 088B14 7F053FE4 00003025 */ move $a2, $zero +/* 088B18 7F053FE8 0C002382 */ jal play_sfx_a1 +/* 088B1C 7F053FEC AFA70018 */ sw $a3, 0x18($sp) +/* 088B20 7F053FF0 8FA70018 */ lw $a3, 0x18($sp) +/* 088B24 7F053FF4 AFA2001C */ sw $v0, 0x1c($sp) +/* 088B28 7F053FF8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088B2C 7F053FFC 10E000A3 */ beqz $a3, .L7F05428C +/* 088B30 7F054000 240500D3 */ li $a1, 211 +/* 088B34 7F054004 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088B38 7F054008 0C002382 */ jal play_sfx_a1 +/* 088B3C 7F05400C 00E03025 */ move $a2, $a3 +/* 088B40 7F054010 1000009F */ b .L7F054290 +/* 088B44 7F054014 8FAC001C */ lw $t4, 0x1c($sp) +.L7F054018: +/* 088B48 7F054018 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088B4C 7F05401C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088B50 7F054020 240500D2 */ li $a1, 210 +/* 088B54 7F054024 00003025 */ move $a2, $zero +/* 088B58 7F054028 0C002382 */ jal play_sfx_a1 +/* 088B5C 7F05402C AFA70018 */ sw $a3, 0x18($sp) +/* 088B60 7F054030 8FA70018 */ lw $a3, 0x18($sp) +/* 088B64 7F054034 AFA2001C */ sw $v0, 0x1c($sp) +/* 088B68 7F054038 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088B6C 7F05403C 10E00093 */ beqz $a3, .L7F05428C +/* 088B70 7F054040 24050007 */ li $a1, 7 +/* 088B74 7F054044 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088B78 7F054048 0C002382 */ jal play_sfx_a1 +/* 088B7C 7F05404C 00E03025 */ move $a2, $a3 +/* 088B80 7F054050 1000008F */ b .L7F054290 +/* 088B84 7F054054 8FAC001C */ lw $t4, 0x1c($sp) +.L7F054058: +/* 088B88 7F054058 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088B8C 7F05405C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088B90 7F054060 240500CA */ li $a1, 202 +/* 088B94 7F054064 00003025 */ move $a2, $zero +/* 088B98 7F054068 0C002382 */ jal play_sfx_a1 +/* 088B9C 7F05406C AFA70018 */ sw $a3, 0x18($sp) +/* 088BA0 7F054070 8FA70018 */ lw $a3, 0x18($sp) +/* 088BA4 7F054074 AFA2001C */ sw $v0, 0x1c($sp) +/* 088BA8 7F054078 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088BAC 7F05407C 10E00083 */ beqz $a3, .L7F05428C +/* 088BB0 7F054080 240500CC */ li $a1, 204 +/* 088BB4 7F054084 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088BB8 7F054088 0C002382 */ jal play_sfx_a1 +/* 088BBC 7F05408C 00E03025 */ move $a2, $a3 +/* 088BC0 7F054090 1000007F */ b .L7F054290 +/* 088BC4 7F054094 8FAC001C */ lw $t4, 0x1c($sp) +.L7F054098: +/* 088BC8 7F054098 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088BCC 7F05409C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088BD0 7F0540A0 240500D6 */ li $a1, 214 +/* 088BD4 7F0540A4 00003025 */ move $a2, $zero +/* 088BD8 7F0540A8 0C002382 */ jal play_sfx_a1 +/* 088BDC 7F0540AC AFA70018 */ sw $a3, 0x18($sp) +/* 088BE0 7F0540B0 8FA70018 */ lw $a3, 0x18($sp) +/* 088BE4 7F0540B4 AFA2001C */ sw $v0, 0x1c($sp) +/* 088BE8 7F0540B8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088BEC 7F0540BC 10E00073 */ beqz $a3, .L7F05428C +/* 088BF0 7F0540C0 240500D8 */ li $a1, 216 +/* 088BF4 7F0540C4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088BF8 7F0540C8 0C002382 */ jal play_sfx_a1 +/* 088BFC 7F0540CC 00E03025 */ move $a2, $a3 +/* 088C00 7F0540D0 1000006F */ b .L7F054290 +/* 088C04 7F0540D4 8FAC001C */ lw $t4, 0x1c($sp) +.L7F0540D8: +/* 088C08 7F0540D8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088C0C 7F0540DC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088C10 7F0540E0 240500C0 */ li $a1, 192 +/* 088C14 7F0540E4 00003025 */ move $a2, $zero +/* 088C18 7F0540E8 0C002382 */ jal play_sfx_a1 +/* 088C1C 7F0540EC AFA70018 */ sw $a3, 0x18($sp) +/* 088C20 7F0540F0 8FA70018 */ lw $a3, 0x18($sp) +/* 088C24 7F0540F4 AFA2001C */ sw $v0, 0x1c($sp) +/* 088C28 7F0540F8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088C2C 7F0540FC 10E00063 */ beqz $a3, .L7F05428C +/* 088C30 7F054100 240500BF */ li $a1, 191 +/* 088C34 7F054104 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088C38 7F054108 0C002382 */ jal play_sfx_a1 +/* 088C3C 7F05410C 00E03025 */ move $a2, $a3 +/* 088C40 7F054110 1000005F */ b .L7F054290 +/* 088C44 7F054114 8FAC001C */ lw $t4, 0x1c($sp) +.L7F054118: +/* 088C48 7F054118 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088C4C 7F05411C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088C50 7F054120 240500BC */ li $a1, 188 +/* 088C54 7F054124 00003025 */ move $a2, $zero +/* 088C58 7F054128 0C002382 */ jal play_sfx_a1 +/* 088C5C 7F05412C AFA70018 */ sw $a3, 0x18($sp) +/* 088C60 7F054130 8FA70018 */ lw $a3, 0x18($sp) +/* 088C64 7F054134 AFA2001C */ sw $v0, 0x1c($sp) +/* 088C68 7F054138 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088C6C 7F05413C 10E00053 */ beqz $a3, .L7F05428C +/* 088C70 7F054140 24050007 */ li $a1, 7 +/* 088C74 7F054144 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088C78 7F054148 0C002382 */ jal play_sfx_a1 +/* 088C7C 7F05414C 00E03025 */ move $a2, $a3 +/* 088C80 7F054150 1000004F */ b .L7F054290 +/* 088C84 7F054154 8FAC001C */ lw $t4, 0x1c($sp) +.L7F054158: +/* 088C88 7F054158 10E0004C */ beqz $a3, .L7F05428C +/* 088C8C 7F05415C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088C90 7F054160 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088C94 7F054164 240500C2 */ li $a1, 194 +/* 088C98 7F054168 0C002382 */ jal play_sfx_a1 +/* 088C9C 7F05416C 00E03025 */ move $a2, $a3 +/* 088CA0 7F054170 10000047 */ b .L7F054290 +/* 088CA4 7F054174 8FAC001C */ lw $t4, 0x1c($sp) +.L7F054178: +/* 088CA8 7F054178 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088CAC 7F05417C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088CB0 7F054180 24050007 */ li $a1, 7 +/* 088CB4 7F054184 00003025 */ move $a2, $zero +/* 088CB8 7F054188 0C002382 */ jal play_sfx_a1 +/* 088CBC 7F05418C AFA70018 */ sw $a3, 0x18($sp) +/* 088CC0 7F054190 8FA70018 */ lw $a3, 0x18($sp) +/* 088CC4 7F054194 AFA2001C */ sw $v0, 0x1c($sp) +/* 088CC8 7F054198 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088CCC 7F05419C 10E0003B */ beqz $a3, .L7F05428C +/* 088CD0 7F0541A0 24050007 */ li $a1, 7 +/* 088CD4 7F0541A4 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088CD8 7F0541A8 0C002382 */ jal play_sfx_a1 +/* 088CDC 7F0541AC 00E03025 */ move $a2, $a3 +/* 088CE0 7F0541B0 10000037 */ b .L7F054290 +/* 088CE4 7F0541B4 8FAC001C */ lw $t4, 0x1c($sp) +.L7F0541B8: +/* 088CE8 7F0541B8 10E00034 */ beqz $a3, .L7F05428C +/* 088CEC 7F0541BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088CF0 7F0541C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088CF4 7F0541C4 240500DA */ li $a1, 218 +/* 088CF8 7F0541C8 0C002382 */ jal play_sfx_a1 +/* 088CFC 7F0541CC 00E03025 */ move $a2, $a3 +/* 088D00 7F0541D0 1000002F */ b .L7F054290 +/* 088D04 7F0541D4 8FAC001C */ lw $t4, 0x1c($sp) +.L7F0541D8: +/* 088D08 7F0541D8 10E0002C */ beqz $a3, .L7F05428C +/* 088D0C 7F0541DC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088D10 7F0541E0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088D14 7F0541E4 240500E1 */ li $a1, 225 +/* 088D18 7F0541E8 0C002382 */ jal play_sfx_a1 +/* 088D1C 7F0541EC 00E03025 */ move $a2, $a3 +/* 088D20 7F0541F0 10000027 */ b .L7F054290 +/* 088D24 7F0541F4 8FAC001C */ lw $t4, 0x1c($sp) +.L7F0541F8: +/* 088D28 7F0541F8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088D2C 7F0541FC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088D30 7F054200 240500D6 */ li $a1, 214 +/* 088D34 7F054204 0C002382 */ jal play_sfx_a1 +/* 088D38 7F054208 00003025 */ move $a2, $zero +/* 088D3C 7F05420C 1000001F */ b .L7F05428C +/* 088D40 7F054210 AFA2001C */ sw $v0, 0x1c($sp) +.L7F054214: +/* 088D44 7F054214 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088D48 7F054218 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088D4C 7F05421C 24050007 */ li $a1, 7 +/* 088D50 7F054220 00003025 */ move $a2, $zero +/* 088D54 7F054224 0C002382 */ jal play_sfx_a1 +/* 088D58 7F054228 AFA70018 */ sw $a3, 0x18($sp) +/* 088D5C 7F05422C 8FA70018 */ lw $a3, 0x18($sp) +/* 088D60 7F054230 10400008 */ beqz $v0, .L7F054254 +/* 088D64 7F054234 AFA2001C */ sw $v0, 0x1c($sp) +/* 088D68 7F054238 8FAB0020 */ lw $t3, 0x20($sp) +/* 088D6C 7F05423C 00402025 */ move $a0, $v0 +/* 088D70 7F054240 8D650010 */ lw $a1, 0x10($t3) +/* 088D74 7F054244 AFA70018 */ sw $a3, 0x18($sp) +/* 088D78 7F054248 0FC14E84 */ jal sub_GAME_7F053A10 +/* 088D7C 7F05424C 24A50008 */ addiu $a1, $a1, 8 +/* 088D80 7F054250 8FA70018 */ lw $a3, 0x18($sp) +.L7F054254: +/* 088D84 7F054254 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088D88 7F054258 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088D8C 7F05425C 240500CA */ li $a1, 202 +/* 088D90 7F054260 00003025 */ move $a2, $zero +/* 088D94 7F054264 0C002382 */ jal play_sfx_a1 +/* 088D98 7F054268 AFA70018 */ sw $a3, 0x18($sp) +/* 088D9C 7F05426C 8FA70018 */ lw $a3, 0x18($sp) +/* 088DA0 7F054270 AFA2001C */ sw $v0, 0x1c($sp) +/* 088DA4 7F054274 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088DA8 7F054278 10E00004 */ beqz $a3, .L7F05428C +/* 088DAC 7F05427C 240500CC */ li $a1, 204 +/* 088DB0 7F054280 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088DB4 7F054284 0C002382 */ jal play_sfx_a1 +/* 088DB8 7F054288 00E03025 */ move $a2, $a3 +def_7F053FD0: +.L7F05428C: +/* 088DBC 7F05428C 8FAC001C */ lw $t4, 0x1c($sp) +.L7F054290: +/* 088DC0 7F054290 8FAD0020 */ lw $t5, 0x20($sp) +/* 088DC4 7F054294 11800005 */ beqz $t4, .L7F0542AC +/* 088DC8 7F054298 00000000 */ nop +/* 088DCC 7F05429C 8DA50010 */ lw $a1, 0x10($t5) +/* 088DD0 7F0542A0 01802025 */ move $a0, $t4 +/* 088DD4 7F0542A4 0FC14E84 */ jal sub_GAME_7F053A10 +/* 088DD8 7F0542A8 24A50008 */ addiu $a1, $a1, 8 +.L7F0542AC: +/* 088DDC 7F0542AC 0FC14E8F */ jal sub_GAME_7F053A3C +/* 088DE0 7F0542B0 8FA40020 */ lw $a0, 0x20($sp) +/* 088DE4 7F0542B4 8FBF0014 */ lw $ra, 0x14($sp) +/* 088DE8 7F0542B8 27BD0020 */ addiu $sp, $sp, 0x20 +/* 088DEC 7F0542BC 03E00008 */ jr $ra +/* 088DF0 7F0542C0 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void play_door_closing_soundeffect_0(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:800533D4*/ +glabel door_closing_sound_table_0 +.word .L7F054308 +.word .L7F054328 +.word .L7F054348 +.word .L7F054368 +.word .L7F054484 +.word .L7F054484 +.word .L7F054388 +.word .L7F0543A8 +.word .L7F0543C8 +.word .L7F054484 +.word .L7F054484 +.word .L7F054484 +.word .L7F0543E8 +.word .L7F054408 +.word .L7F054428 +.word .L7F054448 +.word .L7F054468 +.text +glabel play_door_closing_soundeffect_0 +/* 088DF4 7F0542C4 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 088DF8 7F0542C8 AFBF0014 */ sw $ra, 0x14($sp) +/* 088DFC 7F0542CC AFA40020 */ sw $a0, 0x20($sp) +/* 088E00 7F0542D0 0FC14EC4 */ jal sub_GAME_7F053B10 +/* 088E04 7F0542D4 AFA0001C */ sw $zero, 0x1c($sp) +/* 088E08 7F0542D8 8FA70020 */ lw $a3, 0x20($sp) +/* 088E0C 7F0542DC 8FA6001C */ lw $a2, 0x1c($sp) +/* 088E10 7F0542E0 8CEE00A4 */ lw $t6, 0xa4($a3) +/* 088E14 7F0542E4 25CFFFFF */ addiu $t7, $t6, -1 +/* 088E18 7F0542E8 2DE10011 */ sltiu $at, $t7, 0x11 +/* 088E1C 7F0542EC 10200065 */ beqz $at, .L7F054484 +/* 088E20 7F0542F0 000F7880 */ sll $t7, $t7, 2 +/* 088E24 7F0542F4 3C018005 */ lui $at, %hi(door_closing_sound_table_0) +/* 088E28 7F0542F8 002F0821 */ addu $at, $at, $t7 +/* 088E2C 7F0542FC 8C2F33D4 */ lw $t7, %lo(door_closing_sound_table_0)($at) +.L7F054300: +/* 088E30 7F054300 01E00008 */ jr $t7 +/* 088E34 7F054304 00000000 */ nop +.L7F054308: +/* 088E38 7F054308 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088E3C 7F05430C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088E40 7F054310 240500D2 */ li $a1, 210 +/* 088E44 7F054314 0C002382 */ jal play_sfx_a1 +/* 088E48 7F054318 00003025 */ move $a2, $zero +/* 088E4C 7F05431C 00403025 */ move $a2, $v0 +/* 088E50 7F054320 10000058 */ b .L7F054484 +/* 088E54 7F054324 8FA70020 */ lw $a3, 0x20($sp) +.L7F054328: +/* 088E58 7F054328 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088E5C 7F05432C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088E60 7F054330 240500D2 */ li $a1, 210 +/* 088E64 7F054334 0C002382 */ jal play_sfx_a1 +/* 088E68 7F054338 00003025 */ move $a2, $zero +/* 088E6C 7F05433C 00403025 */ move $a2, $v0 +/* 088E70 7F054340 10000050 */ b .L7F054484 +/* 088E74 7F054344 8FA70020 */ lw $a3, 0x20($sp) +.L7F054348: +/* 088E78 7F054348 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088E7C 7F05434C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088E80 7F054350 240500CB */ li $a1, 203 +/* 088E84 7F054354 0C002382 */ jal play_sfx_a1 +/* 088E88 7F054358 00003025 */ move $a2, $zero +/* 088E8C 7F05435C 00403025 */ move $a2, $v0 +/* 088E90 7F054360 10000048 */ b .L7F054484 +/* 088E94 7F054364 8FA70020 */ lw $a3, 0x20($sp) +.L7F054368: +/* 088E98 7F054368 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088E9C 7F05436C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088EA0 7F054370 240500D7 */ li $a1, 215 +/* 088EA4 7F054374 0C002382 */ jal play_sfx_a1 +/* 088EA8 7F054378 00003025 */ move $a2, $zero +/* 088EAC 7F05437C 00403025 */ move $a2, $v0 +/* 088EB0 7F054380 10000040 */ b .L7F054484 +/* 088EB4 7F054384 8FA70020 */ lw $a3, 0x20($sp) +.L7F054388: +/* 088EB8 7F054388 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088EBC 7F05438C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088EC0 7F054390 240500D2 */ li $a1, 210 +/* 088EC4 7F054394 0C002382 */ jal play_sfx_a1 +/* 088EC8 7F054398 00003025 */ move $a2, $zero +/* 088ECC 7F05439C 00403025 */ move $a2, $v0 +/* 088ED0 7F0543A0 10000038 */ b .L7F054484 +/* 088ED4 7F0543A4 8FA70020 */ lw $a3, 0x20($sp) +.L7F0543A8: +/* 088ED8 7F0543A8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088EDC 7F0543AC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088EE0 7F0543B0 240500BB */ li $a1, 187 +/* 088EE4 7F0543B4 0C002382 */ jal play_sfx_a1 +/* 088EE8 7F0543B8 00003025 */ move $a2, $zero +/* 088EEC 7F0543BC 00403025 */ move $a2, $v0 +/* 088EF0 7F0543C0 10000030 */ b .L7F054484 +/* 088EF4 7F0543C4 8FA70020 */ lw $a3, 0x20($sp) +.L7F0543C8: +/* 088EF8 7F0543C8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088EFC 7F0543CC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088F00 7F0543D0 240500C3 */ li $a1, 195 +/* 088F04 7F0543D4 0C002382 */ jal play_sfx_a1 +/* 088F08 7F0543D8 00003025 */ move $a2, $zero +/* 088F0C 7F0543DC 00403025 */ move $a2, $v0 +/* 088F10 7F0543E0 10000028 */ b .L7F054484 +/* 088F14 7F0543E4 8FA70020 */ lw $a3, 0x20($sp) +.L7F0543E8: +/* 088F18 7F0543E8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088F1C 7F0543EC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088F20 7F0543F0 24050007 */ li $a1, 7 +/* 088F24 7F0543F4 0C002382 */ jal play_sfx_a1 +/* 088F28 7F0543F8 00003025 */ move $a2, $zero +/* 088F2C 7F0543FC 00403025 */ move $a2, $v0 +/* 088F30 7F054400 10000020 */ b .L7F054484 +/* 088F34 7F054404 8FA70020 */ lw $a3, 0x20($sp) +.L7F054408: +/* 088F38 7F054408 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088F3C 7F05440C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088F40 7F054410 240500DB */ li $a1, 219 +/* 088F44 7F054414 0C002382 */ jal play_sfx_a1 +/* 088F48 7F054418 00003025 */ move $a2, $zero +/* 088F4C 7F05441C 00403025 */ move $a2, $v0 +/* 088F50 7F054420 10000018 */ b .L7F054484 +/* 088F54 7F054424 8FA70020 */ lw $a3, 0x20($sp) +.L7F054428: +/* 088F58 7F054428 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088F5C 7F05442C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088F60 7F054430 240500E2 */ li $a1, 226 +/* 088F64 7F054434 0C002382 */ jal play_sfx_a1 +/* 088F68 7F054438 00003025 */ move $a2, $zero +/* 088F6C 7F05443C 00403025 */ move $a2, $v0 +/* 088F70 7F054440 10000010 */ b .L7F054484 +/* 088F74 7F054444 8FA70020 */ lw $a3, 0x20($sp) +.L7F054448: +/* 088F78 7F054448 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088F7C 7F05444C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088F80 7F054450 240500D7 */ li $a1, 215 +/* 088F84 7F054454 0C002382 */ jal play_sfx_a1 +/* 088F88 7F054458 00003025 */ move $a2, $zero +/* 088F8C 7F05445C 00403025 */ move $a2, $v0 +/* 088F90 7F054460 10000008 */ b .L7F054484 +/* 088F94 7F054464 8FA70020 */ lw $a3, 0x20($sp) +.L7F054468: +/* 088F98 7F054468 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 088F9C 7F05446C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 088FA0 7F054470 240500CB */ li $a1, 203 +/* 088FA4 7F054474 0C002382 */ jal play_sfx_a1 +/* 088FA8 7F054478 00003025 */ move $a2, $zero +/* 088FAC 7F05447C 00403025 */ move $a2, $v0 +/* 088FB0 7F054480 8FA70020 */ lw $a3, 0x20($sp) +def_7F054300: +.L7F054484: +/* 088FB4 7F054484 10C00006 */ beqz $a2, .L7F0544A0 +/* 088FB8 7F054488 00000000 */ nop +/* 088FBC 7F05448C 8CE50010 */ lw $a1, 0x10($a3) +/* 088FC0 7F054490 00C02025 */ move $a0, $a2 +/* 088FC4 7F054494 0FC14E84 */ jal sub_GAME_7F053A10 +/* 088FC8 7F054498 24A50008 */ addiu $a1, $a1, 8 +/* 088FCC 7F05449C 8FA70020 */ lw $a3, 0x20($sp) +.L7F0544A0: +/* 088FD0 7F0544A0 0FC14E8F */ jal sub_GAME_7F053A3C +/* 088FD4 7F0544A4 00E02025 */ move $a0, $a3 +/* 088FD8 7F0544A8 8FBF0014 */ lw $ra, 0x14($sp) +/* 088FDC 7F0544AC 27BD0020 */ addiu $sp, $sp, 0x20 +/* 088FE0 7F0544B0 03E00008 */ jr $ra +/* 088FE4 7F0544B4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void play_door_closing_soundeffect_1(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +/*D:80053418*/ +glabel door_closing_sound_table_1 +.word .L7F0544FC +.word .L7F05451C +.word .L7F05453C +.word .L7F05455C +.word .L7F05457C +.word .L7F05459C +.word .L7F0545BC +.word .L7F0545DC +.word .L7F0545FC +.word .L7F05461C +.word .L7F05463C +.word .L7F05465C +.word .L7F05467C +.word .L7F05469C +.word .L7F0546BC +.word .L7F0546DC +.word .L7F0546FC + +.text +glabel play_door_closing_soundeffect_1 +/* 088FE8 7F0544B8 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 088FEC 7F0544BC AFBF0014 */ sw $ra, 0x14($sp) +/* 088FF0 7F0544C0 AFA40020 */ sw $a0, 0x20($sp) +/* 088FF4 7F0544C4 0FC14EC4 */ jal sub_GAME_7F053B10 +/* 088FF8 7F0544C8 AFA0001C */ sw $zero, 0x1c($sp) +/* 088FFC 7F0544CC 8FA70020 */ lw $a3, 0x20($sp) +/* 089000 7F0544D0 8FA6001C */ lw $a2, 0x1c($sp) +/* 089004 7F0544D4 8CEE00A4 */ lw $t6, 0xa4($a3) +/* 089008 7F0544D8 25CFFFFF */ addiu $t7, $t6, -1 +/* 08900C 7F0544DC 2DE10011 */ sltiu $at, $t7, 0x11 +/* 089010 7F0544E0 1020008D */ beqz $at, .L7F054718 +/* 089014 7F0544E4 000F7880 */ sll $t7, $t7, 2 +/* 089018 7F0544E8 3C018005 */ lui $at, %hi(door_closing_sound_table_1) +/* 08901C 7F0544EC 002F0821 */ addu $at, $at, $t7 +/* 089020 7F0544F0 8C2F3418 */ lw $t7, %lo(door_closing_sound_table_1)($at) +/* 089024 7F0544F4 01E00008 */ jr $t7 +/* 089028 7F0544F8 00000000 */ nop +.L7F0544FC: +/* 08902C 7F0544FC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089030 7F054500 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089034 7F054504 240500D2 */ li $a1, 210 +/* 089038 7F054508 0C002382 */ jal play_sfx_a1 +/* 08903C 7F05450C 00003025 */ move $a2, $zero +/* 089040 7F054510 00403025 */ move $a2, $v0 +/* 089044 7F054514 10000080 */ b .L7F054718 +/* 089048 7F054518 8FA70020 */ lw $a3, 0x20($sp) +.L7F05451C: +/* 08904C 7F05451C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089050 7F054520 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089054 7F054524 240500D2 */ li $a1, 210 +/* 089058 7F054528 0C002382 */ jal play_sfx_a1 +/* 08905C 7F05452C 00003025 */ move $a2, $zero +/* 089060 7F054530 00403025 */ move $a2, $v0 +/* 089064 7F054534 10000078 */ b .L7F054718 +/* 089068 7F054538 8FA70020 */ lw $a3, 0x20($sp) +.L7F05453C: +/* 08906C 7F05453C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089070 7F054540 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089074 7F054544 240500CB */ li $a1, 203 +/* 089078 7F054548 0C002382 */ jal play_sfx_a1 +/* 08907C 7F05454C 00003025 */ move $a2, $zero +/* 089080 7F054550 00403025 */ move $a2, $v0 +/* 089084 7F054554 10000070 */ b .L7F054718 +/* 089088 7F054558 8FA70020 */ lw $a3, 0x20($sp) +.L7F05455C: +/* 08908C 7F05455C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089090 7F054560 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089094 7F054564 240500D7 */ li $a1, 215 +/* 089098 7F054568 0C002382 */ jal play_sfx_a1 +/* 08909C 7F05456C 00003025 */ move $a2, $zero +/* 0890A0 7F054570 00403025 */ move $a2, $v0 +/* 0890A4 7F054574 10000068 */ b .L7F054718 +/* 0890A8 7F054578 8FA70020 */ lw $a3, 0x20($sp) +.L7F05457C: +/* 0890AC 7F05457C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0890B0 7F054580 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0890B4 7F054584 240500BB */ li $a1, 187 +/* 0890B8 7F054588 0C002382 */ jal play_sfx_a1 +/* 0890BC 7F05458C 00003025 */ move $a2, $zero +/* 0890C0 7F054590 00403025 */ move $a2, $v0 +/* 0890C4 7F054594 10000060 */ b .L7F054718 +/* 0890C8 7F054598 8FA70020 */ lw $a3, 0x20($sp) +.L7F05459C: +/* 0890CC 7F05459C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0890D0 7F0545A0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0890D4 7F0545A4 24050007 */ li $a1, 7 +/* 0890D8 7F0545A8 0C002382 */ jal play_sfx_a1 +/* 0890DC 7F0545AC 00003025 */ move $a2, $zero +/* 0890E0 7F0545B0 00403025 */ move $a2, $v0 +/* 0890E4 7F0545B4 10000058 */ b .L7F054718 +/* 0890E8 7F0545B8 8FA70020 */ lw $a3, 0x20($sp) +.L7F0545BC: +/* 0890EC 7F0545BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0890F0 7F0545C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0890F4 7F0545C4 240500D2 */ li $a1, 210 +/* 0890F8 7F0545C8 0C002382 */ jal play_sfx_a1 +/* 0890FC 7F0545CC 00003025 */ move $a2, $zero +/* 089100 7F0545D0 00403025 */ move $a2, $v0 +/* 089104 7F0545D4 10000050 */ b .L7F054718 +/* 089108 7F0545D8 8FA70020 */ lw $a3, 0x20($sp) +.L7F0545DC: +/* 08910C 7F0545DC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089110 7F0545E0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089114 7F0545E4 240500BB */ li $a1, 187 +/* 089118 7F0545E8 0C002382 */ jal play_sfx_a1 +/* 08911C 7F0545EC 00003025 */ move $a2, $zero +/* 089120 7F0545F0 00403025 */ move $a2, $v0 +/* 089124 7F0545F4 10000048 */ b .L7F054718 +/* 089128 7F0545F8 8FA70020 */ lw $a3, 0x20($sp) +.L7F0545FC: +/* 08912C 7F0545FC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089130 7F054600 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089134 7F054604 240500C3 */ li $a1, 195 +/* 089138 7F054608 0C002382 */ jal play_sfx_a1 +/* 08913C 7F05460C 00003025 */ move $a2, $zero +/* 089140 7F054610 00403025 */ move $a2, $v0 +/* 089144 7F054614 10000040 */ b .L7F054718 +/* 089148 7F054618 8FA70020 */ lw $a3, 0x20($sp) +.L7F05461C: +/* 08914C 7F05461C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089150 7F054620 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089154 7F054624 240500C5 */ li $a1, 197 +/* 089158 7F054628 0C002382 */ jal play_sfx_a1 +/* 08915C 7F05462C 00003025 */ move $a2, $zero +/* 089160 7F054630 00403025 */ move $a2, $v0 +/* 089164 7F054634 10000038 */ b .L7F054718 +/* 089168 7F054638 8FA70020 */ lw $a3, 0x20($sp) +.L7F05463C: +/* 08916C 7F05463C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089170 7F054640 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089174 7F054644 240500C7 */ li $a1, 199 +/* 089178 7F054648 0C002382 */ jal play_sfx_a1 +/* 08917C 7F05464C 00003025 */ move $a2, $zero +/* 089180 7F054650 00403025 */ move $a2, $v0 +/* 089184 7F054654 10000030 */ b .L7F054718 +/* 089188 7F054658 8FA70020 */ lw $a3, 0x20($sp) +.L7F05465C: +/* 08918C 7F05465C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089190 7F054660 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089194 7F054664 240500C9 */ li $a1, 201 +/* 089198 7F054668 0C002382 */ jal play_sfx_a1 +/* 08919C 7F05466C 00003025 */ move $a2, $zero +/* 0891A0 7F054670 00403025 */ move $a2, $v0 +/* 0891A4 7F054674 10000028 */ b .L7F054718 +/* 0891A8 7F054678 8FA70020 */ lw $a3, 0x20($sp) +.L7F05467C: +/* 0891AC 7F05467C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0891B0 7F054680 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0891B4 7F054684 24050007 */ li $a1, 7 +/* 0891B8 7F054688 0C002382 */ jal play_sfx_a1 +/* 0891BC 7F05468C 00003025 */ move $a2, $zero +/* 0891C0 7F054690 00403025 */ move $a2, $v0 +/* 0891C4 7F054694 10000020 */ b .L7F054718 +/* 0891C8 7F054698 8FA70020 */ lw $a3, 0x20($sp) +.L7F05469C: +/* 0891CC 7F05469C 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0891D0 7F0546A0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0891D4 7F0546A4 240500DB */ li $a1, 219 +/* 0891D8 7F0546A8 0C002382 */ jal play_sfx_a1 +/* 0891DC 7F0546AC 00003025 */ move $a2, $zero +/* 0891E0 7F0546B0 00403025 */ move $a2, $v0 +/* 0891E4 7F0546B4 10000018 */ b .L7F054718 +/* 0891E8 7F0546B8 8FA70020 */ lw $a3, 0x20($sp) +.L7F0546BC: +/* 0891EC 7F0546BC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 0891F0 7F0546C0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 0891F4 7F0546C4 240500E2 */ li $a1, 226 +/* 0891F8 7F0546C8 0C002382 */ jal play_sfx_a1 +/* 0891FC 7F0546CC 00003025 */ move $a2, $zero +/* 089200 7F0546D0 00403025 */ move $a2, $v0 +/* 089204 7F0546D4 10000010 */ b .L7F054718 +/* 089208 7F0546D8 8FA70020 */ lw $a3, 0x20($sp) +.L7F0546DC: +/* 08920C 7F0546DC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089210 7F0546E0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089214 7F0546E4 240500D7 */ li $a1, 215 +/* 089218 7F0546E8 0C002382 */ jal play_sfx_a1 +/* 08921C 7F0546EC 00003025 */ move $a2, $zero +/* 089220 7F0546F0 00403025 */ move $a2, $v0 +/* 089224 7F0546F4 10000008 */ b .L7F054718 +/* 089228 7F0546F8 8FA70020 */ lw $a3, 0x20($sp) +.L7F0546FC: +/* 08922C 7F0546FC 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 089230 7F054700 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 089234 7F054704 240500CB */ li $a1, 203 +/* 089238 7F054708 0C002382 */ jal play_sfx_a1 +/* 08923C 7F05470C 00003025 */ move $a2, $zero +/* 089240 7F054710 00403025 */ move $a2, $v0 +/* 089244 7F054714 8FA70020 */ lw $a3, 0x20($sp) +def_7F0544F4: +.L7F054718: +/* 089248 7F054718 10C00006 */ beqz $a2, .L7F054734 +/* 08924C 7F05471C 00000000 */ nop +/* 089250 7F054720 8CE50010 */ lw $a1, 0x10($a3) +/* 089254 7F054724 00C02025 */ move $a0, $a2 +/* 089258 7F054728 0FC14E84 */ jal sub_GAME_7F053A10 +/* 08925C 7F05472C 24A50008 */ addiu $a1, $a1, 8 +/* 089260 7F054730 8FA70020 */ lw $a3, 0x20($sp) +.L7F054734: +/* 089264 7F054734 0FC14E8F */ jal sub_GAME_7F053A3C +/* 089268 7F054738 00E02025 */ move $a0, $a3 +/* 08926C 7F05473C 8FBF0014 */ lw $ra, 0x14($sp) +/* 089270 7F054740 27BD0020 */ addiu $sp, $sp, 0x20 +/* 089274 7F054744 03E00008 */ jr $ra +/* 089278 7F054748 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F05474C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F05474C +/* 08927C 7F05474C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 089280 7F054750 AFBF0014 */ sw $ra, 0x14($sp) +/* 089284 7F054754 8C8E0008 */ lw $t6, 8($a0) +/* 089288 7F054758 8C980064 */ lw $t8, 0x64($a0) +/* 08928C 7F05475C 3C017FFF */ lui $at, (0x7FFFFFFF >> 16) # lui $at, 0x7fff +/* 089290 7F054760 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 089294 7F054764 01C17824 */ and $t7, $t6, $at +/* 089298 7F054768 37190200 */ ori $t9, $t8, 0x200 +/* 08929C 7F05476C AC8F0008 */ sw $t7, 8($a0) +/* 0892A0 7F054770 AC990064 */ sw $t9, 0x64($a0) +/* 0892A4 7F054774 0FC14EDE */ jal play_door_opening_soundeffect_0 +/* 0892A8 7F054778 AFA40018 */ sw $a0, 0x18($sp) +/* 0892AC 7F05477C 0FC14D66 */ jal sub_GAME_7F053598 +/* 0892B0 7F054780 8FA40018 */ lw $a0, 0x18($sp) +/* 0892B4 7F054784 8FA40018 */ lw $a0, 0x18($sp) +/* 0892B8 7F054788 24010008 */ li $at, 8 +/* 0892BC 7F05478C 9488009A */ lhu $t0, 0x9a($a0) +/* 0892C0 7F054790 5501000F */ bnel $t0, $at, .L7F0547D0 +/* 0892C4 7F054794 8FBF0014 */ lw $ra, 0x14($sp) +/* 0892C8 7F054798 8C890008 */ lw $t1, 8($a0) +/* 0892CC 7F05479C 8C820068 */ lw $v0, 0x68($a0) +/* 0892D0 7F0547A0 44802000 */ mtc1 $zero, $f4 +/* 0892D4 7F0547A4 3C010200 */ lui $at, 0x200 +/* 0892D8 7F0547A8 01215025 */ or $t2, $t1, $at +/* 0892DC 7F0547AC AC8A0008 */ sw $t2, 8($a0) +/* 0892E0 7F0547B0 10400002 */ beqz $v0, .L7F0547BC +/* 0892E4 7F0547B4 E4840088 */ swc1 $f4, 0x88($a0) +/* 0892E8 7F0547B8 AC400000 */ sw $zero, ($v0) +.L7F0547BC: +/* 0892EC 7F0547BC 8C8B0008 */ lw $t3, 8($a0) +/* 0892F0 7F0547C0 2401FEFF */ li $at, -257 +/* 0892F4 7F0547C4 01616024 */ and $t4, $t3, $at +/* 0892F8 7F0547C8 AC8C0008 */ sw $t4, 8($a0) +/* 0892FC 7F0547CC 8FBF0014 */ lw $ra, 0x14($sp) +.L7F0547D0: +/* 089300 7F0547D0 27BD0018 */ addiu $sp, $sp, 0x18 +/* 089304 7F0547D4 03E00008 */ jr $ra +/* 089308 7F0547D8 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0547DC(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0547DC +/* 08930C 7F0547DC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 089310 7F0547E0 AFBF0014 */ sw $ra, 0x14($sp) +/* 089314 7F0547E4 8C8E0008 */ lw $t6, 8($a0) +/* 089318 7F0547E8 3C017FFF */ lui $at, (0x7FFFFFFF >> 16) # lui $at, 0x7fff +/* 08931C 7F0547EC 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 089320 7F0547F0 01C17824 */ and $t7, $t6, $at +/* 089324 7F0547F4 0FC14FD9 */ jal play_door_opening_soundeffect_1 +/* 089328 7F0547F8 AC8F0008 */ sw $t7, 8($a0) +/* 08932C 7F0547FC 8FBF0014 */ lw $ra, 0x14($sp) +/* 089330 7F054800 27BD0018 */ addiu $sp, $sp, 0x18 +/* 089334 7F054804 03E00008 */ jr $ra +/* 089338 7F054808 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F05480C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F05480C +/* 08933C 7F05480C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 089340 7F054810 AFBF0014 */ sw $ra, 0x14($sp) +/* 089344 7F054814 0FC150B1 */ jal play_door_closing_soundeffect_0 +/* 089348 7F054818 AFA40018 */ sw $a0, 0x18($sp) +/* 08934C 7F05481C 8FA50018 */ lw $a1, 0x18($sp) +/* 089350 7F054820 24010008 */ li $at, 8 +/* 089354 7F054824 94AE009A */ lhu $t6, 0x9a($a1) +/* 089358 7F054828 55C10011 */ bnel $t6, $at, .L7F054870 +/* 08935C 7F05482C 8FBF0014 */ lw $ra, 0x14($sp) +/* 089360 7F054830 8CA40010 */ lw $a0, 0x10($a1) +/* 089364 7F054834 0FC0FF6A */ jal sub_GAME_7F03FDA8 +/* 089368 7F054838 AFA50018 */ sw $a1, 0x18($sp) +/* 08936C 7F05483C 8FA50018 */ lw $a1, 0x18($sp) +/* 089370 7F054840 8CAF0064 */ lw $t7, 0x64($a1) +/* 089374 7F054844 31F80080 */ andi $t8, $t7, 0x80 +/* 089378 7F054848 53000009 */ beql $t8, $zero, .L7F054870 +/* 08937C 7F05484C 8FBF0014 */ lw $ra, 0x14($sp) +/* 089380 7F054850 8CA2006C */ lw $v0, 0x6c($a1) +/* 089384 7F054854 8C590000 */ lw $t9, ($v0) +/* 089388 7F054858 37280001 */ ori $t0, $t9, 1 +/* 08938C 7F05485C AC480000 */ sw $t0, ($v0) +/* 089390 7F054860 8CA4006C */ lw $a0, 0x6c($a1) +/* 089394 7F054864 0FC15FF4 */ jal reset_array_of_0x10_floats +/* 089398 7F054868 24840020 */ addiu $a0, $a0, 0x20 +/* 08939C 7F05486C 8FBF0014 */ lw $ra, 0x14($sp) +.L7F054870: +/* 0893A0 7F054870 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0893A4 7F054874 03E00008 */ jr $ra +/* 0893A8 7F054878 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F05487C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F05487C +/* 0893AC 7F05487C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0893B0 7F054880 AFBF0014 */ sw $ra, 0x14($sp) +/* 0893B4 7F054884 0FC1512E */ jal play_door_closing_soundeffect_1 +/* 0893B8 7F054888 AFA40018 */ sw $a0, 0x18($sp) +/* 0893BC 7F05488C 0FC14D71 */ jal sub_GAME_7F0535C4 +/* 0893C0 7F054890 8FA40018 */ lw $a0, 0x18($sp) +/* 0893C4 7F054894 8FBF0014 */ lw $ra, 0x14($sp) +/* 0893C8 7F054898 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0893CC 7F05489C 03E00008 */ jr $ra +/* 0893D0 7F0548A0 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0548A4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0548A4 +/* 0893D4 7F0548A4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0893D8 7F0548A8 24010001 */ li $at, 1 +/* 0893DC 7F0548AC 14A1000E */ bne $a1, $at, .L7F0548E8 +/* 0893E0 7F0548B0 AFBF0014 */ sw $ra, 0x14($sp) +/* 0893E4 7F0548B4 808200BC */ lb $v0, 0xbc($a0) +/* 0893E8 7F0548B8 24010003 */ li $at, 3 +/* 0893EC 7F0548BC 50400004 */ beql $v0, $zero, .L7F0548D0 +/* 0893F0 7F0548C0 AFA40018 */ sw $a0, 0x18($sp) +/* 0893F4 7F0548C4 14410006 */ bne $v0, $at, .L7F0548E0 +/* 0893F8 7F0548C8 00000000 */ nop +/* 0893FC 7F0548CC AFA40018 */ sw $a0, 0x18($sp) +.L7F0548D0: +/* 089400 7F0548D0 0FC151D3 */ jal sub_GAME_7F05474C +/* 089404 7F0548D4 AFA5001C */ sw $a1, 0x1c($sp) +/* 089408 7F0548D8 8FA40018 */ lw $a0, 0x18($sp) +/* 08940C 7F0548DC 8FA5001C */ lw $a1, 0x1c($sp) +.L7F0548E0: +/* 089410 7F0548E0 10000025 */ b .L7F054978 +/* 089414 7F0548E4 A08500BC */ sb $a1, 0xbc($a0) +.L7F0548E8: +/* 089418 7F0548E8 24010002 */ li $at, 2 +/* 08941C 7F0548EC 54A10022 */ bnel $a1, $at, .L7F054978 +/* 089420 7F0548F0 A08500BC */ sb $a1, 0xbc($a0) +/* 089424 7F0548F4 808200BC */ lb $v0, 0xbc($a0) +/* 089428 7F0548F8 1440000D */ bnez $v0, .L7F054930 +/* 08942C 7F0548FC 00000000 */ nop +/* 089430 7F054900 44802000 */ mtc1 $zero, $f4 +/* 089434 7F054904 C48600B4 */ lwc1 $f6, 0xb4($a0) +/* 089438 7F054908 4606203C */ c.lt.s $f4, $f6 +/* 08943C 7F05490C 00000000 */ nop +/* 089440 7F054910 45000007 */ bc1f .L7F054930 +/* 089444 7F054914 00000000 */ nop +/* 089448 7F054918 AFA40018 */ sw $a0, 0x18($sp) +/* 08944C 7F05491C 0FC151F7 */ jal sub_GAME_7F0547DC +/* 089450 7F054920 AFA5001C */ sw $a1, 0x1c($sp) +/* 089454 7F054924 8FA40018 */ lw $a0, 0x18($sp) +/* 089458 7F054928 8FA5001C */ lw $a1, 0x1c($sp) +/* 08945C 7F05492C 808200BC */ lb $v0, 0xbc($a0) +.L7F054930: +/* 089460 7F054930 10400003 */ beqz $v0, .L7F054940 +/* 089464 7F054934 24010003 */ li $at, 3 +/* 089468 7F054938 14410008 */ bne $v0, $at, .L7F05495C +/* 08946C 7F05493C 00000000 */ nop +.L7F054940: +/* 089470 7F054940 44804000 */ mtc1 $zero, $f8 +/* 089474 7F054944 C48A00B4 */ lwc1 $f10, 0xb4($a0) +/* 089478 7F054948 24010003 */ li $at, 3 +/* 08947C 7F05494C 460A403C */ c.lt.s $f8, $f10 +/* 089480 7F054950 00000000 */ nop +/* 089484 7F054954 45000003 */ bc1f .L7F054964 +/* 089488 7F054958 00000000 */ nop +.L7F05495C: +/* 08948C 7F05495C 10000006 */ b .L7F054978 +/* 089490 7F054960 A08500BC */ sb $a1, 0xbc($a0) +.L7F054964: +/* 089494 7F054964 54410005 */ bnel $v0, $at, .L7F05497C +/* 089498 7F054968 8FBF0014 */ lw $ra, 0x14($sp) +/* 08949C 7F05496C 10000002 */ b .L7F054978 +/* 0894A0 7F054970 A08000BC */ sb $zero, 0xbc($a0) +/* 0894A4 7F054974 A08500BC */ sb $a1, 0xbc($a0) +.L7F054978: +/* 0894A8 7F054978 8FBF0014 */ lw $ra, 0x14($sp) +.L7F05497C: +/* 0894AC 7F05497C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0894B0 7F054980 03E00008 */ jr $ra +/* 0894B4 7F054984 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void set_door_state(void) { + +} +#else +GLOBAL_ASM( +.text +glabel set_door_state +/* 0894B8 7F054988 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0894BC 7F05498C AFBF0024 */ sw $ra, 0x24($sp) +/* 0894C0 7F054990 AFB20020 */ sw $s2, 0x20($sp) +/* 0894C4 7F054994 AFB1001C */ sw $s1, 0x1c($sp) +/* 0894C8 7F054998 AFB00018 */ sw $s0, 0x18($sp) +/* 0894CC 7F05499C 8C8E000C */ lw $t6, 0xc($a0) +/* 0894D0 7F0549A0 00808825 */ move $s1, $a0 +/* 0894D4 7F0549A4 00A09025 */ move $s2, $a1 +/* 0894D8 7F0549A8 000E7840 */ sll $t7, $t6, 1 +/* 0894DC 7F0549AC 05E10008 */ bgez $t7, .L7F0549D0 +/* 0894E0 7F0549B0 24010001 */ li $at, 1 +/* 0894E4 7F0549B4 14A10006 */ bne $a1, $at, .L7F0549D0 +/* 0894E8 7F0549B8 00000000 */ nop +/* 0894EC 7F0549BC 809800BC */ lb $t8, 0xbc($a0) +/* 0894F0 7F0549C0 24120002 */ li $s2, 2 +/* 0894F4 7F0549C4 17000002 */ bnez $t8, .L7F0549D0 +/* 0894F8 7F0549C8 00000000 */ nop +/* 0894FC 7F0549CC 24050003 */ li $a1, 3 +.L7F0549D0: +/* 089500 7F0549D0 0FC15229 */ jal sub_GAME_7F0548A4 +/* 089504 7F0549D4 02202025 */ move $a0, $s1 +/* 089508 7F0549D8 8E3000C8 */ lw $s0, 0xc8($s1) +/* 08950C 7F0549DC 5200000B */ beql $s0, $zero, .L7F054A0C +/* 089510 7F0549E0 8FBF0024 */ lw $ra, 0x24($sp) +/* 089514 7F0549E4 12110008 */ beq $s0, $s1, .L7F054A08 +/* 089518 7F0549E8 02002025 */ move $a0, $s0 +.L7F0549EC: +/* 08951C 7F0549EC 0FC15229 */ jal sub_GAME_7F0548A4 +/* 089520 7F0549F0 02402825 */ move $a1, $s2 +/* 089524 7F0549F4 8E1000C8 */ lw $s0, 0xc8($s0) +/* 089528 7F0549F8 52000004 */ beql $s0, $zero, .L7F054A0C +/* 08952C 7F0549FC 8FBF0024 */ lw $ra, 0x24($sp) +/* 089530 7F054A00 5611FFFA */ bnel $s0, $s1, .L7F0549EC +/* 089534 7F054A04 02002025 */ move $a0, $s0 +.L7F054A08: +/* 089538 7F054A08 8FBF0024 */ lw $ra, 0x24($sp) +.L7F054A0C: +/* 08953C 7F054A0C 8FB00018 */ lw $s0, 0x18($sp) +/* 089540 7F054A10 8FB1001C */ lw $s1, 0x1c($sp) +/* 089544 7F054A14 8FB20020 */ lw $s2, 0x20($sp) +/* 089548 7F054A18 03E00008 */ jr $ra +/* 08954C 7F054A1C 27BD0028 */ addiu $sp, $sp, 0x28 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F054A20(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F054A20 +/* 089550 7F054A20 808300BC */ lb $v1, 0xbc($a0) +/* 089554 7F054A24 2C620001 */ sltiu $v0, $v1, 1 +/* 089558 7F054A28 14400004 */ bnez $v0, .L7F054A3C +/* 08955C 7F054A2C 38620003 */ xori $v0, $v1, 3 +/* 089560 7F054A30 2C420001 */ sltiu $v0, $v0, 1 +/* 089564 7F054A34 10400009 */ beqz $v0, .L7F054A5C +/* 089568 7F054A38 00000000 */ nop +.L7F054A3C: +/* 08956C 7F054A3C 44802000 */ mtc1 $zero, $f4 +/* 089570 7F054A40 C48600B4 */ lwc1 $f6, 0xb4($a0) +/* 089574 7F054A44 00001025 */ move $v0, $zero +/* 089578 7F054A48 4604303E */ c.le.s $f6, $f4 +/* 08957C 7F054A4C 00000000 */ nop +/* 089580 7F054A50 45000002 */ bc1f .L7F054A5C +/* 089584 7F054A54 00000000 */ nop +/* 089588 7F054A58 24020001 */ li $v0, 1 +.L7F054A5C: +/* 08958C 7F054A5C 03E00008 */ jr $ra +/* 089590 7F054A60 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F054A64(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F054A64 +/* 089594 7F054A64 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 089598 7F054A68 AFB30020 */ sw $s3, 0x20($sp) +/* 08959C 7F054A6C AFB00014 */ sw $s0, 0x14($sp) +/* 0895A0 7F054A70 00A08025 */ move $s0, $a1 +/* 0895A4 7F054A74 27B30048 */ addiu $s3, $sp, 0x48 +/* 0895A8 7F054A78 AFBF0024 */ sw $ra, 0x24($sp) +/* 0895AC 7F054A7C AFB2001C */ sw $s2, 0x1c($sp) +/* 0895B0 7F054A80 AFB10018 */ sw $s1, 0x18($sp) +/* 0895B4 7F054A84 00009025 */ move $s2, $zero +/* 0895B8 7F054A88 0FC0F2E3 */ jal sub_GAME_7F03CB8C +/* 0895BC 7F054A8C 02602825 */ move $a1, $s3 +/* 0895C0 7F054A90 8FA40048 */ lw $a0, 0x48($sp) +/* 0895C4 7F054A94 02608825 */ move $s1, $s3 +/* 0895C8 7F054A98 27B3002C */ addiu $s3, $sp, 0x2c +/* 0895CC 7F054A9C 04820031 */ bltzl $a0, .L7F054B64 +/* 0895D0 7F054AA0 8FBF0024 */ lw $ra, 0x24($sp) +.L7F054AA4: +/* 0895D4 7F054AA4 0FC2CF03 */ jal sub_GAME_7F0B3C0C +/* 0895D8 7F054AA8 02602825 */ move $a1, $s3 +/* 0895DC 7F054AAC 10400028 */ beqz $v0, .L7F054B50 +/* 0895E0 7F054AB0 0012102B */ sltu $v0, $zero, $s2 +/* 0895E4 7F054AB4 1040001E */ beqz $v0, .L7F054B30 +/* 0895E8 7F054AB8 24120001 */ li $s2, 1 +/* 0895EC 7F054ABC C7A4002C */ lwc1 $f4, 0x2c($sp) +/* 0895F0 7F054AC0 C6060000 */ lwc1 $f6, ($s0) +/* 0895F4 7F054AC4 4606203C */ c.lt.s $f4, $f6 +/* 0895F8 7F054AC8 00000000 */ nop +/* 0895FC 7F054ACC 45020003 */ bc1fl .L7F054ADC +/* 089600 7F054AD0 C7A80030 */ lwc1 $f8, 0x30($sp) +/* 089604 7F054AD4 E6040000 */ swc1 $f4, ($s0) +/* 089608 7F054AD8 C7A80030 */ lwc1 $f8, 0x30($sp) +.L7F054ADC: +/* 08960C 7F054ADC C60A0004 */ lwc1 $f10, 4($s0) +/* 089610 7F054AE0 460A403C */ c.lt.s $f8, $f10 +/* 089614 7F054AE4 00000000 */ nop +/* 089618 7F054AE8 45020003 */ bc1fl .L7F054AF8 +/* 08961C 7F054AEC C6100008 */ lwc1 $f16, 8($s0) +/* 089620 7F054AF0 E6080004 */ swc1 $f8, 4($s0) +/* 089624 7F054AF4 C6100008 */ lwc1 $f16, 8($s0) +.L7F054AF8: +/* 089628 7F054AF8 C7B20034 */ lwc1 $f18, 0x34($sp) +/* 08962C 7F054AFC 4612803C */ c.lt.s $f16, $f18 +/* 089630 7F054B00 00000000 */ nop +/* 089634 7F054B04 45020003 */ bc1fl .L7F054B14 +/* 089638 7F054B08 C606000C */ lwc1 $f6, 0xc($s0) +/* 08963C 7F054B0C E6120008 */ swc1 $f18, 8($s0) +/* 089640 7F054B10 C606000C */ lwc1 $f6, 0xc($s0) +.L7F054B14: +/* 089644 7F054B14 C7A40038 */ lwc1 $f4, 0x38($sp) +/* 089648 7F054B18 4604303C */ c.lt.s $f6, $f4 +/* 08964C 7F054B1C 00000000 */ nop +/* 089650 7F054B20 4502000C */ bc1fl .L7F054B54 +/* 089654 7F054B24 8E240004 */ lw $a0, 4($s1) +/* 089658 7F054B28 10000009 */ b .L7F054B50 +/* 08965C 7F054B2C E604000C */ swc1 $f4, 0xc($s0) +.L7F054B30: +/* 089660 7F054B30 C7AA002C */ lwc1 $f10, 0x2c($sp) +/* 089664 7F054B34 E60A0000 */ swc1 $f10, ($s0) +/* 089668 7F054B38 C7A80030 */ lwc1 $f8, 0x30($sp) +/* 08966C 7F054B3C E6080004 */ swc1 $f8, 4($s0) +/* 089670 7F054B40 C7B00034 */ lwc1 $f16, 0x34($sp) +/* 089674 7F054B44 E6100008 */ swc1 $f16, 8($s0) +/* 089678 7F054B48 C7B20038 */ lwc1 $f18, 0x38($sp) +/* 08967C 7F054B4C E612000C */ swc1 $f18, 0xc($s0) +.L7F054B50: +/* 089680 7F054B50 8E240004 */ lw $a0, 4($s1) +.L7F054B54: +/* 089684 7F054B54 26310004 */ addiu $s1, $s1, 4 +/* 089688 7F054B58 0481FFD2 */ bgez $a0, .L7F054AA4 +/* 08968C 7F054B5C 00000000 */ nop +/* 089690 7F054B60 8FBF0024 */ lw $ra, 0x24($sp) +.L7F054B64: +/* 089694 7F054B64 02401025 */ move $v0, $s2 +/* 089698 7F054B68 8FB2001C */ lw $s2, 0x1c($sp) +/* 08969C 7F054B6C 8FB00014 */ lw $s0, 0x14($sp) +/* 0896A0 7F054B70 8FB10018 */ lw $s1, 0x18($sp) +/* 0896A4 7F054B74 8FB30020 */ lw $s3, 0x20($sp) +/* 0896A8 7F054B78 03E00008 */ jr $ra +/* 0896AC 7F054B7C 27BD0068 */ addiu $sp, $sp, 0x68 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F054B80(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F054B80 +/* 0896B0 7F054B80 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 0896B4 7F054B84 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0896B8 7F054B88 44818000 */ mtc1 $at, $f16 +/* 0896BC 7F054B8C AFBF0014 */ sw $ra, 0x14($sp) +/* 0896C0 7F054B90 AFA40020 */ sw $a0, 0x20($sp) +/* 0896C4 7F054B94 AFA50024 */ sw $a1, 0x24($sp) +/* 0896C8 7F054B98 0FC2ECE6 */ jal return_nearfog_values +/* 0896CC 7F054B9C E7B0001C */ swc1 $f16, 0x1c($sp) +/* 0896D0 7F054BA0 10400028 */ beqz $v0, .L7F054C44 +/* 0896D4 7F054BA4 C7B0001C */ lwc1 $f16, 0x1c($sp) +/* 0896D8 7F054BA8 8FAE0020 */ lw $t6, 0x20($sp) +/* 0896DC 7F054BAC C4440008 */ lwc1 $f4, 8($v0) +/* 0896E0 7F054BB0 C5C60018 */ lwc1 $f6, 0x18($t6) +/* 0896E4 7F054BB4 4606203C */ c.lt.s $f4, $f6 +/* 0896E8 7F054BB8 00000000 */ nop +/* 0896EC 7F054BBC 45020022 */ bc1fl .L7F054C48 +/* 0896F0 7F054BC0 8FBF0014 */ lw $ra, 0x14($sp) +/* 0896F4 7F054BC4 AFA20018 */ sw $v0, 0x18($sp) +/* 0896F8 7F054BC8 0FC1E121 */ jal getPlayer_c_lodscalez +/* 0896FC 7F054BCC E7B0001C */ swc1 $f16, 0x1c($sp) +/* 089700 7F054BD0 8FA30018 */ lw $v1, 0x18($sp) +/* 089704 7F054BD4 8FAF0020 */ lw $t7, 0x20($sp) +/* 089708 7F054BD8 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 08970C 7F054BDC C4620008 */ lwc1 $f2, 8($v1) +/* 089710 7F054BE0 C5E80018 */ lwc1 $f8, 0x18($t7) +/* 089714 7F054BE4 44819000 */ mtc1 $at, $f18 +/* 089718 7F054BE8 C7A60024 */ lwc1 $f6, 0x24($sp) +/* 08971C 7F054BEC 46024281 */ sub.s $f10, $f8, $f2 +/* 089720 7F054BF0 C46E0004 */ lwc1 $f14, 4($v1) +/* 089724 7F054BF4 C7B0001C */ lwc1 $f16, 0x1c($sp) +/* 089728 7F054BF8 46125102 */ mul.s $f4, $f10, $f18 +/* 08972C 7F054BFC 46062203 */ div.s $f8, $f4, $f6 +/* 089730 7F054C00 46024280 */ add.s $f10, $f8, $f2 +/* 089734 7F054C04 46005302 */ mul.s $f12, $f10, $f0 +/* 089738 7F054C08 460C703E */ c.le.s $f14, $f12 +/* 08973C 7F054C0C 00000000 */ nop +/* 089740 7F054C10 45020005 */ bc1fl .L7F054C28 +/* 089744 7F054C14 C4600000 */ lwc1 $f0, ($v1) +/* 089748 7F054C18 44808000 */ mtc1 $zero, $f16 +/* 08974C 7F054C1C 1000000A */ b .L7F054C48 +/* 089750 7F054C20 8FBF0014 */ lw $ra, 0x14($sp) +/* 089754 7F054C24 C4600000 */ lwc1 $f0, ($v1) +.L7F054C28: +/* 089758 7F054C28 460C003C */ c.lt.s $f0, $f12 +/* 08975C 7F054C2C 00000000 */ nop +/* 089760 7F054C30 45020005 */ bc1fl .L7F054C48 +/* 089764 7F054C34 8FBF0014 */ lw $ra, 0x14($sp) +/* 089768 7F054C38 460C7481 */ sub.s $f18, $f14, $f12 +/* 08976C 7F054C3C 46007101 */ sub.s $f4, $f14, $f0 +/* 089770 7F054C40 46049403 */ div.s $f16, $f18, $f4 +.L7F054C44: +/* 089774 7F054C44 8FBF0014 */ lw $ra, 0x14($sp) +.L7F054C48: +/* 089778 7F054C48 27BD0020 */ addiu $sp, $sp, 0x20 +/* 08977C 7F054C4C 46008006 */ mov.s $f0, $f16 +/* 089780 7F054C50 03E00008 */ jr $ra +/* 089784 7F054C54 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F054C58(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F054C58 +/* 089788 7F054C58 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 08978C 7F054C5C AFBF0014 */ sw $ra, 0x14($sp) +/* 089790 7F054C60 240E0001 */ li $t6, 1 +/* 089794 7F054C64 AFA40038 */ sw $a0, 0x38($sp) +/* 089798 7F054C68 AFA5003C */ sw $a1, 0x3c($sp) +/* 08979C 7F054C6C 0FC2ECE6 */ jal return_nearfog_values +/* 0897A0 7F054C70 AFAE0034 */ sw $t6, 0x34($sp) +/* 0897A4 7F054C74 50400039 */ beql $v0, $zero, .L7F054D5C +/* 0897A8 7F054C78 8FBF0014 */ lw $ra, 0x14($sp) +/* 0897AC 7F054C7C 0FC227F5 */ jal get_BONDdata_position +/* 0897B0 7F054C80 AFA20030 */ sw $v0, 0x30($sp) +/* 0897B4 7F054C84 0FC1E0F1 */ jal get_BONDdata_field_10CC +/* 0897B8 7F054C88 AFA2001C */ sw $v0, 0x1c($sp) +/* 0897BC 7F054C8C 8FA3001C */ lw $v1, 0x1c($sp) +/* 0897C0 7F054C90 8FA50038 */ lw $a1, 0x38($sp) +/* 0897C4 7F054C94 8FA40030 */ lw $a0, 0x30($sp) +/* 0897C8 7F054C98 C4660000 */ lwc1 $f6, ($v1) +/* 0897CC 7F054C9C C4A40000 */ lwc1 $f4, ($a1) +/* 0897D0 7F054CA0 46062201 */ sub.s $f8, $f4, $f6 +/* 0897D4 7F054CA4 E7A80024 */ swc1 $f8, 0x24($sp) +/* 0897D8 7F054CA8 C4700004 */ lwc1 $f16, 4($v1) +/* 0897DC 7F054CAC C4AA0004 */ lwc1 $f10, 4($a1) +/* 0897E0 7F054CB0 46105481 */ sub.s $f18, $f10, $f16 +/* 0897E4 7F054CB4 C7AA0024 */ lwc1 $f10, 0x24($sp) +/* 0897E8 7F054CB8 E7B20028 */ swc1 $f18, 0x28($sp) +/* 0897EC 7F054CBC C4660008 */ lwc1 $f6, 8($v1) +/* 0897F0 7F054CC0 C4A40008 */ lwc1 $f4, 8($a1) +/* 0897F4 7F054CC4 46062201 */ sub.s $f8, $f4, $f6 +/* 0897F8 7F054CC8 C7A40028 */ lwc1 $f4, 0x28($sp) +/* 0897FC 7F054CCC E7A8002C */ swc1 $f8, 0x2c($sp) +/* 089800 7F054CD0 C4500000 */ lwc1 $f16, ($v0) +/* 089804 7F054CD4 C4460004 */ lwc1 $f6, 4($v0) +/* 089808 7F054CD8 46105482 */ mul.s $f18, $f10, $f16 +/* 08980C 7F054CDC C4500008 */ lwc1 $f16, 8($v0) +/* 089810 7F054CE0 46062202 */ mul.s $f8, $f4, $f6 +/* 089814 7F054CE4 C7A4002C */ lwc1 $f4, 0x2c($sp) +/* 089818 7F054CE8 46048182 */ mul.s $f6, $f16, $f4 +/* 08981C 7F054CEC 46089280 */ add.s $f10, $f18, $f8 +/* 089820 7F054CF0 C4920008 */ lwc1 $f18, 8($a0) +/* 089824 7F054CF4 460A3300 */ add.s $f12, $f6, $f10 +/* 089828 7F054CF8 460C903C */ c.lt.s $f18, $f12 +/* 08982C 7F054CFC 00000000 */ nop +/* 089830 7F054D00 45020016 */ bc1fl .L7F054D5C +/* 089834 7F054D04 8FBF0014 */ lw $ra, 0x14($sp) +/* 089838 7F054D08 AFA40030 */ sw $a0, 0x30($sp) +/* 08983C 7F054D0C 0FC1E121 */ jal getPlayer_c_lodscalez +/* 089840 7F054D10 E7AC0020 */ swc1 $f12, 0x20($sp) +/* 089844 7F054D14 8FA40030 */ lw $a0, 0x30($sp) +/* 089848 7F054D18 C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 08984C 7F054D1C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 089850 7F054D20 C4820008 */ lwc1 $f2, 8($a0) +/* 089854 7F054D24 44818000 */ mtc1 $at, $f16 +/* 089858 7F054D28 C7A6003C */ lwc1 $f6, 0x3c($sp) +/* 08985C 7F054D2C 46026201 */ sub.s $f8, $f12, $f2 +/* 089860 7F054D30 46104102 */ mul.s $f4, $f8, $f16 +/* 089864 7F054D34 C4880004 */ lwc1 $f8, 4($a0) +/* 089868 7F054D38 46062283 */ div.s $f10, $f4, $f6 +/* 08986C 7F054D3C 46025480 */ add.s $f18, $f10, $f2 +/* 089870 7F054D40 46009302 */ mul.s $f12, $f18, $f0 +/* 089874 7F054D44 460C403E */ c.le.s $f8, $f12 +/* 089878 7F054D48 00000000 */ nop +/* 08987C 7F054D4C 45020003 */ bc1fl .L7F054D5C +/* 089880 7F054D50 8FBF0014 */ lw $ra, 0x14($sp) +/* 089884 7F054D54 AFA00034 */ sw $zero, 0x34($sp) +/* 089888 7F054D58 8FBF0014 */ lw $ra, 0x14($sp) +.L7F054D5C: +/* 08988C 7F054D5C 8FA20034 */ lw $v0, 0x34($sp) +/* 089890 7F054D60 27BD0038 */ addiu $sp, $sp, 0x38 +/* 089894 7F054D64 03E00008 */ jr $ra +/* 089898 7F054D68 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F054D6C(void) { + +} +#else +GLOBAL_ASM( +.late_rodata +glabel D_8005345C +.word 0x4e742400 /*1.024e9*/ +glabel D_80053460 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053464 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053468 +.word 0x40490fdb /*3.1415927*/ +glabel D_8005346C +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053470 +.word 0x40490fdb /*3.1415927*/ +glabel D_80053474 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053478 +.word 0x40c90fdb /*6.2831855*/ +glabel D_8005347C +.word 0x40490fdb /*3.1415927*/ +glabel D_80053480 +.word 0x40c90fdb /*6.2831855*/ +glabel D_80053484 +.word 0x3eb2b8c3 /*0.34906587*/ +glabel D_80053488 +.word 0x40490fdb /*3.1415927*/ +glabel D_8005348C +.word 0x471c4000 /*40000.0*/ +.text +glabel sub_GAME_7F054D6C +/* 08989C 7F054D6C 27BDFF90 */ addiu $sp, $sp, -0x70 +/* 0898A0 7F054D70 AFB10018 */ sw $s1, 0x18($sp) +/* 0898A4 7F054D74 00A08825 */ move $s1, $a1 +/* 0898A8 7F054D78 AFBF001C */ sw $ra, 0x1c($sp) +/* 0898AC 7F054D7C AFB00014 */ sw $s0, 0x14($sp) +/* 0898B0 7F054D80 AFA40070 */ sw $a0, 0x70($sp) +/* 0898B4 7F054D84 AFA60078 */ sw $a2, 0x78($sp) +/* 0898B8 7F054D88 AFA7007C */ sw $a3, 0x7c($sp) +/* 0898BC 7F054D8C AFA00044 */ sw $zero, 0x44($sp) +/* 0898C0 7F054D90 0FC0F2E3 */ jal sub_GAME_7F03CB8C +/* 0898C4 7F054D94 27A50050 */ addiu $a1, $sp, 0x50 +/* 0898C8 7F054D98 8FA40050 */ lw $a0, 0x50($sp) +/* 0898CC 7F054D9C 27B00050 */ addiu $s0, $sp, 0x50 +/* 0898D0 7F054DA0 0482003C */ bltzl $a0, .L7F054E94 +/* 0898D4 7F054DA4 8FBF001C */ lw $ra, 0x1c($sp) +.L7F054DA8: +/* 0898D8 7F054DA8 0FC2D794 */ jal sub_GAME_7F0B5E50 +/* 0898DC 7F054DAC 00000000 */ nop +/* 0898E0 7F054DB0 10400033 */ beqz $v0, .L7F054E80 +/* 0898E4 7F054DB4 02202025 */ move $a0, $s1 +/* 0898E8 7F054DB8 0FC2ECB2 */ jal sub_GAME_7F0BB2C8 +/* 0898EC 7F054DBC 8FA50078 */ lw $a1, 0x78($sp) +/* 0898F0 7F054DC0 10400033 */ beqz $v0, .L7F054E90 +/* 0898F4 7F054DC4 8FAE007C */ lw $t6, 0x7c($sp) +/* 0898F8 7F054DC8 11C00004 */ beqz $t6, .L7F054DDC +/* 0898FC 7F054DCC 02202025 */ move $a0, $s1 +/* 089900 7F054DD0 0FC15316 */ jal sub_GAME_7F054C58 +/* 089904 7F054DD4 8FA50078 */ lw $a1, 0x78($sp) +/* 089908 7F054DD8 1040002D */ beqz $v0, .L7F054E90 +.L7F054DDC: +/* 08990C 7F054DDC 27B00034 */ addiu $s0, $sp, 0x34 +/* 089910 7F054DE0 02002825 */ move $a1, $s0 +/* 089914 7F054DE4 0FC15299 */ jal sub_GAME_7F054A64 +/* 089918 7F054DE8 8FA40070 */ lw $a0, 0x70($sp) +/* 08991C 7F054DEC 10400007 */ beqz $v0, .L7F054E0C +/* 089920 7F054DF0 02202025 */ move $a0, $s1 +/* 089924 7F054DF4 02202025 */ move $a0, $s1 +/* 089928 7F054DF8 8FA50078 */ lw $a1, 0x78($sp) +/* 08992C 7F054DFC 0FC1E2FD */ jal sub_GAME_7F078BF4 +/* 089930 7F054E00 02003025 */ move $a2, $s0 +/* 089934 7F054E04 10000004 */ b .L7F054E18 +/* 089938 7F054E08 AFA20044 */ sw $v0, 0x44($sp) +.L7F054E0C: +/* 08993C 7F054E0C 0FC1E296 */ jal sub_GAME_7F078A58 +/* 089940 7F054E10 8FA50078 */ lw $a1, 0x78($sp) +/* 089944 7F054E14 AFA20044 */ sw $v0, 0x44($sp) +.L7F054E18: +/* 089948 7F054E18 5040001E */ beql $v0, $zero, .L7F054E94 +/* 08994C 7F054E1C 8FBF001C */ lw $ra, 0x1c($sp) +/* 089950 7F054E20 0FC227F5 */ jal get_BONDdata_position +/* 089954 7F054E24 00000000 */ nop +/* 089958 7F054E28 C6240000 */ lwc1 $f4, ($s1) +/* 08995C 7F054E2C C4460000 */ lwc1 $f6, ($v0) +/* 089960 7F054E30 C6280004 */ lwc1 $f8, 4($s1) +/* 089964 7F054E34 C44A0004 */ lwc1 $f10, 4($v0) +/* 089968 7F054E38 46062001 */ sub.s $f0, $f4, $f6 +/* 08996C 7F054E3C C6300008 */ lwc1 $f16, 8($s1) +/* 089970 7F054E40 C4520008 */ lwc1 $f18, 8($v0) +/* 089974 7F054E44 460A4081 */ sub.s $f2, $f8, $f10 +/* 089978 7F054E48 46000182 */ mul.s $f6, $f0, $f0 +/* 08997C 7F054E4C 3C018005 */ lui $at, %hi(D_8005345C) +/* 089980 7F054E50 46128301 */ sub.s $f12, $f16, $f18 +/* 089984 7F054E54 46021202 */ mul.s $f8, $f2, $f2 +/* 089988 7F054E58 C424345C */ lwc1 $f4, %lo(D_8005345C)($at) +/* 08998C 7F054E5C 460C6402 */ mul.s $f16, $f12, $f12 +/* 089990 7F054E60 46083280 */ add.s $f10, $f6, $f8 +/* 089994 7F054E64 46105480 */ add.s $f18, $f10, $f16 +/* 089998 7F054E68 4612203C */ c.lt.s $f4, $f18 +/* 08999C 7F054E6C 00000000 */ nop +/* 0899A0 7F054E70 45020008 */ bc1fl .L7F054E94 +/* 0899A4 7F054E74 8FBF001C */ lw $ra, 0x1c($sp) +/* 0899A8 7F054E78 10000005 */ b .L7F054E90 +/* 0899AC 7F054E7C AFA00044 */ sw $zero, 0x44($sp) +.L7F054E80: +/* 0899B0 7F054E80 8E040004 */ lw $a0, 4($s0) +/* 0899B4 7F054E84 26100004 */ addiu $s0, $s0, 4 +/* 0899B8 7F054E88 0481FFC7 */ bgez $a0, .L7F054DA8 +/* 0899BC 7F054E8C 00000000 */ nop +.L7F054E90: +/* 0899C0 7F054E90 8FBF001C */ lw $ra, 0x1c($sp) +.L7F054E94: +/* 0899C4 7F054E94 8FA20044 */ lw $v0, 0x44($sp) +/* 0899C8 7F054E98 8FB00014 */ lw $s0, 0x14($sp) +/* 0899CC 7F054E9C 8FB10018 */ lw $s1, 0x18($sp) +/* 0899D0 7F054EA0 03E00008 */ jr $ra +/* 0899D4 7F054EA4 27BD0070 */ addiu $sp, $sp, 0x70 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F054EA8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F054EA8 +/* 0899D8 7F054EA8 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0899DC 7F054EAC AFBF0024 */ sw $ra, 0x24($sp) +/* 0899E0 7F054EB0 AFB00020 */ sw $s0, 0x20($sp) +/* 0899E4 7F054EB4 808200BC */ lb $v0, 0xbc($a0) +/* 0899E8 7F054EB8 24010001 */ li $at, 1 +/* 0899EC 7F054EBC 00808025 */ move $s0, $a0 +/* 0899F0 7F054EC0 1441001C */ bne $v0, $at, .L7F054F34 +/* 0899F4 7F054EC4 00001825 */ move $v1, $zero +/* 0899F8 7F054EC8 C6040090 */ lwc1 $f4, 0x90($s0) +/* 0899FC 7F054ECC 8E050084 */ lw $a1, 0x84($s0) +/* 089A00 7F054ED0 8E07008C */ lw $a3, 0x8c($s0) +/* 089A04 7F054ED4 E7A40010 */ swc1 $f4, 0x10($sp) +/* 089A08 7F054ED8 C6060094 */ lwc1 $f6, 0x94($s0) +/* 089A0C 7F054EDC 248400B4 */ addiu $a0, $a0, 0xb4 +/* 089A10 7F054EE0 260600B8 */ addiu $a2, $s0, 0xb8 +/* 089A14 7F054EE4 0FC10BC6 */ jal sub_GAME_7F042F18 +/* 089A18 7F054EE8 E7A60014 */ swc1 $f6, 0x14($sp) +/* 089A1C 7F054EEC C60200B4 */ lwc1 $f2, 0xb4($s0) +/* 089A20 7F054EF0 C6000084 */ lwc1 $f0, 0x84($s0) +/* 089A24 7F054EF4 24030001 */ li $v1, 1 +/* 089A28 7F054EF8 4602003E */ c.le.s $f0, $f2 +/* 089A2C 7F054EFC 00000000 */ nop +/* 089A30 7F054F00 45020004 */ bc1fl .L7F054F14 +/* 089A34 7F054F04 44806000 */ mtc1 $zero, $f12 +/* 089A38 7F054F08 10000025 */ b .L7F054FA0 +/* 089A3C 7F054F0C E60000B4 */ swc1 $f0, 0xb4($s0) +/* 089A40 7F054F10 44806000 */ mtc1 $zero, $f12 +.L7F054F14: +/* 089A44 7F054F14 00000000 */ nop +/* 089A48 7F054F18 460C103E */ c.le.s $f2, $f12 +/* 089A4C 7F054F1C 00000000 */ nop +/* 089A50 7F054F20 45000002 */ bc1f .L7F054F2C +/* 089A54 7F054F24 00000000 */ nop +/* 089A58 7F054F28 E60C00B4 */ swc1 $f12, 0xb4($s0) +.L7F054F2C: +/* 089A5C 7F054F2C 1000001C */ b .L7F054FA0 +/* 089A60 7F054F30 24030001 */ li $v1, 1 +.L7F054F34: +/* 089A64 7F054F34 24010002 */ li $at, 2 +/* 089A68 7F054F38 14410019 */ bne $v0, $at, .L7F054FA0 +/* 089A6C 7F054F3C 260400B4 */ addiu $a0, $s0, 0xb4 +/* 089A70 7F054F40 C6080090 */ lwc1 $f8, 0x90($s0) +/* 089A74 7F054F44 44806000 */ mtc1 $zero, $f12 +/* 089A78 7F054F48 8E07008C */ lw $a3, 0x8c($s0) +/* 089A7C 7F054F4C E7A80010 */ swc1 $f8, 0x10($sp) +/* 089A80 7F054F50 C60A0094 */ lwc1 $f10, 0x94($s0) +/* 089A84 7F054F54 44056000 */ mfc1 $a1, $f12 +/* 089A88 7F054F58 260600B8 */ addiu $a2, $s0, 0xb8 +/* 089A8C 7F054F5C 0FC10BC6 */ jal sub_GAME_7F042F18 +/* 089A90 7F054F60 E7AA0014 */ swc1 $f10, 0x14($sp) +/* 089A94 7F054F64 C60200B4 */ lwc1 $f2, 0xb4($s0) +/* 089A98 7F054F68 C6000084 */ lwc1 $f0, 0x84($s0) +/* 089A9C 7F054F6C 44806000 */ mtc1 $zero, $f12 +/* 089AA0 7F054F70 24030001 */ li $v1, 1 +/* 089AA4 7F054F74 4602003E */ c.le.s $f0, $f2 +/* 089AA8 7F054F78 00000000 */ nop +/* 089AAC 7F054F7C 45020004 */ bc1fl .L7F054F90 +/* 089AB0 7F054F80 460C103E */ c.le.s $f2, $f12 +/* 089AB4 7F054F84 10000006 */ b .L7F054FA0 +/* 089AB8 7F054F88 E60000B4 */ swc1 $f0, 0xb4($s0) +/* 089ABC 7F054F8C 460C103E */ c.le.s $f2, $f12 +.L7F054F90: +/* 089AC0 7F054F90 00000000 */ nop +/* 089AC4 7F054F94 45000002 */ bc1f .L7F054FA0 +/* 089AC8 7F054F98 00000000 */ nop +/* 089ACC 7F054F9C E60C00B4 */ swc1 $f12, 0xb4($s0) +.L7F054FA0: +/* 089AD0 7F054FA0 8FBF0024 */ lw $ra, 0x24($sp) +/* 089AD4 7F054FA4 8FB00020 */ lw $s0, 0x20($sp) +/* 089AD8 7F054FA8 27BD0028 */ addiu $sp, $sp, 0x28 +/* 089ADC 7F054FAC 03E00008 */ jr $ra +/* 089AE0 7F054FB0 00601025 */ move $v0, $v1 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F054FB4(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F054FB4 +/* 089AE4 7F054FB4 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 089AE8 7F054FB8 AFB50030 */ sw $s5, 0x30($sp) +/* 089AEC 7F054FBC AFB4002C */ sw $s4, 0x2c($sp) +/* 089AF0 7F054FC0 AFB20024 */ sw $s2, 0x24($sp) +/* 089AF4 7F054FC4 AFB10020 */ sw $s1, 0x20($sp) +/* 089AF8 7F054FC8 00809025 */ move $s2, $a0 +/* 089AFC 7F054FCC AFBF0034 */ sw $ra, 0x34($sp) +/* 089B00 7F054FD0 AFB30028 */ sw $s3, 0x28($sp) +/* 089B04 7F054FD4 AFB0001C */ sw $s0, 0x1c($sp) +/* 089B08 7F054FD8 F7B40010 */ sdc1 $f20, 0x10($sp) +/* 089B0C 7F054FDC 0000A025 */ move $s4, $zero +/* 089B10 7F054FE0 24150001 */ li $s5, 1 +/* 089B14 7F054FE4 10800010 */ beqz $a0, .L7F055028 +/* 089B18 7F054FE8 00808825 */ move $s1, $a0 +/* 089B1C 7F054FEC C62400B4 */ lwc1 $f4, 0xb4($s1) +.L7F054FF0: +/* 089B20 7F054FF0 02202025 */ move $a0, $s1 +/* 089B24 7F054FF4 0FC153AA */ jal sub_GAME_7F054EA8 +/* 089B28 7F054FF8 E62400FC */ swc1 $f4, 0xfc($s1) +/* 089B2C 7F054FFC 50400003 */ beql $v0, $zero, .L7F05500C +/* 089B30 7F055000 8E3100C8 */ lw $s1, 0xc8($s1) +/* 089B34 7F055004 24140001 */ li $s4, 1 +/* 089B38 7F055008 8E3100C8 */ lw $s1, 0xc8($s1) +.L7F05500C: +/* 089B3C 7F05500C 16320003 */ bne $s1, $s2, .L7F05501C +/* 089B40 7F055010 00000000 */ nop +/* 089B44 7F055014 10000004 */ b .L7F055028 +/* 089B48 7F055018 02408825 */ move $s1, $s2 +.L7F05501C: +/* 089B4C 7F05501C 5620FFF4 */ bnezl $s1, .L7F054FF0 +/* 089B50 7F055020 C62400B4 */ lwc1 $f4, 0xb4($s1) +/* 089B54 7F055024 02408825 */ move $s1, $s2 +.L7F055028: +/* 089B58 7F055028 12800013 */ beqz $s4, .L7F055078 +/* 089B5C 7F05502C 00000000 */ nop +/* 089B60 7F055030 12400011 */ beqz $s2, .L7F055078 +/* 089B64 7F055034 00000000 */ nop +.L7F055038: +/* 089B68 7F055038 0FC14AC0 */ jal sub_GAME_7F052B00 +/* 089B6C 7F05503C 02202025 */ move $a0, $s1 +/* 089B70 7F055040 0FC1122A */ jal sub_GAME_7F0448A8 +/* 089B74 7F055044 8E240010 */ lw $a0, 0x10($s1) +/* 089B78 7F055048 14400003 */ bnez $v0, .L7F055058 +/* 089B7C 7F05504C 0040A825 */ move $s5, $v0 +/* 089B80 7F055050 10000009 */ b .L7F055078 +/* 089B84 7F055054 02408825 */ move $s1, $s2 +.L7F055058: +/* 089B88 7F055058 8E3100C8 */ lw $s1, 0xc8($s1) +/* 089B8C 7F05505C 16320003 */ bne $s1, $s2, .L7F05506C +/* 089B90 7F055060 00000000 */ nop +/* 089B94 7F055064 10000004 */ b .L7F055078 +/* 089B98 7F055068 02408825 */ move $s1, $s2 +.L7F05506C: +/* 089B9C 7F05506C 1620FFF2 */ bnez $s1, .L7F055038 +/* 089BA0 7F055070 00000000 */ nop +/* 089BA4 7F055074 02408825 */ move $s1, $s2 +.L7F055078: +/* 089BA8 7F055078 12400062 */ beqz $s2, .L7F055204 +/* 089BAC 7F05507C 3C138005 */ lui $s3, %hi(global_timer) +/* 089BB0 7F055080 4480A000 */ mtc1 $zero, $f20 +/* 089BB4 7F055084 2673837C */ addiu $s3, %lo(global_timer) # addiu $s3, $s3, -0x7c84 +.L7F055088: +/* 089BB8 7F055088 52800030 */ beql $s4, $zero, .L7F05514C +/* 089BBC 7F05508C 962F0098 */ lhu $t7, 0x98($s1) +/* 089BC0 7F055090 12A00025 */ beqz $s5, .L7F055128 +/* 089BC4 7F055094 02202025 */ move $a0, $s1 +/* 089BC8 7F055098 822200BC */ lb $v0, 0xbc($s1) +/* 089BCC 7F05509C 24010001 */ li $at, 1 +/* 089BD0 7F0550A0 54410010 */ bnel $v0, $at, .L7F0550E4 +/* 089BD4 7F0550A4 24010002 */ li $at, 2 +/* 089BD8 7F0550A8 C62600B4 */ lwc1 $f6, 0xb4($s1) +/* 089BDC 7F0550AC C6280084 */ lwc1 $f8, 0x84($s1) +/* 089BE0 7F0550B0 4606403E */ c.le.s $f8, $f6 +/* 089BE4 7F0550B4 00000000 */ nop +/* 089BE8 7F0550B8 45020017 */ bc1fl .L7F055118 +/* 089BEC 7F0550BC 8E240010 */ lw $a0, 0x10($s1) +/* 089BF0 7F0550C0 A22000BC */ sb $zero, 0xbc($s1) +/* 089BF4 7F0550C4 E63400B8 */ swc1 $f20, 0xb8($s1) +/* 089BF8 7F0550C8 8E6E0000 */ lw $t6, ($s3) +/* 089BFC 7F0550CC 02202025 */ move $a0, $s1 +/* 089C00 7F0550D0 0FC15203 */ jal sub_GAME_7F05480C +/* 089C04 7F0550D4 AE2E00EC */ sw $t6, 0xec($s1) +/* 089C08 7F0550D8 1000000F */ b .L7F055118 +/* 089C0C 7F0550DC 8E240010 */ lw $a0, 0x10($s1) +/* 089C10 7F0550E0 24010002 */ li $at, 2 +.L7F0550E4: +/* 089C14 7F0550E4 5441000C */ bnel $v0, $at, .L7F055118 +/* 089C18 7F0550E8 8E240010 */ lw $a0, 0x10($s1) +/* 089C1C 7F0550EC C62A00B4 */ lwc1 $f10, 0xb4($s1) +/* 089C20 7F0550F0 02202025 */ move $a0, $s1 +/* 089C24 7F0550F4 4614503E */ c.le.s $f10, $f20 +/* 089C28 7F0550F8 00000000 */ nop +/* 089C2C 7F0550FC 45020006 */ bc1fl .L7F055118 +/* 089C30 7F055100 8E240010 */ lw $a0, 0x10($s1) +/* 089C34 7F055104 A22000BC */ sb $zero, 0xbc($s1) +/* 089C38 7F055108 E63400B8 */ swc1 $f20, 0xb8($s1) +/* 089C3C 7F05510C 0FC1521F */ jal sub_GAME_7F05487C +/* 089C40 7F055110 AE2000EC */ sw $zero, 0xec($s1) +/* 089C44 7F055114 8E240010 */ lw $a0, 0x10($s1) +.L7F055118: +/* 089C48 7F055118 0FC100AD */ jal sub_GAME_7F0402B4 +/* 089C4C 7F05511C 2625007C */ addiu $a1, $s1, 0x7c +/* 089C50 7F055120 10000005 */ b .L7F055138 +/* 089C54 7F055124 00000000 */ nop +.L7F055128: +/* 089C58 7F055128 C63000FC */ lwc1 $f16, 0xfc($s1) +/* 089C5C 7F05512C E63400B8 */ swc1 $f20, 0xb8($s1) +/* 089C60 7F055130 0FC14AC0 */ jal sub_GAME_7F052B00 +/* 089C64 7F055134 E63000B4 */ swc1 $f16, 0xb4($s1) +.L7F055138: +/* 089C68 7F055138 0FC14B63 */ jal sub_GAME_7F052D8C +/* 089C6C 7F05513C 02202025 */ move $a0, $s1 +/* 089C70 7F055140 1000002A */ b .L7F0551EC +/* 089C74 7F055144 8E690000 */ lw $t1, ($s3) +/* 089C78 7F055148 962F0098 */ lhu $t7, 0x98($s1) +.L7F05514C: +/* 089C7C 7F05514C 31F80004 */ andi $t8, $t7, 4 +/* 089C80 7F055150 53000026 */ beql $t8, $zero, .L7F0551EC +/* 089C84 7F055154 8E690000 */ lw $t1, ($s3) +/* 089C88 7F055158 8E240014 */ lw $a0, 0x14($s1) +/* 089C8C 7F05515C 8C990008 */ lw $t9, 8($a0) +/* 089C90 7F055160 8F280000 */ lw $t0, ($t9) +/* 089C94 7F055164 8D090014 */ lw $t1, 0x14($t0) +/* 089C98 7F055168 8D250014 */ lw $a1, 0x14($t1) +/* 089C9C 7F05516C 0FC1B1E7 */ jal extract_id_from_object_structure_microcode +/* 089CA0 7F055170 8CB00004 */ lw $s0, 4($a1) +/* 089CA4 7F055174 8E2300CC */ lw $v1, 0xcc($s1) +/* 089CA8 7F055178 8C4A0000 */ lw $t2, ($v0) +/* 089CAC 7F05517C 506A001A */ beql $v1, $t2, .L7F0551E8 +/* 089CB0 7F055180 AC430000 */ sw $v1, ($v0) +/* 089CB4 7F055184 860B000C */ lh $t3, 0xc($s0) +/* 089CB8 7F055188 00002025 */ move $a0, $zero +/* 089CBC 7F05518C 59600016 */ blezl $t3, .L7F0551E8 +/* 089CC0 7F055190 AC430000 */ sw $v1, ($v0) +/* 089CC4 7F055194 00001825 */ move $v1, $zero +/* 089CC8 7F055198 8C4E0000 */ lw $t6, ($v0) +.L7F05519C: +/* 089CCC 7F05519C 8E2C00CC */ lw $t4, 0xcc($s1) +/* 089CD0 7F0551A0 24840001 */ addiu $a0, $a0, 1 +/* 089CD4 7F0551A4 01C37821 */ addu $t7, $t6, $v1 +/* 089CD8 7F0551A8 8DE10000 */ lw $at, ($t7) +/* 089CDC 7F0551AC 01836821 */ addu $t5, $t4, $v1 +/* 089CE0 7F0551B0 24630010 */ addiu $v1, $v1, 0x10 +/* 089CE4 7F0551B4 ADA10000 */ sw $at, ($t5) +/* 089CE8 7F0551B8 8DF90004 */ lw $t9, 4($t7) +/* 089CEC 7F0551BC ADB90004 */ sw $t9, 4($t5) +/* 089CF0 7F0551C0 8DE10008 */ lw $at, 8($t7) +/* 089CF4 7F0551C4 ADA10008 */ sw $at, 8($t5) +/* 089CF8 7F0551C8 8DF9000C */ lw $t9, 0xc($t7) +/* 089CFC 7F0551CC ADB9000C */ sw $t9, 0xc($t5) +/* 089D00 7F0551D0 8608000C */ lh $t0, 0xc($s0) +/* 089D04 7F0551D4 0088082A */ slt $at, $a0, $t0 +/* 089D08 7F0551D8 5420FFF0 */ bnezl $at, .L7F05519C +/* 089D0C 7F0551DC 8C4E0000 */ lw $t6, ($v0) +/* 089D10 7F0551E0 8E2300CC */ lw $v1, 0xcc($s1) +/* 089D14 7F0551E4 AC430000 */ sw $v1, ($v0) +.L7F0551E8: +/* 089D18 7F0551E8 8E690000 */ lw $t1, ($s3) +.L7F0551EC: +/* 089D1C 7F0551EC AE2900FC */ sw $t1, 0xfc($s1) +/* 089D20 7F0551F0 8E3100C8 */ lw $s1, 0xc8($s1) +/* 089D24 7F0551F4 52320004 */ beql $s1, $s2, .L7F055208 +/* 089D28 7F0551F8 8FBF0034 */ lw $ra, 0x34($sp) +/* 089D2C 7F0551FC 1620FFA2 */ bnez $s1, .L7F055088 +/* 089D30 7F055200 00000000 */ nop +.L7F055204: +/* 089D34 7F055204 8FBF0034 */ lw $ra, 0x34($sp) +.L7F055208: +/* 089D38 7F055208 D7B40010 */ ldc1 $f20, 0x10($sp) +/* 089D3C 7F05520C 8FB0001C */ lw $s0, 0x1c($sp) +/* 089D40 7F055210 8FB10020 */ lw $s1, 0x20($sp) +/* 089D44 7F055214 8FB20024 */ lw $s2, 0x24($sp) +/* 089D48 7F055218 8FB30028 */ lw $s3, 0x28($sp) +/* 089D4C 7F05521C 8FB4002C */ lw $s4, 0x2c($sp) +/* 089D50 7F055220 8FB50030 */ lw $s5, 0x30($sp) +/* 089D54 7F055224 03E00008 */ jr $ra +/* 089D58 7F055228 27BD0038 */ addiu $sp, $sp, 0x38 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F05522C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F05522C +/* 089D5C 7F05522C 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 089D60 7F055230 AFBF0014 */ sw $ra, 0x14($sp) +/* 089D64 7F055234 AFA40068 */ sw $a0, 0x68($sp) +/* 089D68 7F055238 AFA5006C */ sw $a1, 0x6c($sp) +/* 089D6C 7F05523C AFA60070 */ sw $a2, 0x70($sp) +/* 089D70 7F055240 AFA70074 */ sw $a3, 0x74($sp) +/* 089D74 7F055244 84990006 */ lh $t9, 6($a0) +/* 089D78 7F055248 3C098007 */ lui $t1, %hi(ptr_2xxxpresets) +/* 089D7C 7F05524C 8D295D1C */ lw $t1, %lo(ptr_2xxxpresets)($t1) +/* 089D80 7F055250 00194100 */ sll $t0, $t9, 4 +/* 089D84 7F055254 01194021 */ addu $t0, $t0, $t9 +/* 089D88 7F055258 00084080 */ sll $t0, $t0, 2 +/* 089D8C 7F05525C 01091821 */ addu $v1, $t0, $t1 +/* 089D90 7F055260 0FC225E6 */ jal get_curplayer_positiondata +/* 089D94 7F055264 AFA3005C */ sw $v1, 0x5c($sp) +/* 089D98 7F055268 3C048008 */ lui $a0, %hi(pPlayer) +/* 089D9C 7F05526C 8C84A0B0 */ lw $a0, %lo(pPlayer)($a0) +/* 089DA0 7F055270 3C0141F0 */ li $at, 0x41F00000 # 30.000000 +/* 089DA4 7F055274 44810000 */ mtc1 $at, $f0 +/* 089DA8 7F055278 C4840498 */ lwc1 $f4, 0x498($a0) +/* 089DAC 7F05527C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 089DB0 7F055280 44811000 */ mtc1 $at, $f2 +/* 089DB4 7F055284 46002282 */ mul.s $f10, $f4, $f0 +/* 089DB8 7F055288 3C013F40 */ li $at, 0x3F400000 # 0.750000 +/* 089DBC 7F05528C 44816000 */ mtc1 $at, $f12 +/* 089DC0 7F055290 C4440008 */ lwc1 $f4, 8($v0) +/* 089DC4 7F055294 8FAA0074 */ lw $t2, 0x74($sp) +/* 089DC8 7F055298 8FA3005C */ lw $v1, 0x5c($sp) +/* 089DCC 7F05529C 46025202 */ mul.s $f8, $f10, $f2 +/* 089DD0 7F0552A0 00000000 */ nop +/* 089DD4 7F0552A4 460C4182 */ mul.s $f6, $f8, $f12 +/* 089DD8 7F0552A8 46043280 */ add.s $f10, $f6, $f4 +/* 089DDC 7F0552AC E7AA0030 */ swc1 $f10, 0x30($sp) +/* 089DE0 7F0552B0 C448000C */ lwc1 $f8, 0xc($v0) +/* 089DE4 7F0552B4 E7A80034 */ swc1 $f8, 0x34($sp) +/* 089DE8 7F0552B8 C48604A0 */ lwc1 $f6, 0x4a0($a0) +/* 089DEC 7F0552BC 46003102 */ mul.s $f4, $f6, $f0 +/* 089DF0 7F0552C0 C4460010 */ lwc1 $f6, 0x10($v0) +/* 089DF4 7F0552C4 46022282 */ mul.s $f10, $f4, $f2 +/* 089DF8 7F0552C8 00000000 */ nop +/* 089DFC 7F0552CC 460C5202 */ mul.s $f8, $f10, $f12 +/* 089E00 7F0552D0 46064100 */ add.s $f4, $f8, $f6 +/* 089E04 7F0552D4 1140001D */ beqz $t2, .L7F05534C +/* 089E08 7F0552D8 E7A40038 */ swc1 $f4, 0x38($sp) +/* 089E0C 7F0552DC C46A0030 */ lwc1 $f10, 0x30($v1) +/* 089E10 7F0552E0 C472002C */ lwc1 $f18, 0x2c($v1) +/* 089E14 7F0552E4 E7AA003C */ swc1 $f10, 0x3c($sp) +/* 089E18 7F0552E8 C4680010 */ lwc1 $f8, 0x10($v1) +/* 089E1C 7F0552EC C4660020 */ lwc1 $f6, 0x20($v1) +/* 089E20 7F0552F0 C46A001C */ lwc1 $f10, 0x1c($v1) +/* 089E24 7F0552F4 46064102 */ mul.s $f4, $f8, $f6 +/* 089E28 7F0552F8 C4680014 */ lwc1 $f8, 0x14($v1) +/* 089E2C 7F0552FC 46085182 */ mul.s $f6, $f10, $f8 +/* 089E30 7F055300 46062281 */ sub.s $f10, $f4, $f6 +/* 089E34 7F055304 E7AA0044 */ swc1 $f10, 0x44($sp) +/* 089E38 7F055308 C4640018 */ lwc1 $f4, 0x18($v1) +/* 089E3C 7F05530C C4680014 */ lwc1 $f8, 0x14($v1) +/* 089E40 7F055310 C46A0020 */ lwc1 $f10, 0x20($v1) +/* 089E44 7F055314 46044182 */ mul.s $f6, $f8, $f4 +/* 089E48 7F055318 C468000C */ lwc1 $f8, 0xc($v1) +/* 089E4C 7F05531C 46085102 */ mul.s $f4, $f10, $f8 +/* 089E50 7F055320 46043281 */ sub.s $f10, $f6, $f4 +/* 089E54 7F055324 E7AA0048 */ swc1 $f10, 0x48($sp) +/* 089E58 7F055328 C466001C */ lwc1 $f6, 0x1c($v1) +/* 089E5C 7F05532C C468000C */ lwc1 $f8, 0xc($v1) +/* 089E60 7F055330 C46A0018 */ lwc1 $f10, 0x18($v1) +/* 089E64 7F055334 46064102 */ mul.s $f4, $f8, $f6 +/* 089E68 7F055338 C4680010 */ lwc1 $f8, 0x10($v1) +/* 089E6C 7F05533C 46085182 */ mul.s $f6, $f10, $f8 +/* 089E70 7F055340 46062281 */ sub.s $f10, $f4, $f6 +/* 089E74 7F055344 1000000A */ b .L7F055370 +/* 089E78 7F055348 E7AA004C */ swc1 $f10, 0x4c($sp) +.L7F05534C: +/* 089E7C 7F05534C C4680038 */ lwc1 $f8, 0x38($v1) +/* 089E80 7F055350 C4720034 */ lwc1 $f18, 0x34($v1) +/* 089E84 7F055354 E7A8003C */ swc1 $f8, 0x3c($sp) +/* 089E88 7F055358 C464000C */ lwc1 $f4, 0xc($v1) +/* 089E8C 7F05535C E7A40044 */ swc1 $f4, 0x44($sp) +/* 089E90 7F055360 C4660010 */ lwc1 $f6, 0x10($v1) +/* 089E94 7F055364 E7A60048 */ swc1 $f6, 0x48($sp) +/* 089E98 7F055368 C46A0014 */ lwc1 $f10, 0x14($v1) +/* 089E9C 7F05536C E7AA004C */ swc1 $f10, 0x4c($sp) +.L7F055370: +/* 089EA0 7F055370 C7A40044 */ lwc1 $f4, 0x44($sp) +/* 089EA4 7F055374 C4680000 */ lwc1 $f8, ($v1) +/* 089EA8 7F055378 46122182 */ mul.s $f6, $f4, $f18 +/* 089EAC 7F05537C C7A40030 */ lwc1 $f4, 0x30($sp) +/* 089EB0 7F055380 46064280 */ add.s $f10, $f8, $f6 +/* 089EB4 7F055384 C7A6004C */ lwc1 $f6, 0x4c($sp) +/* 089EB8 7F055388 C4680008 */ lwc1 $f8, 8($v1) +/* 089EBC 7F05538C E7B20040 */ swc1 $f18, 0x40($sp) +/* 089EC0 7F055390 46045301 */ sub.s $f12, $f10, $f4 +/* 089EC4 7F055394 46123282 */ mul.s $f10, $f6, $f18 +/* 089EC8 7F055398 C7A60038 */ lwc1 $f6, 0x38($sp) +/* 089ECC 7F05539C AFA3005C */ sw $v1, 0x5c($sp) +/* 089ED0 7F0553A0 460A4100 */ add.s $f4, $f8, $f10 +/* 089ED4 7F0553A4 0FC16A8C */ jal convert_angle_using_inverse +/* 089ED8 7F0553A8 46062381 */ sub.s $f14, $f4, $f6 +/* 089EDC 7F0553AC 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees +/* 089EE0 7F0553B0 E7A00020 */ swc1 $f0, 0x20($sp) +/* 089EE4 7F0553B4 C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 089EE8 7F0553B8 8FA3005C */ lw $v1, 0x5c($sp) +/* 089EEC 7F0553BC C7B20040 */ lwc1 $f18, 0x40($sp) +/* 089EF0 7F0553C0 4600603C */ c.lt.s $f12, $f0 +/* 089EF4 7F0553C4 3C018005 */ lui $at, %hi(D_80053460) +/* 089EF8 7F0553C8 46006381 */ sub.s $f14, $f12, $f0 +/* 089EFC 7F0553CC 8FA20068 */ lw $v0, 0x68($sp) +/* 089F00 7F0553D0 C7B0003C */ lwc1 $f16, 0x3c($sp) +/* 089F04 7F0553D4 45000003 */ bc1f .L7F0553E4 +/* 089F08 7F0553D8 46007086 */ mov.s $f2, $f14 +/* 089F0C 7F0553DC C4203460 */ lwc1 $f0, %lo(D_80053460)($at) +/* 089F10 7F0553E0 46007080 */ add.s $f2, $f14, $f0 +.L7F0553E4: +/* 089F14 7F0553E4 3C018005 */ lui $at, %hi(D_80053464) +/* 089F18 7F0553E8 C4203464 */ lwc1 $f0, %lo(D_80053464)($at) +/* 089F1C 7F0553EC 3C018005 */ lui $at, %hi(D_80053468) +/* 089F20 7F0553F0 C4283468 */ lwc1 $f8, %lo(D_80053468)($at) +/* 089F24 7F0553F4 C7AA0044 */ lwc1 $f10, 0x44($sp) +/* 089F28 7F0553F8 4602403C */ c.lt.s $f8, $f2 +/* 089F2C 7F0553FC 00000000 */ nop +/* 089F30 7F055400 45020003 */ bc1fl .L7F055410 +/* 089F34 7F055404 944B009A */ lhu $t3, 0x9a($v0) +/* 089F38 7F055408 46001081 */ sub.s $f2, $f2, $f0 +/* 089F3C 7F05540C 944B009A */ lhu $t3, 0x9a($v0) +.L7F055410: +/* 089F40 7F055410 24010005 */ li $at, 5 +/* 089F44 7F055414 15610046 */ bne $t3, $at, .L7F055530 +/* 089F48 7F055418 00000000 */ nop +/* 089F4C 7F05541C C44A00B4 */ lwc1 $f10, 0xb4($v0) +/* 089F50 7F055420 8C4C0008 */ lw $t4, 8($v0) +/* 089F54 7F055424 3C0143B4 */ li $at, 0x43B40000 # 360.000000 +/* 089F58 7F055428 46005102 */ mul.s $f4, $f10, $f0 +/* 089F5C 7F05542C 44813000 */ mtc1 $at, $f6 +/* 089F60 7F055430 000C6880 */ sll $t5, $t4, 2 +/* 089F64 7F055434 05A10002 */ bgez $t5, .L7F055440 +/* 089F68 7F055438 46062303 */ div.s $f12, $f4, $f6 +/* 089F6C 7F05543C 460C0301 */ sub.s $f12, $f0, $f12 +.L7F055440: +/* 089F70 7F055440 AFA3005C */ sw $v1, 0x5c($sp) +/* 089F74 7F055444 E7A20064 */ swc1 $f2, 0x64($sp) +/* 089F78 7F055448 E7AC002C */ swc1 $f12, 0x2c($sp) +/* 089F7C 7F05544C 0FC15FA8 */ jal cosf +/* 089F80 7F055450 E7B20040 */ swc1 $f18, 0x40($sp) +/* 089F84 7F055454 C7AC002C */ lwc1 $f12, 0x2c($sp) +/* 089F88 7F055458 0FC15FAB */ jal sinf +/* 089F8C 7F05545C E7A00028 */ swc1 $f0, 0x28($sp) +/* 089F90 7F055460 C7B20040 */ lwc1 $f18, 0x40($sp) +/* 089F94 7F055464 C7A40044 */ lwc1 $f4, 0x44($sp) +/* 089F98 7F055468 8FA3005C */ lw $v1, 0x5c($sp) +/* 089F9C 7F05546C C7A8003C */ lwc1 $f8, 0x3c($sp) +/* 089FA0 7F055470 46122182 */ mul.s $f6, $f4, $f18 +/* 089FA4 7F055474 C46A0000 */ lwc1 $f10, ($v1) +/* 089FA8 7F055478 46124081 */ sub.s $f2, $f8, $f18 +/* 089FAC 7F05547C C7B00028 */ lwc1 $f16, 0x28($sp) +/* 089FB0 7F055480 46065200 */ add.s $f8, $f10, $f6 +/* 089FB4 7F055484 46102282 */ mul.s $f10, $f4, $f16 +/* 089FB8 7F055488 C7A6004C */ lwc1 $f6, 0x4c($sp) +/* 089FBC 7F05548C E7A80018 */ swc1 $f8, 0x18($sp) +/* 089FC0 7F055490 46003202 */ mul.s $f8, $f6, $f0 +/* 089FC4 7F055494 46085280 */ add.s $f10, $f10, $f8 +/* 089FC8 7F055498 460A1202 */ mul.s $f8, $f2, $f10 +/* 089FCC 7F05549C C7AA0018 */ lwc1 $f10, 0x18($sp) +/* 089FD0 7F0554A0 46085280 */ add.s $f10, $f10, $f8 +/* 089FD4 7F0554A4 C7A80030 */ lwc1 $f8, 0x30($sp) +/* 089FD8 7F0554A8 46085301 */ sub.s $f12, $f10, $f8 +/* 089FDC 7F0554AC 46123202 */ mul.s $f8, $f6, $f18 +/* 089FE0 7F0554B0 C46A0008 */ lwc1 $f10, 8($v1) +/* 089FE4 7F0554B4 46085280 */ add.s $f10, $f10, $f8 +/* 089FE8 7F0554B8 46002207 */ neg.s $f8, $f4 +/* 089FEC 7F0554BC 46004102 */ mul.s $f4, $f8, $f0 +/* 089FF0 7F0554C0 00000000 */ nop +/* 089FF4 7F0554C4 46103202 */ mul.s $f8, $f6, $f16 +/* 089FF8 7F0554C8 46082180 */ add.s $f6, $f4, $f8 +/* 089FFC 7F0554CC 46061102 */ mul.s $f4, $f2, $f6 +/* 08A000 7F0554D0 C7A60038 */ lwc1 $f6, 0x38($sp) +/* 08A004 7F0554D4 46045200 */ add.s $f8, $f10, $f4 +/* 08A008 7F0554D8 0FC16A8C */ jal convert_angle_using_inverse +/* 08A00C 7F0554DC 46064381 */ sub.s $f14, $f8, $f6 +/* 08A010 7F0554E0 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees +/* 08A014 7F0554E4 E7A00020 */ swc1 $f0, 0x20($sp) +/* 08A018 7F0554E8 C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 08A01C 7F0554EC 3C018005 */ lui $at, %hi(D_8005346C) +/* 08A020 7F0554F0 4600603C */ c.lt.s $f12, $f0 +/* 08A024 7F0554F4 46006381 */ sub.s $f14, $f12, $f0 +/* 08A028 7F0554F8 45000003 */ bc1f .L7F055508 +/* 08A02C 7F0554FC 46007086 */ mov.s $f2, $f14 +/* 08A030 7F055500 C42A346C */ lwc1 $f10, %lo(D_8005346C)($at) +/* 08A034 7F055504 460A7080 */ add.s $f2, $f14, $f10 +.L7F055508: +/* 08A038 7F055508 3C018005 */ lui $at, %hi(D_80053470) +/* 08A03C 7F05550C C4243470 */ lwc1 $f4, %lo(D_80053470)($at) +/* 08A040 7F055510 3C018005 */ lui $at, %hi(D_80053474) +/* 08A044 7F055514 4602203C */ c.lt.s $f4, $f2 +/* 08A048 7F055518 00000000 */ nop +/* 08A04C 7F05551C 45020025 */ bc1fl .L7F0555B4 +/* 08A050 7F055520 C7A00064 */ lwc1 $f0, 0x64($sp) +/* 08A054 7F055524 C4283474 */ lwc1 $f8, %lo(D_80053474)($at) +/* 08A058 7F055528 10000021 */ b .L7F0555B0 +/* 08A05C 7F05552C 46081081 */ sub.s $f2, $f2, $f8 +.L7F055530: +/* 08A060 7F055530 46105102 */ mul.s $f4, $f10, $f16 +/* 08A064 7F055534 C4660000 */ lwc1 $f6, ($v1) +/* 08A068 7F055538 C7AA0030 */ lwc1 $f10, 0x30($sp) +/* 08A06C 7F05553C 46043200 */ add.s $f8, $f6, $f4 +/* 08A070 7F055540 C7A4004C */ lwc1 $f4, 0x4c($sp) +/* 08A074 7F055544 C4660008 */ lwc1 $f6, 8($v1) +/* 08A078 7F055548 E7A20064 */ swc1 $f2, 0x64($sp) +/* 08A07C 7F05554C 460A4301 */ sub.s $f12, $f8, $f10 +/* 08A080 7F055550 46102202 */ mul.s $f8, $f4, $f16 +/* 08A084 7F055554 C7A40038 */ lwc1 $f4, 0x38($sp) +/* 08A088 7F055558 46083280 */ add.s $f10, $f6, $f8 +/* 08A08C 7F05555C 0FC16A8C */ jal convert_angle_using_inverse +/* 08A090 7F055560 46045381 */ sub.s $f14, $f10, $f4 +/* 08A094 7F055564 0FC227B9 */ jal get_curplay_horizontal_rotation_in_degrees +/* 08A098 7F055568 E7A00020 */ swc1 $f0, 0x20($sp) +/* 08A09C 7F05556C C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 08A0A0 7F055570 3C018005 */ lui $at, %hi(D_80053478) +/* 08A0A4 7F055574 4600603C */ c.lt.s $f12, $f0 +/* 08A0A8 7F055578 46006381 */ sub.s $f14, $f12, $f0 +/* 08A0AC 7F05557C 45000003 */ bc1f .L7F05558C +/* 08A0B0 7F055580 46007086 */ mov.s $f2, $f14 +/* 08A0B4 7F055584 C4263478 */ lwc1 $f6, %lo(D_80053478)($at) +/* 08A0B8 7F055588 46067080 */ add.s $f2, $f14, $f6 +.L7F05558C: +/* 08A0BC 7F05558C 3C018005 */ lui $at, %hi(D_8005347C) +/* 08A0C0 7F055590 C428347C */ lwc1 $f8, %lo(D_8005347C)($at) +/* 08A0C4 7F055594 3C018005 */ lui $at, %hi(D_80053480) +/* 08A0C8 7F055598 4602403C */ c.lt.s $f8, $f2 +/* 08A0CC 7F05559C 00000000 */ nop +/* 08A0D0 7F0555A0 45020004 */ bc1fl .L7F0555B4 +/* 08A0D4 7F0555A4 C7A00064 */ lwc1 $f0, 0x64($sp) +/* 08A0D8 7F0555A8 C42A3480 */ lwc1 $f10, %lo(D_80053480)($at) +/* 08A0DC 7F0555AC 460A1081 */ sub.s $f2, $f2, $f10 +.L7F0555B0: +/* 08A0E0 7F0555B0 C7A00064 */ lwc1 $f0, 0x64($sp) +.L7F0555B4: +/* 08A0E4 7F0555B4 8FAE006C */ lw $t6, 0x6c($sp) +/* 08A0E8 7F0555B8 8FB8006C */ lw $t8, 0x6c($sp) +/* 08A0EC 7F0555BC 4602003C */ c.lt.s $f0, $f2 +/* 08A0F0 7F0555C0 00000000 */ nop +/* 08A0F4 7F0555C4 45020006 */ bc1fl .L7F0555E0 +/* 08A0F8 7F0555C8 E7020000 */ swc1 $f2, ($t8) +/* 08A0FC 7F0555CC E5C00000 */ swc1 $f0, ($t6) +/* 08A100 7F0555D0 8FAF0070 */ lw $t7, 0x70($sp) +/* 08A104 7F0555D4 10000004 */ b .L7F0555E8 +/* 08A108 7F0555D8 E5E20000 */ swc1 $f2, ($t7) +/* 08A10C 7F0555DC E7020000 */ swc1 $f2, ($t8) +.L7F0555E0: +/* 08A110 7F0555E0 8FB90070 */ lw $t9, 0x70($sp) +/* 08A114 7F0555E4 E7200000 */ swc1 $f0, ($t9) +.L7F0555E8: +/* 08A118 7F0555E8 8FBF0014 */ lw $ra, 0x14($sp) +/* 08A11C 7F0555EC 27BD0068 */ addiu $sp, $sp, 0x68 +/* 08A120 7F0555F0 03E00008 */ jr $ra +/* 08A124 7F0555F4 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F0555F8(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0555F8 +/* 08A128 7F0555F8 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 08A12C 7F0555FC 3C0F8007 */ lui $t7, %hi(dword_CODE_bss_80071DF8) +/* 08A130 7F055600 8DEF1DF8 */ lw $t7, %lo(dword_CODE_bss_80071DF8)($t7) +/* 08A134 7F055604 AFB40030 */ sw $s4, 0x30($sp) +/* 08A138 7F055608 AFB3002C */ sw $s3, 0x2c($sp) +/* 08A13C 7F05560C 240E0001 */ li $t6, 1 +/* 08A140 7F055610 00809825 */ move $s3, $a0 +/* 08A144 7F055614 00A0A025 */ move $s4, $a1 +/* 08A148 7F055618 AFBF0034 */ sw $ra, 0x34($sp) +/* 08A14C 7F05561C AFB20028 */ sw $s2, 0x28($sp) +/* 08A150 7F055620 AFB10024 */ sw $s1, 0x24($sp) +/* 08A154 7F055624 AFB00020 */ sw $s0, 0x20($sp) +/* 08A158 7F055628 F7B40018 */ sdc1 $f20, 0x18($sp) +/* 08A15C 7F05562C 15E0006B */ bnez $t7, .L7F0557DC +/* 08A160 7F055630 AFAE0054 */ sw $t6, 0x54($sp) +/* 08A164 7F055634 27A50050 */ addiu $a1, $sp, 0x50 +/* 08A168 7F055638 27A6004C */ addiu $a2, $sp, 0x4c +/* 08A16C 7F05563C 0FC1548B */ jal sub_GAME_7F05522C +/* 08A170 7F055640 02803825 */ move $a3, $s4 +/* 08A174 7F055644 3C018005 */ lui $at, %hi(D_80053484) +/* 08A178 7F055648 C4223484 */ lwc1 $f2, %lo(D_80053484)($at) +/* 08A17C 7F05564C C7A40050 */ lwc1 $f4, 0x50($sp) +/* 08A180 7F055650 46001007 */ neg.s $f0, $f2 +/* 08A184 7F055654 4604003E */ c.le.s $f0, $f4 +/* 08A188 7F055658 00000000 */ nop +/* 08A18C 7F05565C 45020012 */ bc1fl .L7F0556A8 +/* 08A190 7F055660 8E7000C8 */ lw $s0, 0xc8($s3) +/* 08A194 7F055664 4602203E */ c.le.s $f4, $f2 +/* 08A198 7F055668 C7A6004C */ lwc1 $f6, 0x4c($sp) +/* 08A19C 7F05566C 4502000E */ bc1fl .L7F0556A8 +/* 08A1A0 7F055670 8E7000C8 */ lw $s0, 0xc8($s3) +/* 08A1A4 7F055674 4606003E */ c.le.s $f0, $f6 +/* 08A1A8 7F055678 00000000 */ nop +/* 08A1AC 7F05567C 4502000A */ bc1fl .L7F0556A8 +/* 08A1B0 7F055680 8E7000C8 */ lw $s0, 0xc8($s3) +/* 08A1B4 7F055684 4602303E */ c.le.s $f6, $f2 +/* 08A1B8 7F055688 3C018007 */ lui $at, %hi(dword_CODE_bss_80071DF8) +/* 08A1BC 7F05568C 45020006 */ bc1fl .L7F0556A8 +/* 08A1C0 7F055690 8E7000C8 */ lw $s0, 0xc8($s3) +/* 08A1C4 7F055694 8E780010 */ lw $t8, 0x10($s3) +/* 08A1C8 7F055698 AFA00054 */ sw $zero, 0x54($sp) +/* 08A1CC 7F05569C 1000004F */ b .L7F0557DC +/* 08A1D0 7F0556A0 AC381DF8 */ sw $t8, %lo(dword_CODE_bss_80071DF8)($at) +/* 08A1D4 7F0556A4 8E7000C8 */ lw $s0, 0xc8($s3) +.L7F0556A8: +/* 08A1D8 7F0556A8 52000037 */ beql $s0, $zero, .L7F055788 +/* 08A1DC 7F0556AC C7A8004C */ lwc1 $f8, 0x4c($sp) +/* 08A1E0 7F0556B0 12130034 */ beq $s0, $s3, .L7F055784 +/* 08A1E4 7F0556B4 C7A80050 */ lwc1 $f8, 0x50($sp) +/* 08A1E8 7F0556B8 4480A000 */ mtc1 $zero, $f20 +/* 08A1EC 7F0556BC C7AA004C */ lwc1 $f10, 0x4c($sp) +/* 08A1F0 7F0556C0 4608A03E */ c.le.s $f20, $f8 +/* 08A1F4 7F0556C4 00000000 */ nop +/* 08A1F8 7F0556C8 45030005 */ bc1tl .L7F0556E0 +/* 08A1FC 7F0556CC 27A50040 */ addiu $a1, $sp, 0x40 +/* 08A200 7F0556D0 4614503C */ c.lt.s $f10, $f20 +/* 08A204 7F0556D4 00000000 */ nop +/* 08A208 7F0556D8 4500002A */ bc1f .L7F055784 +/* 08A20C 7F0556DC 27A50040 */ addiu $a1, $sp, 0x40 +.L7F0556E0: +/* 08A210 7F0556E0 27A6003C */ addiu $a2, $sp, 0x3c +/* 08A214 7F0556E4 02002025 */ move $a0, $s0 +/* 08A218 7F0556E8 0FC1548B */ jal sub_GAME_7F05522C +/* 08A21C 7F0556EC 02803825 */ move $a3, $s4 +/* 08A220 7F0556F0 C7B00050 */ lwc1 $f16, 0x50($sp) +/* 08A224 7F0556F4 C7A00040 */ lwc1 $f0, 0x40($sp) +/* 08A228 7F0556F8 4610A03C */ c.lt.s $f20, $f16 +/* 08A22C 7F0556FC 00000000 */ nop +/* 08A230 7F055700 45020007 */ bc1fl .L7F055720 +/* 08A234 7F055704 C7B2004C */ lwc1 $f18, 0x4c($sp) +/* 08A238 7F055708 4610003C */ c.lt.s $f0, $f16 +/* 08A23C 7F05570C 00000000 */ nop +/* 08A240 7F055710 45020003 */ bc1fl .L7F055720 +/* 08A244 7F055714 C7B2004C */ lwc1 $f18, 0x4c($sp) +/* 08A248 7F055718 E7A00050 */ swc1 $f0, 0x50($sp) +/* 08A24C 7F05571C C7B2004C */ lwc1 $f18, 0x4c($sp) +.L7F055720: +/* 08A250 7F055720 C7A0003C */ lwc1 $f0, 0x3c($sp) +/* 08A254 7F055724 4614903C */ c.lt.s $f18, $f20 +/* 08A258 7F055728 00000000 */ nop +/* 08A25C 7F05572C 45020007 */ bc1fl .L7F05574C +/* 08A260 7F055730 8E1000C8 */ lw $s0, 0xc8($s0) +/* 08A264 7F055734 4600903C */ c.lt.s $f18, $f0 +/* 08A268 7F055738 00000000 */ nop +/* 08A26C 7F05573C 45020003 */ bc1fl .L7F05574C +/* 08A270 7F055740 8E1000C8 */ lw $s0, 0xc8($s0) +/* 08A274 7F055744 E7A0004C */ swc1 $f0, 0x4c($sp) +/* 08A278 7F055748 8E1000C8 */ lw $s0, 0xc8($s0) +.L7F05574C: +/* 08A27C 7F05574C C7A40050 */ lwc1 $f4, 0x50($sp) +/* 08A280 7F055750 5200000D */ beql $s0, $zero, .L7F055788 +/* 08A284 7F055754 C7A8004C */ lwc1 $f8, 0x4c($sp) +/* 08A288 7F055758 5213000B */ beql $s0, $s3, .L7F055788 +/* 08A28C 7F05575C C7A8004C */ lwc1 $f8, 0x4c($sp) +/* 08A290 7F055760 4604A03E */ c.le.s $f20, $f4 +/* 08A294 7F055764 00000000 */ nop +/* 08A298 7F055768 4503FFDD */ bc1tl .L7F0556E0 +/* 08A29C 7F05576C 27A50040 */ addiu $a1, $sp, 0x40 +/* 08A2A0 7F055770 C7A6004C */ lwc1 $f6, 0x4c($sp) +/* 08A2A4 7F055774 4614303C */ c.lt.s $f6, $f20 +/* 08A2A8 7F055778 00000000 */ nop +/* 08A2AC 7F05577C 4503FFD8 */ bc1tl .L7F0556E0 +/* 08A2B0 7F055780 27A50040 */ addiu $a1, $sp, 0x40 +.L7F055784: +/* 08A2B4 7F055784 C7A8004C */ lwc1 $f8, 0x4c($sp) +.L7F055788: +/* 08A2B8 7F055788 C7AA0050 */ lwc1 $f10, 0x50($sp) +/* 08A2BC 7F05578C 3C018005 */ lui $at, %hi(D_80053488) +/* 08A2C0 7F055790 C4323488 */ lwc1 $f18, %lo(D_80053488)($at) +/* 08A2C4 7F055794 460A4401 */ sub.s $f16, $f8, $f10 +/* 08A2C8 7F055798 4480A000 */ mtc1 $zero, $f20 +/* 08A2CC 7F05579C 4612803C */ c.lt.s $f16, $f18 +/* 08A2D0 7F0557A0 00000000 */ nop +/* 08A2D4 7F0557A4 4502000E */ bc1fl .L7F0557E0 +/* 08A2D8 7F0557A8 8FBF0034 */ lw $ra, 0x34($sp) +/* 08A2DC 7F0557AC 4614503C */ c.lt.s $f10, $f20 +/* 08A2E0 7F0557B0 00000000 */ nop +/* 08A2E4 7F0557B4 4502000A */ bc1fl .L7F0557E0 +/* 08A2E8 7F0557B8 8FBF0034 */ lw $ra, 0x34($sp) +/* 08A2EC 7F0557BC 4608A03C */ c.lt.s $f20, $f8 +/* 08A2F0 7F0557C0 00000000 */ nop +/* 08A2F4 7F0557C4 45020006 */ bc1fl .L7F0557E0 +/* 08A2F8 7F0557C8 8FBF0034 */ lw $ra, 0x34($sp) +/* 08A2FC 7F0557CC 8E790010 */ lw $t9, 0x10($s3) +/* 08A300 7F0557D0 3C018007 */ lui $at, %hi(dword_CODE_bss_80071DF8) +/* 08A304 7F0557D4 AFA00054 */ sw $zero, 0x54($sp) +/* 08A308 7F0557D8 AC391DF8 */ sw $t9, %lo(dword_CODE_bss_80071DF8)($at) +.L7F0557DC: +/* 08A30C 7F0557DC 8FBF0034 */ lw $ra, 0x34($sp) +.L7F0557E0: +/* 08A310 7F0557E0 8FA20054 */ lw $v0, 0x54($sp) +/* 08A314 7F0557E4 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 08A318 7F0557E8 8FB00020 */ lw $s0, 0x20($sp) +/* 08A31C 7F0557EC 8FB10024 */ lw $s1, 0x24($sp) +/* 08A320 7F0557F0 8FB20028 */ lw $s2, 0x28($sp) +/* 08A324 7F0557F4 8FB3002C */ lw $s3, 0x2c($sp) +/* 08A328 7F0557F8 8FB40030 */ lw $s4, 0x30($sp) +/* 08A32C 7F0557FC 03E00008 */ jr $ra +/* 08A330 7F055800 27BD0058 */ addiu $sp, $sp, 0x58 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F055804(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F055804 +/* 08A334 7F055804 27BDFF78 */ addiu $sp, $sp, -0x88 +/* 08A338 7F055808 240E0001 */ li $t6, 1 +/* 08A33C 7F05580C AFBF001C */ sw $ra, 0x1c($sp) +/* 08A340 7F055810 AFB00018 */ sw $s0, 0x18($sp) +/* 08A344 7F055814 AFAE0084 */ sw $t6, 0x84($sp) +/* 08A348 7F055818 8C900004 */ lw $s0, 4($a0) +/* 08A34C 7F05581C 8E0F0008 */ lw $t7, 8($s0) +/* 08A350 7F055820 000FC180 */ sll $t8, $t7, 6 +/* 08A354 7F055824 07020059 */ bltzl $t8, .L7F05598C +/* 08A358 7F055828 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A35C 7F05582C 44802000 */ mtc1 $zero, $f4 +/* 08A360 7F055830 C6060084 */ lwc1 $f6, 0x84($s0) +/* 08A364 7F055834 4606203C */ c.lt.s $f4, $f6 +/* 08A368 7F055838 00000000 */ nop +/* 08A36C 7F05583C 45020053 */ bc1fl .L7F05598C +/* 08A370 7F055840 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A374 7F055844 90990001 */ lbu $t9, 1($a0) +/* 08A378 7F055848 33280002 */ andi $t0, $t9, 2 +/* 08A37C 7F05584C 5100004F */ beql $t0, $zero, .L7F05598C +/* 08A380 7F055850 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A384 7F055854 AFA0007C */ sw $zero, 0x7c($sp) +/* 08A388 7F055858 0FC225E6 */ jal get_curplayer_positiondata +/* 08A38C 7F05585C AFA40088 */ sw $a0, 0x88($sp) +/* 08A390 7F055860 AFA20078 */ sw $v0, 0x78($sp) +/* 08A394 7F055864 C44A0008 */ lwc1 $f10, 8($v0) +/* 08A398 7F055868 C6080058 */ lwc1 $f8, 0x58($s0) +/* 08A39C 7F05586C C4460010 */ lwc1 $f6, 0x10($v0) +/* 08A3A0 7F055870 C6040060 */ lwc1 $f4, 0x60($s0) +/* 08A3A4 7F055874 460A4001 */ sub.s $f0, $f8, $f10 +/* 08A3A8 7F055878 C452000C */ lwc1 $f18, 0xc($v0) +/* 08A3AC 7F05587C C610005C */ lwc1 $f16, 0x5c($s0) +/* 08A3B0 7F055880 46062081 */ sub.s $f2, $f4, $f6 +/* 08A3B4 7F055884 46000202 */ mul.s $f8, $f0, $f0 +/* 08A3B8 7F055888 3C018005 */ lui $at, %hi(D_8005348C) +/* 08A3BC 7F05588C 46128301 */ sub.s $f12, $f16, $f18 +/* 08A3C0 7F055890 46021282 */ mul.s $f10, $f2, $f2 +/* 08A3C4 7F055894 C432348C */ lwc1 $f18, %lo(D_8005348C)($at) +/* 08A3C8 7F055898 8FA40088 */ lw $a0, 0x88($sp) +/* 08A3CC 7F05589C 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 08A3D0 7F0558A0 460A4400 */ add.s $f16, $f8, $f10 +/* 08A3D4 7F0558A4 4612803C */ c.lt.s $f16, $f18 +/* 08A3D8 7F0558A8 00000000 */ nop +/* 08A3DC 7F0558AC 4500000F */ bc1f .L7F0558EC +/* 08A3E0 7F0558B0 00000000 */ nop +/* 08A3E4 7F0558B4 44812000 */ mtc1 $at, $f4 +/* 08A3E8 7F0558B8 3C01C348 */ li $at, 0xC3480000 # -200.000000 +/* 08A3EC 7F0558BC 4604603C */ c.lt.s $f12, $f4 +/* 08A3F0 7F0558C0 00000000 */ nop +/* 08A3F4 7F0558C4 45000009 */ bc1f .L7F0558EC +/* 08A3F8 7F0558C8 00000000 */ nop +/* 08A3FC 7F0558CC 44813000 */ mtc1 $at, $f6 +/* 08A400 7F0558D0 24090001 */ li $t1, 1 +/* 08A404 7F0558D4 460C303C */ c.lt.s $f6, $f12 +/* 08A408 7F0558D8 00000000 */ nop +/* 08A40C 7F0558DC 45000003 */ bc1f .L7F0558EC +/* 08A410 7F0558E0 00000000 */ nop +/* 08A414 7F0558E4 10000018 */ b .L7F055948 +/* 08A418 7F0558E8 AFA9007C */ sw $t1, 0x7c($sp) +.L7F0558EC: +/* 08A41C 7F0558EC 0FC0F2E3 */ jal sub_GAME_7F03CB8C +/* 08A420 7F0558F0 27A50048 */ addiu $a1, $sp, 0x48 +/* 08A424 7F0558F4 8FA40078 */ lw $a0, 0x78($sp) +/* 08A428 7F0558F8 0FC0F2E3 */ jal sub_GAME_7F03CB8C +/* 08A42C 7F0558FC 27A50028 */ addiu $a1, $sp, 0x28 +/* 08A430 7F055900 27A40048 */ addiu $a0, $sp, 0x48 +/* 08A434 7F055904 0FC0F6DC */ jal sub_GAME_7F03DB70 +/* 08A438 7F055908 27A50028 */ addiu $a1, $sp, 0x28 +/* 08A43C 7F05590C 1040000E */ beqz $v0, .L7F055948 +/* 08A440 7F055910 3C0C8007 */ lui $t4, %hi(ptr_2xxxpresets) +/* 08A444 7F055914 860A0006 */ lh $t2, 6($s0) +/* 08A448 7F055918 8D8C5D1C */ lw $t4, %lo(ptr_2xxxpresets)($t4) +/* 08A44C 7F05591C 8FA40078 */ lw $a0, 0x78($sp) +/* 08A450 7F055920 000A5900 */ sll $t3, $t2, 4 +/* 08A454 7F055924 016A5821 */ addu $t3, $t3, $t2 +/* 08A458 7F055928 000B5880 */ sll $t3, $t3, 2 +/* 08A45C 7F05592C 3C054316 */ lui $a1, 0x4316 +/* 08A460 7F055930 016C3021 */ addu $a2, $t3, $t4 +/* 08A464 7F055934 0FC0FD66 */ jal sub_GAME_7F03F598 +/* 08A468 7F055938 24840008 */ addiu $a0, $a0, 8 +/* 08A46C 7F05593C 10400002 */ beqz $v0, .L7F055948 +/* 08A470 7F055940 240D0001 */ li $t5, 1 +/* 08A474 7F055944 AFAD007C */ sw $t5, 0x7c($sp) +.L7F055948: +/* 08A478 7F055948 8FAE007C */ lw $t6, 0x7c($sp) +/* 08A47C 7F05594C 02002025 */ move $a0, $s0 +/* 08A480 7F055950 51C0000E */ beql $t6, $zero, .L7F05598C +/* 08A484 7F055954 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A488 7F055958 0FC1557E */ jal sub_GAME_7F0555F8 +/* 08A48C 7F05595C 00002825 */ move $a1, $zero +/* 08A490 7F055960 10400009 */ beqz $v0, .L7F055988 +/* 08A494 7F055964 AFA20084 */ sw $v0, 0x84($sp) +/* 08A498 7F055968 8E0F000C */ lw $t7, 0xc($s0) +/* 08A49C 7F05596C 02002025 */ move $a0, $s0 +/* 08A4A0 7F055970 000FC000 */ sll $t8, $t7, 0 +/* 08A4A4 7F055974 07030005 */ bgezl $t8, .L7F05598C +/* 08A4A8 7F055978 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A4AC 7F05597C 0FC1557E */ jal sub_GAME_7F0555F8 +/* 08A4B0 7F055980 24050001 */ li $a1, 1 +/* 08A4B4 7F055984 AFA20084 */ sw $v0, 0x84($sp) +.L7F055988: +/* 08A4B8 7F055988 8FBF001C */ lw $ra, 0x1c($sp) +.L7F05598C: +/* 08A4BC 7F05598C 8FA20084 */ lw $v0, 0x84($sp) +/* 08A4C0 7F055990 8FB00018 */ lw $s0, 0x18($sp) +/* 08A4C4 7F055994 03E00008 */ jr $ra +/* 08A4C8 7F055998 27BD0088 */ addiu $sp, $sp, 0x88 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F05599C(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F05599C +/* 08A4CC 7F05599C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 08A4D0 7F0559A0 AFBF001C */ sw $ra, 0x1c($sp) +/* 08A4D4 7F0559A4 AFB00018 */ sw $s0, 0x18($sp) +/* 08A4D8 7F0559A8 AFA40020 */ sw $a0, 0x20($sp) +/* 08A4DC 7F0559AC 8C900004 */ lw $s0, 4($a0) +/* 08A4E0 7F0559B0 24010001 */ li $at, 1 +/* 08A4E4 7F0559B4 820200BC */ lb $v0, 0xbc($s0) +/* 08A4E8 7F0559B8 02002025 */ move $a0, $s0 +/* 08A4EC 7F0559BC 10410003 */ beq $v0, $at, .L7F0559CC +/* 08A4F0 7F0559C0 24010003 */ li $at, 3 +/* 08A4F4 7F0559C4 54410006 */ bnel $v0, $at, .L7F0559E0 +/* 08A4F8 7F0559C8 24010002 */ li $at, 2 +.L7F0559CC: +/* 08A4FC 7F0559CC 0FC15262 */ jal set_door_state +/* 08A500 7F0559D0 24050002 */ li $a1, 2 +/* 08A504 7F0559D4 10000019 */ b .L7F055A3C +/* 08A508 7F0559D8 8E0F0064 */ lw $t7, 0x64($s0) +/* 08A50C 7F0559DC 24010002 */ li $at, 2 +.L7F0559E0: +/* 08A510 7F0559E0 14410005 */ bne $v0, $at, .L7F0559F8 +/* 08A514 7F0559E4 02002025 */ move $a0, $s0 +/* 08A518 7F0559E8 0FC15262 */ jal set_door_state +/* 08A51C 7F0559EC 24050001 */ li $a1, 1 +/* 08A520 7F0559F0 10000012 */ b .L7F055A3C +/* 08A524 7F0559F4 8E0F0064 */ lw $t7, 0x64($s0) +.L7F0559F8: +/* 08A528 7F0559F8 1440000F */ bnez $v0, .L7F055A38 +/* 08A52C 7F0559FC 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 08A530 7F055A00 44812000 */ mtc1 $at, $f4 +/* 08A534 7F055A04 C60600B4 */ lwc1 $f6, 0xb4($s0) +/* 08A538 7F055A08 24050002 */ li $a1, 2 +/* 08A53C 7F055A0C 02002025 */ move $a0, $s0 +/* 08A540 7F055A10 4606203C */ c.lt.s $f4, $f6 +/* 08A544 7F055A14 00000000 */ nop +/* 08A548 7F055A18 45000005 */ bc1f .L7F055A30 +/* 08A54C 7F055A1C 00000000 */ nop +/* 08A550 7F055A20 0FC15262 */ jal set_door_state +/* 08A554 7F055A24 02002025 */ move $a0, $s0 +/* 08A558 7F055A28 10000004 */ b .L7F055A3C +/* 08A55C 7F055A2C 8E0F0064 */ lw $t7, 0x64($s0) +.L7F055A30: +/* 08A560 7F055A30 0FC15262 */ jal set_door_state +/* 08A564 7F055A34 24050001 */ li $a1, 1 +.L7F055A38: +/* 08A568 7F055A38 8E0F0064 */ lw $t7, 0x64($s0) +.L7F055A3C: +/* 08A56C 7F055A3C 8E19000C */ lw $t9, 0xc($s0) +/* 08A570 7F055A40 2401FFF7 */ li $at, -9 +/* 08A574 7F055A44 35F84000 */ ori $t8, $t7, 0x4000 +/* 08A578 7F055A48 03214024 */ and $t0, $t9, $at +/* 08A57C 7F055A4C AE180064 */ sw $t8, 0x64($s0) +/* 08A580 7F055A50 AE08000C */ sw $t0, 0xc($s0) +/* 08A584 7F055A54 0FC0F9A8 */ jal sub_GAME_7F03E6A0 +/* 08A588 7F055A58 8FA40020 */ lw $a0, 0x20($sp) +/* 08A58C 7F055A5C 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A590 7F055A60 8FB00018 */ lw $s0, 0x18($sp) +/* 08A594 7F055A64 27BD0020 */ addiu $sp, $sp, 0x20 +/* 08A598 7F055A68 03E00008 */ jr $ra +/* 08A59C 7F055A6C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F055A70(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F055A70 +/* 08A5A0 7F055A70 84AE0006 */ lh $t6, 6($a1) +/* 08A5A4 7F055A74 3C188007 */ lui $t8, %hi(ptr_2xxxpresets) +/* 08A5A8 7F055A78 8F185D1C */ lw $t8, %lo(ptr_2xxxpresets)($t8) +/* 08A5AC 7F055A7C 000E7900 */ sll $t7, $t6, 4 +/* 08A5B0 7F055A80 01EE7821 */ addu $t7, $t7, $t6 +/* 08A5B4 7F055A84 000F7880 */ sll $t7, $t7, 2 +/* 08A5B8 7F055A88 01F81021 */ addu $v0, $t7, $t8 +/* 08A5BC 7F055A8C C4440010 */ lwc1 $f4, 0x10($v0) +/* 08A5C0 7F055A90 C4460020 */ lwc1 $f6, 0x20($v0) +/* 08A5C4 7F055A94 C44A001C */ lwc1 $f10, 0x1c($v0) +/* 08A5C8 7F055A98 C4520014 */ lwc1 $f18, 0x14($v0) +/* 08A5CC 7F055A9C 46062202 */ mul.s $f8, $f4, $f6 +/* 08A5D0 7F055AA0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 08A5D4 7F055AA4 46125102 */ mul.s $f4, $f10, $f18 +/* 08A5D8 7F055AA8 46044181 */ sub.s $f6, $f8, $f4 +/* 08A5DC 7F055AAC E7A60004 */ swc1 $f6, 4($sp) +/* 08A5E0 7F055AB0 C4520018 */ lwc1 $f18, 0x18($v0) +/* 08A5E4 7F055AB4 C44A0014 */ lwc1 $f10, 0x14($v0) +/* 08A5E8 7F055AB8 C4440020 */ lwc1 $f4, 0x20($v0) +/* 08A5EC 7F055ABC 46125202 */ mul.s $f8, $f10, $f18 +/* 08A5F0 7F055AC0 C44A000C */ lwc1 $f10, 0xc($v0) +/* 08A5F4 7F055AC4 460A2482 */ mul.s $f18, $f4, $f10 +/* 08A5F8 7F055AC8 46124101 */ sub.s $f4, $f8, $f18 +/* 08A5FC 7F055ACC E7A40008 */ swc1 $f4, 8($sp) +/* 08A600 7F055AD0 C448001C */ lwc1 $f8, 0x1c($v0) +/* 08A604 7F055AD4 C44A000C */ lwc1 $f10, 0xc($v0) +/* 08A608 7F055AD8 46085482 */ mul.s $f18, $f10, $f8 +/* 08A60C 7F055ADC C4480010 */ lwc1 $f8, 0x10($v0) +/* 08A610 7F055AE0 C44A0018 */ lwc1 $f10, 0x18($v0) +/* 08A614 7F055AE4 46085282 */ mul.s $f10, $f10, $f8 +/* 08A618 7F055AE8 460A9201 */ sub.s $f8, $f18, $f10 +/* 08A61C 7F055AEC E7A8000C */ swc1 $f8, 0xc($sp) +/* 08A620 7F055AF0 C44A0000 */ lwc1 $f10, ($v0) +/* 08A624 7F055AF4 C4920008 */ lwc1 $f18, 8($a0) +/* 08A628 7F055AF8 94B90098 */ lhu $t9, 0x98($a1) +/* 08A62C 7F055AFC 460A9001 */ sub.s $f0, $f18, $f10 +/* 08A630 7F055B00 C44A0004 */ lwc1 $f10, 4($v0) +/* 08A634 7F055B04 C492000C */ lwc1 $f18, 0xc($a0) +/* 08A638 7F055B08 33280008 */ andi $t0, $t9, 8 +/* 08A63C 7F055B0C 460A9081 */ sub.s $f2, $f18, $f10 +/* 08A640 7F055B10 C44A0008 */ lwc1 $f10, 8($v0) +/* 08A644 7F055B14 C4920010 */ lwc1 $f18, 0x10($a0) +/* 08A648 7F055B18 460A9301 */ sub.s $f12, $f18, $f10 +/* 08A64C 7F055B1C 46060482 */ mul.s $f18, $f0, $f6 +/* 08A650 7F055B20 44800000 */ mtc1 $zero, $f0 +/* 08A654 7F055B24 46041282 */ mul.s $f10, $f2, $f4 +/* 08A658 7F055B28 460A9180 */ add.s $f6, $f18, $f10 +/* 08A65C 7F055B2C 460C4102 */ mul.s $f4, $f8, $f12 +/* 08A660 7F055B30 46062400 */ add.s $f16, $f4, $f6 +/* 08A664 7F055B34 11000002 */ beqz $t0, .L7F055B40 +/* 08A668 7F055B38 46008386 */ mov.s $f14, $f16 +/* 08A66C 7F055B3C 46008387 */ neg.s $f14, $f16 +.L7F055B40: +/* 08A670 7F055B40 4600703C */ c.lt.s $f14, $f0 +/* 08A674 7F055B44 00000000 */ nop +/* 08A678 7F055B48 45020004 */ bc1fl .L7F055B5C +/* 08A67C 7F055B4C 460E003C */ c.lt.s $f0, $f14 +/* 08A680 7F055B50 10000007 */ b .L7F055B70 +/* 08A684 7F055B54 00001025 */ move $v0, $zero +/* 08A688 7F055B58 460E003C */ c.lt.s $f0, $f14 +.L7F055B5C: +/* 08A68C 7F055B5C 24020001 */ li $v0, 1 +/* 08A690 7F055B60 45000003 */ bc1f .L7F055B70 +/* 08A694 7F055B64 00000000 */ nop +/* 08A698 7F055B68 10000001 */ b .L7F055B70 +/* 08A69C 7F055B6C 24020001 */ li $v0, 1 +.L7F055B70: +/* 08A6A0 7F055B70 03E00008 */ jr $ra +/* 08A6A4 7F055B74 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F055B78(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F055B78 +/* 08A6A8 7F055B78 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 08A6AC 7F055B7C AFBF0014 */ sw $ra, 0x14($sp) +/* 08A6B0 7F055B80 8CAE0008 */ lw $t6, 8($a1) +/* 08A6B4 7F055B84 000E7900 */ sll $t7, $t6, 4 +/* 08A6B8 7F055B88 05E3002A */ bgezl $t7, .L7F055C34 +/* 08A6BC 7F055B8C 8FBF0014 */ lw $ra, 0x14($sp) +/* 08A6C0 7F055B90 80B800BC */ lb $t8, 0xbc($a1) +/* 08A6C4 7F055B94 57000027 */ bnezl $t8, .L7F055C34 +/* 08A6C8 7F055B98 8FBF0014 */ lw $ra, 0x14($sp) +/* 08A6CC 7F055B9C 44802000 */ mtc1 $zero, $f4 +/* 08A6D0 7F055BA0 C4A600B4 */ lwc1 $f6, 0xb4($a1) +/* 08A6D4 7F055BA4 46062032 */ c.eq.s $f4, $f6 +/* 08A6D8 7F055BA8 00000000 */ nop +/* 08A6DC 7F055BAC 45020021 */ bc1fl .L7F055C34 +/* 08A6E0 7F055BB0 8FBF0014 */ lw $ra, 0x14($sp) +/* 08A6E4 7F055BB4 0FC1569C */ jal sub_GAME_7F055A70 +/* 08A6E8 7F055BB8 AFA5001C */ sw $a1, 0x1c($sp) +/* 08A6EC 7F055BBC 8FA5001C */ lw $a1, 0x1c($sp) +/* 08A6F0 7F055BC0 00002025 */ move $a0, $zero +/* 08A6F4 7F055BC4 94B90098 */ lhu $t9, 0x98($a1) +/* 08A6F8 7F055BC8 33280008 */ andi $t0, $t9, 8 +/* 08A6FC 7F055BCC 15000006 */ bnez $t0, .L7F055BE8 +/* 08A700 7F055BD0 00000000 */ nop +/* 08A704 7F055BD4 14400002 */ bnez $v0, .L7F055BE0 +/* 08A708 7F055BD8 00000000 */ nop +/* 08A70C 7F055BDC 3C042000 */ lui $a0, 0x2000 +.L7F055BE0: +/* 08A710 7F055BE0 10000005 */ b .L7F055BF8 +/* 08A714 7F055BE4 8CA90008 */ lw $t1, 8($a1) +.L7F055BE8: +/* 08A718 7F055BE8 50400003 */ beql $v0, $zero, .L7F055BF8 +/* 08A71C 7F055BEC 8CA90008 */ lw $t1, 8($a1) +/* 08A720 7F055BF0 3C042000 */ lui $a0, 0x2000 +/* 08A724 7F055BF4 8CA90008 */ lw $t1, 8($a1) +.L7F055BF8: +/* 08A728 7F055BF8 3C032000 */ lui $v1, 0x2000 +/* 08A72C 7F055BFC 00A01025 */ move $v0, $a1 +/* 08A730 7F055C00 01245026 */ xor $t2, $t1, $a0 +/* 08A734 7F055C04 000A5880 */ sll $t3, $t2, 2 +/* 08A738 7F055C08 0563000A */ bgezl $t3, .L7F055C34 +/* 08A73C 7F055C0C 8FBF0014 */ lw $ra, 0x14($sp) +/* 08A740 7F055C10 8C4C0008 */ lw $t4, 8($v0) +.L7F055C14: +/* 08A744 7F055C14 01836826 */ xor $t5, $t4, $v1 +/* 08A748 7F055C18 AC4D0008 */ sw $t5, 8($v0) +/* 08A74C 7F055C1C 8C4200C8 */ lw $v0, 0xc8($v0) +/* 08A750 7F055C20 50400004 */ beql $v0, $zero, .L7F055C34 +/* 08A754 7F055C24 8FBF0014 */ lw $ra, 0x14($sp) +/* 08A758 7F055C28 5445FFFA */ bnel $v0, $a1, .L7F055C14 +/* 08A75C 7F055C2C 8C4C0008 */ lw $t4, 8($v0) +/* 08A760 7F055C30 8FBF0014 */ lw $ra, 0x14($sp) +.L7F055C34: +/* 08A764 7F055C34 27BD0018 */ addiu $sp, $sp, 0x18 +/* 08A768 7F055C38 03E00008 */ jr $ra +/* 08A76C 7F055C3C 00000000 */ nop +) +#endif + + + + + +#ifdef NONMATCHING +void sub_GAME_7F055C40(void) { + +} +#else +#ifdef VERSION_US +GLOBAL_ASM( +.text +glabel sub_GAME_7F055C40 +/* 08A770 7F055C40 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 08A774 7F055C44 AFBF001C */ sw $ra, 0x1c($sp) +/* 08A778 7F055C48 AFB00018 */ sw $s0, 0x18($sp) +/* 08A77C 7F055C4C AFA40030 */ sw $a0, 0x30($sp) +/* 08A780 7F055C50 8C900004 */ lw $s0, 4($a0) +/* 08A784 7F055C54 0FC225E6 */ jal get_curplayer_positiondata +/* 08A788 7F055C58 AFA00028 */ sw $zero, 0x28($sp) +/* 08A78C 7F055C5C AFA20024 */ sw $v0, 0x24($sp) +/* 08A790 7F055C60 8E04009C */ lw $a0, 0x9c($s0) +/* 08A794 7F055C64 8FA30028 */ lw $v1, 0x28($sp) +/* 08A798 7F055C68 14800003 */ bnez $a0, .L7F055C78 +/* 08A79C 7F055C6C 00000000 */ nop +/* 08A7A0 7F055C70 1000001C */ b .L7F055CE4 +/* 08A7A4 7F055C74 24030001 */ li $v1, 1 +.L7F055C78: +/* 08A7A8 7F055C78 0FC2339C */ jal sub_GAME_7F08CE70 +/* 08A7AC 7F055C7C AFA30028 */ sw $v1, 0x28($sp) +/* 08A7B0 7F055C80 10400003 */ beqz $v0, .L7F055C90 +/* 08A7B4 7F055C84 8FA30028 */ lw $v1, 0x28($sp) +/* 08A7B8 7F055C88 10000016 */ b .L7F055CE4 +/* 08A7BC 7F055C8C 24030001 */ li $v1, 1 +.L7F055C90: +/* 08A7C0 7F055C90 8FA40024 */ lw $a0, 0x24($sp) +/* 08A7C4 7F055C94 02002825 */ move $a1, $s0 +/* 08A7C8 7F055C98 0FC1569C */ jal sub_GAME_7F055A70 +/* 08A7CC 7F055C9C AFA30028 */ sw $v1, 0x28($sp) +/* 08A7D0 7F055CA0 10400009 */ beqz $v0, .L7F055CC8 +/* 08A7D4 7F055CA4 8FA30028 */ lw $v1, 0x28($sp) +/* 08A7D8 7F055CA8 8E02000C */ lw $v0, 0xc($s0) +/* 08A7DC 7F055CAC 000278C0 */ sll $t7, $v0, 3 +/* 08A7E0 7F055CB0 05E1000C */ bgez $t7, .L7F055CE4 +/* 08A7E4 7F055CB4 0002C100 */ sll $t8, $v0, 4 +/* 08A7E8 7F055CB8 0702000B */ bltzl $t8, .L7F055CE8 +/* 08A7EC 7F055CBC 02002025 */ move $a0, $s0 +/* 08A7F0 7F055CC0 10000008 */ b .L7F055CE4 +/* 08A7F4 7F055CC4 24030001 */ li $v1, 1 +.L7F055CC8: +/* 08A7F8 7F055CC8 8E02000C */ lw $v0, 0xc($s0) +/* 08A7FC 7F055CCC 0002C8C0 */ sll $t9, $v0, 3 +/* 08A800 7F055CD0 07200004 */ bltz $t9, .L7F055CE4 +/* 08A804 7F055CD4 00024100 */ sll $t0, $v0, 4 +/* 08A808 7F055CD8 05030003 */ bgezl $t0, .L7F055CE8 +/* 08A80C 7F055CDC 02002025 */ move $a0, $s0 +/* 08A810 7F055CE0 24030001 */ li $v1, 1 +.L7F055CE4: +/* 08A814 7F055CE4 02002025 */ move $a0, $s0 +.L7F055CE8: +/* 08A818 7F055CE8 0FC0F9C6 */ jal sub_GAME_7F03E718 +/* 08A81C 7F055CEC AFA30028 */ sw $v1, 0x28($sp) +/* 08A820 7F055CF0 14400002 */ bnez $v0, .L7F055CFC +/* 08A824 7F055CF4 8FA30028 */ lw $v1, 0x28($sp) +/* 08A828 7F055CF8 00001825 */ move $v1, $zero +.L7F055CFC: +/* 08A82C 7F055CFC 10600007 */ beqz $v1, .L7F055D1C +/* 08A830 7F055D00 8FA40024 */ lw $a0, 0x24($sp) +/* 08A834 7F055D04 0FC156DE */ jal sub_GAME_7F055B78 +/* 08A838 7F055D08 02002825 */ move $a1, $s0 +/* 08A83C 7F055D0C 0FC15667 */ jal sub_GAME_7F05599C +/* 08A840 7F055D10 8FA40030 */ lw $a0, 0x30($sp) +/* 08A844 7F055D14 10000028 */ b .L7F055DB8 +/* 08A848 7F055D18 8FBF001C */ lw $ra, 0x1c($sp) +.L7F055D1C: +/* 08A84C 7F055D1C 820900BC */ lb $t1, 0xbc($s0) +/* 08A850 7F055D20 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 08A854 7F055D24 55200024 */ bnezl $t1, .L7F055DB8 +/* 08A858 7F055D28 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A85C 7F055D2C C60400B4 */ lwc1 $f4, 0xb4($s0) +/* 08A860 7F055D30 44813000 */ mtc1 $at, $f6 +/* 08A864 7F055D34 00000000 */ nop +/* 08A868 7F055D38 4606203C */ c.lt.s $f4, $f6 +/* 08A86C 7F055D3C 00000000 */ nop +/* 08A870 7F055D40 4502001D */ bc1fl .L7F055DB8 +/* 08A874 7F055D44 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A878 7F055D48 8E02000C */ lw $v0, 0xc($s0) +/* 08A87C 7F055D4C 304A0004 */ andi $t2, $v0, 4 +/* 08A880 7F055D50 55400014 */ bnezl $t2, .L7F055DA4 +/* 08A884 7F055D54 8E0C0064 */ lw $t4, 0x64($s0) +/* 08A888 7F055D58 0FC23487 */ jal sub_GAME_7F08D21C +/* 08A88C 7F055D5C 02002025 */ move $a0, $s0 +/* 08A890 7F055D60 1040000A */ beqz $v0, .L7F055D8C +/* 08A894 7F055D64 00000000 */ nop +/* 08A898 7F055D68 8C4B001C */ lw $t3, 0x1c($v0) +/* 08A89C 7F055D6C 11600007 */ beqz $t3, .L7F055D8C +/* 08A8A0 7F055D70 00000000 */ nop +/* 08A8A4 7F055D74 0FC30776 */ jal get_textptr_for_textID +/* 08A8A8 7F055D78 8C44001C */ lw $a0, 0x1c($v0) +/* 08A8AC 7F055D7C 0FC228F2 */ jal display_string_in_lower_left_corner +/* 08A8B0 7F055D80 00402025 */ move $a0, $v0 +/* 08A8B4 7F055D84 10000006 */ b .L7F055DA0 +/* 08A8B8 7F055D88 8E02000C */ lw $v0, 0xc($s0) +.L7F055D8C: +/* 08A8BC 7F055D8C 0FC30776 */ jal get_textptr_for_textID +/* 08A8C0 7F055D90 3404A440 */ li $a0, 42048 +/* 08A8C4 7F055D94 0FC228F2 */ jal display_string_in_lower_left_corner +/* 08A8C8 7F055D98 00402025 */ move $a0, $v0 +/* 08A8CC 7F055D9C 8E02000C */ lw $v0, 0xc($s0) +.L7F055DA0: +/* 08A8D0 7F055DA0 8E0C0064 */ lw $t4, 0x64($s0) +.L7F055DA4: +/* 08A8D4 7F055DA4 344E0008 */ ori $t6, $v0, 8 +/* 08A8D8 7F055DA8 AE0E000C */ sw $t6, 0xc($s0) +/* 08A8DC 7F055DAC 358D4000 */ ori $t5, $t4, 0x4000 +/* 08A8E0 7F055DB0 AE0D0064 */ sw $t5, 0x64($s0) +/* 08A8E4 7F055DB4 8FBF001C */ lw $ra, 0x1c($sp) +.L7F055DB8: +/* 08A8E8 7F055DB8 8FB00018 */ lw $s0, 0x18($sp) +/* 08A8EC 7F055DBC 27BD0030 */ addiu $sp, $sp, 0x30 +/* 08A8F0 7F055DC0 03E00008 */ jr $ra +/* 08A8F4 7F055DC4 00001025 */ move $v0, $zero +) +#endif +#ifdef VERSION_JP +GLOBAL_ASM( +.text +glabel sub_GAME_7F055C40 +/* 08A770 7F055C40 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 08A774 7F055C44 AFBF001C */ sw $ra, 0x1c($sp) +/* 08A778 7F055C48 AFB00018 */ sw $s0, 0x18($sp) +/* 08A77C 7F055C4C AFA40030 */ sw $a0, 0x30($sp) +/* 08A780 7F055C50 8C900004 */ lw $s0, 4($a0) +/* 08A784 7F055C54 0FC225E6 */ jal get_curplayer_positiondata +/* 08A788 7F055C58 AFA00028 */ sw $zero, 0x28($sp) +/* 08A78C 7F055C5C AFA20024 */ sw $v0, 0x24($sp) +/* 08A790 7F055C60 8E04009C */ lw $a0, 0x9c($s0) +/* 08A794 7F055C64 8FA30028 */ lw $v1, 0x28($sp) +/* 08A798 7F055C68 14800003 */ bnez $a0, .L7F055C78 +/* 08A79C 7F055C6C 00000000 */ nop +/* 08A7A0 7F055C70 1000001C */ b .L7F055CE4 +/* 08A7A4 7F055C74 24030001 */ li $v1, 1 +.L7F055C78: +/* 08A7A8 7F055C78 0FC2339C */ jal sub_GAME_7F08CE70 +/* 08A7AC 7F055C7C AFA30028 */ sw $v1, 0x28($sp) +/* 08A7B0 7F055C80 10400003 */ beqz $v0, .L7F055C90 +/* 08A7B4 7F055C84 8FA30028 */ lw $v1, 0x28($sp) +/* 08A7B8 7F055C88 10000016 */ b .L7F055CE4 +/* 08A7BC 7F055C8C 24030001 */ li $v1, 1 +.L7F055C90: +/* 08A7C0 7F055C90 8FA40024 */ lw $a0, 0x24($sp) +/* 08A7C4 7F055C94 02002825 */ move $a1, $s0 +/* 08A7C8 7F055C98 0FC1569C */ jal sub_GAME_7F055A70 +/* 08A7CC 7F055C9C AFA30028 */ sw $v1, 0x28($sp) +/* 08A7D0 7F055CA0 10400009 */ beqz $v0, .L7F055CC8 +/* 08A7D4 7F055CA4 8FA30028 */ lw $v1, 0x28($sp) +/* 08A7D8 7F055CA8 8E02000C */ lw $v0, 0xc($s0) +/* 08A7DC 7F055CAC 000278C0 */ sll $t7, $v0, 3 +/* 08A7E0 7F055CB0 05E1000C */ bgez $t7, .L7F055CE4 +/* 08A7E4 7F055CB4 0002C100 */ sll $t8, $v0, 4 +/* 08A7E8 7F055CB8 0702000B */ bltzl $t8, .L7F055CE8 +/* 08A7EC 7F055CBC 02002025 */ move $a0, $s0 +/* 08A7F0 7F055CC0 10000008 */ b .L7F055CE4 +/* 08A7F4 7F055CC4 24030001 */ li $v1, 1 +.L7F055CC8: +/* 08A7F8 7F055CC8 8E02000C */ lw $v0, 0xc($s0) +/* 08A7FC 7F055CCC 0002C8C0 */ sll $t9, $v0, 3 +/* 08A800 7F055CD0 07200004 */ bltz $t9, .L7F055CE4 +/* 08A804 7F055CD4 00024100 */ sll $t0, $v0, 4 +/* 08A808 7F055CD8 05030003 */ bgezl $t0, .L7F055CE8 +/* 08A80C 7F055CDC 02002025 */ move $a0, $s0 +/* 08A810 7F055CE0 24030001 */ li $v1, 1 +.L7F055CE4: +/* 08A814 7F055CE4 02002025 */ move $a0, $s0 +.L7F055CE8: +/* 08A818 7F055CE8 0FC0F9C6 */ jal sub_GAME_7F03E718 +/* 08A81C 7F055CEC AFA30028 */ sw $v1, 0x28($sp) +/* 08A820 7F055CF0 14400002 */ bnez $v0, .L7F055CFC +/* 08A824 7F055CF4 8FA30028 */ lw $v1, 0x28($sp) +/* 08A828 7F055CF8 00001825 */ move $v1, $zero +.L7F055CFC: +/* 08A82C 7F055CFC 10600007 */ beqz $v1, .L7F055D1C +/* 08A830 7F055D00 8FA40024 */ lw $a0, 0x24($sp) +/* 08A834 7F055D04 0FC156DE */ jal sub_GAME_7F055B78 +/* 08A838 7F055D08 02002825 */ move $a1, $s0 +/* 08A83C 7F055D0C 0FC15667 */ jal sub_GAME_7F05599C +/* 08A840 7F055D10 8FA40030 */ lw $a0, 0x30($sp) +/* 08A844 7F055D14 10000028 */ b .L7F055DB8 +/* 08A848 7F055D18 8FBF001C */ lw $ra, 0x1c($sp) +.L7F055D1C: +/* 08A84C 7F055D1C 820900BC */ lb $t1, 0xbc($s0) +/* 08A850 7F055D20 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 08A854 7F055D24 55200024 */ bnezl $t1, .L7F055DB8 +/* 08A858 7F055D28 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A85C 7F055D2C C60400B4 */ lwc1 $f4, 0xb4($s0) +/* 08A860 7F055D30 44813000 */ mtc1 $at, $f6 +/* 08A864 7F055D34 00000000 */ nop +/* 08A868 7F055D38 4606203C */ c.lt.s $f4, $f6 +/* 08A86C 7F055D3C 00000000 */ nop +/* 08A870 7F055D40 4502001D */ bc1fl .L7F055DB8 +/* 08A874 7F055D44 8FBF001C */ lw $ra, 0x1c($sp) +/* 08A878 7F055D48 8E02000C */ lw $v0, 0xc($s0) +/* 08A87C 7F055D4C 304A0004 */ andi $t2, $v0, 4 +/* 08A880 7F055D50 55400014 */ bnezl $t2, .L7F055DA4 +/* 08A884 7F055D54 8E0C0064 */ lw $t4, 0x64($s0) +/* 08A888 7F055D58 0FC23487 */ jal sub_GAME_7F08D21C +/* 08A88C 7F055D5C 02002025 */ move $a0, $s0 +/* 08A890 7F055D60 1040000A */ beqz $v0, .L7F055D8C +/* 08A894 7F055D64 00000000 */ nop +/* 08A898 7F055D68 8C4B001C */ lw $t3, 0x1c($v0) +/* 08A89C 7F055D6C 11600007 */ beqz $t3, .L7F055D8C +/* 08A8A0 7F055D70 00000000 */ nop +/* 08A8A4 7F055D74 0FC30776 */ jal get_textptr_for_textID +/* 08A8A8 7F055D78 8C44001C */ lw $a0, 0x1c($v0) +/* 08A8AC 7F055D7C 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 08A8B0 7F055D80 00402025 */ move $a0, $v0 +/* 08A8B4 7F055D84 10000006 */ b .L7F055DA0 +/* 08A8B8 7F055D88 8E02000C */ lw $v0, 0xc($s0) +.L7F055D8C: +/* 08A8BC 7F055D8C 0FC30776 */ jal get_textptr_for_textID +/* 08A8C0 7F055D90 3404A440 */ li $a0, 42048 +/* 08A8C4 7F055D94 0FC228F2 */ jal jp_display_string_in_lower_left_corner +/* 08A8C8 7F055D98 00402025 */ move $a0, $v0 +/* 08A8CC 7F055D9C 8E02000C */ lw $v0, 0xc($s0) +.L7F055DA0: +/* 08A8D0 7F055DA0 8E0C0064 */ lw $t4, 0x64($s0) +.L7F055DA4: +/* 08A8D4 7F055DA4 344E0008 */ ori $t6, $v0, 8 +/* 08A8D8 7F055DA8 AE0E000C */ sw $t6, 0xc($s0) +/* 08A8DC 7F055DAC 358D4000 */ ori $t5, $t4, 0x4000 +/* 08A8E0 7F055DB0 AE0D0064 */ sw $t5, 0x64($s0) +/* 08A8E4 7F055DB4 8FBF001C */ lw $ra, 0x1c($sp) +.L7F055DB8: +/* 08A8E8 7F055DB8 8FB00018 */ lw $s0, 0x18($sp) +/* 08A8EC 7F055DBC 27BD0030 */ addiu $sp, $sp, 0x30 +/* 08A8F0 7F055DC0 03E00008 */ jr $ra +/* 08A8F4 7F055DC4 00001025 */ move $v0, $zero +) +#endif +#endif + + + + + +void start_alarm(void) +{ + if (alarm_timer < 1) { + alarm_timer = 1; + } + return; +} + +void deactivate_alarm_sound_effect(void) +{ + if ((ptr_alarm_sfx != 0) && (sfxGetArg0Unk3F(ptr_alarm_sfx) != 0)) { + sfxDeactivate(ptr_alarm_sfx); + } + return; +} + +void stop_alarm(void) +{ + alarm_timer = 0; + deactivate_alarm_sound_effect(); + return; +} + +u32 is_alarm_on(void) +{ + return (0 < alarm_timer); +} + + + + + +#ifdef NONMATCHING +void init_trigger_toxic_gas_effect(void) { + +} +#else +GLOBAL_ASM( +.text +glabel init_trigger_toxic_gas_effect +/* 08A994 7F055E64 44802000 */ mtc1 $zero, $f4 +/* 08A998 7F055E68 240E0001 */ li $t6, 1 +/* 08A99C 7F055E6C 3C018003 */ lui $at, %hi(activate_gas_sound_timer) +/* 08A9A0 7F055E70 AC2E0ACC */ sw $t6, %lo(activate_gas_sound_timer)($at) +/* 08A9A4 7F055E74 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 08A9A8 7F055E78 3C018003 */ lui $at, %hi(D_80030AE0) +/* 08A9AC 7F055E7C AFBF0014 */ sw $ra, 0x14($sp) +/* 08A9B0 7F055E80 E4240AE0 */ swc1 $f4, %lo(D_80030AE0)($at) +/* 08A9B4 7F055E84 C4860000 */ lwc1 $f6, ($a0) +/* 08A9B8 7F055E88 3C028003 */ lui $v0, %hi(D_80030AD0) +/* 08A9BC 7F055E8C 24420AD0 */ addiu $v0, %lo(D_80030AD0) # addiu $v0, $v0, 0xad0 +/* 08A9C0 7F055E90 E4460000 */ swc1 $f6, ($v0) +/* 08A9C4 7F055E94 C4880004 */ lwc1 $f8, 4($a0) +/* 08A9C8 7F055E98 E4480004 */ swc1 $f8, 4($v0) +/* 08A9CC 7F055E9C C48A0008 */ lwc1 $f10, 8($a0) +/* 08A9D0 7F055EA0 0C001A57 */ jal get_stage_num +/* 08A9D4 7F055EA4 E44A0008 */ swc1 $f10, 8($v0) +/* 08A9D8 7F055EA8 24010020 */ li $at, 32 +/* 08A9DC 7F055EAC 14410007 */ bne $v0, $at, .L7F055ECC +/* 08A9E0 7F055EB0 3C0142F0 */ li $at, 0x42F00000 # 120.000000 +/* 08A9E4 7F055EB4 44818000 */ mtc1 $at, $f16 +/* 08A9E8 7F055EB8 3C018007 */ lui $at, %hi(gas_damage_flag) +/* 08A9EC 7F055EBC E4301E78 */ swc1 $f16, %lo(gas_damage_flag)($at) +/* 08A9F0 7F055EC0 3C018007 */ lui $at, %hi(gas_cutoff_flag) +/* 08A9F4 7F055EC4 10000008 */ b .L7F055EE8 +/* 08A9F8 7F055EC8 AC201E7C */ sw $zero, %lo(gas_cutoff_flag)($at) +.L7F055ECC: +/* 08A9FC 7F055ECC 3C014561 */ li $at, 0x45610000 # 3600.000000 +/* 08AA00 7F055ED0 44819000 */ mtc1 $at, $f18 +/* 08AA04 7F055ED4 3C018007 */ lui $at, %hi(gas_damage_flag) +/* 08AA08 7F055ED8 240F0001 */ li $t7, 1 +/* 08AA0C 7F055EDC E4321E78 */ swc1 $f18, %lo(gas_damage_flag)($at) +/* 08AA10 7F055EE0 3C018007 */ lui $at, %hi(gas_cutoff_flag) +/* 08AA14 7F055EE4 AC2F1E7C */ sw $t7, %lo(gas_cutoff_flag)($at) +.L7F055EE8: +/* 08AA18 7F055EE8 8FBF0014 */ lw $ra, 0x14($sp) +/* 08AA1C 7F055EEC 27BD0018 */ addiu $sp, $sp, 0x18 +/* 08AA20 7F055EF0 03E00008 */ jr $ra +/* 08AA24 7F055EF4 00000000 */ nop +) +#endif + + + + + + +void check_deactivate_gas_sound(void) +{ + if ((ptr_gas_sound != 0) && (sfxGetArg0Unk3F(ptr_gas_sound) != 0)) { + sfxDeactivate(ptr_gas_sound); + } + return; +} + + + +//!FIXME +//Seriously why tf is this nopping: +///* 08AA74 7F055F44 00001025 */ move $v0, $zero +//it byte matches otherwise +#ifdef NONMATCHING +s32 check_if_toxic_gas_activated(void) +{ + if (0.0f < toxic_gas_sound_timer) { + return 1; + } + return ; +} +#else +GLOBAL_ASM( +.text +glabel check_if_toxic_gas_activated +/* 08AA68 7F055F38 3C018003 */ lui $at, %hi(toxic_gas_sound_timer) +/* 08AA6C 7F055F3C C4260AC8 */ lwc1 $f6, %lo(toxic_gas_sound_timer)($at) +/* 08AA70 7F055F40 44802000 */ mtc1 $zero, $f4 +/* 08AA74 7F055F44 00001025 */ move $v0, $zero +/* 08AA78 7F055F48 4606203C */ c.lt.s $f4, $f6 +/* 08AA7C 7F055F4C 00000000 */ nop +/* 08AA80 7F055F50 45000002 */ bc1f .L7F055F5C +/* 08AA84 7F055F54 00000000 */ nop +/* 08AA88 7F055F58 24020001 */ li $v0, 1 +.L7F055F5C: +/* 08AA8C 7F055F5C 03E00008 */ jr $ra +/* 08AA90 7F055F60 00000000 */ nop +) +#endif + + + + +#ifdef NONMATCHING +extern s32 disable_player_pickups_flag; +void handle_gas_damage(void) +{ + if (activate_gas_sound_timer) + { + toxic_gas_sound_timer = toxic_gas_sound_timer + global_timer_delta; + if (gas_damage_flag <= toxic_gas_sound_timer) + { + toxic_gas_sound_timer = (f32) gas_damage_flag; + activate_gas_sound_timer = 0; + } + } + if (0.0f < toxic_gas_sound_timer) + { + if (disable_player_pickups_flag == 0) + { + switch_to_solosky2(toxic_gas_sound_timer / gas_damage_flag); + if (gas_cutoff_flag != 0) + { + if (D_80030ADC < (global_timer - 0xe1)) + { + D_80030ADC = (s32) global_timer; + if (600.0f <= toxic_gas_sound_timer) + { + play_sfx_a1(ptr_sfx_buf, 0x62, 0); + } + if (1800.0f <= toxic_gas_sound_timer) + { + record_damage_kills(0x3e000000, 0, 0, -1, 0); + } + } + if (D_80030AE0 < gas_damage_flag) + { + D_80030AE0 = (f32) (D_80030AE0 + global_timer_delta); + if (ptr_gas_sound == 0) + { + if (get_controls_locked_flag(&ptr_gas_sound) == 0) + { + play_sfx_a1(ptr_sfx_buf, 0x66, &ptr_gas_sound); + } + } + if (ptr_gas_sound != 0) + { + sub_GAME_7F053A10(ptr_gas_sound, &D_80030AD0); + return; + } + } + else + { + if (ptr_gas_sound != 0) + { + if (sfxGetArg0Unk3F(ptr_gas_sound) != 0) + { + sfxDeactivate(ptr_gas_sound); + } + } + } + } + } + } +} +#else +GLOBAL_ASM( +.text +glabel handle_gas_damage +/* 08AA94 7F055F64 3C028003 */ lui $v0, %hi(activate_gas_sound_timer) +/* 08AA98 7F055F68 24420ACC */ addiu $v0, %lo(activate_gas_sound_timer) # addiu $v0, $v0, 0xacc +/* 08AA9C 7F055F6C 8C4E0000 */ lw $t6, ($v0) +/* 08AAA0 7F055F70 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 08AAA4 7F055F74 44808000 */ mtc1 $zero, $f16 +/* 08AAA8 7F055F78 11C00011 */ beqz $t6, .L7F055FC0 +/* 08AAAC 7F055F7C AFBF001C */ sw $ra, 0x1c($sp) +/* 08AAB0 7F055F80 3C038003 */ lui $v1, %hi(toxic_gas_sound_timer) +/* 08AAB4 7F055F84 24630AC8 */ addiu $v1, %lo(toxic_gas_sound_timer) # addiu $v1, $v1, 0xac8 +/* 08AAB8 7F055F88 3C018005 */ lui $at, %hi(global_timer_delta) +/* 08AABC 7F055F8C C4268378 */ lwc1 $f6, %lo(global_timer_delta)($at) +/* 08AAC0 7F055F90 C4640000 */ lwc1 $f4, ($v1) +/* 08AAC4 7F055F94 3C018007 */ lui $at, %hi(gas_damage_flag) +/* 08AAC8 7F055F98 46062200 */ add.s $f8, $f4, $f6 +/* 08AACC 7F055F9C E4680000 */ swc1 $f8, ($v1) +/* 08AAD0 7F055FA0 C46A0000 */ lwc1 $f10, ($v1) +/* 08AAD4 7F055FA4 C4201E78 */ lwc1 $f0, %lo(gas_damage_flag)($at) +/* 08AAD8 7F055FA8 460A003E */ c.le.s $f0, $f10 +/* 08AADC 7F055FAC 00000000 */ nop +/* 08AAE0 7F055FB0 45000003 */ bc1f .L7F055FC0 +/* 08AAE4 7F055FB4 00000000 */ nop +/* 08AAE8 7F055FB8 E4600000 */ swc1 $f0, ($v1) +/* 08AAEC 7F055FBC AC400000 */ sw $zero, ($v0) +.L7F055FC0: +/* 08AAF0 7F055FC0 3C038003 */ lui $v1, %hi(toxic_gas_sound_timer) +/* 08AAF4 7F055FC4 24630AC8 */ addiu $v1, %lo(toxic_gas_sound_timer) # addiu $v1, $v1, 0xac8 +/* 08AAF8 7F055FC8 C4600000 */ lwc1 $f0, ($v1) +/* 08AAFC 7F055FCC 3C0F8003 */ lui $t7, %hi(disable_player_pickups_flag) +/* 08AB00 7F055FD0 4600803C */ c.lt.s $f16, $f0 +/* 08AB04 7F055FD4 00000000 */ nop +/* 08AB08 7F055FD8 4502005E */ bc1fl .L7F056154 +/* 08AB0C 7F055FDC 8FBF001C */ lw $ra, 0x1c($sp) +/* 08AB10 7F055FE0 8DEF64B4 */ lw $t7, %lo(disable_player_pickups_flag)($t7) +/* 08AB14 7F055FE4 3C018007 */ lui $at, %hi(gas_damage_flag) +/* 08AB18 7F055FE8 55E0005A */ bnezl $t7, .L7F056154 +/* 08AB1C 7F055FEC 8FBF001C */ lw $ra, 0x1c($sp) +/* 08AB20 7F055FF0 C4321E78 */ lwc1 $f18, %lo(gas_damage_flag)($at) +/* 08AB24 7F055FF4 0FC2EB2A */ jal switch_to_solosky2 +/* 08AB28 7F055FF8 46120303 */ div.s $f12, $f0, $f18 +/* 08AB2C 7F055FFC 3C188007 */ lui $t8, %hi(gas_cutoff_flag) +/* 08AB30 7F056000 8F181E7C */ lw $t8, %lo(gas_cutoff_flag)($t8) +/* 08AB34 7F056004 3C038003 */ lui $v1, %hi(toxic_gas_sound_timer) +/* 08AB38 7F056008 24630AC8 */ addiu $v1, %lo(toxic_gas_sound_timer) # addiu $v1, $v1, 0xac8 +/* 08AB3C 7F05600C 13000050 */ beqz $t8, .L7F056150 +/* 08AB40 7F056010 3C048003 */ lui $a0, %hi(D_80030ADC) +/* 08AB44 7F056014 3C028005 */ lui $v0, %hi(global_timer) +/* 08AB48 7F056018 8C42837C */ lw $v0, %lo(global_timer)($v0) +/* 08AB4C 7F05601C 24840ADC */ addiu $a0, %lo(D_80030ADC) # addiu $a0, $a0, 0xadc +/* 08AB50 7F056020 8C990000 */ lw $t9, ($a0) +/* 08AB54 7F056024 2448FF1F */ addiu $t0, $v0, -0xe1 +/* 08AB58 7F056028 0328082A */ slt $at, $t9, $t0 +/* 08AB5C 7F05602C 1020001B */ beqz $at, .L7F05609C +/* 08AB60 7F056030 3C014416 */ li $at, 0x44160000 # 600.000000 +/* 08AB64 7F056034 44812000 */ mtc1 $at, $f4 +/* 08AB68 7F056038 C4600000 */ lwc1 $f0, ($v1) +/* 08AB6C 7F05603C AC820000 */ sw $v0, ($a0) +/* 08AB70 7F056040 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 08AB74 7F056044 4600203E */ c.le.s $f4, $f0 +/* 08AB78 7F056048 24050062 */ li $a1, 98 +/* 08AB7C 7F05604C 00003025 */ move $a2, $zero +/* 08AB80 7F056050 45020006 */ bc1fl .L7F05606C +/* 08AB84 7F056054 3C0144E1 */ lui $at, 0x44e1 +/* 08AB88 7F056058 0C002382 */ jal play_sfx_a1 +/* 08AB8C 7F05605C 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08AB90 7F056060 3C018003 */ lui $at, %hi(toxic_gas_sound_timer) +/* 08AB94 7F056064 C4200AC8 */ lwc1 $f0, %lo(toxic_gas_sound_timer)($at) +/* 08AB98 7F056068 3C0144E1 */ li $at, 0x44E10000 # 1800.000000 +.L7F05606C: +/* 08AB9C 7F05606C 44813000 */ mtc1 $at, $f6 +/* 08ABA0 7F056070 3C013E00 */ li $at, 0x3E000000 # 0.125000 +/* 08ABA4 7F056074 4600303E */ c.le.s $f6, $f0 +/* 08ABA8 7F056078 00000000 */ nop +/* 08ABAC 7F05607C 45000007 */ bc1f .L7F05609C +/* 08ABB0 7F056080 00000000 */ nop +/* 08ABB4 7F056084 44807000 */ mtc1 $zero, $f14 +/* 08ABB8 7F056088 44816000 */ mtc1 $at, $f12 +/* 08ABBC 7F05608C 2407FFFF */ li $a3, -1 +/* 08ABC0 7F056090 44067000 */ mfc1 $a2, $f14 +/* 08ABC4 7F056094 0FC22647 */ jal record_damage_kills +/* 08ABC8 7F056098 AFA00010 */ sw $zero, 0x10($sp) +.L7F05609C: +/* 08ABCC 7F05609C 3C028003 */ lui $v0, %hi(D_80030AE0) +/* 08ABD0 7F0560A0 24420AE0 */ addiu $v0, %lo(D_80030AE0) # addiu $v0, $v0, 0xae0 +/* 08ABD4 7F0560A4 3C018007 */ lui $at, %hi(gas_damage_flag) +/* 08ABD8 7F0560A8 C4281E78 */ lwc1 $f8, %lo(gas_damage_flag)($at) +/* 08ABDC 7F0560AC C4400000 */ lwc1 $f0, ($v0) +/* 08ABE0 7F0560B0 3C018005 */ lui $at, %hi(global_timer_delta) +/* 08ABE4 7F0560B4 3C048003 */ lui $a0, %hi(ptr_gas_sound) +/* 08ABE8 7F0560B8 4608003C */ c.lt.s $f0, $f8 +/* 08ABEC 7F0560BC 00000000 */ nop +/* 08ABF0 7F0560C0 4500001A */ bc1f .L7F05612C +/* 08ABF4 7F0560C4 00000000 */ nop +/* 08ABF8 7F0560C8 C42A8378 */ lwc1 $f10, %lo(global_timer_delta)($at) +/* 08ABFC 7F0560CC 3C098003 */ lui $t1, %hi(ptr_gas_sound) +/* 08AC00 7F0560D0 460A0400 */ add.s $f16, $f0, $f10 +/* 08AC04 7F0560D4 E4500000 */ swc1 $f16, ($v0) +/* 08AC08 7F0560D8 8D290AE4 */ lw $t1, %lo(ptr_gas_sound)($t1) +/* 08AC0C 7F0560DC 1520000A */ bnez $t1, .L7F056108 +/* 08AC10 7F0560E0 00000000 */ nop +/* 08AC14 7F0560E4 0FC2FF01 */ jal get_controls_locked_flag +/* 08AC18 7F0560E8 00000000 */ nop +/* 08AC1C 7F0560EC 14400006 */ bnez $v0, .L7F056108 +/* 08AC20 7F0560F0 3C048006 */ lui $a0, %hi(ptr_sfx_buf) +/* 08AC24 7F0560F4 3C068003 */ lui $a2, %hi(ptr_gas_sound) +/* 08AC28 7F0560F8 24C60AE4 */ addiu $a2, %lo(ptr_gas_sound) # addiu $a2, $a2, 0xae4 +/* 08AC2C 7F0560FC 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) +/* 08AC30 7F056100 0C002382 */ jal play_sfx_a1 +/* 08AC34 7F056104 24050066 */ li $a1, 102 +.L7F056108: +/* 08AC38 7F056108 3C048003 */ lui $a0, %hi(ptr_gas_sound) +/* 08AC3C 7F05610C 8C840AE4 */ lw $a0, %lo(ptr_gas_sound)($a0) +/* 08AC40 7F056110 3C058003 */ lui $a1, %hi(D_80030AD0) +/* 08AC44 7F056114 5080000F */ beql $a0, $zero, .L7F056154 +/* 08AC48 7F056118 8FBF001C */ lw $ra, 0x1c($sp) +/* 08AC4C 7F05611C 0FC14E84 */ jal sub_GAME_7F053A10 +/* 08AC50 7F056120 24A50AD0 */ addiu $a1, %lo(D_80030AD0) # addiu $a1, $a1, 0xad0 +/* 08AC54 7F056124 1000000B */ b .L7F056154 +/* 08AC58 7F056128 8FBF001C */ lw $ra, 0x1c($sp) +.L7F05612C: +/* 08AC5C 7F05612C 8C840AE4 */ lw $a0, %lo(ptr_gas_sound)($a0) +/* 08AC60 7F056130 50800008 */ beql $a0, $zero, .L7F056154 +/* 08AC64 7F056134 8FBF001C */ lw $ra, 0x1c($sp) +/* 08AC68 7F056138 0C00237C */ jal sfxGetArg0Unk3F +/* 08AC6C 7F05613C 00000000 */ nop +/* 08AC70 7F056140 10400003 */ beqz $v0, .L7F056150 +/* 08AC74 7F056144 3C048003 */ lui $a0, %hi(ptr_gas_sound) +/* 08AC78 7F056148 0C002408 */ jal sfxDeactivate +/* 08AC7C 7F05614C 8C840AE4 */ lw $a0, %lo(ptr_gas_sound)($a0) +.L7F056150: +/* 08AC80 7F056150 8FBF001C */ lw $ra, 0x1c($sp) +.L7F056154: +/* 08AC84 7F056154 27BD0020 */ addiu $sp, $sp, 0x20 +/* 08AC88 7F056158 03E00008 */ jr $ra +/* 08AC8C 7F05615C 00000000 */ nop +) +#endif + + + + + + +void set_unset_clock_lock_bits(int clocklockbits,int flag) +{ + if (flag != 0) { + clock_drawn_flag &= ~clocklockbits; + return; + } + clock_drawn_flag |= clocklockbits; +} + +u32 is_clock_drawn_onscreen(void) +{ + return clock_drawn_flag == 0; +} + +void set_clock_time(f32 time) { + clock_time = time; +} + +f32 get_clock_time(void) { + return clock_time; +} + +void set_clock_enable(s32 enable) { + clock_enable = enable; +} + +s32 get_clock_enable(void) { + return clock_enable; +} + +void if_enabled_reset_clock(void) +{ + if (clock_enable != 0) { + clock_time = clock_time - global_timer_delta; + } +} + + +#ifdef NONMATCHING +void sub_GAME_7F056210(void) { + +} +#else +GLOBAL_ASM( +.late_rodata + +.text +glabel sub_GAME_7F056210 +/* 08AD40 7F056210 3C0E8003 */ lui $t6, %hi(clock_drawn_flag) +/* 08AD44 7F056214 8DCE0AE8 */ lw $t6, %lo(clock_drawn_flag)($t6) +/* 08AD48 7F056218 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 08AD4C 7F05621C AFB10028 */ sw $s1, 0x28($sp) +/* 08AD50 7F056220 00808825 */ move $s1, $a0 +/* 08AD54 7F056224 AFBF002C */ sw $ra, 0x2c($sp) +/* 08AD58 7F056228 15C000EB */ bnez $t6, .L7F0565D8 +/* 08AD5C 7F05622C AFB00024 */ sw $s0, 0x24($sp) +/* 08AD60 7F056230 3C018003 */ lui $at, %hi(clock_time) +/* 08AD64 7F056234 C4220AF0 */ lwc1 $f2, %lo(clock_time)($at) +/* 08AD68 7F056238 44802000 */ mtc1 $zero, $f4 +/* 08AD6C 7F05623C 3C014561 */ li $at, 0x45610000 # 3600.000000 +/* 08AD70 7F056240 44813000 */ mtc1 $at, $f6 +/* 08AD74 7F056244 4604103C */ c.lt.s $f2, $f4 +/* 08AD78 7F056248 00000000 */ nop +/* 08AD7C 7F05624C 45020003 */ bc1fl .L7F05625C +/* 08AD80 7F056250 46061303 */ div.s $f12, $f2, $f6 +/* 08AD84 7F056254 46001087 */ neg.s $f2, $f2 +/* 08AD88 7F056258 46061303 */ div.s $f12, $f2, $f6 +.L7F05625C: +/* 08AD8C 7F05625C 0FC170D8 */ jal truncf +/* 08AD90 7F056260 E7A20030 */ swc1 $f2, 0x30($sp) +/* 08AD94 7F056264 4600020D */ trunc.w.s $f8, $f0 +/* 08AD98 7F056268 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 08AD9C 7F05626C C7A20030 */ lwc1 $f2, 0x30($sp) +/* 08ADA0 7F056270 44815000 */ mtc1 $at, $f10 +/* 08ADA4 7F056274 44184000 */ mfc1 $t8, $f8 +/* 08ADA8 7F056278 460A1303 */ div.s $f12, $f2, $f10 +/* 08ADAC 7F05627C 0FC170D8 */ jal truncf +/* 08ADB0 7F056280 AFB80044 */ sw $t8, 0x44($sp) +/* 08ADB4 7F056284 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 08ADB8 7F056288 C7A20030 */ lwc1 $f2, 0x30($sp) +/* 08ADBC 7F05628C 44819000 */ mtc1 $at, $f18 +/* 08ADC0 7F056290 4600040D */ trunc.w.s $f16, $f0 +/* 08ADC4 7F056294 8FA90044 */ lw $t1, 0x44($sp) +/* 08ADC8 7F056298 46121102 */ mul.s $f4, $f2, $f18 +/* 08ADCC 7F05629C 3C014270 */ li $at, 0x42700000 # 60.000000 +/* 08ADD0 7F0562A0 44088000 */ mfc1 $t0, $f16 +/* 08ADD4 7F0562A4 00095100 */ sll $t2, $t1, 4 +/* 08ADD8 7F0562A8 01495023 */ subu $t2, $t2, $t1 +/* 08ADDC 7F0562AC 44813000 */ mtc1 $at, $f6 +/* 08ADE0 7F0562B0 000A5080 */ sll $t2, $t2, 2 +/* 08ADE4 7F0562B4 010A5823 */ subu $t3, $t0, $t2 +/* 08ADE8 7F0562B8 AFAB0040 */ sw $t3, 0x40($sp) +/* 08ADEC 7F0562BC 0FC170D8 */ jal truncf +/* 08ADF0 7F0562C0 46062303 */ div.s $f12, $f4, $f6 +/* 08ADF4 7F0562C4 8FAE0044 */ lw $t6, 0x44($sp) +/* 08ADF8 7F0562C8 4600020D */ trunc.w.s $f8, $f0 +/* 08ADFC 7F0562CC 8FB90040 */ lw $t9, 0x40($sp) +/* 08AE00 7F0562D0 000E7880 */ sll $t7, $t6, 2 +/* 08AE04 7F0562D4 01EE7823 */ subu $t7, $t7, $t6 +/* 08AE08 7F0562D8 000F7900 */ sll $t7, $t7, 4 +/* 08AE0C 7F0562DC 01EE7823 */ subu $t7, $t7, $t6 +/* 08AE10 7F0562E0 00194880 */ sll $t1, $t9, 2 +/* 08AE14 7F0562E4 440D4000 */ mfc1 $t5, $f8 +/* 08AE18 7F0562E8 000F78C0 */ sll $t7, $t7, 3 +/* 08AE1C 7F0562EC 01394823 */ subu $t1, $t1, $t9 +/* 08AE20 7F0562F0 000948C0 */ sll $t1, $t1, 3 +/* 08AE24 7F0562F4 01EE7823 */ subu $t7, $t7, $t6 +/* 08AE28 7F0562F8 000F7900 */ sll $t7, $t7, 4 +/* 08AE2C 7F0562FC 01394821 */ addu $t1, $t1, $t9 +/* 08AE30 7F056300 00094880 */ sll $t1, $t1, 2 +/* 08AE34 7F056304 01AFC023 */ subu $t8, $t5, $t7 +/* 08AE38 7F056308 03094023 */ subu $t0, $t8, $t1 +/* 08AE3C 7F05630C AFA8003C */ sw $t0, 0x3c($sp) +/* 08AE40 7F056310 0FC2B366 */ jal microcode_constructor +/* 08AE44 7F056314 02202025 */ move $a0, $s1 +/* 08AE48 7F056318 0C001149 */ jal get_video2_settings_uly +/* 08AE4C 7F05631C 00408825 */ move $s1, $v0 +/* 08AE50 7F056320 00028400 */ sll $s0, $v0, 0x10 +/* 08AE54 7F056324 00105403 */ sra $t2, $s0, 0x10 +/* 08AE58 7F056328 0C00112B */ jal get_video2_settings_height +/* 08AE5C 7F05632C 01408025 */ move $s0, $t2 +/* 08AE60 7F056330 8FA50044 */ lw $a1, 0x44($sp) +/* 08AE64 7F056334 24010064 */ li $at, 100 +/* 08AE68 7F056338 00507021 */ addu $t6, $v0, $s0 +/* 08AE6C 7F05633C 00A1001A */ div $zero, $a1, $at +/* 08AE70 7F056340 00005810 */ mfhi $t3 +/* 08AE74 7F056344 2401000A */ li $at, 10 +/* 08AE78 7F056348 25CDFFEE */ addiu $t5, $t6, -0x12 +/* 08AE7C 7F05634C 0161001A */ div $zero, $t3, $at +/* 08AE80 7F056350 00002812 */ mflo $a1 +/* 08AE84 7F056354 240F0002 */ li $t7, 2 +/* 08AE88 7F056358 24190001 */ li $t9, 1 +/* 08AE8C 7F05635C AFB90018 */ sw $t9, 0x18($sp) +/* 08AE90 7F056360 AFAF0014 */ sw $t7, 0x14($sp) +/* 08AE94 7F056364 AFAD0010 */ sw $t5, 0x10($sp) +/* 08AE98 7F056368 02202025 */ move $a0, $s1 +/* 08AE9C 7F05636C 24060082 */ li $a2, 130 +/* 08AEA0 7F056370 0FC1A723 */ jal display_ammo_total_in_a1 +/* 08AEA4 7F056374 24070002 */ li $a3, 2 +/* 08AEA8 7F056378 0C001149 */ jal get_video2_settings_uly +/* 08AEAC 7F05637C 00408825 */ move $s1, $v0 +/* 08AEB0 7F056380 00028400 */ sll $s0, $v0, 0x10 +/* 08AEB4 7F056384 0010C403 */ sra $t8, $s0, 0x10 +/* 08AEB8 7F056388 0C00112B */ jal get_video2_settings_height +/* 08AEBC 7F05638C 03008025 */ move $s0, $t8 +/* 08AEC0 7F056390 8FA50044 */ lw $a1, 0x44($sp) +/* 08AEC4 7F056394 2401000A */ li $at, 10 +/* 08AEC8 7F056398 00504021 */ addu $t0, $v0, $s0 +/* 08AECC 7F05639C 00A1001A */ div $zero, $a1, $at +/* 08AED0 7F0563A0 00002810 */ mfhi $a1 +/* 08AED4 7F0563A4 250AFFEE */ addiu $t2, $t0, -0x12 +/* 08AED8 7F0563A8 240B0002 */ li $t3, 2 +/* 08AEDC 7F0563AC 240C0001 */ li $t4, 1 +/* 08AEE0 7F0563B0 AFAC0018 */ sw $t4, 0x18($sp) +/* 08AEE4 7F0563B4 AFAB0014 */ sw $t3, 0x14($sp) +/* 08AEE8 7F0563B8 AFAA0010 */ sw $t2, 0x10($sp) +/* 08AEEC 7F0563BC 02202025 */ move $a0, $s1 +/* 08AEF0 7F0563C0 2406008A */ li $a2, 138 +/* 08AEF4 7F0563C4 0FC1A723 */ jal display_ammo_total_in_a1 +/* 08AEF8 7F0563C8 24070002 */ li $a3, 2 +/* 08AEFC 7F0563CC 0C001149 */ jal get_video2_settings_uly +/* 08AF00 7F0563D0 00408825 */ move $s1, $v0 +/* 08AF04 7F0563D4 00028400 */ sll $s0, $v0, 0x10 +/* 08AF08 7F0563D8 00107403 */ sra $t6, $s0, 0x10 +/* 08AF0C 7F0563DC 0C00112B */ jal get_video2_settings_height +/* 08AF10 7F0563E0 01C08025 */ move $s0, $t6 +/* 08AF14 7F0563E4 00506821 */ addu $t5, $v0, $s0 +/* 08AF18 7F0563E8 25AFFFEE */ addiu $t7, $t5, -0x12 +/* 08AF1C 7F0563EC 3C058005 */ lui $a1, %hi(D_80052A44) +/* 08AF20 7F0563F0 24190002 */ li $t9, 2 +/* 08AF24 7F0563F4 24180001 */ li $t8, 1 +/* 08AF28 7F0563F8 AFB80018 */ sw $t8, 0x18($sp) +/* 08AF2C 7F0563FC AFB90014 */ sw $t9, 0x14($sp) +/* 08AF30 7F056400 24A52A44 */ addiu $a1, %lo(D_80052A44) # addiu $a1, $a1, 0x2a44 +/* 08AF34 7F056404 AFAF0010 */ sw $t7, 0x10($sp) +/* 08AF38 7F056408 02202025 */ move $a0, $s1 +/* 08AF3C 7F05640C 24060093 */ li $a2, 147 +/* 08AF40 7F056410 0FC1A694 */ jal some_kind_of_display_routine +/* 08AF44 7F056414 24070002 */ li $a3, 2 +/* 08AF48 7F056418 0C001149 */ jal get_video2_settings_uly +/* 08AF4C 7F05641C 00408825 */ move $s1, $v0 +/* 08AF50 7F056420 00028400 */ sll $s0, $v0, 0x10 +/* 08AF54 7F056424 00104C03 */ sra $t1, $s0, 0x10 +/* 08AF58 7F056428 0C00112B */ jal get_video2_settings_height +/* 08AF5C 7F05642C 01208025 */ move $s0, $t1 +/* 08AF60 7F056430 8FA50040 */ lw $a1, 0x40($sp) +/* 08AF64 7F056434 2401003C */ li $at, 60 +/* 08AF68 7F056438 00505821 */ addu $t3, $v0, $s0 +/* 08AF6C 7F05643C 00A1001A */ div $zero, $a1, $at +/* 08AF70 7F056440 00004010 */ mfhi $t0 +/* 08AF74 7F056444 2401000A */ li $at, 10 +/* 08AF78 7F056448 256CFFEE */ addiu $t4, $t3, -0x12 +/* 08AF7C 7F05644C 0101001A */ div $zero, $t0, $at +/* 08AF80 7F056450 00002812 */ mflo $a1 +/* 08AF84 7F056454 240E0002 */ li $t6, 2 +/* 08AF88 7F056458 240D0001 */ li $t5, 1 +/* 08AF8C 7F05645C AFAD0018 */ sw $t5, 0x18($sp) +/* 08AF90 7F056460 AFAE0014 */ sw $t6, 0x14($sp) +/* 08AF94 7F056464 AFAC0010 */ sw $t4, 0x10($sp) +/* 08AF98 7F056468 02202025 */ move $a0, $s1 +/* 08AF9C 7F05646C 2406009C */ li $a2, 156 +/* 08AFA0 7F056470 0FC1A723 */ jal display_ammo_total_in_a1 +/* 08AFA4 7F056474 24070002 */ li $a3, 2 +/* 08AFA8 7F056478 0C001149 */ jal get_video2_settings_uly +/* 08AFAC 7F05647C 00408825 */ move $s1, $v0 +/* 08AFB0 7F056480 00028400 */ sll $s0, $v0, 0x10 +/* 08AFB4 7F056484 00107C03 */ sra $t7, $s0, 0x10 +/* 08AFB8 7F056488 0C00112B */ jal get_video2_settings_height +/* 08AFBC 7F05648C 01E08025 */ move $s0, $t7 +/* 08AFC0 7F056490 8FA50040 */ lw $a1, 0x40($sp) +/* 08AFC4 7F056494 2401000A */ li $at, 10 +/* 08AFC8 7F056498 0050C021 */ addu $t8, $v0, $s0 +/* 08AFCC 7F05649C 00A1001A */ div $zero, $a1, $at +/* 08AFD0 7F0564A0 00002810 */ mfhi $a1 +/* 08AFD4 7F0564A4 2709FFEE */ addiu $t1, $t8, -0x12 +/* 08AFD8 7F0564A8 24080002 */ li $t0, 2 +/* 08AFDC 7F0564AC 240A0001 */ li $t2, 1 +/* 08AFE0 7F0564B0 AFAA0018 */ sw $t2, 0x18($sp) +/* 08AFE4 7F0564B4 AFA80014 */ sw $t0, 0x14($sp) +/* 08AFE8 7F0564B8 AFA90010 */ sw $t1, 0x10($sp) +/* 08AFEC 7F0564BC 02202025 */ move $a0, $s1 +/* 08AFF0 7F0564C0 240600A4 */ li $a2, 164 +/* 08AFF4 7F0564C4 0FC1A723 */ jal display_ammo_total_in_a1 +/* 08AFF8 7F0564C8 24070002 */ li $a3, 2 +/* 08AFFC 7F0564CC 0C001149 */ jal get_video2_settings_uly +/* 08B000 7F0564D0 00408825 */ move $s1, $v0 +/* 08B004 7F0564D4 00028400 */ sll $s0, $v0, 0x10 +/* 08B008 7F0564D8 00105C03 */ sra $t3, $s0, 0x10 +/* 08B00C 7F0564DC 0C00112B */ jal get_video2_settings_height +/* 08B010 7F0564E0 01608025 */ move $s0, $t3 +/* 08B014 7F0564E4 00506021 */ addu $t4, $v0, $s0 +/* 08B018 7F0564E8 258EFFEE */ addiu $t6, $t4, -0x12 +/* 08B01C 7F0564EC 3C058005 */ lui $a1, %hi(D_80052A44) +/* 08B020 7F0564F0 240D0002 */ li $t5, 2 +/* 08B024 7F0564F4 240F0001 */ li $t7, 1 +/* 08B028 7F0564F8 AFAF0018 */ sw $t7, 0x18($sp) +/* 08B02C 7F0564FC AFAD0014 */ sw $t5, 0x14($sp) +/* 08B030 7F056500 24A52A44 */ addiu $a1, %lo(D_80052A44) # addiu $a1, $a1, 0x2a44 +/* 08B034 7F056504 AFAE0010 */ sw $t6, 0x10($sp) +/* 08B038 7F056508 02202025 */ move $a0, $s1 +/* 08B03C 7F05650C 240600AD */ li $a2, 173 +/* 08B040 7F056510 0FC1A694 */ jal some_kind_of_display_routine +/* 08B044 7F056514 24070002 */ li $a3, 2 +/* 08B048 7F056518 0C001149 */ jal get_video2_settings_uly +/* 08B04C 7F05651C 00408825 */ move $s1, $v0 +/* 08B050 7F056520 00028400 */ sll $s0, $v0, 0x10 +/* 08B054 7F056524 0010CC03 */ sra $t9, $s0, 0x10 +/* 08B058 7F056528 0C00112B */ jal get_video2_settings_height +/* 08B05C 7F05652C 03208025 */ move $s0, $t9 +/* 08B060 7F056530 8FA5003C */ lw $a1, 0x3c($sp) +/* 08B064 7F056534 24010064 */ li $at, 100 +/* 08B068 7F056538 00504021 */ addu $t0, $v0, $s0 +/* 08B06C 7F05653C 00A1001A */ div $zero, $a1, $at +/* 08B070 7F056540 0000C010 */ mfhi $t8 +/* 08B074 7F056544 2401000A */ li $at, 10 +/* 08B078 7F056548 250AFFEE */ addiu $t2, $t0, -0x12 +/* 08B07C 7F05654C 0301001A */ div $zero, $t8, $at +/* 08B080 7F056550 00002812 */ mflo $a1 +/* 08B084 7F056554 240B0002 */ li $t3, 2 +/* 08B088 7F056558 240C0001 */ li $t4, 1 +/* 08B08C 7F05655C AFAC0018 */ sw $t4, 0x18($sp) +/* 08B090 7F056560 AFAB0014 */ sw $t3, 0x14($sp) +/* 08B094 7F056564 AFAA0010 */ sw $t2, 0x10($sp) +/* 08B098 7F056568 02202025 */ move $a0, $s1 +/* 08B09C 7F05656C 240600B6 */ li $a2, 182 +/* 08B0A0 7F056570 0FC1A723 */ jal display_ammo_total_in_a1 +/* 08B0A4 7F056574 24070002 */ li $a3, 2 +/* 08B0A8 7F056578 0C001149 */ jal get_video2_settings_uly +/* 08B0AC 7F05657C 00408825 */ move $s1, $v0 +/* 08B0B0 7F056580 00028400 */ sll $s0, $v0, 0x10 +/* 08B0B4 7F056584 00107403 */ sra $t6, $s0, 0x10 +/* 08B0B8 7F056588 0C00112B */ jal get_video2_settings_height +/* 08B0BC 7F05658C 01C08025 */ move $s0, $t6 +/* 08B0C0 7F056590 8FA5003C */ lw $a1, 0x3c($sp) +/* 08B0C4 7F056594 2401000A */ li $at, 10 +/* 08B0C8 7F056598 00507821 */ addu $t7, $v0, $s0 +/* 08B0CC 7F05659C 00A1001A */ div $zero, $a1, $at +/* 08B0D0 7F0565A0 00002810 */ mfhi $a1 +/* 08B0D4 7F0565A4 25F9FFEE */ addiu $t9, $t7, -0x12 +/* 08B0D8 7F0565A8 24180002 */ li $t8, 2 +/* 08B0DC 7F0565AC 24090001 */ li $t1, 1 +/* 08B0E0 7F0565B0 AFA90018 */ sw $t1, 0x18($sp) +/* 08B0E4 7F0565B4 AFB80014 */ sw $t8, 0x14($sp) +/* 08B0E8 7F0565B8 AFB90010 */ sw $t9, 0x10($sp) +/* 08B0EC 7F0565BC 02202025 */ move $a0, $s1 +/* 08B0F0 7F0565C0 240600BE */ li $a2, 190 +/* 08B0F4 7F0565C4 0FC1A723 */ jal display_ammo_total_in_a1 +/* 08B0F8 7F0565C8 24070002 */ li $a3, 2 +/* 08B0FC 7F0565CC 0FC2B3BC */ jal combiner_bayer_lod_perspective +/* 08B100 7F0565D0 00402025 */ move $a0, $v0 +/* 08B104 7F0565D4 00408825 */ move $s1, $v0 +.L7F0565D8: +/* 08B108 7F0565D8 8FBF002C */ lw $ra, 0x2c($sp) +/* 08B10C 7F0565DC 02201025 */ move $v0, $s1 +/* 08B110 7F0565E0 8FB10028 */ lw $s1, 0x28($sp) +/* 08B114 7F0565E4 8FB00024 */ lw $s0, 0x24($sp) +/* 08B118 7F0565E8 03E00008 */ jr $ra +/* 08B11C 7F0565EC 27BD0048 */ addiu $sp, $sp, 0x48 +) +#endif + + + + + +void handle_alarm_gas_timer_calldamage(void) +{ + if (is_alarm_on() != 0) { + if ((ptr_alarm_sfx == 0) && (get_controls_locked_flag() == 0)) { + play_sfx_a1(ptr_sfx_buf,0xa3,&ptr_alarm_sfx); + } + alarm_timer = alarm_timer + clock_timer; + if (0x708 < alarm_timer) { + stop_alarm(); + } + } + handle_gas_damage(); + if_enabled_reset_clock(); + check_guard_detonate_proxmine(); + D_80030AF4 = 0; + return; +} + + + + + +#ifdef NONMATCHING +void sub_GAME_7F056690(void) { + +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F056690 +/* 08B1C0 7F056690 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 08B1C4 7F056694 AFBF002C */ sw $ra, 0x2c($sp) +/* 08B1C8 7F056698 AFB40028 */ sw $s4, 0x28($sp) +/* 08B1CC 7F05669C AFB30024 */ sw $s3, 0x24($sp) +/* 08B1D0 7F0566A0 AFB20020 */ sw $s2, 0x20($sp) +/* 08B1D4 7F0566A4 AFB1001C */ sw $s1, 0x1c($sp) +/* 08B1D8 7F0566A8 0FC0E909 */ jal get_ptr_obj_pos_list_current_entry +/* 08B1DC 7F0566AC AFB00018 */ sw $s0, 0x18($sp) +/* 08B1E0 7F0566B0 1040002A */ beqz $v0, .L7F05675C +/* 08B1E4 7F0566B4 00409025 */ move $s2, $v0 +/* 08B1E8 7F0566B8 24140001 */ li $s4, 1 +/* 08B1EC 7F0566BC 924E0000 */ lbu $t6, ($s2) +.L7F0566C0: +/* 08B1F0 7F0566C0 568E0024 */ bnel $s4, $t6, .L7F056754 +/* 08B1F4 7F0566C4 8E520024 */ lw $s2, 0x24($s2) +/* 08B1F8 7F0566C8 924F0001 */ lbu $t7, 1($s2) +/* 08B1FC 7F0566CC 31F80002 */ andi $t8, $t7, 2 +/* 08B200 7F0566D0 57000020 */ bnezl $t8, .L7F056754 +/* 08B204 7F0566D4 8E520024 */ lw $s2, 0x24($s2) +/* 08B208 7F0566D8 8E510004 */ lw $s1, 4($s2) +/* 08B20C 7F0566DC 92390002 */ lbu $t9, 2($s1) +/* 08B210 7F0566E0 02202025 */ move $a0, $s1 +/* 08B214 7F0566E4 33280080 */ andi $t0, $t9, 0x80 +/* 08B218 7F0566E8 5100001A */ beql $t0, $zero, .L7F056754 +/* 08B21C 7F0566EC 8E520024 */ lw $s2, 0x24($s2) +/* 08B220 7F0566F0 0FC12D1E */ jal sub_GAME_7F04B478 +/* 08B224 7F0566F4 8E330014 */ lw $s3, 0x14($s1) +/* 08B228 7F0566F8 10400018 */ beqz $v0, .L7F05675C +/* 08B22C 7F0566FC 00402825 */ move $a1, $v0 +/* 08B230 7F056700 8C500004 */ lw $s0, 4($v0) +/* 08B234 7F056704 52000016 */ beql $s0, $zero, .L7F056760 +/* 08B238 7F056708 8FBF002C */ lw $ra, 0x2c($sp) +/* 08B23C 7F05670C 8E290014 */ lw $t1, 0x14($s1) +/* 08B240 7F056710 0FC12D64 */ jal sub_GAME_7F04B590 +/* 08B244 7F056714 8D240008 */ lw $a0, 8($t1) +/* 08B248 7F056718 5040000E */ beql $v0, $zero, .L7F056754 +/* 08B24C 7F05671C 8E520024 */ lw $s2, 0x24($s2) +/* 08B250 7F056720 960B001A */ lhu $t3, 0x1a($s0) +/* 08B254 7F056724 8E6A0010 */ lw $t2, 0x10($s3) +/* 08B258 7F056728 8E0D0008 */ lw $t5, 8($s0) +/* 08B25C 7F05672C 000B6080 */ sll $t4, $t3, 2 +/* 08B260 7F056730 014C1021 */ addu $v0, $t2, $t4 +/* 08B264 7F056734 8C4E0000 */ lw $t6, ($v0) +/* 08B268 7F056738 11AE0005 */ beq $t5, $t6, .L7F056750 +/* 08B26C 7F05673C 02202025 */ move $a0, $s1 +/* 08B270 7F056740 0FC10409 */ jal sub_GAME_7F041024 +/* 08B274 7F056744 24050001 */ li $a1, 1 +/* 08B278 7F056748 10000005 */ b .L7F056760 +/* 08B27C 7F05674C 8FBF002C */ lw $ra, 0x2c($sp) +.L7F056750: +/* 08B280 7F056750 8E520024 */ lw $s2, 0x24($s2) +.L7F056754: +/* 08B284 7F056754 5640FFDA */ bnezl $s2, .L7F0566C0 +/* 08B288 7F056758 924E0000 */ lbu $t6, ($s2) +.L7F05675C: +/* 08B28C 7F05675C 8FBF002C */ lw $ra, 0x2c($sp) +.L7F056760: +/* 08B290 7F056760 8FB00018 */ lw $s0, 0x18($sp) +/* 08B294 7F056764 8FB1001C */ lw $s1, 0x1c($sp) +/* 08B298 7F056768 8FB20020 */ lw $s2, 0x20($sp) +/* 08B29C 7F05676C 8FB30024 */ lw $s3, 0x24($sp) +/* 08B2A0 7F056770 8FB40028 */ lw $s4, 0x28($sp) +/* 08B2A4 7F056774 03E00008 */ jr $ra +/* 08B2A8 7F056778 27BD0030 */ addiu $sp, $sp, 0x30 +) +#endif + + + + + +#ifdef NONMATCHING +void drop_inventory(void) { + +} +#else +GLOBAL_ASM( +.text +glabel drop_inventory +/* 08B2AC 7F05677C 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 08B2B0 7F056780 3C0E8008 */ lui $t6, %hi(pPlayer) +/* 08B2B4 7F056784 8DCEA0B0 */ lw $t6, %lo(pPlayer)($t6) +/* 08B2B8 7F056788 AFBF0034 */ sw $ra, 0x34($sp) +/* 08B2BC 7F05678C AFB40030 */ sw $s4, 0x30($sp) +/* 08B2C0 7F056790 AFB3002C */ sw $s3, 0x2c($sp) +/* 08B2C4 7F056794 AFB20028 */ sw $s2, 0x28($sp) +/* 08B2C8 7F056798 AFB10024 */ sw $s1, 0x24($sp) +/* 08B2CC 7F05679C AFB00020 */ sw $s0, 0x20($sp) +/* 08B2D0 7F0567A0 8DCF00A8 */ lw $t7, 0xa8($t6) +/* 08B2D4 7F0567A4 00002825 */ move $a1, $zero +/* 08B2D8 7F0567A8 8DF20004 */ lw $s2, 4($t7) +/* 08B2DC 7F0567AC 0FC1487A */ jal set_0x4_in_runtime_flags_for_item_in_guards_hand +/* 08B2E0 7F0567B0 02402025 */ move $a0, $s2 +/* 08B2E4 7F0567B4 02402025 */ move $a0, $s2 +/* 08B2E8 7F0567B8 0FC1487A */ jal set_0x4_in_runtime_flags_for_item_in_guards_hand +/* 08B2EC 7F0567BC 24050001 */ li $a1, 1 +/* 08B2F0 7F0567C0 24100001 */ li $s0, 1 +/* 08B2F4 7F0567C4 24140059 */ li $s4, 89 +/* 08B2F8 7F0567C8 3C132000 */ lui $s3, 0x2000 +.L7F0567CC: +/* 08B2FC 7F0567CC 0FC26C91 */ jal sub_GAME_7F09B244 +/* 08B300 7F0567D0 02002025 */ move $a0, $s0 +/* 08B304 7F0567D4 04400012 */ bltz $v0, .L7F056820 +/* 08B308 7F0567D8 00408825 */ move $s1, $v0 +/* 08B30C 7F0567DC 0FC230C5 */ jal is_weapon_in_inv +/* 08B310 7F0567E0 02002025 */ move $a0, $s0 +/* 08B314 7F0567E4 1040000E */ beqz $v0, .L7F056820 +/* 08B318 7F0567E8 02402025 */ move $a0, $s2 +/* 08B31C 7F0567EC 02202825 */ move $a1, $s1 +/* 08B320 7F0567F0 02003025 */ move $a2, $s0 +/* 08B324 7F0567F4 02603825 */ move $a3, $s3 +/* 08B328 7F0567F8 AFA00010 */ sw $zero, 0x10($sp) +/* 08B32C 7F0567FC 0FC14885 */ jal something_with_generating_object +/* 08B330 7F056800 AFA00014 */ sw $zero, 0x14($sp) +/* 08B334 7F056804 10400006 */ beqz $v0, .L7F056820 +/* 08B338 7F056808 00408825 */ move $s1, $v0 +/* 08B33C 7F05680C 00402025 */ move $a0, $v0 +/* 08B340 7F056810 0FC12FF4 */ jal sub_GAME_7F04BFD0 +/* 08B344 7F056814 24050001 */ li $a1, 1 +/* 08B348 7F056818 0FC1304C */ jal sub_GAME_7F04C130 +/* 08B34C 7F05681C 02202025 */ move $a0, $s1 +.L7F056820: +/* 08B350 7F056820 26100001 */ addiu $s0, $s0, 1 +/* 08B354 7F056824 1614FFE9 */ bne $s0, $s4, .L7F0567CC +/* 08B358 7F056828 00000000 */ nop +/* 08B35C 7F05682C 8FBF0034 */ lw $ra, 0x34($sp) +/* 08B360 7F056830 8FB00020 */ lw $s0, 0x20($sp) +/* 08B364 7F056834 8FB10024 */ lw $s1, 0x24($sp) +/* 08B368 7F056838 8FB20028 */ lw $s2, 0x28($sp) +/* 08B36C 7F05683C 8FB3002C */ lw $s3, 0x2c($sp) +/* 08B370 7F056840 8FB40030 */ lw $s4, 0x30($sp) +/* 08B374 7F056844 03E00008 */ jr $ra +/* 08B378 7F056848 27BD0038 */ addiu $sp, $sp, 0x38 +) +#endif + + + diff --git a/src/game/cleanup_alarms.c b/src/game/cleanup_alarms.c index e20a2fc..e9891c8 100644 --- a/src/game/cleanup_alarms.c +++ b/src/game/cleanup_alarms.c @@ -5,7 +5,7 @@ void cleanupAlarms(void) { stop_alarm(); - sub_GAME_7F055EF8(); + check_deactivate_gas_sound(); } diff --git a/src/game/deb_loadallmodels.c b/src/game/deb_loadallmodels.c index b457398..6b157ab 100644 --- a/src/game/deb_loadallmodels.c +++ b/src/game/deb_loadallmodels.c @@ -111,7 +111,7 @@ glabel alloc_false_GUARDdata_to_exec_global_action /* 035C1C 7F0010EC 2484000F */ addiu $a0, $a0, 0xf /* 035C20 7F0010F0 348F000F */ ori $t7, $a0, 0xf /* 035C24 7F0010F4 39E4000F */ xori $a0, $t7, 0xf -/* 035C28 7F0010F8 0C0025C8 */ jal allocate_bytes_in_bank +/* 035C28 7F0010F8 0C0025C8 */ jal mempAllocBytesInBank /* 035C2C 7F0010FC AFA70200 */ sw $a3, 0x200($sp) /* 035C30 7F001100 3C0D8007 */ lui $t5, %hi(ptr_setup_path_tbl) /* 035C34 7F001104 25AD5D00 */ addiu $t5, %lo(ptr_setup_path_tbl) # addiu $t5, $t5, 0x5d00 diff --git a/src/game/debugmenu_090490.c b/src/game/debugmenu_090490.c index 8e30088..ff6d4d7 100644 --- a/src/game/debugmenu_090490.c +++ b/src/game/debugmenu_090490.c @@ -252,11 +252,11 @@ s32 grab_rgb_screenshot_flag = 0; //D:80037000 s32 grab_jpeg_screenshot_flag = 0; //D:80037004 -s32 D_80037004 = 0; +s32 player_pos_x = 0; //D:80037008 -s32 D_80037008 = 0; +s32 player_pos_y = 0; //D:8003700C -s32 D_8003700C = 0; +s32 player_pos_z = 0; @@ -412,11 +412,11 @@ glabel sub_GAME_7F09054C -void unknown_libname_68(void) { +void removed_do_debug_profile_flag_false(void) { return; } -void nullsub_35(void) { +void removed_do_debug_profile_flag_true(void) { return; } @@ -1040,8 +1040,8 @@ debug_worldpos: /* 0C57CC 7F090C9C 00000000 */ nop /* 0C57D0 7F090CA0 10400074 */ beqz $v0, .L7F090E74 /* 0C57D4 7F090CA4 00401825 */ move $v1, $v0 -/* 0C57D8 7F090CA8 3C028003 */ lui $v0, %hi(D_80037004) -/* 0C57DC 7F090CAC 24427004 */ addiu $v0, %lo(D_80037004) # addiu $v0, $v0, 0x7004 +/* 0C57D8 7F090CA8 3C028003 */ lui $v0, %hi(player_pos_x) +/* 0C57DC 7F090CAC 24427004 */ addiu $v0, %lo(player_pos_x) # addiu $v0, $v0, 0x7004 /* 0C57E0 7F090CB0 C4460000 */ lwc1 $f6, ($v0) /* 0C57E4 7F090CB4 C4640008 */ lwc1 $f4, 8($v1) /* 0C57E8 7F090CB8 C44A0004 */ lwc1 $f10, 4($v0) @@ -1059,8 +1059,8 @@ debug_worldpos: /* 0C5818 7F090CE8 0C007DF8 */ jal sqrtf /* 0C581C 7F090CEC 460A4300 */ add.s $f12, $f8, $f10 /* 0C5820 7F090CF0 8FA30050 */ lw $v1, 0x50($sp) -/* 0C5824 7F090CF4 3C028003 */ lui $v0, %hi(D_80037004) -/* 0C5828 7F090CF8 24427004 */ addiu $v0, %lo(D_80037004) # addiu $v0, $v0, 0x7004 +/* 0C5824 7F090CF4 3C028003 */ lui $v0, %hi(player_pos_x) +/* 0C5828 7F090CF8 24427004 */ addiu $v0, %lo(player_pos_x) # addiu $v0, $v0, 0x7004 /* 0C582C 7F090CFC C4700008 */ lwc1 $f16, 8($v1) /* 0C5830 7F090D00 E4500000 */ swc1 $f16, ($v0) /* 0C5834 7F090D04 C472000C */ lwc1 $f18, 0xc($v1) @@ -1147,12 +1147,12 @@ debug_profile: /* 0C5948 7F090E18 39AE0001 */ xori $t6, $t5, 1 /* 0C594C 7F090E1C 11C00005 */ beqz $t6, .L7F090E34 /* 0C5950 7F090E20 AC4E0000 */ sw $t6, ($v0) -/* 0C5954 7F090E24 0FC24164 */ jal unknown_libname_68 +/* 0C5954 7F090E24 0FC24164 */ jal removed_do_debug_profile_flag_false /* 0C5958 7F090E28 00000000 */ nop /* 0C595C 7F090E2C 10000012 */ b .L7F090E78 /* 0C5960 7F090E30 8FB80018 */ lw $t8, 0x18($sp) .L7F090E34: -/* 0C5964 7F090E34 0FC24166 */ jal nullsub_35 +/* 0C5964 7F090E34 0FC24166 */ jal removed_do_debug_profile_flag_true /* 0C5968 7F090E38 00000000 */ nop /* 0C596C 7F090E3C 1000000E */ b .L7F090E78 /* 0C5970 7F090E40 8FB80018 */ lw $t8, 0x18($sp) diff --git a/src/game/dyn.c b/src/game/dyn.c index fc08295..676d2da 100644 --- a/src/game/dyn.c +++ b/src/game/dyn.c @@ -50,25 +50,20 @@ void set_vtx_gfx_mem_alloc(void) { s32 sp18; ? temp_ret; - // Node 0 if (check_token(1, "-mgfx") != 0) { - // Node 1 - sp18 = get_num_players(); - (0x80050000 + (sp18 * 4))->unk-7D20 = (s32) (strtol(check_token(1, "-mgfx"), 0, 0) << 0xa); + dyn_c_debug_notice_list_entry[get_num_players()] = strtol(check_token(1, "-mgfx"), 0, 0) << 0xa; } - // Node 2 + if (check_token(1, "-mvtx") != 0) { - // Node 3 - sp18 = get_num_players(); - (0x80050000 + (sp18 * 4))->unk-7D10 = (s32) (strtol(check_token(1, "-mvtx"), 0, 0) << 0xa); + D_800482F0[get_num_players()] = strtol(check_token(1, "-mvtx"), 0, 0) << 0xa; } - // Node 4 - ptr_mgfx0_alloc_start = allocate_bytes_in_bank(((0x80050000 + (get_num_players() * 4))->unk-7D20 * 2), 4); + + mempAllocBytesInBank(dyn_c_debug_notice_list_entry[sVar1] << 1, 4); ptr_mgfx0_alloc_start.unk4 = (s32) ((0x80050000 + (get_num_players() * 4))->unk-7D20 + ptr_mgfx0_alloc_start); ptr_mgfx0_alloc_start.unk8 = (s32) ((0x80050000 + (get_num_players() * 4))->unk-7D20 + ptr_mgfx0_alloc_start.unk4); - ptr_mvtx0_alloc_start = allocate_bytes_in_bank(((0x80050000 + (get_num_players() * 4))->unk-7D10 * 2), 4); + ptr_mvtx0_alloc_start = mempAllocBytesInBank(((0x80050000 + (get_num_players() * 4))->unk-7D10 * 2), 4); ptr_mvtx0_alloc_start.unk4 = (s32) ((0x80050000 + (get_num_players() * 4))->unk-7D10 + ptr_mvtx0_alloc_start); temp_ret = get_num_players(); ptr_mvtx0_alloc_start.unk8 = (s32) ((0x80050000 + (temp_ret * 4))->unk-7D10 + ptr_mvtx0_alloc_start.unk4); @@ -160,7 +155,7 @@ glabel set_vtx_gfx_mem_alloc /* 0F2090 7F0BD560 8C8482E0 */ lw $a0, %lo(D_800482E0)($a0) /* 0F2094 7F0BD564 24050004 */ li $a1, 4 /* 0F2098 7F0BD568 00045840 */ sll $t3, $a0, 1 -/* 0F209C 7F0BD56C 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F209C 7F0BD56C 0C0025C8 */ jal mempAllocBytesInBank /* 0F20A0 7F0BD570 01602025 */ move $a0, $t3 /* 0F20A4 7F0BD574 3C018009 */ lui $at, %hi(ptr_mgfx0_alloc_start) /* 0F20A8 7F0BD578 0FC26919 */ jal get_num_players @@ -191,7 +186,7 @@ glabel set_vtx_gfx_mem_alloc /* 0F210C 7F0BD5DC 8C8482F0 */ lw $a0, %lo(D_800482F0)($a0) /* 0F2110 7F0BD5E0 24050004 */ li $a1, 4 /* 0F2114 7F0BD5E4 00045840 */ sll $t3, $a0, 1 -/* 0F2118 7F0BD5E8 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F2118 7F0BD5E8 0C0025C8 */ jal mempAllocBytesInBank /* 0F211C 7F0BD5EC 01602025 */ move $a0, $t3 /* 0F2120 7F0BD5F0 3C038009 */ lui $v1, %hi(ptr_mvtx0_alloc_start) /* 0F2124 7F0BD5F4 2463C240 */ addiu $v1, %lo(ptr_mvtx0_alloc_start) # addiu $v1, $v1, -0x3dc0 diff --git a/src/game/game_debug.c b/src/game/game_debug.c index 390da2f..7cc5c9e 100644 --- a/src/game/game_debug.c +++ b/src/game/game_debug.c @@ -14,12 +14,12 @@ void something_game_c_debug_related(void) { void reset_mem_bank_5(void) { sub_GAME_7F0BD234(); - reset_mem_bank_a0(5); + mempResetBank(5); something_mem_bank_a0(5); } void sub_GAME_7F0D1A7C(void) { - memp_related_6(5); + mempNullNextEntryInBank(5); something_mem_bank_a0(5); } diff --git a/src/game/gamefile.c b/src/game/gamefile.c index 3c67ed3..bcd49e0 100644 --- a/src/game/gamefile.c +++ b/src/game/gamefile.c @@ -421,33 +421,13 @@ glabel set_selected_difficulty -#ifdef NONMATCHING + void set_solo_and_ptr_briefing(LEVELID stage) { gamemode = GAMEMODE_SOLO; selected_stage = stage; - briefingpage = pull_and_display_text_for_folder_a0((undefined *)stage); + briefingpage = pull_and_display_text_for_folder_a0(stage); } -#else -GLOBAL_ASM( -.text -glabel set_solo_and_ptr_briefing -/* 05211C 7F01D5EC 3C018003 */ lui $at, %hi(gamemode) -/* 052120 7F01D5F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 052124 7F01D5F4 AC20A8F0 */ sw $zero, %lo(gamemode)($at) -/* 052128 7F01D5F8 AFBF0014 */ sw $ra, 0x14($sp) -/* 05212C 7F01D5FC 3C018003 */ lui $at, %hi(selected_stage) -/* 052130 7F01D600 0FC03730 */ jal pull_and_display_text_for_folder_a0 -/* 052134 7F01D604 AC24A8F4 */ sw $a0, %lo(selected_stage)($at) -/* 052138 7F01D608 8FBF0014 */ lw $ra, 0x14($sp) -/* 05213C 7F01D60C 3C018003 */ lui $at, %hi(briefingpage) -/* 052140 7F01D610 AC22A8F8 */ sw $v0, %lo(briefingpage)($at) -/* 052144 7F01D614 03E00008 */ jr $ra -/* 052148 7F01D618 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - void sub_GAME_7F01D61C(struct save_file *savefile) { @@ -457,8 +437,7 @@ void sub_GAME_7F01D61C(struct save_file *savefile) #ifdef NONMATCHING -void sub_GAME_7F01D644(save_file *eeprom) - +void sub_GAME_7F01D644(struct save_file *eeprom) { selected_folder_num_copy = selected_folder_num; selected_folder_num = 100; diff --git a/src/game/gamefile2.c b/src/game/gamefile2.c index a9ceee6..d8d8b0f 100644 --- a/src/game/gamefile2.c +++ b/src/game/gamefile2.c @@ -1136,13 +1136,13 @@ glabel check_if_valid_folder_num #ifdef NONMATCHING -void doesFolderHaveStageUnlockedAtDifficulty(void) { +s32 isStageUnlockedAtDifficulty(int foldernum,STAGENUM stageid,DIFFICULTY difficulty) { } #else GLOBAL_ASM( .text -glabel doesFolderHaveStageUnlockedAtDifficulty +glabel isStageUnlockedAtDifficulty /* 052DF0 7F01E2C0 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 052DF4 7F01E2C4 AFBF002C */ sw $ra, 0x2c($sp) /* 052DF8 7F01E2C8 AFB50028 */ sw $s5, 0x28($sp) @@ -1680,7 +1680,7 @@ glabel check_egypt_completed_in_folder /* 053474 7F01E944 02402025 */ move $a0, $s2 .L7F01E948: /* 053478 7F01E948 02202825 */ move $a1, $s1 -/* 05347C 7F01E94C 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 05347C 7F01E94C 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 053480 7F01E950 02003025 */ move $a2, $s0 /* 053484 7F01E954 10400003 */ beqz $v0, .L7F01E964 /* 053488 7F01E958 26100001 */ addiu $s0, $s0, 1 @@ -1739,21 +1739,21 @@ glabel check_cradle_completed_in_folder /* 053528 7F01E9F8 AFBF0014 */ sw $ra, 0x14($sp) /* 05352C 7F01E9FC AFA40018 */ sw $a0, 0x18($sp) /* 053530 7F01EA00 24050011 */ li $a1, 17 -/* 053534 7F01EA04 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 053534 7F01EA04 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 053538 7F01EA08 00003025 */ move $a2, $zero /* 05353C 7F01EA0C 384E0003 */ xori $t6, $v0, 3 /* 053540 7F01EA10 2DC20001 */ sltiu $v0, $t6, 1 /* 053544 7F01EA14 1440000D */ bnez $v0, .L7F01EA4C /* 053548 7F01EA18 8FA40018 */ lw $a0, 0x18($sp) /* 05354C 7F01EA1C 24050011 */ li $a1, 17 -/* 053550 7F01EA20 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 053550 7F01EA20 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 053554 7F01EA24 24060001 */ li $a2, 1 /* 053558 7F01EA28 384F0003 */ xori $t7, $v0, 3 /* 05355C 7F01EA2C 2DE20001 */ sltiu $v0, $t7, 1 /* 053560 7F01EA30 14400006 */ bnez $v0, .L7F01EA4C /* 053564 7F01EA34 8FA40018 */ lw $a0, 0x18($sp) /* 053568 7F01EA38 24050011 */ li $a1, 17 -/* 05356C 7F01EA3C 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 05356C 7F01EA3C 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 053570 7F01EA40 24060002 */ li $a2, 2 /* 053574 7F01EA44 38580003 */ xori $t8, $v0, 3 /* 053578 7F01EA48 2F020001 */ sltiu $v0, $t8, 1 @@ -1779,14 +1779,14 @@ glabel check_aztec_completed_in_folder_secret_00 /* 053590 7F01EA60 AFBF0014 */ sw $ra, 0x14($sp) /* 053594 7F01EA64 AFA40018 */ sw $a0, 0x18($sp) /* 053598 7F01EA68 24050012 */ li $a1, 18 -/* 05359C 7F01EA6C 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 05359C 7F01EA6C 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 0535A0 7F01EA70 24060001 */ li $a2, 1 /* 0535A4 7F01EA74 384E0003 */ xori $t6, $v0, 3 /* 0535A8 7F01EA78 2DC20001 */ sltiu $v0, $t6, 1 /* 0535AC 7F01EA7C 14400006 */ bnez $v0, .L7F01EA98 /* 0535B0 7F01EA80 8FA40018 */ lw $a0, 0x18($sp) /* 0535B4 7F01EA84 24050012 */ li $a1, 18 -/* 0535B8 7F01EA88 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 0535B8 7F01EA88 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 0535BC 7F01EA8C 24060002 */ li $a2, 2 /* 0535C0 7F01EA90 384F0003 */ xori $t7, $v0, 3 /* 0535C4 7F01EA94 2DE20001 */ sltiu $v0, $t7, 1 @@ -1811,7 +1811,7 @@ glabel check_egypt_completed_in_folder_00 /* 0535D8 7F01EAA8 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0535DC 7F01EAAC AFBF0014 */ sw $ra, 0x14($sp) /* 0535E0 7F01EAB0 24050013 */ li $a1, 19 -/* 0535E4 7F01EAB4 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 0535E4 7F01EAB4 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 0535E8 7F01EAB8 24060002 */ li $a2, 2 /* 0535EC 7F01EABC 8FBF0014 */ lw $ra, 0x14($sp) /* 0535F0 7F01EAC0 384E0003 */ xori $t6, $v0, 3 @@ -2178,7 +2178,7 @@ glabel update_eeprom_to_current_solo_watch_settings /* 053A54 7F01EF24 00008025 */ move $s0, $zero /* 053A58 7F01EF28 8FAF0020 */ lw $t7, 0x20($sp) /* 053A5C 7F01EF2C 000271C3 */ sra $t6, $v0, 7 -/* 053A60 7F01EF30 0FC2A460 */ jal sub_GAME_7F0A9180 +/* 053A60 7F01EF30 0FC2A460 */ jal call_sfx_c_700091C8 /* 053A64 7F01EF34 A1EE000A */ sb $t6, 0xa($t7) /* 053A68 7F01EF38 8FB90020 */ lw $t9, 0x20($sp) /* 053A6C 7F01EF3C 0002C1C3 */ sra $t8, $v0, 7 diff --git a/src/game/image.c b/src/game/image.c index 31aa3ee..3ae9cc3 100644 --- a/src/game/image.c +++ b/src/game/image.c @@ -9534,13 +9534,14 @@ glabel sub_GAME_7F0CBE50 #ifdef NONMATCHING -void sub_GAME_7F0CBEE8(void) { - +void calls_load_image_to_buffer(uint *image,uint *buffer) +{ + load_image_to_buffer(&image,buffer); } #else GLOBAL_ASM( .text -glabel sub_GAME_7F0CBEE8 +glabel calls_load_image_to_buffer /* 100A18 7F0CBEE8 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 100A1C 7F0CBEEC AFBF0014 */ sw $ra, 0x14($sp) /* 100A20 7F0CBEF0 AFA4001C */ sw $a0, 0x1c($sp) diff --git a/src/game/image_bank.c b/src/game/image_bank.c index 6c23a94..d5d51b2 100644 --- a/src/game/image_bank.c +++ b/src/game/image_bank.c @@ -13,71 +13,71 @@ s32 dword_CODE_bss_8008D0AC; //8008D0B0; s32 globalbank_rdram_offset; //8008D0B4; -s32 *ptr_explosionDL; +s32 *pGlobalimagetable; //8008D0B8; -s32 *genericimage; +struct sImageTableEntry *genericimage; //8008D0BC -s32 *impactimages; +struct sImageTableEntry *impactimages; //8008D0C0 -s32 *explosion_smokeimages; +struct sImageTableEntry *explosion_smokeimages; //8008D0C4 -s32 *scattered_explosions; +struct sImageTableEntry *scattered_explosions; //8008D0C8 -s32 flareimage1; +struct sImageTableEntry *flareimage1; //8008D0CC -s32 flareimage2; +struct sImageTableEntry *flareimage2; //8008D0D0 -s32 flareimage3; +struct sImageTableEntry *flareimage3; //8008D0D4 -s32 flareimage4; +struct sImageTableEntry *flareimage4; //8008D0D8 -s32 flareimage5; +struct sImageTableEntry *flareimage5; //8008D0DC -s32 ammo9mmimage; +struct sImageTableEntry *ammo9mmimage; //8008D0E0 -s32 rifleammoimage; +struct sImageTableEntry *rifleammoimage; //8008D0E4 -s32 shotgunammoimage; +struct sImageTableEntry *shotgunammoimage; //8008D0E8 -s32 knifeammoimage; +struct sImageTableEntry *knifeammoimage; //8008D0EC -s32 glaunchammoimage; +struct sImageTableEntry *glaunchammoimage; //8008D0F0 -s32 rocketammoimage; +struct sImageTableEntry *rocketammoimage; //8008D0F4 -s32 genericmineammoimage; +struct sImageTableEntry *genericmineammoimage; //8008D0F8 -s32 grenadeammoimage; +struct sImageTableEntry *grenadeammoimage; //8008D0FC -s32 magnumammoimage; +struct sImageTableEntry *magnumammoimage; //8008D100 -s32 goldengunammoimage; +struct sImageTableEntry *goldengunammoimage; //8008D104 -s32 remotemineammoimage; +struct sImageTableEntry *remotemineammoimage; //8008D108 -s32 timedmineammoimage; +struct sImageTableEntry *timedmineammoimage; //8008D10C -s32 proxmineammoimage; +struct sImageTableEntry *proxmineammoimage; //8008D110 -s32 tankammoimage; +struct sImageTableEntry *tankammoimage; //8008D114; -s32 *crosshairimage; +struct sImageTableEntry *crosshairimage; //8008D118 -s32 betacrosshairimage; +struct sImageTableEntry *betacrosshairimage; //8008D11C -s32 glassoverlayimage; +struct sImageTableEntry *glassoverlayimage; //8008D120 -s32 monitorimages; +struct sImageTableEntry *monitorimages; //8008D124 -s32 skywaterimages; +struct sImageTableEntry *skywaterimages; //8008D128 -s32 mainfolderimages; +struct sImageTableEntry *mainfolderimages; //8008D12C -s32 mpradarimages; +struct sImageTableEntry *mpradarimages; //8008D130 -s32 mpcharselimages; +struct sImageTableEntry *mpcharselimages; //8008D134 -s32 mpstageselimages; +struct sImageTableEntry *mpstageselimages; extern u8* _GlobalimagetableSegmentRomStart; @@ -161,9 +161,9 @@ void load_prepare_global_image_bank(void) { s32 i; size = (0x2001400 - 0x2000000); - ptr_explosionDL = ((allocate_bytes_in_bank((size + 0x1000), 4) + 0xfff) & -0x1000); - romCopy(ptr_explosionDL, _GlobalimagetableSegmentRomStart, size); - globalbank_rdram_offset = (ptr_explosionDL + 0xfe000000); + pGlobalimagetable = ((mempAllocBytesInBank((size + 0x1000), 4) + 0xfff) & -0x1000); + romCopy(pGlobalimagetable, _GlobalimagetableSegmentRomStart, size); + globalbank_rdram_offset = (pGlobalimagetable + 0xfe000000); genericimage = (s32) (globalbank_rdram_offset + 0x2000ac8); impactimages = (s32) (globalbank_rdram_offset + 0x2000ad4); explosion_smokeimages = (s32) (globalbank_rdram_offset + 0x2000bc4); @@ -240,10 +240,10 @@ glabel load_prepare_global_image_bank /* 100B04 7F0CBFD4 AFB2001C */ sw $s2, 0x1c($sp) /* 100B08 7F0CBFD8 AFB10018 */ sw $s1, 0x18($sp) /* 100B0C 7F0CBFDC 26041000 */ addiu $a0, $s0, 0x1000 -/* 100B10 7F0CBFE0 0C0025C8 */ jal allocate_bytes_in_bank +/* 100B10 7F0CBFE0 0C0025C8 */ jal mempAllocBytesInBank /* 100B14 7F0CBFE4 24050004 */ li $a1, 4 -/* 100B18 7F0CBFE8 3C118009 */ lui $s1, %hi(ptr_explosionDL) -/* 100B1C 7F0CBFEC 2631D0B4 */ addiu $s1, %lo(ptr_explosionDL) # addiu $s1, $s1, -0x2f4c +/* 100B18 7F0CBFE8 3C118009 */ lui $s1, %hi(pGlobalimagetable) +/* 100B1C 7F0CBFEC 2631D0B4 */ addiu $s1, %lo(pGlobalimagetable) # addiu $s1, $s1, -0x2f4c /* 100B20 7F0CBFF0 24590FFF */ addiu $t9, $v0, 0xfff /* 100B24 7F0CBFF4 2401F000 */ li $at, -4096 /* 100B28 7F0CBFF8 AE220000 */ sw $v0, ($s1) diff --git a/src/game/initBondDATA.c b/src/game/initBondDATA.c index b5dbc53..5ea39df 100644 --- a/src/game/initBondDATA.c +++ b/src/game/initBondDATA.c @@ -51,9 +51,9 @@ glabel init_player_BONDdata_stats /* 039C34 7F005104 8DE1FFFC */ lw $at, -4($t7) /* 039C38 7F005108 15E8FFF8 */ bne $t7, $t0, .L7F0050EC /* 039C3C 7F00510C ADC1FFFC */ sw $at, -4($t6) -/* 039C40 7F005110 3C048003 */ lui $a0, %hi(size_right_item_buffer) -/* 039C44 7F005114 8C84245C */ lw $a0, %lo(size_right_item_buffer)($a0) -/* 039C48 7F005118 0C0025C8 */ jal allocate_bytes_in_bank +/* 039C40 7F005110 3C048003 */ lui $a0, %hi(size_item_buffer) +/* 039C44 7F005114 8C84245C */ lw $a0, %lo(size_item_buffer)($a0) +/* 039C48 7F005118 0C0025C8 */ jal mempAllocBytesInBank /* 039C4C 7F00511C 24050004 */ li $a1, 4 /* 039C50 7F005120 3C108008 */ lui $s0, %hi(pPlayer) /* 039C54 7F005124 2610A0B0 */ addiu $s0, %lo(pPlayer) # addiu $s0, $s0, -0x5f50 @@ -62,9 +62,9 @@ glabel init_player_BONDdata_stats /* 039C60 7F005130 AD220808 */ sw $v0, 0x808($t1) /* 039C64 7F005134 24010001 */ li $at, 1 /* 039C68 7F005138 14410006 */ bne $v0, $at, .L7F005154 -/* 039C6C 7F00513C 3C048003 */ lui $a0, %hi(size_left_item_buffer) -/* 039C70 7F005140 8C842460 */ lw $a0, %lo(size_left_item_buffer)($a0) -/* 039C74 7F005144 0C0025C8 */ jal allocate_bytes_in_bank +/* 039C6C 7F00513C 3C048003 */ lui $a0, %hi(size_item_buffer+0x4) +/* 039C70 7F005140 8C842460 */ lw $a0, %lo(size_item_buffer+0x4)($a0) +/* 039C74 7F005144 0C0025C8 */ jal mempAllocBytesInBank /* 039C78 7F005148 24050004 */ li $a1, 4 /* 039C7C 7F00514C 8E0A0000 */ lw $t2, ($s0) /* 039C80 7F005150 AD42080C */ sw $v0, 0x80c($t2) @@ -89,10 +89,10 @@ glabel init_player_BONDdata_stats /* 039CC8 7F005198 AD052A48 */ sw $a1, 0x2a48($t0) /* 039CCC 7F00519C 8E0F0000 */ lw $t7, ($s0) /* 039CD0 7F0051A0 00604025 */ move $t0, $v1 -/* 039CD4 7F0051A4 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) +/* 039CD4 7F0051A4 3C038008 */ lui $v1, %hi(pPlayersPerm) /* 039CD8 7F0051A8 ADE02A50 */ sw $zero, 0x2a50($t7) /* 039CDC 7F0051AC 8E0E0000 */ lw $t6, ($s0) -/* 039CE0 7F0051B0 2463A0B4 */ addiu $v1, %lo(cur_player_stat_ptr) # addiu $v1, $v1, -0x5f4c +/* 039CE0 7F0051B0 2463A0B4 */ addiu $v1, %lo(pPlayersPerm) # addiu $v1, $v1, -0x5f4c /* 039CE4 7F0051B4 ADC02A54 */ sw $zero, 0x2a54($t6) /* 039CE8 7F0051B8 8E090000 */ lw $t1, ($s0) .L7F0051BC: diff --git a/src/game/initBondDATAdefaults.c b/src/game/initBondDATAdefaults.c index b22f794..f19baa4 100644 --- a/src/game/initBondDATAdefaults.c +++ b/src/game/initBondDATAdefaults.c @@ -288,7 +288,7 @@ glabel sets_a_bunch_of_BONDdata_values_to_default /* 03B1B8 7F006688 0FC1B5AC */ jal subcalcpos /* 03B1BC 7F00668C 24840598 */ addiu $a0, $a0, 0x598 /* 03B1C0 7F006690 27B30050 */ addiu $s3, $sp, 0x50 -/* 03B1C4 7F006694 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 03B1C4 7F006694 0FC15FF4 */ jal reset_array_of_0x10_floats /* 03B1C8 7F006698 02602025 */ move $a0, $s3 /* 03B1CC 7F00669C 8E300000 */ lw $s0, ($s1) /* 03B1D0 7F0066A0 AFB30090 */ sw $s3, 0x90($sp) @@ -581,7 +581,7 @@ glabel sets_a_bunch_of_BONDdata_values_to_default /* 03B214 7F0066A4 0FC1B728 */ jal subcalcpos /* 03B218 7F0066A8 24840598 */ addiu $a0, $a0, 0x598 /* 03B21C 7F0066AC 27B30050 */ addiu $s3, $sp, 0x50 -/* 03B220 7F0066B0 0FC1613C */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 03B220 7F0066B0 0FC1613C */ jal reset_array_of_0x10_floats /* 03B224 7F0066B4 02602025 */ move $a0, $s3 /* 03B228 7F0066B8 8E300000 */ lw $s0, ($s1) /* 03B22C 7F0066BC AFB30090 */ sw $s3, 0x90($sp) diff --git a/src/game/initanitable.c b/src/game/initanitable.c index a3f08db..6b9ccbf 100644 --- a/src/game/initanitable.c +++ b/src/game/initanitable.c @@ -107,7 +107,7 @@ void alloc_load_expand_ani_table(void) { osCreateMesgQueue(&animMsgQ, &animMesg, 8); sub_GAME_7F0009E0(&D_80029D60, &animMsgQ, &dword_CODE_bss_80069458); temp_a2 = (&0x0000E7E0 - 0); - temp_ret = allocate_bytes_in_bank(temp_a2, 6, temp_a2); + temp_ret = mempAllocBytesInBank(temp_a2, 6, temp_a2); ptr_animation_table = temp_ret; romCopy(temp_ret, &_animation_dataSegmentRomStart, sp18); expand_ani_table_entries(&animation_table_ptrs1); @@ -139,7 +139,7 @@ glabel alloc_load_expand_ani_table /* 035628 7F000AF8 01CF3023 */ subu $a2, $t6, $t7 /* 03562C 7F000AFC 00C02025 */ move $a0, $a2 /* 035630 7F000B00 AFA60018 */ sw $a2, 0x18($sp) -/* 035634 7F000B04 0C0025C8 */ jal allocate_bytes_in_bank +/* 035634 7F000B04 0C0025C8 */ jal mempAllocBytesInBank /* 035638 7F000B08 24050006 */ li $a1, 6 /* 03563C 7F000B0C 3C038007 */ lui $v1, %hi(ptr_animation_table) /* 035640 7F000B10 24639538 */ addiu $v1, %lo(ptr_animation_table) # addiu $v1, $v1, -0x6ac8 diff --git a/src/game/initcameraandthrown.c b/src/game/initcameraandthrown.c index c83b676..21705ac 100644 --- a/src/game/initcameraandthrown.c +++ b/src/game/initcameraandthrown.c @@ -214,7 +214,7 @@ glabel load_camera_intro_type_values /* 03A388 7F005858 1441000B */ bne $v0, $at, .L7F005888 /* 03A38C 7F00585C 3C040004 */ lui $a0, (0x00046EA0 >> 16) # lui $a0, 4 /* 03A390 7F005860 34846EA0 */ ori $a0, (0x00046EA0 & 0xFFFF) # ori $a0, $a0, 0x6ea0 -/* 03A394 7F005864 0C0025C8 */ jal allocate_bytes_in_bank +/* 03A394 7F005864 0C0025C8 */ jal mempAllocBytesInBank /* 03A398 7F005868 24050004 */ li $a1, 4 /* 03A39C 7F00586C 244A003F */ addiu $t2, $v0, 0x3f /* 03A3A0 7F005870 2401FFC0 */ li $at, -64 @@ -986,7 +986,7 @@ glabel load_camera_intro_type_values /* 03A3EC 7F00587C 1441000B */ bne $v0, $at, .L7F0058AC /* 03A3F0 7F005880 3C040004 */ lui $a0, (0x00046EA0 >> 16) # lui $a0, 4 /* 03A3F4 7F005884 34846EA0 */ ori $a0, (0x00046EA0 & 0xFFFF) # ori $a0, $a0, 0x6ea0 -/* 03A3F8 7F005888 0C0025CC */ jal allocate_bytes_in_bank +/* 03A3F8 7F005888 0C0025CC */ jal mempAllocBytesInBank /* 03A3FC 7F00588C 24050004 */ li $a1, 4 /* 03A400 7F005890 244A003F */ addiu $t2, $v0, 0x3f /* 03A404 7F005894 2401FFC0 */ li $at, -64 diff --git a/src/game/initexplosioncasing.c b/src/game/initexplosioncasing.c index 5bf6d53..e1d4356 100644 --- a/src/game/initexplosioncasing.c +++ b/src/game/initexplosioncasing.c @@ -27,7 +27,7 @@ glabel alloc_explosion_smoke_casing_scorch_impact_buffers /* 03B8F8 7F006DC8 3C018004 */ lui $at, %hi(D_80040178) /* 03B8FC 7F006DCC 24041740 */ li $a0, 5952 /* 03B900 7F006DD0 24050004 */ li $a1, 4 -/* 03B904 7F006DD4 0C0025C8 */ jal allocate_bytes_in_bank +/* 03B904 7F006DD4 0C0025C8 */ jal mempAllocBytesInBank /* 03B908 7F006DD8 E4240178 */ swc1 $f4, %lo(D_80040178)($at) /* 03B90C 7F006DDC 3C038008 */ lui $v1, %hi(ptr_explosion_buf) /* 03B910 7F006DE0 2463A144 */ addiu $v1, %lo(ptr_explosion_buf) # addiu $v1, $v1, -0x5ebc @@ -76,7 +76,7 @@ glabel alloc_explosion_smoke_casing_scorch_impact_buffers /* 03B9B4 7F006E84 1420FFDB */ bnez $at, .L7F006DF4 /* 03B9B8 7F006E88 24C603E0 */ addiu $a2, $a2, 0x3e0 /* 03B9BC 7F006E8C 24041FE0 */ li $a0, 8160 -/* 03B9C0 7F006E90 0C0025C8 */ jal allocate_bytes_in_bank +/* 03B9C0 7F006E90 0C0025C8 */ jal mempAllocBytesInBank /* 03B9C4 7F006E94 24050004 */ li $a1, 4 /* 03B9C8 7F006E98 3C038008 */ lui $v1, %hi(ptr_smoke_buf) /* 03B9CC 7F006E9C 2463A140 */ addiu $v1, %lo(ptr_smoke_buf) # addiu $v1, $v1, -0x5ec0 @@ -166,7 +166,7 @@ glabel alloc_explosion_smoke_casing_scorch_impact_buffers /* 03BB14 7F006FE4 24010001 */ li $at, 1 /* 03BB18 7F006FE8 14410017 */ bne $v0, $at, .L7F007048 /* 03BB1C 7F006FEC 240406E0 */ li $a0, 1760 -/* 03BB20 7F006FF0 0C0025C8 */ jal allocate_bytes_in_bank +/* 03BB20 7F006FF0 0C0025C8 */ jal mempAllocBytesInBank /* 03BB24 7F006FF4 24050004 */ li $a1, 4 /* 03BB28 7F006FF8 3C058008 */ lui $a1, %hi(ptr_scorch_buf) /* 03BB2C 7F006FFC 24A5A150 */ addiu $a1, %lo(ptr_scorch_buf) # addiu $a1, $a1, -0x5eb0 @@ -191,7 +191,7 @@ glabel alloc_explosion_smoke_casing_scorch_impact_buffers /* 03BB74 7F007044 A5A60108 */ sh $a2, 0x108($t5) .L7F007048: /* 03BB78 7F007048 24041F40 */ li $a0, 8000 -/* 03BB7C 7F00704C 0C0025C8 */ jal allocate_bytes_in_bank +/* 03BB7C 7F00704C 0C0025C8 */ jal mempAllocBytesInBank /* 03BB80 7F007050 24050004 */ li $a1, 4 /* 03BB84 7F007054 3C058008 */ lui $a1, %hi(ptr_bullet_impact_buf) /* 03BB88 7F007058 24A5A154 */ addiu $a1, %lo(ptr_bullet_impact_buf) # addiu $a1, $a1, -0x5eac @@ -249,7 +249,7 @@ glabel alloc_explosion_smoke_casing_scorch_impact_buffers /* 03BC44 7F007114 000A50C0 */ sll $t2, $t2, 3 /* 03BC48 7F007118 2544000F */ addiu $a0, $t2, 0xf /* 03BC4C 7F00711C 00815824 */ and $t3, $a0, $at -/* 03BC50 7F007120 0C0025C8 */ jal allocate_bytes_in_bank +/* 03BC50 7F007120 0C0025C8 */ jal mempAllocBytesInBank /* 03BC54 7F007124 01602025 */ move $a0, $t3 /* 03BC58 7F007128 3C068008 */ lui $a2, %hi(max_casings) /* 03BC5C 7F00712C 24C6A148 */ addiu $a2, %lo(max_casings) # addiu $a2, $a2, -0x5eb8 diff --git a/src/game/initguards.c b/src/game/initguards.c index c1f16dd..03216d6 100644 --- a/src/game/initguards.c +++ b/src/game/initguards.c @@ -39,7 +39,7 @@ glabel alloc_init_GUARDdata_entries /* 035A14 7F000EE4 3498000F */ ori $t8, $a0, 0xf /* 035A18 7F000EE8 ACCE0000 */ sw $t6, ($a2) /* 035A1C 7F000EEC 3B04000F */ xori $a0, $t8, 0xf -/* 035A20 7F000EF0 0C0025C8 */ jal allocate_bytes_in_bank +/* 035A20 7F000EF0 0C0025C8 */ jal mempAllocBytesInBank /* 035A24 7F000EF4 24050004 */ li $a1, 4 /* 035A28 7F000EF8 3C068003 */ lui $a2, %hi(num_guards) /* 035A2C 7F000EFC 24C6CC68 */ addiu $a2, %lo(num_guards) # addiu $a2, $a2, -0x3398 diff --git a/src/game/initintromatrices.c b/src/game/initintromatrices.c index ef9565a..f755859 100644 --- a/src/game/initintromatrices.c +++ b/src/game/initintromatrices.c @@ -3,13 +3,13 @@ void alloc_intro_matrices(void) { D_8002A7D0 = 0; - matrix_buffer_rarelogo_0 = allocate_bytes_in_bank(0x80, 4); - matrix_buffer_gunbarrel_0 = allocate_bytes_in_bank(0x40, 4); - matrix_buffer_rarelogo_1 = allocate_bytes_in_bank(0x80, 4); - matrix_buffer_rarelogo_2 = allocate_bytes_in_bank(0x80, 4); - matrix_buffer_gunbarrel_1 = allocate_bytes_in_bank(0x80, 4); - matrix_buffer_intro_backdrop = allocate_bytes_in_bank(0x80, 4); - matrix_buffer_intro_bond = allocate_bytes_in_bank(0x80, 4); + matrix_buffer_rarelogo_0 = mempAllocBytesInBank(0x80, 4); + matrix_buffer_gunbarrel_0 = mempAllocBytesInBank(0x40, 4); + matrix_buffer_rarelogo_1 = mempAllocBytesInBank(0x80, 4); + matrix_buffer_rarelogo_2 = mempAllocBytesInBank(0x80, 4); + matrix_buffer_gunbarrel_1 = mempAllocBytesInBank(0x80, 4); + matrix_buffer_intro_backdrop = mempAllocBytesInBank(0x80, 4); + matrix_buffer_intro_bond = mempAllocBytesInBank(0x80, 4); } diff --git a/src/game/inititemslots.c b/src/game/inititemslots.c index 0dfdaad..7bbd555 100644 --- a/src/game/inititemslots.c +++ b/src/game/inititemslots.c @@ -48,7 +48,7 @@ glabel sub_GAME_7F0061F0 void alloc_additional_item_slots(s32 arg0) { // Node 0 pPlayer->unk11E8 = (s32) (arg0 + 0x1e); - pPlayer->unk11E4 = allocate_bytes_in_bank(((((pPlayer->unk11E8 * 0x14) + 0xf) | 0xf) ^ 0xf), 4); + pPlayer->unk11E4 = mempAllocBytesInBank(((((pPlayer->unk11E8 * 0x14) + 0xf) | 0xf) ^ 0xf), 4); reinit_BONDdata_inventory(); } @@ -71,7 +71,7 @@ glabel alloc_additional_item_slots /* 03ADBC 7F00628C 0019C880 */ sll $t9, $t9, 2 /* 03ADC0 7F006290 2724000F */ addiu $a0, $t9, 0xf /* 03ADC4 7F006294 3488000F */ ori $t0, $a0, 0xf -/* 03ADC8 7F006298 0C0025C8 */ jal allocate_bytes_in_bank +/* 03ADC8 7F006298 0C0025C8 */ jal mempAllocBytesInBank /* 03ADCC 7F00629C 3904000F */ xori $a0, $t0, 0xf /* 03ADD0 7F0062A0 3C0A8008 */ lui $t2, %hi(pPlayer) /* 03ADD4 7F0062A4 8D4AA0B0 */ lw $t2, %lo(pPlayer)($t2) diff --git a/src/game/initmenus.c b/src/game/initmenus.c index d4e720c..4f18d3c 100644 --- a/src/game/initmenus.c +++ b/src/game/initmenus.c @@ -54,13 +54,13 @@ glabel init_menus_or_reset /* 0358F4 7F000DC4 34848000 */ ori $a0, (0x00078000 & 0xFFFF) # ori $a0, $a0, 0x8000 /* 0358F8 7F000DC8 AC590000 */ sw $t9, ($v0) .L7F000DCC: -/* 0358FC 7F000DCC 0C0025C8 */ jal allocate_bytes_in_bank +/* 0358FC 7F000DCC 0C0025C8 */ jal mempAllocBytesInBank /* 035900 7F000DD0 24050004 */ li $a1, 4 /* 035904 7F000DD4 3C018003 */ lui $at, %hi(ptr_logo_and_walletbond_DL) /* 035908 7F000DD8 3C040004 */ lui $a0, (0x0004B040 >> 16) # lui $a0, 4 /* 03590C 7F000DDC AC22A950 */ sw $v0, %lo(ptr_logo_and_walletbond_DL)($at) /* 035910 7F000DE0 3484B040 */ ori $a0, (0x0004B040 & 0xFFFF) # ori $a0, $a0, 0xb040 -/* 035914 7F000DE4 0C0025C8 */ jal allocate_bytes_in_bank +/* 035914 7F000DE4 0C0025C8 */ jal mempAllocBytesInBank /* 035918 7F000DE8 24050004 */ li $a1, 4 /* 03591C 7F000DEC 3C038003 */ lui $v1, %hi(ptr_menu_videobuffer) /* 035920 7F000DF0 2449003F */ addiu $t1, $v0, 0x3f diff --git a/src/game/initmttex.c b/src/game/initmttex.c index 387d73f..186e663 100644 --- a/src/game/initmttex.c +++ b/src/game/initmttex.c @@ -38,7 +38,7 @@ glabel set_mt_tex_alloc .L7F007370: /* 03BEA0 7F007370 3C048005 */ lui $a0, %hi(bytes) /* 03BEA4 7F007374 8C849170 */ lw $a0, %lo(bytes)($a0) -/* 03BEA8 7F007378 0C0025C8 */ jal allocate_bytes_in_bank +/* 03BEA8 7F007378 0C0025C8 */ jal mempAllocBytesInBank /* 03BEAC 7F00737C 24050004 */ li $a1, 4 /* 03BEB0 7F007380 3C048009 */ lui $a0, %hi(ptr_texture_alloc_start) /* 03BEB4 7F007384 3C068005 */ lui $a2, %hi(bytes) diff --git a/src/game/initobjects.c b/src/game/initobjects.c index 09f6b94..3df32f2 100644 --- a/src/game/initobjects.c +++ b/src/game/initobjects.c @@ -119,7 +119,7 @@ glabel alloc_lookup_buffers /* 036100 7F0015D0 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 036104 7F0015D4 AFBF0014 */ sw $ra, 0x14($sp) /* 036108 7F0015D8 24040400 */ li $a0, 1024 -/* 03610C 7F0015DC 0C0025C8 */ jal allocate_bytes_in_bank +/* 03610C 7F0015DC 0C0025C8 */ jal mempAllocBytesInBank /* 036110 7F0015E0 24050004 */ li $a1, 4 /* 036114 7F0015E4 3C068004 */ lui $a2, %hi(MaxNumRooms) /* 036118 7F0015E8 3C018007 */ lui $at, %hi(ptr_list_object_lookup_indices) @@ -130,13 +130,13 @@ glabel alloc_lookup_buffers /* 03612C 7F0015FC 00047080 */ sll $t6, $a0, 2 /* 036130 7F001600 25C4000F */ addiu $a0, $t6, 0xf /* 036134 7F001604 348F000F */ ori $t7, $a0, 0xf -/* 036138 7F001608 0C0025C8 */ jal allocate_bytes_in_bank +/* 036138 7F001608 0C0025C8 */ jal mempAllocBytesInBank /* 03613C 7F00160C 39E4000F */ xori $a0, $t7, 0xf /* 036140 7F001610 3C078007 */ lui $a3, %hi(ptr_room_lookup_buffer_maybe) /* 036144 7F001614 24E71618 */ addiu $a3, %lo(ptr_room_lookup_buffer_maybe) # addiu $a3, $a3, 0x1618 /* 036148 7F001618 ACE20000 */ sw $v0, ($a3) /* 03614C 7F00161C 24042000 */ li $a0, 8192 -/* 036150 7F001620 0C0025C8 */ jal allocate_bytes_in_bank +/* 036150 7F001620 0C0025C8 */ jal mempAllocBytesInBank /* 036154 7F001624 24050004 */ li $a1, 4 /* 036158 7F001628 3C048007 */ lui $a0, %hi(dword_CODE_bss_8007161C) /* 03615C 7F00162C 2484161C */ addiu $a0, %lo(dword_CODE_bss_8007161C) # addiu $a0, $a0, 0x161c @@ -233,7 +233,7 @@ glabel reinit_between_menus /* 036284 7F001754 AFBF0014 */ sw $ra, 0x14($sp) /* 036288 7F001758 0FC00656 */ jal write_monitor_ani_control_blocks /* 03628C 7F00175C 00000000 */ nop -/* 036290 7F001760 0FC006C2 */ jal initialize_80071E00_to_80071E78 +/* 036290 7F001760 0FC006C2 */ jal initialize_temp_mine_table /* 036294 7F001764 00000000 */ nop /* 036298 7F001768 3C018003 */ lui $at, %hi(alarm_timer) /* 03629C 7F00176C AC200AC0 */ sw $zero, %lo(alarm_timer)($at) @@ -253,8 +253,8 @@ glabel reinit_between_menus /* 0362D4 7F0017A4 AC200ADC */ sw $zero, %lo(D_80030ADC)($at) /* 0362D8 7F0017A8 3C018003 */ lui $at, %hi(D_80030AE0) /* 0362DC 7F0017AC E4200AE0 */ swc1 $f0, %lo(D_80030AE0)($at) -/* 0362E0 7F0017B0 3C018003 */ lui $at, %hi(D_80030AE4) -/* 0362E4 7F0017B4 AC200AE4 */ sw $zero, %lo(D_80030AE4)($at) +/* 0362E0 7F0017B0 3C018003 */ lui $at, %hi(ptr_gas_sound) +/* 0362E4 7F0017B4 AC200AE4 */ sw $zero, %lo(ptr_gas_sound)($at) /* 0362E8 7F0017B8 24050001 */ li $a1, 1 /* 0362EC 7F0017BC 3C018003 */ lui $at, %hi(clock_drawn_flag) /* 0362F0 7F0017C0 AC250AE8 */ sw $a1, %lo(clock_drawn_flag)($at) @@ -526,21 +526,21 @@ glabel write_monitor_ani_control_blocks #endif #ifdef NONMATCHING -void initialize_80071E00_to_80071E78(void) { +void initialize_temp_mine_table(void) { } #else GLOBAL_ASM( .text -glabel initialize_80071E00_to_80071E78 -/* 036638 7F001B08 3C018007 */ lui $at, %hi(dword_CODE_bss_80071E00) -/* 03663C 7F001B0C AC201E00 */ sw $zero, %lo(dword_CODE_bss_80071E00)($at) -/* 036640 7F001B10 3C018007 */ lui $at, %hi(dword_CODE_bss_80071E04) -/* 036644 7F001B14 3C038007 */ lui $v1, %hi(dword_CODE_bss_80071E08) +glabel initialize_temp_mine_table +/* 036638 7F001B08 3C018007 */ lui $at, %hi(temp_mine_table) +/* 03663C 7F001B0C AC201E00 */ sw $zero, %lo(temp_mine_table)($at) +/* 036640 7F001B10 3C018007 */ lui $at, %hi(temp_mine_table+0x4) +/* 036644 7F001B14 3C038007 */ lui $v1, %hi(temp_mine_table+0x8) /* 036648 7F001B18 3C028007 */ lui $v0, %hi(gas_damage_flag) /* 03664C 7F001B1C 24421E78 */ addiu $v0, %lo(gas_damage_flag) # addiu $v0, $v0, 0x1e78 -/* 036650 7F001B20 24631E08 */ addiu $v1, %lo(dword_CODE_bss_80071E08) # addiu $v1, $v1, 0x1e08 -/* 036654 7F001B24 AC201E04 */ sw $zero, %lo(dword_CODE_bss_80071E04)($at) +/* 036650 7F001B20 24631E08 */ addiu $v1, %lo(temp_mine_table+0x8) # addiu $v1, $v1, 0x1e08 +/* 036654 7F001B24 AC201E04 */ sw $zero, %lo(temp_mine_table+0x4)($at) .L7F001B28: /* 036658 7F001B28 24630010 */ addiu $v1, $v1, 0x10 /* 03665C 7F001B2C AC60FFF4 */ sw $zero, -0xc($v1) diff --git a/src/game/initunk_005520.c b/src/game/initunk_005520.c index 9253034..6cbc8e6 100644 --- a/src/game/initunk_005520.c +++ b/src/game/initunk_005520.c @@ -40,7 +40,7 @@ glabel sub_GAME_7F005540 /* 03A09C 7F00556C AFB00014 */ sw $s0, 0x14($sp) /* 03A0A0 7F005570 AE8E0000 */ sw $t6, ($s4) /* 03A0A4 7F005574 000E2140 */ sll $a0, $t6, 5 -/* 03A0A8 7F005578 0C0025C8 */ jal allocate_bytes_in_bank +/* 03A0A8 7F005578 0C0025C8 */ jal mempAllocBytesInBank /* 03A0AC 7F00557C 24050004 */ li $a1, 4 /* 03A0B0 7F005580 8E980000 */ lw $t8, ($s4) /* 03A0B4 7F005584 3C128008 */ lui $s2, %hi(ptr_allocation_1) @@ -62,7 +62,7 @@ glabel sub_GAME_7F005540 /* 03A0F0 7F0055C0 10000009 */ b .L7F0055E8 /* 03A0F4 7F0055C4 AD400010 */ sw $zero, 0x10($t2) .L7F0055C8: -/* 03A0F8 7F0055C8 0C0025C8 */ jal allocate_bytes_in_bank +/* 03A0F8 7F0055C8 0C0025C8 */ jal mempAllocBytesInBank /* 03A0FC 7F0055CC 24050004 */ li $a1, 4 /* 03A100 7F0055D0 8E4B0000 */ lw $t3, ($s2) /* 03A104 7F0055D4 01706021 */ addu $t4, $t3, $s0 @@ -115,7 +115,7 @@ glabel sub_GAME_7F005624 /* 03A188 7F005658 AFB00014 */ sw $s0, 0x14($sp) /* 03A18C 7F00565C AE8E0000 */ sw $t6, ($s4) /* 03A190 7F005660 000F2180 */ sll $a0, $t7, 6 -/* 03A194 7F005664 0C0025C8 */ jal allocate_bytes_in_bank +/* 03A194 7F005664 0C0025C8 */ jal mempAllocBytesInBank /* 03A198 7F005668 24050004 */ li $a1, 4 /* 03A19C 7F00566C 8E980000 */ lw $t8, ($s4) /* 03A1A0 7F005670 3C128008 */ lui $s2, %hi(ptr_allocation_0) @@ -137,7 +137,7 @@ glabel sub_GAME_7F005624 /* 03A1DC 7F0056AC 10000009 */ b .L7F0056D4 /* 03A1E0 7F0056B0 AD400010 */ sw $zero, 0x10($t2) .L7F0056B4: -/* 03A1E4 7F0056B4 0C0025C8 */ jal allocate_bytes_in_bank +/* 03A1E4 7F0056B4 0C0025C8 */ jal mempAllocBytesInBank /* 03A1E8 7F0056B8 24050004 */ li $a1, 4 /* 03A1EC 7F0056BC 8E4B0000 */ lw $t3, ($s2) /* 03A1F0 7F0056C0 01706021 */ addu $t4, $t3, $s0 diff --git a/src/game/initunk_007180.c b/src/game/initunk_007180.c index ec98aa3..a4a5992 100644 --- a/src/game/initunk_007180.c +++ b/src/game/initunk_007180.c @@ -54,7 +54,7 @@ glabel sub_GAME_7F007180 /* 03BD44 7F007214 000840C0 */ sll $t0, $t0, 3 /* 03BD48 7F007218 2504000F */ addiu $a0, $t0, 0xf /* 03BD4C 7F00721C 00814824 */ and $t1, $a0, $at -/* 03BD50 7F007220 0C0025C8 */ jal allocate_bytes_in_bank +/* 03BD50 7F007220 0C0025C8 */ jal mempAllocBytesInBank /* 03BD54 7F007224 01202025 */ move $a0, $t1 /* 03BD58 7F007228 3C068008 */ lui $a2, %hi(dword_CODE_bss_8007A160) /* 03BD5C 7F00722C 24C6A160 */ addiu $a2, %lo(dword_CODE_bss_8007A160) # addiu $a2, $a2, -0x5ea0 diff --git a/src/game/intro_logos.c b/src/game/intro_logos.c index aafd76b..0421042 100644 --- a/src/game/intro_logos.c +++ b/src/game/intro_logos.c @@ -1713,7 +1713,7 @@ glabel sub_GAME_7F008E80 /* 03DB40 7F009010 8E040064 */ lw $a0, 0x64($s0) /* 03DB44 7F009014 0FC1D929 */ jal load_object_fill_header /* 03DB48 7F009018 8E050068 */ lw $a1, 0x68($s0) -/* 03DB4C 7F00901C 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 03DB4C 7F00901C 0FC2F462 */ jal get_pc_buffer_remaining_value /* 03DB50 7F009020 8E040068 */ lw $a0, 0x68($s0) /* 03DB54 7F009024 2443003F */ addiu $v1, $v0, 0x3f /* 03DB58 7F009028 8FA60060 */ lw $a2, 0x60($sp) @@ -1729,7 +1729,7 @@ glabel sub_GAME_7F008E80 /* 03DB80 7F009050 8E040618 */ lw $a0, 0x618($s0) /* 03DB84 7F009054 0FC1D929 */ jal load_object_fill_header /* 03DB88 7F009058 8E05061C */ lw $a1, 0x61c($s0) -/* 03DB8C 7F00905C 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 03DB8C 7F00905C 0FC2F462 */ jal get_pc_buffer_remaining_value /* 03DB90 7F009060 8E04061C */ lw $a0, 0x61c($s0) /* 03DB94 7F009064 2443003F */ addiu $v1, $v0, 0x3f /* 03DB98 7F009068 8FAC0064 */ lw $t4, 0x64($sp) @@ -1801,7 +1801,7 @@ glabel sub_GAME_7F008E80 /* 03DC98 7F009168 8FA60060 */ lw $a2, 0x60($sp) /* 03DC9C 7F00916C 0FC1D929 */ jal load_object_fill_header /* 03DCA0 7F009170 8FA70064 */ lw $a3, 0x64($sp) -/* 03DCA4 7F009174 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 03DCA4 7F009174 0FC2F462 */ jal get_pc_buffer_remaining_value /* 03DCA8 7F009178 8E0408F8 */ lw $a0, 0x8f8($s0) /* 03DCAC 7F00917C 2443003F */ addiu $v1, $v0, 0x3f /* 03DCB0 7F009180 8FAD0064 */ lw $t5, 0x64($sp) diff --git a/src/game/loadobjectmodel.c b/src/game/loadobjectmodel.c index 4489123..11fedc3 100644 --- a/src/game/loadobjectmodel.c +++ b/src/game/loadobjectmodel.c @@ -1,4 +1,7 @@ #include "ultra64.h" +#include "bondtypes.h" +#include "game/chrai.h" +#include "game/chrobjdata.h" #ifdef NONMATCHING void sub_GAME_7F056850(void) { @@ -6,25 +9,6 @@ void sub_GAME_7F056850(void) { } #else GLOBAL_ASM( -.late_rodata -/*D:80053490*/ -glabel jpt_object_setup_size -.word object_size_type_01 -.word object_size_type_02 -.word object_size_type_03 -.word object_size_type_04 -.word object_size_type_05 -.word object_size_type_06 -.word object_size_type_07 -.word object_size_type_08 -.word object_size_type_09 -.word object_size_type_0A -.word object_size_type_0B -.word object_size_type_0C -.word object_size_type_0D -/*.word object_size_type_0E*/ -/*.word object_size_type_default*/ -/*.word object_size_type_default*/ .text glabel sub_GAME_7F056850 /* 08B380 7F056850 27BDFFD0 */ addiu $sp, $sp, -0x30 @@ -75,261 +59,103 @@ glabel sub_GAME_7F056850 +// - -#ifdef NONMATCHING -s16 get_size_of_setup_object_type(void) { - +u32 get_size_of_setup_object_type(u8 * object) +{ + switch(object[3]) { + case 9: + return 7; + case 1: + return 0x40; + case 2: + return 2; + case 3: + return 0x20; + case 0x2a: + return 0x20; + case 0x2f: + return 0x25; + case 0x2b: + return 0x20; + case 0x24: + return 0x20; + case 4: + return 0x21; + case 5: + return 0x20; + case 6: + return 0x3b; + case 7: + return 0x21; + case 8: + return 0x22; + case 10: + return 0x40; + case 0xb: + return 0x95; + case 0xc: + return 0x20; + case 0xd: + return 0x36; + case 0xe: + return 3; + case 0x11: + return 0x20; + case 0x12: + return 3; + case 0x13: + return 4; + case 0x2c: + return 5; + case 0x14: + return 0x2d; + case 0x15: + return 0x22; + case 0x16: + return 4; + case 0x25: + return 10; + case 0x17: + return 4; + case 0x18: + return 1; + case 0x19: + return 2; + case 0x1a: + return 2; + case 0x1b: + return 2; + case 0x1c: + return 2; + case 0x1d: + return 2; + case 0x1e: + return 4; + case 0x1f: + return 1; + case 0x20: + return 4; + case 0x21: + return 5; + case 0x22: + return 1; + case 0x23: + return 4; + case 0x26: + return 4; + case 0x27: + return 0x2c; + case 0x28: + return 0x2d; + case 0x2d: + return 0x38; + case 0x2e: + return 7; + default: + return 1; + } } -#else -GLOBAL_ASM( -.late_rodata -/*D:80053490*/ -/*glabel jpt_object_setup_size*/ -/*.word object_size_type_01*/ -/*.word object_size_type_02*/ -/*.word object_size_type_03*/ -/*.word object_size_type_04*/ -/*.word object_size_type_05*/ -/*.word object_size_type_06*/ -/*.word object_size_type_07*/ -/*.word object_size_type_08*/ -/*.word object_size_type_09*/ -/*.word object_size_type_0A*/ -/*.word object_size_type_0B*/ -/*.word object_size_type_0C*/ -/*.word object_size_type_0D*/ -.word object_size_type_0E -.word object_size_type_default -.word object_size_type_default -.word object_size_type_11 -.word object_size_type_12 -.word object_size_type_13 -.word object_size_type_14 -.word object_size_type_15 -.word object_size_type_16 -.word object_size_type_17 -.word object_size_type_18 -.word object_size_type_19 -.word object_size_type_1A -.word object_size_type_1B -.word object_size_type_1C -.word object_size_type_1D -.word object_size_type_1E -.word object_size_type_1F -.word object_size_type_20 -.word object_size_type_21 -.word object_size_type_22 -.word object_size_type_23 -.word object_size_type_24 -.word object_size_type_25 -.word object_size_type_26 -.word object_size_type_27 -.word object_size_type_28 -.word object_size_type_default -.word object_size_type_2A -.word object_size_type_2B -.word object_size_type_2C -.word object_size_type_2D -.word object_size_type_2E -/*.word object_size_type_2F*/ - -.text -glabel get_size_of_setup_object_type -/* 08B424 7F0568F4 908E0003 */ lbu $t6, 3($a0) -/* 08B428 7F0568F8 25CFFFFF */ addiu $t7, $t6, -1 -/* 08B42C 7F0568FC 2DE1002F */ sltiu $at, $t7, 0x2f -/* 08B430 7F056900 1020005E */ beqz $at, .L7F056A7C -/* 08B434 7F056904 000F7880 */ sll $t7, $t7, 2 -/* 08B438 7F056908 3C018005 */ lui $at, %hi(jpt_object_setup_size) -/* 08B43C 7F05690C 002F0821 */ addu $at, $at, $t7 -/* 08B440 7F056910 8C2F3490 */ lw $t7, %lo(jpt_object_setup_size)($at) -/* 08B444 7F056914 01E00008 */ jr $t7 -/* 08B448 7F056918 00000000 */ nop -object_size_type_09: -/* 08B44C 7F05691C 03E00008 */ jr $ra -/* 08B450 7F056920 24020007 */ li $v0, 7 - -object_size_type_01: -/* 08B454 7F056924 03E00008 */ jr $ra -/* 08B458 7F056928 24020040 */ li $v0, 64 - -object_size_type_02: -/* 08B45C 7F05692C 03E00008 */ jr $ra -/* 08B460 7F056930 24020002 */ li $v0, 2 - -object_size_type_03: -/* 08B464 7F056934 03E00008 */ jr $ra -/* 08B468 7F056938 24020020 */ li $v0, 32 - -object_size_type_2A: -/* 08B46C 7F05693C 03E00008 */ jr $ra -/* 08B470 7F056940 24020020 */ li $v0, 32 - -object_size_type_2F: -/* 08B474 7F056944 03E00008 */ jr $ra -/* 08B478 7F056948 24020025 */ li $v0, 37 - -object_size_type_2B: -/* 08B47C 7F05694C 03E00008 */ jr $ra -/* 08B480 7F056950 24020020 */ li $v0, 32 - -object_size_type_24: -/* 08B484 7F056954 03E00008 */ jr $ra -/* 08B488 7F056958 24020020 */ li $v0, 32 - -object_size_type_04: -/* 08B48C 7F05695C 03E00008 */ jr $ra -/* 08B490 7F056960 24020021 */ li $v0, 33 - -object_size_type_05: -/* 08B494 7F056964 03E00008 */ jr $ra -/* 08B498 7F056968 24020020 */ li $v0, 32 - -object_size_type_06: -/* 08B49C 7F05696C 03E00008 */ jr $ra -/* 08B4A0 7F056970 2402003B */ li $v0, 59 - -object_size_type_07: -/* 08B4A4 7F056974 03E00008 */ jr $ra -/* 08B4A8 7F056978 24020021 */ li $v0, 33 - -object_size_type_08: -/* 08B4AC 7F05697C 03E00008 */ jr $ra -/* 08B4B0 7F056980 24020022 */ li $v0, 34 - -object_size_type_0A: -/* 08B4B4 7F056984 03E00008 */ jr $ra -/* 08B4B8 7F056988 24020040 */ li $v0, 64 - -object_size_type_0B: -/* 08B4BC 7F05698C 03E00008 */ jr $ra -/* 08B4C0 7F056990 24020095 */ li $v0, 149 - -object_size_type_0C: -/* 08B4C4 7F056994 03E00008 */ jr $ra -/* 08B4C8 7F056998 24020020 */ li $v0, 32 - -object_size_type_0D: -/* 08B4CC 7F05699C 03E00008 */ jr $ra -/* 08B4D0 7F0569A0 24020036 */ li $v0, 54 - -object_size_type_0E: -/* 08B4D4 7F0569A4 03E00008 */ jr $ra -/* 08B4D8 7F0569A8 24020003 */ li $v0, 3 - -object_size_type_11: -/* 08B4DC 7F0569AC 03E00008 */ jr $ra -/* 08B4E0 7F0569B0 24020020 */ li $v0, 32 - -object_size_type_12: -/* 08B4E4 7F0569B4 03E00008 */ jr $ra -/* 08B4E8 7F0569B8 24020003 */ li $v0, 3 - -object_size_type_13: -/* 08B4EC 7F0569BC 03E00008 */ jr $ra -/* 08B4F0 7F0569C0 24020004 */ li $v0, 4 - -object_size_type_2C: -/* 08B4F4 7F0569C4 03E00008 */ jr $ra -/* 08B4F8 7F0569C8 24020005 */ li $v0, 5 - -object_size_type_14: -/* 08B4FC 7F0569CC 03E00008 */ jr $ra -/* 08B500 7F0569D0 2402002D */ li $v0, 45 - -object_size_type_15: -/* 08B504 7F0569D4 03E00008 */ jr $ra -/* 08B508 7F0569D8 24020022 */ li $v0, 34 - -object_size_type_16: -/* 08B50C 7F0569DC 03E00008 */ jr $ra -/* 08B510 7F0569E0 24020004 */ li $v0, 4 - -object_size_type_25: -/* 08B514 7F0569E4 03E00008 */ jr $ra -/* 08B518 7F0569E8 2402000A */ li $v0, 10 - -object_size_type_17: -/* 08B51C 7F0569EC 03E00008 */ jr $ra -/* 08B520 7F0569F0 24020004 */ li $v0, 4 - -object_size_type_18: -/* 08B524 7F0569F4 03E00008 */ jr $ra -/* 08B528 7F0569F8 24020001 */ li $v0, 1 - -object_size_type_19: -/* 08B52C 7F0569FC 03E00008 */ jr $ra -/* 08B530 7F056A00 24020002 */ li $v0, 2 - -object_size_type_1A: -/* 08B534 7F056A04 03E00008 */ jr $ra -/* 08B538 7F056A08 24020002 */ li $v0, 2 - -object_size_type_1B: -/* 08B53C 7F056A0C 03E00008 */ jr $ra -/* 08B540 7F056A10 24020002 */ li $v0, 2 - -object_size_type_1C: -/* 08B544 7F056A14 03E00008 */ jr $ra -/* 08B548 7F056A18 24020002 */ li $v0, 2 - -object_size_type_1D: -/* 08B54C 7F056A1C 03E00008 */ jr $ra -/* 08B550 7F056A20 24020002 */ li $v0, 2 - -object_size_type_1E: -/* 08B554 7F056A24 03E00008 */ jr $ra -/* 08B558 7F056A28 24020004 */ li $v0, 4 - -object_size_type_1F: -/* 08B55C 7F056A2C 03E00008 */ jr $ra -/* 08B560 7F056A30 24020001 */ li $v0, 1 - -object_size_type_20: -/* 08B564 7F056A34 03E00008 */ jr $ra -/* 08B568 7F056A38 24020004 */ li $v0, 4 - -object_size_type_21: -/* 08B56C 7F056A3C 03E00008 */ jr $ra -/* 08B570 7F056A40 24020005 */ li $v0, 5 - -object_size_type_22: -/* 08B574 7F056A44 03E00008 */ jr $ra -/* 08B578 7F056A48 24020001 */ li $v0, 1 - -object_size_type_23: -/* 08B57C 7F056A4C 03E00008 */ jr $ra -/* 08B580 7F056A50 24020004 */ li $v0, 4 - -object_size_type_26: -/* 08B584 7F056A54 03E00008 */ jr $ra -/* 08B588 7F056A58 24020004 */ li $v0, 4 - -object_size_type_27: -/* 08B58C 7F056A5C 03E00008 */ jr $ra -/* 08B590 7F056A60 2402002C */ li $v0, 44 - -object_size_type_28: -/* 08B594 7F056A64 03E00008 */ jr $ra -/* 08B598 7F056A68 2402002D */ li $v0, 45 - -object_size_type_2D: -/* 08B59C 7F056A6C 03E00008 */ jr $ra -/* 08B5A0 7F056A70 24020038 */ li $v0, 56 - -object_size_type_2E: -/* 08B5A4 7F056A74 03E00008 */ jr $ra -/* 08B5A8 7F056A78 24020007 */ li $v0, 7 - -object_size_type_default: -.L7F056A7C: -/* 08B5AC 7F056A7C 24020001 */ li $v0, 1 -/* 08B5B0 7F056A80 03E00008 */ jr $ra -/* 08B5B4 7F056A84 00000000 */ nop -) -#endif - @@ -340,10 +166,6 @@ void sub_GAME_7F056A88(void) { } #else GLOBAL_ASM( -.late_rodata -/*hack for above*/ -.word object_size_type_2F - .text glabel sub_GAME_7F056A88 /* 08B5B8 7F056A88 27BDFFD8 */ addiu $sp, $sp, -0x28 @@ -395,13 +217,29 @@ glabel sub_GAME_7F056A88 #ifdef NONMATCHING -void sub_GAME_7F056B1C(void) { - +s32 check_if_object_type_has_been_loaded(struct object_standard * arg0) +{ + struct object_standard *object; + s32 i; + + if (ptr_setup_objects != 0) + { + for (object = ptr_setup_objects, i = 0; 0x30 != object->type; i++) + { + if (object == arg0) + { + return i; + } + object = (get_size_of_setup_object_type((u8 *)object) * 4) + object; + } + } + return -1; } + #else GLOBAL_ASM( .text -glabel sub_GAME_7F056B1C +glabel check_if_object_type_has_been_loaded /* 08B64C 7F056B1C 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 08B650 7F056B20 AFB00014 */ sw $s0, 0x14($sp) /* 08B654 7F056B24 3C108007 */ lui $s0, %hi(ptr_setup_objects) @@ -504,8 +342,16 @@ glabel sub_GAME_7F056BA8 #ifdef NONMATCHING -void load_model(void) { - +u32 load_model(u32 modelid) +{ + struct p_itementry fileentry = PitemZ_entries[modelid]; + if (fileentry.header == 0) + { + load_object_into_memory(PitemZ_entries[modelid].header, PitemZ_entries[modelid].filename); + set_objuse_flag_compute_grp_nums_set_obj_loaded(PitemZ_entries[modelid].header); + return 1; + } + return 0; } #else GLOBAL_ASM( diff --git a/src/game/lvl.c b/src/game/lvl.c index 7e59561..b2c2188 100644 --- a/src/game/lvl.c +++ b/src/game/lvl.c @@ -29,14 +29,14 @@ s32 current_stage_to_load = 0; //D:80048368 f32 D_80048368 = 1.0; //D:8004836C -s32 D_8004836C = 0; +s32 musictrack1_playing = 0; //D:80048370 s32 controls_locked_flag = 0; //D:80048374 s32 clock_timer = 0; #ifdef VERSION_US //D:80048378 -s32 global_timer_delta = 0; +f32 global_timer_delta = 0; //D:8004837C s32 global_timer = 0; //D:80048380 @@ -44,12 +44,12 @@ s32 D_80048380 = 0; //D:80048384 #endif #ifdef VERSION_JP -u32 D_jpunk = 0; +u32 jp_global_timer_delta = 0; //D:8004837C s32 global_timer = 0; //D:80048380 s32 D_80048380 = 0; -s32 global_timer_delta = 0; +f32 global_timer_delta = 0; #endif //D:80048384 @@ -154,19 +154,13 @@ void sub_GAME_7F0BD8FC(s32 arg0) { #ifdef NONMATCHING -void something_with_lvl_c_debug(void) { - s32 temp_a2; - ? temp_ret; - - // Node 0 - get_ptr_debug_notice_list_entry(&lvl_c_debug_notice_list, &aLv_c_debug); - temp_a2 = (&_jfontdlSegmentEnd - &_jfontdlSegmentStart); +void something_with_lvl_c_debug(void) +{ + get_ptr_debug_notice_list_entry(&lvl_c_debug_notice_list, "lv_c_debug"); lvl_c_debug_notice_list = 1; - temp_ret = allocate_bytes_in_bank(temp_a2, 6, temp_a2); - ptr_jfont_DL = temp_ret; - romCopy(temp_ret, &_jfontdlSegmentStart, sp18); + ptr_jfont_DL = mempAllocBytesInBank(0xc0,'\x06'); + romCopy(ptr_jfont_DL, _jfontdlSegmentStart, 0xc0); } - #else GLOBAL_ASM( .text @@ -188,7 +182,7 @@ glabel something_with_lvl_c_debug /* 0F2470 7F0BD940 AC2E8360 */ sw $t6, %lo(lvl_c_debug_notice_list)($at) /* 0F2474 7F0BD944 00C02025 */ move $a0, $a2 /* 0F2478 7F0BD948 AFA60018 */ sw $a2, 0x18($sp) -/* 0F247C 7F0BD94C 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F247C 7F0BD94C 0C0025C8 */ jal mempAllocBytesInBank /* 0F2480 7F0BD950 24050006 */ li $a1, 6 /* 0F2484 7F0BD954 3C038009 */ lui $v1, %hi(ptr_jfont_DL) /* 0F2488 7F0BD958 2463C260 */ addiu $v1, %lo(ptr_jfont_DL) # addiu $v1, $v1, -0x3da0 @@ -210,13 +204,10 @@ glabel something_with_lvl_c_debug #ifdef NONMATCHING -void sub_GAME_7F0BD984(void) { - s32 temp_a0; - - // Node 0 - temp_a0 = ((get_random_value() % 0x3dU) + 2); - D_8004836C = temp_a0; - return musicTrack1Play(temp_a0); +void playrandommusictrack1(void) +{ + musictrack1_playing = get_random_value() % 0x3d + M_INTRO; + musicTrack1Play(musictrack1_playing); } #else GLOBAL_ASM( @@ -229,8 +220,8 @@ glabel sub_GAME_7F0BD984 /* 0F24C4 7F0BD994 2401003D */ li $at, 61 /* 0F24C8 7F0BD998 0041001B */ divu $zero, $v0, $at /* 0F24CC 7F0BD99C 00007010 */ mfhi $t6 -/* 0F24D0 7F0BD9A0 3C038005 */ lui $v1, %hi(D_8004836C) -/* 0F24D4 7F0BD9A4 2463836C */ addiu $v1, %lo(D_8004836C) # addiu $v1, $v1, -0x7c94 +/* 0F24D0 7F0BD9A0 3C038005 */ lui $v1, %hi(musictrack1_playing) +/* 0F24D4 7F0BD9A4 2463836C */ addiu $v1, %lo(musictrack1_playing) # addiu $v1, $v1, -0x7c94 /* 0F24D8 7F0BD9A8 25C40002 */ addiu $a0, $t6, 2 /* 0F24DC 7F0BD9AC 0C001B9F */ jal musicTrack1Play /* 0F24E0 7F0BD9B0 AC640000 */ sw $a0, ($v1) @@ -246,18 +237,18 @@ glabel sub_GAME_7F0BD984 #ifdef NONMATCHING -void sub_GAME_7F0BD9C4(s32 arg0) { - // Node 0 - D_8004836C = arg0; - return musicTrack1Play(); +void playmusictrack1(MUSIC_TRACKS track) +{ + musictrack1_playing = track; + musicTrack1Play(track); } #else GLOBAL_ASM( .text -glabel sub_GAME_7F0BD9C4 +glabel playmusictrack1 /* 0F24F4 7F0BD9C4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F24F8 7F0BD9C8 3C028005 */ lui $v0, %hi(D_8004836C) -/* 0F24FC 7F0BD9CC 2442836C */ addiu $v0, %lo(D_8004836C) # addiu $v0, $v0, -0x7c94 +/* 0F24F8 7F0BD9C8 3C028005 */ lui $v0, %hi(musictrack1_playing) +/* 0F24FC 7F0BD9CC 2442836C */ addiu $v0, %lo(musictrack1_playing) # addiu $v0, $v0, -0x7c94 /* 0F2500 7F0BD9D0 AFBF0014 */ sw $ra, 0x14($sp) /* 0F2504 7F0BD9D4 0C001B9F */ jal musicTrack1Play /* 0F2508 7F0BD9D8 AC440000 */ sw $a0, ($v0) @@ -273,29 +264,21 @@ glabel sub_GAME_7F0BD9C4 #ifdef NONMATCHING -void sub_GAME_7F0BD9EC(void) { - s32 temp_hi; - s32 phi_a0; +void music_append_play_solo_death_short(void) - // Node 0 - temp_hi = ((s32) (D_8004836C + 1) % 0x3f); - D_8004836C = temp_hi; - phi_a0 = temp_hi; - if (temp_hi == 0) - { - // Node 1 - D_8004836C = 1; - phi_a0 = 1; +{ + musictrack1_playing = (musictrack1_playing + M_SHORT_SOLO_DEATH) % 0x3f; + if (musictrack1_playing == M_NONE) { + musictrack1_playing = M_SHORT_SOLO_DEATH; } - // Node 2 - return musicTrack1Play(phi_a0); + musicTrack1Play(musictrack1_playing); } #else GLOBAL_ASM( .text -glabel sub_GAME_7F0BD9EC -/* 0F251C 7F0BD9EC 3C028005 */ lui $v0, %hi(D_8004836C) -/* 0F2520 7F0BD9F0 2442836C */ addiu $v0, %lo(D_8004836C) # addiu $v0, $v0, -0x7c94 +glabel music_append_play_solo_death_short +/* 0F251C 7F0BD9EC 3C028005 */ lui $v0, %hi(musictrack1_playing) +/* 0F2520 7F0BD9F0 2442836C */ addiu $v0, %lo(musictrack1_playing) # addiu $v0, $v0, -0x7c94 /* 0F2524 7F0BD9F4 8C4E0000 */ lw $t6, ($v0) /* 0F2528 7F0BD9F8 2401003F */ li $at, 63 /* 0F252C 7F0BD9FC 27BDFFE8 */ addiu $sp, $sp, -0x18 @@ -322,29 +305,20 @@ glabel sub_GAME_7F0BD9EC #ifdef NONMATCHING -void sub_GAME_7F0BDA38(void) { - s32 temp_hi; - s32 phi_a0; - - // Node 0 - temp_hi = ((s32) (D_8004836C + 0x3e) % 0x3f); - D_8004836C = temp_hi; - phi_a0 = temp_hi; - if (temp_hi == 0) - { - // Node 1 - D_8004836C = 0x3e; - phi_a0 = 0x3e; +void music_append_play_endtheme(void) +{ + musictrack1_playing = (musictrack1_playing + M_END_SOMETHING) % 0x3f; + if (musictrack1_playing == M_NONE) { + musictrack1_playing = M_END_SOMETHING; } - // Node 2 - return musicTrack1Play(phi_a0); + musicTrack1Play(musictrack1_playing); } #else GLOBAL_ASM( .text -glabel sub_GAME_7F0BDA38 -/* 0F2568 7F0BDA38 3C028005 */ lui $v0, %hi(D_8004836C) -/* 0F256C 7F0BDA3C 2442836C */ addiu $v0, %lo(D_8004836C) # addiu $v0, $v0, -0x7c94 +glabel music_append_play_endtheme +/* 0F2568 7F0BDA38 3C028005 */ lui $v0, %hi(musictrack1_playing) +/* 0F256C 7F0BDA3C 2442836C */ addiu $v0, %lo(musictrack1_playing) # addiu $v0, $v0, -0x7c94 /* 0F2570 7F0BDA40 8C4E0000 */ lw $t6, ($v0) /* 0F2574 7F0BDA44 2401003F */ li $at, 63 /* 0F2578 7F0BDA48 27BDFFE8 */ addiu $sp, $sp, -0x18 @@ -371,7 +345,7 @@ glabel sub_GAME_7F0BDA38 void sub_GAME_7F0BDA84(void) { - sub_GAME_7F0BD9C4(sub_GAME_7F0D2720(current_stage_to_load)); + playmusictrack1(getmusictrack_or_randomtrack(current_stage_to_load)); } @@ -486,11 +460,11 @@ glabel stage_load /* 0F2750 7F0BDC20 92290000 */ lbu $t1, ($s1) /* 0F2754 7F0BDC24 51200008 */ beql $t1, $zero, .L7F0BDC48 /* 0F2758 7F0BDC28 26100001 */ addiu $s0, $s0, 1 -/* 0F275C 7F0BDC2C 0FC24697 */ jal sub_GAME_7F091A5C +/* 0F275C 7F0BDC2C 0FC24697 */ jal is_cheat_index_equal_to_1C /* 0F2760 7F0BDC30 02002025 */ move $a0, $s0 /* 0F2764 7F0BDC34 50400004 */ beql $v0, $zero, .L7F0BDC48 /* 0F2768 7F0BDC38 26100001 */ addiu $s0, $s0, 1 -/* 0F276C 7F0BDC3C 0FC246AB */ jal sub_GAME_7F091AAC +/* 0F276C 7F0BDC3C 0FC246AB */ jal turn_on_cheat_for_players /* 0F2770 7F0BDC40 02002025 */ move $a0, $s0 /* 0F2774 7F0BDC44 26100001 */ addiu $s0, $s0, 1 .L7F0BDC48: @@ -499,10 +473,10 @@ glabel stage_load /* 0F2780 7F0BDC50 3C048005 */ lui $a0, %hi(current_stage_to_load) /* 0F2784 7F0BDC54 8C848364 */ lw $a0, %lo(current_stage_to_load)($a0) .L7F0BDC58: -/* 0F2788 7F0BDC58 0FC2D049 */ jal sub_GAME_7F0B4124 +/* 0F2788 7F0BDC58 0FC2D049 */ jal load_bg_file /* 0F278C 7F0BDC5C 00000000 */ nop /* 0F2790 7F0BDC60 3C048005 */ lui $a0, %hi(current_stage_to_load) -/* 0F2794 7F0BDC64 0FC2510B */ jal sub_GAME_7F09442C +/* 0F2794 7F0BDC64 0FC2510B */ jal store_stagenum_to_copyof_stagenum /* 0F2798 7F0BDC68 8C848364 */ lw $a0, %lo(current_stage_to_load)($a0) /* 0F279C 7F0BDC6C 0FC2921A */ jal init_watch_at_start_of_stage /* 0F27A0 7F0BDC70 00000000 */ nop @@ -702,8 +676,8 @@ glabel stage_load /* 0F31FC 7F0BE68C AC2083A0 */ sw $zero, %lo(controls_locked_flag)($at) /* 0F3200 7F0BE690 263183A4 */ addiu $s1, %lo(clock_timer) # addiu $s1, $s1, -0x7c5c /* 0F3204 7F0BE694 AE220000 */ sw $v0, ($s1) -/* 0F3208 7F0BE698 3C018005 */ lui $at, %hi(D_jpunk) # $at, 0x8005 -/* 0F320C 7F0BE69C E42C83A8 */ swc1 $f12, %lo(D_jpunk)($at) +/* 0F3208 7F0BE698 3C018005 */ lui $at, %hi(jp_global_timer_delta) # $at, 0x8005 +/* 0F320C 7F0BE69C E42C83A8 */ swc1 $f12, %lo(jp_global_timer_delta)($at) /* 0F3210 7F0BE6A0 3C018005 */ lui $at, %hi(D_80048380) # $at, 0x8005 /* 0F3214 7F0BE6A4 AC2083B0 */ sw $zero, %lo(D_80048380)($at) /* 0F3218 7F0BE6A8 3C018005 */ lui $at, %hi(global_timer) # $at, 0x8005 @@ -791,11 +765,11 @@ glabel stage_load /* 0F3350 7F0BE7E0 92290000 */ lbu $t1, ($s1) /* 0F3354 7F0BE7E4 51200008 */ beql $t1, $zero, .Ljp7F0BE808 /* 0F3358 7F0BE7E8 26100001 */ addiu $s0, $s0, 1 -/* 0F335C 7F0BE7EC 0FC2494F */ jal sub_GAME_7F091A5C +/* 0F335C 7F0BE7EC 0FC2494F */ jal is_cheat_index_equal_to_1C /* 0F3360 7F0BE7F0 02002025 */ move $a0, $s0 /* 0F3364 7F0BE7F4 50400004 */ beql $v0, $zero, .Ljp7F0BE808 /* 0F3368 7F0BE7F8 26100001 */ addiu $s0, $s0, 1 -/* 0F336C 7F0BE7FC 0FC24963 */ jal sub_GAME_7F091AAC +/* 0F336C 7F0BE7FC 0FC24963 */ jal turn_on_cheat_for_players /* 0F3370 7F0BE800 02002025 */ move $a0, $s0 /* 0F3374 7F0BE804 26100001 */ addiu $s0, $s0, 1 .Ljp7F0BE808: @@ -804,10 +778,10 @@ glabel stage_load /* 0F3380 7F0BE810 3C048005 */ lui $a0, %hi(current_stage_to_load) # $a0, 0x8005 /* 0F3384 7F0BE814 8C848394 */ lw $a0, %lo(current_stage_to_load)($a0) .Ljp7F0BE818: -/* 0F3388 7F0BE818 0FC2D335 */ jal sub_GAME_7F0B4124 +/* 0F3388 7F0BE818 0FC2D335 */ jal load_bg_file /* 0F338C 7F0BE81C 00000000 */ nop /* 0F3390 7F0BE820 3C048005 */ lui $a0, %hi(current_stage_to_load) # $a0, 0x8005 -/* 0F3394 7F0BE824 0FC253F3 */ jal sub_GAME_7F09442C +/* 0F3394 7F0BE824 0FC253F3 */ jal store_stagenum_to_copyof_stagenum /* 0F3398 7F0BE828 8C848394 */ lw $a0, %lo(current_stage_to_load)($a0) /* 0F339C 7F0BE82C 0FC29502 */ jal init_watch_at_start_of_stage /* 0F33A0 7F0BE830 00000000 */ nop @@ -1424,7 +1398,7 @@ glabel sub_GAME_7F0BE30C /* 0F302C 7F0BE4FC 0C00112F */ jal set_video2_ulx_uly /* 0F3030 7F0BE500 844507F6 */ lh $a1, 0x7f6($v0) /* 0F3034 7F0BE504 8E0E0000 */ lw $t6, ($s0) -/* 0F3038 7F0BE508 0C001151 */ jal video_related_1F +/* 0F3038 7F0BE508 0C001151 */ jal setvideo_far /* 0F303C 7F0BE50C C5CC11D0 */ lwc1 $f12, 0x11d0($t6) /* 0F3040 7F0BE510 8E0F0000 */ lw $t7, ($s0) /* 0F3044 7F0BE514 0C001164 */ jal video_related_21 @@ -1616,7 +1590,7 @@ glabel sub_GAME_7F0BE30C /* 0F3300 7F0BE7D0 0FC2800D */ jal sub_GAME_7F0A0034 /* 0F3304 7F0BE7D4 00402025 */ move $a0, $v0 /* 0F3308 7F0BE7D8 AFA20060 */ sw $v0, 0x60($sp) -/* 0F330C 7F0BE7DC 0FC249EF */ jal sub_GAME_7F0927BC +/* 0F330C 7F0BE7DC 0FC249EF */ jal cheatCheckIfOn /* 0F3310 7F0BE7E0 2404000B */ li $a0, 11 /* 0F3314 7F0BE7E4 10400003 */ beqz $v0, .L7F0BE7F4 /* 0F3318 7F0BE7E8 00000000 */ nop @@ -1817,7 +1791,7 @@ glabel sub_GAME_7F0BE30C /* 0F3C2C 7F0BF0BC 0C00112F */ jal set_video2_ulx_uly /* 0F3C30 7F0BF0C0 844507F6 */ lh $a1, 0x7f6($v0) /* 0F3C34 7F0BF0C4 8E0E0000 */ lw $t6, ($s0) -/* 0F3C38 7F0BF0C8 0C001151 */ jal video_related_1F +/* 0F3C38 7F0BF0C8 0C001151 */ jal setvideo_far /* 0F3C3C 7F0BF0CC C5CC11D0 */ lwc1 $f12, 0x11d0($t6) /* 0F3C40 7F0BF0D0 8E0F0000 */ lw $t7, ($s0) /* 0F3C44 7F0BF0D4 0C001164 */ jal video_related_21 @@ -2009,7 +1983,7 @@ glabel sub_GAME_7F0BE30C /* 0F3F00 7F0BF390 0FC282F6 */ jal sub_GAME_7F0A0034 /* 0F3F04 7F0BF394 00402025 */ move $a0, $v0 /* 0F3F08 7F0BF398 AFA20060 */ sw $v0, 0x60($sp) -/* 0F3F0C 7F0BF39C 0FC24CCF */ jal sub_GAME_7F0927BC +/* 0F3F0C 7F0BF39C 0FC24CCF */ jal cheatCheckIfOn /* 0F3F10 7F0BF3A0 2404000B */ li $a0, 11 /* 0F3F14 7F0BF3A4 1040000C */ beqz $v0, .Ljp7F0BF3D8 /* 0F3F18 7F0BF3A8 00000000 */ nop @@ -2589,13 +2563,13 @@ glabel manage_mp_game /* 0F3790 7F0BEC60 51E0000D */ beql $t7, $zero, .L7F0BEC98 /* 0F3794 7F0BEC64 24840001 */ addiu $a0, $a0, 1 /* 0F3798 7F0BEC68 AFA3001C */ sw $v1, 0x1c($sp) -/* 0F379C 7F0BEC6C 0FC24697 */ jal sub_GAME_7F091A5C +/* 0F379C 7F0BEC6C 0FC24697 */ jal is_cheat_index_equal_to_1C /* 0F37A0 7F0BEC70 AFA40194 */ sw $a0, 0x194($sp) /* 0F37A4 7F0BEC74 8FA3001C */ lw $v1, 0x1c($sp) /* 0F37A8 7F0BEC78 14400006 */ bnez $v0, .L7F0BEC94 /* 0F37AC 7F0BEC7C 8FA40194 */ lw $a0, 0x194($sp) /* 0F37B0 7F0BEC80 AFA3001C */ sw $v1, 0x1c($sp) -/* 0F37B4 7F0BEC84 0FC246AB */ jal sub_GAME_7F091AAC +/* 0F37B4 7F0BEC84 0FC246AB */ jal turn_on_cheat_for_players /* 0F37B8 7F0BEC88 AFA40194 */ sw $a0, 0x194($sp) /* 0F37BC 7F0BEC8C 8FA3001C */ lw $v1, 0x1c($sp) /* 0F37C0 7F0BEC90 8FA40194 */ lw $a0, 0x194($sp) @@ -3064,7 +3038,7 @@ glabel manage_mp_game /* 0F3E60 7F0BF330 2401005A */ li $at, 90 /* 0F3E64 7F0BF334 17210009 */ bne $t9, $at, .L7F0BF35C /* 0F3E68 7F0BF338 00000000 */ nop -/* 0F3E6C 7F0BF33C 0FC2464F */ jal sub_GAME_7F09193C +/* 0F3E6C 7F0BF33C 0FC2464F */ jal cheat_buttons_mp_related /* 0F3E70 7F0BF340 00000000 */ nop /* 0F3E74 7F0BF344 0FC06987 */ jal menu_init /* 0F3E78 7F0BF348 00000000 */ nop @@ -3106,7 +3080,7 @@ glabel manage_mp_game /* 0F3F04 7F0BF3D4 24043000 */ li $a0, 12288 /* 0F3F08 7F0BF3D8 17000048 */ bnez $t8, .L7F0BF4FC /* 0F3F0C 7F0BF3DC 00000000 */ nop -/* 0F3F10 7F0BF3E0 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F3F10 7F0BF3E0 0C0025C8 */ jal mempAllocBytesInBank /* 0F3F14 7F0BF3E4 24050004 */ li $a1, 4 /* 0F3F18 7F0BF3E8 3C068005 */ lui $a2, %hi(D_800483C8) /* 0F3F1C 7F0BF3EC 24C683C8 */ addiu $a2, %lo(D_800483C8) # addiu $a2, $a2, -0x7c38 @@ -3310,7 +3284,7 @@ glabel manage_mp_game /* 0F41F8 7F0BF6C8 24050202 */ li $a1, 514 /* 0F41FC 7F0BF6CC 50400004 */ beql $v0, $zero, .L7F0BF6E0 /* 0F4200 7F0BF6D0 00002025 */ move $a0, $zero -/* 0F4204 7F0BF6D4 0FC2F68E */ jal sub_GAME_7F0BDA38 +/* 0F4204 7F0BF6D4 0FC2F68E */ jal music_append_play_endtheme /* 0F4208 7F0BF6D8 00000000 */ nop /* 0F420C 7F0BF6DC 00002025 */ move $a0, $zero .L7F0BF6E0: @@ -3318,7 +3292,7 @@ glabel manage_mp_game /* 0F4214 7F0BF6E4 24050101 */ li $a1, 257 /* 0F4218 7F0BF6E8 50400004 */ beql $v0, $zero, .L7F0BF6FC /* 0F421C 7F0BF6EC 00002025 */ move $a0, $zero -/* 0F4220 7F0BF6F0 0FC2F67B */ jal sub_GAME_7F0BD9EC +/* 0F4220 7F0BF6F0 0FC2F67B */ jal music_append_play_solo_death_short /* 0F4224 7F0BF6F4 00000000 */ nop /* 0F4228 7F0BF6F8 00002025 */ move $a0, $zero .L7F0BF6FC: @@ -3432,8 +3406,8 @@ glabel manage_mp_game .Ljp7F0BF814: /* 0F4384 7F0BF814 3C028005 */ lui $v0, %hi(clock_timer) # $v0, 0x8005 /* 0F4388 7F0BF818 8C4283A4 */ lw $v0, %lo(clock_timer)($v0) -/* 0F438C 7F0BF81C 3C038005 */ lui $v1, %hi(D_jpunk) # $v1, 0x8005 -/* 0F4390 7F0BF820 246383A8 */ addiu $v1, %lo(D_jpunk) # addiu $v1, $v1, -0x7c58 +/* 0F438C 7F0BF81C 3C038005 */ lui $v1, %hi(jp_global_timer_delta) # $v1, 0x8005 +/* 0F4390 7F0BF820 246383A8 */ addiu $v1, %lo(jp_global_timer_delta) # addiu $v1, $v1, -0x7c58 /* 0F4394 7F0BF824 44822000 */ mtc1 $v0, $f4 /* 0F4398 7F0BF828 3C048005 */ lui $a0, %hi(global_timer) # $a0, 0x8005 /* 0F439C 7F0BF82C 3C018005 */ lui $at, %hi(global_timer_delta) # $at, 0x8005 @@ -3466,13 +3440,13 @@ glabel manage_mp_game /* 0F4404 7F0BF894 51E0000D */ beql $t7, $zero, .Ljp7F0BF8CC /* 0F4408 7F0BF898 24840001 */ addiu $a0, $a0, 1 /* 0F440C 7F0BF89C AFA3001C */ sw $v1, 0x1c($sp) -/* 0F4410 7F0BF8A0 0FC2494F */ jal sub_GAME_7F091A5C +/* 0F4410 7F0BF8A0 0FC2494F */ jal is_cheat_index_equal_to_1C /* 0F4414 7F0BF8A4 AFA40194 */ sw $a0, 0x194($sp) /* 0F4418 7F0BF8A8 8FA3001C */ lw $v1, 0x1c($sp) /* 0F441C 7F0BF8AC 14400006 */ bnez $v0, .Ljp7F0BF8C8 /* 0F4420 7F0BF8B0 8FA40194 */ lw $a0, 0x194($sp) /* 0F4424 7F0BF8B4 AFA3001C */ sw $v1, 0x1c($sp) -/* 0F4428 7F0BF8B8 0FC24963 */ jal sub_GAME_7F091AAC +/* 0F4428 7F0BF8B8 0FC24963 */ jal turn_on_cheat_for_players /* 0F442C 7F0BF8BC AFA40194 */ sw $a0, 0x194($sp) /* 0F4430 7F0BF8C0 8FA3001C */ lw $v1, 0x1c($sp) /* 0F4434 7F0BF8C4 8FA40194 */ lw $a0, 0x194($sp) @@ -3567,7 +3541,7 @@ glabel manage_mp_game /* 0F4578 7F0BFA08 8FA4017C */ lw $a0, 0x17c($sp) /* 0F457C 7F0BFA0C 0FC30AA2 */ jal get_textptr_for_textID /* 0F4580 7F0BFA10 3404B044 */ li $a0, 45124 -/* 0F4584 7F0BFA14 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 0F4584 7F0BFA14 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 0F4588 7F0BFA18 00402025 */ move $a0, $v0 /* 0F458C 7F0BFA1C 8FAF017C */ lw $t7, 0x17c($sp) /* 0F4590 7F0BFA20 25F80001 */ addiu $t8, $t7, 1 @@ -3942,7 +3916,7 @@ glabel manage_mp_game /* 0F4AD8 7F0BFF68 2401005A */ li $at, 90 /* 0F4ADC 7F0BFF6C 17210009 */ bne $t9, $at, .Ljp7F0BFF94 /* 0F4AE0 7F0BFF70 00000000 */ nop -/* 0F4AE4 7F0BFF74 0FC24907 */ jal sub_GAME_7F09193C +/* 0F4AE4 7F0BFF74 0FC24907 */ jal cheat_buttons_mp_related /* 0F4AE8 7F0BFF78 00000000 */ nop /* 0F4AEC 7F0BFF7C 0FC069F4 */ jal menu_init /* 0F4AF0 7F0BFF80 00000000 */ nop @@ -3984,7 +3958,7 @@ glabel manage_mp_game /* 0F4B7C 7F0C000C 24043000 */ li $a0, 12288 /* 0F4B80 7F0C0010 17000048 */ bnez $t8, .Ljp7F0C0134 /* 0F4B84 7F0C0014 00000000 */ nop -/* 0F4B88 7F0C0018 0C0025CC */ jal allocate_bytes_in_bank +/* 0F4B88 7F0C0018 0C0025CC */ jal mempAllocBytesInBank /* 0F4B8C 7F0C001C 24050004 */ li $a1, 4 /* 0F4B90 7F0C0020 3C068005 */ lui $a2, %hi(D_800483C8) # $a2, 0x8005 /* 0F4B94 7F0C0024 24C683FC */ addiu $a2, %lo(D_800483C8) # addiu $a2, $a2, -0x7c04 @@ -4188,7 +4162,7 @@ glabel manage_mp_game /* 0F4E70 7F0C0300 24050202 */ li $a1, 514 /* 0F4E74 7F0C0304 50400004 */ beql $v0, $zero, .Ljp7F0C0318 /* 0F4E78 7F0C0308 00002025 */ move $a0, $zero -/* 0F4E7C 7F0C030C 0FC2F97A */ jal sub_GAME_7F0BDA38 +/* 0F4E7C 7F0C030C 0FC2F97A */ jal music_append_play_endtheme /* 0F4E80 7F0C0310 00000000 */ nop /* 0F4E84 7F0C0314 00002025 */ move $a0, $zero .Ljp7F0C0318: @@ -4196,7 +4170,7 @@ glabel manage_mp_game /* 0F4E8C 7F0C031C 24050101 */ li $a1, 257 /* 0F4E90 7F0C0320 50400004 */ beql $v0, $zero, .Ljp7F0C0334 /* 0F4E94 7F0C0324 00002025 */ move $a0, $zero -/* 0F4E98 7F0C0328 0FC2F967 */ jal sub_GAME_7F0BD9EC +/* 0F4E98 7F0C0328 0FC2F967 */ jal music_append_play_solo_death_short /* 0F4E9C 7F0C032C 00000000 */ nop /* 0F4EA0 7F0C0330 00002025 */ move $a0, $zero .Ljp7F0C0334: @@ -4290,7 +4264,7 @@ glabel sub_GAME_7F0BF800 /* 0F4334 7F0BF804 AFBF0014 */ sw $ra, 0x14($sp) /* 0F4338 7F0BF808 0FC26C54 */ jal get_cur_playernum /* 0F433C 7F0BF80C 00000000 */ nop -/* 0F4340 7F0BF810 0FC2464F */ jal sub_GAME_7F09193C +/* 0F4340 7F0BF810 0FC2464F */ jal cheat_buttons_mp_related /* 0F4344 7F0BF814 A3A2002F */ sb $v0, 0x2f($sp) /* 0F4348 7F0BF818 0FC243C2 */ jal get_debug_freeze_processing /* 0F434C 7F0BF81C 00000000 */ nop @@ -4431,8 +4405,8 @@ glabel sub_GAME_7F0BF800 /* 0F4544 7F0BFA14 46021482 */ mul.s $f18, $f2, $f2 /* 0F4548 7F0BFA18 0C007DF8 */ jal sqrtf /* 0F454C 7F0BFA1C 46128300 */ add.s $f12, $f16, $f18 -/* 0F4550 7F0BFA20 3C028008 */ lui $v0, %hi(cur_player_stat_ptr) -/* 0F4554 7F0BFA24 8C42A0B4 */ lw $v0, %lo(cur_player_stat_ptr)($v0) +/* 0F4550 7F0BFA20 3C028008 */ lui $v0, %hi(pPlayersPerm) +/* 0F4554 7F0BFA24 8C42A0B4 */ lw $v0, %lo(pPlayersPerm)($v0) /* 0F4558 7F0BFA28 C4440038 */ lwc1 $f4, 0x38($v0) /* 0F455C 7F0BFA2C 46002180 */ add.s $f6, $f4, $f0 /* 0F4560 7F0BFA30 0FC051D6 */ jal get_scenario @@ -4460,8 +4434,8 @@ glabel sub_GAME_7F0BF800 /* 0F45B8 7F0BFA88 00000000 */ nop /* 0F45BC 7F0BFA8C AC490894 */ sw $t1, 0x894($v0) .L7F0BFA90: -/* 0F45C0 7F0BFA90 3C038008 */ lui $v1, %hi(cur_player_stat_ptr) -/* 0F45C4 7F0BFA94 2463A0B4 */ addiu $v1, %lo(cur_player_stat_ptr) # addiu $v1, $v1, -0x5f4c +/* 0F45C0 7F0BFA90 3C038008 */ lui $v1, %hi(pPlayersPerm) +/* 0F45C4 7F0BFA94 2463A0B4 */ addiu $v1, %lo(pPlayersPerm) # addiu $v1, $v1, -0x5f4c /* 0F45C8 7F0BFA98 8C620000 */ lw $v0, ($v1) /* 0F45CC 7F0BFA9C 3C0B8005 */ lui $t3, %hi(clock_timer) /* 0F45D0 7F0BFAA0 8D6B8374 */ lw $t3, %lo(clock_timer)($t3) @@ -4473,8 +4447,8 @@ glabel sub_GAME_7F0BF800 /* 0F45E8 7F0BFAB8 10000015 */ b .L7F0BFB10 /* 0F45EC 7F0BFABC A1CD0069 */ sb $t5, 0x69($t6) .L7F0BFAC0: -/* 0F45F0 7F0BFAC0 3C0F8008 */ lui $t7, %hi(cur_player_stat_ptr) -/* 0F45F4 7F0BFAC4 8DEFA0B4 */ lw $t7, %lo(cur_player_stat_ptr)($t7) +/* 0F45F0 7F0BFAC0 3C0F8008 */ lui $t7, %hi(pPlayersPerm) +/* 0F45F4 7F0BFAC4 8DEFA0B4 */ lw $t7, %lo(pPlayersPerm)($t7) /* 0F45F8 7F0BFAC8 10000011 */ b .L7F0BFB10 /* 0F45FC 7F0BFACC A1E00069 */ sb $zero, 0x69($t7) .L7F0BFAD0: @@ -4483,17 +4457,17 @@ glabel sub_GAME_7F0BF800 /* 0F4608 7F0BFAD8 24010003 */ li $at, 3 /* 0F460C 7F0BFADC 5441000D */ bnel $v0, $at, .L7F0BFB14 /* 0F4610 7F0BFAE0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F4614 7F0BFAE4 0FC233F0 */ jal sub_GAME_7F08CFC0 +/* 0F4614 7F0BFAE4 0FC233F0 */ jal checkforgoldengun /* 0F4618 7F0BFAE8 00000000 */ nop /* 0F461C 7F0BFAEC 10400006 */ beqz $v0, .L7F0BFB08 -/* 0F4620 7F0BFAF0 3C088008 */ lui $t0, %hi(cur_player_stat_ptr) -/* 0F4624 7F0BFAF4 3C198008 */ lui $t9, %hi(cur_player_stat_ptr) -/* 0F4628 7F0BFAF8 8F39A0B4 */ lw $t9, %lo(cur_player_stat_ptr)($t9) +/* 0F4620 7F0BFAF0 3C088008 */ lui $t0, %hi(pPlayersPerm) +/* 0F4624 7F0BFAF4 3C198008 */ lui $t9, %hi(pPlayersPerm) +/* 0F4628 7F0BFAF8 8F39A0B4 */ lw $t9, %lo(pPlayersPerm)($t9) /* 0F462C 7F0BFAFC 24180001 */ li $t8, 1 /* 0F4630 7F0BFB00 10000003 */ b .L7F0BFB10 /* 0F4634 7F0BFB04 A3380069 */ sb $t8, 0x69($t9) .L7F0BFB08: -/* 0F4638 7F0BFB08 8D08A0B4 */ lw $t0, %lo(cur_player_stat_ptr)($t0) +/* 0F4638 7F0BFB08 8D08A0B4 */ lw $t0, %lo(pPlayersPerm)($t0) /* 0F463C 7F0BFB0C A1000069 */ sb $zero, 0x69($t0) .L7F0BFB10: /* 0F4640 7F0BFB10 8FBF0014 */ lw $ra, 0x14($sp) @@ -4521,7 +4495,7 @@ void unload_stage_text_data(void) { blank_text_bank(get_textbank_number_for_stagenum(current_stage_to_load)); sub_GAME_7F007770(); } - sub_GAME_7F0926C0(); + cheatDisableAllCheats(); cleanupGuardData(); cleanupObjectSounds(); cleanupExplosions(); diff --git a/src/game/lvl.h b/src/game/lvl.h index dfe4130..c61dc32 100644 --- a/src/game/lvl.h +++ b/src/game/lvl.h @@ -8,7 +8,9 @@ struct ramrom_struct { }; extern s32 D_800483C4; - +extern s32 clock_timer; +extern s32 global_timer; +extern f32 global_timer_delta; extern u32 *ptr_jfont_DL; extern s32 dword_CODE_bss_8008C264; extern s32 dword_CODE_bss_8008C268; diff --git a/src/game/lvl_2.c b/src/game/lvl_2.c index beea8bd..561f68e 100644 --- a/src/game/lvl_2.c +++ b/src/game/lvl_2.c @@ -31,7 +31,7 @@ struct ramrom_struct ramrom_table[] = { }; //D:80048468 -s32 ramrom_blkbuf_1 = 0; +s32 ptr_active_demofile = 0; //D:8004846C s32 ramrom_blkbuf_2 = 0; //D:80048470 @@ -65,7 +65,7 @@ const char aReplayDemo_load[] = "replay/demo.load"; void clear_ramrom_block_buffer_heading_ptrs(void) { - ramrom_blkbuf_1 = 0; + ptr_active_demofile = 0; ramrom_blkbuf_2 = 0; ramrom_blkbuf_3 = 0; } @@ -97,10 +97,10 @@ void finalize_ramrom_on_hw(void) { romWrite(temp_a0, address_demo_loaded, 0x10); address_demo_loaded = (s32) (address_demo_loaded + 4); temp_ret = romCopyAligned(&ramrom_data_target, 0xf00000, 0xf0); - ramrom_blkbuf_1 = temp_ret; + ptr_active_demofile = temp_ret; temp_ret->unk7C = (s32) (global_timer - clock_timer); - ramrom_blkbuf_1->unk80 = (s32) (address_demo_loaded - 0xf00000); - return romWrite(ramrom_blkbuf_1, 0xf00000, 0xf0); + ptr_active_demofile->unk80 = (s32) (address_demo_loaded - 0xf00000); + return romWrite(ptr_active_demofile, 0xf00000, 0xf0); } #else GLOBAL_ASM( @@ -128,8 +128,8 @@ glabel finalize_ramrom_on_hw /* 0F482C 7F0BFCFC 3C0500F0 */ lui $a1, 0xf0 /* 0F4830 7F0BFD00 0C001711 */ jal romCopyAligned /* 0F4834 7F0BFD04 240600F0 */ li $a2, 240 -/* 0F4838 7F0BFD08 3C038005 */ lui $v1, %hi(ramrom_blkbuf_1) -/* 0F483C 7F0BFD0C 24638468 */ addiu $v1, %lo(ramrom_blkbuf_1) # addiu $v1, $v1, -0x7b98 +/* 0F4838 7F0BFD08 3C038005 */ lui $v1, %hi(ptr_active_demofile) +/* 0F483C 7F0BFD0C 24638468 */ addiu $v1, %lo(ptr_active_demofile) # addiu $v1, $v1, -0x7b98 /* 0F4840 7F0BFD10 AC620000 */ sw $v0, ($v1) /* 0F4844 7F0BFD14 3C088005 */ lui $t0, %hi(global_timer) /* 0F4848 7F0BFD18 3C098005 */ lui $t1, %hi(clock_timer) @@ -158,8 +158,18 @@ glabel finalize_ramrom_on_hw #ifdef NONMATCHING -void save_ramrom_to_devtool(void) { - +void save_ramrom_to_devtool(void) +{ + int iVar2; + undefined auStack264 [4]; + char indyFileName [260]; + + for (iVar2 = 1; check_file_found_on_indy(indyFileName,(u32)auStack264) != 0; iVar2++) + { + sprintf(indyFileName,"replay/demo.%d",iVar2); + } + sprintf(indyFileName,"replay/demo.%d",iVar2); + check_file_exported(indyFileName,0xf00000,(ptr_active_demofile + 0x80)); } #else GLOBAL_ASM( @@ -194,8 +204,8 @@ glabel save_ramrom_to_devtool /* 0F48F0 7F0BFDC0 02202025 */ move $a0, $s1 /* 0F48F4 7F0BFDC4 0C002B25 */ jal sprintf /* 0F48F8 7F0BFDC8 02003025 */ move $a2, $s0 -/* 0F48FC 7F0BFDCC 3C0E8005 */ lui $t6, %hi(ramrom_blkbuf_1) -/* 0F4900 7F0BFDD0 8DCE8468 */ lw $t6, %lo(ramrom_blkbuf_1)($t6) +/* 0F48FC 7F0BFDCC 3C0E8005 */ lui $t6, %hi(ptr_active_demofile) +/* 0F4900 7F0BFDD0 8DCE8468 */ lw $t6, %lo(ptr_active_demofile)($t6) /* 0F4904 7F0BFDD4 02202025 */ move $a0, $s1 /* 0F4908 7F0BFDD8 3C0500F0 */ lui $a1, 0xf0 /* 0F490C 7F0BFDDC 0FC34017 */ jal check_file_exported @@ -215,25 +225,15 @@ glabel save_ramrom_to_devtool #ifdef NONMATCHING -void load_ramrom_from_devtool(void) { - ? sp1C; - ? temp_ret; - ? temp_ret_2; - ? phi_return; +void load_ramrom_from_devtool(void) +{ + s32 size; - // Node 0 - temp_ret = check_file_found_on_indy("replay/demo.load", &sp1C); - phi_return = temp_ret; - if (temp_ret != 0) + if (check_file_found_on_indy("replay/demo.load", &size) != 0) { - // Node 1 - indy_loadfile("replay/demo.load", 0xf00000, sp1C); - temp_ret_2 = romCopyAligned(&ramrom_data_target, 0xf00000, 0xe8); - ramrom_blkbuf_1 = temp_ret_2; - phi_return = temp_ret_2; + indy_load_ramrom_file("replay/demo.load",(u8 *)0xf00000,size); + ptr_active_demofile = romCopyAligned(&ramrom_data_target,(u8 *)0xf00000,0xe8); } - // Node 2 - return phi_return; } #else GLOBAL_ASM( @@ -256,8 +256,8 @@ glabel load_ramrom_from_devtool /* 0F4968 7F0BFE38 3C0500F0 */ lui $a1, 0xf0 /* 0F496C 7F0BFE3C 0C001711 */ jal romCopyAligned /* 0F4970 7F0BFE40 240600E8 */ li $a2, 232 -/* 0F4974 7F0BFE44 3C018005 */ lui $at, %hi(ramrom_blkbuf_1) -/* 0F4978 7F0BFE48 AC228468 */ sw $v0, %lo(ramrom_blkbuf_1)($at) +/* 0F4974 7F0BFE44 3C018005 */ lui $at, %hi(ptr_active_demofile) +/* 0F4978 7F0BFE48 AC228468 */ sw $v0, %lo(ptr_active_demofile)($at) .L7F0BFE4C: /* 0F497C 7F0BFE4C 8FBF0014 */ lw $ra, 0x14($sp) /* 0F4980 7F0BFE50 27BD0020 */ addiu $sp, $sp, 0x20 @@ -279,9 +279,9 @@ GLOBAL_ASM( .text glabel record_player_input_as_packet /* 0F498C 7F0BFE5C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0F4990 7F0BFE60 3C0E8005 */ lui $t6, %hi(ramrom_blkbuf_1) +/* 0F4990 7F0BFE60 3C0E8005 */ lui $t6, %hi(ptr_active_demofile) /* 0F4994 7F0BFE64 3C0F8009 */ lui $t7, %hi(ramrom_data_target + 0x1F8) -/* 0F4998 7F0BFE68 8DCE8468 */ lw $t6, %lo(ramrom_blkbuf_1)($t6) +/* 0F4998 7F0BFE68 8DCE8468 */ lw $t6, %lo(ptr_active_demofile)($t6) /* 0F499C 7F0BFE6C 25EFC468 */ addiu $t7, %lo(ramrom_data_target + 0x1F8) # addiu $t7, $t7, -0x3b98 /* 0F49A0 7F0BFE70 25F8000F */ addiu $t8, $t7, 0xf /* 0F49A4 7F0BFE74 AFBF001C */ sw $ra, 0x1c($sp) @@ -445,8 +445,8 @@ glabel ramrom_replay_handler /* 0F4BC0 7F0C0090 AFB10018 */ sw $s1, 0x18($sp) /* 0F4BC4 7F0C0094 AFB00014 */ sw $s0, 0x14($sp) /* 0F4BC8 7F0C0098 904A0001 */ lbu $t2, 1($v0) -/* 0F4BCC 7F0C009C 3C0E8005 */ lui $t6, %hi(ramrom_blkbuf_1) -/* 0F4BD0 7F0C00A0 8DCE8468 */ lw $t6, %lo(ramrom_blkbuf_1)($t6) +/* 0F4BCC 7F0C009C 3C0E8005 */ lui $t6, %hi(ptr_active_demofile) +/* 0F4BD0 7F0C00A0 8DCE8468 */ lw $t6, %lo(ptr_active_demofile)($t6) /* 0F4BD4 7F0C00A4 00A08025 */ move $s0, $a1 /* 0F4BD8 7F0C00A8 00808825 */ move $s1, $a0 /* 0F4BDC 7F0C00AC 00004025 */ move $t0, $zero @@ -598,7 +598,7 @@ s32 iterate_ramrom_entries_handle_camera_out(void) { if (temp_a3 > 0) { // Node 1 - ramrom_blkbuf_3 = romCopyAligned(&ramrom_data_target + 0x21E, (address_demo_loaded + 4), ((ramrom_blkbuf_1->unk18 * 4) * temp_a3), temp_a3); + ramrom_blkbuf_3 = romCopyAligned(&ramrom_data_target + 0x21E, (address_demo_loaded + 4), ((ptr_active_demofile->unk18 * 4) * temp_a3), temp_a3); phi_a0 = ramrom_blkbuf_2->unk1; phi_v1 = (void *) ramrom_blkbuf_2; phi_a3 = ramrom_blkbuf_2->unk1; @@ -613,12 +613,12 @@ s32 iterate_ramrom_entries_handle_camera_out(void) { else { // Node 5 - address_demo_loaded = (s32) (address_demo_loaded + (((((ramrom_blkbuf_1->unk18 * 4) * phi_a3) + 5) | 1) ^ 1)); + address_demo_loaded = (s32) (address_demo_loaded + (((((ptr_active_demofile->unk18 * 4) * phi_a3) + 5) | 1) ^ 1)); phi_v1_2 = phi_v1; } // Node 6 sub_GAME_7F0C0AA0(*phi_v1_2); - temp_v1 = (ramrom_blkbuf_1->unk7C + -0x3c); + temp_v1 = (ptr_active_demofile->unk7C + -0x3c); phi_return = global_timer; if (global_timer >= temp_v1) { @@ -651,10 +651,10 @@ glabel iterate_ramrom_entries_handle_camera_out /* 0F4DC0 7F0C0290 ACA20000 */ sw $v0, ($a1) /* 0F4DC4 7F0C0294 90470001 */ lbu $a3, 1($v0) /* 0F4DC8 7F0C0298 00401825 */ move $v1, $v0 -/* 0F4DCC 7F0C029C 3C0E8005 */ lui $t6, %hi(ramrom_blkbuf_1) +/* 0F4DCC 7F0C029C 3C0E8005 */ lui $t6, %hi(ptr_active_demofile) /* 0F4DD0 7F0C02A0 18E00013 */ blez $a3, .L7F0C02F0 /* 0F4DD4 7F0C02A4 00E02025 */ move $a0, $a3 -/* 0F4DD8 7F0C02A8 8DCE8468 */ lw $t6, %lo(ramrom_blkbuf_1)($t6) +/* 0F4DD8 7F0C02A8 8DCE8468 */ lw $t6, %lo(ptr_active_demofile)($t6) /* 0F4DDC 7F0C02AC 3C058009 */ lui $a1, %hi(address_demo_loaded) /* 0F4DE0 7F0C02B0 8CA5C5F4 */ lw $a1, %lo(address_demo_loaded)($a1) /* 0F4DE4 7F0C02B4 8DCF0018 */ lw $t7, 0x18($t6) @@ -674,7 +674,7 @@ glabel iterate_ramrom_entries_handle_camera_out /* 0F4E1C 7F0C02EC 00E02025 */ move $a0, $a3 .L7F0C02F0: /* 0F4E20 7F0C02F0 14800009 */ bnez $a0, .L7F0C0318 -/* 0F4E24 7F0C02F4 3C098005 */ lui $t1, %hi(ramrom_blkbuf_1) +/* 0F4E24 7F0C02F4 3C098005 */ lui $t1, %hi(ptr_active_demofile) /* 0F4E28 7F0C02F8 90790000 */ lbu $t9, ($v1) /* 0F4E2C 7F0C02FC 17200006 */ bnez $t9, .L7F0C0318 /* 0F4E30 7F0C0300 00000000 */ nop @@ -684,7 +684,7 @@ glabel iterate_ramrom_entries_handle_camera_out /* 0F4E40 7F0C0310 1000000E */ b .L7F0C034C /* 0F4E44 7F0C0314 8C63846C */ lw $v1, %lo(ramrom_blkbuf_2)($v1) .L7F0C0318: -/* 0F4E48 7F0C0318 8D298468 */ lw $t1, %lo(ramrom_blkbuf_1)($t1) +/* 0F4E48 7F0C0318 8D298468 */ lw $t1, %lo(ptr_active_demofile)($t1) /* 0F4E4C 7F0C031C 3C088009 */ lui $t0, %hi(address_demo_loaded) /* 0F4E50 7F0C0320 8D08C5F4 */ lw $t0, %lo(address_demo_loaded)($t0) /* 0F4E54 7F0C0324 8D2A0018 */ lw $t2, 0x18($t1) @@ -700,8 +700,8 @@ glabel iterate_ramrom_entries_handle_camera_out .L7F0C034C: /* 0F4E7C 7F0C034C 0FC302A8 */ jal sub_GAME_7F0C0AA0 /* 0F4E80 7F0C0350 90640000 */ lbu $a0, ($v1) -/* 0F4E84 7F0C0354 3C198005 */ lui $t9, %hi(ramrom_blkbuf_1) -/* 0F4E88 7F0C0358 8F398468 */ lw $t9, %lo(ramrom_blkbuf_1)($t9) +/* 0F4E84 7F0C0354 3C198005 */ lui $t9, %hi(ptr_active_demofile) +/* 0F4E88 7F0C0358 8F398468 */ lw $t9, %lo(ptr_active_demofile)($t9) /* 0F4E8C 7F0C035C 3C028005 */ lui $v0, %hi(global_timer) /* 0F4E90 7F0C0360 8C42837C */ lw $v0, %lo(global_timer)($v0) /* 0F4E94 7F0C0364 8F23007C */ lw $v1, 0x7c($t9) @@ -757,7 +757,7 @@ void copy_current_ingame_registers_before_ramrom_playback(void *arg0) { arg0->unkC8 = (?32) controlstyle_player.unk8; arg0->unkCC = (?32) controlstyle_player.unkC; arg0->unkD0 = (?32) aim_sight_adjustment; - arg0->unkD4 = get_players_team_or_scenario_item_flag(0, &handicap_player1, &controlstyle_player); + arg0->unkD4 = get_players_team_or_scenario_item_flag(0); arg0->unkD8 = get_players_team_or_scenario_item_flag(1); arg0->unkDC = get_players_team_or_scenario_item_flag(2); arg0->unkE0 = get_players_team_or_scenario_item_flag(3); @@ -999,9 +999,9 @@ glabel test_if_recording_demos_this_stage_load /* 0F5188 7F0C0658 3C0F8009 */ lui $t7, %hi(ramrom_data_target) /* 0F518C 7F0C065C 25EFC270 */ addiu $t7, %lo(ramrom_data_target) # addiu $t7, $t7, -0x3d90 /* 0F5190 7F0C0660 25F8000F */ addiu $t8, $t7, 0xf -/* 0F5194 7F0C0664 3C108005 */ lui $s0, %hi(ramrom_blkbuf_1) +/* 0F5194 7F0C0664 3C108005 */ lui $s0, %hi(ptr_active_demofile) /* 0F5198 7F0C0668 3719000F */ ori $t9, $t8, 0xf -/* 0F519C 7F0C066C 26108468 */ addiu $s0, %lo(ramrom_blkbuf_1) # addiu $s0, $s0, -0x7b98 +/* 0F519C 7F0C066C 26108468 */ addiu $s0, %lo(ptr_active_demofile) # addiu $s0, $s0, -0x7b98 /* 0F51A0 7F0C0670 3B28000F */ xori $t0, $t9, 0xf /* 0F51A4 7F0C0674 AE080000 */ sw $t0, ($s0) /* 0F51A8 7F0C0678 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C5F8) @@ -1049,9 +1049,9 @@ glabel test_if_recording_demos_this_stage_load /* 0F524C 7F0C071C 3C198005 */ lui $t9, %hi(ramrom_demo_related_4) /* 0F5250 7F0C0720 8F39847C */ lw $t9, %lo(ramrom_demo_related_4)($t9) /* 0F5254 7F0C0724 13200020 */ beqz $t9, .L7F0C07A8 -/* 0F5258 7F0C0728 3C108005 */ lui $s0, %hi(ramrom_blkbuf_1) +/* 0F5258 7F0C0728 3C108005 */ lui $s0, %hi(ptr_active_demofile) /* 0F525C 7F0C072C 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C5F8) -/* 0F5260 7F0C0730 26108468 */ addiu $s0, %lo(ramrom_blkbuf_1) # addiu $s0, $s0, -0x7b98 +/* 0F5260 7F0C0730 26108468 */ addiu $s0, %lo(ptr_active_demofile) # addiu $s0, $s0, -0x7b98 /* 0F5264 7F0C0734 AC20C5F8 */ sw $zero, %lo(dword_CODE_bss_8008C5F8)($at) /* 0F5268 7F0C0738 8E080000 */ lw $t0, ($s0) /* 0F526C 7F0C073C 0FC07567 */ jal set_selected_difficulty @@ -1100,64 +1100,30 @@ void setRamRomRecordSlot(s32 arg0) { record_slot_num = arg0; } - - - - - -#ifdef NONMATCHING void stop_recording_ramrom(void) { - // Node 0 if (ramrom_demo_related_6 != 0) { - // Node 1 finalize_ramrom_on_hw(); set_ptr_tlb_ramrom_record(0); ramrom_demo_related_6 = 0; recording_ramrom_flag = 0; } - // Node 2 - return; } -#else -GLOBAL_ASM( -.text -glabel stop_recording_ramrom -/* 0F5304 7F0C07D4 3C0E8005 */ lui $t6, %hi(ramrom_demo_related_6) -/* 0F5308 7F0C07D8 8DCE8484 */ lw $t6, %lo(ramrom_demo_related_6)($t6) -/* 0F530C 7F0C07DC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F5310 7F0C07E0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0F5314 7F0C07E4 51C0000A */ beql $t6, $zero, .L7F0C0810 -/* 0F5318 7F0C07E8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F531C 7F0C07EC 0FC2FF2C */ jal finalize_ramrom_on_hw -/* 0F5320 7F0C07F0 00000000 */ nop -/* 0F5324 7F0C07F4 0C002EEF */ jal set_ptr_tlb_ramrom_record -/* 0F5328 7F0C07F8 00002025 */ move $a0, $zero -/* 0F532C 7F0C07FC 3C018005 */ lui $at, %hi(ramrom_demo_related_6) -/* 0F5330 7F0C0800 AC208484 */ sw $zero, %lo(ramrom_demo_related_6)($at) -/* 0F5334 7F0C0804 3C018005 */ lui $at, %hi(recording_ramrom_flag) -/* 0F5338 7F0C0808 AC208480 */ sw $zero, %lo(recording_ramrom_flag)($at) -/* 0F533C 7F0C080C 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0C0810: -/* 0F5340 7F0C0810 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0F5344 7F0C0814 03E00008 */ jr $ra -/* 0F5348 7F0C0818 00000000 */ nop -) -#endif + #ifdef NONMATCHING -void replay_recorded_ramrom_at_address(s32 arg0) { - // Node 0 +void replay_recorded_ramrom_at_address(s32 arg0) +{ address_demo_loaded = arg0; - ramrom_blkbuf_1 = romCopyAligned(&ramrom_data_target, address_demo_loaded, 0xe8); - address_demo_loaded = (s32) (address_demo_loaded + 0xe8); + ptr_active_demofile = romCopyAligned(&ramrom_data_target, address_demo_loaded, 0xe8); + address_demo_loaded += 0xe8; ramrom_demo_related_4 = 1; - set_solo_and_ptr_briefing(ramrom_blkbuf_1->unk10, &ramrom_blkbuf_1); - set_selected_difficulty(ramrom_blkbuf_1->unk14); + set_solo_and_ptr_briefing(ptr_active_demofile->unk10); + set_selected_difficulty(ptr_active_demofile->unk14); return set_menu_to_mode(0xb, 1); } #else @@ -1177,8 +1143,8 @@ glabel replay_recorded_ramrom_at_address /* 0F5374 7F0C0844 3C038009 */ lui $v1, %hi(address_demo_loaded) /* 0F5378 7F0C0848 2463C5F4 */ addiu $v1, %lo(address_demo_loaded) # addiu $v1, $v1, -0x3a0c /* 0F537C 7F0C084C 8C6E0000 */ lw $t6, ($v1) -/* 0F5380 7F0C0850 3C058005 */ lui $a1, %hi(ramrom_blkbuf_1) -/* 0F5384 7F0C0854 24A58468 */ addiu $a1, %lo(ramrom_blkbuf_1) # addiu $a1, $a1, -0x7b98 +/* 0F5380 7F0C0850 3C058005 */ lui $a1, %hi(ptr_active_demofile) +/* 0F5384 7F0C0854 24A58468 */ addiu $a1, %lo(ptr_active_demofile) # addiu $a1, $a1, -0x7b98 /* 0F5388 7F0C0858 25CF00E8 */ addiu $t7, $t6, 0xe8 /* 0F538C 7F0C085C ACA20000 */ sw $v0, ($a1) /* 0F5390 7F0C0860 AC6F0000 */ sw $t7, ($v1) @@ -1188,8 +1154,8 @@ glabel replay_recorded_ramrom_at_address /* 0F53A0 7F0C0870 8CB90000 */ lw $t9, ($a1) /* 0F53A4 7F0C0874 0FC0757B */ jal set_solo_and_ptr_briefing /* 0F53A8 7F0C0878 8F240010 */ lw $a0, 0x10($t9) -/* 0F53AC 7F0C087C 3C088005 */ lui $t0, %hi(ramrom_blkbuf_1) -/* 0F53B0 7F0C0880 8D088468 */ lw $t0, %lo(ramrom_blkbuf_1)($t0) +/* 0F53AC 7F0C087C 3C088005 */ lui $t0, %hi(ptr_active_demofile) +/* 0F53B0 7F0C0880 8D088468 */ lw $t0, %lo(ptr_active_demofile)($t0) /* 0F53B4 7F0C0884 0FC07567 */ jal set_selected_difficulty /* 0F53B8 7F0C0888 8D040014 */ lw $a0, 0x14($t0) /* 0F53BC 7F0C088C 2404000B */ li $a0, 11 @@ -1206,59 +1172,39 @@ glabel replay_recorded_ramrom_at_address -void replay_recorded_ramrom_from_indy(void) { +void replay_recorded_ramrom_from_indy(void) +{ replay_recorded_ramrom_at_address(0xf00000); } - - - - - -#ifdef NONMATCHING -void ensureCameraModeA(void) { - ? temp_ret; - ? phi_return; - - // Node 0 - temp_ret = get_camera_mode(); - phi_return = temp_ret; - if (temp_ret != 0xa) +void ensureCameraModeA(void) +{ + if (get_camera_mode() != 0xa) { - // Node 1 - phi_return = set_camera_mode(0xa); + set_camera_mode(0xa); } - // Node 2 - return phi_return; } -#else -GLOBAL_ASM( -.text -glabel ensureCameraModeA -/* 0F53F8 7F0C08C8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F53FC 7F0C08CC AFBF0014 */ sw $ra, 0x14($sp) -/* 0F5400 7F0C08D0 0FC1E94A */ jal get_camera_mode -/* 0F5404 7F0C08D4 00000000 */ nop -/* 0F5408 7F0C08D8 2401000A */ li $at, 10 -/* 0F540C 7F0C08DC 50410004 */ beql $v0, $at, .L7F0C08F0 -/* 0F5410 7F0C08E0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F5414 7F0C08E4 0FC1EA6E */ jal set_camera_mode -/* 0F5418 7F0C08E8 2404000A */ li $a0, 10 -/* 0F541C 7F0C08EC 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0C08F0: -/* 0F5420 7F0C08F0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0F5424 7F0C08F4 03E00008 */ jr $ra -/* 0F5428 7F0C08F8 00000000 */ nop -) -#endif + #ifdef NONMATCHING -void stop_demo_playback(void) { - +void stop_demo_playback(void) +{ + if (ramrom_demo_related_6 == 0) { + if (ramrom_demo_related_3 != 0) { + copy_recorded_ramrom_registers_to_proper_place_ingame(&ramromsettingsbackup); + set_disable_all_rumble_and_something(0,0xffffffff); + controller_7000C930(0); + ramrom_demo_related_3 = 0; + is_ramrom_flag = 0; + } + } + else { + stop_recording_ramrom(); + } } #else GLOBAL_ASM( @@ -1365,8 +1311,16 @@ glabel select_ramrom_to_play #ifdef NONMATCHING -void check_ramrom_flags(void) { - +s32 check_ramrom_flags(void) +{ + if ((get_is_ramrom_flag() == 0) && (get_recording_ramrom_flag() == 0)) + { + return 0; + } + else + { + return *(undefined4 *)(ptr_active_demofile + 0x88); + } } #else GLOBAL_ASM( @@ -1382,8 +1336,8 @@ glabel check_ramrom_flags /* 0F556C 7F0C0A3C 00000000 */ nop /* 0F5570 7F0C0A40 10400004 */ beqz $v0, .L7F0C0A54 .L7F0C0A44: -/* 0F5574 7F0C0A44 3C0E8005 */ lui $t6, %hi(ramrom_blkbuf_1) -/* 0F5578 7F0C0A48 8DCE8468 */ lw $t6, %lo(ramrom_blkbuf_1)($t6) +/* 0F5574 7F0C0A44 3C0E8005 */ lui $t6, %hi(ptr_active_demofile) +/* 0F5578 7F0C0A48 8DCE8468 */ lw $t6, %lo(ptr_active_demofile)($t6) /* 0F557C 7F0C0A4C 10000002 */ b .L7F0C0A58 /* 0F5580 7F0C0A50 8DC20088 */ lw $v0, 0x88($t6) .L7F0C0A54: diff --git a/src/game/lvl_text.c b/src/game/lvl_text.c index 30e4862..ecdccc1 100644 --- a/src/game/lvl_text.c +++ b/src/game/lvl_text.c @@ -82,265 +82,151 @@ void *LnameX_lookuptable[] = { "LoptionsE", "LoptionsJ", /* Solo in-game menus */ "LmiscE", "LmiscJ"}; /* Cheat options */ +LEVELID get_textbank_number_for_stagenum(LEVELID level) +{ + LEVELID return_id; -#ifdef NONMATCHING -LEVELID get_textbank_number_for_stagenum(LEVELID level) { switch(level) { - case LEVELID_BUNKER1: - return LSEV; - case LEVELID_SILO: - return LSILO; - case LEVELID_STATUE: - return LSTAT; - case LEVELID_CONTROL: - return LAREC; - case LEVELID_ARCHIVES: - return LARCH; - case LEVELID_TRAIN: - return LTRA; - case LEVELID_FRIGATE: - return LDEST; - case LEVELID_BUNKER2: - return LSEVB; - case LEVELID_AZTEC: - return LAZT; - case LEVELID_STREETS: - return LPETE; - case LEVELID_DEPOT: - return LDEPO; - case LEVELID_COMPLEX: - return LREF; - case LEVELID_EGYPT: - return LCRYP; case LEVELID_DAM: - return LDAM; + return_id = LDAM; + break; case LEVELID_FACILITY: - return LARK; + return_id = LARK; + break; case LEVELID_RUNWAY: - return LRUN; + return_id = LRUN; + break; case LEVELID_SURFACE: - return LSEVX; - case LEVELID_JUNGLE: - return LJUN; - case LEVELID_TEMPLE: - return LDISH; - case LEVELID_CAVERNS: - return LCAVE; - case LEVELID_CRADLE: - return LCRAD; + return_id = LSEVX; + break; + case LEVELID_BUNKER1: + return_id = LSEV; + break; + case LEVELID_SILO: + return_id = LSILO; + break; + case LEVELID_FRIGATE: + return_id = LDEST; + break; case LEVELID_SURFACE2: - return LSEVXB; - case LEVELID_BASEMENT: - return LIMP; - case LEVELID_STACK: - return LASH; + return_id = LSEVXB; + break; + case LEVELID_BUNKER2: + return_id = LSEVB; + break; + case LEVELID_STATUE: + return_id = LSTAT; + break; + case LEVELID_ARCHIVES: + return_id = LARCH; + break; + case LEVELID_STREETS: + return_id = LPETE; + break; + case LEVELID_DEPOT: + return_id = LDEPO; + break; + case LEVELID_TRAIN: + return_id = LTRA; + break; + case LEVELID_JUNGLE: + return_id = LJUN; + break; + case LEVELID_CONTROL: + return_id = LAREC; + break; + case LEVELID_CAVERNS: + return_id = LCAVE; + break; + case LEVELID_CRADLE: + return_id = LCRAD; + break; + case LEVELID_AZTEC: + return_id = LAZT; + break; + case LEVELID_EGYPT: + return_id = LCRYP; + break; + case LEVELID_TEMPLE: + return_id = LDISH; + break; + case LEVELID_COMPLEX: + return_id = LREF; + break; case LEVELID_LIBRARY: - return LAME; + return_id = LAME; + break; + case LEVELID_BASEMENT: + return_id = LIMP; + break; + case LEVELID_STACK: + return_id = LASH; + break; case LEVELID_CAVES: - return LOAT; + return_id = LOAT; + break; case LEVELID_CUBA: - return LLEN; + return_id = LLEN; + break; + default: + { + /* infinite loop on invalid text bank */ + while(1) {}; + } } - /* infinite loop on invalid text bank */ - do { - } while(1); - return 0; + return return_id; } -#else -GLOBAL_ASM( -.late_rodata -/*D:8005BB60*/ -glabel jpt_stage_text -.word .L7F0C1624 -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word .L7F0C162C -.word stagetext_loop -.word .L7F0C164C -.word .L7F0C167C -.word .L7F0C1654 -.word .L7F0C166C -.word .L7F0C1634 -.word .L7F0C1644 -.word .L7F0C1694 -.word .L7F0C165C -/*.word .L7F0C1664*/ -/*.word .L7F0C16AC*/ -/*.word .L7F0C169C*/ -/*.word .L7F0C1604*/ -/*.word .L7F0C160C*/ -/*.word .L7F0C1614*/ -/*.word .L7F0C161C*/ -/*.word .L7F0C1674*/ -/*.word .L7F0C16A4*/ -/*.word .L7F0C1684*/ -/*.word stagetext_loop*/ -/*.word .L7F0C168C*/ -/*.word stagetext_loop*/ -/*.word .L7F0C163C*/ -/*.word stagetext_loop*/ -/*.word .L7F0C16BC*/ -/*.word .L7F0C16C4*/ -/*.word stagetext_loop*/ -/*.word .L7F0C16B4*/ -/*.word stagetext_loop*/ -/*.word .L7F0C16CC*/ -/*.word stagetext_loop*/ -/*.word stagetext_loop*/ -/*.word stagetext_loop*/ -/*.word .L7F0C16D4*/ - -.text -glabel get_textbank_number_for_stagenum -/* 0F6110 7F0C15E0 248EFFF7 */ addiu $t6, $a0, -9 -/* 0F6114 7F0C15E4 2DC1002E */ sltiu $at, $t6, 0x2e -/* 0F6118 7F0C15E8 1020003C */ beqz $at, .L7F0C16DC -/* 0F611C 7F0C15EC 000E7080 */ sll $t6, $t6, 2 -/* 0F6120 7F0C15F0 3C018006 */ lui $at, %hi(jpt_stage_text) -/* 0F6124 7F0C15F4 002E0821 */ addu $at, $at, $t6 -/* 0F6128 7F0C15F8 8C2EBB60 */ lw $t6, %lo(jpt_stage_text)($at) -/* 0F612C 7F0C15FC 01C00008 */ jr $t6 -/* 0F6130 7F0C1600 00000000 */ nop -.L7F0C1604: -/* 0F6134 7F0C1604 03E00008 */ jr $ra -/* 0F6138 7F0C1608 2402000B */ li $v0, 11 -.L7F0C160C: -/* 0F613C 7F0C160C 03E00008 */ jr $ra -/* 0F6140 7F0C1610 24020003 */ li $v0, 3 -.L7F0C1614: -/* 0F6144 7F0C1614 03E00008 */ jr $ra -/* 0F6148 7F0C1618 2402001C */ li $v0, 28 -.L7F0C161C: -/* 0F614C 7F0C161C 03E00008 */ jr $ra -/* 0F6150 7F0C1620 2402001F */ li $v0, 31 -.L7F0C1624: -/* 0F6154 7F0C1624 03E00008 */ jr $ra -/* 0F6158 7F0C1628 2402001E */ li $v0, 30 -.L7F0C162C: -/* 0F615C 7F0C162C 03E00008 */ jr $ra -/* 0F6160 7F0C1630 24020022 */ li $v0, 34 -.L7F0C1634: -/* 0F6164 7F0C1634 03E00008 */ jr $ra -/* 0F6168 7F0C1638 2402000D */ li $v0, 13 -.L7F0C163C: -/* 0F616C 7F0C163C 03E00008 */ jr $ra -/* 0F6170 7F0C1640 24020020 */ li $v0, 32 -.L7F0C1644: -/* 0F6174 7F0C1644 03E00008 */ jr $ra -/* 0F6178 7F0C1648 2402001D */ li $v0, 29 -.L7F0C164C: -/* 0F617C 7F0C164C 03E00008 */ jr $ra -/* 0F6180 7F0C1650 24020023 */ li $v0, 35 -.L7F0C1654: -/* 0F6184 7F0C1654 03E00008 */ jr $ra -/* 0F6188 7F0C1658 24020002 */ li $v0, 2 -.L7F0C165C: -/* 0F618C 7F0C165C 03E00008 */ jr $ra -/* 0F6190 7F0C1660 24020019 */ li $v0, 25 -.L7F0C1664: -/* 0F6194 7F0C1664 03E00008 */ jr $ra -/* 0F6198 7F0C1668 2402000C */ li $v0, 12 -.L7F0C166C: -/* 0F619C 7F0C166C 03E00008 */ jr $ra -/* 0F61A0 7F0C1670 24020024 */ li $v0, 36 -.L7F0C1674: -/* 0F61A4 7F0C1674 03E00008 */ jr $ra -/* 0F61A8 7F0C1678 24020012 */ li $v0, 18 -.L7F0C167C: -/* 0F61AC 7F0C167C 03E00008 */ jr $ra -/* 0F61B0 7F0C1680 24020008 */ li $v0, 8 -.L7F0C1684: -/* 0F61B4 7F0C1684 03E00008 */ jr $ra -/* 0F61B8 7F0C1688 24020007 */ li $v0, 7 -.L7F0C168C: -/* 0F61BC 7F0C168C 03E00008 */ jr $ra -/* 0F61C0 7F0C1690 24020009 */ li $v0, 9 -.L7F0C1694: -/* 0F61C4 7F0C1694 03E00008 */ jr $ra -/* 0F61C8 7F0C1698 24020005 */ li $v0, 5 -.L7F0C169C: -/* 0F61CC 7F0C169C 03E00008 */ jr $ra -/* 0F61D0 7F0C16A0 2402000A */ li $v0, 10 -.L7F0C16A4: -/* 0F61D4 7F0C16A4 03E00008 */ jr $ra -/* 0F61D8 7F0C16A8 2402000E */ li $v0, 14 -.L7F0C16AC: -/* 0F61DC 7F0C16AC 03E00008 */ jr $ra -/* 0F61E0 7F0C16B0 2402001A */ li $v0, 26 -.L7F0C16B4: -/* 0F61E4 7F0C16B4 03E00008 */ jr $ra -/* 0F61E8 7F0C16B8 24020001 */ li $v0, 1 -.L7F0C16BC: -/* 0F61EC 7F0C16BC 03E00008 */ jr $ra -/* 0F61F0 7F0C16C0 24020011 */ li $v0, 17 -.L7F0C16C4: -/* 0F61F4 7F0C16C4 03E00008 */ jr $ra -/* 0F61F8 7F0C16C8 24020004 */ li $v0, 4 -.L7F0C16CC: -/* 0F61FC 7F0C16CC 03E00008 */ jr $ra -/* 0F6200 7F0C16D0 24020017 */ li $v0, 23 -.L7F0C16D4: -/* 0F6204 7F0C16D4 03E00008 */ jr $ra -/* 0F6208 7F0C16D8 24020014 */ li $v0, 20 - -stagetext_loop: -.L7F0C16DC: -/* 0F620C 7F0C16DC 1000FFFF */ b .L7F0C16DC -/* 0F6210 7F0C16E0 00000000 */ nop -/* 0F6214 7F0C16E4 03E00008 */ jr $ra -/* 0F6218 7F0C16E8 00601025 */ move $v0, $v1 -) -#endif - - - #ifdef NONMATCHING -void init_LnameX(void) { +void init_LnameX(void) +{ + undefined *puVar1; + u8 **ppuVar2; + int iVar3; + + if (j_text_trigger != 0) { + ptr_char_data_buf = mempAllocBytesInBank(0x2e80,'\x06'); + ptr_char_registry = mempAllocBytesInBank(0x100,'\x06'); + iVar3 = 0; + do { + ptr_char_registry[iVar3] = ptr_char_registry[iVar3] & 0x3f; + *(ushort *)(ptr_char_registry + iVar3) = *(ushort *)(ptr_char_registry + iVar3) | 0x3fff; + (ptr_char_registry + iVar3)[2] = (ptr_char_registry + iVar3)[2] & 0x3f; + *(ushort *)(ptr_char_registry + iVar3 + 2) = *(ushort *)(ptr_char_registry + iVar3 + 2) | 0x3fff; + (ptr_char_registry + iVar3)[4] = (ptr_char_registry + iVar3)[4] & 0x3f; + *(ushort *)(ptr_char_registry + iVar3 + 4) = *(ushort *)(ptr_char_registry + iVar3 + 4) | 0x3fff; + (ptr_char_registry + iVar3)[6] = (ptr_char_registry + iVar3)[6] & 0x3f; + puVar1 = ptr_char_registry + iVar3; + iVar3 += 8; + *(ushort *)(puVar1 + 6) = *(ushort *)(puVar1 + 6) | 0x3fff; + } while (iVar3 != 0xf8); + } + + ptr_text = 0; + ppuVar2 = (u8 **)table_text_pointers; + do { + ppuVar2 = ppuVar2 + 4; + ppuVar2[1] = NULL; + ppuVar2[2] = NULL; + ppuVar2[3] = NULL; + *ppuVar2 = NULL; + ppuVar2 = ppuVar2; + } while (ppuVar2 != &ptr_char_data_buf); + table_text_pointers[37] = _load_resource_named_to_membank((&ptr_LgunX)[j_text_trigger],1,0x100,6); + table_text_pointers[38] = _load_resource_named_to_membank((&ptr_LtitleX)[j_text_trigger],1,0x100,6); + table_text_pointers[39] = _load_resource_named_to_membank((&ptr_LmpmenuX)[j_text_trigger],1,0x100,6); + table_text_pointers[40] = _load_resource_named_to_membank((&ptr_LpropobjX)[j_text_trigger],1,0x100,6); + table_text_pointers[41] = _load_resource_named_to_membank((&ptr_LmpweaponsX)[j_text_trigger],1,0x100,6); + table_text_pointers[42] = _load_resource_named_to_membank((&ptr_LoptionsX)[j_text_trigger],1,0x100,6); + table_text_pointers[43] = _load_resource_named_to_membank((&ptr_LmiscX)[j_text_trigger],1,0x100,6); + return; } #else GLOBAL_ASM( -.late_rodata -/*hacks for jtbl*/ -.word .L7F0C1664 -.word .L7F0C16AC -.word .L7F0C169C -.word .L7F0C1604 -.word .L7F0C160C -.word .L7F0C1614 -.word .L7F0C161C -.word .L7F0C1674 -.word .L7F0C16A4 -.word .L7F0C1684 -.word stagetext_loop -.word .L7F0C168C -.word stagetext_loop -.word .L7F0C163C -.word stagetext_loop -.word .L7F0C16BC -.word .L7F0C16C4 -.word stagetext_loop -.word .L7F0C16B4 -.word stagetext_loop -.word .L7F0C16CC -.word stagetext_loop -.word stagetext_loop -.word stagetext_loop -.word .L7F0C16D4 - - .text glabel init_LnameX /* 0F621C 7F0C16EC 27BDFFD8 */ addiu $sp, $sp, -0x28 @@ -353,12 +239,12 @@ glabel init_LnameX /* 0F6238 7F0C1708 11000039 */ beqz $t0, .L7F0C17F0 /* 0F623C 7F0C170C AFB00018 */ sw $s0, 0x18($sp) /* 0F6240 7F0C1710 24042E80 */ li $a0, 11904 -/* 0F6244 7F0C1714 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F6244 7F0C1714 0C0025C8 */ jal mempAllocBytesInBank /* 0F6248 7F0C1718 24050006 */ li $a1, 6 /* 0F624C 7F0C171C 3C018009 */ lui $at, %hi(ptr_j_char_data_buf) /* 0F6250 7F0C1720 AC22C6F4 */ sw $v0, %lo(ptr_j_char_data_buf)($at) /* 0F6254 7F0C1724 24040100 */ li $a0, 256 -/* 0F6258 7F0C1728 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F6258 7F0C1728 0C0025C8 */ jal mempAllocBytesInBank /* 0F625C 7F0C172C 24050006 */ li $a1, 6 /* 0F6260 7F0C1730 3C048009 */ lui $a0, %hi(ptr_j_char_registry) /* 0F6264 7F0C1734 2484C6F8 */ addiu $a0, %lo(ptr_j_char_registry) # addiu $a0, $a0, -0x3908 @@ -503,8 +389,50 @@ glabel init_LnameX #ifdef NONMATCHING -void something_with_LnameJ(void) { - +void something_with_LnameJ(void) +{ + ushort uVar1; + ushort *puVar2; + int iVar3; + + iVar3 = 0; + if (j_text_trigger != 0) { + do { + puVar2 = (ushort *)(ptr_char_registry + iVar3); + if (*puVar2 >> 0xe == 0) { + uVar1 = puVar2[1]; + } + else { + *(byte *)puVar2 = ((byte)(*puVar2 >> 0xe) - 1) * '@' | *(byte *)puVar2 & 0x3f; + puVar2 = (ushort *)(ptr_char_registry + iVar3); + uVar1 = puVar2[1]; + } + if (uVar1 >> 0xe == 0) { + uVar1 = puVar2[2]; + } + else { + *(byte *)(puVar2 + 1) = + ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 1) & 0x3f; + puVar2 = (ushort *)(ptr_char_registry + iVar3); + uVar1 = puVar2[2]; + } + if (uVar1 >> 0xe == 0) { + uVar1 = puVar2[3]; + } + else { + *(byte *)(puVar2 + 2) = + ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 2) & 0x3f; + puVar2 = (ushort *)(ptr_char_registry + iVar3); + uVar1 = puVar2[3]; + } + iVar3 += 8; + if (uVar1 >> 0xe != 0) { + *(byte *)(puVar2 + 3) = + ((byte)(uVar1 >> 0xe) - 1) * '@' | *(byte *)(puVar2 + 3) & 0x3f; + } + } while (iVar3 != 0xf8); + } + return; } #else GLOBAL_ASM( @@ -584,8 +512,84 @@ glabel something_with_LnameJ #ifdef NONMATCHING -void something_with_LnameX(void) { - +int something_with_LnameX(uint param_1) +{ + bool bVar1; + ushort uVar3; + u8 *puVar2; + int iVar4; + ushort *puVar5; + int iVar6; + int iVar7; + int indexto; + int iVar8; + int iVar9; + int indexfrom; + + indexto = -1; + bVar1 = (param_1 & 0x2000) != 0; + iVar7 = 0; + iVar4 = 0; + iVar9 = -1; + puVar5 = (ushort *)ptr_char_registry; + do { + indexfrom = (int)param_1 >> 1; + if ((!bVar1) && ((longlong)indexfrom == ((ulonglong)*puVar5 & 0x3fff))) break; + if ((bVar1) && + (((iVar4 + 1 < 0x7c && ((longlong)indexfrom == ((ulonglong)*puVar5 & 0x3fff))) && + ((longlong)indexfrom == ((ulonglong)puVar5[1] & 0x3fff))))) break; + uVar3 = *puVar5 >> 0xe; + iVar6 = iVar4 + 1; + if (uVar3 == 0) { + indexto = iVar4; + } + iVar7 += 2; + iVar8 = iVar9; + if (((uVar3 == 0) && (puVar5[1] >> 0xe == 0)) && (iVar8 = iVar4, 0x7b < iVar6)) { + iVar8 = iVar9; + } + puVar5 = puVar5 + 1; + iVar4 = iVar6; + iVar9 = iVar8; + } while (iVar6 != 0x7c); + if (iVar4 < 0x7c) { + if (bVar1) { + *(byte *)puVar5 = *(byte *)puVar5 & 0x3f | 0x80; + (ptr_char_registry + iVar7)[2] = (ptr_char_registry + iVar7)[2] & 0x3f | 0x80; + puVar2 = ptr_char_data_buf + iVar4 * 0x60; + } + else { + *(byte *)puVar5 = *(byte *)puVar5 & 0x3f | 0x80; + puVar2 = ptr_char_data_buf + iVar4 * 0x60; + } + } + else { + if ((bVar1) || (indexto < 0)) { + puVar2 = ptr_char_data_buf; + if ((bVar1) && (iVar4 = iVar9 * 2, -1 < iVar9)) { + ptr_char_registry[iVar4] = ptr_char_registry[iVar4] & 0x3f | 0x80; + (ptr_char_registry + iVar4)[2] = (ptr_char_registry + iVar4)[2] & 0x3f | 0x80; + uVar3 = (ushort)indexfrom & 0x3fff; + *(ushort *)(ptr_char_registry + iVar4) = + uVar3 | *(ushort *)(ptr_char_registry + iVar4) & 0xc000; + *(ushort *)(ptr_char_registry + iVar4 + 2) = + uVar3 | *(ushort *)(ptr_char_registry + iVar4 + 2) & 0xc000; + romCopy((char *)(ptr_char_data_buf + iVar9 * 0x60), + (char *)(_efontcharSegmentStart + ((int)(param_1 & 0x1fff) >> 1) * 0x20), + 0x80); + puVar2 = ptr_char_data_buf + iVar9 * 0x60; + } + } + else { + ptr_char_registry[indexto * 2] = ptr_char_registry[indexto * 2] & 0x3f | 0x80; + *(ushort *)(ptr_char_registry + indexto * 2) = + (ushort)indexfrom & 0x3fff | *(ushort *)(ptr_char_registry + indexto * 2) & 0xc000; + romCopy((char *)(ptr_char_data_buf + indexto * 0x60), + (char *)(_jfontcharSegmentStart + indexfrom * 0x18),0x60); + puVar2 = ptr_char_data_buf + indexto * 0x60; + } + } + return (int)puVar2; } #else GLOBAL_ASM( @@ -797,13 +801,10 @@ glabel something_with_LnameX #ifdef NONMATCHING -void load_mission_text_bank(s32 arg0, s32 arg6) { - // Node 0 - *(&ptr_text + (arg6 * 4)) = _load_resource_named_to_membank(*(&LnameX_lookuptable + ((arg0 * 8) + (j_text_trigger * 4))), 1, 0x100, 4); - return; - // (possible return value: _load_resource_named_to_membank(*(&LnameX_lookuptable + ((arg0 * 8) + (j_text_trigger * 4))), 1, 0x100, 4)) +void load_mission_text_bank(u32 param_1) +{ + *(u8 **)(&ptr_text + param_1) = _load_resource_named_to_membank((byte *)(&(&LnameX_lookuptable)[param_1].en_file)[j_text_trigger],1,0x100,4); } - #else GLOBAL_ASM( .text @@ -839,13 +840,10 @@ glabel load_mission_text_bank #ifdef NONMATCHING -void load_briefing_text_bank(s32 arg0, s32 arg1, ? arg2, s32 arg6) { - // Node 0 - *(&ptr_text + (arg6 * 4)) = _load_resource_named_to_buffer(*(&LnameX_lookuptable + ((arg0 * 8) + (j_text_trigger * 4))), 1, arg1, arg2); - return; - // (possible return value: _load_resource_named_to_buffer(*(&LnameX_lookuptable + ((arg0 * 8) + (j_text_trigger * 4))), 1, arg1, arg2)) +void load_briefing_text_bank(int lnameID,undefined *target,int size) +{ + *(u8 **)(&ptr_text + lnameID) = _load_resource_named_to_buffer((byte *)(&(&LnameX_lookuptable)[lnameID].en_file)[j_text_trigger],1,target, size); } - #else GLOBAL_ASM( .text diff --git a/src/game/lvl_text.h b/src/game/lvl_text.h index dab8e4c..c059aa9 100644 --- a/src/game/lvl_text.h +++ b/src/game/lvl_text.h @@ -6,4 +6,6 @@ struct stringentry { char *string[]; }; +extern s32 j_text_trigger; + #endif diff --git a/src/game/mainmenu.c b/src/game/mainmenu.c index d4880fd..9ebabcd 100644 --- a/src/game/mainmenu.c +++ b/src/game/mainmenu.c @@ -5,6 +5,7 @@ #include "game/unk_093880.h" #include "music.h" #include "game/textrelated.h" +#include "game/lvl.h" // bss //CODE.bss:800695A0 @@ -1848,9 +1849,9 @@ glabel D_800519F4 .word 0xBFB2B8C3 /* -1.3962635;*/ glabel D_800519F8 .word 0x3C962FC9 /* 0.018333333;*/ -glabel D_800519FC +glabel menu01_aspect .word 0x3FAAAAAB /* 1.3333334;*/ -glabel D_80051A00 +glabel menu01_pageheight .word 0x461C4000 /* 10000.0;*/ glabel D_80051A04 .word 0x3C8EFA35 /* 0.017453292;*/ @@ -2189,9 +2190,9 @@ glabel D_800519F4 .word 0xBFB2B8C3 /* -1.3962635;*/ glabel D_800519F8 .word 0x3C962FC9 /* 0.018333333;*/ -glabel D_800519FC +glabel menu01_aspect .word 0x3FAAAAAB /* 1.3333334;*/ -glabel D_80051A00 +glabel menu01_pageheight .word 0x461C4000 /* 10000.0;*/ glabel D_80051A04 .word 0x3C8EFA35 /* 0.017453292;*/ @@ -2656,7 +2657,7 @@ s32 add_tab1_start(s32 arg0) { // Node 0 dword_CODE_bss_80069770 = get_textptr_for_textID(TEXT(LTITLE, 0x04)); - sub_GAME_7F0ACB78(1); + setTextSpacingInverted(1); sp48 = 0; sp4C = 0; sub_GAME_7F0AE98C(&sp4C, &sp48, dword_CODE_bss_80069770, ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0); @@ -2673,7 +2674,7 @@ s32 add_tab1_start(s32 arg0) { microcode_constructor_related_to_menus(arg0, ((temp_a3 - sp4C) + 1), 0x33, temp_a3, 0x75, 0x32); } // Node 4 - sub_GAME_7F0ACB88(1, temp_a3); + setTextOrientation(1, temp_a3); if (sp48 < 0) { // Node 5 @@ -2682,8 +2683,8 @@ s32 add_tab1_start(s32 arg0) { sp54 = (s32) (0x54 - (sp48 >> 1)); sp44 = get_video2_settings_txtClipH(); en_text_write_stuff(arg0, &sp54, &sp50, dword_CODE_bss_80069770, (?32) ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0xff, sp44, get_video2_settings_txtClipW(), 0, 0); - sub_GAME_7F0ACB88(0); - sub_GAME_7F0ACB78(0); + setTextOrientation(0); + setTextSpacingInverted(0); return; // (possible return value: en_text_write_stuff(arg0, &sp54, &sp50, dword_CODE_bss_80069770, (?32) ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0xff, sp44, get_video2_settings_txtClipW(), 0, 0)) } @@ -2699,7 +2700,7 @@ glabel add_tab1_start /* 03EBC4 7F00A094 34049C04 */ li $a0, 39940 /* 03EBC8 7F00A098 3C018007 */ lui $at, %hi(dword_CODE_bss_80069770) /* 03EBCC 7F00A09C AC229770 */ sw $v0, %lo(dword_CODE_bss_80069770)($at) -/* 03EBD0 7F00A0A0 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 03EBD0 7F00A0A0 0FC2B2DE */ jal setTextSpacingInverted /* 03EBD4 7F00A0A4 24040001 */ li $a0, 1 /* 03EBD8 7F00A0A8 3C0E8004 */ lui $t6, %hi(ptrFirstFontTableSmall) /* 03EBDC 7F00A0AC 8DCE0EAC */ lw $t6, %lo(ptrFirstFontTableSmall)($t6) @@ -2740,7 +2741,7 @@ glabel add_tab1_start /* 03EC64 7F00A134 AFA70050 */ sw $a3, 0x50($sp) /* 03EC68 7F00A138 00408025 */ move $s0, $v0 .L7F00A13C: -/* 03EC6C 7F00A13C 0FC2B2E2 */ jal sub_GAME_7F0ACB88 +/* 03EC6C 7F00A13C 0FC2B2E2 */ jal setTextOrientation /* 03EC70 7F00A140 24040001 */ li $a0, 1 /* 03EC74 7F00A144 8FAC0048 */ lw $t4, 0x48($sp) /* 03EC78 7F00A148 240E0054 */ li $t6, 84 @@ -2774,9 +2775,9 @@ glabel add_tab1_start /* 03ECE4 7F00A1B4 0FC2B6AF */ jal en_text_write_stuff /* 03ECE8 7F00A1B8 AFB8001C */ sw $t8, 0x1c($sp) /* 03ECEC 7F00A1BC 00408025 */ move $s0, $v0 -/* 03ECF0 7F00A1C0 0FC2B2E2 */ jal sub_GAME_7F0ACB88 +/* 03ECF0 7F00A1C0 0FC2B2E2 */ jal setTextOrientation /* 03ECF4 7F00A1C4 00002025 */ move $a0, $zero -/* 03ECF8 7F00A1C8 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 03ECF8 7F00A1C8 0FC2B2DE */ jal setTextSpacingInverted /* 03ECFC 7F00A1CC 00002025 */ move $a0, $zero /* 03ED00 7F00A1D0 8FBF003C */ lw $ra, 0x3c($sp) /* 03ED04 7F00A1D4 02001025 */ move $v0, $s0 @@ -2841,7 +2842,7 @@ s32 add_tab3_previous(s32 arg0) { // Node 0 dword_CODE_bss_80069778 = get_textptr_for_textID(TEXT(LTITLE, 0x06)); - sub_GAME_7F0ACB78(1); + setTextSpacingInverted(1); sp48 = 0; sp4C = 0; sub_GAME_7F0AE98C(&sp4C, &sp48, dword_CODE_bss_80069778, ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0); @@ -2858,7 +2859,7 @@ s32 add_tab3_previous(s32 arg0) { microcode_constructor_related_to_menus(arg0, ((temp_a3 - sp4C) + 1), 0xec, temp_a3, 0x12e, 0x32); } // Node 4 - sub_GAME_7F0ACB88(1, temp_a3); + setTextOrientation(1, temp_a3); if (sp48 < 0) { // Node 5 @@ -2867,8 +2868,8 @@ s32 add_tab3_previous(s32 arg0) { sp54 = (s32) (0x10d - (sp48 >> 1)); sp44 = get_video2_settings_txtClipH(); en_text_write_stuff(arg0, &sp54, &sp50, dword_CODE_bss_80069778, (?32) ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0xff, sp44, get_video2_settings_txtClipW(), 0, 0); - sub_GAME_7F0ACB88(0); - sub_GAME_7F0ACB78(0); + setTextOrientation(0); + setTextSpacingInverted(0); return; // (possible return value: en_text_write_stuff(arg0, &sp54, &sp50, dword_CODE_bss_80069778, (?32) ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0xff, sp44, get_video2_settings_txtClipW(), 0, 0)) } @@ -2884,7 +2885,7 @@ glabel add_tab3_previous /* 03ED7C 7F00A24C 34049C06 */ li $a0, 39942 /* 03ED80 7F00A250 3C018007 */ lui $at, %hi(dword_CODE_bss_80069778) /* 03ED84 7F00A254 AC229778 */ sw $v0, %lo(dword_CODE_bss_80069778)($at) -/* 03ED88 7F00A258 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 03ED88 7F00A258 0FC2B2DE */ jal setTextSpacingInverted /* 03ED8C 7F00A25C 24040001 */ li $a0, 1 /* 03ED90 7F00A260 3C0E8004 */ lui $t6, %hi(ptrFirstFontTableSmall) /* 03ED94 7F00A264 8DCE0EAC */ lw $t6, %lo(ptrFirstFontTableSmall)($t6) @@ -2925,7 +2926,7 @@ glabel add_tab3_previous /* 03EE1C 7F00A2EC AFA70050 */ sw $a3, 0x50($sp) /* 03EE20 7F00A2F0 00408025 */ move $s0, $v0 .L7F00A2F4: -/* 03EE24 7F00A2F4 0FC2B2E2 */ jal sub_GAME_7F0ACB88 +/* 03EE24 7F00A2F4 0FC2B2E2 */ jal setTextOrientation /* 03EE28 7F00A2F8 24040001 */ li $a0, 1 /* 03EE2C 7F00A2FC 8FAC0048 */ lw $t4, 0x48($sp) /* 03EE30 7F00A300 240E010D */ li $t6, 269 @@ -2959,9 +2960,9 @@ glabel add_tab3_previous /* 03EE9C 7F00A36C 0FC2B6AF */ jal en_text_write_stuff /* 03EEA0 7F00A370 AFB8001C */ sw $t8, 0x1c($sp) /* 03EEA4 7F00A374 00408025 */ move $s0, $v0 -/* 03EEA8 7F00A378 0FC2B2E2 */ jal sub_GAME_7F0ACB88 +/* 03EEA8 7F00A378 0FC2B2E2 */ jal setTextOrientation /* 03EEAC 7F00A37C 00002025 */ move $a0, $zero -/* 03EEB0 7F00A380 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 03EEB0 7F00A380 0FC2B2DE */ jal setTextSpacingInverted /* 03EEB4 7F00A384 00002025 */ move $a0, $zero /* 03EEB8 7F00A388 8FBF003C */ lw $ra, 0x3c($sp) /* 03EEBC 7F00A38C 02001025 */ move $v0, $s0 @@ -3003,7 +3004,7 @@ s32 add_tab2_next(s32 arg0) { // Node 0 dword_CODE_bss_80069774 = get_textptr_for_textID(TEXT(LTITLE, 0x05)); - sub_GAME_7F0ACB78(1); + setTextSpacingInverted(1); sp48 = 0; sp4C = 0; sub_GAME_7F0AE98C(&sp4C, &sp48, dword_CODE_bss_80069774, ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0); @@ -3020,7 +3021,7 @@ s32 add_tab2_next(s32 arg0) { microcode_constructor_related_to_menus(arg0, ((temp_a3 - sp4C) + 1), 0x90, temp_a3, 0xd2, 0x32); } // Node 4 - sub_GAME_7F0ACB88(1, temp_a3); + setTextOrientation(1, temp_a3); if (sp48 < 0) { // Node 5 @@ -3029,8 +3030,8 @@ s32 add_tab2_next(s32 arg0) { sp54 = (s32) (0xb1 - (sp48 >> 1)); sp44 = get_video2_settings_txtClipH(); en_text_write_stuff(arg0, &sp54, &sp50, dword_CODE_bss_80069774, (?32) ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0xff, sp44, get_video2_settings_txtClipW(), 0, 0); - sub_GAME_7F0ACB88(0); - sub_GAME_7F0ACB78(0); + setTextOrientation(0); + setTextSpacingInverted(0); return; // (possible return value: en_text_write_stuff(arg0, &sp54, &sp50, dword_CODE_bss_80069774, (?32) ptrSecondFontTableSmall, (?32) ptrFirstFontTableSmall, 0xff, sp44, get_video2_settings_txtClipW(), 0, 0)) } @@ -3046,7 +3047,7 @@ glabel add_tab2_next /* 03EF58 7F00A428 34049C05 */ li $a0, 39941 /* 03EF5C 7F00A42C 3C018007 */ lui $at, %hi(dword_CODE_bss_80069774) /* 03EF60 7F00A430 AC229774 */ sw $v0, %lo(dword_CODE_bss_80069774)($at) -/* 03EF64 7F00A434 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 03EF64 7F00A434 0FC2B2DE */ jal setTextSpacingInverted /* 03EF68 7F00A438 24040001 */ li $a0, 1 /* 03EF6C 7F00A43C 3C0E8004 */ lui $t6, %hi(ptrFirstFontTableSmall) /* 03EF70 7F00A440 8DCE0EAC */ lw $t6, %lo(ptrFirstFontTableSmall)($t6) @@ -3087,7 +3088,7 @@ glabel add_tab2_next /* 03EFF8 7F00A4C8 AFA70050 */ sw $a3, 0x50($sp) /* 03EFFC 7F00A4CC 00408025 */ move $s0, $v0 .L7F00A4D0: -/* 03F000 7F00A4D0 0FC2B2E2 */ jal sub_GAME_7F0ACB88 +/* 03F000 7F00A4D0 0FC2B2E2 */ jal setTextOrientation /* 03F004 7F00A4D4 24040001 */ li $a0, 1 /* 03F008 7F00A4D8 8FAC0048 */ lw $t4, 0x48($sp) /* 03F00C 7F00A4DC 240E00B1 */ li $t6, 177 @@ -3121,9 +3122,9 @@ glabel add_tab2_next /* 03F078 7F00A548 0FC2B6AF */ jal en_text_write_stuff /* 03F07C 7F00A54C AFB8001C */ sw $t8, 0x1c($sp) /* 03F080 7F00A550 00408025 */ move $s0, $v0 -/* 03F084 7F00A554 0FC2B2E2 */ jal sub_GAME_7F0ACB88 +/* 03F084 7F00A554 0FC2B2E2 */ jal setTextOrientation /* 03F088 7F00A558 00002025 */ move $a0, $zero -/* 03F08C 7F00A55C 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 03F08C 7F00A55C 0FC2B2DE */ jal setTextSpacingInverted /* 03F090 7F00A560 00002025 */ move $a0, $zero /* 03F094 7F00A564 8FBF003C */ lw $ra, 0x3c($sp) /* 03F098 7F00A568 02001025 */ move $v0, $s0 @@ -3251,7 +3252,7 @@ void interface_menu00_legalscreen(undefined8 param_1,undefined8 param_2) { undefined8 extraout_a2_00; undefined8 extraout_a3; - video_related_1F(param_1._4_4_,param_2,in_a2); + setvideo_far(param_1._4_4_,param_2,in_a2); video_related_21(extraout_a0_lo,extraout_a1,extraout_a2); set_page_height(extraout_a0_lo_00,extraout_a1_lo,extraout_a2_00,extraout_a3); set_video2_settings_offset_24(0); @@ -3284,7 +3285,7 @@ glabel interface_menu00_legalscreen /* 03F210 7F00A6E0 3C014270 */ li $at, 0x42700000 # 60.000000 /* 03F214 7F00A6E4 AFBF0014 */ sw $ra, 0x14($sp) /* 03F218 7F00A6E8 44816000 */ mtc1 $at, $f12 -/* 03F21C 7F00A6EC 0C001151 */ jal video_related_1F +/* 03F21C 7F00A6EC 0C001151 */ jal setvideo_far /* 03F220 7F00A6F0 00000000 */ nop /* 03F224 7F00A6F4 3C018005 */ lui $at, %hi(D_800519E4) /* 03F228 7F00A6F8 0C001164 */ jal video_related_21 @@ -3699,7 +3700,7 @@ void *interface_menu17_switchscreens(void) { s32 temp_t7; - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_800519EC); set_page_height(0x42c80000, D_800519F0); set_video2_settings_offset_24(0); @@ -3726,7 +3727,7 @@ glabel interface_menu17_switchscreens /* 03F634 7F00AB04 3C014270 */ li $at, 0x42700000 # 60.000000 /* 03F638 7F00AB08 AFBF0014 */ sw $ra, 0x14($sp) /* 03F63C 7F00AB0C 44816000 */ mtc1 $at, $f12 -/* 03F640 7F00AB10 0C001151 */ jal video_related_1F +/* 03F640 7F00AB10 0C001151 */ jal setvideo_far /* 03F644 7F00AB14 00000000 */ nop /* 03F648 7F00AB18 3C018005 */ lui $at, %hi(D_800519EC) /* 03F64C 7F00AB1C 0C001164 */ jal video_related_21 @@ -3772,9 +3773,9 @@ glabel interface_menu17_switchscreens -void constructor_menu17_switchscreens(void) +void constructor_menu17_switchscreens(Gfx * DL) { - insert_imageDL(); + insert_imageDL(DL); } @@ -3786,23 +3787,21 @@ void constructor_menu17_switchscreens(void) #ifdef NONMATCHING void init_menu01_nintendo(void) { - ? sp24; - s32 temp_ret; - + struct xyzpoint local_c; + menu_timer = 0; - sp24.unk0 = (?32) D_8002AAFC.unk0; - sp24.unk4 = (?32) D_8002AAFC.unk4; - sp24.unk8 = (?32) D_8002AAFC.unk8; - load_object_fill_header(PitemZ_entries.unkCF0, PitemZ_entries.unkCF4, ptr_logo_and_walletbond_DL, 0x3c000, 0); - set_objuse_flag_compute_grp_nums_set_obj_loaded(PnintendologoZ_header); - temp_ret = get_obj_instance_controller_for_header(PnintendologoZ_header); - something_legalscreen_constructor = temp_ret; - set_obj_instance_controller_scale(temp_ret, 0x3f800000); - setsuboffset(something_legalscreen_constructor, &sp24); - musicTrack1Play(0x2c); - maybe_is_in_menu = 1; - flt_CODE_bss_80069614 = (f32) D_800519F4; - (void *)0x80070000->unk-69E8 = (f32) D_800519F8; + local_c.x = xyzpoint_8002aafc.x; + local_c.y = xyzpoint_8002aafc.y; + local_c.z = xyzpoint_8002aafc.z; + load_object_fill_header(PitemZ_entries[276].header, PitemZ_entries[276].filename, ptr_logo_and_walletbond_DL,0x3c000,0); + set_objuse_flag_compute_grp_nums_set_obj_loaded(PitemZ_entries[276].header); + something_screen_constructor = get_obj_instance_controller_for_header(PitemZ_entries[276].header); + set_obj_instance_controller_scale(something_screen_constructor, 1.0f); + setsuboffset(something_screen_constructor, &local_c); + musicTrack1Play(M_INTROSWOOSH); + maybe_is_in_menu = TRUE; + flt_CODE_bss_80069614 = D_800519F4; + flt_CODE_bss_80069618 = D_800519F8; } #else GLOBAL_ASM( @@ -3878,32 +3877,37 @@ void update_menu01_nintendo(void) - #ifdef NONMATCHING +extern f32 menu01_aspect; +extern f32 menu01_pageheight; + void interface_menu01_nintendo(void) { - s32 temp_t8; + setvideo_far(60.0f); + video_related_21(menu01_aspect); + set_page_height(100.0f, menu01_pageheight); + set_video2_settings_offset_24(0.0f); - video_related_1F(0x42700000); - video_related_21(D_800519FC); - set_page_height(0x42c80000, D_80051A00); - set_video2_settings_offset_24(0); - temp_t8 = menu_timer + clock_timer; - menu_timer = temp_t8; - if (temp_t8 >= 0x1f5) + menu_timer = menu_timer + clock_timer; + if (menu_timer < 501) { - set_menu_to_mode(2, 1); - return; - } - if (get_controller_buttons_pressed(0, 0xffff) != 0) - { - if (is_first_time_on_main_menu == 0) + if (get_controller_buttons_pressed(0, 0xffff) != 0) { - set_menu_to_mode(5, 1); - return; + if (is_first_time_on_main_menu == 0) + { + set_menu_to_mode(MENU_FILE_SELECT, 1); + } + else + { + prev_keypresses = 1; + set_menu_to_mode(MENU_RAREWARE_LOGO, 1); + } } - prev_keypresses = 1; - set_menu_to_mode(2, 1); + } + else + { + set_menu_to_mode(MENU_RAREWARE_LOGO, 1); + return; } } #else @@ -3914,16 +3918,16 @@ glabel interface_menu01_nintendo /* 03F7FC 7F00ACCC 3C014270 */ li $at, 0x42700000 # 60.000000 /* 03F800 7F00ACD0 AFBF0014 */ sw $ra, 0x14($sp) /* 03F804 7F00ACD4 44816000 */ mtc1 $at, $f12 -/* 03F808 7F00ACD8 0C001151 */ jal video_related_1F +/* 03F808 7F00ACD8 0C001151 */ jal setvideo_far /* 03F80C 7F00ACDC 00000000 */ nop -/* 03F810 7F00ACE0 3C018005 */ lui $at, %hi(D_800519FC) +/* 03F810 7F00ACE0 3C018005 */ lui $at, %hi(menu01_aspect) /* 03F814 7F00ACE4 0C001164 */ jal video_related_21 -/* 03F818 7F00ACE8 C42C19FC */ lwc1 $f12, %lo(D_800519FC)($at) +/* 03F818 7F00ACE8 C42C19FC */ lwc1 $f12, %lo(menu01_aspect)($at) /* 03F81C 7F00ACEC 3C0142C8 */ li $at, 0x42C80000 # 100.000000 /* 03F820 7F00ACF0 44816000 */ mtc1 $at, $f12 -/* 03F824 7F00ACF4 3C018005 */ lui $at, %hi(D_80051A00) +/* 03F824 7F00ACF4 3C018005 */ lui $at, %hi(menu01_pageheight) /* 03F828 7F00ACF8 0C001194 */ jal set_page_height -/* 03F82C 7F00ACFC C42E1A00 */ lwc1 $f14, %lo(D_80051A00)($at) +/* 03F82C 7F00ACFC C42E1A00 */ lwc1 $f14, %lo(menu01_pageheight)($at) /* 03F830 7F00AD00 0C00114D */ jal set_video2_settings_offset_24 /* 03F834 7F00AD04 00002025 */ move $a0, $zero /* 03F838 7F00AD08 3C028003 */ lui $v0, %hi(menu_timer) @@ -4299,8 +4303,8 @@ void interface_menu02_rareware(void) } } -void constructor_menu02_rareware(void) { - retrieve_display_rareware_logo(); +void constructor_menu02_rareware(Gfx * DL) { + retrieve_display_rareware_logo(DL); } @@ -4331,8 +4335,8 @@ void interface_menu03_eye(void) { } } -void constructor_menu03_eye(void) { - sub_GAME_7F009254(); +void constructor_menu03_eye(Gfx * DL) { + sub_GAME_7F009254(DL); } @@ -4422,56 +4426,45 @@ void update_menu04_goldeneye(void) { #ifdef NONMATCHING void interface_menu04_goldeneyelogo(void) { - s32 temp_t8; - - video_related_1F(0x42700000); - video_related_21(D_80051A10); - set_page_height(0x42c80000, D_80051A14); + u32 uVar1; + + setvideo_far(60.00000000); + video_related_21(menu04_aspect); + set_page_height(100.00000000,(f32)menu04_pageheight); set_video2_settings_offset_24(0); - temp_t8 = menu_timer + clock_timer; - menu_timer = temp_t8; - if (((is_first_time_on_main_menu != 0) && (temp_t8 < 0xb5)) && (D_8002A938 != 0)) - { - if ((temp_t8 >= 0x5b) && (menu_timer >= 0xb5)) - { -block_5: - if (prev_keypresses == 0) + menu_timer += clock_timer; + if (((is_first_time_on_main_menu == FALSE) || (0xb4 < menu_timer)) || + ((ge_logo_bool != FALSE && (0x5a < menu_timer)))) { + if (menu_timer < 0xb5) { + uVar1 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG| + DUMMY_2|DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG| + B_BUTTON|A_BUTTON); + if ((uVar1 != 0) || ((is_first_time_on_main_menu != FALSE && (ge_logo_bool != FALSE)))) { + set_menu_to_mode(MENU_FILE_SELECT,1); + } + } + else { + if (prev_keypresses == 0) { do_extended_cast_display(0); - set_menu_to_mode(0x18, 1); - return; + set_menu_to_mode(MENU_DISPLAY_CAST,1); } - set_menu_to_mode(5, 1); - return; - } - else - { - if (get_controller_buttons_pressed(0, 0xffff) != 0) - { - D_8002A938 = 1; + else { + set_menu_to_mode(MENU_FILE_SELECT,1); } } } - else - { - if (menu_timer >= 0xb5) - { - goto block_5; - } - if (get_controller_buttons_pressed(0, 0xffff) != 0) - { -block_11: - set_menu_to_mode(5, 1); - return; - } - if (is_first_time_on_main_menu != 0) - { - if (D_8002A938 != 0) - { - goto block_11; - } + else { + uVar1 = get_controller_buttons_pressed + ('\0',R_CBUTTONS|L_CBUTTONS|D_CBUTTONS|U_CBUTTONS|R_TRIG|L_TRIG|DUMMY_2| + DUMMY_1|R_JPAD|L_JPAD|D_JPAD|U_JPAD|START_BUTTON|Z_TRIG|B_BUTTON| + A_BUTTON); + if (uVar1 != 0) { + ge_logo_bool = TRUE; } } + return; } #else GLOBAL_ASM( @@ -4481,7 +4474,7 @@ glabel interface_menu04_goldeneyelogo /* 03FE64 7F00B334 3C014270 */ li $at, 0x42700000 # 60.000000 /* 03FE68 7F00B338 AFBF0014 */ sw $ra, 0x14($sp) /* 03FE6C 7F00B33C 44816000 */ mtc1 $at, $f12 -/* 03FE70 7F00B340 0C001151 */ jal video_related_1F +/* 03FE70 7F00B340 0C001151 */ jal setvideo_far /* 03FE74 7F00B344 00000000 */ nop /* 03FE78 7F00B348 3C018005 */ lui $at, %hi(D_80051A10) /* 03FE7C 7F00B34C 0C001164 */ jal video_related_21 @@ -5412,7 +5405,7 @@ s32 interface_menu05_fileselect(void) { menu_timer = (s32) (menu_timer + clock_timer); } - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051A1C); set_page_height(0x42c80000, D_80051A20); set_video2_settings_offset_24(0); @@ -5674,7 +5667,7 @@ glabel interface_menu05_fileselect .L7F00BC70: /* 0407A0 7F00BC70 3C014270 */ li $at, 0x42700000 # 60.000000 /* 0407A4 7F00BC74 44816000 */ mtc1 $at, $f12 -/* 0407A8 7F00BC78 0C001151 */ jal video_related_1F +/* 0407A8 7F00BC78 0C001151 */ jal setvideo_far /* 0407AC 7F00BC7C 00000000 */ nop /* 0407B0 7F00BC80 3C018005 */ lui $at, %hi(D_80051A1C) /* 0407B4 7F00BC84 0C001164 */ jal video_related_21 @@ -6377,7 +6370,7 @@ loop_4: goto loop_1; } arg0 = microcode_constructor(arg0); - sub_GAME_7F0ACB78(0); + setTextSpacingInverted(0); sp74 = &dword_CODE_bss_80069620; sp1B4 = 0; loop_7: @@ -6445,7 +6438,7 @@ loop_7: if (temp_ret_3 != 0) { textpointer_load_parse_something(&spD0, temp_ret_3); - string_load_parse_something(&spD0, &asc_D_8004F488); + string_append_from_obseg_textbank(&spD0, &asc_D_8004F488); spF4 = 0; spF8 = 0; sub_GAME_7F0AE98C(&spF8, &spF4, &spD0, ptrSecondFontTableLarge, (?32) ptrFirstFontTableLarge, 0); @@ -6488,11 +6481,11 @@ loop_24: } if (phi_s2_2 >= 0) { - string_load_parse_something(&spBC, *((((phi_s2_2 * 8) - phi_s2_2) * 4) + &mission_folder_setup_entries)); - string_load_parse_something(&spBC, &a_); + string_append_from_obseg_textbank(&spBC, *((((phi_s2_2 * 8) - phi_s2_2) * 4) + &mission_folder_setup_entries)); + string_append_from_obseg_textbank(&spBC, &a_); } - string_load_parse_something(&spBC, *((((phi_s1_3 * 8) - phi_s1_3) * 4) + &mission_folder_setup_entries)); - string_load_parse_something(&spBC, &asc_D_8004F490); + string_append_from_obseg_textbank(&spBC, *((((phi_s1_3 * 8) - phi_s1_3) * 4) + &mission_folder_setup_entries)); + string_append_from_obseg_textbank(&spBC, &asc_D_8004F490); spF4 = 0; spF8 = 0; sub_GAME_7F0AE98C(&spF8, &spF4, &spBC, ptrSecondFontTableLarge, (?32) ptrFirstFontTableLarge, 0); @@ -6515,7 +6508,7 @@ loop_24: { goto loop_7; } - sub_GAME_7F0ACB78(0); + setTextSpacingInverted(0); temp_ret_4 = get_textptr_for_textID(TEXT(LTITLE, 0x1b)); spF4 = 0; spF8 = 0; @@ -6742,7 +6735,7 @@ glabel constructor_menu05_fileselect /* 041160 7F00C630 0FC2B366 */ jal microcode_constructor /* 041164 7F00C634 8FA401B8 */ lw $a0, 0x1b8($sp) /* 041168 7F00C638 AFA201B8 */ sw $v0, 0x1b8($sp) -/* 04116C 7F00C63C 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 04116C 7F00C63C 0FC2B2DE */ jal setTextSpacingInverted /* 041170 7F00C640 00002025 */ move $a0, $zero /* 041174 7F00C644 3C0B8007 */ lui $t3, %hi(dword_CODE_bss_80069620) /* 041178 7F00C648 256B9620 */ addiu $t3, %lo(dword_CODE_bss_80069620) # addiu $t3, $t3, -0x69e0 @@ -7029,7 +7022,7 @@ glabel constructor_menu05_fileselect /* 0415C4 7F00CA94 00402825 */ move $a1, $v0 /* 0415C8 7F00CA98 3C058005 */ lui $a1, %hi(asc_D_8004F488) /* 0415CC 7F00CA9C 24A5F488 */ addiu $a1, %lo(asc_D_8004F488) # addiu $a1, $a1, -0xb78 -/* 0415D0 7F00CAA0 0C0029FF */ jal string_load_parse_something +/* 0415D0 7F00CAA0 0C0029FF */ jal string_append_from_obseg_textbank /* 0415D4 7F00CAA4 27A400D0 */ addiu $a0, $sp, 0xd0 /* 0415D8 7F00CAA8 8E980000 */ lw $t8, ($s4) /* 0415DC 7F00CAAC AFA000F4 */ sw $zero, 0xf4($sp) @@ -7125,19 +7118,19 @@ glabel constructor_menu05_fileselect /* 041730 7F00CC00 000A5080 */ sll $t2, $t2, 2 /* 041734 7F00CC04 014E4821 */ addu $t1, $t2, $t6 /* 041738 7F00CC08 8D250000 */ lw $a1, ($t1) -/* 04173C 7F00CC0C 0C0029FF */ jal string_load_parse_something +/* 04173C 7F00CC0C 0C0029FF */ jal string_append_from_obseg_textbank /* 041740 7F00CC10 02A02025 */ move $a0, $s5 /* 041744 7F00CC14 3C058005 */ lui $a1, %hi(a_) /* 041748 7F00CC18 24A5F48C */ addiu $a1, %lo(a_) # addiu $a1, $a1, -0xb74 -/* 04174C 7F00CC1C 0C0029FF */ jal string_load_parse_something +/* 04174C 7F00CC1C 0C0029FF */ jal string_append_from_obseg_textbank /* 041750 7F00CC20 02A02025 */ move $a0, $s5 .L7F00CC24: /* 041754 7F00CC24 02A02025 */ move $a0, $s5 -/* 041758 7F00CC28 0C0029FF */ jal string_load_parse_something +/* 041758 7F00CC28 0C0029FF */ jal string_append_from_obseg_textbank /* 04175C 7F00CC2C 8E050000 */ lw $a1, ($s0) /* 041760 7F00CC30 3C058005 */ lui $a1, %hi(asc_D_8004F490) /* 041764 7F00CC34 24A5F490 */ addiu $a1, %lo(asc_D_8004F490) # addiu $a1, $a1, -0xb70 -/* 041768 7F00CC38 0C0029FF */ jal string_load_parse_something +/* 041768 7F00CC38 0C0029FF */ jal string_append_from_obseg_textbank /* 04176C 7F00CC3C 02A02025 */ move $a0, $s5 /* 041770 7F00CC40 8E880000 */ lw $t0, ($s4) /* 041774 7F00CC44 AFA000F4 */ sw $zero, 0xf4($sp) @@ -7199,7 +7192,7 @@ glabel constructor_menu05_fileselect /* 041848 7F00CD18 AFAD0074 */ sw $t5, 0x74($sp) /* 04184C 7F00CD1C 1501FE56 */ bne $t0, $at, .L7F00C678 /* 041850 7F00CD20 AFA801B4 */ sw $t0, 0x1b4($sp) -/* 041854 7F00CD24 0FC2B2DE */ jal sub_GAME_7F0ACB78 +/* 041854 7F00CD24 0FC2B2DE */ jal setTextSpacingInverted /* 041858 7F00CD28 00002025 */ move $a0, $zero /* 04185C 7F00CD2C 0FC30776 */ jal get_textptr_for_textID /* 041860 7F00CD30 34049C1B */ li $a0, 39963 @@ -7594,7 +7587,7 @@ loop_1: { goto loop_1; } - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051A38); set_page_height(0x42c80000, D_80051A3C); set_video2_settings_offset_24(0); @@ -7737,7 +7730,7 @@ glabel interface_menu06_modesel /* 041E24 7F00D2F4 24630001 */ addiu $v1, $v1, 1 /* 041E28 7F00D2F8 3C014270 */ li $at, 0x42700000 # 60.000000 /* 041E2C 7F00D2FC 44816000 */ mtc1 $at, $f12 -/* 041E30 7F00D300 0C001151 */ jal video_related_1F +/* 041E30 7F00D300 0C001151 */ jal setvideo_far /* 041E34 7F00D304 00000000 */ nop /* 041E38 7F00D308 3C018005 */ lui $at, %hi(D_80051A38) /* 041E3C 7F00D30C 0C001164 */ jal video_related_21 @@ -8661,7 +8654,7 @@ u32 check_if_stage_completed_on_difficulty(int stage, DIFFICULTY difficulty) { completed = FALSE; } else { - completed = doesFolderHaveStageUnlockedAtDifficulty(selected_folder_num,mission_folder_setup_entries[stage].mission_num,difficulty); + completed = isStageUnlockedAtDifficulty(selected_folder_num,mission_folder_setup_entries[stage].mission_num,difficulty); } return completed; } @@ -8681,7 +8674,7 @@ glabel check_if_stage_completed_on_difficulty /* 042860 7F00DD30 00A03025 */ move $a2, $a1 /* 042864 7F00DD34 3C048003 */ lui $a0, %hi(selected_folder_num) /* 042868 7F00DD38 8C84A8E8 */ lw $a0, %lo(selected_folder_num)($a0) -/* 04286C 7F00DD3C 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 04286C 7F00DD3C 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 042870 7F00DD40 00E02825 */ move $a1, $a3 /* 042874 7F00DD44 10000003 */ b .L7F00DD54 /* 042878 7F00DD48 8FBF0014 */ lw $ra, 0x14($sp) @@ -8723,7 +8716,7 @@ s32 get_highest_unlocked_difficulty_for_level(s32 arg0) { phi_s0 = phi_s1; loop_6: - temp_ret_2 = doesFolderHaveStageUnlockedAtDifficulty(selected_folder_num, arg0, phi_s0); + temp_ret_2 = isStageUnlockedAtDifficulty(selected_folder_num, arg0, phi_s0); if (append_cheat_sp == 0) { if (temp_ret_2 != 0) @@ -8789,7 +8782,7 @@ glabel get_highest_unlocked_difficulty_for_level /* 042914 7F00DDE4 8E840000 */ lw $a0, ($s4) .L7F00DDE8: /* 042918 7F00DDE8 02602825 */ move $a1, $s3 -/* 04291C 7F00DDEC 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 04291C 7F00DDEC 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 042920 7F00DDF0 02003025 */ move $a2, $s0 /* 042924 7F00DDF4 8E380000 */ lw $t8, ($s1) /* 042928 7F00DDF8 17000005 */ bnez $t8, .L7F00DE10 @@ -8882,7 +8875,7 @@ void interface_menu07_missionsel(void) s32 phi_a0; s32 phi_s5; - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051A44); set_page_height(0x42c80000, D_80051A48); set_video2_settings_offset_24(0); @@ -9116,7 +9109,7 @@ glabel interface_menu07_missionsel /* 042A00 7F00DED0 AFB30020 */ sw $s3, 0x20($sp) /* 042A04 7F00DED4 AFB2001C */ sw $s2, 0x1c($sp) /* 042A08 7F00DED8 AFB10018 */ sw $s1, 0x18($sp) -/* 042A0C 7F00DEDC 0C001151 */ jal video_related_1F +/* 042A0C 7F00DEDC 0C001151 */ jal setvideo_far /* 042A10 7F00DEE0 AFB00014 */ sw $s0, 0x14($sp) /* 042A14 7F00DEE4 3C018005 */ lui $at, %hi(D_80051A44) /* 042A18 7F00DEE8 0C001164 */ jal video_related_21 @@ -9481,7 +9474,7 @@ glabel interface_menu07_missionsel /* 042A60 7F00DEF0 AFB30020 */ sw $s3, 0x20($sp) /* 042A64 7F00DEF4 AFB2001C */ sw $s2, 0x1c($sp) /* 042A68 7F00DEF8 AFB10018 */ sw $s1, 0x18($sp) -/* 042A6C 7F00DEFC 0C001151 */ jal video_related_1F +/* 042A6C 7F00DEFC 0C001151 */ jal setvideo_far /* 042A70 7F00DF00 AFB00014 */ sw $s0, 0x14($sp) /* 042A74 7F00DF04 3C018005 */ lui $at, %hi(D_80051A44) # $at, 0x8005 /* 042A78 7F00DF08 0C001164 */ jal video_related_21 @@ -9970,7 +9963,7 @@ loop_10: } } } - string_load_parse_something(&sp90, &asc_D_8004F4A0); + string_append_from_obseg_textbank(&sp90, &asc_D_8004F4A0); spC4 = 0; temp_a0 = &spC8; spC8 = 0; @@ -10103,7 +10096,7 @@ glabel constructor_menu07_missionsel .L7F00E5C4: /* 0430F4 7F00E5C4 3C058005 */ lui $a1, %hi(asc_D_8004F4A0) /* 0430F8 7F00E5C8 24A5F4A0 */ addiu $a1, %lo(asc_D_8004F4A0) # addiu $a1, $a1, -0xb60 -/* 0430FC 7F00E5CC 0C0029FF */ jal string_load_parse_something +/* 0430FC 7F00E5CC 0C0029FF */ jal string_append_from_obseg_textbank /* 043100 7F00E5D0 02402025 */ move $a0, $s2 /* 043104 7F00E5D4 3C198004 */ lui $t9, %hi(ptrFirstFontTableSmall) /* 043108 7F00E5D8 8F390EAC */ lw $t9, %lo(ptrFirstFontTableSmall)($t9) @@ -10240,7 +10233,7 @@ void interface_menu08_difficulty(void) s32 sp1C; sp1C = get_highest_unlocked_difficulty_for_level((0x80030000 + (briefingpage * 0x1c))->unk-5408); - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051A4C); set_page_height(0x42c80000, D_80051A50); set_video2_settings_offset_24(0); @@ -10341,7 +10334,7 @@ glabel interface_menu08_difficulty /* 043318 7F00E7E8 8C84ABF8 */ lw $a0, %lo(mission_folder_setup_entries+0x14)($a0) /* 04331C 7F00E7EC 3C014270 */ li $at, 0x42700000 # 60.000000 /* 043320 7F00E7F0 44816000 */ mtc1 $at, $f12 -/* 043324 7F00E7F4 0C001151 */ jal video_related_1F +/* 043324 7F00E7F4 0C001151 */ jal setvideo_far /* 043328 7F00E7F8 AFA2001C */ sw $v0, 0x1c($sp) /* 04332C 7F00E7FC 3C018005 */ lui $at, %hi(D_80051A4C) /* 043330 7F00E800 0C001164 */ jal video_related_21 @@ -10549,7 +10542,7 @@ void print_current_solo_briefing_stage_name(s32 arg0, s32 arg1) if (selected_difficulty >= 0) { textpointer_load_parse_something(arg1, get_ptr_difficulty_name(selected_difficulty, selected_difficulty)); - string_load_parse_something(arg1, get_textptr_for_textID(TEXT(LTITLE, 0x20))); + string_append_from_obseg_textbank(arg1, get_textptr_for_textID(TEXT(LTITLE, 0x20))); sp54 = 0x37; sp50 = 0x57; sp44 = get_video2_settings_txtClipW(); @@ -10562,20 +10555,20 @@ void print_current_solo_briefing_stage_name(s32 arg0, s32 arg1) textpointer_load_parse_something(arg1, get_textptr_for_textID(TEXT(LTITLE, 0x21))); temp_v1 = (sp4C * 0x1c) + &mission_folder_setup_entries; sp40 = temp_v1; - string_load_parse_something(arg1, *temp_v1); - string_load_parse_something(arg1, &asc_D_8004F4A4); - string_load_parse_something(arg1, get_textptr_for_textID(sp40->unk4)); - string_load_parse_something(arg1, &asc_D_8004F4A8); + string_append_from_obseg_textbank(arg1, *temp_v1); + string_append_from_obseg_textbank(arg1, &asc_D_8004F4A4); + string_append_from_obseg_textbank(arg1, get_textptr_for_textID(sp40->unk4)); + string_append_from_obseg_textbank(arg1, &asc_D_8004F4A8); sp54 = 0x37; sp50 = 0x67; sp44 = get_video2_settings_txtClipW(); arg0 = write_text_at_abs_coord(arg0, &sp54, &sp50, arg1, (?32) ptrSecondFontTableLarge, (?32) ptrFirstFontTableLarge, 0xff, sp44, get_video2_settings_txtClipH(), 0, 0); } textpointer_load_parse_something(arg1, get_textptr_for_textID(TEXT(LTITLE, 0x22))); - string_load_parse_something(arg1, *(&mission_folder_setup_entries + (briefingpage * 0x1c))); - string_load_parse_something(arg1, &asc_D_8004F4AC); - string_load_parse_something(arg1, get_textptr_for_textID(*(&mission_folder_setup_entries + (briefingpage * 0x1c)))); - string_load_parse_something(arg1, &asc_D_8004F4B0); + string_append_from_obseg_textbank(arg1, *(&mission_folder_setup_entries + (briefingpage * 0x1c))); + string_append_from_obseg_textbank(arg1, &asc_D_8004F4AC); + string_append_from_obseg_textbank(arg1, get_textptr_for_textID(*(&mission_folder_setup_entries + (briefingpage * 0x1c)))); + string_append_from_obseg_textbank(arg1, &asc_D_8004F4B0); sp54 = 0x37; sp50 = 0x77; sp44 = get_video2_settings_txtClipW(); @@ -10601,7 +10594,7 @@ glabel print_current_solo_briefing_stage_name /* 043620 7F00EAF0 0FC30776 */ jal get_textptr_for_textID /* 043624 7F00EAF4 34049C20 */ li $a0, 39968 /* 043628 7F00EAF8 02002025 */ move $a0, $s0 -/* 04362C 7F00EAFC 0C0029FF */ jal string_load_parse_something +/* 04362C 7F00EAFC 0C0029FF */ jal string_append_from_obseg_textbank /* 043630 7F00EB00 00402825 */ move $a1, $v0 /* 043634 7F00EB04 240E0037 */ li $t6, 55 /* 043638 7F00EB08 240F0057 */ li $t7, 87 @@ -10649,21 +10642,21 @@ glabel print_current_solo_briefing_stage_name /* 0436DC 7F00EBAC 016C1821 */ addu $v1, $t3, $t4 /* 0436E0 7F00EBB0 8C650000 */ lw $a1, ($v1) /* 0436E4 7F00EBB4 AFA30040 */ sw $v1, 0x40($sp) -/* 0436E8 7F00EBB8 0C0029FF */ jal string_load_parse_something +/* 0436E8 7F00EBB8 0C0029FF */ jal string_append_from_obseg_textbank /* 0436EC 7F00EBBC 02002025 */ move $a0, $s0 /* 0436F0 7F00EBC0 3C058005 */ lui $a1, %hi(asc_D_8004F4A4) /* 0436F4 7F00EBC4 24A5F4A4 */ addiu $a1, %lo(asc_D_8004F4A4) # addiu $a1, $a1, -0xb5c -/* 0436F8 7F00EBC8 0C0029FF */ jal string_load_parse_something +/* 0436F8 7F00EBC8 0C0029FF */ jal string_append_from_obseg_textbank /* 0436FC 7F00EBCC 02002025 */ move $a0, $s0 /* 043700 7F00EBD0 8FAD0040 */ lw $t5, 0x40($sp) /* 043704 7F00EBD4 0FC30776 */ jal get_textptr_for_textID /* 043708 7F00EBD8 95A40004 */ lhu $a0, 4($t5) /* 04370C 7F00EBDC 02002025 */ move $a0, $s0 -/* 043710 7F00EBE0 0C0029FF */ jal string_load_parse_something +/* 043710 7F00EBE0 0C0029FF */ jal string_append_from_obseg_textbank /* 043714 7F00EBE4 00402825 */ move $a1, $v0 /* 043718 7F00EBE8 3C058005 */ lui $a1, %hi(asc_D_8004F4A8) /* 04371C 7F00EBEC 24A5F4A8 */ addiu $a1, %lo(asc_D_8004F4A8) # addiu $a1, $a1, -0xb58 -/* 043720 7F00EBF0 0C0029FF */ jal string_load_parse_something +/* 043720 7F00EBF0 0C0029FF */ jal string_append_from_obseg_textbank /* 043724 7F00EBF4 02002025 */ move $a0, $s0 /* 043728 7F00EBF8 240E0037 */ li $t6, 55 /* 04372C 7F00EBFC 240F0067 */ li $t7, 103 @@ -10705,11 +10698,11 @@ glabel print_current_solo_briefing_stage_name /* 0437B8 7F00EC88 016A5823 */ subu $t3, $t3, $t2 /* 0437BC 7F00EC8C 000B5880 */ sll $t3, $t3, 2 /* 0437C0 7F00EC90 00AB2821 */ addu $a1, $a1, $t3 -/* 0437C4 7F00EC94 0C0029FF */ jal string_load_parse_something +/* 0437C4 7F00EC94 0C0029FF */ jal string_append_from_obseg_textbank /* 0437C8 7F00EC98 8CA5ABE4 */ lw $a1, %lo(mission_folder_setup_entries)($a1) /* 0437CC 7F00EC9C 3C058005 */ lui $a1, %hi(asc_D_8004F4AC) /* 0437D0 7F00ECA0 24A5F4AC */ addiu $a1, %lo(asc_D_8004F4AC) # addiu $a1, $a1, -0xb54 -/* 0437D4 7F00ECA4 0C0029FF */ jal string_load_parse_something +/* 0437D4 7F00ECA4 0C0029FF */ jal string_append_from_obseg_textbank /* 0437D8 7F00ECA8 02002025 */ move $a0, $s0 /* 0437DC 7F00ECAC 3C0C8003 */ lui $t4, %hi(briefingpage) /* 0437E0 7F00ECB0 8D8CA8F8 */ lw $t4, %lo(briefingpage)($t4) @@ -10721,11 +10714,11 @@ glabel print_current_solo_briefing_stage_name /* 0437F8 7F00ECC8 0FC30776 */ jal get_textptr_for_textID /* 0437FC 7F00ECCC 9484ABE8 */ lhu $a0, %lo(mission_folder_setup_entries+0x4)($a0) /* 043800 7F00ECD0 02002025 */ move $a0, $s0 -/* 043804 7F00ECD4 0C0029FF */ jal string_load_parse_something +/* 043804 7F00ECD4 0C0029FF */ jal string_append_from_obseg_textbank /* 043808 7F00ECD8 00402825 */ move $a1, $v0 /* 04380C 7F00ECDC 3C058005 */ lui $a1, %hi(asc_D_8004F4B0) /* 043810 7F00ECE0 24A5F4B0 */ addiu $a1, %lo(asc_D_8004F4B0) # addiu $a1, $a1, -0xb50 -/* 043814 7F00ECE4 0C0029FF */ jal string_load_parse_something +/* 043814 7F00ECE4 0C0029FF */ jal string_append_from_obseg_textbank /* 043818 7F00ECE8 02002025 */ move $a0, $s0 /* 04381C 7F00ECEC 240E0037 */ li $t6, 55 /* 043820 7F00ECF0 240F0077 */ li $t7, 119 @@ -11438,7 +11431,7 @@ void interface_menu09_007options(void) f32 phi_f0; f32 phi_f0_2; - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051A58); set_page_height(0x42c80000, D_80051A5C); set_video2_settings_offset_24(0); @@ -11610,7 +11603,7 @@ glabel interface_menu09_007options /* 043EA8 7F00F378 3C014270 */ li $at, 0x42700000 # 60.000000 /* 043EAC 7F00F37C AFBF0014 */ sw $ra, 0x14($sp) /* 043EB0 7F00F380 44816000 */ mtc1 $at, $f12 -/* 043EB4 7F00F384 0C001151 */ jal video_related_1F +/* 043EB4 7F00F384 0C001151 */ jal setvideo_far /* 043EB8 7F00F388 00000000 */ nop /* 043EBC 7F00F38C 3C018005 */ lui $at, %hi(D_80051A58) /* 043EC0 7F00F390 0C001164 */ jal video_related_21 @@ -12648,82 +12641,29 @@ glabel get_player_control_style -#ifdef NONMATCHING -? check_if_mp_stage_unlocked(s32 arg0) -{ - void *sp18; - void *temp_v1; - temp_v1 = (arg0 * 0x18) + &multi_stage_setups; - if (temp_v1->unk10 == 0) +s32 check_if_mp_stage_unlocked(s32 stage) +{ + s32 players; + if (!multi_stage_setups[stage].min_player) { return 0; } - sp18 = temp_v1; - if (temp_v1->unk14 < get_selected_num_players()) + players=get_selected_num_players(); + if (multi_stage_setups[stage].max_player < players) { return 0; } - if (temp_v1->unkC == -1) + if (multi_stage_setups[stage].unlock_after == -1) { return 1; } - if (doesFolderHaveStageUnlockedAtDifficulty(selected_folder_num, temp_v1->unkC, 0) != 0) + if (isStageUnlockedAtDifficulty(selected_folder_num, multi_stage_setups[stage].unlock_after, DIFFICULTY_AGENT)) { return 1; } return 0; } -#else -GLOBAL_ASM( -.text -glabel check_if_mp_stage_unlocked -/* 044C00 7F0100D0 00047080 */ sll $t6, $a0, 2 -/* 044C04 7F0100D4 01C47023 */ subu $t6, $t6, $a0 -/* 044C08 7F0100D8 3C0F8003 */ lui $t7, %hi(multi_stage_setups) -/* 044C0C 7F0100DC 25EFB074 */ addiu $t7, %lo(multi_stage_setups) # addiu $t7, $t7, -0x4f8c -/* 044C10 7F0100E0 000E70C0 */ sll $t6, $t6, 3 -/* 044C14 7F0100E4 01CF1821 */ addu $v1, $t6, $t7 -/* 044C18 7F0100E8 8C780010 */ lw $t8, 0x10($v1) -/* 044C1C 7F0100EC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 044C20 7F0100F0 AFBF0014 */ sw $ra, 0x14($sp) -/* 044C24 7F0100F4 17000003 */ bnez $t8, .L7F010104 -/* 044C28 7F0100F8 00000000 */ nop -/* 044C2C 7F0100FC 10000018 */ b .L7F010160 -/* 044C30 7F010100 00001025 */ move $v0, $zero -.L7F010104: -/* 044C34 7F010104 0FC040A4 */ jal get_selected_num_players -/* 044C38 7F010108 AFA30018 */ sw $v1, 0x18($sp) -/* 044C3C 7F01010C 8FA30018 */ lw $v1, 0x18($sp) -/* 044C40 7F010110 8C790014 */ lw $t9, 0x14($v1) -/* 044C44 7F010114 0322082A */ slt $at, $t9, $v0 -/* 044C48 7F010118 50200004 */ beql $at, $zero, .L7F01012C -/* 044C4C 7F01011C 8C65000C */ lw $a1, 0xc($v1) -/* 044C50 7F010120 1000000F */ b .L7F010160 -/* 044C54 7F010124 00001025 */ move $v0, $zero -/* 044C58 7F010128 8C65000C */ lw $a1, 0xc($v1) -.L7F01012C: -/* 044C5C 7F01012C 2401FFFF */ li $at, -1 -/* 044C60 7F010130 3C048003 */ lui $a0, %hi(selected_folder_num) -/* 044C64 7F010134 14A10003 */ bne $a1, $at, .L7F010144 -/* 044C68 7F010138 00003025 */ move $a2, $zero -/* 044C6C 7F01013C 10000008 */ b .L7F010160 -/* 044C70 7F010140 24020001 */ li $v0, 1 -.L7F010144: -/* 044C74 7F010144 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty -/* 044C78 7F010148 8C84A8E8 */ lw $a0, %lo(selected_folder_num)($a0) -/* 044C7C 7F01014C 50400004 */ beql $v0, $zero, .L7F010160 -/* 044C80 7F010150 00001025 */ move $v0, $zero -/* 044C84 7F010154 10000002 */ b .L7F010160 -/* 044C88 7F010158 24020001 */ li $v0, 1 -/* 044C8C 7F01015C 00001025 */ move $v0, $zero -.L7F010160: -/* 044C90 7F010160 8FBF0014 */ lw $ra, 0x14($sp) -/* 044C94 7F010164 27BD0020 */ addiu $sp, $sp, 0x20 -/* 044C98 7F010168 03E00008 */ jr $ra -/* 044C9C 7F01016C 00000000 */ nop -) -#endif @@ -12799,12 +12739,12 @@ void copy_aim_settings_to_playerdata(void) { player1_player_data.autoaim = mp_sight_adjust_table[aim_sight_adjustment].autoaim; player1_player_data.sight = mp_sight_adjust_table[aim_sight_adjustment].sight; - player2_player_data.autoaim = player1_player_data.autoaim; - player2_player_data.sight = player1_player_data.sight; - player3_player_data.autoaim = player1_player_data.autoaim; - player3_player_data.sight = player1_player_data.sight; - player4_player_data.autoaim = player1_player_data.autoaim; - player4_player_data.sight = player1_player_data.sight; + player2_player_data.autoaim = mp_sight_adjust_table[aim_sight_adjustment].autoaim; + player2_player_data.sight = mp_sight_adjust_table[aim_sight_adjustment].sight; + player3_player_data.autoaim = mp_sight_adjust_table[aim_sight_adjustment].autoaim; + player3_player_data.sight = mp_sight_adjust_table[aim_sight_adjustment].sight; + player4_player_data.autoaim = mp_sight_adjust_table[aim_sight_adjustment].autoaim; + player4_player_data.sight = mp_sight_adjust_table[aim_sight_adjustment].sight; } #else GLOBAL_ASM( @@ -12897,400 +12837,128 @@ void unlock_all_mp_chars(void) { } - - - - -u32 get_selected_num_players(void) +s32 get_selected_num_players(void) { - if (gamemode == GAMEMODE_MULTI) { - return selected_num_players; - } - return 1; + if (gamemode == GAMEMODE_MULTI) + { + return selected_num_players; + } + return 1; } - - - - -#ifdef NONMATCHING -HEADS get_player_mp_char_head(int player) +u16 get_player_mp_char_head(s32 player) { - if ((int)(&player_1_char)[player] < 0) { - return (HEADS)(uint)(ushort)mp_chr_setup[player].head; - } - return (HEADS)(uint)(ushort)mp_chr_setup[(&player_1_char)[player]].head; + if ((&player_1_char)[player] < 0) + { + return mp_chr_setup[player].head; + } + return mp_chr_setup[(&player_1_char)[player]].head; } -#else -GLOBAL_ASM( -.text -glabel get_player_mp_char_head -/* 044DEC 7F0102BC 00047080 */ sll $t6, $a0, 2 -/* 044DF0 7F0102C0 3C038003 */ lui $v1, %hi(player_1_char) -/* 044DF4 7F0102C4 006E1821 */ addu $v1, $v1, $t6 -/* 044DF8 7F0102C8 8C63B524 */ lw $v1, %lo(player_1_char)($v1) -/* 044DFC 7F0102CC 00047880 */ sll $t7, $a0, 2 -/* 044E00 7F0102D0 3C028003 */ lui $v0, %hi(mp_chr_setup+6) -/* 044E04 7F0102D4 04610007 */ bgez $v1, .L7F0102F4 -/* 044E08 7F0102D8 0003C080 */ sll $t8, $v1, 2 -/* 044E0C 7F0102DC 01E47823 */ subu $t7, $t7, $a0 -/* 044E10 7F0102E0 000F7880 */ sll $t7, $t7, 2 -/* 044E14 7F0102E4 3C028003 */ lui $v0, %hi(mp_chr_setup+6) -/* 044E18 7F0102E8 004F1021 */ addu $v0, $v0, $t7 -/* 044E1C 7F0102EC 03E00008 */ jr $ra -/* 044E20 7F0102F0 9442B19E */ lhu $v0, %lo(mp_chr_setup+6)($v0) -.L7F0102F4: -/* 044E24 7F0102F4 0303C023 */ subu $t8, $t8, $v1 -/* 044E28 7F0102F8 0018C080 */ sll $t8, $t8, 2 -/* 044E2C 7F0102FC 00581021 */ addu $v0, $v0, $t8 -/* 044E30 7F010300 9442B19E */ lhu $v0, %lo(mp_chr_setup+6)($v0) -/* 044E34 7F010304 03E00008 */ jr $ra -/* 044E38 7F010308 00000000 */ nop -) -#endif - - - - -#ifdef NONMATCHING -ulonglong get_player_mp_char_gender(int player) +u8 get_player_mp_char_gender(int player) { - if ((int)(&player_1_char)[player] < 0) { - return (ulonglong)(byte)mp_chr_setup[player].gender; - } - return (ulonglong)(byte)mp_chr_setup[(&player_1_char)[player]].gender; + if ((&player_1_char)[player] < 0) + { + return mp_chr_setup[player].gender; + } + return mp_chr_setup[(&player_1_char)[player]].gender; } -#else -GLOBAL_ASM( -.text -glabel get_player_mp_char_gender -/* 044E3C 7F01030C 00047080 */ sll $t6, $a0, 2 -/* 044E40 7F010310 3C038003 */ lui $v1, %hi(player_1_char) -/* 044E44 7F010314 006E1821 */ addu $v1, $v1, $t6 -/* 044E48 7F010318 8C63B524 */ lw $v1, %lo(player_1_char)($v1) -/* 044E4C 7F01031C 00047880 */ sll $t7, $a0, 2 -/* 044E50 7F010320 3C028003 */ lui $v0, %hi(mp_chr_setup+2) -/* 044E54 7F010324 04610007 */ bgez $v1, .L7F010344 -/* 044E58 7F010328 0003C080 */ sll $t8, $v1, 2 -/* 044E5C 7F01032C 01E47823 */ subu $t7, $t7, $a0 -/* 044E60 7F010330 000F7880 */ sll $t7, $t7, 2 -/* 044E64 7F010334 3C028003 */ lui $v0, %hi(mp_chr_setup+2) -/* 044E68 7F010338 004F1021 */ addu $v0, $v0, $t7 -/* 044E6C 7F01033C 03E00008 */ jr $ra -/* 044E70 7F010340 9042B19A */ lbu $v0, %lo(mp_chr_setup+2)($v0) -.L7F010344: -/* 044E74 7F010344 0303C023 */ subu $t8, $t8, $v1 -/* 044E78 7F010348 0018C080 */ sll $t8, $t8, 2 -/* 044E7C 7F01034C 00581021 */ addu $v0, $v0, $t8 -/* 044E80 7F010350 9042B19A */ lbu $v0, %lo(mp_chr_setup+2)($v0) -/* 044E84 7F010354 03E00008 */ jr $ra -/* 044E88 7F010358 00000000 */ nop -) -#endif - - - - -#ifdef NONMATCHING -BODIES get_player_mp_char_body(int player) +u16 get_player_mp_char_body(int player) { - if ((int)(&player_1_char)[player] < 0) { - return (BODIES)(uint)(ushort)mp_chr_setup[player].body; - } - return (BODIES)(uint)(ushort)mp_chr_setup[(&player_1_char)[player]].body; + if ((&player_1_char)[player] < 0) + { + return mp_chr_setup[player].body; + } + return mp_chr_setup[(&player_1_char)[player]].body; } -#else -GLOBAL_ASM( -.text -glabel get_player_mp_char_body -/* 044E8C 7F01035C 00047080 */ sll $t6, $a0, 2 -/* 044E90 7F010360 3C038003 */ lui $v1, %hi(player_1_char) -/* 044E94 7F010364 006E1821 */ addu $v1, $v1, $t6 -/* 044E98 7F010368 8C63B524 */ lw $v1, %lo(player_1_char)($v1) -/* 044E9C 7F01036C 00047880 */ sll $t7, $a0, 2 -/* 044EA0 7F010370 3C028003 */ lui $v0, %hi(mp_chr_setup+4) -/* 044EA4 7F010374 04610007 */ bgez $v1, .L7F010394 -/* 044EA8 7F010378 0003C080 */ sll $t8, $v1, 2 -/* 044EAC 7F01037C 01E47823 */ subu $t7, $t7, $a0 -/* 044EB0 7F010380 000F7880 */ sll $t7, $t7, 2 -/* 044EB4 7F010384 3C028003 */ lui $v0, %hi(mp_chr_setup+4) -/* 044EB8 7F010388 004F1021 */ addu $v0, $v0, $t7 -/* 044EBC 7F01038C 03E00008 */ jr $ra -/* 044EC0 7F010390 9442B19C */ lhu $v0, %lo(mp_chr_setup+4)($v0) -.L7F010394: -/* 044EC4 7F010394 0303C023 */ subu $t8, $t8, $v1 -/* 044EC8 7F010398 0018C080 */ sll $t8, $t8, 2 -/* 044ECC 7F01039C 00581021 */ addu $v0, $v0, $t8 -/* 044ED0 7F0103A0 9442B19C */ lhu $v0, %lo(mp_chr_setup+4)($v0) -/* 044ED4 7F0103A4 03E00008 */ jr $ra -/* 044ED8 7F0103A8 00000000 */ nop -) -#endif - - - - f32 get_player_mp_handicap(int player) { - return (f32)MP_handicap_table[(&handicap_player1)[player]].damage_modifier; + return MP_handicap_table[(&handicap_player1)[player]].damage_modifier; } - - - - - -#ifdef NONMATCHING f32 get_player_mp_char_height(int player) { - if ((int)(&player_1_char)[player] < 0) { - return (f32)mp_chr_setup[player].pov; - } - return (f32)mp_chr_setup[(&player_1_char)[player]].pov; + if ((&player_1_char)[player] < 0) { + return mp_chr_setup[player].pov; + } + return mp_chr_setup[(&player_1_char)[player]].pov; } -#else -GLOBAL_ASM( -.text -glabel get_player_mp_char_height -/* 044F00 7F0103D0 00047080 */ sll $t6, $a0, 2 -/* 044F04 7F0103D4 3C028003 */ lui $v0, %hi(player_1_char) -/* 044F08 7F0103D8 004E1021 */ addu $v0, $v0, $t6 -/* 044F0C 7F0103DC 8C42B524 */ lw $v0, %lo(player_1_char)($v0) -/* 044F10 7F0103E0 00047880 */ sll $t7, $a0, 2 -/* 044F14 7F0103E4 3C018003 */ lui $at, %hi(mp_chr_setup+8) -/* 044F18 7F0103E8 04410007 */ bgez $v0, .L7F010408 -/* 044F1C 7F0103EC 0002C080 */ sll $t8, $v0, 2 -/* 044F20 7F0103F0 01E47823 */ subu $t7, $t7, $a0 -/* 044F24 7F0103F4 000F7880 */ sll $t7, $t7, 2 -/* 044F28 7F0103F8 3C018003 */ lui $at, %hi(mp_chr_setup+8) -/* 044F2C 7F0103FC 002F0821 */ addu $at, $at, $t7 -/* 044F30 7F010400 03E00008 */ jr $ra -/* 044F34 7F010404 C420B1A0 */ lwc1 $f0, %lo(mp_chr_setup+8)($at) -.L7F010408: -/* 044F38 7F010408 0302C023 */ subu $t8, $t8, $v0 -/* 044F3C 7F01040C 0018C080 */ sll $t8, $t8, 2 -/* 044F40 7F010410 00380821 */ addu $at, $at, $t8 -/* 044F44 7F010414 C420B1A0 */ lwc1 $f0, %lo(mp_chr_setup+8)($at) -/* 044F48 7F010418 03E00008 */ jr $ra -/* 044F4C 7F01041C 00000000 */ nop -) -#endif - - - - - int get_mp_timelimit(void) { return multi_game_lengths[game_length].time; } - - int get_mp_pointlimit(void) { return multi_game_lengths[game_length].points; } - - - -#ifdef NONMATCHING -void reset_mp_options_for_scenario(MPSCENARIOS scenario) - +void reset_mp_options_for_scenario(MPSCENARIOS scenarioid) { - unlock_stage_select = 1; - unlock_game_length = 1; - unlock_chars = 1; - unlock_weapon_select = 1; - unlock_handicap = 1; - unlock_control_style = 1; - unlock_aim_sight = 1; - - scenario = scenario; - switch(scenario) { - case SCENARIO_NORMAL: - case SCENARIO_2v2: - case SCENARIO_3v1: - case SCENARIO_2v1: - if (6 < game_length) { - game_length = 2; + scenario = scenarioid; + + unlock_stage_select = 1; + unlock_game_length = 1; + unlock_chars = 1; + unlock_weapon_select = 1; + unlock_handicap = 1; + unlock_control_style = 1; + unlock_aim_sight = 1; + + + switch(scenario) + { + case SCENARIO_NORMAL: + case SCENARIO_2v2: + case SCENARIO_3v1: + case SCENARIO_2v1: + if (6 < game_length) + { + game_length = 2; + } + if (0xd < get_mp_weapon_set()) + { + set_mp_weapon_set(0xd); + } + break; + case SCENARIO_YOLT: + game_length = 7; + + if (0xd < get_mp_weapon_set()) + { + set_mp_weapon_set(0xd); + } + unlock_game_length = 0; + break; + case SCENARIO_TLD: + if (3 < game_length) + { + game_length = 2; + } + if (0xd < get_mp_weapon_set()) + { + set_mp_weapon_set(0xd); + } + break; + case SCENARIO_MWTGG: + if (6 < game_length) + { + game_length = 2; + } + set_mp_weapon_set(0xd); + unlock_weapon_select = 0; + break; + case SCENARIO_LTK: + if (6 < game_length) + { + game_length = 2; + } + set_mp_weapon_set(1); + unlock_handicap = 0; } - scenario = scenario; - if (0xd < get_mp_weapon_set()) { - set_mp_weapon_set(0xd); - } - break; - case SCENARIO_YOLT: - game_length = 7; - scenario = scenario; - if (0xd < get_mp_weapon_set()) { - set_mp_weapon_set(0xd); - } - unlock_game_length = 0; - break; - case SCENARIO_TLD: - if (3 < game_length) { - game_length = 2; - } - scenario = scenario; - if (0xd < get_mp_weapon_set()) { - set_mp_weapon_set(0xd); - } - break; - case SCENARIO_MWTGG: - if (6 < game_length) { - game_length = 2; - } - scenario = scenario; - set_mp_weapon_set(0xd); - unlock_weapon_select = 0; - break; - case SCENARIO_LTK: - if (6 < game_length) { - game_length = 2; - } - scenario = scenario; - set_mp_weapon_set(1); - unlock_handicap = 0; - } - return; + return; } -#else -GLOBAL_ASM( -.late_rodata -glabel jpt_scenario_specific_settings_mp - .word .L7F0104DC - .word .L7F01051C - .word .L7F010550 - .word .L7F010594 - .word .L7F0105C8 - .word .L7F0104DC - .word .L7F0104DC - .word .L7F0104DC -.text -glabel reset_mp_options_for_scenario -/* 044F98 7F010468 3C038003 */ lui $v1, %hi(scenario) -/* 044F9C 7F01046C 2463B540 */ addiu $v1, %lo(scenario) # addiu $v1, $v1, -0x4ac0 -/* 044FA0 7F010470 24020001 */ li $v0, 1 -/* 044FA4 7F010474 AC640000 */ sw $a0, ($v1) -/* 044FA8 7F010478 3C018003 */ lui $at, %hi(unlock_stage_select) -/* 044FAC 7F01047C AC22B544 */ sw $v0, %lo(unlock_stage_select)($at) -/* 044FB0 7F010480 3C018003 */ lui $at, %hi(unlock_game_length) -/* 044FB4 7F010484 AC22B548 */ sw $v0, %lo(unlock_game_length)($at) -/* 044FB8 7F010488 3C018003 */ lui $at, %hi(unlock_chars) -/* 044FBC 7F01048C AC22B54C */ sw $v0, %lo(unlock_chars)($at) -/* 044FC0 7F010490 3C018003 */ lui $at, %hi(unlock_weapon_select) -/* 044FC4 7F010494 AC22B550 */ sw $v0, %lo(unlock_weapon_select)($at) -/* 044FC8 7F010498 3C018003 */ lui $at, %hi(unlock_handicap) -/* 044FCC 7F01049C AC22B554 */ sw $v0, %lo(unlock_handicap)($at) -/* 044FD0 7F0104A0 3C018003 */ lui $at, %hi(unlock_control_style) -/* 044FD4 7F0104A4 AC22B558 */ sw $v0, %lo(unlock_control_style)($at) -/* 044FD8 7F0104A8 3C018003 */ lui $at, %hi(unlock_aim_sight) -/* 044FDC 7F0104AC AC22B55C */ sw $v0, %lo(unlock_aim_sight)($at) -/* 044FE0 7F0104B0 8C6E0000 */ lw $t6, ($v1) -/* 044FE4 7F0104B4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 044FE8 7F0104B8 AFBF0014 */ sw $ra, 0x14($sp) -/* 044FEC 7F0104BC 2DC10008 */ sltiu $at, $t6, 8 -/* 044FF0 7F0104C0 1020004D */ beqz $at, .L7F0105F8 -/* 044FF4 7F0104C4 000E7080 */ sll $t6, $t6, 2 -/* 044FF8 7F0104C8 3C018005 */ lui $at, %hi(jpt_scenario_specific_settings_mp) -/* 044FFC 7F0104CC 002E0821 */ addu $at, $at, $t6 -/* 045000 7F0104D0 8C2E1A60 */ lw $t6, %lo(jpt_scenario_specific_settings_mp)($at) -/* 045004 7F0104D4 01C00008 */ jr $t6 -/* 045008 7F0104D8 00000000 */ nop -.L7F0104DC: -/* 04500C 7F0104DC 3C028003 */ lui $v0, %hi(game_length) -/* 045010 7F0104E0 2442B538 */ addiu $v0, %lo(game_length) # addiu $v0, $v0, -0x4ac8 -/* 045014 7F0104E4 8C4F0000 */ lw $t7, ($v0) -/* 045018 7F0104E8 29E10007 */ slti $at, $t7, 7 -/* 04501C 7F0104EC 14200002 */ bnez $at, .L7F0104F8 -/* 045020 7F0104F0 24180002 */ li $t8, 2 -/* 045024 7F0104F4 AC580000 */ sw $t8, ($v0) -.L7F0104F8: -/* 045028 7F0104F8 0FC3198F */ jal get_mp_weapon_set -/* 04502C 7F0104FC 00000000 */ nop -/* 045030 7F010500 2841000E */ slti $at, $v0, 0xe -/* 045034 7F010504 5420003D */ bnezl $at, .L7F0105FC -/* 045038 7F010508 8FBF0014 */ lw $ra, 0x14($sp) -/* 04503C 7F01050C 0FC3198C */ jal set_mp_weapon_set -/* 045040 7F010510 2404000D */ li $a0, 13 -/* 045044 7F010514 10000039 */ b .L7F0105FC -/* 045048 7F010518 8FBF0014 */ lw $ra, 0x14($sp) -.L7F01051C: -/* 04504C 7F01051C 3C028003 */ lui $v0, %hi(game_length) -/* 045050 7F010520 2442B538 */ addiu $v0, %lo(game_length) # addiu $v0, $v0, -0x4ac8 -/* 045054 7F010524 24190007 */ li $t9, 7 -/* 045058 7F010528 0FC3198F */ jal get_mp_weapon_set -/* 04505C 7F01052C AC590000 */ sw $t9, ($v0) -/* 045060 7F010530 2841000E */ slti $at, $v0, 0xe -/* 045064 7F010534 14200003 */ bnez $at, .L7F010544 -/* 045068 7F010538 00000000 */ nop -/* 04506C 7F01053C 0FC3198C */ jal set_mp_weapon_set -/* 045070 7F010540 2404000D */ li $a0, 13 -.L7F010544: -/* 045074 7F010544 3C018003 */ lui $at, %hi(unlock_game_length) -/* 045078 7F010548 1000002B */ b .L7F0105F8 -/* 04507C 7F01054C AC20B548 */ sw $zero, %lo(unlock_game_length)($at) -.L7F010550: -/* 045080 7F010550 3C028003 */ lui $v0, %hi(game_length) -/* 045084 7F010554 2442B538 */ addiu $v0, %lo(game_length) # addiu $v0, $v0, -0x4ac8 -/* 045088 7F010558 8C480000 */ lw $t0, ($v0) -/* 04508C 7F01055C 24090002 */ li $t1, 2 -/* 045090 7F010560 29010004 */ slti $at, $t0, 4 -/* 045094 7F010564 14200002 */ bnez $at, .L7F010570 -/* 045098 7F010568 00000000 */ nop -/* 04509C 7F01056C AC490000 */ sw $t1, ($v0) -.L7F010570: -/* 0450A0 7F010570 0FC3198F */ jal get_mp_weapon_set -/* 0450A4 7F010574 00000000 */ nop -/* 0450A8 7F010578 2841000E */ slti $at, $v0, 0xe -/* 0450AC 7F01057C 5420001F */ bnezl $at, .L7F0105FC -/* 0450B0 7F010580 8FBF0014 */ lw $ra, 0x14($sp) -/* 0450B4 7F010584 0FC3198C */ jal set_mp_weapon_set -/* 0450B8 7F010588 2404000D */ li $a0, 13 -/* 0450BC 7F01058C 1000001B */ b .L7F0105FC -/* 0450C0 7F010590 8FBF0014 */ lw $ra, 0x14($sp) -.L7F010594: -/* 0450C4 7F010594 3C028003 */ lui $v0, %hi(game_length) -/* 0450C8 7F010598 2442B538 */ addiu $v0, %lo(game_length) # addiu $v0, $v0, -0x4ac8 -/* 0450CC 7F01059C 8C4A0000 */ lw $t2, ($v0) -/* 0450D0 7F0105A0 240B0002 */ li $t3, 2 -/* 0450D4 7F0105A4 29410007 */ slti $at, $t2, 7 -/* 0450D8 7F0105A8 14200002 */ bnez $at, .L7F0105B4 -/* 0450DC 7F0105AC 00000000 */ nop -/* 0450E0 7F0105B0 AC4B0000 */ sw $t3, ($v0) -.L7F0105B4: -/* 0450E4 7F0105B4 0FC3198C */ jal set_mp_weapon_set -/* 0450E8 7F0105B8 2404000D */ li $a0, 13 -/* 0450EC 7F0105BC 3C018003 */ lui $at, %hi(unlock_weapon_select) -/* 0450F0 7F0105C0 1000000D */ b .L7F0105F8 -/* 0450F4 7F0105C4 AC20B550 */ sw $zero, %lo(unlock_weapon_select)($at) -.L7F0105C8: -/* 0450F8 7F0105C8 3C028003 */ lui $v0, %hi(game_length) -/* 0450FC 7F0105CC 2442B538 */ addiu $v0, %lo(game_length) # addiu $v0, $v0, -0x4ac8 -/* 045100 7F0105D0 8C4C0000 */ lw $t4, ($v0) -/* 045104 7F0105D4 240D0002 */ li $t5, 2 -/* 045108 7F0105D8 29810007 */ slti $at, $t4, 7 -/* 04510C 7F0105DC 14200002 */ bnez $at, .L7F0105E8 -/* 045110 7F0105E0 00000000 */ nop -/* 045114 7F0105E4 AC4D0000 */ sw $t5, ($v0) -.L7F0105E8: -/* 045118 7F0105E8 0FC3198C */ jal set_mp_weapon_set -/* 04511C 7F0105EC 24040001 */ li $a0, 1 -/* 045120 7F0105F0 3C018003 */ lui $at, %hi(unlock_handicap) -/* 045124 7F0105F4 AC20B554 */ sw $zero, %lo(unlock_handicap)($at) -def_7F0104D4: -.L7F0105F8: -/* 045128 7F0105F8 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0105FC: -/* 04512C 7F0105FC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 045130 7F010600 03E00008 */ jr $ra -/* 045134 7F010604 00000000 */ nop -) -#endif @@ -13441,7 +13109,8 @@ void init_menu0E_mpoptions(void) tab_2_highlight = FALSE; tab_1_highlight = FALSE; - if (maybe_is_in_menu != FALSE) { + if (maybe_is_in_menu != FALSE) + { sfx_c_700091E8(0x7fff); musicTrack1Vol(0x7fff); music1_playing = FALSE; @@ -13449,12 +13118,14 @@ void init_menu0E_mpoptions(void) maybe_is_in_menu = FALSE; } - if (selected_num_players == 0) { + if (selected_num_players == 0) + { numplayers = get_attached_controller_count(); init_mp_options_for_scenario(numplayers); } - if (check_if_mp_stage_unlocked(MP_stage_selected) == FALSE) { + if (check_if_mp_stage_unlocked(MP_stage_selected) == FALSE) + { MP_stage_selected = MP_STAGE_TEMPLE; } @@ -13470,8 +13141,8 @@ void init_menu0E_mpoptions(void) load_walletbond(); } - -void update_menu0E_mpoptions(void) { +void update_menu0E_mpoptions(void) +{ return; } @@ -13485,44 +13156,45 @@ void update_menu0E_mpoptions(void) { #ifdef NONMATCHING void interface_menu0E_mpoptions(void) { - s32 sp3C; - s32 sp38; - s32 sp34; - s32 sp30; - s32 sp2C; - s32 sp28; - s32 sp24; - s32 sp20; - s32 sp1C; - s32 temp_f6; + s32 players_selected; + s32 scenario_selected; + s32 gameselect_selected; + s32 gamelength_selected; + s32 character_selected; + s32 weaponselect_selected; + s32 health_selected; + s32 controlstyle_selected; + s32 aimadjustment_selected; + + s32 cursor_v; s32 temp_v1; u32 temp_hi; void *temp_v0; s32 phi_a0; - sp3C = 0; - sp38 = 0; - sp34 = 0; - sp30 = 0; - sp2C = 0; - sp28 = 0; - sp24 = 0; - sp20 = 0; - sp1C = 0; - video_related_1F(0x42700000); - video_related_21(D_80051A80); - set_page_height(0x42c80000, D_80051A84); + players_selected = 0; + scenario_selected = 0; + gameselect_selected = 0; + gamelength_selected = 0; + character_selected = 0; + weaponselect_selected = 0; + health_selected = 0; + controlstyle_selected = 0; + aimadjustment_selected = 0; + setvideo_far(60.0f); + video_related_21(menu0E_aspect); + set_page_height(100.0f, menu0E_pageheight); set_video2_settings_offset_24(0); if (get_attached_controller_count() < 2) { - set_menu_to_mode(6, 0); + set_menu_to_mode(MENU_MODE_SELECT, 0); set_menu_cursor_pos_to_setting(gamemode); } if (get_attached_controller_count() < selected_num_players) { init_mp_options_for_scenario(get_attached_controller_count()); } - if (get_controller_buttons_held(0, 0xa000) == 0) + if (get_controller_buttons_held(0, Z_TRIG|A_BUTTON) == 0) { tab_3_highlight = 0; tab_2_highlight = 0; @@ -13536,87 +13208,70 @@ void interface_menu0E_mpoptions(void) highlight_health = 0; highlight_controlstyle = 0; highlight_aimadjustment = 0; - if (isontab3() != 0) + if (isontab3()) { tab_3_highlight = 1; } + + if (isontab1()) + { + cursor_v_pos = 1; + } + + cursor_v = (s32)cursor_v_pos; + if ((cursor_v >= 0x119) && (unlock_aim_sight != 0)) + { + highlight_aimadjustment = 1; + } + + if ((cursor_v >= 0x105) && (unlock_control_style != 0)) + { + highlight_controlstyle = 1; + } + + if ((cursor_v >= 0xf1) && (unlock_handicap != 0)) + { + highlight_health = 1; + } + + if ((cursor_v >= 0xdd) && (unlock_chars != 0)) + { + highlight_character = 1; + } + + if ((cursor_v >= 0xc9) && (unlock_weapon_select != 0)) + { + highlight_weaponselect = 1; + } + + if ((cursor_v >= 0xb5) && (unlock_game_length != 0)) + { + highlight_gamelength = 1; + } + + if ((cursor_v >= 0xa1) && (unlock_stage_select != 0)) + { + highlight_gameselect = 1; + } + + if (cursor_v >= 0x8d) + { + highlight_scenario = 1; + } else { - if (isontab1() != 0) - { - cursor_v_pos = 1; - } - else - { - temp_f6 = (s32) *(void *)0x80030000; - if ((temp_f6 >= 0x119) && (unlock_aim_sight != 0)) - { - highlight_aimadjustment = 1; - } - else - { - if ((temp_f6 >= 0x105) && (unlock_control_style != 0)) - { - highlight_controlstyle = 1; - } - else - { - if ((temp_f6 >= 0xf1) && (unlock_handicap != 0)) - { - highlight_health = 1; - } - else - { - if ((temp_f6 >= 0xdd) && (unlock_chars != 0)) - { - highlight_character = 1; - } - else - { - if ((temp_f6 >= 0xc9) && (unlock_weapon_select != 0)) - { - highlight_weaponselect = 1; - } - else - { - if ((temp_f6 >= 0xb5) && (unlock_game_length != 0)) - { - highlight_gamelength = 1; - } - else - { - if ((temp_f6 >= 0xa1) && (unlock_stage_select != 0)) - { - highlight_gameselect = 1; - } - else - { - if (temp_f6 >= 0x8d) - { - highlight_scenario = 1; - } - else - { - highlight_players = 1; - } - } - } - } - } - } - } - } - } + highlight_players = 1; } } - if (get_controller_buttons_pressed(0, 0x1000) != 0) + + if (get_controller_buttons_pressed(0, START_BUTTON) != 0) { tab_1_selected = 1; play_sfx_a1(ptr_sfx_buf, 0xc7, 0); } else { - if (get_controller_buttons_pressed(0, 0xa000) != 0) + if (get_controller_buttons_pressed(0, Z_TRIG|A_BUTTON) != 0) { if (tab_3_highlight != 0) { @@ -13626,74 +13281,47 @@ void interface_menu0E_mpoptions(void) { tab_1_selected = 1; } - else + if (highlight_players != 0) { - if (highlight_players != 0) - { - sp3C = 1; - } - else - { - if (highlight_scenario != 0) - { - sp38 = 1; - } - else - { - if (highlight_gameselect != 0) - { - sp34 = 1; - } - else - { - if (highlight_gamelength != 0) - { - sp30 = 1; - } - else - { - if (highlight_character != 0) - { - sp2C = 1; - } - else - { - if (highlight_weaponselect != 0) - { - sp28 = 1; - } - else - { - if (highlight_health != 0) - { - sp24 = 1; - } - else - { - if (highlight_controlstyle != 0) - { - sp20 = 1; - } - else - { - if (highlight_aimadjustment != 0) - { - sp1C = 1; - } - } - } - } - } - } - } - } - } + players_selected = 1; + } + if (highlight_scenario != 0) + { + scenario_selected = 1; + } + if (highlight_gameselect != 0) + { + gameselect_selected = 1; + } + if (highlight_gamelength != 0) + { + gamelength_selected = 1; + } + if (highlight_character != 0) + { + character_selected = 1; + } + if (highlight_weaponselect != 0) + { + weaponselect_selected = 1; + } + if (highlight_health != 0) + { + health_selected = 1; + } + if (highlight_controlstyle != 0) + { + controlstyle_selected = 1; + } + if (highlight_aimadjustment != 0) + { + aimadjustment_selected = 1; } play_sfx_a1(ptr_sfx_buf, 0xc7, 0); } else { - if (get_controller_buttons_pressed(0, 0x4000) != 0) + if (get_controller_buttons_pressed(0, B_BUTTON) != 0) { tab_3_selected = 1; play_sfx_a1(ptr_sfx_buf, 0xc7, 0); @@ -13708,117 +13336,83 @@ void interface_menu0E_mpoptions(void) menu_control_stick_tracking(); if (tab_3_selected != 0) { - set_menu_to_mode(6, 0); + set_menu_to_mode(MENU_MODE_SELECT, 0); set_menu_cursor_pos_to_setting(gamemode); return; } if (tab_1_selected != 0) { - temp_v0 = 0x80030000 + (MP_stage_selected * 0x18); - if (temp_v0->unk-4F84 < 0) - { -loop_65: - temp_hi = get_random_value() % 0xbU; - selected_stage = (?32) (0x80030000 + (temp_hi * 0x18))->unk-4F6C; - if (check_if_mp_stage_unlocked(temp_hi + 1) == 0) - { - goto loop_65; - } + curstageid = multi_stage_setups[MP_stage_selected].stage_id; + if (multi_stage_setups[MP_stage_selected].stage_id < 0) { + do { + numplayers = get_random_value(); + selected_stage = multi_stage_setups[numplayers % 0xb + 1].stage_id; + curstageid = selected_stage; + } while (check_if_mp_stage_unlocked(numplayers % 0xb + 1) == FALSE); } - else - { - *(void *)0x80030000 = (bitwise f32) temp_v0->unk-4F84; - } - briefingpage = (?32) -1; - set_menu_to_mode(0xb, 1); - return; + selected_stage = curstageid; + briefingpage = 0xffffffff; + set_menu_to_mode(MENU_RUN_STAGE,1); } - if (sp3C != 0) + if (players_selected != 0) { temp_v1 = selected_num_players + 1; phi_a0 = temp_v1; - if (get_attached_controller_count(6) < temp_v1) + if (get_attached_controller_count() < temp_v1) { phi_a0 = 2; } init_mp_options_for_scenario(phi_a0); return; } - if (sp38 != 0) + if (scenario_selected != 0) { - set_menu_to_mode(0x13, 0); + set_menu_to_mode(MENU_MP_SCENARIO_SELECT, 0); return; } - if (sp34 != 0) + if (gameselect_selected != 0) { - set_menu_to_mode(0x12, 0); + set_menu_to_mode(MENU_MP_STAGE_SELECT, 0); return; } - if (sp30 != 0) + if (gamelength_selected != 0) { - select_game_length(6); + select_game_length(); return; } - if (sp2C != 0) + if (character_selected != 0) { - set_menu_to_mode(0xf, 0); + set_menu_to_mode(MENU_MP_CHAR_SELECT, 0); return; } - if (sp28 != 0) + if (weaponselect_selected != 0) { - advance_mp_weapon_set_by_one_save_value(6); + advance_mp_weapon_set_by_one_save_value(); return; } - if (sp24 != 0) + if (health_selected != 0) { - set_menu_to_mode(0x10, 0); + set_menu_to_mode(MENU_MP_HANDICAP, 0); return; } - if (sp20 != 0) + if (controlstyle_selected != 0) { - set_menu_to_mode(0x11, 0); + set_menu_to_mode(MENU_MP_CONTROL_STYLE, 0); return; } - if (sp1C != 0) + if (aimadjustment_selected != 0) { - advance_aim_settings_selection(6); + advance_aim_settings_selection(); } } #else GLOBAL_ASM( .late_rodata -glabel D_80051A80 +glabel menu0E_aspect .word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051A84 -.word 0x461C4000 /*10000.0;*/ -glabel D_80051A88 -.word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051A8C -.word 0x461C4000 /*10000.0;*/ -glabel D_80051A90 -.word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051A94 -.word 0x461C4000 /*10000.0;*/ -glabel D_80051A98 -.word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051A9C -.word 0x461C4000 /*10000.0;*/ -glabel D_80051AA0 -.word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051AA4 -.word 0x461C4000 /*10000.0;*/ -glabel D_80051AA8 -.word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051AAC -.word 0x461C4000 /*10000.0;*/ -glabel D_80051AB0 -.word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051AB4 -.word 0x461C4000 /*10000.0;*/ -glabel D_80051AB8 -.word 0x3FAAAAAB /*1.3333334;*/ -glabel D_80051ABC +glabel menu0E_pageheight .word 0x461C4000 /*10000.0;*/ + .text glabel interface_menu0E_mpoptions /* 045378 7F010848 27BDFFC0 */ addiu $sp, $sp, -0x40 @@ -13833,16 +13427,16 @@ glabel interface_menu0E_mpoptions /* 04539C 7F01086C AFA00028 */ sw $zero, 0x28($sp) /* 0453A0 7F010870 AFA00024 */ sw $zero, 0x24($sp) /* 0453A4 7F010874 AFA00020 */ sw $zero, 0x20($sp) -/* 0453A8 7F010878 0C001151 */ jal video_related_1F +/* 0453A8 7F010878 0C001151 */ jal setvideo_far /* 0453AC 7F01087C AFA0001C */ sw $zero, 0x1c($sp) -/* 0453B0 7F010880 3C018005 */ lui $at, %hi(D_80051A80) +/* 0453B0 7F010880 3C018005 */ lui $at, %hi(menu0E_aspect) /* 0453B4 7F010884 0C001164 */ jal video_related_21 -/* 0453B8 7F010888 C42C1A80 */ lwc1 $f12, %lo(D_80051A80)($at) +/* 0453B8 7F010888 C42C1A80 */ lwc1 $f12, %lo(menu0E_aspect)($at) /* 0453BC 7F01088C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 /* 0453C0 7F010890 44816000 */ mtc1 $at, $f12 -/* 0453C4 7F010894 3C018005 */ lui $at, %hi(D_80051A84) +/* 0453C4 7F010894 3C018005 */ lui $at, %hi(menu0E_pageheight) /* 0453C8 7F010898 0C001194 */ jal set_page_height -/* 0453CC 7F01089C C42E1A84 */ lwc1 $f14, %lo(D_80051A84)($at) +/* 0453CC 7F01089C C42E1A84 */ lwc1 $f14, %lo(menu0E_pageheight)($at) /* 0453D0 7F0108A0 0C00114D */ jal set_video2_settings_offset_24 /* 0453D4 7F0108A4 00002025 */ move $a0, $zero /* 0453D8 7F0108A8 0C002E7E */ jal get_attached_controller_count @@ -15567,27 +15161,27 @@ loop_1: phi_v0 = temp_v0; if ((u32) *temp_v0 < 0xbb8U) { - sub_GAME_7F0CBEE8(*temp_v0, 0, *temp_v0); + calls_load_image_to_buffer(*temp_v0, 0, *temp_v0); phi_v0 = mpcharselimages + temp_lo; } temp_v1 = phi_v0->unkC; phi_v0_2 = phi_v0; if (temp_v1 < 0xbb8U) { - sub_GAME_7F0CBEE8(temp_v1, 0); + calls_load_image_to_buffer(temp_v1, 0); phi_v0_2 = mpcharselimages + temp_lo; } temp_v1_2 = phi_v0_2->unk18; phi_v0_3 = phi_v0_2; if (temp_v1_2 < 0xbb8U) { - sub_GAME_7F0CBEE8(temp_v1_2, 0); + calls_load_image_to_buffer(temp_v1_2, 0); phi_v0_3 = mpcharselimages + temp_lo; } temp_v1_3 = phi_v0_3->unk24; if (temp_v1_3 < 0xbb8U) { - sub_GAME_7F0CBEE8(temp_v1_3, 0); + calls_load_image_to_buffer(temp_v1_3, 0); } temp_s1 = phi_s1 + 0xc; phi_s1 = temp_s1; @@ -15597,7 +15191,7 @@ loop_1: } if (num_chars_selectable_mp != 0x40) { - if (doesFolderHaveStageUnlockedAtDifficulty(selected_folder_num, 0x11, 0) == 3) + if (isStageUnlockedAtDifficulty(selected_folder_num, 0x11, 0) == 3) { num_chars_selectable_mp = 0x21; } @@ -15698,7 +15292,7 @@ glabel init_menu0f_mpcharsel /* 0467F0 7F011CC0 2CC10BB8 */ sltiu $at, $a2, 0xbb8 /* 0467F4 7F011CC4 10200005 */ beqz $at, .L7F011CDC /* 0467F8 7F011CC8 00C02025 */ move $a0, $a2 -/* 0467FC 7F011CCC 0FC32FBA */ jal sub_GAME_7F0CBEE8 +/* 0467FC 7F011CCC 0FC32FBA */ jal calls_load_image_to_buffer /* 046800 7F011CD0 00002825 */ move $a1, $zero /* 046804 7F011CD4 8E580000 */ lw $t8, ($s2) /* 046808 7F011CD8 03101021 */ addu $v0, $t8, $s0 @@ -15707,7 +15301,7 @@ glabel init_menu0f_mpcharsel /* 046810 7F011CE0 2C610BB8 */ sltiu $at, $v1, 0xbb8 /* 046814 7F011CE4 10200005 */ beqz $at, .L7F011CFC /* 046818 7F011CE8 00602025 */ move $a0, $v1 -/* 04681C 7F011CEC 0FC32FBA */ jal sub_GAME_7F0CBEE8 +/* 04681C 7F011CEC 0FC32FBA */ jal calls_load_image_to_buffer /* 046820 7F011CF0 00002825 */ move $a1, $zero /* 046824 7F011CF4 8E590000 */ lw $t9, ($s2) /* 046828 7F011CF8 03301021 */ addu $v0, $t9, $s0 @@ -15716,7 +15310,7 @@ glabel init_menu0f_mpcharsel /* 046830 7F011D00 2C610BB8 */ sltiu $at, $v1, 0xbb8 /* 046834 7F011D04 10200005 */ beqz $at, .L7F011D1C /* 046838 7F011D08 00602025 */ move $a0, $v1 -/* 04683C 7F011D0C 0FC32FBA */ jal sub_GAME_7F0CBEE8 +/* 04683C 7F011D0C 0FC32FBA */ jal calls_load_image_to_buffer /* 046840 7F011D10 00002825 */ move $a1, $zero /* 046844 7F011D14 8E480000 */ lw $t0, ($s2) /* 046848 7F011D18 01101021 */ addu $v0, $t0, $s0 @@ -15725,7 +15319,7 @@ glabel init_menu0f_mpcharsel /* 046850 7F011D20 2C610BB8 */ sltiu $at, $v1, 0xbb8 /* 046854 7F011D24 10200003 */ beqz $at, .L7F011D34 /* 046858 7F011D28 00602025 */ move $a0, $v1 -/* 04685C 7F011D2C 0FC32FBA */ jal sub_GAME_7F0CBEE8 +/* 04685C 7F011D2C 0FC32FBA */ jal calls_load_image_to_buffer /* 046860 7F011D30 00002825 */ move $a1, $zero .L7F011D34: /* 046864 7F011D34 2631000C */ addiu $s1, $s1, 0xc @@ -15740,7 +15334,7 @@ glabel init_menu0f_mpcharsel /* 046888 7F011D58 11210023 */ beq $t1, $at, .L7F011DE8 /* 04688C 7F011D5C 24050011 */ li $a1, 17 /* 046890 7F011D60 8C84A8E8 */ lw $a0, %lo(selected_folder_num)($a0) -/* 046894 7F011D64 0FC078B0 */ jal doesFolderHaveStageUnlockedAtDifficulty +/* 046894 7F011D64 0FC078B0 */ jal isStageUnlockedAtDifficulty /* 046898 7F011D68 00003025 */ move $a2, $zero /* 04689C 7F011D6C 24010003 */ li $at, 3 /* 0468A0 7F011D70 14410004 */ bne $v0, $at, .L7F011D84 @@ -15871,7 +15465,7 @@ void interface_menu0F_mpcharsel(void) iVar4 = get_selected_num_players(); iStack12 = 0; - video_related_1F(60.00000000); + setvideo_far(60.00000000); video_related_21((f32)flt_80051A88); set_page_height(100.00000000,(f32)flt_80051A8C); set_video2_settings_offset_24(0); @@ -15994,6 +15588,12 @@ LAB_7f012164: } #else GLOBAL_ASM( +.late_rodata +glabel D_80051A88 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051A8C +.word 0x461C4000 /*10000.0;*/ + .text glabel interface_menu0F_mpcharsel /* 046A04 7F011ED4 27BDFFB0 */ addiu $sp, $sp, -0x50 @@ -16011,7 +15611,7 @@ glabel interface_menu0F_mpcharsel /* 046A34 7F011F04 3C014270 */ li $at, 0x42700000 # 60.000000 /* 046A38 7F011F08 44816000 */ mtc1 $at, $f12 /* 046A3C 7F011F0C AFA2004C */ sw $v0, 0x4c($sp) -/* 046A40 7F011F10 0C001151 */ jal video_related_1F +/* 046A40 7F011F10 0C001151 */ jal setvideo_far /* 046A44 7F011F14 AFA00044 */ sw $zero, 0x44($sp) /* 046A48 7F011F18 3C018005 */ lui $at, %hi(D_80051A88) /* 046A4C 7F011F1C 0C001164 */ jal video_related_21 @@ -17515,7 +17115,7 @@ void interface_menu10_mphandicap(void) s32 phi_fp_2; sp44 = get_selected_num_players(); - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051A90); set_page_height(0x42c80000, D_80051A94); set_video2_settings_offset_24(0); @@ -17617,6 +17217,12 @@ block_15: } #else GLOBAL_ASM( +.late_rodata +glabel D_80051A90 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051A94 +.word 0x461C4000 /*10000.0;*/ + .text glabel interface_menu10_mphandicap /* 0479F4 7F012EC4 27BDFFB8 */ addiu $sp, $sp, -0x48 @@ -17634,7 +17240,7 @@ glabel interface_menu10_mphandicap /* 047A24 7F012EF4 3C014270 */ li $at, 0x42700000 # 60.000000 /* 047A28 7F012EF8 44816000 */ mtc1 $at, $f12 /* 047A2C 7F012EFC AFA20044 */ sw $v0, 0x44($sp) -/* 047A30 7F012F00 0C001151 */ jal video_related_1F +/* 047A30 7F012F00 0C001151 */ jal setvideo_far /* 047A34 7F012F04 0000F025 */ move $fp, $zero /* 047A38 7F012F08 3C018005 */ lui $at, %hi(D_80051A90) /* 047A3C 7F012F0C 0C001164 */ jal video_related_21 @@ -18248,7 +17854,7 @@ void interface_menu11_mpcontrols(void) temp_s6 = get_selected_num_players(); sp44 = 0; - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051A98); set_page_height(0x42c80000, D_80051A9C); set_video2_settings_offset_24(0); @@ -18403,6 +18009,12 @@ block_31: #ifdef VERSION_US GLOBAL_ASM( +.late_rodata +glabel D_80051A98 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051A9C +.word 0x461C4000 /*10000.0;*/ + .text glabel interface_menu11_mpcontrols /* 048138 7F013608 27BDFFB0 */ addiu $sp, $sp, -0x50 @@ -18420,7 +18032,7 @@ glabel interface_menu11_mpcontrols /* 048168 7F013638 3C014270 */ li $at, 0x42700000 # 60.000000 /* 04816C 7F01363C 44816000 */ mtc1 $at, $f12 /* 048170 7F013640 0040B025 */ move $s6, $v0 -/* 048174 7F013644 0C001151 */ jal video_related_1F +/* 048174 7F013644 0C001151 */ jal setvideo_far /* 048178 7F013648 AFA00044 */ sw $zero, 0x44($sp) /* 04817C 7F01364C 3C018005 */ lui $at, %hi(D_80051A98) /* 048180 7F013650 0C001164 */ jal video_related_21 @@ -18652,6 +18264,11 @@ glabel interface_menu11_mpcontrols #ifdef VERSION_JP GLOBAL_ASM( +.late_rodata +glabel D_80051A98 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051A9C +.word 0x461C4000 /*10000.0;*/ .text glabel interface_menu11_mpcontrols /* 0481B8 7F013648 27BDFFA0 */ addiu $sp, $sp, -0x60 @@ -18669,7 +18286,7 @@ glabel interface_menu11_mpcontrols /* 0481E8 7F013678 3C014270 */ li $at, 0x42700000 # 60.000000 /* 0481EC 7F01367C 44816000 */ mtc1 $at, $f12 /* 0481F0 7F013680 0040B825 */ move $s7, $v0 -/* 0481F4 7F013684 0C001151 */ jal video_related_1F +/* 0481F4 7F013684 0C001151 */ jal setvideo_far /* 0481F8 7F013688 AFA00054 */ sw $zero, 0x54($sp) /* 0481FC 7F01368C 3C018005 */ lui $at, %hi(D_80051A98) # $at, 0x8005 /* 048200 7F013690 0C001164 */ jal video_related_21 @@ -19359,7 +18976,7 @@ void interface_menu12_mpstage(void) s32 phi_v1; s32 phi_v0; - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051AA0); set_page_height(0x42c80000, D_80051AA4); set_video2_settings_offset_24(0); @@ -19462,13 +19079,19 @@ loop_14: } #else GLOBAL_ASM( +.late_rodata +glabel D_80051AA0 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051AA4 +.word 0x461C4000 /*10000.0;*/ + .text glabel interface_menu12_mpstage /* 048904 7F013DD4 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 048908 7F013DD8 3C014270 */ li $at, 0x42700000 # 60.000000 /* 04890C 7F013DDC AFBF001C */ sw $ra, 0x1c($sp) /* 048910 7F013DE0 44816000 */ mtc1 $at, $f12 -/* 048914 7F013DE4 0C001151 */ jal video_related_1F +/* 048914 7F013DE4 0C001151 */ jal setvideo_far /* 048918 7F013DE8 AFB00018 */ sw $s0, 0x18($sp) /* 04891C 7F013DEC 3C018005 */ lui $at, %hi(D_80051AA0) /* 048920 7F013DF0 0C001164 */ jal video_related_21 @@ -20370,7 +19993,7 @@ void interface_menu13_mpscenario(void) s32 phi_s1; sp2C = 0; - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051AA8); set_page_height(0x42c80000, D_80051AAC); set_video2_settings_offset_24(0); @@ -20454,6 +20077,12 @@ loop_4: } #else GLOBAL_ASM( +.late_rodata +glabel D_80051AA8 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051AAC +.word 0x461C4000 /*10000.0;*/ + .text glabel interface_menu13_mpscenario /* 0492E8 7F0147B8 27BDFFD0 */ addiu $sp, $sp, -0x30 @@ -20463,7 +20092,7 @@ glabel interface_menu13_mpscenario /* 0492F8 7F0147C8 AFB20020 */ sw $s2, 0x20($sp) /* 0492FC 7F0147CC AFB1001C */ sw $s1, 0x1c($sp) /* 049300 7F0147D0 AFB00018 */ sw $s0, 0x18($sp) -/* 049304 7F0147D4 0C001151 */ jal video_related_1F +/* 049304 7F0147D4 0C001151 */ jal setvideo_far /* 049308 7F0147D8 AFA0002C */ sw $zero, 0x2c($sp) /* 04930C 7F0147DC 3C018005 */ lui $at, %hi(D_80051AA8) /* 049310 7F0147E0 0C001164 */ jal video_related_21 @@ -20943,7 +20572,7 @@ void interface_menu14_mpteams(void) ? phi_a1_2; s32 phi_s0_2; - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051AB0); set_page_height(0x42c80000, D_80051AB4); set_video2_settings_offset_24(0); @@ -21079,6 +20708,12 @@ loop_29: } #else GLOBAL_ASM( +.late_rodata +glabel D_80051AB0 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051AB4 +.word 0x461C4000 /*10000.0;*/ + .text glabel interface_menu14_mpteams /* 049878 7F014D48 27BDFFE0 */ addiu $sp, $sp, -0x20 @@ -21086,7 +20721,7 @@ glabel interface_menu14_mpteams /* 049880 7F014D50 AFBF001C */ sw $ra, 0x1c($sp) /* 049884 7F014D54 44816000 */ mtc1 $at, $f12 /* 049888 7F014D58 AFB10018 */ sw $s1, 0x18($sp) -/* 04988C 7F014D5C 0C001151 */ jal video_related_1F +/* 04988C 7F014D5C 0C001151 */ jal setvideo_far /* 049890 7F014D60 AFB00014 */ sw $s0, 0x14($sp) /* 049894 7F014D64 3C018005 */ lui $at, %hi(D_80051AB0) /* 049898 7F014D68 0C001164 */ jal video_related_21 @@ -21902,7 +21537,7 @@ void update_menu0A_briefing(void) #ifdef NONMATCHING void interface_menu0A_briefing(void) { - video_related_1F(0x42700000); + setvideo_far(0x42700000); video_related_21(D_80051AB8); set_page_height(0x42c80000, D_80051ABC); set_video2_settings_offset_24(0); @@ -22011,13 +21646,18 @@ void interface_menu0A_briefing(void) } #else GLOBAL_ASM( +.late_rodata +glabel D_80051AB8 +.word 0x3FAAAAAB /*1.3333334;*/ +glabel D_80051ABC +.word 0x461C4000 /*10000.0;*/ .text glabel interface_menu0A_briefing /* 04A1CC 7F01569C 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 04A1D0 7F0156A0 3C014270 */ li $at, 0x42700000 # 60.000000 /* 04A1D4 7F0156A4 AFBF0014 */ sw $ra, 0x14($sp) /* 04A1D8 7F0156A8 44816000 */ mtc1 $at, $f12 -/* 04A1DC 7F0156AC 0C001151 */ jal video_related_1F +/* 04A1DC 7F0156AC 0C001151 */ jal setvideo_far /* 04A1E0 7F0156B0 00000000 */ nop /* 04A1E4 7F0156B4 3C018005 */ lui $at, %hi(D_80051AB8) /* 04A1E8 7F0156B8 0C001164 */ jal video_related_21 @@ -22455,7 +22095,7 @@ glabel print_objectives_and_status_to_menu /* 04A6C8 7F015B98 01776021 */ addu $t4, $t3, $s7 /* 04A6CC 7F015B9C 11A0000E */ beqz $t5, .L7F015BD8 /* 04A6D0 7F015BA0 AFAC0088 */ sw $t4, 0x88($sp) -/* 04A6D4 7F015BA4 0FC2B2E5 */ jal sub_GAME_7F0ACB94 +/* 04A6D4 7F015BA4 0FC2B2E5 */ jal setTextWordWrap /* 04A6D8 7F015BA8 24040002 */ li $a0, 2 /* 04A6DC 7F015BAC 8EAE0000 */ lw $t6, ($s5) /* 04A6E0 7F015BB0 240400DC */ li $a0, 220 @@ -22464,7 +22104,7 @@ glabel print_objectives_and_status_to_menu /* 04A6EC 7F015BBC 8E870000 */ lw $a3, ($s4) /* 04A6F0 7F015BC0 0FC2BAD9 */ jal sub_GAME_7F0AEB64 /* 04A6F4 7F015BC4 AFAE0010 */ sw $t6, 0x10($sp) -/* 04A6F8 7F015BC8 0FC2B2E5 */ jal sub_GAME_7F0ACB94 +/* 04A6F8 7F015BC8 0FC2B2E5 */ jal setTextWordWrap /* 04A6FC 7F015BCC 00002025 */ move $a0, $zero /* 04A700 7F015BD0 10000005 */ b .L7F015BE8 /* 04A704 7F015BD4 00000000 */ nop @@ -22847,7 +22487,7 @@ def_7F015E0C: /* 04AACC 7F015F9C 27A6004C */ addiu $a2, $sp, 0x4c /* 04AAD0 7F015FA0 0FC2BAD9 */ jal sub_GAME_7F0AEB64 /* 04AAD4 7F015FA4 AFAC0010 */ sw $t4, 0x10($sp) -/* 04AAD8 7F015FA8 0FC2B2E8 */ jal sub_GAME_7F0ACBA0 +/* 04AAD8 7F015FA8 0FC2B2E8 */ jal setTextOverlapCorrection /* 04AADC 7F015FAC 24040008 */ li $a0, 8 /* 04AAE0 7F015FB0 0C001107 */ jal get_video2_settings_txtClipW /* 04AAE4 7F015FB4 00000000 */ nop @@ -22872,7 +22512,7 @@ def_7F015E0C: /* 04AB30 7F016000 0FC025D8 */ jal write_text_at_abs_coord /* 04AB34 7F016004 AFA8001C */ sw $t0, 0x1c($sp) /* 04AB38 7F016008 00408025 */ move $s0, $v0 -/* 04AB3C 7F01600C 0FC2B2E8 */ jal sub_GAME_7F0ACBA0 +/* 04AB3C 7F01600C 0FC2B2E8 */ jal setTextOverlapCorrection /* 04AB40 7F016010 2404FFFF */ li $a0, -1 .L7F016014: /* 04AB44 7F016014 0FC02820 */ jal add_tab1_start @@ -22939,7 +22579,7 @@ void interface_menu0C_missionfailed(void) const f32 menu0C_aspect = 1.3333334; const f32 menu0C_pageheight = 10000.0; - video_related_1F(60.00000000); + setvideo_far(60.00000000); video_related_21(menu0C_aspect); set_page_height(100.00000000, menu0C_pageheight); set_video2_settings_offset_24(0); @@ -23014,7 +22654,7 @@ glabel interface_menu0C_missionfailed /* 04AC44 7F016114 3C014270 */ li $at, 0x42700000 # 60.000000 /* 04AC48 7F016118 AFBF0014 */ sw $ra, 0x14($sp) /* 04AC4C 7F01611C 44816000 */ mtc1 $at, $f12 -/* 04AC50 7F016120 0C001151 */ jal video_related_1F +/* 04AC50 7F016120 0C001151 */ jal setvideo_far /* 04AC54 7F016124 00000000 */ nop /* 04AC58 7F016128 3C018005 */ lui $at, %hi(menu0C_aspect) /* 04AC5C 7F01612C 0C001164 */ jal video_related_21 @@ -23534,7 +23174,7 @@ void interface_menu0D_missioncomplete(undefined8 param_1,undefined8 param_2) short sVar6; int iVar7; - video_related_1F(60.00000000); + setvideo_far(60.00000000); video_related_21((f32)menu0D_aspect); set_page_height(100.00000000,(f32)menu0D_pageheight); set_video2_settings_offset_24(0); @@ -23638,7 +23278,7 @@ glabel interface_menu0D_missioncomplete /* 04B20C 7F0166DC 3C014270 */ li $at, 0x42700000 # 60.000000 /* 04B210 7F0166E0 AFBF0014 */ sw $ra, 0x14($sp) /* 04B214 7F0166E4 44816000 */ mtc1 $at, $f12 -/* 04B218 7F0166E8 0C001151 */ jal video_related_1F +/* 04B218 7F0166E8 0C001151 */ jal setvideo_far /* 04B21C 7F0166EC 00000000 */ nop /* 04B220 7F0166F0 3C018005 */ lui $at, %hi(menu0D_aspect) /* 04B224 7F0166F4 0C001164 */ jal video_related_21 @@ -25012,7 +24652,7 @@ void interface_menu0D_missioncomplete(undefined8 param_1,undefined8 param_2) short sVar6; int iVar7; - video_related_1F(60.00000000); + setvideo_far(60.00000000); video_related_21((f32)menu0D_aspect); set_page_height(100.00000000,(f32)menu0D_pageheight); set_video2_settings_offset_24(0); @@ -25206,7 +24846,7 @@ glabel update_menu15_cheat /* 04C75C 7F017C2C 02002025 */ move $a0, $s0 /* 04C760 7F017C30 51C00007 */ beql $t6, $zero, .L7F017C50 /* 04C764 7F017C34 26100001 */ addiu $s0, $s0, 1 -/* 04C768 7F017C38 0FC2469E */ jal sub_GAME_7F091A78 +/* 04C768 7F017C38 0FC2469E */ jal cheatCheckIfMPCheat /* 04C76C 7F017C3C 24130001 */ li $s3, 1 /* 04C770 7F017C40 50400003 */ beql $v0, $zero, .L7F017C50 /* 04C774 7F017C44 26100001 */ addiu $s0, $s0, 1 @@ -25236,19 +24876,17 @@ glabel update_menu15_cheat void interface_menu15_cheat(undefined8 param_1,undefined8 param_2) { int iVar1; - ulonglong uVar2; BOOL BVar3; int iVar4; int iVar5; - video_related_1F(60.00000000); - video_related_21((f32)menu15_aspect); - set_page_height(100.00000000,(f32)menu15_pageheight); + setvideo_far(60.00000000); + video_related_21(menu15_aspect); + set_page_height(100.00000000, menu15_pageheight); set_video2_settings_offset_24(0); MP_menu_selected_option = 0; - uVar2 = get_controller_buttons_held(0,Z_TRIG|A_BUTTON); iVar1 = dword_8002B5E0; - if (uVar2 == 0) { + if (get_controller_buttons_held(0,Z_TRIG|A_BUTTON) == 0) { tab_3_highlight = FALSE; tab_2_highlight = FALSE; tab_1_highlight = FALSE; @@ -25340,7 +24978,7 @@ glabel interface_menu15_cheat /* 04C7BC 7F017C8C 3C014270 */ li $at, 0x42700000 # 60.000000 /* 04C7C0 7F017C90 AFBF0014 */ sw $ra, 0x14($sp) /* 04C7C4 7F017C94 44816000 */ mtc1 $at, $f12 -/* 04C7C8 7F017C98 0C001151 */ jal video_related_1F +/* 04C7C8 7F017C98 0C001151 */ jal setvideo_far /* 04C7CC 7F017C9C 00000000 */ nop /* 04C7D0 7F017CA0 3C018005 */ lui $at, %hi(menu15_aspect) /* 04C7D4 7F017CA4 0C001164 */ jal video_related_21 @@ -25590,7 +25228,7 @@ glabel constructor_menu15_cheat /* 04CB30 7F018000 26B50035 */ addiu $s5, $s5, 0x35 /* 04CB34 7F018004 01CF9821 */ addu $s3, $t6, $t7 .L7F018008: -/* 04CB38 7F018008 0FC249DD */ jal sub_GAME_7F092774 +/* 04CB38 7F018008 0FC249DD */ jal cheatGetMenuTextPointer /* 04CB3C 7F01800C 8E640000 */ lw $a0, ($s3) /* 04CB40 7F018010 8EF80000 */ lw $t8, ($s7) /* 04CB44 7F018014 00409025 */ move $s2, $v0 @@ -25731,7 +25369,7 @@ glabel constructor_menu15_cheat /* 04CD48 7F018218 267397F0 */ addiu $s3, %lo(dword_CODE_bss_800697F0) # addiu $s3, $s3, -0x6810 /* 04CD4C 7F01821C 24150035 */ li $s5, 53 .L7F018220: -/* 04CD50 7F018220 0FC249DD */ jal sub_GAME_7F092774 +/* 04CD50 7F018220 0FC249DD */ jal cheatGetMenuTextPointer /* 04CD54 7F018224 8E640030 */ lw $a0, 0x30($s3) /* 04CD58 7F018228 8EEE0000 */ lw $t6, ($s7) /* 04CD5C 7F01822C 00409025 */ move $s2, $v0 @@ -26790,7 +26428,7 @@ set_body_mp_choice_maybe: /* 04D49C 7F01896C 0FC1D929 */ jal load_object_fill_header /* 04D4A0 7F018970 AFA40080 */ sw $a0, 0x80($sp) /* 04D4A4 7F018974 8FA20024 */ lw $v0, 0x24($sp) -/* 04D4A8 7F018978 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 04D4A8 7F018978 0FC2F462 */ jal get_pc_buffer_remaining_value /* 04D4AC 7F01897C 8C440004 */ lw $a0, 4($v0) /* 04D4B0 7F018980 2443003F */ addiu $v1, $v0, 0x3f /* 04D4B4 7F018984 8FB900B0 */ lw $t9, 0xb0($sp) @@ -26819,7 +26457,7 @@ set_body_mp_choice_maybe: /* 04D510 7F0189E0 0FC1D929 */ jal load_object_fill_header /* 04D514 7F0189E4 AFA4007C */ sw $a0, 0x7c($sp) /* 04D518 7F0189E8 8FA20024 */ lw $v0, 0x24($sp) -/* 04D51C 7F0189EC 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 04D51C 7F0189EC 0FC2F462 */ jal get_pc_buffer_remaining_value /* 04D520 7F0189F0 8C440004 */ lw $a0, 4($v0) /* 04D524 7F0189F4 2443003F */ addiu $v1, $v0, 0x3f /* 04D528 7F0189F8 8FB900B0 */ lw $t9, 0xb0($sp) @@ -26943,7 +26581,7 @@ set_body_mp_choice_maybe: /* 04D6D8 7F018BA8 0FC1D929 */ jal load_object_fill_header /* 04D6DC 7F018BAC AFA40078 */ sw $a0, 0x78($sp) /* 04D6E0 7F018BB0 8FA20024 */ lw $v0, 0x24($sp) -/* 04D6E4 7F018BB4 0FC2F462 */ jal sub_GAME_7F0BD188 +/* 04D6E4 7F018BB4 0FC2F462 */ jal get_pc_buffer_remaining_value /* 04D6E8 7F018BB8 8C440004 */ lw $a0, 4($v0) /* 04D6EC 7F018BBC 0FC1D73D */ jal set_objuse_flag_compute_grp_nums_set_obj_loaded /* 04D6F0 7F018BC0 8FA40078 */ lw $a0, 0x78($sp) @@ -27197,7 +26835,7 @@ void interface_menu18_displaycast(undefined8 param_1,undefined8 param_2) ulonglong uVar1; int iVar4; - video_related_1F(46.00000000); + setvideo_far(46.00000000); set_page_height(10.00000000,2000.00000000); set_video2_settings_offset_24(1); video_related_21((f32)flt_80051B08); @@ -27307,7 +26945,7 @@ glabel interface_menu18_displaycast /* 04DAA0 7F018F70 AFB30020 */ sw $s3, 0x20($sp) /* 04DAA4 7F018F74 AFB2001C */ sw $s2, 0x1c($sp) /* 04DAA8 7F018F78 AFB10018 */ sw $s1, 0x18($sp) -/* 04DAAC 7F018F7C 0C001151 */ jal video_related_1F +/* 04DAAC 7F018F7C 0C001151 */ jal setvideo_far /* 04DAB0 7F018F80 AFB00014 */ sw $s0, 0x14($sp) /* 04DAB4 7F018F84 3C014120 */ li $at, 0x41200000 # 10.000000 /* 04DAB8 7F018F88 44816000 */ mtc1 $at, $f12 @@ -27882,7 +27520,7 @@ glabel constructor_menu18_displaycast /* 04E2FC 7F0197CC 03002025 */ move $a0, $t8 /* 04E300 7F0197D0 27B201E8 */ addiu $s2, $sp, 0x1e8 /* 04E304 7F0197D4 AFA201B8 */ sw $v0, 0x1b8($sp) -/* 04E308 7F0197D8 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 04E308 7F0197D8 0FC15FF4 */ jal reset_array_of_0x10_floats /* 04E30C 7F0197DC 02402025 */ move $a0, $s2 /* 04E310 7F0197E0 AFB201A8 */ sw $s2, 0x1a8($sp) /* 04E314 7F0197E4 27A401A8 */ addiu $a0, $sp, 0x1a8 @@ -28823,7 +28461,7 @@ void update_menu19_spectrum(void) { #ifdef NONMATCHING void interface_menu19_spectrum(void) { - video_related_1F(60.0f); + setvideo_far(60.0f); video_related_21(D_80051B3C); set_page_height(100.0f, D_80051B40); set_video2_settings_offset_24(0); @@ -28837,7 +28475,7 @@ glabel interface_menu19_spectrum /* 04EFBC 7F01A48C 3C014270 */ li $at, 0x42700000 # 60.000000 /* 04EFC0 7F01A490 AFBF0014 */ sw $ra, 0x14($sp) /* 04EFC4 7F01A494 44816000 */ mtc1 $at, $f12 -/* 04EFC8 7F01A498 0C001151 */ jal video_related_1F +/* 04EFC8 7F01A498 0C001151 */ jal setvideo_far /* 04EFCC 7F01A49C 00000000 */ nop /* 04EFD0 7F01A4A0 3C018005 */ lui $at, %hi(D_80051B3C) /* 04EFD4 7F01A4A4 0C001164 */ jal video_related_21 @@ -29019,417 +28657,307 @@ MENU get_currentmenu(void) #ifdef NONMATCHING void menu_init(undefined8 param_1,undefined8 param_2) - { - MENU MVar1; - undefined1 *puVar2; - int iVar3; - undefined8 extraout_a1; - undefined8 extraout_a1_00; - undefined8 extraout_a1_01; - undefined8 extraout_a1_02; - undefined8 extraout_a1_03; - undefined8 extraout_a1_04; - undefined8 extraout_a1_05; - undefined8 extraout_a1_06; - undefined8 extraout_a1_07; - undefined8 extraout_a1_08; - undefined8 extraout_a1_09; - undefined8 extraout_a1_10; - undefined8 extraout_a1_11; - undefined8 extraout_a1_12; - undefined8 extraout_a1_13; - undefined8 extraout_a1_14; - undefined8 extraout_a1_15; - undefined8 extraout_a1_16; - undefined8 extraout_a1_17; - undefined8 extraout_a1_18; - undefined8 extraout_a1_19; - undefined8 extraout_a1_20; - undefined8 extraout_a1_21; - undefined8 extraout_a1_22; - undefined8 extraout_a1_23; - undefined8 extraout_a1_24; - undefined8 extraout_a1_25; - undefined8 extraout_a1_26; - undefined8 extraout_a1_27; - undefined8 extraout_a1_28; - undefined8 extraout_a1_29; - undefined8 extraout_a1_30; - undefined8 extraout_a1_31; - undefined8 extraout_a1_32; - undefined8 extraout_a1_33; - undefined8 extraout_a1_34; - undefined8 extraout_a1_35; - undefined8 extraout_a1_36; - undefined8 extraout_a1_37; - undefined8 extraout_a1_38; - undefined8 extraout_a1_39; - undefined8 extraout_a1_40; - undefined8 extraout_a1_41; - undefined8 extraout_a1_42; - undefined8 extraout_a1_43; - undefined8 extraout_a1_44; - undefined8 extraout_a1_45; - undefined8 extraout_a1_46; - undefined8 extraout_a1_47; - undefined8 extraout_a1_48; - undefined8 extraout_a1_49; - undefined8 extraout_a1_50; - undefined8 uVar4; - - if (current_menu == MENU_SWITCH_SCREENS) { - if (spectrum_related_flag == FALSE) { - if ((is_emulating_spectrum != FALSE) && - (puVar2 = (undefined1 *)get_video_settings2_frameb(), puVar2 == cfb_16_a)) { - screen_size = SCREEN_SIZE_320x240; - is_emulating_spectrum = FALSE; - } - } - else { - puVar2 = (undefined1 *)get_video_settings2_frameb(); - if (puVar2 == cfb_16_b) { - screen_size = SCREEN_SIZE_440x330; - spectrum_related_flag = FALSE; - } - } - } - if (screen_size == SCREEN_SIZE_320x240) { - video_related_21((f32)flt_80051B48); - set_video2_text_clip_size(0x140,0xf0); - set_video2_settings_offset_18_1A(0x140,0xf0); - set_cur_player_screen_size(0x140,0xf0); - set_video2_width_height(0x140,0xf0); - set_cur_player_viewport_size(0,0); - set_video2_ulx_uly(0,0); - uVar4 = extraout_a1_00; - } - else { - puVar2 = (undefined1 *)get_video_settings2_frameb(); - if (puVar2 == cfb_16_b) { - set_video_settings2_frameb((int)ptr_menu_videobuffer); - } - video_related_21((f32)flt_80051B44); - set_video2_text_clip_size(0x1b8,0x14a); - set_video2_settings_offset_18_1A(0x1b8,0x14a); - set_cur_player_screen_size(0x1b8,0x14a); - set_video2_width_height(0x1b8,0x14a); - set_cur_player_viewport_size(0,0); - set_video2_ulx_uly(0,0); - uVar4 = extraout_a1; - } - if (((-1 < (int)menu_update) || (-1 < (int)maybe_prev_menu)) && - (current_menu != MENU_SWITCH_SCREENS)) { - if (true) { - switch(current_menu) { - case MENU_LEGAL_SCREEN: - update_menu00_legalscreen(); - uVar4 = extraout_a1_01; - break; - case MENU_NINTENDO_LOGO: - update_menu01_nintendo(); - uVar4 = extraout_a1_02; - break; - case MENU_RAREWARE_LOGO: - update_menu02_rareware(); - uVar4 = extraout_a1_03; - break; - case MENU_EYE_INTRO: - update_menu_03_eyeintro(); - uVar4 = extraout_a1_04; - break; - case MENU_GOLDENEYE_LOGO: - update_menu04_goldeneyelogo(); - uVar4 = extraout_a1_05; - break; - case MENU_FILE_SELECT: - update_menu05_filesel(); - uVar4 = extraout_a1_06; - break; - case MENU_MODE_SELECT: - update_menu06_modesel(); - uVar4 = extraout_a1_07; - break; - case MENU_MISSION_SELECT: - update_menu07_missionsel(); - uVar4 = extraout_a1_08; - break; - case MENU_DIFFICULTY: - update_menu08_difficulty(); - uVar4 = extraout_a1_09; - break; - case MENU_007_OPTIONS: - update_menu09_007options(); - uVar4 = extraout_a1_10; - break; - case MENU_BRIEFING: - update_menu0A_briefing(); - uVar4 = extraout_a1_11; - break; - case MENU_MISSION_FAILED: - update_menu0C_missionfailed(); - uVar4 = extraout_a1_12; - break; - case MENU_MISSION_COMPLETE: - update_menu0D_missioncomplete(); - uVar4 = extraout_a1_13; - break; - case MENU_MP_OPTIONS: - update_menu0E_mpoptions(); - uVar4 = extraout_a1_14; - break; - case MENU_MP_CHAR_SELECT: - update_menu0F_mpcharsel(); - uVar4 = extraout_a1_16; - break; - case MENU_MP_HANDICAP: - update_menu10_mphandicap(); - uVar4 = extraout_a1_18; - break; - case MENU_MP_CONTROL_STYLE: - update_menu11_mpcontrols(); - uVar4 = extraout_a1_19; - break; - case MENU_MP_STAGE_SELECT: - update_menu12_mpstage(); - uVar4 = extraout_a1_20; - break; - case MENU_MP_SCENARIO_SELECT: - update_menu13_mpscenario(); - uVar4 = extraout_a1_15; - break; - case MENU_MP_TEAMS: - update_menu14_mpteams(); - uVar4 = extraout_a1_17; - break; - case MENU_CHEAT: - update_menu15_cheat(); - uVar4 = extraout_a1_21; - break; - case MENU_NO_CONTROLLERS: - update_menu16_nocontrollers(); - uVar4 = extraout_a1_22; - break; - case MENU_DISPLAY_CAST: - update_menu18_displaycast(); - uVar4 = extraout_a1_23; - break; - case MENU_SPECTRUM_EMU: - update_menu19_spectrum(); - uVar4 = extraout_a1_24; - } - } - if (-1 < (int)menu_update) { - current_menu = MENU_SWITCH_SCREENS; - reset_menutimer(); - uVar4 = extraout_a1_25; - } - } - MVar1 = maybe_prev_menu; - if (true) { - current_menu = maybe_prev_menu; - maybe_prev_menu = ~MENU_LEGAL_SCREEN; - if (true) { - switch(MVar1) { - case MENU_LEGAL_SCREEN: - init_menu00_legalscreen(); - uVar4 = extraout_a1_26; - break; - case MENU_NINTENDO_LOGO: - init_menu01_nintendo(); - uVar4 = extraout_a1_27; - break; - case MENU_RAREWARE_LOGO: - init_menu02_rareware(); - uVar4 = extraout_a1_28; - break; - case MENU_EYE_INTRO: - init_menu03_eyeintro(); - uVar4 = extraout_a1_29; - break; - case MENU_GOLDENEYE_LOGO: - init_menu04_goldeneyelogo(); - uVar4 = extraout_a1_30; - break; - case MENU_FILE_SELECT: - init_menu05_filesel(); - uVar4 = extraout_a1_31; - break; - case MENU_MODE_SELECT: - init_menu06_modesel(); - uVar4 = extraout_a1_32; - break; - case MENU_MISSION_SELECT: - init_menu07_missionsel(); - uVar4 = extraout_a1_33; - break; - case MENU_DIFFICULTY: - init_menu08_difficulty(); - uVar4 = extraout_a1_34; - break; - case MENU_007_OPTIONS: - init_menu09_007options(); - uVar4 = extraout_a1_35; - break; - case MENU_BRIEFING: - init_menu0A_briefing(); - uVar4 = extraout_a1_36; - break; - case MENU_RUN_STAGE: - init_menu0B_runstage(); - uVar4 = extraout_a1_37; - break; - case MENU_MISSION_FAILED: - init_menu0C_missionfailed(); - uVar4 = extraout_a1_38; - break; - case MENU_MISSION_COMPLETE: - init_menu0D_missioncomplete(); - uVar4 = extraout_a1_39; - break; - case MENU_MP_OPTIONS: - init_menu0E_mpoptions(); - uVar4 = extraout_a1_40; - break; - case MENU_MP_CHAR_SELECT: - init_menu0f_mpcharsel(); - uVar4 = extraout_a1_42; - break; - case MENU_MP_HANDICAP: - init_menu10_mphandicap(); - uVar4 = extraout_a1_44; - break; - case MENU_MP_CONTROL_STYLE: - init_menu11_mpcontrol(); - uVar4 = extraout_a1_45; - break; - case MENU_MP_STAGE_SELECT: - init_menu12_mpstage(); - uVar4 = extraout_a1_46; - break; - case MENU_MP_SCENARIO_SELECT: - init_menu13_mpscenariosel(); - uVar4 = extraout_a1_41; - break; - case MENU_MP_TEAMS: - init_menu14_mpteamsel(); - uVar4 = extraout_a1_43; - break; - case MENU_CHEAT: - init_menu15_cheat(); - uVar4 = extraout_a1_47; - break; - case MENU_NO_CONTROLLERS: - init_menu16_nocontroller(); - uVar4 = extraout_a1_48; - break; - case MENU_DISPLAY_CAST: - init_menu18_displaycast(); - uVar4 = extraout_a1_49; - break; - case MENU_SPECTRUM_EMU: - init_menu19_spectrum(); - uVar4 = extraout_a1_50; - } - } - } - switch(current_menu) { - case MENU_LEGAL_SCREEN: - interface_menu00_legalscreen(ZEXT48(¤t_menu),uVar4); - break; - case MENU_NINTENDO_LOGO: - interface_menu01_nintendo(ZEXT48(¤t_menu),uVar4); - break; - case MENU_RAREWARE_LOGO: - interface_menu02_rareware(); - break; - case MENU_EYE_INTRO: - interface_menu03_eyeintro(); - break; - case MENU_GOLDENEYE_LOGO: - interface_menu04_goldeneyelogo(ZEXT48(¤t_menu),uVar4); - break; - case MENU_FILE_SELECT: - interface_menu05_filesel(); - break; - case MENU_MODE_SELECT: - interface_menu06_modesel(); - break; - case MENU_MISSION_SELECT: - interface_menu07_missionsel(ZEXT48(¤t_menu),uVar4); - break; - case MENU_DIFFICULTY: - interface_menu08_difficulty(); - break; - case MENU_007_OPTIONS: - interface_menu09_007options(ZEXT48(¤t_menu),uVar4); - break; - case MENU_BRIEFING: - interface_menu0A_briefing(ZEXT48(¤t_menu),uVar4); - break; - case MENU_RUN_STAGE: - iVar3 = interface_menu0B_runstage(); - if (iVar3 == 0) { - if (gamemode == GAMEMODE_MULTI) { - set_menu_to_mode(MENU_MP_OPTIONS,1); - } - else { - if (selected_stage == LEVELID_CUBA) { - do_extended_cast_display(TRUE); - set_menu_to_mode(MENU_DISPLAY_CAST,1); + MENU MVar1; + + if (current_menu == MENU_SWITCH_SCREENS) { + if (spectrum_related_flag == FALSE) { + if ((is_emulating_spectrum != FALSE) && + (get_video_settings2_frameb() == cfb_16_a)) { + screen_size = SCREEN_SIZE_320x240; + is_emulating_spectrum = FALSE; + } } else { - set_menu_to_mode(MENU_MISSION_FAILED,1); + if (get_video_settings2_frameb() == cfb_16_b) { + screen_size = SCREEN_SIZE_440x330; + spectrum_related_flag = FALSE; + } } - } + } + + if (screen_size == SCREEN_SIZE_320x240) { + video_related_21((f32)flt_80051B48); + set_video2_text_clip_size(320,240); + set_video2_settings_offset_18_1A(320,240); + set_cur_player_screen_size(320,240); + set_video2_width_height(320,240); + set_cur_player_viewport_size(0,0); + set_video2_ulx_uly(0,0); } else { - set_menu_to_mode(MENU_LEGAL_SCREEN,1); + if (get_video_settings2_frameb() == cfb_16_b) { + set_video_settings2_frameb(ptr_menu_videobuffer); + } + video_related_21((f32)flt_80051B44); + set_video2_text_clip_size(440,330); + set_video2_settings_offset_18_1A(440,330); + set_cur_player_screen_size(440,330); + set_video2_width_height(440,330); + set_cur_player_viewport_size(0,0); + set_video2_ulx_uly(0,0); } - break; - case MENU_MISSION_FAILED: - interface_menu0C_missionfailed(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MISSION_COMPLETE: - interface_menu0D_missioncomplete(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_OPTIONS: - interface_menu0E_mpoptions(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_CHAR_SELECT: - interface_menu0F_mpcharsel(); - break; - case MENU_MP_HANDICAP: - interface_menu10_mphandicap(); - break; - case MENU_MP_CONTROL_STYLE: - interface_menu11_mpcontrols(); - break; - case MENU_MP_STAGE_SELECT: - interface_menu12_mpstage(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_SCENARIO_SELECT: - interface_menu13_mpscenario(ZEXT48(¤t_menu),uVar4); - break; - case MENU_MP_TEAMS: - interface_menu14_mpteams(ZEXT48(¤t_menu),uVar4); - break; - case MENU_CHEAT: - interface_menu15_cheat(ZEXT48(¤t_menu),uVar4); - break; - case MENU_NO_CONTROLLERS: - interface_menu16_nocontrollers(); - break; - case MENU_SWITCH_SCREENS: - interface_menu17_switchscreens(ZEXT48(¤t_menu),uVar4); - break; - case MENU_DISPLAY_CAST: - interface_menu18_displaycast(ZEXT48(¤t_menu),uVar4); - break; - case MENU_SPECTRUM_EMU: - interface_menu19_spectrum(ZEXT48(¤t_menu),uVar4); - } - return; + if (((-1 < menu_update) || (-1 < maybe_prev_menu)) && + (current_menu != MENU_SWITCH_SCREENS)) { + if (true) { + switch(current_menu) { + case MENU_LEGAL_SCREEN: + update_menu00_legalscreen(); + break; + case MENU_NINTENDO_LOGO: + update_menu01_nintendo(); + break; + case MENU_RAREWARE_LOGO: + update_menu02_rareware(); + break; + case MENU_EYE_INTRO: + update_menu_03_eyeintro(); + break; + case MENU_GOLDENEYE_LOGO: + update_menu04_goldeneyelogo(); + break; + case MENU_FILE_SELECT: + update_menu05_filesel(); + break; + case MENU_MODE_SELECT: + update_menu06_modesel(); + break; + case MENU_MISSION_SELECT: + update_menu07_missionsel(); + break; + case MENU_DIFFICULTY: + update_menu08_difficulty(); + break; + case MENU_007_OPTIONS: + update_menu09_007options(); + break; + case MENU_BRIEFING: + update_menu0A_briefing(); + break; + case MENU_MISSION_FAILED: + update_menu0C_missionfailed(); + break; + case MENU_MISSION_COMPLETE: + update_menu0D_missioncomplete(); + break; + case MENU_MP_OPTIONS: + update_menu0E_mpoptions(); + break; + case MENU_MP_CHAR_SELECT: + update_menu0F_mpcharsel(); + break; + case MENU_MP_HANDICAP: + update_menu10_mphandicap(); + break; + case MENU_MP_CONTROL_STYLE: + update_menu11_mpcontrols(); + break; + case MENU_MP_STAGE_SELECT: + update_menu12_mpstage(); + break; + case MENU_MP_SCENARIO_SELECT: + update_menu13_mpscenario(); + break; + case MENU_MP_TEAMS: + update_menu14_mpteams(); + break; + case MENU_CHEAT: + update_menu15_cheat(); + break; + case MENU_NO_CONTROLLERS: + update_menu16_nocontrollers(); + break; + case MENU_DISPLAY_CAST: + update_menu18_displaycast(); + break; + case MENU_SPECTRUM_EMU: + update_menu19_spectrum(); + } + } + if (-1 < menu_update) { + current_menu = MENU_SWITCH_SCREENS; + reset_menutimer(); + } + } + MVar1 = maybe_prev_menu; + if (true) { + current_menu = maybe_prev_menu; + maybe_prev_menu = ~MENU_LEGAL_SCREEN; + if (true) { + switch(MVar1) { + case MENU_LEGAL_SCREEN: + init_menu00_legalscreen(); + break; + case MENU_NINTENDO_LOGO: + init_menu01_nintendo(); + break; + case MENU_RAREWARE_LOGO: + init_menu02_rareware(); + break; + case MENU_EYE_INTRO: + init_menu03_eyeintro(); + break; + case MENU_GOLDENEYE_LOGO: + init_menu04_goldeneyelogo(); + break; + case MENU_FILE_SELECT: + init_menu05_filesel(); + break; + case MENU_MODE_SELECT: + init_menu06_modesel(); + break; + case MENU_MISSION_SELECT: + init_menu07_missionsel(); + break; + case MENU_DIFFICULTY: + init_menu08_difficulty(); + break; + case MENU_007_OPTIONS: + init_menu09_007options(); + break; + case MENU_BRIEFING: + init_menu0A_briefing(); + break; + case MENU_RUN_STAGE: + init_menu0B_runstage(); + break; + case MENU_MISSION_FAILED: + init_menu0C_missionfailed(); + break; + case MENU_MISSION_COMPLETE: + init_menu0D_missioncomplete(); + break; + case MENU_MP_OPTIONS: + init_menu0E_mpoptions(); + break; + case MENU_MP_CHAR_SELECT: + init_menu0f_mpcharsel(); + break; + case MENU_MP_HANDICAP: + init_menu10_mphandicap(); + break; + case MENU_MP_CONTROL_STYLE: + init_menu11_mpcontrol(); + break; + case MENU_MP_STAGE_SELECT: + init_menu12_mpstage(); + break; + case MENU_MP_SCENARIO_SELECT: + init_menu13_mpscenariosel(); + break; + case MENU_MP_TEAMS: + init_menu14_mpteamsel(); + break; + case MENU_CHEAT: + init_menu15_cheat(); + break; + case MENU_NO_CONTROLLERS: + init_menu16_nocontroller(); + break; + case MENU_DISPLAY_CAST: + init_menu18_displaycast(); + break; + case MENU_SPECTRUM_EMU: + init_menu19_spectrum(); + } + } + } + switch(current_menu) { + case MENU_LEGAL_SCREEN: + interface_menu00_legalscreen(); + break; + case MENU_NINTENDO_LOGO: + interface_menu01_nintendo(); + break; + case MENU_RAREWARE_LOGO: + interface_menu02_rareware(); + break; + case MENU_EYE_INTRO: + interface_menu03_eyeintro(); + break; + case MENU_GOLDENEYE_LOGO: + interface_menu04_goldeneyelogo(); + break; + case MENU_FILE_SELECT: + interface_menu05_filesel(); + break; + case MENU_MODE_SELECT: + interface_menu06_modesel(); + break; + case MENU_MISSION_SELECT: + interface_menu07_missionsel(); + break; + case MENU_DIFFICULTY: + interface_menu08_difficulty(); + break; + case MENU_007_OPTIONS: + interface_menu09_007options(); + break; + case MENU_BRIEFING: + interface_menu0A_briefing(); + break; + case MENU_RUN_STAGE: + if (interface_menu0B_runstage() == 0) { + if (gamemode == GAMEMODE_MULTI) { + set_menu_to_mode(MENU_MP_OPTIONS,1); + } + else { + if (selected_stage == LEVELID_CUBA) { + do_extended_cast_display(1); + set_menu_to_mode(MENU_DISPLAY_CAST,1); + } + else { + set_menu_to_mode(MENU_MISSION_FAILED,1); + } + } + } + else { + set_menu_to_mode(MENU_LEGAL_SCREEN,1); + } + break; + case MENU_MISSION_FAILED: + interface_menu0C_missionfailed(); + break; + case MENU_MISSION_COMPLETE: + interface_menu0D_missioncomplete(); + break; + case MENU_MP_OPTIONS: + interface_menu0E_mpoptions(); + break; + case MENU_MP_CHAR_SELECT: + interface_menu0F_mpcharsel(); + break; + case MENU_MP_HANDICAP: + interface_menu10_mphandicap(); + break; + case MENU_MP_CONTROL_STYLE: + interface_menu11_mpcontrols(); + break; + case MENU_MP_STAGE_SELECT: + interface_menu12_mpstage(); + break; + case MENU_MP_SCENARIO_SELECT: + interface_menu13_mpscenario(); + break; + case MENU_MP_TEAMS: + interface_menu14_mpteams(); + break; + case MENU_CHEAT: + interface_menu15_cheat(); + break; + case MENU_NO_CONTROLLERS: + interface_menu16_nocontrollers(); + break; + case MENU_SWITCH_SCREENS: + interface_menu17_switchscreens(); + break; + case MENU_DISPLAY_CAST: + interface_menu18_displaycast(); + break; + case MENU_SPECTRUM_EMU: + interface_menu19_spectrum(); + } + return; } #else GLOBAL_ASM( @@ -29566,7 +29094,7 @@ glabel menu_init /* 04F1F4 7F01A6C4 256BA800 */ addiu $t3, %lo(cfb_16_b) # addiu $t3, $t3, -0x5800 /* 04F1F8 7F01A6C8 144B0003 */ bne $v0, $t3, .L7F01A6D8 /* 04F1FC 7F01A6CC 3C048003 */ lui $a0, %hi(ptr_menu_videobuffer) -/* 04F200 7F01A6D0 0C000F0F */ jal set_video2buf_offset28 +/* 04F200 7F01A6D0 0C000F0F */ jal set_video2buf_frameb /* 04F204 7F01A6D4 8C84A954 */ lw $a0, %lo(ptr_menu_videobuffer)($a0) .L7F01A6D8: /* 04F208 7F01A6D8 3C018005 */ lui $at, %hi(D_80051B48) @@ -30186,118 +29714,85 @@ menu0B_runstage_interface: #ifdef NONMATCHING -longlong menu_jump_constructor_handler(void) +void menu_jump_constructor_handler(Gfx *DL) { - longlong in_v0; - int iVar1; - uint *puVar2; - undefined4 *_DL; - longlong in_a0; - - if (true) { - _DL = (undefined4 *)in_a0; switch(current_menu) { - case MENU_LEGAL_SCREEN: - constructor_menu00_legalscreen(_DL); - in_a0 = in_v0; - break; - case MENU_NINTENDO_LOGO: - _DL = constructor_menu01_nintendo(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_RAREWARE_LOGO: - _DL = constructor_menu02_rareware(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_EYE_INTRO: - constructor_menu03_eyeintro(in_a0); - in_a0 = in_v0; - break; - case MENU_GOLDENEYE_LOGO: - _DL = constructor_menu04_goldeneyelogo(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_FILE_SELECT: - puVar2 = constructor_menu05_filesel(_DL); - in_a0 = (longlong)(int)puVar2; - break; - case MENU_MODE_SELECT: - iVar1 = constructor_menu06_modesel(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_MISSION_SELECT: - iVar1 = constructor_menu07_missionsel(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_DIFFICULTY: - iVar1 = constructor_menu08_difficulty(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_007_OPTIONS: - iVar1 = constructor_menu09_007options(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_BRIEFING: - iVar1 = constructor_menu0A_briefing(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_MISSION_FAILED: - iVar1 = constructor_menu0C_missionfailed(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_MISSION_COMPLETE: - in_a0 = constructor_menu0D_missioncomplete(); - break; - case MENU_MP_OPTIONS: - iVar1 = constructor_menu0E_mpoptions(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_MP_CHAR_SELECT: - _DL = constructor_menu0F_mpcharsel(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_MP_HANDICAP: - _DL = constructor_menu10_mphandicap(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_MP_CONTROL_STYLE: - _DL = constructor_menu11_mpcontrol(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_MP_STAGE_SELECT: - iVar1 = constructor_menu12_mpstage(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_MP_SCENARIO_SELECT: - iVar1 = constructor_menu13_mpscenario(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_MP_TEAMS: - _DL = constructor_menu14_mpteams(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_CHEAT: - iVar1 = constructor_menu15_cheat(_DL); - in_a0 = (longlong)iVar1; - break; - case MENU_NO_CONTROLLERS: - puVar2 = constructor_menu16_nocontrollers(_DL); - in_a0 = (longlong)(int)puVar2; - break; - case MENU_SWITCH_SCREENS: - _DL = constructor_menu17_switchscreens(_DL); - in_a0 = (longlong)(int)_DL; - break; - case MENU_DISPLAY_CAST: - puVar2 = constructor_menu18_displaycast(_DL); - in_a0 = (longlong)(int)puVar2; - break; - case MENU_SPECTRUM_EMU: - _DL = constructor_menu19_spectrum(_DL); - in_a0 = (longlong)(int)_DL; + case MENU_LEGAL_SCREEN: + constructor_menu00_legalscreen(DL); + break; + case MENU_NINTENDO_LOGO: + constructor_menu01_nintendo(DL); + break; + case MENU_RAREWARE_LOGO: + constructor_menu02_rareware(DL); + break; + case MENU_EYE_INTRO: + constructor_menu03_eye(DL); + break; + case MENU_GOLDENEYE_LOGO: + constructor_menu04_goldeneyelogo(DL); + break; + case MENU_FILE_SELECT: + constructor_menu05_fileselect(DL); + break; + case MENU_MODE_SELECT: + constructor_menu06_modesel(DL); + break; + case MENU_MISSION_SELECT: + constructor_menu07_missionsel(DL); + break; + case MENU_DIFFICULTY: + constructor_menu08_difficulty(DL); + break; + case MENU_007_OPTIONS: + constructor_menu09_007options(DL); + break; + case MENU_BRIEFING: + constructor_menu0A_briefing(DL); + break; + case MENU_MISSION_FAILED: + constructor_menu0C_missionfailed(DL); + break; + case MENU_MISSION_COMPLETE: + constructor_menu0D_missioncomplete(DL); + break; + case MENU_MP_OPTIONS: + constructor_menu0E_mpoptions(DL); + break; + case MENU_MP_CHAR_SELECT: + constructor_menu0F_mpcharsel(DL); + break; + case MENU_MP_HANDICAP: + constructor_menu10_mphandicap(DL); + break; + case MENU_MP_CONTROL_STYLE: + constructor_menu11_mpcontrol(DL); + break; + case MENU_MP_STAGE_SELECT: + constructor_menu12_mpstage(DL); + break; + case MENU_MP_SCENARIO_SELECT: + constructor_menu13_mpscenario(DL); + break; + case MENU_MP_TEAMS: + constructor_menu14_mpteams(DL); + break; + case MENU_CHEAT: + constructor_menu15_cheat(DL); + break; + case MENU_NO_CONTROLLERS: + constructor_menu16_nocontrollers(DL); + break; + case MENU_SWITCH_SCREENS: + constructor_menu17_switchscreens(DL); + break; + case MENU_DISPLAY_CAST: + constructor_menu18_displaycast(DL); + break; + case MENU_SPECTRUM_EMU: + constructor_menu19_spectrum(DL); } - } - return in_a0; + return; } #else GLOBAL_ASM( diff --git a/src/game/mainmenu.h b/src/game/mainmenu.h index a65da8f..7b2a8aa 100644 --- a/src/game/mainmenu.h +++ b/src/game/mainmenu.h @@ -37,13 +37,13 @@ struct mp_stage_playercount { }; struct mp_stage_setup { - short folder_text_preset; - short select_screen_text_preset; - int photo; - int stage_id; - int unlock_after; - int min_player; - int max_player; + s16 folder_text_preset; + s16 select_screen_text_preset; + s32 photo; + s32 stage_id; + s32 unlock_after; + s32 min_player; + s32 max_player; }; struct MP_selectable_chars { @@ -71,8 +71,8 @@ struct MP_controller_configuration_menu { struct MP_sight_aim_settings { char anonymous_0; char field_1; - char field_2; - char field_3; + char sight; + char autoaim; }; struct intro_char { diff --git a/src/game/mp_music.c b/src/game/mp_music.c index f2bc393..8c07481 100644 --- a/src/game/mp_music.c +++ b/src/game/mp_music.c @@ -7,29 +7,29 @@ s32 dword_CODE_bss_8008C600; //CODE.bss:8008C604 s32 dword_CODE_bss_8008C604; //CODE.bss:8008C608 -s32 dword_CODE_bss_8008C608; +s32 music_slot_active_0; //CODE.bss:8008C60C -s32 dword_CODE_bss_8008C60C; +s32 music_slot_active_1; //CODE.bss:8008C610 -s32 dword_CODE_bss_8008C610; +s32 music_slot_active_2; //CODE.bss:8008C614 -s32 dword_CODE_bss_8008C614; +s32 music_slot_active_3; //CODE.bss:8008C618 -s32 dword_CODE_bss_8008C618; +s32 music_slot_minutes_0; //CODE.bss:8008C61C -s32 dword_CODE_bss_8008C61C; +s32 music_slot_minutes_1; //CODE.bss:8008C620 -s32 dword_CODE_bss_8008C620; +s32 music_slot_minutes_2; //CODE.bss:8008C624 -s32 dword_CODE_bss_8008C624; +s32 music_slot_minutes_3; //CODE.bss:8008C628 -s32 dword_CODE_bss_8008C628; +s32 music_slot_seconds_0; //CODE.bss:8008C62C -s32 dword_CODE_bss_8008C62C; +s32 music_slot_seconds_1; //CODE.bss:8008C630 -s32 dword_CODE_bss_8008C630; +s32 music_slot_seconds_2; //CODE.bss:8008C634 -s32 dword_CODE_bss_8008C634; +s32 music_slot_seconds_3; // data @@ -41,7 +41,7 @@ s32 mission_state = 0; void sub_GAME_7F0C0C10(void) { - sub_GAME_7F0A9180(); + call_sfx_c_700091C8(); } s32 get_mission_state(void) { @@ -178,7 +178,7 @@ glabel set_missionstate /* 0F57D4 7F0C0CA4 3C018002 */ lui $at, %hi(music1_playing) /* 0F57D8 7F0C0CA8 3C048009 */ lui $a0, %hi(dword_CODE_bss_8008C600) /* 0F57DC 7F0C0CAC AC20434C */ sw $zero, %lo(music1_playing)($at) -/* 0F57E0 7F0C0CB0 0FC349C8 */ jal sub_GAME_7F0D2720 +/* 0F57E0 7F0C0CB0 0FC349C8 */ jal getmusictrack_or_randomtrack /* 0F57E4 7F0C0CB4 8C84C600 */ lw $a0, %lo(dword_CODE_bss_8008C600)($a0) /* 0F57E8 7F0C0CB8 0C001B9F */ jal musicTrack1Play /* 0F57EC 7F0C0CBC 00402025 */ move $a0, $v0 @@ -192,7 +192,7 @@ glabel set_missionstate /* 0F5808 7F0C0CD8 3C018002 */ lui $at, %hi(music1_playing) /* 0F580C 7F0C0CDC 3C048009 */ lui $a0, %hi(dword_CODE_bss_8008C600) /* 0F5810 7F0C0CE0 AC20434C */ sw $zero, %lo(music1_playing)($at) -/* 0F5814 7F0C0CE4 0FC349C8 */ jal sub_GAME_7F0D2720 +/* 0F5814 7F0C0CE4 0FC349C8 */ jal getmusictrack_or_randomtrack /* 0F5818 7F0C0CE8 8C84C600 */ lw $a0, %lo(dword_CODE_bss_8008C600)($a0) /* 0F581C 7F0C0CEC 0C001B9F */ jal musicTrack1Play /* 0F5820 7F0C0CF0 00402025 */ move $a0, $v0 @@ -680,7 +680,7 @@ glabel set_missionstate /* 0F64C4 7F0C1954 3C018002 */ lui $at, %hi(music1_playing) # $at, 0x8002 /* 0F64C8 7F0C1958 3C048009 */ lui $a0, %hi(dword_CODE_bss_8008C600) # $a0, 0x8009 /* 0F64CC 7F0C195C AC20438C */ sw $zero, %lo(music1_playing)($at) -/* 0F64D0 7F0C1960 0FC34D00 */ jal sub_GAME_7F0D2720 +/* 0F64D0 7F0C1960 0FC34D00 */ jal getmusictrack_or_randomtrack /* 0F64D4 7F0C1964 8C84C670 */ lw $a0, %lo(dword_CODE_bss_8008C600)($a0) /* 0F64D8 7F0C1968 0C001BA3 */ jal musicTrack1Play /* 0F64DC 7F0C196C 00402025 */ move $a0, $v0 @@ -694,7 +694,7 @@ glabel set_missionstate /* 0F64F8 7F0C1988 3C018002 */ lui $at, %hi(music1_playing) # $at, 0x8002 /* 0F64FC 7F0C198C 3C048009 */ lui $a0, %hi(dword_CODE_bss_8008C600) # $a0, 0x8009 /* 0F6500 7F0C1990 AC20438C */ sw $zero, %lo(music1_playing)($at) -/* 0F6504 7F0C1994 0FC34D00 */ jal sub_GAME_7F0D2720 +/* 0F6504 7F0C1994 0FC34D00 */ jal getmusictrack_or_randomtrack /* 0F6508 7F0C1998 8C84C670 */ lw $a0, %lo(dword_CODE_bss_8008C600)($a0) /* 0F650C 7F0C199C 0C001BA3 */ jal musicTrack1Play /* 0F6510 7F0C19A0 00402025 */ move $a0, $v0 @@ -1057,9 +1057,23 @@ glabel set_missionstate -#ifdef NONMATCHING -void sub_GAME_7F0C11FC(void) { +#ifdef NONMATCHING// +void sub_GAME_7F0C11FC(s16 param_1) +{ + musicTrack1Stop(); + musicTrack2Stop(); + musicTrack3Stop(); + mission_state = 0; + dword_CODE_bss_8008C600 = (int)param_1; + if (sub_GAME_7F0D2848(param_1) < 0) + { + set_missionstate(1); + } + else + { + set_missionstate(4); + } } #else GLOBAL_ASM( @@ -1101,52 +1115,60 @@ glabel sub_GAME_7F0C11FC -void sub_GAME_7F0C1268(void) { +void sub_GAME_7F0C1268(void) +{ set_missionstate(0); } -void sub_GAME_7F0C1288(void) { - if (sub_GAME_7F0D2848(dword_CODE_bss_8008C600) < 0) { +void sub_GAME_7F0C1288(void) +{ + if (sub_GAME_7F0D2848(dword_CODE_bss_8008C600) < 0) + { set_missionstate(2); } - else { + else + { set_missionstate(5); } - return; } -void sub_GAME_7F0C12CC(void) { - if (sub_GAME_7F0D2848(dword_CODE_bss_8008C600) < 0) { +void sub_GAME_7F0C12CC(void) +{ + if (sub_GAME_7F0D2848(dword_CODE_bss_8008C600) < 0) + { set_missionstate(1); } - else { + else + { set_missionstate(4); } - return; } -void sub_GAME_7F0C1310(void) { +void sub_GAME_7F0C1310(void) +{ dword_CODE_bss_8008C604 = mission_state; set_missionstate(3); } -void sub_GAME_7F0C1340(void) { +void sub_GAME_7F0C1340(void) +{ set_missionstate(dword_CODE_bss_8008C604); } -void sub_GAME_7F0C1364(void) { - dword_CODE_bss_8008C608 = 0; - dword_CODE_bss_8008C618 = 0; - dword_CODE_bss_8008C628 = 0; - dword_CODE_bss_8008C60C = 0; - dword_CODE_bss_8008C61C = 0; - dword_CODE_bss_8008C62C = 0; - dword_CODE_bss_8008C610 = 0; - dword_CODE_bss_8008C620 = 0; - dword_CODE_bss_8008C630 = 0; - dword_CODE_bss_8008C614 = 0; - dword_CODE_bss_8008C624 = 0; - dword_CODE_bss_8008C634 = 0; +void sub_GAME_7F0C1364(void) +{ + music_slot_active_0 = 0; + music_slot_minutes_0 = 0; + music_slot_seconds_0 = 0; + music_slot_active_1 = 0; + music_slot_minutes_1 = 0; + music_slot_seconds_1 = 0; + music_slot_active_2 = 0; + music_slot_minutes_2 = 0; + music_slot_seconds_2 = 0; + music_slot_active_3 = 0; + music_slot_minutes_3 = 0; + music_slot_seconds_3 = 0; } @@ -1163,16 +1185,16 @@ GLOBAL_ASM( .text glabel reset_all_music_slots /* 0F5EF8 7F0C13C8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0F5EFC 7F0C13CC 3C078009 */ lui $a3, %hi(dword_CODE_bss_8008C608) -/* 0F5F00 7F0C13D0 3C048009 */ lui $a0, %hi(dword_CODE_bss_8008C618) +/* 0F5EFC 7F0C13CC 3C078009 */ lui $a3, %hi(music_slot_active_0) +/* 0F5F00 7F0C13D0 3C048009 */ lui $a0, %hi(music_slot_minutes_0) /* 0F5F04 7F0C13D4 3C068005 */ lui $a2, %hi(clock_timer) -/* 0F5F08 7F0C13D8 3C098009 */ lui $t1, %hi(dword_CODE_bss_8008C628) +/* 0F5F08 7F0C13D8 3C098009 */ lui $t1, %hi(music_slot_seconds_0) /* 0F5F0C 7F0C13DC AFBF0014 */ sw $ra, 0x14($sp) /* 0F5F10 7F0C13E0 00005025 */ move $t2, $zero -/* 0F5F14 7F0C13E4 2529C628 */ addiu $t1, %lo(dword_CODE_bss_8008C628) # addiu $t1, $t1, -0x39d8 +/* 0F5F14 7F0C13E4 2529C628 */ addiu $t1, %lo(music_slot_seconds_0) # addiu $t1, $t1, -0x39d8 /* 0F5F18 7F0C13E8 8CC68374 */ lw $a2, %lo(clock_timer)($a2) -/* 0F5F1C 7F0C13EC 2484C618 */ addiu $a0, %lo(dword_CODE_bss_8008C618) # addiu $a0, $a0, -0x39e8 -/* 0F5F20 7F0C13F0 24E7C608 */ addiu $a3, %lo(dword_CODE_bss_8008C608) # addiu $a3, $a3, -0x39f8 +/* 0F5F1C 7F0C13EC 2484C618 */ addiu $a0, %lo(music_slot_minutes_0) # addiu $a0, $a0, -0x39e8 +/* 0F5F20 7F0C13F0 24E7C608 */ addiu $a3, %lo(music_slot_active_0) # addiu $a3, $a3, -0x39f8 /* 0F5F24 7F0C13F4 00004025 */ move $t0, $zero .L7F0C13F8: /* 0F5F28 7F0C13F8 8CE50000 */ lw $a1, ($a3) @@ -1183,8 +1205,8 @@ glabel reset_all_music_slots /* 0F5F3C 7F0C140C 24840004 */ addiu $a0, $a0, 4 /* 0F5F40 7F0C1410 8C820000 */ lw $v0, ($a0) .L7F0C1414: -/* 0F5F44 7F0C1414 3C0F8009 */ lui $t7, %hi(dword_CODE_bss_8008C628) -/* 0F5F48 7F0C1418 25EFC628 */ addiu $t7, %lo(dword_CODE_bss_8008C628) # addiu $t7, $t7, -0x39d8 +/* 0F5F44 7F0C1414 3C0F8009 */ lui $t7, %hi(music_slot_seconds_0) +/* 0F5F48 7F0C1418 25EFC628 */ addiu $t7, %lo(music_slot_seconds_0) # addiu $t7, $t7, -0x39d8 /* 0F5F4C 7F0C141C 0046082A */ slt $at, $v0, $a2 /* 0F5F50 7F0C1420 14200004 */ bnez $at, .L7F0C1434 /* 0F5F54 7F0C1424 010F1821 */ addu $v1, $t0, $t7 @@ -1259,15 +1281,20 @@ glabel reset_all_music_slots #ifdef NONMATCHING -void set_musicslot_time(void) { - +void set_musicslot_time(int slot,int min,int sec) +{ + if (music_slot_active[slot] == 0) { + music_slot_active[slot] = 1; + music_slot_minutes[slot] = min * 0x3c; + music_slot_seconds[slot] = sec * 0x3c; + } } #else GLOBAL_ASM( .text glabel set_musicslot_time -/* 0F602C 7F0C14FC 3C0E8009 */ lui $t6, %hi(dword_CODE_bss_8008C608) -/* 0F6030 7F0C1500 25CEC608 */ addiu $t6, %lo(dword_CODE_bss_8008C608) # addiu $t6, $t6, -0x39f8 +/* 0F602C 7F0C14FC 3C0E8009 */ lui $t6, %hi(music_slot_active_0) +/* 0F6030 7F0C1500 25CEC608 */ addiu $t6, %lo(music_slot_active_0) # addiu $t6, $t6, -0x39f8 /* 0F6034 7F0C1504 00041080 */ sll $v0, $a0, 2 /* 0F6038 7F0C1508 004E1821 */ addu $v1, $v0, $t6 /* 0F603C 7F0C150C 8C6F0000 */ lw $t7, ($v1) @@ -1276,16 +1303,16 @@ glabel set_musicslot_time /* 0F6048 7F0C1518 00000000 */ nop /* 0F604C 7F0C151C 00A40019 */ multu $a1, $a0 /* 0F6050 7F0C1520 24180001 */ li $t8, 1 -/* 0F6054 7F0C1524 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C618) +/* 0F6054 7F0C1524 3C018009 */ lui $at, %hi(music_slot_minutes_0) /* 0F6058 7F0C1528 AC780000 */ sw $t8, ($v1) /* 0F605C 7F0C152C 00220821 */ addu $at, $at, $v0 /* 0F6060 7F0C1530 0000C812 */ mflo $t9 -/* 0F6064 7F0C1534 AC39C618 */ sw $t9, %lo(dword_CODE_bss_8008C618)($at) -/* 0F6068 7F0C1538 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C628) +/* 0F6064 7F0C1534 AC39C618 */ sw $t9, %lo(music_slot_minutes_0)($at) +/* 0F6068 7F0C1538 3C018009 */ lui $at, %hi(music_slot_seconds_0) /* 0F606C 7F0C153C 00C40019 */ multu $a2, $a0 /* 0F6070 7F0C1540 00220821 */ addu $at, $at, $v0 /* 0F6074 7F0C1544 00004012 */ mflo $t0 -/* 0F6078 7F0C1548 AC28C628 */ sw $t0, %lo(dword_CODE_bss_8008C628)($at) +/* 0F6078 7F0C1548 AC28C628 */ sw $t0, %lo(music_slot_seconds_0)($at) /* 0F607C 7F0C154C 00000000 */ nop .L7F0C1550: /* 0F6080 7F0C1550 03E00008 */ jr $ra @@ -1301,21 +1328,21 @@ glabel set_musicslot_time void reset_music_in_slot(int lParm1) { if (-1 < lParm1) { - (&dword_CODE_bss_8008C608)[(int)lParm1] = 0; + (&music_slot_active_0)[(int)lParm1] = 0; return; } - dword_CODE_bss_8008C608 = 0; - dword_CODE_bss_8008C60C = 0; - dword_CODE_bss_8008C610 = 0; - dword_CODE_bss_8008C614 = 0; - dword_CODE_bss_8008C618 = 0; - dword_CODE_bss_8008C61C = 0; - dword_CODE_bss_8008C620 = 0; - dword_CODE_bss_8008C624 = 0; - dword_CODE_bss_8008C628 = 0; - dword_CODE_bss_8008C62C = 0; - dword_CODE_bss_8008C630 = 0; - dword_CODE_bss_8008C634 = 0; + music_slot_active_0 = 0; + music_slot_active_1 = 0; + music_slot_active_2 = 0; + music_slot_active_3 = 0; + music_slot_minutes_0 = 0; + music_slot_minutes_1 = 0; + music_slot_minutes_2 = 0; + music_slot_minutes_3 = 0; + music_slot_seconds_0 = 0; + music_slot_seconds_1 = 0; + music_slot_seconds_2 = 0; + music_slot_seconds_3 = 0; return; } #else @@ -1323,37 +1350,37 @@ GLOBAL_ASM( .text glabel reset_music_in_slot /* 0F6088 7F0C1558 04800006 */ bltz $a0, .L7F0C1574 -/* 0F608C 7F0C155C 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C608) +/* 0F608C 7F0C155C 3C018009 */ lui $at, %hi(music_slot_active_0) /* 0F6090 7F0C1560 00047080 */ sll $t6, $a0, 2 -/* 0F6094 7F0C1564 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C608) +/* 0F6094 7F0C1564 3C018009 */ lui $at, %hi(music_slot_active_0) /* 0F6098 7F0C1568 002E0821 */ addu $at, $at, $t6 /* 0F609C 7F0C156C 03E00008 */ jr $ra -/* 0F60A0 7F0C1570 AC20C608 */ sw $zero, %lo(dword_CODE_bss_8008C608)($at) +/* 0F60A0 7F0C1570 AC20C608 */ sw $zero, %lo(music_slot_active_0)($at) .L7F0C1574: -/* 0F60A4 7F0C1574 AC20C608 */ sw $zero, %lo(dword_CODE_bss_8008C608)($at) -/* 0F60A8 7F0C1578 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C618) -/* 0F60AC 7F0C157C AC20C618 */ sw $zero, %lo(dword_CODE_bss_8008C618)($at) -/* 0F60B0 7F0C1580 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C628) -/* 0F60B4 7F0C1584 AC20C628 */ sw $zero, %lo(dword_CODE_bss_8008C628)($at) -/* 0F60B8 7F0C1588 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C60C) -/* 0F60BC 7F0C158C AC20C60C */ sw $zero, %lo(dword_CODE_bss_8008C60C)($at) -/* 0F60C0 7F0C1590 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C61C) -/* 0F60C4 7F0C1594 AC20C61C */ sw $zero, %lo(dword_CODE_bss_8008C61C)($at) -/* 0F60C8 7F0C1598 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C62C) -/* 0F60CC 7F0C159C AC20C62C */ sw $zero, %lo(dword_CODE_bss_8008C62C)($at) -/* 0F60D0 7F0C15A0 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C610) -/* 0F60D4 7F0C15A4 AC20C610 */ sw $zero, %lo(dword_CODE_bss_8008C610)($at) -/* 0F60D8 7F0C15A8 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C620) -/* 0F60DC 7F0C15AC AC20C620 */ sw $zero, %lo(dword_CODE_bss_8008C620)($at) -/* 0F60E0 7F0C15B0 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C630) -/* 0F60E4 7F0C15B4 AC20C630 */ sw $zero, %lo(dword_CODE_bss_8008C630)($at) -/* 0F60E8 7F0C15B8 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C614) -/* 0F60EC 7F0C15BC AC20C614 */ sw $zero, %lo(dword_CODE_bss_8008C614)($at) -/* 0F60F0 7F0C15C0 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C624) -/* 0F60F4 7F0C15C4 AC20C624 */ sw $zero, %lo(dword_CODE_bss_8008C624)($at) -/* 0F60F8 7F0C15C8 3C018009 */ lui $at, %hi(dword_CODE_bss_8008C634) -/* 0F60FC 7F0C15CC AC20C634 */ sw $zero, %lo(dword_CODE_bss_8008C634)($at) +/* 0F60A4 7F0C1574 AC20C608 */ sw $zero, %lo(music_slot_active_0)($at) +/* 0F60A8 7F0C1578 3C018009 */ lui $at, %hi(music_slot_minutes_0) +/* 0F60AC 7F0C157C AC20C618 */ sw $zero, %lo(music_slot_minutes_0)($at) +/* 0F60B0 7F0C1580 3C018009 */ lui $at, %hi(music_slot_seconds_0) +/* 0F60B4 7F0C1584 AC20C628 */ sw $zero, %lo(music_slot_seconds_0)($at) +/* 0F60B8 7F0C1588 3C018009 */ lui $at, %hi(music_slot_active_1) +/* 0F60BC 7F0C158C AC20C60C */ sw $zero, %lo(music_slot_active_1)($at) +/* 0F60C0 7F0C1590 3C018009 */ lui $at, %hi(music_slot_minutes_1) +/* 0F60C4 7F0C1594 AC20C61C */ sw $zero, %lo(music_slot_minutes_1)($at) +/* 0F60C8 7F0C1598 3C018009 */ lui $at, %hi(music_slot_seconds_1) +/* 0F60CC 7F0C159C AC20C62C */ sw $zero, %lo(music_slot_seconds_1)($at) +/* 0F60D0 7F0C15A0 3C018009 */ lui $at, %hi(music_slot_active_2) +/* 0F60D4 7F0C15A4 AC20C610 */ sw $zero, %lo(music_slot_active_2)($at) +/* 0F60D8 7F0C15A8 3C018009 */ lui $at, %hi(music_slot_minutes_2) +/* 0F60DC 7F0C15AC AC20C620 */ sw $zero, %lo(music_slot_minutes_2)($at) +/* 0F60E0 7F0C15B0 3C018009 */ lui $at, %hi(music_slot_seconds_2) +/* 0F60E4 7F0C15B4 AC20C630 */ sw $zero, %lo(music_slot_seconds_2)($at) +/* 0F60E8 7F0C15B8 3C018009 */ lui $at, %hi(music_slot_active_3) +/* 0F60EC 7F0C15BC AC20C614 */ sw $zero, %lo(music_slot_active_3)($at) +/* 0F60F0 7F0C15C0 3C018009 */ lui $at, %hi(music_slot_minutes_3) +/* 0F60F4 7F0C15C4 AC20C624 */ sw $zero, %lo(music_slot_minutes_3)($at) +/* 0F60F8 7F0C15C8 3C018009 */ lui $at, %hi(music_slot_seconds_3) +/* 0F60FC 7F0C15CC AC20C634 */ sw $zero, %lo(music_slot_seconds_3)($at) /* 0F6100 7F0C15D0 03E00008 */ jr $ra /* 0F6104 7F0C15D4 00000000 */ nop ) diff --git a/src/game/mp_watch.c b/src/game/mp_watch.c index 9a0826b..153e256 100644 --- a/src/game/mp_watch.c +++ b/src/game/mp_watch.c @@ -342,11 +342,13 @@ glabel check_if_player_is_pressing_anything_left -void play_watch_sfx_beep(void) { +void play_watch_sfx_beep(void) +{ play_sfx_a1(ptr_sfx_buf, 0x9f, 0); } -void unpause_game(void) { +void unpause_game(void) +{ stop_play_flag = 0; is_gameover_flag = 0; is_paused = 0; @@ -1561,8 +1563,8 @@ glabel sub_GAME_7F0C2E80 /* 0F7B08 7F0C2FD8 2C490001 */ sltiu $t1, $v0, 1 /* 0F7B0C 7F0C2FDC AC890000 */ sw $t1, ($a0) .L7F0C2FE0: -/* 0F7B10 7F0C2FE0 3C028008 */ lui $v0, %hi(cur_player_stat_ptr) -/* 0F7B14 7F0C2FE4 8C42A0B4 */ lw $v0, %lo(cur_player_stat_ptr)($v0) +/* 0F7B10 7F0C2FE0 3C028008 */ lui $v0, %hi(pPlayersPerm) +/* 0F7B14 7F0C2FE4 8C42A0B4 */ lw $v0, %lo(pPlayersPerm)($v0) /* 0F7B18 7F0C2FE8 8CEA0000 */ lw $t2, ($a3) /* 0F7B1C 7F0C2FEC 8C4B0054 */ lw $t3, 0x54($v0) /* 0F7B20 7F0C2FF0 8D4329F8 */ lw $v1, 0x29f8($t2) @@ -1576,8 +1578,8 @@ glabel sub_GAME_7F0C2E80 /* 0F7B3C 7F0C300C 3C078008 */ lui $a3, %hi(pPlayer) /* 0F7B40 7F0C3010 24E7A0B0 */ addiu $a3, %lo(pPlayer) # addiu $a3, $a3, -0x5f50 /* 0F7B44 7F0C3014 8CE30000 */ lw $v1, ($a3) -/* 0F7B48 7F0C3018 3C0C8008 */ lui $t4, %hi(cur_player_stat_ptr) -/* 0F7B4C 7F0C301C 8D8CA0B4 */ lw $t4, %lo(cur_player_stat_ptr)($t4) +/* 0F7B48 7F0C3018 3C0C8008 */ lui $t4, %hi(pPlayersPerm) +/* 0F7B4C 7F0C301C 8D8CA0B4 */ lw $t4, %lo(pPlayersPerm)($t4) /* 0F7B50 7F0C3020 8C6E29F4 */ lw $t6, 0x29f4($v1) /* 0F7B54 7F0C3024 8FA80030 */ lw $t0, 0x30($sp) /* 0F7B58 7F0C3028 8D8D004C */ lw $t5, 0x4c($t4) @@ -1590,8 +1592,8 @@ glabel sub_GAME_7F0C2E80 /* 0F7B74 7F0C3044 3C078008 */ lui $a3, %hi(pPlayer) /* 0F7B78 7F0C3048 24E7A0B0 */ addiu $a3, %lo(pPlayer) # addiu $a3, $a3, -0x5f50 /* 0F7B7C 7F0C304C 8CF80000 */ lw $t8, ($a3) -/* 0F7B80 7F0C3050 3C0A8008 */ lui $t2, %hi(cur_player_stat_ptr) -/* 0F7B84 7F0C3054 8D4AA0B4 */ lw $t2, %lo(cur_player_stat_ptr)($t2) +/* 0F7B80 7F0C3050 3C0A8008 */ lui $t2, %hi(pPlayersPerm) +/* 0F7B84 7F0C3054 8D4AA0B4 */ lw $t2, %lo(pPlayersPerm)($t2) /* 0F7B88 7F0C3058 8F1929F4 */ lw $t9, 0x29f4($t8) /* 0F7B8C 7F0C305C 8FA80030 */ lw $t0, 0x30($sp) /* 0F7B90 7F0C3060 00594823 */ subu $t1, $v0, $t9 @@ -7219,14 +7221,13 @@ def_7F0C40C0: #ifdef NONMATCHING -s32 sub_GAME_7F0C6048(void) { - // Node 0 +s32 sub_GAME_7F0C6048(void) +{ if (is_gameover_flag != 0) { - // Node 1 return 0; } - return (pPlayer->unk29C4 | (0 < pPlayer->unk2A00)); + return (pPlayer->mpmenuon | (0 < pPlayer->healthdisplaytime)); } #else diff --git a/src/game/mp_weapon.c b/src/game/mp_weapon.c index 197c646..6f7b190 100644 --- a/src/game/mp_weapon.c +++ b/src/game/mp_weapon.c @@ -3,7 +3,7 @@ // data //D:80048670 -struct struct_2 type_0_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_slaps[] = { {0, 0xCD, 1.0, 1, 0, 1}, {0, 0xCD, 1.0, 1, 0, 1}, {0, 0xCD, 1.0, 1, 0, 1}, @@ -15,7 +15,7 @@ struct struct_2 type_0_stru_800490F0[] = { }; //D:80048730 -struct struct_2 type_1_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_pistols[] = { {6, 0xCD, 1.0, 1, 0x32, 1}, {6, 0xCD, 1.0, 1, 0x32, 1}, {6, 0xCD, 1.0, 1, 0x32, 1}, @@ -27,7 +27,7 @@ struct struct_2 type_1_stru_800490F0[] = { }; //D:800487F0 -struct struct_2 type_D_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_knife[] = { {3, 0xD1, 1.0, 0xA, 0xA, 0}, {3, 0xD1, 1.0, 0xA, 0xA, 0}, {3, 0xD1, 1.0, 0xA, 0xA, 0}, @@ -39,7 +39,7 @@ struct struct_2 type_D_stru_800490F0[] = { }; //D:800488B0 -struct struct_2 type_2_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_auto[] = { {5, 0xCC, 1.0, 1, 0x32, 1}, {5, 0xCC, 1.0, 1, 0x32, 1}, {6, 0xCD, 1.0, 1, 0x32, 1}, @@ -51,7 +51,7 @@ struct struct_2 type_2_stru_800490F0[] = { }; //D:80048970 -struct struct_2 type_3_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_power[] = { {6, 0xCD, 3.0, 1, 0x32, 1}, {6, 0xCD, 3.0, 1, 0x32, 1}, {0x12, 0xBE, 1.0, 0xC, 0x32, 1}, @@ -63,7 +63,7 @@ struct struct_2 type_3_stru_800490F0[] = { }; //D:80048A30 -struct struct_2 type_4_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_sniper[] = { {6, 0xCD, 3.0, 1, 0x32, 1}, {6, 0xCD, 3.0, 1, 0x32, 1}, {0x12, 0xBE, 1.0, 0xC, 0x32, 1}, @@ -75,7 +75,7 @@ struct struct_2 type_4_stru_800490F0[] = { }; //D:80048AF0 -struct struct_2 type_5_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_grenade[] = { {6, 0xCD, 3.0, 1, 0x32, 1}, {6, 0xCD, 3.0, 1, 0x32, 1}, {7, 0xC1, 1.5, 1, 0x64, 1}, @@ -88,7 +88,7 @@ struct struct_2 type_5_stru_800490F0[] = { //D:80048BB0 #ifdef VERSION_US -struct struct_2 type_6_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_remote_m[] = { {4, 0xBF, 3.0, 1, 0x32, 1}, {4, 0xBF, 3.0, 1, 0x32, 1}, {9, 0xC3, 1.5, 1, 0x64, 1}, @@ -99,8 +99,21 @@ struct struct_2 type_6_stru_800490F0[] = { {0x1D, 0xC7, 1.5, 7, 5, 0} }; #endif +#ifdef VERSION_EU +//!FIXME temp copy of us data +struct s_mp_weapon_set mp_weapon_set_remote_m[] = { + {4, 0xBF, 3.0, 1, 0x32, 1}, + {4, 0xBF, 3.0, 1, 0x32, 1}, + {9, 0xC3, 1.5, 1, 0x64, 1}, + {9, 0xC3, 1.5, 1, 0x64, 1}, + {0xD, 0xBC, 1.5, 3, 0x64, 1}, + {0xD, 0xBC, 1.5, 3, 0x64, 1}, + {0x1D, 0xC7, 1.5, 7, 5, 0}, + {0x1D, 0xC7, 1.5, 7, 5, 0} +}; +#endif #ifdef VERSION_JP -struct struct_2 type_6_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_remote_m[] = { {4, 0xBF, 3.0, 1, 0x32, 1}, {4, 0xBF, 3.0, 1, 0x32, 1}, {9, 0xC3, 1.5, 1, 0x64, 1}, @@ -113,7 +126,7 @@ struct struct_2 type_6_stru_800490F0[] = { #endif //D:80048C70 -struct struct_2 type_7_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_glaunch[] = { {6, 0xCD, 3.0, 1, 0x32, 1}, {6, 0xCD, 3.0, 1, 0x32, 1}, {7, 0xC1, 1.5, 1, 0x64, 1}, @@ -126,7 +139,7 @@ struct struct_2 type_7_stru_800490F0[] = { //D:80048D30 #ifdef VERSION_US -struct struct_2 type_8_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_timed_m[] = { {4, 0xBF, 3.0, 1, 0x32, 1}, {4, 0xBF, 3.0, 1, 0x32, 1}, {9, 0xC3, 1.5, 1, 0x64, 1}, @@ -137,8 +150,21 @@ struct struct_2 type_8_stru_800490F0[] = { {0x1B, 0xC9, 1.5, 9, 5, 0} }; #endif +#ifdef VERSION_EU +//!FIXME temp copy of us data +struct s_mp_weapon_set mp_weapon_set_timed_m[] = { + {4, 0xBF, 3.0, 1, 0x32, 1}, + {4, 0xBF, 3.0, 1, 0x32, 1}, + {9, 0xC3, 1.5, 1, 0x64, 1}, + {9, 0xC3, 1.5, 1, 0x64, 1}, + {0xD, 0xBC, 1.5, 3, 0x64, 1}, + {0xD, 0xBC, 1.5, 3, 0x64, 1}, + {0x1B, 0xC9, 1.5, 9, 5, 0}, + {0x1B, 0xC9, 1.5, 9, 5, 0} +}; +#endif #ifdef VERSION_JP -struct struct_2 type_8_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_timed_m[] = { {4, 0xBF, 3.0, 1, 0x32, 1}, {4, 0xBF, 3.0, 1, 0x32, 1}, {9, 0xC3, 1.5, 1, 0x64, 1}, @@ -151,7 +177,7 @@ struct struct_2 type_8_stru_800490F0[] = { #endif //D:80048DF0 -struct struct_2 type_9_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_prox_m[] = { {4, 0xBF, 3.0, 1, 0x32, 1}, {4, 0xBF, 3.0, 1, 0x32, 1}, {9, 0xC3, 1.5, 1, 0x64, 1}, @@ -163,7 +189,7 @@ struct struct_2 type_9_stru_800490F0[] = { }; //D:80048EB0 -struct struct_2 type_A_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_rockets[] = { {6, 0xCD, 3.0, 1, 0x32, 1}, {6, 0xCD, 3.0, 1, 0x32, 1}, {7, 0xC1, 1.5, 1, 0x64, 1}, @@ -175,7 +201,7 @@ struct struct_2 type_A_stru_800490F0[] = { }; //D:80048F70 -struct struct_2 type_B_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_lasers[] = { {6, 0xCD, 3.0, 1, 0x32, 1}, {6, 0xCD, 3.0, 1, 0x32, 1}, {7, 0xC1, 1.5, 1, 0x64, 1}, @@ -187,7 +213,7 @@ struct struct_2 type_B_stru_800490F0[] = { }; //D:80049030 -struct struct_2 type_C_stru_800490F0[] = { +struct s_mp_weapon_set mp_weapon_set_golden[] = { {6, 0xCD, 3.0, 1, 0x32, 1}, {6, 0xCD, 3.0, 1, 0x32, 1}, {7, 0xC1, 1.5, 1, 0x64, 1}, @@ -200,20 +226,20 @@ struct struct_2 type_C_stru_800490F0[] = { //D:800490F0 struct struct_8 mp_weapon_set_text_table[] = { - {0xA8, 0, 0, 0, type_0_stru_800490F0}, - {0xA8, 1, 0, 0, type_1_stru_800490F0}, - {0xA8, 0xD, 0, 0, type_D_stru_800490F0}, - {0xA8, 2, 0, 0, type_2_stru_800490F0}, - {0xA8, 3, 0, 0, type_3_stru_800490F0}, - {0xA8, 4, 0, 0, type_4_stru_800490F0}, - {0xA8, 5, 0, 0, type_5_stru_800490F0}, - {0xA8, 6, 0, 0, type_6_stru_800490F0}, - {0xA8, 7, 0, 0, type_7_stru_800490F0}, - {0xA8, 8, 0, 0, type_8_stru_800490F0}, - {0xA8, 9, 0, 0, type_9_stru_800490F0}, - {0xA8, 0xA, 0, 0, type_A_stru_800490F0}, - {0xA8, 0xB, 0, 0, type_B_stru_800490F0}, - {0xA8, 0xC, 0, 0, type_C_stru_800490F0} + {0xA8, 0, 0, 0, mp_weapon_set_slaps}, + {0xA8, 1, 0, 0, mp_weapon_set_pistols}, + {0xA8, 0xD, 0, 0, mp_weapon_set_knife}, + {0xA8, 2, 0, 0, mp_weapon_set_auto}, + {0xA8, 3, 0, 0, mp_weapon_set_power}, + {0xA8, 4, 0, 0, mp_weapon_set_sniper}, + {0xA8, 5, 0, 0, mp_weapon_set_grenade}, + {0xA8, 6, 0, 0, mp_weapon_set_remote_m}, + {0xA8, 7, 0, 0, mp_weapon_set_glaunch}, + {0xA8, 8, 0, 0, mp_weapon_set_timed_m}, + {0xA8, 9, 0, 0, mp_weapon_set_prox_m}, + {0xA8, 0xA, 0, 0, mp_weapon_set_rockets}, + {0xA8, 0xB, 0, 0, mp_weapon_set_lasers}, + {0xA8, 0xC, 0, 0, mp_weapon_set_golden} }; s32 mp_weapon_set = 0xB; @@ -222,10 +248,9 @@ s32 mp_weapon_set = 0xB; #ifdef NONMATCHING -void *advance_mp_weapon_set_by_one_save_value(void) { - // Node 0 - mp_weapon_set = (s32) ((s32) (mp_weapon_set + 1) % 0xe); - return &mp_weapon_set; +void advance_mp_weapon_set_by_one_save_value(void) +{ + mp_weapon_set = (mp_weapon_set + 1) % 0xe; } #else GLOBAL_ASM( diff --git a/src/game/mp_weapon.h b/src/game/mp_weapon.h index b45578e..57a1693 100644 --- a/src/game/mp_weapon.h +++ b/src/game/mp_weapon.h @@ -2,7 +2,7 @@ #define _MP_WEAPON_H_ #include "ultra64.h" -struct struct_2 +struct s_mp_weapon_set { s32 anonymous_0; s32 anonymous_1; @@ -18,7 +18,7 @@ struct struct_8 char field_1; char field_2; char field_3; - struct struct_2 * anonymous_1; + struct s_mp_weapon_set * anonymous_1; }; diff --git a/src/game/music_0D2720.c b/src/game/music_0D2720.c index 25de852..c6ec204 100644 --- a/src/game/music_0D2720.c +++ b/src/game/music_0D2720.c @@ -48,13 +48,13 @@ s16 random_tracks[] = { #ifdef NONMATCHING -void sub_GAME_7F0D2720(void) { +void getmusictrack_or_randomtrack(void) { } #else GLOBAL_ASM( .text -glabel sub_GAME_7F0D2720 +glabel getmusictrack_or_randomtrack /* 107250 7F0D2720 3C0E8005 */ lui $t6, %hi(music_setup_entries) /* 107254 7F0D2724 85CEEB10 */ lh $t6, %lo(music_setup_entries)($t6) /* 107258 7F0D2728 27BDFFD8 */ addiu $sp, $sp, -0x28 diff --git a/src/game/ob.c b/src/game/ob.c index f1507fa..3722586 100644 --- a/src/game/ob.c +++ b/src/game/ob.c @@ -1,19 +1,15 @@ #include "ultra64.h" #include "game/ob.h" #include "assets/obseg/obseg.h" +#include "game/decompress.h" //bss //800888b0 -u8 ptr_resource_data[0x13]; -//800888c4 -u32 ptr_res_data_next; -//800888c8 -u8 dword_CODE_bss_800888c8[0x10]; -u8 dword_CODE_bss_800888D8[0x3958]; +struct resource_lookup_data_entry resource_lookup_data_array[736]; // data //D:80046050 -s32 D_80046050 = 0; +s32 ob_c_debug_notice_list_entry = 0; struct fileentry file_resource_table[] = { {0, "", 0}, @@ -53,6 +49,7 @@ struct fileentry file_resource_table[] = { {0x22, "bg/bg_len_all_p.seg", &bg_len_all_p_seg}, {0x23, "bg/bg_wax_all_p.seg", &bg_wax_all_p_seg}, {0x24, "bg/bg_pam_all_p.seg", &bg_pam_all_p_seg}, + {0x25, "CarmourguardZ", &CarmourguardZ}, {0x26, "CbaronsamediZ", &CbaronsamediZ}, {0x27, "CbluecamguardZ", &CbluecamguardZ}, @@ -133,6 +130,7 @@ struct fileentry file_resource_table[] = { {0x72, "CtrevguardZ", &CtrevguardZ}, {0x73, "CvalentinZ", &CvalentinZ}, {0x74, "CxeniaZ", &CxeniaZ}, + {0x75, "Gak47Z", &Gak47Z}, {0x76, "GaudiotapeZ", &GaudiotapeZ}, {0x77, "GautoshotZ", &GautoshotZ}, @@ -225,6 +223,7 @@ struct fileentry file_resource_table[] = { {0xCE, "GwppkZ", &GwppkZ}, {0xCF, "GwppksilZ", &GwppksilZ}, {0xD0, "GwristdartZ", &GwristdartZ}, + {0xD1, "PICBMZ", &PICBMZ}, {0xD2, "PICBM_noseZ", &PICBM_noseZ}, {0xD3, "Pak47magZ", &Pak47magZ}, @@ -601,6 +600,7 @@ struct fileentry file_resource_table[] = { {0x245, "Tbg_stat_all_p_stanZ", &Tbg_stat_all_p_stanZ}, {0x246, "Tbg_tra_all_p_stanZ", &Tbg_tra_all_p_stanZ}, {0x247, "Tbg_wax_all_p_stanZ", &UbriefarchZ}, + {0x248, "UbriefarchZ", &UbriefarchZ}, {0x249, "UbriefarkZ", &UbriefarkZ}, {0x24A, "UbriefaztZ", &UbriefaztZ}, @@ -621,6 +621,7 @@ struct fileentry file_resource_table[] = { {0x259, "UbriefsiloZ", &UbriefsiloZ}, {0x25A, "UbriefstatueZ", &UbriefstatueZ}, {0x25B, "UbrieftraZ", &UbrieftraZ}, + {0x25C, "Ump_setupameZ", &Ump_setupameZ}, {0x25D, "Ump_setuparchZ", &Ump_setuparchZ}, {0x25E, "Ump_setuparkZ", &Ump_setuparkZ}, @@ -634,6 +635,7 @@ struct fileentry file_resource_table[] = { {0x266, "Ump_setuprefZ", &Ump_setuprefZ}, {0x267, "Ump_setupsevbZ", &Ump_setupsevbZ}, {0x268, "Ump_setupstatueZ", &Ump_setupstatueZ}, + {0x269, "UsetuparchZ", &UsetuparchZ}, {0x26A, "UsetuparkZ", &UsetuparkZ}, {0x26B, "UsetupaztZ", &UsetupaztZ}, @@ -655,6 +657,7 @@ struct fileentry file_resource_table[] = { {0x27B, "UsetupsiloZ", &UsetupsiloZ}, {0x27C, "UsetupstatueZ", &UsetupstatueZ}, {0x27D, "UsetuptraZ", &UsetuptraZ}, + {0x27E, "LameE", &LameE}, {0x27F, "LameJ", &LameJ}, {0x280, "LarchE", &LarchE}, @@ -743,6 +746,7 @@ struct fileentry file_resource_table[] = { {0x2D3, "LtraJ", &LtraJ}, {0x2D4, "LwaxE", &LwaxE}, {0x2D5, "LwaxJ", &LwaxJ}, + {0x2D6, "ob/ob_end.seg", &ob__ob_end_seg}, {0}, {0}, @@ -763,8 +767,29 @@ s32 file_entry_max = 0x2D7; #ifdef NONMATCHING -void load_resource(void) { +//matches other than regalloc +void load_resource(u8 *ptrdata, u32 bytes, struct fileentry *srcfile, struct resource_lookup_data_entry *lookupdata) +{ + s32 unused; + u8 buffer[8448]; + u8 *source; + if (bytes == 0) + { + romCopy(srcfile->hw_address, lookupdata->rom_size); + return; + } + source = (ptrdata + bytes) - ((lookupdata->rom_size + 7) & -8); + if ((u32) (source - ptrdata) < 8U) + { + lookupdata->pc_remaining = 0; + } + else + { + romCopy(source, srcfile->hw_address, lookupdata->rom_size); + //unused = + lookupdata->pc_remaining = decompressdata(source, ptrdata, &buffer);; + } } #else GLOBAL_ASM( @@ -819,8 +844,41 @@ glabel load_resource #ifdef NONMATCHING -void resource_load_from_indy(void) { - +//need to tinker with stack size +void resource_load_from_indy(u8 *ptrdata, u32 bytes, struct fileentry *srcfile, struct resource_lookup_data_entry *lookupdata) +{ + void *sp2124; + u8 buffer[8450]; + u8 *pPayload; + u32 size; +static const u8 rz_header_1[] = {0x11, 0x72, 0x00, 0x00}; +static const u8 rz_header_2[] = {0x11, 0x72, 0x00, 0x00}; + if (bytes == 0) + { + load_resource_on_indy(srcfile->filename, ptrdata); + return; + } + check_file_found_on_indy(srcfile->filename, lookupdata->pc_size); + pPayload = (ptrdata + bytes) - ((lookupdata->pc_size + 7) & -8); + if ((u32) (pPayload - ptrdata) < 8U) + { + lookupdata->pc_remaining = 0; + } + else + { + sp2124 = pPayload; + load_resource_on_indy(srcfile->filename, pPayload); + if ((pPayload[0] == rz_header_1[0]) && (pPayload[1] == rz_header_2[1])) + { + size = decompressdata(pPayload, ptrdata, &buffer); + } + else + { + _bcopy(pPayload, ptrdata, lookupdata->pc_size); + size = lookupdata->pc_size; + } + lookupdata->pc_remaining = (s32) size; + } } #else GLOBAL_ASM( @@ -908,36 +966,29 @@ glabel resource_load_from_indy #ifdef NONMATCHING -void *ob_c_debug_setup(void) { - s32 temp_v1; - u32 temp_v0; - void *phi_a0; - u32 phi_v0; - - // Node 0 - get_ptr_debug_notice_list_entry(&D_80046050, &aOb_c_debug); - temp_v1 = (file_entry_max + -1); - if (temp_v1 >= 2) - { - // Node 1 - phi_a0 = (void *) (file_resource_table + 0xc); - phi_v0 = &ptr_res_data_next; -loop_2: - // Node 2 - temp_v0 = (phi_v0 + 0x14); - temp_v0->unk-14 = (s32) (phi_a0->unk14 - phi_a0->unk8); - temp_v0->unk-10 = 0; - temp_v0->unk-C = 0; - temp_v0->unk-8 = 0; - phi_a0 = (phi_a0 + 0xc); - phi_v0 = temp_v0; - if (temp_v0 < (u32) ((temp_v1 * 0x14) + &ptr_resource_data)) - { - goto loop_2; - } +void ob_c_debug_setup(void) +{ + struct resource_lookup_data_entry *lookupentry; + struct resource_lookup_data_entry *nextlookup; + int file_count; + struct fileentry *filetable_entry; + + get_ptr_debug_notice_list_entry(&ob_c_debug_notice_list_entry,"ob_c_debug"); + filetable_entry = &file_resource_table[0]; + file_count = file_entry_max - 1; + if (1 < file_count) { + lookupentry = resource_lookup_data_array + 1; + while (nextlookup < resource_lookup_data_array + file_count) { + filetable_entry = filetable_entry + 1; + nextlookup = lookupentry + 1; + lookupentry->rom_size = filetable_entry[1].hw_address - filetable_entry->hw_address; + lookupentry->pc_remaining = 0; + lookupentry->pc_size = 0; + lookupentry->rom_remaining = 0; + lookupentry = nextlookup; + } ; } - // Node 3 - return &ptr_res_data_next; + return; } #else GLOBAL_ASM( @@ -950,11 +1001,11 @@ glabel aOb_c_debug glabel ob_c_debug_setup /* 0F1758 7F0BCC28 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0F175C 7F0BCC2C AFBF0014 */ sw $ra, 0x14($sp) -/* 0F1760 7F0BCC30 3C048004 */ lui $a0, %hi(D_80046050) +/* 0F1760 7F0BCC30 3C048004 */ lui $a0, %hi(ob_c_debug_notice_list_entry) /* 0F1764 7F0BCC34 3C058006 */ lui $a1, %hi(aOb_c_debug) /* 0F1768 7F0BCC38 24A5B674 */ addiu $a1, %lo(aOb_c_debug) # addiu $a1, $a1, -0x498c /* 0F176C 7F0BCC3C 0C001398 */ jal get_ptr_debug_notice_list_entry -/* 0F1770 7F0BCC40 24846050 */ addiu $a0, %lo(D_80046050) # addiu $a0, $a0, 0x6050 +/* 0F1770 7F0BCC40 24846050 */ addiu $a0, %lo(ob_c_debug_notice_list_entry) # addiu $a0, $a0, 0x6050 /* 0F1774 7F0BCC44 3C038005 */ lui $v1, %hi(file_entry_max) /* 0F1778 7F0BCC48 8C6382D4 */ lw $v1, %lo(file_entry_max)($v1) /* 0F177C 7F0BCC4C 3C048004 */ lui $a0, %hi(file_resource_table + 0xC) @@ -962,14 +1013,14 @@ glabel ob_c_debug_setup /* 0F1784 7F0BCC54 2463FFFF */ addiu $v1, $v1, -1 /* 0F1788 7F0BCC58 28610002 */ slti $at, $v1, 2 /* 0F178C 7F0BCC5C 14200013 */ bnez $at, .L7F0BCCAC -/* 0F1790 7F0BCC60 3C028009 */ lui $v0, %hi(ptr_res_data_next) +/* 0F1790 7F0BCC60 3C028009 */ lui $v0, %hi(resource_lookup_data_array+0x14) /* 0F1794 7F0BCC64 00037080 */ sll $t6, $v1, 2 /* 0F1798 7F0BCC68 01C37021 */ addu $t6, $t6, $v1 -/* 0F179C 7F0BCC6C 3C0F8009 */ lui $t7, %hi(ptr_resource_data) -/* 0F17A0 7F0BCC70 25EF88B0 */ addiu $t7, %lo(ptr_resource_data) # addiu $t7, $t7, -0x7750 +/* 0F179C 7F0BCC6C 3C0F8009 */ lui $t7, %hi(resource_lookup_data_array) +/* 0F17A0 7F0BCC70 25EF88B0 */ addiu $t7, %lo(resource_lookup_data_array) # addiu $t7, $t7, -0x7750 /* 0F17A4 7F0BCC74 000E7080 */ sll $t6, $t6, 2 /* 0F17A8 7F0BCC78 01CF2821 */ addu $a1, $t6, $t7 -/* 0F17AC 7F0BCC7C 244288C4 */ addiu $v0, %lo(ptr_res_data_next) # addiu $v0, $v0, -0x773c +/* 0F17AC 7F0BCC7C 244288C4 */ addiu $v0, %lo(resource_lookup_data_array+0x14) # addiu $v0, $v0, -0x773c .L7F0BCC80: /* 0F17B0 7F0BCC80 8C980014 */ lw $t8, 0x14($a0) /* 0F17B4 7F0BCC84 8C990008 */ lw $t9, 8($a0) @@ -994,106 +1045,42 @@ glabel ob_c_debug_setup -#ifdef NONMATCHING -void _load_rom_index_to_membank(s32 arg3) { - load_rom_resource_index_to_membank((arg3 & 0xff)); + +void _load_rom_index_to_membank(s32 index,s32 param_2,s32 size,u8 bank) { + load_rom_resource_index_to_membank(index, param_2, size, bank); } -#else -GLOBAL_ASM( -.text -glabel _load_rom_index_to_membank -/* 0F17EC 7F0BCCBC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F17F0 7F0BCCC0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0F17F4 7F0BCCC4 AFA70024 */ sw $a3, 0x24($sp) -/* 0F17F8 7F0BCCC8 30EE00FF */ andi $t6, $a3, 0xff -/* 0F17FC 7F0BCCCC 0FC2F383 */ jal load_rom_resource_index_to_membank -/* 0F1800 7F0BCCD0 01C03825 */ move $a3, $t6 -/* 0F1804 7F0BCCD4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F1808 7F0BCCD8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0F180C 7F0BCCDC 03E00008 */ jr $ra -/* 0F1810 7F0BCCE0 00000000 */ nop -) -#endif +void _load_resource_index_to_membank(int index,s32 param_2,u8 *ptrdata,int size) { + load_resource_index_to_buffer(index, param_2, ptrdata, size); +} +void _load_resource_named_to_membank(u8 *filename,s32 param_2,s32 size,u8 bank) +{ + load_rom_resource_index_to_membank(get_index_num_of_named_resource(filename), param_2, size, bank); +} - - - -void _load_resource_index_to_membank(void) { - load_resource_index_to_buffer(); +void _load_resource_named_to_buffer(u8 *filename,s32 bank,u8 *ptrdata,int size) +{ + load_resource_index_to_buffer(get_index_num_of_named_resource(filename), bank, ptrdata, size); } - - #ifdef NONMATCHING -void _load_resource_named_to_membank(s32 arg1, ? arg2, ? arg3, ? arg_unalignedF) { - // Node 0 - return load_rom_resource_index_to_membank(get_index_num_of_named_resource(), arg1, arg2, arg_unalignedF); -} -#else -GLOBAL_ASM( -.text -glabel _load_resource_named_to_membank -/* 0F1834 7F0BCD04 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F1838 7F0BCD08 AFBF0014 */ sw $ra, 0x14($sp) -/* 0F183C 7F0BCD0C AFA5001C */ sw $a1, 0x1c($sp) -/* 0F1840 7F0BCD10 AFA60020 */ sw $a2, 0x20($sp) -/* 0F1844 7F0BCD14 0FC2F495 */ jal get_index_num_of_named_resource -/* 0F1848 7F0BCD18 AFA70024 */ sw $a3, 0x24($sp) -/* 0F184C 7F0BCD1C 00402025 */ move $a0, $v0 -/* 0F1850 7F0BCD20 8FA5001C */ lw $a1, 0x1c($sp) -/* 0F1854 7F0BCD24 8FA60020 */ lw $a2, 0x20($sp) -/* 0F1858 7F0BCD28 0FC2F383 */ jal load_rom_resource_index_to_membank -/* 0F185C 7F0BCD2C 93A70027 */ lbu $a3, 0x27($sp) -/* 0F1860 7F0BCD30 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F1864 7F0BCD34 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0F1868 7F0BCD38 03E00008 */ jr $ra -/* 0F186C 7F0BCD3C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void _load_resource_named_to_buffer(s32 arg1, ? arg2, ? arg3) { - load_resource_index_to_buffer(get_index_num_of_named_resource(), arg1, arg2, arg3); -} - -#else -GLOBAL_ASM( -.text -glabel _load_resource_named_to_buffer -/* 0F1870 7F0BCD40 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F1874 7F0BCD44 AFBF0014 */ sw $ra, 0x14($sp) -/* 0F1878 7F0BCD48 AFA5001C */ sw $a1, 0x1c($sp) -/* 0F187C 7F0BCD4C AFA60020 */ sw $a2, 0x20($sp) -/* 0F1880 7F0BCD50 0FC2F495 */ jal get_index_num_of_named_resource -/* 0F1884 7F0BCD54 AFA70024 */ sw $a3, 0x24($sp) -/* 0F1888 7F0BCD58 00402025 */ move $a0, $v0 -/* 0F188C 7F0BCD5C 8FA5001C */ lw $a1, 0x1c($sp) -/* 0F1890 7F0BCD60 8FA60020 */ lw $a2, 0x20($sp) -/* 0F1894 7F0BCD64 0FC2F3F8 */ jal load_resource_index_to_buffer -/* 0F1898 7F0BCD68 8FA70024 */ lw $a3, 0x24($sp) -/* 0F189C 7F0BCD6C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F18A0 7F0BCD70 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0F18A4 7F0BCD74 03E00008 */ jr $ra -/* 0F18A8 7F0BCD78 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void load_bg_bytes_at_offset_to_membank(void) { +void load_bg_bytes_at_offset_to_membank(u8 *bgname,u8 *src,s32 offset,s32 len) +{ + int index; + + index = get_index_num_of_named_resource(bgname); + if (resource_lookup_data_array[index].rom_size != 0) { + if (resource_lookup_data_array[index].rom_size + 0xf >= (offset + len)) { + romCopy(src,(file_resource_table[index].hw_address + offset),len); + return; + } + while( 1 ) { } ; + } } #else GLOBAL_ASM( @@ -1108,9 +1095,9 @@ glabel load_bg_bytes_at_offset_to_membank /* 0F18C4 7F0BCD94 0002C080 */ sll $t8, $v0, 2 /* 0F18C8 7F0BCD98 0302C021 */ addu $t8, $t8, $v0 /* 0F18CC 7F0BCD9C 0018C080 */ sll $t8, $t8, 2 -/* 0F18D0 7F0BCDA0 3C038009 */ lui $v1, %hi(ptr_resource_data) +/* 0F18D0 7F0BCDA0 3C038009 */ lui $v1, %hi(resource_lookup_data_array) /* 0F18D4 7F0BCDA4 00781821 */ addu $v1, $v1, $t8 -/* 0F18D8 7F0BCDA8 8C6388B0 */ lw $v1, %lo(ptr_resource_data)($v1) +/* 0F18D8 7F0BCDA8 8C6388B0 */ lw $v1, %lo(resource_lookup_data_array)($v1) /* 0F18DC 7F0BCDAC 00027080 */ sll $t6, $v0, 2 /* 0F18E0 7F0BCDB0 01C27023 */ subu $t6, $t6, $v0 /* 0F18E4 7F0BCDB4 3C0F8004 */ lui $t7, %hi(file_resource_table) @@ -1145,9 +1132,62 @@ glabel load_bg_bytes_at_offset_to_membank -#ifdef NONMATCHING -void load_rom_resource_index_to_membank(void) { - +#ifdef NONMATCHING// +u8 * load_rom_resource_index_to_membank(s32 index,s32 type,s32 size,u8 bank) +{ + + u8 *ptrdata; + if (((type == 0) || (type == 1)) || (type == 2)) + { + if (resource_lookup_data_array[index].pc_remaining == 0) + { + resource_lookup_data_array[index].pc_remaining = mempGetBankSizeLeft(bank); + } + ptrdata = mempAllocBytesInBank(resource_lookup_data_array[index].pc_remaining, bank); + resource_lookup_data_array[index].rom_remaining = resource_lookup_data_array[index].pc_remaining; + if (file_resource_table[index].hw_address == 0) + { + resource_load_from_indy(ptrdata, resource_lookup_data_array[index].rom_remaining, &file_resource_table[index], &resource_lookup_data_array[index]); + } + else + { + load_resource(ptrdata, resource_lookup_data_array[index].rom_remaining, &file_resource_table[index], &resource_lookup_data_array[index]); + } + if (type != 0) + { + mempAddEntryOfSizeToBank(ptrdata, resource_lookup_data_array[index].pc_remaining, bank); + } + } + else + { + if (resource_lookup_data_array[index].pc_remaining == 0) + { + if (resource_lookup_data_array[index].rom_size == 0) + { + resource_lookup_data_array[index].pc_remaining = resource_lookup_data_array[index].pc_size; + } + else + { + resource_lookup_data_array[index].pc_remaining = resource_lookup_data_array[index].rom_size; + } + } + ptrdata = mempAllocBytesInBank(resource_lookup_data_array[index].pc_remaining,bank); + resource_lookup_data_array[index].rom_remaining = resource_lookup_data_array[index].pc_remaining; + if (file_resource_table[index].hw_address == 0) + { + resource_load_from_indy(ptrdata, 0, &file_resource_table[index], &resource_lookup_data_array[index]); + } + else + { + + load_resource(ptrdata , 0, &file_resource_table[index], &resource_lookup_data_array[index]); + } + if (size == 0) + { + resource_lookup_data_array[index].loaded_bank = bank; + } + } + return ptrdata; } #else GLOBAL_ASM( @@ -1169,8 +1209,8 @@ glabel load_rom_resource_index_to_membank /* 0F1970 7F0BCE40 8FAD0030 */ lw $t5, 0x30($sp) .L7F0BCE44: /* 0F1974 7F0BCE44 8FAF0030 */ lw $t7, 0x30($sp) -/* 0F1978 7F0BCE48 3C198009 */ lui $t9, %hi(ptr_resource_data) -/* 0F197C 7F0BCE4C 273988B0 */ addiu $t9, %lo(ptr_resource_data) # addiu $t9, $t9, -0x7750 +/* 0F1978 7F0BCE48 3C198009 */ lui $t9, %hi(resource_lookup_data_array) +/* 0F197C 7F0BCE4C 273988B0 */ addiu $t9, %lo(resource_lookup_data_array) # addiu $t9, $t9, -0x7750 /* 0F1980 7F0BCE50 000FC080 */ sll $t8, $t7, 2 /* 0F1984 7F0BCE54 030FC021 */ addu $t8, $t8, $t7 /* 0F1988 7F0BCE58 0018C080 */ sll $t8, $t8, 2 @@ -1178,13 +1218,13 @@ glabel load_rom_resource_index_to_membank /* 0F1990 7F0BCE60 8E300004 */ lw $s0, 4($s1) /* 0F1994 7F0BCE64 56000006 */ bnezl $s0, .L7F0BCE80 /* 0F1998 7F0BCE68 02002025 */ move $a0, $s0 -/* 0F199C 7F0BCE6C 0C002644 */ jal memp_related_3 +/* 0F199C 7F0BCE6C 0C002644 */ jal mempGetBankSizeLeft /* 0F19A0 7F0BCE70 93A4003F */ lbu $a0, 0x3f($sp) /* 0F19A4 7F0BCE74 AE220004 */ sw $v0, 4($s1) /* 0F19A8 7F0BCE78 00408025 */ move $s0, $v0 /* 0F19AC 7F0BCE7C 02002025 */ move $a0, $s0 .L7F0BCE80: -/* 0F19B0 7F0BCE80 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F19B0 7F0BCE80 0C0025C8 */ jal mempAllocBytesInBank /* 0F19B4 7F0BCE84 93A5003F */ lbu $a1, 0x3f($sp) /* 0F19B8 7F0BCE88 8E300004 */ lw $s0, 4($s1) /* 0F19BC 7F0BCE8C 3C0A8004 */ lui $t2, %hi(file_resource_table) @@ -1217,15 +1257,15 @@ glabel load_rom_resource_index_to_membank /* 0F1A20 7F0BCEF0 93A6003F */ lbu $a2, 0x3f($sp) /* 0F1A24 7F0BCEF4 51800035 */ beql $t4, $zero, .L7F0BCFCC /* 0F1A28 7F0BCEF8 8FBF001C */ lw $ra, 0x1c($sp) -/* 0F1A2C 7F0BCEFC 0C002601 */ jal memp_related_1 +/* 0F1A2C 7F0BCEFC 0C002601 */ jal mempAddEntryOfSizeToBank /* 0F1A30 7F0BCF00 8E250004 */ lw $a1, 4($s1) /* 0F1A34 7F0BCF04 10000031 */ b .L7F0BCFCC /* 0F1A38 7F0BCF08 8FBF001C */ lw $ra, 0x1c($sp) .L7F0BCF0C: /* 0F1A3C 7F0BCF0C 000D7080 */ sll $t6, $t5, 2 /* 0F1A40 7F0BCF10 01CD7021 */ addu $t6, $t6, $t5 -/* 0F1A44 7F0BCF14 3C0F8009 */ lui $t7, %hi(ptr_resource_data) -/* 0F1A48 7F0BCF18 25EF88B0 */ addiu $t7, %lo(ptr_resource_data) # addiu $t7, $t7, -0x7750 +/* 0F1A44 7F0BCF14 3C0F8009 */ lui $t7, %hi(resource_lookup_data_array) +/* 0F1A48 7F0BCF18 25EF88B0 */ addiu $t7, %lo(resource_lookup_data_array) # addiu $t7, $t7, -0x7750 /* 0F1A4C 7F0BCF1C 000E7080 */ sll $t6, $t6, 2 /* 0F1A50 7F0BCF20 01CF8821 */ addu $s1, $t6, $t7 /* 0F1A54 7F0BCF24 8E300004 */ lw $s0, 4($s1) @@ -1242,7 +1282,7 @@ glabel load_rom_resource_index_to_membank .L7F0BCF4C: /* 0F1A7C 7F0BCF4C 02002025 */ move $a0, $s0 .L7F0BCF50: -/* 0F1A80 7F0BCF50 0C0025C8 */ jal allocate_bytes_in_bank +/* 0F1A80 7F0BCF50 0C0025C8 */ jal mempAllocBytesInBank /* 0F1A84 7F0BCF54 93A5003F */ lbu $a1, 0x3f($sp) /* 0F1A88 7F0BCF58 8E390004 */ lw $t9, 4($s1) /* 0F1A8C 7F0BCF5C 3C0A8004 */ lui $t2, %hi(file_resource_table) @@ -1286,65 +1326,54 @@ glabel load_rom_resource_index_to_membank - - -#ifdef NONMATCHING -void load_resource_index_to_buffer(s32 arg0, s32 arg1, ? arg2, ?32 arg3) { - void *temp_s0; - void *temp_a2; - void *temp_a2_2; - - // Node 0 - temp_s0 = ((arg0 * 0x14) + &ptr_resource_data); - if (temp_s0->unk4 == 0) +/* + *this matches except: + *baserom.u.z64 + *000F 1BC0: AE 0C 00 0C 8F A5 00 2C 0F C2 F2 A8 8F A4 00 28 ......., .......( + *ge007.u.z64 this is flipped with this + *000F 1BC0: AE 0C 00 0C 8F A4 00 28 0F C2 F2 A8 8F A5 00 2C .......( ......., + */ +#ifdef NONMATCHING// +u8* load_resource_index_to_buffer(s32 index,s32 bank,u8 *ptrdata,s32 bytes) +{ + if (resource_lookup_data_array[index].pc_remaining == 0) { - // Node 1 - if (*temp_s0 != 0) + if (resource_lookup_data_array[index].rom_size > 0) { - // Node 2 - temp_s0->unk4 = (s32) *temp_s0; + resource_lookup_data_array[index].pc_remaining = resource_lookup_data_array[index].rom_size; } else { - // Node 3 - temp_s0->unk4 = (s32) temp_s0->unk8; + resource_lookup_data_array[index].pc_remaining = resource_lookup_data_array[index].pc_size; } } - // Node 4 - if (((arg1 == 0) || (arg1 == 2)) || (arg1 == 2)) + if (((bank == 0) || (bank == 1)) || (bank == 2)) { - // Node 7 - temp_a2_2 = ((arg0 * 0xc) + &file_resource_table); - if (temp_a2_2->unk8 == 0) + if (!file_resource_table[index].hw_address) { - // Node 8 - temp_s0->unkC = arg3; - resource_load_from_indy(arg2, arg3, temp_a2_2, temp_s0); + resource_lookup_data_array[index].rom_remaining = bytes; + resource_load_from_indy(ptrdata, bytes, &file_resource_table[index], &resource_lookup_data_array[index]); } else { - // Node 9 - temp_s0->unkC = arg3; - load_resource(arg2, arg3, temp_a2_2, temp_s0); + resource_lookup_data_array[index].rom_remaining = bytes; + //flip happens here + load_resource(ptrdata, bytes, &file_resource_table[index], &resource_lookup_data_array[index]); } } else { - // Node 10 - temp_a2 = ((arg0 * 0xc) + &file_resource_table); - if (temp_a2->unk8 == 0) + if (!file_resource_table[index].hw_address) { - // Node 11 - resource_load_from_indy(arg2, 0, temp_a2, temp_s0); + resource_load_from_indy(ptrdata, 0, &file_resource_table[index], &resource_lookup_data_array[index]); } else { - // Node 12 - load_resource(arg2, 0, temp_a2, temp_s0); + + load_resource(ptrdata, 0, &file_resource_table[index], &resource_lookup_data_array[index]); } } - // Node 13 - return arg2; + return ptrdata; } #else GLOBAL_ASM( @@ -1353,9 +1382,9 @@ glabel load_resource_index_to_buffer /* 0F1B10 7F0BCFE0 00047080 */ sll $t6, $a0, 2 /* 0F1B14 7F0BCFE4 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 0F1B18 7F0BCFE8 01C47021 */ addu $t6, $t6, $a0 -/* 0F1B1C 7F0BCFEC 3C0F8009 */ lui $t7, %hi(ptr_resource_data) +/* 0F1B1C 7F0BCFEC 3C0F8009 */ lui $t7, %hi(resource_lookup_data_array) /* 0F1B20 7F0BCFF0 AFB00018 */ sw $s0, 0x18($sp) -/* 0F1B24 7F0BCFF4 25EF88B0 */ addiu $t7, %lo(ptr_resource_data) # addiu $t7, $t7, -0x7750 +/* 0F1B24 7F0BCFF4 25EF88B0 */ addiu $t7, %lo(resource_lookup_data_array) # addiu $t7, $t7, -0x7750 /* 0F1B28 7F0BCFF8 000E7080 */ sll $t6, $t6, 2 /* 0F1B2C 7F0BCFFC 01CF8021 */ addu $s0, $t6, $t7 /* 0F1B30 7F0BD000 8E180004 */ lw $t8, 4($s0) @@ -1436,76 +1465,37 @@ glabel load_resource_index_to_buffer -#ifdef NONMATCHING -void get_temp_remaining_buffer_for_index(void) { +s32 get_pc_remaining_buffer_for_index(s32 index) +{ + return resource_lookup_data_array[index].pc_remaining; } -#else -GLOBAL_ASM( -.text -glabel get_temp_remaining_buffer_for_index -/* 0F1C30 7F0BD100 00047080 */ sll $t6, $a0, 2 -/* 0F1C34 7F0BD104 01C47021 */ addu $t6, $t6, $a0 -/* 0F1C38 7F0BD108 000E7080 */ sll $t6, $t6, 2 -/* 0F1C3C 7F0BD10C 3C028009 */ lui $v0, %hi(ptr_resource_data+4) -/* 0F1C40 7F0BD110 004E1021 */ addu $v0, $v0, $t6 -/* 0F1C44 7F0BD114 03E00008 */ jr $ra -/* 0F1C48 7F0BD118 8C4288B4 */ lw $v0, %lo(ptr_resource_data+4)($v0) -) -#endif - - - -#ifdef NONMATCHING -void get_remaining_buffer_for_index(void) { - +s32 get_rom_remaining_buffer_for_index(s32 index) +{ + return resource_lookup_data_array[index].rom_remaining; } -#else -GLOBAL_ASM( -.text -glabel get_remaining_buffer_for_index -/* 0F1C4C 7F0BD11C 00047080 */ sll $t6, $a0, 2 -/* 0F1C50 7F0BD120 01C47021 */ addu $t6, $t6, $a0 -/* 0F1C54 7F0BD124 000E7080 */ sll $t6, $t6, 2 -/* 0F1C58 7F0BD128 3C028009 */ lui $v0, %hi(ptr_resource_data+12) -/* 0F1C5C 7F0BD12C 004E1021 */ addu $v0, $v0, $t6 -/* 0F1C60 7F0BD130 03E00008 */ jr $ra -/* 0F1C64 7F0BD134 8C4288BC */ lw $v0, %lo(ptr_resource_data+12)($v0) -) -#endif - - #ifdef NONMATCHING -void *sub_GAME_7F0BD138(s32 arg0, s32 arg1, ?32 arg2, s32 arg3) { - void *temp_v0; - - // Node 0 - temp_v0 = ((arg0 * 0x14) + &ptr_resource_data); - temp_v0->unk4 = arg2; - temp_v0->unkC = arg2; - if (arg3 != 0) - { - // Node 1 - memp_related_1(arg1, arg2, 4); - return; - // (possible return value: memp_related_1(arg1, arg2, 4)) +void sub_GAME_7F0BD138(int index, u8 *ptrdata, int size, s32 param_4) +{ + resource_lookup_data_array[index].pc_remaining = size; + resource_lookup_data_array[index].rom_remaining = size; + if (param_4) { + mempAddEntryOfSizeToBank(ptrdata,size,4); } - // (possible return value: temp_v0) } - #else GLOBAL_ASM( .text glabel sub_GAME_7F0BD138 /* 0F1C68 7F0BD138 00047080 */ sll $t6, $a0, 2 /* 0F1C6C 7F0BD13C 01C47021 */ addu $t6, $t6, $a0 -/* 0F1C70 7F0BD140 3C0F8009 */ lui $t7, %hi(ptr_resource_data) -/* 0F1C74 7F0BD144 25EF88B0 */ addiu $t7, %lo(ptr_resource_data) # addiu $t7, $t7, -0x7750 +/* 0F1C70 7F0BD140 3C0F8009 */ lui $t7, %hi(resource_lookup_data_array) +/* 0F1C74 7F0BD144 25EF88B0 */ addiu $t7, %lo(resource_lookup_data_array) # addiu $t7, $t7, -0x7750 /* 0F1C78 7F0BD148 000E7080 */ sll $t6, $t6, 2 /* 0F1C7C 7F0BD14C 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0F1C80 7F0BD150 01CF1021 */ addu $v0, $t6, $t7 @@ -1516,7 +1506,7 @@ glabel sub_GAME_7F0BD138 /* 0F1C94 7F0BD164 AC46000C */ sw $a2, 0xc($v0) /* 0F1C98 7F0BD168 00A02025 */ move $a0, $a1 /* 0F1C9C 7F0BD16C 00C02825 */ move $a1, $a2 -/* 0F1CA0 7F0BD170 0C002601 */ jal memp_related_1 +/* 0F1CA0 7F0BD170 0C002601 */ jal mempAddEntryOfSizeToBank /* 0F1CA4 7F0BD174 24060004 */ li $a2, 4 .L7F0BD178: /* 0F1CA8 7F0BD178 8FBF0014 */ lw $ra, 0x14($sp) @@ -1530,73 +1520,45 @@ glabel sub_GAME_7F0BD138 -#ifdef NONMATCHING -void sub_GAME_7F0BD188(void) { - // Node 0 - get_index_num_of_named_resource(); - return; - // (possible return value: *((ptr_resource_data + 4) + (((get_index_num_of_named_resource() * 4) + get_index_num_of_named_resource()) * 4))) + +s32 get_pc_buffer_remaining_value(u8 *name) +{ + int index; + + index = get_index_num_of_named_resource(name); + return resource_lookup_data_array[index].pc_remaining; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0BD188 -/* 0F1CB8 7F0BD188 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F1CBC 7F0BD18C AFBF0014 */ sw $ra, 0x14($sp) -/* 0F1CC0 7F0BD190 0FC2F495 */ jal get_index_num_of_named_resource -/* 0F1CC4 7F0BD194 00000000 */ nop -/* 0F1CC8 7F0BD198 00027080 */ sll $t6, $v0, 2 -/* 0F1CCC 7F0BD19C 01C27021 */ addu $t6, $t6, $v0 -/* 0F1CD0 7F0BD1A0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F1CD4 7F0BD1A4 000E7080 */ sll $t6, $t6, 2 -/* 0F1CD8 7F0BD1A8 3C028009 */ lui $v0, %hi(ptr_resource_data+4) -/* 0F1CDC 7F0BD1AC 004E1021 */ addu $v0, $v0, $t6 -/* 0F1CE0 7F0BD1B0 8C4288B4 */ lw $v0, %lo(ptr_resource_data+4)($v0) -/* 0F1CE4 7F0BD1B4 03E00008 */ jr $ra -/* 0F1CE8 7F0BD1B8 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - #ifdef NONMATCHING -s32 something_mem_bank_a0(s32 arg0) { - s32 temp_t6; - u32 temp_a1; - void *phi_a1; - - // Node 0 - temp_t6 = (arg0 & 0xff); - if (file_entry_max >= 2) - { - // Node 1 - phi_a1 = &ptr_res_data_next; - // Node 2 - if (temp_t6 >= phi_a1->unk10) - { - // Node 3 - phi_a1->unk10 = (u8)0; - } - // Node 4 - if (4 == temp_t6) - { - // Node 5 - phi_a1->unk4 = 0; - } - // Node 6 - temp_a1 = (phi_a1 + 0x14); - phi_a1 = temp_a1; - if (temp_a1 < (u32) ((file_entry_max * 0x14) + &ptr_resource_data)) - { - goto loop_2; +void something_mem_bank_a0(byte param_1) +{ + byte bVar1; + resource_lookup_data_entry *nextres; + resource_lookup_data_entry *prVar2; + int tablesize; + + if (1 < file_entry_max) { + prVar2 = resource_lookup_data_array + file_entry_max; + bVar1 = resource_lookup_data_array[1].loaded_bank; + nextres = resource_lookup_data_array + 1; + while( true ) { + if (bVar1 <= param_1) { + nextres->loaded_bank = '\0'; + } + if (param_1 == 4) { + nextres->pc_remaining = 0; + } + if (prVar2 <= nextres + 1) break; + bVar1 = nextres[1].loaded_bank; + nextres = nextres + 1; } } - // Node 7 - return temp_t6; + return; } #else GLOBAL_ASM( @@ -1611,11 +1573,11 @@ glabel something_mem_bank_a0 /* 0F1D04 7F0BD1D4 01C01025 */ move $v0, $t6 /* 0F1D08 7F0BD1D8 00037880 */ sll $t7, $v1, 2 /* 0F1D0C 7F0BD1DC 01E37821 */ addu $t7, $t7, $v1 -/* 0F1D10 7F0BD1E0 3C188009 */ lui $t8, %hi(ptr_resource_data) -/* 0F1D14 7F0BD1E4 271888B0 */ addiu $t8, %lo(ptr_resource_data) # addiu $t8, $t8, -0x7750 +/* 0F1D10 7F0BD1E0 3C188009 */ lui $t8, %hi(resource_lookup_data_array) +/* 0F1D14 7F0BD1E4 271888B0 */ addiu $t8, %lo(resource_lookup_data_array) # addiu $t8, $t8, -0x7750 /* 0F1D18 7F0BD1E8 000F7880 */ sll $t7, $t7, 2 -/* 0F1D1C 7F0BD1EC 3C058009 */ lui $a1, %hi(ptr_res_data_next) -/* 0F1D20 7F0BD1F0 24A588C4 */ addiu $a1, %lo(ptr_res_data_next) # addiu $a1, $a1, -0x773c +/* 0F1D1C 7F0BD1EC 3C058009 */ lui $a1, %hi(resource_lookup_data_array+0x14) +/* 0F1D20 7F0BD1F0 24A588C4 */ addiu $a1, %lo(resource_lookup_data_array+0x14) # addiu $a1, $a1, -0x773c /* 0F1D24 7F0BD1F4 01F83021 */ addu $a2, $t7, $t8 /* 0F1D28 7F0BD1F8 24030004 */ li $v1, 4 /* 0F1D2C 7F0BD1FC 90B90010 */ lbu $t9, 0x10($a1) @@ -1652,8 +1614,53 @@ void sub_GAME_7F0BD234(void) { #ifdef NONMATCHING -void get_index_num_of_named_resource(void) { +int get_index_num_of_named_resource(byte *filename) +{ + longlong lVar1; + int iVar2; + char *pcVar3; + int iVar4; + int aiStack12 [3]; + + iVar4 = 1; + if (1 < file_entry_max) { + pcVar3 = file_resource_table[1].filename; + iVar2 = -0x7ffb9fa0; + while( true ) { + if ((pcVar3 != NULL) && (lVar1 = something_with_strings_0(filename,pcVar3), lVar1 == 0)) + { + return iVar4; + } + iVar4 += 1; + if (file_entry_max <= iVar4) break; + pcVar3 = *(char **)(iVar2 + 0x10); + iVar2 = iVar2 + 0xc; + } + } + iVar4 = file_entry_max; + if (file_entry_max < 0x2e0) { + file_entry_max += 1; + iVar2 = check_file_found_on_indy((char *)filename,aiStack12); + if (iVar2 == 0) { + iVar4 = 0; + } + else { + file_resource_table[iVar4].index = iVar4; + file_resource_table[iVar4].filename = filename; + resource_lookup_data_array[iVar4].unk_11 = '\0'; + file_resource_table[iVar4].hw_address = 0; + resource_lookup_data_array[iVar4].rom_size = 0; + resource_lookup_data_array[iVar4].pc_remaining = 0; + resource_lookup_data_array[iVar4].rom_remaining = 0; + resource_lookup_data_array[iVar4].loaded_bank = '\0'; + resource_lookup_data_array[iVar4].pc_size = (aiStack12[0] + 0xfU | 0xf) ^ 0xf; + } + } + else { + iVar4 = 0; + } + return iVar4; } #else GLOBAL_ASM( @@ -1715,8 +1722,8 @@ glabel get_index_num_of_named_resource /* 0F1E44 7F0BD314 0011C880 */ sll $t9, $s1, 2 /* 0F1E48 7F0BD318 01F88021 */ addu $s0, $t7, $t8 /* 0F1E4C 7F0BD31C 0331C821 */ addu $t9, $t9, $s1 -/* 0F1E50 7F0BD320 3C088009 */ lui $t0, %hi(ptr_resource_data) -/* 0F1E54 7F0BD324 250888B0 */ addiu $t0, %lo(ptr_resource_data) # addiu $t0, $t0, -0x7750 +/* 0F1E50 7F0BD320 3C088009 */ lui $t0, %hi(resource_lookup_data_array) +/* 0F1E54 7F0BD324 250888B0 */ addiu $t0, %lo(resource_lookup_data_array) # addiu $t0, $t0, -0x7750 /* 0F1E58 7F0BD328 0019C880 */ sll $t9, $t9, 2 /* 0F1E5C 7F0BD32C AE110000 */ sw $s1, ($s0) /* 0F1E60 7F0BD330 AE130004 */ sw $s3, 4($s0) @@ -1748,96 +1755,30 @@ glabel get_index_num_of_named_resource -void sub_GAME_7F0BD384(u32 param_1) +void removed_handle_filetable_entry(u32 index) { - return; -} - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0BD38C(void) { - s32 temp_s0; - s32 phi_s0; - - // Node 0 - phi_s0 = 1; - if (file_entry_max >= 2) - { -loop_1: - // Node 1 - sub_GAME_7F0BD384(phi_s0); - temp_s0 = (phi_s0 + 1); - phi_s0 = temp_s0; - if (temp_s0 < file_entry_max) - { - goto loop_1; - } - } - // Node 2 return; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0BD38C -/* 0F1EBC 7F0BD38C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0F1EC0 7F0BD390 AFB10018 */ sw $s1, 0x18($sp) -/* 0F1EC4 7F0BD394 3C118005 */ lui $s1, %hi(file_entry_max) -/* 0F1EC8 7F0BD398 263182D4 */ addiu $s1, %lo(file_entry_max) # addiu $s1, $s1, -0x7d2c -/* 0F1ECC 7F0BD39C 8E2E0000 */ lw $t6, ($s1) -/* 0F1ED0 7F0BD3A0 AFB00014 */ sw $s0, 0x14($sp) -/* 0F1ED4 7F0BD3A4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0F1ED8 7F0BD3A8 29C10002 */ slti $at, $t6, 2 -/* 0F1EDC 7F0BD3AC 14200008 */ bnez $at, .L7F0BD3D0 -/* 0F1EE0 7F0BD3B0 24100001 */ li $s0, 1 -.L7F0BD3B4: -/* 0F1EE4 7F0BD3B4 0FC2F4E1 */ jal sub_GAME_7F0BD384 -/* 0F1EE8 7F0BD3B8 02002025 */ move $a0, $s0 -/* 0F1EEC 7F0BD3BC 8E2F0000 */ lw $t7, ($s1) -/* 0F1EF0 7F0BD3C0 26100001 */ addiu $s0, $s0, 1 -/* 0F1EF4 7F0BD3C4 020F082A */ slt $at, $s0, $t7 -/* 0F1EF8 7F0BD3C8 1420FFFA */ bnez $at, .L7F0BD3B4 -/* 0F1EFC 7F0BD3CC 00000000 */ nop -.L7F0BD3D0: -/* 0F1F00 7F0BD3D0 8FBF001C */ lw $ra, 0x1c($sp) -/* 0F1F04 7F0BD3D4 8FB00014 */ lw $s0, 0x14($sp) -/* 0F1F08 7F0BD3D8 8FB10018 */ lw $s1, 0x18($sp) -/* 0F1F0C 7F0BD3DC 03E00008 */ jr $ra -/* 0F1F10 7F0BD3E0 27BD0020 */ addiu $sp, $sp, 0x20 -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0BD3E4(void) { - +void removed_loop_handle_filetable_entries(void) +{ + int i; + for (i = 1; (i < file_entry_max); i++) + { + removed_handle_filetable_entry(i); + } } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0BD3E4 -/* 0F1F14 7F0BD3E4 3C038005 */ lui $v1, %hi(file_entry_max) -/* 0F1F18 7F0BD3E8 8C6382D4 */ lw $v1, %lo(file_entry_max)($v1) -/* 0F1F1C 7F0BD3EC 24020001 */ li $v0, 1 -/* 0F1F20 7F0BD3F0 28610002 */ slti $at, $v1, 2 -/* 0F1F24 7F0BD3F4 14200004 */ bnez $at, .L7F0BD408 -/* 0F1F28 7F0BD3F8 24420001 */ addiu $v0, $v0, 1 -.L7F0BD3FC: -/* 0F1F2C 7F0BD3FC 0043082A */ slt $at, $v0, $v1 -/* 0F1F30 7F0BD400 5420FFFE */ bnezl $at, .L7F0BD3FC -/* 0F1F34 7F0BD404 24420001 */ addiu $v0, $v0, 1 -.L7F0BD408: -/* 0F1F38 7F0BD408 03E00008 */ jr $ra -/* 0F1F3C 7F0BD40C 00000000 */ nop -) -#endif + +void removed_loop_filetableentries(void) +{ + int i; + + for (i = 1; (i < file_entry_max); i++) + { + ; + } +} + @@ -1852,18 +1793,18 @@ void *sub_GAME_7F0BD410(void) { if (file_entry_max >= 2) { // Node 1 - phi_v0 = &ptr_res_data_next; + phi_v0 = &resource_lookup_data_array+0x14; loop_2: // Node 2 temp_v0 = (phi_v0 + 0x14); phi_v0 = temp_v0; - if (temp_v0 < (u32) ((file_entry_max * 0x14) + &ptr_resource_data)) + if (temp_v0 < (u32) ((file_entry_max * 0x14) + &resource_lookup_data_array)) { goto loop_2; } } // Node 3 - return &ptr_res_data_next; + return &resource_lookup_data_array+0x14; } #else @@ -1872,14 +1813,14 @@ GLOBAL_ASM( glabel sub_GAME_7F0BD410 /* 0F1F40 7F0BD410 3C038005 */ lui $v1, %hi(file_entry_max) /* 0F1F44 7F0BD414 8C6382D4 */ lw $v1, %lo(file_entry_max)($v1) -/* 0F1F48 7F0BD418 3C028009 */ lui $v0, %hi(ptr_res_data_next) -/* 0F1F4C 7F0BD41C 244288C4 */ addiu $v0, %lo(ptr_res_data_next) # addiu $v0, $v0, -0x773c +/* 0F1F48 7F0BD418 3C028009 */ lui $v0, %hi(resource_lookup_data_array+0x14) +/* 0F1F4C 7F0BD41C 244288C4 */ addiu $v0, %lo(resource_lookup_data_array+0x14) # addiu $v0, $v0, -0x773c /* 0F1F50 7F0BD420 28610002 */ slti $at, $v1, 2 /* 0F1F54 7F0BD424 1420000A */ bnez $at, .L7F0BD450 /* 0F1F58 7F0BD428 00037080 */ sll $t6, $v1, 2 /* 0F1F5C 7F0BD42C 01C37021 */ addu $t6, $t6, $v1 -/* 0F1F60 7F0BD430 3C0F8009 */ lui $t7, %hi(ptr_resource_data) -/* 0F1F64 7F0BD434 25EF88B0 */ addiu $t7, %lo(ptr_resource_data) # addiu $t7, $t7, -0x7750 +/* 0F1F60 7F0BD430 3C0F8009 */ lui $t7, %hi(resource_lookup_data_array) +/* 0F1F64 7F0BD434 25EF88B0 */ addiu $t7, %lo(resource_lookup_data_array) # addiu $t7, $t7, -0x7750 /* 0F1F68 7F0BD438 000E7080 */ sll $t6, $t6, 2 /* 0F1F6C 7F0BD43C 01CF2021 */ addu $a0, $t6, $t7 /* 0F1F70 7F0BD440 24420014 */ addiu $v0, $v0, 0x14 diff --git a/src/game/ob.h b/src/game/ob.h index 9c019b3..07d4296 100644 --- a/src/game/ob.h +++ b/src/game/ob.h @@ -2,13 +2,27 @@ #define _OB_H_ #include "ultra64.h" +struct resource_lookup_data_entry { + u32 rom_size; + u32 pc_remaining; + u32 pc_size; + u32 rom_remaining; + u8 loaded_bank; + u8 unk_11; + u16 reserved; +}; + struct fileentry { s32 index; char *filename; - void *size; + u8 *hw_address; }; void something_mem_bank_a0(int); void sub_GAME_7F0BD234(void); +u8* load_resource_index_to_buffer(s32 index,s32 param_2,u8 *ptrdata,s32 bytes); +u8 * load_rom_resource_index_to_membank(s32 index,s32 type,s32 size,u8 bank); +void resource_load_from_indy(u8 *ptrdata, s32 bytes, struct fileentry *srcfile, struct resource_lookup_data_entry *lookupdata); +void load_resource(u8 *ptrdata, s32 bytes, struct fileentry *srcfile, struct resource_lookup_data_entry *lookupdata); #endif diff --git a/src/game/objecthandler.c b/src/game/objecthandler.c index 8dd19b3..3086cea 100644 --- a/src/game/objecthandler.c +++ b/src/game/objecthandler.c @@ -1828,7 +1828,7 @@ glabel get_obj_instance_controller_for_header .L7F06C124: /* 0A0C54 7F06C124 56C00005 */ bnezl $s6, .L7F06C13C /* 0A0C58 7F06C128 86A20014 */ lh $v0, 0x14($s5) -/* 0A0C5C 7F06C12C 0C0025C8 */ jal allocate_bytes_in_bank +/* 0A0C5C 7F06C12C 0C0025C8 */ jal mempAllocBytesInBank /* 0A0C60 7F06C130 24040020 */ li $a0, 32 /* 0A0C64 7F06C134 0040B025 */ move $s6, $v0 /* 0A0C68 7F06C138 86A20014 */ lh $v0, 0x14($s5) @@ -1838,7 +1838,7 @@ glabel get_obj_instance_controller_for_header /* 0A0C74 7F06C144 00022080 */ sll $a0, $v0, 2 /* 0A0C78 7F06C148 2484000F */ addiu $a0, $a0, 0xf /* 0A0C7C 7F06C14C 3488000F */ ori $t0, $a0, 0xf -/* 0A0C80 7F06C150 0C0025C8 */ jal allocate_bytes_in_bank +/* 0A0C80 7F06C150 0C0025C8 */ jal mempAllocBytesInBank /* 0A0C84 7F06C154 3904000F */ xori $a0, $t0, 0xf /* 0A0C88 7F06C158 AFA20040 */ sw $v0, 0x40($sp) /* 0A0C8C 7F06C15C 86AA0014 */ lh $t2, 0x14($s5) @@ -1967,7 +1967,7 @@ glabel get_aircraft_obj_instance_controller /* 0A0DE0 7F06C2B0 16000006 */ bnez $s0, .L7F06C2CC /* 0A0DE4 7F06C2B4 240400C0 */ li $a0, 192 /* 0A0DE8 7F06C2B8 24050004 */ li $a1, 4 -/* 0A0DEC 7F06C2BC 0C0025C8 */ jal allocate_bytes_in_bank +/* 0A0DEC 7F06C2BC 0C0025C8 */ jal mempAllocBytesInBank /* 0A0DF0 7F06C2C0 A7A80026 */ sh $t0, 0x26($sp) /* 0A0DF4 7F06C2C4 87A80026 */ lh $t0, 0x26($sp) /* 0A0DF8 7F06C2C8 00408025 */ move $s0, $v0 @@ -1979,7 +1979,7 @@ glabel get_aircraft_obj_instance_controller /* 0A0E0C 7F06C2DC 00062080 */ sll $a0, $a2, 2 /* 0A0E10 7F06C2E0 2484000F */ addiu $a0, $a0, 0xf /* 0A0E14 7F06C2E4 3499000F */ ori $t9, $a0, 0xf -/* 0A0E18 7F06C2E8 0C0025C8 */ jal allocate_bytes_in_bank +/* 0A0E18 7F06C2E8 0C0025C8 */ jal mempAllocBytesInBank /* 0A0E1C 7F06C2EC 3B24000F */ xori $a0, $t9, 0xf /* 0A0E20 7F06C2F0 8FAA0030 */ lw $t2, 0x30($sp) /* 0A0E24 7F06C2F4 AFA20028 */ sw $v0, 0x28($sp) diff --git a/src/game/objecthandler_2.c b/src/game/objecthandler_2.c index 65c7e99..8f49868 100644 --- a/src/game/objecthandler_2.c +++ b/src/game/objecthandler_2.c @@ -13235,10 +13235,10 @@ glabel sub_GAME_7F0762E0 /* 0AAE50 7F076320 0FC2F495 */ jal get_index_num_of_named_resource /* 0AAE54 7F076324 AFAE0054 */ sw $t6, 0x54($sp) /* 0AAE58 7F076328 AFA20050 */ sw $v0, 0x50($sp) -/* 0AAE5C 7F07632C 0FC2F447 */ jal get_remaining_buffer_for_index +/* 0AAE5C 7F07632C 0FC2F447 */ jal get_rom_remaining_buffer_for_index /* 0AAE60 7F076330 00402025 */ move $a0, $v0 /* 0AAE64 7F076334 00408025 */ move $s0, $v0 -/* 0AAE68 7F076338 0FC2F440 */ jal get_temp_remaining_buffer_for_index +/* 0AAE68 7F076338 0FC2F440 */ jal get_pc_remaining_buffer_for_index /* 0AAE6C 7F07633C 8FA40050 */ lw $a0, 0x50($sp) /* 0AAE70 7F076340 0040F025 */ move $fp, $v0 /* 0AAE74 7F076344 AFA00074 */ sw $zero, 0x74($sp) diff --git a/src/game/objective_status.c b/src/game/objective_status.c index 3bf3b6a..7cd0604 100644 --- a/src/game/objective_status.c +++ b/src/game/objective_status.c @@ -1,8 +1,10 @@ #include "ultra64.h" +#include "bondconstants.h" +#include "bondtypes.h" // bss //CODE.bss:80075D30 -char objective_ptrs[0x28]; +struct objective_entry * objective_ptrs[10]; u32 dword_CODE_bss_80075D58; u32 dword_CODE_bss_80075D5C; char dword_CODE_bss_80075D60[0x20]; @@ -18,15 +20,9 @@ u32 *ptr_last_deposit_in_room_subobject_entry_type21; u32 *ptr_last_photo_obj_in_room_subobject_entry_type1E; // data -s32 num_objective_ptrs[] = {0xFFFFFFFF, 0, 0, 0}; -//file possibly split at sub_CODE_7F057AC0 +s32 num_objective_ptrs[] = {0xFFFFFFFF, 0}; + -//D:80032300 -u32 D_80032300 = 0; -//D:80032304 -u32 D_80032304 = 0; -//D:80032308 -u32 D_80032308 = 0; // rodata const u32 D_80053610[] = {0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -107,9 +103,41 @@ glabel get_handle_to_tagged_object -#ifdef NONMATCHING -void get_ptr_text_for_watch_breifing_page(void) { +#ifdef NONMATCHING +u8 * get_ptr_text_for_watch_breifing_page(WATCH_BRIEFING_PAGE page) +{ + struct watchMenuObjectiveText * curentry; + u8 * textptr; + + textptr = 0; + for (curentry = ptr_last_briefing_setup_entry_type23; curentry != 0; curentry = curentry->nextentry) + { + if (page == curentry->menu) + { + textptr = get_textptr_for_textID(curentry->text); + } + textptr = 0; + } + if (textptr == 0) + { + if (page == 0) + { + textptr = get_textptr_for_textID(0xb029); //"E R R O R\n" + } + else + { + if (page == 1) + { + textptr = get_textptr_for_textID(0xb02a); //"no briefing for this mission\n" + } + else + { + textptr = get_textptr_for_textID(0xb02b); //"\n" + } + } + } + return textptr; } #else GLOBAL_ASM( @@ -170,57 +198,23 @@ glabel get_ptr_text_for_watch_breifing_page -#ifdef NONMATCHING -void add_objective(void) { +s32 add_objective(void) +{ + return num_objective_ptrs[0]+1; } -#else -GLOBAL_ASM( -.text -glabel add_objective -/* 08BCD8 7F0571A8 3C028003 */ lui $v0, %hi(num_objective_ptrs) -/* 08BCDC 7F0571AC 8C4222F0 */ lw $v0, %lo(num_objective_ptrs)($v0) -/* 08BCE0 7F0571B0 03E00008 */ jr $ra -/* 08BCE4 7F0571B4 24420001 */ addiu $v0, $v0, 1 -) -#endif - - -#ifdef NONMATCHING -void get_text_for_objective(void) { - +u8 * get_text_for_objective(int objective) +{ + u8 *textptr; + + if ((objective < 10) && (objective_ptrs[objective] != 0)) { + return get_textptr_for_textID(objective_ptrs[objective]->text); + } + return 0; } -#else -GLOBAL_ASM( -.text -glabel get_text_for_objective -/* 08BCE8 7F0571B8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08BCEC 7F0571BC 2881000A */ slti $at, $a0, 0xa -/* 08BCF0 7F0571C0 1020000B */ beqz $at, .L7F0571F0 -/* 08BCF4 7F0571C4 AFBF0014 */ sw $ra, 0x14($sp) -/* 08BCF8 7F0571C8 00047080 */ sll $t6, $a0, 2 -/* 08BCFC 7F0571CC 3C028007 */ lui $v0, %hi(objective_ptrs) -/* 08BD00 7F0571D0 004E1021 */ addu $v0, $v0, $t6 -/* 08BD04 7F0571D4 8C425D30 */ lw $v0, %lo(objective_ptrs)($v0) -/* 08BD08 7F0571D8 50400006 */ beql $v0, $zero, .L7F0571F4 -/* 08BD0C 7F0571DC 00001025 */ move $v0, $zero -/* 08BD10 7F0571E0 0FC30776 */ jal get_textptr_for_textID -/* 08BD14 7F0571E4 9444000A */ lhu $a0, 0xa($v0) -/* 08BD18 7F0571E8 10000003 */ b .L7F0571F8 -/* 08BD1C 7F0571EC 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0571F0: -/* 08BD20 7F0571F0 00001025 */ move $v0, $zero -.L7F0571F4: -/* 08BD24 7F0571F4 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0571F8: -/* 08BD28 7F0571F8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08BD2C 7F0571FC 03E00008 */ jr $ra -/* 08BD30 7F057200 00000000 */ nop -) -#endif @@ -468,56 +462,23 @@ objective_microcode_type_17_18_1F_default: - - -#ifdef NONMATCHING -void check_objectives_complete(void) { - +u32 check_objectives_complete(void) +{ + DIFFICULTY objdiff; + DIFFICULTY curdiff; + int objective; + + for (objective = 0; objective < add_objective(); objective++) + { + objdiff = get_difficulty_for_objective(objective); + curdiff = get_current_difficulty(); + if ((objdiff <= curdiff) && (get_status_of_objective(objective) != 1)) { + return 0; + } + } + return 1; } -#else -GLOBAL_ASM( -.text -glabel check_objectives_complete -/* 08BFE8 7F0574B8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 08BFEC 7F0574BC AFBF0024 */ sw $ra, 0x24($sp) -/* 08BFF0 7F0574C0 AFB00018 */ sw $s0, 0x18($sp) -/* 08BFF4 7F0574C4 AFB20020 */ sw $s2, 0x20($sp) -/* 08BFF8 7F0574C8 AFB1001C */ sw $s1, 0x1c($sp) -/* 08BFFC 7F0574CC 0FC15C6A */ jal add_objective -/* 08C000 7F0574D0 00008025 */ move $s0, $zero -/* 08C004 7F0574D4 18400013 */ blez $v0, .L7F057524 -/* 08C008 7F0574D8 24120001 */ li $s2, 1 -.L7F0574DC: -/* 08C00C 7F0574DC 0FC15C81 */ jal get_difficulty_for_objective -/* 08C010 7F0574E0 02002025 */ move $a0, $s0 -/* 08C014 7F0574E4 0FC2FF04 */ jal get_current_difficulty -/* 08C018 7F0574E8 00408825 */ move $s1, $v0 -/* 08C01C 7F0574EC 0051082A */ slt $at, $v0, $s1 -/* 08C020 7F0574F0 14200007 */ bnez $at, .L7F057510 -/* 08C024 7F0574F4 00000000 */ nop -/* 08C028 7F0574F8 0FC15C8E */ jal get_status_of_objective -/* 08C02C 7F0574FC 02002025 */ move $a0, $s0 -/* 08C030 7F057500 10520003 */ beq $v0, $s2, .L7F057510 -/* 08C034 7F057504 00000000 */ nop -/* 08C038 7F057508 10000007 */ b .L7F057528 -/* 08C03C 7F05750C 00001025 */ move $v0, $zero -.L7F057510: -/* 08C040 7F057510 0FC15C6A */ jal add_objective -/* 08C044 7F057514 26100001 */ addiu $s0, $s0, 1 -/* 08C048 7F057518 0202082A */ slt $at, $s0, $v0 -/* 08C04C 7F05751C 1420FFEF */ bnez $at, .L7F0574DC -/* 08C050 7F057520 00000000 */ nop -.L7F057524: -/* 08C054 7F057524 24020001 */ li $v0, 1 -.L7F057528: -/* 08C058 7F057528 8FBF0024 */ lw $ra, 0x24($sp) -/* 08C05C 7F05752C 8FB00018 */ lw $s0, 0x18($sp) -/* 08C060 7F057530 8FB1001C */ lw $s1, 0x1c($sp) -/* 08C064 7F057534 8FB20020 */ lw $s2, 0x20($sp) -/* 08C068 7F057538 03E00008 */ jr $ra -/* 08C06C 7F05753C 27BD0028 */ addiu $sp, $sp, 0x28 -) -#endif + #ifdef VERSION_JP void FUN_7f057a40(void) @@ -627,7 +588,7 @@ glabel display_objective_status_text_on_status_change /* 08C1A8 7F057678 0FC30776 */ jal get_textptr_for_textID /* 08C1AC 7F05767C 3404B02D */ li $a0, 45101 /* 08C1B0 7F057680 02602025 */ move $a0, $s3 -/* 08C1B4 7F057684 0C0029FF */ jal string_load_parse_something +/* 08C1B4 7F057684 0C0029FF */ jal string_append_from_obseg_textbank /* 08C1B8 7F057688 00402825 */ move $a1, $v0 /* 08C1BC 7F05768C 10000011 */ b .L7F0576D4 /* 08C1C0 7F057690 00000000 */ nop @@ -637,7 +598,7 @@ glabel display_objective_status_text_on_status_change /* 08C1CC 7F05769C 0FC30776 */ jal get_textptr_for_textID /* 08C1D0 7F0576A0 3404B02E */ li $a0, 45102 /* 08C1D4 7F0576A4 02602025 */ move $a0, $s3 -/* 08C1D8 7F0576A8 0C0029FF */ jal string_load_parse_something +/* 08C1D8 7F0576A8 0C0029FF */ jal string_append_from_obseg_textbank /* 08C1DC 7F0576AC 00402825 */ move $a1, $v0 /* 08C1E0 7F0576B0 10000008 */ b .L7F0576D4 /* 08C1E4 7F0576B4 00000000 */ nop @@ -647,7 +608,7 @@ glabel display_objective_status_text_on_status_change /* 08C1F0 7F0576C0 0FC30776 */ jal get_textptr_for_textID /* 08C1F4 7F0576C4 3404B02F */ li $a0, 45103 /* 08C1F8 7F0576C8 02602025 */ move $a0, $s3 -/* 08C1FC 7F0576CC 0C0029FF */ jal string_load_parse_something +/* 08C1FC 7F0576CC 0C0029FF */ jal string_append_from_obseg_textbank /* 08C200 7F0576D0 00402825 */ move $a1, $v0 .L7F0576D4: /* 08C204 7F0576D4 0FC228F2 */ jal display_string_in_lower_left_corner @@ -776,7 +737,7 @@ glabel display_objective_status_text_on_status_change /* 08C704 7F057B94 0FC30AA2 */ jal get_textptr_for_textID /* 08C708 7F057B98 3404B02D */ li $a0, 45101 /* 08C70C 7F057B9C 02602025 */ move $a0, $s3 -/* 08C710 7F057BA0 0C002A03 */ jal string_load_parse_something +/* 08C710 7F057BA0 0C002A03 */ jal string_append_from_obseg_textbank /* 08C714 7F057BA4 00402825 */ move $a1, $v0 /* 08C718 7F057BA8 10000011 */ b .L7F057BF0 /* 08C71C 7F057BAC 00000000 */ nop @@ -786,7 +747,7 @@ glabel display_objective_status_text_on_status_change /* 08C728 7F057BB8 0FC30AA2 */ jal get_textptr_for_textID /* 08C72C 7F057BBC 3404B02E */ li $a0, 45102 /* 08C730 7F057BC0 02602025 */ move $a0, $s3 -/* 08C734 7F057BC4 0C002A03 */ jal string_load_parse_something +/* 08C734 7F057BC4 0C002A03 */ jal string_append_from_obseg_textbank /* 08C738 7F057BC8 00402825 */ move $a1, $v0 /* 08C73C 7F057BCC 10000008 */ b .L7F057BF0 /* 08C740 7F057BD0 00000000 */ nop @@ -796,10 +757,10 @@ glabel display_objective_status_text_on_status_change /* 08C74C 7F057BDC 0FC30AA2 */ jal get_textptr_for_textID /* 08C750 7F057BE0 3404B02F */ li $a0, 45103 /* 08C754 7F057BE4 02602025 */ move $a0, $s3 -/* 08C758 7F057BE8 0C002A03 */ jal string_load_parse_something +/* 08C758 7F057BE8 0C002A03 */ jal string_append_from_obseg_textbank /* 08C75C 7F057BEC 00402825 */ move $a1, $v0 .L7F057BF0: -/* 08C760 7F057BF0 0FC22B10 */ jal jp_FUN_7f08ac40 +/* 08C760 7F057BF0 0FC22B10 */ jal jp_display_string_in_lower_left_corner /* 08C764 7F057BF4 02602025 */ move $a0, $s3 .L7F057BF8: /* 08C768 7F057BF8 0FC15DC1 */ jal get_difficulty_for_objective diff --git a/src/game/objective_status2.c b/src/game/objective_status2.c index 6f20a2e..859f389 100644 --- a/src/game/objective_status2.c +++ b/src/game/objective_status2.c @@ -1,8 +1,27 @@ #include "ultra64.h" -#ifdef NONMATCHING -void sub_GAME_7F057AC0(void) { +//D:80032300 +u32 D_80032300 = 0; +//D:80032304 +u32 D_80032304 = 0; +//D:80032308 +u32 D_80032308 = 0; +#ifdef NONMATCHING +void sub_GAME_7F057AC0(float *param_1) +{ + float firstrandfinal; + float secondrandfinal; + float thirdrandfinal; + + firstrandfinal = D_80032300; + secondrandfinal = D_80032304; + thirdrandfinal = D_80032308; + firstrandfinal = get_random_value() * 0.00000000 * 6.28318548 * 0.03125000 - 0.09817477; + secondrandfinal = get_random_value() * 0.00000000 * 6.28318548 * 0.03125000 - 0.09817477; + thirdrandfinal = get_random_value() * 0.00000000 * 6.28318548 * 0.03125000 - 0.09817477; + sub_GAME_7F058714(&firstrandfinal,param_1); + return; } #else GLOBAL_ASM( @@ -300,8 +319,14 @@ glabel sub_GAME_7F057D88 #ifdef NONMATCHING -void sub_GAME_7F057DF8(void) { - +void sub_GAME_7F057DF8(float *param_1,float *param_2,int param_3) +{ + int i; + + for (i = 0; 0 < param_3; i++) + { + sub_GAME_7F058098(param_2,param_1); + } } #else GLOBAL_ASM( diff --git a/src/game/prop.c b/src/game/prop.c index 05731cc..035aac3 100644 --- a/src/game/prop.c +++ b/src/game/prop.c @@ -992,7 +992,7 @@ glabel expand_08_obj_set_guard_MP_weapons /* 0372B4 7F002784 2404001C */ li $a0, 28 /* 0372B8 7F002788 53200084 */ beql $t9, $zero, .L7F00299C /* 0372BC 7F00278C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0372C0 7F002790 0FC249EF */ jal sub_GAME_7F0927BC +/* 0372C0 7F002790 0FC249EF */ jal cheatCheckIfOn /* 0372C4 7F002794 AFA7002C */ sw $a3, 0x2c($sp) /* 0372C8 7F002798 10400011 */ beqz $v0, .L7F0027E0 /* 0372CC 7F00279C 8FA7002C */ lw $a3, 0x2c($sp) @@ -1450,7 +1450,7 @@ glabel expand_type_0D_object_autoturret /* 03784C 7F002D1C 460C4282 */ mul.s $f10, $f8, $f12 /* 037850 7F002D20 46025403 */ div.s $f16, $f10, $f2 /* 037854 7F002D24 E6040088 */ swc1 $f4, 0x88($s0) -/* 037858 7F002D28 0C0025C8 */ jal allocate_bytes_in_bank +/* 037858 7F002D28 0C0025C8 */ jal mempAllocBytesInBank /* 03785C 7F002D2C E610008C */ swc1 $f16, 0x8c($s0) /* 037860 7F002D30 2403FFFF */ li $v1, -1 /* 037864 7F002D34 AE0200CC */ sw $v0, 0xcc($s0) @@ -2693,12 +2693,12 @@ glabel proplvreset2 /* 038864 7F003D34 14200004 */ bnez $at, .L7F003D48 /* 038868 7F003D38 3C058005 */ lui $a1, %hi(aMp_) /* 03886C 7F003D3C 24A5EEB0 */ addiu $a1, %lo(aMp_) # addiu $a1, $a1, -0x1150 -/* 038870 7F003D40 0C0029FF */ jal string_load_parse_something +/* 038870 7F003D40 0C0029FF */ jal string_append_from_obseg_textbank /* 038874 7F003D44 02202025 */ move $a0, $s1 .L7F003D48: /* 038878 7F003D48 8E050000 */ lw $a1, ($s0) /* 03887C 7F003D4C 02202025 */ move $a0, $s1 -/* 038880 7F003D50 0C0029FF */ jal string_load_parse_something +/* 038880 7F003D50 0C0029FF */ jal string_append_from_obseg_textbank /* 038884 7F003D54 24A50001 */ addiu $a1, $a1, 1 /* 038888 7F003D58 02202025 */ move $a0, $s1 /* 03888C 7F003D5C 24050001 */ li $a1, 1 @@ -4086,12 +4086,12 @@ glabel jpt_8004F02C /* 0388A4 7F003D34 14200004 */ bnez $at, .L7F003D48 /* 0388A8 7F003D38 3C058005 */ lui $a1, %hi(aMp_) # $a1, 0x8005 /* 0388AC 7F003D3C 24A5EEE0 */ addiu $a1, %lo(aMp_) # addiu $a1, $a1, -0x1120 -/* 0388B0 7F003D40 0C002A03 */ jal string_load_parse_something +/* 0388B0 7F003D40 0C002A03 */ jal string_append_from_obseg_textbank /* 0388B4 7F003D44 02202025 */ move $a0, $s1 .L7F003D48: /* 0388B8 7F003D48 8E050000 */ lw $a1, ($s0) /* 0388BC 7F003D4C 02202025 */ move $a0, $s1 -/* 0388C0 7F003D50 0C002A03 */ jal string_load_parse_something +/* 0388C0 7F003D50 0C002A03 */ jal string_append_from_obseg_textbank /* 0388C4 7F003D54 24A50001 */ addiu $a1, $a1, 1 /* 0388C8 7F003D58 02202025 */ move $a0, $s1 /* 0388CC 7F003D5C 24050001 */ li $a1, 1 diff --git a/src/game/radar.c b/src/game/radar.c index cf6967c..037dc00 100644 --- a/src/game/radar.c +++ b/src/game/radar.c @@ -58,7 +58,7 @@ glabel display_red_blue_on_radar /* 0FAC50 7F0C6120 10000119 */ b .L7F0C6588 /* 0FAC54 7F0C6124 8FA20088 */ lw $v0, 0x88($sp) .L7F0C6128: -/* 0FAC58 7F0C6128 0FC249EF */ jal sub_GAME_7F0927BC +/* 0FAC58 7F0C6128 0FC249EF */ jal cheatCheckIfOn /* 0FAC5C 7F0C612C 24040017 */ li $a0, 23 /* 0FAC60 7F0C6130 10400003 */ beqz $v0, .L7F0C6140 /* 0FAC64 7F0C6134 00000000 */ nop diff --git a/src/game/rsp.c b/src/game/rsp.c index b769dbe..58ca01d 100644 --- a/src/game/rsp.c +++ b/src/game/rsp.c @@ -38,15 +38,12 @@ void something_with_rsp_c_debug(void) { #ifdef NONMATCHING -void allocate_init_rsp_buffers(void) { - ? temp_ret; +void allocate_init_rsp_buffers(void) - // Node 0 - temp_ret = allocate_bytes_in_bank(0xa000, 6); - D_8004E9E8 = temp_ret; - D_8004E9E4 = (s32) (temp_ret + 0xa000); +{ + ptr_rsp_buffer_start = mempAllocBytesInBank(0xa000,'\x06'); + ptr_rspbuffer_end = ptr_rsp_buffer_start + 0xa000; return; - // (possible return value: temp_ret) } #else @@ -56,7 +53,7 @@ glabel allocate_init_rsp_buffers /* 10490C 7F0CFDDC 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 104910 7F0CFDE0 AFBF0014 */ sw $ra, 0x14($sp) /* 104914 7F0CFDE4 3404A000 */ li $a0, 40960 -/* 104918 7F0CFDE8 0C0025C8 */ jal allocate_bytes_in_bank +/* 104918 7F0CFDE8 0C0025C8 */ jal mempAllocBytesInBank /* 10491C 7F0CFDEC 24050006 */ li $a1, 6 /* 104920 7F0CFDF0 8FBF0014 */ lw $ra, 0x14($sp) /* 104924 7F0CFDF4 3C038005 */ lui $v1, %hi(D_8004E9E8) diff --git a/src/game/sin.c b/src/game/sin.c index 9825430..c65e231 100644 --- a/src/game/sin.c +++ b/src/game/sin.c @@ -1,7 +1,8 @@ #include "ultra64.h" - +//these are actaully clever shared asm +//!FIXME move to asm file diff --git a/src/game/spectrum.c b/src/game/spectrum.c index 9249121..0983077 100644 --- a/src/game/spectrum.c +++ b/src/game/spectrum.c @@ -647,7 +647,7 @@ glabel init_spectrum_game /* 107AF8 7F0D2FC8 AFBF0014 */ sw $ra, 0x14($sp) /* 107AFC 7F0D2FCC AFA40018 */ sw $a0, 0x18($sp) /* 107B00 7F0D2FD0 24040100 */ li $a0, 256 -/* 107B04 7F0D2FD4 0C0025C8 */ jal allocate_bytes_in_bank +/* 107B04 7F0D2FD4 0C0025C8 */ jal mempAllocBytesInBank /* 107B08 7F0D2FD8 24050004 */ li $a1, 4 /* 107B0C 7F0D2FDC 3C068009 */ lui $a2, %hi(ptr_pc_keyboard_table_alloc) /* 107B10 7F0D2FE0 24C6E334 */ addiu $a2, %lo(ptr_pc_keyboard_table_alloc) # addiu $a2, $a2, -0x1ccc @@ -684,12 +684,12 @@ glabel init_spectrum_game /* 107B78 7F0D3048 5420FFEB */ bnezl $at, .L7F0D2FF8 /* 107B7C 7F0D304C 00001825 */ move $v1, $zero /* 107B80 7F0D3050 24046000 */ li $a0, 24576 -/* 107B84 7F0D3054 0C0025C8 */ jal allocate_bytes_in_bank +/* 107B84 7F0D3054 0C0025C8 */ jal mempAllocBytesInBank /* 107B88 7F0D3058 24050004 */ li $a1, 4 /* 107B8C 7F0D305C 3C018009 */ lui $at, %hi(ptr_6000alloc) /* 107B90 7F0D3060 AC22E330 */ sw $v0, %lo(ptr_6000alloc)($at) /* 107B94 7F0D3064 24040300 */ li $a0, 768 -/* 107B98 7F0D3068 0C0025C8 */ jal allocate_bytes_in_bank +/* 107B98 7F0D3068 0C0025C8 */ jal mempAllocBytesInBank /* 107B9C 7F0D306C 24050004 */ li $a1, 4 /* 107BA0 7F0D3070 3C038009 */ lui $v1, %hi(ptr_300alloc) /* 107BA4 7F0D3074 2463E32C */ addiu $v1, %lo(ptr_300alloc) # addiu $v1, $v1, -0x1cd4 @@ -704,7 +704,7 @@ glabel init_spectrum_game /* 107BC4 7F0D3094 1420FFFB */ bnez $at, .L7F0D3084 /* 107BC8 7F0D3098 A1A20000 */ sb $v0, ($t5) /* 107BCC 7F0D309C 3C040001 */ lui $a0, 1 -/* 107BD0 7F0D30A0 0C0025C8 */ jal allocate_bytes_in_bank +/* 107BD0 7F0D30A0 0C0025C8 */ jal mempAllocBytesInBank /* 107BD4 7F0D30A4 24050004 */ li $a1, 4 /* 107BD8 7F0D30A8 3C088009 */ lui $t0, %hi(ptr_spectrum_roms) /* 107BDC 7F0D30AC 2508E328 */ addiu $t0, %lo(ptr_spectrum_roms) # addiu $t0, $t0, -0x1cd8 diff --git a/src/game/textrelated.c b/src/game/textrelated.c index 1879418..f12a7b0 100644 --- a/src/game/textrelated.c +++ b/src/game/textrelated.c @@ -49,24 +49,24 @@ s32 D_80040F28 = 0; -void null_init_main(void) { +void null_init_main_7f0acb70(void) { } -void sub_GAME_7F0ACB78(s32 arg0) { - text_spacing = (s32) -arg0; +void setTextSpacingInverted(s32 spacing) { + text_spacing = -spacing; } -void sub_GAME_7F0ACB88(s32 arg0) { - text_orientation = arg0; +void setTextOrientation(s32 orientation) { + text_orientation = orientation; } -void sub_GAME_7F0ACB94(s32 arg0) { - text_wordwrap = arg0; +void setTextWordWrap(s32 flag) { + text_wordwrap = flag; } -void sub_GAME_7F0ACBA0(s32 arg0) { - overlap_correction = arg0; +void setTextOverlapCorrection(s32 flag) { + overlap_correction = flag; } @@ -75,22 +75,23 @@ void sub_GAME_7F0ACBA0(s32 arg0) { #ifdef NONMATCHING -void *load_font_tables(void) { - s32 temp_a2; - ? temp_ret; +void load_font_tables(void) +{ + s32 sp1C; + s32 MACROSIZE; + s32 MACROSIZE; + s32 temp_ret; + s32 temp_ret_2; + s32 i_next; + s32 temp_v1_2; void *temp_v0; - s32 temp_v1; - s32 temp_a2_2; - ? temp_ret_2; void *temp_v0_2; void *temp_v0_3; void *temp_v0_4; void *temp_v0_5; - s32 temp_v1_2; - s32 phi_v1; + s32 i; s32 phi_v1_2; - // Node 0 text_spacing = 0; text_orientation = 0; text_wordwrap = 0; @@ -99,50 +100,43 @@ void *load_font_tables(void) { text_x = 0; text_y = 0; text_s = 0; - temp_a2 = (&0x000024B0 - 0); + MACROSIZE = 0x24b0 - 0; text_t = 0; - temp_ret = allocate_bytes_in_bank(temp_a2, 4, temp_a2); - ptrFirstFontTableSmall = temp_ret; - ptrSecondFontTableSmall = (s32) (temp_ret + 0x2a4); - romCopy(temp_ret, &_fonttablectlsmall1SegmentRomStart, sp1C, &ptrFirstFontTableSmall); - phi_v1 = 0; + ptrFirstFontTableSmall = mempAllocBytesInBank(MACROSIZE, 4); + ptrSecondFontTableSmall = (s32) (ptrFirstFontTableSmall + 0x2a4); + romCopy(&ptrFirstFontTableSmall, &_fonttablectlsmall1SegmentRomStart, MACROSIZE); + i = 0; loop_1: - // Node 1 - temp_v0 = (ptrSecondFontTableSmall + phi_v1); - temp_v1 = (phi_v1 + 0x18); + temp_v0 = ptrSecondFontTableSmall + i; + i_next = i + 0x18; temp_v0->unk14 = (s32) (temp_v0->unk14 + ptrFirstFontTableSmall); - phi_v1 = temp_v1; - if (temp_v1 < 0x8d0) + i = i_next; + if (i_next < 0x8d0) { goto loop_1; } - // Node 2 - temp_a2_2 = (&0x00003540 - 0); - temp_ret_2 = allocate_bytes_in_bank(temp_a2_2, 4, temp_a2_2, &ptrFirstFontTableSmall); - ptrFirstFontTableLarge = temp_ret_2; - ptrSecondFontTableLarge = (void *) (temp_ret_2 + 0x2a4); - romCopy(temp_ret_2, &_fonttablectllarge1SegmentRomStart, sp1C, &ptrFirstFontTableLarge); + MACROSIZE = 0x3540 - 0; + ptrFirstFontTableLarge = mempAllocBytesInBank(MACROSIZE, 4); + ptrSecondFontTableLarge = (s32) (ptrFirstFontTableLarge + 0x2a4); + romCopy(&ptrFirstFontTableLarge, &_fonttablectllarge1SegmentRomStart, MACROSIZE); ptrSecondFontTableLarge->unk14 = (s32) (ptrSecondFontTableLarge->unk14 + ptrFirstFontTableLarge); ptrSecondFontTableLarge->unk2C = (s32) (ptrSecondFontTableLarge->unk2C + ptrFirstFontTableLarge); phi_v1_2 = 0x30; loop_3: - // Node 3 - temp_v0_2 = (ptrSecondFontTableLarge + phi_v1_2); + temp_v0_2 = ptrSecondFontTableLarge + phi_v1_2; temp_v0_2->unk14 = (s32) (temp_v0_2->unk14 + ptrFirstFontTableLarge); - temp_v0_3 = (ptrSecondFontTableLarge + phi_v1_2); + temp_v0_3 = ptrSecondFontTableLarge + phi_v1_2; temp_v0_3->unk2C = (s32) (temp_v0_3->unk2C + ptrFirstFontTableLarge); - temp_v0_4 = (ptrSecondFontTableLarge + phi_v1_2); + temp_v0_4 = ptrSecondFontTableLarge + phi_v1_2; temp_v0_4->unk44 = (s32) (temp_v0_4->unk44 + ptrFirstFontTableLarge); - temp_v0_5 = (ptrSecondFontTableLarge + phi_v1_2); - temp_v1_2 = (phi_v1_2 + 0x60); + temp_v0_5 = ptrSecondFontTableLarge + phi_v1_2; + temp_v1_2 = phi_v1_2 + 0x60; temp_v0_5->unk5C = (s32) (temp_v0_5->unk5C + ptrFirstFontTableLarge); phi_v1_2 = temp_v1_2; if (temp_v1_2 != 0x8d0) { goto loop_3; } - // Node 4 - return temp_v0_5; } #else GLOBAL_ASM( @@ -176,7 +170,7 @@ glabel load_font_tables /* 0E1740 7F0ACC10 AC200EA4 */ sw $zero, %lo(text_t)($at) /* 0E1744 7F0ACC14 00C02025 */ move $a0, $a2 /* 0E1748 7F0ACC18 AFA6001C */ sw $a2, 0x1c($sp) -/* 0E174C 7F0ACC1C 0C0025C8 */ jal allocate_bytes_in_bank +/* 0E174C 7F0ACC1C 0C0025C8 */ jal mempAllocBytesInBank /* 0E1750 7F0ACC20 24050004 */ li $a1, 4 /* 0E1754 7F0ACC24 3C078004 */ lui $a3, %hi(ptrFirstFontTableSmall) /* 0E1758 7F0ACC28 3C088004 */ lui $t0, %hi(ptrSecondFontTableSmall) @@ -212,7 +206,7 @@ glabel load_font_tables /* 0E17CC 7F0ACC9C 01AE3023 */ subu $a2, $t5, $t6 /* 0E17D0 7F0ACCA0 00C02025 */ move $a0, $a2 /* 0E17D4 7F0ACCA4 AFA6001C */ sw $a2, 0x1c($sp) -/* 0E17D8 7F0ACCA8 0C0025C8 */ jal allocate_bytes_in_bank +/* 0E17D8 7F0ACCA8 0C0025C8 */ jal mempAllocBytesInBank /* 0E17DC 7F0ACCAC 24050004 */ li $a1, 4 /* 0E17E0 7F0ACCB0 3C078004 */ lui $a3, %hi(ptrFirstFontTableLarge) /* 0E17E4 7F0ACCB4 3C088004 */ lui $t0, %hi(ptrSecondFontTableLarge) @@ -281,8 +275,37 @@ glabel load_font_tables #ifdef NONMATCHING -void microcode_constructor(void) { +void microcode_constructor(u32 *DL) +{ + DL[0] = 0xe7000000; //rdp_pipesync + DL[1] = 0; + DL[2] = 0xba001402; //rsp_uc05_setothermode_h + DL[3] = 0; + DL[5] = 0xc0; + DL[4] = 0xba000602; //rsp_uc05_setothermode_h + DL[6] = 0xb900031d; //rsp_uc05_setothermode_l + DL[7] = 0x5041c8; + DL[8] = 0xfcff97ff; //rdp_setcombine + DL[9] = 0xff2dfeff; //rdp_setcolourimage + DL[10] = 0xba001301; //rsp_uc05_setothermode_h + DL[0xb] = 0; + DL[0xc] = 0xb9000002; //rsp_uc05_setothermode_l + DL[0xd] = 0; + DL[0xe] = 0xba001001; //rsp_uc05_setothermode_h + DL[0xf] = 0; + DL[0x11] = 0xc00; + DL[0x10] = 0xba000903; //rsp_uc05_setothermode_h + DL[0x12] = 0xba000e02; //rsp_uc05_setothermode_h + DL[0x13] = 0; + if (text_bilevel_filter != 0) { + DL[0x15] = 0x3000; + DL[0x14] = 0xba000c02; //rsp_uc05_setothermode_h + return; + } + DL[0x15] = 0x2000; + DL[0x14] = 0xba000c02; //rsp_uc05_setothermode_h + return; } #else GLOBAL_ASM( diff --git a/src/game/unk_057FD0.c b/src/game/unk_057FD0.c index 0abab10..be92c2f 100644 --- a/src/game/unk_057FD0.c +++ b/src/game/unk_057FD0.c @@ -20,13 +20,13 @@ f32 D_80032314 = 65536.0; #ifdef NONMATCHING -void init_0x40_bytes_data_at_address_last_word_1_0(void) { +void reset_array_of_0x10_floats(void) { } #else GLOBAL_ASM( .text -glabel init_0x40_bytes_data_at_address_last_word_1_0 +glabel reset_array_of_0x10_floats /* 08CB00 7F057FD0 44801000 */ mtc1 $zero, $f2 /* 08CB04 7F057FD4 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 08CB08 7F057FD8 44810000 */ mtc1 $at, $f0 @@ -966,7 +966,7 @@ glabel init_something_copy_posdata_to_it /* 08D498 7F058968 AFBF0014 */ sw $ra, 0x14($sp) /* 08D49C 7F05896C AFA40018 */ sw $a0, 0x18($sp) /* 08D4A0 7F058970 AFA5001C */ sw $a1, 0x1c($sp) -/* 08D4A4 7F058974 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 08D4A4 7F058974 0FC15FF4 */ jal reset_array_of_0x10_floats /* 08D4A8 7F058978 00A02025 */ move $a0, $a1 /* 08D4AC 7F05897C 8FA40018 */ lw $a0, 0x18($sp) /* 08D4B0 7F058980 0FC16266 */ jal copies_first_3_floats_from_a0_to_a1_plus_0x30 @@ -2583,7 +2583,7 @@ glabel sub_GAME_7F059B58 /* 08E7F4 7F059CC4 10000003 */ b .L7F059CD4 /* 08E7F8 7F059CC8 E606003C */ swc1 $f6, 0x3c($s0) .L7F059CCC: -/* 08E7FC 7F059CCC 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 08E7FC 7F059CCC 0FC15FF4 */ jal reset_array_of_0x10_floats /* 08E800 7F059CD0 02002025 */ move $a0, $s0 .L7F059CD4: /* 08E804 7F059CD4 8FBF0024 */ lw $ra, 0x24($sp) diff --git a/src/game/unk_08DBB0.c b/src/game/unk_08DBB0.c index eb0ad9a..1083d06 100644 --- a/src/game/unk_08DBB0.c +++ b/src/game/unk_08DBB0.c @@ -767,7 +767,7 @@ glabel sub_GAME_7F08E240 /* 0C2F7C 7F08E44C 8E040000 */ lw $a0, ($s0) /* 0C2F80 7F08E450 0FC1B5AC */ jal subcalcpos /* 0C2F84 7F08E454 24840598 */ addiu $a0, $a0, 0x598 -/* 0C2F88 7F08E458 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0C2F88 7F08E458 0FC15FF4 */ jal reset_array_of_0x10_floats /* 0C2F8C 7F08E45C 27A40040 */ addiu $a0, $sp, 0x40 /* 0C2F90 7F08E460 8E020000 */ lw $v0, ($s0) /* 0C2F94 7F08E464 27AC0040 */ addiu $t4, $sp, 0x40 @@ -941,7 +941,7 @@ glabel sub_GAME_7F08E240 /* 0C3224 7F08E6F4 AC4004F0 */ sw $zero, 0x4f0($v0) /* 0C3228 7F08E6F8 0FC23859 */ jal sub_GAME_7F08E164 /* 0C322C 7F08E6FC C42C532C */ lwc1 $f12, %lo(D_8005532C)($at) -/* 0C3230 7F08E700 0FC227B5 */ jal get_BONDdata_field19C +/* 0C3230 7F08E700 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 0C3234 7F08E704 00000000 */ nop /* 0C3238 7F08E708 3C018005 */ lui $at, %hi(D_80055330) /* 0C323C 7F08E70C C4285330 */ lwc1 $f8, %lo(D_80055330)($at) @@ -988,7 +988,7 @@ glabel sub_GAME_7F08E240 /* 0C32DC 7F08E7AC 24840564 */ addiu $a0, $a0, 0x564 /* 0C32E0 7F08E7B0 0FC16B80 */ jal sub_GAME_7F05AE00 /* 0C32E4 7F08E7B4 24A50570 */ addiu $a1, $a1, 0x570 -/* 0C32E8 7F08E7B8 0FC227B5 */ jal get_BONDdata_field19C +/* 0C32E8 7F08E7B8 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 0C32EC 7F08E7BC 00000000 */ nop /* 0C32F0 7F08E7C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C32F4 7F08E7C4 44813000 */ mtc1 $at, $f6 @@ -998,7 +998,7 @@ glabel sub_GAME_7F08E240 /* 0C3304 7F08E7D4 46004402 */ mul.s $f16, $f8, $f0 /* 0C3308 7F08E7D8 46103480 */ add.s $f18, $f6, $f16 /* 0C330C 7F08E7DC 46122282 */ mul.s $f10, $f4, $f18 -/* 0C3310 7F08E7E0 0FC227B5 */ jal get_BONDdata_field19C +/* 0C3310 7F08E7E0 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 0C3314 7F08E7E4 E7AA00D0 */ swc1 $f10, 0xd0($sp) /* 0C3318 7F08E7E8 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C331C 7F08E7EC 44814000 */ mtc1 $at, $f8 @@ -1022,7 +1022,7 @@ glabel sub_GAME_7F08E240 /* 0C3364 7F08E834 2484057C */ addiu $a0, $a0, 0x57c /* 0C3368 7F08E838 0FC16B80 */ jal sub_GAME_7F05AE00 /* 0C336C 7F08E83C 24A50588 */ addiu $a1, $a1, 0x588 -/* 0C3370 7F08E840 0FC227B5 */ jal get_BONDdata_field19C +/* 0C3370 7F08E840 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 0C3374 7F08E844 00000000 */ nop /* 0C3378 7F08E848 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C337C 7F08E84C 44813000 */ mtc1 $at, $f6 @@ -1032,7 +1032,7 @@ glabel sub_GAME_7F08E240 /* 0C338C 7F08E85C 46004402 */ mul.s $f16, $f8, $f0 /* 0C3390 7F08E860 46103480 */ add.s $f18, $f6, $f16 /* 0C3394 7F08E864 46122282 */ mul.s $f10, $f4, $f18 -/* 0C3398 7F08E868 0FC227B5 */ jal get_BONDdata_field19C +/* 0C3398 7F08E868 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 0C339C 7F08E86C E7AA00C4 */ swc1 $f10, 0xc4($sp) /* 0C33A0 7F08E870 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0C33A4 7F08E874 44814000 */ mtc1 $at, $f8 @@ -1274,7 +1274,7 @@ glabel sub_GAME_7F08EAF8 /* 0C3638 7F08EB08 8DCF04E8 */ lw $t7, 0x4e8($t6) /* 0C363C 7F08EB0C 05E2002B */ bltzl $t7, .L7F08EBBC /* 0C3640 7F08EB10 44800000 */ mtc1 $zero, $f0 -/* 0C3644 7F08EB14 0FC227B5 */ jal get_BONDdata_field19C +/* 0C3644 7F08EB14 0FC227B5 */ jal get_BONDdata_bondfadefracnew /* 0C3648 7F08EB18 00000000 */ nop /* 0C364C 7F08EB1C 3C018005 */ lui $at, %hi(D_80055338) /* 0C3650 7F08EB20 C4245338 */ lwc1 $f4, %lo(D_80055338)($at) diff --git a/src/game/unk_091080.c b/src/game/unk_091080.c index 50dcb11..cfc205f 100644 --- a/src/game/unk_091080.c +++ b/src/game/unk_091080.c @@ -393,7 +393,7 @@ glabel sub_GAME_7F091080 /* 0C6044 7F091514 A4387054 */ sh $t8, %lo(D_80037054)($at) /* 0C6048 7F091518 3C014270 */ li $at, 0x42700000 # 60.000000 /* 0C604C 7F09151C 44816000 */ mtc1 $at, $f12 -/* 0C6050 7F091520 0FC26C85 */ jal sub_GAME_7F09B214 +/* 0C6050 7F091520 0FC26C85 */ jal set_cur_player_fovy /* 0C6054 7F091524 00000000 */ nop /* 0C6058 7F091528 3C028008 */ lui $v0, %hi(dword_CODE_bss_80079E20) /* 0C605C 7F09152C 24429E20 */ addiu $v0, %lo(dword_CODE_bss_80079E20) # addiu $v0, $v0, -0x61e0 diff --git a/src/game/unk_092E50.c b/src/game/unk_092E50.c index 498c7d6..21c87a9 100644 --- a/src/game/unk_092E50.c +++ b/src/game/unk_092E50.c @@ -1,5 +1,5 @@ #include "ultra64.h" - +#include "game/unk_092E50.h" // bss //CODE.bss:80079E80 f32 flt_CODE_bss_80079E80; @@ -31,7 +31,9 @@ u64 MipMap2C_Something2_Setup[] = { //End Dl means this gfx list cannot go any further. perhaps below is a vtx array? u32 D_8003FD90 = 0; -u32 D_8003FD94[] = {0, 0, 0, 0, 0xFFFFFFFF}; +f32 D_8003FD94[] = {0, 0, 0}; +u32 D_8003FDA0 = 0; +u32 D_8003FDA4 = 0xFFFFFFFF; //D:D_8003FDA8 u64 D_8003FDA8[] = { 0x100, 0, 0, 0, diff --git a/src/game/unk_092E50.h b/src/game/unk_092E50.h new file mode 100644 index 0000000..a8dea11 --- /dev/null +++ b/src/game/unk_092E50.h @@ -0,0 +1,9 @@ +#ifndef _UNK_092E50_H_ +#define _UNK_092E50_H_ +#include "ultra64.h" + + +extern f32 D_8003FD94[]; + + +#endif diff --git a/src/game/unk_093880.c b/src/game/unk_093880.c index d21da4a..66a4a6e 100644 --- a/src/game/unk_093880.c +++ b/src/game/unk_093880.c @@ -1,6 +1,8 @@ #include "ultra64.h" #include "game/unk_093880.h" +#include "game/unk_092E50.h" #include "game/bond.h" +#include "game/lvl.h" // bss s32 copyof_stagenum; @@ -17,7 +19,7 @@ struct player_data player3_player_data; struct player_data player4_player_data; struct Player *pPlayer; -struct player_data *cur_player_stat_ptr; +struct player_data *pPlayersPerm; s32 player_num; s32 random_byte; s32 dword_CODE_bss_8007A0C0; @@ -528,7 +530,7 @@ glabel sub_GAME_7F093C48 -f32 sub_GAME_7F093C88(f32 arg0) { +f32 addpoint5tofloat(f32 arg0) { return (f32) (s32) (arg0 + 0.5f); } @@ -1102,53 +1104,18 @@ glabel sub_GAME_7F094298 -void sub_GAME_7F09442C(s32 stagenum) { +void store_stagenum_to_copyof_stagenum(s32 stagenum) { copyof_stagenum = stagenum; } - - - - -#ifdef NONMATCHING -f32 sub_GAME_7F094438(void) { - // Node 0 - D_8003FD94 = (f32) (D_8003FD94 + (f32) clock_timer); - if (D_8003FD94 > 4096.0f) +void sub_GAME_7F094438(void) +{ + D_8003FD94[0] = (clock_timer + D_8003FD94[0]); + if ( D_8003FD94[0] > 4096.0f) { - // Node 1 - D_8003FD94 = (f32) (D_8003FD94 - 4096.0f); + D_8003FD94[0] -= 4096.0f; } - // Node 2 - return D_8003FD94; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F094438 -/* 0C8F68 7F094438 3C0E8005 */ lui $t6, %hi(clock_timer) -/* 0C8F6C 7F09443C 8DCE8374 */ lw $t6, %lo(clock_timer)($t6) -/* 0C8F70 7F094440 3C028004 */ lui $v0, %hi(D_8003FD94) -/* 0C8F74 7F094444 2442FD94 */ addiu $v0, %lo(D_8003FD94) # addiu $v0, $v0, -0x26c -/* 0C8F78 7F094448 448E3000 */ mtc1 $t6, $f6 -/* 0C8F7C 7F09444C C4440000 */ lwc1 $f4, ($v0) -/* 0C8F80 7F094450 3C014580 */ li $at, 0x45800000 # 4096.000000 -/* 0C8F84 7F094454 46803220 */ cvt.s.w $f8, $f6 -/* 0C8F88 7F094458 44811000 */ mtc1 $at, $f2 -/* 0C8F8C 7F09445C 46082280 */ add.s $f10, $f4, $f8 -/* 0C8F90 7F094460 E44A0000 */ swc1 $f10, ($v0) -/* 0C8F94 7F094464 C4400000 */ lwc1 $f0, ($v0) -/* 0C8F98 7F094468 4600103C */ c.lt.s $f2, $f0 -/* 0C8F9C 7F09446C 00000000 */ nop -/* 0C8FA0 7F094470 45000003 */ bc1f .L7F094480 -/* 0C8FA4 7F094474 00000000 */ nop -/* 0C8FA8 7F094478 46020401 */ sub.s $f16, $f0, $f2 -/* 0C8FAC 7F09447C E4500000 */ swc1 $f16, ($v0) -.L7F094480: -/* 0C8FB0 7F094480 03E00008 */ jr $ra -/* 0C8FB4 7F094484 00000000 */ nop -) -#endif @@ -4925,7 +4892,7 @@ glabel sub_GAME_7F097818 /* 0CC744 7F097C14 00000000 */ nop /* 0CC748 7F097C18 46044302 */ mul.s $f12, $f8, $f4 /* 0CC74C 7F097C1C 460A1181 */ sub.s $f6, $f2, $f10 -/* 0CC750 7F097C20 0FC24F22 */ jal sub_GAME_7F093C88 +/* 0CC750 7F097C20 0FC24F22 */ jal addpoint5tofloat /* 0CC754 7F097C24 E7A6037C */ swc1 $f6, 0x37c($sp) /* 0CC758 7F097C28 3C013900 */ li $at, 0x39000000 # 0.000122 /* 0CC75C 7F097C2C 44815000 */ mtc1 $at, $f10 @@ -4939,7 +4906,7 @@ glabel sub_GAME_7F097818 /* 0CC77C 7F097C4C 44815000 */ mtc1 $at, $f10 /* 0CC780 7F097C50 00000000 */ nop /* 0CC784 7F097C54 460A4302 */ mul.s $f12, $f8, $f10 -/* 0CC788 7F097C58 0FC24F22 */ jal sub_GAME_7F093C88 +/* 0CC788 7F097C58 0FC24F22 */ jal addpoint5tofloat /* 0CC78C 7F097C5C E7A60408 */ swc1 $f6, 0x408($sp) /* 0CC790 7F097C60 3C013900 */ li $at, 0x39000000 # 0.000122 /* 0CC794 7F097C64 44812000 */ mtc1 $at, $f4 @@ -7536,8 +7503,16 @@ glabel sub_GAME_7F098A2C #ifdef NONMATCHING -void default_player_perspective_and_height(void) { - +void default_player_perspective_and_height(void) +{ + player1_playerdata[0].handicap = 1.00000000; + player1_playerdata[0].player_perspective_height = 1.00000000; + player1_playerdata[1].handicap = 1.00000000; + player1_playerdata[1].player_perspective_height = 1.00000000; + player1_playerdata[2].handicap = 1.00000000; + player1_playerdata[2].player_perspective_height = 1.00000000; + player1_playerdata[3].handicap = 1.00000000; + player1_playerdata[3].player_perspective_height = 1.00000000; } #else GLOBAL_ASM( @@ -7570,8 +7545,20 @@ glabel default_player_perspective_and_height #ifdef NONMATCHING -void reset_play_data_ptrs(void) { - +void reset_play_data_ptrs(void) +{ + ptr_BONDdata_p1[0] = NULL; + ptr_BONDdata_p1[1] = NULL; + ptr_BONDdata_p1[2] = NULL; + ptr_BONDdata_p1[3] = NULL; + pPlayer = NULL; + pPlayersPerm = NULL; + player_num = 0; + random_byte = 0; + DAT_8007a0c0 = 0; + DAT_8007a0c4 = 1; + DAT_8007a0c8 = 2; + DAT_8007a0cc = 3; } #else GLOBAL_ASM( @@ -7585,8 +7572,8 @@ glabel reset_play_data_ptrs /* 0CEE70 7F09A340 AC40000C */ sw $zero, 0xc($v0) /* 0CEE74 7F09A344 3C018008 */ lui $at, %hi(pPlayer) /* 0CEE78 7F09A348 AC20A0B0 */ sw $zero, %lo(pPlayer)($at) -/* 0CEE7C 7F09A34C 3C018008 */ lui $at, %hi(cur_player_stat_ptr) -/* 0CEE80 7F09A350 AC20A0B4 */ sw $zero, %lo(cur_player_stat_ptr)($at) +/* 0CEE7C 7F09A34C 3C018008 */ lui $at, %hi(pPlayersPerm) +/* 0CEE80 7F09A350 AC20A0B4 */ sw $zero, %lo(pPlayersPerm)($at) /* 0CEE84 7F09A354 3C018008 */ lui $at, %hi(player_num) /* 0CEE88 7F09A358 AC20A0B8 */ sw $zero, %lo(player_num)($at) /* 0CEE8C 7F09A35C 3C038008 */ lui $v1, %hi(dword_CODE_bss_8007A0C0) @@ -7607,10 +7594,31 @@ glabel reset_play_data_ptrs - #ifdef NONMATCHING -void init_player_data_ptrs_construct_viewports(void) { +void init_player_data_ptrs_construct_viewports(int playercount) +{ + int player; + + ptr_BONDdata_p1[0] = NULL; + ptr_BONDdata_p1[1] = NULL; + ptr_BONDdata_p1[2] = NULL; + ptr_BONDdata_p1[3] = NULL; + random_byte = get_random_value() & 0xff; + if (playercount < 1) { + initBONDdataforPlayer(0); + set_cur_player(0); + set_cur_player_screen_size( get_video2_settings_width(), get_video2_settings_height() ); + set_cur_player_viewport_size( get_video2_settings_ulx(), get_video2_settings_uly() ); + } + else { + for (player = 0; player != playercount; player++) + { + initBONDdataforPlayer(player); + } + set_cur_player(0); + } + return; } #else GLOBAL_ASM( @@ -7682,8 +7690,21 @@ glabel init_player_data_ptrs_construct_viewports #ifdef NONMATCHING -void get_num_players(void) { - +u32 get_num_players(void) +{ + u32 uVar1; + + uVar1 = (u32)(ptr_BONDdata_p1[0] != NULL); + if (ptr_BONDdata_p1[1] != NULL) { + uVar1 = (uint)(ptr_BONDdata_p1[0] != NULL) + 1; + } + if (ptr_BONDdata_p1[2] != NULL) { + uVar1 = uVar1 + 1; + } + if (ptr_BONDdata_p1[3] != NULL) { + uVar1 = uVar1 + 1; + } + return uVar1; } #else GLOBAL_ASM( @@ -7723,8 +7744,393 @@ glabel get_num_players #ifdef NONMATCHING -void initBONDdataforPlayer(void) { - +void initBONDdataforPlayer(PLAYER_ID player) +{ + int iVar1; + int iVar2; + Player **ppPVar3; + int *dest; + int *src; + int *src_next; + Player *pPVar4; + int array234undefined4 [234]; + int iStack4; + f32 temp_3f36e15f8e; + + src = init_BONDdata_related_8003fda0; + dest = array234undefined4; + do { + src_next = src + 3; + *dest = *src; + dest[1] = src[1]; + dest[2] = src[2]; + src = src_next; + dest = dest + 3; + } while (src_next != (int *)0x80040148); + pPVar4 = (Player *)mempAllocBytesInBank(0x2a80,4); + ppPVar3 = ptr_BONDdata_p1 + player; + *ppPVar3 = pPVar4; + pPVar4->unknown = 0; + (*ppPVar3)->xpos = 0.00000000; + (*ppPVar3)->ypos = 0.00000000; + (*ppPVar3)->zpos = 0.00000000; + (*ppPVar3)->xpos2 = 0.00000000; + (*ppPVar3)->ypos2 = 0.00000000; + (*ppPVar3)->zpos2 = 1.00000000; + (*ppPVar3)->xoffset = 0.00000000; + (*ppPVar3)->yoffset = 1.00000000; + (*ppPVar3)->zoffset = 0.00000000; + (*ppPVar3)->xpos3 = 0.00000000; + (*ppPVar3)->ypos3 = 0.00000000; + (*ppPVar3)->zpos3 = 0.00000000; + (*ppPVar3)->room_pointer = 0; + (*ppPVar3)->current_model_xpos = 0.00000000; + (*ppPVar3)->current_model_ypos = 0.00000000; + (*ppPVar3)->current_model_zpos = 0.00000000; + (*ppPVar3)->previous_model_xpos = 0.00000000; + (*ppPVar3)->previous_model_ypos = 0.00000000; + (*ppPVar3)->previous_model_zpos = 0.00000000; + (*ppPVar3)->current_room_xpos = 0.00000000; + (*ppPVar3)->current_room_ypos = 0.00000000; + (*ppPVar3)->current_room_zpos = 0.00000000; + (*ppPVar3)->field_6C = 0.00000000; + (*ppPVar3)->field_70 = 0.00000000; + (*ppPVar3)->clipping_height = 0.00000000; + (*ppPVar3)->field_78 = 0.00000000; + (*ppPVar3)->field_7C = 0.00000000; + (*ppPVar3)->field_80 = 0.00000000; + (*ppPVar3)->field_84 = 0.00000000; + (*ppPVar3)->field_88 = 0.00000000; + (*ppPVar3)->field_8C = 0; + (*ppPVar3)->field_90 = 0.00000000; + (*ppPVar3)->field_94 = 0; + (*ppPVar3)->field_98 = 0.00000000; + (*ppPVar3)->field_1274 = 0.00000000; + (*ppPVar3)->field_1278 = 0.00000000; + (*ppPVar3)->field_127C = 0.00000000; + (*ppPVar3)->crouchposition = 2; + (*ppPVar3)->field_29FC = 2; + (*ppPVar3)->ducking_height_offset = 0.00000000; + (*ppPVar3)->field_A4 = 0.00000000; + (*ppPVar3)->position_data_pointer = 0; + (*ppPVar3)->field_AC = 1; + (*ppPVar3)->field_D0 = 0; + (*ppPVar3)->ptr_char_objectinstance = 0; + (*ppPVar3)->bonddead = 0; + (*ppPVar3)->bondhealth = 1.00000000; + (*ppPVar3)->bondarmour = 0.00000000; + (*ppPVar3)->oldhealth = 1.00000000; + (*ppPVar3)->oldarmour = 0.00000000; + (*ppPVar3)->apparenthealth = 1.00000000; + (*ppPVar3)->apparentarmour = 0.00000000; + (*ppPVar3)->damageshowtime = -1; + (*ppPVar3)->healthshowtime = -1; + (*ppPVar3)->field_104 = 0; + (*ppPVar3)->field_108 = 0; + (*ppPVar3)->field_10C = 0; + (*ppPVar3)->movecentrerelease = 0; + (*ppPVar3)->lookaheadcentreenabled = 1; + (*ppPVar3)->automovecentreenabled = 1; + (*ppPVar3)->fastmovecentreenabled = 0; + (*ppPVar3)->automovecentre = 1; + (*ppPVar3)->insightaimmode = 0; + (*ppPVar3)->autoyaimenabled = 1; + (*ppPVar3)->autoaimy = 0.00000000; + (*ppPVar3)->autoyaimtime = 0; + (*ppPVar3)->autoyaimtime60 = -1; + (*ppPVar3)->autoxaimenabled = 1; + (*ppPVar3)->autoaimx = 0.00000000; + (*ppPVar3)->autoxaimtime = 0; + (*ppPVar3)->autoxaimtime60 = -1; + (*ppPVar3)->vv_theta = 0.00000000; + (*ppPVar3)->speedtheta = 0.00000000; + (*ppPVar3)->vv_costheta = 1.00000000; + (*ppPVar3)->vv_sintheta = 0.00000000; + (*ppPVar3)->vv_verta = -4.00000000; + (*ppPVar3)->vv_verta360 = -229.18310547; + (*ppPVar3)->speedverta = 0.00000000; + (*ppPVar3)->vv_cosverta = 1.00000000; + (*ppPVar3)->vv_sinverta = 0.00000000; + (*ppPVar3)->speedsideways = 0.00000000; + (*ppPVar3)->speedstrafe = 0.00000000; + (*ppPVar3)->speedforwards = 0.00000000; + (*ppPVar3)->field_2A4C = 0.00000000; + (*ppPVar3)->speedboost = 1.00000000; + (*ppPVar3)->boost_factor_x = 0.00000000; + (*ppPVar3)->boost_factor_y = 0.00000000; + (*ppPVar3)->boost_factor_z = 0.00000000; + (*ppPVar3)->viewport_alpha = -1.00000000; + (*ppPVar3)->bondfadetime60 = -1.00000000; + (*ppPVar3)->bondfadetimemax = 0.00000000; + (*ppPVar3)->bondfadefracold = 0.00000000; + (*ppPVar3)->bondfadefracnew = 0.00000000; + (*ppPVar3)->field_1A0 = 0; + (*ppPVar3)->field_1C0 = 0; + (*ppPVar3)->field_1C4 = 0; + (*ppPVar3)->pause_animation_state = 0; + (*ppPVar3)->paused_flag = 1; + (*ppPVar3)->open_close_solo_watch_menu = 0; + (*ppPVar3)->field_1D4 = 0.00000000; + (*ppPVar3)->field_1D8 = 0.00000000; + (*ppPVar3)->pause_watch_position = -25.00000000; + (*ppPVar3)->field_1E0 = 0.00000000; + (*ppPVar3)->field_1E4 = 1.00000000; + (*ppPVar3)->field_1E8 = 0.00000000; + (*ppPVar3)->field_1EC = 0.00000000; + (*ppPVar3)->field_1F0 = 0.00000000; + (*ppPVar3)->field_1F4 = 1.00000000; + (*ppPVar3)->pausing_flag = 0; + (*ppPVar3)->pause_starting_angle = 0.00000000; + (*ppPVar3)->field_208 = 0.00000000; + (*ppPVar3)->pause_target_angle = 0.00000000; + (*ppPVar3)->field_210 = 0.00000000; + (*ppPVar3)->field_214 = 0.00000000; + (*ppPVar3)->field_218 = 0; + (*ppPVar3)->field_21C = 1; + (*ppPVar3)->step_in_view_watch_animation = 0; + (*ppPVar3)->pause_animation_counter = 0.00000000; + (*ppPVar3)->field_3B4 = 0; + (*ppPVar3)->field_3B6 = 0; + (*ppPVar3)->field_3B8 = 0.00000000; + (*ppPVar3)->field_3BC = 0.00000000; + *(float *)&(*ppPVar3)->field_3C0 = 9.99999809; + (*ppPVar3)->field_3C4 = 0.00000000; + (*ppPVar3)->field_3C8 = 0.00000000; + (*ppPVar3)->field_3CC = 1.00000000; + (*ppPVar3)->tint_red = 0xff; + (*ppPVar3)->tint_green = 0xff; + (*ppPVar3)->tint_blue = 0xff; + (*ppPVar3)->tint_alpha = 0.00000000; + (*ppPVar3)->field_3E0 = -1.00000000; + (*ppPVar3)->timer_for_fade = -1.00000000; + (*ppPVar3)->field_3E8 = 0xff; + (*ppPVar3)->field_3EC = 0xff; + (*ppPVar3)->field_3F0 = 0xff; + (*ppPVar3)->field_3F4 = 0xff; + (*ppPVar3)->field_3F8 = 0xff; + (*ppPVar3)->field_3FC = 0xff; + (*ppPVar3)->field_400 = 0.00000000; + (*ppPVar3)->field_404 = 0.00000000; + (*ppPVar3)->cuff_value = CUFF_BLUE; + (*ppPVar3)->field_420 = 1; + (*ppPVar3)->field_424 = 0; + (*ppPVar3)->field_428 = 0; + (*ppPVar3)->field_42C = 2; + (*ppPVar3)->controlstyle = 0; + (*ppPVar3)->field_4DC = 1; + (*ppPVar3)->field_4E0 = 1; + (*ppPVar3)->field_4E4 = 1; + (*ppPVar3)->field_4E8 = 0; + (*ppPVar3)->field_4EC = 0.93000001; + (*ppPVar3)->field_4F0 = 0; + (*ppPVar3)->field_4F4 = 1.00000000; + (*ppPVar3)->field_4F8 = 1.00000000; + (*ppPVar3)->scaled_velocity = 0.00000000; + (*ppPVar3)->field_500 = 0.00000000; + (*ppPVar3)->field_504 = 0.00000000; + (*ppPVar3)->field_508 = 0.00000000; + (*ppPVar3)->field_50C = 0.00000000; + (*ppPVar3)->field_510 = 1.00000000; + (*ppPVar3)->field_514 = 0.00000000; + (*ppPVar3)->field_518 = 1.00000000; + (*ppPVar3)->field_51C = 0.00000000; + (*ppPVar3)->velocity = 0.00000000; + (*ppPVar3)->field_524 = 0.00000000; + (*ppPVar3)->field_528 = 0.00000000; + (*ppPVar3)->field_52C = 0.00000000; + (*ppPVar3)->field_530 = 0.00000000; + *(f32 *)&(*ppPVar3)->field_534 = 14.28571606; + (*ppPVar3)->field_538 = 0; + (*ppPVar3)->field_53C = 14.28571606; + (*ppPVar3)->field_540 = 0.00000000; + (*ppPVar3)->field_544 = 0.00000000; + (*ppPVar3)->field_548 = 0.00000000; + (*ppPVar3)->field_54C = 0.00000000; + (*ppPVar3)->stationary_ground_offset = 0.00000000; + (*ppPVar3)->field_554 = 0.00000000; + (*ppPVar3)->field_558 = 0.00000000; + (*ppPVar3)->field_55C = 0.00000000; + (*ppPVar3)->field_560 = 0.00000000; + (*ppPVar3)->field_564 = 0.00000000; + (*ppPVar3)->field_568 = 0.00000000; + (*ppPVar3)->field_56C = 1.00000000; + (*ppPVar3)->field_570 = 0.00000000; + (*ppPVar3)->field_574 = 0.00000000; + (*ppPVar3)->field_578 = 1.00000000; + (*ppPVar3)->field_57C = 0.00000000; + (*ppPVar3)->field_580 = 1.00000000; + (*ppPVar3)->field_584 = 0.00000000; + (*ppPVar3)->field_588 = 0.00000000; + (*ppPVar3)->field_58C = 1.00000000; + (*ppPVar3)->field_590 = 0.00000000; + (*ppPVar3)->field_594 = 0; + iVar1 = 0; + do { + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D0 + iVar1) = 0x280; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D2 + iVar1) = 0x1e0; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D4 + iVar1) = 0x1ff; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D6 + iVar1) = 0; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D8 + iVar1) = 0x280; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7DA + iVar1) = 0x1e0; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7DC + iVar1) = 0x1ff; + iVar2 = iVar1 + 0x10; + *(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7DE + iVar1) = 0; + iVar1 = iVar2; + } while (iVar2 != 0x20); + (*ppPVar3)->viewx = 100; + (*ppPVar3)->viewy = 100; + (*ppPVar3)->viewleft = 0; + (*ppPVar3)->viewtop = 0; + (*ppPVar3)->hand_invisible[0] = 0; + (*ppPVar3)->hand_invisible[1] = 0; + (*ppPVar3)->hand_item[0] = ITEM_UNARMED; + (*ppPVar3)->hand_item[1] = ITEM_UNARMED; + (*ppPVar3)->field_2A44[0] = -1; + (*ppPVar3)->field_2A44[1] = -1; + (*ppPVar3)->lock_hand_model[0] = 0; + (*ppPVar3)->lock_hand_model[1] = 0; + (*ppPVar3)->ptr_hand_weapon_buffer[0] = NULL; + (*ppPVar3)->ptr_hand_weapon_buffer[1] = NULL; + pPVar4 = *ppPVar3; + src = array234undefined4; + do { + dest = src + 3; + pPVar4->right_weapon = *src; + pPVar4->right_weapon_attack = src[1]; + pPVar4->previous_right_weapon = src[2]; + pPVar4 = (Player *)&pPVar4->zpos; + src = dest; + } while (dest != &iStack4); + src = array234undefined4; + pPVar4 = *ppPVar3; + do { + dest = src + 3; + pPVar4->left_weapon = *src; + pPVar4->left_weapon_attack = src[1]; + pPVar4->left_weapon_previous = src[2]; + src = dest; + pPVar4 = (Player *)&pPVar4->zpos; + } while (dest != &iStack4); + (*ppPVar3)->field_FC0 = 1.00000000; + (*ppPVar3)->field_FC4 = 1.00000000; + (*ppPVar3)->field_FC8 = 0; + (*ppPVar3)->field_FCC = 0; + (*ppPVar3)->field_FD0 = 0; + (*ppPVar3)->field_FD4 = 0; + (*ppPVar3)->field_FD8 = 0; + (*ppPVar3)->field_FDC = -1; + (*ppPVar3)->field_FDD = -1; + (*ppPVar3)->field_FDE = -1; + (*ppPVar3)->field_FDF = '\0'; + (*ppPVar3)->field_FE0 = 1; + (*ppPVar3)->field_FE4 = 0; + (*ppPVar3)->field_FE8 = 0.00000000; + (*ppPVar3)->field_FEC = 0.00000000; + (*ppPVar3)->field_FF0 = 0.00000000; + (*ppPVar3)->field_FF4 = 0.00000000; + (*ppPVar3)->field_FF8 = 0.89999998; + (*ppPVar3)->field_FFC = 0.00000000; + (*ppPVar3)->field_1000 = 0.00000000; + (*ppPVar3)->field_1004 = 0.00000000; + (*ppPVar3)->field_1008 = 0.00000000; + (*ppPVar3)->field_100C = 0.89999998; + (*ppPVar3)->field_1010 = 0.00000000; + (*ppPVar3)->holds_neg_pi = -3.14159274; + (*ppPVar3)->field_1018 = 0.00000000; + (*ppPVar3)->field_105C = 0; + (*ppPVar3)->copiedgoldeneye = 0; + (*ppPVar3)->somekinda_flags = 0; + (*ppPVar3)->field_106C = 0.00000000; + (*ppPVar3)->field_1070 = 0.00000000; + (*ppPVar3)->field_1074 = 0.00000000; + (*ppPVar3)->field_1078 = 0; + (*ppPVar3)->field_107C = 0.00000000; + (*ppPVar3)->field_1080 = 0.00000000; + (*ppPVar3)->sniper_zoom = 60.00000000; + (*ppPVar3)->camera_zoom = 60.00000000; + (*ppPVar3)->field_108C = -1; + (*ppPVar3)->c_screenwidth = 320.00000000; + (*ppPVar3)->c_screenheight = 240.00000000; + (*ppPVar3)->c_screenleft = 0.00000000; + (*ppPVar3)->c_screentop = 0.00000000; + (*ppPVar3)->c_perspnear = 10.00000000; + (*ppPVar3)->c_perspfovy = 46.00000000; + (*ppPVar3)->c_perspaspect = 1.00000000; + (*ppPVar3)->c_halfwidth = 160.00000000; + (*ppPVar3)->c_halfheight = 120.00000000; + (*ppPVar3)->c_scalex = 1.00000000; + (*ppPVar3)->c_scaley = 1.00000000; + (*ppPVar3)->c_recipscalex = 1.00000000; + (*ppPVar3)->c_recipscaley = 1.00000000; + (*ppPVar3)->field_10C4 = 0; + (*ppPVar3)->field_10C8 = 0; + (*ppPVar3)->field_10CC = 0; + (*ppPVar3)->field_10D0 = 0; + (*ppPVar3)->field_10D4 = 0; + (*ppPVar3)->field_10D8 = 0; + (*ppPVar3)->field_10DC = 0; + (*ppPVar3)->field_10E0 = 0; + (*ppPVar3)->field_10E4 = 0; + (*ppPVar3)->field_10E8 = 0; + (*ppPVar3)->field_10EC = 0; + (*ppPVar3)->c_scalelod60 = 1.00000000; + (*ppPVar3)->c_scalelod = 1.00000000; + (*ppPVar3)->c_lodscalez = 1.00000000; + (*ppPVar3)->c_lodscalezu32 = 0x10000; + (*ppPVar3)->screenxminf = 0.00000000; + (*ppPVar3)->screenyminf = 0.00000000; + (*ppPVar3)->screenxmaxf = 320.00000000; + (*ppPVar3)->screenymaxf = 240.00000000; + (*ppPVar3)->somekinda_bitflags = 0; + (*ppPVar3)->field_11B0 = 0; + (*ppPVar3)->field_11B4 = 0; + (*ppPVar3)->field_11B8 = 0; + (*ppPVar3)->zoomintime = 0.00000000; + (*ppPVar3)->zoomintimemax = 0.00000000; + (*ppPVar3)->zoominfovy = 60.00000000; + (*ppPVar3)->zoominfovyold = 60.00000000; + (*ppPVar3)->zoominfovynew = 60.00000000; + (*ppPVar3)->fovy = 60.00000000; + (*ppPVar3)->aspect = 1.33333337; + (*ppPVar3)->hudmessoff = 0; + (*ppPVar3)->bondmesscnt = -1; + (*ppPVar3)->ptr_inventory_first_in_cycle = 0; + (*ppPVar3)->p_itemcur = 0; + (*ppPVar3)->equipmaxitems = 0; + (*ppPVar3)->equipallguns = 0; + (*ppPVar3)->field_11F0 = 0; + (*ppPVar3)->field_11F4 = 0; + (*ppPVar3)->field_1280 = 0; + (*ppPVar3)->players_cur_animation = 0; + (*ppPVar3)->field_1288 = 0.00000000; + (*ppPVar3)->bondinvincible = '\0'; + (*ppPVar3)->field_29B8 = 7; + (*ppPVar3)->field_29BC = 1.00000000; + (*ppPVar3)->field_29C0 = 0.00000000; + (*ppPVar3)->mpmenuon = 0; + (*ppPVar3)->damagetype = 7; + (*ppPVar3)->deathcount = 0; + (*ppPVar3)->field_29E0 = random_byte; + random_byte = random_byte + 1; + (*ppPVar3)->field_29E4 = -1; + (*ppPVar3)->field_29E8 = -1; + (*ppPVar3)->field_29EC = -1; + (*ppPVar3)->field_29F0 = -1; + (*ppPVar3)->healthdisplaytime = 0; + (*ppPVar3)->field_2A30 = 0; + (*ppPVar3)->field_2A34 = 0; + (*ppPVar3)->cur_item_weapon_getname = 1; + (*ppPVar3)->actual_health = 1.00000000; + (*ppPVar3)->actual_armor = 1.00000000; + (*ppPVar3)->cur_player_control_type_0 = 0; + (*ppPVar3)->cur_player_control_type_1 = 0; + (*ppPVar3)->cur_player_control_type_2 = 0.00000000; + (*ppPVar3)->neg_vspacing_for_control_type_entry = 0; + (*ppPVar3)->has_set_control_type_data = 1; + (*ppPVar3)->field_2A6C = 0; + (*ppPVar3)->field_2A70 = 0; + visible_to_guards_flag = TRUE; + obj_collision_flag = TRUE; } #else #ifdef VERSION_US @@ -7764,7 +8170,7 @@ glabel initBONDdataforPlayer /* 0CF024 7F09A4F4 15EBFFF8 */ bne $t7, $t3, .L7F09A4D8 /* 0CF028 7F09A4F8 ADC1FFFC */ sw $at, -4($t6) /* 0CF02C 7F09A4FC 24042A80 */ li $a0, 10880 -/* 0CF030 7F09A500 0C0025C8 */ jal allocate_bytes_in_bank +/* 0CF030 7F09A500 0C0025C8 */ jal mempAllocBytesInBank /* 0CF034 7F09A504 24050004 */ li $a1, 4 /* 0CF038 7F09A508 8FAC03D0 */ lw $t4, 0x3d0($sp) /* 0CF03C 7F09A50C 3C198008 */ lui $t9, %hi(ptr_BONDdata_p1) @@ -8578,7 +8984,7 @@ glabel initBONDdataforPlayer /* 0CFC04 7F09B094 15EBFFF8 */ bne $t7, $t3, .L7F09B078 /* 0CFC08 7F09B098 ADC1FFFC */ sw $at, -4($t6) /* 0CFC0C 7F09B09C 24042A80 */ li $a0, 10880 -/* 0CFC10 7F09B0A0 0C0025CC */ jal allocate_bytes_in_bank +/* 0CFC10 7F09B0A0 0C0025CC */ jal mempAllocBytesInBank /* 0CFC14 7F09B0A4 24050004 */ li $a1, 4 /* 0CFC18 7F09B0A8 8FAC03D0 */ lw $t4, 0x3d0($sp) /* 0CFC1C 7F09B0AC 3C198008 */ lui $t9, %hi(ptr_BONDdata_p1) # $t9, 0x8008 @@ -9360,11 +9766,11 @@ glabel initBONDdataforPlayer #ifdef NONMATCHING -void set_cur_player(s32 arg0) { - // Node 0 - player_num = arg0; - pPlayer = (u32) *(&ptr_BONDdata_p1 + (arg0 * 4)); - cur_player_stat_ptr = (s32) ((arg0 * 0x70) + &player1_player_data); +void set_cur_player(PLAYER_ID playernum) +{ + pPlayer = ptr_BONDdata_p1[playernum]; + pPlayersPerm = player1_playerdata[playernum]; + player_num = playernum; return; } #else @@ -9384,10 +9790,10 @@ glabel set_cur_player /* 0CFC64 7F09B134 27399EF0 */ addiu $t9, %lo(player1_player_data) # addiu $t9, $t9, -0x6110 /* 0CFC68 7F09B138 0018C100 */ sll $t8, $t8, 4 /* 0CFC6C 7F09B13C AC2FA0B0 */ sw $t7, %lo(pPlayer)($at) -/* 0CFC70 7F09B140 3C018008 */ lui $at, %hi(cur_player_stat_ptr) +/* 0CFC70 7F09B140 3C018008 */ lui $at, %hi(pPlayersPerm) /* 0CFC74 7F09B144 03194021 */ addu $t0, $t8, $t9 /* 0CFC78 7F09B148 03E00008 */ jr $ra -/* 0CFC7C 7F09B14C AC28A0B4 */ sw $t0, %lo(cur_player_stat_ptr)($at) +/* 0CFC7C 7F09B14C AC28A0B4 */ sw $t0, %lo(pPlayersPerm)($at) ) #endif @@ -9404,8 +9810,28 @@ s32 get_cur_playernum(void) { #ifdef NONMATCHING -void sub_GAME_7F09B15C(void) { - +void proc_7F09B15C(int position_data_pointer) +{ + Player *pPVar1; + s32 numplayers; + Player **ppPVar2; + int i; + + i = 0; + numplayers = get_num_players(); + if (0 < numplayers) { + ppPVar2 = ptr_BONDdata_p1; + pPVar1 = ptr_BONDdata_p1[0]; + while (ppPVar2 = ppPVar2 + 1, position_data_pointer != pPVar1->position_data_pointer) { + i = i + 1; + numplayers = get_num_players(); + if (numplayers <= i) { + return; + } + pPVar1 = *ppPVar2; + } + } + return; } #else GLOBAL_ASM( @@ -9464,15 +9890,15 @@ void set_cur_player_viewport_size(u32 ulx, u32 uly) { pPlayer->viewtop = uly; } -void sub_GAME_7F09B214(f32 arg0) { - pPlayer->fovy = arg0; +void set_cur_player_fovy(f32 fovy) { + pPlayer->fovy = fovy; } -void sub_GAME_7F09B224(f32 arg0) { - pPlayer->aspect = arg0; +void set_cur_player_aspect(f32 aspect) { + pPlayer->aspect = aspect; } -f32 sub_GAME_7F09B234(void) { +f32 get_cur_player_fovy(void) { return pPlayer->fovy; } @@ -9941,61 +10367,29 @@ glabel sub_GAME_7F09B4D8 #ifdef NONMATCHING -s32 sub_GAME_7F09B528(s32 arg0) { - s32 phi_a0; - s32 phi_a0_2; - s32 phi_a0_3; - - // Node 0 - phi_a0 = arg0; - if (*(&ptr_BONDdata_p1 + (dword_CODE_bss_8007A0C0 * 4)) != 0) - { - // Node 1 - if (arg0 == 0) - { - // Node 2 +int proc_7F09B528(int param_1) +{ + if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C0] != NULL) { + if (param_1 == 0) { return dword_CODE_bss_8007A0C0; } - // Node 3 - phi_a0 = (arg0 + -1); + param_1--; } - // Node 4 - phi_a0_2 = phi_a0; - if (*(&ptr_BONDdata_p1 + (dword_CODE_bss_8007A0C4 * 4)) != 0) - { - // Node 5 - if (phi_a0 == 0) - { - // Node 6 + if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C4] != NULL) { + if (param_1 == 0) { return dword_CODE_bss_8007A0C4; } - // Node 7 - phi_a0_2 = (phi_a0 + -1); + param_1--; } - // Node 8 - phi_a0_3 = phi_a0_2; - if (*(&ptr_BONDdata_p1 + (dword_CODE_bss_8007A0C8 * 4)) != 0) - { - // Node 9 - if (phi_a0_2 == 0) - { - // Node 10 + if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C8] != NULL) { + if (param_1 == 0) { return dword_CODE_bss_8007A0C8; } - // Node 11 - phi_a0_3 = (phi_a0_2 + -1); + param_1--; } - // Node 12 - if (*(&ptr_BONDdata_p1 + (dword_CODE_bss_8007A0CC * 4)) != 0) - { - // Node 13 - if (phi_a0_3 == 0) - { - // Node 14 - return dword_CODE_bss_8007A0CC; - } + if ((ptr_BONDdata_p1[dword_CODE_bss_8007A0CC] != NULL) && (param_1 == 0)) { + return dword_CODE_bss_8007A0CC; } - // Node 15 return 0; } #else diff --git a/src/game/unk_093880.h b/src/game/unk_093880.h index d9ad83d..61e3374 100644 --- a/src/game/unk_093880.h +++ b/src/game/unk_093880.h @@ -42,6 +42,6 @@ extern struct player_data player2_player_data; extern struct player_data player3_player_data; extern struct player_data player4_player_data; -extern struct Player *pPlayer; -extern struct player_data *cur_player_stat_ptr; +extern struct Player * pPlayer; +extern struct player_data *pPlayersPerm; #endif diff --git a/src/game/unk_09B7A0.c b/src/game/unk_09B7A0.c index 3482a2f..d322af8 100644 --- a/src/game/unk_09B7A0.c +++ b/src/game/unk_09B7A0.c @@ -164,7 +164,7 @@ glabel sub_GAME_7F09B820 /* 0D042C 7F09B8FC 24050004 */ li $a1, 4 /* 0D0430 7F09B900 00045880 */ sll $t3, $a0, 2 /* 0D0434 7F09B904 01645821 */ addu $t3, $t3, $a0 -/* 0D0438 7F09B908 0C0025C8 */ jal allocate_bytes_in_bank +/* 0D0438 7F09B908 0C0025C8 */ jal mempAllocBytesInBank /* 0D043C 7F09B90C 000B2080 */ sll $a0, $t3, 2 /* 0D0440 7F09B910 3C068008 */ lui $a2, %hi(dword_CODE_bss_8007A0E8) /* 0D0444 7F09B914 24C6A0E8 */ addiu $a2, %lo(dword_CODE_bss_8007A0E8) # addiu $a2, $a2, -0x5f18 @@ -173,7 +173,7 @@ glabel sub_GAME_7F09B820 /* 0D0450 7F09B920 8C84A0D0 */ lw $a0, %lo(dword_CODE_bss_8007A0D0)($a0) /* 0D0454 7F09B924 24050004 */ li $a1, 4 /* 0D0458 7F09B928 00046100 */ sll $t4, $a0, 4 -/* 0D045C 7F09B92C 0C0025C8 */ jal allocate_bytes_in_bank +/* 0D045C 7F09B92C 0C0025C8 */ jal mempAllocBytesInBank /* 0D0460 7F09B930 01802025 */ move $a0, $t4 /* 0D0464 7F09B934 3C098008 */ lui $t1, %hi(dword_CODE_bss_8007A0DC) /* 0D0468 7F09B938 3C018008 */ lui $at, %hi(dword_CODE_bss_8007A0E0) @@ -183,7 +183,7 @@ glabel sub_GAME_7F09B820 /* 0D0478 7F09B948 24050004 */ li $a1, 4 /* 0D047C 7F09B94C 00046880 */ sll $t5, $a0, 2 /* 0D0480 7F09B950 01A46821 */ addu $t5, $t5, $a0 -/* 0D0484 7F09B954 0C0025C8 */ jal allocate_bytes_in_bank +/* 0D0484 7F09B954 0C0025C8 */ jal mempAllocBytesInBank /* 0D0488 7F09B958 000D2080 */ sll $a0, $t5, 2 /* 0D048C 7F09B95C 3C078008 */ lui $a3, %hi(dword_CODE_bss_8007A0EC) /* 0D0490 7F09B960 24E7A0EC */ addiu $a3, %lo(dword_CODE_bss_8007A0EC) # addiu $a3, $a3, -0x5f14 @@ -192,7 +192,7 @@ glabel sub_GAME_7F09B820 /* 0D049C 7F09B96C 8C84A0D8 */ lw $a0, %lo(dword_CODE_bss_8007A0D8)($a0) /* 0D04A0 7F09B970 24050004 */ li $a1, 4 /* 0D04A4 7F09B974 00047100 */ sll $t6, $a0, 4 -/* 0D04A8 7F09B978 0C0025C8 */ jal allocate_bytes_in_bank +/* 0D04A8 7F09B978 0C0025C8 */ jal mempAllocBytesInBank /* 0D04AC 7F09B97C 01C02025 */ move $a0, $t6 /* 0D04B0 7F09B980 3C0A8008 */ lui $t2, %hi(dword_CODE_bss_8007A0D0) /* 0D04B4 7F09B984 254AA0D0 */ addiu $t2, %lo(dword_CODE_bss_8007A0D0) # addiu $t2, $t2, -0x5f30 diff --git a/src/game/unk_09C250.c b/src/game/unk_09C250.c index c932018..625f132 100644 --- a/src/game/unk_09C250.c +++ b/src/game/unk_09C250.c @@ -2189,8 +2189,8 @@ glabel sub_GAME_7F09D5A0 /* 0D21B4 7F09D684 3C19BC00 */ lui $t9, (0xBC000806 >> 16) # lui $t9, 0xbc00 /* 0D21B8 7F09D688 37390806 */ ori $t9, (0xBC000806 & 0xFFFF) # ori $t9, $t9, 0x806 /* 0D21BC 7F09D68C AC590000 */ sw $t9, ($v0) -/* 0D21C0 7F09D690 3C048009 */ lui $a0, %hi(ptr_explosionDL) -/* 0D21C4 7F09D694 8C84D0B4 */ lw $a0, %lo(ptr_explosionDL)($a0) +/* 0D21C0 7F09D690 3C048009 */ lui $a0, %hi(pGlobalimagetable) +/* 0D21C4 7F09D694 8C84D0B4 */ lw $a0, %lo(pGlobalimagetable)($a0) /* 0D21C8 7F09D698 00408025 */ move $s0, $v0 /* 0D21CC 7F09D69C 0C003A2C */ jal osVirtualToPhysical /* 0D21D0 7F09D6A0 24540008 */ addiu $s4, $v0, 8 @@ -4088,8 +4088,8 @@ glabel sub_GAME_7F09F03C /* 0D3C74 7F09F144 35080806 */ ori $t0, (0xBC000806 & 0xFFFF) # ori $t0, $t0, 0x806 /* 0D3C78 7F09F148 02409825 */ move $s3, $s2 /* 0D3C7C 7F09F14C AE680000 */ sw $t0, ($s3) -/* 0D3C80 7F09F150 3C048009 */ lui $a0, %hi(ptr_explosionDL) -/* 0D3C84 7F09F154 8C84D0B4 */ lw $a0, %lo(ptr_explosionDL)($a0) +/* 0D3C80 7F09F150 3C048009 */ lui $a0, %hi(pGlobalimagetable) +/* 0D3C84 7F09F154 8C84D0B4 */ lw $a0, %lo(pGlobalimagetable)($a0) /* 0D3C88 7F09F158 0C003A2C */ jal osVirtualToPhysical /* 0D3C8C 7F09F15C 26520008 */ addiu $s2, $s2, 8 /* 0D3C90 7F09F160 AE620004 */ sw $v0, 4($s3) @@ -5166,8 +5166,8 @@ glabel sub_GAME_7F0A0034 /* 0D4BB0 7F0A0080 37180806 */ ori $t8, (0xBC000806 & 0xFFFF) # ori $t8, $t8, 0x806 /* 0D4BB4 7F0A0084 02008825 */ move $s1, $s0 /* 0D4BB8 7F0A0088 AE380000 */ sw $t8, ($s1) -/* 0D4BBC 7F0A008C 3C048009 */ lui $a0, %hi(ptr_explosionDL) -/* 0D4BC0 7F0A0090 8C84D0B4 */ lw $a0, %lo(ptr_explosionDL)($a0) +/* 0D4BBC 7F0A008C 3C048009 */ lui $a0, %hi(pGlobalimagetable) +/* 0D4BC0 7F0A0090 8C84D0B4 */ lw $a0, %lo(pGlobalimagetable)($a0) /* 0D4BC4 7F0A0094 0C003A2C */ jal osVirtualToPhysical /* 0D4BC8 7F0A0098 26100008 */ addiu $s0, $s0, 8 /* 0D4BCC 7F0A009C 02001825 */ move $v1, $s0 @@ -6359,7 +6359,7 @@ glabel sub_GAME_7F0A108C /* 0D5C10 7F0A10E0 8DC10008 */ lw $at, 8($t6) /* 0D5C14 7F0A10E4 AEA10008 */ sw $at, 8($s5) /* 0D5C18 7F0A10E8 8DD9000C */ lw $t9, 0xc($t6) -/* 0D5C1C 7F0A10EC 0FC249EF */ jal sub_GAME_7F0927BC +/* 0D5C1C 7F0A10EC 0FC249EF */ jal cheatCheckIfOn /* 0D5C20 7F0A10F0 AEB9000C */ sw $t9, 0xc($s5) /* 0D5C24 7F0A10F4 10400003 */ beqz $v0, .L7F0A1104 /* 0D5C28 7F0A10F8 3C0A8004 */ lui $t2, %hi(D_8004080C) @@ -7212,24 +7212,10 @@ glabel sub_GAME_7F0A1A94 -#ifdef NONMATCHING -void sub_GAME_7F0A1D78(void) { +void sub_GAME_7F0A1D78(u32 *param_1) +{ + sub_GAME_7F0A1A94(param_1,0,0); } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A1D78 -/* 0D68A8 7F0A1D78 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0D68AC 7F0A1D7C AFBF0014 */ sw $ra, 0x14($sp) -/* 0D68B0 7F0A1D80 00002825 */ move $a1, $zero -/* 0D68B4 7F0A1D84 0FC286A5 */ jal sub_GAME_7F0A1A94 -/* 0D68B8 7F0A1D88 00003025 */ move $a2, $zero -/* 0D68BC 7F0A1D8C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D68C0 7F0A1D90 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0D68C4 7F0A1D94 03E00008 */ jr $ra -/* 0D68C8 7F0A1D98 00000000 */ nop -) -#endif diff --git a/src/game/unk_0BC530.c b/src/game/unk_0BC530.c index 283e5ea..e82514b 100644 --- a/src/game/unk_0BC530.c +++ b/src/game/unk_0BC530.c @@ -385,7 +385,7 @@ glabel sub_GAME_7F0BC85C /* 0F143C 7F0BC90C 8D4B108C */ lw $t3, 0x108c($t2) /* 0F1440 7F0BC910 002C0821 */ addu $at, $at, $t4 /* 0F1444 7F0BC914 27A4002C */ addiu $a0, $sp, 0x2c -/* 0F1448 7F0BC918 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0F1448 7F0BC918 0FC15FF4 */ jal reset_array_of_0x10_floats /* 0F144C 7F0BC91C AC2B3900 */ sw $t3, %lo(dword_CODE_bss_80083900)($at) /* 0F1450 7F0BC920 8FAE0070 */ lw $t6, 0x70($sp) /* 0F1454 7F0BC924 3C018004 */ lui $at, %hi(room_data_float2) diff --git a/src/game/unk_0C0A70.c b/src/game/unk_0C0A70.c index 247dba6..2b1c671 100644 --- a/src/game/unk_0C0A70.c +++ b/src/game/unk_0C0A70.c @@ -19,36 +19,13 @@ s32 D_800484B4 = 1; -#ifdef NONMATCHING -void store_osgetcount(void) { - u32 temp_ret; - temp_ret = osGetCount(); - copy_of_osgetcount_value_1 = temp_ret; - copy_of_osgetcount_value_0 = temp_ret; +void store_osgetcount(void) +{ + copy_of_osgetcount_value_1 = osGetCount(); + copy_of_osgetcount_value_0 = copy_of_osgetcount_value_1; } -#else -GLOBAL_ASM( -.text -glabel store_osgetcount -/* 0F55A0 7F0C0A70 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0F55A4 7F0C0A74 AFBF0014 */ sw $ra, 0x14($sp) -/* 0F55A8 7F0C0A78 0C003638 */ jal osGetCount -/* 0F55AC 7F0C0A7C 00000000 */ nop -/* 0F55B0 7F0C0A80 8FBF0014 */ lw $ra, 0x14($sp) -/* 0F55B4 7F0C0A84 3C038005 */ lui $v1, %hi(copy_of_osgetcount_value_1) -/* 0F55B8 7F0C0A88 246384B0 */ addiu $v1, %lo(copy_of_osgetcount_value_1) # addiu $v1, $v1, -0x7b50 -/* 0F55BC 7F0C0A8C AC620000 */ sw $v0, ($v1) -/* 0F55C0 7F0C0A90 3C018005 */ lui $at, %hi(copy_of_osgetcount_value_0) -/* 0F55C4 7F0C0A94 AC2284AC */ sw $v0, %lo(copy_of_osgetcount_value_0)($at) -/* 0F55C8 7F0C0A98 03E00008 */ jr $ra -/* 0F55CC 7F0C0A9C 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - - #ifdef NONMATCHING diff --git a/src/game/unk_0CC4C0.c b/src/game/unk_0CC4C0.c index f7e0b5e..617d111 100644 --- a/src/game/unk_0CC4C0.c +++ b/src/game/unk_0CC4C0.c @@ -2764,7 +2764,7 @@ glabel process_microcode_sort_display_modes_expand_image_calls .L7F0CE258: /* 102D88 7F0CE258 0000A025 */ move $s4, $zero .L7F0CE25C: -/* 102D8C 7F0CE25C 0FC32FBA */ jal sub_GAME_7F0CBEE8 +/* 102D8C 7F0CE25C 0FC32FBA */ jal calls_load_image_to_buffer /* 102D90 7F0CE260 02602025 */ move $a0, $s3 /* 102D94 7F0CE264 02602025 */ move $a0, $s3 /* 102D98 7F0CE268 0FC32EC3 */ jal sub_GAME_7F0CBB0C @@ -2887,7 +2887,7 @@ glabel process_microcode_sort_display_modes_expand_image_calls /* 102F5C 7F0CE42C 02C02825 */ move $a1, $s6 /* 102F60 7F0CE430 00047B02 */ srl $t7, $a0, 0xc /* 102F64 7F0CE434 31E40FFF */ andi $a0, $t7, 0xfff -/* 102F68 7F0CE438 0FC32FBA */ jal sub_GAME_7F0CBEE8 +/* 102F68 7F0CE438 0FC32FBA */ jal calls_load_image_to_buffer /* 102F6C 7F0CE43C AFA40080 */ sw $a0, 0x80($sp) /* 102F70 7F0CE440 8FA40080 */ lw $a0, 0x80($sp) /* 102F74 7F0CE444 0FC32EC3 */ jal sub_GAME_7F0CBB0C diff --git a/src/game/viewport.c b/src/game/viewport.c index 113713c..fd2a2c5 100644 --- a/src/game/viewport.c +++ b/src/game/viewport.c @@ -61,7 +61,7 @@ glabel allocate_viewport_buffer /* 106F3C 7F0D240C 014B0019 */ multu $t2, $t3 /* 106F40 7F0D2410 00002012 */ mflo $a0 /* 106F44 7F0D2414 00046040 */ sll $t4, $a0, 1 -/* 106F48 7F0D2418 0C0025C8 */ jal allocate_bytes_in_bank +/* 106F48 7F0D2418 0C0025C8 */ jal mempAllocBytesInBank /* 106F4C 7F0D241C 25840040 */ addiu $a0, $t4, 0x40 /* 106F50 7F0D2420 8FBF0014 */ lw $ra, 0x14($sp) /* 106F54 7F0D2424 3C038005 */ lui $v1, %hi(viewport_img) diff --git a/src/game/watch.c b/src/game/watch.c index 3905f33..7ac1519 100644 --- a/src/game/watch.c +++ b/src/game/watch.c @@ -1,6 +1,9 @@ #include "ultra64.h" #include "game/unk_093880.h" #include "game/unk_0A1DA0.h" +#include "game/mainmenu.h" +#include "game/lvl_text.h" +#include "music.h" // bss char dword_CODE_bss_8007B0A0[0x40]; @@ -23,19 +26,19 @@ s32 D_800409B4 = 0; //D:800409B8 s32 D_800409B8 = 0; //D:800409BC -s32 D_800409BC = 0; +f32 D_800409BC = 0.0f; //D:800409C0 s32 D_800409C0 = 0; //D:800409C4 s32 D_800409C4 = 0; //D:800409C8 -s32 D_800409C8 = 0; +f32 D_800409C8 = 0.0f; //D:800409CC -s32 D_800409CC = 0; +f32 D_800409CC = 0.0f; //D:800409D0 -s32 D_800409D0 = 0xFFFFFFFF; +s32 D_800409D0 = -1; //D:800409D4 -s32 D_800409D4 = 0; +f32 D_800409D4 = 0.0f; //D:800409D8 s32 D_800409D8 = 8; //D:800409DC @@ -101,11 +104,11 @@ u32 D_80040AE0 = 0; //D:80040AE4 u32 D_80040AE4 = 0; //D:80040AE8 -f32 D_80040AE8 = 0.0; +f32 D_80040AE8 = 0.0f; //D:80040AEC -f32 D_80040AEC = 0.0; +f32 D_80040AEC = 0.0f; //D:80040AF0 -u32 D_80040AF0 = 0x42340000; +f32 D_80040AF0 = 45.0f; //D:80040AF4 u32 D_80040AF4 = 0xFF00A0; //D:80040AF8 @@ -123,25 +126,25 @@ u32 D_80040B0C = 0xFFA0; //D:80040B10 u32 D_80040B10 = 0xF800; //D:80040B14 -u32 D_80040B14 = 0; +f32 D_80040B14 = 0.0f; //D:80040B18 -u32 D_80040B18 = 0; +f32 D_80040B18 = 0.0f; //D:80040B1C -u32 D_80040B1C = 0x40200000; +f32 D_80040B1C = 2.5f; //D:80040B20 -u32 D_80040B20 = 0; +f32 D_80040B20 = 0.0f; //D:80040B24 -u32 D_80040B24 = 0; +f32 D_80040B24 = 0.0f; //D:80040B28 -u32 D_80040B28 = 0; +f32 D_80040B28 = 0.0f; //D:80040B2C u32 D_80040B2C = 0; //D:80040B30 -u32 D_80040B30 = 0; +f32 D_80040B30 = 0.0f; //D:80040B34 -u32 D_80040B34 = 0; +f32 D_80040B34 = 0.0f; //D:80040B38 -u32 D_80040B38 = 0; +f32 D_80040B38 = 0.0f; //D:80040B3C u32 D_80040B3C = 0; //D:80040B40 @@ -157,7 +160,7 @@ u32 D_80040B50 = 0x32; //D:80040B54 u32 D_80040B54 = 0x32; //D:80040B58 -u16 D_80040B58 = 0x7FFF; +u16 mTrack2Vol = 0x7FFF; //D:80040B5C u32 D_80040B5C = 0; //D:80040B60 @@ -361,8 +364,71 @@ void nullsub_7F0A4860(void) { #ifdef NONMATCHING -void init_watch_at_start_of_stage(void) { +void init_watch_at_start_of_stage(void) +{ + D_80040994 = 0; + D_80040998 = 0; + D_8004099C = 0; + D_800409A0 = 4; + D_800409A4 = 0; + watch_soundrelated_maybe = 0; + D_800409AC = 0; + D_800409B0 = 0; + D_800409B4 = 0; + D_800409B8 = 0; + D_800409BC = 0.0f; + D_800409C0 = 0; + D_800409C4 = 0; + D_800409C8 = 0.0f; + D_800409CC = 0.0f; + D_800409D0 = -1; + D_800409D4 = 0.0f; + if (!j_text_trigger) + {;} + else + { + pPlayer->neg_vspacing_for_control_type_entry = 0; + pPlayer->cur_player_control_type_1 = 0; + pPlayer->cur_player_control_type_0 = 0; + pPlayer->cur_player_control_type_2 = 0.0f; + pPlayer->has_set_control_type_data = 1; + } + + D_800409D8 = 8; + controlstick_lr_enabled = 0; + D_80040AE0 = 0; + D_80040AE4 = 0; + D_80040AE8 = 0.0f; + D_80040AEC = 0.0f; + D_80040AF0 = 45.0f; + D_80040AF4 = 0xff00a0; + D_80040AF8 = 10; + D_80040AFC = 0xff; + D_80040B00 = 10; + D_80040B04 = 0xe0; + D_80040B08 = 0; + D_80040B0C = 0xffa0; + D_80040B10 = 0xf800; + D_80040B14 = 0.0f; + D_80040B18 = 0.0f; + D_80040B1C = 2.5f; + D_80040B20 = 0.0f; + D_80040B24 = 0.0f; + D_80040B28 = 0.0f; + D_80040B2C = 0; + D_80040B30 = 0.0f; + D_80040B34 = 0.0f; + D_80040B38 = 0.0f; + D_80040B3C = 0; + D_80040B40 = 0; + D_80040B44 = 1; + D_80040B48 = 0x32; + D_80040B4C = 0x32; + D_80040B50 = 0x32; + D_80040B54 = 0x32; + sub_GAME_7F01D500(1,0xa); + mission_failed_or_aborted = FALSE; } #else GLOBAL_ASM( @@ -516,70 +582,76 @@ glabel init_watch_at_start_of_stage -#ifdef NONMATCHING -void sub_GAME_7F0A4A98(void) { +void controller_deadzone_related(void) +{ + if (10 < get_cur_controller_horz_stick_pos('\0')) + { + D_80040B50 = D_80040B50 + 1; + } + if (get_cur_controller_horz_stick_pos('\0') < -10) + { + D_80040B50 = D_80040B50 + -1; + } + if (10 < get_cur_controller_vert_stick_pos('\0')) + { + D_80040B54 = D_80040B54 + -1; + } + if (get_cur_controller_vert_stick_pos('\0') < -10) + { + D_80040B54 = D_80040B54 + 1; + } } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A4A98 -/* 0D95C8 7F0A4A98 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0D95CC 7F0A4A9C AFBF0014 */ sw $ra, 0x14($sp) -/* 0D95D0 7F0A4AA0 0C00303B */ jal get_cur_controller_horz_stick_pos -/* 0D95D4 7F0A4AA4 00002025 */ move $a0, $zero -/* 0D95D8 7F0A4AA8 2841000B */ slti $at, $v0, 0xb -/* 0D95DC 7F0A4AAC 14200005 */ bnez $at, .L7F0A4AC4 -/* 0D95E0 7F0A4AB0 3C0E8004 */ lui $t6, %hi(D_80040B50) -/* 0D95E4 7F0A4AB4 8DCE0B50 */ lw $t6, %lo(D_80040B50)($t6) -/* 0D95E8 7F0A4AB8 3C018004 */ lui $at, %hi(D_80040B50) -/* 0D95EC 7F0A4ABC 25CF0001 */ addiu $t7, $t6, 1 -/* 0D95F0 7F0A4AC0 AC2F0B50 */ sw $t7, %lo(D_80040B50)($at) -.L7F0A4AC4: -/* 0D95F4 7F0A4AC4 0C00303B */ jal get_cur_controller_horz_stick_pos -/* 0D95F8 7F0A4AC8 00002025 */ move $a0, $zero -/* 0D95FC 7F0A4ACC 3C038004 */ lui $v1, %hi(D_80040B50) -/* 0D9600 7F0A4AD0 2841FFF6 */ slti $at, $v0, -0xa -/* 0D9604 7F0A4AD4 10200004 */ beqz $at, .L7F0A4AE8 -/* 0D9608 7F0A4AD8 24630B50 */ addiu $v1, %lo(D_80040B50) # addiu $v1, $v1, 0xb50 -/* 0D960C 7F0A4ADC 8C780000 */ lw $t8, ($v1) -/* 0D9610 7F0A4AE0 2719FFFF */ addiu $t9, $t8, -1 -/* 0D9614 7F0A4AE4 AC790000 */ sw $t9, ($v1) -.L7F0A4AE8: -/* 0D9618 7F0A4AE8 0C00307F */ jal get_cur_controller_vert_stick_pos -/* 0D961C 7F0A4AEC 00002025 */ move $a0, $zero -/* 0D9620 7F0A4AF0 2841000B */ slti $at, $v0, 0xb -/* 0D9624 7F0A4AF4 14200005 */ bnez $at, .L7F0A4B0C -/* 0D9628 7F0A4AF8 3C088004 */ lui $t0, %hi(D_80040B54) -/* 0D962C 7F0A4AFC 8D080B54 */ lw $t0, %lo(D_80040B54)($t0) -/* 0D9630 7F0A4B00 3C018004 */ lui $at, %hi(D_80040B54) -/* 0D9634 7F0A4B04 2509FFFF */ addiu $t1, $t0, -1 -/* 0D9638 7F0A4B08 AC290B54 */ sw $t1, %lo(D_80040B54)($at) -.L7F0A4B0C: -/* 0D963C 7F0A4B0C 0C00307F */ jal get_cur_controller_vert_stick_pos -/* 0D9640 7F0A4B10 00002025 */ move $a0, $zero -/* 0D9644 7F0A4B14 3C038004 */ lui $v1, %hi(D_80040B54) -/* 0D9648 7F0A4B18 2841FFF6 */ slti $at, $v0, -0xa -/* 0D964C 7F0A4B1C 10200004 */ beqz $at, .L7F0A4B30 -/* 0D9650 7F0A4B20 24630B54 */ addiu $v1, %lo(D_80040B54) # addiu $v1, $v1, 0xb54 -/* 0D9654 7F0A4B24 8C6A0000 */ lw $t2, ($v1) -/* 0D9658 7F0A4B28 254B0001 */ addiu $t3, $t2, 1 -/* 0D965C 7F0A4B2C AC6B0000 */ sw $t3, ($v1) -.L7F0A4B30: -/* 0D9660 7F0A4B30 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D9664 7F0A4B34 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0D9668 7F0A4B38 03E00008 */ jr $ra -/* 0D966C 7F0A4B3C 00000000 */ nop -) -#endif #ifdef NONMATCHING -void sub_GAME_7F0A4B40(void) { +void proc_7F0A4B40(undefined4 *param_1) +{ + s32 sVar1; + undefined4 *puVar2; + int iStack52; + int iStack48; + int iStack44; + int *piStack40; + byte abStack36 [36]; + + sVar1 = get_cur_controller_horz_stick_pos('\0'); + if (10 < sVar1) { + D_80040B48 = D_80040B48 + 1; + } + sVar1 = get_cur_controller_horz_stick_pos('\0'); + if (sVar1 < -10) { + D_80040B48 = D_80040B48 - 1; + } + sVar1 = get_cur_controller_vert_stick_pos('\0'); + if (10 < sVar1) { + D_80040B4C = D_80040B4C - 1; + } + sVar1 = get_cur_controller_vert_stick_pos('\0'); + if (sVar1 < -10) { + D_80040B4C = D_80040B4C + 1; + } + *param_1 = 0xb900031d; + param_1[1] = 0x504240; + param_1[2] = 0xfcffffff; + param_1[3] = 0xfffdf6fb; + param_1[4] = 0xfa000000; + param_1[5] = 0xff0000ff; + param_1[6] = (D_80040B48 + 1 & 0x3ff) << 0xe | 0xf6000000 | (D_80040B4C + 1 & 0x3ff) << 2; + param_1[7] = (D_80040B48 & 0x3ff) << 0xe | (D_80040B4C & 0x3ff) << 2; + piStack40 = ptrFirstFontTableSmall; + iStack44 = ptrSecondFontTableSmall; + sprintf((char *)abStack36,"%d, %d\n",D_80040B48,D_80040B4C); + puVar2 = microcode_constructor(param_1 + 8); + proc_7F0AE98C(&iStack52,&iStack48,abStack36,iStack44,piStack40,0); + en_text_write_stuff(puVar2,&D_80040B48,&D_80040B4C,abStack36,iStack44,(int)piStack40,0xff0000ff, + iStack48,iStack52,0,0); + D_80040B4C = (D_80040B4C - *(int *)(iStack44 + 0x890)) + 1; + return; } #else GLOBAL_ASM( @@ -737,41 +809,18 @@ glabel sub_GAME_7F0A4B40 -#ifdef NONMATCHING -void sub_GAME_7F0A4D74(void) { +u32 controllerCheckDualControllerTypesAllowed(void) +{ + if (get_attached_controller_count() >= 2) + { + if (cur_player_get_control_type() >= 4) + { + return 1; + } + } + return 0; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A4D74 -/* 0D98A4 7F0A4D74 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0D98A8 7F0A4D78 AFBF0014 */ sw $ra, 0x14($sp) -/* 0D98AC 7F0A4D7C 0C002E7E */ jal get_attached_controller_count -/* 0D98B0 7F0A4D80 00000000 */ nop -/* 0D98B4 7F0A4D84 28410002 */ slti $at, $v0, 2 -/* 0D98B8 7F0A4D88 54200009 */ bnezl $at, .L7F0A4DB0 -/* 0D98BC 7F0A4D8C 00001025 */ move $v0, $zero -/* 0D98C0 7F0A4D90 0FC29370 */ jal cur_player_get_control_type -/* 0D98C4 7F0A4D94 00000000 */ nop -/* 0D98C8 7F0A4D98 28410004 */ slti $at, $v0, 4 -/* 0D98CC 7F0A4D9C 54200004 */ bnezl $at, .L7F0A4DB0 -/* 0D98D0 7F0A4DA0 00001025 */ move $v0, $zero -/* 0D98D4 7F0A4DA4 10000002 */ b .L7F0A4DB0 -/* 0D98D8 7F0A4DA8 24020001 */ li $v0, 1 -/* 0D98DC 7F0A4DAC 00001025 */ move $v0, $zero -.L7F0A4DB0: -/* 0D98E0 7F0A4DB0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D98E4 7F0A4DB4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0D98E8 7F0A4DB8 03E00008 */ jr $ra -/* 0D98EC 7F0A4DBC 00000000 */ nop -) -#endif - - - - - int cur_player_get_control_type(void){ return pPlayer->cur_player_control_type_0; @@ -780,7 +829,19 @@ int cur_player_get_control_type(void){ #ifdef NONMATCHING -void cur_player_set_control_type(void) { +void cur_player_set_control_type(int type) +{ + int langsize; + + pPlayer->cur_player_control_type_0 = type; + pPlayer->cur_player_control_type_1 = type; + pPlayer->cur_player_control_type_2 = (float)type; + langsize = 10; + if (j_text_trigger != 0) { + langsize = 0xe; + } + pPlayer->neg_vspacing_for_control_type_entry = -(langsize * type); + pPlayer->has_set_control_type_data = 1; } #else @@ -890,63 +951,21 @@ void sub_GAME_7F0A4F44(void){ watch_soundrelated_maybe = 0; } - - - - -#ifdef NONMATCHING -void is_holding_greater_than_2E_left_on_stick(void) { - +u32 is_holding_greater_than_2E_left_on_stick(void) +{ + return (get_cur_controller_horz_stick_pos('\0') < -0x2d); } -#else -GLOBAL_ASM( -.text -glabel is_holding_greater_than_2E_left_on_stick -/* 0D9A80 7F0A4F50 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0D9A84 7F0A4F54 AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9A88 7F0A4F58 0C00303B */ jal get_cur_controller_horz_stick_pos -/* 0D9A8C 7F0A4F5C 00002025 */ move $a0, $zero -/* 0D9A90 7F0A4F60 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D9A94 7F0A4F64 284EFFD3 */ slti $t6, $v0, -0x2d -/* 0D9A98 7F0A4F68 01C01025 */ move $v0, $t6 -/* 0D9A9C 7F0A4F6C 03E00008 */ jr $ra -/* 0D9AA0 7F0A4F70 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - - - - -#ifdef NONMATCHING -void is_holding_greater_than_2E_right_on_stick(void) { +u32 is_holding_greater_than_2E_right_on_stick(void) +{ + return ((get_cur_controller_horz_stick_pos('\0') < 0x2e) ^ 1); } -#else -GLOBAL_ASM( -.text -glabel is_holding_greater_than_2E_right_on_stick -/* 0D9AA4 7F0A4F74 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0D9AA8 7F0A4F78 AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9AAC 7F0A4F7C 0C00303B */ jal get_cur_controller_horz_stick_pos -/* 0D9AB0 7F0A4F80 00002025 */ move $a0, $zero -/* 0D9AB4 7F0A4F84 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D9AB8 7F0A4F88 284E002E */ slti $t6, $v0, 0x2e -/* 0D9ABC 7F0A4F8C 39C20001 */ xori $v0, $t6, 1 -/* 0D9AC0 7F0A4F90 03E00008 */ jr $ra -/* 0D9AC4 7F0A4F94 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif - - - - u32 get_controlstick_lr_enabled(void) { return controlstick_lr_enabled; } -void set_controlstick_lr_enabled_0(void) { +void set_controlstick_lr_disabled(void) { controlstick_lr_enabled = 0; } @@ -955,8 +974,19 @@ void set_controlstick_lr_enabled_0(void) { #ifdef NONMATCHING -void sub_GAME_7F0A4FB0(void) { +u8 sub_GAME_7F0A4FB0(void) +{ + u32 uVar1; + u8 ret; + + uVar1 = is_holding_greater_than_2E_left_on_stick(); + ret = uVar1 != 0; + if (ret) { + uVar1 = get_controlstick_lr_enabled(); + ret = uVar1 != 0; + } + return ret; } #else GLOBAL_ASM( @@ -1012,12 +1042,12 @@ glabel sub_GAME_7F0A4FEC ) #endif -u32 sub_GAME_7F0A5028(void) +u32 is_holding_greater_than_2E_up_on_stick(void) { return (get_cur_controller_vert_stick_pos('\0') < 0x2e) ^ 1; } -u32 sub_GAME_7F0A504C(void) +u32 is_holding_greater_than_2E_down_on_stick(void) { return (get_cur_controller_vert_stick_pos('\0') < -0x2d); } @@ -1046,7 +1076,7 @@ GLOBAL_ASM( glabel sub_GAME_7F0A5088 /* 0D9BB8 7F0A5088 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0D9BBC 7F0A508C AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9BC0 7F0A5090 0FC2940A */ jal sub_GAME_7F0A5028 +/* 0D9BC0 7F0A5090 0FC2940A */ jal is_holding_greater_than_2E_up_on_stick /* 0D9BC4 7F0A5094 00000000 */ nop /* 0D9BC8 7F0A5098 0002702B */ sltu $t6, $zero, $v0 /* 0D9BCC 7F0A509C 11C00005 */ beqz $t6, .L7F0A50B4 @@ -1077,7 +1107,7 @@ GLOBAL_ASM( glabel sub_GAME_7F0A50C4 /* 0D9BF4 7F0A50C4 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0D9BF8 7F0A50C8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9BFC 7F0A50CC 0FC29413 */ jal sub_GAME_7F0A504C +/* 0D9BFC 7F0A50CC 0FC29413 */ jal is_holding_greater_than_2E_down_on_stick /* 0D9C00 7F0A50D0 00000000 */ nop /* 0D9C04 7F0A50D4 0002702B */ sltu $t6, $zero, $v0 /* 0D9C08 7F0A50D8 11C00005 */ beqz $t6, .L7F0A50F0 @@ -1099,12 +1129,12 @@ glabel sub_GAME_7F0A50C4 -u32 sub_GAME_7F0A5100(void) +u32 is_holding_less_than_10_up_on_stick(void) { return (get_cur_controller_vert_stick_pos('\0') < 0x10) ^ 1; } -u32 sub_GAME_7F0A5124(void) +u32 is_holding_less_than_10_down_on_stick(void) { return (get_cur_controller_vert_stick_pos('\0') < -0xf); } @@ -1131,7 +1161,7 @@ GLOBAL_ASM( glabel sub_GAME_7F0A5160 /* 0D9C90 7F0A5160 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0D9C94 7F0A5164 AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9C98 7F0A5168 0FC29440 */ jal sub_GAME_7F0A5100 +/* 0D9C98 7F0A5168 0FC29440 */ jal is_holding_less_than_10_up_on_stick /* 0D9C9C 7F0A516C 00000000 */ nop /* 0D9CA0 7F0A5170 0002702B */ sltu $t6, $zero, $v0 /* 0D9CA4 7F0A5174 11C00005 */ beqz $t6, .L7F0A518C @@ -1162,7 +1192,7 @@ GLOBAL_ASM( glabel sub_GAME_7F0A519C /* 0D9CCC 7F0A519C 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0D9CD0 7F0A51A0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9CD4 7F0A51A4 0FC29449 */ jal sub_GAME_7F0A5124 +/* 0D9CD4 7F0A51A4 0FC29449 */ jal is_holding_less_than_10_down_on_stick /* 0D9CD8 7F0A51A8 00000000 */ nop /* 0D9CDC 7F0A51AC 0002702B */ sltu $t6, $zero, $v0 /* 0D9CE0 7F0A51B0 11C00005 */ beqz $t6, .L7F0A51C8 @@ -1183,69 +1213,23 @@ glabel sub_GAME_7F0A519C -#ifdef NONMATCHING -void sub_GAME_7F0A51D8(void) { +void sub_GAME_7F0A51D8(void) +{ + D_80040B04 = 0x80; + play_sfx_a1(ptr_sfx_buf,0xec,NULL); + return; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A51D8 -/* 0D9D08 7F0A51D8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0D9D0C 7F0A51DC AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9D10 7F0A51E0 240E0080 */ li $t6, 128 -/* 0D9D14 7F0A51E4 3C018004 */ lui $at, %hi(D_80040B04) -/* 0D9D18 7F0A51E8 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0D9D1C 7F0A51EC AC2E0B04 */ sw $t6, %lo(D_80040B04)($at) -/* 0D9D20 7F0A51F0 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0D9D24 7F0A51F4 240500EC */ li $a1, 236 -/* 0D9D28 7F0A51F8 0C002382 */ jal play_sfx_a1 -/* 0D9D2C 7F0A51FC 00003025 */ move $a2, $zero -/* 0D9D30 7F0A5200 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D9D34 7F0A5204 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0D9D38 7F0A5208 03E00008 */ jr $ra -/* 0D9D3C 7F0A520C 00000000 */ nop -) -#endif - - - - - -#ifdef NONMATCHING -void sub_GAME_7F0A5210(void) { +void sub_GAME_7F0A5210(void) +{ + set_controlstick_lr_disabled(); + play_sfx_a1(ptr_sfx_buf,0x9f,NULL); + if ((D_80040B10 << 0x10) < get_random_value()) { + sub_GAME_7F0A51D8(); + } + return; } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A5210 -/* 0D9D40 7F0A5210 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0D9D44 7F0A5214 AFBF0014 */ sw $ra, 0x14($sp) -/* 0D9D48 7F0A5218 0FC293E9 */ jal set_controlstick_lr_enabled_0 -/* 0D9D4C 7F0A521C 00000000 */ nop -/* 0D9D50 7F0A5220 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0D9D54 7F0A5224 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0D9D58 7F0A5228 2405009F */ li $a1, 159 -/* 0D9D5C 7F0A522C 0C002382 */ jal play_sfx_a1 -/* 0D9D60 7F0A5230 00003025 */ move $a2, $zero -/* 0D9D64 7F0A5234 0C002914 */ jal get_random_value -/* 0D9D68 7F0A5238 00000000 */ nop -/* 0D9D6C 7F0A523C 3C0E8004 */ lui $t6, %hi(D_80040B10) -/* 0D9D70 7F0A5240 8DCE0B10 */ lw $t6, %lo(D_80040B10)($t6) -/* 0D9D74 7F0A5244 000E7C00 */ sll $t7, $t6, 0x10 -/* 0D9D78 7F0A5248 01E2082B */ sltu $at, $t7, $v0 -/* 0D9D7C 7F0A524C 50200004 */ beql $at, $zero, .L7F0A5260 -/* 0D9D80 7F0A5250 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D9D84 7F0A5254 0FC29476 */ jal sub_GAME_7F0A51D8 -/* 0D9D88 7F0A5258 00000000 */ nop -/* 0D9D8C 7F0A525C 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0A5260: -/* 0D9D90 7F0A5260 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0D9D94 7F0A5264 03E00008 */ jr $ra -/* 0D9D98 7F0A5268 00000000 */ nop -) -#endif @@ -1437,7 +1421,7 @@ glabel sub_GAME_7F0A53D8 /* 0D9FB4 7F0A5484 3C018004 */ lui $at, %hi(D_80040994) /* 0D9FB8 7F0A5488 5120000C */ beql $t1, $zero, .L7F0A54BC /* 0D9FBC 7F0A548C 8FAA0018 */ lw $t2, 0x18($sp) -/* 0D9FC0 7F0A5490 0FC2AD29 */ jal sub_GAME_7F0AB4A4 +/* 0D9FC0 7F0A5490 0FC2AD29 */ jal zero_D_800409A4 /* 0D9FC4 7F0A5494 AC200994 */ sw $zero, %lo(D_80040994)($at) /* 0D9FC8 7F0A5498 0FC29484 */ jal sub_GAME_7F0A5210 /* 0D9FCC 7F0A549C 00000000 */ nop @@ -1453,7 +1437,7 @@ glabel sub_GAME_7F0A53D8 /* 0D9FF0 7F0A54C0 3C018004 */ lui $at, %hi(D_80040994) /* 0D9FF4 7F0A54C4 5140000C */ beql $t2, $zero, .L7F0A54F8 /* 0D9FF8 7F0A54C8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0D9FFC 7F0A54CC 0FC293E9 */ jal set_controlstick_lr_enabled_0 +/* 0D9FFC 7F0A54CC 0FC293E9 */ jal set_controlstick_lr_disabled /* 0DA000 7F0A54D0 AC2B0994 */ sw $t3, %lo(D_80040994)($at) /* 0DA004 7F0A54D4 0FC29484 */ jal sub_GAME_7F0A5210 /* 0DA008 7F0A54D8 00000000 */ nop @@ -1503,7 +1487,7 @@ glabel sub_GAME_7F0A5504 /* 0DA068 7F0A5538 3C018004 */ lui $at, %hi(D_80040994) /* 0DA06C 7F0A553C 55C00006 */ bnezl $t6, .L7F0A5558 /* 0DA070 7F0A5540 00002025 */ move $a0, $zero -/* 0DA074 7F0A5544 0FC293E9 */ jal set_controlstick_lr_enabled_0 +/* 0DA074 7F0A5544 0FC293E9 */ jal set_controlstick_lr_disabled /* 0DA078 7F0A5548 AC2F0994 */ sw $t7, %lo(D_80040994)($at) /* 0DA07C 7F0A554C 1000001A */ b .L7F0A55B8 /* 0DA080 7F0A5550 8FBF0014 */ lw $ra, 0x14($sp) @@ -1524,7 +1508,7 @@ glabel sub_GAME_7F0A5504 /* 0DA0B0 7F0A5580 3C018004 */ lui $at, %hi(D_80040994) /* 0DA0B4 7F0A5584 5700000C */ bnezl $t8, .L7F0A55B8 /* 0DA0B8 7F0A5588 8FBF0014 */ lw $ra, 0x14($sp) -/* 0DA0BC 7F0A558C 0FC2AD23 */ jal sub_GAME_7F0AB48C +/* 0DA0BC 7F0A558C 0FC2AD23 */ jal zero_D_80040998 /* 0DA0C0 7F0A5590 AC390994 */ sw $t9, %lo(D_80040994)($at) /* 0DA0C4 7F0A5594 0FC29484 */ jal sub_GAME_7F0A5210 /* 0DA0C8 7F0A5598 00000000 */ nop @@ -1610,9 +1594,9 @@ glabel sub_GAME_7F0A55C4 /* 0DA1A8 7F0A5678 3C018004 */ lui $at, %hi(D_80040994) /* 0DA1AC 7F0A567C 57000006 */ bnezl $t8, .L7F0A5698 /* 0DA1B0 7F0A5680 8FBF0014 */ lw $ra, 0x14($sp) -/* 0DA1B4 7F0A5684 0FC2AD26 */ jal sub_GAME_7F0AB498 +/* 0DA1B4 7F0A5684 0FC2AD26 */ jal zero_D_8004099C /* 0DA1B8 7F0A5688 AC390994 */ sw $t9, %lo(D_80040994)($at) -/* 0DA1BC 7F0A568C 0FC293E9 */ jal set_controlstick_lr_enabled_0 +/* 0DA1BC 7F0A568C 0FC293E9 */ jal set_controlstick_lr_disabled /* 0DA1C0 7F0A5690 00000000 */ nop .L7F0A5694: /* 0DA1C4 7F0A5694 8FBF0014 */ lw $ra, 0x14($sp) @@ -1659,9 +1643,9 @@ glabel sub_GAME_7F0A56A4 /* 0DA218 7F0A56E8 3C018004 */ lui $at, %hi(D_80040994) /* 0DA21C 7F0A56EC 55C00008 */ bnezl $t6, .L7F0A5710 /* 0DA220 7F0A56F0 00002025 */ move $a0, $zero -/* 0DA224 7F0A56F4 0FC2AD23 */ jal sub_GAME_7F0AB48C +/* 0DA224 7F0A56F4 0FC2AD23 */ jal zero_D_80040998 /* 0DA228 7F0A56F8 AC2F0994 */ sw $t7, %lo(D_80040994)($at) -/* 0DA22C 7F0A56FC 0FC293E9 */ jal set_controlstick_lr_enabled_0 +/* 0DA22C 7F0A56FC 0FC293E9 */ jal set_controlstick_lr_disabled /* 0DA230 7F0A5700 00000000 */ nop /* 0DA234 7F0A5704 1000001C */ b .L7F0A5778 /* 0DA238 7F0A5708 8FBF0014 */ lw $ra, 0x14($sp) @@ -1737,7 +1721,7 @@ glabel sub_GAME_7F0A5784 /* 0DA2E8 7F0A57B8 3C018004 */ lui $at, %hi(D_80040994) /* 0DA2EC 7F0A57BC 55C0000E */ bnezl $t6, .L7F0A57F8 /* 0DA2F0 7F0A57C0 00002025 */ move $a0, $zero -/* 0DA2F4 7F0A57C4 0FC2AD26 */ jal sub_GAME_7F0AB498 +/* 0DA2F4 7F0A57C4 0FC2AD26 */ jal zero_D_8004099C /* 0DA2F8 7F0A57C8 AC2F0994 */ sw $t7, %lo(D_80040994)($at) /* 0DA2FC 7F0A57CC 0FC29484 */ jal sub_GAME_7F0A5210 /* 0DA300 7F0A57D0 00000000 */ nop @@ -1765,7 +1749,7 @@ glabel sub_GAME_7F0A5784 /* 0DA34C 7F0A581C 3C018004 */ lui $at, %hi(D_80040994) /* 0DA350 7F0A5820 5700000C */ bnezl $t8, .L7F0A5854 /* 0DA354 7F0A5824 8FBF0014 */ lw $ra, 0x14($sp) -/* 0DA358 7F0A5828 0FC2AD29 */ jal sub_GAME_7F0AB4A4 +/* 0DA358 7F0A5828 0FC2AD29 */ jal zero_D_800409A4 /* 0DA35C 7F0A582C AC200994 */ sw $zero, %lo(D_80040994)($at) /* 0DA360 7F0A5830 0FC29484 */ jal sub_GAME_7F0A5210 /* 0DA364 7F0A5834 00000000 */ nop @@ -1788,129 +1772,100 @@ glabel sub_GAME_7F0A5784 -#ifdef NONMATCHING -void sub_GAME_7F0A5860(void) { +void sub_GAME_7F0A5860(void) +{ + if ((get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD) != 0) || (sub_GAME_7F0A5088() != 0)) + { + if (watch_soundrelated_maybe == 0) + { + D_80040998 = 1; + set_D_80040AE0_0(); + return; + } + } + else + { + + } + if ((get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD) != 0) || (sub_GAME_7F0A50C4() != 0)) + { + if (watch_soundrelated_maybe == 0) + { + D_80040998 = 1; + set_D_80040AE0_0(); + } + } + else + { + + } } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A5860 -/* 0DA390 7F0A5860 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0DA394 7F0A5864 AFBF0014 */ sw $ra, 0x14($sp) -/* 0DA398 7F0A5868 00002025 */ move $a0, $zero -/* 0DA39C 7F0A586C 0C0030EB */ jal get_controller_buttons_pressed -/* 0DA3A0 7F0A5870 24050808 */ li $a1, 2056 -/* 0DA3A4 7F0A5874 14400004 */ bnez $v0, .L7F0A5888 -/* 0DA3A8 7F0A5878 00000000 */ nop -/* 0DA3AC 7F0A587C 0FC29422 */ jal sub_GAME_7F0A5088 -/* 0DA3B0 7F0A5880 00000000 */ nop -/* 0DA3B4 7F0A5884 1040000A */ beqz $v0, .L7F0A58B0 -.L7F0A5888: -/* 0DA3B8 7F0A5888 3C0E8004 */ lui $t6, %hi(watch_soundrelated_maybe) -/* 0DA3BC 7F0A588C 8DCE09A8 */ lw $t6, %lo(watch_soundrelated_maybe)($t6) -/* 0DA3C0 7F0A5890 240F0001 */ li $t7, 1 -/* 0DA3C4 7F0A5894 3C018004 */ lui $at, %hi(D_80040998) -/* 0DA3C8 7F0A5898 55C00006 */ bnezl $t6, .L7F0A58B4 -/* 0DA3CC 7F0A589C 00002025 */ move $a0, $zero -/* 0DA3D0 7F0A58A0 0FC2941F */ jal set_D_80040AE0_0 -/* 0DA3D4 7F0A58A4 AC2F0998 */ sw $t7, %lo(D_80040998)($at) -/* 0DA3D8 7F0A58A8 10000012 */ b .L7F0A58F4 -/* 0DA3DC 7F0A58AC 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0A58B0: -/* 0DA3E0 7F0A58B0 00002025 */ move $a0, $zero -.L7F0A58B4: -/* 0DA3E4 7F0A58B4 0C0030EB */ jal get_controller_buttons_pressed -/* 0DA3E8 7F0A58B8 24050404 */ li $a1, 1028 -/* 0DA3EC 7F0A58BC 14400004 */ bnez $v0, .L7F0A58D0 -/* 0DA3F0 7F0A58C0 00000000 */ nop -/* 0DA3F4 7F0A58C4 0FC29431 */ jal sub_GAME_7F0A50C4 -/* 0DA3F8 7F0A58C8 00000000 */ nop -/* 0DA3FC 7F0A58CC 10400008 */ beqz $v0, .L7F0A58F0 -.L7F0A58D0: -/* 0DA400 7F0A58D0 3C188004 */ lui $t8, %hi(watch_soundrelated_maybe) -/* 0DA404 7F0A58D4 8F1809A8 */ lw $t8, %lo(watch_soundrelated_maybe)($t8) -/* 0DA408 7F0A58D8 24190001 */ li $t9, 1 -/* 0DA40C 7F0A58DC 3C018004 */ lui $at, %hi(D_80040998) -/* 0DA410 7F0A58E0 57000004 */ bnezl $t8, .L7F0A58F4 -/* 0DA414 7F0A58E4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0DA418 7F0A58E8 0FC2941F */ jal set_D_80040AE0_0 -/* 0DA41C 7F0A58EC AC390998 */ sw $t9, %lo(D_80040998)($at) -.L7F0A58F0: -/* 0DA420 7F0A58F0 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0A58F4: -/* 0DA424 7F0A58F4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0DA428 7F0A58F8 03E00008 */ jr $ra -/* 0DA42C 7F0A58FC 00000000 */ nop -) -#endif +void sub_GAME_7F0A5900(void) +{ + if ((get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD) != 0) || (sub_GAME_7F0A5088() != 0)) + { + if (watch_soundrelated_maybe == 0) + { + D_80040998 = 0; + set_D_80040AE0_0(); + return; + } + } + else + { + } + if ((get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD) != 0) || (sub_GAME_7F0A50C4() != 0)) + { + if (watch_soundrelated_maybe == 0) + { + D_80040998 = 0; + set_D_80040AE0_0(); + } + } + else + { - - -#ifdef NONMATCHING -void sub_GAME_7F0A5900(void) { - + } } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A5900 -/* 0DA430 7F0A5900 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0DA434 7F0A5904 AFBF0014 */ sw $ra, 0x14($sp) -/* 0DA438 7F0A5908 00002025 */ move $a0, $zero -/* 0DA43C 7F0A590C 0C0030EB */ jal get_controller_buttons_pressed -/* 0DA440 7F0A5910 24050808 */ li $a1, 2056 -/* 0DA444 7F0A5914 14400004 */ bnez $v0, .L7F0A5928 -/* 0DA448 7F0A5918 00000000 */ nop -/* 0DA44C 7F0A591C 0FC29422 */ jal sub_GAME_7F0A5088 -/* 0DA450 7F0A5920 00000000 */ nop -/* 0DA454 7F0A5924 10400009 */ beqz $v0, .L7F0A594C -.L7F0A5928: -/* 0DA458 7F0A5928 3C0E8004 */ lui $t6, %hi(watch_soundrelated_maybe) -/* 0DA45C 7F0A592C 8DCE09A8 */ lw $t6, %lo(watch_soundrelated_maybe)($t6) -/* 0DA460 7F0A5930 3C018004 */ lui $at, %hi(D_80040998) -/* 0DA464 7F0A5934 55C00006 */ bnezl $t6, .L7F0A5950 -/* 0DA468 7F0A5938 00002025 */ move $a0, $zero -/* 0DA46C 7F0A593C 0FC2941F */ jal set_D_80040AE0_0 -/* 0DA470 7F0A5940 AC200998 */ sw $zero, %lo(D_80040998)($at) -/* 0DA474 7F0A5944 10000011 */ b .L7F0A598C -/* 0DA478 7F0A5948 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0A594C: -/* 0DA47C 7F0A594C 00002025 */ move $a0, $zero -.L7F0A5950: -/* 0DA480 7F0A5950 0C0030EB */ jal get_controller_buttons_pressed -/* 0DA484 7F0A5954 24050404 */ li $a1, 1028 -/* 0DA488 7F0A5958 14400004 */ bnez $v0, .L7F0A596C -/* 0DA48C 7F0A595C 00000000 */ nop -/* 0DA490 7F0A5960 0FC29431 */ jal sub_GAME_7F0A50C4 -/* 0DA494 7F0A5964 00000000 */ nop -/* 0DA498 7F0A5968 10400007 */ beqz $v0, .L7F0A5988 -.L7F0A596C: -/* 0DA49C 7F0A596C 3C0F8004 */ lui $t7, %hi(watch_soundrelated_maybe) -/* 0DA4A0 7F0A5970 8DEF09A8 */ lw $t7, %lo(watch_soundrelated_maybe)($t7) -/* 0DA4A4 7F0A5974 3C018004 */ lui $at, %hi(D_80040998) -/* 0DA4A8 7F0A5978 55E00004 */ bnezl $t7, .L7F0A598C -/* 0DA4AC 7F0A597C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0DA4B0 7F0A5980 0FC2941F */ jal set_D_80040AE0_0 -/* 0DA4B4 7F0A5984 AC200998 */ sw $zero, %lo(D_80040998)($at) -.L7F0A5988: -/* 0DA4B8 7F0A5988 8FBF0014 */ lw $ra, 0x14($sp) -.L7F0A598C: -/* 0DA4BC 7F0A598C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0DA4C0 7F0A5990 03E00008 */ jr $ra -/* 0DA4C4 7F0A5994 00000000 */ nop -) -#endif #ifdef NONMATCHING -void sub_GAME_7F0A5998(void) { +void sub_GAME_7F0A5998(void) +{ + if ((get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD) != 0) || (sub_GAME_7F0A5088() != 0)) + { + D_8004099C = (s32) (D_8004099C - 1); + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + else + { + if ((get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD) != 0) || (sub_GAME_7F0A50C4() != 0)) + { + D_8004099C = (s32) (D_8004099C + 1); + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + else + { + } + } + if (D_8004099C >= 0xa) + { + D_8004099C = 0; + return; + } + if (D_8004099C < 0) + { + D_8004099C = 9; + } } #else GLOBAL_ASM( @@ -1981,8 +1936,21 @@ glabel sub_GAME_7F0A5998 #ifdef NONMATCHING -void sub_GAME_7F0A5A64(void) { - +void sub_GAME_7F0A5A64(void) +{ + if ((get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD) == 0) && (sub_GAME_7F0A5088() == 0)) { + if ((get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD) != 0) || (sub_GAME_7F0A50C4() != 0)) { + D_8004099C = 1; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + } + else { + D_8004099C = 9; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } #else GLOBAL_ASM( @@ -2037,8 +2005,21 @@ glabel sub_GAME_7F0A5A64 #ifdef NONMATCHING -void sub_GAME_7F0A5AF4(void) { - +void sub_GAME_7F0A5AF4(void) +{ + if ((get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD) == 0) && (sub_GAME_7F0A5088() == 0)) { + if ((get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD) != 0) || (sub_GAME_7F0A50C4() != 0)) { + D_8004099c = 2; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + } + else { + D_8004099c = 0; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + return; } #else GLOBAL_ASM( @@ -2341,12 +2322,12 @@ glabel sub_GAME_7F0A5B80 /* 0DAA10 7F0A5EE0 46122180 */ add.s $f6, $f4, $f18 /* 0DAA14 7F0A5EE4 E4C60000 */ swc1 $f6, ($a2) .L7F0A5EE8: -/* 0DAA18 7F0A5EE8 0FC29440 */ jal sub_GAME_7F0A5100 +/* 0DAA18 7F0A5EE8 0FC29440 */ jal is_holding_less_than_10_up_on_stick /* 0DAA1C 7F0A5EEC 00000000 */ nop /* 0DAA20 7F0A5EF0 3C068004 */ lui $a2, %hi(D_800409BC) /* 0DAA24 7F0A5EF4 14400006 */ bnez $v0, .L7F0A5F10 /* 0DAA28 7F0A5EF8 24C609BC */ addiu $a2, %lo(D_800409BC) # addiu $a2, $a2, 0x9bc -/* 0DAA2C 7F0A5EFC 0FC29449 */ jal sub_GAME_7F0A5124 +/* 0DAA2C 7F0A5EFC 0FC29449 */ jal is_holding_less_than_10_down_on_stick /* 0DAA30 7F0A5F00 00000000 */ nop /* 0DAA34 7F0A5F04 3C068004 */ lui $a2, %hi(D_800409BC) /* 0DAA38 7F0A5F08 10400005 */ beqz $v0, .L7F0A5F20 @@ -2723,11 +2704,11 @@ glabel sub_GAME_7F0A611C /* 0DAF34 7F0A6404 46122180 */ add.s $f6, $f4, $f18 /* 0DAF38 7F0A6408 E6060000 */ swc1 $f6, ($s0) .L7F0A640C: -/* 0DAF3C 7F0A640C 0FC29440 */ jal sub_GAME_7F0A5100 +/* 0DAF3C 7F0A640C 0FC29440 */ jal is_holding_less_than_10_up_on_stick /* 0DAF40 7F0A6410 00000000 */ nop /* 0DAF44 7F0A6414 54400006 */ bnezl $v0, .L7F0A6430 /* 0DAF48 7F0A6418 24190001 */ li $t9, 1 -/* 0DAF4C 7F0A641C 0FC29449 */ jal sub_GAME_7F0A5124 +/* 0DAF4C 7F0A641C 0FC29449 */ jal is_holding_less_than_10_down_on_stick /* 0DAF50 7F0A6420 00000000 */ nop /* 0DAF54 7F0A6424 10400005 */ beqz $v0, .L7F0A643C /* 0DAF58 7F0A6428 3C018004 */ lui $at, %hi(D_80040AE4) @@ -2873,54 +2854,30 @@ glabel sub_GAME_7F0A611C -#ifdef NONMATCHING -void sub_GAME_7F0A6618(void) { +void sub_GAME_7F0A6618(void) +{ + if ((get_controller_buttons_pressed('\0',U_CBUTTONS|U_JPAD) != 0) || (sub_GAME_7F0A5088() != 0)) + { + D_800409A0 = 4; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + else + { + + } + if ((get_controller_buttons_pressed('\0',D_CBUTTONS|D_JPAD) != 0) || (sub_GAME_7F0A50C4() != 0)) + { + D_800409A0 = 1; + set_D_80040AE0_0(); + sub_GAME_7F0A4F44(); + } + else + { + + } } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0A6618 -/* 0DB148 7F0A6618 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0DB14C 7F0A661C AFBF0014 */ sw $ra, 0x14($sp) -/* 0DB150 7F0A6620 00002025 */ move $a0, $zero -/* 0DB154 7F0A6624 0C0030EB */ jal get_controller_buttons_pressed -/* 0DB158 7F0A6628 24050808 */ li $a1, 2056 -/* 0DB15C 7F0A662C 54400005 */ bnezl $v0, .L7F0A6644 -/* 0DB160 7F0A6630 240E0004 */ li $t6, 4 -/* 0DB164 7F0A6634 0FC29422 */ jal sub_GAME_7F0A5088 -/* 0DB168 7F0A6638 00000000 */ nop -/* 0DB16C 7F0A663C 10400006 */ beqz $v0, .L7F0A6658 -/* 0DB170 7F0A6640 240E0004 */ li $t6, 4 -.L7F0A6644: -/* 0DB174 7F0A6644 3C018004 */ lui $at, %hi(D_800409A0) -/* 0DB178 7F0A6648 0FC2941F */ jal set_D_80040AE0_0 -/* 0DB17C 7F0A664C AC2E09A0 */ sw $t6, %lo(D_800409A0)($at) -/* 0DB180 7F0A6650 0FC293D1 */ jal sub_GAME_7F0A4F44 -/* 0DB184 7F0A6654 00000000 */ nop -.L7F0A6658: -/* 0DB188 7F0A6658 00002025 */ move $a0, $zero -/* 0DB18C 7F0A665C 0C0030EB */ jal get_controller_buttons_pressed -/* 0DB190 7F0A6660 24050404 */ li $a1, 1028 -/* 0DB194 7F0A6664 54400005 */ bnezl $v0, .L7F0A667C -/* 0DB198 7F0A6668 240F0001 */ li $t7, 1 -/* 0DB19C 7F0A666C 0FC29431 */ jal sub_GAME_7F0A50C4 -/* 0DB1A0 7F0A6670 00000000 */ nop -/* 0DB1A4 7F0A6674 10400006 */ beqz $v0, .L7F0A6690 -/* 0DB1A8 7F0A6678 240F0001 */ li $t7, 1 -.L7F0A667C: -/* 0DB1AC 7F0A667C 3C018004 */ lui $at, %hi(D_800409A0) -/* 0DB1B0 7F0A6680 0FC2941F */ jal set_D_80040AE0_0 -/* 0DB1B4 7F0A6684 AC2F09A0 */ sw $t7, %lo(D_800409A0)($at) -/* 0DB1B8 7F0A6688 0FC293D1 */ jal sub_GAME_7F0A4F44 -/* 0DB1BC 7F0A668C 00000000 */ nop -.L7F0A6690: -/* 0DB1C0 7F0A6690 8FBF0014 */ lw $ra, 0x14($sp) -/* 0DB1C4 7F0A6694 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0DB1C8 7F0A6698 03E00008 */ jr $ra -/* 0DB1CC 7F0A669C 00000000 */ nop -) -#endif @@ -4653,8 +4610,121 @@ void sub_GAME_7F0A77A8(u32 param_1,u32 param_2) #ifdef NONMATCHING -void sub_GAME_7F0A77C8(void) { +s32 sub_GAME_7F0A77C8(s32 arg0) +{ + ?32 sp7C; + s32 sp78; + s32 sp74; + s32 sp70; + s32 sp6C; + s32 sp68; + s32 sp64; + s32 sp60; + s32 sp5C; + s32 sp58; + s32 sp54; + s32 sp50; + s32 sp4C; + s16 sp44; + s32 temp_s0; + s32 temp_s0_2; + s32 temp_s0_3; + s32 temp_s0_4; + s32 temp_v1; + s32 phi_v0; + s32 phi_v0_2; + s32 phi_v0_3; + s32 phi_s0; + sp5C = (s32) ptrFirstFontTableSmall; + sp58 = (s32) ptrSecondFontTableSmall; + sp54 = get_textptr_for_textID(0xac24); + sp50 = get_textptr_for_textID(0xac25); + sp4C = get_textptr_for_textID(0xac26); + sp7C = 0x51; + if (j_text_trigger != 0) + { + phi_v0 = 0xf; + } + else + { + phi_v0 = 0; + } + sp78 = (s32) (phi_v0 + 0xbd); + if (j_text_trigger != 0) + { + phi_v0_2 = 0xa; + } + else + { + phi_v0_2 = 0; + } + sp74 = (s32) (phi_v0_2 + 0x88); + if (j_text_trigger != 0) + { + phi_v0_3 = 3; + } + else + { + phi_v0_3 = 0; + } + temp_v1 = phi_v0_3 + 0x4c; + sp6C = temp_v1; + sp70 = temp_v1; + sp68 = temp_v1; + if (watch_soundrelated_maybe != 0) + { + if (D_800409A4 == 0) + { + if ((get_cur_controller_horz_stick_pos(0) >= 0x2e) || (get_controller_buttons_held(0, 0x111) != 0)) + { + D_800409A4 = 1; + } + else + { + + } + } + else + { + if (D_800409A4 != 0) + { + if ((get_cur_controller_horz_stick_pos(0) < -0x2d) || (get_controller_buttons_held(0, 0x222) != 0)) + { + D_800409A4 = 0; + } + else + { + + } + } + } + } + if (watch_soundrelated_maybe != 0) + { + sub_GAME_7F0AE98C(&sp60, &sp64, sp54, sp58, sp5C, 0); + en_text_write_stuff(arg0, &sp7C, &sp70, sp54, sp58, sp5C, 0xa0ffa0f0, sp64, sp60, 0, 0); + if (D_800409A4 != 0) + { + jp_text_write_stuff(temp_s0, &sp78, &sp6C, sp50, sp58, sp5C, -1, 0x7000a0, get_video2_settings_txtClipW(), get_video2_settings_txtClipH(), 0, 0); + en_text_write_stuff(temp_s0_2, &sp74, &sp68, sp4C, sp58, sp5C, 0xff00b0, get_video2_settings_txtClipW(), get_video2_settings_txtClipH(), 0, 0); + } + else + { + if (D_800409A4 == 0) + { + en_text_write_stuff(temp_s0, &sp78, &sp6C, sp50, sp58, sp5C, 0xff00b0, get_video2_settings_txtClipW(), get_video2_settings_txtClipH(), 0, 0); + jp_text_write_stuff(temp_s0_3, &sp74, &sp68, sp4C, sp58, sp5C, -1, 0x7000a0, get_video2_settings_txtClipW(), get_video2_settings_txtClipH(), 0, 0); + } + } + } + else + { + sub_GAME_7F0AE98C(&sp60, &sp64, sp54, sp58, sp5C, 0); + en_text_write_stuff(en_text_write_stuff(arg0, &sp7C, &sp70, sp54, sp58, sp5C, 0x800080, sp64, sp60, 0, 0), &sp78, &sp6C, sp50, sp58, sp5C, 0x800080, get_video2_settings_txtClipW(), get_video2_settings_txtClipH(), 0, 0); + en_text_write_stuff(temp_s0_4, &sp74, &sp68, sp4C, sp58, sp5C, 0x800080, get_video2_settings_txtClipW(), get_video2_settings_txtClipH(), 0, 0); + } + return; } #else GLOBAL_ASM( @@ -5090,8 +5160,35 @@ u32 sub_GAME_7F0A7DBC(u32 uParm1) { #ifdef NONMATCHING -void sub_GAME_7F0A7DC4(void) { +void sub_GAME_7F0A7DC4(s32 arg0) +{ + s32 txtptr; + s32 sp50; + ?32 sp4C; + s32 sp48; + s32 sp44; + s32 pFirstFontTable; + s32 pSecondFontTable; + s32 joffset; + txtptr = get_textptr_for_textID(0xac2b); + if (j_text_trigger != 0) + { + joffset = -5; + } + else + { + joffset = 0; + } + sp50 = (s32) (joffset + 0x65); + sp4C = 0x31; + sp48 = 0; + sp44 = 0; + pFirstFontTable = (s32) ptrFirstFontTableSmall; + pSecondFontTable = (s32) ptrSecondFontTableSmall; + arg0 = microcode_constructor(arg0); + sub_GAME_7F0AE98C(&sp48, &sp44, txtptr, pSecondFontTable, pFirstFontTable, 0); + en_text_write_stuff(arg0, &sp50, &sp4C, txtptr, pSecondFontTable, pFirstFontTable, 0xff00b0, sp44, sp48, 0, 0); } #else GLOBAL_ASM( @@ -5490,8 +5587,22 @@ glabel debug_gun_watch_move_related #ifdef NONMATCHING -void sub_GAME_7F0A830C(void) { +s32 sub_GAME_7F0A830C(void) +{ + s32 temp_s0; + s32 phi_s0; + temp_s0 = sub_GAME_7F0A714C(0); + if (check_watch_page_transistion_running() != 1) + { + phi_s0 = debug_gun_watch_move_related(sub_GAME_7F0A7DBC(sub_GAME_7F0A7C18(sub_GAME_7F0A7DC4(temp_s0)))); + } + else + { + check_watch_page_transistion_running(); + phi_s0 = temp_s0; + } + return phi_s0; } #else GLOBAL_ASM( @@ -5526,8 +5637,37 @@ glabel sub_GAME_7F0A830C /* 0DCE9C 7F0A836C 8FB00018 */ lw $s0, 0x18($sp) /* 0DCEA0 7F0A8370 03E00008 */ jr $ra /* 0DCEA4 7F0A8374 27BD0020 */ addiu $sp, $sp, 0x20 +) +#endif -sub_GAME_7F0A8378: + + +#ifdef NONMATCHING +void sub_GAME_7F0A8378(void) +{ + s32 sp1C; + + if ((get_controller_buttons_pressed(0, 0xa000) == 0) && (get_controller_buttons_pressed(0, 0x1000) != 0)) + { + sp1C = get_item_in_hand(0); + if (sub_GAME_7F08D2A8(D_800409B8) != sp1C) + { + remove_hands_item(0, sub_GAME_7F08D2A8(D_800409B8)); + remove_hands_item(1, 0); + sub_GAME_7F08D8D0(D_800409B8); + D_800409C4 = 0xa; + play_sfx_a1(ptr_sfx_buf, 0x9f, 0); + } + } + else + { + + } +} +#else +GLOBAL_ASM( +.text +glabel sub_GAME_7F0A8378 /* 0DCEA8 7F0A8378 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 0DCEAC 7F0A837C AFBF0014 */ sw $ra, 0x14($sp) /* 0DCEB0 7F0A8380 00002025 */ move $a0, $zero @@ -5810,7 +5950,7 @@ glabel debug_gun_watch_move_related2 /* 0DD298 7F0A8768 0FC234D0 */ jal sub_GAME_7F08D340 /* 0DD29C 7F0A876C 02002025 */ move $a0, $s0 /* 0DD2A0 7F0A8770 27A40084 */ addiu $a0, $sp, 0x84 -/* 0DD2A4 7F0A8774 0C0029FF */ jal string_load_parse_something +/* 0DD2A4 7F0A8774 0C0029FF */ jal string_append_from_obseg_textbank /* 0DD2A8 7F0A8778 00402825 */ move $a1, $v0 /* 0DD2AC 7F0A877C 0FC2340E */ jal sub_GAME_7F08D038 /* 0DD2B0 7F0A8780 26100001 */ addiu $s0, $s0, 1 @@ -6303,7 +6443,7 @@ glabel debug_gun_watch_move_related2 /* 0DDE90 7F0A9320 0FC2374A */ jal sub_GAME_7F08D340 /* 0DDE94 7F0A9324 02002025 */ move $a0, $s0 /* 0DDE98 7F0A9328 27A4008C */ addiu $a0, $sp, 0x8c -/* 0DDE9C 7F0A932C 0C002A03 */ jal string_load_parse_something +/* 0DDE9C 7F0A932C 0C002A03 */ jal string_append_from_obseg_textbank /* 0DDEA0 7F0A9330 00402825 */ move $a1, $v0 /* 0DDEA4 7F0A9334 0FC23667 */ jal sub_GAME_7F08D038 /* 0DDEA8 7F0A9338 26100001 */ addiu $s0, $s0, 1 @@ -7068,7 +7208,7 @@ glabel sub_GAME_7F0A8FEC -void sub_GAME_7F0A9180(void) { +void call_sfx_c_700091C8(void) { sfx_c_700091C8(); } @@ -7221,22 +7361,26 @@ glabel sub_GAME_7F0A91C8 u16 sub_GAME_7F0A9358(void) { - return D_80040B58; + return mTrack2Vol; } #ifdef NONMATCHING -void sub_GAME_7F0A9364(void) { +void sub_GAME_7F0A9364(s16 param_1) +{ + mTrack2Vol = param_1; + musicTrack2Vol(param_1); + return; } #else GLOBAL_ASM( .text glabel sub_GAME_7F0A9364 /* 0DDE94 7F0A9364 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0DDE98 7F0A9368 3C028004 */ lui $v0, %hi(D_80040B58) -/* 0DDE9C 7F0A936C 24420B58 */ addiu $v0, %lo(D_80040B58) # addiu $v0, $v0, 0xb58 +/* 0DDE98 7F0A9368 3C028004 */ lui $v0, %hi(mTrack2Vol) +/* 0DDE9C 7F0A936C 24420B58 */ addiu $v0, %lo(mTrack2Vol) # addiu $v0, $v0, 0xb58 /* 0DDEA0 7F0A9370 AFBF0014 */ sw $ra, 0x14($sp) /* 0DDEA4 7F0A9374 AFA40018 */ sw $a0, 0x18($sp) /* 0DDEA8 7F0A9378 00802825 */ move $a1, $a0 @@ -7417,8 +7561,14 @@ glabel sub_GAME_7F0A9398 #ifdef NONMATCHING -void sub_GAME_7F0A95C4(void) { - +f32 sub_GAME_7F0A95C4(f32 param_1,f32 param_2,f32 param_3) +{ + if (param_1 < param_2) { + return param_1 + (param_2 - param_1) / param_3; + } + if (param_2 < param_1) { + return param_1 - (param_1 - param_2) / param_3; + } } #else GLOBAL_ASM( @@ -7646,7 +7796,7 @@ glabel sub_GAME_7F0A97D0 /* 0DE350 7F0A9820 0FC30776 */ jal get_textptr_for_textID /* 0DE354 7F0A9824 96240000 */ lhu $a0, ($s1) /* 0DE358 7F0A9828 27A40074 */ addiu $a0, $sp, 0x74 -/* 0DE35C 7F0A982C 0C0029FF */ jal string_load_parse_something +/* 0DE35C 7F0A982C 0C0029FF */ jal string_append_from_obseg_textbank /* 0DE360 7F0A9830 00402825 */ move $a1, $v0 /* 0DE364 7F0A9834 3C068004 */ lui $a2, %hi(D_800409D8) /* 0DE368 7F0A9838 8CC609D8 */ lw $a2, %lo(D_800409D8)($a2) @@ -8720,8 +8870,92 @@ glabel sub_GAME_7F0A9AB8 #ifdef NONMATCHING -void sub_GAME_7F0AA7C8(void) { +void sub_GAME_7F0AA7C8(u32 * displayList) +{ + u32 * DL; + u8 * txtptr; + DL = microcode_constructor(displayList); + if (get_controller_buttons_held('\0',A_BUTTON) != 0) + { + sub_GAME_7F0A9398(DL, 0x5a, 0xa7, get_textptr_for_textID(0xac03), -1, 1, 0x7000a0, 0, 0, 0x3000b0, 0); + } else { + sub_GAME_7F0A9398(DL, 0x5a, 0xa7, get_textptr_for_textID(0xac03), 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 0); + } + + if (get_controller_buttons_held('\0',B_BUTTON) != 0) + { + sub_GAME_7F0A9398(DL, 0x5a, 0x95, get_textptr_for_textID(0xac02), -1, 1, 0x7000a0, 0, 0, 0x3000b0, 0); + } else { + sub_GAME_7F0A9398(DL, 0x5a, 0x95, get_textptr_for_textID(0xac02), 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 0); + } + + + + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 5)) + { + txtptr = get_textptr_for_textID(0xac00); + } else { + txtptr = get_textptr_for_textID(0xac01); + } + + if (get_controller_buttons_held('\0',Z_TRIG) != 0) + { + sub_GAME_7F0A9398(DL, 0x5a, 0xb9, txtptr, -1, 1, 0x7000a0, 0, 0, 0x3000b0, 0); + } else { + sub_GAME_7F0A9398(DL, 0x5a, 0xb9, txtptr, 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 0); + } + + + + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 6)) + { + txtptr = get_textptr_for_textID(0xac05); + } else { + txtptr = get_textptr_for_textID(0xac06); + } + + sub_GAME_7F0A9398(DL, 0x5a, 0xcb, txtptr, 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 0); + if (get_controller_buttons_held('\x01',A_BUTTON) != 0) + { + sub_GAME_7F0A9398(DL, 0xe6, 0xa7, get_textptr_for_textID(0xac03), -1, 1, 0x7000a0, 0, 0, 0x3000b0, 1); + } else { + sub_GAME_7F0A9398(DL, 0xe6, 0xa7, get_textptr_for_textID(0xac03), 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 1); + } + + if (get_controller_buttons_held('\x01',B_BUTTON) != 0) + { + sub_GAME_7F0A9398(DL, 0xe6, 0x95, get_textptr_for_textID(0xac02), -1, 1, 0x7000a0, 0, 0, 0x3000b0, 1); + } else { + sub_GAME_7F0A9398(DL, 0xe6, 0x95, get_textptr_for_textID(0xac02), 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 1); + } + + + + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 5)) + { + txtptr = get_textptr_for_textID(0xac01); + } else { + txtptr = get_textptr_for_textID(0xac00); + } + + if (get_controller_buttons_held('\x01',Z_TRIG) != 0) + { + sub_GAME_7F0A9398(DL, 0xe6, 0xb9, txtptr, -1, 1, 0x7000a0, 0, 0, 0x3000b0, 1); + } else { + sub_GAME_7F0A9398(DL, 0xe6, 0xb9, txtptr, 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 1); + } + + + + if ((pPlayer->cur_player_control_type_0 == 4) || (pPlayer->cur_player_control_type_0 == 6)) + { + txtptr = get_textptr_for_textID(0xac06); + } else { + txtptr = get_textptr_for_textID(0xac05); + } + + sub_GAME_7F0A9398(DL, 0xe6, 0xcb, txtptr, 0xaa00b0, 0, -1, 0, 0, 0x3000b0, 1); } #else GLOBAL_ASM( @@ -9240,7 +9474,7 @@ glabel sub_GAME_7F0AADC0 /* 0DFA00 7F0AAED0 00002025 */ move $a0, $zero /* 0DFA04 7F0AAED4 0FC2A5A1 */ jal sub_GAME_7F0A9684 /* 0DFA08 7F0AAED8 ADA10000 */ sw $at, ($t5) -/* 0DFA0C 7F0AAEDC 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0DFA0C 7F0AAEDC 0FC15FF4 */ jal reset_array_of_0x10_floats /* 0DFA10 7F0AAEE0 27A404FC */ addiu $a0, $sp, 0x4fc /* 0DFA14 7F0AAEE4 3C088005 */ lui $t0, %hi(D_80048498) /* 0DFA18 7F0AAEE8 8D088498 */ lw $t0, %lo(D_80048498)($t0) @@ -9322,7 +9556,7 @@ glabel sub_GAME_7F0AADC0 /* 0DFB40 7F0AB010 27A503FC */ addiu $a1, $sp, 0x3fc /* 0DFB44 7F0AB014 0FC16032 */ jal sub_GAME_7F0580C8 /* 0DFB48 7F0AB018 27A603BC */ addiu $a2, $sp, 0x3bc -/* 0DFB4C 7F0AB01C 0FC2935D */ jal sub_GAME_7F0A4D74 +/* 0DFB4C 7F0AB01C 0FC2935D */ jal controllerCheckDualControllerTypesAllowed /* 0DFB50 7F0AB020 00000000 */ nop /* 0DFB54 7F0AB024 10400018 */ beqz $v0, .L7F0AB088 /* 0DFB58 7F0AB028 3C01C0A0 */ lui $at, 0xc0a0 @@ -9429,7 +9663,7 @@ glabel sub_GAME_7F0AADC0 /* 0DFCE0 7F0AB1B0 8FA702E8 */ lw $a3, 0x2e8($sp) /* 0DFCE4 7F0AB1B4 00408025 */ move $s0, $v0 .L7F0AB1B8: -/* 0DFCE8 7F0AB1B8 0FC2935D */ jal sub_GAME_7F0A4D74 +/* 0DFCE8 7F0AB1B8 0FC2935D */ jal controllerCheckDualControllerTypesAllowed /* 0DFCEC 7F0AB1BC 00000000 */ nop /* 0DFCF0 7F0AB1C0 104000A2 */ beqz $v0, .L7F0AB44C /* 0DFCF4 7F0AB1C4 24040001 */ li $a0, 1 @@ -9440,7 +9674,7 @@ glabel sub_GAME_7F0AADC0 /* 0DFD08 7F0AB1D8 24C60B38 */ addiu $a2, %lo(D_80040B38) # addiu $a2, $a2, 0xb38 /* 0DFD0C 7F0AB1DC 0FC2A5A1 */ jal sub_GAME_7F0A9684 /* 0DFD10 7F0AB1E0 24A50B3C */ addiu $a1, %lo(D_80040B3C) # addiu $a1, $a1, 0xb3c -/* 0DFD14 7F0AB1E4 0FC15FF4 */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0DFD14 7F0AB1E4 0FC15FF4 */ jal reset_array_of_0x10_floats /* 0DFD18 7F0AB1E8 27A404FC */ addiu $a0, $sp, 0x4fc /* 0DFD1C 7F0AB1EC 3C0D8005 */ lui $t5, %hi(D_80048498) /* 0DFD20 7F0AB1F0 8DAD8498 */ lw $t5, %lo(D_80048498)($t5) @@ -9598,7 +9832,7 @@ glabel sub_GAME_7F0AADC0 /* 0DFF74 7F0AB444 27A7004C */ addiu $a3, $sp, 0x4c /* 0DFF78 7F0AB448 00408025 */ move $s0, $v0 .L7F0AB44C: -/* 0DFF7C 7F0AB44C 0FC2935D */ jal sub_GAME_7F0A4D74 +/* 0DFF7C 7F0AB44C 0FC2935D */ jal controllerCheckDualControllerTypesAllowed /* 0DFF80 7F0AB450 00000000 */ nop /* 0DFF84 7F0AB454 10400005 */ beqz $v0, .L7F0AB46C /* 0DFF88 7F0AB458 00000000 */ nop @@ -9714,7 +9948,7 @@ glabel sub_GAME_7F0AADC0 /* 0E0600 7F0ABA90 00002025 */ move $a0, $zero /* 0E0604 7F0ABA94 0FC2A891 */ jal sub_GAME_7F0A9684 /* 0E0608 7F0ABA98 ADA10000 */ sw $at, ($t5) -/* 0E060C 7F0ABA9C 0FC1613C */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0E060C 7F0ABA9C 0FC1613C */ jal reset_array_of_0x10_floats /* 0E0610 7F0ABAA0 27A404FC */ addiu $a0, $sp, 0x4fc /* 0E0614 7F0ABAA4 3C018004 */ lui $at, %hi(D_80040B28) # $at, 0x8004 /* 0E0618 7F0ABAA8 C4240B58 */ lwc1 $f4, %lo(D_80040B28)($at) @@ -9793,7 +10027,7 @@ glabel sub_GAME_7F0AADC0 /* 0E0734 7F0ABBC4 27A503FC */ addiu $a1, $sp, 0x3fc /* 0E0738 7F0ABBC8 0FC1617A */ jal sub_GAME_7F0580C8 /* 0E073C 7F0ABBCC 27A603BC */ addiu $a2, $sp, 0x3bc -/* 0E0740 7F0ABBD0 0FC29645 */ jal sub_GAME_7F0A4D74 +/* 0E0740 7F0ABBD0 0FC29645 */ jal controllerCheckDualControllerTypesAllowed /* 0E0744 7F0ABBD4 00000000 */ nop /* 0E0748 7F0ABBD8 10400018 */ beqz $v0, .Ljp7F0ABC3C /* 0E074C 7F0ABBDC 3C01C0A0 */ lui $at, 0xc0a0 @@ -9900,7 +10134,7 @@ glabel sub_GAME_7F0AADC0 /* 0E08D4 7F0ABD64 8FA702E8 */ lw $a3, 0x2e8($sp) /* 0E08D8 7F0ABD68 00408025 */ move $s0, $v0 .Ljp7F0ABD6C: -/* 0E08DC 7F0ABD6C 0FC29645 */ jal sub_GAME_7F0A4D74 +/* 0E08DC 7F0ABD6C 0FC29645 */ jal controllerCheckDualControllerTypesAllowed /* 0E08E0 7F0ABD70 00000000 */ nop /* 0E08E4 7F0ABD74 1040009F */ beqz $v0, .Ljp7F0ABFF4 /* 0E08E8 7F0ABD78 24040001 */ li $a0, 1 @@ -9911,7 +10145,7 @@ glabel sub_GAME_7F0AADC0 /* 0E08FC 7F0ABD8C 24C60B68 */ addiu $a2, %lo(D_80040B38) # addiu $a2, $a2, 0xb68 /* 0E0900 7F0ABD90 0FC2A891 */ jal sub_GAME_7F0A9684 /* 0E0904 7F0ABD94 24A50B6C */ addiu $a1, %lo(D_80040B3C) # addiu $a1, $a1, 0xb6c -/* 0E0908 7F0ABD98 0FC1613C */ jal init_0x40_bytes_data_at_address_last_word_1_0 +/* 0E0908 7F0ABD98 0FC1613C */ jal reset_array_of_0x10_floats /* 0E090C 7F0ABD9C 27A404FC */ addiu $a0, $sp, 0x4fc /* 0E0910 7F0ABDA0 3C018004 */ lui $at, %hi(D_80040B38) # $at, 0x8004 /* 0E0914 7F0ABDA4 C4300B68 */ lwc1 $f16, %lo(D_80040B38)($at) @@ -10066,7 +10300,7 @@ glabel sub_GAME_7F0AADC0 /* 0E0B5C 7F0ABFEC 27A7004C */ addiu $a3, $sp, 0x4c /* 0E0B60 7F0ABFF0 00408025 */ move $s0, $v0 .Ljp7F0ABFF4: -/* 0E0B64 7F0ABFF4 0FC29645 */ jal sub_GAME_7F0A4D74 +/* 0E0B64 7F0ABFF4 0FC29645 */ jal controllerCheckDualControllerTypesAllowed /* 0E0B68 7F0ABFF8 00000000 */ nop /* 0E0B6C 7F0ABFFC 10400005 */ beqz $v0, .Ljp7F0AC014 /* 0E0B70 7F0AC000 00000000 */ nop @@ -10093,20 +10327,20 @@ glabel sub_GAME_7F0AADC0 -void sub_GAME_7F0AB48C(void) { +void zero_D_80040998(void) { D_80040998 = 0; } -void sub_GAME_7F0AB498(void) { +void zero_D_8004099C(void) { D_8004099C = 0; } -void sub_GAME_7F0AB4A4(void) { - D_800409A4 = 0; +void zero_D_800409A4(void) { + D_800409A4 = 0; } -u32 sub_GAME_7F0AB4B0(u32 uParm1) { - return uParm1; +u32 return_arg0_7F0AB4B0(u32 uParm1) { + return uParm1; } @@ -10114,8 +10348,74 @@ u32 sub_GAME_7F0AB4B0(u32 uParm1) { #ifdef NONMATCHING -void sub_GAME_7F0AB4B8(void) { +void proc_7F0AB4B8(u32 param_1,u32 param_2) +{ + ?32 sp5C; + ?32 sp58; + s32 sp54; + s32 sp50; + s32 pFirstFontTableSmall; + s32 pSecondFontTableSmall; + s32 DL; + s32 txtptr; + ?32 phi_s1; + ?32 phi_s1_2; + + DL = sub_GAME_7F0A714C(param_1, param_2, 0); + if (check_watch_page_transistion_running() != 1) + { + pFirstFontTableSmall = (s32) ptrFirstFontTableSmall; + pSecondFontTableSmall = (s32) ptrSecondFontTableSmall; + microcode_constructor(sub_GAME_7F0AADC0(DL)); + txtptr = get_textptr_for_textID(0xac32); + sp5C = 0x40; + sp58 = 0x1a; + phi_s1 = 0xff00b0; + if (D_80040998 == 0) + { + phi_s1 = 0xa0ffa0f0; + if (watch_soundrelated_maybe != 0) + { + phi_s1 = -1; + } + } + sub_GAME_7F0AE98C(&sp50, &sp54, txtptr, pSecondFontTableSmall, pFirstFontTableSmall, 0); + if ((watch_soundrelated_maybe != 0) && (D_80040998 == 0)) + { + jp_text_write_stuff(DL, &sp5C, &sp58, txtptr, pSecondFontTableSmall, pFirstFontTableSmall, (?32) phi_s1, 0x7000a0, (s32) (sp54 + 1), sp50, 0, 0); + } + else + { + en_text_write_stuff(DL, &sp5C, &sp58, txtptr, pSecondFontTableSmall, pFirstFontTableSmall, (?32) phi_s1, sp54, sp50, 0, 0); + } + sub_GAME_7F0A97D0(DL); + txtptr = get_textptr_for_textID(0xac33); + if (controllerCheckDualControllerTypesAllowed() != 0) + { + txtptr = get_textptr_for_textID(0xac34); + } + sp5C = 0x40; + sp58 = 0x2b; + if (D_80040998 == 1) + { + phi_s1_2 = 0xa0ffa0f0; + if (watch_soundrelated_maybe != 0) + { + phi_s1_2 = -1; + } + } + sub_GAME_7F0AE98C(&sp50, &sp54, txtptr, pSecondFontTableSmall, pFirstFontTableSmall, 0); + if ((watch_soundrelated_maybe != 0) && (D_80040998 == 1)) + { + jp_text_write_stuff(DL, &sp5C, &sp58, txtptr, pSecondFontTableSmall, pFirstFontTableSmall, (?32) phi_s1_2, 0x7000a0, (s32) (sp54 + 1), sp50, 0, 0); + } + else + { + en_text_write_stuff(DL, &sp5C, &sp58, txtptr, pSecondFontTableSmall, pFirstFontTableSmall, (?32) phi_s1_2, sp54, sp50, 0, 0); + } + } + return; } #else GLOBAL_ASM( @@ -10229,7 +10529,7 @@ glabel sub_GAME_7F0AB4B8 /* 0E017C 7F0AB64C 00408025 */ move $s0, $v0 /* 0E0180 7F0AB650 0FC30776 */ jal get_textptr_for_textID /* 0E0184 7F0AB654 3404AC33 */ li $a0, 44083 -/* 0E0188 7F0AB658 0FC2935D */ jal sub_GAME_7F0A4D74 +/* 0E0188 7F0AB658 0FC2935D */ jal controllerCheckDualControllerTypesAllowed /* 0E018C 7F0AB65C 00409025 */ move $s2, $v0 /* 0E0190 7F0AB660 10400004 */ beqz $v0, .L7F0AB674 /* 0E0194 7F0AB664 00000000 */ nop @@ -10325,29 +10625,13 @@ glabel sub_GAME_7F0AB4B8 -#ifdef NONMATCHING -void sub_GAME_7F0AB7A4(void) { +void set_pparam1toparam2_disablejoylr_playsfx(u32 *param_1,u32 param_2) +{ + *param_1 = param_2; + set_controlstick_lr_disabled(); + play_sfx_a1(ptr_sfx_buf,0x2b,NULL); } -#else -GLOBAL_ASM( -.text -glabel sub_GAME_7F0AB7A4 -/* 0E02D4 7F0AB7A4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0E02D8 7F0AB7A8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0E02DC 7F0AB7AC 0FC293E9 */ jal set_controlstick_lr_enabled_0 -/* 0E02E0 7F0AB7B0 AC850000 */ sw $a1, ($a0) -/* 0E02E4 7F0AB7B4 3C048006 */ lui $a0, %hi(ptr_sfx_buf) -/* 0E02E8 7F0AB7B8 8C843720 */ lw $a0, %lo(ptr_sfx_buf)($a0) -/* 0E02EC 7F0AB7BC 2405002B */ li $a1, 43 -/* 0E02F0 7F0AB7C0 0C002382 */ jal play_sfx_a1 -/* 0E02F4 7F0AB7C4 00003025 */ move $a2, $zero -/* 0E02F8 7F0AB7C8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0E02FC 7F0AB7CC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0E0300 7F0AB7D0 03E00008 */ jr $ra -/* 0E0304 7F0AB7D4 00000000 */ nop -) -#endif @@ -10388,7 +10672,7 @@ glabel sub_GAME_7F0AB7D8 /* 0E0364 7F0AB834 24440008 */ addiu $a0, $v0, 8 /* 0E0368 7F0AB838 54610006 */ bnel $v1, $at, .L7F0AB854 /* 0E036C 7F0AB83C 24010002 */ li $at, 2 -/* 0E0370 7F0AB840 0FC2ADE9 */ jal sub_GAME_7F0AB7A4 +/* 0E0370 7F0AB840 0FC2ADE9 */ jal set_pparam1toparam2_disablejoylr_playsfx /* 0E0374 7F0AB844 00002825 */ move $a1, $zero /* 0E0378 7F0AB848 1000002C */ b .L7F0AB8FC /* 0E037C 7F0AB84C 8FBF0014 */ lw $ra, 0x14($sp) @@ -10396,7 +10680,7 @@ glabel sub_GAME_7F0AB7D8 .L7F0AB854: /* 0E0384 7F0AB854 14610028 */ bne $v1, $at, .L7F0AB8F8 /* 0E0388 7F0AB858 24440008 */ addiu $a0, $v0, 8 -/* 0E038C 7F0AB85C 0FC2ADE9 */ jal sub_GAME_7F0AB7A4 +/* 0E038C 7F0AB85C 0FC2ADE9 */ jal set_pparam1toparam2_disablejoylr_playsfx /* 0E0390 7F0AB860 24050001 */ li $a1, 1 /* 0E0394 7F0AB864 10000025 */ b .L7F0AB8FC /* 0E0398 7F0AB868 8FBF0014 */ lw $ra, 0x14($sp) @@ -10425,7 +10709,7 @@ glabel sub_GAME_7F0AB7D8 /* 0E03EC 7F0AB8BC 24010001 */ li $at, 1 /* 0E03F0 7F0AB8C0 14600005 */ bnez $v1, .L7F0AB8D8 /* 0E03F4 7F0AB8C4 00000000 */ nop -/* 0E03F8 7F0AB8C8 0FC2ADE9 */ jal sub_GAME_7F0AB7A4 +/* 0E03F8 7F0AB8C8 0FC2ADE9 */ jal set_pparam1toparam2_disablejoylr_playsfx /* 0E03FC 7F0AB8CC 24050001 */ li $a1, 1 /* 0E0400 7F0AB8D0 1000000A */ b .L7F0AB8FC /* 0E0404 7F0AB8D4 8FBF0014 */ lw $ra, 0x14($sp) @@ -10436,7 +10720,7 @@ glabel sub_GAME_7F0AB7D8 /* 0E0414 7F0AB8E4 24440008 */ addiu $a0, $v0, 8 /* 0E0418 7F0AB8E8 51800004 */ beql $t4, $zero, .L7F0AB8FC /* 0E041C 7F0AB8EC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0E0420 7F0AB8F0 0FC2ADE9 */ jal sub_GAME_7F0AB7A4 +/* 0E0420 7F0AB8F0 0FC2ADE9 */ jal set_pparam1toparam2_disablejoylr_playsfx /* 0E0424 7F0AB8F4 24050002 */ li $a1, 2 .L7F0AB8F8: /* 0E0428 7F0AB8F8 8FBF0014 */ lw $ra, 0x14($sp) @@ -11374,7 +11658,7 @@ glabel sub_GAME_7F0AC168 /* 0E1070 7F0AC540 10000001 */ b .L7F0AC548 /* 0E1074 7F0AC544 24040001 */ li $a0, 1 .L7F0AC548: -/* 0E1078 7F0AC548 0FC2B2E8 */ jal sub_GAME_7F0ACBA0 +/* 0E1078 7F0AC548 0FC2B2E8 */ jal setTextOverlapCorrection /* 0E107C 7F0AC54C 00000000 */ nop /* 0E1080 7F0AC550 0FC30776 */ jal get_textptr_for_textID /* 0E1084 7F0AC554 3404AC3C */ li $a0, 44092 @@ -11408,7 +11692,7 @@ glabel sub_GAME_7F0AC168 /* 0E10F0 7F0AC5C0 A3A00088 */ sb $zero, 0x88($sp) /* 0E10F4 7F0AC5C4 02202025 */ move $a0, $s1 .L7F0AC5C8: -/* 0E10F8 7F0AC5C8 0C0029FF */ jal string_load_parse_something +/* 0E10F8 7F0AC5C8 0C0029FF */ jal string_append_from_obseg_textbank /* 0E10FC 7F0AC5CC 02802825 */ move $a1, $s4 /* 0E1100 7F0AC5D0 26100001 */ addiu $s0, $s0, 1 /* 0E1104 7F0AC5D4 5612FFFC */ bnel $s0, $s2, .L7F0AC5C8 @@ -11418,7 +11702,7 @@ glabel sub_GAME_7F0AC168 /* 0E1110 7F0AC5E0 1A600007 */ blez $s3, .L7F0AC600 /* 0E1114 7F0AC5E4 02202025 */ move $a0, $s1 .L7F0AC5E8: -/* 0E1118 7F0AC5E8 0C0029FF */ jal string_load_parse_something +/* 0E1118 7F0AC5E8 0C0029FF */ jal string_append_from_obseg_textbank /* 0E111C 7F0AC5EC 02A02825 */ move $a1, $s5 /* 0E1120 7F0AC5F0 26100001 */ addiu $s0, $s0, 1 /* 0E1124 7F0AC5F4 5613FFFC */ bnel $s0, $s3, .L7F0AC5E8 @@ -11435,7 +11719,7 @@ glabel sub_GAME_7F0AC168 /* 0E114C 7F0AC61C 0C002B25 */ jal sprintf /* 0E1150 7F0AC620 24C60061 */ addiu $a2, $a2, 0x61 /* 0E1154 7F0AC624 02202025 */ move $a0, $s1 -/* 0E1158 7F0AC628 0C0029FF */ jal string_load_parse_something +/* 0E1158 7F0AC628 0C0029FF */ jal string_append_from_obseg_textbank /* 0E115C 7F0AC62C 8FA50078 */ lw $a1, 0x78($sp) /* 0E1160 7F0AC630 3C0E8005 */ lui $t6, %hi(j_text_trigger) /* 0E1164 7F0AC634 8DCE84D0 */ lw $t6, %lo(j_text_trigger)($t6) @@ -11503,7 +11787,7 @@ glabel sub_GAME_7F0AC168 /* 0E1250 7F0AC720 A3A00088 */ sb $zero, 0x88($sp) /* 0E1254 7F0AC724 02202025 */ move $a0, $s1 .L7F0AC728: -/* 0E1258 7F0AC728 0C0029FF */ jal string_load_parse_something +/* 0E1258 7F0AC728 0C0029FF */ jal string_append_from_obseg_textbank /* 0E125C 7F0AC72C 02C02825 */ move $a1, $s6 /* 0E1260 7F0AC730 26100001 */ addiu $s0, $s0, 1 /* 0E1264 7F0AC734 5612FFFC */ bnel $s0, $s2, .L7F0AC728 @@ -11513,7 +11797,7 @@ glabel sub_GAME_7F0AC168 /* 0E1270 7F0AC740 1A600006 */ blez $s3, .L7F0AC75C /* 0E1274 7F0AC744 02202025 */ move $a0, $s1 .L7F0AC748: -/* 0E1278 7F0AC748 0C0029FF */ jal string_load_parse_something +/* 0E1278 7F0AC748 0C0029FF */ jal string_append_from_obseg_textbank /* 0E127C 7F0AC74C 02E02825 */ move $a1, $s7 /* 0E1280 7F0AC750 26100001 */ addiu $s0, $s0, 1 /* 0E1284 7F0AC754 5613FFFC */ bnel $s0, $s3, .L7F0AC748 @@ -11532,7 +11816,7 @@ glabel sub_GAME_7F0AC168 /* 0E12B4 7F0AC784 1000001F */ b .L7F0AC804 /* 0E12B8 7F0AC788 8FA90D4C */ lw $t1, 0xd4c($sp) .L7F0AC78C: -/* 0E12BC 7F0AC78C 0C0029FF */ jal string_load_parse_something +/* 0E12BC 7F0AC78C 0C0029FF */ jal string_append_from_obseg_textbank /* 0E12C0 7F0AC790 8FA50168 */ lw $a1, 0x168($sp) /* 0E12C4 7F0AC794 3C198004 */ lui $t9, %hi(D_80040AFC) /* 0E12C8 7F0AC798 8F390AFC */ lw $t9, %lo(D_80040AFC)($t9) @@ -11546,12 +11830,12 @@ glabel sub_GAME_7F0AC168 /* 0E12E4 7F0AC7B4 3C08A0FF */ lui $t0, (0xA0FFA0F0 >> 16) # lui $t0, 0xa0ff /* 0E12E8 7F0AC7B8 3508A0F0 */ ori $t0, (0xA0FFA0F0 & 0xFFFF) # ori $t0, $t0, 0xa0f0 /* 0E12EC 7F0AC7BC AFA80084 */ sw $t0, 0x84($sp) -/* 0E12F0 7F0AC7C0 0C0029FF */ jal string_load_parse_something +/* 0E12F0 7F0AC7C0 0C0029FF */ jal string_append_from_obseg_textbank /* 0E12F4 7F0AC7C4 8FA5016C */ lw $a1, 0x16c($sp) /* 0E12F8 7F0AC7C8 1000000E */ b .L7F0AC804 /* 0E12FC 7F0AC7CC 8FA90D4C */ lw $t1, 0xd4c($sp) .L7F0AC7D0: -/* 0E1300 7F0AC7D0 0C0029FF */ jal string_load_parse_something +/* 0E1300 7F0AC7D0 0C0029FF */ jal string_append_from_obseg_textbank /* 0E1304 7F0AC7D4 8FA50164 */ lw $a1, 0x164($sp) /* 0E1308 7F0AC7D8 3C0C8005 */ lui $t4, %hi(j_text_trigger) /* 0E130C 7F0AC7DC 8D8C84D0 */ lw $t4, %lo(j_text_trigger)($t4) @@ -11626,7 +11910,7 @@ glabel sub_GAME_7F0AC168 /* 0E1404 7F0AC8D4 1420FF2E */ bnez $at, .L7F0AC590 /* 0E1408 7F0AC8D8 00000000 */ nop .L7F0AC8DC: -/* 0E140C 7F0AC8DC 0FC2B2E8 */ jal sub_GAME_7F0ACBA0 +/* 0E140C 7F0AC8DC 0FC2B2E8 */ jal setTextOverlapCorrection /* 0E1410 7F0AC8E0 2404FFFF */ li $a0, -1 /* 0E1414 7F0AC8E4 0FC29A13 */ jal sub_GAME_7F0A684C /* 0E1418 7F0AC8E8 00000000 */ nop diff --git a/src/init.c b/src/init.c index ff3f72c..3b5f293 100644 --- a/src/init.c +++ b/src/init.c @@ -52,7 +52,7 @@ void init(void) jump_decompressfile((_rarezipSegmentVaddrStart - cdata_rom_size), cdata_vaddr_start, 0x80300000); - if (0xfff00050 == 0) + if ((&_rarezipSegmentRomStart - &_codeSegmentRomStart) >= 0xfffb1) { osPiRawStartDma(0, 0x101000, 0x70100400, ((&_rarezipSegmentRomStart - &_codeSegmentRomStart) + 0xfff00050)); while ((osPiGetStatus() & 1) != 0) {} @@ -279,69 +279,21 @@ void start_rmon_thread(void) /** * 13EC 700007EC */ -#ifdef NONMATCHING -void init_scheduler(void) { +void init_scheduler(void) +{ osCreateMesgQueue(&gfxFrameMsgQ, &gfxFrameMsgBuf, 32); - if (osTvType = OS_TV_MPAL) { + if (osTvType == 2) //OS_TV_MPAL + { osCreateScheduler(&sc, &shedThread, OS_VI_MPAL_LAN1, NUM_FIELDS); - } else { - osCreateScheduler(&sc, &shedThread, OS_VI_NTSC_LAN1, NUM_FIELDS); + } + else + { + osCreateScheduler(&sc, &shedThread, OS_VI_NTSC_LAN1, NUM_FIELDS); } - osScAddClient(&sc, &gfxClient, &gfxFrameMsgQ); + + osScAddClient(&sc, &gfxClient, &gfxFrameMsgQ, 0); sched_cmdQ = osScGetCmdQ(&sc); } -#else -GLOBAL_ASM( -.section .text -glabel init_scheduler -/* 0013EC 700007EC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0013F0 700007F0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0013F4 700007F4 3C048006 */ lui $a0, %hi(gfxFrameMsgQ) -/* 0013F8 700007F8 3C058006 */ lui $a1, %hi(gfxFrameMsgBuf) -/* 0013FC 700007FC 24A5D9B8 */ addiu $a1, $a1, %lo(gfxFrameMsgBuf) -/* 001400 70000800 2484D9A0 */ addiu $a0, $a0, %lo(gfxFrameMsgQ) -/* 001404 70000804 0C0035B4 */ jal osCreateMesgQueue -/* 001408 70000808 24060020 */ addiu $a2, $zero, 0x20 -/* 00140C 7000080C 3C0E8000 */ lui $t6, %hi(osTvType) -/* 001410 70000810 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 001414 70000814 24010002 */ addiu $at, $zero, 2 -/* 001418 70000818 3C048006 */ lui $a0, %hi(sc) -/* 00141C 7000081C 15C1000A */ bne $t6, $at, .Linit_scheduler_5C -/* 001420 70000820 2484DA40 */ addiu $a0, $a0, %lo(sc) -/* 001424 70000824 3C048006 */ lui $a0, %hi(sc) -/* 001428 70000828 3C058006 */ lui $a1, %hi(shedThread) -/* 00142C 7000082C 24A5D7F0 */ addiu $a1, $a1, %lo(shedThread) -/* 001430 70000830 2484DA40 */ addiu $a0, $a0, %lo(sc) -/* 001434 70000834 2406001E */ addiu $a2, $zero, 0x1e -/* 001438 70000838 0C0002AB */ jal osCreateScheduler -/* 00143C 7000083C 24070001 */ addiu $a3, $zero, 1 -/* 001440 70000840 10000006 */ b .Linit_scheduler_70 -/* 001444 70000844 00000000 */ nop -.Linit_scheduler_5C: -/* 001448 70000848 3C058006 */ lui $a1, %hi(shedThread) -/* 00144C 7000084C 24A5D7F0 */ addiu $a1, $a1, %lo(shedThread) -/* 001450 70000850 24060002 */ addiu $a2, $zero, 2 -/* 001454 70000854 0C0002AB */ jal osCreateScheduler -/* 001458 70000858 24070001 */ addiu $a3, $zero, 1 -.Linit_scheduler_70: -/* 00145C 7000085C 3C048006 */ lui $a0, %hi(sc) -/* 001460 70000860 3C058006 */ lui $a1, %hi(gfxClient) -/* 001464 70000864 3C068006 */ lui $a2, %hi(gfxFrameMsgQ) -/* 001468 70000868 24C6D9A0 */ addiu $a2, $a2, %lo(gfxFrameMsgQ) -/* 00146C 7000086C 24A5DB18 */ addiu $a1, $a1, %lo(gfxClient) -/* 001470 70000870 2484DA40 */ addiu $a0, $a0, %lo(sc) -/* 001474 70000874 0C000305 */ jal osScAddClient -/* 001478 70000878 00003825 */ or $a3, $zero, $zero -/* 00147C 7000087C 3C048006 */ lui $a0, %hi(sc) -/* 001480 70000880 0C00033E */ jal osScGetCmdQ -/* 001484 70000884 2484DA40 */ addiu $a0, $a0, %lo(sc) -/* 001488 70000888 8FBF0014 */ lw $ra, 0x14($sp) -/* 00148C 7000088C 3C018006 */ lui $at, %hi(sched_cmdQ) -/* 001490 70000890 AC22DA38 */ sw $v0, %lo(sched_cmdQ)($at) # $v0, -0x25c8($at) -/* 001494 70000894 03E00008 */ jr $ra -/* 001498 70000898 27BD0018 */ addiu $sp, $sp, 0x18 -) -#endif /** * 149C 7000089C start main game setup and loop @@ -349,7 +301,8 @@ glabel init_scheduler * called by 70000510, using 7000D430: A0=8005D640, A1=3, A2=7000089C, A3=0, SP+10=[803B3948], SP+14=0xA * never returns; 7000601C is an infinite loop */ -void thread3_main(void *args) { +void thread3_main(void *args) +{ start_idle_thread(); start_nulled_entry(); start_pi_manager(); diff --git a/src/joy.c b/src/joy.c index c12cb14..1eb558f 100644 --- a/src/joy.c +++ b/src/joy.c @@ -73,7 +73,7 @@ s32 controller_1_rumble_pulse = 0; s32 controller_2_rumble_pulse = 0; s32 controller_3_rumble_pulse = 0; s32 controller_4_rumble_pulse = 0; -s32 D_80026918 = 0; +s32 enableControllers = 0; s32 D_8002691C = 0; s32 D_80026920 = 0; s32 disable_all_rumble = 0; @@ -117,7 +117,7 @@ void *something_with_joy_c_debug(void) { osCreateMesgQueue(&cont4MesgMQ, &cont4Mesg, 1); osCreateMesgQueue(&contdemoMesgMQ, &contdemoMesg, 0xa); osSetEventMesg(5, &contdemoMesgMQ, 0); - D_80026918 = 1; + enableControllers = 1; disable_all_rumble = 0; temp_v0 = (0x80060000 + 0x4f30); ptr_to_tlb_ramrom_record = 0; @@ -197,8 +197,8 @@ glabel something_with_joy_c_debug /* 00C200 7000B600 0C003714 */ jal osSetEventMesg /* 00C204 7000B604 00003025 */ move $a2, $zero /* 00C208 7000B608 240E0001 */ li $t6, 1 -/* 00C20C 7000B60C 3C018002 */ lui $at, %hi(D_80026918) -/* 00C210 7000B610 AC2E6918 */ sw $t6, %lo(D_80026918)($at) +/* 00C20C 7000B60C 3C018002 */ lui $at, %hi(enableControllers) +/* 00C210 7000B610 AC2E6918 */ sw $t6, %lo(enableControllers)($at) /* 00C214 7000B614 3C018002 */ lui $at, %hi(disable_all_rumble) /* 00C218 7000B618 AC206924 */ sw $zero, %lo(disable_all_rumble)($at) /* 00C21C 7000B61C 3C0F8006 */ lui $t7, %hi(controller_input_index) @@ -243,81 +243,26 @@ glabel something_with_joy_c_debug -#ifdef NONMATCHING -void test_controller_presence(void) { - ? sp1C; - // Node 0 - if (D_80026918 != 0) +void test_controller_presence(void) +{ + OSMesg sp1C; + + if (enableControllers != 0) { - // Node 1 osSendMesg(&cont1MesgMQ, &sp1C, 0); osRecvMesg(&cont2MesgMQ, &sp1C, 1); controller_check_for_rumble_maybe(); osSendMesg(&cont3MesgMQ, &sp1C, 0); osRecvMesg(&cont4MesgMQ, &sp1C, 1); - return; - // (possible return value: osRecvMesg(&cont4MesgMQ, &sp1C, 1)) } - // (function likely void) } -#else -GLOBAL_ASM( -.text -glabel test_controller_presence -/* 00C2AC 7000B6AC 3C0E8002 */ lui $t6, %hi(D_80026918) -/* 00C2B0 7000B6B0 8DCE6918 */ lw $t6, %lo(D_80026918)($t6) -/* 00C2B4 7000B6B4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00C2B8 7000B6B8 AFBF0014 */ sw $ra, 0x14($sp) -/* 00C2BC 7000B6BC 11C00016 */ beqz $t6, .L7000B718 -/* 00C2C0 7000B6C0 3C048006 */ lui $a0, %hi(cont1MesgMQ) -/* 00C2C4 7000B6C4 24845370 */ addiu $a0, %lo(cont1MesgMQ) # addiu $a0, $a0, 0x5370 -/* 00C2C8 7000B6C8 27A5001C */ addiu $a1, $sp, 0x1c -/* 00C2CC 7000B6CC 0C0037C4 */ jal osSendMesg -/* 00C2D0 7000B6D0 00003025 */ move $a2, $zero -/* 00C2D4 7000B6D4 3C048006 */ lui $a0, %hi(cont2MesgMQ) -/* 00C2D8 7000B6D8 24845390 */ addiu $a0, %lo(cont2MesgMQ) # addiu $a0, $a0, 0x5390 -/* 00C2DC 7000B6DC 27A5001C */ addiu $a1, $sp, 0x1c -/* 00C2E0 7000B6E0 0C003774 */ jal osRecvMesg -/* 00C2E4 7000B6E4 24060001 */ li $a2, 1 -/* 00C2E8 7000B6E8 0C002E04 */ jal controller_check_for_rumble_maybe -/* 00C2EC 7000B6EC 00000000 */ nop -/* 00C2F0 7000B6F0 3C048006 */ lui $a0, %hi(cont3MesgMQ) -/* 00C2F4 7000B6F4 248453B0 */ addiu $a0, %lo(cont3MesgMQ) # addiu $a0, $a0, 0x53b0 -/* 00C2F8 7000B6F8 27A5001C */ addiu $a1, $sp, 0x1c -/* 00C2FC 7000B6FC 0C0037C4 */ jal osSendMesg -/* 00C300 7000B700 00003025 */ move $a2, $zero -/* 00C304 7000B704 3C048006 */ lui $a0, %hi(cont4MesgMQ) -/* 00C308 7000B708 248453D0 */ addiu $a0, %lo(cont4MesgMQ) # addiu $a0, $a0, 0x53d0 -/* 00C30C 7000B70C 27A5001C */ addiu $a1, $sp, 0x1c -/* 00C310 7000B710 0C003774 */ jal osRecvMesg -/* 00C314 7000B714 24060001 */ li $a2, 1 -.L7000B718: -/* 00C318 7000B718 8FBF0014 */ lw $ra, 0x14($sp) -/* 00C31C 7000B71C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00C320 7000B720 03E00008 */ jr $ra -/* 00C324 7000B724 00000000 */ nop -) -#endif - - - - -#ifdef NONMATCHING -s32 osPfsChecker(s32 *arg0) { - return; - // (possible return value: 3) +s32 osPfsChecker(u32 *param_1) //OSPfs *param_1 +{ + return 3; } -#else -GLOBAL_ASM( -.text -glabel osPfsChecker -/* 00C328 7000B728 AFA40000 */ sw $a0, ($sp) -/* 00C32C 7000B72C 03E00008 */ jr $ra -/* 00C330 7000B730 24020003 */ li $v0, 3 -) -#endif + diff --git a/src/libultra/Mtx.s b/src/libultra/Mtx.s new file mode 100644 index 0000000..2a5f096 --- /dev/null +++ b/src/libultra/Mtx.s @@ -0,0 +1,187 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel guMtxF2L +/* 010B10 7000FF10 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 010B14 7000FF14 44810000 */ mtc1 $at, $f0 +/* 010B18 7000FF18 00A01025 */ move $v0, $a1 +/* 010B1C 7000FF1C 24A30020 */ addiu $v1, $a1, 0x20 +/* 010B20 7000FF20 00003025 */ move $a2, $zero +/* 010B24 7000FF24 00803825 */ move $a3, $a0 +/* 010B28 7000FF28 240C0004 */ li $t4, 4 +/* 010B2C 7000FF2C 240B0002 */ li $t3, 2 +/* 010B30 7000FF30 3C0AFFFF */ lui $t2, 0xffff +.L7000FF34: +/* 010B34 7000FF34 00002025 */ move $a0, $zero +/* 010B38 7000FF38 00E04025 */ move $t0, $a3 +/* 010B3C 7000FF3C C50E0004 */ lwc1 $f14, 4($t0) +/* 010B40 7000FF40 24840001 */ addiu $a0, $a0, 1 +/* 010B44 7000FF44 C5120000 */ lwc1 $f18, ($t0) +/* 010B48 7000FF48 46007402 */ mul.s $f16, $f14, $f0 +/* 010B4C 7000FF4C 108B0019 */ beq $a0, $t3, .L7000FFB4 +/* 010B50 7000FF50 00000000 */ nop +.L7000FF54: +/* 010B54 7000FF54 46009382 */ mul.s $f14, $f18, $f0 +/* 010B58 7000FF58 24840001 */ addiu $a0, $a0, 1 +/* 010B5C 7000FF5C 24420004 */ addiu $v0, $v0, 4 +/* 010B60 7000FF60 24630004 */ addiu $v1, $v1, 4 +/* 010B64 7000FF64 25080008 */ addiu $t0, $t0, 8 +/* 010B68 7000FF68 4600830D */ trunc.w.s $f12, $f16 +/* 010B6C 7000FF6C 4600738D */ trunc.w.s $f14, $f14 +/* 010B70 7000FF70 44096000 */ mfc1 $t1, $f12 +/* 010B74 7000FF74 44057000 */ mfc1 $a1, $f14 +/* 010B78 7000FF78 0009CC03 */ sra $t9, $t1, 0x10 +/* 010B7C 7000FF7C 332DFFFF */ andi $t5, $t9, 0xffff +/* 010B80 7000FF80 00AAC024 */ and $t8, $a1, $t2 +/* 010B84 7000FF84 030D7025 */ or $t6, $t8, $t5 +/* 010B88 7000FF88 00057C00 */ sll $t7, $a1, 0x10 +/* 010B8C 7000FF8C 01EAC824 */ and $t9, $t7, $t2 +/* 010B90 7000FF90 AC4EFFFC */ sw $t6, -4($v0) +/* 010B94 7000FF94 3138FFFF */ andi $t8, $t1, 0xffff +/* 010B98 7000FF98 03386825 */ or $t5, $t9, $t8 +/* 010B9C 7000FF9C AC6DFFFC */ sw $t5, -4($v1) +/* 010BA0 7000FFA0 C50E0004 */ lwc1 $f14, 4($t0) +/* 010BA4 7000FFA4 C5120000 */ lwc1 $f18, ($t0) +/* 010BA8 7000FFA8 46007402 */ mul.s $f16, $f14, $f0 +/* 010BAC 7000FFAC 148BFFE9 */ bne $a0, $t3, .L7000FF54 +/* 010BB0 7000FFB0 00000000 */ nop +.L7000FFB4: +/* 010BB4 7000FFB4 46009382 */ mul.s $f14, $f18, $f0 +/* 010BB8 7000FFB8 25080008 */ addiu $t0, $t0, 8 +/* 010BBC 7000FFBC 24420004 */ addiu $v0, $v0, 4 +/* 010BC0 7000FFC0 24630004 */ addiu $v1, $v1, 4 +/* 010BC4 7000FFC4 4600830D */ trunc.w.s $f12, $f16 +/* 010BC8 7000FFC8 4600738D */ trunc.w.s $f14, $f14 +/* 010BCC 7000FFCC 44096000 */ mfc1 $t1, $f12 +/* 010BD0 7000FFD0 44057000 */ mfc1 $a1, $f14 +/* 010BD4 7000FFD4 0009CC03 */ sra $t9, $t1, 0x10 +/* 010BD8 7000FFD8 332DFFFF */ andi $t5, $t9, 0xffff +/* 010BDC 7000FFDC 00AAC024 */ and $t8, $a1, $t2 +/* 010BE0 7000FFE0 030D7025 */ or $t6, $t8, $t5 +/* 010BE4 7000FFE4 00057C00 */ sll $t7, $a1, 0x10 +/* 010BE8 7000FFE8 01EAC824 */ and $t9, $t7, $t2 +/* 010BEC 7000FFEC 3138FFFF */ andi $t8, $t1, 0xffff +/* 010BF0 7000FFF0 AC4EFFFC */ sw $t6, -4($v0) +/* 010BF4 7000FFF4 03386825 */ or $t5, $t9, $t8 +/* 010BF8 7000FFF8 AC6DFFFC */ sw $t5, -4($v1) +/* 010BFC 7000FFFC 24C60001 */ addiu $a2, $a2, 1 +/* 010C00 70010000 14CCFFCC */ bne $a2, $t4, .L7000FF34 +/* 010C04 70010004 24E70010 */ addiu $a3, $a3, 0x10 +/* 010C08 70010008 03E00008 */ jr $ra +/* 010C0C 7001000C 00000000 */ nop + +.section .rodata +glabel F64_80029430 +.word 0x3f91df46, 0x9d353918 #0.017453292222222222 +.word 0,0 + +.section .text +glabel guMtxIdentF +/* 010C10 70010010 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 010C14 70010014 00801825 */ move $v1, $a0 +/* 010C18 70010018 44810000 */ mtc1 $at, $f0 +/* 010C1C 7001001C 44801000 */ mtc1 $zero, $f2 +/* 010C20 70010020 24040001 */ li $a0, 1 +/* 010C24 70010024 00001025 */ move $v0, $zero +/* 010C28 70010028 24070004 */ li $a3, 4 +/* 010C2C 7001002C 24060003 */ li $a2, 3 +/* 010C30 70010030 24050002 */ li $a1, 2 +.L70010034: +/* 010C34 70010034 54400004 */ bnezl $v0, .L70010048 +/* 010C38 70010038 E4620000 */ swc1 $f2, ($v1) +/* 010C3C 7001003C 10000002 */ b .L70010048 +/* 010C40 70010040 E4600000 */ swc1 $f0, ($v1) +/* 010C44 70010044 E4620000 */ swc1 $f2, ($v1) +.L70010048: +/* 010C48 70010048 54440004 */ bnel $v0, $a0, .L7001005C +/* 010C4C 7001004C E4620004 */ swc1 $f2, 4($v1) +/* 010C50 70010050 10000002 */ b .L7001005C +/* 010C54 70010054 E4600004 */ swc1 $f0, 4($v1) +/* 010C58 70010058 E4620004 */ swc1 $f2, 4($v1) +.L7001005C: +/* 010C5C 7001005C 54450004 */ bnel $v0, $a1, .L70010070 +/* 010C60 70010060 E4620008 */ swc1 $f2, 8($v1) +/* 010C64 70010064 10000002 */ b .L70010070 +/* 010C68 70010068 E4600008 */ swc1 $f0, 8($v1) +/* 010C6C 7001006C E4620008 */ swc1 $f2, 8($v1) +.L70010070: +/* 010C70 70010070 54460004 */ bnel $v0, $a2, .L70010084 +/* 010C74 70010074 E462000C */ swc1 $f2, 0xc($v1) +/* 010C78 70010078 10000002 */ b .L70010084 +/* 010C7C 7001007C E460000C */ swc1 $f0, 0xc($v1) +/* 010C80 70010080 E462000C */ swc1 $f2, 0xc($v1) +.L70010084: +/* 010C84 70010084 24420001 */ addiu $v0, $v0, 1 +/* 010C88 70010088 1447FFEA */ bne $v0, $a3, .L70010034 +/* 010C8C 7001008C 24630010 */ addiu $v1, $v1, 0x10 +/* 010C90 70010090 03E00008 */ jr $ra +/* 010C94 70010094 00000000 */ nop + +glabel guMtxIdent +/* 010C98 70010098 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 010C9C 7001009C AFBF0014 */ sw $ra, 0x14($sp) +/* 010CA0 700100A0 AFA40058 */ sw $a0, 0x58($sp) +/* 010CA4 700100A4 0C004004 */ jal guMtxIdentF +/* 010CA8 700100A8 27A40018 */ addiu $a0, $sp, 0x18 +/* 010CAC 700100AC 27A40018 */ addiu $a0, $sp, 0x18 +/* 010CB0 700100B0 0C003FC4 */ jal guMtxF2L +/* 010CB4 700100B4 8FA50058 */ lw $a1, 0x58($sp) +/* 010CB8 700100B8 8FBF0014 */ lw $ra, 0x14($sp) +/* 010CBC 700100BC 27BD0058 */ addiu $sp, $sp, 0x58 +/* 010CC0 700100C0 03E00008 */ jr $ra +/* 010CC4 700100C4 00000000 */ nop + +glabel guMtxL2F +/* 010CC8 700100C8 3C014780 */ li $at, 0x47800000 # 65536.000000 +/* 010CCC 700100CC 44810000 */ mtc1 $at, $f0 +/* 010CD0 700100D0 27BDFFF0 */ addiu $sp, $sp, -0x10 +/* 010CD4 700100D4 00A01025 */ move $v0, $a1 +/* 010CD8 700100D8 24A30020 */ addiu $v1, $a1, 0x20 +/* 010CDC 700100DC 00003025 */ move $a2, $zero +/* 010CE0 700100E0 00804025 */ move $t0, $a0 +/* 010CE4 700100E4 240C0004 */ li $t4, 4 +/* 010CE8 700100E8 240B0002 */ li $t3, 2 +/* 010CEC 700100EC 3C0AFFFF */ lui $t2, 0xffff +.L700100F0: +/* 010CF0 700100F0 00002025 */ move $a0, $zero +/* 010CF4 700100F4 01004825 */ move $t1, $t0 +.L700100F8: +/* 010CF8 700100F8 8C6E0000 */ lw $t6, ($v1) +/* 010CFC 700100FC 8C590000 */ lw $t9, ($v0) +/* 010D00 70010100 24840001 */ addiu $a0, $a0, 1 +/* 010D04 70010104 000E7C02 */ srl $t7, $t6, 0x10 +/* 010D08 70010108 31F8FFFF */ andi $t8, $t7, 0xffff +/* 010D0C 7001010C 032A6824 */ and $t5, $t9, $t2 +/* 010D10 70010110 030D7025 */ or $t6, $t8, $t5 +/* 010D14 70010114 AFAE0004 */ sw $t6, 4($sp) +/* 010D18 70010118 8C6F0000 */ lw $t7, ($v1) +/* 010D1C 7001011C 8C580000 */ lw $t8, ($v0) +/* 010D20 70010120 8FA50004 */ lw $a1, 4($sp) +/* 010D24 70010124 31F9FFFF */ andi $t9, $t7, 0xffff +/* 010D28 70010128 00186C00 */ sll $t5, $t8, 0x10 +/* 010D2C 7001012C 44859000 */ mtc1 $a1, $f18 +/* 010D30 70010130 01AA7024 */ and $t6, $t5, $t2 +/* 010D34 70010134 032E3825 */ or $a3, $t9, $t6 +/* 010D38 70010138 468094A0 */ cvt.s.w $f18, $f18 +/* 010D3C 7001013C 44878000 */ mtc1 $a3, $f16 +/* 010D40 70010140 AFA70000 */ sw $a3, ($sp) +/* 010D44 70010144 24420004 */ addiu $v0, $v0, 4 +/* 010D48 70010148 24630004 */ addiu $v1, $v1, 4 +/* 010D4C 7001014C 46808420 */ cvt.s.w $f16, $f16 +/* 010D50 70010150 25290008 */ addiu $t1, $t1, 8 +/* 010D54 70010154 46009483 */ div.s $f18, $f18, $f0 +/* 010D58 70010158 46008403 */ div.s $f16, $f16, $f0 +/* 010D5C 7001015C E532FFF8 */ swc1 $f18, -8($t1) +/* 010D60 70010160 148BFFE5 */ bne $a0, $t3, .L700100F8 +/* 010D64 70010164 E530FFFC */ swc1 $f16, -4($t1) +/* 010D68 70010168 24C60001 */ addiu $a2, $a2, 1 +/* 010D6C 7001016C 14CCFFE0 */ bne $a2, $t4, .L700100F0 +/* 010D70 70010170 25080010 */ addiu $t0, $t0, 0x10 +/* 010D74 70010174 03E00008 */ jr $ra +/* 010D78 70010178 27BD0010 */ addiu $sp, $sp, 0x10 diff --git a/src/libultra/_Printf.s b/src/libultra/_Printf.s new file mode 100644 index 0000000..0f7ac68 --- /dev/null +++ b/src/libultra/_Printf.s @@ -0,0 +1,966 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel _Putfld +/* 0144F0 700138F0 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0144F4 700138F4 AFA50020 */ sw $a1, 0x20($sp) +/* 0144F8 700138F8 AFBF0014 */ sw $ra, 0x14($sp) +/* 0144FC 700138FC 30AE00FF */ andi $t6, $a1, 0xff +/* 014500 70013900 29C10026 */ slti $at, $t6, 0x26 +/* 014504 70013904 01C02825 */ move $a1, $t6 +/* 014508 70013908 AE00000C */ sw $zero, 0xc($s0) +/* 01450C 7001390C AE000010 */ sw $zero, 0x10($s0) +/* 014510 70013910 AE000014 */ sw $zero, 0x14($s0) +/* 014514 70013914 AE000018 */ sw $zero, 0x18($s0) +/* 014518 70013918 AE00001C */ sw $zero, 0x1c($s0) +/* 01451C 7001391C AE000020 */ sw $zero, 0x20($s0) +/* 014520 70013920 1420000A */ bnez $at, .L7001394C +/* 014524 70013924 01C01825 */ move $v1, $t6 +/* 014528 70013928 25CFFFBB */ addiu $t7, $t6, -0x45 +/* 01452C 7001392C 2DE10034 */ sltiu $at, $t7, 0x34 +/* 014530 70013930 10200181 */ beqz $at, .L70013F38 +/* 014534 70013934 000F7880 */ sll $t7, $t7, 2 +/* 014538 70013938 3C018003 */ lui $at, %hi(jpt_80029714) +/* 01453C 7001393C 002F0821 */ addu $at, $at, $t7 +/* 014540 70013940 8C2F9714 */ lw $t7, %lo(jpt_80029714)($at) +/* 014544 70013944 01E00008 */ jr $t7 +/* 014548 70013948 00000000 */ nop +.L7001394C: +/* 01454C 7001394C 24010025 */ li $at, 37 +/* 014550 70013950 50610172 */ beql $v1, $at, .L70013F1C +/* 014554 70013954 8E18000C */ lw $t8, 0xc($s0) +/* 014558 70013958 10000178 */ b .L70013F3C +/* 01455C 7001395C 8E0E000C */ lw $t6, 0xc($s0) +.L70013960: +/* 014560 70013960 8CD80000 */ lw $t8, ($a2) +/* 014564 70013964 2401FFFC */ li $at, -4 +/* 014568 70013968 27190003 */ addiu $t9, $t8, 3 +/* 01456C 7001396C 03217024 */ and $t6, $t9, $at +/* 014570 70013970 25CF0004 */ addiu $t7, $t6, 4 +/* 014574 70013974 ACCF0000 */ sw $t7, ($a2) +/* 014578 70013978 8E0E000C */ lw $t6, 0xc($s0) +/* 01457C 7001397C 8DF9FFFC */ lw $t9, -4($t7) +/* 014580 70013980 00EE7821 */ addu $t7, $a3, $t6 +/* 014584 70013984 A1F90000 */ sb $t9, ($t7) +/* 014588 70013988 8E18000C */ lw $t8, 0xc($s0) +/* 01458C 7001398C 270E0001 */ addiu $t6, $t8, 1 +/* 014590 70013990 1000016F */ b .L70013F50 +/* 014594 70013994 AE0E000C */ sw $t6, 0xc($s0) +.L70013998: +/* 014598 70013998 92020034 */ lbu $v0, 0x34($s0) +/* 01459C 7001399C 2401006C */ li $at, 108 +/* 0145A0 700139A0 5441000D */ bnel $v0, $at, .L700139D8 +/* 0145A4 700139A4 2401004C */ li $at, 76 +/* 0145A8 700139A8 8CD90000 */ lw $t9, ($a2) +/* 0145AC 700139AC 2401FFFC */ li $at, -4 +/* 0145B0 700139B0 272F0003 */ addiu $t7, $t9, 3 +/* 0145B4 700139B4 01E1C024 */ and $t8, $t7, $at +/* 0145B8 700139B8 270E0004 */ addiu $t6, $t8, 4 +/* 0145BC 700139BC ACCE0000 */ sw $t6, ($a2) +/* 0145C0 700139C0 8DCFFFFC */ lw $t7, -4($t6) +/* 0145C4 700139C4 000FC7C3 */ sra $t8, $t7, 0x1f +/* 0145C8 700139C8 AE180000 */ sw $t8, ($s0) +/* 0145CC 700139CC 10000019 */ b .L70013A34 +/* 0145D0 700139D0 AE0F0004 */ sw $t7, 4($s0) +/* 0145D4 700139D4 2401004C */ li $at, 76 +.L700139D8: +/* 0145D8 700139D8 5441000D */ bnel $v0, $at, .L70013A10 +/* 0145DC 700139DC 8CCF0000 */ lw $t7, ($a2) +/* 0145E0 700139E0 8CCE0000 */ lw $t6, ($a2) +/* 0145E4 700139E4 2401FFF8 */ li $at, -8 +/* 0145E8 700139E8 25CF0007 */ addiu $t7, $t6, 7 +/* 0145EC 700139EC 01E1C024 */ and $t8, $t7, $at +/* 0145F0 700139F0 27190008 */ addiu $t9, $t8, 8 +/* 0145F4 700139F4 ACD90000 */ sw $t9, ($a2) +/* 0145F8 700139F8 8F38FFF8 */ lw $t8, -8($t9) +/* 0145FC 700139FC 8F39FFFC */ lw $t9, -4($t9) +/* 014600 70013A00 AE180000 */ sw $t8, ($s0) +/* 014604 70013A04 1000000B */ b .L70013A34 +/* 014608 70013A08 AE190004 */ sw $t9, 4($s0) +/* 01460C 70013A0C 8CCF0000 */ lw $t7, ($a2) +.L70013A10: +/* 014610 70013A10 2401FFFC */ li $at, -4 +/* 014614 70013A14 25EE0003 */ addiu $t6, $t7, 3 +/* 014618 70013A18 01C1C024 */ and $t8, $t6, $at +/* 01461C 70013A1C 27190004 */ addiu $t9, $t8, 4 +/* 014620 70013A20 ACD90000 */ sw $t9, ($a2) +/* 014624 70013A24 8F2EFFFC */ lw $t6, -4($t9) +/* 014628 70013A28 000EC7C3 */ sra $t8, $t6, 0x1f +/* 01462C 70013A2C AE180000 */ sw $t8, ($s0) +/* 014630 70013A30 AE0E0004 */ sw $t6, 4($s0) +.L70013A34: +/* 014634 70013A34 920F0034 */ lbu $t7, 0x34($s0) +/* 014638 70013A38 24010068 */ li $at, 104 +/* 01463C 70013A3C 55E10008 */ bnel $t7, $at, .L70013A60 +/* 014640 70013A40 8E0E0000 */ lw $t6, ($s0) +/* 014644 70013A44 8E0F0004 */ lw $t7, 4($s0) +/* 014648 70013A48 000FCC00 */ sll $t9, $t7, 0x10 +/* 01464C 70013A4C 00197403 */ sra $t6, $t9, 0x10 +/* 014650 70013A50 000EC7C3 */ sra $t8, $t6, 0x1f +/* 014654 70013A54 AE180000 */ sw $t8, ($s0) +/* 014658 70013A58 AE0E0004 */ sw $t6, 4($s0) +/* 01465C 70013A5C 8E0E0000 */ lw $t6, ($s0) +.L70013A60: +/* 014660 70013A60 5DC0000E */ bgtzl $t6, .L70013A9C +/* 014664 70013A64 8E020030 */ lw $v0, 0x30($s0) +/* 014668 70013A68 05C20004 */ bltzl $t6, .L70013A7C +/* 01466C 70013A6C 8E19000C */ lw $t9, 0xc($s0) +/* 014670 70013A70 1000000A */ b .L70013A9C +/* 014674 70013A74 8E020030 */ lw $v0, 0x30($s0) +/* 014678 70013A78 8E19000C */ lw $t9, 0xc($s0) +.L70013A7C: +/* 01467C 70013A7C 2418002D */ li $t8, 45 +/* 014680 70013A80 00F97021 */ addu $t6, $a3, $t9 +/* 014684 70013A84 A1D80000 */ sb $t8, ($t6) +/* 014688 70013A88 8E0F000C */ lw $t7, 0xc($s0) +/* 01468C 70013A8C 25F90001 */ addiu $t9, $t7, 1 +/* 014690 70013A90 10000016 */ b .L70013AEC +/* 014694 70013A94 AE19000C */ sw $t9, 0xc($s0) +/* 014698 70013A98 8E020030 */ lw $v0, 0x30($s0) +.L70013A9C: +/* 01469C 70013A9C 30580002 */ andi $t8, $v0, 2 +/* 0146A0 70013AA0 13000009 */ beqz $t8, .L70013AC8 +/* 0146A4 70013AA4 304E0001 */ andi $t6, $v0, 1 +/* 0146A8 70013AA8 8E0F000C */ lw $t7, 0xc($s0) +/* 0146AC 70013AAC 240E002B */ li $t6, 43 +/* 0146B0 70013AB0 00EFC821 */ addu $t9, $a3, $t7 +/* 0146B4 70013AB4 A32E0000 */ sb $t6, ($t9) +/* 0146B8 70013AB8 8E18000C */ lw $t8, 0xc($s0) +/* 0146BC 70013ABC 270F0001 */ addiu $t7, $t8, 1 +/* 0146C0 70013AC0 1000000A */ b .L70013AEC +/* 0146C4 70013AC4 AE0F000C */ sw $t7, 0xc($s0) +.L70013AC8: +/* 0146C8 70013AC8 51C00009 */ beql $t6, $zero, .L70013AF0 +/* 0146CC 70013ACC 8E19000C */ lw $t9, 0xc($s0) +/* 0146D0 70013AD0 8E18000C */ lw $t8, 0xc($s0) +/* 0146D4 70013AD4 24190020 */ li $t9, 32 +/* 0146D8 70013AD8 00F87821 */ addu $t7, $a3, $t8 +/* 0146DC 70013ADC A1F90000 */ sb $t9, ($t7) +/* 0146E0 70013AE0 8E0E000C */ lw $t6, 0xc($s0) +/* 0146E4 70013AE4 25D80001 */ addiu $t8, $t6, 1 +/* 0146E8 70013AE8 AE18000C */ sw $t8, 0xc($s0) +.L70013AEC: +/* 0146EC 70013AEC 8E19000C */ lw $t9, 0xc($s0) +.L70013AF0: +/* 0146F0 70013AF0 02002025 */ move $a0, $s0 +/* 0146F4 70013AF4 03277821 */ addu $t7, $t9, $a3 +/* 0146F8 70013AF8 0C0075F4 */ jal _Litob +/* 0146FC 70013AFC AE0F0008 */ sw $t7, 8($s0) +/* 014700 70013B00 10000114 */ b .L70013F54 +/* 014704 70013B04 8FBF0014 */ lw $ra, 0x14($sp) +.L70013B08: +/* 014708 70013B08 92020034 */ lbu $v0, 0x34($s0) +/* 01470C 70013B0C 2401006C */ li $at, 108 +/* 014710 70013B10 5441000D */ bnel $v0, $at, .L70013B48 +/* 014714 70013B14 2401004C */ li $at, 76 +/* 014718 70013B18 8CCE0000 */ lw $t6, ($a2) +/* 01471C 70013B1C 2401FFFC */ li $at, -4 +/* 014720 70013B20 25D80003 */ addiu $t8, $t6, 3 +/* 014724 70013B24 0301C824 */ and $t9, $t8, $at +/* 014728 70013B28 272F0004 */ addiu $t7, $t9, 4 +/* 01472C 70013B2C ACCF0000 */ sw $t7, ($a2) +/* 014730 70013B30 8DF8FFFC */ lw $t8, -4($t7) +/* 014734 70013B34 001877C3 */ sra $t6, $t8, 0x1f +/* 014738 70013B38 AE0E0000 */ sw $t6, ($s0) +/* 01473C 70013B3C 10000019 */ b .L70013BA4 +/* 014740 70013B40 AE180004 */ sw $t8, 4($s0) +/* 014744 70013B44 2401004C */ li $at, 76 +.L70013B48: +/* 014748 70013B48 5441000D */ bnel $v0, $at, .L70013B80 +/* 01474C 70013B4C 8CCE0000 */ lw $t6, ($a2) +/* 014750 70013B50 8CD90000 */ lw $t9, ($a2) +/* 014754 70013B54 2401FFF8 */ li $at, -8 +/* 014758 70013B58 27380007 */ addiu $t8, $t9, 7 +/* 01475C 70013B5C 03017024 */ and $t6, $t8, $at +/* 014760 70013B60 25CF0008 */ addiu $t7, $t6, 8 +/* 014764 70013B64 ACCF0000 */ sw $t7, ($a2) +/* 014768 70013B68 8DF9FFFC */ lw $t9, -4($t7) +/* 01476C 70013B6C 8DF8FFF8 */ lw $t8, -8($t7) +/* 014770 70013B70 AE190004 */ sw $t9, 4($s0) +/* 014774 70013B74 1000000B */ b .L70013BA4 +/* 014778 70013B78 AE180000 */ sw $t8, ($s0) +/* 01477C 70013B7C 8CCE0000 */ lw $t6, ($a2) +.L70013B80: +/* 014780 70013B80 2401FFFC */ li $at, -4 +/* 014784 70013B84 25CF0003 */ addiu $t7, $t6, 3 +/* 014788 70013B88 01E1C024 */ and $t8, $t7, $at +/* 01478C 70013B8C 27190004 */ addiu $t9, $t8, 4 +/* 014790 70013B90 ACD90000 */ sw $t9, ($a2) +/* 014794 70013B94 8F2FFFFC */ lw $t7, -4($t9) +/* 014798 70013B98 000FC7C3 */ sra $t8, $t7, 0x1f +/* 01479C 70013B9C AE180000 */ sw $t8, ($s0) +/* 0147A0 70013BA0 AE0F0004 */ sw $t7, 4($s0) +.L70013BA4: +/* 0147A4 70013BA4 92020034 */ lbu $v0, 0x34($s0) +/* 0147A8 70013BA8 24010068 */ li $at, 104 +/* 0147AC 70013BAC 14410007 */ bne $v0, $at, .L70013BCC +/* 0147B0 70013BB0 00000000 */ nop +/* 0147B4 70013BB4 8E0F0004 */ lw $t7, 4($s0) +/* 0147B8 70013BB8 240E0000 */ li $t6, 0 +/* 0147BC 70013BBC AE0E0000 */ sw $t6, ($s0) +/* 0147C0 70013BC0 31F9FFFF */ andi $t9, $t7, 0xffff +/* 0147C4 70013BC4 10000007 */ b .L70013BE4 +/* 0147C8 70013BC8 AE190004 */ sw $t9, 4($s0) +.L70013BCC: +/* 0147CC 70013BCC 54400006 */ bnezl $v0, .L70013BE8 +/* 0147D0 70013BD0 8E0F0030 */ lw $t7, 0x30($s0) +/* 0147D4 70013BD4 8E190004 */ lw $t9, 4($s0) +/* 0147D8 70013BD8 24180000 */ li $t8, 0 +/* 0147DC 70013BDC AE180000 */ sw $t8, ($s0) +/* 0147E0 70013BE0 AE190004 */ sw $t9, 4($s0) +.L70013BE4: +/* 0147E4 70013BE4 8E0F0030 */ lw $t7, 0x30($s0) +.L70013BE8: +/* 0147E8 70013BE8 31EE0008 */ andi $t6, $t7, 8 +/* 0147EC 70013BEC 51C00014 */ beql $t6, $zero, .L70013C40 +/* 0147F0 70013BF0 8E18000C */ lw $t8, 0xc($s0) +/* 0147F4 70013BF4 8E19000C */ lw $t9, 0xc($s0) +/* 0147F8 70013BF8 24180030 */ li $t8, 48 +/* 0147FC 70013BFC 24010078 */ li $at, 120 +/* 014800 70013C00 00F97821 */ addu $t7, $a3, $t9 +/* 014804 70013C04 A1F80000 */ sb $t8, ($t7) +/* 014808 70013C08 8E0E000C */ lw $t6, 0xc($s0) +/* 01480C 70013C0C 25D90001 */ addiu $t9, $t6, 1 +/* 014810 70013C10 10610004 */ beq $v1, $at, .L70013C24 +/* 014814 70013C14 AE19000C */ sw $t9, 0xc($s0) +/* 014818 70013C18 24010058 */ li $at, 88 +/* 01481C 70013C1C 54610008 */ bnel $v1, $at, .L70013C40 +/* 014820 70013C20 8E18000C */ lw $t8, 0xc($s0) +.L70013C24: +/* 014824 70013C24 8E18000C */ lw $t8, 0xc($s0) +/* 014828 70013C28 00F87821 */ addu $t7, $a3, $t8 +/* 01482C 70013C2C A1E50000 */ sb $a1, ($t7) +/* 014830 70013C30 8E0E000C */ lw $t6, 0xc($s0) +/* 014834 70013C34 25D90001 */ addiu $t9, $t6, 1 +/* 014838 70013C38 AE19000C */ sw $t9, 0xc($s0) +/* 01483C 70013C3C 8E18000C */ lw $t8, 0xc($s0) +.L70013C40: +/* 014840 70013C40 02002025 */ move $a0, $s0 +/* 014844 70013C44 03077821 */ addu $t7, $t8, $a3 +/* 014848 70013C48 0C0075F4 */ jal _Litob +/* 01484C 70013C4C AE0F0008 */ sw $t7, 8($s0) +/* 014850 70013C50 100000C0 */ b .L70013F54 +/* 014854 70013C54 8FBF0014 */ lw $ra, 0x14($sp) +.L70013C58: +/* 014858 70013C58 920E0034 */ lbu $t6, 0x34($s0) +/* 01485C 70013C5C 2401004C */ li $at, 76 +/* 014860 70013C60 55C10019 */ bnel $t6, $at, .L70013CC8 +/* 014864 70013C64 8CC20000 */ lw $v0, ($a2) +/* 014868 70013C68 8CC20000 */ lw $v0, ($a2) +/* 01486C 70013C6C 30590001 */ andi $t9, $v0, 1 +/* 014870 70013C70 13200005 */ beqz $t9, .L70013C88 +/* 014874 70013C74 00401825 */ move $v1, $v0 +/* 014878 70013C78 24780007 */ addiu $t8, $v1, 7 +/* 01487C 70013C7C ACD80000 */ sw $t8, ($a2) +/* 014880 70013C80 1000000D */ b .L70013CB8 +/* 014884 70013C84 2702FFEA */ addiu $v0, $t8, -0x16 +.L70013C88: +/* 014888 70013C88 306F0002 */ andi $t7, $v1, 2 +/* 01488C 70013C8C 11E00005 */ beqz $t7, .L70013CA4 +/* 014890 70013C90 24590007 */ addiu $t9, $v0, 7 +/* 014894 70013C94 246E000A */ addiu $t6, $v1, 0xa +/* 014898 70013C98 ACCE0000 */ sw $t6, ($a2) +/* 01489C 70013C9C 10000005 */ b .L70013CB4 +/* 0148A0 70013CA0 25C4FFD8 */ addiu $a0, $t6, -0x28 +.L70013CA4: +/* 0148A4 70013CA4 2401FFF8 */ li $at, -8 +/* 0148A8 70013CA8 0321C024 */ and $t8, $t9, $at +/* 0148AC 70013CAC 27040008 */ addiu $a0, $t8, 8 +/* 0148B0 70013CB0 ACC40000 */ sw $a0, ($a2) +.L70013CB4: +/* 0148B4 70013CB4 00801025 */ move $v0, $a0 +.L70013CB8: +/* 0148B8 70013CB8 D444FFF8 */ ldc1 $f4, -8($v0) +/* 0148BC 70013CBC 10000017 */ b .L70013D1C +/* 0148C0 70013CC0 F6040000 */ sdc1 $f4, ($s0) +/* 0148C4 70013CC4 8CC20000 */ lw $v0, ($a2) +.L70013CC8: +/* 0148C8 70013CC8 304E0001 */ andi $t6, $v0, 1 +/* 0148CC 70013CCC 11C00005 */ beqz $t6, .L70013CE4 +/* 0148D0 70013CD0 00401825 */ move $v1, $v0 +/* 0148D4 70013CD4 24790007 */ addiu $t9, $v1, 7 +/* 0148D8 70013CD8 ACD90000 */ sw $t9, ($a2) +/* 0148DC 70013CDC 1000000D */ b .L70013D14 +/* 0148E0 70013CE0 2722FFEA */ addiu $v0, $t9, -0x16 +.L70013CE4: +/* 0148E4 70013CE4 30780002 */ andi $t8, $v1, 2 +/* 0148E8 70013CE8 13000005 */ beqz $t8, .L70013D00 +/* 0148EC 70013CEC 244E0007 */ addiu $t6, $v0, 7 +/* 0148F0 70013CF0 246F000A */ addiu $t7, $v1, 0xa +/* 0148F4 70013CF4 ACCF0000 */ sw $t7, ($a2) +/* 0148F8 70013CF8 10000005 */ b .L70013D10 +/* 0148FC 70013CFC 25E4FFD8 */ addiu $a0, $t7, -0x28 +.L70013D00: +/* 014900 70013D00 2401FFF8 */ li $at, -8 +/* 014904 70013D04 01C1C824 */ and $t9, $t6, $at +/* 014908 70013D08 27240008 */ addiu $a0, $t9, 8 +/* 01490C 70013D0C ACC40000 */ sw $a0, ($a2) +.L70013D10: +/* 014910 70013D10 00801025 */ move $v0, $a0 +.L70013D14: +/* 014914 70013D14 D446FFF8 */ ldc1 $f6, -8($v0) +/* 014918 70013D18 F6060000 */ sdc1 $f6, ($s0) +.L70013D1C: +/* 01491C 70013D1C 960F0000 */ lhu $t7, ($s0) +/* 014920 70013D20 31EE8000 */ andi $t6, $t7, 0x8000 +/* 014924 70013D24 51C0000A */ beql $t6, $zero, .L70013D50 +/* 014928 70013D28 8E020030 */ lw $v0, 0x30($s0) +/* 01492C 70013D2C 8E18000C */ lw $t8, 0xc($s0) +/* 014930 70013D30 2419002D */ li $t9, 45 +/* 014934 70013D34 00F87821 */ addu $t7, $a3, $t8 +/* 014938 70013D38 A1F90000 */ sb $t9, ($t7) +/* 01493C 70013D3C 8E0E000C */ lw $t6, 0xc($s0) +/* 014940 70013D40 25D80001 */ addiu $t8, $t6, 1 +/* 014944 70013D44 10000016 */ b .L70013DA0 +/* 014948 70013D48 AE18000C */ sw $t8, 0xc($s0) +/* 01494C 70013D4C 8E020030 */ lw $v0, 0x30($s0) +.L70013D50: +/* 014950 70013D50 30590002 */ andi $t9, $v0, 2 +/* 014954 70013D54 13200009 */ beqz $t9, .L70013D7C +/* 014958 70013D58 304F0001 */ andi $t7, $v0, 1 +/* 01495C 70013D5C 8E0E000C */ lw $t6, 0xc($s0) +/* 014960 70013D60 240F002B */ li $t7, 43 +/* 014964 70013D64 00EEC021 */ addu $t8, $a3, $t6 +/* 014968 70013D68 A30F0000 */ sb $t7, ($t8) +/* 01496C 70013D6C 8E19000C */ lw $t9, 0xc($s0) +/* 014970 70013D70 272E0001 */ addiu $t6, $t9, 1 +/* 014974 70013D74 1000000A */ b .L70013DA0 +/* 014978 70013D78 AE0E000C */ sw $t6, 0xc($s0) +.L70013D7C: +/* 01497C 70013D7C 51E00009 */ beql $t7, $zero, .L70013DA4 +/* 014980 70013D80 8E18000C */ lw $t8, 0xc($s0) +/* 014984 70013D84 8E19000C */ lw $t9, 0xc($s0) +/* 014988 70013D88 24180020 */ li $t8, 32 +/* 01498C 70013D8C 00F97021 */ addu $t6, $a3, $t9 +/* 014990 70013D90 A1D80000 */ sb $t8, ($t6) +/* 014994 70013D94 8E0F000C */ lw $t7, 0xc($s0) +/* 014998 70013D98 25F90001 */ addiu $t9, $t7, 1 +/* 01499C 70013D9C AE19000C */ sw $t9, 0xc($s0) +.L70013DA0: +/* 0149A0 70013DA0 8E18000C */ lw $t8, 0xc($s0) +.L70013DA4: +/* 0149A4 70013DA4 02002025 */ move $a0, $s0 +/* 0149A8 70013DA8 03077021 */ addu $t6, $t8, $a3 +/* 0149AC 70013DAC 0C0077F8 */ jal _Ldtob +/* 0149B0 70013DB0 AE0E0008 */ sw $t6, 8($s0) +/* 0149B4 70013DB4 10000067 */ b .L70013F54 +/* 0149B8 70013DB8 8FBF0014 */ lw $ra, 0x14($sp) +.L70013DBC: +/* 0149BC 70013DBC 92020034 */ lbu $v0, 0x34($s0) +/* 0149C0 70013DC0 24010068 */ li $at, 104 +/* 0149C4 70013DC4 5441000C */ bnel $v0, $at, .L70013DF8 +/* 0149C8 70013DC8 2401006C */ li $at, 108 +/* 0149CC 70013DCC 8CCF0000 */ lw $t7, ($a2) +/* 0149D0 70013DD0 2401FFFC */ li $at, -4 +/* 0149D4 70013DD4 25F90003 */ addiu $t9, $t7, 3 +/* 0149D8 70013DD8 0321C024 */ and $t8, $t9, $at +/* 0149DC 70013DDC 270E0004 */ addiu $t6, $t8, 4 +/* 0149E0 70013DE0 ACCE0000 */ sw $t6, ($a2) +/* 0149E4 70013DE4 8DD9FFFC */ lw $t9, -4($t6) +/* 0149E8 70013DE8 8E0F002C */ lw $t7, 0x2c($s0) +/* 0149EC 70013DEC 10000058 */ b .L70013F50 +/* 0149F0 70013DF0 A72F0000 */ sh $t7, ($t9) +/* 0149F4 70013DF4 2401006C */ li $at, 108 +.L70013DF8: +/* 0149F8 70013DF8 5441000C */ bnel $v0, $at, .L70013E2C +/* 0149FC 70013DFC 2401004C */ li $at, 76 +/* 014A00 70013E00 8CD80000 */ lw $t8, ($a2) +/* 014A04 70013E04 2401FFFC */ li $at, -4 +/* 014A08 70013E08 270E0003 */ addiu $t6, $t8, 3 +/* 014A0C 70013E0C 01C17824 */ and $t7, $t6, $at +/* 014A10 70013E10 25F90004 */ addiu $t9, $t7, 4 +/* 014A14 70013E14 ACD90000 */ sw $t9, ($a2) +/* 014A18 70013E18 8F2EFFFC */ lw $t6, -4($t9) +/* 014A1C 70013E1C 8E18002C */ lw $t8, 0x2c($s0) +/* 014A20 70013E20 1000004B */ b .L70013F50 +/* 014A24 70013E24 ADD80000 */ sw $t8, ($t6) +/* 014A28 70013E28 2401004C */ li $at, 76 +.L70013E2C: +/* 014A2C 70013E2C 5441000E */ bnel $v0, $at, .L70013E68 +/* 014A30 70013E30 8CCF0000 */ lw $t7, ($a2) +/* 014A34 70013E34 8CCF0000 */ lw $t7, ($a2) +/* 014A38 70013E38 2401FFFC */ li $at, -4 +/* 014A3C 70013E3C 25F90003 */ addiu $t9, $t7, 3 +/* 014A40 70013E40 0321C024 */ and $t8, $t9, $at +/* 014A44 70013E44 270E0004 */ addiu $t6, $t8, 4 +/* 014A48 70013E48 ACCE0000 */ sw $t6, ($a2) +/* 014A4C 70013E4C 8DCEFFFC */ lw $t6, -4($t6) +/* 014A50 70013E50 8E0F002C */ lw $t7, 0x2c($s0) +/* 014A54 70013E54 24180000 */ li $t8, 0 +/* 014A58 70013E58 ADD80000 */ sw $t8, ($t6) +/* 014A5C 70013E5C 1000003C */ b .L70013F50 +/* 014A60 70013E60 ADCF0004 */ sw $t7, 4($t6) +/* 014A64 70013E64 8CCF0000 */ lw $t7, ($a2) +.L70013E68: +/* 014A68 70013E68 2401FFFC */ li $at, -4 +/* 014A6C 70013E6C 25F80003 */ addiu $t8, $t7, 3 +/* 014A70 70013E70 0301C824 */ and $t9, $t8, $at +/* 014A74 70013E74 272E0004 */ addiu $t6, $t9, 4 +/* 014A78 70013E78 ACCE0000 */ sw $t6, ($a2) +/* 014A7C 70013E7C 8DD8FFFC */ lw $t8, -4($t6) +/* 014A80 70013E80 8E0F002C */ lw $t7, 0x2c($s0) +/* 014A84 70013E84 10000032 */ b .L70013F50 +/* 014A88 70013E88 AF0F0000 */ sw $t7, ($t8) +.L70013E8C: +/* 014A8C 70013E8C 8CD90000 */ lw $t9, ($a2) +/* 014A90 70013E90 2401FFFC */ li $at, -4 +/* 014A94 70013E94 02002025 */ move $a0, $s0 +/* 014A98 70013E98 272E0003 */ addiu $t6, $t9, 3 +/* 014A9C 70013E9C 01C17824 */ and $t7, $t6, $at +/* 014AA0 70013EA0 25F80004 */ addiu $t8, $t7, 4 +/* 014AA4 70013EA4 ACD80000 */ sw $t8, ($a2) +/* 014AA8 70013EA8 8F0EFFFC */ lw $t6, -4($t8) +/* 014AAC 70013EAC 8E0F000C */ lw $t7, 0xc($s0) +/* 014AB0 70013EB0 24050078 */ li $a1, 120 +/* 014AB4 70013EB4 000EC7C3 */ sra $t8, $t6, 0x1f +/* 014AB8 70013EB8 AE0E0004 */ sw $t6, 4($s0) +/* 014ABC 70013EBC 01E77021 */ addu $t6, $t7, $a3 +/* 014AC0 70013EC0 AE180000 */ sw $t8, ($s0) +/* 014AC4 70013EC4 0C0075F4 */ jal _Litob +/* 014AC8 70013EC8 AE0E0008 */ sw $t6, 8($s0) +/* 014ACC 70013ECC 10000021 */ b .L70013F54 +/* 014AD0 70013ED0 8FBF0014 */ lw $ra, 0x14($sp) +.L70013ED4: +/* 014AD4 70013ED4 8CD80000 */ lw $t8, ($a2) +/* 014AD8 70013ED8 2401FFFC */ li $at, -4 +/* 014ADC 70013EDC 27190003 */ addiu $t9, $t8, 3 +/* 014AE0 70013EE0 03217824 */ and $t7, $t9, $at +/* 014AE4 70013EE4 25EE0004 */ addiu $t6, $t7, 4 +/* 014AE8 70013EE8 ACCE0000 */ sw $t6, ($a2) +/* 014AEC 70013EEC 8DC4FFFC */ lw $a0, -4($t6) +/* 014AF0 70013EF0 0C004E1F */ jal strlen +/* 014AF4 70013EF4 AE040008 */ sw $a0, 8($s0) +/* 014AF8 70013EF8 8E030024 */ lw $v1, 0x24($s0) +/* 014AFC 70013EFC AE020014 */ sw $v0, 0x14($s0) +/* 014B00 70013F00 04600013 */ bltz $v1, .L70013F50 +/* 014B04 70013F04 0062082A */ slt $at, $v1, $v0 +/* 014B08 70013F08 50200012 */ beql $at, $zero, .L70013F54 +/* 014B0C 70013F0C 8FBF0014 */ lw $ra, 0x14($sp) +/* 014B10 70013F10 1000000F */ b .L70013F50 +/* 014B14 70013F14 AE030014 */ sw $v1, 0x14($s0) +/* 014B18 70013F18 8E18000C */ lw $t8, 0xc($s0) +.L70013F1C: +/* 014B1C 70013F1C 240E0025 */ li $t6, 37 +/* 014B20 70013F20 00F8C821 */ addu $t9, $a3, $t8 +/* 014B24 70013F24 A32E0000 */ sb $t6, ($t9) +/* 014B28 70013F28 8E0F000C */ lw $t7, 0xc($s0) +/* 014B2C 70013F2C 25F80001 */ addiu $t8, $t7, 1 +/* 014B30 70013F30 10000007 */ b .L70013F50 +/* 014B34 70013F34 AE18000C */ sw $t8, 0xc($s0) +.L70013F38: +/* 014B38 70013F38 8E0E000C */ lw $t6, 0xc($s0) +.L70013F3C: +/* 014B3C 70013F3C 00EEC821 */ addu $t9, $a3, $t6 +/* 014B40 70013F40 A3250000 */ sb $a1, ($t9) +/* 014B44 70013F44 8E0F000C */ lw $t7, 0xc($s0) +/* 014B48 70013F48 25F80001 */ addiu $t8, $t7, 1 +/* 014B4C 70013F4C AE18000C */ sw $t8, 0xc($s0) +.L70013F50: +/* 014B50 70013F50 8FBF0014 */ lw $ra, 0x14($sp) +.L70013F54: +/* 014B54 70013F54 27BD0018 */ addiu $sp, $sp, 0x18 +/* 014B58 70013F58 03E00008 */ jr $ra +/* 014B5C 70013F5C 00000000 */ nop + +glabel _Printf +/* 014B60 70013F60 27BDFF20 */ addiu $sp, $sp, -0xe0 +/* 014B64 70013F64 AFB70034 */ sw $s7, 0x34($sp) +/* 014B68 70013F68 AFB60030 */ sw $s6, 0x30($sp) +/* 014B6C 70013F6C AFB5002C */ sw $s5, 0x2c($sp) +/* 014B70 70013F70 AFBE0038 */ sw $fp, 0x38($sp) +/* 014B74 70013F74 AFB40028 */ sw $s4, 0x28($sp) +/* 014B78 70013F78 AFB30024 */ sw $s3, 0x24($sp) +/* 014B7C 70013F7C AFA700EC */ sw $a3, 0xec($sp) +/* 014B80 70013F80 3C158002 */ lui $s5, %hi(zeros) +/* 014B84 70013F84 3C168003 */ lui $s6, %hi(printf_symbols) +/* 014B88 70013F88 3C178002 */ lui $s7, %hi(spaces) +/* 014B8C 70013F8C 00C03825 */ move $a3, $a2 +/* 014B90 70013F90 00A09825 */ move $s3, $a1 +/* 014B94 70013F94 0080A025 */ move $s4, $a0 +/* 014B98 70013F98 AFBF003C */ sw $ra, 0x3c($sp) +/* 014B9C 70013F9C AFB20020 */ sw $s2, 0x20($sp) +/* 014BA0 70013FA0 AFB1001C */ sw $s1, 0x1c($sp) +/* 014BA4 70013FA4 AFB00018 */ sw $s0, 0x18($sp) +/* 014BA8 70013FA8 AFA600E8 */ sw $a2, 0xe8($sp) +/* 014BAC 70013FAC AFA000D4 */ sw $zero, 0xd4($sp) +/* 014BB0 70013FB0 26F77740 */ addiu $s7, %lo(spaces) # addiu $s7, $s7, 0x7740 +/* 014BB4 70013FB4 26D696F4 */ addiu $s6, %lo(printf_symbols) # addiu $s6, $s6, -0x690c +/* 014BB8 70013FB8 26B57764 */ addiu $s5, %lo(zeros) # addiu $s5, $s5, 0x7764 +/* 014BBC 70013FBC 241E000A */ li $fp, 10 +.L70013FC0: +/* 014BC0 70013FC0 90F00000 */ lbu $s0, ($a3) +/* 014BC4 70013FC4 24F20001 */ addiu $s2, $a3, 1 +/* 014BC8 70013FC8 24030025 */ li $v1, 37 +/* 014BCC 70013FCC 1A000009 */ blez $s0, .L70013FF4 +/* 014BD0 70013FD0 02602025 */ move $a0, $s3 +.L70013FD4: +/* 014BD4 70013FD4 54700004 */ bnel $v1, $s0, .L70013FE8 +/* 014BD8 70013FD8 92500000 */ lbu $s0, ($s2) +/* 014BDC 70013FDC 10000005 */ b .L70013FF4 +/* 014BE0 70013FE0 2652FFFF */ addiu $s2, $s2, -1 +/* 014BE4 70013FE4 92500000 */ lbu $s0, ($s2) +.L70013FE8: +/* 014BE8 70013FE8 26520001 */ addiu $s2, $s2, 1 +/* 014BEC 70013FEC 1E00FFF9 */ bgtz $s0, .L70013FD4 +/* 014BF0 70013FF0 00000000 */ nop +.L70013FF4: +/* 014BF4 70013FF4 02471023 */ subu $v0, $s2, $a3 +/* 014BF8 70013FF8 1840000C */ blez $v0, .L7001402C +/* 014BFC 70013FFC 00E02825 */ move $a1, $a3 +/* 014C00 70014000 00408825 */ move $s1, $v0 +/* 014C04 70014004 0280F809 */ jalr $s4 +/* 014C08 70014008 00403025 */ move $a2, $v0 +/* 014C0C 7001400C 10400005 */ beqz $v0, .L70014024 +/* 014C10 70014010 00409825 */ move $s3, $v0 +/* 014C14 70014014 8FAE00D4 */ lw $t6, 0xd4($sp) +/* 014C18 70014018 01D17821 */ addu $t7, $t6, $s1 +/* 014C1C 7001401C 10000003 */ b .L7001402C +/* 014C20 70014020 AFAF00D4 */ sw $t7, 0xd4($sp) +.L70014024: +/* 014C24 70014024 10000153 */ b .L70014574 +/* 014C28 70014028 8FA200D4 */ lw $v0, 0xd4($sp) +.L7001402C: +/* 014C2C 7001402C 16000003 */ bnez $s0, .L7001403C +/* 014C30 70014030 26520001 */ addiu $s2, $s2, 1 +/* 014C34 70014034 1000014F */ b .L70014574 +/* 014C38 70014038 8FA200D4 */ lw $v0, 0xd4($sp) +.L7001403C: +/* 014C3C 7001403C AFA000D8 */ sw $zero, 0xd8($sp) +/* 014C40 70014040 92450000 */ lbu $a1, ($s2) +/* 014C44 70014044 0C004E29 */ jal strchr +/* 014C48 70014048 02C02025 */ move $a0, $s6 +/* 014C4C 7001404C 1040000F */ beqz $v0, .L7001408C +/* 014C50 70014050 00408025 */ move $s0, $v0 +.L70014054: +/* 014C54 70014054 0216C823 */ subu $t9, $s0, $s6 +/* 014C58 70014058 00197080 */ sll $t6, $t9, 2 +/* 014C5C 7001405C 3C0F8003 */ lui $t7, %hi(byteshiftleft_lookup) +/* 014C60 70014060 01EE7821 */ addu $t7, $t7, $t6 +/* 014C64 70014064 8DEF96FC */ lw $t7, %lo(byteshiftleft_lookup)($t7) +/* 014C68 70014068 8FB800D8 */ lw $t8, 0xd8($sp) +/* 014C6C 7001406C 26520001 */ addiu $s2, $s2, 1 +/* 014C70 70014070 02C02025 */ move $a0, $s6 +/* 014C74 70014074 030FC825 */ or $t9, $t8, $t7 +/* 014C78 70014078 AFB900D8 */ sw $t9, 0xd8($sp) +/* 014C7C 7001407C 0C004E29 */ jal strchr +/* 014C80 70014080 92450000 */ lbu $a1, ($s2) +/* 014C84 70014084 1440FFF3 */ bnez $v0, .L70014054 +/* 014C88 70014088 00408025 */ move $s0, $v0 +.L7001408C: +/* 014C8C 7001408C 924E0000 */ lbu $t6, ($s2) +/* 014C90 70014090 2402002A */ li $v0, 42 +/* 014C94 70014094 8FB800EC */ lw $t8, 0xec($sp) +/* 014C98 70014098 144E0011 */ bne $v0, $t6, .L700140E0 +/* 014C9C 7001409C 3C048003 */ lui $a0, %hi(aHll) +/* 014CA0 700140A0 270F0003 */ addiu $t7, $t8, 3 +/* 014CA4 700140A4 2401FFFC */ li $at, -4 +/* 014CA8 700140A8 01E1C824 */ and $t9, $t7, $at +/* 014CAC 700140AC 272E0004 */ addiu $t6, $t9, 4 +/* 014CB0 700140B0 AFAE00EC */ sw $t6, 0xec($sp) +/* 014CB4 700140B4 8F380000 */ lw $t8, ($t9) +/* 014CB8 700140B8 26520001 */ addiu $s2, $s2, 1 +/* 014CBC 700140BC 07010006 */ bgez $t8, .L700140D8 +/* 014CC0 700140C0 AFB800D0 */ sw $t8, 0xd0($sp) +/* 014CC4 700140C4 8FAE00D8 */ lw $t6, 0xd8($sp) +/* 014CC8 700140C8 00187823 */ negu $t7, $t8 +/* 014CCC 700140CC AFAF00D0 */ sw $t7, 0xd0($sp) +/* 014CD0 700140D0 35D90004 */ ori $t9, $t6, 4 +/* 014CD4 700140D4 AFB900D8 */ sw $t9, 0xd8($sp) +.L700140D8: +/* 014CD8 700140D8 10000018 */ b .L7001413C +/* 014CDC 700140DC 92450000 */ lbu $a1, ($s2) +.L700140E0: +/* 014CE0 700140E0 AFA000D0 */ sw $zero, 0xd0($sp) +/* 014CE4 700140E4 92450000 */ lbu $a1, ($s2) +/* 014CE8 700140E8 28A10030 */ slti $at, $a1, 0x30 +/* 014CEC 700140EC 14200013 */ bnez $at, .L7001413C +/* 014CF0 700140F0 28A1003A */ slti $at, $a1, 0x3a +/* 014CF4 700140F4 50200012 */ beql $at, $zero, .L70014140 +/* 014CF8 700140F8 2401002E */ li $at, 46 +/* 014CFC 700140FC 8FB800D0 */ lw $t8, 0xd0($sp) +.L70014100: +/* 014D00 70014100 2B0103E7 */ slti $at, $t8, 0x3e7 +/* 014D04 70014104 50200007 */ beql $at, $zero, .L70014124 +/* 014D08 70014108 92450001 */ lbu $a1, 1($s2) +/* 014D0C 7001410C 031E0019 */ multu $t8, $fp +/* 014D10 70014110 00007812 */ mflo $t7 +/* 014D14 70014114 00AF7021 */ addu $t6, $a1, $t7 +/* 014D18 70014118 25D9FFD0 */ addiu $t9, $t6, -0x30 +/* 014D1C 7001411C AFB900D0 */ sw $t9, 0xd0($sp) +/* 014D20 70014120 92450001 */ lbu $a1, 1($s2) +.L70014124: +/* 014D24 70014124 26520001 */ addiu $s2, $s2, 1 +/* 014D28 70014128 28A10030 */ slti $at, $a1, 0x30 +/* 014D2C 7001412C 14200003 */ bnez $at, .L7001413C +/* 014D30 70014130 28A1003A */ slti $at, $a1, 0x3a +/* 014D34 70014134 5420FFF2 */ bnezl $at, .L70014100 +/* 014D38 70014138 8FB800D0 */ lw $t8, 0xd0($sp) +.L7001413C: +/* 014D3C 7001413C 2401002E */ li $at, 46 +.L70014140: +/* 014D40 70014140 10A10004 */ beq $a1, $at, .L70014154 +/* 014D44 70014144 2418FFFF */ li $t8, -1 +/* 014D48 70014148 AFB800CC */ sw $t8, 0xcc($sp) +/* 014D4C 7001414C 10000026 */ b .L700141E8 +/* 014D50 70014150 92450000 */ lbu $a1, ($s2) +.L70014154: +/* 014D54 70014154 924F0001 */ lbu $t7, 1($s2) +/* 014D58 70014158 8FAE00EC */ lw $t6, 0xec($sp) +/* 014D5C 7001415C 26520001 */ addiu $s2, $s2, 1 +/* 014D60 70014160 144F000A */ bne $v0, $t7, .L7001418C +/* 014D64 70014164 25D90003 */ addiu $t9, $t6, 3 +/* 014D68 70014168 2401FFFC */ li $at, -4 +/* 014D6C 7001416C 0321C024 */ and $t8, $t9, $at +/* 014D70 70014170 270F0004 */ addiu $t7, $t8, 4 +/* 014D74 70014174 AFAF00EC */ sw $t7, 0xec($sp) +/* 014D78 70014178 8F0E0000 */ lw $t6, ($t8) +/* 014D7C 7001417C 26520001 */ addiu $s2, $s2, 1 +/* 014D80 70014180 AFAE00CC */ sw $t6, 0xcc($sp) +/* 014D84 70014184 10000018 */ b .L700141E8 +/* 014D88 70014188 92450000 */ lbu $a1, ($s2) +.L7001418C: +/* 014D8C 7001418C AFA000CC */ sw $zero, 0xcc($sp) +/* 014D90 70014190 92450000 */ lbu $a1, ($s2) +/* 014D94 70014194 28A10030 */ slti $at, $a1, 0x30 +/* 014D98 70014198 14200013 */ bnez $at, .L700141E8 +/* 014D9C 7001419C 28A1003A */ slti $at, $a1, 0x3a +/* 014DA0 700141A0 10200011 */ beqz $at, .L700141E8 +/* 014DA4 700141A4 00000000 */ nop +/* 014DA8 700141A8 8FB900CC */ lw $t9, 0xcc($sp) +.L700141AC: +/* 014DAC 700141AC 2B2103E7 */ slti $at, $t9, 0x3e7 +/* 014DB0 700141B0 50200007 */ beql $at, $zero, .L700141D0 +/* 014DB4 700141B4 92450001 */ lbu $a1, 1($s2) +/* 014DB8 700141B8 033E0019 */ multu $t9, $fp +/* 014DBC 700141BC 00007812 */ mflo $t7 +/* 014DC0 700141C0 00AFC021 */ addu $t8, $a1, $t7 +/* 014DC4 700141C4 270EFFD0 */ addiu $t6, $t8, -0x30 +/* 014DC8 700141C8 AFAE00CC */ sw $t6, 0xcc($sp) +/* 014DCC 700141CC 92450001 */ lbu $a1, 1($s2) +.L700141D0: +/* 014DD0 700141D0 26520001 */ addiu $s2, $s2, 1 +/* 014DD4 700141D4 28A10030 */ slti $at, $a1, 0x30 +/* 014DD8 700141D8 14200003 */ bnez $at, .L700141E8 +/* 014DDC 700141DC 28A1003A */ slti $at, $a1, 0x3a +/* 014DE0 700141E0 5420FFF2 */ bnezl $at, .L700141AC +/* 014DE4 700141E4 8FB900CC */ lw $t9, 0xcc($sp) +.L700141E8: +/* 014DE8 700141E8 0C004E29 */ jal strchr +/* 014DEC 700141EC 248496F0 */ addiu $a0, %lo(aHll) # addiu $a0, $a0, -0x6910 +/* 014DF0 700141F0 10400005 */ beqz $v0, .L70014208 +/* 014DF4 700141F4 27B000A8 */ addiu $s0, $sp, 0xa8 +/* 014DF8 700141F8 92590000 */ lbu $t9, ($s2) +/* 014DFC 700141FC 26520001 */ addiu $s2, $s2, 1 +/* 014E00 70014200 10000002 */ b .L7001420C +/* 014E04 70014204 A3B900DC */ sb $t9, 0xdc($sp) +.L70014208: +/* 014E08 70014208 A3A000DC */ sb $zero, 0xdc($sp) +.L7001420C: +/* 014E0C 7001420C 93AF00DC */ lbu $t7, 0xdc($sp) +/* 014E10 70014210 2402006C */ li $v0, 108 +/* 014E14 70014214 27A600EC */ addiu $a2, $sp, 0xec +/* 014E18 70014218 144F0007 */ bne $v0, $t7, .L70014238 +/* 014E1C 7001421C 27A7007C */ addiu $a3, $sp, 0x7c +/* 014E20 70014220 92580000 */ lbu $t8, ($s2) +/* 014E24 70014224 240E004C */ li $t6, 76 +/* 014E28 70014228 14580003 */ bne $v0, $t8, .L70014238 +/* 014E2C 7001422C 00000000 */ nop +/* 014E30 70014230 A3AE00DC */ sb $t6, 0xdc($sp) +/* 014E34 70014234 26520001 */ addiu $s2, $s2, 1 +.L70014238: +/* 014E38 70014238 0C004E3C */ jal _Putfld +/* 014E3C 7001423C 92450000 */ lbu $a1, ($s2) +/* 014E40 70014240 8FB900D0 */ lw $t9, 0xd0($sp) +/* 014E44 70014244 8FAF00B4 */ lw $t7, 0xb4($sp) +/* 014E48 70014248 8FAE00B8 */ lw $t6, 0xb8($sp) +/* 014E4C 7001424C 032FC023 */ subu $t8, $t9, $t7 +/* 014E50 70014250 8FAF00BC */ lw $t7, 0xbc($sp) +/* 014E54 70014254 030EC823 */ subu $t9, $t8, $t6 +/* 014E58 70014258 8FAE00C0 */ lw $t6, 0xc0($sp) +/* 014E5C 7001425C 032FC023 */ subu $t8, $t9, $t7 +/* 014E60 70014260 8FAF00C4 */ lw $t7, 0xc4($sp) +/* 014E64 70014264 030EC823 */ subu $t9, $t8, $t6 +/* 014E68 70014268 8FAE00C8 */ lw $t6, 0xc8($sp) +/* 014E6C 7001426C 032FC023 */ subu $t8, $t9, $t7 +/* 014E70 70014270 8FAF00D8 */ lw $t7, 0xd8($sp) +/* 014E74 70014274 030EC823 */ subu $t9, $t8, $t6 +/* 014E78 70014278 AFB900D0 */ sw $t9, 0xd0($sp) +/* 014E7C 7001427C 31F80004 */ andi $t8, $t7, 4 +/* 014E80 70014280 1700001A */ bnez $t8, .L700142EC +/* 014E84 70014284 0019702A */ slt $t6, $zero, $t9 +/* 014E88 70014288 51C00019 */ beql $t6, $zero, .L700142F0 +/* 014E8C 7001428C 8FB900B4 */ lw $t9, 0xb4($sp) +/* 014E90 70014290 11C00016 */ beqz $t6, .L700142EC +/* 014E94 70014294 03208825 */ move $s1, $t9 +/* 014E98 70014298 2E210021 */ sltiu $at, $s1, 0x21 +.L7001429C: +/* 014E9C 7001429C 14200003 */ bnez $at, .L700142AC +/* 014EA0 700142A0 02208025 */ move $s0, $s1 +/* 014EA4 700142A4 10000001 */ b .L700142AC +/* 014EA8 700142A8 24100020 */ li $s0, 32 +.L700142AC: +/* 014EAC 700142AC 1A00000C */ blez $s0, .L700142E0 +/* 014EB0 700142B0 02602025 */ move $a0, $s3 +/* 014EB4 700142B4 02E02825 */ move $a1, $s7 +/* 014EB8 700142B8 0280F809 */ jalr $s4 +/* 014EBC 700142BC 02003025 */ move $a2, $s0 +/* 014EC0 700142C0 10400005 */ beqz $v0, .L700142D8 +/* 014EC4 700142C4 00409825 */ move $s3, $v0 +/* 014EC8 700142C8 8FAF00D4 */ lw $t7, 0xd4($sp) +/* 014ECC 700142CC 01F0C021 */ addu $t8, $t7, $s0 +/* 014ED0 700142D0 10000003 */ b .L700142E0 +/* 014ED4 700142D4 AFB800D4 */ sw $t8, 0xd4($sp) +.L700142D8: +/* 014ED8 700142D8 100000A6 */ b .L70014574 +/* 014EDC 700142DC 8FA200D4 */ lw $v0, 0xd4($sp) +.L700142E0: +/* 014EE0 700142E0 02308823 */ subu $s1, $s1, $s0 +/* 014EE4 700142E4 5E20FFED */ bgtzl $s1, .L7001429C +/* 014EE8 700142E8 2E210021 */ sltiu $at, $s1, 0x21 +.L700142EC: +/* 014EEC 700142EC 8FB900B4 */ lw $t9, 0xb4($sp) +.L700142F0: +/* 014EF0 700142F0 02602025 */ move $a0, $s3 +/* 014EF4 700142F4 27A5007C */ addiu $a1, $sp, 0x7c +/* 014EF8 700142F8 5B20000D */ blezl $t9, .L70014330 +/* 014EFC 700142FC 8FB900B8 */ lw $t9, 0xb8($sp) +/* 014F00 70014300 0280F809 */ jalr $s4 +/* 014F04 70014304 03203025 */ move $a2, $t9 +/* 014F08 70014308 10400006 */ beqz $v0, .L70014324 +/* 014F0C 7001430C 00409825 */ move $s3, $v0 +/* 014F10 70014310 8FAE00D4 */ lw $t6, 0xd4($sp) +/* 014F14 70014314 8FAF00B4 */ lw $t7, 0xb4($sp) +/* 014F18 70014318 01CFC021 */ addu $t8, $t6, $t7 +/* 014F1C 7001431C 10000003 */ b .L7001432C +/* 014F20 70014320 AFB800D4 */ sw $t8, 0xd4($sp) +.L70014324: +/* 014F24 70014324 10000093 */ b .L70014574 +/* 014F28 70014328 8FA200D4 */ lw $v0, 0xd4($sp) +.L7001432C: +/* 014F2C 7001432C 8FB900B8 */ lw $t9, 0xb8($sp) +.L70014330: +/* 014F30 70014330 0019702A */ slt $t6, $zero, $t9 +/* 014F34 70014334 51C00019 */ beql $t6, $zero, .L7001439C +/* 014F38 70014338 8FB900BC */ lw $t9, 0xbc($sp) +/* 014F3C 7001433C 11C00016 */ beqz $t6, .L70014398 +/* 014F40 70014340 03208825 */ move $s1, $t9 +/* 014F44 70014344 2E210021 */ sltiu $at, $s1, 0x21 +.L70014348: +/* 014F48 70014348 14200003 */ bnez $at, .L70014358 +/* 014F4C 7001434C 02208025 */ move $s0, $s1 +/* 014F50 70014350 10000001 */ b .L70014358 +/* 014F54 70014354 24100020 */ li $s0, 32 +.L70014358: +/* 014F58 70014358 1A00000C */ blez $s0, .L7001438C +/* 014F5C 7001435C 02602025 */ move $a0, $s3 +/* 014F60 70014360 02A02825 */ move $a1, $s5 +/* 014F64 70014364 0280F809 */ jalr $s4 +/* 014F68 70014368 02003025 */ move $a2, $s0 +/* 014F6C 7001436C 10400005 */ beqz $v0, .L70014384 +/* 014F70 70014370 00409825 */ move $s3, $v0 +/* 014F74 70014374 8FAF00D4 */ lw $t7, 0xd4($sp) +/* 014F78 70014378 01F0C021 */ addu $t8, $t7, $s0 +/* 014F7C 7001437C 10000003 */ b .L7001438C +/* 014F80 70014380 AFB800D4 */ sw $t8, 0xd4($sp) +.L70014384: +/* 014F84 70014384 1000007B */ b .L70014574 +/* 014F88 70014388 8FA200D4 */ lw $v0, 0xd4($sp) +.L7001438C: +/* 014F8C 7001438C 02308823 */ subu $s1, $s1, $s0 +/* 014F90 70014390 5E20FFED */ bgtzl $s1, .L70014348 +/* 014F94 70014394 2E210021 */ sltiu $at, $s1, 0x21 +.L70014398: +/* 014F98 70014398 8FB900BC */ lw $t9, 0xbc($sp) +.L7001439C: +/* 014F9C 7001439C 02602025 */ move $a0, $s3 +/* 014FA0 700143A0 8FA500B0 */ lw $a1, 0xb0($sp) +/* 014FA4 700143A4 5B20000D */ blezl $t9, .L700143DC +/* 014FA8 700143A8 8FB900C0 */ lw $t9, 0xc0($sp) +/* 014FAC 700143AC 0280F809 */ jalr $s4 +/* 014FB0 700143B0 03203025 */ move $a2, $t9 +/* 014FB4 700143B4 10400006 */ beqz $v0, .L700143D0 +/* 014FB8 700143B8 00409825 */ move $s3, $v0 +/* 014FBC 700143BC 8FAE00D4 */ lw $t6, 0xd4($sp) +/* 014FC0 700143C0 8FAF00BC */ lw $t7, 0xbc($sp) +/* 014FC4 700143C4 01CFC021 */ addu $t8, $t6, $t7 +/* 014FC8 700143C8 10000003 */ b .L700143D8 +/* 014FCC 700143CC AFB800D4 */ sw $t8, 0xd4($sp) +.L700143D0: +/* 014FD0 700143D0 10000068 */ b .L70014574 +/* 014FD4 700143D4 8FA200D4 */ lw $v0, 0xd4($sp) +.L700143D8: +/* 014FD8 700143D8 8FB900C0 */ lw $t9, 0xc0($sp) +.L700143DC: +/* 014FDC 700143DC 0019702A */ slt $t6, $zero, $t9 +/* 014FE0 700143E0 51C00019 */ beql $t6, $zero, .L70014448 +/* 014FE4 700143E4 8FB900C4 */ lw $t9, 0xc4($sp) +/* 014FE8 700143E8 11C00016 */ beqz $t6, .L70014444 +/* 014FEC 700143EC 03208825 */ move $s1, $t9 +/* 014FF0 700143F0 2E210021 */ sltiu $at, $s1, 0x21 +.L700143F4: +/* 014FF4 700143F4 14200003 */ bnez $at, .L70014404 +/* 014FF8 700143F8 02208025 */ move $s0, $s1 +/* 014FFC 700143FC 10000001 */ b .L70014404 +/* 015000 70014400 24100020 */ li $s0, 32 +.L70014404: +/* 015004 70014404 1A00000C */ blez $s0, .L70014438 +/* 015008 70014408 02602025 */ move $a0, $s3 +/* 01500C 7001440C 02A02825 */ move $a1, $s5 +/* 015010 70014410 0280F809 */ jalr $s4 +/* 015014 70014414 02003025 */ move $a2, $s0 +/* 015018 70014418 10400005 */ beqz $v0, .L70014430 +/* 01501C 7001441C 00409825 */ move $s3, $v0 +/* 015020 70014420 8FAF00D4 */ lw $t7, 0xd4($sp) +/* 015024 70014424 01F0C021 */ addu $t8, $t7, $s0 +/* 015028 70014428 10000003 */ b .L70014438 +/* 01502C 7001442C AFB800D4 */ sw $t8, 0xd4($sp) +.L70014430: +/* 015030 70014430 10000050 */ b .L70014574 +/* 015034 70014434 8FA200D4 */ lw $v0, 0xd4($sp) +.L70014438: +/* 015038 70014438 02308823 */ subu $s1, $s1, $s0 +/* 01503C 7001443C 5E20FFED */ bgtzl $s1, .L700143F4 +/* 015040 70014440 2E210021 */ sltiu $at, $s1, 0x21 +.L70014444: +/* 015044 70014444 8FB900C4 */ lw $t9, 0xc4($sp) +.L70014448: +/* 015048 70014448 02602025 */ move $a0, $s3 +/* 01504C 7001444C 8FAE00B0 */ lw $t6, 0xb0($sp) +/* 015050 70014450 1B20000D */ blez $t9, .L70014488 +/* 015054 70014454 8FAF00BC */ lw $t7, 0xbc($sp) +/* 015058 70014458 01CF2821 */ addu $a1, $t6, $t7 +/* 01505C 7001445C 0280F809 */ jalr $s4 +/* 015060 70014460 03203025 */ move $a2, $t9 +/* 015064 70014464 10400006 */ beqz $v0, .L70014480 +/* 015068 70014468 00409825 */ move $s3, $v0 +/* 01506C 7001446C 8FB800D4 */ lw $t8, 0xd4($sp) +/* 015070 70014470 8FAE00C4 */ lw $t6, 0xc4($sp) +/* 015074 70014474 030E7821 */ addu $t7, $t8, $t6 +/* 015078 70014478 10000003 */ b .L70014488 +/* 01507C 7001447C AFAF00D4 */ sw $t7, 0xd4($sp) +.L70014480: +/* 015080 70014480 1000003C */ b .L70014574 +/* 015084 70014484 8FA200D4 */ lw $v0, 0xd4($sp) +.L70014488: +/* 015088 70014488 8FB900C8 */ lw $t9, 0xc8($sp) +/* 01508C 7001448C 0019C02A */ slt $t8, $zero, $t9 +/* 015090 70014490 53000019 */ beql $t8, $zero, .L700144F8 +/* 015094 70014494 8FB900D8 */ lw $t9, 0xd8($sp) +/* 015098 70014498 13000016 */ beqz $t8, .L700144F4 +/* 01509C 7001449C 03208825 */ move $s1, $t9 +/* 0150A0 700144A0 2E210021 */ sltiu $at, $s1, 0x21 +.L700144A4: +/* 0150A4 700144A4 14200003 */ bnez $at, .L700144B4 +/* 0150A8 700144A8 02208025 */ move $s0, $s1 +/* 0150AC 700144AC 10000001 */ b .L700144B4 +/* 0150B0 700144B0 24100020 */ li $s0, 32 +.L700144B4: +/* 0150B4 700144B4 1A00000C */ blez $s0, .L700144E8 +/* 0150B8 700144B8 02602025 */ move $a0, $s3 +/* 0150BC 700144BC 02A02825 */ move $a1, $s5 +/* 0150C0 700144C0 0280F809 */ jalr $s4 +/* 0150C4 700144C4 02003025 */ move $a2, $s0 +/* 0150C8 700144C8 10400005 */ beqz $v0, .L700144E0 +/* 0150CC 700144CC 00409825 */ move $s3, $v0 +/* 0150D0 700144D0 8FAE00D4 */ lw $t6, 0xd4($sp) +/* 0150D4 700144D4 01D07821 */ addu $t7, $t6, $s0 +/* 0150D8 700144D8 10000003 */ b .L700144E8 +/* 0150DC 700144DC AFAF00D4 */ sw $t7, 0xd4($sp) +.L700144E0: +/* 0150E0 700144E0 10000024 */ b .L70014574 +/* 0150E4 700144E4 8FA200D4 */ lw $v0, 0xd4($sp) +.L700144E8: +/* 0150E8 700144E8 02308823 */ subu $s1, $s1, $s0 +/* 0150EC 700144EC 5E20FFED */ bgtzl $s1, .L700144A4 +/* 0150F0 700144F0 2E210021 */ sltiu $at, $s1, 0x21 +.L700144F4: +/* 0150F4 700144F4 8FB900D8 */ lw $t9, 0xd8($sp) +.L700144F8: +/* 0150F8 700144F8 8FAE00D0 */ lw $t6, 0xd0($sp) +/* 0150FC 700144FC 33380004 */ andi $t8, $t9, 4 +/* 015100 70014500 1300001A */ beqz $t8, .L7001456C +/* 015104 70014504 000E782A */ slt $t7, $zero, $t6 +/* 015108 70014508 11E00018 */ beqz $t7, .L7001456C +/* 01510C 7001450C 00000000 */ nop +/* 015110 70014510 11E00016 */ beqz $t7, .L7001456C +/* 015114 70014514 01C08825 */ move $s1, $t6 +/* 015118 70014518 2E210021 */ sltiu $at, $s1, 0x21 +.L7001451C: +/* 01511C 7001451C 14200003 */ bnez $at, .L7001452C +/* 015120 70014520 02208025 */ move $s0, $s1 +/* 015124 70014524 10000001 */ b .L7001452C +/* 015128 70014528 24100020 */ li $s0, 32 +.L7001452C: +/* 01512C 7001452C 1A00000C */ blez $s0, .L70014560 +/* 015130 70014530 02602025 */ move $a0, $s3 +/* 015134 70014534 02E02825 */ move $a1, $s7 +/* 015138 70014538 0280F809 */ jalr $s4 +/* 01513C 7001453C 02003025 */ move $a2, $s0 +/* 015140 70014540 10400005 */ beqz $v0, .L70014558 +/* 015144 70014544 00409825 */ move $s3, $v0 +/* 015148 70014548 8FB900D4 */ lw $t9, 0xd4($sp) +/* 01514C 7001454C 0330C021 */ addu $t8, $t9, $s0 +/* 015150 70014550 10000003 */ b .L70014560 +/* 015154 70014554 AFB800D4 */ sw $t8, 0xd4($sp) +.L70014558: +/* 015158 70014558 10000006 */ b .L70014574 +/* 01515C 7001455C 8FA200D4 */ lw $v0, 0xd4($sp) +.L70014560: +/* 015160 70014560 02308823 */ subu $s1, $s1, $s0 +/* 015164 70014564 5E20FFED */ bgtzl $s1, .L7001451C +/* 015168 70014568 2E210021 */ sltiu $at, $s1, 0x21 +.L7001456C: +/* 01516C 7001456C 1000FE94 */ b .L70013FC0 +/* 015170 70014570 26470001 */ addiu $a3, $s2, 1 +.L70014574: +/* 015174 70014574 8FBF003C */ lw $ra, 0x3c($sp) +/* 015178 70014578 8FB00018 */ lw $s0, 0x18($sp) +/* 01517C 7001457C 8FB1001C */ lw $s1, 0x1c($sp) +/* 015180 70014580 8FB20020 */ lw $s2, 0x20($sp) +/* 015184 70014584 8FB30024 */ lw $s3, 0x24($sp) +/* 015188 70014588 8FB40028 */ lw $s4, 0x28($sp) +/* 01518C 7001458C 8FB5002C */ lw $s5, 0x2c($sp) +/* 015190 70014590 8FB60030 */ lw $s6, 0x30($sp) +/* 015194 70014594 8FB70034 */ lw $s7, 0x34($sp) +/* 015198 70014598 8FBE0038 */ lw $fp, 0x38($sp) +/* 01519C 7001459C 03E00008 */ jr $ra +/* 0151A0 700145A0 27BD00E0 */ addiu $sp, $sp, 0xe0 + +.section .data +glabel spaces +.asciiz " " +.align 2 +glabel zeros +.asciiz "00000000000000000000000000000000" +.align 2 + +.section .rodata +glabel aHll +.ascii "hlL"<0> +glabel printf_symbols +.ascii " +-#0"<0> +.align 2 +glabel byteshiftleft_lookup +.word 1, 2, 4, 8, 0x10, 0 + +glabel jpt_80029714 +.word .L70013C58, .L70013F38, .L70013C58, .L70013F38 +.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 +.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 +.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 +.word .L70013F38, .L70013F38, .L70013F38, .L70013B08 +.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 +.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 +.word .L70013F38, .L70013F38, .L70013960, .L70013998 +.word .L70013C58, .L70013C58, .L70013C58, .L70013F38 +.word .L70013998, .L70013F38, .L70013F38, .L70013F38 +.word .L70013F38, .L70013DBC, .L70013B08, .L70013E8C +.word .L70013F38, .L70013F38, .L70013ED4, .L70013F38 +.word .L70013B08, .L70013F38, .L70013F38, .L70013B08 +.align 4 diff --git a/src/libultra/__CSP.s b/src/libultra/__CSP.s new file mode 100644 index 0000000..9fa282a --- /dev/null +++ b/src/libultra/__CSP.s @@ -0,0 +1,1359 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel __CSPPostNextSeqEvent +/* 011BC0 70010FC0 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 011BC4 70010FC4 AFBF0014 */ sw $ra, 0x14($sp) +/* 011BC8 70010FC8 8C8E002C */ lw $t6, 0x2c($a0) +/* 011BCC 70010FCC 24010001 */ li $at, 1 +/* 011BD0 70010FD0 00803825 */ move $a3, $a0 +/* 011BD4 70010FD4 55C10013 */ bnel $t6, $at, .L70011024 +/* 011BD8 70010FD8 8FBF0014 */ lw $ra, 0x14($sp) +/* 011BDC 70010FDC 8C840018 */ lw $a0, 0x18($a0) +/* 011BE0 70010FE0 27A5001C */ addiu $a1, $sp, 0x1c +/* 011BE4 70010FE4 5080000F */ beql $a0, $zero, .L70011024 +/* 011BE8 70010FE8 8FBF0014 */ lw $ra, 0x14($sp) +/* 011BEC 70010FEC 0C004AE3 */ jal __alCSeqNextDelta +/* 011BF0 70010FF0 AFA70030 */ sw $a3, 0x30($sp) +/* 011BF4 70010FF4 1040000A */ beqz $v0, .L70011020 +/* 011BF8 70010FF8 8FA70030 */ lw $a3, 0x30($sp) +/* 011BFC 70010FFC A7A00020 */ sh $zero, 0x20($sp) +/* 011C00 70011000 8CEF0024 */ lw $t7, 0x24($a3) +/* 011C04 70011004 8FB8001C */ lw $t8, 0x1c($sp) +/* 011C08 70011008 24E40048 */ addiu $a0, $a3, 0x48 +/* 011C0C 7001100C 27A50020 */ addiu $a1, $sp, 0x20 +/* 011C10 70011010 01F80019 */ multu $t7, $t8 +/* 011C14 70011014 00003012 */ mflo $a2 +/* 011C18 70011018 0C004BBF */ jal alEvtqPostEvent +/* 011C1C 7001101C 00000000 */ nop +.L70011020: +/* 011C20 70011020 8FBF0014 */ lw $ra, 0x14($sp) +.L70011024: +/* 011C24 70011024 27BD0030 */ addiu $sp, $sp, 0x30 +/* 011C28 70011028 03E00008 */ jr $ra +/* 011C2C 7001102C 00000000 */ nop + +glabel ultra_70011030 +/* 011C30 70011030 8C820018 */ lw $v0, 0x18($a0) +/* 011C34 70011034 241801E8 */ li $t8, 488 +/* 011C38 70011038 50400008 */ beql $v0, $zero, .L7001105C +/* 011C3C 7001103C AC980024 */ sw $t8, 0x24($a0) +/* 011C40 70011040 C4440008 */ lwc1 $f4, 8($v0) +/* 011C44 70011044 46046182 */ mul.s $f6, $f12, $f4 +/* 011C48 70011048 4600320D */ trunc.w.s $f8, $f6 +/* 011C4C 7001104C 440F4000 */ mfc1 $t7, $f8 +/* 011C50 70011050 03E00008 */ jr $ra +/* 011C54 70011054 AC8F0024 */ sw $t7, 0x24($a0) + +/* 011C58 70011058 AC980024 */ sw $t8, 0x24($a0) +.L7001105C: +/* 011C5C 7001105C 03E00008 */ jr $ra +/* 011C60 70011060 00000000 */ nop + +/* 011C64 70011064 03E00008 */ jr $ra +/* 011C68 70011068 00000000 */ nop + +glabel ultra_7001106C +/* 011C6C 7001106C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 011C70 70011070 AFBF0014 */ sw $ra, 0x14($sp) +/* 011C74 70011074 90AE0008 */ lbu $t6, 8($a1) +/* 011C78 70011078 240100FF */ li $at, 255 +/* 011C7C 7001107C 00008025 */ move $s0, $zero +/* 011C80 70011080 15C1006A */ bne $t6, $at, .L7001122C +/* 011C84 70011084 00009825 */ move $s3, $zero +/* 011C88 70011088 90AF0009 */ lbu $t7, 9($a1) +/* 011C8C 7001108C 24010051 */ li $at, 81 +/* 011C90 70011090 24A20004 */ addiu $v0, $a1, 4 +/* 011C94 70011094 55E10066 */ bnel $t7, $at, .L70011230 +/* 011C98 70011098 8FBF0014 */ lw $ra, 0x14($sp) +/* 011C9C 7001109C 904E0008 */ lbu $t6, 8($v0) +/* 011CA0 700110A0 90580007 */ lbu $t8, 7($v0) +/* 011CA4 700110A4 8EFE0024 */ lw $fp, 0x24($s7) +/* 011CA8 700110A8 000E7A00 */ sll $t7, $t6, 8 +/* 011CAC 700110AC 904E0009 */ lbu $t6, 9($v0) +/* 011CB0 700110B0 0018CC00 */ sll $t9, $t8, 0x10 +/* 011CB4 700110B4 032FC025 */ or $t8, $t9, $t7 +/* 011CB8 700110B8 030E1825 */ or $v1, $t8, $t6 +/* 011CBC 700110BC 44832000 */ mtc1 $v1, $f4 +/* 011CC0 700110C0 02E02025 */ move $a0, $s7 +/* 011CC4 700110C4 0C00440C */ jal ultra_70011030 +/* 011CC8 700110C8 46802320 */ cvt.s.w $f12, $f4 +/* 011CCC 700110CC 8EF10050 */ lw $s1, 0x50($s7) +/* 011CD0 700110D0 1220001D */ beqz $s1, .L70011148 +/* 011CD4 700110D4 00000000 */ nop +/* 011CD8 700110D8 24140015 */ li $s4, 21 +.L700110DC: +/* 011CDC 700110DC 862F000C */ lh $t7, 0xc($s1) +/* 011CE0 700110E0 8E390008 */ lw $t9, 8($s1) +/* 011CE4 700110E4 8E320000 */ lw $s2, ($s1) +/* 011CE8 700110E8 168F0015 */ bne $s4, $t7, .L70011140 +/* 011CEC 700110EC 02198021 */ addu $s0, $s0, $t9 +/* 011CF0 700110F0 0C003AA4 */ jal alUnlink +/* 011CF4 700110F4 02202025 */ move $a0, $s1 +/* 011CF8 700110F8 52600007 */ beql $s3, $zero, .L70011118 +/* 011CFC 700110FC AE200000 */ sw $zero, ($s1) +/* 011D00 70011100 02202025 */ move $a0, $s1 +/* 011D04 70011104 0C003AB0 */ jal alLink +/* 011D08 70011108 02602825 */ move $a1, $s3 +/* 011D0C 7001110C 10000004 */ b .L70011120 +/* 011D10 70011110 00000000 */ nop +/* 011D14 70011114 AE200000 */ sw $zero, ($s1) +.L70011118: +/* 011D18 70011118 AE200004 */ sw $zero, 4($s1) +/* 011D1C 7001111C 02209825 */ move $s3, $s1 +.L70011120: +/* 011D20 70011120 12400006 */ beqz $s2, .L7001113C +/* 011D24 70011124 02001825 */ move $v1, $s0 +/* 011D28 70011128 8E220008 */ lw $v0, 8($s1) +/* 011D2C 7001112C 8E580008 */ lw $t8, 8($s2) +/* 011D30 70011130 02028023 */ subu $s0, $s0, $v0 +/* 011D34 70011134 03027021 */ addu $t6, $t8, $v0 +/* 011D38 70011138 AE4E0008 */ sw $t6, 8($s2) +.L7001113C: +/* 011D3C 7001113C AE230008 */ sw $v1, 8($s1) +.L70011140: +/* 011D40 70011140 1640FFE6 */ bnez $s2, .L700110DC +/* 011D44 70011144 02408825 */ move $s1, $s2 +.L70011148: +/* 011D48 70011148 12600038 */ beqz $s3, .L7001122C +/* 011D4C 7001114C 02608825 */ move $s1, $s3 +/* 011D50 70011150 26F40048 */ addiu $s4, $s7, 0x48 +/* 011D54 70011154 26950008 */ addiu $s5, $s4, 8 +/* 011D58 70011158 2416FFF8 */ li $s6, -8 +.L7001115C: +/* 011D5C 7001115C 8E390008 */ lw $t9, 8($s1) +/* 011D60 70011160 8EEF0024 */ lw $t7, 0x24($s7) +/* 011D64 70011164 8E320000 */ lw $s2, ($s1) +/* 011D68 70011168 033E001A */ div $zero, $t9, $fp +/* 011D6C 7001116C 00001012 */ mflo $v0 +/* 011D70 70011170 24040001 */ li $a0, 1 +/* 011D74 70011174 17C00002 */ bnez $fp, .L70011180 +/* 011D78 70011178 00000000 */ nop +/* 011D7C 7001117C 0007000D */ break 7 +.L70011180: +/* 011D80 70011180 2401FFFF */ li $at, -1 +/* 011D84 70011184 17C10004 */ bne $fp, $at, .L70011198 +/* 011D88 70011188 3C018000 */ lui $at, 0x8000 +/* 011D8C 7001118C 17210002 */ bne $t9, $at, .L70011198 +/* 011D90 70011190 00000000 */ nop +/* 011D94 70011194 0006000D */ break 6 +.L70011198: +/* 011D98 70011198 01E20019 */ multu $t7, $v0 +/* 011D9C 7001119C 02A08025 */ move $s0, $s5 +/* 011DA0 700111A0 0000C012 */ mflo $t8 +/* 011DA4 700111A4 AE380008 */ sw $t8, 8($s1) +/* 011DA8 700111A8 0C00374C */ jal osSetIntMask +/* 011DAC 700111AC 00000000 */ nop +/* 011DB0 700111B0 1296001A */ beq $s4, $s6, .L7001121C +/* 011DB4 700111B4 00409825 */ move $s3, $v0 +/* 011DB8 700111B8 8E040000 */ lw $a0, ($s0) +.L700111BC: +/* 011DBC 700111BC 54800007 */ bnezl $a0, .L700111DC +/* 011DC0 700111C0 8E220008 */ lw $v0, 8($s1) +/* 011DC4 700111C4 02202025 */ move $a0, $s1 +/* 011DC8 700111C8 0C003AB0 */ jal alLink +/* 011DCC 700111CC 02002825 */ move $a1, $s0 +/* 011DD0 700111D0 10000012 */ b .L7001121C +/* 011DD4 700111D4 00000000 */ nop +/* 011DD8 700111D8 8E220008 */ lw $v0, 8($s1) +.L700111DC: +/* 011DDC 700111DC 8C830008 */ lw $v1, 8($a0) +/* 011DE0 700111E0 00803025 */ move $a2, $a0 +/* 011DE4 700111E4 0043082A */ slt $at, $v0, $v1 +/* 011DE8 700111E8 10200008 */ beqz $at, .L7001120C +/* 011DEC 700111EC 0043C823 */ subu $t9, $v0, $v1 +/* 011DF0 700111F0 00627023 */ subu $t6, $v1, $v0 +/* 011DF4 700111F4 AC8E0008 */ sw $t6, 8($a0) +/* 011DF8 700111F8 02202025 */ move $a0, $s1 +/* 011DFC 700111FC 0C003AB0 */ jal alLink +/* 011E00 70011200 02002825 */ move $a1, $s0 +/* 011E04 70011204 10000005 */ b .L7001121C +/* 011E08 70011208 00000000 */ nop +.L7001120C: +/* 011E0C 7001120C AE390008 */ sw $t9, 8($s1) +/* 011E10 70011210 8E100000 */ lw $s0, ($s0) +/* 011E14 70011214 5600FFE9 */ bnezl $s0, .L700111BC +/* 011E18 70011218 8E040000 */ lw $a0, ($s0) +.L7001121C: +/* 011E1C 7001121C 0C00374C */ jal osSetIntMask +/* 011E20 70011220 02602025 */ move $a0, $s3 +/* 011E24 70011224 1640FFCD */ bnez $s2, .L7001115C +/* 011E28 70011228 02408825 */ move $s1, $s2 +.L7001122C: +/* 011E2C 7001122C 8FBF0014 */ lw $ra, 0x14($sp) +.L70011230: +/* 011E30 70011230 27BD0018 */ addiu $sp, $sp, 0x18 +/* 011E34 70011234 03E00008 */ jr $ra +/* 011E38 70011238 00000000 */ nop + +glabel __CSPHandleMIDIMsg +/* 011E3C 7001123C 27BDFF48 */ addiu $sp, $sp, -0xb8 +/* 011E40 70011240 AFBF0024 */ sw $ra, 0x24($sp) +/* 011E44 70011244 91160008 */ lbu $s6, 8($t0) +/* 011E48 70011248 91140009 */ lbu $s4, 9($t0) +/* 011E4C 7001124C 9111000A */ lbu $s1, 0xa($t0) +/* 011E50 70011250 32C300F0 */ andi $v1, $s6, 0xf0 +/* 011E54 70011254 246FFF80 */ addiu $t7, $v1, -0x80 +/* 011E58 70011258 2DE10061 */ sltiu $at, $t7, 0x61 +/* 011E5C 7001125C 32CE000F */ andi $t6, $s6, 0xf +/* 011E60 70011260 102001FC */ beqz $at, .L70011A54 +/* 011E64 70011264 01C0B025 */ move $s6, $t6 +/* 011E68 70011268 000F7880 */ sll $t7, $t7, 2 +/* 011E6C 7001126C 3C018003 */ lui $at, %hi(audio_related_jump_table_0) # 0x8003 +/* 011E70 70011270 002F0821 */ addu $at, $at, $t7 +/* 011E74 70011274 8C2F9490 */ lw $t7, %lo(audio_related_jump_table_0)($at) # -0x6b70 +/* 011E78 70011278 01E00008 */ jr $t7 +/* 011E7C 7001127C 00000000 */ nop +.L70011280: +/* 011E80 70011280 522000E8 */ beql $s1, $zero, .L70011624 +/* 011E84 70011284 02402025 */ move $a0, $s2 +/* 011E88 70011288 8E58002C */ lw $t8, 0x2c($s2) +/* 011E8C 7001128C 24010001 */ li $at, 1 +/* 011E90 70011290 02402025 */ move $a0, $s2 +/* 011E94 70011294 170101EF */ bne $t8, $at, .L70011A54 +/* 011E98 70011298 328500FF */ andi $a1, $s4, 0xff +/* 011E9C 7001129C 322600FF */ andi $a2, $s1, 0xff +/* 011EA0 700112A0 32C700FF */ andi $a3, $s6, 0xff +/* 011EA4 700112A4 0C0070D8 */ jal __lookupSoundQuick +/* 011EA8 700112A8 AFA800BC */ sw $t0, 0xbc($sp) +/* 011EAC 700112AC 104001E9 */ beqz $v0, .L70011A54 +/* 011EB0 700112B0 0040B825 */ move $s7, $v0 +/* 011EB4 700112B4 8E590060 */ lw $t9, 0x60($s2) +/* 011EB8 700112B8 0016F100 */ sll $fp, $s6, 4 +/* 011EBC 700112BC 02402025 */ move $a0, $s2 +/* 011EC0 700112C0 033E7021 */ addu $t6, $t9, $fp +/* 011EC4 700112C4 91CF0008 */ lbu $t7, 8($t6) +/* 011EC8 700112C8 A7A00076 */ sh $zero, 0x76($sp) +/* 011ECC 700112CC A3A00078 */ sb $zero, 0x78($sp) +/* 011ED0 700112D0 328500FF */ andi $a1, $s4, 0xff +/* 011ED4 700112D4 322600FF */ andi $a2, $s1, 0xff +/* 011ED8 700112D8 32C700FF */ andi $a3, $s6, 0xff +/* 011EDC 700112DC 0C0070BC */ jal __mapVoice +/* 011EE0 700112E0 A7AF0074 */ sh $t7, 0x74($sp) +/* 011EE4 700112E4 104001DB */ beqz $v0, .L70011A54 +/* 011EE8 700112E8 00408025 */ move $s0, $v0 +/* 011EEC 700112EC 8E440014 */ lw $a0, 0x14($s2) +/* 011EF0 700112F0 24450004 */ addiu $a1, $v0, 4 +/* 011EF4 700112F4 AFA50038 */ sw $a1, 0x38($sp) +/* 011EF8 700112F8 0C004C96 */ jal alSynAllocVoice +/* 011EFC 700112FC 27A60074 */ addiu $a2, $sp, 0x74 +/* 011F00 70011300 AE170020 */ sw $s7, 0x20($s0) +/* 011F04 70011304 A2000034 */ sb $zero, 0x34($s0) +/* 011F08 70011308 8E580060 */ lw $t8, 0x60($s2) +/* 011F0C 7001130C 24150002 */ li $s5, 2 +/* 011F10 70011310 031EC821 */ addu $t9, $t8, $fp +/* 011F14 70011314 932E000B */ lbu $t6, 0xb($t9) +/* 011F18 70011318 29C10040 */ slti $at, $t6, 0x40 +/* 011F1C 7001131C 54200004 */ bnezl $at, .L70011330 +/* 011F20 70011320 A2000035 */ sb $zero, 0x35($s0) +/* 011F24 70011324 10000002 */ b .L70011330 +/* 011F28 70011328 A2150035 */ sb $s5, 0x35($s0) +/* 011F2C 7001132C A2000035 */ sb $zero, 0x35($s0) +.L70011330: +/* 011F30 70011330 8EE20004 */ lw $v0, 4($s7) +/* 011F34 70011334 904F0004 */ lbu $t7, 4($v0) +/* 011F38 70011338 804E0005 */ lb $t6, 5($v0) +/* 011F3C 7001133C 028FC023 */ subu $t8, $s4, $t7 +/* 011F40 70011340 0018C880 */ sll $t9, $t8, 2 +/* 011F44 70011344 0338C823 */ subu $t9, $t9, $t8 +/* 011F48 70011348 0019C8C0 */ sll $t9, $t9, 3 +/* 011F4C 7001134C 0338C821 */ addu $t9, $t9, $t8 +/* 011F50 70011350 0019C880 */ sll $t9, $t9, 2 +/* 011F54 70011354 032E2021 */ addu $a0, $t9, $t6 +/* 011F58 70011358 00047C00 */ sll $t7, $a0, 0x10 +/* 011F5C 7001135C 0C004DF0 */ jal alCents2Ratio +/* 011F60 70011360 000F2403 */ sra $a0, $t7, 0x10 +/* 011F64 70011364 E6000028 */ swc1 $f0, 0x28($s0) +/* 011F68 70011368 8EF90000 */ lw $t9, ($s7) +/* 011F6C 7001136C 3C0142FE */ li $at, 0x42FE0000 # 127.000000 +/* 011F70 70011370 44812000 */ mtc1 $at, $f4 +/* 011F74 70011374 932E000C */ lbu $t6, 0xc($t9) +/* 011F78 70011378 A20E0030 */ sb $t6, 0x30($s0) +/* 011F7C 7001137C 8EF80000 */ lw $t8, ($s7) +/* 011F80 70011380 8E4F001C */ lw $t7, 0x1c($s2) +/* 011F84 70011384 8F190000 */ lw $t9, ($t8) +/* 011F88 70011388 A2000037 */ sb $zero, 0x37($s0) +/* 011F8C 7001138C 01F97021 */ addu $t6, $t7, $t9 +/* 011F90 70011390 AE0E0024 */ sw $t6, 0x24($s0) +/* 011F94 70011394 8E580060 */ lw $t8, 0x60($s2) +/* 011F98 70011398 031E7821 */ addu $t7, $t8, $fp +/* 011F9C 7001139C 8DF10000 */ lw $s1, ($t7) +/* 011FA0 700113A0 E7A40064 */ swc1 $f4, 0x64($sp) +/* 011FA4 700113A4 92260004 */ lbu $a2, 4($s1) +/* 011FA8 700113A8 50C0001A */ beql $a2, $zero, .L70011414 +/* 011FAC 700113AC 4458F800 */ cfc1 $t8, $31 +/* 011FB0 700113B0 8E420070 */ lw $v0, 0x70($s2) +/* 011FB4 700113B4 50400017 */ beql $v0, $zero, .L70011414 +/* 011FB8 700113B8 4458F800 */ cfc1 $t8, $31 +/* 011FBC 700113BC 92390006 */ lbu $t9, 6($s1) +/* 011FC0 700113C0 92270005 */ lbu $a3, 5($s1) +/* 011FC4 700113C4 27A4005C */ addiu $a0, $sp, 0x5c +/* 011FC8 700113C8 AFB90010 */ sw $t9, 0x10($sp) +/* 011FCC 700113CC 922E0007 */ lbu $t6, 7($s1) +/* 011FD0 700113D0 27A50064 */ addiu $a1, $sp, 0x64 +/* 011FD4 700113D4 0040F809 */ jalr $v0 +/* 011FD8 700113D8 AFAE0014 */ sw $t6, 0x14($sp) +/* 011FDC 700113DC 1040000C */ beqz $v0, .L70011410 +/* 011FE0 700113E0 24180016 */ li $t8, 22 +/* 011FE4 700113E4 8FAF005C */ lw $t7, 0x5c($sp) +/* 011FE8 700113E8 A7B8008C */ sh $t8, 0x8c($sp) +/* 011FEC 700113EC AFB00090 */ sw $s0, 0x90($sp) +/* 011FF0 700113F0 26440048 */ addiu $a0, $s2, 0x48 +/* 011FF4 700113F4 27A5008C */ addiu $a1, $sp, 0x8c +/* 011FF8 700113F8 00403025 */ move $a2, $v0 +/* 011FFC 700113FC 0C004BBF */ jal alEvtqPostEvent +/* 012000 70011400 AFAF0094 */ sw $t7, 0x94($sp) +/* 012004 70011404 92190037 */ lbu $t9, 0x37($s0) +/* 012008 70011408 372E0001 */ ori $t6, $t9, 1 +/* 01200C 7001140C A20E0037 */ sb $t6, 0x37($s0) +.L70011410: +/* 012010 70011410 4458F800 */ cfc1 $t8, $31 +.L70011414: +/* 012014 70011414 240F0001 */ li $t7, 1 +/* 012018 70011418 44CFF800 */ ctc1 $t7, $31 +/* 01201C 7001141C C7A60064 */ lwc1 $f6, 0x64($sp) +/* 012020 70011420 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 +/* 012024 70011424 46003224 */ cvt.w.s $f8, $f6 +/* 012028 70011428 444FF800 */ cfc1 $t7, $31 +/* 01202C 7001142C 00000000 */ nop +/* 012030 70011430 31EF0078 */ andi $t7, $t7, 0x78 +/* 012034 70011434 51E00013 */ beql $t7, $zero, .L70011484 +/* 012038 70011438 440F4000 */ mfc1 $t7, $f8 +/* 01203C 7001143C 44814000 */ mtc1 $at, $f8 +/* 012040 70011440 240F0001 */ li $t7, 1 +/* 012044 70011444 46083201 */ sub.s $f8, $f6, $f8 +/* 012048 70011448 44CFF800 */ ctc1 $t7, $31 +/* 01204C 7001144C 00000000 */ nop +/* 012050 70011450 46004224 */ cvt.w.s $f8, $f8 +/* 012054 70011454 444FF800 */ cfc1 $t7, $31 +/* 012058 70011458 00000000 */ nop +/* 01205C 7001145C 31EF0078 */ andi $t7, $t7, 0x78 +/* 012060 70011460 15E00005 */ bnez $t7, .L70011478 +/* 012064 70011464 00000000 */ nop +/* 012068 70011468 440F4000 */ mfc1 $t7, $f8 +/* 01206C 7001146C 3C018000 */ lui $at, 0x8000 +/* 012070 70011470 10000007 */ b .L70011490 +/* 012074 70011474 01E17825 */ or $t7, $t7, $at +.L70011478: +/* 012078 70011478 10000005 */ b .L70011490 +/* 01207C 7001147C 240FFFFF */ li $t7, -1 +/* 012080 70011480 440F4000 */ mfc1 $t7, $f8 +.L70011484: +/* 012084 70011484 00000000 */ nop +/* 012088 70011488 05E0FFFB */ bltz $t7, .L70011478 +/* 01208C 7001148C 00000000 */ nop +.L70011490: +/* 012090 70011490 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 012094 70011494 44815000 */ mtc1 $at, $f10 +/* 012098 70011498 A20F0036 */ sb $t7, 0x36($s0) +/* 01209C 7001149C 44D8F800 */ ctc1 $t8, $31 +/* 0120A0 700114A0 E7AA0064 */ swc1 $f10, 0x64($sp) +/* 0120A4 700114A4 92260008 */ lbu $a2, 8($s1) +/* 0120A8 700114A8 26550048 */ addiu $s5, $s2, 0x48 +/* 0120AC 700114AC 50C0001B */ beql $a2, $zero, .L7001151C +/* 0120B0 700114B0 C7A40064 */ lwc1 $f4, 0x64($sp) +/* 0120B4 700114B4 8E420070 */ lw $v0, 0x70($s2) +/* 0120B8 700114B8 50400018 */ beql $v0, $zero, .L7001151C +/* 0120BC 700114BC C7A40064 */ lwc1 $f4, 0x64($sp) +/* 0120C0 700114C0 9239000A */ lbu $t9, 0xa($s1) +/* 0120C4 700114C4 92270009 */ lbu $a3, 9($s1) +/* 0120C8 700114C8 27A4005C */ addiu $a0, $sp, 0x5c +/* 0120CC 700114CC AFB90010 */ sw $t9, 0x10($sp) +/* 0120D0 700114D0 922E000B */ lbu $t6, 0xb($s1) +/* 0120D4 700114D4 27A50064 */ addiu $a1, $sp, 0x64 +/* 0120D8 700114D8 0040F809 */ jalr $v0 +/* 0120DC 700114DC AFAE0014 */ sw $t6, 0x14($sp) +/* 0120E0 700114E0 1040000D */ beqz $v0, .L70011518 +/* 0120E4 700114E4 24180017 */ li $t8, 23 +/* 0120E8 700114E8 8FAF005C */ lw $t7, 0x5c($sp) +/* 0120EC 700114EC A7B8008C */ sh $t8, 0x8c($sp) +/* 0120F0 700114F0 AFB00090 */ sw $s0, 0x90($sp) +/* 0120F4 700114F4 A3B60098 */ sb $s6, 0x98($sp) +/* 0120F8 700114F8 02A02025 */ move $a0, $s5 +/* 0120FC 700114FC 27A5008C */ addiu $a1, $sp, 0x8c +/* 012100 70011500 00403025 */ move $a2, $v0 +/* 012104 70011504 0C004BBF */ jal alEvtqPostEvent +/* 012108 70011508 AFAF0094 */ sw $t7, 0x94($sp) +/* 01210C 7001150C 92190037 */ lbu $t9, 0x37($s0) +/* 012110 70011510 372E0002 */ ori $t6, $t9, 2 +/* 012114 70011514 A20E0037 */ sb $t6, 0x37($s0) +.L70011518: +/* 012118 70011518 C7A40064 */ lwc1 $f4, 0x64($sp) +.L7001151C: +/* 01211C 7001151C C6080028 */ lwc1 $f8, 0x28($s0) +/* 012120 70011520 02002025 */ move $a0, $s0 +/* 012124 70011524 E604002C */ swc1 $f4, 0x2c($s0) +/* 012128 70011528 8E580060 */ lw $t8, 0x60($s2) +/* 01212C 7001152C C604002C */ lwc1 $f4, 0x2c($s0) +/* 012130 70011530 02402825 */ move $a1, $s2 +/* 012134 70011534 031E1021 */ addu $v0, $t8, $fp +/* 012138 70011538 C446000C */ lwc1 $f6, 0xc($v0) +/* 01213C 7001153C 9051000A */ lbu $s1, 0xa($v0) +/* 012140 70011540 46083282 */ mul.s $f10, $f6, $f8 +/* 012144 70011544 00000000 */ nop +/* 012148 70011548 46045502 */ mul.s $f20, $f10, $f4 +/* 01214C 7001154C 0C00708D */ jal __vsPan +/* 012150 70011550 00000000 */ nop +/* 012154 70011554 305E00FF */ andi $fp, $v0, 0xff +/* 012158 70011558 02002025 */ move $a0, $s0 +/* 01215C 7001155C 0C006F85 */ jal __vsVol +/* 012160 70011560 02402825 */ move $a1, $s2 +/* 012164 70011564 8EEF0000 */ lw $t7, ($s7) +/* 012168 70011568 8E440014 */ lw $a0, 0x14($s2) +/* 01216C 7001156C 8EE60008 */ lw $a2, 8($s7) +/* 012170 70011570 8DF30000 */ lw $s3, ($t7) +/* 012174 70011574 4407A000 */ mfc1 $a3, $f20 +/* 012178 70011578 AFB10018 */ sw $s1, 0x18($sp) +/* 01217C 7001157C AFBE0014 */ sw $fp, 0x14($sp) +/* 012180 70011580 AFA20010 */ sw $v0, 0x10($sp) +/* 012184 70011584 8FA50038 */ lw $a1, 0x38($sp) +/* 012188 70011588 0C007568 */ jal alSynStartVoiceParams +/* 01218C 7001158C AFB3001C */ sw $s3, 0x1c($sp) +/* 012190 70011590 8FAE0038 */ lw $t6, 0x38($sp) +/* 012194 70011594 24190006 */ li $t9, 6 +/* 012198 70011598 A7B9008C */ sh $t9, 0x8c($sp) +/* 01219C 7001159C AFAE0090 */ sw $t6, 0x90($sp) +/* 0121A0 700115A0 8EF80000 */ lw $t8, ($s7) +/* 0121A4 700115A4 02A02025 */ move $a0, $s5 +/* 0121A8 700115A8 27A5008C */ addiu $a1, $sp, 0x8c +/* 0121AC 700115AC 930F000D */ lbu $t7, 0xd($t8) +/* 0121B0 700115B0 02603025 */ move $a2, $s3 +/* 0121B4 700115B4 A3AF0098 */ sb $t7, 0x98($sp) +/* 0121B8 700115B8 8EF90000 */ lw $t9, ($s7) +/* 0121BC 700115BC 8F2E0004 */ lw $t6, 4($t9) +/* 0121C0 700115C0 0C004BBF */ jal alEvtqPostEvent +/* 0121C4 700115C4 AFAE0094 */ sw $t6, 0x94($sp) +/* 0121C8 700115C8 8FA200BC */ lw $v0, 0xbc($sp) +/* 0121CC 700115CC 240F0015 */ li $t7, 21 +/* 0121D0 700115D0 36D90080 */ ori $t9, $s6, 0x80 +/* 0121D4 700115D4 8C58000C */ lw $t8, 0xc($v0) +/* 0121D8 700115D8 24420004 */ addiu $v0, $v0, 4 +/* 0121DC 700115DC 5300011E */ beql $t8, $zero, .L70011A58 +/* 0121E0 700115E0 8FBF0024 */ lw $ra, 0x24($sp) +/* 0121E4 700115E4 A7AF008C */ sh $t7, 0x8c($sp) +/* 0121E8 700115E8 A3B90094 */ sb $t9, 0x94($sp) +/* 0121EC 700115EC A3B40095 */ sb $s4, 0x95($sp) +/* 0121F0 700115F0 A3A00096 */ sb $zero, 0x96($sp) +/* 0121F4 700115F4 8C580008 */ lw $t8, 8($v0) +/* 0121F8 700115F8 8E4E0024 */ lw $t6, 0x24($s2) +/* 0121FC 700115FC 02A02025 */ move $a0, $s5 +/* 012200 70011600 27A5008C */ addiu $a1, $sp, 0x8c +/* 012204 70011604 01D80019 */ multu $t6, $t8 +/* 012208 70011608 00009812 */ mflo $s3 +/* 01220C 7001160C 02603025 */ move $a2, $s3 +/* 012210 70011610 0C004BBF */ jal alEvtqPostEvent +/* 012214 70011614 00000000 */ nop +/* 012218 70011618 1000010F */ b .L70011A58 +/* 01221C 7001161C 8FBF0024 */ lw $ra, 0x24($sp) +.L70011620: +/* 012220 70011620 02402025 */ move $a0, $s2 +.L70011624: +/* 012224 70011624 328500FF */ andi $a1, $s4, 0xff +/* 012228 70011628 0C00709F */ jal __lookupVoice +/* 01222C 7001162C 32C600FF */ andi $a2, $s6, 0xff +/* 012230 70011630 10400108 */ beqz $v0, .L70011A54 +/* 012234 70011634 00408025 */ move $s0, $v0 +/* 012238 70011638 904F0035 */ lbu $t7, 0x35($v0) +/* 01223C 7001163C 24160002 */ li $s6, 2 +/* 012240 70011640 24190004 */ li $t9, 4 +/* 012244 70011644 16CF0003 */ bne $s6, $t7, .L70011654 +/* 012248 70011648 02402025 */ move $a0, $s2 +/* 01224C 7001164C 10000101 */ b .L70011A54 +/* 012250 70011650 A0590035 */ sb $t9, 0x35($v0) +.L70011654: +/* 012254 70011654 8E0E0020 */ lw $t6, 0x20($s0) +/* 012258 70011658 241E0003 */ li $fp, 3 +/* 01225C 7001165C A21E0035 */ sb $fp, 0x35($s0) +/* 012260 70011660 8DD80000 */ lw $t8, ($t6) +/* 012264 70011664 26050004 */ addiu $a1, $s0, 4 +/* 012268 70011668 0C006FA7 */ jal __seqpReleaseVoice +/* 01226C 7001166C 8F060008 */ lw $a2, 8($t8) +/* 012270 70011670 100000F9 */ b .L70011A58 +/* 012274 70011674 8FBF0024 */ lw $ra, 0x24($sp) +.L70011678: +/* 012278 70011678 02402025 */ move $a0, $s2 +/* 01227C 7001167C 328500FF */ andi $a1, $s4, 0xff +/* 012280 70011680 0C00709F */ jal __lookupVoice +/* 012284 70011684 32C600FF */ andi $a2, $s6, 0xff +/* 012288 70011688 104000F2 */ beqz $v0, .L70011A54 +/* 01228C 7001168C 00408025 */ move $s0, $v0 +/* 012290 70011690 A0510033 */ sb $s1, 0x33($v0) +/* 012294 70011694 00402025 */ move $a0, $v0 +/* 012298 70011698 0C006F85 */ jal __vsVol +/* 01229C 7001169C 02402825 */ move $a1, $s2 +/* 0122A0 700116A0 00028C00 */ sll $s1, $v0, 0x10 +/* 0122A4 700116A4 00117C03 */ sra $t7, $s1, 0x10 +/* 0122A8 700116A8 01E08825 */ move $s1, $t7 +/* 0122AC 700116AC 02002025 */ move $a0, $s0 +/* 0122B0 700116B0 0C006F7C */ jal __vsDelta +/* 0122B4 700116B4 8E45001C */ lw $a1, 0x1c($s2) +/* 0122B8 700116B8 00113400 */ sll $a2, $s1, 0x10 +/* 0122BC 700116BC 0006CC03 */ sra $t9, $a2, 0x10 +/* 0122C0 700116C0 03203025 */ move $a2, $t9 +/* 0122C4 700116C4 8E440014 */ lw $a0, 0x14($s2) +/* 0122C8 700116C8 26050004 */ addiu $a1, $s0, 4 +/* 0122CC 700116CC 0C004CE8 */ jal alSynSetVol +/* 0122D0 700116D0 00403825 */ move $a3, $v0 +/* 0122D4 700116D4 100000E0 */ b .L70011A58 +/* 0122D8 700116D8 8FBF0024 */ lw $ra, 0x24($sp) +.L700116DC: +/* 0122DC 700116DC 8E500064 */ lw $s0, 0x64($s2) +/* 0122E0 700116E0 520000DD */ beql $s0, $zero, .L70011A58 +/* 0122E4 700116E4 8FBF0024 */ lw $ra, 0x24($sp) +/* 0122E8 700116E8 02C09825 */ move $s3, $s6 +/* 0122EC 700116EC 920E0031 */ lbu $t6, 0x31($s0) +.L700116F0: +/* 0122F0 700116F0 02002025 */ move $a0, $s0 +/* 0122F4 700116F4 02402825 */ move $a1, $s2 +/* 0122F8 700116F8 566E0011 */ bnel $s3, $t6, .L70011740 +/* 0122FC 700116FC 8E100000 */ lw $s0, ($s0) +/* 012300 70011700 0C006F85 */ jal __vsVol +/* 012304 70011704 A2140033 */ sb $s4, 0x33($s0) +/* 012308 70011708 00028C00 */ sll $s1, $v0, 0x10 +/* 01230C 7001170C 0011C403 */ sra $t8, $s1, 0x10 +/* 012310 70011710 03008825 */ move $s1, $t8 +/* 012314 70011714 02002025 */ move $a0, $s0 +/* 012318 70011718 0C006F7C */ jal __vsDelta +/* 01231C 7001171C 8E45001C */ lw $a1, 0x1c($s2) +/* 012320 70011720 00113400 */ sll $a2, $s1, 0x10 +/* 012324 70011724 00067C03 */ sra $t7, $a2, 0x10 +/* 012328 70011728 01E03025 */ move $a2, $t7 +/* 01232C 7001172C 8E440014 */ lw $a0, 0x14($s2) +/* 012330 70011730 26050004 */ addiu $a1, $s0, 4 +/* 012334 70011734 0C004CE8 */ jal alSynSetVol +/* 012338 70011738 00403825 */ move $a3, $v0 +/* 01233C 7001173C 8E100000 */ lw $s0, ($s0) +.L70011740: +/* 012340 70011740 5600FFEB */ bnezl $s0, .L700116F0 +/* 012344 70011744 920E0031 */ lbu $t6, 0x31($s0) +/* 012348 70011748 100000C3 */ b .L70011A58 +/* 01234C 7001174C 8FBF0024 */ lw $ra, 0x24($sp) +.L70011750: +/* 012350 70011750 24010007 */ li $at, 7 +/* 012354 70011754 12810023 */ beq $s4, $at, .L700117E4 +/* 012358 70011758 02801025 */ move $v0, $s4 +/* 01235C 7001175C 2401000A */ li $at, 10 +/* 012360 70011760 10410009 */ beq $v0, $at, .L70011788 +/* 012364 70011764 24010010 */ li $at, 16 +/* 012368 70011768 10410042 */ beq $v0, $at, .L70011874 +/* 01236C 7001176C 24010040 */ li $at, 64 +/* 012370 70011770 10410045 */ beq $v0, $at, .L70011888 +/* 012374 70011774 2401005B */ li $at, 91 +/* 012378 70011778 50410070 */ beql $v0, $at, .L7001193C +/* 01237C 7001177C 8E590060 */ lw $t9, 0x60($s2) +/* 012380 70011780 100000B5 */ b .L70011A58 +/* 012384 70011784 8FBF0024 */ lw $ra, 0x24($sp) +.L70011788: +/* 012388 70011788 8E590060 */ lw $t9, 0x60($s2) +/* 01238C 7001178C 00167100 */ sll $t6, $s6, 4 +/* 012390 70011790 032EC021 */ addu $t8, $t9, $t6 +/* 012394 70011794 A3110007 */ sb $s1, 7($t8) +/* 012398 70011798 8E500064 */ lw $s0, 0x64($s2) +/* 01239C 7001179C 520000AE */ beql $s0, $zero, .L70011A58 +/* 0123A0 700117A0 8FBF0024 */ lw $ra, 0x24($sp) +/* 0123A4 700117A4 02C09825 */ move $s3, $s6 +/* 0123A8 700117A8 920F0031 */ lbu $t7, 0x31($s0) +.L700117AC: +/* 0123AC 700117AC 02002025 */ move $a0, $s0 +/* 0123B0 700117B0 566F0008 */ bnel $s3, $t7, .L700117D4 +/* 0123B4 700117B4 8E100000 */ lw $s0, ($s0) +/* 0123B8 700117B8 0C00708D */ jal __vsPan +/* 0123BC 700117BC 02402825 */ move $a1, $s2 +/* 0123C0 700117C0 8E440014 */ lw $a0, 0x14($s2) +/* 0123C4 700117C4 26050004 */ addiu $a1, $s0, 4 +/* 0123C8 700117C8 0C004D34 */ jal alSynSetPan +/* 0123CC 700117CC 304600FF */ andi $a2, $v0, 0xff +/* 0123D0 700117D0 8E100000 */ lw $s0, ($s0) +.L700117D4: +/* 0123D4 700117D4 5600FFF5 */ bnezl $s0, .L700117AC +/* 0123D8 700117D8 920F0031 */ lbu $t7, 0x31($s0) +/* 0123DC 700117DC 1000009E */ b .L70011A58 +/* 0123E0 700117E0 8FBF0024 */ lw $ra, 0x24($sp) +.L700117E4: +/* 0123E4 700117E4 8E590060 */ lw $t9, 0x60($s2) +/* 0123E8 700117E8 00167100 */ sll $t6, $s6, 4 +/* 0123EC 700117EC 032EC021 */ addu $t8, $t9, $t6 +/* 0123F0 700117F0 A3110009 */ sb $s1, 9($t8) +/* 0123F4 700117F4 8E500064 */ lw $s0, 0x64($s2) +/* 0123F8 700117F8 52000097 */ beql $s0, $zero, .L70011A58 +/* 0123FC 700117FC 8FBF0024 */ lw $ra, 0x24($sp) +/* 012400 70011800 02C09825 */ move $s3, $s6 +/* 012404 70011804 24140003 */ li $s4, 3 +/* 012408 70011808 920F0031 */ lbu $t7, 0x31($s0) +.L7001180C: +/* 01240C 7001180C 566F0015 */ bnel $s3, $t7, .L70011864 +/* 012410 70011810 8E100000 */ lw $s0, ($s0) +/* 012414 70011814 92190034 */ lbu $t9, 0x34($s0) +/* 012418 70011818 02002025 */ move $a0, $s0 +/* 01241C 7001181C 52990011 */ beql $s4, $t9, .L70011864 +/* 012420 70011820 8E100000 */ lw $s0, ($s0) +/* 012424 70011824 0C006F85 */ jal __vsVol +/* 012428 70011828 02402825 */ move $a1, $s2 +/* 01242C 7001182C 00028C00 */ sll $s1, $v0, 0x10 +/* 012430 70011830 00117403 */ sra $t6, $s1, 0x10 +/* 012434 70011834 01C08825 */ move $s1, $t6 +/* 012438 70011838 02002025 */ move $a0, $s0 +/* 01243C 7001183C 0C006F7C */ jal __vsDelta +/* 012440 70011840 8E45001C */ lw $a1, 0x1c($s2) +/* 012444 70011844 00113400 */ sll $a2, $s1, 0x10 +/* 012448 70011848 0006C403 */ sra $t8, $a2, 0x10 +/* 01244C 7001184C 03003025 */ move $a2, $t8 +/* 012450 70011850 8E440014 */ lw $a0, 0x14($s2) +/* 012454 70011854 26050004 */ addiu $a1, $s0, 4 +/* 012458 70011858 0C004CE8 */ jal alSynSetVol +/* 01245C 7001185C 00403825 */ move $a3, $v0 +/* 012460 70011860 8E100000 */ lw $s0, ($s0) +.L70011864: +/* 012464 70011864 5600FFE9 */ bnezl $s0, .L7001180C +/* 012468 70011868 920F0031 */ lbu $t7, 0x31($s0) +/* 01246C 7001186C 1000007A */ b .L70011A58 +/* 012470 70011870 8FBF0024 */ lw $ra, 0x24($sp) +.L70011874: +/* 012474 70011874 8E4F0060 */ lw $t7, 0x60($s2) +/* 012478 70011878 0016C900 */ sll $t9, $s6, 4 +/* 01247C 7001187C 01F97021 */ addu $t6, $t7, $t9 +/* 012480 70011880 10000074 */ b .L70011A54 +/* 012484 70011884 A1D10008 */ sb $s1, 8($t6) +.L70011888: +/* 012488 70011888 8E580060 */ lw $t8, 0x60($s2) +/* 01248C 7001188C 00167900 */ sll $t7, $s6, 4 +/* 012490 70011890 030FC821 */ addu $t9, $t8, $t7 +/* 012494 70011894 A331000B */ sb $s1, 0xb($t9) +/* 012498 70011898 8E500064 */ lw $s0, 0x64($s2) +/* 01249C 7001189C 5200006E */ beql $s0, $zero, .L70011A58 +/* 0124A0 700118A0 8FBF0024 */ lw $ra, 0x24($sp) +/* 0124A4 700118A4 02C09825 */ move $s3, $s6 +/* 0124A8 700118A8 24160002 */ li $s6, 2 +/* 0124AC 700118AC 241E0003 */ li $fp, 3 +/* 0124B0 700118B0 24170004 */ li $s7, 4 +/* 0124B4 700118B4 24150002 */ li $s5, 2 +/* 0124B8 700118B8 24140003 */ li $s4, 3 +/* 0124BC 700118BC 920E0031 */ lbu $t6, 0x31($s0) +.L700118C0: +/* 0124C0 700118C0 566E0019 */ bnel $s3, $t6, .L70011928 +/* 0124C4 700118C4 8E100000 */ lw $s0, ($s0) +/* 0124C8 700118C8 92020035 */ lbu $v0, 0x35($s0) +/* 0124CC 700118CC 2A210040 */ slti $at, $s1, 0x40 +/* 0124D0 700118D0 52820015 */ beql $s4, $v0, .L70011928 +/* 0124D4 700118D4 8E100000 */ lw $s0, ($s0) +/* 0124D8 700118D8 14200005 */ bnez $at, .L700118F0 +/* 0124DC 700118DC 00000000 */ nop +/* 0124E0 700118E0 54400011 */ bnezl $v0, .L70011928 +/* 0124E4 700118E4 8E100000 */ lw $s0, ($s0) +/* 0124E8 700118E8 1000000E */ b .L70011924 +/* 0124EC 700118EC A2150035 */ sb $s5, 0x35($s0) +.L700118F0: +/* 0124F0 700118F0 16C20003 */ bne $s6, $v0, .L70011900 +/* 0124F4 700118F4 00000000 */ nop +/* 0124F8 700118F8 1000000A */ b .L70011924 +/* 0124FC 700118FC A2000035 */ sb $zero, 0x35($s0) +.L70011900: +/* 012500 70011900 56E20009 */ bnel $s7, $v0, .L70011928 +/* 012504 70011904 8E100000 */ lw $s0, ($s0) +/* 012508 70011908 8E180020 */ lw $t8, 0x20($s0) +/* 01250C 7001190C A21E0035 */ sb $fp, 0x35($s0) +/* 012510 70011910 02402025 */ move $a0, $s2 +/* 012514 70011914 8F0F0000 */ lw $t7, ($t8) +/* 012518 70011918 26050004 */ addiu $a1, $s0, 4 +/* 01251C 7001191C 0C006FA7 */ jal __seqpReleaseVoice +/* 012520 70011920 8DE60008 */ lw $a2, 8($t7) +.L70011924: +/* 012524 70011924 8E100000 */ lw $s0, ($s0) +.L70011928: +/* 012528 70011928 5600FFE5 */ bnezl $s0, .L700118C0 +/* 01252C 7001192C 920E0031 */ lbu $t6, 0x31($s0) +/* 012530 70011930 10000049 */ b .L70011A58 +/* 012534 70011934 8FBF0024 */ lw $ra, 0x24($sp) +/* 012538 70011938 8E590060 */ lw $t9, 0x60($s2) +.L7001193C: +/* 01253C 7001193C 00167100 */ sll $t6, $s6, 4 +/* 012540 70011940 032EC021 */ addu $t8, $t9, $t6 +/* 012544 70011944 A311000A */ sb $s1, 0xa($t8) +/* 012548 70011948 8E500064 */ lw $s0, 0x64($s2) +/* 01254C 7001194C 52000042 */ beql $s0, $zero, .L70011A58 +/* 012550 70011950 8FBF0024 */ lw $ra, 0x24($sp) +/* 012554 70011954 02C09825 */ move $s3, $s6 +/* 012558 70011958 920F0031 */ lbu $t7, 0x31($s0) +.L7001195C: +/* 01255C 7001195C 26050004 */ addiu $a1, $s0, 4 +/* 012560 70011960 322600FF */ andi $a2, $s1, 0xff +/* 012564 70011964 566F0004 */ bnel $s3, $t7, .L70011978 +/* 012568 70011968 8E100000 */ lw $s0, ($s0) +/* 01256C 7001196C 0C004D7C */ jal alSynSetFXMix +/* 012570 70011970 8E440014 */ lw $a0, 0x14($s2) +/* 012574 70011974 8E100000 */ lw $s0, ($s0) +.L70011978: +/* 012578 70011978 5600FFF8 */ bnezl $s0, .L7001195C +/* 01257C 7001197C 920F0031 */ lbu $t7, 0x31($s0) +/* 012580 70011980 10000035 */ b .L70011A58 +/* 012584 70011984 8FBF0024 */ lw $ra, 0x24($sp) +.L70011988: +/* 012588 70011988 8E420020 */ lw $v0, 0x20($s2) +/* 01258C 7001198C 00147080 */ sll $t6, $s4, 2 +/* 012590 70011990 02402025 */ move $a0, $s2 +/* 012594 70011994 84590000 */ lh $t9, ($v0) +/* 012598 70011998 02C03025 */ move $a2, $s6 +/* 01259C 7001199C 004EC021 */ addu $t8, $v0, $t6 +/* 0125A0 700119A0 0299082A */ slt $at, $s4, $t9 +/* 0125A4 700119A4 5020002C */ beql $at, $zero, .L70011A58 +/* 0125A8 700119A8 8FBF0024 */ lw $ra, 0x24($sp) +/* 0125AC 700119AC 0C006F18 */ jal __setInstChanState +/* 0125B0 700119B0 8F05000C */ lw $a1, 0xc($t8) +/* 0125B4 700119B4 10000028 */ b .L70011A58 +/* 0125B8 700119B8 8FBF0024 */ lw $ra, 0x24($sp) +.L700119BC: +/* 0125BC 700119BC 8E4F0060 */ lw $t7, 0x60($s2) +/* 0125C0 700119C0 0016F100 */ sll $fp, $s6, 4 +/* 0125C4 700119C4 0011C1C0 */ sll $t8, $s1, 7 +/* 0125C8 700119C8 01FEC821 */ addu $t9, $t7, $fp +/* 0125CC 700119CC 872E0004 */ lh $t6, 4($t9) +/* 0125D0 700119D0 03147821 */ addu $t7, $t8, $s4 +/* 0125D4 700119D4 25F9E000 */ addiu $t9, $t7, -0x2000 +/* 0125D8 700119D8 01D90019 */ multu $t6, $t9 +/* 0125DC 700119DC 00002012 */ mflo $a0 +/* 0125E0 700119E0 04810003 */ bgez $a0, .L700119F0 +/* 0125E4 700119E4 0004C343 */ sra $t8, $a0, 0xd +/* 0125E8 700119E8 24811FFF */ addiu $at, $a0, 0x1fff +/* 0125EC 700119EC 0001C343 */ sra $t8, $at, 0xd +.L700119F0: +/* 0125F0 700119F0 0C004DF0 */ jal alCents2Ratio +/* 0125F4 700119F4 03002025 */ move $a0, $t8 +/* 0125F8 700119F8 8E4F0060 */ lw $t7, 0x60($s2) +/* 0125FC 700119FC 46000506 */ mov.s $f20, $f0 +/* 012600 70011A00 01FE7021 */ addu $t6, $t7, $fp +/* 012604 70011A04 E5C0000C */ swc1 $f0, 0xc($t6) +/* 012608 70011A08 8E500064 */ lw $s0, 0x64($s2) +/* 01260C 70011A0C 52000012 */ beql $s0, $zero, .L70011A58 +/* 012610 70011A10 8FBF0024 */ lw $ra, 0x24($sp) +/* 012614 70011A14 02C09825 */ move $s3, $s6 +/* 012618 70011A18 92190031 */ lbu $t9, 0x31($s0) +.L70011A1C: +/* 01261C 70011A1C 5679000B */ bnel $s3, $t9, .L70011A4C +/* 012620 70011A20 8E100000 */ lw $s0, ($s0) +/* 012624 70011A24 C6060028 */ lwc1 $f6, 0x28($s0) +/* 012628 70011A28 C60A002C */ lwc1 $f10, 0x2c($s0) +/* 01262C 70011A2C 8E440014 */ lw $a0, 0x14($s2) +/* 012630 70011A30 46143202 */ mul.s $f8, $f6, $f20 +/* 012634 70011A34 26050004 */ addiu $a1, $s0, 4 +/* 012638 70011A38 460A4102 */ mul.s $f4, $f8, $f10 +/* 01263C 70011A3C 44062000 */ mfc1 $a2, $f4 +/* 012640 70011A40 0C004D58 */ jal alSynSetPitch +/* 012644 70011A44 00000000 */ nop +/* 012648 70011A48 8E100000 */ lw $s0, ($s0) +.L70011A4C: +/* 01264C 70011A4C 5600FFF3 */ bnezl $s0, .L70011A1C +/* 012650 70011A50 92190031 */ lbu $t9, 0x31($s0) +.L70011A54: +/* 012654 70011A54 8FBF0024 */ lw $ra, 0x24($sp) +.L70011A58: +/* 012658 70011A58 27BD00B8 */ addiu $sp, $sp, 0xb8 +/* 01265C 70011A5C 03E00008 */ jr $ra +/* 012660 70011A60 00000000 */ nop + +/* 012664 70011A64 03E00008 */ jr $ra +/* 012668 70011A68 00000000 */ nop + +glabel ultra_70011A6C +/* 01266C 70011A6C 27BDFF60 */ addiu $sp, $sp, -0xa0 +/* 012670 70011A70 AFB50034 */ sw $s5, 0x34($sp) +/* 012674 70011A74 AFB20028 */ sw $s2, 0x28($sp) +/* 012678 70011A78 248E0038 */ addiu $t6, $a0, 0x38 +/* 01267C 70011A7C 00809025 */ move $s2, $a0 +/* 012680 70011A80 AFBF0044 */ sw $ra, 0x44($sp) +/* 012684 70011A84 AFBE0040 */ sw $fp, 0x40($sp) +/* 012688 70011A88 AFB7003C */ sw $s7, 0x3c($sp) +/* 01268C 70011A8C AFB60038 */ sw $s6, 0x38($sp) +/* 012690 70011A90 AFB40030 */ sw $s4, 0x30($sp) +/* 012694 70011A94 AFB3002C */ sw $s3, 0x2c($sp) +/* 012698 70011A98 AFB10024 */ sw $s1, 0x24($sp) +/* 01269C 70011A9C AFB00020 */ sw $s0, 0x20($sp) +/* 0126A0 70011AA0 F7B40018 */ sdc1 $f20, 0x18($sp) +/* 0126A4 70011AA4 AFAE0050 */ sw $t6, 0x50($sp) +/* 0126A8 70011AA8 24950048 */ addiu $s5, $a0, 0x48 +.L70011AAC: +/* 0126AC 70011AAC 964F0038 */ lhu $t7, 0x38($s2) +/* 0126B0 70011AB0 2DE10018 */ sltiu $at, $t7, 0x18 +/* 0126B4 70011AB4 1020015D */ beqz $at, .L7001202C +/* 0126B8 70011AB8 000F7880 */ sll $t7, $t7, 2 +/* 0126BC 70011ABC 3C018003 */ lui $at, %hi(audio_related_jump_table_1) # 0x8003 +/* 0126C0 70011AC0 002F0821 */ addu $at, $at, $t7 +/* 0126C4 70011AC4 8C2F9614 */ lw $t7, %lo(audio_related_jump_table_1)($at) # -0x69ec +/* 0126C8 70011AC8 01E00008 */ jr $t7 +/* 0126CC 70011ACC 00000000 */ nop +.L70011AD0: +/* 0126D0 70011AD0 8E440018 */ lw $a0, 0x18($s2) +/* 0126D4 70011AD4 50800156 */ beql $a0, $zero, .L70012030 +/* 0126D8 70011AD8 02A02025 */ move $a0, $s5 +/* 0126DC 70011ADC 0C004929 */ jal alCSeqNextEvent +/* 0126E0 70011AE0 27A50058 */ addiu $a1, $sp, 0x58 +/* 0126E4 70011AE4 87B80058 */ lh $t8, 0x58($sp) +/* 0126E8 70011AE8 2719FFFF */ addiu $t9, $t8, -1 +/* 0126EC 70011AEC 2F210014 */ sltiu $at, $t9, 0x14 +/* 0126F0 70011AF0 1020014E */ beqz $at, .L7001202C +/* 0126F4 70011AF4 0019C880 */ sll $t9, $t9, 2 +/* 0126F8 70011AF8 3C018003 */ lui $at, %hi(audio_related_jump_table_2) # 0x8003 +/* 0126FC 70011AFC 00390821 */ addu $at, $at, $t9 +/* 012700 70011B00 8C399674 */ lw $t9, %lo(audio_related_jump_table_2)($at) # -0x698c +/* 012704 70011B04 03200008 */ jr $t9 +/* 012708 70011B08 00000000 */ nop +.L70011B0C: +/* 01270C 70011B0C 27A80058 */ addiu $t0, $sp, 0x58 +/* 012710 70011B10 AFB200A0 */ sw $s2, 0xa0($sp) +/* 012714 70011B14 0C00448F */ jal __CSPHandleMIDIMsg +/* 012718 70011B18 AFB5004C */ sw $s5, 0x4c($sp) +/* 01271C 70011B1C 8FB200A0 */ lw $s2, 0xa0($sp) +/* 012720 70011B20 8FB5004C */ lw $s5, 0x4c($sp) +/* 012724 70011B24 0C0043F0 */ jal __CSPPostNextSeqEvent +/* 012728 70011B28 02402025 */ move $a0, $s2 +/* 01272C 70011B2C 10000140 */ b .L70012030 +/* 012730 70011B30 02A02025 */ move $a0, $s5 +.L70011B34: +/* 012734 70011B34 0240B825 */ move $s7, $s2 +/* 012738 70011B38 27A50058 */ addiu $a1, $sp, 0x58 +/* 01273C 70011B3C AFB200A0 */ sw $s2, 0xa0($sp) +/* 012740 70011B40 0C00441B */ jal ultra_7001106C +/* 012744 70011B44 AFB5004C */ sw $s5, 0x4c($sp) +/* 012748 70011B48 8FB200A0 */ lw $s2, 0xa0($sp) +/* 01274C 70011B4C 8FB5004C */ lw $s5, 0x4c($sp) +/* 012750 70011B50 0C0043F0 */ jal __CSPPostNextSeqEvent +/* 012754 70011B54 02402025 */ move $a0, $s2 +/* 012758 70011B58 10000135 */ b .L70012030 +/* 01275C 70011B5C 02A02025 */ move $a0, $s5 +.L70011B60: +/* 012760 70011B60 240E0002 */ li $t6, 2 +/* 012764 70011B64 AE4E002C */ sw $t6, 0x2c($s2) +/* 012768 70011B68 240F0010 */ li $t7, 16 +/* 01276C 70011B6C 3C067FFF */ lui $a2, (0x7FFFFFFF >> 16) # lui $a2, 0x7fff +/* 012770 70011B70 A7AF0058 */ sh $t7, 0x58($sp) +/* 012774 70011B74 34C6FFFF */ ori $a2, (0x7FFFFFFF & 0xFFFF) # ori $a2, $a2, 0xffff +/* 012778 70011B78 02A02025 */ move $a0, $s5 +/* 01277C 70011B7C 0C004BBF */ jal alEvtqPostEvent +/* 012780 70011B80 27A50058 */ addiu $a1, $sp, 0x58 +/* 012784 70011B84 1000012A */ b .L70012030 +/* 012788 70011B88 02A02025 */ move $a0, $s5 +.L70011B8C: +/* 01278C 70011B8C 0C0043F0 */ jal __CSPPostNextSeqEvent +/* 012790 70011B90 02402025 */ move $a0, $s2 +/* 012794 70011B94 10000126 */ b .L70012030 +/* 012798 70011B98 02A02025 */ move $a0, $s5 +.L70011B9C: +/* 01279C 70011B9C 24180009 */ li $t8, 9 +/* 0127A0 70011BA0 A7B8008C */ sh $t8, 0x8c($sp) +/* 0127A4 70011BA4 8E46005C */ lw $a2, 0x5c($s2) +/* 0127A8 70011BA8 02A02025 */ move $a0, $s5 +/* 0127AC 70011BAC 0C004BBF */ jal alEvtqPostEvent +/* 0127B0 70011BB0 27A5008C */ addiu $a1, $sp, 0x8c +/* 0127B4 70011BB4 1000011E */ b .L70012030 +/* 0127B8 70011BB8 02A02025 */ move $a0, $s5 +.L70011BBC: +/* 0127BC 70011BBC 8E50003C */ lw $s0, 0x3c($s2) +/* 0127C0 70011BC0 8E440014 */ lw $a0, 0x14($s2) +/* 0127C4 70011BC4 0C004DA4 */ jal alSynStopVoice +/* 0127C8 70011BC8 02002825 */ move $a1, $s0 +/* 0127CC 70011BCC 8E440014 */ lw $a0, 0x14($s2) +/* 0127D0 70011BD0 0C004DC4 */ jal alSynFreeVoice +/* 0127D4 70011BD4 02002825 */ move $a1, $s0 +/* 0127D8 70011BD8 8E110010 */ lw $s1, 0x10($s0) +/* 0127DC 70011BDC 02402025 */ move $a0, $s2 +/* 0127E0 70011BE0 92390037 */ lbu $t9, 0x37($s1) +/* 0127E4 70011BE4 53200004 */ beql $t9, $zero, .L70011BF8 +/* 0127E8 70011BE8 02402025 */ move $a0, $s2 +/* 0127EC 70011BEC 0C0074A8 */ jal __seqpStopOsc +/* 0127F0 70011BF0 02202825 */ move $a1, $s1 +/* 0127F4 70011BF4 02402025 */ move $a0, $s2 +.L70011BF8: +/* 0127F8 70011BF8 0C00701C */ jal __unmapVoice +/* 0127FC 70011BFC 02002825 */ move $a1, $s0 +/* 012800 70011C00 1000010B */ b .L70012030 +/* 012804 70011C04 02A02025 */ move $a0, $s5 +.L70011C08: +/* 012808 70011C08 8E50003C */ lw $s0, 0x3c($s2) +/* 01280C 70011C0C 240F0001 */ li $t7, 1 +/* 012810 70011C10 8E110010 */ lw $s1, 0x10($s0) +/* 012814 70011C14 922E0034 */ lbu $t6, 0x34($s1) +/* 012818 70011C18 55C00003 */ bnezl $t6, .L70011C28 +/* 01281C 70011C1C 8E530040 */ lw $s3, 0x40($s2) +/* 012820 70011C20 A22F0034 */ sb $t7, 0x34($s1) +/* 012824 70011C24 8E530040 */ lw $s3, 0x40($s2) +.L70011C28: +/* 012828 70011C28 8E58001C */ lw $t8, 0x1c($s2) +/* 01282C 70011C2C 02202025 */ move $a0, $s1 +/* 012830 70011C30 02402825 */ move $a1, $s2 +/* 012834 70011C34 0313C821 */ addu $t9, $t8, $s3 +/* 012838 70011C38 AE390024 */ sw $t9, 0x24($s1) +/* 01283C 70011C3C 924E0044 */ lbu $t6, 0x44($s2) +/* 012840 70011C40 0C006F85 */ jal __vsVol +/* 012844 70011C44 A22E0030 */ sb $t6, 0x30($s1) +/* 012848 70011C48 00023400 */ sll $a2, $v0, 0x10 +/* 01284C 70011C4C 00067C03 */ sra $t7, $a2, 0x10 +/* 012850 70011C50 01E03025 */ move $a2, $t7 +/* 012854 70011C54 8E440014 */ lw $a0, 0x14($s2) +/* 012858 70011C58 02002825 */ move $a1, $s0 +/* 01285C 70011C5C 0C004CE8 */ jal alSynSetVol +/* 012860 70011C60 02603825 */ move $a3, $s3 +/* 012864 70011C64 100000F2 */ b .L70012030 +/* 012868 70011C68 02A02025 */ move $a0, $s5 +.L70011C6C: +/* 01286C 70011C6C 8E590074 */ lw $t9, 0x74($s2) +/* 012870 70011C70 8E540040 */ lw $s4, 0x40($s2) +/* 012874 70011C74 8E51003C */ lw $s1, 0x3c($s2) +/* 012878 70011C78 27A50078 */ addiu $a1, $sp, 0x78 +/* 01287C 70011C7C 0320F809 */ jalr $t9 +/* 012880 70011C80 02802025 */ move $a0, $s4 +/* 012884 70011C84 4458F800 */ cfc1 $t8, $31 +/* 012888 70011C88 240E0001 */ li $t6, 1 +/* 01288C 70011C8C 44CEF800 */ ctc1 $t6, $31 +/* 012890 70011C90 C7A40078 */ lwc1 $f4, 0x78($sp) +/* 012894 70011C94 00409825 */ move $s3, $v0 +/* 012898 70011C98 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 +/* 01289C 70011C9C 460021A4 */ cvt.w.s $f6, $f4 +/* 0128A0 70011CA0 02202025 */ move $a0, $s1 +/* 0128A4 70011CA4 02402825 */ move $a1, $s2 +/* 0128A8 70011CA8 444EF800 */ cfc1 $t6, $31 +/* 0128AC 70011CAC 00000000 */ nop +/* 0128B0 70011CB0 31CE0078 */ andi $t6, $t6, 0x78 +/* 0128B4 70011CB4 51C00013 */ beql $t6, $zero, .L70011D04 +/* 0128B8 70011CB8 440E3000 */ mfc1 $t6, $f6 +/* 0128BC 70011CBC 44813000 */ mtc1 $at, $f6 +/* 0128C0 70011CC0 240E0001 */ li $t6, 1 +/* 0128C4 70011CC4 46062181 */ sub.s $f6, $f4, $f6 +/* 0128C8 70011CC8 44CEF800 */ ctc1 $t6, $31 +/* 0128CC 70011CCC 00000000 */ nop +/* 0128D0 70011CD0 460031A4 */ cvt.w.s $f6, $f6 +/* 0128D4 70011CD4 444EF800 */ cfc1 $t6, $31 +/* 0128D8 70011CD8 00000000 */ nop +/* 0128DC 70011CDC 31CE0078 */ andi $t6, $t6, 0x78 +/* 0128E0 70011CE0 15C00005 */ bnez $t6, .L70011CF8 +/* 0128E4 70011CE4 00000000 */ nop +/* 0128E8 70011CE8 440E3000 */ mfc1 $t6, $f6 +/* 0128EC 70011CEC 3C018000 */ lui $at, 0x8000 +/* 0128F0 70011CF0 10000007 */ b .L70011D10 +/* 0128F4 70011CF4 01C17025 */ or $t6, $t6, $at +.L70011CF8: +/* 0128F8 70011CF8 10000005 */ b .L70011D10 +/* 0128FC 70011CFC 240EFFFF */ li $t6, -1 +/* 012900 70011D00 440E3000 */ mfc1 $t6, $f6 +.L70011D04: +/* 012904 70011D04 00000000 */ nop +/* 012908 70011D08 05C0FFFB */ bltz $t6, .L70011CF8 +/* 01290C 70011D0C 00000000 */ nop +.L70011D10: +/* 012910 70011D10 44D8F800 */ ctc1 $t8, $31 +/* 012914 70011D14 0C006F85 */ jal __vsVol +/* 012918 70011D18 A22E0036 */ sb $t6, 0x36($s1) +/* 01291C 70011D1C 00028400 */ sll $s0, $v0, 0x10 +/* 012920 70011D20 00107C03 */ sra $t7, $s0, 0x10 +/* 012924 70011D24 01E08025 */ move $s0, $t7 +/* 012928 70011D28 02202025 */ move $a0, $s1 +/* 01292C 70011D2C 0C006F7C */ jal __vsDelta +/* 012930 70011D30 8E45001C */ lw $a1, 0x1c($s2) +/* 012934 70011D34 00103400 */ sll $a2, $s0, 0x10 +/* 012938 70011D38 0006CC03 */ sra $t9, $a2, 0x10 +/* 01293C 70011D3C 03203025 */ move $a2, $t9 +/* 012940 70011D40 8E440014 */ lw $a0, 0x14($s2) +/* 012944 70011D44 26250004 */ addiu $a1, $s1, 4 +/* 012948 70011D48 0C004CE8 */ jal alSynSetVol +/* 01294C 70011D4C 00403825 */ move $a3, $v0 +/* 012950 70011D50 24180016 */ li $t8, 22 +/* 012954 70011D54 A7B8008C */ sh $t8, 0x8c($sp) +/* 012958 70011D58 AFB10090 */ sw $s1, 0x90($sp) +/* 01295C 70011D5C AFB40094 */ sw $s4, 0x94($sp) +/* 012960 70011D60 02A02025 */ move $a0, $s5 +/* 012964 70011D64 27A5008C */ addiu $a1, $sp, 0x8c +/* 012968 70011D68 0C004BBF */ jal alEvtqPostEvent +/* 01296C 70011D6C 02603025 */ move $a2, $s3 +/* 012970 70011D70 100000AF */ b .L70012030 +/* 012974 70011D74 02A02025 */ move $a0, $s5 +.L70011D78: +/* 012978 70011D78 8E590074 */ lw $t9, 0x74($s2) +/* 01297C 70011D7C 8E540040 */ lw $s4, 0x40($s2) +/* 012980 70011D80 8E51003C */ lw $s1, 0x3c($s2) +/* 012984 70011D84 92500044 */ lbu $s0, 0x44($s2) +/* 012988 70011D88 27A50078 */ addiu $a1, $sp, 0x78 +/* 01298C 70011D8C 0320F809 */ jalr $t9 +/* 012990 70011D90 02802025 */ move $a0, $s4 +/* 012994 70011D94 C7A80078 */ lwc1 $f8, 0x78($sp) +/* 012998 70011D98 C6240028 */ lwc1 $f4, 0x28($s1) +/* 01299C 70011D9C 00107900 */ sll $t7, $s0, 4 +/* 0129A0 70011DA0 E628002C */ swc1 $f8, 0x2c($s1) +/* 0129A4 70011DA4 C626002C */ lwc1 $f6, 0x2c($s1) +/* 0129A8 70011DA8 8E4E0060 */ lw $t6, 0x60($s2) +/* 0129AC 70011DAC 00409825 */ move $s3, $v0 +/* 0129B0 70011DB0 46062202 */ mul.s $f8, $f4, $f6 +/* 0129B4 70011DB4 01CFC021 */ addu $t8, $t6, $t7 +/* 0129B8 70011DB8 C70A000C */ lwc1 $f10, 0xc($t8) +/* 0129BC 70011DBC 8E440014 */ lw $a0, 0x14($s2) +/* 0129C0 70011DC0 26250004 */ addiu $a1, $s1, 4 +/* 0129C4 70011DC4 46085102 */ mul.s $f4, $f10, $f8 +/* 0129C8 70011DC8 44062000 */ mfc1 $a2, $f4 +/* 0129CC 70011DCC 0C004D58 */ jal alSynSetPitch +/* 0129D0 70011DD0 00000000 */ nop +/* 0129D4 70011DD4 24190017 */ li $t9, 23 +/* 0129D8 70011DD8 A7B9008C */ sh $t9, 0x8c($sp) +/* 0129DC 70011DDC AFB10090 */ sw $s1, 0x90($sp) +/* 0129E0 70011DE0 AFB40094 */ sw $s4, 0x94($sp) +/* 0129E4 70011DE4 A3B00098 */ sb $s0, 0x98($sp) +/* 0129E8 70011DE8 02A02025 */ move $a0, $s5 +/* 0129EC 70011DEC 27A5008C */ addiu $a1, $sp, 0x8c +/* 0129F0 70011DF0 0C004BBF */ jal alEvtqPostEvent +/* 0129F4 70011DF4 02603025 */ move $a2, $s3 +/* 0129F8 70011DF8 1000008D */ b .L70012030 +/* 0129FC 70011DFC 02A02025 */ move $a0, $s5 +.L70011E00: +/* 012A00 70011E00 8FA80050 */ lw $t0, 0x50($sp) +/* 012A04 70011E04 AFB200A0 */ sw $s2, 0xa0($sp) +/* 012A08 70011E08 0C00448F */ jal __CSPHandleMIDIMsg +/* 012A0C 70011E0C AFB5004C */ sw $s5, 0x4c($sp) +/* 012A10 70011E10 8FB200A0 */ lw $s2, 0xa0($sp) +/* 012A14 70011E14 10000085 */ b .L7001202C +/* 012A18 70011E18 8FB5004C */ lw $s5, 0x4c($sp) +.L70011E1C: +/* 012A1C 70011E1C 0240B825 */ move $s7, $s2 +/* 012A20 70011E20 8FA50050 */ lw $a1, 0x50($sp) +/* 012A24 70011E24 AFB200A0 */ sw $s2, 0xa0($sp) +/* 012A28 70011E28 0C00441B */ jal ultra_7001106C +/* 012A2C 70011E2C AFB5004C */ sw $s5, 0x4c($sp) +/* 012A30 70011E30 8FB200A0 */ lw $s2, 0xa0($sp) +/* 012A34 70011E34 1000007D */ b .L7001202C +/* 012A38 70011E38 8FB5004C */ lw $s5, 0x4c($sp) +.L70011E3C: +/* 012A3C 70011E3C 8E510064 */ lw $s1, 0x64($s2) +/* 012A40 70011E40 864E003C */ lh $t6, 0x3c($s2) +/* 012A44 70011E44 12200079 */ beqz $s1, .L7001202C +/* 012A48 70011E48 A64E0032 */ sh $t6, 0x32($s2) +/* 012A4C 70011E4C 02202025 */ move $a0, $s1 +.L70011E50: +/* 012A50 70011E50 0C006F85 */ jal __vsVol +/* 012A54 70011E54 02402825 */ move $a1, $s2 +/* 012A58 70011E58 00028400 */ sll $s0, $v0, 0x10 +/* 012A5C 70011E5C 00107C03 */ sra $t7, $s0, 0x10 +/* 012A60 70011E60 01E08025 */ move $s0, $t7 +/* 012A64 70011E64 02202025 */ move $a0, $s1 +/* 012A68 70011E68 0C006F7C */ jal __vsDelta +/* 012A6C 70011E6C 8E45001C */ lw $a1, 0x1c($s2) +/* 012A70 70011E70 00103400 */ sll $a2, $s0, 0x10 +/* 012A74 70011E74 0006C403 */ sra $t8, $a2, 0x10 +/* 012A78 70011E78 03003025 */ move $a2, $t8 +/* 012A7C 70011E7C 8E440014 */ lw $a0, 0x14($s2) +/* 012A80 70011E80 26250004 */ addiu $a1, $s1, 4 +/* 012A84 70011E84 0C004CE8 */ jal alSynSetVol +/* 012A88 70011E88 00403825 */ move $a3, $v0 +/* 012A8C 70011E8C 8E310000 */ lw $s1, ($s1) +/* 012A90 70011E90 5620FFEF */ bnezl $s1, .L70011E50 +/* 012A94 70011E94 02202025 */ move $a0, $s1 +/* 012A98 70011E98 10000065 */ b .L70012030 +/* 012A9C 70011E9C 02A02025 */ move $a0, $s5 +.L70011EA0: +/* 012AA0 70011EA0 8E59002C */ lw $t9, 0x2c($s2) +/* 012AA4 70011EA4 24010001 */ li $at, 1 +/* 012AA8 70011EA8 240E0001 */ li $t6, 1 +/* 012AAC 70011EAC 1321005F */ beq $t9, $at, .L7001202C +/* 012AB0 70011EB0 02402025 */ move $a0, $s2 +/* 012AB4 70011EB4 0C0043F0 */ jal __CSPPostNextSeqEvent +/* 012AB8 70011EB8 AE4E002C */ sw $t6, 0x2c($s2) +/* 012ABC 70011EBC 1000005C */ b .L70012030 +/* 012AC0 70011EC0 02A02025 */ move $a0, $s5 +.L70011EC4: +/* 012AC4 70011EC4 8E4F002C */ lw $t7, 0x2c($s2) +/* 012AC8 70011EC8 24010002 */ li $at, 2 +/* 012ACC 70011ECC 55E10058 */ bnel $t7, $at, .L70012030 +/* 012AD0 70011ED0 02A02025 */ move $a0, $s5 +/* 012AD4 70011ED4 8E510064 */ lw $s1, 0x64($s2) +/* 012AD8 70011ED8 12200013 */ beqz $s1, .L70011F28 +/* 012ADC 70011EDC 26300004 */ addiu $s0, $s1, 4 +.L70011EE0: +/* 012AE0 70011EE0 02002825 */ move $a1, $s0 +/* 012AE4 70011EE4 0C004DA4 */ jal alSynStopVoice +/* 012AE8 70011EE8 8E440014 */ lw $a0, 0x14($s2) +/* 012AEC 70011EEC 8E440014 */ lw $a0, 0x14($s2) +/* 012AF0 70011EF0 0C004DC4 */ jal alSynFreeVoice +/* 012AF4 70011EF4 02002825 */ move $a1, $s0 +/* 012AF8 70011EF8 92380037 */ lbu $t8, 0x37($s1) +/* 012AFC 70011EFC 02402025 */ move $a0, $s2 +/* 012B00 70011F00 53000004 */ beql $t8, $zero, .L70011F14 +/* 012B04 70011F04 02402025 */ move $a0, $s2 +/* 012B08 70011F08 0C0074A8 */ jal __seqpStopOsc +/* 012B0C 70011F0C 02202825 */ move $a1, $s1 +/* 012B10 70011F10 02402025 */ move $a0, $s2 +.L70011F14: +/* 012B14 70011F14 0C00701C */ jal __unmapVoice +/* 012B18 70011F18 02002825 */ move $a1, $s0 +/* 012B1C 70011F1C 8E510064 */ lw $s1, 0x64($s2) +/* 012B20 70011F20 5620FFEF */ bnezl $s1, .L70011EE0 +/* 012B24 70011F24 26300004 */ addiu $s0, $s1, 4 +.L70011F28: +/* 012B28 70011F28 10000040 */ b .L7001202C +/* 012B2C 70011F2C AE40002C */ sw $zero, 0x2c($s2) +.L70011F30: +/* 012B30 70011F30 8E59002C */ lw $t9, 0x2c($s2) +/* 012B34 70011F34 24010001 */ li $at, 1 +/* 012B38 70011F38 02A02025 */ move $a0, $s5 +/* 012B3C 70011F3C 5721003C */ bnel $t9, $at, .L70012030 +/* 012B40 70011F40 02A02025 */ move $a0, $s5 +/* 012B44 70011F44 0C004B78 */ jal alEvtqFlushType +/* 012B48 70011F48 00002825 */ move $a1, $zero +/* 012B4C 70011F4C 02A02025 */ move $a0, $s5 +/* 012B50 70011F50 0C004B78 */ jal alEvtqFlushType +/* 012B54 70011F54 24050015 */ li $a1, 21 +/* 012B58 70011F58 02A02025 */ move $a0, $s5 +/* 012B5C 70011F5C 0C004B78 */ jal alEvtqFlushType +/* 012B60 70011F60 24050002 */ li $a1, 2 +/* 012B64 70011F64 8E510064 */ lw $s1, 0x64($s2) +/* 012B68 70011F68 1220000D */ beqz $s1, .L70011FA0 +/* 012B6C 70011F6C 26300004 */ addiu $s0, $s1, 4 +.L70011F70: +/* 012B70 70011F70 02002825 */ move $a1, $s0 +/* 012B74 70011F74 02402025 */ move $a0, $s2 +/* 012B78 70011F78 0C006FF2 */ jal __voiceNeedsNoteKill +/* 012B7C 70011F7C 3406C350 */ li $a2, 50000 +/* 012B80 70011F80 10400004 */ beqz $v0, .L70011F94 +/* 012B84 70011F84 02402025 */ move $a0, $s2 +/* 012B88 70011F88 02002825 */ move $a1, $s0 +/* 012B8C 70011F8C 0C006FA7 */ jal __seqpReleaseVoice +/* 012B90 70011F90 3406C350 */ li $a2, 50000 +.L70011F94: +/* 012B94 70011F94 8E310000 */ lw $s1, ($s1) +/* 012B98 70011F98 5620FFF5 */ bnezl $s1, .L70011F70 +/* 012B9C 70011F9C 26300004 */ addiu $s0, $s1, 4 +.L70011FA0: +/* 012BA0 70011FA0 240E0002 */ li $t6, 2 +/* 012BA4 70011FA4 AE4E002C */ sw $t6, 0x2c($s2) +/* 012BA8 70011FA8 240F0010 */ li $t7, 16 +/* 012BAC 70011FAC 3C067FFF */ lui $a2, (0x7FFFFFFF >> 16) # lui $a2, 0x7fff +/* 012BB0 70011FB0 A7AF008C */ sh $t7, 0x8c($sp) +/* 012BB4 70011FB4 34C6FFFF */ ori $a2, (0x7FFFFFFF & 0xFFFF) # ori $a2, $a2, 0xffff +/* 012BB8 70011FB8 02A02025 */ move $a0, $s5 +/* 012BBC 70011FBC 0C004BBF */ jal alEvtqPostEvent +/* 012BC0 70011FC0 27A5008C */ addiu $a1, $sp, 0x8c +/* 012BC4 70011FC4 1000001A */ b .L70012030 +/* 012BC8 70011FC8 02A02025 */ move $a0, $s5 +.L70011FCC: +/* 012BCC 70011FCC 9250003C */ lbu $s0, 0x3c($s2) +/* 012BD0 70011FD0 8E590060 */ lw $t9, 0x60($s2) +/* 012BD4 70011FD4 9258003D */ lbu $t8, 0x3d($s2) +/* 012BD8 70011FD8 00107100 */ sll $t6, $s0, 4 +/* 012BDC 70011FDC 032E7821 */ addu $t7, $t9, $t6 +/* 012BE0 70011FE0 10000012 */ b .L7001202C +/* 012BE4 70011FE4 A1F80008 */ sb $t8, 8($t7) +.L70011FE8: +/* 012BE8 70011FE8 8E59003C */ lw $t9, 0x3c($s2) +/* 012BEC 70011FEC 3C018003 */ lui $at, %hi(F32_800296C4) +/* 012BF0 70011FF0 02402025 */ move $a0, $s2 +/* 012BF4 70011FF4 AE590018 */ sw $t9, 0x18($s2) +/* 012BF8 70011FF8 0C00440C */ jal ultra_70011030 +/* 012BFC 70011FFC C42C96C4 */ lwc1 $f12, %lo(F32_800296C4)($at) +/* 012C00 70012000 8E450020 */ lw $a1, 0x20($s2) +/* 012C04 70012004 50A0000A */ beql $a1, $zero, .L70012030 +/* 012C08 70012008 02A02025 */ move $a0, $s5 +/* 012C0C 7001200C 0C006F4D */ jal __initFromBank +/* 012C10 70012010 02402025 */ move $a0, $s2 +/* 012C14 70012014 10000006 */ b .L70012030 +/* 012C18 70012018 02A02025 */ move $a0, $s5 +.L7001201C: +/* 012C1C 7001201C 8E45003C */ lw $a1, 0x3c($s2) +/* 012C20 70012020 02402025 */ move $a0, $s2 +/* 012C24 70012024 0C006F4D */ jal __initFromBank +/* 012C28 70012028 AE450020 */ sw $a1, 0x20($s2) +.L7001202C: +/* 012C2C 7001202C 02A02025 */ move $a0, $s5 +.L70012030: +/* 012C30 70012030 0C004C08 */ jal alEvtqNextEvent +/* 012C34 70012034 8FA50050 */ lw $a1, 0x50($sp) +/* 012C38 70012038 1040FE9C */ beqz $v0, .L70011AAC +/* 012C3C 7001203C AE420028 */ sw $v0, 0x28($s2) +/* 012C40 70012040 8E4E001C */ lw $t6, 0x1c($s2) +/* 012C44 70012044 01C2C021 */ addu $t8, $t6, $v0 +/* 012C48 70012048 AE58001C */ sw $t8, 0x1c($s2) +/* 012C4C 7001204C 8FBF0044 */ lw $ra, 0x44($sp) +/* 012C50 70012050 8FBE0040 */ lw $fp, 0x40($sp) +/* 012C54 70012054 8FB7003C */ lw $s7, 0x3c($sp) +/* 012C58 70012058 8FB60038 */ lw $s6, 0x38($sp) +/* 012C5C 7001205C 8FB50034 */ lw $s5, 0x34($sp) +/* 012C60 70012060 8FB40030 */ lw $s4, 0x30($sp) +/* 012C64 70012064 8FB3002C */ lw $s3, 0x2c($sp) +/* 012C68 70012068 8FB20028 */ lw $s2, 0x28($sp) +/* 012C6C 7001206C 8FB10024 */ lw $s1, 0x24($sp) +/* 012C70 70012070 8FB00020 */ lw $s0, 0x20($sp) +/* 012C74 70012074 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 012C78 70012078 03E00008 */ jr $ra +/* 012C7C 7001207C 27BD00A0 */ addiu $sp, $sp, 0xa0 + +glabel alCSPNew +/* 012C80 70012080 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 012C84 70012084 AFBF0024 */ sw $ra, 0x24($sp) +/* 012C88 70012088 AFB10020 */ sw $s1, 0x20($sp) +/* 012C8C 7001208C AFB0001C */ sw $s0, 0x1c($sp) +/* 012C90 70012090 8CA6000C */ lw $a2, 0xc($a1) +/* 012C94 70012094 AC800020 */ sw $zero, 0x20($a0) +/* 012C98 70012098 AC800018 */ sw $zero, 0x18($a0) +/* 012C9C 7001209C 3C0E8002 */ lui $t6, %hi(alGlobals) +/* 012CA0 700120A0 8DCE76E0 */ lw $t6, %lo(alGlobals)($t6) +/* 012CA4 700120A4 240F00FF */ li $t7, 255 +/* 012CA8 700120A8 241801E8 */ li $t8, 488 +/* 012CAC 700120AC 24197FFF */ li $t9, 32767 +/* 012CB0 700120B0 24083E80 */ li $t0, 16000 +/* 012CB4 700120B4 A48F0030 */ sh $t7, 0x30($a0) +/* 012CB8 700120B8 AC980024 */ sw $t8, 0x24($a0) +/* 012CBC 700120BC AC800028 */ sw $zero, 0x28($a0) +/* 012CC0 700120C0 AC80002C */ sw $zero, 0x2c($a0) +/* 012CC4 700120C4 A4990032 */ sh $t9, 0x32($a0) +/* 012CC8 700120C8 AC88005C */ sw $t0, 0x5c($a0) +/* 012CCC 700120CC AC80001C */ sw $zero, 0x1c($a0) +/* 012CD0 700120D0 AC8E0014 */ sw $t6, 0x14($a0) +/* 012CD4 700120D4 8CA90010 */ lw $t1, 0x10($a1) +/* 012CD8 700120D8 240C0009 */ li $t4, 9 +/* 012CDC 700120DC 00A08825 */ move $s1, $a1 +/* 012CE0 700120E0 AC890070 */ sw $t1, 0x70($a0) +/* 012CE4 700120E4 8CAA0014 */ lw $t2, 0x14($a1) +/* 012CE8 700120E8 00808025 */ move $s0, $a0 +/* 012CEC 700120EC 240E0010 */ li $t6, 16 +/* 012CF0 700120F0 AC8A0074 */ sw $t2, 0x74($a0) +/* 012CF4 700120F4 8CAB0018 */ lw $t3, 0x18($a1) +/* 012CF8 700120F8 A48C0038 */ sh $t4, 0x38($a0) +/* 012CFC 700120FC AC8B0078 */ sw $t3, 0x78($a0) +/* 012D00 70012100 90AD0008 */ lbu $t5, 8($a1) +/* 012D04 70012104 00002825 */ move $a1, $zero +/* 012D08 70012108 A08D0034 */ sb $t5, 0x34($a0) +/* 012D0C 7001210C 92270008 */ lbu $a3, 8($s1) +/* 012D10 70012110 AFAE0010 */ sw $t6, 0x10($sp) +/* 012D14 70012114 00002025 */ move $a0, $zero +/* 012D18 70012118 0C003AD4 */ jal alHeapDBAlloc +/* 012D1C 7001211C AFA6002C */ sw $a2, 0x2c($sp) +/* 012D20 70012120 AE020060 */ sw $v0, 0x60($s0) +/* 012D24 70012124 0C0074E9 */ jal __initChanState +/* 012D28 70012128 02002025 */ move $a0, $s0 +/* 012D2C 7001212C 8E270000 */ lw $a3, ($s1) +/* 012D30 70012130 240F0038 */ li $t7, 56 +/* 012D34 70012134 AFAF0010 */ sw $t7, 0x10($sp) +/* 012D38 70012138 00002025 */ move $a0, $zero +/* 012D3C 7001213C 00002825 */ move $a1, $zero +/* 012D40 70012140 0C003AD4 */ jal alHeapDBAlloc +/* 012D44 70012144 8FA6002C */ lw $a2, 0x2c($sp) +/* 012D48 70012148 AE00006C */ sw $zero, 0x6c($s0) +/* 012D4C 7001214C 8E380000 */ lw $t8, ($s1) +/* 012D50 70012150 00002025 */ move $a0, $zero +/* 012D54 70012154 00002825 */ move $a1, $zero +/* 012D58 70012158 1B00000B */ blez $t8, .L70012188 +/* 012D5C 7001215C 2409001C */ li $t1, 28 +/* 012D60 70012160 00401825 */ move $v1, $v0 +/* 012D64 70012164 8E19006C */ lw $t9, 0x6c($s0) +.L70012168: +/* 012D68 70012168 24840001 */ addiu $a0, $a0, 1 +/* 012D6C 7001216C AC790000 */ sw $t9, ($v1) +/* 012D70 70012170 AE03006C */ sw $v1, 0x6c($s0) +/* 012D74 70012174 8E280000 */ lw $t0, ($s1) +/* 012D78 70012178 24630038 */ addiu $v1, $v1, 0x38 +/* 012D7C 7001217C 0088082A */ slt $at, $a0, $t0 +/* 012D80 70012180 5420FFF9 */ bnezl $at, .L70012168 +/* 012D84 70012184 8E19006C */ lw $t9, 0x6c($s0) +.L70012188: +/* 012D88 70012188 AE000064 */ sw $zero, 0x64($s0) +/* 012D8C 7001218C AE000068 */ sw $zero, 0x68($s0) +/* 012D90 70012190 8E270004 */ lw $a3, 4($s1) +/* 012D94 70012194 AFA90010 */ sw $t1, 0x10($sp) +/* 012D98 70012198 8FA6002C */ lw $a2, 0x2c($sp) +/* 012D9C 7001219C 0C003AD4 */ jal alHeapDBAlloc +/* 012DA0 700121A0 00002025 */ move $a0, $zero +/* 012DA4 700121A4 26040048 */ addiu $a0, $s0, 0x48 +/* 012DA8 700121A8 00402825 */ move $a1, $v0 +/* 012DAC 700121AC 0C004C2B */ jal alEvtqNew +/* 012DB0 700121B0 8E260004 */ lw $a2, 4($s1) +/* 012DB4 700121B4 3C0A7001 */ lui $t2, %hi(ultra_70011A6C) # $t2, 0x7001 +/* 012DB8 700121B8 254A1A6C */ addiu $t2, %lo(ultra_70011A6C) # addiu $t2, $t2, 0x1a6c +/* 012DBC 700121BC AE000000 */ sw $zero, ($s0) +/* 012DC0 700121C0 AE0A0008 */ sw $t2, 8($s0) +/* 012DC4 700121C4 AE100004 */ sw $s0, 4($s0) +/* 012DC8 700121C8 3C048002 */ lui $a0, %hi(alGlobals) +/* 012DCC 700121CC 8C8476E0 */ lw $a0, %lo(alGlobals)($a0) +/* 012DD0 700121D0 0C004C48 */ jal alSynAddPlayer +/* 012DD4 700121D4 02002825 */ move $a1, $s0 +/* 012DD8 700121D8 8FBF0024 */ lw $ra, 0x24($sp) +/* 012DDC 700121DC 8FB0001C */ lw $s0, 0x1c($sp) +/* 012DE0 700121E0 8FB10020 */ lw $s1, 0x20($sp) +/* 012DE4 700121E4 03E00008 */ jr $ra +/* 012DE8 700121E8 27BD0040 */ addiu $sp, $sp, 0x40 + + + +.section .rodata +glabel audio_related_jump_table_0 +.word .L70011620, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011280, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011678, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011750, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011988, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L700116DC, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 +.word .L700119BC +glabel audio_related_jump_table_1 +.word .L70011AD0 +.word .L7001202C +.word .L70011E00 +.word .L7001202C +.word .L7001202C +.word .L70011BBC +.word .L70011C08 +.word .L70011E1C +.word .L7001202C +.word .L70011B9C +.word .L70011E3C +.word .L7001202C +.word .L70011FCC +.word .L70011FE8 +.word .L7001201C +.word .L70011EA0 +.word .L70011EC4 +.word .L70011F30 +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L70011E00 +.word .L70011C6C +.word .L70011D78 +glabel audio_related_jump_table_2 +.word .L70011B0C +.word .L7001202C +.word .L70011B34 +.word .L70011B60 +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L7001202C +.word .L70011B8C +.word .L70011B8C +.word .L70011B8C +glabel F32_800296C4 + .float 500000.0 +.align 4 diff --git a/src/libultra/__osDequeueThread.s b/src/libultra/__osDequeueThread.s new file mode 100644 index 0000000..5efe1de --- /dev/null +++ b/src/libultra/__osDequeueThread.s @@ -0,0 +1,41 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel __osDequeueThread +/* 011690 70010A90 00803025 */ move $a2, $a0 +/* 011694 70010A94 8CC70000 */ lw $a3, ($a2) +/* 011698 70010A98 27BDFFF8 */ addiu $sp, $sp, -8 +/* 01169C 70010A9C 10E0000A */ beqz $a3, .L70010AC8 +/* 0116A0 70010AA0 00000000 */ nop +.L70010AA4: +/* 0116A4 70010AA4 14E50004 */ bne $a3, $a1, .L70010AB8 +/* 0116A8 70010AA8 00000000 */ nop +/* 0116AC 70010AAC 8CAE0000 */ lw $t6, ($a1) +/* 0116B0 70010AB0 10000005 */ b .L70010AC8 +/* 0116B4 70010AB4 ACCE0000 */ sw $t6, ($a2) +.L70010AB8: +/* 0116B8 70010AB8 00E03025 */ move $a2, $a3 +/* 0116BC 70010ABC 8CC70000 */ lw $a3, ($a2) +/* 0116C0 70010AC0 14E0FFF8 */ bnez $a3, .L70010AA4 +/* 0116C4 70010AC4 00000000 */ nop +.L70010AC8: +/* 0116C8 70010AC8 03E00008 */ jr $ra +/* 0116CC 70010ACC 27BD0008 */ addiu $sp, $sp, 8 + +.section .data +glabel __osThreadTail +.word 0, 0xFFFFFFFF +glabel __osRunQueue + .word __osThreadTail +glabel __osActiveQueue +.word __osThreadTail +glabel __osRunningThread +.word 0 +glabel __osFaultedThread +.word 0 diff --git a/src/libultra/__osGetCurrFaultedThread.s b/src/libultra/__osGetCurrFaultedThread.s new file mode 100644 index 0000000..d5f44e8 --- /dev/null +++ b/src/libultra/__osGetCurrFaultedThread.s @@ -0,0 +1,14 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel __osGetCurrFaultedThread +/* 010D80 70010180 3C028002 */ lui $v0, %hi(__osFaultedThread) +/* 010D84 70010184 03E00008 */ jr $ra +/* 010D88 70010188 8C427734 */ lw $v0, %lo(__osFaultedThread)($v0) + diff --git a/src/libultra/__osGetFpcCsr.s b/src/libultra/__osGetFpcCsr.s new file mode 100644 index 0000000..91e1883 --- /dev/null +++ b/src/libultra/__osGetFpcCsr.s @@ -0,0 +1,14 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel __osGetFpcCsr +/* 00E010 7000D410 4442F800 */ cfc1 $v0, $31 +/* 00E014 7000D414 03E00008 */ jr $ra +/* 00E018 7000D418 00000000 */ nop + \ No newline at end of file diff --git a/src/libultra/__osGetTLBHi.s b/src/libultra/__osGetTLBHi.s new file mode 100644 index 0000000..0beac9a --- /dev/null +++ b/src/libultra/__osGetTLBHi.s @@ -0,0 +1,21 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel __osGetTLBHi +/* 00F480 7000E880 40840000 */ mtc0 $a0, $0 +/* 00F484 7000E884 00000000 */ nop +/* 00F488 7000E888 42000001 */ tlbr +/* 00F48C 7000E88C 00000000 */ nop +/* 00F490 7000E890 00000000 */ nop +/* 00F494 7000E894 00000000 */ nop +/* 00F498 7000E898 40025000 */ mfc0 $v0, $10 +/* 00F49C 7000E89C 03E00008 */ jr $ra +/* 00F4A0 7000E8A0 00000000 */ nop + diff --git a/src/libultra/__osSetFpcCsr.s b/src/libultra/__osSetFpcCsr.s new file mode 100644 index 0000000..5dff282 --- /dev/null +++ b/src/libultra/__osSetFpcCsr.s @@ -0,0 +1,14 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel __osSetFpcCsr +/* 00E020 7000D420 4442F800 */ cfc1 $v0, $31 +/* 00E024 7000D424 44C4F800 */ ctc1 $a0, $31 +/* 00E028 7000D428 03E00008 */ jr $ra +/* 00E02C 7000D42C 00000000 */ nop diff --git a/src/libultra/_bcopy.s b/src/libultra/_bcopy.s new file mode 100644 index 0000000..9fe0be1 --- /dev/null +++ b/src/libultra/_bcopy.s @@ -0,0 +1,229 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel _bcopy +/* 010570 7000F970 10C0001A */ beqz $a2, .L7000F9DC +/* 010574 7000F974 00A03825 */ move $a3, $a1 +/* 010578 7000F978 10850018 */ beq $a0, $a1, .L7000F9DC +/* 01057C 7000F97C 00A4082A */ slt $at, $a1, $a0 +/* 010580 7000F980 54200008 */ bnezl $at, .L7000F9A4 +/* 010584 7000F984 28C10010 */ slti $at, $a2, 0x10 +/* 010588 7000F988 00861020 */ add $v0, $a0, $a2 +/* 01058C 7000F98C 00A2082A */ slt $at, $a1, $v0 +/* 010590 7000F990 50200004 */ beql $at, $zero, .L7000F9A4 +/* 010594 7000F994 28C10010 */ slti $at, $a2, 0x10 +/* 010598 7000F998 1000005B */ b .L7000FB08 +/* 01059C 7000F99C 28C10010 */ slti $at, $a2, 0x10 +/* 0105A0 7000F9A0 28C10010 */ slti $at, $a2, 0x10 +.L7000F9A4: +/* 0105A4 7000F9A4 14200005 */ bnez $at, .L7000F9BC +/* 0105A8 7000F9A8 00000000 */ nop +/* 0105AC 7000F9AC 30820003 */ andi $v0, $a0, 3 +/* 0105B0 7000F9B0 30A30003 */ andi $v1, $a1, 3 +/* 0105B4 7000F9B4 1043000B */ beq $v0, $v1, .L7000F9E4 +/* 0105B8 7000F9B8 00000000 */ nop +.L7000F9BC: +/* 0105BC 7000F9BC 10C00007 */ beqz $a2, .L7000F9DC +/* 0105C0 7000F9C0 00000000 */ nop +/* 0105C4 7000F9C4 00861821 */ addu $v1, $a0, $a2 +.L7000F9C8: +/* 0105C8 7000F9C8 80820000 */ lb $v0, ($a0) +/* 0105CC 7000F9CC 24840001 */ addiu $a0, $a0, 1 +/* 0105D0 7000F9D0 24A50001 */ addiu $a1, $a1, 1 +/* 0105D4 7000F9D4 1483FFFC */ bne $a0, $v1, .L7000F9C8 +/* 0105D8 7000F9D8 A0A2FFFF */ sb $v0, -1($a1) +.L7000F9DC: +/* 0105DC 7000F9DC 03E00008 */ jr $ra +/* 0105E0 7000F9E0 00E01025 */ move $v0, $a3 + +.L7000F9E4: +/* 0105E4 7000F9E4 10400018 */ beqz $v0, .L7000FA48 +/* 0105E8 7000F9E8 24010001 */ li $at, 1 +/* 0105EC 7000F9EC 1041000F */ beq $v0, $at, .L7000FA2C +/* 0105F0 7000F9F0 24010002 */ li $at, 2 +/* 0105F4 7000F9F4 50410008 */ beql $v0, $at, .L7000FA18 +/* 0105F8 7000F9F8 84820000 */ lh $v0, ($a0) +/* 0105FC 7000F9FC 80820000 */ lb $v0, ($a0) +/* 010600 7000FA00 24840001 */ addiu $a0, $a0, 1 +/* 010604 7000FA04 24A50001 */ addiu $a1, $a1, 1 +/* 010608 7000FA08 24C6FFFF */ addiu $a2, $a2, -1 +/* 01060C 7000FA0C 1000000E */ b .L7000FA48 +/* 010610 7000FA10 A0A2FFFF */ sb $v0, -1($a1) +/* 010614 7000FA14 84820000 */ lh $v0, ($a0) +.L7000FA18: +/* 010618 7000FA18 24840002 */ addiu $a0, $a0, 2 +/* 01061C 7000FA1C 24A50002 */ addiu $a1, $a1, 2 +/* 010620 7000FA20 24C6FFFE */ addiu $a2, $a2, -2 +/* 010624 7000FA24 10000008 */ b .L7000FA48 +/* 010628 7000FA28 A4A2FFFE */ sh $v0, -2($a1) +.L7000FA2C: +/* 01062C 7000FA2C 80820000 */ lb $v0, ($a0) +/* 010630 7000FA30 84830001 */ lh $v1, 1($a0) +/* 010634 7000FA34 24840003 */ addiu $a0, $a0, 3 +/* 010638 7000FA38 24A50003 */ addiu $a1, $a1, 3 +/* 01063C 7000FA3C 24C6FFFD */ addiu $a2, $a2, -3 +/* 010640 7000FA40 A0A2FFFD */ sb $v0, -3($a1) +/* 010644 7000FA44 A4A3FFFE */ sh $v1, -2($a1) +.L7000FA48: +/* 010648 7000FA48 28C10020 */ slti $at, $a2, 0x20 +/* 01064C 7000FA4C 54200016 */ bnezl $at, .L7000FAA8 +/* 010650 7000FA50 28C10010 */ slti $at, $a2, 0x10 +/* 010654 7000FA54 8C820000 */ lw $v0, ($a0) +/* 010658 7000FA58 8C830004 */ lw $v1, 4($a0) +/* 01065C 7000FA5C 8C880008 */ lw $t0, 8($a0) +/* 010660 7000FA60 8C89000C */ lw $t1, 0xc($a0) +/* 010664 7000FA64 8C8A0010 */ lw $t2, 0x10($a0) +/* 010668 7000FA68 8C8B0014 */ lw $t3, 0x14($a0) +/* 01066C 7000FA6C 8C8C0018 */ lw $t4, 0x18($a0) +/* 010670 7000FA70 8C8D001C */ lw $t5, 0x1c($a0) +/* 010674 7000FA74 24840020 */ addiu $a0, $a0, 0x20 +/* 010678 7000FA78 24A50020 */ addiu $a1, $a1, 0x20 +/* 01067C 7000FA7C 24C6FFE0 */ addiu $a2, $a2, -0x20 +/* 010680 7000FA80 ACA2FFE0 */ sw $v0, -0x20($a1) +/* 010684 7000FA84 ACA3FFE4 */ sw $v1, -0x1c($a1) +/* 010688 7000FA88 ACA8FFE8 */ sw $t0, -0x18($a1) +/* 01068C 7000FA8C ACA9FFEC */ sw $t1, -0x14($a1) +/* 010690 7000FA90 ACAAFFF0 */ sw $t2, -0x10($a1) +/* 010694 7000FA94 ACABFFF4 */ sw $t3, -0xc($a1) +/* 010698 7000FA98 ACACFFF8 */ sw $t4, -8($a1) +/* 01069C 7000FA9C 1000FFEA */ b .L7000FA48 +/* 0106A0 7000FAA0 ACADFFFC */ sw $t5, -4($a1) +.L7000FAA4: +/* 0106A4 7000FAA4 28C10010 */ slti $at, $a2, 0x10 +.L7000FAA8: +/* 0106A8 7000FAA8 5420000E */ bnezl $at, .L7000FAE4 +/* 0106AC 7000FAAC 28C10004 */ slti $at, $a2, 4 +/* 0106B0 7000FAB0 8C820000 */ lw $v0, ($a0) +/* 0106B4 7000FAB4 8C830004 */ lw $v1, 4($a0) +/* 0106B8 7000FAB8 8C880008 */ lw $t0, 8($a0) +/* 0106BC 7000FABC 8C89000C */ lw $t1, 0xc($a0) +/* 0106C0 7000FAC0 24840010 */ addiu $a0, $a0, 0x10 +/* 0106C4 7000FAC4 24A50010 */ addiu $a1, $a1, 0x10 +/* 0106C8 7000FAC8 24C6FFF0 */ addiu $a2, $a2, -0x10 +/* 0106CC 7000FACC ACA2FFF0 */ sw $v0, -0x10($a1) +/* 0106D0 7000FAD0 ACA3FFF4 */ sw $v1, -0xc($a1) +/* 0106D4 7000FAD4 ACA8FFF8 */ sw $t0, -8($a1) +/* 0106D8 7000FAD8 1000FFF2 */ b .L7000FAA4 +/* 0106DC 7000FADC ACA9FFFC */ sw $t1, -4($a1) +.L7000FAE0: +/* 0106E0 7000FAE0 28C10004 */ slti $at, $a2, 4 +.L7000FAE4: +/* 0106E4 7000FAE4 1420FFB5 */ bnez $at, .L7000F9BC +/* 0106E8 7000FAE8 00000000 */ nop +/* 0106EC 7000FAEC 8C820000 */ lw $v0, ($a0) +/* 0106F0 7000FAF0 24840004 */ addiu $a0, $a0, 4 +/* 0106F4 7000FAF4 24A50004 */ addiu $a1, $a1, 4 +/* 0106F8 7000FAF8 24C6FFFC */ addiu $a2, $a2, -4 +/* 0106FC 7000FAFC 1000FFF8 */ b .L7000FAE0 +/* 010700 7000FB00 ACA2FFFC */ sw $v0, -4($a1) +/* 010704 7000FB04 28C10010 */ slti $at, $a2, 0x10 +.L7000FB08: +/* 010708 7000FB08 00862020 */ add $a0, $a0, $a2 +/* 01070C 7000FB0C 14200005 */ bnez $at, .L7000FB24 +/* 010710 7000FB10 00A62820 */ add $a1, $a1, $a2 +/* 010714 7000FB14 30820003 */ andi $v0, $a0, 3 +/* 010718 7000FB18 30A30003 */ andi $v1, $a1, 3 +/* 01071C 7000FB1C 1043000D */ beq $v0, $v1, .L7000FB54 +/* 010720 7000FB20 00000000 */ nop +.L7000FB24: +/* 010724 7000FB24 10C0FFAD */ beqz $a2, .L7000F9DC +/* 010728 7000FB28 00000000 */ nop +/* 01072C 7000FB2C 2484FFFF */ addiu $a0, $a0, -1 +/* 010730 7000FB30 24A5FFFF */ addiu $a1, $a1, -1 +/* 010734 7000FB34 00861823 */ subu $v1, $a0, $a2 +.L7000FB38: +/* 010738 7000FB38 80820000 */ lb $v0, ($a0) +/* 01073C 7000FB3C 2484FFFF */ addiu $a0, $a0, -1 +/* 010740 7000FB40 24A5FFFF */ addiu $a1, $a1, -1 +/* 010744 7000FB44 1483FFFC */ bne $a0, $v1, .L7000FB38 +/* 010748 7000FB48 A0A20001 */ sb $v0, 1($a1) +/* 01074C 7000FB4C 03E00008 */ jr $ra +/* 010750 7000FB50 00E01025 */ move $v0, $a3 + +.L7000FB54: +/* 010754 7000FB54 10400018 */ beqz $v0, .L7000FBB8 +/* 010758 7000FB58 24010003 */ li $at, 3 +/* 01075C 7000FB5C 1041000F */ beq $v0, $at, .L7000FB9C +/* 010760 7000FB60 24010002 */ li $at, 2 +/* 010764 7000FB64 50410008 */ beql $v0, $at, .L7000FB88 +/* 010768 7000FB68 8482FFFE */ lh $v0, -2($a0) +/* 01076C 7000FB6C 8082FFFF */ lb $v0, -1($a0) +/* 010770 7000FB70 2484FFFF */ addiu $a0, $a0, -1 +/* 010774 7000FB74 24A5FFFF */ addiu $a1, $a1, -1 +/* 010778 7000FB78 24C6FFFF */ addiu $a2, $a2, -1 +/* 01077C 7000FB7C 1000000E */ b .L7000FBB8 +/* 010780 7000FB80 A0A20000 */ sb $v0, ($a1) +/* 010784 7000FB84 8482FFFE */ lh $v0, -2($a0) +.L7000FB88: +/* 010788 7000FB88 2484FFFE */ addiu $a0, $a0, -2 +/* 01078C 7000FB8C 24A5FFFE */ addiu $a1, $a1, -2 +/* 010790 7000FB90 24C6FFFE */ addiu $a2, $a2, -2 +/* 010794 7000FB94 10000008 */ b .L7000FBB8 +/* 010798 7000FB98 A4A20000 */ sh $v0, ($a1) +.L7000FB9C: +/* 01079C 7000FB9C 8082FFFF */ lb $v0, -1($a0) +/* 0107A0 7000FBA0 8483FFFD */ lh $v1, -3($a0) +/* 0107A4 7000FBA4 2484FFFD */ addiu $a0, $a0, -3 +/* 0107A8 7000FBA8 24A5FFFD */ addiu $a1, $a1, -3 +/* 0107AC 7000FBAC 24C6FFFD */ addiu $a2, $a2, -3 +/* 0107B0 7000FBB0 A0A20002 */ sb $v0, 2($a1) +/* 0107B4 7000FBB4 A4A30000 */ sh $v1, ($a1) +.L7000FBB8: +/* 0107B8 7000FBB8 28C10020 */ slti $at, $a2, 0x20 +/* 0107BC 7000FBBC 54200016 */ bnezl $at, .L7000FC18 +/* 0107C0 7000FBC0 28C10010 */ slti $at, $a2, 0x10 +/* 0107C4 7000FBC4 8C82FFFC */ lw $v0, -4($a0) +/* 0107C8 7000FBC8 8C83FFF8 */ lw $v1, -8($a0) +/* 0107CC 7000FBCC 8C88FFF4 */ lw $t0, -0xc($a0) +/* 0107D0 7000FBD0 8C89FFF0 */ lw $t1, -0x10($a0) +/* 0107D4 7000FBD4 8C8AFFEC */ lw $t2, -0x14($a0) +/* 0107D8 7000FBD8 8C8BFFE8 */ lw $t3, -0x18($a0) +/* 0107DC 7000FBDC 8C8CFFE4 */ lw $t4, -0x1c($a0) +/* 0107E0 7000FBE0 8C8DFFE0 */ lw $t5, -0x20($a0) +/* 0107E4 7000FBE4 2484FFE0 */ addiu $a0, $a0, -0x20 +/* 0107E8 7000FBE8 24A5FFE0 */ addiu $a1, $a1, -0x20 +/* 0107EC 7000FBEC 24C6FFE0 */ addiu $a2, $a2, -0x20 +/* 0107F0 7000FBF0 ACA2001C */ sw $v0, 0x1c($a1) +/* 0107F4 7000FBF4 ACA30018 */ sw $v1, 0x18($a1) +/* 0107F8 7000FBF8 ACA80014 */ sw $t0, 0x14($a1) +/* 0107FC 7000FBFC ACA90010 */ sw $t1, 0x10($a1) +/* 010800 7000FC00 ACAA000C */ sw $t2, 0xc($a1) +/* 010804 7000FC04 ACAB0008 */ sw $t3, 8($a1) +/* 010808 7000FC08 ACAC0004 */ sw $t4, 4($a1) +/* 01080C 7000FC0C 1000FFEA */ b .L7000FBB8 +/* 010810 7000FC10 ACAD0000 */ sw $t5, ($a1) +.L7000FC14: +/* 010814 7000FC14 28C10010 */ slti $at, $a2, 0x10 +.L7000FC18: +/* 010818 7000FC18 5420000E */ bnezl $at, .L7000FC54 +/* 01081C 7000FC1C 28C10004 */ slti $at, $a2, 4 +/* 010820 7000FC20 8C82FFFC */ lw $v0, -4($a0) +/* 010824 7000FC24 8C83FFF8 */ lw $v1, -8($a0) +/* 010828 7000FC28 8C88FFF4 */ lw $t0, -0xc($a0) +/* 01082C 7000FC2C 8C89FFF0 */ lw $t1, -0x10($a0) +/* 010830 7000FC30 2484FFF0 */ addiu $a0, $a0, -0x10 +/* 010834 7000FC34 24A5FFF0 */ addiu $a1, $a1, -0x10 +/* 010838 7000FC38 24C6FFF0 */ addiu $a2, $a2, -0x10 +/* 01083C 7000FC3C ACA2000C */ sw $v0, 0xc($a1) +/* 010840 7000FC40 ACA30008 */ sw $v1, 8($a1) +/* 010844 7000FC44 ACA80004 */ sw $t0, 4($a1) +/* 010848 7000FC48 1000FFF2 */ b .L7000FC14 +/* 01084C 7000FC4C ACA90000 */ sw $t1, ($a1) +.L7000FC50: +/* 010850 7000FC50 28C10004 */ slti $at, $a2, 4 +.L7000FC54: +/* 010854 7000FC54 1420FFB3 */ bnez $at, .L7000FB24 +/* 010858 7000FC58 00000000 */ nop +/* 01085C 7000FC5C 8C82FFFC */ lw $v0, -4($a0) +/* 010860 7000FC60 2484FFFC */ addiu $a0, $a0, -4 +/* 010864 7000FC64 24A5FFFC */ addiu $a1, $a1, -4 +/* 010868 7000FC68 24C6FFFC */ addiu $a2, $a2, -4 +/* 01086C 7000FC6C 1000FFF8 */ b .L7000FC50 +/* 010870 7000FC70 ACA20000 */ sw $v0, ($a1) + diff --git a/src/libultra/alBnkfNew.s b/src/libultra/alBnkfNew.s new file mode 100644 index 0000000..73eefc0 --- /dev/null +++ b/src/libultra/alBnkfNew.s @@ -0,0 +1,177 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +/* 011970 70010D70 03E00008 */ jr $ra +/* 011974 70010D74 00000000 */ nop + +/* 011978 70010D78 03E00008 */ jr $ra +/* 01197C 70010D7C 00000000 */ nop + +glabel ultra_70010D80 +/* 011980 70010D80 908E0003 */ lbu $t6, 3($a0) +/* 011984 70010D84 15C00037 */ bnez $t6, .L70010E64 +/* 011988 70010D88 00000000 */ nop +/* 01198C 70010D8C 848F000E */ lh $t7, 0xe($a0) +/* 011990 70010D90 24090001 */ li $t1, 1 +/* 011994 70010D94 A0890003 */ sb $t1, 3($a0) +/* 011998 70010D98 19E00032 */ blez $t7, .L70010E64 +/* 01199C 70010D9C 00001025 */ move $v0, $zero +/* 0119A0 70010DA0 00801825 */ move $v1, $a0 +/* 0119A4 70010DA4 240A0001 */ li $t2, 1 +/* 0119A8 70010DA8 8C780010 */ lw $t8, 0x10($v1) +.L70010DAC: +/* 0119AC 70010DAC 0305C821 */ addu $t9, $t8, $a1 +/* 0119B0 70010DB0 AC790010 */ sw $t9, 0x10($v1) +/* 0119B4 70010DB4 932E000E */ lbu $t6, 0xe($t9) +/* 0119B8 70010DB8 03203025 */ move $a2, $t9 +/* 0119BC 70010DBC 55C00024 */ bnezl $t6, .L70010E50 +/* 0119C0 70010DC0 8498000E */ lh $t8, 0xe($a0) +/* 0119C4 70010DC4 8F2F0000 */ lw $t7, ($t9) +/* 0119C8 70010DC8 A329000E */ sb $t1, 0xe($t9) +/* 0119CC 70010DCC 01E5C021 */ addu $t8, $t7, $a1 +/* 0119D0 70010DD0 AF380000 */ sw $t8, ($t9) +/* 0119D4 70010DD4 8F390004 */ lw $t9, 4($t9) +/* 0119D8 70010DD8 8CCF0008 */ lw $t7, 8($a2) +/* 0119DC 70010DDC 03257021 */ addu $t6, $t9, $a1 +/* 0119E0 70010DE0 01E5C021 */ addu $t8, $t7, $a1 +/* 0119E4 70010DE4 ACCE0004 */ sw $t6, 4($a2) +/* 0119E8 70010DE8 ACD80008 */ sw $t8, 8($a2) +/* 0119EC 70010DEC 93190009 */ lbu $t9, 9($t8) +/* 0119F0 70010DF0 03004025 */ move $t0, $t8 +/* 0119F4 70010DF4 57200016 */ bnezl $t9, .L70010E50 +/* 0119F8 70010DF8 8498000E */ lh $t8, 0xe($a0) +/* 0119FC 70010DFC 8F0E0000 */ lw $t6, ($t8) +/* 011A00 70010E00 93060008 */ lbu $a2, 8($t8) +/* 011A04 70010E04 A3090009 */ sb $t1, 9($t8) +/* 011A08 70010E08 01C77821 */ addu $t7, $t6, $a3 +/* 011A0C 70010E0C 14C00009 */ bnez $a2, .L70010E34 +/* 011A10 70010E10 AF0F0000 */ sw $t7, ($t8) +/* 011A14 70010E14 8F180010 */ lw $t8, 0x10($t8) +/* 011A18 70010E18 8D06000C */ lw $a2, 0xc($t0) +/* 011A1C 70010E1C 0305C821 */ addu $t9, $t8, $a1 +/* 011A20 70010E20 10C0000A */ beqz $a2, .L70010E4C +/* 011A24 70010E24 AD190010 */ sw $t9, 0x10($t0) +/* 011A28 70010E28 00C57021 */ addu $t6, $a2, $a1 +/* 011A2C 70010E2C 10000007 */ b .L70010E4C +/* 011A30 70010E30 AD0E000C */ sw $t6, 0xc($t0) +.L70010E34: +/* 011A34 70010E34 55460006 */ bnel $t2, $a2, .L70010E50 +/* 011A38 70010E38 8498000E */ lh $t8, 0xe($a0) +/* 011A3C 70010E3C 8D06000C */ lw $a2, 0xc($t0) +/* 011A40 70010E40 10C00002 */ beqz $a2, .L70010E4C +/* 011A44 70010E44 00C57821 */ addu $t7, $a2, $a1 +/* 011A48 70010E48 AD0F000C */ sw $t7, 0xc($t0) +.L70010E4C: +/* 011A4C 70010E4C 8498000E */ lh $t8, 0xe($a0) +.L70010E50: +/* 011A50 70010E50 24420001 */ addiu $v0, $v0, 1 +/* 011A54 70010E54 24630004 */ addiu $v1, $v1, 4 +/* 011A58 70010E58 0058082A */ slt $at, $v0, $t8 +/* 011A5C 70010E5C 5420FFD3 */ bnezl $at, .L70010DAC +/* 011A60 70010E60 8C780010 */ lw $t8, 0x10($v1) +.L70010E64: +/* 011A64 70010E64 03E00008 */ jr $ra +/* 011A68 70010E68 00000000 */ nop + +/* 011A6C 70010E6C 03E00008 */ jr $ra +/* 011A70 70010E70 00000000 */ nop + +glabel alBnkfNew +/* 011A74 70010E74 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 011A78 70010E78 AFBF002C */ sw $ra, 0x2c($sp) +/* 011A7C 70010E7C AFB40028 */ sw $s4, 0x28($sp) +/* 011A80 70010E80 AFB30024 */ sw $s3, 0x24($sp) +/* 011A84 70010E84 AFB20020 */ sw $s2, 0x20($sp) +/* 011A88 70010E88 AFB1001C */ sw $s1, 0x1c($sp) +/* 011A8C 70010E8C AFB00018 */ sw $s0, 0x18($sp) +/* 011A90 70010E90 848E0000 */ lh $t6, ($a0) +/* 011A94 70010E94 24014231 */ li $at, 16945 +/* 011A98 70010E98 00808025 */ move $s0, $a0 +/* 011A9C 70010E9C 15C1002E */ bne $t6, $at, .L70010F58 +/* 011AA0 70010EA0 00A08825 */ move $s1, $a1 +/* 011AA4 70010EA4 848F0002 */ lh $t7, 2($a0) +/* 011AA8 70010EA8 00009825 */ move $s3, $zero +/* 011AAC 70010EAC 00809025 */ move $s2, $a0 +/* 011AB0 70010EB0 19E00029 */ blez $t7, .L70010F58 +/* 011AB4 70010EB4 24140001 */ li $s4, 1 +/* 011AB8 70010EB8 8E580004 */ lw $t8, 4($s2) +.L70010EBC: +/* 011ABC 70010EBC 0310C821 */ addu $t9, $t8, $s0 +/* 011AC0 70010EC0 1320001F */ beqz $t9, .L70010F40 +/* 011AC4 70010EC4 AE590004 */ sw $t9, 4($s2) +/* 011AC8 70010EC8 932E0002 */ lbu $t6, 2($t9) +/* 011ACC 70010ECC 03206825 */ move $t5, $t9 +/* 011AD0 70010ED0 55C0001C */ bnezl $t6, .L70010F44 +/* 011AD4 70010ED4 86180002 */ lh $t8, 2($s0) +/* 011AD8 70010ED8 8F220008 */ lw $v0, 8($t9) +/* 011ADC 70010EDC A3340002 */ sb $s4, 2($t9) +/* 011AE0 70010EE0 00006025 */ move $t4, $zero +/* 011AE4 70010EE4 10400005 */ beqz $v0, .L70010EFC +/* 011AE8 70010EE8 00502021 */ addu $a0, $v0, $s0 +/* 011AEC 70010EEC AF240008 */ sw $a0, 8($t9) +/* 011AF0 70010EF0 02002825 */ move $a1, $s0 +/* 011AF4 70010EF4 0C004360 */ jal ultra_70010D80 +/* 011AF8 70010EF8 02203825 */ move $a3, $s1 +.L70010EFC: +/* 011AFC 70010EFC 85B80000 */ lh $t8, ($t5) +/* 011B00 70010F00 01A05825 */ move $t3, $t5 +/* 011B04 70010F04 5B00000F */ blezl $t8, .L70010F44 +/* 011B08 70010F08 86180002 */ lh $t8, 2($s0) +/* 011B0C 70010F0C 8D79000C */ lw $t9, 0xc($t3) +.L70010F10: +/* 011B10 70010F10 02002825 */ move $a1, $s0 +/* 011B14 70010F14 03302021 */ addu $a0, $t9, $s0 +/* 011B18 70010F18 10800003 */ beqz $a0, .L70010F28 +/* 011B1C 70010F1C AD64000C */ sw $a0, 0xc($t3) +/* 011B20 70010F20 0C004360 */ jal ultra_70010D80 +/* 011B24 70010F24 02203825 */ move $a3, $s1 +.L70010F28: +/* 011B28 70010F28 85AF0000 */ lh $t7, ($t5) +/* 011B2C 70010F2C 258C0001 */ addiu $t4, $t4, 1 +/* 011B30 70010F30 256B0004 */ addiu $t3, $t3, 4 +/* 011B34 70010F34 018F082A */ slt $at, $t4, $t7 +/* 011B38 70010F38 5420FFF5 */ bnezl $at, .L70010F10 +/* 011B3C 70010F3C 8D79000C */ lw $t9, 0xc($t3) +.L70010F40: +/* 011B40 70010F40 86180002 */ lh $t8, 2($s0) +.L70010F44: +/* 011B44 70010F44 26730001 */ addiu $s3, $s3, 1 +/* 011B48 70010F48 26520004 */ addiu $s2, $s2, 4 +/* 011B4C 70010F4C 0278082A */ slt $at, $s3, $t8 +/* 011B50 70010F50 5420FFDA */ bnezl $at, .L70010EBC +/* 011B54 70010F54 8E580004 */ lw $t8, 4($s2) +.L70010F58: +/* 011B58 70010F58 8FBF002C */ lw $ra, 0x2c($sp) +/* 011B5C 70010F5C 8FB00018 */ lw $s0, 0x18($sp) +/* 011B60 70010F60 8FB1001C */ lw $s1, 0x1c($sp) +/* 011B64 70010F64 8FB20020 */ lw $s2, 0x20($sp) +/* 011B68 70010F68 8FB30024 */ lw $s3, 0x24($sp) +/* 011B6C 70010F6C 8FB40028 */ lw $s4, 0x28($sp) +/* 011B70 70010F70 03E00008 */ jr $ra +/* 011B74 70010F74 27BD0030 */ addiu $sp, $sp, 0x30 + +glabel alSeqFileNew +/* 011B78 70010F78 848E0002 */ lh $t6, 2($a0) +/* 011B7C 70010F7C 00001025 */ move $v0, $zero +/* 011B80 70010F80 00801825 */ move $v1, $a0 +/* 011B84 70010F84 19C0000A */ blez $t6, .L70010FB0 +/* 011B88 70010F88 00000000 */ nop +/* 011B8C 70010F8C 8C6F0004 */ lw $t7, 4($v1) +.L70010F90: +/* 011B90 70010F90 24420001 */ addiu $v0, $v0, 1 +/* 011B94 70010F94 24630008 */ addiu $v1, $v1, 8 +/* 011B98 70010F98 01E5C021 */ addu $t8, $t7, $a1 +/* 011B9C 70010F9C AC78FFFC */ sw $t8, -4($v1) +/* 011BA0 70010FA0 84990002 */ lh $t9, 2($a0) +/* 011BA4 70010FA4 0059082A */ slt $at, $v0, $t9 +/* 011BA8 70010FA8 5420FFF9 */ bnezl $at, .L70010F90 +/* 011BAC 70010FAC 8C6F0004 */ lw $t7, 4($v1) +.L70010FB0: +/* 011BB0 70010FB0 03E00008 */ jr $ra +/* 011BB4 70010FB4 00000000 */ nop diff --git a/src/libultra/alCSPGetState.s b/src/libultra/alCSPGetState.s new file mode 100644 index 0000000..0f380ae --- /dev/null +++ b/src/libultra/alCSPGetState.s @@ -0,0 +1,12 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alCSPGetState +/* 012E30 70012230 03E00008 */ jr $ra +/* 012E34 70012234 8C82002C */ lw $v0, 0x2c($a0) diff --git a/src/libultra/alCSPPlay.s b/src/libultra/alCSPPlay.s new file mode 100644 index 0000000..a1baa7a --- /dev/null +++ b/src/libultra/alCSPPlay.s @@ -0,0 +1,22 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alCSPPlay +/* 013940 70012D40 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 013944 70012D44 AFBF0014 */ sw $ra, 0x14($sp) +/* 013948 70012D48 240E000F */ li $t6, 15 +/* 01394C 70012D4C A7AE0018 */ sh $t6, 0x18($sp) +/* 013950 70012D50 27A50018 */ addiu $a1, $sp, 0x18 +/* 013954 70012D54 24840048 */ addiu $a0, $a0, 0x48 +/* 013958 70012D58 0C004BBF */ jal alEvtqPostEvent +/* 01395C 70012D5C 00003025 */ move $a2, $zero +/* 013960 70012D60 8FBF0014 */ lw $ra, 0x14($sp) +/* 013964 70012D64 27BD0028 */ addiu $sp, $sp, 0x28 +/* 013968 70012D68 03E00008 */ jr $ra +/* 01396C 70012D6C 00000000 */ nop diff --git a/src/libultra/alCSPSetSeq.s b/src/libultra/alCSPSetSeq.s new file mode 100644 index 0000000..d028e49 --- /dev/null +++ b/src/libultra/alCSPSetSeq.s @@ -0,0 +1,23 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alCSPSetSeq +/* 013900 70012D00 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 013904 70012D04 AFBF0014 */ sw $ra, 0x14($sp) +/* 013908 70012D08 240E000D */ li $t6, 13 +/* 01390C 70012D0C AFA5001C */ sw $a1, 0x1c($sp) +/* 013910 70012D10 A7AE0018 */ sh $t6, 0x18($sp) +/* 013914 70012D14 27A50018 */ addiu $a1, $sp, 0x18 +/* 013918 70012D18 24840048 */ addiu $a0, $a0, 0x48 +/* 01391C 70012D1C 0C004BBF */ jal alEvtqPostEvent +/* 013920 70012D20 00003025 */ move $a2, $zero +/* 013924 70012D24 8FBF0014 */ lw $ra, 0x14($sp) +/* 013928 70012D28 27BD0028 */ addiu $sp, $sp, 0x28 +/* 01392C 70012D2C 03E00008 */ jr $ra +/* 013930 70012D30 00000000 */ nop diff --git a/src/libultra/alCSPSetVol.s b/src/libultra/alCSPSetVol.s new file mode 100644 index 0000000..b921c28 --- /dev/null +++ b/src/libultra/alCSPSetVol.s @@ -0,0 +1,26 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel alCSPSetVol +/* 0139A0 70012DA0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0139A4 70012DA4 AFBF0014 */ sw $ra, 0x14($sp) +/* 0139A8 70012DA8 AFA5002C */ sw $a1, 0x2c($sp) +/* 0139AC 70012DAC 00A07025 */ move $t6, $a1 +/* 0139B0 70012DB0 240F000A */ li $t7, 10 +/* 0139B4 70012DB4 A7AF0018 */ sh $t7, 0x18($sp) +/* 0139B8 70012DB8 A7AE001C */ sh $t6, 0x1c($sp) +/* 0139BC 70012DBC 27A50018 */ addiu $a1, $sp, 0x18 +/* 0139C0 70012DC0 24840048 */ addiu $a0, $a0, 0x48 +/* 0139C4 70012DC4 0C004BBF */ jal alEvtqPostEvent +/* 0139C8 70012DC8 00003025 */ move $a2, $zero +/* 0139CC 70012DCC 8FBF0014 */ lw $ra, 0x14($sp) +/* 0139D0 70012DD0 27BD0028 */ addiu $sp, $sp, 0x28 +/* 0139D4 70012DD4 03E00008 */ jr $ra +/* 0139D8 70012DD8 00000000 */ nop diff --git a/src/libultra/alCSPStop.s b/src/libultra/alCSPStop.s new file mode 100644 index 0000000..e3664ab --- /dev/null +++ b/src/libultra/alCSPStop.s @@ -0,0 +1,23 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel alCSPStop +/* 013970 70012D70 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 013974 70012D74 AFBF0014 */ sw $ra, 0x14($sp) +/* 013978 70012D78 240E0011 */ li $t6, 17 +/* 01397C 70012D7C A7AE0018 */ sh $t6, 0x18($sp) +/* 013980 70012D80 27A50018 */ addiu $a1, $sp, 0x18 +/* 013984 70012D84 24840048 */ addiu $a0, $a0, 0x48 +/* 013988 70012D88 0C004BBF */ jal alEvtqPostEvent +/* 01398C 70012D8C 00003025 */ move $a2, $zero +/* 013990 70012D90 8FBF0014 */ lw $ra, 0x14($sp) +/* 013994 70012D94 27BD0028 */ addiu $sp, $sp, 0x28 +/* 013998 70012D98 03E00008 */ jr $ra +/* 01399C 70012D9C 00000000 */ nop diff --git a/src/libultra/alCents2Ratio.s b/src/libultra/alCents2Ratio.s new file mode 100644 index 0000000..652d3fc --- /dev/null +++ b/src/libultra/alCents2Ratio.s @@ -0,0 +1,42 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alCents2Ratio +/* 0143C0 700137C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0143C4 700137C4 44811000 */ mtc1 $at, $f2 +/* 0143C8 700137C8 04800004 */ bltz $a0, .L700137DC +/* 0143CC 700137CC 3C018003 */ lui $at, %hi(F32_800296E4) +/* 0143D0 700137D0 3C018003 */ lui $at, %hi(F32_800296E0) +/* 0143D4 700137D4 10000003 */ b .L700137E4 +/* 0143D8 700137D8 C42096E0 */ lwc1 $f0, %lo(F32_800296E0)($at) +.L700137DC: +/* 0143DC 700137DC C42096E4 */ lwc1 $f0, %lo(F32_800296E4)($at) +/* 0143E0 700137E0 00042023 */ negu $a0, $a0 +.L700137E4: +/* 0143E4 700137E4 10800008 */ beqz $a0, .L70013808 +.L700137E8: +/* 0143E8 700137E8 308E0001 */ andi $t6, $a0, 1 +/* 0143EC 700137EC 11C00003 */ beqz $t6, .L700137FC +/* 0143F0 700137F0 00047843 */ sra $t7, $a0, 1 +/* 0143F4 700137F4 46001082 */ mul.s $f2, $f2, $f0 +/* 0143F8 700137F8 00000000 */ nop +.L700137FC: +/* 0143FC 700137FC 46000002 */ mul.s $f0, $f0, $f0 +/* 014400 70013800 15E0FFF9 */ bnez $t7, .L700137E8 +/* 014404 70013804 01E02025 */ move $a0, $t7 +.L70013808: +/* 014408 70013808 03E00008 */ jr $ra +/* 01440C 7001380C 46001006 */ mov.s $f0, $f2 + +.section .rodata +glabel F32_800296E0 +.float 1.0005778 +glabel F32_800296E4 +.float 0.99942255 + diff --git a/src/libultra/alEvtq.s b/src/libultra/alEvtq.s new file mode 100644 index 0000000..af9e72b --- /dev/null +++ b/src/libultra/alEvtq.s @@ -0,0 +1,244 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alEvtqFlushType +/* 0139E0 70012DE0 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 0139E4 70012DE4 AFB30020 */ sw $s3, 0x20($sp) +/* 0139E8 70012DE8 00059C00 */ sll $s3, $a1, 0x10 +/* 0139EC 70012DEC AFB2001C */ sw $s2, 0x1c($sp) +/* 0139F0 70012DF0 00809025 */ move $s2, $a0 +/* 0139F4 70012DF4 00137403 */ sra $t6, $s3, 0x10 +/* 0139F8 70012DF8 AFBF0024 */ sw $ra, 0x24($sp) +/* 0139FC 70012DFC 01C09825 */ move $s3, $t6 +/* 013A00 70012E00 AFB10018 */ sw $s1, 0x18($sp) +/* 013A04 70012E04 AFB00014 */ sw $s0, 0x14($sp) +/* 013A08 70012E08 AFA50044 */ sw $a1, 0x44($sp) +/* 013A0C 70012E0C 0C00374C */ jal osSetIntMask +/* 013A10 70012E10 24040001 */ li $a0, 1 +/* 013A14 70012E14 AFA2002C */ sw $v0, 0x2c($sp) +/* 013A18 70012E18 8E500008 */ lw $s0, 8($s2) +/* 013A1C 70012E1C 12000012 */ beqz $s0, .L70012E68 +/* 013A20 70012E20 00000000 */ nop +.L70012E24: +/* 013A24 70012E24 860F000C */ lh $t7, 0xc($s0) +/* 013A28 70012E28 8E110000 */ lw $s1, ($s0) +/* 013A2C 70012E2C 166F000C */ bne $s3, $t7, .L70012E60 +/* 013A30 70012E30 00000000 */ nop +/* 013A34 70012E34 12200005 */ beqz $s1, .L70012E4C +/* 013A38 70012E38 00000000 */ nop +/* 013A3C 70012E3C 8E380008 */ lw $t8, 8($s1) +/* 013A40 70012E40 8E190008 */ lw $t9, 8($s0) +/* 013A44 70012E44 03194021 */ addu $t0, $t8, $t9 +/* 013A48 70012E48 AE280008 */ sw $t0, 8($s1) +.L70012E4C: +/* 013A4C 70012E4C 0C003AA4 */ jal alUnlink +/* 013A50 70012E50 02002025 */ move $a0, $s0 +/* 013A54 70012E54 02002025 */ move $a0, $s0 +/* 013A58 70012E58 0C003AB0 */ jal alLink +/* 013A5C 70012E5C 02402825 */ move $a1, $s2 +.L70012E60: +/* 013A60 70012E60 1620FFF0 */ bnez $s1, .L70012E24 +/* 013A64 70012E64 02208025 */ move $s0, $s1 +.L70012E68: +/* 013A68 70012E68 0C00374C */ jal osSetIntMask +/* 013A6C 70012E6C 8FA4002C */ lw $a0, 0x2c($sp) +/* 013A70 70012E70 8FBF0024 */ lw $ra, 0x24($sp) +/* 013A74 70012E74 8FB00014 */ lw $s0, 0x14($sp) +/* 013A78 70012E78 8FB10018 */ lw $s1, 0x18($sp) +/* 013A7C 70012E7C 8FB2001C */ lw $s2, 0x1c($sp) +/* 013A80 70012E80 8FB30020 */ lw $s3, 0x20($sp) +/* 013A84 70012E84 03E00008 */ jr $ra +/* 013A88 70012E88 27BD0040 */ addiu $sp, $sp, 0x40 + +glabel alEvtqFlush +/* 013A8C 70012E8C 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 013A90 70012E90 AFB20020 */ sw $s2, 0x20($sp) +/* 013A94 70012E94 00809025 */ move $s2, $a0 +/* 013A98 70012E98 AFBF0024 */ sw $ra, 0x24($sp) +/* 013A9C 70012E9C AFB1001C */ sw $s1, 0x1c($sp) +/* 013AA0 70012EA0 AFB00018 */ sw $s0, 0x18($sp) +/* 013AA4 70012EA4 0C00374C */ jal osSetIntMask +/* 013AA8 70012EA8 24040001 */ li $a0, 1 +/* 013AAC 70012EAC AFA2002C */ sw $v0, 0x2c($sp) +/* 013AB0 70012EB0 8E500008 */ lw $s0, 8($s2) +/* 013AB4 70012EB4 12000009 */ beqz $s0, .L70012EDC +/* 013AB8 70012EB8 00000000 */ nop +.L70012EBC: +/* 013ABC 70012EBC 8E110000 */ lw $s1, ($s0) +/* 013AC0 70012EC0 0C003AA4 */ jal alUnlink +/* 013AC4 70012EC4 02002025 */ move $a0, $s0 +/* 013AC8 70012EC8 02002025 */ move $a0, $s0 +/* 013ACC 70012ECC 0C003AB0 */ jal alLink +/* 013AD0 70012ED0 02402825 */ move $a1, $s2 +/* 013AD4 70012ED4 1620FFF9 */ bnez $s1, .L70012EBC +/* 013AD8 70012ED8 02208025 */ move $s0, $s1 +.L70012EDC: +/* 013ADC 70012EDC 0C00374C */ jal osSetIntMask +/* 013AE0 70012EE0 8FA4002C */ lw $a0, 0x2c($sp) +/* 013AE4 70012EE4 8FBF0024 */ lw $ra, 0x24($sp) +/* 013AE8 70012EE8 8FB00018 */ lw $s0, 0x18($sp) +/* 013AEC 70012EEC 8FB1001C */ lw $s1, 0x1c($sp) +/* 013AF0 70012EF0 8FB20020 */ lw $s2, 0x20($sp) +/* 013AF4 70012EF4 03E00008 */ jr $ra +/* 013AF8 70012EF8 27BD0038 */ addiu $sp, $sp, 0x38 + +glabel alEvtqPostEvent +/* 013AFC 70012EFC 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 013B00 70012F00 AFBF0014 */ sw $ra, 0x14($sp) +/* 013B04 70012F04 AFA40030 */ sw $a0, 0x30($sp) +/* 013B08 70012F08 AFA50034 */ sw $a1, 0x34($sp) +/* 013B0C 70012F0C AFA00020 */ sw $zero, 0x20($sp) +/* 013B10 70012F10 24040001 */ li $a0, 1 +/* 013B14 70012F14 0C00374C */ jal osSetIntMask +/* 013B18 70012F18 AFA60038 */ sw $a2, 0x38($sp) +/* 013B1C 70012F1C 8FAE0030 */ lw $t6, 0x30($sp) +/* 013B20 70012F20 8FA70038 */ lw $a3, 0x38($sp) +/* 013B24 70012F24 00402825 */ move $a1, $v0 +/* 013B28 70012F28 8DC80000 */ lw $t0, ($t6) +/* 013B2C 70012F2C 15000005 */ bnez $t0, .L70012F44 +/* 013B30 70012F30 01002025 */ move $a0, $t0 +/* 013B34 70012F34 0C00374C */ jal osSetIntMask +/* 013B38 70012F38 00402025 */ move $a0, $v0 +/* 013B3C 70012F3C 10000035 */ b .L70013014 +/* 013B40 70012F40 8FBF0014 */ lw $ra, 0x14($sp) +.L70012F44: +/* 013B44 70012F44 AFA5001C */ sw $a1, 0x1c($sp) +/* 013B48 70012F48 AFA70038 */ sw $a3, 0x38($sp) +/* 013B4C 70012F4C 0C003AA4 */ jal alUnlink +/* 013B50 70012F50 AFA8002C */ sw $t0, 0x2c($sp) +/* 013B54 70012F54 8FA8002C */ lw $t0, 0x2c($sp) +/* 013B58 70012F58 8FA40034 */ lw $a0, 0x34($sp) +/* 013B5C 70012F5C 24060010 */ li $a2, 16 +/* 013B60 70012F60 0C0075A4 */ jal alCopy +/* 013B64 70012F64 2505000C */ addiu $a1, $t0, 0xc +/* 013B68 70012F68 8FA70038 */ lw $a3, 0x38($sp) +/* 013B6C 70012F6C 3C017FFF */ lui $at, (0x7FFFFFFF >> 16) # lui $at, 0x7fff +/* 013B70 70012F70 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 013B74 70012F74 14E10003 */ bne $a3, $at, .L70012F84 +/* 013B78 70012F78 8FA8002C */ lw $t0, 0x2c($sp) +/* 013B7C 70012F7C 240FFFFF */ li $t7, -1 +/* 013B80 70012F80 AFAF0020 */ sw $t7, 0x20($sp) +.L70012F84: +/* 013B84 70012F84 8FA20030 */ lw $v0, 0x30($sp) +/* 013B88 70012F88 2401FFF8 */ li $at, -8 +/* 013B8C 70012F8C 8FB80020 */ lw $t8, 0x20($sp) +/* 013B90 70012F90 1041001D */ beq $v0, $at, .L70013008 +/* 013B94 70012F94 24450008 */ addiu $a1, $v0, 8 +.L70012F98: +/* 013B98 70012F98 8CA20000 */ lw $v0, ($a1) +/* 013B9C 70012F9C 5440000B */ bnezl $v0, .L70012FCC +/* 013BA0 70012FA0 8C430008 */ lw $v1, 8($v0) +/* 013BA4 70012FA4 53000004 */ beql $t8, $zero, .L70012FB8 +/* 013BA8 70012FA8 AD070008 */ sw $a3, 8($t0) +/* 013BAC 70012FAC 10000002 */ b .L70012FB8 +/* 013BB0 70012FB0 AD000008 */ sw $zero, 8($t0) +/* 013BB4 70012FB4 AD070008 */ sw $a3, 8($t0) +.L70012FB8: +/* 013BB8 70012FB8 0C003AB0 */ jal alLink +/* 013BBC 70012FBC 01002025 */ move $a0, $t0 +/* 013BC0 70012FC0 10000011 */ b .L70013008 +/* 013BC4 70012FC4 00000000 */ nop +/* 013BC8 70012FC8 8C430008 */ lw $v1, 8($v0) +.L70012FCC: +/* 013BCC 70012FCC 00403025 */ move $a2, $v0 +/* 013BD0 70012FD0 00E3082A */ slt $at, $a3, $v1 +/* 013BD4 70012FD4 5020000A */ beql $at, $zero, .L70013000 +/* 013BD8 70012FD8 00402825 */ move $a1, $v0 +/* 013BDC 70012FDC AD070008 */ sw $a3, 8($t0) +/* 013BE0 70012FE0 8CD90008 */ lw $t9, 8($a2) +/* 013BE4 70012FE4 01002025 */ move $a0, $t0 +/* 013BE8 70012FE8 03274823 */ subu $t1, $t9, $a3 +/* 013BEC 70012FEC 0C003AB0 */ jal alLink +/* 013BF0 70012FF0 ACC90008 */ sw $t1, 8($a2) +/* 013BF4 70012FF4 10000004 */ b .L70013008 +/* 013BF8 70012FF8 00000000 */ nop +/* 013BFC 70012FFC 00402825 */ move $a1, $v0 +.L70013000: +/* 013C00 70013000 1440FFE5 */ bnez $v0, .L70012F98 +/* 013C04 70013004 00E33823 */ subu $a3, $a3, $v1 +.L70013008: +/* 013C08 70013008 0C00374C */ jal osSetIntMask +/* 013C0C 7001300C 8FA4001C */ lw $a0, 0x1c($sp) +/* 013C10 70013010 8FBF0014 */ lw $ra, 0x14($sp) +.L70013014: +/* 013C14 70013014 27BD0030 */ addiu $sp, $sp, 0x30 +/* 013C18 70013018 03E00008 */ jr $ra +/* 013C1C 7001301C 00000000 */ nop + +glabel alEvtqNextEvent +/* 013C20 70013020 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 013C24 70013024 AFBF001C */ sw $ra, 0x1c($sp) +/* 013C28 70013028 AFA40030 */ sw $a0, 0x30($sp) +/* 013C2C 7001302C AFB00018 */ sw $s0, 0x18($sp) +/* 013C30 70013030 AFA50034 */ sw $a1, 0x34($sp) +/* 013C34 70013034 0C00374C */ jal osSetIntMask +/* 013C38 70013038 24040001 */ li $a0, 1 +/* 013C3C 7001303C 8FAE0030 */ lw $t6, 0x30($sp) +/* 013C40 70013040 AFA20024 */ sw $v0, 0x24($sp) +/* 013C44 70013044 8FB80034 */ lw $t8, 0x34($sp) +/* 013C48 70013048 8DD00008 */ lw $s0, 8($t6) +/* 013C4C 7001304C 00001825 */ move $v1, $zero +/* 013C50 70013050 5200000D */ beql $s0, $zero, .L70013088 +/* 013C54 70013054 240FFFFF */ li $t7, -1 +/* 013C58 70013058 0C003AA4 */ jal alUnlink +/* 013C5C 7001305C 02002025 */ move $a0, $s0 +/* 013C60 70013060 2604000C */ addiu $a0, $s0, 0xc +/* 013C64 70013064 8FA50034 */ lw $a1, 0x34($sp) +/* 013C68 70013068 0C0075A4 */ jal alCopy +/* 013C6C 7001306C 24060010 */ li $a2, 16 +/* 013C70 70013070 02002025 */ move $a0, $s0 +/* 013C74 70013074 0C003AB0 */ jal alLink +/* 013C78 70013078 8FA50030 */ lw $a1, 0x30($sp) +/* 013C7C 7001307C 10000003 */ b .L7001308C +/* 013C80 70013080 8E030008 */ lw $v1, 8($s0) +/* 013C84 70013084 240FFFFF */ li $t7, -1 +.L70013088: +/* 013C88 70013088 A70F0000 */ sh $t7, ($t8) +.L7001308C: +/* 013C8C 7001308C 8FA40024 */ lw $a0, 0x24($sp) +/* 013C90 70013090 0C00374C */ jal osSetIntMask +/* 013C94 70013094 AFA30028 */ sw $v1, 0x28($sp) +/* 013C98 70013098 8FBF001C */ lw $ra, 0x1c($sp) +/* 013C9C 7001309C 8FA20028 */ lw $v0, 0x28($sp) +/* 013CA0 700130A0 8FB00018 */ lw $s0, 0x18($sp) +/* 013CA4 700130A4 03E00008 */ jr $ra +/* 013CA8 700130A8 27BD0030 */ addiu $sp, $sp, 0x30 + +glabel alEvtqNew +/* 013CAC 700130AC 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 013CB0 700130B0 AFB30020 */ sw $s3, 0x20($sp) +/* 013CB4 700130B4 AFB2001C */ sw $s2, 0x1c($sp) +/* 013CB8 700130B8 AFB00014 */ sw $s0, 0x14($sp) +/* 013CBC 700130BC AFBF0024 */ sw $ra, 0x24($sp) +/* 013CC0 700130C0 AFB10018 */ sw $s1, 0x18($sp) +/* 013CC4 700130C4 00809025 */ move $s2, $a0 +/* 013CC8 700130C8 00C09825 */ move $s3, $a2 +/* 013CCC 700130CC AC800010 */ sw $zero, 0x10($a0) +/* 013CD0 700130D0 AC800008 */ sw $zero, 8($a0) +/* 013CD4 700130D4 AC80000C */ sw $zero, 0xc($a0) +/* 013CD8 700130D8 AC800000 */ sw $zero, ($a0) +/* 013CDC 700130DC AC800004 */ sw $zero, 4($a0) +/* 013CE0 700130E0 18C00008 */ blez $a2, .L70013104 +/* 013CE4 700130E4 00008025 */ move $s0, $zero +/* 013CE8 700130E8 00A08825 */ move $s1, $a1 +.L700130EC: +/* 013CEC 700130EC 02202025 */ move $a0, $s1 +/* 013CF0 700130F0 0C003AB0 */ jal alLink +/* 013CF4 700130F4 02402825 */ move $a1, $s2 +/* 013CF8 700130F8 26100001 */ addiu $s0, $s0, 1 +/* 013CFC 700130FC 1613FFFB */ bne $s0, $s3, .L700130EC +/* 013D00 70013100 2631001C */ addiu $s1, $s1, 0x1c +.L70013104: +/* 013D04 70013104 8FBF0024 */ lw $ra, 0x24($sp) +/* 013D08 70013108 8FB00014 */ lw $s0, 0x14($sp) +/* 013D0C 7001310C 8FB10018 */ lw $s1, 0x18($sp) +/* 013D10 70013110 8FB2001C */ lw $s2, 0x1c($sp) +/* 013D14 70013114 8FB30020 */ lw $s3, 0x20($sp) +/* 013D18 70013118 03E00008 */ jr $ra +/* 013D1C 7001311C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/alHeapInit.s b/src/libultra/alHeapInit.s new file mode 100644 index 0000000..4902b32 --- /dev/null +++ b/src/libultra/alHeapInit.s @@ -0,0 +1,25 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alHeapInit +/* 011930 70010D30 24030010 */ li $v1, 16 +/* 011934 70010D34 30AE000F */ andi $t6, $a1, 0xf +/* 011938 70010D38 006E1023 */ subu $v0, $v1, $t6 +/* 01193C 70010D3C 10620003 */ beq $v1, $v0, .L70010D4C +/* 011940 70010D40 00A27821 */ addu $t7, $a1, $v0 +/* 011944 70010D44 10000002 */ b .L70010D50 +/* 011948 70010D48 AC8F0000 */ sw $t7, ($a0) +.L70010D4C: +/* 01194C 70010D4C AC850000 */ sw $a1, ($a0) +.L70010D50: +/* 011950 70010D50 8C980000 */ lw $t8, ($a0) +/* 011954 70010D54 AC860008 */ sw $a2, 8($a0) +/* 011958 70010D58 AC80000C */ sw $zero, 0xc($a0) +/* 01195C 70010D5C 03E00008 */ jr $ra +/* 011960 70010D60 AC980004 */ sw $t8, 4($a0) diff --git a/src/libultra/alInit.s b/src/libultra/alInit.s new file mode 100644 index 0000000..346a942 --- /dev/null +++ b/src/libultra/alInit.s @@ -0,0 +1,101 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel alUnlink +/* 00F690 7000EA90 8C820000 */ lw $v0, ($a0) +/* 00F694 7000EA94 50400004 */ beql $v0, $zero, .L7000EAA8 +/* 00F698 7000EA98 8C820004 */ lw $v0, 4($a0) +/* 00F69C 7000EA9C 8C8E0004 */ lw $t6, 4($a0) +/* 00F6A0 7000EAA0 AC4E0004 */ sw $t6, 4($v0) +/* 00F6A4 7000EAA4 8C820004 */ lw $v0, 4($a0) +.L7000EAA8: +/* 00F6A8 7000EAA8 10400003 */ beqz $v0, .L7000EAB8 +/* 00F6AC 7000EAAC 00000000 */ nop +/* 00F6B0 7000EAB0 8C8F0000 */ lw $t7, ($a0) +/* 00F6B4 7000EAB4 AC4F0000 */ sw $t7, ($v0) +.L7000EAB8: +/* 00F6B8 7000EAB8 03E00008 */ jr $ra +/* 00F6BC 7000EABC 00000000 */ nop + +glabel alLink +/* 00F6C0 7000EAC0 8CAE0000 */ lw $t6, ($a1) +/* 00F6C4 7000EAC4 AC850004 */ sw $a1, 4($a0) +/* 00F6C8 7000EAC8 AC8E0000 */ sw $t6, ($a0) +/* 00F6CC 7000EACC 8CA20000 */ lw $v0, ($a1) +/* 00F6D0 7000EAD0 10400002 */ beqz $v0, .L7000EADC +/* 00F6D4 7000EAD4 00000000 */ nop +/* 00F6D8 7000EAD8 AC440004 */ sw $a0, 4($v0) +.L7000EADC: +/* 00F6DC 7000EADC 03E00008 */ jr $ra +/* 00F6E0 7000EAE0 ACA40000 */ sw $a0, ($a1) + +glabel alClose +/* 00F6E4 7000EAE4 3C0E8002 */ lui $t6, %hi(alGlobals) +/* 00F6E8 7000EAE8 8DCE76E0 */ lw $t6, %lo(alGlobals)($t6) +/* 00F6EC 7000EAEC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 00F6F0 7000EAF0 AFBF0014 */ sw $ra, 0x14($sp) +/* 00F6F4 7000EAF4 51C00006 */ beql $t6, $zero, .L7000EB10 +/* 00F6F8 7000EAF8 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F6FC 7000EAFC 0C006438 */ jal alSynDelete +/* 00F700 7000EB00 00000000 */ nop +/* 00F704 7000EB04 3C018002 */ lui $at, %hi(alGlobals) +/* 00F708 7000EB08 AC2076E0 */ sw $zero, %lo(alGlobals)($at) +/* 00F70C 7000EB0C 8FBF0014 */ lw $ra, 0x14($sp) +.L7000EB10: +/* 00F710 7000EB10 27BD0018 */ addiu $sp, $sp, 0x18 +/* 00F714 7000EB14 03E00008 */ jr $ra +/* 00F718 7000EB18 00000000 */ nop + +glabel alInit +/* 00F71C 7000EB1C 3C028002 */ lui $v0, %hi(alGlobals) +/* 00F720 7000EB20 244276E0 */ addiu $v0, %lo(alGlobals) # addiu $v0, $v0, 0x76e0 +/* 00F724 7000EB24 8C4E0000 */ lw $t6, ($v0) +/* 00F728 7000EB28 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 00F72C 7000EB2C AFBF0014 */ sw $ra, 0x14($sp) +/* 00F730 7000EB30 55C00004 */ bnezl $t6, .L7000EB44 +/* 00F734 7000EB34 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F738 7000EB38 0C003CE8 */ jal alSynNew +/* 00F73C 7000EB3C AC440000 */ sw $a0, ($v0) +/* 00F740 7000EB40 8FBF0014 */ lw $ra, 0x14($sp) +.L7000EB44: +/* 00F744 7000EB44 27BD0018 */ addiu $sp, $sp, 0x18 +/* 00F748 7000EB48 03E00008 */ jr $ra +/* 00F74C 7000EB4C 00000000 */ nop + +.section .data +glabel alGlobals + .word 0 +.align 4 + +.section .text +glabel alHeapDBAlloc +/* 00F750 7000EB50 8FAE0010 */ lw $t6, 0x10($sp) +/* 00F754 7000EB54 AFA40000 */ sw $a0, ($sp) +/* 00F758 7000EB58 AFA50004 */ sw $a1, 4($sp) +/* 00F75C 7000EB5C 00EE0019 */ multu $a3, $t6 +/* 00F760 7000EB60 8CD90008 */ lw $t9, 8($a2) +/* 00F764 7000EB64 8CD80000 */ lw $t8, ($a2) +/* 00F768 7000EB68 8CC40004 */ lw $a0, 4($a2) +/* 00F76C 7000EB6C 2401FFF0 */ li $at, -16 +/* 00F770 7000EB70 03194021 */ addu $t0, $t8, $t9 +/* 00F774 7000EB74 00001825 */ move $v1, $zero +/* 00F778 7000EB78 00001012 */ mflo $v0 +/* 00F77C 7000EB7C 2442000F */ addiu $v0, $v0, 0xf +/* 00F780 7000EB80 00417824 */ and $t7, $v0, $at +/* 00F784 7000EB84 008F4821 */ addu $t1, $a0, $t7 +/* 00F788 7000EB88 0109082B */ sltu $at, $t0, $t1 +/* 00F78C 7000EB8C 14200003 */ bnez $at, .L7000EB9C +/* 00F790 7000EB90 008F5021 */ addu $t2, $a0, $t7 +/* 00F794 7000EB94 00801825 */ move $v1, $a0 +/* 00F798 7000EB98 ACCA0004 */ sw $t2, 4($a2) +.L7000EB9C: +/* 00F79C 7000EB9C 03E00008 */ jr $ra +/* 00F7A0 7000EBA0 00601025 */ move $v0, $v1 + diff --git a/src/libultra/alSeqpSetBank.s b/src/libultra/alSeqpSetBank.s new file mode 100644 index 0000000..d01eba0 --- /dev/null +++ b/src/libultra/alSeqpSetBank.s @@ -0,0 +1,23 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSeqpSetBank +/* 012DF0 700121F0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 012DF4 700121F4 AFBF0014 */ sw $ra, 0x14($sp) +/* 012DF8 700121F8 240E000E */ li $t6, 14 +/* 012DFC 700121FC AFA5001C */ sw $a1, 0x1c($sp) +/* 012E00 70012200 A7AE0018 */ sh $t6, 0x18($sp) +/* 012E04 70012204 27A50018 */ addiu $a1, $sp, 0x18 +/* 012E08 70012208 24840048 */ addiu $a0, $a0, 0x48 +/* 012E0C 7001220C 0C004BBF */ jal alEvtqPostEvent +/* 012E10 70012210 00003025 */ move $a2, $zero +/* 012E14 70012214 8FBF0014 */ lw $ra, 0x14($sp) +/* 012E18 70012218 27BD0028 */ addiu $sp, $sp, 0x28 +/* 012E1C 7001221C 03E00008 */ jr $ra +/* 012E20 70012220 00000000 */ nop diff --git a/src/libultra/alSynAddPlayer.s b/src/libultra/alSynAddPlayer.s new file mode 100644 index 0000000..f385877 --- /dev/null +++ b/src/libultra/alSynAddPlayer.s @@ -0,0 +1,30 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynAddPlayer +/* 013D20 70013120 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 013D24 70013124 AFBF0014 */ sw $ra, 0x14($sp) +/* 013D28 70013128 00803025 */ move $a2, $a0 +/* 013D2C 7001312C AFA60018 */ sw $a2, 0x18($sp) +/* 013D30 70013130 24040001 */ li $a0, 1 +/* 013D34 70013134 0C00374C */ jal osSetIntMask +/* 013D38 70013138 AFA5001C */ sw $a1, 0x1c($sp) +/* 013D3C 7001313C 8FA60018 */ lw $a2, 0x18($sp) +/* 013D40 70013140 8FA5001C */ lw $a1, 0x1c($sp) +/* 013D44 70013144 00402025 */ move $a0, $v0 +/* 013D48 70013148 8CCE0020 */ lw $t6, 0x20($a2) +/* 013D4C 7001314C ACAE0010 */ sw $t6, 0x10($a1) +/* 013D50 70013150 8CCF0000 */ lw $t7, ($a2) +/* 013D54 70013154 ACAF0000 */ sw $t7, ($a1) +/* 013D58 70013158 0C00374C */ jal osSetIntMask +/* 013D5C 7001315C ACC50000 */ sw $a1, ($a2) +/* 013D60 70013160 8FBF0014 */ lw $ra, 0x14($sp) +/* 013D64 70013164 27BD0018 */ addiu $sp, $sp, 0x18 +/* 013D68 70013168 03E00008 */ jr $ra +/* 013D6C 7001316C 00000000 */ nop diff --git a/src/libultra/alSynAllocVoice.s b/src/libultra/alSynAllocVoice.s new file mode 100644 index 0000000..2a27082 --- /dev/null +++ b/src/libultra/alSynAllocVoice.s @@ -0,0 +1,160 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel _allocatePVoice +/* 013D70 70013170 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 013D74 70013174 AFBF0014 */ sw $ra, 0x14($sp) +/* 013D78 70013178 AFA60030 */ sw $a2, 0x30($sp) +/* 013D7C 7001317C 8C870014 */ lw $a3, 0x14($a0) +/* 013D80 70013180 00067400 */ sll $t6, $a2, 0x10 +/* 013D84 70013184 000E3403 */ sra $a2, $t6, 0x10 +/* 013D88 70013188 00804025 */ move $t0, $a0 +/* 013D8C 7001318C 10E0000D */ beqz $a3, .L700131C4 +/* 013D90 70013190 00001825 */ move $v1, $zero +/* 013D94 70013194 ACA70000 */ sw $a3, ($a1) +/* 013D98 70013198 AFA80028 */ sw $t0, 0x28($sp) +/* 013D9C 7001319C AFA70024 */ sw $a3, 0x24($sp) +/* 013DA0 700131A0 AFA0001C */ sw $zero, 0x1c($sp) +/* 013DA4 700131A4 0C003AA4 */ jal alUnlink +/* 013DA8 700131A8 00E02025 */ move $a0, $a3 +/* 013DAC 700131AC 8FA80028 */ lw $t0, 0x28($sp) +/* 013DB0 700131B0 8FA40024 */ lw $a0, 0x24($sp) +/* 013DB4 700131B4 0C003AB0 */ jal alLink +/* 013DB8 700131B8 2505000C */ addiu $a1, $t0, 0xc +/* 013DBC 700131BC 10000021 */ b .L70013244 +/* 013DC0 700131C0 8FA3001C */ lw $v1, 0x1c($sp) +.L700131C4: +/* 013DC4 700131C4 8D070004 */ lw $a3, 4($t0) +/* 013DC8 700131C8 10E0000C */ beqz $a3, .L700131FC +/* 013DCC 700131CC 00E02025 */ move $a0, $a3 +/* 013DD0 700131D0 ACA70000 */ sw $a3, ($a1) +/* 013DD4 700131D4 AFA80028 */ sw $t0, 0x28($sp) +/* 013DD8 700131D8 AFA70024 */ sw $a3, 0x24($sp) +/* 013DDC 700131DC 0C003AA4 */ jal alUnlink +/* 013DE0 700131E0 AFA3001C */ sw $v1, 0x1c($sp) +/* 013DE4 700131E4 8FA80028 */ lw $t0, 0x28($sp) +/* 013DE8 700131E8 8FA40024 */ lw $a0, 0x24($sp) +/* 013DEC 700131EC 0C003AB0 */ jal alLink +/* 013DF0 700131F0 2505000C */ addiu $a1, $t0, 0xc +/* 013DF4 700131F4 10000013 */ b .L70013244 +/* 013DF8 700131F8 8FA3001C */ lw $v1, 0x1c($sp) +.L700131FC: +/* 013DFC 700131FC 8D07000C */ lw $a3, 0xc($t0) +/* 013E00 70013200 50E00011 */ beql $a3, $zero, .L70013248 +/* 013E04 70013204 8FBF0014 */ lw $ra, 0x14($sp) +/* 013E08 70013208 8CF80008 */ lw $t8, 8($a3) +.L7001320C: +/* 013E0C 7001320C 87190016 */ lh $t9, 0x16($t8) +/* 013E10 70013210 00D9082A */ slt $at, $a2, $t9 +/* 013E14 70013214 54200009 */ bnezl $at, .L7001323C +/* 013E18 70013218 8CE70000 */ lw $a3, ($a3) +/* 013E1C 7001321C 8CE900D8 */ lw $t1, 0xd8($a3) +/* 013E20 70013220 55200006 */ bnezl $t1, .L7001323C +/* 013E24 70013224 8CE70000 */ lw $a3, ($a3) +/* 013E28 70013228 ACA70000 */ sw $a3, ($a1) +/* 013E2C 7001322C 8CEA0008 */ lw $t2, 8($a3) +/* 013E30 70013230 24030001 */ li $v1, 1 +/* 013E34 70013234 85460016 */ lh $a2, 0x16($t2) +/* 013E38 70013238 8CE70000 */ lw $a3, ($a3) +.L7001323C: +/* 013E3C 7001323C 54E0FFF3 */ bnezl $a3, .L7001320C +/* 013E40 70013240 8CF80008 */ lw $t8, 8($a3) +.L70013244: +/* 013E44 70013244 8FBF0014 */ lw $ra, 0x14($sp) +.L70013248: +/* 013E48 70013248 27BD0028 */ addiu $sp, $sp, 0x28 +/* 013E4C 7001324C 00601025 */ move $v0, $v1 +/* 013E50 70013250 03E00008 */ jr $ra +/* 013E54 70013254 00000000 */ nop + +glabel alSynAllocVoice +/* 013E58 70013258 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 013E5C 7001325C AFBF001C */ sw $ra, 0x1c($sp) +/* 013E60 70013260 AFB00018 */ sw $s0, 0x18($sp) +/* 013E64 70013264 AFA40030 */ sw $a0, 0x30($sp) +/* 013E68 70013268 AFA0002C */ sw $zero, 0x2c($sp) +/* 013E6C 7001326C 84CE0000 */ lh $t6, ($a2) +/* 013E70 70013270 00A08025 */ move $s0, $a1 +/* 013E74 70013274 A4AE0016 */ sh $t6, 0x16($a1) +/* 013E78 70013278 90CF0004 */ lbu $t7, 4($a2) +/* 013E7C 7001327C ACA0000C */ sw $zero, 0xc($a1) +/* 013E80 70013280 A4AF001A */ sh $t7, 0x1a($a1) +/* 013E84 70013284 84D80002 */ lh $t8, 2($a2) +/* 013E88 70013288 A4A00014 */ sh $zero, 0x14($a1) +/* 013E8C 7001328C ACA00008 */ sw $zero, 8($a1) +/* 013E90 70013290 A4B80018 */ sh $t8, 0x18($a1) +/* 013E94 70013294 84C60000 */ lh $a2, ($a2) +/* 013E98 70013298 8FA40030 */ lw $a0, 0x30($sp) +/* 013E9C 7001329C 0C004C5C */ jal _allocatePVoice +/* 013EA0 700132A0 27A5002C */ addiu $a1, $sp, 0x2c +/* 013EA4 700132A4 8FB9002C */ lw $t9, 0x2c($sp) +/* 013EA8 700132A8 53200035 */ beql $t9, $zero, .L70013380 +/* 013EAC 700132AC 8FA2002C */ lw $v0, 0x2c($sp) +/* 013EB0 700132B0 1040002C */ beqz $v0, .L70013364 +/* 013EB4 700132B4 8F24000C */ lw $a0, 0xc($t9) +/* 013EB8 700132B8 24080200 */ li $t0, 512 +/* 013EBC 700132BC AF2800D8 */ sw $t0, 0xd8($t9) +/* 013EC0 700132C0 8FA9002C */ lw $t1, 0x2c($sp) +/* 013EC4 700132C4 8D2A0008 */ lw $t2, 8($t1) +/* 013EC8 700132C8 AD400008 */ sw $zero, 8($t2) +/* 013ECC 700132CC 0C003C34 */ jal __allocParam +/* 013ED0 700132D0 AFA40028 */ sw $a0, 0x28($sp) +/* 013ED4 700132D4 8FAB0030 */ lw $t3, 0x30($sp) +/* 013ED8 700132D8 8FA40028 */ lw $a0, 0x28($sp) +/* 013EDC 700132DC 240D000B */ li $t5, 11 +/* 013EE0 700132E0 8D6C001C */ lw $t4, 0x1c($t3) +/* 013EE4 700132E4 A44D0008 */ sh $t5, 8($v0) +/* 013EE8 700132E8 AC40000C */ sw $zero, 0xc($v0) +/* 013EEC 700132EC AC4C0004 */ sw $t4, 4($v0) +/* 013EF0 700132F0 8FAE002C */ lw $t6, 0x2c($sp) +/* 013EF4 700132F4 24050003 */ li $a1, 3 +/* 013EF8 700132F8 00403025 */ move $a2, $v0 +/* 013EFC 700132FC 8DCF00D8 */ lw $t7, 0xd8($t6) +/* 013F00 70013300 25F8FFC0 */ addiu $t8, $t7, -0x40 +/* 013F04 70013304 AC580010 */ sw $t8, 0x10($v0) +/* 013F08 70013308 8C990008 */ lw $t9, 8($a0) +/* 013F0C 7001330C 0320F809 */ jalr $t9 +/* 013F10 70013310 00000000 */ nop +/* 013F14 70013314 0C003C34 */ jal __allocParam +/* 013F18 70013318 00000000 */ nop +/* 013F1C 7001331C 8FA40028 */ lw $a0, 0x28($sp) +/* 013F20 70013320 10400012 */ beqz $v0, .L7001336C +/* 013F24 70013324 00403025 */ move $a2, $v0 +/* 013F28 70013328 8FA80030 */ lw $t0, 0x30($sp) +/* 013F2C 7001332C 8FAA002C */ lw $t2, 0x2c($sp) +/* 013F30 70013330 240D000F */ li $t5, 15 +/* 013F34 70013334 8D09001C */ lw $t1, 0x1c($t0) +/* 013F38 70013338 8D4B00D8 */ lw $t3, 0xd8($t2) +/* 013F3C 7001333C A44D0008 */ sh $t5, 8($v0) +/* 013F40 70013340 AC400000 */ sw $zero, ($v0) +/* 013F44 70013344 012B6021 */ addu $t4, $t1, $t3 +/* 013F48 70013348 AC4C0004 */ sw $t4, 4($v0) +/* 013F4C 7001334C 8C990008 */ lw $t9, 8($a0) +/* 013F50 70013350 24050003 */ li $a1, 3 +/* 013F54 70013354 0320F809 */ jalr $t9 +/* 013F58 70013358 00000000 */ nop +/* 013F5C 7001335C 10000004 */ b .L70013370 +/* 013F60 70013360 8FAF002C */ lw $t7, 0x2c($sp) +.L70013364: +/* 013F64 70013364 8FAE002C */ lw $t6, 0x2c($sp) +/* 013F68 70013368 ADC000D8 */ sw $zero, 0xd8($t6) +.L7001336C: +/* 013F6C 7001336C 8FAF002C */ lw $t7, 0x2c($sp) +.L70013370: +/* 013F70 70013370 ADF00008 */ sw $s0, 8($t7) +/* 013F74 70013374 8FB8002C */ lw $t8, 0x2c($sp) +/* 013F78 70013378 AE180008 */ sw $t8, 8($s0) +/* 013F7C 7001337C 8FA2002C */ lw $v0, 0x2c($sp) +.L70013380: +/* 013F80 70013380 8FBF001C */ lw $ra, 0x1c($sp) +/* 013F84 70013384 8FB00018 */ lw $s0, 0x18($sp) +/* 013F88 70013388 0002402B */ sltu $t0, $zero, $v0 +/* 013F8C 7001338C 01001025 */ move $v0, $t0 +/* 013F90 70013390 03E00008 */ jr $ra +/* 013F94 70013394 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/src/libultra/alSynFreeVoice.s b/src/libultra/alSynFreeVoice.s new file mode 100644 index 0000000..40b7d92 --- /dev/null +++ b/src/libultra/alSynFreeVoice.s @@ -0,0 +1,58 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynFreeVoice +/* 014310 70013710 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 014314 70013714 AFBF0014 */ sw $ra, 0x14($sp) +/* 014318 70013718 8CA60008 */ lw $a2, 8($a1) +/* 01431C 7001371C 00804025 */ move $t0, $a0 +/* 014320 70013720 00A03825 */ move $a3, $a1 +/* 014324 70013724 50C00023 */ beql $a2, $zero, .L700137B4 +/* 014328 70013728 8FBF0014 */ lw $ra, 0x14($sp) +/* 01432C 7001372C 8CCE00D8 */ lw $t6, 0xd8($a2) +/* 014330 70013730 51C0001A */ beql $t6, $zero, .L7001379C +/* 014334 70013734 01002025 */ move $a0, $t0 +/* 014338 70013738 AFA5001C */ sw $a1, 0x1c($sp) +/* 01433C 7001373C 0C003C34 */ jal __allocParam +/* 014340 70013740 AFA40018 */ sw $a0, 0x18($sp) +/* 014344 70013744 8FA7001C */ lw $a3, 0x1c($sp) +/* 014348 70013748 8FA80018 */ lw $t0, 0x18($sp) +/* 01434C 7001374C 10400018 */ beqz $v0, .L700137B0 +/* 014350 70013750 00403025 */ move $a2, $v0 +/* 014354 70013754 8CF80008 */ lw $t8, 8($a3) +/* 014358 70013758 8D0F001C */ lw $t7, 0x1c($t0) +/* 01435C 7001375C 24050003 */ li $a1, 3 +/* 014360 70013760 8F1900D8 */ lw $t9, 0xd8($t8) +/* 014364 70013764 A4400008 */ sh $zero, 8($v0) +/* 014368 70013768 01F94821 */ addu $t1, $t7, $t9 +/* 01436C 7001376C AC490004 */ sw $t1, 4($v0) +/* 014370 70013770 8CEA0008 */ lw $t2, 8($a3) +/* 014374 70013774 AC4A000C */ sw $t2, 0xc($v0) +/* 014378 70013778 8CEB0008 */ lw $t3, 8($a3) +/* 01437C 7001377C 8D64000C */ lw $a0, 0xc($t3) +/* 014380 70013780 AFA7001C */ sw $a3, 0x1c($sp) +/* 014384 70013784 8C990008 */ lw $t9, 8($a0) +/* 014388 70013788 0320F809 */ jalr $t9 +/* 01438C 7001378C 00000000 */ nop +/* 014390 70013790 10000006 */ b .L700137AC +/* 014394 70013794 8FA7001C */ lw $a3, 0x1c($sp) +/* 014398 70013798 01002025 */ move $a0, $t0 +.L7001379C: +/* 01439C 7001379C 00C02825 */ move $a1, $a2 +/* 0143A0 700137A0 0C003C08 */ jal _freePVoice +/* 0143A4 700137A4 AFA7001C */ sw $a3, 0x1c($sp) +/* 0143A8 700137A8 8FA7001C */ lw $a3, 0x1c($sp) +.L700137AC: +/* 0143AC 700137AC ACE00008 */ sw $zero, 8($a3) +.L700137B0: +/* 0143B0 700137B0 8FBF0014 */ lw $ra, 0x14($sp) +.L700137B4: +/* 0143B4 700137B4 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0143B8 700137B8 03E00008 */ jr $ra +/* 0143BC 700137BC 00000000 */ nop diff --git a/src/libultra/alSynSetFXMix.s b/src/libultra/alSynSetFXMix.s new file mode 100644 index 0000000..66b9f1b --- /dev/null +++ b/src/libultra/alSynSetFXMix.s @@ -0,0 +1,51 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynSetFXMix +/* 0141F0 700135F0 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0141F4 700135F4 AFBF0014 */ sw $ra, 0x14($sp) +/* 0141F8 700135F8 AFA40018 */ sw $a0, 0x18($sp) +/* 0141FC 700135FC AFA60020 */ sw $a2, 0x20($sp) +/* 014200 70013600 8CAE0008 */ lw $t6, 8($a1) +/* 014204 70013604 51C0001C */ beql $t6, $zero, .L70013678 +/* 014208 70013608 8FBF0014 */ lw $ra, 0x14($sp) +/* 01420C 7001360C 0C003C34 */ jal __allocParam +/* 014210 70013610 AFA5001C */ sw $a1, 0x1c($sp) +/* 014214 70013614 8FA7001C */ lw $a3, 0x1c($sp) +/* 014218 70013618 10400016 */ beqz $v0, .L70013674 +/* 01421C 7001361C 00403025 */ move $a2, $v0 +/* 014220 70013620 8FAF0018 */ lw $t7, 0x18($sp) +/* 014224 70013624 8CF90008 */ lw $t9, 8($a3) +/* 014228 70013628 240A0010 */ li $t2, 16 +/* 01422C 7001362C 8DF8001C */ lw $t8, 0x1c($t7) +/* 014230 70013630 8F2800D8 */ lw $t0, 0xd8($t9) +/* 014234 70013634 A44A0008 */ sh $t2, 8($v0) +/* 014238 70013638 03084821 */ addu $t1, $t8, $t0 +/* 01423C 7001363C AC490004 */ sw $t1, 4($v0) +/* 014240 70013640 93A30023 */ lbu $v1, 0x23($sp) +/* 014244 70013644 04610003 */ bgez $v1, .L70013654 +/* 014248 70013648 00035823 */ negu $t3, $v1 +/* 01424C 7001364C 10000002 */ b .L70013658 +/* 014250 70013650 AC4B000C */ sw $t3, 0xc($v0) +.L70013654: +/* 014254 70013654 AC43000C */ sw $v1, 0xc($v0) +.L70013658: +/* 014258 70013658 ACC00000 */ sw $zero, ($a2) +/* 01425C 7001365C 8CEC0008 */ lw $t4, 8($a3) +/* 014260 70013660 24050003 */ li $a1, 3 +/* 014264 70013664 8D84000C */ lw $a0, 0xc($t4) +/* 014268 70013668 8C990008 */ lw $t9, 8($a0) +/* 01426C 7001366C 0320F809 */ jalr $t9 +/* 014270 70013670 00000000 */ nop +.L70013674: +/* 014274 70013674 8FBF0014 */ lw $ra, 0x14($sp) +.L70013678: +/* 014278 70013678 27BD0018 */ addiu $sp, $sp, 0x18 +/* 01427C 7001367C 03E00008 */ jr $ra +/* 014280 70013680 00000000 */ nop diff --git a/src/libultra/alSynSetPan.s b/src/libultra/alSynSetPan.s new file mode 100644 index 0000000..11b2318 --- /dev/null +++ b/src/libultra/alSynSetPan.s @@ -0,0 +1,45 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynSetPan +/* 0140D0 700134D0 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 0140D4 700134D4 AFBF0014 */ sw $ra, 0x14($sp) +/* 0140D8 700134D8 AFA40018 */ sw $a0, 0x18($sp) +/* 0140DC 700134DC AFA60020 */ sw $a2, 0x20($sp) +/* 0140E0 700134E0 8CAE0008 */ lw $t6, 8($a1) +/* 0140E4 700134E4 51C00018 */ beql $t6, $zero, .L70013548 +/* 0140E8 700134E8 8FBF0014 */ lw $ra, 0x14($sp) +/* 0140EC 700134EC 0C003C34 */ jal __allocParam +/* 0140F0 700134F0 AFA5001C */ sw $a1, 0x1c($sp) +/* 0140F4 700134F4 8FA7001C */ lw $a3, 0x1c($sp) +/* 0140F8 700134F8 10400012 */ beqz $v0, .L70013544 +/* 0140FC 700134FC 00403025 */ move $a2, $v0 +/* 014100 70013500 8FAF0018 */ lw $t7, 0x18($sp) +/* 014104 70013504 8CF90008 */ lw $t9, 8($a3) +/* 014108 70013508 240A000C */ li $t2, 12 +/* 01410C 7001350C 8DF8001C */ lw $t8, 0x1c($t7) +/* 014110 70013510 8F2800D8 */ lw $t0, 0xd8($t9) +/* 014114 70013514 A44A0008 */ sh $t2, 8($v0) +/* 014118 70013518 24050003 */ li $a1, 3 +/* 01411C 7001351C 03084821 */ addu $t1, $t8, $t0 +/* 014120 70013520 AC490004 */ sw $t1, 4($v0) +/* 014124 70013524 93AB0023 */ lbu $t3, 0x23($sp) +/* 014128 70013528 AC400000 */ sw $zero, ($v0) +/* 01412C 7001352C AC4B000C */ sw $t3, 0xc($v0) +/* 014130 70013530 8CEC0008 */ lw $t4, 8($a3) +/* 014134 70013534 8D84000C */ lw $a0, 0xc($t4) +/* 014138 70013538 8C990008 */ lw $t9, 8($a0) +/* 01413C 7001353C 0320F809 */ jalr $t9 +/* 014140 70013540 00000000 */ nop +.L70013544: +/* 014144 70013544 8FBF0014 */ lw $ra, 0x14($sp) +.L70013548: +/* 014148 70013548 27BD0018 */ addiu $sp, $sp, 0x18 +/* 01414C 7001354C 03E00008 */ jr $ra +/* 014150 70013550 00000000 */ nop diff --git a/src/libultra/alSynSetPitch.s b/src/libultra/alSynSetPitch.s new file mode 100644 index 0000000..4c2a977 --- /dev/null +++ b/src/libultra/alSynSetPitch.s @@ -0,0 +1,45 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynSetPitch +/* 014160 70013560 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 014164 70013564 AFBF0014 */ sw $ra, 0x14($sp) +/* 014168 70013568 AFA40018 */ sw $a0, 0x18($sp) +/* 01416C 7001356C AFA60020 */ sw $a2, 0x20($sp) +/* 014170 70013570 8CAE0008 */ lw $t6, 8($a1) +/* 014174 70013574 51C00018 */ beql $t6, $zero, .L700135D8 +/* 014178 70013578 8FBF0014 */ lw $ra, 0x14($sp) +/* 01417C 7001357C 0C003C34 */ jal __allocParam +/* 014180 70013580 AFA5001C */ sw $a1, 0x1c($sp) +/* 014184 70013584 8FA7001C */ lw $a3, 0x1c($sp) +/* 014188 70013588 10400012 */ beqz $v0, .L700135D4 +/* 01418C 7001358C 00403025 */ move $a2, $v0 +/* 014190 70013590 8FAF0018 */ lw $t7, 0x18($sp) +/* 014194 70013594 8CF90008 */ lw $t9, 8($a3) +/* 014198 70013598 240A0007 */ li $t2, 7 +/* 01419C 7001359C 8DF8001C */ lw $t8, 0x1c($t7) +/* 0141A0 700135A0 8F2800D8 */ lw $t0, 0xd8($t9) +/* 0141A4 700135A4 A44A0008 */ sh $t2, 8($v0) +/* 0141A8 700135A8 24050003 */ li $a1, 3 +/* 0141AC 700135AC 03084821 */ addu $t1, $t8, $t0 +/* 0141B0 700135B0 AC490004 */ sw $t1, 4($v0) +/* 0141B4 700135B4 C7A40020 */ lwc1 $f4, 0x20($sp) +/* 0141B8 700135B8 AC400000 */ sw $zero, ($v0) +/* 0141BC 700135BC E444000C */ swc1 $f4, 0xc($v0) +/* 0141C0 700135C0 8CEB0008 */ lw $t3, 8($a3) +/* 0141C4 700135C4 8D64000C */ lw $a0, 0xc($t3) +/* 0141C8 700135C8 8C990008 */ lw $t9, 8($a0) +/* 0141CC 700135CC 0320F809 */ jalr $t9 +/* 0141D0 700135D0 00000000 */ nop +.L700135D4: +/* 0141D4 700135D4 8FBF0014 */ lw $ra, 0x14($sp) +.L700135D8: +/* 0141D8 700135D8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0141DC 700135DC 03E00008 */ jr $ra +/* 0141E0 700135E0 00000000 */ nop diff --git a/src/libultra/alSynSetVol.s b/src/libultra/alSynSetVol.s new file mode 100644 index 0000000..2f53d51 --- /dev/null +++ b/src/libultra/alSynSetVol.s @@ -0,0 +1,51 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynSetVol +/* 013FA0 700133A0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 013FA4 700133A4 AFBF0014 */ sw $ra, 0x14($sp) +/* 013FA8 700133A8 AFA50024 */ sw $a1, 0x24($sp) +/* 013FAC 700133AC AFA60028 */ sw $a2, 0x28($sp) +/* 013FB0 700133B0 AFA7002C */ sw $a3, 0x2c($sp) +/* 013FB4 700133B4 8CAF0008 */ lw $t7, 8($a1) +/* 013FB8 700133B8 51E0001D */ beql $t7, $zero, .L70013430 +/* 013FBC 700133BC 8FBF0014 */ lw $ra, 0x14($sp) +/* 013FC0 700133C0 0C003C34 */ jal __allocParam +/* 013FC4 700133C4 AFA40020 */ sw $a0, 0x20($sp) +/* 013FC8 700133C8 10400018 */ beqz $v0, .L7001342C +/* 013FCC 700133CC 8FA40020 */ lw $a0, 0x20($sp) +/* 013FD0 700133D0 8FB90024 */ lw $t9, 0x24($sp) +/* 013FD4 700133D4 8C98001C */ lw $t8, 0x1c($a0) +/* 013FD8 700133D8 240B000B */ li $t3, 11 +/* 013FDC 700133DC 8F280008 */ lw $t0, 8($t9) +/* 013FE0 700133E0 8D0900D8 */ lw $t1, 0xd8($t0) +/* 013FE4 700133E4 A44B0008 */ sh $t3, 8($v0) +/* 013FE8 700133E8 03095021 */ addu $t2, $t8, $t1 +/* 013FEC 700133EC AC4A0004 */ sw $t2, 4($v0) +/* 013FF0 700133F0 87AC002A */ lh $t4, 0x2a($sp) +/* 013FF4 700133F4 AC4C000C */ sw $t4, 0xc($v0) +/* 013FF8 700133F8 AFA2001C */ sw $v0, 0x1c($sp) +/* 013FFC 700133FC 0C003BF2 */ jal _timeToSamples +/* 014000 70013400 8FA5002C */ lw $a1, 0x2c($sp) +/* 014004 70013404 8FA6001C */ lw $a2, 0x1c($sp) +/* 014008 70013408 24050003 */ li $a1, 3 +/* 01400C 7001340C ACC20010 */ sw $v0, 0x10($a2) +/* 014010 70013410 ACC00000 */ sw $zero, ($a2) +/* 014014 70013414 8FAD0024 */ lw $t5, 0x24($sp) +/* 014018 70013418 8DAE0008 */ lw $t6, 8($t5) +/* 01401C 7001341C 8DC4000C */ lw $a0, 0xc($t6) +/* 014020 70013420 8C990008 */ lw $t9, 8($a0) +/* 014024 70013424 0320F809 */ jalr $t9 +/* 014028 70013428 00000000 */ nop +.L7001342C: +/* 01402C 7001342C 8FBF0014 */ lw $ra, 0x14($sp) +.L70013430: +/* 014030 70013430 27BD0020 */ addiu $sp, $sp, 0x20 +/* 014034 70013434 03E00008 */ jr $ra +/* 014038 70013438 00000000 */ nop diff --git a/src/libultra/alSynStartVoice.s b/src/libultra/alSynStartVoice.s new file mode 100644 index 0000000..9922f3b --- /dev/null +++ b/src/libultra/alSynStartVoice.s @@ -0,0 +1,47 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynStartVoice +/* 014040 70013440 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 014044 70013444 AFBF0014 */ sw $ra, 0x14($sp) +/* 014048 70013448 AFA40018 */ sw $a0, 0x18($sp) +/* 01404C 7001344C AFA60020 */ sw $a2, 0x20($sp) +/* 014050 70013450 8CAE0008 */ lw $t6, 8($a1) +/* 014054 70013454 51C0001A */ beql $t6, $zero, .L700134C0 +/* 014058 70013458 8FBF0014 */ lw $ra, 0x14($sp) +/* 01405C 7001345C 0C003C34 */ jal __allocParam +/* 014060 70013460 AFA5001C */ sw $a1, 0x1c($sp) +/* 014064 70013464 8FA7001C */ lw $a3, 0x1c($sp) +/* 014068 70013468 10400014 */ beqz $v0, .L700134BC +/* 01406C 7001346C 00403025 */ move $a2, $v0 +/* 014070 70013470 8FAF0018 */ lw $t7, 0x18($sp) +/* 014074 70013474 8CF90008 */ lw $t9, 8($a3) +/* 014078 70013478 240A000E */ li $t2, 14 +/* 01407C 7001347C 8DF8001C */ lw $t8, 0x1c($t7) +/* 014080 70013480 8F2800D8 */ lw $t0, 0xd8($t9) +/* 014084 70013484 A44A0008 */ sh $t2, 8($v0) +/* 014088 70013488 24050003 */ li $a1, 3 +/* 01408C 7001348C 03084821 */ addu $t1, $t8, $t0 +/* 014090 70013490 AC490004 */ sw $t1, 4($v0) +/* 014094 70013494 8FAB0020 */ lw $t3, 0x20($sp) +/* 014098 70013498 AC400000 */ sw $zero, ($v0) +/* 01409C 7001349C AC4B000C */ sw $t3, 0xc($v0) +/* 0140A0 700134A0 84EC001A */ lh $t4, 0x1a($a3) +/* 0140A4 700134A4 A44C000A */ sh $t4, 0xa($v0) +/* 0140A8 700134A8 8CED0008 */ lw $t5, 8($a3) +/* 0140AC 700134AC 8DA4000C */ lw $a0, 0xc($t5) +/* 0140B0 700134B0 8C990008 */ lw $t9, 8($a0) +/* 0140B4 700134B4 0320F809 */ jalr $t9 +/* 0140B8 700134B8 00000000 */ nop +.L700134BC: +/* 0140BC 700134BC 8FBF0014 */ lw $ra, 0x14($sp) +.L700134C0: +/* 0140C0 700134C0 27BD0018 */ addiu $sp, $sp, 0x18 +/* 0140C4 700134C4 03E00008 */ jr $ra +/* 0140C8 700134C8 00000000 */ nop diff --git a/src/libultra/alSynStopVoice.s b/src/libultra/alSynStopVoice.s new file mode 100644 index 0000000..f0e8d19 --- /dev/null +++ b/src/libultra/alSynStopVoice.s @@ -0,0 +1,42 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alSynStopVoice +/* 014290 70013690 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 014294 70013694 AFBF0014 */ sw $ra, 0x14($sp) +/* 014298 70013698 AFA40018 */ sw $a0, 0x18($sp) +/* 01429C 7001369C 8CAE0008 */ lw $t6, 8($a1) +/* 0142A0 700136A0 51C00016 */ beql $t6, $zero, .L700136FC +/* 0142A4 700136A4 8FBF0014 */ lw $ra, 0x14($sp) +/* 0142A8 700136A8 0C003C34 */ jal __allocParam +/* 0142AC 700136AC AFA5001C */ sw $a1, 0x1c($sp) +/* 0142B0 700136B0 8FA7001C */ lw $a3, 0x1c($sp) +/* 0142B4 700136B4 10400010 */ beqz $v0, .L700136F8 +/* 0142B8 700136B8 00403025 */ move $a2, $v0 +/* 0142BC 700136BC 8FAF0018 */ lw $t7, 0x18($sp) +/* 0142C0 700136C0 8CF90008 */ lw $t9, 8($a3) +/* 0142C4 700136C4 240A000F */ li $t2, 15 +/* 0142C8 700136C8 8DF8001C */ lw $t8, 0x1c($t7) +/* 0142CC 700136CC 8F2800D8 */ lw $t0, 0xd8($t9) +/* 0142D0 700136D0 A44A0008 */ sh $t2, 8($v0) +/* 0142D4 700136D4 AC400000 */ sw $zero, ($v0) +/* 0142D8 700136D8 03084821 */ addu $t1, $t8, $t0 +/* 0142DC 700136DC AC490004 */ sw $t1, 4($v0) +/* 0142E0 700136E0 8CEB0008 */ lw $t3, 8($a3) +/* 0142E4 700136E4 24050003 */ li $a1, 3 +/* 0142E8 700136E8 8D64000C */ lw $a0, 0xc($t3) +/* 0142EC 700136EC 8C990008 */ lw $t9, 8($a0) +/* 0142F0 700136F0 0320F809 */ jalr $t9 +/* 0142F4 700136F4 00000000 */ nop +.L700136F8: +/* 0142F8 700136F8 8FBF0014 */ lw $ra, 0x14($sp) +.L700136FC: +/* 0142FC 700136FC 27BD0018 */ addiu $sp, $sp, 0x18 +/* 014300 70013700 03E00008 */ jr $ra +/* 014304 70013704 00000000 */ nop diff --git a/src/libultra/csequencer.s b/src/libultra/csequencer.s new file mode 100644 index 0000000..daf7a70 --- /dev/null +++ b/src/libultra/csequencer.s @@ -0,0 +1,774 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel alCSeqGetLoc +/* 012E40 70012240 8C8E0004 */ lw $t6, 4($a0) +/* 012E44 70012244 00803025 */ move $a2, $a0 +/* 012E48 70012248 00804025 */ move $t0, $a0 +/* 012E4C 7001224C ACAE0000 */ sw $t6, ($a1) +/* 012E50 70012250 8C8F000C */ lw $t7, 0xc($a0) +/* 012E54 70012254 00001025 */ move $v0, $zero +/* 012E58 70012258 00A01825 */ move $v1, $a1 +/* 012E5C 7001225C ACAF0004 */ sw $t7, 4($a1) +/* 012E60 70012260 8C980010 */ lw $t8, 0x10($a0) +/* 012E64 70012264 24040010 */ li $a0, 16 +/* 012E68 70012268 00A03825 */ move $a3, $a1 +/* 012E6C 7001226C ACB80008 */ sw $t8, 8($a1) +.L70012270: +/* 012E70 70012270 8CD90018 */ lw $t9, 0x18($a2) +/* 012E74 70012274 24420002 */ addiu $v0, $v0, 2 +/* 012E78 70012278 24630008 */ addiu $v1, $v1, 8 +/* 012E7C 7001227C AC790004 */ sw $t9, 4($v1) +/* 012E80 70012280 8CC90058 */ lw $t1, 0x58($a2) +/* 012E84 70012284 24C60008 */ addiu $a2, $a2, 8 +/* 012E88 70012288 24E70002 */ addiu $a3, $a3, 2 +/* 012E8C 7001228C AC690044 */ sw $t1, 0x44($v1) +/* 012E90 70012290 910A0098 */ lbu $t2, 0x98($t0) +/* 012E94 70012294 25080002 */ addiu $t0, $t0, 2 +/* 012E98 70012298 A0EA008A */ sb $t2, 0x8a($a3) +/* 012E9C 7001229C 910B00A6 */ lbu $t3, 0xa6($t0) +/* 012EA0 700122A0 A0EB009A */ sb $t3, 0x9a($a3) +/* 012EA4 700122A4 8CCC00B0 */ lw $t4, 0xb0($a2) +/* 012EA8 700122A8 AC6C00A4 */ sw $t4, 0xa4($v1) +/* 012EAC 700122AC 8CCD0014 */ lw $t5, 0x14($a2) +/* 012EB0 700122B0 AC6D0008 */ sw $t5, 8($v1) +/* 012EB4 700122B4 8CCE0054 */ lw $t6, 0x54($a2) +/* 012EB8 700122B8 AC6E0048 */ sw $t6, 0x48($v1) +/* 012EBC 700122BC 910F0097 */ lbu $t7, 0x97($t0) +/* 012EC0 700122C0 A0EF008B */ sb $t7, 0x8b($a3) +/* 012EC4 700122C4 911800A7 */ lbu $t8, 0xa7($t0) +/* 012EC8 700122C8 A0F8009B */ sb $t8, 0x9b($a3) +/* 012ECC 700122CC 8CD900B4 */ lw $t9, 0xb4($a2) +/* 012ED0 700122D0 1444FFE7 */ bne $v0, $a0, .L70012270 +/* 012ED4 700122D4 AC7900A8 */ sw $t9, 0xa8($v1) +/* 012ED8 700122D8 03E00008 */ jr $ra +/* 012EDC 700122DC 00000000 */ nop + +glabel alCSeqSetLoc +/* 012EE0 700122E0 8CAE0000 */ lw $t6, ($a1) +/* 012EE4 700122E4 00801825 */ move $v1, $a0 +/* 012EE8 700122E8 00803825 */ move $a3, $a0 +/* 012EEC 700122EC AC8E0004 */ sw $t6, 4($a0) +/* 012EF0 700122F0 8CAF0004 */ lw $t7, 4($a1) +/* 012EF4 700122F4 00001025 */ move $v0, $zero +/* 012EF8 700122F8 00A03025 */ move $a2, $a1 +/* 012EFC 700122FC AC8F000C */ sw $t7, 0xc($a0) +/* 012F00 70012300 8CB80008 */ lw $t8, 8($a1) +/* 012F04 70012304 00A04025 */ move $t0, $a1 +/* 012F08 70012308 AC980010 */ sw $t8, 0x10($a0) +/* 012F0C 7001230C 24040010 */ li $a0, 16 +.L70012310: +/* 012F10 70012310 8CD9000C */ lw $t9, 0xc($a2) +/* 012F14 70012314 24420002 */ addiu $v0, $v0, 2 +/* 012F18 70012318 24630008 */ addiu $v1, $v1, 8 +/* 012F1C 7001231C AC790010 */ sw $t9, 0x10($v1) +/* 012F20 70012320 8CC9004C */ lw $t1, 0x4c($a2) +/* 012F24 70012324 24C60008 */ addiu $a2, $a2, 8 +/* 012F28 70012328 24E70002 */ addiu $a3, $a3, 2 +/* 012F2C 7001232C AC690050 */ sw $t1, 0x50($v1) +/* 012F30 70012330 910A008C */ lbu $t2, 0x8c($t0) +/* 012F34 70012334 25080002 */ addiu $t0, $t0, 2 +/* 012F38 70012338 A0EA0096 */ sb $t2, 0x96($a3) +/* 012F3C 7001233C 910B009A */ lbu $t3, 0x9a($t0) +/* 012F40 70012340 A0EB00A6 */ sb $t3, 0xa6($a3) +/* 012F44 70012344 8CCC00A4 */ lw $t4, 0xa4($a2) +/* 012F48 70012348 AC6C00B0 */ sw $t4, 0xb0($v1) +/* 012F4C 7001234C 8CCD0008 */ lw $t5, 8($a2) +/* 012F50 70012350 AC6D0014 */ sw $t5, 0x14($v1) +/* 012F54 70012354 8CCE0048 */ lw $t6, 0x48($a2) +/* 012F58 70012358 AC6E0054 */ sw $t6, 0x54($v1) +/* 012F5C 7001235C 910F008B */ lbu $t7, 0x8b($t0) +/* 012F60 70012360 A0EF0097 */ sb $t7, 0x97($a3) +/* 012F64 70012364 9118009B */ lbu $t8, 0x9b($t0) +/* 012F68 70012368 A0F800A7 */ sb $t8, 0xa7($a3) +/* 012F6C 7001236C 8CD900A8 */ lw $t9, 0xa8($a2) +/* 012F70 70012370 1444FFE7 */ bne $v0, $a0, .L70012310 +/* 012F74 70012374 AC7900B4 */ sw $t9, 0xb4($v1) +/* 012F78 70012378 03E00008 */ jr $ra +/* 012F7C 7001237C 00000000 */ nop + +glabel ultra_70012380 +/* 012F80 70012380 00851021 */ addu $v0, $a0, $a1 +/* 012F84 70012384 904E0098 */ lbu $t6, 0x98($v0) +/* 012F88 70012388 00057880 */ sll $t7, $a1, 2 +/* 012F8C 7001238C 008F3021 */ addu $a2, $a0, $t7 +/* 012F90 70012390 51C0000D */ beql $t6, $zero, .L700123C8 +/* 012F94 70012394 8CC70018 */ lw $a3, 0x18($a2) +/* 012F98 70012398 00057880 */ sll $t7, $a1, 2 +/* 012F9C 7001239C 008F3021 */ addu $a2, $a0, $t7 +/* 012FA0 700123A0 8CC70058 */ lw $a3, 0x58($a2) +/* 012FA4 700123A4 90E30000 */ lbu $v1, ($a3) +/* 012FA8 700123A8 24F80001 */ addiu $t8, $a3, 1 +/* 012FAC 700123AC ACD80058 */ sw $t8, 0x58($a2) +/* 012FB0 700123B0 90590098 */ lbu $t9, 0x98($v0) +/* 012FB4 700123B4 272EFFFF */ addiu $t6, $t9, -1 +/* 012FB8 700123B8 A04E0098 */ sb $t6, 0x98($v0) +/* 012FBC 700123BC 03E00008 */ jr $ra +/* 012FC0 700123C0 00601025 */ move $v0, $v1 + +/* 012FC4 700123C4 8CC70018 */ lw $a3, 0x18($a2) +.L700123C8: +/* 012FC8 700123C8 240800FE */ li $t0, 254 +/* 012FCC 700123CC 90E30000 */ lbu $v1, ($a3) +/* 012FD0 700123D0 24F80001 */ addiu $t8, $a3, 1 +/* 012FD4 700123D4 ACD80018 */ sw $t8, 0x18($a2) +/* 012FD8 700123D8 15030018 */ bne $t0, $v1, .L7001243C +/* 012FDC 700123DC 00000000 */ nop +/* 012FE0 700123E0 93040000 */ lbu $a0, ($t8) +/* 012FE4 700123E4 27190001 */ addiu $t9, $t8, 1 +/* 012FE8 700123E8 ACD90018 */ sw $t9, 0x18($a2) +/* 012FEC 700123EC 11040013 */ beq $t0, $a0, .L7001243C +/* 012FF0 700123F0 272E0001 */ addiu $t6, $t9, 1 +/* 012FF4 700123F4 93230000 */ lbu $v1, ($t9) +/* 012FF8 700123F8 ACCE0018 */ sw $t6, 0x18($a2) +/* 012FFC 700123FC 91C50000 */ lbu $a1, ($t6) +/* 013000 70012400 25CF0001 */ addiu $t7, $t6, 1 +/* 013004 70012404 0004CA00 */ sll $t9, $a0, 8 +/* 013008 70012408 ACCF0018 */ sw $t7, 0x18($a2) +/* 01300C 7001240C 03237021 */ addu $t6, $t9, $v1 +/* 013010 70012410 01EE7823 */ subu $t7, $t7, $t6 +/* 013014 70012414 25F9FFFC */ addiu $t9, $t7, -4 +/* 013018 70012418 ACD90058 */ sw $t9, 0x58($a2) +/* 01301C 7001241C A0450098 */ sb $a1, 0x98($v0) +/* 013020 70012420 8CC70058 */ lw $a3, 0x58($a2) +/* 013024 70012424 90E30000 */ lbu $v1, ($a3) +/* 013028 70012428 24F80001 */ addiu $t8, $a3, 1 +/* 01302C 7001242C ACD80058 */ sw $t8, 0x58($a2) +/* 013030 70012430 904E0098 */ lbu $t6, 0x98($v0) +/* 013034 70012434 25CFFFFF */ addiu $t7, $t6, -1 +/* 013038 70012438 A04F0098 */ sb $t7, 0x98($v0) +.L7001243C: +/* 01303C 7001243C 03E00008 */ jr $ra +/* 013040 70012440 00601025 */ move $v0, $v1 + +glabel ultra_70012444 +/* 013044 70012444 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 013048 70012448 AFBF0014 */ sw $ra, 0x14($sp) +/* 01304C 7001244C 01402025 */ move $a0, $t2 +/* 013050 70012450 0C0048E0 */ jal ultra_70012380 +/* 013054 70012454 01602825 */ move $a1, $t3 +/* 013058 70012458 304E0080 */ andi $t6, $v0, 0x80 +/* 01305C 7001245C 11C0000A */ beqz $t6, .L70012488 +/* 013060 70012460 00404825 */ move $t1, $v0 +/* 013064 70012464 3049007F */ andi $t1, $v0, 0x7f +.L70012468: +/* 013068 70012468 01402025 */ move $a0, $t2 +/* 01306C 7001246C 0C0048E0 */ jal ultra_70012380 +/* 013070 70012470 01602825 */ move $a1, $t3 +/* 013074 70012474 000979C0 */ sll $t7, $t1, 7 +/* 013078 70012478 3058007F */ andi $t8, $v0, 0x7f +/* 01307C 7001247C 30590080 */ andi $t9, $v0, 0x80 +/* 013080 70012480 1720FFF9 */ bnez $t9, .L70012468 +/* 013084 70012484 01F84821 */ addu $t1, $t7, $t8 +.L70012488: +/* 013088 70012488 8FBF0014 */ lw $ra, 0x14($sp) +/* 01308C 7001248C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 013090 70012490 01201025 */ move $v0, $t1 +/* 013094 70012494 03E00008 */ jr $ra +/* 013098 70012498 00000000 */ nop + +/* 01309C 7001249C 03E00008 */ jr $ra +/* 0130A0 700124A0 00000000 */ nop + +glabel alCSeqNextEvent +/* 0130A4 700124A4 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 0130A8 700124A8 AFB00018 */ sw $s0, 0x18($sp) +/* 0130AC 700124AC 00A08025 */ move $s0, $a1 +/* 0130B0 700124B0 AFBF001C */ sw $ra, 0x1c($sp) +/* 0130B4 700124B4 00806025 */ move $t4, $a0 +/* 0130B8 700124B8 2409FFFF */ li $t1, -1 +/* 0130BC 700124BC 8C860010 */ lw $a2, 0x10($a0) +/* 0130C0 700124C0 24050010 */ li $a1, 16 +/* 0130C4 700124C4 8FAB0024 */ lw $t3, 0x24($sp) +/* 0130C8 700124C8 00001025 */ move $v0, $zero +/* 0130CC 700124CC 8D8E0004 */ lw $t6, 4($t4) +.L700124D0: +/* 0130D0 700124D0 004E7806 */ srlv $t7, $t6, $v0 +/* 0130D4 700124D4 31F80001 */ andi $t8, $t7, 1 +/* 0130D8 700124D8 53000010 */ beql $t8, $zero, .L7001251C +/* 0130DC 700124DC 24420001 */ addiu $v0, $v0, 1 +/* 0130E0 700124E0 8D8E0014 */ lw $t6, 0x14($t4) +/* 0130E4 700124E4 0002C880 */ sll $t9, $v0, 2 +/* 0130E8 700124E8 01991821 */ addu $v1, $t4, $t9 +/* 0130EC 700124EC 51C00005 */ beql $t6, $zero, .L70012504 +/* 0130F0 700124F0 8C6400B8 */ lw $a0, 0xb8($v1) +/* 0130F4 700124F4 8C6F00B8 */ lw $t7, 0xb8($v1) +/* 0130F8 700124F8 01E6C023 */ subu $t8, $t7, $a2 +/* 0130FC 700124FC AC7800B8 */ sw $t8, 0xb8($v1) +/* 013100 70012500 8C6400B8 */ lw $a0, 0xb8($v1) +.L70012504: +/* 013104 70012504 0089082B */ sltu $at, $a0, $t1 +/* 013108 70012508 50200004 */ beql $at, $zero, .L7001251C +/* 01310C 7001250C 24420001 */ addiu $v0, $v0, 1 +/* 013110 70012510 00804825 */ move $t1, $a0 +/* 013114 70012514 00405825 */ move $t3, $v0 +/* 013118 70012518 24420001 */ addiu $v0, $v0, 1 +.L7001251C: +/* 01311C 7001251C 5445FFEC */ bnel $v0, $a1, .L700124D0 +/* 013120 70012520 8D8E0004 */ lw $t6, 4($t4) +/* 013124 70012524 01802025 */ move $a0, $t4 +/* 013128 70012528 0C0048E0 */ jal ultra_70012380 +/* 01312C 7001252C 01602825 */ move $a1, $t3 +/* 013130 70012530 240100FF */ li $at, 255 +/* 013134 70012534 304A00FF */ andi $t2, $v0, 0xff +/* 013138 70012538 1441005A */ bne $v0, $at, .L700126A4 +/* 01313C 7001253C 00401825 */ move $v1, $v0 +/* 013140 70012540 01802025 */ move $a0, $t4 +/* 013144 70012544 0C0048E0 */ jal ultra_70012380 +/* 013148 70012548 01602825 */ move $a1, $t3 +/* 01314C 7001254C 24010051 */ li $at, 81 +/* 013150 70012550 304600FF */ andi $a2, $v0, 0xff +/* 013154 70012554 14410014 */ bne $v0, $at, .L700125A8 +/* 013158 70012558 00401825 */ move $v1, $v0 +/* 01315C 7001255C 24190003 */ li $t9, 3 +/* 013160 70012560 A6190000 */ sh $t9, ($s0) +/* 013164 70012564 A20A0008 */ sb $t2, 8($s0) +/* 013168 70012568 A2060009 */ sb $a2, 9($s0) +/* 01316C 7001256C 01802025 */ move $a0, $t4 +/* 013170 70012570 0C0048E0 */ jal ultra_70012380 +/* 013174 70012574 01602825 */ move $a1, $t3 +/* 013178 70012578 A202000B */ sb $v0, 0xb($s0) +/* 01317C 7001257C 01802025 */ move $a0, $t4 +/* 013180 70012580 0C0048E0 */ jal ultra_70012380 +/* 013184 70012584 01602825 */ move $a1, $t3 +/* 013188 70012588 A202000C */ sb $v0, 0xc($s0) +/* 01318C 7001258C 01802025 */ move $a0, $t4 +/* 013190 70012590 0C0048E0 */ jal ultra_70012380 +/* 013194 70012594 01602825 */ move $a1, $t3 +/* 013198 70012598 A202000D */ sb $v0, 0xd($s0) +/* 01319C 7001259C 018B7021 */ addu $t6, $t4, $t3 +/* 0131A0 700125A0 10000067 */ b .L70012740 +/* 0131A4 700125A4 A1C000A8 */ sb $zero, 0xa8($t6) +.L700125A8: +/* 0131A8 700125A8 2401002F */ li $at, 47 +/* 0131AC 700125AC 5461000E */ bnel $v1, $at, .L700125E8 +/* 0131B0 700125B0 2401002E */ li $at, 46 +/* 0131B4 700125B4 8D8F0004 */ lw $t7, 4($t4) +/* 0131B8 700125B8 24180001 */ li $t8, 1 +/* 0131BC 700125BC 0178C804 */ sllv $t9, $t8, $t3 +/* 0131C0 700125C0 01F97026 */ xor $t6, $t7, $t9 +/* 0131C4 700125C4 11C00004 */ beqz $t6, .L700125D8 +/* 0131C8 700125C8 AD8E0004 */ sw $t6, 4($t4) +/* 0131CC 700125CC 240F0012 */ li $t7, 18 +/* 0131D0 700125D0 1000005B */ b .L70012740 +/* 0131D4 700125D4 A60F0000 */ sh $t7, ($s0) +.L700125D8: +/* 0131D8 700125D8 24190004 */ li $t9, 4 +/* 0131DC 700125DC 10000058 */ b .L70012740 +/* 0131E0 700125E0 A6190000 */ sh $t9, ($s0) +/* 0131E4 700125E4 2401002E */ li $at, 46 +.L700125E8: +/* 0131E8 700125E8 1461000B */ bne $v1, $at, .L70012618 +/* 0131EC 700125EC 01802025 */ move $a0, $t4 +/* 0131F0 700125F0 0C0048E0 */ jal ultra_70012380 +/* 0131F4 700125F4 01602825 */ move $a1, $t3 +/* 0131F8 700125F8 01802025 */ move $a0, $t4 +/* 0131FC 700125FC 0C0048E0 */ jal ultra_70012380 +/* 013200 70012600 01602825 */ move $a1, $t3 +/* 013204 70012604 018B7021 */ addu $t6, $t4, $t3 +/* 013208 70012608 A1C000A8 */ sb $zero, 0xa8($t6) +/* 01320C 7001260C 24180013 */ li $t8, 19 +/* 013210 70012610 1000004B */ b .L70012740 +/* 013214 70012614 A6180000 */ sh $t8, ($s0) +.L70012618: +/* 013218 70012618 2401002D */ li $at, 45 +/* 01321C 7001261C 14610048 */ bne $v1, $at, .L70012740 +/* 013220 70012620 000B7880 */ sll $t7, $t3, 2 +/* 013224 70012624 018F6821 */ addu $t5, $t4, $t7 +/* 013228 70012628 8DA20018 */ lw $v0, 0x18($t5) +/* 01322C 7001262C 240100FF */ li $at, 255 +/* 013230 70012630 90440001 */ lbu $a0, 1($v0) +/* 013234 70012634 24420001 */ addiu $v0, $v0, 1 +/* 013238 70012638 24590005 */ addiu $t9, $v0, 5 +/* 01323C 7001263C 14800004 */ bnez $a0, .L70012650 +/* 013240 70012640 9045FFFF */ lbu $a1, -1($v0) +/* 013244 70012644 A0450000 */ sb $a1, ($v0) +/* 013248 70012648 10000011 */ b .L70012690 +/* 01324C 7001264C ADB90018 */ sw $t9, 0x18($t5) +.L70012650: +/* 013250 70012650 10810002 */ beq $a0, $at, .L7001265C +/* 013254 70012654 248EFFFF */ addiu $t6, $a0, -1 +/* 013258 70012658 A04E0000 */ sb $t6, ($v0) +.L7001265C: +/* 01325C 7001265C 904F0002 */ lbu $t7, 2($v0) +/* 013260 70012660 90430001 */ lbu $v1, 1($v0) +/* 013264 70012664 904E0003 */ lbu $t6, 3($v0) +/* 013268 70012668 000FCC00 */ sll $t9, $t7, 0x10 +/* 01326C 7001266C 0003C600 */ sll $t8, $v1, 0x18 +/* 013270 70012670 904F0004 */ lbu $t7, 4($v0) +/* 013274 70012674 03191821 */ addu $v1, $t8, $t9 +/* 013278 70012678 000EC200 */ sll $t8, $t6, 8 +/* 01327C 7001267C 00781821 */ addu $v1, $v1, $t8 +/* 013280 70012680 24420005 */ addiu $v0, $v0, 5 +/* 013284 70012684 006F1821 */ addu $v1, $v1, $t7 +/* 013288 70012688 0043C823 */ subu $t9, $v0, $v1 +/* 01328C 7001268C ADB90018 */ sw $t9, 0x18($t5) +.L70012690: +/* 013290 70012690 018B7021 */ addu $t6, $t4, $t3 +/* 013294 70012694 A1C000A8 */ sb $zero, 0xa8($t6) +/* 013298 70012698 24180014 */ li $t8, 20 +/* 01329C 7001269C 10000028 */ b .L70012740 +/* 0132A0 700126A0 A6180000 */ sh $t8, ($s0) +.L700126A4: +/* 0132A4 700126A4 240F0001 */ li $t7, 1 +/* 0132A8 700126A8 30790080 */ andi $t9, $v1, 0x80 +/* 0132AC 700126AC 13200009 */ beqz $t9, .L700126D4 +/* 0132B0 700126B0 A60F0000 */ sh $t7, ($s0) +/* 0132B4 700126B4 A20A0008 */ sb $t2, 8($s0) +/* 0132B8 700126B8 01802025 */ move $a0, $t4 +/* 0132BC 700126BC 0C0048E0 */ jal ultra_70012380 +/* 0132C0 700126C0 01602825 */ move $a1, $t3 +/* 0132C4 700126C4 A2020009 */ sb $v0, 9($s0) +/* 0132C8 700126C8 018B7021 */ addu $t6, $t4, $t3 +/* 0132CC 700126CC 10000005 */ b .L700126E4 +/* 0132D0 700126D0 A1CA00A8 */ sb $t2, 0xa8($t6) +.L700126D4: +/* 0132D4 700126D4 018BC021 */ addu $t8, $t4, $t3 +/* 0132D8 700126D8 930F00A8 */ lbu $t7, 0xa8($t8) +/* 0132DC 700126DC A2020009 */ sb $v0, 9($s0) +/* 0132E0 700126E0 A20F0008 */ sb $t7, 8($s0) +.L700126E4: +/* 0132E4 700126E4 92020008 */ lbu $v0, 8($s0) +/* 0132E8 700126E8 240100C0 */ li $at, 192 +/* 0132EC 700126EC 305900F0 */ andi $t9, $v0, 0xf0 +/* 0132F0 700126F0 13210012 */ beq $t9, $at, .L7001273C +/* 0132F4 700126F4 240100D0 */ li $at, 208 +/* 0132F8 700126F8 13210010 */ beq $t9, $at, .L7001273C +/* 0132FC 700126FC 01802025 */ move $a0, $t4 +/* 013300 70012700 0C0048E0 */ jal ultra_70012380 +/* 013304 70012704 01602825 */ move $a1, $t3 +/* 013308 70012708 920E0008 */ lbu $t6, 8($s0) +/* 01330C 7001270C 24010090 */ li $at, 144 +/* 013310 70012710 A202000A */ sb $v0, 0xa($s0) +/* 013314 70012714 31D800F0 */ andi $t8, $t6, 0xf0 +/* 013318 70012718 17010009 */ bne $t8, $at, .L70012740 +/* 01331C 7001271C 01805025 */ move $t2, $t4 +/* 013320 70012720 AFA90028 */ sw $t1, 0x28($sp) +/* 013324 70012724 0C004911 */ jal ultra_70012444 +/* 013328 70012728 AFAB0024 */ sw $t3, 0x24($sp) +/* 01332C 7001272C 8FA90028 */ lw $t1, 0x28($sp) +/* 013330 70012730 8FAB0024 */ lw $t3, 0x24($sp) +/* 013334 70012734 10000002 */ b .L70012740 +/* 013338 70012738 AE02000C */ sw $v0, 0xc($s0) +.L7001273C: +/* 01333C 7001273C A200000A */ sb $zero, 0xa($s0) +.L70012740: +/* 013340 70012740 AE090004 */ sw $t1, 4($s0) +/* 013344 70012744 8D8F000C */ lw $t7, 0xc($t4) +/* 013348 70012748 AD890010 */ sw $t1, 0x10($t4) +/* 01334C 7001274C 24010012 */ li $at, 18 +/* 013350 70012750 01E9C821 */ addu $t9, $t7, $t1 +/* 013354 70012754 AD99000C */ sw $t9, 0xc($t4) +/* 013358 70012758 860E0000 */ lh $t6, ($s0) +/* 01335C 7001275C 01805025 */ move $t2, $t4 +/* 013360 70012760 000BC080 */ sll $t8, $t3, 2 +/* 013364 70012764 51C10007 */ beql $t6, $at, .L70012784 +/* 013368 70012768 240E0001 */ li $t6, 1 +/* 01336C 7001276C 0C004911 */ jal ultra_70012444 +/* 013370 70012770 01986821 */ addu $t5, $t4, $t8 +/* 013374 70012774 8DAF00B8 */ lw $t7, 0xb8($t5) +/* 013378 70012778 01E2C821 */ addu $t9, $t7, $v0 +/* 01337C 7001277C ADB900B8 */ sw $t9, 0xb8($t5) +/* 013380 70012780 240E0001 */ li $t6, 1 +.L70012784: +/* 013384 70012784 AD8E0014 */ sw $t6, 0x14($t4) +/* 013388 70012788 8FBF001C */ lw $ra, 0x1c($sp) +/* 01338C 7001278C 8FB00018 */ lw $s0, 0x18($sp) +/* 013390 70012790 27BD0030 */ addiu $sp, $sp, 0x30 +/* 013394 70012794 03E00008 */ jr $ra +/* 013398 70012798 00000000 */ nop + +glabel alCSeqNew +/* 01339C 7001279C 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 0133A0 700127A0 AFB40028 */ sw $s4, 0x28($sp) +/* 0133A4 700127A4 AFB30024 */ sw $s3, 0x24($sp) +/* 0133A8 700127A8 AFB20020 */ sw $s2, 0x20($sp) +/* 0133AC 700127AC AFB1001C */ sw $s1, 0x1c($sp) +/* 0133B0 700127B0 AFB00018 */ sw $s0, 0x18($sp) +/* 0133B4 700127B4 AFBF002C */ sw $ra, 0x2c($sp) +/* 0133B8 700127B8 240E0001 */ li $t6, 1 +/* 0133BC 700127BC 00808025 */ move $s0, $a0 +/* 0133C0 700127C0 00A0A025 */ move $s4, $a1 +/* 0133C4 700127C4 AC850000 */ sw $a1, ($a0) +/* 0133C8 700127C8 AC800004 */ sw $zero, 4($a0) +/* 0133CC 700127CC AC800010 */ sw $zero, 0x10($a0) +/* 0133D0 700127D0 AC80000C */ sw $zero, 0xc($a0) +/* 0133D4 700127D4 AC8E0014 */ sw $t6, 0x14($a0) +/* 0133D8 700127D8 00808825 */ move $s1, $a0 +/* 0133DC 700127DC 00009025 */ move $s2, $zero +/* 0133E0 700127E0 24130010 */ li $s3, 16 +/* 0133E4 700127E4 00006825 */ move $t5, $zero +/* 0133E8 700127E8 00806025 */ move $t4, $a0 +.L700127EC: +/* 0133EC 700127EC A22000A8 */ sb $zero, 0xa8($s1) +/* 0133F0 700127F0 AD800058 */ sw $zero, 0x58($t4) +/* 0133F4 700127F4 A2200098 */ sb $zero, 0x98($s1) +/* 0133F8 700127F8 8E0F0000 */ lw $t7, ($s0) +/* 0133FC 700127FC 240E0001 */ li $t6, 1 +/* 013400 70012800 01F2C021 */ addu $t8, $t7, $s2 +/* 013404 70012804 8F020000 */ lw $v0, ($t8) +/* 013408 70012808 01AE7804 */ sllv $t7, $t6, $t5 +/* 01340C 7001280C 1040000A */ beqz $v0, .L70012838 +/* 013410 70012810 02827021 */ addu $t6, $s4, $v0 +/* 013414 70012814 8E190004 */ lw $t9, 4($s0) +/* 013418 70012818 02005025 */ move $t2, $s0 +/* 01341C 7001281C 01A05825 */ move $t3, $t5 +/* 013420 70012820 032FC025 */ or $t8, $t9, $t7 +/* 013424 70012824 AE180004 */ sw $t8, 4($s0) +/* 013428 70012828 0C004911 */ jal ultra_70012444 +/* 01342C 7001282C AD8E0018 */ sw $t6, 0x18($t4) +/* 013430 70012830 10000002 */ b .L7001283C +/* 013434 70012834 AD8200B8 */ sw $v0, 0xb8($t4) +.L70012838: +/* 013438 70012838 AD800018 */ sw $zero, 0x18($t4) +.L7001283C: +/* 01343C 7001283C 25AD0001 */ addiu $t5, $t5, 1 +/* 013440 70012840 26310001 */ addiu $s1, $s1, 1 +/* 013444 70012844 26520004 */ addiu $s2, $s2, 4 +/* 013448 70012848 15B3FFE8 */ bne $t5, $s3, .L700127EC +/* 01344C 7001284C 258C0004 */ addiu $t4, $t4, 4 +/* 013450 70012850 8E190000 */ lw $t9, ($s0) +/* 013454 70012854 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 +/* 013458 70012858 44812800 */ mtc1 $at, $f5 +/* 01345C 7001285C 8F2F0040 */ lw $t7, 0x40($t9) +/* 013460 70012860 44802000 */ mtc1 $zero, $f4 +/* 013464 70012864 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 013468 70012868 448F3000 */ mtc1 $t7, $f6 +/* 01346C 7001286C 05E10004 */ bgez $t7, .L70012880 +/* 013470 70012870 46803220 */ cvt.s.w $f8, $f6 +/* 013474 70012874 44815000 */ mtc1 $at, $f10 +/* 013478 70012878 00000000 */ nop +/* 01347C 7001287C 460A4200 */ add.s $f8, $f8, $f10 +.L70012880: +/* 013480 70012880 460041A1 */ cvt.d.s $f6, $f8 +/* 013484 70012884 46262283 */ div.d $f10, $f4, $f6 +/* 013488 70012888 46205220 */ cvt.s.d $f8, $f10 +/* 01348C 7001288C E6080008 */ swc1 $f8, 8($s0) +/* 013490 70012890 8FBF002C */ lw $ra, 0x2c($sp) +/* 013494 70012894 8FB40028 */ lw $s4, 0x28($sp) +/* 013498 70012898 8FB30024 */ lw $s3, 0x24($sp) +/* 01349C 7001289C 8FB20020 */ lw $s2, 0x20($sp) +/* 0134A0 700128A0 8FB1001C */ lw $s1, 0x1c($sp) +/* 0134A4 700128A4 8FB00018 */ lw $s0, 0x18($sp) +/* 0134A8 700128A8 03E00008 */ jr $ra +/* 0134AC 700128AC 27BD0030 */ addiu $sp, $sp, 0x30 + +glabel alCSeqNewMarker +/* 0134B0 700128B0 27BDFEB0 */ addiu $sp, $sp, -0x150 +/* 0134B4 700128B4 AFB30020 */ sw $s3, 0x20($sp) +/* 0134B8 700128B8 AFB10018 */ sw $s1, 0x18($sp) +/* 0134BC 700128BC 00A08825 */ move $s1, $a1 +/* 0134C0 700128C0 27B30048 */ addiu $s3, $sp, 0x48 +/* 0134C4 700128C4 AFBF002C */ sw $ra, 0x2c($sp) +/* 0134C8 700128C8 AFB50028 */ sw $s5, 0x28($sp) +/* 0134CC 700128CC AFB40024 */ sw $s4, 0x24($sp) +/* 0134D0 700128D0 AFB2001C */ sw $s2, 0x1c($sp) +/* 0134D4 700128D4 AFB00014 */ sw $s0, 0x14($sp) +/* 0134D8 700128D8 00803825 */ move $a3, $a0 +/* 0134DC 700128DC 00C09025 */ move $s2, $a2 +/* 0134E0 700128E0 8CE50000 */ lw $a1, ($a3) +/* 0134E4 700128E4 0C0049E7 */ jal alCSeqNew +/* 0134E8 700128E8 02602025 */ move $a0, $s3 +/* 0134EC 700128EC 24150004 */ li $s5, 4 +/* 0134F0 700128F0 27B40140 */ addiu $s4, $sp, 0x140 +/* 0134F4 700128F4 27B00058 */ addiu $s0, $sp, 0x58 +/* 0134F8 700128F8 8FAE004C */ lw $t6, 0x4c($sp) +.L700128FC: +/* 0134FC 700128FC 27A40048 */ addiu $a0, $sp, 0x48 +/* 013500 70012900 00801825 */ move $v1, $a0 +/* 013504 70012904 AE2E0000 */ sw $t6, ($s1) +/* 013508 70012908 8FAF0054 */ lw $t7, 0x54($sp) +/* 01350C 7001290C 02201025 */ move $v0, $s1 +/* 013510 70012910 02202825 */ move $a1, $s1 +/* 013514 70012914 AE2F0004 */ sw $t7, 4($s1) +/* 013518 70012918 8FB80058 */ lw $t8, 0x58($sp) +/* 01351C 7001291C AE380008 */ sw $t8, 8($s1) +.L70012920: +/* 013520 70012920 8C680018 */ lw $t0, 0x18($v1) +/* 013524 70012924 24840004 */ addiu $a0, $a0, 4 +/* 013528 70012928 24420010 */ addiu $v0, $v0, 0x10 +/* 01352C 7001292C AC48FFFC */ sw $t0, -4($v0) +/* 013530 70012930 8C690058 */ lw $t1, 0x58($v1) +/* 013534 70012934 24630010 */ addiu $v1, $v1, 0x10 +/* 013538 70012938 24A50004 */ addiu $a1, $a1, 4 +/* 01353C 7001293C AC49003C */ sw $t1, 0x3c($v0) +/* 013540 70012940 908A0094 */ lbu $t2, 0x94($a0) +/* 013544 70012944 A0AA0088 */ sb $t2, 0x88($a1) +/* 013548 70012948 908B00A4 */ lbu $t3, 0xa4($a0) +/* 01354C 7001294C A0AB0098 */ sb $t3, 0x98($a1) +/* 013550 70012950 8C6C00A8 */ lw $t4, 0xa8($v1) +/* 013554 70012954 AC4C009C */ sw $t4, 0x9c($v0) +/* 013558 70012958 8C6D000C */ lw $t5, 0xc($v1) +/* 01355C 7001295C AC4D0000 */ sw $t5, ($v0) +/* 013560 70012960 8C6E004C */ lw $t6, 0x4c($v1) +/* 013564 70012964 AC4E0040 */ sw $t6, 0x40($v0) +/* 013568 70012968 908F0095 */ lbu $t7, 0x95($a0) +/* 01356C 7001296C A0AF0089 */ sb $t7, 0x89($a1) +/* 013570 70012970 909800A5 */ lbu $t8, 0xa5($a0) +/* 013574 70012974 A0B80099 */ sb $t8, 0x99($a1) +/* 013578 70012978 8C7900AC */ lw $t9, 0xac($v1) +/* 01357C 7001297C AC5900A0 */ sw $t9, 0xa0($v0) +/* 013580 70012980 8C680010 */ lw $t0, 0x10($v1) +/* 013584 70012984 AC480004 */ sw $t0, 4($v0) +/* 013588 70012988 8C690050 */ lw $t1, 0x50($v1) +/* 01358C 7001298C AC490044 */ sw $t1, 0x44($v0) +/* 013590 70012990 908A0096 */ lbu $t2, 0x96($a0) +/* 013594 70012994 A0AA008A */ sb $t2, 0x8a($a1) +/* 013598 70012998 908B00A6 */ lbu $t3, 0xa6($a0) +/* 01359C 7001299C A0AB009A */ sb $t3, 0x9a($a1) +/* 0135A0 700129A0 8C6C00B0 */ lw $t4, 0xb0($v1) +/* 0135A4 700129A4 AC4C00A4 */ sw $t4, 0xa4($v0) +/* 0135A8 700129A8 8C6D0014 */ lw $t5, 0x14($v1) +/* 0135AC 700129AC AC4D0008 */ sw $t5, 8($v0) +/* 0135B0 700129B0 8C6E0054 */ lw $t6, 0x54($v1) +/* 0135B4 700129B4 AC4E0048 */ sw $t6, 0x48($v0) +/* 0135B8 700129B8 908F0097 */ lbu $t7, 0x97($a0) +/* 0135BC 700129BC A0AF008B */ sb $t7, 0x8b($a1) +/* 0135C0 700129C0 909800A7 */ lbu $t8, 0xa7($a0) +/* 0135C4 700129C4 A0B8009B */ sb $t8, 0x9b($a1) +/* 0135C8 700129C8 8C7900B4 */ lw $t9, 0xb4($v1) +/* 0135CC 700129CC 1490FFD4 */ bne $a0, $s0, .L70012920 +/* 0135D0 700129D0 AC5900A8 */ sw $t9, 0xa8($v0) +/* 0135D4 700129D4 02602025 */ move $a0, $s3 +/* 0135D8 700129D8 0C004929 */ jal alCSeqNextEvent +/* 0135DC 700129DC 02802825 */ move $a1, $s4 +/* 0135E0 700129E0 87A80140 */ lh $t0, 0x140($sp) +/* 0135E4 700129E4 8FA90054 */ lw $t1, 0x54($sp) +/* 0135E8 700129E8 11150003 */ beq $t0, $s5, .L700129F8 +/* 0135EC 700129EC 0132082B */ sltu $at, $t1, $s2 +/* 0135F0 700129F0 5420FFC2 */ bnezl $at, .L700128FC +/* 0135F4 700129F4 8FAE004C */ lw $t6, 0x4c($sp) +.L700129F8: +/* 0135F8 700129F8 8FBF002C */ lw $ra, 0x2c($sp) +/* 0135FC 700129FC 8FB00014 */ lw $s0, 0x14($sp) +/* 013600 70012A00 8FB10018 */ lw $s1, 0x18($sp) +/* 013604 70012A04 8FB2001C */ lw $s2, 0x1c($sp) +/* 013608 70012A08 8FB30020 */ lw $s3, 0x20($sp) +/* 01360C 70012A0C 8FB40024 */ lw $s4, 0x24($sp) +/* 013610 70012A10 8FB50028 */ lw $s5, 0x28($sp) +/* 013614 70012A14 03E00008 */ jr $ra +/* 013618 70012A18 27BD0150 */ addiu $sp, $sp, 0x150 + +glabel alCSeqGetTicks +/* 01361C 70012A1C 03E00008 */ jr $ra +/* 013620 70012A20 8C82000C */ lw $v0, 0xc($a0) + +glabel alCSeqSecToTicks +/* 013624 70012A24 8C8E0000 */ lw $t6, ($a0) +/* 013628 70012A28 44856000 */ mtc1 $a1, $f12 +/* 01362C 70012A2C 3C018003 */ lui $at, %hi(F64_800296D0) +/* 013630 70012A30 8DCF0040 */ lw $t7, 0x40($t6) +/* 013634 70012A34 D42696D0 */ ldc1 $f6, %lo(F64_800296D0)($at) +/* 013638 70012A38 46006121 */ cvt.d.s $f4, $f12 +/* 01363C 70012A3C 448F5000 */ mtc1 $t7, $f10 +/* 013640 70012A40 46262202 */ mul.d $f8, $f4, $f6 +/* 013644 70012A44 3C0141F0 */ li $at, 0x41F00000 # 30.000000 +/* 013648 70012A48 05E10005 */ bgez $t7, .L70012A60 +/* 01364C 70012A4C 46805421 */ cvt.d.w $f16, $f10 +/* 013650 70012A50 44819800 */ mtc1 $at, $f19 +/* 013654 70012A54 44809000 */ mtc1 $zero, $f18 +/* 013658 70012A58 00000000 */ nop +/* 01365C 70012A5C 46328400 */ add.d $f16, $f16, $f18 +.L70012A60: +/* 013660 70012A60 44863000 */ mtc1 $a2, $f6 +/* 013664 70012A64 46304102 */ mul.d $f4, $f8, $f16 +/* 013668 70012A68 3C0141F0 */ li $at, 0x41F00000 # 30.000000 +/* 01366C 70012A6C 04C10005 */ bgez $a2, .L70012A84 +/* 013670 70012A70 468032A1 */ cvt.d.w $f10, $f6 +/* 013674 70012A74 44819800 */ mtc1 $at, $f19 +/* 013678 70012A78 44809000 */ mtc1 $zero, $f18 +/* 01367C 70012A7C 00000000 */ nop +/* 013680 70012A80 46325280 */ add.d $f10, $f10, $f18 +.L70012A84: +/* 013684 70012A84 462A2203 */ div.d $f8, $f4, $f10 +/* 013688 70012A88 24020001 */ li $v0, 1 +/* 01368C 70012A8C 3C0141E0 */ li $at, 0x41E00000 # 28.000000 +/* 013690 70012A90 4458F800 */ cfc1 $t8, $31 +/* 013694 70012A94 44C2F800 */ ctc1 $v0, $31 +/* 013698 70012A98 00000000 */ nop +/* 01369C 70012A9C 46204424 */ cvt.w.d $f16, $f8 +/* 0136A0 70012AA0 4442F800 */ cfc1 $v0, $31 +/* 0136A4 70012AA4 00000000 */ nop +/* 0136A8 70012AA8 30420078 */ andi $v0, $v0, 0x78 +/* 0136AC 70012AAC 50400016 */ beql $v0, $zero, .L70012B08 +/* 0136B0 70012AB0 44028000 */ mfc1 $v0, $f16 +/* 0136B4 70012AB4 44818800 */ mtc1 $at, $f17 +/* 0136B8 70012AB8 44808000 */ mtc1 $zero, $f16 +/* 0136BC 70012ABC 24020001 */ li $v0, 1 +/* 0136C0 70012AC0 3C018000 */ lui $at, 0x8000 +/* 0136C4 70012AC4 46304401 */ sub.d $f16, $f8, $f16 +/* 0136C8 70012AC8 44C2F800 */ ctc1 $v0, $31 +/* 0136CC 70012ACC 00000000 */ nop +/* 0136D0 70012AD0 46208424 */ cvt.w.d $f16, $f16 +/* 0136D4 70012AD4 4442F800 */ cfc1 $v0, $31 +/* 0136D8 70012AD8 00000000 */ nop +/* 0136DC 70012ADC 30420078 */ andi $v0, $v0, 0x78 +/* 0136E0 70012AE0 54400006 */ bnezl $v0, .L70012AFC +/* 0136E4 70012AE4 44D8F800 */ ctc1 $t8, $31 +/* 0136E8 70012AE8 44028000 */ mfc1 $v0, $f16 +/* 0136EC 70012AEC 44D8F800 */ ctc1 $t8, $31 +/* 0136F0 70012AF0 03E00008 */ jr $ra +/* 0136F4 70012AF4 00411025 */ or $v0, $v0, $at + +/* 0136F8 70012AF8 44D8F800 */ ctc1 $t8, $31 +.L70012AFC: +/* 0136FC 70012AFC 03E00008 */ jr $ra +/* 013700 70012B00 2402FFFF */ li $v0, -1 + +/* 013704 70012B04 44028000 */ mfc1 $v0, $f16 +.L70012B08: +/* 013708 70012B08 00000000 */ nop +/* 01370C 70012B0C 0442FFFB */ bltzl $v0, .L70012AFC +/* 013710 70012B10 44D8F800 */ ctc1 $t8, $31 +/* 013714 70012B14 44D8F800 */ ctc1 $t8, $31 +/* 013718 70012B18 03E00008 */ jr $ra +/* 01371C 70012B1C 00000000 */ nop + +glabel alCSeqTicksToSec +/* 013720 70012B20 44852000 */ mtc1 $a1, $f4 +/* 013724 70012B24 44864000 */ mtc1 $a2, $f8 +/* 013728 70012B28 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 01372C 70012B2C 468021A0 */ cvt.s.w $f6, $f4 +/* 013730 70012B30 04C10004 */ bgez $a2, .L70012B44 +/* 013734 70012B34 468042A0 */ cvt.s.w $f10, $f8 +/* 013738 70012B38 44818000 */ mtc1 $at, $f16 +/* 01373C 70012B3C 00000000 */ nop +/* 013740 70012B40 46105280 */ add.s $f10, $f10, $f16 +.L70012B44: +/* 013744 70012B44 8C8E0000 */ lw $t6, ($a0) +/* 013748 70012B48 460A3482 */ mul.s $f18, $f6, $f10 +/* 01374C 70012B4C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 013750 70012B50 8DCF0040 */ lw $t7, 0x40($t6) +/* 013754 70012B54 448F4000 */ mtc1 $t7, $f8 +/* 013758 70012B58 46009121 */ cvt.d.s $f4, $f18 +/* 01375C 70012B5C 05E10004 */ bgez $t7, .L70012B70 +/* 013760 70012B60 46804420 */ cvt.s.w $f16, $f8 +/* 013764 70012B64 44813000 */ mtc1 $at, $f6 +/* 013768 70012B68 00000000 */ nop +/* 01376C 70012B6C 46068400 */ add.s $f16, $f16, $f6 +.L70012B70: +/* 013770 70012B70 3C018003 */ lui $at, %hi(F64_800296D8) +/* 013774 70012B74 D43296D8 */ ldc1 $f18, %lo(F64_800296D8)($at) +/* 013778 70012B78 460082A1 */ cvt.d.s $f10, $f16 +/* 01377C 70012B7C 46325202 */ mul.d $f8, $f10, $f18 +/* 013780 70012B80 46282183 */ div.d $f6, $f4, $f8 +/* 013784 70012B84 03E00008 */ jr $ra +/* 013788 70012B88 46203020 */ cvt.s.d $f0, $f6 + +glabel __alCSeqNextDelta +/* 01378C 70012B8C 8C8E0004 */ lw $t6, 4($a0) +/* 013790 70012B90 00A04825 */ move $t1, $a1 +/* 013794 70012B94 2403FFFF */ li $v1, -1 +/* 013798 70012B98 15C00003 */ bnez $t6, .L70012BA8 +/* 01379C 70012B9C 8C820010 */ lw $v0, 0x10($a0) +/* 0137A0 70012BA0 03E00008 */ jr $ra +/* 0137A4 70012BA4 00001025 */ move $v0, $zero + +.L70012BA8: +/* 0137A8 70012BA8 00003025 */ move $a2, $zero +/* 0137AC 70012BAC 240A0010 */ li $t2, 16 +/* 0137B0 70012BB0 8C850004 */ lw $a1, 4($a0) +.L70012BB4: +/* 0137B4 70012BB4 24CE0001 */ addiu $t6, $a2, 1 +/* 0137B8 70012BB8 00C57806 */ srlv $t7, $a1, $a2 +/* 0137BC 70012BBC 31F80001 */ andi $t8, $t7, 1 +/* 0137C0 70012BC0 53000010 */ beql $t8, $zero, .L70012C04 +/* 0137C4 70012BC4 01C57806 */ srlv $t7, $a1, $t6 +/* 0137C8 70012BC8 8C8B0014 */ lw $t3, 0x14($a0) +/* 0137CC 70012BCC 0006C880 */ sll $t9, $a2, 2 +/* 0137D0 70012BD0 00993821 */ addu $a3, $a0, $t9 +/* 0137D4 70012BD4 51600006 */ beql $t3, $zero, .L70012BF0 +/* 0137D8 70012BD8 8CE800B8 */ lw $t0, 0xb8($a3) +/* 0137DC 70012BDC 8CEC00B8 */ lw $t4, 0xb8($a3) +/* 0137E0 70012BE0 01826823 */ subu $t5, $t4, $v0 +/* 0137E4 70012BE4 ACED00B8 */ sw $t5, 0xb8($a3) +/* 0137E8 70012BE8 8C850004 */ lw $a1, 4($a0) +/* 0137EC 70012BEC 8CE800B8 */ lw $t0, 0xb8($a3) +.L70012BF0: +/* 0137F0 70012BF0 0103082B */ sltu $at, $t0, $v1 +/* 0137F4 70012BF4 50200003 */ beql $at, $zero, .L70012C04 +/* 0137F8 70012BF8 01C57806 */ srlv $t7, $a1, $t6 +/* 0137FC 70012BFC 01001825 */ move $v1, $t0 +/* 013800 70012C00 01C57806 */ srlv $t7, $a1, $t6 +.L70012C04: +/* 013804 70012C04 31F80001 */ andi $t8, $t7, 1 +/* 013808 70012C08 1300000F */ beqz $t8, .L70012C48 +/* 01380C 70012C0C 24CE0002 */ addiu $t6, $a2, 2 +/* 013810 70012C10 8C8B0014 */ lw $t3, 0x14($a0) +/* 013814 70012C14 0006C880 */ sll $t9, $a2, 2 +/* 013818 70012C18 00993821 */ addu $a3, $a0, $t9 +/* 01381C 70012C1C 51600006 */ beql $t3, $zero, .L70012C38 +/* 013820 70012C20 8CE800BC */ lw $t0, 0xbc($a3) +/* 013824 70012C24 8CEC00BC */ lw $t4, 0xbc($a3) +/* 013828 70012C28 01826823 */ subu $t5, $t4, $v0 +/* 01382C 70012C2C ACED00BC */ sw $t5, 0xbc($a3) +/* 013830 70012C30 8C850004 */ lw $a1, 4($a0) +/* 013834 70012C34 8CE800BC */ lw $t0, 0xbc($a3) +.L70012C38: +/* 013838 70012C38 0103082B */ sltu $at, $t0, $v1 +/* 01383C 70012C3C 50200003 */ beql $at, $zero, .L70012C4C +/* 013840 70012C40 01C57806 */ srlv $t7, $a1, $t6 +/* 013844 70012C44 01001825 */ move $v1, $t0 +.L70012C48: +/* 013848 70012C48 01C57806 */ srlv $t7, $a1, $t6 +.L70012C4C: +/* 01384C 70012C4C 31F80001 */ andi $t8, $t7, 1 +/* 013850 70012C50 1300000F */ beqz $t8, .L70012C90 +/* 013854 70012C54 24CE0003 */ addiu $t6, $a2, 3 +/* 013858 70012C58 8C8B0014 */ lw $t3, 0x14($a0) +/* 01385C 70012C5C 0006C880 */ sll $t9, $a2, 2 +/* 013860 70012C60 00993821 */ addu $a3, $a0, $t9 +/* 013864 70012C64 51600006 */ beql $t3, $zero, .L70012C80 +/* 013868 70012C68 8CE800C0 */ lw $t0, 0xc0($a3) +/* 01386C 70012C6C 8CEC00C0 */ lw $t4, 0xc0($a3) +/* 013870 70012C70 01826823 */ subu $t5, $t4, $v0 +/* 013874 70012C74 ACED00C0 */ sw $t5, 0xc0($a3) +/* 013878 70012C78 8C850004 */ lw $a1, 4($a0) +/* 01387C 70012C7C 8CE800C0 */ lw $t0, 0xc0($a3) +.L70012C80: +/* 013880 70012C80 0103082B */ sltu $at, $t0, $v1 +/* 013884 70012C84 50200003 */ beql $at, $zero, .L70012C94 +/* 013888 70012C88 01C57806 */ srlv $t7, $a1, $t6 +/* 01388C 70012C8C 01001825 */ move $v1, $t0 +.L70012C90: +/* 013890 70012C90 01C57806 */ srlv $t7, $a1, $t6 +.L70012C94: +/* 013894 70012C94 31F80001 */ andi $t8, $t7, 1 +/* 013898 70012C98 5300000F */ beql $t8, $zero, .L70012CD8 +/* 01389C 70012C9C 24C60004 */ addiu $a2, $a2, 4 +/* 0138A0 70012CA0 8C8B0014 */ lw $t3, 0x14($a0) +/* 0138A4 70012CA4 0006C880 */ sll $t9, $a2, 2 +/* 0138A8 70012CA8 00993821 */ addu $a3, $a0, $t9 +/* 0138AC 70012CAC 51600005 */ beql $t3, $zero, .L70012CC4 +/* 0138B0 70012CB0 8CE500C4 */ lw $a1, 0xc4($a3) +/* 0138B4 70012CB4 8CEC00C4 */ lw $t4, 0xc4($a3) +/* 0138B8 70012CB8 01826823 */ subu $t5, $t4, $v0 +/* 0138BC 70012CBC ACED00C4 */ sw $t5, 0xc4($a3) +/* 0138C0 70012CC0 8CE500C4 */ lw $a1, 0xc4($a3) +.L70012CC4: +/* 0138C4 70012CC4 00A3082B */ sltu $at, $a1, $v1 +/* 0138C8 70012CC8 50200003 */ beql $at, $zero, .L70012CD8 +/* 0138CC 70012CCC 24C60004 */ addiu $a2, $a2, 4 +/* 0138D0 70012CD0 00A01825 */ move $v1, $a1 +/* 0138D4 70012CD4 24C60004 */ addiu $a2, $a2, 4 +.L70012CD8: +/* 0138D8 70012CD8 54CAFFB6 */ bnel $a2, $t2, .L70012BB4 +/* 0138DC 70012CDC 8C850004 */ lw $a1, 4($a0) +/* 0138E0 70012CE0 AC800014 */ sw $zero, 0x14($a0) +/* 0138E4 70012CE4 AD230000 */ sw $v1, ($t1) +/* 0138E8 70012CE8 24020001 */ li $v0, 1 +/* 0138EC 70012CEC 03E00008 */ jr $ra +/* 0138F0 70012CF0 00000000 */ nop + + +.section .rodata +glabel F64_800296D0 +.double 1000000.0 +glabel F64_800296D8 +.double 1000000.0 diff --git a/src/libultra/exception.s b/src/libultra/exception.s new file mode 100644 index 0000000..de436cf --- /dev/null +++ b/src/libultra/exception.s @@ -0,0 +1,666 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel __osExceptionPreamble +/* 010D90 70010190 3C1A7001 */ lui $k0, %hi(__osException) # $k0, 0x7001 +/* 010D94 70010194 275A01A0 */ addiu $k0, %lo(__osException) # addiu $k0, $k0, 0x1a0 +/* 010D98 70010198 03400008 */ jr $k0 +/* 010D9C 7001019C 00000000 */ nop +glabel __osException +/* 010DA0 700101A0 3C1A8007 */ lui $k0, %hi(__osThreadSave) # $k0, 0x8007 +/* 010DA4 700101A4 275A8E30 */ addiu $k0, %lo(__osThreadSave) # addiu $k0, $k0, -0x71d0 +/* 010DA8 700101A8 FF410020 */ sd $at, 0x20($k0) +/* 010DAC 700101AC 401B6000 */ mfc0 $k1, $12 +/* 010DB0 700101B0 AF5B0118 */ sw $k1, 0x118($k0) +/* 010DB4 700101B4 2401FFFC */ li $at, -4 +/* 010DB8 700101B8 0361D824 */ and $k1, $k1, $at +/* 010DBC 700101BC 409B6000 */ mtc0 $k1, $12 +/* 010DC0 700101C0 FF480058 */ sd $t0, 0x58($k0) +/* 010DC4 700101C4 FF490060 */ sd $t1, 0x60($k0) +/* 010DC8 700101C8 FF4A0068 */ sd $t2, 0x68($k0) +/* 010DCC 700101CC AF400018 */ sw $zero, 0x18($k0) +/* 010DD0 700101D0 40086800 */ mfc0 $t0, $13 +/* 010DD4 700101D4 03404025 */ move $t0, $k0 +/* 010DD8 700101D8 3C1A8002 */ lui $k0, %hi(__osRunningThread) # $k0, 0x8002 +/* 010DDC 700101DC 8F5A7730 */ lw $k0, %lo(__osRunningThread)($k0) +/* 010DE0 700101E0 DD090020 */ ld $t1, 0x20($t0) +/* 010DE4 700101E4 FF490020 */ sd $t1, 0x20($k0) +/* 010DE8 700101E8 DD090118 */ ld $t1, 0x118($t0) +/* 010DEC 700101EC FF490118 */ sd $t1, 0x118($k0) +/* 010DF0 700101F0 DD090058 */ ld $t1, 0x58($t0) +/* 010DF4 700101F4 FF490058 */ sd $t1, 0x58($k0) +/* 010DF8 700101F8 DD090060 */ ld $t1, 0x60($t0) +/* 010DFC 700101FC FF490060 */ sd $t1, 0x60($k0) +/* 010E00 70010200 DD090068 */ ld $t1, 0x68($t0) +/* 010E04 70010204 FF490068 */ sd $t1, 0x68($k0) +/* 010E08 70010208 8F5B0118 */ lw $k1, 0x118($k0) +/* 010E0C 7001020C 00004012 */ mflo $t0 +/* 010E10 70010210 FF480108 */ sd $t0, 0x108($k0) +/* 010E14 70010214 00004010 */ mfhi $t0 +/* 010E18 70010218 3369FF00 */ andi $t1, $k1, 0xff00 +/* 010E1C 7001021C FF420028 */ sd $v0, 0x28($k0) +/* 010E20 70010220 FF430030 */ sd $v1, 0x30($k0) +/* 010E24 70010224 FF440038 */ sd $a0, 0x38($k0) +/* 010E28 70010228 FF450040 */ sd $a1, 0x40($k0) +/* 010E2C 7001022C FF460048 */ sd $a2, 0x48($k0) +/* 010E30 70010230 FF470050 */ sd $a3, 0x50($k0) +/* 010E34 70010234 FF4B0070 */ sd $t3, 0x70($k0) +/* 010E38 70010238 FF4C0078 */ sd $t4, 0x78($k0) +/* 010E3C 7001023C FF4D0080 */ sd $t5, 0x80($k0) +/* 010E40 70010240 FF4E0088 */ sd $t6, 0x88($k0) +/* 010E44 70010244 FF4F0090 */ sd $t7, 0x90($k0) +/* 010E48 70010248 FF500098 */ sd $s0, 0x98($k0) +/* 010E4C 7001024C FF5100A0 */ sd $s1, 0xa0($k0) +/* 010E50 70010250 FF5200A8 */ sd $s2, 0xa8($k0) +/* 010E54 70010254 FF5300B0 */ sd $s3, 0xb0($k0) +/* 010E58 70010258 FF5400B8 */ sd $s4, 0xb8($k0) +/* 010E5C 7001025C FF5500C0 */ sd $s5, 0xc0($k0) +/* 010E60 70010260 FF5600C8 */ sd $s6, 0xc8($k0) +/* 010E64 70010264 FF5700D0 */ sd $s7, 0xd0($k0) +/* 010E68 70010268 FF5800D8 */ sd $t8, 0xd8($k0) +/* 010E6C 7001026C FF5900E0 */ sd $t9, 0xe0($k0) +/* 010E70 70010270 FF5C00E8 */ sd $gp, 0xe8($k0) +/* 010E74 70010274 FF5D00F0 */ sd $sp, 0xf0($k0) +/* 010E78 70010278 FF5E00F8 */ sd $fp, 0xf8($k0) +/* 010E7C 7001027C FF5F0100 */ sd $ra, 0x100($k0) +/* 010E80 70010280 1120000D */ beqz $t1, .L700102B8 +/* 010E84 70010284 FF480110 */ sd $t0, 0x110($k0) +/* 010E88 70010288 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) +/* 010E8C 7001028C 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c +/* 010E90 70010290 8D080000 */ lw $t0, ($t0) +/* 010E94 70010294 2401FFFF */ li $at, -1 +/* 010E98 70010298 01014026 */ xor $t0, $t0, $at +/* 010E9C 7001029C 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff +/* 010EA0 700102A0 3108FF00 */ andi $t0, $t0, 0xff00 +/* 010EA4 700102A4 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff +/* 010EA8 700102A8 01284825 */ or $t1, $t1, $t0 +/* 010EAC 700102AC 0361D824 */ and $k1, $k1, $at +/* 010EB0 700102B0 0369D825 */ or $k1, $k1, $t1 +/* 010EB4 700102B4 AF5B0118 */ sw $k1, 0x118($k0) +.L700102B8: +/* 010EB8 700102B8 3C09A430 */ lui $t1, %hi(MI_INTR_MASK_REG) # $t1, 0xa430 +/* 010EBC 700102BC 8D29000C */ lw $t1, %lo(MI_INTR_MASK_REG)($t1) +/* 010EC0 700102C0 1120000B */ beqz $t1, .L700102F0 +/* 010EC4 700102C4 00000000 */ nop +/* 010EC8 700102C8 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) +/* 010ECC 700102CC 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c +/* 010ED0 700102D0 8D080000 */ lw $t0, ($t0) +/* 010ED4 700102D4 8F4C0128 */ lw $t4, 0x128($k0) +/* 010ED8 700102D8 2401FFFF */ li $at, -1 +/* 010EDC 700102DC 00084402 */ srl $t0, $t0, 0x10 +/* 010EE0 700102E0 01014026 */ xor $t0, $t0, $at +/* 010EE4 700102E4 3108003F */ andi $t0, $t0, 0x3f +/* 010EE8 700102E8 010C4024 */ and $t0, $t0, $t4 +/* 010EEC 700102EC 01284825 */ or $t1, $t1, $t0 +.L700102F0: +/* 010EF0 700102F0 AF490128 */ sw $t1, 0x128($k0) +/* 010EF4 700102F4 40087000 */ mfc0 $t0, $14 +/* 010EF8 700102F8 AF48011C */ sw $t0, 0x11c($k0) +/* 010EFC 700102FC 8F480018 */ lw $t0, 0x18($k0) +/* 010F00 70010300 11000014 */ beqz $t0, .L70010354 +/* 010F04 70010304 00000000 */ nop +/* 010F08 70010308 4448F800 */ cfc1 $t0, $31 +/* 010F0C 7001030C 00000000 */ nop +/* 010F10 70010310 AF48012C */ sw $t0, 0x12c($k0) +/* 010F14 70010314 F7400130 */ sdc1 $f0, 0x130($k0) +/* 010F18 70010318 F7420138 */ sdc1 $f2, 0x138($k0) +/* 010F1C 7001031C F7440140 */ sdc1 $f4, 0x140($k0) +/* 010F20 70010320 F7460148 */ sdc1 $f6, 0x148($k0) +/* 010F24 70010324 F7480150 */ sdc1 $f8, 0x150($k0) +/* 010F28 70010328 F74A0158 */ sdc1 $f10, 0x158($k0) +/* 010F2C 7001032C F74C0160 */ sdc1 $f12, 0x160($k0) +/* 010F30 70010330 F74E0168 */ sdc1 $f14, 0x168($k0) +/* 010F34 70010334 F7500170 */ sdc1 $f16, 0x170($k0) +/* 010F38 70010338 F7520178 */ sdc1 $f18, 0x178($k0) +/* 010F3C 7001033C F7540180 */ sdc1 $f20, 0x180($k0) +/* 010F40 70010340 F7560188 */ sdc1 $f22, 0x188($k0) +/* 010F44 70010344 F7580190 */ sdc1 $f24, 0x190($k0) +/* 010F48 70010348 F75A0198 */ sdc1 $f26, 0x198($k0) +/* 010F4C 7001034C F75C01A0 */ sdc1 $f28, 0x1a0($k0) +/* 010F50 70010350 F75E01A8 */ sdc1 $f30, 0x1a8($k0) +.L70010354: +/* 010F54 70010354 40086800 */ mfc0 $t0, $13 +/* 010F58 70010358 AF480120 */ sw $t0, 0x120($k0) +/* 010F5C 7001035C 24090002 */ li $t1, 2 +/* 010F60 70010360 A7490010 */ sh $t1, 0x10($k0) +/* 010F64 70010364 3109007C */ andi $t1, $t0, 0x7c +/* 010F68 70010368 240A0024 */ li $t2, 36 +/* 010F6C 7001036C 112A00B0 */ beq $t1, $t2, .L70010630 +/* 010F70 70010370 00000000 */ nop +/* 010F74 70010374 240A002C */ li $t2, 44 +/* 010F78 70010378 112A00FF */ beq $t1, $t2, .L70010778 +/* 010F7C 7001037C 00000000 */ nop +/* 010F80 70010380 240A0000 */ li $t2, 0 +/* 010F84 70010384 152A00C3 */ bne $t1, $t2, .L70010694 +/* 010F88 70010388 00000000 */ nop +/* 010F8C 7001038C 03688024 */ and $s0, $k1, $t0 +glabel next_interrupt +.L70010390: +/* 010F90 70010390 3209FF00 */ andi $t1, $s0, 0xff00 +/* 010F94 70010394 00095302 */ srl $t2, $t1, 0xc +/* 010F98 70010398 15400003 */ bnez $t2, .L700103A8 +/* 010F9C 7001039C 00000000 */ nop +/* 010FA0 700103A0 00095202 */ srl $t2, $t1, 8 +/* 010FA4 700103A4 214A0010 */ addi $t2, $t2, 0x10 +.L700103A8: +/* 010FA8 700103A8 3C018003 */ lui $at, %hi(__osIntOffTable) +/* 010FAC 700103AC 002A0821 */ addu $at, $at, $t2 +/* 010FB0 700103B0 902A9440 */ lbu $t2, %lo(__osIntOffTable)($at) +/* 010FB4 700103B4 3C018003 */ lui $at, %hi(__osIntTable) +/* 010FB8 700103B8 002A0821 */ addu $at, $at, $t2 +/* 010FBC 700103BC 8C2A9460 */ lw $t2, %lo(__osIntTable)($at) +/* 010FC0 700103C0 01400008 */ jr $t2 +/* 010FC4 700103C4 00000000 */ nop +glabel IP6_Hdlr +/* 010FC8 700103C8 2401DFFF */ li $at, -8193 +/* 010FCC 700103CC 1000FFF0 */ b .L70010390 +/* 010FD0 700103D0 02018024 */ and $s0, $s0, $at +glabel IP7_Hdlr +/* 010FD4 700103D4 2401BFFF */ li $at, -16385 +/* 010FD8 700103D8 1000FFED */ b .L70010390 +/* 010FDC 700103DC 02018024 */ and $s0, $s0, $at +glabel counter +/* 010FE0 700103E0 40095800 */ mfc0 $t1, $11 +/* 010FE4 700103E4 40895800 */ mtc0 $t1, $11 +/* 010FE8 700103E8 0C0041B1 */ jal send_mesg +/* 010FEC 700103EC 24040018 */ li $a0, 24 +/* 010FF0 700103F0 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff +/* 010FF4 700103F4 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff +/* 010FF8 700103F8 1000FFE5 */ b .L70010390 +/* 010FFC 700103FC 02018024 */ and $s0, $s0, $at +glabel cart +/* 011000 70010400 2401F7FF */ li $at, -2049 +/* 011004 70010404 02018024 */ and $s0, $s0, $at +/* 011008 70010408 240A0004 */ li $t2, 4 +/* 01100C 7001040C 3C018002 */ lui $at, %hi(__osHwIntTable) +/* 011010 70010410 002A0821 */ addu $at, $at, $t2 +/* 011014 70010414 8C2A7700 */ lw $t2, %lo(__osHwIntTable)($at) +/* 011018 70010418 3C1D8006 */ lui $sp, %hi(leoDiskStack) # $sp, 0x8006 +/* 01101C 7001041C 27BD7DF0 */ addiu $sp, %lo(leoDiskStack) # addiu $sp, $sp, 0x7df0 +/* 011020 70010420 24040010 */ li $a0, 16 +/* 011024 70010424 11400007 */ beqz $t2, .L70010444 +/* 011028 70010428 27BD0FF0 */ addiu $sp, $sp, 0xff0 +/* 01102C 7001042C 0140F809 */ jalr $t2 +/* 011030 70010430 00000000 */ nop +/* 011034 70010434 10400003 */ beqz $v0, .L70010444 +/* 011038 70010438 00000000 */ nop +/* 01103C 7001043C 10000082 */ b .L70010648 +/* 011040 70010440 00000000 */ nop +.L70010444: +/* 011044 70010444 0C0041B1 */ jal send_mesg +/* 011048 70010448 00000000 */ nop +/* 01104C 7001044C 1000FFD0 */ b .L70010390 +/* 011050 70010450 00000000 */ nop +glabel rcp +/* 011054 70010454 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) +/* 011058 70010458 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c +/* 01105C 7001045C 8D080000 */ lw $t0, ($t0) +/* 011060 70010460 3C11A430 */ lui $s1, %hi(MI_INTR_REG) # $s1, 0xa430 +/* 011064 70010464 8E310008 */ lw $s1, %lo(MI_INTR_REG)($s1) +/* 011068 70010468 00084402 */ srl $t0, $t0, 0x10 +/* 01106C 7001046C 02288824 */ and $s1, $s1, $t0 +/* 011070 70010470 32290001 */ andi $t1, $s1, 1 +/* 011074 70010474 11200013 */ beqz $t1, .L700104C4 +/* 011078 70010478 00000000 */ nop +/* 01107C 7001047C 3C0CA404 */ lui $t4, %hi(SP_STATUS_REG) # $t4, 0xa404 +/* 011080 70010480 8D8C0010 */ lw $t4, %lo(SP_STATUS_REG)($t4) +/* 011084 70010484 24090008 */ li $t1, 8 +/* 011088 70010488 3C01A404 */ lui $at, %hi(SP_STATUS_REG) # $at, 0xa404 +/* 01108C 7001048C 318C0300 */ andi $t4, $t4, 0x300 +/* 011090 70010490 3231003E */ andi $s1, $s1, 0x3e +/* 011094 70010494 11800007 */ beqz $t4, .L700104B4 +/* 011098 70010498 AC290010 */ sw $t1, %lo(SP_STATUS_REG)($at) +/* 01109C 7001049C 0C0041B1 */ jal send_mesg +/* 0110A0 700104A0 24040020 */ li $a0, 32 +/* 0110A4 700104A4 12200038 */ beqz $s1, .L70010588 +/* 0110A8 700104A8 00000000 */ nop +/* 0110AC 700104AC 10000005 */ b .L700104C4 +/* 0110B0 700104B0 00000000 */ nop +.L700104B4: +/* 0110B4 700104B4 0C0041B1 */ jal send_mesg +/* 0110B8 700104B8 24040058 */ li $a0, 88 +/* 0110BC 700104BC 12200032 */ beqz $s1, .L70010588 +/* 0110C0 700104C0 00000000 */ nop +.L700104C4: +/* 0110C4 700104C4 32290008 */ andi $t1, $s1, 8 +/* 0110C8 700104C8 11200007 */ beqz $t1, .L700104E8 +/* 0110CC 700104CC 3C01A440 */ lui $at, %hi(VI_CURRENT_REG) # $at, 0xa440 +/* 0110D0 700104D0 32310037 */ andi $s1, $s1, 0x37 +/* 0110D4 700104D4 AC200010 */ sw $zero, %lo(VI_CURRENT_REG)($at) +/* 0110D8 700104D8 0C0041B1 */ jal send_mesg +/* 0110DC 700104DC 24040038 */ li $a0, 56 +/* 0110E0 700104E0 12200029 */ beqz $s1, .L70010588 +/* 0110E4 700104E4 00000000 */ nop +.L700104E8: +/* 0110E8 700104E8 32290004 */ andi $t1, $s1, 4 +/* 0110EC 700104EC 11200009 */ beqz $t1, .L70010514 +/* 0110F0 700104F0 00000000 */ nop +/* 0110F4 700104F4 24090001 */ li $t1, 1 +/* 0110F8 700104F8 3C01A450 */ lui $at, %hi(AI_STATUS_REG) # $at, 0xa450 +/* 0110FC 700104FC 3231003B */ andi $s1, $s1, 0x3b +/* 011100 70010500 AC29000C */ sw $t1, %lo(AI_STATUS_REG)($at) +/* 011104 70010504 0C0041B1 */ jal send_mesg +/* 011108 70010508 24040030 */ li $a0, 48 +/* 01110C 7001050C 1220001E */ beqz $s1, .L70010588 +/* 011110 70010510 00000000 */ nop +.L70010514: +/* 011114 70010514 32290002 */ andi $t1, $s1, 2 +/* 011118 70010518 11200007 */ beqz $t1, .L70010538 +/* 01111C 7001051C 3C01A480 */ lui $at, %hi(SI_STATUS_REG) # $at, 0xa480 +/* 011120 70010520 3231003D */ andi $s1, $s1, 0x3d +/* 011124 70010524 AC200018 */ sw $zero, %lo(SI_STATUS_REG)($at) +/* 011128 70010528 0C0041B1 */ jal send_mesg +/* 01112C 7001052C 24040028 */ li $a0, 40 +/* 011130 70010530 12200015 */ beqz $s1, .L70010588 +/* 011134 70010534 00000000 */ nop +.L70010538: +/* 011138 70010538 32290010 */ andi $t1, $s1, 0x10 +/* 01113C 7001053C 11200009 */ beqz $t1, .L70010564 +/* 011140 70010540 00000000 */ nop +/* 011144 70010544 24090002 */ li $t1, 2 +/* 011148 70010548 3C01A460 */ lui $at, %hi(PI_STATUS_REG) # $at, 0xa460 +/* 01114C 7001054C 3231002F */ andi $s1, $s1, 0x2f +/* 011150 70010550 AC290010 */ sw $t1, %lo(PI_STATUS_REG)($at) +/* 011154 70010554 0C0041B1 */ jal send_mesg +/* 011158 70010558 24040040 */ li $a0, 64 +/* 01115C 7001055C 1220000A */ beqz $s1, .L70010588 +/* 011160 70010560 00000000 */ nop +.L70010564: +/* 011164 70010564 32290020 */ andi $t1, $s1, 0x20 +/* 011168 70010568 11200007 */ beqz $t1, .L70010588 +/* 01116C 7001056C 00000000 */ nop +/* 011170 70010570 24090800 */ li $t1, 2048 +/* 011174 70010574 3C01A430 */ lui $at, 0xa430 +/* 011178 70010578 3231001F */ andi $s1, $s1, 0x1f +/* 01117C 7001057C AC290000 */ sw $t1, ($at) +/* 011180 70010580 0C0041B1 */ jal send_mesg +/* 011184 70010584 24040048 */ li $a0, 72 +.L70010588: +/* 011188 70010588 2401FBFF */ li $at, -1025 +/* 01118C 7001058C 1000FF80 */ b .L70010390 +/* 011190 70010590 02018024 */ and $s0, $s0, $at +glabel prenmi +/* 011194 70010594 8F5B0118 */ lw $k1, 0x118($k0) +/* 011198 70010598 2401EFFF */ li $at, -4097 +/* 01119C 7001059C 3C098002 */ lui $t1, %hi(__osShutdown) +/* 0111A0 700105A0 0361D824 */ and $k1, $k1, $at +/* 0111A4 700105A4 AF5B0118 */ sw $k1, 0x118($k0) +/* 0111A8 700105A8 25296988 */ addiu $t1, %lo(__osShutdown) # addiu $t1, $t1, 0x6988 +/* 0111AC 700105AC 8D2A0000 */ lw $t2, ($t1) +/* 0111B0 700105B0 11400003 */ beqz $t2, .L700105C0 +/* 0111B4 700105B4 2401EFFF */ li $at, -4097 +/* 0111B8 700105B8 10000023 */ b .L70010648 +/* 0111BC 700105BC 02018024 */ and $s0, $s0, $at +.L700105C0: +/* 0111C0 700105C0 240A0001 */ li $t2, 1 +/* 0111C4 700105C4 AD2A0000 */ sw $t2, ($t1) +/* 0111C8 700105C8 0C0041B1 */ jal send_mesg +/* 0111CC 700105CC 24040070 */ li $a0, 112 +/* 0111D0 700105D0 3C0A8002 */ lui $t2, %hi(__osRunQueue) +/* 0111D4 700105D4 8D4A7728 */ lw $t2, %lo(__osRunQueue)($t2) +/* 0111D8 700105D8 2401EFFF */ li $at, -4097 +/* 0111DC 700105DC 02018024 */ and $s0, $s0, $at +/* 0111E0 700105E0 8D5B0118 */ lw $k1, 0x118($t2) +/* 0111E4 700105E4 0361D824 */ and $k1, $k1, $at +/* 0111E8 700105E8 10000017 */ b .L70010648 +/* 0111EC 700105EC AD5B0118 */ sw $k1, 0x118($t2) +glabel sw2 +/* 0111F0 700105F0 2401FDFF */ li $at, -513 +/* 0111F4 700105F4 01014024 */ and $t0, $t0, $at +/* 0111F8 700105F8 40886800 */ mtc0 $t0, $13 +/* 0111FC 700105FC 0C0041B1 */ jal send_mesg +/* 011200 70010600 24040008 */ li $a0, 8 +/* 011204 70010604 2401FDFF */ li $at, -513 +/* 011208 70010608 1000FF61 */ b .L70010390 +/* 01120C 7001060C 02018024 */ and $s0, $s0, $at +glabel swl +/* 011210 70010610 2401FEFF */ li $at, -257 +/* 011214 70010614 01014024 */ and $t0, $t0, $at +/* 011218 70010618 40886800 */ mtc0 $t0, $13 +/* 01121C 7001061C 0C0041B1 */ jal send_mesg +/* 011220 70010620 24040000 */ li $a0, 0 +/* 011224 70010624 2401FEFF */ li $at, -257 +/* 011228 70010628 1000FF59 */ b .L70010390 +/* 01122C 7001062C 02018024 */ and $s0, $s0, $at +.L70010630: +/* 011230 70010630 24090001 */ li $t1, 1 +/* 011234 70010634 A7490012 */ sh $t1, 0x12($k0) +/* 011238 70010638 0C0041B1 */ jal send_mesg +/* 01123C 7001063C 24040050 */ li $a0, 80 +/* 011240 70010640 10000001 */ b .L70010648 +/* 011244 70010644 00000000 */ nop +glabel redispatch +.L70010648: +/* 011248 70010648 3C0A8002 */ lui $t2, %hi(__osRunQueue) +/* 01124C 7001064C 8D4A7728 */ lw $t2, %lo(__osRunQueue)($t2) +/* 011250 70010650 8F490004 */ lw $t1, 4($k0) +/* 011254 70010654 8D4B0004 */ lw $t3, 4($t2) +/* 011258 70010658 012B082A */ slt $at, $t1, $t3 +/* 01125C 7001065C 10200007 */ beqz $at, .L7001067C +/* 011260 70010660 00000000 */ nop +/* 011264 70010664 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 011268 70010668 03402825 */ move $a1, $k0 +/* 01126C 7001066C 0C00422B */ jal __osEnqueueThread +/* 011270 70010670 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +/* 011274 70010674 08004241 */ j __osDispatchThread +/* 011278 70010678 00000000 */ nop + +glabel enqueueRunning +.L7001067C: +/* 01127C 7001067C 3C098002 */ lui $t1, %hi(__osRunQueue) +/* 011280 70010680 25297728 */ addiu $t1, %lo(__osRunQueue) # addiu $t1, $t1, 0x7728 +/* 011284 70010684 8D2A0000 */ lw $t2, ($t1) +/* 011288 70010688 AF4A0000 */ sw $t2, ($k0) +/* 01128C 7001068C 08004241 */ j __osDispatchThread +/* 011290 70010690 AD3A0000 */ sw $k0, ($t1) + +.L70010694: +/* 011294 70010694 3C018002 */ lui $at, %hi(__osFaultedThread) +/* 011298 70010698 AC3A7734 */ sw $k0, %lo(__osFaultedThread)($at) +/* 01129C 7001069C 24090001 */ li $t1, 1 +/* 0112A0 700106A0 A7490010 */ sh $t1, 0x10($k0) +/* 0112A4 700106A4 24090002 */ li $t1, 2 +/* 0112A8 700106A8 A7490012 */ sh $t1, 0x12($k0) +/* 0112AC 700106AC 400A4000 */ mfc0 $t2, $8 +/* 0112B0 700106B0 AF4A0124 */ sw $t2, 0x124($k0) +/* 0112B4 700106B4 0C0041B1 */ jal send_mesg +/* 0112B8 700106B8 24040060 */ li $a0, 96 +/* 0112BC 700106BC 08004241 */ j __osDispatchThread +/* 0112C0 700106C0 00000000 */ nop + +glabel send_mesg +/* 0112C4 700106C4 3C0A8006 */ lui $t2, %hi(__osEventStateTab) +/* 0112C8 700106C8 254A6A10 */ addiu $t2, %lo(__osEventStateTab) # addiu $t2, $t2, 0x6a10 +/* 0112CC 700106CC 01445021 */ addu $t2, $t2, $a0 +/* 0112D0 700106D0 8D490000 */ lw $t1, ($t2) +/* 0112D4 700106D4 03E09025 */ move $s2, $ra +/* 0112D8 700106D8 11200025 */ beqz $t1, .L70010770 +/* 0112DC 700106DC 00000000 */ nop +/* 0112E0 700106E0 8D2B0008 */ lw $t3, 8($t1) +/* 0112E4 700106E4 8D2C0010 */ lw $t4, 0x10($t1) +/* 0112E8 700106E8 016C082A */ slt $at, $t3, $t4 +/* 0112EC 700106EC 10200020 */ beqz $at, .L70010770 +/* 0112F0 700106F0 00000000 */ nop +/* 0112F4 700106F4 8D2D000C */ lw $t5, 0xc($t1) +/* 0112F8 700106F8 01AB6821 */ addu $t5, $t5, $t3 +/* 0112FC 700106FC 01AC001A */ div $zero, $t5, $t4 +/* 011300 70010700 15800002 */ bnez $t4, .L7001070C +/* 011304 70010704 00000000 */ nop +/* 011308 70010708 0007000D */ break 7 +.L7001070C: +/* 01130C 7001070C 2401FFFF */ li $at, -1 +/* 011310 70010710 15810004 */ bne $t4, $at, .L70010724 +/* 011314 70010714 3C018000 */ lui $at, 0x8000 +/* 011318 70010718 15A10002 */ bne $t5, $at, .L70010724 +/* 01131C 7001071C 00000000 */ nop +/* 011320 70010720 0006000D */ break 6 +.L70010724: +/* 011324 70010724 8D2C0014 */ lw $t4, 0x14($t1) +/* 011328 70010728 00006810 */ mfhi $t5 +/* 01132C 7001072C 000D6880 */ sll $t5, $t5, 2 +/* 011330 70010730 018D6021 */ addu $t4, $t4, $t5 +/* 011334 70010734 8D4D0004 */ lw $t5, 4($t2) +/* 011338 70010738 256A0001 */ addiu $t2, $t3, 1 +/* 01133C 7001073C AD8D0000 */ sw $t5, ($t4) +/* 011340 70010740 AD2A0008 */ sw $t2, 8($t1) +/* 011344 70010744 8D2A0000 */ lw $t2, ($t1) +/* 011348 70010748 8D4B0000 */ lw $t3, ($t2) +/* 01134C 7001074C 11600008 */ beqz $t3, .L70010770 +/* 011350 70010750 00000000 */ nop +/* 011354 70010754 0C00423D */ jal __osPopThread +/* 011358 70010758 01202025 */ move $a0, $t1 +/* 01135C 7001075C 00405025 */ move $t2, $v0 +/* 011360 70010760 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 011364 70010764 01402825 */ move $a1, $t2 +/* 011368 70010768 0C00422B */ jal __osEnqueueThread +/* 01136C 7001076C 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +.L70010770: +/* 011370 70010770 02400008 */ jr $s2 +/* 011374 70010774 00000000 */ nop +glabel handle_CpU +.L70010778: +/* 011378 70010778 3C013000 */ lui $at, 0x3000 +/* 01137C 7001077C 01014824 */ and $t1, $t0, $at +/* 011380 70010780 00094F02 */ srl $t1, $t1, 0x1c +/* 011384 70010784 240A0001 */ li $t2, 1 +/* 011388 70010788 152AFFC2 */ bne $t1, $t2, .L70010694 +/* 01138C 7001078C 00000000 */ nop +/* 011390 70010790 8F5B0118 */ lw $k1, 0x118($k0) +/* 011394 70010794 3C012000 */ lui $at, 0x2000 +/* 011398 70010798 24090001 */ li $t1, 1 +/* 01139C 7001079C 0361D825 */ or $k1, $k1, $at +/* 0113A0 700107A0 AF490018 */ sw $t1, 0x18($k0) +/* 0113A4 700107A4 1000FFB5 */ b .L7001067C +/* 0113A8 700107A8 AF5B0118 */ sw $k1, 0x118($k0) +glabel __osEnqueueAndYield +/* 0113AC 700107AC 3C058002 */ lui $a1, %hi(__osRunningThread) +/* 0113B0 700107B0 8CA57730 */ lw $a1, %lo(__osRunningThread)($a1) +/* 0113B4 700107B4 40086000 */ mfc0 $t0, $12 +/* 0113B8 700107B8 8CBB0018 */ lw $k1, 0x18($a1) +/* 0113BC 700107BC 35080002 */ ori $t0, $t0, 2 +/* 0113C0 700107C0 ACA80118 */ sw $t0, 0x118($a1) +/* 0113C4 700107C4 FCB00098 */ sd $s0, 0x98($a1) +/* 0113C8 700107C8 FCB100A0 */ sd $s1, 0xa0($a1) +/* 0113CC 700107CC FCB200A8 */ sd $s2, 0xa8($a1) +/* 0113D0 700107D0 FCB300B0 */ sd $s3, 0xb0($a1) +/* 0113D4 700107D4 FCB400B8 */ sd $s4, 0xb8($a1) +/* 0113D8 700107D8 FCB500C0 */ sd $s5, 0xc0($a1) +/* 0113DC 700107DC FCB600C8 */ sd $s6, 0xc8($a1) +/* 0113E0 700107E0 FCB700D0 */ sd $s7, 0xd0($a1) +/* 0113E4 700107E4 FCBC00E8 */ sd $gp, 0xe8($a1) +/* 0113E8 700107E8 FCBD00F0 */ sd $sp, 0xf0($a1) +/* 0113EC 700107EC FCBE00F8 */ sd $fp, 0xf8($a1) +/* 0113F0 700107F0 FCBF0100 */ sd $ra, 0x100($a1) +/* 0113F4 700107F4 13600009 */ beqz $k1, .L7001081C +/* 0113F8 700107F8 ACBF011C */ sw $ra, 0x11c($a1) +/* 0113FC 700107FC 445BF800 */ cfc1 $k1, $31 +/* 011400 70010800 F4B40180 */ sdc1 $f20, 0x180($a1) +/* 011404 70010804 F4B60188 */ sdc1 $f22, 0x188($a1) +/* 011408 70010808 F4B80190 */ sdc1 $f24, 0x190($a1) +/* 01140C 7001080C F4BA0198 */ sdc1 $f26, 0x198($a1) +/* 011410 70010810 F4BC01A0 */ sdc1 $f28, 0x1a0($a1) +/* 011414 70010814 F4BE01A8 */ sdc1 $f30, 0x1a8($a1) +/* 011418 70010818 ACBB012C */ sw $k1, 0x12c($a1) +.L7001081C: +/* 01141C 7001081C 8CBB0118 */ lw $k1, 0x118($a1) +/* 011420 70010820 3369FF00 */ andi $t1, $k1, 0xff00 +/* 011424 70010824 1120000D */ beqz $t1, .L7001085C +/* 011428 70010828 00000000 */ nop +/* 01142C 7001082C 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) +/* 011430 70010830 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c +/* 011434 70010834 8D080000 */ lw $t0, ($t0) +/* 011438 70010838 2401FFFF */ li $at, -1 +/* 01143C 7001083C 01014026 */ xor $t0, $t0, $at +/* 011440 70010840 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff +/* 011444 70010844 3108FF00 */ andi $t0, $t0, 0xff00 +/* 011448 70010848 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff +/* 01144C 7001084C 01284825 */ or $t1, $t1, $t0 +/* 011450 70010850 0361D824 */ and $k1, $k1, $at +/* 011454 70010854 0369D825 */ or $k1, $k1, $t1 +/* 011458 70010858 ACBB0118 */ sw $k1, 0x118($a1) +.L7001085C: +/* 01145C 7001085C 3C1BA430 */ lui $k1, %hi(MI_INTR_MASK_REG) # $k1, 0xa430 +/* 011460 70010860 8F7B000C */ lw $k1, %lo(MI_INTR_MASK_REG)($k1) +/* 011464 70010864 1360000B */ beqz $k1, .L70010894 +/* 011468 70010868 00000000 */ nop +/* 01146C 7001086C 3C1A8002 */ lui $k0, %hi(__OSGlobalIntMask) # $k0, 0x8002 +/* 011470 70010870 275A698C */ addiu $k0, %lo(__OSGlobalIntMask) # addiu $k0, $k0, 0x698c +/* 011474 70010874 8F5A0000 */ lw $k0, ($k0) +/* 011478 70010878 8CA80128 */ lw $t0, 0x128($a1) +/* 01147C 7001087C 2401FFFF */ li $at, -1 +/* 011480 70010880 001AD402 */ srl $k0, $k0, 0x10 +/* 011484 70010884 0341D026 */ xor $k0, $k0, $at +/* 011488 70010888 335A003F */ andi $k0, $k0, 0x3f +/* 01148C 7001088C 0348D024 */ and $k0, $k0, $t0 +/* 011490 70010890 037AD825 */ or $k1, $k1, $k0 +.L70010894: +/* 011494 70010894 10800003 */ beqz $a0, .L700108A4 +/* 011498 70010898 ACBB0128 */ sw $k1, 0x128($a1) +/* 01149C 7001089C 0C00422B */ jal __osEnqueueThread +/* 0114A0 700108A0 00000000 */ nop +.L700108A4: +/* 0114A4 700108A4 08004241 */ j __osDispatchThread +/* 0114A8 700108A8 00000000 */ nop + +glabel __osEnqueueThread +/* 0114AC 700108AC 8C980000 */ lw $t8, ($a0) +/* 0114B0 700108B0 8CAF0004 */ lw $t7, 4($a1) +/* 0114B4 700108B4 0080C825 */ move $t9, $a0 +/* 0114B8 700108B8 8F0E0004 */ lw $t6, 4($t8) +/* 0114BC 700108BC 01CF082A */ slt $at, $t6, $t7 +/* 0114C0 700108C0 14200007 */ bnez $at, .L700108E0 +/* 0114C4 700108C4 00000000 */ nop +.L700108C8: +/* 0114C8 700108C8 0300C825 */ move $t9, $t8 +/* 0114CC 700108CC 8F180000 */ lw $t8, ($t8) +/* 0114D0 700108D0 8F0E0004 */ lw $t6, 4($t8) +/* 0114D4 700108D4 01CF082A */ slt $at, $t6, $t7 +/* 0114D8 700108D8 1020FFFB */ beqz $at, .L700108C8 +/* 0114DC 700108DC 00000000 */ nop +.L700108E0: +/* 0114E0 700108E0 8F380000 */ lw $t8, ($t9) +/* 0114E4 700108E4 ACB80000 */ sw $t8, ($a1) +/* 0114E8 700108E8 AF250000 */ sw $a1, ($t9) +/* 0114EC 700108EC 03E00008 */ jr $ra +/* 0114F0 700108F0 ACA40008 */ sw $a0, 8($a1) + +glabel __osPopThread +/* 0114F4 700108F4 8C820000 */ lw $v0, ($a0) +/* 0114F8 700108F8 8C590000 */ lw $t9, ($v0) +/* 0114FC 700108FC 03E00008 */ jr $ra +/* 011500 70010900 AC990000 */ sw $t9, ($a0) + +glabel __osDispatchThread +/* 011504 70010904 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 011508 70010908 0C00423D */ jal __osPopThread +/* 01150C 7001090C 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +/* 011510 70010910 3C018002 */ lui $at, %hi(__osRunningThread) +/* 011514 70010914 AC227730 */ sw $v0, %lo(__osRunningThread)($at) +/* 011518 70010918 24080004 */ li $t0, 4 +/* 01151C 7001091C A4480010 */ sh $t0, 0x10($v0) +/* 011520 70010920 0040D025 */ move $k0, $v0 +glabel __osDispatchThreadSave +/* 011524 70010924 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) +/* 011528 70010928 8F5B0118 */ lw $k1, 0x118($k0) +/* 01152C 7001092C 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c +/* 011530 70010930 8D080000 */ lw $t0, ($t0) +/* 011534 70010934 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff +/* 011538 70010938 3369FF00 */ andi $t1, $k1, 0xff00 +/* 01153C 7001093C 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff +/* 011540 70010940 3108FF00 */ andi $t0, $t0, 0xff00 +/* 011544 70010944 01284824 */ and $t1, $t1, $t0 +/* 011548 70010948 0361D824 */ and $k1, $k1, $at +/* 01154C 7001094C 0369D825 */ or $k1, $k1, $t1 +/* 011550 70010950 409B6000 */ mtc0 $k1, $12 +/* 011554 70010954 DF5B0108 */ ld $k1, 0x108($k0) +/* 011558 70010958 DF410020 */ ld $at, 0x20($k0) +/* 01155C 7001095C DF420028 */ ld $v0, 0x28($k0) +/* 011560 70010960 03600013 */ mtlo $k1 +/* 011564 70010964 DF5B0110 */ ld $k1, 0x110($k0) +/* 011568 70010968 DF430030 */ ld $v1, 0x30($k0) +/* 01156C 7001096C DF440038 */ ld $a0, 0x38($k0) +/* 011570 70010970 DF450040 */ ld $a1, 0x40($k0) +/* 011574 70010974 DF460048 */ ld $a2, 0x48($k0) +/* 011578 70010978 DF470050 */ ld $a3, 0x50($k0) +/* 01157C 7001097C DF480058 */ ld $t0, 0x58($k0) +/* 011580 70010980 DF490060 */ ld $t1, 0x60($k0) +/* 011584 70010984 DF4A0068 */ ld $t2, 0x68($k0) +/* 011588 70010988 DF4B0070 */ ld $t3, 0x70($k0) +/* 01158C 7001098C DF4C0078 */ ld $t4, 0x78($k0) +/* 011590 70010990 DF4D0080 */ ld $t5, 0x80($k0) +/* 011594 70010994 DF4E0088 */ ld $t6, 0x88($k0) +/* 011598 70010998 DF4F0090 */ ld $t7, 0x90($k0) +/* 01159C 7001099C DF500098 */ ld $s0, 0x98($k0) +/* 0115A0 700109A0 DF5100A0 */ ld $s1, 0xa0($k0) +/* 0115A4 700109A4 DF5200A8 */ ld $s2, 0xa8($k0) +/* 0115A8 700109A8 DF5300B0 */ ld $s3, 0xb0($k0) +/* 0115AC 700109AC DF5400B8 */ ld $s4, 0xb8($k0) +/* 0115B0 700109B0 DF5500C0 */ ld $s5, 0xc0($k0) +/* 0115B4 700109B4 DF5600C8 */ ld $s6, 0xc8($k0) +/* 0115B8 700109B8 DF5700D0 */ ld $s7, 0xd0($k0) +/* 0115BC 700109BC DF5800D8 */ ld $t8, 0xd8($k0) +/* 0115C0 700109C0 DF5900E0 */ ld $t9, 0xe0($k0) +/* 0115C4 700109C4 DF5C00E8 */ ld $gp, 0xe8($k0) +/* 0115C8 700109C8 03600011 */ mthi $k1 +/* 0115CC 700109CC DF5D00F0 */ ld $sp, 0xf0($k0) +/* 0115D0 700109D0 DF5E00F8 */ ld $fp, 0xf8($k0) +/* 0115D4 700109D4 DF5F0100 */ ld $ra, 0x100($k0) +/* 0115D8 700109D8 8F5B011C */ lw $k1, 0x11c($k0) +/* 0115DC 700109DC 409B7000 */ mtc0 $k1, $14 +/* 0115E0 700109E0 8F5B0018 */ lw $k1, 0x18($k0) +/* 0115E4 700109E4 13600013 */ beqz $k1, .L70010A34 +/* 0115E8 700109E8 00000000 */ nop +/* 0115EC 700109EC 8F5B012C */ lw $k1, 0x12c($k0) +/* 0115F0 700109F0 44DBF800 */ ctc1 $k1, $31 +/* 0115F4 700109F4 D7400130 */ ldc1 $f0, 0x130($k0) +/* 0115F8 700109F8 D7420138 */ ldc1 $f2, 0x138($k0) +/* 0115FC 700109FC D7440140 */ ldc1 $f4, 0x140($k0) +/* 011600 70010A00 D7460148 */ ldc1 $f6, 0x148($k0) +/* 011604 70010A04 D7480150 */ ldc1 $f8, 0x150($k0) +/* 011608 70010A08 D74A0158 */ ldc1 $f10, 0x158($k0) +/* 01160C 70010A0C D74C0160 */ ldc1 $f12, 0x160($k0) +/* 011610 70010A10 D74E0168 */ ldc1 $f14, 0x168($k0) +/* 011614 70010A14 D7500170 */ ldc1 $f16, 0x170($k0) +/* 011618 70010A18 D7520178 */ ldc1 $f18, 0x178($k0) +/* 01161C 70010A1C D7540180 */ ldc1 $f20, 0x180($k0) +/* 011620 70010A20 D7560188 */ ldc1 $f22, 0x188($k0) +/* 011624 70010A24 D7580190 */ ldc1 $f24, 0x190($k0) +/* 011628 70010A28 D75A0198 */ ldc1 $f26, 0x198($k0) +/* 01162C 70010A2C D75C01A0 */ ldc1 $f28, 0x1a0($k0) +/* 011630 70010A30 D75E01A8 */ ldc1 $f30, 0x1a8($k0) +.L70010A34: +/* 011634 70010A34 8F5B0128 */ lw $k1, 0x128($k0) +/* 011638 70010A38 3C1A8002 */ lui $k0, %hi(__OSGlobalIntMask) # $k0, 0x8002 +/* 01163C 70010A3C 275A698C */ addiu $k0, %lo(__OSGlobalIntMask) # addiu $k0, $k0, 0x698c +/* 011640 70010A40 8F5A0000 */ lw $k0, ($k0) +/* 011644 70010A44 001AD402 */ srl $k0, $k0, 0x10 +/* 011648 70010A48 037AD824 */ and $k1, $k1, $k0 +/* 01164C 70010A4C 001BD840 */ sll $k1, $k1, 1 +/* 011650 70010A50 3C1A8003 */ lui $k0, %hi(__osRcpImTable) # $k0, 0x8003 +/* 011654 70010A54 275A93A0 */ addiu $k0, %lo(__osRcpImTable) # addiu $k0, $k0, -0x6c60 +/* 011658 70010A58 037AD821 */ addu $k1, $k1, $k0 +/* 01165C 70010A5C 977B0000 */ lhu $k1, ($k1) +/* 011660 70010A60 3C1AA430 */ lui $k0, %hi(MI_INTR_MASK_REG) # $k0, 0xa430 +/* 011664 70010A64 275A000C */ addiu $k0, %lo(MI_INTR_MASK_REG) # addiu $k0, $k0, 0xc +/* 011668 70010A68 AF5B0000 */ sw $k1, ($k0) +/* 01166C 70010A6C 00000000 */ nop +/* 011670 70010A70 00000000 */ nop +/* 011674 70010A74 00000000 */ nop +/* 011678 70010A78 00000000 */ nop +/* 01167C 70010A7C 42000018 */ eret +glabel __osCleanupThread +/* 011680 70010A80 0C006ED8 */ jal osDestroyThread +/* 011684 70010A84 00002025 */ move $a0, $zero + + +.section .data +/*80027704*/ +glabel __osHwIntTable +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 + +.section .rodata +/*80029440*/ +glabel __osIntOffTable +.byte 0,0x14,0x18,0x18,0x1C,0x1C,0x1C,0x1C +.byte 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 +.byte 0, 4, 8, 8, 0xC, 0xC, 0xC, 0xC +.byte 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 + +/*80029460*/ +glabel __osIntTable +.word redispatch +.word swl +.word sw2 +.word rcp +.word cart +.word prenmi +.word IP6_Hdlr +.word IP7_Hdlr +.word counter diff --git a/src/libultra/guPerspective.s b/src/libultra/guPerspective.s new file mode 100644 index 0000000..f054de8 --- /dev/null +++ b/src/libultra/guPerspective.s @@ -0,0 +1,182 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel guPerspectiveF +/* 010880 7000FC80 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 010884 7000FC84 44867000 */ mtc1 $a2, $f14 +/* 010888 7000FC88 AFBF0014 */ sw $ra, 0x14($sp) +/* 01088C 7000FC8C AFA7003C */ sw $a3, 0x3c($sp) +/* 010890 7000FC90 AFA40030 */ sw $a0, 0x30($sp) +/* 010894 7000FC94 AFA50034 */ sw $a1, 0x34($sp) +/* 010898 7000FC98 0C004004 */ jal guMtxIdentF +/* 01089C 7000FC9C E7AE0038 */ swc1 $f14, 0x38($sp) +/* 0108A0 7000FCA0 C7AE0038 */ lwc1 $f14, 0x38($sp) +/* 0108A4 7000FCA4 3C018003 */ lui $at, %hi(F64_80029430) #0x80030000 +/* 0108A8 7000FCA8 D4269430 */ ldc1 $f6, %lo(F64_80029430)($at) # -0x6bd0($at) +/* 0108AC 7000FCAC 46007121 */ cvt.d.s $f4, $f14 +/* 0108B0 7000FCB0 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 0108B4 7000FCB4 46262202 */ mul.d $f8, $f4, $f6 +/* 0108B8 7000FCB8 44815000 */ mtc1 $at, $f10 +/* 0108BC 7000FCBC 462043A0 */ cvt.s.d $f14, $f8 +/* 0108C0 7000FCC0 460A7303 */ div.s $f12, $f14, $f10 +/* 0108C4 7000FCC4 0FC15FA8 */ jal cosf +/* 0108C8 7000FCC8 E7AC001C */ swc1 $f12, 0x1c($sp) +/* 0108CC 7000FCCC C7AC001C */ lwc1 $f12, 0x1c($sp) +/* 0108D0 7000FCD0 0FC15FAB */ jal sinf +/* 0108D4 7000FCD4 E7A00020 */ swc1 $f0, 0x20($sp) +/* 0108D8 7000FCD8 C7A40020 */ lwc1 $f4, 0x20($sp) +/* 0108DC 7000FCDC C7A6003C */ lwc1 $f6, 0x3c($sp) +/* 0108E0 7000FCE0 C7AE0040 */ lwc1 $f14, 0x40($sp) +/* 0108E4 7000FCE4 46002083 */ div.s $f2, $f4, $f0 +/* 0108E8 7000FCE8 C7B00044 */ lwc1 $f16, 0x44($sp) +/* 0108EC 7000FCEC 3C01BF80 */ li $at, 0xBF800000 # -1.000000 +/* 0108F0 7000FCF0 44812000 */ mtc1 $at, $f4 +/* 0108F4 7000FCF4 46107480 */ add.s $f18, $f14, $f16 +/* 0108F8 7000FCF8 8FA20030 */ lw $v0, 0x30($sp) +/* 0108FC 7000FCFC 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 010900 7000FD00 46107301 */ sub.s $f12, $f14, $f16 +/* 010904 7000FD04 8FA50034 */ lw $a1, 0x34($sp) +/* 010908 7000FD08 E444002C */ swc1 $f4, 0x2c($v0) +/* 01090C 7000FD0C 00001825 */ move $v1, $zero +/* 010910 7000FD10 24040004 */ li $a0, 4 +/* 010914 7000FD14 460C9283 */ div.s $f10, $f18, $f12 +/* 010918 7000FD18 E4420014 */ swc1 $f2, 0x14($v0) +/* 01091C 7000FD1C 46061203 */ div.s $f8, $f2, $f6 +/* 010920 7000FD20 44813000 */ mtc1 $at, $f6 +/* 010924 7000FD24 E44A0028 */ swc1 $f10, 0x28($v0) +/* 010928 7000FD28 E4480000 */ swc1 $f8, ($v0) +/* 01092C 7000FD2C 460E3202 */ mul.s $f8, $f6, $f14 +/* 010930 7000FD30 44803000 */ mtc1 $zero, $f6 +/* 010934 7000FD34 00000000 */ nop +/* 010938 7000FD38 E446003C */ swc1 $f6, 0x3c($v0) +/* 01093C 7000FD3C 46104282 */ mul.s $f10, $f8, $f16 +/* 010940 7000FD40 460C5103 */ div.s $f4, $f10, $f12 +/* 010944 7000FD44 E4440038 */ swc1 $f4, 0x38($v0) +/* 010948 7000FD48 C7A00048 */ lwc1 $f0, 0x48($sp) +/* 01094C 7000FD4C C4460000 */ lwc1 $f6, ($v0) +/* 010950 7000FD50 24630001 */ addiu $v1, $v1, 1 +/* 010954 7000FD54 C4500004 */ lwc1 $f16, 4($v0) +/* 010958 7000FD58 46003282 */ mul.s $f10, $f6, $f0 +/* 01095C 7000FD5C C44C0008 */ lwc1 $f12, 8($v0) +/* 010960 7000FD60 10640010 */ beq $v1, $a0, .L7000FDA4 +/* 010964 7000FD64 C44E000C */ lwc1 $f14, 0xc($v0) +.L7000FD68: +/* 010968 7000FD68 46008202 */ mul.s $f8, $f16, $f0 +/* 01096C 7000FD6C C4460010 */ lwc1 $f6, 0x10($v0) +/* 010970 7000FD70 C4500014 */ lwc1 $f16, 0x14($v0) +/* 010974 7000FD74 46006102 */ mul.s $f4, $f12, $f0 +/* 010978 7000FD78 C44C0018 */ lwc1 $f12, 0x18($v0) +/* 01097C 7000FD7C 24630001 */ addiu $v1, $v1, 1 +/* 010980 7000FD80 46007082 */ mul.s $f2, $f14, $f0 +/* 010984 7000FD84 C44E001C */ lwc1 $f14, 0x1c($v0) +/* 010988 7000FD88 E44A0000 */ swc1 $f10, ($v0) +/* 01098C 7000FD8C 46003282 */ mul.s $f10, $f6, $f0 +/* 010990 7000FD90 E4480004 */ swc1 $f8, 4($v0) +/* 010994 7000FD94 E4440008 */ swc1 $f4, 8($v0) +/* 010998 7000FD98 24420010 */ addiu $v0, $v0, 0x10 +/* 01099C 7000FD9C 1464FFF2 */ bne $v1, $a0, .L7000FD68 +/* 0109A0 7000FDA0 E442FFFC */ swc1 $f2, -4($v0) +.L7000FDA4: +/* 0109A4 7000FDA4 46008202 */ mul.s $f8, $f16, $f0 +/* 0109A8 7000FDA8 24420010 */ addiu $v0, $v0, 0x10 +/* 0109AC 7000FDAC E44AFFF0 */ swc1 $f10, -0x10($v0) +/* 0109B0 7000FDB0 46006102 */ mul.s $f4, $f12, $f0 +/* 0109B4 7000FDB4 00000000 */ nop +/* 0109B8 7000FDB8 46007082 */ mul.s $f2, $f14, $f0 +/* 0109BC 7000FDBC E448FFF4 */ swc1 $f8, -0xc($v0) +/* 0109C0 7000FDC0 E444FFF8 */ swc1 $f4, -8($v0) +/* 0109C4 7000FDC4 E442FFFC */ swc1 $f2, -4($v0) +/* 0109C8 7000FDC8 10A00035 */ beqz $a1, .L7000FEA0 +/* 0109CC 7000FDCC 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 0109D0 7000FDD0 44814800 */ mtc1 $at, $f9 +/* 0109D4 7000FDD4 44804000 */ mtc1 $zero, $f8 +/* 0109D8 7000FDD8 46009021 */ cvt.d.s $f0, $f18 +/* 0109DC 7000FDDC 340EFFFF */ li $t6, 65535 +/* 0109E0 7000FDE0 4628003E */ c.le.d $f0, $f8 +/* 0109E4 7000FDE4 3C014100 */ li $at, 0x41000000 # 8.000000 +/* 0109E8 7000FDE8 45020004 */ bc1fl .L7000FDFC +/* 0109EC 7000FDEC 44815800 */ mtc1 $at, $f11 +/* 0109F0 7000FDF0 1000002B */ b .L7000FEA0 +/* 0109F4 7000FDF4 A4AE0000 */ sh $t6, ($a1) +/* 0109F8 7000FDF8 44815800 */ mtc1 $at, $f11 +.L7000FDFC: +/* 0109FC 7000FDFC 44805000 */ mtc1 $zero, $f10 +/* 010A00 7000FE00 24180001 */ li $t8, 1 +/* 010A04 7000FE04 3C0141E0 */ li $at, 0x41E00000 # 28.000000 +/* 010A08 7000FE08 46205103 */ div.d $f4, $f10, $f0 +/* 010A0C 7000FE0C 24080001 */ li $t0, 1 +/* 010A10 7000FE10 444FF800 */ cfc1 $t7, $31 +/* 010A14 7000FE14 44D8F800 */ ctc1 $t8, $31 +/* 010A18 7000FE18 00000000 */ nop +/* 010A1C 7000FE1C 462021A4 */ cvt.w.d $f6, $f4 +/* 010A20 7000FE20 4458F800 */ cfc1 $t8, $31 +/* 010A24 7000FE24 00000000 */ nop +/* 010A28 7000FE28 33180078 */ andi $t8, $t8, 0x78 +/* 010A2C 7000FE2C 53000014 */ beql $t8, $zero, .L7000FE80 +/* 010A30 7000FE30 44183000 */ mfc1 $t8, $f6 +/* 010A34 7000FE34 44813800 */ mtc1 $at, $f7 +/* 010A38 7000FE38 44803000 */ mtc1 $zero, $f6 +/* 010A3C 7000FE3C 24180001 */ li $t8, 1 +/* 010A40 7000FE40 46262181 */ sub.d $f6, $f4, $f6 +/* 010A44 7000FE44 44D8F800 */ ctc1 $t8, $31 +/* 010A48 7000FE48 00000000 */ nop +/* 010A4C 7000FE4C 462031A4 */ cvt.w.d $f6, $f6 +/* 010A50 7000FE50 4458F800 */ cfc1 $t8, $31 +/* 010A54 7000FE54 00000000 */ nop +/* 010A58 7000FE58 33180078 */ andi $t8, $t8, 0x78 +/* 010A5C 7000FE5C 17000005 */ bnez $t8, .L7000FE74 +/* 010A60 7000FE60 00000000 */ nop +/* 010A64 7000FE64 44183000 */ mfc1 $t8, $f6 +/* 010A68 7000FE68 3C018000 */ lui $at, 0x8000 +/* 010A6C 7000FE6C 10000007 */ b .L7000FE8C +/* 010A70 7000FE70 0301C025 */ or $t8, $t8, $at +.L7000FE74: +/* 010A74 7000FE74 10000005 */ b .L7000FE8C +/* 010A78 7000FE78 2418FFFF */ li $t8, -1 +/* 010A7C 7000FE7C 44183000 */ mfc1 $t8, $f6 +.L7000FE80: +/* 010A80 7000FE80 00000000 */ nop +/* 010A84 7000FE84 0700FFFB */ bltz $t8, .L7000FE74 +/* 010A88 7000FE88 00000000 */ nop +.L7000FE8C: +/* 010A8C 7000FE8C 44CFF800 */ ctc1 $t7, $31 +/* 010A90 7000FE90 3319FFFF */ andi $t9, $t8, 0xffff +/* 010A94 7000FE94 1F200002 */ bgtz $t9, .L7000FEA0 +/* 010A98 7000FE98 A4B80000 */ sh $t8, ($a1) +/* 010A9C 7000FE9C A4A80000 */ sh $t0, ($a1) +.L7000FEA0: +/* 010AA0 7000FEA0 8FBF0014 */ lw $ra, 0x14($sp) +/* 010AA4 7000FEA4 27BD0030 */ addiu $sp, $sp, 0x30 +/* 010AA8 7000FEA8 03E00008 */ jr $ra +/* 010AAC 7000FEAC 00000000 */ nop + +glabel guPerspective +/* 010AB0 7000FEB0 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 010AB4 7000FEB4 44866000 */ mtc1 $a2, $f12 +/* 010AB8 7000FEB8 44877000 */ mtc1 $a3, $f14 +/* 010ABC 7000FEBC C7A40078 */ lwc1 $f4, 0x78($sp) +/* 010AC0 7000FEC0 C7A6007C */ lwc1 $f6, 0x7c($sp) +/* 010AC4 7000FEC4 C7A80080 */ lwc1 $f8, 0x80($sp) +/* 010AC8 7000FEC8 AFBF0024 */ sw $ra, 0x24($sp) +/* 010ACC 7000FECC AFA40068 */ sw $a0, 0x68($sp) +/* 010AD0 7000FED0 44066000 */ mfc1 $a2, $f12 +/* 010AD4 7000FED4 44077000 */ mfc1 $a3, $f14 +/* 010AD8 7000FED8 27A40028 */ addiu $a0, $sp, 0x28 +/* 010ADC 7000FEDC E7A40010 */ swc1 $f4, 0x10($sp) +/* 010AE0 7000FEE0 E7A60014 */ swc1 $f6, 0x14($sp) +/* 010AE4 7000FEE4 0C003F20 */ jal guPerspectiveF +/* 010AE8 7000FEE8 E7A80018 */ swc1 $f8, 0x18($sp) +/* 010AEC 7000FEEC 27A40028 */ addiu $a0, $sp, 0x28 +/* 010AF0 7000FEF0 0C003FC4 */ jal guMtxF2L +/* 010AF4 7000FEF4 8FA50068 */ lw $a1, 0x68($sp) +/* 010AF8 7000FEF8 8FBF0024 */ lw $ra, 0x24($sp) +/* 010AFC 7000FEFC 27BD0068 */ addiu $sp, $sp, 0x68 +/* 010B00 7000FF00 03E00008 */ jr $ra +/* 010B04 7000FF04 00000000 */ nop + diff --git a/src/libultra/libultra.s b/src/libultra/libultra.s index 8cfc35d..32cbf72 100644 --- a/src/libultra/libultra.s +++ b/src/libultra/libultra.s @@ -9,10740 +9,7 @@ .include "macros.inc" -.section .text, "ax" -osTvType = 0x80000300; - -glabel osPiRawStartDma -/* 00DB90 7000CF90 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00DB94 7000CF94 AFBF001C */ sw $ra, 0x1c($sp) -/* 00DB98 7000CF98 AFA40028 */ sw $a0, 0x28($sp) -/* 00DB9C 7000CF9C AFA5002C */ sw $a1, 0x2c($sp) -/* 00DBA0 7000CFA0 AFA60030 */ sw $a2, 0x30($sp) -/* 00DBA4 7000CFA4 AFA70034 */ sw $a3, 0x34($sp) -/* 00DBA8 7000CFA8 AFB10018 */ sw $s1, 0x18($sp) -/* 00DBAC 7000CFAC AFB00014 */ sw $s0, 0x14($sp) -/* 00DBB0 7000CFB0 3C0EA460 */ lui $t6, %hi(PI_STATUS_REG) # $t6, 0xa460 -/* 00DBB4 7000CFB4 8DD00010 */ lw $s0, %lo(PI_STATUS_REG)($t6) -/* 00DBB8 7000CFB8 320F0003 */ andi $t7, $s0, 3 -/* 00DBBC 7000CFBC 11E00006 */ beqz $t7, .L7000CFD8 -/* 00DBC0 7000CFC0 00000000 */ nop -.L7000CFC4: -/* 00DBC4 7000CFC4 3C18A460 */ lui $t8, %hi(PI_STATUS_REG) # $t8, 0xa460 -/* 00DBC8 7000CFC8 8F100010 */ lw $s0, %lo(PI_STATUS_REG)($t8) -/* 00DBCC 7000CFCC 32190003 */ andi $t9, $s0, 3 -/* 00DBD0 7000CFD0 1720FFFC */ bnez $t9, .L7000CFC4 -/* 00DBD4 7000CFD4 00000000 */ nop -.L7000CFD8: -/* 00DBD8 7000CFD8 0C003A2C */ jal osVirtualToPhysical -/* 00DBDC 7000CFDC 8FA40030 */ lw $a0, 0x30($sp) -/* 00DBE0 7000CFE0 3C08A460 */ lui $t0, 0xa460 -/* 00DBE4 7000CFE4 AD020000 */ sw $v0, ($t0) -/* 00DBE8 7000CFE8 3C098000 */ lui $t1, %hi(osRomBase) -/* 00DBEC 7000CFEC 8D290308 */ lw $t1, %lo(osRomBase)($t1) -/* 00DBF0 7000CFF0 8FAA002C */ lw $t2, 0x2c($sp) -/* 00DBF4 7000CFF4 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 00DBF8 7000CFF8 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 00DBFC 7000CFFC 012A5825 */ or $t3, $t1, $t2 -/* 00DC00 7000D000 01616024 */ and $t4, $t3, $at -/* 00DC04 7000D004 3C0DA460 */ lui $t5, %hi(PI_CART_ADDR_REG) # $t5, 0xa460 -/* 00DC08 7000D008 ADAC0004 */ sw $t4, %lo(PI_CART_ADDR_REG)($t5) -/* 00DC0C 7000D00C 8FB10028 */ lw $s1, 0x28($sp) -/* 00DC10 7000D010 12200005 */ beqz $s1, .L7000D028 -/* 00DC14 7000D014 24010001 */ li $at, 1 -/* 00DC18 7000D018 12210008 */ beq $s1, $at, .L7000D03C -/* 00DC1C 7000D01C 00000000 */ nop -/* 00DC20 7000D020 1000000B */ b .L7000D050 -/* 00DC24 7000D024 00000000 */ nop -.L7000D028: -/* 00DC28 7000D028 8FAE0034 */ lw $t6, 0x34($sp) -/* 00DC2C 7000D02C 3C18A460 */ lui $t8, %hi(PI_WR_LEN_REG) # $t8, 0xa460 -/* 00DC30 7000D030 25CFFFFF */ addiu $t7, $t6, -1 -/* 00DC34 7000D034 10000008 */ b .L7000D058 -/* 00DC38 7000D038 AF0F000C */ sw $t7, %lo(PI_WR_LEN_REG)($t8) -.L7000D03C: -/* 00DC3C 7000D03C 8FB90034 */ lw $t9, 0x34($sp) -/* 00DC40 7000D040 3C09A460 */ lui $t1, %hi(PI_RD_LEN_REG) # $t1, 0xa460 -/* 00DC44 7000D044 2728FFFF */ addiu $t0, $t9, -1 -/* 00DC48 7000D048 10000003 */ b .L7000D058 -/* 00DC4C 7000D04C AD280008 */ sw $t0, %lo(PI_RD_LEN_REG)($t1) -.L7000D050: -/* 00DC50 7000D050 10000002 */ b .L7000D05C -/* 00DC54 7000D054 2402FFFF */ li $v0, -1 -.L7000D058: -/* 00DC58 7000D058 00001025 */ move $v0, $zero -.L7000D05C: -/* 00DC5C 7000D05C 8FBF001C */ lw $ra, 0x1c($sp) -/* 00DC60 7000D060 8FB00014 */ lw $s0, 0x14($sp) -/* 00DC64 7000D064 8FB10018 */ lw $s1, 0x18($sp) -/* 00DC68 7000D068 03E00008 */ jr $ra -/* 00DC6C 7000D06C 27BD0028 */ addiu $sp, $sp, 0x28 - -glabel osPiGetStatus -/* 00DC70 7000D070 3C0EA460 */ lui $t6, 0xa460 -/* 00DC74 7000D074 03E00008 */ jr $ra -/* 00DC78 7000D078 8DC20010 */ lw $v0, 0x10($t6) - -/* 00DC7C 7000D07C 00000000 */ nop - -.section .text -glabel osInitialize -/* 00DC80 7000D080 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 00DC84 7000D084 AFBF001C */ sw $ra, 0x1c($sp) -/* 00DC88 7000D088 240E0001 */ li $t6, 1 -/* 00DC8C 7000D08C 3C018006 */ lui $at, %hi(__osFinalRom) -/* 00DC90 7000D090 AFB00018 */ sw $s0, 0x18($sp) -/* 00DC94 7000D094 AFA00038 */ sw $zero, 0x38($sp) -/* 00DC98 7000D098 0C005ECC */ jal __osGetSR -/* 00DC9C 7000D09C AC2E57E0 */ sw $t6, %lo(__osFinalRom)($at) -/* 00DCA0 7000D0A0 00408025 */ move $s0, $v0 -/* 00DCA4 7000D0A4 3C012000 */ lui $at, 0x2000 -/* 00DCA8 7000D0A8 0C005EC8 */ jal __osSetSR -/* 00DCAC 7000D0AC 02012025 */ or $a0, $s0, $at -/* 00DCB0 7000D0B0 3C040100 */ lui $a0, (0x01000800 >> 16) # lui $a0, 0x100 -/* 00DCB4 7000D0B4 0C003508 */ jal __osSetFpcCsr -/* 00DCB8 7000D0B8 34840800 */ ori $a0, (0x01000800 & 0xFFFF) # ori $a0, $a0, 0x800 -/* 00DCBC 7000D0BC 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 -/* 00DCC0 7000D0C0 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc -/* 00DCC4 7000D0C4 0C005ED0 */ jal __osSiRawReadIo -/* 00DCC8 7000D0C8 27A5003C */ addiu $a1, $sp, 0x3c -/* 00DCCC 7000D0CC 10400007 */ beqz $v0, .L7000D0EC -/* 00DCD0 7000D0D0 00000000 */ nop -.L7000D0D4: -/* 00DCD4 7000D0D4 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 -/* 00DCD8 7000D0D8 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc -/* 00DCDC 7000D0DC 0C005ED0 */ jal __osSiRawReadIo -/* 00DCE0 7000D0E0 27A5003C */ addiu $a1, $sp, 0x3c -/* 00DCE4 7000D0E4 1440FFFB */ bnez $v0, .L7000D0D4 -/* 00DCE8 7000D0E8 00000000 */ nop -.L7000D0EC: -/* 00DCEC 7000D0EC 8FA5003C */ lw $a1, 0x3c($sp) -/* 00DCF0 7000D0F0 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 -/* 00DCF4 7000D0F4 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc -/* 00DCF8 7000D0F8 34AF0008 */ ori $t7, $a1, 8 -/* 00DCFC 7000D0FC 0C005EE4 */ jal __osSiRawWriteIo -/* 00DD00 7000D100 01E02825 */ move $a1, $t7 -/* 00DD04 7000D104 10400009 */ beqz $v0, .L7000D12C -/* 00DD08 7000D108 00000000 */ nop -.L7000D10C: -/* 00DD0C 7000D10C 8FA5003C */ lw $a1, 0x3c($sp) -/* 00DD10 7000D110 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 -/* 00DD14 7000D114 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc -/* 00DD18 7000D118 34B80008 */ ori $t8, $a1, 8 -/* 00DD1C 7000D11C 0C005EE4 */ jal __osSiRawWriteIo -/* 00DD20 7000D120 03002825 */ move $a1, $t8 -/* 00DD24 7000D124 1440FFF9 */ bnez $v0, .L7000D10C -/* 00DD28 7000D128 00000000 */ nop -.L7000D12C: -/* 00DD2C 7000D12C 3C087001 */ lui $t0, %hi(__osExceptionPreamble) # $t0, 0x7001 -/* 00DD30 7000D130 25080190 */ addiu $t0, %lo(__osExceptionPreamble) # addiu $t0, $t0, 0x190 -/* 00DD34 7000D134 8D010000 */ lw $at, ($t0) -/* 00DD38 7000D138 3C198000 */ lui $t9, 0x8000 -/* 00DD3C 7000D13C 3C0D7001 */ lui $t5, %hi(__osExceptionPreamble) # $t5, 0x7001 -/* 00DD40 7000D140 AF210000 */ sw $at, ($t9) -/* 00DD44 7000D144 8D0B0004 */ lw $t3, 4($t0) -/* 00DD48 7000D148 25AD0190 */ addiu $t5, %lo(__osExceptionPreamble) # addiu $t5, $t5, 0x190 -/* 00DD4C 7000D14C 3C0C8000 */ lui $t4, 0x8000 -/* 00DD50 7000D150 AF2B0004 */ sw $t3, 4($t9) -/* 00DD54 7000D154 8D010008 */ lw $at, 8($t0) -/* 00DD58 7000D158 358C0080 */ ori $t4, (0x80000080 & 0xFFFF) # ori $t4, $t4, 0x80 -/* 00DD5C 7000D15C 3C097001 */ lui $t1, %hi(__osExceptionPreamble) # $t1, 0x7001 -/* 00DD60 7000D160 AF210008 */ sw $at, 8($t9) -/* 00DD64 7000D164 8D0B000C */ lw $t3, 0xc($t0) -/* 00DD68 7000D168 25290190 */ addiu $t1, %lo(__osExceptionPreamble) # addiu $t1, $t1, 0x190 -/* 00DD6C 7000D16C 3C0A8000 */ lui $t2, 0x8000 -/* 00DD70 7000D170 AF2B000C */ sw $t3, 0xC($t9) -/* 00DD74 7000D174 8DA10000 */ lw $at, 0($t5) -/* 00DD78 7000D178 354A0100 */ ori $t2, (0x80000100 & 0xFFFF) # ori $t2, $t2, 0x100 -/* 00DD7C 7000D17C 3C0E7001 */ lui $t6, %hi(__osExceptionPreamble) # $t6, 0x7001 -/* 00DD80 7000D180 AD810000 */ sw $at, 0($t4) -/* 00DD84 7000D184 8DB80004 */ lw $t8, 4($t5) -/* 00DD88 7000D188 25CE0190 */ addiu $t6, %lo(__osExceptionPreamble) # addiu $t6, $t6, 0x190 -/* 00DD8C 7000D18C 3C0F8000 */ lui $t7, 0x8000 -/* 00DD90 7000D190 AD980004 */ sw $t8, 4($t4) -/* 00DD94 7000D194 8DA10008 */ lw $at, 8($t5) -/* 00DD98 7000D198 35EF0180 */ ori $t7, (0x80000180 & 0xFFFF) # ori $t7, $t7, 0x180 -/* 00DD9C 7000D19C 3C048000 */ lui $a0, 0x8000 -/* 00DDA0 7000D1A0 AD810008 */ sw $at, 8($t4) -/* 00DDA4 7000D1A4 8DB8000C */ lw $t8, 0xc($t5) -/* 00DDA8 7000D1A8 24050190 */ li $a1, 400 -/* 00DDAC 7000D1AC AD98000C */ sw $t8, 0xC($t4) -/* 00DDB0 7000D1B0 8D210000 */ lw $at, 0($t1) -/* 00DDB4 7000D1B4 AD410000 */ sw $at, 0($t2) -/* 00DDB8 7000D1B8 8D2B0004 */ lw $t3, 4($t1) -/* 00DDBC 7000D1BC AD4B0004 */ sw $t3, 4($t2) -/* 00DDC0 7000D1C0 8D210008 */ lw $at, 8($t1) -/* 00DDC4 7000D1C4 AD410008 */ sw $at, 8($t2) -/* 00DDC8 7000D1C8 8D2B000C */ lw $t3, 0xc($t1) -/* 00DDCC 7000D1CC AD4B000C */ sw $t3, 0xC($t2) -/* 00DDD0 7000D1D0 8DC10000 */ lw $at, 0($t6) -/* 00DDD4 7000D1D4 ADE10000 */ sw $at, 0($t7) -/* 00DDD8 7000D1D8 8DD80004 */ lw $t8, 4($t6) -/* 00DDDC 7000D1DC ADF80004 */ sw $t8, 4($t7) -/* 00DDE0 7000D1E0 8DC10008 */ lw $at, 8($t6) -/* 00DDE4 7000D1E4 ADE10008 */ sw $at, 8($t7) -/* 00DDE8 7000D1E8 8DD8000C */ lw $t8, 0xc($t6) -/* 00DDEC 7000D1EC 0C0042F4 */ jal osWritebackDCache -/* 00DDF0 7000D1F0 ADF8000C */ sw $t8, 0xC($t7) -/* 00DDF4 7000D1F4 3C048000 */ lui $a0, 0x8000 -/* 00DDF8 7000D1F8 0C0034D4 */ jal osInvalICache -/* 00DDFC 7000D1FC 24050190 */ li $a1, 400 -/* 00DE00 7000D200 0C0005E0 */ jal osMapTLBRdb -/* 00DE04 7000D204 00000000 */ nop -/* 00DE08 7000D208 24040004 */ li $a0, 4 -/* 00DE0C 7000D20C 0C005EF8 */ jal osPiRawReadIo -/* 00DE10 7000D210 27A50038 */ addiu $a1, $sp, 0x38 -/* 00DE14 7000D214 8FA80038 */ lw $t0, 0x38($sp) -/* 00DE18 7000D218 2401FFF0 */ li $at, -16 -/* 00DE1C 7000D21C 0101C824 */ and $t9, $t0, $at -/* 00DE20 7000D220 13200006 */ beqz $t9, .L7000D23C -/* 00DE24 7000D224 AFB90038 */ sw $t9, 0x38($sp) -/* 00DE28 7000D228 3C018002 */ lui $at, %hi(osClockRate) -/* 00DE2C 7000D22C 03205825 */ move $t3, $t9 -/* 00DE30 7000D230 240A0000 */ li $t2, 0 -/* 00DE34 7000D234 AC2A6980 */ sw $t2, %lo(osClockRate)($at) -/* 00DE38 7000D238 AC2B6984 */ sw $t3, %lo(osClockRate+4)($at) -.L7000D23C: -/* 00DE3C 7000D23C 3C048002 */ lui $a0, %hi(osClockRate) -/* 00DE40 7000D240 3C058002 */ lui $a1, %hi(osClockRate) -/* 00DE44 7000D244 8CA56984 */ lw $a1, %lo(osClockRate+4)($a1) -/* 00DE48 7000D248 8C846980 */ lw $a0, %lo(osClockRate)($a0) -/* 00DE4C 7000D24C 24060000 */ li $a2, 0 -/* 00DE50 7000D250 0C003B6A */ jal __ll_mul -/* 00DE54 7000D254 24070003 */ li $a3, 3 -/* 00DE58 7000D258 AFA20020 */ sw $v0, 0x20($sp) -/* 00DE5C 7000D25C AFA30024 */ sw $v1, 0x24($sp) -/* 00DE60 7000D260 8FA50024 */ lw $a1, 0x24($sp) -/* 00DE64 7000D264 8FA40020 */ lw $a0, 0x20($sp) -/* 00DE68 7000D268 24060000 */ li $a2, 0 -/* 00DE6C 7000D26C 0C003B2A */ jal __ull_div -/* 00DE70 7000D270 24070004 */ li $a3, 4 -/* 00DE74 7000D274 3C098000 */ lui $t1, %hi(osResetType) -/* 00DE78 7000D278 8D29030C */ lw $t1, %lo(osResetType)($t1) -/* 00DE7C 7000D27C 3C018002 */ lui $at, %hi(osClockRate) -/* 00DE80 7000D280 AC226980 */ sw $v0, %lo(osClockRate)($at) -/* 00DE84 7000D284 15200005 */ bnez $t1, .L7000D29C -/* 00DE88 7000D288 AC236984 */ sw $v1, %lo(osClockRate+4)($at) -/* 00DE8C 7000D28C 3C048000 */ lui $a0, %hi(osAppNMIBuffer) -/* 00DE90 7000D290 2484031C */ addiu $a0, %lo(osAppNMIBuffer) # addiu $a0, $a0, 0x31c -/* 00DE94 7000D294 0C005F10 */ jal _blkclr -/* 00DE98 7000D298 24050040 */ li $a1, 64 -.L7000D29C: -/* 00DE9C 7000D29C 3C0DA460 */ lui $t5, %hi(PI_STATUS_REG) # $t5, 0xa460 -/* 00DEA0 7000D2A0 8DAC0010 */ lw $t4, %lo(PI_STATUS_REG)($t5) -/* 00DEA4 7000D2A4 318F0003 */ andi $t7, $t4, 3 -/* 00DEA8 7000D2A8 11E00008 */ beqz $t7, .L7000D2CC -/* 00DEAC 7000D2AC AFAC0030 */ sw $t4, 0x30($sp) -.L7000D2B0: -/* 00DEB0 7000D2B0 3C0EA460 */ lui $t6, %hi(PI_STATUS_REG) # $t6, 0xa460 -/* 00DEB4 7000D2B4 8DD80010 */ lw $t8, %lo(PI_STATUS_REG)($t6) -/* 00DEB8 7000D2B8 AFB80030 */ sw $t8, 0x30($sp) -/* 00DEBC 7000D2BC 8FA80030 */ lw $t0, 0x30($sp) -/* 00DEC0 7000D2C0 31190003 */ andi $t9, $t0, 3 -/* 00DEC4 7000D2C4 1720FFFA */ bnez $t9, .L7000D2B0 -/* 00DEC8 7000D2C8 00000000 */ nop -.L7000D2CC: -/* 00DECC 7000D2CC 3C0AA500 */ lui $t2, %hi(ASIC_STATUS) # $t2, 0xa500 -/* 00DED0 7000D2D0 8D4B0508 */ lw $t3, %lo(ASIC_STATUS)($t2) -/* 00DED4 7000D2D4 3169FFFF */ andi $t1, $t3, 0xffff -/* 00DED8 7000D2D8 1520000A */ bnez $t1, .L7000D304 -/* 00DEDC 7000D2DC AFAB0034 */ sw $t3, 0x34($sp) -/* 00DEE0 7000D2E0 240D0001 */ li $t5, 1 -/* 00DEE4 7000D2E4 3C018002 */ lui $at, %hi(osDiskExist) -/* 00DEE8 7000D2E8 3C057001 */ lui $a1, %hi(__osLeoInterrupt) # $a1, 0x7001 -/* 00DEEC 7000D2EC AC2D6990 */ sw $t5, %lo(osDiskExist)($at) -/* 00DEF0 7000D2F0 24A57D30 */ addiu $a1, %lo(__osLeoInterrupt) # addiu $a1, $a1, 0x7d30 -/* 00DEF4 7000D2F4 0C005F38 */ jal __osSetHWIntrRoutine -/* 00DEF8 7000D2F8 24040001 */ li $a0, 1 -/* 00DEFC 7000D2FC 10000003 */ b .L7000D30C -/* 00DF00 7000D300 00000000 */ nop -.L7000D304: -/* 00DF04 7000D304 3C018002 */ lui $at, %hi(osDiskExist) -/* 00DF08 7000D308 AC206990 */ sw $zero, %lo(osDiskExist)($at) -.L7000D30C: -/* 00DF0C 7000D30C 8FBF001C */ lw $ra, 0x1c($sp) -/* 00DF10 7000D310 8FB00018 */ lw $s0, 0x18($sp) -/* 00DF14 7000D314 27BD0040 */ addiu $sp, $sp, 0x40 -/* 00DF18 7000D318 03E00008 */ jr $ra -/* 00DF1C 7000D31C 00000000 */ nop - -.section .data -glabel osClockRate -.dword 62500000 -glabel __osShutdown - .word 0 -glabel __OSGlobalIntMask - .word 0x3FFF01 -glabel osDiskExist - .word 0 -.align 4 -.section .rodata -.section .bss -glabel __osFinalRom -.word 0 -.word 0 -.word 0 -.word 0 -.section .text -glabel osWritebackDCacheAll -/* 00DF20 7000D320 3C088000 */ lui $t0, 0x8000 -/* 00DF24 7000D324 240A2000 */ li $t2, 8192 -/* 00DF28 7000D328 010A4821 */ addu $t1, $t0, $t2 -/* 00DF2C 7000D32C 2529FFF0 */ addiu $t1, $t1, -0x10 -.L7000D330: -/* 00DF30 7000D330 BD010000 */ cache 1, ($t0) -/* 00DF34 7000D334 0109082B */ sltu $at, $t0, $t1 -/* 00DF38 7000D338 1420FFFD */ bnez $at, .L7000D330 -/* 00DF3C 7000D33C 25080010 */ addiu $t0, $t0, 0x10 -/* 00DF40 7000D340 03E00008 */ jr $ra -/* 00DF44 7000D344 00000000 */ nop - -/* 00DF48 7000D348 00000000 */ nop -/* 00DF4C 7000D34C 00000000 */ nop -glabel osInvalICache -/* 00DF50 7000D350 18A00011 */ blez $a1, .L7000D398 -/* 00DF54 7000D354 00000000 */ nop -/* 00DF58 7000D358 240B4000 */ li $t3, 16384 -/* 00DF5C 7000D35C 00AB082B */ sltu $at, $a1, $t3 -/* 00DF60 7000D360 1020000F */ beqz $at, .L7000D3A0 -/* 00DF64 7000D364 00000000 */ nop -/* 00DF68 7000D368 00804025 */ move $t0, $a0 -/* 00DF6C 7000D36C 00854821 */ addu $t1, $a0, $a1 -/* 00DF70 7000D370 0109082B */ sltu $at, $t0, $t1 -/* 00DF74 7000D374 10200008 */ beqz $at, .L7000D398 -/* 00DF78 7000D378 00000000 */ nop -/* 00DF7C 7000D37C 310A001F */ andi $t2, $t0, 0x1f -/* 00DF80 7000D380 2529FFE0 */ addiu $t1, $t1, -0x20 -/* 00DF84 7000D384 010A4023 */ subu $t0, $t0, $t2 -.L7000D388: -/* 00DF88 7000D388 BD100000 */ cache 0x10, ($t0) -/* 00DF8C 7000D38C 0109082B */ sltu $at, $t0, $t1 -/* 00DF90 7000D390 1420FFFD */ bnez $at, .L7000D388 -/* 00DF94 7000D394 25080020 */ addiu $t0, $t0, 0x20 -.L7000D398: -/* 00DF98 7000D398 03E00008 */ jr $ra -/* 00DF9C 7000D39C 00000000 */ nop - -.L7000D3A0: -/* 00DFA0 7000D3A0 3C088000 */ lui $t0, 0x8000 -/* 00DFA4 7000D3A4 010B4821 */ addu $t1, $t0, $t3 -/* 00DFA8 7000D3A8 2529FFE0 */ addiu $t1, $t1, -0x20 -.L7000D3AC: -/* 00DFAC 7000D3AC BD000000 */ cache 0, ($t0) -/* 00DFB0 7000D3B0 0109082B */ sltu $at, $t0, $t1 -/* 00DFB4 7000D3B4 1420FFFD */ bnez $at, .L7000D3AC -/* 00DFB8 7000D3B8 25080020 */ addiu $t0, $t0, 0x20 -/* 00DFBC 7000D3BC 03E00008 */ jr $ra -/* 00DFC0 7000D3C0 00000000 */ nop - -/* 00DFC4 7000D3C4 00000000 */ nop -/* 00DFC8 7000D3C8 00000000 */ nop -/* 00DFCC 7000D3CC 00000000 */ nop -glabel osUnmapTLB -/* 00DFD0 7000D3D0 40085000 */ mfc0 $t0, $10 -/* 00DFD4 7000D3D4 40840000 */ mtc0 $a0, $0 -/* 00DFD8 7000D3D8 3C098000 */ lui $t1, 0x8000 -/* 00DFDC 7000D3DC 40895000 */ mtc0 $t1, $10 -/* 00DFE0 7000D3E0 40801000 */ mtc0 $zero, $2 -/* 00DFE4 7000D3E4 40801800 */ mtc0 $zero, $3 -/* 00DFE8 7000D3E8 00000000 */ nop -/* 00DFEC 7000D3EC 42000002 */ tlbwi -/* 00DFF0 7000D3F0 00000000 */ nop -/* 00DFF4 7000D3F4 00000000 */ nop -/* 00DFF8 7000D3F8 00000000 */ nop -/* 00DFFC 7000D3FC 00000000 */ nop -/* 00E000 7000D400 40885000 */ mtc0 $t0, $10 -/* 00E004 7000D404 03E00008 */ jr $ra -/* 00E008 7000D408 00000000 */ nop - -/* 00E00C 7000D40C 00000000 */ nop -glabel __osGetFpcCsr -/* 00E010 7000D410 4442F800 */ cfc1 $v0, $31 -/* 00E014 7000D414 03E00008 */ jr $ra -/* 00E018 7000D418 00000000 */ nop - -/* 00E01C 7000D41C 00000000 */ nop -glabel __osSetFpcCsr -/* 00E020 7000D420 4442F800 */ cfc1 $v0, $31 -/* 00E024 7000D424 44C4F800 */ ctc1 $a0, $31 -/* 00E028 7000D428 03E00008 */ jr $ra -/* 00E02C 7000D42C 00000000 */ nop - -glabel osCreateThread -/* 00E030 7000D430 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00E034 7000D434 AFA40028 */ sw $a0, 0x28($sp) -/* 00E038 7000D438 AFA5002C */ sw $a1, 0x2c($sp) -/* 00E03C 7000D43C 8FAE002C */ lw $t6, 0x2c($sp) -/* 00E040 7000D440 8FAF0028 */ lw $t7, 0x28($sp) -/* 00E044 7000D444 AFBF001C */ sw $ra, 0x1c($sp) -/* 00E048 7000D448 AFA60030 */ sw $a2, 0x30($sp) -/* 00E04C 7000D44C AFA70034 */ sw $a3, 0x34($sp) -/* 00E050 7000D450 AFB00018 */ sw $s0, 0x18($sp) -/* 00E054 7000D454 ADEE0014 */ sw $t6, 0x14($t7) -/* 00E058 7000D458 8FB90028 */ lw $t9, 0x28($sp) -/* 00E05C 7000D45C 8FB8003C */ lw $t8, 0x3c($sp) -/* 00E060 7000D460 AF380004 */ sw $t8, 4($t9) -/* 00E064 7000D464 8FA80028 */ lw $t0, 0x28($sp) -/* 00E068 7000D468 AD000000 */ sw $zero, ($t0) -/* 00E06C 7000D46C 8FA90028 */ lw $t1, 0x28($sp) -/* 00E070 7000D470 AD200008 */ sw $zero, 8($t1) -/* 00E074 7000D474 8FAB0028 */ lw $t3, 0x28($sp) -/* 00E078 7000D478 8FAA0030 */ lw $t2, 0x30($sp) -/* 00E07C 7000D47C AD6A011C */ sw $t2, 0x11c($t3) -/* 00E080 7000D480 8FAC0034 */ lw $t4, 0x34($sp) -/* 00E084 7000D484 8FAD0028 */ lw $t5, 0x28($sp) -/* 00E088 7000D488 01807825 */ move $t7, $t4 -/* 00E08C 7000D48C 000C77C3 */ sra $t6, $t4, 0x1f -/* 00E090 7000D490 ADAE0038 */ sw $t6, 0x38($t5) -/* 00E094 7000D494 ADAF003C */ sw $t7, 0x3c($t5) -/* 00E098 7000D498 8FB80038 */ lw $t8, 0x38($sp) -/* 00E09C 7000D49C 8FB90028 */ lw $t9, 0x28($sp) -/* 00E0A0 7000D4A0 3C0C7001 */ lui $t4, %hi(__osCleanupThread) # $t4, 0x7001 -/* 00E0A4 7000D4A4 03004825 */ move $t1, $t8 -/* 00E0A8 7000D4A8 2D210010 */ sltiu $at, $t1, 0x10 -/* 00E0AC 7000D4AC 001847C3 */ sra $t0, $t8, 0x1f -/* 00E0B0 7000D4B0 01015023 */ subu $t2, $t0, $at -/* 00E0B4 7000D4B4 252BFFF0 */ addiu $t3, $t1, -0x10 -/* 00E0B8 7000D4B8 AF2B00F4 */ sw $t3, 0xf4($t9) -/* 00E0BC 7000D4BC AF2A00F0 */ sw $t2, 0xf0($t9) -/* 00E0C0 7000D4C0 8FAD0028 */ lw $t5, 0x28($sp) -/* 00E0C4 7000D4C4 258C0A80 */ addiu $t4, %lo(__osCleanupThread) # addiu $t4, $t4, 0xa80 -/* 00E0C8 7000D4C8 01807825 */ move $t7, $t4 -/* 00E0CC 7000D4CC 000C77C3 */ sra $t6, $t4, 0x1f -/* 00E0D0 7000D4D0 ADAE0100 */ sw $t6, 0x100($t5) -/* 00E0D4 7000D4D4 ADAF0104 */ sw $t7, 0x104($t5) -/* 00E0D8 7000D4D8 8FA90028 */ lw $t1, 0x28($sp) -/* 00E0DC 7000D4DC 3C18003F */ lui $t8, (0x003FFF01 >> 16) # lui $t8, 0x3f -/* 00E0E0 7000D4E0 3718FF01 */ ori $t8, (0x003FFF01 & 0xFFFF) # ori $t8, $t8, 0xff01 -/* 00E0E4 7000D4E4 AFB80020 */ sw $t8, 0x20($sp) -/* 00E0E8 7000D4E8 3408FF03 */ li $t0, 65283 -/* 00E0EC 7000D4EC AD280118 */ sw $t0, 0x118($t1) -/* 00E0F0 7000D4F0 8FAA0020 */ lw $t2, 0x20($sp) -/* 00E0F4 7000D4F4 8FAC0028 */ lw $t4, 0x28($sp) -/* 00E0F8 7000D4F8 3C01003F */ lui $at, 0x3f -/* 00E0FC 7000D4FC 01415824 */ and $t3, $t2, $at -/* 00E100 7000D500 000BCC02 */ srl $t9, $t3, 0x10 -/* 00E104 7000D504 AD990128 */ sw $t9, 0x128($t4) -/* 00E108 7000D508 8FAF0028 */ lw $t7, 0x28($sp) -/* 00E10C 7000D50C 3C0E0100 */ lui $t6, (0x01000800 >> 16) # lui $t6, 0x100 -/* 00E110 7000D510 35CE0800 */ ori $t6, (0x01000800 & 0xFFFF) # ori $t6, $t6, 0x800 -/* 00E114 7000D514 ADEE012C */ sw $t6, 0x12c($t7) -/* 00E118 7000D518 8FAD0028 */ lw $t5, 0x28($sp) -/* 00E11C 7000D51C 24180001 */ li $t8, 1 -/* 00E120 7000D520 ADA00018 */ sw $zero, 0x18($t5) -/* 00E124 7000D524 8FA80028 */ lw $t0, 0x28($sp) -/* 00E128 7000D528 A5180010 */ sh $t8, 0x10($t0) -/* 00E12C 7000D52C 8FA90028 */ lw $t1, 0x28($sp) -/* 00E130 7000D530 0C00617C */ jal __osDisableInt -/* 00E134 7000D534 A5200012 */ sh $zero, 0x12($t1) -/* 00E138 7000D538 3C0A8002 */ lui $t2, %hi(__osActiveQueue) -/* 00E13C 7000D53C 8D4A772C */ lw $t2, %lo(__osActiveQueue)($t2) -/* 00E140 7000D540 8FAB0028 */ lw $t3, 0x28($sp) -/* 00E144 7000D544 00408025 */ move $s0, $v0 -/* 00E148 7000D548 3C018002 */ lui $at, %hi(__osActiveQueue) -/* 00E14C 7000D54C AD6A000C */ sw $t2, 0xc($t3) -/* 00E150 7000D550 8FB90028 */ lw $t9, 0x28($sp) -/* 00E154 7000D554 02002025 */ move $a0, $s0 -/* 00E158 7000D558 0C006184 */ jal __osRestoreInt -/* 00E15C 7000D55C AC39772C */ sw $t9, %lo(__osActiveQueue)($at) -/* 00E160 7000D560 8FBF001C */ lw $ra, 0x1c($sp) -/* 00E164 7000D564 8FB00018 */ lw $s0, 0x18($sp) -/* 00E168 7000D568 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00E16C 7000D56C 03E00008 */ jr $ra -/* 00E170 7000D570 00000000 */ nop - -/* 00E174 7000D574 00000000 */ nop -/* 00E178 7000D578 00000000 */ nop -/* 00E17C 7000D57C 00000000 */ nop -glabel osStartThread -/* 00E180 7000D580 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00E184 7000D584 AFBF001C */ sw $ra, 0x1c($sp) -/* 00E188 7000D588 AFA40028 */ sw $a0, 0x28($sp) -/* 00E18C 7000D58C AFB10018 */ sw $s1, 0x18($sp) -/* 00E190 7000D590 0C00617C */ jal __osDisableInt -/* 00E194 7000D594 AFB00014 */ sw $s0, 0x14($sp) -/* 00E198 7000D598 8FAE0028 */ lw $t6, 0x28($sp) -/* 00E19C 7000D59C 24010001 */ li $at, 1 -/* 00E1A0 7000D5A0 00408025 */ move $s0, $v0 -/* 00E1A4 7000D5A4 95D10010 */ lhu $s1, 0x10($t6) -/* 00E1A8 7000D5A8 1221000C */ beq $s1, $at, .L7000D5DC -/* 00E1AC 7000D5AC 24010008 */ li $at, 8 -/* 00E1B0 7000D5B0 1621002A */ bne $s1, $at, .L7000D65C -/* 00E1B4 7000D5B4 00000000 */ nop -/* 00E1B8 7000D5B8 8FB80028 */ lw $t8, 0x28($sp) -/* 00E1BC 7000D5BC 240F0002 */ li $t7, 2 -/* 00E1C0 7000D5C0 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 00E1C4 7000D5C4 A70F0010 */ sh $t7, 0x10($t8) -/* 00E1C8 7000D5C8 8FA50028 */ lw $a1, 0x28($sp) -/* 00E1CC 7000D5CC 0C00422B */ jal __osEnqueueThread -/* 00E1D0 7000D5D0 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -/* 00E1D4 7000D5D4 10000021 */ b .L7000D65C -/* 00E1D8 7000D5D8 00000000 */ nop -.L7000D5DC: -/* 00E1DC 7000D5DC 8FB90028 */ lw $t9, 0x28($sp) -/* 00E1E0 7000D5E0 8F280008 */ lw $t0, 8($t9) -/* 00E1E4 7000D5E4 11000005 */ beqz $t0, .L7000D5FC -/* 00E1E8 7000D5E8 00000000 */ nop -/* 00E1EC 7000D5EC 3C098002 */ lui $t1, %hi(__osRunQueue) -/* 00E1F0 7000D5F0 25297728 */ addiu $t1, %lo(__osRunQueue) # addiu $t1, $t1, 0x7728 -/* 00E1F4 7000D5F4 1509000A */ bne $t0, $t1, .L7000D620 -/* 00E1F8 7000D5F8 00000000 */ nop -.L7000D5FC: -/* 00E1FC 7000D5FC 8FAB0028 */ lw $t3, 0x28($sp) -/* 00E200 7000D600 240A0002 */ li $t2, 2 -/* 00E204 7000D604 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 00E208 7000D608 A56A0010 */ sh $t2, 0x10($t3) -/* 00E20C 7000D60C 8FA50028 */ lw $a1, 0x28($sp) -/* 00E210 7000D610 0C00422B */ jal __osEnqueueThread -/* 00E214 7000D614 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -/* 00E218 7000D618 10000010 */ b .L7000D65C -/* 00E21C 7000D61C 00000000 */ nop -.L7000D620: -/* 00E220 7000D620 8FAD0028 */ lw $t5, 0x28($sp) -/* 00E224 7000D624 240C0008 */ li $t4, 8 -/* 00E228 7000D628 A5AC0010 */ sh $t4, 0x10($t5) -/* 00E22C 7000D62C 8FAE0028 */ lw $t6, 0x28($sp) -/* 00E230 7000D630 8DC40008 */ lw $a0, 8($t6) -/* 00E234 7000D634 0C00422B */ jal __osEnqueueThread -/* 00E238 7000D638 01C02825 */ move $a1, $t6 -/* 00E23C 7000D63C 8FAF0028 */ lw $t7, 0x28($sp) -/* 00E240 7000D640 0C00423D */ jal __osPopThread -/* 00E244 7000D644 8DE40008 */ lw $a0, 8($t7) -/* 00E248 7000D648 00408825 */ move $s1, $v0 -/* 00E24C 7000D64C 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 00E250 7000D650 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -/* 00E254 7000D654 0C00422B */ jal __osEnqueueThread -/* 00E258 7000D658 02202825 */ move $a1, $s1 -.L7000D65C: -/* 00E25C 7000D65C 3C188002 */ lui $t8, %hi(__osRunningThread) -/* 00E260 7000D660 8F187730 */ lw $t8, %lo(__osRunningThread)($t8) -/* 00E264 7000D664 17000005 */ bnez $t8, .L7000D67C -/* 00E268 7000D668 00000000 */ nop -/* 00E26C 7000D66C 0C004241 */ jal __osDispatchThread -/* 00E270 7000D670 00000000 */ nop -/* 00E274 7000D674 1000000F */ b .L7000D6B4 -/* 00E278 7000D678 00000000 */ nop -.L7000D67C: -/* 00E27C 7000D67C 3C198002 */ lui $t9, %hi(__osRunningThread) -/* 00E280 7000D680 3C098002 */ lui $t1, %hi(__osRunQueue) -/* 00E284 7000D684 8D297728 */ lw $t1, %lo(__osRunQueue)($t1) -/* 00E288 7000D688 8F397730 */ lw $t9, %lo(__osRunningThread)($t9) -/* 00E28C 7000D68C 8D2A0004 */ lw $t2, 4($t1) -/* 00E290 7000D690 8F280004 */ lw $t0, 4($t9) -/* 00E294 7000D694 010A082A */ slt $at, $t0, $t2 -/* 00E298 7000D698 10200006 */ beqz $at, .L7000D6B4 -/* 00E29C 7000D69C 00000000 */ nop -/* 00E2A0 7000D6A0 240B0002 */ li $t3, 2 -/* 00E2A4 7000D6A4 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 00E2A8 7000D6A8 A72B0010 */ sh $t3, 0x10($t9) -/* 00E2AC 7000D6AC 0C0041EB */ jal __osEnqueueAndYield -/* 00E2B0 7000D6B0 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -.L7000D6B4: -/* 00E2B4 7000D6B4 0C006184 */ jal __osRestoreInt -/* 00E2B8 7000D6B8 02002025 */ move $a0, $s0 -/* 00E2BC 7000D6BC 8FBF001C */ lw $ra, 0x1c($sp) -/* 00E2C0 7000D6C0 8FB00014 */ lw $s0, 0x14($sp) -/* 00E2C4 7000D6C4 8FB10018 */ lw $s1, 0x18($sp) -/* 00E2C8 7000D6C8 03E00008 */ jr $ra -/* 00E2CC 7000D6CC 27BD0028 */ addiu $sp, $sp, 0x28 - -glabel osCreateMesgQueue -/* 00E2D0 7000D6D0 3C0E8002 */ lui $t6, %hi(__osThreadTail) -/* 00E2D4 7000D6D4 3C0F8002 */ lui $t7, %hi(__osThreadTail) -/* 00E2D8 7000D6D8 25CE7720 */ addiu $t6, %lo(__osThreadTail) # addiu $t6, $t6, 0x7720 -/* 00E2DC 7000D6DC 25EF7720 */ addiu $t7, %lo(__osThreadTail) # addiu $t7, $t7, 0x7720 -/* 00E2E0 7000D6E0 AC8E0000 */ sw $t6, ($a0) -/* 00E2E4 7000D6E4 AC8F0004 */ sw $t7, 4($a0) -/* 00E2E8 7000D6E8 AC800008 */ sw $zero, 8($a0) -/* 00E2EC 7000D6EC AC80000C */ sw $zero, 0xc($a0) -/* 00E2F0 7000D6F0 AC860010 */ sw $a2, 0x10($a0) -/* 00E2F4 7000D6F4 03E00008 */ jr $ra -/* 00E2F8 7000D6F8 AC850014 */ sw $a1, 0x14($a0) - -/* 00E2FC 7000D6FC 00000000 */ nop -/* 00E300 7000D700 00000000 */ nop -/* 00E304 7000D704 00000000 */ nop -/* 00E308 7000D708 00000000 */ nop -/* 00E30C 7000D70C 00000000 */ nop -/* 00E310 7000D710 00000000 */ nop -/* 00E314 7000D714 00000000 */ nop -/* 00E318 7000D718 00000000 */ nop -/* 00E31C 7000D71C 00000000 */ nop -/* 00E320 7000D720 00000000 */ nop -/* 00E324 7000D724 00000000 */ nop -/* 00E328 7000D728 00000000 */ nop -/* 00E32C 7000D72C 00000000 */ nop -/* 00E330 7000D730 00000000 */ nop -/* 00E334 7000D734 00000000 */ nop -/* 00E338 7000D738 00000000 */ nop -/* 00E33C 7000D73C 00000000 */ nop -glabel osStopThread -/* 00E340 7000D740 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 00E344 7000D744 AFBF0024 */ sw $ra, 0x24($sp) -/* 00E348 7000D748 AFA40038 */ sw $a0, 0x38($sp) -/* 00E34C 7000D74C AFB20020 */ sw $s2, 0x20($sp) -/* 00E350 7000D750 AFB1001C */ sw $s1, 0x1c($sp) -/* 00E354 7000D754 0C00617C */ jal __osDisableInt -/* 00E358 7000D758 AFB00018 */ sw $s0, 0x18($sp) -/* 00E35C 7000D75C 8FAE0038 */ lw $t6, 0x38($sp) -/* 00E360 7000D760 00408025 */ move $s0, $v0 -/* 00E364 7000D764 15C00003 */ bnez $t6, .L7000D774 -/* 00E368 7000D768 00000000 */ nop -/* 00E36C 7000D76C 10000003 */ b .L7000D77C -/* 00E370 7000D770 24110004 */ li $s1, 4 -.L7000D774: -/* 00E374 7000D774 8FAF0038 */ lw $t7, 0x38($sp) -/* 00E378 7000D778 95F10010 */ lhu $s1, 0x10($t7) -.L7000D77C: -/* 00E37C 7000D77C 02209025 */ move $s2, $s1 -/* 00E380 7000D780 24010002 */ li $at, 2 -/* 00E384 7000D784 1241000F */ beq $s2, $at, .L7000D7C4 -/* 00E388 7000D788 24010004 */ li $at, 4 -/* 00E38C 7000D78C 12410005 */ beq $s2, $at, .L7000D7A4 -/* 00E390 7000D790 24010008 */ li $at, 8 -/* 00E394 7000D794 1241000B */ beq $s2, $at, .L7000D7C4 -/* 00E398 7000D798 00000000 */ nop -/* 00E39C 7000D79C 10000010 */ b .L7000D7E0 -/* 00E3A0 7000D7A0 00000000 */ nop -.L7000D7A4: -/* 00E3A4 7000D7A4 3C198002 */ lui $t9, %hi(__osRunningThread) -/* 00E3A8 7000D7A8 8F397730 */ lw $t9, %lo(__osRunningThread)($t9) -/* 00E3AC 7000D7AC 24180001 */ li $t8, 1 -/* 00E3B0 7000D7B0 00002025 */ move $a0, $zero -/* 00E3B4 7000D7B4 0C0041EB */ jal __osEnqueueAndYield -/* 00E3B8 7000D7B8 A7380010 */ sh $t8, 0x10($t9) -/* 00E3BC 7000D7BC 10000008 */ b .L7000D7E0 -/* 00E3C0 7000D7C0 00000000 */ nop -.L7000D7C4: -/* 00E3C4 7000D7C4 8FA90038 */ lw $t1, 0x38($sp) -/* 00E3C8 7000D7C8 24080001 */ li $t0, 1 -/* 00E3CC 7000D7CC A5280010 */ sh $t0, 0x10($t1) -/* 00E3D0 7000D7D0 8FAA0038 */ lw $t2, 0x38($sp) -/* 00E3D4 7000D7D4 8D440008 */ lw $a0, 8($t2) -/* 00E3D8 7000D7D8 0C0042A4 */ jal __osDequeueThread -/* 00E3DC 7000D7DC 01402825 */ move $a1, $t2 -.L7000D7E0: -/* 00E3E0 7000D7E0 0C006184 */ jal __osRestoreInt -/* 00E3E4 7000D7E4 02002025 */ move $a0, $s0 -/* 00E3E8 7000D7E8 8FBF0024 */ lw $ra, 0x24($sp) -/* 00E3EC 7000D7EC 8FB00018 */ lw $s0, 0x18($sp) -/* 00E3F0 7000D7F0 8FB1001C */ lw $s1, 0x1c($sp) -/* 00E3F4 7000D7F4 8FB20020 */ lw $s2, 0x20($sp) -/* 00E3F8 7000D7F8 03E00008 */ jr $ra -/* 00E3FC 7000D7FC 27BD0038 */ addiu $sp, $sp, 0x38 - -glabel osSetThreadPri -/* 00E400 7000D800 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00E404 7000D804 AFBF001C */ sw $ra, 0x1c($sp) -/* 00E408 7000D808 AFA40028 */ sw $a0, 0x28($sp) -/* 00E40C 7000D80C AFA5002C */ sw $a1, 0x2c($sp) -/* 00E410 7000D810 0C00617C */ jal __osDisableInt -/* 00E414 7000D814 AFB00018 */ sw $s0, 0x18($sp) -/* 00E418 7000D818 8FAE0028 */ lw $t6, 0x28($sp) -/* 00E41C 7000D81C 00408025 */ move $s0, $v0 -/* 00E420 7000D820 15C00004 */ bnez $t6, .L7000D834 -/* 00E424 7000D824 00000000 */ nop -/* 00E428 7000D828 3C0F8002 */ lui $t7, %hi(__osRunningThread) -/* 00E42C 7000D82C 8DEF7730 */ lw $t7, %lo(__osRunningThread)($t7) -/* 00E430 7000D830 AFAF0028 */ sw $t7, 0x28($sp) -.L7000D834: -/* 00E434 7000D834 8FB80028 */ lw $t8, 0x28($sp) -/* 00E438 7000D838 8FA8002C */ lw $t0, 0x2c($sp) -/* 00E43C 7000D83C 8F190004 */ lw $t9, 4($t8) -/* 00E440 7000D840 13280020 */ beq $t9, $t0, .L7000D8C4 -/* 00E444 7000D844 00000000 */ nop -/* 00E448 7000D848 AF080004 */ sw $t0, 4($t8) -/* 00E44C 7000D84C 3C0A8002 */ lui $t2, %hi(__osRunningThread) -/* 00E450 7000D850 8D4A7730 */ lw $t2, %lo(__osRunningThread)($t2) -/* 00E454 7000D854 8FA90028 */ lw $t1, 0x28($sp) -/* 00E458 7000D858 112A000C */ beq $t1, $t2, .L7000D88C -/* 00E45C 7000D85C 00000000 */ nop -/* 00E460 7000D860 952B0010 */ lhu $t3, 0x10($t1) -/* 00E464 7000D864 24010001 */ li $at, 1 -/* 00E468 7000D868 11610008 */ beq $t3, $at, .L7000D88C -/* 00E46C 7000D86C 00000000 */ nop -/* 00E470 7000D870 8D240008 */ lw $a0, 8($t1) -/* 00E474 7000D874 0C0042A4 */ jal __osDequeueThread -/* 00E478 7000D878 01202825 */ move $a1, $t1 -/* 00E47C 7000D87C 8FAC0028 */ lw $t4, 0x28($sp) -/* 00E480 7000D880 8D840008 */ lw $a0, 8($t4) -/* 00E484 7000D884 0C00422B */ jal __osEnqueueThread -/* 00E488 7000D888 01802825 */ move $a1, $t4 -.L7000D88C: -/* 00E48C 7000D88C 3C0D8002 */ lui $t5, %hi(__osRunningThread) -/* 00E490 7000D890 3C0F8002 */ lui $t7, %hi(__osRunQueue) -/* 00E494 7000D894 8DEF7728 */ lw $t7, %lo(__osRunQueue)($t7) -/* 00E498 7000D898 8DAD7730 */ lw $t5, %lo(__osRunningThread)($t5) -/* 00E49C 7000D89C 8DF90004 */ lw $t9, 4($t7) -/* 00E4A0 7000D8A0 8DAE0004 */ lw $t6, 4($t5) -/* 00E4A4 7000D8A4 01D9082A */ slt $at, $t6, $t9 -/* 00E4A8 7000D8A8 10200006 */ beqz $at, .L7000D8C4 -/* 00E4AC 7000D8AC 00000000 */ nop -/* 00E4B0 7000D8B0 24080002 */ li $t0, 2 -/* 00E4B4 7000D8B4 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 00E4B8 7000D8B8 A5A80010 */ sh $t0, 0x10($t5) -/* 00E4BC 7000D8BC 0C0041EB */ jal __osEnqueueAndYield -/* 00E4C0 7000D8C0 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -.L7000D8C4: -/* 00E4C4 7000D8C4 0C006184 */ jal __osRestoreInt -/* 00E4C8 7000D8C8 02002025 */ move $a0, $s0 -/* 00E4CC 7000D8CC 8FBF001C */ lw $ra, 0x1c($sp) -/* 00E4D0 7000D8D0 8FB00018 */ lw $s0, 0x18($sp) -/* 00E4D4 7000D8D4 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00E4D8 7000D8D8 03E00008 */ jr $ra -/* 00E4DC 7000D8DC 00000000 */ nop - -glabel osGetCount -/* 00E4E0 7000D8E0 40024800 */ mfc0 $v0, $9 -/* 00E4E4 7000D8E4 03E00008 */ jr $ra -/* 00E4E8 7000D8E8 00000000 */ nop - -/* 00E4EC 7000D8EC 00000000 */ nop - -.section .text -glabel osCreateViManager -/* 00E4F0 7000D8F0 3C0E8002 */ lui $t6, %hi(__osViDevMgr) -/* 00E4F4 7000D8F4 8DCE69A0 */ lw $t6, %lo(__osViDevMgr)($t6) -/* 00E4F8 7000D8F8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 00E4FC 7000D8FC AFBF001C */ sw $ra, 0x1c($sp) -/* 00E500 7000D900 15C00059 */ bnez $t6, .L7000DA68 -/* 00E504 7000D904 AFA40030 */ sw $a0, 0x30($sp) -/* 00E508 7000D908 0C00618C */ jal __osTimerServicesInit -/* 00E50C 7000D90C 00000000 */ nop -/* 00E510 7000D910 3C048006 */ lui $a0, %hi(viEventQueue) -/* 00E514 7000D914 3C058006 */ lui $a1, %hi(viEventBuf) -/* 00E518 7000D918 24A569B8 */ addiu $a1, %lo(viEventBuf) # addiu $a1, $a1, 0x69b8 -/* 00E51C 7000D91C 248469A0 */ addiu $a0, %lo(viEventQueue) # addiu $a0, $a0, 0x69a0 -/* 00E520 7000D920 0C0035B4 */ jal osCreateMesgQueue -/* 00E524 7000D924 24060005 */ li $a2, 5 -/* 00E528 7000D928 3C018006 */ lui $at, %hi(viRetraceMsg+0x4) -/* 00E52C 7000D92C 240F000D */ li $t7, 13 -/* 00E530 7000D930 A42F69D0 */ sh $t7, %lo(viRetraceMsg)($at) -/* 00E534 7000D934 A02069D2 */ sb $zero, %lo(viRetraceMsg+0x2)($at) -/* 00E538 7000D938 AC2069D4 */ sw $zero, %lo(viRetraceMsg+0x4)($at) -/* 00E53C 7000D93C 3C018006 */ lui $at, %hi(viCounterMsg+0x4) -/* 00E540 7000D940 2418000E */ li $t8, 14 -/* 00E544 7000D944 3C058006 */ lui $a1, %hi(viEventQueue) -/* 00E548 7000D948 3C068006 */ lui $a2, %hi(viRetraceMsg) -/* 00E54C 7000D94C A43869E8 */ sh $t8, %lo(viCounterMsg)($at) -/* 00E550 7000D950 A02069EA */ sb $zero, %lo(viCounterMsg+0x2)($at) -/* 00E554 7000D954 AC2069EC */ sw $zero, %lo(viCounterMsg+0x4)($at) -/* 00E558 7000D958 24C669D0 */ addiu $a2, %lo(viRetraceMsg) # addiu $a2, $a2, 0x69d0 -/* 00E55C 7000D95C 24A569A0 */ addiu $a1, %lo(viEventQueue) # addiu $a1, $a1, 0x69a0 -/* 00E560 7000D960 0C003714 */ jal osSetEventMesg -/* 00E564 7000D964 24040007 */ li $a0, 7 -/* 00E568 7000D968 3C058006 */ lui $a1, %hi(viEventQueue) -/* 00E56C 7000D96C 3C068006 */ lui $a2, %hi(viCounterMsg) -/* 00E570 7000D970 24C669E8 */ addiu $a2, %lo(viCounterMsg) # addiu $a2, $a2, 0x69e8 -/* 00E574 7000D974 24A569A0 */ addiu $a1, %lo(viEventQueue) # addiu $a1, $a1, 0x69a0 -/* 00E578 7000D978 0C003714 */ jal osSetEventMesg -/* 00E57C 7000D97C 24040003 */ li $a0, 3 -/* 00E580 7000D980 2419FFFF */ li $t9, -1 -/* 00E584 7000D984 AFB90028 */ sw $t9, 0x28($sp) -/* 00E588 7000D988 0C00628C */ jal osGetThreadPri -/* 00E58C 7000D98C 00002025 */ move $a0, $zero -/* 00E590 7000D990 AFA20024 */ sw $v0, 0x24($sp) -/* 00E594 7000D994 8FA80024 */ lw $t0, 0x24($sp) -/* 00E598 7000D998 8FA90030 */ lw $t1, 0x30($sp) -/* 00E59C 7000D99C 0109082A */ slt $at, $t0, $t1 -/* 00E5A0 7000D9A0 10200005 */ beqz $at, .L7000D9B8 -/* 00E5A4 7000D9A4 00000000 */ nop -/* 00E5A8 7000D9A8 AFA80028 */ sw $t0, 0x28($sp) -/* 00E5AC 7000D9AC 00002025 */ move $a0, $zero -/* 00E5B0 7000D9B0 0C003600 */ jal osSetThreadPri -/* 00E5B4 7000D9B4 01202825 */ move $a1, $t1 -.L7000D9B8: -/* 00E5B8 7000D9B8 0C00617C */ jal __osDisableInt -/* 00E5BC 7000D9BC 00000000 */ nop -/* 00E5C0 7000D9C0 3C018002 */ lui $at, %hi(D_800269AC) -/* 00E5C4 7000D9C4 3C0C8006 */ lui $t4, %hi(viEventQueue) -/* 00E5C8 7000D9C8 3C0B8006 */ lui $t3, %hi(viThread) -/* 00E5CC 7000D9CC 258C69A0 */ addiu $t4, %lo(viEventQueue) # addiu $t4, $t4, 0x69a0 -/* 00E5D0 7000D9D0 240A0001 */ li $t2, 1 -/* 00E5D4 7000D9D4 256B57F0 */ addiu $t3, %lo(viThread) # addiu $t3, $t3, 0x57f0 -/* 00E5D8 7000D9D8 AC2A69A0 */ sw $t2, %lo(__osViDevMgr)($at) -/* 00E5DC 7000D9DC AC2B69A4 */ sw $t3, %lo(D_800269A4)($at) -/* 00E5E0 7000D9E0 AC2C69A8 */ sw $t4, %lo(D_800269A8)($at) -/* 00E5E4 7000D9E4 AC2C69AC */ sw $t4, %lo(D_800269AC)($at) -/* 00E5E8 7000D9E8 3C0D8006 */ lui $t5, %hi(viThreadStack) -/* 00E5EC 7000D9EC 8FAF0030 */ lw $t7, 0x30($sp) -/* 00E5F0 7000D9F0 3C018002 */ lui $at, %hi(D_800269B8) -/* 00E5F4 7000D9F4 25AD59A0 */ addiu $t5, %lo(viThreadStack) # addiu $t5, $t5, 0x59a0 -/* 00E5F8 7000D9F8 25AE1000 */ addiu $t6, $t5, 0x1000 -/* 00E5FC 7000D9FC 3C067001 */ lui $a2, %hi(viMgrMain) # $a2, 0x7001 -/* 00E600 7000DA00 3C078002 */ lui $a3, %hi(__osViDevMgr) -/* 00E604 7000DA04 AFA2002C */ sw $v0, 0x2c($sp) -/* 00E608 7000DA08 AC2069B0 */ sw $zero, %lo(D_800269B0)($at) -/* 00E60C 7000DA0C AC2069B4 */ sw $zero, %lo(D_800269B4)($at) -/* 00E610 7000DA10 AC2069B8 */ sw $zero, %lo(D_800269B8)($at) -/* 00E614 7000DA14 24E769A0 */ addiu $a3, %lo(__osViDevMgr) # addiu $a3, $a3, 0x69a0 -/* 00E618 7000DA18 24C6DA78 */ addiu $a2, %lo(viMgrMain) # addiu $a2, $a2, -0x2588 -/* 00E61C 7000DA1C AFAE0010 */ sw $t6, 0x10($sp) -/* 00E620 7000DA20 01602025 */ move $a0, $t3 -/* 00E624 7000DA24 00002825 */ move $a1, $zero -/* 00E628 7000DA28 0C00350C */ jal osCreateThread -/* 00E62C 7000DA2C AFAF0014 */ sw $t7, 0x14($sp) -/* 00E630 7000DA30 0C006294 */ jal __osViInit -/* 00E634 7000DA34 00000000 */ nop -/* 00E638 7000DA38 3C048006 */ lui $a0, %hi(viThread) -/* 00E63C 7000DA3C 0C003560 */ jal osStartThread -/* 00E640 7000DA40 248457F0 */ addiu $a0, %lo(viThread) # addiu $a0, $a0, 0x57f0 -/* 00E644 7000DA44 0C006184 */ jal __osRestoreInt -/* 00E648 7000DA48 8FA4002C */ lw $a0, 0x2c($sp) -/* 00E64C 7000DA4C 8FB80028 */ lw $t8, 0x28($sp) -/* 00E650 7000DA50 2401FFFF */ li $at, -1 -/* 00E654 7000DA54 13010004 */ beq $t8, $at, .L7000DA68 -/* 00E658 7000DA58 00000000 */ nop -/* 00E65C 7000DA5C 00002025 */ move $a0, $zero -/* 00E660 7000DA60 0C003600 */ jal osSetThreadPri -/* 00E664 7000DA64 03002825 */ move $a1, $t8 -.L7000DA68: -/* 00E668 7000DA68 8FBF001C */ lw $ra, 0x1c($sp) -/* 00E66C 7000DA6C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 00E670 7000DA70 03E00008 */ jr $ra -/* 00E674 7000DA74 00000000 */ nop - -glabel viMgrMain -/* 00E678 7000DA78 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 00E67C 7000DA7C AFBF001C */ sw $ra, 0x1c($sp) -/* 00E680 7000DA80 AFA40038 */ sw $a0, 0x38($sp) -/* 00E684 7000DA84 AFB00018 */ sw $s0, 0x18($sp) -/* 00E688 7000DA88 AFA0002C */ sw $zero, 0x2c($sp) -/* 00E68C 7000DA8C 0C0062D8 */ jal __osViGetCurrentContext -/* 00E690 7000DA90 AFA00028 */ sw $zero, 0x28($sp) -/* 00E694 7000DA94 AFA20034 */ sw $v0, 0x34($sp) -/* 00E698 7000DA98 8FAE0034 */ lw $t6, 0x34($sp) -/* 00E69C 7000DA9C 3C018006 */ lui $at, %hi(retrace) -/* 00E6A0 7000DAA0 95CF0002 */ lhu $t7, 2($t6) -/* 00E6A4 7000DAA4 15E00004 */ bnez $t7, .L7000DAB8 -/* 00E6A8 7000DAA8 A42F6A00 */ sh $t7, %lo(retrace)($at) -/* 00E6AC 7000DAAC 24180001 */ li $t8, 1 -/* 00E6B0 7000DAB0 3C018006 */ lui $at, %hi(retrace) -/* 00E6B4 7000DAB4 A4386A00 */ sh $t8, %lo(retrace)($at) -.L7000DAB8: -/* 00E6B8 7000DAB8 8FB90038 */ lw $t9, 0x38($sp) -/* 00E6BC 7000DABC AFB90030 */ sw $t9, 0x30($sp) -.L7000DAC0: -/* 00E6C0 7000DAC0 8FA80030 */ lw $t0, 0x30($sp) -/* 00E6C4 7000DAC4 27A5002C */ addiu $a1, $sp, 0x2c -/* 00E6C8 7000DAC8 24060001 */ li $a2, 1 -/* 00E6CC 7000DACC 0C003774 */ jal osRecvMesg -/* 00E6D0 7000DAD0 8D04000C */ lw $a0, 0xc($t0) -/* 00E6D4 7000DAD4 8FA9002C */ lw $t1, 0x2c($sp) -/* 00E6D8 7000DAD8 2401000D */ li $at, 13 -/* 00E6DC 7000DADC 95300000 */ lhu $s0, ($t1) -/* 00E6E0 7000DAE0 12010005 */ beq $s0, $at, .L7000DAF8 -/* 00E6E4 7000DAE4 2401000E */ li $at, 14 -/* 00E6E8 7000DAE8 12010047 */ beq $s0, $at, .L7000DC08 -/* 00E6EC 7000DAEC 00000000 */ nop -/* 00E6F0 7000DAF0 1000FFF3 */ b .L7000DAC0 -/* 00E6F4 7000DAF4 00000000 */ nop -.L7000DAF8: -/* 00E6F8 7000DAF8 0C0062DC */ jal __osViSwapContext -/* 00E6FC 7000DAFC 00000000 */ nop -/* 00E700 7000DB00 3C0A8006 */ lui $t2, %hi(retrace) -/* 00E704 7000DB04 954A6A00 */ lhu $t2, %lo(retrace)($t2) -/* 00E708 7000DB08 3C018006 */ lui $at, %hi(retrace) -/* 00E70C 7000DB0C 254BFFFF */ addiu $t3, $t2, -1 -/* 00E710 7000DB10 316CFFFF */ andi $t4, $t3, 0xffff -/* 00E714 7000DB14 15800010 */ bnez $t4, .L7000DB58 -/* 00E718 7000DB18 A42B6A00 */ sh $t3, %lo(retrace)($at) -/* 00E71C 7000DB1C 0C0062D8 */ jal __osViGetCurrentContext -/* 00E720 7000DB20 00000000 */ nop -/* 00E724 7000DB24 AFA20034 */ sw $v0, 0x34($sp) -/* 00E728 7000DB28 8FAD0034 */ lw $t5, 0x34($sp) -/* 00E72C 7000DB2C 8DAE0010 */ lw $t6, 0x10($t5) -/* 00E730 7000DB30 11C00005 */ beqz $t6, .L7000DB48 -/* 00E734 7000DB34 00000000 */ nop -/* 00E738 7000DB38 01C02025 */ move $a0, $t6 -/* 00E73C 7000DB3C 8DA50014 */ lw $a1, 0x14($t5) -/* 00E740 7000DB40 0C0037C4 */ jal osSendMesg -/* 00E744 7000DB44 00003025 */ move $a2, $zero -.L7000DB48: -/* 00E748 7000DB48 8FAF0034 */ lw $t7, 0x34($sp) -/* 00E74C 7000DB4C 3C018006 */ lui $at, %hi(retrace) -/* 00E750 7000DB50 95F80002 */ lhu $t8, 2($t7) -/* 00E754 7000DB54 A4386A00 */ sh $t8, %lo(retrace)($at) -.L7000DB58: -/* 00E758 7000DB58 3C198007 */ lui $t9, %hi(__osViIntrCount) -/* 00E75C 7000DB5C 8F398E1C */ lw $t9, %lo(__osViIntrCount)($t9) -/* 00E760 7000DB60 8FA90028 */ lw $t1, 0x28($sp) -/* 00E764 7000DB64 3C018007 */ lui $at, %hi(__osViIntrCount) -/* 00E768 7000DB68 27280001 */ addiu $t0, $t9, 1 -/* 00E76C 7000DB6C 1120000C */ beqz $t1, .L7000DBA0 -/* 00E770 7000DB70 AC288E1C */ sw $t0, %lo(__osViIntrCount)($at) -/* 00E774 7000DB74 0C003638 */ jal osGetCount -/* 00E778 7000DB78 00000000 */ nop -/* 00E77C 7000DB7C AFA20024 */ sw $v0, 0x24($sp) -/* 00E780 7000DB80 8FAA0024 */ lw $t2, 0x24($sp) -/* 00E784 7000DB84 240C0000 */ li $t4, 0 -/* 00E788 7000DB88 3C018007 */ lui $at, %hi(__osCurrentTime) -/* 00E78C 7000DB8C AC2C8E10 */ sw $t4, %lo(__osCurrentTime)($at) -/* 00E790 7000DB90 3C018007 */ lui $at, %hi(__osCurrentTime+4) -/* 00E794 7000DB94 01406825 */ move $t5, $t2 -/* 00E798 7000DB98 AC2D8E14 */ sw $t5, %lo(__osCurrentTime+4)($at) -/* 00E79C 7000DB9C AFA00028 */ sw $zero, 0x28($sp) -.L7000DBA0: -/* 00E7A0 7000DBA0 3C0B8007 */ lui $t3, %hi(__osBaseCounter) -/* 00E7A4 7000DBA4 8D6B8E18 */ lw $t3, %lo(__osBaseCounter)($t3) -/* 00E7A8 7000DBA8 0C003638 */ jal osGetCount -/* 00E7AC 7000DBAC AFAB0024 */ sw $t3, 0x24($sp) -/* 00E7B0 7000DBB0 3C018007 */ lui $at, %hi(__osBaseCounter) -/* 00E7B4 7000DBB4 AC228E18 */ sw $v0, %lo(__osBaseCounter)($at) -/* 00E7B8 7000DBB8 3C0E8007 */ lui $t6, %hi(__osBaseCounter) -/* 00E7BC 7000DBBC 8DCE8E18 */ lw $t6, %lo(__osBaseCounter)($t6) -/* 00E7C0 7000DBC0 8FAF0024 */ lw $t7, 0x24($sp) -/* 00E7C4 7000DBC4 3C0B8007 */ lui $t3, %hi(__osCurrentTime+4) -/* 00E7C8 7000DBC8 8D6B8E14 */ lw $t3, %lo(__osCurrentTime+4)($t3) -/* 00E7CC 7000DBCC 01CFC023 */ subu $t8, $t6, $t7 -/* 00E7D0 7000DBD0 03004825 */ move $t1, $t8 -/* 00E7D4 7000DBD4 3C0A8007 */ lui $t2, %hi(__osCurrentTime) -/* 00E7D8 7000DBD8 012B6821 */ addu $t5, $t1, $t3 -/* 00E7DC 7000DBDC 8D4A8E10 */ lw $t2, %lo(__osCurrentTime)($t2) -/* 00E7E0 7000DBE0 24080000 */ li $t0, 0 -/* 00E7E4 7000DBE4 01AB082B */ sltu $at, $t5, $t3 -/* 00E7E8 7000DBE8 00286021 */ addu $t4, $at, $t0 -/* 00E7EC 7000DBEC 3C018007 */ lui $at, %hi(__osCurrentTime) -/* 00E7F0 7000DBF0 018A6021 */ addu $t4, $t4, $t2 -/* 00E7F4 7000DBF4 AC2C8E10 */ sw $t4, %lo(__osCurrentTime)($at) -/* 00E7F8 7000DBF8 3C018007 */ lui $at, %hi(__osCurrentTime+4) -/* 00E7FC 7000DBFC AFB80024 */ sw $t8, 0x24($sp) -/* 00E800 7000DC00 1000FFAF */ b .L7000DAC0 -/* 00E804 7000DC04 AC2D8E14 */ sw $t5, %lo(__osCurrentTime+4)($at) -.L7000DC08: -/* 00E808 7000DC08 0C0061AF */ jal __osTimerInterrupt -/* 00E80C 7000DC0C 00000000 */ nop -/* 00E810 7000DC10 1000FFAB */ b .L7000DAC0 -/* 00E814 7000DC14 00000000 */ nop -/* 00E818 7000DC18 00000000 */ nop -/* 00E81C 7000DC1C 00000000 */ nop -/* 00E820 7000DC20 00000000 */ nop -/* 00E824 7000DC24 00000000 */ nop -/* 00E828 7000DC28 00000000 */ nop -/* 00E82C 7000DC2C 00000000 */ nop -/* 00E830 7000DC30 8FBF001C */ lw $ra, 0x1c($sp) -/* 00E834 7000DC34 8FB00018 */ lw $s0, 0x18($sp) -/* 00E838 7000DC38 27BD0038 */ addiu $sp, $sp, 0x38 -/* 00E83C 7000DC3C 03E00008 */ jr $ra -/* 00E840 7000DC40 00000000 */ nop - -/* 00E844 7000DC44 00000000 */ nop -/* 00E848 7000DC48 00000000 */ nop -/* 00E84C 7000DC4C 00000000 */ nop -.section .data -glabel __osViDevMgr -.word 0 -glabel D_800269A4 -.word 0 -glabel D_800269A8 -.word 0 -glabel D_800269AC -.word 0 -glabel D_800269B0 -.word 0 -glabel D_800269B4 -.word 0 -glabel D_800269B8 -.word 0 - -.align 4 - - -.section .rodata - - -.section .bss -glabel viThread -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 - -glabel viThreadStack - #[4096] -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.section .bss -glabel viEventQueue -.word 0, 0, 0, 0, 0, 0 - -glabel viEventBuf -.word 0, 0, 0, 0, 0, 0 - -glabel viRetraceMsg -.word 0, 0, 0, 0, 0, 0 - -glabel viCounterMsg -.word 0, 0, 0, 0, 0, 0 - -glabel retrace -.half 0 -.align 4 - -.section .data -glabel osViModeTable -D_800269C0: -glabel osViModeTable_osViModeNtscLpn1 -.word 0, 0x320E, 0x140, 0x3E52239, 0x20D -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscLpf1 -.word 0x1000000, 0x324E, 0x140, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x280, 0x1000400, 0x2301FD, 0xE0204, 2 -.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscLan1 -.word 0x2000000, 0x311E, 0x140, 0x3E52239, 0x20D -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscLaf1 -.word 0x3000000, 0x305E, 0x140, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x280, 0x1000400, 0x2301FD, 0xE0204, 2 -.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscLpn2 -.word 0x4000000, 0x330F, 0x140, 0x3E52239, 0x20D -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscLpf2 -.word 0x5000000, 0x324F, 0x140, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x500, 0x1000400, 0x2301FD, 0xE0204, 2 -.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscLan2 -.word 0x6000000, 0x301F, 0x140, 0x3E52239, 0x20D -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscLaf2 -.word 0x7000000, 0x305F, 0x140, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 -.word 0x500, 0x1000400, 0x2301FD, 0xE0204, 2 -.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscHpn1 -.word 0x8000000, 0x324E, 0x500, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 -.word 0x500, 0x400, 0x2301FD, 0xE0204, 2 -.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscHpf1 -.word 0x9000000, 0x324E, 0x280, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 -.word 0x500, 0x2000800, 0x2301FD, 0xE0204, 2 -.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscHan1 -.word 0xA000000, 0x305E, 0x500, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 -.word 0x500, 0x400, 0x2301FD, 0xE0204, 2 -.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscHaf1 -.word 0xB000000, 0x305E, 0x280, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 -.word 0x500, 0x2000800, 0x2301FD, 0xE0204, 2 -.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscHpn2 -.word 0xC000000, 0x334F, 0x500, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 -.word 0xA00, 0x400, 0x2301FD, 0xE0204, 2 -.word 0x1400, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeNtscHpf2 -.word 0xD000000, 0x324F, 0x280, 0x3E52239, 0x20C -.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 -.word 0xA00, 0x2000800, 0x2301FD, 0xE0204, 2 -.word 0x1400, 0x2000800, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModePalLpn1 -.word 0xE000000, 0x320E, 0x140, 0x404233A, 0x271 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 -.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 -glabel osViModeTable_osViModePalLpf1 -.word 0xF000000, 0x324E, 0x140, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x280, 0x1000400, 0x5D0237, 0x9026B, 2 -.word 0x280, 0x3000400, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalLan1 -.word 0x10000000, 0x311E, 0x140, 0x404233A, 0x271 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 -.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 -glabel osViModeTable_osViModePalLaf1 -.word 0x11000000, 0x305E, 0x140, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x280, 0x1000400, 0x5D0237, 0x9026B, 2 -.word 0x280, 0x3000400, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalLpn2 -.word 0x12000000, 0x330F, 0x140, 0x404233A, 0x271 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 -.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 -glabel osViModeTable_osViModePalLpf2 -.word 0x13000000, 0x324F, 0x140, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x500, 0x1000400, 0x5D0237, 0x9026B, 2 -.word 0x500, 0x3000400, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalLan2 -.word 0x14000000, 0x301F, 0x140, 0x404233A, 0x271 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 -.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 -glabel osViModeTable_osViModePalLaf2 -.word 0x15000000, 0x305F, 0x140, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 -.word 0x500, 0x1000400, 0x5D0237, 0x9026B, 2 -.word 0x500, 0x3000400, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalHpn1 -.word 0x16000000, 0x324E, 0x500, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 -.word 0x500, 0x400, 0x5D0237, 0x9026B, 2 -.word 0xA00, 0x400, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalHpf1 -.word 0x17000000, 0x324E, 0x280, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 -.word 0x500, 0x2000800, 0x5D0237, 0x9026B, 2 -.word 0xA00, 0x2000800, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalHan1 -.word 0x18000000, 0x305E, 0x500, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 -.word 0x500, 0x400, 0x5D0237, 0x9026B, 2 -.word 0xA00, 0x400, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalHaf1 -.word 0x19000000, 0x305E, 0x280, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 -.word 0x500, 0x2000800, 0x5D0237, 0x9026B, 2 -.word 0xA00, 0x2000800, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalHpn2 -.word 0x1A000000, 0x334F, 0x500, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 -.word 0xA00, 0x400, 0x5D0237, 0x9026B, 2 -.word 0x1400, 0x400, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModePalHpf2 -.word 0x1B000000, 0x324F, 0x280, 0x404233A, 0x270 -.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 -.word 0xA00, 0x2000800, 0x5D0237, 0x9026B, 2 -.word 0x1400, 0x2000800, 0x5F0239, 0xD0269, 2 -glabel osViModeTable_osViModeMpalLpn1 -.word 0x1C000000, 0x320E, 0x140, 0x4651E39, 0x20D -.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalLpf1 -.word 0x1D000000, 0x324E, 0x140, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 -.word 0x280, 0x1000400, 0x2301FD, 0xB0202, 2 -.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalLan1 -.word 0x1E000000, 0x311E, 0x140, 0x4651E39, 0x20D -.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalLaf1 -.word 0x1F000000, 0x305E, 0x140, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 -.word 0x280, 0x1000400, 0x2301FD, 0xB0202, 2 -.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalLpn2 -.word 0x20000000, 0x330F, 0x140, 0x4651E39, 0x20D -.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalLpf2 -.word 0x21000000, 0x324F, 0x140, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 -.word 0x500, 0x1000400, 0x2301FD, 0xB0202, 2 -.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalLan2 -.word 0x22000000, 0x301F, 0x140, 0x4651E39, 0x20D -.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalLaf2 -.word 0x23000000, 0x305F, 0x140, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 -.word 0x500, 0x1000400, 0x2301FD, 0xB0202, 2 -.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalHpn1 -.word 0x24000000, 0x324E, 0x500, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 -.word 0x500, 0x400, 0x2301FD, 0xB0202, 2 -.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalHpf1 -.word 0x25000000, 0x324E, 0x280, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 -.word 0x500, 0x2000800, 0x2301FD, 0xB0202, 2 -.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalHan1 -.word 0x26000000, 0x305E, 0x500, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 -.word 0x500, 0x400, 0x2301FD, 0xB0202, 2 -.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalHaf1 -.word 0x27000000, 0x305E, 0x280, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 -.word 0x500, 0x2000800, 0x2301FD, 0xB0202, 2 -.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalHpn2 -.word 0x28000000, 0x334F, 0x500, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 -.word 0xA00, 0x400, 0x2301FD, 0xB0202, 2 -.word 0x1400, 0x400, 0x2501FF, 0xE0204, 2 -glabel osViModeTable_osViModeMpalHpf2 -.word 0x29000000, 0x324F, 0x280, 0x4651E39, 0x20C -.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 -.word 0xA00, 0x2000800, 0x2301FD, 0xB0202, 2 -.word 0x1400, 0x2000800, 0x2501FF, 0xE0204, 2 - -.section .bss -glabel __osEventStateTab -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 0 - - -.section .text -glabel osSetEventMesg -/* 00E850 7000DC50 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00E854 7000DC54 AFBF001C */ sw $ra, 0x1c($sp) -/* 00E858 7000DC58 AFA40028 */ sw $a0, 0x28($sp) -/* 00E85C 7000DC5C AFA5002C */ sw $a1, 0x2c($sp) -/* 00E860 7000DC60 AFA60030 */ sw $a2, 0x30($sp) -/* 00E864 7000DC64 0C00617C */ jal __osDisableInt -/* 00E868 7000DC68 AFB00018 */ sw $s0, 0x18($sp) -/* 00E86C 7000DC6C 8FAE0028 */ lw $t6, 0x28($sp) -/* 00E870 7000DC70 3C188006 */ lui $t8, %hi(__osEventStateTab) -/* 00E874 7000DC74 8FA8002C */ lw $t0, 0x2c($sp) -/* 00E878 7000DC78 27186A10 */ addiu $t8, %lo(__osEventStateTab) # addiu $t8, $t8, 0x6a10 -/* 00E87C 7000DC7C 000E78C0 */ sll $t7, $t6, 3 -/* 00E880 7000DC80 01F8C821 */ addu $t9, $t7, $t8 -/* 00E884 7000DC84 AFB90020 */ sw $t9, 0x20($sp) -/* 00E888 7000DC88 AF280000 */ sw $t0, ($t9) -/* 00E88C 7000DC8C 8FAA0020 */ lw $t2, 0x20($sp) -/* 00E890 7000DC90 8FA90030 */ lw $t1, 0x30($sp) -/* 00E894 7000DC94 00408025 */ move $s0, $v0 -/* 00E898 7000DC98 02002025 */ move $a0, $s0 -/* 00E89C 7000DC9C 0C006184 */ jal __osRestoreInt -/* 00E8A0 7000DCA0 AD490004 */ sw $t1, 4($t2) -/* 00E8A4 7000DCA4 8FBF001C */ lw $ra, 0x1c($sp) -/* 00E8A8 7000DCA8 8FB00018 */ lw $s0, 0x18($sp) -/* 00E8AC 7000DCAC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00E8B0 7000DCB0 03E00008 */ jr $ra -/* 00E8B4 7000DCB4 00000000 */ nop - -/* 00E8B8 7000DCB8 00000000 */ nop -/* 00E8BC 7000DCBC 00000000 */ nop -glabel osViSetEvent -/* 00E8C0 7000DCC0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00E8C4 7000DCC4 AFBF001C */ sw $ra, 0x1c($sp) -/* 00E8C8 7000DCC8 AFA40028 */ sw $a0, 0x28($sp) -/* 00E8CC 7000DCCC AFA5002C */ sw $a1, 0x2c($sp) -/* 00E8D0 7000DCD0 AFA60030 */ sw $a2, 0x30($sp) -/* 00E8D4 7000DCD4 0C00617C */ jal __osDisableInt -/* 00E8D8 7000DCD8 AFB00018 */ sw $s0, 0x18($sp) -/* 00E8DC 7000DCDC 3C0F8003 */ lui $t7, %hi(__osViNext) -/* 00E8E0 7000DCE0 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) -/* 00E8E4 7000DCE4 8FAE0028 */ lw $t6, 0x28($sp) -/* 00E8E8 7000DCE8 3C198003 */ lui $t9, %hi(__osViNext) -/* 00E8EC 7000DCEC 3C098003 */ lui $t1, %hi(__osViNext) -/* 00E8F0 7000DCF0 ADEE0010 */ sw $t6, 0x10($t7) -/* 00E8F4 7000DCF4 8F398044 */ lw $t9, %lo(__osViNext)($t9) -/* 00E8F8 7000DCF8 8FB8002C */ lw $t8, 0x2c($sp) -/* 00E8FC 7000DCFC 00408025 */ move $s0, $v0 -/* 00E900 7000DD00 02002025 */ move $a0, $s0 -/* 00E904 7000DD04 AF380014 */ sw $t8, 0x14($t9) -/* 00E908 7000DD08 8D298044 */ lw $t1, %lo(__osViNext)($t1) -/* 00E90C 7000DD0C 8FA80030 */ lw $t0, 0x30($sp) -/* 00E910 7000DD10 0C006184 */ jal __osRestoreInt -/* 00E914 7000DD14 A5280002 */ sh $t0, 2($t1) -/* 00E918 7000DD18 8FBF001C */ lw $ra, 0x1c($sp) -/* 00E91C 7000DD1C 8FB00018 */ lw $s0, 0x18($sp) -/* 00E920 7000DD20 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00E924 7000DD24 03E00008 */ jr $ra -/* 00E928 7000DD28 00000000 */ nop - -/* 00E92C 7000DD2C 00000000 */ nop -glabel osSetIntMask -/* 00E930 7000DD30 400C6000 */ mfc0 $t4, $12 -/* 00E934 7000DD34 3182FF01 */ andi $v0, $t4, 0xff01 -/* 00E938 7000DD38 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) -/* 00E93C 7000DD3C 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c -/* 00E940 7000DD40 8D0B0000 */ lw $t3, ($t0) -/* 00E944 7000DD44 2401FFFF */ li $at, -1 -/* 00E948 7000DD48 01614026 */ xor $t0, $t3, $at -/* 00E94C 7000DD4C 3108FF00 */ andi $t0, $t0, 0xff00 -/* 00E950 7000DD50 00481025 */ or $v0, $v0, $t0 -/* 00E954 7000DD54 3C0AA430 */ lui $t2, %hi(MI_INTR_MASK_REG) # $t2, 0xa430 -/* 00E958 7000DD58 8D4A000C */ lw $t2, %lo(MI_INTR_MASK_REG)($t2) -/* 00E95C 7000DD5C 11400005 */ beqz $t2, .L7000DD74 -/* 00E960 7000DD60 000B4C02 */ srl $t1, $t3, 0x10 -/* 00E964 7000DD64 2401FFFF */ li $at, -1 -/* 00E968 7000DD68 01214826 */ xor $t1, $t1, $at -/* 00E96C 7000DD6C 3129003F */ andi $t1, $t1, 0x3f -/* 00E970 7000DD70 01495025 */ or $t2, $t2, $t1 -.L7000DD74: -/* 00E974 7000DD74 000A5400 */ sll $t2, $t2, 0x10 -/* 00E978 7000DD78 004A1025 */ or $v0, $v0, $t2 -/* 00E97C 7000DD7C 3C01003F */ lui $at, 0x3f -/* 00E980 7000DD80 00814024 */ and $t0, $a0, $at -/* 00E984 7000DD84 010B4024 */ and $t0, $t0, $t3 -/* 00E988 7000DD88 000843C2 */ srl $t0, $t0, 0xf -/* 00E98C 7000DD8C 3C0A8003 */ lui $t2, %hi(__osRcpImTable) -/* 00E990 7000DD90 01485021 */ addu $t2, $t2, $t0 -/* 00E994 7000DD94 954A93A0 */ lhu $t2, %lo(__osRcpImTable)($t2) -/* 00E998 7000DD98 3C01A430 */ lui $at, %hi(MI_INTR_MASK_REG) # $at, 0xa430 -/* 00E99C 7000DD9C AC2A000C */ sw $t2, %lo(MI_INTR_MASK_REG)($at) -/* 00E9A0 7000DDA0 3088FF01 */ andi $t0, $a0, 0xff01 -/* 00E9A4 7000DDA4 3169FF00 */ andi $t1, $t3, 0xff00 -/* 00E9A8 7000DDA8 01094024 */ and $t0, $t0, $t1 -/* 00E9AC 7000DDAC 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff -/* 00E9B0 7000DDB0 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff -/* 00E9B4 7000DDB4 01816024 */ and $t4, $t4, $at -/* 00E9B8 7000DDB8 01886025 */ or $t4, $t4, $t0 -/* 00E9BC 7000DDBC 408C6000 */ mtc0 $t4, $12 -/* 00E9C0 7000DDC0 00000000 */ nop -/* 00E9C4 7000DDC4 00000000 */ nop -/* 00E9C8 7000DDC8 03E00008 */ jr $ra -/* 00E9CC 7000DDCC 00000000 */ nop - -.section .rodata -glabel __osRcpImTable - .half 0x555, 0x556, 0x559, 0x55a, 0x565, 0x566, 0x569, 0x56a - .half 0x595, 0x596, 0x599, 0x59a, 0x5a5, 0x5a6, 0x5a9, 0x5aa - .half 0x655, 0x656, 0x659, 0x65a, 0x665, 0x666, 0x669, 0x66a - .half 0x695, 0x696, 0x699, 0x69a, 0x6a5, 0x6a6, 0x6a9, 0x6aa - .half 0x955, 0x956, 0x959, 0x95a, 0x965, 0x966, 0x969, 0x96a - .half 0x995, 0x996, 0x999, 0x99a, 0x9a5, 0x9a6, 0x9a9, 0x9aa - .half 0xa55, 0xa56, 0xa59, 0xa5a, 0xa65, 0xa66, 0xa69, 0xa6a - .half 0xa95, 0xa96, 0xa99, 0xa9a, 0xaa5, 0xaa6, 0xaa9, 0xaaa - - -.section .text -glabel osRecvMesg -/* 00E9D0 7000DDD0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00E9D4 7000DDD4 AFBF001C */ sw $ra, 0x1c($sp) -/* 00E9D8 7000DDD8 AFA40028 */ sw $a0, 0x28($sp) -/* 00E9DC 7000DDDC AFA5002C */ sw $a1, 0x2c($sp) -/* 00E9E0 7000DDE0 AFA60030 */ sw $a2, 0x30($sp) -/* 00E9E4 7000DDE4 AFB10018 */ sw $s1, 0x18($sp) -/* 00E9E8 7000DDE8 0C00617C */ jal __osDisableInt -/* 00E9EC 7000DDEC AFB00014 */ sw $s0, 0x14($sp) -/* 00E9F0 7000DDF0 8FAE0028 */ lw $t6, 0x28($sp) -/* 00E9F4 7000DDF4 00408025 */ move $s0, $v0 -/* 00E9F8 7000DDF8 8DCF0008 */ lw $t7, 8($t6) -/* 00E9FC 7000DDFC 15E00012 */ bnez $t7, .L7000DE48 -/* 00EA00 7000DE00 00000000 */ nop -.L7000DE04: -/* 00EA04 7000DE04 8FB80030 */ lw $t8, 0x30($sp) -/* 00EA08 7000DE08 17000005 */ bnez $t8, .L7000DE20 -/* 00EA0C 7000DE0C 00000000 */ nop -/* 00EA10 7000DE10 0C006184 */ jal __osRestoreInt -/* 00EA14 7000DE14 02002025 */ move $a0, $s0 -/* 00EA18 7000DE18 10000036 */ b .L7000DEF4 -/* 00EA1C 7000DE1C 2402FFFF */ li $v0, -1 -.L7000DE20: -/* 00EA20 7000DE20 3C088002 */ lui $t0, %hi(__osRunningThread) -/* 00EA24 7000DE24 8D087730 */ lw $t0, %lo(__osRunningThread)($t0) -/* 00EA28 7000DE28 24190008 */ li $t9, 8 -/* 00EA2C 7000DE2C A5190010 */ sh $t9, 0x10($t0) -/* 00EA30 7000DE30 0C0041EB */ jal __osEnqueueAndYield -/* 00EA34 7000DE34 8FA40028 */ lw $a0, 0x28($sp) -/* 00EA38 7000DE38 8FA90028 */ lw $t1, 0x28($sp) -/* 00EA3C 7000DE3C 8D2A0008 */ lw $t2, 8($t1) -/* 00EA40 7000DE40 1140FFF0 */ beqz $t2, .L7000DE04 -/* 00EA44 7000DE44 00000000 */ nop -.L7000DE48: -/* 00EA48 7000DE48 8FAB002C */ lw $t3, 0x2c($sp) -/* 00EA4C 7000DE4C 11600008 */ beqz $t3, .L7000DE70 -/* 00EA50 7000DE50 00000000 */ nop -/* 00EA54 7000DE54 8FAC0028 */ lw $t4, 0x28($sp) -/* 00EA58 7000DE58 8D8E000C */ lw $t6, 0xc($t4) -/* 00EA5C 7000DE5C 8D8D0014 */ lw $t5, 0x14($t4) -/* 00EA60 7000DE60 000E7880 */ sll $t7, $t6, 2 -/* 00EA64 7000DE64 01AFC021 */ addu $t8, $t5, $t7 -/* 00EA68 7000DE68 8F190000 */ lw $t9, ($t8) -/* 00EA6C 7000DE6C AD790000 */ sw $t9, ($t3) -.L7000DE70: -/* 00EA70 7000DE70 8FA80028 */ lw $t0, 0x28($sp) -/* 00EA74 7000DE74 8D09000C */ lw $t1, 0xc($t0) -/* 00EA78 7000DE78 8D0C0010 */ lw $t4, 0x10($t0) -/* 00EA7C 7000DE7C 252A0001 */ addiu $t2, $t1, 1 -/* 00EA80 7000DE80 014C001A */ div $zero, $t2, $t4 -/* 00EA84 7000DE84 00007010 */ mfhi $t6 -/* 00EA88 7000DE88 AD0E000C */ sw $t6, 0xc($t0) -/* 00EA8C 7000DE8C 8FAD0028 */ lw $t5, 0x28($sp) -/* 00EA90 7000DE90 15800002 */ bnez $t4, .L7000DE9C -/* 00EA94 7000DE94 00000000 */ nop -/* 00EA98 7000DE98 0007000D */ break 7 -.L7000DE9C: -/* 00EA9C 7000DE9C 2401FFFF */ li $at, -1 -/* 00EAA0 7000DEA0 15810004 */ bne $t4, $at, .L7000DEB4 -/* 00EAA4 7000DEA4 3C018000 */ lui $at, 0x8000 -/* 00EAA8 7000DEA8 15410002 */ bne $t2, $at, .L7000DEB4 -/* 00EAAC 7000DEAC 00000000 */ nop -/* 00EAB0 7000DEB0 0006000D */ break 6 -.L7000DEB4: -/* 00EAB4 7000DEB4 8DAF0008 */ lw $t7, 8($t5) -/* 00EAB8 7000DEB8 25F8FFFF */ addiu $t8, $t7, -1 -/* 00EABC 7000DEBC ADB80008 */ sw $t8, 8($t5) -/* 00EAC0 7000DEC0 8FB90028 */ lw $t9, 0x28($sp) -/* 00EAC4 7000DEC4 8F2B0004 */ lw $t3, 4($t9) -/* 00EAC8 7000DEC8 8D690000 */ lw $t1, ($t3) -/* 00EACC 7000DECC 11200006 */ beqz $t1, .L7000DEE8 -/* 00EAD0 7000DED0 00000000 */ nop -/* 00EAD4 7000DED4 0C00423D */ jal __osPopThread -/* 00EAD8 7000DED8 27240004 */ addiu $a0, $t9, 4 -/* 00EADC 7000DEDC 00408825 */ move $s1, $v0 -/* 00EAE0 7000DEE0 0C003560 */ jal osStartThread -/* 00EAE4 7000DEE4 02202025 */ move $a0, $s1 -.L7000DEE8: -/* 00EAE8 7000DEE8 0C006184 */ jal __osRestoreInt -/* 00EAEC 7000DEEC 02002025 */ move $a0, $s0 -/* 00EAF0 7000DEF0 00001025 */ move $v0, $zero -.L7000DEF4: -/* 00EAF4 7000DEF4 8FBF001C */ lw $ra, 0x1c($sp) -/* 00EAF8 7000DEF8 8FB00014 */ lw $s0, 0x14($sp) -/* 00EAFC 7000DEFC 8FB10018 */ lw $s1, 0x18($sp) -/* 00EB00 7000DF00 03E00008 */ jr $ra -/* 00EB04 7000DF04 27BD0028 */ addiu $sp, $sp, 0x28 - -/* 00EB08 7000DF08 00000000 */ nop -/* 00EB0C 7000DF0C 00000000 */ nop -glabel osSendMesg -/* 00EB10 7000DF10 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 00EB14 7000DF14 AFBF0024 */ sw $ra, 0x24($sp) -/* 00EB18 7000DF18 AFA40038 */ sw $a0, 0x38($sp) -/* 00EB1C 7000DF1C AFA5003C */ sw $a1, 0x3c($sp) -/* 00EB20 7000DF20 AFA60040 */ sw $a2, 0x40($sp) -/* 00EB24 7000DF24 AFB20020 */ sw $s2, 0x20($sp) -/* 00EB28 7000DF28 AFB1001C */ sw $s1, 0x1c($sp) -/* 00EB2C 7000DF2C 0C00617C */ jal __osDisableInt -/* 00EB30 7000DF30 AFB00018 */ sw $s0, 0x18($sp) -/* 00EB34 7000DF34 8FAE0038 */ lw $t6, 0x38($sp) -/* 00EB38 7000DF38 00408025 */ move $s0, $v0 -/* 00EB3C 7000DF3C 8DCF0008 */ lw $t7, 8($t6) -/* 00EB40 7000DF40 8DD80010 */ lw $t8, 0x10($t6) -/* 00EB44 7000DF44 01F8082A */ slt $at, $t7, $t8 -/* 00EB48 7000DF48 14200018 */ bnez $at, .L7000DFAC -/* 00EB4C 7000DF4C 00000000 */ nop -.L7000DF50: -/* 00EB50 7000DF50 8FB90040 */ lw $t9, 0x40($sp) -/* 00EB54 7000DF54 24010001 */ li $at, 1 -/* 00EB58 7000DF58 1721000A */ bne $t9, $at, .L7000DF84 -/* 00EB5C 7000DF5C 00000000 */ nop -/* 00EB60 7000DF60 3C098002 */ lui $t1, %hi(__osRunningThread) -/* 00EB64 7000DF64 8D297730 */ lw $t1, %lo(__osRunningThread)($t1) -/* 00EB68 7000DF68 24080008 */ li $t0, 8 -/* 00EB6C 7000DF6C A5280010 */ sh $t0, 0x10($t1) -/* 00EB70 7000DF70 8FA40038 */ lw $a0, 0x38($sp) -/* 00EB74 7000DF74 0C0041EB */ jal __osEnqueueAndYield -/* 00EB78 7000DF78 24840004 */ addiu $a0, $a0, 4 -/* 00EB7C 7000DF7C 10000005 */ b .L7000DF94 -/* 00EB80 7000DF80 00000000 */ nop -.L7000DF84: -/* 00EB84 7000DF84 0C006184 */ jal __osRestoreInt -/* 00EB88 7000DF88 02002025 */ move $a0, $s0 -/* 00EB8C 7000DF8C 1000002D */ b .L7000E044 -/* 00EB90 7000DF90 2402FFFF */ li $v0, -1 -.L7000DF94: -/* 00EB94 7000DF94 8FAA0038 */ lw $t2, 0x38($sp) -/* 00EB98 7000DF98 8D4B0008 */ lw $t3, 8($t2) -/* 00EB9C 7000DF9C 8D4C0010 */ lw $t4, 0x10($t2) -/* 00EBA0 7000DFA0 016C082A */ slt $at, $t3, $t4 -/* 00EBA4 7000DFA4 1020FFEA */ beqz $at, .L7000DF50 -/* 00EBA8 7000DFA8 00000000 */ nop -.L7000DFAC: -/* 00EBAC 7000DFAC 8FAD0038 */ lw $t5, 0x38($sp) -/* 00EBB0 7000DFB0 8FA8003C */ lw $t0, 0x3c($sp) -/* 00EBB4 7000DFB4 8DAE000C */ lw $t6, 0xc($t5) -/* 00EBB8 7000DFB8 8DAF0008 */ lw $t7, 8($t5) -/* 00EBBC 7000DFBC 8DB90010 */ lw $t9, 0x10($t5) -/* 00EBC0 7000DFC0 8DA90014 */ lw $t1, 0x14($t5) -/* 00EBC4 7000DFC4 01CFC021 */ addu $t8, $t6, $t7 -/* 00EBC8 7000DFC8 0319001A */ div $zero, $t8, $t9 -/* 00EBCC 7000DFCC 00008810 */ mfhi $s1 -/* 00EBD0 7000DFD0 00115080 */ sll $t2, $s1, 2 -/* 00EBD4 7000DFD4 012A5821 */ addu $t3, $t1, $t2 -/* 00EBD8 7000DFD8 AD680000 */ sw $t0, ($t3) -/* 00EBDC 7000DFDC 8FAC0038 */ lw $t4, 0x38($sp) -/* 00EBE0 7000DFE0 17200002 */ bnez $t9, .L7000DFEC -/* 00EBE4 7000DFE4 00000000 */ nop -/* 00EBE8 7000DFE8 0007000D */ break 7 -.L7000DFEC: -/* 00EBEC 7000DFEC 2401FFFF */ li $at, -1 -/* 00EBF0 7000DFF0 17210004 */ bne $t9, $at, .L7000E004 -/* 00EBF4 7000DFF4 3C018000 */ lui $at, 0x8000 -/* 00EBF8 7000DFF8 17010002 */ bne $t8, $at, .L7000E004 -/* 00EBFC 7000DFFC 00000000 */ nop -/* 00EC00 7000E000 0006000D */ break 6 -.L7000E004: -/* 00EC04 7000E004 8D8E0008 */ lw $t6, 8($t4) -/* 00EC08 7000E008 25CF0001 */ addiu $t7, $t6, 1 -/* 00EC0C 7000E00C AD8F0008 */ sw $t7, 8($t4) -/* 00EC10 7000E010 8FB80038 */ lw $t8, 0x38($sp) -/* 00EC14 7000E014 8F190000 */ lw $t9, ($t8) -/* 00EC18 7000E018 8F2D0000 */ lw $t5, ($t9) -/* 00EC1C 7000E01C 11A00006 */ beqz $t5, .L7000E038 -/* 00EC20 7000E020 00000000 */ nop -/* 00EC24 7000E024 0C00423D */ jal __osPopThread -/* 00EC28 7000E028 03002025 */ move $a0, $t8 -/* 00EC2C 7000E02C 00409025 */ move $s2, $v0 -/* 00EC30 7000E030 0C003560 */ jal osStartThread -/* 00EC34 7000E034 02402025 */ move $a0, $s2 -.L7000E038: -/* 00EC38 7000E038 0C006184 */ jal __osRestoreInt -/* 00EC3C 7000E03C 02002025 */ move $a0, $s0 -/* 00EC40 7000E040 00001025 */ move $v0, $zero -.L7000E044: -/* 00EC44 7000E044 8FBF0024 */ lw $ra, 0x24($sp) -/* 00EC48 7000E048 8FB00018 */ lw $s0, 0x18($sp) -/* 00EC4C 7000E04C 8FB1001C */ lw $s1, 0x1c($sp) -/* 00EC50 7000E050 8FB20020 */ lw $s2, 0x20($sp) -/* 00EC54 7000E054 03E00008 */ jr $ra -/* 00EC58 7000E058 27BD0038 */ addiu $sp, $sp, 0x38 - -/* 00EC5C 7000E05C 00000000 */ nop -glabel osViSetMode -/* 00EC60 7000E060 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00EC64 7000E064 AFBF001C */ sw $ra, 0x1c($sp) -/* 00EC68 7000E068 AFA40028 */ sw $a0, 0x28($sp) -/* 00EC6C 7000E06C 0C00617C */ jal __osDisableInt -/* 00EC70 7000E070 AFB00018 */ sw $s0, 0x18($sp) -/* 00EC74 7000E074 3C0F8003 */ lui $t7, %hi(__osViNext) -/* 00EC78 7000E078 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) -/* 00EC7C 7000E07C 8FAE0028 */ lw $t6, 0x28($sp) -/* 00EC80 7000E080 3C198003 */ lui $t9, %hi(__osViNext) -/* 00EC84 7000E084 24180001 */ li $t8, 1 -/* 00EC88 7000E088 ADEE0008 */ sw $t6, 8($t7) -/* 00EC8C 7000E08C 8F398044 */ lw $t9, %lo(__osViNext)($t9) -/* 00EC90 7000E090 3C088003 */ lui $t0, %hi(__osViNext) -/* 00EC94 7000E094 00408025 */ move $s0, $v0 -/* 00EC98 7000E098 A7380000 */ sh $t8, ($t9) -/* 00EC9C 7000E09C 8D088044 */ lw $t0, %lo(__osViNext)($t0) -/* 00ECA0 7000E0A0 02002025 */ move $a0, $s0 -/* 00ECA4 7000E0A4 8D090008 */ lw $t1, 8($t0) -/* 00ECA8 7000E0A8 8D2A0004 */ lw $t2, 4($t1) -/* 00ECAC 7000E0AC 0C006184 */ jal __osRestoreInt -/* 00ECB0 7000E0B0 AD0A000C */ sw $t2, 0xc($t0) -/* 00ECB4 7000E0B4 8FBF001C */ lw $ra, 0x1c($sp) -/* 00ECB8 7000E0B8 8FB00018 */ lw $s0, 0x18($sp) -/* 00ECBC 7000E0BC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00ECC0 7000E0C0 03E00008 */ jr $ra -/* 00ECC4 7000E0C4 00000000 */ nop - -/* 00ECC8 7000E0C8 00000000 */ nop -/* 00ECCC 7000E0CC 00000000 */ nop -glabel osViSetXScale -/* 00ECD0 7000E0D0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00ECD4 7000E0D4 AFBF001C */ sw $ra, 0x1c($sp) -/* 00ECD8 7000E0D8 E7AC0028 */ swc1 $f12, 0x28($sp) -/* 00ECDC 7000E0DC AFB10018 */ sw $s1, 0x18($sp) -/* 00ECE0 7000E0E0 0C00617C */ jal __osDisableInt -/* 00ECE4 7000E0E4 AFB00014 */ sw $s0, 0x14($sp) -/* 00ECE8 7000E0E8 3C0E8003 */ lui $t6, %hi(__osViNext) -/* 00ECEC 7000E0EC 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) -/* 00ECF0 7000E0F0 C7A40028 */ lwc1 $f4, 0x28($sp) -/* 00ECF4 7000E0F4 3C0F8003 */ lui $t7, %hi(__osViNext) -/* 00ECF8 7000E0F8 3C088003 */ lui $t0, %hi(__osViNext) -/* 00ECFC 7000E0FC E5C40018 */ swc1 $f4, 0x18($t6) -/* 00ED00 7000E100 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) -/* 00ED04 7000E104 00408825 */ move $s1, $v0 -/* 00ED08 7000E108 95F80000 */ lhu $t8, ($t7) -/* 00ED0C 7000E10C 37190002 */ ori $t9, $t8, 2 -/* 00ED10 7000E110 A5F90000 */ sh $t9, ($t7) -/* 00ED14 7000E114 8D088044 */ lw $t0, %lo(__osViNext)($t0) -/* 00ED18 7000E118 8D090008 */ lw $t1, 8($t0) -/* 00ED1C 7000E11C C5060018 */ lwc1 $f6, 0x18($t0) -/* 00ED20 7000E120 8D300020 */ lw $s0, 0x20($t1) -/* 00ED24 7000E124 320A0FFF */ andi $t2, $s0, 0xfff -/* 00ED28 7000E128 01408025 */ move $s0, $t2 -/* 00ED2C 7000E12C 44904000 */ mtc1 $s0, $f8 -/* 00ED30 7000E130 06010005 */ bgez $s0, .L7000E148 -/* 00ED34 7000E134 468042A0 */ cvt.s.w $f10, $f8 -/* 00ED38 7000E138 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 00ED3C 7000E13C 44818000 */ mtc1 $at, $f16 -/* 00ED40 7000E140 00000000 */ nop -/* 00ED44 7000E144 46105280 */ add.s $f10, $f10, $f16 -.L7000E148: -/* 00ED48 7000E148 460A3482 */ mul.s $f18, $f6, $f10 -/* 00ED4C 7000E14C 240C0001 */ li $t4, 1 -/* 00ED50 7000E150 444BF800 */ cfc1 $t3, $31 -/* 00ED54 7000E154 44CCF800 */ ctc1 $t4, $31 -/* 00ED58 7000E158 00000000 */ nop -/* 00ED5C 7000E15C 46009124 */ cvt.w.s $f4, $f18 -/* 00ED60 7000E160 444CF800 */ cfc1 $t4, $31 -/* 00ED64 7000E164 00000000 */ nop -/* 00ED68 7000E168 31810004 */ andi $at, $t4, 4 -/* 00ED6C 7000E16C 318C0078 */ andi $t4, $t4, 0x78 -/* 00ED70 7000E170 11800013 */ beqz $t4, .L7000E1C0 -/* 00ED74 7000E174 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 00ED78 7000E178 44812000 */ mtc1 $at, $f4 -/* 00ED7C 7000E17C 240C0001 */ li $t4, 1 -/* 00ED80 7000E180 46049101 */ sub.s $f4, $f18, $f4 -/* 00ED84 7000E184 44CCF800 */ ctc1 $t4, $31 -/* 00ED88 7000E188 00000000 */ nop -/* 00ED8C 7000E18C 46002124 */ cvt.w.s $f4, $f4 -/* 00ED90 7000E190 444CF800 */ cfc1 $t4, $31 -/* 00ED94 7000E194 00000000 */ nop -/* 00ED98 7000E198 31810004 */ andi $at, $t4, 4 -/* 00ED9C 7000E19C 318C0078 */ andi $t4, $t4, 0x78 -/* 00EDA0 7000E1A0 15800005 */ bnez $t4, .L7000E1B8 -/* 00EDA4 7000E1A4 00000000 */ nop -/* 00EDA8 7000E1A8 440C2000 */ mfc1 $t4, $f4 -/* 00EDAC 7000E1AC 3C018000 */ lui $at, 0x8000 -/* 00EDB0 7000E1B0 10000007 */ b .L7000E1D0 -/* 00EDB4 7000E1B4 01816025 */ or $t4, $t4, $at -.L7000E1B8: -/* 00EDB8 7000E1B8 10000005 */ b .L7000E1D0 -/* 00EDBC 7000E1BC 240CFFFF */ li $t4, -1 -.L7000E1C0: -/* 00EDC0 7000E1C0 440C2000 */ mfc1 $t4, $f4 -/* 00EDC4 7000E1C4 00000000 */ nop -/* 00EDC8 7000E1C8 0580FFFB */ bltz $t4, .L7000E1B8 -/* 00EDCC 7000E1CC 00000000 */ nop -.L7000E1D0: -/* 00EDD0 7000E1D0 44CBF800 */ ctc1 $t3, $31 -/* 00EDD4 7000E1D4 318D0FFF */ andi $t5, $t4, 0xfff -/* 00EDD8 7000E1D8 AD0D0020 */ sw $t5, 0x20($t0) -/* 00EDDC 7000E1DC 0C006184 */ jal __osRestoreInt -/* 00EDE0 7000E1E0 02202025 */ move $a0, $s1 -/* 00EDE4 7000E1E4 8FBF001C */ lw $ra, 0x1c($sp) -/* 00EDE8 7000E1E8 8FB00014 */ lw $s0, 0x14($sp) -/* 00EDEC 7000E1EC 8FB10018 */ lw $s1, 0x18($sp) -/* 00EDF0 7000E1F0 03E00008 */ jr $ra -/* 00EDF4 7000E1F4 27BD0028 */ addiu $sp, $sp, 0x28 - -/* 00EDF8 7000E1F8 00000000 */ nop -/* 00EDFC 7000E1FC 00000000 */ nop -glabel osViSetYScale -/* 00EE00 7000E200 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00EE04 7000E204 AFBF001C */ sw $ra, 0x1c($sp) -/* 00EE08 7000E208 E7AC0028 */ swc1 $f12, 0x28($sp) -/* 00EE0C 7000E20C 0C00617C */ jal __osDisableInt -/* 00EE10 7000E210 AFB00018 */ sw $s0, 0x18($sp) -/* 00EE14 7000E214 3C0E8003 */ lui $t6, %hi(__osViNext) -/* 00EE18 7000E218 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) -/* 00EE1C 7000E21C C7A40028 */ lwc1 $f4, 0x28($sp) -/* 00EE20 7000E220 3C0F8003 */ lui $t7, %hi(__osViNext) -/* 00EE24 7000E224 00408025 */ move $s0, $v0 -/* 00EE28 7000E228 E5C40024 */ swc1 $f4, 0x24($t6) -/* 00EE2C 7000E22C 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) -/* 00EE30 7000E230 02002025 */ move $a0, $s0 -/* 00EE34 7000E234 95F80000 */ lhu $t8, ($t7) -/* 00EE38 7000E238 37190004 */ ori $t9, $t8, 4 -/* 00EE3C 7000E23C 0C006184 */ jal __osRestoreInt -/* 00EE40 7000E240 A5F90000 */ sh $t9, ($t7) -/* 00EE44 7000E244 8FBF001C */ lw $ra, 0x1c($sp) -/* 00EE48 7000E248 8FB00018 */ lw $s0, 0x18($sp) -/* 00EE4C 7000E24C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00EE50 7000E250 03E00008 */ jr $ra -/* 00EE54 7000E254 00000000 */ nop - -/* 00EE58 7000E258 00000000 */ nop -/* 00EE5C 7000E25C 00000000 */ nop -glabel osViRepeatLine -/* 00EE60 7000E260 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00EE64 7000E264 AFBF001C */ sw $ra, 0x1c($sp) -/* 00EE68 7000E268 AFA40028 */ sw $a0, 0x28($sp) -/* 00EE6C 7000E26C 0C00617C */ jal __osDisableInt -/* 00EE70 7000E270 AFB00018 */ sw $s0, 0x18($sp) -/* 00EE74 7000E274 93AE002B */ lbu $t6, 0x2b($sp) -/* 00EE78 7000E278 00408025 */ move $s0, $v0 -/* 00EE7C 7000E27C 11C00007 */ beqz $t6, .L7000E29C -/* 00EE80 7000E280 00000000 */ nop -/* 00EE84 7000E284 3C0F8003 */ lui $t7, %hi(__osViNext) -/* 00EE88 7000E288 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) -/* 00EE8C 7000E28C 95F80000 */ lhu $t8, ($t7) -/* 00EE90 7000E290 37190040 */ ori $t9, $t8, 0x40 -/* 00EE94 7000E294 10000007 */ b .L7000E2B4 -/* 00EE98 7000E298 A5F90000 */ sh $t9, ($t7) -.L7000E29C: -/* 00EE9C 7000E29C 3C088003 */ lui $t0, %hi(__osViNext) -/* 00EEA0 7000E2A0 8D088044 */ lw $t0, %lo(__osViNext)($t0) -/* 00EEA4 7000E2A4 2401FFBF */ li $at, -65 -/* 00EEA8 7000E2A8 95090000 */ lhu $t1, ($t0) -/* 00EEAC 7000E2AC 01215024 */ and $t2, $t1, $at -/* 00EEB0 7000E2B0 A50A0000 */ sh $t2, ($t0) -.L7000E2B4: -/* 00EEB4 7000E2B4 0C006184 */ jal __osRestoreInt -/* 00EEB8 7000E2B8 02002025 */ move $a0, $s0 -/* 00EEBC 7000E2BC 8FBF001C */ lw $ra, 0x1c($sp) -/* 00EEC0 7000E2C0 8FB00018 */ lw $s0, 0x18($sp) -/* 00EEC4 7000E2C4 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00EEC8 7000E2C8 03E00008 */ jr $ra -/* 00EECC 7000E2CC 00000000 */ nop - -glabel osViBlack -/* 00EED0 7000E2D0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00EED4 7000E2D4 AFBF001C */ sw $ra, 0x1c($sp) -/* 00EED8 7000E2D8 AFA40028 */ sw $a0, 0x28($sp) -/* 00EEDC 7000E2DC 0C00617C */ jal __osDisableInt -/* 00EEE0 7000E2E0 AFB00018 */ sw $s0, 0x18($sp) -/* 00EEE4 7000E2E4 93AE002B */ lbu $t6, 0x2b($sp) -/* 00EEE8 7000E2E8 00408025 */ move $s0, $v0 -/* 00EEEC 7000E2EC 11C00007 */ beqz $t6, .L7000E30C -/* 00EEF0 7000E2F0 00000000 */ nop -/* 00EEF4 7000E2F4 3C0F8003 */ lui $t7, %hi(__osViNext) -/* 00EEF8 7000E2F8 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) -/* 00EEFC 7000E2FC 95F80000 */ lhu $t8, ($t7) -/* 00EF00 7000E300 37190020 */ ori $t9, $t8, 0x20 -/* 00EF04 7000E304 10000007 */ b .L7000E324 -/* 00EF08 7000E308 A5F90000 */ sh $t9, ($t7) -.L7000E30C: -/* 00EF0C 7000E30C 3C088003 */ lui $t0, %hi(__osViNext) -/* 00EF10 7000E310 8D088044 */ lw $t0, %lo(__osViNext)($t0) -/* 00EF14 7000E314 2401FFDF */ li $at, -33 -/* 00EF18 7000E318 95090000 */ lhu $t1, ($t0) -/* 00EF1C 7000E31C 01215024 */ and $t2, $t1, $at -/* 00EF20 7000E320 A50A0000 */ sh $t2, ($t0) -.L7000E324: -/* 00EF24 7000E324 0C006184 */ jal __osRestoreInt -/* 00EF28 7000E328 02002025 */ move $a0, $s0 -/* 00EF2C 7000E32C 8FBF001C */ lw $ra, 0x1c($sp) -/* 00EF30 7000E330 8FB00018 */ lw $s0, 0x18($sp) -/* 00EF34 7000E334 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00EF38 7000E338 03E00008 */ jr $ra -/* 00EF3C 7000E33C 00000000 */ nop - -glabel osSpTaskYielded -/* 00EF40 7000E340 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00EF44 7000E344 AFBF0014 */ sw $ra, 0x14($sp) -/* 00EF48 7000E348 0C0063B4 */ jal __osSpGetStatus -/* 00EF4C 7000E34C AFA40020 */ sw $a0, 0x20($sp) -/* 00EF50 7000E350 AFA2001C */ sw $v0, 0x1c($sp) -/* 00EF54 7000E354 8FAE001C */ lw $t6, 0x1c($sp) -/* 00EF58 7000E358 31CF0100 */ andi $t7, $t6, 0x100 -/* 00EF5C 7000E35C 11E00004 */ beqz $t7, .L7000E370 -/* 00EF60 7000E360 00000000 */ nop -/* 00EF64 7000E364 24180001 */ li $t8, 1 -/* 00EF68 7000E368 10000002 */ b .L7000E374 -/* 00EF6C 7000E36C AFB80018 */ sw $t8, 0x18($sp) -.L7000E370: -/* 00EF70 7000E370 AFA00018 */ sw $zero, 0x18($sp) -.L7000E374: -/* 00EF74 7000E374 8FB9001C */ lw $t9, 0x1c($sp) -/* 00EF78 7000E378 33280080 */ andi $t0, $t9, 0x80 -/* 00EF7C 7000E37C 1100000B */ beqz $t0, .L7000E3AC -/* 00EF80 7000E380 00000000 */ nop -/* 00EF84 7000E384 8FA90020 */ lw $t1, 0x20($sp) -/* 00EF88 7000E388 8FAB0018 */ lw $t3, 0x18($sp) -/* 00EF8C 7000E38C 2401FFFD */ li $at, -3 -/* 00EF90 7000E390 8D2A0004 */ lw $t2, 4($t1) -/* 00EF94 7000E394 014B6025 */ or $t4, $t2, $t3 -/* 00EF98 7000E398 AD2C0004 */ sw $t4, 4($t1) -/* 00EF9C 7000E39C 8FAD0020 */ lw $t5, 0x20($sp) -/* 00EFA0 7000E3A0 8DAE0004 */ lw $t6, 4($t5) -/* 00EFA4 7000E3A4 01C17824 */ and $t7, $t6, $at -/* 00EFA8 7000E3A8 ADAF0004 */ sw $t7, 4($t5) -.L7000E3AC: -/* 00EFAC 7000E3AC 8FBF0014 */ lw $ra, 0x14($sp) -/* 00EFB0 7000E3B0 8FA20018 */ lw $v0, 0x18($sp) -/* 00EFB4 7000E3B4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00EFB8 7000E3B8 03E00008 */ jr $ra -/* 00EFBC 7000E3BC 00000000 */ nop - -glabel osDpGetCounters -/* 00EFC0 7000E3C0 3C0EA410 */ lui $t6, %hi(DPC_CLOCK_REG) # $t6, 0xa410 -/* 00EFC4 7000E3C4 8DCF0010 */ lw $t7, %lo(DPC_CLOCK_REG)($t6) -/* 00EFC8 7000E3C8 3C18A410 */ lui $t8, %hi(DPC_BUFBUSY_REG) # $t8, 0xa410 -/* 00EFCC 7000E3CC 3C08A410 */ lui $t0, %hi(DPC_PIPEBUSY_REG) # $t0, 0xa410 -/* 00EFD0 7000E3D0 AC8F0000 */ sw $t7, ($a0) -/* 00EFD4 7000E3D4 8F190014 */ lw $t9, %lo(DPC_BUFBUSY_REG)($t8) -/* 00EFD8 7000E3D8 24840004 */ addiu $a0, $a0, 4 -/* 00EFDC 7000E3DC 3C0AA410 */ lui $t2, %hi(DPC_TMEM_REG) # $t2, 0xa410 -/* 00EFE0 7000E3E0 AC990000 */ sw $t9, ($a0) -/* 00EFE4 7000E3E4 8D090018 */ lw $t1, %lo(DPC_PIPEBUSY_REG)($t0) -/* 00EFE8 7000E3E8 24840004 */ addiu $a0, $a0, 4 -/* 00EFEC 7000E3EC 24840004 */ addiu $a0, $a0, 4 -/* 00EFF0 7000E3F0 AC89FFFC */ sw $t1, -4($a0) -/* 00EFF4 7000E3F4 8D4B001C */ lw $t3, %lo(DPC_TMEM_REG)($t2) -/* 00EFF8 7000E3F8 24840004 */ addiu $a0, $a0, 4 -/* 00EFFC 7000E3FC 03E00008 */ jr $ra -/* 00F000 7000E400 AC8BFFFC */ sw $t3, -4($a0) - -/* 00F004 7000E404 00000000 */ nop -/* 00F008 7000E408 00000000 */ nop -/* 00F00C 7000E40C 00000000 */ nop - -glabel osViGetCurrentFramebuffer -/* 00F010 7000E410 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00F014 7000E414 AFBF001C */ sw $ra, 0x1c($sp) -/* 00F018 7000E418 0C00617C */ jal __osDisableInt -/* 00F01C 7000E41C AFB00018 */ sw $s0, 0x18($sp) -/* 00F020 7000E420 3C0E8003 */ lui $t6, %hi(__osViCurr) -/* 00F024 7000E424 8DCE8040 */ lw $t6, %lo(__osViCurr)($t6) -/* 00F028 7000E428 00408025 */ move $s0, $v0 -/* 00F02C 7000E42C 02002025 */ move $a0, $s0 -/* 00F030 7000E430 8DCF0004 */ lw $t7, 4($t6) -/* 00F034 7000E434 0C006184 */ jal __osRestoreInt -/* 00F038 7000E438 AFAF0020 */ sw $t7, 0x20($sp) -/* 00F03C 7000E43C 8FBF001C */ lw $ra, 0x1c($sp) -/* 00F040 7000E440 8FA20020 */ lw $v0, 0x20($sp) -/* 00F044 7000E444 8FB00018 */ lw $s0, 0x18($sp) -/* 00F048 7000E448 03E00008 */ jr $ra -/* 00F04C 7000E44C 27BD0028 */ addiu $sp, $sp, 0x28 - -glabel osViGetNextFramebuffer -/* 00F050 7000E450 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00F054 7000E454 AFBF001C */ sw $ra, 0x1c($sp) -/* 00F058 7000E458 0C00617C */ jal __osDisableInt -/* 00F05C 7000E45C AFB00018 */ sw $s0, 0x18($sp) -/* 00F060 7000E460 3C0E8003 */ lui $t6, %hi(__osViNext) -/* 00F064 7000E464 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) -/* 00F068 7000E468 00408025 */ move $s0, $v0 -/* 00F06C 7000E46C 02002025 */ move $a0, $s0 -/* 00F070 7000E470 8DCF0004 */ lw $t7, 4($t6) -/* 00F074 7000E474 0C006184 */ jal __osRestoreInt -/* 00F078 7000E478 AFAF0020 */ sw $t7, 0x20($sp) -/* 00F07C 7000E47C 8FBF001C */ lw $ra, 0x1c($sp) -/* 00F080 7000E480 8FA20020 */ lw $v0, 0x20($sp) -/* 00F084 7000E484 8FB00018 */ lw $s0, 0x18($sp) -/* 00F088 7000E488 03E00008 */ jr $ra -/* 00F08C 7000E48C 27BD0028 */ addiu $sp, $sp, 0x28 - -glabel osViSwapBuffer -/* 00F090 7000E490 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00F094 7000E494 AFBF0014 */ sw $ra, 0x14($sp) -/* 00F098 7000E498 0C00617C */ jal __osDisableInt -/* 00F09C 7000E49C AFA40020 */ sw $a0, 0x20($sp) -/* 00F0A0 7000E4A0 3C0F8003 */ lui $t7, %hi(__osViNext) -/* 00F0A4 7000E4A4 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) -/* 00F0A8 7000E4A8 8FAE0020 */ lw $t6, 0x20($sp) -/* 00F0AC 7000E4AC AFA2001C */ sw $v0, 0x1c($sp) -/* 00F0B0 7000E4B0 3C188003 */ lui $t8, %hi(__osViNext) -/* 00F0B4 7000E4B4 ADEE0004 */ sw $t6, 4($t7) -/* 00F0B8 7000E4B8 8F188044 */ lw $t8, %lo(__osViNext)($t8) -/* 00F0BC 7000E4BC 97190000 */ lhu $t9, ($t8) -/* 00F0C0 7000E4C0 37280010 */ ori $t0, $t9, 0x10 -/* 00F0C4 7000E4C4 A7080000 */ sh $t0, ($t8) -/* 00F0C8 7000E4C8 0C006184 */ jal __osRestoreInt -/* 00F0CC 7000E4CC 8FA4001C */ lw $a0, 0x1c($sp) -/* 00F0D0 7000E4D0 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F0D4 7000E4D4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00F0D8 7000E4D8 03E00008 */ jr $ra -/* 00F0DC 7000E4DC 00000000 */ nop - -glabel osDpSetStatus -/* 00F0E0 7000E4E0 3C0EA410 */ lui $t6, 0xa410 -/* 00F0E4 7000E4E4 03E00008 */ jr $ra -/* 00F0E8 7000E4E8 ADC4000C */ sw $a0, 0xc($t6) - -/* 00F0EC 7000E4EC 00000000 */ nop - -.section .bss -.word 0,0 -glabel tp -glabel type -.word 0 -glabel flags -.word 0 -glabel t_ucode_boot -.word 0 -glabel t_ucode_boot_size -.word 0 -glabel t_ucode -.word 0 -glabel t_ucode_size -.word 0 -glabel t_ucode_data -.word 0 -glabel t_ucode_data_size -.word 0 -glabel t_dram_stack -.word 0 -glabel t_dram_stack_size -.word 0 -glabel t_output_buff -.word 0 -glabel t_output_buff_size -.word 0 -glabel t_data_ptr -.word 0 -glabel t_data_size -.word 0 -glabel t_yield_data_ptr -.word 0 -glabel t_yield_data_size -.word 0 - - - - -.section .text -glabel _VirtualToPhysicalTask -/* 00F0F0 7000E4F0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00F0F4 7000E4F4 3C0E8006 */ lui $t6, %hi(tp) -/* 00F0F8 7000E4F8 AFBF0014 */ sw $ra, 0x14($sp) -/* 00F0FC 7000E4FC AFA40020 */ sw $a0, 0x20($sp) -/* 00F100 7000E500 25CE6A90 */ addiu $t6, %lo(tp) # addiu $t6, $t6, 0x6a90 -/* 00F104 7000E504 AFAE001C */ sw $t6, 0x1c($sp) -/* 00F108 7000E508 01C02825 */ move $a1, $t6 -/* 00F10C 7000E50C 8FA40020 */ lw $a0, 0x20($sp) -/* 00F110 7000E510 0C003E5C */ jal _bcopy -/* 00F114 7000E514 24060040 */ li $a2, 64 -/* 00F118 7000E518 8FAF001C */ lw $t7, 0x1c($sp) -/* 00F11C 7000E51C 8DF80010 */ lw $t8, 0x10($t7) -/* 00F120 7000E520 13000005 */ beqz $t8, .L7000E538 -/* 00F124 7000E524 00000000 */ nop -/* 00F128 7000E528 0C003A2C */ jal osVirtualToPhysical -/* 00F12C 7000E52C 03002025 */ move $a0, $t8 -/* 00F130 7000E530 8FB9001C */ lw $t9, 0x1c($sp) -/* 00F134 7000E534 AF220010 */ sw $v0, 0x10($t9) -.L7000E538: -/* 00F138 7000E538 8FA8001C */ lw $t0, 0x1c($sp) -/* 00F13C 7000E53C 8D090018 */ lw $t1, 0x18($t0) -/* 00F140 7000E540 11200005 */ beqz $t1, .L7000E558 -/* 00F144 7000E544 00000000 */ nop -/* 00F148 7000E548 0C003A2C */ jal osVirtualToPhysical -/* 00F14C 7000E54C 01202025 */ move $a0, $t1 -/* 00F150 7000E550 8FAA001C */ lw $t2, 0x1c($sp) -/* 00F154 7000E554 AD420018 */ sw $v0, 0x18($t2) -.L7000E558: -/* 00F158 7000E558 8FAB001C */ lw $t3, 0x1c($sp) -/* 00F15C 7000E55C 8D6C0020 */ lw $t4, 0x20($t3) -/* 00F160 7000E560 11800005 */ beqz $t4, .L7000E578 -/* 00F164 7000E564 00000000 */ nop -/* 00F168 7000E568 0C003A2C */ jal osVirtualToPhysical -/* 00F16C 7000E56C 01802025 */ move $a0, $t4 -/* 00F170 7000E570 8FAD001C */ lw $t5, 0x1c($sp) -/* 00F174 7000E574 ADA20020 */ sw $v0, 0x20($t5) -.L7000E578: -/* 00F178 7000E578 8FAE001C */ lw $t6, 0x1c($sp) -/* 00F17C 7000E57C 8DCF0028 */ lw $t7, 0x28($t6) -/* 00F180 7000E580 11E00005 */ beqz $t7, .L7000E598 -/* 00F184 7000E584 00000000 */ nop -/* 00F188 7000E588 0C003A2C */ jal osVirtualToPhysical -/* 00F18C 7000E58C 01E02025 */ move $a0, $t7 -/* 00F190 7000E590 8FB8001C */ lw $t8, 0x1c($sp) -/* 00F194 7000E594 AF020028 */ sw $v0, 0x28($t8) -.L7000E598: -/* 00F198 7000E598 8FB9001C */ lw $t9, 0x1c($sp) -/* 00F19C 7000E59C 8F28002C */ lw $t0, 0x2c($t9) -/* 00F1A0 7000E5A0 11000005 */ beqz $t0, .L7000E5B8 -/* 00F1A4 7000E5A4 00000000 */ nop -/* 00F1A8 7000E5A8 0C003A2C */ jal osVirtualToPhysical -/* 00F1AC 7000E5AC 01002025 */ move $a0, $t0 -/* 00F1B0 7000E5B0 8FA9001C */ lw $t1, 0x1c($sp) -/* 00F1B4 7000E5B4 AD22002C */ sw $v0, 0x2c($t1) -.L7000E5B8: -/* 00F1B8 7000E5B8 8FAA001C */ lw $t2, 0x1c($sp) -/* 00F1BC 7000E5BC 8D4B0030 */ lw $t3, 0x30($t2) -/* 00F1C0 7000E5C0 11600005 */ beqz $t3, .L7000E5D8 -/* 00F1C4 7000E5C4 00000000 */ nop -/* 00F1C8 7000E5C8 0C003A2C */ jal osVirtualToPhysical -/* 00F1CC 7000E5CC 01602025 */ move $a0, $t3 -/* 00F1D0 7000E5D0 8FAC001C */ lw $t4, 0x1c($sp) -/* 00F1D4 7000E5D4 AD820030 */ sw $v0, 0x30($t4) -.L7000E5D8: -/* 00F1D8 7000E5D8 8FAD001C */ lw $t5, 0x1c($sp) -/* 00F1DC 7000E5DC 8DAE0038 */ lw $t6, 0x38($t5) -/* 00F1E0 7000E5E0 11C00005 */ beqz $t6, .L7000E5F8 -/* 00F1E4 7000E5E4 00000000 */ nop -/* 00F1E8 7000E5E8 0C003A2C */ jal osVirtualToPhysical -/* 00F1EC 7000E5EC 01C02025 */ move $a0, $t6 -/* 00F1F0 7000E5F0 8FAF001C */ lw $t7, 0x1c($sp) -/* 00F1F4 7000E5F4 ADE20038 */ sw $v0, 0x38($t7) -.L7000E5F8: -/* 00F1F8 7000E5F8 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F1FC 7000E5FC 8FA2001C */ lw $v0, 0x1c($sp) -/* 00F200 7000E600 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00F204 7000E604 03E00008 */ jr $ra -/* 00F208 7000E608 00000000 */ nop - -glabel osSpTaskLoad -/* 00F20C 7000E60C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00F210 7000E610 AFBF0014 */ sw $ra, 0x14($sp) -/* 00F214 7000E614 AFA40020 */ sw $a0, 0x20($sp) -/* 00F218 7000E618 0C00393C */ jal _VirtualToPhysicalTask -/* 00F21C 7000E61C 8FA40020 */ lw $a0, 0x20($sp) -/* 00F220 7000E620 AFA2001C */ sw $v0, 0x1c($sp) -/* 00F224 7000E624 8FAE001C */ lw $t6, 0x1c($sp) -/* 00F228 7000E628 8DCF0004 */ lw $t7, 4($t6) -/* 00F22C 7000E62C 31F80001 */ andi $t8, $t7, 1 -/* 00F230 7000E630 1300000B */ beqz $t8, .L7000E660 -/* 00F234 7000E634 00000000 */ nop -/* 00F238 7000E638 8DD90038 */ lw $t9, 0x38($t6) -/* 00F23C 7000E63C 2401FFFE */ li $at, -2 -/* 00F240 7000E640 ADD90018 */ sw $t9, 0x18($t6) -/* 00F244 7000E644 8FA8001C */ lw $t0, 0x1c($sp) -/* 00F248 7000E648 8D09003C */ lw $t1, 0x3c($t0) -/* 00F24C 7000E64C AD09001C */ sw $t1, 0x1c($t0) -/* 00F250 7000E650 8FAA0020 */ lw $t2, 0x20($sp) -/* 00F254 7000E654 8D4B0004 */ lw $t3, 4($t2) -/* 00F258 7000E658 01616024 */ and $t4, $t3, $at -/* 00F25C 7000E65C AD4C0004 */ sw $t4, 4($t2) -.L7000E660: -/* 00F260 7000E660 8FA4001C */ lw $a0, 0x1c($sp) -/* 00F264 7000E664 0C0042F4 */ jal osWritebackDCache -/* 00F268 7000E668 24050040 */ li $a1, 64 -/* 00F26C 7000E66C 0C0063B8 */ jal __osSpSetStatus -/* 00F270 7000E670 24042B00 */ li $a0, 11008 -/* 00F274 7000E674 3C040400 */ lui $a0, (0x04001000 >> 16) # lui $a0, 0x400 -/* 00F278 7000E678 0C0063BC */ jal __osSpSetPc -/* 00F27C 7000E67C 34841000 */ ori $a0, (0x04001000 & 0xFFFF) # ori $a0, $a0, 0x1000 -/* 00F280 7000E680 2401FFFF */ li $at, -1 -/* 00F284 7000E684 14410007 */ bne $v0, $at, .L7000E6A4 -/* 00F288 7000E688 00000000 */ nop -.L7000E68C: -/* 00F28C 7000E68C 3C040400 */ lui $a0, (0x04001000 >> 16) # lui $a0, 0x400 -/* 00F290 7000E690 0C0063BC */ jal __osSpSetPc -/* 00F294 7000E694 34841000 */ ori $a0, (0x04001000 & 0xFFFF) # ori $a0, $a0, 0x1000 -/* 00F298 7000E698 2401FFFF */ li $at, -1 -/* 00F29C 7000E69C 1041FFFB */ beq $v0, $at, .L7000E68C -/* 00F2A0 7000E6A0 00000000 */ nop -.L7000E6A4: -/* 00F2A4 7000E6A4 3C050400 */ lui $a1, (0x04000FC0 >> 16) # lui $a1, 0x400 -/* 00F2A8 7000E6A8 34A50FC0 */ ori $a1, (0x04000FC0 & 0xFFFF) # ori $a1, $a1, 0xfc0 -/* 00F2AC 7000E6AC 24040001 */ li $a0, 1 -/* 00F2B0 7000E6B0 8FA6001C */ lw $a2, 0x1c($sp) -/* 00F2B4 7000E6B4 0C0063CC */ jal __osSpRawStartDma -/* 00F2B8 7000E6B8 24070040 */ li $a3, 64 -/* 00F2BC 7000E6BC 2401FFFF */ li $at, -1 -/* 00F2C0 7000E6C0 1441000A */ bne $v0, $at, .L7000E6EC -/* 00F2C4 7000E6C4 00000000 */ nop -.L7000E6C8: -/* 00F2C8 7000E6C8 3C050400 */ lui $a1, (0x04000FC0 >> 16) # lui $a1, 0x400 -/* 00F2CC 7000E6CC 34A50FC0 */ ori $a1, (0x04000FC0 & 0xFFFF) # ori $a1, $a1, 0xfc0 -/* 00F2D0 7000E6D0 24040001 */ li $a0, 1 -/* 00F2D4 7000E6D4 8FA6001C */ lw $a2, 0x1c($sp) -/* 00F2D8 7000E6D8 0C0063CC */ jal __osSpRawStartDma -/* 00F2DC 7000E6DC 24070040 */ li $a3, 64 -/* 00F2E0 7000E6E0 2401FFFF */ li $at, -1 -/* 00F2E4 7000E6E4 1041FFF8 */ beq $v0, $at, .L7000E6C8 -/* 00F2E8 7000E6E8 00000000 */ nop -.L7000E6EC: -/* 00F2EC 7000E6EC 0C0063F0 */ jal __osSpDeviceBusy -/* 00F2F0 7000E6F0 00000000 */ nop -/* 00F2F4 7000E6F4 10400005 */ beqz $v0, .L7000E70C -/* 00F2F8 7000E6F8 00000000 */ nop -.L7000E6FC: -/* 00F2FC 7000E6FC 0C0063F0 */ jal __osSpDeviceBusy -/* 00F300 7000E700 00000000 */ nop -/* 00F304 7000E704 1440FFFD */ bnez $v0, .L7000E6FC -/* 00F308 7000E708 00000000 */ nop -.L7000E70C: -/* 00F30C 7000E70C 8FAD001C */ lw $t5, 0x1c($sp) -/* 00F310 7000E710 3C050400 */ lui $a1, (0x04001000 >> 16) # lui $a1, 0x400 -/* 00F314 7000E714 34A51000 */ ori $a1, (0x04001000 & 0xFFFF) # ori $a1, $a1, 0x1000 -/* 00F318 7000E718 24040001 */ li $a0, 1 -/* 00F31C 7000E71C 8DA60008 */ lw $a2, 8($t5) -/* 00F320 7000E720 0C0063CC */ jal __osSpRawStartDma -/* 00F324 7000E724 8DA7000C */ lw $a3, 0xc($t5) -/* 00F328 7000E728 2401FFFF */ li $at, -1 -/* 00F32C 7000E72C 1441000B */ bne $v0, $at, .L7000E75C -/* 00F330 7000E730 00000000 */ nop -.L7000E734: -/* 00F334 7000E734 8FAF001C */ lw $t7, 0x1c($sp) -/* 00F338 7000E738 3C050400 */ lui $a1, (0x04001000 >> 16) # lui $a1, 0x400 -/* 00F33C 7000E73C 34A51000 */ ori $a1, (0x04001000 & 0xFFFF) # ori $a1, $a1, 0x1000 -/* 00F340 7000E740 24040001 */ li $a0, 1 -/* 00F344 7000E744 8DE60008 */ lw $a2, 8($t7) -/* 00F348 7000E748 0C0063CC */ jal __osSpRawStartDma -/* 00F34C 7000E74C 8DE7000C */ lw $a3, 0xc($t7) -/* 00F350 7000E750 2401FFFF */ li $at, -1 -/* 00F354 7000E754 1041FFF7 */ beq $v0, $at, .L7000E734 -/* 00F358 7000E758 00000000 */ nop -.L7000E75C: -/* 00F35C 7000E75C 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F360 7000E760 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00F364 7000E764 03E00008 */ jr $ra -/* 00F368 7000E768 00000000 */ nop - -glabel osSpTaskStartGo -/* 00F36C 7000E76C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00F370 7000E770 AFBF0014 */ sw $ra, 0x14($sp) -/* 00F374 7000E774 0C0063F0 */ jal __osSpDeviceBusy -/* 00F378 7000E778 AFA40018 */ sw $a0, 0x18($sp) -/* 00F37C 7000E77C 10400005 */ beqz $v0, .L7000E794 -/* 00F380 7000E780 00000000 */ nop -.L7000E784: -/* 00F384 7000E784 0C0063F0 */ jal __osSpDeviceBusy -/* 00F388 7000E788 00000000 */ nop -/* 00F38C 7000E78C 1440FFFD */ bnez $v0, .L7000E784 -/* 00F390 7000E790 00000000 */ nop -.L7000E794: -/* 00F394 7000E794 0C0063B8 */ jal __osSpSetStatus -/* 00F398 7000E798 24040125 */ li $a0, 293 -/* 00F39C 7000E79C 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F3A0 7000E7A0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00F3A4 7000E7A4 03E00008 */ jr $ra -/* 00F3A8 7000E7A8 00000000 */ nop - -/* 00F3AC 7000E7AC 00000000 */ nop -glabel osDpSetNextBuffer -/* 00F3B0 7000E7B0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00F3B4 7000E7B4 AFBF001C */ sw $ra, 0x1c($sp) -/* 00F3B8 7000E7B8 AFA40028 */ sw $a0, 0x28($sp) -/* 00F3BC 7000E7BC AFA60030 */ sw $a2, 0x30($sp) -/* 00F3C0 7000E7C0 AFA70034 */ sw $a3, 0x34($sp) -/* 00F3C4 7000E7C4 0C0063FC */ jal __osDpDeviceBusy -/* 00F3C8 7000E7C8 AFB00018 */ sw $s0, 0x18($sp) -/* 00F3CC 7000E7CC 10400003 */ beqz $v0, .L7000E7DC -/* 00F3D0 7000E7D0 00000000 */ nop -/* 00F3D4 7000E7D4 1000001B */ b .L7000E844 -/* 00F3D8 7000E7D8 2402FFFF */ li $v0, -1 -.L7000E7DC: -/* 00F3DC 7000E7DC 240E0001 */ li $t6, 1 -/* 00F3E0 7000E7E0 3C0FA410 */ lui $t7, %hi(DPC_STATUS_REG) # $t7, 0xa410 -/* 00F3E4 7000E7E4 ADEE000C */ sw $t6, %lo(DPC_STATUS_REG)($t7) -.L7000E7E8: -/* 00F3E8 7000E7E8 3C18A410 */ lui $t8, %hi(DPC_STATUS_REG) # $t8, 0xa410 -/* 00F3EC 7000E7EC 8F10000C */ lw $s0, %lo(DPC_STATUS_REG)($t8) -/* 00F3F0 7000E7F0 32190001 */ andi $t9, $s0, 1 -/* 00F3F4 7000E7F4 1720FFFC */ bnez $t9, .L7000E7E8 -/* 00F3F8 7000E7F8 00000000 */ nop -/* 00F3FC 7000E7FC 0C003A2C */ jal osVirtualToPhysical -/* 00F400 7000E800 8FA40028 */ lw $a0, 0x28($sp) -/* 00F404 7000E804 3C08A410 */ lui $t0, 0xa410 -/* 00F408 7000E808 AD020000 */ sw $v0, ($t0) -/* 00F40C 7000E80C 0C003A2C */ jal osVirtualToPhysical -/* 00F410 7000E810 8FA40028 */ lw $a0, 0x28($sp) -/* 00F414 7000E814 8FAD0034 */ lw $t5, 0x34($sp) -/* 00F418 7000E818 00405825 */ move $t3, $v0 -/* 00F41C 7000E81C 8FAC0030 */ lw $t4, 0x30($sp) -/* 00F420 7000E820 016D7821 */ addu $t7, $t3, $t5 -/* 00F424 7000E824 240A0000 */ li $t2, 0 -/* 00F428 7000E828 01ED082B */ sltu $at, $t7, $t5 -/* 00F42C 7000E82C 002A7021 */ addu $t6, $at, $t2 -/* 00F430 7000E830 01E04825 */ move $t1, $t7 -/* 00F434 7000E834 3C18A410 */ lui $t8, %hi(DPC_END_REG) # $t8, 0xa410 -/* 00F438 7000E838 AF090004 */ sw $t1, %lo(DPC_END_REG)($t8) -/* 00F43C 7000E83C 00001025 */ move $v0, $zero -/* 00F440 7000E840 01CC7021 */ addu $t6, $t6, $t4 -.L7000E844: -/* 00F444 7000E844 8FBF001C */ lw $ra, 0x1c($sp) -/* 00F448 7000E848 8FB00018 */ lw $s0, 0x18($sp) -/* 00F44C 7000E84C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00F450 7000E850 03E00008 */ jr $ra -/* 00F454 7000E854 00000000 */ nop - -/* 00F458 7000E858 00000000 */ nop -/* 00F45C 7000E85C 00000000 */ nop -glabel osSpTaskYield -/* 00F460 7000E860 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00F464 7000E864 AFBF0014 */ sw $ra, 0x14($sp) -/* 00F468 7000E868 0C0063B8 */ jal __osSpSetStatus -/* 00F46C 7000E86C 24040400 */ li $a0, 1024 -/* 00F470 7000E870 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F474 7000E874 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00F478 7000E878 03E00008 */ jr $ra -/* 00F47C 7000E87C 00000000 */ nop - -glabel __osGetTLBHi -/* 00F480 7000E880 40840000 */ mtc0 $a0, $0 -/* 00F484 7000E884 00000000 */ nop -/* 00F488 7000E888 42000001 */ tlbr -/* 00F48C 7000E88C 00000000 */ nop -/* 00F490 7000E890 00000000 */ nop -/* 00F494 7000E894 00000000 */ nop -/* 00F498 7000E898 40025000 */ mfc0 $v0, $10 -/* 00F49C 7000E89C 03E00008 */ jr $ra -/* 00F4A0 7000E8A0 00000000 */ nop - -/* 00F4A4 7000E8A4 00000000 */ nop -/* 00F4A8 7000E8A8 00000000 */ nop -/* 00F4AC 7000E8AC 00000000 */ nop -glabel osVirtualToPhysical -/* 00F4B0 7000E8B0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00F4B4 7000E8B4 AFA40018 */ sw $a0, 0x18($sp) -/* 00F4B8 7000E8B8 8FAE0018 */ lw $t6, 0x18($sp) -/* 00F4BC 7000E8BC 3C018000 */ lui $at, 0x8000 -/* 00F4C0 7000E8C0 AFBF0014 */ sw $ra, 0x14($sp) -/* 00F4C4 7000E8C4 01C1082B */ sltu $at, $t6, $at -/* 00F4C8 7000E8C8 14200007 */ bnez $at, .L7000E8E8 -/* 00F4CC 7000E8CC 3C01A000 */ lui $at, 0xa000 -/* 00F4D0 7000E8D0 01C1082B */ sltu $at, $t6, $at -/* 00F4D4 7000E8D4 10200004 */ beqz $at, .L7000E8E8 -/* 00F4D8 7000E8D8 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 00F4DC 7000E8DC 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 00F4E0 7000E8E0 1000000E */ b .L7000E91C -/* 00F4E4 7000E8E4 01C11024 */ and $v0, $t6, $at -.L7000E8E8: -/* 00F4E8 7000E8E8 8FAF0018 */ lw $t7, 0x18($sp) -/* 00F4EC 7000E8EC 3C01A000 */ lui $at, 0xa000 -/* 00F4F0 7000E8F0 01E1082B */ sltu $at, $t7, $at -/* 00F4F4 7000E8F4 14200007 */ bnez $at, .L7000E914 -/* 00F4F8 7000E8F8 3C01C000 */ lui $at, 0xc000 -/* 00F4FC 7000E8FC 01E1082B */ sltu $at, $t7, $at -/* 00F500 7000E900 10200004 */ beqz $at, .L7000E914 -/* 00F504 7000E904 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 00F508 7000E908 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 00F50C 7000E90C 10000003 */ b .L7000E91C -/* 00F510 7000E910 01E11024 */ and $v0, $t7, $at -.L7000E914: -/* 00F514 7000E914 0C006408 */ jal __osProbeTLB -/* 00F518 7000E918 8FA40018 */ lw $a0, 0x18($sp) -.L7000E91C: -/* 00F51C 7000E91C 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F520 7000E920 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00F524 7000E924 03E00008 */ jr $ra -/* 00F528 7000E928 00000000 */ nop - -/* 00F52C 7000E92C 00000000 */ nop -glabel osAiSetFrequency -/* 00F530 7000E930 3C0E8003 */ lui $t6, %hi(osViClock)#%hi(osViClock) -/* 00F534 7000E934 8DCE804C */ lw $t6, %lo(osViClock)($t6)#%lo(osViClock)($t6) -/* 00F538 7000E938 44844000 */ mtc1 $a0, $f8 -/* 00F53C 7000E93C 27BDFFF0 */ addiu $sp, $sp, -0x10 -/* 00F540 7000E940 448E2000 */ mtc1 $t6, $f4 -/* 00F544 7000E944 468042A0 */ cvt.s.w $f10, $f8 -/* 00F548 7000E948 04810005 */ bgez $a0, .L7000E960 -/* 00F54C 7000E94C 468021A0 */ cvt.s.w $f6, $f4 -/* 00F550 7000E950 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 00F554 7000E954 44818000 */ mtc1 $at, $f16 -/* 00F558 7000E958 00000000 */ nop -/* 00F55C 7000E95C 46105280 */ add.s $f10, $f10, $f16 -.L7000E960: -/* 00F560 7000E960 460A3483 */ div.s $f18, $f6, $f10 -/* 00F564 7000E964 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 00F568 7000E968 44812000 */ mtc1 $at, $f4 -/* 00F56C 7000E96C 24050001 */ li $a1, 1 -/* 00F570 7000E970 46049300 */ add.s $f12, $f18, $f4 -/* 00F574 7000E974 444FF800 */ cfc1 $t7, $31 -/* 00F578 7000E978 44C5F800 */ ctc1 $a1, $31 -/* 00F57C 7000E97C 00000000 */ nop -/* 00F580 7000E980 46006224 */ cvt.w.s $f8, $f12 -/* 00F584 7000E984 4445F800 */ cfc1 $a1, $31 -/* 00F588 7000E988 00000000 */ nop -/* 00F58C 7000E98C 30A10004 */ andi $at, $a1, 4 -/* 00F590 7000E990 30A50078 */ andi $a1, $a1, 0x78 -/* 00F594 7000E994 10A00013 */ beqz $a1, .L7000E9E4 -/* 00F598 7000E998 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 00F59C 7000E99C 44814000 */ mtc1 $at, $f8 -/* 00F5A0 7000E9A0 24050001 */ li $a1, 1 -/* 00F5A4 7000E9A4 46086201 */ sub.s $f8, $f12, $f8 -/* 00F5A8 7000E9A8 44C5F800 */ ctc1 $a1, $31 -/* 00F5AC 7000E9AC 00000000 */ nop -/* 00F5B0 7000E9B0 46004224 */ cvt.w.s $f8, $f8 -/* 00F5B4 7000E9B4 4445F800 */ cfc1 $a1, $31 -/* 00F5B8 7000E9B8 00000000 */ nop -/* 00F5BC 7000E9BC 30A10004 */ andi $at, $a1, 4 -/* 00F5C0 7000E9C0 30A50078 */ andi $a1, $a1, 0x78 -/* 00F5C4 7000E9C4 14A00005 */ bnez $a1, .L7000E9DC -/* 00F5C8 7000E9C8 00000000 */ nop -/* 00F5CC 7000E9CC 44054000 */ mfc1 $a1, $f8 -/* 00F5D0 7000E9D0 3C018000 */ lui $at, 0x8000 -/* 00F5D4 7000E9D4 10000007 */ b .L7000E9F4 -/* 00F5D8 7000E9D8 00A12825 */ or $a1, $a1, $at -.L7000E9DC: -/* 00F5DC 7000E9DC 10000005 */ b .L7000E9F4 -/* 00F5E0 7000E9E0 2405FFFF */ li $a1, -1 -.L7000E9E4: -/* 00F5E4 7000E9E4 44054000 */ mfc1 $a1, $f8 -/* 00F5E8 7000E9E8 00000000 */ nop -/* 00F5EC 7000E9EC 04A0FFFB */ bltz $a1, .L7000E9DC -/* 00F5F0 7000E9F0 00000000 */ nop -.L7000E9F4: -/* 00F5F4 7000E9F4 44CFF800 */ ctc1 $t7, $31 -/* 00F5F8 7000E9F8 2CA10084 */ sltiu $at, $a1, 0x84 -/* 00F5FC 7000E9FC 10200003 */ beqz $at, .L7000EA0C -/* 00F600 7000EA00 00000000 */ nop -/* 00F604 7000EA04 10000020 */ b .L7000EA88 -/* 00F608 7000EA08 2402FFFF */ li $v0, -1 -.L7000EA0C: -/* 00F60C 7000EA0C 24010042 */ li $at, 66 -/* 00F610 7000EA10 00A1001B */ divu $zero, $a1, $at -/* 00F614 7000EA14 00003012 */ mflo $a2 -/* 00F618 7000EA18 30D800FF */ andi $t8, $a2, 0xff -/* 00F61C 7000EA1C 03003025 */ move $a2, $t8 -/* 00F620 7000EA20 28C10011 */ slti $at, $a2, 0x11 -/* 00F624 7000EA24 14200002 */ bnez $at, .L7000EA30 -/* 00F628 7000EA28 00000000 */ nop -/* 00F62C 7000EA2C 24060010 */ li $a2, 16 -.L7000EA30: -/* 00F630 7000EA30 24B9FFFF */ addiu $t9, $a1, -1 -/* 00F634 7000EA34 3C08A450 */ lui $t0, %hi(AI_DACRATE_REG) # $t0, 0xa450 -/* 00F638 7000EA38 AD190010 */ sw $t9, %lo(AI_DACRATE_REG)($t0) -/* 00F63C 7000EA3C 24C9FFFF */ addiu $t1, $a2, -1 -/* 00F640 7000EA40 3C0AA450 */ lui $t2, %hi(AI_BITRATE_REG) # $t2, 0xa450 -/* 00F644 7000EA44 AD490014 */ sw $t1, %lo(AI_BITRATE_REG)($t2) -/* 00F648 7000EA48 240B0001 */ li $t3, 1 -/* 00F64C 7000EA4C 3C0CA450 */ lui $t4, %hi(AI_CONTROL_REG) # $t4, 0xa450 -/* 00F650 7000EA50 AD8B0008 */ sw $t3, %lo(AI_CONTROL_REG)($t4) -/* 00F654 7000EA54 3C0D8003 */ lui $t5, %hi(osViClock) #osViClock -/* 00F658 7000EA58 8DAD804C */ lw $t5, %lo(osViClock)($t5) #osViClock -/* 00F65C 7000EA5C 01A5001A */ div $zero, $t5, $a1 -/* 00F660 7000EA60 00001012 */ mflo $v0 -/* 00F664 7000EA64 14A00002 */ bnez $a1, .L7000EA70 -/* 00F668 7000EA68 00000000 */ nop -/* 00F66C 7000EA6C 0007000D */ break 7 -.L7000EA70: -/* 00F670 7000EA70 2401FFFF */ li $at, -1 -/* 00F674 7000EA74 14A10004 */ bne $a1, $at, .L7000EA88 -/* 00F678 7000EA78 3C018000 */ lui $at, 0x8000 -/* 00F67C 7000EA7C 15A10002 */ bne $t5, $at, .L7000EA88 -/* 00F680 7000EA80 00000000 */ nop -/* 00F684 7000EA84 0006000D */ break 6 -.L7000EA88: -/* 00F688 7000EA88 03E00008 */ jr $ra -/* 00F68C 7000EA8C 27BD0010 */ addiu $sp, $sp, 0x10 - -glabel alUnlink -/* 00F690 7000EA90 8C820000 */ lw $v0, ($a0) -/* 00F694 7000EA94 50400004 */ beql $v0, $zero, .L7000EAA8 -/* 00F698 7000EA98 8C820004 */ lw $v0, 4($a0) -/* 00F69C 7000EA9C 8C8E0004 */ lw $t6, 4($a0) -/* 00F6A0 7000EAA0 AC4E0004 */ sw $t6, 4($v0) -/* 00F6A4 7000EAA4 8C820004 */ lw $v0, 4($a0) -.L7000EAA8: -/* 00F6A8 7000EAA8 10400003 */ beqz $v0, .L7000EAB8 -/* 00F6AC 7000EAAC 00000000 */ nop -/* 00F6B0 7000EAB0 8C8F0000 */ lw $t7, ($a0) -/* 00F6B4 7000EAB4 AC4F0000 */ sw $t7, ($v0) -.L7000EAB8: -/* 00F6B8 7000EAB8 03E00008 */ jr $ra -/* 00F6BC 7000EABC 00000000 */ nop - -glabel alLink -/* 00F6C0 7000EAC0 8CAE0000 */ lw $t6, ($a1) -/* 00F6C4 7000EAC4 AC850004 */ sw $a1, 4($a0) -/* 00F6C8 7000EAC8 AC8E0000 */ sw $t6, ($a0) -/* 00F6CC 7000EACC 8CA20000 */ lw $v0, ($a1) -/* 00F6D0 7000EAD0 10400002 */ beqz $v0, .L7000EADC -/* 00F6D4 7000EAD4 00000000 */ nop -/* 00F6D8 7000EAD8 AC440004 */ sw $a0, 4($v0) -.L7000EADC: -/* 00F6DC 7000EADC 03E00008 */ jr $ra -/* 00F6E0 7000EAE0 ACA40000 */ sw $a0, ($a1) - -glabel alClose -/* 00F6E4 7000EAE4 3C0E8002 */ lui $t6, %hi(alGlobals) -/* 00F6E8 7000EAE8 8DCE76E0 */ lw $t6, %lo(alGlobals)($t6) -/* 00F6EC 7000EAEC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00F6F0 7000EAF0 AFBF0014 */ sw $ra, 0x14($sp) -/* 00F6F4 7000EAF4 51C00006 */ beql $t6, $zero, .L7000EB10 -/* 00F6F8 7000EAF8 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F6FC 7000EAFC 0C006438 */ jal alSynDelete -/* 00F700 7000EB00 00000000 */ nop -/* 00F704 7000EB04 3C018002 */ lui $at, %hi(alGlobals) -/* 00F708 7000EB08 AC2076E0 */ sw $zero, %lo(alGlobals)($at) -/* 00F70C 7000EB0C 8FBF0014 */ lw $ra, 0x14($sp) -.L7000EB10: -/* 00F710 7000EB10 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00F714 7000EB14 03E00008 */ jr $ra -/* 00F718 7000EB18 00000000 */ nop - -glabel alInit -/* 00F71C 7000EB1C 3C028002 */ lui $v0, %hi(alGlobals) -/* 00F720 7000EB20 244276E0 */ addiu $v0, %lo(alGlobals) # addiu $v0, $v0, 0x76e0 -/* 00F724 7000EB24 8C4E0000 */ lw $t6, ($v0) -/* 00F728 7000EB28 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00F72C 7000EB2C AFBF0014 */ sw $ra, 0x14($sp) -/* 00F730 7000EB30 55C00004 */ bnezl $t6, .L7000EB44 -/* 00F734 7000EB34 8FBF0014 */ lw $ra, 0x14($sp) -/* 00F738 7000EB38 0C003CE8 */ jal alSynNew -/* 00F73C 7000EB3C AC440000 */ sw $a0, ($v0) -/* 00F740 7000EB40 8FBF0014 */ lw $ra, 0x14($sp) -.L7000EB44: -/* 00F744 7000EB44 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00F748 7000EB48 03E00008 */ jr $ra -/* 00F74C 7000EB4C 00000000 */ nop - -.section .data -glabel alGlobals - .word 0 -.align 4 - -.section .text -glabel alHeapDBAlloc -/* 00F750 7000EB50 8FAE0010 */ lw $t6, 0x10($sp) -/* 00F754 7000EB54 AFA40000 */ sw $a0, ($sp) -/* 00F758 7000EB58 AFA50004 */ sw $a1, 4($sp) -/* 00F75C 7000EB5C 00EE0019 */ multu $a3, $t6 -/* 00F760 7000EB60 8CD90008 */ lw $t9, 8($a2) -/* 00F764 7000EB64 8CD80000 */ lw $t8, ($a2) -/* 00F768 7000EB68 8CC40004 */ lw $a0, 4($a2) -/* 00F76C 7000EB6C 2401FFF0 */ li $at, -16 -/* 00F770 7000EB70 03194021 */ addu $t0, $t8, $t9 -/* 00F774 7000EB74 00001825 */ move $v1, $zero -/* 00F778 7000EB78 00001012 */ mflo $v0 -/* 00F77C 7000EB7C 2442000F */ addiu $v0, $v0, 0xf -/* 00F780 7000EB80 00417824 */ and $t7, $v0, $at -/* 00F784 7000EB84 008F4821 */ addu $t1, $a0, $t7 -/* 00F788 7000EB88 0109082B */ sltu $at, $t0, $t1 -/* 00F78C 7000EB8C 14200003 */ bnez $at, .L7000EB9C -/* 00F790 7000EB90 008F5021 */ addu $t2, $a0, $t7 -/* 00F794 7000EB94 00801825 */ move $v1, $a0 -/* 00F798 7000EB98 ACCA0004 */ sw $t2, 4($a2) -.L7000EB9C: -/* 00F79C 7000EB9C 03E00008 */ jr $ra -/* 00F7A0 7000EBA0 00601025 */ move $v0, $v1 - -/* 00F7A4 7000EBA4 00000000 */ nop -/* 00F7A8 7000EBA8 00000000 */ nop -/* 00F7AC 7000EBAC 00000000 */ nop -glabel osGetTime -/* 00F7B0 7000EBB0 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 00F7B4 7000EBB4 AFBF001C */ sw $ra, 0x1c($sp) -/* 00F7B8 7000EBB8 0C00617C */ jal __osDisableInt -/* 00F7BC 7000EBBC AFB00018 */ sw $s0, 0x18($sp) -/* 00F7C0 7000EBC0 0C003638 */ jal osGetCount -/* 00F7C4 7000EBC4 00408025 */ move $s0, $v0 -/* 00F7C8 7000EBC8 AFA20034 */ sw $v0, 0x34($sp) -/* 00F7CC 7000EBCC 3C0F8007 */ lui $t7, %hi(__osBaseCounter) -/* 00F7D0 7000EBD0 8DEF8E18 */ lw $t7, %lo(__osBaseCounter)($t7) -/* 00F7D4 7000EBD4 8FAE0034 */ lw $t6, 0x34($sp) -/* 00F7D8 7000EBD8 3C088007 */ lui $t0, %hi(__osCurrentTime) -/* 00F7DC 7000EBDC 3C098007 */ lui $t1, %hi(__osCurrentTime+4) -/* 00F7E0 7000EBE0 8D298E14 */ lw $t1, %lo(__osCurrentTime+4)($t1) -/* 00F7E4 7000EBE4 8D088E10 */ lw $t0, %lo(__osCurrentTime)($t0) -/* 00F7E8 7000EBE8 01CFC023 */ subu $t8, $t6, $t7 -/* 00F7EC 7000EBEC AFB80030 */ sw $t8, 0x30($sp) -/* 00F7F0 7000EBF0 02002025 */ move $a0, $s0 -/* 00F7F4 7000EBF4 AFA9002C */ sw $t1, 0x2c($sp) -/* 00F7F8 7000EBF8 0C006184 */ jal __osRestoreInt -/* 00F7FC 7000EBFC AFA80028 */ sw $t0, 0x28($sp) -/* 00F800 7000EC00 8FB90030 */ lw $t9, 0x30($sp) -/* 00F804 7000EC04 8FAD002C */ lw $t5, 0x2c($sp) -/* 00F808 7000EC08 8FBF001C */ lw $ra, 0x1c($sp) -/* 00F80C 7000EC0C 03205825 */ move $t3, $t9 -/* 00F810 7000EC10 016D1821 */ addu $v1, $t3, $t5 -/* 00F814 7000EC14 8FAC0028 */ lw $t4, 0x28($sp) -/* 00F818 7000EC18 240A0000 */ li $t2, 0 -/* 00F81C 7000EC1C 006D082B */ sltu $at, $v1, $t5 -/* 00F820 7000EC20 002A1021 */ addu $v0, $at, $t2 -/* 00F824 7000EC24 8FB00018 */ lw $s0, 0x18($sp) -/* 00F828 7000EC28 27BD0038 */ addiu $sp, $sp, 0x38 -/* 00F82C 7000EC2C 03E00008 */ jr $ra -/* 00F830 7000EC30 004C1021 */ addu $v0, $v0, $t4 - -/* 00F834 7000EC34 00000000 */ nop -/* 00F838 7000EC38 00000000 */ nop -/* 00F83C 7000EC3C 00000000 */ nop -glabel __ull_rshift -/* 00F840 7000EC40 AFA40000 */ sw $a0, ($sp) -/* 00F844 7000EC44 AFA50004 */ sw $a1, 4($sp) -/* 00F848 7000EC48 AFA60008 */ sw $a2, 8($sp) -/* 00F84C 7000EC4C AFA7000C */ sw $a3, 0xc($sp) -/* 00F850 7000EC50 DFAF0008 */ ld $t7, 8($sp) -/* 00F854 7000EC54 DFAE0000 */ ld $t6, ($sp) -/* 00F858 7000EC58 01EE1016 */ dsrlv $v0, $t6, $t7 -/* 00F85C 7000EC5C 0002183C */ dsll32 $v1, $v0, 0 -/* 00F860 7000EC60 0003183F */ dsra32 $v1, $v1, 0 -/* 00F864 7000EC64 03E00008 */ jr $ra -/* 00F868 7000EC68 0002103F */ dsra32 $v0, $v0, 0 - -glabel __ull_rem -/* 00F86C 7000EC6C AFA40000 */ sw $a0, ($sp) -/* 00F870 7000EC70 AFA50004 */ sw $a1, 4($sp) -/* 00F874 7000EC74 AFA60008 */ sw $a2, 8($sp) -/* 00F878 7000EC78 AFA7000C */ sw $a3, 0xc($sp) -/* 00F87C 7000EC7C DFAF0008 */ ld $t7, 8($sp) -/* 00F880 7000EC80 DFAE0000 */ ld $t6, ($sp) -/* 00F884 7000EC84 01CF001F */ ddivu $zero, $t6, $t7 -/* 00F888 7000EC88 15E00002 */ bnez $t7, .L7000EC94 -/* 00F88C 7000EC8C 00000000 */ nop -/* 00F890 7000EC90 0007000D */ break 7 -.L7000EC94: -/* 00F894 7000EC94 00001010 */ mfhi $v0 -/* 00F898 7000EC98 0002183C */ dsll32 $v1, $v0, 0 -/* 00F89C 7000EC9C 0003183F */ dsra32 $v1, $v1, 0 -/* 00F8A0 7000ECA0 03E00008 */ jr $ra -/* 00F8A4 7000ECA4 0002103F */ dsra32 $v0, $v0, 0 - -glabel __ull_div -/* 00F8A8 7000ECA8 AFA40000 */ sw $a0, ($sp) -/* 00F8AC 7000ECAC AFA50004 */ sw $a1, 4($sp) -/* 00F8B0 7000ECB0 AFA60008 */ sw $a2, 8($sp) -/* 00F8B4 7000ECB4 AFA7000C */ sw $a3, 0xc($sp) -/* 00F8B8 7000ECB8 DFAF0008 */ ld $t7, 8($sp) -/* 00F8BC 7000ECBC DFAE0000 */ ld $t6, ($sp) -/* 00F8C0 7000ECC0 01CF001F */ ddivu $zero, $t6, $t7 -/* 00F8C4 7000ECC4 15E00002 */ bnez $t7, .L7000ECD0 -/* 00F8C8 7000ECC8 00000000 */ nop -/* 00F8CC 7000ECCC 0007000D */ break 7 -.L7000ECD0: -/* 00F8D0 7000ECD0 00001012 */ mflo $v0 -/* 00F8D4 7000ECD4 0002183C */ dsll32 $v1, $v0, 0 -/* 00F8D8 7000ECD8 0003183F */ dsra32 $v1, $v1, 0 -/* 00F8DC 7000ECDC 03E00008 */ jr $ra -/* 00F8E0 7000ECE0 0002103F */ dsra32 $v0, $v0, 0 - -glabel __ll_lshift -/* 00F8E4 7000ECE4 AFA40000 */ sw $a0, ($sp) -/* 00F8E8 7000ECE8 AFA50004 */ sw $a1, 4($sp) -/* 00F8EC 7000ECEC AFA60008 */ sw $a2, 8($sp) -/* 00F8F0 7000ECF0 AFA7000C */ sw $a3, 0xc($sp) -/* 00F8F4 7000ECF4 DFAF0008 */ ld $t7, 8($sp) -/* 00F8F8 7000ECF8 DFAE0000 */ ld $t6, ($sp) -/* 00F8FC 7000ECFC 01EE1014 */ dsllv $v0, $t6, $t7 -/* 00F900 7000ED00 0002183C */ dsll32 $v1, $v0, 0 -/* 00F904 7000ED04 0003183F */ dsra32 $v1, $v1, 0 -/* 00F908 7000ED08 03E00008 */ jr $ra -/* 00F90C 7000ED0C 0002103F */ dsra32 $v0, $v0, 0 - -glabel __ll_rem -/* 00F910 7000ED10 AFA40000 */ sw $a0, ($sp) -/* 00F914 7000ED14 AFA50004 */ sw $a1, 4($sp) -/* 00F918 7000ED18 AFA60008 */ sw $a2, 8($sp) -/* 00F91C 7000ED1C AFA7000C */ sw $a3, 0xc($sp) -/* 00F920 7000ED20 DFAF0008 */ ld $t7, 8($sp) -/* 00F924 7000ED24 DFAE0000 */ ld $t6, ($sp) -/* 00F928 7000ED28 01CF001F */ ddivu $zero, $t6, $t7 -/* 00F92C 7000ED2C 15E00002 */ bnez $t7, .L7000ED38 -/* 00F930 7000ED30 00000000 */ nop -/* 00F934 7000ED34 0007000D */ break 7 -.L7000ED38: -/* 00F938 7000ED38 00001010 */ mfhi $v0 -/* 00F93C 7000ED3C 0002183C */ dsll32 $v1, $v0, 0 -/* 00F940 7000ED40 0003183F */ dsra32 $v1, $v1, 0 -/* 00F944 7000ED44 03E00008 */ jr $ra -/* 00F948 7000ED48 0002103F */ dsra32 $v0, $v0, 0 - -glabel __ll_div -/* 00F94C 7000ED4C AFA40000 */ sw $a0, ($sp) -/* 00F950 7000ED50 AFA50004 */ sw $a1, 4($sp) -/* 00F954 7000ED54 AFA60008 */ sw $a2, 8($sp) -/* 00F958 7000ED58 AFA7000C */ sw $a3, 0xc($sp) -/* 00F95C 7000ED5C DFAF0008 */ ld $t7, 8($sp) -/* 00F960 7000ED60 DFAE0000 */ ld $t6, ($sp) -/* 00F964 7000ED64 01CF001E */ ddiv $zero, $t6, $t7 -/* 00F968 7000ED68 00000000 */ nop -/* 00F96C 7000ED6C 15E00002 */ bnez $t7, .L7000ED78 -/* 00F970 7000ED70 00000000 */ nop -/* 00F974 7000ED74 0007000D */ break 7 -.L7000ED78: -/* 00F978 7000ED78 6401FFFF */ daddiu $at, $zero, -1 -/* 00F97C 7000ED7C 15E10005 */ bne $t7, $at, .L7000ED94 -/* 00F980 7000ED80 64010001 */ daddiu $at, $zero, 1 -/* 00F984 7000ED84 00010FFC */ dsll32 $at, $at, 0x1f -/* 00F988 7000ED88 15C10002 */ bne $t6, $at, .L7000ED94 -/* 00F98C 7000ED8C 00000000 */ nop -/* 00F990 7000ED90 0006000D */ break 6 -.L7000ED94: -/* 00F994 7000ED94 00001012 */ mflo $v0 -/* 00F998 7000ED98 0002183C */ dsll32 $v1, $v0, 0 -/* 00F99C 7000ED9C 0003183F */ dsra32 $v1, $v1, 0 -/* 00F9A0 7000EDA0 03E00008 */ jr $ra -/* 00F9A4 7000EDA4 0002103F */ dsra32 $v0, $v0, 0 - -glabel __ll_mul -/* 00F9A8 7000EDA8 AFA40000 */ sw $a0, ($sp) -/* 00F9AC 7000EDAC AFA50004 */ sw $a1, 4($sp) -/* 00F9B0 7000EDB0 AFA60008 */ sw $a2, 8($sp) -/* 00F9B4 7000EDB4 AFA7000C */ sw $a3, 0xc($sp) -/* 00F9B8 7000EDB8 DFAF0008 */ ld $t7, 8($sp) -/* 00F9BC 7000EDBC DFAE0000 */ ld $t6, ($sp) -/* 00F9C0 7000EDC0 01CF001D */ dmultu $t6, $t7 -/* 00F9C4 7000EDC4 00001012 */ mflo $v0 -/* 00F9C8 7000EDC8 0002183C */ dsll32 $v1, $v0, 0 -/* 00F9CC 7000EDCC 0003183F */ dsra32 $v1, $v1, 0 -/* 00F9D0 7000EDD0 03E00008 */ jr $ra -/* 00F9D4 7000EDD4 0002103F */ dsra32 $v0, $v0, 0 - -glabel __ull_divremi -/* 00F9D8 7000EDD8 87AF0012 */ lh $t7, 0x12($sp) -/* 00F9DC 7000EDDC AFA60008 */ sw $a2, 8($sp) -/* 00F9E0 7000EDE0 AFA7000C */ sw $a3, 0xc($sp) -/* 00F9E4 7000EDE4 DFAE0008 */ ld $t6, 8($sp) -/* 00F9E8 7000EDE8 01E0C025 */ move $t8, $t7 -/* 00F9EC 7000EDEC 0300C825 */ move $t9, $t8 -/* 00F9F0 7000EDF0 01D9001F */ ddivu $zero, $t6, $t9 -/* 00F9F4 7000EDF4 17200002 */ bnez $t9, .L7000EE00 -/* 00F9F8 7000EDF8 00000000 */ nop -/* 00F9FC 7000EDFC 0007000D */ break 7 -.L7000EE00: -/* 00FA00 7000EE00 00004012 */ mflo $t0 -/* 00FA04 7000EE04 FC880000 */ sd $t0, ($a0) -/* 00FA08 7000EE08 87AA0012 */ lh $t2, 0x12($sp) -/* 00FA0C 7000EE0C DFA90008 */ ld $t1, 8($sp) -/* 00FA10 7000EE10 01405825 */ move $t3, $t2 -/* 00FA14 7000EE14 01606025 */ move $t4, $t3 -/* 00FA18 7000EE18 012C001F */ ddivu $zero, $t1, $t4 -/* 00FA1C 7000EE1C 15800002 */ bnez $t4, .L7000EE28 -/* 00FA20 7000EE20 00000000 */ nop -/* 00FA24 7000EE24 0007000D */ break 7 -.L7000EE28: -/* 00FA28 7000EE28 00006810 */ mfhi $t5 -/* 00FA2C 7000EE2C FCAD0000 */ sd $t5, ($a1) -/* 00FA30 7000EE30 03E00008 */ jr $ra -/* 00FA34 7000EE34 00000000 */ nop - -glabel __ll_mod -/* 00FA38 7000EE38 27BDFFF8 */ addiu $sp, $sp, -8 -/* 00FA3C 7000EE3C AFA40008 */ sw $a0, 8($sp) -/* 00FA40 7000EE40 AFA5000C */ sw $a1, 0xc($sp) -/* 00FA44 7000EE44 AFA60010 */ sw $a2, 0x10($sp) -/* 00FA48 7000EE48 AFA70014 */ sw $a3, 0x14($sp) -/* 00FA4C 7000EE4C DFAF0010 */ ld $t7, 0x10($sp) -/* 00FA50 7000EE50 DFAE0008 */ ld $t6, 8($sp) -/* 00FA54 7000EE54 01CF001E */ ddiv $zero, $t6, $t7 -/* 00FA58 7000EE58 00000000 */ nop -/* 00FA5C 7000EE5C 15E00002 */ bnez $t7, .L7000EE68 -/* 00FA60 7000EE60 00000000 */ nop -/* 00FA64 7000EE64 0007000D */ break 7 -.L7000EE68: -/* 00FA68 7000EE68 6401FFFF */ daddiu $at, $zero, -1 -/* 00FA6C 7000EE6C 15E10005 */ bne $t7, $at, .L7000EE84 -/* 00FA70 7000EE70 64010001 */ daddiu $at, $zero, 1 -/* 00FA74 7000EE74 00010FFC */ dsll32 $at, $at, 0x1f -/* 00FA78 7000EE78 15C10002 */ bne $t6, $at, .L7000EE84 -/* 00FA7C 7000EE7C 00000000 */ nop -/* 00FA80 7000EE80 0006000D */ break 6 -.L7000EE84: -/* 00FA84 7000EE84 0000C010 */ mfhi $t8 -/* 00FA88 7000EE88 FFB80000 */ sd $t8, ($sp) -/* 00FA8C 7000EE8C 07010003 */ bgez $t8, .L7000EE9C -/* 00FA90 7000EE90 00000000 */ nop -/* 00FA94 7000EE94 1DE00007 */ bgtz $t7, .L7000EEB4 -/* 00FA98 7000EE98 00000000 */ nop -.L7000EE9C: -/* 00FA9C 7000EE9C DFB90000 */ ld $t9, ($sp) -/* 00FAA0 7000EEA0 1B200008 */ blez $t9, .L7000EEC4 -/* 00FAA4 7000EEA4 00000000 */ nop -/* 00FAA8 7000EEA8 DFA80010 */ ld $t0, 0x10($sp) -/* 00FAAC 7000EEAC 05010005 */ bgez $t0, .L7000EEC4 -/* 00FAB0 7000EEB0 00000000 */ nop -.L7000EEB4: -/* 00FAB4 7000EEB4 DFA90000 */ ld $t1, ($sp) -/* 00FAB8 7000EEB8 DFAA0010 */ ld $t2, 0x10($sp) -/* 00FABC 7000EEBC 012A582D */ daddu $t3, $t1, $t2 -/* 00FAC0 7000EEC0 FFAB0000 */ sd $t3, ($sp) -.L7000EEC4: -/* 00FAC4 7000EEC4 8FA20000 */ lw $v0, ($sp) -/* 00FAC8 7000EEC8 8FA30004 */ lw $v1, 4($sp) -/* 00FACC 7000EECC 03E00008 */ jr $ra -/* 00FAD0 7000EED0 27BD0008 */ addiu $sp, $sp, 8 - -glabel __ll_rshift -/* 00FAD4 7000EED4 AFA40000 */ sw $a0, ($sp) -/* 00FAD8 7000EED8 AFA50004 */ sw $a1, 4($sp) -/* 00FADC 7000EEDC AFA60008 */ sw $a2, 8($sp) -/* 00FAE0 7000EEE0 AFA7000C */ sw $a3, 0xc($sp) -/* 00FAE4 7000EEE4 DFAF0008 */ ld $t7, 8($sp) -/* 00FAE8 7000EEE8 DFAE0000 */ ld $t6, ($sp) -/* 00FAEC 7000EEEC 01EE1017 */ dsrav $v0, $t6, $t7 -/* 00FAF0 7000EEF0 0002183C */ dsll32 $v1, $v0, 0 -/* 00FAF4 7000EEF4 0003183F */ dsra32 $v1, $v1, 0 -/* 00FAF8 7000EEF8 03E00008 */ jr $ra -/* 00FAFC 7000EEFC 0002103F */ dsra32 $v0, $v0, 0 - -glabel osAiSetNextBuffer -/* 00FB00 7000EF00 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00FB04 7000EF04 3C0F8002 */ lui $t7, %hi(B_800276F0) -/* 00FB08 7000EF08 91EF76F0 */ lbu $t7, %lo(B_800276F0)($t7) -/* 00FB0C 7000EF0C AFA40020 */ sw $a0, 0x20($sp) -/* 00FB10 7000EF10 8FAE0020 */ lw $t6, 0x20($sp) -/* 00FB14 7000EF14 AFBF0014 */ sw $ra, 0x14($sp) -/* 00FB18 7000EF18 AFA50024 */ sw $a1, 0x24($sp) -/* 00FB1C 7000EF1C 11E00003 */ beqz $t7, .L7000EF2C -/* 00FB20 7000EF20 AFAE001C */ sw $t6, 0x1c($sp) -/* 00FB24 7000EF24 25D8E000 */ addiu $t8, $t6, -0x2000 -/* 00FB28 7000EF28 AFB8001C */ sw $t8, 0x1c($sp) -.L7000EF2C: -/* 00FB2C 7000EF2C 8FB90020 */ lw $t9, 0x20($sp) -/* 00FB30 7000EF30 8FA80024 */ lw $t0, 0x24($sp) -/* 00FB34 7000EF34 24012000 */ li $at, 8192 -/* 00FB38 7000EF38 03284821 */ addu $t1, $t9, $t0 -/* 00FB3C 7000EF3C 312A3FFF */ andi $t2, $t1, 0x3fff -/* 00FB40 7000EF40 15410005 */ bne $t2, $at, .L7000EF58 -/* 00FB44 7000EF44 00000000 */ nop -/* 00FB48 7000EF48 240B0001 */ li $t3, 1 -/* 00FB4C 7000EF4C 3C018002 */ lui $at, %hi(B_800276F0) -/* 00FB50 7000EF50 10000003 */ b .L7000EF60 -/* 00FB54 7000EF54 A02B76F0 */ sb $t3, %lo(B_800276F0)($at) -.L7000EF58: -/* 00FB58 7000EF58 3C018002 */ lui $at, %hi(B_800276F0) -/* 00FB5C 7000EF5C A02076F0 */ sb $zero, %lo(B_800276F0)($at) -.L7000EF60: -/* 00FB60 7000EF60 0C00643C */ jal __osAiDeviceBusy -/* 00FB64 7000EF64 00000000 */ nop -/* 00FB68 7000EF68 10400003 */ beqz $v0, .L7000EF78 -/* 00FB6C 7000EF6C 00000000 */ nop -/* 00FB70 7000EF70 10000009 */ b .L7000EF98 -/* 00FB74 7000EF74 2402FFFF */ li $v0, -1 -.L7000EF78: -/* 00FB78 7000EF78 0C003A2C */ jal osVirtualToPhysical -/* 00FB7C 7000EF7C 8FA4001C */ lw $a0, 0x1c($sp) -/* 00FB80 7000EF80 3C0CA450 */ lui $t4, 0xa450 -/* 00FB84 7000EF84 AD820000 */ sw $v0, ($t4) -/* 00FB88 7000EF88 8FAD0024 */ lw $t5, 0x24($sp) -/* 00FB8C 7000EF8C 3C0FA450 */ lui $t7, %hi(AI_LEN_REG) # $t7, 0xa450 -/* 00FB90 7000EF90 00001025 */ move $v0, $zero -/* 00FB94 7000EF94 ADED0004 */ sw $t5, %lo(AI_LEN_REG)($t7) -.L7000EF98: -/* 00FB98 7000EF98 8FBF0014 */ lw $ra, 0x14($sp) -/* 00FB9C 7000EF9C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00FBA0 7000EFA0 03E00008 */ jr $ra -/* 00FBA4 7000EFA4 00000000 */ nop - -/* 00FBA8 7000EFA8 00000000 */ nop -/* 00FBAC 7000EFAC 00000000 */ nop -.section .data -glabel B_800276F0 -.byte 0 -.align 4 - -.section .text -glabel osAiGetLength -/* 00FBB0 7000EFB0 3C0EA450 */ lui $t6, 0xa450 -/* 00FBB4 7000EFB4 03E00008 */ jr $ra -/* 00FBB8 7000EFB8 8DC20004 */ lw $v0, 4($t6) - -/* 00FBBC 7000EFBC 00000000 */ nop -/* 00FBC0 7000EFC0 03E00008 */ jr $ra -/* 00FBC4 7000EFC4 00000000 */ nop - -glabel _timeToSamples -/* 00FBC8 7000EFC8 8C8E0044 */ lw $t6, 0x44($a0) -/* 00FBCC 7000EFCC 44852000 */ mtc1 $a1, $f4 -/* 00FBD0 7000EFD0 3C018003 */ lui $at, %hi(F64_80029420) -/* 00FBD4 7000EFD4 448E4000 */ mtc1 $t6, $f8 -/* 00FBD8 7000EFD8 468021A0 */ cvt.s.w $f6, $f4 -/* 00FBDC 7000EFDC D4249420 */ ldc1 $f4, %lo(F64_80029420)($at) -/* 00FBE0 7000EFE0 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 00FBE4 7000EFE4 44813800 */ mtc1 $at, $f7 -/* 00FBE8 7000EFE8 2401FFF0 */ li $at, -16 -/* 00FBEC 7000EFEC 468042A0 */ cvt.s.w $f10, $f8 -/* 00FBF0 7000EFF0 460A3402 */ mul.s $f16, $f6, $f10 -/* 00FBF4 7000EFF4 44803000 */ mtc1 $zero, $f6 -/* 00FBF8 7000EFF8 460084A1 */ cvt.d.s $f18, $f16 -/* 00FBFC 7000EFFC 46249203 */ div.d $f8, $f18, $f4 -/* 00FC00 7000F000 46264280 */ add.d $f10, $f8, $f6 -/* 00FC04 7000F004 46205020 */ cvt.s.d $f0, $f10 -/* 00FC08 7000F008 4600040D */ trunc.w.s $f16, $f0 -/* 00FC0C 7000F00C 44028000 */ mfc1 $v0, $f16 -/* 00FC10 7000F010 00000000 */ nop -/* 00FC14 7000F014 0041C024 */ and $t8, $v0, $at -/* 00FC18 7000F018 03E00008 */ jr $ra -/* 00FC1C 7000F01C 03001025 */ move $v0, $t8 - -glabel _freePVoice -/* 00FC20 7000F020 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00FC24 7000F024 AFBF0014 */ sw $ra, 0x14($sp) -/* 00FC28 7000F028 AFA40018 */ sw $a0, 0x18($sp) -/* 00FC2C 7000F02C AFA5001C */ sw $a1, 0x1c($sp) -/* 00FC30 7000F030 0C003AA4 */ jal alUnlink -/* 00FC34 7000F034 00A02025 */ move $a0, $a1 -/* 00FC38 7000F038 8FA50018 */ lw $a1, 0x18($sp) -/* 00FC3C 7000F03C 8FA4001C */ lw $a0, 0x1c($sp) -/* 00FC40 7000F040 0C003AB0 */ jal alLink -/* 00FC44 7000F044 24A50014 */ addiu $a1, $a1, 0x14 -/* 00FC48 7000F048 8FBF0014 */ lw $ra, 0x14($sp) -/* 00FC4C 7000F04C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00FC50 7000F050 03E00008 */ jr $ra -/* 00FC54 7000F054 00000000 */ nop - -glabel _collectPVoices -/* 00FC58 7000F058 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00FC5C 7000F05C AFBF0024 */ sw $ra, 0x24($sp) -/* 00FC60 7000F060 AFB20020 */ sw $s2, 0x20($sp) -/* 00FC64 7000F064 AFB1001C */ sw $s1, 0x1c($sp) -/* 00FC68 7000F068 AFB00018 */ sw $s0, 0x18($sp) -/* 00FC6C 7000F06C 8C900014 */ lw $s0, 0x14($a0) -/* 00FC70 7000F070 00808825 */ move $s1, $a0 -/* 00FC74 7000F074 24920004 */ addiu $s2, $a0, 4 -/* 00FC78 7000F078 5200000A */ beql $s0, $zero, .L7000F0A4 -/* 00FC7C 7000F07C 8FBF0024 */ lw $ra, 0x24($sp) -.L7000F080: -/* 00FC80 7000F080 0C003AA4 */ jal alUnlink -/* 00FC84 7000F084 02002025 */ move $a0, $s0 -/* 00FC88 7000F088 02002025 */ move $a0, $s0 -/* 00FC8C 7000F08C 0C003AB0 */ jal alLink -/* 00FC90 7000F090 02402825 */ move $a1, $s2 -/* 00FC94 7000F094 8E300014 */ lw $s0, 0x14($s1) -/* 00FC98 7000F098 1600FFF9 */ bnez $s0, .L7000F080 -/* 00FC9C 7000F09C 00000000 */ nop -/* 00FCA0 7000F0A0 8FBF0024 */ lw $ra, 0x24($sp) -.L7000F0A4: -/* 00FCA4 7000F0A4 8FB00018 */ lw $s0, 0x18($sp) -/* 00FCA8 7000F0A8 8FB1001C */ lw $s1, 0x1c($sp) -/* 00FCAC 7000F0AC 8FB20020 */ lw $s2, 0x20($sp) -/* 00FCB0 7000F0B0 03E00008 */ jr $ra -/* 00FCB4 7000F0B4 27BD0028 */ addiu $sp, $sp, 0x28 - -glabel __freeParam -/* 00FCB8 7000F0B8 3C028002 */ lui $v0, %hi(alGlobals) -/* 00FCBC 7000F0BC 8C4276E0 */ lw $v0, %lo(alGlobals)($v0) -/* 00FCC0 7000F0C0 8C4E002C */ lw $t6, 0x2c($v0) -/* 00FCC4 7000F0C4 AC8E0000 */ sw $t6, ($a0) -/* 00FCC8 7000F0C8 03E00008 */ jr $ra -/* 00FCCC 7000F0CC AC44002C */ sw $a0, 0x2c($v0) - -glabel __allocParam -/* 00FCD0 7000F0D0 3C028002 */ lui $v0, %hi(alGlobals) -/* 00FCD4 7000F0D4 8C4276E0 */ lw $v0, %lo(alGlobals)($v0) -/* 00FCD8 7000F0D8 00001825 */ move $v1, $zero -/* 00FCDC 7000F0DC 8C44002C */ lw $a0, 0x2c($v0) -/* 00FCE0 7000F0E0 10800005 */ beqz $a0, .L7000F0F8 -/* 00FCE4 7000F0E4 00000000 */ nop -/* 00FCE8 7000F0E8 8C8E0000 */ lw $t6, ($a0) -/* 00FCEC 7000F0EC 00801825 */ move $v1, $a0 -/* 00FCF0 7000F0F0 AC4E002C */ sw $t6, 0x2c($v0) -/* 00FCF4 7000F0F4 AC800000 */ sw $zero, ($a0) -.L7000F0F8: -/* 00FCF8 7000F0F8 03E00008 */ jr $ra -/* 00FCFC 7000F0FC 00601025 */ move $v0, $v1 - -/* 00FD00 7000F100 03E00008 */ jr $ra -/* 00FD04 7000F104 00000000 */ nop - -glabel alAudioFrame -/* 00FD08 7000F108 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 00FD0C 7000F10C AFB10030 */ sw $s1, 0x30($sp) -/* 00FD10 7000F110 3C118002 */ lui $s1, %hi(alGlobals) -/* 00FD14 7000F114 8E3176E0 */ lw $s1, %lo(alGlobals)($s1) -/* 00FD18 7000F118 AFBF004C */ sw $ra, 0x4c($sp) -/* 00FD1C 7000F11C AFB70048 */ sw $s7, 0x48($sp) -/* 00FD20 7000F120 AFB60044 */ sw $s6, 0x44($sp) -/* 00FD24 7000F124 AFB50040 */ sw $s5, 0x40($sp) -/* 00FD28 7000F128 AFB4003C */ sw $s4, 0x3c($sp) -/* 00FD2C 7000F12C AFB30038 */ sw $s3, 0x38($sp) -/* 00FD30 7000F130 AFB20034 */ sw $s2, 0x34($sp) -/* 00FD34 7000F134 AFB0002C */ sw $s0, 0x2c($sp) -/* 00FD38 7000F138 F7B60020 */ sdc1 $f22, 0x20($sp) -/* 00FD3C 7000F13C F7B40018 */ sdc1 $f20, 0x18($sp) -/* 00FD40 7000F140 AFA400B8 */ sw $a0, 0xb8($sp) -/* 00FD44 7000F144 AFA500BC */ sw $a1, 0xbc($sp) -/* 00FD48 7000F148 A7A000AA */ sh $zero, 0xaa($sp) -/* 00FD4C 7000F14C 8E2F0000 */ lw $t7, ($s1) -/* 00FD50 7000F150 00E09825 */ move $s3, $a3 -/* 00FD54 7000F154 0080A025 */ move $s4, $a0 -/* 00FD58 7000F158 15E00004 */ bnez $t7, .L7000F16C -/* 00FD5C 7000F15C 00C0A825 */ move $s5, $a2 -/* 00FD60 7000F160 ACA00000 */ sw $zero, ($a1) -/* 00FD64 7000F164 10000081 */ b .L7000F36C -/* 00FD68 7000F168 00801025 */ move $v0, $a0 -.L7000F16C: -/* 00FD6C 7000F16C AFA000B4 */ sw $zero, 0xb4($sp) -/* 00FD70 7000F170 8E220000 */ lw $v0, ($s1) -/* 00FD74 7000F174 3C037FFF */ lui $v1, (0x7FFFFFFF >> 16) # lui $v1, 0x7fff -/* 00FD78 7000F178 3463FFFF */ ori $v1, (0x7FFFFFFF & 0xFFFF) # ori $v1, $v1, 0xffff -/* 00FD7C 7000F17C 1040000E */ beqz $v0, .L7000F1B8 -/* 00FD80 7000F180 2412FFF0 */ li $s2, -16 -/* 00FD84 7000F184 8E240020 */ lw $a0, 0x20($s1) -/* 00FD88 7000F188 8C590010 */ lw $t9, 0x10($v0) -.L7000F18C: -/* 00FD8C 7000F18C 03244023 */ subu $t0, $t9, $a0 -/* 00FD90 7000F190 0103082A */ slt $at, $t0, $v1 -/* 00FD94 7000F194 50200006 */ beql $at, $zero, .L7000F1B0 -/* 00FD98 7000F198 8C420000 */ lw $v0, ($v0) -/* 00FD9C 7000F19C AFA200B4 */ sw $v0, 0xb4($sp) -/* 00FDA0 7000F1A0 8C490010 */ lw $t1, 0x10($v0) -/* 00FDA4 7000F1A4 8E240020 */ lw $a0, 0x20($s1) -/* 00FDA8 7000F1A8 01241823 */ subu $v1, $t1, $a0 -/* 00FDAC 7000F1AC 8C420000 */ lw $v0, ($v0) -.L7000F1B0: -/* 00FDB0 7000F1B0 5440FFF6 */ bnezl $v0, .L7000F18C -/* 00FDB4 7000F1B4 8C590010 */ lw $t9, 0x10($v0) -.L7000F1B8: -/* 00FDB8 7000F1B8 8FAA00B4 */ lw $t2, 0xb4($sp) -/* 00FDBC 7000F1BC 8E240020 */ lw $a0, 0x20($s1) -/* 00FDC0 7000F1C0 8D420010 */ lw $v0, 0x10($t2) -/* 00FDC4 7000F1C4 00445823 */ subu $t3, $v0, $a0 -/* 00FDC8 7000F1C8 0173082A */ slt $at, $t3, $s3 -/* 00FDCC 7000F1CC 10200038 */ beqz $at, .L7000F2B0 -/* 00FDD0 7000F1D0 AE22001C */ sw $v0, 0x1c($s1) -/* 00FDD4 7000F1D4 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 00FDD8 7000F1D8 4481B800 */ mtc1 $at, $f23 -/* 00FDDC 7000F1DC 3C018003 */ lui $at, %hi(F64_80029428) -/* 00FDE0 7000F1E0 4480B000 */ mtc1 $zero, $f22 -/* 00FDE4 7000F1E4 D4349428 */ ldc1 $f20, %lo(F64_80029428)($at) -.L7000F1E8: -/* 00FDE8 7000F1E8 8E2C001C */ lw $t4, 0x1c($s1) -/* 00FDEC 7000F1EC 3C107FFF */ lui $s0, (0x7FFFFFFF >> 16) # lui $s0, 0x7fff -/* 00FDF0 7000F1F0 3610FFFF */ ori $s0, (0x7FFFFFFF & 0xFFFF) # ori $s0, $s0, 0xffff -/* 00FDF4 7000F1F4 01926824 */ and $t5, $t4, $s2 -/* 00FDF8 7000F1F8 AE2D001C */ sw $t5, 0x1c($s1) -/* 00FDFC 7000F1FC 8FA400B4 */ lw $a0, 0xb4($sp) -/* 00FE00 7000F200 8C990008 */ lw $t9, 8($a0) -/* 00FE04 7000F204 0320F809 */ jalr $t9 -/* 00FE08 7000F208 00000000 */ nop -/* 00FE0C 7000F20C 8E380044 */ lw $t8, 0x44($s1) -/* 00FE10 7000F210 44822000 */ mtc1 $v0, $f4 -/* 00FE14 7000F214 8FA800B4 */ lw $t0, 0xb4($sp) -/* 00FE18 7000F218 44984000 */ mtc1 $t8, $f8 -/* 00FE1C 7000F21C 468021A0 */ cvt.s.w $f6, $f4 -/* 00FE20 7000F220 8D090010 */ lw $t1, 0x10($t0) -/* 00FE24 7000F224 468042A0 */ cvt.s.w $f10, $f8 -/* 00FE28 7000F228 460A3402 */ mul.s $f16, $f6, $f10 -/* 00FE2C 7000F22C 460084A1 */ cvt.d.s $f18, $f16 -/* 00FE30 7000F230 46349103 */ div.d $f4, $f18, $f20 -/* 00FE34 7000F234 46362200 */ add.d $f8, $f4, $f22 -/* 00FE38 7000F238 46204020 */ cvt.s.d $f0, $f8 -/* 00FE3C 7000F23C 4600018D */ trunc.w.s $f6, $f0 -/* 00FE40 7000F240 44023000 */ mfc1 $v0, $f6 -/* 00FE44 7000F244 00000000 */ nop -/* 00FE48 7000F248 01225021 */ addu $t2, $t1, $v0 -/* 00FE4C 7000F24C AD0A0010 */ sw $t2, 0x10($t0) -/* 00FE50 7000F250 AFA000B4 */ sw $zero, 0xb4($sp) -/* 00FE54 7000F254 8E230000 */ lw $v1, ($s1) -/* 00FE58 7000F258 5060000F */ beql $v1, $zero, .L7000F298 -/* 00FE5C 7000F25C 8FAF00B4 */ lw $t7, 0xb4($sp) -/* 00FE60 7000F260 8E240020 */ lw $a0, 0x20($s1) -/* 00FE64 7000F264 8C6B0010 */ lw $t3, 0x10($v1) -.L7000F268: -/* 00FE68 7000F268 01646023 */ subu $t4, $t3, $a0 -/* 00FE6C 7000F26C 0190082A */ slt $at, $t4, $s0 -/* 00FE70 7000F270 50200006 */ beql $at, $zero, .L7000F28C -/* 00FE74 7000F274 8C630000 */ lw $v1, ($v1) -/* 00FE78 7000F278 AFA300B4 */ sw $v1, 0xb4($sp) -/* 00FE7C 7000F27C 8C6D0010 */ lw $t5, 0x10($v1) -/* 00FE80 7000F280 8E240020 */ lw $a0, 0x20($s1) -/* 00FE84 7000F284 01A48023 */ subu $s0, $t5, $a0 -/* 00FE88 7000F288 8C630000 */ lw $v1, ($v1) -.L7000F28C: -/* 00FE8C 7000F28C 5460FFF6 */ bnezl $v1, .L7000F268 -/* 00FE90 7000F290 8C6B0010 */ lw $t3, 0x10($v1) -/* 00FE94 7000F294 8FAF00B4 */ lw $t7, 0xb4($sp) -.L7000F298: -/* 00FE98 7000F298 8E240020 */ lw $a0, 0x20($s1) -/* 00FE9C 7000F29C 8DE20010 */ lw $v0, 0x10($t7) -/* 00FEA0 7000F2A0 0044C823 */ subu $t9, $v0, $a0 -/* 00FEA4 7000F2A4 0333082A */ slt $at, $t9, $s3 -/* 00FEA8 7000F2A8 1420FFCF */ bnez $at, .L7000F1E8 -/* 00FEAC 7000F2AC AE22001C */ sw $v0, 0x1c($s1) -.L7000F2B0: -/* 00FEB0 7000F2B0 8E38001C */ lw $t8, 0x1c($s1) -/* 00FEB4 7000F2B4 2412FFF0 */ li $s2, -16 -/* 00FEB8 7000F2B8 27B700AA */ addiu $s7, $sp, 0xaa -/* 00FEBC 7000F2BC 03127024 */ and $t6, $t8, $s2 -/* 00FEC0 7000F2C0 1A600022 */ blez $s3, .L7000F34C -/* 00FEC4 7000F2C4 AE2E001C */ sw $t6, 0x1c($s1) -/* 00FEC8 7000F2C8 3C160700 */ lui $s6, 0x700 -.L7000F2CC: -/* 00FECC 7000F2CC 8E220048 */ lw $v0, 0x48($s1) -/* 00FED0 7000F2D0 02608025 */ move $s0, $s3 -/* 00FED4 7000F2D4 0053082A */ slt $at, $v0, $s3 -/* 00FED8 7000F2D8 10200003 */ beqz $at, .L7000F2E8 -/* 00FEDC 7000F2DC 00000000 */ nop -/* 00FEE0 7000F2E0 10000001 */ b .L7000F2E8 -/* 00FEE4 7000F2E4 00408025 */ move $s0, $v0 -.L7000F2E8: -/* 00FEE8 7000F2E8 AE960000 */ sw $s6, ($s4) -/* 00FEEC 7000F2EC AE800004 */ sw $zero, 4($s4) -/* 00FEF0 7000F2F0 8E320038 */ lw $s2, 0x38($s1) -/* 00FEF4 7000F2F4 24050006 */ li $a1, 6 -/* 00FEF8 7000F2F8 02A03025 */ move $a2, $s5 -/* 00FEFC 7000F2FC 8E590008 */ lw $t9, 8($s2) -/* 00FF00 7000F300 02402025 */ move $a0, $s2 -/* 00FF04 7000F304 0320F809 */ jalr $t9 -/* 00FF08 7000F308 00000000 */ nop -/* 00FF0C 7000F30C 8E270020 */ lw $a3, 0x20($s1) -/* 00FF10 7000F310 26890008 */ addiu $t1, $s4, 8 -/* 00FF14 7000F314 AFA90010 */ sw $t1, 0x10($sp) -/* 00FF18 7000F318 8E590004 */ lw $t9, 4($s2) -/* 00FF1C 7000F31C 02402025 */ move $a0, $s2 -/* 00FF20 7000F320 02E02825 */ move $a1, $s7 -/* 00FF24 7000F324 0320F809 */ jalr $t9 -/* 00FF28 7000F328 02003025 */ move $a2, $s0 -/* 00FF2C 7000F32C 8E2B0020 */ lw $t3, 0x20($s1) -/* 00FF30 7000F330 02709823 */ subu $s3, $s3, $s0 -/* 00FF34 7000F334 00104080 */ sll $t0, $s0, 2 -/* 00FF38 7000F338 01706021 */ addu $t4, $t3, $s0 -/* 00FF3C 7000F33C 0040A025 */ move $s4, $v0 -/* 00FF40 7000F340 02A8A821 */ addu $s5, $s5, $t0 -/* 00FF44 7000F344 1E60FFE1 */ bgtz $s3, .L7000F2CC -/* 00FF48 7000F348 AE2C0020 */ sw $t4, 0x20($s1) -.L7000F34C: -/* 00FF4C 7000F34C 8FAD00B8 */ lw $t5, 0xb8($sp) -/* 00FF50 7000F350 8FAE00BC */ lw $t6, 0xbc($sp) -/* 00FF54 7000F354 02202025 */ move $a0, $s1 -/* 00FF58 7000F358 028D7823 */ subu $t7, $s4, $t5 -/* 00FF5C 7000F35C 000FC0C3 */ sra $t8, $t7, 3 -/* 00FF60 7000F360 0C003C16 */ jal _collectPVoices -/* 00FF64 7000F364 ADD80000 */ sw $t8, ($t6) -/* 00FF68 7000F368 02801025 */ move $v0, $s4 -.L7000F36C: -/* 00FF6C 7000F36C 8FBF004C */ lw $ra, 0x4c($sp) -/* 00FF70 7000F370 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 00FF74 7000F374 D7B60020 */ ldc1 $f22, 0x20($sp) -/* 00FF78 7000F378 8FB0002C */ lw $s0, 0x2c($sp) -/* 00FF7C 7000F37C 8FB10030 */ lw $s1, 0x30($sp) -/* 00FF80 7000F380 8FB20034 */ lw $s2, 0x34($sp) -/* 00FF84 7000F384 8FB30038 */ lw $s3, 0x38($sp) -/* 00FF88 7000F388 8FB4003C */ lw $s4, 0x3c($sp) -/* 00FF8C 7000F38C 8FB50040 */ lw $s5, 0x40($sp) -/* 00FF90 7000F390 8FB60044 */ lw $s6, 0x44($sp) -/* 00FF94 7000F394 8FB70048 */ lw $s7, 0x48($sp) -/* 00FF98 7000F398 03E00008 */ jr $ra -/* 00FF9C 7000F39C 27BD00B8 */ addiu $sp, $sp, 0xb8 - -glabel alSynNew -/* 00FFA0 7000F3A0 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 00FFA4 7000F3A4 AFBF0044 */ sw $ra, 0x44($sp) -/* 00FFA8 7000F3A8 AFBE0040 */ sw $fp, 0x40($sp) -/* 00FFAC 7000F3AC AFB7003C */ sw $s7, 0x3c($sp) -/* 00FFB0 7000F3B0 AFB60038 */ sw $s6, 0x38($sp) -/* 00FFB4 7000F3B4 AFB50034 */ sw $s5, 0x34($sp) -/* 00FFB8 7000F3B8 AFB40030 */ sw $s4, 0x30($sp) -/* 00FFBC 7000F3BC AFB3002C */ sw $s3, 0x2c($sp) -/* 00FFC0 7000F3C0 AFB20028 */ sw $s2, 0x28($sp) -/* 00FFC4 7000F3C4 AFB10024 */ sw $s1, 0x24($sp) -/* 00FFC8 7000F3C8 AFB00020 */ sw $s0, 0x20($sp) -/* 00FFCC 7000F3CC 8CB70014 */ lw $s7, 0x14($a1) -/* 00FFD0 7000F3D0 AC800000 */ sw $zero, ($a0) -/* 00FFD4 7000F3D4 8CAE0004 */ lw $t6, 4($a1) -/* 00FFD8 7000F3D8 AC800020 */ sw $zero, 0x20($a0) -/* 00FFDC 7000F3DC AC80001C */ sw $zero, 0x1c($a0) -/* 00FFE0 7000F3E0 AC8E003C */ sw $t6, 0x3c($a0) -/* 00FFE4 7000F3E4 8CAF0018 */ lw $t7, 0x18($a1) -/* 00FFE8 7000F3E8 241800A0 */ li $t8, 160 -/* 00FFEC 7000F3EC AC980048 */ sw $t8, 0x48($a0) -/* 00FFF0 7000F3F0 AC8F0044 */ sw $t7, 0x44($a0) -/* 00FFF4 7000F3F4 8CB90010 */ lw $t9, 0x10($a1) -/* 00FFF8 7000F3F8 0080B025 */ move $s6, $a0 -/* 00FFFC 7000F3FC 00A0F025 */ move $fp, $a1 -/* 010000 7000F400 2408001C */ li $t0, 28 -/* 010004 7000F404 AC990024 */ sw $t9, 0x24($a0) -/* 010008 7000F408 AFA80010 */ sw $t0, 0x10($sp) -/* 01000C 7000F40C 00002025 */ move $a0, $zero -/* 010010 7000F410 00002825 */ move $a1, $zero -/* 010014 7000F414 24070001 */ li $a3, 1 -/* 010018 7000F418 0C003AD4 */ jal alHeapDBAlloc -/* 01001C 7000F41C 02E03025 */ move $a2, $s7 -/* 010020 7000F420 AFA2005C */ sw $v0, 0x5c($sp) -/* 010024 7000F424 0C006448 */ jal alSaveNew -/* 010028 7000F428 00402025 */ move $a0, $v0 -/* 01002C 7000F42C 8FA9005C */ lw $t1, 0x5c($sp) -/* 010030 7000F430 240A004C */ li $t2, 76 -/* 010034 7000F434 00002025 */ move $a0, $zero -/* 010038 7000F438 AEC90038 */ sw $t1, 0x38($s6) -/* 01003C 7000F43C AFAA0010 */ sw $t2, 0x10($sp) -/* 010040 7000F440 00002825 */ move $a1, $zero -/* 010044 7000F444 02E03025 */ move $a2, $s7 -/* 010048 7000F448 0C003AD4 */ jal alHeapDBAlloc -/* 01004C 7000F44C 24070001 */ li $a3, 1 -/* 010050 7000F450 240B0001 */ li $t3, 1 -/* 010054 7000F454 AEC20034 */ sw $v0, 0x34($s6) -/* 010058 7000F458 AECB0040 */ sw $t3, 0x40($s6) -/* 01005C 7000F45C 8FC70004 */ lw $a3, 4($fp) -/* 010060 7000F460 240C0004 */ li $t4, 4 -/* 010064 7000F464 AFAC0010 */ sw $t4, 0x10($sp) -/* 010068 7000F468 00002025 */ move $a0, $zero -/* 01006C 7000F46C 00002825 */ move $a1, $zero -/* 010070 7000F470 0C003AD4 */ jal alHeapDBAlloc -/* 010074 7000F474 02E03025 */ move $a2, $s7 -/* 010078 7000F478 8EC40034 */ lw $a0, 0x34($s6) -/* 01007C 7000F47C 00402825 */ move $a1, $v0 -/* 010080 7000F480 0C00646E */ jal alAuxBusNew -/* 010084 7000F484 8FC60004 */ lw $a2, 4($fp) -/* 010088 7000F488 240D0020 */ li $t5, 32 -/* 01008C 7000F48C AFAD0010 */ sw $t5, 0x10($sp) -/* 010090 7000F490 00002025 */ move $a0, $zero -/* 010094 7000F494 00002825 */ move $a1, $zero -/* 010098 7000F498 02E03025 */ move $a2, $s7 -/* 01009C 7000F49C 0C003AD4 */ jal alHeapDBAlloc -/* 0100A0 7000F4A0 24070001 */ li $a3, 1 -/* 0100A4 7000F4A4 AEC20030 */ sw $v0, 0x30($s6) -/* 0100A8 7000F4A8 8FC70004 */ lw $a3, 4($fp) -/* 0100AC 7000F4AC 240E0004 */ li $t6, 4 -/* 0100B0 7000F4B0 AFAE0010 */ sw $t6, 0x10($sp) -/* 0100B4 7000F4B4 00002025 */ move $a0, $zero -/* 0100B8 7000F4B8 00002825 */ move $a1, $zero -/* 0100BC 7000F4BC 0C003AD4 */ jal alHeapDBAlloc -/* 0100C0 7000F4C0 02E03025 */ move $a2, $s7 -/* 0100C4 7000F4C4 8EC40030 */ lw $a0, 0x30($s6) -/* 0100C8 7000F4C8 00402825 */ move $a1, $v0 -/* 0100CC 7000F4CC 0C006459 */ jal alMainBusNew -/* 0100D0 7000F4D0 8FC60004 */ lw $a2, 4($fp) -/* 0100D4 7000F4D4 93CF001C */ lbu $t7, 0x1c($fp) -/* 0100D8 7000F4D8 02C02025 */ move $a0, $s6 -/* 0100DC 7000F4DC 03C03025 */ move $a2, $fp -/* 0100E0 7000F4E0 11E00006 */ beqz $t7, .L7000F4FC -/* 0100E4 7000F4E4 24050002 */ li $a1, 2 -/* 0100E8 7000F4E8 00002825 */ move $a1, $zero -/* 0100EC 7000F4EC 0C006630 */ jal alSynAllocFX -/* 0100F0 7000F4F0 02E03825 */ move $a3, $s7 -/* 0100F4 7000F4F4 10000005 */ b .L7000F50C -/* 0100F8 7000F4F8 AEC00004 */ sw $zero, 4($s6) -.L7000F4FC: -/* 0100FC 7000F4FC 8EC40030 */ lw $a0, 0x30($s6) -/* 010100 7000F500 0C006658 */ jal alMainBusParam -/* 010104 7000F504 8EC60034 */ lw $a2, 0x34($s6) -/* 010108 7000F508 AEC00004 */ sw $zero, 4($s6) -.L7000F50C: -/* 01010C 7000F50C AEC00008 */ sw $zero, 8($s6) -/* 010110 7000F510 AEC00014 */ sw $zero, 0x14($s6) -/* 010114 7000F514 AEC00018 */ sw $zero, 0x18($s6) -/* 010118 7000F518 AEC0000C */ sw $zero, 0xc($s6) -/* 01011C 7000F51C AEC00010 */ sw $zero, 0x10($s6) -/* 010120 7000F520 8FC70004 */ lw $a3, 4($fp) -/* 010124 7000F524 241800DC */ li $t8, 220 -/* 010128 7000F528 AFB80010 */ sw $t8, 0x10($sp) -/* 01012C 7000F52C 00002025 */ move $a0, $zero -/* 010130 7000F530 00002825 */ move $a1, $zero -/* 010134 7000F534 0C003AD4 */ jal alHeapDBAlloc -/* 010138 7000F538 02E03025 */ move $a2, $s7 -/* 01013C 7000F53C 8FD90004 */ lw $t9, 4($fp) -/* 010140 7000F540 0000A025 */ move $s4, $zero -/* 010144 7000F544 00408025 */ move $s0, $v0 -/* 010148 7000F548 1B20002F */ blez $t9, .L7000F608 -/* 01014C 7000F54C 26C50004 */ addiu $a1, $s6, 4 -/* 010150 7000F550 2451008C */ addiu $s1, $v0, 0x8c -/* 010154 7000F554 24520058 */ addiu $s2, $v0, 0x58 -/* 010158 7000F558 24530010 */ addiu $s3, $v0, 0x10 -/* 01015C 7000F55C AFA50048 */ sw $a1, 0x48($sp) -.L7000F560: -/* 010160 7000F560 8FA50048 */ lw $a1, 0x48($sp) -/* 010164 7000F564 0200A825 */ move $s5, $s0 -/* 010168 7000F568 0C003AB0 */ jal alLink -/* 01016C 7000F56C 02002025 */ move $a0, $s0 -/* 010170 7000F570 AE000008 */ sw $zero, 8($s0) -/* 010174 7000F574 8EC50024 */ lw $a1, 0x24($s6) -/* 010178 7000F578 02602025 */ move $a0, $s3 -/* 01017C 7000F57C 0C0064A5 */ jal alLoadNew -/* 010180 7000F580 02E03025 */ move $a2, $s7 -/* 010184 7000F584 02602025 */ move $a0, $s3 -/* 010188 7000F588 24050001 */ li $a1, 1 -/* 01018C 7000F58C 0C0066AC */ jal alLoadParam -/* 010190 7000F590 00003025 */ move $a2, $zero -/* 010194 7000F594 02402025 */ move $a0, $s2 -/* 010198 7000F598 0C006483 */ jal alResampleNew -/* 01019C 7000F59C 02E02825 */ move $a1, $s7 -/* 0101A0 7000F5A0 02402025 */ move $a0, $s2 -/* 0101A4 7000F5A4 24050001 */ li $a1, 1 -/* 0101A8 7000F5A8 0C006980 */ jal alResampleParam -/* 0101AC 7000F5AC 02603025 */ move $a2, $s3 -/* 0101B0 7000F5B0 02202025 */ move $a0, $s1 -/* 0101B4 7000F5B4 0C0064CF */ jal alEnvmixerNew -/* 0101B8 7000F5B8 02E02825 */ move $a1, $s7 -/* 0101BC 7000F5BC 02202025 */ move $a0, $s1 -/* 0101C0 7000F5C0 24050001 */ li $a1, 1 -/* 0101C4 7000F5C4 0C006A85 */ jal alEnvmixerParam -/* 0101C8 7000F5C8 02403025 */ move $a2, $s2 -/* 0101CC 7000F5CC 8EC40034 */ lw $a0, 0x34($s6) -/* 0101D0 7000F5D0 24050002 */ li $a1, 2 -/* 0101D4 7000F5D4 0C006D38 */ jal ultra_7001B4E0 -/* 0101D8 7000F5D8 02203025 */ move $a2, $s1 -/* 0101DC 7000F5DC 26A8008C */ addiu $t0, $s5, 0x8c -/* 0101E0 7000F5E0 AEA8000C */ sw $t0, 0xc($s5) -/* 0101E4 7000F5E4 8FC90004 */ lw $t1, 4($fp) -/* 0101E8 7000F5E8 26940001 */ addiu $s4, $s4, 1 -/* 0101EC 7000F5EC 261000DC */ addiu $s0, $s0, 0xdc -/* 0101F0 7000F5F0 0289082A */ slt $at, $s4, $t1 -/* 0101F4 7000F5F4 263100DC */ addiu $s1, $s1, 0xdc -/* 0101F8 7000F5F8 265200DC */ addiu $s2, $s2, 0xdc -/* 0101FC 7000F5FC 1420FFD8 */ bnez $at, .L7000F560 -/* 010200 7000F600 267300DC */ addiu $s3, $s3, 0xdc -/* 010204 7000F604 0000A025 */ move $s4, $zero -.L7000F608: -/* 010208 7000F608 8FA4005C */ lw $a0, 0x5c($sp) -/* 01020C 7000F60C 24050001 */ li $a1, 1 -/* 010210 7000F610 0C006D7C */ jal alSaveParam -/* 010214 7000F614 8EC60030 */ lw $a2, 0x30($s6) -/* 010218 7000F618 8FC70008 */ lw $a3, 8($fp) -/* 01021C 7000F61C 240A001C */ li $t2, 28 -/* 010220 7000F620 AFAA0010 */ sw $t2, 0x10($sp) -/* 010224 7000F624 00002025 */ move $a0, $zero -/* 010228 7000F628 00002825 */ move $a1, $zero -/* 01022C 7000F62C 0C003AD4 */ jal alHeapDBAlloc -/* 010230 7000F630 02E03025 */ move $a2, $s7 -/* 010234 7000F634 AEC0002C */ sw $zero, 0x2c($s6) -/* 010238 7000F638 8FCB0008 */ lw $t3, 8($fp) -/* 01023C 7000F63C 00401825 */ move $v1, $v0 -/* 010240 7000F640 5960000B */ blezl $t3, .L7000F670 -/* 010244 7000F644 AED70028 */ sw $s7, 0x28($s6) -/* 010248 7000F648 8ECC002C */ lw $t4, 0x2c($s6) -.L7000F64C: -/* 01024C 7000F64C 26940001 */ addiu $s4, $s4, 1 -/* 010250 7000F650 AC6C0000 */ sw $t4, ($v1) -/* 010254 7000F654 AEC3002C */ sw $v1, 0x2c($s6) -/* 010258 7000F658 8FCD0008 */ lw $t5, 8($fp) -/* 01025C 7000F65C 2463001C */ addiu $v1, $v1, 0x1c -/* 010260 7000F660 028D082A */ slt $at, $s4, $t5 -/* 010264 7000F664 5420FFF9 */ bnezl $at, .L7000F64C -/* 010268 7000F668 8ECC002C */ lw $t4, 0x2c($s6) -/* 01026C 7000F66C AED70028 */ sw $s7, 0x28($s6) -.L7000F670: -/* 010270 7000F670 8FBF0044 */ lw $ra, 0x44($sp) -/* 010274 7000F674 8FBE0040 */ lw $fp, 0x40($sp) -/* 010278 7000F678 8FB7003C */ lw $s7, 0x3c($sp) -/* 01027C 7000F67C 8FB60038 */ lw $s6, 0x38($sp) -/* 010280 7000F680 8FB50034 */ lw $s5, 0x34($sp) -/* 010284 7000F684 8FB40030 */ lw $s4, 0x30($sp) -/* 010288 7000F688 8FB3002C */ lw $s3, 0x2c($sp) -/* 01028C 7000F68C 8FB20028 */ lw $s2, 0x28($sp) -/* 010290 7000F690 8FB10024 */ lw $s1, 0x24($sp) -/* 010294 7000F694 8FB00020 */ lw $s0, 0x20($sp) -/* 010298 7000F698 03E00008 */ jr $ra -/* 01029C 7000F69C 27BD0078 */ addiu $sp, $sp, 0x78 - -.section .rodata -glabel F64_80029420 -.double 1000000.0 -glabel F64_80029428 -.double 1000000.0 - -.section .text -glabel osPiStartDma -/* 0102A0 7000F6A0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0102A4 7000F6A4 3C0E8002 */ lui $t6, %hi(__osPiDevMgr) -/* 0102A8 7000F6A8 8DCE7790 */ lw $t6, %lo(__osPiDevMgr)($t6) -/* 0102AC 7000F6AC AFBF001C */ sw $ra, 0x1c($sp) -/* 0102B0 7000F6B0 AFA40028 */ sw $a0, 0x28($sp) -/* 0102B4 7000F6B4 AFA5002C */ sw $a1, 0x2c($sp) -/* 0102B8 7000F6B8 AFA60030 */ sw $a2, 0x30($sp) -/* 0102BC 7000F6BC AFA70034 */ sw $a3, 0x34($sp) -/* 0102C0 7000F6C0 AFB10018 */ sw $s1, 0x18($sp) -/* 0102C4 7000F6C4 15C00003 */ bnez $t6, .L7000F6D4 -/* 0102C8 7000F6C8 AFB00014 */ sw $s0, 0x14($sp) -/* 0102CC 7000F6CC 10000032 */ b .L7000F798 -/* 0102D0 7000F6D0 2402FFFF */ li $v0, -1 -.L7000F6D4: -/* 0102D4 7000F6D4 8FAF0030 */ lw $t7, 0x30($sp) -/* 0102D8 7000F6D8 15E00005 */ bnez $t7, .L7000F6F0 -/* 0102DC 7000F6DC 00000000 */ nop -/* 0102E0 7000F6E0 8FB90028 */ lw $t9, 0x28($sp) -/* 0102E4 7000F6E4 2418000B */ li $t8, 11 -/* 0102E8 7000F6E8 10000004 */ b .L7000F6FC -/* 0102EC 7000F6EC A7380000 */ sh $t8, ($t9) -.L7000F6F0: -/* 0102F0 7000F6F0 8FA90028 */ lw $t1, 0x28($sp) -/* 0102F4 7000F6F4 2408000C */ li $t0, 12 -/* 0102F8 7000F6F8 A5280000 */ sh $t0, ($t1) -.L7000F6FC: -/* 0102FC 7000F6FC 8FAA002C */ lw $t2, 0x2c($sp) -/* 010300 7000F700 8FAB0028 */ lw $t3, 0x28($sp) -/* 010304 7000F704 24010001 */ li $at, 1 -/* 010308 7000F708 A16A0002 */ sb $t2, 2($t3) -/* 01030C 7000F70C 8FAD0028 */ lw $t5, 0x28($sp) -/* 010310 7000F710 8FAC0040 */ lw $t4, 0x40($sp) -/* 010314 7000F714 ADAC0004 */ sw $t4, 4($t5) -/* 010318 7000F718 8FAF0028 */ lw $t7, 0x28($sp) -/* 01031C 7000F71C 8FAE0038 */ lw $t6, 0x38($sp) -/* 010320 7000F720 ADEE0008 */ sw $t6, 8($t7) -/* 010324 7000F724 8FB90028 */ lw $t9, 0x28($sp) -/* 010328 7000F728 8FB80034 */ lw $t8, 0x34($sp) -/* 01032C 7000F72C AF38000C */ sw $t8, 0xc($t9) -/* 010330 7000F730 8FA90028 */ lw $t1, 0x28($sp) -/* 010334 7000F734 8FA8003C */ lw $t0, 0x3c($sp) -/* 010338 7000F738 AD280010 */ sw $t0, 0x10($t1) -/* 01033C 7000F73C 8FAA0028 */ lw $t2, 0x28($sp) -/* 010340 7000F740 AD400014 */ sw $zero, 0x14($t2) -/* 010344 7000F744 8FAB002C */ lw $t3, 0x2c($sp) -/* 010348 7000F748 1561000A */ bne $t3, $at, .L7000F774 -/* 01034C 7000F74C 00000000 */ nop -/* 010350 7000F750 0C006E00 */ jal osPiGetCmdQueue -/* 010354 7000F754 00000000 */ nop -/* 010358 7000F758 00408825 */ move $s1, $v0 -/* 01035C 7000F75C 02202025 */ move $a0, $s1 -/* 010360 7000F760 8FA50028 */ lw $a1, 0x28($sp) -/* 010364 7000F764 0C006DAC */ jal osJamMesg -/* 010368 7000F768 00003025 */ move $a2, $zero -/* 01036C 7000F76C 10000009 */ b .L7000F794 -/* 010370 7000F770 00408025 */ move $s0, $v0 -.L7000F774: -/* 010374 7000F774 0C006E00 */ jal osPiGetCmdQueue -/* 010378 7000F778 00000000 */ nop -/* 01037C 7000F77C 00408825 */ move $s1, $v0 -/* 010380 7000F780 02202025 */ move $a0, $s1 -/* 010384 7000F784 8FA50028 */ lw $a1, 0x28($sp) -/* 010388 7000F788 0C0037C4 */ jal osSendMesg -/* 01038C 7000F78C 00003025 */ move $a2, $zero -/* 010390 7000F790 00408025 */ move $s0, $v0 -.L7000F794: -/* 010394 7000F794 02001025 */ move $v0, $s0 -.L7000F798: -/* 010398 7000F798 8FBF001C */ lw $ra, 0x1c($sp) -/* 01039C 7000F79C 8FB00014 */ lw $s0, 0x14($sp) -/* 0103A0 7000F7A0 8FB10018 */ lw $s1, 0x18($sp) -/* 0103A4 7000F7A4 03E00008 */ jr $ra -/* 0103A8 7000F7A8 27BD0028 */ addiu $sp, $sp, 0x28 - -/* 0103AC 7000F7AC 00000000 */ nop -glabel osViSetSpecialFeatures -/* 0103B0 7000F7B0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0103B4 7000F7B4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0103B8 7000F7B8 AFA40028 */ sw $a0, 0x28($sp) -/* 0103BC 7000F7BC 0C00617C */ jal __osDisableInt -/* 0103C0 7000F7C0 AFB00018 */ sw $s0, 0x18($sp) -/* 0103C4 7000F7C4 8FAE0028 */ lw $t6, 0x28($sp) -/* 0103C8 7000F7C8 00408025 */ move $s0, $v0 -/* 0103CC 7000F7CC 31CF0001 */ andi $t7, $t6, 1 -/* 0103D0 7000F7D0 11E00006 */ beqz $t7, .L7000F7EC -/* 0103D4 7000F7D4 00000000 */ nop -/* 0103D8 7000F7D8 3C188003 */ lui $t8, %hi(__osViNext) -/* 0103DC 7000F7DC 8F188044 */ lw $t8, %lo(__osViNext)($t8) -/* 0103E0 7000F7E0 8F19000C */ lw $t9, 0xc($t8) -/* 0103E4 7000F7E4 37280008 */ ori $t0, $t9, 8 -/* 0103E8 7000F7E8 AF08000C */ sw $t0, 0xc($t8) -.L7000F7EC: -/* 0103EC 7000F7EC 8FA90028 */ lw $t1, 0x28($sp) -/* 0103F0 7000F7F0 312A0002 */ andi $t2, $t1, 2 -/* 0103F4 7000F7F4 11400007 */ beqz $t2, .L7000F814 -/* 0103F8 7000F7F8 00000000 */ nop -/* 0103FC 7000F7FC 3C0B8003 */ lui $t3, %hi(__osViNext) -/* 010400 7000F800 8D6B8044 */ lw $t3, %lo(__osViNext)($t3) -/* 010404 7000F804 2401FFF7 */ li $at, -9 -/* 010408 7000F808 8D6C000C */ lw $t4, 0xc($t3) -/* 01040C 7000F80C 01816824 */ and $t5, $t4, $at -/* 010410 7000F810 AD6D000C */ sw $t5, 0xc($t3) -.L7000F814: -/* 010414 7000F814 8FAE0028 */ lw $t6, 0x28($sp) -/* 010418 7000F818 31CF0004 */ andi $t7, $t6, 4 -/* 01041C 7000F81C 11E00006 */ beqz $t7, .L7000F838 -/* 010420 7000F820 00000000 */ nop -/* 010424 7000F824 3C198003 */ lui $t9, %hi(__osViNext) -/* 010428 7000F828 8F398044 */ lw $t9, %lo(__osViNext)($t9) -/* 01042C 7000F82C 8F28000C */ lw $t0, 0xc($t9) -/* 010430 7000F830 35180004 */ ori $t8, $t0, 4 -/* 010434 7000F834 AF38000C */ sw $t8, 0xc($t9) -.L7000F838: -/* 010438 7000F838 8FA90028 */ lw $t1, 0x28($sp) -/* 01043C 7000F83C 312A0008 */ andi $t2, $t1, 8 -/* 010440 7000F840 11400007 */ beqz $t2, .L7000F860 -/* 010444 7000F844 00000000 */ nop -/* 010448 7000F848 3C0C8003 */ lui $t4, %hi(__osViNext) -/* 01044C 7000F84C 8D8C8044 */ lw $t4, %lo(__osViNext)($t4) -/* 010450 7000F850 2401FFFB */ li $at, -5 -/* 010454 7000F854 8D8D000C */ lw $t5, 0xc($t4) -/* 010458 7000F858 01A15824 */ and $t3, $t5, $at -/* 01045C 7000F85C AD8B000C */ sw $t3, 0xc($t4) -.L7000F860: -/* 010460 7000F860 8FAE0028 */ lw $t6, 0x28($sp) -/* 010464 7000F864 31CF0010 */ andi $t7, $t6, 0x10 -/* 010468 7000F868 11E00006 */ beqz $t7, .L7000F884 -/* 01046C 7000F86C 00000000 */ nop -/* 010470 7000F870 3C088003 */ lui $t0, %hi(__osViNext) -/* 010474 7000F874 8D088044 */ lw $t0, %lo(__osViNext)($t0) -/* 010478 7000F878 8D18000C */ lw $t8, 0xc($t0) -/* 01047C 7000F87C 37190010 */ ori $t9, $t8, 0x10 -/* 010480 7000F880 AD19000C */ sw $t9, 0xc($t0) -.L7000F884: -/* 010484 7000F884 8FA90028 */ lw $t1, 0x28($sp) -/* 010488 7000F888 312A0020 */ andi $t2, $t1, 0x20 -/* 01048C 7000F88C 11400007 */ beqz $t2, .L7000F8AC -/* 010490 7000F890 00000000 */ nop -/* 010494 7000F894 3C0D8003 */ lui $t5, %hi(__osViNext) -/* 010498 7000F898 8DAD8044 */ lw $t5, %lo(__osViNext)($t5) -/* 01049C 7000F89C 2401FFEF */ li $at, -17 -/* 0104A0 7000F8A0 8DAB000C */ lw $t3, 0xc($t5) -/* 0104A4 7000F8A4 01616024 */ and $t4, $t3, $at -/* 0104A8 7000F8A8 ADAC000C */ sw $t4, 0xc($t5) -.L7000F8AC: -/* 0104AC 7000F8AC 8FAE0028 */ lw $t6, 0x28($sp) -/* 0104B0 7000F8B0 31CF0040 */ andi $t7, $t6, 0x40 -/* 0104B4 7000F8B4 11E0000D */ beqz $t7, .L7000F8EC -/* 0104B8 7000F8B8 00000000 */ nop -/* 0104BC 7000F8BC 3C188003 */ lui $t8, %hi(__osViNext) -/* 0104C0 7000F8C0 8F188044 */ lw $t8, %lo(__osViNext)($t8) -/* 0104C4 7000F8C4 3C010001 */ lui $at, 1 -/* 0104C8 7000F8C8 3C098003 */ lui $t1, %hi(__osViNext) -/* 0104CC 7000F8CC 8F19000C */ lw $t9, 0xc($t8) -/* 0104D0 7000F8D0 03214025 */ or $t0, $t9, $at -/* 0104D4 7000F8D4 AF08000C */ sw $t0, 0xc($t8) -/* 0104D8 7000F8D8 8D298044 */ lw $t1, %lo(__osViNext)($t1) -/* 0104DC 7000F8DC 2401FCFF */ li $at, -769 -/* 0104E0 7000F8E0 8D2A000C */ lw $t2, 0xc($t1) -/* 0104E4 7000F8E4 01415824 */ and $t3, $t2, $at -/* 0104E8 7000F8E8 AD2B000C */ sw $t3, 0xc($t1) -.L7000F8EC: -/* 0104EC 7000F8EC 8FAC0028 */ lw $t4, 0x28($sp) -/* 0104F0 7000F8F0 318D0080 */ andi $t5, $t4, 0x80 -/* 0104F4 7000F8F4 11A00010 */ beqz $t5, .L7000F938 -/* 0104F8 7000F8F8 00000000 */ nop -/* 0104FC 7000F8FC 3C0E8003 */ lui $t6, %hi(__osViNext) -/* 010500 7000F900 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) -/* 010504 7000F904 3C01FFFE */ lui $at, (0xFFFEFFFF >> 16) # lui $at, 0xfffe -/* 010508 7000F908 3421FFFF */ ori $at, (0xFFFEFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 01050C 7000F90C 8DCF000C */ lw $t7, 0xc($t6) -/* 010510 7000F910 3C088003 */ lui $t0, %hi(__osViNext) -/* 010514 7000F914 01E1C824 */ and $t9, $t7, $at -/* 010518 7000F918 ADD9000C */ sw $t9, 0xc($t6) -/* 01051C 7000F91C 8D088044 */ lw $t0, %lo(__osViNext)($t0) -/* 010520 7000F920 8D0A0008 */ lw $t2, 8($t0) -/* 010524 7000F924 8D18000C */ lw $t8, 0xc($t0) -/* 010528 7000F928 8D4B0004 */ lw $t3, 4($t2) -/* 01052C 7000F92C 31690300 */ andi $t1, $t3, 0x300 -/* 010530 7000F930 03096025 */ or $t4, $t8, $t1 -/* 010534 7000F934 AD0C000C */ sw $t4, 0xc($t0) -.L7000F938: -/* 010538 7000F938 3C0D8003 */ lui $t5, %hi(__osViNext) -/* 01053C 7000F93C 8DAD8044 */ lw $t5, %lo(__osViNext)($t5) -/* 010540 7000F940 02002025 */ move $a0, $s0 -/* 010544 7000F944 95AF0000 */ lhu $t7, ($t5) -/* 010548 7000F948 35F90008 */ ori $t9, $t7, 8 -/* 01054C 7000F94C 0C006184 */ jal __osRestoreInt -/* 010550 7000F950 A5B90000 */ sh $t9, ($t5) -/* 010554 7000F954 8FBF001C */ lw $ra, 0x1c($sp) -/* 010558 7000F958 8FB00018 */ lw $s0, 0x18($sp) -/* 01055C 7000F95C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 010560 7000F960 03E00008 */ jr $ra -/* 010564 7000F964 00000000 */ nop - -/* 010568 7000F968 00000000 */ nop -/* 01056C 7000F96C 00000000 */ nop -glabel _bcopy -/* 010570 7000F970 10C0001A */ beqz $a2, .L7000F9DC -/* 010574 7000F974 00A03825 */ move $a3, $a1 -/* 010578 7000F978 10850018 */ beq $a0, $a1, .L7000F9DC -/* 01057C 7000F97C 00A4082A */ slt $at, $a1, $a0 -/* 010580 7000F980 54200008 */ bnezl $at, .L7000F9A4 -/* 010584 7000F984 28C10010 */ slti $at, $a2, 0x10 -/* 010588 7000F988 00861020 */ add $v0, $a0, $a2 -/* 01058C 7000F98C 00A2082A */ slt $at, $a1, $v0 -/* 010590 7000F990 50200004 */ beql $at, $zero, .L7000F9A4 -/* 010594 7000F994 28C10010 */ slti $at, $a2, 0x10 -/* 010598 7000F998 1000005B */ b .L7000FB08 -/* 01059C 7000F99C 28C10010 */ slti $at, $a2, 0x10 -/* 0105A0 7000F9A0 28C10010 */ slti $at, $a2, 0x10 -.L7000F9A4: -/* 0105A4 7000F9A4 14200005 */ bnez $at, .L7000F9BC -/* 0105A8 7000F9A8 00000000 */ nop -/* 0105AC 7000F9AC 30820003 */ andi $v0, $a0, 3 -/* 0105B0 7000F9B0 30A30003 */ andi $v1, $a1, 3 -/* 0105B4 7000F9B4 1043000B */ beq $v0, $v1, .L7000F9E4 -/* 0105B8 7000F9B8 00000000 */ nop -.L7000F9BC: -/* 0105BC 7000F9BC 10C00007 */ beqz $a2, .L7000F9DC -/* 0105C0 7000F9C0 00000000 */ nop -/* 0105C4 7000F9C4 00861821 */ addu $v1, $a0, $a2 -.L7000F9C8: -/* 0105C8 7000F9C8 80820000 */ lb $v0, ($a0) -/* 0105CC 7000F9CC 24840001 */ addiu $a0, $a0, 1 -/* 0105D0 7000F9D0 24A50001 */ addiu $a1, $a1, 1 -/* 0105D4 7000F9D4 1483FFFC */ bne $a0, $v1, .L7000F9C8 -/* 0105D8 7000F9D8 A0A2FFFF */ sb $v0, -1($a1) -.L7000F9DC: -/* 0105DC 7000F9DC 03E00008 */ jr $ra -/* 0105E0 7000F9E0 00E01025 */ move $v0, $a3 - -.L7000F9E4: -/* 0105E4 7000F9E4 10400018 */ beqz $v0, .L7000FA48 -/* 0105E8 7000F9E8 24010001 */ li $at, 1 -/* 0105EC 7000F9EC 1041000F */ beq $v0, $at, .L7000FA2C -/* 0105F0 7000F9F0 24010002 */ li $at, 2 -/* 0105F4 7000F9F4 50410008 */ beql $v0, $at, .L7000FA18 -/* 0105F8 7000F9F8 84820000 */ lh $v0, ($a0) -/* 0105FC 7000F9FC 80820000 */ lb $v0, ($a0) -/* 010600 7000FA00 24840001 */ addiu $a0, $a0, 1 -/* 010604 7000FA04 24A50001 */ addiu $a1, $a1, 1 -/* 010608 7000FA08 24C6FFFF */ addiu $a2, $a2, -1 -/* 01060C 7000FA0C 1000000E */ b .L7000FA48 -/* 010610 7000FA10 A0A2FFFF */ sb $v0, -1($a1) -/* 010614 7000FA14 84820000 */ lh $v0, ($a0) -.L7000FA18: -/* 010618 7000FA18 24840002 */ addiu $a0, $a0, 2 -/* 01061C 7000FA1C 24A50002 */ addiu $a1, $a1, 2 -/* 010620 7000FA20 24C6FFFE */ addiu $a2, $a2, -2 -/* 010624 7000FA24 10000008 */ b .L7000FA48 -/* 010628 7000FA28 A4A2FFFE */ sh $v0, -2($a1) -.L7000FA2C: -/* 01062C 7000FA2C 80820000 */ lb $v0, ($a0) -/* 010630 7000FA30 84830001 */ lh $v1, 1($a0) -/* 010634 7000FA34 24840003 */ addiu $a0, $a0, 3 -/* 010638 7000FA38 24A50003 */ addiu $a1, $a1, 3 -/* 01063C 7000FA3C 24C6FFFD */ addiu $a2, $a2, -3 -/* 010640 7000FA40 A0A2FFFD */ sb $v0, -3($a1) -/* 010644 7000FA44 A4A3FFFE */ sh $v1, -2($a1) -.L7000FA48: -/* 010648 7000FA48 28C10020 */ slti $at, $a2, 0x20 -/* 01064C 7000FA4C 54200016 */ bnezl $at, .L7000FAA8 -/* 010650 7000FA50 28C10010 */ slti $at, $a2, 0x10 -/* 010654 7000FA54 8C820000 */ lw $v0, ($a0) -/* 010658 7000FA58 8C830004 */ lw $v1, 4($a0) -/* 01065C 7000FA5C 8C880008 */ lw $t0, 8($a0) -/* 010660 7000FA60 8C89000C */ lw $t1, 0xc($a0) -/* 010664 7000FA64 8C8A0010 */ lw $t2, 0x10($a0) -/* 010668 7000FA68 8C8B0014 */ lw $t3, 0x14($a0) -/* 01066C 7000FA6C 8C8C0018 */ lw $t4, 0x18($a0) -/* 010670 7000FA70 8C8D001C */ lw $t5, 0x1c($a0) -/* 010674 7000FA74 24840020 */ addiu $a0, $a0, 0x20 -/* 010678 7000FA78 24A50020 */ addiu $a1, $a1, 0x20 -/* 01067C 7000FA7C 24C6FFE0 */ addiu $a2, $a2, -0x20 -/* 010680 7000FA80 ACA2FFE0 */ sw $v0, -0x20($a1) -/* 010684 7000FA84 ACA3FFE4 */ sw $v1, -0x1c($a1) -/* 010688 7000FA88 ACA8FFE8 */ sw $t0, -0x18($a1) -/* 01068C 7000FA8C ACA9FFEC */ sw $t1, -0x14($a1) -/* 010690 7000FA90 ACAAFFF0 */ sw $t2, -0x10($a1) -/* 010694 7000FA94 ACABFFF4 */ sw $t3, -0xc($a1) -/* 010698 7000FA98 ACACFFF8 */ sw $t4, -8($a1) -/* 01069C 7000FA9C 1000FFEA */ b .L7000FA48 -/* 0106A0 7000FAA0 ACADFFFC */ sw $t5, -4($a1) -.L7000FAA4: -/* 0106A4 7000FAA4 28C10010 */ slti $at, $a2, 0x10 -.L7000FAA8: -/* 0106A8 7000FAA8 5420000E */ bnezl $at, .L7000FAE4 -/* 0106AC 7000FAAC 28C10004 */ slti $at, $a2, 4 -/* 0106B0 7000FAB0 8C820000 */ lw $v0, ($a0) -/* 0106B4 7000FAB4 8C830004 */ lw $v1, 4($a0) -/* 0106B8 7000FAB8 8C880008 */ lw $t0, 8($a0) -/* 0106BC 7000FABC 8C89000C */ lw $t1, 0xc($a0) -/* 0106C0 7000FAC0 24840010 */ addiu $a0, $a0, 0x10 -/* 0106C4 7000FAC4 24A50010 */ addiu $a1, $a1, 0x10 -/* 0106C8 7000FAC8 24C6FFF0 */ addiu $a2, $a2, -0x10 -/* 0106CC 7000FACC ACA2FFF0 */ sw $v0, -0x10($a1) -/* 0106D0 7000FAD0 ACA3FFF4 */ sw $v1, -0xc($a1) -/* 0106D4 7000FAD4 ACA8FFF8 */ sw $t0, -8($a1) -/* 0106D8 7000FAD8 1000FFF2 */ b .L7000FAA4 -/* 0106DC 7000FADC ACA9FFFC */ sw $t1, -4($a1) -.L7000FAE0: -/* 0106E0 7000FAE0 28C10004 */ slti $at, $a2, 4 -.L7000FAE4: -/* 0106E4 7000FAE4 1420FFB5 */ bnez $at, .L7000F9BC -/* 0106E8 7000FAE8 00000000 */ nop -/* 0106EC 7000FAEC 8C820000 */ lw $v0, ($a0) -/* 0106F0 7000FAF0 24840004 */ addiu $a0, $a0, 4 -/* 0106F4 7000FAF4 24A50004 */ addiu $a1, $a1, 4 -/* 0106F8 7000FAF8 24C6FFFC */ addiu $a2, $a2, -4 -/* 0106FC 7000FAFC 1000FFF8 */ b .L7000FAE0 -/* 010700 7000FB00 ACA2FFFC */ sw $v0, -4($a1) -/* 010704 7000FB04 28C10010 */ slti $at, $a2, 0x10 -.L7000FB08: -/* 010708 7000FB08 00862020 */ add $a0, $a0, $a2 -/* 01070C 7000FB0C 14200005 */ bnez $at, .L7000FB24 -/* 010710 7000FB10 00A62820 */ add $a1, $a1, $a2 -/* 010714 7000FB14 30820003 */ andi $v0, $a0, 3 -/* 010718 7000FB18 30A30003 */ andi $v1, $a1, 3 -/* 01071C 7000FB1C 1043000D */ beq $v0, $v1, .L7000FB54 -/* 010720 7000FB20 00000000 */ nop -.L7000FB24: -/* 010724 7000FB24 10C0FFAD */ beqz $a2, .L7000F9DC -/* 010728 7000FB28 00000000 */ nop -/* 01072C 7000FB2C 2484FFFF */ addiu $a0, $a0, -1 -/* 010730 7000FB30 24A5FFFF */ addiu $a1, $a1, -1 -/* 010734 7000FB34 00861823 */ subu $v1, $a0, $a2 -.L7000FB38: -/* 010738 7000FB38 80820000 */ lb $v0, ($a0) -/* 01073C 7000FB3C 2484FFFF */ addiu $a0, $a0, -1 -/* 010740 7000FB40 24A5FFFF */ addiu $a1, $a1, -1 -/* 010744 7000FB44 1483FFFC */ bne $a0, $v1, .L7000FB38 -/* 010748 7000FB48 A0A20001 */ sb $v0, 1($a1) -/* 01074C 7000FB4C 03E00008 */ jr $ra -/* 010750 7000FB50 00E01025 */ move $v0, $a3 - -.L7000FB54: -/* 010754 7000FB54 10400018 */ beqz $v0, .L7000FBB8 -/* 010758 7000FB58 24010003 */ li $at, 3 -/* 01075C 7000FB5C 1041000F */ beq $v0, $at, .L7000FB9C -/* 010760 7000FB60 24010002 */ li $at, 2 -/* 010764 7000FB64 50410008 */ beql $v0, $at, .L7000FB88 -/* 010768 7000FB68 8482FFFE */ lh $v0, -2($a0) -/* 01076C 7000FB6C 8082FFFF */ lb $v0, -1($a0) -/* 010770 7000FB70 2484FFFF */ addiu $a0, $a0, -1 -/* 010774 7000FB74 24A5FFFF */ addiu $a1, $a1, -1 -/* 010778 7000FB78 24C6FFFF */ addiu $a2, $a2, -1 -/* 01077C 7000FB7C 1000000E */ b .L7000FBB8 -/* 010780 7000FB80 A0A20000 */ sb $v0, ($a1) -/* 010784 7000FB84 8482FFFE */ lh $v0, -2($a0) -.L7000FB88: -/* 010788 7000FB88 2484FFFE */ addiu $a0, $a0, -2 -/* 01078C 7000FB8C 24A5FFFE */ addiu $a1, $a1, -2 -/* 010790 7000FB90 24C6FFFE */ addiu $a2, $a2, -2 -/* 010794 7000FB94 10000008 */ b .L7000FBB8 -/* 010798 7000FB98 A4A20000 */ sh $v0, ($a1) -.L7000FB9C: -/* 01079C 7000FB9C 8082FFFF */ lb $v0, -1($a0) -/* 0107A0 7000FBA0 8483FFFD */ lh $v1, -3($a0) -/* 0107A4 7000FBA4 2484FFFD */ addiu $a0, $a0, -3 -/* 0107A8 7000FBA8 24A5FFFD */ addiu $a1, $a1, -3 -/* 0107AC 7000FBAC 24C6FFFD */ addiu $a2, $a2, -3 -/* 0107B0 7000FBB0 A0A20002 */ sb $v0, 2($a1) -/* 0107B4 7000FBB4 A4A30000 */ sh $v1, ($a1) -.L7000FBB8: -/* 0107B8 7000FBB8 28C10020 */ slti $at, $a2, 0x20 -/* 0107BC 7000FBBC 54200016 */ bnezl $at, .L7000FC18 -/* 0107C0 7000FBC0 28C10010 */ slti $at, $a2, 0x10 -/* 0107C4 7000FBC4 8C82FFFC */ lw $v0, -4($a0) -/* 0107C8 7000FBC8 8C83FFF8 */ lw $v1, -8($a0) -/* 0107CC 7000FBCC 8C88FFF4 */ lw $t0, -0xc($a0) -/* 0107D0 7000FBD0 8C89FFF0 */ lw $t1, -0x10($a0) -/* 0107D4 7000FBD4 8C8AFFEC */ lw $t2, -0x14($a0) -/* 0107D8 7000FBD8 8C8BFFE8 */ lw $t3, -0x18($a0) -/* 0107DC 7000FBDC 8C8CFFE4 */ lw $t4, -0x1c($a0) -/* 0107E0 7000FBE0 8C8DFFE0 */ lw $t5, -0x20($a0) -/* 0107E4 7000FBE4 2484FFE0 */ addiu $a0, $a0, -0x20 -/* 0107E8 7000FBE8 24A5FFE0 */ addiu $a1, $a1, -0x20 -/* 0107EC 7000FBEC 24C6FFE0 */ addiu $a2, $a2, -0x20 -/* 0107F0 7000FBF0 ACA2001C */ sw $v0, 0x1c($a1) -/* 0107F4 7000FBF4 ACA30018 */ sw $v1, 0x18($a1) -/* 0107F8 7000FBF8 ACA80014 */ sw $t0, 0x14($a1) -/* 0107FC 7000FBFC ACA90010 */ sw $t1, 0x10($a1) -/* 010800 7000FC00 ACAA000C */ sw $t2, 0xc($a1) -/* 010804 7000FC04 ACAB0008 */ sw $t3, 8($a1) -/* 010808 7000FC08 ACAC0004 */ sw $t4, 4($a1) -/* 01080C 7000FC0C 1000FFEA */ b .L7000FBB8 -/* 010810 7000FC10 ACAD0000 */ sw $t5, ($a1) -.L7000FC14: -/* 010814 7000FC14 28C10010 */ slti $at, $a2, 0x10 -.L7000FC18: -/* 010818 7000FC18 5420000E */ bnezl $at, .L7000FC54 -/* 01081C 7000FC1C 28C10004 */ slti $at, $a2, 4 -/* 010820 7000FC20 8C82FFFC */ lw $v0, -4($a0) -/* 010824 7000FC24 8C83FFF8 */ lw $v1, -8($a0) -/* 010828 7000FC28 8C88FFF4 */ lw $t0, -0xc($a0) -/* 01082C 7000FC2C 8C89FFF0 */ lw $t1, -0x10($a0) -/* 010830 7000FC30 2484FFF0 */ addiu $a0, $a0, -0x10 -/* 010834 7000FC34 24A5FFF0 */ addiu $a1, $a1, -0x10 -/* 010838 7000FC38 24C6FFF0 */ addiu $a2, $a2, -0x10 -/* 01083C 7000FC3C ACA2000C */ sw $v0, 0xc($a1) -/* 010840 7000FC40 ACA30008 */ sw $v1, 8($a1) -/* 010844 7000FC44 ACA80004 */ sw $t0, 4($a1) -/* 010848 7000FC48 1000FFF2 */ b .L7000FC14 -/* 01084C 7000FC4C ACA90000 */ sw $t1, ($a1) -.L7000FC50: -/* 010850 7000FC50 28C10004 */ slti $at, $a2, 4 -.L7000FC54: -/* 010854 7000FC54 1420FFB3 */ bnez $at, .L7000FB24 -/* 010858 7000FC58 00000000 */ nop -/* 01085C 7000FC5C 8C82FFFC */ lw $v0, -4($a0) -/* 010860 7000FC60 2484FFFC */ addiu $a0, $a0, -4 -/* 010864 7000FC64 24A5FFFC */ addiu $a1, $a1, -4 -/* 010868 7000FC68 24C6FFFC */ addiu $a2, $a2, -4 -/* 01086C 7000FC6C 1000FFF8 */ b .L7000FC50 -/* 010870 7000FC70 ACA20000 */ sw $v0, ($a1) -/* 010874 7000FC74 00000000 */ nop -/* 010878 7000FC78 00000000 */ nop -/* 01087C 7000FC7C 00000000 */ nop - -.section .text -glabel guPerspectiveF -/* 010880 7000FC80 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 010884 7000FC84 44867000 */ mtc1 $a2, $f14 -/* 010888 7000FC88 AFBF0014 */ sw $ra, 0x14($sp) -/* 01088C 7000FC8C AFA7003C */ sw $a3, 0x3c($sp) -/* 010890 7000FC90 AFA40030 */ sw $a0, 0x30($sp) -/* 010894 7000FC94 AFA50034 */ sw $a1, 0x34($sp) -/* 010898 7000FC98 0C004004 */ jal guMtxIdentF -/* 01089C 7000FC9C E7AE0038 */ swc1 $f14, 0x38($sp) -/* 0108A0 7000FCA0 C7AE0038 */ lwc1 $f14, 0x38($sp) -/* 0108A4 7000FCA4 3C018003 */ lui $at, %hi(F64_80029430) #0x80030000 -/* 0108A8 7000FCA8 D4269430 */ ldc1 $f6, %lo(F64_80029430)($at) # -0x6bd0($at) -/* 0108AC 7000FCAC 46007121 */ cvt.d.s $f4, $f14 -/* 0108B0 7000FCB0 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 0108B4 7000FCB4 46262202 */ mul.d $f8, $f4, $f6 -/* 0108B8 7000FCB8 44815000 */ mtc1 $at, $f10 -/* 0108BC 7000FCBC 462043A0 */ cvt.s.d $f14, $f8 -/* 0108C0 7000FCC0 460A7303 */ div.s $f12, $f14, $f10 -/* 0108C4 7000FCC4 0FC15FA8 */ jal cosf -/* 0108C8 7000FCC8 E7AC001C */ swc1 $f12, 0x1c($sp) -/* 0108CC 7000FCCC C7AC001C */ lwc1 $f12, 0x1c($sp) -/* 0108D0 7000FCD0 0FC15FAB */ jal sinf -/* 0108D4 7000FCD4 E7A00020 */ swc1 $f0, 0x20($sp) -/* 0108D8 7000FCD8 C7A40020 */ lwc1 $f4, 0x20($sp) -/* 0108DC 7000FCDC C7A6003C */ lwc1 $f6, 0x3c($sp) -/* 0108E0 7000FCE0 C7AE0040 */ lwc1 $f14, 0x40($sp) -/* 0108E4 7000FCE4 46002083 */ div.s $f2, $f4, $f0 -/* 0108E8 7000FCE8 C7B00044 */ lwc1 $f16, 0x44($sp) -/* 0108EC 7000FCEC 3C01BF80 */ li $at, 0xBF800000 # -1.000000 -/* 0108F0 7000FCF0 44812000 */ mtc1 $at, $f4 -/* 0108F4 7000FCF4 46107480 */ add.s $f18, $f14, $f16 -/* 0108F8 7000FCF8 8FA20030 */ lw $v0, 0x30($sp) -/* 0108FC 7000FCFC 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 010900 7000FD00 46107301 */ sub.s $f12, $f14, $f16 -/* 010904 7000FD04 8FA50034 */ lw $a1, 0x34($sp) -/* 010908 7000FD08 E444002C */ swc1 $f4, 0x2c($v0) -/* 01090C 7000FD0C 00001825 */ move $v1, $zero -/* 010910 7000FD10 24040004 */ li $a0, 4 -/* 010914 7000FD14 460C9283 */ div.s $f10, $f18, $f12 -/* 010918 7000FD18 E4420014 */ swc1 $f2, 0x14($v0) -/* 01091C 7000FD1C 46061203 */ div.s $f8, $f2, $f6 -/* 010920 7000FD20 44813000 */ mtc1 $at, $f6 -/* 010924 7000FD24 E44A0028 */ swc1 $f10, 0x28($v0) -/* 010928 7000FD28 E4480000 */ swc1 $f8, ($v0) -/* 01092C 7000FD2C 460E3202 */ mul.s $f8, $f6, $f14 -/* 010930 7000FD30 44803000 */ mtc1 $zero, $f6 -/* 010934 7000FD34 00000000 */ nop -/* 010938 7000FD38 E446003C */ swc1 $f6, 0x3c($v0) -/* 01093C 7000FD3C 46104282 */ mul.s $f10, $f8, $f16 -/* 010940 7000FD40 460C5103 */ div.s $f4, $f10, $f12 -/* 010944 7000FD44 E4440038 */ swc1 $f4, 0x38($v0) -/* 010948 7000FD48 C7A00048 */ lwc1 $f0, 0x48($sp) -/* 01094C 7000FD4C C4460000 */ lwc1 $f6, ($v0) -/* 010950 7000FD50 24630001 */ addiu $v1, $v1, 1 -/* 010954 7000FD54 C4500004 */ lwc1 $f16, 4($v0) -/* 010958 7000FD58 46003282 */ mul.s $f10, $f6, $f0 -/* 01095C 7000FD5C C44C0008 */ lwc1 $f12, 8($v0) -/* 010960 7000FD60 10640010 */ beq $v1, $a0, .L7000FDA4 -/* 010964 7000FD64 C44E000C */ lwc1 $f14, 0xc($v0) -.L7000FD68: -/* 010968 7000FD68 46008202 */ mul.s $f8, $f16, $f0 -/* 01096C 7000FD6C C4460010 */ lwc1 $f6, 0x10($v0) -/* 010970 7000FD70 C4500014 */ lwc1 $f16, 0x14($v0) -/* 010974 7000FD74 46006102 */ mul.s $f4, $f12, $f0 -/* 010978 7000FD78 C44C0018 */ lwc1 $f12, 0x18($v0) -/* 01097C 7000FD7C 24630001 */ addiu $v1, $v1, 1 -/* 010980 7000FD80 46007082 */ mul.s $f2, $f14, $f0 -/* 010984 7000FD84 C44E001C */ lwc1 $f14, 0x1c($v0) -/* 010988 7000FD88 E44A0000 */ swc1 $f10, ($v0) -/* 01098C 7000FD8C 46003282 */ mul.s $f10, $f6, $f0 -/* 010990 7000FD90 E4480004 */ swc1 $f8, 4($v0) -/* 010994 7000FD94 E4440008 */ swc1 $f4, 8($v0) -/* 010998 7000FD98 24420010 */ addiu $v0, $v0, 0x10 -/* 01099C 7000FD9C 1464FFF2 */ bne $v1, $a0, .L7000FD68 -/* 0109A0 7000FDA0 E442FFFC */ swc1 $f2, -4($v0) -.L7000FDA4: -/* 0109A4 7000FDA4 46008202 */ mul.s $f8, $f16, $f0 -/* 0109A8 7000FDA8 24420010 */ addiu $v0, $v0, 0x10 -/* 0109AC 7000FDAC E44AFFF0 */ swc1 $f10, -0x10($v0) -/* 0109B0 7000FDB0 46006102 */ mul.s $f4, $f12, $f0 -/* 0109B4 7000FDB4 00000000 */ nop -/* 0109B8 7000FDB8 46007082 */ mul.s $f2, $f14, $f0 -/* 0109BC 7000FDBC E448FFF4 */ swc1 $f8, -0xc($v0) -/* 0109C0 7000FDC0 E444FFF8 */ swc1 $f4, -8($v0) -/* 0109C4 7000FDC4 E442FFFC */ swc1 $f2, -4($v0) -/* 0109C8 7000FDC8 10A00035 */ beqz $a1, .L7000FEA0 -/* 0109CC 7000FDCC 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 0109D0 7000FDD0 44814800 */ mtc1 $at, $f9 -/* 0109D4 7000FDD4 44804000 */ mtc1 $zero, $f8 -/* 0109D8 7000FDD8 46009021 */ cvt.d.s $f0, $f18 -/* 0109DC 7000FDDC 340EFFFF */ li $t6, 65535 -/* 0109E0 7000FDE0 4628003E */ c.le.d $f0, $f8 -/* 0109E4 7000FDE4 3C014100 */ li $at, 0x41000000 # 8.000000 -/* 0109E8 7000FDE8 45020004 */ bc1fl .L7000FDFC -/* 0109EC 7000FDEC 44815800 */ mtc1 $at, $f11 -/* 0109F0 7000FDF0 1000002B */ b .L7000FEA0 -/* 0109F4 7000FDF4 A4AE0000 */ sh $t6, ($a1) -/* 0109F8 7000FDF8 44815800 */ mtc1 $at, $f11 -.L7000FDFC: -/* 0109FC 7000FDFC 44805000 */ mtc1 $zero, $f10 -/* 010A00 7000FE00 24180001 */ li $t8, 1 -/* 010A04 7000FE04 3C0141E0 */ li $at, 0x41E00000 # 28.000000 -/* 010A08 7000FE08 46205103 */ div.d $f4, $f10, $f0 -/* 010A0C 7000FE0C 24080001 */ li $t0, 1 -/* 010A10 7000FE10 444FF800 */ cfc1 $t7, $31 -/* 010A14 7000FE14 44D8F800 */ ctc1 $t8, $31 -/* 010A18 7000FE18 00000000 */ nop -/* 010A1C 7000FE1C 462021A4 */ cvt.w.d $f6, $f4 -/* 010A20 7000FE20 4458F800 */ cfc1 $t8, $31 -/* 010A24 7000FE24 00000000 */ nop -/* 010A28 7000FE28 33180078 */ andi $t8, $t8, 0x78 -/* 010A2C 7000FE2C 53000014 */ beql $t8, $zero, .L7000FE80 -/* 010A30 7000FE30 44183000 */ mfc1 $t8, $f6 -/* 010A34 7000FE34 44813800 */ mtc1 $at, $f7 -/* 010A38 7000FE38 44803000 */ mtc1 $zero, $f6 -/* 010A3C 7000FE3C 24180001 */ li $t8, 1 -/* 010A40 7000FE40 46262181 */ sub.d $f6, $f4, $f6 -/* 010A44 7000FE44 44D8F800 */ ctc1 $t8, $31 -/* 010A48 7000FE48 00000000 */ nop -/* 010A4C 7000FE4C 462031A4 */ cvt.w.d $f6, $f6 -/* 010A50 7000FE50 4458F800 */ cfc1 $t8, $31 -/* 010A54 7000FE54 00000000 */ nop -/* 010A58 7000FE58 33180078 */ andi $t8, $t8, 0x78 -/* 010A5C 7000FE5C 17000005 */ bnez $t8, .L7000FE74 -/* 010A60 7000FE60 00000000 */ nop -/* 010A64 7000FE64 44183000 */ mfc1 $t8, $f6 -/* 010A68 7000FE68 3C018000 */ lui $at, 0x8000 -/* 010A6C 7000FE6C 10000007 */ b .L7000FE8C -/* 010A70 7000FE70 0301C025 */ or $t8, $t8, $at -.L7000FE74: -/* 010A74 7000FE74 10000005 */ b .L7000FE8C -/* 010A78 7000FE78 2418FFFF */ li $t8, -1 -/* 010A7C 7000FE7C 44183000 */ mfc1 $t8, $f6 -.L7000FE80: -/* 010A80 7000FE80 00000000 */ nop -/* 010A84 7000FE84 0700FFFB */ bltz $t8, .L7000FE74 -/* 010A88 7000FE88 00000000 */ nop -.L7000FE8C: -/* 010A8C 7000FE8C 44CFF800 */ ctc1 $t7, $31 -/* 010A90 7000FE90 3319FFFF */ andi $t9, $t8, 0xffff -/* 010A94 7000FE94 1F200002 */ bgtz $t9, .L7000FEA0 -/* 010A98 7000FE98 A4B80000 */ sh $t8, ($a1) -/* 010A9C 7000FE9C A4A80000 */ sh $t0, ($a1) -.L7000FEA0: -/* 010AA0 7000FEA0 8FBF0014 */ lw $ra, 0x14($sp) -/* 010AA4 7000FEA4 27BD0030 */ addiu $sp, $sp, 0x30 -/* 010AA8 7000FEA8 03E00008 */ jr $ra -/* 010AAC 7000FEAC 00000000 */ nop - -glabel guPerspective -/* 010AB0 7000FEB0 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 010AB4 7000FEB4 44866000 */ mtc1 $a2, $f12 -/* 010AB8 7000FEB8 44877000 */ mtc1 $a3, $f14 -/* 010ABC 7000FEBC C7A40078 */ lwc1 $f4, 0x78($sp) -/* 010AC0 7000FEC0 C7A6007C */ lwc1 $f6, 0x7c($sp) -/* 010AC4 7000FEC4 C7A80080 */ lwc1 $f8, 0x80($sp) -/* 010AC8 7000FEC8 AFBF0024 */ sw $ra, 0x24($sp) -/* 010ACC 7000FECC AFA40068 */ sw $a0, 0x68($sp) -/* 010AD0 7000FED0 44066000 */ mfc1 $a2, $f12 -/* 010AD4 7000FED4 44077000 */ mfc1 $a3, $f14 -/* 010AD8 7000FED8 27A40028 */ addiu $a0, $sp, 0x28 -/* 010ADC 7000FEDC E7A40010 */ swc1 $f4, 0x10($sp) -/* 010AE0 7000FEE0 E7A60014 */ swc1 $f6, 0x14($sp) -/* 010AE4 7000FEE4 0C003F20 */ jal guPerspectiveF -/* 010AE8 7000FEE8 E7A80018 */ swc1 $f8, 0x18($sp) -/* 010AEC 7000FEEC 27A40028 */ addiu $a0, $sp, 0x28 -/* 010AF0 7000FEF0 0C003FC4 */ jal guMtxF2L -/* 010AF4 7000FEF4 8FA50068 */ lw $a1, 0x68($sp) -/* 010AF8 7000FEF8 8FBF0024 */ lw $ra, 0x24($sp) -/* 010AFC 7000FEFC 27BD0068 */ addiu $sp, $sp, 0x68 -/* 010B00 7000FF00 03E00008 */ jr $ra -/* 010B04 7000FF04 00000000 */ nop - -/* 010B08 7000FF08 00000000 */ nop -/* 010B0C 7000FF0C 00000000 */ nop -glabel guMtxF2L -/* 010B10 7000FF10 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 010B14 7000FF14 44810000 */ mtc1 $at, $f0 -/* 010B18 7000FF18 00A01025 */ move $v0, $a1 -/* 010B1C 7000FF1C 24A30020 */ addiu $v1, $a1, 0x20 -/* 010B20 7000FF20 00003025 */ move $a2, $zero -/* 010B24 7000FF24 00803825 */ move $a3, $a0 -/* 010B28 7000FF28 240C0004 */ li $t4, 4 -/* 010B2C 7000FF2C 240B0002 */ li $t3, 2 -/* 010B30 7000FF30 3C0AFFFF */ lui $t2, 0xffff -.L7000FF34: -/* 010B34 7000FF34 00002025 */ move $a0, $zero -/* 010B38 7000FF38 00E04025 */ move $t0, $a3 -/* 010B3C 7000FF3C C50E0004 */ lwc1 $f14, 4($t0) -/* 010B40 7000FF40 24840001 */ addiu $a0, $a0, 1 -/* 010B44 7000FF44 C5120000 */ lwc1 $f18, ($t0) -/* 010B48 7000FF48 46007402 */ mul.s $f16, $f14, $f0 -/* 010B4C 7000FF4C 108B0019 */ beq $a0, $t3, .L7000FFB4 -/* 010B50 7000FF50 00000000 */ nop -.L7000FF54: -/* 010B54 7000FF54 46009382 */ mul.s $f14, $f18, $f0 -/* 010B58 7000FF58 24840001 */ addiu $a0, $a0, 1 -/* 010B5C 7000FF5C 24420004 */ addiu $v0, $v0, 4 -/* 010B60 7000FF60 24630004 */ addiu $v1, $v1, 4 -/* 010B64 7000FF64 25080008 */ addiu $t0, $t0, 8 -/* 010B68 7000FF68 4600830D */ trunc.w.s $f12, $f16 -/* 010B6C 7000FF6C 4600738D */ trunc.w.s $f14, $f14 -/* 010B70 7000FF70 44096000 */ mfc1 $t1, $f12 -/* 010B74 7000FF74 44057000 */ mfc1 $a1, $f14 -/* 010B78 7000FF78 0009CC03 */ sra $t9, $t1, 0x10 -/* 010B7C 7000FF7C 332DFFFF */ andi $t5, $t9, 0xffff -/* 010B80 7000FF80 00AAC024 */ and $t8, $a1, $t2 -/* 010B84 7000FF84 030D7025 */ or $t6, $t8, $t5 -/* 010B88 7000FF88 00057C00 */ sll $t7, $a1, 0x10 -/* 010B8C 7000FF8C 01EAC824 */ and $t9, $t7, $t2 -/* 010B90 7000FF90 AC4EFFFC */ sw $t6, -4($v0) -/* 010B94 7000FF94 3138FFFF */ andi $t8, $t1, 0xffff -/* 010B98 7000FF98 03386825 */ or $t5, $t9, $t8 -/* 010B9C 7000FF9C AC6DFFFC */ sw $t5, -4($v1) -/* 010BA0 7000FFA0 C50E0004 */ lwc1 $f14, 4($t0) -/* 010BA4 7000FFA4 C5120000 */ lwc1 $f18, ($t0) -/* 010BA8 7000FFA8 46007402 */ mul.s $f16, $f14, $f0 -/* 010BAC 7000FFAC 148BFFE9 */ bne $a0, $t3, .L7000FF54 -/* 010BB0 7000FFB0 00000000 */ nop -.L7000FFB4: -/* 010BB4 7000FFB4 46009382 */ mul.s $f14, $f18, $f0 -/* 010BB8 7000FFB8 25080008 */ addiu $t0, $t0, 8 -/* 010BBC 7000FFBC 24420004 */ addiu $v0, $v0, 4 -/* 010BC0 7000FFC0 24630004 */ addiu $v1, $v1, 4 -/* 010BC4 7000FFC4 4600830D */ trunc.w.s $f12, $f16 -/* 010BC8 7000FFC8 4600738D */ trunc.w.s $f14, $f14 -/* 010BCC 7000FFCC 44096000 */ mfc1 $t1, $f12 -/* 010BD0 7000FFD0 44057000 */ mfc1 $a1, $f14 -/* 010BD4 7000FFD4 0009CC03 */ sra $t9, $t1, 0x10 -/* 010BD8 7000FFD8 332DFFFF */ andi $t5, $t9, 0xffff -/* 010BDC 7000FFDC 00AAC024 */ and $t8, $a1, $t2 -/* 010BE0 7000FFE0 030D7025 */ or $t6, $t8, $t5 -/* 010BE4 7000FFE4 00057C00 */ sll $t7, $a1, 0x10 -/* 010BE8 7000FFE8 01EAC824 */ and $t9, $t7, $t2 -/* 010BEC 7000FFEC 3138FFFF */ andi $t8, $t1, 0xffff -/* 010BF0 7000FFF0 AC4EFFFC */ sw $t6, -4($v0) -/* 010BF4 7000FFF4 03386825 */ or $t5, $t9, $t8 -/* 010BF8 7000FFF8 AC6DFFFC */ sw $t5, -4($v1) -/* 010BFC 7000FFFC 24C60001 */ addiu $a2, $a2, 1 -/* 010C00 70010000 14CCFFCC */ bne $a2, $t4, .L7000FF34 -/* 010C04 70010004 24E70010 */ addiu $a3, $a3, 0x10 -/* 010C08 70010008 03E00008 */ jr $ra -/* 010C0C 7001000C 00000000 */ nop - -.section .rodata -glabel F64_80029430 -.word 0x3f91df46, 0x9d353918 #0.017453292222222222 -.word 0,0 - -.section .text -glabel guMtxIdentF -/* 010C10 70010010 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 010C14 70010014 00801825 */ move $v1, $a0 -/* 010C18 70010018 44810000 */ mtc1 $at, $f0 -/* 010C1C 7001001C 44801000 */ mtc1 $zero, $f2 -/* 010C20 70010020 24040001 */ li $a0, 1 -/* 010C24 70010024 00001025 */ move $v0, $zero -/* 010C28 70010028 24070004 */ li $a3, 4 -/* 010C2C 7001002C 24060003 */ li $a2, 3 -/* 010C30 70010030 24050002 */ li $a1, 2 -.L70010034: -/* 010C34 70010034 54400004 */ bnezl $v0, .L70010048 -/* 010C38 70010038 E4620000 */ swc1 $f2, ($v1) -/* 010C3C 7001003C 10000002 */ b .L70010048 -/* 010C40 70010040 E4600000 */ swc1 $f0, ($v1) -/* 010C44 70010044 E4620000 */ swc1 $f2, ($v1) -.L70010048: -/* 010C48 70010048 54440004 */ bnel $v0, $a0, .L7001005C -/* 010C4C 7001004C E4620004 */ swc1 $f2, 4($v1) -/* 010C50 70010050 10000002 */ b .L7001005C -/* 010C54 70010054 E4600004 */ swc1 $f0, 4($v1) -/* 010C58 70010058 E4620004 */ swc1 $f2, 4($v1) -.L7001005C: -/* 010C5C 7001005C 54450004 */ bnel $v0, $a1, .L70010070 -/* 010C60 70010060 E4620008 */ swc1 $f2, 8($v1) -/* 010C64 70010064 10000002 */ b .L70010070 -/* 010C68 70010068 E4600008 */ swc1 $f0, 8($v1) -/* 010C6C 7001006C E4620008 */ swc1 $f2, 8($v1) -.L70010070: -/* 010C70 70010070 54460004 */ bnel $v0, $a2, .L70010084 -/* 010C74 70010074 E462000C */ swc1 $f2, 0xc($v1) -/* 010C78 70010078 10000002 */ b .L70010084 -/* 010C7C 7001007C E460000C */ swc1 $f0, 0xc($v1) -/* 010C80 70010080 E462000C */ swc1 $f2, 0xc($v1) -.L70010084: -/* 010C84 70010084 24420001 */ addiu $v0, $v0, 1 -/* 010C88 70010088 1447FFEA */ bne $v0, $a3, .L70010034 -/* 010C8C 7001008C 24630010 */ addiu $v1, $v1, 0x10 -/* 010C90 70010090 03E00008 */ jr $ra -/* 010C94 70010094 00000000 */ nop - -glabel guMtxIdent -/* 010C98 70010098 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 010C9C 7001009C AFBF0014 */ sw $ra, 0x14($sp) -/* 010CA0 700100A0 AFA40058 */ sw $a0, 0x58($sp) -/* 010CA4 700100A4 0C004004 */ jal guMtxIdentF -/* 010CA8 700100A8 27A40018 */ addiu $a0, $sp, 0x18 -/* 010CAC 700100AC 27A40018 */ addiu $a0, $sp, 0x18 -/* 010CB0 700100B0 0C003FC4 */ jal guMtxF2L -/* 010CB4 700100B4 8FA50058 */ lw $a1, 0x58($sp) -/* 010CB8 700100B8 8FBF0014 */ lw $ra, 0x14($sp) -/* 010CBC 700100BC 27BD0058 */ addiu $sp, $sp, 0x58 -/* 010CC0 700100C0 03E00008 */ jr $ra -/* 010CC4 700100C4 00000000 */ nop - -glabel guMtxL2F -/* 010CC8 700100C8 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 010CCC 700100CC 44810000 */ mtc1 $at, $f0 -/* 010CD0 700100D0 27BDFFF0 */ addiu $sp, $sp, -0x10 -/* 010CD4 700100D4 00A01025 */ move $v0, $a1 -/* 010CD8 700100D8 24A30020 */ addiu $v1, $a1, 0x20 -/* 010CDC 700100DC 00003025 */ move $a2, $zero -/* 010CE0 700100E0 00804025 */ move $t0, $a0 -/* 010CE4 700100E4 240C0004 */ li $t4, 4 -/* 010CE8 700100E8 240B0002 */ li $t3, 2 -/* 010CEC 700100EC 3C0AFFFF */ lui $t2, 0xffff -.L700100F0: -/* 010CF0 700100F0 00002025 */ move $a0, $zero -/* 010CF4 700100F4 01004825 */ move $t1, $t0 -.L700100F8: -/* 010CF8 700100F8 8C6E0000 */ lw $t6, ($v1) -/* 010CFC 700100FC 8C590000 */ lw $t9, ($v0) -/* 010D00 70010100 24840001 */ addiu $a0, $a0, 1 -/* 010D04 70010104 000E7C02 */ srl $t7, $t6, 0x10 -/* 010D08 70010108 31F8FFFF */ andi $t8, $t7, 0xffff -/* 010D0C 7001010C 032A6824 */ and $t5, $t9, $t2 -/* 010D10 70010110 030D7025 */ or $t6, $t8, $t5 -/* 010D14 70010114 AFAE0004 */ sw $t6, 4($sp) -/* 010D18 70010118 8C6F0000 */ lw $t7, ($v1) -/* 010D1C 7001011C 8C580000 */ lw $t8, ($v0) -/* 010D20 70010120 8FA50004 */ lw $a1, 4($sp) -/* 010D24 70010124 31F9FFFF */ andi $t9, $t7, 0xffff -/* 010D28 70010128 00186C00 */ sll $t5, $t8, 0x10 -/* 010D2C 7001012C 44859000 */ mtc1 $a1, $f18 -/* 010D30 70010130 01AA7024 */ and $t6, $t5, $t2 -/* 010D34 70010134 032E3825 */ or $a3, $t9, $t6 -/* 010D38 70010138 468094A0 */ cvt.s.w $f18, $f18 -/* 010D3C 7001013C 44878000 */ mtc1 $a3, $f16 -/* 010D40 70010140 AFA70000 */ sw $a3, ($sp) -/* 010D44 70010144 24420004 */ addiu $v0, $v0, 4 -/* 010D48 70010148 24630004 */ addiu $v1, $v1, 4 -/* 010D4C 7001014C 46808420 */ cvt.s.w $f16, $f16 -/* 010D50 70010150 25290008 */ addiu $t1, $t1, 8 -/* 010D54 70010154 46009483 */ div.s $f18, $f18, $f0 -/* 010D58 70010158 46008403 */ div.s $f16, $f16, $f0 -/* 010D5C 7001015C E532FFF8 */ swc1 $f18, -8($t1) -/* 010D60 70010160 148BFFE5 */ bne $a0, $t3, .L700100F8 -/* 010D64 70010164 E530FFFC */ swc1 $f16, -4($t1) -/* 010D68 70010168 24C60001 */ addiu $a2, $a2, 1 -/* 010D6C 7001016C 14CCFFE0 */ bne $a2, $t4, .L700100F0 -/* 010D70 70010170 25080010 */ addiu $t0, $t0, 0x10 -/* 010D74 70010174 03E00008 */ jr $ra -/* 010D78 70010178 27BD0010 */ addiu $sp, $sp, 0x10 - -/* 010D7C 7001017C 00000000 */ nop -glabel ultra_70010180 -/* 010D80 70010180 3C028002 */ lui $v0, %hi(__osFaultedThread) -/* 010D84 70010184 03E00008 */ jr $ra -/* 010D88 70010188 8C427734 */ lw $v0, %lo(__osFaultedThread)($v0) - -/* 010D8C 7001018C 00000000 */ nop -glabel __osExceptionPreamble -/* 010D90 70010190 3C1A7001 */ lui $k0, %hi(__osException) # $k0, 0x7001 -/* 010D94 70010194 275A01A0 */ addiu $k0, %lo(__osException) # addiu $k0, $k0, 0x1a0 -/* 010D98 70010198 03400008 */ jr $k0 -/* 010D9C 7001019C 00000000 */ nop -glabel __osException -/* 010DA0 700101A0 3C1A8007 */ lui $k0, %hi(__osThreadSave) # $k0, 0x8007 -/* 010DA4 700101A4 275A8E30 */ addiu $k0, %lo(__osThreadSave) # addiu $k0, $k0, -0x71d0 -/* 010DA8 700101A8 FF410020 */ sd $at, 0x20($k0) -/* 010DAC 700101AC 401B6000 */ mfc0 $k1, $12 -/* 010DB0 700101B0 AF5B0118 */ sw $k1, 0x118($k0) -/* 010DB4 700101B4 2401FFFC */ li $at, -4 -/* 010DB8 700101B8 0361D824 */ and $k1, $k1, $at -/* 010DBC 700101BC 409B6000 */ mtc0 $k1, $12 -/* 010DC0 700101C0 FF480058 */ sd $t0, 0x58($k0) -/* 010DC4 700101C4 FF490060 */ sd $t1, 0x60($k0) -/* 010DC8 700101C8 FF4A0068 */ sd $t2, 0x68($k0) -/* 010DCC 700101CC AF400018 */ sw $zero, 0x18($k0) -/* 010DD0 700101D0 40086800 */ mfc0 $t0, $13 -/* 010DD4 700101D4 03404025 */ move $t0, $k0 -/* 010DD8 700101D8 3C1A8002 */ lui $k0, %hi(__osRunningThread) # $k0, 0x8002 -/* 010DDC 700101DC 8F5A7730 */ lw $k0, %lo(__osRunningThread)($k0) -/* 010DE0 700101E0 DD090020 */ ld $t1, 0x20($t0) -/* 010DE4 700101E4 FF490020 */ sd $t1, 0x20($k0) -/* 010DE8 700101E8 DD090118 */ ld $t1, 0x118($t0) -/* 010DEC 700101EC FF490118 */ sd $t1, 0x118($k0) -/* 010DF0 700101F0 DD090058 */ ld $t1, 0x58($t0) -/* 010DF4 700101F4 FF490058 */ sd $t1, 0x58($k0) -/* 010DF8 700101F8 DD090060 */ ld $t1, 0x60($t0) -/* 010DFC 700101FC FF490060 */ sd $t1, 0x60($k0) -/* 010E00 70010200 DD090068 */ ld $t1, 0x68($t0) -/* 010E04 70010204 FF490068 */ sd $t1, 0x68($k0) -/* 010E08 70010208 8F5B0118 */ lw $k1, 0x118($k0) -/* 010E0C 7001020C 00004012 */ mflo $t0 -/* 010E10 70010210 FF480108 */ sd $t0, 0x108($k0) -/* 010E14 70010214 00004010 */ mfhi $t0 -/* 010E18 70010218 3369FF00 */ andi $t1, $k1, 0xff00 -/* 010E1C 7001021C FF420028 */ sd $v0, 0x28($k0) -/* 010E20 70010220 FF430030 */ sd $v1, 0x30($k0) -/* 010E24 70010224 FF440038 */ sd $a0, 0x38($k0) -/* 010E28 70010228 FF450040 */ sd $a1, 0x40($k0) -/* 010E2C 7001022C FF460048 */ sd $a2, 0x48($k0) -/* 010E30 70010230 FF470050 */ sd $a3, 0x50($k0) -/* 010E34 70010234 FF4B0070 */ sd $t3, 0x70($k0) -/* 010E38 70010238 FF4C0078 */ sd $t4, 0x78($k0) -/* 010E3C 7001023C FF4D0080 */ sd $t5, 0x80($k0) -/* 010E40 70010240 FF4E0088 */ sd $t6, 0x88($k0) -/* 010E44 70010244 FF4F0090 */ sd $t7, 0x90($k0) -/* 010E48 70010248 FF500098 */ sd $s0, 0x98($k0) -/* 010E4C 7001024C FF5100A0 */ sd $s1, 0xa0($k0) -/* 010E50 70010250 FF5200A8 */ sd $s2, 0xa8($k0) -/* 010E54 70010254 FF5300B0 */ sd $s3, 0xb0($k0) -/* 010E58 70010258 FF5400B8 */ sd $s4, 0xb8($k0) -/* 010E5C 7001025C FF5500C0 */ sd $s5, 0xc0($k0) -/* 010E60 70010260 FF5600C8 */ sd $s6, 0xc8($k0) -/* 010E64 70010264 FF5700D0 */ sd $s7, 0xd0($k0) -/* 010E68 70010268 FF5800D8 */ sd $t8, 0xd8($k0) -/* 010E6C 7001026C FF5900E0 */ sd $t9, 0xe0($k0) -/* 010E70 70010270 FF5C00E8 */ sd $gp, 0xe8($k0) -/* 010E74 70010274 FF5D00F0 */ sd $sp, 0xf0($k0) -/* 010E78 70010278 FF5E00F8 */ sd $fp, 0xf8($k0) -/* 010E7C 7001027C FF5F0100 */ sd $ra, 0x100($k0) -/* 010E80 70010280 1120000D */ beqz $t1, .L700102B8 -/* 010E84 70010284 FF480110 */ sd $t0, 0x110($k0) -/* 010E88 70010288 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) -/* 010E8C 7001028C 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c -/* 010E90 70010290 8D080000 */ lw $t0, ($t0) -/* 010E94 70010294 2401FFFF */ li $at, -1 -/* 010E98 70010298 01014026 */ xor $t0, $t0, $at -/* 010E9C 7001029C 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff -/* 010EA0 700102A0 3108FF00 */ andi $t0, $t0, 0xff00 -/* 010EA4 700102A4 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff -/* 010EA8 700102A8 01284825 */ or $t1, $t1, $t0 -/* 010EAC 700102AC 0361D824 */ and $k1, $k1, $at -/* 010EB0 700102B0 0369D825 */ or $k1, $k1, $t1 -/* 010EB4 700102B4 AF5B0118 */ sw $k1, 0x118($k0) -.L700102B8: -/* 010EB8 700102B8 3C09A430 */ lui $t1, %hi(MI_INTR_MASK_REG) # $t1, 0xa430 -/* 010EBC 700102BC 8D29000C */ lw $t1, %lo(MI_INTR_MASK_REG)($t1) -/* 010EC0 700102C0 1120000B */ beqz $t1, .L700102F0 -/* 010EC4 700102C4 00000000 */ nop -/* 010EC8 700102C8 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) -/* 010ECC 700102CC 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c -/* 010ED0 700102D0 8D080000 */ lw $t0, ($t0) -/* 010ED4 700102D4 8F4C0128 */ lw $t4, 0x128($k0) -/* 010ED8 700102D8 2401FFFF */ li $at, -1 -/* 010EDC 700102DC 00084402 */ srl $t0, $t0, 0x10 -/* 010EE0 700102E0 01014026 */ xor $t0, $t0, $at -/* 010EE4 700102E4 3108003F */ andi $t0, $t0, 0x3f -/* 010EE8 700102E8 010C4024 */ and $t0, $t0, $t4 -/* 010EEC 700102EC 01284825 */ or $t1, $t1, $t0 -.L700102F0: -/* 010EF0 700102F0 AF490128 */ sw $t1, 0x128($k0) -/* 010EF4 700102F4 40087000 */ mfc0 $t0, $14 -/* 010EF8 700102F8 AF48011C */ sw $t0, 0x11c($k0) -/* 010EFC 700102FC 8F480018 */ lw $t0, 0x18($k0) -/* 010F00 70010300 11000014 */ beqz $t0, .L70010354 -/* 010F04 70010304 00000000 */ nop -/* 010F08 70010308 4448F800 */ cfc1 $t0, $31 -/* 010F0C 7001030C 00000000 */ nop -/* 010F10 70010310 AF48012C */ sw $t0, 0x12c($k0) -/* 010F14 70010314 F7400130 */ sdc1 $f0, 0x130($k0) -/* 010F18 70010318 F7420138 */ sdc1 $f2, 0x138($k0) -/* 010F1C 7001031C F7440140 */ sdc1 $f4, 0x140($k0) -/* 010F20 70010320 F7460148 */ sdc1 $f6, 0x148($k0) -/* 010F24 70010324 F7480150 */ sdc1 $f8, 0x150($k0) -/* 010F28 70010328 F74A0158 */ sdc1 $f10, 0x158($k0) -/* 010F2C 7001032C F74C0160 */ sdc1 $f12, 0x160($k0) -/* 010F30 70010330 F74E0168 */ sdc1 $f14, 0x168($k0) -/* 010F34 70010334 F7500170 */ sdc1 $f16, 0x170($k0) -/* 010F38 70010338 F7520178 */ sdc1 $f18, 0x178($k0) -/* 010F3C 7001033C F7540180 */ sdc1 $f20, 0x180($k0) -/* 010F40 70010340 F7560188 */ sdc1 $f22, 0x188($k0) -/* 010F44 70010344 F7580190 */ sdc1 $f24, 0x190($k0) -/* 010F48 70010348 F75A0198 */ sdc1 $f26, 0x198($k0) -/* 010F4C 7001034C F75C01A0 */ sdc1 $f28, 0x1a0($k0) -/* 010F50 70010350 F75E01A8 */ sdc1 $f30, 0x1a8($k0) -.L70010354: -/* 010F54 70010354 40086800 */ mfc0 $t0, $13 -/* 010F58 70010358 AF480120 */ sw $t0, 0x120($k0) -/* 010F5C 7001035C 24090002 */ li $t1, 2 -/* 010F60 70010360 A7490010 */ sh $t1, 0x10($k0) -/* 010F64 70010364 3109007C */ andi $t1, $t0, 0x7c -/* 010F68 70010368 240A0024 */ li $t2, 36 -/* 010F6C 7001036C 112A00B0 */ beq $t1, $t2, .L70010630 -/* 010F70 70010370 00000000 */ nop -/* 010F74 70010374 240A002C */ li $t2, 44 -/* 010F78 70010378 112A00FF */ beq $t1, $t2, .L70010778 -/* 010F7C 7001037C 00000000 */ nop -/* 010F80 70010380 240A0000 */ li $t2, 0 -/* 010F84 70010384 152A00C3 */ bne $t1, $t2, .L70010694 -/* 010F88 70010388 00000000 */ nop -/* 010F8C 7001038C 03688024 */ and $s0, $k1, $t0 -glabel next_interrupt -.L70010390: -/* 010F90 70010390 3209FF00 */ andi $t1, $s0, 0xff00 -/* 010F94 70010394 00095302 */ srl $t2, $t1, 0xc -/* 010F98 70010398 15400003 */ bnez $t2, .L700103A8 -/* 010F9C 7001039C 00000000 */ nop -/* 010FA0 700103A0 00095202 */ srl $t2, $t1, 8 -/* 010FA4 700103A4 214A0010 */ addi $t2, $t2, 0x10 -.L700103A8: -/* 010FA8 700103A8 3C018003 */ lui $at, %hi(__osIntOffTable) -/* 010FAC 700103AC 002A0821 */ addu $at, $at, $t2 -/* 010FB0 700103B0 902A9440 */ lbu $t2, %lo(__osIntOffTable)($at) -/* 010FB4 700103B4 3C018003 */ lui $at, %hi(__osIntTable) -/* 010FB8 700103B8 002A0821 */ addu $at, $at, $t2 -/* 010FBC 700103BC 8C2A9460 */ lw $t2, %lo(__osIntTable)($at) -/* 010FC0 700103C0 01400008 */ jr $t2 -/* 010FC4 700103C4 00000000 */ nop -glabel IP6_Hdlr -/* 010FC8 700103C8 2401DFFF */ li $at, -8193 -/* 010FCC 700103CC 1000FFF0 */ b .L70010390 -/* 010FD0 700103D0 02018024 */ and $s0, $s0, $at -glabel IP7_Hdlr -/* 010FD4 700103D4 2401BFFF */ li $at, -16385 -/* 010FD8 700103D8 1000FFED */ b .L70010390 -/* 010FDC 700103DC 02018024 */ and $s0, $s0, $at -glabel counter -/* 010FE0 700103E0 40095800 */ mfc0 $t1, $11 -/* 010FE4 700103E4 40895800 */ mtc0 $t1, $11 -/* 010FE8 700103E8 0C0041B1 */ jal send_mesg -/* 010FEC 700103EC 24040018 */ li $a0, 24 -/* 010FF0 700103F0 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff -/* 010FF4 700103F4 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff -/* 010FF8 700103F8 1000FFE5 */ b .L70010390 -/* 010FFC 700103FC 02018024 */ and $s0, $s0, $at -glabel cart -/* 011000 70010400 2401F7FF */ li $at, -2049 -/* 011004 70010404 02018024 */ and $s0, $s0, $at -/* 011008 70010408 240A0004 */ li $t2, 4 -/* 01100C 7001040C 3C018002 */ lui $at, %hi(__osHwIntTable) -/* 011010 70010410 002A0821 */ addu $at, $at, $t2 -/* 011014 70010414 8C2A7700 */ lw $t2, %lo(__osHwIntTable)($at) -/* 011018 70010418 3C1D8006 */ lui $sp, %hi(leoDiskStack) # $sp, 0x8006 -/* 01101C 7001041C 27BD7DF0 */ addiu $sp, %lo(leoDiskStack) # addiu $sp, $sp, 0x7df0 -/* 011020 70010420 24040010 */ li $a0, 16 -/* 011024 70010424 11400007 */ beqz $t2, .L70010444 -/* 011028 70010428 27BD0FF0 */ addiu $sp, $sp, 0xff0 -/* 01102C 7001042C 0140F809 */ jalr $t2 -/* 011030 70010430 00000000 */ nop -/* 011034 70010434 10400003 */ beqz $v0, .L70010444 -/* 011038 70010438 00000000 */ nop -/* 01103C 7001043C 10000082 */ b .L70010648 -/* 011040 70010440 00000000 */ nop -.L70010444: -/* 011044 70010444 0C0041B1 */ jal send_mesg -/* 011048 70010448 00000000 */ nop -/* 01104C 7001044C 1000FFD0 */ b .L70010390 -/* 011050 70010450 00000000 */ nop -glabel rcp -/* 011054 70010454 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) -/* 011058 70010458 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c -/* 01105C 7001045C 8D080000 */ lw $t0, ($t0) -/* 011060 70010460 3C11A430 */ lui $s1, %hi(MI_INTR_REG) # $s1, 0xa430 -/* 011064 70010464 8E310008 */ lw $s1, %lo(MI_INTR_REG)($s1) -/* 011068 70010468 00084402 */ srl $t0, $t0, 0x10 -/* 01106C 7001046C 02288824 */ and $s1, $s1, $t0 -/* 011070 70010470 32290001 */ andi $t1, $s1, 1 -/* 011074 70010474 11200013 */ beqz $t1, .L700104C4 -/* 011078 70010478 00000000 */ nop -/* 01107C 7001047C 3C0CA404 */ lui $t4, %hi(SP_STATUS_REG) # $t4, 0xa404 -/* 011080 70010480 8D8C0010 */ lw $t4, %lo(SP_STATUS_REG)($t4) -/* 011084 70010484 24090008 */ li $t1, 8 -/* 011088 70010488 3C01A404 */ lui $at, %hi(SP_STATUS_REG) # $at, 0xa404 -/* 01108C 7001048C 318C0300 */ andi $t4, $t4, 0x300 -/* 011090 70010490 3231003E */ andi $s1, $s1, 0x3e -/* 011094 70010494 11800007 */ beqz $t4, .L700104B4 -/* 011098 70010498 AC290010 */ sw $t1, %lo(SP_STATUS_REG)($at) -/* 01109C 7001049C 0C0041B1 */ jal send_mesg -/* 0110A0 700104A0 24040020 */ li $a0, 32 -/* 0110A4 700104A4 12200038 */ beqz $s1, .L70010588 -/* 0110A8 700104A8 00000000 */ nop -/* 0110AC 700104AC 10000005 */ b .L700104C4 -/* 0110B0 700104B0 00000000 */ nop -.L700104B4: -/* 0110B4 700104B4 0C0041B1 */ jal send_mesg -/* 0110B8 700104B8 24040058 */ li $a0, 88 -/* 0110BC 700104BC 12200032 */ beqz $s1, .L70010588 -/* 0110C0 700104C0 00000000 */ nop -.L700104C4: -/* 0110C4 700104C4 32290008 */ andi $t1, $s1, 8 -/* 0110C8 700104C8 11200007 */ beqz $t1, .L700104E8 -/* 0110CC 700104CC 3C01A440 */ lui $at, %hi(VI_CURRENT_REG) # $at, 0xa440 -/* 0110D0 700104D0 32310037 */ andi $s1, $s1, 0x37 -/* 0110D4 700104D4 AC200010 */ sw $zero, %lo(VI_CURRENT_REG)($at) -/* 0110D8 700104D8 0C0041B1 */ jal send_mesg -/* 0110DC 700104DC 24040038 */ li $a0, 56 -/* 0110E0 700104E0 12200029 */ beqz $s1, .L70010588 -/* 0110E4 700104E4 00000000 */ nop -.L700104E8: -/* 0110E8 700104E8 32290004 */ andi $t1, $s1, 4 -/* 0110EC 700104EC 11200009 */ beqz $t1, .L70010514 -/* 0110F0 700104F0 00000000 */ nop -/* 0110F4 700104F4 24090001 */ li $t1, 1 -/* 0110F8 700104F8 3C01A450 */ lui $at, %hi(AI_STATUS_REG) # $at, 0xa450 -/* 0110FC 700104FC 3231003B */ andi $s1, $s1, 0x3b -/* 011100 70010500 AC29000C */ sw $t1, %lo(AI_STATUS_REG)($at) -/* 011104 70010504 0C0041B1 */ jal send_mesg -/* 011108 70010508 24040030 */ li $a0, 48 -/* 01110C 7001050C 1220001E */ beqz $s1, .L70010588 -/* 011110 70010510 00000000 */ nop -.L70010514: -/* 011114 70010514 32290002 */ andi $t1, $s1, 2 -/* 011118 70010518 11200007 */ beqz $t1, .L70010538 -/* 01111C 7001051C 3C01A480 */ lui $at, %hi(SI_STATUS_REG) # $at, 0xa480 -/* 011120 70010520 3231003D */ andi $s1, $s1, 0x3d -/* 011124 70010524 AC200018 */ sw $zero, %lo(SI_STATUS_REG)($at) -/* 011128 70010528 0C0041B1 */ jal send_mesg -/* 01112C 7001052C 24040028 */ li $a0, 40 -/* 011130 70010530 12200015 */ beqz $s1, .L70010588 -/* 011134 70010534 00000000 */ nop -.L70010538: -/* 011138 70010538 32290010 */ andi $t1, $s1, 0x10 -/* 01113C 7001053C 11200009 */ beqz $t1, .L70010564 -/* 011140 70010540 00000000 */ nop -/* 011144 70010544 24090002 */ li $t1, 2 -/* 011148 70010548 3C01A460 */ lui $at, %hi(PI_STATUS_REG) # $at, 0xa460 -/* 01114C 7001054C 3231002F */ andi $s1, $s1, 0x2f -/* 011150 70010550 AC290010 */ sw $t1, %lo(PI_STATUS_REG)($at) -/* 011154 70010554 0C0041B1 */ jal send_mesg -/* 011158 70010558 24040040 */ li $a0, 64 -/* 01115C 7001055C 1220000A */ beqz $s1, .L70010588 -/* 011160 70010560 00000000 */ nop -.L70010564: -/* 011164 70010564 32290020 */ andi $t1, $s1, 0x20 -/* 011168 70010568 11200007 */ beqz $t1, .L70010588 -/* 01116C 7001056C 00000000 */ nop -/* 011170 70010570 24090800 */ li $t1, 2048 -/* 011174 70010574 3C01A430 */ lui $at, 0xa430 -/* 011178 70010578 3231001F */ andi $s1, $s1, 0x1f -/* 01117C 7001057C AC290000 */ sw $t1, ($at) -/* 011180 70010580 0C0041B1 */ jal send_mesg -/* 011184 70010584 24040048 */ li $a0, 72 -.L70010588: -/* 011188 70010588 2401FBFF */ li $at, -1025 -/* 01118C 7001058C 1000FF80 */ b .L70010390 -/* 011190 70010590 02018024 */ and $s0, $s0, $at -glabel prenmi -/* 011194 70010594 8F5B0118 */ lw $k1, 0x118($k0) -/* 011198 70010598 2401EFFF */ li $at, -4097 -/* 01119C 7001059C 3C098002 */ lui $t1, %hi(__osShutdown) -/* 0111A0 700105A0 0361D824 */ and $k1, $k1, $at -/* 0111A4 700105A4 AF5B0118 */ sw $k1, 0x118($k0) -/* 0111A8 700105A8 25296988 */ addiu $t1, %lo(__osShutdown) # addiu $t1, $t1, 0x6988 -/* 0111AC 700105AC 8D2A0000 */ lw $t2, ($t1) -/* 0111B0 700105B0 11400003 */ beqz $t2, .L700105C0 -/* 0111B4 700105B4 2401EFFF */ li $at, -4097 -/* 0111B8 700105B8 10000023 */ b .L70010648 -/* 0111BC 700105BC 02018024 */ and $s0, $s0, $at -.L700105C0: -/* 0111C0 700105C0 240A0001 */ li $t2, 1 -/* 0111C4 700105C4 AD2A0000 */ sw $t2, ($t1) -/* 0111C8 700105C8 0C0041B1 */ jal send_mesg -/* 0111CC 700105CC 24040070 */ li $a0, 112 -/* 0111D0 700105D0 3C0A8002 */ lui $t2, %hi(__osRunQueue) -/* 0111D4 700105D4 8D4A7728 */ lw $t2, %lo(__osRunQueue)($t2) -/* 0111D8 700105D8 2401EFFF */ li $at, -4097 -/* 0111DC 700105DC 02018024 */ and $s0, $s0, $at -/* 0111E0 700105E0 8D5B0118 */ lw $k1, 0x118($t2) -/* 0111E4 700105E4 0361D824 */ and $k1, $k1, $at -/* 0111E8 700105E8 10000017 */ b .L70010648 -/* 0111EC 700105EC AD5B0118 */ sw $k1, 0x118($t2) -glabel sw2 -/* 0111F0 700105F0 2401FDFF */ li $at, -513 -/* 0111F4 700105F4 01014024 */ and $t0, $t0, $at -/* 0111F8 700105F8 40886800 */ mtc0 $t0, $13 -/* 0111FC 700105FC 0C0041B1 */ jal send_mesg -/* 011200 70010600 24040008 */ li $a0, 8 -/* 011204 70010604 2401FDFF */ li $at, -513 -/* 011208 70010608 1000FF61 */ b .L70010390 -/* 01120C 7001060C 02018024 */ and $s0, $s0, $at -glabel swl -/* 011210 70010610 2401FEFF */ li $at, -257 -/* 011214 70010614 01014024 */ and $t0, $t0, $at -/* 011218 70010618 40886800 */ mtc0 $t0, $13 -/* 01121C 7001061C 0C0041B1 */ jal send_mesg -/* 011220 70010620 24040000 */ li $a0, 0 -/* 011224 70010624 2401FEFF */ li $at, -257 -/* 011228 70010628 1000FF59 */ b .L70010390 -/* 01122C 7001062C 02018024 */ and $s0, $s0, $at -.L70010630: -/* 011230 70010630 24090001 */ li $t1, 1 -/* 011234 70010634 A7490012 */ sh $t1, 0x12($k0) -/* 011238 70010638 0C0041B1 */ jal send_mesg -/* 01123C 7001063C 24040050 */ li $a0, 80 -/* 011240 70010640 10000001 */ b .L70010648 -/* 011244 70010644 00000000 */ nop -glabel redispatch -.L70010648: -/* 011248 70010648 3C0A8002 */ lui $t2, %hi(__osRunQueue) -/* 01124C 7001064C 8D4A7728 */ lw $t2, %lo(__osRunQueue)($t2) -/* 011250 70010650 8F490004 */ lw $t1, 4($k0) -/* 011254 70010654 8D4B0004 */ lw $t3, 4($t2) -/* 011258 70010658 012B082A */ slt $at, $t1, $t3 -/* 01125C 7001065C 10200007 */ beqz $at, .L7001067C -/* 011260 70010660 00000000 */ nop -/* 011264 70010664 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 011268 70010668 03402825 */ move $a1, $k0 -/* 01126C 7001066C 0C00422B */ jal __osEnqueueThread -/* 011270 70010670 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -/* 011274 70010674 08004241 */ j __osDispatchThread -/* 011278 70010678 00000000 */ nop - -glabel enqueueRunning -.L7001067C: -/* 01127C 7001067C 3C098002 */ lui $t1, %hi(__osRunQueue) -/* 011280 70010680 25297728 */ addiu $t1, %lo(__osRunQueue) # addiu $t1, $t1, 0x7728 -/* 011284 70010684 8D2A0000 */ lw $t2, ($t1) -/* 011288 70010688 AF4A0000 */ sw $t2, ($k0) -/* 01128C 7001068C 08004241 */ j __osDispatchThread -/* 011290 70010690 AD3A0000 */ sw $k0, ($t1) - -.L70010694: -/* 011294 70010694 3C018002 */ lui $at, %hi(__osFaultedThread) -/* 011298 70010698 AC3A7734 */ sw $k0, %lo(__osFaultedThread)($at) -/* 01129C 7001069C 24090001 */ li $t1, 1 -/* 0112A0 700106A0 A7490010 */ sh $t1, 0x10($k0) -/* 0112A4 700106A4 24090002 */ li $t1, 2 -/* 0112A8 700106A8 A7490012 */ sh $t1, 0x12($k0) -/* 0112AC 700106AC 400A4000 */ mfc0 $t2, $8 -/* 0112B0 700106B0 AF4A0124 */ sw $t2, 0x124($k0) -/* 0112B4 700106B4 0C0041B1 */ jal send_mesg -/* 0112B8 700106B8 24040060 */ li $a0, 96 -/* 0112BC 700106BC 08004241 */ j __osDispatchThread -/* 0112C0 700106C0 00000000 */ nop - -glabel send_mesg -/* 0112C4 700106C4 3C0A8006 */ lui $t2, %hi(__osEventStateTab) -/* 0112C8 700106C8 254A6A10 */ addiu $t2, %lo(__osEventStateTab) # addiu $t2, $t2, 0x6a10 -/* 0112CC 700106CC 01445021 */ addu $t2, $t2, $a0 -/* 0112D0 700106D0 8D490000 */ lw $t1, ($t2) -/* 0112D4 700106D4 03E09025 */ move $s2, $ra -/* 0112D8 700106D8 11200025 */ beqz $t1, .L70010770 -/* 0112DC 700106DC 00000000 */ nop -/* 0112E0 700106E0 8D2B0008 */ lw $t3, 8($t1) -/* 0112E4 700106E4 8D2C0010 */ lw $t4, 0x10($t1) -/* 0112E8 700106E8 016C082A */ slt $at, $t3, $t4 -/* 0112EC 700106EC 10200020 */ beqz $at, .L70010770 -/* 0112F0 700106F0 00000000 */ nop -/* 0112F4 700106F4 8D2D000C */ lw $t5, 0xc($t1) -/* 0112F8 700106F8 01AB6821 */ addu $t5, $t5, $t3 -/* 0112FC 700106FC 01AC001A */ div $zero, $t5, $t4 -/* 011300 70010700 15800002 */ bnez $t4, .L7001070C -/* 011304 70010704 00000000 */ nop -/* 011308 70010708 0007000D */ break 7 -.L7001070C: -/* 01130C 7001070C 2401FFFF */ li $at, -1 -/* 011310 70010710 15810004 */ bne $t4, $at, .L70010724 -/* 011314 70010714 3C018000 */ lui $at, 0x8000 -/* 011318 70010718 15A10002 */ bne $t5, $at, .L70010724 -/* 01131C 7001071C 00000000 */ nop -/* 011320 70010720 0006000D */ break 6 -.L70010724: -/* 011324 70010724 8D2C0014 */ lw $t4, 0x14($t1) -/* 011328 70010728 00006810 */ mfhi $t5 -/* 01132C 7001072C 000D6880 */ sll $t5, $t5, 2 -/* 011330 70010730 018D6021 */ addu $t4, $t4, $t5 -/* 011334 70010734 8D4D0004 */ lw $t5, 4($t2) -/* 011338 70010738 256A0001 */ addiu $t2, $t3, 1 -/* 01133C 7001073C AD8D0000 */ sw $t5, ($t4) -/* 011340 70010740 AD2A0008 */ sw $t2, 8($t1) -/* 011344 70010744 8D2A0000 */ lw $t2, ($t1) -/* 011348 70010748 8D4B0000 */ lw $t3, ($t2) -/* 01134C 7001074C 11600008 */ beqz $t3, .L70010770 -/* 011350 70010750 00000000 */ nop -/* 011354 70010754 0C00423D */ jal __osPopThread -/* 011358 70010758 01202025 */ move $a0, $t1 -/* 01135C 7001075C 00405025 */ move $t2, $v0 -/* 011360 70010760 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 011364 70010764 01402825 */ move $a1, $t2 -/* 011368 70010768 0C00422B */ jal __osEnqueueThread -/* 01136C 7001076C 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -.L70010770: -/* 011370 70010770 02400008 */ jr $s2 -/* 011374 70010774 00000000 */ nop -glabel handle_CpU -.L70010778: -/* 011378 70010778 3C013000 */ lui $at, 0x3000 -/* 01137C 7001077C 01014824 */ and $t1, $t0, $at -/* 011380 70010780 00094F02 */ srl $t1, $t1, 0x1c -/* 011384 70010784 240A0001 */ li $t2, 1 -/* 011388 70010788 152AFFC2 */ bne $t1, $t2, .L70010694 -/* 01138C 7001078C 00000000 */ nop -/* 011390 70010790 8F5B0118 */ lw $k1, 0x118($k0) -/* 011394 70010794 3C012000 */ lui $at, 0x2000 -/* 011398 70010798 24090001 */ li $t1, 1 -/* 01139C 7001079C 0361D825 */ or $k1, $k1, $at -/* 0113A0 700107A0 AF490018 */ sw $t1, 0x18($k0) -/* 0113A4 700107A4 1000FFB5 */ b .L7001067C -/* 0113A8 700107A8 AF5B0118 */ sw $k1, 0x118($k0) -glabel __osEnqueueAndYield -/* 0113AC 700107AC 3C058002 */ lui $a1, %hi(__osRunningThread) -/* 0113B0 700107B0 8CA57730 */ lw $a1, %lo(__osRunningThread)($a1) -/* 0113B4 700107B4 40086000 */ mfc0 $t0, $12 -/* 0113B8 700107B8 8CBB0018 */ lw $k1, 0x18($a1) -/* 0113BC 700107BC 35080002 */ ori $t0, $t0, 2 -/* 0113C0 700107C0 ACA80118 */ sw $t0, 0x118($a1) -/* 0113C4 700107C4 FCB00098 */ sd $s0, 0x98($a1) -/* 0113C8 700107C8 FCB100A0 */ sd $s1, 0xa0($a1) -/* 0113CC 700107CC FCB200A8 */ sd $s2, 0xa8($a1) -/* 0113D0 700107D0 FCB300B0 */ sd $s3, 0xb0($a1) -/* 0113D4 700107D4 FCB400B8 */ sd $s4, 0xb8($a1) -/* 0113D8 700107D8 FCB500C0 */ sd $s5, 0xc0($a1) -/* 0113DC 700107DC FCB600C8 */ sd $s6, 0xc8($a1) -/* 0113E0 700107E0 FCB700D0 */ sd $s7, 0xd0($a1) -/* 0113E4 700107E4 FCBC00E8 */ sd $gp, 0xe8($a1) -/* 0113E8 700107E8 FCBD00F0 */ sd $sp, 0xf0($a1) -/* 0113EC 700107EC FCBE00F8 */ sd $fp, 0xf8($a1) -/* 0113F0 700107F0 FCBF0100 */ sd $ra, 0x100($a1) -/* 0113F4 700107F4 13600009 */ beqz $k1, .L7001081C -/* 0113F8 700107F8 ACBF011C */ sw $ra, 0x11c($a1) -/* 0113FC 700107FC 445BF800 */ cfc1 $k1, $31 -/* 011400 70010800 F4B40180 */ sdc1 $f20, 0x180($a1) -/* 011404 70010804 F4B60188 */ sdc1 $f22, 0x188($a1) -/* 011408 70010808 F4B80190 */ sdc1 $f24, 0x190($a1) -/* 01140C 7001080C F4BA0198 */ sdc1 $f26, 0x198($a1) -/* 011410 70010810 F4BC01A0 */ sdc1 $f28, 0x1a0($a1) -/* 011414 70010814 F4BE01A8 */ sdc1 $f30, 0x1a8($a1) -/* 011418 70010818 ACBB012C */ sw $k1, 0x12c($a1) -.L7001081C: -/* 01141C 7001081C 8CBB0118 */ lw $k1, 0x118($a1) -/* 011420 70010820 3369FF00 */ andi $t1, $k1, 0xff00 -/* 011424 70010824 1120000D */ beqz $t1, .L7001085C -/* 011428 70010828 00000000 */ nop -/* 01142C 7001082C 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) -/* 011430 70010830 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c -/* 011434 70010834 8D080000 */ lw $t0, ($t0) -/* 011438 70010838 2401FFFF */ li $at, -1 -/* 01143C 7001083C 01014026 */ xor $t0, $t0, $at -/* 011440 70010840 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff -/* 011444 70010844 3108FF00 */ andi $t0, $t0, 0xff00 -/* 011448 70010848 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff -/* 01144C 7001084C 01284825 */ or $t1, $t1, $t0 -/* 011450 70010850 0361D824 */ and $k1, $k1, $at -/* 011454 70010854 0369D825 */ or $k1, $k1, $t1 -/* 011458 70010858 ACBB0118 */ sw $k1, 0x118($a1) -.L7001085C: -/* 01145C 7001085C 3C1BA430 */ lui $k1, %hi(MI_INTR_MASK_REG) # $k1, 0xa430 -/* 011460 70010860 8F7B000C */ lw $k1, %lo(MI_INTR_MASK_REG)($k1) -/* 011464 70010864 1360000B */ beqz $k1, .L70010894 -/* 011468 70010868 00000000 */ nop -/* 01146C 7001086C 3C1A8002 */ lui $k0, %hi(__OSGlobalIntMask) # $k0, 0x8002 -/* 011470 70010870 275A698C */ addiu $k0, %lo(__OSGlobalIntMask) # addiu $k0, $k0, 0x698c -/* 011474 70010874 8F5A0000 */ lw $k0, ($k0) -/* 011478 70010878 8CA80128 */ lw $t0, 0x128($a1) -/* 01147C 7001087C 2401FFFF */ li $at, -1 -/* 011480 70010880 001AD402 */ srl $k0, $k0, 0x10 -/* 011484 70010884 0341D026 */ xor $k0, $k0, $at -/* 011488 70010888 335A003F */ andi $k0, $k0, 0x3f -/* 01148C 7001088C 0348D024 */ and $k0, $k0, $t0 -/* 011490 70010890 037AD825 */ or $k1, $k1, $k0 -.L70010894: -/* 011494 70010894 10800003 */ beqz $a0, .L700108A4 -/* 011498 70010898 ACBB0128 */ sw $k1, 0x128($a1) -/* 01149C 7001089C 0C00422B */ jal __osEnqueueThread -/* 0114A0 700108A0 00000000 */ nop -.L700108A4: -/* 0114A4 700108A4 08004241 */ j __osDispatchThread -/* 0114A8 700108A8 00000000 */ nop - -glabel __osEnqueueThread -/* 0114AC 700108AC 8C980000 */ lw $t8, ($a0) -/* 0114B0 700108B0 8CAF0004 */ lw $t7, 4($a1) -/* 0114B4 700108B4 0080C825 */ move $t9, $a0 -/* 0114B8 700108B8 8F0E0004 */ lw $t6, 4($t8) -/* 0114BC 700108BC 01CF082A */ slt $at, $t6, $t7 -/* 0114C0 700108C0 14200007 */ bnez $at, .L700108E0 -/* 0114C4 700108C4 00000000 */ nop -.L700108C8: -/* 0114C8 700108C8 0300C825 */ move $t9, $t8 -/* 0114CC 700108CC 8F180000 */ lw $t8, ($t8) -/* 0114D0 700108D0 8F0E0004 */ lw $t6, 4($t8) -/* 0114D4 700108D4 01CF082A */ slt $at, $t6, $t7 -/* 0114D8 700108D8 1020FFFB */ beqz $at, .L700108C8 -/* 0114DC 700108DC 00000000 */ nop -.L700108E0: -/* 0114E0 700108E0 8F380000 */ lw $t8, ($t9) -/* 0114E4 700108E4 ACB80000 */ sw $t8, ($a1) -/* 0114E8 700108E8 AF250000 */ sw $a1, ($t9) -/* 0114EC 700108EC 03E00008 */ jr $ra -/* 0114F0 700108F0 ACA40008 */ sw $a0, 8($a1) - -glabel __osPopThread -/* 0114F4 700108F4 8C820000 */ lw $v0, ($a0) -/* 0114F8 700108F8 8C590000 */ lw $t9, ($v0) -/* 0114FC 700108FC 03E00008 */ jr $ra -/* 011500 70010900 AC990000 */ sw $t9, ($a0) - -glabel __osDispatchThread -/* 011504 70010904 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 011508 70010908 0C00423D */ jal __osPopThread -/* 01150C 7001090C 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -/* 011510 70010910 3C018002 */ lui $at, %hi(__osRunningThread) -/* 011514 70010914 AC227730 */ sw $v0, %lo(__osRunningThread)($at) -/* 011518 70010918 24080004 */ li $t0, 4 -/* 01151C 7001091C A4480010 */ sh $t0, 0x10($v0) -/* 011520 70010920 0040D025 */ move $k0, $v0 -glabel __osDispatchThreadSave -/* 011524 70010924 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) -/* 011528 70010928 8F5B0118 */ lw $k1, 0x118($k0) -/* 01152C 7001092C 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c -/* 011530 70010930 8D080000 */ lw $t0, ($t0) -/* 011534 70010934 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff -/* 011538 70010938 3369FF00 */ andi $t1, $k1, 0xff00 -/* 01153C 7001093C 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff -/* 011540 70010940 3108FF00 */ andi $t0, $t0, 0xff00 -/* 011544 70010944 01284824 */ and $t1, $t1, $t0 -/* 011548 70010948 0361D824 */ and $k1, $k1, $at -/* 01154C 7001094C 0369D825 */ or $k1, $k1, $t1 -/* 011550 70010950 409B6000 */ mtc0 $k1, $12 -/* 011554 70010954 DF5B0108 */ ld $k1, 0x108($k0) -/* 011558 70010958 DF410020 */ ld $at, 0x20($k0) -/* 01155C 7001095C DF420028 */ ld $v0, 0x28($k0) -/* 011560 70010960 03600013 */ mtlo $k1 -/* 011564 70010964 DF5B0110 */ ld $k1, 0x110($k0) -/* 011568 70010968 DF430030 */ ld $v1, 0x30($k0) -/* 01156C 7001096C DF440038 */ ld $a0, 0x38($k0) -/* 011570 70010970 DF450040 */ ld $a1, 0x40($k0) -/* 011574 70010974 DF460048 */ ld $a2, 0x48($k0) -/* 011578 70010978 DF470050 */ ld $a3, 0x50($k0) -/* 01157C 7001097C DF480058 */ ld $t0, 0x58($k0) -/* 011580 70010980 DF490060 */ ld $t1, 0x60($k0) -/* 011584 70010984 DF4A0068 */ ld $t2, 0x68($k0) -/* 011588 70010988 DF4B0070 */ ld $t3, 0x70($k0) -/* 01158C 7001098C DF4C0078 */ ld $t4, 0x78($k0) -/* 011590 70010990 DF4D0080 */ ld $t5, 0x80($k0) -/* 011594 70010994 DF4E0088 */ ld $t6, 0x88($k0) -/* 011598 70010998 DF4F0090 */ ld $t7, 0x90($k0) -/* 01159C 7001099C DF500098 */ ld $s0, 0x98($k0) -/* 0115A0 700109A0 DF5100A0 */ ld $s1, 0xa0($k0) -/* 0115A4 700109A4 DF5200A8 */ ld $s2, 0xa8($k0) -/* 0115A8 700109A8 DF5300B0 */ ld $s3, 0xb0($k0) -/* 0115AC 700109AC DF5400B8 */ ld $s4, 0xb8($k0) -/* 0115B0 700109B0 DF5500C0 */ ld $s5, 0xc0($k0) -/* 0115B4 700109B4 DF5600C8 */ ld $s6, 0xc8($k0) -/* 0115B8 700109B8 DF5700D0 */ ld $s7, 0xd0($k0) -/* 0115BC 700109BC DF5800D8 */ ld $t8, 0xd8($k0) -/* 0115C0 700109C0 DF5900E0 */ ld $t9, 0xe0($k0) -/* 0115C4 700109C4 DF5C00E8 */ ld $gp, 0xe8($k0) -/* 0115C8 700109C8 03600011 */ mthi $k1 -/* 0115CC 700109CC DF5D00F0 */ ld $sp, 0xf0($k0) -/* 0115D0 700109D0 DF5E00F8 */ ld $fp, 0xf8($k0) -/* 0115D4 700109D4 DF5F0100 */ ld $ra, 0x100($k0) -/* 0115D8 700109D8 8F5B011C */ lw $k1, 0x11c($k0) -/* 0115DC 700109DC 409B7000 */ mtc0 $k1, $14 -/* 0115E0 700109E0 8F5B0018 */ lw $k1, 0x18($k0) -/* 0115E4 700109E4 13600013 */ beqz $k1, .L70010A34 -/* 0115E8 700109E8 00000000 */ nop -/* 0115EC 700109EC 8F5B012C */ lw $k1, 0x12c($k0) -/* 0115F0 700109F0 44DBF800 */ ctc1 $k1, $31 -/* 0115F4 700109F4 D7400130 */ ldc1 $f0, 0x130($k0) -/* 0115F8 700109F8 D7420138 */ ldc1 $f2, 0x138($k0) -/* 0115FC 700109FC D7440140 */ ldc1 $f4, 0x140($k0) -/* 011600 70010A00 D7460148 */ ldc1 $f6, 0x148($k0) -/* 011604 70010A04 D7480150 */ ldc1 $f8, 0x150($k0) -/* 011608 70010A08 D74A0158 */ ldc1 $f10, 0x158($k0) -/* 01160C 70010A0C D74C0160 */ ldc1 $f12, 0x160($k0) -/* 011610 70010A10 D74E0168 */ ldc1 $f14, 0x168($k0) -/* 011614 70010A14 D7500170 */ ldc1 $f16, 0x170($k0) -/* 011618 70010A18 D7520178 */ ldc1 $f18, 0x178($k0) -/* 01161C 70010A1C D7540180 */ ldc1 $f20, 0x180($k0) -/* 011620 70010A20 D7560188 */ ldc1 $f22, 0x188($k0) -/* 011624 70010A24 D7580190 */ ldc1 $f24, 0x190($k0) -/* 011628 70010A28 D75A0198 */ ldc1 $f26, 0x198($k0) -/* 01162C 70010A2C D75C01A0 */ ldc1 $f28, 0x1a0($k0) -/* 011630 70010A30 D75E01A8 */ ldc1 $f30, 0x1a8($k0) -.L70010A34: -/* 011634 70010A34 8F5B0128 */ lw $k1, 0x128($k0) -/* 011638 70010A38 3C1A8002 */ lui $k0, %hi(__OSGlobalIntMask) # $k0, 0x8002 -/* 01163C 70010A3C 275A698C */ addiu $k0, %lo(__OSGlobalIntMask) # addiu $k0, $k0, 0x698c -/* 011640 70010A40 8F5A0000 */ lw $k0, ($k0) -/* 011644 70010A44 001AD402 */ srl $k0, $k0, 0x10 -/* 011648 70010A48 037AD824 */ and $k1, $k1, $k0 -/* 01164C 70010A4C 001BD840 */ sll $k1, $k1, 1 -/* 011650 70010A50 3C1A8003 */ lui $k0, %hi(__osRcpImTable) # $k0, 0x8003 -/* 011654 70010A54 275A93A0 */ addiu $k0, %lo(__osRcpImTable) # addiu $k0, $k0, -0x6c60 -/* 011658 70010A58 037AD821 */ addu $k1, $k1, $k0 -/* 01165C 70010A5C 977B0000 */ lhu $k1, ($k1) -/* 011660 70010A60 3C1AA430 */ lui $k0, %hi(MI_INTR_MASK_REG) # $k0, 0xa430 -/* 011664 70010A64 275A000C */ addiu $k0, %lo(MI_INTR_MASK_REG) # addiu $k0, $k0, 0xc -/* 011668 70010A68 AF5B0000 */ sw $k1, ($k0) -/* 01166C 70010A6C 00000000 */ nop -/* 011670 70010A70 00000000 */ nop -/* 011674 70010A74 00000000 */ nop -/* 011678 70010A78 00000000 */ nop -/* 01167C 70010A7C 42000018 */ eret -glabel __osCleanupThread -/* 011680 70010A80 0C006ED8 */ jal osDestroyThread -/* 011684 70010A84 00002025 */ move $a0, $zero -/* 011688 70010A88 00000000 */ nop -/* 01168C 70010A8C 00000000 */ nop - -.section .data -/*80027704*/ -glabel __osHwIntTable -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 - -.section .rodata -/*80029440*/ -glabel __osIntOffTable -.byte 0,0x14,0x18,0x18,0x1C,0x1C,0x1C,0x1C -.byte 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 -.byte 0, 4, 8, 8, 0xC, 0xC, 0xC, 0xC -.byte 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 - -/*80029460*/ -glabel __osIntTable -.word redispatch -.word swl -.word sw2 -.word rcp -.word cart -.word prenmi -.word IP6_Hdlr -.word IP7_Hdlr -.word counter - - -.section .text -glabel __osDequeueThread -/* 011690 70010A90 00803025 */ move $a2, $a0 -/* 011694 70010A94 8CC70000 */ lw $a3, ($a2) -/* 011698 70010A98 27BDFFF8 */ addiu $sp, $sp, -8 -/* 01169C 70010A9C 10E0000A */ beqz $a3, .L70010AC8 -/* 0116A0 70010AA0 00000000 */ nop -.L70010AA4: -/* 0116A4 70010AA4 14E50004 */ bne $a3, $a1, .L70010AB8 -/* 0116A8 70010AA8 00000000 */ nop -/* 0116AC 70010AAC 8CAE0000 */ lw $t6, ($a1) -/* 0116B0 70010AB0 10000005 */ b .L70010AC8 -/* 0116B4 70010AB4 ACCE0000 */ sw $t6, ($a2) -.L70010AB8: -/* 0116B8 70010AB8 00E03025 */ move $a2, $a3 -/* 0116BC 70010ABC 8CC70000 */ lw $a3, ($a2) -/* 0116C0 70010AC0 14E0FFF8 */ bnez $a3, .L70010AA4 -/* 0116C4 70010AC4 00000000 */ nop -.L70010AC8: -/* 0116C8 70010AC8 03E00008 */ jr $ra -/* 0116CC 70010ACC 27BD0008 */ addiu $sp, $sp, 8 - -.section .data -glabel __osThreadTail -.word 0, 0xFFFFFFFF -glabel __osRunQueue - .word __osThreadTail -glabel __osActiveQueue -.word __osThreadTail -glabel __osRunningThread -.word 0 -glabel __osFaultedThread -.word 0 -.align 4 - -.section .text -glabel osYieldThread -/* 0116D0 70010AD0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0116D4 70010AD4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0116D8 70010AD8 0C00617C */ jal __osDisableInt -/* 0116DC 70010ADC AFB00018 */ sw $s0, 0x18($sp) -/* 0116E0 70010AE0 3C0F8002 */ lui $t7, %hi(__osRunningThread) -/* 0116E4 70010AE4 8DEF7730 */ lw $t7, %lo(__osRunningThread)($t7) -/* 0116E8 70010AE8 240E0002 */ li $t6, 2 -/* 0116EC 70010AEC 3C048002 */ lui $a0, %hi(__osRunQueue) -/* 0116F0 70010AF0 00408025 */ move $s0, $v0 -/* 0116F4 70010AF4 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 -/* 0116F8 70010AF8 0C0041EB */ jal __osEnqueueAndYield -/* 0116FC 70010AFC A5EE0010 */ sh $t6, 0x10($t7) -/* 011700 70010B00 0C006184 */ jal __osRestoreInt -/* 011704 70010B04 02002025 */ move $a0, $s0 -/* 011708 70010B08 8FBF001C */ lw $ra, 0x1c($sp) -/* 01170C 70010B0C 8FB00018 */ lw $s0, 0x18($sp) -/* 011710 70010B10 27BD0028 */ addiu $sp, $sp, 0x28 -/* 011714 70010B14 03E00008 */ jr $ra -/* 011718 70010B18 00000000 */ nop - -/* 01171C 70010B1C 00000000 */ nop -glabel osInvalDCache -/* 011720 70010B20 18A0001F */ blez $a1, .L70010BA0 -/* 011724 70010B24 00000000 */ nop -/* 011728 70010B28 240B2000 */ li $t3, 8192 -/* 01172C 70010B2C 00AB082B */ sltu $at, $a1, $t3 -/* 011730 70010B30 1020001D */ beqz $at, .L70010BA8 -/* 011734 70010B34 00000000 */ nop -/* 011738 70010B38 00804025 */ move $t0, $a0 -/* 01173C 70010B3C 00854821 */ addu $t1, $a0, $a1 -/* 011740 70010B40 0109082B */ sltu $at, $t0, $t1 -/* 011744 70010B44 10200016 */ beqz $at, .L70010BA0 -/* 011748 70010B48 00000000 */ nop -/* 01174C 70010B4C 310A000F */ andi $t2, $t0, 0xf -/* 011750 70010B50 11400007 */ beqz $t2, .L70010B70 -/* 011754 70010B54 2529FFF0 */ addiu $t1, $t1, -0x10 -/* 011758 70010B58 010A4023 */ subu $t0, $t0, $t2 -/* 01175C 70010B5C BD150000 */ cache 0x15, ($t0) -/* 011760 70010B60 0109082B */ sltu $at, $t0, $t1 -/* 011764 70010B64 1020000E */ beqz $at, .L70010BA0 -/* 011768 70010B68 00000000 */ nop -/* 01176C 70010B6C 25080010 */ addiu $t0, $t0, 0x10 -.L70010B70: -/* 011770 70010B70 312A000F */ andi $t2, $t1, 0xf -/* 011774 70010B74 11400006 */ beqz $t2, .L70010B90 -/* 011778 70010B78 00000000 */ nop -/* 01177C 70010B7C 012A4823 */ subu $t1, $t1, $t2 -/* 011780 70010B80 BD350010 */ cache 0x15, 0x10($t1) -/* 011784 70010B84 0128082B */ sltu $at, $t1, $t0 -/* 011788 70010B88 14200005 */ bnez $at, .L70010BA0 -/* 01178C 70010B8C 00000000 */ nop -.L70010B90: -/* 011790 70010B90 BD110000 */ cache 0x11, ($t0) -/* 011794 70010B94 0109082B */ sltu $at, $t0, $t1 -/* 011798 70010B98 1420FFFD */ bnez $at, .L70010B90 -/* 01179C 70010B9C 25080010 */ addiu $t0, $t0, 0x10 -.L70010BA0: -/* 0117A0 70010BA0 03E00008 */ jr $ra -/* 0117A4 70010BA4 00000000 */ nop - -.L70010BA8: -/* 0117A8 70010BA8 3C088000 */ lui $t0, 0x8000 -/* 0117AC 70010BAC 010B4821 */ addu $t1, $t0, $t3 -/* 0117B0 70010BB0 2529FFF0 */ addiu $t1, $t1, -0x10 -.L70010BB4: -/* 0117B4 70010BB4 BD010000 */ cache 1, ($t0) -/* 0117B8 70010BB8 0109082B */ sltu $at, $t0, $t1 -/* 0117BC 70010BBC 1420FFFD */ bnez $at, .L70010BB4 -/* 0117C0 70010BC0 25080010 */ addiu $t0, $t0, 0x10 -/* 0117C4 70010BC4 03E00008 */ jr $ra -/* 0117C8 70010BC8 00000000 */ nop - -/* 0117CC 70010BCC 00000000 */ nop -glabel osWritebackDCache -/* 0117D0 70010BD0 18A00011 */ blez $a1, .L70010C18 -/* 0117D4 70010BD4 00000000 */ nop -/* 0117D8 70010BD8 240B2000 */ li $t3, 8192 -/* 0117DC 70010BDC 00AB082B */ sltu $at, $a1, $t3 -/* 0117E0 70010BE0 1020000F */ beqz $at, .L70010C20 -/* 0117E4 70010BE4 00000000 */ nop -/* 0117E8 70010BE8 00804025 */ move $t0, $a0 -/* 0117EC 70010BEC 00854821 */ addu $t1, $a0, $a1 -/* 0117F0 70010BF0 0109082B */ sltu $at, $t0, $t1 -/* 0117F4 70010BF4 10200008 */ beqz $at, .L70010C18 -/* 0117F8 70010BF8 00000000 */ nop -/* 0117FC 70010BFC 310A000F */ andi $t2, $t0, 0xf -/* 011800 70010C00 2529FFF0 */ addiu $t1, $t1, -0x10 -/* 011804 70010C04 010A4023 */ subu $t0, $t0, $t2 -.L70010C08: -/* 011808 70010C08 BD190000 */ cache 0x19, ($t0) -/* 01180C 70010C0C 0109082B */ sltu $at, $t0, $t1 -/* 011810 70010C10 1420FFFD */ bnez $at, .L70010C08 -/* 011814 70010C14 25080010 */ addiu $t0, $t0, 0x10 -.L70010C18: -/* 011818 70010C18 03E00008 */ jr $ra -/* 01181C 70010C1C 00000000 */ nop - -.L70010C20: -/* 011820 70010C20 3C088000 */ lui $t0, 0x8000 -/* 011824 70010C24 010B4821 */ addu $t1, $t0, $t3 -/* 011828 70010C28 2529FFF0 */ addiu $t1, $t1, -0x10 -.L70010C2C: -/* 01182C 70010C2C BD010000 */ cache 1, ($t0) -/* 011830 70010C30 0109082B */ sltu $at, $t0, $t1 -/* 011834 70010C34 1420FFFD */ bnez $at, .L70010C2C -/* 011838 70010C38 25080010 */ addiu $t0, $t0, 0x10 -/* 01183C 70010C3C 03E00008 */ jr $ra -/* 011840 70010C40 00000000 */ nop - -/* 011844 70010C44 00000000 */ nop -/* 011848 70010C48 00000000 */ nop -/* 01184C 70010C4C 00000000 */ nop - - -glabel osSetTimer -/* 011850 70010C50 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 011854 70010C54 AFA40020 */ sw $a0, 0x20($sp) -/* 011858 70010C58 8FAE0020 */ lw $t6, 0x20($sp) -/* 01185C 70010C5C AFBF0014 */ sw $ra, 0x14($sp) -/* 011860 70010C60 AFA60028 */ sw $a2, 0x28($sp) -/* 011864 70010C64 AFA7002C */ sw $a3, 0x2c($sp) -/* 011868 70010C68 ADC00000 */ sw $zero, ($t6) -/* 01186C 70010C6C 8FAF0020 */ lw $t7, 0x20($sp) -/* 011870 70010C70 ADE00004 */ sw $zero, 4($t7) -/* 011874 70010C74 8FA80020 */ lw $t0, 0x20($sp) -/* 011878 70010C78 8FB90034 */ lw $t9, 0x34($sp) -/* 01187C 70010C7C 8FB80030 */ lw $t8, 0x30($sp) -/* 011880 70010C80 AD19000C */ sw $t9, 0xc($t0) -/* 011884 70010C84 AD180008 */ sw $t8, 8($t0) -/* 011888 70010C88 8FAA0028 */ lw $t2, 0x28($sp) -/* 01188C 70010C8C 8FAB002C */ lw $t3, 0x2c($sp) -/* 011890 70010C90 15400003 */ bnez $t2, .L70010CA0 -/* 011894 70010C94 00000000 */ nop -/* 011898 70010C98 11600005 */ beqz $t3, .L70010CB0 -/* 01189C 70010C9C 00000000 */ nop -.L70010CA0: -/* 0118A0 70010CA0 8FA90020 */ lw $t1, 0x20($sp) -/* 0118A4 70010CA4 AD2A0010 */ sw $t2, 0x10($t1) -/* 0118A8 70010CA8 10000006 */ b .L70010CC4 -/* 0118AC 70010CAC AD2B0014 */ sw $t3, 0x14($t1) -.L70010CB0: -/* 0118B0 70010CB0 8FAE0020 */ lw $t6, 0x20($sp) -/* 0118B4 70010CB4 8FAC0030 */ lw $t4, 0x30($sp) -/* 0118B8 70010CB8 8FAD0034 */ lw $t5, 0x34($sp) -/* 0118BC 70010CBC ADCC0010 */ sw $t4, 0x10($t6) -/* 0118C0 70010CC0 ADCD0014 */ sw $t5, 0x14($t6) -.L70010CC4: -/* 0118C4 70010CC4 8FAF0038 */ lw $t7, 0x38($sp) -/* 0118C8 70010CC8 8FB80020 */ lw $t8, 0x20($sp) -/* 0118CC 70010CCC AF0F0018 */ sw $t7, 0x18($t8) -/* 0118D0 70010CD0 8FA80020 */ lw $t0, 0x20($sp) -/* 0118D4 70010CD4 8FB9003C */ lw $t9, 0x3c($sp) -/* 0118D8 70010CD8 AD19001C */ sw $t9, 0x1c($t0) -/* 0118DC 70010CDC 0C00622A */ jal __osInsertTimer -/* 0118E0 70010CE0 8FA40020 */ lw $a0, 0x20($sp) -/* 0118E4 70010CE4 3C0A8002 */ lui $t2, %hi(__osTimerList) -/* 0118E8 70010CE8 8D4A7FD0 */ lw $t2, %lo(__osTimerList)($t2) -/* 0118EC 70010CEC AFA20018 */ sw $v0, 0x18($sp) -/* 0118F0 70010CF0 AFA3001C */ sw $v1, 0x1c($sp) -/* 0118F4 70010CF4 8FA90020 */ lw $t1, 0x20($sp) -/* 0118F8 70010CF8 8D4B0000 */ lw $t3, ($t2) -/* 0118FC 70010CFC 15690004 */ bne $t3, $t1, .L70010D10 -/* 011900 70010D00 00000000 */ nop -/* 011904 70010D04 8FA40018 */ lw $a0, 0x18($sp) -/* 011908 70010D08 0C00620D */ jal __osSetTimerIntr -/* 01190C 70010D0C 8FA5001C */ lw $a1, 0x1c($sp) -.L70010D10: -/* 011910 70010D10 8FBF0014 */ lw $ra, 0x14($sp) -/* 011914 70010D14 27BD0020 */ addiu $sp, $sp, 0x20 -/* 011918 70010D18 00001025 */ move $v0, $zero -/* 01191C 70010D1C 03E00008 */ jr $ra -/* 011920 70010D20 00000000 */ nop - -/* 011924 70010D24 00000000 */ nop -/* 011928 70010D28 00000000 */ nop -/* 01192C 70010D2C 00000000 */ nop -glabel alHeapInit -/* 011930 70010D30 24030010 */ li $v1, 16 -/* 011934 70010D34 30AE000F */ andi $t6, $a1, 0xf -/* 011938 70010D38 006E1023 */ subu $v0, $v1, $t6 -/* 01193C 70010D3C 10620003 */ beq $v1, $v0, .L70010D4C -/* 011940 70010D40 00A27821 */ addu $t7, $a1, $v0 -/* 011944 70010D44 10000002 */ b .L70010D50 -/* 011948 70010D48 AC8F0000 */ sw $t7, ($a0) -.L70010D4C: -/* 01194C 70010D4C AC850000 */ sw $a1, ($a0) -.L70010D50: -/* 011950 70010D50 8C980000 */ lw $t8, ($a0) -/* 011954 70010D54 AC860008 */ sw $a2, 8($a0) -/* 011958 70010D58 AC80000C */ sw $zero, 0xc($a0) -/* 01195C 70010D5C 03E00008 */ jr $ra -/* 011960 70010D60 AC980004 */ sw $t8, 4($a0) - -/* 011964 70010D64 00000000 */ nop -/* 011968 70010D68 00000000 */ nop -/* 01196C 70010D6C 00000000 */ nop -/* 011970 70010D70 03E00008 */ jr $ra -/* 011974 70010D74 00000000 */ nop - -/* 011978 70010D78 03E00008 */ jr $ra -/* 01197C 70010D7C 00000000 */ nop - -glabel ultra_70010D80 -/* 011980 70010D80 908E0003 */ lbu $t6, 3($a0) -/* 011984 70010D84 15C00037 */ bnez $t6, .L70010E64 -/* 011988 70010D88 00000000 */ nop -/* 01198C 70010D8C 848F000E */ lh $t7, 0xe($a0) -/* 011990 70010D90 24090001 */ li $t1, 1 -/* 011994 70010D94 A0890003 */ sb $t1, 3($a0) -/* 011998 70010D98 19E00032 */ blez $t7, .L70010E64 -/* 01199C 70010D9C 00001025 */ move $v0, $zero -/* 0119A0 70010DA0 00801825 */ move $v1, $a0 -/* 0119A4 70010DA4 240A0001 */ li $t2, 1 -/* 0119A8 70010DA8 8C780010 */ lw $t8, 0x10($v1) -.L70010DAC: -/* 0119AC 70010DAC 0305C821 */ addu $t9, $t8, $a1 -/* 0119B0 70010DB0 AC790010 */ sw $t9, 0x10($v1) -/* 0119B4 70010DB4 932E000E */ lbu $t6, 0xe($t9) -/* 0119B8 70010DB8 03203025 */ move $a2, $t9 -/* 0119BC 70010DBC 55C00024 */ bnezl $t6, .L70010E50 -/* 0119C0 70010DC0 8498000E */ lh $t8, 0xe($a0) -/* 0119C4 70010DC4 8F2F0000 */ lw $t7, ($t9) -/* 0119C8 70010DC8 A329000E */ sb $t1, 0xe($t9) -/* 0119CC 70010DCC 01E5C021 */ addu $t8, $t7, $a1 -/* 0119D0 70010DD0 AF380000 */ sw $t8, ($t9) -/* 0119D4 70010DD4 8F390004 */ lw $t9, 4($t9) -/* 0119D8 70010DD8 8CCF0008 */ lw $t7, 8($a2) -/* 0119DC 70010DDC 03257021 */ addu $t6, $t9, $a1 -/* 0119E0 70010DE0 01E5C021 */ addu $t8, $t7, $a1 -/* 0119E4 70010DE4 ACCE0004 */ sw $t6, 4($a2) -/* 0119E8 70010DE8 ACD80008 */ sw $t8, 8($a2) -/* 0119EC 70010DEC 93190009 */ lbu $t9, 9($t8) -/* 0119F0 70010DF0 03004025 */ move $t0, $t8 -/* 0119F4 70010DF4 57200016 */ bnezl $t9, .L70010E50 -/* 0119F8 70010DF8 8498000E */ lh $t8, 0xe($a0) -/* 0119FC 70010DFC 8F0E0000 */ lw $t6, ($t8) -/* 011A00 70010E00 93060008 */ lbu $a2, 8($t8) -/* 011A04 70010E04 A3090009 */ sb $t1, 9($t8) -/* 011A08 70010E08 01C77821 */ addu $t7, $t6, $a3 -/* 011A0C 70010E0C 14C00009 */ bnez $a2, .L70010E34 -/* 011A10 70010E10 AF0F0000 */ sw $t7, ($t8) -/* 011A14 70010E14 8F180010 */ lw $t8, 0x10($t8) -/* 011A18 70010E18 8D06000C */ lw $a2, 0xc($t0) -/* 011A1C 70010E1C 0305C821 */ addu $t9, $t8, $a1 -/* 011A20 70010E20 10C0000A */ beqz $a2, .L70010E4C -/* 011A24 70010E24 AD190010 */ sw $t9, 0x10($t0) -/* 011A28 70010E28 00C57021 */ addu $t6, $a2, $a1 -/* 011A2C 70010E2C 10000007 */ b .L70010E4C -/* 011A30 70010E30 AD0E000C */ sw $t6, 0xc($t0) -.L70010E34: -/* 011A34 70010E34 55460006 */ bnel $t2, $a2, .L70010E50 -/* 011A38 70010E38 8498000E */ lh $t8, 0xe($a0) -/* 011A3C 70010E3C 8D06000C */ lw $a2, 0xc($t0) -/* 011A40 70010E40 10C00002 */ beqz $a2, .L70010E4C -/* 011A44 70010E44 00C57821 */ addu $t7, $a2, $a1 -/* 011A48 70010E48 AD0F000C */ sw $t7, 0xc($t0) -.L70010E4C: -/* 011A4C 70010E4C 8498000E */ lh $t8, 0xe($a0) -.L70010E50: -/* 011A50 70010E50 24420001 */ addiu $v0, $v0, 1 -/* 011A54 70010E54 24630004 */ addiu $v1, $v1, 4 -/* 011A58 70010E58 0058082A */ slt $at, $v0, $t8 -/* 011A5C 70010E5C 5420FFD3 */ bnezl $at, .L70010DAC -/* 011A60 70010E60 8C780010 */ lw $t8, 0x10($v1) -.L70010E64: -/* 011A64 70010E64 03E00008 */ jr $ra -/* 011A68 70010E68 00000000 */ nop - -/* 011A6C 70010E6C 03E00008 */ jr $ra -/* 011A70 70010E70 00000000 */ nop - -glabel alBnkfNew -/* 011A74 70010E74 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 011A78 70010E78 AFBF002C */ sw $ra, 0x2c($sp) -/* 011A7C 70010E7C AFB40028 */ sw $s4, 0x28($sp) -/* 011A80 70010E80 AFB30024 */ sw $s3, 0x24($sp) -/* 011A84 70010E84 AFB20020 */ sw $s2, 0x20($sp) -/* 011A88 70010E88 AFB1001C */ sw $s1, 0x1c($sp) -/* 011A8C 70010E8C AFB00018 */ sw $s0, 0x18($sp) -/* 011A90 70010E90 848E0000 */ lh $t6, ($a0) -/* 011A94 70010E94 24014231 */ li $at, 16945 -/* 011A98 70010E98 00808025 */ move $s0, $a0 -/* 011A9C 70010E9C 15C1002E */ bne $t6, $at, .L70010F58 -/* 011AA0 70010EA0 00A08825 */ move $s1, $a1 -/* 011AA4 70010EA4 848F0002 */ lh $t7, 2($a0) -/* 011AA8 70010EA8 00009825 */ move $s3, $zero -/* 011AAC 70010EAC 00809025 */ move $s2, $a0 -/* 011AB0 70010EB0 19E00029 */ blez $t7, .L70010F58 -/* 011AB4 70010EB4 24140001 */ li $s4, 1 -/* 011AB8 70010EB8 8E580004 */ lw $t8, 4($s2) -.L70010EBC: -/* 011ABC 70010EBC 0310C821 */ addu $t9, $t8, $s0 -/* 011AC0 70010EC0 1320001F */ beqz $t9, .L70010F40 -/* 011AC4 70010EC4 AE590004 */ sw $t9, 4($s2) -/* 011AC8 70010EC8 932E0002 */ lbu $t6, 2($t9) -/* 011ACC 70010ECC 03206825 */ move $t5, $t9 -/* 011AD0 70010ED0 55C0001C */ bnezl $t6, .L70010F44 -/* 011AD4 70010ED4 86180002 */ lh $t8, 2($s0) -/* 011AD8 70010ED8 8F220008 */ lw $v0, 8($t9) -/* 011ADC 70010EDC A3340002 */ sb $s4, 2($t9) -/* 011AE0 70010EE0 00006025 */ move $t4, $zero -/* 011AE4 70010EE4 10400005 */ beqz $v0, .L70010EFC -/* 011AE8 70010EE8 00502021 */ addu $a0, $v0, $s0 -/* 011AEC 70010EEC AF240008 */ sw $a0, 8($t9) -/* 011AF0 70010EF0 02002825 */ move $a1, $s0 -/* 011AF4 70010EF4 0C004360 */ jal ultra_70010D80 -/* 011AF8 70010EF8 02203825 */ move $a3, $s1 -.L70010EFC: -/* 011AFC 70010EFC 85B80000 */ lh $t8, ($t5) -/* 011B00 70010F00 01A05825 */ move $t3, $t5 -/* 011B04 70010F04 5B00000F */ blezl $t8, .L70010F44 -/* 011B08 70010F08 86180002 */ lh $t8, 2($s0) -/* 011B0C 70010F0C 8D79000C */ lw $t9, 0xc($t3) -.L70010F10: -/* 011B10 70010F10 02002825 */ move $a1, $s0 -/* 011B14 70010F14 03302021 */ addu $a0, $t9, $s0 -/* 011B18 70010F18 10800003 */ beqz $a0, .L70010F28 -/* 011B1C 70010F1C AD64000C */ sw $a0, 0xc($t3) -/* 011B20 70010F20 0C004360 */ jal ultra_70010D80 -/* 011B24 70010F24 02203825 */ move $a3, $s1 -.L70010F28: -/* 011B28 70010F28 85AF0000 */ lh $t7, ($t5) -/* 011B2C 70010F2C 258C0001 */ addiu $t4, $t4, 1 -/* 011B30 70010F30 256B0004 */ addiu $t3, $t3, 4 -/* 011B34 70010F34 018F082A */ slt $at, $t4, $t7 -/* 011B38 70010F38 5420FFF5 */ bnezl $at, .L70010F10 -/* 011B3C 70010F3C 8D79000C */ lw $t9, 0xc($t3) -.L70010F40: -/* 011B40 70010F40 86180002 */ lh $t8, 2($s0) -.L70010F44: -/* 011B44 70010F44 26730001 */ addiu $s3, $s3, 1 -/* 011B48 70010F48 26520004 */ addiu $s2, $s2, 4 -/* 011B4C 70010F4C 0278082A */ slt $at, $s3, $t8 -/* 011B50 70010F50 5420FFDA */ bnezl $at, .L70010EBC -/* 011B54 70010F54 8E580004 */ lw $t8, 4($s2) -.L70010F58: -/* 011B58 70010F58 8FBF002C */ lw $ra, 0x2c($sp) -/* 011B5C 70010F5C 8FB00018 */ lw $s0, 0x18($sp) -/* 011B60 70010F60 8FB1001C */ lw $s1, 0x1c($sp) -/* 011B64 70010F64 8FB20020 */ lw $s2, 0x20($sp) -/* 011B68 70010F68 8FB30024 */ lw $s3, 0x24($sp) -/* 011B6C 70010F6C 8FB40028 */ lw $s4, 0x28($sp) -/* 011B70 70010F70 03E00008 */ jr $ra -/* 011B74 70010F74 27BD0030 */ addiu $sp, $sp, 0x30 - -glabel alSeqFileNew -/* 011B78 70010F78 848E0002 */ lh $t6, 2($a0) -/* 011B7C 70010F7C 00001025 */ move $v0, $zero -/* 011B80 70010F80 00801825 */ move $v1, $a0 -/* 011B84 70010F84 19C0000A */ blez $t6, .L70010FB0 -/* 011B88 70010F88 00000000 */ nop -/* 011B8C 70010F8C 8C6F0004 */ lw $t7, 4($v1) -.L70010F90: -/* 011B90 70010F90 24420001 */ addiu $v0, $v0, 1 -/* 011B94 70010F94 24630008 */ addiu $v1, $v1, 8 -/* 011B98 70010F98 01E5C021 */ addu $t8, $t7, $a1 -/* 011B9C 70010F9C AC78FFFC */ sw $t8, -4($v1) -/* 011BA0 70010FA0 84990002 */ lh $t9, 2($a0) -/* 011BA4 70010FA4 0059082A */ slt $at, $v0, $t9 -/* 011BA8 70010FA8 5420FFF9 */ bnezl $at, .L70010F90 -/* 011BAC 70010FAC 8C6F0004 */ lw $t7, 4($v1) -.L70010FB0: -/* 011BB0 70010FB0 03E00008 */ jr $ra -/* 011BB4 70010FB4 00000000 */ nop - -/* 011BB8 70010FB8 00000000 */ nop -/* 011BBC 70010FBC 00000000 */ nop -glabel __CSPPostNextSeqEvent -/* 011BC0 70010FC0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 011BC4 70010FC4 AFBF0014 */ sw $ra, 0x14($sp) -/* 011BC8 70010FC8 8C8E002C */ lw $t6, 0x2c($a0) -/* 011BCC 70010FCC 24010001 */ li $at, 1 -/* 011BD0 70010FD0 00803825 */ move $a3, $a0 -/* 011BD4 70010FD4 55C10013 */ bnel $t6, $at, .L70011024 -/* 011BD8 70010FD8 8FBF0014 */ lw $ra, 0x14($sp) -/* 011BDC 70010FDC 8C840018 */ lw $a0, 0x18($a0) -/* 011BE0 70010FE0 27A5001C */ addiu $a1, $sp, 0x1c -/* 011BE4 70010FE4 5080000F */ beql $a0, $zero, .L70011024 -/* 011BE8 70010FE8 8FBF0014 */ lw $ra, 0x14($sp) -/* 011BEC 70010FEC 0C004AE3 */ jal __alCSeqNextDelta -/* 011BF0 70010FF0 AFA70030 */ sw $a3, 0x30($sp) -/* 011BF4 70010FF4 1040000A */ beqz $v0, .L70011020 -/* 011BF8 70010FF8 8FA70030 */ lw $a3, 0x30($sp) -/* 011BFC 70010FFC A7A00020 */ sh $zero, 0x20($sp) -/* 011C00 70011000 8CEF0024 */ lw $t7, 0x24($a3) -/* 011C04 70011004 8FB8001C */ lw $t8, 0x1c($sp) -/* 011C08 70011008 24E40048 */ addiu $a0, $a3, 0x48 -/* 011C0C 7001100C 27A50020 */ addiu $a1, $sp, 0x20 -/* 011C10 70011010 01F80019 */ multu $t7, $t8 -/* 011C14 70011014 00003012 */ mflo $a2 -/* 011C18 70011018 0C004BBF */ jal alEvtqPostEvent -/* 011C1C 7001101C 00000000 */ nop -.L70011020: -/* 011C20 70011020 8FBF0014 */ lw $ra, 0x14($sp) -.L70011024: -/* 011C24 70011024 27BD0030 */ addiu $sp, $sp, 0x30 -/* 011C28 70011028 03E00008 */ jr $ra -/* 011C2C 7001102C 00000000 */ nop - -glabel ultra_70011030 -/* 011C30 70011030 8C820018 */ lw $v0, 0x18($a0) -/* 011C34 70011034 241801E8 */ li $t8, 488 -/* 011C38 70011038 50400008 */ beql $v0, $zero, .L7001105C -/* 011C3C 7001103C AC980024 */ sw $t8, 0x24($a0) -/* 011C40 70011040 C4440008 */ lwc1 $f4, 8($v0) -/* 011C44 70011044 46046182 */ mul.s $f6, $f12, $f4 -/* 011C48 70011048 4600320D */ trunc.w.s $f8, $f6 -/* 011C4C 7001104C 440F4000 */ mfc1 $t7, $f8 -/* 011C50 70011050 03E00008 */ jr $ra -/* 011C54 70011054 AC8F0024 */ sw $t7, 0x24($a0) - -/* 011C58 70011058 AC980024 */ sw $t8, 0x24($a0) -.L7001105C: -/* 011C5C 7001105C 03E00008 */ jr $ra -/* 011C60 70011060 00000000 */ nop - -/* 011C64 70011064 03E00008 */ jr $ra -/* 011C68 70011068 00000000 */ nop - -glabel ultra_7001106C -/* 011C6C 7001106C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 011C70 70011070 AFBF0014 */ sw $ra, 0x14($sp) -/* 011C74 70011074 90AE0008 */ lbu $t6, 8($a1) -/* 011C78 70011078 240100FF */ li $at, 255 -/* 011C7C 7001107C 00008025 */ move $s0, $zero -/* 011C80 70011080 15C1006A */ bne $t6, $at, .L7001122C -/* 011C84 70011084 00009825 */ move $s3, $zero -/* 011C88 70011088 90AF0009 */ lbu $t7, 9($a1) -/* 011C8C 7001108C 24010051 */ li $at, 81 -/* 011C90 70011090 24A20004 */ addiu $v0, $a1, 4 -/* 011C94 70011094 55E10066 */ bnel $t7, $at, .L70011230 -/* 011C98 70011098 8FBF0014 */ lw $ra, 0x14($sp) -/* 011C9C 7001109C 904E0008 */ lbu $t6, 8($v0) -/* 011CA0 700110A0 90580007 */ lbu $t8, 7($v0) -/* 011CA4 700110A4 8EFE0024 */ lw $fp, 0x24($s7) -/* 011CA8 700110A8 000E7A00 */ sll $t7, $t6, 8 -/* 011CAC 700110AC 904E0009 */ lbu $t6, 9($v0) -/* 011CB0 700110B0 0018CC00 */ sll $t9, $t8, 0x10 -/* 011CB4 700110B4 032FC025 */ or $t8, $t9, $t7 -/* 011CB8 700110B8 030E1825 */ or $v1, $t8, $t6 -/* 011CBC 700110BC 44832000 */ mtc1 $v1, $f4 -/* 011CC0 700110C0 02E02025 */ move $a0, $s7 -/* 011CC4 700110C4 0C00440C */ jal ultra_70011030 -/* 011CC8 700110C8 46802320 */ cvt.s.w $f12, $f4 -/* 011CCC 700110CC 8EF10050 */ lw $s1, 0x50($s7) -/* 011CD0 700110D0 1220001D */ beqz $s1, .L70011148 -/* 011CD4 700110D4 00000000 */ nop -/* 011CD8 700110D8 24140015 */ li $s4, 21 -.L700110DC: -/* 011CDC 700110DC 862F000C */ lh $t7, 0xc($s1) -/* 011CE0 700110E0 8E390008 */ lw $t9, 8($s1) -/* 011CE4 700110E4 8E320000 */ lw $s2, ($s1) -/* 011CE8 700110E8 168F0015 */ bne $s4, $t7, .L70011140 -/* 011CEC 700110EC 02198021 */ addu $s0, $s0, $t9 -/* 011CF0 700110F0 0C003AA4 */ jal alUnlink -/* 011CF4 700110F4 02202025 */ move $a0, $s1 -/* 011CF8 700110F8 52600007 */ beql $s3, $zero, .L70011118 -/* 011CFC 700110FC AE200000 */ sw $zero, ($s1) -/* 011D00 70011100 02202025 */ move $a0, $s1 -/* 011D04 70011104 0C003AB0 */ jal alLink -/* 011D08 70011108 02602825 */ move $a1, $s3 -/* 011D0C 7001110C 10000004 */ b .L70011120 -/* 011D10 70011110 00000000 */ nop -/* 011D14 70011114 AE200000 */ sw $zero, ($s1) -.L70011118: -/* 011D18 70011118 AE200004 */ sw $zero, 4($s1) -/* 011D1C 7001111C 02209825 */ move $s3, $s1 -.L70011120: -/* 011D20 70011120 12400006 */ beqz $s2, .L7001113C -/* 011D24 70011124 02001825 */ move $v1, $s0 -/* 011D28 70011128 8E220008 */ lw $v0, 8($s1) -/* 011D2C 7001112C 8E580008 */ lw $t8, 8($s2) -/* 011D30 70011130 02028023 */ subu $s0, $s0, $v0 -/* 011D34 70011134 03027021 */ addu $t6, $t8, $v0 -/* 011D38 70011138 AE4E0008 */ sw $t6, 8($s2) -.L7001113C: -/* 011D3C 7001113C AE230008 */ sw $v1, 8($s1) -.L70011140: -/* 011D40 70011140 1640FFE6 */ bnez $s2, .L700110DC -/* 011D44 70011144 02408825 */ move $s1, $s2 -.L70011148: -/* 011D48 70011148 12600038 */ beqz $s3, .L7001122C -/* 011D4C 7001114C 02608825 */ move $s1, $s3 -/* 011D50 70011150 26F40048 */ addiu $s4, $s7, 0x48 -/* 011D54 70011154 26950008 */ addiu $s5, $s4, 8 -/* 011D58 70011158 2416FFF8 */ li $s6, -8 -.L7001115C: -/* 011D5C 7001115C 8E390008 */ lw $t9, 8($s1) -/* 011D60 70011160 8EEF0024 */ lw $t7, 0x24($s7) -/* 011D64 70011164 8E320000 */ lw $s2, ($s1) -/* 011D68 70011168 033E001A */ div $zero, $t9, $fp -/* 011D6C 7001116C 00001012 */ mflo $v0 -/* 011D70 70011170 24040001 */ li $a0, 1 -/* 011D74 70011174 17C00002 */ bnez $fp, .L70011180 -/* 011D78 70011178 00000000 */ nop -/* 011D7C 7001117C 0007000D */ break 7 -.L70011180: -/* 011D80 70011180 2401FFFF */ li $at, -1 -/* 011D84 70011184 17C10004 */ bne $fp, $at, .L70011198 -/* 011D88 70011188 3C018000 */ lui $at, 0x8000 -/* 011D8C 7001118C 17210002 */ bne $t9, $at, .L70011198 -/* 011D90 70011190 00000000 */ nop -/* 011D94 70011194 0006000D */ break 6 -.L70011198: -/* 011D98 70011198 01E20019 */ multu $t7, $v0 -/* 011D9C 7001119C 02A08025 */ move $s0, $s5 -/* 011DA0 700111A0 0000C012 */ mflo $t8 -/* 011DA4 700111A4 AE380008 */ sw $t8, 8($s1) -/* 011DA8 700111A8 0C00374C */ jal osSetIntMask -/* 011DAC 700111AC 00000000 */ nop -/* 011DB0 700111B0 1296001A */ beq $s4, $s6, .L7001121C -/* 011DB4 700111B4 00409825 */ move $s3, $v0 -/* 011DB8 700111B8 8E040000 */ lw $a0, ($s0) -.L700111BC: -/* 011DBC 700111BC 54800007 */ bnezl $a0, .L700111DC -/* 011DC0 700111C0 8E220008 */ lw $v0, 8($s1) -/* 011DC4 700111C4 02202025 */ move $a0, $s1 -/* 011DC8 700111C8 0C003AB0 */ jal alLink -/* 011DCC 700111CC 02002825 */ move $a1, $s0 -/* 011DD0 700111D0 10000012 */ b .L7001121C -/* 011DD4 700111D4 00000000 */ nop -/* 011DD8 700111D8 8E220008 */ lw $v0, 8($s1) -.L700111DC: -/* 011DDC 700111DC 8C830008 */ lw $v1, 8($a0) -/* 011DE0 700111E0 00803025 */ move $a2, $a0 -/* 011DE4 700111E4 0043082A */ slt $at, $v0, $v1 -/* 011DE8 700111E8 10200008 */ beqz $at, .L7001120C -/* 011DEC 700111EC 0043C823 */ subu $t9, $v0, $v1 -/* 011DF0 700111F0 00627023 */ subu $t6, $v1, $v0 -/* 011DF4 700111F4 AC8E0008 */ sw $t6, 8($a0) -/* 011DF8 700111F8 02202025 */ move $a0, $s1 -/* 011DFC 700111FC 0C003AB0 */ jal alLink -/* 011E00 70011200 02002825 */ move $a1, $s0 -/* 011E04 70011204 10000005 */ b .L7001121C -/* 011E08 70011208 00000000 */ nop -.L7001120C: -/* 011E0C 7001120C AE390008 */ sw $t9, 8($s1) -/* 011E10 70011210 8E100000 */ lw $s0, ($s0) -/* 011E14 70011214 5600FFE9 */ bnezl $s0, .L700111BC -/* 011E18 70011218 8E040000 */ lw $a0, ($s0) -.L7001121C: -/* 011E1C 7001121C 0C00374C */ jal osSetIntMask -/* 011E20 70011220 02602025 */ move $a0, $s3 -/* 011E24 70011224 1640FFCD */ bnez $s2, .L7001115C -/* 011E28 70011228 02408825 */ move $s1, $s2 -.L7001122C: -/* 011E2C 7001122C 8FBF0014 */ lw $ra, 0x14($sp) -.L70011230: -/* 011E30 70011230 27BD0018 */ addiu $sp, $sp, 0x18 -/* 011E34 70011234 03E00008 */ jr $ra -/* 011E38 70011238 00000000 */ nop - -glabel __CSPHandleMIDIMsg -/* 011E3C 7001123C 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 011E40 70011240 AFBF0024 */ sw $ra, 0x24($sp) -/* 011E44 70011244 91160008 */ lbu $s6, 8($t0) -/* 011E48 70011248 91140009 */ lbu $s4, 9($t0) -/* 011E4C 7001124C 9111000A */ lbu $s1, 0xa($t0) -/* 011E50 70011250 32C300F0 */ andi $v1, $s6, 0xf0 -/* 011E54 70011254 246FFF80 */ addiu $t7, $v1, -0x80 -/* 011E58 70011258 2DE10061 */ sltiu $at, $t7, 0x61 -/* 011E5C 7001125C 32CE000F */ andi $t6, $s6, 0xf -/* 011E60 70011260 102001FC */ beqz $at, .L70011A54 -/* 011E64 70011264 01C0B025 */ move $s6, $t6 -/* 011E68 70011268 000F7880 */ sll $t7, $t7, 2 -/* 011E6C 7001126C 3C018003 */ lui $at, %hi(audio_related_jump_table_0) # 0x8003 -/* 011E70 70011270 002F0821 */ addu $at, $at, $t7 -/* 011E74 70011274 8C2F9490 */ lw $t7, %lo(audio_related_jump_table_0)($at) # -0x6b70 -/* 011E78 70011278 01E00008 */ jr $t7 -/* 011E7C 7001127C 00000000 */ nop -.L70011280: -/* 011E80 70011280 522000E8 */ beql $s1, $zero, .L70011624 -/* 011E84 70011284 02402025 */ move $a0, $s2 -/* 011E88 70011288 8E58002C */ lw $t8, 0x2c($s2) -/* 011E8C 7001128C 24010001 */ li $at, 1 -/* 011E90 70011290 02402025 */ move $a0, $s2 -/* 011E94 70011294 170101EF */ bne $t8, $at, .L70011A54 -/* 011E98 70011298 328500FF */ andi $a1, $s4, 0xff -/* 011E9C 7001129C 322600FF */ andi $a2, $s1, 0xff -/* 011EA0 700112A0 32C700FF */ andi $a3, $s6, 0xff -/* 011EA4 700112A4 0C0070D8 */ jal __lookupSoundQuick -/* 011EA8 700112A8 AFA800BC */ sw $t0, 0xbc($sp) -/* 011EAC 700112AC 104001E9 */ beqz $v0, .L70011A54 -/* 011EB0 700112B0 0040B825 */ move $s7, $v0 -/* 011EB4 700112B4 8E590060 */ lw $t9, 0x60($s2) -/* 011EB8 700112B8 0016F100 */ sll $fp, $s6, 4 -/* 011EBC 700112BC 02402025 */ move $a0, $s2 -/* 011EC0 700112C0 033E7021 */ addu $t6, $t9, $fp -/* 011EC4 700112C4 91CF0008 */ lbu $t7, 8($t6) -/* 011EC8 700112C8 A7A00076 */ sh $zero, 0x76($sp) -/* 011ECC 700112CC A3A00078 */ sb $zero, 0x78($sp) -/* 011ED0 700112D0 328500FF */ andi $a1, $s4, 0xff -/* 011ED4 700112D4 322600FF */ andi $a2, $s1, 0xff -/* 011ED8 700112D8 32C700FF */ andi $a3, $s6, 0xff -/* 011EDC 700112DC 0C0070BC */ jal __mapVoice -/* 011EE0 700112E0 A7AF0074 */ sh $t7, 0x74($sp) -/* 011EE4 700112E4 104001DB */ beqz $v0, .L70011A54 -/* 011EE8 700112E8 00408025 */ move $s0, $v0 -/* 011EEC 700112EC 8E440014 */ lw $a0, 0x14($s2) -/* 011EF0 700112F0 24450004 */ addiu $a1, $v0, 4 -/* 011EF4 700112F4 AFA50038 */ sw $a1, 0x38($sp) -/* 011EF8 700112F8 0C004C96 */ jal alSynAllocVoice -/* 011EFC 700112FC 27A60074 */ addiu $a2, $sp, 0x74 -/* 011F00 70011300 AE170020 */ sw $s7, 0x20($s0) -/* 011F04 70011304 A2000034 */ sb $zero, 0x34($s0) -/* 011F08 70011308 8E580060 */ lw $t8, 0x60($s2) -/* 011F0C 7001130C 24150002 */ li $s5, 2 -/* 011F10 70011310 031EC821 */ addu $t9, $t8, $fp -/* 011F14 70011314 932E000B */ lbu $t6, 0xb($t9) -/* 011F18 70011318 29C10040 */ slti $at, $t6, 0x40 -/* 011F1C 7001131C 54200004 */ bnezl $at, .L70011330 -/* 011F20 70011320 A2000035 */ sb $zero, 0x35($s0) -/* 011F24 70011324 10000002 */ b .L70011330 -/* 011F28 70011328 A2150035 */ sb $s5, 0x35($s0) -/* 011F2C 7001132C A2000035 */ sb $zero, 0x35($s0) -.L70011330: -/* 011F30 70011330 8EE20004 */ lw $v0, 4($s7) -/* 011F34 70011334 904F0004 */ lbu $t7, 4($v0) -/* 011F38 70011338 804E0005 */ lb $t6, 5($v0) -/* 011F3C 7001133C 028FC023 */ subu $t8, $s4, $t7 -/* 011F40 70011340 0018C880 */ sll $t9, $t8, 2 -/* 011F44 70011344 0338C823 */ subu $t9, $t9, $t8 -/* 011F48 70011348 0019C8C0 */ sll $t9, $t9, 3 -/* 011F4C 7001134C 0338C821 */ addu $t9, $t9, $t8 -/* 011F50 70011350 0019C880 */ sll $t9, $t9, 2 -/* 011F54 70011354 032E2021 */ addu $a0, $t9, $t6 -/* 011F58 70011358 00047C00 */ sll $t7, $a0, 0x10 -/* 011F5C 7001135C 0C004DF0 */ jal alCents2Ratio -/* 011F60 70011360 000F2403 */ sra $a0, $t7, 0x10 -/* 011F64 70011364 E6000028 */ swc1 $f0, 0x28($s0) -/* 011F68 70011368 8EF90000 */ lw $t9, ($s7) -/* 011F6C 7001136C 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 011F70 70011370 44812000 */ mtc1 $at, $f4 -/* 011F74 70011374 932E000C */ lbu $t6, 0xc($t9) -/* 011F78 70011378 A20E0030 */ sb $t6, 0x30($s0) -/* 011F7C 7001137C 8EF80000 */ lw $t8, ($s7) -/* 011F80 70011380 8E4F001C */ lw $t7, 0x1c($s2) -/* 011F84 70011384 8F190000 */ lw $t9, ($t8) -/* 011F88 70011388 A2000037 */ sb $zero, 0x37($s0) -/* 011F8C 7001138C 01F97021 */ addu $t6, $t7, $t9 -/* 011F90 70011390 AE0E0024 */ sw $t6, 0x24($s0) -/* 011F94 70011394 8E580060 */ lw $t8, 0x60($s2) -/* 011F98 70011398 031E7821 */ addu $t7, $t8, $fp -/* 011F9C 7001139C 8DF10000 */ lw $s1, ($t7) -/* 011FA0 700113A0 E7A40064 */ swc1 $f4, 0x64($sp) -/* 011FA4 700113A4 92260004 */ lbu $a2, 4($s1) -/* 011FA8 700113A8 50C0001A */ beql $a2, $zero, .L70011414 -/* 011FAC 700113AC 4458F800 */ cfc1 $t8, $31 -/* 011FB0 700113B0 8E420070 */ lw $v0, 0x70($s2) -/* 011FB4 700113B4 50400017 */ beql $v0, $zero, .L70011414 -/* 011FB8 700113B8 4458F800 */ cfc1 $t8, $31 -/* 011FBC 700113BC 92390006 */ lbu $t9, 6($s1) -/* 011FC0 700113C0 92270005 */ lbu $a3, 5($s1) -/* 011FC4 700113C4 27A4005C */ addiu $a0, $sp, 0x5c -/* 011FC8 700113C8 AFB90010 */ sw $t9, 0x10($sp) -/* 011FCC 700113CC 922E0007 */ lbu $t6, 7($s1) -/* 011FD0 700113D0 27A50064 */ addiu $a1, $sp, 0x64 -/* 011FD4 700113D4 0040F809 */ jalr $v0 -/* 011FD8 700113D8 AFAE0014 */ sw $t6, 0x14($sp) -/* 011FDC 700113DC 1040000C */ beqz $v0, .L70011410 -/* 011FE0 700113E0 24180016 */ li $t8, 22 -/* 011FE4 700113E4 8FAF005C */ lw $t7, 0x5c($sp) -/* 011FE8 700113E8 A7B8008C */ sh $t8, 0x8c($sp) -/* 011FEC 700113EC AFB00090 */ sw $s0, 0x90($sp) -/* 011FF0 700113F0 26440048 */ addiu $a0, $s2, 0x48 -/* 011FF4 700113F4 27A5008C */ addiu $a1, $sp, 0x8c -/* 011FF8 700113F8 00403025 */ move $a2, $v0 -/* 011FFC 700113FC 0C004BBF */ jal alEvtqPostEvent -/* 012000 70011400 AFAF0094 */ sw $t7, 0x94($sp) -/* 012004 70011404 92190037 */ lbu $t9, 0x37($s0) -/* 012008 70011408 372E0001 */ ori $t6, $t9, 1 -/* 01200C 7001140C A20E0037 */ sb $t6, 0x37($s0) -.L70011410: -/* 012010 70011410 4458F800 */ cfc1 $t8, $31 -.L70011414: -/* 012014 70011414 240F0001 */ li $t7, 1 -/* 012018 70011418 44CFF800 */ ctc1 $t7, $31 -/* 01201C 7001141C C7A60064 */ lwc1 $f6, 0x64($sp) -/* 012020 70011420 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 012024 70011424 46003224 */ cvt.w.s $f8, $f6 -/* 012028 70011428 444FF800 */ cfc1 $t7, $31 -/* 01202C 7001142C 00000000 */ nop -/* 012030 70011430 31EF0078 */ andi $t7, $t7, 0x78 -/* 012034 70011434 51E00013 */ beql $t7, $zero, .L70011484 -/* 012038 70011438 440F4000 */ mfc1 $t7, $f8 -/* 01203C 7001143C 44814000 */ mtc1 $at, $f8 -/* 012040 70011440 240F0001 */ li $t7, 1 -/* 012044 70011444 46083201 */ sub.s $f8, $f6, $f8 -/* 012048 70011448 44CFF800 */ ctc1 $t7, $31 -/* 01204C 7001144C 00000000 */ nop -/* 012050 70011450 46004224 */ cvt.w.s $f8, $f8 -/* 012054 70011454 444FF800 */ cfc1 $t7, $31 -/* 012058 70011458 00000000 */ nop -/* 01205C 7001145C 31EF0078 */ andi $t7, $t7, 0x78 -/* 012060 70011460 15E00005 */ bnez $t7, .L70011478 -/* 012064 70011464 00000000 */ nop -/* 012068 70011468 440F4000 */ mfc1 $t7, $f8 -/* 01206C 7001146C 3C018000 */ lui $at, 0x8000 -/* 012070 70011470 10000007 */ b .L70011490 -/* 012074 70011474 01E17825 */ or $t7, $t7, $at -.L70011478: -/* 012078 70011478 10000005 */ b .L70011490 -/* 01207C 7001147C 240FFFFF */ li $t7, -1 -/* 012080 70011480 440F4000 */ mfc1 $t7, $f8 -.L70011484: -/* 012084 70011484 00000000 */ nop -/* 012088 70011488 05E0FFFB */ bltz $t7, .L70011478 -/* 01208C 7001148C 00000000 */ nop -.L70011490: -/* 012090 70011490 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 012094 70011494 44815000 */ mtc1 $at, $f10 -/* 012098 70011498 A20F0036 */ sb $t7, 0x36($s0) -/* 01209C 7001149C 44D8F800 */ ctc1 $t8, $31 -/* 0120A0 700114A0 E7AA0064 */ swc1 $f10, 0x64($sp) -/* 0120A4 700114A4 92260008 */ lbu $a2, 8($s1) -/* 0120A8 700114A8 26550048 */ addiu $s5, $s2, 0x48 -/* 0120AC 700114AC 50C0001B */ beql $a2, $zero, .L7001151C -/* 0120B0 700114B0 C7A40064 */ lwc1 $f4, 0x64($sp) -/* 0120B4 700114B4 8E420070 */ lw $v0, 0x70($s2) -/* 0120B8 700114B8 50400018 */ beql $v0, $zero, .L7001151C -/* 0120BC 700114BC C7A40064 */ lwc1 $f4, 0x64($sp) -/* 0120C0 700114C0 9239000A */ lbu $t9, 0xa($s1) -/* 0120C4 700114C4 92270009 */ lbu $a3, 9($s1) -/* 0120C8 700114C8 27A4005C */ addiu $a0, $sp, 0x5c -/* 0120CC 700114CC AFB90010 */ sw $t9, 0x10($sp) -/* 0120D0 700114D0 922E000B */ lbu $t6, 0xb($s1) -/* 0120D4 700114D4 27A50064 */ addiu $a1, $sp, 0x64 -/* 0120D8 700114D8 0040F809 */ jalr $v0 -/* 0120DC 700114DC AFAE0014 */ sw $t6, 0x14($sp) -/* 0120E0 700114E0 1040000D */ beqz $v0, .L70011518 -/* 0120E4 700114E4 24180017 */ li $t8, 23 -/* 0120E8 700114E8 8FAF005C */ lw $t7, 0x5c($sp) -/* 0120EC 700114EC A7B8008C */ sh $t8, 0x8c($sp) -/* 0120F0 700114F0 AFB00090 */ sw $s0, 0x90($sp) -/* 0120F4 700114F4 A3B60098 */ sb $s6, 0x98($sp) -/* 0120F8 700114F8 02A02025 */ move $a0, $s5 -/* 0120FC 700114FC 27A5008C */ addiu $a1, $sp, 0x8c -/* 012100 70011500 00403025 */ move $a2, $v0 -/* 012104 70011504 0C004BBF */ jal alEvtqPostEvent -/* 012108 70011508 AFAF0094 */ sw $t7, 0x94($sp) -/* 01210C 7001150C 92190037 */ lbu $t9, 0x37($s0) -/* 012110 70011510 372E0002 */ ori $t6, $t9, 2 -/* 012114 70011514 A20E0037 */ sb $t6, 0x37($s0) -.L70011518: -/* 012118 70011518 C7A40064 */ lwc1 $f4, 0x64($sp) -.L7001151C: -/* 01211C 7001151C C6080028 */ lwc1 $f8, 0x28($s0) -/* 012120 70011520 02002025 */ move $a0, $s0 -/* 012124 70011524 E604002C */ swc1 $f4, 0x2c($s0) -/* 012128 70011528 8E580060 */ lw $t8, 0x60($s2) -/* 01212C 7001152C C604002C */ lwc1 $f4, 0x2c($s0) -/* 012130 70011530 02402825 */ move $a1, $s2 -/* 012134 70011534 031E1021 */ addu $v0, $t8, $fp -/* 012138 70011538 C446000C */ lwc1 $f6, 0xc($v0) -/* 01213C 7001153C 9051000A */ lbu $s1, 0xa($v0) -/* 012140 70011540 46083282 */ mul.s $f10, $f6, $f8 -/* 012144 70011544 00000000 */ nop -/* 012148 70011548 46045502 */ mul.s $f20, $f10, $f4 -/* 01214C 7001154C 0C00708D */ jal __vsPan -/* 012150 70011550 00000000 */ nop -/* 012154 70011554 305E00FF */ andi $fp, $v0, 0xff -/* 012158 70011558 02002025 */ move $a0, $s0 -/* 01215C 7001155C 0C006F85 */ jal __vsVol -/* 012160 70011560 02402825 */ move $a1, $s2 -/* 012164 70011564 8EEF0000 */ lw $t7, ($s7) -/* 012168 70011568 8E440014 */ lw $a0, 0x14($s2) -/* 01216C 7001156C 8EE60008 */ lw $a2, 8($s7) -/* 012170 70011570 8DF30000 */ lw $s3, ($t7) -/* 012174 70011574 4407A000 */ mfc1 $a3, $f20 -/* 012178 70011578 AFB10018 */ sw $s1, 0x18($sp) -/* 01217C 7001157C AFBE0014 */ sw $fp, 0x14($sp) -/* 012180 70011580 AFA20010 */ sw $v0, 0x10($sp) -/* 012184 70011584 8FA50038 */ lw $a1, 0x38($sp) -/* 012188 70011588 0C007568 */ jal alSynStartVoiceParams -/* 01218C 7001158C AFB3001C */ sw $s3, 0x1c($sp) -/* 012190 70011590 8FAE0038 */ lw $t6, 0x38($sp) -/* 012194 70011594 24190006 */ li $t9, 6 -/* 012198 70011598 A7B9008C */ sh $t9, 0x8c($sp) -/* 01219C 7001159C AFAE0090 */ sw $t6, 0x90($sp) -/* 0121A0 700115A0 8EF80000 */ lw $t8, ($s7) -/* 0121A4 700115A4 02A02025 */ move $a0, $s5 -/* 0121A8 700115A8 27A5008C */ addiu $a1, $sp, 0x8c -/* 0121AC 700115AC 930F000D */ lbu $t7, 0xd($t8) -/* 0121B0 700115B0 02603025 */ move $a2, $s3 -/* 0121B4 700115B4 A3AF0098 */ sb $t7, 0x98($sp) -/* 0121B8 700115B8 8EF90000 */ lw $t9, ($s7) -/* 0121BC 700115BC 8F2E0004 */ lw $t6, 4($t9) -/* 0121C0 700115C0 0C004BBF */ jal alEvtqPostEvent -/* 0121C4 700115C4 AFAE0094 */ sw $t6, 0x94($sp) -/* 0121C8 700115C8 8FA200BC */ lw $v0, 0xbc($sp) -/* 0121CC 700115CC 240F0015 */ li $t7, 21 -/* 0121D0 700115D0 36D90080 */ ori $t9, $s6, 0x80 -/* 0121D4 700115D4 8C58000C */ lw $t8, 0xc($v0) -/* 0121D8 700115D8 24420004 */ addiu $v0, $v0, 4 -/* 0121DC 700115DC 5300011E */ beql $t8, $zero, .L70011A58 -/* 0121E0 700115E0 8FBF0024 */ lw $ra, 0x24($sp) -/* 0121E4 700115E4 A7AF008C */ sh $t7, 0x8c($sp) -/* 0121E8 700115E8 A3B90094 */ sb $t9, 0x94($sp) -/* 0121EC 700115EC A3B40095 */ sb $s4, 0x95($sp) -/* 0121F0 700115F0 A3A00096 */ sb $zero, 0x96($sp) -/* 0121F4 700115F4 8C580008 */ lw $t8, 8($v0) -/* 0121F8 700115F8 8E4E0024 */ lw $t6, 0x24($s2) -/* 0121FC 700115FC 02A02025 */ move $a0, $s5 -/* 012200 70011600 27A5008C */ addiu $a1, $sp, 0x8c -/* 012204 70011604 01D80019 */ multu $t6, $t8 -/* 012208 70011608 00009812 */ mflo $s3 -/* 01220C 7001160C 02603025 */ move $a2, $s3 -/* 012210 70011610 0C004BBF */ jal alEvtqPostEvent -/* 012214 70011614 00000000 */ nop -/* 012218 70011618 1000010F */ b .L70011A58 -/* 01221C 7001161C 8FBF0024 */ lw $ra, 0x24($sp) -.L70011620: -/* 012220 70011620 02402025 */ move $a0, $s2 -.L70011624: -/* 012224 70011624 328500FF */ andi $a1, $s4, 0xff -/* 012228 70011628 0C00709F */ jal __lookupVoice -/* 01222C 7001162C 32C600FF */ andi $a2, $s6, 0xff -/* 012230 70011630 10400108 */ beqz $v0, .L70011A54 -/* 012234 70011634 00408025 */ move $s0, $v0 -/* 012238 70011638 904F0035 */ lbu $t7, 0x35($v0) -/* 01223C 7001163C 24160002 */ li $s6, 2 -/* 012240 70011640 24190004 */ li $t9, 4 -/* 012244 70011644 16CF0003 */ bne $s6, $t7, .L70011654 -/* 012248 70011648 02402025 */ move $a0, $s2 -/* 01224C 7001164C 10000101 */ b .L70011A54 -/* 012250 70011650 A0590035 */ sb $t9, 0x35($v0) -.L70011654: -/* 012254 70011654 8E0E0020 */ lw $t6, 0x20($s0) -/* 012258 70011658 241E0003 */ li $fp, 3 -/* 01225C 7001165C A21E0035 */ sb $fp, 0x35($s0) -/* 012260 70011660 8DD80000 */ lw $t8, ($t6) -/* 012264 70011664 26050004 */ addiu $a1, $s0, 4 -/* 012268 70011668 0C006FA7 */ jal __seqpReleaseVoice -/* 01226C 7001166C 8F060008 */ lw $a2, 8($t8) -/* 012270 70011670 100000F9 */ b .L70011A58 -/* 012274 70011674 8FBF0024 */ lw $ra, 0x24($sp) -.L70011678: -/* 012278 70011678 02402025 */ move $a0, $s2 -/* 01227C 7001167C 328500FF */ andi $a1, $s4, 0xff -/* 012280 70011680 0C00709F */ jal __lookupVoice -/* 012284 70011684 32C600FF */ andi $a2, $s6, 0xff -/* 012288 70011688 104000F2 */ beqz $v0, .L70011A54 -/* 01228C 7001168C 00408025 */ move $s0, $v0 -/* 012290 70011690 A0510033 */ sb $s1, 0x33($v0) -/* 012294 70011694 00402025 */ move $a0, $v0 -/* 012298 70011698 0C006F85 */ jal __vsVol -/* 01229C 7001169C 02402825 */ move $a1, $s2 -/* 0122A0 700116A0 00028C00 */ sll $s1, $v0, 0x10 -/* 0122A4 700116A4 00117C03 */ sra $t7, $s1, 0x10 -/* 0122A8 700116A8 01E08825 */ move $s1, $t7 -/* 0122AC 700116AC 02002025 */ move $a0, $s0 -/* 0122B0 700116B0 0C006F7C */ jal __vsDelta -/* 0122B4 700116B4 8E45001C */ lw $a1, 0x1c($s2) -/* 0122B8 700116B8 00113400 */ sll $a2, $s1, 0x10 -/* 0122BC 700116BC 0006CC03 */ sra $t9, $a2, 0x10 -/* 0122C0 700116C0 03203025 */ move $a2, $t9 -/* 0122C4 700116C4 8E440014 */ lw $a0, 0x14($s2) -/* 0122C8 700116C8 26050004 */ addiu $a1, $s0, 4 -/* 0122CC 700116CC 0C004CE8 */ jal alSynSetVol -/* 0122D0 700116D0 00403825 */ move $a3, $v0 -/* 0122D4 700116D4 100000E0 */ b .L70011A58 -/* 0122D8 700116D8 8FBF0024 */ lw $ra, 0x24($sp) -.L700116DC: -/* 0122DC 700116DC 8E500064 */ lw $s0, 0x64($s2) -/* 0122E0 700116E0 520000DD */ beql $s0, $zero, .L70011A58 -/* 0122E4 700116E4 8FBF0024 */ lw $ra, 0x24($sp) -/* 0122E8 700116E8 02C09825 */ move $s3, $s6 -/* 0122EC 700116EC 920E0031 */ lbu $t6, 0x31($s0) -.L700116F0: -/* 0122F0 700116F0 02002025 */ move $a0, $s0 -/* 0122F4 700116F4 02402825 */ move $a1, $s2 -/* 0122F8 700116F8 566E0011 */ bnel $s3, $t6, .L70011740 -/* 0122FC 700116FC 8E100000 */ lw $s0, ($s0) -/* 012300 70011700 0C006F85 */ jal __vsVol -/* 012304 70011704 A2140033 */ sb $s4, 0x33($s0) -/* 012308 70011708 00028C00 */ sll $s1, $v0, 0x10 -/* 01230C 7001170C 0011C403 */ sra $t8, $s1, 0x10 -/* 012310 70011710 03008825 */ move $s1, $t8 -/* 012314 70011714 02002025 */ move $a0, $s0 -/* 012318 70011718 0C006F7C */ jal __vsDelta -/* 01231C 7001171C 8E45001C */ lw $a1, 0x1c($s2) -/* 012320 70011720 00113400 */ sll $a2, $s1, 0x10 -/* 012324 70011724 00067C03 */ sra $t7, $a2, 0x10 -/* 012328 70011728 01E03025 */ move $a2, $t7 -/* 01232C 7001172C 8E440014 */ lw $a0, 0x14($s2) -/* 012330 70011730 26050004 */ addiu $a1, $s0, 4 -/* 012334 70011734 0C004CE8 */ jal alSynSetVol -/* 012338 70011738 00403825 */ move $a3, $v0 -/* 01233C 7001173C 8E100000 */ lw $s0, ($s0) -.L70011740: -/* 012340 70011740 5600FFEB */ bnezl $s0, .L700116F0 -/* 012344 70011744 920E0031 */ lbu $t6, 0x31($s0) -/* 012348 70011748 100000C3 */ b .L70011A58 -/* 01234C 7001174C 8FBF0024 */ lw $ra, 0x24($sp) -.L70011750: -/* 012350 70011750 24010007 */ li $at, 7 -/* 012354 70011754 12810023 */ beq $s4, $at, .L700117E4 -/* 012358 70011758 02801025 */ move $v0, $s4 -/* 01235C 7001175C 2401000A */ li $at, 10 -/* 012360 70011760 10410009 */ beq $v0, $at, .L70011788 -/* 012364 70011764 24010010 */ li $at, 16 -/* 012368 70011768 10410042 */ beq $v0, $at, .L70011874 -/* 01236C 7001176C 24010040 */ li $at, 64 -/* 012370 70011770 10410045 */ beq $v0, $at, .L70011888 -/* 012374 70011774 2401005B */ li $at, 91 -/* 012378 70011778 50410070 */ beql $v0, $at, .L7001193C -/* 01237C 7001177C 8E590060 */ lw $t9, 0x60($s2) -/* 012380 70011780 100000B5 */ b .L70011A58 -/* 012384 70011784 8FBF0024 */ lw $ra, 0x24($sp) -.L70011788: -/* 012388 70011788 8E590060 */ lw $t9, 0x60($s2) -/* 01238C 7001178C 00167100 */ sll $t6, $s6, 4 -/* 012390 70011790 032EC021 */ addu $t8, $t9, $t6 -/* 012394 70011794 A3110007 */ sb $s1, 7($t8) -/* 012398 70011798 8E500064 */ lw $s0, 0x64($s2) -/* 01239C 7001179C 520000AE */ beql $s0, $zero, .L70011A58 -/* 0123A0 700117A0 8FBF0024 */ lw $ra, 0x24($sp) -/* 0123A4 700117A4 02C09825 */ move $s3, $s6 -/* 0123A8 700117A8 920F0031 */ lbu $t7, 0x31($s0) -.L700117AC: -/* 0123AC 700117AC 02002025 */ move $a0, $s0 -/* 0123B0 700117B0 566F0008 */ bnel $s3, $t7, .L700117D4 -/* 0123B4 700117B4 8E100000 */ lw $s0, ($s0) -/* 0123B8 700117B8 0C00708D */ jal __vsPan -/* 0123BC 700117BC 02402825 */ move $a1, $s2 -/* 0123C0 700117C0 8E440014 */ lw $a0, 0x14($s2) -/* 0123C4 700117C4 26050004 */ addiu $a1, $s0, 4 -/* 0123C8 700117C8 0C004D34 */ jal alSynSetPan -/* 0123CC 700117CC 304600FF */ andi $a2, $v0, 0xff -/* 0123D0 700117D0 8E100000 */ lw $s0, ($s0) -.L700117D4: -/* 0123D4 700117D4 5600FFF5 */ bnezl $s0, .L700117AC -/* 0123D8 700117D8 920F0031 */ lbu $t7, 0x31($s0) -/* 0123DC 700117DC 1000009E */ b .L70011A58 -/* 0123E0 700117E0 8FBF0024 */ lw $ra, 0x24($sp) -.L700117E4: -/* 0123E4 700117E4 8E590060 */ lw $t9, 0x60($s2) -/* 0123E8 700117E8 00167100 */ sll $t6, $s6, 4 -/* 0123EC 700117EC 032EC021 */ addu $t8, $t9, $t6 -/* 0123F0 700117F0 A3110009 */ sb $s1, 9($t8) -/* 0123F4 700117F4 8E500064 */ lw $s0, 0x64($s2) -/* 0123F8 700117F8 52000097 */ beql $s0, $zero, .L70011A58 -/* 0123FC 700117FC 8FBF0024 */ lw $ra, 0x24($sp) -/* 012400 70011800 02C09825 */ move $s3, $s6 -/* 012404 70011804 24140003 */ li $s4, 3 -/* 012408 70011808 920F0031 */ lbu $t7, 0x31($s0) -.L7001180C: -/* 01240C 7001180C 566F0015 */ bnel $s3, $t7, .L70011864 -/* 012410 70011810 8E100000 */ lw $s0, ($s0) -/* 012414 70011814 92190034 */ lbu $t9, 0x34($s0) -/* 012418 70011818 02002025 */ move $a0, $s0 -/* 01241C 7001181C 52990011 */ beql $s4, $t9, .L70011864 -/* 012420 70011820 8E100000 */ lw $s0, ($s0) -/* 012424 70011824 0C006F85 */ jal __vsVol -/* 012428 70011828 02402825 */ move $a1, $s2 -/* 01242C 7001182C 00028C00 */ sll $s1, $v0, 0x10 -/* 012430 70011830 00117403 */ sra $t6, $s1, 0x10 -/* 012434 70011834 01C08825 */ move $s1, $t6 -/* 012438 70011838 02002025 */ move $a0, $s0 -/* 01243C 7001183C 0C006F7C */ jal __vsDelta -/* 012440 70011840 8E45001C */ lw $a1, 0x1c($s2) -/* 012444 70011844 00113400 */ sll $a2, $s1, 0x10 -/* 012448 70011848 0006C403 */ sra $t8, $a2, 0x10 -/* 01244C 7001184C 03003025 */ move $a2, $t8 -/* 012450 70011850 8E440014 */ lw $a0, 0x14($s2) -/* 012454 70011854 26050004 */ addiu $a1, $s0, 4 -/* 012458 70011858 0C004CE8 */ jal alSynSetVol -/* 01245C 7001185C 00403825 */ move $a3, $v0 -/* 012460 70011860 8E100000 */ lw $s0, ($s0) -.L70011864: -/* 012464 70011864 5600FFE9 */ bnezl $s0, .L7001180C -/* 012468 70011868 920F0031 */ lbu $t7, 0x31($s0) -/* 01246C 7001186C 1000007A */ b .L70011A58 -/* 012470 70011870 8FBF0024 */ lw $ra, 0x24($sp) -.L70011874: -/* 012474 70011874 8E4F0060 */ lw $t7, 0x60($s2) -/* 012478 70011878 0016C900 */ sll $t9, $s6, 4 -/* 01247C 7001187C 01F97021 */ addu $t6, $t7, $t9 -/* 012480 70011880 10000074 */ b .L70011A54 -/* 012484 70011884 A1D10008 */ sb $s1, 8($t6) -.L70011888: -/* 012488 70011888 8E580060 */ lw $t8, 0x60($s2) -/* 01248C 7001188C 00167900 */ sll $t7, $s6, 4 -/* 012490 70011890 030FC821 */ addu $t9, $t8, $t7 -/* 012494 70011894 A331000B */ sb $s1, 0xb($t9) -/* 012498 70011898 8E500064 */ lw $s0, 0x64($s2) -/* 01249C 7001189C 5200006E */ beql $s0, $zero, .L70011A58 -/* 0124A0 700118A0 8FBF0024 */ lw $ra, 0x24($sp) -/* 0124A4 700118A4 02C09825 */ move $s3, $s6 -/* 0124A8 700118A8 24160002 */ li $s6, 2 -/* 0124AC 700118AC 241E0003 */ li $fp, 3 -/* 0124B0 700118B0 24170004 */ li $s7, 4 -/* 0124B4 700118B4 24150002 */ li $s5, 2 -/* 0124B8 700118B8 24140003 */ li $s4, 3 -/* 0124BC 700118BC 920E0031 */ lbu $t6, 0x31($s0) -.L700118C0: -/* 0124C0 700118C0 566E0019 */ bnel $s3, $t6, .L70011928 -/* 0124C4 700118C4 8E100000 */ lw $s0, ($s0) -/* 0124C8 700118C8 92020035 */ lbu $v0, 0x35($s0) -/* 0124CC 700118CC 2A210040 */ slti $at, $s1, 0x40 -/* 0124D0 700118D0 52820015 */ beql $s4, $v0, .L70011928 -/* 0124D4 700118D4 8E100000 */ lw $s0, ($s0) -/* 0124D8 700118D8 14200005 */ bnez $at, .L700118F0 -/* 0124DC 700118DC 00000000 */ nop -/* 0124E0 700118E0 54400011 */ bnezl $v0, .L70011928 -/* 0124E4 700118E4 8E100000 */ lw $s0, ($s0) -/* 0124E8 700118E8 1000000E */ b .L70011924 -/* 0124EC 700118EC A2150035 */ sb $s5, 0x35($s0) -.L700118F0: -/* 0124F0 700118F0 16C20003 */ bne $s6, $v0, .L70011900 -/* 0124F4 700118F4 00000000 */ nop -/* 0124F8 700118F8 1000000A */ b .L70011924 -/* 0124FC 700118FC A2000035 */ sb $zero, 0x35($s0) -.L70011900: -/* 012500 70011900 56E20009 */ bnel $s7, $v0, .L70011928 -/* 012504 70011904 8E100000 */ lw $s0, ($s0) -/* 012508 70011908 8E180020 */ lw $t8, 0x20($s0) -/* 01250C 7001190C A21E0035 */ sb $fp, 0x35($s0) -/* 012510 70011910 02402025 */ move $a0, $s2 -/* 012514 70011914 8F0F0000 */ lw $t7, ($t8) -/* 012518 70011918 26050004 */ addiu $a1, $s0, 4 -/* 01251C 7001191C 0C006FA7 */ jal __seqpReleaseVoice -/* 012520 70011920 8DE60008 */ lw $a2, 8($t7) -.L70011924: -/* 012524 70011924 8E100000 */ lw $s0, ($s0) -.L70011928: -/* 012528 70011928 5600FFE5 */ bnezl $s0, .L700118C0 -/* 01252C 7001192C 920E0031 */ lbu $t6, 0x31($s0) -/* 012530 70011930 10000049 */ b .L70011A58 -/* 012534 70011934 8FBF0024 */ lw $ra, 0x24($sp) -/* 012538 70011938 8E590060 */ lw $t9, 0x60($s2) -.L7001193C: -/* 01253C 7001193C 00167100 */ sll $t6, $s6, 4 -/* 012540 70011940 032EC021 */ addu $t8, $t9, $t6 -/* 012544 70011944 A311000A */ sb $s1, 0xa($t8) -/* 012548 70011948 8E500064 */ lw $s0, 0x64($s2) -/* 01254C 7001194C 52000042 */ beql $s0, $zero, .L70011A58 -/* 012550 70011950 8FBF0024 */ lw $ra, 0x24($sp) -/* 012554 70011954 02C09825 */ move $s3, $s6 -/* 012558 70011958 920F0031 */ lbu $t7, 0x31($s0) -.L7001195C: -/* 01255C 7001195C 26050004 */ addiu $a1, $s0, 4 -/* 012560 70011960 322600FF */ andi $a2, $s1, 0xff -/* 012564 70011964 566F0004 */ bnel $s3, $t7, .L70011978 -/* 012568 70011968 8E100000 */ lw $s0, ($s0) -/* 01256C 7001196C 0C004D7C */ jal alSynSetFXMix -/* 012570 70011970 8E440014 */ lw $a0, 0x14($s2) -/* 012574 70011974 8E100000 */ lw $s0, ($s0) -.L70011978: -/* 012578 70011978 5600FFF8 */ bnezl $s0, .L7001195C -/* 01257C 7001197C 920F0031 */ lbu $t7, 0x31($s0) -/* 012580 70011980 10000035 */ b .L70011A58 -/* 012584 70011984 8FBF0024 */ lw $ra, 0x24($sp) -.L70011988: -/* 012588 70011988 8E420020 */ lw $v0, 0x20($s2) -/* 01258C 7001198C 00147080 */ sll $t6, $s4, 2 -/* 012590 70011990 02402025 */ move $a0, $s2 -/* 012594 70011994 84590000 */ lh $t9, ($v0) -/* 012598 70011998 02C03025 */ move $a2, $s6 -/* 01259C 7001199C 004EC021 */ addu $t8, $v0, $t6 -/* 0125A0 700119A0 0299082A */ slt $at, $s4, $t9 -/* 0125A4 700119A4 5020002C */ beql $at, $zero, .L70011A58 -/* 0125A8 700119A8 8FBF0024 */ lw $ra, 0x24($sp) -/* 0125AC 700119AC 0C006F18 */ jal __setInstChanState -/* 0125B0 700119B0 8F05000C */ lw $a1, 0xc($t8) -/* 0125B4 700119B4 10000028 */ b .L70011A58 -/* 0125B8 700119B8 8FBF0024 */ lw $ra, 0x24($sp) -.L700119BC: -/* 0125BC 700119BC 8E4F0060 */ lw $t7, 0x60($s2) -/* 0125C0 700119C0 0016F100 */ sll $fp, $s6, 4 -/* 0125C4 700119C4 0011C1C0 */ sll $t8, $s1, 7 -/* 0125C8 700119C8 01FEC821 */ addu $t9, $t7, $fp -/* 0125CC 700119CC 872E0004 */ lh $t6, 4($t9) -/* 0125D0 700119D0 03147821 */ addu $t7, $t8, $s4 -/* 0125D4 700119D4 25F9E000 */ addiu $t9, $t7, -0x2000 -/* 0125D8 700119D8 01D90019 */ multu $t6, $t9 -/* 0125DC 700119DC 00002012 */ mflo $a0 -/* 0125E0 700119E0 04810003 */ bgez $a0, .L700119F0 -/* 0125E4 700119E4 0004C343 */ sra $t8, $a0, 0xd -/* 0125E8 700119E8 24811FFF */ addiu $at, $a0, 0x1fff -/* 0125EC 700119EC 0001C343 */ sra $t8, $at, 0xd -.L700119F0: -/* 0125F0 700119F0 0C004DF0 */ jal alCents2Ratio -/* 0125F4 700119F4 03002025 */ move $a0, $t8 -/* 0125F8 700119F8 8E4F0060 */ lw $t7, 0x60($s2) -/* 0125FC 700119FC 46000506 */ mov.s $f20, $f0 -/* 012600 70011A00 01FE7021 */ addu $t6, $t7, $fp -/* 012604 70011A04 E5C0000C */ swc1 $f0, 0xc($t6) -/* 012608 70011A08 8E500064 */ lw $s0, 0x64($s2) -/* 01260C 70011A0C 52000012 */ beql $s0, $zero, .L70011A58 -/* 012610 70011A10 8FBF0024 */ lw $ra, 0x24($sp) -/* 012614 70011A14 02C09825 */ move $s3, $s6 -/* 012618 70011A18 92190031 */ lbu $t9, 0x31($s0) -.L70011A1C: -/* 01261C 70011A1C 5679000B */ bnel $s3, $t9, .L70011A4C -/* 012620 70011A20 8E100000 */ lw $s0, ($s0) -/* 012624 70011A24 C6060028 */ lwc1 $f6, 0x28($s0) -/* 012628 70011A28 C60A002C */ lwc1 $f10, 0x2c($s0) -/* 01262C 70011A2C 8E440014 */ lw $a0, 0x14($s2) -/* 012630 70011A30 46143202 */ mul.s $f8, $f6, $f20 -/* 012634 70011A34 26050004 */ addiu $a1, $s0, 4 -/* 012638 70011A38 460A4102 */ mul.s $f4, $f8, $f10 -/* 01263C 70011A3C 44062000 */ mfc1 $a2, $f4 -/* 012640 70011A40 0C004D58 */ jal alSynSetPitch -/* 012644 70011A44 00000000 */ nop -/* 012648 70011A48 8E100000 */ lw $s0, ($s0) -.L70011A4C: -/* 01264C 70011A4C 5600FFF3 */ bnezl $s0, .L70011A1C -/* 012650 70011A50 92190031 */ lbu $t9, 0x31($s0) -.L70011A54: -/* 012654 70011A54 8FBF0024 */ lw $ra, 0x24($sp) -.L70011A58: -/* 012658 70011A58 27BD00B8 */ addiu $sp, $sp, 0xb8 -/* 01265C 70011A5C 03E00008 */ jr $ra -/* 012660 70011A60 00000000 */ nop - -/* 012664 70011A64 03E00008 */ jr $ra -/* 012668 70011A68 00000000 */ nop - -glabel ultra_70011A6C -/* 01266C 70011A6C 27BDFF60 */ addiu $sp, $sp, -0xa0 -/* 012670 70011A70 AFB50034 */ sw $s5, 0x34($sp) -/* 012674 70011A74 AFB20028 */ sw $s2, 0x28($sp) -/* 012678 70011A78 248E0038 */ addiu $t6, $a0, 0x38 -/* 01267C 70011A7C 00809025 */ move $s2, $a0 -/* 012680 70011A80 AFBF0044 */ sw $ra, 0x44($sp) -/* 012684 70011A84 AFBE0040 */ sw $fp, 0x40($sp) -/* 012688 70011A88 AFB7003C */ sw $s7, 0x3c($sp) -/* 01268C 70011A8C AFB60038 */ sw $s6, 0x38($sp) -/* 012690 70011A90 AFB40030 */ sw $s4, 0x30($sp) -/* 012694 70011A94 AFB3002C */ sw $s3, 0x2c($sp) -/* 012698 70011A98 AFB10024 */ sw $s1, 0x24($sp) -/* 01269C 70011A9C AFB00020 */ sw $s0, 0x20($sp) -/* 0126A0 70011AA0 F7B40018 */ sdc1 $f20, 0x18($sp) -/* 0126A4 70011AA4 AFAE0050 */ sw $t6, 0x50($sp) -/* 0126A8 70011AA8 24950048 */ addiu $s5, $a0, 0x48 -.L70011AAC: -/* 0126AC 70011AAC 964F0038 */ lhu $t7, 0x38($s2) -/* 0126B0 70011AB0 2DE10018 */ sltiu $at, $t7, 0x18 -/* 0126B4 70011AB4 1020015D */ beqz $at, .L7001202C -/* 0126B8 70011AB8 000F7880 */ sll $t7, $t7, 2 -/* 0126BC 70011ABC 3C018003 */ lui $at, %hi(audio_related_jump_table_1) # 0x8003 -/* 0126C0 70011AC0 002F0821 */ addu $at, $at, $t7 -/* 0126C4 70011AC4 8C2F9614 */ lw $t7, %lo(audio_related_jump_table_1)($at) # -0x69ec -/* 0126C8 70011AC8 01E00008 */ jr $t7 -/* 0126CC 70011ACC 00000000 */ nop -.L70011AD0: -/* 0126D0 70011AD0 8E440018 */ lw $a0, 0x18($s2) -/* 0126D4 70011AD4 50800156 */ beql $a0, $zero, .L70012030 -/* 0126D8 70011AD8 02A02025 */ move $a0, $s5 -/* 0126DC 70011ADC 0C004929 */ jal alCSeqNextEvent -/* 0126E0 70011AE0 27A50058 */ addiu $a1, $sp, 0x58 -/* 0126E4 70011AE4 87B80058 */ lh $t8, 0x58($sp) -/* 0126E8 70011AE8 2719FFFF */ addiu $t9, $t8, -1 -/* 0126EC 70011AEC 2F210014 */ sltiu $at, $t9, 0x14 -/* 0126F0 70011AF0 1020014E */ beqz $at, .L7001202C -/* 0126F4 70011AF4 0019C880 */ sll $t9, $t9, 2 -/* 0126F8 70011AF8 3C018003 */ lui $at, %hi(audio_related_jump_table_2) # 0x8003 -/* 0126FC 70011AFC 00390821 */ addu $at, $at, $t9 -/* 012700 70011B00 8C399674 */ lw $t9, %lo(audio_related_jump_table_2)($at) # -0x698c -/* 012704 70011B04 03200008 */ jr $t9 -/* 012708 70011B08 00000000 */ nop -.L70011B0C: -/* 01270C 70011B0C 27A80058 */ addiu $t0, $sp, 0x58 -/* 012710 70011B10 AFB200A0 */ sw $s2, 0xa0($sp) -/* 012714 70011B14 0C00448F */ jal __CSPHandleMIDIMsg -/* 012718 70011B18 AFB5004C */ sw $s5, 0x4c($sp) -/* 01271C 70011B1C 8FB200A0 */ lw $s2, 0xa0($sp) -/* 012720 70011B20 8FB5004C */ lw $s5, 0x4c($sp) -/* 012724 70011B24 0C0043F0 */ jal __CSPPostNextSeqEvent -/* 012728 70011B28 02402025 */ move $a0, $s2 -/* 01272C 70011B2C 10000140 */ b .L70012030 -/* 012730 70011B30 02A02025 */ move $a0, $s5 -.L70011B34: -/* 012734 70011B34 0240B825 */ move $s7, $s2 -/* 012738 70011B38 27A50058 */ addiu $a1, $sp, 0x58 -/* 01273C 70011B3C AFB200A0 */ sw $s2, 0xa0($sp) -/* 012740 70011B40 0C00441B */ jal ultra_7001106C -/* 012744 70011B44 AFB5004C */ sw $s5, 0x4c($sp) -/* 012748 70011B48 8FB200A0 */ lw $s2, 0xa0($sp) -/* 01274C 70011B4C 8FB5004C */ lw $s5, 0x4c($sp) -/* 012750 70011B50 0C0043F0 */ jal __CSPPostNextSeqEvent -/* 012754 70011B54 02402025 */ move $a0, $s2 -/* 012758 70011B58 10000135 */ b .L70012030 -/* 01275C 70011B5C 02A02025 */ move $a0, $s5 -.L70011B60: -/* 012760 70011B60 240E0002 */ li $t6, 2 -/* 012764 70011B64 AE4E002C */ sw $t6, 0x2c($s2) -/* 012768 70011B68 240F0010 */ li $t7, 16 -/* 01276C 70011B6C 3C067FFF */ lui $a2, (0x7FFFFFFF >> 16) # lui $a2, 0x7fff -/* 012770 70011B70 A7AF0058 */ sh $t7, 0x58($sp) -/* 012774 70011B74 34C6FFFF */ ori $a2, (0x7FFFFFFF & 0xFFFF) # ori $a2, $a2, 0xffff -/* 012778 70011B78 02A02025 */ move $a0, $s5 -/* 01277C 70011B7C 0C004BBF */ jal alEvtqPostEvent -/* 012780 70011B80 27A50058 */ addiu $a1, $sp, 0x58 -/* 012784 70011B84 1000012A */ b .L70012030 -/* 012788 70011B88 02A02025 */ move $a0, $s5 -.L70011B8C: -/* 01278C 70011B8C 0C0043F0 */ jal __CSPPostNextSeqEvent -/* 012790 70011B90 02402025 */ move $a0, $s2 -/* 012794 70011B94 10000126 */ b .L70012030 -/* 012798 70011B98 02A02025 */ move $a0, $s5 -.L70011B9C: -/* 01279C 70011B9C 24180009 */ li $t8, 9 -/* 0127A0 70011BA0 A7B8008C */ sh $t8, 0x8c($sp) -/* 0127A4 70011BA4 8E46005C */ lw $a2, 0x5c($s2) -/* 0127A8 70011BA8 02A02025 */ move $a0, $s5 -/* 0127AC 70011BAC 0C004BBF */ jal alEvtqPostEvent -/* 0127B0 70011BB0 27A5008C */ addiu $a1, $sp, 0x8c -/* 0127B4 70011BB4 1000011E */ b .L70012030 -/* 0127B8 70011BB8 02A02025 */ move $a0, $s5 -.L70011BBC: -/* 0127BC 70011BBC 8E50003C */ lw $s0, 0x3c($s2) -/* 0127C0 70011BC0 8E440014 */ lw $a0, 0x14($s2) -/* 0127C4 70011BC4 0C004DA4 */ jal alSynStopVoice -/* 0127C8 70011BC8 02002825 */ move $a1, $s0 -/* 0127CC 70011BCC 8E440014 */ lw $a0, 0x14($s2) -/* 0127D0 70011BD0 0C004DC4 */ jal alSynFreeVoice -/* 0127D4 70011BD4 02002825 */ move $a1, $s0 -/* 0127D8 70011BD8 8E110010 */ lw $s1, 0x10($s0) -/* 0127DC 70011BDC 02402025 */ move $a0, $s2 -/* 0127E0 70011BE0 92390037 */ lbu $t9, 0x37($s1) -/* 0127E4 70011BE4 53200004 */ beql $t9, $zero, .L70011BF8 -/* 0127E8 70011BE8 02402025 */ move $a0, $s2 -/* 0127EC 70011BEC 0C0074A8 */ jal __seqpStopOsc -/* 0127F0 70011BF0 02202825 */ move $a1, $s1 -/* 0127F4 70011BF4 02402025 */ move $a0, $s2 -.L70011BF8: -/* 0127F8 70011BF8 0C00701C */ jal __unmapVoice -/* 0127FC 70011BFC 02002825 */ move $a1, $s0 -/* 012800 70011C00 1000010B */ b .L70012030 -/* 012804 70011C04 02A02025 */ move $a0, $s5 -.L70011C08: -/* 012808 70011C08 8E50003C */ lw $s0, 0x3c($s2) -/* 01280C 70011C0C 240F0001 */ li $t7, 1 -/* 012810 70011C10 8E110010 */ lw $s1, 0x10($s0) -/* 012814 70011C14 922E0034 */ lbu $t6, 0x34($s1) -/* 012818 70011C18 55C00003 */ bnezl $t6, .L70011C28 -/* 01281C 70011C1C 8E530040 */ lw $s3, 0x40($s2) -/* 012820 70011C20 A22F0034 */ sb $t7, 0x34($s1) -/* 012824 70011C24 8E530040 */ lw $s3, 0x40($s2) -.L70011C28: -/* 012828 70011C28 8E58001C */ lw $t8, 0x1c($s2) -/* 01282C 70011C2C 02202025 */ move $a0, $s1 -/* 012830 70011C30 02402825 */ move $a1, $s2 -/* 012834 70011C34 0313C821 */ addu $t9, $t8, $s3 -/* 012838 70011C38 AE390024 */ sw $t9, 0x24($s1) -/* 01283C 70011C3C 924E0044 */ lbu $t6, 0x44($s2) -/* 012840 70011C40 0C006F85 */ jal __vsVol -/* 012844 70011C44 A22E0030 */ sb $t6, 0x30($s1) -/* 012848 70011C48 00023400 */ sll $a2, $v0, 0x10 -/* 01284C 70011C4C 00067C03 */ sra $t7, $a2, 0x10 -/* 012850 70011C50 01E03025 */ move $a2, $t7 -/* 012854 70011C54 8E440014 */ lw $a0, 0x14($s2) -/* 012858 70011C58 02002825 */ move $a1, $s0 -/* 01285C 70011C5C 0C004CE8 */ jal alSynSetVol -/* 012860 70011C60 02603825 */ move $a3, $s3 -/* 012864 70011C64 100000F2 */ b .L70012030 -/* 012868 70011C68 02A02025 */ move $a0, $s5 -.L70011C6C: -/* 01286C 70011C6C 8E590074 */ lw $t9, 0x74($s2) -/* 012870 70011C70 8E540040 */ lw $s4, 0x40($s2) -/* 012874 70011C74 8E51003C */ lw $s1, 0x3c($s2) -/* 012878 70011C78 27A50078 */ addiu $a1, $sp, 0x78 -/* 01287C 70011C7C 0320F809 */ jalr $t9 -/* 012880 70011C80 02802025 */ move $a0, $s4 -/* 012884 70011C84 4458F800 */ cfc1 $t8, $31 -/* 012888 70011C88 240E0001 */ li $t6, 1 -/* 01288C 70011C8C 44CEF800 */ ctc1 $t6, $31 -/* 012890 70011C90 C7A40078 */ lwc1 $f4, 0x78($sp) -/* 012894 70011C94 00409825 */ move $s3, $v0 -/* 012898 70011C98 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 01289C 70011C9C 460021A4 */ cvt.w.s $f6, $f4 -/* 0128A0 70011CA0 02202025 */ move $a0, $s1 -/* 0128A4 70011CA4 02402825 */ move $a1, $s2 -/* 0128A8 70011CA8 444EF800 */ cfc1 $t6, $31 -/* 0128AC 70011CAC 00000000 */ nop -/* 0128B0 70011CB0 31CE0078 */ andi $t6, $t6, 0x78 -/* 0128B4 70011CB4 51C00013 */ beql $t6, $zero, .L70011D04 -/* 0128B8 70011CB8 440E3000 */ mfc1 $t6, $f6 -/* 0128BC 70011CBC 44813000 */ mtc1 $at, $f6 -/* 0128C0 70011CC0 240E0001 */ li $t6, 1 -/* 0128C4 70011CC4 46062181 */ sub.s $f6, $f4, $f6 -/* 0128C8 70011CC8 44CEF800 */ ctc1 $t6, $31 -/* 0128CC 70011CCC 00000000 */ nop -/* 0128D0 70011CD0 460031A4 */ cvt.w.s $f6, $f6 -/* 0128D4 70011CD4 444EF800 */ cfc1 $t6, $31 -/* 0128D8 70011CD8 00000000 */ nop -/* 0128DC 70011CDC 31CE0078 */ andi $t6, $t6, 0x78 -/* 0128E0 70011CE0 15C00005 */ bnez $t6, .L70011CF8 -/* 0128E4 70011CE4 00000000 */ nop -/* 0128E8 70011CE8 440E3000 */ mfc1 $t6, $f6 -/* 0128EC 70011CEC 3C018000 */ lui $at, 0x8000 -/* 0128F0 70011CF0 10000007 */ b .L70011D10 -/* 0128F4 70011CF4 01C17025 */ or $t6, $t6, $at -.L70011CF8: -/* 0128F8 70011CF8 10000005 */ b .L70011D10 -/* 0128FC 70011CFC 240EFFFF */ li $t6, -1 -/* 012900 70011D00 440E3000 */ mfc1 $t6, $f6 -.L70011D04: -/* 012904 70011D04 00000000 */ nop -/* 012908 70011D08 05C0FFFB */ bltz $t6, .L70011CF8 -/* 01290C 70011D0C 00000000 */ nop -.L70011D10: -/* 012910 70011D10 44D8F800 */ ctc1 $t8, $31 -/* 012914 70011D14 0C006F85 */ jal __vsVol -/* 012918 70011D18 A22E0036 */ sb $t6, 0x36($s1) -/* 01291C 70011D1C 00028400 */ sll $s0, $v0, 0x10 -/* 012920 70011D20 00107C03 */ sra $t7, $s0, 0x10 -/* 012924 70011D24 01E08025 */ move $s0, $t7 -/* 012928 70011D28 02202025 */ move $a0, $s1 -/* 01292C 70011D2C 0C006F7C */ jal __vsDelta -/* 012930 70011D30 8E45001C */ lw $a1, 0x1c($s2) -/* 012934 70011D34 00103400 */ sll $a2, $s0, 0x10 -/* 012938 70011D38 0006CC03 */ sra $t9, $a2, 0x10 -/* 01293C 70011D3C 03203025 */ move $a2, $t9 -/* 012940 70011D40 8E440014 */ lw $a0, 0x14($s2) -/* 012944 70011D44 26250004 */ addiu $a1, $s1, 4 -/* 012948 70011D48 0C004CE8 */ jal alSynSetVol -/* 01294C 70011D4C 00403825 */ move $a3, $v0 -/* 012950 70011D50 24180016 */ li $t8, 22 -/* 012954 70011D54 A7B8008C */ sh $t8, 0x8c($sp) -/* 012958 70011D58 AFB10090 */ sw $s1, 0x90($sp) -/* 01295C 70011D5C AFB40094 */ sw $s4, 0x94($sp) -/* 012960 70011D60 02A02025 */ move $a0, $s5 -/* 012964 70011D64 27A5008C */ addiu $a1, $sp, 0x8c -/* 012968 70011D68 0C004BBF */ jal alEvtqPostEvent -/* 01296C 70011D6C 02603025 */ move $a2, $s3 -/* 012970 70011D70 100000AF */ b .L70012030 -/* 012974 70011D74 02A02025 */ move $a0, $s5 -.L70011D78: -/* 012978 70011D78 8E590074 */ lw $t9, 0x74($s2) -/* 01297C 70011D7C 8E540040 */ lw $s4, 0x40($s2) -/* 012980 70011D80 8E51003C */ lw $s1, 0x3c($s2) -/* 012984 70011D84 92500044 */ lbu $s0, 0x44($s2) -/* 012988 70011D88 27A50078 */ addiu $a1, $sp, 0x78 -/* 01298C 70011D8C 0320F809 */ jalr $t9 -/* 012990 70011D90 02802025 */ move $a0, $s4 -/* 012994 70011D94 C7A80078 */ lwc1 $f8, 0x78($sp) -/* 012998 70011D98 C6240028 */ lwc1 $f4, 0x28($s1) -/* 01299C 70011D9C 00107900 */ sll $t7, $s0, 4 -/* 0129A0 70011DA0 E628002C */ swc1 $f8, 0x2c($s1) -/* 0129A4 70011DA4 C626002C */ lwc1 $f6, 0x2c($s1) -/* 0129A8 70011DA8 8E4E0060 */ lw $t6, 0x60($s2) -/* 0129AC 70011DAC 00409825 */ move $s3, $v0 -/* 0129B0 70011DB0 46062202 */ mul.s $f8, $f4, $f6 -/* 0129B4 70011DB4 01CFC021 */ addu $t8, $t6, $t7 -/* 0129B8 70011DB8 C70A000C */ lwc1 $f10, 0xc($t8) -/* 0129BC 70011DBC 8E440014 */ lw $a0, 0x14($s2) -/* 0129C0 70011DC0 26250004 */ addiu $a1, $s1, 4 -/* 0129C4 70011DC4 46085102 */ mul.s $f4, $f10, $f8 -/* 0129C8 70011DC8 44062000 */ mfc1 $a2, $f4 -/* 0129CC 70011DCC 0C004D58 */ jal alSynSetPitch -/* 0129D0 70011DD0 00000000 */ nop -/* 0129D4 70011DD4 24190017 */ li $t9, 23 -/* 0129D8 70011DD8 A7B9008C */ sh $t9, 0x8c($sp) -/* 0129DC 70011DDC AFB10090 */ sw $s1, 0x90($sp) -/* 0129E0 70011DE0 AFB40094 */ sw $s4, 0x94($sp) -/* 0129E4 70011DE4 A3B00098 */ sb $s0, 0x98($sp) -/* 0129E8 70011DE8 02A02025 */ move $a0, $s5 -/* 0129EC 70011DEC 27A5008C */ addiu $a1, $sp, 0x8c -/* 0129F0 70011DF0 0C004BBF */ jal alEvtqPostEvent -/* 0129F4 70011DF4 02603025 */ move $a2, $s3 -/* 0129F8 70011DF8 1000008D */ b .L70012030 -/* 0129FC 70011DFC 02A02025 */ move $a0, $s5 -.L70011E00: -/* 012A00 70011E00 8FA80050 */ lw $t0, 0x50($sp) -/* 012A04 70011E04 AFB200A0 */ sw $s2, 0xa0($sp) -/* 012A08 70011E08 0C00448F */ jal __CSPHandleMIDIMsg -/* 012A0C 70011E0C AFB5004C */ sw $s5, 0x4c($sp) -/* 012A10 70011E10 8FB200A0 */ lw $s2, 0xa0($sp) -/* 012A14 70011E14 10000085 */ b .L7001202C -/* 012A18 70011E18 8FB5004C */ lw $s5, 0x4c($sp) -.L70011E1C: -/* 012A1C 70011E1C 0240B825 */ move $s7, $s2 -/* 012A20 70011E20 8FA50050 */ lw $a1, 0x50($sp) -/* 012A24 70011E24 AFB200A0 */ sw $s2, 0xa0($sp) -/* 012A28 70011E28 0C00441B */ jal ultra_7001106C -/* 012A2C 70011E2C AFB5004C */ sw $s5, 0x4c($sp) -/* 012A30 70011E30 8FB200A0 */ lw $s2, 0xa0($sp) -/* 012A34 70011E34 1000007D */ b .L7001202C -/* 012A38 70011E38 8FB5004C */ lw $s5, 0x4c($sp) -.L70011E3C: -/* 012A3C 70011E3C 8E510064 */ lw $s1, 0x64($s2) -/* 012A40 70011E40 864E003C */ lh $t6, 0x3c($s2) -/* 012A44 70011E44 12200079 */ beqz $s1, .L7001202C -/* 012A48 70011E48 A64E0032 */ sh $t6, 0x32($s2) -/* 012A4C 70011E4C 02202025 */ move $a0, $s1 -.L70011E50: -/* 012A50 70011E50 0C006F85 */ jal __vsVol -/* 012A54 70011E54 02402825 */ move $a1, $s2 -/* 012A58 70011E58 00028400 */ sll $s0, $v0, 0x10 -/* 012A5C 70011E5C 00107C03 */ sra $t7, $s0, 0x10 -/* 012A60 70011E60 01E08025 */ move $s0, $t7 -/* 012A64 70011E64 02202025 */ move $a0, $s1 -/* 012A68 70011E68 0C006F7C */ jal __vsDelta -/* 012A6C 70011E6C 8E45001C */ lw $a1, 0x1c($s2) -/* 012A70 70011E70 00103400 */ sll $a2, $s0, 0x10 -/* 012A74 70011E74 0006C403 */ sra $t8, $a2, 0x10 -/* 012A78 70011E78 03003025 */ move $a2, $t8 -/* 012A7C 70011E7C 8E440014 */ lw $a0, 0x14($s2) -/* 012A80 70011E80 26250004 */ addiu $a1, $s1, 4 -/* 012A84 70011E84 0C004CE8 */ jal alSynSetVol -/* 012A88 70011E88 00403825 */ move $a3, $v0 -/* 012A8C 70011E8C 8E310000 */ lw $s1, ($s1) -/* 012A90 70011E90 5620FFEF */ bnezl $s1, .L70011E50 -/* 012A94 70011E94 02202025 */ move $a0, $s1 -/* 012A98 70011E98 10000065 */ b .L70012030 -/* 012A9C 70011E9C 02A02025 */ move $a0, $s5 -.L70011EA0: -/* 012AA0 70011EA0 8E59002C */ lw $t9, 0x2c($s2) -/* 012AA4 70011EA4 24010001 */ li $at, 1 -/* 012AA8 70011EA8 240E0001 */ li $t6, 1 -/* 012AAC 70011EAC 1321005F */ beq $t9, $at, .L7001202C -/* 012AB0 70011EB0 02402025 */ move $a0, $s2 -/* 012AB4 70011EB4 0C0043F0 */ jal __CSPPostNextSeqEvent -/* 012AB8 70011EB8 AE4E002C */ sw $t6, 0x2c($s2) -/* 012ABC 70011EBC 1000005C */ b .L70012030 -/* 012AC0 70011EC0 02A02025 */ move $a0, $s5 -.L70011EC4: -/* 012AC4 70011EC4 8E4F002C */ lw $t7, 0x2c($s2) -/* 012AC8 70011EC8 24010002 */ li $at, 2 -/* 012ACC 70011ECC 55E10058 */ bnel $t7, $at, .L70012030 -/* 012AD0 70011ED0 02A02025 */ move $a0, $s5 -/* 012AD4 70011ED4 8E510064 */ lw $s1, 0x64($s2) -/* 012AD8 70011ED8 12200013 */ beqz $s1, .L70011F28 -/* 012ADC 70011EDC 26300004 */ addiu $s0, $s1, 4 -.L70011EE0: -/* 012AE0 70011EE0 02002825 */ move $a1, $s0 -/* 012AE4 70011EE4 0C004DA4 */ jal alSynStopVoice -/* 012AE8 70011EE8 8E440014 */ lw $a0, 0x14($s2) -/* 012AEC 70011EEC 8E440014 */ lw $a0, 0x14($s2) -/* 012AF0 70011EF0 0C004DC4 */ jal alSynFreeVoice -/* 012AF4 70011EF4 02002825 */ move $a1, $s0 -/* 012AF8 70011EF8 92380037 */ lbu $t8, 0x37($s1) -/* 012AFC 70011EFC 02402025 */ move $a0, $s2 -/* 012B00 70011F00 53000004 */ beql $t8, $zero, .L70011F14 -/* 012B04 70011F04 02402025 */ move $a0, $s2 -/* 012B08 70011F08 0C0074A8 */ jal __seqpStopOsc -/* 012B0C 70011F0C 02202825 */ move $a1, $s1 -/* 012B10 70011F10 02402025 */ move $a0, $s2 -.L70011F14: -/* 012B14 70011F14 0C00701C */ jal __unmapVoice -/* 012B18 70011F18 02002825 */ move $a1, $s0 -/* 012B1C 70011F1C 8E510064 */ lw $s1, 0x64($s2) -/* 012B20 70011F20 5620FFEF */ bnezl $s1, .L70011EE0 -/* 012B24 70011F24 26300004 */ addiu $s0, $s1, 4 -.L70011F28: -/* 012B28 70011F28 10000040 */ b .L7001202C -/* 012B2C 70011F2C AE40002C */ sw $zero, 0x2c($s2) -.L70011F30: -/* 012B30 70011F30 8E59002C */ lw $t9, 0x2c($s2) -/* 012B34 70011F34 24010001 */ li $at, 1 -/* 012B38 70011F38 02A02025 */ move $a0, $s5 -/* 012B3C 70011F3C 5721003C */ bnel $t9, $at, .L70012030 -/* 012B40 70011F40 02A02025 */ move $a0, $s5 -/* 012B44 70011F44 0C004B78 */ jal alEvtqFlushType -/* 012B48 70011F48 00002825 */ move $a1, $zero -/* 012B4C 70011F4C 02A02025 */ move $a0, $s5 -/* 012B50 70011F50 0C004B78 */ jal alEvtqFlushType -/* 012B54 70011F54 24050015 */ li $a1, 21 -/* 012B58 70011F58 02A02025 */ move $a0, $s5 -/* 012B5C 70011F5C 0C004B78 */ jal alEvtqFlushType -/* 012B60 70011F60 24050002 */ li $a1, 2 -/* 012B64 70011F64 8E510064 */ lw $s1, 0x64($s2) -/* 012B68 70011F68 1220000D */ beqz $s1, .L70011FA0 -/* 012B6C 70011F6C 26300004 */ addiu $s0, $s1, 4 -.L70011F70: -/* 012B70 70011F70 02002825 */ move $a1, $s0 -/* 012B74 70011F74 02402025 */ move $a0, $s2 -/* 012B78 70011F78 0C006FF2 */ jal __voiceNeedsNoteKill -/* 012B7C 70011F7C 3406C350 */ li $a2, 50000 -/* 012B80 70011F80 10400004 */ beqz $v0, .L70011F94 -/* 012B84 70011F84 02402025 */ move $a0, $s2 -/* 012B88 70011F88 02002825 */ move $a1, $s0 -/* 012B8C 70011F8C 0C006FA7 */ jal __seqpReleaseVoice -/* 012B90 70011F90 3406C350 */ li $a2, 50000 -.L70011F94: -/* 012B94 70011F94 8E310000 */ lw $s1, ($s1) -/* 012B98 70011F98 5620FFF5 */ bnezl $s1, .L70011F70 -/* 012B9C 70011F9C 26300004 */ addiu $s0, $s1, 4 -.L70011FA0: -/* 012BA0 70011FA0 240E0002 */ li $t6, 2 -/* 012BA4 70011FA4 AE4E002C */ sw $t6, 0x2c($s2) -/* 012BA8 70011FA8 240F0010 */ li $t7, 16 -/* 012BAC 70011FAC 3C067FFF */ lui $a2, (0x7FFFFFFF >> 16) # lui $a2, 0x7fff -/* 012BB0 70011FB0 A7AF008C */ sh $t7, 0x8c($sp) -/* 012BB4 70011FB4 34C6FFFF */ ori $a2, (0x7FFFFFFF & 0xFFFF) # ori $a2, $a2, 0xffff -/* 012BB8 70011FB8 02A02025 */ move $a0, $s5 -/* 012BBC 70011FBC 0C004BBF */ jal alEvtqPostEvent -/* 012BC0 70011FC0 27A5008C */ addiu $a1, $sp, 0x8c -/* 012BC4 70011FC4 1000001A */ b .L70012030 -/* 012BC8 70011FC8 02A02025 */ move $a0, $s5 -.L70011FCC: -/* 012BCC 70011FCC 9250003C */ lbu $s0, 0x3c($s2) -/* 012BD0 70011FD0 8E590060 */ lw $t9, 0x60($s2) -/* 012BD4 70011FD4 9258003D */ lbu $t8, 0x3d($s2) -/* 012BD8 70011FD8 00107100 */ sll $t6, $s0, 4 -/* 012BDC 70011FDC 032E7821 */ addu $t7, $t9, $t6 -/* 012BE0 70011FE0 10000012 */ b .L7001202C -/* 012BE4 70011FE4 A1F80008 */ sb $t8, 8($t7) -.L70011FE8: -/* 012BE8 70011FE8 8E59003C */ lw $t9, 0x3c($s2) -/* 012BEC 70011FEC 3C018003 */ lui $at, %hi(F32_800296C4) -/* 012BF0 70011FF0 02402025 */ move $a0, $s2 -/* 012BF4 70011FF4 AE590018 */ sw $t9, 0x18($s2) -/* 012BF8 70011FF8 0C00440C */ jal ultra_70011030 -/* 012BFC 70011FFC C42C96C4 */ lwc1 $f12, %lo(F32_800296C4)($at) -/* 012C00 70012000 8E450020 */ lw $a1, 0x20($s2) -/* 012C04 70012004 50A0000A */ beql $a1, $zero, .L70012030 -/* 012C08 70012008 02A02025 */ move $a0, $s5 -/* 012C0C 7001200C 0C006F4D */ jal __initFromBank -/* 012C10 70012010 02402025 */ move $a0, $s2 -/* 012C14 70012014 10000006 */ b .L70012030 -/* 012C18 70012018 02A02025 */ move $a0, $s5 -.L7001201C: -/* 012C1C 7001201C 8E45003C */ lw $a1, 0x3c($s2) -/* 012C20 70012020 02402025 */ move $a0, $s2 -/* 012C24 70012024 0C006F4D */ jal __initFromBank -/* 012C28 70012028 AE450020 */ sw $a1, 0x20($s2) -.L7001202C: -/* 012C2C 7001202C 02A02025 */ move $a0, $s5 -.L70012030: -/* 012C30 70012030 0C004C08 */ jal alEvtqNextEvent -/* 012C34 70012034 8FA50050 */ lw $a1, 0x50($sp) -/* 012C38 70012038 1040FE9C */ beqz $v0, .L70011AAC -/* 012C3C 7001203C AE420028 */ sw $v0, 0x28($s2) -/* 012C40 70012040 8E4E001C */ lw $t6, 0x1c($s2) -/* 012C44 70012044 01C2C021 */ addu $t8, $t6, $v0 -/* 012C48 70012048 AE58001C */ sw $t8, 0x1c($s2) -/* 012C4C 7001204C 8FBF0044 */ lw $ra, 0x44($sp) -/* 012C50 70012050 8FBE0040 */ lw $fp, 0x40($sp) -/* 012C54 70012054 8FB7003C */ lw $s7, 0x3c($sp) -/* 012C58 70012058 8FB60038 */ lw $s6, 0x38($sp) -/* 012C5C 7001205C 8FB50034 */ lw $s5, 0x34($sp) -/* 012C60 70012060 8FB40030 */ lw $s4, 0x30($sp) -/* 012C64 70012064 8FB3002C */ lw $s3, 0x2c($sp) -/* 012C68 70012068 8FB20028 */ lw $s2, 0x28($sp) -/* 012C6C 7001206C 8FB10024 */ lw $s1, 0x24($sp) -/* 012C70 70012070 8FB00020 */ lw $s0, 0x20($sp) -/* 012C74 70012074 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 012C78 70012078 03E00008 */ jr $ra -/* 012C7C 7001207C 27BD00A0 */ addiu $sp, $sp, 0xa0 - -glabel alCSPNew -/* 012C80 70012080 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 012C84 70012084 AFBF0024 */ sw $ra, 0x24($sp) -/* 012C88 70012088 AFB10020 */ sw $s1, 0x20($sp) -/* 012C8C 7001208C AFB0001C */ sw $s0, 0x1c($sp) -/* 012C90 70012090 8CA6000C */ lw $a2, 0xc($a1) -/* 012C94 70012094 AC800020 */ sw $zero, 0x20($a0) -/* 012C98 70012098 AC800018 */ sw $zero, 0x18($a0) -/* 012C9C 7001209C 3C0E8002 */ lui $t6, %hi(alGlobals) -/* 012CA0 700120A0 8DCE76E0 */ lw $t6, %lo(alGlobals)($t6) -/* 012CA4 700120A4 240F00FF */ li $t7, 255 -/* 012CA8 700120A8 241801E8 */ li $t8, 488 -/* 012CAC 700120AC 24197FFF */ li $t9, 32767 -/* 012CB0 700120B0 24083E80 */ li $t0, 16000 -/* 012CB4 700120B4 A48F0030 */ sh $t7, 0x30($a0) -/* 012CB8 700120B8 AC980024 */ sw $t8, 0x24($a0) -/* 012CBC 700120BC AC800028 */ sw $zero, 0x28($a0) -/* 012CC0 700120C0 AC80002C */ sw $zero, 0x2c($a0) -/* 012CC4 700120C4 A4990032 */ sh $t9, 0x32($a0) -/* 012CC8 700120C8 AC88005C */ sw $t0, 0x5c($a0) -/* 012CCC 700120CC AC80001C */ sw $zero, 0x1c($a0) -/* 012CD0 700120D0 AC8E0014 */ sw $t6, 0x14($a0) -/* 012CD4 700120D4 8CA90010 */ lw $t1, 0x10($a1) -/* 012CD8 700120D8 240C0009 */ li $t4, 9 -/* 012CDC 700120DC 00A08825 */ move $s1, $a1 -/* 012CE0 700120E0 AC890070 */ sw $t1, 0x70($a0) -/* 012CE4 700120E4 8CAA0014 */ lw $t2, 0x14($a1) -/* 012CE8 700120E8 00808025 */ move $s0, $a0 -/* 012CEC 700120EC 240E0010 */ li $t6, 16 -/* 012CF0 700120F0 AC8A0074 */ sw $t2, 0x74($a0) -/* 012CF4 700120F4 8CAB0018 */ lw $t3, 0x18($a1) -/* 012CF8 700120F8 A48C0038 */ sh $t4, 0x38($a0) -/* 012CFC 700120FC AC8B0078 */ sw $t3, 0x78($a0) -/* 012D00 70012100 90AD0008 */ lbu $t5, 8($a1) -/* 012D04 70012104 00002825 */ move $a1, $zero -/* 012D08 70012108 A08D0034 */ sb $t5, 0x34($a0) -/* 012D0C 7001210C 92270008 */ lbu $a3, 8($s1) -/* 012D10 70012110 AFAE0010 */ sw $t6, 0x10($sp) -/* 012D14 70012114 00002025 */ move $a0, $zero -/* 012D18 70012118 0C003AD4 */ jal alHeapDBAlloc -/* 012D1C 7001211C AFA6002C */ sw $a2, 0x2c($sp) -/* 012D20 70012120 AE020060 */ sw $v0, 0x60($s0) -/* 012D24 70012124 0C0074E9 */ jal __initChanState -/* 012D28 70012128 02002025 */ move $a0, $s0 -/* 012D2C 7001212C 8E270000 */ lw $a3, ($s1) -/* 012D30 70012130 240F0038 */ li $t7, 56 -/* 012D34 70012134 AFAF0010 */ sw $t7, 0x10($sp) -/* 012D38 70012138 00002025 */ move $a0, $zero -/* 012D3C 7001213C 00002825 */ move $a1, $zero -/* 012D40 70012140 0C003AD4 */ jal alHeapDBAlloc -/* 012D44 70012144 8FA6002C */ lw $a2, 0x2c($sp) -/* 012D48 70012148 AE00006C */ sw $zero, 0x6c($s0) -/* 012D4C 7001214C 8E380000 */ lw $t8, ($s1) -/* 012D50 70012150 00002025 */ move $a0, $zero -/* 012D54 70012154 00002825 */ move $a1, $zero -/* 012D58 70012158 1B00000B */ blez $t8, .L70012188 -/* 012D5C 7001215C 2409001C */ li $t1, 28 -/* 012D60 70012160 00401825 */ move $v1, $v0 -/* 012D64 70012164 8E19006C */ lw $t9, 0x6c($s0) -.L70012168: -/* 012D68 70012168 24840001 */ addiu $a0, $a0, 1 -/* 012D6C 7001216C AC790000 */ sw $t9, ($v1) -/* 012D70 70012170 AE03006C */ sw $v1, 0x6c($s0) -/* 012D74 70012174 8E280000 */ lw $t0, ($s1) -/* 012D78 70012178 24630038 */ addiu $v1, $v1, 0x38 -/* 012D7C 7001217C 0088082A */ slt $at, $a0, $t0 -/* 012D80 70012180 5420FFF9 */ bnezl $at, .L70012168 -/* 012D84 70012184 8E19006C */ lw $t9, 0x6c($s0) -.L70012188: -/* 012D88 70012188 AE000064 */ sw $zero, 0x64($s0) -/* 012D8C 7001218C AE000068 */ sw $zero, 0x68($s0) -/* 012D90 70012190 8E270004 */ lw $a3, 4($s1) -/* 012D94 70012194 AFA90010 */ sw $t1, 0x10($sp) -/* 012D98 70012198 8FA6002C */ lw $a2, 0x2c($sp) -/* 012D9C 7001219C 0C003AD4 */ jal alHeapDBAlloc -/* 012DA0 700121A0 00002025 */ move $a0, $zero -/* 012DA4 700121A4 26040048 */ addiu $a0, $s0, 0x48 -/* 012DA8 700121A8 00402825 */ move $a1, $v0 -/* 012DAC 700121AC 0C004C2B */ jal alEvtqNew -/* 012DB0 700121B0 8E260004 */ lw $a2, 4($s1) -/* 012DB4 700121B4 3C0A7001 */ lui $t2, %hi(ultra_70011A6C) # $t2, 0x7001 -/* 012DB8 700121B8 254A1A6C */ addiu $t2, %lo(ultra_70011A6C) # addiu $t2, $t2, 0x1a6c -/* 012DBC 700121BC AE000000 */ sw $zero, ($s0) -/* 012DC0 700121C0 AE0A0008 */ sw $t2, 8($s0) -/* 012DC4 700121C4 AE100004 */ sw $s0, 4($s0) -/* 012DC8 700121C8 3C048002 */ lui $a0, %hi(alGlobals) -/* 012DCC 700121CC 8C8476E0 */ lw $a0, %lo(alGlobals)($a0) -/* 012DD0 700121D0 0C004C48 */ jal alSynAddPlayer -/* 012DD4 700121D4 02002825 */ move $a1, $s0 -/* 012DD8 700121D8 8FBF0024 */ lw $ra, 0x24($sp) -/* 012DDC 700121DC 8FB0001C */ lw $s0, 0x1c($sp) -/* 012DE0 700121E0 8FB10020 */ lw $s1, 0x20($sp) -/* 012DE4 700121E4 03E00008 */ jr $ra -/* 012DE8 700121E8 27BD0040 */ addiu $sp, $sp, 0x40 - -/* 012DEC 700121EC 00000000 */ nop - -.section .rodata -.word 0,0,0 -glabel audio_related_jump_table_0 -.word .L70011620, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011280, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011678, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011750, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011988, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L700116DC, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L70011A54, .L70011A54, .L70011A54, .L70011A54 -.word .L700119BC -glabel audio_related_jump_table_1 -.word .L70011AD0 -.word .L7001202C -.word .L70011E00 -.word .L7001202C -.word .L7001202C -.word .L70011BBC -.word .L70011C08 -.word .L70011E1C -.word .L7001202C -.word .L70011B9C -.word .L70011E3C -.word .L7001202C -.word .L70011FCC -.word .L70011FE8 -.word .L7001201C -.word .L70011EA0 -.word .L70011EC4 -.word .L70011F30 -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L70011E00 -.word .L70011C6C -.word .L70011D78 -glabel audio_related_jump_table_2 -.word .L70011B0C -.word .L7001202C -.word .L70011B34 -.word .L70011B60 -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L7001202C -.word .L70011B8C -.word .L70011B8C -.word .L70011B8C -glabel F32_800296C4 - .float 500000.0 -.align 4 - -.section .text -glabel alSeqpSetBank -/* 012DF0 700121F0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 012DF4 700121F4 AFBF0014 */ sw $ra, 0x14($sp) -/* 012DF8 700121F8 240E000E */ li $t6, 14 -/* 012DFC 700121FC AFA5001C */ sw $a1, 0x1c($sp) -/* 012E00 70012200 A7AE0018 */ sh $t6, 0x18($sp) -/* 012E04 70012204 27A50018 */ addiu $a1, $sp, 0x18 -/* 012E08 70012208 24840048 */ addiu $a0, $a0, 0x48 -/* 012E0C 7001220C 0C004BBF */ jal alEvtqPostEvent -/* 012E10 70012210 00003025 */ move $a2, $zero -/* 012E14 70012214 8FBF0014 */ lw $ra, 0x14($sp) -/* 012E18 70012218 27BD0028 */ addiu $sp, $sp, 0x28 -/* 012E1C 7001221C 03E00008 */ jr $ra -/* 012E20 70012220 00000000 */ nop - -/* 012E24 70012224 00000000 */ nop -/* 012E28 70012228 00000000 */ nop -/* 012E2C 7001222C 00000000 */ nop -glabel alCSPGetState -/* 012E30 70012230 03E00008 */ jr $ra -/* 012E34 70012234 8C82002C */ lw $v0, 0x2c($a0) - -/* 012E38 70012238 00000000 */ nop -/* 012E3C 7001223C 00000000 */ nop -glabel alCSeqGetLoc -/* 012E40 70012240 8C8E0004 */ lw $t6, 4($a0) -/* 012E44 70012244 00803025 */ move $a2, $a0 -/* 012E48 70012248 00804025 */ move $t0, $a0 -/* 012E4C 7001224C ACAE0000 */ sw $t6, ($a1) -/* 012E50 70012250 8C8F000C */ lw $t7, 0xc($a0) -/* 012E54 70012254 00001025 */ move $v0, $zero -/* 012E58 70012258 00A01825 */ move $v1, $a1 -/* 012E5C 7001225C ACAF0004 */ sw $t7, 4($a1) -/* 012E60 70012260 8C980010 */ lw $t8, 0x10($a0) -/* 012E64 70012264 24040010 */ li $a0, 16 -/* 012E68 70012268 00A03825 */ move $a3, $a1 -/* 012E6C 7001226C ACB80008 */ sw $t8, 8($a1) -.L70012270: -/* 012E70 70012270 8CD90018 */ lw $t9, 0x18($a2) -/* 012E74 70012274 24420002 */ addiu $v0, $v0, 2 -/* 012E78 70012278 24630008 */ addiu $v1, $v1, 8 -/* 012E7C 7001227C AC790004 */ sw $t9, 4($v1) -/* 012E80 70012280 8CC90058 */ lw $t1, 0x58($a2) -/* 012E84 70012284 24C60008 */ addiu $a2, $a2, 8 -/* 012E88 70012288 24E70002 */ addiu $a3, $a3, 2 -/* 012E8C 7001228C AC690044 */ sw $t1, 0x44($v1) -/* 012E90 70012290 910A0098 */ lbu $t2, 0x98($t0) -/* 012E94 70012294 25080002 */ addiu $t0, $t0, 2 -/* 012E98 70012298 A0EA008A */ sb $t2, 0x8a($a3) -/* 012E9C 7001229C 910B00A6 */ lbu $t3, 0xa6($t0) -/* 012EA0 700122A0 A0EB009A */ sb $t3, 0x9a($a3) -/* 012EA4 700122A4 8CCC00B0 */ lw $t4, 0xb0($a2) -/* 012EA8 700122A8 AC6C00A4 */ sw $t4, 0xa4($v1) -/* 012EAC 700122AC 8CCD0014 */ lw $t5, 0x14($a2) -/* 012EB0 700122B0 AC6D0008 */ sw $t5, 8($v1) -/* 012EB4 700122B4 8CCE0054 */ lw $t6, 0x54($a2) -/* 012EB8 700122B8 AC6E0048 */ sw $t6, 0x48($v1) -/* 012EBC 700122BC 910F0097 */ lbu $t7, 0x97($t0) -/* 012EC0 700122C0 A0EF008B */ sb $t7, 0x8b($a3) -/* 012EC4 700122C4 911800A7 */ lbu $t8, 0xa7($t0) -/* 012EC8 700122C8 A0F8009B */ sb $t8, 0x9b($a3) -/* 012ECC 700122CC 8CD900B4 */ lw $t9, 0xb4($a2) -/* 012ED0 700122D0 1444FFE7 */ bne $v0, $a0, .L70012270 -/* 012ED4 700122D4 AC7900A8 */ sw $t9, 0xa8($v1) -/* 012ED8 700122D8 03E00008 */ jr $ra -/* 012EDC 700122DC 00000000 */ nop - -glabel alCSeqSetLoc -/* 012EE0 700122E0 8CAE0000 */ lw $t6, ($a1) -/* 012EE4 700122E4 00801825 */ move $v1, $a0 -/* 012EE8 700122E8 00803825 */ move $a3, $a0 -/* 012EEC 700122EC AC8E0004 */ sw $t6, 4($a0) -/* 012EF0 700122F0 8CAF0004 */ lw $t7, 4($a1) -/* 012EF4 700122F4 00001025 */ move $v0, $zero -/* 012EF8 700122F8 00A03025 */ move $a2, $a1 -/* 012EFC 700122FC AC8F000C */ sw $t7, 0xc($a0) -/* 012F00 70012300 8CB80008 */ lw $t8, 8($a1) -/* 012F04 70012304 00A04025 */ move $t0, $a1 -/* 012F08 70012308 AC980010 */ sw $t8, 0x10($a0) -/* 012F0C 7001230C 24040010 */ li $a0, 16 -.L70012310: -/* 012F10 70012310 8CD9000C */ lw $t9, 0xc($a2) -/* 012F14 70012314 24420002 */ addiu $v0, $v0, 2 -/* 012F18 70012318 24630008 */ addiu $v1, $v1, 8 -/* 012F1C 7001231C AC790010 */ sw $t9, 0x10($v1) -/* 012F20 70012320 8CC9004C */ lw $t1, 0x4c($a2) -/* 012F24 70012324 24C60008 */ addiu $a2, $a2, 8 -/* 012F28 70012328 24E70002 */ addiu $a3, $a3, 2 -/* 012F2C 7001232C AC690050 */ sw $t1, 0x50($v1) -/* 012F30 70012330 910A008C */ lbu $t2, 0x8c($t0) -/* 012F34 70012334 25080002 */ addiu $t0, $t0, 2 -/* 012F38 70012338 A0EA0096 */ sb $t2, 0x96($a3) -/* 012F3C 7001233C 910B009A */ lbu $t3, 0x9a($t0) -/* 012F40 70012340 A0EB00A6 */ sb $t3, 0xa6($a3) -/* 012F44 70012344 8CCC00A4 */ lw $t4, 0xa4($a2) -/* 012F48 70012348 AC6C00B0 */ sw $t4, 0xb0($v1) -/* 012F4C 7001234C 8CCD0008 */ lw $t5, 8($a2) -/* 012F50 70012350 AC6D0014 */ sw $t5, 0x14($v1) -/* 012F54 70012354 8CCE0048 */ lw $t6, 0x48($a2) -/* 012F58 70012358 AC6E0054 */ sw $t6, 0x54($v1) -/* 012F5C 7001235C 910F008B */ lbu $t7, 0x8b($t0) -/* 012F60 70012360 A0EF0097 */ sb $t7, 0x97($a3) -/* 012F64 70012364 9118009B */ lbu $t8, 0x9b($t0) -/* 012F68 70012368 A0F800A7 */ sb $t8, 0xa7($a3) -/* 012F6C 7001236C 8CD900A8 */ lw $t9, 0xa8($a2) -/* 012F70 70012370 1444FFE7 */ bne $v0, $a0, .L70012310 -/* 012F74 70012374 AC7900B4 */ sw $t9, 0xb4($v1) -/* 012F78 70012378 03E00008 */ jr $ra -/* 012F7C 7001237C 00000000 */ nop - -glabel ultra_70012380 -/* 012F80 70012380 00851021 */ addu $v0, $a0, $a1 -/* 012F84 70012384 904E0098 */ lbu $t6, 0x98($v0) -/* 012F88 70012388 00057880 */ sll $t7, $a1, 2 -/* 012F8C 7001238C 008F3021 */ addu $a2, $a0, $t7 -/* 012F90 70012390 51C0000D */ beql $t6, $zero, .L700123C8 -/* 012F94 70012394 8CC70018 */ lw $a3, 0x18($a2) -/* 012F98 70012398 00057880 */ sll $t7, $a1, 2 -/* 012F9C 7001239C 008F3021 */ addu $a2, $a0, $t7 -/* 012FA0 700123A0 8CC70058 */ lw $a3, 0x58($a2) -/* 012FA4 700123A4 90E30000 */ lbu $v1, ($a3) -/* 012FA8 700123A8 24F80001 */ addiu $t8, $a3, 1 -/* 012FAC 700123AC ACD80058 */ sw $t8, 0x58($a2) -/* 012FB0 700123B0 90590098 */ lbu $t9, 0x98($v0) -/* 012FB4 700123B4 272EFFFF */ addiu $t6, $t9, -1 -/* 012FB8 700123B8 A04E0098 */ sb $t6, 0x98($v0) -/* 012FBC 700123BC 03E00008 */ jr $ra -/* 012FC0 700123C0 00601025 */ move $v0, $v1 - -/* 012FC4 700123C4 8CC70018 */ lw $a3, 0x18($a2) -.L700123C8: -/* 012FC8 700123C8 240800FE */ li $t0, 254 -/* 012FCC 700123CC 90E30000 */ lbu $v1, ($a3) -/* 012FD0 700123D0 24F80001 */ addiu $t8, $a3, 1 -/* 012FD4 700123D4 ACD80018 */ sw $t8, 0x18($a2) -/* 012FD8 700123D8 15030018 */ bne $t0, $v1, .L7001243C -/* 012FDC 700123DC 00000000 */ nop -/* 012FE0 700123E0 93040000 */ lbu $a0, ($t8) -/* 012FE4 700123E4 27190001 */ addiu $t9, $t8, 1 -/* 012FE8 700123E8 ACD90018 */ sw $t9, 0x18($a2) -/* 012FEC 700123EC 11040013 */ beq $t0, $a0, .L7001243C -/* 012FF0 700123F0 272E0001 */ addiu $t6, $t9, 1 -/* 012FF4 700123F4 93230000 */ lbu $v1, ($t9) -/* 012FF8 700123F8 ACCE0018 */ sw $t6, 0x18($a2) -/* 012FFC 700123FC 91C50000 */ lbu $a1, ($t6) -/* 013000 70012400 25CF0001 */ addiu $t7, $t6, 1 -/* 013004 70012404 0004CA00 */ sll $t9, $a0, 8 -/* 013008 70012408 ACCF0018 */ sw $t7, 0x18($a2) -/* 01300C 7001240C 03237021 */ addu $t6, $t9, $v1 -/* 013010 70012410 01EE7823 */ subu $t7, $t7, $t6 -/* 013014 70012414 25F9FFFC */ addiu $t9, $t7, -4 -/* 013018 70012418 ACD90058 */ sw $t9, 0x58($a2) -/* 01301C 7001241C A0450098 */ sb $a1, 0x98($v0) -/* 013020 70012420 8CC70058 */ lw $a3, 0x58($a2) -/* 013024 70012424 90E30000 */ lbu $v1, ($a3) -/* 013028 70012428 24F80001 */ addiu $t8, $a3, 1 -/* 01302C 7001242C ACD80058 */ sw $t8, 0x58($a2) -/* 013030 70012430 904E0098 */ lbu $t6, 0x98($v0) -/* 013034 70012434 25CFFFFF */ addiu $t7, $t6, -1 -/* 013038 70012438 A04F0098 */ sb $t7, 0x98($v0) -.L7001243C: -/* 01303C 7001243C 03E00008 */ jr $ra -/* 013040 70012440 00601025 */ move $v0, $v1 - -glabel ultra_70012444 -/* 013044 70012444 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 013048 70012448 AFBF0014 */ sw $ra, 0x14($sp) -/* 01304C 7001244C 01402025 */ move $a0, $t2 -/* 013050 70012450 0C0048E0 */ jal ultra_70012380 -/* 013054 70012454 01602825 */ move $a1, $t3 -/* 013058 70012458 304E0080 */ andi $t6, $v0, 0x80 -/* 01305C 7001245C 11C0000A */ beqz $t6, .L70012488 -/* 013060 70012460 00404825 */ move $t1, $v0 -/* 013064 70012464 3049007F */ andi $t1, $v0, 0x7f -.L70012468: -/* 013068 70012468 01402025 */ move $a0, $t2 -/* 01306C 7001246C 0C0048E0 */ jal ultra_70012380 -/* 013070 70012470 01602825 */ move $a1, $t3 -/* 013074 70012474 000979C0 */ sll $t7, $t1, 7 -/* 013078 70012478 3058007F */ andi $t8, $v0, 0x7f -/* 01307C 7001247C 30590080 */ andi $t9, $v0, 0x80 -/* 013080 70012480 1720FFF9 */ bnez $t9, .L70012468 -/* 013084 70012484 01F84821 */ addu $t1, $t7, $t8 -.L70012488: -/* 013088 70012488 8FBF0014 */ lw $ra, 0x14($sp) -/* 01308C 7001248C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 013090 70012490 01201025 */ move $v0, $t1 -/* 013094 70012494 03E00008 */ jr $ra -/* 013098 70012498 00000000 */ nop - -/* 01309C 7001249C 03E00008 */ jr $ra -/* 0130A0 700124A0 00000000 */ nop - -glabel alCSeqNextEvent -/* 0130A4 700124A4 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0130A8 700124A8 AFB00018 */ sw $s0, 0x18($sp) -/* 0130AC 700124AC 00A08025 */ move $s0, $a1 -/* 0130B0 700124B0 AFBF001C */ sw $ra, 0x1c($sp) -/* 0130B4 700124B4 00806025 */ move $t4, $a0 -/* 0130B8 700124B8 2409FFFF */ li $t1, -1 -/* 0130BC 700124BC 8C860010 */ lw $a2, 0x10($a0) -/* 0130C0 700124C0 24050010 */ li $a1, 16 -/* 0130C4 700124C4 8FAB0024 */ lw $t3, 0x24($sp) -/* 0130C8 700124C8 00001025 */ move $v0, $zero -/* 0130CC 700124CC 8D8E0004 */ lw $t6, 4($t4) -.L700124D0: -/* 0130D0 700124D0 004E7806 */ srlv $t7, $t6, $v0 -/* 0130D4 700124D4 31F80001 */ andi $t8, $t7, 1 -/* 0130D8 700124D8 53000010 */ beql $t8, $zero, .L7001251C -/* 0130DC 700124DC 24420001 */ addiu $v0, $v0, 1 -/* 0130E0 700124E0 8D8E0014 */ lw $t6, 0x14($t4) -/* 0130E4 700124E4 0002C880 */ sll $t9, $v0, 2 -/* 0130E8 700124E8 01991821 */ addu $v1, $t4, $t9 -/* 0130EC 700124EC 51C00005 */ beql $t6, $zero, .L70012504 -/* 0130F0 700124F0 8C6400B8 */ lw $a0, 0xb8($v1) -/* 0130F4 700124F4 8C6F00B8 */ lw $t7, 0xb8($v1) -/* 0130F8 700124F8 01E6C023 */ subu $t8, $t7, $a2 -/* 0130FC 700124FC AC7800B8 */ sw $t8, 0xb8($v1) -/* 013100 70012500 8C6400B8 */ lw $a0, 0xb8($v1) -.L70012504: -/* 013104 70012504 0089082B */ sltu $at, $a0, $t1 -/* 013108 70012508 50200004 */ beql $at, $zero, .L7001251C -/* 01310C 7001250C 24420001 */ addiu $v0, $v0, 1 -/* 013110 70012510 00804825 */ move $t1, $a0 -/* 013114 70012514 00405825 */ move $t3, $v0 -/* 013118 70012518 24420001 */ addiu $v0, $v0, 1 -.L7001251C: -/* 01311C 7001251C 5445FFEC */ bnel $v0, $a1, .L700124D0 -/* 013120 70012520 8D8E0004 */ lw $t6, 4($t4) -/* 013124 70012524 01802025 */ move $a0, $t4 -/* 013128 70012528 0C0048E0 */ jal ultra_70012380 -/* 01312C 7001252C 01602825 */ move $a1, $t3 -/* 013130 70012530 240100FF */ li $at, 255 -/* 013134 70012534 304A00FF */ andi $t2, $v0, 0xff -/* 013138 70012538 1441005A */ bne $v0, $at, .L700126A4 -/* 01313C 7001253C 00401825 */ move $v1, $v0 -/* 013140 70012540 01802025 */ move $a0, $t4 -/* 013144 70012544 0C0048E0 */ jal ultra_70012380 -/* 013148 70012548 01602825 */ move $a1, $t3 -/* 01314C 7001254C 24010051 */ li $at, 81 -/* 013150 70012550 304600FF */ andi $a2, $v0, 0xff -/* 013154 70012554 14410014 */ bne $v0, $at, .L700125A8 -/* 013158 70012558 00401825 */ move $v1, $v0 -/* 01315C 7001255C 24190003 */ li $t9, 3 -/* 013160 70012560 A6190000 */ sh $t9, ($s0) -/* 013164 70012564 A20A0008 */ sb $t2, 8($s0) -/* 013168 70012568 A2060009 */ sb $a2, 9($s0) -/* 01316C 7001256C 01802025 */ move $a0, $t4 -/* 013170 70012570 0C0048E0 */ jal ultra_70012380 -/* 013174 70012574 01602825 */ move $a1, $t3 -/* 013178 70012578 A202000B */ sb $v0, 0xb($s0) -/* 01317C 7001257C 01802025 */ move $a0, $t4 -/* 013180 70012580 0C0048E0 */ jal ultra_70012380 -/* 013184 70012584 01602825 */ move $a1, $t3 -/* 013188 70012588 A202000C */ sb $v0, 0xc($s0) -/* 01318C 7001258C 01802025 */ move $a0, $t4 -/* 013190 70012590 0C0048E0 */ jal ultra_70012380 -/* 013194 70012594 01602825 */ move $a1, $t3 -/* 013198 70012598 A202000D */ sb $v0, 0xd($s0) -/* 01319C 7001259C 018B7021 */ addu $t6, $t4, $t3 -/* 0131A0 700125A0 10000067 */ b .L70012740 -/* 0131A4 700125A4 A1C000A8 */ sb $zero, 0xa8($t6) -.L700125A8: -/* 0131A8 700125A8 2401002F */ li $at, 47 -/* 0131AC 700125AC 5461000E */ bnel $v1, $at, .L700125E8 -/* 0131B0 700125B0 2401002E */ li $at, 46 -/* 0131B4 700125B4 8D8F0004 */ lw $t7, 4($t4) -/* 0131B8 700125B8 24180001 */ li $t8, 1 -/* 0131BC 700125BC 0178C804 */ sllv $t9, $t8, $t3 -/* 0131C0 700125C0 01F97026 */ xor $t6, $t7, $t9 -/* 0131C4 700125C4 11C00004 */ beqz $t6, .L700125D8 -/* 0131C8 700125C8 AD8E0004 */ sw $t6, 4($t4) -/* 0131CC 700125CC 240F0012 */ li $t7, 18 -/* 0131D0 700125D0 1000005B */ b .L70012740 -/* 0131D4 700125D4 A60F0000 */ sh $t7, ($s0) -.L700125D8: -/* 0131D8 700125D8 24190004 */ li $t9, 4 -/* 0131DC 700125DC 10000058 */ b .L70012740 -/* 0131E0 700125E0 A6190000 */ sh $t9, ($s0) -/* 0131E4 700125E4 2401002E */ li $at, 46 -.L700125E8: -/* 0131E8 700125E8 1461000B */ bne $v1, $at, .L70012618 -/* 0131EC 700125EC 01802025 */ move $a0, $t4 -/* 0131F0 700125F0 0C0048E0 */ jal ultra_70012380 -/* 0131F4 700125F4 01602825 */ move $a1, $t3 -/* 0131F8 700125F8 01802025 */ move $a0, $t4 -/* 0131FC 700125FC 0C0048E0 */ jal ultra_70012380 -/* 013200 70012600 01602825 */ move $a1, $t3 -/* 013204 70012604 018B7021 */ addu $t6, $t4, $t3 -/* 013208 70012608 A1C000A8 */ sb $zero, 0xa8($t6) -/* 01320C 7001260C 24180013 */ li $t8, 19 -/* 013210 70012610 1000004B */ b .L70012740 -/* 013214 70012614 A6180000 */ sh $t8, ($s0) -.L70012618: -/* 013218 70012618 2401002D */ li $at, 45 -/* 01321C 7001261C 14610048 */ bne $v1, $at, .L70012740 -/* 013220 70012620 000B7880 */ sll $t7, $t3, 2 -/* 013224 70012624 018F6821 */ addu $t5, $t4, $t7 -/* 013228 70012628 8DA20018 */ lw $v0, 0x18($t5) -/* 01322C 7001262C 240100FF */ li $at, 255 -/* 013230 70012630 90440001 */ lbu $a0, 1($v0) -/* 013234 70012634 24420001 */ addiu $v0, $v0, 1 -/* 013238 70012638 24590005 */ addiu $t9, $v0, 5 -/* 01323C 7001263C 14800004 */ bnez $a0, .L70012650 -/* 013240 70012640 9045FFFF */ lbu $a1, -1($v0) -/* 013244 70012644 A0450000 */ sb $a1, ($v0) -/* 013248 70012648 10000011 */ b .L70012690 -/* 01324C 7001264C ADB90018 */ sw $t9, 0x18($t5) -.L70012650: -/* 013250 70012650 10810002 */ beq $a0, $at, .L7001265C -/* 013254 70012654 248EFFFF */ addiu $t6, $a0, -1 -/* 013258 70012658 A04E0000 */ sb $t6, ($v0) -.L7001265C: -/* 01325C 7001265C 904F0002 */ lbu $t7, 2($v0) -/* 013260 70012660 90430001 */ lbu $v1, 1($v0) -/* 013264 70012664 904E0003 */ lbu $t6, 3($v0) -/* 013268 70012668 000FCC00 */ sll $t9, $t7, 0x10 -/* 01326C 7001266C 0003C600 */ sll $t8, $v1, 0x18 -/* 013270 70012670 904F0004 */ lbu $t7, 4($v0) -/* 013274 70012674 03191821 */ addu $v1, $t8, $t9 -/* 013278 70012678 000EC200 */ sll $t8, $t6, 8 -/* 01327C 7001267C 00781821 */ addu $v1, $v1, $t8 -/* 013280 70012680 24420005 */ addiu $v0, $v0, 5 -/* 013284 70012684 006F1821 */ addu $v1, $v1, $t7 -/* 013288 70012688 0043C823 */ subu $t9, $v0, $v1 -/* 01328C 7001268C ADB90018 */ sw $t9, 0x18($t5) -.L70012690: -/* 013290 70012690 018B7021 */ addu $t6, $t4, $t3 -/* 013294 70012694 A1C000A8 */ sb $zero, 0xa8($t6) -/* 013298 70012698 24180014 */ li $t8, 20 -/* 01329C 7001269C 10000028 */ b .L70012740 -/* 0132A0 700126A0 A6180000 */ sh $t8, ($s0) -.L700126A4: -/* 0132A4 700126A4 240F0001 */ li $t7, 1 -/* 0132A8 700126A8 30790080 */ andi $t9, $v1, 0x80 -/* 0132AC 700126AC 13200009 */ beqz $t9, .L700126D4 -/* 0132B0 700126B0 A60F0000 */ sh $t7, ($s0) -/* 0132B4 700126B4 A20A0008 */ sb $t2, 8($s0) -/* 0132B8 700126B8 01802025 */ move $a0, $t4 -/* 0132BC 700126BC 0C0048E0 */ jal ultra_70012380 -/* 0132C0 700126C0 01602825 */ move $a1, $t3 -/* 0132C4 700126C4 A2020009 */ sb $v0, 9($s0) -/* 0132C8 700126C8 018B7021 */ addu $t6, $t4, $t3 -/* 0132CC 700126CC 10000005 */ b .L700126E4 -/* 0132D0 700126D0 A1CA00A8 */ sb $t2, 0xa8($t6) -.L700126D4: -/* 0132D4 700126D4 018BC021 */ addu $t8, $t4, $t3 -/* 0132D8 700126D8 930F00A8 */ lbu $t7, 0xa8($t8) -/* 0132DC 700126DC A2020009 */ sb $v0, 9($s0) -/* 0132E0 700126E0 A20F0008 */ sb $t7, 8($s0) -.L700126E4: -/* 0132E4 700126E4 92020008 */ lbu $v0, 8($s0) -/* 0132E8 700126E8 240100C0 */ li $at, 192 -/* 0132EC 700126EC 305900F0 */ andi $t9, $v0, 0xf0 -/* 0132F0 700126F0 13210012 */ beq $t9, $at, .L7001273C -/* 0132F4 700126F4 240100D0 */ li $at, 208 -/* 0132F8 700126F8 13210010 */ beq $t9, $at, .L7001273C -/* 0132FC 700126FC 01802025 */ move $a0, $t4 -/* 013300 70012700 0C0048E0 */ jal ultra_70012380 -/* 013304 70012704 01602825 */ move $a1, $t3 -/* 013308 70012708 920E0008 */ lbu $t6, 8($s0) -/* 01330C 7001270C 24010090 */ li $at, 144 -/* 013310 70012710 A202000A */ sb $v0, 0xa($s0) -/* 013314 70012714 31D800F0 */ andi $t8, $t6, 0xf0 -/* 013318 70012718 17010009 */ bne $t8, $at, .L70012740 -/* 01331C 7001271C 01805025 */ move $t2, $t4 -/* 013320 70012720 AFA90028 */ sw $t1, 0x28($sp) -/* 013324 70012724 0C004911 */ jal ultra_70012444 -/* 013328 70012728 AFAB0024 */ sw $t3, 0x24($sp) -/* 01332C 7001272C 8FA90028 */ lw $t1, 0x28($sp) -/* 013330 70012730 8FAB0024 */ lw $t3, 0x24($sp) -/* 013334 70012734 10000002 */ b .L70012740 -/* 013338 70012738 AE02000C */ sw $v0, 0xc($s0) -.L7001273C: -/* 01333C 7001273C A200000A */ sb $zero, 0xa($s0) -.L70012740: -/* 013340 70012740 AE090004 */ sw $t1, 4($s0) -/* 013344 70012744 8D8F000C */ lw $t7, 0xc($t4) -/* 013348 70012748 AD890010 */ sw $t1, 0x10($t4) -/* 01334C 7001274C 24010012 */ li $at, 18 -/* 013350 70012750 01E9C821 */ addu $t9, $t7, $t1 -/* 013354 70012754 AD99000C */ sw $t9, 0xc($t4) -/* 013358 70012758 860E0000 */ lh $t6, ($s0) -/* 01335C 7001275C 01805025 */ move $t2, $t4 -/* 013360 70012760 000BC080 */ sll $t8, $t3, 2 -/* 013364 70012764 51C10007 */ beql $t6, $at, .L70012784 -/* 013368 70012768 240E0001 */ li $t6, 1 -/* 01336C 7001276C 0C004911 */ jal ultra_70012444 -/* 013370 70012770 01986821 */ addu $t5, $t4, $t8 -/* 013374 70012774 8DAF00B8 */ lw $t7, 0xb8($t5) -/* 013378 70012778 01E2C821 */ addu $t9, $t7, $v0 -/* 01337C 7001277C ADB900B8 */ sw $t9, 0xb8($t5) -/* 013380 70012780 240E0001 */ li $t6, 1 -.L70012784: -/* 013384 70012784 AD8E0014 */ sw $t6, 0x14($t4) -/* 013388 70012788 8FBF001C */ lw $ra, 0x1c($sp) -/* 01338C 7001278C 8FB00018 */ lw $s0, 0x18($sp) -/* 013390 70012790 27BD0030 */ addiu $sp, $sp, 0x30 -/* 013394 70012794 03E00008 */ jr $ra -/* 013398 70012798 00000000 */ nop - -glabel alCSeqNew -/* 01339C 7001279C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0133A0 700127A0 AFB40028 */ sw $s4, 0x28($sp) -/* 0133A4 700127A4 AFB30024 */ sw $s3, 0x24($sp) -/* 0133A8 700127A8 AFB20020 */ sw $s2, 0x20($sp) -/* 0133AC 700127AC AFB1001C */ sw $s1, 0x1c($sp) -/* 0133B0 700127B0 AFB00018 */ sw $s0, 0x18($sp) -/* 0133B4 700127B4 AFBF002C */ sw $ra, 0x2c($sp) -/* 0133B8 700127B8 240E0001 */ li $t6, 1 -/* 0133BC 700127BC 00808025 */ move $s0, $a0 -/* 0133C0 700127C0 00A0A025 */ move $s4, $a1 -/* 0133C4 700127C4 AC850000 */ sw $a1, ($a0) -/* 0133C8 700127C8 AC800004 */ sw $zero, 4($a0) -/* 0133CC 700127CC AC800010 */ sw $zero, 0x10($a0) -/* 0133D0 700127D0 AC80000C */ sw $zero, 0xc($a0) -/* 0133D4 700127D4 AC8E0014 */ sw $t6, 0x14($a0) -/* 0133D8 700127D8 00808825 */ move $s1, $a0 -/* 0133DC 700127DC 00009025 */ move $s2, $zero -/* 0133E0 700127E0 24130010 */ li $s3, 16 -/* 0133E4 700127E4 00006825 */ move $t5, $zero -/* 0133E8 700127E8 00806025 */ move $t4, $a0 -.L700127EC: -/* 0133EC 700127EC A22000A8 */ sb $zero, 0xa8($s1) -/* 0133F0 700127F0 AD800058 */ sw $zero, 0x58($t4) -/* 0133F4 700127F4 A2200098 */ sb $zero, 0x98($s1) -/* 0133F8 700127F8 8E0F0000 */ lw $t7, ($s0) -/* 0133FC 700127FC 240E0001 */ li $t6, 1 -/* 013400 70012800 01F2C021 */ addu $t8, $t7, $s2 -/* 013404 70012804 8F020000 */ lw $v0, ($t8) -/* 013408 70012808 01AE7804 */ sllv $t7, $t6, $t5 -/* 01340C 7001280C 1040000A */ beqz $v0, .L70012838 -/* 013410 70012810 02827021 */ addu $t6, $s4, $v0 -/* 013414 70012814 8E190004 */ lw $t9, 4($s0) -/* 013418 70012818 02005025 */ move $t2, $s0 -/* 01341C 7001281C 01A05825 */ move $t3, $t5 -/* 013420 70012820 032FC025 */ or $t8, $t9, $t7 -/* 013424 70012824 AE180004 */ sw $t8, 4($s0) -/* 013428 70012828 0C004911 */ jal ultra_70012444 -/* 01342C 7001282C AD8E0018 */ sw $t6, 0x18($t4) -/* 013430 70012830 10000002 */ b .L7001283C -/* 013434 70012834 AD8200B8 */ sw $v0, 0xb8($t4) -.L70012838: -/* 013438 70012838 AD800018 */ sw $zero, 0x18($t4) -.L7001283C: -/* 01343C 7001283C 25AD0001 */ addiu $t5, $t5, 1 -/* 013440 70012840 26310001 */ addiu $s1, $s1, 1 -/* 013444 70012844 26520004 */ addiu $s2, $s2, 4 -/* 013448 70012848 15B3FFE8 */ bne $t5, $s3, .L700127EC -/* 01344C 7001284C 258C0004 */ addiu $t4, $t4, 4 -/* 013450 70012850 8E190000 */ lw $t9, ($s0) -/* 013454 70012854 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 013458 70012858 44812800 */ mtc1 $at, $f5 -/* 01345C 7001285C 8F2F0040 */ lw $t7, 0x40($t9) -/* 013460 70012860 44802000 */ mtc1 $zero, $f4 -/* 013464 70012864 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 013468 70012868 448F3000 */ mtc1 $t7, $f6 -/* 01346C 7001286C 05E10004 */ bgez $t7, .L70012880 -/* 013470 70012870 46803220 */ cvt.s.w $f8, $f6 -/* 013474 70012874 44815000 */ mtc1 $at, $f10 -/* 013478 70012878 00000000 */ nop -/* 01347C 7001287C 460A4200 */ add.s $f8, $f8, $f10 -.L70012880: -/* 013480 70012880 460041A1 */ cvt.d.s $f6, $f8 -/* 013484 70012884 46262283 */ div.d $f10, $f4, $f6 -/* 013488 70012888 46205220 */ cvt.s.d $f8, $f10 -/* 01348C 7001288C E6080008 */ swc1 $f8, 8($s0) -/* 013490 70012890 8FBF002C */ lw $ra, 0x2c($sp) -/* 013494 70012894 8FB40028 */ lw $s4, 0x28($sp) -/* 013498 70012898 8FB30024 */ lw $s3, 0x24($sp) -/* 01349C 7001289C 8FB20020 */ lw $s2, 0x20($sp) -/* 0134A0 700128A0 8FB1001C */ lw $s1, 0x1c($sp) -/* 0134A4 700128A4 8FB00018 */ lw $s0, 0x18($sp) -/* 0134A8 700128A8 03E00008 */ jr $ra -/* 0134AC 700128AC 27BD0030 */ addiu $sp, $sp, 0x30 - -glabel alCSeqNewMarker -/* 0134B0 700128B0 27BDFEB0 */ addiu $sp, $sp, -0x150 -/* 0134B4 700128B4 AFB30020 */ sw $s3, 0x20($sp) -/* 0134B8 700128B8 AFB10018 */ sw $s1, 0x18($sp) -/* 0134BC 700128BC 00A08825 */ move $s1, $a1 -/* 0134C0 700128C0 27B30048 */ addiu $s3, $sp, 0x48 -/* 0134C4 700128C4 AFBF002C */ sw $ra, 0x2c($sp) -/* 0134C8 700128C8 AFB50028 */ sw $s5, 0x28($sp) -/* 0134CC 700128CC AFB40024 */ sw $s4, 0x24($sp) -/* 0134D0 700128D0 AFB2001C */ sw $s2, 0x1c($sp) -/* 0134D4 700128D4 AFB00014 */ sw $s0, 0x14($sp) -/* 0134D8 700128D8 00803825 */ move $a3, $a0 -/* 0134DC 700128DC 00C09025 */ move $s2, $a2 -/* 0134E0 700128E0 8CE50000 */ lw $a1, ($a3) -/* 0134E4 700128E4 0C0049E7 */ jal alCSeqNew -/* 0134E8 700128E8 02602025 */ move $a0, $s3 -/* 0134EC 700128EC 24150004 */ li $s5, 4 -/* 0134F0 700128F0 27B40140 */ addiu $s4, $sp, 0x140 -/* 0134F4 700128F4 27B00058 */ addiu $s0, $sp, 0x58 -/* 0134F8 700128F8 8FAE004C */ lw $t6, 0x4c($sp) -.L700128FC: -/* 0134FC 700128FC 27A40048 */ addiu $a0, $sp, 0x48 -/* 013500 70012900 00801825 */ move $v1, $a0 -/* 013504 70012904 AE2E0000 */ sw $t6, ($s1) -/* 013508 70012908 8FAF0054 */ lw $t7, 0x54($sp) -/* 01350C 7001290C 02201025 */ move $v0, $s1 -/* 013510 70012910 02202825 */ move $a1, $s1 -/* 013514 70012914 AE2F0004 */ sw $t7, 4($s1) -/* 013518 70012918 8FB80058 */ lw $t8, 0x58($sp) -/* 01351C 7001291C AE380008 */ sw $t8, 8($s1) -.L70012920: -/* 013520 70012920 8C680018 */ lw $t0, 0x18($v1) -/* 013524 70012924 24840004 */ addiu $a0, $a0, 4 -/* 013528 70012928 24420010 */ addiu $v0, $v0, 0x10 -/* 01352C 7001292C AC48FFFC */ sw $t0, -4($v0) -/* 013530 70012930 8C690058 */ lw $t1, 0x58($v1) -/* 013534 70012934 24630010 */ addiu $v1, $v1, 0x10 -/* 013538 70012938 24A50004 */ addiu $a1, $a1, 4 -/* 01353C 7001293C AC49003C */ sw $t1, 0x3c($v0) -/* 013540 70012940 908A0094 */ lbu $t2, 0x94($a0) -/* 013544 70012944 A0AA0088 */ sb $t2, 0x88($a1) -/* 013548 70012948 908B00A4 */ lbu $t3, 0xa4($a0) -/* 01354C 7001294C A0AB0098 */ sb $t3, 0x98($a1) -/* 013550 70012950 8C6C00A8 */ lw $t4, 0xa8($v1) -/* 013554 70012954 AC4C009C */ sw $t4, 0x9c($v0) -/* 013558 70012958 8C6D000C */ lw $t5, 0xc($v1) -/* 01355C 7001295C AC4D0000 */ sw $t5, ($v0) -/* 013560 70012960 8C6E004C */ lw $t6, 0x4c($v1) -/* 013564 70012964 AC4E0040 */ sw $t6, 0x40($v0) -/* 013568 70012968 908F0095 */ lbu $t7, 0x95($a0) -/* 01356C 7001296C A0AF0089 */ sb $t7, 0x89($a1) -/* 013570 70012970 909800A5 */ lbu $t8, 0xa5($a0) -/* 013574 70012974 A0B80099 */ sb $t8, 0x99($a1) -/* 013578 70012978 8C7900AC */ lw $t9, 0xac($v1) -/* 01357C 7001297C AC5900A0 */ sw $t9, 0xa0($v0) -/* 013580 70012980 8C680010 */ lw $t0, 0x10($v1) -/* 013584 70012984 AC480004 */ sw $t0, 4($v0) -/* 013588 70012988 8C690050 */ lw $t1, 0x50($v1) -/* 01358C 7001298C AC490044 */ sw $t1, 0x44($v0) -/* 013590 70012990 908A0096 */ lbu $t2, 0x96($a0) -/* 013594 70012994 A0AA008A */ sb $t2, 0x8a($a1) -/* 013598 70012998 908B00A6 */ lbu $t3, 0xa6($a0) -/* 01359C 7001299C A0AB009A */ sb $t3, 0x9a($a1) -/* 0135A0 700129A0 8C6C00B0 */ lw $t4, 0xb0($v1) -/* 0135A4 700129A4 AC4C00A4 */ sw $t4, 0xa4($v0) -/* 0135A8 700129A8 8C6D0014 */ lw $t5, 0x14($v1) -/* 0135AC 700129AC AC4D0008 */ sw $t5, 8($v0) -/* 0135B0 700129B0 8C6E0054 */ lw $t6, 0x54($v1) -/* 0135B4 700129B4 AC4E0048 */ sw $t6, 0x48($v0) -/* 0135B8 700129B8 908F0097 */ lbu $t7, 0x97($a0) -/* 0135BC 700129BC A0AF008B */ sb $t7, 0x8b($a1) -/* 0135C0 700129C0 909800A7 */ lbu $t8, 0xa7($a0) -/* 0135C4 700129C4 A0B8009B */ sb $t8, 0x9b($a1) -/* 0135C8 700129C8 8C7900B4 */ lw $t9, 0xb4($v1) -/* 0135CC 700129CC 1490FFD4 */ bne $a0, $s0, .L70012920 -/* 0135D0 700129D0 AC5900A8 */ sw $t9, 0xa8($v0) -/* 0135D4 700129D4 02602025 */ move $a0, $s3 -/* 0135D8 700129D8 0C004929 */ jal alCSeqNextEvent -/* 0135DC 700129DC 02802825 */ move $a1, $s4 -/* 0135E0 700129E0 87A80140 */ lh $t0, 0x140($sp) -/* 0135E4 700129E4 8FA90054 */ lw $t1, 0x54($sp) -/* 0135E8 700129E8 11150003 */ beq $t0, $s5, .L700129F8 -/* 0135EC 700129EC 0132082B */ sltu $at, $t1, $s2 -/* 0135F0 700129F0 5420FFC2 */ bnezl $at, .L700128FC -/* 0135F4 700129F4 8FAE004C */ lw $t6, 0x4c($sp) -.L700129F8: -/* 0135F8 700129F8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0135FC 700129FC 8FB00014 */ lw $s0, 0x14($sp) -/* 013600 70012A00 8FB10018 */ lw $s1, 0x18($sp) -/* 013604 70012A04 8FB2001C */ lw $s2, 0x1c($sp) -/* 013608 70012A08 8FB30020 */ lw $s3, 0x20($sp) -/* 01360C 70012A0C 8FB40024 */ lw $s4, 0x24($sp) -/* 013610 70012A10 8FB50028 */ lw $s5, 0x28($sp) -/* 013614 70012A14 03E00008 */ jr $ra -/* 013618 70012A18 27BD0150 */ addiu $sp, $sp, 0x150 - -glabel alCSeqGetTicks -/* 01361C 70012A1C 03E00008 */ jr $ra -/* 013620 70012A20 8C82000C */ lw $v0, 0xc($a0) - -glabel alCSeqSecToTicks -/* 013624 70012A24 8C8E0000 */ lw $t6, ($a0) -/* 013628 70012A28 44856000 */ mtc1 $a1, $f12 -/* 01362C 70012A2C 3C018003 */ lui $at, %hi(F64_800296D0) -/* 013630 70012A30 8DCF0040 */ lw $t7, 0x40($t6) -/* 013634 70012A34 D42696D0 */ ldc1 $f6, %lo(F64_800296D0)($at) -/* 013638 70012A38 46006121 */ cvt.d.s $f4, $f12 -/* 01363C 70012A3C 448F5000 */ mtc1 $t7, $f10 -/* 013640 70012A40 46262202 */ mul.d $f8, $f4, $f6 -/* 013644 70012A44 3C0141F0 */ li $at, 0x41F00000 # 30.000000 -/* 013648 70012A48 05E10005 */ bgez $t7, .L70012A60 -/* 01364C 70012A4C 46805421 */ cvt.d.w $f16, $f10 -/* 013650 70012A50 44819800 */ mtc1 $at, $f19 -/* 013654 70012A54 44809000 */ mtc1 $zero, $f18 -/* 013658 70012A58 00000000 */ nop -/* 01365C 70012A5C 46328400 */ add.d $f16, $f16, $f18 -.L70012A60: -/* 013660 70012A60 44863000 */ mtc1 $a2, $f6 -/* 013664 70012A64 46304102 */ mul.d $f4, $f8, $f16 -/* 013668 70012A68 3C0141F0 */ li $at, 0x41F00000 # 30.000000 -/* 01366C 70012A6C 04C10005 */ bgez $a2, .L70012A84 -/* 013670 70012A70 468032A1 */ cvt.d.w $f10, $f6 -/* 013674 70012A74 44819800 */ mtc1 $at, $f19 -/* 013678 70012A78 44809000 */ mtc1 $zero, $f18 -/* 01367C 70012A7C 00000000 */ nop -/* 013680 70012A80 46325280 */ add.d $f10, $f10, $f18 -.L70012A84: -/* 013684 70012A84 462A2203 */ div.d $f8, $f4, $f10 -/* 013688 70012A88 24020001 */ li $v0, 1 -/* 01368C 70012A8C 3C0141E0 */ li $at, 0x41E00000 # 28.000000 -/* 013690 70012A90 4458F800 */ cfc1 $t8, $31 -/* 013694 70012A94 44C2F800 */ ctc1 $v0, $31 -/* 013698 70012A98 00000000 */ nop -/* 01369C 70012A9C 46204424 */ cvt.w.d $f16, $f8 -/* 0136A0 70012AA0 4442F800 */ cfc1 $v0, $31 -/* 0136A4 70012AA4 00000000 */ nop -/* 0136A8 70012AA8 30420078 */ andi $v0, $v0, 0x78 -/* 0136AC 70012AAC 50400016 */ beql $v0, $zero, .L70012B08 -/* 0136B0 70012AB0 44028000 */ mfc1 $v0, $f16 -/* 0136B4 70012AB4 44818800 */ mtc1 $at, $f17 -/* 0136B8 70012AB8 44808000 */ mtc1 $zero, $f16 -/* 0136BC 70012ABC 24020001 */ li $v0, 1 -/* 0136C0 70012AC0 3C018000 */ lui $at, 0x8000 -/* 0136C4 70012AC4 46304401 */ sub.d $f16, $f8, $f16 -/* 0136C8 70012AC8 44C2F800 */ ctc1 $v0, $31 -/* 0136CC 70012ACC 00000000 */ nop -/* 0136D0 70012AD0 46208424 */ cvt.w.d $f16, $f16 -/* 0136D4 70012AD4 4442F800 */ cfc1 $v0, $31 -/* 0136D8 70012AD8 00000000 */ nop -/* 0136DC 70012ADC 30420078 */ andi $v0, $v0, 0x78 -/* 0136E0 70012AE0 54400006 */ bnezl $v0, .L70012AFC -/* 0136E4 70012AE4 44D8F800 */ ctc1 $t8, $31 -/* 0136E8 70012AE8 44028000 */ mfc1 $v0, $f16 -/* 0136EC 70012AEC 44D8F800 */ ctc1 $t8, $31 -/* 0136F0 70012AF0 03E00008 */ jr $ra -/* 0136F4 70012AF4 00411025 */ or $v0, $v0, $at - -/* 0136F8 70012AF8 44D8F800 */ ctc1 $t8, $31 -.L70012AFC: -/* 0136FC 70012AFC 03E00008 */ jr $ra -/* 013700 70012B00 2402FFFF */ li $v0, -1 - -/* 013704 70012B04 44028000 */ mfc1 $v0, $f16 -.L70012B08: -/* 013708 70012B08 00000000 */ nop -/* 01370C 70012B0C 0442FFFB */ bltzl $v0, .L70012AFC -/* 013710 70012B10 44D8F800 */ ctc1 $t8, $31 -/* 013714 70012B14 44D8F800 */ ctc1 $t8, $31 -/* 013718 70012B18 03E00008 */ jr $ra -/* 01371C 70012B1C 00000000 */ nop - -glabel alCSeqTicksToSec -/* 013720 70012B20 44852000 */ mtc1 $a1, $f4 -/* 013724 70012B24 44864000 */ mtc1 $a2, $f8 -/* 013728 70012B28 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 01372C 70012B2C 468021A0 */ cvt.s.w $f6, $f4 -/* 013730 70012B30 04C10004 */ bgez $a2, .L70012B44 -/* 013734 70012B34 468042A0 */ cvt.s.w $f10, $f8 -/* 013738 70012B38 44818000 */ mtc1 $at, $f16 -/* 01373C 70012B3C 00000000 */ nop -/* 013740 70012B40 46105280 */ add.s $f10, $f10, $f16 -.L70012B44: -/* 013744 70012B44 8C8E0000 */ lw $t6, ($a0) -/* 013748 70012B48 460A3482 */ mul.s $f18, $f6, $f10 -/* 01374C 70012B4C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 013750 70012B50 8DCF0040 */ lw $t7, 0x40($t6) -/* 013754 70012B54 448F4000 */ mtc1 $t7, $f8 -/* 013758 70012B58 46009121 */ cvt.d.s $f4, $f18 -/* 01375C 70012B5C 05E10004 */ bgez $t7, .L70012B70 -/* 013760 70012B60 46804420 */ cvt.s.w $f16, $f8 -/* 013764 70012B64 44813000 */ mtc1 $at, $f6 -/* 013768 70012B68 00000000 */ nop -/* 01376C 70012B6C 46068400 */ add.s $f16, $f16, $f6 -.L70012B70: -/* 013770 70012B70 3C018003 */ lui $at, %hi(F64_800296D8) -/* 013774 70012B74 D43296D8 */ ldc1 $f18, %lo(F64_800296D8)($at) -/* 013778 70012B78 460082A1 */ cvt.d.s $f10, $f16 -/* 01377C 70012B7C 46325202 */ mul.d $f8, $f10, $f18 -/* 013780 70012B80 46282183 */ div.d $f6, $f4, $f8 -/* 013784 70012B84 03E00008 */ jr $ra -/* 013788 70012B88 46203020 */ cvt.s.d $f0, $f6 - -glabel __alCSeqNextDelta -/* 01378C 70012B8C 8C8E0004 */ lw $t6, 4($a0) -/* 013790 70012B90 00A04825 */ move $t1, $a1 -/* 013794 70012B94 2403FFFF */ li $v1, -1 -/* 013798 70012B98 15C00003 */ bnez $t6, .L70012BA8 -/* 01379C 70012B9C 8C820010 */ lw $v0, 0x10($a0) -/* 0137A0 70012BA0 03E00008 */ jr $ra -/* 0137A4 70012BA4 00001025 */ move $v0, $zero - -.L70012BA8: -/* 0137A8 70012BA8 00003025 */ move $a2, $zero -/* 0137AC 70012BAC 240A0010 */ li $t2, 16 -/* 0137B0 70012BB0 8C850004 */ lw $a1, 4($a0) -.L70012BB4: -/* 0137B4 70012BB4 24CE0001 */ addiu $t6, $a2, 1 -/* 0137B8 70012BB8 00C57806 */ srlv $t7, $a1, $a2 -/* 0137BC 70012BBC 31F80001 */ andi $t8, $t7, 1 -/* 0137C0 70012BC0 53000010 */ beql $t8, $zero, .L70012C04 -/* 0137C4 70012BC4 01C57806 */ srlv $t7, $a1, $t6 -/* 0137C8 70012BC8 8C8B0014 */ lw $t3, 0x14($a0) -/* 0137CC 70012BCC 0006C880 */ sll $t9, $a2, 2 -/* 0137D0 70012BD0 00993821 */ addu $a3, $a0, $t9 -/* 0137D4 70012BD4 51600006 */ beql $t3, $zero, .L70012BF0 -/* 0137D8 70012BD8 8CE800B8 */ lw $t0, 0xb8($a3) -/* 0137DC 70012BDC 8CEC00B8 */ lw $t4, 0xb8($a3) -/* 0137E0 70012BE0 01826823 */ subu $t5, $t4, $v0 -/* 0137E4 70012BE4 ACED00B8 */ sw $t5, 0xb8($a3) -/* 0137E8 70012BE8 8C850004 */ lw $a1, 4($a0) -/* 0137EC 70012BEC 8CE800B8 */ lw $t0, 0xb8($a3) -.L70012BF0: -/* 0137F0 70012BF0 0103082B */ sltu $at, $t0, $v1 -/* 0137F4 70012BF4 50200003 */ beql $at, $zero, .L70012C04 -/* 0137F8 70012BF8 01C57806 */ srlv $t7, $a1, $t6 -/* 0137FC 70012BFC 01001825 */ move $v1, $t0 -/* 013800 70012C00 01C57806 */ srlv $t7, $a1, $t6 -.L70012C04: -/* 013804 70012C04 31F80001 */ andi $t8, $t7, 1 -/* 013808 70012C08 1300000F */ beqz $t8, .L70012C48 -/* 01380C 70012C0C 24CE0002 */ addiu $t6, $a2, 2 -/* 013810 70012C10 8C8B0014 */ lw $t3, 0x14($a0) -/* 013814 70012C14 0006C880 */ sll $t9, $a2, 2 -/* 013818 70012C18 00993821 */ addu $a3, $a0, $t9 -/* 01381C 70012C1C 51600006 */ beql $t3, $zero, .L70012C38 -/* 013820 70012C20 8CE800BC */ lw $t0, 0xbc($a3) -/* 013824 70012C24 8CEC00BC */ lw $t4, 0xbc($a3) -/* 013828 70012C28 01826823 */ subu $t5, $t4, $v0 -/* 01382C 70012C2C ACED00BC */ sw $t5, 0xbc($a3) -/* 013830 70012C30 8C850004 */ lw $a1, 4($a0) -/* 013834 70012C34 8CE800BC */ lw $t0, 0xbc($a3) -.L70012C38: -/* 013838 70012C38 0103082B */ sltu $at, $t0, $v1 -/* 01383C 70012C3C 50200003 */ beql $at, $zero, .L70012C4C -/* 013840 70012C40 01C57806 */ srlv $t7, $a1, $t6 -/* 013844 70012C44 01001825 */ move $v1, $t0 -.L70012C48: -/* 013848 70012C48 01C57806 */ srlv $t7, $a1, $t6 -.L70012C4C: -/* 01384C 70012C4C 31F80001 */ andi $t8, $t7, 1 -/* 013850 70012C50 1300000F */ beqz $t8, .L70012C90 -/* 013854 70012C54 24CE0003 */ addiu $t6, $a2, 3 -/* 013858 70012C58 8C8B0014 */ lw $t3, 0x14($a0) -/* 01385C 70012C5C 0006C880 */ sll $t9, $a2, 2 -/* 013860 70012C60 00993821 */ addu $a3, $a0, $t9 -/* 013864 70012C64 51600006 */ beql $t3, $zero, .L70012C80 -/* 013868 70012C68 8CE800C0 */ lw $t0, 0xc0($a3) -/* 01386C 70012C6C 8CEC00C0 */ lw $t4, 0xc0($a3) -/* 013870 70012C70 01826823 */ subu $t5, $t4, $v0 -/* 013874 70012C74 ACED00C0 */ sw $t5, 0xc0($a3) -/* 013878 70012C78 8C850004 */ lw $a1, 4($a0) -/* 01387C 70012C7C 8CE800C0 */ lw $t0, 0xc0($a3) -.L70012C80: -/* 013880 70012C80 0103082B */ sltu $at, $t0, $v1 -/* 013884 70012C84 50200003 */ beql $at, $zero, .L70012C94 -/* 013888 70012C88 01C57806 */ srlv $t7, $a1, $t6 -/* 01388C 70012C8C 01001825 */ move $v1, $t0 -.L70012C90: -/* 013890 70012C90 01C57806 */ srlv $t7, $a1, $t6 -.L70012C94: -/* 013894 70012C94 31F80001 */ andi $t8, $t7, 1 -/* 013898 70012C98 5300000F */ beql $t8, $zero, .L70012CD8 -/* 01389C 70012C9C 24C60004 */ addiu $a2, $a2, 4 -/* 0138A0 70012CA0 8C8B0014 */ lw $t3, 0x14($a0) -/* 0138A4 70012CA4 0006C880 */ sll $t9, $a2, 2 -/* 0138A8 70012CA8 00993821 */ addu $a3, $a0, $t9 -/* 0138AC 70012CAC 51600005 */ beql $t3, $zero, .L70012CC4 -/* 0138B0 70012CB0 8CE500C4 */ lw $a1, 0xc4($a3) -/* 0138B4 70012CB4 8CEC00C4 */ lw $t4, 0xc4($a3) -/* 0138B8 70012CB8 01826823 */ subu $t5, $t4, $v0 -/* 0138BC 70012CBC ACED00C4 */ sw $t5, 0xc4($a3) -/* 0138C0 70012CC0 8CE500C4 */ lw $a1, 0xc4($a3) -.L70012CC4: -/* 0138C4 70012CC4 00A3082B */ sltu $at, $a1, $v1 -/* 0138C8 70012CC8 50200003 */ beql $at, $zero, .L70012CD8 -/* 0138CC 70012CCC 24C60004 */ addiu $a2, $a2, 4 -/* 0138D0 70012CD0 00A01825 */ move $v1, $a1 -/* 0138D4 70012CD4 24C60004 */ addiu $a2, $a2, 4 -.L70012CD8: -/* 0138D8 70012CD8 54CAFFB6 */ bnel $a2, $t2, .L70012BB4 -/* 0138DC 70012CDC 8C850004 */ lw $a1, 4($a0) -/* 0138E0 70012CE0 AC800014 */ sw $zero, 0x14($a0) -/* 0138E4 70012CE4 AD230000 */ sw $v1, ($t1) -/* 0138E8 70012CE8 24020001 */ li $v0, 1 -/* 0138EC 70012CEC 03E00008 */ jr $ra -/* 0138F0 70012CF0 00000000 */ nop - -/* 0138F4 70012CF4 00000000 */ nop -/* 0138F8 70012CF8 00000000 */ nop -/* 0138FC 70012CFC 00000000 */ nop - -.section .rodata -glabel F64_800296D0 -.double 1000000.0 -glabel F64_800296D8 -.double 1000000.0 - -.section .text -glabel alCSPSetSeq -/* 013900 70012D00 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 013904 70012D04 AFBF0014 */ sw $ra, 0x14($sp) -/* 013908 70012D08 240E000D */ li $t6, 13 -/* 01390C 70012D0C AFA5001C */ sw $a1, 0x1c($sp) -/* 013910 70012D10 A7AE0018 */ sh $t6, 0x18($sp) -/* 013914 70012D14 27A50018 */ addiu $a1, $sp, 0x18 -/* 013918 70012D18 24840048 */ addiu $a0, $a0, 0x48 -/* 01391C 70012D1C 0C004BBF */ jal alEvtqPostEvent -/* 013920 70012D20 00003025 */ move $a2, $zero -/* 013924 70012D24 8FBF0014 */ lw $ra, 0x14($sp) -/* 013928 70012D28 27BD0028 */ addiu $sp, $sp, 0x28 -/* 01392C 70012D2C 03E00008 */ jr $ra -/* 013930 70012D30 00000000 */ nop - -/* 013934 70012D34 00000000 */ nop -/* 013938 70012D38 00000000 */ nop -/* 01393C 70012D3C 00000000 */ nop - -glabel alCSPPlay -/* 013940 70012D40 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 013944 70012D44 AFBF0014 */ sw $ra, 0x14($sp) -/* 013948 70012D48 240E000F */ li $t6, 15 -/* 01394C 70012D4C A7AE0018 */ sh $t6, 0x18($sp) -/* 013950 70012D50 27A50018 */ addiu $a1, $sp, 0x18 -/* 013954 70012D54 24840048 */ addiu $a0, $a0, 0x48 -/* 013958 70012D58 0C004BBF */ jal alEvtqPostEvent -/* 01395C 70012D5C 00003025 */ move $a2, $zero -/* 013960 70012D60 8FBF0014 */ lw $ra, 0x14($sp) -/* 013964 70012D64 27BD0028 */ addiu $sp, $sp, 0x28 -/* 013968 70012D68 03E00008 */ jr $ra -/* 01396C 70012D6C 00000000 */ nop - -glabel alCSPStop -/* 013970 70012D70 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 013974 70012D74 AFBF0014 */ sw $ra, 0x14($sp) -/* 013978 70012D78 240E0011 */ li $t6, 17 -/* 01397C 70012D7C A7AE0018 */ sh $t6, 0x18($sp) -/* 013980 70012D80 27A50018 */ addiu $a1, $sp, 0x18 -/* 013984 70012D84 24840048 */ addiu $a0, $a0, 0x48 -/* 013988 70012D88 0C004BBF */ jal alEvtqPostEvent -/* 01398C 70012D8C 00003025 */ move $a2, $zero -/* 013990 70012D90 8FBF0014 */ lw $ra, 0x14($sp) -/* 013994 70012D94 27BD0028 */ addiu $sp, $sp, 0x28 -/* 013998 70012D98 03E00008 */ jr $ra -/* 01399C 70012D9C 00000000 */ nop - -glabel alCSPSetVol -/* 0139A0 70012DA0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0139A4 70012DA4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0139A8 70012DA8 AFA5002C */ sw $a1, 0x2c($sp) -/* 0139AC 70012DAC 00A07025 */ move $t6, $a1 -/* 0139B0 70012DB0 240F000A */ li $t7, 10 -/* 0139B4 70012DB4 A7AF0018 */ sh $t7, 0x18($sp) -/* 0139B8 70012DB8 A7AE001C */ sh $t6, 0x1c($sp) -/* 0139BC 70012DBC 27A50018 */ addiu $a1, $sp, 0x18 -/* 0139C0 70012DC0 24840048 */ addiu $a0, $a0, 0x48 -/* 0139C4 70012DC4 0C004BBF */ jal alEvtqPostEvent -/* 0139C8 70012DC8 00003025 */ move $a2, $zero -/* 0139CC 70012DCC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0139D0 70012DD0 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0139D4 70012DD4 03E00008 */ jr $ra -/* 0139D8 70012DD8 00000000 */ nop - -/* 0139DC 70012DDC 00000000 */ nop -glabel alEvtqFlushType -/* 0139E0 70012DE0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0139E4 70012DE4 AFB30020 */ sw $s3, 0x20($sp) -/* 0139E8 70012DE8 00059C00 */ sll $s3, $a1, 0x10 -/* 0139EC 70012DEC AFB2001C */ sw $s2, 0x1c($sp) -/* 0139F0 70012DF0 00809025 */ move $s2, $a0 -/* 0139F4 70012DF4 00137403 */ sra $t6, $s3, 0x10 -/* 0139F8 70012DF8 AFBF0024 */ sw $ra, 0x24($sp) -/* 0139FC 70012DFC 01C09825 */ move $s3, $t6 -/* 013A00 70012E00 AFB10018 */ sw $s1, 0x18($sp) -/* 013A04 70012E04 AFB00014 */ sw $s0, 0x14($sp) -/* 013A08 70012E08 AFA50044 */ sw $a1, 0x44($sp) -/* 013A0C 70012E0C 0C00374C */ jal osSetIntMask -/* 013A10 70012E10 24040001 */ li $a0, 1 -/* 013A14 70012E14 AFA2002C */ sw $v0, 0x2c($sp) -/* 013A18 70012E18 8E500008 */ lw $s0, 8($s2) -/* 013A1C 70012E1C 12000012 */ beqz $s0, .L70012E68 -/* 013A20 70012E20 00000000 */ nop -.L70012E24: -/* 013A24 70012E24 860F000C */ lh $t7, 0xc($s0) -/* 013A28 70012E28 8E110000 */ lw $s1, ($s0) -/* 013A2C 70012E2C 166F000C */ bne $s3, $t7, .L70012E60 -/* 013A30 70012E30 00000000 */ nop -/* 013A34 70012E34 12200005 */ beqz $s1, .L70012E4C -/* 013A38 70012E38 00000000 */ nop -/* 013A3C 70012E3C 8E380008 */ lw $t8, 8($s1) -/* 013A40 70012E40 8E190008 */ lw $t9, 8($s0) -/* 013A44 70012E44 03194021 */ addu $t0, $t8, $t9 -/* 013A48 70012E48 AE280008 */ sw $t0, 8($s1) -.L70012E4C: -/* 013A4C 70012E4C 0C003AA4 */ jal alUnlink -/* 013A50 70012E50 02002025 */ move $a0, $s0 -/* 013A54 70012E54 02002025 */ move $a0, $s0 -/* 013A58 70012E58 0C003AB0 */ jal alLink -/* 013A5C 70012E5C 02402825 */ move $a1, $s2 -.L70012E60: -/* 013A60 70012E60 1620FFF0 */ bnez $s1, .L70012E24 -/* 013A64 70012E64 02208025 */ move $s0, $s1 -.L70012E68: -/* 013A68 70012E68 0C00374C */ jal osSetIntMask -/* 013A6C 70012E6C 8FA4002C */ lw $a0, 0x2c($sp) -/* 013A70 70012E70 8FBF0024 */ lw $ra, 0x24($sp) -/* 013A74 70012E74 8FB00014 */ lw $s0, 0x14($sp) -/* 013A78 70012E78 8FB10018 */ lw $s1, 0x18($sp) -/* 013A7C 70012E7C 8FB2001C */ lw $s2, 0x1c($sp) -/* 013A80 70012E80 8FB30020 */ lw $s3, 0x20($sp) -/* 013A84 70012E84 03E00008 */ jr $ra -/* 013A88 70012E88 27BD0040 */ addiu $sp, $sp, 0x40 - -glabel alEvtqFlush -/* 013A8C 70012E8C 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 013A90 70012E90 AFB20020 */ sw $s2, 0x20($sp) -/* 013A94 70012E94 00809025 */ move $s2, $a0 -/* 013A98 70012E98 AFBF0024 */ sw $ra, 0x24($sp) -/* 013A9C 70012E9C AFB1001C */ sw $s1, 0x1c($sp) -/* 013AA0 70012EA0 AFB00018 */ sw $s0, 0x18($sp) -/* 013AA4 70012EA4 0C00374C */ jal osSetIntMask -/* 013AA8 70012EA8 24040001 */ li $a0, 1 -/* 013AAC 70012EAC AFA2002C */ sw $v0, 0x2c($sp) -/* 013AB0 70012EB0 8E500008 */ lw $s0, 8($s2) -/* 013AB4 70012EB4 12000009 */ beqz $s0, .L70012EDC -/* 013AB8 70012EB8 00000000 */ nop -.L70012EBC: -/* 013ABC 70012EBC 8E110000 */ lw $s1, ($s0) -/* 013AC0 70012EC0 0C003AA4 */ jal alUnlink -/* 013AC4 70012EC4 02002025 */ move $a0, $s0 -/* 013AC8 70012EC8 02002025 */ move $a0, $s0 -/* 013ACC 70012ECC 0C003AB0 */ jal alLink -/* 013AD0 70012ED0 02402825 */ move $a1, $s2 -/* 013AD4 70012ED4 1620FFF9 */ bnez $s1, .L70012EBC -/* 013AD8 70012ED8 02208025 */ move $s0, $s1 -.L70012EDC: -/* 013ADC 70012EDC 0C00374C */ jal osSetIntMask -/* 013AE0 70012EE0 8FA4002C */ lw $a0, 0x2c($sp) -/* 013AE4 70012EE4 8FBF0024 */ lw $ra, 0x24($sp) -/* 013AE8 70012EE8 8FB00018 */ lw $s0, 0x18($sp) -/* 013AEC 70012EEC 8FB1001C */ lw $s1, 0x1c($sp) -/* 013AF0 70012EF0 8FB20020 */ lw $s2, 0x20($sp) -/* 013AF4 70012EF4 03E00008 */ jr $ra -/* 013AF8 70012EF8 27BD0038 */ addiu $sp, $sp, 0x38 - -glabel alEvtqPostEvent -/* 013AFC 70012EFC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 013B00 70012F00 AFBF0014 */ sw $ra, 0x14($sp) -/* 013B04 70012F04 AFA40030 */ sw $a0, 0x30($sp) -/* 013B08 70012F08 AFA50034 */ sw $a1, 0x34($sp) -/* 013B0C 70012F0C AFA00020 */ sw $zero, 0x20($sp) -/* 013B10 70012F10 24040001 */ li $a0, 1 -/* 013B14 70012F14 0C00374C */ jal osSetIntMask -/* 013B18 70012F18 AFA60038 */ sw $a2, 0x38($sp) -/* 013B1C 70012F1C 8FAE0030 */ lw $t6, 0x30($sp) -/* 013B20 70012F20 8FA70038 */ lw $a3, 0x38($sp) -/* 013B24 70012F24 00402825 */ move $a1, $v0 -/* 013B28 70012F28 8DC80000 */ lw $t0, ($t6) -/* 013B2C 70012F2C 15000005 */ bnez $t0, .L70012F44 -/* 013B30 70012F30 01002025 */ move $a0, $t0 -/* 013B34 70012F34 0C00374C */ jal osSetIntMask -/* 013B38 70012F38 00402025 */ move $a0, $v0 -/* 013B3C 70012F3C 10000035 */ b .L70013014 -/* 013B40 70012F40 8FBF0014 */ lw $ra, 0x14($sp) -.L70012F44: -/* 013B44 70012F44 AFA5001C */ sw $a1, 0x1c($sp) -/* 013B48 70012F48 AFA70038 */ sw $a3, 0x38($sp) -/* 013B4C 70012F4C 0C003AA4 */ jal alUnlink -/* 013B50 70012F50 AFA8002C */ sw $t0, 0x2c($sp) -/* 013B54 70012F54 8FA8002C */ lw $t0, 0x2c($sp) -/* 013B58 70012F58 8FA40034 */ lw $a0, 0x34($sp) -/* 013B5C 70012F5C 24060010 */ li $a2, 16 -/* 013B60 70012F60 0C0075A4 */ jal alCopy -/* 013B64 70012F64 2505000C */ addiu $a1, $t0, 0xc -/* 013B68 70012F68 8FA70038 */ lw $a3, 0x38($sp) -/* 013B6C 70012F6C 3C017FFF */ lui $at, (0x7FFFFFFF >> 16) # lui $at, 0x7fff -/* 013B70 70012F70 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 013B74 70012F74 14E10003 */ bne $a3, $at, .L70012F84 -/* 013B78 70012F78 8FA8002C */ lw $t0, 0x2c($sp) -/* 013B7C 70012F7C 240FFFFF */ li $t7, -1 -/* 013B80 70012F80 AFAF0020 */ sw $t7, 0x20($sp) -.L70012F84: -/* 013B84 70012F84 8FA20030 */ lw $v0, 0x30($sp) -/* 013B88 70012F88 2401FFF8 */ li $at, -8 -/* 013B8C 70012F8C 8FB80020 */ lw $t8, 0x20($sp) -/* 013B90 70012F90 1041001D */ beq $v0, $at, .L70013008 -/* 013B94 70012F94 24450008 */ addiu $a1, $v0, 8 -.L70012F98: -/* 013B98 70012F98 8CA20000 */ lw $v0, ($a1) -/* 013B9C 70012F9C 5440000B */ bnezl $v0, .L70012FCC -/* 013BA0 70012FA0 8C430008 */ lw $v1, 8($v0) -/* 013BA4 70012FA4 53000004 */ beql $t8, $zero, .L70012FB8 -/* 013BA8 70012FA8 AD070008 */ sw $a3, 8($t0) -/* 013BAC 70012FAC 10000002 */ b .L70012FB8 -/* 013BB0 70012FB0 AD000008 */ sw $zero, 8($t0) -/* 013BB4 70012FB4 AD070008 */ sw $a3, 8($t0) -.L70012FB8: -/* 013BB8 70012FB8 0C003AB0 */ jal alLink -/* 013BBC 70012FBC 01002025 */ move $a0, $t0 -/* 013BC0 70012FC0 10000011 */ b .L70013008 -/* 013BC4 70012FC4 00000000 */ nop -/* 013BC8 70012FC8 8C430008 */ lw $v1, 8($v0) -.L70012FCC: -/* 013BCC 70012FCC 00403025 */ move $a2, $v0 -/* 013BD0 70012FD0 00E3082A */ slt $at, $a3, $v1 -/* 013BD4 70012FD4 5020000A */ beql $at, $zero, .L70013000 -/* 013BD8 70012FD8 00402825 */ move $a1, $v0 -/* 013BDC 70012FDC AD070008 */ sw $a3, 8($t0) -/* 013BE0 70012FE0 8CD90008 */ lw $t9, 8($a2) -/* 013BE4 70012FE4 01002025 */ move $a0, $t0 -/* 013BE8 70012FE8 03274823 */ subu $t1, $t9, $a3 -/* 013BEC 70012FEC 0C003AB0 */ jal alLink -/* 013BF0 70012FF0 ACC90008 */ sw $t1, 8($a2) -/* 013BF4 70012FF4 10000004 */ b .L70013008 -/* 013BF8 70012FF8 00000000 */ nop -/* 013BFC 70012FFC 00402825 */ move $a1, $v0 -.L70013000: -/* 013C00 70013000 1440FFE5 */ bnez $v0, .L70012F98 -/* 013C04 70013004 00E33823 */ subu $a3, $a3, $v1 -.L70013008: -/* 013C08 70013008 0C00374C */ jal osSetIntMask -/* 013C0C 7001300C 8FA4001C */ lw $a0, 0x1c($sp) -/* 013C10 70013010 8FBF0014 */ lw $ra, 0x14($sp) -.L70013014: -/* 013C14 70013014 27BD0030 */ addiu $sp, $sp, 0x30 -/* 013C18 70013018 03E00008 */ jr $ra -/* 013C1C 7001301C 00000000 */ nop - -glabel alEvtqNextEvent -/* 013C20 70013020 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 013C24 70013024 AFBF001C */ sw $ra, 0x1c($sp) -/* 013C28 70013028 AFA40030 */ sw $a0, 0x30($sp) -/* 013C2C 7001302C AFB00018 */ sw $s0, 0x18($sp) -/* 013C30 70013030 AFA50034 */ sw $a1, 0x34($sp) -/* 013C34 70013034 0C00374C */ jal osSetIntMask -/* 013C38 70013038 24040001 */ li $a0, 1 -/* 013C3C 7001303C 8FAE0030 */ lw $t6, 0x30($sp) -/* 013C40 70013040 AFA20024 */ sw $v0, 0x24($sp) -/* 013C44 70013044 8FB80034 */ lw $t8, 0x34($sp) -/* 013C48 70013048 8DD00008 */ lw $s0, 8($t6) -/* 013C4C 7001304C 00001825 */ move $v1, $zero -/* 013C50 70013050 5200000D */ beql $s0, $zero, .L70013088 -/* 013C54 70013054 240FFFFF */ li $t7, -1 -/* 013C58 70013058 0C003AA4 */ jal alUnlink -/* 013C5C 7001305C 02002025 */ move $a0, $s0 -/* 013C60 70013060 2604000C */ addiu $a0, $s0, 0xc -/* 013C64 70013064 8FA50034 */ lw $a1, 0x34($sp) -/* 013C68 70013068 0C0075A4 */ jal alCopy -/* 013C6C 7001306C 24060010 */ li $a2, 16 -/* 013C70 70013070 02002025 */ move $a0, $s0 -/* 013C74 70013074 0C003AB0 */ jal alLink -/* 013C78 70013078 8FA50030 */ lw $a1, 0x30($sp) -/* 013C7C 7001307C 10000003 */ b .L7001308C -/* 013C80 70013080 8E030008 */ lw $v1, 8($s0) -/* 013C84 70013084 240FFFFF */ li $t7, -1 -.L70013088: -/* 013C88 70013088 A70F0000 */ sh $t7, ($t8) -.L7001308C: -/* 013C8C 7001308C 8FA40024 */ lw $a0, 0x24($sp) -/* 013C90 70013090 0C00374C */ jal osSetIntMask -/* 013C94 70013094 AFA30028 */ sw $v1, 0x28($sp) -/* 013C98 70013098 8FBF001C */ lw $ra, 0x1c($sp) -/* 013C9C 7001309C 8FA20028 */ lw $v0, 0x28($sp) -/* 013CA0 700130A0 8FB00018 */ lw $s0, 0x18($sp) -/* 013CA4 700130A4 03E00008 */ jr $ra -/* 013CA8 700130A8 27BD0030 */ addiu $sp, $sp, 0x30 - -glabel alEvtqNew -/* 013CAC 700130AC 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 013CB0 700130B0 AFB30020 */ sw $s3, 0x20($sp) -/* 013CB4 700130B4 AFB2001C */ sw $s2, 0x1c($sp) -/* 013CB8 700130B8 AFB00014 */ sw $s0, 0x14($sp) -/* 013CBC 700130BC AFBF0024 */ sw $ra, 0x24($sp) -/* 013CC0 700130C0 AFB10018 */ sw $s1, 0x18($sp) -/* 013CC4 700130C4 00809025 */ move $s2, $a0 -/* 013CC8 700130C8 00C09825 */ move $s3, $a2 -/* 013CCC 700130CC AC800010 */ sw $zero, 0x10($a0) -/* 013CD0 700130D0 AC800008 */ sw $zero, 8($a0) -/* 013CD4 700130D4 AC80000C */ sw $zero, 0xc($a0) -/* 013CD8 700130D8 AC800000 */ sw $zero, ($a0) -/* 013CDC 700130DC AC800004 */ sw $zero, 4($a0) -/* 013CE0 700130E0 18C00008 */ blez $a2, .L70013104 -/* 013CE4 700130E4 00008025 */ move $s0, $zero -/* 013CE8 700130E8 00A08825 */ move $s1, $a1 -.L700130EC: -/* 013CEC 700130EC 02202025 */ move $a0, $s1 -/* 013CF0 700130F0 0C003AB0 */ jal alLink -/* 013CF4 700130F4 02402825 */ move $a1, $s2 -/* 013CF8 700130F8 26100001 */ addiu $s0, $s0, 1 -/* 013CFC 700130FC 1613FFFB */ bne $s0, $s3, .L700130EC -/* 013D00 70013100 2631001C */ addiu $s1, $s1, 0x1c -.L70013104: -/* 013D04 70013104 8FBF0024 */ lw $ra, 0x24($sp) -/* 013D08 70013108 8FB00014 */ lw $s0, 0x14($sp) -/* 013D0C 7001310C 8FB10018 */ lw $s1, 0x18($sp) -/* 013D10 70013110 8FB2001C */ lw $s2, 0x1c($sp) -/* 013D14 70013114 8FB30020 */ lw $s3, 0x20($sp) -/* 013D18 70013118 03E00008 */ jr $ra -/* 013D1C 7001311C 27BD0028 */ addiu $sp, $sp, 0x28 - -glabel alSynAddPlayer -/* 013D20 70013120 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 013D24 70013124 AFBF0014 */ sw $ra, 0x14($sp) -/* 013D28 70013128 00803025 */ move $a2, $a0 -/* 013D2C 7001312C AFA60018 */ sw $a2, 0x18($sp) -/* 013D30 70013130 24040001 */ li $a0, 1 -/* 013D34 70013134 0C00374C */ jal osSetIntMask -/* 013D38 70013138 AFA5001C */ sw $a1, 0x1c($sp) -/* 013D3C 7001313C 8FA60018 */ lw $a2, 0x18($sp) -/* 013D40 70013140 8FA5001C */ lw $a1, 0x1c($sp) -/* 013D44 70013144 00402025 */ move $a0, $v0 -/* 013D48 70013148 8CCE0020 */ lw $t6, 0x20($a2) -/* 013D4C 7001314C ACAE0010 */ sw $t6, 0x10($a1) -/* 013D50 70013150 8CCF0000 */ lw $t7, ($a2) -/* 013D54 70013154 ACAF0000 */ sw $t7, ($a1) -/* 013D58 70013158 0C00374C */ jal osSetIntMask -/* 013D5C 7001315C ACC50000 */ sw $a1, ($a2) -/* 013D60 70013160 8FBF0014 */ lw $ra, 0x14($sp) -/* 013D64 70013164 27BD0018 */ addiu $sp, $sp, 0x18 -/* 013D68 70013168 03E00008 */ jr $ra -/* 013D6C 7001316C 00000000 */ nop - -glabel _allocatePVoice -/* 013D70 70013170 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 013D74 70013174 AFBF0014 */ sw $ra, 0x14($sp) -/* 013D78 70013178 AFA60030 */ sw $a2, 0x30($sp) -/* 013D7C 7001317C 8C870014 */ lw $a3, 0x14($a0) -/* 013D80 70013180 00067400 */ sll $t6, $a2, 0x10 -/* 013D84 70013184 000E3403 */ sra $a2, $t6, 0x10 -/* 013D88 70013188 00804025 */ move $t0, $a0 -/* 013D8C 7001318C 10E0000D */ beqz $a3, .L700131C4 -/* 013D90 70013190 00001825 */ move $v1, $zero -/* 013D94 70013194 ACA70000 */ sw $a3, ($a1) -/* 013D98 70013198 AFA80028 */ sw $t0, 0x28($sp) -/* 013D9C 7001319C AFA70024 */ sw $a3, 0x24($sp) -/* 013DA0 700131A0 AFA0001C */ sw $zero, 0x1c($sp) -/* 013DA4 700131A4 0C003AA4 */ jal alUnlink -/* 013DA8 700131A8 00E02025 */ move $a0, $a3 -/* 013DAC 700131AC 8FA80028 */ lw $t0, 0x28($sp) -/* 013DB0 700131B0 8FA40024 */ lw $a0, 0x24($sp) -/* 013DB4 700131B4 0C003AB0 */ jal alLink -/* 013DB8 700131B8 2505000C */ addiu $a1, $t0, 0xc -/* 013DBC 700131BC 10000021 */ b .L70013244 -/* 013DC0 700131C0 8FA3001C */ lw $v1, 0x1c($sp) -.L700131C4: -/* 013DC4 700131C4 8D070004 */ lw $a3, 4($t0) -/* 013DC8 700131C8 10E0000C */ beqz $a3, .L700131FC -/* 013DCC 700131CC 00E02025 */ move $a0, $a3 -/* 013DD0 700131D0 ACA70000 */ sw $a3, ($a1) -/* 013DD4 700131D4 AFA80028 */ sw $t0, 0x28($sp) -/* 013DD8 700131D8 AFA70024 */ sw $a3, 0x24($sp) -/* 013DDC 700131DC 0C003AA4 */ jal alUnlink -/* 013DE0 700131E0 AFA3001C */ sw $v1, 0x1c($sp) -/* 013DE4 700131E4 8FA80028 */ lw $t0, 0x28($sp) -/* 013DE8 700131E8 8FA40024 */ lw $a0, 0x24($sp) -/* 013DEC 700131EC 0C003AB0 */ jal alLink -/* 013DF0 700131F0 2505000C */ addiu $a1, $t0, 0xc -/* 013DF4 700131F4 10000013 */ b .L70013244 -/* 013DF8 700131F8 8FA3001C */ lw $v1, 0x1c($sp) -.L700131FC: -/* 013DFC 700131FC 8D07000C */ lw $a3, 0xc($t0) -/* 013E00 70013200 50E00011 */ beql $a3, $zero, .L70013248 -/* 013E04 70013204 8FBF0014 */ lw $ra, 0x14($sp) -/* 013E08 70013208 8CF80008 */ lw $t8, 8($a3) -.L7001320C: -/* 013E0C 7001320C 87190016 */ lh $t9, 0x16($t8) -/* 013E10 70013210 00D9082A */ slt $at, $a2, $t9 -/* 013E14 70013214 54200009 */ bnezl $at, .L7001323C -/* 013E18 70013218 8CE70000 */ lw $a3, ($a3) -/* 013E1C 7001321C 8CE900D8 */ lw $t1, 0xd8($a3) -/* 013E20 70013220 55200006 */ bnezl $t1, .L7001323C -/* 013E24 70013224 8CE70000 */ lw $a3, ($a3) -/* 013E28 70013228 ACA70000 */ sw $a3, ($a1) -/* 013E2C 7001322C 8CEA0008 */ lw $t2, 8($a3) -/* 013E30 70013230 24030001 */ li $v1, 1 -/* 013E34 70013234 85460016 */ lh $a2, 0x16($t2) -/* 013E38 70013238 8CE70000 */ lw $a3, ($a3) -.L7001323C: -/* 013E3C 7001323C 54E0FFF3 */ bnezl $a3, .L7001320C -/* 013E40 70013240 8CF80008 */ lw $t8, 8($a3) -.L70013244: -/* 013E44 70013244 8FBF0014 */ lw $ra, 0x14($sp) -.L70013248: -/* 013E48 70013248 27BD0028 */ addiu $sp, $sp, 0x28 -/* 013E4C 7001324C 00601025 */ move $v0, $v1 -/* 013E50 70013250 03E00008 */ jr $ra -/* 013E54 70013254 00000000 */ nop - -glabel alSynAllocVoice -/* 013E58 70013258 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 013E5C 7001325C AFBF001C */ sw $ra, 0x1c($sp) -/* 013E60 70013260 AFB00018 */ sw $s0, 0x18($sp) -/* 013E64 70013264 AFA40030 */ sw $a0, 0x30($sp) -/* 013E68 70013268 AFA0002C */ sw $zero, 0x2c($sp) -/* 013E6C 7001326C 84CE0000 */ lh $t6, ($a2) -/* 013E70 70013270 00A08025 */ move $s0, $a1 -/* 013E74 70013274 A4AE0016 */ sh $t6, 0x16($a1) -/* 013E78 70013278 90CF0004 */ lbu $t7, 4($a2) -/* 013E7C 7001327C ACA0000C */ sw $zero, 0xc($a1) -/* 013E80 70013280 A4AF001A */ sh $t7, 0x1a($a1) -/* 013E84 70013284 84D80002 */ lh $t8, 2($a2) -/* 013E88 70013288 A4A00014 */ sh $zero, 0x14($a1) -/* 013E8C 7001328C ACA00008 */ sw $zero, 8($a1) -/* 013E90 70013290 A4B80018 */ sh $t8, 0x18($a1) -/* 013E94 70013294 84C60000 */ lh $a2, ($a2) -/* 013E98 70013298 8FA40030 */ lw $a0, 0x30($sp) -/* 013E9C 7001329C 0C004C5C */ jal _allocatePVoice -/* 013EA0 700132A0 27A5002C */ addiu $a1, $sp, 0x2c -/* 013EA4 700132A4 8FB9002C */ lw $t9, 0x2c($sp) -/* 013EA8 700132A8 53200035 */ beql $t9, $zero, .L70013380 -/* 013EAC 700132AC 8FA2002C */ lw $v0, 0x2c($sp) -/* 013EB0 700132B0 1040002C */ beqz $v0, .L70013364 -/* 013EB4 700132B4 8F24000C */ lw $a0, 0xc($t9) -/* 013EB8 700132B8 24080200 */ li $t0, 512 -/* 013EBC 700132BC AF2800D8 */ sw $t0, 0xd8($t9) -/* 013EC0 700132C0 8FA9002C */ lw $t1, 0x2c($sp) -/* 013EC4 700132C4 8D2A0008 */ lw $t2, 8($t1) -/* 013EC8 700132C8 AD400008 */ sw $zero, 8($t2) -/* 013ECC 700132CC 0C003C34 */ jal __allocParam -/* 013ED0 700132D0 AFA40028 */ sw $a0, 0x28($sp) -/* 013ED4 700132D4 8FAB0030 */ lw $t3, 0x30($sp) -/* 013ED8 700132D8 8FA40028 */ lw $a0, 0x28($sp) -/* 013EDC 700132DC 240D000B */ li $t5, 11 -/* 013EE0 700132E0 8D6C001C */ lw $t4, 0x1c($t3) -/* 013EE4 700132E4 A44D0008 */ sh $t5, 8($v0) -/* 013EE8 700132E8 AC40000C */ sw $zero, 0xc($v0) -/* 013EEC 700132EC AC4C0004 */ sw $t4, 4($v0) -/* 013EF0 700132F0 8FAE002C */ lw $t6, 0x2c($sp) -/* 013EF4 700132F4 24050003 */ li $a1, 3 -/* 013EF8 700132F8 00403025 */ move $a2, $v0 -/* 013EFC 700132FC 8DCF00D8 */ lw $t7, 0xd8($t6) -/* 013F00 70013300 25F8FFC0 */ addiu $t8, $t7, -0x40 -/* 013F04 70013304 AC580010 */ sw $t8, 0x10($v0) -/* 013F08 70013308 8C990008 */ lw $t9, 8($a0) -/* 013F0C 7001330C 0320F809 */ jalr $t9 -/* 013F10 70013310 00000000 */ nop -/* 013F14 70013314 0C003C34 */ jal __allocParam -/* 013F18 70013318 00000000 */ nop -/* 013F1C 7001331C 8FA40028 */ lw $a0, 0x28($sp) -/* 013F20 70013320 10400012 */ beqz $v0, .L7001336C -/* 013F24 70013324 00403025 */ move $a2, $v0 -/* 013F28 70013328 8FA80030 */ lw $t0, 0x30($sp) -/* 013F2C 7001332C 8FAA002C */ lw $t2, 0x2c($sp) -/* 013F30 70013330 240D000F */ li $t5, 15 -/* 013F34 70013334 8D09001C */ lw $t1, 0x1c($t0) -/* 013F38 70013338 8D4B00D8 */ lw $t3, 0xd8($t2) -/* 013F3C 7001333C A44D0008 */ sh $t5, 8($v0) -/* 013F40 70013340 AC400000 */ sw $zero, ($v0) -/* 013F44 70013344 012B6021 */ addu $t4, $t1, $t3 -/* 013F48 70013348 AC4C0004 */ sw $t4, 4($v0) -/* 013F4C 7001334C 8C990008 */ lw $t9, 8($a0) -/* 013F50 70013350 24050003 */ li $a1, 3 -/* 013F54 70013354 0320F809 */ jalr $t9 -/* 013F58 70013358 00000000 */ nop -/* 013F5C 7001335C 10000004 */ b .L70013370 -/* 013F60 70013360 8FAF002C */ lw $t7, 0x2c($sp) -.L70013364: -/* 013F64 70013364 8FAE002C */ lw $t6, 0x2c($sp) -/* 013F68 70013368 ADC000D8 */ sw $zero, 0xd8($t6) -.L7001336C: -/* 013F6C 7001336C 8FAF002C */ lw $t7, 0x2c($sp) -.L70013370: -/* 013F70 70013370 ADF00008 */ sw $s0, 8($t7) -/* 013F74 70013374 8FB8002C */ lw $t8, 0x2c($sp) -/* 013F78 70013378 AE180008 */ sw $t8, 8($s0) -/* 013F7C 7001337C 8FA2002C */ lw $v0, 0x2c($sp) -.L70013380: -/* 013F80 70013380 8FBF001C */ lw $ra, 0x1c($sp) -/* 013F84 70013384 8FB00018 */ lw $s0, 0x18($sp) -/* 013F88 70013388 0002402B */ sltu $t0, $zero, $v0 -/* 013F8C 7001338C 01001025 */ move $v0, $t0 -/* 013F90 70013390 03E00008 */ jr $ra -/* 013F94 70013394 27BD0030 */ addiu $sp, $sp, 0x30 - -/* 013F98 70013398 00000000 */ nop -/* 013F9C 7001339C 00000000 */ nop -glabel alSynSetVol -/* 013FA0 700133A0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 013FA4 700133A4 AFBF0014 */ sw $ra, 0x14($sp) -/* 013FA8 700133A8 AFA50024 */ sw $a1, 0x24($sp) -/* 013FAC 700133AC AFA60028 */ sw $a2, 0x28($sp) -/* 013FB0 700133B0 AFA7002C */ sw $a3, 0x2c($sp) -/* 013FB4 700133B4 8CAF0008 */ lw $t7, 8($a1) -/* 013FB8 700133B8 51E0001D */ beql $t7, $zero, .L70013430 -/* 013FBC 700133BC 8FBF0014 */ lw $ra, 0x14($sp) -/* 013FC0 700133C0 0C003C34 */ jal __allocParam -/* 013FC4 700133C4 AFA40020 */ sw $a0, 0x20($sp) -/* 013FC8 700133C8 10400018 */ beqz $v0, .L7001342C -/* 013FCC 700133CC 8FA40020 */ lw $a0, 0x20($sp) -/* 013FD0 700133D0 8FB90024 */ lw $t9, 0x24($sp) -/* 013FD4 700133D4 8C98001C */ lw $t8, 0x1c($a0) -/* 013FD8 700133D8 240B000B */ li $t3, 11 -/* 013FDC 700133DC 8F280008 */ lw $t0, 8($t9) -/* 013FE0 700133E0 8D0900D8 */ lw $t1, 0xd8($t0) -/* 013FE4 700133E4 A44B0008 */ sh $t3, 8($v0) -/* 013FE8 700133E8 03095021 */ addu $t2, $t8, $t1 -/* 013FEC 700133EC AC4A0004 */ sw $t2, 4($v0) -/* 013FF0 700133F0 87AC002A */ lh $t4, 0x2a($sp) -/* 013FF4 700133F4 AC4C000C */ sw $t4, 0xc($v0) -/* 013FF8 700133F8 AFA2001C */ sw $v0, 0x1c($sp) -/* 013FFC 700133FC 0C003BF2 */ jal _timeToSamples -/* 014000 70013400 8FA5002C */ lw $a1, 0x2c($sp) -/* 014004 70013404 8FA6001C */ lw $a2, 0x1c($sp) -/* 014008 70013408 24050003 */ li $a1, 3 -/* 01400C 7001340C ACC20010 */ sw $v0, 0x10($a2) -/* 014010 70013410 ACC00000 */ sw $zero, ($a2) -/* 014014 70013414 8FAD0024 */ lw $t5, 0x24($sp) -/* 014018 70013418 8DAE0008 */ lw $t6, 8($t5) -/* 01401C 7001341C 8DC4000C */ lw $a0, 0xc($t6) -/* 014020 70013420 8C990008 */ lw $t9, 8($a0) -/* 014024 70013424 0320F809 */ jalr $t9 -/* 014028 70013428 00000000 */ nop -.L7001342C: -/* 01402C 7001342C 8FBF0014 */ lw $ra, 0x14($sp) -.L70013430: -/* 014030 70013430 27BD0020 */ addiu $sp, $sp, 0x20 -/* 014034 70013434 03E00008 */ jr $ra -/* 014038 70013438 00000000 */ nop - -/* 01403C 7001343C 00000000 */ nop -glabel alSynStartVoice -/* 014040 70013440 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 014044 70013444 AFBF0014 */ sw $ra, 0x14($sp) -/* 014048 70013448 AFA40018 */ sw $a0, 0x18($sp) -/* 01404C 7001344C AFA60020 */ sw $a2, 0x20($sp) -/* 014050 70013450 8CAE0008 */ lw $t6, 8($a1) -/* 014054 70013454 51C0001A */ beql $t6, $zero, .L700134C0 -/* 014058 70013458 8FBF0014 */ lw $ra, 0x14($sp) -/* 01405C 7001345C 0C003C34 */ jal __allocParam -/* 014060 70013460 AFA5001C */ sw $a1, 0x1c($sp) -/* 014064 70013464 8FA7001C */ lw $a3, 0x1c($sp) -/* 014068 70013468 10400014 */ beqz $v0, .L700134BC -/* 01406C 7001346C 00403025 */ move $a2, $v0 -/* 014070 70013470 8FAF0018 */ lw $t7, 0x18($sp) -/* 014074 70013474 8CF90008 */ lw $t9, 8($a3) -/* 014078 70013478 240A000E */ li $t2, 14 -/* 01407C 7001347C 8DF8001C */ lw $t8, 0x1c($t7) -/* 014080 70013480 8F2800D8 */ lw $t0, 0xd8($t9) -/* 014084 70013484 A44A0008 */ sh $t2, 8($v0) -/* 014088 70013488 24050003 */ li $a1, 3 -/* 01408C 7001348C 03084821 */ addu $t1, $t8, $t0 -/* 014090 70013490 AC490004 */ sw $t1, 4($v0) -/* 014094 70013494 8FAB0020 */ lw $t3, 0x20($sp) -/* 014098 70013498 AC400000 */ sw $zero, ($v0) -/* 01409C 7001349C AC4B000C */ sw $t3, 0xc($v0) -/* 0140A0 700134A0 84EC001A */ lh $t4, 0x1a($a3) -/* 0140A4 700134A4 A44C000A */ sh $t4, 0xa($v0) -/* 0140A8 700134A8 8CED0008 */ lw $t5, 8($a3) -/* 0140AC 700134AC 8DA4000C */ lw $a0, 0xc($t5) -/* 0140B0 700134B0 8C990008 */ lw $t9, 8($a0) -/* 0140B4 700134B4 0320F809 */ jalr $t9 -/* 0140B8 700134B8 00000000 */ nop -.L700134BC: -/* 0140BC 700134BC 8FBF0014 */ lw $ra, 0x14($sp) -.L700134C0: -/* 0140C0 700134C0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0140C4 700134C4 03E00008 */ jr $ra -/* 0140C8 700134C8 00000000 */ nop - -/* 0140CC 700134CC 00000000 */ nop -glabel alSynSetPan -/* 0140D0 700134D0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0140D4 700134D4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0140D8 700134D8 AFA40018 */ sw $a0, 0x18($sp) -/* 0140DC 700134DC AFA60020 */ sw $a2, 0x20($sp) -/* 0140E0 700134E0 8CAE0008 */ lw $t6, 8($a1) -/* 0140E4 700134E4 51C00018 */ beql $t6, $zero, .L70013548 -/* 0140E8 700134E8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0140EC 700134EC 0C003C34 */ jal __allocParam -/* 0140F0 700134F0 AFA5001C */ sw $a1, 0x1c($sp) -/* 0140F4 700134F4 8FA7001C */ lw $a3, 0x1c($sp) -/* 0140F8 700134F8 10400012 */ beqz $v0, .L70013544 -/* 0140FC 700134FC 00403025 */ move $a2, $v0 -/* 014100 70013500 8FAF0018 */ lw $t7, 0x18($sp) -/* 014104 70013504 8CF90008 */ lw $t9, 8($a3) -/* 014108 70013508 240A000C */ li $t2, 12 -/* 01410C 7001350C 8DF8001C */ lw $t8, 0x1c($t7) -/* 014110 70013510 8F2800D8 */ lw $t0, 0xd8($t9) -/* 014114 70013514 A44A0008 */ sh $t2, 8($v0) -/* 014118 70013518 24050003 */ li $a1, 3 -/* 01411C 7001351C 03084821 */ addu $t1, $t8, $t0 -/* 014120 70013520 AC490004 */ sw $t1, 4($v0) -/* 014124 70013524 93AB0023 */ lbu $t3, 0x23($sp) -/* 014128 70013528 AC400000 */ sw $zero, ($v0) -/* 01412C 7001352C AC4B000C */ sw $t3, 0xc($v0) -/* 014130 70013530 8CEC0008 */ lw $t4, 8($a3) -/* 014134 70013534 8D84000C */ lw $a0, 0xc($t4) -/* 014138 70013538 8C990008 */ lw $t9, 8($a0) -/* 01413C 7001353C 0320F809 */ jalr $t9 -/* 014140 70013540 00000000 */ nop -.L70013544: -/* 014144 70013544 8FBF0014 */ lw $ra, 0x14($sp) -.L70013548: -/* 014148 70013548 27BD0018 */ addiu $sp, $sp, 0x18 -/* 01414C 7001354C 03E00008 */ jr $ra -/* 014150 70013550 00000000 */ nop - -/* 014154 70013554 00000000 */ nop -/* 014158 70013558 00000000 */ nop -/* 01415C 7001355C 00000000 */ nop -glabel alSynSetPitch -/* 014160 70013560 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 014164 70013564 AFBF0014 */ sw $ra, 0x14($sp) -/* 014168 70013568 AFA40018 */ sw $a0, 0x18($sp) -/* 01416C 7001356C AFA60020 */ sw $a2, 0x20($sp) -/* 014170 70013570 8CAE0008 */ lw $t6, 8($a1) -/* 014174 70013574 51C00018 */ beql $t6, $zero, .L700135D8 -/* 014178 70013578 8FBF0014 */ lw $ra, 0x14($sp) -/* 01417C 7001357C 0C003C34 */ jal __allocParam -/* 014180 70013580 AFA5001C */ sw $a1, 0x1c($sp) -/* 014184 70013584 8FA7001C */ lw $a3, 0x1c($sp) -/* 014188 70013588 10400012 */ beqz $v0, .L700135D4 -/* 01418C 7001358C 00403025 */ move $a2, $v0 -/* 014190 70013590 8FAF0018 */ lw $t7, 0x18($sp) -/* 014194 70013594 8CF90008 */ lw $t9, 8($a3) -/* 014198 70013598 240A0007 */ li $t2, 7 -/* 01419C 7001359C 8DF8001C */ lw $t8, 0x1c($t7) -/* 0141A0 700135A0 8F2800D8 */ lw $t0, 0xd8($t9) -/* 0141A4 700135A4 A44A0008 */ sh $t2, 8($v0) -/* 0141A8 700135A8 24050003 */ li $a1, 3 -/* 0141AC 700135AC 03084821 */ addu $t1, $t8, $t0 -/* 0141B0 700135B0 AC490004 */ sw $t1, 4($v0) -/* 0141B4 700135B4 C7A40020 */ lwc1 $f4, 0x20($sp) -/* 0141B8 700135B8 AC400000 */ sw $zero, ($v0) -/* 0141BC 700135BC E444000C */ swc1 $f4, 0xc($v0) -/* 0141C0 700135C0 8CEB0008 */ lw $t3, 8($a3) -/* 0141C4 700135C4 8D64000C */ lw $a0, 0xc($t3) -/* 0141C8 700135C8 8C990008 */ lw $t9, 8($a0) -/* 0141CC 700135CC 0320F809 */ jalr $t9 -/* 0141D0 700135D0 00000000 */ nop -.L700135D4: -/* 0141D4 700135D4 8FBF0014 */ lw $ra, 0x14($sp) -.L700135D8: -/* 0141D8 700135D8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0141DC 700135DC 03E00008 */ jr $ra -/* 0141E0 700135E0 00000000 */ nop - -/* 0141E4 700135E4 00000000 */ nop -/* 0141E8 700135E8 00000000 */ nop -/* 0141EC 700135EC 00000000 */ nop -glabel alSynSetFXMix -/* 0141F0 700135F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0141F4 700135F4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0141F8 700135F8 AFA40018 */ sw $a0, 0x18($sp) -/* 0141FC 700135FC AFA60020 */ sw $a2, 0x20($sp) -/* 014200 70013600 8CAE0008 */ lw $t6, 8($a1) -/* 014204 70013604 51C0001C */ beql $t6, $zero, .L70013678 -/* 014208 70013608 8FBF0014 */ lw $ra, 0x14($sp) -/* 01420C 7001360C 0C003C34 */ jal __allocParam -/* 014210 70013610 AFA5001C */ sw $a1, 0x1c($sp) -/* 014214 70013614 8FA7001C */ lw $a3, 0x1c($sp) -/* 014218 70013618 10400016 */ beqz $v0, .L70013674 -/* 01421C 7001361C 00403025 */ move $a2, $v0 -/* 014220 70013620 8FAF0018 */ lw $t7, 0x18($sp) -/* 014224 70013624 8CF90008 */ lw $t9, 8($a3) -/* 014228 70013628 240A0010 */ li $t2, 16 -/* 01422C 7001362C 8DF8001C */ lw $t8, 0x1c($t7) -/* 014230 70013630 8F2800D8 */ lw $t0, 0xd8($t9) -/* 014234 70013634 A44A0008 */ sh $t2, 8($v0) -/* 014238 70013638 03084821 */ addu $t1, $t8, $t0 -/* 01423C 7001363C AC490004 */ sw $t1, 4($v0) -/* 014240 70013640 93A30023 */ lbu $v1, 0x23($sp) -/* 014244 70013644 04610003 */ bgez $v1, .L70013654 -/* 014248 70013648 00035823 */ negu $t3, $v1 -/* 01424C 7001364C 10000002 */ b .L70013658 -/* 014250 70013650 AC4B000C */ sw $t3, 0xc($v0) -.L70013654: -/* 014254 70013654 AC43000C */ sw $v1, 0xc($v0) -.L70013658: -/* 014258 70013658 ACC00000 */ sw $zero, ($a2) -/* 01425C 7001365C 8CEC0008 */ lw $t4, 8($a3) -/* 014260 70013660 24050003 */ li $a1, 3 -/* 014264 70013664 8D84000C */ lw $a0, 0xc($t4) -/* 014268 70013668 8C990008 */ lw $t9, 8($a0) -/* 01426C 7001366C 0320F809 */ jalr $t9 -/* 014270 70013670 00000000 */ nop -.L70013674: -/* 014274 70013674 8FBF0014 */ lw $ra, 0x14($sp) -.L70013678: -/* 014278 70013678 27BD0018 */ addiu $sp, $sp, 0x18 -/* 01427C 7001367C 03E00008 */ jr $ra -/* 014280 70013680 00000000 */ nop - -/* 014284 70013684 00000000 */ nop -/* 014288 70013688 00000000 */ nop -/* 01428C 7001368C 00000000 */ nop -glabel alSynStopVoice -/* 014290 70013690 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 014294 70013694 AFBF0014 */ sw $ra, 0x14($sp) -/* 014298 70013698 AFA40018 */ sw $a0, 0x18($sp) -/* 01429C 7001369C 8CAE0008 */ lw $t6, 8($a1) -/* 0142A0 700136A0 51C00016 */ beql $t6, $zero, .L700136FC -/* 0142A4 700136A4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0142A8 700136A8 0C003C34 */ jal __allocParam -/* 0142AC 700136AC AFA5001C */ sw $a1, 0x1c($sp) -/* 0142B0 700136B0 8FA7001C */ lw $a3, 0x1c($sp) -/* 0142B4 700136B4 10400010 */ beqz $v0, .L700136F8 -/* 0142B8 700136B8 00403025 */ move $a2, $v0 -/* 0142BC 700136BC 8FAF0018 */ lw $t7, 0x18($sp) -/* 0142C0 700136C0 8CF90008 */ lw $t9, 8($a3) -/* 0142C4 700136C4 240A000F */ li $t2, 15 -/* 0142C8 700136C8 8DF8001C */ lw $t8, 0x1c($t7) -/* 0142CC 700136CC 8F2800D8 */ lw $t0, 0xd8($t9) -/* 0142D0 700136D0 A44A0008 */ sh $t2, 8($v0) -/* 0142D4 700136D4 AC400000 */ sw $zero, ($v0) -/* 0142D8 700136D8 03084821 */ addu $t1, $t8, $t0 -/* 0142DC 700136DC AC490004 */ sw $t1, 4($v0) -/* 0142E0 700136E0 8CEB0008 */ lw $t3, 8($a3) -/* 0142E4 700136E4 24050003 */ li $a1, 3 -/* 0142E8 700136E8 8D64000C */ lw $a0, 0xc($t3) -/* 0142EC 700136EC 8C990008 */ lw $t9, 8($a0) -/* 0142F0 700136F0 0320F809 */ jalr $t9 -/* 0142F4 700136F4 00000000 */ nop -.L700136F8: -/* 0142F8 700136F8 8FBF0014 */ lw $ra, 0x14($sp) -.L700136FC: -/* 0142FC 700136FC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 014300 70013700 03E00008 */ jr $ra -/* 014304 70013704 00000000 */ nop - -/* 014308 70013708 00000000 */ nop -/* 01430C 7001370C 00000000 */ nop -glabel alSynFreeVoice -/* 014310 70013710 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 014314 70013714 AFBF0014 */ sw $ra, 0x14($sp) -/* 014318 70013718 8CA60008 */ lw $a2, 8($a1) -/* 01431C 7001371C 00804025 */ move $t0, $a0 -/* 014320 70013720 00A03825 */ move $a3, $a1 -/* 014324 70013724 50C00023 */ beql $a2, $zero, .L700137B4 -/* 014328 70013728 8FBF0014 */ lw $ra, 0x14($sp) -/* 01432C 7001372C 8CCE00D8 */ lw $t6, 0xd8($a2) -/* 014330 70013730 51C0001A */ beql $t6, $zero, .L7001379C -/* 014334 70013734 01002025 */ move $a0, $t0 -/* 014338 70013738 AFA5001C */ sw $a1, 0x1c($sp) -/* 01433C 7001373C 0C003C34 */ jal __allocParam -/* 014340 70013740 AFA40018 */ sw $a0, 0x18($sp) -/* 014344 70013744 8FA7001C */ lw $a3, 0x1c($sp) -/* 014348 70013748 8FA80018 */ lw $t0, 0x18($sp) -/* 01434C 7001374C 10400018 */ beqz $v0, .L700137B0 -/* 014350 70013750 00403025 */ move $a2, $v0 -/* 014354 70013754 8CF80008 */ lw $t8, 8($a3) -/* 014358 70013758 8D0F001C */ lw $t7, 0x1c($t0) -/* 01435C 7001375C 24050003 */ li $a1, 3 -/* 014360 70013760 8F1900D8 */ lw $t9, 0xd8($t8) -/* 014364 70013764 A4400008 */ sh $zero, 8($v0) -/* 014368 70013768 01F94821 */ addu $t1, $t7, $t9 -/* 01436C 7001376C AC490004 */ sw $t1, 4($v0) -/* 014370 70013770 8CEA0008 */ lw $t2, 8($a3) -/* 014374 70013774 AC4A000C */ sw $t2, 0xc($v0) -/* 014378 70013778 8CEB0008 */ lw $t3, 8($a3) -/* 01437C 7001377C 8D64000C */ lw $a0, 0xc($t3) -/* 014380 70013780 AFA7001C */ sw $a3, 0x1c($sp) -/* 014384 70013784 8C990008 */ lw $t9, 8($a0) -/* 014388 70013788 0320F809 */ jalr $t9 -/* 01438C 7001378C 00000000 */ nop -/* 014390 70013790 10000006 */ b .L700137AC -/* 014394 70013794 8FA7001C */ lw $a3, 0x1c($sp) -/* 014398 70013798 01002025 */ move $a0, $t0 -.L7001379C: -/* 01439C 7001379C 00C02825 */ move $a1, $a2 -/* 0143A0 700137A0 0C003C08 */ jal _freePVoice -/* 0143A4 700137A4 AFA7001C */ sw $a3, 0x1c($sp) -/* 0143A8 700137A8 8FA7001C */ lw $a3, 0x1c($sp) -.L700137AC: -/* 0143AC 700137AC ACE00008 */ sw $zero, 8($a3) -.L700137B0: -/* 0143B0 700137B0 8FBF0014 */ lw $ra, 0x14($sp) -.L700137B4: -/* 0143B4 700137B4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0143B8 700137B8 03E00008 */ jr $ra -/* 0143BC 700137BC 00000000 */ nop - -glabel alCents2Ratio -/* 0143C0 700137C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0143C4 700137C4 44811000 */ mtc1 $at, $f2 -/* 0143C8 700137C8 04800004 */ bltz $a0, .L700137DC -/* 0143CC 700137CC 3C018003 */ lui $at, %hi(F32_800296E4) -/* 0143D0 700137D0 3C018003 */ lui $at, %hi(F32_800296E0) -/* 0143D4 700137D4 10000003 */ b .L700137E4 -/* 0143D8 700137D8 C42096E0 */ lwc1 $f0, %lo(F32_800296E0)($at) -.L700137DC: -/* 0143DC 700137DC C42096E4 */ lwc1 $f0, %lo(F32_800296E4)($at) -/* 0143E0 700137E0 00042023 */ negu $a0, $a0 -.L700137E4: -/* 0143E4 700137E4 10800008 */ beqz $a0, .L70013808 -.L700137E8: -/* 0143E8 700137E8 308E0001 */ andi $t6, $a0, 1 -/* 0143EC 700137EC 11C00003 */ beqz $t6, .L700137FC -/* 0143F0 700137F0 00047843 */ sra $t7, $a0, 1 -/* 0143F4 700137F4 46001082 */ mul.s $f2, $f2, $f0 -/* 0143F8 700137F8 00000000 */ nop -.L700137FC: -/* 0143FC 700137FC 46000002 */ mul.s $f0, $f0, $f0 -/* 014400 70013800 15E0FFF9 */ bnez $t7, .L700137E8 -/* 014404 70013804 01E02025 */ move $a0, $t7 -.L70013808: -/* 014408 70013808 03E00008 */ jr $ra -/* 01440C 7001380C 46001006 */ mov.s $f0, $f2 -.section .rodata -glabel F32_800296E0 -.float 1.0005778 -glabel F32_800296E4 -.float 0.99942255 -.align 4 - -.section .text -glabel osPiReadIo -/* 014410 70013810 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 014414 70013814 AFBF001C */ sw $ra, 0x1c($sp) -/* 014418 70013818 AFA40028 */ sw $a0, 0x28($sp) -/* 01441C 7001381C AFA5002C */ sw $a1, 0x2c($sp) -/* 014420 70013820 0C0075D8 */ jal __osPiGetAccess -/* 014424 70013824 AFB00018 */ sw $s0, 0x18($sp) -/* 014428 70013828 8FA40028 */ lw $a0, 0x28($sp) -/* 01442C 7001382C 0C005EF8 */ jal osPiRawReadIo -/* 014430 70013830 8FA5002C */ lw $a1, 0x2c($sp) -/* 014434 70013834 0C0075E9 */ jal __osPiRelAccess -/* 014438 70013838 00408025 */ move $s0, $v0 -/* 01443C 7001383C 8FBF001C */ lw $ra, 0x1c($sp) -/* 014440 70013840 02001025 */ move $v0, $s0 -/* 014444 70013844 8FB00018 */ lw $s0, 0x18($sp) -/* 014448 70013848 03E00008 */ jr $ra -/* 01444C 7001384C 27BD0028 */ addiu $sp, $sp, 0x28 - -glabel memcpy -/* 014450 70013850 00801025 */ move $v0, $a0 -/* 014454 70013854 10C00007 */ beqz $a2, .L70013874 -/* 014458 70013858 00A01825 */ move $v1, $a1 -.L7001385C: -/* 01445C 7001385C 906E0000 */ lbu $t6, ($v1) -/* 014460 70013860 24C6FFFF */ addiu $a2, $a2, -1 -/* 014464 70013864 24420001 */ addiu $v0, $v0, 1 -/* 014468 70013868 24630001 */ addiu $v1, $v1, 1 -/* 01446C 7001386C 14C0FFFB */ bnez $a2, .L7001385C -/* 014470 70013870 A04EFFFF */ sb $t6, -1($v0) -.L70013874: -/* 014474 70013874 03E00008 */ jr $ra -/* 014478 70013878 00801025 */ move $v0, $a0 - -glabel strlen -/* 01447C 7001387C 908E0000 */ lbu $t6, ($a0) -/* 014480 70013880 00801825 */ move $v1, $a0 -/* 014484 70013884 11C00005 */ beqz $t6, .L7001389C -/* 014488 70013888 00000000 */ nop -/* 01448C 7001388C 906F0001 */ lbu $t7, 1($v1) -.L70013890: -/* 014490 70013890 24630001 */ addiu $v1, $v1, 1 -/* 014494 70013894 55E0FFFE */ bnezl $t7, .L70013890 -/* 014498 70013898 906F0001 */ lbu $t7, 1($v1) -.L7001389C: -/* 01449C 7001389C 03E00008 */ jr $ra -/* 0144A0 700138A0 00641023 */ subu $v0, $v1, $a0 - -glabel strchr -/* 0144A4 700138A4 90830000 */ lbu $v1, ($a0) -/* 0144A8 700138A8 30AE00FF */ andi $t6, $a1, 0xff -/* 0144AC 700138AC 30A200FF */ andi $v0, $a1, 0xff -/* 0144B0 700138B0 51C3000A */ beql $t6, $v1, .L700138DC -/* 0144B4 700138B4 00801025 */ move $v0, $a0 -.L700138B8: -/* 0144B8 700138B8 54600004 */ bnezl $v1, .L700138CC -/* 0144BC 700138BC 90830001 */ lbu $v1, 1($a0) -/* 0144C0 700138C0 03E00008 */ jr $ra -/* 0144C4 700138C4 00001025 */ move $v0, $zero - -/* 0144C8 700138C8 90830001 */ lbu $v1, 1($a0) -.L700138CC: -/* 0144CC 700138CC 24840001 */ addiu $a0, $a0, 1 -/* 0144D0 700138D0 1443FFF9 */ bne $v0, $v1, .L700138B8 -/* 0144D4 700138D4 00000000 */ nop -/* 0144D8 700138D8 00801025 */ move $v0, $a0 -.L700138DC: -/* 0144DC 700138DC 03E00008 */ jr $ra -/* 0144E0 700138E0 00000000 */ nop - -/* 0144E4 700138E4 00000000 */ nop -/* 0144E8 700138E8 00000000 */ nop -/* 0144EC 700138EC 00000000 */ nop -glabel _Putfld -/* 0144F0 700138F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0144F4 700138F4 AFA50020 */ sw $a1, 0x20($sp) -/* 0144F8 700138F8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0144FC 700138FC 30AE00FF */ andi $t6, $a1, 0xff -/* 014500 70013900 29C10026 */ slti $at, $t6, 0x26 -/* 014504 70013904 01C02825 */ move $a1, $t6 -/* 014508 70013908 AE00000C */ sw $zero, 0xc($s0) -/* 01450C 7001390C AE000010 */ sw $zero, 0x10($s0) -/* 014510 70013910 AE000014 */ sw $zero, 0x14($s0) -/* 014514 70013914 AE000018 */ sw $zero, 0x18($s0) -/* 014518 70013918 AE00001C */ sw $zero, 0x1c($s0) -/* 01451C 7001391C AE000020 */ sw $zero, 0x20($s0) -/* 014520 70013920 1420000A */ bnez $at, .L7001394C -/* 014524 70013924 01C01825 */ move $v1, $t6 -/* 014528 70013928 25CFFFBB */ addiu $t7, $t6, -0x45 -/* 01452C 7001392C 2DE10034 */ sltiu $at, $t7, 0x34 -/* 014530 70013930 10200181 */ beqz $at, .L70013F38 -/* 014534 70013934 000F7880 */ sll $t7, $t7, 2 -/* 014538 70013938 3C018003 */ lui $at, %hi(jpt_80029714) -/* 01453C 7001393C 002F0821 */ addu $at, $at, $t7 -/* 014540 70013940 8C2F9714 */ lw $t7, %lo(jpt_80029714)($at) -/* 014544 70013944 01E00008 */ jr $t7 -/* 014548 70013948 00000000 */ nop -.L7001394C: -/* 01454C 7001394C 24010025 */ li $at, 37 -/* 014550 70013950 50610172 */ beql $v1, $at, .L70013F1C -/* 014554 70013954 8E18000C */ lw $t8, 0xc($s0) -/* 014558 70013958 10000178 */ b .L70013F3C -/* 01455C 7001395C 8E0E000C */ lw $t6, 0xc($s0) -.L70013960: -/* 014560 70013960 8CD80000 */ lw $t8, ($a2) -/* 014564 70013964 2401FFFC */ li $at, -4 -/* 014568 70013968 27190003 */ addiu $t9, $t8, 3 -/* 01456C 7001396C 03217024 */ and $t6, $t9, $at -/* 014570 70013970 25CF0004 */ addiu $t7, $t6, 4 -/* 014574 70013974 ACCF0000 */ sw $t7, ($a2) -/* 014578 70013978 8E0E000C */ lw $t6, 0xc($s0) -/* 01457C 7001397C 8DF9FFFC */ lw $t9, -4($t7) -/* 014580 70013980 00EE7821 */ addu $t7, $a3, $t6 -/* 014584 70013984 A1F90000 */ sb $t9, ($t7) -/* 014588 70013988 8E18000C */ lw $t8, 0xc($s0) -/* 01458C 7001398C 270E0001 */ addiu $t6, $t8, 1 -/* 014590 70013990 1000016F */ b .L70013F50 -/* 014594 70013994 AE0E000C */ sw $t6, 0xc($s0) -.L70013998: -/* 014598 70013998 92020034 */ lbu $v0, 0x34($s0) -/* 01459C 7001399C 2401006C */ li $at, 108 -/* 0145A0 700139A0 5441000D */ bnel $v0, $at, .L700139D8 -/* 0145A4 700139A4 2401004C */ li $at, 76 -/* 0145A8 700139A8 8CD90000 */ lw $t9, ($a2) -/* 0145AC 700139AC 2401FFFC */ li $at, -4 -/* 0145B0 700139B0 272F0003 */ addiu $t7, $t9, 3 -/* 0145B4 700139B4 01E1C024 */ and $t8, $t7, $at -/* 0145B8 700139B8 270E0004 */ addiu $t6, $t8, 4 -/* 0145BC 700139BC ACCE0000 */ sw $t6, ($a2) -/* 0145C0 700139C0 8DCFFFFC */ lw $t7, -4($t6) -/* 0145C4 700139C4 000FC7C3 */ sra $t8, $t7, 0x1f -/* 0145C8 700139C8 AE180000 */ sw $t8, ($s0) -/* 0145CC 700139CC 10000019 */ b .L70013A34 -/* 0145D0 700139D0 AE0F0004 */ sw $t7, 4($s0) -/* 0145D4 700139D4 2401004C */ li $at, 76 -.L700139D8: -/* 0145D8 700139D8 5441000D */ bnel $v0, $at, .L70013A10 -/* 0145DC 700139DC 8CCF0000 */ lw $t7, ($a2) -/* 0145E0 700139E0 8CCE0000 */ lw $t6, ($a2) -/* 0145E4 700139E4 2401FFF8 */ li $at, -8 -/* 0145E8 700139E8 25CF0007 */ addiu $t7, $t6, 7 -/* 0145EC 700139EC 01E1C024 */ and $t8, $t7, $at -/* 0145F0 700139F0 27190008 */ addiu $t9, $t8, 8 -/* 0145F4 700139F4 ACD90000 */ sw $t9, ($a2) -/* 0145F8 700139F8 8F38FFF8 */ lw $t8, -8($t9) -/* 0145FC 700139FC 8F39FFFC */ lw $t9, -4($t9) -/* 014600 70013A00 AE180000 */ sw $t8, ($s0) -/* 014604 70013A04 1000000B */ b .L70013A34 -/* 014608 70013A08 AE190004 */ sw $t9, 4($s0) -/* 01460C 70013A0C 8CCF0000 */ lw $t7, ($a2) -.L70013A10: -/* 014610 70013A10 2401FFFC */ li $at, -4 -/* 014614 70013A14 25EE0003 */ addiu $t6, $t7, 3 -/* 014618 70013A18 01C1C024 */ and $t8, $t6, $at -/* 01461C 70013A1C 27190004 */ addiu $t9, $t8, 4 -/* 014620 70013A20 ACD90000 */ sw $t9, ($a2) -/* 014624 70013A24 8F2EFFFC */ lw $t6, -4($t9) -/* 014628 70013A28 000EC7C3 */ sra $t8, $t6, 0x1f -/* 01462C 70013A2C AE180000 */ sw $t8, ($s0) -/* 014630 70013A30 AE0E0004 */ sw $t6, 4($s0) -.L70013A34: -/* 014634 70013A34 920F0034 */ lbu $t7, 0x34($s0) -/* 014638 70013A38 24010068 */ li $at, 104 -/* 01463C 70013A3C 55E10008 */ bnel $t7, $at, .L70013A60 -/* 014640 70013A40 8E0E0000 */ lw $t6, ($s0) -/* 014644 70013A44 8E0F0004 */ lw $t7, 4($s0) -/* 014648 70013A48 000FCC00 */ sll $t9, $t7, 0x10 -/* 01464C 70013A4C 00197403 */ sra $t6, $t9, 0x10 -/* 014650 70013A50 000EC7C3 */ sra $t8, $t6, 0x1f -/* 014654 70013A54 AE180000 */ sw $t8, ($s0) -/* 014658 70013A58 AE0E0004 */ sw $t6, 4($s0) -/* 01465C 70013A5C 8E0E0000 */ lw $t6, ($s0) -.L70013A60: -/* 014660 70013A60 5DC0000E */ bgtzl $t6, .L70013A9C -/* 014664 70013A64 8E020030 */ lw $v0, 0x30($s0) -/* 014668 70013A68 05C20004 */ bltzl $t6, .L70013A7C -/* 01466C 70013A6C 8E19000C */ lw $t9, 0xc($s0) -/* 014670 70013A70 1000000A */ b .L70013A9C -/* 014674 70013A74 8E020030 */ lw $v0, 0x30($s0) -/* 014678 70013A78 8E19000C */ lw $t9, 0xc($s0) -.L70013A7C: -/* 01467C 70013A7C 2418002D */ li $t8, 45 -/* 014680 70013A80 00F97021 */ addu $t6, $a3, $t9 -/* 014684 70013A84 A1D80000 */ sb $t8, ($t6) -/* 014688 70013A88 8E0F000C */ lw $t7, 0xc($s0) -/* 01468C 70013A8C 25F90001 */ addiu $t9, $t7, 1 -/* 014690 70013A90 10000016 */ b .L70013AEC -/* 014694 70013A94 AE19000C */ sw $t9, 0xc($s0) -/* 014698 70013A98 8E020030 */ lw $v0, 0x30($s0) -.L70013A9C: -/* 01469C 70013A9C 30580002 */ andi $t8, $v0, 2 -/* 0146A0 70013AA0 13000009 */ beqz $t8, .L70013AC8 -/* 0146A4 70013AA4 304E0001 */ andi $t6, $v0, 1 -/* 0146A8 70013AA8 8E0F000C */ lw $t7, 0xc($s0) -/* 0146AC 70013AAC 240E002B */ li $t6, 43 -/* 0146B0 70013AB0 00EFC821 */ addu $t9, $a3, $t7 -/* 0146B4 70013AB4 A32E0000 */ sb $t6, ($t9) -/* 0146B8 70013AB8 8E18000C */ lw $t8, 0xc($s0) -/* 0146BC 70013ABC 270F0001 */ addiu $t7, $t8, 1 -/* 0146C0 70013AC0 1000000A */ b .L70013AEC -/* 0146C4 70013AC4 AE0F000C */ sw $t7, 0xc($s0) -.L70013AC8: -/* 0146C8 70013AC8 51C00009 */ beql $t6, $zero, .L70013AF0 -/* 0146CC 70013ACC 8E19000C */ lw $t9, 0xc($s0) -/* 0146D0 70013AD0 8E18000C */ lw $t8, 0xc($s0) -/* 0146D4 70013AD4 24190020 */ li $t9, 32 -/* 0146D8 70013AD8 00F87821 */ addu $t7, $a3, $t8 -/* 0146DC 70013ADC A1F90000 */ sb $t9, ($t7) -/* 0146E0 70013AE0 8E0E000C */ lw $t6, 0xc($s0) -/* 0146E4 70013AE4 25D80001 */ addiu $t8, $t6, 1 -/* 0146E8 70013AE8 AE18000C */ sw $t8, 0xc($s0) -.L70013AEC: -/* 0146EC 70013AEC 8E19000C */ lw $t9, 0xc($s0) -.L70013AF0: -/* 0146F0 70013AF0 02002025 */ move $a0, $s0 -/* 0146F4 70013AF4 03277821 */ addu $t7, $t9, $a3 -/* 0146F8 70013AF8 0C0075F4 */ jal _Litob -/* 0146FC 70013AFC AE0F0008 */ sw $t7, 8($s0) -/* 014700 70013B00 10000114 */ b .L70013F54 -/* 014704 70013B04 8FBF0014 */ lw $ra, 0x14($sp) -.L70013B08: -/* 014708 70013B08 92020034 */ lbu $v0, 0x34($s0) -/* 01470C 70013B0C 2401006C */ li $at, 108 -/* 014710 70013B10 5441000D */ bnel $v0, $at, .L70013B48 -/* 014714 70013B14 2401004C */ li $at, 76 -/* 014718 70013B18 8CCE0000 */ lw $t6, ($a2) -/* 01471C 70013B1C 2401FFFC */ li $at, -4 -/* 014720 70013B20 25D80003 */ addiu $t8, $t6, 3 -/* 014724 70013B24 0301C824 */ and $t9, $t8, $at -/* 014728 70013B28 272F0004 */ addiu $t7, $t9, 4 -/* 01472C 70013B2C ACCF0000 */ sw $t7, ($a2) -/* 014730 70013B30 8DF8FFFC */ lw $t8, -4($t7) -/* 014734 70013B34 001877C3 */ sra $t6, $t8, 0x1f -/* 014738 70013B38 AE0E0000 */ sw $t6, ($s0) -/* 01473C 70013B3C 10000019 */ b .L70013BA4 -/* 014740 70013B40 AE180004 */ sw $t8, 4($s0) -/* 014744 70013B44 2401004C */ li $at, 76 -.L70013B48: -/* 014748 70013B48 5441000D */ bnel $v0, $at, .L70013B80 -/* 01474C 70013B4C 8CCE0000 */ lw $t6, ($a2) -/* 014750 70013B50 8CD90000 */ lw $t9, ($a2) -/* 014754 70013B54 2401FFF8 */ li $at, -8 -/* 014758 70013B58 27380007 */ addiu $t8, $t9, 7 -/* 01475C 70013B5C 03017024 */ and $t6, $t8, $at -/* 014760 70013B60 25CF0008 */ addiu $t7, $t6, 8 -/* 014764 70013B64 ACCF0000 */ sw $t7, ($a2) -/* 014768 70013B68 8DF9FFFC */ lw $t9, -4($t7) -/* 01476C 70013B6C 8DF8FFF8 */ lw $t8, -8($t7) -/* 014770 70013B70 AE190004 */ sw $t9, 4($s0) -/* 014774 70013B74 1000000B */ b .L70013BA4 -/* 014778 70013B78 AE180000 */ sw $t8, ($s0) -/* 01477C 70013B7C 8CCE0000 */ lw $t6, ($a2) -.L70013B80: -/* 014780 70013B80 2401FFFC */ li $at, -4 -/* 014784 70013B84 25CF0003 */ addiu $t7, $t6, 3 -/* 014788 70013B88 01E1C024 */ and $t8, $t7, $at -/* 01478C 70013B8C 27190004 */ addiu $t9, $t8, 4 -/* 014790 70013B90 ACD90000 */ sw $t9, ($a2) -/* 014794 70013B94 8F2FFFFC */ lw $t7, -4($t9) -/* 014798 70013B98 000FC7C3 */ sra $t8, $t7, 0x1f -/* 01479C 70013B9C AE180000 */ sw $t8, ($s0) -/* 0147A0 70013BA0 AE0F0004 */ sw $t7, 4($s0) -.L70013BA4: -/* 0147A4 70013BA4 92020034 */ lbu $v0, 0x34($s0) -/* 0147A8 70013BA8 24010068 */ li $at, 104 -/* 0147AC 70013BAC 14410007 */ bne $v0, $at, .L70013BCC -/* 0147B0 70013BB0 00000000 */ nop -/* 0147B4 70013BB4 8E0F0004 */ lw $t7, 4($s0) -/* 0147B8 70013BB8 240E0000 */ li $t6, 0 -/* 0147BC 70013BBC AE0E0000 */ sw $t6, ($s0) -/* 0147C0 70013BC0 31F9FFFF */ andi $t9, $t7, 0xffff -/* 0147C4 70013BC4 10000007 */ b .L70013BE4 -/* 0147C8 70013BC8 AE190004 */ sw $t9, 4($s0) -.L70013BCC: -/* 0147CC 70013BCC 54400006 */ bnezl $v0, .L70013BE8 -/* 0147D0 70013BD0 8E0F0030 */ lw $t7, 0x30($s0) -/* 0147D4 70013BD4 8E190004 */ lw $t9, 4($s0) -/* 0147D8 70013BD8 24180000 */ li $t8, 0 -/* 0147DC 70013BDC AE180000 */ sw $t8, ($s0) -/* 0147E0 70013BE0 AE190004 */ sw $t9, 4($s0) -.L70013BE4: -/* 0147E4 70013BE4 8E0F0030 */ lw $t7, 0x30($s0) -.L70013BE8: -/* 0147E8 70013BE8 31EE0008 */ andi $t6, $t7, 8 -/* 0147EC 70013BEC 51C00014 */ beql $t6, $zero, .L70013C40 -/* 0147F0 70013BF0 8E18000C */ lw $t8, 0xc($s0) -/* 0147F4 70013BF4 8E19000C */ lw $t9, 0xc($s0) -/* 0147F8 70013BF8 24180030 */ li $t8, 48 -/* 0147FC 70013BFC 24010078 */ li $at, 120 -/* 014800 70013C00 00F97821 */ addu $t7, $a3, $t9 -/* 014804 70013C04 A1F80000 */ sb $t8, ($t7) -/* 014808 70013C08 8E0E000C */ lw $t6, 0xc($s0) -/* 01480C 70013C0C 25D90001 */ addiu $t9, $t6, 1 -/* 014810 70013C10 10610004 */ beq $v1, $at, .L70013C24 -/* 014814 70013C14 AE19000C */ sw $t9, 0xc($s0) -/* 014818 70013C18 24010058 */ li $at, 88 -/* 01481C 70013C1C 54610008 */ bnel $v1, $at, .L70013C40 -/* 014820 70013C20 8E18000C */ lw $t8, 0xc($s0) -.L70013C24: -/* 014824 70013C24 8E18000C */ lw $t8, 0xc($s0) -/* 014828 70013C28 00F87821 */ addu $t7, $a3, $t8 -/* 01482C 70013C2C A1E50000 */ sb $a1, ($t7) -/* 014830 70013C30 8E0E000C */ lw $t6, 0xc($s0) -/* 014834 70013C34 25D90001 */ addiu $t9, $t6, 1 -/* 014838 70013C38 AE19000C */ sw $t9, 0xc($s0) -/* 01483C 70013C3C 8E18000C */ lw $t8, 0xc($s0) -.L70013C40: -/* 014840 70013C40 02002025 */ move $a0, $s0 -/* 014844 70013C44 03077821 */ addu $t7, $t8, $a3 -/* 014848 70013C48 0C0075F4 */ jal _Litob -/* 01484C 70013C4C AE0F0008 */ sw $t7, 8($s0) -/* 014850 70013C50 100000C0 */ b .L70013F54 -/* 014854 70013C54 8FBF0014 */ lw $ra, 0x14($sp) -.L70013C58: -/* 014858 70013C58 920E0034 */ lbu $t6, 0x34($s0) -/* 01485C 70013C5C 2401004C */ li $at, 76 -/* 014860 70013C60 55C10019 */ bnel $t6, $at, .L70013CC8 -/* 014864 70013C64 8CC20000 */ lw $v0, ($a2) -/* 014868 70013C68 8CC20000 */ lw $v0, ($a2) -/* 01486C 70013C6C 30590001 */ andi $t9, $v0, 1 -/* 014870 70013C70 13200005 */ beqz $t9, .L70013C88 -/* 014874 70013C74 00401825 */ move $v1, $v0 -/* 014878 70013C78 24780007 */ addiu $t8, $v1, 7 -/* 01487C 70013C7C ACD80000 */ sw $t8, ($a2) -/* 014880 70013C80 1000000D */ b .L70013CB8 -/* 014884 70013C84 2702FFEA */ addiu $v0, $t8, -0x16 -.L70013C88: -/* 014888 70013C88 306F0002 */ andi $t7, $v1, 2 -/* 01488C 70013C8C 11E00005 */ beqz $t7, .L70013CA4 -/* 014890 70013C90 24590007 */ addiu $t9, $v0, 7 -/* 014894 70013C94 246E000A */ addiu $t6, $v1, 0xa -/* 014898 70013C98 ACCE0000 */ sw $t6, ($a2) -/* 01489C 70013C9C 10000005 */ b .L70013CB4 -/* 0148A0 70013CA0 25C4FFD8 */ addiu $a0, $t6, -0x28 -.L70013CA4: -/* 0148A4 70013CA4 2401FFF8 */ li $at, -8 -/* 0148A8 70013CA8 0321C024 */ and $t8, $t9, $at -/* 0148AC 70013CAC 27040008 */ addiu $a0, $t8, 8 -/* 0148B0 70013CB0 ACC40000 */ sw $a0, ($a2) -.L70013CB4: -/* 0148B4 70013CB4 00801025 */ move $v0, $a0 -.L70013CB8: -/* 0148B8 70013CB8 D444FFF8 */ ldc1 $f4, -8($v0) -/* 0148BC 70013CBC 10000017 */ b .L70013D1C -/* 0148C0 70013CC0 F6040000 */ sdc1 $f4, ($s0) -/* 0148C4 70013CC4 8CC20000 */ lw $v0, ($a2) -.L70013CC8: -/* 0148C8 70013CC8 304E0001 */ andi $t6, $v0, 1 -/* 0148CC 70013CCC 11C00005 */ beqz $t6, .L70013CE4 -/* 0148D0 70013CD0 00401825 */ move $v1, $v0 -/* 0148D4 70013CD4 24790007 */ addiu $t9, $v1, 7 -/* 0148D8 70013CD8 ACD90000 */ sw $t9, ($a2) -/* 0148DC 70013CDC 1000000D */ b .L70013D14 -/* 0148E0 70013CE0 2722FFEA */ addiu $v0, $t9, -0x16 -.L70013CE4: -/* 0148E4 70013CE4 30780002 */ andi $t8, $v1, 2 -/* 0148E8 70013CE8 13000005 */ beqz $t8, .L70013D00 -/* 0148EC 70013CEC 244E0007 */ addiu $t6, $v0, 7 -/* 0148F0 70013CF0 246F000A */ addiu $t7, $v1, 0xa -/* 0148F4 70013CF4 ACCF0000 */ sw $t7, ($a2) -/* 0148F8 70013CF8 10000005 */ b .L70013D10 -/* 0148FC 70013CFC 25E4FFD8 */ addiu $a0, $t7, -0x28 -.L70013D00: -/* 014900 70013D00 2401FFF8 */ li $at, -8 -/* 014904 70013D04 01C1C824 */ and $t9, $t6, $at -/* 014908 70013D08 27240008 */ addiu $a0, $t9, 8 -/* 01490C 70013D0C ACC40000 */ sw $a0, ($a2) -.L70013D10: -/* 014910 70013D10 00801025 */ move $v0, $a0 -.L70013D14: -/* 014914 70013D14 D446FFF8 */ ldc1 $f6, -8($v0) -/* 014918 70013D18 F6060000 */ sdc1 $f6, ($s0) -.L70013D1C: -/* 01491C 70013D1C 960F0000 */ lhu $t7, ($s0) -/* 014920 70013D20 31EE8000 */ andi $t6, $t7, 0x8000 -/* 014924 70013D24 51C0000A */ beql $t6, $zero, .L70013D50 -/* 014928 70013D28 8E020030 */ lw $v0, 0x30($s0) -/* 01492C 70013D2C 8E18000C */ lw $t8, 0xc($s0) -/* 014930 70013D30 2419002D */ li $t9, 45 -/* 014934 70013D34 00F87821 */ addu $t7, $a3, $t8 -/* 014938 70013D38 A1F90000 */ sb $t9, ($t7) -/* 01493C 70013D3C 8E0E000C */ lw $t6, 0xc($s0) -/* 014940 70013D40 25D80001 */ addiu $t8, $t6, 1 -/* 014944 70013D44 10000016 */ b .L70013DA0 -/* 014948 70013D48 AE18000C */ sw $t8, 0xc($s0) -/* 01494C 70013D4C 8E020030 */ lw $v0, 0x30($s0) -.L70013D50: -/* 014950 70013D50 30590002 */ andi $t9, $v0, 2 -/* 014954 70013D54 13200009 */ beqz $t9, .L70013D7C -/* 014958 70013D58 304F0001 */ andi $t7, $v0, 1 -/* 01495C 70013D5C 8E0E000C */ lw $t6, 0xc($s0) -/* 014960 70013D60 240F002B */ li $t7, 43 -/* 014964 70013D64 00EEC021 */ addu $t8, $a3, $t6 -/* 014968 70013D68 A30F0000 */ sb $t7, ($t8) -/* 01496C 70013D6C 8E19000C */ lw $t9, 0xc($s0) -/* 014970 70013D70 272E0001 */ addiu $t6, $t9, 1 -/* 014974 70013D74 1000000A */ b .L70013DA0 -/* 014978 70013D78 AE0E000C */ sw $t6, 0xc($s0) -.L70013D7C: -/* 01497C 70013D7C 51E00009 */ beql $t7, $zero, .L70013DA4 -/* 014980 70013D80 8E18000C */ lw $t8, 0xc($s0) -/* 014984 70013D84 8E19000C */ lw $t9, 0xc($s0) -/* 014988 70013D88 24180020 */ li $t8, 32 -/* 01498C 70013D8C 00F97021 */ addu $t6, $a3, $t9 -/* 014990 70013D90 A1D80000 */ sb $t8, ($t6) -/* 014994 70013D94 8E0F000C */ lw $t7, 0xc($s0) -/* 014998 70013D98 25F90001 */ addiu $t9, $t7, 1 -/* 01499C 70013D9C AE19000C */ sw $t9, 0xc($s0) -.L70013DA0: -/* 0149A0 70013DA0 8E18000C */ lw $t8, 0xc($s0) -.L70013DA4: -/* 0149A4 70013DA4 02002025 */ move $a0, $s0 -/* 0149A8 70013DA8 03077021 */ addu $t6, $t8, $a3 -/* 0149AC 70013DAC 0C0077F8 */ jal _Ldtob -/* 0149B0 70013DB0 AE0E0008 */ sw $t6, 8($s0) -/* 0149B4 70013DB4 10000067 */ b .L70013F54 -/* 0149B8 70013DB8 8FBF0014 */ lw $ra, 0x14($sp) -.L70013DBC: -/* 0149BC 70013DBC 92020034 */ lbu $v0, 0x34($s0) -/* 0149C0 70013DC0 24010068 */ li $at, 104 -/* 0149C4 70013DC4 5441000C */ bnel $v0, $at, .L70013DF8 -/* 0149C8 70013DC8 2401006C */ li $at, 108 -/* 0149CC 70013DCC 8CCF0000 */ lw $t7, ($a2) -/* 0149D0 70013DD0 2401FFFC */ li $at, -4 -/* 0149D4 70013DD4 25F90003 */ addiu $t9, $t7, 3 -/* 0149D8 70013DD8 0321C024 */ and $t8, $t9, $at -/* 0149DC 70013DDC 270E0004 */ addiu $t6, $t8, 4 -/* 0149E0 70013DE0 ACCE0000 */ sw $t6, ($a2) -/* 0149E4 70013DE4 8DD9FFFC */ lw $t9, -4($t6) -/* 0149E8 70013DE8 8E0F002C */ lw $t7, 0x2c($s0) -/* 0149EC 70013DEC 10000058 */ b .L70013F50 -/* 0149F0 70013DF0 A72F0000 */ sh $t7, ($t9) -/* 0149F4 70013DF4 2401006C */ li $at, 108 -.L70013DF8: -/* 0149F8 70013DF8 5441000C */ bnel $v0, $at, .L70013E2C -/* 0149FC 70013DFC 2401004C */ li $at, 76 -/* 014A00 70013E00 8CD80000 */ lw $t8, ($a2) -/* 014A04 70013E04 2401FFFC */ li $at, -4 -/* 014A08 70013E08 270E0003 */ addiu $t6, $t8, 3 -/* 014A0C 70013E0C 01C17824 */ and $t7, $t6, $at -/* 014A10 70013E10 25F90004 */ addiu $t9, $t7, 4 -/* 014A14 70013E14 ACD90000 */ sw $t9, ($a2) -/* 014A18 70013E18 8F2EFFFC */ lw $t6, -4($t9) -/* 014A1C 70013E1C 8E18002C */ lw $t8, 0x2c($s0) -/* 014A20 70013E20 1000004B */ b .L70013F50 -/* 014A24 70013E24 ADD80000 */ sw $t8, ($t6) -/* 014A28 70013E28 2401004C */ li $at, 76 -.L70013E2C: -/* 014A2C 70013E2C 5441000E */ bnel $v0, $at, .L70013E68 -/* 014A30 70013E30 8CCF0000 */ lw $t7, ($a2) -/* 014A34 70013E34 8CCF0000 */ lw $t7, ($a2) -/* 014A38 70013E38 2401FFFC */ li $at, -4 -/* 014A3C 70013E3C 25F90003 */ addiu $t9, $t7, 3 -/* 014A40 70013E40 0321C024 */ and $t8, $t9, $at -/* 014A44 70013E44 270E0004 */ addiu $t6, $t8, 4 -/* 014A48 70013E48 ACCE0000 */ sw $t6, ($a2) -/* 014A4C 70013E4C 8DCEFFFC */ lw $t6, -4($t6) -/* 014A50 70013E50 8E0F002C */ lw $t7, 0x2c($s0) -/* 014A54 70013E54 24180000 */ li $t8, 0 -/* 014A58 70013E58 ADD80000 */ sw $t8, ($t6) -/* 014A5C 70013E5C 1000003C */ b .L70013F50 -/* 014A60 70013E60 ADCF0004 */ sw $t7, 4($t6) -/* 014A64 70013E64 8CCF0000 */ lw $t7, ($a2) -.L70013E68: -/* 014A68 70013E68 2401FFFC */ li $at, -4 -/* 014A6C 70013E6C 25F80003 */ addiu $t8, $t7, 3 -/* 014A70 70013E70 0301C824 */ and $t9, $t8, $at -/* 014A74 70013E74 272E0004 */ addiu $t6, $t9, 4 -/* 014A78 70013E78 ACCE0000 */ sw $t6, ($a2) -/* 014A7C 70013E7C 8DD8FFFC */ lw $t8, -4($t6) -/* 014A80 70013E80 8E0F002C */ lw $t7, 0x2c($s0) -/* 014A84 70013E84 10000032 */ b .L70013F50 -/* 014A88 70013E88 AF0F0000 */ sw $t7, ($t8) -.L70013E8C: -/* 014A8C 70013E8C 8CD90000 */ lw $t9, ($a2) -/* 014A90 70013E90 2401FFFC */ li $at, -4 -/* 014A94 70013E94 02002025 */ move $a0, $s0 -/* 014A98 70013E98 272E0003 */ addiu $t6, $t9, 3 -/* 014A9C 70013E9C 01C17824 */ and $t7, $t6, $at -/* 014AA0 70013EA0 25F80004 */ addiu $t8, $t7, 4 -/* 014AA4 70013EA4 ACD80000 */ sw $t8, ($a2) -/* 014AA8 70013EA8 8F0EFFFC */ lw $t6, -4($t8) -/* 014AAC 70013EAC 8E0F000C */ lw $t7, 0xc($s0) -/* 014AB0 70013EB0 24050078 */ li $a1, 120 -/* 014AB4 70013EB4 000EC7C3 */ sra $t8, $t6, 0x1f -/* 014AB8 70013EB8 AE0E0004 */ sw $t6, 4($s0) -/* 014ABC 70013EBC 01E77021 */ addu $t6, $t7, $a3 -/* 014AC0 70013EC0 AE180000 */ sw $t8, ($s0) -/* 014AC4 70013EC4 0C0075F4 */ jal _Litob -/* 014AC8 70013EC8 AE0E0008 */ sw $t6, 8($s0) -/* 014ACC 70013ECC 10000021 */ b .L70013F54 -/* 014AD0 70013ED0 8FBF0014 */ lw $ra, 0x14($sp) -.L70013ED4: -/* 014AD4 70013ED4 8CD80000 */ lw $t8, ($a2) -/* 014AD8 70013ED8 2401FFFC */ li $at, -4 -/* 014ADC 70013EDC 27190003 */ addiu $t9, $t8, 3 -/* 014AE0 70013EE0 03217824 */ and $t7, $t9, $at -/* 014AE4 70013EE4 25EE0004 */ addiu $t6, $t7, 4 -/* 014AE8 70013EE8 ACCE0000 */ sw $t6, ($a2) -/* 014AEC 70013EEC 8DC4FFFC */ lw $a0, -4($t6) -/* 014AF0 70013EF0 0C004E1F */ jal strlen -/* 014AF4 70013EF4 AE040008 */ sw $a0, 8($s0) -/* 014AF8 70013EF8 8E030024 */ lw $v1, 0x24($s0) -/* 014AFC 70013EFC AE020014 */ sw $v0, 0x14($s0) -/* 014B00 70013F00 04600013 */ bltz $v1, .L70013F50 -/* 014B04 70013F04 0062082A */ slt $at, $v1, $v0 -/* 014B08 70013F08 50200012 */ beql $at, $zero, .L70013F54 -/* 014B0C 70013F0C 8FBF0014 */ lw $ra, 0x14($sp) -/* 014B10 70013F10 1000000F */ b .L70013F50 -/* 014B14 70013F14 AE030014 */ sw $v1, 0x14($s0) -/* 014B18 70013F18 8E18000C */ lw $t8, 0xc($s0) -.L70013F1C: -/* 014B1C 70013F1C 240E0025 */ li $t6, 37 -/* 014B20 70013F20 00F8C821 */ addu $t9, $a3, $t8 -/* 014B24 70013F24 A32E0000 */ sb $t6, ($t9) -/* 014B28 70013F28 8E0F000C */ lw $t7, 0xc($s0) -/* 014B2C 70013F2C 25F80001 */ addiu $t8, $t7, 1 -/* 014B30 70013F30 10000007 */ b .L70013F50 -/* 014B34 70013F34 AE18000C */ sw $t8, 0xc($s0) -.L70013F38: -/* 014B38 70013F38 8E0E000C */ lw $t6, 0xc($s0) -.L70013F3C: -/* 014B3C 70013F3C 00EEC821 */ addu $t9, $a3, $t6 -/* 014B40 70013F40 A3250000 */ sb $a1, ($t9) -/* 014B44 70013F44 8E0F000C */ lw $t7, 0xc($s0) -/* 014B48 70013F48 25F80001 */ addiu $t8, $t7, 1 -/* 014B4C 70013F4C AE18000C */ sw $t8, 0xc($s0) -.L70013F50: -/* 014B50 70013F50 8FBF0014 */ lw $ra, 0x14($sp) -.L70013F54: -/* 014B54 70013F54 27BD0018 */ addiu $sp, $sp, 0x18 -/* 014B58 70013F58 03E00008 */ jr $ra -/* 014B5C 70013F5C 00000000 */ nop - -glabel _Printf -/* 014B60 70013F60 27BDFF20 */ addiu $sp, $sp, -0xe0 -/* 014B64 70013F64 AFB70034 */ sw $s7, 0x34($sp) -/* 014B68 70013F68 AFB60030 */ sw $s6, 0x30($sp) -/* 014B6C 70013F6C AFB5002C */ sw $s5, 0x2c($sp) -/* 014B70 70013F70 AFBE0038 */ sw $fp, 0x38($sp) -/* 014B74 70013F74 AFB40028 */ sw $s4, 0x28($sp) -/* 014B78 70013F78 AFB30024 */ sw $s3, 0x24($sp) -/* 014B7C 70013F7C AFA700EC */ sw $a3, 0xec($sp) -/* 014B80 70013F80 3C158002 */ lui $s5, %hi(zeros) -/* 014B84 70013F84 3C168003 */ lui $s6, %hi(printf_symbols) -/* 014B88 70013F88 3C178002 */ lui $s7, %hi(spaces) -/* 014B8C 70013F8C 00C03825 */ move $a3, $a2 -/* 014B90 70013F90 00A09825 */ move $s3, $a1 -/* 014B94 70013F94 0080A025 */ move $s4, $a0 -/* 014B98 70013F98 AFBF003C */ sw $ra, 0x3c($sp) -/* 014B9C 70013F9C AFB20020 */ sw $s2, 0x20($sp) -/* 014BA0 70013FA0 AFB1001C */ sw $s1, 0x1c($sp) -/* 014BA4 70013FA4 AFB00018 */ sw $s0, 0x18($sp) -/* 014BA8 70013FA8 AFA600E8 */ sw $a2, 0xe8($sp) -/* 014BAC 70013FAC AFA000D4 */ sw $zero, 0xd4($sp) -/* 014BB0 70013FB0 26F77740 */ addiu $s7, %lo(spaces) # addiu $s7, $s7, 0x7740 -/* 014BB4 70013FB4 26D696F4 */ addiu $s6, %lo(printf_symbols) # addiu $s6, $s6, -0x690c -/* 014BB8 70013FB8 26B57764 */ addiu $s5, %lo(zeros) # addiu $s5, $s5, 0x7764 -/* 014BBC 70013FBC 241E000A */ li $fp, 10 -.L70013FC0: -/* 014BC0 70013FC0 90F00000 */ lbu $s0, ($a3) -/* 014BC4 70013FC4 24F20001 */ addiu $s2, $a3, 1 -/* 014BC8 70013FC8 24030025 */ li $v1, 37 -/* 014BCC 70013FCC 1A000009 */ blez $s0, .L70013FF4 -/* 014BD0 70013FD0 02602025 */ move $a0, $s3 -.L70013FD4: -/* 014BD4 70013FD4 54700004 */ bnel $v1, $s0, .L70013FE8 -/* 014BD8 70013FD8 92500000 */ lbu $s0, ($s2) -/* 014BDC 70013FDC 10000005 */ b .L70013FF4 -/* 014BE0 70013FE0 2652FFFF */ addiu $s2, $s2, -1 -/* 014BE4 70013FE4 92500000 */ lbu $s0, ($s2) -.L70013FE8: -/* 014BE8 70013FE8 26520001 */ addiu $s2, $s2, 1 -/* 014BEC 70013FEC 1E00FFF9 */ bgtz $s0, .L70013FD4 -/* 014BF0 70013FF0 00000000 */ nop -.L70013FF4: -/* 014BF4 70013FF4 02471023 */ subu $v0, $s2, $a3 -/* 014BF8 70013FF8 1840000C */ blez $v0, .L7001402C -/* 014BFC 70013FFC 00E02825 */ move $a1, $a3 -/* 014C00 70014000 00408825 */ move $s1, $v0 -/* 014C04 70014004 0280F809 */ jalr $s4 -/* 014C08 70014008 00403025 */ move $a2, $v0 -/* 014C0C 7001400C 10400005 */ beqz $v0, .L70014024 -/* 014C10 70014010 00409825 */ move $s3, $v0 -/* 014C14 70014014 8FAE00D4 */ lw $t6, 0xd4($sp) -/* 014C18 70014018 01D17821 */ addu $t7, $t6, $s1 -/* 014C1C 7001401C 10000003 */ b .L7001402C -/* 014C20 70014020 AFAF00D4 */ sw $t7, 0xd4($sp) -.L70014024: -/* 014C24 70014024 10000153 */ b .L70014574 -/* 014C28 70014028 8FA200D4 */ lw $v0, 0xd4($sp) -.L7001402C: -/* 014C2C 7001402C 16000003 */ bnez $s0, .L7001403C -/* 014C30 70014030 26520001 */ addiu $s2, $s2, 1 -/* 014C34 70014034 1000014F */ b .L70014574 -/* 014C38 70014038 8FA200D4 */ lw $v0, 0xd4($sp) -.L7001403C: -/* 014C3C 7001403C AFA000D8 */ sw $zero, 0xd8($sp) -/* 014C40 70014040 92450000 */ lbu $a1, ($s2) -/* 014C44 70014044 0C004E29 */ jal strchr -/* 014C48 70014048 02C02025 */ move $a0, $s6 -/* 014C4C 7001404C 1040000F */ beqz $v0, .L7001408C -/* 014C50 70014050 00408025 */ move $s0, $v0 -.L70014054: -/* 014C54 70014054 0216C823 */ subu $t9, $s0, $s6 -/* 014C58 70014058 00197080 */ sll $t6, $t9, 2 -/* 014C5C 7001405C 3C0F8003 */ lui $t7, %hi(byteshiftleft_lookup) -/* 014C60 70014060 01EE7821 */ addu $t7, $t7, $t6 -/* 014C64 70014064 8DEF96FC */ lw $t7, %lo(byteshiftleft_lookup)($t7) -/* 014C68 70014068 8FB800D8 */ lw $t8, 0xd8($sp) -/* 014C6C 7001406C 26520001 */ addiu $s2, $s2, 1 -/* 014C70 70014070 02C02025 */ move $a0, $s6 -/* 014C74 70014074 030FC825 */ or $t9, $t8, $t7 -/* 014C78 70014078 AFB900D8 */ sw $t9, 0xd8($sp) -/* 014C7C 7001407C 0C004E29 */ jal strchr -/* 014C80 70014080 92450000 */ lbu $a1, ($s2) -/* 014C84 70014084 1440FFF3 */ bnez $v0, .L70014054 -/* 014C88 70014088 00408025 */ move $s0, $v0 -.L7001408C: -/* 014C8C 7001408C 924E0000 */ lbu $t6, ($s2) -/* 014C90 70014090 2402002A */ li $v0, 42 -/* 014C94 70014094 8FB800EC */ lw $t8, 0xec($sp) -/* 014C98 70014098 144E0011 */ bne $v0, $t6, .L700140E0 -/* 014C9C 7001409C 3C048003 */ lui $a0, %hi(aHll) -/* 014CA0 700140A0 270F0003 */ addiu $t7, $t8, 3 -/* 014CA4 700140A4 2401FFFC */ li $at, -4 -/* 014CA8 700140A8 01E1C824 */ and $t9, $t7, $at -/* 014CAC 700140AC 272E0004 */ addiu $t6, $t9, 4 -/* 014CB0 700140B0 AFAE00EC */ sw $t6, 0xec($sp) -/* 014CB4 700140B4 8F380000 */ lw $t8, ($t9) -/* 014CB8 700140B8 26520001 */ addiu $s2, $s2, 1 -/* 014CBC 700140BC 07010006 */ bgez $t8, .L700140D8 -/* 014CC0 700140C0 AFB800D0 */ sw $t8, 0xd0($sp) -/* 014CC4 700140C4 8FAE00D8 */ lw $t6, 0xd8($sp) -/* 014CC8 700140C8 00187823 */ negu $t7, $t8 -/* 014CCC 700140CC AFAF00D0 */ sw $t7, 0xd0($sp) -/* 014CD0 700140D0 35D90004 */ ori $t9, $t6, 4 -/* 014CD4 700140D4 AFB900D8 */ sw $t9, 0xd8($sp) -.L700140D8: -/* 014CD8 700140D8 10000018 */ b .L7001413C -/* 014CDC 700140DC 92450000 */ lbu $a1, ($s2) -.L700140E0: -/* 014CE0 700140E0 AFA000D0 */ sw $zero, 0xd0($sp) -/* 014CE4 700140E4 92450000 */ lbu $a1, ($s2) -/* 014CE8 700140E8 28A10030 */ slti $at, $a1, 0x30 -/* 014CEC 700140EC 14200013 */ bnez $at, .L7001413C -/* 014CF0 700140F0 28A1003A */ slti $at, $a1, 0x3a -/* 014CF4 700140F4 50200012 */ beql $at, $zero, .L70014140 -/* 014CF8 700140F8 2401002E */ li $at, 46 -/* 014CFC 700140FC 8FB800D0 */ lw $t8, 0xd0($sp) -.L70014100: -/* 014D00 70014100 2B0103E7 */ slti $at, $t8, 0x3e7 -/* 014D04 70014104 50200007 */ beql $at, $zero, .L70014124 -/* 014D08 70014108 92450001 */ lbu $a1, 1($s2) -/* 014D0C 7001410C 031E0019 */ multu $t8, $fp -/* 014D10 70014110 00007812 */ mflo $t7 -/* 014D14 70014114 00AF7021 */ addu $t6, $a1, $t7 -/* 014D18 70014118 25D9FFD0 */ addiu $t9, $t6, -0x30 -/* 014D1C 7001411C AFB900D0 */ sw $t9, 0xd0($sp) -/* 014D20 70014120 92450001 */ lbu $a1, 1($s2) -.L70014124: -/* 014D24 70014124 26520001 */ addiu $s2, $s2, 1 -/* 014D28 70014128 28A10030 */ slti $at, $a1, 0x30 -/* 014D2C 7001412C 14200003 */ bnez $at, .L7001413C -/* 014D30 70014130 28A1003A */ slti $at, $a1, 0x3a -/* 014D34 70014134 5420FFF2 */ bnezl $at, .L70014100 -/* 014D38 70014138 8FB800D0 */ lw $t8, 0xd0($sp) -.L7001413C: -/* 014D3C 7001413C 2401002E */ li $at, 46 -.L70014140: -/* 014D40 70014140 10A10004 */ beq $a1, $at, .L70014154 -/* 014D44 70014144 2418FFFF */ li $t8, -1 -/* 014D48 70014148 AFB800CC */ sw $t8, 0xcc($sp) -/* 014D4C 7001414C 10000026 */ b .L700141E8 -/* 014D50 70014150 92450000 */ lbu $a1, ($s2) -.L70014154: -/* 014D54 70014154 924F0001 */ lbu $t7, 1($s2) -/* 014D58 70014158 8FAE00EC */ lw $t6, 0xec($sp) -/* 014D5C 7001415C 26520001 */ addiu $s2, $s2, 1 -/* 014D60 70014160 144F000A */ bne $v0, $t7, .L7001418C -/* 014D64 70014164 25D90003 */ addiu $t9, $t6, 3 -/* 014D68 70014168 2401FFFC */ li $at, -4 -/* 014D6C 7001416C 0321C024 */ and $t8, $t9, $at -/* 014D70 70014170 270F0004 */ addiu $t7, $t8, 4 -/* 014D74 70014174 AFAF00EC */ sw $t7, 0xec($sp) -/* 014D78 70014178 8F0E0000 */ lw $t6, ($t8) -/* 014D7C 7001417C 26520001 */ addiu $s2, $s2, 1 -/* 014D80 70014180 AFAE00CC */ sw $t6, 0xcc($sp) -/* 014D84 70014184 10000018 */ b .L700141E8 -/* 014D88 70014188 92450000 */ lbu $a1, ($s2) -.L7001418C: -/* 014D8C 7001418C AFA000CC */ sw $zero, 0xcc($sp) -/* 014D90 70014190 92450000 */ lbu $a1, ($s2) -/* 014D94 70014194 28A10030 */ slti $at, $a1, 0x30 -/* 014D98 70014198 14200013 */ bnez $at, .L700141E8 -/* 014D9C 7001419C 28A1003A */ slti $at, $a1, 0x3a -/* 014DA0 700141A0 10200011 */ beqz $at, .L700141E8 -/* 014DA4 700141A4 00000000 */ nop -/* 014DA8 700141A8 8FB900CC */ lw $t9, 0xcc($sp) -.L700141AC: -/* 014DAC 700141AC 2B2103E7 */ slti $at, $t9, 0x3e7 -/* 014DB0 700141B0 50200007 */ beql $at, $zero, .L700141D0 -/* 014DB4 700141B4 92450001 */ lbu $a1, 1($s2) -/* 014DB8 700141B8 033E0019 */ multu $t9, $fp -/* 014DBC 700141BC 00007812 */ mflo $t7 -/* 014DC0 700141C0 00AFC021 */ addu $t8, $a1, $t7 -/* 014DC4 700141C4 270EFFD0 */ addiu $t6, $t8, -0x30 -/* 014DC8 700141C8 AFAE00CC */ sw $t6, 0xcc($sp) -/* 014DCC 700141CC 92450001 */ lbu $a1, 1($s2) -.L700141D0: -/* 014DD0 700141D0 26520001 */ addiu $s2, $s2, 1 -/* 014DD4 700141D4 28A10030 */ slti $at, $a1, 0x30 -/* 014DD8 700141D8 14200003 */ bnez $at, .L700141E8 -/* 014DDC 700141DC 28A1003A */ slti $at, $a1, 0x3a -/* 014DE0 700141E0 5420FFF2 */ bnezl $at, .L700141AC -/* 014DE4 700141E4 8FB900CC */ lw $t9, 0xcc($sp) -.L700141E8: -/* 014DE8 700141E8 0C004E29 */ jal strchr -/* 014DEC 700141EC 248496F0 */ addiu $a0, %lo(aHll) # addiu $a0, $a0, -0x6910 -/* 014DF0 700141F0 10400005 */ beqz $v0, .L70014208 -/* 014DF4 700141F4 27B000A8 */ addiu $s0, $sp, 0xa8 -/* 014DF8 700141F8 92590000 */ lbu $t9, ($s2) -/* 014DFC 700141FC 26520001 */ addiu $s2, $s2, 1 -/* 014E00 70014200 10000002 */ b .L7001420C -/* 014E04 70014204 A3B900DC */ sb $t9, 0xdc($sp) -.L70014208: -/* 014E08 70014208 A3A000DC */ sb $zero, 0xdc($sp) -.L7001420C: -/* 014E0C 7001420C 93AF00DC */ lbu $t7, 0xdc($sp) -/* 014E10 70014210 2402006C */ li $v0, 108 -/* 014E14 70014214 27A600EC */ addiu $a2, $sp, 0xec -/* 014E18 70014218 144F0007 */ bne $v0, $t7, .L70014238 -/* 014E1C 7001421C 27A7007C */ addiu $a3, $sp, 0x7c -/* 014E20 70014220 92580000 */ lbu $t8, ($s2) -/* 014E24 70014224 240E004C */ li $t6, 76 -/* 014E28 70014228 14580003 */ bne $v0, $t8, .L70014238 -/* 014E2C 7001422C 00000000 */ nop -/* 014E30 70014230 A3AE00DC */ sb $t6, 0xdc($sp) -/* 014E34 70014234 26520001 */ addiu $s2, $s2, 1 -.L70014238: -/* 014E38 70014238 0C004E3C */ jal _Putfld -/* 014E3C 7001423C 92450000 */ lbu $a1, ($s2) -/* 014E40 70014240 8FB900D0 */ lw $t9, 0xd0($sp) -/* 014E44 70014244 8FAF00B4 */ lw $t7, 0xb4($sp) -/* 014E48 70014248 8FAE00B8 */ lw $t6, 0xb8($sp) -/* 014E4C 7001424C 032FC023 */ subu $t8, $t9, $t7 -/* 014E50 70014250 8FAF00BC */ lw $t7, 0xbc($sp) -/* 014E54 70014254 030EC823 */ subu $t9, $t8, $t6 -/* 014E58 70014258 8FAE00C0 */ lw $t6, 0xc0($sp) -/* 014E5C 7001425C 032FC023 */ subu $t8, $t9, $t7 -/* 014E60 70014260 8FAF00C4 */ lw $t7, 0xc4($sp) -/* 014E64 70014264 030EC823 */ subu $t9, $t8, $t6 -/* 014E68 70014268 8FAE00C8 */ lw $t6, 0xc8($sp) -/* 014E6C 7001426C 032FC023 */ subu $t8, $t9, $t7 -/* 014E70 70014270 8FAF00D8 */ lw $t7, 0xd8($sp) -/* 014E74 70014274 030EC823 */ subu $t9, $t8, $t6 -/* 014E78 70014278 AFB900D0 */ sw $t9, 0xd0($sp) -/* 014E7C 7001427C 31F80004 */ andi $t8, $t7, 4 -/* 014E80 70014280 1700001A */ bnez $t8, .L700142EC -/* 014E84 70014284 0019702A */ slt $t6, $zero, $t9 -/* 014E88 70014288 51C00019 */ beql $t6, $zero, .L700142F0 -/* 014E8C 7001428C 8FB900B4 */ lw $t9, 0xb4($sp) -/* 014E90 70014290 11C00016 */ beqz $t6, .L700142EC -/* 014E94 70014294 03208825 */ move $s1, $t9 -/* 014E98 70014298 2E210021 */ sltiu $at, $s1, 0x21 -.L7001429C: -/* 014E9C 7001429C 14200003 */ bnez $at, .L700142AC -/* 014EA0 700142A0 02208025 */ move $s0, $s1 -/* 014EA4 700142A4 10000001 */ b .L700142AC -/* 014EA8 700142A8 24100020 */ li $s0, 32 -.L700142AC: -/* 014EAC 700142AC 1A00000C */ blez $s0, .L700142E0 -/* 014EB0 700142B0 02602025 */ move $a0, $s3 -/* 014EB4 700142B4 02E02825 */ move $a1, $s7 -/* 014EB8 700142B8 0280F809 */ jalr $s4 -/* 014EBC 700142BC 02003025 */ move $a2, $s0 -/* 014EC0 700142C0 10400005 */ beqz $v0, .L700142D8 -/* 014EC4 700142C4 00409825 */ move $s3, $v0 -/* 014EC8 700142C8 8FAF00D4 */ lw $t7, 0xd4($sp) -/* 014ECC 700142CC 01F0C021 */ addu $t8, $t7, $s0 -/* 014ED0 700142D0 10000003 */ b .L700142E0 -/* 014ED4 700142D4 AFB800D4 */ sw $t8, 0xd4($sp) -.L700142D8: -/* 014ED8 700142D8 100000A6 */ b .L70014574 -/* 014EDC 700142DC 8FA200D4 */ lw $v0, 0xd4($sp) -.L700142E0: -/* 014EE0 700142E0 02308823 */ subu $s1, $s1, $s0 -/* 014EE4 700142E4 5E20FFED */ bgtzl $s1, .L7001429C -/* 014EE8 700142E8 2E210021 */ sltiu $at, $s1, 0x21 -.L700142EC: -/* 014EEC 700142EC 8FB900B4 */ lw $t9, 0xb4($sp) -.L700142F0: -/* 014EF0 700142F0 02602025 */ move $a0, $s3 -/* 014EF4 700142F4 27A5007C */ addiu $a1, $sp, 0x7c -/* 014EF8 700142F8 5B20000D */ blezl $t9, .L70014330 -/* 014EFC 700142FC 8FB900B8 */ lw $t9, 0xb8($sp) -/* 014F00 70014300 0280F809 */ jalr $s4 -/* 014F04 70014304 03203025 */ move $a2, $t9 -/* 014F08 70014308 10400006 */ beqz $v0, .L70014324 -/* 014F0C 7001430C 00409825 */ move $s3, $v0 -/* 014F10 70014310 8FAE00D4 */ lw $t6, 0xd4($sp) -/* 014F14 70014314 8FAF00B4 */ lw $t7, 0xb4($sp) -/* 014F18 70014318 01CFC021 */ addu $t8, $t6, $t7 -/* 014F1C 7001431C 10000003 */ b .L7001432C -/* 014F20 70014320 AFB800D4 */ sw $t8, 0xd4($sp) -.L70014324: -/* 014F24 70014324 10000093 */ b .L70014574 -/* 014F28 70014328 8FA200D4 */ lw $v0, 0xd4($sp) -.L7001432C: -/* 014F2C 7001432C 8FB900B8 */ lw $t9, 0xb8($sp) -.L70014330: -/* 014F30 70014330 0019702A */ slt $t6, $zero, $t9 -/* 014F34 70014334 51C00019 */ beql $t6, $zero, .L7001439C -/* 014F38 70014338 8FB900BC */ lw $t9, 0xbc($sp) -/* 014F3C 7001433C 11C00016 */ beqz $t6, .L70014398 -/* 014F40 70014340 03208825 */ move $s1, $t9 -/* 014F44 70014344 2E210021 */ sltiu $at, $s1, 0x21 -.L70014348: -/* 014F48 70014348 14200003 */ bnez $at, .L70014358 -/* 014F4C 7001434C 02208025 */ move $s0, $s1 -/* 014F50 70014350 10000001 */ b .L70014358 -/* 014F54 70014354 24100020 */ li $s0, 32 -.L70014358: -/* 014F58 70014358 1A00000C */ blez $s0, .L7001438C -/* 014F5C 7001435C 02602025 */ move $a0, $s3 -/* 014F60 70014360 02A02825 */ move $a1, $s5 -/* 014F64 70014364 0280F809 */ jalr $s4 -/* 014F68 70014368 02003025 */ move $a2, $s0 -/* 014F6C 7001436C 10400005 */ beqz $v0, .L70014384 -/* 014F70 70014370 00409825 */ move $s3, $v0 -/* 014F74 70014374 8FAF00D4 */ lw $t7, 0xd4($sp) -/* 014F78 70014378 01F0C021 */ addu $t8, $t7, $s0 -/* 014F7C 7001437C 10000003 */ b .L7001438C -/* 014F80 70014380 AFB800D4 */ sw $t8, 0xd4($sp) -.L70014384: -/* 014F84 70014384 1000007B */ b .L70014574 -/* 014F88 70014388 8FA200D4 */ lw $v0, 0xd4($sp) -.L7001438C: -/* 014F8C 7001438C 02308823 */ subu $s1, $s1, $s0 -/* 014F90 70014390 5E20FFED */ bgtzl $s1, .L70014348 -/* 014F94 70014394 2E210021 */ sltiu $at, $s1, 0x21 -.L70014398: -/* 014F98 70014398 8FB900BC */ lw $t9, 0xbc($sp) -.L7001439C: -/* 014F9C 7001439C 02602025 */ move $a0, $s3 -/* 014FA0 700143A0 8FA500B0 */ lw $a1, 0xb0($sp) -/* 014FA4 700143A4 5B20000D */ blezl $t9, .L700143DC -/* 014FA8 700143A8 8FB900C0 */ lw $t9, 0xc0($sp) -/* 014FAC 700143AC 0280F809 */ jalr $s4 -/* 014FB0 700143B0 03203025 */ move $a2, $t9 -/* 014FB4 700143B4 10400006 */ beqz $v0, .L700143D0 -/* 014FB8 700143B8 00409825 */ move $s3, $v0 -/* 014FBC 700143BC 8FAE00D4 */ lw $t6, 0xd4($sp) -/* 014FC0 700143C0 8FAF00BC */ lw $t7, 0xbc($sp) -/* 014FC4 700143C4 01CFC021 */ addu $t8, $t6, $t7 -/* 014FC8 700143C8 10000003 */ b .L700143D8 -/* 014FCC 700143CC AFB800D4 */ sw $t8, 0xd4($sp) -.L700143D0: -/* 014FD0 700143D0 10000068 */ b .L70014574 -/* 014FD4 700143D4 8FA200D4 */ lw $v0, 0xd4($sp) -.L700143D8: -/* 014FD8 700143D8 8FB900C0 */ lw $t9, 0xc0($sp) -.L700143DC: -/* 014FDC 700143DC 0019702A */ slt $t6, $zero, $t9 -/* 014FE0 700143E0 51C00019 */ beql $t6, $zero, .L70014448 -/* 014FE4 700143E4 8FB900C4 */ lw $t9, 0xc4($sp) -/* 014FE8 700143E8 11C00016 */ beqz $t6, .L70014444 -/* 014FEC 700143EC 03208825 */ move $s1, $t9 -/* 014FF0 700143F0 2E210021 */ sltiu $at, $s1, 0x21 -.L700143F4: -/* 014FF4 700143F4 14200003 */ bnez $at, .L70014404 -/* 014FF8 700143F8 02208025 */ move $s0, $s1 -/* 014FFC 700143FC 10000001 */ b .L70014404 -/* 015000 70014400 24100020 */ li $s0, 32 -.L70014404: -/* 015004 70014404 1A00000C */ blez $s0, .L70014438 -/* 015008 70014408 02602025 */ move $a0, $s3 -/* 01500C 7001440C 02A02825 */ move $a1, $s5 -/* 015010 70014410 0280F809 */ jalr $s4 -/* 015014 70014414 02003025 */ move $a2, $s0 -/* 015018 70014418 10400005 */ beqz $v0, .L70014430 -/* 01501C 7001441C 00409825 */ move $s3, $v0 -/* 015020 70014420 8FAF00D4 */ lw $t7, 0xd4($sp) -/* 015024 70014424 01F0C021 */ addu $t8, $t7, $s0 -/* 015028 70014428 10000003 */ b .L70014438 -/* 01502C 7001442C AFB800D4 */ sw $t8, 0xd4($sp) -.L70014430: -/* 015030 70014430 10000050 */ b .L70014574 -/* 015034 70014434 8FA200D4 */ lw $v0, 0xd4($sp) -.L70014438: -/* 015038 70014438 02308823 */ subu $s1, $s1, $s0 -/* 01503C 7001443C 5E20FFED */ bgtzl $s1, .L700143F4 -/* 015040 70014440 2E210021 */ sltiu $at, $s1, 0x21 -.L70014444: -/* 015044 70014444 8FB900C4 */ lw $t9, 0xc4($sp) -.L70014448: -/* 015048 70014448 02602025 */ move $a0, $s3 -/* 01504C 7001444C 8FAE00B0 */ lw $t6, 0xb0($sp) -/* 015050 70014450 1B20000D */ blez $t9, .L70014488 -/* 015054 70014454 8FAF00BC */ lw $t7, 0xbc($sp) -/* 015058 70014458 01CF2821 */ addu $a1, $t6, $t7 -/* 01505C 7001445C 0280F809 */ jalr $s4 -/* 015060 70014460 03203025 */ move $a2, $t9 -/* 015064 70014464 10400006 */ beqz $v0, .L70014480 -/* 015068 70014468 00409825 */ move $s3, $v0 -/* 01506C 7001446C 8FB800D4 */ lw $t8, 0xd4($sp) -/* 015070 70014470 8FAE00C4 */ lw $t6, 0xc4($sp) -/* 015074 70014474 030E7821 */ addu $t7, $t8, $t6 -/* 015078 70014478 10000003 */ b .L70014488 -/* 01507C 7001447C AFAF00D4 */ sw $t7, 0xd4($sp) -.L70014480: -/* 015080 70014480 1000003C */ b .L70014574 -/* 015084 70014484 8FA200D4 */ lw $v0, 0xd4($sp) -.L70014488: -/* 015088 70014488 8FB900C8 */ lw $t9, 0xc8($sp) -/* 01508C 7001448C 0019C02A */ slt $t8, $zero, $t9 -/* 015090 70014490 53000019 */ beql $t8, $zero, .L700144F8 -/* 015094 70014494 8FB900D8 */ lw $t9, 0xd8($sp) -/* 015098 70014498 13000016 */ beqz $t8, .L700144F4 -/* 01509C 7001449C 03208825 */ move $s1, $t9 -/* 0150A0 700144A0 2E210021 */ sltiu $at, $s1, 0x21 -.L700144A4: -/* 0150A4 700144A4 14200003 */ bnez $at, .L700144B4 -/* 0150A8 700144A8 02208025 */ move $s0, $s1 -/* 0150AC 700144AC 10000001 */ b .L700144B4 -/* 0150B0 700144B0 24100020 */ li $s0, 32 -.L700144B4: -/* 0150B4 700144B4 1A00000C */ blez $s0, .L700144E8 -/* 0150B8 700144B8 02602025 */ move $a0, $s3 -/* 0150BC 700144BC 02A02825 */ move $a1, $s5 -/* 0150C0 700144C0 0280F809 */ jalr $s4 -/* 0150C4 700144C4 02003025 */ move $a2, $s0 -/* 0150C8 700144C8 10400005 */ beqz $v0, .L700144E0 -/* 0150CC 700144CC 00409825 */ move $s3, $v0 -/* 0150D0 700144D0 8FAE00D4 */ lw $t6, 0xd4($sp) -/* 0150D4 700144D4 01D07821 */ addu $t7, $t6, $s0 -/* 0150D8 700144D8 10000003 */ b .L700144E8 -/* 0150DC 700144DC AFAF00D4 */ sw $t7, 0xd4($sp) -.L700144E0: -/* 0150E0 700144E0 10000024 */ b .L70014574 -/* 0150E4 700144E4 8FA200D4 */ lw $v0, 0xd4($sp) -.L700144E8: -/* 0150E8 700144E8 02308823 */ subu $s1, $s1, $s0 -/* 0150EC 700144EC 5E20FFED */ bgtzl $s1, .L700144A4 -/* 0150F0 700144F0 2E210021 */ sltiu $at, $s1, 0x21 -.L700144F4: -/* 0150F4 700144F4 8FB900D8 */ lw $t9, 0xd8($sp) -.L700144F8: -/* 0150F8 700144F8 8FAE00D0 */ lw $t6, 0xd0($sp) -/* 0150FC 700144FC 33380004 */ andi $t8, $t9, 4 -/* 015100 70014500 1300001A */ beqz $t8, .L7001456C -/* 015104 70014504 000E782A */ slt $t7, $zero, $t6 -/* 015108 70014508 11E00018 */ beqz $t7, .L7001456C -/* 01510C 7001450C 00000000 */ nop -/* 015110 70014510 11E00016 */ beqz $t7, .L7001456C -/* 015114 70014514 01C08825 */ move $s1, $t6 -/* 015118 70014518 2E210021 */ sltiu $at, $s1, 0x21 -.L7001451C: -/* 01511C 7001451C 14200003 */ bnez $at, .L7001452C -/* 015120 70014520 02208025 */ move $s0, $s1 -/* 015124 70014524 10000001 */ b .L7001452C -/* 015128 70014528 24100020 */ li $s0, 32 -.L7001452C: -/* 01512C 7001452C 1A00000C */ blez $s0, .L70014560 -/* 015130 70014530 02602025 */ move $a0, $s3 -/* 015134 70014534 02E02825 */ move $a1, $s7 -/* 015138 70014538 0280F809 */ jalr $s4 -/* 01513C 7001453C 02003025 */ move $a2, $s0 -/* 015140 70014540 10400005 */ beqz $v0, .L70014558 -/* 015144 70014544 00409825 */ move $s3, $v0 -/* 015148 70014548 8FB900D4 */ lw $t9, 0xd4($sp) -/* 01514C 7001454C 0330C021 */ addu $t8, $t9, $s0 -/* 015150 70014550 10000003 */ b .L70014560 -/* 015154 70014554 AFB800D4 */ sw $t8, 0xd4($sp) -.L70014558: -/* 015158 70014558 10000006 */ b .L70014574 -/* 01515C 7001455C 8FA200D4 */ lw $v0, 0xd4($sp) -.L70014560: -/* 015160 70014560 02308823 */ subu $s1, $s1, $s0 -/* 015164 70014564 5E20FFED */ bgtzl $s1, .L7001451C -/* 015168 70014568 2E210021 */ sltiu $at, $s1, 0x21 -.L7001456C: -/* 01516C 7001456C 1000FE94 */ b .L70013FC0 -/* 015170 70014570 26470001 */ addiu $a3, $s2, 1 -.L70014574: -/* 015174 70014574 8FBF003C */ lw $ra, 0x3c($sp) -/* 015178 70014578 8FB00018 */ lw $s0, 0x18($sp) -/* 01517C 7001457C 8FB1001C */ lw $s1, 0x1c($sp) -/* 015180 70014580 8FB20020 */ lw $s2, 0x20($sp) -/* 015184 70014584 8FB30024 */ lw $s3, 0x24($sp) -/* 015188 70014588 8FB40028 */ lw $s4, 0x28($sp) -/* 01518C 7001458C 8FB5002C */ lw $s5, 0x2c($sp) -/* 015190 70014590 8FB60030 */ lw $s6, 0x30($sp) -/* 015194 70014594 8FB70034 */ lw $s7, 0x34($sp) -/* 015198 70014598 8FBE0038 */ lw $fp, 0x38($sp) -/* 01519C 7001459C 03E00008 */ jr $ra -/* 0151A0 700145A0 27BD00E0 */ addiu $sp, $sp, 0xe0 - -/* 0151A4 700145A4 00000000 */ nop -/* 0151A8 700145A8 00000000 */ nop -/* 0151AC 700145AC 00000000 */ nop -.section .data -glabel spaces -.asciiz " " -.align 2 -glabel zeros -.asciiz "00000000000000000000000000000000" -.align 4 - -.section .rodata -glabel aHll -.ascii "hlL"<0> -glabel printf_symbols -.ascii " +-#0"<0> -.align 2 -glabel byteshiftleft_lookup -.word 1, 2, 4, 8, 0x10, 0 - -glabel jpt_80029714 -.word .L70013C58, .L70013F38, .L70013C58, .L70013F38 -.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 -.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 -.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 -.word .L70013F38, .L70013F38, .L70013F38, .L70013B08 -.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 -.word .L70013F38, .L70013F38, .L70013F38, .L70013F38 -.word .L70013F38, .L70013F38, .L70013960, .L70013998 -.word .L70013C58, .L70013C58, .L70013C58, .L70013F38 -.word .L70013998, .L70013F38, .L70013F38, .L70013F38 -.word .L70013F38, .L70013DBC, .L70013B08, .L70013E8C -.word .L70013F38, .L70013F38, .L70013ED4, .L70013F38 -.word .L70013B08, .L70013F38, .L70013F38, .L70013B08 -.align 4 - -.section .text -glabel osCreatePiManager -/* 0151B0 700145B0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0151B4 700145B4 3C0E8002 */ lui $t6, %hi(__osPiDevMgr) -/* 0151B8 700145B8 8DCE7790 */ lw $t6, %lo(__osPiDevMgr)($t6) -/* 0151BC 700145BC AFBF001C */ sw $ra, 0x1c($sp) -/* 0151C0 700145C0 AFA40030 */ sw $a0, 0x30($sp) -/* 0151C4 700145C4 AFA50034 */ sw $a1, 0x34($sp) -/* 0151C8 700145C8 AFA60038 */ sw $a2, 0x38($sp) -/* 0151CC 700145CC 15C00056 */ bnez $t6, .L70014728 -/* 0151D0 700145D0 AFA7003C */ sw $a3, 0x3c($sp) -/* 0151D4 700145D4 8FA40034 */ lw $a0, 0x34($sp) -/* 0151D8 700145D8 8FA50038 */ lw $a1, 0x38($sp) -/* 0151DC 700145DC 0C0035B4 */ jal osCreateMesgQueue -/* 0151E0 700145E0 8FA6003C */ lw $a2, 0x3c($sp) -/* 0151E4 700145E4 3C048006 */ lui $a0, %hi(pieventQueue) -/* 0151E8 700145E8 3C058006 */ lui $a1, %hi(piEventBuf) -/* 0151EC 700145EC 24A57C98 */ addiu $a1, %lo(piEventBuf) # addiu $a1, $a1, 0x7c98 -/* 0151F0 700145F0 24847C80 */ addiu $a0, %lo(pieventQueue) # addiu $a0, $a0, 0x7c80 -/* 0151F4 700145F4 0C0035B4 */ jal osCreateMesgQueue -/* 0151F8 700145F8 24060001 */ li $a2, 1 -/* 0151FC 700145FC 3C0F8003 */ lui $t7, %hi(__osPiAccessQueueEnabled) -/* 015200 70014600 8DEF82E0 */ lw $t7, %lo(__osPiAccessQueueEnabled)($t7) -/* 015204 70014604 15E00003 */ bnez $t7, .L70014614 -/* 015208 70014608 00000000 */ nop -/* 01520C 7001460C 0C0075C4 */ jal __osPiCreateAccessQueue -/* 015210 70014610 00000000 */ nop -.L70014614: -/* 015214 70014614 3C058006 */ lui $a1, %hi(pieventQueue) -/* 015218 70014618 3C062222 */ lui $a2, (0x22222222 >> 16) # lui $a2, 0x2222 -/* 01521C 7001461C 34C62222 */ ori $a2, (0x22222222 & 0xFFFF) # ori $a2, $a2, 0x2222 -/* 015220 70014620 24A57C80 */ addiu $a1, %lo(pieventQueue) # addiu $a1, $a1, 0x7c80 -/* 015224 70014624 0C003714 */ jal osSetEventMesg -/* 015228 70014628 24040008 */ li $a0, 8 -/* 01522C 7001462C 2418FFFF */ li $t8, -1 -/* 015230 70014630 AFB80028 */ sw $t8, 0x28($sp) -/* 015234 70014634 0C00628C */ jal osGetThreadPri -/* 015238 70014638 00002025 */ move $a0, $zero -/* 01523C 7001463C AFA20024 */ sw $v0, 0x24($sp) -/* 015240 70014640 8FB90024 */ lw $t9, 0x24($sp) -/* 015244 70014644 8FA80030 */ lw $t0, 0x30($sp) -/* 015248 70014648 0328082A */ slt $at, $t9, $t0 -/* 01524C 7001464C 10200005 */ beqz $at, .L70014664 -/* 015250 70014650 00000000 */ nop -/* 015254 70014654 AFB90028 */ sw $t9, 0x28($sp) -/* 015258 70014658 00002025 */ move $a0, $zero -/* 01525C 7001465C 0C003600 */ jal osSetThreadPri -/* 015260 70014660 01002825 */ move $a1, $t0 -.L70014664: -/* 015264 70014664 0C00617C */ jal __osDisableInt -/* 015268 70014668 00000000 */ nop -/* 01526C 7001466C 3C018002 */ lui $at, %hi(__osPiDevMgr.cmdQueue) -/* 015270 70014670 8FAB0034 */ lw $t3, 0x34($sp) -/* 015274 70014674 3C0A8006 */ lui $t2, %hi(piThread) -/* 015278 70014678 3C0C8006 */ lui $t4, %hi(pieventQueue) -/* 01527C 7001467C 24090001 */ li $t1, 1 -/* 015280 70014680 254A6AD0 */ addiu $t2, %lo(piThread) # addiu $t2, $t2, 0x6ad0 -/* 015284 70014684 258C7C80 */ addiu $t4, %lo(pieventQueue) # addiu $t4, $t4, 0x7c80 -/* 015288 70014688 AC297790 */ sw $t1, %lo(__osPiDevMgr)($at) -/* 01528C 7001468C AC2A7794 */ sw $t2, %lo(__osPiDevMgr.thread)($at) -/* 015290 70014690 AC2C779C */ sw $t4, %lo(__osPiDevMgr.evtQueue)($at) -/* 015294 70014694 3C188006 */ lui $t8, %hi(piThreadStack) -/* 015298 70014698 AC2B7798 */ sw $t3, %lo(__osPiDevMgr.cmdQueue)($at) -/* 01529C 7001469C 8FA80030 */ lw $t0, 0x30($sp) -/* 0152A0 700146A0 3C018002 */ lui $at, %hi(__osPiDevMgr.edma) -/* 0152A4 700146A4 3C0D8007 */ lui $t5, %hi(__osPiAccessQueue) -/* 0152A8 700146A8 3C0E7001 */ lui $t6, %hi(osPiRawStartDma) # $t6, 0x7001 -/* 0152AC 700146AC 3C0F7002 */ lui $t7, %hi(osEPiRawStartDma) # $t7, 0x7002 -/* 0152B0 700146B0 27186C80 */ addiu $t8, $t8, %lo(piThreadStack) -/* 0152B4 700146B4 25AD8FE8 */ addiu $t5, %lo(__osPiAccessQueue) # addiu $t5, $t5, -0x7018 -/* 0152B8 700146B8 25CECF90 */ addiu $t6, %lo(osPiRawStartDma) # addiu $t6, $t6, -0x3070 -/* 0152BC 700146BC 25EFE530 */ addiu $t7, %lo(osEPiRawStartDma) # addiu $t7, $t7, -0x1ad0 -/* 0152C0 700146C0 27191000 */ addiu $t9, $t8, 0x1000 -/* 0152C4 700146C4 3C067002 */ lui $a2, %hi(__osDevMgrMain) # $a2, 0x7002 -/* 0152C8 700146C8 3C078002 */ lui $a3, %hi(__osPiDevMgr) -/* 0152CC 700146CC AFA2002C */ sw $v0, 0x2c($sp) -/* 0152D0 700146D0 AC2D77A0 */ sw $t5, %lo(__osPiDevMgr.acsQueue)($at) -/* 0152D4 700146D4 AC2E77A4 */ sw $t6, %lo(__osPiDevMgr.dma)($at) -/* 0152D8 700146D8 AC2F77A8 */ sw $t7, %lo(__osPiDevMgr.edma)($at) -/* 0152DC 700146DC 24E77790 */ addiu $a3, %lo(__osPiDevMgr) # addiu $a3, $a3, 0x7790 -/* 0152E0 700146E0 24C6E610 */ addiu $a2, %lo(__osDevMgrMain) # addiu $a2, $a2, -0x19f0 -/* 0152E4 700146E4 AFB90010 */ sw $t9, 0x10($sp) -/* 0152E8 700146E8 01402025 */ move $a0, $t2 -/* 0152EC 700146EC 00002825 */ move $a1, $zero -/* 0152F0 700146F0 0C00350C */ jal osCreateThread -/* 0152F4 700146F4 AFA80014 */ sw $t0, 0x14($sp) -/* 0152F8 700146F8 3C048006 */ lui $a0, %hi(piThread) -/* 0152FC 700146FC 0C003560 */ jal osStartThread -/* 015300 70014700 24846AD0 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, 0x6ad0 -/* 015304 70014704 0C006184 */ jal __osRestoreInt -/* 015308 70014708 8FA4002C */ lw $a0, 0x2c($sp) -/* 01530C 7001470C 8FA90028 */ lw $t1, 0x28($sp) -/* 015310 70014710 2401FFFF */ li $at, -1 -/* 015314 70014714 11210004 */ beq $t1, $at, .L70014728 -/* 015318 70014718 00000000 */ nop -/* 01531C 7001471C 00002025 */ move $a0, $zero -/* 015320 70014720 0C003600 */ jal osSetThreadPri -/* 015324 70014724 01202825 */ move $a1, $t1 -.L70014728: -/* 015328 70014728 8FBF001C */ lw $ra, 0x1c($sp) -/* 01532C 7001472C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 015330 70014730 03E00008 */ jr $ra -/* 015334 70014734 00000000 */ nop - -/* 015338 70014738 00000000 */ nop -/* 01533C 7001473C 00000000 */ nop - -.section .data -glabel __osPiDevMgr -glabel __osPiDevMgr.active -.word 0 -glabel __osPiDevMgr.thread -.word 0 -glabel __osPiDevMgr.cmdQueue -.word 0 -glabel __osPiDevMgr.evtQueue -.word 0 -glabel __osPiDevMgr.acsQueue -.word 0 -glabel __osPiDevMgr.dma -.word 0 -glabel __osPiDevMgr.edma -.word 0 - - -glabel __osPiTable -.word 0 -.section .bss - -glabel piThread -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 - -glabel piThreadStack -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 -.word 0, 0, 0, 0 - -glabel pieventQueue -.word 0, 0, 0, 0, 0, 0 - -glabel piEventBuf -.word 0, 0 - +.section .text, "ax" .section .text glabel osPfsInit /* 015340 70014740 27BDFFE0 */ addiu $sp, $sp, -0x20 diff --git a/src/libultra/ll.s b/src/libultra/ll.s new file mode 100644 index 0000000..0180b07 --- /dev/null +++ b/src/libultra/ll.s @@ -0,0 +1,271 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel __ull_rshift +/* 00F840 7000EC40 AFA40000 */ sw $a0, ($sp) +/* 00F844 7000EC44 AFA50004 */ sw $a1, 4($sp) +/* 00F848 7000EC48 AFA60008 */ sw $a2, 8($sp) +/* 00F84C 7000EC4C AFA7000C */ sw $a3, 0xc($sp) +/* 00F850 7000EC50 DFAF0008 */ ld $t7, 8($sp) +/* 00F854 7000EC54 DFAE0000 */ ld $t6, ($sp) +/* 00F858 7000EC58 01EE1016 */ dsrlv $v0, $t6, $t7 +/* 00F85C 7000EC5C 0002183C */ dsll32 $v1, $v0, 0 +/* 00F860 7000EC60 0003183F */ dsra32 $v1, $v1, 0 +/* 00F864 7000EC64 03E00008 */ jr $ra +/* 00F868 7000EC68 0002103F */ dsra32 $v0, $v0, 0 + +glabel __ull_rem +/* 00F86C 7000EC6C AFA40000 */ sw $a0, ($sp) +/* 00F870 7000EC70 AFA50004 */ sw $a1, 4($sp) +/* 00F874 7000EC74 AFA60008 */ sw $a2, 8($sp) +/* 00F878 7000EC78 AFA7000C */ sw $a3, 0xc($sp) +/* 00F87C 7000EC7C DFAF0008 */ ld $t7, 8($sp) +/* 00F880 7000EC80 DFAE0000 */ ld $t6, ($sp) +/* 00F884 7000EC84 01CF001F */ ddivu $zero, $t6, $t7 +/* 00F888 7000EC88 15E00002 */ bnez $t7, .L7000EC94 +/* 00F88C 7000EC8C 00000000 */ nop +/* 00F890 7000EC90 0007000D */ break 7 +.L7000EC94: +/* 00F894 7000EC94 00001010 */ mfhi $v0 +/* 00F898 7000EC98 0002183C */ dsll32 $v1, $v0, 0 +/* 00F89C 7000EC9C 0003183F */ dsra32 $v1, $v1, 0 +/* 00F8A0 7000ECA0 03E00008 */ jr $ra +/* 00F8A4 7000ECA4 0002103F */ dsra32 $v0, $v0, 0 + +glabel __ull_div +/* 00F8A8 7000ECA8 AFA40000 */ sw $a0, ($sp) +/* 00F8AC 7000ECAC AFA50004 */ sw $a1, 4($sp) +/* 00F8B0 7000ECB0 AFA60008 */ sw $a2, 8($sp) +/* 00F8B4 7000ECB4 AFA7000C */ sw $a3, 0xc($sp) +/* 00F8B8 7000ECB8 DFAF0008 */ ld $t7, 8($sp) +/* 00F8BC 7000ECBC DFAE0000 */ ld $t6, ($sp) +/* 00F8C0 7000ECC0 01CF001F */ ddivu $zero, $t6, $t7 +/* 00F8C4 7000ECC4 15E00002 */ bnez $t7, .L7000ECD0 +/* 00F8C8 7000ECC8 00000000 */ nop +/* 00F8CC 7000ECCC 0007000D */ break 7 +.L7000ECD0: +/* 00F8D0 7000ECD0 00001012 */ mflo $v0 +/* 00F8D4 7000ECD4 0002183C */ dsll32 $v1, $v0, 0 +/* 00F8D8 7000ECD8 0003183F */ dsra32 $v1, $v1, 0 +/* 00F8DC 7000ECDC 03E00008 */ jr $ra +/* 00F8E0 7000ECE0 0002103F */ dsra32 $v0, $v0, 0 + +glabel __ll_lshift +/* 00F8E4 7000ECE4 AFA40000 */ sw $a0, ($sp) +/* 00F8E8 7000ECE8 AFA50004 */ sw $a1, 4($sp) +/* 00F8EC 7000ECEC AFA60008 */ sw $a2, 8($sp) +/* 00F8F0 7000ECF0 AFA7000C */ sw $a3, 0xc($sp) +/* 00F8F4 7000ECF4 DFAF0008 */ ld $t7, 8($sp) +/* 00F8F8 7000ECF8 DFAE0000 */ ld $t6, ($sp) +/* 00F8FC 7000ECFC 01EE1014 */ dsllv $v0, $t6, $t7 +/* 00F900 7000ED00 0002183C */ dsll32 $v1, $v0, 0 +/* 00F904 7000ED04 0003183F */ dsra32 $v1, $v1, 0 +/* 00F908 7000ED08 03E00008 */ jr $ra +/* 00F90C 7000ED0C 0002103F */ dsra32 $v0, $v0, 0 + +glabel __ll_rem +/* 00F910 7000ED10 AFA40000 */ sw $a0, ($sp) +/* 00F914 7000ED14 AFA50004 */ sw $a1, 4($sp) +/* 00F918 7000ED18 AFA60008 */ sw $a2, 8($sp) +/* 00F91C 7000ED1C AFA7000C */ sw $a3, 0xc($sp) +/* 00F920 7000ED20 DFAF0008 */ ld $t7, 8($sp) +/* 00F924 7000ED24 DFAE0000 */ ld $t6, ($sp) +/* 00F928 7000ED28 01CF001F */ ddivu $zero, $t6, $t7 +/* 00F92C 7000ED2C 15E00002 */ bnez $t7, .L7000ED38 +/* 00F930 7000ED30 00000000 */ nop +/* 00F934 7000ED34 0007000D */ break 7 +.L7000ED38: +/* 00F938 7000ED38 00001010 */ mfhi $v0 +/* 00F93C 7000ED3C 0002183C */ dsll32 $v1, $v0, 0 +/* 00F940 7000ED40 0003183F */ dsra32 $v1, $v1, 0 +/* 00F944 7000ED44 03E00008 */ jr $ra +/* 00F948 7000ED48 0002103F */ dsra32 $v0, $v0, 0 + +glabel __ll_div +/* 00F94C 7000ED4C AFA40000 */ sw $a0, ($sp) +/* 00F950 7000ED50 AFA50004 */ sw $a1, 4($sp) +/* 00F954 7000ED54 AFA60008 */ sw $a2, 8($sp) +/* 00F958 7000ED58 AFA7000C */ sw $a3, 0xc($sp) +/* 00F95C 7000ED5C DFAF0008 */ ld $t7, 8($sp) +/* 00F960 7000ED60 DFAE0000 */ ld $t6, ($sp) +/* 00F964 7000ED64 01CF001E */ ddiv $zero, $t6, $t7 +/* 00F968 7000ED68 00000000 */ nop +/* 00F96C 7000ED6C 15E00002 */ bnez $t7, .L7000ED78 +/* 00F970 7000ED70 00000000 */ nop +/* 00F974 7000ED74 0007000D */ break 7 +.L7000ED78: +/* 00F978 7000ED78 6401FFFF */ daddiu $at, $zero, -1 +/* 00F97C 7000ED7C 15E10005 */ bne $t7, $at, .L7000ED94 +/* 00F980 7000ED80 64010001 */ daddiu $at, $zero, 1 +/* 00F984 7000ED84 00010FFC */ dsll32 $at, $at, 0x1f +/* 00F988 7000ED88 15C10002 */ bne $t6, $at, .L7000ED94 +/* 00F98C 7000ED8C 00000000 */ nop +/* 00F990 7000ED90 0006000D */ break 6 +.L7000ED94: +/* 00F994 7000ED94 00001012 */ mflo $v0 +/* 00F998 7000ED98 0002183C */ dsll32 $v1, $v0, 0 +/* 00F99C 7000ED9C 0003183F */ dsra32 $v1, $v1, 0 +/* 00F9A0 7000EDA0 03E00008 */ jr $ra +/* 00F9A4 7000EDA4 0002103F */ dsra32 $v0, $v0, 0 + +glabel __ll_mul +/* 00F9A8 7000EDA8 AFA40000 */ sw $a0, ($sp) +/* 00F9AC 7000EDAC AFA50004 */ sw $a1, 4($sp) +/* 00F9B0 7000EDB0 AFA60008 */ sw $a2, 8($sp) +/* 00F9B4 7000EDB4 AFA7000C */ sw $a3, 0xc($sp) +/* 00F9B8 7000EDB8 DFAF0008 */ ld $t7, 8($sp) +/* 00F9BC 7000EDBC DFAE0000 */ ld $t6, ($sp) +/* 00F9C0 7000EDC0 01CF001D */ dmultu $t6, $t7 +/* 00F9C4 7000EDC4 00001012 */ mflo $v0 +/* 00F9C8 7000EDC8 0002183C */ dsll32 $v1, $v0, 0 +/* 00F9CC 7000EDCC 0003183F */ dsra32 $v1, $v1, 0 +/* 00F9D0 7000EDD0 03E00008 */ jr $ra +/* 00F9D4 7000EDD4 0002103F */ dsra32 $v0, $v0, 0 + +glabel __ull_divremi +/* 00F9D8 7000EDD8 87AF0012 */ lh $t7, 0x12($sp) +/* 00F9DC 7000EDDC AFA60008 */ sw $a2, 8($sp) +/* 00F9E0 7000EDE0 AFA7000C */ sw $a3, 0xc($sp) +/* 00F9E4 7000EDE4 DFAE0008 */ ld $t6, 8($sp) +/* 00F9E8 7000EDE8 01E0C025 */ move $t8, $t7 +/* 00F9EC 7000EDEC 0300C825 */ move $t9, $t8 +/* 00F9F0 7000EDF0 01D9001F */ ddivu $zero, $t6, $t9 +/* 00F9F4 7000EDF4 17200002 */ bnez $t9, .L7000EE00 +/* 00F9F8 7000EDF8 00000000 */ nop +/* 00F9FC 7000EDFC 0007000D */ break 7 +.L7000EE00: +/* 00FA00 7000EE00 00004012 */ mflo $t0 +/* 00FA04 7000EE04 FC880000 */ sd $t0, ($a0) +/* 00FA08 7000EE08 87AA0012 */ lh $t2, 0x12($sp) +/* 00FA0C 7000EE0C DFA90008 */ ld $t1, 8($sp) +/* 00FA10 7000EE10 01405825 */ move $t3, $t2 +/* 00FA14 7000EE14 01606025 */ move $t4, $t3 +/* 00FA18 7000EE18 012C001F */ ddivu $zero, $t1, $t4 +/* 00FA1C 7000EE1C 15800002 */ bnez $t4, .L7000EE28 +/* 00FA20 7000EE20 00000000 */ nop +/* 00FA24 7000EE24 0007000D */ break 7 +.L7000EE28: +/* 00FA28 7000EE28 00006810 */ mfhi $t5 +/* 00FA2C 7000EE2C FCAD0000 */ sd $t5, ($a1) +/* 00FA30 7000EE30 03E00008 */ jr $ra +/* 00FA34 7000EE34 00000000 */ nop + +glabel __ll_mod +/* 00FA38 7000EE38 27BDFFF8 */ addiu $sp, $sp, -8 +/* 00FA3C 7000EE3C AFA40008 */ sw $a0, 8($sp) +/* 00FA40 7000EE40 AFA5000C */ sw $a1, 0xc($sp) +/* 00FA44 7000EE44 AFA60010 */ sw $a2, 0x10($sp) +/* 00FA48 7000EE48 AFA70014 */ sw $a3, 0x14($sp) +/* 00FA4C 7000EE4C DFAF0010 */ ld $t7, 0x10($sp) +/* 00FA50 7000EE50 DFAE0008 */ ld $t6, 8($sp) +/* 00FA54 7000EE54 01CF001E */ ddiv $zero, $t6, $t7 +/* 00FA58 7000EE58 00000000 */ nop +/* 00FA5C 7000EE5C 15E00002 */ bnez $t7, .L7000EE68 +/* 00FA60 7000EE60 00000000 */ nop +/* 00FA64 7000EE64 0007000D */ break 7 +.L7000EE68: +/* 00FA68 7000EE68 6401FFFF */ daddiu $at, $zero, -1 +/* 00FA6C 7000EE6C 15E10005 */ bne $t7, $at, .L7000EE84 +/* 00FA70 7000EE70 64010001 */ daddiu $at, $zero, 1 +/* 00FA74 7000EE74 00010FFC */ dsll32 $at, $at, 0x1f +/* 00FA78 7000EE78 15C10002 */ bne $t6, $at, .L7000EE84 +/* 00FA7C 7000EE7C 00000000 */ nop +/* 00FA80 7000EE80 0006000D */ break 6 +.L7000EE84: +/* 00FA84 7000EE84 0000C010 */ mfhi $t8 +/* 00FA88 7000EE88 FFB80000 */ sd $t8, ($sp) +/* 00FA8C 7000EE8C 07010003 */ bgez $t8, .L7000EE9C +/* 00FA90 7000EE90 00000000 */ nop +/* 00FA94 7000EE94 1DE00007 */ bgtz $t7, .L7000EEB4 +/* 00FA98 7000EE98 00000000 */ nop +.L7000EE9C: +/* 00FA9C 7000EE9C DFB90000 */ ld $t9, ($sp) +/* 00FAA0 7000EEA0 1B200008 */ blez $t9, .L7000EEC4 +/* 00FAA4 7000EEA4 00000000 */ nop +/* 00FAA8 7000EEA8 DFA80010 */ ld $t0, 0x10($sp) +/* 00FAAC 7000EEAC 05010005 */ bgez $t0, .L7000EEC4 +/* 00FAB0 7000EEB0 00000000 */ nop +.L7000EEB4: +/* 00FAB4 7000EEB4 DFA90000 */ ld $t1, ($sp) +/* 00FAB8 7000EEB8 DFAA0010 */ ld $t2, 0x10($sp) +/* 00FABC 7000EEBC 012A582D */ daddu $t3, $t1, $t2 +/* 00FAC0 7000EEC0 FFAB0000 */ sd $t3, ($sp) +.L7000EEC4: +/* 00FAC4 7000EEC4 8FA20000 */ lw $v0, ($sp) +/* 00FAC8 7000EEC8 8FA30004 */ lw $v1, 4($sp) +/* 00FACC 7000EECC 03E00008 */ jr $ra +/* 00FAD0 7000EED0 27BD0008 */ addiu $sp, $sp, 8 + +glabel __ll_rshift +/* 00FAD4 7000EED4 AFA40000 */ sw $a0, ($sp) +/* 00FAD8 7000EED8 AFA50004 */ sw $a1, 4($sp) +/* 00FADC 7000EEDC AFA60008 */ sw $a2, 8($sp) +/* 00FAE0 7000EEE0 AFA7000C */ sw $a3, 0xc($sp) +/* 00FAE4 7000EEE4 DFAF0008 */ ld $t7, 8($sp) +/* 00FAE8 7000EEE8 DFAE0000 */ ld $t6, ($sp) +/* 00FAEC 7000EEEC 01EE1017 */ dsrav $v0, $t6, $t7 +/* 00FAF0 7000EEF0 0002183C */ dsll32 $v1, $v0, 0 +/* 00FAF4 7000EEF4 0003183F */ dsra32 $v1, $v1, 0 +/* 00FAF8 7000EEF8 03E00008 */ jr $ra +/* 00FAFC 7000EEFC 0002103F */ dsra32 $v0, $v0, 0 + +glabel osAiSetNextBuffer +/* 00FB00 7000EF00 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 00FB04 7000EF04 3C0F8002 */ lui $t7, %hi(B_800276F0) +/* 00FB08 7000EF08 91EF76F0 */ lbu $t7, %lo(B_800276F0)($t7) +/* 00FB0C 7000EF0C AFA40020 */ sw $a0, 0x20($sp) +/* 00FB10 7000EF10 8FAE0020 */ lw $t6, 0x20($sp) +/* 00FB14 7000EF14 AFBF0014 */ sw $ra, 0x14($sp) +/* 00FB18 7000EF18 AFA50024 */ sw $a1, 0x24($sp) +/* 00FB1C 7000EF1C 11E00003 */ beqz $t7, .L7000EF2C +/* 00FB20 7000EF20 AFAE001C */ sw $t6, 0x1c($sp) +/* 00FB24 7000EF24 25D8E000 */ addiu $t8, $t6, -0x2000 +/* 00FB28 7000EF28 AFB8001C */ sw $t8, 0x1c($sp) +.L7000EF2C: +/* 00FB2C 7000EF2C 8FB90020 */ lw $t9, 0x20($sp) +/* 00FB30 7000EF30 8FA80024 */ lw $t0, 0x24($sp) +/* 00FB34 7000EF34 24012000 */ li $at, 8192 +/* 00FB38 7000EF38 03284821 */ addu $t1, $t9, $t0 +/* 00FB3C 7000EF3C 312A3FFF */ andi $t2, $t1, 0x3fff +/* 00FB40 7000EF40 15410005 */ bne $t2, $at, .L7000EF58 +/* 00FB44 7000EF44 00000000 */ nop +/* 00FB48 7000EF48 240B0001 */ li $t3, 1 +/* 00FB4C 7000EF4C 3C018002 */ lui $at, %hi(B_800276F0) +/* 00FB50 7000EF50 10000003 */ b .L7000EF60 +/* 00FB54 7000EF54 A02B76F0 */ sb $t3, %lo(B_800276F0)($at) +.L7000EF58: +/* 00FB58 7000EF58 3C018002 */ lui $at, %hi(B_800276F0) +/* 00FB5C 7000EF5C A02076F0 */ sb $zero, %lo(B_800276F0)($at) +.L7000EF60: +/* 00FB60 7000EF60 0C00643C */ jal __osAiDeviceBusy +/* 00FB64 7000EF64 00000000 */ nop +/* 00FB68 7000EF68 10400003 */ beqz $v0, .L7000EF78 +/* 00FB6C 7000EF6C 00000000 */ nop +/* 00FB70 7000EF70 10000009 */ b .L7000EF98 +/* 00FB74 7000EF74 2402FFFF */ li $v0, -1 +.L7000EF78: +/* 00FB78 7000EF78 0C003A2C */ jal osVirtualToPhysical +/* 00FB7C 7000EF7C 8FA4001C */ lw $a0, 0x1c($sp) +/* 00FB80 7000EF80 3C0CA450 */ lui $t4, 0xa450 +/* 00FB84 7000EF84 AD820000 */ sw $v0, ($t4) +/* 00FB88 7000EF88 8FAD0024 */ lw $t5, 0x24($sp) +/* 00FB8C 7000EF8C 3C0FA450 */ lui $t7, %hi(AI_LEN_REG) # $t7, 0xa450 +/* 00FB90 7000EF90 00001025 */ move $v0, $zero +/* 00FB94 7000EF94 ADED0004 */ sw $t5, %lo(AI_LEN_REG)($t7) +.L7000EF98: +/* 00FB98 7000EF98 8FBF0014 */ lw $ra, 0x14($sp) +/* 00FB9C 7000EF9C 27BD0020 */ addiu $sp, $sp, 0x20 +/* 00FBA0 7000EFA0 03E00008 */ jr $ra +/* 00FBA4 7000EFA4 00000000 */ nop + +/* 00FBA8 7000EFA8 00000000 */ nop +/* 00FBAC 7000EFAC 00000000 */ nop +.section .data +glabel B_800276F0 +.byte 0 diff --git a/src/libultra/osAiGetLength.s b/src/libultra/osAiGetLength.s new file mode 100644 index 0000000..f363dab --- /dev/null +++ b/src/libultra/osAiGetLength.s @@ -0,0 +1,15 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osAiGetLength +/* 00FBB0 7000EFB0 3C0EA450 */ lui $t6, 0xa450 +/* 00FBB4 7000EFB4 03E00008 */ jr $ra +/* 00FBB8 7000EFB8 8DC20004 */ lw $v0, 4($t6) + diff --git a/src/libultra/osAiSetFrequency.s b/src/libultra/osAiSetFrequency.s new file mode 100644 index 0000000..bd786cc --- /dev/null +++ b/src/libultra/osAiSetFrequency.s @@ -0,0 +1,106 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osAiSetFrequency +/* 00F530 7000E930 3C0E8003 */ lui $t6, %hi(osViClock)#%hi(osViClock) +/* 00F534 7000E934 8DCE804C */ lw $t6, %lo(osViClock)($t6)#%lo(osViClock)($t6) +/* 00F538 7000E938 44844000 */ mtc1 $a0, $f8 +/* 00F53C 7000E93C 27BDFFF0 */ addiu $sp, $sp, -0x10 +/* 00F540 7000E940 448E2000 */ mtc1 $t6, $f4 +/* 00F544 7000E944 468042A0 */ cvt.s.w $f10, $f8 +/* 00F548 7000E948 04810005 */ bgez $a0, .L7000E960 +/* 00F54C 7000E94C 468021A0 */ cvt.s.w $f6, $f4 +/* 00F550 7000E950 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 00F554 7000E954 44818000 */ mtc1 $at, $f16 +/* 00F558 7000E958 00000000 */ nop +/* 00F55C 7000E95C 46105280 */ add.s $f10, $f10, $f16 +.L7000E960: +/* 00F560 7000E960 460A3483 */ div.s $f18, $f6, $f10 +/* 00F564 7000E964 3C013F00 */ li $at, 0x3F000000 # 0.500000 +/* 00F568 7000E968 44812000 */ mtc1 $at, $f4 +/* 00F56C 7000E96C 24050001 */ li $a1, 1 +/* 00F570 7000E970 46049300 */ add.s $f12, $f18, $f4 +/* 00F574 7000E974 444FF800 */ cfc1 $t7, $31 +/* 00F578 7000E978 44C5F800 */ ctc1 $a1, $31 +/* 00F57C 7000E97C 00000000 */ nop +/* 00F580 7000E980 46006224 */ cvt.w.s $f8, $f12 +/* 00F584 7000E984 4445F800 */ cfc1 $a1, $31 +/* 00F588 7000E988 00000000 */ nop +/* 00F58C 7000E98C 30A10004 */ andi $at, $a1, 4 +/* 00F590 7000E990 30A50078 */ andi $a1, $a1, 0x78 +/* 00F594 7000E994 10A00013 */ beqz $a1, .L7000E9E4 +/* 00F598 7000E998 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 +/* 00F59C 7000E99C 44814000 */ mtc1 $at, $f8 +/* 00F5A0 7000E9A0 24050001 */ li $a1, 1 +/* 00F5A4 7000E9A4 46086201 */ sub.s $f8, $f12, $f8 +/* 00F5A8 7000E9A8 44C5F800 */ ctc1 $a1, $31 +/* 00F5AC 7000E9AC 00000000 */ nop +/* 00F5B0 7000E9B0 46004224 */ cvt.w.s $f8, $f8 +/* 00F5B4 7000E9B4 4445F800 */ cfc1 $a1, $31 +/* 00F5B8 7000E9B8 00000000 */ nop +/* 00F5BC 7000E9BC 30A10004 */ andi $at, $a1, 4 +/* 00F5C0 7000E9C0 30A50078 */ andi $a1, $a1, 0x78 +/* 00F5C4 7000E9C4 14A00005 */ bnez $a1, .L7000E9DC +/* 00F5C8 7000E9C8 00000000 */ nop +/* 00F5CC 7000E9CC 44054000 */ mfc1 $a1, $f8 +/* 00F5D0 7000E9D0 3C018000 */ lui $at, 0x8000 +/* 00F5D4 7000E9D4 10000007 */ b .L7000E9F4 +/* 00F5D8 7000E9D8 00A12825 */ or $a1, $a1, $at +.L7000E9DC: +/* 00F5DC 7000E9DC 10000005 */ b .L7000E9F4 +/* 00F5E0 7000E9E0 2405FFFF */ li $a1, -1 +.L7000E9E4: +/* 00F5E4 7000E9E4 44054000 */ mfc1 $a1, $f8 +/* 00F5E8 7000E9E8 00000000 */ nop +/* 00F5EC 7000E9EC 04A0FFFB */ bltz $a1, .L7000E9DC +/* 00F5F0 7000E9F0 00000000 */ nop +.L7000E9F4: +/* 00F5F4 7000E9F4 44CFF800 */ ctc1 $t7, $31 +/* 00F5F8 7000E9F8 2CA10084 */ sltiu $at, $a1, 0x84 +/* 00F5FC 7000E9FC 10200003 */ beqz $at, .L7000EA0C +/* 00F600 7000EA00 00000000 */ nop +/* 00F604 7000EA04 10000020 */ b .L7000EA88 +/* 00F608 7000EA08 2402FFFF */ li $v0, -1 +.L7000EA0C: +/* 00F60C 7000EA0C 24010042 */ li $at, 66 +/* 00F610 7000EA10 00A1001B */ divu $zero, $a1, $at +/* 00F614 7000EA14 00003012 */ mflo $a2 +/* 00F618 7000EA18 30D800FF */ andi $t8, $a2, 0xff +/* 00F61C 7000EA1C 03003025 */ move $a2, $t8 +/* 00F620 7000EA20 28C10011 */ slti $at, $a2, 0x11 +/* 00F624 7000EA24 14200002 */ bnez $at, .L7000EA30 +/* 00F628 7000EA28 00000000 */ nop +/* 00F62C 7000EA2C 24060010 */ li $a2, 16 +.L7000EA30: +/* 00F630 7000EA30 24B9FFFF */ addiu $t9, $a1, -1 +/* 00F634 7000EA34 3C08A450 */ lui $t0, %hi(AI_DACRATE_REG) # $t0, 0xa450 +/* 00F638 7000EA38 AD190010 */ sw $t9, %lo(AI_DACRATE_REG)($t0) +/* 00F63C 7000EA3C 24C9FFFF */ addiu $t1, $a2, -1 +/* 00F640 7000EA40 3C0AA450 */ lui $t2, %hi(AI_BITRATE_REG) # $t2, 0xa450 +/* 00F644 7000EA44 AD490014 */ sw $t1, %lo(AI_BITRATE_REG)($t2) +/* 00F648 7000EA48 240B0001 */ li $t3, 1 +/* 00F64C 7000EA4C 3C0CA450 */ lui $t4, %hi(AI_CONTROL_REG) # $t4, 0xa450 +/* 00F650 7000EA50 AD8B0008 */ sw $t3, %lo(AI_CONTROL_REG)($t4) +/* 00F654 7000EA54 3C0D8003 */ lui $t5, %hi(osViClock) #osViClock +/* 00F658 7000EA58 8DAD804C */ lw $t5, %lo(osViClock)($t5) #osViClock +/* 00F65C 7000EA5C 01A5001A */ div $zero, $t5, $a1 +/* 00F660 7000EA60 00001012 */ mflo $v0 +/* 00F664 7000EA64 14A00002 */ bnez $a1, .L7000EA70 +/* 00F668 7000EA68 00000000 */ nop +/* 00F66C 7000EA6C 0007000D */ break 7 +.L7000EA70: +/* 00F670 7000EA70 2401FFFF */ li $at, -1 +/* 00F674 7000EA74 14A10004 */ bne $a1, $at, .L7000EA88 +/* 00F678 7000EA78 3C018000 */ lui $at, 0x8000 +/* 00F67C 7000EA7C 15A10002 */ bne $t5, $at, .L7000EA88 +/* 00F680 7000EA80 00000000 */ nop +/* 00F684 7000EA84 0006000D */ break 6 +.L7000EA88: +/* 00F688 7000EA88 03E00008 */ jr $ra +/* 00F68C 7000EA8C 27BD0010 */ addiu $sp, $sp, 0x10 diff --git a/src/libultra/osCreateMesgQueue.s b/src/libultra/osCreateMesgQueue.s new file mode 100644 index 0000000..d5815cc --- /dev/null +++ b/src/libultra/osCreateMesgQueue.s @@ -0,0 +1,41 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osCreateMesgQueue +/* 00E2D0 7000D6D0 3C0E8002 */ lui $t6, %hi(__osThreadTail) +/* 00E2D4 7000D6D4 3C0F8002 */ lui $t7, %hi(__osThreadTail) +/* 00E2D8 7000D6D8 25CE7720 */ addiu $t6, %lo(__osThreadTail) # addiu $t6, $t6, 0x7720 +/* 00E2DC 7000D6DC 25EF7720 */ addiu $t7, %lo(__osThreadTail) # addiu $t7, $t7, 0x7720 +/* 00E2E0 7000D6E0 AC8E0000 */ sw $t6, ($a0) +/* 00E2E4 7000D6E4 AC8F0004 */ sw $t7, 4($a0) +/* 00E2E8 7000D6E8 AC800008 */ sw $zero, 8($a0) +/* 00E2EC 7000D6EC AC80000C */ sw $zero, 0xc($a0) +/* 00E2F0 7000D6F0 AC860010 */ sw $a2, 0x10($a0) +/* 00E2F4 7000D6F4 03E00008 */ jr $ra +/* 00E2F8 7000D6F8 AC850014 */ sw $a1, 0x14($a0) + +#wtf why do these exist, figure out +/* 00E2FC 7000D6FC 00000000 */ nop +/* 00E300 7000D700 00000000 */ nop +/* 00E304 7000D704 00000000 */ nop +/* 00E308 7000D708 00000000 */ nop +/* 00E30C 7000D70C 00000000 */ nop +/* 00E310 7000D710 00000000 */ nop +/* 00E314 7000D714 00000000 */ nop +/* 00E318 7000D718 00000000 */ nop +/* 00E31C 7000D71C 00000000 */ nop +/* 00E320 7000D720 00000000 */ nop +/* 00E324 7000D724 00000000 */ nop +/* 00E328 7000D728 00000000 */ nop +/* 00E32C 7000D72C 00000000 */ nop +/* 00E330 7000D730 00000000 */ nop +/* 00E334 7000D734 00000000 */ nop +/* 00E338 7000D738 00000000 */ nop +/* 00E33C 7000D73C 00000000 */ nop diff --git a/src/libultra/osCreatePiManager.s b/src/libultra/osCreatePiManager.s new file mode 100644 index 0000000..6e3d608 --- /dev/null +++ b/src/libultra/osCreatePiManager.s @@ -0,0 +1,528 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +.ifndef VERSION_EU +glabel osCreatePiManager +/* 0151B0 700145B0 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 0151B4 700145B4 3C0E8002 */ lui $t6, %hi(__osPiDevMgr) +/* 0151B8 700145B8 8DCE7790 */ lw $t6, %lo(__osPiDevMgr)($t6) +/* 0151BC 700145BC AFBF001C */ sw $ra, 0x1c($sp) +/* 0151C0 700145C0 AFA40030 */ sw $a0, 0x30($sp) +/* 0151C4 700145C4 AFA50034 */ sw $a1, 0x34($sp) +/* 0151C8 700145C8 AFA60038 */ sw $a2, 0x38($sp) +/* 0151CC 700145CC 15C00056 */ bnez $t6, .L70014728 +/* 0151D0 700145D0 AFA7003C */ sw $a3, 0x3c($sp) +/* 0151D4 700145D4 8FA40034 */ lw $a0, 0x34($sp) +/* 0151D8 700145D8 8FA50038 */ lw $a1, 0x38($sp) +/* 0151DC 700145DC 0C0035B4 */ jal osCreateMesgQueue +/* 0151E0 700145E0 8FA6003C */ lw $a2, 0x3c($sp) +/* 0151E4 700145E4 3C048006 */ lui $a0, %hi(pieventQueue) +/* 0151E8 700145E8 3C058006 */ lui $a1, %hi(piEventBuf) +/* 0151EC 700145EC 24A57C98 */ addiu $a1, %lo(piEventBuf) # addiu $a1, $a1, 0x7c98 +/* 0151F0 700145F0 24847C80 */ addiu $a0, %lo(pieventQueue) # addiu $a0, $a0, 0x7c80 +/* 0151F4 700145F4 0C0035B4 */ jal osCreateMesgQueue +/* 0151F8 700145F8 24060001 */ li $a2, 1 +/* 0151FC 700145FC 3C0F8003 */ lui $t7, %hi(__osPiAccessQueueEnabled) +/* 015200 70014600 8DEF82E0 */ lw $t7, %lo(__osPiAccessQueueEnabled)($t7) +/* 015204 70014604 15E00003 */ bnez $t7, .L70014614 +/* 015208 70014608 00000000 */ nop +/* 01520C 7001460C 0C0075C4 */ jal __osPiCreateAccessQueue +/* 015210 70014610 00000000 */ nop +.L70014614: +/* 015214 70014614 3C058006 */ lui $a1, %hi(pieventQueue) +/* 015218 70014618 3C062222 */ lui $a2, (0x22222222 >> 16) # lui $a2, 0x2222 +/* 01521C 7001461C 34C62222 */ ori $a2, (0x22222222 & 0xFFFF) # ori $a2, $a2, 0x2222 +/* 015220 70014620 24A57C80 */ addiu $a1, %lo(pieventQueue) # addiu $a1, $a1, 0x7c80 +/* 015224 70014624 0C003714 */ jal osSetEventMesg +/* 015228 70014628 24040008 */ li $a0, 8 +/* 01522C 7001462C 2418FFFF */ li $t8, -1 +/* 015230 70014630 AFB80028 */ sw $t8, 0x28($sp) +/* 015234 70014634 0C00628C */ jal osGetThreadPri +/* 015238 70014638 00002025 */ move $a0, $zero +/* 01523C 7001463C AFA20024 */ sw $v0, 0x24($sp) +/* 015240 70014640 8FB90024 */ lw $t9, 0x24($sp) +/* 015244 70014644 8FA80030 */ lw $t0, 0x30($sp) +/* 015248 70014648 0328082A */ slt $at, $t9, $t0 +/* 01524C 7001464C 10200005 */ beqz $at, .L70014664 +/* 015250 70014650 00000000 */ nop +/* 015254 70014654 AFB90028 */ sw $t9, 0x28($sp) +/* 015258 70014658 00002025 */ move $a0, $zero +/* 01525C 7001465C 0C003600 */ jal osSetThreadPri +/* 015260 70014660 01002825 */ move $a1, $t0 +.L70014664: +/* 015264 70014664 0C00617C */ jal __osDisableInt +/* 015268 70014668 00000000 */ nop +/* 01526C 7001466C 3C018002 */ lui $at, %hi(__osPiDevMgr.cmdQueue) +/* 015270 70014670 8FAB0034 */ lw $t3, 0x34($sp) +/* 015274 70014674 3C0A8006 */ lui $t2, %hi(piThread) +/* 015278 70014678 3C0C8006 */ lui $t4, %hi(pieventQueue) +/* 01527C 7001467C 24090001 */ li $t1, 1 +/* 015280 70014680 254A6AD0 */ addiu $t2, %lo(piThread) # addiu $t2, $t2, 0x6ad0 +/* 015284 70014684 258C7C80 */ addiu $t4, %lo(pieventQueue) # addiu $t4, $t4, 0x7c80 +/* 015288 70014688 AC297790 */ sw $t1, %lo(__osPiDevMgr)($at) +/* 01528C 7001468C AC2A7794 */ sw $t2, %lo(__osPiDevMgr.thread)($at) +/* 015290 70014690 AC2C779C */ sw $t4, %lo(__osPiDevMgr.evtQueue)($at) +/* 015294 70014694 3C188006 */ lui $t8, %hi(piThreadStack) +/* 015298 70014698 AC2B7798 */ sw $t3, %lo(__osPiDevMgr.cmdQueue)($at) +/* 01529C 7001469C 8FA80030 */ lw $t0, 0x30($sp) +/* 0152A0 700146A0 3C018002 */ lui $at, %hi(__osPiDevMgr.edma) +/* 0152A4 700146A4 3C0D8007 */ lui $t5, %hi(__osPiAccessQueue) +/* 0152A8 700146A8 3C0E7001 */ lui $t6, %hi(osPiRawStartDma) # $t6, 0x7001 +/* 0152AC 700146AC 3C0F7002 */ lui $t7, %hi(osEPiRawStartDma) # $t7, 0x7002 +/* 0152B0 700146B0 27186C80 */ addiu $t8, $t8, %lo(piThreadStack) +/* 0152B4 700146B4 25AD8FE8 */ addiu $t5, %lo(__osPiAccessQueue) # addiu $t5, $t5, -0x7018 +/* 0152B8 700146B8 25CECF90 */ addiu $t6, %lo(osPiRawStartDma) # addiu $t6, $t6, -0x3070 +/* 0152BC 700146BC 25EFE530 */ addiu $t7, %lo(osEPiRawStartDma) # addiu $t7, $t7, -0x1ad0 +/* 0152C0 700146C0 27191000 */ addiu $t9, $t8, 0x1000 +/* 0152C4 700146C4 3C067002 */ lui $a2, %hi(__osDevMgrMain) # $a2, 0x7002 +/* 0152C8 700146C8 3C078002 */ lui $a3, %hi(__osPiDevMgr) +/* 0152CC 700146CC AFA2002C */ sw $v0, 0x2c($sp) +/* 0152D0 700146D0 AC2D77A0 */ sw $t5, %lo(__osPiDevMgr.acsQueue)($at) +/* 0152D4 700146D4 AC2E77A4 */ sw $t6, %lo(__osPiDevMgr.dma)($at) +/* 0152D8 700146D8 AC2F77A8 */ sw $t7, %lo(__osPiDevMgr.edma)($at) +/* 0152DC 700146DC 24E77790 */ addiu $a3, %lo(__osPiDevMgr) # addiu $a3, $a3, 0x7790 +/* 0152E0 700146E0 24C6E610 */ addiu $a2, %lo(__osDevMgrMain) # addiu $a2, $a2, -0x19f0 +/* 0152E4 700146E4 AFB90010 */ sw $t9, 0x10($sp) +/* 0152E8 700146E8 01402025 */ move $a0, $t2 +/* 0152EC 700146EC 00002825 */ move $a1, $zero +/* 0152F0 700146F0 0C00350C */ jal osCreateThread +/* 0152F4 700146F4 AFA80014 */ sw $t0, 0x14($sp) +/* 0152F8 700146F8 3C048006 */ lui $a0, %hi(piThread) +/* 0152FC 700146FC 0C003560 */ jal osStartThread +/* 015300 70014700 24846AD0 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, 0x6ad0 +/* 015304 70014704 0C006184 */ jal __osRestoreInt +/* 015308 70014708 8FA4002C */ lw $a0, 0x2c($sp) +/* 01530C 7001470C 8FA90028 */ lw $t1, 0x28($sp) +/* 015310 70014710 2401FFFF */ li $at, -1 +/* 015314 70014714 11210004 */ beq $t1, $at, .L70014728 +/* 015318 70014718 00000000 */ nop +/* 01531C 7001471C 00002025 */ move $a0, $zero +/* 015320 70014720 0C003600 */ jal osSetThreadPri +/* 015324 70014724 01202825 */ move $a1, $t1 +.L70014728: +/* 015328 70014728 8FBF001C */ lw $ra, 0x1c($sp) +/* 01532C 7001472C 27BD0030 */ addiu $sp, $sp, 0x30 +/* 015330 70014730 03E00008 */ jr $ra +/* 015334 70014734 00000000 */ nop +.endif +.ifdef VERSION_EU +glabel osCreatePiManager +/* 0026F0 70001AF0 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 0026F4 70001AF4 AFB00020 */ sw $s0, 0x20($sp) +/* 0026F8 70001AF8 3C108002 */ lui $s0, %hi(__osPiDevMgr) # $s0, 0x8002 +/* 0026FC 70001AFC 26100FB0 */ addiu $s0, %lo(__osPiDevMgr) # addiu $s0, $s0, 0xfb0 +/* 002700 70001B00 8E0E0000 */ lw $t6, ($s0) +/* 002704 70001B04 AFBF0024 */ sw $ra, 0x24($sp) +/* 002708 70001B08 AFA40030 */ sw $a0, 0x30($sp) +/* 00270C 70001B0C AFA50034 */ sw $a1, 0x34($sp) +/* 002710 70001B10 15C0004E */ bnez $t6, .L70001C4C +/* 002714 70001B14 AFA60038 */ sw $a2, 0x38($sp) +/* 002718 70001B18 00A02025 */ move $a0, $a1 +/* 00271C 70001B1C 00C02825 */ move $a1, $a2 +/* 002720 70001B20 0C00310C */ jal osCreateMesgQueue +/* 002724 70001B24 00E03025 */ move $a2, $a3 +/* 002728 70001B28 3C048005 */ lui $a0, %hi(pieventQueue) # $a0, 0x8005 +/* 00272C 70001B2C 3C058005 */ lui $a1, %hi(piEventBuf) # $a1, 0x8005 +/* 002730 70001B30 24A52598 */ addiu $a1, %lo(piEventBuf) # addiu $a1, $a1, 0x2598 +/* 002734 70001B34 24842580 */ addiu $a0, %lo(pieventQueue) # addiu $a0, $a0, 0x2580 +/* 002738 70001B38 0C00310C */ jal osCreateMesgQueue +/* 00273C 70001B3C 24060001 */ li $a2, 1 +/* 002740 70001B40 3C0F8002 */ lui $t7, %hi(__osPiAccessQueueEnabled) # $t7, 0x8002 +/* 002744 70001B44 8DEF31D0 */ lw $t7, %lo(__osPiAccessQueueEnabled)($t7) +/* 002748 70001B48 15E00003 */ bnez $t7, .L70001B58 +/* 00274C 70001B4C 00000000 */ nop +/* 002750 70001B50 0C0036D8 */ jal __osPiCreateAccessQueue +/* 002754 70001B54 00000000 */ nop +.L70001B58: +/* 002758 70001B58 3C058005 */ lui $a1, %hi(pieventQueue) # $a1, 0x8005 +/* 00275C 70001B5C 3C062222 */ lui $a2, (0x22222222 >> 16) # lui $a2, 0x2222 +/* 002760 70001B60 34C62222 */ ori $a2, (0x22222222 & 0xFFFF) # ori $a2, $a2, 0x2222 +/* 002764 70001B64 24A52580 */ addiu $a1, %lo(pieventQueue) # addiu $a1, $a1, 0x2580 +/* 002768 70001B68 0C003194 */ jal osSetEventMesg +/* 00276C 70001B6C 24040008 */ li $a0, 8 +/* 002770 70001B70 2418FFFF */ li $t8, -1 +/* 002774 70001B74 AFB80028 */ sw $t8, 0x28($sp) +/* 002778 70001B78 0C0035A0 */ jal osGetThreadPri +/* 00277C 70001B7C 00002025 */ move $a0, $zero +/* 002780 70001B80 8FB90030 */ lw $t9, 0x30($sp) +/* 002784 70001B84 00002025 */ move $a0, $zero +/* 002788 70001B88 0059082A */ slt $at, $v0, $t9 +/* 00278C 70001B8C 10200003 */ beqz $at, .L70001B9C +/* 002790 70001B90 03202825 */ move $a1, $t9 +/* 002794 70001B94 0C003158 */ jal osSetThreadPri +/* 002798 70001B98 AFA20028 */ sw $v0, 0x28($sp) +.L70001B9C: +/* 00279C 70001B9C 0C0035A8 */ jal __osDisableInt +/* 0027A0 70001BA0 00000000 */ nop +/* 0027A4 70001BA4 8FA90034 */ lw $t1, 0x34($sp) +/* 0027A8 70001BA8 8FAF0030 */ lw $t7, 0x30($sp) +/* 0027AC 70001BAC 3C048005 */ lui $a0, %hi(piThread) # $a0, 0x8005 +/* 0027B0 70001BB0 3C0A8005 */ lui $t2, %hi(pieventQueue) # $t2, 0x8005 +/* 0027B4 70001BB4 3C0B8005 */ lui $t3, %hi(__osPiAccessQueue) # $t3, 0x8005 +/* 0027B8 70001BB8 3C0C7001 */ lui $t4, %hi(osPiRawStartDma) # $t4, 0x7001 +/* 0027BC 70001BBC 3C0D7001 */ lui $t5, %hi(osEPiRawStartDma) # $t5, 0x7001 +/* 0027C0 70001BC0 3C0E8005 */ lui $t6, %hi(pieventQueue) # $t6, 0x8005 +/* 0027C4 70001BC4 248422D0 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, 0x22d0 +/* 0027C8 70001BC8 24080001 */ li $t0, 1 +/* 0027CC 70001BCC 254A2580 */ addiu $t2, %lo(pieventQueue) # addiu $t2, $t2, 0x2580 +/* 0027D0 70001BD0 256B7CA8 */ addiu $t3, %lo(__osPiAccessQueue) # addiu $t3, $t3, 0x7ca8 +/* 0027D4 70001BD4 258CBCF0 */ addiu $t4, %lo(osPiRawStartDma) # addiu $t4, $t4, -0x4310 +/* 0027D8 70001BD8 25ADDC20 */ addiu $t5, %lo(osEPiRawStartDma) # addiu $t5, $t5, -0x23e0 +/* 0027DC 70001BDC 25CE2580 */ addiu $t6, %lo(pieventQueue) # addiu $t6, $t6, 0x2580 +/* 0027E0 70001BE0 3C067001 */ lui $a2, %hi(__osDevMgrMain) # $a2, 0x7001 +/* 0027E4 70001BE4 AFA2002C */ sw $v0, 0x2c($sp) +/* 0027E8 70001BE8 AE080000 */ sw $t0, ($s0) +/* 0027EC 70001BEC AE040004 */ sw $a0, 4($s0) +/* 0027F0 70001BF0 AE0A000C */ sw $t2, 0xc($s0) +/* 0027F4 70001BF4 AE0B0010 */ sw $t3, 0x10($s0) +/* 0027F8 70001BF8 AE0C0014 */ sw $t4, 0x14($s0) +/* 0027FC 70001BFC AE0D0018 */ sw $t5, 0x18($s0) +/* 002800 70001C00 24C6DD00 */ addiu $a2, %lo(__osDevMgrMain) # addiu $a2, $a2, -0x2300 +/* 002804 70001C04 AFAE0010 */ sw $t6, 0x10($sp) +/* 002808 70001C08 00002825 */ move $a1, $zero +/* 00280C 70001C0C 02003825 */ move $a3, $s0 +/* 002810 70001C10 AE090008 */ sw $t1, 8($s0) +/* 002814 70001C14 0C003064 */ jal osCreateThread +/* 002818 70001C18 AFAF0014 */ sw $t7, 0x14($sp) +/* 00281C 70001C1C 3C048005 */ lui $a0, %hi(piThread) # $a0, 0x8005 +/* 002820 70001C20 0C0030B8 */ jal osStartThread +/* 002824 70001C24 248422D0 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, 0x22d0 +/* 002828 70001C28 0C0035B0 */ jal __osRestoreInt +/* 00282C 70001C2C 8FA4002C */ lw $a0, 0x2c($sp) +/* 002830 70001C30 8FB80028 */ lw $t8, 0x28($sp) +/* 002834 70001C34 2401FFFF */ li $at, -1 +/* 002838 70001C38 00002025 */ move $a0, $zero +/* 00283C 70001C3C 53010004 */ beql $t8, $at, .L70001C50 +/* 002840 70001C40 8FBF0024 */ lw $ra, 0x24($sp) +/* 002844 70001C44 0C003158 */ jal osSetThreadPri +/* 002848 70001C48 03002825 */ move $a1, $t8 +.L70001C4C: +/* 00284C 70001C4C 8FBF0024 */ lw $ra, 0x24($sp) +.L70001C50: +/* 002850 70001C50 8FB00020 */ lw $s0, 0x20($sp) +/* 002854 70001C54 27BD0030 */ addiu $sp, $sp, 0x30 +/* 002858 70001C58 03E00008 */ jr $ra +/* 00285C 70001C5C 00000000 */ nop +.endif + + +.section .data +glabel __osPiDevMgr +glabel __osPiDevMgr.active +.word 0 +glabel __osPiDevMgr.thread +.word 0 +glabel __osPiDevMgr.cmdQueue +.word 0 +glabel __osPiDevMgr.evtQueue +.word 0 +glabel __osPiDevMgr.acsQueue +.word 0 +glabel __osPiDevMgr.dma +.word 0 +glabel __osPiDevMgr.edma +.word 0 + + +glabel __osPiTable +.word 0 + +.section .bss +glabel piThread +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 +.word 0,0,0,0 + +glabel piThreadStack +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 +.word 0, 0, 0, 0 + +glabel pieventQueue +.word 0, 0, 0, 0, 0, 0 + +glabel piEventBuf +.word 0, 0 diff --git a/src/libultra/osCreateThread.s b/src/libultra/osCreateThread.s new file mode 100644 index 0000000..ec21813 --- /dev/null +++ b/src/libultra/osCreateThread.s @@ -0,0 +1,92 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osCreateThread +/* 00E030 7000D430 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00E034 7000D434 AFA40028 */ sw $a0, 0x28($sp) +/* 00E038 7000D438 AFA5002C */ sw $a1, 0x2c($sp) +/* 00E03C 7000D43C 8FAE002C */ lw $t6, 0x2c($sp) +/* 00E040 7000D440 8FAF0028 */ lw $t7, 0x28($sp) +/* 00E044 7000D444 AFBF001C */ sw $ra, 0x1c($sp) +/* 00E048 7000D448 AFA60030 */ sw $a2, 0x30($sp) +/* 00E04C 7000D44C AFA70034 */ sw $a3, 0x34($sp) +/* 00E050 7000D450 AFB00018 */ sw $s0, 0x18($sp) +/* 00E054 7000D454 ADEE0014 */ sw $t6, 0x14($t7) +/* 00E058 7000D458 8FB90028 */ lw $t9, 0x28($sp) +/* 00E05C 7000D45C 8FB8003C */ lw $t8, 0x3c($sp) +/* 00E060 7000D460 AF380004 */ sw $t8, 4($t9) +/* 00E064 7000D464 8FA80028 */ lw $t0, 0x28($sp) +/* 00E068 7000D468 AD000000 */ sw $zero, ($t0) +/* 00E06C 7000D46C 8FA90028 */ lw $t1, 0x28($sp) +/* 00E070 7000D470 AD200008 */ sw $zero, 8($t1) +/* 00E074 7000D474 8FAB0028 */ lw $t3, 0x28($sp) +/* 00E078 7000D478 8FAA0030 */ lw $t2, 0x30($sp) +/* 00E07C 7000D47C AD6A011C */ sw $t2, 0x11c($t3) +/* 00E080 7000D480 8FAC0034 */ lw $t4, 0x34($sp) +/* 00E084 7000D484 8FAD0028 */ lw $t5, 0x28($sp) +/* 00E088 7000D488 01807825 */ move $t7, $t4 +/* 00E08C 7000D48C 000C77C3 */ sra $t6, $t4, 0x1f +/* 00E090 7000D490 ADAE0038 */ sw $t6, 0x38($t5) +/* 00E094 7000D494 ADAF003C */ sw $t7, 0x3c($t5) +/* 00E098 7000D498 8FB80038 */ lw $t8, 0x38($sp) +/* 00E09C 7000D49C 8FB90028 */ lw $t9, 0x28($sp) +/* 00E0A0 7000D4A0 3C0C7001 */ lui $t4, %hi(__osCleanupThread) # $t4, 0x7001 +/* 00E0A4 7000D4A4 03004825 */ move $t1, $t8 +/* 00E0A8 7000D4A8 2D210010 */ sltiu $at, $t1, 0x10 +/* 00E0AC 7000D4AC 001847C3 */ sra $t0, $t8, 0x1f +/* 00E0B0 7000D4B0 01015023 */ subu $t2, $t0, $at +/* 00E0B4 7000D4B4 252BFFF0 */ addiu $t3, $t1, -0x10 +/* 00E0B8 7000D4B8 AF2B00F4 */ sw $t3, 0xf4($t9) +/* 00E0BC 7000D4BC AF2A00F0 */ sw $t2, 0xf0($t9) +/* 00E0C0 7000D4C0 8FAD0028 */ lw $t5, 0x28($sp) +/* 00E0C4 7000D4C4 258C0A80 */ addiu $t4, %lo(__osCleanupThread) # addiu $t4, $t4, 0xa80 +/* 00E0C8 7000D4C8 01807825 */ move $t7, $t4 +/* 00E0CC 7000D4CC 000C77C3 */ sra $t6, $t4, 0x1f +/* 00E0D0 7000D4D0 ADAE0100 */ sw $t6, 0x100($t5) +/* 00E0D4 7000D4D4 ADAF0104 */ sw $t7, 0x104($t5) +/* 00E0D8 7000D4D8 8FA90028 */ lw $t1, 0x28($sp) +/* 00E0DC 7000D4DC 3C18003F */ lui $t8, (0x003FFF01 >> 16) # lui $t8, 0x3f +/* 00E0E0 7000D4E0 3718FF01 */ ori $t8, (0x003FFF01 & 0xFFFF) # ori $t8, $t8, 0xff01 +/* 00E0E4 7000D4E4 AFB80020 */ sw $t8, 0x20($sp) +/* 00E0E8 7000D4E8 3408FF03 */ li $t0, 65283 +/* 00E0EC 7000D4EC AD280118 */ sw $t0, 0x118($t1) +/* 00E0F0 7000D4F0 8FAA0020 */ lw $t2, 0x20($sp) +/* 00E0F4 7000D4F4 8FAC0028 */ lw $t4, 0x28($sp) +/* 00E0F8 7000D4F8 3C01003F */ lui $at, 0x3f +/* 00E0FC 7000D4FC 01415824 */ and $t3, $t2, $at +/* 00E100 7000D500 000BCC02 */ srl $t9, $t3, 0x10 +/* 00E104 7000D504 AD990128 */ sw $t9, 0x128($t4) +/* 00E108 7000D508 8FAF0028 */ lw $t7, 0x28($sp) +/* 00E10C 7000D50C 3C0E0100 */ lui $t6, (0x01000800 >> 16) # lui $t6, 0x100 +/* 00E110 7000D510 35CE0800 */ ori $t6, (0x01000800 & 0xFFFF) # ori $t6, $t6, 0x800 +/* 00E114 7000D514 ADEE012C */ sw $t6, 0x12c($t7) +/* 00E118 7000D518 8FAD0028 */ lw $t5, 0x28($sp) +/* 00E11C 7000D51C 24180001 */ li $t8, 1 +/* 00E120 7000D520 ADA00018 */ sw $zero, 0x18($t5) +/* 00E124 7000D524 8FA80028 */ lw $t0, 0x28($sp) +/* 00E128 7000D528 A5180010 */ sh $t8, 0x10($t0) +/* 00E12C 7000D52C 8FA90028 */ lw $t1, 0x28($sp) +/* 00E130 7000D530 0C00617C */ jal __osDisableInt +/* 00E134 7000D534 A5200012 */ sh $zero, 0x12($t1) +/* 00E138 7000D538 3C0A8002 */ lui $t2, %hi(__osActiveQueue) +/* 00E13C 7000D53C 8D4A772C */ lw $t2, %lo(__osActiveQueue)($t2) +/* 00E140 7000D540 8FAB0028 */ lw $t3, 0x28($sp) +/* 00E144 7000D544 00408025 */ move $s0, $v0 +/* 00E148 7000D548 3C018002 */ lui $at, %hi(__osActiveQueue) +/* 00E14C 7000D54C AD6A000C */ sw $t2, 0xc($t3) +/* 00E150 7000D550 8FB90028 */ lw $t9, 0x28($sp) +/* 00E154 7000D554 02002025 */ move $a0, $s0 +/* 00E158 7000D558 0C006184 */ jal __osRestoreInt +/* 00E15C 7000D55C AC39772C */ sw $t9, %lo(__osActiveQueue)($at) +/* 00E160 7000D560 8FBF001C */ lw $ra, 0x1c($sp) +/* 00E164 7000D564 8FB00018 */ lw $s0, 0x18($sp) +/* 00E168 7000D568 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00E16C 7000D56C 03E00008 */ jr $ra +/* 00E170 7000D570 00000000 */ nop diff --git a/src/libultra/osCreateViManager.s b/src/libultra/osCreateViManager.s new file mode 100644 index 0000000..8573492 --- /dev/null +++ b/src/libultra/osCreateViManager.s @@ -0,0 +1,1625 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +.ifndef VERSION_EU +glabel osCreateViManager +/* 00E4F0 7000D8F0 3C0E8002 */ lui $t6, %hi(__osViDevMgr) +/* 00E4F4 7000D8F4 8DCE69A0 */ lw $t6, %lo(__osViDevMgr)($t6) +/* 00E4F8 7000D8F8 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 00E4FC 7000D8FC AFBF001C */ sw $ra, 0x1c($sp) +/* 00E500 7000D900 15C00059 */ bnez $t6, .L7000DA68 +/* 00E504 7000D904 AFA40030 */ sw $a0, 0x30($sp) +/* 00E508 7000D908 0C00618C */ jal __osTimerServicesInit +/* 00E50C 7000D90C 00000000 */ nop +/* 00E510 7000D910 3C048006 */ lui $a0, %hi(viEventQueue) +/* 00E514 7000D914 3C058006 */ lui $a1, %hi(viEventBuf) +/* 00E518 7000D918 24A569B8 */ addiu $a1, %lo(viEventBuf) # addiu $a1, $a1, 0x69b8 +/* 00E51C 7000D91C 248469A0 */ addiu $a0, %lo(viEventQueue) # addiu $a0, $a0, 0x69a0 +/* 00E520 7000D920 0C0035B4 */ jal osCreateMesgQueue +/* 00E524 7000D924 24060005 */ li $a2, 5 +/* 00E528 7000D928 3C018006 */ lui $at, %hi(viRetraceMsg+0x4) +/* 00E52C 7000D92C 240F000D */ li $t7, 13 +/* 00E530 7000D930 A42F69D0 */ sh $t7, %lo(viRetraceMsg)($at) +/* 00E534 7000D934 A02069D2 */ sb $zero, %lo(viRetraceMsg+0x2)($at) +/* 00E538 7000D938 AC2069D4 */ sw $zero, %lo(viRetraceMsg+0x4)($at) +/* 00E53C 7000D93C 3C018006 */ lui $at, %hi(viCounterMsg+0x4) +/* 00E540 7000D940 2418000E */ li $t8, 14 +/* 00E544 7000D944 3C058006 */ lui $a1, %hi(viEventQueue) +/* 00E548 7000D948 3C068006 */ lui $a2, %hi(viRetraceMsg) +/* 00E54C 7000D94C A43869E8 */ sh $t8, %lo(viCounterMsg)($at) +/* 00E550 7000D950 A02069EA */ sb $zero, %lo(viCounterMsg+0x2)($at) +/* 00E554 7000D954 AC2069EC */ sw $zero, %lo(viCounterMsg+0x4)($at) +/* 00E558 7000D958 24C669D0 */ addiu $a2, %lo(viRetraceMsg) # addiu $a2, $a2, 0x69d0 +/* 00E55C 7000D95C 24A569A0 */ addiu $a1, %lo(viEventQueue) # addiu $a1, $a1, 0x69a0 +/* 00E560 7000D960 0C003714 */ jal osSetEventMesg +/* 00E564 7000D964 24040007 */ li $a0, 7 +/* 00E568 7000D968 3C058006 */ lui $a1, %hi(viEventQueue) +/* 00E56C 7000D96C 3C068006 */ lui $a2, %hi(viCounterMsg) +/* 00E570 7000D970 24C669E8 */ addiu $a2, %lo(viCounterMsg) # addiu $a2, $a2, 0x69e8 +/* 00E574 7000D974 24A569A0 */ addiu $a1, %lo(viEventQueue) # addiu $a1, $a1, 0x69a0 +/* 00E578 7000D978 0C003714 */ jal osSetEventMesg +/* 00E57C 7000D97C 24040003 */ li $a0, 3 +/* 00E580 7000D980 2419FFFF */ li $t9, -1 +/* 00E584 7000D984 AFB90028 */ sw $t9, 0x28($sp) +/* 00E588 7000D988 0C00628C */ jal osGetThreadPri +/* 00E58C 7000D98C 00002025 */ move $a0, $zero +/* 00E590 7000D990 AFA20024 */ sw $v0, 0x24($sp) +/* 00E594 7000D994 8FA80024 */ lw $t0, 0x24($sp) +/* 00E598 7000D998 8FA90030 */ lw $t1, 0x30($sp) +/* 00E59C 7000D99C 0109082A */ slt $at, $t0, $t1 +/* 00E5A0 7000D9A0 10200005 */ beqz $at, .L7000D9B8 +/* 00E5A4 7000D9A4 00000000 */ nop +/* 00E5A8 7000D9A8 AFA80028 */ sw $t0, 0x28($sp) +/* 00E5AC 7000D9AC 00002025 */ move $a0, $zero +/* 00E5B0 7000D9B0 0C003600 */ jal osSetThreadPri +/* 00E5B4 7000D9B4 01202825 */ move $a1, $t1 +.L7000D9B8: +/* 00E5B8 7000D9B8 0C00617C */ jal __osDisableInt +/* 00E5BC 7000D9BC 00000000 */ nop +/* 00E5C0 7000D9C0 3C018002 */ lui $at, %hi(D_800269AC) +/* 00E5C4 7000D9C4 3C0C8006 */ lui $t4, %hi(viEventQueue) +/* 00E5C8 7000D9C8 3C0B8006 */ lui $t3, %hi(viThread) +/* 00E5CC 7000D9CC 258C69A0 */ addiu $t4, %lo(viEventQueue) # addiu $t4, $t4, 0x69a0 +/* 00E5D0 7000D9D0 240A0001 */ li $t2, 1 +/* 00E5D4 7000D9D4 256B57F0 */ addiu $t3, %lo(viThread) # addiu $t3, $t3, 0x57f0 +/* 00E5D8 7000D9D8 AC2A69A0 */ sw $t2, %lo(__osViDevMgr)($at) +/* 00E5DC 7000D9DC AC2B69A4 */ sw $t3, %lo(D_800269A4)($at) +/* 00E5E0 7000D9E0 AC2C69A8 */ sw $t4, %lo(D_800269A8)($at) +/* 00E5E4 7000D9E4 AC2C69AC */ sw $t4, %lo(D_800269AC)($at) +/* 00E5E8 7000D9E8 3C0D8006 */ lui $t5, %hi(viThreadStack) +/* 00E5EC 7000D9EC 8FAF0030 */ lw $t7, 0x30($sp) +/* 00E5F0 7000D9F0 3C018002 */ lui $at, %hi(D_800269B8) +/* 00E5F4 7000D9F4 25AD59A0 */ addiu $t5, %lo(viThreadStack) # addiu $t5, $t5, 0x59a0 +/* 00E5F8 7000D9F8 25AE1000 */ addiu $t6, $t5, 0x1000 +/* 00E5FC 7000D9FC 3C067001 */ lui $a2, %hi(viMgrMain) # $a2, 0x7001 +/* 00E600 7000DA00 3C078002 */ lui $a3, %hi(__osViDevMgr) +/* 00E604 7000DA04 AFA2002C */ sw $v0, 0x2c($sp) +/* 00E608 7000DA08 AC2069B0 */ sw $zero, %lo(D_800269B0)($at) +/* 00E60C 7000DA0C AC2069B4 */ sw $zero, %lo(D_800269B4)($at) +/* 00E610 7000DA10 AC2069B8 */ sw $zero, %lo(D_800269B8)($at) +/* 00E614 7000DA14 24E769A0 */ addiu $a3, %lo(__osViDevMgr) # addiu $a3, $a3, 0x69a0 +/* 00E618 7000DA18 24C6DA78 */ addiu $a2, %lo(viMgrMain) # addiu $a2, $a2, -0x2588 +/* 00E61C 7000DA1C AFAE0010 */ sw $t6, 0x10($sp) +/* 00E620 7000DA20 01602025 */ move $a0, $t3 +/* 00E624 7000DA24 00002825 */ move $a1, $zero +/* 00E628 7000DA28 0C00350C */ jal osCreateThread +/* 00E62C 7000DA2C AFAF0014 */ sw $t7, 0x14($sp) +/* 00E630 7000DA30 0C006294 */ jal __osViInit +/* 00E634 7000DA34 00000000 */ nop +/* 00E638 7000DA38 3C048006 */ lui $a0, %hi(viThread) +/* 00E63C 7000DA3C 0C003560 */ jal osStartThread +/* 00E640 7000DA40 248457F0 */ addiu $a0, %lo(viThread) # addiu $a0, $a0, 0x57f0 +/* 00E644 7000DA44 0C006184 */ jal __osRestoreInt +/* 00E648 7000DA48 8FA4002C */ lw $a0, 0x2c($sp) +/* 00E64C 7000DA4C 8FB80028 */ lw $t8, 0x28($sp) +/* 00E650 7000DA50 2401FFFF */ li $at, -1 +/* 00E654 7000DA54 13010004 */ beq $t8, $at, .L7000DA68 +/* 00E658 7000DA58 00000000 */ nop +/* 00E65C 7000DA5C 00002025 */ move $a0, $zero +/* 00E660 7000DA60 0C003600 */ jal osSetThreadPri +/* 00E664 7000DA64 03002825 */ move $a1, $t8 +.L7000DA68: +/* 00E668 7000DA68 8FBF001C */ lw $ra, 0x1c($sp) +/* 00E66C 7000DA6C 27BD0030 */ addiu $sp, $sp, 0x30 +/* 00E670 7000DA70 03E00008 */ jr $ra +/* 00E674 7000DA74 00000000 */ nop +.endif +.ifdef VERSION_EU +glabel osCreateViManager +/* 0023E0 700017E0 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 0023E4 700017E4 AFB00020 */ sw $s0, 0x20($sp) +/* 0023E8 700017E8 3C108002 */ lui $s0, %hi(__osViDevMgr) # $s0, 0x8002 +/* 0023EC 700017EC 26100F90 */ addiu $s0, %lo(__osViDevMgr) # addiu $s0, $s0, 0xf90 +/* 0023F0 700017F0 8E0E0000 */ lw $t6, ($s0) +/* 0023F4 700017F4 AFBF0024 */ sw $ra, 0x24($sp) +/* 0023F8 700017F8 AFA40030 */ sw $a0, 0x30($sp) +/* 0023FC 700017FC 55C00052 */ bnezl $t6, .L70001948 +/* 002400 70001800 8FBF0024 */ lw $ra, 0x24($sp) +/* 002404 70001804 0C0034A0 */ jal __osTimerServicesInit +/* 002408 70001808 00000000 */ nop +/* 00240C 7000180C 3C048005 */ lui $a0, %hi(viEventQueue) # $a0, 0x8005 +/* 002410 70001810 3C058005 */ lui $a1, %hi(viEventBuf) # $a1, 0x8005 +/* 002414 70001814 24A52278 */ addiu $a1, %lo(viEventBuf) # addiu $a1, $a1, 0x2278 +/* 002418 70001818 24842260 */ addiu $a0, %lo(viEventQueue) # addiu $a0, $a0, 0x2260 +/* 00241C 7000181C 0C00310C */ jal osCreateMesgQueue +/* 002420 70001820 24060005 */ li $a2, 5 +/* 002424 70001824 3C068005 */ lui $a2, %hi(viRetraceMsg) # $a2, 0x8005 +/* 002428 70001828 3C078005 */ lui $a3, %hi(viCounterMsg) # $a3, 0x8005 +/* 00242C 7000182C 24E722A8 */ addiu $a3, %lo(viCounterMsg) # addiu $a3, $a3, 0x22a8 +/* 002430 70001830 24C62290 */ addiu $a2, %lo(viRetraceMsg) # addiu $a2, $a2, 0x2290 +/* 002434 70001834 240F000D */ li $t7, 13 +/* 002438 70001838 2418000E */ li $t8, 14 +/* 00243C 7000183C 3C058005 */ lui $a1, %hi(viEventQueue) # $a1, 0x8005 +/* 002440 70001840 A4CF0000 */ sh $t7, ($a2) +/* 002444 70001844 A0C00002 */ sb $zero, 2($a2) +/* 002448 70001848 ACC00004 */ sw $zero, 4($a2) +/* 00244C 7000184C A4F80000 */ sh $t8, ($a3) +/* 002450 70001850 A0E00002 */ sb $zero, 2($a3) +/* 002454 70001854 ACE00004 */ sw $zero, 4($a3) +/* 002458 70001858 24A52260 */ addiu $a1, %lo(viEventQueue) # addiu $a1, $a1, 0x2260 +/* 00245C 7000185C 0C003194 */ jal osSetEventMesg +/* 002460 70001860 24040007 */ li $a0, 7 +/* 002464 70001864 3C078005 */ lui $a3, %hi(viCounterMsg) +/* 002468 70001868 3C058005 */ lui $a1, %hi(viEventQueue) # $a1, 0x8005 +/* 00246C 7000186C 24E622A8 */ addiu $a2, $a3, %lo(viCounterMsg) +/* 002470 70001870 24A52260 */ addiu $a1, %lo(viEventQueue) # addiu $a1, $a1, 0x2260 +/* 002474 70001874 0C003194 */ jal osSetEventMesg +/* 002478 70001878 24040003 */ li $a0, 3 +/* 00247C 7000187C 2419FFFF */ li $t9, -1 +/* 002480 70001880 AFB90028 */ sw $t9, 0x28($sp) +/* 002484 70001884 0C0035A0 */ jal osGetThreadPri +/* 002488 70001888 00002025 */ move $a0, $zero +/* 00248C 7000188C 8FA80030 */ lw $t0, 0x30($sp) +/* 002490 70001890 00002025 */ move $a0, $zero +/* 002494 70001894 0048082A */ slt $at, $v0, $t0 +/* 002498 70001898 10200003 */ beqz $at, .L700018A8 +/* 00249C 7000189C 01002825 */ move $a1, $t0 +/* 0024A0 700018A0 0C003158 */ jal osSetThreadPri +/* 0024A4 700018A4 AFA20028 */ sw $v0, 0x28($sp) +.L700018A8: +/* 0024A8 700018A8 0C0035A8 */ jal __osDisableInt +/* 0024AC 700018AC 00000000 */ nop +/* 0024B0 700018B0 8FAB0030 */ lw $t3, 0x30($sp) +/* 0024B4 700018B4 3C038005 */ lui $v1, %hi(viEventQueue) # $v1, 0x8005 +/* 0024B8 700018B8 3C048005 */ lui $a0, %hi(viThread) # $a0, 0x8005 +/* 0024BC 700018BC 3C0A8005 */ lui $t2, %hi(viEventQueue) # $t2, 0x8005 +/* 0024C0 700018C0 24841FB0 */ addiu $a0, %lo(viThread) # addiu $a0, $a0, 0x1fb0 +/* 0024C4 700018C4 24632260 */ addiu $v1, %lo(viEventQueue) # addiu $v1, $v1, 0x2260 +/* 0024C8 700018C8 24090001 */ li $t1, 1 +/* 0024CC 700018CC 254A2260 */ addiu $t2, %lo(viEventQueue) # addiu $t2, $t2, 0x2260 +/* 0024D0 700018D0 3C067000 */ lui $a2, %hi(viMgrMain) # $a2, 0x7000 +/* 0024D4 700018D4 AFA2002C */ sw $v0, 0x2c($sp) +/* 0024D8 700018D8 AE090000 */ sw $t1, ($s0) +/* 0024DC 700018DC AE040004 */ sw $a0, 4($s0) +/* 0024E0 700018E0 AE030008 */ sw $v1, 8($s0) +/* 0024E4 700018E4 AE03000C */ sw $v1, 0xc($s0) +/* 0024E8 700018E8 AE000010 */ sw $zero, 0x10($s0) +/* 0024EC 700018EC AE000014 */ sw $zero, 0x14($s0) +/* 0024F0 700018F0 AE000018 */ sw $zero, 0x18($s0) +/* 0024F4 700018F4 24C61958 */ addiu $a2, %lo(viMgrMain) # addiu $a2, $a2, 0x1958 +/* 0024F8 700018F8 AFAA0010 */ sw $t2, 0x10($sp) +/* 0024FC 700018FC 00002825 */ move $a1, $zero +/* 002500 70001900 02003825 */ move $a3, $s0 +/* 002504 70001904 0C003064 */ jal osCreateThread +/* 002508 70001908 AFAB0014 */ sw $t3, 0x14($sp) +/* 00250C 7000190C 0C0035B8 */ jal __osViInit +/* 002510 70001910 00000000 */ nop +/* 002514 70001914 3C048005 */ lui $a0, %hi(viThread) # $a0, 0x8005 +/* 002518 70001918 0C0030B8 */ jal osStartThread +/* 00251C 7000191C 24841FB0 */ addiu $a0, %lo(viThread) # addiu $a0, $a0, 0x1fb0 +/* 002520 70001920 0C0035B0 */ jal __osRestoreInt +/* 002524 70001924 8FA4002C */ lw $a0, 0x2c($sp) +/* 002528 70001928 8FAC0028 */ lw $t4, 0x28($sp) +/* 00252C 7000192C 2401FFFF */ li $at, -1 +/* 002530 70001930 00002025 */ move $a0, $zero +/* 002534 70001934 51810004 */ beql $t4, $at, .L70001948 +/* 002538 70001938 8FBF0024 */ lw $ra, 0x24($sp) +/* 00253C 7000193C 0C003158 */ jal osSetThreadPri +/* 002540 70001940 01802825 */ move $a1, $t4 +/* 002544 70001944 8FBF0024 */ lw $ra, 0x24($sp) +.L70001948: +/* 002548 70001948 8FB00020 */ lw $s0, 0x20($sp) +/* 00254C 7000194C 27BD0030 */ addiu $sp, $sp, 0x30 +/* 002550 70001950 03E00008 */ jr $ra +/* 002554 70001954 00000000 */ nop +.endif + +.ifndef VERSION_EU +glabel viMgrMain +/* 00E678 7000DA78 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 00E67C 7000DA7C AFBF001C */ sw $ra, 0x1c($sp) +/* 00E680 7000DA80 AFA40038 */ sw $a0, 0x38($sp) +/* 00E684 7000DA84 AFB00018 */ sw $s0, 0x18($sp) +/* 00E688 7000DA88 AFA0002C */ sw $zero, 0x2c($sp) +/* 00E68C 7000DA8C 0C0062D8 */ jal __osViGetCurrentContext +/* 00E690 7000DA90 AFA00028 */ sw $zero, 0x28($sp) +/* 00E694 7000DA94 AFA20034 */ sw $v0, 0x34($sp) +/* 00E698 7000DA98 8FAE0034 */ lw $t6, 0x34($sp) +/* 00E69C 7000DA9C 3C018006 */ lui $at, %hi(retrace) +/* 00E6A0 7000DAA0 95CF0002 */ lhu $t7, 2($t6) +/* 00E6A4 7000DAA4 15E00004 */ bnez $t7, .L7000DAB8 +/* 00E6A8 7000DAA8 A42F6A00 */ sh $t7, %lo(retrace)($at) +/* 00E6AC 7000DAAC 24180001 */ li $t8, 1 +/* 00E6B0 7000DAB0 3C018006 */ lui $at, %hi(retrace) +/* 00E6B4 7000DAB4 A4386A00 */ sh $t8, %lo(retrace)($at) +.L7000DAB8: +/* 00E6B8 7000DAB8 8FB90038 */ lw $t9, 0x38($sp) +/* 00E6BC 7000DABC AFB90030 */ sw $t9, 0x30($sp) +.L7000DAC0: +/* 00E6C0 7000DAC0 8FA80030 */ lw $t0, 0x30($sp) +/* 00E6C4 7000DAC4 27A5002C */ addiu $a1, $sp, 0x2c +/* 00E6C8 7000DAC8 24060001 */ li $a2, 1 +/* 00E6CC 7000DACC 0C003774 */ jal osRecvMesg +/* 00E6D0 7000DAD0 8D04000C */ lw $a0, 0xc($t0) +/* 00E6D4 7000DAD4 8FA9002C */ lw $t1, 0x2c($sp) +/* 00E6D8 7000DAD8 2401000D */ li $at, 13 +/* 00E6DC 7000DADC 95300000 */ lhu $s0, ($t1) +/* 00E6E0 7000DAE0 12010005 */ beq $s0, $at, .L7000DAF8 +/* 00E6E4 7000DAE4 2401000E */ li $at, 14 +/* 00E6E8 7000DAE8 12010047 */ beq $s0, $at, .L7000DC08 +/* 00E6EC 7000DAEC 00000000 */ nop +/* 00E6F0 7000DAF0 1000FFF3 */ b .L7000DAC0 +/* 00E6F4 7000DAF4 00000000 */ nop +.L7000DAF8: +/* 00E6F8 7000DAF8 0C0062DC */ jal __osViSwapContext +/* 00E6FC 7000DAFC 00000000 */ nop +/* 00E700 7000DB00 3C0A8006 */ lui $t2, %hi(retrace) +/* 00E704 7000DB04 954A6A00 */ lhu $t2, %lo(retrace)($t2) +/* 00E708 7000DB08 3C018006 */ lui $at, %hi(retrace) +/* 00E70C 7000DB0C 254BFFFF */ addiu $t3, $t2, -1 +/* 00E710 7000DB10 316CFFFF */ andi $t4, $t3, 0xffff +/* 00E714 7000DB14 15800010 */ bnez $t4, .L7000DB58 +/* 00E718 7000DB18 A42B6A00 */ sh $t3, %lo(retrace)($at) +/* 00E71C 7000DB1C 0C0062D8 */ jal __osViGetCurrentContext +/* 00E720 7000DB20 00000000 */ nop +/* 00E724 7000DB24 AFA20034 */ sw $v0, 0x34($sp) +/* 00E728 7000DB28 8FAD0034 */ lw $t5, 0x34($sp) +/* 00E72C 7000DB2C 8DAE0010 */ lw $t6, 0x10($t5) +/* 00E730 7000DB30 11C00005 */ beqz $t6, .L7000DB48 +/* 00E734 7000DB34 00000000 */ nop +/* 00E738 7000DB38 01C02025 */ move $a0, $t6 +/* 00E73C 7000DB3C 8DA50014 */ lw $a1, 0x14($t5) +/* 00E740 7000DB40 0C0037C4 */ jal osSendMesg +/* 00E744 7000DB44 00003025 */ move $a2, $zero +.L7000DB48: +/* 00E748 7000DB48 8FAF0034 */ lw $t7, 0x34($sp) +/* 00E74C 7000DB4C 3C018006 */ lui $at, %hi(retrace) +/* 00E750 7000DB50 95F80002 */ lhu $t8, 2($t7) +/* 00E754 7000DB54 A4386A00 */ sh $t8, %lo(retrace)($at) +.L7000DB58: +/* 00E758 7000DB58 3C198007 */ lui $t9, %hi(__osViIntrCount) +/* 00E75C 7000DB5C 8F398E1C */ lw $t9, %lo(__osViIntrCount)($t9) +/* 00E760 7000DB60 8FA90028 */ lw $t1, 0x28($sp) +/* 00E764 7000DB64 3C018007 */ lui $at, %hi(__osViIntrCount) +/* 00E768 7000DB68 27280001 */ addiu $t0, $t9, 1 +/* 00E76C 7000DB6C 1120000C */ beqz $t1, .L7000DBA0 +/* 00E770 7000DB70 AC288E1C */ sw $t0, %lo(__osViIntrCount)($at) +/* 00E774 7000DB74 0C003638 */ jal osGetCount +/* 00E778 7000DB78 00000000 */ nop +/* 00E77C 7000DB7C AFA20024 */ sw $v0, 0x24($sp) +/* 00E780 7000DB80 8FAA0024 */ lw $t2, 0x24($sp) +/* 00E784 7000DB84 240C0000 */ li $t4, 0 +/* 00E788 7000DB88 3C018007 */ lui $at, %hi(__osCurrentTime) +/* 00E78C 7000DB8C AC2C8E10 */ sw $t4, %lo(__osCurrentTime)($at) +/* 00E790 7000DB90 3C018007 */ lui $at, %hi(__osCurrentTime+4) +/* 00E794 7000DB94 01406825 */ move $t5, $t2 +/* 00E798 7000DB98 AC2D8E14 */ sw $t5, %lo(__osCurrentTime+4)($at) +/* 00E79C 7000DB9C AFA00028 */ sw $zero, 0x28($sp) +.L7000DBA0: +/* 00E7A0 7000DBA0 3C0B8007 */ lui $t3, %hi(__osBaseCounter) +/* 00E7A4 7000DBA4 8D6B8E18 */ lw $t3, %lo(__osBaseCounter)($t3) +/* 00E7A8 7000DBA8 0C003638 */ jal osGetCount +/* 00E7AC 7000DBAC AFAB0024 */ sw $t3, 0x24($sp) +/* 00E7B0 7000DBB0 3C018007 */ lui $at, %hi(__osBaseCounter) +/* 00E7B4 7000DBB4 AC228E18 */ sw $v0, %lo(__osBaseCounter)($at) +/* 00E7B8 7000DBB8 3C0E8007 */ lui $t6, %hi(__osBaseCounter) +/* 00E7BC 7000DBBC 8DCE8E18 */ lw $t6, %lo(__osBaseCounter)($t6) +/* 00E7C0 7000DBC0 8FAF0024 */ lw $t7, 0x24($sp) +/* 00E7C4 7000DBC4 3C0B8007 */ lui $t3, %hi(__osCurrentTime+4) +/* 00E7C8 7000DBC8 8D6B8E14 */ lw $t3, %lo(__osCurrentTime+4)($t3) +/* 00E7CC 7000DBCC 01CFC023 */ subu $t8, $t6, $t7 +/* 00E7D0 7000DBD0 03004825 */ move $t1, $t8 +/* 00E7D4 7000DBD4 3C0A8007 */ lui $t2, %hi(__osCurrentTime) +/* 00E7D8 7000DBD8 012B6821 */ addu $t5, $t1, $t3 +/* 00E7DC 7000DBDC 8D4A8E10 */ lw $t2, %lo(__osCurrentTime)($t2) +/* 00E7E0 7000DBE0 24080000 */ li $t0, 0 +/* 00E7E4 7000DBE4 01AB082B */ sltu $at, $t5, $t3 +/* 00E7E8 7000DBE8 00286021 */ addu $t4, $at, $t0 +/* 00E7EC 7000DBEC 3C018007 */ lui $at, %hi(__osCurrentTime) +/* 00E7F0 7000DBF0 018A6021 */ addu $t4, $t4, $t2 +/* 00E7F4 7000DBF4 AC2C8E10 */ sw $t4, %lo(__osCurrentTime)($at) +/* 00E7F8 7000DBF8 3C018007 */ lui $at, %hi(__osCurrentTime+4) +/* 00E7FC 7000DBFC AFB80024 */ sw $t8, 0x24($sp) +/* 00E800 7000DC00 1000FFAF */ b .L7000DAC0 +/* 00E804 7000DC04 AC2D8E14 */ sw $t5, %lo(__osCurrentTime+4)($at) +.L7000DC08: +/* 00E808 7000DC08 0C0061AF */ jal __osTimerInterrupt +/* 00E80C 7000DC0C 00000000 */ nop +/* 00E810 7000DC10 1000FFAB */ b .L7000DAC0 +/* 00E814 7000DC14 00000000 */ nop +/* 00E818 7000DC18 00000000 */ nop +/* 00E81C 7000DC1C 00000000 */ nop +/* 00E820 7000DC20 00000000 */ nop +/* 00E824 7000DC24 00000000 */ nop +/* 00E828 7000DC28 00000000 */ nop +/* 00E82C 7000DC2C 00000000 */ nop +/* 00E830 7000DC30 8FBF001C */ lw $ra, 0x1c($sp) +/* 00E834 7000DC34 8FB00018 */ lw $s0, 0x18($sp) +/* 00E838 7000DC38 27BD0038 */ addiu $sp, $sp, 0x38 +/* 00E83C 7000DC3C 03E00008 */ jr $ra +/* 00E840 7000DC40 00000000 */ nop +.endif +.ifdef VERSION_EU +glabel viMgrMain +/* 002558 70001958 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 00255C 7000195C AFBF0034 */ sw $ra, 0x34($sp) +/* 002560 70001960 AFB70030 */ sw $s7, 0x30($sp) +/* 002564 70001964 0080B825 */ move $s7, $a0 +/* 002568 70001968 AFB6002C */ sw $s6, 0x2c($sp) +/* 00256C 7000196C AFB50028 */ sw $s5, 0x28($sp) +/* 002570 70001970 AFB40024 */ sw $s4, 0x24($sp) +/* 002574 70001974 AFB30020 */ sw $s3, 0x20($sp) +/* 002578 70001978 AFB2001C */ sw $s2, 0x1c($sp) +/* 00257C 7000197C AFB10018 */ sw $s1, 0x18($sp) +/* 002580 70001980 AFB00014 */ sw $s0, 0x14($sp) +/* 002584 70001984 0C0035FC */ jal __osViGetCurrentContext +/* 002588 70001988 AFA00044 */ sw $zero, 0x44($sp) +/* 00258C 7000198C 94430002 */ lhu $v1, 2($v0) +/* 002590 70001990 3C018005 */ lui $at, %hi(retrace) # $at, 0x8005 +/* 002594 70001994 2416000E */ li $s6, 14 +/* 002598 70001998 14600004 */ bnez $v1, .L700019AC +/* 00259C 7000199C A42322C0 */ sh $v1, %lo(retrace)($at) +/* 0025A0 700019A0 24030001 */ li $v1, 1 +/* 0025A4 700019A4 3C018005 */ lui $at, %hi(retrace) # $at, 0x8005 +/* 0025A8 700019A8 A42322C0 */ sh $v1, %lo(retrace)($at) +.L700019AC: +/* 0025AC 700019AC 3C138005 */ lui $s3, %hi(__osViIntrCount) # $s3, 0x8005 +/* 0025B0 700019B0 3C128005 */ lui $s2, %hi(__osBaseCounter) # $s2, 0x8005 +/* 0025B4 700019B4 3C118005 */ lui $s1, %hi(__osCurrentTime) # $s1, 0x8005 +/* 0025B8 700019B8 26317C80 */ addiu $s1, %lo(__osCurrentTime) # addiu $s1, $s1, 0x7c80 +/* 0025BC 700019BC 26527C88 */ addiu $s2, %lo(__osBaseCounter) # addiu $s2, $s2, 0x7c88 +/* 0025C0 700019C0 26737C8C */ addiu $s3, %lo(__osViIntrCount) # addiu $s3, $s3, 0x7c8c +/* 0025C4 700019C4 2415000D */ li $s5, 13 +/* 0025C8 700019C8 27B40044 */ addiu $s4, $sp, 0x44 +.L700019CC: +/* 0025CC 700019CC 8EE4000C */ lw $a0, 0xc($s7) +.L700019D0: +/* 0025D0 700019D0 02802825 */ move $a1, $s4 +/* 0025D4 700019D4 0C0031F4 */ jal osRecvMesg +/* 0025D8 700019D8 24060001 */ li $a2, 1 +/* 0025DC 700019DC 8FAE0044 */ lw $t6, 0x44($sp) +/* 0025E0 700019E0 95C30000 */ lhu $v1, ($t6) +/* 0025E4 700019E4 10750005 */ beq $v1, $s5, .L700019FC +/* 0025E8 700019E8 00000000 */ nop +/* 0025EC 700019EC 1076002A */ beq $v1, $s6, .L70001A98 +/* 0025F0 700019F0 00000000 */ nop +/* 0025F4 700019F4 1000FFF6 */ b .L700019D0 +/* 0025F8 700019F8 8EE4000C */ lw $a0, 0xc($s7) +.L700019FC: +/* 0025FC 700019FC 0C003600 */ jal __osViSwapContext +/* 002600 70001A00 00000000 */ nop +/* 002604 70001A04 3C038005 */ lui $v1, %hi(retrace) # $v1, 0x8005 +/* 002608 70001A08 946322C0 */ lhu $v1, %lo(retrace)($v1) +/* 00260C 70001A0C 3C018005 */ lui $at, %hi(retrace) # $at, 0x8005 +/* 002610 70001A10 2463FFFF */ addiu $v1, $v1, -1 +/* 002614 70001A14 306FFFFF */ andi $t7, $v1, 0xffff +/* 002618 70001A18 15E0000E */ bnez $t7, .L70001A54 +/* 00261C 70001A1C A42F22C0 */ sh $t7, %lo(retrace)($at) +/* 002620 70001A20 0C0035FC */ jal __osViGetCurrentContext +/* 002624 70001A24 00000000 */ nop +/* 002628 70001A28 8C580010 */ lw $t8, 0x10($v0) +/* 00262C 70001A2C 00408025 */ move $s0, $v0 +/* 002630 70001A30 00003025 */ move $a2, $zero +/* 002634 70001A34 53000005 */ beql $t8, $zero, .L70001A4C +/* 002638 70001A38 96030002 */ lhu $v1, 2($s0) +/* 00263C 70001A3C 8C440010 */ lw $a0, 0x10($v0) +/* 002640 70001A40 0C003244 */ jal osSendMesg +/* 002644 70001A44 8C450014 */ lw $a1, 0x14($v0) +/* 002648 70001A48 96030002 */ lhu $v1, 2($s0) +.L70001A4C: +/* 00264C 70001A4C 3C018005 */ lui $at, %hi(retrace) # $at, 0x8005 +/* 002650 70001A50 A42322C0 */ sh $v1, %lo(retrace)($at) +.L70001A54: +/* 002654 70001A54 8E790000 */ lw $t9, ($s3) +/* 002658 70001A58 8E500000 */ lw $s0, ($s2) +/* 00265C 70001A5C 27280001 */ addiu $t0, $t9, 1 +/* 002660 70001A60 0C003190 */ jal osGetCount +/* 002664 70001A64 AE680000 */ sw $t0, ($s3) +/* 002668 70001A68 8E2D0004 */ lw $t5, 4($s1) +/* 00266C 70001A6C 00508023 */ subu $s0, $v0, $s0 +/* 002670 70001A70 8E2C0000 */ lw $t4, ($s1) +/* 002674 70001A74 020D7821 */ addu $t7, $s0, $t5 +/* 002678 70001A78 240A0000 */ li $t2, 0 +/* 00267C 70001A7C 01ED082B */ sltu $at, $t7, $t5 +/* 002680 70001A80 002A7021 */ addu $t6, $at, $t2 +/* 002684 70001A84 01CC7021 */ addu $t6, $t6, $t4 +/* 002688 70001A88 AE420000 */ sw $v0, ($s2) +/* 00268C 70001A8C AE2E0000 */ sw $t6, ($s1) +/* 002690 70001A90 1000FFCE */ b .L700019CC +/* 002694 70001A94 AE2F0004 */ sw $t7, 4($s1) +.L70001A98: +/* 002698 70001A98 0C0034C3 */ jal __osTimerInterrupt +/* 00269C 70001A9C 00000000 */ nop +/* 0026A0 70001AA0 1000FFCB */ b .L700019D0 +/* 0026A4 70001AA4 8EE4000C */ lw $a0, 0xc($s7) +/* 0026A8 70001AA8 00000000 */ nop +/* 0026AC 70001AAC 00000000 */ nop +/* 0026B0 70001AB0 00000000 */ nop +/* 0026B4 70001AB4 00000000 */ nop +/* 0026B8 70001AB8 00000000 */ nop +/* 0026BC 70001ABC 00000000 */ nop +/* 0026C0 70001AC0 8FBF0034 */ lw $ra, 0x34($sp) +/* 0026C4 70001AC4 8FB00014 */ lw $s0, 0x14($sp) +/* 0026C8 70001AC8 8FB10018 */ lw $s1, 0x18($sp) +/* 0026CC 70001ACC 8FB2001C */ lw $s2, 0x1c($sp) +/* 0026D0 70001AD0 8FB30020 */ lw $s3, 0x20($sp) +/* 0026D4 70001AD4 8FB40024 */ lw $s4, 0x24($sp) +/* 0026D8 70001AD8 8FB50028 */ lw $s5, 0x28($sp) +/* 0026DC 70001ADC 8FB6002C */ lw $s6, 0x2c($sp) +/* 0026E0 70001AE0 8FB70030 */ lw $s7, 0x30($sp) +/* 0026E4 70001AE4 03E00008 */ jr $ra +/* 0026E8 70001AE8 27BD0050 */ addiu $sp, $sp, 0x50 +.endif + +.section .data +glabel __osViDevMgr +.word 0 +glabel D_800269A4 +.word 0 +glabel D_800269A8 +.word 0 +glabel D_800269AC +.word 0 +glabel D_800269B0 +.word 0 +glabel D_800269B4 +.word 0 +glabel D_800269B8 +.word 0 + + + + +.section .rodata + + +.section .bss +glabel viThread +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 + +glabel viThreadStack + #[4096] +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.section .bss +glabel viEventQueue +.word 0, 0, 0, 0, 0, 0 + +glabel viEventBuf +.word 0, 0, 0, 0, 0, 0 + +glabel viRetraceMsg +.word 0, 0, 0, 0, 0, 0 + +glabel viCounterMsg +.word 0, 0, 0, 0, 0, 0 + +glabel retrace +.half 0 + diff --git a/src/libultra/osDpGetCounters.s b/src/libultra/osDpGetCounters.s new file mode 100644 index 0000000..577721d --- /dev/null +++ b/src/libultra/osDpGetCounters.s @@ -0,0 +1,29 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osDpGetCounters +/* 00EFC0 7000E3C0 3C0EA410 */ lui $t6, %hi(DPC_CLOCK_REG) # $t6, 0xa410 +/* 00EFC4 7000E3C4 8DCF0010 */ lw $t7, %lo(DPC_CLOCK_REG)($t6) +/* 00EFC8 7000E3C8 3C18A410 */ lui $t8, %hi(DPC_BUFBUSY_REG) # $t8, 0xa410 +/* 00EFCC 7000E3CC 3C08A410 */ lui $t0, %hi(DPC_PIPEBUSY_REG) # $t0, 0xa410 +/* 00EFD0 7000E3D0 AC8F0000 */ sw $t7, ($a0) +/* 00EFD4 7000E3D4 8F190014 */ lw $t9, %lo(DPC_BUFBUSY_REG)($t8) +/* 00EFD8 7000E3D8 24840004 */ addiu $a0, $a0, 4 +/* 00EFDC 7000E3DC 3C0AA410 */ lui $t2, %hi(DPC_TMEM_REG) # $t2, 0xa410 +/* 00EFE0 7000E3E0 AC990000 */ sw $t9, ($a0) +/* 00EFE4 7000E3E4 8D090018 */ lw $t1, %lo(DPC_PIPEBUSY_REG)($t0) +/* 00EFE8 7000E3E8 24840004 */ addiu $a0, $a0, 4 +/* 00EFEC 7000E3EC 24840004 */ addiu $a0, $a0, 4 +/* 00EFF0 7000E3F0 AC89FFFC */ sw $t1, -4($a0) +/* 00EFF4 7000E3F4 8D4B001C */ lw $t3, %lo(DPC_TMEM_REG)($t2) +/* 00EFF8 7000E3F8 24840004 */ addiu $a0, $a0, 4 +/* 00EFFC 7000E3FC 03E00008 */ jr $ra +/* 00F000 7000E400 AC8BFFFC */ sw $t3, -4($a0) + diff --git a/src/libultra/osDpSetNextBuffer.s b/src/libultra/osDpSetNextBuffer.s new file mode 100644 index 0000000..56e2b62 --- /dev/null +++ b/src/libultra/osDpSetNextBuffer.s @@ -0,0 +1,55 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osDpSetNextBuffer +/* 00F3B0 7000E7B0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00F3B4 7000E7B4 AFBF001C */ sw $ra, 0x1c($sp) +/* 00F3B8 7000E7B8 AFA40028 */ sw $a0, 0x28($sp) +/* 00F3BC 7000E7BC AFA60030 */ sw $a2, 0x30($sp) +/* 00F3C0 7000E7C0 AFA70034 */ sw $a3, 0x34($sp) +/* 00F3C4 7000E7C4 0C0063FC */ jal __osDpDeviceBusy +/* 00F3C8 7000E7C8 AFB00018 */ sw $s0, 0x18($sp) +/* 00F3CC 7000E7CC 10400003 */ beqz $v0, .L7000E7DC +/* 00F3D0 7000E7D0 00000000 */ nop +/* 00F3D4 7000E7D4 1000001B */ b .L7000E844 +/* 00F3D8 7000E7D8 2402FFFF */ li $v0, -1 +.L7000E7DC: +/* 00F3DC 7000E7DC 240E0001 */ li $t6, 1 +/* 00F3E0 7000E7E0 3C0FA410 */ lui $t7, %hi(DPC_STATUS_REG) # $t7, 0xa410 +/* 00F3E4 7000E7E4 ADEE000C */ sw $t6, %lo(DPC_STATUS_REG)($t7) +.L7000E7E8: +/* 00F3E8 7000E7E8 3C18A410 */ lui $t8, %hi(DPC_STATUS_REG) # $t8, 0xa410 +/* 00F3EC 7000E7EC 8F10000C */ lw $s0, %lo(DPC_STATUS_REG)($t8) +/* 00F3F0 7000E7F0 32190001 */ andi $t9, $s0, 1 +/* 00F3F4 7000E7F4 1720FFFC */ bnez $t9, .L7000E7E8 +/* 00F3F8 7000E7F8 00000000 */ nop +/* 00F3FC 7000E7FC 0C003A2C */ jal osVirtualToPhysical +/* 00F400 7000E800 8FA40028 */ lw $a0, 0x28($sp) +/* 00F404 7000E804 3C08A410 */ lui $t0, 0xa410 +/* 00F408 7000E808 AD020000 */ sw $v0, ($t0) +/* 00F40C 7000E80C 0C003A2C */ jal osVirtualToPhysical +/* 00F410 7000E810 8FA40028 */ lw $a0, 0x28($sp) +/* 00F414 7000E814 8FAD0034 */ lw $t5, 0x34($sp) +/* 00F418 7000E818 00405825 */ move $t3, $v0 +/* 00F41C 7000E81C 8FAC0030 */ lw $t4, 0x30($sp) +/* 00F420 7000E820 016D7821 */ addu $t7, $t3, $t5 +/* 00F424 7000E824 240A0000 */ li $t2, 0 +/* 00F428 7000E828 01ED082B */ sltu $at, $t7, $t5 +/* 00F42C 7000E82C 002A7021 */ addu $t6, $at, $t2 +/* 00F430 7000E830 01E04825 */ move $t1, $t7 +/* 00F434 7000E834 3C18A410 */ lui $t8, %hi(DPC_END_REG) # $t8, 0xa410 +/* 00F438 7000E838 AF090004 */ sw $t1, %lo(DPC_END_REG)($t8) +/* 00F43C 7000E83C 00001025 */ move $v0, $zero +/* 00F440 7000E840 01CC7021 */ addu $t6, $t6, $t4 +.L7000E844: +/* 00F444 7000E844 8FBF001C */ lw $ra, 0x1c($sp) +/* 00F448 7000E848 8FB00018 */ lw $s0, 0x18($sp) +/* 00F44C 7000E84C 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00F450 7000E850 03E00008 */ jr $ra +/* 00F454 7000E854 00000000 */ nop diff --git a/src/libultra/osDpSetStatus.s b/src/libultra/osDpSetStatus.s new file mode 100644 index 0000000..d898e0d --- /dev/null +++ b/src/libultra/osDpSetStatus.s @@ -0,0 +1,14 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osDpSetStatus +/* 00F0E0 7000E4E0 3C0EA410 */ lui $t6, 0xa410 +/* 00F0E4 7000E4E4 03E00008 */ jr $ra +/* 00F0E8 7000E4E8 ADC4000C */ sw $a0, 0xc($t6) diff --git a/src/libultra/osGetCount.s b/src/libultra/osGetCount.s new file mode 100644 index 0000000..0798a2e --- /dev/null +++ b/src/libultra/osGetCount.s @@ -0,0 +1,13 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osGetCount +/* 00E4E0 7000D8E0 40024800 */ mfc0 $v0, $9 +/* 00E4E4 7000D8E4 03E00008 */ jr $ra +/* 00E4E8 7000D8E8 00000000 */ nop diff --git a/src/libultra/osGetTime.s b/src/libultra/osGetTime.s new file mode 100644 index 0000000..a50e133 --- /dev/null +++ b/src/libultra/osGetTime.s @@ -0,0 +1,43 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osGetTime +/* 00F7B0 7000EBB0 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 00F7B4 7000EBB4 AFBF001C */ sw $ra, 0x1c($sp) +/* 00F7B8 7000EBB8 0C00617C */ jal __osDisableInt +/* 00F7BC 7000EBBC AFB00018 */ sw $s0, 0x18($sp) +/* 00F7C0 7000EBC0 0C003638 */ jal osGetCount +/* 00F7C4 7000EBC4 00408025 */ move $s0, $v0 +/* 00F7C8 7000EBC8 AFA20034 */ sw $v0, 0x34($sp) +/* 00F7CC 7000EBCC 3C0F8007 */ lui $t7, %hi(__osBaseCounter) +/* 00F7D0 7000EBD0 8DEF8E18 */ lw $t7, %lo(__osBaseCounter)($t7) +/* 00F7D4 7000EBD4 8FAE0034 */ lw $t6, 0x34($sp) +/* 00F7D8 7000EBD8 3C088007 */ lui $t0, %hi(__osCurrentTime) +/* 00F7DC 7000EBDC 3C098007 */ lui $t1, %hi(__osCurrentTime+4) +/* 00F7E0 7000EBE0 8D298E14 */ lw $t1, %lo(__osCurrentTime+4)($t1) +/* 00F7E4 7000EBE4 8D088E10 */ lw $t0, %lo(__osCurrentTime)($t0) +/* 00F7E8 7000EBE8 01CFC023 */ subu $t8, $t6, $t7 +/* 00F7EC 7000EBEC AFB80030 */ sw $t8, 0x30($sp) +/* 00F7F0 7000EBF0 02002025 */ move $a0, $s0 +/* 00F7F4 7000EBF4 AFA9002C */ sw $t1, 0x2c($sp) +/* 00F7F8 7000EBF8 0C006184 */ jal __osRestoreInt +/* 00F7FC 7000EBFC AFA80028 */ sw $t0, 0x28($sp) +/* 00F800 7000EC00 8FB90030 */ lw $t9, 0x30($sp) +/* 00F804 7000EC04 8FAD002C */ lw $t5, 0x2c($sp) +/* 00F808 7000EC08 8FBF001C */ lw $ra, 0x1c($sp) +/* 00F80C 7000EC0C 03205825 */ move $t3, $t9 +/* 00F810 7000EC10 016D1821 */ addu $v1, $t3, $t5 +/* 00F814 7000EC14 8FAC0028 */ lw $t4, 0x28($sp) +/* 00F818 7000EC18 240A0000 */ li $t2, 0 +/* 00F81C 7000EC1C 006D082B */ sltu $at, $v1, $t5 +/* 00F820 7000EC20 002A1021 */ addu $v0, $at, $t2 +/* 00F824 7000EC24 8FB00018 */ lw $s0, 0x18($sp) +/* 00F828 7000EC28 27BD0038 */ addiu $sp, $sp, 0x38 +/* 00F82C 7000EC2C 03E00008 */ jr $ra +/* 00F830 7000EC30 004C1021 */ addu $v0, $v0, $t4 diff --git a/src/libultra/osInitialize.s b/src/libultra/osInitialize.s new file mode 100644 index 0000000..f3be194 --- /dev/null +++ b/src/libultra/osInitialize.s @@ -0,0 +1,207 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + +.section .data +glabel osClockRate +.dword 62500000 +glabel __osShutdown + .word 0 +glabel __OSGlobalIntMask + .word 0x3FFF01 +glabel osDiskExist + .word 0 +.align 4 +.section .rodata +.section .bss +glabel __osFinalRom +.word 0 + +.section .text, "ax" +glabel osInitialize +/* 00DC80 7000D080 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 00DC84 7000D084 AFBF001C */ sw $ra, 0x1c($sp) +/* 00DC88 7000D088 240E0001 */ li $t6, 1 +/* 00DC8C 7000D08C 3C018006 */ lui $at, %hi(__osFinalRom) +/* 00DC90 7000D090 AFB00018 */ sw $s0, 0x18($sp) +/* 00DC94 7000D094 AFA00038 */ sw $zero, 0x38($sp) +/* 00DC98 7000D098 0C005ECC */ jal __osGetSR +/* 00DC9C 7000D09C AC2E57E0 */ sw $t6, %lo(__osFinalRom)($at) +/* 00DCA0 7000D0A0 00408025 */ move $s0, $v0 +/* 00DCA4 7000D0A4 3C012000 */ lui $at, 0x2000 +/* 00DCA8 7000D0A8 0C005EC8 */ jal __osSetSR +/* 00DCAC 7000D0AC 02012025 */ or $a0, $s0, $at +/* 00DCB0 7000D0B0 3C040100 */ lui $a0, (0x01000800 >> 16) # lui $a0, 0x100 +/* 00DCB4 7000D0B4 0C003508 */ jal __osSetFpcCsr +/* 00DCB8 7000D0B8 34840800 */ ori $a0, (0x01000800 & 0xFFFF) # ori $a0, $a0, 0x800 +/* 00DCBC 7000D0BC 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 +/* 00DCC0 7000D0C0 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc +/* 00DCC4 7000D0C4 0C005ED0 */ jal __osSiRawReadIo +/* 00DCC8 7000D0C8 27A5003C */ addiu $a1, $sp, 0x3c +/* 00DCCC 7000D0CC 10400007 */ beqz $v0, .L7000D0EC +/* 00DCD0 7000D0D0 00000000 */ nop +.L7000D0D4: +/* 00DCD4 7000D0D4 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 +/* 00DCD8 7000D0D8 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc +/* 00DCDC 7000D0DC 0C005ED0 */ jal __osSiRawReadIo +/* 00DCE0 7000D0E0 27A5003C */ addiu $a1, $sp, 0x3c +/* 00DCE4 7000D0E4 1440FFFB */ bnez $v0, .L7000D0D4 +/* 00DCE8 7000D0E8 00000000 */ nop +.L7000D0EC: +/* 00DCEC 7000D0EC 8FA5003C */ lw $a1, 0x3c($sp) +/* 00DCF0 7000D0F0 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 +/* 00DCF4 7000D0F4 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc +/* 00DCF8 7000D0F8 34AF0008 */ ori $t7, $a1, 8 +/* 00DCFC 7000D0FC 0C005EE4 */ jal __osSiRawWriteIo +/* 00DD00 7000D100 01E02825 */ move $a1, $t7 +/* 00DD04 7000D104 10400009 */ beqz $v0, .L7000D12C +/* 00DD08 7000D108 00000000 */ nop +.L7000D10C: +/* 00DD0C 7000D10C 8FA5003C */ lw $a1, 0x3c($sp) +/* 00DD10 7000D110 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0 +/* 00DD14 7000D114 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc +/* 00DD18 7000D118 34B80008 */ ori $t8, $a1, 8 +/* 00DD1C 7000D11C 0C005EE4 */ jal __osSiRawWriteIo +/* 00DD20 7000D120 03002825 */ move $a1, $t8 +/* 00DD24 7000D124 1440FFF9 */ bnez $v0, .L7000D10C +/* 00DD28 7000D128 00000000 */ nop +.L7000D12C: +/* 00DD2C 7000D12C 3C087001 */ lui $t0, %hi(__osExceptionPreamble) # $t0, 0x7001 +/* 00DD30 7000D130 25080190 */ addiu $t0, %lo(__osExceptionPreamble) # addiu $t0, $t0, 0x190 +/* 00DD34 7000D134 8D010000 */ lw $at, ($t0) +/* 00DD38 7000D138 3C198000 */ lui $t9, 0x8000 +/* 00DD3C 7000D13C 3C0D7001 */ lui $t5, %hi(__osExceptionPreamble) # $t5, 0x7001 +/* 00DD40 7000D140 AF210000 */ sw $at, ($t9) +/* 00DD44 7000D144 8D0B0004 */ lw $t3, 4($t0) +/* 00DD48 7000D148 25AD0190 */ addiu $t5, %lo(__osExceptionPreamble) # addiu $t5, $t5, 0x190 +/* 00DD4C 7000D14C 3C0C8000 */ lui $t4, 0x8000 +/* 00DD50 7000D150 AF2B0004 */ sw $t3, 4($t9) +/* 00DD54 7000D154 8D010008 */ lw $at, 8($t0) +/* 00DD58 7000D158 358C0080 */ ori $t4, (0x80000080 & 0xFFFF) # ori $t4, $t4, 0x80 +/* 00DD5C 7000D15C 3C097001 */ lui $t1, %hi(__osExceptionPreamble) # $t1, 0x7001 +/* 00DD60 7000D160 AF210008 */ sw $at, 8($t9) +/* 00DD64 7000D164 8D0B000C */ lw $t3, 0xc($t0) +/* 00DD68 7000D168 25290190 */ addiu $t1, %lo(__osExceptionPreamble) # addiu $t1, $t1, 0x190 +/* 00DD6C 7000D16C 3C0A8000 */ lui $t2, 0x8000 +/* 00DD70 7000D170 AF2B000C */ sw $t3, 0xC($t9) +/* 00DD74 7000D174 8DA10000 */ lw $at, 0($t5) +/* 00DD78 7000D178 354A0100 */ ori $t2, (0x80000100 & 0xFFFF) # ori $t2, $t2, 0x100 +/* 00DD7C 7000D17C 3C0E7001 */ lui $t6, %hi(__osExceptionPreamble) # $t6, 0x7001 +/* 00DD80 7000D180 AD810000 */ sw $at, 0($t4) +/* 00DD84 7000D184 8DB80004 */ lw $t8, 4($t5) +/* 00DD88 7000D188 25CE0190 */ addiu $t6, %lo(__osExceptionPreamble) # addiu $t6, $t6, 0x190 +/* 00DD8C 7000D18C 3C0F8000 */ lui $t7, 0x8000 +/* 00DD90 7000D190 AD980004 */ sw $t8, 4($t4) +/* 00DD94 7000D194 8DA10008 */ lw $at, 8($t5) +/* 00DD98 7000D198 35EF0180 */ ori $t7, (0x80000180 & 0xFFFF) # ori $t7, $t7, 0x180 +/* 00DD9C 7000D19C 3C048000 */ lui $a0, 0x8000 +/* 00DDA0 7000D1A0 AD810008 */ sw $at, 8($t4) +/* 00DDA4 7000D1A4 8DB8000C */ lw $t8, 0xc($t5) +/* 00DDA8 7000D1A8 24050190 */ li $a1, 400 +/* 00DDAC 7000D1AC AD98000C */ sw $t8, 0xC($t4) +/* 00DDB0 7000D1B0 8D210000 */ lw $at, 0($t1) +/* 00DDB4 7000D1B4 AD410000 */ sw $at, 0($t2) +/* 00DDB8 7000D1B8 8D2B0004 */ lw $t3, 4($t1) +/* 00DDBC 7000D1BC AD4B0004 */ sw $t3, 4($t2) +/* 00DDC0 7000D1C0 8D210008 */ lw $at, 8($t1) +/* 00DDC4 7000D1C4 AD410008 */ sw $at, 8($t2) +/* 00DDC8 7000D1C8 8D2B000C */ lw $t3, 0xc($t1) +/* 00DDCC 7000D1CC AD4B000C */ sw $t3, 0xC($t2) +/* 00DDD0 7000D1D0 8DC10000 */ lw $at, 0($t6) +/* 00DDD4 7000D1D4 ADE10000 */ sw $at, 0($t7) +/* 00DDD8 7000D1D8 8DD80004 */ lw $t8, 4($t6) +/* 00DDDC 7000D1DC ADF80004 */ sw $t8, 4($t7) +/* 00DDE0 7000D1E0 8DC10008 */ lw $at, 8($t6) +/* 00DDE4 7000D1E4 ADE10008 */ sw $at, 8($t7) +/* 00DDE8 7000D1E8 8DD8000C */ lw $t8, 0xc($t6) +/* 00DDEC 7000D1EC 0C0042F4 */ jal osWritebackDCache +/* 00DDF0 7000D1F0 ADF8000C */ sw $t8, 0xC($t7) +/* 00DDF4 7000D1F4 3C048000 */ lui $a0, 0x8000 +/* 00DDF8 7000D1F8 0C0034D4 */ jal osInvalICache +/* 00DDFC 7000D1FC 24050190 */ li $a1, 400 +/* 00DE00 7000D200 0C0005E0 */ jal osMapTLBRdb +/* 00DE04 7000D204 00000000 */ nop +/* 00DE08 7000D208 24040004 */ li $a0, 4 +/* 00DE0C 7000D20C 0C005EF8 */ jal osPiRawReadIo +/* 00DE10 7000D210 27A50038 */ addiu $a1, $sp, 0x38 +/* 00DE14 7000D214 8FA80038 */ lw $t0, 0x38($sp) +/* 00DE18 7000D218 2401FFF0 */ li $at, -16 +/* 00DE1C 7000D21C 0101C824 */ and $t9, $t0, $at +/* 00DE20 7000D220 13200006 */ beqz $t9, .L7000D23C +/* 00DE24 7000D224 AFB90038 */ sw $t9, 0x38($sp) +/* 00DE28 7000D228 3C018002 */ lui $at, %hi(osClockRate) +/* 00DE2C 7000D22C 03205825 */ move $t3, $t9 +/* 00DE30 7000D230 240A0000 */ li $t2, 0 +/* 00DE34 7000D234 AC2A6980 */ sw $t2, %lo(osClockRate)($at) +/* 00DE38 7000D238 AC2B6984 */ sw $t3, %lo(osClockRate+4)($at) +.L7000D23C: +/* 00DE3C 7000D23C 3C048002 */ lui $a0, %hi(osClockRate) +/* 00DE40 7000D240 3C058002 */ lui $a1, %hi(osClockRate) +/* 00DE44 7000D244 8CA56984 */ lw $a1, %lo(osClockRate+4)($a1) +/* 00DE48 7000D248 8C846980 */ lw $a0, %lo(osClockRate)($a0) +/* 00DE4C 7000D24C 24060000 */ li $a2, 0 +/* 00DE50 7000D250 0C003B6A */ jal __ll_mul +/* 00DE54 7000D254 24070003 */ li $a3, 3 +/* 00DE58 7000D258 AFA20020 */ sw $v0, 0x20($sp) +/* 00DE5C 7000D25C AFA30024 */ sw $v1, 0x24($sp) +/* 00DE60 7000D260 8FA50024 */ lw $a1, 0x24($sp) +/* 00DE64 7000D264 8FA40020 */ lw $a0, 0x20($sp) +/* 00DE68 7000D268 24060000 */ li $a2, 0 +/* 00DE6C 7000D26C 0C003B2A */ jal __ull_div +/* 00DE70 7000D270 24070004 */ li $a3, 4 +/* 00DE74 7000D274 3C098000 */ lui $t1, %hi(osResetType) +/* 00DE78 7000D278 8D29030C */ lw $t1, %lo(osResetType)($t1) +/* 00DE7C 7000D27C 3C018002 */ lui $at, %hi(osClockRate) +/* 00DE80 7000D280 AC226980 */ sw $v0, %lo(osClockRate)($at) +/* 00DE84 7000D284 15200005 */ bnez $t1, .L7000D29C +/* 00DE88 7000D288 AC236984 */ sw $v1, %lo(osClockRate+4)($at) +/* 00DE8C 7000D28C 3C048000 */ lui $a0, %hi(osAppNMIBuffer) +/* 00DE90 7000D290 2484031C */ addiu $a0, %lo(osAppNMIBuffer) # addiu $a0, $a0, 0x31c +/* 00DE94 7000D294 0C005F10 */ jal _blkclr +/* 00DE98 7000D298 24050040 */ li $a1, 64 +.L7000D29C: +/* 00DE9C 7000D29C 3C0DA460 */ lui $t5, %hi(PI_STATUS_REG) # $t5, 0xa460 +/* 00DEA0 7000D2A0 8DAC0010 */ lw $t4, %lo(PI_STATUS_REG)($t5) +/* 00DEA4 7000D2A4 318F0003 */ andi $t7, $t4, 3 +/* 00DEA8 7000D2A8 11E00008 */ beqz $t7, .L7000D2CC +/* 00DEAC 7000D2AC AFAC0030 */ sw $t4, 0x30($sp) +.L7000D2B0: +/* 00DEB0 7000D2B0 3C0EA460 */ lui $t6, %hi(PI_STATUS_REG) # $t6, 0xa460 +/* 00DEB4 7000D2B4 8DD80010 */ lw $t8, %lo(PI_STATUS_REG)($t6) +/* 00DEB8 7000D2B8 AFB80030 */ sw $t8, 0x30($sp) +/* 00DEBC 7000D2BC 8FA80030 */ lw $t0, 0x30($sp) +/* 00DEC0 7000D2C0 31190003 */ andi $t9, $t0, 3 +/* 00DEC4 7000D2C4 1720FFFA */ bnez $t9, .L7000D2B0 +/* 00DEC8 7000D2C8 00000000 */ nop +.L7000D2CC: +/* 00DECC 7000D2CC 3C0AA500 */ lui $t2, %hi(ASIC_STATUS) # $t2, 0xa500 +/* 00DED0 7000D2D0 8D4B0508 */ lw $t3, %lo(ASIC_STATUS)($t2) +/* 00DED4 7000D2D4 3169FFFF */ andi $t1, $t3, 0xffff +/* 00DED8 7000D2D8 1520000A */ bnez $t1, .L7000D304 +/* 00DEDC 7000D2DC AFAB0034 */ sw $t3, 0x34($sp) +/* 00DEE0 7000D2E0 240D0001 */ li $t5, 1 +/* 00DEE4 7000D2E4 3C018002 */ lui $at, %hi(osDiskExist) +/* 00DEE8 7000D2E8 3C057001 */ lui $a1, %hi(__osLeoInterrupt) # $a1, 0x7001 +/* 00DEEC 7000D2EC AC2D6990 */ sw $t5, %lo(osDiskExist)($at) +/* 00DEF0 7000D2F0 24A57D30 */ addiu $a1, %lo(__osLeoInterrupt) # addiu $a1, $a1, 0x7d30 +/* 00DEF4 7000D2F4 0C005F38 */ jal __osSetHWIntrRoutine +/* 00DEF8 7000D2F8 24040001 */ li $a0, 1 +/* 00DEFC 7000D2FC 10000003 */ b .L7000D30C +/* 00DF00 7000D300 00000000 */ nop +.L7000D304: +/* 00DF04 7000D304 3C018002 */ lui $at, %hi(osDiskExist) +/* 00DF08 7000D308 AC206990 */ sw $zero, %lo(osDiskExist)($at) +.L7000D30C: +/* 00DF0C 7000D30C 8FBF001C */ lw $ra, 0x1c($sp) +/* 00DF10 7000D310 8FB00018 */ lw $s0, 0x18($sp) +/* 00DF14 7000D314 27BD0040 */ addiu $sp, $sp, 0x40 +/* 00DF18 7000D318 03E00008 */ jr $ra +/* 00DF1C 7000D31C 00000000 */ nop + + + + + diff --git a/src/libultra/osInvalDCache.s b/src/libultra/osInvalDCache.s new file mode 100644 index 0000000..57a8301 --- /dev/null +++ b/src/libultra/osInvalDCache.s @@ -0,0 +1,59 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osInvalDCache +/* 011720 70010B20 18A0001F */ blez $a1, .L70010BA0 +/* 011724 70010B24 00000000 */ nop +/* 011728 70010B28 240B2000 */ li $t3, 8192 +/* 01172C 70010B2C 00AB082B */ sltu $at, $a1, $t3 +/* 011730 70010B30 1020001D */ beqz $at, .L70010BA8 +/* 011734 70010B34 00000000 */ nop +/* 011738 70010B38 00804025 */ move $t0, $a0 +/* 01173C 70010B3C 00854821 */ addu $t1, $a0, $a1 +/* 011740 70010B40 0109082B */ sltu $at, $t0, $t1 +/* 011744 70010B44 10200016 */ beqz $at, .L70010BA0 +/* 011748 70010B48 00000000 */ nop +/* 01174C 70010B4C 310A000F */ andi $t2, $t0, 0xf +/* 011750 70010B50 11400007 */ beqz $t2, .L70010B70 +/* 011754 70010B54 2529FFF0 */ addiu $t1, $t1, -0x10 +/* 011758 70010B58 010A4023 */ subu $t0, $t0, $t2 +/* 01175C 70010B5C BD150000 */ cache 0x15, ($t0) +/* 011760 70010B60 0109082B */ sltu $at, $t0, $t1 +/* 011764 70010B64 1020000E */ beqz $at, .L70010BA0 +/* 011768 70010B68 00000000 */ nop +/* 01176C 70010B6C 25080010 */ addiu $t0, $t0, 0x10 +.L70010B70: +/* 011770 70010B70 312A000F */ andi $t2, $t1, 0xf +/* 011774 70010B74 11400006 */ beqz $t2, .L70010B90 +/* 011778 70010B78 00000000 */ nop +/* 01177C 70010B7C 012A4823 */ subu $t1, $t1, $t2 +/* 011780 70010B80 BD350010 */ cache 0x15, 0x10($t1) +/* 011784 70010B84 0128082B */ sltu $at, $t1, $t0 +/* 011788 70010B88 14200005 */ bnez $at, .L70010BA0 +/* 01178C 70010B8C 00000000 */ nop +.L70010B90: +/* 011790 70010B90 BD110000 */ cache 0x11, ($t0) +/* 011794 70010B94 0109082B */ sltu $at, $t0, $t1 +/* 011798 70010B98 1420FFFD */ bnez $at, .L70010B90 +/* 01179C 70010B9C 25080010 */ addiu $t0, $t0, 0x10 +.L70010BA0: +/* 0117A0 70010BA0 03E00008 */ jr $ra +/* 0117A4 70010BA4 00000000 */ nop + +.L70010BA8: +/* 0117A8 70010BA8 3C088000 */ lui $t0, 0x8000 +/* 0117AC 70010BAC 010B4821 */ addu $t1, $t0, $t3 +/* 0117B0 70010BB0 2529FFF0 */ addiu $t1, $t1, -0x10 +.L70010BB4: +/* 0117B4 70010BB4 BD010000 */ cache 1, ($t0) +/* 0117B8 70010BB8 0109082B */ sltu $at, $t0, $t1 +/* 0117BC 70010BBC 1420FFFD */ bnez $at, .L70010BB4 +/* 0117C0 70010BC0 25080010 */ addiu $t0, $t0, 0x10 +/* 0117C4 70010BC4 03E00008 */ jr $ra +/* 0117C8 70010BC8 00000000 */ nop diff --git a/src/libultra/osInvalICache.s b/src/libultra/osInvalICache.s new file mode 100644 index 0000000..2bac877 --- /dev/null +++ b/src/libultra/osInvalICache.s @@ -0,0 +1,44 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osInvalICache +/* 00DF50 7000D350 18A00011 */ blez $a1, .L7000D398 +/* 00DF54 7000D354 00000000 */ nop +/* 00DF58 7000D358 240B4000 */ li $t3, 16384 +/* 00DF5C 7000D35C 00AB082B */ sltu $at, $a1, $t3 +/* 00DF60 7000D360 1020000F */ beqz $at, .L7000D3A0 +/* 00DF64 7000D364 00000000 */ nop +/* 00DF68 7000D368 00804025 */ move $t0, $a0 +/* 00DF6C 7000D36C 00854821 */ addu $t1, $a0, $a1 +/* 00DF70 7000D370 0109082B */ sltu $at, $t0, $t1 +/* 00DF74 7000D374 10200008 */ beqz $at, .L7000D398 +/* 00DF78 7000D378 00000000 */ nop +/* 00DF7C 7000D37C 310A001F */ andi $t2, $t0, 0x1f +/* 00DF80 7000D380 2529FFE0 */ addiu $t1, $t1, -0x20 +/* 00DF84 7000D384 010A4023 */ subu $t0, $t0, $t2 +.L7000D388: +/* 00DF88 7000D388 BD100000 */ cache 0x10, ($t0) +/* 00DF8C 7000D38C 0109082B */ sltu $at, $t0, $t1 +/* 00DF90 7000D390 1420FFFD */ bnez $at, .L7000D388 +/* 00DF94 7000D394 25080020 */ addiu $t0, $t0, 0x20 +.L7000D398: +/* 00DF98 7000D398 03E00008 */ jr $ra +/* 00DF9C 7000D39C 00000000 */ nop + +.L7000D3A0: +/* 00DFA0 7000D3A0 3C088000 */ lui $t0, 0x8000 +/* 00DFA4 7000D3A4 010B4821 */ addu $t1, $t0, $t3 +/* 00DFA8 7000D3A8 2529FFE0 */ addiu $t1, $t1, -0x20 +.L7000D3AC: +/* 00DFAC 7000D3AC BD000000 */ cache 0, ($t0) +/* 00DFB0 7000D3B0 0109082B */ sltu $at, $t0, $t1 +/* 00DFB4 7000D3B4 1420FFFD */ bnez $at, .L7000D3AC +/* 00DFB8 7000D3B8 25080020 */ addiu $t0, $t0, 0x20 +/* 00DFBC 7000D3BC 03E00008 */ jr $ra +/* 00DFC0 7000D3C0 00000000 */ nop diff --git a/src/libultra/osPiGetStatus.s b/src/libultra/osPiGetStatus.s new file mode 100644 index 0000000..d39850f --- /dev/null +++ b/src/libultra/osPiGetStatus.s @@ -0,0 +1,14 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osPiGetStatus +/* 00DC70 7000D070 3C0EA460 */ lui $t6, 0xa460 +/* 00DC74 7000D074 03E00008 */ jr $ra +/* 00DC78 7000D078 8DC20010 */ lw $v0, 0x10($t6) diff --git a/src/libultra/osPiRawStartDma.s b/src/libultra/osPiRawStartDma.s new file mode 100644 index 0000000..24d5732 --- /dev/null +++ b/src/libultra/osPiRawStartDma.s @@ -0,0 +1,75 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + + +glabel osPiRawStartDma +/* 00DB90 7000CF90 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00DB94 7000CF94 AFBF001C */ sw $ra, 0x1c($sp) +/* 00DB98 7000CF98 AFA40028 */ sw $a0, 0x28($sp) +/* 00DB9C 7000CF9C AFA5002C */ sw $a1, 0x2c($sp) +/* 00DBA0 7000CFA0 AFA60030 */ sw $a2, 0x30($sp) +/* 00DBA4 7000CFA4 AFA70034 */ sw $a3, 0x34($sp) +/* 00DBA8 7000CFA8 AFB10018 */ sw $s1, 0x18($sp) +/* 00DBAC 7000CFAC AFB00014 */ sw $s0, 0x14($sp) +/* 00DBB0 7000CFB0 3C0EA460 */ lui $t6, %hi(PI_STATUS_REG) # $t6, 0xa460 +/* 00DBB4 7000CFB4 8DD00010 */ lw $s0, %lo(PI_STATUS_REG)($t6) +/* 00DBB8 7000CFB8 320F0003 */ andi $t7, $s0, 3 +/* 00DBBC 7000CFBC 11E00006 */ beqz $t7, .L7000CFD8 +/* 00DBC0 7000CFC0 00000000 */ nop +.L7000CFC4: +/* 00DBC4 7000CFC4 3C18A460 */ lui $t8, %hi(PI_STATUS_REG) # $t8, 0xa460 +/* 00DBC8 7000CFC8 8F100010 */ lw $s0, %lo(PI_STATUS_REG)($t8) +/* 00DBCC 7000CFCC 32190003 */ andi $t9, $s0, 3 +/* 00DBD0 7000CFD0 1720FFFC */ bnez $t9, .L7000CFC4 +/* 00DBD4 7000CFD4 00000000 */ nop +.L7000CFD8: +/* 00DBD8 7000CFD8 0C003A2C */ jal osVirtualToPhysical +/* 00DBDC 7000CFDC 8FA40030 */ lw $a0, 0x30($sp) +/* 00DBE0 7000CFE0 3C08A460 */ lui $t0, 0xa460 +/* 00DBE4 7000CFE4 AD020000 */ sw $v0, ($t0) +/* 00DBE8 7000CFE8 3C098000 */ lui $t1, %hi(osRomBase) +/* 00DBEC 7000CFEC 8D290308 */ lw $t1, %lo(osRomBase)($t1) +/* 00DBF0 7000CFF0 8FAA002C */ lw $t2, 0x2c($sp) +/* 00DBF4 7000CFF4 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff +/* 00DBF8 7000CFF8 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 00DBFC 7000CFFC 012A5825 */ or $t3, $t1, $t2 +/* 00DC00 7000D000 01616024 */ and $t4, $t3, $at +/* 00DC04 7000D004 3C0DA460 */ lui $t5, %hi(PI_CART_ADDR_REG) # $t5, 0xa460 +/* 00DC08 7000D008 ADAC0004 */ sw $t4, %lo(PI_CART_ADDR_REG)($t5) +/* 00DC0C 7000D00C 8FB10028 */ lw $s1, 0x28($sp) +/* 00DC10 7000D010 12200005 */ beqz $s1, .L7000D028 +/* 00DC14 7000D014 24010001 */ li $at, 1 +/* 00DC18 7000D018 12210008 */ beq $s1, $at, .L7000D03C +/* 00DC1C 7000D01C 00000000 */ nop +/* 00DC20 7000D020 1000000B */ b .L7000D050 +/* 00DC24 7000D024 00000000 */ nop +.L7000D028: +/* 00DC28 7000D028 8FAE0034 */ lw $t6, 0x34($sp) +/* 00DC2C 7000D02C 3C18A460 */ lui $t8, %hi(PI_WR_LEN_REG) # $t8, 0xa460 +/* 00DC30 7000D030 25CFFFFF */ addiu $t7, $t6, -1 +/* 00DC34 7000D034 10000008 */ b .L7000D058 +/* 00DC38 7000D038 AF0F000C */ sw $t7, %lo(PI_WR_LEN_REG)($t8) +.L7000D03C: +/* 00DC3C 7000D03C 8FB90034 */ lw $t9, 0x34($sp) +/* 00DC40 7000D040 3C09A460 */ lui $t1, %hi(PI_RD_LEN_REG) # $t1, 0xa460 +/* 00DC44 7000D044 2728FFFF */ addiu $t0, $t9, -1 +/* 00DC48 7000D048 10000003 */ b .L7000D058 +/* 00DC4C 7000D04C AD280008 */ sw $t0, %lo(PI_RD_LEN_REG)($t1) +.L7000D050: +/* 00DC50 7000D050 10000002 */ b .L7000D05C +/* 00DC54 7000D054 2402FFFF */ li $v0, -1 +.L7000D058: +/* 00DC58 7000D058 00001025 */ move $v0, $zero +.L7000D05C: +/* 00DC5C 7000D05C 8FBF001C */ lw $ra, 0x1c($sp) +/* 00DC60 7000D060 8FB00014 */ lw $s0, 0x14($sp) +/* 00DC64 7000D064 8FB10018 */ lw $s1, 0x18($sp) +/* 00DC68 7000D068 03E00008 */ jr $ra +/* 00DC6C 7000D06C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osPiReadIo.s b/src/libultra/osPiReadIo.s new file mode 100644 index 0000000..75545a1 --- /dev/null +++ b/src/libultra/osPiReadIo.s @@ -0,0 +1,26 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osPiReadIo +/* 014410 70013810 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 014414 70013814 AFBF001C */ sw $ra, 0x1c($sp) +/* 014418 70013818 AFA40028 */ sw $a0, 0x28($sp) +/* 01441C 7001381C AFA5002C */ sw $a1, 0x2c($sp) +/* 014420 70013820 0C0075D8 */ jal __osPiGetAccess +/* 014424 70013824 AFB00018 */ sw $s0, 0x18($sp) +/* 014428 70013828 8FA40028 */ lw $a0, 0x28($sp) +/* 01442C 7001382C 0C005EF8 */ jal osPiRawReadIo +/* 014430 70013830 8FA5002C */ lw $a1, 0x2c($sp) +/* 014434 70013834 0C0075E9 */ jal __osPiRelAccess +/* 014438 70013838 00408025 */ move $s0, $v0 +/* 01443C 7001383C 8FBF001C */ lw $ra, 0x1c($sp) +/* 014440 70013840 02001025 */ move $v0, $s0 +/* 014444 70013844 8FB00018 */ lw $s0, 0x18($sp) +/* 014448 70013848 03E00008 */ jr $ra +/* 01444C 7001384C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osPiStartDma.s b/src/libultra/osPiStartDma.s new file mode 100644 index 0000000..f0a0a54 --- /dev/null +++ b/src/libultra/osPiStartDma.s @@ -0,0 +1,83 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osPiStartDma +/* 0102A0 7000F6A0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0102A4 7000F6A4 3C0E8002 */ lui $t6, %hi(__osPiDevMgr) +/* 0102A8 7000F6A8 8DCE7790 */ lw $t6, %lo(__osPiDevMgr)($t6) +/* 0102AC 7000F6AC AFBF001C */ sw $ra, 0x1c($sp) +/* 0102B0 7000F6B0 AFA40028 */ sw $a0, 0x28($sp) +/* 0102B4 7000F6B4 AFA5002C */ sw $a1, 0x2c($sp) +/* 0102B8 7000F6B8 AFA60030 */ sw $a2, 0x30($sp) +/* 0102BC 7000F6BC AFA70034 */ sw $a3, 0x34($sp) +/* 0102C0 7000F6C0 AFB10018 */ sw $s1, 0x18($sp) +/* 0102C4 7000F6C4 15C00003 */ bnez $t6, .L7000F6D4 +/* 0102C8 7000F6C8 AFB00014 */ sw $s0, 0x14($sp) +/* 0102CC 7000F6CC 10000032 */ b .L7000F798 +/* 0102D0 7000F6D0 2402FFFF */ li $v0, -1 +.L7000F6D4: +/* 0102D4 7000F6D4 8FAF0030 */ lw $t7, 0x30($sp) +/* 0102D8 7000F6D8 15E00005 */ bnez $t7, .L7000F6F0 +/* 0102DC 7000F6DC 00000000 */ nop +/* 0102E0 7000F6E0 8FB90028 */ lw $t9, 0x28($sp) +/* 0102E4 7000F6E4 2418000B */ li $t8, 11 +/* 0102E8 7000F6E8 10000004 */ b .L7000F6FC +/* 0102EC 7000F6EC A7380000 */ sh $t8, ($t9) +.L7000F6F0: +/* 0102F0 7000F6F0 8FA90028 */ lw $t1, 0x28($sp) +/* 0102F4 7000F6F4 2408000C */ li $t0, 12 +/* 0102F8 7000F6F8 A5280000 */ sh $t0, ($t1) +.L7000F6FC: +/* 0102FC 7000F6FC 8FAA002C */ lw $t2, 0x2c($sp) +/* 010300 7000F700 8FAB0028 */ lw $t3, 0x28($sp) +/* 010304 7000F704 24010001 */ li $at, 1 +/* 010308 7000F708 A16A0002 */ sb $t2, 2($t3) +/* 01030C 7000F70C 8FAD0028 */ lw $t5, 0x28($sp) +/* 010310 7000F710 8FAC0040 */ lw $t4, 0x40($sp) +/* 010314 7000F714 ADAC0004 */ sw $t4, 4($t5) +/* 010318 7000F718 8FAF0028 */ lw $t7, 0x28($sp) +/* 01031C 7000F71C 8FAE0038 */ lw $t6, 0x38($sp) +/* 010320 7000F720 ADEE0008 */ sw $t6, 8($t7) +/* 010324 7000F724 8FB90028 */ lw $t9, 0x28($sp) +/* 010328 7000F728 8FB80034 */ lw $t8, 0x34($sp) +/* 01032C 7000F72C AF38000C */ sw $t8, 0xc($t9) +/* 010330 7000F730 8FA90028 */ lw $t1, 0x28($sp) +/* 010334 7000F734 8FA8003C */ lw $t0, 0x3c($sp) +/* 010338 7000F738 AD280010 */ sw $t0, 0x10($t1) +/* 01033C 7000F73C 8FAA0028 */ lw $t2, 0x28($sp) +/* 010340 7000F740 AD400014 */ sw $zero, 0x14($t2) +/* 010344 7000F744 8FAB002C */ lw $t3, 0x2c($sp) +/* 010348 7000F748 1561000A */ bne $t3, $at, .L7000F774 +/* 01034C 7000F74C 00000000 */ nop +/* 010350 7000F750 0C006E00 */ jal osPiGetCmdQueue +/* 010354 7000F754 00000000 */ nop +/* 010358 7000F758 00408825 */ move $s1, $v0 +/* 01035C 7000F75C 02202025 */ move $a0, $s1 +/* 010360 7000F760 8FA50028 */ lw $a1, 0x28($sp) +/* 010364 7000F764 0C006DAC */ jal osJamMesg +/* 010368 7000F768 00003025 */ move $a2, $zero +/* 01036C 7000F76C 10000009 */ b .L7000F794 +/* 010370 7000F770 00408025 */ move $s0, $v0 +.L7000F774: +/* 010374 7000F774 0C006E00 */ jal osPiGetCmdQueue +/* 010378 7000F778 00000000 */ nop +/* 01037C 7000F77C 00408825 */ move $s1, $v0 +/* 010380 7000F780 02202025 */ move $a0, $s1 +/* 010384 7000F784 8FA50028 */ lw $a1, 0x28($sp) +/* 010388 7000F788 0C0037C4 */ jal osSendMesg +/* 01038C 7000F78C 00003025 */ move $a2, $zero +/* 010390 7000F790 00408025 */ move $s0, $v0 +.L7000F794: +/* 010394 7000F794 02001025 */ move $v0, $s0 +.L7000F798: +/* 010398 7000F798 8FBF001C */ lw $ra, 0x1c($sp) +/* 01039C 7000F79C 8FB00014 */ lw $s0, 0x14($sp) +/* 0103A0 7000F7A0 8FB10018 */ lw $s1, 0x18($sp) +/* 0103A4 7000F7A4 03E00008 */ jr $ra +/* 0103A8 7000F7A8 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osRecvMesg.s b/src/libultra/osRecvMesg.s new file mode 100644 index 0000000..2506b75 --- /dev/null +++ b/src/libultra/osRecvMesg.s @@ -0,0 +1,96 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osRecvMesg +/* 00E9D0 7000DDD0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00E9D4 7000DDD4 AFBF001C */ sw $ra, 0x1c($sp) +/* 00E9D8 7000DDD8 AFA40028 */ sw $a0, 0x28($sp) +/* 00E9DC 7000DDDC AFA5002C */ sw $a1, 0x2c($sp) +/* 00E9E0 7000DDE0 AFA60030 */ sw $a2, 0x30($sp) +/* 00E9E4 7000DDE4 AFB10018 */ sw $s1, 0x18($sp) +/* 00E9E8 7000DDE8 0C00617C */ jal __osDisableInt +/* 00E9EC 7000DDEC AFB00014 */ sw $s0, 0x14($sp) +/* 00E9F0 7000DDF0 8FAE0028 */ lw $t6, 0x28($sp) +/* 00E9F4 7000DDF4 00408025 */ move $s0, $v0 +/* 00E9F8 7000DDF8 8DCF0008 */ lw $t7, 8($t6) +/* 00E9FC 7000DDFC 15E00012 */ bnez $t7, .L7000DE48 +/* 00EA00 7000DE00 00000000 */ nop +.L7000DE04: +/* 00EA04 7000DE04 8FB80030 */ lw $t8, 0x30($sp) +/* 00EA08 7000DE08 17000005 */ bnez $t8, .L7000DE20 +/* 00EA0C 7000DE0C 00000000 */ nop +/* 00EA10 7000DE10 0C006184 */ jal __osRestoreInt +/* 00EA14 7000DE14 02002025 */ move $a0, $s0 +/* 00EA18 7000DE18 10000036 */ b .L7000DEF4 +/* 00EA1C 7000DE1C 2402FFFF */ li $v0, -1 +.L7000DE20: +/* 00EA20 7000DE20 3C088002 */ lui $t0, %hi(__osRunningThread) +/* 00EA24 7000DE24 8D087730 */ lw $t0, %lo(__osRunningThread)($t0) +/* 00EA28 7000DE28 24190008 */ li $t9, 8 +/* 00EA2C 7000DE2C A5190010 */ sh $t9, 0x10($t0) +/* 00EA30 7000DE30 0C0041EB */ jal __osEnqueueAndYield +/* 00EA34 7000DE34 8FA40028 */ lw $a0, 0x28($sp) +/* 00EA38 7000DE38 8FA90028 */ lw $t1, 0x28($sp) +/* 00EA3C 7000DE3C 8D2A0008 */ lw $t2, 8($t1) +/* 00EA40 7000DE40 1140FFF0 */ beqz $t2, .L7000DE04 +/* 00EA44 7000DE44 00000000 */ nop +.L7000DE48: +/* 00EA48 7000DE48 8FAB002C */ lw $t3, 0x2c($sp) +/* 00EA4C 7000DE4C 11600008 */ beqz $t3, .L7000DE70 +/* 00EA50 7000DE50 00000000 */ nop +/* 00EA54 7000DE54 8FAC0028 */ lw $t4, 0x28($sp) +/* 00EA58 7000DE58 8D8E000C */ lw $t6, 0xc($t4) +/* 00EA5C 7000DE5C 8D8D0014 */ lw $t5, 0x14($t4) +/* 00EA60 7000DE60 000E7880 */ sll $t7, $t6, 2 +/* 00EA64 7000DE64 01AFC021 */ addu $t8, $t5, $t7 +/* 00EA68 7000DE68 8F190000 */ lw $t9, ($t8) +/* 00EA6C 7000DE6C AD790000 */ sw $t9, ($t3) +.L7000DE70: +/* 00EA70 7000DE70 8FA80028 */ lw $t0, 0x28($sp) +/* 00EA74 7000DE74 8D09000C */ lw $t1, 0xc($t0) +/* 00EA78 7000DE78 8D0C0010 */ lw $t4, 0x10($t0) +/* 00EA7C 7000DE7C 252A0001 */ addiu $t2, $t1, 1 +/* 00EA80 7000DE80 014C001A */ div $zero, $t2, $t4 +/* 00EA84 7000DE84 00007010 */ mfhi $t6 +/* 00EA88 7000DE88 AD0E000C */ sw $t6, 0xc($t0) +/* 00EA8C 7000DE8C 8FAD0028 */ lw $t5, 0x28($sp) +/* 00EA90 7000DE90 15800002 */ bnez $t4, .L7000DE9C +/* 00EA94 7000DE94 00000000 */ nop +/* 00EA98 7000DE98 0007000D */ break 7 +.L7000DE9C: +/* 00EA9C 7000DE9C 2401FFFF */ li $at, -1 +/* 00EAA0 7000DEA0 15810004 */ bne $t4, $at, .L7000DEB4 +/* 00EAA4 7000DEA4 3C018000 */ lui $at, 0x8000 +/* 00EAA8 7000DEA8 15410002 */ bne $t2, $at, .L7000DEB4 +/* 00EAAC 7000DEAC 00000000 */ nop +/* 00EAB0 7000DEB0 0006000D */ break 6 +.L7000DEB4: +/* 00EAB4 7000DEB4 8DAF0008 */ lw $t7, 8($t5) +/* 00EAB8 7000DEB8 25F8FFFF */ addiu $t8, $t7, -1 +/* 00EABC 7000DEBC ADB80008 */ sw $t8, 8($t5) +/* 00EAC0 7000DEC0 8FB90028 */ lw $t9, 0x28($sp) +/* 00EAC4 7000DEC4 8F2B0004 */ lw $t3, 4($t9) +/* 00EAC8 7000DEC8 8D690000 */ lw $t1, ($t3) +/* 00EACC 7000DECC 11200006 */ beqz $t1, .L7000DEE8 +/* 00EAD0 7000DED0 00000000 */ nop +/* 00EAD4 7000DED4 0C00423D */ jal __osPopThread +/* 00EAD8 7000DED8 27240004 */ addiu $a0, $t9, 4 +/* 00EADC 7000DEDC 00408825 */ move $s1, $v0 +/* 00EAE0 7000DEE0 0C003560 */ jal osStartThread +/* 00EAE4 7000DEE4 02202025 */ move $a0, $s1 +.L7000DEE8: +/* 00EAE8 7000DEE8 0C006184 */ jal __osRestoreInt +/* 00EAEC 7000DEEC 02002025 */ move $a0, $s0 +/* 00EAF0 7000DEF0 00001025 */ move $v0, $zero +.L7000DEF4: +/* 00EAF4 7000DEF4 8FBF001C */ lw $ra, 0x1c($sp) +/* 00EAF8 7000DEF8 8FB00014 */ lw $s0, 0x14($sp) +/* 00EAFC 7000DEFC 8FB10018 */ lw $s1, 0x18($sp) +/* 00EB00 7000DF00 03E00008 */ jr $ra +/* 00EB04 7000DF04 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osSendMesg.s b/src/libultra/osSendMesg.s new file mode 100644 index 0000000..8446501 --- /dev/null +++ b/src/libultra/osSendMesg.s @@ -0,0 +1,101 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osSendMesg +/* 00EB10 7000DF10 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 00EB14 7000DF14 AFBF0024 */ sw $ra, 0x24($sp) +/* 00EB18 7000DF18 AFA40038 */ sw $a0, 0x38($sp) +/* 00EB1C 7000DF1C AFA5003C */ sw $a1, 0x3c($sp) +/* 00EB20 7000DF20 AFA60040 */ sw $a2, 0x40($sp) +/* 00EB24 7000DF24 AFB20020 */ sw $s2, 0x20($sp) +/* 00EB28 7000DF28 AFB1001C */ sw $s1, 0x1c($sp) +/* 00EB2C 7000DF2C 0C00617C */ jal __osDisableInt +/* 00EB30 7000DF30 AFB00018 */ sw $s0, 0x18($sp) +/* 00EB34 7000DF34 8FAE0038 */ lw $t6, 0x38($sp) +/* 00EB38 7000DF38 00408025 */ move $s0, $v0 +/* 00EB3C 7000DF3C 8DCF0008 */ lw $t7, 8($t6) +/* 00EB40 7000DF40 8DD80010 */ lw $t8, 0x10($t6) +/* 00EB44 7000DF44 01F8082A */ slt $at, $t7, $t8 +/* 00EB48 7000DF48 14200018 */ bnez $at, .L7000DFAC +/* 00EB4C 7000DF4C 00000000 */ nop +.L7000DF50: +/* 00EB50 7000DF50 8FB90040 */ lw $t9, 0x40($sp) +/* 00EB54 7000DF54 24010001 */ li $at, 1 +/* 00EB58 7000DF58 1721000A */ bne $t9, $at, .L7000DF84 +/* 00EB5C 7000DF5C 00000000 */ nop +/* 00EB60 7000DF60 3C098002 */ lui $t1, %hi(__osRunningThread) +/* 00EB64 7000DF64 8D297730 */ lw $t1, %lo(__osRunningThread)($t1) +/* 00EB68 7000DF68 24080008 */ li $t0, 8 +/* 00EB6C 7000DF6C A5280010 */ sh $t0, 0x10($t1) +/* 00EB70 7000DF70 8FA40038 */ lw $a0, 0x38($sp) +/* 00EB74 7000DF74 0C0041EB */ jal __osEnqueueAndYield +/* 00EB78 7000DF78 24840004 */ addiu $a0, $a0, 4 +/* 00EB7C 7000DF7C 10000005 */ b .L7000DF94 +/* 00EB80 7000DF80 00000000 */ nop +.L7000DF84: +/* 00EB84 7000DF84 0C006184 */ jal __osRestoreInt +/* 00EB88 7000DF88 02002025 */ move $a0, $s0 +/* 00EB8C 7000DF8C 1000002D */ b .L7000E044 +/* 00EB90 7000DF90 2402FFFF */ li $v0, -1 +.L7000DF94: +/* 00EB94 7000DF94 8FAA0038 */ lw $t2, 0x38($sp) +/* 00EB98 7000DF98 8D4B0008 */ lw $t3, 8($t2) +/* 00EB9C 7000DF9C 8D4C0010 */ lw $t4, 0x10($t2) +/* 00EBA0 7000DFA0 016C082A */ slt $at, $t3, $t4 +/* 00EBA4 7000DFA4 1020FFEA */ beqz $at, .L7000DF50 +/* 00EBA8 7000DFA8 00000000 */ nop +.L7000DFAC: +/* 00EBAC 7000DFAC 8FAD0038 */ lw $t5, 0x38($sp) +/* 00EBB0 7000DFB0 8FA8003C */ lw $t0, 0x3c($sp) +/* 00EBB4 7000DFB4 8DAE000C */ lw $t6, 0xc($t5) +/* 00EBB8 7000DFB8 8DAF0008 */ lw $t7, 8($t5) +/* 00EBBC 7000DFBC 8DB90010 */ lw $t9, 0x10($t5) +/* 00EBC0 7000DFC0 8DA90014 */ lw $t1, 0x14($t5) +/* 00EBC4 7000DFC4 01CFC021 */ addu $t8, $t6, $t7 +/* 00EBC8 7000DFC8 0319001A */ div $zero, $t8, $t9 +/* 00EBCC 7000DFCC 00008810 */ mfhi $s1 +/* 00EBD0 7000DFD0 00115080 */ sll $t2, $s1, 2 +/* 00EBD4 7000DFD4 012A5821 */ addu $t3, $t1, $t2 +/* 00EBD8 7000DFD8 AD680000 */ sw $t0, ($t3) +/* 00EBDC 7000DFDC 8FAC0038 */ lw $t4, 0x38($sp) +/* 00EBE0 7000DFE0 17200002 */ bnez $t9, .L7000DFEC +/* 00EBE4 7000DFE4 00000000 */ nop +/* 00EBE8 7000DFE8 0007000D */ break 7 +.L7000DFEC: +/* 00EBEC 7000DFEC 2401FFFF */ li $at, -1 +/* 00EBF0 7000DFF0 17210004 */ bne $t9, $at, .L7000E004 +/* 00EBF4 7000DFF4 3C018000 */ lui $at, 0x8000 +/* 00EBF8 7000DFF8 17010002 */ bne $t8, $at, .L7000E004 +/* 00EBFC 7000DFFC 00000000 */ nop +/* 00EC00 7000E000 0006000D */ break 6 +.L7000E004: +/* 00EC04 7000E004 8D8E0008 */ lw $t6, 8($t4) +/* 00EC08 7000E008 25CF0001 */ addiu $t7, $t6, 1 +/* 00EC0C 7000E00C AD8F0008 */ sw $t7, 8($t4) +/* 00EC10 7000E010 8FB80038 */ lw $t8, 0x38($sp) +/* 00EC14 7000E014 8F190000 */ lw $t9, ($t8) +/* 00EC18 7000E018 8F2D0000 */ lw $t5, ($t9) +/* 00EC1C 7000E01C 11A00006 */ beqz $t5, .L7000E038 +/* 00EC20 7000E020 00000000 */ nop +/* 00EC24 7000E024 0C00423D */ jal __osPopThread +/* 00EC28 7000E028 03002025 */ move $a0, $t8 +/* 00EC2C 7000E02C 00409025 */ move $s2, $v0 +/* 00EC30 7000E030 0C003560 */ jal osStartThread +/* 00EC34 7000E034 02402025 */ move $a0, $s2 +.L7000E038: +/* 00EC38 7000E038 0C006184 */ jal __osRestoreInt +/* 00EC3C 7000E03C 02002025 */ move $a0, $s0 +/* 00EC40 7000E040 00001025 */ move $v0, $zero +.L7000E044: +/* 00EC44 7000E044 8FBF0024 */ lw $ra, 0x24($sp) +/* 00EC48 7000E048 8FB00018 */ lw $s0, 0x18($sp) +/* 00EC4C 7000E04C 8FB1001C */ lw $s1, 0x1c($sp) +/* 00EC50 7000E050 8FB20020 */ lw $s2, 0x20($sp) +/* 00EC54 7000E054 03E00008 */ jr $ra +/* 00EC58 7000E058 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/src/libultra/osSetEventMesg.s b/src/libultra/osSetEventMesg.s new file mode 100644 index 0000000..ad7ad44 --- /dev/null +++ b/src/libultra/osSetEventMesg.s @@ -0,0 +1,162 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osSetEventMesg +/* 00E850 7000DC50 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00E854 7000DC54 AFBF001C */ sw $ra, 0x1c($sp) +/* 00E858 7000DC58 AFA40028 */ sw $a0, 0x28($sp) +/* 00E85C 7000DC5C AFA5002C */ sw $a1, 0x2c($sp) +/* 00E860 7000DC60 AFA60030 */ sw $a2, 0x30($sp) +/* 00E864 7000DC64 0C00617C */ jal __osDisableInt +/* 00E868 7000DC68 AFB00018 */ sw $s0, 0x18($sp) +/* 00E86C 7000DC6C 8FAE0028 */ lw $t6, 0x28($sp) +/* 00E870 7000DC70 3C188006 */ lui $t8, %hi(__osEventStateTab) +/* 00E874 7000DC74 8FA8002C */ lw $t0, 0x2c($sp) +/* 00E878 7000DC78 27186A10 */ addiu $t8, %lo(__osEventStateTab) # addiu $t8, $t8, 0x6a10 +/* 00E87C 7000DC7C 000E78C0 */ sll $t7, $t6, 3 +/* 00E880 7000DC80 01F8C821 */ addu $t9, $t7, $t8 +/* 00E884 7000DC84 AFB90020 */ sw $t9, 0x20($sp) +/* 00E888 7000DC88 AF280000 */ sw $t0, ($t9) +/* 00E88C 7000DC8C 8FAA0020 */ lw $t2, 0x20($sp) +/* 00E890 7000DC90 8FA90030 */ lw $t1, 0x30($sp) +/* 00E894 7000DC94 00408025 */ move $s0, $v0 +/* 00E898 7000DC98 02002025 */ move $a0, $s0 +/* 00E89C 7000DC9C 0C006184 */ jal __osRestoreInt +/* 00E8A0 7000DCA0 AD490004 */ sw $t1, 4($t2) +/* 00E8A4 7000DCA4 8FBF001C */ lw $ra, 0x1c($sp) +/* 00E8A8 7000DCA8 8FB00018 */ lw $s0, 0x18($sp) +/* 00E8AC 7000DCAC 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00E8B0 7000DCB0 03E00008 */ jr $ra +/* 00E8B4 7000DCB4 00000000 */ nop + +.section .bss +glabel __osEventStateTab +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 +.byte 0 + + + diff --git a/src/libultra/osSetIntMask.s b/src/libultra/osSetIntMask.s new file mode 100644 index 0000000..9b73eb9 --- /dev/null +++ b/src/libultra/osSetIntMask.s @@ -0,0 +1,62 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osSetIntMask +/* 00E930 7000DD30 400C6000 */ mfc0 $t4, $12 +/* 00E934 7000DD34 3182FF01 */ andi $v0, $t4, 0xff01 +/* 00E938 7000DD38 3C088002 */ lui $t0, %hi(__OSGlobalIntMask) +/* 00E93C 7000DD3C 2508698C */ addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x698c +/* 00E940 7000DD40 8D0B0000 */ lw $t3, ($t0) +/* 00E944 7000DD44 2401FFFF */ li $at, -1 +/* 00E948 7000DD48 01614026 */ xor $t0, $t3, $at +/* 00E94C 7000DD4C 3108FF00 */ andi $t0, $t0, 0xff00 +/* 00E950 7000DD50 00481025 */ or $v0, $v0, $t0 +/* 00E954 7000DD54 3C0AA430 */ lui $t2, %hi(MI_INTR_MASK_REG) # $t2, 0xa430 +/* 00E958 7000DD58 8D4A000C */ lw $t2, %lo(MI_INTR_MASK_REG)($t2) +/* 00E95C 7000DD5C 11400005 */ beqz $t2, .L7000DD74 +/* 00E960 7000DD60 000B4C02 */ srl $t1, $t3, 0x10 +/* 00E964 7000DD64 2401FFFF */ li $at, -1 +/* 00E968 7000DD68 01214826 */ xor $t1, $t1, $at +/* 00E96C 7000DD6C 3129003F */ andi $t1, $t1, 0x3f +/* 00E970 7000DD70 01495025 */ or $t2, $t2, $t1 +.L7000DD74: +/* 00E974 7000DD74 000A5400 */ sll $t2, $t2, 0x10 +/* 00E978 7000DD78 004A1025 */ or $v0, $v0, $t2 +/* 00E97C 7000DD7C 3C01003F */ lui $at, 0x3f +/* 00E980 7000DD80 00814024 */ and $t0, $a0, $at +/* 00E984 7000DD84 010B4024 */ and $t0, $t0, $t3 +/* 00E988 7000DD88 000843C2 */ srl $t0, $t0, 0xf +/* 00E98C 7000DD8C 3C0A8003 */ lui $t2, %hi(__osRcpImTable) +/* 00E990 7000DD90 01485021 */ addu $t2, $t2, $t0 +/* 00E994 7000DD94 954A93A0 */ lhu $t2, %lo(__osRcpImTable)($t2) +/* 00E998 7000DD98 3C01A430 */ lui $at, %hi(MI_INTR_MASK_REG) # $at, 0xa430 +/* 00E99C 7000DD9C AC2A000C */ sw $t2, %lo(MI_INTR_MASK_REG)($at) +/* 00E9A0 7000DDA0 3088FF01 */ andi $t0, $a0, 0xff01 +/* 00E9A4 7000DDA4 3169FF00 */ andi $t1, $t3, 0xff00 +/* 00E9A8 7000DDA8 01094024 */ and $t0, $t0, $t1 +/* 00E9AC 7000DDAC 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff +/* 00E9B0 7000DDB0 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff +/* 00E9B4 7000DDB4 01816024 */ and $t4, $t4, $at +/* 00E9B8 7000DDB8 01886025 */ or $t4, $t4, $t0 +/* 00E9BC 7000DDBC 408C6000 */ mtc0 $t4, $12 +/* 00E9C0 7000DDC0 00000000 */ nop +/* 00E9C4 7000DDC4 00000000 */ nop +/* 00E9C8 7000DDC8 03E00008 */ jr $ra +/* 00E9CC 7000DDCC 00000000 */ nop + +.section .rodata +glabel __osRcpImTable + .half 0x555, 0x556, 0x559, 0x55a, 0x565, 0x566, 0x569, 0x56a + .half 0x595, 0x596, 0x599, 0x59a, 0x5a5, 0x5a6, 0x5a9, 0x5aa + .half 0x655, 0x656, 0x659, 0x65a, 0x665, 0x666, 0x669, 0x66a + .half 0x695, 0x696, 0x699, 0x69a, 0x6a5, 0x6a6, 0x6a9, 0x6aa + .half 0x955, 0x956, 0x959, 0x95a, 0x965, 0x966, 0x969, 0x96a + .half 0x995, 0x996, 0x999, 0x99a, 0x9a5, 0x9a6, 0x9a9, 0x9aa + .half 0xa55, 0xa56, 0xa59, 0xa5a, 0xa65, 0xa66, 0xa69, 0xa6a + .half 0xa95, 0xa96, 0xa99, 0xa9a, 0xaa5, 0xaa6, 0xaa9, 0xaaa diff --git a/src/libultra/osSetThreadPri.s b/src/libultra/osSetThreadPri.s new file mode 100644 index 0000000..e015c47 --- /dev/null +++ b/src/libultra/osSetThreadPri.s @@ -0,0 +1,70 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osSetThreadPri +/* 00E400 7000D800 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00E404 7000D804 AFBF001C */ sw $ra, 0x1c($sp) +/* 00E408 7000D808 AFA40028 */ sw $a0, 0x28($sp) +/* 00E40C 7000D80C AFA5002C */ sw $a1, 0x2c($sp) +/* 00E410 7000D810 0C00617C */ jal __osDisableInt +/* 00E414 7000D814 AFB00018 */ sw $s0, 0x18($sp) +/* 00E418 7000D818 8FAE0028 */ lw $t6, 0x28($sp) +/* 00E41C 7000D81C 00408025 */ move $s0, $v0 +/* 00E420 7000D820 15C00004 */ bnez $t6, .L7000D834 +/* 00E424 7000D824 00000000 */ nop +/* 00E428 7000D828 3C0F8002 */ lui $t7, %hi(__osRunningThread) +/* 00E42C 7000D82C 8DEF7730 */ lw $t7, %lo(__osRunningThread)($t7) +/* 00E430 7000D830 AFAF0028 */ sw $t7, 0x28($sp) +.L7000D834: +/* 00E434 7000D834 8FB80028 */ lw $t8, 0x28($sp) +/* 00E438 7000D838 8FA8002C */ lw $t0, 0x2c($sp) +/* 00E43C 7000D83C 8F190004 */ lw $t9, 4($t8) +/* 00E440 7000D840 13280020 */ beq $t9, $t0, .L7000D8C4 +/* 00E444 7000D844 00000000 */ nop +/* 00E448 7000D848 AF080004 */ sw $t0, 4($t8) +/* 00E44C 7000D84C 3C0A8002 */ lui $t2, %hi(__osRunningThread) +/* 00E450 7000D850 8D4A7730 */ lw $t2, %lo(__osRunningThread)($t2) +/* 00E454 7000D854 8FA90028 */ lw $t1, 0x28($sp) +/* 00E458 7000D858 112A000C */ beq $t1, $t2, .L7000D88C +/* 00E45C 7000D85C 00000000 */ nop +/* 00E460 7000D860 952B0010 */ lhu $t3, 0x10($t1) +/* 00E464 7000D864 24010001 */ li $at, 1 +/* 00E468 7000D868 11610008 */ beq $t3, $at, .L7000D88C +/* 00E46C 7000D86C 00000000 */ nop +/* 00E470 7000D870 8D240008 */ lw $a0, 8($t1) +/* 00E474 7000D874 0C0042A4 */ jal __osDequeueThread +/* 00E478 7000D878 01202825 */ move $a1, $t1 +/* 00E47C 7000D87C 8FAC0028 */ lw $t4, 0x28($sp) +/* 00E480 7000D880 8D840008 */ lw $a0, 8($t4) +/* 00E484 7000D884 0C00422B */ jal __osEnqueueThread +/* 00E488 7000D888 01802825 */ move $a1, $t4 +.L7000D88C: +/* 00E48C 7000D88C 3C0D8002 */ lui $t5, %hi(__osRunningThread) +/* 00E490 7000D890 3C0F8002 */ lui $t7, %hi(__osRunQueue) +/* 00E494 7000D894 8DEF7728 */ lw $t7, %lo(__osRunQueue)($t7) +/* 00E498 7000D898 8DAD7730 */ lw $t5, %lo(__osRunningThread)($t5) +/* 00E49C 7000D89C 8DF90004 */ lw $t9, 4($t7) +/* 00E4A0 7000D8A0 8DAE0004 */ lw $t6, 4($t5) +/* 00E4A4 7000D8A4 01D9082A */ slt $at, $t6, $t9 +/* 00E4A8 7000D8A8 10200006 */ beqz $at, .L7000D8C4 +/* 00E4AC 7000D8AC 00000000 */ nop +/* 00E4B0 7000D8B0 24080002 */ li $t0, 2 +/* 00E4B4 7000D8B4 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 00E4B8 7000D8B8 A5A80010 */ sh $t0, 0x10($t5) +/* 00E4BC 7000D8BC 0C0041EB */ jal __osEnqueueAndYield +/* 00E4C0 7000D8C0 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +.L7000D8C4: +/* 00E4C4 7000D8C4 0C006184 */ jal __osRestoreInt +/* 00E4C8 7000D8C8 02002025 */ move $a0, $s0 +/* 00E4CC 7000D8CC 8FBF001C */ lw $ra, 0x1c($sp) +/* 00E4D0 7000D8D0 8FB00018 */ lw $s0, 0x18($sp) +/* 00E4D4 7000D8D4 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00E4D8 7000D8D8 03E00008 */ jr $ra +/* 00E4DC 7000D8DC 00000000 */ nop diff --git a/src/libultra/osSetTimer.s b/src/libultra/osSetTimer.s new file mode 100644 index 0000000..5b04978 --- /dev/null +++ b/src/libultra/osSetTimer.s @@ -0,0 +1,67 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osSetTimer +/* 011850 70010C50 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 011854 70010C54 AFA40020 */ sw $a0, 0x20($sp) +/* 011858 70010C58 8FAE0020 */ lw $t6, 0x20($sp) +/* 01185C 70010C5C AFBF0014 */ sw $ra, 0x14($sp) +/* 011860 70010C60 AFA60028 */ sw $a2, 0x28($sp) +/* 011864 70010C64 AFA7002C */ sw $a3, 0x2c($sp) +/* 011868 70010C68 ADC00000 */ sw $zero, ($t6) +/* 01186C 70010C6C 8FAF0020 */ lw $t7, 0x20($sp) +/* 011870 70010C70 ADE00004 */ sw $zero, 4($t7) +/* 011874 70010C74 8FA80020 */ lw $t0, 0x20($sp) +/* 011878 70010C78 8FB90034 */ lw $t9, 0x34($sp) +/* 01187C 70010C7C 8FB80030 */ lw $t8, 0x30($sp) +/* 011880 70010C80 AD19000C */ sw $t9, 0xc($t0) +/* 011884 70010C84 AD180008 */ sw $t8, 8($t0) +/* 011888 70010C88 8FAA0028 */ lw $t2, 0x28($sp) +/* 01188C 70010C8C 8FAB002C */ lw $t3, 0x2c($sp) +/* 011890 70010C90 15400003 */ bnez $t2, .L70010CA0 +/* 011894 70010C94 00000000 */ nop +/* 011898 70010C98 11600005 */ beqz $t3, .L70010CB0 +/* 01189C 70010C9C 00000000 */ nop +.L70010CA0: +/* 0118A0 70010CA0 8FA90020 */ lw $t1, 0x20($sp) +/* 0118A4 70010CA4 AD2A0010 */ sw $t2, 0x10($t1) +/* 0118A8 70010CA8 10000006 */ b .L70010CC4 +/* 0118AC 70010CAC AD2B0014 */ sw $t3, 0x14($t1) +.L70010CB0: +/* 0118B0 70010CB0 8FAE0020 */ lw $t6, 0x20($sp) +/* 0118B4 70010CB4 8FAC0030 */ lw $t4, 0x30($sp) +/* 0118B8 70010CB8 8FAD0034 */ lw $t5, 0x34($sp) +/* 0118BC 70010CBC ADCC0010 */ sw $t4, 0x10($t6) +/* 0118C0 70010CC0 ADCD0014 */ sw $t5, 0x14($t6) +.L70010CC4: +/* 0118C4 70010CC4 8FAF0038 */ lw $t7, 0x38($sp) +/* 0118C8 70010CC8 8FB80020 */ lw $t8, 0x20($sp) +/* 0118CC 70010CCC AF0F0018 */ sw $t7, 0x18($t8) +/* 0118D0 70010CD0 8FA80020 */ lw $t0, 0x20($sp) +/* 0118D4 70010CD4 8FB9003C */ lw $t9, 0x3c($sp) +/* 0118D8 70010CD8 AD19001C */ sw $t9, 0x1c($t0) +/* 0118DC 70010CDC 0C00622A */ jal __osInsertTimer +/* 0118E0 70010CE0 8FA40020 */ lw $a0, 0x20($sp) +/* 0118E4 70010CE4 3C0A8002 */ lui $t2, %hi(__osTimerList) +/* 0118E8 70010CE8 8D4A7FD0 */ lw $t2, %lo(__osTimerList)($t2) +/* 0118EC 70010CEC AFA20018 */ sw $v0, 0x18($sp) +/* 0118F0 70010CF0 AFA3001C */ sw $v1, 0x1c($sp) +/* 0118F4 70010CF4 8FA90020 */ lw $t1, 0x20($sp) +/* 0118F8 70010CF8 8D4B0000 */ lw $t3, ($t2) +/* 0118FC 70010CFC 15690004 */ bne $t3, $t1, .L70010D10 +/* 011900 70010D00 00000000 */ nop +/* 011904 70010D04 8FA40018 */ lw $a0, 0x18($sp) +/* 011908 70010D08 0C00620D */ jal __osSetTimerIntr +/* 01190C 70010D0C 8FA5001C */ lw $a1, 0x1c($sp) +.L70010D10: +/* 011910 70010D10 8FBF0014 */ lw $ra, 0x14($sp) +/* 011914 70010D14 27BD0020 */ addiu $sp, $sp, 0x20 +/* 011918 70010D18 00001025 */ move $v0, $zero +/* 01191C 70010D1C 03E00008 */ jr $ra +/* 011920 70010D20 00000000 */ nop diff --git a/src/libultra/osSpTaskLoad.s b/src/libultra/osSpTaskLoad.s new file mode 100644 index 0000000..7ead55b --- /dev/null +++ b/src/libultra/osSpTaskLoad.s @@ -0,0 +1,248 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +.section .bss + +glabel tp +glabel type +.word 0 +glabel flags +.word 0 +glabel t_ucode_boot +.word 0 +glabel t_ucode_boot_size +.word 0 +glabel t_ucode +.word 0 +glabel t_ucode_size +.word 0 +glabel t_ucode_data +.word 0 +glabel t_ucode_data_size +.word 0 +glabel t_dram_stack +.word 0 +glabel t_dram_stack_size +.word 0 +glabel t_output_buff +.word 0 +glabel t_output_buff_size +.word 0 +glabel t_data_ptr +.word 0 +glabel t_data_size +.word 0 +glabel t_yield_data_ptr +.word 0 +glabel t_yield_data_size +.word 0 + + + + +.section .text +glabel _VirtualToPhysicalTask +/* 00F0F0 7000E4F0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 00F0F4 7000E4F4 3C0E8006 */ lui $t6, %hi(tp) +/* 00F0F8 7000E4F8 AFBF0014 */ sw $ra, 0x14($sp) +/* 00F0FC 7000E4FC AFA40020 */ sw $a0, 0x20($sp) +/* 00F100 7000E500 25CE6A90 */ addiu $t6, %lo(tp) # addiu $t6, $t6, 0x6a90 +/* 00F104 7000E504 AFAE001C */ sw $t6, 0x1c($sp) +/* 00F108 7000E508 01C02825 */ move $a1, $t6 +/* 00F10C 7000E50C 8FA40020 */ lw $a0, 0x20($sp) +/* 00F110 7000E510 0C003E5C */ jal _bcopy +/* 00F114 7000E514 24060040 */ li $a2, 64 +/* 00F118 7000E518 8FAF001C */ lw $t7, 0x1c($sp) +/* 00F11C 7000E51C 8DF80010 */ lw $t8, 0x10($t7) +/* 00F120 7000E520 13000005 */ beqz $t8, .L7000E538 +/* 00F124 7000E524 00000000 */ nop +/* 00F128 7000E528 0C003A2C */ jal osVirtualToPhysical +/* 00F12C 7000E52C 03002025 */ move $a0, $t8 +/* 00F130 7000E530 8FB9001C */ lw $t9, 0x1c($sp) +/* 00F134 7000E534 AF220010 */ sw $v0, 0x10($t9) +.L7000E538: +/* 00F138 7000E538 8FA8001C */ lw $t0, 0x1c($sp) +/* 00F13C 7000E53C 8D090018 */ lw $t1, 0x18($t0) +/* 00F140 7000E540 11200005 */ beqz $t1, .L7000E558 +/* 00F144 7000E544 00000000 */ nop +/* 00F148 7000E548 0C003A2C */ jal osVirtualToPhysical +/* 00F14C 7000E54C 01202025 */ move $a0, $t1 +/* 00F150 7000E550 8FAA001C */ lw $t2, 0x1c($sp) +/* 00F154 7000E554 AD420018 */ sw $v0, 0x18($t2) +.L7000E558: +/* 00F158 7000E558 8FAB001C */ lw $t3, 0x1c($sp) +/* 00F15C 7000E55C 8D6C0020 */ lw $t4, 0x20($t3) +/* 00F160 7000E560 11800005 */ beqz $t4, .L7000E578 +/* 00F164 7000E564 00000000 */ nop +/* 00F168 7000E568 0C003A2C */ jal osVirtualToPhysical +/* 00F16C 7000E56C 01802025 */ move $a0, $t4 +/* 00F170 7000E570 8FAD001C */ lw $t5, 0x1c($sp) +/* 00F174 7000E574 ADA20020 */ sw $v0, 0x20($t5) +.L7000E578: +/* 00F178 7000E578 8FAE001C */ lw $t6, 0x1c($sp) +/* 00F17C 7000E57C 8DCF0028 */ lw $t7, 0x28($t6) +/* 00F180 7000E580 11E00005 */ beqz $t7, .L7000E598 +/* 00F184 7000E584 00000000 */ nop +/* 00F188 7000E588 0C003A2C */ jal osVirtualToPhysical +/* 00F18C 7000E58C 01E02025 */ move $a0, $t7 +/* 00F190 7000E590 8FB8001C */ lw $t8, 0x1c($sp) +/* 00F194 7000E594 AF020028 */ sw $v0, 0x28($t8) +.L7000E598: +/* 00F198 7000E598 8FB9001C */ lw $t9, 0x1c($sp) +/* 00F19C 7000E59C 8F28002C */ lw $t0, 0x2c($t9) +/* 00F1A0 7000E5A0 11000005 */ beqz $t0, .L7000E5B8 +/* 00F1A4 7000E5A4 00000000 */ nop +/* 00F1A8 7000E5A8 0C003A2C */ jal osVirtualToPhysical +/* 00F1AC 7000E5AC 01002025 */ move $a0, $t0 +/* 00F1B0 7000E5B0 8FA9001C */ lw $t1, 0x1c($sp) +/* 00F1B4 7000E5B4 AD22002C */ sw $v0, 0x2c($t1) +.L7000E5B8: +/* 00F1B8 7000E5B8 8FAA001C */ lw $t2, 0x1c($sp) +/* 00F1BC 7000E5BC 8D4B0030 */ lw $t3, 0x30($t2) +/* 00F1C0 7000E5C0 11600005 */ beqz $t3, .L7000E5D8 +/* 00F1C4 7000E5C4 00000000 */ nop +/* 00F1C8 7000E5C8 0C003A2C */ jal osVirtualToPhysical +/* 00F1CC 7000E5CC 01602025 */ move $a0, $t3 +/* 00F1D0 7000E5D0 8FAC001C */ lw $t4, 0x1c($sp) +/* 00F1D4 7000E5D4 AD820030 */ sw $v0, 0x30($t4) +.L7000E5D8: +/* 00F1D8 7000E5D8 8FAD001C */ lw $t5, 0x1c($sp) +/* 00F1DC 7000E5DC 8DAE0038 */ lw $t6, 0x38($t5) +/* 00F1E0 7000E5E0 11C00005 */ beqz $t6, .L7000E5F8 +/* 00F1E4 7000E5E4 00000000 */ nop +/* 00F1E8 7000E5E8 0C003A2C */ jal osVirtualToPhysical +/* 00F1EC 7000E5EC 01C02025 */ move $a0, $t6 +/* 00F1F0 7000E5F0 8FAF001C */ lw $t7, 0x1c($sp) +/* 00F1F4 7000E5F4 ADE20038 */ sw $v0, 0x38($t7) +.L7000E5F8: +/* 00F1F8 7000E5F8 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F1FC 7000E5FC 8FA2001C */ lw $v0, 0x1c($sp) +/* 00F200 7000E600 27BD0020 */ addiu $sp, $sp, 0x20 +/* 00F204 7000E604 03E00008 */ jr $ra +/* 00F208 7000E608 00000000 */ nop + +glabel osSpTaskLoad +/* 00F20C 7000E60C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 00F210 7000E610 AFBF0014 */ sw $ra, 0x14($sp) +/* 00F214 7000E614 AFA40020 */ sw $a0, 0x20($sp) +/* 00F218 7000E618 0C00393C */ jal _VirtualToPhysicalTask +/* 00F21C 7000E61C 8FA40020 */ lw $a0, 0x20($sp) +/* 00F220 7000E620 AFA2001C */ sw $v0, 0x1c($sp) +/* 00F224 7000E624 8FAE001C */ lw $t6, 0x1c($sp) +/* 00F228 7000E628 8DCF0004 */ lw $t7, 4($t6) +/* 00F22C 7000E62C 31F80001 */ andi $t8, $t7, 1 +/* 00F230 7000E630 1300000B */ beqz $t8, .L7000E660 +/* 00F234 7000E634 00000000 */ nop +/* 00F238 7000E638 8DD90038 */ lw $t9, 0x38($t6) +/* 00F23C 7000E63C 2401FFFE */ li $at, -2 +/* 00F240 7000E640 ADD90018 */ sw $t9, 0x18($t6) +/* 00F244 7000E644 8FA8001C */ lw $t0, 0x1c($sp) +/* 00F248 7000E648 8D09003C */ lw $t1, 0x3c($t0) +/* 00F24C 7000E64C AD09001C */ sw $t1, 0x1c($t0) +/* 00F250 7000E650 8FAA0020 */ lw $t2, 0x20($sp) +/* 00F254 7000E654 8D4B0004 */ lw $t3, 4($t2) +/* 00F258 7000E658 01616024 */ and $t4, $t3, $at +/* 00F25C 7000E65C AD4C0004 */ sw $t4, 4($t2) +.L7000E660: +/* 00F260 7000E660 8FA4001C */ lw $a0, 0x1c($sp) +/* 00F264 7000E664 0C0042F4 */ jal osWritebackDCache +/* 00F268 7000E668 24050040 */ li $a1, 64 +/* 00F26C 7000E66C 0C0063B8 */ jal __osSpSetStatus +/* 00F270 7000E670 24042B00 */ li $a0, 11008 +/* 00F274 7000E674 3C040400 */ lui $a0, (0x04001000 >> 16) # lui $a0, 0x400 +/* 00F278 7000E678 0C0063BC */ jal __osSpSetPc +/* 00F27C 7000E67C 34841000 */ ori $a0, (0x04001000 & 0xFFFF) # ori $a0, $a0, 0x1000 +/* 00F280 7000E680 2401FFFF */ li $at, -1 +/* 00F284 7000E684 14410007 */ bne $v0, $at, .L7000E6A4 +/* 00F288 7000E688 00000000 */ nop +.L7000E68C: +/* 00F28C 7000E68C 3C040400 */ lui $a0, (0x04001000 >> 16) # lui $a0, 0x400 +/* 00F290 7000E690 0C0063BC */ jal __osSpSetPc +/* 00F294 7000E694 34841000 */ ori $a0, (0x04001000 & 0xFFFF) # ori $a0, $a0, 0x1000 +/* 00F298 7000E698 2401FFFF */ li $at, -1 +/* 00F29C 7000E69C 1041FFFB */ beq $v0, $at, .L7000E68C +/* 00F2A0 7000E6A0 00000000 */ nop +.L7000E6A4: +/* 00F2A4 7000E6A4 3C050400 */ lui $a1, (0x04000FC0 >> 16) # lui $a1, 0x400 +/* 00F2A8 7000E6A8 34A50FC0 */ ori $a1, (0x04000FC0 & 0xFFFF) # ori $a1, $a1, 0xfc0 +/* 00F2AC 7000E6AC 24040001 */ li $a0, 1 +/* 00F2B0 7000E6B0 8FA6001C */ lw $a2, 0x1c($sp) +/* 00F2B4 7000E6B4 0C0063CC */ jal __osSpRawStartDma +/* 00F2B8 7000E6B8 24070040 */ li $a3, 64 +/* 00F2BC 7000E6BC 2401FFFF */ li $at, -1 +/* 00F2C0 7000E6C0 1441000A */ bne $v0, $at, .L7000E6EC +/* 00F2C4 7000E6C4 00000000 */ nop +.L7000E6C8: +/* 00F2C8 7000E6C8 3C050400 */ lui $a1, (0x04000FC0 >> 16) # lui $a1, 0x400 +/* 00F2CC 7000E6CC 34A50FC0 */ ori $a1, (0x04000FC0 & 0xFFFF) # ori $a1, $a1, 0xfc0 +/* 00F2D0 7000E6D0 24040001 */ li $a0, 1 +/* 00F2D4 7000E6D4 8FA6001C */ lw $a2, 0x1c($sp) +/* 00F2D8 7000E6D8 0C0063CC */ jal __osSpRawStartDma +/* 00F2DC 7000E6DC 24070040 */ li $a3, 64 +/* 00F2E0 7000E6E0 2401FFFF */ li $at, -1 +/* 00F2E4 7000E6E4 1041FFF8 */ beq $v0, $at, .L7000E6C8 +/* 00F2E8 7000E6E8 00000000 */ nop +.L7000E6EC: +/* 00F2EC 7000E6EC 0C0063F0 */ jal __osSpDeviceBusy +/* 00F2F0 7000E6F0 00000000 */ nop +/* 00F2F4 7000E6F4 10400005 */ beqz $v0, .L7000E70C +/* 00F2F8 7000E6F8 00000000 */ nop +.L7000E6FC: +/* 00F2FC 7000E6FC 0C0063F0 */ jal __osSpDeviceBusy +/* 00F300 7000E700 00000000 */ nop +/* 00F304 7000E704 1440FFFD */ bnez $v0, .L7000E6FC +/* 00F308 7000E708 00000000 */ nop +.L7000E70C: +/* 00F30C 7000E70C 8FAD001C */ lw $t5, 0x1c($sp) +/* 00F310 7000E710 3C050400 */ lui $a1, (0x04001000 >> 16) # lui $a1, 0x400 +/* 00F314 7000E714 34A51000 */ ori $a1, (0x04001000 & 0xFFFF) # ori $a1, $a1, 0x1000 +/* 00F318 7000E718 24040001 */ li $a0, 1 +/* 00F31C 7000E71C 8DA60008 */ lw $a2, 8($t5) +/* 00F320 7000E720 0C0063CC */ jal __osSpRawStartDma +/* 00F324 7000E724 8DA7000C */ lw $a3, 0xc($t5) +/* 00F328 7000E728 2401FFFF */ li $at, -1 +/* 00F32C 7000E72C 1441000B */ bne $v0, $at, .L7000E75C +/* 00F330 7000E730 00000000 */ nop +.L7000E734: +/* 00F334 7000E734 8FAF001C */ lw $t7, 0x1c($sp) +/* 00F338 7000E738 3C050400 */ lui $a1, (0x04001000 >> 16) # lui $a1, 0x400 +/* 00F33C 7000E73C 34A51000 */ ori $a1, (0x04001000 & 0xFFFF) # ori $a1, $a1, 0x1000 +/* 00F340 7000E740 24040001 */ li $a0, 1 +/* 00F344 7000E744 8DE60008 */ lw $a2, 8($t7) +/* 00F348 7000E748 0C0063CC */ jal __osSpRawStartDma +/* 00F34C 7000E74C 8DE7000C */ lw $a3, 0xc($t7) +/* 00F350 7000E750 2401FFFF */ li $at, -1 +/* 00F354 7000E754 1041FFF7 */ beq $v0, $at, .L7000E734 +/* 00F358 7000E758 00000000 */ nop +.L7000E75C: +/* 00F35C 7000E75C 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F360 7000E760 27BD0020 */ addiu $sp, $sp, 0x20 +/* 00F364 7000E764 03E00008 */ jr $ra +/* 00F368 7000E768 00000000 */ nop + +glabel osSpTaskStartGo +/* 00F36C 7000E76C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 00F370 7000E770 AFBF0014 */ sw $ra, 0x14($sp) +/* 00F374 7000E774 0C0063F0 */ jal __osSpDeviceBusy +/* 00F378 7000E778 AFA40018 */ sw $a0, 0x18($sp) +/* 00F37C 7000E77C 10400005 */ beqz $v0, .L7000E794 +/* 00F380 7000E780 00000000 */ nop +.L7000E784: +/* 00F384 7000E784 0C0063F0 */ jal __osSpDeviceBusy +/* 00F388 7000E788 00000000 */ nop +/* 00F38C 7000E78C 1440FFFD */ bnez $v0, .L7000E784 +/* 00F390 7000E790 00000000 */ nop +.L7000E794: +/* 00F394 7000E794 0C0063B8 */ jal __osSpSetStatus +/* 00F398 7000E798 24040125 */ li $a0, 293 +/* 00F39C 7000E79C 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F3A0 7000E7A0 27BD0018 */ addiu $sp, $sp, 0x18 +/* 00F3A4 7000E7A4 03E00008 */ jr $ra +/* 00F3A8 7000E7A8 00000000 */ nop diff --git a/src/libultra/osSpTaskYield.s b/src/libultra/osSpTaskYield.s new file mode 100644 index 0000000..1721c3c --- /dev/null +++ b/src/libultra/osSpTaskYield.s @@ -0,0 +1,18 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osSpTaskYield +/* 00F460 7000E860 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 00F464 7000E864 AFBF0014 */ sw $ra, 0x14($sp) +/* 00F468 7000E868 0C0063B8 */ jal __osSpSetStatus +/* 00F46C 7000E86C 24040400 */ li $a0, 1024 +/* 00F470 7000E870 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F474 7000E874 27BD0018 */ addiu $sp, $sp, 0x18 +/* 00F478 7000E878 03E00008 */ jr $ra +/* 00F47C 7000E87C 00000000 */ nop diff --git a/src/libultra/osSpTaskYielded.s b/src/libultra/osSpTaskYielded.s new file mode 100644 index 0000000..7ba8d94 --- /dev/null +++ b/src/libultra/osSpTaskYielded.s @@ -0,0 +1,46 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osSpTaskYielded +/* 00EF40 7000E340 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 00EF44 7000E344 AFBF0014 */ sw $ra, 0x14($sp) +/* 00EF48 7000E348 0C0063B4 */ jal __osSpGetStatus +/* 00EF4C 7000E34C AFA40020 */ sw $a0, 0x20($sp) +/* 00EF50 7000E350 AFA2001C */ sw $v0, 0x1c($sp) +/* 00EF54 7000E354 8FAE001C */ lw $t6, 0x1c($sp) +/* 00EF58 7000E358 31CF0100 */ andi $t7, $t6, 0x100 +/* 00EF5C 7000E35C 11E00004 */ beqz $t7, .L7000E370 +/* 00EF60 7000E360 00000000 */ nop +/* 00EF64 7000E364 24180001 */ li $t8, 1 +/* 00EF68 7000E368 10000002 */ b .L7000E374 +/* 00EF6C 7000E36C AFB80018 */ sw $t8, 0x18($sp) +.L7000E370: +/* 00EF70 7000E370 AFA00018 */ sw $zero, 0x18($sp) +.L7000E374: +/* 00EF74 7000E374 8FB9001C */ lw $t9, 0x1c($sp) +/* 00EF78 7000E378 33280080 */ andi $t0, $t9, 0x80 +/* 00EF7C 7000E37C 1100000B */ beqz $t0, .L7000E3AC +/* 00EF80 7000E380 00000000 */ nop +/* 00EF84 7000E384 8FA90020 */ lw $t1, 0x20($sp) +/* 00EF88 7000E388 8FAB0018 */ lw $t3, 0x18($sp) +/* 00EF8C 7000E38C 2401FFFD */ li $at, -3 +/* 00EF90 7000E390 8D2A0004 */ lw $t2, 4($t1) +/* 00EF94 7000E394 014B6025 */ or $t4, $t2, $t3 +/* 00EF98 7000E398 AD2C0004 */ sw $t4, 4($t1) +/* 00EF9C 7000E39C 8FAD0020 */ lw $t5, 0x20($sp) +/* 00EFA0 7000E3A0 8DAE0004 */ lw $t6, 4($t5) +/* 00EFA4 7000E3A4 01C17824 */ and $t7, $t6, $at +/* 00EFA8 7000E3A8 ADAF0004 */ sw $t7, 4($t5) +.L7000E3AC: +/* 00EFAC 7000E3AC 8FBF0014 */ lw $ra, 0x14($sp) +/* 00EFB0 7000E3B0 8FA20018 */ lw $v0, 0x18($sp) +/* 00EFB4 7000E3B4 27BD0020 */ addiu $sp, $sp, 0x20 +/* 00EFB8 7000E3B8 03E00008 */ jr $ra +/* 00EFBC 7000E3BC 00000000 */ nop diff --git a/src/libultra/osStartThread.s b/src/libultra/osStartThread.s new file mode 100644 index 0000000..0cc8be4 --- /dev/null +++ b/src/libultra/osStartThread.s @@ -0,0 +1,100 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osStartThread +/* 00E180 7000D580 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00E184 7000D584 AFBF001C */ sw $ra, 0x1c($sp) +/* 00E188 7000D588 AFA40028 */ sw $a0, 0x28($sp) +/* 00E18C 7000D58C AFB10018 */ sw $s1, 0x18($sp) +/* 00E190 7000D590 0C00617C */ jal __osDisableInt +/* 00E194 7000D594 AFB00014 */ sw $s0, 0x14($sp) +/* 00E198 7000D598 8FAE0028 */ lw $t6, 0x28($sp) +/* 00E19C 7000D59C 24010001 */ li $at, 1 +/* 00E1A0 7000D5A0 00408025 */ move $s0, $v0 +/* 00E1A4 7000D5A4 95D10010 */ lhu $s1, 0x10($t6) +/* 00E1A8 7000D5A8 1221000C */ beq $s1, $at, .L7000D5DC +/* 00E1AC 7000D5AC 24010008 */ li $at, 8 +/* 00E1B0 7000D5B0 1621002A */ bne $s1, $at, .L7000D65C +/* 00E1B4 7000D5B4 00000000 */ nop +/* 00E1B8 7000D5B8 8FB80028 */ lw $t8, 0x28($sp) +/* 00E1BC 7000D5BC 240F0002 */ li $t7, 2 +/* 00E1C0 7000D5C0 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 00E1C4 7000D5C4 A70F0010 */ sh $t7, 0x10($t8) +/* 00E1C8 7000D5C8 8FA50028 */ lw $a1, 0x28($sp) +/* 00E1CC 7000D5CC 0C00422B */ jal __osEnqueueThread +/* 00E1D0 7000D5D0 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +/* 00E1D4 7000D5D4 10000021 */ b .L7000D65C +/* 00E1D8 7000D5D8 00000000 */ nop +.L7000D5DC: +/* 00E1DC 7000D5DC 8FB90028 */ lw $t9, 0x28($sp) +/* 00E1E0 7000D5E0 8F280008 */ lw $t0, 8($t9) +/* 00E1E4 7000D5E4 11000005 */ beqz $t0, .L7000D5FC +/* 00E1E8 7000D5E8 00000000 */ nop +/* 00E1EC 7000D5EC 3C098002 */ lui $t1, %hi(__osRunQueue) +/* 00E1F0 7000D5F0 25297728 */ addiu $t1, %lo(__osRunQueue) # addiu $t1, $t1, 0x7728 +/* 00E1F4 7000D5F4 1509000A */ bne $t0, $t1, .L7000D620 +/* 00E1F8 7000D5F8 00000000 */ nop +.L7000D5FC: +/* 00E1FC 7000D5FC 8FAB0028 */ lw $t3, 0x28($sp) +/* 00E200 7000D600 240A0002 */ li $t2, 2 +/* 00E204 7000D604 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 00E208 7000D608 A56A0010 */ sh $t2, 0x10($t3) +/* 00E20C 7000D60C 8FA50028 */ lw $a1, 0x28($sp) +/* 00E210 7000D610 0C00422B */ jal __osEnqueueThread +/* 00E214 7000D614 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +/* 00E218 7000D618 10000010 */ b .L7000D65C +/* 00E21C 7000D61C 00000000 */ nop +.L7000D620: +/* 00E220 7000D620 8FAD0028 */ lw $t5, 0x28($sp) +/* 00E224 7000D624 240C0008 */ li $t4, 8 +/* 00E228 7000D628 A5AC0010 */ sh $t4, 0x10($t5) +/* 00E22C 7000D62C 8FAE0028 */ lw $t6, 0x28($sp) +/* 00E230 7000D630 8DC40008 */ lw $a0, 8($t6) +/* 00E234 7000D634 0C00422B */ jal __osEnqueueThread +/* 00E238 7000D638 01C02825 */ move $a1, $t6 +/* 00E23C 7000D63C 8FAF0028 */ lw $t7, 0x28($sp) +/* 00E240 7000D640 0C00423D */ jal __osPopThread +/* 00E244 7000D644 8DE40008 */ lw $a0, 8($t7) +/* 00E248 7000D648 00408825 */ move $s1, $v0 +/* 00E24C 7000D64C 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 00E250 7000D650 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +/* 00E254 7000D654 0C00422B */ jal __osEnqueueThread +/* 00E258 7000D658 02202825 */ move $a1, $s1 +.L7000D65C: +/* 00E25C 7000D65C 3C188002 */ lui $t8, %hi(__osRunningThread) +/* 00E260 7000D660 8F187730 */ lw $t8, %lo(__osRunningThread)($t8) +/* 00E264 7000D664 17000005 */ bnez $t8, .L7000D67C +/* 00E268 7000D668 00000000 */ nop +/* 00E26C 7000D66C 0C004241 */ jal __osDispatchThread +/* 00E270 7000D670 00000000 */ nop +/* 00E274 7000D674 1000000F */ b .L7000D6B4 +/* 00E278 7000D678 00000000 */ nop +.L7000D67C: +/* 00E27C 7000D67C 3C198002 */ lui $t9, %hi(__osRunningThread) +/* 00E280 7000D680 3C098002 */ lui $t1, %hi(__osRunQueue) +/* 00E284 7000D684 8D297728 */ lw $t1, %lo(__osRunQueue)($t1) +/* 00E288 7000D688 8F397730 */ lw $t9, %lo(__osRunningThread)($t9) +/* 00E28C 7000D68C 8D2A0004 */ lw $t2, 4($t1) +/* 00E290 7000D690 8F280004 */ lw $t0, 4($t9) +/* 00E294 7000D694 010A082A */ slt $at, $t0, $t2 +/* 00E298 7000D698 10200006 */ beqz $at, .L7000D6B4 +/* 00E29C 7000D69C 00000000 */ nop +/* 00E2A0 7000D6A0 240B0002 */ li $t3, 2 +/* 00E2A4 7000D6A4 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 00E2A8 7000D6A8 A72B0010 */ sh $t3, 0x10($t9) +/* 00E2AC 7000D6AC 0C0041EB */ jal __osEnqueueAndYield +/* 00E2B0 7000D6B0 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +.L7000D6B4: +/* 00E2B4 7000D6B4 0C006184 */ jal __osRestoreInt +/* 00E2B8 7000D6B8 02002025 */ move $a0, $s0 +/* 00E2BC 7000D6BC 8FBF001C */ lw $ra, 0x1c($sp) +/* 00E2C0 7000D6C0 8FB00014 */ lw $s0, 0x14($sp) +/* 00E2C4 7000D6C4 8FB10018 */ lw $s1, 0x18($sp) +/* 00E2C8 7000D6C8 03E00008 */ jr $ra +/* 00E2CC 7000D6CC 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osStopThread.s b/src/libultra/osStopThread.s new file mode 100644 index 0000000..e2ac2eb --- /dev/null +++ b/src/libultra/osStopThread.s @@ -0,0 +1,63 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osStopThread +/* 00E340 7000D740 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 00E344 7000D744 AFBF0024 */ sw $ra, 0x24($sp) +/* 00E348 7000D748 AFA40038 */ sw $a0, 0x38($sp) +/* 00E34C 7000D74C AFB20020 */ sw $s2, 0x20($sp) +/* 00E350 7000D750 AFB1001C */ sw $s1, 0x1c($sp) +/* 00E354 7000D754 0C00617C */ jal __osDisableInt +/* 00E358 7000D758 AFB00018 */ sw $s0, 0x18($sp) +/* 00E35C 7000D75C 8FAE0038 */ lw $t6, 0x38($sp) +/* 00E360 7000D760 00408025 */ move $s0, $v0 +/* 00E364 7000D764 15C00003 */ bnez $t6, .L7000D774 +/* 00E368 7000D768 00000000 */ nop +/* 00E36C 7000D76C 10000003 */ b .L7000D77C +/* 00E370 7000D770 24110004 */ li $s1, 4 +.L7000D774: +/* 00E374 7000D774 8FAF0038 */ lw $t7, 0x38($sp) +/* 00E378 7000D778 95F10010 */ lhu $s1, 0x10($t7) +.L7000D77C: +/* 00E37C 7000D77C 02209025 */ move $s2, $s1 +/* 00E380 7000D780 24010002 */ li $at, 2 +/* 00E384 7000D784 1241000F */ beq $s2, $at, .L7000D7C4 +/* 00E388 7000D788 24010004 */ li $at, 4 +/* 00E38C 7000D78C 12410005 */ beq $s2, $at, .L7000D7A4 +/* 00E390 7000D790 24010008 */ li $at, 8 +/* 00E394 7000D794 1241000B */ beq $s2, $at, .L7000D7C4 +/* 00E398 7000D798 00000000 */ nop +/* 00E39C 7000D79C 10000010 */ b .L7000D7E0 +/* 00E3A0 7000D7A0 00000000 */ nop +.L7000D7A4: +/* 00E3A4 7000D7A4 3C198002 */ lui $t9, %hi(__osRunningThread) +/* 00E3A8 7000D7A8 8F397730 */ lw $t9, %lo(__osRunningThread)($t9) +/* 00E3AC 7000D7AC 24180001 */ li $t8, 1 +/* 00E3B0 7000D7B0 00002025 */ move $a0, $zero +/* 00E3B4 7000D7B4 0C0041EB */ jal __osEnqueueAndYield +/* 00E3B8 7000D7B8 A7380010 */ sh $t8, 0x10($t9) +/* 00E3BC 7000D7BC 10000008 */ b .L7000D7E0 +/* 00E3C0 7000D7C0 00000000 */ nop +.L7000D7C4: +/* 00E3C4 7000D7C4 8FA90038 */ lw $t1, 0x38($sp) +/* 00E3C8 7000D7C8 24080001 */ li $t0, 1 +/* 00E3CC 7000D7CC A5280010 */ sh $t0, 0x10($t1) +/* 00E3D0 7000D7D0 8FAA0038 */ lw $t2, 0x38($sp) +/* 00E3D4 7000D7D4 8D440008 */ lw $a0, 8($t2) +/* 00E3D8 7000D7D8 0C0042A4 */ jal __osDequeueThread +/* 00E3DC 7000D7DC 01402825 */ move $a1, $t2 +.L7000D7E0: +/* 00E3E0 7000D7E0 0C006184 */ jal __osRestoreInt +/* 00E3E4 7000D7E4 02002025 */ move $a0, $s0 +/* 00E3E8 7000D7E8 8FBF0024 */ lw $ra, 0x24($sp) +/* 00E3EC 7000D7EC 8FB00018 */ lw $s0, 0x18($sp) +/* 00E3F0 7000D7F0 8FB1001C */ lw $s1, 0x1c($sp) +/* 00E3F4 7000D7F4 8FB20020 */ lw $s2, 0x20($sp) +/* 00E3F8 7000D7F8 03E00008 */ jr $ra +/* 00E3FC 7000D7FC 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/src/libultra/osUnmapTLB.s b/src/libultra/osUnmapTLB.s new file mode 100644 index 0000000..9eb7696 --- /dev/null +++ b/src/libultra/osUnmapTLB.s @@ -0,0 +1,26 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osUnmapTLB +/* 00DFD0 7000D3D0 40085000 */ mfc0 $t0, $10 +/* 00DFD4 7000D3D4 40840000 */ mtc0 $a0, $0 +/* 00DFD8 7000D3D8 3C098000 */ lui $t1, 0x8000 +/* 00DFDC 7000D3DC 40895000 */ mtc0 $t1, $10 +/* 00DFE0 7000D3E0 40801000 */ mtc0 $zero, $2 +/* 00DFE4 7000D3E4 40801800 */ mtc0 $zero, $3 +/* 00DFE8 7000D3E8 00000000 */ nop +/* 00DFEC 7000D3EC 42000002 */ tlbwi +/* 00DFF0 7000D3F0 00000000 */ nop +/* 00DFF4 7000D3F4 00000000 */ nop +/* 00DFF8 7000D3F8 00000000 */ nop +/* 00DFFC 7000D3FC 00000000 */ nop +/* 00E000 7000D400 40885000 */ mtc0 $t0, $10 +/* 00E004 7000D404 03E00008 */ jr $ra +/* 00E008 7000D408 00000000 */ nop + diff --git a/src/libultra/osViBlack.s b/src/libultra/osViBlack.s new file mode 100644 index 0000000..c3c1a99 --- /dev/null +++ b/src/libultra/osViBlack.s @@ -0,0 +1,40 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osViBlack +/* 00EED0 7000E2D0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00EED4 7000E2D4 AFBF001C */ sw $ra, 0x1c($sp) +/* 00EED8 7000E2D8 AFA40028 */ sw $a0, 0x28($sp) +/* 00EEDC 7000E2DC 0C00617C */ jal __osDisableInt +/* 00EEE0 7000E2E0 AFB00018 */ sw $s0, 0x18($sp) +/* 00EEE4 7000E2E4 93AE002B */ lbu $t6, 0x2b($sp) +/* 00EEE8 7000E2E8 00408025 */ move $s0, $v0 +/* 00EEEC 7000E2EC 11C00007 */ beqz $t6, .L7000E30C +/* 00EEF0 7000E2F0 00000000 */ nop +/* 00EEF4 7000E2F4 3C0F8003 */ lui $t7, %hi(__osViNext) +/* 00EEF8 7000E2F8 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) +/* 00EEFC 7000E2FC 95F80000 */ lhu $t8, ($t7) +/* 00EF00 7000E300 37190020 */ ori $t9, $t8, 0x20 +/* 00EF04 7000E304 10000007 */ b .L7000E324 +/* 00EF08 7000E308 A5F90000 */ sh $t9, ($t7) +.L7000E30C: +/* 00EF0C 7000E30C 3C088003 */ lui $t0, %hi(__osViNext) +/* 00EF10 7000E310 8D088044 */ lw $t0, %lo(__osViNext)($t0) +/* 00EF14 7000E314 2401FFDF */ li $at, -33 +/* 00EF18 7000E318 95090000 */ lhu $t1, ($t0) +/* 00EF1C 7000E31C 01215024 */ and $t2, $t1, $at +/* 00EF20 7000E320 A50A0000 */ sh $t2, ($t0) +.L7000E324: +/* 00EF24 7000E324 0C006184 */ jal __osRestoreInt +/* 00EF28 7000E328 02002025 */ move $a0, $s0 +/* 00EF2C 7000E32C 8FBF001C */ lw $ra, 0x1c($sp) +/* 00EF30 7000E330 8FB00018 */ lw $s0, 0x18($sp) +/* 00EF34 7000E334 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00EF38 7000E338 03E00008 */ jr $ra +/* 00EF3C 7000E33C 00000000 */ nop diff --git a/src/libultra/osViGetCurrentFramebuffer.s b/src/libultra/osViGetCurrentFramebuffer.s new file mode 100644 index 0000000..8c23b8f --- /dev/null +++ b/src/libultra/osViGetCurrentFramebuffer.s @@ -0,0 +1,27 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osViGetCurrentFramebuffer +/* 00F010 7000E410 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00F014 7000E414 AFBF001C */ sw $ra, 0x1c($sp) +/* 00F018 7000E418 0C00617C */ jal __osDisableInt +/* 00F01C 7000E41C AFB00018 */ sw $s0, 0x18($sp) +/* 00F020 7000E420 3C0E8003 */ lui $t6, %hi(__osViCurr) +/* 00F024 7000E424 8DCE8040 */ lw $t6, %lo(__osViCurr)($t6) +/* 00F028 7000E428 00408025 */ move $s0, $v0 +/* 00F02C 7000E42C 02002025 */ move $a0, $s0 +/* 00F030 7000E430 8DCF0004 */ lw $t7, 4($t6) +/* 00F034 7000E434 0C006184 */ jal __osRestoreInt +/* 00F038 7000E438 AFAF0020 */ sw $t7, 0x20($sp) +/* 00F03C 7000E43C 8FBF001C */ lw $ra, 0x1c($sp) +/* 00F040 7000E440 8FA20020 */ lw $v0, 0x20($sp) +/* 00F044 7000E444 8FB00018 */ lw $s0, 0x18($sp) +/* 00F048 7000E448 03E00008 */ jr $ra +/* 00F04C 7000E44C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osViGetNextFramebuffer.s b/src/libultra/osViGetNextFramebuffer.s new file mode 100644 index 0000000..1b339c2 --- /dev/null +++ b/src/libultra/osViGetNextFramebuffer.s @@ -0,0 +1,27 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osViGetNextFramebuffer +/* 00F050 7000E450 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00F054 7000E454 AFBF001C */ sw $ra, 0x1c($sp) +/* 00F058 7000E458 0C00617C */ jal __osDisableInt +/* 00F05C 7000E45C AFB00018 */ sw $s0, 0x18($sp) +/* 00F060 7000E460 3C0E8003 */ lui $t6, %hi(__osViNext) +/* 00F064 7000E464 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) +/* 00F068 7000E468 00408025 */ move $s0, $v0 +/* 00F06C 7000E46C 02002025 */ move $a0, $s0 +/* 00F070 7000E470 8DCF0004 */ lw $t7, 4($t6) +/* 00F074 7000E474 0C006184 */ jal __osRestoreInt +/* 00F078 7000E478 AFAF0020 */ sw $t7, 0x20($sp) +/* 00F07C 7000E47C 8FBF001C */ lw $ra, 0x1c($sp) +/* 00F080 7000E480 8FA20020 */ lw $v0, 0x20($sp) +/* 00F084 7000E484 8FB00018 */ lw $s0, 0x18($sp) +/* 00F088 7000E488 03E00008 */ jr $ra +/* 00F08C 7000E48C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osViModeTable.s b/src/libultra/osViModeTable.s new file mode 100644 index 0000000..17862fc --- /dev/null +++ b/src/libultra/osViModeTable.s @@ -0,0 +1,224 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +.section .data +glabel osViModeTable +D_800269C0: +glabel osViModeTable_osViModeNtscLpn1 +.word 0, 0x320E, 0x140, 0x3E52239, 0x20D +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscLpf1 +.word 0x1000000, 0x324E, 0x140, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x280, 0x1000400, 0x2301FD, 0xE0204, 2 +.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscLan1 +.word 0x2000000, 0x311E, 0x140, 0x3E52239, 0x20D +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscLaf1 +.word 0x3000000, 0x305E, 0x140, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x280, 0x1000400, 0x2301FD, 0xE0204, 2 +.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscLpn2 +.word 0x4000000, 0x330F, 0x140, 0x3E52239, 0x20D +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscLpf2 +.word 0x5000000, 0x324F, 0x140, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x500, 0x1000400, 0x2301FD, 0xE0204, 2 +.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscLan2 +.word 0x6000000, 0x301F, 0x140, 0x3E52239, 0x20D +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscLaf2 +.word 0x7000000, 0x305F, 0x140, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x200, 0 +.word 0x500, 0x1000400, 0x2301FD, 0xE0204, 2 +.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscHpn1 +.word 0x8000000, 0x324E, 0x500, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 +.word 0x500, 0x400, 0x2301FD, 0xE0204, 2 +.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscHpf1 +.word 0x9000000, 0x324E, 0x280, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 +.word 0x500, 0x2000800, 0x2301FD, 0xE0204, 2 +.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscHan1 +.word 0xA000000, 0x305E, 0x500, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 +.word 0x500, 0x400, 0x2301FD, 0xE0204, 2 +.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscHaf1 +.word 0xB000000, 0x305E, 0x280, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 +.word 0x500, 0x2000800, 0x2301FD, 0xE0204, 2 +.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscHpn2 +.word 0xC000000, 0x334F, 0x500, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 +.word 0xA00, 0x400, 0x2301FD, 0xE0204, 2 +.word 0x1400, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeNtscHpf2 +.word 0xD000000, 0x324F, 0x280, 0x3E52239, 0x20C +.word 0xC15, 0xC150C15, 0x6C02EC, 0x400, 0 +.word 0xA00, 0x2000800, 0x2301FD, 0xE0204, 2 +.word 0x1400, 0x2000800, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModePalLpn1 +.word 0xE000000, 0x320E, 0x140, 0x404233A, 0x271 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 +.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 +glabel osViModeTable_osViModePalLpf1 +.word 0xF000000, 0x324E, 0x140, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x280, 0x1000400, 0x5D0237, 0x9026B, 2 +.word 0x280, 0x3000400, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalLan1 +.word 0x10000000, 0x311E, 0x140, 0x404233A, 0x271 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 +.word 0x280, 0x400, 0x5F0239, 0x9026B, 2 +glabel osViModeTable_osViModePalLaf1 +.word 0x11000000, 0x305E, 0x140, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x280, 0x1000400, 0x5D0237, 0x9026B, 2 +.word 0x280, 0x3000400, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalLpn2 +.word 0x12000000, 0x330F, 0x140, 0x404233A, 0x271 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 +.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 +glabel osViModeTable_osViModePalLpf2 +.word 0x13000000, 0x324F, 0x140, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x500, 0x1000400, 0x5D0237, 0x9026B, 2 +.word 0x500, 0x3000400, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalLan2 +.word 0x14000000, 0x301F, 0x140, 0x404233A, 0x271 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 +.word 0x500, 0x400, 0x5F0239, 0x9026B, 2 +glabel osViModeTable_osViModePalLaf2 +.word 0x15000000, 0x305F, 0x140, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x200, 0 +.word 0x500, 0x1000400, 0x5D0237, 0x9026B, 2 +.word 0x500, 0x3000400, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalHpn1 +.word 0x16000000, 0x324E, 0x500, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 +.word 0x500, 0x400, 0x5D0237, 0x9026B, 2 +.word 0xA00, 0x400, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalHpf1 +.word 0x17000000, 0x324E, 0x280, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 +.word 0x500, 0x2000800, 0x5D0237, 0x9026B, 2 +.word 0xA00, 0x2000800, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalHan1 +.word 0x18000000, 0x305E, 0x500, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 +.word 0x500, 0x400, 0x5D0237, 0x9026B, 2 +.word 0xA00, 0x400, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalHaf1 +.word 0x19000000, 0x305E, 0x280, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 +.word 0x500, 0x2000800, 0x5D0237, 0x9026B, 2 +.word 0xA00, 0x2000800, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalHpn2 +.word 0x1A000000, 0x334F, 0x500, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 +.word 0xA00, 0x400, 0x5D0237, 0x9026B, 2 +.word 0x1400, 0x400, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModePalHpf2 +.word 0x1B000000, 0x324F, 0x280, 0x404233A, 0x270 +.word 0x150C69, 0xC6F0C6E, 0x800300, 0x400, 0 +.word 0xA00, 0x2000800, 0x5D0237, 0x9026B, 2 +.word 0x1400, 0x2000800, 0x5F0239, 0xD0269, 2 +glabel osViModeTable_osViModeMpalLpn1 +.word 0x1C000000, 0x320E, 0x140, 0x4651E39, 0x20D +.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalLpf1 +.word 0x1D000000, 0x324E, 0x140, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 +.word 0x280, 0x1000400, 0x2301FD, 0xB0202, 2 +.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalLan1 +.word 0x1E000000, 0x311E, 0x140, 0x4651E39, 0x20D +.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x280, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalLaf1 +.word 0x1F000000, 0x305E, 0x140, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 +.word 0x280, 0x1000400, 0x2301FD, 0xB0202, 2 +.word 0x280, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalLpn2 +.word 0x20000000, 0x330F, 0x140, 0x4651E39, 0x20D +.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalLpf2 +.word 0x21000000, 0x324F, 0x140, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 +.word 0x500, 0x1000400, 0x2301FD, 0xB0202, 2 +.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalLan2 +.word 0x22000000, 0x301F, 0x140, 0x4651E39, 0x20D +.word 0x40C11, 0xC190C1A, 0x6C02EC, 0x200, 0 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +.word 0x500, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalLaf2 +.word 0x23000000, 0x305F, 0x140, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x200, 0 +.word 0x500, 0x1000400, 0x2301FD, 0xB0202, 2 +.word 0x500, 0x3000400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalHpn1 +.word 0x24000000, 0x324E, 0x500, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 +.word 0x500, 0x400, 0x2301FD, 0xB0202, 2 +.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalHpf1 +.word 0x25000000, 0x324E, 0x280, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 +.word 0x500, 0x2000800, 0x2301FD, 0xB0202, 2 +.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalHan1 +.word 0x26000000, 0x305E, 0x500, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 +.word 0x500, 0x400, 0x2301FD, 0xB0202, 2 +.word 0xA00, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalHaf1 +.word 0x27000000, 0x305E, 0x280, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 +.word 0x500, 0x2000800, 0x2301FD, 0xB0202, 2 +.word 0xA00, 0x2000800, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalHpn2 +.word 0x28000000, 0x334F, 0x500, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 +.word 0xA00, 0x400, 0x2301FD, 0xB0202, 2 +.word 0x1400, 0x400, 0x2501FF, 0xE0204, 2 +glabel osViModeTable_osViModeMpalHpf2 +.word 0x29000000, 0x324F, 0x280, 0x4651E39, 0x20C +.word 0xC10, 0xC1C0C1C, 0x6C02EC, 0x400, 0 +.word 0xA00, 0x2000800, 0x2301FD, 0xB0202, 2 +.word 0x1400, 0x2000800, 0x2501FF, 0xE0204, 2 + diff --git a/src/libultra/osViRepeatLine.s b/src/libultra/osViRepeatLine.s new file mode 100644 index 0000000..7bea1f4 --- /dev/null +++ b/src/libultra/osViRepeatLine.s @@ -0,0 +1,40 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osViRepeatLine +/* 00EE60 7000E260 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00EE64 7000E264 AFBF001C */ sw $ra, 0x1c($sp) +/* 00EE68 7000E268 AFA40028 */ sw $a0, 0x28($sp) +/* 00EE6C 7000E26C 0C00617C */ jal __osDisableInt +/* 00EE70 7000E270 AFB00018 */ sw $s0, 0x18($sp) +/* 00EE74 7000E274 93AE002B */ lbu $t6, 0x2b($sp) +/* 00EE78 7000E278 00408025 */ move $s0, $v0 +/* 00EE7C 7000E27C 11C00007 */ beqz $t6, .L7000E29C +/* 00EE80 7000E280 00000000 */ nop +/* 00EE84 7000E284 3C0F8003 */ lui $t7, %hi(__osViNext) +/* 00EE88 7000E288 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) +/* 00EE8C 7000E28C 95F80000 */ lhu $t8, ($t7) +/* 00EE90 7000E290 37190040 */ ori $t9, $t8, 0x40 +/* 00EE94 7000E294 10000007 */ b .L7000E2B4 +/* 00EE98 7000E298 A5F90000 */ sh $t9, ($t7) +.L7000E29C: +/* 00EE9C 7000E29C 3C088003 */ lui $t0, %hi(__osViNext) +/* 00EEA0 7000E2A0 8D088044 */ lw $t0, %lo(__osViNext)($t0) +/* 00EEA4 7000E2A4 2401FFBF */ li $at, -65 +/* 00EEA8 7000E2A8 95090000 */ lhu $t1, ($t0) +/* 00EEAC 7000E2AC 01215024 */ and $t2, $t1, $at +/* 00EEB0 7000E2B0 A50A0000 */ sh $t2, ($t0) +.L7000E2B4: +/* 00EEB4 7000E2B4 0C006184 */ jal __osRestoreInt +/* 00EEB8 7000E2B8 02002025 */ move $a0, $s0 +/* 00EEBC 7000E2BC 8FBF001C */ lw $ra, 0x1c($sp) +/* 00EEC0 7000E2C0 8FB00018 */ lw $s0, 0x18($sp) +/* 00EEC4 7000E2C4 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00EEC8 7000E2C8 03E00008 */ jr $ra +/* 00EECC 7000E2CC 00000000 */ nop diff --git a/src/libultra/osViSetEvent.s b/src/libultra/osViSetEvent.s new file mode 100644 index 0000000..e0ae7cd --- /dev/null +++ b/src/libultra/osViSetEvent.s @@ -0,0 +1,40 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osViSetEvent +/* 00E8C0 7000DCC0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00E8C4 7000DCC4 AFBF001C */ sw $ra, 0x1c($sp) +/* 00E8C8 7000DCC8 AFA40028 */ sw $a0, 0x28($sp) +/* 00E8CC 7000DCCC AFA5002C */ sw $a1, 0x2c($sp) +/* 00E8D0 7000DCD0 AFA60030 */ sw $a2, 0x30($sp) +/* 00E8D4 7000DCD4 0C00617C */ jal __osDisableInt +/* 00E8D8 7000DCD8 AFB00018 */ sw $s0, 0x18($sp) +/* 00E8DC 7000DCDC 3C0F8003 */ lui $t7, %hi(__osViNext) +/* 00E8E0 7000DCE0 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) +/* 00E8E4 7000DCE4 8FAE0028 */ lw $t6, 0x28($sp) +/* 00E8E8 7000DCE8 3C198003 */ lui $t9, %hi(__osViNext) +/* 00E8EC 7000DCEC 3C098003 */ lui $t1, %hi(__osViNext) +/* 00E8F0 7000DCF0 ADEE0010 */ sw $t6, 0x10($t7) +/* 00E8F4 7000DCF4 8F398044 */ lw $t9, %lo(__osViNext)($t9) +/* 00E8F8 7000DCF8 8FB8002C */ lw $t8, 0x2c($sp) +/* 00E8FC 7000DCFC 00408025 */ move $s0, $v0 +/* 00E900 7000DD00 02002025 */ move $a0, $s0 +/* 00E904 7000DD04 AF380014 */ sw $t8, 0x14($t9) +/* 00E908 7000DD08 8D298044 */ lw $t1, %lo(__osViNext)($t1) +/* 00E90C 7000DD0C 8FA80030 */ lw $t0, 0x30($sp) +/* 00E910 7000DD10 0C006184 */ jal __osRestoreInt +/* 00E914 7000DD14 A5280002 */ sh $t0, 2($t1) +/* 00E918 7000DD18 8FBF001C */ lw $ra, 0x1c($sp) +/* 00E91C 7000DD1C 8FB00018 */ lw $s0, 0x18($sp) +/* 00E920 7000DD20 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00E924 7000DD24 03E00008 */ jr $ra +/* 00E928 7000DD28 00000000 */ nop + + \ No newline at end of file diff --git a/src/libultra/osViSetMode.s b/src/libultra/osViSetMode.s new file mode 100644 index 0000000..86ab2bf --- /dev/null +++ b/src/libultra/osViSetMode.s @@ -0,0 +1,36 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osViSetMode +/* 00EC60 7000E060 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00EC64 7000E064 AFBF001C */ sw $ra, 0x1c($sp) +/* 00EC68 7000E068 AFA40028 */ sw $a0, 0x28($sp) +/* 00EC6C 7000E06C 0C00617C */ jal __osDisableInt +/* 00EC70 7000E070 AFB00018 */ sw $s0, 0x18($sp) +/* 00EC74 7000E074 3C0F8003 */ lui $t7, %hi(__osViNext) +/* 00EC78 7000E078 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) +/* 00EC7C 7000E07C 8FAE0028 */ lw $t6, 0x28($sp) +/* 00EC80 7000E080 3C198003 */ lui $t9, %hi(__osViNext) +/* 00EC84 7000E084 24180001 */ li $t8, 1 +/* 00EC88 7000E088 ADEE0008 */ sw $t6, 8($t7) +/* 00EC8C 7000E08C 8F398044 */ lw $t9, %lo(__osViNext)($t9) +/* 00EC90 7000E090 3C088003 */ lui $t0, %hi(__osViNext) +/* 00EC94 7000E094 00408025 */ move $s0, $v0 +/* 00EC98 7000E098 A7380000 */ sh $t8, ($t9) +/* 00EC9C 7000E09C 8D088044 */ lw $t0, %lo(__osViNext)($t0) +/* 00ECA0 7000E0A0 02002025 */ move $a0, $s0 +/* 00ECA4 7000E0A4 8D090008 */ lw $t1, 8($t0) +/* 00ECA8 7000E0A8 8D2A0004 */ lw $t2, 4($t1) +/* 00ECAC 7000E0AC 0C006184 */ jal __osRestoreInt +/* 00ECB0 7000E0B0 AD0A000C */ sw $t2, 0xc($t0) +/* 00ECB4 7000E0B4 8FBF001C */ lw $ra, 0x1c($sp) +/* 00ECB8 7000E0B8 8FB00018 */ lw $s0, 0x18($sp) +/* 00ECBC 7000E0BC 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00ECC0 7000E0C0 03E00008 */ jr $ra +/* 00ECC4 7000E0C4 00000000 */ nop diff --git a/src/libultra/osViSetSpecialFeatures.s b/src/libultra/osViSetSpecialFeatures.s new file mode 100644 index 0000000..712198d --- /dev/null +++ b/src/libultra/osViSetSpecialFeatures.s @@ -0,0 +1,128 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osViSetSpecialFeatures +/* 0103B0 7000F7B0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0103B4 7000F7B4 AFBF001C */ sw $ra, 0x1c($sp) +/* 0103B8 7000F7B8 AFA40028 */ sw $a0, 0x28($sp) +/* 0103BC 7000F7BC 0C00617C */ jal __osDisableInt +/* 0103C0 7000F7C0 AFB00018 */ sw $s0, 0x18($sp) +/* 0103C4 7000F7C4 8FAE0028 */ lw $t6, 0x28($sp) +/* 0103C8 7000F7C8 00408025 */ move $s0, $v0 +/* 0103CC 7000F7CC 31CF0001 */ andi $t7, $t6, 1 +/* 0103D0 7000F7D0 11E00006 */ beqz $t7, .L7000F7EC +/* 0103D4 7000F7D4 00000000 */ nop +/* 0103D8 7000F7D8 3C188003 */ lui $t8, %hi(__osViNext) +/* 0103DC 7000F7DC 8F188044 */ lw $t8, %lo(__osViNext)($t8) +/* 0103E0 7000F7E0 8F19000C */ lw $t9, 0xc($t8) +/* 0103E4 7000F7E4 37280008 */ ori $t0, $t9, 8 +/* 0103E8 7000F7E8 AF08000C */ sw $t0, 0xc($t8) +.L7000F7EC: +/* 0103EC 7000F7EC 8FA90028 */ lw $t1, 0x28($sp) +/* 0103F0 7000F7F0 312A0002 */ andi $t2, $t1, 2 +/* 0103F4 7000F7F4 11400007 */ beqz $t2, .L7000F814 +/* 0103F8 7000F7F8 00000000 */ nop +/* 0103FC 7000F7FC 3C0B8003 */ lui $t3, %hi(__osViNext) +/* 010400 7000F800 8D6B8044 */ lw $t3, %lo(__osViNext)($t3) +/* 010404 7000F804 2401FFF7 */ li $at, -9 +/* 010408 7000F808 8D6C000C */ lw $t4, 0xc($t3) +/* 01040C 7000F80C 01816824 */ and $t5, $t4, $at +/* 010410 7000F810 AD6D000C */ sw $t5, 0xc($t3) +.L7000F814: +/* 010414 7000F814 8FAE0028 */ lw $t6, 0x28($sp) +/* 010418 7000F818 31CF0004 */ andi $t7, $t6, 4 +/* 01041C 7000F81C 11E00006 */ beqz $t7, .L7000F838 +/* 010420 7000F820 00000000 */ nop +/* 010424 7000F824 3C198003 */ lui $t9, %hi(__osViNext) +/* 010428 7000F828 8F398044 */ lw $t9, %lo(__osViNext)($t9) +/* 01042C 7000F82C 8F28000C */ lw $t0, 0xc($t9) +/* 010430 7000F830 35180004 */ ori $t8, $t0, 4 +/* 010434 7000F834 AF38000C */ sw $t8, 0xc($t9) +.L7000F838: +/* 010438 7000F838 8FA90028 */ lw $t1, 0x28($sp) +/* 01043C 7000F83C 312A0008 */ andi $t2, $t1, 8 +/* 010440 7000F840 11400007 */ beqz $t2, .L7000F860 +/* 010444 7000F844 00000000 */ nop +/* 010448 7000F848 3C0C8003 */ lui $t4, %hi(__osViNext) +/* 01044C 7000F84C 8D8C8044 */ lw $t4, %lo(__osViNext)($t4) +/* 010450 7000F850 2401FFFB */ li $at, -5 +/* 010454 7000F854 8D8D000C */ lw $t5, 0xc($t4) +/* 010458 7000F858 01A15824 */ and $t3, $t5, $at +/* 01045C 7000F85C AD8B000C */ sw $t3, 0xc($t4) +.L7000F860: +/* 010460 7000F860 8FAE0028 */ lw $t6, 0x28($sp) +/* 010464 7000F864 31CF0010 */ andi $t7, $t6, 0x10 +/* 010468 7000F868 11E00006 */ beqz $t7, .L7000F884 +/* 01046C 7000F86C 00000000 */ nop +/* 010470 7000F870 3C088003 */ lui $t0, %hi(__osViNext) +/* 010474 7000F874 8D088044 */ lw $t0, %lo(__osViNext)($t0) +/* 010478 7000F878 8D18000C */ lw $t8, 0xc($t0) +/* 01047C 7000F87C 37190010 */ ori $t9, $t8, 0x10 +/* 010480 7000F880 AD19000C */ sw $t9, 0xc($t0) +.L7000F884: +/* 010484 7000F884 8FA90028 */ lw $t1, 0x28($sp) +/* 010488 7000F888 312A0020 */ andi $t2, $t1, 0x20 +/* 01048C 7000F88C 11400007 */ beqz $t2, .L7000F8AC +/* 010490 7000F890 00000000 */ nop +/* 010494 7000F894 3C0D8003 */ lui $t5, %hi(__osViNext) +/* 010498 7000F898 8DAD8044 */ lw $t5, %lo(__osViNext)($t5) +/* 01049C 7000F89C 2401FFEF */ li $at, -17 +/* 0104A0 7000F8A0 8DAB000C */ lw $t3, 0xc($t5) +/* 0104A4 7000F8A4 01616024 */ and $t4, $t3, $at +/* 0104A8 7000F8A8 ADAC000C */ sw $t4, 0xc($t5) +.L7000F8AC: +/* 0104AC 7000F8AC 8FAE0028 */ lw $t6, 0x28($sp) +/* 0104B0 7000F8B0 31CF0040 */ andi $t7, $t6, 0x40 +/* 0104B4 7000F8B4 11E0000D */ beqz $t7, .L7000F8EC +/* 0104B8 7000F8B8 00000000 */ nop +/* 0104BC 7000F8BC 3C188003 */ lui $t8, %hi(__osViNext) +/* 0104C0 7000F8C0 8F188044 */ lw $t8, %lo(__osViNext)($t8) +/* 0104C4 7000F8C4 3C010001 */ lui $at, 1 +/* 0104C8 7000F8C8 3C098003 */ lui $t1, %hi(__osViNext) +/* 0104CC 7000F8CC 8F19000C */ lw $t9, 0xc($t8) +/* 0104D0 7000F8D0 03214025 */ or $t0, $t9, $at +/* 0104D4 7000F8D4 AF08000C */ sw $t0, 0xc($t8) +/* 0104D8 7000F8D8 8D298044 */ lw $t1, %lo(__osViNext)($t1) +/* 0104DC 7000F8DC 2401FCFF */ li $at, -769 +/* 0104E0 7000F8E0 8D2A000C */ lw $t2, 0xc($t1) +/* 0104E4 7000F8E4 01415824 */ and $t3, $t2, $at +/* 0104E8 7000F8E8 AD2B000C */ sw $t3, 0xc($t1) +.L7000F8EC: +/* 0104EC 7000F8EC 8FAC0028 */ lw $t4, 0x28($sp) +/* 0104F0 7000F8F0 318D0080 */ andi $t5, $t4, 0x80 +/* 0104F4 7000F8F4 11A00010 */ beqz $t5, .L7000F938 +/* 0104F8 7000F8F8 00000000 */ nop +/* 0104FC 7000F8FC 3C0E8003 */ lui $t6, %hi(__osViNext) +/* 010500 7000F900 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) +/* 010504 7000F904 3C01FFFE */ lui $at, (0xFFFEFFFF >> 16) # lui $at, 0xfffe +/* 010508 7000F908 3421FFFF */ ori $at, (0xFFFEFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 01050C 7000F90C 8DCF000C */ lw $t7, 0xc($t6) +/* 010510 7000F910 3C088003 */ lui $t0, %hi(__osViNext) +/* 010514 7000F914 01E1C824 */ and $t9, $t7, $at +/* 010518 7000F918 ADD9000C */ sw $t9, 0xc($t6) +/* 01051C 7000F91C 8D088044 */ lw $t0, %lo(__osViNext)($t0) +/* 010520 7000F920 8D0A0008 */ lw $t2, 8($t0) +/* 010524 7000F924 8D18000C */ lw $t8, 0xc($t0) +/* 010528 7000F928 8D4B0004 */ lw $t3, 4($t2) +/* 01052C 7000F92C 31690300 */ andi $t1, $t3, 0x300 +/* 010530 7000F930 03096025 */ or $t4, $t8, $t1 +/* 010534 7000F934 AD0C000C */ sw $t4, 0xc($t0) +.L7000F938: +/* 010538 7000F938 3C0D8003 */ lui $t5, %hi(__osViNext) +/* 01053C 7000F93C 8DAD8044 */ lw $t5, %lo(__osViNext)($t5) +/* 010540 7000F940 02002025 */ move $a0, $s0 +/* 010544 7000F944 95AF0000 */ lhu $t7, ($t5) +/* 010548 7000F948 35F90008 */ ori $t9, $t7, 8 +/* 01054C 7000F94C 0C006184 */ jal __osRestoreInt +/* 010550 7000F950 A5B90000 */ sh $t9, ($t5) +/* 010554 7000F954 8FBF001C */ lw $ra, 0x1c($sp) +/* 010558 7000F958 8FB00018 */ lw $s0, 0x18($sp) +/* 01055C 7000F95C 27BD0028 */ addiu $sp, $sp, 0x28 +/* 010560 7000F960 03E00008 */ jr $ra +/* 010564 7000F964 00000000 */ nop diff --git a/src/libultra/osViSetXScale.s b/src/libultra/osViSetXScale.s new file mode 100644 index 0000000..9b21623 --- /dev/null +++ b/src/libultra/osViSetXScale.s @@ -0,0 +1,88 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osViSetXScale +/* 00ECD0 7000E0D0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00ECD4 7000E0D4 AFBF001C */ sw $ra, 0x1c($sp) +/* 00ECD8 7000E0D8 E7AC0028 */ swc1 $f12, 0x28($sp) +/* 00ECDC 7000E0DC AFB10018 */ sw $s1, 0x18($sp) +/* 00ECE0 7000E0E0 0C00617C */ jal __osDisableInt +/* 00ECE4 7000E0E4 AFB00014 */ sw $s0, 0x14($sp) +/* 00ECE8 7000E0E8 3C0E8003 */ lui $t6, %hi(__osViNext) +/* 00ECEC 7000E0EC 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) +/* 00ECF0 7000E0F0 C7A40028 */ lwc1 $f4, 0x28($sp) +/* 00ECF4 7000E0F4 3C0F8003 */ lui $t7, %hi(__osViNext) +/* 00ECF8 7000E0F8 3C088003 */ lui $t0, %hi(__osViNext) +/* 00ECFC 7000E0FC E5C40018 */ swc1 $f4, 0x18($t6) +/* 00ED00 7000E100 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) +/* 00ED04 7000E104 00408825 */ move $s1, $v0 +/* 00ED08 7000E108 95F80000 */ lhu $t8, ($t7) +/* 00ED0C 7000E10C 37190002 */ ori $t9, $t8, 2 +/* 00ED10 7000E110 A5F90000 */ sh $t9, ($t7) +/* 00ED14 7000E114 8D088044 */ lw $t0, %lo(__osViNext)($t0) +/* 00ED18 7000E118 8D090008 */ lw $t1, 8($t0) +/* 00ED1C 7000E11C C5060018 */ lwc1 $f6, 0x18($t0) +/* 00ED20 7000E120 8D300020 */ lw $s0, 0x20($t1) +/* 00ED24 7000E124 320A0FFF */ andi $t2, $s0, 0xfff +/* 00ED28 7000E128 01408025 */ move $s0, $t2 +/* 00ED2C 7000E12C 44904000 */ mtc1 $s0, $f8 +/* 00ED30 7000E130 06010005 */ bgez $s0, .L7000E148 +/* 00ED34 7000E134 468042A0 */ cvt.s.w $f10, $f8 +/* 00ED38 7000E138 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 00ED3C 7000E13C 44818000 */ mtc1 $at, $f16 +/* 00ED40 7000E140 00000000 */ nop +/* 00ED44 7000E144 46105280 */ add.s $f10, $f10, $f16 +.L7000E148: +/* 00ED48 7000E148 460A3482 */ mul.s $f18, $f6, $f10 +/* 00ED4C 7000E14C 240C0001 */ li $t4, 1 +/* 00ED50 7000E150 444BF800 */ cfc1 $t3, $31 +/* 00ED54 7000E154 44CCF800 */ ctc1 $t4, $31 +/* 00ED58 7000E158 00000000 */ nop +/* 00ED5C 7000E15C 46009124 */ cvt.w.s $f4, $f18 +/* 00ED60 7000E160 444CF800 */ cfc1 $t4, $31 +/* 00ED64 7000E164 00000000 */ nop +/* 00ED68 7000E168 31810004 */ andi $at, $t4, 4 +/* 00ED6C 7000E16C 318C0078 */ andi $t4, $t4, 0x78 +/* 00ED70 7000E170 11800013 */ beqz $t4, .L7000E1C0 +/* 00ED74 7000E174 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 +/* 00ED78 7000E178 44812000 */ mtc1 $at, $f4 +/* 00ED7C 7000E17C 240C0001 */ li $t4, 1 +/* 00ED80 7000E180 46049101 */ sub.s $f4, $f18, $f4 +/* 00ED84 7000E184 44CCF800 */ ctc1 $t4, $31 +/* 00ED88 7000E188 00000000 */ nop +/* 00ED8C 7000E18C 46002124 */ cvt.w.s $f4, $f4 +/* 00ED90 7000E190 444CF800 */ cfc1 $t4, $31 +/* 00ED94 7000E194 00000000 */ nop +/* 00ED98 7000E198 31810004 */ andi $at, $t4, 4 +/* 00ED9C 7000E19C 318C0078 */ andi $t4, $t4, 0x78 +/* 00EDA0 7000E1A0 15800005 */ bnez $t4, .L7000E1B8 +/* 00EDA4 7000E1A4 00000000 */ nop +/* 00EDA8 7000E1A8 440C2000 */ mfc1 $t4, $f4 +/* 00EDAC 7000E1AC 3C018000 */ lui $at, 0x8000 +/* 00EDB0 7000E1B0 10000007 */ b .L7000E1D0 +/* 00EDB4 7000E1B4 01816025 */ or $t4, $t4, $at +.L7000E1B8: +/* 00EDB8 7000E1B8 10000005 */ b .L7000E1D0 +/* 00EDBC 7000E1BC 240CFFFF */ li $t4, -1 +.L7000E1C0: +/* 00EDC0 7000E1C0 440C2000 */ mfc1 $t4, $f4 +/* 00EDC4 7000E1C4 00000000 */ nop +/* 00EDC8 7000E1C8 0580FFFB */ bltz $t4, .L7000E1B8 +/* 00EDCC 7000E1CC 00000000 */ nop +.L7000E1D0: +/* 00EDD0 7000E1D0 44CBF800 */ ctc1 $t3, $31 +/* 00EDD4 7000E1D4 318D0FFF */ andi $t5, $t4, 0xfff +/* 00EDD8 7000E1D8 AD0D0020 */ sw $t5, 0x20($t0) +/* 00EDDC 7000E1DC 0C006184 */ jal __osRestoreInt +/* 00EDE0 7000E1E0 02202025 */ move $a0, $s1 +/* 00EDE4 7000E1E4 8FBF001C */ lw $ra, 0x1c($sp) +/* 00EDE8 7000E1E8 8FB00014 */ lw $s0, 0x14($sp) +/* 00EDEC 7000E1EC 8FB10018 */ lw $s1, 0x18($sp) +/* 00EDF0 7000E1F0 03E00008 */ jr $ra +/* 00EDF4 7000E1F4 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/src/libultra/osViSetYScale.s b/src/libultra/osViSetYScale.s new file mode 100644 index 0000000..dada628 --- /dev/null +++ b/src/libultra/osViSetYScale.s @@ -0,0 +1,32 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osViSetYScale +/* 00EE00 7000E200 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00EE04 7000E204 AFBF001C */ sw $ra, 0x1c($sp) +/* 00EE08 7000E208 E7AC0028 */ swc1 $f12, 0x28($sp) +/* 00EE0C 7000E20C 0C00617C */ jal __osDisableInt +/* 00EE10 7000E210 AFB00018 */ sw $s0, 0x18($sp) +/* 00EE14 7000E214 3C0E8003 */ lui $t6, %hi(__osViNext) +/* 00EE18 7000E218 8DCE8044 */ lw $t6, %lo(__osViNext)($t6) +/* 00EE1C 7000E21C C7A40028 */ lwc1 $f4, 0x28($sp) +/* 00EE20 7000E220 3C0F8003 */ lui $t7, %hi(__osViNext) +/* 00EE24 7000E224 00408025 */ move $s0, $v0 +/* 00EE28 7000E228 E5C40024 */ swc1 $f4, 0x24($t6) +/* 00EE2C 7000E22C 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) +/* 00EE30 7000E230 02002025 */ move $a0, $s0 +/* 00EE34 7000E234 95F80000 */ lhu $t8, ($t7) +/* 00EE38 7000E238 37190004 */ ori $t9, $t8, 4 +/* 00EE3C 7000E23C 0C006184 */ jal __osRestoreInt +/* 00EE40 7000E240 A5F90000 */ sh $t9, ($t7) +/* 00EE44 7000E244 8FBF001C */ lw $ra, 0x1c($sp) +/* 00EE48 7000E248 8FB00018 */ lw $s0, 0x18($sp) +/* 00EE4C 7000E24C 27BD0028 */ addiu $sp, $sp, 0x28 +/* 00EE50 7000E250 03E00008 */ jr $ra +/* 00EE54 7000E254 00000000 */ nop diff --git a/src/libultra/osViSwapBuffer.s b/src/libultra/osViSwapBuffer.s new file mode 100644 index 0000000..46b439b --- /dev/null +++ b/src/libultra/osViSwapBuffer.s @@ -0,0 +1,31 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +glabel osViSwapBuffer +/* 00F090 7000E490 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 00F094 7000E494 AFBF0014 */ sw $ra, 0x14($sp) +/* 00F098 7000E498 0C00617C */ jal __osDisableInt +/* 00F09C 7000E49C AFA40020 */ sw $a0, 0x20($sp) +/* 00F0A0 7000E4A0 3C0F8003 */ lui $t7, %hi(__osViNext) +/* 00F0A4 7000E4A4 8DEF8044 */ lw $t7, %lo(__osViNext)($t7) +/* 00F0A8 7000E4A8 8FAE0020 */ lw $t6, 0x20($sp) +/* 00F0AC 7000E4AC AFA2001C */ sw $v0, 0x1c($sp) +/* 00F0B0 7000E4B0 3C188003 */ lui $t8, %hi(__osViNext) +/* 00F0B4 7000E4B4 ADEE0004 */ sw $t6, 4($t7) +/* 00F0B8 7000E4B8 8F188044 */ lw $t8, %lo(__osViNext)($t8) +/* 00F0BC 7000E4BC 97190000 */ lhu $t9, ($t8) +/* 00F0C0 7000E4C0 37280010 */ ori $t0, $t9, 0x10 +/* 00F0C4 7000E4C4 A7080000 */ sh $t0, ($t8) +/* 00F0C8 7000E4C8 0C006184 */ jal __osRestoreInt +/* 00F0CC 7000E4CC 8FA4001C */ lw $a0, 0x1c($sp) +/* 00F0D0 7000E4D0 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F0D4 7000E4D4 27BD0020 */ addiu $sp, $sp, 0x20 +/* 00F0D8 7000E4D8 03E00008 */ jr $ra +/* 00F0DC 7000E4DC 00000000 */ nop diff --git a/src/libultra/osVirtualToPhysical.s b/src/libultra/osVirtualToPhysical.s new file mode 100644 index 0000000..f558646 --- /dev/null +++ b/src/libultra/osVirtualToPhysical.s @@ -0,0 +1,44 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osVirtualToPhysical +/* 00F4B0 7000E8B0 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 00F4B4 7000E8B4 AFA40018 */ sw $a0, 0x18($sp) +/* 00F4B8 7000E8B8 8FAE0018 */ lw $t6, 0x18($sp) +/* 00F4BC 7000E8BC 3C018000 */ lui $at, 0x8000 +/* 00F4C0 7000E8C0 AFBF0014 */ sw $ra, 0x14($sp) +/* 00F4C4 7000E8C4 01C1082B */ sltu $at, $t6, $at +/* 00F4C8 7000E8C8 14200007 */ bnez $at, .L7000E8E8 +/* 00F4CC 7000E8CC 3C01A000 */ lui $at, 0xa000 +/* 00F4D0 7000E8D0 01C1082B */ sltu $at, $t6, $at +/* 00F4D4 7000E8D4 10200004 */ beqz $at, .L7000E8E8 +/* 00F4D8 7000E8D8 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff +/* 00F4DC 7000E8DC 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 00F4E0 7000E8E0 1000000E */ b .L7000E91C +/* 00F4E4 7000E8E4 01C11024 */ and $v0, $t6, $at +.L7000E8E8: +/* 00F4E8 7000E8E8 8FAF0018 */ lw $t7, 0x18($sp) +/* 00F4EC 7000E8EC 3C01A000 */ lui $at, 0xa000 +/* 00F4F0 7000E8F0 01E1082B */ sltu $at, $t7, $at +/* 00F4F4 7000E8F4 14200007 */ bnez $at, .L7000E914 +/* 00F4F8 7000E8F8 3C01C000 */ lui $at, 0xc000 +/* 00F4FC 7000E8FC 01E1082B */ sltu $at, $t7, $at +/* 00F500 7000E900 10200004 */ beqz $at, .L7000E914 +/* 00F504 7000E904 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff +/* 00F508 7000E908 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff +/* 00F50C 7000E90C 10000003 */ b .L7000E91C +/* 00F510 7000E910 01E11024 */ and $v0, $t7, $at +.L7000E914: +/* 00F514 7000E914 0C006408 */ jal __osProbeTLB +/* 00F518 7000E918 8FA40018 */ lw $a0, 0x18($sp) +.L7000E91C: +/* 00F51C 7000E91C 8FBF0014 */ lw $ra, 0x14($sp) +/* 00F520 7000E920 27BD0018 */ addiu $sp, $sp, 0x18 +/* 00F524 7000E924 03E00008 */ jr $ra +/* 00F528 7000E928 00000000 */ nop diff --git a/src/libultra/osWritebackDCache.s b/src/libultra/osWritebackDCache.s new file mode 100644 index 0000000..3cba7d8 --- /dev/null +++ b/src/libultra/osWritebackDCache.s @@ -0,0 +1,44 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osWritebackDCache +/* 0117D0 70010BD0 18A00011 */ blez $a1, .L70010C18 +/* 0117D4 70010BD4 00000000 */ nop +/* 0117D8 70010BD8 240B2000 */ li $t3, 8192 +/* 0117DC 70010BDC 00AB082B */ sltu $at, $a1, $t3 +/* 0117E0 70010BE0 1020000F */ beqz $at, .L70010C20 +/* 0117E4 70010BE4 00000000 */ nop +/* 0117E8 70010BE8 00804025 */ move $t0, $a0 +/* 0117EC 70010BEC 00854821 */ addu $t1, $a0, $a1 +/* 0117F0 70010BF0 0109082B */ sltu $at, $t0, $t1 +/* 0117F4 70010BF4 10200008 */ beqz $at, .L70010C18 +/* 0117F8 70010BF8 00000000 */ nop +/* 0117FC 70010BFC 310A000F */ andi $t2, $t0, 0xf +/* 011800 70010C00 2529FFF0 */ addiu $t1, $t1, -0x10 +/* 011804 70010C04 010A4023 */ subu $t0, $t0, $t2 +.L70010C08: +/* 011808 70010C08 BD190000 */ cache 0x19, ($t0) +/* 01180C 70010C0C 0109082B */ sltu $at, $t0, $t1 +/* 011810 70010C10 1420FFFD */ bnez $at, .L70010C08 +/* 011814 70010C14 25080010 */ addiu $t0, $t0, 0x10 +.L70010C18: +/* 011818 70010C18 03E00008 */ jr $ra +/* 01181C 70010C1C 00000000 */ nop + +.L70010C20: +/* 011820 70010C20 3C088000 */ lui $t0, 0x8000 +/* 011824 70010C24 010B4821 */ addu $t1, $t0, $t3 +/* 011828 70010C28 2529FFF0 */ addiu $t1, $t1, -0x10 +.L70010C2C: +/* 01182C 70010C2C BD010000 */ cache 1, ($t0) +/* 011830 70010C30 0109082B */ sltu $at, $t0, $t1 +/* 011834 70010C34 1420FFFD */ bnez $at, .L70010C2C +/* 011838 70010C38 25080010 */ addiu $t0, $t0, 0x10 +/* 01183C 70010C3C 03E00008 */ jr $ra +/* 011840 70010C40 00000000 */ nop diff --git a/src/libultra/osWritebackDCacheAll.s b/src/libultra/osWritebackDCacheAll.s new file mode 100644 index 0000000..14aafbb --- /dev/null +++ b/src/libultra/osWritebackDCacheAll.s @@ -0,0 +1,21 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osWritebackDCacheAll +/* 00DF20 7000D320 3C088000 */ lui $t0, 0x8000 +/* 00DF24 7000D324 240A2000 */ li $t2, 8192 +/* 00DF28 7000D328 010A4821 */ addu $t1, $t0, $t2 +/* 00DF2C 7000D32C 2529FFF0 */ addiu $t1, $t1, -0x10 +.L7000D330: +/* 00DF30 7000D330 BD010000 */ cache 1, ($t0) +/* 00DF34 7000D334 0109082B */ sltu $at, $t0, $t1 +/* 00DF38 7000D338 1420FFFD */ bnez $at, .L7000D330 +/* 00DF3C 7000D33C 25080010 */ addiu $t0, $t0, 0x10 +/* 00DF40 7000D340 03E00008 */ jr $ra +/* 00DF44 7000D344 00000000 */ nop diff --git a/src/libultra/osYieldThread.s b/src/libultra/osYieldThread.s new file mode 100644 index 0000000..55e4616 --- /dev/null +++ b/src/libultra/osYieldThread.s @@ -0,0 +1,29 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel osYieldThread +/* 0116D0 70010AD0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 0116D4 70010AD4 AFBF001C */ sw $ra, 0x1c($sp) +/* 0116D8 70010AD8 0C00617C */ jal __osDisableInt +/* 0116DC 70010ADC AFB00018 */ sw $s0, 0x18($sp) +/* 0116E0 70010AE0 3C0F8002 */ lui $t7, %hi(__osRunningThread) +/* 0116E4 70010AE4 8DEF7730 */ lw $t7, %lo(__osRunningThread)($t7) +/* 0116E8 70010AE8 240E0002 */ li $t6, 2 +/* 0116EC 70010AEC 3C048002 */ lui $a0, %hi(__osRunQueue) +/* 0116F0 70010AF0 00408025 */ move $s0, $v0 +/* 0116F4 70010AF4 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728 +/* 0116F8 70010AF8 0C0041EB */ jal __osEnqueueAndYield +/* 0116FC 70010AFC A5EE0010 */ sh $t6, 0x10($t7) +/* 011700 70010B00 0C006184 */ jal __osRestoreInt +/* 011704 70010B04 02002025 */ move $a0, $s0 +/* 011708 70010B08 8FBF001C */ lw $ra, 0x1c($sp) +/* 01170C 70010B0C 8FB00018 */ lw $s0, 0x18($sp) +/* 011710 70010B10 27BD0028 */ addiu $sp, $sp, 0x28 +/* 011714 70010B14 03E00008 */ jr $ra +/* 011718 70010B18 00000000 */ nop diff --git a/src/libultra/string.s b/src/libultra/string.s new file mode 100644 index 0000000..bef06d1 --- /dev/null +++ b/src/libultra/string.s @@ -0,0 +1,59 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" +glabel memcpy +/* 014450 70013850 00801025 */ move $v0, $a0 +/* 014454 70013854 10C00007 */ beqz $a2, .L70013874 +/* 014458 70013858 00A01825 */ move $v1, $a1 +.L7001385C: +/* 01445C 7001385C 906E0000 */ lbu $t6, ($v1) +/* 014460 70013860 24C6FFFF */ addiu $a2, $a2, -1 +/* 014464 70013864 24420001 */ addiu $v0, $v0, 1 +/* 014468 70013868 24630001 */ addiu $v1, $v1, 1 +/* 01446C 7001386C 14C0FFFB */ bnez $a2, .L7001385C +/* 014470 70013870 A04EFFFF */ sb $t6, -1($v0) +.L70013874: +/* 014474 70013874 03E00008 */ jr $ra +/* 014478 70013878 00801025 */ move $v0, $a0 + +glabel strlen +/* 01447C 7001387C 908E0000 */ lbu $t6, ($a0) +/* 014480 70013880 00801825 */ move $v1, $a0 +/* 014484 70013884 11C00005 */ beqz $t6, .L7001389C +/* 014488 70013888 00000000 */ nop +/* 01448C 7001388C 906F0001 */ lbu $t7, 1($v1) +.L70013890: +/* 014490 70013890 24630001 */ addiu $v1, $v1, 1 +/* 014494 70013894 55E0FFFE */ bnezl $t7, .L70013890 +/* 014498 70013898 906F0001 */ lbu $t7, 1($v1) +.L7001389C: +/* 01449C 7001389C 03E00008 */ jr $ra +/* 0144A0 700138A0 00641023 */ subu $v0, $v1, $a0 + +glabel strchr +/* 0144A4 700138A4 90830000 */ lbu $v1, ($a0) +/* 0144A8 700138A8 30AE00FF */ andi $t6, $a1, 0xff +/* 0144AC 700138AC 30A200FF */ andi $v0, $a1, 0xff +/* 0144B0 700138B0 51C3000A */ beql $t6, $v1, .L700138DC +/* 0144B4 700138B4 00801025 */ move $v0, $a0 +.L700138B8: +/* 0144B8 700138B8 54600004 */ bnezl $v1, .L700138CC +/* 0144BC 700138BC 90830001 */ lbu $v1, 1($a0) +/* 0144C0 700138C0 03E00008 */ jr $ra +/* 0144C4 700138C4 00001025 */ move $v0, $zero + +/* 0144C8 700138C8 90830001 */ lbu $v1, 1($a0) +.L700138CC: +/* 0144CC 700138CC 24840001 */ addiu $a0, $a0, 1 +/* 0144D0 700138D0 1443FFF9 */ bne $v0, $v1, .L700138B8 +/* 0144D4 700138D4 00000000 */ nop +/* 0144D8 700138D8 00801025 */ move $v0, $a0 +.L700138DC: +/* 0144DC 700138DC 03E00008 */ jr $ra +/* 0144E0 700138E0 00000000 */ nop diff --git a/src/libultra/syn.s b/src/libultra/syn.s new file mode 100644 index 0000000..d22e06c --- /dev/null +++ b/src/libultra/syn.s @@ -0,0 +1,493 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + + +.section .text, "ax" + +/* 00FBC0 7000EFC0 03E00008 */ jr $ra +/* 00FBC4 7000EFC4 00000000 */ nop + +glabel _timeToSamples +/* 00FBC8 7000EFC8 8C8E0044 */ lw $t6, 0x44($a0) +/* 00FBCC 7000EFCC 44852000 */ mtc1 $a1, $f4 +/* 00FBD0 7000EFD0 3C018003 */ lui $at, %hi(F64_80029420) +/* 00FBD4 7000EFD4 448E4000 */ mtc1 $t6, $f8 +/* 00FBD8 7000EFD8 468021A0 */ cvt.s.w $f6, $f4 +/* 00FBDC 7000EFDC D4249420 */ ldc1 $f4, %lo(F64_80029420)($at) +/* 00FBE0 7000EFE0 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 +/* 00FBE4 7000EFE4 44813800 */ mtc1 $at, $f7 +/* 00FBE8 7000EFE8 2401FFF0 */ li $at, -16 +/* 00FBEC 7000EFEC 468042A0 */ cvt.s.w $f10, $f8 +/* 00FBF0 7000EFF0 460A3402 */ mul.s $f16, $f6, $f10 +/* 00FBF4 7000EFF4 44803000 */ mtc1 $zero, $f6 +/* 00FBF8 7000EFF8 460084A1 */ cvt.d.s $f18, $f16 +/* 00FBFC 7000EFFC 46249203 */ div.d $f8, $f18, $f4 +/* 00FC00 7000F000 46264280 */ add.d $f10, $f8, $f6 +/* 00FC04 7000F004 46205020 */ cvt.s.d $f0, $f10 +/* 00FC08 7000F008 4600040D */ trunc.w.s $f16, $f0 +/* 00FC0C 7000F00C 44028000 */ mfc1 $v0, $f16 +/* 00FC10 7000F010 00000000 */ nop +/* 00FC14 7000F014 0041C024 */ and $t8, $v0, $at +/* 00FC18 7000F018 03E00008 */ jr $ra +/* 00FC1C 7000F01C 03001025 */ move $v0, $t8 + +glabel _freePVoice +/* 00FC20 7000F020 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 00FC24 7000F024 AFBF0014 */ sw $ra, 0x14($sp) +/* 00FC28 7000F028 AFA40018 */ sw $a0, 0x18($sp) +/* 00FC2C 7000F02C AFA5001C */ sw $a1, 0x1c($sp) +/* 00FC30 7000F030 0C003AA4 */ jal alUnlink +/* 00FC34 7000F034 00A02025 */ move $a0, $a1 +/* 00FC38 7000F038 8FA50018 */ lw $a1, 0x18($sp) +/* 00FC3C 7000F03C 8FA4001C */ lw $a0, 0x1c($sp) +/* 00FC40 7000F040 0C003AB0 */ jal alLink +/* 00FC44 7000F044 24A50014 */ addiu $a1, $a1, 0x14 +/* 00FC48 7000F048 8FBF0014 */ lw $ra, 0x14($sp) +/* 00FC4C 7000F04C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 00FC50 7000F050 03E00008 */ jr $ra +/* 00FC54 7000F054 00000000 */ nop + +glabel _collectPVoices +/* 00FC58 7000F058 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 00FC5C 7000F05C AFBF0024 */ sw $ra, 0x24($sp) +/* 00FC60 7000F060 AFB20020 */ sw $s2, 0x20($sp) +/* 00FC64 7000F064 AFB1001C */ sw $s1, 0x1c($sp) +/* 00FC68 7000F068 AFB00018 */ sw $s0, 0x18($sp) +/* 00FC6C 7000F06C 8C900014 */ lw $s0, 0x14($a0) +/* 00FC70 7000F070 00808825 */ move $s1, $a0 +/* 00FC74 7000F074 24920004 */ addiu $s2, $a0, 4 +/* 00FC78 7000F078 5200000A */ beql $s0, $zero, .L7000F0A4 +/* 00FC7C 7000F07C 8FBF0024 */ lw $ra, 0x24($sp) +.L7000F080: +/* 00FC80 7000F080 0C003AA4 */ jal alUnlink +/* 00FC84 7000F084 02002025 */ move $a0, $s0 +/* 00FC88 7000F088 02002025 */ move $a0, $s0 +/* 00FC8C 7000F08C 0C003AB0 */ jal alLink +/* 00FC90 7000F090 02402825 */ move $a1, $s2 +/* 00FC94 7000F094 8E300014 */ lw $s0, 0x14($s1) +/* 00FC98 7000F098 1600FFF9 */ bnez $s0, .L7000F080 +/* 00FC9C 7000F09C 00000000 */ nop +/* 00FCA0 7000F0A0 8FBF0024 */ lw $ra, 0x24($sp) +.L7000F0A4: +/* 00FCA4 7000F0A4 8FB00018 */ lw $s0, 0x18($sp) +/* 00FCA8 7000F0A8 8FB1001C */ lw $s1, 0x1c($sp) +/* 00FCAC 7000F0AC 8FB20020 */ lw $s2, 0x20($sp) +/* 00FCB0 7000F0B0 03E00008 */ jr $ra +/* 00FCB4 7000F0B4 27BD0028 */ addiu $sp, $sp, 0x28 + +glabel __freeParam +/* 00FCB8 7000F0B8 3C028002 */ lui $v0, %hi(alGlobals) +/* 00FCBC 7000F0BC 8C4276E0 */ lw $v0, %lo(alGlobals)($v0) +/* 00FCC0 7000F0C0 8C4E002C */ lw $t6, 0x2c($v0) +/* 00FCC4 7000F0C4 AC8E0000 */ sw $t6, ($a0) +/* 00FCC8 7000F0C8 03E00008 */ jr $ra +/* 00FCCC 7000F0CC AC44002C */ sw $a0, 0x2c($v0) + +glabel __allocParam +/* 00FCD0 7000F0D0 3C028002 */ lui $v0, %hi(alGlobals) +/* 00FCD4 7000F0D4 8C4276E0 */ lw $v0, %lo(alGlobals)($v0) +/* 00FCD8 7000F0D8 00001825 */ move $v1, $zero +/* 00FCDC 7000F0DC 8C44002C */ lw $a0, 0x2c($v0) +/* 00FCE0 7000F0E0 10800005 */ beqz $a0, .L7000F0F8 +/* 00FCE4 7000F0E4 00000000 */ nop +/* 00FCE8 7000F0E8 8C8E0000 */ lw $t6, ($a0) +/* 00FCEC 7000F0EC 00801825 */ move $v1, $a0 +/* 00FCF0 7000F0F0 AC4E002C */ sw $t6, 0x2c($v0) +/* 00FCF4 7000F0F4 AC800000 */ sw $zero, ($a0) +.L7000F0F8: +/* 00FCF8 7000F0F8 03E00008 */ jr $ra +/* 00FCFC 7000F0FC 00601025 */ move $v0, $v1 + +/* 00FD00 7000F100 03E00008 */ jr $ra +/* 00FD04 7000F104 00000000 */ nop + +glabel alAudioFrame +/* 00FD08 7000F108 27BDFF48 */ addiu $sp, $sp, -0xb8 +/* 00FD0C 7000F10C AFB10030 */ sw $s1, 0x30($sp) +/* 00FD10 7000F110 3C118002 */ lui $s1, %hi(alGlobals) +/* 00FD14 7000F114 8E3176E0 */ lw $s1, %lo(alGlobals)($s1) +/* 00FD18 7000F118 AFBF004C */ sw $ra, 0x4c($sp) +/* 00FD1C 7000F11C AFB70048 */ sw $s7, 0x48($sp) +/* 00FD20 7000F120 AFB60044 */ sw $s6, 0x44($sp) +/* 00FD24 7000F124 AFB50040 */ sw $s5, 0x40($sp) +/* 00FD28 7000F128 AFB4003C */ sw $s4, 0x3c($sp) +/* 00FD2C 7000F12C AFB30038 */ sw $s3, 0x38($sp) +/* 00FD30 7000F130 AFB20034 */ sw $s2, 0x34($sp) +/* 00FD34 7000F134 AFB0002C */ sw $s0, 0x2c($sp) +/* 00FD38 7000F138 F7B60020 */ sdc1 $f22, 0x20($sp) +/* 00FD3C 7000F13C F7B40018 */ sdc1 $f20, 0x18($sp) +/* 00FD40 7000F140 AFA400B8 */ sw $a0, 0xb8($sp) +/* 00FD44 7000F144 AFA500BC */ sw $a1, 0xbc($sp) +/* 00FD48 7000F148 A7A000AA */ sh $zero, 0xaa($sp) +/* 00FD4C 7000F14C 8E2F0000 */ lw $t7, ($s1) +/* 00FD50 7000F150 00E09825 */ move $s3, $a3 +/* 00FD54 7000F154 0080A025 */ move $s4, $a0 +/* 00FD58 7000F158 15E00004 */ bnez $t7, .L7000F16C +/* 00FD5C 7000F15C 00C0A825 */ move $s5, $a2 +/* 00FD60 7000F160 ACA00000 */ sw $zero, ($a1) +/* 00FD64 7000F164 10000081 */ b .L7000F36C +/* 00FD68 7000F168 00801025 */ move $v0, $a0 +.L7000F16C: +/* 00FD6C 7000F16C AFA000B4 */ sw $zero, 0xb4($sp) +/* 00FD70 7000F170 8E220000 */ lw $v0, ($s1) +/* 00FD74 7000F174 3C037FFF */ lui $v1, (0x7FFFFFFF >> 16) # lui $v1, 0x7fff +/* 00FD78 7000F178 3463FFFF */ ori $v1, (0x7FFFFFFF & 0xFFFF) # ori $v1, $v1, 0xffff +/* 00FD7C 7000F17C 1040000E */ beqz $v0, .L7000F1B8 +/* 00FD80 7000F180 2412FFF0 */ li $s2, -16 +/* 00FD84 7000F184 8E240020 */ lw $a0, 0x20($s1) +/* 00FD88 7000F188 8C590010 */ lw $t9, 0x10($v0) +.L7000F18C: +/* 00FD8C 7000F18C 03244023 */ subu $t0, $t9, $a0 +/* 00FD90 7000F190 0103082A */ slt $at, $t0, $v1 +/* 00FD94 7000F194 50200006 */ beql $at, $zero, .L7000F1B0 +/* 00FD98 7000F198 8C420000 */ lw $v0, ($v0) +/* 00FD9C 7000F19C AFA200B4 */ sw $v0, 0xb4($sp) +/* 00FDA0 7000F1A0 8C490010 */ lw $t1, 0x10($v0) +/* 00FDA4 7000F1A4 8E240020 */ lw $a0, 0x20($s1) +/* 00FDA8 7000F1A8 01241823 */ subu $v1, $t1, $a0 +/* 00FDAC 7000F1AC 8C420000 */ lw $v0, ($v0) +.L7000F1B0: +/* 00FDB0 7000F1B0 5440FFF6 */ bnezl $v0, .L7000F18C +/* 00FDB4 7000F1B4 8C590010 */ lw $t9, 0x10($v0) +.L7000F1B8: +/* 00FDB8 7000F1B8 8FAA00B4 */ lw $t2, 0xb4($sp) +/* 00FDBC 7000F1BC 8E240020 */ lw $a0, 0x20($s1) +/* 00FDC0 7000F1C0 8D420010 */ lw $v0, 0x10($t2) +/* 00FDC4 7000F1C4 00445823 */ subu $t3, $v0, $a0 +/* 00FDC8 7000F1C8 0173082A */ slt $at, $t3, $s3 +/* 00FDCC 7000F1CC 10200038 */ beqz $at, .L7000F2B0 +/* 00FDD0 7000F1D0 AE22001C */ sw $v0, 0x1c($s1) +/* 00FDD4 7000F1D4 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 +/* 00FDD8 7000F1D8 4481B800 */ mtc1 $at, $f23 +/* 00FDDC 7000F1DC 3C018003 */ lui $at, %hi(F64_80029428) +/* 00FDE0 7000F1E0 4480B000 */ mtc1 $zero, $f22 +/* 00FDE4 7000F1E4 D4349428 */ ldc1 $f20, %lo(F64_80029428)($at) +.L7000F1E8: +/* 00FDE8 7000F1E8 8E2C001C */ lw $t4, 0x1c($s1) +/* 00FDEC 7000F1EC 3C107FFF */ lui $s0, (0x7FFFFFFF >> 16) # lui $s0, 0x7fff +/* 00FDF0 7000F1F0 3610FFFF */ ori $s0, (0x7FFFFFFF & 0xFFFF) # ori $s0, $s0, 0xffff +/* 00FDF4 7000F1F4 01926824 */ and $t5, $t4, $s2 +/* 00FDF8 7000F1F8 AE2D001C */ sw $t5, 0x1c($s1) +/* 00FDFC 7000F1FC 8FA400B4 */ lw $a0, 0xb4($sp) +/* 00FE00 7000F200 8C990008 */ lw $t9, 8($a0) +/* 00FE04 7000F204 0320F809 */ jalr $t9 +/* 00FE08 7000F208 00000000 */ nop +/* 00FE0C 7000F20C 8E380044 */ lw $t8, 0x44($s1) +/* 00FE10 7000F210 44822000 */ mtc1 $v0, $f4 +/* 00FE14 7000F214 8FA800B4 */ lw $t0, 0xb4($sp) +/* 00FE18 7000F218 44984000 */ mtc1 $t8, $f8 +/* 00FE1C 7000F21C 468021A0 */ cvt.s.w $f6, $f4 +/* 00FE20 7000F220 8D090010 */ lw $t1, 0x10($t0) +/* 00FE24 7000F224 468042A0 */ cvt.s.w $f10, $f8 +/* 00FE28 7000F228 460A3402 */ mul.s $f16, $f6, $f10 +/* 00FE2C 7000F22C 460084A1 */ cvt.d.s $f18, $f16 +/* 00FE30 7000F230 46349103 */ div.d $f4, $f18, $f20 +/* 00FE34 7000F234 46362200 */ add.d $f8, $f4, $f22 +/* 00FE38 7000F238 46204020 */ cvt.s.d $f0, $f8 +/* 00FE3C 7000F23C 4600018D */ trunc.w.s $f6, $f0 +/* 00FE40 7000F240 44023000 */ mfc1 $v0, $f6 +/* 00FE44 7000F244 00000000 */ nop +/* 00FE48 7000F248 01225021 */ addu $t2, $t1, $v0 +/* 00FE4C 7000F24C AD0A0010 */ sw $t2, 0x10($t0) +/* 00FE50 7000F250 AFA000B4 */ sw $zero, 0xb4($sp) +/* 00FE54 7000F254 8E230000 */ lw $v1, ($s1) +/* 00FE58 7000F258 5060000F */ beql $v1, $zero, .L7000F298 +/* 00FE5C 7000F25C 8FAF00B4 */ lw $t7, 0xb4($sp) +/* 00FE60 7000F260 8E240020 */ lw $a0, 0x20($s1) +/* 00FE64 7000F264 8C6B0010 */ lw $t3, 0x10($v1) +.L7000F268: +/* 00FE68 7000F268 01646023 */ subu $t4, $t3, $a0 +/* 00FE6C 7000F26C 0190082A */ slt $at, $t4, $s0 +/* 00FE70 7000F270 50200006 */ beql $at, $zero, .L7000F28C +/* 00FE74 7000F274 8C630000 */ lw $v1, ($v1) +/* 00FE78 7000F278 AFA300B4 */ sw $v1, 0xb4($sp) +/* 00FE7C 7000F27C 8C6D0010 */ lw $t5, 0x10($v1) +/* 00FE80 7000F280 8E240020 */ lw $a0, 0x20($s1) +/* 00FE84 7000F284 01A48023 */ subu $s0, $t5, $a0 +/* 00FE88 7000F288 8C630000 */ lw $v1, ($v1) +.L7000F28C: +/* 00FE8C 7000F28C 5460FFF6 */ bnezl $v1, .L7000F268 +/* 00FE90 7000F290 8C6B0010 */ lw $t3, 0x10($v1) +/* 00FE94 7000F294 8FAF00B4 */ lw $t7, 0xb4($sp) +.L7000F298: +/* 00FE98 7000F298 8E240020 */ lw $a0, 0x20($s1) +/* 00FE9C 7000F29C 8DE20010 */ lw $v0, 0x10($t7) +/* 00FEA0 7000F2A0 0044C823 */ subu $t9, $v0, $a0 +/* 00FEA4 7000F2A4 0333082A */ slt $at, $t9, $s3 +/* 00FEA8 7000F2A8 1420FFCF */ bnez $at, .L7000F1E8 +/* 00FEAC 7000F2AC AE22001C */ sw $v0, 0x1c($s1) +.L7000F2B0: +/* 00FEB0 7000F2B0 8E38001C */ lw $t8, 0x1c($s1) +/* 00FEB4 7000F2B4 2412FFF0 */ li $s2, -16 +/* 00FEB8 7000F2B8 27B700AA */ addiu $s7, $sp, 0xaa +/* 00FEBC 7000F2BC 03127024 */ and $t6, $t8, $s2 +/* 00FEC0 7000F2C0 1A600022 */ blez $s3, .L7000F34C +/* 00FEC4 7000F2C4 AE2E001C */ sw $t6, 0x1c($s1) +/* 00FEC8 7000F2C8 3C160700 */ lui $s6, 0x700 +.L7000F2CC: +/* 00FECC 7000F2CC 8E220048 */ lw $v0, 0x48($s1) +/* 00FED0 7000F2D0 02608025 */ move $s0, $s3 +/* 00FED4 7000F2D4 0053082A */ slt $at, $v0, $s3 +/* 00FED8 7000F2D8 10200003 */ beqz $at, .L7000F2E8 +/* 00FEDC 7000F2DC 00000000 */ nop +/* 00FEE0 7000F2E0 10000001 */ b .L7000F2E8 +/* 00FEE4 7000F2E4 00408025 */ move $s0, $v0 +.L7000F2E8: +/* 00FEE8 7000F2E8 AE960000 */ sw $s6, ($s4) +/* 00FEEC 7000F2EC AE800004 */ sw $zero, 4($s4) +/* 00FEF0 7000F2F0 8E320038 */ lw $s2, 0x38($s1) +/* 00FEF4 7000F2F4 24050006 */ li $a1, 6 +/* 00FEF8 7000F2F8 02A03025 */ move $a2, $s5 +/* 00FEFC 7000F2FC 8E590008 */ lw $t9, 8($s2) +/* 00FF00 7000F300 02402025 */ move $a0, $s2 +/* 00FF04 7000F304 0320F809 */ jalr $t9 +/* 00FF08 7000F308 00000000 */ nop +/* 00FF0C 7000F30C 8E270020 */ lw $a3, 0x20($s1) +/* 00FF10 7000F310 26890008 */ addiu $t1, $s4, 8 +/* 00FF14 7000F314 AFA90010 */ sw $t1, 0x10($sp) +/* 00FF18 7000F318 8E590004 */ lw $t9, 4($s2) +/* 00FF1C 7000F31C 02402025 */ move $a0, $s2 +/* 00FF20 7000F320 02E02825 */ move $a1, $s7 +/* 00FF24 7000F324 0320F809 */ jalr $t9 +/* 00FF28 7000F328 02003025 */ move $a2, $s0 +/* 00FF2C 7000F32C 8E2B0020 */ lw $t3, 0x20($s1) +/* 00FF30 7000F330 02709823 */ subu $s3, $s3, $s0 +/* 00FF34 7000F334 00104080 */ sll $t0, $s0, 2 +/* 00FF38 7000F338 01706021 */ addu $t4, $t3, $s0 +/* 00FF3C 7000F33C 0040A025 */ move $s4, $v0 +/* 00FF40 7000F340 02A8A821 */ addu $s5, $s5, $t0 +/* 00FF44 7000F344 1E60FFE1 */ bgtz $s3, .L7000F2CC +/* 00FF48 7000F348 AE2C0020 */ sw $t4, 0x20($s1) +.L7000F34C: +/* 00FF4C 7000F34C 8FAD00B8 */ lw $t5, 0xb8($sp) +/* 00FF50 7000F350 8FAE00BC */ lw $t6, 0xbc($sp) +/* 00FF54 7000F354 02202025 */ move $a0, $s1 +/* 00FF58 7000F358 028D7823 */ subu $t7, $s4, $t5 +/* 00FF5C 7000F35C 000FC0C3 */ sra $t8, $t7, 3 +/* 00FF60 7000F360 0C003C16 */ jal _collectPVoices +/* 00FF64 7000F364 ADD80000 */ sw $t8, ($t6) +/* 00FF68 7000F368 02801025 */ move $v0, $s4 +.L7000F36C: +/* 00FF6C 7000F36C 8FBF004C */ lw $ra, 0x4c($sp) +/* 00FF70 7000F370 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 00FF74 7000F374 D7B60020 */ ldc1 $f22, 0x20($sp) +/* 00FF78 7000F378 8FB0002C */ lw $s0, 0x2c($sp) +/* 00FF7C 7000F37C 8FB10030 */ lw $s1, 0x30($sp) +/* 00FF80 7000F380 8FB20034 */ lw $s2, 0x34($sp) +/* 00FF84 7000F384 8FB30038 */ lw $s3, 0x38($sp) +/* 00FF88 7000F388 8FB4003C */ lw $s4, 0x3c($sp) +/* 00FF8C 7000F38C 8FB50040 */ lw $s5, 0x40($sp) +/* 00FF90 7000F390 8FB60044 */ lw $s6, 0x44($sp) +/* 00FF94 7000F394 8FB70048 */ lw $s7, 0x48($sp) +/* 00FF98 7000F398 03E00008 */ jr $ra +/* 00FF9C 7000F39C 27BD00B8 */ addiu $sp, $sp, 0xb8 + +glabel alSynNew +/* 00FFA0 7000F3A0 27BDFF88 */ addiu $sp, $sp, -0x78 +/* 00FFA4 7000F3A4 AFBF0044 */ sw $ra, 0x44($sp) +/* 00FFA8 7000F3A8 AFBE0040 */ sw $fp, 0x40($sp) +/* 00FFAC 7000F3AC AFB7003C */ sw $s7, 0x3c($sp) +/* 00FFB0 7000F3B0 AFB60038 */ sw $s6, 0x38($sp) +/* 00FFB4 7000F3B4 AFB50034 */ sw $s5, 0x34($sp) +/* 00FFB8 7000F3B8 AFB40030 */ sw $s4, 0x30($sp) +/* 00FFBC 7000F3BC AFB3002C */ sw $s3, 0x2c($sp) +/* 00FFC0 7000F3C0 AFB20028 */ sw $s2, 0x28($sp) +/* 00FFC4 7000F3C4 AFB10024 */ sw $s1, 0x24($sp) +/* 00FFC8 7000F3C8 AFB00020 */ sw $s0, 0x20($sp) +/* 00FFCC 7000F3CC 8CB70014 */ lw $s7, 0x14($a1) +/* 00FFD0 7000F3D0 AC800000 */ sw $zero, ($a0) +/* 00FFD4 7000F3D4 8CAE0004 */ lw $t6, 4($a1) +/* 00FFD8 7000F3D8 AC800020 */ sw $zero, 0x20($a0) +/* 00FFDC 7000F3DC AC80001C */ sw $zero, 0x1c($a0) +/* 00FFE0 7000F3E0 AC8E003C */ sw $t6, 0x3c($a0) +/* 00FFE4 7000F3E4 8CAF0018 */ lw $t7, 0x18($a1) +/* 00FFE8 7000F3E8 241800A0 */ li $t8, 160 +/* 00FFEC 7000F3EC AC980048 */ sw $t8, 0x48($a0) +/* 00FFF0 7000F3F0 AC8F0044 */ sw $t7, 0x44($a0) +/* 00FFF4 7000F3F4 8CB90010 */ lw $t9, 0x10($a1) +/* 00FFF8 7000F3F8 0080B025 */ move $s6, $a0 +/* 00FFFC 7000F3FC 00A0F025 */ move $fp, $a1 +/* 010000 7000F400 2408001C */ li $t0, 28 +/* 010004 7000F404 AC990024 */ sw $t9, 0x24($a0) +/* 010008 7000F408 AFA80010 */ sw $t0, 0x10($sp) +/* 01000C 7000F40C 00002025 */ move $a0, $zero +/* 010010 7000F410 00002825 */ move $a1, $zero +/* 010014 7000F414 24070001 */ li $a3, 1 +/* 010018 7000F418 0C003AD4 */ jal alHeapDBAlloc +/* 01001C 7000F41C 02E03025 */ move $a2, $s7 +/* 010020 7000F420 AFA2005C */ sw $v0, 0x5c($sp) +/* 010024 7000F424 0C006448 */ jal alSaveNew +/* 010028 7000F428 00402025 */ move $a0, $v0 +/* 01002C 7000F42C 8FA9005C */ lw $t1, 0x5c($sp) +/* 010030 7000F430 240A004C */ li $t2, 76 +/* 010034 7000F434 00002025 */ move $a0, $zero +/* 010038 7000F438 AEC90038 */ sw $t1, 0x38($s6) +/* 01003C 7000F43C AFAA0010 */ sw $t2, 0x10($sp) +/* 010040 7000F440 00002825 */ move $a1, $zero +/* 010044 7000F444 02E03025 */ move $a2, $s7 +/* 010048 7000F448 0C003AD4 */ jal alHeapDBAlloc +/* 01004C 7000F44C 24070001 */ li $a3, 1 +/* 010050 7000F450 240B0001 */ li $t3, 1 +/* 010054 7000F454 AEC20034 */ sw $v0, 0x34($s6) +/* 010058 7000F458 AECB0040 */ sw $t3, 0x40($s6) +/* 01005C 7000F45C 8FC70004 */ lw $a3, 4($fp) +/* 010060 7000F460 240C0004 */ li $t4, 4 +/* 010064 7000F464 AFAC0010 */ sw $t4, 0x10($sp) +/* 010068 7000F468 00002025 */ move $a0, $zero +/* 01006C 7000F46C 00002825 */ move $a1, $zero +/* 010070 7000F470 0C003AD4 */ jal alHeapDBAlloc +/* 010074 7000F474 02E03025 */ move $a2, $s7 +/* 010078 7000F478 8EC40034 */ lw $a0, 0x34($s6) +/* 01007C 7000F47C 00402825 */ move $a1, $v0 +/* 010080 7000F480 0C00646E */ jal alAuxBusNew +/* 010084 7000F484 8FC60004 */ lw $a2, 4($fp) +/* 010088 7000F488 240D0020 */ li $t5, 32 +/* 01008C 7000F48C AFAD0010 */ sw $t5, 0x10($sp) +/* 010090 7000F490 00002025 */ move $a0, $zero +/* 010094 7000F494 00002825 */ move $a1, $zero +/* 010098 7000F498 02E03025 */ move $a2, $s7 +/* 01009C 7000F49C 0C003AD4 */ jal alHeapDBAlloc +/* 0100A0 7000F4A0 24070001 */ li $a3, 1 +/* 0100A4 7000F4A4 AEC20030 */ sw $v0, 0x30($s6) +/* 0100A8 7000F4A8 8FC70004 */ lw $a3, 4($fp) +/* 0100AC 7000F4AC 240E0004 */ li $t6, 4 +/* 0100B0 7000F4B0 AFAE0010 */ sw $t6, 0x10($sp) +/* 0100B4 7000F4B4 00002025 */ move $a0, $zero +/* 0100B8 7000F4B8 00002825 */ move $a1, $zero +/* 0100BC 7000F4BC 0C003AD4 */ jal alHeapDBAlloc +/* 0100C0 7000F4C0 02E03025 */ move $a2, $s7 +/* 0100C4 7000F4C4 8EC40030 */ lw $a0, 0x30($s6) +/* 0100C8 7000F4C8 00402825 */ move $a1, $v0 +/* 0100CC 7000F4CC 0C006459 */ jal alMainBusNew +/* 0100D0 7000F4D0 8FC60004 */ lw $a2, 4($fp) +/* 0100D4 7000F4D4 93CF001C */ lbu $t7, 0x1c($fp) +/* 0100D8 7000F4D8 02C02025 */ move $a0, $s6 +/* 0100DC 7000F4DC 03C03025 */ move $a2, $fp +/* 0100E0 7000F4E0 11E00006 */ beqz $t7, .L7000F4FC +/* 0100E4 7000F4E4 24050002 */ li $a1, 2 +/* 0100E8 7000F4E8 00002825 */ move $a1, $zero +/* 0100EC 7000F4EC 0C006630 */ jal alSynAllocFX +/* 0100F0 7000F4F0 02E03825 */ move $a3, $s7 +/* 0100F4 7000F4F4 10000005 */ b .L7000F50C +/* 0100F8 7000F4F8 AEC00004 */ sw $zero, 4($s6) +.L7000F4FC: +/* 0100FC 7000F4FC 8EC40030 */ lw $a0, 0x30($s6) +/* 010100 7000F500 0C006658 */ jal alMainBusParam +/* 010104 7000F504 8EC60034 */ lw $a2, 0x34($s6) +/* 010108 7000F508 AEC00004 */ sw $zero, 4($s6) +.L7000F50C: +/* 01010C 7000F50C AEC00008 */ sw $zero, 8($s6) +/* 010110 7000F510 AEC00014 */ sw $zero, 0x14($s6) +/* 010114 7000F514 AEC00018 */ sw $zero, 0x18($s6) +/* 010118 7000F518 AEC0000C */ sw $zero, 0xc($s6) +/* 01011C 7000F51C AEC00010 */ sw $zero, 0x10($s6) +/* 010120 7000F520 8FC70004 */ lw $a3, 4($fp) +/* 010124 7000F524 241800DC */ li $t8, 220 +/* 010128 7000F528 AFB80010 */ sw $t8, 0x10($sp) +/* 01012C 7000F52C 00002025 */ move $a0, $zero +/* 010130 7000F530 00002825 */ move $a1, $zero +/* 010134 7000F534 0C003AD4 */ jal alHeapDBAlloc +/* 010138 7000F538 02E03025 */ move $a2, $s7 +/* 01013C 7000F53C 8FD90004 */ lw $t9, 4($fp) +/* 010140 7000F540 0000A025 */ move $s4, $zero +/* 010144 7000F544 00408025 */ move $s0, $v0 +/* 010148 7000F548 1B20002F */ blez $t9, .L7000F608 +/* 01014C 7000F54C 26C50004 */ addiu $a1, $s6, 4 +/* 010150 7000F550 2451008C */ addiu $s1, $v0, 0x8c +/* 010154 7000F554 24520058 */ addiu $s2, $v0, 0x58 +/* 010158 7000F558 24530010 */ addiu $s3, $v0, 0x10 +/* 01015C 7000F55C AFA50048 */ sw $a1, 0x48($sp) +.L7000F560: +/* 010160 7000F560 8FA50048 */ lw $a1, 0x48($sp) +/* 010164 7000F564 0200A825 */ move $s5, $s0 +/* 010168 7000F568 0C003AB0 */ jal alLink +/* 01016C 7000F56C 02002025 */ move $a0, $s0 +/* 010170 7000F570 AE000008 */ sw $zero, 8($s0) +/* 010174 7000F574 8EC50024 */ lw $a1, 0x24($s6) +/* 010178 7000F578 02602025 */ move $a0, $s3 +/* 01017C 7000F57C 0C0064A5 */ jal alLoadNew +/* 010180 7000F580 02E03025 */ move $a2, $s7 +/* 010184 7000F584 02602025 */ move $a0, $s3 +/* 010188 7000F588 24050001 */ li $a1, 1 +/* 01018C 7000F58C 0C0066AC */ jal alLoadParam +/* 010190 7000F590 00003025 */ move $a2, $zero +/* 010194 7000F594 02402025 */ move $a0, $s2 +/* 010198 7000F598 0C006483 */ jal alResampleNew +/* 01019C 7000F59C 02E02825 */ move $a1, $s7 +/* 0101A0 7000F5A0 02402025 */ move $a0, $s2 +/* 0101A4 7000F5A4 24050001 */ li $a1, 1 +/* 0101A8 7000F5A8 0C006980 */ jal alResampleParam +/* 0101AC 7000F5AC 02603025 */ move $a2, $s3 +/* 0101B0 7000F5B0 02202025 */ move $a0, $s1 +/* 0101B4 7000F5B4 0C0064CF */ jal alEnvmixerNew +/* 0101B8 7000F5B8 02E02825 */ move $a1, $s7 +/* 0101BC 7000F5BC 02202025 */ move $a0, $s1 +/* 0101C0 7000F5C0 24050001 */ li $a1, 1 +/* 0101C4 7000F5C4 0C006A85 */ jal alEnvmixerParam +/* 0101C8 7000F5C8 02403025 */ move $a2, $s2 +/* 0101CC 7000F5CC 8EC40034 */ lw $a0, 0x34($s6) +/* 0101D0 7000F5D0 24050002 */ li $a1, 2 +/* 0101D4 7000F5D4 0C006D38 */ jal ultra_7001B4E0 +/* 0101D8 7000F5D8 02203025 */ move $a2, $s1 +/* 0101DC 7000F5DC 26A8008C */ addiu $t0, $s5, 0x8c +/* 0101E0 7000F5E0 AEA8000C */ sw $t0, 0xc($s5) +/* 0101E4 7000F5E4 8FC90004 */ lw $t1, 4($fp) +/* 0101E8 7000F5E8 26940001 */ addiu $s4, $s4, 1 +/* 0101EC 7000F5EC 261000DC */ addiu $s0, $s0, 0xdc +/* 0101F0 7000F5F0 0289082A */ slt $at, $s4, $t1 +/* 0101F4 7000F5F4 263100DC */ addiu $s1, $s1, 0xdc +/* 0101F8 7000F5F8 265200DC */ addiu $s2, $s2, 0xdc +/* 0101FC 7000F5FC 1420FFD8 */ bnez $at, .L7000F560 +/* 010200 7000F600 267300DC */ addiu $s3, $s3, 0xdc +/* 010204 7000F604 0000A025 */ move $s4, $zero +.L7000F608: +/* 010208 7000F608 8FA4005C */ lw $a0, 0x5c($sp) +/* 01020C 7000F60C 24050001 */ li $a1, 1 +/* 010210 7000F610 0C006D7C */ jal alSaveParam +/* 010214 7000F614 8EC60030 */ lw $a2, 0x30($s6) +/* 010218 7000F618 8FC70008 */ lw $a3, 8($fp) +/* 01021C 7000F61C 240A001C */ li $t2, 28 +/* 010220 7000F620 AFAA0010 */ sw $t2, 0x10($sp) +/* 010224 7000F624 00002025 */ move $a0, $zero +/* 010228 7000F628 00002825 */ move $a1, $zero +/* 01022C 7000F62C 0C003AD4 */ jal alHeapDBAlloc +/* 010230 7000F630 02E03025 */ move $a2, $s7 +/* 010234 7000F634 AEC0002C */ sw $zero, 0x2c($s6) +/* 010238 7000F638 8FCB0008 */ lw $t3, 8($fp) +/* 01023C 7000F63C 00401825 */ move $v1, $v0 +/* 010240 7000F640 5960000B */ blezl $t3, .L7000F670 +/* 010244 7000F644 AED70028 */ sw $s7, 0x28($s6) +/* 010248 7000F648 8ECC002C */ lw $t4, 0x2c($s6) +.L7000F64C: +/* 01024C 7000F64C 26940001 */ addiu $s4, $s4, 1 +/* 010250 7000F650 AC6C0000 */ sw $t4, ($v1) +/* 010254 7000F654 AEC3002C */ sw $v1, 0x2c($s6) +/* 010258 7000F658 8FCD0008 */ lw $t5, 8($fp) +/* 01025C 7000F65C 2463001C */ addiu $v1, $v1, 0x1c +/* 010260 7000F660 028D082A */ slt $at, $s4, $t5 +/* 010264 7000F664 5420FFF9 */ bnezl $at, .L7000F64C +/* 010268 7000F668 8ECC002C */ lw $t4, 0x2c($s6) +/* 01026C 7000F66C AED70028 */ sw $s7, 0x28($s6) +.L7000F670: +/* 010270 7000F670 8FBF0044 */ lw $ra, 0x44($sp) +/* 010274 7000F674 8FBE0040 */ lw $fp, 0x40($sp) +/* 010278 7000F678 8FB7003C */ lw $s7, 0x3c($sp) +/* 01027C 7000F67C 8FB60038 */ lw $s6, 0x38($sp) +/* 010280 7000F680 8FB50034 */ lw $s5, 0x34($sp) +/* 010284 7000F684 8FB40030 */ lw $s4, 0x30($sp) +/* 010288 7000F688 8FB3002C */ lw $s3, 0x2c($sp) +/* 01028C 7000F68C 8FB20028 */ lw $s2, 0x28($sp) +/* 010290 7000F690 8FB10024 */ lw $s1, 0x24($sp) +/* 010294 7000F694 8FB00020 */ lw $s0, 0x20($sp) +/* 010298 7000F698 03E00008 */ jr $ra +/* 01029C 7000F69C 27BD0078 */ addiu $sp, $sp, 0x78 + +.section .rodata +glabel F64_80029420 +.double 1000000.0 +glabel F64_80029428 +.double 1000000.0 diff --git a/src/mema.c b/src/mema.c index 6bc88da..15b408a 100644 --- a/src/mema.c +++ b/src/mema.c @@ -1,4 +1,5 @@ #include "ultra64.h" +#include "mema.h" #include "deb.h" /** @@ -7,57 +8,37 @@ * */ - +//bss void *ptr_model_room_buf_secondary; u32 size_modelroom_buf; -void *ptr_table_allocated_mem_blocks; -s32 dword_CODE_bss_80063C2C; -s32 index_for_loadedroom; -s32 dword_CODE_bss_80063C34; -void *ptr_first_entry_in_alloc_table; -s32 dword_CODE_bss_80063C3C; -s32 dword_CODE_bss_80063C40; -s32 dword_CODE_bss_80063C44; -char dword_CODE_bss_80063C48[0xFC0]; -char dword_CODE_bss_80064C08[8]; -char dword_CODE_bss_80064C10[8]; -s32 dword_CODE_bss_80064C18; -s32 dword_CODE_bss_80064C1C; -s32 dword_CODE_bss_80064C20; -s32 dword_CODE_bss_80064C24; - +struct s_mem_alloc_table ptr_table_allocated_mem_blocks; +//data void *ptr_mema_c_debug_notice_list = 0; - - - - - - - #ifdef NONMATCHING -?32 swap_entries(void *arg0, void *arg1) -{ - ?32 temp_v0; - ?32 temp_v1; +void memaSwap(u8 *a,u8 *b) - temp_v0 = arg0->unk0; - temp_v1 = arg0->unk4; - arg0->unk0 = (?32) arg1->unk0; - arg0->unk4 = (?32) arg1->unk4; - arg1->unk0 = temp_v0; - arg1->unk4 = temp_v1; - return temp_v0; +{ + u8 *tempstart; + u8 *tempend; + + tempstart = *(void **)a; + tempend = *(void **)(a + 4); + *(undefined4 *)a = *(undefined4 *)b; + *(undefined4 *)(a + 4) = *(undefined4 *)(b + 4); + *(void **)b = tempstart; + *(void **)(b + 4) = tempend; + return; } #else GLOBAL_ASM( .text -glabel swap_entries +glabel memaSwap /* 00A610 70009A10 8CAE0000 */ lw $t6, ($a1) /* 00A614 70009A14 8C820000 */ lw $v0, ($a0) /* 00A618 70009A18 8C830004 */ lw $v1, 4($a0) @@ -75,7 +56,7 @@ glabel swap_entries #ifdef NONMATCHING -void merge_alloc_entries(void *arg0, void *arg1) +void memaMerge(void *arg0, void *arg1) { arg0->unk4 = (s32) (arg0->unk4 + arg1->unk4); arg1->unk0 = 0; @@ -84,7 +65,7 @@ void merge_alloc_entries(void *arg0, void *arg1) #else GLOBAL_ASM( .text -glabel merge_alloc_entries +glabel memaMerge /* 00A634 70009A34 8C8E0004 */ lw $t6, 4($a0) /* 00A638 70009A38 8CAF0004 */ lw $t7, 4($a1) /* 00A63C 70009A3C 01CFC021 */ addu $t8, $t6, $t7 @@ -100,7 +81,7 @@ glabel merge_alloc_entries #ifdef NONMATCHING -? sort_merge_entries_in_alloc_table(s32 arg0) +u32 memaSortMergeEntries(s_mem_alloc_table *param_1) { u32 temp_s0; u32 temp_s0_2; @@ -133,14 +114,14 @@ loop_1: { if ((u32) phi_s0->unk0 < (u32) phi_s2) { - swap_entries(phi_s0, phi_s1); + memaSwap(phi_s0, phi_s1); } phi_s0_3 = phi_s0; phi_v0 = phi_s0->unk0; phi_s3_2 = phi_s3_3; if (phi_s0->unk0 == (phi_s1->unk4 + phi_s2)) { - merge_alloc_entries(phi_s1, phi_s0); + memaMerge(phi_s1, phi_s0); phi_s0_3 = phi_s1; phi_v0 = phi_s1->unk0; phi_s3_2 = 1; @@ -163,7 +144,7 @@ loop_1: #else GLOBAL_ASM( .text -glabel sort_merge_entries_in_alloc_table +glabel memaSortMergeEntries /* 00A650 70009A50 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 00A654 70009A54 AFB40028 */ sw $s4, 0x28($sp) /* 00A658 70009A58 AFB00018 */ sw $s0, 0x18($sp) @@ -187,7 +168,7 @@ glabel sort_merge_entries_in_alloc_table /* 00A69C 70009A9C 0052082B */ sltu $at, $v0, $s2 /* 00A6A0 70009AA0 50200005 */ beql $at, $zero, .L70009AB8 /* 00A6A4 70009AA4 8E2F0004 */ lw $t7, 4($s1) -/* 00A6A8 70009AA8 0C002684 */ jal swap_entries +/* 00A6A8 70009AA8 0C002684 */ jal memaSwap /* 00A6AC 70009AAC 02202825 */ move $a1, $s1 /* 00A6B0 70009AB0 8E020000 */ lw $v0, ($s0) /* 00A6B4 70009AB4 8E2F0004 */ lw $t7, 4($s1) @@ -197,7 +178,7 @@ glabel sort_merge_entries_in_alloc_table /* 00A6C0 70009AC0 01F2C021 */ addu $t8, $t7, $s2 /* 00A6C4 70009AC4 54580006 */ bnel $v0, $t8, .L70009AE0 /* 00A6C8 70009AC8 02008825 */ move $s1, $s0 -/* 00A6CC 70009ACC 0C00268D */ jal merge_alloc_entries +/* 00A6CC 70009ACC 0C00268D */ jal memaMerge /* 00A6D0 70009AD0 24130001 */ li $s3, 1 /* 00A6D4 70009AD4 02208025 */ move $s0, $s1 /* 00A6D8 70009AD8 8E220000 */ lw $v0, ($s1) @@ -224,44 +205,13 @@ glabel sort_merge_entries_in_alloc_table -#ifdef NONMATCHING -void memp_related_7(void) + +void memaSortMergeAllEntries(void) { - if (sort_merge_entries_in_alloc_table(&ptr_table_allocated_mem_blocks) != 0) - { -loop_1: - if (sort_merge_entries_in_alloc_table(&ptr_table_allocated_mem_blocks) != 0) - { - goto loop_1; - } + while (memaSortMergeEntries(&ptr_table_allocated_mem_blocks) != 0) { + ; } } -#else -GLOBAL_ASM( -.text -glabel memp_related_7 -/* 00A718 70009B18 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00A71C 70009B1C AFB00018 */ sw $s0, 0x18($sp) -/* 00A720 70009B20 3C108006 */ lui $s0, %hi(ptr_table_allocated_mem_blocks) -/* 00A724 70009B24 26103C28 */ addiu $s0, %lo(ptr_table_allocated_mem_blocks) # addiu $s0, $s0, 0x3c28 -/* 00A728 70009B28 AFBF001C */ sw $ra, 0x1c($sp) -/* 00A72C 70009B2C 0C002694 */ jal sort_merge_entries_in_alloc_table -/* 00A730 70009B30 02002025 */ move $a0, $s0 -/* 00A734 70009B34 50400006 */ beql $v0, $zero, .L70009B50 -/* 00A738 70009B38 8FBF001C */ lw $ra, 0x1c($sp) -.L70009B3C: -/* 00A73C 70009B3C 0C002694 */ jal sort_merge_entries_in_alloc_table -/* 00A740 70009B40 02002025 */ move $a0, $s0 -/* 00A744 70009B44 1440FFFD */ bnez $v0, .L70009B3C -/* 00A748 70009B48 00000000 */ nop -/* 00A74C 70009B4C 8FBF001C */ lw $ra, 0x1c($sp) -.L70009B50: -/* 00A750 70009B50 8FB00018 */ lw $s0, 0x18($sp) -/* 00A754 70009B54 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00A758 70009B58 03E00008 */ jr $ra -/* 00A75C 70009B5C 00000000 */ nop -) -#endif @@ -288,7 +238,7 @@ u32 mem_related(s32 arg0) { if ((u32) temp_s2->unk8 < (u32) *temp_s2) { // Node 5 - swap_entries(temp_s2, (temp_s2 + 8)); + memaSwap(temp_s2, (temp_s2 + 8)); } // Node 6 if (temp_s2->unk8 == (*temp_s2 + temp_s2->unk4)) @@ -362,7 +312,7 @@ glabel mem_related /* 00A7B4 70009BB4 0043082B */ sltu $at, $v0, $v1 /* 00A7B8 70009BB8 50200007 */ beql $at, $zero, .L70009BD8 /* 00A7BC 70009BBC 00647021 */ addu $t6, $v1, $a0 -/* 00A7C0 70009BC0 0C002684 */ jal swap_entries +/* 00A7C0 70009BC0 0C002684 */ jal memaSwap /* 00A7C4 70009BC4 02002025 */ move $a0, $s0 /* 00A7C8 70009BC8 8E040004 */ lw $a0, 4($s0) /* 00A7CC 70009BCC 8E020008 */ lw $v0, 8($s0) @@ -420,54 +370,60 @@ glabel mem_related #ifdef NONMATCHING -void *mem_related_model_room_buffers(s32 arg0, s32 arg1, s32 arg6, ?32 arg7) { - s32 temp_lo; - void *temp_v0; - void *temp_a3; - - // Node 0 - temp_lo = ((s32) ((arg0 - ptr_model_room_buf_secondary) * 0x1fc) / (s32) size_modelroom_buf); - temp_v0 = ((temp_lo * 8) + &ptr_table_allocated_mem_blocks); - temp_a3 = (temp_v0 + 0x10); - if (temp_v0->unk14 != 0) - { - loop_1: - // Node 1 - if (temp_a3->unkC != 0) - { - goto loop_1; - } +void memaAllocRoomBuffer(uint addr,uint size) +{ + int iVar1; + int iVar2; + s_mem_alloc_entry *psVar3; + s_mem_alloc_entry *psVar4; + s_mem_alloc_entry *psVar5; + s32 sVar6; + int iVar7; + + iVar7 = (addr - ptr_model_room_buf_secondary) * 0x1fc; + iVar2 = iVar7 / size_modelroom_buf; + iVar1 = ptr_table_allocated_mem_blocks.entries[iVar2 + 2].size; + psVar4 = ptr_table_allocated_mem_blocks.entries + iVar2 + 2; + if (size_modelroom_buf == 0) { + trap(0x1c00); } - // Node 2 - if (*temp_a3 == -1) - { - // Node 3 - if (temp_v0->unk14 != 0) - { - loop_4: - // Node 4 - if (temp_a3->unk-4 != 0) - { - goto loop_4; + if ((size_modelroom_buf == -1) && (iVar7 == -0x80000000)) { + trap(0x1800); + } + if (iVar1 == 0) { + sVar6 = psVar4->addr; + psVar5 = psVar4; + } + else { + sVar6 = ptr_table_allocated_mem_blocks.entries[iVar2 + 3].size; + psVar3 = psVar4; + while (psVar5 = psVar3 + 1, sVar6 != 0) { + sVar6 = psVar3[2].size; + psVar3 = psVar5; + } + sVar6 = psVar5->addr; + } + if (sVar6 == -1) { + psVar5 = psVar4; + if (iVar1 != 0) { + sVar6 = ptr_table_allocated_mem_blocks.entries[iVar2 + 1].size; + while (psVar5 = psVar4 + -1, sVar6 != 0) { + sVar6 = psVar4[-2].size; + psVar4 = psVar5; } } - // Node 5 - if (*temp_a3 == 0) - { - // Node 6 - mem_related(&ptr_table_allocated_mem_blocks, temp_lo, temp_a3); + if (psVar5->addr == 0) { + psVar5 = (s_mem_alloc_entry *)memaFindOpening(&ptr_table_allocated_mem_blocks); } } - // Node 7 - *temp_a3 = arg6; - temp_a3->unk4 = arg7; + psVar5->addr = addr; + psVar5->size = size; return; - // (possible return value: temp_v0) } #else GLOBAL_ASM( .text -glabel mem_related_model_room_buffers +glabel memaAllocRoomBuffer /* 00A874 70009C74 3C0F8006 */ lui $t7, %hi(ptr_model_room_buf_secondary) /* 00A878 70009C78 8DEF3C20 */ lw $t7, %lo(ptr_model_room_buf_secondary)($t7) /* 00A87C 70009C7C 3C098006 */ lui $t1, %hi(size_modelroom_buf) @@ -547,60 +503,51 @@ void something_with_mema_c_debug(void) { } -const char aD_3[] = "%d "; -const char a___[] = "..."; -const char aD_5[] = "[%d]"; + #ifdef NONMATCHING -void *reset_memtable_base_allocation(s32 arg0, s32 arg1) { - u32 temp_v0; - - // Node 0 - ptr_table_allocated_mem_blocks.unkFF0 = -1; - ptr_table_allocated_mem_blocks.unkFF8 = -1; - ptr_table_allocated_mem_blocks = 0; - ptr_table_allocated_mem_blocks.unk4 = 0; - ptr_table_allocated_mem_blocks.unk8 = 0; - ptr_table_allocated_mem_blocks.unkC = 0; - ptr_table_allocated_mem_blocks.unkFF4 = 0; - ptr_table_allocated_mem_blocks.unkFFC = -1; - // Node 1 - temp_v0 = (&ptr_first_entry_in_alloc_table + 8); - temp_v0->unk-8 = 0; - temp_v0->unk-4 = 0; - if (&dword_CODE_bss_80064C10 >= temp_v0) +void mempInitMallocTable(void *ptr_allocmem,u32 size) +{ + s_mem_alloc_entry *entry; + + ptr_table_allocated_mem_blocks.entries[510].addr = -1; + ptr_table_allocated_mem_blocks.entries[511].addr = -1; + ptr_table_allocated_mem_blocks.entries[0].addr = 0; + ptr_table_allocated_mem_blocks.entries[0].size = 0; + ptr_table_allocated_mem_blocks.entries[1].addr = 0; + ptr_table_allocated_mem_blocks.entries[1].size = 0; + ptr_table_allocated_mem_blocks.entries[510].size = 0; + ptr_table_allocated_mem_blocks.entries[511].size = -1; + for (entry = ptr_table_allocated_mem_blocks.entries[2]; (entry < (s_mem_alloc_entry *)(&ptr_table_allocated_mem_blocks.entries[0x1fd].addr+1)); ++entry) { - goto loop_1; - } - // Node 2 - ptr_model_room_buf_secondary = arg0; - ptr_table_allocated_mem_blocks.unk10 = arg0; - size_modelroom_buf = arg1; - ptr_table_allocated_mem_blocks.unk14 = arg1; - return; - // (possible return value: &ptr_model_room_buf_secondary) + entry->addr = 0; + entry->size = 0; + }; + ptr_model_room_buf_secondary = ptr_allocmem; + size_modelroom_buf = size; + ptr_table_allocated_mem_blocks.entries[2].addr = (s32)ptr_allocmem; + ptr_table_allocated_mem_blocks.entries[2].size = size; } - #else GLOBAL_ASM( .text -glabel reset_memtable_base_allocation +glabel mempInitMallocTable /* 00A998 70009D98 3C038006 */ lui $v1, %hi(ptr_table_allocated_mem_blocks) /* 00A99C 70009D9C 24633C28 */ addiu $v1, %lo(ptr_table_allocated_mem_blocks) # addiu $v1, $v1, 0x3c28 /* 00A9A0 70009DA0 2406FFFF */ li $a2, -1 /* 00A9A4 70009DA4 AC660FF0 */ sw $a2, 0xff0($v1) /* 00A9A8 70009DA8 AC660FF8 */ sw $a2, 0xff8($v1) /* 00A9AC 70009DAC 240EFFFF */ li $t6, -1 -/* 00A9B0 70009DB0 3C068006 */ lui $a2, %hi(dword_CODE_bss_80064C10) -/* 00A9B4 70009DB4 3C028006 */ lui $v0, %hi(ptr_first_entry_in_alloc_table) +/* 00A9B0 70009DB0 3C068006 */ lui $a2, %hi(ptr_table_allocated_mem_blocks + 0xFE8) +/* 00A9B4 70009DB4 3C028006 */ lui $v0, %hi(ptr_table_allocated_mem_blocks + 0x10) /* 00A9B8 70009DB8 AC600000 */ sw $zero, ($v1) /* 00A9BC 70009DBC AC600004 */ sw $zero, 4($v1) /* 00A9C0 70009DC0 AC600008 */ sw $zero, 8($v1) /* 00A9C4 70009DC4 AC60000C */ sw $zero, 0xc($v1) /* 00A9C8 70009DC8 AC600FF4 */ sw $zero, 0xff4($v1) /* 00A9CC 70009DCC AC6E0FFC */ sw $t6, 0xffc($v1) -/* 00A9D0 70009DD0 24423C38 */ addiu $v0, %lo(ptr_first_entry_in_alloc_table) # addiu $v0, $v0, 0x3c38 -/* 00A9D4 70009DD4 24C64C10 */ addiu $a2, %lo(dword_CODE_bss_80064C10) # addiu $a2, $a2, 0x4c10 +/* 00A9D0 70009DD0 24423C38 */ addiu $v0, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $v0, $v0, 0x3c38 +/* 00A9D4 70009DD4 24C64C10 */ addiu $a2, %lo(ptr_table_allocated_mem_blocks + 0xFE8) # addiu $a2, $a2, 0x4c10 .L70009DD8: /* 00A9D8 70009DD8 24420008 */ addiu $v0, $v0, 8 /* 00A9DC 70009DDC 00C2082B */ sltu $at, $a2, $v0 @@ -621,7 +568,7 @@ glabel reset_memtable_base_allocation void mem_related_calls_sort_merge_entries(void) { - sort_merge_entries_in_alloc_table(&ptr_table_allocated_mem_blocks); + memaSortMergeEntries(&ptr_table_allocated_mem_blocks); } @@ -635,8 +582,8 @@ s32 mem_related_something_find_first(u32 arg0) { // Node 0 // Node 1 - temp_v0 = (ptr_first_entry_in_alloc_table.unk4 - arg0); - if ((((u32) ptr_first_entry_in_alloc_table.unk4 >= arg0) && (-1 != ptr_first_entry_in_alloc_table)) && (temp_at != 0)) + temp_v0 = (ptr_table_allocated_mem_blocks + 0x10.unk4 - arg0); + if ((((u32) ptr_table_allocated_mem_blocks + 0x10.unk4 >= arg0) && (-1 != ptr_table_allocated_mem_blocks + 0x10)) && (temp_at != 0)) { // Node 4 if (temp_at == 0) @@ -645,7 +592,7 @@ s32 mem_related_something_find_first(u32 arg0) { if (temp_v0 >= (u32) (arg0 >> 2)) { // Node 6 - temp_s1 = (&ptr_first_entry_in_alloc_table + 8); + temp_s1 = (&ptr_table_allocated_mem_blocks + 0x10 + 8); if ((0 + 1) != 0x10) { goto loop_1; @@ -656,7 +603,7 @@ s32 mem_related_something_find_first(u32 arg0) { else { // Node 6 - temp_s1 = (&ptr_first_entry_in_alloc_table + 8); + temp_s1 = (&ptr_table_allocated_mem_blocks + 0x10 + 8); if ((0 + 1) != 0x10) { goto loop_1; @@ -680,7 +627,7 @@ s32 mem_related_something_find_first(u32 arg0) { { // Node 11 // Node 12 - sort_merge_entries_in_alloc_table(&ptr_table_allocated_mem_blocks, NULL, 0x10); + memaSortMergeEntries(&ptr_table_allocated_mem_blocks, NULL, 0x10); if ((0 + 1) != 8) { goto loop_12; @@ -690,13 +637,13 @@ s32 mem_related_something_find_first(u32 arg0) { { loop_14: // Node 14 - if ((u32) ptr_first_entry_in_alloc_table.unkC < arg0) + if ((u32) ptr_table_allocated_mem_blocks + 0x10.unkC < arg0) { goto loop_14; } } // Node 15 - if (-1 == ptr_first_entry_in_alloc_table) + if (-1 == ptr_table_allocated_mem_blocks + 0x10) { // Node 16 return; @@ -729,11 +676,11 @@ glabel mem_related_something_find_first /* 00AA40 70009E40 00809025 */ move $s2, $a0 /* 00AA44 70009E44 AFB50028 */ sw $s5, 0x28($sp) /* 00AA48 70009E48 AFB00014 */ sw $s0, 0x14($sp) -/* 00AA4C 70009E4C 3C118006 */ lui $s1, %hi(ptr_first_entry_in_alloc_table) +/* 00AA4C 70009E4C 3C118006 */ lui $s1, %hi(ptr_table_allocated_mem_blocks + 0x10) /* 00AA50 70009E50 AFBF002C */ sw $ra, 0x2c($sp) /* 00AA54 70009E54 AFB40024 */ sw $s4, 0x24($sp) /* 00AA58 70009E58 AFB30020 */ sw $s3, 0x20($sp) -/* 00AA5C 70009E5C 26313C38 */ addiu $s1, %lo(ptr_first_entry_in_alloc_table) # addiu $s1, $s1, 0x3c38 +/* 00AA5C 70009E5C 26313C38 */ addiu $s1, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $s1, $s1, 0x3c38 /* 00AA60 70009E60 2404FFFF */ li $a0, -1 /* 00AA64 70009E64 00002825 */ move $a1, $zero /* 00AA68 70009E68 00008025 */ move $s0, $zero @@ -781,10 +728,10 @@ glabel mem_related_something_find_first /* 00AAFC 70009EFC 26733C28 */ addiu $s3, %lo(ptr_table_allocated_mem_blocks) # addiu $s3, $s3, 0x3c28 /* 00AB00 70009F00 56A80017 */ bnel $s5, $t0, .L70009F60 /* 00AB04 70009F04 02202825 */ move $a1, $s1 -/* 00AB08 70009F08 3C118006 */ lui $s1, %hi(ptr_first_entry_in_alloc_table) -/* 00AB0C 70009F0C 26313C38 */ addiu $s1, %lo(ptr_first_entry_in_alloc_table) # addiu $s1, $s1, 0x3c38 +/* 00AB08 70009F08 3C118006 */ lui $s1, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AB0C 70009F0C 26313C38 */ addiu $s1, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $s1, $s1, 0x3c38 .L70009F10: -/* 00AB10 70009F10 0C002694 */ jal sort_merge_entries_in_alloc_table +/* 00AB10 70009F10 0C002694 */ jal memaSortMergeEntries /* 00AB14 70009F14 02602025 */ move $a0, $s3 /* 00AB18 70009F18 26100001 */ addiu $s0, $s0, 1 /* 00AB1C 70009F1C 1614FFFC */ bne $s0, $s4, .L70009F10 @@ -842,12 +789,12 @@ s32 mem_related_something_find_first_0(s32 arg0, u32 arg1) s32 phi_a1; void *phi_v1; - if (-1 == ptr_first_entry_in_alloc_table) + if (-1 == ptr_table_allocated_mem_blocks + 0x10) { return 0; } - phi_a1 = ptr_first_entry_in_alloc_table; - phi_v1 = &ptr_first_entry_in_alloc_table; + phi_a1 = ptr_table_allocated_mem_blocks + 0x10; + phi_v1 = &ptr_table_allocated_mem_blocks + 0x10; loop_2: if (arg0 != phi_a1) { @@ -879,11 +826,11 @@ block_4: GLOBAL_ASM( .text glabel mem_related_something_find_first_0 -/* 00ABA8 70009FA8 3C198006 */ lui $t9, %hi(ptr_first_entry_in_alloc_table) -/* 00ABAC 70009FAC 8F393C38 */ lw $t9, %lo(ptr_first_entry_in_alloc_table)($t9) -/* 00ABB0 70009FB0 3C188006 */ lui $t8, %hi(ptr_first_entry_in_alloc_table) +/* 00ABA8 70009FA8 3C198006 */ lui $t9, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00ABAC 70009FAC 8F393C38 */ lw $t9, %lo(ptr_table_allocated_mem_blocks + 0x10)($t9) +/* 00ABB0 70009FB0 3C188006 */ lui $t8, %hi(ptr_table_allocated_mem_blocks + 0x10) /* 00ABB4 70009FB4 240AFFFF */ li $t2, -1 -/* 00ABB8 70009FB8 27183C38 */ addiu $t8, %lo(ptr_first_entry_in_alloc_table) # addiu $t8, $t8, 0x3c38 +/* 00ABB8 70009FB8 27183C38 */ addiu $t8, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $t8, $t8, 0x3c38 /* 00ABBC 70009FBC 00A03825 */ move $a3, $a1 /* 00ABC0 70009FC0 1159000C */ beq $t2, $t9, .L70009FF4 /* 00ABC4 70009FC4 03001825 */ move $v1, $t8 @@ -921,8 +868,8 @@ glabel mem_related_something_find_first_0 -void mem_related_model_room_buffers_0(void) { - mem_related_model_room_buffers(); +void mem_related_model_room_buffers_0(u32 addr,u32 size) { + memaAllocRoomBuffer(addr, size); } @@ -939,19 +886,19 @@ void *mem_related_allocated_table_related(void) loop_1: temp_v1 = phi_v1 + 0x20; phi_v1 = temp_v1; - if (temp_v1 != &dword_CODE_bss_80064C08) + if (temp_v1 != &ptr_table_allocated_mem_blocks + 0xFE0) { goto loop_1; } - return &dword_CODE_bss_80064C08; + return &ptr_table_allocated_mem_blocks + 0xFE0; } #else GLOBAL_ASM( .text glabel mem_related_allocated_table_related /* 00AC40 7000A040 3C038006 */ lui $v1, %hi(ptr_table_allocated_mem_blocks) -/* 00AC44 7000A044 3C028006 */ lui $v0, %hi(dword_CODE_bss_80064C08) -/* 00AC48 7000A048 24424C08 */ addiu $v0, %lo(dword_CODE_bss_80064C08) # addiu $v0, $v0, 0x4c08 +/* 00AC44 7000A044 3C028006 */ lui $v0, %hi(ptr_table_allocated_mem_blocks + 0xFE0) +/* 00AC48 7000A048 24424C08 */ addiu $v0, %lo(ptr_table_allocated_mem_blocks + 0xFE0) # addiu $v0, $v0, 0x4c08 /* 00AC4C 7000A04C 24633C28 */ addiu $v1, %lo(ptr_table_allocated_mem_blocks) # addiu $v1, $v1, 0x3c28 /* 00AC50 7000A050 24630020 */ addiu $v1, $v1, 0x20 .L7000A054: @@ -977,11 +924,11 @@ f32 mem_related_something_first_related(void) u32 phi_v0_2; phi_v1 = 0U; - phi_a0 = &ptr_first_entry_in_alloc_table; + phi_a0 = &ptr_table_allocated_mem_blocks + 0x10; phi_v0 = 0U; phi_v1_2 = 0U; phi_v0_2 = 0U; - if (-1 != ptr_first_entry_in_alloc_table) + if (-1 != ptr_table_allocated_mem_blocks + 0x10) { loop_1: temp_a1 = phi_a0->unk4; @@ -1011,14 +958,14 @@ loop_1: GLOBAL_ASM( .text glabel mem_related_something_first_related -/* 00AC64 7000A064 3C0E8006 */ lui $t6, %hi(ptr_first_entry_in_alloc_table) -/* 00AC68 7000A068 8DCE3C38 */ lw $t6, %lo(ptr_first_entry_in_alloc_table)($t6) +/* 00AC64 7000A064 3C0E8006 */ lui $t6, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AC68 7000A068 8DCE3C38 */ lw $t6, %lo(ptr_table_allocated_mem_blocks + 0x10)($t6) /* 00AC6C 7000A06C 2406FFFF */ li $a2, -1 -/* 00AC70 7000A070 3C048006 */ lui $a0, %hi(ptr_first_entry_in_alloc_table) +/* 00AC70 7000A070 3C048006 */ lui $a0, %hi(ptr_table_allocated_mem_blocks + 0x10) /* 00AC74 7000A074 00001025 */ move $v0, $zero /* 00AC78 7000A078 00001825 */ move $v1, $zero /* 00AC7C 7000A07C 10CE000A */ beq $a2, $t6, .L7000A0A8 -/* 00AC80 7000A080 24843C38 */ addiu $a0, %lo(ptr_first_entry_in_alloc_table) # addiu $a0, $a0, 0x3c38 +/* 00AC80 7000A080 24843C38 */ addiu $a0, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $a0, $a0, 0x3c38 /* 00AC84 7000A084 8C850004 */ lw $a1, 4($a0) .L7000A088: /* 00AC88 7000A088 0065082B */ sltu $at, $v1, $a1 @@ -1060,7 +1007,9 @@ glabel mem_related_something_first_related ) #endif - +const char aD_3[] = "%d "; +const char a___[] = "..."; +const char aD_5[] = "[%d]"; #ifdef NONMATCHING void generate_list_alloc_mem(void) { @@ -1071,13 +1020,13 @@ GLOBAL_ASM( .text glabel generate_list_alloc_mem /* 00AD00 7000A100 27BDEF98 */ addiu $sp, $sp, -0x1068 -/* 00AD04 7000A104 3C048006 */ lui $a0, %hi(ptr_first_entry_in_alloc_table) -/* 00AD08 7000A108 8C843C38 */ lw $a0, %lo(ptr_first_entry_in_alloc_table)($a0) +/* 00AD04 7000A104 3C048006 */ lui $a0, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AD08 7000A108 8C843C38 */ lw $a0, %lo(ptr_table_allocated_mem_blocks + 0x10)($a0) /* 00AD0C 7000A10C AFB5002C */ sw $s5, 0x2c($sp) /* 00AD10 7000A110 AFB00018 */ sw $s0, 0x18($sp) /* 00AD14 7000A114 2415FFFF */ li $s5, -1 /* 00AD18 7000A118 AFB20020 */ sw $s2, 0x20($sp) -/* 00AD1C 7000A11C 3C108006 */ lui $s0, %hi(ptr_first_entry_in_alloc_table) +/* 00AD1C 7000A11C 3C108006 */ lui $s0, %hi(ptr_table_allocated_mem_blocks + 0x10) /* 00AD20 7000A120 AFBF003C */ sw $ra, 0x3c($sp) /* 00AD24 7000A124 AFBE0038 */ sw $fp, 0x38($sp) /* 00AD28 7000A128 AFB70034 */ sw $s7, 0x34($sp) @@ -1087,7 +1036,7 @@ glabel generate_list_alloc_mem /* 00AD38 7000A138 AFB1001C */ sw $s1, 0x1c($sp) /* 00AD3C 7000A13C 3C038000 */ lui $v1, 0x8000 /* 00AD40 7000A140 00009025 */ move $s2, $zero -/* 00AD44 7000A144 26103C38 */ addiu $s0, %lo(ptr_first_entry_in_alloc_table) # addiu $s0, $s0, 0x3c38 +/* 00AD44 7000A144 26103C38 */ addiu $s0, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $s0, $s0, 0x3c38 /* 00AD48 7000A148 12A40008 */ beq $s5, $a0, .L7000A16C /* 00AD4C 7000A14C 00001025 */ move $v0, $zero .L7000A150: @@ -1096,8 +1045,8 @@ glabel generate_list_alloc_mem /* 00AD58 7000A158 26100008 */ addiu $s0, $s0, 8 /* 00AD5C 7000A15C 16AFFFFC */ bne $s5, $t7, .L7000A150 /* 00AD60 7000A160 004E1021 */ addu $v0, $v0, $t6 -/* 00AD64 7000A164 3C108006 */ lui $s0, %hi(ptr_first_entry_in_alloc_table) -/* 00AD68 7000A168 26103C38 */ addiu $s0, %lo(ptr_first_entry_in_alloc_table) # addiu $s0, $s0, 0x3c38 +/* 00AD64 7000A164 3C108006 */ lui $s0, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AD68 7000A168 26103C38 */ addiu $s0, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $s0, $s0, 0x3c38 .L7000A16C: /* 00AD6C 7000A16C 3C1E8003 */ lui $fp, %hi(a___) /* 00AD70 7000A170 3C168003 */ lui $s6, %hi(aD_3) @@ -1127,8 +1076,8 @@ glabel generate_list_alloc_mem /* 00ADC0 7000A1C0 8E020004 */ lw $v0, 4($s0) .L7000A1C4: /* 00ADC4 7000A1C4 12800022 */ beqz $s4, .L7000A250 -/* 00ADC8 7000A1C8 3C108006 */ lui $s0, %hi(ptr_first_entry_in_alloc_table) -/* 00ADCC 7000A1CC 26103C38 */ addiu $s0, %lo(ptr_first_entry_in_alloc_table) # addiu $s0, $s0, 0x3c38 +/* 00ADC8 7000A1C8 3C108006 */ lui $s0, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00ADCC 7000A1CC 26103C38 */ addiu $s0, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $s0, $s0, 0x3c38 /* 00ADD0 7000A1D0 12A4001C */ beq $s5, $a0, .L7000A244 /* 00ADD4 7000A1D4 0000A025 */ move $s4, $zero /* 00ADD8 7000A1D8 8E020004 */ lw $v0, 4($s0) @@ -1158,10 +1107,10 @@ glabel generate_list_alloc_mem /* 00AE28 7000A228 26100008 */ addiu $s0, $s0, 8 /* 00AE2C 7000A22C 56A8FFEB */ bnel $s5, $t0, .L7000A1DC /* 00AE30 7000A230 8E020004 */ lw $v0, 4($s0) -/* 00AE34 7000A234 3C108006 */ lui $s0, %hi(ptr_first_entry_in_alloc_table) -/* 00AE38 7000A238 3C048006 */ lui $a0, %hi(ptr_first_entry_in_alloc_table) -/* 00AE3C 7000A23C 8C843C38 */ lw $a0, %lo(ptr_first_entry_in_alloc_table)($a0) -/* 00AE40 7000A240 26103C38 */ addiu $s0, %lo(ptr_first_entry_in_alloc_table) # addiu $s0, $s0, 0x3c38 +/* 00AE34 7000A234 3C108006 */ lui $s0, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AE38 7000A238 3C048006 */ lui $a0, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AE3C 7000A23C 8C843C38 */ lw $a0, %lo(ptr_table_allocated_mem_blocks + 0x10)($a0) +/* 00AE40 7000A240 26103C38 */ addiu $s0, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $s0, $s0, 0x3c38 .L7000A244: /* 00AE44 7000A244 02601825 */ move $v1, $s3 /* 00AE48 7000A248 1000FFD0 */ b .L7000A18C @@ -1192,52 +1141,18 @@ glabel generate_list_alloc_mem -#ifdef NONMATCHING -void generate_lists_before_after_mem_merge(void) { - // Node 0 - generate_list_alloc_mem(); - // Node 1 - sort_merge_entries_in_alloc_table(&ptr_table_allocated_mem_blocks); - if ((0 + 1) != 0x1fc) - { - goto loop_1; - } - // Node 2 - generate_list_alloc_mem(); - return; - // (possible return value: generate_list_alloc_mem()) -} -#else -GLOBAL_ASM( -.text -glabel generate_lists_before_after_mem_merge -/* 00AE9C 7000A29C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00AEA0 7000A2A0 AFBF0024 */ sw $ra, 0x24($sp) -/* 00AEA4 7000A2A4 AFB20020 */ sw $s2, 0x20($sp) -/* 00AEA8 7000A2A8 AFB1001C */ sw $s1, 0x1c($sp) -/* 00AEAC 7000A2AC 0C002840 */ jal generate_list_alloc_mem -/* 00AEB0 7000A2B0 AFB00018 */ sw $s0, 0x18($sp) -/* 00AEB4 7000A2B4 3C118006 */ lui $s1, %hi(ptr_table_allocated_mem_blocks) -/* 00AEB8 7000A2B8 26313C28 */ addiu $s1, %lo(ptr_table_allocated_mem_blocks) # addiu $s1, $s1, 0x3c28 -/* 00AEBC 7000A2BC 00008025 */ move $s0, $zero -/* 00AEC0 7000A2C0 241201FC */ li $s2, 508 -.L7000A2C4: -/* 00AEC4 7000A2C4 0C002694 */ jal sort_merge_entries_in_alloc_table -/* 00AEC8 7000A2C8 02202025 */ move $a0, $s1 -/* 00AECC 7000A2CC 26100001 */ addiu $s0, $s0, 1 -/* 00AED0 7000A2D0 1612FFFC */ bne $s0, $s2, .L7000A2C4 -/* 00AED4 7000A2D4 00000000 */ nop -/* 00AED8 7000A2D8 0C002840 */ jal generate_list_alloc_mem -/* 00AEDC 7000A2DC 00000000 */ nop -/* 00AEE0 7000A2E0 8FBF0024 */ lw $ra, 0x24($sp) -/* 00AEE4 7000A2E4 8FB00018 */ lw $s0, 0x18($sp) -/* 00AEE8 7000A2E8 8FB1001C */ lw $s1, 0x1c($sp) -/* 00AEEC 7000A2EC 8FB20020 */ lw $s2, 0x20($sp) -/* 00AEF0 7000A2F0 03E00008 */ jr $ra -/* 00AEF4 7000A2F4 27BD0028 */ addiu $sp, $sp, 0x28 -) -#endif +void memaGenerateListsBeforeAfterMerge(void) +{ + s32 count; + + generate_list_alloc_mem(); + for (count = 0; count != 0x1fc; count +=1) + { + memaSortMergeEntries(&ptr_table_allocated_mem_blocks); + } + generate_list_alloc_mem(); +} @@ -1248,10 +1163,10 @@ void mem_related_something_first_related_0(void *arg0) s32 phi_s1; void *phi_s0; - if (-1 != ptr_first_entry_in_alloc_table) + if (-1 != ptr_table_allocated_mem_blocks + 0x10) { - phi_s1 = ptr_first_entry_in_alloc_table; - phi_s0 = &ptr_first_entry_in_alloc_table; + phi_s1 = ptr_table_allocated_mem_blocks + 0x10; + phi_s0 = &ptr_table_allocated_mem_blocks + 0x10; loop_2: arg0(phi_s1 + phi_s0->unk4, phi_s0); temp_s1 = phi_s0->unk8; @@ -1268,14 +1183,14 @@ GLOBAL_ASM( .text glabel mem_related_something_first_related_0 /* 00AEF8 7000A2F8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00AEFC 7000A2FC 3C0F8006 */ lui $t7, %hi(ptr_first_entry_in_alloc_table) -/* 00AF00 7000A300 8DEF3C38 */ lw $t7, %lo(ptr_first_entry_in_alloc_table)($t7) +/* 00AEFC 7000A2FC 3C0F8006 */ lui $t7, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AF00 7000A300 8DEF3C38 */ lw $t7, %lo(ptr_table_allocated_mem_blocks + 0x10)($t7) /* 00AF04 7000A304 AFB30020 */ sw $s3, 0x20($sp) -/* 00AF08 7000A308 3C0E8006 */ lui $t6, %hi(ptr_first_entry_in_alloc_table) +/* 00AF08 7000A308 3C0E8006 */ lui $t6, %hi(ptr_table_allocated_mem_blocks + 0x10) /* 00AF0C 7000A30C 2413FFFF */ li $s3, -1 /* 00AF10 7000A310 AFB2001C */ sw $s2, 0x1c($sp) /* 00AF14 7000A314 AFB00014 */ sw $s0, 0x14($sp) -/* 00AF18 7000A318 25CE3C38 */ addiu $t6, %lo(ptr_first_entry_in_alloc_table) # addiu $t6, $t6, 0x3c38 +/* 00AF18 7000A318 25CE3C38 */ addiu $t6, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $t6, $t6, 0x3c38 /* 00AF1C 7000A31C 00809025 */ move $s2, $a0 /* 00AF20 7000A320 AFBF0024 */ sw $ra, 0x24($sp) /* 00AF24 7000A324 AFB10018 */ sw $s1, 0x18($sp) @@ -1310,17 +1225,17 @@ u32 mem_related_0(void) { // Node 0 sp18 = 0U; - memp_related_7(); - if (-1 != ptr_first_entry_in_alloc_table) + memaSortMergeAllEntries(); + if (-1 != ptr_table_allocated_mem_blocks + 0x10) { loop_1: // Node 1 - if (sp18 < (u32) ptr_first_entry_in_alloc_table.unk4) + if (sp18 < (u32) ptr_table_allocated_mem_blocks + 0x10.unk4) { // Node 2 } // Node 3 - if (-1 != ptr_first_entry_in_alloc_table.unk8) + if (-1 != ptr_table_allocated_mem_blocks + 0x10.unk8) { goto loop_1; } @@ -1343,15 +1258,15 @@ GLOBAL_ASM( glabel mem_related_0 /* 00AF70 7000A370 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 00AF74 7000A374 AFBF0014 */ sw $ra, 0x14($sp) -/* 00AF78 7000A378 0C0026C6 */ jal memp_related_7 +/* 00AF78 7000A378 0C0026C6 */ jal memaSortMergeAllEntries /* 00AF7C 7000A37C AFA00018 */ sw $zero, 0x18($sp) -/* 00AF80 7000A380 3C0E8006 */ lui $t6, %hi(ptr_first_entry_in_alloc_table) -/* 00AF84 7000A384 8DCE3C38 */ lw $t6, %lo(ptr_first_entry_in_alloc_table)($t6) +/* 00AF80 7000A380 3C0E8006 */ lui $t6, %hi(ptr_table_allocated_mem_blocks + 0x10) +/* 00AF84 7000A384 8DCE3C38 */ lw $t6, %lo(ptr_table_allocated_mem_blocks + 0x10)($t6) /* 00AF88 7000A388 2405FFFF */ li $a1, -1 -/* 00AF8C 7000A38C 3C028006 */ lui $v0, %hi(ptr_first_entry_in_alloc_table) +/* 00AF8C 7000A38C 3C028006 */ lui $v0, %hi(ptr_table_allocated_mem_blocks + 0x10) /* 00AF90 7000A390 8FA40018 */ lw $a0, 0x18($sp) /* 00AF94 7000A394 10AE000A */ beq $a1, $t6, .L7000A3C0 -/* 00AF98 7000A398 24423C38 */ addiu $v0, %lo(ptr_first_entry_in_alloc_table) # addiu $v0, $v0, 0x3c38 +/* 00AF98 7000A398 24423C38 */ addiu $v0, %lo(ptr_table_allocated_mem_blocks + 0x10) # addiu $v0, $v0, 0x3c38 /* 00AF9C 7000A39C 8C430004 */ lw $v1, 4($v0) .L7000A3A0: /* 00AFA0 7000A3A0 0083082B */ sltu $at, $a0, $v1 @@ -1379,8 +1294,25 @@ glabel mem_related_0 #ifdef NONMATCHING -void mem_related_1(void) { - +u32 mem_related_1(u32 addr,u32 length,u32 maxsize) +{ + u32 uVar2; + + if (length < maxsize) { + if (mem_related_something_find_first_0((addr + length), (maxsize - length)) == 0) { + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + else { + if (maxsize < length) { + mem_related_model_room_buffers_0((addr + maxsize), (length - maxsize)); + } + uVar2 = 1; + } + return uVar2; } #else GLOBAL_ASM( diff --git a/src/mema.h b/src/mema.h new file mode 100644 index 0000000..dc810e7 --- /dev/null +++ b/src/mema.h @@ -0,0 +1,39 @@ +#ifndef _MEMA_H_ +#define _MEMA_H_ + +#include "ultra64.h" + + +typedef struct s_mem_alloc_entry { + s32 addr; + s32 size; +} s_mem_alloc_entry; + +typedef struct s_mem_alloc_table { + struct s_mem_alloc_entry entries[0x200]; +} s_mem_alloc_table; + +extern struct s_mem_alloc_table ptr_table_allocated_mem_blocks; + +void memaSwap(u8 *a,u8 *b); +void memaMerge(void *arg0, void *arg1); +u32 memaSortMergeEntries(struct s_mem_alloc_table *param_1); +void memaSortMergeAllEntries(void); +u32 mem_related(s32 arg0); +void memaAllocRoomBuffer(u32 addr,u32 size); +void something_with_mema_c_debug(void); +void mempInitMallocTable(void *ptr_allocmem,u32 size); +void mem_related_calls_sort_merge_entries(void); +s32 mem_related_something_find_first(u32 arg0); +s32 mem_related_something_find_first_0(s32 arg0, u32 arg1); +void mem_related_model_room_buffers_0(u32 addr,u32 size) ; +void mem_related_allocated_table_related(void); +f32 mem_related_something_first_related(void); +void generate_list_alloc_mem(void); +void memaGenerateListsBeforeAfterMerge(void); +void mem_related_something_first_related_0(void *arg0); +u32 mem_related_0(void); +u32 mem_related_1(u32 addr,u32 length,u32 maxsize); + + +#endif diff --git a/src/memp.c b/src/memp.c index 5abfdad..f1414e4 100644 --- a/src/memp.c +++ b/src/memp.c @@ -1,42 +1,45 @@ #include "ultra64.h" #include "memp.h" +#include "game/lvl_text.h" /** * @file memp.c * This file contains code for memp. */ -char memory_bank_ptrs[0x8]; -char D_80063BB8[0x8]; -char D_80063BC0[0x4]; -char D_80063BC4[0x4]; -char D_80063BC8[0x8]; -char D_80063BD0[0x4]; -char D_80063BD4[0x4]; -char D_80063BD8[0x8]; -char D_80063BE0[4]; -char D_80063BE4[4]; -char D_80063BE8[8]; -u32 *ptr_model_room_buf_pri; -char dword_CODE_bss_80063BF8[0x24]; -s32 dword_CODE_bss_80063C1C; +//bss +struct s_mempBANK memory_bank_ptrs[0x7]; +//data void *ptr_memp_c_debug_debug_notice_list = 0; -s32 tied_to_mem_management[] = {0, 0, 0, 0}; -s32 D_80024414 = 2; -s32 D_80024418 = 0; -s32 D_8002441C = 4; -s32 D_80024420 = 0x52; -s32 D_80024424 = 6; -s32 D_80024428 = 0xF; -s32 D_8002442C = 0; -s32 D_80024430 = 0; -s32 D_80024434 = 0; -s32 D_80024438 = 0; -s32 D_8002443C = 0; -s32 D_80024440 = 0; -s32 D_80024444 = 0; -s32 D_80024448 = 0; -s32 D_8002444C = 0; +s32 needmemallocation = 0; +s32 D_80024408 = 0; +s32 D_8002440C = 0; + +struct s_mempMVALS sdefaultmvals = { + 0, //D_80024410 + 2, //D_80024414 + 0, //mf + 4, //D_8002441C + 0x52, //ml + 6, //D_80024424 + 0xF, //me + 0, //D_8002442C + 0 //D_80024430 +}; + +struct s_mempMEMSTARTS sdefaultmemstarts = { + 0, //bank1start + 0, //bank2start + 0, //bank3start + 0, //bank4start + 0, //bank5start + 0, //bank6start + 0 //bank7start +}; + + + + /** @@ -48,71 +51,58 @@ void something_with_memp_c_debug(void) get_ptr_debug_notice_list_entry(&ptr_memp_c_debug_debug_notice_list, "memp_c_debug"); //should be "memp_c_debug" } - - - - - /** * 9FAC 700093AC * initialize memory allocation table and set font and text bank sizes * accepts: A0=p->buffer, A1=size * uses "-mf", "-ml", "-me" strings */ -#ifdef NONMATCHING -void check_memflag_tokens(s32 arg0, s32 arg1, s32 arg11) { - ? sp20; - s32 sp24; - s32 sp2C; - s32 sp34; - s32 temp_v1; +#ifdef NONMATCHING// +void mempCheckMemflagTokens(int bstart,int bsize) +{ + u32 iVar1; + u32 local_20; + u32 mfval; + u32 local_18; + u32 mlval; + u32 local_10; + u32 meval; + u32 local_8; + u32 local_4; + + memory_bank_ptrs[0].bankend = bstart + bsize; + local_20 = sdefaultmvals.D_80024414; + mfval = sdefaultmvals.mf; + mlval = sdefaultmvals.ml; + local_18 = sdefaultmvals.D_8002441C; + local_10 = sdefaultmvals.D_80024424; + meval = sdefaultmvals.me; + local_4 = sdefaultmvals.D_80024430; + local_8 = sdefaultmvals.D_8002442C; + memory_bank_ptrs[0].bankstart = bstart; - // Node 0 - memory_bank_ptrs = arg0; - memory_bank_ptrs.unk8 = (s32) (arg0 + arg1); - sp20 = (?32) D_80024414; - sp20.unk4 = (?32) D_80024414.unk4; - sp20.unkC = (?32) D_80024414.unkC; - sp20.unk8 = (?32) D_80024414.unk8; - sp20.unk10 = (?32) D_80024414.unk10; - sp20.unk14 = (?32) D_80024414.unk14; - sp20.unk1C = (?32) D_80024414.unk1C; - sp20.unk18 = (?32) D_80024414.unk18; - if (check_token(1, &aMf) != 0) - { - // Node 1 - sp24 = strtol(check_token(1, &aMf_0), 0, 0); + if (check_token(1,"-mf") != 0) { + mfval = strtol(check_token(1,"-mf"),NULL,0); } - // Node 2 - if (check_token(1, &aMl) != 0) - { - // Node 3 - sp2C = strtol(check_token(1, &aMl_0), 0, 0); + + if (check_token(1,"-ml") != 0) { + mlval = strtol(check_token(1,"-ml"),NULL,0); } - // Node 4 - if (check_token(1, &aMe) != 0) - { - // Node 5 - sp34 = strtol(check_token(1, &aMe_0), 0, 0); + + if (check_token(1,"-me") != 0) { + meval = strtol(check_token(1,"-me"),NULL,0); } - // Node 6 - if (sp34 == 0) - { - // Node 7 - sp24 = 0; - if (j_text_trigger != 0) - { - // Node 8 + + if (meval == 0) { + mfval = 0; + iVar1 = 0x128; + if (j_text_trigger != 0) { + iVar1 = 0x134; } - // Node 9 - temp_v1 = (0x128 << 0xa); - sp2C = (s32) (arg11 - temp_v1); - sp34 = temp_v1; + meval = iVar1 * 0x400; + mlval = bsize + iVar1 * -0x400; } - // Node 10 - memp_related_0(&sp20); - return; - // (possible return value: memp_related_0(&sp20)) + mempSetBankStarts(&local_20); } #else GLOBAL_ASM( @@ -131,17 +121,17 @@ glabel aMe_0 .word 0x2d6d6500 /*"-me"*/ .text -glabel check_memflag_tokens +glabel mempCheckMemflagTokens /* 009FAC 700093AC 3C028006 */ lui $v0, %hi(memory_bank_ptrs) /* 009FB0 700093B0 24423BB0 */ addiu $v0, %lo(memory_bank_ptrs) # addiu $v0, $v0, 0x3bb0 /* 009FB4 700093B4 27BDFFC0 */ addiu $sp, $sp, -0x40 /* 009FB8 700093B8 00857821 */ addu $t7, $a0, $a1 -/* 009FBC 700093BC 3C198002 */ lui $t9, %hi(D_80024414) +/* 009FBC 700093BC 3C198002 */ lui $t9, %hi(sdefaultmvals +0x4) /* 009FC0 700093C0 AFBF0014 */ sw $ra, 0x14($sp) /* 009FC4 700093C4 AFA50044 */ sw $a1, 0x44($sp) /* 009FC8 700093C8 AC440000 */ sw $a0, ($v0) /* 009FCC 700093CC AC4F0008 */ sw $t7, 8($v0) -/* 009FD0 700093D0 27394414 */ addiu $t9, %lo(D_80024414) # addiu $t9, $t9, 0x4414 +/* 009FD0 700093D0 27394414 */ addiu $t9, %lo(sdefaultmvals +0x4) # addiu $t9, $t9, 0x4414 /* 009FD4 700093D4 8F210000 */ lw $at, ($t9) /* 009FD8 700093D8 8F290004 */ lw $t1, 4($t9) /* 009FDC 700093DC 27B80020 */ addiu $t8, $sp, 0x20 @@ -221,7 +211,7 @@ glabel check_memflag_tokens /* 00A0F4 700094F4 AFAC002C */ sw $t4, 0x2c($sp) /* 00A0F8 700094F8 AFA30034 */ sw $v1, 0x34($sp) .L700094FC: -/* 00A0FC 700094FC 0C002545 */ jal memp_related_0 +/* 00A0FC 700094FC 0C002545 */ jal mempSetBankStarts /* 00A100 70009500 27A40020 */ addiu $a0, $sp, 0x20 /* 00A104 70009504 8FBF0014 */ lw $ra, 0x14($sp) /* 00A108 70009508 27BD0040 */ addiu $sp, $sp, 0x40 @@ -240,110 +230,93 @@ glabel check_memflag_tokens * accepts: A0=p->allocation sizes */ #ifdef NONMATCHING -void *memp_related_0(void *arg0) { - s32 sp30; - s32 sp34; - s32 sp38; - s32 sp3C; - s32 sp60; - s32 sp78; - ? sp7C; - u32 temp_s0; - s32 temp_v1; - ? temp_ret; - u32 temp_s0_2; - u32 temp_s0_3; - s32 temp_v0; - void *temp_v0_2; - void *temp_s0_4; - s32 temp_a0; - s32 temp_a1; - s32 temp_v1_2; - - // Node 0 - sp60 = (s32) D_80024434; - sp60.unk4 = (s32) D_80024434.unk4; - sp60.unk8 = (?32) D_80024434.unk8; - sp60.unkC = (?32) D_80024434.unkC; - sp60.unk10 = (?32) D_80024434.unk10; - sp60.unk14 = (?32) D_80024434.unk14; - sp60.unk18 = (?32) D_80024434.unk18; - // Node 1 - *(&sp60 + (*arg0 * 4)) = (?32) arg0->unk4; - if (arg0->unk8 != 0) - { - goto loop_1; +void mempSetBankStarts(int *banks) +{ + int *piVar1; + int right_l; + longlong lVar2; + longlong lVar3; + int iVar4; + int iVar5; + s_memstarts *psVar6; + s_memstarts *psVar7; + s_memstarts bankstarts; + undefined auStack4 [4]; + + bankstarts.bank1start = sdefaultmemstarts.bank1start; + bankstarts.bank2start = sdefaultmemstarts.bank2start; + psVar6 = &bankstarts; + bankstarts.bank3start = sdefaultmemstarts.bank3start; + bankstarts.bank4start = sdefaultmemstarts.bank4start; + bankstarts.bank5start = sdefaultmemstarts.bank5start; + bankstarts.bank6start = sdefaultmemstarts.bank6start; + bankstarts.bank7start = sdefaultmemstarts.bank7start; + right_l = *banks; + iVar4 = banks[1]; + while( true ) { + (&bankstarts.bank1start)[right_l] = iVar4; + right_l = banks[2]; + if (right_l == 0) break; + iVar4 = banks[3]; + banks = banks + 2; } - // Node 2 - // Node 3 - temp_s0 = (&sp60 + 4); - *temp_s0 = (s32) (sp60.unk4 + sp60); - if (temp_s0 < &sp78) - { - goto loop_3; - } - // Node 4 - temp_v1 = (memory_bank_ptrs.unk8 - memory_bank_ptrs); - sp30 = (s32) (sp78 >> 0x1f); - sp38 = (s32) (temp_v1 >> 0x1f); - sp3C = temp_v1; - sp34 = sp78; - // Node 5 - temp_ret = __ll_mul(((s32) sp60 >> 0x1f), sp60, sp38, sp3C); - temp_s0_2 = (&sp60 + 4); - temp_s0_2->unk-4 = (u64) __ll_div(temp_ret, temp_ret, sp30, sp34); - if (temp_s0_2 < &sp7C) - { - goto loop_5; - } - // Node 6 - // Node 7 - temp_s0_3 = (&sp60 + 4); - temp_s0_3->unk-4 = (s32) ((sp60 | 0xf) ^ 0xf); - if (temp_s0_3 < &sp7C) - { - goto loop_7; - } - // Node 8 - D_80063BC4 = (s32) (sp60 + memory_bank_ptrs); - D_80063BC4 = 0; - temp_v0 = (sp64 + memory_bank_ptrs); - D_80063BC8 = temp_v0; - D_80063BD4 = temp_v0; - D_80063BD4 = 0; - D_80063BD8 = (s32) (sp68 + memory_bank_ptrs); - temp_v0_2 = (&memory_bank_ptrs + (2 * 0x10)); - temp_s0_4 = (&sp60 + (2 * 4)); - temp_a0 = (temp_s0_4->unk8 + memory_bank_ptrs); - temp_a1 = (temp_s0_4->unkC + memory_bank_ptrs); - temp_v1_2 = (temp_s0_4->unk4 + memory_bank_ptrs); - temp_v0_2->unk48 = (s32) (temp_s0_4->unk10 + memory_bank_ptrs); - temp_v0_2->unk20 = temp_v1_2; - temp_v0_2->unk38 = temp_a1; - temp_v0_2->unk40 = temp_a1; - temp_v0_2->unk28 = temp_a0; - temp_v0_2->unk30 = temp_a0; - temp_v0_2->unk24 = 0; - temp_v0_2->unk34 = 0; - temp_v0_2->unk44 = 0; - temp_v0_2->unk10 = (s32) (*temp_s0_4 + memory_bank_ptrs); - temp_v0_2->unk14 = 0; - temp_v0_2->unk18 = temp_v1_2; - return; - // (possible return value: temp_v0_2) + right_l = bankstarts.bank1start; + do { + piVar1 = &psVar6->bank2start; + psVar6 = (s_memstarts *)&psVar6->bank2start; + right_l = *piVar1 + right_l; + psVar6->bank1start = right_l; + iVar4 = bankstarts.bank7start; + } while (psVar6 < (s_memstarts *)&bankstarts.bank7start); + right_l = memory_bank_ptrs[0].bankend - memory_bank_ptrs[0].bankstart; + lVar3 = (longlong)right_l; + iVar5 = bankstarts.bank7start >> 0x1f; + psVar6 = &bankstarts; + do { + lVar2 = __ll_mul((int)psVar6->bank1start >> 0x1f,psVar6->bank1start,right_l >> 0x1f,right_l) + ; + __ll_div((int)lVar2,(int)lVar3,iVar5,iVar4); + psVar7 = (s_memstarts *)&psVar6->bank2start; + psVar6->bank1start = (int)lVar3; + psVar6 = psVar7; + } while (psVar7 < (s_memstarts *)auStack4); + psVar6 = &bankstarts; + do { + psVar7 = (s_memstarts *)&psVar6->bank2start; + psVar6->bank1start = (psVar6->bank1start | 0xf) ^ 0xf; + psVar6 = psVar7; + } while (psVar7 < (s_memstarts *)auStack4); + memory_bank_ptrs[1].bankstart = bankstarts.bank1start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[1].nextentry = 0; + memory_bank_ptrs[1].bankend = bankstarts.bank2start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[2].bankstart = bankstarts.bank2start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[2].nextentry = 0; + memory_bank_ptrs[2].bankend = bankstarts.bank3start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[3].bankstart = bankstarts.bank3start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[3].nextentry = 0; + memory_bank_ptrs[3].bankend = bankstarts.bank4start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[4].bankstart = bankstarts.bank4start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[4].nextentry = 0; + memory_bank_ptrs[4].bankend = bankstarts.bank5start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[5].bankstart = bankstarts.bank5start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[5].nextentry = 0; + memory_bank_ptrs[5].bankend = bankstarts.bank6start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[6].bankstart = bankstarts.bank6start + memory_bank_ptrs[0].bankstart; + memory_bank_ptrs[6].nextentry = 0; + memory_bank_ptrs[6].bankend = bankstarts.bank7start + memory_bank_ptrs[0].bankstart; } #else GLOBAL_ASM( .text -glabel memp_related_0 +glabel mempSetBankStarts /* 00A114 70009514 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 00A118 70009518 3C0E8002 */ lui $t6, %hi(D_80024434) +/* 00A118 70009518 3C0E8002 */ lui $t6, %hi(sdefaultmemstarts) /* 00A11C 7000951C AFBF0024 */ sw $ra, 0x24($sp) /* 00A120 70009520 AFB30020 */ sw $s3, 0x20($sp) /* 00A124 70009524 AFB2001C */ sw $s2, 0x1c($sp) /* 00A128 70009528 AFB10018 */ sw $s1, 0x18($sp) /* 00A12C 7000952C AFB00014 */ sw $s0, 0x14($sp) -/* 00A130 70009530 25CE4434 */ addiu $t6, %lo(D_80024434) # addiu $t6, $t6, 0x4434 +/* 00A130 70009530 25CE4434 */ addiu $t6, %lo(sdefaultmemstarts) # addiu $t6, $t6, 0x4434 /* 00A134 70009534 8DC10000 */ lw $at, ($t6) /* 00A138 70009538 27B20060 */ addiu $s2, $sp, 0x60 /* 00A13C 7000953C 3C138006 */ lui $s3, %hi(memory_bank_ptrs) @@ -423,20 +396,20 @@ glabel memp_related_0 /* 00A254 70009654 8E660000 */ lw $a2, ($s3) /* 00A258 70009658 8FB80060 */ lw $t8, 0x60($sp) /* 00A25C 7000965C 8FAF0064 */ lw $t7, 0x64($sp) -/* 00A260 70009660 3C018006 */ lui $at, %hi(D_80063BC4) +/* 00A260 70009660 3C018006 */ lui $at, %hi(memory_bank_ptrs+0x14) /* 00A264 70009664 03067021 */ addu $t6, $t8, $a2 -/* 00A268 70009668 AC2E3BC0 */ sw $t6, %lo(D_80063BC0)($at) -/* 00A26C 7000966C AC203BC4 */ sw $zero, %lo(D_80063BC4)($at) -/* 00A270 70009670 3C018006 */ lui $at, %hi(D_80063BC8) +/* 00A268 70009668 AC2E3BC0 */ sw $t6, %lo(memory_bank_ptrs+0x10)($at) +/* 00A26C 7000966C AC203BC4 */ sw $zero, %lo(memory_bank_ptrs+0x14)($at) +/* 00A270 70009670 3C018006 */ lui $at, %hi(memory_bank_ptrs+0x18) /* 00A274 70009674 01E61021 */ addu $v0, $t7, $a2 -/* 00A278 70009678 AC223BC8 */ sw $v0, %lo(D_80063BC8)($at) +/* 00A278 70009678 AC223BC8 */ sw $v0, %lo(memory_bank_ptrs+0x18)($at) /* 00A27C 7000967C 8FA80068 */ lw $t0, 0x68($sp) -/* 00A280 70009680 3C018006 */ lui $at, %hi(D_80063BD4) -/* 00A284 70009684 AC223BD0 */ sw $v0, %lo(D_80063BD0)($at) -/* 00A288 70009688 AC203BD4 */ sw $zero, %lo(D_80063BD4)($at) -/* 00A28C 7000968C 3C018006 */ lui $at, %hi(D_80063BD8) +/* 00A280 70009680 3C018006 */ lui $at, %hi(memory_bank_ptrs+0x24) +/* 00A284 70009684 AC223BD0 */ sw $v0, %lo(memory_bank_ptrs+0x20)($at) +/* 00A288 70009688 AC203BD4 */ sw $zero, %lo(memory_bank_ptrs+0x24)($at) +/* 00A28C 7000968C 3C018006 */ lui $at, %hi(memory_bank_ptrs+0x28) /* 00A290 70009690 01064821 */ addu $t1, $t0, $a2 -/* 00A294 70009694 AC293BD8 */ sw $t1, %lo(D_80063BD8)($at) +/* 00A294 70009694 AC293BD8 */ sw $t1, %lo(memory_bank_ptrs+0x28)($at) /* 00A298 70009698 24070002 */ li $a3, 2 /* 00A29C 7000969C 0007C900 */ sll $t9, $a3, 4 /* 00A2A0 700096A0 02791021 */ addu $v0, $s3, $t9 @@ -482,19 +455,58 @@ glabel memp_related_0 * accepts: A0=size, A1=bank */ #ifdef NONMATCHING -void allocate_bytes_in_bank(void) { - +u32 mempAllocBytesInBank(u32 bytes,u8 bank) +{ + uint next; + uint end; + int domemalloc; + int bankmask; + + bankmask = (bank & 0xff) << 4; + while( true ) { + domemalloc = needmemallocation; + next = *(uint *)((int)&memory_bank_ptrs[0].nextentry + bankmask); + if (next == 0) { + do { + /* WARNING: Do nothing block with infinite loop */ + } while( true ); + } + end = *(uint *)((int)&memory_bank_ptrs[0].bankend + bankmask); + if (end < next) { + nulled_mempLoopAllMemBanks(); + do { + /* WARNING: Do nothing block with infinite loop */ + } while( true ); + } + if (next + bytes <= end) { + *(int *)((int)&memory_bank_ptrs[0].nextentry + bankmask) = next + bytes; + *(uint *)((int)&memory_bank_ptrs[0].data2 + bankmask) = next; + return next; + } + if ((uint)memory_bank_ptrs[6].bankend < memory_bank_ptrs[6].nextentry + bytes) break; + needmemallocation = 1; + if (domemalloc == 0) { + bankmask = 0x60; + } + else { + bankmask = 0x60; + } + } + nulled_mempLoopAllMemBanks(); + do { + /* WARNING: Do nothing block with infinite loop */ + } while( true ); } #else GLOBAL_ASM( .text -glabel allocate_bytes_in_bank +glabel mempAllocBytesInBank /* 00A320 70009720 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 00A324 70009724 AFA5001C */ sw $a1, 0x1c($sp) /* 00A328 70009728 30A700FF */ andi $a3, $a1, 0xff /* 00A32C 7000972C 3C058006 */ lui $a1, %hi(memory_bank_ptrs) -/* 00A330 70009730 3C0A8002 */ lui $t2, %hi(tied_to_mem_management) -/* 00A334 70009734 254A4404 */ addiu $t2, %lo(tied_to_mem_management) # addiu $t2, $t2, 0x4404 +/* 00A330 70009730 3C0A8002 */ lui $t2, %hi(needmemallocation) +/* 00A334 70009734 254A4404 */ addiu $t2, %lo(needmemallocation) # addiu $t2, $t2, 0x4404 /* 00A338 70009738 24A53BB0 */ addiu $a1, %lo(memory_bank_ptrs) # addiu $a1, $a1, 0x3bb0 /* 00A33C 7000973C AFBF0014 */ sw $ra, 0x14($sp) /* 00A340 70009740 00803025 */ move $a2, $a0 @@ -505,8 +517,8 @@ glabel allocate_bytes_in_bank /* 00A350 70009750 14400006 */ bnez $v0, .L7000976C /* 00A354 70009754 00404025 */ move $t0, $v0 /* 00A358 70009758 24190001 */ li $t9, 1 -/* 00A35C 7000975C 3C018002 */ lui $at, %hi(tied_to_mem_management) -/* 00A360 70009760 AC394404 */ sw $t9, %lo(tied_to_mem_management)($at) +/* 00A35C 7000975C 3C018002 */ lui $at, %hi(needmemallocation) +/* 00A360 70009760 AC394404 */ sw $t9, %lo(needmemallocation)($at) .L70009764: /* 00A364 70009764 1000FFFF */ b .L70009764 /* 00A368 70009768 00000000 */ nop @@ -516,7 +528,7 @@ glabel allocate_bytes_in_bank /* 00A374 70009774 0082082B */ sltu $at, $a0, $v0 /* 00A378 70009778 50200006 */ beql $at, $zero, .L70009794 /* 00A37C 7000977C 008D082B */ sltu $at, $a0, $t5 -/* 00A380 70009780 0C00263C */ jal nulled_list_all8_mem_alloc_banks_sizes +/* 00A380 70009780 0C00263C */ jal nulled_mempLoopAllMemBanks /* 00A384 70009784 24070006 */ li $a3, 6 .L70009788: /* 00A388 70009788 1000FFFF */ b .L70009788 @@ -540,7 +552,7 @@ glabel allocate_bytes_in_bank /* 00A3CC 700097CC 1000FFDE */ b .L70009748 /* 00A3D0 700097D0 0007C100 */ sll $t8, $a3, 4 .L700097D4: -/* 00A3D4 700097D4 0C00263C */ jal nulled_list_all8_mem_alloc_banks_sizes +/* 00A3D4 700097D4 0C00263C */ jal nulled_mempLoopAllMemBanks /* 00A3D8 700097D8 00000000 */ nop .L700097DC: /* 00A3DC 700097DC 1000FFFF */ b .L700097DC @@ -565,15 +577,54 @@ glabel allocate_bytes_in_bank * accepts: A0=p->allocated data, A1=size of data, A2=bank# */ #ifdef NONMATCHING -void memp_related_1(void) { - +u32 mempAddEntryOfSizeToBank(s32 ptrdata,int size,u8 bank) +{ + u32 entry; + u32 retval; + + if ((needmemallocation != 0) && (ptrdata == memory_bank_ptrs[6].data2)) { + bank = 6; + } + entry = memory_bank_ptrs[bank].nextentry; + if (entry == 0) { + do { + /* WARNING: Do nothing block with infinite loop */ + } while( 1 ); + } + if (ptrdata == memory_bank_ptrs[bank].data2) { + size = size - (entry - (int)memory_bank_ptrs[bank].data2); + if (size < 1) { + memory_bank_ptrs[bank].nextentry = entry + size; + retval = 1; + } + else { + if (memory_bank_ptrs[bank].bankend < entry) { + nulled_mempLoopAllMemBanks(); + do { + /* WARNING: Do nothing block with infinite loop */ + } while( 1 ); + } + if (memory_bank_ptrs[bank].bankend < entry + size) { + nulled_mempLoopAllMemBanks(); + do { + /* WARNING: Do nothing block with infinite loop */ + } while( 1 ); + } + memory_bank_ptrs[bank].nextentry = entry + size; + retval = 1; + } + } + else { + retval = 2; + } + return retval; } #else GLOBAL_ASM( .text -glabel memp_related_1 -/* 00A404 70009804 3C0F8002 */ lui $t7, %hi(tied_to_mem_management) -/* 00A408 70009808 8DEF4404 */ lw $t7, %lo(tied_to_mem_management)($t7) +glabel mempAddEntryOfSizeToBank +/* 00A404 70009804 3C0F8002 */ lui $t7, %hi(needmemallocation) +/* 00A408 70009808 8DEF4404 */ lw $t7, %lo(needmemallocation)($t7) /* 00A40C 7000980C 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 00A410 70009810 AFA60020 */ sw $a2, 0x20($sp) /* 00A414 70009814 30CE00FF */ andi $t6, $a2, 0xff @@ -582,8 +633,8 @@ glabel memp_related_1 /* 00A420 70009820 AFA5001C */ sw $a1, 0x1c($sp) /* 00A424 70009824 11E00006 */ beqz $t7, .L70009840 /* 00A428 70009828 00803825 */ move $a3, $a0 -/* 00A42C 7000982C 3C188006 */ lui $t8, %hi(dword_CODE_bss_80063C1C) -/* 00A430 70009830 8F183C1C */ lw $t8, %lo(dword_CODE_bss_80063C1C)($t8) +/* 00A42C 7000982C 3C188006 */ lui $t8, %hi(memory_bank_ptrs+0x6C) +/* 00A430 70009830 8F183C1C */ lw $t8, %lo(memory_bank_ptrs+0x6C)($t8) /* 00A434 70009834 14980002 */ bne $a0, $t8, .L70009840 /* 00A438 70009838 00000000 */ nop /* 00A43C 7000983C 24060006 */ li $a2, 6 @@ -619,7 +670,7 @@ glabel memp_related_1 /* 00A4A0 700098A0 0044082B */ sltu $at, $v0, $a0 /* 00A4A4 700098A4 50200006 */ beql $at, $zero, .L700098C0 /* 00A4A8 700098A8 004D082B */ sltu $at, $v0, $t5 -/* 00A4AC 700098AC 0C00263C */ jal nulled_list_all8_mem_alloc_banks_sizes +/* 00A4AC 700098AC 0C00263C */ jal nulled_mempLoopAllMemBanks /* 00A4B0 700098B0 24060006 */ li $a2, 6 .L700098B4: /* 00A4B4 700098B4 1000FFFF */ b .L700098B4 @@ -628,7 +679,7 @@ glabel memp_related_1 .L700098C0: /* 00A4C0 700098C0 10200005 */ beqz $at, .L700098D8 /* 00A4C4 700098C4 00837021 */ addu $t6, $a0, $v1 -/* 00A4C8 700098C8 0C00263C */ jal nulled_list_all8_mem_alloc_banks_sizes +/* 00A4C8 700098C8 0C00263C */ jal nulled_mempLoopAllMemBanks /* 00A4CC 700098CC 24060006 */ li $a2, 6 .L700098D0: /* 00A4D0 700098D0 1000FFFF */ b .L700098D0 @@ -651,92 +702,31 @@ glabel memp_related_1 * V0=8 -- loop eight times, needlessly; fries AT,T6 * used by "show mem use", step 1; probably originally listed all eight memory allocations */ -#ifdef NONMATCHING -s32 nulled_list_all8_mem_alloc_banks_sizes(void) { - // Node 0 - // Node 1 - if (((1 + 1) & 0xff) < 7) + +void nulled_mempLoopAllMemBanks(void) +{ + s32 bank; + for (bank = 1; bank < 7; bank = (bank + 1) & 0xff) { - goto loop_1; - } - // (possible return value: ((1 + 1) & 0xff)) + ; + }; } -#else -GLOBAL_ASM( -.text -glabel nulled_list_all8_mem_alloc_banks_sizes -/* 00A4F0 700098F0 24020001 */ li $v0, 1 -.L700098F4: -/* 00A4F4 700098F4 24420001 */ addiu $v0, $v0, 1 -/* 00A4F8 700098F8 304E00FF */ andi $t6, $v0, 0xff -/* 00A4FC 700098FC 29C10007 */ slti $at, $t6, 7 -/* 00A500 70009900 1420FFFC */ bnez $at, .L700098F4 -/* 00A504 70009904 01C01025 */ move $v0, $t6 -/* 00A508 70009908 03E00008 */ jr $ra -/* 00A50C 7000990C 00000000 */ nop -) -#endif - - - /** * A510 70009910 * V0= total allocated size of bank A0 * accepts: A0=bank# */ -#ifdef NONMATCHING -s32 memp_related_3(s32 arg0) { - // Node 0 - if (tied_to_mem_management != 0) - { - // Node 1 +s32 mempGetBankSizeLeft(u8 bank) +{ + if (needmemallocation != 0) { + bank = 6; } - // Node 2 - if ((arg0 & 0xff) == 4) - { - // Node 3 - if (memory_bank_ptrs.unk40 == memory_bank_ptrs.unk48) - { - // Node 4 - return; - // (possible return value: ((&memory_bank_ptrs + ((arg0 & 0xff) * 0x10))->unk8 - (&memory_bank_ptrs + ((arg0 & 0xff) * 0x10))->unk4)) - } + if ((bank == 4) && (memory_bank_ptrs[4].bankstart == memory_bank_ptrs[4].bankend)) { + bank = 6; } - // (possible return value: ((&memory_bank_ptrs + ((arg0 & 0xff) * 0x10))->unk8 - (&memory_bank_ptrs + ((arg0 & 0xff) * 0x10))->unk4)) + return memory_bank_ptrs[bank].bankend - memory_bank_ptrs[bank].nextentry; } -#else -GLOBAL_ASM( -.text -glabel memp_related_3 -/* 00A510 70009910 3C0F8002 */ lui $t7, %hi(tied_to_mem_management) -/* 00A514 70009914 8DEF4404 */ lw $t7, %lo(tied_to_mem_management)($t7) -/* 00A518 70009918 AFA40000 */ sw $a0, ($sp) -/* 00A51C 7000991C 308E00FF */ andi $t6, $a0, 0xff -/* 00A520 70009920 11E00002 */ beqz $t7, .L7000992C -/* 00A524 70009924 01C02025 */ move $a0, $t6 -/* 00A528 70009928 24040006 */ li $a0, 6 -.L7000992C: -/* 00A52C 7000992C 24010004 */ li $at, 4 -/* 00A530 70009930 14810007 */ bne $a0, $at, .L70009950 -/* 00A534 70009934 3C058006 */ lui $a1, %hi(memory_bank_ptrs) -/* 00A538 70009938 24A53BB0 */ addiu $a1, %lo(memory_bank_ptrs) # addiu $a1, $a1, 0x3bb0 -/* 00A53C 7000993C 8CB80040 */ lw $t8, 0x40($a1) -/* 00A540 70009940 8CB90048 */ lw $t9, 0x48($a1) -/* 00A544 70009944 17190002 */ bne $t8, $t9, .L70009950 -/* 00A548 70009948 00000000 */ nop -/* 00A54C 7000994C 24040006 */ li $a0, 6 -.L70009950: -/* 00A550 70009950 3C058006 */ lui $a1, %hi(memory_bank_ptrs) -/* 00A554 70009954 24A53BB0 */ addiu $a1, %lo(memory_bank_ptrs) # addiu $a1, $a1, 0x3bb0 -/* 00A558 70009958 00044100 */ sll $t0, $a0, 4 -/* 00A55C 7000995C 00A81821 */ addu $v1, $a1, $t0 -/* 00A560 70009960 8C690008 */ lw $t1, 8($v1) -/* 00A564 70009964 8C6A0004 */ lw $t2, 4($v1) -/* 00A568 70009968 03E00008 */ jr $ra -/* 00A56C 7000996C 012A1023 */ subu $v0, $t1, $t2 -) -#endif @@ -748,22 +738,20 @@ glabel memp_related_3 * accepts: A0=size/bank# entry (ssssssss ssssssss sssssssss sssssbbb) */ #ifdef NONMATCHING -void memp_related_4(u32 arg0) { - // Node 0 - allocate_bytes_in_bank((arg0 >> 3), (arg0 & 7)); - return; - // (possible return value: allocate_bytes_in_bank((arg0 >> 3), (arg0 & 7))) +u32 mempAllocPackedBytesInBank(u32 param_1) +{ + return mempAllocBytesInBank((param_1 >> 3),(param_1 & 7)); } #else GLOBAL_ASM( .text -glabel memp_related_4 +glabel mempAllocPackedBytesInBank /* 00A570 70009970 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 00A574 70009974 00802825 */ move $a1, $a0 /* 00A578 70009978 AFBF0014 */ sw $ra, 0x14($sp) /* 00A57C 7000997C 30AE0007 */ andi $t6, $a1, 7 /* 00A580 70009980 01C02825 */ move $a1, $t6 -/* 00A584 70009984 0C0025C8 */ jal allocate_bytes_in_bank +/* 00A584 70009984 0C0025C8 */ jal mempAllocBytesInBank /* 00A588 70009988 000420C2 */ srl $a0, $a0, 3 /* 00A58C 7000998C 8FBF0014 */ lw $ra, 0x14($sp) /* 00A590 70009990 27BD0018 */ addiu $sp, $sp, 0x18 @@ -781,82 +769,20 @@ glabel memp_related_4 * reset memory bank A0 [0-6] * copies base address for memory bank A0 to +4, fry +C */ -#ifdef NONMATCHING -void *reset_mem_bank_a0(s32 arg0) { - void *temp_v0; - - // Node 0 - temp_v0 = (((arg0 & 0xff) * 0x10) + &memory_bank_ptrs); - temp_v0->unkC = 0; - temp_v0->unk4 = (?32) *temp_v0; - return; - // (possible return value: temp_v0) +void mempResetBank(u8 bank) +{ + memory_bank_ptrs[bank].data2 = 0; + memory_bank_ptrs[bank].nextentry = memory_bank_ptrs[bank].bankstart; } -#else -GLOBAL_ASM( -.text -glabel reset_mem_bank_a0 -/* 00A59C 7000999C 308E00FF */ andi $t6, $a0, 0xff -/* 00A5A0 700099A0 3C188006 */ lui $t8, %hi(memory_bank_ptrs) -/* 00A5A4 700099A4 27183BB0 */ addiu $t8, %lo(memory_bank_ptrs) # addiu $t8, $t8, 0x3bb0 -/* 00A5A8 700099A8 000E7900 */ sll $t7, $t6, 4 -/* 00A5AC 700099AC 01F81021 */ addu $v0, $t7, $t8 -/* 00A5B0 700099B0 8C590000 */ lw $t9, ($v0) -/* 00A5B4 700099B4 AFA40000 */ sw $a0, ($sp) -/* 00A5B8 700099B8 AC40000C */ sw $zero, 0xc($v0) -/* 00A5BC 700099BC 03E00008 */ jr $ra -/* 00A5C0 700099C0 AC590004 */ sw $t9, 4($v0) -) -#endif - - - - /** * A5C4 700099C4 * accepts: A0=bank# */ -#ifdef NONMATCHING -void *memp_related_6(s32 arg0, s32 arg_unaligned3) { - void *temp_v0; - - // Node 0 - nulled_list_all8_mem_alloc_banks_sizes(); - temp_v0 = ((arg_unaligned3 * 0x10) + &memory_bank_ptrs); - if (temp_v0->unk4 != 0) - { - // Node 1 - temp_v0->unk4 = 0; +void mempNullNextEntryInBank(u8 bank) +{ + nulled_mempLoopAllMemBanks(); + if (memory_bank_ptrs[bank].nextentry != 0) { + memory_bank_ptrs[bank].nextentry = 0; } - // Node 2 - return temp_v0; } -#else -GLOBAL_ASM( -.text -glabel memp_related_6 -/* 00A5C4 700099C4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00A5C8 700099C8 AFBF0014 */ sw $ra, 0x14($sp) -/* 00A5CC 700099CC 0C00263C */ jal nulled_list_all8_mem_alloc_banks_sizes -/* 00A5D0 700099D0 AFA40018 */ sw $a0, 0x18($sp) -/* 00A5D4 700099D4 93AE001B */ lbu $t6, 0x1b($sp) -/* 00A5D8 700099D8 3C188006 */ lui $t8, %hi(memory_bank_ptrs) -/* 00A5DC 700099DC 27183BB0 */ addiu $t8, %lo(memory_bank_ptrs) # addiu $t8, $t8, 0x3bb0 -/* 00A5E0 700099E0 000E7900 */ sll $t7, $t6, 4 -/* 00A5E4 700099E4 01F81021 */ addu $v0, $t7, $t8 -/* 00A5E8 700099E8 8C590004 */ lw $t9, 4($v0) -/* 00A5EC 700099EC 53200003 */ beql $t9, $zero, .L700099FC -/* 00A5F0 700099F0 8FBF0014 */ lw $ra, 0x14($sp) -/* 00A5F4 700099F4 AC400004 */ sw $zero, 4($v0) -/* 00A5F8 700099F8 8FBF0014 */ lw $ra, 0x14($sp) -.L700099FC: -/* 00A5FC 700099FC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00A600 70009A00 03E00008 */ jr $ra -/* 00A604 70009A04 00000000 */ nop -) -#endif - - - - diff --git a/src/memp.h b/src/memp.h index 5882b6f..9f15ea0 100644 --- a/src/memp.h +++ b/src/memp.h @@ -3,7 +3,44 @@ #include "ultra64.h" -void *reset_mem_bank_a0(s32 arg0); -void *memp_related_6(s32 arg0); +typedef struct s_mempBANK { + s32 bankstart; + s32 nextentry; + s32 bankend; + s32 data2; +} s_mempBANK; + +typedef struct s_mempMVALS { + u32 D_80024410; + u32 D_80024414; + u32 mf; + u32 D_8002441C; + u32 ml; + u32 D_80024424; + u32 me; + u32 D_8002442C; + u32 D_80024430; +} s_mempMVALS; + +typedef struct s_mempMEMSTARTS { + s32 bank1start; + s32 bank2start; + s32 bank3start; + s32 bank4start; + s32 bank5start; + s32 bank6start; + s32 bank7start; +} s_mempMEMSTARTS; + +void something_with_memp_c_debug(void); +void mempCheckMemflagTokens(int bstart,int bsize); +void mempSetBankStarts(int *banks); +u32 mempAllocBytesInBank(u32 bytes,u8 bank); +u32 mempAddEntryOfSizeToBank(s32 ptrdata,int size,u8 bank); +void nulled_mempLoopAllMemBanks(void); +s32 mempGetBankSizeLeft(u8 bank); +u32 mempAllocPackedBytesInBank(u32 param_1); +void mempResetBank(u8 bank); +void mempNullNextEntryInBank(u8 bank); #endif diff --git a/src/music.c b/src/music.c index 5bbbe5a..b68f55d 100644 --- a/src/music.c +++ b/src/music.c @@ -169,7 +169,7 @@ void setupaudio(void) { if (bootswitch_sound == 0) { // Node 1 - temp_ret = allocate_bytes_in_bank(0x2e000, 6); + temp_ret = mempAllocBytesInBank(0x2e000, 6); phi_v1 = temp_ret; loop_2: // Node 2 @@ -292,7 +292,7 @@ glabel setupaudio /* 007644 70006A44 AFB00020 */ sw $s0, 0x20($sp) /* 007648 70006A48 3C040002 */ lui $a0, (0x0002E000 >> 16) # lui $a0, 2 /* 00764C 70006A4C 3484E000 */ ori $a0, (0x0002E000 & 0xFFFF) # ori $a0, $a0, 0xe000 -/* 007650 70006A50 0C0025C8 */ jal allocate_bytes_in_bank +/* 007650 70006A50 0C0025C8 */ jal mempAllocBytesInBank /* 007654 70006A54 24050006 */ li $a1, 6 /* 007658 70006A58 3C010002 */ lui $at, (0x0002E000 >> 16) # lui $at, 2 /* 00765C 70006A5C 3421E000 */ ori $at, (0x0002E000 & 0xFFFF) # ori $at, $at, 0xe000 diff --git a/src/pi.h b/src/pi.h new file mode 100644 index 0000000..82628b8 --- /dev/null +++ b/src/pi.h @@ -0,0 +1,10 @@ +#ifndef _PI_H_ +#define _PI_H_ +#include + +extern OSMesg piCmdBuf[0x8]; +extern OSMesgQueue piCmdQ; + +void start_pi_manager(void); + +#endif \ No newline at end of file diff --git a/src/sched.c b/src/sched.c index d2dd199..c535f2f 100644 --- a/src/sched.c +++ b/src/sched.c @@ -35,8 +35,8 @@ u32 D_800230CC = 1; OSSched sc; //temporary until i get proper sized structs -//OSScClient gfxClient; -char gfxClient[0x18]; +OSScClient gfxClient[3]; +//char gfxClient[0x18]; char target_for_counters_maybe[0x10]; char dword_CODE_bss_8005DB40[0xB0]; @@ -46,7 +46,8 @@ char dword_CODE_bss_8005DB40[0xB0]; * 1570 70000970 * A0-> stderr.activated [80023098]; fry AT */ -void activate_stderr(u32 flag) { +void activate_stderr(u32 flag) +{ stderr_active = flag; } @@ -54,7 +55,8 @@ void activate_stderr(u32 flag) { * 157C 7000097C * A0-> stderr.enable [80023094]; fry AT */ -void enable_stderr(u32 flag) { +void enable_stderr(u32 flag) +{ stderr_enabled = flag; } @@ -62,7 +64,8 @@ void enable_stderr(u32 flag) { * 1588 70000988 * A0-> stderr.permitted [8002309C]; fry AT */ -void permit_stderr(u32 flag) { +void permit_stderr(u32 flag) +{ stderr_permitted = flag; } @@ -70,7 +73,8 @@ void permit_stderr(u32 flag) { * 1594 70000994 * A0-> user.Compare [800230A0]; fry AT */ -void setUserCompareValue(u32 value) { +void setUserCompareValue(u32 value) +{ userCompareValue = value; } @@ -78,8 +82,10 @@ void setUserCompareValue(u32 value) { * 15A0 700009A0 * test to display stderr and update Count */ -void CheckDisplayErrorBuffer(u32 *buffer) { - if ((stderr_permitted && stderr_active) || stderr_enabled ){ +void CheckDisplayErrorBuffer(u32 *buffer) +{ + if ((stderr_permitted && stderr_active) || stderr_enabled ) + { write_stderr_to_buffer(buffer); currentcount = osGetCount(); } @@ -89,62 +95,21 @@ void CheckDisplayErrorBuffer(u32 *buffer) { * 15F8 700009F8 * test to display stderr every 16th frame */ -#ifdef NONMATCHING -void CheckDisplayErrorBufferEvery16Frames(u32 framecount) { - if (framecount & 0xf) { - if ((stderr_permitted && stderr_active) || stderr_enabled){ - if (userCompareValue < (osGetCount() - currentcount)){ + +void CheckDisplayErrorBufferEvery16Frames(u32 framecount) +{ + if (!(framecount & 0xf)) + { + if ((stderr_permitted && stderr_active) || stderr_enabled) + { + if (userCompareValue < (osGetCount() - currentcount)) + { write_stderr_to_buffer(cfb_16_a); write_stderr_to_buffer(cfb_16_b); } } } } -#else -GLOBAL_ASM( -glabel CheckDisplayErrorBufferEvery16Frames -/* 0015F8 700009F8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0015FC 700009FC 308E000F */ andi $t6, $a0, 0xf -/* 001600 70000A00 15C0001D */ bnez $t6, .Ltesttodisplaystderrorevery16thframe_80 -/* 001604 70000A04 AFBF0014 */ sw $ra, 0x14($sp) -/* 001608 70000A08 3C0F8002 */ lui $t7, %hi(stderr_permitted) -/* 00160C 70000A0C 8DEF309C */ lw $t7, %lo(stderr_permitted)($t7) -/* 001610 70000A10 3C188002 */ lui $t8, %hi(stderr_active) -/* 001614 70000A14 3C198002 */ lui $t9, %hi(stderr_enabled) -/* 001618 70000A18 11E00004 */ beqz $t7, .Ltesttodisplaystderrorevery16thframe_34 -/* 00161C 70000A1C 00000000 */ nop -/* 001620 70000A20 8F183098 */ lw $t8, %lo(stderr_active)($t8) -/* 001624 70000A24 17000004 */ bnez $t8, .Ltesttodisplaystderrorevery16thframe_40 -/* 001628 70000A28 00000000 */ nop -.Ltesttodisplaystderrorevery16thframe_34: -/* 00162C 70000A2C 8F393094 */ lw $t9, %lo(stderr_enabled)($t9) -/* 001630 70000A30 53200012 */ beql $t9, $zero, .Ltesttodisplaystderrorevery16thframe_84 -/* 001634 70000A34 8FBF0014 */ lw $ra, 0x14($sp) -.Ltesttodisplaystderrorevery16thframe_40: -/* 001638 70000A38 0C003638 */ jal osGetCount -/* 00163C 70000A3C 00000000 */ nop -/* 001640 70000A40 3C098002 */ lui $t1, %hi(currentcount) -/* 001644 70000A44 8D2930A4 */ lw $t1, %lo(currentcount)($t1) -/* 001648 70000A48 3C088002 */ lui $t0, %hi(userCompareValue) -/* 00164C 70000A4C 8D0830A0 */ lw $t0, %lo(userCompareValue)($t0) -/* 001650 70000A50 00495023 */ subu $t2, $v0, $t1 -/* 001654 70000A54 3C04803B */ lui $a0, %hi(cfb_16_a) -/* 001658 70000A58 010A082B */ sltu $at, $t0, $t2 -/* 00165C 70000A5C 50200007 */ beql $at, $zero, .Ltesttodisplaystderrorevery16thframe_84 -/* 001660 70000A60 8FBF0014 */ lw $ra, 0x14($sp) -/* 001664 70000A64 0C001674 */ jal write_stderr_to_buffer -/* 001668 70000A68 24845000 */ addiu $a0, $a0, %lo(cfb_16_a) -/* 00166C 70000A6C 3C04803E */ lui $a0, %hi(cfb_16_b) -/* 001670 70000A70 0C001674 */ jal write_stderr_to_buffer -/* 001674 70000A74 2484A800 */ addiu $a0, $a0, %lo(cfb_16_b) -.Ltesttodisplaystderrorevery16thframe_80: -/* 001678 70000A78 8FBF0014 */ lw $ra, 0x14($sp) -.Ltesttodisplaystderrorevery16thframe_84: -/* 00167C 70000A7C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 001680 70000A80 03E00008 */ jr $ra -/* 001684 70000A84 00000000 */ nop -) -#endif /** * Not 100% on name, came from osInitialize's call to function @@ -162,8 +127,6 @@ void osCreateLog(void){ #ifdef NONMATCHING void osCreateScheduler (OSSched * sc, void * stack, u8 mode, u8 numFields) { - void *temp_t2; - sc->curRSPTask = 0; sc->curRDPTask = 0; sc->clientList = 0; @@ -172,17 +135,18 @@ void osCreateScheduler (OSSched * sc, void * stack, u8 mode, u8 numFields) sc->gfxListHead = 0; sc->audioListTail = 0; sc->gfxListTail = 0; - sc->retraceMsg.type = (u16)1; - sc->prenmiMsg.type = (u16)5; + sc->retraceMsg.type = 1; + sc->prenmiMsg.type = 5; sc->thread = stack; osCreateMesgQueue(&sc->interruptQ, sc->intBuf, 8); osCreateMesgQueue(&sc->cmdQ, sc->cmdMsgBuf, 8); osCreateViManager(0xfe); - temp_t2 = ((mode * 0x50) + &osViModeTable); - viMode = temp_t2; - viMode+0x4 = (?32) temp_t2->unk1C; - viMode+0x8 = (?32) temp_t2->unk30; - viMode+0xC = (?32) temp_t2->unk44; + + viMode = osViModeTable[mode]; + viMode.comRegs.ctrl = osViModeTable[mode].comRegs.hStart; + viMode.comRegs.width = osViModeTable[mode].fldRegs[0].vStart; + viMode.comRegs.burst = osViModeTable[mode].fldRegs[1].vStart; + osSetEventMesg(4, &sc->interruptQ, 0x29b); osSetEventMesg(9, &sc->interruptQ, 0x29c); osSetEventMesg(0xe, &sc->interruptQ, 0x29d); @@ -290,43 +254,20 @@ glabel osCreateScheduler /** * 1814 70000C14 */ -#ifdef NONMATCHING -void osScAddClient(void *arg0, void *arg1, ?32 arg2, ?32 arg3) +void osScAddClient(OSSched *sc, OSScClient *c, OSMesgQueue *msgQ, OSScClient *next) { - arg1->unk4 = arg2; - arg1->unk8 = arg3; - *arg1 = (void *) arg0->unkB4; - arg0->unkB4 = arg1; - osSetIntMask(osSetIntMask(1), arg1); + OSIntMask mask; + + mask = osSetIntMask(1); + + c->msgQ = msgQ; + c[1].next = next; + c->next = sc->clientList; + sc->clientList = c; + + osSetIntMask(mask); } -#else -GLOBAL_ASM( -glabel osScAddClient -/* 001814 70000C14 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 001818 70000C18 AFBF0014 */ sw $ra, 0x14($sp) -/* 00181C 70000C1C AFA40018 */ sw $a0, 0x18($sp) -/* 001820 70000C20 AFA60020 */ sw $a2, 0x20($sp) -/* 001824 70000C24 AFA70024 */ sw $a3, 0x24($sp) -/* 001828 70000C28 24040001 */ li $a0, 1 -/* 00182C 70000C2C 0C00374C */ jal osSetIntMask -/* 001830 70000C30 AFA5001C */ sw $a1, 0x1c($sp) -/* 001834 70000C34 8FA5001C */ lw $a1, 0x1c($sp) -/* 001838 70000C38 8FAE0020 */ lw $t6, 0x20($sp) -/* 00183C 70000C3C 8FA30018 */ lw $v1, 0x18($sp) -/* 001840 70000C40 00402025 */ move $a0, $v0 -/* 001844 70000C44 ACAE0004 */ sw $t6, 4($a1) -/* 001848 70000C48 8FAF0024 */ lw $t7, 0x24($sp) -/* 00184C 70000C4C ACAF0008 */ sw $t7, 8($a1) -/* 001850 70000C50 8C7800B4 */ lw $t8, 0xb4($v1) -/* 001854 70000C54 ACB80000 */ sw $t8, ($a1) -/* 001858 70000C58 0C00374C */ jal osSetIntMask -/* 00185C 70000C5C AC6500B4 */ sw $a1, 0xb4($v1) -/* 001860 70000C60 8FBF0014 */ lw $ra, 0x14($sp) -/* 001864 70000C64 27BD0018 */ addiu $sp, $sp, 0x18 -/* 001868 70000C68 03E00008 */ jr $ra -/* 00186C 70000C6C 00000000 */ nop -) -#endif + /** * 1870 70000C70 diff --git a/src/sched.h b/src/sched.h index 561cd88..4e07fff 100644 --- a/src/sched.h +++ b/src/sched.h @@ -63,23 +63,23 @@ typedef struct { } OSSched; extern OSSched sc; -//extern OSScClient gfxClient; -extern char gfxClient[0x18]; +extern OSScClient gfxClient[3]; +//extern char gfxClient[0x18]; void activate_stderr(u32 flag); void enable_stderr(u32 flag); void permit_stderr(u32 flag); void setUserCompareValue(u32 value); -extern void CheckDisplayErrorBuffer(u32 *buffer); -extern void CheckDisplayErrorBufferEvery16Frames(u32 framecount); +void CheckDisplayErrorBuffer(u32 *buffer); +void CheckDisplayErrorBufferEvery16Frames(u32 framecount); void osCreateLog(void); void __scMain(void *arg); void __scYield(OSSched *sc) ; - -void osCreateScheduler(OSSched *s, void *stack, u8 mode, u8 numFields); -void osScAddClient(OSSched *s, OSScClient *c, OSMesgQueue *msgQ); -void osScRemoveClient(OSSched *s, OSScClient *c); -OSMesgQueue *osScGetCmdQ(OSSched *s); +void __scAppendList(OSSched *sc, OSScTask *t); +void osCreateScheduler(OSSched *s, void *stack, u8 mode, u8 numFields); +void osScAddClient(OSSched *s, OSScClient *c, OSMesgQueue *msgQ, OSScClient *next); +void osScRemoveClient(OSSched *s, OSScClient *c); +OSMesgQueue *osScGetCmdQ(OSSched *s); #endif diff --git a/src/snd.h b/src/snd.h index dc88721..36c0e91 100644 --- a/src/snd.h +++ b/src/snd.h @@ -3,5 +3,5 @@ #include "ultra64.h" extern s8 bootswitch_sound; - +void play_sfx_a1 (void * buffer, short entry, void * data); #endif diff --git a/src/str.c b/src/str.c index b4374b4..fab0aee 100644 --- a/src/str.c +++ b/src/str.c @@ -124,7 +124,7 @@ glabel something_with_strings #ifdef NONMATCHING -void *string_load_parse_something(void *arg0, void *arg1) { +void *string_append_from_obseg_textbank(void *arg0, void *arg1) { void *temp_v0; void *temp_a1; @@ -158,7 +158,7 @@ void *string_load_parse_something(void *arg0, void *arg1) { #else GLOBAL_ASM( .text -glabel string_load_parse_something +glabel string_append_from_obseg_textbank /* 00B3FC 7000A7FC 908E0000 */ lbu $t6, ($a0) /* 00B400 7000A800 00801025 */ move $v0, $a0 /* 00B404 7000A804 51C00006 */ beql $t6, $zero, .L7000A820 diff --git a/src/token.c b/src/token.c index b3d98a9..56da807 100644 --- a/src/token.c +++ b/src/token.c @@ -1,8 +1,11 @@ #include "ultra64.h" +#include "pi.h" +#include "snd.h" +#include "game/lvl_text.h" +//OSMesg boot_token_from_indy[160]; char boot_token_from_indy[0x280]; - s32 strstr_numstings = 1; s32 strstr_ptrcurrent_string = 0; u32 D_80024478[34] = {0}; @@ -154,27 +157,21 @@ s32 check_boot_switches(void) is_debug = 0; if (rmon_debug_is_final_build() != 0) { - boot_token_from_indy = 0; + boot_token_from_indy[0] = 0; } else { - devAddr = 0xffb000; - data = &boot_token_from_indy; - while (data != &piCmdBuf) + for (devAddr = 0xffb000, data = &boot_token_from_indy; data != &piCmdBuf; data += 4, devAddr += 4) { osPiReadIo(devAddr, data); - data = data + 4; - devAddr = devAddr + 4; } } check_string_something(&boot_token_from_indy); - if (check_token(1, "-d") != 0) { - is_debug = 1; - } + is_debug = (check_token(1, "-d") != 0); if (check_token(1, "-s") != 0) { - bootswitch_sound = (u8)1; + bootswitch_sound = 1; } if (check_token(1, "-j") != 0) { diff --git a/src/video.c b/src/video.c index f623857..ca3922a 100644 --- a/src/video.c +++ b/src/video.c @@ -67,35 +67,28 @@ u16 word_CODE_bss_80060824; char dword_CODE_bss_80060828[0x50]; u8 off_CODE_bss_80060878; u8 off_CODE_bss_80060879; -//osViMode viMode; +//struct osViMode viMode; s32 viMode; s32 dword_CODE_bss_80060880; s32 dword_CODE_bss_80060884; s32 dword_CODE_bss_80060888; s32 dword_CODE_bss_8006088C; - +char dword_CODE_bss_80060890[0x400];//CC[0x3C4]; + //90[0x400]; /** * 3C60 70003060 */ #ifdef NONMATCHING -s32 init_video_settings(void) +void init_video_settings(void) { - s32 temp_v0; - void *temp_t6; - void *temp_t8; - - temp_v0 = 0 & 0xff; - temp_t8 = &video1_settings + (temp_v0 * 0x2c); - off_CODE_bss_80060878 = (u8)0; - off_CODE_bss_80060879 = (u8)1; - ptr_video_settings1 = temp_t8; - temp_t8->unk28 = (s32) (&cfb_16_a + (temp_v0 * 0x25800)); - temp_t6 = &video1_settings + (off_CODE_bss_80060879 * 0x2c); - ptr_video_settings2 = temp_t6; - temp_t6->unk28 = (s32) (&cfb_16_a + (off_CODE_bss_80060879 * 0x25800)); + video1_settings.frameb = cfb_16_a; D_8002329C = 0; D_800232A0 = 0; - return temp_v0; + ptr_video_settings1 = &video1_settings; + ptr_video_settings2 = &video2_settings; + off_CODE_bss_80060878 = 0; + off_CODE_bss_80060879 = 1; + video2_settings.frameb = cfb_16_b; } #else GLOBAL_ASM( @@ -159,33 +152,22 @@ glabel init_video_settings * 3D24 70003124 initialize both video buffers */ #ifdef NONMATCHING -void *init_both_video_buffers(void) +void init_both_video_buffers(void) { - s32 temp_a0; - void *temp_v0; - void *temp_v1; - s32 phi_a0; - + s32 i; + remove_viewport_buffer(); - phi_a0 = 0; -loop_1: - temp_v0 = &cfb_16_a + phi_a0; - temp_v0->unk0 = (u8)0; - temp_v1 = &cfb_16_b + phi_a0; - temp_v1->unk0 = (u8)0; - temp_v0->unk1 = (u8)0; - temp_v1->unk1 = (u8)0; - temp_v0->unk2 = (u8)0; - temp_v1->unk2 = (u8)0; - temp_v0->unk3 = (u8)0; - temp_a0 = phi_a0 + 4; - temp_v1->unk3 = (u8)0; - phi_a0 = temp_a0; - if (temp_a0 != 0x25800) + for (i = 0; i != 0x25800; i += 4) { - goto loop_1; - } - return temp_v0; + cfb_16_a[i] = 0; + cfb_16_b[i] = 0; + cfb_16_a[i + 1] = 0; + cfb_16_b[i + 1] = 0; + cfb_16_a[i + 2] = 0; + cfb_16_b[i + 2] = 0; + cfb_16_a[i + 3] = 0; + cfb_16_b[i + 3] = 0; + }; } #else GLOBAL_ASM( @@ -1310,24 +1292,21 @@ glabel video_related_8 * accepts: F12= */ #ifdef NONMATCHING -f32 video_related_9(f32 arg0) +void video_related_9(float param_1) { - f32 phi_f12; - f32 phi_f12_2; - - phi_f12 = arg0; - if (14.0f < arg0) - { - phi_f12 = 14.0f; + float fVar1; + + fVar1 = 14.00000000; + if (param_1 <= 14.00000000) { + fVar1 = param_1; } - phi_f12_2 = phi_f12; - if (phi_f12 < 0.0f) - { - phi_f12_2 = 0.0f; + if (fVar1 < 0.00000000) { + D_800232B4 = 0; } - D_800232B4 = (s32) phi_f12_2; - D_800232B8 = 0xa; - return 0.0f; + else { + D_800232B4 = (int)fVar1; + } + D_800232B8 = 10; } #else GLOBAL_ASM( @@ -1380,18 +1359,17 @@ void receive_vi_c_msgs(int msgcount){ * 47B0 70003BB0 */ #ifdef NONMATCHING -void setVideoWidthHeightToMode(int videomode) +void setVideoWidthHeightToMode(s32 videomode) { - u16 uVar1; - - *(char *)&ptr_video_settings2->anonymous_0 = (char)videomode; - uVar1 = widths_80028480[videomode]; - ptr_video_settings2->anonymous_7 = uVar1; - ptr_video_settings2->txtClipW = uVar1; - uVar1 = heights_80028488[videomode]; - ptr_video_settings2->anonymous_8 = uVar1; - ptr_video_settings2->txtClipH = uVar1; - return; + u16 uVar1; + + ptr_video_settings2->mode = videomode; + + ptr_video_settings2->somethingW = widths_80028480[videomode]; + ptr_video_settings2->txtClipW = widths_80028480[videomode]; + + ptr_video_settings2->somethingH = heights_80028488[videomode]; + ptr_video_settings2->txtClipH = heights_80028488[videomode]; } #else GLOBAL_ASM( @@ -1441,7 +1419,7 @@ void set_coloroutputmode_32bit(void) /** * 481C 70003C1C V0= p->video2's buffer [p@800232A8+28]; fry T6 */ -int get_video_settings2_frameb(void) +u8 * get_video_settings2_frameb(void) { return ptr_video_settings2->frameb; } @@ -1449,35 +1427,18 @@ int get_video_settings2_frameb(void) /** * 482C 70003C2C V0= p->video1's buffer [p@800232A4+28]; fry T6 */ -int get_video_settings1_frameb(void) +u8 * get_video_settings1_frameb(void) { return ptr_video_settings1->frameb; } - - - /** * 483C 70003C3C A0->video2's buffer [p@800232A8+28]; fry T6 */ -#ifdef NONMATCHING -void set_video2buf_offset28(s32 arg0) +void set_video2buf_frameb(u8 *arg0) { ptr_video_settings2->frameb = arg0; } -#else -GLOBAL_ASM( -.text -glabel set_video2buf_offset28 -/* 00483C 70003C3C 3C0E8002 */ lui $t6, %hi(ptr_video_settings2) -/* 004840 70003C40 8DCE32A8 */ lw $t6, %lo(ptr_video_settings2)($t6) -/* 004844 70003C44 03E00008 */ jr $ra -/* 004848 70003C48 ADC40028 */ sw $a0, 0x28($t6) -) -#endif - - - /** * 484C 70003C4C V0= halfword [80060824] @@ -2247,8 +2208,8 @@ s32 get_D_8002329C(void) */ void set_video2_settings_offset_18_1A(s16 arg0, s16 arg1) { - ptr_video_settings2->anonymous_7 = arg0; - ptr_video_settings2->anonymous_8 = arg1; + ptr_video_settings2->somethingW = arg0; + ptr_video_settings2->somethingH = arg1; } /** @@ -2257,7 +2218,7 @@ void set_video2_settings_offset_18_1A(s16 arg0, s16 arg1) */ s16 get_video2_settings_offset_18(void) { - return ptr_video_settings2->anonymous_7; + return ptr_video_settings2->somethingW; } /** @@ -2266,7 +2227,7 @@ s16 get_video2_settings_offset_18(void) */ s16 get_video2_settings_offset_1A(void) { - return ptr_video_settings2->anonymous_8; + return ptr_video_settings2->somethingH; } /** @@ -2427,7 +2388,7 @@ void set_video2_settings_offset_24(int param_1) { * 5144 70004544 */ #ifdef NONMATCHING -void video_related_1F(f32 arg0) +void setvideo_far(f32 arg0) { ptr_video_settings2->far = arg0; sub_GAME_7F077C30(ptr_video_settings2->aspect, ptr_video_settings2->far, ptr_video_settings2->scale); @@ -2436,7 +2397,7 @@ void video_related_1F(f32 arg0) #else GLOBAL_ASM( .text -glabel video_related_1F +glabel setvideo_far /* 005144 70004544 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 005148 70004548 3C038002 */ lui $v1, %hi(ptr_video_settings2) /* 00514C 7000454C 246332A8 */ addiu $v1, %lo(ptr_video_settings2) # addiu $v1, $v1, 0x32a8 diff --git a/src/video.h b/src/video.h index b50e4c9..1e65243 100644 --- a/src/video.h +++ b/src/video.h @@ -5,21 +5,21 @@ typedef struct video_settings video_settings, *Pvideo_settings; struct video_settings { - int anonymous_0; + int mode; short txtClipW; short txtClipH; f32 far; f32 scale; f32 aspect; f32 anonymous_6; - short anonymous_7; - short anonymous_8; + short somethingW; + short somethingH; short width; short height; short ulx; short uly; int anonymous_12; - int frameb; + u8* frameb; }; #endif